ZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS9mZHJtL2Z4X2NyeXB0LmggYi9jb3JlL2luY2x1ZGUvZmRybS9meF9jcnlwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMGI3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZmRybS9meF9jcnlwdC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX0NSWVBUX0hfDQorI2RlZmluZSBfRlhfQ1JZUFRfSF8NCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCit2b2lkIENSWVBUX0FyY0ZvdXJDcnlwdEJsb2NrKEZYX0xQQllURSBkYXRhLCBGWF9EV09SRCBzaXplLCBGWF9MUENCWVRFIGtleSwgRlhfRFdPUkQga2V5bGVuKTsNCit2b2lkIENSWVBUX0FyY0ZvdXJTZXR1cChGWF9MUFZPSUQgY29udGV4dCwgRlhfTFBDQllURSBrZXksIEZYX0RXT1JEIGxlbmd0aCk7DQordm9pZCBDUllQVF9BcmNGb3VyQ3J5cHQoRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQllURSBkYXRhLCBGWF9EV09SRCBzaXplKTsNCit2b2lkIENSWVBUX0FFU1NldEtleShGWF9MUFZPSUQgY29udGV4dCwgRlhfRFdPUkQgYmxvY2tsZW4sIEZYX0xQQ0JZVEUga2V5LCBGWF9EV09SRCBrZXlsZW4sIEZYX0JPT0wgYkVuY3J5cHQpOw0KK3ZvaWQgQ1JZUFRfQUVTU2V0SVYoRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQ0JZVEUgaXYpOw0KK3ZvaWQgQ1JZUFRfQUVTRGVjcnlwdChGWF9MUFZPSUQgY29udGV4dCwgRlhfTFBCWVRFIGRlc3QsIEZYX0xQQ0JZVEUgc3JjLCBGWF9EV09SRCBzaXplKTsNCit2b2lkIENSWVBUX0FFU0VuY3J5cHQoRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQllURSBkZXN0LCBGWF9MUENCWVRFIHNyYywgRlhfRFdPUkQgc2l6ZSk7DQordm9pZCBDUllQVF9NRDVHZW5lcmF0ZShGWF9MUENCWVRFIGRhdGEsIEZYX0RXT1JEIHNpemUsIEZYX0JZVEUgZGlnZXN0WzE2XSk7DQordm9pZCBDUllQVF9NRDVTdGFydChGWF9MUFZPSUQgY29udGV4dCk7DQordm9pZCBDUllQVF9NRDVVcGRhdGUoRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQ0JZVEUgZGF0YSwgRlhfRFdPUkQgc2l6ZSk7DQordm9pZCBDUllQVF9NRDVGaW5pc2goRlhfTFBWT0lEIGNvbnRleHQsIEZYX0JZVEUgZGlnZXN0WzE2XSk7DQordm9pZCBDUllQVF9TSEExR2VuZXJhdGUoRlhfTFBDQllURSBkYXRhLCBGWF9EV09SRCBzaXplLCBGWF9CWVRFIGRpZ2VzdFsyMF0pOw0KK3ZvaWQgQ1JZUFRfU0hBMVN0YXJ0KEZYX0xQVk9JRCBjb250ZXh0KTsNCit2b2lkIENSWVBUX1NIQTFVcGRhdGUoRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQ0JZVEUgZGF0YSwgRlhfRFdPUkQgc2l6ZSk7DQordm9pZCBDUllQVF9TSEExRmluaXNoKEZYX0xQVk9JRCBjb250ZXh0LCBGWF9CWVRFIGRpZ2VzdFsyMF0pOw0KK3ZvaWQgQ1JZUFRfU0hBMjU2R2VuZXJhdGUoRlhfTFBDQllURSBkYXRhLCBGWF9EV09SRCBzaXplLCBGWF9CWVRFIGRpZ2VzdFszMl0pOw0KK3ZvaWQgQ1JZUFRfU0hBMjU2U3RhcnQoRlhfTFBWT0lEIGNvbnRleHQpOw0KK3ZvaWQgQ1JZUFRfU0hBMjU2VXBkYXRlKEZYX0xQVk9JRCBjb250ZXh0LCBGWF9MUENCWVRFIGRhdGEsIEZYX0RXT1JEIHNpemUpOw0KK3ZvaWQgQ1JZUFRfU0hBMjU2RmluaXNoKEZYX0xQVk9JRCBjb250ZXh0LCBGWF9CWVRFIGRpZ2VzdFszMl0pOw0KK3ZvaWQgQ1JZUFRfU0hBMzg0U3RhcnQoRlhfTFBWT0lEIGNvbnRleHQpOw0KK3ZvaWQgQ1JZUFRfU0hBMzg0VXBkYXRlKEZYX0xQVk9JRCBjb250ZXh0LCBGWF9MUENCWVRFIGRhdGEsIEZYX0RXT1JEIHNpemUpOw0KK3ZvaWQgQ1JZUFRfU0hBMzg0RmluaXNoKEZYX0xQVk9JRCBjb250ZXh0LCBGWF9CWVRFIGRpZ2VzdFs0OF0pOw0KK3ZvaWQgQ1JZUFRfU0hBMzg0R2VuZXJhdGUoRlhfTFBDQllURSBkYXRhLCBGWF9EV09SRCBzaXplLCBGWF9CWVRFIGRpZ2VzdFs0OF0pOw0KK3ZvaWQgQ1JZUFRfU0hBNTEyU3RhcnQoRlhfTFBWT0lEIGNvbnRleHQpOw0KK3ZvaWQgQ1JZUFRfU0hBNTEyVXBkYXRlKEZYX0xQVk9JRCBjb250ZXh0LCBGWF9MUENCWVRFIGRhdGEsIEZYX0RXT1JEIHNpemUpOw0KK3ZvaWQgQ1JZUFRfU0hBNTEyRmluaXNoKEZYX0xQVk9JRCBjb250ZXh0LCBGWF9CWVRFIGRpZ2VzdFs2NF0pOw0KK3ZvaWQgQ1JZUFRfU0hBNTEyR2VuZXJhdGUoRlhfTFBDQllURSBkYXRhLCBGWF9EV09SRCBzaXplLCBGWF9CWVRFIGRpZ2VzdFs2NF0pOw0KK3ZvaWQgQ1JZUFRfU2V0UHViS2V5RGVjcnlwdG9yKEZYX0JPT0wgKCpmdW5jKShGWF9MUENCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplLCBGWF9MUEJZVEUgZGF0YV9idWYsIEZYX0RXT1JEJiBkYXRhX2xlbikpOw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK307DQorI2VuZGlmDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCBiL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxMWE5NgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgKQEAgLTAsMCArMSwyMDUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZfTU9EVUxFXw0KKyNkZWZpbmUgX0ZQREZfTU9EVUxFXw0KKyNpZm5kZWYgX0ZYQ1JUX0VYVEVOU0lPTl8NCisjaW5jbHVkZSAiLi4vZnhjcnQvZnhfZXh0LmgiDQorI2VuZGlmDQorY2xhc3MgQ1BERl9Nb2R1bGVNZ3I7DQorY2xhc3MgQ1BERl9QYWdlTW9kdWxlRGVmOw0KK2NsYXNzIENQREZfUmVuZGVyTW9kdWxlRGVmOw0KK2NsYXNzIENQREZfU2VjdXJpdHlIYW5kbGVyOw0KK2NsYXNzIENDb2RlY19Nb2R1bGVNZ3I7DQorY2xhc3MgQ1BERl9EaWN0aW9uYXJ5Ow0KK2NsYXNzIElDb2RlY19KcGVnTW9kdWxlOw0KK2NsYXNzIElDb2RlY19KcHhNb2R1bGU7DQorY2xhc3MgSUNvZGVjX0ZheE1vZHVsZTsNCitjbGFzcyBJQ29kZWNfSmJpZzJNb2R1bGU7DQorY2xhc3MgSUNvZGVjX0ljY01vZHVsZTsNCitjbGFzcyBJQ29kZWNfRmxhdGVNb2R1bGU7DQorI2RlZmluZSBBRERJTl9OQU1FX0NKSwkJCSJFYXN0ZXJuIEFzaWFuIExhbmd1YWdlIFN1cHBvcnQiDQorI2RlZmluZSBBRERJTl9OQU1FX0RFQ09ERVIJCSJKUEVHMjAwMCBhbmQgSkJJRzIgSW1hZ2UgRGVjb2RlcnMiDQorY2xhc3MgQ1BERl9Nb2R1bGVNZ3IgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHN0YXRpYyB2b2lkCUNyZWF0ZSgpOw0KKw0KKyAgICBzdGF0aWMgQ1BERl9Nb2R1bGVNZ3IqCUdldCgpOw0KKw0KKyAgICBzdGF0aWMgdm9pZAlEZXN0cm95KCk7DQorDQorDQorDQorICAgIHZvaWQJCVNldENvZGVjTW9kdWxlKENDb2RlY19Nb2R1bGVNZ3IqIHBNb2R1bGUpDQorICAgIHsNCisgICAgICAgIG1fcENvZGVjTW9kdWxlID0gcE1vZHVsZTsNCisgICAgfQ0KKyAgICBDQ29kZWNfTW9kdWxlTWdyKgkJR2V0Q29kZWNNb2R1bGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wQ29kZWNNb2R1bGU7DQorICAgIH0NCisNCisgICAgdm9pZAkJSW5pdFBhZ2VNb2R1bGUoKTsNCisNCisgICAgdm9pZAkJSW5pdFJlbmRlck1vZHVsZSgpOw0KKw0KKw0KKyAgICB2b2lkCQlTZXRNb2R1bGVQYXRoKEZYX0xQQ1NUUiBtb2R1bGVfbmFtZSwgRlhfTFBDU1RSIHBhdGgpOw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZyBHZXRNb2R1bGVGaWxlUGF0aChGWF9MUENTVFIgbW9kdWxlX25hbWUsIEZYX0xQQ1NUUiBuYW1lKTsNCisNCisgICAgdm9pZAkJU2V0RG93bmxvYWRDYWxsYmFjayhGWF9CT09MICgqY2FsbGJhY2spKEZYX0xQQ1NUUiBtb2R1bGVfbmFtZSkpOw0KKw0KKyAgICBGWF9CT09MCQlEb3dubG9hZE1vZHVsZShGWF9MUENTVFIgbW9kdWxlX25hbWUpOw0KKw0KKyAgICB2b2lkCQlOb3RpZnlNb2R1bGVBdmFpbGFibGUoRlhfTFBDU1RSIG1vZHVsZV9uYW1lKTsNCisNCisNCisNCisgICAgQ1BERl9SZW5kZXJNb2R1bGVEZWYqCUdldFJlbmRlck1vZHVsZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BSZW5kZXJNb2R1bGU7DQorICAgIH0NCisNCisgICAgQ1BERl9QYWdlTW9kdWxlRGVmKgkJR2V0UGFnZU1vZHVsZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BQYWdlTW9kdWxlOw0KKyAgICB9DQorDQorDQorDQorDQorICAgIHZvaWQJCQkJCUxvYWRFbWJlZGRlZEdCMUNNYXBzKCk7DQorDQorICAgIHZvaWQJCQkJCUxvYWRFbWJlZGRlZENOUzFDTWFwcygpOw0KKw0KKyAgICB2b2lkCQkJCQlMb2FkRW1iZWRkZWRKYXBhbjFDTWFwcygpOw0KKw0KKyAgICB2b2lkCQkJCQlMb2FkRW1iZWRkZWRLb3JlYTFDTWFwcygpOw0KKw0KKyAgICBJQ29kZWNfRmF4TW9kdWxlKgkJR2V0RmF4TW9kdWxlKCk7DQorICAgIElDb2RlY19KcGVnTW9kdWxlKgkJR2V0SnBlZ01vZHVsZSgpOw0KKyAgICBJQ29kZWNfSnB4TW9kdWxlKgkJR2V0SnB4TW9kdWxlKCk7DQorICAgIElDb2RlY19KYmlnMk1vZHVsZSoJCUdldEpiaWcyTW9kdWxlKCk7DQorICAgIElDb2RlY19JY2NNb2R1bGUqCQlHZXRJY2NNb2R1bGUoKTsNCisgICAgSUNvZGVjX0ZsYXRlTW9kdWxlKgkJR2V0RmxhdGVNb2R1bGUoKTsNCisNCisgICAgdm9pZAkJCQkJUmVnaXN0ZXJTZWN1cml0eUhhbmRsZXIoRlhfTFBDU1RSIG5hbWUsIENQREZfU2VjdXJpdHlIYW5kbGVyICogKCpDcmVhdGVIYW5kbGVyKSh2b2lkKiBwYXJhbSksIHZvaWQqIHBhcmFtKTsNCisNCisgICAgQ1BERl9TZWN1cml0eUhhbmRsZXIqCUNyZWF0ZVNlY3VyaXR5SGFuZGxlcihGWF9MUENTVFIgbmFtZSk7DQorDQorICAgIHZvaWQJCQkJCVNldFByaXZhdGVEYXRhKEZYX0xQVk9JRCBtb2R1bGVfaWQsIEZYX0xQVk9JRCBwRGF0YSwgUERfQ0FMTEJBQ0tfRlJFRURBVEEgY2FsbGJhY2spOw0KKw0KKyAgICBGWF9MUFZPSUQJCQkJR2V0UHJpdmF0ZURhdGEoRlhfTFBWT0lEIG1vZHVsZV9pZCk7DQorDQorICAgIGludAkJCQkJCW1fRmlsZUJ1ZlNpemU7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDUERGX01vZHVsZU1ncigpOw0KKw0KKyAgICB+Q1BERl9Nb2R1bGVNZ3IoKTsNCisgICAgdm9pZAkJCQkJSW5pdGlhbGl6ZSgpOw0KKw0KKyAgICB2b2lkCQkJCQlJbml0TW9kdWxlcygpOw0KKw0KKw0KKw0KKyAgICBDQ29kZWNfTW9kdWxlTWdyKgkJbV9wQ29kZWNNb2R1bGU7DQorDQorICAgIENQREZfUmVuZGVyTW9kdWxlRGVmKgltX3BSZW5kZXJNb2R1bGU7DQorDQorICAgIENQREZfUGFnZU1vZHVsZURlZioJCW1fcFBhZ2VNb2R1bGU7DQorDQorDQorICAgIEZYX0JPT0wgKCptX3BEb3dubG9hZENhbGxiYWNrKShGWF9MUENTVFIgbW9kdWxlX25hbWUpOw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCW1fRGVmYXVsdE1vZHVsZVBhdGg7DQorDQorICAgIENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyCW1fTW9kdWxlUGF0aExpc3Q7DQorDQorICAgIENGWF9NYXBCeXRlU3RyaW5nVG9QdHIJbV9TZWN1cml0eUhhbmRsZXJNYXA7DQorDQorICAgIENGWF9Qcml2YXRlRGF0YQkJCW1fcHJpdmF0ZURhdGE7DQorfTsNCitjbGFzcyBDUERGX0RvY3VtZW50Ow0KK2NsYXNzIENQREZfRG9jUGFnZURhdGE7DQorY2xhc3MgQ1BERl9Gb250R2xvYmFsczsNCitjbGFzcyBJUERGX0ZvbnRNZ3I7DQorY2xhc3MgSVBERl9Gb250TWFwcGVyOw0KK2NsYXNzIENQREZfQ29sb3JTcGFjZTsNCitjbGFzcyBDUERGX1BhZ2VNb2R1bGVEZWYgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgfkNQREZfUGFnZU1vZHVsZURlZigpIHt9DQorDQorICAgIHZpcnR1YWwgQ1BERl9Eb2NQYWdlRGF0YSoJQ3JlYXRlRG9jRGF0YShDUERGX0RvY3VtZW50KiBwRG9jKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJUmVsZWFzZURvYyhDUERGX0RvY3VtZW50Kikge30NCisgICAgdmlydHVhbCB2b2lkCQkJCUNsZWFyRG9jKENQREZfRG9jdW1lbnQqKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIENQREZfRm9udEdsb2JhbHMqCUdldEZvbnRHbG9iYWxzKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisNCisgICAgdmlydHVhbCB2b2lkCQkJCUNsZWFyU3RvY2tGb250KENQREZfRG9jdW1lbnQqIHBEb2MpIHt9DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCQlOb3RpZnlDSktBdmFpbGFibGUoKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIENQREZfQ29sb3JTcGFjZSoJR2V0U3RvY2tDUyhpbnQgZmFtaWx5KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KK307DQorY2xhc3MgQ1BERl9QYWdlT2JqZWN0czsNCitjbGFzcyBDRlhfQWZmaW5lTWF0cml4Ow0KK2NsYXNzIENQREZfUmVuZGVyT3B0aW9uczsNCitjbGFzcyBDUERGX1BhZ2U7DQorY2xhc3MgQ1BERl9Eb2NSZW5kZXJEYXRhOw0KK2NsYXNzIENQREZfUGFnZVJlbmRlckNhY2hlOw0KK2NsYXNzIENGWF9CaXRtYXBEZXZpY2U7DQorY2xhc3MgQ1BERl9TdHJlYW07DQorY2xhc3MgQ0ZYX0RJQlNvdXJjZTsNCitjbGFzcyBDUERGX1JlbmRlckNvbmZpZzsNCitjbGFzcyBDUERGX0ltYWdlOw0KK2NsYXNzIENQREZfUmVuZGVyTW9kdWxlRGVmIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICB2aXJ0dWFsIH5DUERGX1JlbmRlck1vZHVsZURlZigpIHt9DQorDQorICAgIHZpcnR1YWwgQ1BERl9Eb2NSZW5kZXJEYXRhKglDcmVhdGVEb2NEYXRhKENQREZfRG9jdW1lbnQqIHBEb2MpDQorICAgIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgdm9pZAlEZXN0cm95RG9jRGF0YShDUERGX0RvY1JlbmRlckRhdGEqKSB7fQ0KKyAgICB2aXJ0dWFsIHZvaWQJQ2xlYXJEb2NEYXRhKENQREZfRG9jUmVuZGVyRGF0YSopIHt9DQorDQorICAgIHZpcnR1YWwgQ1BERl9Eb2NSZW5kZXJEYXRhKiBHZXRSZW5kZXJEYXRhKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBDUERGX1BhZ2VSZW5kZXJDYWNoZSoJQ3JlYXRlUGFnZUNhY2hlKENQREZfUGFnZSogcFBhZ2UpDQorICAgIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgdm9pZAlEZXN0cm95UGFnZUNhY2hlKENQREZfUGFnZVJlbmRlckNhY2hlKikge30NCisNCisgICAgdmlydHVhbCB2b2lkCU5vdGlmeURlY29kZXJBdmFpbGFibGUoKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIENQREZfUmVuZGVyQ29uZmlnKiBHZXRDb25maWcoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9vYmplY3RzLmggYi9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX29iamVjdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjcxNDRiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9vYmplY3RzLmgKQEAgLTAsMCArMSw3ODUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZfT0JKRUNUU18NCisjZGVmaW5lIF9GUERGX09CSkVDVFNfDQorI2lmbmRlZiBfRlhDUlRfRVhURU5TSU9OXw0KKyNpbmNsdWRlICIuLi9meGNydC9meF9leHQuaCINCisjZW5kaWYNCitjbGFzcyBDUERGX0RvY3VtZW50Ow0KK2NsYXNzIENQREZfSW5kaXJlY3RPYmplY3RzOw0KK2NsYXNzIENQREZfTnVsbDsNCitjbGFzcyBDUERGX0Jvb2xlYW47DQorY2xhc3MgQ1BERl9OdW1iZXI7DQorY2xhc3MgQ1BERl9TdHJpbmc7DQorY2xhc3MgQ1BERl9TdHJlYW07DQorY2xhc3MgQ1BERl9TdHJlYW1BY2M7DQorY2xhc3MgQ1BERl9TdHJlYW1GaWx0ZXI7DQorY2xhc3MgQ1BERl9BcnJheTsNCitjbGFzcyBDUERGX0RpY3Rpb25hcnk7DQorY2xhc3MgQ1BERl9SZWZlcmVuY2U7DQorY2xhc3MgSVBERl9Eb2NQYXJzZXI7DQorY2xhc3MgSUZYX0ZpbGVSZWFkOw0KK2NsYXNzIENQREZfQ3J5cHRvSGFuZGxlcjsNCisjZGVmaW5lIFBERk9CSl9JTlZBTElECQkwDQorI2RlZmluZQlQREZPQkpfQk9PTEVBTgkJMQ0KKyNkZWZpbmUgUERGT0JKX05VTUJFUgkJMg0KKyNkZWZpbmUgUERGT0JKX1NUUklORwkJMw0KKyNkZWZpbmUgUERGT0JKX05BTUUJCQk0DQorI2RlZmluZSBQREZPQkpfQVJSQVkJCTUNCisjZGVmaW5lIFBERk9CSl9ESUNUSU9OQVJZCTYNCisjZGVmaW5lIFBERk9CSl9TVFJFQU0JCTcNCisjZGVmaW5lIFBERk9CSl9OVUxMCQkJOA0KKyNkZWZpbmUgUERGT0JKX1JFRkVSRU5DRQk5DQordHlwZWRlZiBJRlhfRmlsZVN0cmVhbSogKCpGUERGX0xQRkNsb25lU3RyZWFtQ2FsbGJhY2spKENQREZfU3RyZWFtICpwU3RyZWFtLCBGWF9MUFZPSUQgcFVzZXJEYXRhKTsNCitjbGFzcyBDUERGX09iamVjdCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgaW50CQkJCQkJR2V0VHlwZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1R5cGU7DQorICAgIH0NCisNCisgICAgRlhfRFdPUkQJCQkJR2V0T2JqTnVtKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fT2JqTnVtOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJCUlzSWRlbnRpY2FsKENQREZfT2JqZWN0KiBwT2JqKSBjb25zdDsNCisNCisgICAgQ1BERl9PYmplY3QqCQkJQ2xvbmUoRlhfQk9PTCBiRGlyZWN0ID0gRkFMU0UpIGNvbnN0Ow0KKw0KKyAgICBDUERGX09iamVjdCoJCQlDbG9uZVJlZihDUERGX0luZGlyZWN0T2JqZWN0cyogcE9ianMpIGNvbnN0Ow0KKw0KKyAgICBDUERGX09iamVjdCoJCQlHZXREaXJlY3QoKSBjb25zdDsNCisNCisgICAgdm9pZAkJCQkJUmVsZWFzZSgpOw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCUdldFN0cmluZygpIGNvbnN0Ow0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZ0MJCQlHZXRDb25zdFN0cmluZygpIGNvbnN0Ow0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCUdldFVuaWNvZGVUZXh0KENGWF9DaGFyTWFwKiBwQ2hhck1hcCA9IE5VTEwpIGNvbnN0Ow0KKw0KKyAgICBGWF9GTE9BVAkJCQlHZXROdW1iZXIoKSBjb25zdDsNCisNCisgICAgRlhfRkxPQVQJCQkJR2V0TnVtYmVyMTYoKSBjb25zdDsNCisNCisgICAgaW50CQkJCQkJR2V0SW50ZWdlcigpIGNvbnN0Ow0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQlHZXREaWN0KCkgY29uc3Q7DQorDQorICAgIENQREZfQXJyYXkqCQkJCUdldEFycmF5KCkgY29uc3Q7DQorDQorICAgIHZvaWQJCQkJCVNldFN0cmluZyhjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3RyKTsNCisNCisgICAgdm9pZAkJCQkJU2V0VW5pY29kZVRleHQoRlhfTFBDV1NUUiBwVW5pY29kZXMsIGludCBsZW4gPSAtMSk7DQorDQorICAgIGludAkJCQkJCUdldERpcmVjdFR5cGUoKSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCQkJSXNNb2RpZmllZCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisgICAgRlhfRFdPUkQJCQkJbV9UeXBlOw0KKyAgICBDUERGX09iamVjdCgpDQorICAgIHsNCisgICAgICAgIG1fT2JqTnVtID0gMDsNCisgICAgfQ0KKw0KKyAgICBGWF9EV09SRCAJCQkJbV9PYmpOdW07DQorDQorICAgIHZvaWQJCQkJCURlc3Ryb3koKTsNCisNCisNCisgICAgfkNQREZfT2JqZWN0KCkge30NCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9JbmRpcmVjdE9iamVjdHM7DQorICAgIGZyaWVuZCBjbGFzcwkJCUNQREZfUGFyc2VyOw0KKyAgICBmcmllbmQgY2xhc3MJCQlDUERGX1N5bnRheFBhcnNlcjsNCitwcml2YXRlOg0KKyAgICBDUERGX09iamVjdChjb25zdCBDUERGX09iamVjdCYgc3JjKSB7fQ0KKyAgICBDUERGX09iamVjdCogQ2xvbmVJbnRlcm5hbChGWF9CT09MIGJEaXJlY3QsIENGWF9NYXBQdHJUb1B0ciogdmlzaXRlZCkgY29uc3Q7DQorfTsNCitjbGFzcyBDUERGX0Jvb2xlYW4gOiBwdWJsaWMgQ1BERl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ1BERl9Cb29sZWFuKglDcmVhdGUoRlhfQk9PTCB2YWx1ZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX0Jvb2xlYW4odmFsdWUpOw0KKyAgICB9DQorDQorICAgIENQREZfQm9vbGVhbigpDQorICAgIHsNCisgICAgICAgIG1fVHlwZSA9IFBERk9CSl9CT09MRUFOOw0KKyAgICB9DQorDQorICAgIENQREZfQm9vbGVhbihGWF9CT09MIHZhbHVlKQ0KKyAgICB7DQorICAgICAgICBtX1R5cGUgPSBQREZPQkpfQk9PTEVBTjsNCisgICAgICAgIG1fYlZhbHVlID0gdmFsdWU7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQkJSWRlbnRpY2FsKENQREZfQm9vbGVhbiogcE90aGVyKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iVmFsdWUgPT0gcE90aGVyLT5tX2JWYWx1ZTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iVmFsdWU7DQorICAgIGZyaWVuZCBjbGFzcwkJCUNQREZfT2JqZWN0Ow0KK307DQorY2xhc3MgQ1BERl9OdW1iZXIgOiBwdWJsaWMgQ1BERl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ1BERl9OdW1iZXIqCQlDcmVhdGUoaW50IHZhbHVlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRlhfTkVXIENQREZfTnVtYmVyKHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgQ1BERl9OdW1iZXIqCQlDcmVhdGUoRlhfRkxPQVQgdmFsdWUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9OdW1iZXIodmFsdWUpOw0KKyAgICB9DQorDQorICAgIHN0YXRpYyBDUERGX051bWJlcioJCUNyZWF0ZShGWF9CU1RSIHN0cikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX051bWJlcihzdHIpOw0KKyAgICB9DQorDQorICAgIHN0YXRpYyBDUERGX051bWJlcioJCUNyZWF0ZShGWF9CT09MIGJJbnRlZ2VyLCB2b2lkKiBwRGF0YSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX051bWJlcihiSW50ZWdlciwgcERhdGEpOw0KKyAgICB9DQorDQorICAgIENQREZfTnVtYmVyKCkNCisgICAgew0KKyAgICAgICAgbV9UeXBlID0gUERGT0JKX05VTUJFUjsNCisgICAgfQ0KKw0KKyAgICBDUERGX051bWJlcihGWF9CT09MIGJJbnRlZ2VyLCB2b2lkKiBwRGF0YSk7DQorDQorICAgIENQREZfTnVtYmVyKGludCB2YWx1ZSk7DQorDQorICAgIENQREZfTnVtYmVyKEZYX0ZMT0FUIHZhbHVlKTsNCisNCisgICAgQ1BERl9OdW1iZXIoRlhfQlNUUiBzdHIpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlJZGVudGljYWwoQ1BERl9OdW1iZXIqIHBPdGhlcikgY29uc3Q7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQkJR2V0U3RyaW5nKCkgY29uc3Q7DQorDQorICAgIHZvaWQJCQkJCVNldFN0cmluZyhGWF9CU1RSIHN0cik7DQorDQorICAgIEZYX0JPT0wJCQkJCUlzSW50ZWdlcigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JJbnRlZ2VyOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJCUdldEludGVnZXIoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iSW50ZWdlciA/IG1fSW50ZWdlciA6IChpbnQpbV9GbG9hdDsNCisgICAgfQ0KKw0KKyAgICBGWF9GTE9BVAkJCQlHZXROdW1iZXIoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iSW50ZWdlciA/IChGWF9GTE9BVCltX0ludGVnZXIgOiBtX0Zsb2F0Ow0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCVNldE51bWJlcihGWF9GTE9BVCB2YWx1ZSk7DQorDQorICAgIEZYX0ZMT0FUCQkJR2V0TnVtYmVyMTYoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0TnVtYmVyKCk7DQorICAgIH0NCisNCisgICAgRlhfRkxPQVQJCQkJR2V0RmxvYXQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iSW50ZWdlciA/IChGWF9GTE9BVCltX0ludGVnZXIgOiBtX0Zsb2F0Ow0KKyAgICB9DQorcHJvdGVjdGVkOg0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JJbnRlZ2VyOw0KKw0KKyAgICB1bmlvbiB7DQorDQorICAgICAgICBpbnQJCQkJCW1fSW50ZWdlcjsNCisNCisgICAgICAgIEZYX0ZMT0FUCQkJbV9GbG9hdDsNCisgICAgfTsNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9PYmplY3Q7DQorfTsNCitjbGFzcyBDUERGX1N0cmluZyA6IHB1YmxpYyBDUERGX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHN0YXRpYyBDUERGX1N0cmluZyoJCUNyZWF0ZShjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3RyLCBGWF9CT09MIGJIZXggPSBGQUxTRSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX1N0cmluZyhzdHIsIGJIZXgpOw0KKyAgICB9DQorDQorICAgIHN0YXRpYyBDUERGX1N0cmluZyoJCUNyZWF0ZShjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRlhfTkVXIENQREZfU3RyaW5nKHN0cik7DQorICAgIH0NCisNCisgICAgQ1BERl9TdHJpbmcoKQ0KKyAgICB7DQorICAgICAgICBtX1R5cGUgPSBQREZPQkpfU1RSSU5HOw0KKyAgICAgICAgbV9iSGV4ID0gRkFMU0U7DQorICAgIH0NCisNCisgICAgQ1BERl9TdHJpbmcoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0ciwgRlhfQk9PTCBiSGV4ID0gRkFMU0UpIDogbV9TdHJpbmcoc3RyKQ0KKyAgICB7DQorICAgICAgICBtX1R5cGUgPSBQREZPQkpfU1RSSU5HOw0KKyAgICAgICAgbV9iSGV4ID0gYkhleDsNCisgICAgfQ0KKw0KKyAgICBDUERGX1N0cmluZyhjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcmCQkJR2V0U3RyaW5nKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fU3RyaW5nOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJCUlkZW50aWNhbChDUERGX1N0cmluZyogcE90aGVyKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9TdHJpbmcgPT0gcE90aGVyLT5tX1N0cmluZzsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCQlJc0hleCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JIZXg7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQkJbV9TdHJpbmc7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYkhleDsNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9PYmplY3Q7DQorfTsNCitjbGFzcyBDUERGX05hbWUgOiBwdWJsaWMgQ1BERl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ1BERl9OYW1lKgkJQ3JlYXRlKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9OYW1lKHN0cik7DQorICAgIH0NCisNCisgICAgc3RhdGljIENQREZfTmFtZSoJCUNyZWF0ZShGWF9CU1RSIHN0cikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX05hbWUoc3RyKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgQ1BERl9OYW1lKgkJQ3JlYXRlKEZYX0xQQ1NUUiBzdHIpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9OYW1lKHN0cik7DQorICAgIH0NCisNCisgICAgQ1BERl9OYW1lKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIpIDogbV9OYW1lKHN0cikNCisgICAgew0KKyAgICAgICAgbV9UeXBlID0gUERGT0JKX05BTUU7DQorICAgIH0NCisNCisgICAgQ1BERl9OYW1lKEZYX0JTVFIgc3RyKSA6IG1fTmFtZShzdHIpDQorICAgIHsNCisgICAgICAgIG1fVHlwZSA9IFBERk9CSl9OQU1FOw0KKyAgICB9DQorDQorICAgIENQREZfTmFtZShGWF9MUENTVFIgc3RyKSA6IG1fTmFtZShzdHIpDQorICAgIHsNCisgICAgICAgIG1fVHlwZSA9IFBERk9CSl9OQU1FOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nJgkJCUdldFN0cmluZygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX05hbWU7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQkJSWRlbnRpY2FsKENQREZfTmFtZSogcE90aGVyKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9OYW1lID09IHBPdGhlci0+bV9OYW1lOw0KKyAgICB9DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCW1fTmFtZTsNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9PYmplY3Q7DQorfTsNCitjbGFzcyBDUERGX0FycmF5IDogcHVibGljIENQREZfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgc3RhdGljIENQREZfQXJyYXkqCQlDcmVhdGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRlhfTkVXIENQREZfQXJyYXkoKTsNCisgICAgfQ0KKw0KKyAgICBDUERGX0FycmF5KCkNCisgICAgew0KKyAgICAgICAgbV9UeXBlID0gUERGT0JKX0FSUkFZOw0KKyAgICB9DQorDQorICAgIEZYX0RXT1JECQkJCUdldENvdW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fT2JqZWN0cy5HZXRTaXplKCk7DQorICAgIH0NCisNCisgICAgQ1BERl9PYmplY3QqCQkJR2V0RWxlbWVudChGWF9EV09SRCBpbmRleCkgY29uc3Q7DQorDQorICAgIENQREZfT2JqZWN0KgkJCUdldEVsZW1lbnRWYWx1ZShGWF9EV09SRCBpbmRleCkgY29uc3Q7DQorDQorDQorDQorICAgIENGWF9BZmZpbmVNYXRyaXgJCUdldE1hdHJpeCgpOw0KKw0KKyAgICBDRlhfRmxvYXRSZWN0CQkJR2V0UmVjdCgpOw0KKw0KKw0KKw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCUdldFN0cmluZyhGWF9EV09SRCBpbmRleCkgY29uc3Q7DQorDQorICAgIENGWF9CeXRlU3RyaW5nQwkJCUdldENvbnN0U3RyaW5nKEZYX0RXT1JEIGluZGV4KSBjb25zdDsNCisNCisgICAgaW50CQkJCQkJR2V0SW50ZWdlcihGWF9EV09SRCBpbmRleCkgY29uc3Q7DQorDQorICAgIEZYX0ZMT0FUCQkJCUdldE51bWJlcihGWF9EV09SRCBpbmRleCkgY29uc3Q7DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJCUdldERpY3QoRlhfRFdPUkQgaW5kZXgpIGNvbnN0Ow0KKw0KKyAgICBDUERGX1N0cmVhbSoJCQlHZXRTdHJlYW0oRlhfRFdPUkQgaW5kZXgpIGNvbnN0Ow0KKw0KKyAgICBDUERGX0FycmF5KgkJCQlHZXRBcnJheShGWF9EV09SRCBpbmRleCkgY29uc3Q7DQorDQorICAgIEZYX0ZMT0FUCQkJCUdldEZsb2F0KEZYX0RXT1JEIGluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0TnVtYmVyKGluZGV4KTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICB2b2lkCQkJCQlTZXRBdChGWF9EV09SRCBpbmRleCwgQ1BERl9PYmplY3QqIHBPYmosIENQREZfSW5kaXJlY3RPYmplY3RzKiBwT2JqcyA9IE5VTEwpOw0KKw0KKw0KKyAgICB2b2lkCQkJCQlJbnNlcnRBdChGWF9EV09SRCBpbmRleCwgQ1BERl9PYmplY3QqIHBPYmosIENQREZfSW5kaXJlY3RPYmplY3RzKiBwT2JqcyA9IE5VTEwpOw0KKw0KKyAgICB2b2lkCQkJCQlSZW1vdmVBdChGWF9EV09SRCBpbmRleCk7DQorDQorDQorICAgIHZvaWQJCQkJCUFkZChDUERGX09iamVjdCogcE9iaiwgQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpzID0gTlVMTCk7DQorDQorDQorDQorICAgIHZvaWQJCQkJCUFkZE51bWJlcihGWF9GTE9BVCBmKTsNCisNCisgICAgdm9pZAkJCQkJQWRkSW50ZWdlcihpbnQgaSk7DQorDQorICAgIHZvaWQJCQkJCUFkZFN0cmluZyhjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3RyKTsNCisNCisgICAgdm9pZAkJCQkJQWRkTmFtZShjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3RyKTsNCisNCisgICAgdm9pZAkJCQkJQWRkUmVmZXJlbmNlKENQREZfSW5kaXJlY3RPYmplY3RzKiBwRG9jLCBGWF9EV09SRCBvYmpudW0pOw0KKw0KKyAgICB2b2lkCQkJCQlBZGRSZWZlcmVuY2UoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBEb2MsIENQREZfT2JqZWN0KiBvYmopDQorICAgIHsNCisgICAgICAgIEFkZFJlZmVyZW5jZShwRG9jLCBvYmotPkdldE9iak51bSgpKTsNCisgICAgfQ0KKw0KKw0KKyAgICBGWF9GTE9BVAkJCUdldE51bWJlcjE2KEZYX0RXT1JEIGluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0TnVtYmVyKGluZGV4KTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCQlBZGROdW1iZXIxNihGWF9GTE9BVCB2YWx1ZSkNCisgICAgew0KKyAgICAgICAgQWRkTnVtYmVyKHZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCQlJZGVudGljYWwoQ1BERl9BcnJheSogcE90aGVyKSBjb25zdDsNCitwcm90ZWN0ZWQ6DQorDQorICAgIH5DUERGX0FycmF5KCk7DQorDQorICAgIENGWF9QdHJBcnJheQkJCW1fT2JqZWN0czsNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9PYmplY3Q7DQorfTsNCitjbGFzcyBDUERGX0RpY3Rpb25hcnkgOiBwdWJsaWMgQ1BERl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ1BERl9EaWN0aW9uYXJ5KglDcmVhdGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRlhfTkVXIENQREZfRGljdGlvbmFyeSgpOw0KKyAgICB9DQorDQorICAgIENQREZfRGljdGlvbmFyeSgpDQorICAgIHsNCisgICAgICAgIG1fVHlwZSA9IFBERk9CSl9ESUNUSU9OQVJZOw0KKyAgICB9DQorDQorDQorDQorICAgIENQREZfT2JqZWN0KgkJCUdldEVsZW1lbnQoRlhfQlNUUiBrZXkpIGNvbnN0Ow0KKw0KKyAgICBDUERGX09iamVjdCoJCQlHZXRFbGVtZW50VmFsdWUoRlhfQlNUUiBrZXkpIGNvbnN0Ow0KKw0KKw0KKw0KKw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCUdldFN0cmluZyhGWF9CU1RSIGtleSkgY29uc3Q7DQorDQorICAgIENGWF9CeXRlU3RyaW5nQwkJCUdldENvbnN0U3RyaW5nKEZYX0JTVFIga2V5KSBjb25zdDsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQlHZXRTdHJpbmcoRlhfQlNUUiBrZXksIEZYX0JTVFIgZGVmYXVsdF9zdHIpIGNvbnN0Ow0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZ0MJCQlHZXRDb25zdFN0cmluZyhGWF9CU1RSIGtleSwgRlhfQlNUUiBkZWZhdWx0X3N0cikgY29uc3Q7DQorDQorICAgIENGWF9XaWRlU3RyaW5nCQkJR2V0VW5pY29kZVRleHQoRlhfQlNUUiBrZXksIENGWF9DaGFyTWFwKiBwQ2hhck1hcCA9IE5VTEwpIGNvbnN0Ow0KKw0KKyAgICBpbnQJCQkJCQlHZXRJbnRlZ2VyKEZYX0JTVFIga2V5KSBjb25zdDsNCisNCisgICAgaW50CQkJCQkJR2V0SW50ZWdlcihGWF9CU1RSIGtleSwgaW50IGRlZmF1bHRfaW50KSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCQkJR2V0Qm9vbGVhbihGWF9CU1RSIGtleSwgRlhfQk9PTCBiRGVmYXVsdCA9IEZBTFNFKSBjb25zdDsNCisNCisgICAgRlhfRkxPQVQJCQkJR2V0TnVtYmVyKEZYX0JTVFIga2V5KSBjb25zdDsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJR2V0RGljdChGWF9CU1RSIGtleSkgY29uc3Q7DQorDQorICAgIENQREZfU3RyZWFtKgkJCUdldFN0cmVhbShGWF9CU1RSIGtleSkgY29uc3Q7DQorDQorICAgIENQREZfQXJyYXkqCQkJCUdldEFycmF5KEZYX0JTVFIga2V5KSBjb25zdDsNCisNCisgICAgQ0ZYX0Zsb2F0UmVjdAkJCUdldFJlY3QoRlhfQlNUUiBrZXkpIGNvbnN0Ow0KKw0KKyAgICBDRlhfQWZmaW5lTWF0cml4CQlHZXRNYXRyaXgoRlhfQlNUUiBrZXkpIGNvbnN0Ow0KKw0KKyAgICBGWF9GTE9BVAkJCQlHZXRGbG9hdChGWF9CU1RSIGtleSkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEdldE51bWJlcihrZXkpOw0KKyAgICB9DQorDQorDQorICAgIEZYX0JPT0wJCQkJCUtleUV4aXN0KEZYX0JTVFIga2V5KSBjb25zdDsNCisNCisgICAgRlhfUE9TSVRJT04JCQkJR2V0U3RhcnRQb3MoKSBjb25zdDsNCisNCisgICAgQ1BERl9PYmplY3QqCQkJR2V0TmV4dEVsZW1lbnQoRlhfUE9TSVRJT04mIHBvcywgQ0ZYX0J5dGVTdHJpbmcmIGtleSkgY29uc3Q7DQorDQorICAgIHZvaWQJCQkJCVNldEF0KEZYX0JTVFIga2V5LCBDUERGX09iamVjdCogcE9iaiwgQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpzID0gTlVMTCk7DQorDQorDQorDQorICAgIHZvaWQJCQkJCVNldEF0TmFtZShGWF9CU1RSIGtleSwgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpOw0KKw0KKw0KKyAgICB2b2lkCQkJCQlTZXRBdFN0cmluZyhGWF9CU1RSIGtleSwgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0cmluZyk7DQorDQorDQorICAgIHZvaWQJCQkJCVNldEF0SW50ZWdlcihGWF9CU1RSIGtleSwgaW50IGkpOw0KKw0KKw0KKyAgICB2b2lkCQkJCQlTZXRBdE51bWJlcihGWF9CU1RSIGtleSwgRlhfRkxPQVQgZik7DQorDQorICAgIHZvaWQJCQkJCVNldEF0UmVmZXJlbmNlKEZYX0JTVFIga2V5LCBDUERGX0luZGlyZWN0T2JqZWN0cyogcERvYywgRlhfRFdPUkQgb2JqbnVtKTsNCisNCisgICAgdm9pZAkJCQkJU2V0QXRSZWZlcmVuY2UoRlhfQlNUUiBrZXksIENQREZfSW5kaXJlY3RPYmplY3RzKiBwRG9jLCBDUERGX09iamVjdCogb2JqKQ0KKyAgICB7DQorICAgICAgICBTZXRBdFJlZmVyZW5jZShrZXksIHBEb2MsIG9iai0+R2V0T2JqTnVtKCkpOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCUFkZFJlZmVyZW5jZShGWF9CU1RSIGtleSwgQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBEb2MsIEZYX0RXT1JEIG9iam51bSk7DQorDQorICAgIHZvaWQJCQkJCUFkZFJlZmVyZW5jZShGWF9CU1RSIGtleSwgQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBEb2MsIENQREZfT2JqZWN0KiBvYmopDQorICAgIHsNCisgICAgICAgIEFkZFJlZmVyZW5jZShrZXksIHBEb2MsIG9iai0+R2V0T2JqTnVtKCkpOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCVNldEF0UmVjdChGWF9CU1RSIGtleSwgY29uc3QgQ0ZYX0Zsb2F0UmVjdCYgcmVjdCk7DQorDQorICAgIHZvaWQJCQkJCVNldEF0TWF0cml4KEZYX0JTVFIga2V5LCBjb25zdCBDRlhfQWZmaW5lTWF0cml4JiBtYXRyaXgpOw0KKw0KKyAgICB2b2lkCQkJCQlTZXRBdEJvb2xlYW4oRlhfQlNUUiBrZXksIEZYX0JPT0wgYlZhbHVlKTsNCisNCisNCisNCisgICAgdm9pZAkJCQkJUmVtb3ZlQXQoRlhfQlNUUiBrZXkpOw0KKw0KKw0KKyAgICB2b2lkCQkJCQlSZXBsYWNlS2V5KEZYX0JTVFIgb2xka2V5LCBGWF9CU1RSIG5ld2tleSk7DQorDQorICAgIEZYX0JPT0wJCQkJCUlkZW50aWNhbChDUERGX0RpY3Rpb25hcnkqIHBEaWN0KSBjb25zdDsNCisNCisgICAgaW50CQkJCQkJR2V0Q291bnQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9NYXAuR2V0Q291bnQoKTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCQlBZGRWYWx1ZShGWF9CU1RSIGtleSwgQ1BERl9PYmplY3QqIHBPYmopOw0KK3Byb3RlY3RlZDoNCisNCisgICAgfkNQREZfRGljdGlvbmFyeSgpOw0KKw0KKyAgICBDRlhfQ01hcEJ5dGVTdHJpbmdUb1B0cgltX01hcDsNCisNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9PYmplY3Q7DQorfTsNCitjbGFzcyBDUERGX1N0cmVhbSA6IHB1YmxpYyBDUERGX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHN0YXRpYyBDUERGX1N0cmVhbSoJCUNyZWF0ZShGWF9MUEJZVEUgcERhdGEsIEZYX0RXT1JEIHNpemUsIENQREZfRGljdGlvbmFyeSogcERpY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9TdHJlYW0ocERhdGEsIHNpemUsIHBEaWN0KTsNCisgICAgfQ0KKw0KKyAgICBDUERGX1N0cmVhbShGWF9MUEJZVEUgcERhdGEsIEZYX0RXT1JEIHNpemUsIENQREZfRGljdGlvbmFyeSogcERpY3QpOw0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQlHZXREaWN0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERpY3Q7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQkJU2V0RGF0YShGWF9MUENCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplLCBGWF9CT09MIGJDb21wcmVzc2VkLCBGWF9CT09MIGJLZWVwQnVmKTsNCisNCisgICAgdm9pZAkJCQkJSW5pdFN0cmVhbShGWF9CWVRFKiBwRGF0YSwgRlhfRFdPUkQgc2l6ZSwgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCk7DQorDQorICAgIHZvaWQJCQkJCUluaXRTdHJlYW0oSUZYX0ZpbGVSZWFkICpwRmlsZSwgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCk7DQorDQorICAgIEZYX0JPT0wJCQkJCUlkZW50aWNhbChDUERGX1N0cmVhbSogcE90aGVyKSBjb25zdDsNCisNCisgICAgQ1BERl9TdHJlYW1GaWx0ZXIqCQlHZXRTdHJlYW1GaWx0ZXIoRlhfQk9PTCBiUmF3ID0gRkFMU0UpIGNvbnN0Ow0KKw0KKw0KKw0KKyAgICBGWF9EV09SRAkJCQlHZXRSYXdTaXplKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fZHdTaXplOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJCVJlYWRSYXdEYXRhKEZYX0ZJTEVTSVpFIHN0YXJ0X3BvcywgRlhfTFBCWVRFIHBCdWYsIEZYX0RXT1JEIGJ1Zl9zaXplKSBjb25zdDsNCisNCisNCisgICAgRlhfQk9PTAkJCQkJSXNNZW1vcnlCYXNlZCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0dlbk51bSA9PSAoRlhfRFdPUkQpIC0gMTsNCisgICAgfQ0KKw0KKyAgICBDUERGX1N0cmVhbSoJCQlDbG9uZShGWF9CT09MIGJEaXJlY3QsIEZQREZfTFBGQ2xvbmVTdHJlYW1DYWxsYmFjayBscGZDYWxsYmFjaywgRlhfTFBWT0lEIHBVc2VyRGF0YSkgY29uc3Q7DQorcHJvdGVjdGVkOg0KKw0KKyAgICB+Q1BERl9TdHJlYW0oKTsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wRGljdDsNCisNCisgICAgRlhfRFdPUkQJCQkJbV9kd1NpemU7DQorDQorICAgIEZYX0RXT1JECQkJCW1fR2VuTnVtOw0KKw0KKyAgICB1bmlvbiB7DQorDQorICAgICAgICBGWF9MUEJZVEUJCQltX3BEYXRhQnVmOw0KKw0KKyAgICAgICAgSUZYX0ZpbGVSZWFkKgkJbV9wRmlsZTsNCisgICAgfTsNCisNCisgICAgRlhfRklMRVNJWkUJCQkJbV9GaWxlT2Zmc2V0Ow0KKw0KKyAgICBDUERGX0NyeXB0b0hhbmRsZXIqCQltX3BDcnlwdG9IYW5kbGVyOw0KKw0KKyAgICB2b2lkCQkJCQlJbml0U3RyZWFtKENQREZfRGljdGlvbmFyeSogcERpY3QpOw0KKyAgICBmcmllbmQgY2xhc3MJCQlDUERGX09iamVjdDsNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9TdHJlYW1BY2M7DQorICAgIGZyaWVuZCBjbGFzcwkJCUNQREZfQXR0YWNobWVudEFjYzsNCit9Ow0KK2NsYXNzIENQREZfU3RyZWFtQWNjIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1N0cmVhbUFjYygpOw0KKw0KKyAgICB+Q1BERl9TdHJlYW1BY2MoKTsNCisNCisgICAgdm9pZAkJCQkJTG9hZEFsbERhdGEoY29uc3QgQ1BERl9TdHJlYW0qIHBTdHJlYW0sIEZYX0JPT0wgYlJhd0FjY2VzcyA9IEZBTFNFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBlc3RpbWF0ZWRfc2l6ZSA9IDAsIEZYX0JPT0wgYkltYWdlQWNjID0gRkFMU0UpOw0KKw0KKyAgICBjb25zdCBDUERGX1N0cmVhbSoJCUdldFN0cmVhbSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BTdHJlYW07DQorICAgIH0NCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJR2V0RGljdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BTdHJlYW0tPkdldERpY3QoKTsNCisgICAgfQ0KKw0KKyAgICBGWF9MUENCWVRFCQkJCUdldERhdGEoKSBjb25zdDsNCisNCisgICAgRlhfRFdPUkQJCQkJR2V0U2l6ZSgpIGNvbnN0Ow0KKw0KKyAgICBGWF9MUEJZVEUJCQkJRGV0YWNoRGF0YSgpOw0KKw0KKyAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyYJR2V0SW1hZ2VEZWNvZGVyKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fSW1hZ2VEZWNvZGVyOw0KKyAgICB9DQorDQorICAgIGNvbnN0IENQREZfRGljdGlvbmFyeSoJR2V0SW1hZ2VQYXJhbSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BJbWFnZVBhcmFtOw0KKyAgICB9DQorcHJvdGVjdGVkOg0KKw0KKyAgICBGWF9MUEJZVEUJCQkJbV9wRGF0YTsNCisNCisgICAgRlhfRFdPUkQJCQkJbV9kd1NpemU7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYk5ld0J1ZjsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQltX0ltYWdlRGVjb2RlcjsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wSW1hZ2VQYXJhbTsNCisNCisgICAgY29uc3QgQ1BERl9TdHJlYW0qCQltX3BTdHJlYW07DQorDQorICAgIEZYX0xQQllURQkJCQltX3BTcmNEYXRhOw0KK307DQorQ0ZYX0RhdGFGaWx0ZXIqIEZQREZfQ3JlYXRlRmlsdGVyKEZYX0JTVFIgbmFtZSwgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwUGFyYW0sIGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKTsNCisjZGVmaW5lIEZQREZfRklMVEVSX0JVRkZFUl9TSVpFCQkyMDQ4MA0KK2NsYXNzIENQREZfU3RyZWFtRmlsdGVyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICB+Q1BERl9TdHJlYW1GaWx0ZXIoKTsNCisNCisgICAgRlhfRFdPUkQJCQlSZWFkQmxvY2soRlhfTFBCWVRFIGJ1ZmZlciwgRlhfRFdPUkQgc2l6ZSk7DQorDQorICAgIEZYX0RXT1JECQkJR2V0U3JjUG9zKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fU3JjT2Zmc2V0Ow0KKyAgICB9DQorDQorICAgIGNvbnN0IENQREZfU3RyZWFtKglHZXRTdHJlYW0oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wU3RyZWFtOw0KKyAgICB9DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDUERGX1N0cmVhbUZpbHRlcigpIHt9DQorDQorICAgIEZYX0RXT1JECQkJUmVhZExlZnRPdmVyKEZYX0xQQllURSBidWZmZXIsIEZYX0RXT1JEIGJ1Zl9zaXplKTsNCisNCisgICAgY29uc3QgQ1BERl9TdHJlYW0qCW1fcFN0cmVhbTsNCisNCisgICAgQ0ZYX0RhdGFGaWx0ZXIqCQltX3BGaWx0ZXI7DQorDQorICAgIENGWF9CaW5hcnlCdWYqCQltX3BCdWZmZXI7DQorDQorICAgIEZYX0RXT1JECQkJbV9CdWZPZmZzZXQ7DQorDQorICAgIEZYX0RXT1JECQkJbV9TcmNPZmZzZXQ7DQorDQorICAgIEZYX0JZVEUJCQkJbV9TcmNCdWZmZXJbRlBERl9GSUxURVJfQlVGRkVSX1NJWkVdOw0KKyAgICBmcmllbmQgY2xhc3MgQ1BERl9TdHJlYW07DQorfTsNCitjbGFzcyBDUERGX051bGwgOiBwdWJsaWMgQ1BERl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ1BERl9OdWxsKgkJQ3JlYXRlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX051bGwoKTsNCisgICAgfQ0KKw0KKyAgICBDUERGX051bGwoKQ0KKyAgICB7DQorICAgICAgICBtX1R5cGUgPSBQREZPQkpfTlVMTDsNCisgICAgfQ0KK307DQorY2xhc3MgQ1BERl9SZWZlcmVuY2UgOiBwdWJsaWMgQ1BERl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ1BERl9SZWZlcmVuY2UqCUNyZWF0ZShDUERGX0luZGlyZWN0T2JqZWN0cyogcERvYywgaW50IG9iam51bSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX1JlZmVyZW5jZShwRG9jLCBvYmpudW0pOw0KKyAgICB9DQorDQorICAgIENQREZfUmVmZXJlbmNlKENQREZfSW5kaXJlY3RPYmplY3RzKiBwRG9jLCBpbnQgb2JqbnVtKQ0KKyAgICB7DQorICAgICAgICBtX1R5cGUgPSBQREZPQkpfUkVGRVJFTkNFOw0KKyAgICAgICAgbV9wT2JqTGlzdCA9IHBEb2M7DQorICAgICAgICBtX1JlZk9iak51bSA9IG9iam51bTsNCisgICAgfQ0KKw0KKyAgICBDUERGX0luZGlyZWN0T2JqZWN0cyoJR2V0T2JqTGlzdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmpMaXN0Ow0KKyAgICB9DQorDQorICAgIEZYX0RXT1JECQkJCUdldFJlZk9iak51bSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1JlZk9iak51bTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCQlTZXRSZWYoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBEb2MsIEZYX0RXT1JEIG9iam51bSk7DQorDQorICAgIEZYX0JPT0wJCQkJCUlkZW50aWNhbChDUERGX1JlZmVyZW5jZSogcE90aGVyKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9SZWZPYmpOdW0gPT0gcE90aGVyLT5tX1JlZk9iak51bTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgQ1BERl9JbmRpcmVjdE9iamVjdHMqCW1fcE9iakxpc3Q7DQorDQorICAgIEZYX0RXT1JECQkJCW1fUmVmT2JqTnVtOw0KKyAgICBmcmllbmQgY2xhc3MJCQlDUERGX09iamVjdDsNCit9Ow0KK2NsYXNzIENQREZfSW5kaXJlY3RPYmplY3RzIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0luZGlyZWN0T2JqZWN0cyhJUERGX0RvY1BhcnNlciogcFBhcnNlcik7DQorDQorICAgIH5DUERGX0luZGlyZWN0T2JqZWN0cygpOw0KKw0KKyAgICBDUERGX09iamVjdCoJCQlHZXRJbmRpcmVjdE9iamVjdChGWF9EV09SRCBvYmpudW0sIHN0cnVjdCBQQVJTRV9DT05URVhUKiBwQ29udGV4dCA9IE5VTEwpOw0KKw0KKyAgICBpbnQJCQkJCQlHZXRJbmRpcmVjdFR5cGUoRlhfRFdPUkQgb2JqbnVtKTsNCisNCisgICAgRlhfRFdPUkQJCQkJQWRkSW5kaXJlY3RPYmplY3QoQ1BERl9PYmplY3QqIHBPYmopOw0KKw0KKyAgICB2b2lkCQkJCQlSZWxlYXNlSW5kaXJlY3RPYmplY3QoRlhfRFdPUkQgb2JqbnVtKTsNCisNCisgICAgdm9pZAkJCQkJSW5zZXJ0SW5kaXJlY3RPYmplY3QoRlhfRFdPUkQgb2JqbnVtLCBDUERGX09iamVjdCogcE9iaik7DQorDQorICAgIEZYX0RXT1JECQkJCUdldExhc3RPYmpOdW0oKSBjb25zdDsNCisNCisgICAgRlhfUE9TSVRJT04JCQkJR2V0U3RhcnRQb3NpdGlvbigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0luZGlyZWN0T2Jqcy5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQkJR2V0TmV4dEFzc29jKEZYX1BPU0lUSU9OJiByUG9zLCBGWF9EV09SRCYgb2JqbnVtLCBDUERGX09iamVjdComIHBPYmplY3QpIGNvbnN0DQorICAgIHsNCisgICAgICAgIG1fSW5kaXJlY3RPYmpzLkdldE5leHRBc3NvYyhyUG9zLCAodm9pZComKW9iam51bSwgKHZvaWQqJilwT2JqZWN0KTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgQ0ZYX01hcFB0clRvUHRyCQkJbV9JbmRpcmVjdE9ianM7DQorDQorICAgIElQREZfRG9jUGFyc2VyKgkJCW1fcFBhcnNlcjsNCisNCisgICAgRlhfRFdPUkQJCQkJbV9MYXN0T2JqTnVtOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlLmggYi9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWI4YzY4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlLmgKQEAgLTAsMCArMSwyNDkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZfUEFHRV8NCisjZGVmaW5lIF9GUERGX1BBR0VfDQorI2lmbmRlZiBfRlBERl9QQVJTRVJfDQorI2luY2x1ZGUgImZwZGZfcGFyc2VyLmgiDQorI2VuZGlmDQorI2lmbmRlZiBfRlBERl9SRVNPVVJDRV8NCisjaW5jbHVkZSAiZnBkZl9yZXNvdXJjZS5oIg0KKyNlbmRpZg0KKyNpZm5kZWYgX0ZYX0RJQl9IXw0KKyNpbmNsdWRlICIuLi9meGdlL2Z4X2RpYi5oIg0KKyNlbmRpZg0KK2NsYXNzIENQREZfUGFnZU9iamVjdHM7DQorY2xhc3MgQ1BERl9QYWdlOw0KK2NsYXNzIENQREZfRm9ybTsNCitjbGFzcyBDUERGX1BhcnNlT3B0aW9uczsNCitjbGFzcyBDUERGX1BhZ2VPYmplY3Q7DQorY2xhc3MgQ1BERl9QYWdlUmVuZGVyQ2FjaGU7DQorY2xhc3MgQ1BERl9TdHJlYW1GaWx0ZXI7DQorY2xhc3MgQ1BERl9BbGxTdGF0ZXM7DQorY2xhc3MgQ1BERl9Db250ZW50UGFyc2VyOw0KK2NsYXNzIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjsNCitjbGFzcyBDUERGX1Jlc291cmNlTmFtaW5nOw0KKyNkZWZpbmUgUERGVFJBTlNfR1JPVVAJCQkweDAxMDANCisjZGVmaW5lIFBERlRSQU5TX0lTT0xBVEVECQkweDAyMDANCisjZGVmaW5lIFBERlRSQU5TX0tOT0NLT1VUCQkweDA0MDANCisjZGVmaW5lIFBERl9DT05URU5UX05PVF9QQVJTRUQJMA0KKyNkZWZpbmUgUERGX0NPTlRFTlRfUEFSU0lORwkJMQ0KKyNkZWZpbmUgUERGX0NPTlRFTlRfUEFSU0VECQkyDQorY2xhc3MgQ1BERl9QYWdlT2JqZWN0cyA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9QYWdlT2JqZWN0cyhGWF9CT09MIGJSZWxlYXNlTWVtYmVycyA9IFRSVUUpOw0KKw0KKyAgICB+Q1BERl9QYWdlT2JqZWN0cygpOw0KKw0KKw0KKw0KKw0KKyAgICB2b2lkCQkJCUNvbnRpbnVlUGFyc2UoSUZYX1BhdXNlKiBwUGF1c2UpOw0KKw0KKyAgICBpbnQJCQkJCUdldFBhcnNlU3RhdGUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9QYXJzZVN0YXRlOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJSXNQYXJzZWQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9QYXJzZVN0YXRlID09IFBERl9DT05URU5UX1BBUlNFRDsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQkJCUVzdGltYXRlUGFyc2VQcm9ncmVzcygpIGNvbnN0Ow0KKw0KKw0KKw0KKw0KKyAgICBGWF9QT1NJVElPTgkJCUdldEZpcnN0T2JqZWN0UG9zaXRpb24oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9PYmplY3RMaXN0LkdldEhlYWRQb3NpdGlvbigpOw0KKyAgICB9DQorDQorICAgIEZYX1BPU0lUSU9OCQkJR2V0TGFzdE9iamVjdFBvc2l0aW9uKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fT2JqZWN0TGlzdC5HZXRUYWlsUG9zaXRpb24oKTsNCisgICAgfQ0KKw0KKyAgICBDUERGX1BhZ2VPYmplY3QqCUdldE5leHRPYmplY3QoRlhfUE9TSVRJT04mIHBvcykgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChDUERGX1BhZ2VPYmplY3QqKW1fT2JqZWN0TGlzdC5HZXROZXh0KHBvcyk7DQorICAgIH0NCisNCisgICAgQ1BERl9QYWdlT2JqZWN0KglHZXRQcmV2T2JqZWN0KEZYX1BPU0lUSU9OJiBwb3MpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoQ1BERl9QYWdlT2JqZWN0KiltX09iamVjdExpc3QuR2V0UHJldihwb3MpOw0KKyAgICB9DQorDQorICAgIENQREZfUGFnZU9iamVjdCoJR2V0T2JqZWN0QXQoRlhfUE9TSVRJT04gcG9zKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKENQREZfUGFnZU9iamVjdCopbV9PYmplY3RMaXN0LkdldEF0KHBvcyk7DQorICAgIH0NCisNCisgICAgRlhfRFdPUkQJCQlDb3VudE9iamVjdHMoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9PYmplY3RMaXN0LkdldENvdW50KCk7DQorICAgIH0NCisNCisgICAgaW50CQkJCQlHZXRPYmplY3RJbmRleChDUERGX1BhZ2VPYmplY3QqIHBPYmopIGNvbnN0Ow0KKw0KKyAgICBDUERGX1BhZ2VPYmplY3QqCUdldE9iamVjdEJ5SW5kZXgoaW50IGluZGV4KSBjb25zdDsNCisNCisNCisNCisNCisNCisgICAgRlhfUE9TSVRJT04JCQlJbnNlcnRPYmplY3QoRlhfUE9TSVRJT04gcG9zSW5zZXJ0QWZ0ZXIsIENQREZfUGFnZU9iamVjdCogcE5ld09iamVjdCk7DQorDQorICAgIHZvaWQJCQkJVHJhbnNmb3JtKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCk7DQorDQorICAgIEZYX0JPT0wJCQkJQmFja2dyb3VuZEFscGhhTmVlZGVkKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fYkJhY2tncm91bmRBbHBoYU5lZWRlZDsNCisgICAgfQ0KKw0KKyAgICBDRlhfRmxvYXRSZWN0CQlDYWxjQm91bmRpbmdCb3goKSBjb25zdDsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgltX3BGb3JtRGljdDsNCisNCisgICAgQ1BERl9TdHJlYW0qCQltX3BGb3JtU3RyZWFtOw0KKw0KKyAgICBDUERGX0RvY3VtZW50KgkJbV9wRG9jdW1lbnQ7DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJbV9wUGFnZVJlc291cmNlczsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgltX3BSZXNvdXJjZXM7DQorDQorICAgIENGWF9GbG9hdFJlY3QJCW1fQkJveDsNCisNCisgICAgaW50CQkJCQltX1RyYW5zcGFyZW5jeTsNCisNCitwcm90ZWN0ZWQ6DQorICAgIGZyaWVuZCBjbGFzcwkJQ1BERl9Db250ZW50UGFyc2VyOw0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfU3RyZWFtQ29udGVudFBhcnNlcjsNCisgICAgZnJpZW5kIGNsYXNzCQlDUERGX0FsbFN0YXRlczsNCisNCisgICAgQ0ZYX1B0ckxpc3QJCQltX09iamVjdExpc3Q7DQorDQorICAgIEZYX0JPT0wJCQkJbV9iQmFja2dyb3VuZEFscGhhTmVlZGVkOw0KKw0KKyAgICBGWF9CT09MCQkJCW1fYlJlbGVhc2VNZW1iZXJzOw0KKyAgICB2b2lkCQkJCUxvYWRUcmFuc0luZm8oKTsNCisgICAgdm9pZCAgICAgICAgICAgICAgICBDbGVhckNhY2hlT2JqZWN0cygpOw0KKw0KKyAgICBDUERGX0NvbnRlbnRQYXJzZXIqCW1fcFBhcnNlcjsNCisNCisgICAgRlhfQk9PTAkJCQltX1BhcnNlU3RhdGU7DQorfTsNCitjbGFzcyBDUERGX1BhZ2UgOiBwdWJsaWMgQ1BERl9QYWdlT2JqZWN0cywgcHVibGljIENGWF9Qcml2YXRlRGF0YQ0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfUGFnZSgpOw0KKw0KKyAgICB+Q1BERl9QYWdlKCk7DQorDQorICAgIHZvaWQJCQkJTG9hZChDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENQREZfRGljdGlvbmFyeSogcFBhZ2VEaWN0LCBGWF9CT09MIGJQYWdlQ2FjaGUgPSBUUlVFKTsNCisNCisgICAgdm9pZAkJCQlTdGFydFBhcnNlKENQREZfUGFyc2VPcHRpb25zKiBwT3B0aW9ucyA9IE5VTEwsIEZYX0JPT0wgYlJlUGFyc2UgPSBGQUxTRSk7DQorDQorICAgIHZvaWQJCQkJUGFyc2VDb250ZW50KENQREZfUGFyc2VPcHRpb25zKiBwT3B0aW9ucyA9IE5VTEwsIEZYX0JPT0wgYlJlUGFyc2UgPSBGQUxTRSk7DQorDQorICAgIHZvaWQJCQkJR2V0RGlzcGxheU1hdHJpeChDRlhfQWZmaW5lTWF0cml4JiBtYXRyaXgsIGludCB4UG9zLCBpbnQgeVBvcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4U2l6ZSwgaW50IHlTaXplLCBpbnQgaVJvdGF0ZSkgY29uc3Q7DQorDQorICAgIEZYX0ZMT0FUCQkJR2V0UGFnZVdpZHRoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fUGFnZVdpZHRoOw0KKyAgICB9DQorDQorICAgIEZYX0ZMT0FUCQkJR2V0UGFnZUhlaWdodCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1BhZ2VIZWlnaHQ7DQorICAgIH0NCisNCisgICAgQ0ZYX0Zsb2F0UmVjdAkJR2V0UGFnZUJCb3goKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9CQm94Ow0KKyAgICB9DQorDQorICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgmCUdldFBhZ2VNYXRyaXgoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9QYWdlTWF0cml4Ow0KKyAgICB9DQorDQorICAgIENQREZfT2JqZWN0KgkJR2V0UGFnZUF0dHIoRlhfQlNUUiBuYW1lKSBjb25zdDsNCisNCisNCisNCisgICAgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqCUdldFJlbmRlckNhY2hlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFBhZ2VSZW5kZXI7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlDbGVhclJlbmRlckNhY2hlKCk7DQorDQorcHJvdGVjdGVkOg0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfQ29udGVudFBhcnNlcjsNCisNCisgICAgRlhfRkxPQVQJCQltX1BhZ2VXaWR0aDsNCisNCisgICAgRlhfRkxPQVQJCQltX1BhZ2VIZWlnaHQ7DQorDQorICAgIENGWF9BZmZpbmVNYXRyaXgJbV9QYWdlTWF0cml4Ow0KKw0KKyAgICBDUERGX1BhZ2VSZW5kZXJDYWNoZSoJbV9wUGFnZVJlbmRlcjsNCit9Ow0KK2NsYXNzIENQREZfUGFyc2VPcHRpb25zIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1BhcnNlT3B0aW9ucygpOw0KKw0KKyAgICBGWF9CT09MCQkJCW1fYlRleHRPbmx5Ow0KKw0KKyAgICBGWF9CT09MCQkJCW1fYk1hcmtlZENvbnRlbnQ7DQorDQorICAgIEZYX0JPT0wJCQkJbV9iU2VwYXJhdGVGb3JtOw0KKw0KKyAgICBGWF9CT09MCQkJCW1fYkRlY29kZUlubGluZUltYWdlOw0KK307DQorY2xhc3MgQ1BERl9Gb3JtIDogcHVibGljIENQREZfUGFnZU9iamVjdHMNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0Zvcm0oQ1BERl9Eb2N1bWVudCogcERvY3VtZW50LCBDUERGX0RpY3Rpb25hcnkqIHBQYWdlUmVzb3VyY2VzLCBDUERGX1N0cmVhbSogcEZvcm1TdHJlYW0sIENQREZfRGljdGlvbmFyeSogcFBhcmVudFJlc291cmNlcyA9IE5VTEwpOw0KKw0KKyAgICB+Q1BERl9Gb3JtKCk7DQorDQorICAgIHZvaWQJCQkJU3RhcnRQYXJzZShDUERGX0FsbFN0YXRlcyogcEdyYXBoaWNTdGF0ZXMsICBDRlhfQWZmaW5lTWF0cml4KiBwUGFyZW50TWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9UeXBlM0NoYXIqIHBUeXBlM0NoYXIsIENQREZfUGFyc2VPcHRpb25zKiBwT3B0aW9ucywgaW50IGxldmVsID0gMCk7DQorDQorICAgIHZvaWQJCQkJUGFyc2VDb250ZW50KENQREZfQWxsU3RhdGVzKiBwR3JhcGhpY1N0YXRlcywgQ0ZYX0FmZmluZU1hdHJpeCogcFBhcmVudE1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9UeXBlM0NoYXIqIHBUeXBlM0NoYXIsIENQREZfUGFyc2VPcHRpb25zKiBwT3B0aW9ucywgaW50IGxldmVsID0gMCk7DQorDQorICAgIENQREZfRm9ybSoJCQlDbG9uZSgpIGNvbnN0Ow0KK307DQorY2xhc3MgQ1BERl9QYWdlQ29udGVudEdlbmVyYXRlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX1BhZ2VDb250ZW50R2VuZXJhdGUoQ1BERl9QYWdlKiBwUGFnZSk7DQorICAgIH5DUERGX1BhZ2VDb250ZW50R2VuZXJhdGUoKTsNCisgICAgRlhfQk9PTCBJbnNlcnRQYWdlT2JqZWN0KENQREZfUGFnZU9iamVjdCogcFBhZ2VPYmplY3QpOw0KKyAgICB2b2lkIEdlbmVyYXRlQ29udGVudCgpOw0KKyAgICB2b2lkIFRyYW5zZm9ybUNvbnRlbnQoQ0ZYX01hdHJpeCYgbWF0cml4KTsNCitwcm90ZWN0ZWQ6DQorICAgIHZvaWQgICAgICAgICAgICBQcm9jZXNzSW1hZ2UoQ0ZYX0J5dGVUZXh0QnVmJiBidWYsIENQREZfSW1hZ2VPYmplY3QqIHBJbWFnZU9iaik7DQorICAgIHZvaWQgICAgICAgICAgICBQcm9jZXNzRm9ybShDRlhfQnl0ZVRleHRCdWYmIGJ1ZiwgRlhfTFBDQllURSBkYXRhLCBGWF9EV09SRCBzaXplLCBDRlhfTWF0cml4JiBtYXRyaXgpOw0KKyAgICBDRlhfQnl0ZVN0cmluZyAgUmVhbGl6ZVJlc291cmNlKENQREZfT2JqZWN0KiBwUmVzb3VyY2VPYmosIGNvbnN0IEZYX0NIQVIqIHN6VHlwZSk7DQorcHJpdmF0ZToNCisgICAgQ1BERl9QYWdlKiAgICAgIG1fcFBhZ2U7DQorICAgIENQREZfRG9jdW1lbnQqICBtX3BEb2N1bWVudDsNCisgICAgQ0ZYX1B0ckFycmF5ICAgIG1fcGFnZU9iamVjdHM7DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2VvYmouaCBiL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZW9iai5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlODI2ODAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2VvYmouaApAQCAtMCwwICsxLDcyMSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlBERl9QQUdFT0JKX0hfDQorI2RlZmluZSBfRlBERl9QQUdFT0JKX0hfDQorI2lmbmRlZiBfRlBERl9SRVNPVVJDRV8NCisjaW5jbHVkZSAiZnBkZl9yZXNvdXJjZS5oIg0KKyNlbmRpZg0KKyNpZm5kZWYgX0ZYX0dFX0hfDQorI2luY2x1ZGUgIi4uL2Z4Z2UvZnhfZ2UuaCINCisjZW5kaWYNCitjbGFzcyBDUERGX1BhdGg7DQorY2xhc3MgQ1BERl9DbGlwUGF0aERhdGE7DQorY2xhc3MgQ1BERl9DbGlwUGF0aDsNCitjbGFzcyBDUERGX0NvbG9yU3RhdGVEYXRhOw0KK2NsYXNzIENQREZfQ29sb3JTdGF0ZTsNCitjbGFzcyBDUERGX0dyYXBoU3RhdGU7DQorY2xhc3MgQ1BERl9UZXh0U3RhdGVEYXRhOw0KK2NsYXNzIENQREZfVGV4dFN0YXRlOw0KK2NsYXNzIENQREZfR2VuZXJhbFN0YXRlRGF0YTsNCitjbGFzcyBDUERGX0dlbmVyYWxTdGF0ZTsNCitjbGFzcyBDUERGX0NvbnRlbnRNYXJrSXRlbTsNCitjbGFzcyBDUERGX0NvbnRlbnRNYXJrOw0KK2NsYXNzIENQREZfR3JhcGhpY1N0YXRlczsNCitjbGFzcyBDUERGX1BhZ2VPYmplY3Q7DQorY2xhc3MgQ1BERl9UZXh0T2JqZWN0Ow0KK2NsYXNzIENQREZfUGF0aE9iamVjdDsNCitjbGFzcyBDUERGX0ltYWdlT2JqZWN0Ow0KK2NsYXNzIENQREZfU2hhZGluZ09iamVjdDsNCitjbGFzcyBDUERGX0Zvcm1PYmplY3Q7DQorY2xhc3MgQ1BERl9JbmxpbmVJbWFnZXM7DQordHlwZWRlZiBDRlhfUGF0aERhdGEgQ1BERl9QYXRoRGF0YTsNCitjbGFzcyBDUERGX1BhdGggOiBwdWJsaWMgQ0ZYX0NvdW50UmVmPENGWF9QYXRoRGF0YT4NCit7DQorcHVibGljOg0KKw0KKw0KKw0KKw0KKyAgICBpbnQJCQkJCUdldFBvaW50Q291bnQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0LT5tX1BvaW50Q291bnQ7DQorICAgIH0NCisNCisgICAgaW50CQkJCQlHZXRGbGFnKGludCBpbmRleCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcE9iamVjdC0+bV9wUG9pbnRzW2luZGV4XS5tX0ZsYWc7DQorICAgIH0NCisNCisgICAgRlhfRkxPQVQJCQlHZXRQb2ludFgoaW50IGluZGV4KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0LT5tX3BQb2ludHNbaW5kZXhdLm1fUG9pbnRYOw0KKyAgICB9DQorDQorICAgIEZYX0ZMT0FUCQkJR2V0UG9pbnRZKGludCBpbmRleCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcE9iamVjdC0+bV9wUG9pbnRzW2luZGV4XS5tX1BvaW50WTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBGWF9QQVRIUE9JTlQqCQlHZXRQb2ludHMoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0LT5tX3BQb2ludHM7DQorICAgIH0NCisNCisNCisgICAgQ0ZYX0Zsb2F0UmVjdAkJR2V0Qm91bmRpbmdCb3goKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0LT5HZXRCb3VuZGluZ0JveCgpOw0KKyAgICB9DQorDQorICAgIENGWF9GbG9hdFJlY3QJCUdldEJvdW5kaW5nQm94KEZYX0ZMT0FUIGxpbmVfd2lkdGgsIEZYX0ZMT0FUIG1pdGVyX2xpbWl0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0LT5HZXRCb3VuZGluZ0JveChsaW5lX3dpZHRoLCBtaXRlcl9saW1pdCk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCkNCisgICAgew0KKyAgICAgICAgR2V0TW9kaWZ5KCktPlRyYW5zZm9ybShwTWF0cml4KTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCUFwcGVuZChDUERGX1BhdGggc3JjLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4KQ0KKyAgICB7DQorICAgICAgICBtX3BPYmplY3QtPkFwcGVuZChzcmMubV9wT2JqZWN0LCBwTWF0cml4KTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCUFwcGVuZFJlY3QoRlhfRkxPQVQgbGVmdCwgRlhfRkxPQVQgYm90dG9tLCBGWF9GTE9BVCByaWdodCwgRlhfRkxPQVQgdG9wKQ0KKyAgICB7DQorICAgICAgICBtX3BPYmplY3QtPkFwcGVuZFJlY3QobGVmdCwgYm90dG9tLCByaWdodCwgdG9wKTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCUlzUmVjdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmplY3QtPklzUmVjdCgpOw0KKyAgICB9DQorfTsNCitjbGFzcyBDUERGX0NsaXBQYXRoRGF0YSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9DbGlwUGF0aERhdGEoKTsNCisNCisgICAgQ1BERl9DbGlwUGF0aERhdGEoY29uc3QgQ1BERl9DbGlwUGF0aERhdGEmKTsNCisNCisgICAgfkNQREZfQ2xpcFBhdGhEYXRhKCk7DQorDQorICAgIHZvaWQJCQkJU2V0Q291bnQoaW50IHBhdGhfY291bnQsIGludCB0ZXh0X2NvdW50KTsNCitwdWJsaWM6DQorDQorICAgIGludAkJCQkJbV9QYXRoQ291bnQ7DQorDQorICAgIENQREZfUGF0aCoJCQltX3BQYXRoTGlzdDsNCisNCisgICAgRlhfQllURSoJCQltX3BUeXBlTGlzdDsNCisNCisgICAgaW50CQkJCQltX1RleHRDb3VudDsNCisNCisgICAgQ1BERl9UZXh0T2JqZWN0KioJbV9wVGV4dExpc3Q7DQorfTsNCitjbGFzcyBDUERGX0NsaXBQYXRoIDogcHVibGljIENGWF9Db3VudFJlZjxDUERGX0NsaXBQYXRoRGF0YT4NCit7DQorcHVibGljOg0KKw0KKyAgICBGWF9EV09SRAkJCUdldFBhdGhDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmplY3QtPm1fUGF0aENvdW50Ow0KKyAgICB9DQorDQorICAgIENQREZfUGF0aAkJCUdldFBhdGgoaW50IGkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmplY3QtPm1fcFBhdGhMaXN0W2ldOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJR2V0Q2xpcFR5cGUoaW50IGkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmplY3QtPm1fcFR5cGVMaXN0W2ldOw0KKyAgICB9DQorDQorICAgIEZYX0RXT1JECQkJR2V0VGV4dENvdW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcE9iamVjdC0+bV9UZXh0Q291bnQ7DQorICAgIH0NCisNCisgICAgQ1BERl9UZXh0T2JqZWN0KglHZXRUZXh0KGludCBpKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0LT5tX3BUZXh0TGlzdFtpXTsNCisgICAgfQ0KKw0KKyAgICBDRlhfRmxvYXRSZWN0CQlHZXRDbGlwQm94KCkgY29uc3Q7DQorDQorICAgIHZvaWQJCQkJQXBwZW5kUGF0aChDUERGX1BhdGggcGF0aCwgaW50IHR5cGUsIEZYX0JPT0wgYkF1dG9NZXJnZSk7DQorDQorICAgIHZvaWQJCQkJRGVsZXRlUGF0aChpbnQgbGF5ZXJfaW5kZXgpOw0KKw0KKyAgICB2b2lkCQkJCUFwcGVuZFRleHRzKENQREZfVGV4dE9iamVjdCoqIHBUZXh0cywgaW50IGNvdW50KTsNCisNCisgICAgdm9pZAkJCQlUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KTsNCit9Ow0KK2NsYXNzIENQREZfQ29sb3JTdGF0ZURhdGEgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfQ29sb3JTdGF0ZURhdGEoKSB7fQ0KKw0KKyAgICBDUERGX0NvbG9yU3RhdGVEYXRhKGNvbnN0IENQREZfQ29sb3JTdGF0ZURhdGEmIHNyYyk7DQorDQorICAgIHZvaWQJCQkJRGVmYXVsdCgpOw0KKw0KKyAgICBDUERGX0NvbG9yCQkJbV9GaWxsQ29sb3I7DQorDQorICAgIEZYX0RXT1JECQkJbV9GaWxsUkdCOw0KKw0KKyAgICBDUERGX0NvbG9yCQkJbV9TdHJva2VDb2xvcjsNCisNCisgICAgRlhfRFdPUkQJCQltX1N0cm9rZVJHQjsNCit9Ow0KK2NsYXNzIENQREZfQ29sb3JTdGF0ZSA6IHB1YmxpYyBDRlhfQ291bnRSZWY8Q1BERl9Db2xvclN0YXRlRGF0YT4NCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0NvbG9yKgkJCUdldEZpbGxDb2xvcigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmplY3QgPyAmbV9wT2JqZWN0LT5tX0ZpbGxDb2xvciA6IE5VTEw7DQorICAgIH0NCisNCisgICAgQ1BERl9Db2xvcioJCQlHZXRTdHJva2VDb2xvcigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmplY3QgPyAmbV9wT2JqZWN0LT5tX1N0cm9rZUNvbG9yIDogTlVMTDsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCVNldEZpbGxDb2xvcihDUERGX0NvbG9yU3BhY2UqIHBDUywgRlhfRkxPQVQqIHBWYWx1ZSwgaW50IG5WYWx1ZXMpOw0KKw0KKyAgICB2b2lkCQkJCVNldFN0cm9rZUNvbG9yKENQREZfQ29sb3JTcGFjZSogcENTLCBGWF9GTE9BVCogcFZhbHVlLCBpbnQgblZhbHVlcyk7DQorDQorICAgIHZvaWQJCQkJU2V0RmlsbFBhdHRlcm4oQ1BERl9QYXR0ZXJuKiBwYXR0ZXJuLCBGWF9GTE9BVCogcFZhbHVlLCBpbnQgblZhbHVlcyk7DQorDQorICAgIHZvaWQJCQkJU2V0U3Ryb2tlUGF0dGVybihDUERGX1BhdHRlcm4qIHBhdHRlcm4sIEZYX0ZMT0FUKiBwVmFsdWUsIGludCBuVmFsdWVzKTsNCitwcml2YXRlOg0KKyAgICB2b2lkCQkJCVNldENvbG9yKENQREZfQ29sb3ImIGNvbG9yLCBGWF9EV09SRCYgcmdiLCBDUERGX0NvbG9yU3BhY2UqIHBDUywgRlhfRkxPQVQqIHBWYWx1ZSwgaW50IG5WYWx1ZXMpOw0KK307DQordHlwZWRlZiBDRlhfR3JhcGhTdGF0ZURhdGEgQ1BERl9HcmFwaFN0YXRlRGF0YTsNCitjbGFzcyBDUERGX0dyYXBoU3RhdGUgOiBwdWJsaWMgQ0ZYX0NvdW50UmVmPENGWF9HcmFwaFN0YXRlRGF0YT4NCit7DQorcHVibGljOg0KK307DQorY2xhc3MgQ1BERl9UZXh0U3RhdGVEYXRhIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1RleHRTdGF0ZURhdGEoKTsNCisNCisgICAgQ1BERl9UZXh0U3RhdGVEYXRhKGNvbnN0IENQREZfVGV4dFN0YXRlRGF0YSYgc3JjKTsNCisNCisgICAgfkNQREZfVGV4dFN0YXRlRGF0YSgpOw0KKw0KKyAgICBDUERGX0ZvbnQqCQkJbV9wRm9udDsNCisNCisgICAgRlhfRkxPQVQJCQltX0ZvbnRTaXplOw0KKw0KKyAgICBGWF9GTE9BVAkJCW1fQ2hhclNwYWNlOw0KKw0KKyAgICBGWF9GTE9BVAkJCW1fV29yZFNwYWNlOw0KKw0KKyAgICBGWF9GTE9BVAkJbV9NYXRyaXhbNF07DQorDQorICAgIGludAkJCQkJbV9UZXh0TW9kZTsNCisNCisgICAgRlhfRkxPQVQJCW1fQ1RNWzRdOw0KK307DQorY2xhc3MgQ1BERl9UZXh0U3RhdGUgOiBwdWJsaWMgQ0ZYX0NvdW50UmVmPENQREZfVGV4dFN0YXRlRGF0YT4NCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0ZvbnQqCQkJR2V0Rm9udCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmplY3QtPm1fcEZvbnQ7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlTZXRGb250KENQREZfRm9udCogcEZvbnQpOw0KKw0KKyAgICBGWF9GTE9BVAkJCUdldEZvbnRTaXplKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcE9iamVjdC0+bV9Gb250U2l6ZTsNCisgICAgfQ0KKw0KKyAgICBGWF9GTE9BVCoJCQlHZXRNYXRyaXgoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0LT5tX01hdHJpeDsNCisgICAgfQ0KKw0KKw0KKw0KKyAgICBGWF9GTE9BVAkJCUdldEZvbnRTaXplVigpIGNvbnN0Ow0KKw0KKyAgICBGWF9GTE9BVAkJCUdldEZvbnRTaXplSCgpIGNvbnN0Ow0KKw0KKyAgICBGWF9GTE9BVAkJCUdldEJhc2VsaW5lQW5nbGUoKSBjb25zdDsNCisNCisgICAgRlhfRkxPQVQJCQlHZXRTaGVhckFuZ2xlKCkgY29uc3Q7DQorDQorfTsNCitjbGFzcyBDUERGX1RyYW5zZmVyRnVuYzsNCitjbGFzcyBDUERGX0dlbmVyYWxTdGF0ZURhdGEgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfR2VuZXJhbFN0YXRlRGF0YSgpOw0KKw0KKyAgICBDUERGX0dlbmVyYWxTdGF0ZURhdGEoY29uc3QgQ1BERl9HZW5lcmFsU3RhdGVEYXRhJiBzcmMpOw0KKyAgICB+Q1BERl9HZW5lcmFsU3RhdGVEYXRhKCk7DQorDQorICAgIHZvaWQJCQkJU2V0QmxlbmRNb2RlKEZYX0JTVFIgYmxlbmRfbW9kZSk7DQorDQorICAgIGNoYXIJCQkJbV9CbGVuZE1vZGVbMTZdOw0KKw0KKyAgICBpbnQJCQkJCW1fQmxlbmRUeXBlOw0KKw0KKyAgICBDUERGX09iamVjdCoJCW1fcFNvZnRNYXNrOw0KKw0KKyAgICBGWF9GTE9BVAkJCW1fU01hc2tNYXRyaXhbNl07DQorDQorICAgIEZYX0ZMT0FUCQkJbV9TdHJva2VBbHBoYTsNCisNCisgICAgRlhfRkxPQVQJCQltX0ZpbGxBbHBoYTsNCisNCisgICAgQ1BERl9PYmplY3QqCQltX3BUUjsNCisNCisgICAgQ1BERl9UcmFuc2ZlckZ1bmMqCW1fcFRyYW5zZmVyRnVuYzsNCisNCisgICAgQ0ZYX01hdHJpeAkJCW1fTWF0cml4Ow0KKw0KKyAgICBpbnQJCQkJCW1fUmVuZGVySW50ZW50Ow0KKw0KKyAgICBGWF9CT09MCQkJCW1fU3Ryb2tlQWRqdXN0Ow0KKw0KKyAgICBGWF9CT09MCQkJCW1fQWxwaGFTb3VyY2U7DQorDQorICAgIEZYX0JPT0wJCQkJbV9UZXh0S25vY2tvdXQ7DQorDQorICAgIEZYX0JPT0wJCQkJbV9TdHJva2VPUDsNCisNCisgICAgRlhfQk9PTAkJCQltX0ZpbGxPUDsNCisNCisgICAgaW50CQkJCQltX09QTW9kZTsNCisNCisgICAgQ1BERl9PYmplY3QqCQltX3BCRzsNCisNCisgICAgQ1BERl9PYmplY3QqCQltX3BVQ1I7DQorDQorICAgIENQREZfT2JqZWN0KgkJbV9wSFQ7DQorDQorICAgIEZYX0ZMT0FUCQkJbV9GbGF0bmVzczsNCisNCisgICAgRlhfRkxPQVQJCQltX1Ntb290aG5lc3M7DQorfTsNCitjbGFzcyBDUERGX0dlbmVyYWxTdGF0ZSA6IHB1YmxpYyBDRlhfQ291bnRSZWY8Q1BERl9HZW5lcmFsU3RhdGVEYXRhPg0KK3sNCitwdWJsaWM6DQorDQorICAgIHZvaWQJCQkJU2V0UmVuZGVySW50ZW50KGNvbnN0IENGWF9CeXRlU3RyaW5nJiByaSk7DQorDQorICAgIGludAkJCQkJR2V0QmxlbmRUeXBlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcE9iamVjdCA/IG1fcE9iamVjdC0+bV9CbGVuZFR5cGUgOiBGWERJQl9CTEVORF9OT1JNQUw7DQorICAgIH0NCisNCisgICAgaW50CQkJCQlHZXRBbHBoYShGWF9CT09MIGJTdHJva2UpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmplY3QgPyBGWFNZU19yb3VuZCgoYlN0cm9rZSA/IG1fcE9iamVjdC0+bV9TdHJva2VBbHBoYSA6IG1fcE9iamVjdC0+bV9GaWxsQWxwaGEpICogMjU1KSA6IDI1NTsNCisgICAgfQ0KK307DQorY2xhc3MgQ1BERl9Db250ZW50TWFya0l0ZW0gOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHR5cGVkZWYgZW51bSB7DQorICAgICAgICBOb25lLA0KKyAgICAgICAgUHJvcGVydGllc0RpY3QsDQorICAgICAgICBEaXJlY3REaWN0LA0KKyAgICAgICAgTUNJRA0KKyAgICB9IFBhcmFtVHlwZTsNCisNCisgICAgQ1BERl9Db250ZW50TWFya0l0ZW0oKTsNCisNCisgICAgQ1BERl9Db250ZW50TWFya0l0ZW0oY29uc3QgQ1BERl9Db250ZW50TWFya0l0ZW0mIHNyYyk7DQorDQorICAgIH5DUERGX0NvbnRlbnRNYXJrSXRlbSgpOw0KKw0KKyAgICBpbmxpbmUgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmCUdldE5hbWUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9NYXJrTmFtZTsNCisgICAgfQ0KKw0KKyAgICBpbmxpbmUgUGFyYW1UeXBlCUdldFBhcmFtVHlwZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1BhcmFtVHlwZTsNCisgICAgfQ0KKw0KKyAgICBpbmxpbmUgdm9pZCoJCUdldFBhcmFtKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFBhcmFtOw0KKyAgICB9DQorDQorICAgIGlubGluZSBGWF9CT09MCQlIYXNNQ0lEKCkgY29uc3Q7DQorDQorICAgIGlubGluZSB2b2lkCQkJU2V0TmFtZShjb25zdCBDRlhfQnl0ZVN0cmluZyYgbmFtZSkNCisgICAgew0KKyAgICAgICAgbV9NYXJrTmFtZSA9IG5hbWU7DQorICAgIH0NCisNCisgICAgaW5saW5lIHZvaWQJCQlTZXRQYXJhbShQYXJhbVR5cGUgdHlwZSwgdm9pZCogcGFyYW0pDQorICAgIHsNCisgICAgICAgIG1fUGFyYW1UeXBlID0gdHlwZTsNCisgICAgICAgIG1fcFBhcmFtID0gcGFyYW07DQorICAgIH0NCitwcml2YXRlOg0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJbV9NYXJrTmFtZTsNCisNCisgICAgUGFyYW1UeXBlCQkJbV9QYXJhbVR5cGU7DQorDQorICAgIHZvaWQqCQkJCW1fcFBhcmFtOw0KK307DQorY2xhc3MgQ1BERl9Db250ZW50TWFya0RhdGEgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfQ29udGVudE1hcmtEYXRhKCkgeyB9DQorDQorICAgIENQREZfQ29udGVudE1hcmtEYXRhKGNvbnN0IENQREZfQ29udGVudE1hcmtEYXRhJiBzcmMpOw0KKw0KKyAgICBpbmxpbmUgaW50CQkJQ291bnRJdGVtcygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX01hcmtzLkdldFNpemUoKTsNCisgICAgfQ0KKw0KKyAgICBpbmxpbmUgQ1BERl9Db250ZW50TWFya0l0ZW0mCUdldEl0ZW0oaW50IGluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9NYXJrc1tpbmRleF07DQorICAgIH0NCisNCisgICAgaW50CQkJCQlHZXRNQ0lEKCkgY29uc3Q7DQorDQorICAgIHZvaWQJCQkJQWRkTWFyayhjb25zdCBDRlhfQnl0ZVN0cmluZyYgbmFtZSwgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCwgRlhfQk9PTCBiRGljdE5lZWRDbG9uZSk7DQorDQorICAgIHZvaWQJCQkJRGVsZXRlTGFzdE1hcmsoKTsNCitwcml2YXRlOg0KKw0KKyAgICBDRlhfT2JqZWN0QXJyYXk8Q1BERl9Db250ZW50TWFya0l0ZW0+CW1fTWFya3M7DQorfTsNCitjbGFzcyBDUERGX0NvbnRlbnRNYXJrIDogcHVibGljIENGWF9Db3VudFJlZjxDUERGX0NvbnRlbnRNYXJrRGF0YT4NCit7DQorcHVibGljOg0KKw0KKyAgICBpbnQJCQkJCUdldE1DSUQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0ID8gbV9wT2JqZWN0LT5HZXRNQ0lEKCkgOiAtMTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCUhhc01hcmsoRlhfQlNUUiBtYXJrKSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCQlMb29rdXBNYXJrKEZYX0JTVFIgbWFyaywgQ1BERl9EaWN0aW9uYXJ5KiYgcERpY3QpIGNvbnN0Ow0KK307DQorI2RlZmluZSBQREZQQUdFX1RFWFQJCTENCisjZGVmaW5lIFBERlBBR0VfUEFUSAkJMg0KKyNkZWZpbmUgUERGUEFHRV9JTUFHRQkJMw0KKyNkZWZpbmUgUERGUEFHRV9TSEFESU5HCQk0DQorI2RlZmluZSBQREZQQUdFX0ZPUk0JCTUNCisjZGVmaW5lIFBERlBBR0VfSU5MSU5FUwkJNg0KK2NsYXNzIENQREZfR3JhcGhpY1N0YXRlcyA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdm9pZAkJCQlDb3B5U3RhdGVzKGNvbnN0IENQREZfR3JhcGhpY1N0YXRlcyYgc3JjKTsNCisNCisgICAgdm9pZAkJCQlEZWZhdWx0U3RhdGVzKCk7DQorDQorICAgIENQREZfQ2xpcFBhdGgJCW1fQ2xpcFBhdGg7DQorDQorICAgIENQREZfR3JhcGhTdGF0ZQkJbV9HcmFwaFN0YXRlOw0KKw0KKyAgICBDUERGX0NvbG9yU3RhdGUJCW1fQ29sb3JTdGF0ZTsNCisNCisgICAgQ1BERl9UZXh0U3RhdGUJCW1fVGV4dFN0YXRlOw0KKw0KKyAgICBDUERGX0dlbmVyYWxTdGF0ZQltX0dlbmVyYWxTdGF0ZTsNCit9Ow0KK2NsYXNzIENQREZfUGFnZU9iamVjdCA6IHB1YmxpYyBDUERGX0dyYXBoaWNTdGF0ZXMNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ1BERl9QYWdlT2JqZWN0KiBDcmVhdGUoaW50IHR5cGUpOw0KKw0KKyAgICB2b2lkCQkJCVJlbGVhc2UoKTsNCisNCisgICAgQ1BERl9QYWdlT2JqZWN0KglDbG9uZSgpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJCUNvcHkoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwU3JjT2JqZWN0KTsNCisNCisgICAgdmlydHVhbCB2b2lkCQlUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KSA9IDA7DQorDQorDQorDQorICAgIHZvaWQJCQkJUmVtb3ZlQ2xpcFBhdGgoKTsNCisNCisgICAgdm9pZAkJCQlBcHBlbmRDbGlwUGF0aChDUERGX1BhdGggcGF0aCwgaW50IHR5cGUsIEZYX0JPT0wgYkF1dG9NZXJnZSk7DQorDQorICAgIHZvaWQJCQkJQ29weUNsaXBQYXRoKENQREZfUGFnZU9iamVjdCogcE9iaik7DQorDQorICAgIHZvaWQJCQkJVHJhbnNmb3JtQ2xpcFBhdGgoQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KTsNCisNCisgICAgdm9pZAkJCQlUcmFuc2Zvcm1HZW5lcmFsU3RhdGUoQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KTsNCisNCisNCisgICAgdm9pZAkJCQlTZXRDb2xvclN0YXRlKENQREZfQ29sb3JTdGF0ZSBzdGF0ZSkNCisgICAgew0KKyAgICAgICAgbV9Db2xvclN0YXRlID0gc3RhdGU7DQorICAgIH0NCisNCisgICAgRlhfUkVDVAkJCQlHZXRCQm94KGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgpIGNvbnN0Ow0KKw0KKyAgICBpbnQJCQkJCW1fVHlwZTsNCisNCisgICAgRlhfRkxPQVQJCQltX0xlZnQ7DQorDQorICAgIEZYX0ZMT0FUCQkJbV9SaWdodDsNCisNCisgICAgRlhfRkxPQVQJCQltX1RvcDsNCisNCisgICAgRlhfRkxPQVQJCQltX0JvdHRvbTsNCisNCisgICAgQ1BERl9Db250ZW50TWFyawltX0NvbnRlbnRNYXJrOw0KK3Byb3RlY3RlZDoNCisNCisgICAgdmlydHVhbCB2b2lkCQlDb3B5RGF0YShjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBTcmNPYmplY3QpIHt9DQorDQorICAgIHZvaWQJCQkJUmVjYWxjQkJveCgpOw0KKw0KKyAgICBDUERGX1BhZ2VPYmplY3QoKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIH5DUERGX1BhZ2VPYmplY3QoKSB7fQ0KK307DQorc3RydWN0IENQREZfVGV4dE9iamVjdEl0ZW0gOiBwdWJsaWMgQ0ZYX09iamVjdCB7DQorDQorICAgIEZYX0RXT1JECQkJbV9DaGFyQ29kZTsNCisNCisgICAgRlhfRkxPQVQJCQltX09yaWdpblg7DQorDQorICAgIEZYX0ZMT0FUCQkJbV9PcmlnaW5ZOw0KK307DQorY2xhc3MgQ1BERl9UZXh0T2JqZWN0IDogcHVibGljIENQREZfUGFnZU9iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfVGV4dE9iamVjdCgpOw0KKw0KKyAgICB2aXJ0dWFsIH5DUERGX1RleHRPYmplY3QoKTsNCisNCisgICAgaW50CQkJCQlDb3VudEl0ZW1zKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fbkNoYXJzOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJR2V0SXRlbUluZm8oaW50IGluZGV4LCBDUERGX1RleHRPYmplY3RJdGVtKiBwSW5mbykgY29uc3Q7DQorDQorICAgIGludAkJCQkJQ291bnRDaGFycygpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJCUdldENoYXJJbmZvKGludCBpbmRleCwgRlhfRFdPUkQmIGNoYXJjb2RlLCBGWF9GTE9BVCYga2VybmluZykgY29uc3Q7DQorICAgIHZvaWQJCQkJR2V0Q2hhckluZm8oaW50IGluZGV4LCBDUERGX1RleHRPYmplY3RJdGVtKiBwSW5mbykgY29uc3Q7DQorDQorICAgIHZvaWQJCQkJR2V0Q2hhclJlY3QoaW50IGluZGV4LCBDRlhfRmxvYXRSZWN0JiByZWN0KSBjb25zdDsNCisNCisNCisgICAgRlhfRkxPQVQJCQlHZXRDaGFyV2lkdGgoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0Ow0KKyAgICBGWF9GTE9BVAkJCUdldFNwYWNlQ2hhcldpZHRoKCkgY29uc3Q7DQorDQorICAgIEZYX0ZMT0FUCQkJR2V0UG9zWCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1Bvc1g7DQorICAgIH0NCisNCisgICAgRlhfRkxPQVQJCQlHZXRQb3NZKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fUG9zWTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCUdldFRleHRNYXRyaXgoQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCkgY29uc3Q7DQorDQorICAgIENQREZfRm9udCoJCQlHZXRGb250KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fVGV4dFN0YXRlLkdldEZvbnQoKTsNCisgICAgfQ0KKw0KKyAgICBGWF9GTE9BVAkJCUdldEZvbnRTaXplKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlTZXRFbXB0eSgpOw0KKw0KKyAgICB2b2lkCQkJCVNldFRleHQoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHRleHQpOw0KKw0KKyAgICB2b2lkCQkJCVNldFRleHQoQ0ZYX0J5dGVTdHJpbmcqIHBTdHJzLCBGWF9GTE9BVCogcEtlcm5pbmcsIGludCBuU2Vncyk7DQorDQorICAgIHZvaWQJCQkJU2V0VGV4dChpbnQgbkNoYXJzLCBGWF9EV09SRCogcENoYXJDb2RlcywgRlhfRkxPQVQqIHBLZXJuaW5ncyk7DQorDQorICAgIHZvaWQJCQkJU2V0UG9zaXRpb24oRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSk7DQorDQorICAgIHZvaWQJCQkJU2V0VGV4dFN0YXRlKENQREZfVGV4dFN0YXRlIFRleHRTdGF0ZSk7DQorICAgIHZpcnR1YWwgdm9pZAkJVHJhbnNmb3JtKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCk7DQorDQorICAgIHZvaWQJCQkJQ2FsY0NoYXJQb3MoRlhfRkxPQVQqIHBQb3NBcnJheSkgY29uc3Q7DQorDQorDQorDQorICAgIHZvaWQJCQkJU2V0RGF0YShpbnQgbkNoYXJzLCBGWF9EV09SRCogcENoYXJDb2RlcywgRlhfRkxPQVQqIHBDaGFyUG9zLCBGWF9GTE9BVCB4LCBGWF9GTE9BVCB5KTsNCisNCisgICAgdm9pZAkJCQlHZXREYXRhKGludCYgbkNoYXJzLCBGWF9EV09SRComIHBDaGFyQ29kZXMsIEZYX0ZMT0FUKiYgcENoYXJQb3MpDQorICAgIHsNCisgICAgICAgIG5DaGFycyA9IG1fbkNoYXJzOw0KKyAgICAgICAgcENoYXJDb2RlcyA9IG1fcENoYXJDb2RlczsNCisgICAgICAgIHBDaGFyUG9zID0gbV9wQ2hhclBvczsNCisgICAgfQ0KKw0KKw0KKyAgICB2b2lkCQkJCVJlY2FsY1Bvc2l0aW9uRGF0YSgpDQorICAgIHsNCisgICAgICAgIENhbGNQb3NpdGlvbkRhdGEoTlVMTCwgTlVMTCwgMSk7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorICAgIHZpcnR1YWwgdm9pZAkJQ29weURhdGEoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwU3JjT2JqZWN0KTsNCisNCisgICAgRlhfRkxPQVQJCQltX1Bvc1g7DQorDQorICAgIEZYX0ZMT0FUCQkJbV9Qb3NZOw0KKw0KKyAgICBpbnQJCQkJCW1fbkNoYXJzOw0KKw0KKyAgICBGWF9EV09SRCoJCQltX3BDaGFyQ29kZXM7DQorDQorICAgIEZYX0ZMT0FUKgkJbV9wQ2hhclBvczsNCisNCisgICAgdm9pZAkJCQlTZXRTZWdtZW50cyhjb25zdCBDRlhfQnl0ZVN0cmluZyogcFN0cnMsIEZYX0ZMT0FUKiBwS2VybmluZywgaW50IG5TZWdzKTsNCisNCisgICAgdm9pZAkJCQlDYWxjUG9zaXRpb25EYXRhKEZYX0ZMT0FUKiBwVGV4dEFkdmFuY2VYLCBGWF9GTE9BVCogcFRleHRBZHZhbmNlWSwgRlhfRkxPQVQgaG9yel9zY2FsZSwgaW50IGxldmVsID0gMCk7DQorICAgIGZyaWVuZCBjbGFzcwkJQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOw0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfUmVuZGVyU3RhdHVzOw0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfUXVpY2tEcmF3ZXI7DQorICAgIGZyaWVuZCBjbGFzcwkJQ1BERl9UZXh0UmVuZGVyZXI7DQorICAgIGZyaWVuZCBjbGFzcwkJQ1RleHRQYWdlOw0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfQ29udGVudEdlbmVyYXRvcjsNCit9Ow0KK2NsYXNzIENQREZfUGF0aE9iamVjdCA6IHB1YmxpYyBDUERGX1BhZ2VPYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1BhdGhPYmplY3QoKQ0KKyAgICB7DQorICAgICAgICBtX1R5cGUgPSBQREZQQUdFX1BBVEg7DQorICAgIH0NCisNCisgICAgdmlydHVhbCB+Q1BERl9QYXRoT2JqZWN0KCkge30NCisgICAgdmlydHVhbCB2b2lkCQlUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCYgbWF4dHJpeCk7DQorDQorICAgIHZvaWQJCQkJU2V0R3JhcGhTdGF0ZShDUERGX0dyYXBoU3RhdGUgR3JhcGhTdGF0ZSk7DQorDQorICAgIENQREZfUGF0aAkJCW1fUGF0aDsNCisNCisgICAgaW50CQkJCQltX0ZpbGxUeXBlOw0KKw0KKyAgICBGWF9CT09MCQkJCW1fYlN0cm9rZTsNCisNCisgICAgQ0ZYX0FmZmluZU1hdHJpeAltX01hdHJpeDsNCisNCisNCisgICAgdm9pZAkJCQlDYWxjQm91bmRpbmdCb3goKTsNCitwcm90ZWN0ZWQ6DQorICAgIHZpcnR1YWwgdm9pZAkJQ29weURhdGEoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwU3JjT2JqZXQpOw0KK307DQorY2xhc3MgQ1BERl9JbWFnZU9iamVjdCA6IHB1YmxpYyBDUERGX1BhZ2VPYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0ltYWdlT2JqZWN0KCk7DQorDQorICAgIHZpcnR1YWwgfkNQREZfSW1hZ2VPYmplY3QoKTsNCisgICAgdmlydHVhbCB2b2lkCQlUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KTsNCisNCisgICAgQ1BERl9JbWFnZSoJCQltX3BJbWFnZTsNCisNCisgICAgQ0ZYX0FmZmluZU1hdHJpeAltX01hdHJpeDsNCisNCisgICAgdm9pZAkJCQlDYWxjQm91bmRpbmdCb3goKTsNCitwcml2YXRlOg0KKyAgICB2aXJ0dWFsIHZvaWQJCUNvcHlEYXRhKGNvbnN0IENQREZfUGFnZU9iamVjdCogcFNyY09iamV0KTsNCit9Ow0KK2NsYXNzIENQREZfU2hhZGluZ09iamVjdCA6IHB1YmxpYyBDUERGX1BhZ2VPYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1NoYWRpbmdPYmplY3QoKTsNCisNCisgICAgdmlydHVhbCB+Q1BERl9TaGFkaW5nT2JqZWN0KCk7DQorDQorICAgIENQREZfU2hhZGluZ1BhdHRlcm4qCW1fcFNoYWRpbmc7DQorDQorICAgIENGWF9BZmZpbmVNYXRyaXgJbV9NYXRyaXg7DQorDQorICAgIENQREZfUGFnZSoJCQltX3BQYWdlOw0KKyAgICB2aXJ0dWFsIHZvaWQJCVRyYW5zZm9ybShjb25zdCBDRlhfQWZmaW5lTWF0cml4JiBtYXRyaXgpOw0KKw0KKyAgICB2b2lkCQkJCUNhbGNCb3VuZGluZ0JveCgpOw0KK3Byb3RlY3RlZDoNCisgICAgdmlydHVhbCB2b2lkCQlDb3B5RGF0YShjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBTcmNPYmpldCk7DQorfTsNCitjbGFzcyBDUERGX0Zvcm1PYmplY3QgOiBwdWJsaWMgQ1BERl9QYWdlT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9Gb3JtT2JqZWN0KCkNCisgICAgew0KKyAgICAgICAgbV9UeXBlID0gUERGUEFHRV9GT1JNOw0KKyAgICAgICAgbV9wRm9ybSA9IE5VTEw7DQorICAgIH0NCisNCisgICAgdmlydHVhbCB+Q1BERl9Gb3JtT2JqZWN0KCk7DQorICAgIHZpcnR1YWwgdm9pZAkJVHJhbnNmb3JtKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCk7DQorDQorICAgIENQREZfRm9ybSoJCQltX3BGb3JtOw0KKw0KKyAgICBDRlhfQWZmaW5lTWF0cml4CW1fRm9ybU1hdHJpeDsNCisNCisgICAgdm9pZAkJCQlDYWxjQm91bmRpbmdCb3goKTsNCitwcm90ZWN0ZWQ6DQorICAgIHZpcnR1YWwgdm9pZAkJQ29weURhdGEoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwU3JjT2JqZXQpOw0KK307DQorY2xhc3MgQ1BERl9JbmxpbmVJbWFnZXMgOiBwdWJsaWMgQ1BERl9QYWdlT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9JbmxpbmVJbWFnZXMoKTsNCisNCisgICAgdmlydHVhbCB+Q1BERl9JbmxpbmVJbWFnZXMoKTsNCisNCisgICAgQ1BERl9TdHJlYW0qCQltX3BTdHJlYW07DQorDQorICAgIENGWF9ESUJpdG1hcCoJCW1fcEJpdG1hcDsNCisNCisgICAgQ0ZYX0FycmF5VGVtcGxhdGU8Q0ZYX0FmZmluZU1hdHJpeD4JbV9NYXRyaWNlczsNCisNCisgICAgdm9pZAkJCQlBZGRNYXRyaXgoQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KTsNCitwcm90ZWN0ZWQ6DQorICAgIHZpcnR1YWwgdm9pZAkJVHJhbnNmb3JtKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCkge30NCisgICAgdmlydHVhbCB2b2lkCQlDb3B5RGF0YShjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBTcmNPYmpldCkge30NCit9Ow0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFyc2VyLmggYi9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNDE1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhcnNlci5oCkBAIC0wLDAgKzEsMTE0OSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlBERl9QQVJTRVJfDQorI2RlZmluZSBfRlBERl9QQVJTRVJfDQorI2lmbmRlZiBfRlhfQkFTSUNfSF8NCisjaW5jbHVkZSAiLi4vZnhjcnQvZnhfZXh0LmgiDQorI2VuZGlmDQorI2lmbmRlZiBfRlBERl9PQkpFQ1RTXw0KKyNpbmNsdWRlICJmcGRmX29iamVjdHMuaCINCisjZW5kaWYNCitjbGFzcyBDUERGX0RvY3VtZW50Ow0KK2NsYXNzIElQREZfRG9jUGFyc2VyOw0KK2NsYXNzIENQREZfUGFyc2VyOw0KK2NsYXNzIENQREZfU2VjdXJpdHlIYW5kbGVyOw0KK2NsYXNzIENQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXI7DQorY2xhc3MgQ1BERl9DcnlwdG9IYW5kbGVyOw0KK2NsYXNzIENQREZfT2JqZWN0Ow0KK2NsYXNzIElGWF9GaWxlUmVhZDsNCitjbGFzcyBDRkRGX0RvY3VtZW50Ow0KK2NsYXNzIENGREZfUGFyc2VyOw0KK2NsYXNzIENGWF9Gb250Ow0KK2NsYXNzIENGWF9BZmZpbmVNYXRyaXg7DQorY2xhc3MgQ0ZYX0Zsb2F0UmVjdDsNCitjbGFzcyBDUERGX1BvaW50Ow0KK2NsYXNzIENQREZfRG9jUGFnZURhdGE7DQorY2xhc3MgQ1BERl9Eb2NSZW5kZXJEYXRhOw0KK2NsYXNzIENQREZfTW9kdWxlTWdyOw0KK2NsYXNzIENGWF9ESUJTb3VyY2U7DQorY2xhc3MgQ1BERl9Gb250Ow0KK2NsYXNzIENQREZfSW1hZ2U7DQorY2xhc3MgQ1BERl9Db2xvclNwYWNlOw0KK2NsYXNzIENQREZfUGF0dGVybjsNCitjbGFzcyBDUERGX0ZvbnRFbmNvZGluZzsNCitjbGFzcyBDUERGX0ljY1Byb2ZpbGU7DQorY2xhc3MgQ0ZYX1ByaXZhdGVEYXRhOw0KKyNkZWZpbmUgRlBERlBFUk1fUFJJTlQJCQkweDAwMDQNCisjZGVmaW5lIEZQREZQRVJNX01PRElGWQkJCTB4MDAwOA0KKyNkZWZpbmUgRlBERlBFUk1fRVhUUkFDVAkJMHgwMDEwDQorI2RlZmluZSBGUERGUEVSTV9BTk5PVF9GT1JNCQkweDAwMjANCisjZGVmaW5lIEZQREZQRVJNX0ZJTExfRk9STQkJMHgwMTAwDQorI2RlZmluZSBGUERGUEVSTV9FWFRSQUNUX0FDQ0VTUwkweDAyMDANCisjZGVmaW5lIEZQREZQRVJNX0FTU0VNQkxFCQkweDA0MDANCisjZGVmaW5lIEZQREZQRVJNX1BSSU5UX0hJR0gJCTB4MDgwMA0KKyNkZWZpbmUgRlBERl9QQUdFX01BWF9OVU0JCTB4RkZGRkYNCitjbGFzcyBJUERGX0VudW1QYWdlSGFuZGxlcg0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTCBFbnVtUGFnZShDUERGX0RpY3Rpb25hcnkqIHBQYWdlRGljdCkgPSAwOw0KK307DQorY2xhc3MgQ1BERl9Eb2N1bWVudCA6IHB1YmxpYyBDRlhfUHJpdmF0ZURhdGEsIHB1YmxpYyBDUERGX0luZGlyZWN0T2JqZWN0cw0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfRG9jdW1lbnQoSVBERl9Eb2NQYXJzZXIqIHBQYXJzZXIpOw0KKw0KKyAgICBDUERGX0RvY3VtZW50KCk7DQorDQorICAgIH5DUERGX0RvY3VtZW50KCk7DQorDQorICAgIElQREZfRG9jUGFyc2VyKgkJCUdldFBhcnNlcigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BQYXJzZXI7DQorICAgIH0NCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJR2V0Um9vdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BSb290RGljdDsNCisgICAgfQ0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQlHZXRJbmZvKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEluZm9EaWN0Ow0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCUdldElEKENGWF9CeXRlU3RyaW5nJiBpZDEsIENGWF9CeXRlU3RyaW5nJiBpZDIpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlkMSA9IG1fSUQxOw0KKyAgICAgICAgaWQyID0gbV9JRDI7DQorICAgIH0NCisNCisgICAgaW50CQkJCQkJR2V0UGFnZUNvdW50KCkgY29uc3Q7DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJCUdldFBhZ2UoaW50IGlQYWdlKTsNCisNCisgICAgaW50CQkJCQkJR2V0UGFnZUluZGV4KEZYX0RXT1JEIG9iam51bSk7DQorDQorICAgIHZvaWQJCQkJCUVudW1QYWdlcyhJUERGX0VudW1QYWdlSGFuZGxlciogcEhhbmRsZXIpOw0KKw0KKyAgICBGWF9EV09SRAkJCQlHZXRVc2VyUGVybWlzc2lvbnMoRlhfQk9PTCBiQ2hlY2tSZXZpc2lvbiA9IEZBTFNFKSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCQkJSXNPd25lcigpIGNvbnN0Ow0KKw0KKw0KKw0KKyAgICBDUERGX0RvY1BhZ2VEYXRhKgkJR2V0UGFnZURhdGEoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0VmFsaWRhdGVQYWdlRGF0YSgpOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCUNsZWFyUGFnZURhdGEoKTsNCisNCisgICAgdm9pZAkJCQkJUmVtb3ZlQ29sb3JTcGFjZUZyb21QYWdlRGF0YShDUERGX09iamVjdCogcE9iamVjdCk7DQorDQorDQorICAgIENQREZfRG9jUmVuZGVyRGF0YSoJCUdldFJlbmRlckRhdGEoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0VmFsaWRhdGVSZW5kZXJEYXRhKCk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQkJQ2xlYXJSZW5kZXJEYXRhKCk7DQorDQorICAgIHZvaWQJCQkJCUNsZWFyUmVuZGVyRm9udCgpOw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCQlJc0Zvcm1TdHJlYW0oRlhfRFdPUkQgb2JqbnVtLCBGWF9CT09MJiBiRm9ybSkgY29uc3Q7DQorDQorDQorDQorDQorICAgIENQREZfRm9udCoJCQkJTG9hZEZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9udERpY3QpOw0KKw0KKyAgICBDUERGX0ZvbnQqCQkJCUZpbmRGb250KENQREZfRGljdGlvbmFyeSogcEZvbnREaWN0KTsNCisNCisgICAgQ1BERl9Db2xvclNwYWNlKgkJTG9hZENvbG9yU3BhY2UoQ1BERl9PYmplY3QqIHBDU09iaiwgQ1BERl9EaWN0aW9uYXJ5KiBwUmVzb3VyY2VzID0gTlVMTCk7DQorDQorICAgIENQREZfUGF0dGVybioJCQlMb2FkUGF0dGVybihDUERGX09iamVjdCogcE9iaiwgRlhfQk9PTCBiU2hhZGluZywgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogbWF0cml4ID0gTlVMTCk7DQorDQorICAgIENQREZfSW1hZ2UqCQkJCUxvYWRJbWFnZUYoQ1BERl9PYmplY3QqIHBPYmopOw0KKw0KKyAgICBDUERGX1N0cmVhbUFjYyoJCQlMb2FkRm9udEZpbGUoQ1BERl9TdHJlYW0qIHBTdHJlYW0pOw0KKw0KKyAgICBDUERGX0ljY1Byb2ZpbGUqCQlMb2FkSWNjUHJvZmlsZShDUERGX1N0cmVhbSogcFN0cmVhbSwgaW50IG5Db21wb25lbnRzKTsNCisNCisjaWYgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9XSU5ET1dTXw0KKw0KKyAgICBDUERGX0ZvbnQqCQkJCUFkZFdpbmRvd3NGb250KExPR0ZPTlRBKiBwTG9nRm9udCwgRlhfQk9PTCBiVmVydCwgRlhfQk9PTCBiVHJhbnNsYXRlTmFtZSA9IEZBTFNFKTsNCisgICAgQ1BERl9Gb250KgkJCQlBZGRXaW5kb3dzRm9udChMT0dGT05UVyogcExvZ0ZvbnQsIEZYX0JPT0wgYlZlcnQsIEZYX0JPT0wgYlRyYW5zbGF0ZU5hbWUgPSBGQUxTRSk7DQorI2VuZGlmDQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgIENQREZfRm9udCogICAgICAgICAgICAgIEFkZE1hY0ZvbnQoQ1RGb250UmVmIHBGb250LCBGWF9CT09MIGJWZXJ0LCBGWF9CT09MIGJUcmFuc2xhdGVOYW1lID0gRkFMU0UpOw0KKyNlbmRpZg0KKw0KKyAgICBDUERGX0ZvbnQqCQkJCUFkZFN0YW5kYXJkRm9udChjb25zdCBGWF9DSEFSKiBmb250LCBDUERGX0ZvbnRFbmNvZGluZyogcEVuY29kaW5nKTsNCisNCisNCisgICAgQ1BERl9Gb250KgkJCQlBZGRGb250KENGWF9Gb250KiBwRm9udCwgaW50IGNoYXJzZXQsIEZYX0JPT0wgYlZlcnQpOw0KKw0KKyAgICB2b2lkCQkJCQlDcmVhdGVOZXdEb2MoKTsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJQ3JlYXRlTmV3UGFnZShpbnQgaVBhZ2UpOw0KKw0KKyAgICB2b2lkCQkJCQlEZWxldGVQYWdlKGludCBpUGFnZSk7DQorDQorICAgIHZvaWQJCQkJCUxvYWREb2MoKTsNCisgICAgdm9pZAkJCQkJTG9hZEFzeW5Eb2MoQ1BERl9EaWN0aW9uYXJ5ICpwTGluZWFyaXplZCk7DQorICAgIHZvaWQJCQkJCUxvYWRQYWdlcygpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wUm9vdERpY3Q7DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJCW1fcEluZm9EaWN0Ow0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCW1fSUQxOw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCW1fSUQyOw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JMaW5lYXJpemVkOw0KKw0KKyAgICBGWF9EV09SRAkJCQltX2R3Rmlyc3RQYWdlTm87DQorDQorICAgIEZYX0RXT1JECQkJCW1fZHdGaXJzdFBhZ2VPYmpOdW07DQorDQorICAgIENGWF9EV29yZEFycmF5CQkJbV9QYWdlTGlzdDsNCisNCisgICAgaW50CQkJCQkJX0dldFBhZ2VDb3VudCgpIGNvbnN0Ow0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQlfRmluZFBERlBhZ2UoQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZXMsIGludCBpUGFnZSwgaW50IG5QYWdlc1RvR28sIGludCBsZXZlbCk7DQorICAgIGludAkJCQkJCV9GaW5kUGFnZUluZGV4KENQREZfRGljdGlvbmFyeSogcE5vZGUsIEZYX0RXT1JEJiBza2lwX2NvdW50LCBGWF9EV09SRCBvYmpudW0sIGludCYgaW5kZXgsIGludCBsZXZlbCA9IDApOw0KKyAgICBGWF9CT09MCQkJCQlJc0NvbnRlbnRVc2VkRWxzZXdoZXJlKEZYX0RXT1JEIG9iam51bSwgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZURpY3QpOw0KKyAgICBGWF9CT09MCQkJCQlDaGVja09DR1Zpc2libGUoQ1BERl9EaWN0aW9uYXJ5KiBwT0NHLCBGWF9CT09MIGJQcmludGluZyk7DQorICAgIENQREZfRG9jUGFnZURhdGEqCQlHZXRWYWxpZGF0ZVBhZ2VEYXRhKCk7DQorICAgIENQREZfRG9jUmVuZGVyRGF0YSoJCUdldFZhbGlkYXRlUmVuZGVyRGF0YSgpOw0KKyAgICBmcmllbmQgY2xhc3MJCQlDUERGX0NyZWF0b3I7DQorICAgIGZyaWVuZCBjbGFzcwkJCUNQREZfUGFyc2VyOw0KKyAgICBmcmllbmQgY2xhc3MJCQlDUERGX0RhdGFBdmFpbDsNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9PQ0NvbnRleHQ7DQorDQorDQorDQorICAgIENQREZfRG9jUGFnZURhdGEqCQltX3BEb2NQYWdlOw0KKw0KKyAgICBDUERGX0RvY1JlbmRlckRhdGEqCQltX3BEb2NSZW5kZXI7DQorDQorfTsNCisNCisjZGVmaW5lIFBERldPUkRfRU9GCQkJMA0KKyNkZWZpbmUgUERGV09SRF9OVU1CRVIJCTENCisjZGVmaW5lIFBERldPUkRfVEVYVAkJMg0KKyNkZWZpbmUgUERGV09SRF9ERUxJTUlURVIJMw0KKyNkZWZpbmUgUERGV09SRF9OQU1FCQk0DQorY2xhc3MgQ1BERl9TaW1wbGVQYXJzZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfU2ltcGxlUGFyc2VyKEZYX0xQQ0JZVEUgcERhdGEsIEZYX0RXT1JEIGR3U2l6ZSk7DQorDQorICAgIENQREZfU2ltcGxlUGFyc2VyKEZYX0JTVFIgc3RyKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmdDCQlHZXRXb3JkKCk7DQorDQorICAgIEZYX0JPT0wJCQkJU2VhcmNoVG9rZW4oRlhfQlNUUiB0b2tlbik7DQorDQorICAgIEZYX0JPT0wJCQkJU2tpcFdvcmQoRlhfQlNUUiB0b2tlbik7DQorDQorICAgIEZYX0JPT0wJCQkJRmluZFRhZ1BhaXIoRlhfQlNUUiBzdGFydF90b2tlbiwgRlhfQlNUUiBlbmRfdG9rZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQmIHN0YXJ0X3BvcywgRlhfRFdPUkQmIGVuZF9wb3MpOw0KKw0KKyAgICBGWF9CT09MCQkJCUZpbmRUYWdQYXJhbShGWF9CU1RSIHRva2VuLCBpbnQgblBhcmFtcyk7DQorDQorICAgIEZYX0RXT1JECQkJR2V0UG9zKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fZHdDdXJQb3M7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlTZXRQb3MoRlhfRFdPUkQgcG9zKQ0KKyAgICB7DQorICAgICAgICBBU1NFUlQocG9zIDw9IG1fZHdTaXplKTsNCisgICAgICAgIG1fZHdDdXJQb3MgPSBwb3M7DQorICAgIH0NCitwcml2YXRlOg0KKw0KKyAgICB2b2lkCQkJCVBhcnNlV29yZChGWF9MUENCWVRFJiBwU3RhcnQsIEZYX0RXT1JEJiBkd1NpemUsIGludCYgdHlwZSk7DQorDQorICAgIEZYX0xQQ0JZVEUJCQltX3BEYXRhOw0KKw0KKyAgICBGWF9EV09SRAkJCW1fZHdTaXplOw0KKw0KKyAgICBGWF9EV09SRAkJCW1fZHdDdXJQb3M7DQorfTsNCitjbGFzcyBDUERGX1N5bnRheFBhcnNlciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9TeW50YXhQYXJzZXIoKTsNCisNCisgICAgfkNQREZfU3ludGF4UGFyc2VyKCk7DQorDQorICAgIHZvaWQJCQkJSW5pdFBhcnNlcihJRlhfRmlsZVJlYWQqIHBGaWxlQWNjZXNzLCBGWF9EV09SRCBIZWFkZXJPZmZzZXQpOw0KKw0KKyAgICBGWF9GSUxFU0laRQkJCVNhdmVQb3MoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9Qb3M7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlSZXN0b3JlUG9zKEZYX0ZJTEVTSVpFIHBvcykNCisgICAgew0KKyAgICAgICAgbV9Qb3MgPSBwb3M7DQorICAgIH0NCisNCisgICAgQ1BERl9PYmplY3QqCQlHZXRPYmplY3QoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpMaXN0LCBGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIGdlbm51bSwgaW50IGxldmVsLCBzdHJ1Y3QgUEFSU0VfQ09OVEVYVCogcENvbnRleHQgPSBOVUxMLCBGWF9CT09MIGJEZWNyeXB0ID0gVFJVRSk7DQorDQorDQorICAgIENQREZfT2JqZWN0KgkJR2V0T2JqZWN0QnlTdHJpY3QoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpMaXN0LCBGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIGdlbm51bSwgaW50IGxldmVsLCBzdHJ1Y3QgUEFSU0VfQ09OVEVYVCogcENvbnRleHQgPSBOVUxMKTsNCisNCisgICAgaW50CQkJCQlHZXREaXJlY3ROdW0oKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCUdldFN0cmluZyhGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIGdlbm51bSk7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXROYW1lKCk7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXRLZXl3b3JkKCk7DQorDQorICAgIHZvaWQJCQkJR2V0QmluYXJ5KEZYX0JZVEUqIGJ1ZmZlciwgRlhfRFdPUkQgc2l6ZSk7DQorDQorICAgIHZvaWQJCQkJVG9OZXh0TGluZSgpOw0KKw0KKyAgICB2b2lkCQkJCVRvTmV4dFdvcmQoKTsNCisNCisgICAgRlhfQk9PTAkJCQlTZWFyY2hXb3JkKEZYX0JTVFIgd29yZCwgRlhfQk9PTCBiV2hvbGVXb3JkLCBGWF9CT09MIGJGb3J3YXJkLCBGWF9GSUxFU0laRSBsaW1pdCk7DQorDQorICAgIGludAkJCQkJU2VhcmNoTXVsdGlXb3JkKEZYX0JTVFIgd29yZHMsIEZYX0JPT0wgYldob2xlV29yZCwgRlhfRklMRVNJWkUgbGltaXQpOw0KKw0KKyAgICBGWF9GSUxFU0laRQkJCUZpbmRUYWcoRlhfQlNUUiB0YWcsIEZYX0ZJTEVTSVpFIGxpbWl0KTsNCisNCisgICAgdm9pZAkJCQlTZXRFbmNyeXB0KENQREZfQ3J5cHRvSGFuZGxlciogcENyeXB0b0hhbmRsZXIpDQorICAgIHsNCisgICAgICAgIG1fcENyeXB0b0hhbmRsZXIgPSBwQ3J5cHRvSGFuZGxlcjsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCUlzRW5jcnlwdGVkKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcENyeXB0b0hhbmRsZXIgIT0gTlVMTDsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCUdldENoYXJBdChGWF9GSUxFU0laRSBwb3MsIEZYX0JZVEUmIGNoKTsNCisNCisgICAgRlhfQk9PTAkJCQlSZWFkQmxvY2soRlhfQllURSogcEJ1ZiwgRlhfRFdPUkQgc2l6ZSk7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXROZXh0V29yZChGWF9CT09MJiBiSXNOdW1iZXIpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJCUdldE5leHRDaGFyKEZYX0JZVEUmIGNoKTsNCisNCisgICAgRlhfQk9PTAkJCQlHZXRDaGFyQXRCYWNrd2FyZChGWF9GSUxFU0laRSBwb3MsIEZYX0JZVEUmIGNoKTsNCisNCisgICAgdm9pZAkJCQlHZXROZXh0V29yZCgpOw0KKw0KKyAgICBGWF9CT09MCQkJCUlzV2hvbGVXb3JkKEZYX0ZJTEVTSVpFIHN0YXJ0cG9zLCBGWF9GSUxFU0laRSBsaW1pdCwgRlhfTFBDQllURSB0YWcsIEZYX0RXT1JEIHRhZ2xlbik7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQlSZWFkU3RyaW5nKCk7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQlSZWFkSGV4U3RyaW5nKCk7DQorDQorICAgIENQREZfU3RyZWFtKgkJUmVhZFN0cmVhbShDUERGX0RpY3Rpb25hcnkqIHBEaWN0LCBQQVJTRV9DT05URVhUKiBwQ29udGV4dCwgRlhfRFdPUkQgb2JqbnVtLCBGWF9EV09SRCBnZW5udW0pOw0KKw0KKyAgICBGWF9GSUxFU0laRQkJCW1fUG9zOw0KKw0KKyAgICBGWF9CT09MCQkJCW1fYkZpbGVTdHJlYW07DQorDQorICAgIGludAkJCQkJbV9NZXRhZGF0YU9iam51bTsNCisNCisgICAgSUZYX0ZpbGVSZWFkKgkJbV9wRmlsZUFjY2VzczsNCisNCisgICAgRlhfRFdPUkQJCQltX0hlYWRlck9mZnNldDsNCisNCisgICAgRlhfRklMRVNJWkUJCQltX0ZpbGVMZW47DQorDQorICAgIEZYX0JZVEUqCQkJbV9wRmlsZUJ1ZjsNCisNCisgICAgRlhfRFdPUkQJCQltX0J1ZlNpemU7DQorDQorICAgIEZYX0ZJTEVTSVpFCQkJbV9CdWZPZmZzZXQ7DQorDQorICAgIENQREZfQ3J5cHRvSGFuZGxlcioJbV9wQ3J5cHRvSGFuZGxlcjsNCisNCisgICAgRlhfQllURQkJCQltX1dvcmRCdWZmZXJbMjU3XTsNCisNCisgICAgRlhfRFdPUkQJCQltX1dvcmRTaXplOw0KKw0KKyAgICBGWF9CT09MCQkJCW1fYklzTnVtYmVyOw0KKw0KKyAgICBGWF9GSUxFU0laRQkJCW1fZHdXb3JkUG9zOw0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfUGFyc2VyOw0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfRGF0YUF2YWlsOw0KK307DQorDQorI2RlZmluZSBQREZQQVJTRV9UWVBFT05MWQkxDQorI2RlZmluZSBQREZQQVJTRV9OT1NUUkVBTQkyDQorc3RydWN0IFBBUlNFX0NPTlRFWFQgew0KKw0KKyAgICBGWF9CT09MCQltX0ZsYWdzOw0KKw0KKyAgICBGWF9GSUxFU0laRQltX0RpY3RTdGFydDsNCisNCisgICAgRlhfRklMRVNJWkUJbV9EaWN0RW5kOw0KKw0KKyAgICBGWF9GSUxFU0laRQltX0RhdGFTdGFydDsNCisNCisgICAgRlhfRklMRVNJWkUJbV9EYXRhRW5kOw0KK307DQorY2xhc3MgSVBERl9Eb2NQYXJzZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgRlhfRFdPUkQJR2V0Um9vdE9iak51bSgpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9EV09SRAlHZXRJbmZvT2JqTnVtKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQREZfT2JqZWN0KglQYXJzZUluZGlyZWN0T2JqZWN0KENQREZfSW5kaXJlY3RPYmplY3RzKiBwT2JqTGlzdCwgRlhfRFdPUkQgb2JqbnVtLCBQQVJTRV9DT05URVhUKiBwQ29udGV4dCA9IE5VTEwpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9EV09SRAlHZXRMYXN0T2JqTnVtKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQREZfQXJyYXkqCUdldElEQXJyYXkoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgQ1BERl9EaWN0aW9uYXJ5KglHZXRFbmNyeXB0RGljdCgpID0gMDsNCisNCisgICAgRlhfQk9PTAkJCQlJc0VuY3J5cHRlZCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRFbmNyeXB0RGljdCgpICE9IE5VTEw7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBGWF9EV09SRAlHZXRQZXJtaXNzaW9ucyhGWF9CT09MIGJDaGVja1JldmlzaW9uID0gRkFMU0UpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlJc093bmVyKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUlzRm9ybVN0cmVhbShGWF9EV09SRCBvYmpudW0sIEZYX0JPT0wmIGJGb3JtKSA9IDA7DQorfTsNCisNCisjZGVmaW5lIFBERlBBUlNFX0VSUk9SX1NVQ0NFU1MJCTANCisjZGVmaW5lIFBERlBBUlNFX0VSUk9SX0ZJTEUJCQkxDQorI2RlZmluZSBQREZQQVJTRV9FUlJPUl9GT1JNQVQJCTINCisjZGVmaW5lIFBERlBBUlNFX0VSUk9SX1BBU1NXT1JECQkzDQorI2RlZmluZSBQREZQQVJTRV9FUlJPUl9IQU5ETEVSCQk0DQorI2RlZmluZSBQREZQQVJTRV9FUlJPUl9DRVJUCQkJNQ0KK2NsYXNzIENQREZfUGFyc2VyIDogcHVibGljIElQREZfRG9jUGFyc2VyDQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9QYXJzZXIoKTsNCisNCisgICAgfkNQREZfUGFyc2VyKCk7DQorDQorICAgIEZYX0RXT1JECQkJU3RhcnRQYXJzZShGWF9MUENTVFIgZmlsZW5hbWUsIEZYX0JPT0wgYlJlUGFyc2UgPSBGQUxTRSk7DQorDQorICAgIEZYX0RXT1JECQkJU3RhcnRQYXJzZShGWF9MUENXU1RSIGZpbGVuYW1lLCBGWF9CT09MIGJSZVBhcnNlID0gRkFMU0UpOw0KKw0KKyAgICBGWF9EV09SRAkJCVN0YXJ0UGFyc2UoSUZYX0ZpbGVSZWFkKiBwRmlsZSwgRlhfQk9PTCBiUmVQYXJzZSA9IEZBTFNFLCBGWF9CT09MIGJPd25GaWxlUmVhZCA9IFRSVUUpOw0KKw0KKyAgICB2b2lkCQkJCUNsb3NlUGFyc2VyKEZYX0JPT0wgYlJlUGFyc2UgPSBGQUxTRSk7DQorDQorICAgIHZpcnR1YWwgRlhfRFdPUkQJR2V0UGVybWlzc2lvbnMoRlhfQk9PTCBiQ2hlY2tSZXZpc2lvbiA9IEZBTFNFKTsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlJc093bmVyKCk7DQorDQorICAgIHZvaWQJCQkJU2V0UGFzc3dvcmQoY29uc3QgRlhfQ0hBUiogcGFzc3dvcmQpDQorICAgIHsNCisgICAgICAgIG1fUGFzc3dvcmQgPSBwYXNzd29yZDsNCisgICAgfQ0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJR2V0UGFzc3dvcmQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9QYXNzd29yZDsNCisgICAgfQ0KKw0KKyAgICBDUERGX1NlY3VyaXR5SGFuZGxlciogR2V0U2VjdXJpdHlIYW5kbGVyKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFNlY3VyaXR5SGFuZGxlcjsNCisgICAgfQ0KKw0KKyAgICBDUERGX0NyeXB0b0hhbmRsZXIqCUdldENyeXB0b0hhbmRsZXIoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9TeW50YXgubV9wQ3J5cHRvSGFuZGxlcjsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCVNldFNlY3VyaXR5SGFuZGxlcihDUERGX1NlY3VyaXR5SGFuZGxlciogcFNlY3VyaXR5SGFuZGxlciwgRlhfQk9PTCBiRm9yY2VkID0gRkFMU0UpOw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJR2V0UmVjaXBpZW50KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fYnNSZWNpcGllbnQ7DQorICAgIH0NCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KglHZXRUcmFpbGVyKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFRyYWlsZXI7DQorICAgIH0NCisNCisgICAgRlhfRklMRVNJWkUJCQlHZXRMYXN0WFJlZk9mZnNldCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0xhc3RYUmVmT2Zmc2V0Ow0KKyAgICB9DQorDQorICAgIENQREZfRG9jdW1lbnQqCQlHZXREb2N1bWVudCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEb2N1bWVudDsNCisgICAgfQ0KKyAgICBDRlhfQXJyYXlUZW1wbGF0ZTxDUERGX0RpY3Rpb25hcnkgKj4gKiBHZXRPdGhlclRyYWlsZXJzKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuICZtX1RyYWlsZXJzOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgRlhfRFdPUkQJR2V0Um9vdE9iak51bSgpOw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECUdldEluZm9PYmpOdW0oKTsNCisgICAgdmlydHVhbCBDUERGX0FycmF5KglHZXRJREFycmF5KCk7DQorICAgIHZpcnR1YWwgQ1BERl9EaWN0aW9uYXJ5KglHZXRFbmNyeXB0RGljdCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BFbmNyeXB0RGljdDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIENQREZfT2JqZWN0KgkJUGFyc2VJbmRpcmVjdE9iamVjdChDUERGX0luZGlyZWN0T2JqZWN0cyogcE9iakxpc3QsIEZYX0RXT1JEIG9iam51bSwgUEFSU0VfQ09OVEVYVCogcENvbnRleHQgPSBOVUxMKTsNCisgICAgdmlydHVhbCBGWF9EV09SRAlHZXRMYXN0T2JqTnVtKCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJSXNGb3JtU3RyZWFtKEZYX0RXT1JEIG9iam51bSwgRlhfQk9PTCYgYkZvcm0pOw0KKw0KKyAgICBGWF9GSUxFU0laRQkJCUdldE9iamVjdE9mZnNldChGWF9EV09SRCBvYmpudW0pOw0KKw0KKyAgICBGWF9GSUxFU0laRQkJCUdldE9iamVjdFNpemUoRlhfRFdPUkQgb2JqbnVtKTsNCisNCisgICAgaW50CQkJCQlHZXRPYmplY3RWZXJzaW9uKEZYX0RXT1JEIG9iam51bSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fT2JqVmVyc2lvbltvYmpudW1dOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJR2V0SW5kaXJlY3RCaW5hcnkoRlhfRFdPUkQgb2JqbnVtLCBGWF9CWVRFKiYgcEJ1ZmZlciwgRlhfRFdPUkQmIHNpemUpOw0KKw0KKyAgICBGWF9CT09MCQkJCUdldEZpbGVTdHJlYW1PcHRpb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9TeW50YXgubV9iRmlsZVN0cmVhbTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCVNldEZpbGVTdHJlYW1PcHRpb24oRlhfQk9PTCBiKQ0KKyAgICB7DQorICAgICAgICBtX1N5bnRheC5tX2JGaWxlU3RyZWFtID0gYjsNCisgICAgfQ0KKw0KKyAgICBJRlhfRmlsZVJlYWQqCQlHZXRGaWxlQWNjZXNzKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fU3ludGF4Lm1fcEZpbGVBY2Nlc3M7DQorICAgIH0NCisNCisgICAgaW50CQkJCQlHZXRGaWxlVmVyc2lvbigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0ZpbGVWZXJzaW9uOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJSXNYUmVmU3RyZWFtKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fYlhSZWZTdHJlYW07DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqCQlQYXJzZUluZGlyZWN0T2JqZWN0QXQoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpMaXN0LCBGWF9GSUxFU0laRSBwb3MsIEZYX0RXT1JEIG9iam51bSwNCisgICAgICAgICAgICBzdHJ1Y3QgUEFSU0VfQ09OVEVYVCogcENvbnRleHQpOw0KKw0KKyAgICBDUERGX09iamVjdCoJCVBhcnNlSW5kaXJlY3RPYmplY3RBdEJ5U3RyaWN0KENQREZfSW5kaXJlY3RPYmplY3RzKiBwT2JqTGlzdCwgRlhfRklMRVNJWkUgcG9zLCBGWF9EV09SRCBvYmpudW0sDQorICAgICAgICAgICAgc3RydWN0IFBBUlNFX0NPTlRFWFQqIHBDb250ZXh0LCBGWF9GSUxFU0laRSAqcFJlc3VsdFBvcyk7DQorDQorICAgIEZYX0RXT1JECQkJU3RhcnRBc3luUGFyc2UoSUZYX0ZpbGVSZWFkKiBwRmlsZSwgRlhfQk9PTCBiUmVQYXJzZSA9IEZBTFNFLCBGWF9CT09MIGJPd25GaWxlUmVhZCA9IFRSVUUpOw0KKw0KKyAgICBGWF9EV09SRAkJCUdldEZpcnN0UGFnZU5vKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fZHdGaXJzdFBhZ2VObzsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCW1fcERvY3VtZW50Ow0KKw0KKyAgICBDUERGX1N5bnRheFBhcnNlcgltX1N5bnRheDsNCisgICAgRlhfQk9PTAkJCQltX2JPd25GaWxlUmVhZDsNCisgICAgQ1BERl9PYmplY3QqCQlQYXJzZURpcmVjdChDUERGX09iamVjdCogcE9iaik7DQorDQorICAgIEZYX0JPT0wJCQkJTG9hZEFsbENyb3NzUmVmVjQoRlhfRklMRVNJWkUgcG9zKTsNCisNCisgICAgRlhfQk9PTAkJCQlMb2FkQWxsQ3Jvc3NSZWZWNShGWF9GSUxFU0laRSBwb3MpOw0KKw0KKyAgICBGWF9CT09MCQkJCUxvYWRDcm9zc1JlZlY0KEZYX0ZJTEVTSVpFIHBvcywgRlhfRklMRVNJWkUgc3RyZWFtcG9zLCBGWF9CT09MIGJTa2lwLCBGWF9CT09MIGJGaXJzdCk7DQorDQorICAgIEZYX0JPT0wJCQkJTG9hZENyb3NzUmVmVjUoRlhfRklMRVNJWkUgcG9zLCBGWF9GSUxFU0laRSYgcHJldiwgRlhfQk9PTCBiTWFpblhSZWYpOw0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCUxvYWRUcmFpbGVyVjQoKTsNCisNCisgICAgRlhfQk9PTAkJCQlSZWJ1aWxkQ3Jvc3NSZWYoKTsNCisNCisgICAgRlhfRFdPUkQJCQlTZXRFbmNyeXB0SGFuZGxlcigpOw0KKw0KKyAgICB2b2lkCQkJCVJlbGVhc2VFbmNyeXB0SGFuZGxlcigpOw0KKw0KKyAgICBGWF9CT09MCQkJCUxvYWRMaW5lYXJpemVkQWxsQ3Jvc3NSZWZWNChGWF9GSUxFU0laRSBwb3MsIEZYX0RXT1JEIGR3T2JqQ291bnQpOw0KKw0KKyAgICBGWF9CT09MCQkJCUxvYWRMaW5lYXJpemVkQ3Jvc3NSZWZWNChGWF9GSUxFU0laRSBwb3MsIEZYX0RXT1JEIGR3T2JqQ291bnQpOw0KKw0KKyAgICBGWF9CT09MCQkJCUxvYWRMaW5lYXJpemVkQWxsQ3Jvc3NSZWZWNShGWF9GSUxFU0laRSBwb3MpOw0KKw0KKyAgICBGWF9EV09SRAkJCUxvYWRMaW5lYXJpemVkTWFpblhSZWZUYWJsZSgpOw0KKw0KKyAgICBDRlhfTWFwUHRyVG9QdHIJCW1fT2JqZWN0U3RyZWFtTWFwOw0KKw0KKyAgICBDUERGX1N0cmVhbUFjYyoJCUdldE9iamVjdFN0cmVhbShGWF9EV09SRCBudW1iZXIpOw0KKw0KKyAgICBGWF9CT09MCQkJCUlzTGluZWFyaXplZEZpbGUoSUZYX0ZpbGVSZWFkKiBwRmlsZUFjY2VzcywgRlhfRFdPUkQgb2Zmc2V0KTsNCisNCisNCisNCisgICAgaW50CQkJCQltX0ZpbGVWZXJzaW9uOw0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCW1fcFRyYWlsZXI7DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJbV9wRW5jcnlwdERpY3Q7DQorICAgIHZvaWQgU2V0RW5jcnlwdERpY3Rpb25hcnkoQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCk7DQorDQorICAgIEZYX0ZJTEVTSVpFCQkJbV9MYXN0WFJlZk9mZnNldDsNCisNCisgICAgRlhfQk9PTAkJCQltX2JYUmVmU3RyZWFtOw0KKw0KKw0KKyAgICBDUERGX1NlY3VyaXR5SGFuZGxlcioJbV9wU2VjdXJpdHlIYW5kbGVyOw0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JGb3JjZVVzZVNlY3VyaXR5SGFuZGxlcjsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQltX2JzUmVjaXBpZW50Ow0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJbV9GaWxlUGF0aDsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCW1fUGFzc3dvcmQ7DQorDQorICAgIENGWF9GaWxlU2l6ZUFycmF5CW1fQ3Jvc3NSZWY7DQorDQorICAgIENGWF9CeXRlQXJyYXkJCW1fVjVUeXBlOw0KKw0KKyAgICBDRlhfRmlsZVNpemVBcnJheQltX1NvcnRlZE9mZnNldDsNCisNCisgICAgQ0ZYX1dvcmRBcnJheQkJbV9PYmpWZXJzaW9uOw0KKyAgICBDRlhfQXJyYXlUZW1wbGF0ZTxDUERGX0RpY3Rpb25hcnkgKj4JbV9UcmFpbGVyczsNCisNCisgICAgRlhfQk9PTAkJCQltX2JWZXJzaW9uVXBkYXRlZDsNCisNCisgICAgQ1BERl9PYmplY3QqCQltX3BMaW5lYXJpemVkOw0KKw0KKyAgICBGWF9EV09SRAkJCW1fZHdGaXJzdFBhZ2VObzsNCisNCisgICAgRlhfRFdPUkQJCQltX2R3WHJlZlN0YXJ0T2JqTnVtOw0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfQ3JlYXRvcjsNCisgICAgZnJpZW5kIGNsYXNzCQlDUERGX0RhdGFBdmFpbDsNCit9Ow0KKyNkZWZpbmUgRlhDSVBIRVJfTk9ORQkwDQorI2RlZmluZSBGWENJUEhFUl9SQzQJMQ0KKyNkZWZpbmUgRlhDSVBIRVJfQUVTCTINCisjZGVmaW5lIEZYQ0lQSEVSX0FFUzIgICAzDQorY2xhc3MgQ1BERl9TZWN1cml0eUhhbmRsZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgfkNQREZfU2VjdXJpdHlIYW5kbGVyKCkge30NCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlPbkluaXQoQ1BERl9QYXJzZXIqIHBQYXJzZXIsIENQREZfRGljdGlvbmFyeSogcEVuY3J5cHREaWN0KSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfRFdPUkQJR2V0UGVybWlzc2lvbnMoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJSXNPd25lcigpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlHZXRDcnlwdEluZm8oaW50JiBjaXBoZXIsIEZYX0xQQ0JZVEUmIGJ1ZmZlciwgaW50JiBrZXlsZW4pID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlJc01ldGFkYXRhRW5jcnlwdGVkKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBDUERGX0NyeXB0b0hhbmRsZXIqCUNyZWF0ZUNyeXB0b0hhbmRsZXIoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlciogR2V0U3RhbmRhcmRIYW5kbGVyKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCit9Ow0KKyNkZWZpbmUgUERGX0VOQ1JZUFRfQ09OVEVOVAkJCQkwDQorY2xhc3MgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlciA6IHB1YmxpYyBDUERGX1NlY3VyaXR5SGFuZGxlcg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXIoKTsNCisNCisgICAgdmlydHVhbCB+Q1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcigpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCU9uSW5pdChDUERGX1BhcnNlciogcFBhcnNlciwgQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QpOw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECUdldFBlcm1pc3Npb25zKCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJSXNPd25lcigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JPd25lcjsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUdldENyeXB0SW5mbyhpbnQmIGNpcGhlciwgRlhfTFBDQllURSYgYnVmZmVyLCBpbnQmIGtleWxlbik7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJSXNNZXRhZGF0YUVuY3J5cHRlZCgpOw0KKyAgICB2aXJ0dWFsIENQREZfQ3J5cHRvSGFuZGxlcioJQ3JlYXRlQ3J5cHRvSGFuZGxlcigpOw0KKyAgICB2aXJ0dWFsIENQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXIqIEdldFN0YW5kYXJkSGFuZGxlcigpDQorICAgIHsNCisgICAgICAgIHJldHVybiB0aGlzOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJT25DcmVhdGUoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIENQREZfQXJyYXkqIHBJZEFycmF5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgdXNlcl9wYXNzLCBGWF9EV09SRCB1c2VyX3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBvd25lcl9wYXNzLCBGWF9EV09SRCBvd25lcl9zaXplLCBGWF9EV09SRCB0eXBlID0gUERGX0VOQ1JZUFRfQ09OVEVOVCk7DQorDQorICAgIHZvaWQJCQkJT25DcmVhdGUoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIENQREZfQXJyYXkqIHBJZEFycmF5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgdXNlcl9wYXNzLCBGWF9EV09SRCB1c2VyX3NpemUsIEZYX0RXT1JEIHR5cGUgPSBQREZfRU5DUllQVF9DT05URU5UKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCUdldFVzZXJQYXNzd29yZChGWF9MUENCWVRFIG93bmVyX3Bhc3MsIEZYX0RXT1JEIHBhc3Nfc2l6ZSk7DQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXRVc2VyUGFzc3dvcmQoRlhfTFBDQllURSBvd25lcl9wYXNzLCBGWF9EV09SRCBwYXNzX3NpemUsIEZYX0lOVDMyIGtleV9sZW4pOw0KKyAgICBpbnQJCQkJCUdldFZlcnNpb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9WZXJzaW9uOw0KKyAgICB9DQorICAgIGludAkJCQkJR2V0UmV2aXNpb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9SZXZpc2lvbjsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQkJCUNoZWNrUGFzc3dvcmQoRlhfTFBDQllURSBwYXNzd29yZCwgRlhfRFdPUkQgcGFzc19zaXplLCBGWF9CT09MIGJPd25lciwgRlhfTFBCWVRFIGtleSk7DQorICAgIGludAkJCQkJQ2hlY2tQYXNzd29yZChGWF9MUENCWVRFIHBhc3N3b3JkLCBGWF9EV09SRCBwYXNzX3NpemUsIEZYX0JPT0wgYk93bmVyLCBGWF9MUEJZVEUga2V5LCBpbnQga2V5X2xlbik7DQorcHJpdmF0ZToNCisNCisgICAgaW50CQkJCQltX1ZlcnNpb247DQorDQorICAgIGludAkJCQkJbV9SZXZpc2lvbjsNCisNCisgICAgQ1BERl9QYXJzZXIqCQltX3BQYXJzZXI7DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJbV9wRW5jcnlwdERpY3Q7DQorDQorICAgIEZYX0JPT0wJCQkJTG9hZERpY3QoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QpOw0KKyAgICBGWF9CT09MCQkJCUxvYWREaWN0KENQREZfRGljdGlvbmFyeSogcEVuY3J5cHREaWN0LCBGWF9EV09SRCB0eXBlLCBpbnQmIGNpcGhlciwgaW50JiBrZXlfbGVuKTsNCisNCisgICAgRlhfQk9PTAkJCQlDaGVja1VzZXJQYXNzd29yZChGWF9MUENCWVRFIHBhc3N3b3JkLCBGWF9EV09SRCBwYXNzX3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiSWdub3JlRW5jcnlwdE1ldGEsIEZYX0xQQllURSBrZXksIEZYX0lOVDMyIGtleV9sZW4pOw0KKw0KKyAgICBGWF9CT09MCQkJCUNoZWNrT3duZXJQYXNzd29yZChGWF9MUENCWVRFIHBhc3N3b3JkLCBGWF9EV09SRCBwYXNzX3NpemUsIEZYX0xQQllURSBrZXksIEZYX0lOVDMyIGtleV9sZW4pOw0KKyAgICBGWF9CT09MCQkJCUFFUzI1Nl9DaGVja1Bhc3N3b3JkKEZYX0xQQ0JZVEUgcGFzc3dvcmQsIEZYX0RXT1JEIHNpemUsIEZYX0JPT0wgYk93bmVyLCBGWF9MUEJZVEUga2V5KTsNCisgICAgdm9pZAkJCQlBRVMyNTZfU2V0UGFzc3dvcmQoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIEZYX0xQQ0JZVEUgcGFzc3dvcmQsIEZYX0RXT1JEIHNpemUsIEZYX0JPT0wgYk93bmVyLCBGWF9MUENCWVRFIGtleSk7DQorICAgIHZvaWQJCQkJQUVTMjU2X1NldFBlcm1zKENQREZfRGljdGlvbmFyeSogcEVuY3J5cHREaWN0LCBGWF9EV09SRCBwZXJtaXNzaW9uLCBGWF9CT09MIGJFbmNyeXB0TWV0YWRhdGEsIEZYX0xQQ0JZVEUga2V5KTsNCisgICAgdm9pZAkJCQlPbkNyZWF0ZShDUERGX0RpY3Rpb25hcnkqIHBFbmNyeXB0RGljdCwgQ1BERl9BcnJheSogcElkQXJyYXksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSB1c2VyX3Bhc3MsIEZYX0RXT1JEIHVzZXJfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUENCWVRFIG93bmVyX3Bhc3MsIEZYX0RXT1JEIG93bmVyX3NpemUsIEZYX0JPT0wgYkRlZmF1bHQsIEZYX0RXT1JEIHR5cGUpOw0KKyAgICBGWF9CT09MCQkJCUNoZWNrU2VjdXJpdHkoRlhfSU5UMzIga2V5X2xlbik7DQorDQorICAgIEZYX0JPT0wJCQkJbV9iT3duZXI7DQorDQorICAgIEZYX0RXT1JECQkJbV9QZXJtaXNzaW9uczsNCisNCisgICAgaW50CQkJCQltX0NpcGhlcjsNCisNCisgICAgRlhfQllURQkJCQltX0VuY3J5cHRLZXlbMzJdOw0KKw0KKyAgICBpbnQJCQkJCW1fS2V5TGVuOw0KK307DQorY2xhc3MgQ1BERl9DcnlwdG9IYW5kbGVyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIH5DUERGX0NyeXB0b0hhbmRsZXIoKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUluaXQoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIENQREZfU2VjdXJpdHlIYW5kbGVyKiBwU2VjdXJpdHlIYW5kbGVyKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfRFdPUkQJRGVjcnlwdEdldFNpemUoRlhfRFdPUkQgc3JjX3NpemUpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9MUFZPSUQJRGVjcnlwdFN0YXJ0KEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgZ2VubnVtKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJRGVjcnlwdFN0cmVhbShGWF9MUFZPSUQgY29udGV4dCwgRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlEZWNyeXB0RmluaXNoKEZYX0xQVk9JRCBjb250ZXh0LCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1ZikgPSAwOw0KKw0KKw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECUVuY3J5cHRHZXRTaXplKEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgdmVyc2lvbiwgRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUVuY3J5cHRDb250ZW50KEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgdmVyc2lvbiwgRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpID0gMDsNCisNCisgICAgdm9pZAkJCQlEZWNyeXB0KEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgdmVyc2lvbiwgQ0ZYX0J5dGVTdHJpbmcmIHN0cik7DQorfTsNCitjbGFzcyBDUERGX1N0YW5kYXJkQ3J5cHRvSGFuZGxlciA6IHB1YmxpYyBDUERGX0NyeXB0b0hhbmRsZXINCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1N0YW5kYXJkQ3J5cHRvSGFuZGxlcigpOw0KKw0KKyAgICB2aXJ0dWFsIH5DUERGX1N0YW5kYXJkQ3J5cHRvSGFuZGxlcigpOw0KKw0KKyAgICBGWF9CT09MCQkJCUluaXQoaW50IGNpcGhlciwgRlhfTFBDQllURSBrZXksIGludCBrZXlsZW4pOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUluaXQoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIENQREZfU2VjdXJpdHlIYW5kbGVyKiBwU2VjdXJpdHlIYW5kbGVyKTsNCisgICAgdmlydHVhbCBGWF9EV09SRAlEZWNyeXB0R2V0U2l6ZShGWF9EV09SRCBzcmNfc2l6ZSk7DQorICAgIHZpcnR1YWwgRlhfTFBWT0lECURlY3J5cHRTdGFydChGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIGdlbm51bSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJRGVjcnlwdFN0cmVhbShGWF9MUFZPSUQgY29udGV4dCwgRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCURlY3J5cHRGaW5pc2goRlhfTFBWT0lEIGNvbnRleHQsIENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKTsNCisgICAgdmlydHVhbCBGWF9EV09SRAlFbmNyeXB0R2V0U2l6ZShGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIHZlcnNpb24sIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUVuY3J5cHRDb250ZW50KEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgdmVyc2lvbiwgRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgdmlydHVhbCB2b2lkCQlDcnlwdEJsb2NrKEZYX0JPT0wgYkVuY3J5cHQsIEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgZ2VubnVtLCBGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplKTsNCisgICAgdmlydHVhbCBGWF9MUFZPSUQJQ3J5cHRTdGFydChGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIGdlbm51bSwgRlhfQk9PTCBiRW5jcnlwdCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJQ3J5cHRTdHJlYW0oRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmLCBGWF9CT09MIGJFbmNyeXB0KTsNCisgICAgdmlydHVhbCBGWF9CT09MCQlDcnlwdEZpbmlzaChGWF9MUFZPSUQgY29udGV4dCwgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYsIEZYX0JPT0wgYkVuY3J5cHQpOw0KKw0KKyAgICBGWF9CWVRFCQkJCW1fRW5jcnlwdEtleVszMl07DQorDQorICAgIGludAkJCQkJbV9LZXlMZW47DQorDQorICAgIGludAkJCQkJbV9DaXBoZXI7DQorDQorICAgIEZYX0xQQllURQkJCW1fcEFFU0NvbnRleHQ7DQorfTsNCitjbGFzcyBDUERGX1BvaW50IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1BvaW50KEZYX0ZMT0FUIHh4LCBGWF9GTE9BVCB5eSkNCisgICAgew0KKyAgICAgICAgeCA9IHh4Ow0KKyAgICAgICAgeSA9IHl5Ow0KKyAgICB9DQorDQorICAgIEZYX0ZMT0FUCQkJeDsNCisNCisgICAgRlhfRkxPQVQJCQl5Ow0KK307DQorDQorI2RlZmluZSBDUERGX1JlY3QJCUNGWF9GbG9hdFJlY3QNCisjZGVmaW5lIENQREZfTWF0cml4CQlDRlhfQWZmaW5lTWF0cml4DQorQ0ZYX0J5dGVTdHJpbmcgUERGX05hbWVEZWNvZGUoRlhfQlNUUiBvcmlnKTsNCitDRlhfQnl0ZVN0cmluZyBQREZfTmFtZURlY29kZShjb25zdCBDRlhfQnl0ZVN0cmluZyYgb3JpZyk7DQorQ0ZYX0J5dGVTdHJpbmcgUERGX05hbWVFbmNvZGUoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG9yaWcpOw0KK0NGWF9CeXRlU3RyaW5nIFBERl9FbmNvZGVTdHJpbmcoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHNyYywgRlhfQk9PTCBiSGV4ID0gRkFMU0UpOw0KK0NGWF9XaWRlU3RyaW5nIFBERl9EZWNvZGVUZXh0KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIsIENGWF9DaGFyTWFwKiBwQ2hhck1hcCA9IE5VTEwpOw0KK0NGWF9XaWRlU3RyaW5nIFBERl9EZWNvZGVUZXh0KEZYX0xQQ0JZVEUgcERhdGEsIEZYX0RXT1JEIHNpemUsIENGWF9DaGFyTWFwKiBwQ2hhck1hcCA9IE5VTEwpOw0KK0NGWF9CeXRlU3RyaW5nIFBERl9FbmNvZGVUZXh0KEZYX0xQQ1dTVFIgcFN0cmluZywgaW50IGxlbiA9IC0xLCBDRlhfQ2hhck1hcCogcENoYXJNYXAgPSBOVUxMKTsNCitGWF9GTE9BVCBQREZfQ2xpcEZsb2F0KEZYX0ZMT0FUIGYpOw0KK2NsYXNzIENGREZfRG9jdW1lbnQgOiBwdWJsaWMgQ1BERl9JbmRpcmVjdE9iamVjdHMNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ0ZERl9Eb2N1bWVudCoJQ3JlYXRlTmV3RG9jKCk7DQorDQorICAgIHN0YXRpYyBDRkRGX0RvY3VtZW50KglQYXJzZUZpbGUoRlhfTFBDU1RSIGZpbGVfcGF0aCk7DQorDQorICAgIHN0YXRpYyBDRkRGX0RvY3VtZW50KglQYXJzZUZpbGUoRlhfTFBDV1NUUiBmaWxlX3BhdGgpOw0KKw0KKyAgICBzdGF0aWMgQ0ZERl9Eb2N1bWVudCoJUGFyc2VGaWxlKElGWF9GaWxlUmVhZCAqcEZpbGUsIEZYX0JPT0wgYk93bkZpbGUgPSBGQUxTRSk7DQorDQorICAgIHN0YXRpYyBDRkRGX0RvY3VtZW50KglQYXJzZU1lbW9yeShGWF9MUENCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplKTsNCisNCisgICAgfkNGREZfRG9jdW1lbnQoKTsNCisNCisgICAgRlhfQk9PTAkJCQkJV3JpdGVGaWxlKEZYX0xQQ1NUUiBmaWxlX3BhdGgpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MCQkJCQlXcml0ZUZpbGUoRlhfTFBDV1NUUiBmaWxlX3BhdGgpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MCQkJCQlXcml0ZUZpbGUoSUZYX0ZpbGVXcml0ZSAqcEZpbGUpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MCQkJCQlXcml0ZUJ1ZihDRlhfQnl0ZVRleHRCdWYmIGJ1ZikgY29uc3Q7DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJCUdldFJvb3QoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wUm9vdERpY3Q7DQorICAgIH0NCisNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQlHZXRXaW4zMlBhdGgoKSBjb25zdDsNCitwcm90ZWN0ZWQ6DQorDQorICAgIENGREZfRG9jdW1lbnQoKTsNCisgICAgdm9pZAlQYXJzZVN0cmVhbShJRlhfRmlsZVJlYWQgKnBGaWxlLCBGWF9CT09MIGJPd25GaWxlKTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wUm9vdERpY3Q7DQorICAgIElGWF9GaWxlUmVhZCoJCQltX3BGaWxlOw0KKyAgICBGWF9CT09MCQkJCQltX2JPd25GaWxlOw0KK307DQorDQorQ0ZYX1dpZGVTdHJpbmcJRlBERl9GaWxlU3BlY19HZXRXaW4zMlBhdGgoY29uc3QgQ1BERl9PYmplY3QqIHBGaWxlU3BlYyk7DQordm9pZAkJCUZQREZfRmlsZVNwZWNfU2V0V2luMzJQYXRoKENQREZfT2JqZWN0KiBwRmlsZVNwZWMsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiBmdWxscGF0aCk7DQorDQordm9pZCBGbGF0ZUVuY29kZShjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSk7DQorRlhfRFdPUkQgRmxhdGVEZWNvZGUoY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpOw0KK0ZYX0RXT1JEIFJ1bkxlbmd0aERlY29kZShjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSk7DQorY2xhc3MgQ1BERl9OdW1iZXJUcmVlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX051bWJlclRyZWUoQ1BERl9EaWN0aW9uYXJ5KiBwUm9vdCkNCisgICAgew0KKyAgICAgICAgbV9wUm9vdCA9IHBSb290Ow0KKyAgICB9DQorDQorICAgIENQREZfT2JqZWN0KgkJTG9va3VwVmFsdWUoaW50IG51bSk7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCW1fcFJvb3Q7DQorfTsNCisNCitjbGFzcyBJRlhfRmlsZUF2YWlsDQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJSXNEYXRhQXZhaWwoIEZYX0ZJTEVTSVpFIG9mZnNldCwgRlhfRFdPUkQgc2l6ZSkgPSAwOw0KK307DQorY2xhc3MgSUZYX0Rvd25sb2FkSGludHMNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlBZGRTZWdtZW50KEZYX0ZJTEVTSVpFIG9mZnNldCwgRlhfRFdPUkQgc2l6ZSkgPSAwOw0KK307DQorI2RlZmluZSBQREZfSVNfTElORUFSSVpFRAkJCTENCisjZGVmaW5lIFBERl9OT1RfTElORUFSSVpFRAkJCTANCisjZGVmaW5lIFBERl9VTktOT1dfTElORUFSSVpFRAkJLTENCisjZGVmaW5lIFBERkZPUk1fTk9UQVZBSUwJCTANCisjZGVmaW5lIFBERkZPUk1fQVZBSUwJCQkxDQorI2RlZmluZSBQREZGT1JNX05PVEVYSVNUCQkyDQorY2xhc3MgSVBERl9EYXRhQXZhaWwNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc0RvY0F2YWlsKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpID0gMDsNCisNCisNCisgICAgdmlydHVhbCB2b2lkCQkJU2V0RG9jdW1lbnQoQ1BERl9Eb2N1bWVudCogcERvYykgPSAwOw0KKw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc1BhZ2VBdmFpbChpbnQgaVBhZ2UsIElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJSXNMaW5lYXJpemVkKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQlJc0Zvcm1BdmFpbChJRlhfRG93bmxvYWRIaW50cyAqcEhpbnRzKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfSU5UMzIJCUlzTGluZWFyaXplZFBERigpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJCUdldExpbmVhcml6ZWRNYWluWFJlZkluZm8oRlhfRklMRVNJWkUgKnBQb3MsIEZYX0RXT1JEICpwU2l6ZSkgPSAwOw0KK307DQorY2xhc3MgQ1BERl9Tb3J0T2JqTnVtQXJyYXkgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZvaWQgQWRkT2JqTnVtKEZYX0RXT1JEIGR3T2JqTnVtKTsNCisNCisgICAgRlhfQk9PTCBGaW5kKEZYX0RXT1JEIGR3T2JqTnVtKTsNCisNCisgICAgdm9pZCBSZW1vdmVBbGwoKQ0KKyAgICB7DQorICAgICAgICBtX251bWJlcl9hcnJheS5SZW1vdmVBbGwoKTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgRlhfQk9PTCBCaW5hcnlTZWFyY2goRlhfRFdPUkQgdmFsdWUsIGludCAmaU5leHQpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgQ0ZYX0RXb3JkQXJyYXkJCQltX251bWJlcl9hcnJheTsNCit9Ow0KK2VudW0gUERGX1BBR0VOT0RFX1RZUEUgew0KKyAgICBQREZfUEFHRU5PREVfVU5LT1dOID0gMCwNCisgICAgUERGX1BBR0VOT0RFX1BBR0UsDQorICAgIFBERl9QQUdFTk9ERV9QQUdFUywNCisgICAgUERGX1BBR0VOT0RFX0FSUkFZLA0KK307DQorY2xhc3MgQ1BERl9QYWdlTm9kZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9QYWdlTm9kZSgpIDogbV90eXBlKFBERl9QQUdFTk9ERV9VTktPV04pIHt9DQorICAgIH5DUERGX1BhZ2VOb2RlKCk7DQorICAgIFBERl9QQUdFTk9ERV9UWVBFCW1fdHlwZTsNCisgICAgRlhfRFdPUkQJCQltX2R3UGFnZU5vOw0KKyAgICBDRlhfUHRyQXJyYXkJCW1fY2hpbGROb2RlOw0KK307DQorZW51bSBQREZfREFUQUFWQUlMX1NUQVRVUyB7DQorICAgIFBERl9EQVRBQVZBSUxfSEVBREVSID0gMCwNCisgICAgUERGX0RBVEFBVkFJTF9GSVJTVFBBR0UsDQorICAgIFBERl9EQVRBQVZBSUxfRklSU1RQQUdFX1BSRVBBUkUsDQorICAgIFBERl9EQVRBQVZBSUxfRU5ELA0KKyAgICBQREZfREFUQUFWQUlMX0NST1NTUkVGLA0KKyAgICBQREZfREFUQUFWQUlMX0NST1NTUkVGX0lURU0sDQorICAgIFBERl9EQVRBQVZBSUxfQ1JPU1NSRUZfU1RSRUFNLA0KKyAgICBQREZfREFUQUFWQUlMX1RSQUlMRVIsDQorICAgIFBERl9EQVRBQVZBSUxfTE9BREFMTENSU09TU1JFRiwNCisgICAgUERGX0RBVEFBVkFJTF9ST09ULA0KKyAgICBQREZfREFUQUFWQUlMX0lORk8sDQorICAgIFBERl9EQVRBQVZBSUxfQUNST0ZPUk0sDQorICAgIFBERl9EQVRBQVZBSUxfQUNST0ZPUk1fU1VCT0JKRUNULA0KKyAgICBQREZfREFUQUFWQUlMX1BBR0VUUkVFLA0KKyAgICBQREZfREFUQUFWQUlMX1BBR0UsDQorICAgIFBERl9EQVRBQVZBSUxfUEFHRV9MQVRFUkxPQUQsDQorICAgIFBERl9EQVRBQVZBSUxfUkVTT1VSQ0VTLA0KKyAgICBQREZfREFUQUFWQUlMX0RPTkUsDQorICAgIFBERl9EQVRBQVZBSUxfRVJST1IsDQorICAgIFBERl9EQVRBQVZBSUxfTE9BREFMTEZJTEUsDQorICAgIFBERl9EQVRBQVZBSUxfVFJBSUxFUl9BUFBFTkQNCit9Ow0KK2NsYXNzIENQREZfRGF0YUF2YWlsIDogcHVibGljIENGWF9PYmplY3QsIHB1YmxpYyBJUERGX0RhdGFBdmFpbA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfRGF0YUF2YWlsKElGWF9GaWxlQXZhaWwqIHBGaWxlQXZhaWwsIElGWF9GaWxlUmVhZCogcEZpbGVSZWFkKTsNCisgICAgfkNQREZfRGF0YUF2YWlsKCk7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQlJc0RvY0F2YWlsKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpOw0KKw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJU2V0RG9jdW1lbnQoQ1BERl9Eb2N1bWVudCogcERvYyk7DQorDQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQlJc1BhZ2VBdmFpbChpbnQgaVBhZ2UsIElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQkJSXNGb3JtQXZhaWwoSUZYX0Rvd25sb2FkSGludHMgKnBIaW50cyk7DQorDQorICAgIHZpcnR1YWwgRlhfSU5UMzIJCQlJc0xpbmVhcml6ZWRQREYoKTsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJCUlzTGluZWFyaXplZCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JMaW5lYXJpemVkOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCQlHZXRMaW5lYXJpemVkTWFpblhSZWZJbmZvKEZYX0ZJTEVTSVpFICpwUG9zLCBGWF9EV09SRCAqcFNpemUpOw0KKyAgICBJRlhfRmlsZVJlYWQqCQkJCUdldEZpbGVSZWFkKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEZpbGVSZWFkOw0KKyAgICB9DQorICAgIElGWF9GaWxlQXZhaWwqCQkJCUdldEZpbGVBdmFpbCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BGaWxlQXZhaWw7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorICAgIEZYX0RXT1JECQkJCQlHZXRPYmplY3RTaXplKEZYX0RXT1JEIG9iam51bSwgRlhfRklMRVNJWkUmIG9mZnNldCk7DQorICAgIEZYX0JPT0wJCQkJCQlJc09iamVjdHNBdmFpbChDRlhfUHRyQXJyYXkmIG9ial9hcnJheSwgRlhfQk9PTCBiUGFyc2VQYWdlLCBJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzLCBDRlhfUHRyQXJyYXkgJnJldF9hcnJheSk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja0RvY1N0YXR1cyhJRlhfRG93bmxvYWRIaW50cyAqcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrSGVhZGVyKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpOw0KKyAgICBGWF9CT09MCQkJCQkJQ2hlY2tGaXJzdFBhZ2UoSUZYX0Rvd25sb2FkSGludHMgKnBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja0VuZChJRlhfRG93bmxvYWRIaW50cyAqcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrQ3Jvc3NSZWYoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja0Nyb3NzUmVmSXRlbShJRlhfRG93bmxvYWRIaW50cyAqcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrVHJhaWxlcihJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrUm9vdChJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrSW5mbyhJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrUGFnZXMoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja1BhZ2UoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja1Jlc291cmNlcyhJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrQW5ub3RzKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpOw0KKyAgICBGWF9CT09MCQkJCQkJQ2hlY2tBY3JvRm9ybShJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrQWNyb0Zvcm1TdWJPYmplY3QoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja1RyYWlsZXJBcHBlbmQoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja1BhZ2VTdGF0dXMoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja0FsbENyb3NzUmVmU3RyZWFtKElGWF9Eb3dubG9hZEhpbnRzICpwSGludHMpOw0KKw0KKyAgICBGWF9EV09SRAkJCQkJQ2hlY2tDcm9zc1JlZlN0cmVhbShJRlhfRG93bmxvYWRIaW50cyAqcEhpbnRzLCBGWF9GSUxFU0laRSAmeHJlZl9vZmZzZXQpOw0KKyAgICBGWF9CT09MCQkJCQkJSXNMaW5lYXJpemVkRmlsZShGWF9MUEJZVEUgcERhdGEsIEZYX0RXT1JEIGR3TGVuKTsNCisgICAgdm9pZAkJCQkJCVNldFN0YXJ0T2Zmc2V0KEZYX0ZJTEVTSVpFIGR3T2Zmc2V0KTsNCisgICAgRlhfQk9PTAkJCQkJCUdldE5leHRUb2tlbihDRlhfQnl0ZVN0cmluZyAmdG9rZW4pOw0KKyAgICBGWF9CT09MCQkJCQkJR2V0TmV4dENoYXIoRlhfQllURSAmY2gpOw0KKyAgICBDUERGX09iamVjdAkqCQkJCVBhcnNlSW5kaXJlY3RPYmplY3RBdChGWF9GSUxFU0laRSBwb3MsIEZYX0RXT1JEIG9iam51bSk7DQorICAgIENQREZfT2JqZWN0CSoJCQkJR2V0T2JqZWN0KEZYX0RXT1JEIG9iam51bSwgSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cywgRlhfQk9PTCAqcEV4aXN0SW5GaWxlKTsNCisgICAgRlhfQk9PTAkJCQkJCUdldFBhZ2VLaWRzKENQREZfUGFyc2VyICpwUGFyc2VyLCBDUERGX09iamVjdCAqcFBhZ2VzKTsNCisgICAgRlhfQk9PTAkJCQkJCVByZXBhcmVQYWdlSXRlbSgpOw0KKyAgICBGWF9CT09MCQkJCQkJTG9hZFBhZ2VzKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpOw0KKyAgICBGWF9CT09MCQkJCQkJTG9hZEFsbFhyZWYoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlMb2FkQWxsRmlsZShJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrTGluZWFyaXplZERhdGEoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja0ZpbGVSZXNvdXJjZXMoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja1BhZ2VBbm5vdHMoaW50IGlQYWdlLCBJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKTsNCisNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrTGluZWFyaXplZEZpcnN0UGFnZShpbnQgaVBhZ2UsIElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpOw0KKyAgICBGWF9CT09MCQkJCQkJSGF2ZVJlc291cmNlQW5jZXN0b3IoQ1BERl9EaWN0aW9uYXJ5ICpwRGljdCk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja1BhZ2UoRlhfSU5UMzIgaVBhZ2UsIElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpOw0KKyAgICBGWF9CT09MCQkJCQkJTG9hZERvY1BhZ2VzKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpOw0KKyAgICBGWF9CT09MCQkJCQkJTG9hZERvY1BhZ2UoRlhfSU5UMzIgaVBhZ2UsIElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpOw0KKyAgICBGWF9CT09MCQkJCQkJQ2hlY2tQYWdlTm9kZShDUERGX1BhZ2VOb2RlICZwYWdlTm9kZXMsIEZYX0lOVDMyIGlQYWdlLCBGWF9JTlQzMiAmaUNvdW50LCBJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUNoZWNrVW5rb3duUGFnZU5vZGUoRlhfRFdPUkQgZHdQYWdlTm8sIENQREZfUGFnZU5vZGUgKnBQYWdlTm9kZSwgSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wJCQkJCQlDaGVja0FycmF5UGFnZU5vZGUoRlhfRFdPUkQgZHdQYWdlTm8sIENQREZfUGFnZU5vZGUgKnBQYWdlTm9kZSwgSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cyk7DQorICAgIEZYX0JPT0wgICAgICAgICAgICAgICAgICAgICBDaGVja1BhZ2VDb3VudChJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKTsNCisgICAgRlhfQk9PTAkJCQkJCUlzRmlyc3RDaGVjayhpbnQgaVBhZ2UpOw0KKyAgICB2b2lkCQkJCQkJUmVzZXRGaXJzdENoZWNrKGludCBpUGFnZSk7DQorDQorICAgIENQREZfUGFyc2VyCQkJCW1fcGFyc2VyOw0KKw0KKyAgICBDUERGX1N5bnRheFBhcnNlcgkJbV9zeW50YXhQYXJzZXI7DQorDQorICAgIENQREZfT2JqZWN0CQkJCSptX3BSb290Ow0KKw0KKyAgICBGWF9EV09SRAkJCQltX2R3Um9vdE9iak51bTsNCisNCisgICAgRlhfRFdPUkQJCQkJbV9kd0luZm9PYmpOdW07DQorDQorICAgIENQREZfT2JqZWN0CQkJCSptX3BMaW5lYXJpemVkOw0KKw0KKyAgICBDUERGX09iamVjdAkJCQkqbV9wVHJhaWxlcjsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iRG9jQXZhaWw7DQorDQorICAgIEZYX0ZJTEVTSVpFCQkJCW1fZHdIZWFkZXJPZmZzZXQ7DQorDQorICAgIEZYX0ZJTEVTSVpFCQkJCW1fZHdMYXN0WFJlZk9mZnNldDsNCisNCisgICAgRlhfRklMRVNJWkUJCQkJbV9kd1hSZWZPZmZzZXQ7DQorDQorICAgIEZYX0ZJTEVTSVpFCQkJCW1fZHdUcmFpbGVyT2Zmc2V0Ow0KKw0KKyAgICBGWF9GSUxFU0laRQkJCQltX2R3Q3VycmVudE9mZnNldDsNCisNCisgICAgUERGX0RBVEFBVkFJTF9TVEFUVVMJbV9kb2NTdGF0dXM7DQorDQorICAgIElGWF9GaWxlQXZhaWwqCQkJbV9wRmlsZUF2YWlsOw0KKw0KKyAgICBJRlhfRmlsZVJlYWQqCQkJbV9wRmlsZVJlYWQ7DQorDQorICAgIEZYX0ZJTEVTSVpFCQkJCW1fZHdGaWxlTGVuOw0KKw0KKyAgICBDUERGX0RvY3VtZW50KgkJCW1fcERvY3VtZW50Ow0KKw0KKyAgICBDUERGX1NvcnRPYmpOdW1BcnJheQltX29iam51bV9hcnJheTsNCisNCisgICAgQ0ZYX1B0ckFycmF5CQkJbV9vYmpzX2FycmF5Ow0KKw0KKyAgICBGWF9GSUxFU0laRQkJCQltX1BvczsNCisNCisgICAgRlhfRklMRVNJWkUJCQkJbV9idWZmZXJPZmZzZXQ7DQorDQorICAgIEZYX0RXT1JECQkJCW1fYnVmZmVyU2l6ZTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQltX1dvcmRCdWY7DQorDQorICAgIEZYX0JZVEUJCQkJCW1fV29yZEJ1ZmZlclsyNTddOw0KKw0KKyAgICBGWF9EV09SRAkJCQltX1dvcmRTaXplOw0KKw0KKyAgICBGWF9CWVRFCQkJCQltX2J1ZmZlckRhdGFbNTEyXTsNCisNCisgICAgQ0ZYX0ZpbGVTaXplQXJyYXkJCW1fQ3Jvc3NPZmZzZXQ7DQorDQorICAgIENGWF9EV29yZEFycmF5CQkJbV9YUmVmU3RyZWFtTGlzdDsNCisNCisgICAgQ0ZYX0RXb3JkQXJyYXkJCQltX1BhZ2VPYmpMaXN0Ow0KKw0KKyAgICBGWF9EV09SRAkJCQltX1BhZ2VzT2JqTnVtOw0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JMaW5lYXJpemVkOw0KKw0KKyAgICBGWF9EV09SRAkJCQltX2R3Rmlyc3RQYWdlTm87DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYkxpbmVhcmVkRGF0YU9LOw0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JNYWluWFJlZkxvYWQ7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYk1haW5YUmVmTG9hZGVkT0s7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYlBhZ2VzVHJlZUxvYWQ7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYlBhZ2VzTG9hZDsNCisNCisgICAgQ1BERl9QYXJzZXIgKgkJCW1fcEN1cnJlbnRQYXJzZXI7DQorDQorICAgIEZYX0ZJTEVTSVpFCQkJCW1fZHdDdXJyZW50WFJlZlN0ZWFtOw0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JBbm5vdHNMb2FkOw0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JIYXZlQWNyb0Zvcm07DQorDQorICAgIEZYX0RXT1JECQkJCW1fZHdBY3JvRm9ybU9iak51bTsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iQWNyb0Zvcm1Mb2FkOw0KKw0KKyAgICBDUERGX09iamVjdAkqCQkJbV9wQWNyb0Zvcm07DQorDQorICAgIENGWF9QdHJBcnJheQkJCW1fYXJyYXlBY3JvZm9ybXM7DQorDQorICAgIENQREZfRGljdGlvbmFyeSAqCQltX3BQYWdlRGljdDsNCisNCisgICAgQ1BERl9PYmplY3QgKgkJCW1fcFBhZ2VSZXNvdXJjZTsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iTmVlZERvd25Mb2FkUmVzb3VyY2U7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYlBhZ2VMb2FkZWRPSzsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iTGluZWFyaXplZEZvcm1QYXJhbUxvYWQ7DQorDQorICAgIENGWF9QdHJBcnJheQkJCW1fUGFnZXNBcnJheTsNCisNCisgICAgRlhfRFdPUkQJCQkJbV9kd0VuY3J5cHRPYmpOdW07DQorDQorICAgIEZYX0ZJTEVTSVpFCQkJCW1fZHdQcmV2WFJlZk9mZnNldDsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iVG90YWxMb2FkUGFnZVRyZWU7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYkN1clBhZ2VEaWN0TG9hZE9LOw0KKw0KKyAgICBDUERGX1BhZ2VOb2RlCQkJbV9wYWdlTm9kZXM7DQorDQorICAgIENGWF9DTWFwRFdvcmRUb0RXb3JkICoJbV9wYWdlTWFwQ2hlY2tTdGF0ZTsNCisNCisgICAgQ0ZYX0NNYXBEV29yZFRvRFdvcmQgKgltX3BhZ2VzTG9hZFN0YXRlOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9yZW5kZXIuaCBiL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcmVuZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJiYTU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcmVuZGVyLmgKQEAgLTAsMCArMSwzMTggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZfUkVOREVSXw0KKyNkZWZpbmUgX0ZQREZfUkVOREVSXw0KKyNpZm5kZWYgX0ZQREZfUEFHRV8NCisjaW5jbHVkZSAiZnBkZl9wYWdlLmgiDQorI2VuZGlmDQorI2lmbmRlZiBfRlhfR0VfSF8NCisjaW5jbHVkZSAiLi4vZnhnZS9meF9nZS5oIg0KKyNlbmRpZg0KK2NsYXNzIENQREZfUmVuZGVyQ29udGV4dDsNCitjbGFzcyBDUERGX1JlbmRlck9wdGlvbnM7DQorY2xhc3MgQ1BERl9JbWFnZUNhY2hlOw0KK2NsYXNzIElQREZfT0NDb250ZXh0Ow0KK2NsYXNzIENQREZfUXVpY2tTdHJldGNoZXI7DQorY2xhc3MgQ0ZYX1BhdGhEYXRhOw0KK2NsYXNzIENGWF9HcmFwaFN0YXRlRGF0YTsNCitjbGFzcyBDRlhfUmVuZGVyRGV2aWNlOw0KK2NsYXNzIENQREZfVGV4dE9iamVjdDsNCitjbGFzcyBDUERGX1BhdGhPYmplY3Q7DQorY2xhc3MgQ1BERl9JbWFnZU9iamVjdDsNCitjbGFzcyBDUERGX1NoYWRpbmdPYmplY3Q7DQorY2xhc3MgQ1BERl9Gb3JtT2JqZWN0Ow0KK2NsYXNzIElQREZfT0NDb250ZXh0DQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCB+SVBERl9PQ0NvbnRleHQoKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJQ2hlY2tPQ0dWaXNpYmxlKGNvbnN0IENQREZfRGljdGlvbmFyeSogcE9DRykgPSAwOw0KKw0KKyAgICBGWF9CT09MIENoZWNrT2JqZWN0VmlzaWJsZShjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmopOw0KK307DQorI2RlZmluZSBSRU5ERVJfQ09MT1JfTk9STUFMCQkwDQorI2RlZmluZSBSRU5ERVJfQ09MT1JfR1JBWQkJMQ0KKyNkZWZpbmUgUkVOREVSX0NPTE9SX1RXT0NPTE9SCTINCisjZGVmaW5lIFJFTkRFUl9DT0xPUl9BTFBIQQkJMw0KKyNkZWZpbmUgUkVOREVSX0NMRUFSVFlQRQkJCTB4MDAwMDAwMDENCisjZGVmaW5lIFJFTkRFUl9QUklOVEdSQVBISUNURVhUCQkweDAwMDAwMDAyDQorI2RlZmluZSBSRU5ERVJfRk9SQ0VfRE9XTlNBTVBMRQkJMHgwMDAwMDAwNA0KKyNkZWZpbmUgUkVOREVSX1BSSU5UUFJFVklFVwkJCTB4MDAwMDAwMDgNCisjZGVmaW5lIFJFTkRFUl9CR1JfU1RSSVBFCQkJMHgwMDAwMDAxMA0KKyNkZWZpbmUgUkVOREVSX05PX05BVElWRVRFWFQJCTB4MDAwMDAwMjANCisjZGVmaW5lIFJFTkRFUl9GT1JDRV9IQUxGVE9ORQkJMHgwMDAwMDA0MA0KKyNkZWZpbmUgUkVOREVSX1JFQ1RfQUEJCQkJMHgwMDAwMDA4MA0KKyNkZWZpbmUgUkVOREVSX0ZJTExfRlVMTENPVkVSCQkweDAwMDAwMTAwDQorI2RlZmluZSBSRU5ERVJfUFJJTlRJTUFHRVRFWFQgICAgICAgMHgwMDAwMDIwMA0KKyNkZWZpbmUgUkVOREVSX09WRVJQUklOVCAgICAgICAgICAgIDB4MDAwMDA0MDANCisjZGVmaW5lIFJFTkRFUl9USElOTElORSAgICAgICAgICAgICAweDAwMDAwODAwDQorI2RlZmluZSBSRU5ERVJfTk9URVhUU01PT1RICQkJMHgxMDAwMDAwMA0KKyNkZWZpbmUgUkVOREVSX05PUEFUSFNNT09USAkJCTB4MjAwMDAwMDANCisjZGVmaW5lIFJFTkRFUl9OT0lNQUdFU01PT1RICQkweDQwMDAwMDAwDQorI2RlZmluZSBSRU5ERVJfTElNSVRFRElNQUdFQ0FDSEUJMHg4MDAwMDAwMA0KK2NsYXNzIENQREZfUmVuZGVyT3B0aW9ucyA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9SZW5kZXJPcHRpb25zKCk7DQorDQorICAgIGludAkJCQltX0NvbG9yTW9kZTsNCisNCisgICAgRlhfQ09MT1JSRUYJCW1fQmFja0NvbG9yOw0KKw0KKyAgICBGWF9DT0xPUlJFRgkJbV9Gb3JlQ29sb3I7DQorDQorICAgIEZYX0RXT1JECQltX0ZsYWdzOw0KKw0KKyAgICBpbnQJCQkJbV9JbnRlcnBvbGF0aW9uOw0KKw0KKyAgICBGWF9EV09SRAkJbV9BZGRGbGFnczsNCisNCisgICAgSVBERl9PQ0NvbnRleHQqCW1fcE9DQ29udGV4dDsNCisNCisgICAgRlhfRFdPUkQJCW1fZHdMaW1pdENhY2hlU2l6ZTsNCisNCisgICAgaW50CQkJCW1fSGFsZnRvbmVMaW1pdDsNCisNCisgICAgRlhfQVJHQgkJCVRyYW5zbGF0ZUNvbG9yKEZYX0FSR0IgYXJnYikgY29uc3Q7DQorfTsNCitjbGFzcyBDUERGX1JlbmRlckNvbnRleHQgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfUmVuZGVyQ29udGV4dCgpOw0KKw0KKyAgICB2b2lkCQkJQ3JlYXRlKENQREZfUGFnZSogcFBhZ2UsIEZYX0JPT0wgYkZpcnN0TGF5ZXIgPSBUUlVFKTsNCisNCisgICAgdm9pZAkJCUNyZWF0ZShDUERGX0RvY3VtZW50KiBwRG9jID0gTlVMTCwgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqIHBQYWdlQ2FjaGUgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcFBhZ2VSZXNvdXJjZXMgPSBOVUxMLCBGWF9CT09MIGJGaXJzdExheWVyID0gVFJVRSk7DQorDQorICAgIH5DUERGX1JlbmRlckNvbnRleHQoKTsNCisNCisgICAgdm9pZAkJCUNsZWFyKCk7DQorDQorICAgIHZvaWQJCQlBcHBlbmRPYmplY3RMaXN0KENQREZfUGFnZU9iamVjdHMqIHBPYmpzLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSk7DQorDQorICAgIHZvaWQJCQlTZXRCYWNrZ3JvdW5kKGNsYXNzIElQREZfQmFja2dyb3VuZERyYXcqIHBCYWNrZ3JvdW5kKTsNCisNCisgICAgdm9pZAkJCVJlbmRlcihDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwRmluYWxNYXRyaXggPSBOVUxMKTsNCisNCisgICAgdm9pZAkJCURyYXdPYmplY3RMaXN0KENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIENQREZfUGFnZU9iamVjdHMqIHBPYmpzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsIGNvbnN0IENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMpOw0KKw0KKyAgICB2b2lkCQkJR2V0QmFja2dyb3VuZChDRlhfRElCaXRtYXAqIHBCdWZmZXIsIGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1BERl9SZW5kZXJPcHRpb25zKiBwT3B0aW9ucywgQ0ZYX0FmZmluZU1hdHJpeCogcEZpbmFsTWF0cml4KTsNCisNCisgICAgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqCUdldFBhZ2VDYWNoZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BQYWdlQ2FjaGU7DQorICAgIH0NCisNCisNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCQltX3BEb2N1bWVudDsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wUGFnZVJlc291cmNlczsNCisNCisgICAgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqCW1fcFBhZ2VDYWNoZTsNCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIENGWF9BcnJheVRlbXBsYXRlPHN0cnVjdCBfUERGX1JlbmRlckl0ZW0+CW1fQ29udGVudExpc3Q7DQorDQorICAgIElQREZfQmFja2dyb3VuZERyYXcqCW1fcEJhY2tncm91bmREcmF3Ow0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JGaXJzdExheWVyOw0KKw0KKyAgICB2b2lkCQkJUmVuZGVyKENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIGNvbnN0IENQREZfUGFnZU9iamVjdCogcFN0b3BPYmosDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1BERl9SZW5kZXJPcHRpb25zKiBwT3B0aW9ucywgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcEZpbmFsTWF0cml4KTsNCisgICAgZnJpZW5kIGNsYXNzIENQREZfUmVuZGVyU3RhdHVzOw0KKyAgICBmcmllbmQgY2xhc3MgQ1BERl9Qcm9ncmVzc2l2ZVJlbmRlcmVyOw0KK307DQorY2xhc3MgSVBERl9CYWNrZ3JvdW5kRHJhdw0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwJdm9pZAlPbkRyYXdCYWNrZ3JvdW5kKA0KKyAgICAgICAgQ0ZYX1JlbmRlckRldmljZSogcEJpdG1hcERldmljZSwNCisgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPcmlnaW5hbDJCaXRtYXANCisgICAgKSA9IDA7DQorfTsNCitjbGFzcyBDUERGX1Byb2dyZXNzaXZlUmVuZGVyZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfUHJvZ3Jlc3NpdmVSZW5kZXJlcigpOw0KKw0KKyAgICB+Q1BERl9Qcm9ncmVzc2l2ZVJlbmRlcmVyKCk7DQorDQorICAgIHR5cGVkZWYgZW51bSB7DQorICAgICAgICBSZWFkeSwNCisgICAgICAgIFRvQmVDb250aW51ZWQsDQorICAgICAgICBEb25lLA0KKyAgICAgICAgRmFpbGVkDQorICAgIH0gUmVuZGVyU3RhdHVzOw0KKw0KKyAgICBSZW5kZXJTdGF0dXMJCUdldFN0YXR1cygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1N0YXR1czsNCisgICAgfQ0KKw0KKw0KKw0KKyAgICB2b2lkCQkJCVN0YXJ0KENQREZfUmVuZGVyQ29udGV4dCogcENvbnRleHQsIENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1BERl9SZW5kZXJPcHRpb25zKiBwT3B0aW9ucywgY2xhc3MgSUZYX1BhdXNlKiBwUGF1c2UsIEZYX0JPT0wgYkRyb3BPYmplY3RzID0gRkFMU0UpOw0KKw0KKyAgICB2b2lkCQkJCUNvbnRpbnVlKGNsYXNzIElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisNCisgICAgaW50CQkJCQlFc3RpbWF0ZVByb2dyZXNzKCk7DQorDQorICAgIHZvaWQJCQkJQ2xlYXIoKTsNCitwcm90ZWN0ZWQ6DQorDQorICAgIFJlbmRlclN0YXR1cwkJbV9TdGF0dXM7DQorDQorICAgIENQREZfUmVuZGVyQ29udGV4dCoJbV9wQ29udGV4dDsNCisNCisgICAgQ0ZYX1JlbmRlckRldmljZSoJbV9wRGV2aWNlOw0KKw0KKyAgICBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqCW1fcE9wdGlvbnM7DQorDQorICAgIEZYX0JPT0wJCQkJbV9iRHJvcE9iamVjdHM7DQorDQorICAgIGNsYXNzIENQREZfUmVuZGVyU3RhdHVzKgltX3BSZW5kZXJlcjsNCisNCisgICAgQ0ZYX0Zsb2F0UmVjdAkJbV9DbGlwUmVjdDsNCisNCisgICAgRlhfRFdPUkQJCQltX0xheWVySW5kZXg7DQorDQorICAgIEZYX0RXT1JECQkJbV9PYmplY3RJbmRleDsNCisNCisgICAgRlhfUE9TSVRJT04JCQltX09iamVjdFBvczsNCisNCisgICAgRlhfUE9TSVRJT04JCQltX1ByZXZMYXN0UG9zOw0KKw0KKyAgICB2b2lkCQkJCVJlbmRlclN0ZXAoKTsNCit9Ow0KK2NsYXNzIENQREZfVGV4dFJlbmRlcmVyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgdm9pZAkJRHJhd1RleHRTdHJpbmcoQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgaW50IGxlZnQsIGludCB0b3AsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0ZvbnQqIHBGb250LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9BUkdCIGFyZ2IpOw0KKw0KKyAgICBzdGF0aWMgdm9pZAkJRHJhd1RleHRTdHJpbmcoQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgRlhfRkxPQVQgb3JpZ2luX3gsIEZYX0ZMT0FUIG9yaWdpbl95LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9Gb250KiBwRm9udCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGZvbnRfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIG1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9BUkdCIGZpbGxfYXJnYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0FSR0Igc3Ryb2tlX2FyZ2IgPSAwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZSA9IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zID0gTlVMTA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KKw0KKyAgICBzdGF0aWMgRlhfQk9PTAlEcmF3VGV4dFBhdGgoQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgaW50IG5DaGFycywgRlhfRFdPUkQqIHBDaGFyQ29kZXMsIEZYX0ZMT0FUKiBwQ2hhclBvcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0ZvbnQqIHBGb250LCBGWF9GTE9BVCBmb250X3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcFRleHQyVXNlciwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcFVzZXIyRGV2aWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQVJHQiBmaWxsX2FyZ2IsIEZYX0FSR0Igc3Ryb2tlX2FyZ2IsIENGWF9QYXRoRGF0YSogcENsaXBwaW5nUGF0aCwgaW50IG5GbGFnID0gMCk7DQorDQorICAgIHN0YXRpYyBGWF9CT09MCURyYXdOb3JtYWxUZXh0KENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIGludCBuQ2hhcnMsIEZYX0RXT1JEKiBwQ2hhckNvZGVzLCBGWF9GTE9BVCogcENoYXJQb3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0ZvbnQqIHBGb250LCBGWF9GTE9BVCBmb250X3NpemUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBUZXh0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0FSR0IgZmlsbF9hcmdiLCBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zKTsNCisNCisgICAgc3RhdGljIEZYX0JPT0wJRHJhd1R5cGUzVGV4dChDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBpbnQgbkNoYXJzLCBGWF9EV09SRCogcENoYXJDb2RlcywgRlhfRkxPQVQqIHBDaGFyUG9zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0ZvbnQqIHBGb250LCBGWF9GTE9BVCBmb250X3NpemUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBUZXh0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQVJHQiBmaWxsX2FyZ2IpOw0KK307DQorY2xhc3MgSVBERl9QYWdlSW1hZ2VDYWNoZQ0KK3sNCitwdWJsaWM6DQorDQorICAgIHN0YXRpYyBJUERGX1BhZ2VJbWFnZUNhY2hlKiBDcmVhdGUoKTsNCisNCisgICAgdmlydHVhbCB+SVBERl9QYWdlSW1hZ2VDYWNoZSgpIHt9DQorDQorICAgIHZpcnR1YWwgdm9pZAkJT3V0cHV0UGFnZShDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBDUERGX1BhZ2UqIHBQYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvc194LCBpbnQgcG9zX3ksIGludCBzaXplX3gsIGludCBzaXplX3ksIGludCByb3RhdGUpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQlTZXRDYWNoZUxpbWl0KEZYX0RXT1JEIGxpbWl0KSA9IDA7DQorfTsNCitjbGFzcyBDUERGX1BhZ2VSZW5kZXJDYWNoZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9QYWdlUmVuZGVyQ2FjaGUoQ1BERl9QYWdlKiBwUGFnZSkNCisgICAgew0KKyAgICAgICAgbV9wUGFnZSA9IHBQYWdlOw0KKyAgICAgICAgbV9uVGltZUNvdW50ID0gMDsNCisgICAgICAgIG1fbkNhY2hlU2l6ZSA9IDA7DQorICAgICAgICBtX3BDdXJJbWFnZUNhY2hlID0gTlVMTDsNCisgICAgICAgIG1fYkN1ckZpbmRDYWNoZSA9IEZBTFNFOw0KKyAgICAgICAgbV9wQ3VySW1hZ2VDYWNoZXMgPSBOVUxMOw0KKyAgICB9DQorICAgIH5DUERGX1BhZ2VSZW5kZXJDYWNoZSgpDQorICAgIHsNCisgICAgICAgIENsZWFyQWxsKCk7DQorICAgIH0NCisgICAgdm9pZAkJCQlDbGVhckFsbCgpOw0KKyAgICB2b2lkCQkJCUNsZWFySW1hZ2VEYXRhKCk7DQorDQorICAgIEZYX0RXT1JECQkJRXN0aW1hdGVTaXplKCk7DQorICAgIHZvaWQJCQkJQ2FjaGVPcHRpbWl6YXRpb24oRlhfSU5UMzIgZHdMaW1pdENhY2hlU2l6ZSk7DQorICAgIEZYX0RXT1JECQkJR2V0Q2FjaGVkU2l6ZShDUERGX1N0cmVhbSogcFN0cmVhbSkgY29uc3Q7DQorICAgIEZYX0RXT1JECQkJR2V0VGltZUNvdW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fblRpbWVDb3VudDsNCisgICAgfQ0KKyAgICB2b2lkCQkJCVNldFRpbWVDb3VudChGWF9EV09SRCBkd1RpbWVDb3VudCkNCisgICAgew0KKyAgICAgICAgbV9uVGltZUNvdW50ID0gZHdUaW1lQ291bnQ7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlHZXRDYWNoZWRCaXRtYXAoQ1BERl9TdHJlYW0qIHBTdHJlYW0sIENGWF9ESUJTb3VyY2UqJiBwQml0bWFwLCBDRlhfRElCU291cmNlKiYgcE1hc2ssIEZYX0RXT1JEJiBNYXR0ZUNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJTdGRDUyA9IEZBTFNFLCBGWF9EV09SRCBHcm91cEZhbWlseSA9IDAsIEZYX0JPT0wgYkxvYWRNYXNrID0gRkFMU0UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfUmVuZGVyU3RhdHVzKiBwUmVuZGVyU3RhdHVzID0gTlVMTCwgRlhfSU5UMzIgZG93bnNhbXBsZVdpZHRoID0gMCwgRlhfSU5UMzIgZG93bnNhbXBsZUhlaWdodCA9IDApOw0KKw0KKyAgICB2b2lkCQkJCVJlc2V0Qml0bWFwKENQREZfU3RyZWFtKiBwU3RyZWFtLCBjb25zdCBDRlhfRElCaXRtYXAqIHBCaXRtYXApOw0KKyAgICB2b2lkCQkJCUNsZWFySW1hZ2VDYWNoZShDUERGX1N0cmVhbSogcFN0cmVhbSk7DQorICAgIENQREZfUGFnZSoJCQlHZXRQYWdlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFBhZ2U7DQorICAgIH0NCisgICAgQ0ZYX01hcFB0clRvUHRyCQltX0ltYWdlQ2FjaGVzOw0KK3B1YmxpYzoNCisgICAgRlhfQk9PTAkJCQlTdGFydEdldENhY2hlZEJpdG1hcChDUERGX1N0cmVhbSogcFN0cmVhbSwgRlhfQk9PTCBiU3RkQ1MgPSBGQUxTRSwgRlhfRFdPUkQgR3JvdXBGYW1pbHkgPSAwLA0KKyAgICAgICAgICAgIEZYX0JPT0wgYkxvYWRNYXNrID0gRkFMU0UsIENQREZfUmVuZGVyU3RhdHVzKiBwUmVuZGVyU3RhdHVzID0gTlVMTCwNCisgICAgICAgICAgICBGWF9JTlQzMiBkb3duc2FtcGxlV2lkdGggPSAwLCBGWF9JTlQzMiBkb3duc2FtcGxlSGVpZ2h0ID0gMCk7DQorDQorICAgIEZYX0JPT0wJCQkJQ29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBDUERGX0ltYWdlQ2FjaGUqCW1fcEN1ckltYWdlQ2FjaGU7DQorICAgIENGWF9QdHJBcnJheSogICAgICAgbV9wQ3VySW1hZ2VDYWNoZXM7DQorcHJvdGVjdGVkOg0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfUGFnZTsNCisgICAgQ1BERl9QYWdlKgkJCW1fcFBhZ2U7DQorDQorICAgIEZYX0RXT1JECQkJbV9uVGltZUNvdW50Ow0KKyAgICBGWF9EV09SRAkJCW1fbkNhY2hlU2l6ZTsNCisgICAgRlhfQk9PTAkJCQltX2JDdXJGaW5kQ2FjaGU7DQorfTsNCitjbGFzcyBDUERGX1JlbmRlckNvbmZpZyA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9SZW5kZXJDb25maWcoKTsNCisgICAgfkNQREZfUmVuZGVyQ29uZmlnKCk7DQorICAgIGludAkJCQkJbV9IYWxmdG9uZUxpbWl0Ow0KKyAgICBpbnQJCQkJCW1fUmVuZGVyU3RlcExpbWl0Ow0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9yZXNvdXJjZS5oIGIvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9yZXNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYTNhZmMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3Jlc291cmNlLmgKQEAgLTAsMCArMSw5NjAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZfUkVTT1VSQ0VfDQorI2RlZmluZSBfRlBERl9SRVNPVVJDRV8NCisjaWZuZGVmIF9GUERGX1BBUlNFUl8NCisjaW5jbHVkZSAiZnBkZl9wYXJzZXIuaCINCisjZW5kaWYNCisjaWZuZGVmIF9GWF9GT05UX0hfDQorI2luY2x1ZGUgIi4uL2Z4Z2UvZnhfZm9udC5oIg0KKyNlbmRpZg0KK2NsYXNzIENQREZfRm9udDsNCitjbGFzcyBDUERGX1R5cGUxRm9udDsNCitjbGFzcyBDUERGX1RydWVUeXBlRm9udDsNCitjbGFzcyBDUERGX0NJREZvbnQ7DQorY2xhc3MgQ1BERl9UeXBlM0ZvbnQ7DQorY2xhc3MgQ1BERl9Gb250RW5jb2Rpbmc7DQorY2xhc3MgQ1BERl9DTWFwOw0KK2NsYXNzIENQREZfQ0lEMlVuaWNvZGVNYXA7DQorY2xhc3MgQ1BERl9Db2xvclNwYWNlOw0KK2NsYXNzIENQREZfQ29sb3I7DQorY2xhc3MgQ1BERl9GdW5jdGlvbjsNCitjbGFzcyBDUERGX1BhdHRlcm47DQorY2xhc3MgQ1BERl9UaWxpbmdQYXR0ZXJuOw0KK2NsYXNzIENQREZfU2hhZGluZ1BhdHRlcm47DQorY2xhc3MgQ1BERl9JbWFnZTsNCitjbGFzcyBDUERGX0ZhY2U7DQorY2xhc3MgQ1BERl9Ub1VuaWNvZGVNYXA7DQorY2xhc3MgQ0ZYX1N1YnN0Rm9udDsNCitjbGFzcyBDRlhfRm9udDsNCitjbGFzcyBDUERGX1JlbmRlckNvbnRleHQ7DQorY2xhc3MgQ1BERl9Gb3JtOw0KK2NsYXNzIENQREZfSW1hZ2VPYmplY3Q7DQorY2xhc3MgQ0ZYX0RJQml0bWFwOw0KK3R5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiBGWEZUX0ZhY2U7DQorY2xhc3MgQ0ZYX0NUVEdTVUJUYWJsZTsNCitjbGFzcyBDUERGX1BhZ2U7DQorI2RlZmluZSBQREZGT05UX1RZUEUxCQkJMQ0KKyNkZWZpbmUgUERGRk9OVF9UUlVFVFlQRQkJMg0KKyNkZWZpbmUgUERGRk9OVF9UWVBFMwkJCTMNCisjZGVmaW5lIFBERkZPTlRfQ0lERk9OVAkJCTQNCisjZGVmaW5lIFBERkZPTlRfRklYRURQSVRDSAkJMQ0KKyNkZWZpbmUgUERGRk9OVF9TRVJJRgkJCTINCisjZGVmaW5lIFBERkZPTlRfU1lNQk9MSUMJCTQNCisjZGVmaW5lIFBERkZPTlRfU0NSSVBUCQkJOA0KKyNkZWZpbmUgUERGRk9OVF9OT05TWU1CT0xJQwkJMzINCisjZGVmaW5lIFBERkZPTlRfSVRBTElDCQkJNjQNCisjZGVmaW5lIFBERkZPTlRfQUxMQ0FQCQkJMHgxMDAwMA0KKyNkZWZpbmUgUERGRk9OVF9TTUFMTENBUAkJMHgyMDAwMA0KKyNkZWZpbmUgUERGRk9OVF9GT1JDRUJPTEQJCTB4NDAwMDANCisjZGVmaW5lIFBERkZPTlRfVVNFRVhURVJOQVRUUgkweDgwMDAwDQorRlhfV0NIQVIgUERGX1VuaWNvZGVGcm9tQWRvYmVOYW1lKGNvbnN0IEZYX0NIQVIqIG5hbWUpOw0KK0NGWF9CeXRlU3RyaW5nIFBERl9BZG9iZU5hbWVGcm9tVW5pY29kZShGWF9XQ0hBUiB1bmljb2RlKTsNCitjbGFzcyBDUERGX0ZvbnQgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHN0YXRpYyBDUERGX0ZvbnQqCQlDcmVhdGVGb250RihDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0RpY3Rpb25hcnkqIHBGb250RGljdCk7DQorDQorICAgIHN0YXRpYyBDUERGX0ZvbnQqCQlHZXRTdG9ja0ZvbnQoQ1BERl9Eb2N1bWVudCogcERvYywgRlhfQlNUUiBmb250bmFtZSk7DQorDQorICAgIHZpcnR1YWwgfkNQREZfRm9udCgpOw0KKw0KKw0KKw0KKw0KKyAgICBpbnQJCQkJCQlHZXRGb250VHlwZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0ZvbnRUeXBlOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQkJR2V0Rm9udFR5cGVOYW1lKCkgY29uc3Q7DQorDQorICAgIGNvbnN0IENGWF9CeXRlU3RyaW5nJglHZXRCYXNlRm9udCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0Jhc2VGb250Ow0KKyAgICB9DQorDQorICAgIGNvbnN0IENGWF9TdWJzdEZvbnQqCUdldFN1YnN0Rm9udCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0ZvbnQuR2V0U3Vic3RGb250KCk7DQorICAgIH0NCisNCisgICAgRlhfRFdPUkQJCQkJR2V0RmxhZ3MoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9GbGFnczsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc1ZlcnRXcml0aW5nKCljb25zdDsNCisNCisNCisNCisNCisgICAgQ1BERl9UeXBlMUZvbnQqCQkJR2V0VHlwZTFGb250KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fRm9udFR5cGUgPT0gUERGRk9OVF9UWVBFMSA/IChDUERGX1R5cGUxRm9udCopKHZvaWQqKXRoaXMgOiBOVUxMOw0KKyAgICB9DQorDQorICAgIENQREZfVHJ1ZVR5cGVGb250KgkJR2V0VHJ1ZVR5cGVGb250KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fRm9udFR5cGUgPT0gUERGRk9OVF9UUlVFVFlQRSA/IChDUERGX1RydWVUeXBlRm9udCopKHZvaWQqKXRoaXMgOiBOVUxMOw0KKyAgICB9DQorDQorICAgIENQREZfQ0lERm9udCoJCQlHZXRDSURGb250KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChtX0ZvbnRUeXBlID09IFBERkZPTlRfQ0lERk9OVCkgPyAoQ1BERl9DSURGb250Kikodm9pZCopdGhpcyA6IE5VTEw7DQorICAgIH0NCisNCisgICAgQ1BERl9UeXBlM0ZvbnQqCQkJR2V0VHlwZTNGb250KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChtX0ZvbnRUeXBlID09IFBERkZPTlRfVFlQRTMpID8gKENQREZfVHlwZTNGb250Kikodm9pZCopdGhpcyA6IE5VTEw7DQorICAgIH0NCisNCisNCisgICAgRlhfQk9PTAkJCQkJSXNFbWJlZGRlZCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0ZvbnRUeXBlID09IFBERkZPTlRfVFlQRTMgfHwgbV9wRm9udEZpbGUgIT0gTlVMTDsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc1VuaWNvZGVDb21wYXRpYmxlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorDQorICAgIENQREZfU3RyZWFtQWNjKgkJCUdldEZvbnRGaWxlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEZvbnRGaWxlOw0KKyAgICB9DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJCUdldEZvbnREaWN0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEZvbnREaWN0Ow0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJCUlzU3RhbmRhcmRGb250KCkgY29uc3Q7DQorDQorICAgIEZYRlRfRmFjZQkJCQlHZXRGYWNlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fRm9udC5HZXRGYWNlKCk7DQorICAgIH0NCisNCisNCisNCisgICAgdmlydHVhbCBGWF9EV09SRAkJR2V0TmV4dENoYXIoRlhfTFBDU1RSIHBTdHJpbmcsIGludCYgb2Zmc2V0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKEZYX0JZVEUpcFN0cmluZ1tvZmZzZXQrK107DQorICAgIH0NCisNCisgICAgdmlydHVhbCBpbnQJCQkJQ291bnRDaGFyKEZYX0xQQ1NUUiBwU3RyaW5nLCBpbnQgc2l6ZSkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHNpemU7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQkJQXBwZW5kQ2hhcihDRlhfQnl0ZVN0cmluZyYgc3RyLCBGWF9EV09SRCBjaGFyY29kZSkgY29uc3Q7DQorDQorICAgIHZpcnR1YWwgaW50CQkJCUFwcGVuZENoYXIoRlhfTFBTVFIgYnVmLCBGWF9EV09SRCBjaGFyY29kZSkgY29uc3QNCisgICAgew0KKyAgICAgICAgKmJ1ZiA9IChGWF9DSEFSKWNoYXJjb2RlOw0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBpbnQJCQkJR2V0Q2hhclNpemUoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorDQorDQorDQorDQorICAgIHZpcnR1YWwgaW50CQkJCUdseXBoRnJvbUNoYXJDb2RlKEZYX0RXT1JEIGNoYXJjb2RlLCBGWF9CT09MICpwVmVydEdseXBoID0gTlVMTCkgPSAwOw0KKyAgICB2aXJ0dWFsIGludAkJCQlHbHlwaEZyb21DaGFyQ29kZUV4dChGWF9EV09SRCBjaGFyY29kZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEdseXBoRnJvbUNoYXJDb2RlKGNoYXJjb2RlKTsNCisgICAgfQ0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCVVuaWNvZGVGcm9tQ2hhckNvZGUoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0Ow0KKw0KKyAgICBGWF9EV09SRAkJCQlDaGFyQ29kZUZyb21Vbmljb2RlKEZYX1dDSEFSIFVuaWNvZGUpIGNvbnN0Ow0KKw0KKyAgICBDRlhfQ2hhck1hcCoJCQlHZXRDaGFyTWFwKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcENoYXJNYXA7DQorICAgIH0NCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQlFbmNvZGVTdHJpbmcoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cikgY29uc3Q7DQorDQorICAgIENGWF9XaWRlU3RyaW5nCQkJRGVjb2RlU3RyaW5nKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIpIGNvbnN0Ow0KKw0KKw0KKw0KKw0KKyAgICB2b2lkCQkJCQlHZXRGb250QkJveChGWF9SRUNUJiByZWN0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZWN0ID0gbV9Gb250QkJveDsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQkJCQlHZXRUeXBlQXNjZW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fQXNjZW50Ow0KKyAgICB9DQorDQorICAgIGludAkJCQkJCUdldFR5cGVEZXNjZW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fRGVzY2VudDsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQkJCQlHZXRJdGFsaWNBbmdsZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0l0YWxpY0FuZ2xlOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJCUdldFN0ZW1WKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fU3RlbVY7DQorICAgIH0NCisNCisgICAgaW50CQkJCQkJR2V0U3RyaW5nV2lkdGgoY29uc3QgRlhfQ0hBUiogcFN0cmluZywgaW50IHNpemUpOw0KKw0KKyAgICB2aXJ0dWFsIGludAkJCQlHZXRDaGFyV2lkdGhGKEZYX0RXT1JEIGNoYXJjb2RlLCBpbnQgbGV2ZWwgPSAwKSA9IDA7DQorDQorICAgIHZpcnR1YWwgaW50CQkJCUdldENoYXJUeXBlV2lkdGgoRlhfRFdPUkQgY2hhcmNvZGUpOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlHZXRDaGFyQkJveChGWF9EV09SRCBjaGFyY29kZSwgRlhfUkVDVCYgcmVjdCwgaW50IGxldmVsID0gMCkgPSAwOw0KKw0KKw0KKw0KKyAgICBDUERGX0RvY3VtZW50KgkJCW1fcERvY3VtZW50Ow0KKw0KKyAgICBjbGFzcyBDRlhfUGF0aERhdGEqCQlMb2FkR2x5cGhQYXRoKEZYX0RXT1JEIGNoYXJjb2RlLCBpbnQgZGVzdF93aWR0aCA9IDApOw0KKw0KKyAgICBDRlhfRm9udAkJCQltX0ZvbnQ7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDUERGX0ZvbnQoKTsNCisNCisgICAgRlhfQk9PTAkJCQkJSW5pdGlhbGl6ZSgpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlMb2FkKCk7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCV9Mb2FkKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX1dDSEFSCQlfVW5pY29kZUZyb21DaGFyQ29kZShGWF9EV09SRCBjaGFyY29kZSkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECQlfQ2hhckNvZGVGcm9tVW5pY29kZShGWF9XQ0hBUiBVbmljb2RlKSBjb25zdCA9IDA7DQorDQorICAgIHZvaWQJCQkJCUxvYWRVbmljb2RlTWFwKCk7DQorDQorICAgIHZvaWQJCQkJCUxvYWRQREZFbmNvZGluZyhDUERGX09iamVjdCogcEVuY29kaW5nLCBpbnQmIGlCYXNlRW5jb2RpbmcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyomIHBDaGFyTmFtZXMsIEZYX0JPT0wgYkVtYmVkZGVkLCBGWF9CT09MIGJUcnVlVHlwZSk7DQorDQorICAgIHZvaWQJCQkJCUxvYWRGb250RGVzY3JpcHRvcihDUERGX0RpY3Rpb25hcnkqKTsNCisNCisgICAgdm9pZAkJCQkJTG9hZENoYXJXaWR0aHMoRlhfV09SRCogcFdpZHRocyk7DQorDQorICAgIHZvaWQJCQkJCUNoZWNrRm9udE1ldHJpY3MoKTsNCisNCisgICAgQ0ZYX0NoYXJNYXAqCQkJbV9wQ2hhck1hcDsNCisNCisNCisNCisgICAgaW50CQkJCQkJbV9Gb250VHlwZTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQltX0Jhc2VGb250Ow0KKw0KKyAgICBDUERGX1N0cmVhbUFjYyoJCQltX3BGb250RmlsZTsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wRm9udERpY3Q7DQorDQorICAgIENQREZfVG9Vbmljb2RlTWFwKgkJbV9wVG9Vbmljb2RlTWFwOw0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JUb1VuaWNvZGVMb2FkZWQ7DQorDQorDQorDQorDQorICAgIGludAkJCQkJCW1fRmxhZ3M7DQorDQorICAgIEZYX1JFQ1QJCQkJCW1fRm9udEJCb3g7DQorDQorICAgIGludAkJCQkJCW1fU3RlbVY7DQorDQorICAgIGludAkJCQkJCW1fQXNjZW50Ow0KKw0KKyAgICBpbnQJCQkJCQltX0Rlc2NlbnQ7DQorDQorICAgIGludAkJCQkJCW1fSXRhbGljQW5nbGU7DQorDQorfTsNCisjZGVmaW5lIFBERkZPTlRfRU5DT0RJTkdfQlVJTFRJTgkJMA0KKyNkZWZpbmUgUERGRk9OVF9FTkNPRElOR19XSU5BTlNJCQkxDQorI2RlZmluZSBQREZGT05UX0VOQ09ESU5HX01BQ1JPTUFOCQkyDQorI2RlZmluZSBQREZGT05UX0VOQ09ESU5HX01BQ0VYUEVSVAkJMw0KKyNkZWZpbmUgUERGRk9OVF9FTkNPRElOR19TVEFOREFSRAkJNA0KKyNkZWZpbmUgUERGRk9OVF9FTkNPRElOR19BRE9CRV9TWU1CT0wJNQ0KKyNkZWZpbmUgUERGRk9OVF9FTkNPRElOR19aQVBGRElOR0JBVFMJNg0KKyNkZWZpbmUgUERGRk9OVF9FTkNPRElOR19QREZET0MJCQk3DQorI2RlZmluZSBQREZGT05UX0VOQ09ESU5HX01TX1NZTUJPTAkJOA0KKyNkZWZpbmUgUERGRk9OVF9FTkNPRElOR19VTklDT0RFCQk5DQorY2xhc3MgQ1BERl9Gb250RW5jb2RpbmcgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfRm9udEVuY29kaW5nKCk7DQorDQorICAgIENQREZfRm9udEVuY29kaW5nKGludCBQcmVkZWZpbmVkRW5jb2RpbmcpOw0KKw0KKyAgICB2b2lkCQkJCQlMb2FkRW5jb2RpbmcoQ1BERl9PYmplY3QqIHBFbmNvZGluZyk7DQorDQorICAgIEZYX0JPT0wJCQkJCUlzSWRlbnRpY2FsKENQREZfRm9udEVuY29kaW5nKiBwQW5vdGhlcikgY29uc3Q7DQorDQorICAgIEZYX1dDSEFSCQkJCVVuaWNvZGVGcm9tQ2hhckNvZGUoRlhfQllURSBjaGFyY29kZSkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fVW5pY29kZXNbY2hhcmNvZGVdOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJCUNoYXJDb2RlRnJvbVVuaWNvZGUoRlhfV0NIQVIgdW5pY29kZSkgY29uc3Q7DQorDQorICAgIHZvaWQJCQkJCVNldFVuaWNvZGUoRlhfQllURSBjaGFyY29kZSwgRlhfV0NIQVIgdW5pY29kZSkNCisgICAgew0KKyAgICAgICAgbV9Vbmljb2Rlc1tjaGFyY29kZV0gPSB1bmljb2RlOw0KKyAgICB9DQorDQorICAgIENQREZfT2JqZWN0KgkJCVJlYWxpemUoKTsNCitwdWJsaWM6DQorDQorICAgIEZYX1dDSEFSCQkJCW1fVW5pY29kZXNbMjU2XTsNCit9Ow0KK2NsYXNzIENQREZfU2ltcGxlRm9udCA6IHB1YmxpYyBDUERGX0ZvbnQNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1NpbXBsZUZvbnQoKTsNCisNCisgICAgdmlydHVhbCB+Q1BERl9TaW1wbGVGb250KCk7DQorDQorICAgIENQREZfRm9udEVuY29kaW5nKgkJR2V0RW5jb2RpbmcoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gJm1fRW5jb2Rpbmc7DQorICAgIH0NCisgICAgdmlydHVhbCBpbnQJCQkJR2V0Q2hhcldpZHRoRihGWF9EV09SRCBjaGFyY29kZSwgaW50IGxldmVsID0gMCk7DQorICAgIHZpcnR1YWwgdm9pZAkJCUdldENoYXJCQm94KEZYX0RXT1JEIGNoYXJjb2RlLCBGWF9SRUNUJiByZWN0LCBpbnQgbGV2ZWwgPSAwKTsNCisgICAgdmlydHVhbCBpbnQJCQkJR2x5cGhGcm9tQ2hhckNvZGUoRlhfRFdPUkQgY2hhcmNvZGUsIEZYX0JPT0wgKnBWZXJ0R2x5cGggPSBOVUxMKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQkJSXNVbmljb2RlQ29tcGF0aWJsZSgpIGNvbnN0Ow0KK3Byb3RlY3RlZDoNCisNCisgICAgRlhfQk9PTAkJCQkJTG9hZENvbW1vbigpOw0KKw0KKyAgICB2b2lkCQkJCQlMb2FkU3Vic3RGb250KCk7DQorDQorICAgIHZvaWQJCQkJCUxvYWRGYWNlTWV0cmljcygpOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlMb2FkR2x5cGhNYXAoKSA9IDA7DQorICAgIHZpcnR1YWwgRlhfV0NIQVIJCV9Vbmljb2RlRnJvbUNoYXJDb2RlKEZYX0RXT1JEIGNoYXJjb2RlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9FbmNvZGluZy5Vbmljb2RlRnJvbUNoYXJDb2RlKChGWF9CWVRFKWNoYXJjb2RlKTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECQlfQ2hhckNvZGVGcm9tVW5pY29kZShGWF9XQ0hBUiBVbmljb2RlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9FbmNvZGluZy5DaGFyQ29kZUZyb21Vbmljb2RlKFVuaWNvZGUpOw0KKyAgICB9DQorDQorDQorDQorICAgIENQREZfRm9udEVuY29kaW5nCQltX0VuY29kaW5nOw0KKw0KKyAgICBGWF9XT1JECQkJCQltX0dseXBoSW5kZXhbMjU2XTsNCisgICAgRlhfV09SRAkJCQkJbV9FeHRHSURbMjU2XTsNCisNCisNCisNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcqCQkJbV9wQ2hhck5hbWVzOw0KKw0KKyAgICBpbnQJCQkJCQltX0Jhc2VFbmNvZGluZzsNCisNCisNCisNCisNCisgICAgRlhfV09SRAkJCQkJbV9DaGFyV2lkdGhbMjU2XTsNCisNCisgICAgRlhfU01BTExfUkVDVAkJCW1fQ2hhckJCb3hbMjU2XTsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iVXNlRm9udFdpZHRoOw0KKw0KKyAgICB2b2lkCQkJCQlMb2FkQ2hhck1ldHJpY3MoaW50IGNoYXJjb2RlKTsNCisNCit9Ow0KK2NsYXNzIENQREZfVHlwZTFGb250IDogcHVibGljIENQREZfU2ltcGxlRm9udA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfVHlwZTFGb250KCk7DQorDQorICAgIGludAkJCQkJCUdldEJhc2UxNEZvbnQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9CYXNlMTRGb250Ow0KKyAgICB9DQorICAgIHZpcnR1YWwgaW50CQkJCUdseXBoRnJvbUNoYXJDb2RlRXh0KEZYX0RXT1JEIGNoYXJjb2RlKTsNCitwcm90ZWN0ZWQ6DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCV9Mb2FkKCk7DQorDQorICAgIGludAkJCQkJCW1fQmFzZTE0Rm9udDsNCisgICAgdmlydHVhbCB2b2lkCQkJTG9hZEdseXBoTWFwKCk7DQorfTsNCitjbGFzcyBDUERGX1RydWVUeXBlRm9udCA6IHB1YmxpYyBDUERGX1NpbXBsZUZvbnQNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1RydWVUeXBlRm9udCgpOw0KK3Byb3RlY3RlZDoNCisgICAgdmlydHVhbCBGWF9CT09MCQkJX0xvYWQoKTsNCisgICAgdmlydHVhbCB2b2lkCQkJTG9hZEdseXBoTWFwKCk7DQorfTsNCitjbGFzcyBDUERGX1R5cGUzQ2hhciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9UeXBlM0NoYXIoKTsNCisNCisgICAgfkNQREZfVHlwZTNDaGFyKCk7DQorDQorICAgIEZYX0JPT0wgTG9hZEJpdG1hcChDUERGX1JlbmRlckNvbnRleHQqIHBDb250ZXh0KTsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iQ29sb3JlZDsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iUGFnZVJlcXVpcmVkOw0KKw0KKw0KKw0KKyAgICBDUERGX0Zvcm0qCQkJCW1fcEZvcm07DQorDQorICAgIENGWF9BZmZpbmVNYXRyaXgJCW1fSW1hZ2VNYXRyaXg7DQorDQorICAgIENGWF9ESUJpdG1hcCoJCQltX3BCaXRtYXA7DQorDQorDQorICAgIGludAkJCQkJCW1fV2lkdGg7DQorDQorICAgIEZYX1JFQ1QJCQkJCW1fQkJveDsNCit9Ow0KK2NsYXNzIENQREZfVHlwZTNGb250IDogcHVibGljIENQREZfU2ltcGxlRm9udA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfVHlwZTNGb250KCk7DQorICAgIHZpcnR1YWwgfkNQREZfVHlwZTNGb250KCk7DQorICAgIHZvaWQJCQkJCVNldFBhZ2VSZXNvdXJjZXMoQ1BERl9EaWN0aW9uYXJ5KiBwUmVzb3VyY2VzKQ0KKyAgICB7DQorICAgICAgICBtX3BQYWdlUmVzb3VyY2VzID0gcFJlc291cmNlczsNCisgICAgfQ0KKyAgICBDUERGX1R5cGUzQ2hhcioJCQlMb2FkQ2hhcihGWF9EV09SRCBjaGFyY29kZSwgaW50IGxldmVsID0gMCk7DQorICAgIHZpcnR1YWwgaW50CQkJCUdldENoYXJXaWR0aEYoRlhfRFdPUkQgY2hhcmNvZGUsIGludCBsZXZlbCA9IDApOw0KKyAgICB2aXJ0dWFsIGludAkJCQlHZXRDaGFyVHlwZVdpZHRoKEZYX0RXT1JEIGNoYXJjb2RlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0Q2hhcldpZHRoRihjaGFyY29kZSk7DQorICAgIH0NCisgICAgdmlydHVhbCB2b2lkCQkJR2V0Q2hhckJCb3goRlhfRFdPUkQgY2hhcmNvZGUsIEZYX1JFQ1QmIHJlY3QsIGludCBsZXZlbCA9IDApOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4JgkJR2V0Rm9udE1hdHJpeCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0ZvbnRNYXRyaXg7DQorICAgIH0NCisgICAgdm9pZAkJCQkJQ2hlY2tUeXBlM0ZvbnRNZXRyaWNzKCk7DQorcHJpdmF0ZToNCisgICAgdmlydHVhbCBGWF9CT09MCQkJX0xvYWQoKTsNCisgICAgdmlydHVhbCB2b2lkCQkJTG9hZEdseXBoTWFwKCkge30NCisgICAgaW50CQkJCQkJbV9DaGFyV2lkdGhMWzI1Nl07DQorICAgIENQREZfRGljdGlvbmFyeSoJCW1fcENoYXJQcm9jczsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wUGFnZVJlc291cmNlczsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wRm9udFJlc291cmNlczsNCisgICAgQ0ZYX01hcFB0clRvUHRyCQkJbV9DYWNoZU1hcDsNCisgICAgQ0ZYX01hcFB0clRvUHRyCQkJbV9EZWxldGVkTWFwOw0KK3Byb3RlY3RlZDoNCisgICAgQ0ZYX0FmZmluZU1hdHJpeAkJbV9Gb250TWF0cml4Ow0KK307DQorI2RlZmluZSBDSURTRVRfVU5LTk9XTgkJMA0KKyNkZWZpbmUgQ0lEU0VUX0dCMQkJCTENCisjZGVmaW5lIENJRFNFVF9DTlMxCQkJMg0KKyNkZWZpbmUgQ0lEU0VUX0pBUEFOMQkJMw0KKyNkZWZpbmUgQ0lEU0VUX0tPUkVBMQkJNA0KKyNkZWZpbmUgQ0lEU0VUX1VOSUNPREUJCTUNCitjbGFzcyBDUERGX0NJREZvbnQgOiBwdWJsaWMgQ1BERl9Gb250DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9DSURGb250KCk7DQorDQorICAgIHZpcnR1YWwgfkNQREZfQ0lERm9udCgpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlMb2FkR0IyMzEyKCk7DQorICAgIHZpcnR1YWwgaW50CQkJCUdseXBoRnJvbUNoYXJDb2RlKEZYX0RXT1JEIGNoYXJjb2RlLCBGWF9CT09MICpwVmVydEdseXBoID0gTlVMTCk7DQorICAgIHZpcnR1YWwgaW50CQkJCUdldENoYXJXaWR0aEYoRlhfRFdPUkQgY2hhcmNvZGUsIGludCBsZXZlbCA9IDApOw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlHZXRDaGFyQkJveChGWF9EV09SRCBjaGFyY29kZSwgRlhfUkVDVCYgcmVjdCwgaW50IGxldmVsID0gMCk7DQorDQorICAgIEZYX1dPUkQJCQkJCUNJREZyb21DaGFyQ29kZShGWF9EV09SRCBjaGFyY29kZSkgY29uc3Q7DQorDQorICAgIEZYX0JPT0wJCQkJCUlzVHJ1ZVR5cGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gIW1fYlR5cGUxOw0KKyAgICB9DQorDQorDQorICAgIHZpcnR1YWwgRlhfRFdPUkQJCUdldE5leHRDaGFyKGNvbnN0IEZYX0NIQVIqIHBTdHJpbmcsIGludCYgb2Zmc2V0KSBjb25zdDsNCisgICAgdmlydHVhbCBpbnQJCQkJQ291bnRDaGFyKGNvbnN0IEZYX0NIQVIqIHBTdHJpbmcsIGludCBzaXplKSBjb25zdDsNCisgICAgdmlydHVhbCBpbnQJCQkJQXBwZW5kQ2hhcihGWF9MUFNUUiBzdHIsIEZYX0RXT1JEIGNoYXJjb2RlKSBjb25zdDsNCisgICAgdmlydHVhbCBpbnQJCQkJR2V0Q2hhclNpemUoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0Ow0KKw0KKw0KKyAgICBpbnQJCQkJCQlHZXRDaGFyc2V0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fQ2hhcnNldDsNCisgICAgfQ0KKw0KKyAgICBGWF9MUENCWVRFCQkJCUdldENJRFRyYW5zZm9ybShGWF9XT1JEIENJRCkgY29uc3Q7DQorDQorDQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCUlzVmVydFdyaXRpbmcoKSBjb25zdDsNCisNCisgICAgc2hvcnQJCQkJCUdldFZlcnRXaWR0aChGWF9XT1JEIENJRCkgY29uc3Q7DQorDQorICAgIHZvaWQJCQkJCUdldFZlcnRPcmlnaW4oRlhfV09SRCBDSUQsIHNob3J0JiB2eCwgc2hvcnQmIHZ5KSBjb25zdDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJSXNVbmljb2RlQ29tcGF0aWJsZSgpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc0ZvbnRTdHlsZUZyb21DaGFyQ29kZShGWF9EV09SRCBjaGFyY29kZSkgY29uc3Q7DQorcHJvdGVjdGVkOg0KKyAgICBmcmllbmQgY2xhc3MJCQlDUERGX0ZvbnQ7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCV9Mb2FkKCk7DQorICAgIHZpcnR1YWwgRlhfV0NIQVIJCV9Vbmljb2RlRnJvbUNoYXJDb2RlKEZYX0RXT1JEIGNoYXJjb2RlKSBjb25zdDsNCisgICAgdmlydHVhbCBGWF9EV09SRAkJX0NoYXJDb2RlRnJvbVVuaWNvZGUoRlhfV0NIQVIgVW5pY29kZSkgY29uc3Q7DQorICAgIGludAkJCQlHZXRHbHlwaEluZGV4KEZYX0RXT1JEIHVuaWNvZGViLCBGWF9CT09MICpwVmVydEdseXBoKTsNCisNCisgICAgQ1BERl9DTWFwKgkJCQltX3BDTWFwOw0KKw0KKyAgICBDUERGX0NNYXAqCQkJCW1fcEFsbG9jYXRlZENNYXA7DQorDQorICAgIENQREZfQ0lEMlVuaWNvZGVNYXAqCW1fcENJRDJVbmljb2RlTWFwOw0KKw0KKyAgICBpbnQJCQkJCQltX0NoYXJzZXQ7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYlR5cGUxOw0KKw0KKyAgICBDUERGX1N0cmVhbUFjYyoJCQltX3BDSURUb0dJRE1hcDsNCisgICAgRlhfQk9PTAkJCQkJbV9iQ0lESXNHSUQ7DQorDQorDQorDQorICAgIEZYX1dPUkQJCQkJCW1fRGVmYXVsdFdpZHRoOw0KKw0KKyAgICBGWF9XT1JEKgkJCQltX3BBbnNpV2lkdGhzOw0KKw0KKyAgICBGWF9TTUFMTF9SRUNUCQkJbV9DaGFyQkJveFsyNTZdOw0KKw0KKyAgICBDRlhfRFdvcmRBcnJheQkJCW1fV2lkdGhMaXN0Ow0KKw0KKyAgICBzaG9ydAkJCQkJbV9EZWZhdWx0Vlk7DQorDQorICAgIHNob3J0CQkJCQltX0RlZmF1bHRXMTsNCisNCisgICAgQ0ZYX0RXb3JkQXJyYXkJCQltX1ZlcnRNZXRyaWNzOw0KKw0KKw0KKyAgICB2b2lkCQkJCQlMb2FkTWV0cmljc0FycmF5KENQREZfQXJyYXkqIHBBcnJheSwgQ0ZYX0RXb3JkQXJyYXkmIHJlc3VsdCwgaW50IG5FbGVtZW50cyk7DQorDQorICAgIHZvaWQJCQkJCUxvYWRTdWJzdEZvbnQoKTsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iQWRvYmVDb3VyaWVyU3RkOw0KKw0KKyAgICBDRlhfQ1RUR1NVQlRhYmxlKgkJCW1fcFRUR1NVQlRhYmxlOw0KK307DQorI2RlZmluZSBQREZDU19ERVZJQ0VHUkFZCQkxDQorDQorI2RlZmluZSBQREZDU19ERVZJQ0VSR0IJCQkyDQorI2RlZmluZSBQREZDU19ERVZJQ0VDTVlLCQkzDQorI2RlZmluZSBQREZDU19DQUxHUkFZCQkJNA0KKyNkZWZpbmUgUERGQ1NfQ0FMUkdCCQkJNQ0KKyNkZWZpbmUgUERGQ1NfTEFCCQkJCTYNCisjZGVmaW5lIFBERkNTX0lDQ0JBU0VECQkJNw0KKyNkZWZpbmUgUERGQ1NfU0VQQVJBVElPTgkJOA0KKyNkZWZpbmUgUERGQ1NfREVWSUNFTgkJCTkNCisjZGVmaW5lIFBERkNTX0lOREVYRUQJCQkxMA0KKyNkZWZpbmUgUERGQ1NfUEFUVEVSTgkJCTExDQorY2xhc3MgQ1BERl9Db2xvclNwYWNlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ1BERl9Db2xvclNwYWNlKiBHZXRTdG9ja0NTKGludCBGYW1pbHkpOw0KKw0KKyAgICBzdGF0aWMgQ1BERl9Db2xvclNwYWNlKglMb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfT2JqZWN0KiBwQ1NPYmopOw0KKw0KKyAgICB2b2lkCQkJCQlSZWxlYXNlQ1MoKTsNCisNCisgICAgaW50CQkJCQkJR2V0QnVmU2l6ZSgpIGNvbnN0Ow0KKw0KKyAgICBGWF9GTE9BVCoJCQlDcmVhdGVCdWYoKTsNCisNCisgICAgdm9pZAkJCQkJR2V0RGVmYXVsdENvbG9yKEZYX0ZMT0FUKiBidWYpIGNvbnN0Ow0KKw0KKyAgICBpbnQJCQkJCQlDb3VudENvbXBvbmVudHMoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uQ29tcG9uZW50czsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQkJCQlHZXRGYW1pbHkoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9GYW1pbHk7DQorICAgIH0NCisNCisgICAgdmlydHVhbCB2b2lkCQkJR2V0RGVmYXVsdFZhbHVlKGludCBpQ29tcG9uZW50LCBGWF9GTE9BVCYgdmFsdWUsIEZYX0ZMT0FUJiBtaW4sIEZYX0ZMT0FUJiBtYXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHZhbHVlID0gMDsNCisgICAgICAgIG1pbiA9IDA7DQorICAgICAgICBtYXggPSAxLjBmOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJCXNSR0IoKSBjb25zdDsNCisNCisNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJR2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCVNldFJHQihGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQgUiwgRlhfRkxPQVQgRywgRlhfRkxPQVQgQikgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorDQorDQorDQorDQorICAgIEZYX0JPT0wJCQkJCUdldENNWUsoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUJiBjLCBGWF9GTE9BVCYgbSwgRlhfRkxPQVQmIHksIEZYX0ZMT0FUJiBrKSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCQkJU2V0Q01ZSyhGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQgYywgRlhfRkxPQVQgbSwgRlhfRkxPQVQgeSwgRlhfRkxPQVQgaykgY29uc3Q7DQorDQorDQorICAgIHZpcnR1YWwgdm9pZAkJCVRyYW5zbGF0ZUltYWdlTGluZShGWF9MUEJZVEUgZGVzdF9idWYsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgaW50IHBpeGVscywNCisgICAgICAgICAgICBpbnQgaW1hZ2Vfd2lkdGgsIGludCBpbWFnZV9oZWlnaHQsIEZYX0JPT0wgYlRyYW5zTWFzayA9IEZBTFNFKSBjb25zdDsNCisNCisgICAgQ1BERl9BcnJheSomCQkJR2V0QXJyYXkoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wQXJyYXk7DQorICAgIH0NCisNCisgICAgaW50CQkJCQkJR2V0TWF4SW5kZXgoKSBjb25zdDsNCisNCisgICAgdmlydHVhbCBDUERGX0NvbG9yU3BhY2UqCUdldEJhc2VDUygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCUVuYWJsZVN0ZENvbnZlcnNpb24oRlhfQk9PTCBiRW5hYmxlZCk7DQorICAgIENQREZfRG9jdW1lbnQqCQkJbV9wRG9jdW1lbnQ7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDUERGX0NvbG9yU3BhY2UoKTsNCisNCisgICAgdmlydHVhbCB+Q1BERl9Db2xvclNwYWNlKCkge30NCisgICAgdmlydHVhbCBGWF9CT09MCQkJdl9Mb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfQXJyYXkqIHBBcnJheSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9CT09MCQkJdl9HZXRDTVlLKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgYywgRlhfRkxPQVQmIG0sIEZYX0ZMT0FUJiB5LCBGWF9GTE9BVCYgaykgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCXZfU2V0Q01ZSyhGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQgYywgRlhfRkxPQVQgbSwgRlhfRkxPQVQgeSwgRlhfRkxPQVQgaykgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJCW1fRmFtaWx5Ow0KKw0KKyAgICBpbnQJCQkJCQltX25Db21wb25lbnRzOw0KKw0KKyAgICBDUERGX0FycmF5KgkJCQltX3BBcnJheTsNCisNCisgICAgRlhfRFdPUkQJCQkJbV9kd1N0ZENvbnZlcnNpb247DQorfTsNCitjbGFzcyBDUERGX0NvbG9yIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0NvbG9yKCkNCisgICAgew0KKyAgICAgICAgbV9wQnVmZmVyID0gTlVMTDsNCisgICAgICAgIG1fcENTID0gTlVMTDsNCisgICAgfQ0KKw0KKyAgICBDUERGX0NvbG9yKGludCBmYW1pbHkpOw0KKw0KKyAgICB+Q1BERl9Db2xvcigpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlJc051bGwoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wQnVmZmVyID09IE5VTEw7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQkJSXNFcXVhbChjb25zdCBDUERGX0NvbG9yJiBvdGhlcikgY29uc3Q7DQorDQorICAgIEZYX0JPT0wJCQkJCUlzUGF0dGVybigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BDUyAmJiBtX3BDUy0+R2V0RmFtaWx5KCkgPT0gUERGQ1NfUEFUVEVSTjsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCQlDb3B5KGNvbnN0IENQREZfQ29sb3IqIHBTcmMpOw0KKw0KKyAgICB2b2lkCQkJCQlTZXRDb2xvclNwYWNlKENQREZfQ29sb3JTcGFjZSogcENTKTsNCisNCisgICAgdm9pZAkJCQkJU2V0VmFsdWUoRlhfRkxPQVQqIGNvbXApOw0KKw0KKyAgICB2b2lkCQkJCQlTZXRWYWx1ZShDUERGX1BhdHRlcm4qIHBQYXR0ZXJuLCBGWF9GTE9BVCogY29tcCwgaW50IG5jb21wcyk7DQorDQorICAgIEZYX0JPT0wJCQkJCUdldFJHQihpbnQmIFIsIGludCYgRywgaW50JiBCKSBjb25zdDsNCisNCisgICAgQ1BERl9QYXR0ZXJuKgkJCUdldFBhdHRlcm4oKSBjb25zdDsNCisNCisgICAgQ1BERl9Db2xvclNwYWNlKgkJR2V0UGF0dGVybkNTKCkgY29uc3Q7DQorDQorICAgIEZYX0ZMT0FUKgkJCUdldFBhdHRlcm5Db2xvcigpIGNvbnN0Ow0KKw0KKyAgICBDUERGX0NvbG9yU3BhY2UqCQltX3BDUzsNCisNCisgICAgRlhfRkxPQVQqCQkJbV9wQnVmZmVyOw0KK3Byb3RlY3RlZDoNCisgICAgdm9pZAlSZWxlYXNlQnVmZmVyKCk7DQorICAgIHZvaWQJUmVsZWFzZUNvbG9yU3BhY2UoKTsNCit9Ow0KKyNkZWZpbmUgUEFUVEVSTl9USUxJTkcJCTENCisjZGVmaW5lIFBBVFRFUk5fU0hBRElORwkJMg0KK2NsYXNzIENQREZfUGF0dGVybiA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCB+Q1BERl9QYXR0ZXJuKCkge30NCisNCisgICAgQ1BERl9PYmplY3QqCQkJbV9wUGF0dGVybk9iajsNCisNCisgICAgaW50CQkJCQkJbV9QYXR0ZXJuVHlwZTsNCisNCisgICAgQ0ZYX0FmZmluZU1hdHJpeAkJbV9QYXR0ZXJuMkZvcm07DQorICAgIENGWF9BZmZpbmVNYXRyaXgJCW1fUGFyZW50TWF0cml4Ow0KKw0KKyAgICBDUERGX0RvY3VtZW50KgkJCW1fcERvY3VtZW50Ow0KKw0KK3Byb3RlY3RlZDoNCisNCisgICAgQ1BERl9QYXR0ZXJuKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBQYXJlbnRNYXRyaXgpDQorICAgIHsNCisgICAgICAgIGlmIChwUGFyZW50TWF0cml4KSB7DQorICAgICAgICAgICAgbV9QYXJlbnRNYXRyaXggPSAqcFBhcmVudE1hdHJpeDsNCisgICAgICAgIH0NCisgICAgfQ0KK307DQorY2xhc3MgQ1BERl9UaWxpbmdQYXR0ZXJuIDogcHVibGljIENQREZfUGF0dGVybg0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfVGlsaW5nUGF0dGVybihDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX09iamVjdCogcFBhdHRlcm5PYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBhcmVudE1hdHJpeCk7DQorDQorICAgIHZpcnR1YWwgfkNQREZfVGlsaW5nUGF0dGVybigpOw0KKw0KKyAgICBGWF9CT09MCQkJCUxvYWQoKTsNCisNCisNCisNCisgICAgRlhfQk9PTAkJCQltX2JDb2xvcmVkOw0KKw0KKyAgICBDRlhfRmxvYXRSZWN0CQltX0JCb3g7DQorDQorICAgIEZYX0ZMT0FUCQkJbV9YU3RlcDsNCisNCisgICAgRlhfRkxPQVQJCQltX1lTdGVwOw0KKw0KKw0KKw0KKyAgICBDUERGX0Zvcm0qCQkJbV9wRm9ybTsNCit9Ow0KK2NsYXNzIENQREZfU2hhZGluZ1BhdHRlcm4gOiBwdWJsaWMgQ1BERl9QYXR0ZXJuDQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9TaGFkaW5nUGF0dGVybihDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX09iamVjdCogcFBhdHRlcm5PYmosIEZYX0JPT0wgYlNoYWRpbmcsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBhcmVudE1hdHJpeCk7DQorDQorICAgIHZpcnR1YWwgfkNQREZfU2hhZGluZ1BhdHRlcm4oKTsNCisNCisgICAgQ1BERl9PYmplY3QqCQltX3BTaGFkaW5nT2JqOw0KKw0KKyAgICBGWF9CT09MCQkJCW1fYlNoYWRpbmdPYmo7DQorDQorICAgIEZYX0JPT0wJCQkJTG9hZCgpOw0KKw0KKyAgICBGWF9CT09MCQkJCVJlbG9hZCgpOw0KKw0KKyAgICBpbnQJCQkJCW1fU2hhZGluZ1R5cGU7DQorDQorICAgIENQREZfQ29sb3JTcGFjZSoJbV9wQ1M7DQorDQorDQorICAgIENQREZfRnVuY3Rpb24qCQltX3BGdW5jdGlvbnNbNF07DQorDQorICAgIGludAkJCQkJbV9uRnVuY3M7DQorcHJvdGVjdGVkOg0KKyAgICB2b2lkCUNsZWFyKCk7DQorfTsNCitzdHJ1Y3QgQ1BERl9NZXNoVmVydGV4IHsNCisgICAgRlhfRkxPQVQgeCwgeTsNCisgICAgRlhfRkxPQVQgciwgZywgYjsNCit9Ow0KK2NsYXNzIENQREZfTWVzaFN0cmVhbSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgRlhfQk9PTAkJCQlMb2FkKENQREZfU3RyZWFtKiBwU2hhZGluZ1N0cmVhbSwgQ1BERl9GdW5jdGlvbioqIHBGdW5jcywgaW50IG5GdW5jcywgQ1BERl9Db2xvclNwYWNlKiBwQ1MpOw0KKw0KKyAgICBGWF9EV09SRAkJCUdldEZsYWcoKTsNCisNCisgICAgdm9pZAkJCQlHZXRDb29yZHMoRlhfRkxPQVQmIHgsIEZYX0ZMT0FUJiB5KTsNCisNCisgICAgdm9pZAkJCQlHZXRDb2xvcihGWF9GTE9BVCYgciwgRlhfRkxPQVQmIGcsIEZYX0ZMT0FUJiBiKTsNCisNCisgICAgRlhfRFdPUkQgCQkJR2V0VmVydGV4KENQREZfTWVzaFZlcnRleCYgdmVydGV4LCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkJpdG1hcCk7DQorDQorICAgIEZYX0JPT0wJCQkJR2V0VmVydGV4Um93KENQREZfTWVzaFZlcnRleCogdmVydGV4LCBpbnQgY291bnQsIENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyQml0bWFwKTsNCisgICAgQ1BERl9GdW5jdGlvbioqCW1fcEZ1bmNzOw0KKyAgICBDUERGX0NvbG9yU3BhY2UqCW1fcENTOw0KKyAgICBGWF9EV09SRAkJCW1fbkZ1bmNzLCBtX25Db29yZEJpdHMsIG1fbkNvbXBCaXRzLCBtX25GbGFnQml0cywgbV9uQ29tcHM7DQorICAgIEZYX0RXT1JECQkJbV9Db29yZE1heCwgbV9Db21wTWF4Ow0KKyAgICBGWF9GTE9BVAkJCW1feG1pbiwgbV94bWF4LCBtX3ltaW4sIG1feW1heDsNCisgICAgRlhfRkxPQVQJCQltX0NvbG9yTWluWzhdLCBtX0NvbG9yTWF4WzhdOw0KKyAgICBDUERGX1N0cmVhbUFjYwkJbV9TdHJlYW07DQorICAgIENGWF9CaXRTdHJlYW0JCW1fQml0U3RyZWFtOw0KK307DQorI2RlZmluZSBQREZfSU1BR0VfTk9fQ09NUFJFU1MJCQkJMHgwMDAwDQorI2RlZmluZSBQREZfSU1BR0VfTE9TU1lfQ09NUFJFU1MJCQkweDAwMDENCisjZGVmaW5lIFBERl9JTUFHRV9MT1NTTEVTU19DT01QUkVTUwkJCTB4MDAwMg0KKyNkZWZpbmUgUERGX0lNQUdFX01BU0tfTE9TU1lfQ09NUFJFU1MJCTB4MDAwNA0KKyNkZWZpbmUgUERGX0lNQUdFX01BU0tfTE9TU0xFU1NfQ09NUFJFU1MJMHgwMDA4DQorY2xhc3MgQ1BERl9JbWFnZVNldFBhcmFtDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9JbWFnZVNldFBhcmFtKCkNCisgICAgICAgIDogcE1hdHRlQ29sb3IoTlVMTCkNCisgICAgICAgICwgblF1YWxpdHkoODApDQorICAgIHsNCisgICAgfQ0KKyAgICBGWF9BUkdCKiBwTWF0dGVDb2xvcjsNCisgICAgRlhfSU5UMzIgblF1YWxpdHk7DQorfTsNCitjbGFzcyBDUERGX0ltYWdlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0ltYWdlKENQREZfRG9jdW1lbnQqIHBEb2MpOw0KKw0KKyAgICB+Q1BERl9JbWFnZSgpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlMb2FkSW1hZ2VGKENQREZfU3RyZWFtKiBwSW1hZ2VTdHJlYW0sIEZYX0JPT0wgYklubGluZSk7DQorDQorICAgIHZvaWQJCQkJCVJlbGVhc2UoKTsNCisNCisgICAgQ1BERl9JbWFnZSoJCQkJQ2xvbmUoKTsNCisNCisgICAgRlhfQk9PTAkJCQkJSXNJbmxpbmUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iSW5saW5lOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCVNldElubGluZURpY3QoQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCkNCisgICAgew0KKyAgICAgICAgbV9wSW5saW5lRGljdCA9IHBEaWN0Ow0KKyAgICB9DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJCUdldElubGluZURpY3QoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wSW5saW5lRGljdDsNCisgICAgfQ0KKw0KKyAgICBDUERGX1N0cmVhbSoJCQlHZXRTdHJlYW0oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wU3RyZWFtOw0KKyAgICB9DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJCUdldERpY3QoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wU3RyZWFtLT5HZXREaWN0KCk7DQorICAgIH0NCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJR2V0T0MoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT0M7DQorICAgIH0NCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCQlHZXREb2N1bWVudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEb2N1bWVudDsNCisgICAgfQ0KKw0KKw0KKw0KKyAgICBGWF9JTlQzMgkJCQlHZXRQaXhlbEhlaWdodCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0hlaWdodDsNCisgICAgfQ0KKw0KKyAgICBGWF9JTlQzMgkJCQlHZXRQaXhlbFdpZHRoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fV2lkdGg7DQorICAgIH0NCisNCisNCisgICAgRlhfQk9PTAkJCQkJSXNNYXNrKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fYklzTWFzazsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCQlJc0ludGVycG9sKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fYkludGVycG9sYXRlOw0KKyAgICB9DQorDQorICAgIENGWF9ESUJTb3VyY2UqCQkJTG9hZERJQlNvdXJjZShDRlhfRElCU291cmNlKiogcHBNYXNrID0gTlVMTCwgRlhfRFdPUkQqIHBNYXR0ZUNvbG9yID0gTlVMTCwgRlhfQk9PTCBiU3RkQ1MgPSBGQUxTRSwgRlhfRFdPUkQgR3JvdXBGYW1pbHkgPSAwLCBGWF9CT09MIGJMb2FkTWFzayA9IEZBTFNFKSBjb25zdDsNCisNCisNCisNCisgICAgdm9pZAkJCQkJU2V0SW1hZ2UoY29uc3QgQ0ZYX0RJQml0bWFwKiBwRElCaXRtYXAsIEZYX0lOVDMyIGlDb21wcmVzcywgSUZYX0ZpbGVXcml0ZSAqcEZpbGVXcml0ZSA9IE5VTEwsIElGWF9GaWxlUmVhZCAqcEZpbGVSZWFkID0gTlVMTCwgY29uc3QgQ0ZYX0RJQml0bWFwKiBwTWFzayA9IE5VTEwsIGNvbnN0IENQREZfSW1hZ2VTZXRQYXJhbSogcFBhcmFtID0gTlVMTCk7DQorDQorICAgIHZvaWQJCQkJCVNldEpwZWdJbWFnZShGWF9CWVRFKiBwSW1hZ2VEYXRhLCBGWF9EV09SRCBzaXplKTsNCisNCisgICAgdm9pZAkJCQkJU2V0SnBlZ0ltYWdlKElGWF9GaWxlUmVhZCAqcEZpbGUpOw0KKw0KKyAgICB2b2lkCQkJCQlSZXNldENhY2hlKENQREZfUGFnZSogcFBhZ2UsIGNvbnN0IENGWF9ESUJpdG1hcCogcERJQml0bWFwKTsNCisNCitwdWJsaWM6DQorICAgIEZYX0JPT0wJCQkJCVN0YXJ0TG9hZERJQlNvdXJjZShDUERGX0RpY3Rpb25hcnkqIHBGb3JtUmVzb3VyY2UsIENQREZfRGljdGlvbmFyeSogcFBhZ2VSZXNvdXJjZSwgRlhfQk9PTCBiU3RkQ1MgPSBGQUxTRSwgRlhfRFdPUkQgR3JvdXBGYW1pbHkgPSAwLCBGWF9CT09MIGJMb2FkTWFzayA9IEZBTFNFKTsNCisgICAgRlhfQk9PTAkJCQkJQ29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBDRlhfRElCU291cmNlKgkJCURldGFjaEJpdG1hcCgpOw0KKyAgICBDRlhfRElCU291cmNlKgkJCURldGFjaE1hc2soKTsNCisgICAgQ0ZYX0RJQlNvdXJjZSoJCQltX3BESUJTb3VyY2U7DQorICAgIENGWF9ESUJTb3VyY2UqCQkJbV9wTWFzazsNCisgICAgRlhfRFdPUkQJCQkJbV9NYXR0ZUNvbG9yOw0KK3ByaXZhdGU6DQorDQorICAgIENQREZfU3RyZWFtKgkJCW1fcFN0cmVhbTsNCisgICAgRlhfQk9PTAkJCQkJbV9iSW5saW5lOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQltX3BJbmxpbmVEaWN0Ow0KKw0KKyAgICBGWF9JTlQzMgkJCQltX0hlaWdodDsNCisNCisgICAgRlhfSU5UMzIJCQkJbV9XaWR0aDsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iSXNNYXNrOw0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JJbnRlcnBvbGF0ZTsNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCQltX3BEb2N1bWVudDsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wT0M7DQorICAgIENQREZfRGljdGlvbmFyeSoJSW5pdEpQRUcoRlhfTFBCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplKTsNCit9Ow0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZfc2VyaWFsLmggYi9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3NlcmlhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMTY0MmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3NlcmlhbC5oCkBAIC0wLDAgKzEsMjAzIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9GUERGX1NFUklBTF8NCisjZGVmaW5lIF9GUERGX1NFUklBTF8NCisjaWZuZGVmIF9GUERGX1BBR0VfDQorI2luY2x1ZGUgImZwZGZfcGFnZS5oIg0KKyNlbmRpZg0KKyNpZm5kZWYgX0ZQREZfUEFHRU9CSl9IXw0KKyNpbmNsdWRlICJmcGRmX3BhZ2VvYmouaCINCisjZW5kaWYNCitjbGFzcyBDUERGX09iamVjdFN0cmVhbTsNCitjbGFzcyBDUERGX1hSZWZTdHJlYW07DQorQ0ZYX0J5dGVUZXh0QnVmJiBvcGVyYXRvciA8PCAoQ0ZYX0J5dGVUZXh0QnVmJiBidWYsIGNvbnN0IENQREZfT2JqZWN0KiBwT2JqKTsNCitjbGFzcyBDUERGX09iakFyY2hpdmVTYXZlciA6IHB1YmxpYyBDRlhfQXJjaGl2ZVNhdmVyDQorew0KK3B1YmxpYzoNCisNCisgICAgZnJpZW5kIENQREZfT2JqQXJjaGl2ZVNhdmVyJglvcGVyYXRvciA8PCAoQ1BERl9PYmpBcmNoaXZlU2F2ZXImIGFyLCBjb25zdCBDUERGX09iamVjdCogcE9iaik7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDRlhfTWFwUHRyVG9QdHIJCQltX09iamVjdE1hcDsNCit9Ow0KK2NsYXNzIENQREZfT2JqQXJjaGl2ZUxvYWRlciA6IHB1YmxpYyBDRlhfQXJjaGl2ZUxvYWRlcg0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfT2JqQXJjaGl2ZUxvYWRlcihGWF9MUENCWVRFIHBEYXRhLCBGWF9EV09SRCBkd1NpemUpIDogQ0ZYX0FyY2hpdmVMb2FkZXIocERhdGEsIGR3U2l6ZSksDQorICAgICAgICBtX0luZGlyZWN0T2JqZWN0cyhOVUxMKSB7fQ0KKw0KKyAgICBmcmllbmQgQ1BERl9PYmpBcmNoaXZlTG9hZGVyJglvcGVyYXRvciA+PiAoQ1BERl9PYmpBcmNoaXZlTG9hZGVyJiBhciwgQ1BERl9PYmplY3QqJiBwT2JqKTsNCitwcm90ZWN0ZWQ6DQorDQorICAgIENQREZfSW5kaXJlY3RPYmplY3RzCQltX0luZGlyZWN0T2JqZWN0czsNCit9Ow0KK2NsYXNzIENQREZfUGFnZUFyY2hpdmVTYXZlciA6IHB1YmxpYyBDUERGX09iakFyY2hpdmVTYXZlcg0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfUGFnZUFyY2hpdmVTYXZlcihDUERGX1BhZ2VPYmplY3RzKiBwUGFnZU9ianMpOw0KKw0KKyAgICBmcmllbmQgQ1BERl9QYWdlQXJjaGl2ZVNhdmVyJglvcGVyYXRvciA8PCAoQ1BERl9QYWdlQXJjaGl2ZVNhdmVyJiBhciwgQ1BERl9QYWdlT2JqZWN0KiBwT2JqKTsNCisNCisNCisNCisgICAgZnJpZW5kIENQREZfUGFnZUFyY2hpdmVTYXZlciYJb3BlcmF0b3IgPDwgKENQREZfUGFnZUFyY2hpdmVTYXZlciYgYXIsIENQREZfQ2xpcFBhdGggY2xpcF9wYXRoKTsNCisNCisgICAgZnJpZW5kIENQREZfUGFnZUFyY2hpdmVTYXZlciYJb3BlcmF0b3IgPDwgKENQREZfUGFnZUFyY2hpdmVTYXZlciYgYXIsIENQREZfR3JhcGhTdGF0ZSBncmFwaF9zdGF0ZSk7DQorDQorICAgIGZyaWVuZCBDUERGX1BhZ2VBcmNoaXZlU2F2ZXImCW9wZXJhdG9yIDw8IChDUERGX1BhZ2VBcmNoaXZlU2F2ZXImIGFyLCBDUERGX1RleHRTdGF0ZSB0ZXh0X3N0YXRlKTsNCisNCisgICAgZnJpZW5kIENQREZfUGFnZUFyY2hpdmVTYXZlciYJb3BlcmF0b3IgPDwgKENQREZfUGFnZUFyY2hpdmVTYXZlciYgYXIsIENQREZfQ29sb3JTdGF0ZSBjb2xvcl9zdGF0ZSk7DQorDQorICAgIGZyaWVuZCBDUERGX1BhZ2VBcmNoaXZlU2F2ZXImCW9wZXJhdG9yIDw8IChDUERGX1BhZ2VBcmNoaXZlU2F2ZXImIGFyLCBDUERGX0dlbmVyYWxTdGF0ZSBnZW5lcmFsX3N0YXRlKTsNCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIENQREZfQ2xpcFBhdGgJCW1fTGFzdENsaXBQYXRoOw0KKw0KKyAgICBDUERGX0dyYXBoU3RhdGUJCW1fTGFzdEdyYXBoU3RhdGU7DQorDQorICAgIENQREZfQ29sb3JTdGF0ZQkJbV9MYXN0Q29sb3JTdGF0ZTsNCisNCisgICAgQ1BERl9UZXh0U3RhdGUJCW1fTGFzdFRleHRTdGF0ZTsNCisNCisgICAgQ1BERl9HZW5lcmFsU3RhdGUJbV9MYXN0R2VuZXJhbFN0YXRlOw0KKw0KKyAgICBDUERGX1BhZ2VPYmplY3RzKgltX3BDdXJQYWdlOw0KK307DQorY2xhc3MgQ1BERl9QYWdlQXJjaGl2ZUxvYWRlciA6IHB1YmxpYyBDUERGX09iakFyY2hpdmVMb2FkZXINCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1BhZ2VBcmNoaXZlTG9hZGVyKENQREZfUGFnZU9iamVjdHMqIHBQYWdlT2JqcywgRlhfTFBDQllURSBwRGF0YSwgRlhfRFdPUkQgZHdTaXplKTsNCisNCisgICAgZnJpZW5kIENQREZfUGFnZUFyY2hpdmVMb2FkZXImCW9wZXJhdG9yID4+IChDUERGX1BhZ2VBcmNoaXZlTG9hZGVyJiBhciwgQ1BERl9QYWdlT2JqZWN0KiYgcE9iaik7DQorDQorDQorDQorICAgIGZyaWVuZCBDUERGX1BhZ2VBcmNoaXZlTG9hZGVyJglvcGVyYXRvciA+PiAoQ1BERl9QYWdlQXJjaGl2ZUxvYWRlciYgYXIsIENQREZfQ2xpcFBhdGgmIGNsaXBfcGF0aCk7DQorDQorICAgIGZyaWVuZCBDUERGX1BhZ2VBcmNoaXZlTG9hZGVyJglvcGVyYXRvciA+PiAoQ1BERl9QYWdlQXJjaGl2ZUxvYWRlciYgYXIsIENQREZfR3JhcGhTdGF0ZSYgZ3JhcGhfc3RhdGUpOw0KKw0KKyAgICBmcmllbmQgQ1BERl9QYWdlQXJjaGl2ZUxvYWRlciYJb3BlcmF0b3IgPj4gKENQREZfUGFnZUFyY2hpdmVMb2FkZXImIGFyLCBDUERGX1RleHRTdGF0ZSYgdGV4dF9zdGF0ZSk7DQorDQorICAgIGZyaWVuZCBDUERGX1BhZ2VBcmNoaXZlTG9hZGVyJglvcGVyYXRvciA+PiAoQ1BERl9QYWdlQXJjaGl2ZUxvYWRlciYgYXIsIENQREZfQ29sb3JTdGF0ZSYgY29sb3Jfc3RhdGUpOw0KKw0KKyAgICBmcmllbmQgQ1BERl9QYWdlQXJjaGl2ZUxvYWRlciYJb3BlcmF0b3IgPj4gKENQREZfUGFnZUFyY2hpdmVMb2FkZXImIGFyLCBDUERGX0dlbmVyYWxTdGF0ZSYgZ2VuZXJhbF9zdGF0ZSk7DQorDQorcHJvdGVjdGVkOg0KKyAgICB2b2lkCQkJCVBvc3RQcm9jQ29sb3IoQ1BERl9Db2xvciYgY29sb3IpOw0KKw0KKyAgICBDUERGX09iamVjdCoJCUFkZFJlc291cmNlKENQREZfT2JqZWN0KiBwU3JjT2JqLCBGWF9MUENTVFIgdHlwZSk7DQorDQorICAgIENQREZfQ2xpcFBhdGgJCW1fTGFzdENsaXBQYXRoOw0KKw0KKyAgICBDUERGX0dyYXBoU3RhdGUJCW1fTGFzdEdyYXBoU3RhdGU7DQorDQorICAgIENQREZfQ29sb3JTdGF0ZQkJbV9MYXN0Q29sb3JTdGF0ZTsNCisNCisgICAgQ1BERl9UZXh0U3RhdGUJCW1fTGFzdFRleHRTdGF0ZTsNCisNCisgICAgQ1BERl9HZW5lcmFsU3RhdGUJbV9MYXN0R2VuZXJhbFN0YXRlOw0KKw0KKyAgICBDUERGX1BhZ2VPYmplY3RzKgltX3BDdXJQYWdlOw0KKw0KKyAgICBDRlhfTWFwUHRyVG9QdHIJCW1fT2JqZWN0TWFwOw0KK307DQorI2RlZmluZSBGUERGQ1JFQVRFX0lOQ1JFTUVOVEFMCQkxDQorI2RlZmluZSBGUERGQ1JFQVRFX05PX09SSUdJTkFMCQkyDQorI2RlZmluZSBGUERGQ1JFQVRFX1BST0dSRVNTSVZFCQk0DQorI2RlZmluZSBGUERGQ1JFQVRFX09CSkVDVFNUUkVBTQkJOA0KK2NsYXNzIENQREZfQ3JlYXRvciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9DcmVhdG9yKENQREZfRG9jdW1lbnQqIHBEb2MpOw0KKw0KKyAgICB+Q1BERl9DcmVhdG9yKCk7DQorDQorICAgIEZYX0JPT0wJCQkJQ3JlYXRlKEZYX0xQQ1dTVFIgZmlsZW5hbWUsIEZYX0RXT1JEIGZsYWdzID0gMCk7DQorDQorICAgIEZYX0JPT0wJCQkJQ3JlYXRlKEZYX0xQQ1NUUiBmaWxlbmFtZSwgRlhfRFdPUkQgZmxhZ3MgPSAwKTsNCisNCisgICAgRlhfQk9PTAkJCQlDcmVhdGUoSUZYX1N0cmVhbVdyaXRlKiBwRmlsZSwgRlhfRFdPUkQgZmxhZ3MgPSAwKTsNCisNCisgICAgRlhfSU5UMzIJCQlDb250aW51ZShJRlhfUGF1c2UgKnBQYXVzZSA9IE5VTEwpOw0KKw0KKyAgICBGWF9CT09MCQkJCVNldEZpbGVWZXJzaW9uKEZYX0lOVDMyIGZpbGVWZXJzaW9uID0gMTcpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCW1fcERvY3VtZW50Ow0KKw0KKyAgICBDUERGX1BhcnNlcioJCW1fcFBhcnNlcjsNCisNCisgICAgRlhfQk9PTAkJCQltX2JDb21wcmVzczsNCisNCisgICAgRlhfQk9PTAkJCQltX2JTZWN1cml0eUNoYW5nZWQ7DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJbV9wRW5jcnlwdERpY3Q7DQorICAgIEZYX0RXT1JECQkJbV9kd0VucnlwdE9iak51bTsNCisgICAgRlhfQk9PTAkJCQltX2JFbmNyeXB0Q2xvbmVkOw0KKw0KKyAgICBGWF9CT09MCQkJCW1fYlN0YW5kYXJkU2VjdXJpdHk7DQorDQorICAgIENQREZfQ3J5cHRvSGFuZGxlcioJbV9wQ3J5cHRvSGFuZGxlcjsNCisgICAgRlhfQk9PTAkJCQltX2JOZXdDcnlwdG87DQorDQorICAgIEZYX0JPT0wJCQkJbV9iRW5jcnlwdE1ldGFkYXRhOw0KKw0KKyAgICBDUERGX09iamVjdCoJCW1fcE1ldGFkYXRhOw0KKw0KKyAgICBDUERGX1hSZWZTdHJlYW0qCW1fcFhSZWZTdHJlYW07DQorDQorICAgIEZYX0lOVDMyCQkJbV9PYmplY3RTdHJlYW1TaXplOw0KKw0KKyAgICBGWF9EV09SRAkJCW1fZHdMYXN0T2JqTnVtOw0KKyAgICBGWF9CT09MCQkJCUNyZWF0ZShGWF9EV09SRCBmbGFncyk7DQorICAgIHZvaWQJCQkJUmVzZXRTdGFuZGFyZFNlY3VyaXR5KCk7DQorICAgIHZvaWQJCQkJQ2xlYXIoKTsNCisgICAgRlhfSU5UMzIJCQlXcml0ZURvY19TdGFnZTEoSUZYX1BhdXNlICpwUGF1c2UpOw0KKyAgICBGWF9JTlQzMgkJCVdyaXRlRG9jX1N0YWdlMihJRlhfUGF1c2UgKnBQYXVzZSk7DQorICAgIEZYX0lOVDMyCQkJV3JpdGVEb2NfU3RhZ2UzKElGWF9QYXVzZSAqcFBhdXNlKTsNCisgICAgRlhfSU5UMzIJCQlXcml0ZURvY19TdGFnZTQoSUZYX1BhdXNlICpwUGF1c2UpOw0KKw0KKyAgICBDRlhfRmlsZUJ1ZmZlckFyY2hpdmUJbV9GaWxlOw0KKw0KKyAgICBGWF9GSUxFU0laRQkJCW1fT2Zmc2V0Ow0KKyAgICB2b2lkCQkJCUluaXRPbGRPYmpOdW1PZmZzZXRzKCk7DQorICAgIHZvaWQJCQkJSW5pdE5ld09iak51bU9mZnNldHMoKTsNCisgICAgdm9pZAkJCQlBcHBlbmROZXdPYmpOdW0oRlhfRFdPUkQgb2JqYnVtKTsNCisgICAgRlhfSU5UMzIJCQlXcml0ZU9sZEluZGlyZWN0T2JqZWN0KEZYX0RXT1JEIG9iam51bSk7DQorICAgIEZYX0lOVDMyCQkJV3JpdGVPbGRPYmpzKElGWF9QYXVzZSAqcFBhdXNlKTsNCisgICAgRlhfSU5UMzIJCQlXcml0ZU5ld09ianMoRlhfQk9PTCBiSW5jcmVtZW50YWwsIElGWF9QYXVzZSAqcFBhdXNlKTsNCisgICAgRlhfSU5UMzIJCQlXcml0ZUluZGlyZWN0T2JqKGNvbnN0IENQREZfT2JqZWN0KiBwT2JqKTsNCisgICAgRlhfSU5UMzIJCQlXcml0ZURpcmVjdE9iaihGWF9EV09SRCBvYmpudW0sIGNvbnN0IENQREZfT2JqZWN0KiBwT2JqLCBGWF9CT09MIGJFbmNyeXB0ID0gVFJVRSk7DQorICAgIEZYX0lOVDMyCQkJV3JpdGVJbmRpcmVjdE9iamVjdFRvU3RyZWFtKGNvbnN0IENQREZfT2JqZWN0KiBwT2JqKTsNCisgICAgRlhfSU5UMzIJCQlXcml0ZUluZGlyZWN0T2JqKEZYX0RXT1JEIG9iam51bSwgY29uc3QgQ1BERl9PYmplY3QqIHBPYmopOw0KKyAgICBGWF9JTlQzMgkJCVdyaXRlSW5kaXJlY3RPYmplY3RUb1N0cmVhbShGWF9EV09SRCBvYmpudW0sIEZYX0xQQ0JZVEUgcEJ1ZmZlciwgRlhfRFdPUkQgZHdTaXplKTsNCisgICAgRlhfSU5UMzIJCQlBcHBlbmRPYmplY3ROdW1iZXJUb1hSZWYoRlhfRFdPUkQgb2JqbnVtKTsNCisgICAgdm9pZAkJCQlJbml0SUQoRlhfQk9PTCBiRGVmYXVsdCA9IFRSVUUpOw0KKyAgICBGWF9JTlQzMgkJCVdyaXRlU3RyZWFtKGNvbnN0IENQREZfT2JqZWN0KiBwU3RyZWFtLCBGWF9EV09SRCBvYmpudW0sIENQREZfQ3J5cHRvSGFuZGxlciogcENyeXB0byk7DQorDQorICAgIEZYX0lOVDMyCQkJbV9pU3RhZ2U7DQorICAgIEZYX0RXT1JECQkJbV9kd0ZsYWdzOw0KKyAgICBGWF9QT1NJVElPTgkJCW1fUG9zOw0KKyAgICBGWF9GSUxFU0laRQkJCW1fWHJlZlN0YXJ0Ow0KKw0KKyAgICBDRlhfRmlsZVNpemVMaXN0QXJyYXkJbV9PYmplY3RPZmZzZXQ7DQorDQorICAgIENGWF9EV29yZExpc3RBcnJheQkJbV9PYmplY3RTaXplOw0KKyAgICBDRlhfRFdvcmRBcnJheQkJbV9OZXdPYmpOdW1BcnJheTsNCisNCisgICAgQ1BERl9BcnJheSoJCQltX3BJREFycmF5Ow0KKw0KKyAgICBGWF9JTlQzMgkJCW1fRmlsZVZlcnNpb247DQorICAgIGZyaWVuZCBjbGFzcyBDUERGX09iamVjdFN0cmVhbTsNCisgICAgZnJpZW5kIGNsYXNzIENQREZfWFJlZlN0cmVhbTsNCit9Ow0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZhcGkuaCBiL2NvcmUvaW5jbHVkZS9mcGRmYXBpL2ZwZGZhcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWZjNTI4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL2ZwZGZhcGkvZnBkZmFwaS5oCkBAIC0wLDAgKzEsMTUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZBUElfSF8NCisjZGVmaW5lIF9GUERGQVBJX0hfDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCINCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2dlLmgiDQorI2luY2x1ZGUgImZwZGZfbW9kdWxlLmgiDQorI2luY2x1ZGUgImZwZGZfcGFnZW9iai5oIg0KKyNpbmNsdWRlICJmcGRmX3JlbmRlci5oIg0KKyNpbmNsdWRlICJmcGRmX3NlcmlhbC5oIg0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS9mcGRmZG9jL2ZwZGZfYXAuaCBiL2NvcmUvaW5jbHVkZS9mcGRmZG9jL2ZwZGZfYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjZhMzcxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL2ZwZGZkb2MvZnBkZl9hcC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNkZWZpbmUgX0ZQREZfQVBfSF8NCisjaW5jbHVkZSAiLi4vZnhjcnQvZnhfYmFzaWMuaCINCisjaW5jbHVkZSAiLi4vZnBkZmFwaS9mcGRmX3BhcnNlci5oIg0KKyNpbmNsdWRlICJmcGRmX3Z0LmgiDQorY2xhc3MgSVBWVF9Gb250TWFwDQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCBDUERGX0ZvbnQqCQkJCQkJR2V0UERGRm9udChGWF9JTlQzMiBuRm9udEluZGV4KSA9IDA7DQorDQorICAgIHZpcnR1YWwgQ0ZYX0J5dGVTdHJpbmcJCQkJCUdldFBERkZvbnRBbGlhcyhGWF9JTlQzMiBuRm9udEluZGV4KSA9IDA7DQorfTsNCitzdHJ1Y3QgQ1BWVF9EYXNoIHsNCisNCisgICAgQ1BWVF9EYXNoKEZYX0lOVDMyIGRhc2gsIEZYX0lOVDMyIGdhcCwgRlhfSU5UMzIgcGhhc2UpIDogbkRhc2goZGFzaCksIG5HYXAoZ2FwKSwgblBoYXNlKHBoYXNlKQ0KKyAgICB7fQ0KKw0KKyAgICBGWF9JTlQzMgkJCW5EYXNoOw0KKw0KKyAgICBGWF9JTlQzMgkJCW5HYXA7DQorDQorICAgIEZYX0lOVDMyCQkJblBoYXNlOw0KK307DQorI2RlZmluZSBDVF9UUkFOU1BBUkVOVAkJMA0KKyNkZWZpbmUJQ1RfR1JBWQkJCQkxDQorI2RlZmluZQlDVF9SR0IJCQkJMg0KKyNkZWZpbmUJQ1RfQ01ZSwkJCQkzDQorc3RydWN0IENQVlRfQ29sb3Igew0KKw0KKyAgICBDUFZUX0NvbG9yKEZYX0lOVDMyIHR5cGUgPSAwLCBGWF9GTE9BVCBjb2xvcjEgPSAwLjBmLCBGWF9GTE9BVCBjb2xvcjIgPSAwLjBmLCBGWF9GTE9BVCBjb2xvcjMgPSAwLjBmLCBGWF9GTE9BVCBjb2xvcjQgPSAwLjBmKQ0KKyAgICAgICAgOiBuQ29sb3JUeXBlKHR5cGUpLCBmQ29sb3IxKGNvbG9yMSksIGZDb2xvcjIoY29sb3IyKSwgZkNvbG9yMyhjb2xvcjMpLCBmQ29sb3I0KGNvbG9yNCkNCisgICAge30NCisNCisgICAgRlhfSU5UMzIJCQluQ29sb3JUeXBlOw0KKyAgICBGWF9GTE9BVAkJCWZDb2xvcjE7DQorICAgIEZYX0ZMT0FUCQkJZkNvbG9yMjsNCisgICAgRlhfRkxPQVQJCQlmQ29sb3IzOw0KKyAgICBGWF9GTE9BVAkJCWZDb2xvcjQ7DQorfTsNCitjbGFzcyBDUFZUX1Byb3ZpZGVyIDogcHVibGljIElQREZfVmFyaWFibGVUZXh0X1Byb3ZpZGVyDQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BWVF9Qcm92aWRlcihJUFZUX0ZvbnRNYXAgKiBwRm9udE1hcCk7DQorDQorICAgIHZpcnR1YWwgfkNQVlRfUHJvdmlkZXIoKTsNCisNCisgICAgRlhfSU5UMzIJCQkJCQlHZXRDaGFyV2lkdGgoRlhfSU5UMzIgbkZvbnRJbmRleCwgRlhfV09SRCB3b3JkLCBGWF9JTlQzMiBuV29yZFN0eWxlKTsNCisNCisgICAgRlhfSU5UMzIJCQkJCQlHZXRUeXBlQXNjZW50KEZYX0lOVDMyIG5Gb250SW5kZXgpOw0KKw0KKyAgICBGWF9JTlQzMgkJCQkJCUdldFR5cGVEZXNjZW50KEZYX0lOVDMyIG5Gb250SW5kZXgpOw0KKw0KKyAgICBGWF9JTlQzMgkJCQkJCUdldFdvcmRGb250SW5kZXgoRlhfV09SRCB3b3JkLCBGWF9JTlQzMiBjaGFyc2V0LCBGWF9JTlQzMiBuRm9udEluZGV4KTsNCisNCisgICAgRlhfQk9PTAkJCQkJCQlJc0xhdGluV29yZChGWF9XT1JEIHdvcmQpOw0KKw0KKyAgICBGWF9JTlQzMgkJCQkJCUdldERlZmF1bHRGb250SW5kZXgoKTsNCitwcml2YXRlOg0KKw0KKyAgICBJUFZUX0ZvbnRNYXAgKgltX3BGb250TWFwOw0KK307DQorI2RlZmluZSBQQlNfU09MSUQJCQkwDQorI2RlZmluZSBQQlNfREFTSAkJCTENCisjZGVmaW5lIFBCU19CRVZFTEVECQkJMg0KKyNkZWZpbmUgUEJTX0lOU0VUCQkJMw0KKyNkZWZpbmUgUEJTX1VOREVSTElORUQJCTQNCitjbGFzcyBDUFZUX0dlbmVyYXRlQVANCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgRlhfQk9PTAkJCQkJCQlHZW5lcmF0ZVRleHRGaWVsZEFQKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfRGljdGlvbmFyeSogcEFubm90RGljdCk7DQorDQorICAgIHN0YXRpYyBGWF9CT09MCQkJCQkJCUdlbmVyYXRlQ29tYm9Cb3hBUChDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0RpY3Rpb25hcnkqIHBBbm5vdERpY3QpOw0KKw0KKyAgICBzdGF0aWMgRlhfQk9PTAkJCQkJCQlHZW5lcmF0ZUxpc3RCb3hBUChDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0RpY3Rpb25hcnkqIHBBbm5vdERpY3QpOw0KKw0KKyAgICBzdGF0aWMgQ0ZYX0J5dGVTdHJpbmcJCQkJCUdlbmVyYXRlRWRpdEFQKElQVlRfRm9udE1hcCAqIHBGb250TWFwLCBJUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvciAqIHBJdGVyYXRvciwNCisgICAgICAgICAgICBjb25zdCBDUERGX1BvaW50ICYgcHRPZmZzZXQsIEZYX0JPT0wgYkNvbnRpbnVvdXMsIEZYX1dPUkQgU3ViV29yZCA9IDAsIGNvbnN0IENQVlRfV29yZFJhbmdlICogcFZpc2libGUgPSBOVUxMKTsNCisNCisgICAgc3RhdGljIENGWF9CeXRlU3RyaW5nCQkJCQlHZW5lcmF0ZUJvcmRlckFQKGNvbnN0IENQREZfUmVjdCAmIHJlY3QsIEZYX0ZMT0FUIGZXaWR0aCwNCisgICAgICAgICAgICBjb25zdCBDUFZUX0NvbG9yICYgY29sb3IsIGNvbnN0IENQVlRfQ29sb3IgJiBjckxlZnRUb3AsIGNvbnN0IENQVlRfQ29sb3IgJiBjclJpZ2h0Qm90dG9tLA0KKyAgICAgICAgICAgIEZYX0lOVDMyIG5TdHlsZSwgY29uc3QgQ1BWVF9EYXNoICYgZGFzaCk7DQorDQorICAgIHN0YXRpYyBDRlhfQnl0ZVN0cmluZwkJCQkJR2VuZXJhdGVDb2xvckFQKGNvbnN0IENQVlRfQ29sb3IgJiBjb2xvciwgY29uc3QgRlhfQk9PTCAmIGJGaWxsT3JTdHJva2UpOw0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2ZwZGZkb2MvZnBkZl9kb2MuaCBiL2NvcmUvaW5jbHVkZS9mcGRmZG9jL2ZwZGZfZG9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMxOTQ0MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9mcGRmZG9jL2ZwZGZfZG9jLmgKQEAgLTAsMCArMSwxNzkyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9GUERGX0RPQ19IXw0KKyNkZWZpbmUgX0ZQREZfRE9DX0hfDQorI2lmbmRlZiBfRlBERl9QQVJTRVJfDQorI2luY2x1ZGUgIi4uL2ZwZGZhcGkvZnBkZl9wYXJzZXIuaCINCisjZW5kaWYNCisjaWZuZGVmIF9GUERGX1JFTkRFUl8NCisjaW5jbHVkZSAiLi4vZnBkZmFwaS9mcGRmX3JlbmRlci5oIg0KKyNlbmRpZg0KK2NsYXNzIENQREZfQWN0aW9uOw0KK2NsYXNzIENQREZfQW5ub3Q7DQorY2xhc3MgQ1BERl9Bbm5vdExpc3Q7DQorY2xhc3MgQ1BERl9Cb29rbWFyazsNCitjbGFzcyBDUERGX0Jvb2ttYXJrVHJlZTsNCitjbGFzcyBDUERGX0Rlc3Q7DQorY2xhc3MgQ1BERl9MaW5rOw0KK2NsYXNzIENQREZfTGlua0xpc3Q7DQorY2xhc3MgQ1BERl9NZXRhZGF0YTsNCitjbGFzcyBDUERGX05hbWVUcmVlOw0KK2NsYXNzIENQREZfTnVtYmVyVHJlZTsNCitjbGFzcyBDUERGX1RleHRPYmplY3Q7DQorY2xhc3MgQ1BERl9WaWV3ZXJQcmVmZXJlbmNlczsNCitjbGFzcyBDUERGX1BhZ2U7DQorY2xhc3MgQ1BERl9SZW5kZXJPcHRpb25zOw0KK2NsYXNzIENYTUxfRWxlbWVudDsNCitjbGFzcyBDUERGX09DQ29udGV4dDsNCitjbGFzcyBDUERGX0RvY0pTQWN0aW9uczsNCitjbGFzcyBDUERGX0FjdGlvbkZpZWxkczsNCitjbGFzcyBDUERGX0FBY3Rpb247DQorY2xhc3MgQ1BERl9GaWxlU3BlYzsNCitjbGFzcyBDUERGX0ljb25GaXQ7DQorY2xhc3MgQ1BERl9EZWZhdWx0QXBwZWFyYW5jZTsNCitjbGFzcyBDUERGX0ludGVyRm9ybTsNCitjbGFzcyBDUERGX0Zvcm1GaWVsZDsNCitjbGFzcyBDUERGX0Zvcm1Ob3RpZnk7DQorY2xhc3MgQ1BERl9Gb3JtQ29udHJvbDsNCitjbGFzcyBDUERGX0xXaW5QYXJhbTsNCitjbGFzcyBDRmllbGRUcmVlOw0KK2NsYXNzIENQREZfQXBTZXR0aW5nczsNCitjbGFzcyBDUERGX05hbWVUcmVlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX05hbWVUcmVlKENQREZfRGljdGlvbmFyeSogcFJvb3QpDQorICAgIHsNCisgICAgICAgIG1fcFJvb3QgPSBwUm9vdDsNCisgICAgfQ0KKw0KKyAgICBDUERGX05hbWVUcmVlKENQREZfRG9jdW1lbnQqIHBEb2MsIEZYX0JTVFIgY2F0ZWdvcnkpOw0KKw0KKyAgICBDUERGX09iamVjdCoJCUxvb2t1cFZhbHVlKGludCBuSW5kZXgsIENGWF9CeXRlU3RyaW5nJiBjc05hbWUpIGNvbnN0Ow0KKw0KKyAgICBDUERGX09iamVjdCoJCUxvb2t1cFZhbHVlKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBjc05hbWUpIGNvbnN0Ow0KKw0KKyAgICBDUERGX0FycmF5KgkJCUxvb2t1cE5hbWVkRGVzdChDUERGX0RvY3VtZW50KiBwRG9jLCBGWF9CU1RSIHNOYW1lKTsNCisNCisgICAgaW50CQkJCQlHZXRJbmRleChjb25zdCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lKSBjb25zdDsNCisNCisgICAgaW50CQkJCQlHZXRDb3VudCgpIGNvbnN0Ow0KKw0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCUdldFJvb3QoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wUm9vdDsNCisgICAgfQ0KKw0KK3Byb3RlY3RlZDoNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJbV9wUm9vdDsNCit9Ow0KK2NsYXNzIENQREZfQm9va21hcmtUcmVlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0Jvb2ttYXJrVHJlZShDUERGX0RvY3VtZW50KiBwRG9jKQ0KKyAgICB7DQorICAgICAgICBtX3BEb2N1bWVudCA9IHBEb2M7DQorICAgIH0NCitwdWJsaWM6DQorDQorDQorDQorICAgIENQREZfQm9va21hcmsJCUdldEZpcnN0Q2hpbGQoQ1BERl9Cb29rbWFyayBwYXJlbnQpOw0KKw0KKyAgICBDUERGX0Jvb2ttYXJrCQlHZXROZXh0U2libGluZyhDUERGX0Jvb2ttYXJrIGJvb2ttYXJrKTsNCisNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCUdldERvY3VtZW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERvY3VtZW50Ow0KKyAgICB9DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDUERGX0RvY3VtZW50KgkJbV9wRG9jdW1lbnQ7DQorfTsNCisjZGVmaW5lIFBERkJPT0tNQVJLX0lUQUxJQwkJCTENCisjZGVmaW5lIFBERkJPT0tNQVJLX0JPTEQJCQkyDQorY2xhc3MgQ1BERl9Cb29rbWFyayA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9Cb29rbWFyayhDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gTlVMTCkNCisgICAgew0KKyAgICAgICAgbV9wRGljdCA9IHBEaWN0Ow0KKyAgICB9DQorDQorICAgIG9wZXJhdG9yIENQREZfRGljdGlvbmFyeSooKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRGljdDsNCisgICAgfQ0KKw0KKw0KKw0KKyAgICBGWF9EV09SRAkJCUdldENvbG9yUmVmKCk7DQorDQorICAgIEZYX0RXT1JECQkJR2V0Rm9udFN0eWxlKCk7DQorDQorICAgIENGWF9XaWRlU3RyaW5nCQlHZXRUaXRsZSgpOw0KKw0KKw0KKw0KKw0KKyAgICBDUERGX0Rlc3QJCQlHZXREZXN0KENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCk7DQorDQorICAgIENQREZfQWN0aW9uCQkJR2V0QWN0aW9uKCk7DQorDQorDQorICAgIENQREZfRGljdGlvbmFyeSoJbV9wRGljdDsNCit9Ow0KKyNkZWZpbmUgUERGWk9PTV9YWVoJCQkJCTENCisjZGVmaW5lIFBERlpPT01fRklUUEFHRQkJCQkyDQorI2RlZmluZSBQREZaT09NX0ZJVEhPUloJCQkJMw0KKyNkZWZpbmUgUERGWk9PTV9GSVRWRVJUCQkJCTQNCisjZGVmaW5lIFBERlpPT01fRklUUkVDVAkJCQk1DQorI2RlZmluZSBQREZaT09NX0ZJVEJCT1gJCQkJNg0KKyNkZWZpbmUgUERGWk9PTV9GSVRCSE9SWgkJCTcNCisNCisjZGVmaW5lIFBERlpPT01fRklUQlZFUlQJCQk4DQorY2xhc3MgQ1BERl9EZXN0IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0Rlc3QoQ1BERl9PYmplY3QqIHBPYmogPSBOVUxMKQ0KKyAgICB7DQorICAgICAgICBtX3BPYmogPSBwT2JqOw0KKyAgICB9DQorDQorICAgIG9wZXJhdG9yIENQREZfT2JqZWN0KiAoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXRSZW1vdGVOYW1lKCk7DQorDQorICAgIGludAkJCQkJR2V0UGFnZUluZGV4KENQREZfRG9jdW1lbnQqIHBEb2MpOw0KKw0KKyAgICBGWF9EV09SRAkJCUdldFBhZ2VPYmpOdW0oKTsNCisNCisgICAgaW50CQkJCQlHZXRab29tTW9kZSgpOw0KKw0KKyAgICBGWF9GTE9BVAkJCUdldFBhcmFtKGludCBpbmRleCk7DQorDQorDQorICAgIENQREZfT2JqZWN0KgkJbV9wT2JqOw0KK307DQorY2xhc3MgQ1BERl9PQ0NvbnRleHQgOiBwdWJsaWMgQ0ZYX09iamVjdCwgcHVibGljIElQREZfT0NDb250ZXh0DQorew0KK3B1YmxpYzoNCisNCisgICAgZW51bSBVc2FnZVR5cGUgew0KKyAgICAgICAgVmlldyA9IDAsDQorICAgICAgICBEZXNpZ24sDQorICAgICAgICBQcmludCwNCisgICAgICAgIEV4cG9ydA0KKyAgICB9Ow0KKw0KKyAgICBDUERGX09DQ29udGV4dChDUERGX0RvY3VtZW50ICpwRG9jLCBVc2FnZVR5cGUgZVVzYWdlVHlwZSA9IFZpZXcpOw0KKw0KKyAgICB2aXJ0dWFsIH5DUERGX09DQ29udGV4dCgpOw0KKw0KKyAgICBDUERGX0RvY3VtZW50KglHZXREb2N1bWVudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEb2N1bWVudDsNCisgICAgfQ0KKw0KKyAgICBVc2FnZVR5cGUJCUdldFVzYWdlVHlwZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2VVc2FnZVR5cGU7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCUNoZWNrT0NHVmlzaWJsZShjb25zdCBDUERGX0RpY3Rpb25hcnkgKnBPQ0dEaWN0KTsNCisNCisgICAgdm9pZAkJCVJlc2V0T0NDb250ZXh0KCk7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBGWF9CT09MCQkJTG9hZE9DR1N0YXRlRnJvbUNvbmZpZyhGWF9CU1RSIGNzQ29uZmlnLCBjb25zdCBDUERGX0RpY3Rpb25hcnkgKnBPQ0dEaWN0LCBGWF9CT09MICZiVmFsaWRDb25maWcpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MCQkJTG9hZE9DR1N0YXRlKGNvbnN0IENQREZfRGljdGlvbmFyeSAqcE9DR0RpY3QpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MCQkJR2V0T0NHVmlzaWJsZShjb25zdCBDUERGX0RpY3Rpb25hcnkgKnBPQ0dEaWN0KTsNCisNCisgICAgRlhfQk9PTAkJCUdldE9DR1ZFKENQREZfQXJyYXkgKnBFeHByZXNzaW9uLCBGWF9CT09MIGJGcm9tQ29uZmlnLCBpbnQgbkxldmVsID0gMCk7DQorDQorICAgIEZYX0JPT0wJCQlMb2FkT0NNRFN0YXRlKGNvbnN0IENQREZfRGljdGlvbmFyeSAqcE9DTUREaWN0LCBGWF9CT09MIGJGcm9tQ29uZmlnKTsNCisNCisgICAgQ1BERl9Eb2N1bWVudAkJKm1fcERvY3VtZW50Ow0KKw0KKyAgICBVc2FnZVR5cGUJCQltX2VVc2FnZVR5cGU7DQorDQorICAgIENGWF9NYXBQdHJUZW1wbGF0ZTxjb25zdCBDUERGX0RpY3Rpb25hcnkqLCB2b2lkKj4JbV9PQ0dTdGF0ZXM7DQorfTsNCitjbGFzcyBDUERGX0xXaW5QYXJhbSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9MV2luUGFyYW0oQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCkNCisgICAgew0KKyAgICAgICAgbV9wRGljdCA9IHBEaWN0Ow0KKyAgICB9DQorDQorICAgIG9wZXJhdG9yIENQREZfRGljdGlvbmFyeSogKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERpY3Q7DQorICAgIH0NCisNCisgICAgaW5saW5lIENGWF9CeXRlU3RyaW5nCUdldEZpbGVOYW1lKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERpY3QtPkdldFN0cmluZygiRiIpOw0KKyAgICB9DQorDQorDQorICAgIGlubGluZSBDRlhfQnl0ZVN0cmluZwlHZXREZWZhdWx0RGlyZWN0b3J5KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERpY3QtPkdldFN0cmluZygiRCIpOw0KKyAgICB9DQorDQorDQorICAgIGlubGluZSBDRlhfQnl0ZVN0cmluZwlHZXRPcGVyYXRpb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRGljdC0+R2V0U3RyaW5nKCJPIik7DQorICAgIH0NCisNCisNCisgICAgaW5saW5lIENGWF9CeXRlU3RyaW5nCUdldFBhcmFtZXRlcigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0LT5HZXRTdHJpbmcoIlAiKTsNCisgICAgfQ0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQltX3BEaWN0Ow0KK307DQorY2xhc3MgQ1BERl9BY3Rpb25GaWVsZHMgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfQWN0aW9uRmllbGRzKGNvbnN0IENQREZfQWN0aW9uKiBwQWN0aW9uKQ0KKyAgICB7DQorICAgICAgICBtX3BBY3Rpb24gPSAoQ1BERl9BY3Rpb24qKXBBY3Rpb247DQorICAgIH0NCisNCisgICAgb3BlcmF0b3IgQ1BERl9BY3Rpb24qKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEFjdGlvbjsNCisgICAgfQ0KKw0KKyAgICBGWF9EV09SRAkJCQlHZXRGaWVsZHNDb3VudCgpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJCQlHZXRBbGxGaWVsZHMoQ0ZYX1B0ckFycmF5JiBmaWVsZE9iamVjdHMpIGNvbnN0Ow0KKw0KKyAgICBDUERGX09iamVjdCoJCQlHZXRGaWVsZChGWF9EV09SRCBpSW5kZXgpIGNvbnN0Ow0KKw0KKyAgICBDUERGX0FjdGlvbioJCQltX3BBY3Rpb247DQorfTsNCisNCisjZGVmaW5lIFBERk5BTUVEX05FWFRQQUdFCQkxDQorI2RlZmluZSBQREZOQU1FRF9QUkVWUEFHRQkJMg0KKyNkZWZpbmUgUERGTkFNRURfRklSU1RQQUdFCQkzDQorI2RlZmluZSBQREZOQU1FRF9MQVNUUEFHRQkJNA0KKyNkZWZpbmUgUERGSlNfTUFYTEVOR1RICQkJNjQNCitjbGFzcyBDUERGX0FjdGlvbiA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9BY3Rpb24oQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IE5VTEwpDQorICAgIHsNCisgICAgICAgIG1fcERpY3QgPSBwRGljdDsNCisgICAgfQ0KKw0KKyAgICBvcGVyYXRvciBDUERGX0RpY3Rpb25hcnkqICgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0Ow0KKyAgICB9DQorDQorICAgIGVudW0gQWN0aW9uVHlwZSB7DQorICAgICAgICBVbmtub3duID0gMCwNCisgICAgICAgIEdvVG8sDQorICAgICAgICBHb1RvUiwNCisgICAgICAgIEdvVG9FLA0KKyAgICAgICAgTGF1bmNoLA0KKyAgICAgICAgVGhyZWFkLA0KKyAgICAgICAgVVJJLA0KKyAgICAgICAgU291bmQsDQorICAgICAgICBNb3ZpZSwNCisgICAgICAgIEhpZGUsDQorICAgICAgICBOYW1lZCwNCisgICAgICAgIFN1Ym1pdEZvcm0sDQorICAgICAgICBSZXNldEZvcm0sDQorICAgICAgICBJbXBvcnREYXRhLA0KKyAgICAgICAgSmF2YVNjcmlwdCwNCisgICAgICAgIFNldE9DR1N0YXRlLA0KKyAgICAgICAgUmVuZGl0aW9uLA0KKyAgICAgICAgVHJhbnMsDQorICAgICAgICBHb1RvM0RWaWV3DQorICAgIH07DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXRUeXBlTmFtZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0LT5HZXRTdHJpbmcoIlMiKTsNCisgICAgfQ0KKw0KKyAgICBBY3Rpb25UeXBlCQkJR2V0VHlwZSgpIGNvbnN0Ow0KKw0KKw0KKw0KKyAgICBDUERGX0Rlc3QJCQlHZXREZXN0KENQREZfRG9jdW1lbnQqIHBEb2MpIGNvbnN0Ow0KKw0KKw0KKw0KKw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJR2V0RmlsZVBhdGgoKSBjb25zdDsNCisNCisNCisNCisNCisgICAgRlhfQk9PTAkJCQlHZXROZXdXaW5kb3coKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRGljdC0+R2V0Qm9vbGVhbigiTmV3V2luZG93Iik7DQorICAgIH0NCisNCisNCisNCisNCisgICAgQ1BERl9MV2luUGFyYW0JCUdldFdpblBhcmFtKCkgY29uc3Q7DQorDQorDQorDQorDQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXRVUkkoQ1BERl9Eb2N1bWVudCogcERvYykgY29uc3Q7DQorDQorDQorDQorDQorICAgIEZYX0JPT0wJCQkJR2V0TW91c2VNYXAoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRGljdC0+R2V0Qm9vbGVhbigiSXNNYXAiKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBDUERGX0FjdGlvbkZpZWxkcwlHZXRXaWRnZXRzKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHRoaXM7DQorICAgIH0NCisNCisNCisNCisNCisgICAgRlhfQk9PTAkJCQlHZXRIaWRlU3RhdHVzKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERpY3QtPkdldEJvb2xlYW4oIkgiLCBUUlVFKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJR2V0TmFtZWRBY3Rpb24oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRGljdC0+R2V0U3RyaW5nKCJOIik7DQorICAgIH0NCisNCisNCisNCisNCisgICAgRlhfRFdPUkQJCQlHZXRGbGFncygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0LT5HZXRJbnRlZ2VyKCJGbGFncyIpOw0KKyAgICB9DQorDQorDQorDQorDQorICAgIENGWF9XaWRlU3RyaW5nCQlHZXRKYXZhU2NyaXB0KCkgY29uc3Q7DQorDQorDQorDQorDQorICAgIENQREZfRGljdGlvbmFyeSoJR2V0QW5ub3QoKSBjb25zdDsNCisNCisNCisNCisNCisgICAgRlhfSU5UMzIJCQlHZXRPcGVyYXRpb25UeXBlKCkgY29uc3Q7DQorDQorDQorDQorDQorICAgIENQREZfU3RyZWFtKgkJR2V0U291bmRTdHJlYW0oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRGljdC0+R2V0U3RyZWFtKCJTb3VuZCIpOw0KKyAgICB9DQorDQorICAgIEZYX0ZMT0FUCQkJR2V0Vm9sdW1lKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERpY3QtPkdldE51bWJlcigiVm9sdW1lIik7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQlJc1N5bmNocm9ub3VzKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERpY3QtPkdldEJvb2xlYW4oIlN5bmNocm9ub3VzIik7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQlJc1JlcGVhdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0LT5HZXRCb29sZWFuKCJSZXBlYXQiKTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCUlzTWl4UGxheSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0LT5HZXRCb29sZWFuKCJNaXgiKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBGWF9EV09SRAkJCUdldFN1YkFjdGlvbnNDb3VudCgpIGNvbnN0Ow0KKw0KKyAgICBDUERGX0FjdGlvbgkJCUdldFN1YkFjdGlvbihGWF9EV09SRCBpSW5kZXgpIGNvbnN0Ow0KKw0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCW1fcERpY3Q7DQorfTsNCitjbGFzcyBDUERGX0FBY3Rpb24gOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfQUFjdGlvbihDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gTlVMTCkNCisgICAgew0KKyAgICAgICAgbV9wRGljdCA9IHBEaWN0Ow0KKyAgICB9DQorDQorICAgIG9wZXJhdG9yIENQREZfRGljdGlvbmFyeSooKQljb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRGljdDsNCisgICAgfQ0KKw0KKyAgICBlbnVtIEFBY3Rpb25UeXBlIHsNCisgICAgICAgIEN1cnNvckVudGVyID0gMCwNCisgICAgICAgIEN1cnNvckV4aXQsDQorICAgICAgICBCdXR0b25Eb3duLA0KKyAgICAgICAgQnV0dG9uVXAsDQorICAgICAgICBHZXRGb2N1cywNCisgICAgICAgIExvc2VGb2N1cywNCisgICAgICAgIFBhZ2VPcGVuLA0KKyAgICAgICAgUGFnZUNsb3NlLA0KKyAgICAgICAgUGFnZVZpc2libGUsDQorICAgICAgICBQYWdlSW52aXNpYmxlLA0KKyAgICAgICAgT3BlblBhZ2UsDQorICAgICAgICBDbG9zZVBhZ2UsDQorICAgICAgICBLZXlTdHJva2UsDQorICAgICAgICBGb3JtYXQsDQorICAgICAgICBWYWxpZGF0ZSwNCisgICAgICAgIENhbGN1bGF0ZSwNCisgICAgICAgIENsb3NlRG9jdW1lbnQsDQorICAgICAgICBTYXZlRG9jdW1lbnQsDQorICAgICAgICBEb2N1bWVudFNhdmVkLA0KKyAgICAgICAgUHJpbnREb2N1bWVudCwNCisgICAgICAgIERvY3VtZW50UHJpbnRlZA0KKyAgICB9Ow0KKw0KKyAgICBGWF9CT09MCQkJCUFjdGlvbkV4aXN0KEFBY3Rpb25UeXBlIGVUeXBlKSBjb25zdDsNCisNCisgICAgQ1BERl9BY3Rpb24JCQlHZXRBY3Rpb24oQUFjdGlvblR5cGUgZVR5cGUpIGNvbnN0Ow0KKw0KKyAgICBGWF9QT1NJVElPTgkJCUdldFN0YXJ0UG9zKCkgY29uc3Q7DQorDQorICAgIENQREZfQWN0aW9uCQkJR2V0TmV4dEFjdGlvbihGWF9QT1NJVElPTiYgcG9zLCBBQWN0aW9uVHlwZSYgZVR5cGUpIGNvbnN0Ow0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCW1fcERpY3Q7DQorfTsNCitjbGFzcyBDUERGX0RvY0pTQWN0aW9ucyA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9Eb2NKU0FjdGlvbnMoQ1BERl9Eb2N1bWVudCogcERvYyk7DQorDQorDQorICAgIGludAkJCQkJQ291bnRKU0FjdGlvbnMoKSBjb25zdDsNCisNCisgICAgQ1BERl9BY3Rpb24JCQlHZXRKU0FjdGlvbihpbnQgaW5kZXgsIENGWF9CeXRlU3RyaW5nJiBjc05hbWUpIGNvbnN0Ow0KKw0KKyAgICBDUERGX0FjdGlvbgkJCUdldEpTQWN0aW9uKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBjc05hbWUpIGNvbnN0Ow0KKw0KKyAgICBpbnQJCQkJCUZpbmRKU0FjdGlvbihjb25zdCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lKSBjb25zdDsNCisNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCUdldERvY3VtZW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERvY3VtZW50Ow0KKyAgICB9DQorDQorcHJvdGVjdGVkOg0KKw0KKyAgICBDUERGX0RvY3VtZW50KgkJbV9wRG9jdW1lbnQ7DQorfTsNCitjbGFzcyBDUERGX0ZpbGVTcGVjIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0ZpbGVTcGVjKCk7DQorDQorICAgIENQREZfRmlsZVNwZWMoQ1BERl9PYmplY3QgKnBPYmopDQorICAgIHsNCisgICAgICAgIG1fcE9iaiA9IHBPYmo7DQorICAgIH0NCisNCisgICAgb3BlcmF0b3IgQ1BERl9PYmplY3QqKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcE9iajsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJSXNVUkwoKSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCUdldEZpbGVOYW1lKENGWF9XaWRlU3RyaW5nICZ3c0ZpbGVOYW1lKSBjb25zdDsNCisNCisgICAgQ1BERl9TdHJlYW0qCUdldEZpbGVTdHJlYW0oKSBjb25zdDsNCisNCisgICAgdm9pZAkJCVNldEZpbGVOYW1lKEZYX1dTVFIgd3NGaWxlTmFtZSwgRlhfQk9PTCBiVVJMID0gRkFMU0UpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgQ1BERl9PYmplY3QJCSptX3BPYmo7DQorfTsNCitjbGFzcyBDUERGX0xpbmtMaXN0IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0xpbmtMaXN0KENQREZfRG9jdW1lbnQqIHBEb2MpDQorICAgIHsNCisgICAgICAgIG1fcERvY3VtZW50ID0gcERvYzsNCisgICAgfQ0KKw0KKyAgICB+Q1BERl9MaW5rTGlzdCgpOw0KKw0KKyAgICBDUERGX0xpbmsJCQlHZXRMaW5rQXRQb2ludChDUERGX1BhZ2UqIHBQYWdlLCBGWF9GTE9BVCBwZGZfeCwgRlhfRkxPQVQgcGRmX3kpOw0KKw0KKyAgICBpbnQJCQkJCUNvdW50TGlua3MoQ1BERl9QYWdlKiBwUGFnZSk7DQorDQorICAgIENQREZfTGluawkJCUdldExpbmsoQ1BERl9QYWdlKiBwUGFnZSwgaW50IGluZGV4KTsNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCUdldERvY3VtZW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERvY3VtZW50Ow0KKyAgICB9DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDUERGX0RvY3VtZW50KgkJbV9wRG9jdW1lbnQ7DQorDQorICAgIENGWF9NYXBQdHJUb1B0cgkJbV9QYWdlTWFwOw0KKw0KKyAgICBDRlhfUHRyQXJyYXkqCQlHZXRQYWdlTGlua3MoQ1BERl9QYWdlKiBwUGFnZSk7DQorDQorICAgIHZvaWQJCQkJTG9hZFBhZ2VMaW5rcyhDUERGX1BhZ2UqIHBQYWdlLCBDRlhfUHRyQXJyYXkqIHBMaXN0KTsNCit9Ow0KK2NsYXNzIENQREZfTGluayA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9MaW5rKENQREZfRGljdGlvbmFyeSogcERpY3QgPSBOVUxMKQ0KKyAgICB7DQorICAgICAgICBtX3BEaWN0ID0gcERpY3Q7DQorICAgIH0NCisNCisgICAgb3BlcmF0b3IgQ1BERl9EaWN0aW9uYXJ5KigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0Ow0KKyAgICB9DQorDQorICAgIENGWF9GbG9hdFJlY3QJCUdldFJlY3QoKTsNCisNCisNCisNCisgICAgQ1BERl9EZXN0CQkJR2V0RGVzdChDUERGX0RvY3VtZW50KiBwRG9jKTsNCisNCisgICAgQ1BERl9BY3Rpb24JCQlHZXRBY3Rpb24oKTsNCisNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgltX3BEaWN0Ow0KK307DQorI2RlZmluZSBBTk5PVEZMQUdfSU5WSVNJQkxFCQkJMQ0KKyNkZWZpbmUgQU5OT1RGTEFHX0hJRERFTgkJCTINCisjZGVmaW5lIEFOTk9URkxBR19QUklOVAkJCQk0DQorI2RlZmluZSBBTk5PVEZMQUdfTk9aT09NCQkJOA0KKyNkZWZpbmUgQU5OT1RGTEFHX05PUk9UQVRFCQkJMHgxMA0KKyNkZWZpbmUgQU5OT1RGTEFHX05PVklFVwkJCTB4MjANCisjZGVmaW5lIEFOTk9URkxBR19SRUFET05MWQkJCTB4NDANCisjZGVmaW5lIEFOTk9URkxBR19MT0NLRUQJCQkweDgwDQorI2RlZmluZSBBTk5PVEZMQUdfVE9HR0xFTk9WSUVXCQkweDEwMA0KK2NsYXNzIENQREZfQW5ub3QgOiBwdWJsaWMgQ0ZYX1ByaXZhdGVEYXRhLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfQW5ub3QoQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCk7DQorDQorICAgIH5DUERGX0Fubm90KCk7DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJbV9wQW5ub3REaWN0Ow0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJR2V0U3ViVHlwZSgpIGNvbnN0Ow0KKw0KKyAgICBGWF9EV09SRAkJCUdldEZsYWdzKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEFubm90RGljdC0+R2V0SW50ZWdlcigiRiIpOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJR2V0UmVjdChDRlhfRmxvYXRSZWN0JiByZWN0KSBjb25zdDsNCisNCisgICAgZW51bSBBcHBlYXJhbmNlTW9kZQl7DQorICAgICAgICBOb3JtYWwsDQorICAgICAgICBSb2xsb3ZlciwNCisgICAgICAgIERvd24NCisgICAgfTsNCisNCisgICAgRlhfQk9PTAkJCQlEcmF3QXBwZWFyYW5jZShjb25zdCBDUERGX1BhZ2UqIHBQYWdlLCBDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVXNlcjJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwZWFyYW5jZU1vZGUgbW9kZSwgY29uc3QgQ1BERl9SZW5kZXJPcHRpb25zKiBwT3B0aW9ucyk7DQorDQorICAgIEZYX0JPT0wJCQkJRHJhd0luQ29udGV4dChjb25zdCBDUERGX1BhZ2UqIHBQYWdlLCBjb25zdCBDUERGX1JlbmRlckNvbnRleHQqIHBDb250ZXh0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcFVzZXIyRGV2aWNlLCBBcHBlYXJhbmNlTW9kZSBtb2RlKTsNCisNCisgICAgdm9pZAkJCQlDbGVhckNhY2hlZEFQKCk7DQorDQorDQorICAgIHZvaWQJCQkJRHJhd0JvcmRlcihDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVXNlcjJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zKTsNCisNCisgICAgQ1BERl9QYWdlT2JqZWN0KglHZXRCb3JkZXIoRlhfQk9PTCBiUHJpbnQsIGNvbnN0IENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMpOw0KKw0KKw0KKw0KKyAgICBpbnQJCQkJCUNvdW50SVJUTm90ZXMoKTsNCisNCisgICAgQ1BERl9Bbm5vdCoJCQlHZXRJUlROb3RlKGludCBpbmRleCk7DQorDQorDQorICAgIENQREZfRm9ybSoJCQlHZXRBUEZvcm0oY29uc3QgQ1BERl9QYWdlKiBwUGFnZSwgQXBwZWFyYW5jZU1vZGUgbW9kZSk7DQorcHJpdmF0ZToNCisNCisgICAgQ0ZYX01hcFB0clRvUHRyCQltX0FQTWFwOw0KK3Byb3RlY3RlZDoNCisgICAgZnJpZW5kIGNsYXNzCQlDUERGX0Fubm90TGlzdDsNCisNCisgICAgQ1BERl9Bbm5vdExpc3QqCQltX3BMaXN0Ow0KKw0KKyAgICBDUERGX1JlZmVyZW5jZSoJCU5ld0Fubm90UmVmKCk7DQorfTsNCitjbGFzcyBDUERGX0Fubm90TGlzdCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9Bbm5vdExpc3QoQ1BERl9QYWdlKiBwUGFnZSk7DQorDQorICAgIH5DUERGX0Fubm90TGlzdCgpOw0KKw0KKyAgICB2b2lkCUdldEFubm90TWF0cml4KGNvbnN0IENQREZfRGljdGlvbmFyeSogcEFubm90RGljdCwgY29uc3QgQ0ZYX01hdHJpeCogcFVzZXIyRGV2aWNlLCBDRlhfTWF0cml4ICZtYXRyaXgpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCUdldEFubm90UmVjdChjb25zdCBDUERGX0RpY3Rpb25hcnkqIHBBbm5vdERpY3QsIGNvbnN0IENGWF9NYXRyaXgqIHBVc2VyMkRldmljZSwgQ1BERl9SZWN0ICZydEFubm90KSBjb25zdDsNCisNCisgICAgdm9pZAkJCQlEaXNwbGF5QW5ub3RzKGNvbnN0IENQREZfUGFnZSogcFBhZ2UsIENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBGWF9CT09MIGJTaG93V2lkZ2V0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9SZW5kZXJPcHRpb25zKiBwT3B0aW9ucyk7DQorDQorICAgIHZvaWQJCQkJRGlzcGxheUFubm90cyhjb25zdCBDUERGX1BhZ2UqIHBQYWdlLCBDUERGX1JlbmRlckNvbnRleHQqIHBDb250ZXh0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiUHJpbnRpbmcsIENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIEZYX0JPT0wgYlNob3dXaWRnZXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zKQ0KKyAgICB7DQorICAgICAgICBEaXNwbGF5QW5ub3RzKHBQYWdlLCBOVUxMLCBwQ29udGV4dCwgYlByaW50aW5nLCBwTWF0cml4LCBiU2hvd1dpZGdldCA/IDMgOiAxLCBwT3B0aW9ucywgTlVMTCk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlEaXNwbGF5QW5ub3RzKGNvbnN0IENQREZfUGFnZSogcFBhZ2UsIENQREZfUmVuZGVyQ29udGV4dCogcENvbnRleHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJQcmludGluZywgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfQk9PTCBiU2hvd1dpZGdldCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMsIEZYX1JFQ1QgKnBDbGlwUmVjdCkNCisgICAgew0KKyAgICAgICAgRGlzcGxheUFubm90cyhwUGFnZSwgTlVMTCwgcENvbnRleHQsIGJQcmludGluZywgcE1hdHJpeCwgYlNob3dXaWRnZXQgPyAzIDogMSwgcE9wdGlvbnMsIHBDbGlwUmVjdCk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlEaXNwbGF5QW5ub3RzKGNvbnN0IENQREZfUGFnZSogcFBhZ2UsIENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIENQREZfUmVuZGVyQ29udGV4dCogcENvbnRleHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJQcmludGluZywgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgZHdBbm5vdEZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9SZW5kZXJPcHRpb25zKiBwT3B0aW9ucywgRlhfUkVDVCogcENsaXBSZWN0KTsNCisNCisNCisNCisgICAgQ1BERl9Bbm5vdCoJCQlHZXRBdChpbnQgaW5kZXgpDQorICAgIHsNCisgICAgICAgIHJldHVybiAoQ1BERl9Bbm5vdCopbV9Bbm5vdExpc3QuR2V0QXQoaW5kZXgpOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJQ291bnQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9Bbm5vdExpc3QuR2V0U2l6ZSgpOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJR2V0SW5kZXgoQ1BERl9Bbm5vdCogcEFubm90KTsNCisNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCUdldERvY3VtZW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERvY3VtZW50Ow0KKyAgICB9DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDRlhfUHRyQXJyYXkJCW1fQW5ub3RMaXN0Ow0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCW1fcFBhZ2VEaWN0Ow0KKw0KKyAgICBDUERGX0RvY3VtZW50KgkJbV9wRG9jdW1lbnQ7DQorDQorICAgIENGWF9QdHJBcnJheQkJbV9Cb3JkZXJzOw0KKw0KKyAgICB2b2lkCQkJCURpc3BsYXlQYXNzKGNvbnN0IENQREZfUGFnZSogcFBhZ2UsIENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9SZW5kZXJDb250ZXh0KiBwQ29udGV4dCwgRlhfQk9PTCBiUHJpbnRpbmcsIENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiV2lkZ2V0LCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zLCBGWF9SRUNUKiBjbGlwX3JlY3QpOw0KKyAgICBmcmllbmQgY2xhc3MJCUNQREZfQW5ub3Q7DQorfTsNCisjZGVmaW5lIENPTE9SVFlQRV9UUkFOU1BBUkVOVAkwDQorI2RlZmluZSBDT0xPUlRZUEVfR1JBWQkJCTENCisjZGVmaW5lIENPTE9SVFlQRV9SR0IJCQkyDQorI2RlZmluZSBDT0xPUlRZUEVfQ01ZSwkJCTMNCitjbGFzcyBDUERGX0RlZmF1bHRBcHBlYXJhbmNlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0RlZmF1bHRBcHBlYXJhbmNlKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBjc0RBID0gIiIpDQorICAgIHsNCisgICAgICAgIG1fY3NEQSA9IGNzREE7DQorICAgIH0NCisNCisgICAgQ1BERl9EZWZhdWx0QXBwZWFyYW5jZShjb25zdCBDUERGX0RlZmF1bHRBcHBlYXJhbmNlJiBjREEpDQorICAgIHsNCisgICAgICAgIG1fY3NEQSA9IChDRlhfQnl0ZVN0cmluZykoQ1BERl9EZWZhdWx0QXBwZWFyYW5jZSYpY0RBOw0KKyAgICB9DQorDQorDQorICAgIG9wZXJhdG9yIENGWF9CeXRlU3RyaW5nKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fY3NEQTsNCisgICAgfQ0KKw0KKyAgICBjb25zdCBDUERGX0RlZmF1bHRBcHBlYXJhbmNlJiBvcGVyYXRvciA9KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBjc0RBKQ0KKyAgICB7DQorICAgICAgICBtX2NzREEgPSBjc0RBOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAgIGNvbnN0IENQREZfRGVmYXVsdEFwcGVhcmFuY2UmIG9wZXJhdG9yID0oY29uc3QgQ1BERl9EZWZhdWx0QXBwZWFyYW5jZSYgY0RBKQ0KKyAgICB7DQorICAgICAgICBtX2NzREEgPSAoQ0ZYX0J5dGVTdHJpbmcpKENQREZfRGVmYXVsdEFwcGVhcmFuY2UmKWNEQTsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCUhhc0ZvbnQoKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCUdldEZvbnRTdHJpbmcoKTsNCisNCisgICAgdm9pZAkJCQlHZXRGb250KENGWF9CeXRlU3RyaW5nJiBjc0ZvbnROYW1lVGFnLCBGWF9GTE9BVCYgZkZvbnRTaXplKTsNCisNCisNCisNCisNCisgICAgRlhfQk9PTAkJCQlIYXNDb2xvcihGWF9CT09MIGJTdHJva2luZ09wZXJhdGlvbiA9IEZBTFNFKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCUdldENvbG9yU3RyaW5nKEZYX0JPT0wgYlN0cm9raW5nT3BlcmF0aW9uID0gRkFMU0UpOw0KKw0KKyAgICB2b2lkCQkJCUdldENvbG9yKGludCYgaUNvbG9yVHlwZSwgRlhfRkxPQVQgZmNbNF0sIEZYX0JPT0wgYlN0cm9raW5nT3BlcmF0aW9uID0gRkFMU0UpOw0KKw0KKyAgICB2b2lkCQkJCUdldENvbG9yKEZYX0FSR0ImIGNvbG9yLCBpbnQmIGlDb2xvclR5cGUsIEZYX0JPT0wgYlN0cm9raW5nT3BlcmF0aW9uID0gRkFMU0UpOw0KKw0KKw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCUhhc1RleHRNYXRyaXgoKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCUdldFRleHRNYXRyaXhTdHJpbmcoKTsNCisNCisgICAgQ0ZYX0FmZmluZU1hdHJpeAlHZXRUZXh0TWF0cml4KCk7DQorDQorcHJvdGVjdGVkOg0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJbV9jc0RBOw0KK307DQorI2RlZmluZSBGSUVMRFRZUEVfVU5LTk9XTgkJCTANCisjZGVmaW5lIEZJRUxEVFlQRV9QVVNIQlVUVE9OCQkxDQorI2RlZmluZSBGSUVMRFRZUEVfQ0hFQ0tCT1gJCQkyDQorI2RlZmluZSBGSUVMRFRZUEVfUkFESU9CVVRUT04JCTMNCisjZGVmaW5lIEZJRUxEVFlQRV9DT01CT0JPWAkJCTQNCisjZGVmaW5lIEZJRUxEVFlQRV9MSVNUQk9YCQkJNQ0KKyNkZWZpbmUgRklFTERUWVBFX1RFWFRGSUVMRAkJCTYNCisjZGVmaW5lIEZJRUxEVFlQRV9TSUdOQVRVUkUJCQk3DQorY2xhc3MgQ1BERl9JbnRlckZvcm0gOiBwdWJsaWMgQ0ZYX1ByaXZhdGVEYXRhLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENQREZfSW50ZXJGb3JtKENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgRlhfQk9PTCBiVXBkYXRlQVApOw0KKw0KKyAgICB+Q1BERl9JbnRlckZvcm0oKTsNCisNCisNCisNCisgICAgc3RhdGljIHZvaWQJCQkJRW5hYmxlVXBkYXRlQVAoRlhfQk9PTCBiVXBkYXRlQVApOw0KKw0KKyAgICBzdGF0aWMgRlhfQk9PTAkJCVVwZGF0aW5nQVBFbmFibGVkKCk7DQorDQorDQorICAgIHN0YXRpYyBDRlhfQnl0ZVN0cmluZwlHZW5lcmF0ZU5ld1Jlc291cmNlTmFtZShjb25zdCBDUERGX0RpY3Rpb25hcnkqIHBSZXNEaWN0LCBGWF9MUENTVFIgY3NUeXBlLCBpbnQgaU1pbkxlbiA9IDIsIEZYX0xQQ1NUUiBjc1ByZWZpeCA9ICIiKTsNCisNCisNCisNCisgICAgc3RhdGljIENQREZfRm9udCoJCUFkZFN5c3RlbURlZmF1bHRGb250KGNvbnN0IENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCk7DQorDQorICAgIHN0YXRpYyBDUERGX0ZvbnQqCQlBZGRTeXN0ZW1Gb250KGNvbnN0IENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgQ0ZYX0J5dGVTdHJpbmcgY3NGb250TmFtZSwgRlhfQllURSBpQ2hhclNldCA9IDEpOw0KKw0KKyAgICBzdGF0aWMgQ1BERl9Gb250KgkJQWRkU3lzdGVtRm9udChjb25zdCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENGWF9XaWRlU3RyaW5nIGNzRm9udE5hbWUsIEZYX0JZVEUgaUNoYXJTZXQgPSAxKTsNCisNCisgICAgc3RhdGljIENQREZfRm9udCoJCUFkZFN0YW5kYXJkRm9udChjb25zdCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENGWF9CeXRlU3RyaW5nIGNzRm9udE5hbWUpOw0KKw0KKyAgICBzdGF0aWMgQ0ZYX0J5dGVTdHJpbmcJR2V0TmF0aXZlRm9udChGWF9CWVRFIGlDaGFyU2V0LCBGWF9MUFZPSUQgcExvZ0ZvbnQgPSBOVUxMKTsNCisNCisgICAgc3RhdGljIENGWF9CeXRlU3RyaW5nCUdldE5hdGl2ZUZvbnQoRlhfTFBWT0lEIHBMb2dGb250ID0gTlVMTCk7DQorDQorICAgIHN0YXRpYyBGWF9CWVRFCQkJR2V0TmF0aXZlQ2hhclNldCgpOw0KKw0KKyAgICBzdGF0aWMgQ1BERl9Gb250KgkJQWRkTmF0aXZlRm9udChGWF9CWVRFIGlDaGFyU2V0LCBjb25zdCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQpOw0KKw0KKyAgICBzdGF0aWMgQ1BERl9Gb250KgkJQWRkTmF0aXZlRm9udChjb25zdCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQpOw0KKw0KKw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCQlWYWxpZGF0ZUZpZWxkTmFtZShDRlhfV2lkZVN0cmluZyYgY3NOZXdGaWVsZE5hbWUsIGludCBpVHlwZSk7DQorDQorICAgIEZYX0JPT0wJCQkJCVZhbGlkYXRlRmllbGROYW1lKGNvbnN0IENQREZfRm9ybUZpZWxkKiBwRmllbGQsIENGWF9XaWRlU3RyaW5nJiBjc05ld0ZpZWxkTmFtZSk7DQorDQorICAgIEZYX0JPT0wJCQkJCVZhbGlkYXRlRmllbGROYW1lKGNvbnN0IENQREZfRm9ybUNvbnRyb2wqIHBDb250cm9sLCBDRlhfV2lkZVN0cmluZyYgY3NOZXdGaWVsZE5hbWUpOw0KKw0KKw0KKw0KKw0KKyAgICBGWF9EV09SRAkJCQlDb3VudEZpZWxkcyhjb25zdCBDRlhfV2lkZVN0cmluZyAmY3NGaWVsZE5hbWUgPSBMIiIpOw0KKw0KKyAgICBDUERGX0Zvcm1GaWVsZCoJCQlHZXRGaWVsZChGWF9EV09SRCBpbmRleCwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcgJmNzRmllbGROYW1lID0gTCIiKTsNCisNCisgICAgdm9pZAkJCQkJR2V0QWxsRmllbGROYW1lcyhDRlhfV2lkZVN0cmluZ0FycmF5JiBhbGxGaWVsZE5hbWVzKTsNCisNCisgICAgRlhfQk9PTAkJCQkJSXNWYWxpZEZvcm1GaWVsZChjb25zdCB2b2lkKiBwRmllbGQpOw0KKw0KKyAgICBDUERGX0Zvcm1GaWVsZCoJCQlHZXRGaWVsZEJ5RGljdChDUERGX0RpY3Rpb25hcnkqIHBGaWVsZERpY3QpIGNvbnN0Ow0KKw0KKw0KKw0KKw0KKyAgICBGWF9EV09SRAkJCQlDb3VudENvbnRyb2xzKENGWF9XaWRlU3RyaW5nIGNzRmllbGROYW1lID0gTCIiKTsNCisNCisgICAgQ1BERl9Gb3JtQ29udHJvbCoJCUdldENvbnRyb2woRlhfRFdPUkQgaW5kZXgsIENGWF9XaWRlU3RyaW5nIGNzRmllbGROYW1lID0gTCIiKTsNCisNCisgICAgRlhfQk9PTAkJCQkJSXNWYWxpZEZvcm1Db250cm9sKGNvbnN0IHZvaWQqIHBDb250cm9sKTsNCisNCisgICAgaW50CQkJCQkJQ291bnRQYWdlQ29udHJvbHMoQ1BERl9QYWdlKiBwUGFnZSkgY29uc3Q7DQorDQorICAgIENQREZfRm9ybUNvbnRyb2wqCQlHZXRQYWdlQ29udHJvbChDUERGX1BhZ2UqIHBQYWdlLCBpbnQgaW5kZXgpIGNvbnN0Ow0KKw0KKw0KKyAgICBDUERGX0Zvcm1Db250cm9sKgkJR2V0Q29udHJvbEF0UG9pbnQoQ1BERl9QYWdlKiBwUGFnZSwgRlhfRkxPQVQgcGRmX3gsIEZYX0ZMT0FUIHBkZl95KSBjb25zdDsNCisNCisgICAgQ1BERl9Gb3JtQ29udHJvbCoJCUdldENvbnRyb2xCeURpY3QoQ1BERl9EaWN0aW9uYXJ5KiBwV2lkZ2V0RGljdCkgY29uc3Q7DQorDQorDQorDQorDQorICAgIEZYX0RXT1JECQkJCUNvdW50SW50ZXJuYWxGaWVsZHMoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIGNzRmllbGROYW1lID0gTCIiKSBjb25zdDsNCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJR2V0SW50ZXJuYWxGaWVsZChGWF9EV09SRCBpbmRleCwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIGNzRmllbGROYW1lID0gTCIiKSBjb25zdDsNCisNCisNCisNCisNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCQlHZXREb2N1bWVudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEb2N1bWVudDsNCisgICAgfQ0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQlHZXRGb3JtRGljdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BGb3JtRGljdDsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCQlOZWVkQ29uc3RydWN0QVAoKTsNCisNCisgICAgdm9pZAkJCQkJTmVlZENvbnN0cnVjdEFQKEZYX0JPT0wgYk5lZWRBUCk7DQorDQorDQorDQorDQorICAgIGludAkJCQkJCUNvdW50RmllbGRzSW5DYWxjdWxhdGlvbk9yZGVyKCk7DQorDQorICAgIENQREZfRm9ybUZpZWxkKgkJCUdldEZpZWxkSW5DYWxjdWxhdGlvbk9yZGVyKGludCBpbmRleCk7DQorDQorICAgIGludAkJCQkJCUZpbmRGaWVsZEluQ2FsY3VsYXRpb25PcmRlcihjb25zdCBDUERGX0Zvcm1GaWVsZCogcEZpZWxkKTsNCisNCisNCisNCisNCisgICAgRlhfRFdPUkQJCQkJQ291bnRGb3JtRm9udHMoKTsNCisNCisgICAgQ1BERl9Gb250KgkJCQlHZXRGb3JtRm9udChGWF9EV09SRCBpbmRleCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQorDQorICAgIENQREZfRm9udCoJCQkJR2V0Rm9ybUZvbnQoQ0ZYX0J5dGVTdHJpbmcgY3NOYW1lVGFnKTsNCisNCisgICAgQ1BERl9Gb250KgkJCQlHZXRGb3JtRm9udChDRlhfQnl0ZVN0cmluZyBjc0ZvbnROYW1lLCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCisNCisgICAgQ1BERl9Gb250KgkJCQlHZXROYXRpdmVGb3JtRm9udChGWF9CWVRFIGlDaGFyU2V0LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCisNCisgICAgQ1BERl9Gb250KgkJCQlHZXROYXRpdmVGb3JtRm9udChDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCisNCisgICAgRlhfQk9PTAkJCQkJRmluZEZvcm1Gb250KGNvbnN0IENQREZfRm9udCogcEZvbnQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlGaW5kRm9ybUZvbnQoQ0ZYX0J5dGVTdHJpbmcgY3NGb250TmFtZSwgQ1BERl9Gb250KiYgcEZvbnQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpOw0KKw0KKyAgICBpbmxpbmUgRlhfQk9PTAkJCUZpbmRGb3JtRm9udChDRlhfV2lkZVN0cmluZyBjc0ZvbnROYW1lLCBDUERGX0ZvbnQqJiBwRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZykNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZpbmRGb3JtRm9udChQREZfRW5jb2RlVGV4dChjc0ZvbnROYW1lKSwgcEZvbnQsIGNzTmFtZVRhZyk7DQorICAgIH0NCisNCisNCisNCisNCisNCisgICAgdm9pZAkJCQkJQWRkRm9ybUZvbnQoY29uc3QgQ1BERl9Gb250KiBwRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQorDQorICAgIENQREZfRm9udCoJCQkJQWRkTmF0aXZlRm9ybUZvbnQoRlhfQllURSBpQ2hhclNldCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQorDQorICAgIENQREZfRm9udCoJCQkJQWRkTmF0aXZlRm9ybUZvbnQoQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQorDQorICAgIHZvaWQJCQkJCVJlbW92ZUZvcm1Gb250KGNvbnN0IENQREZfRm9udCogcEZvbnQpOw0KKw0KKyAgICB2b2lkCQkJCQlSZW1vdmVGb3JtRm9udChDRlhfQnl0ZVN0cmluZyBjc05hbWVUYWcpOw0KKw0KKw0KKw0KKw0KKyAgICBDUERGX0RlZmF1bHRBcHBlYXJhbmNlCUdldERlZmF1bHRBcHBlYXJhbmNlKCk7DQorDQorICAgIENQREZfRm9udCoJCQkJR2V0RGVmYXVsdEZvcm1Gb250KCk7DQorDQorDQorDQorICAgIGludAkJCQkJCUdldEZvcm1BbGlnbm1lbnQoKTsNCisNCisNCisNCisNCisgICAgQ1BERl9Gb3JtRmllbGQqCQkJQ2hlY2tSZXF1aXJlZEZpZWxkcyhjb25zdCBDRlhfUHRyQXJyYXkgKmZpZWxkcyA9IE5VTEwsIEZYX0JPT0wgYkluY2x1ZGVPckV4Y2x1ZGUgPSBUUlVFKSBjb25zdDsNCisNCisgICAgQ0ZERl9Eb2N1bWVudCogCQkJRXhwb3J0VG9GREYoRlhfV1NUUiBwZGZfcGF0aCwgRlhfQk9PTCBiU2ltcGxlRmlsZVNwZWMgPSBGQUxTRSkgY29uc3Q7DQorDQorICAgIENGREZfRG9jdW1lbnQqCQkJRXhwb3J0VG9GREYoRlhfV1NUUiBwZGZfcGF0aCwgQ0ZYX1B0ckFycmF5JiBmaWVsZHMsIEZYX0JPT0wgYkluY2x1ZGVPckV4Y2x1ZGUgPSBUUlVFLCBGWF9CT09MIGJTaW1wbGVGaWxlU3BlYyA9IEZBTFNFKSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCQkJSW1wb3J0RnJvbUZERihjb25zdCBDRkRGX0RvY3VtZW50KiBwRkRGRG9jLCBGWF9CT09MIGJOb3RpZnkgPSBGQUxTRSk7DQorDQorDQorDQorDQorICAgIEZYX0JPT0wJCQkJCVJlc2V0Rm9ybShjb25zdCBDRlhfUHRyQXJyYXkmIGZpZWxkcywgRlhfQk9PTCBiSW5jbHVkZU9yRXhjbHVkZSA9IFRSVUUsIEZYX0JPT0wgYk5vdGlmeSA9IEZBTFNFKTsNCisNCisgICAgRlhfQk9PTAkJCQkJUmVzZXRGb3JtKEZYX0JPT0wgYk5vdGlmeSA9IEZBTFNFKTsNCisNCisgICAgdm9pZAkJCQkJUmVsb2FkRm9ybSgpOw0KKw0KKyAgICBDUERGX0Zvcm1Ob3RpZnkqCQlHZXRGb3JtTm90aWZ5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEZvcm1Ob3RpZnk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQkJU2V0Rm9ybU5vdGlmeShjb25zdCBDUERGX0Zvcm1Ob3RpZnkqIHBOb3RpZnkpOw0KKw0KKw0KKyAgICBpbnQJCQkJCQlHZXRQYWdlV2l0aFdpZGdldChpbnQgaUN1clBhZ2UsIEZYX0JPT0wgYk5leHQpOw0KKw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCQlJc1VwZGF0ZWQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iVXBkYXRlZDsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCQlDbGVhclVwZGF0ZWRGbGFnKCkNCisgICAgew0KKyAgICAgICAgbV9iVXBkYXRlZCA9IEZBTFNFOw0KKyAgICB9DQorDQorDQorICAgIEZYX0JPT0wJCQkJCUhhc1hGQUZvcm0oKSBjb25zdDsNCisNCisgICAgdm9pZAkJCQkJRml4UGFnZUZpZWxkcyhjb25zdCBDUERGX1BhZ2UqIHBQYWdlKTsNCitwcm90ZWN0ZWQ6DQorDQorICAgIHN0YXRpYyBGWF9CT09MCQkJbV9iVXBkYXRlQVA7DQorDQorICAgIHZvaWQJCQkJCUxvYWRGaWVsZChDUERGX0RpY3Rpb25hcnkqIHBGaWVsZERpY3QsIGludCBuTGV2ZWwgPSAwKTsNCisNCisgICAgQ1BERl9PYmplY3QqCQkJR2V0RmllbGRBdHRyKENQREZfRGljdGlvbmFyeSogcEZpZWxkRGljdCwgY29uc3QgRlhfQ0hBUiogbmFtZSk7DQorDQorICAgIENQREZfRm9ybUZpZWxkKgkJCUFkZFRlcm1pbmFsRmllbGQoY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwRmllbGREaWN0KTsNCisNCisgICAgQ1BERl9Gb3JtQ29udHJvbCoJCUFkZENvbnRyb2woY29uc3QgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCwgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwV2lkZ2V0RGljdCk7DQorDQorICAgIHZvaWQJCQkJCUZERl9JbXBvcnRGaWVsZChDUERGX0RpY3Rpb25hcnkqIHBGaWVsZCwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHBhcmVudF9uYW1lLCBGWF9CT09MIGJOb3RpZnkgPSBGQUxTRSwgaW50IG5MZXZlbCA9IDApOw0KKw0KKyAgICBGWF9CT09MCQkJCQlWYWxpZGF0ZUZpZWxkTmFtZShDRlhfV2lkZVN0cmluZyYgY3NOZXdGaWVsZE5hbWUsIGludCBpVHlwZSwgY29uc3QgQ1BERl9Gb3JtRmllbGQqIHBFeGNsdWRlZEZpZWxkLCBjb25zdCBDUERGX0Zvcm1Db250cm9sKiBwRXhjbHVkZWRDb250cm9sKTsNCisNCisgICAgaW50CQkJCQkJQ29tcGFyZUZpZWxkTmFtZShjb25zdCBDRlhfV2lkZVN0cmluZyYgbmFtZTEsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiBuYW1lMik7DQorDQorICAgIGludAkJCQkJCUNvbXBhcmVGaWVsZE5hbWUoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUxLCBjb25zdCBDRlhfQnl0ZVN0cmluZyYgbmFtZTIpOw0KKw0KKyAgICBDUERGX0RvY3VtZW50KgkJCW1fcERvY3VtZW50Ow0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JHZW5lcmF0ZUFQOw0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQltX3BGb3JtRGljdDsNCisNCisgICAgQ0ZYX01hcFB0clRvUHRyCQkJbV9Db250cm9sTWFwOw0KKw0KKyAgICBDRmllbGRUcmVlICptX3BGaWVsZFRyZWU7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQkJbV9ic0VuY29kaW5nOw0KKw0KKyAgICBDUERGX0Zvcm1Ob3RpZnkqCQltX3BGb3JtTm90aWZ5Ow0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JVcGRhdGVkOw0KKyAgICBmcmllbmQgY2xhc3MgQ1BERl9Gb3JtQ29udHJvbDsNCisgICAgZnJpZW5kIGNsYXNzIENQREZfRm9ybUZpZWxkOw0KK307DQorI2RlZmluZSBGT1JNRklFTERfUkVBRE9OTFkJCTB4MDENCisjZGVmaW5lIEZPUk1GSUVMRF9SRVFVSVJFRAkJMHgwMg0KKyNkZWZpbmUgRk9STUZJRUxEX05PRVhQT1JUCQkweDA0DQorI2RlZmluZSBGT1JNUkFESU9fTk9UT0dHTEVPRkYJMHgxMDANCisjZGVmaW5lIEZPUk1SQURJT19VTklTT04JCTB4MjAwDQorI2RlZmluZSBGT1JNVEVYVF9NVUxUSUxJTkUJCTB4MTAwDQorI2RlZmluZSBGT1JNVEVYVF9QQVNTV09SRAkJMHgyMDANCisjZGVmaW5lIEZPUk1URVhUX05PU0NST0xMCQkweDQwMA0KKyNkZWZpbmUgRk9STVRFWFRfQ09NQgkJCTB4ODAwDQorI2RlZmluZSBGT1JNQ09NQk9fRURJVAkJCTB4MTAwDQorI2RlZmluZSBGT1JNTElTVF9NVUxUSVNFTEVDVAkweDEwMA0KK2NsYXNzIENQREZfRm9ybUZpZWxkIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBlbnVtIFR5cGUgew0KKyAgICAgICAgVW5rbm93biwNCisgICAgICAgIFB1c2hCdXR0b24sDQorICAgICAgICBSYWRpb0J1dHRvbiwNCisgICAgICAgIENoZWNrQm94LA0KKyAgICAgICAgVGV4dCwNCisgICAgICAgIFJpY2hUZXh0LA0KKyAgICAgICAgRmlsZSwNCisgICAgICAgIExpc3RCb3gsDQorICAgICAgICBDb21ib0JveCwNCisgICAgICAgIFNpZ24NCisgICAgfTsNCisNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQlHZXRGdWxsTmFtZSgpOw0KKw0KKyAgICBUeXBlCQkJCQlHZXRUeXBlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fVHlwZTsNCisgICAgfQ0KKw0KKyAgICBGWF9EV09SRAkJCQlHZXRGbGFncygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0ZsYWdzOw0KKyAgICB9DQorDQorICAgIENQREZfSW50ZXJGb3JtKgkJCUdldEludGVyRm9ybSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BGb3JtOw0KKyAgICB9DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJCUdldEZpZWxkRGljdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0Ow0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCVNldEZpZWxkRGljdChDUERGX0RpY3Rpb25hcnkqIHBEaWN0KQ0KKyAgICB7DQorICAgICAgICBtX3BEaWN0ID0gcERpY3Q7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQkJUmVzZXRGaWVsZChGWF9CT09MIGJOb3RpZnkgPSBGQUxTRSk7DQorDQorDQorDQorICAgIGludAkJCQkJCUNvdW50Q29udHJvbHMoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9Db250cm9sTGlzdC5HZXRTaXplKCk7DQorICAgIH0NCisNCisgICAgQ1BERl9Gb3JtQ29udHJvbCoJCUdldENvbnRyb2woaW50IGluZGV4KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKENQREZfRm9ybUNvbnRyb2wqKW1fQ29udHJvbExpc3QuR2V0QXQoaW5kZXgpOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJCUdldENvbnRyb2xJbmRleChjb25zdCBDUERGX0Zvcm1Db250cm9sKiBwQ29udHJvbCk7DQorDQorDQorDQorDQorICAgIGludAkJCQkJCUdldEZpZWxkVHlwZSgpOw0KKw0KKw0KKw0KKw0KKyAgICBDUERGX0FBY3Rpb24JCQlHZXRBZGRpdGlvbmFsQWN0aW9uKCk7DQorDQorDQorDQorDQorICAgIENGWF9XaWRlU3RyaW5nCQkJR2V0QWx0ZXJuYXRlTmFtZSgpOw0KKw0KKw0KKw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCUdldE1hcHBpbmdOYW1lKCk7DQorDQorDQorDQorDQorICAgIEZYX0RXT1JECQkJCUdldEZpZWxkRmxhZ3MoKTsNCisNCisNCisNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQlHZXREZWZhdWx0U3R5bGUoKTsNCisNCisNCisNCisNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQlHZXRSaWNoVGV4dFN0cmluZygpOw0KKw0KKw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCUdldFZhbHVlKCk7DQorDQorICAgIENGWF9XaWRlU3RyaW5nCQkJR2V0RGVmYXVsdFZhbHVlKCk7DQorDQorICAgIEZYX0JPT0wJCQkJCVNldFZhbHVlKGNvbnN0IENGWF9XaWRlU3RyaW5nJiB2YWx1ZSwgRlhfQk9PTCBiTm90aWZ5ID0gRkFMU0UpOw0KKw0KKw0KKw0KKw0KKw0KKyAgICBpbnQJCQkJCQlHZXRNYXhMZW4oKTsNCisNCisNCisNCisNCisgICAgaW50CQkJCQkJQ291bnRTZWxlY3RlZEl0ZW1zKCk7DQorDQorICAgIGludAkJCQkJCUdldFNlbGVjdGVkSW5kZXgoaW50IGluZGV4KTsNCisNCisgICAgRlhfQk9PTAkJCQkJQ2xlYXJTZWxlY3Rpb24oRlhfQk9PTCBiTm90aWZ5ID0gRkFMU0UpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlJc0l0ZW1TZWxlY3RlZChpbnQgaW5kZXgpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlTZXRJdGVtU2VsZWN0aW9uKGludCBpbmRleCwgRlhfQk9PTCBiU2VsZWN0ZWQsIEZYX0JPT0wgYk5vdGlmeSA9IEZBTFNFKTsNCisNCisgICAgRlhfQk9PTAkJCQkJSXNJdGVtRGVmYXVsdFNlbGVjdGVkKGludCBpbmRleCk7DQorDQorICAgIGludAkJCQkJCUdldERlZmF1bHRTZWxlY3RlZEl0ZW0oKTsNCisNCisNCisNCisNCisgICAgaW50CQkJCQkJQ291bnRPcHRpb25zKCk7DQorDQorICAgIENGWF9XaWRlU3RyaW5nCQkJR2V0T3B0aW9uTGFiZWwoaW50IGluZGV4KTsNCisNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQlHZXRPcHRpb25WYWx1ZShpbnQgaW5kZXgpOw0KKw0KKyAgICBpbnQJCQkJCQlGaW5kT3B0aW9uKENGWF9XaWRlU3RyaW5nIGNzT3B0TGFiZWwpOw0KKw0KKyAgICBpbnQJCQkJCQlGaW5kT3B0aW9uVmFsdWUoRlhfTFBDV1NUUiBjc09wdFZhbHVlLCBpbnQgaVN0YXJ0SW5kZXggPSAwKTsNCisNCisNCisNCisNCisgICAgRlhfQk9PTAkJCQkJQ2hlY2tDb250cm9sKGludCBpQ29udHJvbEluZGV4LCBGWF9CT09MIGJDaGVja2VkLCBGWF9CT09MIGJOb3RpZnkgPSBGQUxTRSk7DQorDQorDQorDQorDQorICAgIGludAkJCQkJCUdldFRvcFZpc2libGVJbmRleCgpOw0KKw0KKw0KKw0KKw0KKyAgICBpbnQJCQkJCQlDb3VudFNlbGVjdGVkT3B0aW9ucygpOw0KKw0KKyAgICBpbnQJCQkJCQlHZXRTZWxlY3RlZE9wdGlvbkluZGV4KGludCBpbmRleCk7DQorDQorICAgIEZYX0JPT0wJCQkJCUlzT3B0aW9uU2VsZWN0ZWQoaW50IGlPcHRJbmRleCk7DQorDQorICAgIEZYX0JPT0wJCQkJCVNlbGVjdE9wdGlvbihpbnQgaU9wdEluZGV4LCBGWF9CT09MIGJTZWxlY3RlZCwgRlhfQk9PTCBiTm90aWZ5ID0gRkFMU0UpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlDbGVhclNlbGVjdGVkT3B0aW9ucyhGWF9CT09MIGJOb3RpZnkgPSBGQUxTRSk7DQorDQorDQorDQorDQorICAgIEZYX0ZMT0FUCQkJCUdldEZvbnRTaXplKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fRm9udFNpemU7DQorICAgIH0NCisNCisgICAgQ1BERl9Gb250KgkJCQlHZXRGb250KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEZvbnQ7DQorICAgIH0NCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIENQREZfRm9ybUZpZWxkKENQREZfSW50ZXJGb3JtKiBwRm9ybSwgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCk7DQorDQorICAgIH5DUERGX0Zvcm1GaWVsZCgpOw0KKw0KKyAgICBDUERGX0Zvcm1GaWVsZDo6VHlwZQltX1R5cGU7DQorDQorICAgIEZYX0RXT1JECQkJCW1fRmxhZ3M7DQorDQorICAgIENQREZfSW50ZXJGb3JtKgkJCW1fcEZvcm07DQorDQorICAgIENQREZfRGljdGlvbmFyeSoJCW1fcERpY3Q7DQorDQorICAgIENGWF9QdHJBcnJheQkJCW1fQ29udHJvbExpc3Q7DQorICAgIGZyaWVuZCBjbGFzcwkJCUNQREZfSW50ZXJGb3JtOw0KKyAgICBmcmllbmQgY2xhc3MJCQlDUERGX0Zvcm1Db250cm9sOw0KKw0KKw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCUdldFZhbHVlKEZYX0JPT0wgYkRlZmF1bHQpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlTZXRWYWx1ZShjb25zdCBDRlhfV2lkZVN0cmluZyYgdmFsdWUsIEZYX0JPT0wgYkRlZmF1bHQsIEZYX0JPT0wgYk5vdGlmeSk7DQorDQorDQorICAgIHZvaWQJCQkJCVN5bmNGaWVsZEZsYWdzKCk7DQorDQorICAgIGludAkJCQkJCUZpbmRMaXN0U2VsKENQREZfU3RyaW5nKiBzdHIpOw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCUdldE9wdGlvblRleHQoaW50IGluZGV4LCBpbnQgc3ViX2luZGV4KTsNCisNCisgICAgdm9pZAkJCQkJTG9hZERBKCk7DQorDQorICAgIHZvaWQJCQkJCVVwZGF0ZUFQKENQREZfRm9ybUNvbnRyb2wqIHBDb250cm9sKTsNCisNCisNCisNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQlHZXRDaGVja1ZhbHVlKEZYX0JPT0wgYkRlZmF1bHQpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlTZXRDaGVja1ZhbHVlKGNvbnN0IENGWF9XaWRlU3RyaW5nJiB2YWx1ZSwgRlhfQk9PTCBiRGVmYXVsdCwgRlhfQk9PTCBiTm90aWZ5KTsNCisNCisNCisgICAgRlhfRkxPQVQJCQkJbV9Gb250U2l6ZTsNCisNCisgICAgQ1BERl9Gb250KgkJCQltX3BGb250Ow0KK307DQorQ1BERl9PYmplY3QqCUZQREZfR2V0RmllbGRBdHRyKENQREZfRGljdGlvbmFyeSogcEZpZWxkRGljdCwgY29uc3QgRlhfQ0hBUiogbmFtZSwgaW50IG5MZXZlbCA9IDApOw0KK2NsYXNzIENQREZfSWNvbkZpdCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9JY29uRml0KENQREZfRGljdGlvbmFyeSogcERpY3QgPSBOVUxMKQ0KKyAgICB7DQorICAgICAgICBtX3BEaWN0ID0gcERpY3Q7DQorICAgIH0NCisNCisgICAgb3BlcmF0b3IgQ1BERl9EaWN0aW9uYXJ5KigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0Ow0KKyAgICB9DQorDQorDQorDQorDQorICAgIGVudW0gU2NhbGVNZXRob2Qgew0KKyAgICAgICAgQWx3YXlzID0gMCwNCisgICAgICAgIEJpZ2dlciwNCisgICAgICAgIFNtYWxsZXIsDQorICAgICAgICBOZXZlcg0KKyAgICB9Ow0KKw0KKyAgICBTY2FsZU1ldGhvZAkJCQlHZXRTY2FsZU1ldGhvZCgpOw0KKw0KKw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCQlJc1Byb3BvcnRpb25hbFNjYWxlKCk7DQorDQorDQorDQorDQorICAgIHZvaWQJCQkJCUdldEljb25Qb3NpdGlvbihGWF9GTE9BVCYgZkxlZnQsIEZYX0ZMT0FUJiBmQm90dG9tKTsNCisNCisNCisNCisNCisgICAgRlhfQk9PTAkJCQkJR2V0Rml0dGluZ0JvdW5kcygpOw0KKw0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQltX3BEaWN0Ow0KK307DQorDQorI2RlZmluZSBURVhUUE9TX0NBUFRJT04JCTANCisjZGVmaW5lIFRFWFRQT1NfSUNPTgkJMQ0KKyNkZWZpbmUgVEVYVFBPU19CRUxPVwkJMg0KKyNkZWZpbmUgVEVYVFBPU19BQk9WRQkJMw0KKyNkZWZpbmUgVEVYVFBPU19SSUdIVAkJNA0KKyNkZWZpbmUgVEVYVFBPU19MRUZUCQk1DQorI2RlZmluZSBURVhUUE9TX09WRVJMQUlECTYNCitjbGFzcyBDUERGX0Zvcm1Db250cm9sIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0Zvcm1GaWVsZDo6VHlwZQlHZXRUeXBlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEZpZWxkLT5HZXRUeXBlKCk7DQorICAgIH0NCisNCisgICAgQ1BERl9JbnRlckZvcm0qCQkJR2V0SW50ZXJGb3JtKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEZvcm07DQorICAgIH0NCisNCisgICAgQ1BERl9Gb3JtRmllbGQqCQkJR2V0RmllbGQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRmllbGQ7DQorICAgIH0NCisNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJR2V0V2lkZ2V0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFdpZGdldERpY3Q7DQorICAgIH0NCisNCisgICAgQ0ZYX0Zsb2F0UmVjdAkJCUdldFJlY3QoKTsNCisNCisgICAgdm9pZAkJCQkJRHJhd0NvbnRyb2woQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9QYWdlKiBwUGFnZSwgQ1BERl9Bbm5vdDo6QXBwZWFyYW5jZU1vZGUgbW9kZSwgY29uc3QgQ1BERl9SZW5kZXJPcHRpb25zKiBwT3B0aW9ucyA9IE5VTEwpOw0KKw0KKw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCUdldENoZWNrZWRBUFN0YXRlKCk7DQorDQorICAgIENGWF9XaWRlU3RyaW5nCQkJR2V0RXhwb3J0VmFsdWUoKTsNCisNCisgICAgRlhfQk9PTAkJCQkJSXNDaGVja2VkKCk7DQorDQorICAgIEZYX0JPT0wJCQkJCUlzRGVmYXVsdENoZWNrZWQoKTsNCisNCisNCisNCisNCisgICAgZW51bSBIaWdobGlnaHRpbmdNb2RlCXsNCisgICAgICAgIE5vbmUgPSAwLA0KKyAgICAgICAgSW52ZXJ0LA0KKyAgICAgICAgT3V0bGluZSwNCisgICAgICAgIFB1c2gsDQorICAgICAgICBUb2dnbGUNCisgICAgfTsNCisNCisgICAgSGlnaGxpZ2h0aW5nTW9kZQkJR2V0SGlnaGxpZ2h0aW5nTW9kZSgpOw0KKw0KKw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCQlIYXNNS0VudHJ5KENGWF9CeXRlU3RyaW5nIGNzRW50cnkpOw0KKw0KKw0KKw0KKw0KKyAgICBpbnQJCQkJCQlHZXRSb3RhdGlvbigpOw0KKw0KKw0KKw0KKw0KKyAgICBpbmxpbmUgRlhfQVJHQgkJCUdldEJvcmRlckNvbG9yKGludCYgaUNvbG9yVHlwZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEdldENvbG9yKGlDb2xvclR5cGUsICJCQyIpOw0KKyAgICB9DQorDQorICAgIGlubGluZSBGWF9GTE9BVAkJCUdldE9yaWdpbmFsQm9yZGVyQ29sb3IoaW50IGluZGV4KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0T3JpZ2luYWxDb2xvcihpbmRleCwgIkJDIik7DQorICAgIH0NCisNCisgICAgaW5saW5lIHZvaWQJCQkJR2V0T3JpZ2luYWxCb3JkZXJDb2xvcihpbnQmIGlDb2xvclR5cGUsIEZYX0ZMT0FUIGZjWzRdKQ0KKyAgICB7DQorICAgICAgICBHZXRPcmlnaW5hbENvbG9yKGlDb2xvclR5cGUsIGZjLCAiQkMiKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBpbmxpbmUgRlhfQVJHQgkJCUdldEJhY2tncm91bmRDb2xvcihpbnQmIGlDb2xvclR5cGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRDb2xvcihpQ29sb3JUeXBlLCAiQkciKTsNCisgICAgfQ0KKw0KKyAgICBpbmxpbmUgRlhfRkxPQVQJCQlHZXRPcmlnaW5hbEJhY2tncm91bmRDb2xvcihpbnQgaW5kZXgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRPcmlnaW5hbENvbG9yKGluZGV4LCAiQkciKTsNCisgICAgfQ0KKw0KKyAgICBpbmxpbmUgdm9pZAkJCQlHZXRPcmlnaW5hbEJhY2tncm91bmRDb2xvcihpbnQmIGlDb2xvclR5cGUsIEZYX0ZMT0FUIGZjWzRdKQ0KKyAgICB7DQorICAgICAgICBHZXRPcmlnaW5hbENvbG9yKGlDb2xvclR5cGUsIGZjLCAiQkciKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBpbmxpbmUgQ0ZYX1dpZGVTdHJpbmcJR2V0Tm9ybWFsQ2FwdGlvbigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRDYXB0aW9uKCJDQSIpOw0KKyAgICB9DQorDQorDQorDQorDQorICAgIGlubGluZSBDRlhfV2lkZVN0cmluZwlHZXRSb2xsb3ZlckNhcHRpb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0Q2FwdGlvbigiUkMiKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBpbmxpbmUgQ0ZYX1dpZGVTdHJpbmcJR2V0RG93bkNhcHRpb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0Q2FwdGlvbigiQUMiKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBpbmxpbmUgQ1BERl9TdHJlYW0qCQlHZXROb3JtYWxJY29uKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEdldEljb24oIkkiKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBpbmxpbmUgQ1BERl9TdHJlYW0qCQlHZXRSb2xsb3Zlckljb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0SWNvbigiUkkiKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBpbmxpbmUgQ1BERl9TdHJlYW0qCQlHZXREb3duSWNvbigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRJY29uKCJJWCIpOw0KKyAgICB9DQorDQorDQorDQorDQorICAgIENQREZfSWNvbkZpdAkJCUdldEljb25GaXQoKTsNCisNCisNCisNCisNCisgICAgaW50CQkJCQkJR2V0VGV4dFBvc2l0aW9uKCk7DQorDQorDQorDQorDQorICAgIENQREZfQWN0aW9uCQkJCUdldEFjdGlvbigpOw0KKw0KKw0KKw0KKw0KKyAgICBDUERGX0FBY3Rpb24JCQlHZXRBZGRpdGlvbmFsQWN0aW9uKCk7DQorDQorDQorDQorDQorICAgIENQREZfRGVmYXVsdEFwcGVhcmFuY2UJR2V0RGVmYXVsdEFwcGVhcmFuY2UoKTsNCisNCisgICAgQ1BERl9Gb250KgkJCQlHZXREZWZhdWx0Q29udHJvbEZvbnQoKTsNCisNCisNCisNCisNCisgICAgaW50CQkJCQkJR2V0Q29udHJvbEFsaWdubWVudCgpOw0KKw0KK3Byb3RlY3RlZDoNCisNCisgICAgQ1BERl9Gb3JtQ29udHJvbChDUERGX0Zvcm1GaWVsZCogcEZpZWxkLCBDUERGX0RpY3Rpb25hcnkqIHBXaWRnZXREaWN0KTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQlHZXRPblN0YXRlTmFtZSgpOw0KKw0KKyAgICB2b2lkCQkJCQlTZXRPblN0YXRlTmFtZShjb25zdCBDRlhfQnl0ZVN0cmluZyYgY3NPbik7DQorDQorICAgIHZvaWQJCQkJCUNoZWNrQ29udHJvbChGWF9CT09MIGJDaGVja2VkKTsNCisNCisgICAgRlhfQVJHQgkJCQkJR2V0Q29sb3IoaW50JiBpQ29sb3JUeXBlLCBDRlhfQnl0ZVN0cmluZyBjc0VudHJ5KTsNCisNCisgICAgRlhfRkxPQVQJCQkJR2V0T3JpZ2luYWxDb2xvcihpbnQgaW5kZXgsIENGWF9CeXRlU3RyaW5nIGNzRW50cnkpOw0KKw0KKyAgICB2b2lkCQkJCQlHZXRPcmlnaW5hbENvbG9yKGludCYgaUNvbG9yVHlwZSwgRlhfRkxPQVQgZmNbNF0sIENGWF9CeXRlU3RyaW5nIGNzRW50cnkpOw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCUdldENhcHRpb24oQ0ZYX0J5dGVTdHJpbmcgY3NFbnRyeSk7DQorDQorICAgIENQREZfU3RyZWFtKgkJCUdldEljb24oQ0ZYX0J5dGVTdHJpbmcgY3NFbnRyeSk7DQorDQorICAgIENQREZfQXBTZXR0aW5ncwkJCUdldE1LKEZYX0JPT0wgYkNyZWF0ZSk7DQorDQorICAgIENQREZfSW50ZXJGb3JtKgkJCW1fcEZvcm07DQorDQorICAgIENQREZfRm9ybUZpZWxkKgkJCW1fcEZpZWxkOw0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQltX3BXaWRnZXREaWN0Ow0KKyAgICBmcmllbmQgY2xhc3MJCQlDUERGX0ludGVyRm9ybTsNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9Gb3JtRmllbGQ7DQorfTsNCitjbGFzcyBDUERGX0Zvcm1Ob3RpZnkgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgfkNQREZfRm9ybU5vdGlmeSgpIHt9DQorDQorICAgIHZpcnR1YWwgaW50CQlCZWZvcmVWYWx1ZUNoYW5nZShjb25zdCBDUERGX0Zvcm1GaWVsZCogcEZpZWxkLCBDRlhfV2lkZVN0cmluZyYgY3NWYWx1ZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBpbnQJCUFmdGVyVmFsdWVDaGFuZ2UoY29uc3QgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBpbnQJCUJlZm9yZVNlbGVjdGlvbkNoYW5nZShjb25zdCBDUERGX0Zvcm1GaWVsZCogcEZpZWxkLCBDRlhfV2lkZVN0cmluZyYgY3NWYWx1ZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBpbnQJCUFmdGVyU2VsZWN0aW9uQ2hhbmdlKGNvbnN0IENQREZfRm9ybUZpZWxkKiBwRmllbGQpDQorICAgIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgaW50CQlBZnRlckNoZWNrZWRTdGF0dXNDaGFuZ2UoY29uc3QgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCwgY29uc3QgQ0ZYX0J5dGVBcnJheSYgc3RhdHVzQXJyYXkpDQorICAgIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgaW50CQlCZWZvcmVGb3JtUmVzZXQoY29uc3QgQ1BERl9JbnRlckZvcm0qIHBGb3JtKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIGludAkJQWZ0ZXJGb3JtUmVzZXQoY29uc3QgQ1BERl9JbnRlckZvcm0qIHBGb3JtKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIGludAkJQmVmb3JlRm9ybUltcG9ydERhdGEoY29uc3QgQ1BERl9JbnRlckZvcm0qIHBGb3JtKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIGludAkJQWZ0ZXJGb3JtSW1wb3J0RGF0YShjb25zdCBDUERGX0ludGVyRm9ybSogcEZvcm0pDQorICAgIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorfTsNCitGWF9CT09MCQlGUERGX0dlbmVyYXRlQVAoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9EaWN0aW9uYXJ5KiBwQW5ub3REaWN0KTsNCitjbGFzcyBDUERGX1BhZ2VMYWJlbCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9QYWdlTGFiZWwoQ1BERl9Eb2N1bWVudCogcERvY3VtZW50KQ0KKyAgICB7DQorICAgICAgICBtX3BEb2N1bWVudCA9IHBEb2N1bWVudDsNCisgICAgfQ0KKw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCQkJR2V0TGFiZWwoaW50IG5QYWdlKSBjb25zdDsNCisNCisgICAgRlhfSU5UMzIJCQkJCQlHZXRQYWdlQnlMYWJlbChGWF9CU1RSIGJzTGFiZWwpIGNvbnN0Ow0KKw0KKw0KKyAgICBGWF9JTlQzMgkJCQkJCUdldFBhZ2VCeUxhYmVsKEZYX1dTVFIgd3NMYWJlbCkgY29uc3Q7DQorDQorcHJvdGVjdGVkOg0KKyAgICBDUERGX0RvY3VtZW50KgkJCQkJbV9wRG9jdW1lbnQ7DQorfTsNCitjbGFzcyBDUERGX01ldGFkYXRhDQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9NZXRhZGF0YSgpOw0KKw0KKw0KKyAgICB+Q1BERl9NZXRhZGF0YSgpOw0KKw0KKyAgICB2b2lkCQkJCUxvYWREb2MoQ1BERl9Eb2N1bWVudCAqcERvYyk7DQorDQorDQorICAgIEZYX0lOVDMyCQkJR2V0U3RyaW5nKEZYX0JTVFIgYnNJdGVtLCBDRlhfV2lkZVN0cmluZyAmd3NTdHIpOw0KKw0KKyAgICBDWE1MX0VsZW1lbnQqCQlHZXRSb290KCkgY29uc3Q7DQorDQorICAgIENYTUxfRWxlbWVudCoJCUdldFJERigpIGNvbnN0Ow0KKw0KK3Byb3RlY3RlZDoNCisgICAgRlhfTFBWT0lECW1fcERhdGE7DQorfTsNCitjbGFzcyBDUERGX1ZpZXdlclByZWZlcmVuY2VzDQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9WaWV3ZXJQcmVmZXJlbmNlcyhDUERGX0RvY3VtZW50ICpwRG9jKTsNCisNCisNCisgICAgfkNQREZfVmlld2VyUHJlZmVyZW5jZXMoKTsNCisNCisNCisgICAgRlhfQk9PTCBJc0RpcmVjdGlvblIyTCgpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MIFByaW50U2NhbGluZygpIGNvbnN0Ow0KKw0KKw0KK3Byb3RlY3RlZDoNCisgICAgQ1BERl9Eb2N1bWVudCoJbV9wRG9jOw0KK307DQorY2xhc3MgQ1BERl9BcFNldHRpbmdzIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX0FwU2V0dGluZ3MoQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IE5VTEwpDQorICAgIHsNCisgICAgICAgIG1fcERpY3QgPSBwRGljdDsNCisgICAgfQ0KKw0KKyAgICBvcGVyYXRvciBDUERGX0RpY3Rpb25hcnkqICgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0Ow0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJCUhhc01LRW50cnkoRlhfQlNUUiBjc0VudHJ5KTsNCisNCisNCisNCisgICAgaW50CQkJCQkJR2V0Um90YXRpb24oKTsNCisNCisNCisNCisNCisgICAgaW5saW5lIEZYX0FSR0IJCQlHZXRCb3JkZXJDb2xvcihpbnQmIGlDb2xvclR5cGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRDb2xvcihpQ29sb3JUeXBlLCBGWF9CU1RSQygiQkMiKSk7DQorICAgIH0NCisNCisgICAgaW5saW5lIEZYX0ZMT0FUCQkJR2V0T3JpZ2luYWxCb3JkZXJDb2xvcihpbnQgaW5kZXgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRPcmlnaW5hbENvbG9yKGluZGV4LCBGWF9CU1RSQygiQkMiKSk7DQorICAgIH0NCisNCisgICAgaW5saW5lIHZvaWQJCQkJR2V0T3JpZ2luYWxCb3JkZXJDb2xvcihpbnQmIGlDb2xvclR5cGUsIEZYX0ZMT0FUIGZjWzRdKQ0KKyAgICB7DQorICAgICAgICBHZXRPcmlnaW5hbENvbG9yKGlDb2xvclR5cGUsIGZjLCBGWF9CU1RSQygiQkMiKSk7DQorICAgIH0NCisNCisNCisNCisNCisgICAgaW5saW5lIEZYX0FSR0IJCQlHZXRCYWNrZ3JvdW5kQ29sb3IoaW50JiBpQ29sb3JUeXBlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0Q29sb3IoaUNvbG9yVHlwZSwgRlhfQlNUUkMoIkJHIikpOw0KKyAgICB9DQorDQorICAgIGlubGluZSBGWF9GTE9BVAkJCUdldE9yaWdpbmFsQmFja2dyb3VuZENvbG9yKGludCBpbmRleCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEdldE9yaWdpbmFsQ29sb3IoaW5kZXgsIEZYX0JTVFJDKCJCRyIpKTsNCisgICAgfQ0KKw0KKyAgICBpbmxpbmUgdm9pZAkJCQlHZXRPcmlnaW5hbEJhY2tncm91bmRDb2xvcihpbnQmIGlDb2xvclR5cGUsIEZYX0ZMT0FUIGZjWzRdKQ0KKyAgICB7DQorICAgICAgICBHZXRPcmlnaW5hbENvbG9yKGlDb2xvclR5cGUsIGZjLCBGWF9CU1RSQygiQkciKSk7DQorICAgIH0NCisNCisNCisNCisNCisgICAgaW5saW5lIENGWF9XaWRlU3RyaW5nCUdldE5vcm1hbENhcHRpb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0Q2FwdGlvbihGWF9CU1RSQygiQ0EiKSk7DQorICAgIH0NCisNCisNCisNCisNCisgICAgaW5saW5lIENGWF9XaWRlU3RyaW5nCUdldFJvbGxvdmVyQ2FwdGlvbigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRDYXB0aW9uKEZYX0JTVFJDKCJSQyIpKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBpbmxpbmUgQ0ZYX1dpZGVTdHJpbmcJR2V0RG93bkNhcHRpb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0Q2FwdGlvbihGWF9CU1RSQygiQUMiKSk7DQorICAgIH0NCisNCisNCisNCisNCisgICAgaW5saW5lIENQREZfU3RyZWFtKgkJR2V0Tm9ybWFsSWNvbigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRJY29uKEZYX0JTVFJDKCJJIikpOw0KKyAgICB9DQorDQorDQorDQorDQorICAgIGlubGluZSBDUERGX1N0cmVhbSoJCUdldFJvbGxvdmVySWNvbigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRJY29uKEZYX0JTVFJDKCJSSSIpKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBpbmxpbmUgQ1BERl9TdHJlYW0qCQlHZXREb3duSWNvbigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRJY29uKEZYX0JTVFJDKCJJWCIpKTsNCisgICAgfQ0KKw0KKw0KKw0KKw0KKyAgICBDUERGX0ljb25GaXQJCQlHZXRJY29uRml0KCk7DQorDQorDQorDQorDQorICAgIGludAkJCQkJCUdldFRleHRQb3NpdGlvbigpOw0KKw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCQltX3BEaWN0Ow0KK3Byb3RlY3RlZDoNCisNCisgICAgRlhfQVJHQgkJCQkJR2V0Q29sb3IoaW50JiBpQ29sb3JUeXBlLCBGWF9CU1RSIGNzRW50cnkpOw0KKw0KKyAgICBGWF9GTE9BVAkJCQlHZXRPcmlnaW5hbENvbG9yKGludCBpbmRleCwgRlhfQlNUUiBjc0VudHJ5KTsNCisNCisgICAgdm9pZAkJCQkJR2V0T3JpZ2luYWxDb2xvcihpbnQmIGlDb2xvclR5cGUsIEZYX0ZMT0FUIGZjWzRdLCBGWF9CU1RSIGNzRW50cnkpOw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCUdldENhcHRpb24oRlhfQlNUUiBjc0VudHJ5KTsNCisNCisgICAgQ1BERl9TdHJlYW0qCQkJR2V0SWNvbihGWF9CU1RSIGNzRW50cnkpOw0KKyAgICBmcmllbmQgY2xhc3MJCQlDUERGX0Zvcm1Db250cm9sOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2ZwZGZkb2MvZnBkZl90YWdnZWQuaCBiL2NvcmUvaW5jbHVkZS9mcGRmZG9jL2ZwZGZfdGFnZ2VkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ0YzI2MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9mcGRmZG9jL2ZwZGZfdGFnZ2VkLmgKQEAgLTAsMCArMSw5OSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlBERl9UQUdHRURfSF8NCisjZGVmaW5lIF9GUERGX1RBR0dFRF9IXw0KK2NsYXNzIENQREZfU3RydWN0VHJlZTsNCitjbGFzcyBDUERGX1N0cnVjdEVsZW1lbnQ7DQorc3RydWN0IENQREZfU3RydWN0S2lkOw0KK2NsYXNzIENQREZfRG9jdW1lbnQ7DQorY2xhc3MgQ1BERl9QYWdlOw0KK2NsYXNzIElQREZfUmVmbG93RW5naW5lOw0KK2NsYXNzIElQREZfUmVmbG93ZWRQYWdlOw0KK2NsYXNzIENQREZfU3RydWN0VHJlZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgc3RhdGljIENQREZfU3RydWN0VHJlZSogTG9hZERvYyhjb25zdCBDUERGX0RvY3VtZW50KiBwRG9jKTsNCisNCisgICAgc3RhdGljIENQREZfU3RydWN0VHJlZSogTG9hZFBhZ2UoY29uc3QgQ1BERl9Eb2N1bWVudCogcERvYywgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZURpY3QpOw0KKw0KKyAgICB2aXJ0dWFsIH5DUERGX1N0cnVjdFRyZWUoKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIGludAkJCUNvdW50VG9wRWxlbWVudHMoKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgQ1BERl9TdHJ1Y3RFbGVtZW50KglHZXRUb3BFbGVtZW50KGludCBpKSBjb25zdCA9IDA7DQorfTsNCitzdHJ1Y3QgQ1BERl9TdHJ1Y3RLaWQgew0KKyAgICBlbnVtIHsNCisgICAgICAgIEludmFsaWQsDQorICAgICAgICBFbGVtZW50LA0KKyAgICAgICAgUGFnZUNvbnRlbnQsDQorICAgICAgICBTdHJlYW1Db250ZW50LA0KKyAgICAgICAgT2JqZWN0DQorICAgIH0gbV9UeXBlOw0KKw0KKyAgICB1bmlvbiB7DQorICAgICAgICBzdHJ1Y3Qgew0KKw0KKyAgICAgICAgICAgIENQREZfU3RydWN0RWxlbWVudCoJbV9wRWxlbWVudDsNCisNCisgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqCW1fcERpY3Q7DQorICAgICAgICB9IG1fRWxlbWVudDsNCisgICAgICAgIHN0cnVjdCB7DQorDQorICAgICAgICAgICAgRlhfRFdPUkQJCQltX1BhZ2VPYmpOdW07DQorDQorICAgICAgICAgICAgRlhfRFdPUkQJCQltX0NvbnRlbnRJZDsNCisgICAgICAgIH0gbV9QYWdlQ29udGVudDsNCisgICAgICAgIHN0cnVjdCB7DQorDQorICAgICAgICAgICAgRlhfRFdPUkQJCQltX1BhZ2VPYmpOdW07DQorDQorICAgICAgICAgICAgRlhfRFdPUkQJCQltX0NvbnRlbnRJZDsNCisNCisgICAgICAgICAgICBGWF9EV09SRAkJCW1fUmVmT2JqTnVtOw0KKyAgICAgICAgfSBtX1N0cmVhbUNvbnRlbnQ7DQorICAgICAgICBzdHJ1Y3Qgew0KKw0KKyAgICAgICAgICAgIEZYX0RXT1JECQkJbV9QYWdlT2JqTnVtOw0KKw0KKyAgICAgICAgICAgIEZYX0RXT1JECQkJbV9SZWZPYmpOdW07DQorICAgICAgICB9IG1fT2JqZWN0Ow0KKyAgICB9Ow0KK307DQorY2xhc3MgQ1BERl9TdHJ1Y3RFbGVtZW50IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIENQREZfU3RydWN0VHJlZSoJR2V0VHJlZSgpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBjb25zdCBDRlhfQnl0ZVN0cmluZyYJR2V0VHlwZSgpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBDUERGX1N0cnVjdEVsZW1lbnQqCUdldFBhcmVudCgpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBDUERGX0RpY3Rpb25hcnkgKglHZXREaWN0KCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIGludAkJCQkJQ291bnRLaWRzKCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIGNvbnN0IENQREZfU3RydWN0S2lkJglHZXRLaWQoaW50IGluZGV4KSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgQ0ZYX1B0ckFycmF5KgkJR2V0T2JqZWN0QXJyYXkoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgQ1BERl9PYmplY3QqCQlHZXRBdHRyKEZYX0JTVFIgb3duZXIsIEZYX0JTVFIgbmFtZSwgRlhfQk9PTCBiSW5oZXJpdGFibGUgPSBGQUxTRSwgRlhfRkxPQVQgZkxldmVsID0gMC4wRikgPSAwOw0KKw0KKw0KKw0KKyAgICB2aXJ0dWFsIENGWF9CeXRlU3RyaW5nCQlHZXROYW1lKEZYX0JTVFIgb3duZXIsIEZYX0JTVFIgbmFtZSwgRlhfQlNUUiBkZWZhdWx0X3ZhbHVlLCBGWF9CT09MIGJJbmhlcml0YWJsZSA9IEZBTFNFLCBpbnQgc3ViaW5kZXggPSAtMSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0FSR0IJCQkJR2V0Q29sb3IoRlhfQlNUUiBvd25lciwgRlhfQlNUUiBuYW1lLCBGWF9BUkdCIGRlZmF1bHRfdmFsdWUsIEZYX0JPT0wgYkluaGVyaXRhYmxlID0gRkFMU0UsIGludCBzdWJpbmRleCA9IC0xKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfRkxPQVQJCQlHZXROdW1iZXIoRlhfQlNUUiBvd25lciwgRlhfQlNUUiBuYW1lLCBGWF9GTE9BVCBkZWZhdWx0X3ZhbHVlLCBGWF9CT09MIGJJbmhlcml0YWJsZSA9IEZBTFNFLCBpbnQgc3ViaW5kZXggPSAtMSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIGludAkJCQkJR2V0SW50ZWdlcihGWF9CU1RSIG93bmVyLCBGWF9CU1RSIG5hbWUsIGludCBkZWZhdWx0X3ZhbHVlLCBGWF9CT09MIGJJbmhlcml0YWJsZSA9IEZBTFNFLCBpbnQgc3ViaW5kZXggPSAtMSkgPSAwOw0KKw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2ZwZGZkb2MvZnBkZl92dC5oIGIvY29yZS9pbmNsdWRlL2ZwZGZkb2MvZnBkZl92dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyODI1YzEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnBkZmRvYy9mcGRmX3Z0LmgKQEAgLTAsMCArMSw0NDQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZfVlRfSF8NCisjZGVmaW5lIF9GUERGX1ZUX0hfDQorI2luY2x1ZGUgIi4uL2Z4Y3J0L2Z4X2Jhc2ljLmgiDQorI2luY2x1ZGUgIi4uL2ZwZGZhcGkvZnBkZl9wYXJzZXIuaCINCitzdHJ1Y3QgQ1BWVF9Xb3JkUGxhY2U7DQorc3RydWN0IENQVlRfV29yZFJhbmdlOw0KK3N0cnVjdCBDUFZUX1dvcmQ7DQorc3RydWN0IENQVlRfTGluZTsNCitzdHJ1Y3QgQ1BWVF9TZWN0aW9uOw0KK2NsYXNzIElQREZfVmFyaWFibGVUZXh0X1Byb3ZpZGVyOw0KK2NsYXNzIElQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yOw0KK2NsYXNzIElQREZfVmFyaWFibGVUZXh0Ow0KK3N0cnVjdCBDUFZUX1dvcmRQbGFjZSB7DQorDQorICAgIENQVlRfV29yZFBsYWNlKCkgOiBuU2VjSW5kZXgoLTEpLCBuTGluZUluZGV4KC0xKSwgbldvcmRJbmRleCgtMSkNCisgICAgew0KKyAgICB9DQorDQorICAgIENQVlRfV29yZFBsYWNlKEZYX0lOVDMyIG5TZWNJbmRleCwgRlhfSU5UMzIgbkxpbmVJbmRleCwgRlhfSU5UMzIgbldvcmRJbmRleCkNCisgICAgew0KKyAgICAgICAgdGhpcy0+blNlY0luZGV4ID0gblNlY0luZGV4Ow0KKyAgICAgICAgdGhpcy0+bkxpbmVJbmRleCA9IG5MaW5lSW5kZXg7DQorICAgICAgICB0aGlzLT5uV29yZEluZGV4ID0gbldvcmRJbmRleDsNCisgICAgfQ0KKw0KKyAgICB2b2lkIERlZmF1bHQoKQ0KKyAgICB7DQorICAgICAgICBuU2VjSW5kZXggPSBuTGluZUluZGV4ID0gbldvcmRJbmRleCA9IC0xOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wgb3BlcmF0b3IgPT0gKGNvbnN0IENQVlRfV29yZFBsYWNlICYgd3ApIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiB3cC5uU2VjSW5kZXggPT0gdGhpcy0+blNlY0luZGV4ICYmIHdwLm5MaW5lSW5kZXggPT0gdGhpcy0+bkxpbmVJbmRleCAmJiB3cC5uV29yZEluZGV4ID09IHRoaXMtPm5Xb3JkSW5kZXg7DQorICAgIH0NCisNCisgICAgRlhfQk9PTCBvcGVyYXRvciAhPSAoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiB3cCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHdwLm5TZWNJbmRleCAhPSB0aGlzLT5uU2VjSW5kZXggfHwgd3AubkxpbmVJbmRleCAhPSB0aGlzLT5uTGluZUluZGV4IHx8IHdwLm5Xb3JkSW5kZXggIT0gdGhpcy0+bldvcmRJbmRleDsNCisgICAgfQ0KKw0KKyAgICBpbmxpbmUgRlhfSU5UMzIgV29yZENtcChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHdwKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAodGhpcy0+blNlY0luZGV4ID4gd3AublNlY0luZGV4KSB7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICB9DQorICAgICAgICBpZiAodGhpcy0+blNlY0luZGV4IDwgd3AublNlY0luZGV4KSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHRoaXMtPm5MaW5lSW5kZXggPiB3cC5uTGluZUluZGV4KSB7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICB9DQorICAgICAgICBpZiAodGhpcy0+bkxpbmVJbmRleCA8IHdwLm5MaW5lSW5kZXgpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAodGhpcy0+bldvcmRJbmRleCA+IHdwLm5Xb3JkSW5kZXgpIHsNCisgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh0aGlzLT5uV29yZEluZGV4IDwgd3AubldvcmRJbmRleCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIGlubGluZSBGWF9JTlQzMiBMaW5lQ21wKGNvbnN0IENQVlRfV29yZFBsYWNlICYgd3ApIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmICh0aGlzLT5uU2VjSW5kZXggPiB3cC5uU2VjSW5kZXgpIHsNCisgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh0aGlzLT5uU2VjSW5kZXggPCB3cC5uU2VjSW5kZXgpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAodGhpcy0+bkxpbmVJbmRleCA+IHdwLm5MaW5lSW5kZXgpIHsNCisgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh0aGlzLT5uTGluZUluZGV4IDwgd3AubkxpbmVJbmRleCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIGlubGluZSBGWF9JTlQzMiBTZWNDbXAoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiB3cCkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKHRoaXMtPm5TZWNJbmRleCA+IHdwLm5TZWNJbmRleCkgew0KKyAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHRoaXMtPm5TZWNJbmRleCA8IHdwLm5TZWNJbmRleCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIEZYX0lOVDMyCQkJCQkJCW5TZWNJbmRleDsNCisNCisgICAgRlhfSU5UMzIJCQkJCQkJbkxpbmVJbmRleDsNCisNCisgICAgRlhfSU5UMzIJCQkJCQkJbldvcmRJbmRleDsNCit9Ow0KK3N0cnVjdCBDUFZUX1dvcmRSYW5nZSB7DQorDQorICAgIENQVlRfV29yZFJhbmdlKCkNCisgICAgew0KKyAgICB9DQorDQorICAgIENQVlRfV29yZFJhbmdlKGNvbnN0IENQVlRfV29yZFBsYWNlICYgYmVnaW4sIGNvbnN0IENQVlRfV29yZFBsYWNlICYgZW5kKQ0KKyAgICB7DQorICAgICAgICBTZXQoYmVnaW4sIGVuZCk7DQorICAgIH0NCisNCisgICAgdm9pZCBEZWZhdWx0KCkNCisgICAgew0KKyAgICAgICAgQmVnaW5Qb3MuRGVmYXVsdCgpOw0KKyAgICAgICAgRW5kUG9zLkRlZmF1bHQoKTsNCisgICAgfQ0KKw0KKyAgICB2b2lkIFNldChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIGJlZ2luLCBjb25zdCBDUFZUX1dvcmRQbGFjZSAmIGVuZCkNCisgICAgew0KKyAgICAgICAgdGhpcy0+QmVnaW5Qb3MgPSBiZWdpbjsNCisgICAgICAgIHRoaXMtPkVuZFBvcyA9IGVuZDsNCisgICAgICAgIFN3YXBXb3JkUGxhY2UoKTsNCisgICAgfQ0KKw0KKyAgICB2b2lkIFNldEJlZ2luUG9zKGNvbnN0IENQVlRfV29yZFBsYWNlICYgYmVnaW4pDQorICAgIHsNCisgICAgICAgIHRoaXMtPkJlZ2luUG9zID0gYmVnaW47DQorICAgICAgICBTd2FwV29yZFBsYWNlKCk7DQorICAgIH0NCisNCisgICAgdm9pZCBTZXRFbmRQb3MoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBlbmQpDQorICAgIHsNCisgICAgICAgIHRoaXMtPkVuZFBvcyA9IGVuZDsNCisgICAgICAgIFN3YXBXb3JkUGxhY2UoKTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MIElzRXhpc3QoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gdGhpcy0+QmVnaW5Qb3MgIT0gdGhpcy0+RW5kUG9zOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wgb3BlcmF0b3IgIT0gKGNvbnN0IENQVlRfV29yZFJhbmdlICYgd3IpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiB3ci5CZWdpblBvcyAhPSB0aGlzLT5CZWdpblBvcyB8fCB3ci5FbmRQb3MgIT0gdGhpcy0+RW5kUG9zOw0KKyAgICB9DQorDQorICAgIHZvaWQgU3dhcFdvcmRQbGFjZSgpDQorICAgIHsNCisgICAgICAgIGlmIChCZWdpblBvcy5Xb3JkQ21wKEVuZFBvcykgPiAwKSB7DQorICAgICAgICAgICAgQ1BWVF9Xb3JkUGxhY2UgcGxhY2UgPSBFbmRQb3M7DQorICAgICAgICAgICAgRW5kUG9zID0gQmVnaW5Qb3M7DQorICAgICAgICAgICAgQmVnaW5Qb3MgPSBwbGFjZTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBDUFZUX1dvcmRQbGFjZSBCZWdpblBvczsNCisNCisgICAgQ1BWVF9Xb3JkUGxhY2UgRW5kUG9zOw0KK307DQorc3RydWN0IENQVlRfU2VjUHJvcHMgOiBwdWJsaWMgQ0ZYX09iamVjdCB7DQorDQorICAgIENQVlRfU2VjUHJvcHMoKSA6IGZMaW5lTGVhZGluZygwLjBmKSwgZkxpbmVJbmRlbnQoMC4wZiksIG5BbGlnbm1lbnQoMCkNCisgICAgew0KKyAgICB9DQorDQorICAgIENQVlRfU2VjUHJvcHMoRlhfRkxPQVQgbGluZUxlYWRpbmcsIEZYX0ZMT0FUIGxpbmVJbmRlbnQsIEZYX0lOVDMyIGFsaWdubWVudCkgOg0KKyAgICAgICAgZkxpbmVMZWFkaW5nKGxpbmVMZWFkaW5nKSwgZkxpbmVJbmRlbnQobGluZUluZGVudCksIG5BbGlnbm1lbnQoYWxpZ25tZW50KQ0KKyAgICB7DQorICAgIH0NCisNCisgICAgQ1BWVF9TZWNQcm9wcyhjb25zdCBDUFZUX1NlY1Byb3BzICYgb3RoZXIpIDoNCisgICAgICAgIGZMaW5lTGVhZGluZyhvdGhlci5mTGluZUxlYWRpbmcpLCBmTGluZUluZGVudChvdGhlci5mTGluZUluZGVudCksIG5BbGlnbm1lbnQob3RoZXIubkFsaWdubWVudCkNCisgICAgew0KKyAgICB9DQorDQorICAgIEZYX0ZMT0FUCQkJZkxpbmVMZWFkaW5nOw0KKw0KKyAgICBGWF9GTE9BVAkJCWZMaW5lSW5kZW50Ow0KKw0KKyAgICBGWF9JTlQzMgkJCW5BbGlnbm1lbnQ7DQorfTsNCitzdHJ1Y3QgQ1BWVF9Xb3JkUHJvcHMgOiBwdWJsaWMgQ0ZYX09iamVjdCB7DQorDQorICAgIENQVlRfV29yZFByb3BzKCkgOiBuRm9udEluZGV4KC0xKSwgZkZvbnRTaXplKDAuMGYpLCBkd1dvcmRDb2xvcigwKSwgblNjcmlwdFR5cGUoMCksIG5Xb3JkU3R5bGUoMCksDQorICAgICAgICBmQ2hhclNwYWNlKDAuMGYpLCBuSG9yelNjYWxlKDApDQorICAgIHsNCisgICAgfQ0KKw0KKyAgICBDUFZUX1dvcmRQcm9wcyhGWF9JTlQzMglmb250SW5kZXgsIEZYX0ZMT0FUIGZvbnRTaXplLCBGWF9DT0xPUlJFRiB3b3JkQ29sb3IgPSAwLCBGWF9JTlQzMiBzY3JpcHRUeXBlID0gMCwgRlhfSU5UMzIgd29yZFN0eWxlID0gMCwNCisgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgY2hhclNwYWNlID0gMCwgRlhfSU5UMzIgaG9yelNjYWxlID0gMTAwKSA6DQorICAgICAgICBuRm9udEluZGV4KGZvbnRJbmRleCksIGZGb250U2l6ZShmb250U2l6ZSksIGR3V29yZENvbG9yKHdvcmRDb2xvciksIG5TY3JpcHRUeXBlKHNjcmlwdFR5cGUpLA0KKyAgICAgICAgbldvcmRTdHlsZSh3b3JkU3R5bGUpLCBmQ2hhclNwYWNlKGNoYXJTcGFjZSksIG5Ib3J6U2NhbGUoaG9yelNjYWxlKQ0KKyAgICB7DQorICAgIH0NCisNCisgICAgQ1BWVF9Xb3JkUHJvcHMoY29uc3QgQ1BWVF9Xb3JkUHJvcHMgJiBvdGhlcikgOg0KKyAgICAgICAgbkZvbnRJbmRleChvdGhlci5uRm9udEluZGV4KSwgZkZvbnRTaXplKG90aGVyLmZGb250U2l6ZSksIGR3V29yZENvbG9yKG90aGVyLmR3V29yZENvbG9yKSwNCisgICAgICAgIG5TY3JpcHRUeXBlKG90aGVyLm5TY3JpcHRUeXBlKSwgbldvcmRTdHlsZShvdGhlci5uV29yZFN0eWxlKSwgZkNoYXJTcGFjZShvdGhlci5mQ2hhclNwYWNlKSwNCisgICAgICAgIG5Ib3J6U2NhbGUob3RoZXIubkhvcnpTY2FsZSkNCisgICAgew0KKyAgICB9DQorDQorICAgIEZYX0lOVDMyCQkJCQluRm9udEluZGV4Ow0KKw0KKyAgICBGWF9GTE9BVAkJCQkJZkZvbnRTaXplOw0KKw0KKyAgICBGWF9DT0xPUlJFRgkJCQkJZHdXb3JkQ29sb3I7DQorDQorICAgIEZYX0lOVDMyCQkJCQluU2NyaXB0VHlwZTsNCisNCisgICAgRlhfSU5UMzIJCQkJCW5Xb3JkU3R5bGU7DQorDQorICAgIEZYX0ZMT0FUCQkJCQlmQ2hhclNwYWNlOw0KKw0KKyAgICBGWF9JTlQzMgkJCQkJbkhvcnpTY2FsZTsNCit9Ow0KK3N0cnVjdCBDUFZUX1dvcmQgew0KKw0KKyAgICBDUFZUX1dvcmQoKSA6IFdvcmQoMCksIG5DaGFyc2V0KDApLCBwdFdvcmQoMCwgMCksIGZBc2NlbnQoMC4wZiksIGZEZXNjZW50KDAuMGYpLCBmV2lkdGgoMC4wZiksDQorICAgICAgICBmRm9udFNpemUoMCksIFdvcmRQcm9wcygpDQorICAgIHsNCisgICAgfQ0KKw0KKyAgICBGWF9XT1JECQkJCQkJV29yZDsNCisNCisgICAgRlhfSU5UMzIJCQkJCW5DaGFyc2V0Ow0KKw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQlXb3JkUGxhY2U7DQorDQorICAgIENQREZfUG9pbnQJCQkJCXB0V29yZDsNCisNCisgICAgRlhfRkxPQVQJCQkJCWZBc2NlbnQ7DQorDQorICAgIEZYX0ZMT0FUCQkJCQlmRGVzY2VudDsNCisNCisgICAgRlhfRkxPQVQJCQkJCWZXaWR0aDsNCisNCisgICAgRlhfSU5UMzIJCQkJCW5Gb250SW5kZXg7DQorDQorICAgIEZYX0ZMT0FUCQkJCQlmRm9udFNpemU7DQorDQorICAgIENQVlRfV29yZFByb3BzCQkJCVdvcmRQcm9wczsNCit9Ow0KK3N0cnVjdCBDUFZUX0xpbmUgew0KKw0KKyAgICBDUFZUX0xpbmUoKSA6IHB0TGluZSgwLCAwKSwgZkxpbmVXaWR0aCgwLjBmKSwgZkxpbmVBc2NlbnQoMC4wZiksIGZMaW5lRGVzY2VudCgwLjBmKQ0KKyAgICB7DQorICAgIH0NCisNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJbGluZXBsYWNlOw0KKw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQlsaW5lRW5kOw0KKw0KKyAgICBDUERGX1BvaW50CQkJCQlwdExpbmU7DQorDQorICAgIEZYX0ZMT0FUCQkJCQlmTGluZVdpZHRoOw0KKw0KKyAgICBGWF9GTE9BVAkJCQkJZkxpbmVBc2NlbnQ7DQorDQorICAgIEZYX0ZMT0FUCQkJCQlmTGluZURlc2NlbnQ7DQorfTsNCitzdHJ1Y3QgQ1BWVF9TZWN0aW9uIHsNCisNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJc2VjcGxhY2U7DQorDQorICAgIENQREZfUmVjdAkJCQkJcmNTZWN0aW9uOw0KKw0KKyAgICBDUFZUX1NlY1Byb3BzCQkJCVNlY1Byb3BzOw0KKw0KKyAgICBDUFZUX1dvcmRQcm9wcwkJCQlXb3JkUHJvcHM7DQorfTsNCitjbGFzcyBJUERGX1ZhcmlhYmxlVGV4dF9Qcm92aWRlcg0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgRlhfSU5UMzIJCQkJCQlHZXRDaGFyV2lkdGgoRlhfSU5UMzIgbkZvbnRJbmRleCwgRlhfV09SRCB3b3JkLCBGWF9JTlQzMiBuV29yZFN0eWxlKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfSU5UMzIJCQkJCQlHZXRUeXBlQXNjZW50KEZYX0lOVDMyIG5Gb250SW5kZXgpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9JTlQzMgkJCQkJCUdldFR5cGVEZXNjZW50KEZYX0lOVDMyIG5Gb250SW5kZXgpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9JTlQzMgkJCQkJCUdldFdvcmRGb250SW5kZXgoRlhfV09SRCB3b3JkLCBGWF9JTlQzMiBjaGFyc2V0LCBGWF9JTlQzMiBuRm9udEluZGV4KSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQkJCQlJc0xhdGluV29yZChGWF9XT1JEIHdvcmQpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9JTlQzMgkJCQkJCUdldERlZmF1bHRGb250SW5kZXgoKSA9IDA7DQorfTsNCitjbGFzcyBJUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvcg0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQkJCQlOZXh0V29yZCgpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJCQkJCVByZXZXb3JkKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJCQkJTmV4dExpbmUoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQkJCQlQcmV2TGluZSgpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJCQkJCU5leHRTZWN0aW9uKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJCQkJUHJldlNlY3Rpb24oKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQkJCQlHZXRXb3JkKENQVlRfV29yZCAmIHdvcmQpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJCQkJCVNldFdvcmQoY29uc3QgQ1BWVF9Xb3JkICYgd29yZCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJCQkJR2V0TGluZShDUFZUX0xpbmUgJiBsaW5lKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQkJCQlHZXRTZWN0aW9uKENQVlRfU2VjdGlvbiAmIHNlY3Rpb24pIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbAlGWF9CT09MCQkJCQkJCVNldFNlY3Rpb24oY29uc3QgQ1BWVF9TZWN0aW9uICYgc2VjdGlvbikgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCQkJU2V0QXQoRlhfSU5UMzIgbldvcmRJbmRleCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCQkJU2V0QXQoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIGNvbnN0IENQVlRfV29yZFBsYWNlICYJCQlHZXRBdCgpIGNvbnN0ID0gMDsNCit9Ow0KK2NsYXNzIElQREZfVmFyaWFibGVUZXh0DQorew0KK3B1YmxpYzoNCisNCisgICAgc3RhdGljIElQREZfVmFyaWFibGVUZXh0KgkJCU5ld1ZhcmlhYmxlVGV4dCgpOw0KKw0KKyAgICBzdGF0aWMgdm9pZAkJCQkJCQlEZWxWYXJpYWJsZVRleHQoSVBERl9WYXJpYWJsZVRleHQqIHBWVCk7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIElQREZfVmFyaWFibGVUZXh0X1Byb3ZpZGVyKgkJU2V0UHJvdmlkZXIoSVBERl9WYXJpYWJsZVRleHRfUHJvdmlkZXIgKiBwUHJvdmlkZXIpID0gMDsNCisNCisgICAgdmlydHVhbCBJUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvcioJCUdldEl0ZXJhdG9yKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCQkJU2V0UGxhdGVSZWN0KGNvbnN0IENQREZfUmVjdCAmIHJlY3QpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJCQkJCVNldEFsaWdubWVudChGWF9JTlQzMiBuRm9ybWF0ID0gMCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCQkJU2V0UGFzc3dvcmRDaGFyKEZYX1dPUkQgd1N1YldvcmQgPSAnKicpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJCQkJCVNldExpbWl0Q2hhcihGWF9JTlQzMiBuTGltaXRDaGFyID0gMCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCQkJU2V0Q2hhckFycmF5KEZYX0lOVDMyIG5DaGFyQXJyYXkgPSAwKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCQkJCQlTZXRDaGFyU3BhY2UoRlhfRkxPQVQgZkNoYXJTcGFjZSA9IDAuMGYpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJCQkJCVNldEhvcnpTY2FsZShGWF9JTlQzMiBuSG9yelNjYWxlID0gMTAwKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCQkJCQlTZXRNdWx0aUxpbmUoRlhfQk9PTCBiTXVsdGlMaW5lID0gVFJVRSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCQkJU2V0QXV0b1JldHVybihGWF9CT09MIGJBdXRvID0gVFJVRSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCQkJU2V0QXV0b0ZvbnRTaXplKEZYX0JPT0wgYkF1dG8gPSBUUlVFKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCQkJCQlTZXRGb250U2l6ZShGWF9GTE9BVCBmRm9udFNpemUpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJCQkJCVNldExpbmVMZWFkaW5nKEZYX0ZMT0FUIGZMaW5lTGVhZGluZykgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCQkJU2V0UmljaFRleHQoRlhfQk9PTCBiUmljaFRleHQpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJCQkJCUluaXRpYWxpemUoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQkJCQlJc1ZhbGlkKCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJCQkJSXNSaWNoVGV4dCgpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJCQkJCVJlYXJyYW5nZUFsbCgpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJCQkJCVJlYXJyYW5nZVBhcnQoY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgJiBQbGFjZVJhbmdlKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCQkJCQlSZXNldEFsbCgpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJCQkJCVNldFRleHQoRlhfTFBDV1NUUiB0ZXh0LCBGWF9JTlQzMiBjaGFyc2V0ID0gMSwgY29uc3QgQ1BWVF9TZWNQcm9wcyAqIHBTZWNQcm9wcyA9IE5VTEwsDQorICAgICAgICAgICAgY29uc3QgQ1BWVF9Xb3JkUHJvcHMgKiBwV29yZFByb3BzID0gTlVMTCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlJbnNlcnRXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIEZYX1dPUkQgd29yZCwgRlhfSU5UMzIgY2hhcnNldCA9IDEsDQorICAgICAgICAgICAgY29uc3QgQ1BWVF9Xb3JkUHJvcHMgKiBwV29yZFByb3BzID0gTlVMTCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlJbnNlcnRTZWN0aW9uKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIGNvbnN0IENQVlRfU2VjUHJvcHMgKiBwU2VjUHJvcHMgPSBOVUxMLA0KKyAgICAgICAgICAgIGNvbnN0IENQVlRfV29yZFByb3BzICogcFdvcmRQcm9wcyA9IE5VTEwpID0gMDsNCisNCisgICAgdmlydHVhbCBDUFZUX1dvcmRQbGFjZQkJCQkJSW5zZXJ0VGV4dChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBGWF9MUENXU1RSIHRleHQsIEZYX0lOVDMyIGNoYXJzZXQgPSAxLA0KKyAgICAgICAgICAgIGNvbnN0IENQVlRfU2VjUHJvcHMgKiBwU2VjUHJvcHMgPSBOVUxMLAljb25zdCBDUFZUX1dvcmRQcm9wcyAqIHBXb3JkUHJvcHMgPSBOVUxMKSA9IDA7DQorDQorICAgIHZpcnR1YWwgQ1BWVF9Xb3JkUGxhY2UJCQkJCURlbGV0ZVdvcmRzKGNvbnN0IENQVlRfV29yZFJhbmdlICYgUGxhY2VSYW5nZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlEZWxldGVXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpID0gMDsNCisNCisgICAgdmlydHVhbCBDUFZUX1dvcmRQbGFjZQkJCQkJQmFja1NwYWNlV29yZChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSA9IDA7DQorDQorICAgIHZpcnR1YWwgY29uc3QgQ1BERl9SZWN0ICYJCQkJR2V0UGxhdGVSZWN0KCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQREZfUmVjdAkJCQkJCUdldENvbnRlbnRSZWN0KCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQkJCQkJR2V0VG90YWxXb3JkcygpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9GTE9BVAkJCQkJCUdldEZvbnRTaXplKCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQkJCQkJR2V0QWxpZ25tZW50KCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX1dPUkQJCQkJCQkJR2V0UGFzc3dvcmRDaGFyKCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQkJCQkJR2V0Q2hhckFycmF5KCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQkJCQkJR2V0TGltaXRDaGFyKCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJCQkJSXNNdWx0aUxpbmUoKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfSU5UMzIJCQkJCQlHZXRIb3J6U2NhbGUoKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfRkxPQVQJCQkJCQlHZXRDaGFyU3BhY2UoKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgQ1BWVF9Xb3JkUGxhY2UJCQkJCUdldEJlZ2luV29yZFBsYWNlKCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlHZXRFbmRXb3JkUGxhY2UoKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgQ1BWVF9Xb3JkUGxhY2UJCQkJCUdldFByZXZXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlHZXROZXh0V29yZFBsYWNlKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBDUFZUX1dvcmRQbGFjZQkJCQkJU2VhcmNoV29yZFBsYWNlKGNvbnN0IENQREZfUG9pbnQgJiBwb2ludCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlHZXRVcFdvcmRQbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBjb25zdCBDUERGX1BvaW50ICYgcG9pbnQpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBDUFZUX1dvcmRQbGFjZQkJCQkJR2V0RG93bldvcmRQbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBjb25zdCBDUERGX1BvaW50ICYgcG9pbnQpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBDUFZUX1dvcmRQbGFjZQkJCQkJR2V0TGluZUJlZ2luUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlHZXRMaW5lRW5kUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlHZXRTZWN0aW9uQmVnaW5QbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgQ1BWVF9Xb3JkUGxhY2UJCQkJCUdldFNlY3Rpb25FbmRQbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCQkJCQlVcGRhdGVXb3JkUGxhY2UoQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlBanVzdExpbmVIZWFkZXIoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSwgRlhfQk9PTCBiUHJldk9yTmV4dCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQkJCQkJV29yZFBsYWNlVG9Xb3JkSW5kZXgoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENQVlRfV29yZFBsYWNlCQkJCQlXb3JkSW5kZXhUb1dvcmRQbGFjZShGWF9JTlQzMiBpbmRleCkgY29uc3QgPSAwOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2ZwZGZ0ZXh0L2ZwZGZfdGV4dC5oIGIvY29yZS9pbmNsdWRlL2ZwZGZ0ZXh0L2ZwZGZfdGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNWVkYzMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnBkZnRleHQvZnBkZl90ZXh0LmgKQEAgLTAsMCArMSwxNzMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZfVEVYVF9IXw0KKyNkZWZpbmUgX0ZQREZfVEVYVF9IXw0KKyNpZm5kZWYgX0ZQREZfUEFSU0VSXw0KKyNpbmNsdWRlICIuLi9mcGRmYXBpL2ZwZGZfcGFyc2VyLmgiDQorI2VuZGlmDQorI2lmbmRlZiBfRlBERl9QQUdFT0JKX0hfDQorI2luY2x1ZGUgIi4uL2ZwZGZhcGkvZnBkZl9wYWdlb2JqLmgiDQorI2VuZGlmDQorI2lmbmRlZiBfRlBERl9QQUdFXw0KKyNpbmNsdWRlICIuLi9mcGRmYXBpL2ZwZGZfcGFnZS5oIg0KKyNlbmRpZg0KK2NsYXNzIENQREZfUGFnZU9iamVjdHM7DQorI2RlZmluZSBQREYyVFhUX0FVVE9fUk9UQVRFCQkxDQorI2RlZmluZSBQREYyVFhUX0FVVE9fV0lEVEgJCTINCisjZGVmaW5lIFBERjJUWFRfS0VFUF9DT0xVTU4JCTQNCisjZGVmaW5lIFBERjJUWFRfVVNFX09DUgkJCTgNCisjZGVmaW5lIFBERjJUWFRfSU5DTFVERV9JTlZJU0lCTEUJMTYNCit2b2lkIFBERl9HZXRQYWdlVGV4dChDRlhfQnl0ZVN0cmluZ0FycmF5JiBsaW5lcywgQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZSwNCisgICAgICAgICAgICAgICAgICAgICBpbnQgaU1pbldpZHRoLCBGWF9EV09SRCBmbGFncyk7DQordm9pZCBQREZfR2V0UGFnZVRleHRfVW5pY29kZShDRlhfV2lkZVN0cmluZ0FycmF5JiBsaW5lcywgQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpTWluV2lkdGgsIEZYX0RXT1JEIGZsYWdzKTsNCit2b2lkIFBERl9HZXRUZXh0U3RyZWFtX1VuaWNvZGUoQ0ZYX1dpZGVUZXh0QnVmJiBidWZmZXIsIENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfRGljdGlvbmFyeSogcFBhZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGZsYWdzKTsNCitDRlhfV2lkZVN0cmluZyBQREZfR2V0Rmlyc3RUZXh0TGluZV9Vbmljb2RlKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfRGljdGlvbmFyeSogcFBhZ2UpOw0KK2NsYXNzIElQREZfVGV4dFBhZ2U7DQorY2xhc3MgSVBERl9MaW5rRXh0cmFjdDsNCitjbGFzcyBJUERGX1RleHRQYWdlRmluZDsNCisjZGVmaW5lIENIQVJfRVJST1IJCQktMQ0KKyNkZWZpbmUgQ0hBUl9OT1JNQUwJCQkwDQorI2RlZmluZSBDSEFSX0dFTkVSQVRFRAkJMQ0KKyNkZWZpbmUgQ0hBUl9VTlVOSUNPREUJCTINCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIEZYX1dDSEFSCQkJbV9Vbmljb2RlOw0KKyAgICBGWF9XQ0hBUgkJCW1fQ2hhcmNvZGU7DQorICAgIEZYX0lOVDMyCQkJbV9GbGFnOw0KKyAgICBGWF9GTE9BVAkJCW1fRm9udFNpemU7DQorICAgIEZYX0ZMT0FUCQkJbV9PcmlnaW5YOw0KKyAgICBGWF9GTE9BVAkJCW1fT3JpZ2luWTsNCisgICAgQ0ZYX0Zsb2F0UmVjdAkJbV9DaGFyQm94Ow0KKyAgICBDUERGX1RleHRPYmplY3QqCW1fcFRleHRPYmo7DQorICAgIENGWF9BZmZpbmVNYXRyaXgJbV9NYXRyaXg7DQorfSBGUERGX0NIQVJfSU5GTzsNCit0eXBlZGVmCUNGWF9BcnJheVRlbXBsYXRlPENGWF9GbG9hdFJlY3Q+IENGWF9SZWN0QXJyYXk7DQorI2RlZmluZSBGUERGVEVYVF9MUlRCCTANCisjZGVmaW5lIEZQREZURVhUX1JMVEIJMQ0KKyNkZWZpbmUgRlBERlRFWFRfVEJSTAkyDQorI2RlZmluZSBGUERGVEVYVF9MRUZUCQkJLTENCisjZGVmaW5lIEZQREZURVhUX1JJR0hUCQkJMQ0KKyNkZWZpbmUgRlBERlRFWFRfVVAJCQkJLTINCisjZGVmaW5lIEZQREZURVhUX0RPV04JCQkyDQorY2xhc3MgSVBERl9SZWZsb3dlZFBhZ2U7DQorI2RlZmluZSBGUERGVEVYVF9XUklUSU5HTU9ERV9VTktOT1cJMA0KKyNkZWZpbmUgRlBERlRFWFRfV1JJVElOR01PREVfTFJUQgkxDQorI2RlZmluZSBGUERGVEVYVF9XUklUSU5HTU9ERV9STFRCCTINCisjZGVmaW5lIEZQREZURVhUX1dSSVRJTkdNT0RFX1RCUkwJMw0KK2NsYXNzIENQREZUZXh0X1BhcnNlT3B0aW9ucyA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERlRleHRfUGFyc2VPcHRpb25zKCk7DQorICAgIEZYX0JPT0wJCQltX2JHZXRDaGFyQ29kZU9ubHk7DQorICAgIEZYX0JPT0wJCQltX2JOb3JtYWxpemVPYmpzOw0KKyAgICBGWF9CT09MCQkJbV9iT3V0cHV0SHlwaGVuOw0KK307DQorY2xhc3MgSVBERl9UZXh0UGFnZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCB+SVBERl9UZXh0UGFnZSgpIHt9DQorICAgIHN0YXRpYyBJUERGX1RleHRQYWdlKglDcmVhdGVUZXh0UGFnZShjb25zdCBDUERGX1BhZ2UqIHBQYWdlLCBDUERGVGV4dF9QYXJzZU9wdGlvbnMgUGFyc2VyT3B0aW9ucyk7DQorICAgIHN0YXRpYyBJUERGX1RleHRQYWdlKglDcmVhdGVUZXh0UGFnZShjb25zdCBDUERGX1BhZ2UqIHBQYWdlLCBpbnQgZmxhZ3MgPSAwKTsNCisgICAgc3RhdGljIElQREZfVGV4dFBhZ2UqCUNyZWF0ZVRleHRQYWdlKGNvbnN0IENQREZfUGFnZU9iamVjdHMqIHBPYmpzLCBpbnQgZmxhZ3MgPSAwKTsNCisgICAgc3RhdGljIElQREZfVGV4dFBhZ2UqCUNyZWF0ZVJlZmxvd1RleHRQYWdlKElQREZfUmVmbG93ZWRQYWdlKiBwUmVmUGFnZSk7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCU5vcm1hbGl6ZU9iamVjdHMoRlhfQk9PTCBiTm9ybWFsaXplKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCVBhcnNlVGV4dFBhZ2UoKSA9IDA7DQorDQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCUlzUGFyc2VyZWQoKSBjb25zdCA9IDA7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIGludCBDaGFySW5kZXhGcm9tVGV4dEluZGV4KGludCBUZXh0SW5kZXgpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBpbnQgVGV4dEluZGV4RnJvbUNoYXJJbmRleChpbnQgQ2hhckluZGV4KSBjb25zdCA9IDA7DQorDQorDQorICAgIHZpcnR1YWwgaW50CQkJCUNvdW50Q2hhcnMoKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwJdm9pZAkJCUdldENoYXJJbmZvKGludCBpbmRleCwgRlBERl9DSEFSX0lORk8gJiBpbmZvKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCUdldFJlY3RBcnJheShpbnQgc3RhcnQsIGludCBuQ291bnQsIENGWF9SZWN0QXJyYXkmIHJlY3RBcnJheSkgY29uc3QgPSAwOw0KKw0KKw0KKw0KKyAgICB2aXJ0dWFsIGludAkJCQlHZXRJbmRleEF0UG9zKENQREZfUG9pbnQgcG9pbnQsIEZYX0ZMT0FUIHhUb3JlbGFuY2UsIEZYX0ZMT0FUIHlUb3JlbGFuY2UpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBpbnQJCQkJR2V0SW5kZXhBdFBvcyhGWF9GTE9BVCB4LCBGWF9GTE9BVCB5LCBGWF9GTE9BVCB4VG9yZWxhbmNlLCBGWF9GTE9BVCB5VG9yZWxhbmNlKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwJaW50CQkJCUdldE9yZGVyQnlEaXJlY3Rpb24oaW50IGluZGV4LCBpbnQgZGlyZWN0aW9uKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgQ0ZYX1dpZGVTdHJpbmcJR2V0VGV4dEJ5UmVjdChDRlhfRmxvYXRSZWN0IHJlY3QpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJR2V0UmVjdHNBcnJheUJ5UmVjdChDRlhfRmxvYXRSZWN0IHJlY3QsIENGWF9SZWN0QXJyYXkmIHJlc1JlY3RBcnJheSkgY29uc3QgPSAwOw0KKw0KKw0KKyAgICB2aXJ0dWFsIGludAkJCQlDb3VudFJlY3RzKGludCBzdGFydCwgaW50IG5Db3VudCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsCXZvaWQJCQlHZXRSZWN0KGludCByZWN0SW5kZXgsIEZYX0ZMT0FUJiBsZWZ0LCBGWF9GTE9BVCYgdG9wLCBGWF9GTE9BVCYgcmlnaHQsIEZYX0ZMT0FUICZib3R0b20pIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJR2V0QmFzZWxpbmVSb3RhdGUoaW50IHJlY3RJbmRleCwgaW50JiBSb3RhdGUpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJR2V0QmFzZWxpbmVSb3RhdGUoQ0ZYX0Zsb2F0UmVjdCByZWN0LCBpbnQmIFJvdGF0ZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsCWludAkJCQlDb3VudEJvdW5kZWRTZWdtZW50cyhGWF9GTE9BVCBsZWZ0LCBGWF9GTE9BVCB0b3AsIEZYX0ZMT0FUIHJpZ2h0LCBGWF9GTE9BVCBib3R0b20sIEZYX0JPT0wgYkNvbnRhaW5zID0gRkFMU0UpID0gMDsNCisNCisgICAgdmlydHVhbAl2b2lkCQkJR2V0Qm91bmRlZFNlZ21lbnQoaW50IGluZGV4LCBpbnQmIHN0YXJ0LCBpbnQmIGNvdW50KSBjb25zdCA9IDA7DQorDQorDQorICAgIHZpcnR1YWwgaW50CQkJCUdldFdvcmRCcmVhayhpbnQgaW5kZXgsIGludCBkaXJlY3Rpb24pIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBDRlhfV2lkZVN0cmluZwlHZXRQYWdlVGV4dChpbnQgc3RhcnQgPSAwLCBpbnQgbkNvdW50ID0gLTEgKSBjb25zdCA9IDA7DQorfTsNCisjZGVmaW5lIEZQREZURVhUX01BVENIQ0FTRSAgICAgIDB4MDAwMDAwMDENCisjZGVmaW5lIEZQREZURVhUX01BVENIV0hPTEVXT1JEIDB4MDAwMDAwMDINCisjZGVmaW5lIEZQREZURVhUX0NPTlNFQ1VUSVZFCTB4MDAwMDAwMDQNCitjbGFzcyBJUERGX1RleHRQYWdlRmluZCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbAl+SVBERl9UZXh0UGFnZUZpbmQoKSB7fQ0KKw0KKyAgICBzdGF0aWMJSVBERl9UZXh0UGFnZUZpbmQqCUNyZWF0ZVBhZ2VGaW5kKGNvbnN0IElQREZfVGV4dFBhZ2UqIHBUZXh0UGFnZSk7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsCUZYX0JPT0wJCQkJRmluZEZpcnN0KENGWF9XaWRlU3RyaW5nIGZpbmR3aGF0LCBpbnQgZmxhZ3MsIGludCBzdGFydFBvcyA9IDApID0gMDsNCisNCisgICAgdmlydHVhbAlGWF9CT09MCQkJCUZpbmROZXh0KCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsCUZYX0JPT0wJCQkJRmluZFByZXYoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCQlHZXRSZWN0QXJyYXkoQ0ZYX1JlY3RBcnJheSYgcmVjdHMpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBpbnQJCQkJCUdldEN1ck9yZGVyKCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIGludAkJCQkJR2V0TWF0Y2hlZENvdW50KCkgY29uc3QgPSAwOw0KK307DQorY2xhc3MgSVBERl9MaW5rRXh0cmFjdCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbAl+SVBERl9MaW5rRXh0cmFjdCgpIHt9DQorDQorICAgIHN0YXRpYwlJUERGX0xpbmtFeHRyYWN0KglDcmVhdGVMaW5rRXh0cmFjdCgpOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJRXh0cmFjdExpbmtzKGNvbnN0IElQREZfVGV4dFBhZ2UqIHBUZXh0UGFnZSkgPSAwOw0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCBpbnQJCQkJCUNvdW50TGlua3MoKSBjb25zdCA9IDA7DQorDQorICAgIHZpcnR1YWwgQ0ZYX1dpZGVTdHJpbmcJCUdldFVSTChpbnQgaW5kZXgpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbAl2b2lkCQkJCUdldEJvdW5kZWRTZWdtZW50KGludCBpbmRleCwgaW50JiBzdGFydCwgaW50JiBjb3VudCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJR2V0UmVjdHMoaW50IGluZGV4LCBDRlhfUmVjdEFycmF5JiByZWN0cykgY29uc3QgPSAwOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWMuaCBiL2NvcmUvaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVlOTcwMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgKQEAgLTAsMCArMSwyODggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX0NPREVDX0hfDQorI2RlZmluZSBfRlhfQ09ERUNfSF8NCisjaWZuZGVmIF9GWENSVF9FWFRFTlNJT05fDQorI2luY2x1ZGUgIi4uL2Z4Y3J0L2Z4X2V4dC5oIg0KKyNlbmRpZg0KKyNpbmNsdWRlICJmeF9jb2RlY19kZWYuaCINCisjaW5jbHVkZSAiZnhfY29kZWNfcHJvdmlkZXIuaCINCitjbGFzcyBDRlhfRElCU291cmNlOw0KK2NsYXNzIElDb2RlY19TY2FubGluZURlY29kZXI7DQorY2xhc3MgSUNvZGVjX0Jhc2ljTW9kdWxlOw0KK2NsYXNzIElDb2RlY19GYXhNb2R1bGU7DQorY2xhc3MgSUNvZGVjX0pwZWdNb2R1bGU7DQorY2xhc3MgSUNvZGVjX0pweE1vZHVsZTsNCitjbGFzcyBJQ29kZWNfSmJpZzJNb2R1bGU7DQorY2xhc3MgSUNvZGVjX0ljY01vZHVsZTsNCitjbGFzcyBJQ29kZWNfRmxhdGVNb2R1bGU7DQorY2xhc3MgSUNvZGVjX0piaWcyRW5jb2RlcjsNCitjbGFzcyBJQ29kZWNfU2NhbmxpbmVEZWNvZGVyOw0KK2NsYXNzIENDb2RlY19Nb2R1bGVNZ3IgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHN0YXRpYyBDQ29kZWNfTW9kdWxlTWdyKglDcmVhdGUoKTsNCisNCisgICAgdm9pZAkJCQlEZXN0cm95KCk7DQorDQorICAgIHZvaWQJCQkJSW5pdEpiaWcyRGVjb2RlcigpOw0KKw0KKyAgICB2b2lkCQkJCUluaXRKcHhEZWNvZGVyKCk7DQorDQorDQorICAgIHZvaWQJCQkJSW5pdEljY0RlY29kZXIoKTsNCisNCisgICAgSUNvZGVjX0piaWcyRW5jb2RlcioJCUNyZWF0ZUpiaWcyRW5jb2RlcigpOw0KK3Byb3RlY3RlZDoNCisgICAgQ0NvZGVjX01vZHVsZU1ncigpOw0KKyAgICB+Q0NvZGVjX01vZHVsZU1ncigpOw0KK3B1YmxpYzoNCisgICAgSUNvZGVjX0Jhc2ljTW9kdWxlKglHZXRCYXNpY01vZHVsZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BCYXNpY01vZHVsZTsNCisgICAgfQ0KKyAgICBJQ29kZWNfRmF4TW9kdWxlKglHZXRGYXhNb2R1bGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRmF4TW9kdWxlOw0KKyAgICB9DQorICAgIElDb2RlY19KcGVnTW9kdWxlKglHZXRKcGVnTW9kdWxlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEpwZWdNb2R1bGU7DQorICAgIH0NCisgICAgSUNvZGVjX0pweE1vZHVsZSoJR2V0SnB4TW9kdWxlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEpweE1vZHVsZTsNCisgICAgfQ0KKyAgICBJQ29kZWNfSmJpZzJNb2R1bGUqCUdldEpiaWcyTW9kdWxlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEpiaWcyTW9kdWxlOw0KKyAgICB9DQorICAgIElDb2RlY19JY2NNb2R1bGUqCUdldEljY01vZHVsZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BJY2NNb2R1bGU7DQorICAgIH0NCisgICAgSUNvZGVjX0ZsYXRlTW9kdWxlKglHZXRGbGF0ZU1vZHVsZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BGbGF0ZU1vZHVsZTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisgICAgSUNvZGVjX0Jhc2ljTW9kdWxlKgltX3BCYXNpY01vZHVsZTsNCisgICAgSUNvZGVjX0ZheE1vZHVsZSoJbV9wRmF4TW9kdWxlOw0KKyAgICBJQ29kZWNfSnBlZ01vZHVsZSoJbV9wSnBlZ01vZHVsZTsNCisgICAgSUNvZGVjX0pweE1vZHVsZSoJbV9wSnB4TW9kdWxlOw0KKyAgICBJQ29kZWNfSmJpZzJNb2R1bGUqCW1fcEpiaWcyTW9kdWxlOw0KKyAgICBJQ29kZWNfSWNjTW9kdWxlKgltX3BJY2NNb2R1bGU7DQorICAgIElDb2RlY19GbGF0ZU1vZHVsZSoJbV9wRmxhdGVNb2R1bGU7DQorDQorfTsNCitjbGFzcyBJQ29kZWNfQmFzaWNNb2R1bGUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgfklDb2RlY19CYXNpY01vZHVsZSgpIHt9DQorICAgIHZpcnR1YWwgRlhfQk9PTAlSdW5MZW5ndGhFbmNvZGUoY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIEZYX0xQQllURSYgZGVzdF9idWYsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJQTg1RW5jb2RlKGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBGWF9MUEJZVEUmIGRlc3RfYnVmLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEJiBkZXN0X3NpemUpID0gMDsNCisgICAgdmlydHVhbCBJQ29kZWNfU2NhbmxpbmVEZWNvZGVyKglDcmVhdGVSdW5MZW5ndGhEZWNvZGVyKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICBpbnQgbkNvbXBzLCBpbnQgYnBjKSA9IDA7DQorfTsNCitjbGFzcyBJQ29kZWNfU2NhbmxpbmVEZWNvZGVyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIH5JQ29kZWNfU2NhbmxpbmVEZWNvZGVyKCkge30NCisNCisgICAgdmlydHVhbCBGWF9EV09SRAlHZXRTcmNPZmZzZXQoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJRG93blNjYWxlKGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9MUEJZVEUJR2V0U2NhbmxpbmUoaW50IGxpbmUpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlTa2lwVG9TY2FubGluZShpbnQgbGluZSwgSUZYX1BhdXNlKiBwUGF1c2UpID0gMDsNCisNCisgICAgdmlydHVhbCBpbnQJCQlHZXRXaWR0aCgpID0gMDsNCisNCisgICAgdmlydHVhbCBpbnQJCQlHZXRIZWlnaHQoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgaW50CQkJQ291bnRDb21wcygpID0gMDsNCisNCisgICAgdmlydHVhbCBpbnQJCQlHZXRCUEMoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJSXNDb2xvclRyYW5zZm9ybWVkKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCUNsZWFySW1hZ2VEYXRhKCkgPSAwOw0KK307DQorY2xhc3MgSUNvZGVjX0ZsYXRlTW9kdWxlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIH5JQ29kZWNfRmxhdGVNb2R1bGUoKSB7fQ0KKyAgICB2aXJ0dWFsIElDb2RlY19TY2FubGluZURlY29kZXIqCUNyZWF0ZURlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgICAgIGludCBuQ29tcHMsIGludCBicGMsIGludCBwcmVkaWN0b3IsIGludCBDb2xvcnMsIGludCBCaXRzUGVyQ29tcG9uZW50LCBpbnQgQ29sdW1ucykgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECUZsYXRlT3JMWldEZWNvZGUoRlhfQk9PTCBiTFpXLCBjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfQk9PTCBiRWFybHlDaGFuZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJlZGljdG9yLCBpbnQgQ29sb3JzLCBpbnQgQml0c1BlckNvbXBvbmVudCwgaW50IENvbHVtbnMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBlc3RpbWF0ZWRfc2l6ZSwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUVuY29kZShjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByZWRpY3RvciwgaW50IENvbG9ycywgaW50IEJpdHNQZXJDb21wb25lbnQsIGludCBDb2x1bW5zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplKSA9IDA7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJRW5jb2RlKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpID0gMDsNCit9Ow0KK2NsYXNzIElDb2RlY19GYXhNb2R1bGUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgfklDb2RlY19GYXhNb2R1bGUoKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIElDb2RlY19TY2FubGluZURlY29kZXIqCUNyZWF0ZURlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgICAgIGludCBLLCBGWF9CT09MIEVuZE9mTGluZSwgRlhfQk9PTCBFbmNvZGVkQnl0ZUFsaWduLCBGWF9CT09MIEJsYWNrSXMxLCBpbnQgQ29sdW1ucywgaW50IFJvd3MpID0gMDsNCisNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlFbmNvZGUoRlhfTFBDQllURSBzcmNfYnVmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBwaXRjaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkgPSAwOw0KK307DQorY2xhc3MgSUNvZGVjX0pwZWdNb2R1bGUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgfklDb2RlY19KcGVnTW9kdWxlKCkge30NCisNCisgICAgdmlydHVhbCB2b2lkCQlTZXRQb3ZpZGVyKElGWF9KcGVnUHJvdmlkZXIqIHBKUCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIElDb2RlY19TY2FubGluZURlY29kZXIqCUNyZWF0ZURlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwNCisgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBuQ29tcHMsIEZYX0JPT0wgQ29sb3JUcmFuc2Zvcm0pID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlMb2FkSW5mbyhGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQmIHdpZHRoLCBpbnQmIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG51bV9jb21wb25lbnRzLCBpbnQmIGJpdHNfcGVyX2NvbXBvbmVudHMsIEZYX0JPT0wmIGNvbG9yX3RyYW5zZm9ybSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUqIGljY19idWZfcHRyID0gTlVMTCwgRlhfRFdPUkQqIGljY19sZW5ndGggPSBOVUxMKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJRW5jb2RlKGNvbnN0IGNsYXNzIENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX1NUUlNJWkUmIGRlc3Rfc2l6ZSwgaW50IHF1YWxpdHkgPSA3NSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBpY2NfYnVmID0gTlVMTCwgRlhfRFdPUkQgaWNjX2xlbmd0aCA9IDApID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkKgkJU3RhcnQoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJRmluaXNoKHZvaWQqIHBDb250ZXh0KSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJSW5wdXQodm9pZCogcENvbnRleHQsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUpID0gMDsNCisNCisgICAgdmlydHVhbCBpbnQJCQlSZWFkSGVhZGVyKHZvaWQqIHBDb250ZXh0LCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdodCwgaW50KiBuQ29tcHMpID0gMDsNCisNCisNCisgICAgdmlydHVhbCBpbnQJCQlTdGFydFNjYW5saW5lKHZvaWQqIHBDb250ZXh0LCBpbnQgZG93bl9zY2FsZSkgPSAwOw0KKw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVJlYWRTY2FubGluZSh2b2lkKiBwQ29udGV4dCwgRlhfTFBCWVRFIGRlc3RfYnVmKSA9IDA7DQorDQorDQorICAgIHZpcnR1YWwgRlhfRFdPUkQJR2V0QXZhaWxJbnB1dCh2b2lkKiBwQ29udGV4dCwgRlhfTFBCWVRFKiBhdmFpbF9idWZfcHRyID0gTlVMTCkgPSAwOw0KK307DQorY2xhc3MgSUNvZGVjX0pweE1vZHVsZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCB+SUNvZGVjX0pweE1vZHVsZSgpIHt9DQorDQorICAgIHZpcnR1YWwgRlhfTFBWT0lEIAlDcmVhdGVEZWNvZGVyKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIEZYX0JPT0wgdXNlQ29sb3JTcGFjZSA9IEZBTFNFKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJR2V0SW1hZ2VJbmZvKEZYX0xQVk9JRCBjdHgsIEZYX0RXT1JEJiB3aWR0aCwgRlhfRFdPUkQmIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQmIGNvZGVzdHJlYW1fbkNvbXBzLCBGWF9EV09SRCYgb3V0cHV0X25Db21wcykgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCURlY29kZShGWF9MUFZPSUQgY3R4LCBGWF9MUEJZVEUgZGVzdF9kYXRhLCBpbnQgcGl0Y2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYlRyYW5zbGF0ZUNvbG9yLCBGWF9MUEJZVEUgb2Zmc2V0cykgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCURlc3Ryb3lEZWNvZGVyKEZYX0xQVk9JRCBjdHgpID0gMDsNCit9Ow0KK2NsYXNzIElDb2RlY19KYmlnMk1vZHVsZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCB+SUNvZGVjX0piaWcyTW9kdWxlKCkge30NCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlEZWNvZGUoRlhfRFdPUkQgd2lkdGgsIEZYX0RXT1JEIGhlaWdodCwgRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBnbG9iYWxfZGF0YSwgRlhfRFdPUkQgZ2xvYmFsX3NpemUsIEZYX0xQQllURSBkZXN0X2J1ZiwgRlhfRFdPUkQgZGVzdF9waXRjaCkgID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlEZWNvZGUoSUZYX0ZpbGVSZWFkKiBmaWxlX3B0ciwgRlhfRFdPUkQmIHdpZHRoLCBGWF9EV09SRCYgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCYgcGl0Y2gsIEZYX0xQQllURSYgZGVzdF9idWYpID0gMDsNCisgICAgdmlydHVhbCB2b2lkKgkJCQlDcmVhdGVKYmlnMkNvbnRleHQoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhDT0RFQ19TVEFUVVMJCVN0YXJ0RGVjb2RlKHZvaWQqIHBKYmlnMkNvbnRleHQsIEZYX0RXT1JEIHdpZHRoLCBGWF9EV09SRCBoZWlnaHQsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUENCWVRFIGdsb2JhbF9kYXRhLCBGWF9EV09SRCBnbG9iYWxfc2l6ZSwgRlhfTFBCWVRFIGRlc3RfYnVmLCBGWF9EV09SRCBkZXN0X3BpdGNoLCBJRlhfUGF1c2UqIHBQYXVzZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYQ09ERUNfU1RBVFVTCQlTdGFydERlY29kZSh2b2lkKiBwSmJpZzJDb250ZXh0LCBJRlhfRmlsZVJlYWQqIGZpbGVfcHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQmIHdpZHRoLCBGWF9EV09SRCYgaGVpZ2h0LCBGWF9EV09SRCYgcGl0Y2gsIEZYX0xQQllURSYgZGVzdF9idWYsIElGWF9QYXVzZSogcFBhdXNlKSA9IDA7DQorICAgIHZpcnR1YWwgRlhDT0RFQ19TVEFUVVMJCUNvbnRpbnVlRGVjb2RlKHZvaWQqIHBKYmlnMkNvbnRlbnQsIElGWF9QYXVzZSogcFBhdXNlKSA9IDA7DQorICAgIHZpcnR1YWwgdm9pZAkJCQlEZXN0cm95SmJpZzJDb250ZXh0KHZvaWQqIHBKYmlnMkNvbnRlbnQpID0gMDsNCit9Ow0KK2NsYXNzIElDb2RlY19KYmlnMkVuY29kZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgfklDb2RlY19KYmlnMkVuY29kZXIoKSB7fQ0KK307DQorY2xhc3MgSUNvZGVjX0ljY01vZHVsZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgdHlwZWRlZiBlbnVtIHsNCisgICAgICAgIEljY0NTX1Vua25vd24gPSAwLA0KKyAgICAgICAgSWNjQ1NfWFlaLA0KKyAgICAgICAgSWNjQ1NfTGFiLA0KKyAgICAgICAgSWNjQ1NfTHV2LA0KKyAgICAgICAgSWNjQ1NfWUNiQ3IsDQorICAgICAgICBJY2NDU19ZeHksDQorICAgICAgICBJY2NDU19Ic3YsDQorICAgICAgICBJY2NDU19IbHMsDQorICAgICAgICBJY2NDU19HcmF5LA0KKyAgICAgICAgSWNjQ1NfUmdiLA0KKyAgICAgICAgSWNjQ1NfQ215aywNCisgICAgICAgIEljY0NTX0NteQ0KKyAgICB9IEljY0NTOw0KKyAgICB0eXBlZGVmIHN0cnVjdCBfSWNjUGFyYW0gew0KKyAgICAgICAgRlhfRFdPUkQJVmVyc2lvbjsNCisgICAgICAgIEljY0NTCQlDb2xvclNwYWNlOw0KKyAgICAgICAgRlhfRFdPUkQJZHdQcm9maWxlVHlwZTsNCisgICAgICAgIEZYX0RXT1JECWR3Rm9ybWF0Ow0KKyAgICAgICAgRlhfTFBCWVRFCXBQcm9maWxlRGF0YTsNCisgICAgICAgIEZYX0RXT1JECWR3UHJvZmlsZVNpemU7DQorICAgICAgICBkb3VibGUJCUdhbW1hOw0KKyAgICB9IEljY1BhcmFtOw0KKw0KKyAgICB2aXJ0dWFsIH5JQ29kZWNfSWNjTW9kdWxlKCkge30NCisNCisgICAgdmlydHVhbCBJY2NDUwkJCUdldFByb2ZpbGVDUyhGWF9MUENCWVRFIHBQcm9maWxlRGF0YSwgdW5zaWduZWQgaW50IGR3UHJvZmlsZVNpemUpID0gMDsNCisNCisgICAgdmlydHVhbCBJY2NDUwkJCUdldFByb2ZpbGVDUyhJRlhfRmlsZVJlYWQqIHBGaWxlKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfTFBWT0lECUNyZWF0ZVRyYW5zZm9ybShJQ29kZWNfSWNjTW9kdWxlOjpJY2NQYXJhbSogcElucHV0UGFyYW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElDb2RlY19JY2NNb2R1bGU6OkljY1BhcmFtKiBwT3V0cHV0UGFyYW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElDb2RlY19JY2NNb2R1bGU6OkljY1BhcmFtKiBwUHJvb2ZQYXJhbSA9IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGR3SW50ZW50ID0gSWNjX0lOVEVOVF9QRVJDRVBUVUFMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBkd0ZsYWcgPSBJY2NfRkxBR1NfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZHdQcmZJbnRlbnQgPSBJY2NfSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZHdQcmZGbGFnID0gSWNjX0ZMQUdTX1NPRlRQUk9PRklORw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApID0gMDsNCisNCisNCisgICAgdmlydHVhbCBGWF9MUFZPSUQJQ3JlYXRlVHJhbnNmb3JtX3NSR0IoRlhfTFBDQllURSBwUHJvZmlsZURhdGEsIHVuc2lnbmVkIGludCBkd1Byb2ZpbGVTaXplLCBpbnQgbkNvbXBvbmVudHMsIGludCBpbnRlbnQgPSAwLA0KKyAgICAgICAgICAgIEZYX0RXT1JEIGR3U3JjRm9ybWF0ID0gSWNjX0ZPUk1BVF9ERUZBVUxUKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfTFBWT0lECUNyZWF0ZVRyYW5zZm9ybV9DTVlLKEZYX0xQQ0JZVEUgcFNyY1Byb2ZpbGVEYXRhLCB1bnNpZ25lZCBpbnQgZHdTcmNQcm9maWxlU2l6ZSwgaW50IG5TcmNDb21wb25lbnRzLA0KKyAgICAgICAgICAgIEZYX0xQQ0JZVEUgcERzdFByb2ZpbGVEYXRhLCB1bnNpZ25lZCBpbnQgZHdEc3RQcm9maWxlU2l6ZSwgaW50IGludGVudCA9IDAsDQorICAgICAgICAgICAgRlhfRFdPUkQgZHdTcmNGb3JtYXQgPSBJY2NfRk9STUFUX0RFRkFVTFQsDQorICAgICAgICAgICAgRlhfRFdPUkQgZHdEc3RGb3JtYXQgPSBJY2NfRk9STUFUX0RFRkFVTFQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJRGVzdHJveVRyYW5zZm9ybShGWF9MUFZPSUQgcFRyYW5zZm9ybSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlUcmFuc2xhdGUoRlhfTFBWT0lEIHBUcmFuc2Zvcm0sIEZYX0ZMT0FUKiBwU3JjVmFsdWVzLCBGWF9GTE9BVCogcERlc3RWYWx1ZXMpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQkJVHJhbnNsYXRlU2NhbmxpbmUoRlhfTFBWT0lEIHBUcmFuc2Zvcm0sIEZYX0xQQllURSBwRGVzdCwgRlhfTFBDQllURSBwU3JjLCBpbnQgcGl4ZWxzKSA9IDA7DQorfTsNCit2b2lkIEFkb2JlQ01ZS190b19zUkdCKEZYX0ZMT0FUIGMsIEZYX0ZMT0FUIG0sIEZYX0ZMT0FUIHksIEZYX0ZMT0FUIGssIEZYX0ZMT0FUJiBSLCBGWF9GTE9BVCYgRywgRlhfRkxPQVQmIEIpOw0KK3ZvaWQgQWRvYmVDTVlLX3RvX3NSR0IxKEZYX0JZVEUgYywgRlhfQllURSBtLCBGWF9CWVRFIHksIEZYX0JZVEUgaywgRlhfQllURSYgUiwgRlhfQllURSYgRywgRlhfQllURSYgQik7DQorRlhfQk9PTCBNRDVDb21wdXRlSUQoRlhfTFBDVk9JRCBidWYsIEZYX0RXT1JEIGR3U2l6ZSwgRlhfQllURSBJRFsxNl0pOw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjX2RlZi5oIGIvY29yZS9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWNfZGVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJiMTBiZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjX2RlZi5oCkBAIC0wLDAgKzEsNzEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX0NPREVDX0RFRl9IXw0KKyNkZWZpbmUgX0ZYX0NPREVDX0RFRl9IXw0KK2VudW0gRlhDT0RFQ19TVEFUVVMgew0KKyAgICBGWENPREVDX1NUQVRVU19FUlJPUiA9IC0xLA0KKyAgICBGWENPREVDX1NUQVRVU19GUkFNRV9SRUFEWSwNCisgICAgRlhDT0RFQ19TVEFUVVNfRlJBTUVfVE9CRUNPTlRJTlVFLA0KKyAgICBGWENPREVDX1NUQVRVU19ERUNPREVfUkVBRFksDQorICAgIEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUUsDQorICAgIEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0gsDQorICAgIEZYQ09ERUNfU1RBVFVTX0VSUl9NRU1PUlksDQorICAgIEZYQ09ERUNfU1RBVFVTX0VSUl9SRUFELA0KKyAgICBGWENPREVDX1NUQVRVU19FUlJfRkxVU0gsDQorICAgIEZYQ09ERUNfU1RBVFVTX0VSUl9GT1JNQVQsDQorICAgIEZYQ09ERUNfU1RBVFVTX0VSUl9QQVJBTVMNCit9Ow0KKyNkZWZpbmUgSlAyX1NQQUNFX0lOVkFMSUQJLTENCisjZGVmaW5lIEpQWF9TUEFDRV9JTlZBTElECS0xDQorI2RlZmluZSBKUDJfU1BBQ0VfYmlsZXZlbDEJMA0KKyNkZWZpbmUgSlAyX1NQQUNFX1lDYkNyMQkxDQorI2RlZmluZSBKUDJfU1BBQ0VfWUNiQ3IyCTMNCisjZGVmaW5lIEpQMl9TUEFDRV9ZQ2JDcjMJNA0KKyNkZWZpbmUgSlAyX1NQQUNFX1Bob3RvWUNDCTkNCisjZGVmaW5lIEpQMl9TUEFDRV9DTVkJCTExDQorI2RlZmluZSBKUDJfU1BBQ0VfQ01ZSwkJMTINCisjZGVmaW5lIEpQMl9TUEFDRV9ZQ0NLCQkxMw0KKyNkZWZpbmUgSlAyX1NQQUNFX0NJRUxhYgkxNA0KKyNkZWZpbmUgSlAyX1NQQUNFX2JpbGV2ZWwyCTE1DQorI2RlZmluZSBKUDJfU1BBQ0Vfc1JHQgkJMTYNCisjZGVmaW5lIEpQMl9TUEFDRV9zTFVNCQkxNw0KKyNkZWZpbmUgSlAyX1NQQUNFX3NZQ0MJCTE4DQorI2RlZmluZSBKUDJfU1BBQ0VfQ0lFSmFiCTE5DQorI2RlZmluZSBKUDJfU1BBQ0VfZXNSR0IJCTIwDQorI2RlZmluZSBKUDJfU1BBQ0VfUk9NTVJHQgkyMQ0KKyNkZWZpbmUgSlAyX1NQQUNFX1lQYlByNjAJMjINCisjZGVmaW5lIEpQMl9TUEFDRV9ZUGJQcjUwCTIzDQorI2RlZmluZSBKUDJfU1BBQ0VfZXNZQ0MJCTI0DQorI2RlZmluZSBKUDJfU1BBQ0VfaWNjTFVNCTEwMA0KKyNkZWZpbmUgSlAyX1NQQUNFX2ljY1JHQgkxMDENCisjZGVmaW5lIEljY19JTlRFTlRfUEVSQ0VQVFVBTAkJCQkwDQorI2RlZmluZSBJY2NfSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQwkxDQorI2RlZmluZSBJY2NfSU5URU5UX1NBVFVSQVRJT04JCQkJMg0KKyNkZWZpbmUgSWNjX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUMJMw0KKyNkZWZpbmUgSWNjX0ZPUk1BVF9ERUZBVUxUCQkJCQkwDQorI2RlZmluZSBJY2NfRk9STUFUX1NXQVAJCQkJCQkoMTw8MTApDQorI2RlZmluZSBJY2NfRkxBR1NfREVGQVVMVAkJCQkJMHgwMDAwDQorI2RlZmluZSBJY2NfRkxBR1NfQkxBQ0tQT0lOVENPTVBFTlNBVElPTgkweDIwMDANCisjZGVmaW5lIEljY19GTEFHU19OT1dISVRFT05XSElURUZJWFVQCQkweDAwMDQNCisjZGVmaW5lIEljY19GTEFHU19ISUdIUkVTUFJFQ0FMQwkJCTB4MDQwMA0KKyNkZWZpbmUgSWNjX0ZMQUdTX0xPV1JFU1BSRUNBTEMJCQkJMHgwODAwDQorI2RlZmluZSBJY2NfRkxBR1NfR0FNVVRDSEVDSwkJCQkweDEwMDANCisjZGVmaW5lIEljY19GTEFHU19TT0ZUUFJPT0ZJTkcJCQkJMHg0MDAwDQorI2RlZmluZSBJY2NfUEFSQU1UWVBFX05PTkUJCQkJCTANCisjZGVmaW5lIEljY19QQVJBTVRZUEVfQlVGRkVSCQkJCTENCisjZGVmaW5lIEljY19QQVJBTVRZUEVfUEFSQU0JCQkJCTINCisjZGVmaW5lIEVYSUZUQUdfVVNIT1JUX1JFU1VOSVQJCQkJMjk2DQorI2RlZmluZSBFWElGVEFHX0ZMT0FUX0RQSVgJCQkJCTI4Mg0KKyNkZWZpbmUgRVhJRlRBR19GTE9BVF9EUElZCQkJCQkyODMNCisjZGVmaW5lIEVYSUZUQUdfVVNIT1JUX09SSUVOVEFUSU9OCQkJMjc0DQorI2RlZmluZSBFWElGVEFHX1NUUklOR19NQU5VRkFDVFVSRVIJCQkyNzENCisjZGVmaW5lIEVYSUZUQUdfU1RSSU5HX01PRFVMRQkJCQkyNzINCisjZGVmaW5lIEVYSUZUQUdfU1RSSU5HX1NPRlRXQVJFCQkJCTMwNQ0KKyNkZWZpbmUgRVhJRlRBR19TVFJJTkdfSUFNR0VERVNDUklQVElPTgkJMjcwDQorI2RlZmluZSBFWElGVEFHX1NUUklOR19EQVRFVElNRQkJCQkzMDYNCisjZGVmaW5lIEVYSUZUQUdfU1RSSU5HX0NPUFlSSUdIVAkJCTMzNDMyDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWNfcHJvdmlkZXIuaCBiL2NvcmUvaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjX3Byb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVmNjFkOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjX3Byb3ZpZGVyLmgKQEAgLTAsMCArMSw1MyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhfQ09ERUNfUFJPVklERVJfSF8NCisjZGVmaW5lIF9GWF9DT0RFQ19QUk9WSURFUl9IXw0KK2NsYXNzIElGWF9KcGVnUHJvdmlkZXINCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCVJlbGVhc2UoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZCoJCUNyZWF0ZURlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbkNvbXBzLCBGWF9CT09MIENvbG9yVHJhbnNmb3JtKSA9IDA7DQorDQorDQorICAgIHZpcnR1YWwgdm9pZAkJRGVzdHJveURlY29kZXIodm9pZCogcERlY29kZXIpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQlEb3duU2NhbGUodm9pZCogcERlY29kZXIsIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlSZXdpbmQodm9pZCogcERlY29kZXIpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9MUEJZVEUJR2V0TmV4dExpbmUodm9pZCogcERlY29kZXIpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9EV09SRAlHZXRTcmNPZmZzZXQodm9pZCogcERlY29kZXIpID0gMDsNCisNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlMb2FkSW5mbyhGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQmIHdpZHRoLCBpbnQmIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG51bV9jb21wb25lbnRzLCBpbnQmIGJpdHNfcGVyX2NvbXBvbmVudHMsIEZYX0JPT0wmIGNvbG9yX3RyYW5zZm9ybSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUqIGljY19idWZfcHRyID0gTlVMTCwgRlhfRFdPUkQqIGljY19sZW5ndGggPSBOVUxMKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJRW5jb2RlKGNvbnN0IGNsYXNzIENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX1NUUlNJWkUmIGRlc3Rfc2l6ZSwgaW50IHF1YWxpdHkgPSA3NSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBpY2NfYnVmID0gTlVMTCwgRlhfRFdPUkQgaWNjX2xlbmd0aCA9IDApID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkKgkJU3RhcnQoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJRmluaXNoKHZvaWQqIHBDb250ZXh0KSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAkJSW5wdXQodm9pZCogcENvbnRleHQsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUpID0gMDsNCisNCisgICAgdmlydHVhbCBpbnQJCQlSZWFkSGVhZGVyKHZvaWQqIHBDb250ZXh0LCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdodCwgaW50KiBuQ29tcHMpID0gMDsNCisNCisNCisgICAgdmlydHVhbCBpbnQJCQlTdGFydFNjYW5saW5lKHZvaWQqIHBDb250ZXh0LCBpbnQgZG93bl9zY2FsZSkgPSAwOw0KKw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVJlYWRTY2FubGluZSh2b2lkKiBwQ29udGV4dCwgRlhfTFBCWVRFIGRlc3RfYnVmKSA9IDA7DQorDQorDQorICAgIHZpcnR1YWwgRlhfRFdPUkQJR2V0QXZhaWxJbnB1dCh2b2lkKiBwQ29udGV4dCwgRlhfTFBCWVRFKiBhdmFpbF9idWZfcHRyID0gTlVMTCkgPSAwOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X2FyYi5oIGIvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X2FyYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NTBmODEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfYXJiLmgKQEAgLTAsMCArMSwyMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhfQVJBQklDXworI2RlZmluZSBfRlhfQVJBQklDXworY2xhc3MgSUZYX0JpZGlDaGFyCit7CitwdWJsaWM6CisgICAgc3RhdGljIElGWF9CaWRpQ2hhcioJQ3JlYXRlKCk7CisgICAgdmlydHVhbCB2b2lkCQkJUmVsZWFzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQJCQlTZXRQb2xpY3koRlhfQk9PTCBiU2VwYXJhdGVOZXV0cmFsID0gVFJVRSkgPSAwOworICAgIHZpcnR1YWwgRlhfQk9PTAkJCUFwcGVuZENoYXIoRlhfV0NIQVIgd2NoKSA9IDA7CisgICAgdmlydHVhbCBGWF9CT09MCQkJRW5kQ2hhcigpID0gMDsKKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQlHZXRCaWRpSW5mbyhGWF9JTlQzMiAmaVN0YXJ0LCBGWF9JTlQzMiAmaUNvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkCQkJUmVzZXQoKSA9IDA7Cit9OworI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCBiL2NvcmUvaW5jbHVkZS9meGNydC9meF9iYXNpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YmMyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaApAQCAtMCwwICsxLDE2NDIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX0JBU0lDX0hfDQorI2RlZmluZSBfRlhfQkFTSUNfSF8NCisjaWZuZGVmIF9GWF9TWVNURU1fSF8NCisjaW5jbHVkZSAiZnhfc3lzdGVtLmgiDQorI2VuZGlmDQorI2lmbmRlZiBfRlhfTUVNT1JZX0hfDQorI2luY2x1ZGUgImZ4X21lbW9yeS5oIg0KKyNlbmRpZg0KKyNpZm5kZWYgX0ZYX1NUUklOR19IXw0KKyNpbmNsdWRlICJmeF9zdHJpbmcuaCINCisjZW5kaWYNCisjaWZuZGVmIF9GWF9TVFJFQU1fSF8NCisjaW5jbHVkZSAiZnhfc3RyZWFtLmgiDQorI2VuZGlmDQorY2xhc3MgQ0ZYX0JpbmFyeUJ1ZiA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX0JpbmFyeUJ1ZihJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorDQorICAgIENGWF9CaW5hcnlCdWYoRlhfU1RSU0laRSBzaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorDQorICAgIH5DRlhfQmluYXJ5QnVmKCk7DQorDQorICAgIHZvaWQJCQkJCUNsZWFyKCk7DQorDQorICAgIHZvaWQJCQkJCUVzdGltYXRlU2l6ZShGWF9TVFJTSVpFIHNpemUsIEZYX1NUUlNJWkUgYWxsb2Nfc3RlcCA9IDApOw0KKw0KKyAgICB2b2lkCQkJCQlBcHBlbmRCbG9jayhjb25zdCB2b2lkKiBwQnVmLCBGWF9TVFJTSVpFIHNpemUpOw0KKw0KKyAgICB2b2lkCQkJCQlBcHBlbmRGaWxsKEZYX0JZVEUgYnl0ZSwgRlhfU1RSU0laRSBjb3VudCk7DQorDQorICAgIHZvaWQJCQkJCUFwcGVuZFN0cmluZyhGWF9CU1RSIHN0cikNCisgICAgew0KKyAgICAgICAgQXBwZW5kQmxvY2soc3RyLkdldFB0cigpLCBzdHIuR2V0TGVuZ3RoKCkpOw0KKyAgICB9DQorDQorICAgIGlubGluZSB2b2lkCQkJCUFwcGVuZEJ5dGUoRlhfQllURSBieXRlKQ0KKyAgICB7DQorICAgICAgICBpZiAobV9BbGxvY1NpemUgPD0gbV9EYXRhU2l6ZSkgew0KKyAgICAgICAgICAgIEV4cGFuZEJ1ZigxKTsNCisgICAgICAgIH0NCisgICAgICAgIG1fcEJ1ZmZlclttX0RhdGFTaXplKytdID0gYnl0ZTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCQlJbnNlcnRCbG9jayhGWF9TVFJTSVpFIHBvcywgY29uc3Qgdm9pZCogcEJ1ZiwgRlhfU1RSU0laRSBzaXplKTsNCisNCisgICAgdm9pZAkJCQkJQXR0YWNoRGF0YSh2b2lkKiBwQnVmLCBGWF9TVFJTSVpFIHNpemUpOw0KKw0KKyAgICB2b2lkCQkJCQlDb3B5RGF0YShjb25zdCB2b2lkKiBwQnVmLCBGWF9TVFJTSVpFIHNpemUpOw0KKw0KKyAgICB2b2lkCQkJCQlUYWtlT3ZlcihDRlhfQmluYXJ5QnVmJiBvdGhlcik7DQorDQorICAgIHZvaWQJCQkJCURlbGV0ZShpbnQgc3RhcnRfaW5kZXgsIGludCBjb3VudCk7DQorDQorICAgIEZYX0xQQllURQkJCQlHZXRCdWZmZXIoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wQnVmZmVyOw0KKyAgICB9DQorDQorICAgIEZYX1NUUlNJWkUJCQkJR2V0U2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0RhdGFTaXplOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nQwkJCUdldEJ5dGVTdHJpbmcoKSBjb25zdDsNCisgICAgdm9pZAkJCQkJR2V0Qnl0ZVN0cmluZ0woQ0ZYX0J5dGVTdHJpbmdMICZzdHIpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJCQlEZXRhY2hCdWZmZXIoKTsNCisNCisgICAgSUZYX0FsbG9jYXRvcioJCQltX3BBbGxvY2F0b3I7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBGWF9TVFJTSVpFCQkJCW1fQWxsb2NTdGVwOw0KKw0KKyAgICBGWF9MUEJZVEUJCQkJbV9wQnVmZmVyOw0KKw0KKyAgICBGWF9TVFJTSVpFCQkJCW1fRGF0YVNpemU7DQorDQorICAgIEZYX1NUUlNJWkUJCQkJbV9BbGxvY1NpemU7DQorDQorICAgIHZvaWQJCQkJCUV4cGFuZEJ1ZihGWF9TVFJTSVpFIHNpemUpOw0KK307DQorY2xhc3MgQ0ZYX0J5dGVUZXh0QnVmIDogcHVibGljIENGWF9CaW5hcnlCdWYNCit7DQorcHVibGljOg0KKw0KKyAgICBDRlhfQnl0ZVRleHRCdWYoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpIDogQ0ZYX0JpbmFyeUJ1ZihwQWxsb2NhdG9yKSB7fQ0KKw0KKyAgICB2b2lkCQkJCQlvcGVyYXRvciA9IChGWF9CU1RSIHN0cik7DQorDQorICAgIHZvaWQJCQkJCUFwcGVuZENoYXIoaW50IGNoKQ0KKyAgICB7DQorICAgICAgICBBcHBlbmRCeXRlKChGWF9CWVRFKWNoKTsNCisgICAgfQ0KKw0KKyAgICBDRlhfQnl0ZVRleHRCdWYmCQlvcGVyYXRvciA8PCAoaW50IGkpOw0KKw0KKyAgICBDRlhfQnl0ZVRleHRCdWYmCQlvcGVyYXRvciA8PCAoRlhfRFdPUkQgaSk7DQorDQorICAgIENGWF9CeXRlVGV4dEJ1ZiYJCW9wZXJhdG9yIDw8IChkb3VibGUgZik7DQorDQorICAgIENGWF9CeXRlVGV4dEJ1ZiYJCW9wZXJhdG9yIDw8IChGWF9CU1RSIGxwc3opOw0KKw0KKyAgICBDRlhfQnl0ZVRleHRCdWYmCQlvcGVyYXRvciA8PCAoY29uc3QgQ0ZYX0J5dGVUZXh0QnVmJiBidWYpOw0KKw0KKyAgICBGWF9TVFJTSVpFCQkJCUdldExlbmd0aCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0RhdGFTaXplOw0KKyAgICB9DQorfTsNCitjbGFzcyBDRlhfV2lkZVRleHRCdWYgOiBwdWJsaWMgQ0ZYX0JpbmFyeUJ1Zg0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9XaWRlVGV4dEJ1ZihJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCkgOiBDRlhfQmluYXJ5QnVmKHBBbGxvY2F0b3IpIHt9DQorDQorICAgIHZvaWQJCQkJCW9wZXJhdG9yID0gKEZYX0xQQ1dTVFIgbHBzeik7DQorDQorICAgIHZvaWQJCQkJCW9wZXJhdG9yID0gKEZYX1dTVFIgc3RyKTsNCisNCisgICAgdm9pZAkJCQkJQXBwZW5kQ2hhcihGWF9XQ0hBUiB3Y2gpOw0KKw0KKyAgICBDRlhfV2lkZVRleHRCdWYmCQlvcGVyYXRvciA8PCAoaW50IGkpOw0KKw0KKyAgICBDRlhfV2lkZVRleHRCdWYmCQlvcGVyYXRvciA8PCAoZG91YmxlIGYpOw0KKw0KKyAgICBDRlhfV2lkZVRleHRCdWYmCQlvcGVyYXRvciA8PCAoRlhfTFBDV1NUUiBscHN6KTsNCisNCisgICAgQ0ZYX1dpZGVUZXh0QnVmJgkJb3BlcmF0b3IgPDwgKEZYX1dTVFIgc3RyKTsNCisgICAgQ0ZYX1dpZGVUZXh0QnVmJgkJb3BlcmF0b3IgPDwgKGNvbnN0IENGWF9XaWRlU3RyaW5nICZzdHIpOw0KKw0KKyAgICBDRlhfV2lkZVRleHRCdWYmCQlvcGVyYXRvciA8PCAoY29uc3QgQ0ZYX1dpZGVUZXh0QnVmJiBidWYpOw0KKw0KKyAgICBGWF9TVFJTSVpFCQkJCUdldExlbmd0aCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0RhdGFTaXplIC8gc2l6ZW9mKEZYX1dDSEFSKTsNCisgICAgfQ0KKw0KKyAgICBGWF9MUFdTVFIJCQkJR2V0QnVmZmVyKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChGWF9MUFdTVFIpbV9wQnVmZmVyOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCURlbGV0ZShpbnQgc3RhcnRfaW5kZXgsIGludCBjb3VudCkNCisgICAgew0KKyAgICAgICAgQ0ZYX0JpbmFyeUJ1Zjo6RGVsZXRlKHN0YXJ0X2luZGV4ICogc2l6ZW9mKEZYX1dDSEFSKSwgY291bnQgKiBzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgfQ0KKw0KKyAgICBDRlhfV2lkZVN0cmluZ0MJCQlHZXRXaWRlU3RyaW5nKCkgY29uc3Q7DQorICAgIHZvaWQJCQkJCUdldFdpZGVTdHJpbmdMKENGWF9XaWRlU3RyaW5nTCYgd2lkZVRleHQpIGNvbnN0Ow0KK307DQorY2xhc3MgQ0ZYX0FyY2hpdmVTYXZlciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX0FyY2hpdmVTYXZlcihJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCkgOiBtX1NhdmluZ0J1ZihwQWxsb2NhdG9yKSwgbV9wU3RyZWFtKE5VTEwpIHt9DQorDQorICAgIENGWF9BcmNoaXZlU2F2ZXImCQlvcGVyYXRvciA8PCAoRlhfQllURSBpKTsNCisNCisgICAgQ0ZYX0FyY2hpdmVTYXZlciYJCW9wZXJhdG9yIDw8IChpbnQgaSk7DQorDQorICAgIENGWF9BcmNoaXZlU2F2ZXImCQlvcGVyYXRvciA8PCAoRlhfRFdPUkQgaSk7DQorDQorICAgIENGWF9BcmNoaXZlU2F2ZXImCQlvcGVyYXRvciA8PCAoRlhfRkxPQVQgaSk7DQorDQorICAgIENGWF9BcmNoaXZlU2F2ZXImCQlvcGVyYXRvciA8PCAoZG91YmxlIGkpOw0KKw0KKyAgICBDRlhfQXJjaGl2ZVNhdmVyJgkJb3BlcmF0b3IgPDwgKEZYX0JTVFIgYnN0cik7DQorDQorICAgIENGWF9BcmNoaXZlU2F2ZXImCQlvcGVyYXRvciA8PCAoRlhfTFBDV1NUUiBic3RyKTsNCisNCisgICAgQ0ZYX0FyY2hpdmVTYXZlciYJCW9wZXJhdG9yIDw8IChjb25zdCBDRlhfV2lkZVN0cmluZyYgd3N0cik7DQorDQorICAgIHZvaWQJCQkJCVdyaXRlKGNvbnN0IHZvaWQqIHBEYXRhLCBGWF9TVFJTSVpFIGR3U2l6ZSk7DQorDQorICAgIEZYX0lOVFBUUgkJCQlHZXRMZW5ndGgoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9TYXZpbmdCdWYuR2V0U2l6ZSgpOw0KKyAgICB9DQorDQorICAgIEZYX0xQQ0JZVEUJCQkJR2V0QnVmZmVyKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fU2F2aW5nQnVmLkdldEJ1ZmZlcigpOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCVNldFN0cmVhbShJRlhfRmlsZVN0cmVhbSogcFN0cmVhbSkNCisgICAgew0KKyAgICAgICAgbV9wU3RyZWFtID0gcFN0cmVhbTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgQ0ZYX0JpbmFyeUJ1ZgkJCW1fU2F2aW5nQnVmOw0KKw0KKyAgICBJRlhfRmlsZVN0cmVhbSoJCQltX3BTdHJlYW07DQorfTsNCitjbGFzcyBDRlhfQXJjaGl2ZUxvYWRlciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX0FyY2hpdmVMb2FkZXIoRlhfTFBDQllURSBwRGF0YSwgRlhfRFdPUkQgZHdTaXplKTsNCisNCisgICAgQ0ZYX0FyY2hpdmVMb2FkZXImCQlvcGVyYXRvciA+PiAoRlhfQllURSYgaSk7DQorDQorICAgIENGWF9BcmNoaXZlTG9hZGVyJgkJb3BlcmF0b3IgPj4gKGludCYgaSk7DQorDQorICAgIENGWF9BcmNoaXZlTG9hZGVyJgkJb3BlcmF0b3IgPj4gKEZYX0RXT1JEJiBpKTsNCisNCisgICAgQ0ZYX0FyY2hpdmVMb2FkZXImCQlvcGVyYXRvciA+PiAoRlhfRkxPQVQmIGkpOw0KKw0KKyAgICBDRlhfQXJjaGl2ZUxvYWRlciYJCW9wZXJhdG9yID4+IChkb3VibGUmIGkpOw0KKw0KKyAgICBDRlhfQXJjaGl2ZUxvYWRlciYJCW9wZXJhdG9yID4+IChDRlhfQnl0ZVN0cmluZyYgYnN0cik7DQorDQorICAgIENGWF9BcmNoaXZlTG9hZGVyJgkJb3BlcmF0b3IgPj4gKENGWF9XaWRlU3RyaW5nJiB3c3RyKTsNCisNCisgICAgRlhfQk9PTAkJCQkJSXNFT0YoKTsNCisNCisgICAgRlhfQk9PTAkJCQkJUmVhZCh2b2lkKiBwQnVmLCBGWF9EV09SRCBkd1NpemUpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgRlhfRFdPUkQJCQkJbV9Mb2FkaW5nUG9zOw0KKw0KKyAgICBGWF9MUENCWVRFCQkJCW1fcExvYWRpbmdCdWY7DQorDQorICAgIEZYX0RXT1JECQkJCW1fTG9hZGluZ1NpemU7DQorfTsNCitjbGFzcyBJRlhfQnVmZmVyQXJjaGl2ZQ0KK3sNCitwdWJsaWM6DQorDQorICAgIElGWF9CdWZmZXJBcmNoaXZlKEZYX1NUUlNJWkUgc2l6ZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KKw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlDbGVhcigpOw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCQlGbHVzaCgpOw0KKw0KKw0KKyAgICBGWF9JTlQzMgkJCQlBcHBlbmRCbG9jayhjb25zdCB2b2lkKiBwQnVmLCBzaXplX3Qgc2l6ZSk7DQorDQorICAgIEZYX0lOVDMyCQkJCUFwcGVuZEJ5dGUoRlhfQllURSBieXRlKTsNCisNCisgICAgRlhfSU5UMzIJCQkJQXBwZW5kRFdvcmQoRlhfRFdPUkQgaSk7DQorDQorDQorICAgIEZYX0lOVDMyCQkJCUFwcGVuZFN0cmluZyhGWF9CU1RSIGxwc3opOw0KKw0KK3Byb3RlY3RlZDoNCisNCisgICAgdmlydHVhbAlGWF9CT09MCQkJRG9Xb3JrKGNvbnN0IHZvaWQqIHBCdWYsIHNpemVfdCBzaXplKSA9IDA7DQorDQorDQorICAgIElGWF9BbGxvY2F0b3IqCQkJbV9wQWxsb2NhdG9yOw0KKw0KKyAgICBGWF9TVFJTSVpFCQkJCW1fQnVmU2l6ZTsNCisNCisgICAgRlhfTFBCWVRFCQkJCW1fcEJ1ZmZlcjsNCisNCisgICAgRlhfU1RSU0laRQkJCQltX0xlbmd0aDsNCit9Ow0KK2NsYXNzIENGWF9GaWxlQnVmZmVyQXJjaGl2ZSA6IHB1YmxpYyBJRlhfQnVmZmVyQXJjaGl2ZSwgcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhfRmlsZUJ1ZmZlckFyY2hpdmUoRlhfU1RSU0laRSBzaXplID0gMzI3NjgsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCisgICAgfkNGWF9GaWxlQnVmZmVyQXJjaGl2ZSgpOw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlDbGVhcigpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlBdHRhY2hGaWxlKElGWF9TdHJlYW1Xcml0ZSAqcEZpbGUsIEZYX0JPT0wgYlRha2VvdmVyID0gRkFMU0UpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlBdHRhY2hGaWxlKEZYX0xQQ1dTVFIgZmlsZW5hbWUpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlBdHRhY2hGaWxlKEZYX0xQQ1NUUiBmaWxlbmFtZSk7DQorcHJpdmF0ZToNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJRG9Xb3JrKGNvbnN0IHZvaWQqIHBCdWYsIHNpemVfdCBzaXplKTsNCisNCisgICAgSUZYX1N0cmVhbVdyaXRlCQkJKm1fcEZpbGU7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYlRha2VvdmVyOw0KK307DQorc3RydWN0IENGWF9DaGFyTWFwIHsNCisNCisgICAgc3RhdGljIENGWF9DaGFyTWFwKgkJR2V0RGVmYXVsdE1hcHBlcihGWF9JTlQzMiBjb2RlcGFnZSA9IDApOw0KKw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkoKm1fR2V0V2lkZVN0cmluZykoQ0ZYX0NoYXJNYXAqIHBNYXAsIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBic3RyKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJKCptX0dldEJ5dGVTdHJpbmcpKENGWF9DaGFyTWFwKiBwTWFwLCBjb25zdCBDRlhfV2lkZVN0cmluZyYgd3N0cik7DQorDQorICAgIEZYX0lOVDMyCQkoKm1fR2V0Q29kZVBhZ2UpKCk7DQorfTsNCitjbGFzcyBDRlhfVVRGOERlY29kZXINCit7DQorcHVibGljOg0KKw0KKyAgICBDRlhfVVRGOERlY29kZXIoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpIDogbV9CdWZmZXIocEFsbG9jYXRvcikNCisgICAgew0KKyAgICAgICAgbV9QZW5kaW5nQnl0ZXMgPSAwOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQlDbGVhcigpOw0KKw0KKyAgICB2b2lkCQkJSW5wdXQoRlhfQllURSBieXRlKTsNCisNCisgICAgdm9pZAkJCUFwcGVuZENoYXIoRlhfRFdPUkQgY2gpOw0KKw0KKyAgICB2b2lkCQkJQ2xlYXJTdGF0dXMoKQ0KKyAgICB7DQorICAgICAgICBtX1BlbmRpbmdCeXRlcyA9IDA7DQorICAgIH0NCisNCisgICAgQ0ZYX1dpZGVTdHJpbmdDCUdldFJlc3VsdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0J1ZmZlci5HZXRXaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgdm9pZAkJCUdldFJlc3VsdChDRlhfV2lkZVN0cmluZ0wgJnJlc3VsdCkgY29uc3QNCisgICAgew0KKyAgICAgICAgbV9CdWZmZXIuR2V0V2lkZVN0cmluZ0wocmVzdWx0KTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgaW50CQkJCW1fUGVuZGluZ0J5dGVzOw0KKw0KKyAgICBGWF9EV09SRAkJbV9QZW5kaW5nQ2hhcjsNCisNCisgICAgQ0ZYX1dpZGVUZXh0QnVmCW1fQnVmZmVyOw0KK307DQorY2xhc3MgQ0ZYX1VURjhFbmNvZGVyDQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX1VURjhFbmNvZGVyKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKSA6IG1fQnVmZmVyKHBBbGxvY2F0b3IpDQorICAgIHsNCisgICAgICAgIG1fVVRGMTZGaXJzdCA9IDA7DQorICAgIH0NCisNCisgICAgdm9pZAkJCUlucHV0KEZYX1dDSEFSIHVuaWNvZGUpOw0KKw0KKyAgICB2b2lkCQkJQXBwZW5kU3RyKEZYX0JTVFIgc3RyKQ0KKyAgICB7DQorICAgICAgICBtX1VURjE2Rmlyc3QgPSAwOw0KKyAgICAgICAgbV9CdWZmZXIgPDwgc3RyOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nQwlHZXRSZXN1bHQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9CdWZmZXIuR2V0Qnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIHZvaWQJCQlHZXRSZXN1bHQoQ0ZYX0J5dGVTdHJpbmdMICZyZXN1bHQpIGNvbnN0DQorICAgIHsNCisgICAgICAgIG1fQnVmZmVyLkdldEJ5dGVTdHJpbmdMKHJlc3VsdCk7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorDQorICAgIENGWF9CeXRlVGV4dEJ1ZgltX0J1ZmZlcjsNCisNCisgICAgRlhfRFdPUkQJCW1fVVRGMTZGaXJzdDsNCit9Ow0KK0NGWF9CeXRlU3RyaW5nIEZYX1VybEVuY29kZShjb25zdCBDRlhfV2lkZVN0cmluZyYgd3NVcmwpOw0KK0NGWF9XaWRlU3RyaW5nIEZYX1VybERlY29kZShjb25zdCBDRlhfQnl0ZVN0cmluZyYgYnNVcmwpOw0KK0NGWF9CeXRlU3RyaW5nIEZYX0VuY29kZVVSSShjb25zdCBDRlhfV2lkZVN0cmluZyYgd3NVUkkpOw0KK0NGWF9XaWRlU3RyaW5nIEZYX0RlY29kZVVSSShjb25zdCBDRlhfQnl0ZVN0cmluZyYgYnNVUkkpOw0KK2NsYXNzIENGWF9CYXNpY0FycmF5IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBJRlhfQWxsb2NhdG9yKgltX3BBbGxvY2F0b3I7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDRlhfQmFzaWNBcnJheShpbnQgdW5pdF9zaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorDQorICAgIH5DRlhfQmFzaWNBcnJheSgpOw0KKw0KKyAgICBGWF9CT09MCQkJU2V0U2l6ZShpbnQgbk5ld1NpemUsIGludCBuR3Jvd0J5KTsNCisNCisgICAgRlhfQk9PTAkJCUFwcGVuZChjb25zdCBDRlhfQmFzaWNBcnJheSYgc3JjKTsNCisNCisgICAgRlhfQk9PTAkJCUNvcHkoY29uc3QgQ0ZYX0Jhc2ljQXJyYXkmIHNyYyk7DQorDQorICAgIEZYX0xQQllURQkJSW5zZXJ0U3BhY2VBdChpbnQgbkluZGV4LCBpbnQgbkNvdW50KTsNCisNCisgICAgRlhfQk9PTAkJCVJlbW92ZUF0KGludCBuSW5kZXgsIGludCBuQ291bnQpOw0KKw0KKyAgICBGWF9CT09MCQkJSW5zZXJ0QXQoaW50IG5TdGFydEluZGV4LCBjb25zdCBDRlhfQmFzaWNBcnJheSogcE5ld0FycmF5KTsNCisNCisgICAgY29uc3Qgdm9pZCoJCUdldERhdGFQdHIoaW50IGluZGV4KSBjb25zdDsNCitwcm90ZWN0ZWQ6DQorDQorICAgIEZYX0xQQllURQkJbV9wRGF0YTsNCisNCisgICAgaW50CQkJCW1fblNpemU7DQorDQorICAgIGludAkJCQltX25NYXhTaXplOw0KKw0KKyAgICBpbnQJCQkJbV9uR3Jvd0J5Ow0KKw0KKyAgICBpbnQJCQkJbV9uVW5pdFNpemU7DQorfTsNCit0ZW1wbGF0ZTxjbGFzcyBUWVBFPg0KK2NsYXNzIENGWF9BcnJheVRlbXBsYXRlIDogcHVibGljIENGWF9CYXNpY0FycmF5DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX0FycmF5VGVtcGxhdGUoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpIDogQ0ZYX0Jhc2ljQXJyYXkoc2l6ZW9mKFRZUEUpLCBwQWxsb2NhdG9yKSB7fQ0KKw0KKyAgICBpbnQJCQlHZXRTaXplKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fblNpemU7DQorICAgIH0NCisNCisgICAgaW50CQkJR2V0VXBwZXJCb3VuZCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25TaXplIC0gMTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQlTZXRTaXplKGludCBuTmV3U2l6ZSwgaW50IG5Hcm93QnkgPSAtMSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIENGWF9CYXNpY0FycmF5OjpTZXRTaXplKG5OZXdTaXplLCBuR3Jvd0J5KTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQlSZW1vdmVBbGwoKQ0KKyAgICB7DQorICAgICAgICBTZXRTaXplKDAsIC0xKTsNCisgICAgfQ0KKw0KKyAgICBjb25zdCBUWVBFCUdldEF0KGludCBuSW5kZXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmIChuSW5kZXggPCAwIHx8IG5JbmRleCA+PSBtX25TaXplKSB7DQorICAgICAgICAgICAgcmV0dXJuIChjb25zdCBUWVBFJikoKih2b2xhdGlsZSBjb25zdCBUWVBFKilOVUxMKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAoKGNvbnN0IFRZUEUqKW1fcERhdGEpW25JbmRleF07DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJU2V0QXQoaW50IG5JbmRleCwgVFlQRSBuZXdFbGVtZW50KQ0KKyAgICB7DQorICAgICAgICBpZiAobkluZGV4IDwgMCB8fCBuSW5kZXggPj0gbV9uU2l6ZSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgICgoVFlQRSopbV9wRGF0YSlbbkluZGV4XSA9IG5ld0VsZW1lbnQ7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKw0KKyAgICBUWVBFJgkJRWxlbWVudEF0KGludCBuSW5kZXgpDQorICAgIHsNCisgICAgICAgIGlmIChuSW5kZXggPCAwIHx8IG5JbmRleCA+PSBtX25TaXplKSB7DQorICAgICAgICAgICAgcmV0dXJuICooVFlQRSopTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAoKFRZUEUqKW1fcERhdGEpW25JbmRleF07DQorICAgIH0NCisNCisgICAgY29uc3QgVFlQRSoJR2V0RGF0YSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoY29uc3QgVFlQRSopbV9wRGF0YTsNCisgICAgfQ0KKw0KKyAgICBUWVBFKgkJR2V0RGF0YSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiAoVFlQRSopbV9wRGF0YTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQlTZXRBdEdyb3coaW50IG5JbmRleCwgVFlQRSBuZXdFbGVtZW50KQ0KKyAgICB7DQorICAgICAgICBpZiAobkluZGV4IDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChuSW5kZXggPj0gbV9uU2l6ZSkNCisgICAgICAgICAgICBpZiAoIVNldFNpemUobkluZGV4ICsgMSwgLTEpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAoKFRZUEUqKW1fcERhdGEpW25JbmRleF0gPSBuZXdFbGVtZW50Ow0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJQWRkKFRZUEUgbmV3RWxlbWVudCkNCisgICAgew0KKyAgICAgICAgaWYgKG1fblNpemUgPCBtX25NYXhTaXplKSB7DQorICAgICAgICAgICAgbV9uU2l6ZSArKzsNCisgICAgICAgIH0gZWxzZSBpZiAoIVNldFNpemUobV9uU2l6ZSArIDEsIC0xKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgICgoVFlQRSopbV9wRGF0YSlbbV9uU2l6ZSAtIDFdID0gbmV3RWxlbWVudDsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCUFwcGVuZChjb25zdCBDRlhfQXJyYXlUZW1wbGF0ZSYgc3JjKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gQ0ZYX0Jhc2ljQXJyYXk6OkFwcGVuZChzcmMpOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCUNvcHkoY29uc3QgQ0ZYX0FycmF5VGVtcGxhdGUmIHNyYykNCisgICAgew0KKyAgICAgICAgcmV0dXJuIENGWF9CYXNpY0FycmF5OjpDb3B5KHNyYyk7DQorICAgIH0NCisNCisgICAgVFlQRSoJCUdldERhdGFQdHIoaW50IGluZGV4KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKFRZUEUqKUNGWF9CYXNpY0FycmF5OjpHZXREYXRhUHRyKGluZGV4KTsNCisgICAgfQ0KKw0KKyAgICBUWVBFKgkJQWRkU3BhY2UoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKFRZUEUqKUNGWF9CYXNpY0FycmF5OjpJbnNlcnRTcGFjZUF0KG1fblNpemUsIDEpOw0KKyAgICB9DQorDQorICAgIFRZUEUqCQlJbnNlcnRTcGFjZUF0KGludCBuSW5kZXgsIGludCBuQ291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiAoVFlQRSopQ0ZYX0Jhc2ljQXJyYXk6Okluc2VydFNwYWNlQXQobkluZGV4LCBuQ291bnQpOw0KKyAgICB9DQorDQorICAgIGNvbnN0IFRZUEUJb3BlcmF0b3JbXShpbnQgbkluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAobkluZGV4IDwgMCB8fCBuSW5kZXggPj0gbV9uU2l6ZSkgew0KKyAgICAgICAgICAgICoodm9sYXRpbGUgY2hhciopMCA9ICdcMCc7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gKChjb25zdCBUWVBFKiltX3BEYXRhKVtuSW5kZXhdOw0KKyAgICB9DQorDQorICAgIFRZUEUmCQlvcGVyYXRvcltdKGludCBuSW5kZXgpDQorICAgIHsNCisgICAgICAgIGlmIChuSW5kZXggPCAwIHx8IG5JbmRleCA+PSBtX25TaXplKSB7DQorICAgICAgICAgICAgKih2b2xhdGlsZSBjaGFyKikwID0gJ1wwJzsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAoKFRZUEUqKW1fcERhdGEpW25JbmRleF07DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJSW5zZXJ0QXQoaW50IG5JbmRleCwgVFlQRSBuZXdFbGVtZW50LCBpbnQgbkNvdW50ID0gMSkNCisgICAgew0KKyAgICAgICAgaWYgKCFJbnNlcnRTcGFjZUF0KG5JbmRleCwgbkNvdW50KSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIHdoaWxlIChuQ291bnQtLSkgew0KKyAgICAgICAgICAgICgoVFlQRSopbV9wRGF0YSlbbkluZGV4KytdID0gbmV3RWxlbWVudDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCVJlbW92ZUF0KGludCBuSW5kZXgsIGludCBuQ291bnQgPSAxKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gQ0ZYX0Jhc2ljQXJyYXk6OlJlbW92ZUF0KG5JbmRleCwgbkNvdW50KTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQlJbnNlcnRBdChpbnQgblN0YXJ0SW5kZXgsIGNvbnN0IENGWF9CYXNpY0FycmF5KiBwTmV3QXJyYXkpDQorICAgIHsNCisgICAgICAgIHJldHVybiBDRlhfQmFzaWNBcnJheTo6SW5zZXJ0QXQoblN0YXJ0SW5kZXgsIHBOZXdBcnJheSk7DQorICAgIH0NCisNCisgICAgaW50CQkJRmluZChUWVBFIGRhdGEsIGludCBpU3RhcnQgPSAwKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoaVN0YXJ0IDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoOyBpU3RhcnQgPCAoaW50KW1fblNpemU7IGlTdGFydCArKykNCisgICAgICAgICAgICBpZiAoKChUWVBFKiltX3BEYXRhKVtpU3RhcnRdID09IGRhdGEpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGlTdGFydDsNCisgICAgICAgICAgICB9DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCit9Ow0KK3R5cGVkZWYgQ0ZYX0FycmF5VGVtcGxhdGU8RlhfQllURT4JCUNGWF9CeXRlQXJyYXk7DQordHlwZWRlZiBDRlhfQXJyYXlUZW1wbGF0ZTxGWF9XT1JEPgkJQ0ZYX1dvcmRBcnJheTsNCit0eXBlZGVmIENGWF9BcnJheVRlbXBsYXRlPEZYX0RXT1JEPgkJQ0ZYX0RXb3JkQXJyYXk7DQordHlwZWRlZiBDRlhfQXJyYXlUZW1wbGF0ZTx2b2lkKj4JCUNGWF9QdHJBcnJheTsNCit0eXBlZGVmIENGWF9BcnJheVRlbXBsYXRlPEZYX0ZJTEVTSVpFPglDRlhfRmlsZVNpemVBcnJheTsNCit0eXBlZGVmIENGWF9BcnJheVRlbXBsYXRlPEZYX0ZMT0FUPgkJQ0ZYX0Zsb2F0QXJyYXk7DQordHlwZWRlZiBDRlhfQXJyYXlUZW1wbGF0ZTxGWF9JTlQzMj4JCUNGWF9JbnQzMkFycmF5Ow0KK3RlbXBsYXRlIDxjbGFzcyBPYmplY3RDbGFzcz4NCitjbGFzcyBDRlhfT2JqZWN0QXJyYXkgOiBwdWJsaWMgQ0ZYX0Jhc2ljQXJyYXkNCit7DQorcHVibGljOg0KKw0KKyAgICBDRlhfT2JqZWN0QXJyYXkoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpIDogQ0ZYX0Jhc2ljQXJyYXkoc2l6ZW9mKE9iamVjdENsYXNzKSwgcEFsbG9jYXRvcikge30NCisNCisgICAgfkNGWF9PYmplY3RBcnJheSgpDQorICAgIHsNCisgICAgICAgIFJlbW92ZUFsbCgpOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQlBZGQoY29uc3QgT2JqZWN0Q2xhc3MmIGRhdGEpDQorICAgIHsNCisgICAgICAgIG5ldyAoKHZvaWQqKUluc2VydFNwYWNlQXQobV9uU2l6ZSwgMSkpIE9iamVjdENsYXNzKGRhdGEpOw0KKyAgICB9DQorDQorICAgIE9iamVjdENsYXNzJglBZGQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKihPYmplY3RDbGFzcyopIG5ldyAoKHZvaWQqKUluc2VydFNwYWNlQXQobV9uU2l6ZSwgMSkpIE9iamVjdENsYXNzKCk7DQorICAgIH0NCisNCisgICAgdm9pZCoJCQlBZGRTcGFjZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBJbnNlcnRTcGFjZUF0KG1fblNpemUsIDEpOw0KKyAgICB9DQorDQorICAgIEZYX0lOVDMyCQlBcHBlbmQoY29uc3QgQ0ZYX09iamVjdEFycmF5JiBzcmMsIEZYX0lOVDMyIG5TdGFydCA9IDAsIEZYX0lOVDMyIG5Db3VudCA9IC0xKQ0KKyAgICB7DQorICAgICAgICBpZiAobkNvdW50ID09IDApIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0lOVDMyIG5TaXplID0gc3JjLkdldFNpemUoKTsNCisgICAgICAgIGlmICghblNpemUpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX2Fzc2VydChuU3RhcnQgPiAtMSAmJiBuU3RhcnQgPCBuU2l6ZSk7DQorICAgICAgICBpZiAobkNvdW50IDwgMCkgew0KKyAgICAgICAgICAgIG5Db3VudCA9IG5TaXplOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG5TdGFydCArIG5Db3VudCA+IG5TaXplKSB7DQorICAgICAgICAgICAgbkNvdW50ID0gblNpemUgLSBuU3RhcnQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAobkNvdW50IDwgMSkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgblNpemUgPSBtX25TaXplOw0KKyAgICAgICAgSW5zZXJ0U3BhY2VBdChtX25TaXplLCBuQ291bnQpOw0KKyAgICAgICAgT2JqZWN0Q2xhc3MqIHBTdGFydE9iaiA9IChPYmplY3RDbGFzcyopR2V0RGF0YVB0cihuU2l6ZSk7DQorICAgICAgICBuU2l6ZSA9IG5TdGFydCArIG5Db3VudDsNCisgICAgICAgIGZvciAoRlhfSU5UMzIgaSA9IG5TdGFydDsgaSA8IG5TaXplOyBpICsrLCBwU3RhcnRPYmorKykgew0KKyAgICAgICAgICAgIG5ldyAoKHZvaWQqKXBTdGFydE9iaikgT2JqZWN0Q2xhc3Moc3JjW2ldKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBuQ291bnQ7DQorICAgIH0NCisNCisgICAgRlhfSU5UMzIJCUNvcHkoY29uc3QgQ0ZYX09iamVjdEFycmF5JiBzcmMsIEZYX0lOVDMyIG5TdGFydCA9IDAsIEZYX0lOVDMyIG5Db3VudCA9IC0xKQ0KKyAgICB7DQorICAgICAgICBpZiAobkNvdW50ID09IDApIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0lOVDMyIG5TaXplID0gc3JjLkdldFNpemUoKTsNCisgICAgICAgIGlmICghblNpemUpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX2Fzc2VydChuU3RhcnQgPiAtMSAmJiBuU3RhcnQgPCBuU2l6ZSk7DQorICAgICAgICBpZiAobkNvdW50IDwgMCkgew0KKyAgICAgICAgICAgIG5Db3VudCA9IG5TaXplOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG5TdGFydCArIG5Db3VudCA+IG5TaXplKSB7DQorICAgICAgICAgICAgbkNvdW50ID0gblNpemUgLSBuU3RhcnQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAobkNvdW50IDwgMSkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgUmVtb3ZlQWxsKCk7DQorICAgICAgICBTZXRTaXplKG5Db3VudCwgLTEpOw0KKyAgICAgICAgT2JqZWN0Q2xhc3MqIHBTdGFydE9iaiA9IChPYmplY3RDbGFzcyopbV9wRGF0YTsNCisgICAgICAgIG5TaXplID0gblN0YXJ0ICsgbkNvdW50Ow0KKyAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gblN0YXJ0OyBpIDwgblNpemU7IGkgKyssIHBTdGFydE9iaisrKSB7DQorICAgICAgICAgICAgbmV3ICgodm9pZCopcFN0YXJ0T2JqKSBPYmplY3RDbGFzcyhzcmNbaV0pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIG5Db3VudDsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQkJR2V0U2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25TaXplOw0KKyAgICB9DQorDQorICAgIE9iamVjdENsYXNzJglvcGVyYXRvcltdIChpbnQgaW5kZXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEZYU1lTX2Fzc2VydChpbmRleCA8IG1fblNpemUpOw0KKyAgICAgICAgcmV0dXJuICooT2JqZWN0Q2xhc3MqKUNGWF9CYXNpY0FycmF5OjpHZXREYXRhUHRyKGluZGV4KTsNCisgICAgfQ0KKw0KKyAgICBPYmplY3RDbGFzcyoJR2V0RGF0YVB0cihpbnQgaW5kZXgpDQorICAgIHsNCisgICAgICAgIHJldHVybiAoT2JqZWN0Q2xhc3MqKUNGWF9CYXNpY0FycmF5OjpHZXREYXRhUHRyKGluZGV4KTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJUmVtb3ZlQXQoaW50IGluZGV4KQ0KKyAgICB7DQorICAgICAgICBGWFNZU19hc3NlcnQoaW5kZXggPCBtX25TaXplKTsNCisgICAgICAgICgoT2JqZWN0Q2xhc3MqKUdldERhdGFQdHIoaW5kZXgpKS0+fk9iamVjdENsYXNzKCk7DQorICAgICAgICBDRlhfQmFzaWNBcnJheTo6UmVtb3ZlQXQoaW5kZXgsIDEpOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQlSZW1vdmVBbGwoKQ0KKyAgICB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fblNpemU7IGkgKyspIHsNCisgICAgICAgICAgICAoKE9iamVjdENsYXNzKilHZXREYXRhUHRyKGkpKS0+fk9iamVjdENsYXNzKCk7DQorICAgICAgICB9DQorICAgICAgICBDRlhfQmFzaWNBcnJheTo6U2V0U2l6ZSgwLCAtMSk7DQorICAgIH0NCit9Ow0KK3R5cGVkZWYgQ0ZYX09iamVjdEFycmF5PENGWF9CeXRlU3RyaW5nPiBDRlhfQnl0ZVN0cmluZ0FycmF5Ow0KK3R5cGVkZWYgQ0ZYX09iamVjdEFycmF5PENGWF9XaWRlU3RyaW5nPiBDRlhfV2lkZVN0cmluZ0FycmF5Ow0KK2NsYXNzIENGWF9CYXNlU2VnbWVudGVkQXJyYXkgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9CYXNlU2VnbWVudGVkQXJyYXkoaW50IHVuaXRfc2l6ZSA9IDEsIGludCBzZWdtZW50X3VuaXRzID0gNTEyLCBpbnQgaW5kZXhfc2l6ZSA9IDgsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCisNCisgICAgfkNGWF9CYXNlU2VnbWVudGVkQXJyYXkoKTsNCisNCisgICAgdm9pZAlTZXRVbml0U2l6ZShpbnQgdW5pdF9zaXplLCBpbnQgc2VnbWVudF91bml0cywgaW50IGluZGV4X3NpemUgPSA4KTsNCisNCisgICAgdm9pZCoJQWRkKCk7DQorDQorICAgIHZvaWQqCUdldEF0KGludCBpbmRleCkgY29uc3Q7DQorDQorICAgIHZvaWQJUmVtb3ZlQWxsKCk7DQorDQorICAgIHZvaWQJRGVsZXRlKGludCBpbmRleCwgaW50IGNvdW50ID0gMSk7DQorDQorICAgIGludAkJR2V0U2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0RhdGFTaXplOw0KKyAgICB9DQorDQorICAgIGludAkJR2V0U2VnbWVudFNpemUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9TZWdtZW50U2l6ZTsNCisgICAgfQ0KKw0KKyAgICBpbnQJCUdldFVuaXRTaXplKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fVW5pdFNpemU7DQorICAgIH0NCisNCisgICAgdm9pZCoJSXRlcmF0ZShGWF9CT09MICgqY2FsbGJhY2spKHZvaWQqIHBhcmFtLCB2b2lkKiBwRGF0YSksIHZvaWQqIHBhcmFtKSBjb25zdDsNCisNCisgICAgSUZYX0FsbG9jYXRvcioJbV9wQWxsb2NhdG9yOw0KK3ByaXZhdGU6DQorDQorICAgIGludAkJCQltX1VuaXRTaXplOw0KKw0KKyAgICBzaG9ydAkJCW1fU2VnbWVudFNpemU7DQorDQorICAgIEZYX0JZVEUJCQltX0luZGV4U2l6ZTsNCisNCisgICAgRlhfQllURQkJCW1fSW5kZXhEZXB0aDsNCisNCisgICAgaW50CQkJCW1fRGF0YVNpemU7DQorDQorICAgIHZvaWQqCQkJbV9wSW5kZXg7DQorICAgIHZvaWQqKglHZXRJbmRleChpbnQgc2VnX2luZGV4KSBjb25zdDsNCisgICAgdm9pZCoJSXRlcmF0ZUluZGV4KGludCBsZXZlbCwgaW50JiBzdGFydCwgdm9pZCoqIHBJbmRleCwgRlhfQk9PTCAoKmNhbGxiYWNrKSh2b2lkKiBwYXJhbSwgdm9pZCogcERhdGEpLCB2b2lkKiBwYXJhbSkgY29uc3Q7DQorICAgIHZvaWQqCUl0ZXJhdGVTZWdtZW50KEZYX0xQQ0JZVEUgcFNlZ21lbnQsIGludCBjb3VudCwgRlhfQk9PTCAoKmNhbGxiYWNrKSh2b2lkKiBwYXJhbSwgdm9pZCogcERhdGEpLCB2b2lkKiBwYXJhbSkgY29uc3Q7DQorfTsNCit0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudFR5cGU+DQorY2xhc3MgQ0ZYX1NlZ21lbnRlZEFycmF5IDogcHVibGljIENGWF9CYXNlU2VnbWVudGVkQXJyYXkNCit7DQorcHVibGljOg0KKw0KKyAgICBDRlhfU2VnbWVudGVkQXJyYXkoaW50IHNlZ21lbnRfdW5pdHMsIGludCBpbmRleF9zaXplID0gOCwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpDQorICAgICAgICA6IENGWF9CYXNlU2VnbWVudGVkQXJyYXkoc2l6ZW9mKEVsZW1lbnRUeXBlKSwgc2VnbWVudF91bml0cywgaW5kZXhfc2l6ZSwgcEFsbG9jYXRvcikNCisgICAge30NCisNCisgICAgdm9pZAlBZGQoRWxlbWVudFR5cGUgZGF0YSkNCisgICAgew0KKyAgICAgICAgKihFbGVtZW50VHlwZSopQ0ZYX0Jhc2VTZWdtZW50ZWRBcnJheTo6QWRkKCkgPSBkYXRhOw0KKyAgICB9DQorDQorICAgIEVsZW1lbnRUeXBlJiBvcGVyYXRvciBbXSAoaW50IGluZGV4KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKihFbGVtZW50VHlwZSopQ0ZYX0Jhc2VTZWdtZW50ZWRBcnJheTo6R2V0QXQoaW5kZXgpOw0KKyAgICB9DQorfTsNCit0ZW1wbGF0ZSA8Y2xhc3MgRGF0YVR5cGUsIGludCBGaXhlZFNpemU+DQorY2xhc3MgQ0ZYX0ZpeGVkQnVmR3JvdyA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ0ZYX0ZpeGVkQnVmR3JvdyhJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCkNCisgICAgICAgIDogbV9wQWxsb2NhdG9yKHBBbGxvY2F0b3IpDQorICAgICAgICAsIG1fcERhdGEoTlVMTCkNCisgICAge30NCisgICAgQ0ZYX0ZpeGVkQnVmR3JvdyhpbnQgZGF0YV9zaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCkNCisgICAgICAgIDogbV9wQWxsb2NhdG9yKHBBbGxvY2F0b3IpDQorICAgICAgICAsIG1fcERhdGEoTlVMTCkNCisgICAgew0KKyAgICAgICAgaWYgKGRhdGFfc2l6ZSA+IEZpeGVkU2l6ZSkgew0KKyAgICAgICAgICAgIG1fcERhdGEgPSBGWF9BbGxvY2F0b3JfQWxsb2MobV9wQWxsb2NhdG9yLCBEYXRhVHlwZSwgZGF0YV9zaXplKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtc2V0MzIobV9EYXRhLCAwLCBzaXplb2YoRGF0YVR5cGUpKkZpeGVkU2l6ZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgdm9pZCBTZXREYXRhU2l6ZShpbnQgZGF0YV9zaXplKQ0KKyAgICB7DQorICAgICAgICBpZiAobV9wRGF0YSkgew0KKyAgICAgICAgICAgIEZYX0FsbG9jYXRvcl9GcmVlKG1fcEFsbG9jYXRvciwgbV9wRGF0YSk7DQorICAgICAgICB9DQorICAgICAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgICAgIGlmIChkYXRhX3NpemUgPiBGaXhlZFNpemUpIHsNCisgICAgICAgICAgICBtX3BEYXRhID0gRlhfQWxsb2NhdG9yX0FsbG9jKG1fcEFsbG9jYXRvciwgRGF0YVR5cGUsIGRhdGFfc2l6ZSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEZYU1lTX21lbXNldDMyKG1fRGF0YSwgMCwgc2l6ZW9mKERhdGFUeXBlKSpGaXhlZFNpemUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIH5DRlhfRml4ZWRCdWZHcm93KCkNCisgICAgew0KKyAgICAgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShtX3BBbGxvY2F0b3IsIG1fcERhdGEpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG9wZXJhdG9yIERhdGFUeXBlKigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEYXRhID8gbV9wRGF0YSA6IG1fRGF0YTsNCisgICAgfQ0KK3ByaXZhdGU6DQorICAgIElGWF9BbGxvY2F0b3IqCW1fcEFsbG9jYXRvcjsNCisgICAgRGF0YVR5cGUJCW1fRGF0YVtGaXhlZFNpemVdOw0KKyAgICBEYXRhVHlwZSoJCW1fcERhdGE7DQorfTsNCit0ZW1wbGF0ZSA8Y2xhc3MgRGF0YVR5cGU+DQorY2xhc3MgQ0ZYX1RlbXBCdWYNCit7DQorcHVibGljOg0KKyAgICBDRlhfVGVtcEJ1ZihpbnQgc2l6ZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpIDogbV9wQWxsb2NhdG9yKHBBbGxvY2F0b3IpDQorICAgIHsNCisgICAgICAgIG1fcERhdGEgPSBGWF9BbGxvY2F0b3JfQWxsb2MobV9wQWxsb2NhdG9yLCBEYXRhVHlwZSwgc2l6ZSk7DQorICAgIH0NCisgICAgfkNGWF9UZW1wQnVmKCkNCisgICAgew0KKyAgICAgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShtX3BBbGxvY2F0b3IsIG1fcERhdGEpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIERhdGFUeXBlJglvcGVyYXRvcltdKGludCBpKQ0KKyAgICB7DQorICAgICAgICBGWFNZU19hc3NlcnQobV9wRGF0YSAhPSBOVUxMKTsNCisgICAgICAgIHJldHVybiBtX3BEYXRhW2ldOw0KKyAgICB9DQorICAgIG9wZXJhdG9yIERhdGFUeXBlKigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEYXRhOw0KKyAgICB9DQorcHJpdmF0ZToNCisgICAgSUZYX0FsbG9jYXRvcioJbV9wQWxsb2NhdG9yOw0KKyAgICBEYXRhVHlwZSoJCW1fcERhdGE7DQorfTsNCitjbGFzcyBDRlhfTWFwUHRyVG9QdHIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwcm90ZWN0ZWQ6DQorDQorICAgIHN0cnVjdCBDQXNzb2Mgew0KKw0KKyAgICAgICAgQ0Fzc29jKiBwTmV4dDsNCisNCisgICAgICAgIHZvaWQqIGtleTsNCisNCisgICAgICAgIHZvaWQqIHZhbHVlOw0KKyAgICB9Ow0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX01hcFB0clRvUHRyKGludCBuQmxvY2tTaXplID0gMTAsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCisNCisgICAgfkNGWF9NYXBQdHJUb1B0cigpOw0KKw0KKyAgICBpbnQgR2V0Q291bnQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uQ291bnQ7DQorICAgIH0NCisNCisgICAgRlhfQk9PTCBJc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fbkNvdW50ID09IDA7DQorICAgIH0NCisNCisgICAgRlhfQk9PTCBMb29rdXAodm9pZCoga2V5LCB2b2lkKiYgclZhbHVlKSBjb25zdDsNCisNCisgICAgdm9pZCogR2V0VmFsdWVBdCh2b2lkKiBrZXkpIGNvbnN0Ow0KKw0KKyAgICB2b2lkKiYgb3BlcmF0b3JbXSh2b2lkKiBrZXkpOw0KKw0KKyAgICB2b2lkIFNldEF0KHZvaWQqIGtleSwgdm9pZCogbmV3VmFsdWUpDQorICAgIHsNCisgICAgICAgICgqdGhpcylba2V5XSA9IG5ld1ZhbHVlOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wgUmVtb3ZlS2V5KHZvaWQqIGtleSk7DQorDQorICAgIHZvaWQgUmVtb3ZlQWxsKCk7DQorDQorICAgIEZYX1BPU0lUSU9OIEdldFN0YXJ0UG9zaXRpb24oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKG1fbkNvdW50ID09IDApID8gTlVMTCA6IChGWF9QT1NJVElPTikgLSAxOw0KKyAgICB9DQorDQorICAgIHZvaWQgR2V0TmV4dEFzc29jKEZYX1BPU0lUSU9OJiByTmV4dFBvc2l0aW9uLCB2b2lkKiYgcktleSwgdm9pZComIHJWYWx1ZSkgY29uc3Q7DQorDQorICAgIEZYX0RXT1JEIEdldEhhc2hUYWJsZVNpemUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uSGFzaFRhYmxlU2l6ZTsNCisgICAgfQ0KKw0KKyAgICB2b2lkIEluaXRIYXNoVGFibGUoRlhfRFdPUkQgaGFzaFNpemUsIEZYX0JPT0wgYkFsbG9jTm93ID0gVFJVRSk7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBJRlhfQWxsb2NhdG9yKgltX3BBbGxvY2F0b3I7DQorDQorICAgIENBc3NvYyoqIG1fcEhhc2hUYWJsZTsNCisNCisgICAgRlhfRFdPUkQgbV9uSGFzaFRhYmxlU2l6ZTsNCisNCisgICAgaW50IG1fbkNvdW50Ow0KKw0KKyAgICBDQXNzb2MqIG1fcEZyZWVMaXN0Ow0KKw0KKyAgICBzdHJ1Y3QgQ0ZYX1BsZXgqIG1fcEJsb2NrczsNCisNCisgICAgaW50IG1fbkJsb2NrU2l6ZTsNCisNCisgICAgRlhfRFdPUkQgSGFzaEtleSh2b2lkKiBrZXkpIGNvbnN0Ow0KKw0KKyAgICBDQXNzb2MqIE5ld0Fzc29jKCk7DQorDQorICAgIHZvaWQgRnJlZUFzc29jKENBc3NvYyogcEFzc29jKTsNCisNCisgICAgQ0Fzc29jKiBHZXRBc3NvY0F0KHZvaWQqIGtleSwgRlhfRFdPUkQmIGhhc2gpIGNvbnN0Ow0KK307DQordGVtcGxhdGUgPGNsYXNzIEtleVR5cGUsIGNsYXNzIFZhbHVlVHlwZT4NCitjbGFzcyBDRlhfTWFwUHRyVGVtcGxhdGUgOiBwdWJsaWMgQ0ZYX01hcFB0clRvUHRyDQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX01hcFB0clRlbXBsYXRlKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKSA6IENGWF9NYXBQdHJUb1B0cigxMCwgcEFsbG9jYXRvcikge30NCisNCisgICAgRlhfQk9PTAlMb29rdXAoS2V5VHlwZSBrZXksIFZhbHVlVHlwZSYgclZhbHVlKSBjb25zdA0KKyAgICB7DQorICAgICAgICBGWF9MUFZPSUQgcFZhbHVlID0gTlVMTDsNCisgICAgICAgIGlmICghQ0ZYX01hcFB0clRvUHRyOjpMb29rdXAoKHZvaWQqKShGWF9VSU5UUFRSKWtleSwgcFZhbHVlKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIHJWYWx1ZSA9IChWYWx1ZVR5cGUpKEZYX1VJTlRQVFIpcFZhbHVlOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisNCisgICAgVmFsdWVUeXBlJiBvcGVyYXRvcltdKEtleVR5cGUga2V5KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKFZhbHVlVHlwZSYpQ0ZYX01hcFB0clRvUHRyOjpvcGVyYXRvciBbXSgodm9pZCopKEZYX1VJTlRQVFIpa2V5KTsNCisgICAgfQ0KKw0KKyAgICB2b2lkIFNldEF0KEtleVR5cGUga2V5LCBWYWx1ZVR5cGUgbmV3VmFsdWUpDQorICAgIHsNCisgICAgICAgIENGWF9NYXBQdHJUb1B0cjo6U2V0QXQoKHZvaWQqKShGWF9VSU5UUFRSKWtleSwgKHZvaWQqKShGWF9VSU5UUFRSKW5ld1ZhbHVlKTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCVJlbW92ZUtleShLZXlUeXBlIGtleSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIENGWF9NYXBQdHJUb1B0cjo6UmVtb3ZlS2V5KCh2b2lkKikoRlhfVUlOVFBUUilrZXkpOw0KKyAgICB9DQorDQorICAgIHZvaWQgR2V0TmV4dEFzc29jKEZYX1BPU0lUSU9OJiByTmV4dFBvc2l0aW9uLCBLZXlUeXBlJiByS2V5LCBWYWx1ZVR5cGUmIHJWYWx1ZSkgY29uc3QNCisgICAgew0KKyAgICAgICAgdm9pZCogcEtleSA9IE5VTEw7DQorICAgICAgICB2b2lkKiBwVmFsdWUgPSBOVUxMOw0KKyAgICAgICAgQ0ZYX01hcFB0clRvUHRyOjpHZXROZXh0QXNzb2Mock5leHRQb3NpdGlvbiwgcEtleSwgcFZhbHVlKTsNCisgICAgICAgIHJLZXkgPSAoS2V5VHlwZSkoRlhfVUlOVFBUUilwS2V5Ow0KKyAgICAgICAgclZhbHVlID0gKFZhbHVlVHlwZSkoRlhfVUlOVFBUUilwVmFsdWU7DQorICAgIH0NCit9Ow0KK2NsYXNzIENGWF9DTWFwRFdvcmRUb0RXb3JkIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDRlhfQ01hcERXb3JkVG9EV29yZChJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCkgOiBtX0J1ZmZlcihwQWxsb2NhdG9yKSB7fQ0KKw0KKyAgICBGWF9CT09MCQkJTG9va3VwKEZYX0RXT1JEIGtleSwgRlhfRFdPUkQmIHZhbHVlKSBjb25zdDsNCisNCisgICAgdm9pZAkJCVNldEF0KEZYX0RXT1JEIGtleSwgRlhfRFdPUkQgdmFsdWUpOw0KKw0KKyAgICB2b2lkCQkJRXN0aW1hdGVTaXplKEZYX0RXT1JEIHNpemUsIEZYX0RXT1JEIGdyb3dfYnkpOw0KKw0KKyAgICBGWF9QT1NJVElPTgkJR2V0U3RhcnRQb3NpdGlvbigpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJR2V0TmV4dEFzc29jKEZYX1BPU0lUSU9OJiBwb3MsIEZYX0RXT1JEJiBrZXksIEZYX0RXT1JEJiB2YWx1ZSkgY29uc3Q7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDRlhfQmluYXJ5QnVmCW1fQnVmZmVyOw0KK307DQorY2xhc3MgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0ciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3Byb3RlY3RlZDoNCisNCisgICAgc3RydWN0IENBc3NvYyB7DQorDQorICAgICAgICBDQXNzb2MqIHBOZXh0Ow0KKw0KKyAgICAgICAgRlhfRFdPUkQgbkhhc2hWYWx1ZTsNCisNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGtleTsNCisNCisgICAgICAgIHZvaWQqIHZhbHVlOw0KKyAgICB9Ow0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cihpbnQgbkJsb2NrU2l6ZSA9IDEwLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorDQorICAgIGludCBHZXRDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25Db3VudDsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MIElzRW1wdHkoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uQ291bnQgPT0gMDsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MIExvb2t1cChGWF9CU1RSIGtleSwgdm9pZComIHJWYWx1ZSkgY29uc3Q7DQorDQorICAgIHZvaWQqJiBvcGVyYXRvcltdKEZYX0JTVFIga2V5KTsNCisNCisgICAgdm9pZCBTZXRBdChGWF9CU1RSIGtleSwgdm9pZCogbmV3VmFsdWUpDQorICAgIHsNCisgICAgICAgICgqdGhpcylba2V5XSA9IG5ld1ZhbHVlOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wgUmVtb3ZlS2V5KEZYX0JTVFIga2V5KTsNCisNCisgICAgdm9pZCBSZW1vdmVBbGwoKTsNCisNCisgICAgRlhfUE9TSVRJT04gR2V0U3RhcnRQb3NpdGlvbigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAobV9uQ291bnQgPT0gMCkgPyBOVUxMIDogKEZYX1BPU0lUSU9OKSAtIDE7DQorICAgIH0NCisNCisgICAgdm9pZCBHZXROZXh0QXNzb2MoRlhfUE9TSVRJT04mIHJOZXh0UG9zaXRpb24sIENGWF9CeXRlU3RyaW5nJiByS2V5LCB2b2lkKiYgclZhbHVlKSBjb25zdDsNCisNCisgICAgRlhfTFBWT0lECQlHZXROZXh0VmFsdWUoRlhfUE9TSVRJT04mIHJOZXh0UG9zaXRpb24pIGNvbnN0Ow0KKw0KKyAgICBGWF9EV09SRCBHZXRIYXNoVGFibGVTaXplKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fbkhhc2hUYWJsZVNpemU7DQorICAgIH0NCisNCisgICAgdm9pZCBJbml0SGFzaFRhYmxlKEZYX0RXT1JEIGhhc2hTaXplLCBGWF9CT09MIGJBbGxvY05vdyA9IFRSVUUpOw0KKw0KKyAgICBGWF9EV09SRCBIYXNoS2V5KEZYX0JTVFIga2V5KSBjb25zdDsNCitwcm90ZWN0ZWQ6DQorDQorICAgIElGWF9BbGxvY2F0b3IqCW1fcEFsbG9jYXRvcjsNCisNCisgICAgQ0Fzc29jKiogbV9wSGFzaFRhYmxlOw0KKw0KKyAgICBGWF9EV09SRCBtX25IYXNoVGFibGVTaXplOw0KKw0KKyAgICBpbnQgbV9uQ291bnQ7DQorDQorICAgIENBc3NvYyogbV9wRnJlZUxpc3Q7DQorDQorICAgIHN0cnVjdCBDRlhfUGxleCogbV9wQmxvY2tzOw0KKw0KKyAgICBpbnQgbV9uQmxvY2tTaXplOw0KKw0KKyAgICBDQXNzb2MqIE5ld0Fzc29jKCk7DQorDQorICAgIHZvaWQgRnJlZUFzc29jKENBc3NvYyogcEFzc29jKTsNCisNCisgICAgQ0Fzc29jKiBHZXRBc3NvY0F0KEZYX0JTVFIga2V5LCBGWF9EV09SRCYgaGFzaCkgY29uc3Q7DQorcHVibGljOg0KKw0KKyAgICB+Q0ZYX01hcEJ5dGVTdHJpbmdUb1B0cigpOw0KK307DQorY2xhc3MgQ0ZYX0NNYXBCeXRlU3RyaW5nVG9QdHIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCisNCisgICAgfkNGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyKCk7DQorDQorICAgIHZvaWQJCQlSZW1vdmVBbGwoKTsNCisNCisgICAgRlhfUE9TSVRJT04JCUdldFN0YXJ0UG9zaXRpb24oKSBjb25zdDsNCisNCisgICAgdm9pZAkJCUdldE5leHRBc3NvYyhGWF9QT1NJVElPTiYgck5leHRQb3NpdGlvbiwgQ0ZYX0J5dGVTdHJpbmcmIHJLZXksIHZvaWQqJiByVmFsdWUpIGNvbnN0Ow0KKw0KKyAgICBGWF9MUFZPSUQJCUdldE5leHRWYWx1ZShGWF9QT1NJVElPTiYgck5leHRQb3NpdGlvbikgY29uc3Q7DQorDQorICAgIEZYX0JPT0wJCQlMb29rdXAoRlhfQlNUUiBrZXksIHZvaWQqJiByVmFsdWUpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJU2V0QXQoRlhfQlNUUiBrZXksIHZvaWQqIHZhbHVlKTsNCisNCisgICAgdm9pZAkJCVJlbW92ZUtleShGWF9CU1RSIGtleSk7DQorDQorICAgIGludAkJCQlHZXRDb3VudCgpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJQWRkVmFsdWUoRlhfQlNUUiBrZXksIHZvaWQqIHBWYWx1ZSk7DQorcHJpdmF0ZToNCisNCisgICAgQ0ZYX0Jhc2VTZWdtZW50ZWRBcnJheQkJCW1fQnVmZmVyOw0KK307DQorY2xhc3MgQ0ZYX1B0ckxpc3QgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwcm90ZWN0ZWQ6DQorDQorICAgIHN0cnVjdCBDTm9kZSB7DQorDQorICAgICAgICBDTm9kZSogcE5leHQ7DQorDQorICAgICAgICBDTm9kZSogcFByZXY7DQorDQorICAgICAgICB2b2lkKiBkYXRhOw0KKyAgICB9Ow0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX1B0ckxpc3QoaW50IG5CbG9ja1NpemUgPSAxMCwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KKw0KKyAgICBGWF9QT1NJVElPTiBHZXRIZWFkUG9zaXRpb24oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKEZYX1BPU0lUSU9OKW1fcE5vZGVIZWFkOw0KKyAgICB9DQorDQorICAgIEZYX1BPU0lUSU9OIEdldFRhaWxQb3NpdGlvbigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoRlhfUE9TSVRJT04pbV9wTm9kZVRhaWw7DQorICAgIH0NCisNCisgICAgdm9pZCoJR2V0TmV4dChGWF9QT1NJVElPTiYgclBvc2l0aW9uKSBjb25zdA0KKyAgICB7DQorICAgICAgICBDTm9kZSogcE5vZGUgPSAoQ05vZGUqKSByUG9zaXRpb247DQorICAgICAgICByUG9zaXRpb24gPSAoRlhfUE9TSVRJT04pIHBOb2RlLT5wTmV4dDsNCisgICAgICAgIHJldHVybiBwTm9kZS0+ZGF0YTsNCisgICAgfQ0KKw0KKyAgICB2b2lkKglHZXRQcmV2KEZYX1BPU0lUSU9OJiByUG9zaXRpb24pIGNvbnN0DQorICAgIHsNCisgICAgICAgIENOb2RlKiBwTm9kZSA9IChDTm9kZSopIHJQb3NpdGlvbjsNCisgICAgICAgIHJQb3NpdGlvbiA9IChGWF9QT1NJVElPTikgcE5vZGUtPnBQcmV2Ow0KKyAgICAgICAgcmV0dXJuIHBOb2RlLT5kYXRhOw0KKyAgICB9DQorDQorICAgIEZYX1BPU0lUSU9OCUdldE5leHRQb3NpdGlvbihGWF9QT1NJVElPTiBwb3MpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoKENOb2RlKilwb3MpLT5wTmV4dDsNCisgICAgfQ0KKw0KKyAgICBGWF9QT1NJVElPTglHZXRQcmV2UG9zaXRpb24oRlhfUE9TSVRJT04gcG9zKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKChDTm9kZSopcG9zKS0+cFByZXY7DQorICAgIH0NCisNCisgICAgdm9pZCoJR2V0QXQoRlhfUE9TSVRJT04gclBvc2l0aW9uKSBjb25zdA0KKyAgICB7DQorICAgICAgICBDTm9kZSogcE5vZGUgPSAoQ05vZGUqKSByUG9zaXRpb247DQorICAgICAgICByZXR1cm4gcE5vZGUtPmRhdGE7DQorICAgIH0NCisNCisgICAgaW50CQlHZXRDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25Db3VudDsNCisgICAgfQ0KKw0KKyAgICBGWF9QT1NJVElPTglBZGRUYWlsKHZvaWQqIG5ld0VsZW1lbnQpOw0KKw0KKyAgICBGWF9QT1NJVElPTiBBZGRIZWFkKHZvaWQqIG5ld0VsZW1lbnQpOw0KKw0KKyAgICB2b2lkCVNldEF0KEZYX1BPU0lUSU9OIHBvcywgdm9pZCogbmV3RWxlbWVudCkNCisgICAgew0KKyAgICAgICAgQ05vZGUqIHBOb2RlID0gKENOb2RlKikgcG9zOw0KKyAgICAgICAgcE5vZGUtPmRhdGEgPSBuZXdFbGVtZW50Ow0KKyAgICB9DQorDQorICAgIEZYX1BPU0lUSU9OIEluc2VydEFmdGVyKEZYX1BPU0lUSU9OIHBvcywgdm9pZCogbmV3RWxlbWVudCk7DQorDQorICAgIEZYX1BPU0lUSU9OIEZpbmQodm9pZCogc2VhcmNoVmFsdWUsIEZYX1BPU0lUSU9OIHN0YXJ0QWZ0ZXIgPSBOVUxMICkgY29uc3Q7DQorDQorICAgIEZYX1BPU0lUSU9OIEZpbmRJbmRleChpbnQgaW5kZXgpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCVJlbW92ZUF0KEZYX1BPU0lUSU9OIHBvcyk7DQorDQorICAgIHZvaWQJUmVtb3ZlQWxsKCk7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBJRlhfQWxsb2NhdG9yKgltX3BBbGxvY2F0b3I7DQorDQorICAgIENOb2RlKiBtX3BOb2RlSGVhZDsNCisNCisgICAgQ05vZGUqIG1fcE5vZGVUYWlsOw0KKw0KKyAgICBpbnQgbV9uQ291bnQ7DQorDQorICAgIENOb2RlKiBtX3BOb2RlRnJlZTsNCisNCisgICAgc3RydWN0IENGWF9QbGV4KiBtX3BCbG9ja3M7DQorDQorICAgIGludCBtX25CbG9ja1NpemU7DQorDQorICAgIENOb2RlKiBOZXdOb2RlKENOb2RlKiBwUHJldiwgQ05vZGUqIHBOZXh0KTsNCisNCisgICAgdm9pZCBGcmVlTm9kZShDTm9kZSogcE5vZGUpOw0KK3B1YmxpYzoNCisNCisgICAgfkNGWF9QdHJMaXN0KCk7DQorfTsNCit0eXBlZGVmIHZvaWQgKCpQRF9DQUxMQkFDS19GUkVFREFUQSkoRlhfTFBWT0lEIHBEYXRhKTsNCitzdHJ1Y3QgRlhfUFJJVkFURURBVEEgew0KKw0KKyAgICB2b2lkCQkJCQlGcmVlRGF0YSgpOw0KKw0KKyAgICBGWF9MUFZPSUQJCQkJbV9wTW9kdWxlSWQ7DQorDQorICAgIEZYX0xQVk9JRAkJCQltX3BEYXRhOw0KKw0KKyAgICBQRF9DQUxMQkFDS19GUkVFREFUQQltX3BDYWxsYmFjazsNCisNCisgICAgRlhfQk9PTAkJCQkJbV9iU2VsZkRlc3RydWN0Ow0KK307DQorY2xhc3MgQ0ZYX1ByaXZhdGVEYXRhDQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX1ByaXZhdGVEYXRhKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKSA6IG1fRGF0YUxpc3QocEFsbG9jYXRvcikge30NCisNCisgICAgfkNGWF9Qcml2YXRlRGF0YSgpOw0KKw0KKyAgICB2b2lkCQkJCQlDbGVhckFsbCgpOw0KKw0KKyAgICB2b2lkCQkJCQlTZXRQcml2YXRlRGF0YShGWF9MUFZPSUQgbW9kdWxlX2lkLCBGWF9MUFZPSUQgcERhdGEsIFBEX0NBTExCQUNLX0ZSRUVEQVRBIGNhbGxiYWNrKTsNCisNCisgICAgdm9pZAkJCQkJU2V0UHJpdmF0ZU9iaihGWF9MUFZPSUQgbW9kdWxlX2lkLCBDRlhfRGVzdHJ1Y3RPYmplY3QqIHBPYmopOw0KKw0KKyAgICBGWF9MUFZPSUQJCQkJR2V0UHJpdmF0ZURhdGEoRlhfTFBWT0lEIG1vZHVsZV9pZCk7DQorDQorICAgIEZYX0JPT0wJCQkJCUxvb2t1cFByaXZhdGVEYXRhKEZYX0xQVk9JRCBtb2R1bGVfaWQsIEZYX0xQVk9JRCAmcERhdGEpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmICghbW9kdWxlX2lkKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgbkNvdW50ID0gbV9EYXRhTGlzdC5HZXRTaXplKCk7DQorICAgICAgICBmb3IgKEZYX0RXT1JEIG4gPSAwOyBuIDwgbkNvdW50OyBuICsrKSB7DQorICAgICAgICAgICAgaWYgKG1fRGF0YUxpc3Rbbl0ubV9wTW9kdWxlSWQgPT0gbW9kdWxlX2lkKSB7DQorICAgICAgICAgICAgICAgIHBEYXRhID0gbV9EYXRhTGlzdFtuXS5tX3BEYXRhOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQkJUmVtb3ZlUHJpdmF0ZURhdGEoRlhfTFBWT0lEIG1vZHVsZV9pZCk7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDRlhfQXJyYXlUZW1wbGF0ZTxGWF9QUklWQVRFREFUQT4JbV9EYXRhTGlzdDsNCisNCisgICAgdm9pZAkJCQkJQWRkRGF0YShGWF9MUFZPSUQgbW9kdWxlX2lkLCBGWF9MUFZPSUQgcERhdGEsIFBEX0NBTExCQUNLX0ZSRUVEQVRBIGNhbGxiYWNrLCBGWF9CT09MIGJTZWxmRGVzdHJ1Y3QpOw0KK307DQorY2xhc3MgQ0ZYX0JpdFN0cmVhbSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdm9pZAkJCQlJbml0KEZYX0xQQ0JZVEUgcERhdGEsIEZYX0RXT1JEIGR3U2l6ZSk7DQorDQorDQorICAgIEZYX0RXT1JECQkJR2V0Qml0cyhGWF9EV09SRCBuQml0cyk7DQorDQorICAgIHZvaWQJCQkJQnl0ZUFsaWduKCk7DQorDQorICAgIEZYX0JPT0wJCQkJSXNFT0YoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9CaXRQb3MgPj0gbV9CaXRTaXplOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJU2tpcEJpdHMoRlhfRFdPUkQgbkJpdHMpDQorICAgIHsNCisgICAgICAgIG1fQml0UG9zICs9IG5CaXRzOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJUmV3aW5kKCkNCisgICAgew0KKyAgICAgICAgbV9CaXRQb3MgPSAwOw0KKyAgICB9DQorcHJvdGVjdGVkOg0KKw0KKyAgICBGWF9EV09SRAkJCW1fQml0UG9zOw0KKw0KKyAgICBGWF9EV09SRAkJCW1fQml0U2l6ZTsNCisNCisgICAgRlhfTFBDQllURQkJCW1fcERhdGE7DQorfTsNCit0ZW1wbGF0ZSA8Y2xhc3MgT2JqQ2xhc3M+IGNsYXNzIENGWF9Db3VudFJlZiA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdHlwZWRlZiBDRlhfQ291bnRSZWY8T2JqQ2xhc3M+IFJlZjsNCisNCisgICAgY2xhc3MgQ291bnRlZE9iaiA6IHB1YmxpYyBPYmpDbGFzcw0KKyAgICB7DQorICAgIHB1YmxpYzoNCisNCisgICAgICAgIENvdW50ZWRPYmooKSB7fQ0KKw0KKyAgICAgICAgQ291bnRlZE9iaihjb25zdCBDb3VudGVkT2JqJiBzcmMpIDogT2JqQ2xhc3Moc3JjKSB7fQ0KKw0KKyAgICAgICAgaW50CQkJbV9SZWZDb3VudDsNCisgICAgfTsNCisNCisgICAgQ0ZYX0NvdW50UmVmKCkNCisgICAgew0KKyAgICAgICAgbV9wT2JqZWN0ID0gTlVMTDsNCisgICAgfQ0KKw0KKyAgICBDRlhfQ291bnRSZWYoY29uc3QgUmVmJiByZWYpDQorICAgIHsNCisgICAgICAgIG1fcE9iamVjdCA9IHJlZi5tX3BPYmplY3Q7DQorICAgICAgICBpZiAobV9wT2JqZWN0KSB7DQorICAgICAgICAgICAgbV9wT2JqZWN0LT5tX1JlZkNvdW50ICsrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIH5DRlhfQ291bnRSZWYoKQ0KKyAgICB7DQorICAgICAgICBpZiAoIW1fcE9iamVjdCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIG1fcE9iamVjdC0+bV9SZWZDb3VudCAtLTsNCisgICAgICAgIGlmIChtX3BPYmplY3QtPm1fUmVmQ291bnQgPD0gMCkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBtX3BPYmplY3Q7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgT2JqQ2xhc3MqCQkJTmV3KCkNCisgICAgew0KKyAgICAgICAgaWYgKG1fcE9iamVjdCkgew0KKyAgICAgICAgICAgIG1fcE9iamVjdC0+bV9SZWZDb3VudCAtLTsNCisgICAgICAgICAgICBpZiAobV9wT2JqZWN0LT5tX1JlZkNvdW50IDw9IDApIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIG1fcE9iamVjdDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wT2JqZWN0ID0gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcE9iamVjdCA9IEZYX05FVyBDb3VudGVkT2JqOw0KKyAgICAgICAgaWYgKCFtX3BPYmplY3QpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcE9iamVjdC0+bV9SZWZDb3VudCA9IDE7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0Ow0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJb3BlcmF0b3IgPSAoY29uc3QgUmVmJiByZWYpDQorICAgIHsNCisgICAgICAgIGlmIChyZWYubV9wT2JqZWN0KSB7DQorICAgICAgICAgICAgcmVmLm1fcE9iamVjdC0+bV9SZWZDb3VudCArKzsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BPYmplY3QpIHsNCisgICAgICAgICAgICBtX3BPYmplY3QtPm1fUmVmQ291bnQgLS07DQorICAgICAgICAgICAgaWYgKG1fcE9iamVjdC0+bV9SZWZDb3VudCA8PSAwKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBtX3BPYmplY3Q7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wT2JqZWN0ID0gcmVmLm1fcE9iamVjdDsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCW9wZXJhdG9yID0gKHZvaWQqIHApDQorICAgIHsNCisgICAgICAgIEZYU1lTX2Fzc2VydChwID09IDApOw0KKyAgICAgICAgaWYgKG1fcE9iamVjdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wT2JqZWN0LT5tX1JlZkNvdW50IC0tOw0KKyAgICAgICAgaWYgKG1fcE9iamVjdC0+bV9SZWZDb3VudCA8PSAwKSB7DQorICAgICAgICAgICAgZGVsZXRlIG1fcE9iamVjdDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcE9iamVjdCA9IE5VTEw7DQorICAgIH0NCisNCisgICAgY29uc3QgT2JqQ2xhc3MqCQlHZXRPYmplY3QoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0Ow0KKyAgICB9DQorDQorICAgIG9wZXJhdG9yCQkJY29uc3QgT2JqQ2xhc3MqKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcE9iamVjdDsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCUlzTnVsbCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmplY3QgPT0gTlVMTDsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCU5vdE51bGwoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0ICE9IE5VTEw7DQorICAgIH0NCisNCisgICAgT2JqQ2xhc3MqCQkJR2V0TW9kaWZ5KCkNCisgICAgew0KKyAgICAgICAgaWYgKG1fcE9iamVjdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgbV9wT2JqZWN0ID0gRlhfTkVXIENvdW50ZWRPYmo7DQorICAgICAgICAgICAgaWYgKG1fcE9iamVjdCkgew0KKyAgICAgICAgICAgICAgICBtX3BPYmplY3QtPm1fUmVmQ291bnQgPSAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAobV9wT2JqZWN0LT5tX1JlZkNvdW50ID4gMSkgew0KKyAgICAgICAgICAgIG1fcE9iamVjdC0+bV9SZWZDb3VudCAtLTsNCisgICAgICAgICAgICBDb3VudGVkT2JqKiBwT2xkT2JqZWN0ID0gbV9wT2JqZWN0Ow0KKyAgICAgICAgICAgIG1fcE9iamVjdCA9IE5VTEw7DQorICAgICAgICAgICAgbV9wT2JqZWN0ID0gRlhfTkVXIENvdW50ZWRPYmooKnBPbGRPYmplY3QpOw0KKyAgICAgICAgICAgIGlmIChtX3BPYmplY3QpIHsNCisgICAgICAgICAgICAgICAgbV9wT2JqZWN0LT5tX1JlZkNvdW50ID0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0Ow0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJU2V0TnVsbCgpDQorICAgIHsNCisgICAgICAgIGlmIChtX3BPYmplY3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIG1fcE9iamVjdC0+bV9SZWZDb3VudCAtLTsNCisgICAgICAgIGlmIChtX3BPYmplY3QtPm1fUmVmQ291bnQgPD0gMCkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBtX3BPYmplY3Q7DQorICAgICAgICB9DQorICAgICAgICBtX3BPYmplY3QgPSBOVUxMOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJb3BlcmF0b3IgPT0gKGNvbnN0IFJlZiYgcmVmKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wT2JqZWN0ID09IHJlZi5tX3BPYmplY3Q7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorDQorICAgIENvdW50ZWRPYmoqCQkJbV9wT2JqZWN0Ow0KK307DQorY2xhc3MgSUZYX1BhdXNlDQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCBGWF9CT09MCU5lZWRUb1BhdXNlTm93KCkgPSAwOw0KK307DQorY2xhc3MgQ0ZYX0RhdGFGaWx0ZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgfkNGWF9EYXRhRmlsdGVyKCk7DQorDQorICAgIHZvaWQJCQlTZXREZXN0RmlsdGVyKENGWF9EYXRhRmlsdGVyKiBwRmlsdGVyKTsNCisNCisgICAgRlhfQk9PTAkJCUlzRU9GKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fYkVPRjsNCisgICAgfQ0KKw0KKyAgICBGWF9EV09SRAkJR2V0U3JjUG9zKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fU3JjUG9zOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQlGaWx0ZXJJbihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zik7DQorDQorICAgIHZvaWQJCQlGaWx0ZXJGaW5pc2goQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgQ0ZYX0RhdGFGaWx0ZXIoKTsNCisgICAgdmlydHVhbCB2b2lkCXZfRmlsdGVySW4oRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpID0gMDsNCisgICAgdmlydHVhbCB2b2lkCXZfRmlsdGVyRmluaXNoKENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKSA9IDA7DQorICAgIHZvaWQJCQlSZXBvcnRFT0YoRlhfRFdPUkQgbGVmdF9pbnB1dCk7DQorDQorICAgIEZYX0JPT0wJCQltX2JFT0Y7DQorDQorICAgIEZYX0RXT1JECQltX1NyY1BvczsNCisNCisgICAgQ0ZYX0RhdGFGaWx0ZXIqCW1fcERlc3RGaWx0ZXI7DQorfTsNCit0ZW1wbGF0ZSA8Y2xhc3MgVD4NCitjbGFzcyBDRlhfU21hcnRQb2ludGVyDQorew0KK3B1YmxpYzoNCisgICAgQ0ZYX1NtYXJ0UG9pbnRlcihUICpwT2JqKSA6IG1fcE9iaihwT2JqKSB7fQ0KKyAgICB+Q0ZYX1NtYXJ0UG9pbnRlcigpDQorICAgIHsNCisgICAgICAgIG1fcE9iai0+UmVsZWFzZSgpOw0KKyAgICB9DQorICAgIG9wZXJhdG9yIFQqKHZvaWQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmo7DQorICAgIH0NCisgICAgVCYJCW9wZXJhdG9yICoodm9pZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuICptX3BPYmo7DQorICAgIH0NCisgICAgVCoJCW9wZXJhdG9yIC0+KHZvaWQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BPYmo7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorICAgIFQgKm1fcE9iajsNCit9Ow0KKyNkZWZpbmUgRlhfREFUQUxJU1RfTEVOR1RICTEwMjQNCit0ZW1wbGF0ZTxzaXplX3QgdW5pdD4NCitjbGFzcyBDRlhfU29ydExpc3RBcnJheSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3Byb3RlY3RlZDoNCisNCisgICAgc3RydWN0IERhdGFMaXN0IHsNCisNCisgICAgICAgIEZYX0lOVDMyCXN0YXJ0Ow0KKw0KKyAgICAgICAgRlhfSU5UMzIJY291bnQ7DQorICAgICAgICBGWF9MUEJZVEUJZGF0YTsNCisgICAgfTsNCitwdWJsaWM6DQorDQorICAgIENGWF9Tb3J0TGlzdEFycmF5KElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKSA6IG1fQ3VyTGlzdCgwKSwgbV9EYXRhTGlzdHMocEFsbG9jYXRvcikge30NCisNCisgICAgfkNGWF9Tb3J0TGlzdEFycmF5KCkNCisgICAgew0KKyAgICAgICAgQ2xlYXIoKTsNCisgICAgfQ0KKw0KKw0KKyAgICB2b2lkCQkJQ2xlYXIoKQ0KKyAgICB7DQorICAgICAgICBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gbV9EYXRhTGlzdHMubV9wQWxsb2NhdG9yOw0KKyAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gbV9EYXRhTGlzdHMuR2V0VXBwZXJCb3VuZCgpOyBpID49IDA7IGktLSkgew0KKyAgICAgICAgICAgIERhdGFMaXN0IGxpc3QgPSBtX0RhdGFMaXN0cy5FbGVtZW50QXQoaSk7DQorICAgICAgICAgICAgaWYgKGxpc3QuZGF0YSkgew0KKyAgICAgICAgICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShwQWxsb2NhdG9yLCBsaXN0LmRhdGEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fRGF0YUxpc3RzLlJlbW92ZUFsbCgpOw0KKyAgICAgICAgbV9DdXJMaXN0ID0gMDsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJQXBwZW5kKEZYX0lOVDMyIG5TdGFydCwgRlhfSU5UMzIgbkNvdW50KQ0KKyAgICB7DQorICAgICAgICBpZiAoblN0YXJ0IDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBtX0RhdGFMaXN0cy5tX3BBbGxvY2F0b3I7DQorICAgICAgICB3aGlsZSAobkNvdW50ID4gMCkgew0KKyAgICAgICAgICAgIEZYX0lOVDMyIHRlbXBfY291bnQgPSBGWF9NSU4obkNvdW50LCBGWF9EQVRBTElTVF9MRU5HVEgpOw0KKyAgICAgICAgICAgIERhdGFMaXN0IGxpc3Q7DQorICAgICAgICAgICAgbGlzdC5kYXRhID0gRlhfQWxsb2NhdG9yX0FsbG9jKHBBbGxvY2F0b3IsIEZYX0JZVEUsIHRlbXBfY291bnQgKiB1bml0KTsNCisgICAgICAgICAgICBpZiAoIWxpc3QuZGF0YSkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhTWVNfbWVtc2V0MzIobGlzdC5kYXRhLCAwLCB0ZW1wX2NvdW50ICogdW5pdCk7DQorICAgICAgICAgICAgbGlzdC5zdGFydCA9IG5TdGFydDsNCisgICAgICAgICAgICBsaXN0LmNvdW50ID0gdGVtcF9jb3VudDsNCisgICAgICAgICAgICBBcHBlbmQobGlzdCk7DQorICAgICAgICAgICAgbkNvdW50IC09IHRlbXBfY291bnQ7DQorICAgICAgICAgICAgblN0YXJ0ICs9IHRlbXBfY291bnQ7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgRlhfTFBCWVRFCQlHZXRBdChGWF9JTlQzMiBuSW5kZXgpDQorICAgIHsNCisgICAgICAgIGlmIChuSW5kZXggPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9DdXJMaXN0IDwgMCB8fCBtX0N1ckxpc3QgPj0gbV9EYXRhTGlzdHMuR2V0U2l6ZSgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBEYXRhTGlzdCAqcEN1ckxpc3QgPSBtX0RhdGFMaXN0cy5HZXREYXRhUHRyKG1fQ3VyTGlzdCk7DQorICAgICAgICBpZiAoIXBDdXJMaXN0IHx8IG5JbmRleCA8IHBDdXJMaXN0LT5zdGFydCB8fCBuSW5kZXggPj0gcEN1ckxpc3QtPnN0YXJ0ICsgcEN1ckxpc3QtPmNvdW50KSB7DQorICAgICAgICAgICAgcEN1ckxpc3QgPSBOVUxMOw0KKyAgICAgICAgICAgIEZYX0lOVDMyIGlTdGFydCA9IDA7DQorICAgICAgICAgICAgRlhfSU5UMzIgaUVuZCA9IG1fRGF0YUxpc3RzLkdldFVwcGVyQm91bmQoKTsNCisgICAgICAgICAgICBGWF9JTlQzMiBpTWlkID0gMDsNCisgICAgICAgICAgICB3aGlsZSAoaVN0YXJ0IDw9IGlFbmQpIHsNCisgICAgICAgICAgICAgICAgaU1pZCA9IChpU3RhcnQgKyBpRW5kKSAvIDI7DQorICAgICAgICAgICAgICAgIERhdGFMaXN0KiBsaXN0ID0gbV9EYXRhTGlzdHMuR2V0RGF0YVB0cihpTWlkKTsNCisgICAgICAgICAgICAgICAgaWYgKG5JbmRleCA8IGxpc3QtPnN0YXJ0KSB7DQorICAgICAgICAgICAgICAgICAgICBpRW5kID0gaU1pZCAtIDE7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobkluZGV4ID49IGxpc3QtPnN0YXJ0ICsgbGlzdC0+Y291bnQpIHsNCisgICAgICAgICAgICAgICAgICAgIGlTdGFydCA9IGlNaWQgKyAxOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgcEN1ckxpc3QgPSBsaXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgbV9DdXJMaXN0ID0gaU1pZDsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHBDdXJMaXN0ID8gcEN1ckxpc3QtPmRhdGEgKyAobkluZGV4IC0gcEN1ckxpc3QtPnN0YXJ0KSAqIHVuaXQgOiBOVUxMOw0KKyAgICB9DQorcHJvdGVjdGVkOg0KKyAgICB2b2lkCQkJQXBwZW5kKGNvbnN0IERhdGFMaXN0JiBsaXN0KQ0KKyAgICB7DQorICAgICAgICBGWF9JTlQzMiBpU3RhcnQgPSAwOw0KKyAgICAgICAgRlhfSU5UMzIgaUVuZCA9IG1fRGF0YUxpc3RzLkdldFVwcGVyQm91bmQoKTsNCisgICAgICAgIEZYX0lOVDMyIGlGaW5kID0gMDsNCisgICAgICAgIHdoaWxlIChpU3RhcnQgPD0gaUVuZCkgew0KKyAgICAgICAgICAgIEZYX0lOVDMyIGlNaWQgPSAoaVN0YXJ0ICsgaUVuZCkgLyAyOw0KKyAgICAgICAgICAgIERhdGFMaXN0KiBjdXJfbGlzdCA9IG1fRGF0YUxpc3RzLkdldERhdGFQdHIoaU1pZCk7DQorICAgICAgICAgICAgaWYgKGxpc3Quc3RhcnQgPCBjdXJfbGlzdC0+c3RhcnQgKyBjdXJfbGlzdC0+Y291bnQpIHsNCisgICAgICAgICAgICAgICAgaUVuZCA9IGlNaWQgLSAxOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmIChpTWlkID09IGlFbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIGlGaW5kID0gaU1pZCArIDE7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBEYXRhTGlzdCogbmV4dF9saXN0ID0gbV9EYXRhTGlzdHMuR2V0RGF0YVB0cihpTWlkICsgMSk7DQorICAgICAgICAgICAgICAgIGlmIChsaXN0LnN0YXJ0IDwgbmV4dF9saXN0LT5zdGFydCkgew0KKyAgICAgICAgICAgICAgICAgICAgaUZpbmQgPSBpTWlkICsgMTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgaVN0YXJ0ID0gaU1pZCArIDE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBtX0RhdGFMaXN0cy5JbnNlcnRBdChpRmluZCwgbGlzdCk7DQorICAgIH0NCisgICAgRlhfSU5UMzIJCW1fQ3VyTGlzdDsNCisgICAgQ0ZYX0FycmF5VGVtcGxhdGU8RGF0YUxpc3Q+CW1fRGF0YUxpc3RzOw0KK307DQordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPg0KK2NsYXNzIENGWF9MaXN0QXJyYXlUZW1wbGF0ZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdm9pZAkJCUNsZWFyKCkNCisgICAgew0KKyAgICAgICAgbV9EYXRhLkNsZWFyKCk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCUFkZChGWF9JTlQzMiBuU3RhcnQsIEZYX0lOVDMyIG5Db3VudCkNCisgICAgew0KKyAgICAgICAgbV9EYXRhLkFwcGVuZChuU3RhcnQsIG5Db3VudCk7DQorICAgIH0NCisNCisgICAgVDImCQkJCW9wZXJhdG9yIFtdIChGWF9JTlQzMiBuSW5kZXgpDQorICAgIHsNCisgICAgICAgIEZYX0xQQllURSBkYXRhID0gbV9EYXRhLkdldEF0KG5JbmRleCk7DQorICAgICAgICBGWFNZU19hc3NlcnQoZGF0YSAhPSBOVUxMKTsNCisgICAgICAgIHJldHVybiAoVDImKSgqKHZvbGF0aWxlIFQyKilkYXRhKTsNCisgICAgfQ0KKw0KKyAgICBUMioJCQkJR2V0UHRyQXQoRlhfSU5UMzIgbkluZGV4KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKFQyKiltX0RhdGEuR2V0QXQobkluZGV4KTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisgICAgVDEJCQltX0RhdGE7DQorfTsNCit0eXBlZGVmIENGWF9MaXN0QXJyYXlUZW1wbGF0ZTxDRlhfU29ydExpc3RBcnJheTxzaXplb2YoRlhfRklMRVNJWkUpPiwgRlhfRklMRVNJWkU+CUNGWF9GaWxlU2l6ZUxpc3RBcnJheTsNCit0eXBlZGVmIENGWF9MaXN0QXJyYXlUZW1wbGF0ZTxDRlhfU29ydExpc3RBcnJheTxzaXplb2YoRlhfRFdPUkQpPiwgRlhfRFdPUkQ+CQlDRlhfRFdvcmRMaXN0QXJyYXk7DQordHlwZWRlZiBlbnVtIHsNCisgICAgUmVhZHksDQorICAgIFRvQmVDb250aW51ZWQsDQorICAgIEZvdW5kLA0KKyAgICBOb3RGb3VuZCwNCisgICAgRmFpbGVkLA0KKyAgICBEb25lDQorfSBGWF9Qcm9ncmVzc2l2ZVN0YXR1czsNCisjZGVmaW5lIFByb2dyZXNzaXZlU3RhdHVzCUZYX1Byb2dyZXNzaXZlU3RhdHVzDQorI2RlZmluZSBGWF9OQU1FU1BBQ0VfREVDTEFSRShuYW1lc3BhY2UsIHR5cGUpICAgICAgIG5hbWVzcGFjZTo6dHlwZQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS9meGNydC9meF9jb29yZGluYXRlcy5oIGIvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X2Nvb3JkaW5hdGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVlMGRmYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGNydC9meF9jb29yZGluYXRlcy5oCkBAIC0wLDAgKzEsOTAwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9GWENSVF9DT09SRElOQVRFU18NCisjZGVmaW5lIF9GWENSVF9DT09SRElOQVRFU18NCit0ZW1wbGF0ZTxjbGFzcyBiYXNlVHlwZT4gY2xhc3MgQ0ZYX1BTVlRlbXBsYXRlOw0KK3RlbXBsYXRlPGNsYXNzIGJhc2VUeXBlPiBjbGFzcyBDRlhfVlRlbXBsYXRlOw0KK3RlbXBsYXRlPGNsYXNzIGJhc2VUeXBlPiBjbGFzcyBDRlhfUFJMVGVtcGxhdGU7DQordGVtcGxhdGU8Y2xhc3MgYmFzZVR5cGU+IGNsYXNzIENGWF9SVGVtcGxhdGU7DQordGVtcGxhdGU8Y2xhc3MgYmFzZVR5cGU+IGNsYXNzIENGWF9FVGVtcGxhdGU7DQordGVtcGxhdGU8Y2xhc3MgYmFzZVR5cGU+IGNsYXNzIENGWF9BVGVtcGxhdGU7DQordGVtcGxhdGU8Y2xhc3MgYmFzZVR5cGU+IGNsYXNzIENGWF9SUlRlbXBsYXRlOw0KK2NsYXNzIENGWF9NYXRyaXg7DQordGVtcGxhdGU8Y2xhc3MgYmFzZVR5cGU+DQorY2xhc3MgQ0ZYX1BTVlRlbXBsYXRlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICB0eXBlZGVmIENGWF9QU1ZUZW1wbGF0ZTxiYXNlVHlwZT4JRlhUX1BTVjsNCisgICAgdHlwZWRlZiBDRlhfUFNWVGVtcGxhdGU8YmFzZVR5cGU+CUZYVF9QT0lOVDsNCisgICAgdHlwZWRlZiBDRlhfUFNWVGVtcGxhdGU8YmFzZVR5cGU+CUZYVF9TSVpFOw0KKyAgICB2b2lkCQlTZXQoYmFzZVR5cGUgeCwgYmFzZVR5cGUgeSkNCisgICAgew0KKyAgICAgICAgRlhUX1BTVjo6eCA9IHgsIEZYVF9QU1Y6OnkgPSB5Ow0KKyAgICB9DQorICAgIHZvaWQJCVNldChjb25zdCBGWFRfUFNWICZwc3YpDQorICAgIHsNCisgICAgICAgIEZYVF9QU1Y6OnggPSBwc3YueCwgRlhUX1BTVjo6eSA9IHBzdi55Ow0KKyAgICB9DQorICAgIHZvaWQJCUFkZChiYXNlVHlwZSB4LCBiYXNlVHlwZSB5KQ0KKyAgICB7DQorICAgICAgICBGWFRfUFNWOjp4ICs9IHgsIEZYVF9QU1Y6OnkgKz0geTsNCisgICAgfQ0KKyAgICB2b2lkCQlTdWJ0cmFjdChiYXNlVHlwZSB4LCBiYXNlVHlwZSB5KQ0KKyAgICB7DQorICAgICAgICBGWFRfUFNWOjp4IC09IHgsIEZYVF9QU1Y6OnkgLT0geTsNCisgICAgfQ0KKyAgICB2b2lkCQlSZXNldCgpDQorICAgIHsNCisgICAgICAgIEZYVF9QU1Y6OnggPSBGWFRfUFNWOjp5ID0gMDsNCisgICAgfQ0KKyAgICBGWFRfUFNWJglvcGVyYXRvciArPSAoY29uc3QgRlhUX1BTViAmb2JqKQ0KKyAgICB7DQorICAgICAgICB4ICs9IG9iai54Ow0KKyAgICAgICAgeSArPSBvYmoueTsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICBGWFRfUFNWJglvcGVyYXRvciAtPSAoY29uc3QgRlhUX1BTViAmb2JqKQ0KKyAgICB7DQorICAgICAgICB4IC09IG9iai54Ow0KKyAgICAgICAgeSAtPSBvYmoueTsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICBGWFRfUFNWJglvcGVyYXRvciAqPSAoYmFzZVR5cGUgbGFtZGEpDQorICAgIHsNCisgICAgICAgIHggKj0gbGFtZGE7DQorICAgICAgICB5ICo9IGxhbWRhOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorICAgIEZYVF9QU1YmCW9wZXJhdG9yIC89IChiYXNlVHlwZSBsYW1kYSkNCisgICAgew0KKyAgICAgICAgeCAvPSBsYW1kYTsNCisgICAgICAgIHkgLz0gbGFtZGE7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgICAgZnJpZW5kCUZYX0JPT0wJCW9wZXJhdG9yID09IChjb25zdCBGWFRfUFNWICZvYmoxLCBjb25zdCBGWFRfUFNWICZvYmoyKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gb2JqMS54ID09IG9iajIueCAmJiBvYmoxLnkgPT0gb2JqMi55Ow0KKyAgICB9DQorICAgIGZyaWVuZAlGWF9CT09MCQlvcGVyYXRvciAhPSAoY29uc3QgRlhUX1BTViAmb2JqMSwgY29uc3QgRlhUX1BTViAmb2JqMikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG9iajEueCAhPSBvYmoyLnggfHwgb2JqMS55ICE9IG9iajIueTsNCisgICAgfQ0KKyAgICBmcmllbmQJRlhUX1BTVgkJb3BlcmF0b3IgKyAoY29uc3QgRlhUX1BTViAmb2JqMSwgY29uc3QgRlhUX1BTViAmb2JqMikNCisgICAgew0KKyAgICAgICAgQ0ZYX1BTVlRlbXBsYXRlIG9iajsNCisgICAgICAgIG9iai54ID0gb2JqMS54ICsgb2JqMi54Ow0KKyAgICAgICAgb2JqLnkgPSBvYmoxLnkgKyBvYmoyLnk7DQorICAgICAgICByZXR1cm4gb2JqOw0KKyAgICB9DQorICAgIGZyaWVuZAlGWFRfUFNWCQlvcGVyYXRvciAtIChjb25zdCBGWFRfUFNWICZvYmoxLCBjb25zdCBGWFRfUFNWICZvYmoyKQ0KKyAgICB7DQorICAgICAgICBDRlhfUFNWVGVtcGxhdGUgb2JqOw0KKyAgICAgICAgb2JqLnggPSBvYmoxLnggLSBvYmoyLng7DQorICAgICAgICBvYmoueSA9IG9iajEueSAtIG9iajIueTsNCisgICAgICAgIHJldHVybiBvYmo7DQorICAgIH0NCisgICAgZnJpZW5kCUZYVF9QU1YJCW9wZXJhdG9yICogKGNvbnN0IEZYVF9QU1YgJm9iaiwgYmFzZVR5cGUgbGFtZGEpDQorICAgIHsNCisgICAgICAgIENGWF9QU1ZUZW1wbGF0ZSB0Ow0KKyAgICAgICAgdC54ID0gb2JqLnggKiBsYW1kYTsNCisgICAgICAgIHQueSA9IG9iai55ICogbGFtZGE7DQorICAgICAgICByZXR1cm4gdDsNCisgICAgfQ0KKyAgICBmcmllbmQJRlhUX1BTVgkJb3BlcmF0b3IgKiAoYmFzZVR5cGUgbGFtZGEsIGNvbnN0IEZYVF9QU1YgJm9iaikNCisgICAgew0KKyAgICAgICAgQ0ZYX1BTVlRlbXBsYXRlIHQ7DQorICAgICAgICB0LnggPSBsYW1kYSAqIG9iai54Ow0KKyAgICAgICAgdC55ID0gbGFtZGEgKiBvYmoueTsNCisgICAgICAgIHJldHVybiB0Ow0KKyAgICB9DQorICAgIGZyaWVuZAlGWFRfUFNWCQlvcGVyYXRvciAvIChjb25zdCBGWFRfUFNWICZvYmosIGJhc2VUeXBlIGxhbWRhKQ0KKyAgICB7DQorICAgICAgICBDRlhfUFNWVGVtcGxhdGUgdDsNCisgICAgICAgIHQueCA9IG9iai54IC8gbGFtZGE7DQorICAgICAgICB0LnkgPSBvYmoueSAvIGxhbWRhOw0KKyAgICAgICAgcmV0dXJuIHQ7DQorICAgIH0NCisgICAgYmFzZVR5cGUgeCwgeTsNCit9Ow0KK3R5cGVkZWYgQ0ZYX1BTVlRlbXBsYXRlPEZYX0lOVDMyPgkJCUNGWF9Qb2ludDsNCit0eXBlZGVmIENGWF9QU1ZUZW1wbGF0ZTxGWF9GTE9BVD4JCQlDRlhfUG9pbnRGOw0KK3R5cGVkZWYgQ0ZYX1BTVlRlbXBsYXRlPEZYX0lOVDMyPgkJCUNGWF9TaXplOw0KK3R5cGVkZWYgQ0ZYX1BTVlRlbXBsYXRlPEZYX0ZMT0FUPgkJCUNGWF9TaXplRjsNCit0eXBlZGVmIENGWF9BcnJheVRlbXBsYXRlPENGWF9Qb2ludD4JCUNGWF9Qb2ludHM7DQordHlwZWRlZiBDRlhfQXJyYXlUZW1wbGF0ZTxDRlhfUG9pbnRGPgkJQ0ZYX1BvaW50c0Y7DQordHlwZWRlZiBDRlhfUFNWVGVtcGxhdGU8RlhfSU5UMzI+ICoJCQlGWF9MUFBPSU5UOw0KK3R5cGVkZWYgQ0ZYX1BTVlRlbXBsYXRlPEZYX0ZMT0FUPiAqCQkJRlhfTFBQT0lOVEY7DQordHlwZWRlZiBDRlhfUFNWVGVtcGxhdGU8RlhfSU5UMzI+IGNvbnN0ICoJRlhfTFBDUE9JTlQ7DQordHlwZWRlZiBDRlhfUFNWVGVtcGxhdGU8RlhfRkxPQVQ+IGNvbnN0ICoJRlhfTFBDUE9JTlRGOw0KKyNkZWZpbmUgQ0ZYX0Zsb2F0UG9pbnQJQ0ZYX1BvaW50Rg0KK3RlbXBsYXRlPGNsYXNzIGJhc2VUeXBlPg0KK2NsYXNzIENGWF9WVGVtcGxhdGU6IHB1YmxpYyBDRlhfUFNWVGVtcGxhdGU8YmFzZVR5cGU+DQorew0KK3B1YmxpYzoNCisgICAgdHlwZWRlZiBDRlhfUFNWVGVtcGxhdGU8YmFzZVR5cGU+CUZYVF9QU1Y7DQorICAgIHR5cGVkZWYgQ0ZYX1BTVlRlbXBsYXRlPGJhc2VUeXBlPglGWFRfUE9JTlQ7DQorICAgIHR5cGVkZWYgQ0ZYX1BTVlRlbXBsYXRlPGJhc2VUeXBlPglGWFRfU0laRTsNCisgICAgdHlwZWRlZiBDRlhfVlRlbXBsYXRlPGJhc2VUeXBlPgkJRlhUX1ZFQ1RPUjsNCisgICAgdm9pZAkJU2V0KGJhc2VUeXBlIHgsIGJhc2VUeXBlIHkpDQorICAgIHsNCisgICAgICAgIEZYVF9QU1Y6OnggPSB4LCBGWFRfUFNWOjp5ID0geTsNCisgICAgfQ0KKyAgICB2b2lkCQlTZXQoY29uc3QgRlhUX1BTViAmcHN2KQ0KKyAgICB7DQorICAgICAgICBGWFRfUFNWOjp4ID0gcHN2LngsIEZYVF9QU1Y6OnkgPSBwc3YueTsNCisgICAgfQ0KKyAgICB2b2lkCQlTZXQoY29uc3QgRlhUX1BPSU5UICZwMSwgY29uc3QgRlhUX1BPSU5UICZwMikNCisgICAgew0KKyAgICAgICAgRlhUX1BTVjo6eCA9IHAyLnggLSBwMS54LCBGWFRfUFNWOjp5ID0gcDIueSAtIHAxLnk7DQorICAgIH0NCisgICAgdm9pZAkJUmVzZXQoKQ0KKyAgICB7DQorICAgICAgICBGWFRfUFNWOjp4ID0gRlhUX1BTVjo6eSA9IDA7DQorICAgIH0NCisgICAgYmFzZVR5cGUJU3F1YXJlTGVuZ3RoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYVF9QU1Y6OnggKiBGWFRfUFNWOjp4ICsgRlhUX1BTVjo6eSAqIEZYVF9QU1Y6Onk7DQorICAgIH0NCisgICAgYmFzZVR5cGUJTGVuZ3RoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYU1lTX3NxcnQoRlhUX1BTVjo6eCAqIEZYVF9QU1Y6OnggKyBGWFRfUFNWOjp5ICogRlhUX1BTVjo6eSk7DQorICAgIH0NCisgICAgdm9pZAkJTm9ybWFsaXplKCkNCisgICAgew0KKyAgICAgICAgRlhfRkxPQVQgZkxlbiA9IEZYU1lTX3NxcnQoRlhUX1BTVjo6eCAqIEZYVF9QU1Y6OnggKyBGWFRfUFNWOjp5ICogRlhUX1BTVjo6eSk7DQorICAgICAgICBGWFNZU19hc3NlcnQoZkxlbiA+PSAwLjAwMDFmKTsNCisgICAgICAgIEZYVF9QU1Y6OnggPSAoKGJhc2VUeXBlKUZYVF9QU1Y6OngpIC8gZkxlbjsNCisgICAgICAgIEZYVF9QU1Y6OnkgPSAoKGJhc2VUeXBlKUZYVF9QU1Y6OnkpIC8gZkxlbjsNCisgICAgfQ0KKyAgICBiYXNlVHlwZQlEb3RQcm9kdWN0KGJhc2VUeXBlIHgsIGJhc2VUeXBlIHkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBGWFRfUFNWOjp4ICogeCArIEZYVF9QU1Y6OnkgKiB5Ow0KKyAgICB9DQorICAgIGJhc2VUeXBlCURvdFByb2R1Y3QoY29uc3QgRlhUX1ZFQ1RPUiAmdikgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYVF9QU1Y6OnggKiB2LnggKyBGWFRfUFNWOjp5ICogdi55Ow0KKyAgICB9DQorICAgIEZYX0JPT0wJCUlzUGFyYWxsZWwoYmFzZVR5cGUgeCwgYmFzZVR5cGUgeSkgY29uc3QNCisgICAgew0KKyAgICAgICAgYmFzZVR5cGUgdCA9IEZYVF9QU1Y6OnggKiB5IC0gRlhUX1BTVjo6eSAqIHg7DQorICAgICAgICByZXR1cm4gRlhTWVNfZmFicyh0KSA8IDB4MDAwMWY7DQorICAgIH0NCisgICAgRlhfQk9PTAkJSXNQYXJhbGxlbChjb25zdCBGWFRfVkVDVE9SICZ2KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gSXNQYXJhbGxlbCh2LngsIHYueSk7DQorICAgIH0NCisgICAgRlhfQk9PTAkJSXNQZXJwZW5kaWN1bGFyKGJhc2VUeXBlIHgsIGJhc2VUeXBlIHkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGJhc2VUeXBlIHQgPSBEb3RQcm9kdWN0KHgsIHkpOw0KKyAgICAgICAgcmV0dXJuIEZYU1lTX2ZhYnModCkgPCAweDAwMDFmOw0KKyAgICB9DQorICAgIEZYX0JPT0wJCUlzUGVycGVuZGljdWxhcihjb25zdCBGWFRfVkVDVE9SICZ2KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gSXNQZXJwZW5kaWN1bGFyKHYueCwgdi55KTsNCisgICAgfQ0KKyAgICB2b2lkCQlUcmFuc2xhdGUoYmFzZVR5cGUgZHgsIGJhc2VUeXBlIGR5KQ0KKyAgICB7DQorICAgICAgICBGWFRfUFNWOjp4ICs9IGR4LCBGWFRfUFNWOjp5ICs9IGR5Ow0KKyAgICB9DQorICAgIHZvaWQJCVNjYWxlKGJhc2VUeXBlIHN4LCBiYXNlVHlwZSBzeSkNCisgICAgew0KKyAgICAgICAgRlhUX1BTVjo6eCAqPSBzeCwgRlhUX1BTVjo6eSAqPSBzeTsNCisgICAgfQ0KKyAgICB2b2lkCQlSb3RhdGUoRlhfRkxPQVQgZlJhZGlhbikNCisgICAgew0KKyAgICAgICAgRlhfRkxPQVQgeHggPSAoRlhfRkxPQVQpRlhUX1BTVjo6eDsNCisgICAgICAgIEZYX0ZMT0FUIHl5ID0gKEZYX0ZMT0FUKUZYVF9QU1Y6Onk7DQorICAgICAgICBGWF9GTE9BVCBjb3NWYWx1ZSA9IEZYU1lTX2NvcyhmUmFkaWFuKTsNCisgICAgICAgIEZYX0ZMT0FUIHNpblZhbHVlID0gRlhTWVNfc2luKGZSYWRpYW4pOw0KKyAgICAgICAgRlhUX1BTVjo6eCA9IHh4ICogY29zVmFsdWUgLSB5eSAqIHNpblZhbHVlOw0KKyAgICAgICAgRlhUX1BTVjo6eSA9IHh4ICogc2luVmFsdWUgKyB5eSAqIGNvc1ZhbHVlOw0KKyAgICB9DQorICAgIGZyaWVuZAlGWF9GTE9BVAlDb3NpbmUoY29uc3QgRlhUX1ZFQ1RPUiAmdjEsIGNvbnN0IEZYVF9WRUNUT1IgJnYyKQ0KKyAgICB7DQorICAgICAgICBGWFNZU19hc3NlcnQodjEuU3F1YXJlTGVuZ3RoKCkgIT0gMCAmJiB2Mi5TcXVhcmVMZW5ndGgoKSAhPSAwKTsNCisgICAgICAgIEZYX0ZMT0FUIGRvdFByb2R1Y3QgPSB2MS5Eb3RQcm9kdWN0KHYyKTsNCisgICAgICAgIHJldHVybiBkb3RQcm9kdWN0IC8gKEZYX0ZMT0FUKUZYU1lTX3NxcnQodjEuU3F1YXJlTGVuZ3RoKCkgKiB2Mi5TcXVhcmVMZW5ndGgoKSk7DQorICAgIH0NCisgICAgZnJpZW5kCUZYX0ZMT0FUCUFyY0Nvc2luZShjb25zdCBGWFRfVkVDVE9SICZ2MSwgY29uc3QgRlhUX1ZFQ1RPUiAmdjIpDQorICAgIHsNCisgICAgICAgIHJldHVybiAoRlhfRkxPQVQpRlhTWVNfYWNvcyhDb3NpbmUodjEsIHYyKSk7DQorICAgIH0NCisgICAgZnJpZW5kCUZYX0ZMT0FUCVNsb3BlQW5nbGUoY29uc3QgRlhUX1ZFQ1RPUiAmdikNCisgICAgew0KKyAgICAgICAgQ0ZYX1ZUZW1wbGF0ZSB2eDsNCisgICAgICAgIHZ4LlNldCgxLCAwKTsNCisgICAgICAgIEZYX0ZMT0FUIGZTbG9wZSA9IEFyY0Nvc2luZSh2LCB2eCk7DQorICAgICAgICByZXR1cm4gdi55IDwgMCA/IC1mU2xvcGUgOiBmU2xvcGU7DQorICAgIH0NCit9Ow0KK3R5cGVkZWYgQ0ZYX1ZUZW1wbGF0ZTxGWF9JTlQzMj4gQ0ZYX1ZlY3RvcjsNCit0eXBlZGVmIENGWF9WVGVtcGxhdGU8RlhfRkxPQVQ+IENGWF9WZWN0b3JGOw0KK3RlbXBsYXRlPGNsYXNzIGJhc2VUeXBlPg0KK2NsYXNzIENGWF9SVGVtcGxhdGU6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgdHlwZWRlZiBDRlhfUFNWVGVtcGxhdGU8YmFzZVR5cGU+CUZYVF9QT0lOVDsNCisgICAgdHlwZWRlZiBDRlhfUFNWVGVtcGxhdGU8YmFzZVR5cGU+CUZYVF9TSVpFOw0KKyAgICB0eXBlZGVmIENGWF9WVGVtcGxhdGU8YmFzZVR5cGU+CQlGWFRfVkVDVE9SOw0KKyAgICB0eXBlZGVmIENGWF9QUkxUZW1wbGF0ZTxiYXNlVHlwZT4JRlhUX1BBUkFMOw0KKyAgICB0eXBlZGVmIENGWF9SVGVtcGxhdGU8YmFzZVR5cGU+CQlGWFRfUkVDVDsNCisgICAgdm9pZAkJU2V0KGJhc2VUeXBlIGxlZnQsIGJhc2VUeXBlIHRvcCwgYmFzZVR5cGUgd2lkdGgsIGJhc2VUeXBlIGhlaWdodCkNCisgICAgew0KKyAgICAgICAgRlhUX1JFQ1Q6OmxlZnQgPSBsZWZ0LCBGWFRfUkVDVDo6dG9wID0gdG9wLCBGWFRfUkVDVDo6d2lkdGggPSB3aWR0aCwgRlhUX1JFQ1Q6OmhlaWdodCA9IGhlaWdodDsNCisgICAgfQ0KKyAgICB2b2lkCQlTZXQoYmFzZVR5cGUgbGVmdCwgYmFzZVR5cGUgdG9wLCBjb25zdCBGWFRfU0laRSAmc2l6ZSkNCisgICAgew0KKyAgICAgICAgRlhUX1JFQ1Q6OmxlZnQgPSBsZWZ0LCBGWFRfUkVDVDo6dG9wID0gdG9wLCBGWFRfUkVDVDo6U2l6ZShzaXplKTsNCisgICAgfQ0KKyAgICB2b2lkCQlTZXQoY29uc3QgRlhUX1BPSU5UICZwLCBiYXNlVHlwZSB3aWR0aCwgYmFzZVR5cGUgaGVpZ2h0KQ0KKyAgICB7DQorICAgICAgICBUb3BMZWZ0KHApLCBGWFRfUkVDVDo6d2lkdGggPSB3aWR0aCwgRlhUX1JFQ1Q6OmhlaWdodCA9IGhlaWdodDsNCisgICAgfQ0KKyAgICB2b2lkCQlTZXQoY29uc3QgRlhUX1BPSU5UICZwMSwgY29uc3QgRlhUX1BPSU5UICZwMikNCisgICAgew0KKyAgICAgICAgVG9wTGVmdChwMSksIEZYVF9SRUNUOjp3aWR0aCA9IHAyLnggLSBwMS54LCBGWFRfUkVDVDo6aGVpZ2h0ID0gcDIueSAtIHAxLnksIEZYVF9SRUNUOjpOb3JtYWxpemUoKTsNCisgICAgfQ0KKyAgICB2b2lkCQlTZXQoY29uc3QgRlhUX1BPSU5UICZwLCBjb25zdCBGWFRfVkVDVE9SICZ2KQ0KKyAgICB7DQorICAgICAgICBUb3BMZWZ0KHApLCBGWFRfUkVDVDo6d2lkdGggPSB2LngsIEZYVF9SRUNUOjpoZWlnaHQgPSB2LnksIEZYVF9SRUNUOjpOb3JtYWxpemUoKTsNCisgICAgfQ0KKyAgICB2b2lkCQlSZXNldCgpDQorICAgIHsNCisgICAgICAgIEZYVF9SRUNUOjpsZWZ0ID0gRlhUX1JFQ1Q6OnRvcCA9IEZYVF9SRUNUOjp3aWR0aCA9IEZYVF9SRUNUOjpoZWlnaHQgPSAwOw0KKyAgICB9DQorICAgIEZYVF9SRUNUJglvcGVyYXRvciArPSAoY29uc3QgRlhUX1BPSU5UICZwKQ0KKyAgICB7DQorICAgICAgICBsZWZ0ICs9IHAueCwgdG9wICs9IHAueTsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICBGWFRfUkVDVCYJb3BlcmF0b3IgLT0gKGNvbnN0IEZYVF9QT0lOVCAmcCkNCisgICAgew0KKyAgICAgICAgbGVmdCAtPSBwLngsIHRvcCAtPSBwLnk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgICAgYmFzZVR5cGUJcmlnaHQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbGVmdCArIHdpZHRoOw0KKyAgICB9DQorICAgIGJhc2VUeXBlCWJvdHRvbSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiB0b3AgKyBoZWlnaHQ7DQorICAgIH0NCisgICAgdm9pZAkJTm9ybWFsaXplKCkNCisgICAgew0KKyAgICAgICAgaWYgKHdpZHRoIDwgMCkgew0KKyAgICAgICAgICAgIGxlZnQgKz0gd2lkdGg7DQorICAgICAgICAgICAgd2lkdGggPSAtd2lkdGg7DQorICAgICAgICB9DQorICAgICAgICBpZiAoaGVpZ2h0IDwgMCkgew0KKyAgICAgICAgICAgIHRvcCArPSBoZWlnaHQ7DQorICAgICAgICAgICAgaGVpZ2h0ID0gLWhlaWdodDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB2b2lkCQlPZmZzZXQoYmFzZVR5cGUgZHgsIGJhc2VUeXBlIGR5KQ0KKyAgICB7DQorICAgICAgICBsZWZ0ICs9IGR4Ow0KKyAgICAgICAgdG9wICs9IGR5Ow0KKyAgICB9DQorICAgIHZvaWQJCUluZmxhdGUoYmFzZVR5cGUgeCwgYmFzZVR5cGUgeSkNCisgICAgew0KKyAgICAgICAgbGVmdCAtPSB4Ow0KKyAgICAgICAgd2lkdGggKz0geCAqIDI7DQorICAgICAgICB0b3AgLT0geTsNCisgICAgICAgIGhlaWdodCArPSB5ICogMjsNCisgICAgfQ0KKyAgICB2b2lkCQlJbmZsYXRlKGNvbnN0IEZYVF9QT0lOVCAmcCkNCisgICAgew0KKyAgICAgICAgSW5mbGF0ZShwLngsIHAueSk7DQorICAgIH0NCisgICAgdm9pZAkJSW5mbGF0ZShiYXNlVHlwZSBsZWZ0LCBiYXNlVHlwZSB0b3AsIGJhc2VUeXBlIHJpZ2h0LCBiYXNlVHlwZSBib3R0b20pDQorICAgIHsNCisgICAgICAgIEZYVF9SRUNUOjpsZWZ0IC09IGxlZnQ7DQorICAgICAgICBGWFRfUkVDVDo6dG9wIC09IHRvcDsNCisgICAgICAgIEZYVF9SRUNUOjp3aWR0aCArPSBsZWZ0ICsgcmlnaHQ7DQorICAgICAgICBGWFRfUkVDVDo6aGVpZ2h0ICs9IHRvcCArIGJvdHRvbTsNCisgICAgfQ0KKyAgICB2b2lkCQlJbmZsYXRlKGNvbnN0IEZYVF9SRUNUICZydCkNCisgICAgew0KKyAgICAgICAgSW5mbGF0ZShydC5sZWZ0LCBydC50b3AsIHJ0LmxlZnQgKyBydC53aWR0aCwgcnQudG9wICsgcnQuaGVpZ2h0KTsNCisgICAgfQ0KKyAgICB2b2lkCQlEZWZsYXRlKGJhc2VUeXBlIHgsIGJhc2VUeXBlIHkpDQorICAgIHsNCisgICAgICAgIGxlZnQgKz0geDsNCisgICAgICAgIHdpZHRoIC09IHggKiAyOw0KKyAgICAgICAgdG9wICs9IHk7DQorICAgICAgICBoZWlnaHQgLT0geSAqIDI7DQorICAgIH0NCisgICAgdm9pZAkJRGVmbGF0ZShjb25zdCBGWFRfUE9JTlQgJnApDQorICAgIHsNCisgICAgICAgIERlZmxhdGUocC54LCBwLnkpOw0KKyAgICB9DQorICAgIHZvaWQJCURlZmxhdGUoYmFzZVR5cGUgbGVmdCwgYmFzZVR5cGUgdG9wLCBiYXNlVHlwZSByaWdodCwgYmFzZVR5cGUgYm90dG9tKQ0KKyAgICB7DQorICAgICAgICBGWFRfUkVDVDo6bGVmdCArPSBsZWZ0Ow0KKyAgICAgICAgRlhUX1JFQ1Q6OnRvcCArPSB0b3A7DQorICAgICAgICBGWFRfUkVDVDo6d2lkdGggLT0gbGVmdCArIHJpZ2h0Ow0KKyAgICAgICAgRlhUX1JFQ1Q6OmhlaWdodCAtPSB0b3AgKyBib3R0b207DQorICAgIH0NCisgICAgdm9pZAkJRGVmbGF0ZShjb25zdCBGWFRfUkVDVCAmcnQpDQorICAgIHsNCisgICAgICAgIERlZmxhdGUocnQubGVmdCwgcnQudG9wLCBydC50b3AgKyBydC53aWR0aCwgcnQudG9wICsgcnQuaGVpZ2h0KTsNCisgICAgfQ0KKyAgICBGWF9CT09MCQlJc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDA7DQorICAgIH0NCisgICAgRlhfQk9PTAkJSXNFbXB0eShGWF9GTE9BVCBmRXBzaWxvbikgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHdpZHRoIDw9IGZFcHNpbG9uIHx8IGhlaWdodCA8PSBmRXBzaWxvbjsNCisgICAgfQ0KKyAgICB2b2lkCQlFbXB0eSgpDQorICAgIHsNCisgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gMDsNCisgICAgfQ0KKyAgICBGWF9CT09MCQlDb250YWlucyhiYXNlVHlwZSB4LCBiYXNlVHlwZSB5KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4geCA+PSBsZWZ0ICYmIHggPCBsZWZ0ICsgd2lkdGggJiYgeSA+PSB0b3AgJiYgeSA8IHRvcCArIGhlaWdodDsNCisgICAgfQ0KKyAgICBGWF9CT09MCQlDb250YWlucyhjb25zdCBGWFRfUE9JTlQgJnApIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBDb250YWlucyhwLngsIHAueSk7DQorICAgIH0NCisgICAgRlhfQk9PTAkJQ29udGFpbnMoY29uc3QgRlhUX1JFQ1QgJnJ0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gcnQubGVmdCA+PSBsZWZ0ICYmIHJ0LnJpZ2h0KCkgPD0gcmlnaHQoKSAmJiBydC50b3AgPj0gdG9wICYmIHJ0LmJvdHRvbSgpIDw9IGJvdHRvbSgpOw0KKyAgICB9DQorICAgIGJhc2VUeXBlCVdpZHRoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHdpZHRoOw0KKyAgICB9DQorICAgIGJhc2VUeXBlCUhlaWdodCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBoZWlnaHQ7DQorICAgIH0NCisgICAgRlhUX1NJWkUJU2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEZYVF9TSVpFIHNpemU7DQorICAgICAgICBzaXplLlNldCh3aWR0aCwgaGVpZ2h0KTsNCisgICAgICAgIHJldHVybiBzaXplOw0KKyAgICB9DQorICAgIHZvaWQJCVNpemUoRlhUX1NJWkUgcykNCisgICAgew0KKyAgICAgICAgd2lkdGggPSBzLngsIGhlaWdodCA9IHMueTsNCisgICAgfQ0KKyAgICBGWFRfUE9JTlQJVG9wTGVmdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEZYVF9QT0lOVCBwOw0KKyAgICAgICAgcC54ID0gbGVmdDsNCisgICAgICAgIHAueSA9IHRvcDsNCisgICAgICAgIHJldHVybiBwOw0KKyAgICB9DQorICAgIEZYVF9QT0lOVAlUb3BSaWdodCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEZYVF9QT0lOVCBwOw0KKyAgICAgICAgcC54ID0gbGVmdCArIHdpZHRoOw0KKyAgICAgICAgcC55ID0gdG9wOw0KKyAgICAgICAgcmV0dXJuIHA7DQorICAgIH0NCisgICAgRlhUX1BPSU5UCUJvdHRvbUxlZnQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBGWFRfUE9JTlQgcDsNCisgICAgICAgIHAueCA9IGxlZnQ7DQorICAgICAgICBwLnkgPSB0b3AgKyBoZWlnaHQ7DQorICAgICAgICByZXR1cm4gcDsNCisgICAgfQ0KKyAgICBGWFRfUE9JTlQJQm90dG9tUmlnaHQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBGWFRfUE9JTlQgcDsNCisgICAgICAgIHAueCA9IGxlZnQgKyB3aWR0aDsNCisgICAgICAgIHAueSA9IHRvcCArIGhlaWdodDsNCisgICAgICAgIHJldHVybiBwOw0KKyAgICB9DQorICAgIHZvaWQJCVRvcExlZnQoRlhUX1BPSU5UIHRsKQ0KKyAgICB7DQorICAgICAgICBsZWZ0ID0gdGwueDsNCisgICAgICAgIHRvcCA9IHRsLnk7DQorICAgIH0NCisgICAgdm9pZAkJVG9wUmlnaHQoRlhUX1BPSU5UIHRyKQ0KKyAgICB7DQorICAgICAgICB3aWR0aCA9IHRyLnggLSBsZWZ0Ow0KKyAgICAgICAgdG9wID0gdHIueTsNCisgICAgfQ0KKyAgICB2b2lkCQlCb3R0b21MZWZ0KEZYVF9QT0lOVCBibCkNCisgICAgew0KKyAgICAgICAgbGVmdCA9IGJsLng7DQorICAgICAgICBoZWlnaHQgPSBibC55IC0gdG9wOw0KKyAgICB9DQorICAgIHZvaWQJCUJvdHRvbVJpZ2h0KEZYVF9QT0lOVCBicikNCisgICAgew0KKyAgICAgICAgd2lkdGggPSBici54IC0gbGVmdDsNCisgICAgICAgIGhlaWdodCA9IGJyLnkgLSB0b3A7DQorICAgIH0NCisgICAgRlhUX1BPSU5UCUNlbnRlcigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEZYVF9QT0lOVCBwOw0KKyAgICAgICAgcC54ID0gbGVmdCArIHdpZHRoIC8gMjsNCisgICAgICAgIHAueSA9IHRvcCArIGhlaWdodCAvIDI7DQorICAgICAgICByZXR1cm4gcDsNCisgICAgfQ0KKyAgICB2b2lkCQlHZXRQYXJhbGxlbG9ncmFtKEZYVF9QQVJBTCAmcGcpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHBnLnggPSBsZWZ0LCBwZy55ID0gdG9wOw0KKyAgICAgICAgcGcueDEgPSB3aWR0aCwgcGcueTEgPSAwOw0KKyAgICAgICAgcGcueDIgPSAwLCBwZy55MiA9IGhlaWdodDsNCisgICAgfQ0KKyAgICB2b2lkCQlVbmlvbihiYXNlVHlwZSB4LCBiYXNlVHlwZSB5KQ0KKyAgICB7DQorICAgICAgICBiYXNlVHlwZSByID0gcmlnaHQoKSwgYiA9IGJvdHRvbSgpOw0KKyAgICAgICAgaWYgKGxlZnQgPiB4KSB7DQorICAgICAgICAgICAgbGVmdCA9IHg7DQorICAgICAgICB9DQorICAgICAgICBpZiAociA8IHgpIHsNCisgICAgICAgICAgICByID0geDsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh0b3AgPiB5KSB7DQorICAgICAgICAgICAgdG9wID0geTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChiIDwgeSkgew0KKyAgICAgICAgICAgIGIgPSB5Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgd2lkdGggPSByIC0gbGVmdDsNCisgICAgICAgIGhlaWdodCA9IGIgLSB0b3A7DQorICAgIH0NCisgICAgdm9pZAkJVW5pb24oY29uc3QgRlhUX1BPSU5UICZwKQ0KKyAgICB7DQorICAgICAgICBVbmlvbihwLngsIHAueSk7DQorICAgIH0NCisgICAgdm9pZAkJVW5pb24oY29uc3QgRlhUX1JFQ1QgJnJ0KQ0KKyAgICB7DQorICAgICAgICBiYXNlVHlwZSByID0gcmlnaHQoKSwgYiA9IGJvdHRvbSgpOw0KKyAgICAgICAgaWYgKGxlZnQgPiBydC5sZWZ0KSB7DQorICAgICAgICAgICAgbGVmdCA9IHJ0LmxlZnQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAociA8IHJ0LnJpZ2h0KCkpIHsNCisgICAgICAgICAgICByID0gcnQucmlnaHQoKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh0b3AgPiBydC50b3ApIHsNCisgICAgICAgICAgICB0b3AgPSBydC50b3A7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYiA8IHJ0LmJvdHRvbSgpKSB7DQorICAgICAgICAgICAgYiA9IHJ0LmJvdHRvbSgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgd2lkdGggPSByIC0gbGVmdDsNCisgICAgICAgIGhlaWdodCA9IGIgLSB0b3A7DQorICAgIH0NCisgICAgdm9pZAkJSW50ZXJzZWN0KGNvbnN0IEZYVF9SRUNUICZydCkNCisgICAgew0KKyAgICAgICAgYmFzZVR5cGUgciA9IHJpZ2h0KCksIGIgPSBib3R0b20oKTsNCisgICAgICAgIGlmIChsZWZ0IDwgcnQubGVmdCkgew0KKyAgICAgICAgICAgIGxlZnQgPSBydC5sZWZ0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHIgPiBydC5yaWdodCgpKSB7DQorICAgICAgICAgICAgciA9IHJ0LnJpZ2h0KCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAodG9wIDwgcnQudG9wKSB7DQorICAgICAgICAgICAgdG9wID0gcnQudG9wOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGIgPiBydC5ib3R0b20oKSkgew0KKyAgICAgICAgICAgIGIgPSBydC5ib3R0b20oKTsNCisgICAgICAgIH0NCisgICAgICAgIHdpZHRoID0gciAtIGxlZnQ7DQorICAgICAgICBoZWlnaHQgPSBiIC0gdG9wOw0KKyAgICB9DQorICAgIEZYX0JPT0wJCUludGVyc2VjdFdpdGgoY29uc3QgRlhUX1JFQ1QgJnJ0KSBjb25zdA0KKyAgICB7DQorICAgICAgICBGWFRfUkVDVCByZWN0ID0gcnQ7DQorICAgICAgICByZWN0LkludGVyc2VjdCgqdGhpcyk7DQorICAgICAgICByZXR1cm4gIXJlY3QuSXNFbXB0eSgpOw0KKyAgICB9DQorICAgIEZYX0JPT0wJCUludGVyc2VjdFdpdGgoY29uc3QgRlhUX1JFQ1QgJnJ0LCBGWF9GTE9BVCBmRXBzaWxvbikgY29uc3QNCisgICAgew0KKyAgICAgICAgRlhUX1JFQ1QgcmVjdCA9IHJ0Ow0KKyAgICAgICAgcmVjdC5JbnRlcnNlY3QoKnRoaXMpOw0KKyAgICAgICAgcmV0dXJuICFyZWN0LklzRW1wdHkoZkVwc2lsb24pOw0KKyAgICB9DQorICAgIGZyaWVuZAlGWF9CT09MCW9wZXJhdG9yID09IChjb25zdCBGWFRfUkVDVCAmcmMxLCBjb25zdCBGWFRfUkVDVCAmcmMyKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gcmMxLmxlZnQgPT0gcmMyLmxlZnQgJiYgcmMxLnRvcCA9PSByYzIudG9wICYmIHJjMS53aWR0aCA9PSByYzIud2lkdGggJiYgcmMxLmhlaWdodCA9PSByYzIuaGVpZ2h0Ow0KKyAgICB9DQorICAgIGZyaWVuZAlGWF9CT09MCW9wZXJhdG9yICE9IChjb25zdCBGWFRfUkVDVCAmcmMxLCBjb25zdCBGWFRfUkVDVCAmcmMyKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gcmMxLmxlZnQgIT0gcmMyLmxlZnQgfHwgcmMxLnRvcCAhPSByYzIudG9wIHx8IHJjMS53aWR0aCAhPSByYzIud2lkdGggfHwgcmMxLmhlaWdodCAhPSByYzIuaGVpZ2h0Ow0KKyAgICB9DQorICAgIGJhc2VUeXBlIGxlZnQsIHRvcDsNCisgICAgYmFzZVR5cGUgd2lkdGgsIGhlaWdodDsNCit9Ow0KK3R5cGVkZWYgQ0ZYX1JUZW1wbGF0ZTxGWF9JTlQzMj4JCQlDRlhfUmVjdDsNCit0eXBlZGVmIENGWF9SVGVtcGxhdGU8RlhfRkxPQVQ+CQkJQ0ZYX1JlY3RGOw0KK3R5cGVkZWYgQ0ZYX1JUZW1wbGF0ZTxGWF9JTlQzMj4gKgkJRlhfTFBSRUNUOw0KK3R5cGVkZWYgQ0ZYX1JUZW1wbGF0ZTxGWF9GTE9BVD4gKgkJRlhfTFBSRUNURjsNCit0eXBlZGVmIENGWF9SVGVtcGxhdGU8RlhfSU5UMzI+IGNvbnN0ICoJRlhfTFBDUkVDVDsNCit0eXBlZGVmIENGWF9SVGVtcGxhdGU8RlhfRkxPQVQ+IGNvbnN0ICoJRlhfTFBDUkVDVEY7DQordHlwZWRlZiBDRlhfQXJyYXlUZW1wbGF0ZTxDRlhfUmVjdEY+CUNGWF9SZWN0RkFycmF5Ow0KK3N0cnVjdCBGWF9SRUNUIHsNCisNCisgICAgaW50CQkJbGVmdDsNCisNCisgICAgaW50CQkJdG9wOw0KKw0KKyAgICBpbnQJCQlyaWdodDsNCisNCisgICAgaW50CQkJYm90dG9tOw0KKw0KKyAgICBGWF9SRUNUKCkge30NCisNCisgICAgRlhfUkVDVChpbnQgbGVmdDEsIGludCB0b3AxLCBpbnQgcmlnaHQxLCBpbnQgYm90dG9tMSkNCisgICAgew0KKyAgICAgICAgbGVmdCA9IGxlZnQxOw0KKyAgICAgICAgdG9wID0gdG9wMTsNCisgICAgICAgIHJpZ2h0ID0gcmlnaHQxOw0KKyAgICAgICAgYm90dG9tID0gYm90dG9tMTsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQlXaWR0aCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiByaWdodCAtIGxlZnQ7DQorICAgIH0NCisNCisgICAgaW50CQkJSGVpZ2h0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIGJvdHRvbSAtIHRvcDsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQlJc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHJpZ2h0IDw9IGxlZnQgfHwgYm90dG9tIDw9IHRvcDsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQlOb3JtYWxpemUoKTsNCisNCisgICAgdm9pZAkJSW50ZXJzZWN0KGNvbnN0IEZYX1JFQ1QmIHNyYyk7DQorDQorICAgIHZvaWQJCUludGVyc2VjdChpbnQgbGVmdDEsIGludCB0b3AxLCBpbnQgcmlnaHQxLCBpbnQgYm90dG9tMSkNCisgICAgew0KKyAgICAgICAgSW50ZXJzZWN0KEZYX1JFQ1QobGVmdDEsIHRvcDEsIHJpZ2h0MSwgYm90dG9tMSkpOw0KKyAgICB9DQorDQorICAgIHZvaWQJCVVuaW9uKGNvbnN0IEZYX1JFQ1QmIG90aGVyX3JlY3QpOw0KKw0KKyAgICBGWF9CT09MCQlvcGVyYXRvciA9PSAoY29uc3QgRlhfUkVDVCYgc3JjKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbGVmdCA9PSBzcmMubGVmdCAmJiByaWdodCA9PSBzcmMucmlnaHQgJiYgdG9wID09IHNyYy50b3AgJiYgYm90dG9tID09IHNyYy5ib3R0b207DQorICAgIH0NCisNCisgICAgdm9pZAkJT2Zmc2V0KGludCBkeCwgaW50IGR5KQ0KKyAgICB7DQorICAgICAgICBsZWZ0ICs9IGR4Ow0KKyAgICAgICAgcmlnaHQgKz0gZHg7DQorICAgICAgICB0b3AgKz0gZHk7DQorICAgICAgICBib3R0b20gKz0gZHk7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJQ29udGFpbnMoY29uc3QgRlhfUkVDVCYgb3RoZXJfcmVjdCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG90aGVyX3JlY3QubGVmdCA+PSBsZWZ0ICYmIG90aGVyX3JlY3QucmlnaHQgPD0gcmlnaHQgJiYgb3RoZXJfcmVjdC50b3AgPj0gdG9wICYmIG90aGVyX3JlY3QuYm90dG9tIDw9IGJvdHRvbTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQlDb250YWlucyhpbnQgeCwgaW50IHkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiB4ID49IGxlZnQgJiYgeCA8IHJpZ2h0ICYmIHkgPj0gdG9wICYmIHkgPCBib3R0b207DQorICAgIH0NCit9Ow0KK3N0cnVjdCBGWF9TTUFMTF9SRUNUIHsNCisNCisgICAgRlhfU0hPUlQJTGVmdDsNCisNCisgICAgRlhfU0hPUlQJVG9wOw0KKw0KKyAgICBGWF9TSE9SVAlSaWdodDsNCisNCisgICAgRlhfU0hPUlQJQm90dG9tOw0KK307DQorY2xhc3MgQ0ZYX0Zsb2F0UmVjdCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX0Zsb2F0UmVjdCgpDQorICAgIHsNCisgICAgICAgIGxlZnQgPSByaWdodCA9IGJvdHRvbSA9IHRvcCA9IDA7DQorICAgIH0NCisNCisgICAgQ0ZYX0Zsb2F0UmVjdChGWF9GTE9BVCBsZWZ0MSwgRlhfRkxPQVQgYm90dG9tMSwgRlhfRkxPQVQgcmlnaHQxLCBGWF9GTE9BVCB0b3AxKQ0KKyAgICB7DQorICAgICAgICBsZWZ0ID0gbGVmdDE7DQorICAgICAgICBib3R0b20gPSBib3R0b20xOw0KKyAgICAgICAgcmlnaHQgPSByaWdodDE7DQorICAgICAgICB0b3AgPSB0b3AxOw0KKyAgICB9DQorDQorICAgIENGWF9GbG9hdFJlY3QoY29uc3QgRlhfRkxPQVQqIHBBcnJheSkNCisgICAgew0KKyAgICAgICAgbGVmdCA9IHBBcnJheVswXTsNCisgICAgICAgIGJvdHRvbSA9IHBBcnJheVsxXTsNCisgICAgICAgIHJpZ2h0ID0gcEFycmF5WzJdOw0KKyAgICAgICAgdG9wID0gcEFycmF5WzNdOw0KKyAgICB9DQorDQorICAgIENGWF9GbG9hdFJlY3QoY29uc3QgRlhfUkVDVCYgcmVjdCk7DQorDQorICAgIEZYX0JPT0wJCQkJSXNFbXB0eSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBsZWZ0ID49IHJpZ2h0IHx8IGJvdHRvbSA+PSB0b3A7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlOb3JtYWxpemUoKTsNCisNCisgICAgdm9pZAkJCQlSZXNldCgpDQorICAgIHsNCisgICAgICAgIGxlZnQgPSByaWdodCA9IGJvdHRvbSA9IHRvcCA9IDA7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQlDb250YWlucyhjb25zdCBDRlhfRmxvYXRSZWN0JiBvdGhlcl9yZWN0KSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCQlDb250YWlucyhGWF9GTE9BVCB4LCBGWF9GTE9BVCB5KSBjb25zdDsNCisNCisgICAgdm9pZAkJCQlUcmFuc2Zvcm0oY29uc3QgQ0ZYX01hdHJpeCogcE1hdHJpeCk7DQorDQorICAgIHZvaWQJCQkJSW50ZXJzZWN0KGNvbnN0IENGWF9GbG9hdFJlY3QmIG90aGVyX3JlY3QpOw0KKw0KKyAgICB2b2lkCQkJCVVuaW9uKGNvbnN0IENGWF9GbG9hdFJlY3QmIG90aGVyX3JlY3QpOw0KKw0KKyAgICBGWF9SRUNUCQkJCUdldElubmVyUmVjdCgpIGNvbnN0Ow0KKw0KKyAgICBGWF9SRUNUCQkJCUdldE91dHRlclJlY3QoKSBjb25zdDsNCisNCisgICAgRlhfUkVDVAkJCQlHZXRDbG9zZXN0UmVjdCgpIGNvbnN0Ow0KKw0KKyAgICBpbnQJCQkJCVN1YnN0cmFjdDQoQ0ZYX0Zsb2F0UmVjdCYgc3Vic3RyYWN0X3JlY3QsIENGWF9GbG9hdFJlY3QqIHBSZWN0cyk7DQorDQorICAgIHZvaWQJCQkJSW5pdFJlY3QoRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSkNCisgICAgew0KKyAgICAgICAgbGVmdCA9IHJpZ2h0ID0geDsNCisgICAgICAgIGJvdHRvbSA9IHRvcCA9IHk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlVcGRhdGVSZWN0KEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHkpOw0KKw0KKyAgICBGWF9GTE9BVAkJCVdpZHRoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHJpZ2h0IC0gbGVmdDsNCisgICAgfQ0KKw0KKyAgICBGWF9GTE9BVAkJCUhlaWdodCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiB0b3AgLSBib3R0b207DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlJbmZsYXRlKEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHkpDQorICAgIHsNCisgICAgICAgIE5vcm1hbGl6ZSgpOw0KKyAgICAgICAgbGVmdCAtPSB4Ow0KKyAgICAgICAgcmlnaHQgKz0geDsNCisgICAgICAgIGJvdHRvbSAtPSB5Ow0KKyAgICAgICAgdG9wICs9IHk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlJbmZsYXRlKEZYX0ZMT0FUIGxlZnQsIEZYX0ZMT0FUIGJvdHRvbSwgRlhfRkxPQVQgcmlnaHQsIEZYX0ZMT0FUIHRvcCkNCisgICAgew0KKyAgICAgICAgTm9ybWFsaXplKCk7DQorICAgICAgICB0aGlzLT5sZWZ0IC09IGxlZnQ7DQorICAgICAgICB0aGlzLT5ib3R0b20gLT0gYm90dG9tOw0KKyAgICAgICAgdGhpcy0+cmlnaHQgKz0gcmlnaHQ7DQorICAgICAgICB0aGlzLT50b3AgKz0gdG9wOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJSW5mbGF0ZShjb25zdCBDRlhfRmxvYXRSZWN0ICZydCkNCisgICAgew0KKyAgICAgICAgSW5mbGF0ZShydC5sZWZ0LCBydC5ib3R0b20sIHJ0LnJpZ2h0LCBydC50b3ApOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJRGVmbGF0ZShGWF9GTE9BVCB4LCBGWF9GTE9BVCB5KQ0KKyAgICB7DQorICAgICAgICBOb3JtYWxpemUoKTsNCisgICAgICAgIGxlZnQgKz0geDsNCisgICAgICAgIHJpZ2h0IC09IHg7DQorICAgICAgICBib3R0b20gKz0geTsNCisgICAgICAgIHRvcCAtPSB5Ow0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJRGVmbGF0ZShGWF9GTE9BVCBsZWZ0LCBGWF9GTE9BVCBib3R0b20sIEZYX0ZMT0FUIHJpZ2h0LCBGWF9GTE9BVCB0b3ApDQorICAgIHsNCisgICAgICAgIE5vcm1hbGl6ZSgpOw0KKyAgICAgICAgdGhpcy0+bGVmdCArPSBsZWZ0Ow0KKyAgICAgICAgdGhpcy0+Ym90dG9tICs9IGJvdHRvbTsNCisgICAgICAgIHRoaXMtPnJpZ2h0IC09IHJpZ2h0Ow0KKyAgICAgICAgdGhpcy0+dG9wIC09IHRvcDsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCURlZmxhdGUoY29uc3QgQ0ZYX0Zsb2F0UmVjdCAmcnQpDQorICAgIHsNCisgICAgICAgIERlZmxhdGUocnQubGVmdCwgcnQuYm90dG9tLCBydC5yaWdodCwgcnQudG9wKTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCVRyYW5zbGF0ZShGWF9GTE9BVCBlLCBGWF9GTE9BVCBmKQ0KKyAgICB7DQorICAgICAgICBsZWZ0ICs9IGU7DQorICAgICAgICByaWdodCArPSBlOw0KKyAgICAgICAgdG9wICs9IGY7DQorICAgICAgICBib3R0b20gKz0gZjsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgQ0ZYX0Zsb2F0UmVjdAlHZXRCQm94KGNvbnN0IENGWF9GbG9hdFBvaW50KiBwUG9pbnRzLCBpbnQgblBvaW50cyk7DQorDQorICAgIEZYX0ZMT0FUCQkJbGVmdDsNCisNCisgICAgRlhfRkxPQVQJCQlyaWdodDsNCisNCisgICAgRlhfRkxPQVQJCQlib3R0b207DQorDQorICAgIEZYX0ZMT0FUCQkJdG9wOw0KK307DQorY2xhc3MgQ0ZYX01hdHJpeCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX01hdHJpeCgpDQorICAgIHsNCisgICAgICAgIGEgPSBkID0gMTsNCisgICAgICAgIGIgPSBjID0gZSA9IGYgPSAwOw0KKyAgICB9DQorDQorICAgIENGWF9NYXRyaXgoRlhfRkxPQVQgYTEsIEZYX0ZMT0FUIGIxLCBGWF9GTE9BVCBjMSwgRlhfRkxPQVQgZDEsIEZYX0ZMT0FUIGUxLCBGWF9GTE9BVCBmMSkNCisgICAgew0KKyAgICAgICAgYSA9IGExOw0KKyAgICAgICAgYiA9IGIxOw0KKyAgICAgICAgYyA9IGMxOw0KKyAgICAgICAgZCA9IGQxOw0KKyAgICAgICAgZSA9IGUxOw0KKyAgICAgICAgZiA9IGYxOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQlTZXQoRlhfRkxPQVQgYSwgRlhfRkxPQVQgYiwgRlhfRkxPQVQgYywgRlhfRkxPQVQgZCwgRlhfRkxPQVQgZSwgRlhfRkxPQVQgZik7DQorICAgIHZvaWQJCQlTZXQoY29uc3QgRlhfRkxPQVQgbls2XSk7DQorDQorICAgIHZvaWQJCQlTZXRJZGVudGl0eSgpDQorICAgIHsNCisgICAgICAgIGEgPSBkID0gMTsNCisgICAgICAgIGIgPSBjID0gZSA9IGYgPSAwOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQlTZXRSZXZlcnNlKGNvbnN0IENGWF9NYXRyaXggJm0pOw0KKw0KKyAgICB2b2lkCQkJQ29uY2F0KEZYX0ZMT0FUIGEsIEZYX0ZMT0FUIGIsIEZYX0ZMT0FUIGMsIEZYX0ZMT0FUIGQsIEZYX0ZMT0FUIGUsIEZYX0ZMT0FUIGYsIEZYX0JPT0wgYlByZXBlbmRlZCA9IEZBTFNFKTsNCisNCisgICAgdm9pZAkJCUNvbmNhdChjb25zdCBDRlhfTWF0cml4ICZtLCBGWF9CT09MIGJQcmVwZW5kZWQgPSBGQUxTRSk7DQorDQorICAgIHZvaWQJCQlDb25jYXRJbnZlcnNlKGNvbnN0IENGWF9NYXRyaXgmIG0sIEZYX0JPT0wgYlByZXBlbmRlZCA9IEZBTFNFKTsNCisgICAgdm9pZAkJCVJlc2V0KCkNCisgICAgew0KKyAgICAgICAgU2V0SWRlbnRpdHkoKTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJQ29weShjb25zdCBDRlhfTWF0cml4JiBtKQ0KKyAgICB7DQorICAgICAgICAqdGhpcyA9IG07DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCUlzSWRlbnRpdHkoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gYSA9PSAxICYmIGIgPT0gMCAmJiBjID09IDAgJiYgZCA9PSAxICYmIGUgPT0gMCAmJiBmID09IDA7DQorICAgIH0NCisgICAgRlhfQk9PTAkJCUlzSW52ZXJ0aWJsZSgpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MCQkJSXM5MFJvdGF0ZWQoKSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCUlzU2NhbGVkKCkgY29uc3Q7DQorDQorICAgIHZvaWQJCQlUcmFuc2xhdGUoRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSwgRlhfQk9PTCBiUHJlcGVuZGVkID0gRkFMU0UpOw0KKw0KKyAgICB2b2lkCQkJVHJhbnNsYXRlSShGWF9JTlQzMiB4LCBGWF9JTlQzMiB5LCBGWF9CT09MIGJQcmVwZW5kZWQgPSBGQUxTRSkNCisgICAgew0KKyAgICAgICAgVHJhbnNsYXRlKChGWF9GTE9BVCl4LCAoRlhfRkxPQVQpeSwgYlByZXBlbmRlZCk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCVNjYWxlKEZYX0ZMT0FUIHN4LCBGWF9GTE9BVCBzeSwgRlhfQk9PTCBiUHJlcGVuZGVkID0gRkFMU0UpOw0KKw0KKyAgICB2b2lkCQkJUm90YXRlKEZYX0ZMT0FUIGZSYWRpYW4sIEZYX0JPT0wgYlByZXBlbmRlZCA9IEZBTFNFKTsNCisNCisgICAgdm9pZAkJCVJvdGF0ZUF0KEZYX0ZMT0FUIGZSYWRpYW4sIEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHksIEZYX0JPT0wgYlByZXBlbmRlZCA9IEZBTFNFKTsNCisNCisgICAgdm9pZAkJCVNoZWFyKEZYX0ZMT0FUIGZBbHBoYVJhZGlhbiwgRlhfRkxPQVQgZkJldGFSYWRpYW4sIEZYX0JPT0wgYlByZXBlbmRlZCA9IEZBTFNFKTsNCisNCisgICAgdm9pZAkJCU1hdGNoUmVjdChjb25zdCBDRlhfRmxvYXRSZWN0ICZkZXN0LCBjb25zdCBDRlhfRmxvYXRSZWN0ICZzcmMpOw0KKw0KKyAgICBGWF9GTE9BVAkJR2V0WFVuaXQoKSBjb25zdDsNCisNCisgICAgRlhfRkxPQVQJCUdldFlVbml0KCkgY29uc3Q7DQorICAgIHZvaWQJCQlHZXRVbml0UmVjdChDRlhfUmVjdEYgJnJlY3QpIGNvbnN0Ow0KKw0KKyAgICBDRlhfRmxvYXRSZWN0CUdldFVuaXRSZWN0KCkgY29uc3Q7DQorDQorICAgIEZYX0ZMT0FUCQlHZXRVbml0QXJlYSgpIGNvbnN0Ow0KKyAgICBGWF9GTE9BVAkJVHJhbnNmb3JtWERpc3RhbmNlKEZYX0ZMT0FUIGR4KSBjb25zdDsNCisgICAgRlhfSU5UMzIJCVRyYW5zZm9ybVhEaXN0YW5jZShGWF9JTlQzMiBkeCkgY29uc3Q7DQorICAgIEZYX0ZMT0FUCQlUcmFuc2Zvcm1ZRGlzdGFuY2UoRlhfRkxPQVQgZHkpIGNvbnN0Ow0KKyAgICBGWF9JTlQzMgkJVHJhbnNmb3JtWURpc3RhbmNlKEZYX0lOVDMyIGR5KSBjb25zdDsNCisgICAgRlhfRkxPQVQJCVRyYW5zZm9ybURpc3RhbmNlKEZYX0ZMT0FUIGR4LCBGWF9GTE9BVCBkeSkgY29uc3Q7DQorICAgIEZYX0lOVDMyCQlUcmFuc2Zvcm1EaXN0YW5jZShGWF9JTlQzMiBkeCwgRlhfSU5UMzIgZHkpIGNvbnN0Ow0KKw0KKyAgICBGWF9GTE9BVAkJVHJhbnNmb3JtRGlzdGFuY2UoRlhfRkxPQVQgZGlzdGFuY2UpIGNvbnN0Ow0KKyAgICB2b2lkCQkJVHJhbnNmb3JtUG9pbnQoRlhfRkxPQVQgJngsIEZYX0ZMT0FUICZ5KSBjb25zdDsNCisgICAgdm9pZAkJCVRyYW5zZm9ybVBvaW50KEZYX0lOVDMyICZ4LCBGWF9JTlQzMiAmeSkgY29uc3Q7DQorICAgIHZvaWQJCQlUcmFuc2Zvcm1Qb2ludHMoQ0ZYX1BvaW50RiAqcG9pbnRzLCBGWF9JTlQzMiBpQ291bnQpIGNvbnN0Ow0KKyAgICB2b2lkCQkJVHJhbnNmb3JtUG9pbnRzKENGWF9Qb2ludCAqcG9pbnRzLCBGWF9JTlQzMiBpQ291bnQpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJVHJhbnNmb3JtKEZYX0ZMT0FUJiB4LCBGWF9GTE9BVCYgeSkgY29uc3QNCisgICAgew0KKyAgICAgICAgVHJhbnNmb3JtUG9pbnQoeCwgeSk7DQorICAgIH0NCisNCisgICAgdm9pZAkJCVRyYW5zZm9ybShGWF9GTE9BVCB4LCBGWF9GTE9BVCB5LCBGWF9GTE9BVCYgeDEsIEZYX0ZMT0FUJiB5MSkgY29uc3QNCisgICAgew0KKyAgICAgICAgeDEgPSB4LCB5MSA9IHk7DQorICAgICAgICBUcmFuc2Zvcm1Qb2ludCh4MSwgeTEpOw0KKyAgICB9DQorICAgIHZvaWQJCQlUcmFuc2Zvcm1WZWN0b3IoQ0ZYX1ZlY3RvckYgJnYpIGNvbnN0Ow0KKyAgICB2b2lkCQkJVHJhbnNmb3JtVmVjdG9yKENGWF9WZWN0b3IgJnYpIGNvbnN0Ow0KKyAgICB2b2lkCQkJVHJhbnNmb3JtUmVjdChDRlhfUmVjdEYgJnJlY3QpIGNvbnN0Ow0KKyAgICB2b2lkCQkJVHJhbnNmb3JtUmVjdChDRlhfUmVjdCAmcmVjdCkgY29uc3Q7DQorDQorICAgIHZvaWQJCQlUcmFuc2Zvcm1SZWN0KEZYX0ZMT0FUJiBsZWZ0LCBGWF9GTE9BVCYgcmlnaHQsIEZYX0ZMT0FUJiB0b3AsIEZYX0ZMT0FUJiBib3R0b20pIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJVHJhbnNmb3JtUmVjdChDRlhfRmxvYXRSZWN0JiByZWN0KSBjb25zdA0KKyAgICB7DQorICAgICAgICBUcmFuc2Zvcm1SZWN0KHJlY3QubGVmdCwgcmVjdC5yaWdodCwgcmVjdC50b3AsIHJlY3QuYm90dG9tKTsNCisgICAgfQ0KKw0KKyAgICBGWF9GTE9BVAkJR2V0QSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBhOw0KKyAgICB9DQorDQorICAgIEZYX0ZMT0FUCQlHZXRCKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIGI7DQorICAgIH0NCisNCisgICAgRlhfRkxPQVQJCUdldEMoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gYzsNCisgICAgfQ0KKw0KKyAgICBGWF9GTE9BVAkJR2V0RCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBkOw0KKyAgICB9DQorDQorICAgIEZYX0ZMT0FUCQlHZXRFKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIGU7DQorICAgIH0NCisNCisgICAgRlhfRkxPQVQJCUdldEYoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gZjsNCisgICAgfQ0KK3B1YmxpYzoNCisgICAgRlhfRkxPQVQgYTsNCisgICAgRlhfRkxPQVQgYjsNCisgICAgRlhfRkxPQVQgYzsNCisgICAgRlhfRkxPQVQgZDsNCisgICAgRlhfRkxPQVQgZTsNCisgICAgRlhfRkxPQVQgZjsNCit9Ow0KKyNkZWZpbmUgQ0ZYX0FmZmluZU1hdHJpeAlDRlhfTWF0cml4DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X2V4dC5oIGIvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X2V4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZGJmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfZXh0LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYQ1JUX0VYVEVOU0lPTl8NCisjZGVmaW5lIF9GWENSVF9FWFRFTlNJT05fDQorI2lmbmRlZiBfRlhfQkFTSUNfSF8NCisjaW5jbHVkZSAiZnhfYmFzaWMuaCINCisjZW5kaWYNCisjaWZuZGVmIF9GWENSVF9DT09SRElOQVRFU18NCisjaW5jbHVkZSAiZnhfY29vcmRpbmF0ZXMuaCINCisjZW5kaWYNCisjaWZuZGVmIF9GWF9YTUxfSF8NCisjaW5jbHVkZSAiZnhfeG1sLmgiDQorI2VuZGlmDQorI2lmbmRlZiBfRlhfVU5JQ09ERV8NCisjaW5jbHVkZSAiZnhfdWNkLmgiDQorI2VuZGlmDQorI2lmbmRlZiBfRlhfQVJBQklDXw0KKyNpbmNsdWRlICJmeF9hcmIuaCINCisjZW5kaWYNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisNCitGWF9GTE9BVAkJRlhTWVNfdGFuKEZYX0ZMT0FUIGEpOw0KK0ZYX0ZMT0FUCQlGWFNZU19sb2diKEZYX0ZMT0FUIGIsIEZYX0ZMT0FUIHgpOw0KK0ZYX0ZMT0FUCQlGWFNZU19zdHJ0b2YoRlhfTFBDU1RSIHBjc1N0ciwgRlhfSU5UMzIgaUxlbmd0aCA9IC0xLCBGWF9JTlQzMiAqcFVzZWRMZW4gPSBOVUxMKTsNCitGWF9GTE9BVAkJRlhTWVNfd2NzdG9mKEZYX0xQQ1dTVFIgcHdzU3RyLCBGWF9JTlQzMiBpTGVuZ3RoID0gLTEsIEZYX0lOVDMyICpwVXNlZExlbiA9IE5VTEwpOw0KK0ZYX0xQV1NUUgkJRlhTWVNfd2NzbmNweShGWF9MUFdTVFIgZHN0U3RyLCBGWF9MUENXU1RSIHNyY1N0ciwgc2l6ZV90IGNvdW50KTsNCitGWF9JTlQzMgkJRlhTWVNfd2NzbmljbXAoRlhfTFBDV1NUUiBzMSwgRlhfTFBDV1NUUiBzMiwgc2l6ZV90IGNvdW50KTsNCitGWF9JTlQzMgkJRlhTWVNfc3RybmljbXAoRlhfTFBDU1RSIHMxLCBGWF9MUENTVFIgczIsIHNpemVfdCBjb3VudCk7DQoraW5saW5lIEZYX0JPT0wJRlhTWVNfaXNsb3dlcihGWF9JTlQzMiBjaCkNCit7DQorICAgIHJldHVybiBjaCA+PSAnYScgJiYgY2ggPD0gJ3onOw0KK30NCitpbmxpbmUgRlhfQk9PTAlGWFNZU19pc3VwcGVyKEZYX0lOVDMyIGNoKQ0KK3sNCisgICAgcmV0dXJuIGNoID49ICdBJyAmJiBjaCA8PSAnWic7DQorfQ0KK2lubGluZSBGWF9JTlQzMglGWFNZU190b2xvd2VyKEZYX0lOVDMyIGNoKQ0KK3sNCisgICAgcmV0dXJuIGNoIDwgJ0EnIHx8IGNoID4gJ1onID8gY2ggOiAoY2ggKyAweDIwKTsNCit9DQoraW5saW5lIEZYX0lOVDMyIEZYU1lTX3RvdXBwZXIoRlhfSU5UMzIgY2gpDQorew0KKyAgICByZXR1cm4gY2ggPCAnYScgfHwgY2ggPiAneicgPyBjaCA6IChjaCAtIDB4MjApOw0KK30NCisNCisNCisNCitGWF9EV09SRAlGWF9IYXNoQ29kZV9TdHJpbmdfR2V0QShGWF9MUENTVFIgcFN0ciwgRlhfSU5UMzIgaUxlbmd0aCwgRlhfQk9PTCBiSWdub3JlQ2FzZSA9IEZBTFNFKTsNCitGWF9EV09SRAlGWF9IYXNoQ29kZV9TdHJpbmdfR2V0VyhGWF9MUENXU1RSIHBTdHIsIEZYX0lOVDMyIGlMZW5ndGgsIEZYX0JPT0wgYklnbm9yZUNhc2UgPSBGQUxTRSk7DQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KK0ZYX0xQVk9JRAlGWF9SYW5kb21fTVRfU3RhcnQoRlhfRFdPUkQgZHdTZWVkKTsNCisNCitGWF9EV09SRAlGWF9SYW5kb21fTVRfR2VuZXJhdGUoRlhfTFBWT0lEIHBDb250ZXh0KTsNCisNCit2b2lkCQlGWF9SYW5kb21fTVRfQ2xvc2UoRlhfTFBWT0lEIHBDb250ZXh0KTsNCisNCit2b2lkCQlGWF9SYW5kb21fR2VuZXJhdGVCYXNlKEZYX0xQRFdPUkQgcEJ1ZmZlciwgRlhfSU5UMzIgaUNvdW50KTsNCisNCit2b2lkCQlGWF9SYW5kb21fR2VuZXJhdGVNVChGWF9MUERXT1JEIHBCdWZmZXIsIEZYX0lOVDMyIGlDb3VudCk7DQorDQordm9pZAkJRlhfUmFuZG9tX0dlbmVyYXRlQ3J5cHRvKEZYX0xQRFdPUkQgcEJ1ZmZlciwgRlhfSU5UMzIgaUNvdW50KTsNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQordGVtcGxhdGU8Y2xhc3MgYmFzZVR5cGU+DQorY2xhc3MgQ0ZYX1NTb3J0VGVtcGxhdGUNCit7DQorcHVibGljOg0KKyAgICB2b2lkIFNoZWxsU29ydChiYXNlVHlwZSAqcEFycmF5LCBGWF9JTlQzMiBpQ291bnQpDQorICAgIHsNCisgICAgICAgIEZYU1lTX2Fzc2VydChwQXJyYXkgIT0gTlVMTCAmJiBpQ291bnQgPiAwKTsNCisgICAgICAgIEZYX0lOVDMyIGksIGosIGdhcDsNCisgICAgICAgIGJhc2VUeXBlIHYxLCB2MjsNCisgICAgICAgIGdhcCA9IGlDb3VudCA+PiAxOw0KKyAgICAgICAgd2hpbGUgKGdhcCA+IDApIHsNCisgICAgICAgICAgICBmb3IgKGkgPSBnYXA7IGkgPCBpQ291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgaiA9IGkgLSBnYXA7DQorICAgICAgICAgICAgICAgIHYxID0gcEFycmF5W2ldOw0KKyAgICAgICAgICAgICAgICB3aGlsZSAoaiA+IC0xICYmICh2MiA9IHBBcnJheVtqXSkgPiB2MSkgew0KKyAgICAgICAgICAgICAgICAgICAgcEFycmF5W2ogKyBnYXBdID0gdjI7DQorICAgICAgICAgICAgICAgICAgICBqIC09IGdhcDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwQXJyYXlbaiArIGdhcF0gPSB2MTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZ2FwID4+PSAxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfbWVtb3J5LmggYi9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBjOTRjNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGNydC9meF9tZW1vcnkuaApAQCAtMCwwICsxLDMwMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhfTUVNT1JZX0hfDQorI2RlZmluZSBfRlhfTUVNT1JZX0hfDQorI2lmbmRlZiBfRlhfU1lTVEVNX0hfDQorI2luY2x1ZGUgImZ4X3N5c3RlbS5oIg0KKyNlbmRpZg0KKyNkZWZpbmUgRlhNRU1fTk9OTEVBVkUJCQkxDQorI2RlZmluZSBGWE1FTV9NT1ZBQkxFCQkJMg0KKyNkZWZpbmUgRlhNRU1fRElTQ0FSREFCTEUJCTQNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCit0eXBlZGVmIHN0cnVjdCBfRlhNRU1fU3lzdGVtTWdyIHsNCisNCisgICAgdm9pZCogKCpBbGxvYykoc3RydWN0IF9GWE1FTV9TeXN0ZW1NZ3IqIHBNZ3IsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpOw0KKw0KKyAgICB2b2lkKiAoKkFsbG9jRGVidWcpKHN0cnVjdCBfRlhNRU1fU3lzdGVtTWdyKiBwTWdyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLCBGWF9MUENTVFIgZmlsZSwgaW50IGxpbmUpOw0KKw0KKyAgICB2b2lkKiAoKlJlYWxsb2MpKHN0cnVjdCBfRlhNRU1fU3lzdGVtTWdyKiBwTWdyLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKTsNCisNCisgICAgdm9pZCogKCpSZWFsbG9jRGVidWcpKHN0cnVjdCBfRlhNRU1fU3lzdGVtTWdyKiBwTWdyLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLCBGWF9MUENTVFIgZmlsZSwgaW50IGxpbmUpOw0KKw0KKyAgICB2b2lkKiAoKkxvY2spKHN0cnVjdCBfRlhNRU1fU3lzdGVtTWdyKiBwTWdyLCB2b2lkKiBoYW5kbGUpOw0KKw0KKyAgICB2b2lkICAoKlVubG9jaykoc3RydWN0IF9GWE1FTV9TeXN0ZW1NZ3IqIHBNZ3IsIHZvaWQqIGhhbmRsZSk7DQorDQorICAgIHZvaWQgICgqRnJlZSkoc3RydWN0IF9GWE1FTV9TeXN0ZW1NZ3IqIHBNZ3IsIHZvaWQqIHBvaW50ZXIsIGludCBmbGFncyk7DQorDQorICAgIHZvaWQgICgqUHVyZ2UpKHN0cnVjdCBfRlhNRU1fU3lzdGVtTWdyKiBwTWdyKTsNCisNCisgICAgdm9pZCAgKCpDb2xsZWN0QWxsKShzdHJ1Y3QgX0ZYTUVNX1N5c3RlbU1nciogcE1ncik7DQorDQorDQorICAgIHZvaWQqIHVzZXI7DQorfSBGWE1FTV9TeXN0ZW1NZ3I7DQorRlhfREVGSU5FSEFORExFKEZYTUVNX0ZveGl0TWdyKQ0KK3R5cGVkZWYgc3RydWN0IF9GWE1FTV9TeXN0ZW1NZ3IyIHsNCisNCisgICAgRlhfQk9PTAkoKk1vcmUpKHN0cnVjdCBfRlhNRU1fU3lzdGVtTWdyMiogcE1nciwgc2l6ZV90IGFsbG9jX3NpemUsIHZvaWQqKiBuZXdfbWVtb3J5LCBzaXplX3QqIG5ld19zaXplKTsNCisNCisgICAgdm9pZAkoKkZyZWUpKHN0cnVjdCBfRlhNRU1fU3lzdGVtTWdyMiogcE1nciwgdm9pZCogbWVtb3J5KTsNCit9IEZYTUVNX1N5c3RlbU1ncjI7DQorRlhNRU1fRm94aXRNZ3IqIEZYTUVNX0NyZWF0ZU1lbW9yeU1ncihzaXplX3Qgc2l6ZSwgRlhfQk9PTCBleHRlbnNpYmxlKTsNCit2b2lkCUZYTUVNX0Rlc3Ryb3lGb3hpdE1ncihGWE1FTV9Gb3hpdE1nciogcEZveGl0TWdyKTsNCit2b2lkKglGWE1FTV9EZWZhdWx0QWxsb2Moc2l6ZV90IGJ5dGVfc2l6ZSwgaW50IGZsYWdzKTsNCit2b2lkKglGWE1FTV9EZWZhdWx0QWxsb2MyKHNpemVfdCB1bml0cywgc2l6ZV90IHVuaXRfc2l6ZSwgaW50IGZsYWdzKTsNCit2b2lkKglGWE1FTV9EZWZhdWx0UmVhbGxvYyh2b2lkKiBwb2ludGVyLCBzaXplX3QgbmV3X3NpemUsIGludCBmbGFncyk7DQordm9pZCoJRlhNRU1fRGVmYXVsdFJlYWxsb2MyKHZvaWQqIHBvaW50ZXIsIHNpemVfdCB1bml0cywgc2l6ZV90IHVuaXRfc2l6ZSwgaW50IGZsYWdzKTsNCit2b2lkCUZYTUVNX0RlZmF1bHRGcmVlKHZvaWQqIHBvaW50ZXIsIGludCBmbGFncyk7DQorI2RlZmluZSBGWF9BbGxvYyh0eXBlLCBzaXplKQkJCSh0eXBlKilGWE1FTV9EZWZhdWx0QWxsb2MyKHNpemUsIHNpemVvZih0eXBlKSwgMCkNCisjZGVmaW5lIEZYX1JlYWxsb2ModHlwZSwgcHRyLCBzaXplKQkJKHR5cGUqKUZYTUVNX0RlZmF1bHRSZWFsbG9jMihwdHIsIHNpemUsIHNpemVvZih0eXBlKSwgMCkNCisjZGVmaW5lIEZYX0FsbG9jTkwodHlwZSwgc2l6ZSkJCQkodHlwZSopRlhNRU1fRGVmYXVsdEFsbG9jMihzaXplLCBzaXplb2YodHlwZSksIEZYTUVNX05PTkxFQVZFKQ0KKyNkZWZpbmUgRlhfUmVhbGxvY05MKHR5cGUsIHB0ciwgc2l6ZSkJKHR5cGUqKUZYTUVNX0RlZmF1bHRSZWFsbG9jMihwdHIsIHNpemUsIHNpemVvZih0eXBlKSwgRlhNRU1fTk9OTEVBVkUpDQorI2RlZmluZSBGWF9GcmVlKHBvaW50ZXIpIEZYTUVNX0RlZmF1bHRGcmVlKHBvaW50ZXIsIDApDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KKyNpZiBkZWZpbmVkKF9ERUJVRykNCisjZGVmaW5lIEZYX05FVyBuZXcoX19GSUxFX18sIF9fTElORV9fKQ0KKyNlbHNlDQorDQorI2RlZmluZSBGWF9ORVcgbmV3DQorI2VuZGlmDQorY2xhc3MgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZvaWQqCQkJb3BlcmF0b3IgbmV3IChzaXplX3Qgc2l6ZSwgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKTsNCisNCisgICAgdm9pZAkJCW9wZXJhdG9yIGRlbGV0ZSAodm9pZCogcCwgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKTsNCisNCisgICAgdm9pZCoJCQlvcGVyYXRvciBuZXcgKHNpemVfdCBzaXplKTsNCisNCisgICAgdm9pZAkJCW9wZXJhdG9yIGRlbGV0ZSAodm9pZCogcCk7DQorDQorICAgIHZvaWQqCQkJb3BlcmF0b3IgbmV3W10gKHNpemVfdCBzaXplLCBGWF9MUENTVFIgZmlsZSwgaW50IGxpbmUpOw0KKw0KKyAgICB2b2lkCQkJb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQqIHAsIEZYX0xQQ1NUUiBmaWxlLCBpbnQgbGluZSk7DQorDQorICAgIHZvaWQqCQkJb3BlcmF0b3IgbmV3W10gKHNpemVfdCBzaXplKTsNCisNCisgICAgdm9pZAkJCW9wZXJhdG9yIGRlbGV0ZVtdICh2b2lkKiBwKTsNCisNCisgICAgdm9pZCoJCQlvcGVyYXRvciBuZXcgKHNpemVfdCwgdm9pZCogYnVmKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYnVmOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQlvcGVyYXRvciBkZWxldGUgKHZvaWQqLCB2b2lkKikge30NCit9Ow0KKyNkZWZpbmUgRlhfTkVXX1ZFQ1RPUihQb2ludGVyLCBDbGFzcywgQ291bnQpIFwNCisgICAgeyBcDQorICAgICAgICBQb2ludGVyID0gRlhfQWxsb2MoQ2xhc3MsIENvdW50KTsgXA0KKyAgICAgICAgaWYgKFBvaW50ZXIpIHsgXA0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKENvdW50KTsgaSArKykgbmV3IChQb2ludGVyICsgaSkgQ2xhc3M7IFwNCisgICAgICAgIH0gXA0KKyAgICB9DQorI2RlZmluZSBGWF9ERUxFVEVfVkVDVE9SKFBvaW50ZXIsIENsYXNzLCBDb3VudCkgXA0KKyAgICB7IFwNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKENvdW50KTsgaSArKykgUG9pbnRlcltpXS5+Q2xhc3MoKTsgXA0KKyAgICAgICAgRlhfRnJlZShQb2ludGVyKTsgXA0KKyAgICB9DQorY2xhc3MgQ0ZYX0Rlc3RydWN0T2JqZWN0IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIH5DRlhfRGVzdHJ1Y3RPYmplY3QoKSB7fQ0KK307DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQordHlwZWRlZiBzdHJ1Y3QgX0lGWF9BbGxvY2F0b3Igew0KKw0KKyAgICB2b2lkKgkoKm1fQWxsb2NEZWJ1Zykoc3RydWN0IF9JRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCBzaXplX3Qgc2l6ZSwgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKTsNCisNCisgICAgdm9pZCoJKCptX0FsbG9jKShzdHJ1Y3QgX0lGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IsIHNpemVfdCBzaXplKTsNCisNCisgICAgdm9pZCoJKCptX1JlYWxsb2NEZWJ1Zykoc3RydWN0IF9JRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCB2b2lkKiBwLCBzaXplX3Qgc2l6ZSwgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKTsNCisNCisgICAgdm9pZCoJKCptX1JlYWxsb2MpKHN0cnVjdCBfSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgdm9pZCogcCwgc2l6ZV90IHNpemUpOw0KKw0KKyAgICB2b2lkCSgqbV9GcmVlKShzdHJ1Y3QgX0lGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IsIHZvaWQqIHApOw0KK30gSUZYX0FsbG9jYXRvcjsNCitJRlhfQWxsb2NhdG9yKiBGWE1FTV9HZXREZWZBbGxvY2F0b3IoKTsNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorI2lmZGVmIF9ERUJVRw0KKw0KKyNkZWZpbmUgRlhfQWxsb2NhdG9yX0FsbG9jKGZ4QWxsb2NhdG9yLCB0eXBlLCBzaXplKSBcDQorICAgICgoZnhBbGxvY2F0b3IpID8gKHR5cGUqKShmeEFsbG9jYXRvciktPm1fQWxsb2NEZWJ1ZygoZnhBbGxvY2F0b3IpLCAoc2l6ZSkgKiBzaXplb2YodHlwZSksIF9fRklMRV9fLCBfX0xJTkVfXykgOiAoRlhfQWxsb2ModHlwZSwgc2l6ZSkpKQ0KKw0KKyNkZWZpbmUgRlhfQWxsb2NhdG9yX1JlYWxsb2MoZnhBbGxvY2F0b3IsIHR5cGUsIHB0ciwgbmV3X3NpemUpIFwNCisgICAgKChmeEFsbG9jYXRvcikgPyAodHlwZSopKGZ4QWxsb2NhdG9yKS0+bV9SZWFsbG9jRGVidWcoKGZ4QWxsb2NhdG9yKSwgKHB0ciksIChuZXdfc2l6ZSkgKiBzaXplb2YodHlwZSksIF9fRklMRV9fLCBfX0xJTkVfXykgOiAoRlhfUmVhbGxvYyh0eXBlLCBwdHIsIG5ld19zaXplKSkpDQorI2Vsc2UNCisNCisjZGVmaW5lIEZYX0FsbG9jYXRvcl9BbGxvYyhmeEFsbG9jYXRvciwgdHlwZSwgc2l6ZSkgXA0KKyAgICAoKGZ4QWxsb2NhdG9yKSA/ICh0eXBlKikoZnhBbGxvY2F0b3IpLT5tX0FsbG9jKChmeEFsbG9jYXRvciksIChzaXplKSAqIHNpemVvZih0eXBlKSkgOiAoRlhfQWxsb2ModHlwZSwgc2l6ZSkpKQ0KKw0KKyNkZWZpbmUgRlhfQWxsb2NhdG9yX1JlYWxsb2MoZnhBbGxvY2F0b3IsIHR5cGUsIHB0ciwgbmV3X3NpemUpIFwNCisgICAgKChmeEFsbG9jYXRvcikgPyAodHlwZSopKGZ4QWxsb2NhdG9yKS0+bV9SZWFsbG9jKChmeEFsbG9jYXRvciksIChwdHIpLCAobmV3X3NpemUpICogc2l6ZW9mKHR5cGUpKSA6IChGWF9SZWFsbG9jKHR5cGUsIHB0ciwgbmV3X3NpemUpKSkNCisjZW5kaWYNCisjZGVmaW5lIEZYX0FsbG9jYXRvcl9GcmVlKGZ4QWxsb2NhdG9yLCBwdHIpIFwNCisgICAgKChmeEFsbG9jYXRvcikgPyAoZnhBbGxvY2F0b3IpLT5tX0ZyZWUoKGZ4QWxsb2NhdG9yKSwgKHB0cikpIDogKEZYX0ZyZWUocHRyKSkpDQoraW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSwgSUZYX0FsbG9jYXRvciogZnhBbGxvY2F0b3IpDQorew0KKyAgICByZXR1cm4gKHZvaWQqKUZYX0FsbG9jYXRvcl9BbGxvYyhmeEFsbG9jYXRvciwgRlhfQllURSwgc2l6ZSk7DQorfQ0KK2lubGluZSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwdHIsIElGWF9BbGxvY2F0b3IqIGZ4QWxsb2NhdG9yKQ0KK3sNCit9DQorI2RlZmluZSBGWF9OZXdBdEFsbG9jYXRvcihmeEFsbG9jYXRvcikgXA0KKyAgICA6Om5ldyhmeEFsbG9jYXRvcikNCisjZGVmaW5lIEZYX0RlbGV0ZUF0QWxsb2NhdG9yKHBvaW50ZXIsIGZ4QWxsb2NhdG9yLCBfX2NsYXNzX18pIFwNCisgICAgKHBvaW50ZXIpLT5+X19jbGFzc19fKCk7IFwNCisgICAgRlhfQWxsb2NhdG9yX0ZyZWUoZnhBbGxvY2F0b3IsIHBvaW50ZXIpDQorY2xhc3MgQ0ZYX0FsbG9jT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdm9pZCoJCQlvcGVyYXRvciBuZXcgKHNpemVfdCBzaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCBGWF9MUENTVFIgZmlsZSwgaW50IGxpbmUpOw0KKyNpZm5kZWYgX0ZYX05PX0VYQ0VQVElPTl8NCisNCisgICAgdm9pZAkJCW9wZXJhdG9yIGRlbGV0ZSAodm9pZCogcCwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKTsNCisjZW5kaWYNCisNCisgICAgdm9pZCoJCQlvcGVyYXRvciBuZXcgKHNpemVfdCBzaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKTsNCisNCisgICAgdm9pZAkJCW9wZXJhdG9yIGRlbGV0ZSAodm9pZCogcCk7DQorI2lmbmRlZiBfRlhfTk9fRVhDRVBUSU9OXw0KKw0KKyAgICB2b2lkCQkJb3BlcmF0b3IgZGVsZXRlICh2b2lkKiBwLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKTsNCisjZW5kaWYNCisNCisgICAgdm9pZCoJCQlvcGVyYXRvciBuZXcgKHNpemVfdCwgdm9pZCogYnVmKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gYnVmOw0KKyAgICB9DQorI2lmbmRlZiBfRlhfTk9fRVhDRVBUSU9OXw0KKw0KKyAgICB2b2lkCQkJb3BlcmF0b3IgZGVsZXRlICh2b2lkKiwgdm9pZCopIHt9DQorI2VuZGlmDQorDQorICAgIElGWF9BbGxvY2F0b3IqCUdldEFsbG9jYXRvcigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BBbGxvY2F0b3I7DQorICAgIH0NCitwcml2YXRlOg0KKw0KKyAgICB2b2lkKgkJCW9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc2l6ZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gb3BlcmF0b3IgbmV3KHNpemUsIHBBbGxvY2F0b3IsIGZpbGUsIGxpbmUpOw0KKyAgICB9DQorI2lmbmRlZiBfRlhfTk9fRVhDRVBUSU9OXw0KKw0KKyAgICB2b2lkCQkJb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQqIHAsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IsIEZYX0xQQ1NUUiBmaWxlLCBpbnQgbGluZSkge30NCisjZW5kaWYNCisNCisgICAgdm9pZCoJCQlvcGVyYXRvciBuZXdbXSAoc2l6ZV90IHNpemUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorICAgIHsNCisgICAgICAgIHJldHVybiBvcGVyYXRvciBuZXcoc2l6ZSwgcEFsbG9jYXRvcik7DQorICAgIH0NCisNCisgICAgdm9pZAkJCW9wZXJhdG9yIGRlbGV0ZVtdICh2b2lkKiBwKSB7fQ0KKyNpZm5kZWYgX0ZYX05PX0VYQ0VQVElPTl8NCisNCisgICAgdm9pZAkJCW9wZXJhdG9yIGRlbGV0ZVtdICh2b2lkKiBwLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKSB7fQ0KKyNlbmRpZg0KK3Byb3RlY3RlZDoNCisNCisgICAgSUZYX0FsbG9jYXRvcioJbV9wQWxsb2NhdG9yOw0KK307DQorI2lmIGRlZmluZWQoX0RFQlVHKQ0KKyNkZWZpbmUgRlhfTkVXQVQocEFsbG9jYXRvcikgbmV3KHBBbGxvY2F0b3IsIF9fRklMRV9fLCBfX0xJTkVfXykNCisjZWxzZQ0KKw0KKyNkZWZpbmUgRlhfTkVXQVQocEFsbG9jYXRvcikgbmV3KHBBbGxvY2F0b3IpDQorI2VuZGlmDQorY2xhc3MgQ0ZYX0dyb3dPbmx5UG9vbCA6IHB1YmxpYyBJRlhfQWxsb2NhdG9yLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9Hcm93T25seVBvb2woSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwsIHNpemVfdCB0cnVua19zaXplID0gMTYzODQpOw0KKw0KKyAgICB+Q0ZYX0dyb3dPbmx5UG9vbCgpOw0KKw0KKyAgICB2b2lkCVNldEFsbG9jYXRvcihJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKTsNCisNCisgICAgdm9pZAlTZXRUcnVua1NpemUoc2l6ZV90IHRydW5rX3NpemUpDQorICAgIHsNCisgICAgICAgIG1fVHJ1bmtTaXplID0gdHJ1bmtfc2l6ZTsNCisgICAgfQ0KKw0KKyAgICB2b2lkKglBbGxvY0RlYnVnKHNpemVfdCBzaXplLCBGWF9MUENTVFIgZmlsZSwgaW50IGxpbmUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBBbGxvYyhzaXplKTsNCisgICAgfQ0KKw0KKyAgICB2b2lkKglBbGxvYyhzaXplX3Qgc2l6ZSk7DQorDQorICAgIHZvaWQqCVJlYWxsb2NEZWJ1Zyh2b2lkKiBwLCBzaXplX3QgbmV3X3NpemUsIEZYX0xQQ1NUUiBmaWxlLCBpbnQgbGluZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisNCisgICAgdm9pZCoJUmVhbGxvYyh2b2lkKiBwLCBzaXplX3QgbmV3X3NpemUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorDQorICAgIHZvaWQJRnJlZSh2b2lkKikge30NCisNCisgICAgdm9pZAlGcmVlQWxsKCk7DQorcHJpdmF0ZToNCisNCisgICAgc2l6ZV90CW1fVHJ1bmtTaXplOw0KKw0KKyAgICB2b2lkKgltX3BGaXJzdFRydW5rOw0KKw0KKyAgICBJRlhfQWxsb2NhdG9yKgltX3BBbGxvY2F0b3I7DQorfTsNCisjZW5kaWYNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisjZGVmaW5lIEZYX0ZJWEVETUVNX1BBR0VTSVpFCQkoNDA5NiAqIDE2KQ0KKyNkZWZpbmUgRlhfRklYRURNRU1fTUlEQkxPQ0tTSVpFCSg0MDk2KQ0KK3R5cGVkZWYgc3RydWN0IF9GWF9NRU1DT05GSUcgew0KKw0KKyAgICBzaXplX3QJblBhZ2VOdW1fSW5pdDg7DQorDQorICAgIHNpemVfdAluUGFnZU51bV9Jbml0MTY7DQorDQorICAgIHNpemVfdAluUGFnZU51bV9Jbml0MzI7DQorDQorICAgIHNpemVfdAluUGFnZU51bV9Nb3JlMTY7DQorDQorICAgIHNpemVfdAluUGFnZU51bV9Nb3JlMzI7DQorDQorICAgIHNpemVfdAluUGFnZVNpemVfTWlkOw0KKw0KKyAgICBzaXplX3QJblBhZ2VOdW1fSW5pdE1pZDsNCisNCisgICAgc2l6ZV90CW5QYWdlTnVtX01vcmVNaWQ7DQorDQorICAgIHNpemVfdAluUGFnZVNpemVfTGFyZ2U7DQorDQorICAgIHNpemVfdAluUGFnZVNpemVfQWxvbmU7DQorfSBGWF9NRU1DT05GSUc7DQordm9pZAlGWE1FTV9TZXRDb25maWcoY29uc3QgRlhfTUVNQ09ORklHKiBtZW1Db25maWcpOw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfc3RyZWFtLmggYi9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfc3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RhNTI1MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGNydC9meF9zdHJlYW0uaApAQCAtMCwwICsxLDIwMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhfU1RSRUFNX0hfDQorI2RlZmluZSBfRlhfU1RSRUFNX0hfDQorI2lmbmRlZiBfRlhfTUVNT1JZX0hfDQorI2luY2x1ZGUgImZ4X21lbW9yeS5oIg0KKyNlbmRpZg0KK3ZvaWQqIEZYX09wZW5Gb2xkZXIoRlhfTFBDU1RSIHBhdGgpOw0KK3ZvaWQqIEZYX09wZW5Gb2xkZXIoRlhfTFBDV1NUUiBwYXRoKTsNCitGWF9CT09MIEZYX0dldE5leHRGaWxlKHZvaWQqIGhhbmRsZSwgQ0ZYX0J5dGVTdHJpbmcmIGZpbGVuYW1lLCBGWF9CT09MJiBiRm9sZGVyKTsNCitGWF9CT09MIEZYX0dldE5leHRGaWxlKHZvaWQqIGhhbmRsZSwgQ0ZYX1dpZGVTdHJpbmcmIGZpbGVuYW1lLCBGWF9CT09MJiBiRm9sZGVyKTsNCit2b2lkIEZYX0Nsb3NlRm9sZGVyKHZvaWQqIGhhbmRsZSk7DQorRlhfV0NIQVIgRlhfR2V0Rm9sZGVyU2VwYXJhdG9yKCk7DQorRlhfREVGSU5FSEFORExFKEZYX0hGSUxFKQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorI2RlZmluZSBGWF9GSUxFU0laRQkJCUZYX0lOVDMyDQorI2Vsc2UNCisjaW5jbHVkZSA8ZmNudGwuaD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+DQorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+DQorI2lmbmRlZiBPX0JJTkFSWQ0KKyNkZWZpbmUgT19CSU5BUlkgCQkwDQorI2VuZGlmDQorI2lmbmRlZiBPX0xBUkdFRklMRQ0KKyNkZWZpbmUgT19MQVJHRUZJTEUJCTANCisjZW5kaWYNCisjZGVmaW5lIEZYX0ZJTEVTSVpFCQkJb2ZmX3QNCisjZW5kaWYNCisjZGVmaW5lIEZYX0dFVEJZVEVPRkZTRVQzMihhKQkwDQorI2RlZmluZSBGWF9HRVRCWVRFT0ZGU0VUNDAoYSkJMA0KKyNkZWZpbmUgRlhfR0VUQllURU9GRlNFVDQ4KGEpCTANCisjZGVmaW5lIEZYX0dFVEJZVEVPRkZTRVQ1NihhKQkwDQorI2RlZmluZSBGWF9HRVRCWVRFT0ZGU0VUMjQoYSkgICgoRlhfQllURSkoYT4+MjQpKQ0KKyNkZWZpbmUgRlhfR0VUQllURU9GRlNFVDE2KGEpICAoKEZYX0JZVEUpKGE+PjE2KSkNCisjZGVmaW5lIEZYX0dFVEJZVEVPRkZTRVQ4KGEpICAgKChGWF9CWVRFKShhPj44KSkNCisjZGVmaW5lIEZYX0dFVEJZVEVPRkZTRVQwKGEpICAgKChGWF9CWVRFKShhKSkNCisjZGVmaW5lIEZYX0ZJTEVNT0RFX1dyaXRlCQkwDQorI2RlZmluZSBGWF9GSUxFTU9ERV9SZWFkT25seQkxDQorI2RlZmluZSBGWF9GSUxFTU9ERV9UcnVuY2F0ZQkyDQorRlhfSEZJTEUJRlhfRmlsZV9PcGVuKEZYX0JTVFIgZmlsZU5hbWUsIEZYX0RXT1JEIGR3TW9kZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KK0ZYX0hGSUxFCUZYX0ZpbGVfT3BlbihGWF9XU1RSIGZpbGVOYW1lLCBGWF9EV09SRCBkd01vZGUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCit2b2lkCQlGWF9GaWxlX0Nsb3NlKEZYX0hGSUxFIGhGaWxlLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorRlhfRklMRVNJWkUJRlhfRmlsZV9HZXRTaXplKEZYX0hGSUxFIGhGaWxlKTsNCitGWF9GSUxFU0laRQlGWF9GaWxlX0dldFBvc2l0aW9uKEZYX0hGSUxFIGhGaWxlKTsNCitGWF9GSUxFU0laRQlGWF9GaWxlX1NldFBvc2l0aW9uKEZYX0hGSUxFIGhGaWxlLCBGWF9GSUxFU0laRSBwb3MpOw0KK3NpemVfdAkJRlhfRmlsZV9SZWFkKEZYX0hGSUxFIGhGaWxlLCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpOw0KK3NpemVfdAkJRlhfRmlsZV9SZWFkUG9zKEZYX0hGSUxFIGhGaWxlLCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIsIEZYX0ZJTEVTSVpFIHBvcyk7DQorc2l6ZV90CQlGWF9GaWxlX1dyaXRlKEZYX0hGSUxFIGhGaWxlLCBjb25zdCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpOw0KK3NpemVfdAkJRlhfRmlsZV9Xcml0ZVBvcyhGWF9IRklMRSBoRmlsZSwgY29uc3Qgdm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyLCBGWF9GSUxFU0laRSBwb3MpOw0KK0ZYX0JPT0wJCUZYX0ZpbGVfRmx1c2goRlhfSEZJTEUgaEZpbGUpOw0KK0ZYX0JPT0wJCUZYX0ZpbGVfVHJ1bmNhdGUoRlhfSEZJTEUgaEZpbGUsIEZYX0ZJTEVTSVpFIHN6RmlsZSk7DQorRlhfQk9PTAkJRlhfRmlsZV9FeGlzdChGWF9CU1RSIGZpbGVOYW1lKTsNCitGWF9CT09MCQlGWF9GaWxlX0V4aXN0KEZYX1dTVFIgZmlsZU5hbWUpOw0KK0ZYX0JPT0wJCUZYX0ZpbGVfRGVsZXRlKEZYX0JTVFIgZmlsZU5hbWUpOw0KK0ZYX0JPT0wJCUZYX0ZpbGVfRGVsZXRlKEZYX1dTVFIgZmlsZU5hbWUpOw0KK0ZYX0JPT0wJCUZYX0ZpbGVfQ29weShGWF9CU1RSIGZpbGVOYW1lU3JjLCBGWF9CU1RSIGZpbGVOYW1lRHN0KTsNCitGWF9CT09MCQlGWF9GaWxlX0NvcHkoRlhfV1NUUiBmaWxlTmFtZVNyYywgRlhfV1NUUiBmaWxlTmFtZURzdCk7DQorRlhfQk9PTAkJRlhfRmlsZV9Nb3ZlKEZYX0JTVFIgZmlsZU5hbWVTcmMsIEZYX0JTVFIgZmlsZU5hbWVEc3QpOw0KK0ZYX0JPT0wJCUZYX0ZpbGVfTW92ZShGWF9XU1RSIGZpbGVOYW1lU3JjLCBGWF9XU1RSIGZpbGVOYW1lRHN0KTsNCitjbGFzcyBJRlhfU3RyZWFtV3JpdGUNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCVJlbGVhc2UoKSA9IDA7DQorDQorICAgIHZpcnR1YWwJRlhfQk9PTAkJV3JpdGVCbG9jayhjb25zdCB2b2lkKiBwRGF0YSwgc2l6ZV90IHNpemUpID0gMDsNCit9Ow0KK2NsYXNzIElGWF9GaWxlV3JpdGUgOiBwdWJsaWMgSUZYX1N0cmVhbVdyaXRlDQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCB2b2lkCQkJUmVsZWFzZSgpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQkJR2V0U2l6ZSgpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJRmx1c2goKSA9IDA7DQorDQorICAgIHZpcnR1YWwJRlhfQk9PTAkJCVdyaXRlQmxvY2soY29uc3Qgdm9pZCogcERhdGEsIEZYX0ZJTEVTSVpFIG9mZnNldCwgc2l6ZV90IHNpemUpID0gMDsNCisgICAgdmlydHVhbAlGWF9CT09MCQkJV3JpdGVCbG9jayhjb25zdCB2b2lkKiBwRGF0YSwgc2l6ZV90IHNpemUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBXcml0ZUJsb2NrKHBEYXRhLCBHZXRTaXplKCksIHNpemUpOw0KKyAgICB9DQorfTsNCitJRlhfRmlsZVdyaXRlKiBGWF9DcmVhdGVGaWxlV3JpdGUoRlhfTFBDU1RSIGZpbGVuYW1lLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorSUZYX0ZpbGVXcml0ZSogRlhfQ3JlYXRlRmlsZVdyaXRlKEZYX0xQQ1dTVFIgZmlsZW5hbWUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCitjbGFzcyBJRlhfU3RyZWFtUmVhZA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCVJlbGVhc2UoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCUlzRU9GKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCQlHZXRQb3NpdGlvbigpID0gMDsNCisNCisgICAgdmlydHVhbCBzaXplX3QJCQlSZWFkQmxvY2sodm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkgPSAwOw0KK307DQorY2xhc3MgSUZYX0ZpbGVSZWFkIDogSUZYX1N0cmVhbVJlYWQNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlSZWxlYXNlKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCQlHZXRTaXplKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc0VPRigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCQlHZXRQb3NpdGlvbigpDQorICAgIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCVNldFJhbmdlKEZYX0ZJTEVTSVpFIG9mZnNldCwgRlhfRklMRVNJWkUgc2l6ZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgdm9pZAkJCUNsZWFyUmFuZ2UoKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlSZWFkQmxvY2sodm9pZCogYnVmZmVyLCBGWF9GSUxFU0laRSBvZmZzZXQsIHNpemVfdCBzaXplKSA9IDA7DQorDQorICAgIHZpcnR1YWwgc2l6ZV90CQkJUmVhZEJsb2NrKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IHNpemUpDQorICAgIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorfTsNCitJRlhfRmlsZVJlYWQqIEZYX0NyZWF0ZUZpbGVSZWFkKEZYX0xQQ1NUUiBmaWxlbmFtZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KK0lGWF9GaWxlUmVhZCogRlhfQ3JlYXRlRmlsZVJlYWQoRlhfTFBDV1NUUiBmaWxlbmFtZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KK2NsYXNzIElGWF9GaWxlU3RyZWFtIDogcHVibGljIElGWF9GaWxlUmVhZCwgcHVibGljIElGWF9GaWxlV3JpdGUNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIElGWF9GaWxlU3RyZWFtKgkJUmV0YWluKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJUmVsZWFzZSgpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQkJCUdldFNpemUoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQlJc0VPRigpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQkJCUdldFBvc2l0aW9uKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJUmVhZEJsb2NrKHZvaWQqIGJ1ZmZlciwgRlhfRklMRVNJWkUgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHNpemVfdAkJCQlSZWFkQmxvY2sodm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsCUZYX0JPT0wJCQkJV3JpdGVCbG9jayhjb25zdCB2b2lkKiBidWZmZXIsIEZYX0ZJTEVTSVpFIG9mZnNldCwgc2l6ZV90IHNpemUpID0gMDsNCisgICAgdmlydHVhbAlGWF9CT09MCQkJCVdyaXRlQmxvY2soY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFdyaXRlQmxvY2soYnVmZmVyLCBHZXRTaXplKCksIHNpemUpOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQlGbHVzaCgpID0gMDsNCit9Ow0KK0lGWF9GaWxlU3RyZWFtKgkJRlhfQ3JlYXRlRmlsZVN0cmVhbShGWF9MUENTVFIgZmlsZW5hbWUsIEZYX0RXT1JEIGR3TW9kZXMsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCitJRlhfRmlsZVN0cmVhbSoJCUZYX0NyZWF0ZUZpbGVTdHJlYW0oRlhfTFBDV1NUUiBmaWxlbmFtZSwgRlhfRFdPUkQgZHdNb2RlcywgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KK2NsYXNzIElGWF9NZW1vcnlTdHJlYW0gOiBwdWJsaWMgSUZYX0ZpbGVTdHJlYW0NCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc0NvbnNlY3V0aXZlKCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlFc3RpbWF0ZVNpemUoc2l6ZV90IG5Jbml0U2l6ZSwgc2l6ZV90IG5Hcm93U2l6ZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0xQQllURQkJR2V0QnVmZmVyKCkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlBdHRhY2hCdWZmZXIoRlhfTFBCWVRFIHBCdWZmZXIsIHNpemVfdCBuU2l6ZSwgRlhfQk9PTCBiVGFrZU92ZXIgPSBGQUxTRSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlEZXRhY2hCdWZmZXIoKSA9IDA7DQorfTsNCitJRlhfTWVtb3J5U3RyZWFtKglGWF9DcmVhdGVNZW1vcnlTdHJlYW0oRlhfTFBCWVRFIHBCdWZmZXIsIHNpemVfdCBuU2l6ZSwgRlhfQk9PTCBiVGFrZU92ZXIgPSBGQUxTRSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KK0lGWF9NZW1vcnlTdHJlYW0qCUZYX0NyZWF0ZU1lbW9yeVN0cmVhbShGWF9CT09MIGJDb25zZWN1dGl2ZSA9IEZBTFNFLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorY2xhc3MgSUZYX0J1ZmZlclJlYWQgOiBwdWJsaWMgSUZYX1N0cmVhbVJlYWQNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlSZWxlYXNlKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc0VPRigpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQkJR2V0UG9zaXRpb24oKSA9IDA7DQorDQorICAgIHZpcnR1YWwgc2l6ZV90CQkJUmVhZEJsb2NrKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IHNpemUpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQkJUmVhZE5leHRCbG9jayhGWF9CT09MIGJSZXN0YXJ0ID0gRkFMU0UpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9MUENCWVRFCQlHZXRCbG9ja0J1ZmZlcigpID0gMDsNCisNCisgICAgdmlydHVhbCBzaXplX3QJCQlHZXRCbG9ja1NpemUoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfRklMRVNJWkUJCUdldEJsb2NrT2Zmc2V0KCkgPSAwOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X3N0cmluZy5oIGIvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X3N0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2Mzk2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfc3RyaW5nLmgKQEAgLTAsMCArMSw4NzAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX1NUUklOR19IXw0KKyNkZWZpbmUgX0ZYX1NUUklOR19IXw0KK2NsYXNzIENGWF9CeXRlU3RyaW5nQzsNCitjbGFzcyBDRlhfQnl0ZVN0cmluZzsNCitjbGFzcyBDRlhfV2lkZVN0cmluZ0M7DQorY2xhc3MgQ0ZYX1dpZGVTdHJpbmc7DQorc3RydWN0IENGWF9DaGFyTWFwOw0KK2NsYXNzIENGWF9CaW5hcnlCdWY7DQordHlwZWRlZiBpbnQgRlhfU1RSU0laRTsNCitjbGFzcyBDRlhfQnl0ZVN0cmluZ0w7DQorY2xhc3MgQ0ZYX1dpZGVTdHJpbmdMOw0KK2NsYXNzIENGWF9CeXRlU3RyaW5nQyA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmdDKCkNCisgICAgew0KKyAgICAgICAgbV9QdHIgPSBOVUxMOw0KKyAgICAgICAgbV9MZW5ndGggPSAwOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nQyhGWF9MUENCWVRFIHB0ciwgRlhfU1RSU0laRSBzaXplKQ0KKyAgICB7DQorICAgICAgICBtX1B0ciA9IHB0cjsNCisgICAgICAgIG1fTGVuZ3RoID0gc2l6ZTsNCisgICAgfQ0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZ0MoRlhfTFBDU1RSIHB0cikNCisgICAgew0KKyAgICAgICAgbV9QdHIgPSAoRlhfTFBDQllURSlwdHI7DQorICAgICAgICBtX0xlbmd0aCA9IHB0ciA/IChGWF9TVFJTSVpFKUZYU1lTX3N0cmxlbihwdHIpIDogMDsNCisgICAgfQ0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZ0MoRlhfQ0hBUiYgY2gpDQorICAgIHsNCisgICAgICAgIG1fUHRyID0gKEZYX0xQQ0JZVEUpJmNoOw0KKyAgICAgICAgbV9MZW5ndGggPSAxOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nQyhGWF9MUENTVFIgcHRyLCBGWF9TVFJTSVpFIGxlbikNCisgICAgew0KKyAgICAgICAgbV9QdHIgPSAoRlhfTFBDQllURSlwdHI7DQorICAgICAgICBpZiAobGVuID09IC0xKSB7DQorICAgICAgICAgICAgbV9MZW5ndGggPSAoRlhfU1RSU0laRSlGWFNZU19zdHJsZW4ocHRyKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9MZW5ndGggPSBsZW47DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQ0ZYX0J5dGVTdHJpbmdDKGNvbnN0IENGWF9CeXRlU3RyaW5nQyYgc3JjKQ0KKyAgICB7DQorICAgICAgICBtX1B0ciA9IHNyYy5tX1B0cjsNCisgICAgICAgIG1fTGVuZ3RoID0gc3JjLm1fTGVuZ3RoOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nQyhjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3JjKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmdDJiBvcGVyYXRvciA9IChGWF9MUENTVFIgc3JjKQ0KKyAgICB7DQorICAgICAgICBtX1B0ciA9IChGWF9MUENCWVRFKXNyYzsNCisgICAgICAgIG1fTGVuZ3RoID0gKEZYX1NUUlNJWkUpRlhTWVNfc3RybGVuKHNyYyk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgQ0ZYX0J5dGVTdHJpbmdDJiBvcGVyYXRvciA9IChjb25zdCBDRlhfQnl0ZVN0cmluZ0MmIHNyYykNCisgICAgew0KKyAgICAgICAgbV9QdHIgPSBzcmMubV9QdHI7DQorICAgICAgICBtX0xlbmd0aCA9IHNyYy5tX0xlbmd0aDsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZ0MmIG9wZXJhdG9yID0gKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzcmMpOw0KKw0KKyAgICBib29sCQkJb3BlcmF0b3IgPT0gKGNvbnN0IENGWF9CeXRlU3RyaW5nQyYgc3RyKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gCXN0ci5tX0xlbmd0aCA9PSBtX0xlbmd0aCAmJiBGWFNZU19tZW1jbXAzMihzdHIubV9QdHIsIG1fUHRyLCBtX0xlbmd0aCkgPT0gMDsNCisgICAgfQ0KKw0KKyAgICBib29sCQkJb3BlcmF0b3IgIT0gKGNvbnN0IENGWF9CeXRlU3RyaW5nQyYgc3RyKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gCXN0ci5tX0xlbmd0aCAhPSBtX0xlbmd0aCB8fCBGWFNZU19tZW1jbXAzMihzdHIubV9QdHIsIG1fUHRyLCBtX0xlbmd0aCkgIT0gMDsNCisgICAgfQ0KKyNkZWZpbmUgRlhCU1RSX0lEKGMxLCBjMiwgYzMsIGM0KSAoKGMxIDw8IDI0KSB8IChjMiA8PCAxNikgfCAoYzMgPDwgOCkgfCAoYzQpKQ0KKw0KKyAgICBGWF9EV09SRAkJR2V0SUQoRlhfU1RSU0laRSBzdGFydF9wb3MgPSAwKSBjb25zdDsNCisNCisgICAgRlhfTFBDQllURQkJR2V0UHRyKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fUHRyOw0KKyAgICB9DQorDQorICAgIEZYX0xQQ1NUUgkJR2V0Q1N0cigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoRlhfTFBDU1RSKW1fUHRyOw0KKyAgICB9DQorDQorICAgIEZYX1NUUlNJWkUJCUdldExlbmd0aCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0xlbmd0aDsNCisgICAgfQ0KKw0KKyAgICBib29sCQkJSXNFbXB0eSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0xlbmd0aCA9PSAwOw0KKyAgICB9DQorDQorICAgIG9wZXJhdG9yCQlGWF9MUENCWVRFKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fUHRyOw0KKyAgICB9DQorDQorICAgIEZYX0JZVEUJCQlHZXRBdChGWF9TVFJTSVpFIGluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9QdHJbaW5kZXhdOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nQwlNaWQoRlhfU1RSU0laRSBpbmRleCwgRlhfU1RSU0laRSBjb3VudCA9IC0xKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoaW5kZXggPCAwKSB7DQorICAgICAgICAgICAgaW5kZXggPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGluZGV4ID4gbV9MZW5ndGgpIHsNCisgICAgICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoY291bnQgPCAwIHx8IGNvdW50ID4gbV9MZW5ndGggLSBpbmRleCkgew0KKyAgICAgICAgICAgIGNvdW50ID0gbV9MZW5ndGggLSBpbmRleDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZ0MobV9QdHIgKyBpbmRleCwgY291bnQpOw0KKyAgICB9DQorcHJvdGVjdGVkOg0KKw0KKyAgICBGWF9MUENCWVRFCQltX1B0cjsNCisNCisgICAgRlhfU1RSU0laRQkJbV9MZW5ndGg7DQorcHJpdmF0ZToNCisNCisgICAgdm9pZCoJCQlvcGVyYXRvciBuZXcgKHNpemVfdCkgdGhyb3coKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KK307DQordHlwZWRlZiBjb25zdCBDRlhfQnl0ZVN0cmluZ0MmIEZYX0JTVFI7DQorI2RlZmluZSBGWF9CU1RSQyhzdHIpIENGWF9CeXRlU3RyaW5nQyhzdHIsIHNpemVvZiBzdHItMSkNCitzdHJ1Y3QgQ0ZYX1N0cmluZ0RhdGEgew0KKw0KKyAgICBsb25nCQltX25SZWZzOw0KKw0KKyAgICBGWF9TVFJTSVpFCW1fbkRhdGFMZW5ndGg7DQorDQorICAgIEZYX1NUUlNJWkUJbV9uQWxsb2NMZW5ndGg7DQorDQorICAgIEZYX0NIQVIJCW1fU3RyaW5nWzFdOw0KK307DQorY2xhc3MgQ0ZYX0J5dGVTdHJpbmcgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9CeXRlU3RyaW5nKCkNCisgICAgew0KKyAgICAgICAgbV9wRGF0YSA9IE5VTEw7DQorICAgIH0NCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0cik7DQorDQorICAgIENGWF9CeXRlU3RyaW5nKGNoYXIgY2gpOw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZyhGWF9MUENTVFIgcHRyLCBGWF9TVFJTSVpFIGxlbiA9IC0xKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcoRlhfTFBDQllURSBwdHIsIEZYX1NUUlNJWkUgbGVuKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcoRlhfQlNUUiBic3RyYyk7DQorDQorICAgIENGWF9CeXRlU3RyaW5nKEZYX0JTVFIgYnN0cmMxLCBGWF9CU1RSIGJzdHJjMik7DQorDQorICAgIH5DRlhfQnl0ZVN0cmluZygpOw0KKw0KKyAgICBzdGF0aWMgQ0ZYX0J5dGVTdHJpbmcJRnJvbVVuaWNvZGUoRlhfTFBDV1NUUiBwdHIsIEZYX1NUUlNJWkUgbGVuID0gLTEpOw0KKw0KKyAgICBzdGF0aWMgQ0ZYX0J5dGVTdHJpbmcJRnJvbVVuaWNvZGUoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cik7DQorDQorICAgIG9wZXJhdG9yCQkJCUZYX0xQQ1NUUigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEYXRhID8gbV9wRGF0YS0+bV9TdHJpbmcgOiAiIjsNCisgICAgfQ0KKw0KKyAgICBvcGVyYXRvcgkJCQlGWF9MUENCWVRFKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERhdGEgPyAoRlhfTFBDQllURSltX3BEYXRhLT5tX1N0cmluZyA6IE5VTEw7DQorICAgIH0NCisNCisgICAgRlhfU1RSU0laRQkJCQlHZXRMZW5ndGgoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRGF0YSA/IG1fcERhdGEtPm1fbkRhdGFMZW5ndGggOiAwOw0KKyAgICB9DQorDQorICAgIGJvb2wJCQkJCUlzRW1wdHkoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gIUdldExlbmd0aCgpOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJCUNvbXBhcmUoRlhfQlNUUiBzdHIpIGNvbnN0Ow0KKw0KKw0KKyAgICBib29sCQkJCQlFcXVhbChGWF9CU1RSIHN0cikgY29uc3Q7DQorDQorDQorICAgIGJvb2wJCQkJCUVxdWFsTm9DYXNlKEZYX0JTVFIgc3RyKSBjb25zdDsNCisNCisgICAgYm9vbAkJCQkJb3BlcmF0b3IgPT0gKEZYX0xQQ1NUUiBzdHIpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBFcXVhbChzdHIpOw0KKyAgICB9DQorDQorICAgIGJvb2wJCQkJCW9wZXJhdG9yID09IChGWF9CU1RSIHN0cikgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEVxdWFsKHN0cik7DQorICAgIH0NCisNCisgICAgYm9vbAkJCQkJb3BlcmF0b3IgPT0gKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIpIGNvbnN0Ow0KKw0KKyAgICBib29sCQkJCQlvcGVyYXRvciAhPSAoRlhfTFBDU1RSIHN0cikgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuICFFcXVhbChzdHIpOw0KKyAgICB9DQorDQorICAgIGJvb2wJCQkJCW9wZXJhdG9yICE9IChGWF9CU1RSIHN0cikgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuICFFcXVhbChzdHIpOw0KKyAgICB9DQorDQorICAgIGJvb2wJCQkJCW9wZXJhdG9yICE9IChjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3RyKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gIW9wZXJhdG9yPT0oc3RyKTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCQlFbXB0eSgpOw0KKw0KKyAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyYJb3BlcmF0b3IgPSAoRlhfTFBDU1RSIHN0cik7DQorDQorICAgIGNvbnN0IENGWF9CeXRlU3RyaW5nJglvcGVyYXRvciA9IChGWF9CU1RSIGJzdHJjKTsNCisNCisgICAgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmCW9wZXJhdG9yID0gKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHJpbmdTcmMpOw0KKw0KKyAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyYJb3BlcmF0b3IgPSAoY29uc3QgQ0ZYX0JpbmFyeUJ1ZiYgYnVmKTsNCisNCisgICAgdm9pZAkJCQkJTG9hZChGWF9MUENCWVRFIHN0ciwgRlhfU1RSU0laRSBsZW4pOw0KKw0KKyAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyYJb3BlcmF0b3IgKz0gKEZYX0NIQVIgY2gpOw0KKw0KKyAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyYJb3BlcmF0b3IgKz0gKEZYX0xQQ1NUUiBzdHIpOw0KKw0KKyAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyYJb3BlcmF0b3IgKz0gKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIpOw0KKw0KKyAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyYJb3BlcmF0b3IgKz0gKEZYX0JTVFIgYnN0cmMpOw0KKw0KKyAgICBGWF9CWVRFCQkJCQlHZXRBdChGWF9TVFJTSVpFIG5JbmRleCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERhdGEgPyBtX3BEYXRhLT5tX1N0cmluZ1tuSW5kZXhdIDogMDsNCisgICAgfQ0KKw0KKyAgICBGWF9CWVRFCQkJCQlvcGVyYXRvcltdKEZYX1NUUlNJWkUgbkluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRGF0YSA/IG1fcERhdGEtPm1fU3RyaW5nW25JbmRleF0gOiAwOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCVNldEF0KEZYX1NUUlNJWkUgbkluZGV4LCBGWF9DSEFSIGNoKTsNCisNCisgICAgRlhfU1RSU0laRQkJCQlJbnNlcnQoRlhfU1RSU0laRSBpbmRleCwgRlhfQ0hBUiBjaCk7DQorDQorICAgIEZYX1NUUlNJWkUJCQkJRGVsZXRlKEZYX1NUUlNJWkUgaW5kZXgsIEZYX1NUUlNJWkUgY291bnQgPSAxKTsNCisNCisNCisgICAgdm9pZAkJCQkJRm9ybWF0KEZYX0xQQ1NUUiBscHN6Rm9ybWF0LCAuLi4gKTsNCisNCisgICAgdm9pZAkJCQkJRm9ybWF0VihGWF9MUENTVFIgbHBzekZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KTsNCisNCisNCisgICAgdm9pZAkJCQkJUmVzZXJ2ZShGWF9TVFJTSVpFIGxlbik7DQorDQorICAgIEZYX0xQU1RSCQkJCUdldEJ1ZmZlcihGWF9TVFJTSVpFIGxlbik7DQorDQorICAgIEZYX0xQU1RSCQkJCUxvY2tCdWZmZXIoKTsNCisNCisgICAgdm9pZAkJCQkJUmVsZWFzZUJ1ZmZlcihGWF9TVFJTSVpFIGxlbiA9IC0xKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQlNaWQoRlhfU1RSU0laRSBmaXJzdCkgY29uc3Q7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQkJTWlkKEZYX1NUUlNJWkUgZmlyc3QsIEZYX1NUUlNJWkUgY291bnQpIGNvbnN0Ow0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCUxlZnQoRlhfU1RSU0laRSBjb3VudCkgY29uc3Q7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQkJUmlnaHQoRlhfU1RSU0laRSBjb3VudCkgY29uc3Q7DQorDQorICAgIEZYX1NUUlNJWkUJCQkJRmluZChGWF9CU1RSIGxwc3pTdWIsIEZYX1NUUlNJWkUgc3RhcnQgPSAwKSBjb25zdDsNCisNCisgICAgRlhfU1RSU0laRQkJCQlGaW5kKEZYX0NIQVIgY2gsIEZYX1NUUlNJWkUgc3RhcnQgPSAwKSBjb25zdDsNCisNCisgICAgRlhfU1RSU0laRQkJCQlSZXZlcnNlRmluZChGWF9DSEFSIGNoKSBjb25zdDsNCisNCisgICAgdm9pZAkJCQkJTWFrZUxvd2VyKCk7DQorDQorICAgIHZvaWQJCQkJCU1ha2VVcHBlcigpOw0KKw0KKyAgICB2b2lkCQkJCQlUcmltUmlnaHQoKTsNCisNCisgICAgdm9pZAkJCQkJVHJpbVJpZ2h0KEZYX0NIQVIgY2hUYXJnZXQpOw0KKw0KKyAgICB2b2lkCQkJCQlUcmltUmlnaHQoRlhfQlNUUiBscHN6VGFyZ2V0cyk7DQorDQorICAgIHZvaWQJCQkJCVRyaW1MZWZ0KCk7DQorDQorICAgIHZvaWQJCQkJCVRyaW1MZWZ0KEZYX0NIQVIgY2hUYXJnZXQpOw0KKw0KKyAgICB2b2lkCQkJCQlUcmltTGVmdChGWF9CU1RSIGxwc3pUYXJnZXRzKTsNCisNCisgICAgRlhfU1RSU0laRQkJCQlSZXBsYWNlKEZYX0JTVFIgbHBzek9sZCwgRlhfQlNUUiBscHN6TmV3KTsNCisNCisgICAgRlhfU1RSU0laRQkJCQlSZW1vdmUoRlhfQ0hBUiBjaCk7DQorDQorICAgIENGWF9XaWRlU3RyaW5nCQkJVVRGOERlY29kZSgpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJCQlDb252ZXJ0RnJvbShjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyLCBDRlhfQ2hhck1hcCogcENoYXJNYXAgPSBOVUxMKTsNCisNCisgICAgRlhfRFdPUkQJCQkJR2V0SUQoRlhfU1RSU0laRSBzdGFydF9wb3MgPSAwKSBjb25zdDsNCisNCisgICAgc3RhdGljIENGWF9CeXRlU3RyaW5nCUxvYWRGcm9tRmlsZShGWF9CU1RSIGZpbGVfcGF0aCk7DQorI2RlZmluZSBGWEZPUk1BVF9TSUdORUQJCQkxDQorI2RlZmluZSBGWEZPUk1BVF9IRVgJCQkyDQorI2RlZmluZSBGWEZPUk1BVF9DQVBJVEFMCQk0DQorDQorICAgIHN0YXRpYyBDRlhfQnl0ZVN0cmluZwlGb3JtYXRJbnRlZ2VyKGludCBpLCBGWF9EV09SRCBmbGFncyA9IDApOw0KKw0KKyAgICBzdGF0aWMgQ0ZYX0J5dGVTdHJpbmcJRm9ybWF0RmxvYXQoRlhfRkxPQVQgZiwgaW50IHByZWNpc2lvbiA9IDApOw0KK3Byb3RlY3RlZDoNCisNCisgICAgc3RydWN0IENGWF9TdHJpbmdEYXRhKgltX3BEYXRhOw0KKyAgICB2b2lkCQkJCQlBbGxvY0NvcHkoQ0ZYX0J5dGVTdHJpbmcmIGRlc3QsIEZYX1NUUlNJWkUgbkNvcHlMZW4sIEZYX1NUUlNJWkUgbkNvcHlJbmRleCwgRlhfU1RSU0laRSBuRXh0cmFMZW4pIGNvbnN0Ow0KKyAgICB2b2lkCQkJCQlBc3NpZ25Db3B5KEZYX1NUUlNJWkUgblNyY0xlbiwgRlhfTFBDU1RSIGxwc3pTcmNEYXRhKTsNCisgICAgdm9pZAkJCQkJQ29uY2F0Q29weShGWF9TVFJTSVpFIG5TcmMxTGVuLCBGWF9MUENTVFIgbHBzelNyYzFEYXRhLCBGWF9TVFJTSVpFIG5TcmMyTGVuLCBGWF9MUENTVFIgbHBzelNyYzJEYXRhKTsNCisgICAgdm9pZAkJCQkJQ29uY2F0SW5QbGFjZShGWF9TVFJTSVpFIG5TcmNMZW4sIEZYX0xQQ1NUUiBscHN6U3JjRGF0YSk7DQorICAgIHZvaWQJCQkJCUNvcHlCZWZvcmVXcml0ZSgpOw0KKyAgICB2b2lkCQkJCQlBbGxvY0JlZm9yZVdyaXRlKEZYX1NUUlNJWkUgbkxlbik7DQorfTsNCitpbmxpbmUgQ0ZYX0J5dGVTdHJpbmdDOjpDRlhfQnl0ZVN0cmluZ0MoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHNyYykNCit7DQorICAgIG1fUHRyID0gKEZYX0xQQ0JZVEUpc3JjOw0KKyAgICBtX0xlbmd0aCA9IHNyYy5HZXRMZW5ndGgoKTsNCit9DQoraW5saW5lIENGWF9CeXRlU3RyaW5nQyYgQ0ZYX0J5dGVTdHJpbmdDOjpvcGVyYXRvciA9IChjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3JjKQ0KK3sNCisgICAgbV9QdHIgPSAoRlhfTFBDQllURSlzcmM7DQorICAgIG1fTGVuZ3RoID0gc3JjLkdldExlbmd0aCgpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KKw0KK2lubGluZSBDRlhfQnl0ZVN0cmluZyBvcGVyYXRvciArIChGWF9CU1RSIHN0cjEsIEZYX0JTVFIgc3RyMikNCit7DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZyhzdHIxLCBzdHIyKTsNCit9DQoraW5saW5lIENGWF9CeXRlU3RyaW5nIG9wZXJhdG9yICsgKEZYX0JTVFIgc3RyMSwgRlhfTFBDU1RSIHN0cjIpDQorew0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoc3RyMSwgc3RyMik7DQorfQ0KK2lubGluZSBDRlhfQnl0ZVN0cmluZyBvcGVyYXRvciArIChGWF9MUENTVFIgc3RyMSwgRlhfQlNUUiBzdHIyKQ0KK3sNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKHN0cjEsIHN0cjIpOw0KK30NCitpbmxpbmUgQ0ZYX0J5dGVTdHJpbmcgb3BlcmF0b3IgKyAoRlhfQlNUUiBzdHIxLCBGWF9DSEFSIGNoKQ0KK3sNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKHN0cjEsIENGWF9CeXRlU3RyaW5nQyhjaCkpOw0KK30NCitpbmxpbmUgQ0ZYX0J5dGVTdHJpbmcgb3BlcmF0b3IgKyAoRlhfQ0hBUiBjaCwgRlhfQlNUUiBzdHIyKQ0KK3sNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKGNoLCBzdHIyKTsNCit9DQoraW5saW5lIENGWF9CeXRlU3RyaW5nIG9wZXJhdG9yICsgKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIxLCBjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3RyMikNCit7DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZyhzdHIxLCBzdHIyKTsNCit9DQoraW5saW5lIENGWF9CeXRlU3RyaW5nIG9wZXJhdG9yICsgKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIxLCBGWF9DSEFSIGNoKQ0KK3sNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKHN0cjEsIENGWF9CeXRlU3RyaW5nQyhjaCkpOw0KK30NCitpbmxpbmUgQ0ZYX0J5dGVTdHJpbmcgb3BlcmF0b3IgKyAoRlhfQ0hBUiBjaCwgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0cjIpDQorew0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoY2gsIHN0cjIpOw0KK30NCitpbmxpbmUgQ0ZYX0J5dGVTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0cjEsIEZYX0xQQ1NUUiBzdHIyKQ0KK3sNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKHN0cjEsIHN0cjIpOw0KK30NCitpbmxpbmUgQ0ZYX0J5dGVTdHJpbmcgb3BlcmF0b3IgKyAoRlhfTFBDU1RSIHN0cjEsIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIyKQ0KK3sNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKHN0cjEsIHN0cjIpOw0KK30NCitpbmxpbmUgQ0ZYX0J5dGVTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0cjEsIEZYX0JTVFIgc3RyMikNCit7DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZyhzdHIxLCBzdHIyKTsNCit9DQoraW5saW5lIENGWF9CeXRlU3RyaW5nIG9wZXJhdG9yICsgKEZYX0JTVFIgc3RyMSwgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0cjIpDQorew0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoc3RyMSwgc3RyMik7DQorfQ0KK2NsYXNzIENGWF9TdHJpbmdCdWZCYXNlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDRlhfU3RyaW5nQnVmQmFzZShGWF9TVFJTSVpFIGxpbWl0KQ0KKyAgICB7DQorICAgICAgICBtX1NpemUgPSAwOw0KKyAgICAgICAgbV9MaW1pdCA9IGxpbWl0Ow0KKyAgICB9DQorDQorICAgIEZYX0NIQVIqCUdldFB0cigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoRlhfQ0hBUiopKHRoaXMgKyAxKTsNCisgICAgfQ0KKw0KKyAgICBGWF9TVFJTSVpFCUdldFNpemUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9TaXplOw0KKyAgICB9DQorDQorICAgIHZvaWQJCUVtcHR5KCkNCisgICAgew0KKyAgICAgICAgbV9TaXplID0gMDsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQlDb3B5KEZYX0JTVFIgc3RyKTsNCisNCisgICAgdm9pZAkJQXBwZW5kKEZYX0JTVFIgc3RyKTsNCisNCisgICAgdm9pZAkJQXBwZW5kKGludCBpLCBGWF9EV09SRCBmbGFncyA9IDApOw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZ0MJCUdldFN0cmluZ0MoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKChGWF9DSEFSKikodGhpcyArIDEpLCBtX1NpemUpOw0KKyAgICB9DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXRTdHJpbmcoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKEZYX0NIQVIqKSh0aGlzICsgMSksIG1fU2l6ZSk7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorDQorICAgIEZYX1NUUlNJWkUJbV9MaW1pdDsNCisNCisgICAgRlhfU1RSU0laRQltX1NpemU7DQorfTsNCit0ZW1wbGF0ZTxGWF9TVFJTSVpFIGxpbWl0Pg0KK2NsYXNzIENGWF9TdHJpbmdCdWZUZW1wbGF0ZSA6IHB1YmxpYyBDRlhfU3RyaW5nQnVmQmFzZQ0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9TdHJpbmdCdWZUZW1wbGF0ZSgpIDogQ0ZYX1N0cmluZ0J1ZkJhc2UobGltaXQpIHt9DQorDQorICAgIEZYX0NIQVIJCW1fQnVmZmVyW2xpbWl0XTsNCit9Ow0KK3R5cGVkZWYgQ0ZYX1N0cmluZ0J1ZlRlbXBsYXRlPDI1Nj4gQ0ZYX1N0cmluZ0J1ZjI1NjsNCitjbGFzcyBDRlhfV2lkZVN0cmluZ0MgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9XaWRlU3RyaW5nQygpDQorICAgIHsNCisgICAgICAgIG1fUHRyID0gTlVMTDsNCisgICAgICAgIG1fTGVuZ3RoID0gMDsNCisgICAgfQ0KKw0KKyAgICBDRlhfV2lkZVN0cmluZ0MoRlhfTFBDV1NUUiBwdHIpDQorICAgIHsNCisgICAgICAgIG1fUHRyID0gcHRyOw0KKyAgICAgICAgbV9MZW5ndGggPSBwdHIgPyAoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4ocHRyKSA6IDA7DQorICAgIH0NCisNCisgICAgQ0ZYX1dpZGVTdHJpbmdDKEZYX1dDSEFSJiBjaCkNCisgICAgew0KKyAgICAgICAgbV9QdHIgPSAmY2g7DQorICAgICAgICBtX0xlbmd0aCA9IDE7DQorICAgIH0NCisNCisgICAgQ0ZYX1dpZGVTdHJpbmdDKEZYX0xQQ1dTVFIgcHRyLCBGWF9TVFJTSVpFIGxlbikNCisgICAgew0KKyAgICAgICAgbV9QdHIgPSBwdHI7DQorICAgICAgICBpZiAobGVuID09IC0xKSB7DQorICAgICAgICAgICAgbV9MZW5ndGggPSAoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4ocHRyKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9MZW5ndGggPSBsZW47DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQ0ZYX1dpZGVTdHJpbmdDKGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3JjKQ0KKyAgICB7DQorICAgICAgICBtX1B0ciA9IHNyYy5tX1B0cjsNCisgICAgICAgIG1fTGVuZ3RoID0gc3JjLm1fTGVuZ3RoOw0KKyAgICB9DQorDQorICAgIENGWF9XaWRlU3RyaW5nQyhjb25zdCBDRlhfV2lkZVN0cmluZyYgc3JjKTsNCisNCisgICAgQ0ZYX1dpZGVTdHJpbmdDJiBvcGVyYXRvciA9IChGWF9MUENXU1RSIHNyYykNCisgICAgew0KKyAgICAgICAgbV9QdHIgPSBzcmM7DQorICAgICAgICBtX0xlbmd0aCA9IChGWF9TVFJTSVpFKUZYU1lTX3djc2xlbihzcmMpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorICAgIENGWF9XaWRlU3RyaW5nQyYgb3BlcmF0b3IgPSAoY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzcmMpDQorICAgIHsNCisgICAgICAgIG1fUHRyID0gc3JjLm1fUHRyOw0KKyAgICAgICAgbV9MZW5ndGggPSBzcmMubV9MZW5ndGg7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgQ0ZYX1dpZGVTdHJpbmdDJiBvcGVyYXRvciA9IChjb25zdCBDRlhfV2lkZVN0cmluZyYgc3JjKTsNCisNCisgICAgYm9vbAkJCW9wZXJhdG9yID09IChjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHN0cikgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIAlzdHIubV9MZW5ndGggPT0gbV9MZW5ndGggJiYgRlhTWVNfbWVtY21wMzIoc3RyLm1fUHRyLCBtX1B0ciwgbV9MZW5ndGggKiBzaXplb2YoRlhfV0NIQVIpKSA9PSAwOw0KKyAgICB9DQorDQorICAgIGJvb2wJCQlvcGVyYXRvciAhPSAoY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzdHIpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAJc3RyLm1fTGVuZ3RoICE9IG1fTGVuZ3RoIHx8IEZYU1lTX21lbWNtcDMyKHN0ci5tX1B0ciwgbV9QdHIsIG1fTGVuZ3RoICogc2l6ZW9mKEZYX1dDSEFSKSkgIT0gMDsNCisgICAgfQ0KKw0KKyAgICBGWF9MUENXU1RSCQlHZXRQdHIoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9QdHI7DQorICAgIH0NCisNCisgICAgRlhfU1RSU0laRQkJR2V0TGVuZ3RoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fTGVuZ3RoOw0KKyAgICB9DQorDQorICAgIGJvb2wJCQlJc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fTGVuZ3RoID09IDA7DQorICAgIH0NCisNCisgICAgRlhfV0NIQVIJCUdldEF0KEZYX1NUUlNJWkUgaW5kZXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1B0cltpbmRleF07DQorICAgIH0NCisNCisgICAgQ0ZYX1dpZGVTdHJpbmdDCUxlZnQoRlhfU1RSU0laRSBjb3VudCkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKGNvdW50IDwgMSkgew0KKyAgICAgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZ0MoKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjb3VudCA+IG1fTGVuZ3RoKSB7DQorICAgICAgICAgICAgY291bnQgPSBtX0xlbmd0aDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZ0MobV9QdHIsIGNvdW50KTsNCisgICAgfQ0KKw0KKyAgICBDRlhfV2lkZVN0cmluZ0MJTWlkKEZYX1NUUlNJWkUgaW5kZXgsIEZYX1NUUlNJWkUgY291bnQgPSAtMSkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKGluZGV4IDwgMCkgew0KKyAgICAgICAgICAgIGluZGV4ID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChpbmRleCA+IG1fTGVuZ3RoKSB7DQorICAgICAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nQygpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNvdW50IDwgMCB8fCBjb3VudCA+IG1fTGVuZ3RoIC0gaW5kZXgpIHsNCisgICAgICAgICAgICBjb3VudCA9IG1fTGVuZ3RoIC0gaW5kZXg7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmdDKG1fUHRyICsgaW5kZXgsIGNvdW50KTsNCisgICAgfQ0KKw0KKyAgICBDRlhfV2lkZVN0cmluZ0MJUmlnaHQoRlhfU1RSU0laRSBjb3VudCkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKGNvdW50IDwgMSkgew0KKyAgICAgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZ0MoKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjb3VudCA+IG1fTGVuZ3RoKSB7DQorICAgICAgICAgICAgY291bnQgPSBtX0xlbmd0aDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZ0MobV9QdHIgKyBtX0xlbmd0aCAtIGNvdW50LCBjb3VudCk7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorDQorICAgIEZYX0xQQ1dTVFIJCW1fUHRyOw0KKw0KKyAgICBGWF9TVFJTSVpFCQltX0xlbmd0aDsNCitwcml2YXRlOg0KKw0KKyAgICB2b2lkKgkJCW9wZXJhdG9yIG5ldyAoc2l6ZV90KSB0aHJvdygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorfTsNCit0eXBlZGVmIGNvbnN0IENGWF9XaWRlU3RyaW5nQyYJRlhfV1NUUjsNCisjZGVmaW5lIEZYX1dTVFJDKHdzdHIpIENGWF9XaWRlU3RyaW5nQygoRlhfTFBDV1NUUil3c3RyLCBzaXplb2Yod3N0cikgLyBzaXplb2YoRlhfV0NIQVIpIC0gMSkNCitzdHJ1Y3QgQ0ZYX1N0cmluZ0RhdGFXIHsNCisNCisgICAgbG9uZwkJbV9uUmVmczsNCisNCisgICAgRlhfU1RSU0laRQltX25EYXRhTGVuZ3RoOw0KKw0KKyAgICBGWF9TVFJTSVpFCW1fbkFsbG9jTGVuZ3RoOw0KKw0KKyAgICBGWF9XQ0hBUgltX1N0cmluZ1sxXTsNCit9Ow0KK2NsYXNzIENGWF9XaWRlU3RyaW5nIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDRlhfV2lkZVN0cmluZygpDQorICAgIHsNCisgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICB9DQorDQorICAgIENGWF9XaWRlU3RyaW5nKGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzdHIpOw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZyhGWF9MUENXU1RSIHB0ciwgRlhfU1RSU0laRSBsZW4gPSAtMSkNCisgICAgew0KKyAgICAgICAgSW5pdFN0cihwdHIsIGxlbik7DQorICAgIH0NCisNCisgICAgQ0ZYX1dpZGVTdHJpbmcoRlhfV0NIQVIgY2gpOw0KKw0KKyAgICBDRlhfV2lkZVN0cmluZyhjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHN0cik7DQorDQorICAgIENGWF9XaWRlU3RyaW5nKGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3RyMSwgY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzdHIyKTsNCisNCisgICAgfkNGWF9XaWRlU3RyaW5nKCk7DQorDQorICAgIHN0YXRpYyBDRlhfV2lkZVN0cmluZwlGcm9tTG9jYWwoY29uc3QgY2hhciogc3RyLCBGWF9TVFJTSVpFIGxlbiA9IC0xKTsNCisNCisgICAgc3RhdGljIENGWF9XaWRlU3RyaW5nCUZyb21VVEY4KGNvbnN0IGNoYXIqIHN0ciwgRlhfU1RSU0laRSBsZW4gPSAtMSk7DQorDQorICAgIHN0YXRpYyBDRlhfV2lkZVN0cmluZwlGcm9tVVRGMTZMRShjb25zdCB1bnNpZ25lZCBzaG9ydCogc3RyLCBGWF9TVFJTSVpFIGxlbiA9IC0xKTsNCisNCisgICAgb3BlcmF0b3IgRlhfTFBDV1NUUigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEYXRhID8gbV9wRGF0YS0+bV9TdHJpbmcgOiAoRlhfV0NIQVIqKUwiIjsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCQlFbXB0eSgpOw0KKw0KKw0KKyAgICBGWF9CT09MCQkJCQlJc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuICFHZXRMZW5ndGgoKTsNCisgICAgfQ0KKw0KKyAgICBGWF9TVFJTSVpFCQkJCUdldExlbmd0aCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEYXRhID8gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCA6IDA7DQorICAgIH0NCisNCisgICAgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmCW9wZXJhdG9yID0gKEZYX0xQQ1dTVFIgc3RyKTsNCisNCisgICAgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmCW9wZXJhdG9yID0oY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cmluZ1NyYyk7DQorDQorICAgIGNvbnN0IENGWF9XaWRlU3RyaW5nJglvcGVyYXRvciA9KGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3RyaW5nU3JjKTsNCisNCisgICAgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmCW9wZXJhdG9yICs9IChGWF9MUENXU1RSIHN0cik7DQorDQorICAgIGNvbnN0IENGWF9XaWRlU3RyaW5nJglvcGVyYXRvciArPSAoRlhfV0NIQVIgY2gpOw0KKw0KKyAgICBjb25zdCBDRlhfV2lkZVN0cmluZyYJb3BlcmF0b3IgKz0gKGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzdHIpOw0KKw0KKyAgICBjb25zdCBDRlhfV2lkZVN0cmluZyYJb3BlcmF0b3IgKz0gKGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3RyKTsNCisNCisgICAgRlhfV0NIQVIJCQkJR2V0QXQoRlhfU1RSU0laRSBuSW5kZXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEYXRhID8gbV9wRGF0YS0+bV9TdHJpbmdbbkluZGV4XSA6IDA7DQorICAgIH0NCisNCisgICAgRlhfV0NIQVIJCQkJb3BlcmF0b3JbXShGWF9TVFJTSVpFIG5JbmRleCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERhdGEgPyBtX3BEYXRhLT5tX1N0cmluZ1tuSW5kZXhdIDogMDsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJCQlTZXRBdChGWF9TVFJTSVpFIG5JbmRleCwgRlhfV0NIQVIgY2gpOw0KKw0KKyAgICBpbnQJCQkJCQlDb21wYXJlKEZYX0xQQ1dTVFIgc3RyKSBjb25zdDsNCisNCisgICAgaW50CQkJCQkJQ29tcGFyZShjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyKSBjb25zdDsNCisNCisgICAgaW50CQkJCQkJQ29tcGFyZU5vQ2FzZShGWF9MUENXU1RSIHN0cikgY29uc3Q7DQorDQorICAgIGJvb2wJCQkJCUVxdWFsKGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3RyKSBjb25zdDsNCisNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQlNaWQoRlhfU1RSU0laRSBmaXJzdCkgY29uc3Q7DQorDQorICAgIENGWF9XaWRlU3RyaW5nCQkJTWlkKEZYX1NUUlNJWkUgZmlyc3QsIEZYX1NUUlNJWkUgY291bnQpIGNvbnN0Ow0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCUxlZnQoRlhfU1RSU0laRSBjb3VudCkgY29uc3Q7DQorDQorICAgIENGWF9XaWRlU3RyaW5nCQkJUmlnaHQoRlhfU1RSU0laRSBjb3VudCkgY29uc3Q7DQorDQorICAgIEZYX1NUUlNJWkUJCQkJSW5zZXJ0KEZYX1NUUlNJWkUgaW5kZXgsIEZYX1dDSEFSIGNoKTsNCisNCisgICAgRlhfU1RSU0laRQkJCQlEZWxldGUoRlhfU1RSU0laRSBpbmRleCwgRlhfU1RSU0laRSBjb3VudCA9IDEpOw0KKw0KKyAgICB2b2lkCQkJCQlGb3JtYXQoRlhfTFBDV1NUUiBscHN6Rm9ybWF0LCAuLi4gKTsNCisNCisgICAgdm9pZAkJCQkJRm9ybWF0VihGWF9MUENXU1RSIGxwc3pGb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCk7DQorDQorICAgIHZvaWQJCQkJCU1ha2VMb3dlcigpOw0KKw0KKyAgICB2b2lkCQkJCQlNYWtlVXBwZXIoKTsNCisNCisgICAgdm9pZAkJCQkJVHJpbVJpZ2h0KCk7DQorDQorICAgIHZvaWQJCQkJCVRyaW1SaWdodChGWF9XQ0hBUiBjaFRhcmdldCk7DQorDQorICAgIHZvaWQJCQkJCVRyaW1SaWdodChGWF9MUENXU1RSIGxwc3pUYXJnZXRzKTsNCisNCisgICAgdm9pZAkJCQkJVHJpbUxlZnQoKTsNCisNCisgICAgdm9pZAkJCQkJVHJpbUxlZnQoRlhfV0NIQVIgY2hUYXJnZXQpOw0KKw0KKyAgICB2b2lkCQkJCQlUcmltTGVmdChGWF9MUENXU1RSIGxwc3pUYXJnZXRzKTsNCisNCisgICAgdm9pZAkJCQkJUmVzZXJ2ZShGWF9TVFJTSVpFIGxlbik7DQorDQorICAgIEZYX0xQV1NUUgkJCQlHZXRCdWZmZXIoRlhfU1RSU0laRSBsZW4pOw0KKw0KKyAgICBGWF9MUFdTVFIJCQkJTG9ja0J1ZmZlcigpOw0KKw0KKyAgICB2b2lkCQkJCQlSZWxlYXNlQnVmZmVyKEZYX1NUUlNJWkUgbGVuID0gLTEpOw0KKw0KKyAgICBpbnQJCQkJCQlHZXRJbnRlZ2VyKCkgY29uc3Q7DQorDQorICAgIEZYX0ZMT0FUCQkJCUdldEZsb2F0KCkgY29uc3Q7DQorDQorICAgIEZYX1NUUlNJWkUJCQkJRmluZChGWF9MUENXU1RSIGxwc3pTdWIsIEZYX1NUUlNJWkUgc3RhcnQgPSAwKSBjb25zdDsNCisNCisgICAgRlhfU1RSU0laRQkJCQlGaW5kKEZYX1dDSEFSIGNoLCBGWF9TVFJTSVpFIHN0YXJ0ID0gMCkgY29uc3Q7DQorDQorICAgIEZYX1NUUlNJWkUJCQkJUmVwbGFjZShGWF9MUENXU1RSIGxwc3pPbGQsIEZYX0xQQ1dTVFIgbHBzek5ldyk7DQorDQorICAgIEZYX1NUUlNJWkUJCQkJUmVtb3ZlKEZYX1dDSEFSIGNoKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQlVVEY4RW5jb2RlKCkgY29uc3Q7DQorDQorICAgIENGWF9CeXRlU3RyaW5nCQkJVVRGMTZMRV9FbmNvZGUoRlhfQk9PTCBiVGVybWluYXRlID0gVFJVRSkgY29uc3Q7DQorDQorICAgIHZvaWQJCQkJCUNvbnZlcnRGcm9tKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIsIENGWF9DaGFyTWFwKiBwQ2hhck1hcCA9IE5VTEwpOw0KK3Byb3RlY3RlZDoNCisgICAgdm9pZAkJCQkJSW5pdFN0cihGWF9MUENXU1RSIHB0ciwgaW50IGxlbik7DQorDQorICAgIENGWF9TdHJpbmdEYXRhVyoJCW1fcERhdGE7DQorICAgIHZvaWQJCQkJCUNvcHlCZWZvcmVXcml0ZSgpOw0KKyAgICB2b2lkCQkJCQlBbGxvY0JlZm9yZVdyaXRlKEZYX1NUUlNJWkUgbkxlbik7DQorICAgIHZvaWQJCQkJCUNvbmNhdEluUGxhY2UoRlhfU1RSU0laRSBuU3JjTGVuLCBGWF9MUENXU1RSIGxwc3pTcmNEYXRhKTsNCisgICAgdm9pZAkJCQkJQ29uY2F0Q29weShGWF9TVFJTSVpFIG5TcmMxTGVuLCBGWF9MUENXU1RSIGxwc3pTcmMxRGF0YSwgRlhfU1RSU0laRSBuU3JjMkxlbiwgRlhfTFBDV1NUUiBscHN6U3JjMkRhdGEpOw0KKyAgICB2b2lkCQkJCQlBc3NpZ25Db3B5KEZYX1NUUlNJWkUgblNyY0xlbiwgRlhfTFBDV1NUUiBscHN6U3JjRGF0YSk7DQorICAgIHZvaWQJCQkJCUFsbG9jQ29weShDRlhfV2lkZVN0cmluZyYgZGVzdCwgRlhfU1RSU0laRSBuQ29weUxlbiwgRlhfU1RSU0laRSBuQ29weUluZGV4LCBGWF9TVFJTSVpFIG5FeHRyYUxlbikgY29uc3Q7DQorfTsNCitpbmxpbmUgQ0ZYX1dpZGVTdHJpbmdDOjpDRlhfV2lkZVN0cmluZ0MoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHNyYykNCit7DQorICAgIG1fUHRyID0gKEZYX0xQQ1dTVFIpc3JjOw0KKyAgICBtX0xlbmd0aCA9IHNyYy5HZXRMZW5ndGgoKTsNCit9DQoraW5saW5lIENGWF9XaWRlU3RyaW5nQyYgQ0ZYX1dpZGVTdHJpbmdDOjpvcGVyYXRvciA9IChjb25zdCBDRlhfV2lkZVN0cmluZyYgc3JjKQ0KK3sNCisgICAgbV9QdHIgPSAoRlhfTFBDV1NUUilzcmM7DQorICAgIG1fTGVuZ3RoID0gc3JjLkdldExlbmd0aCgpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KKw0KK2lubGluZSBDRlhfV2lkZVN0cmluZyBvcGVyYXRvciArIChjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHN0cjEsIGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3RyMikNCit7DQorICAgIHJldHVybiBDRlhfV2lkZVN0cmluZyhzdHIxLCBzdHIyKTsNCit9DQoraW5saW5lIENGWF9XaWRlU3RyaW5nIG9wZXJhdG9yICsgKGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3RyMSwgRlhfTFBDV1NUUiBzdHIyKQ0KK3sNCisgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKHN0cjEsIHN0cjIpOw0KK30NCitpbmxpbmUgQ0ZYX1dpZGVTdHJpbmcgb3BlcmF0b3IgKyAoRlhfTFBDV1NUUiBzdHIxLCBjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHN0cjIpDQorew0KKyAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoc3RyMSwgc3RyMik7DQorfQ0KK2lubGluZSBDRlhfV2lkZVN0cmluZyBvcGVyYXRvciArIChjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHN0cjEsIEZYX1dDSEFSIGNoKQ0KK3sNCisgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKHN0cjEsIENGWF9XaWRlU3RyaW5nQyhjaCkpOw0KK30NCitpbmxpbmUgQ0ZYX1dpZGVTdHJpbmcgb3BlcmF0b3IgKyAoRlhfV0NIQVIgY2gsIGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3RyMikNCit7DQorICAgIHJldHVybiBDRlhfV2lkZVN0cmluZyhjaCwgc3RyMik7DQorfQ0KK2lubGluZSBDRlhfV2lkZVN0cmluZyBvcGVyYXRvciArIChjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyMSwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cjIpDQorew0KKyAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoc3RyMSwgc3RyMik7DQorfQ0KK2lubGluZSBDRlhfV2lkZVN0cmluZyBvcGVyYXRvciArIChjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyMSwgRlhfV0NIQVIgY2gpDQorew0KKyAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoc3RyMSwgQ0ZYX1dpZGVTdHJpbmdDKGNoKSk7DQorfQ0KK2lubGluZSBDRlhfV2lkZVN0cmluZyBvcGVyYXRvciArIChGWF9XQ0hBUiBjaCwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cjIpDQorew0KKyAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoY2gsIHN0cjIpOw0KK30NCitpbmxpbmUgQ0ZYX1dpZGVTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cjEsIEZYX0xQQ1dTVFIgc3RyMikNCit7DQorICAgIHJldHVybiBDRlhfV2lkZVN0cmluZyhzdHIxLCBzdHIyKTsNCit9DQoraW5saW5lIENGWF9XaWRlU3RyaW5nIG9wZXJhdG9yICsgKEZYX0xQQ1dTVFIgc3RyMSwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cjIpDQorew0KKyAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoc3RyMSwgc3RyMik7DQorfQ0KK2lubGluZSBDRlhfV2lkZVN0cmluZyBvcGVyYXRvciArIChjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyMSwgY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzdHIyKQ0KK3sNCisgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKHN0cjEsIHN0cjIpOw0KK30NCitpbmxpbmUgQ0ZYX1dpZGVTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzdHIxLCBjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyMikNCit7DQorICAgIHJldHVybiBDRlhfV2lkZVN0cmluZyhzdHIxLCBzdHIyKTsNCit9DQorDQorYm9vbCBvcGVyYXRvcj09KGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzMSwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMyKTsNCitib29sIG9wZXJhdG9yPT0oY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMxLCBjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHMyKTsNCitib29sIG9wZXJhdG9yPT0oY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzMSwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMyKTsNCitib29sIG9wZXJhdG9yPT0gKGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzMSwgRlhfTFBDV1NUUiBzMik7DQorYm9vbCBvcGVyYXRvcj09KEZYX0xQQ1dTVFIgczEsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzMik7DQorYm9vbCBvcGVyYXRvciE9KGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzMSwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMyKTsNCitib29sIG9wZXJhdG9yIT0oY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMxLCBjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHMyKTsNCitib29sIG9wZXJhdG9yIT0oY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzMSwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMyKTsNCitib29sIG9wZXJhdG9yIT0gKGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzMSwgRlhfTFBDV1NUUiBzMik7DQorYm9vbCBvcGVyYXRvciE9KEZYX0xQQ1dTVFIgczEsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzMik7DQorRlhfRkxPQVQgRlhfYXRvZihGWF9CU1RSIHN0cik7DQordm9pZCBGWF9hdG9udW0oRlhfQlNUUiBzdHIsIEZYX0JPT0wmIGJJbnRlZ2VyLCB2b2lkKiBwRGF0YSk7DQorRlhfU1RSU0laRSBGWF9mdG9hKEZYX0ZMT0FUIGYsIEZYX0xQU1RSIGJ1Zik7DQorQ0ZYX0J5dGVTdHJpbmcJRlhfVVRGOEVuY29kZShGWF9MUENXU1RSIHB3c1N0ciwgRlhfU1RSU0laRSBsZW4pOw0KK2lubGluZSBDRlhfQnl0ZVN0cmluZwlGWF9VVEY4RW5jb2RlKEZYX1dTVFIgd3NTdHIpDQorew0KKyAgICByZXR1cm4gRlhfVVRGOEVuY29kZSh3c1N0ci5HZXRQdHIoKSwgd3NTdHIuR2V0TGVuZ3RoKCkpOw0KK30NCitpbmxpbmUgQ0ZYX0J5dGVTdHJpbmcJRlhfVVRGOEVuY29kZShjb25zdCBDRlhfV2lkZVN0cmluZyAmd3NTdHIpDQorew0KKyAgICByZXR1cm4gRlhfVVRGOEVuY29kZSgoRlhfTFBDV1NUUil3c1N0ciwgd3NTdHIuR2V0TGVuZ3RoKCkpOw0KK30NCitjbGFzcyBDRlhfQnl0ZVN0cmluZ0wgOiBwdWJsaWMgQ0ZYX0J5dGVTdHJpbmdDDQorew0KK3B1YmxpYzoNCisgICAgQ0ZYX0J5dGVTdHJpbmdMKCkgOiBDRlhfQnl0ZVN0cmluZ0MoKSB7fQ0KKyAgICB+Q0ZYX0J5dGVTdHJpbmdMKCkge30NCisNCisgICAgdm9pZAkJRW1wdHkoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcik7DQorICAgIEZYX0xQU1RSCUFsbG9jQnVmZmVyKEZYX1NUUlNJWkUgbGVuZ3RoLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKTsNCisNCisgICAgdm9pZAkJU2V0KEZYX0JTVFIgc3JjLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKTsNCit9Ow0KK2NsYXNzIENGWF9XaWRlU3RyaW5nTCA6IHB1YmxpYyBDRlhfV2lkZVN0cmluZ0MNCit7DQorcHVibGljOg0KKyAgICBDRlhfV2lkZVN0cmluZ0woKSA6IENGWF9XaWRlU3RyaW5nQygpIHt9DQorICAgIH5DRlhfV2lkZVN0cmluZ0woKSB7fQ0KKw0KKyAgICB2b2lkCQlFbXB0eShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKTsNCisgICAgdm9pZAkJU2V0KEZYX1dTVFIgc3JjLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKTsNCisNCisgICAgaW50CQkJR2V0SW50ZWdlcigpIGNvbnN0Ow0KKyAgICBGWF9GTE9BVAlHZXRGbG9hdCgpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQlUcmltUmlnaHQoRlhfTFBDV1NUUiBscHN6VGFyZ2V0cyk7DQorfTsNCit2b2lkCUZYX1VURjhFbmNvZGUoRlhfTFBDV1NUUiBwd3NTdHIsIEZYX1NUUlNJWkUgbGVuLCBDRlhfQnl0ZVN0cmluZ0wgJnV0ZjhTdHIsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfc3lzdGVtLmggYi9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfc3lzdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcyYmUwZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGNydC9meF9zeXN0ZW0uaApAQCAtMCwwICsxLDI3OSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhfU1lTVEVNX0hfDQorI2RlZmluZSBfRlhfU1lTVEVNX0hfDQorI2RlZmluZSBfRlhfV0lOMzJfREVTS1RPUF8JCTENCisjZGVmaW5lIF9GWF9MSU5VWF9ERVNLVE9QXwkJNA0KKyNkZWZpbmUgX0ZYX01BQ09TWF8JCQkJNw0KKyNkZWZpbmUgX0ZYX0FORFJPSURfCQkJMTINCisjZGVmaW5lIF9GWE1fUExBVEZPUk1fV0lORE9XU18JCTENCisjZGVmaW5lIF9GWE1fUExBVEZPUk1fTElOVVhfCQkyDQorI2RlZmluZSBfRlhNX1BMQVRGT1JNX0FQUExFXwkJMw0KKyNkZWZpbmUgX0ZYTV9QTEFURk9STV9BTkRST0lEXwkJNA0KKyNpZm5kZWYgX0ZYX09TXw0KKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQ0KKyNkZWZpbmUgX0ZYX09TXyBfRlhfQU5EUk9JRF8NCisjZGVmaW5lIF9GWE1fUExBVEZPUk1fIF9GWE1fUExBVEZPUk1fQU5EUk9JRF8NCisjZWxpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpDQorI2RlZmluZSBfRlhfT1NfIF9GWF9XSU4zMl9ERVNLVE9QXw0KKyNkZWZpbmUgX0ZYTV9QTEFURk9STV8gX0ZYTV9QTEFURk9STV9XSU5ET1dTXw0KKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQ0KKyNkZWZpbmUgX0ZYX09TXyBfRlhfTElOVVhfREVTS1RPUF8NCisjZGVmaW5lIF9GWE1fUExBVEZPUk1fIF9GWE1fUExBVEZPUk1fTElOVVhfDQorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pDQorI2RlZmluZSBfRlhfT1NfIF9GWF9NQUNPU1hfDQorI2RlZmluZSBfRlhNX1BMQVRGT1JNXyBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyNlbmRpZg0KKyNlbmRpZg0KKyNpZiAhZGVmaW5lZChfRlhfT1NfKSB8fCBfRlhfT1NfID09IDANCisjZXJyb3IgU29ycnksIGNhbiBub3QgZmlndXJlIG91dCB3aGF0IE9TIHlvdSBhcmUgdGFyZ2V0aW5nIHRvLiBQbGVhc2Ugc3BlY2lmeSBfRlhfT1NfIG1hY3JvLg0KKyNlbmRpZg0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUw0KKyNpbmNsdWRlIDx3aW5kb3dzLmg+DQorI2VuZGlmDQorI2RlZmluZSBfRlhfVzMyXwkJMQ0KKyNkZWZpbmUgX0ZYX1c2NF8JCTINCisjaWZuZGVmIF9GWF9XT1JEU0laRV8NCisjaWYgZGVmaW5lZChfV0lONjQpIHx8IGRlZmluZWQoX19hcm02NCkgfHwgZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9NX0lBNjQpIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBfX1dPUkRTSVpFID09IDY0DQorI2RlZmluZSBfRlhfV09SRFNJWkVfCV9GWF9XNjRfDQorI2Vsc2UNCisjZGVmaW5lIF9GWF9XT1JEU0laRV8JX0ZYX1czMl8NCisjZW5kaWYNCisjZW5kaWYNCisjaW5jbHVkZSA8c3RkZGVmLmg+DQorI2luY2x1ZGUgPHN0ZGFyZy5oPg0KKyNpbmNsdWRlIDxzZXRqbXAuaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKyNpbmNsdWRlIDxhc3NlcnQuaD4NCisjaW5jbHVkZSA8d2NoYXIuaD4NCisjaWYgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisjaW5jbHVkZSA8bGlia2Vybi9PU0F0b21pYy5oPg0KKyNpZiBfRlhfT1NfID09IF9GWF9NQUNPU1hfDQorI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD4NCisjZWxpZiBfRlhfT1NfID09IF9GWF9JT1NfDQorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+DQorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4NCisjZW5kaWYNCisjZW5kaWYNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCit0eXBlZGVmIHZvaWQqCQkJCQlGWF9MUFZPSUQ7DQordHlwZWRlZiB2b2lkIGNvbnN0KgkJCQlGWF9MUENWT0lEOw0KK3R5cGVkZWYgdm9pZCoJCQkJCUZYX1BPU0lUSU9OOw0KK3R5cGVkZWYgc2lnbmVkIGNoYXIJCQkJRlhfSU5UODsNCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIJCQlGWF9VSU5UODsNCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIJCQlGWF9CWVRFOw0KK3R5cGVkZWYgdW5zaWduZWQgY2hhcioJCQlGWF9MUEJZVEU7DQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIGNvbnN0KglGWF9MUENCWVRFOw0KK3R5cGVkZWYgc2hvcnQJCQkJCUZYX0lOVDE2Ow0KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQJCQlGWF9VSU5UMTY7DQordHlwZWRlZiBzaG9ydAkJCQkJRlhfU0hPUlQ7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydAkJCUZYX1dPUkQ7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCoJCQlGWF9MUFdPUkQ7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBjb25zdCoJRlhfTFBDV09SRDsNCit0eXBlZGVmIGludAkJCQkJCUZYX0lOVDMyOw0KK3R5cGVkZWYgZmxvYXQJCQkJCUZYX0ZMT0FUOw0KK3R5cGVkZWYgaW50CQkJCQkJRlhfQk9PTDsNCit0eXBlZGVmIGludAkJCQkJCUZYX0VSUjsNCisjZGVmaW5lIEZYX1NVQ0NFRURFRChTdGF0dXMpCSgoRlhfRVJSKShTdGF0dXMpID49IDApDQorI2RlZmluZSBGWF9GQUlMRUQoU3RhdHVzKQkJKChGWF9FUlIpKFN0YXR1cykgPCAwKQ0KK3R5cGVkZWYgY2hhcgkJCQkJRlhfQ0hBUjsNCit0eXBlZGVmIGNoYXIqCQkJCQlGWF9MUFNUUjsNCit0eXBlZGVmIGNoYXIgY29uc3QqCQkJCUZYX0xQQ1NUUjsNCit0eXBlZGVmIHVuc2lnbmVkIGludAkJRlhfRFdPUkQ7DQordHlwZWRlZiB1bnNpZ25lZCBpbnQqCQlGWF9MUERXT1JEOw0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQordHlwZWRlZiBfX2ludDY0CQkJCUZYX0lOVDY0Ow0KK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NAlGWF9VSU5UNjQ7DQorI2Vsc2UNCit0eXBlZGVmIGxvbmcgbG9uZyBpbnQJCUZYX0lOVDY0Ow0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nCUZYX1VJTlQ2NDsNCisjZW5kaWYNCisjaWYgX0ZYX1dPUkRTSVpFXyA9PSBfRlhfVzY0Xw0KK3R5cGVkZWYgRlhfSU5UNjQJCQlGWF9JTlRQVFI7DQordHlwZWRlZiBGWF9VSU5UNjQJCQlGWF9VSU5UUFRSOw0KKyNlbHNlDQordHlwZWRlZiBpbnQJCQkJCUZYX0lOVFBUUjsNCit0eXBlZGVmIHVuc2lnbmVkIGludAkJRlhfVUlOVFBUUjsNCisjZW5kaWYNCit0eXBlZGVmIHdjaGFyX3QJCQkJCUZYX1dDSEFSOw0KK3R5cGVkZWYgd2NoYXJfdCoJCQkJRlhfTFBXU1RSOw0KK3R5cGVkZWYgd2NoYXJfdCBjb25zdCoJCQlGWF9MUENXU1RSOw0KK3R5cGVkZWYgRlhfRFdPUkQJCQkJRlhfVUlOVDMyOw0KK3R5cGVkZWYgRlhfVUlOVDY0CQkJCUZYX1FXT1JEOw0KKyNkZWZpbmUgRlhfREVGSU5FSEFORExFKG5hbWUpCXR5cGVkZWYgc3RydWN0IF8jI25hbWUge0ZYX0xQVk9JRCBwRGF0YTt9ICogbmFtZTsNCisjaWYgZGVmaW5lZChERUJVRykgJiYgIWRlZmluZWQoX0RFQlVHKQ0KKyNkZWZpbmUgX0RFQlVHDQorI2VuZGlmDQorI2lmbmRlZiBUUlVFDQorDQorI2RlZmluZSBUUlVFCTENCisjZW5kaWYNCisjaWZuZGVmIEZBTFNFDQorDQorI2RlZmluZSBGQUxTRQkwDQorI2VuZGlmDQorI2lmbmRlZiBOVUxMDQorDQorI2RlZmluZSBOVUxMCTANCisjZW5kaWYNCisjZGVmaW5lIEZYU1lTX2Fzc2VydCBhc3NlcnQNCisjaWZuZGVmIEFTU0VSVA0KKyNpZmRlZiBfREVCVUcNCisjZGVmaW5lIEFTU0VSVCBGWFNZU19hc3NlcnQNCisjZWxzZQ0KKw0KKyNkZWZpbmUgQVNTRVJUKGEpDQorI2VuZGlmDQorI2VuZGlmDQorI2RlZmluZSBGWF9NQVgoYSwgYikgKCgoYSkgPiAoYikpID8gKGEpIDogKGIpKQ0KKyNkZWZpbmUgRlhfTUlOKGEsIGIpICgoKGEpIDwgKGIpKSA/IChhKSA6IChiKSkNCisjZGVmaW5lIEZYX1BJCTMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NWYNCisjaWYgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9XSU5ET1dTXw0KKyNkZWZpbmUgRlhTWVNfc25wcmludGYJX3NucHJpbnRmDQorI2Vsc2UNCisjZGVmaW5lIEZYU1lTX3NucHJpbnRmCXNucHJpbnRmDQorI2VuZGlmDQorI2RlZmluZSBGWFNZU19zcHJpbnRmCXNwcmludGYNCisjZGVmaW5lIEZYU1lTX3ZzcHJpbnRmCXZzcHJpbnRmDQorI2RlZmluZSBGWFNZU19zdHJjaHIJc3RyY2hyDQorI2RlZmluZSBGWFNZU19zdHJsZW4Jc3RybGVuDQorI2RlZmluZSBGWFNZU19zdHJuY21wCXN0cm5jbXANCisjZGVmaW5lIEZYU1lTX3N0cmNtcAlzdHJjbXANCisjZGVmaW5lIEZYU1lTX3N0cmNweQlzdHJjcHkNCisjZGVmaW5lIEZYU1lTX3N0cm5jcHkJc3RybmNweQ0KKyNkZWZpbmUgRlhTWVNfc3Ryc3RyCXN0cnN0cg0KKyNkZWZpbmUgRlhTWVNfRklMRQkJRklMRQ0KKyNkZWZpbmUgRlhTWVNfZm9wZW4JCWZvcGVuDQorI2RlZmluZSBGWFNZU19mY2xvc2UJZmNsb3NlDQorI2RlZmluZSBGWFNZU19TRUVLX0VORAlTRUVLX0VORA0KKyNkZWZpbmUgRlhTWVNfU0VFS19TRVQJU0VFS19TRVQNCisjZGVmaW5lIEZYU1lTX2ZzZWVrCQlmc2Vlaw0KKyNkZWZpbmUgRlhTWVNfZnRlbGwJCWZ0ZWxsDQorI2RlZmluZSBGWFNZU19mcmVhZAkJZnJlYWQNCisjZGVmaW5lIEZYU1lTX2Z3cml0ZQlmd3JpdGUNCisjZGVmaW5lIEZYU1lTX2ZwcmludGYJZnByaW50Zg0KKyNkZWZpbmUgRlhTWVNfZmZsdXNoCWZmbHVzaA0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorI2lmZGVmIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEDQorI2RlZmluZSBGWFNZU193Zm9wZW4oZiwgbSkgX3dmb3BlbigoY29uc3Qgd2NoYXJfdCopKGYpLCAoY29uc3Qgd2NoYXJfdCopKG0pKQ0KKyNlbHNlDQorI2RlZmluZSBGWFNZU193Zm9wZW4gX3dmb3Blbg0KKyNlbmRpZg0KKyNlbHNlDQorRlhTWVNfRklMRSogRlhTWVNfd2ZvcGVuKEZYX0xQQ1dTVFIgZmlsZW5hbWUsIEZYX0xQQ1dTVFIgbW9kZSk7DQorI2VuZGlmDQorDQorI2RlZmluZSBGWFNZU193Y3NsZW4Jd2NzbGVuDQorI2RlZmluZSBGWFNZU193Y3NjbXAJd2NzY21wDQorI2RlZmluZSBGWFNZU193Y3NjaHIJd2NzY2hyDQorI2RlZmluZSBGWFNZU193Y3NzdHIJd2Nzc3RyDQorI2RlZmluZSBGWFNZU193Y3NuY21wCXdjc25jbXANCisjZGVmaW5lIEZYU1lTX3Zzd3ByaW50Zgl2c3dwcmludGYNCisjZGVmaW5lIEZYU1lTX21ic3Rvd2NzCW1ic3Rvd2NzDQorI2RlZmluZSBGWFNZU193Y3N0b21icwl3Y3N0b21icw0KKyNkZWZpbmUgRlhTWVNfbWVtY21wCW1lbWNtcA0KKyNkZWZpbmUgRlhTWVNfbWVtY3B5CW1lbWNweQ0KKyNkZWZpbmUgRlhTWVNfbWVtbW92ZQltZW1tb3ZlDQorI2RlZmluZSBGWFNZU19tZW1zZXQJbWVtc2V0DQorI2RlZmluZSBGWFNZU19tZW1jaHIJbWVtY2hyDQorI2RlZmluZSBGWFNZU19xc29ydAkJcXNvcnQNCisjZGVmaW5lIEZYU1lTX2JzZWFyY2gJYnNlYXJjaA0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorI2RlZmluZSBGWFNZU19HZXRBQ1AgR2V0QUNQDQorI2RlZmluZSBGWFNZU19pdG9hIF9pdG9hDQorI2RlZmluZSBGWFNZU19zdHJsd3IgX3N0cmx3cg0KKyNkZWZpbmUgRlhTWVNfc3RydXByIF9zdHJ1cHINCisjZGVmaW5lIEZYU1lTX3N0cmljbXAgX3N0cmljbXANCisjaWZkZWYgX05BVElWRV9XQ0hBUl9UX0RFRklORUQNCisjZGVmaW5lIEZYU1lTX3djc2ljbXAoc3RyMSwgc3RyMikgX3djc2ljbXAoKHdjaGFyX3QqKShzdHIxKSwgKHdjaGFyX3QqKShzdHIyKSkNCisjZGVmaW5lIEZYU1lTX1dpZGVDaGFyVG9NdWx0aUJ5dGUocDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4KSBXaWRlQ2hhclRvTXVsdGlCeXRlKHAxLCBwMiwgKGNvbnN0IHdjaGFyX3QqKShwMyksIHA0LCBwNSwgcDYsIHA3LCBwOCkNCisjZGVmaW5lIEZYU1lTX011bHRpQnl0ZVRvV2lkZUNoYXIocDEsIHAyLCBwMywgcDQsIHA1LCBwNikgTXVsdGlCeXRlVG9XaWRlQ2hhcihwMSwgcDIsIHAzLCBwNCwgKHdjaGFyX3QqKShwNSksIHA2KQ0KKyNkZWZpbmUgRlhTWVNfd2NzbHdyKHN0cikgX3djc2x3cigod2NoYXJfdCopKHN0cikpDQorI2RlZmluZSBGWFNZU193Y3N1cHIoc3RyKSBfd2NzdXByKCh3Y2hhcl90Kikoc3RyKSkNCisjZWxzZQ0KKyNkZWZpbmUgRlhTWVNfd2NzaWNtcCBfd2NzaWNtcA0KKyNkZWZpbmUgRlhTWVNfV2lkZUNoYXJUb011bHRpQnl0ZSBXaWRlQ2hhclRvTXVsdGlCeXRlDQorI2RlZmluZSBGWFNZU19NdWx0aUJ5dGVUb1dpZGVDaGFyIE11bHRpQnl0ZVRvV2lkZUNoYXINCisjZGVmaW5lIEZYU1lTX3djc2x3ciBfd2NzbHdyDQorI2RlZmluZSBGWFNZU193Y3N1cHIgX3djc3Vwcg0KKyNlbmRpZg0KKyNkZWZpbmUgRlhTWVNfR2V0RnVsbFBhdGhOYW1lIEdldEZ1bGxQYXRoTmFtZQ0KKyNkZWZpbmUgRlhTWVNfR2V0TW9kdWxlRmlsZU5hbWUgR2V0TW9kdWxlRmlsZU5hbWUNCisjZWxzZQ0KK2ludAkJCUZYU1lTX0dldEFDUCh2b2lkKTsNCitjaGFyKgkJRlhTWVNfaXRvYShpbnQgdmFsdWUsIGNoYXIqIHN0cmluZywgaW50IHJhZGl4KTsNCitpbnQJCQlGWFNZU19XaWRlQ2hhclRvTXVsdGlCeXRlKEZYX0RXT1JEIGNvZGVwYWdlLCBGWF9EV09SRCBkd0ZsYWdzLCBjb25zdCB3Y2hhcl90KiB3c3RyLCBpbnQgd2xlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGJ1ZiwgaW50IGJ1ZmxlbiwgY29uc3QgY2hhciogZGVmYXVsdF9zdHIsIGludCogcFVzZURlZmF1bHQpOw0KK2ludAkJCUZYU1lTX011bHRpQnl0ZVRvV2lkZUNoYXIoRlhfRFdPUkQgY29kZXBhZ2UsIEZYX0RXT1JEIGR3RmxhZ3MsIGNvbnN0IGNoYXIqIGJzdHIsIGludCBibGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCogYnVmLCBpbnQgYnVmbGVuKTsNCitGWF9EV09SRAlGWFNZU19HZXRGdWxsUGF0aE5hbWUoY29uc3QgY2hhciogZmlsZW5hbWUsIEZYX0RXT1JEIGJ1ZmxlbiwgY2hhciogYnVmLCBjaGFyKiogZmlsZXBhcnQpOw0KK0ZYX0RXT1JECUZYU1lTX0dldE1vZHVsZUZpbGVOYW1lKHZvaWQqIGhNb2R1bGUsIGNoYXIqIGJ1ZiwgRlhfRFdPUkQgYnVmc2l6ZSk7DQorY2hhcioJCUZYU1lTX3N0cmx3cihjaGFyKiBzdHIpOw0KK2NoYXIqCQlGWFNZU19zdHJ1cHIoY2hhciogc3RyKTsNCitpbnQJCQlGWFNZU19zdHJpY21wKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7DQoraW50CQkJRlhTWVNfd2NzaWNtcChjb25zdCB3Y2hhcl90ICpzdHJpbmcxLCBjb25zdCB3Y2hhcl90ICpzdHJpbmcyKTsNCit3Y2hhcl90KglGWFNZU193Y3Nsd3Iod2NoYXJfdCogc3RyKTsNCit3Y2hhcl90KglGWFNZU193Y3N1cHIod2NoYXJfdCogc3RyKTsNCisjZW5kaWYNCisjZGVmaW5lIEZYU1lTX21lbWNweTMyCQlGWFNZU19tZW1jcHkNCisjZGVmaW5lIEZYU1lTX21lbWNtcDMyCQlGWFNZU19tZW1jbXANCisjZGVmaW5lIEZYU1lTX21lbXNldDMyCQlGWFNZU19tZW1zZXQNCisjZGVmaW5lIEZYU1lTX21lbXNldDgJCUZYU1lTX21lbXNldA0KKyNkZWZpbmUgRlhTWVNfbWVtbW92ZTMyCQlGWFNZU19tZW1tb3ZlDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKyNpbmNsdWRlIDxtYXRoLmg+DQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisjZGVmaW5lIEZYU1lTX3BvdyhhLCBiKQkJKEZYX0ZMT0FUKXBvd2YoYSwgYikNCisjZWxzZQ0KKyNkZWZpbmUgRlhTWVNfcG93KGEsIGIpCQkoRlhfRkxPQVQpcG93KGEsIGIpDQorI2VuZGlmDQorI2RlZmluZSBGWFNZU19zcXJ0KGEpCQkoRlhfRkxPQVQpc3FydChhKQ0KKyNkZWZpbmUgRlhTWVNfZmFicyhhKQkJKEZYX0ZMT0FUKWZhYnMoYSkNCisjZGVmaW5lIEZYU1lTX2F0YW4yKGEsIGIpCShGWF9GTE9BVClhdGFuMihhLCBiKQ0KKyNkZWZpbmUgRlhTWVNfY2VpbChhKQkJKEZYX0ZMT0FUKWNlaWwoYSkNCisjZGVmaW5lIEZYU1lTX2Zsb29yKGEpCQkoRlhfRkxPQVQpZmxvb3IoYSkNCisjZGVmaW5lIEZYU1lTX2NvcyhhKQkJKEZYX0ZMT0FUKWNvcyhhKQ0KKyNkZWZpbmUgRlhTWVNfYWNvcyhhKQkJKEZYX0ZMT0FUKWFjb3MoYSkNCisjZGVmaW5lIEZYU1lTX3NpbihhKQkJKEZYX0ZMT0FUKXNpbihhKQ0KKyNkZWZpbmUgRlhTWVNfbG9nKGEpCQkoRlhfRkxPQVQpbG9nKGEpDQorI2RlZmluZSBGWFNZU19sb2cxMChhKQkJKEZYX0ZMT0FUKWxvZzEwKGEpDQorI2RlZmluZSBGWFNZU19mbW9kKGEsIGIpCShGWF9GTE9BVClmbW9kKGEsIGIpDQorI2RlZmluZSBGWFNZU19hYnMJCQlhYnMNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisjZGVmaW5lIF9GWF9MU0JfRklSU1RfDQorI2RlZmluZSBGWERXT1JEX0ZST01fTFNCRklSU1QoaSkJKGkpDQorI2RlZmluZSBGWERXT1JEX0ZST01fTVNCRklSU1QoaSkJKCgoRlhfQllURSkoaSkgPDwgMjQpIHwgKChGWF9CWVRFKSgoaSkgPj4gOCkgPDwgMTYpIHwgKChGWF9CWVRFKSgoaSkgPj4gMTYpIDw8IDgpIHwgKEZYX0JZVEUpKChpKSA+PiAyNCkpDQorI2RlZmluZSBGWERXT1JEX0dFVF9MU0JGSVJTVChwKQkJKCgoKEZYX0xQQllURSkocCkpWzNdIDw8IDI0KSB8ICgoKEZYX0xQQllURSkocCkpWzJdIDw8IDE2KSB8ICgoKEZYX0xQQllURSkocCkpWzFdIDw8IDgpIHwgKCgoRlhfTFBCWVRFKShwKSlbMF0pKQ0KKyNkZWZpbmUgRlhEV09SRF9HRVRfTVNCRklSU1QocCkgKCgoKEZYX0xQQllURSkocCkpWzBdIDw8IDI0KSB8ICgoKEZYX0xQQllURSkocCkpWzFdIDw8IDE2KSB8ICgoKEZYX0xQQllURSkocCkpWzJdIDw8IDgpIHwgKCgoRlhfTFBCWVRFKShwKSlbM10pKQ0KKyNkZWZpbmUgRlhTWVNfSElCWVRFKHdvcmQpCSgoRlhfQllURSkoKHdvcmQpID4+IDgpKQ0KKyNkZWZpbmUgRlhTWVNfTE9CWVRFKHdvcmQpCSgoRlhfQllURSkod29yZCkpDQorI2RlZmluZSBGWFNZU19ISVdPUkQoZHdvcmQpCSgoRlhfV09SRCkoKGR3b3JkKSA+PiAxNikpDQorI2RlZmluZSBGWFNZU19MT1dPUkQoZHdvcmQpCSgoRlhfV09SRCkoZHdvcmQpKQ0KK0ZYX0lOVDMyCUZYU1lTX2F0b2koRlhfTFBDU1RSIHN0cik7DQorRlhfSU5UMzIJRlhTWVNfd3RvaShGWF9MUENXU1RSIHN0cik7DQorRlhfSU5UNjQJRlhTWVNfYXRvaTY0KEZYX0xQQ1NUUiBzdHIpOw0KK0ZYX0lOVDY0CUZYU1lTX3d0b2k2NChGWF9MUENXU1RSIHN0cik7DQorRlhfTFBDU1RSCUZYU1lTX2k2NHRvYShGWF9JTlQ2NCB2YWx1ZSwgRlhfTFBTVFIgc3RyLCBpbnQgcmFkaXgpOw0KK0ZYX0xQQ1dTVFIJRlhTWVNfaTY0dG93KEZYX0lOVDY0IHZhbHVlLCBGWF9MUFdTVFIgc3RyLCBpbnQgcmFkaXgpOw0KK2ludAkJCUZYU1lTX3JvdW5kKEZYX0ZMT0FUIGYpOw0KKyNkZWZpbmUJCUZYU1lTX011bChhLCBiKSAoKGEpICogKGIpKQ0KKyNkZWZpbmUJCUZYU1lTX0RpdihhLCBiKSAoKGEpIC8gKGIpKQ0KKyNkZWZpbmUJCUZYU1lTX011bERpdihhLCBiLCBjKSAoKGEpICogKGIpIC8gKGMpKQ0KKyNkZWZpbmUJCUZYU1lTX3NxcnQyKGEsIGIpIChGWF9GTE9BVClGWFNZU19zcXJ0KChhKSooYSkgKyAoYikqKGIpKQ0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK307DQorI2VuZGlmDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X3VjZC5oIGIvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X3VjZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0N2Q1NTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfdWNkLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZYX1VOSUNPREVfCisjZGVmaW5lIF9GWF9VTklDT0RFXworZW51bSBGWF9DSEFSQlJFQUtQUk9QIHsKKyAgICBGWF9DQlBfT1AgPSAwLAorICAgIEZYX0NCUF9DTCA9IDEsCisgICAgRlhfQ0JQX1FVID0gMiwKKyAgICBGWF9DQlBfR0wgPSAzLAorICAgIEZYX0NCUF9OUyA9IDQsCisgICAgRlhfQ0JQX0VYID0gNSwKKyAgICBGWF9DQlBfU1kgPSA2LAorICAgIEZYX0NCUF9JUyA9IDcsCisgICAgRlhfQ0JQX1BSID0gOCwKKyAgICBGWF9DQlBfUE8gPSA5LAorICAgIEZYX0NCUF9OVSA9IDEwLAorICAgIEZYX0NCUF9BTCA9IDExLAorICAgIEZYX0NCUF9JRCA9IDEyLAorICAgIEZYX0NCUF9JTiA9IDEzLAorICAgIEZYX0NCUF9IWSA9IDE0LAorICAgIEZYX0NCUF9CQSA9IDE1LAorICAgIEZYX0NCUF9CQiA9IDE2LAorICAgIEZYX0NCUF9CMiA9IDE3LAorICAgIEZYX0NCUF9aVyA9IDE4LAorICAgIEZYX0NCUF9DTSA9IDE5LAorICAgIEZYX0NCUF9XSiA9IDIwLAorICAgIEZYX0NCUF9IMiA9IDIxLAorICAgIEZYX0NCUF9IMyA9IDIyLAorICAgIEZYX0NCUF9KTCA9IDIzLAorICAgIEZYX0NCUF9KViA9IDI0LAorICAgIEZYX0NCUF9KVCA9IDI1LAorCisgICAgRlhfQ0JQX0JLID0gMjYsCisgICAgRlhfQ0JQX0NSID0gMjcsCisgICAgRlhfQ0JQX0xGID0gMjgsCisgICAgRlhfQ0JQX05MID0gMjksCisgICAgRlhfQ0JQX1NBID0gMzAsCisgICAgRlhfQ0JQX1NHID0gMzEsCisgICAgRlhfQ0JQX0NCID0gMzIsCisgICAgRlhfQ0JQX1hYID0gMzMsCisgICAgRlhfQ0JQX0FJID0gMzQsCisgICAgRlhfQ0JQX1NQID0gMzUsCisgICAgRlhfQ0JQX1RCID0gMzcsCisgICAgRlhfQ0JQX05PTkUgPSAzNiwKK307CisjZGVmaW5lIEZYX0JJRElDTEFTU0JJVFMJCTYKKyNkZWZpbmUgRlhfQklESUNMQVNTQklUU01BU0sJKDMxIDw8IEZYX0JJRElDTEFTU0JJVFMpCitlbnVtIEZYX0JJRElDTEFTUyB7CisgICAgRlhfQklESUNMQVNTX09OCQk9IDAsCisgICAgRlhfQklESUNMQVNTX0wJCT0gMSwKKyAgICBGWF9CSURJQ0xBU1NfUgkJPSAyLAorICAgIEZYX0JJRElDTEFTU19BTgkJPSAzLAorICAgIEZYX0JJRElDTEFTU19FTgkJPSA0LAorICAgIEZYX0JJRElDTEFTU19BTAkJPSA1LAorICAgIEZYX0JJRElDTEFTU19OU00JPSA2LAorICAgIEZYX0JJRElDTEFTU19DUwkJPSA3LAorICAgIEZYX0JJRElDTEFTU19FUwkJPSA4LAorICAgIEZYX0JJRElDTEFTU19FVAkJPSA5LAorICAgIEZYX0JJRElDTEFTU19CTgkJPSAxMCwKKyAgICBGWF9CSURJQ0xBU1NfUwkJPSAxMSwKKyAgICBGWF9CSURJQ0xBU1NfV1MJCT0gMTIsCisgICAgRlhfQklESUNMQVNTX0IJCT0gMTMsCisgICAgRlhfQklESUNMQVNTX1JMTwk9IDE0LAorICAgIEZYX0JJRElDTEFTU19STEUJPSAxNSwKKyAgICBGWF9CSURJQ0xBU1NfTFJPCT0gMTYsCisgICAgRlhfQklESUNMQVNTX0xSRQk9IDE3LAorICAgIEZYX0JJRElDTEFTU19QREYJPSAxOCwKKyAgICBGWF9CSURJQ0xBU1NfTgkJPSBGWF9CSURJQ0xBU1NfT04sCit9OworI2RlZmluZSBGWF9DSEFSVFlQRUJJVFMJCTExCisjZGVmaW5lIEZYX0NIQVJUWVBFQklUU01BU0sJKDE1IDw8IEZYX0NIQVJUWVBFQklUUykKK2VudW0gRlhfQ0hBUlRZUEUgeworICAgIEZYX0NIQVJUWVBFX1Vua25vd24JCQkJPSAwLAorICAgIEZYX0NIQVJUWVBFX1RhYgkJCQkJPSAoMSA8PCBGWF9DSEFSVFlQRUJJVFMpLAorICAgIEZYX0NIQVJUWVBFX1NwYWNlCQkJCT0gKDIgPDwgRlhfQ0hBUlRZUEVCSVRTKSwKKyAgICBGWF9DSEFSVFlQRV9Db250cm9sCQkJCT0gKDMgPDwgRlhfQ0hBUlRZUEVCSVRTKSwKKyAgICBGWF9DSEFSVFlQRV9Db21iaW5hdGlvbgkJCT0gKDQgPDwgRlhfQ0hBUlRZUEVCSVRTKSwKKyAgICBGWF9DSEFSVFlQRV9OdW1lcmljCQkJCT0gKDUgPDwgRlhfQ0hBUlRZUEVCSVRTKSwKKyAgICBGWF9DSEFSVFlQRV9Ob3JtYWwJCQkJPSAoNiA8PCBGWF9DSEFSVFlQRUJJVFMpLAorICAgIEZYX0NIQVJUWVBFX0FyYWJpY0FsZWYJCQk9ICg3IDw8IEZYX0NIQVJUWVBFQklUUyksCisgICAgRlhfQ0hBUlRZUEVfQXJhYmljU3BlY2lhbAkJPSAoOCA8PCBGWF9DSEFSVFlQRUJJVFMpLAorICAgIEZYX0NIQVJUWVBFX0FyYWJpY0Rpc3RvcnRpb24JPSAoOSA8PCBGWF9DSEFSVFlQRUJJVFMpLAorICAgIEZYX0NIQVJUWVBFX0FyYWJpY05vcm1hbAkJPSAoMTAgPDwgRlhfQ0hBUlRZUEVCSVRTKSwKKyAgICBGWF9DSEFSVFlQRV9BcmFiaWNGb3JtCQkJPSAoMTEgPDwgRlhfQ0hBUlRZUEVCSVRTKSwKKyAgICBGWF9DSEFSVFlQRV9BcmFiaWMJCQkJPSAoMTIgPDwgRlhfQ0hBUlRZUEVCSVRTKSwKK307Cit0eXBlZGVmIHN0cnVjdCBfRlhfQ0hBUlBST1BFUlRJRVMgeworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIEZYX0RXT1JECWR3QnJlYWtUeXBlCQk6IDY7CisgICAgICAgICAgICBGWF9EV09SRAlkd0JpZGlDbGFzcwkJOiA1OworICAgICAgICAgICAgRlhfRFdPUkQJZHdDaGFyVHlwZQkJOiA0OworICAgICAgICAgICAgRlhfRFdPUkQJZHdSb3RhdGlvbgkJOiAxOworICAgICAgICAgICAgRlhfRFdPUkQJZHdDSktTcGVjaWFsCTogMTsKKyAgICAgICAgICAgIEZYX0RXT1JECWR3VmVydEluZGV4CQk6IDY7CisgICAgICAgICAgICBGWF9EV09SRAlkd0JpZGlJbmRleAkJOiA5OworICAgICAgICB9OworICAgICAgICBGWF9EV09SRAlkd0NoYXJQcm9wczsKKyAgICB9OworfSBGWF9DSEFSUFJPUEVSVElFUzsKK0ZYX0RXT1JEIEZYX0dldFVuaWNvZGVQcm9wZXJ0aWVzKEZYX1dDSEFSIHdjaCk7CitGWF9CT09MCUZYX0lzQ3RybENvZGUoRlhfV0NIQVIgY2gpOworRlhfQk9PTAlGWF9Jc1JvdGF0aW9uQ29kZShGWF9XQ0hBUiBjaCk7CitGWF9CT09MIEZYX0lzQ29tYmluYXRpb25DaGFyKEZYX1dDSEFSIHdjaCk7CitGWF9CT09MCUZYX0lzQmlkaUNoYXIoRlhfV0NIQVIgd2NoKTsKK0ZYX1dDSEFSIEZYX0dldE1pcnJvckNoYXIoRlhfV0NIQVIgd2NoLCBGWF9CT09MIGJSVEwsIEZYX0JPT0wgYlZlcnRpY2FsKTsKK0ZYX1dDSEFSIEZYX0dldE1pcnJvckNoYXIoRlhfV0NIQVIgd2NoLCBGWF9EV09SRCBkd1Byb3BzLCBGWF9CT09MIGJSVEwsIEZYX0JPT0wgYlZlcnRpY2FsKTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X3htbC5oIGIvY29yZS9pbmNsdWRlL2Z4Y3J0L2Z4X3htbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMTc2NzcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnhjcnQvZnhfeG1sLmgKQEAgLTAsMCArMSwyMDkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX1hNTF9IXw0KKyNkZWZpbmUgX0ZYX1hNTF9IXw0KKyNpZm5kZWYgX0ZYX0JBU0lDX0hfDQorI2luY2x1ZGUgImZ4X2Jhc2ljLmgiDQorI2VuZGlmDQorY2xhc3MgQ1hNTF9BdHRySXRlbSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ0ZYX0J5dGVTdHJpbmdMCW1fUVNwYWNlTmFtZTsNCisgICAgQ0ZYX0J5dGVTdHJpbmdMCW1fQXR0ck5hbWU7DQorICAgIENGWF9XaWRlU3RyaW5nTAltX1ZhbHVlOw0KKw0KKyAgICB2b2lkCUVtcHR5KElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKQ0KKyAgICB7DQorICAgICAgICBtX1FTcGFjZU5hbWUuRW1wdHkocEFsbG9jYXRvcik7DQorICAgICAgICBtX0F0dHJOYW1lLkVtcHR5KHBBbGxvY2F0b3IpOw0KKyAgICAgICAgbV9WYWx1ZS5FbXB0eShwQWxsb2NhdG9yKTsNCisgICAgfQ0KK307DQorY2xhc3MgQ1hNTF9BdHRyTWFwIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDWE1MX0F0dHJNYXAoKQ0KKyAgICB7DQorICAgICAgICBtX3BNYXAgPSBOVUxMOw0KKyAgICB9DQorICAgIH5DWE1MX0F0dHJNYXAoKQ0KKyAgICB7DQorICAgICAgICBSZW1vdmVBbGwoTlVMTCk7DQorICAgIH0NCisgICAgY29uc3QgQ0ZYX1dpZGVTdHJpbmdMKglMb29rdXAoRlhfQlNUUiBzcGFjZSwgRlhfQlNUUiBuYW1lKSBjb25zdDsNCisgICAgdm9pZAkJCQkJU2V0QXQoRlhfQlNUUiBzcGFjZSwgRlhfQlNUUiBuYW1lLCBGWF9XU1RSIHZhbHVlLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorICAgIHZvaWQJCQkJCVJlbW92ZUF0KEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KKyAgICB2b2lkCQkJCQlSZW1vdmVBbGwoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KKyAgICBpbnQJCQkJCQlHZXRTaXplKCkgY29uc3Q7DQorICAgIENYTUxfQXR0ckl0ZW0mCQkJR2V0QXQoaW50IGluZGV4KSBjb25zdDsNCisgICAgQ0ZYX09iamVjdEFycmF5PENYTUxfQXR0ckl0ZW0+KgltX3BNYXA7DQorfTsNCitjbGFzcyBDWE1MX0NvbnRlbnQgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENYTUxfQ29udGVudCgpIDogbV9iQ0RBVEEoRkFMU0UpLCBtX0NvbnRlbnQoKSB7fQ0KKyAgICB+Q1hNTF9Db250ZW50KCkNCisgICAgew0KKyAgICAgICAgRW1wdHkoTlVMTCk7DQorICAgIH0NCisgICAgdm9pZAlFbXB0eShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCkNCisgICAgew0KKyAgICAgICAgbV9Db250ZW50LkVtcHR5KHBBbGxvY2F0b3IpOw0KKyAgICB9DQorICAgIHZvaWQJU2V0KEZYX0JPT0wgYkNEQVRBLCBGWF9XU1RSIGNvbnRlbnQsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKQ0KKyAgICB7DQorICAgICAgICBtX2JDREFUQSA9IGJDREFUQTsNCisgICAgICAgIG1fQ29udGVudC5TZXQoY29udGVudCwgcEFsbG9jYXRvcik7DQorICAgIH0NCisgICAgRlhfQk9PTAkJCW1fYkNEQVRBOw0KKyAgICBDRlhfV2lkZVN0cmluZ0wJbV9Db250ZW50Ow0KK307DQorY2xhc3MgQ1hNTF9FbGVtZW50IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBzdGF0aWMgQ1hNTF9FbGVtZW50KglQYXJzZShjb25zdCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc2l6ZSwgRlhfQk9PTCBiU2F2ZVNwYWNlQ2hhcnMgPSBGQUxTRSwgRlhfRklMRVNJWkUqIHBQYXJzZWRTaXplID0gTlVMTCwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KKw0KKyAgICBzdGF0aWMgQ1hNTF9FbGVtZW50KglQYXJzZShJRlhfRmlsZVJlYWQgKnBGaWxlLCBGWF9CT09MIGJTYXZlU3BhY2VDaGFycyA9IEZBTFNFLCBGWF9GSUxFU0laRSogcFBhcnNlZFNpemUgPSBOVUxMLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorDQorICAgIHN0YXRpYyBDWE1MX0VsZW1lbnQqCVBhcnNlKElGWF9CdWZmZXJSZWFkICpwQnVmZmVyLCBGWF9CT09MIGJTYXZlU3BhY2VDaGFycyA9IEZBTFNFLCBGWF9GSUxFU0laRSogcFBhcnNlZFNpemUgPSBOVUxMLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorDQorICAgIENYTUxfRWxlbWVudChGWF9CU1RSIHFTcGFjZSwgRlhfQlNUUiB0YWdOYW1lLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorDQorICAgIENYTUxfRWxlbWVudChGWF9CU1RSIHFUYWdOYW1lLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorDQorICAgIENYTUxfRWxlbWVudChJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorDQorICAgIH5DWE1MX0VsZW1lbnQoKTsNCisNCisgICAgdm9pZAlFbXB0eSgpOw0KKw0KKw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCUdldFRhZ05hbWUoRlhfQk9PTCBiUXVhbGlmaWVkID0gRkFMU0UpIGNvbnN0Ow0KKyAgICB2b2lkCQkJCQlHZXRUYWdOYW1lKENGWF9CeXRlU3RyaW5nTCAmdGFnTmFtZSwgRlhfQk9PTCBiUXVhbGlmaWVkID0gRkFMU0UpIGNvbnN0Ow0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCUdldE5hbWVzcGFjZShGWF9CT09MIGJRdWFsaWZpZWQgPSBGQUxTRSkgY29uc3Q7DQorICAgIHZvaWQJCQkJCUdldE5hbWVzcGFjZShDRlhfQnl0ZVN0cmluZ0wgJm5hbWVTcGFjZSwgRlhfQk9PTCBiUXVhbGlmaWVkID0gRkFMU0UpIGNvbnN0Ow0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCUdldE5hbWVzcGFjZVVSSShGWF9CU1RSIHFOYW1lKSBjb25zdDsNCisgICAgdm9pZAkJCQkJR2V0TmFtZXNwYWNlVVJJKEZYX0JTVFIgcU5hbWUsIENGWF9CeXRlU3RyaW5nTCAmdXJpKSBjb25zdDsNCisNCisgICAgQ1hNTF9FbGVtZW50KgkJCUdldFBhcmVudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BQYXJlbnQ7DQorICAgIH0NCisNCisgICAgRlhfRFdPUkQJCQkJQ291bnRBdHRycygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0F0dHJNYXAuR2V0U2l6ZSgpOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJCUdldEF0dHJCeUluZGV4KGludCBpbmRleCwgQ0ZYX0J5dGVTdHJpbmcgJnNwYWNlLCBDRlhfQnl0ZVN0cmluZyAmbmFtZSwgQ0ZYX1dpZGVTdHJpbmcgJnZhbHVlKSBjb25zdDsNCisgICAgdm9pZAkJCQkJR2V0QXR0ckJ5SW5kZXgoaW50IGluZGV4LCBDRlhfQnl0ZVN0cmluZ0wgJnNwYWNlLCBDRlhfQnl0ZVN0cmluZ0wgJm5hbWUsIENGWF9XaWRlU3RyaW5nTCAmdmFsdWUpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MCQkJCQlIYXNBdHRyKEZYX0JTVFIgcU5hbWUpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MCQkJCQlHZXRBdHRyVmFsdWUoRlhfQlNUUiBuYW1lLCBDRlhfV2lkZVN0cmluZyYgYXR0cmlidXRlKSBjb25zdDsNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQlHZXRBdHRyVmFsdWUoRlhfQlNUUiBuYW1lKSBjb25zdA0KKyAgICB7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyBhdHRyOw0KKyAgICAgICAgR2V0QXR0clZhbHVlKG5hbWUsIGF0dHIpOw0KKyAgICAgICAgcmV0dXJuIGF0dHI7DQorICAgIH0NCisgICAgY29uc3QgQ0ZYX1dpZGVTdHJpbmdMKglHZXRBdHRyVmFsdWVQdHIoRlhfQlNUUiBuYW1lKSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCQkJR2V0QXR0clZhbHVlKEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSwgQ0ZYX1dpZGVTdHJpbmcmIGF0dHJpYnV0ZSkgY29uc3Q7DQorICAgIENGWF9XaWRlU3RyaW5nCQkJR2V0QXR0clZhbHVlKEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSkgY29uc3QNCisgICAgew0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgYXR0cjsNCisgICAgICAgIEdldEF0dHJWYWx1ZShzcGFjZSwgbmFtZSwgYXR0cik7DQorICAgICAgICByZXR1cm4gYXR0cjsNCisgICAgfQ0KKyAgICBjb25zdCBDRlhfV2lkZVN0cmluZ0wqCUdldEF0dHJWYWx1ZVB0cihGWF9CU1RSIHNwYWNlLCBGWF9CU1RSIG5hbWUpIGNvbnN0Ow0KKw0KKyAgICBGWF9CT09MCQkJCQlHZXRBdHRySW50ZWdlcihGWF9CU1RSIG5hbWUsIGludCYgYXR0cmlidXRlKSBjb25zdDsNCisgICAgaW50CQkJCQkJR2V0QXR0ckludGVnZXIoRlhfQlNUUiBuYW1lKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpbnQgYXR0ciA9IDA7DQorICAgICAgICBHZXRBdHRySW50ZWdlcihuYW1lLCBhdHRyKTsNCisgICAgICAgIHJldHVybiBhdHRyOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJCUdldEF0dHJJbnRlZ2VyKEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSwgaW50JiBhdHRyaWJ1dGUpIGNvbnN0Ow0KKyAgICBpbnQJCQkJCQlHZXRBdHRySW50ZWdlcihGWF9CU1RSIHNwYWNlLCBGWF9CU1RSIG5hbWUpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGludCBhdHRyID0gMDsNCisgICAgICAgIEdldEF0dHJJbnRlZ2VyKHNwYWNlLCBuYW1lLCBhdHRyKTsNCisgICAgICAgIHJldHVybiBhdHRyOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJCUdldEF0dHJGbG9hdChGWF9CU1RSIG5hbWUsIEZYX0ZMT0FUJiBhdHRyaWJ1dGUpIGNvbnN0Ow0KKyAgICBGWF9GTE9BVAkJCQlHZXRBdHRyRmxvYXQoRlhfQlNUUiBuYW1lKSBjb25zdA0KKyAgICB7DQorICAgICAgICBGWF9GTE9BVCBhdHRyID0gMDsNCisgICAgICAgIEdldEF0dHJGbG9hdChuYW1lLCBhdHRyKTsNCisgICAgICAgIHJldHVybiBhdHRyOw0KKyAgICB9DQorDQorICAgIEZYX0JPT0wJCQkJCUdldEF0dHJGbG9hdChGWF9CU1RSIHNwYWNlLCBGWF9CU1RSIG5hbWUsIEZYX0ZMT0FUJiBhdHRyaWJ1dGUpIGNvbnN0Ow0KKyAgICBGWF9GTE9BVAkJCQlHZXRBdHRyRmxvYXQoRlhfQlNUUiBzcGFjZSwgRlhfQlNUUiBuYW1lKSBjb25zdA0KKyAgICB7DQorICAgICAgICBGWF9GTE9BVCBhdHRyID0gMDsNCisgICAgICAgIEdldEF0dHJGbG9hdChzcGFjZSwgbmFtZSwgYXR0cik7DQorICAgICAgICByZXR1cm4gYXR0cjsNCisgICAgfQ0KKw0KKyAgICBGWF9EV09SRAkJCQlDb3VudENoaWxkcmVuKCkgY29uc3Q7DQorDQorICAgIGVudW0gQ2hpbGRUeXBlIHsgSW52YWxpZCwgRWxlbWVudCwgQ29udGVudH07DQorDQorICAgIENoaWxkVHlwZQkJCQlHZXRDaGlsZFR5cGUoRlhfRFdPUkQgaW5kZXgpIGNvbnN0Ow0KKw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCUdldENvbnRlbnQoRlhfRFdPUkQgaW5kZXgpIGNvbnN0Ow0KKyAgICBjb25zdCBDRlhfV2lkZVN0cmluZ0wqCUdldENvbnRlbnRQdHIoRlhfRFdPUkQgaW5kZXgpIGNvbnN0Ow0KKw0KKyAgICBDWE1MX0VsZW1lbnQqCQkJR2V0RWxlbWVudChGWF9EV09SRCBpbmRleCkgY29uc3Q7DQorDQorICAgIENYTUxfRWxlbWVudCoJCQlHZXRFbGVtZW50KEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgdGFnKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0RWxlbWVudChzcGFjZSwgdGFnLCAwKTsNCisgICAgfQ0KKw0KKyAgICBGWF9EV09SRAkJCQlDb3VudEVsZW1lbnRzKEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgdGFnKSBjb25zdDsNCisNCisgICAgQ1hNTF9FbGVtZW50KgkJCUdldEVsZW1lbnQoRlhfQlNUUiBzcGFjZSwgRlhfQlNUUiB0YWcsIGludCBpbmRleCkgY29uc3Q7DQorDQorICAgIEZYX0RXT1JECQkJCUZpbmRFbGVtZW50KENYTUxfRWxlbWVudCAqcENoaWxkKSBjb25zdDsNCisNCisNCisNCisNCisgICAgdm9pZAkJCQkJU2V0VGFnKEZYX0JTVFIgcVNwYWNlLCBGWF9CU1RSIHRhZ25hbWUpOw0KKw0KKyAgICB2b2lkCQkJCQlTZXRUYWcoRlhfQlNUUiBxVGFnTmFtZSk7DQorDQorICAgIHZvaWQJCQkJCVJlbW92ZUNoaWxkcmVuKCk7DQorDQorICAgIHZvaWQJCQkJCVJlbW92ZUNoaWxkKEZYX0RXT1JEIGluZGV4KTsNCisNCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIENYTUxfRWxlbWVudCoJCQltX3BQYXJlbnQ7DQorDQorICAgIENGWF9CeXRlU3RyaW5nTAkJCW1fUVNwYWNlTmFtZTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmdMCQkJbV9UYWdOYW1lOw0KKw0KKyAgICBDWE1MX0F0dHJNYXAJCQltX0F0dHJNYXA7DQorDQorICAgIENGWF9QdHJBcnJheQkJCW1fQ2hpbGRyZW47DQorICAgIGZyaWVuZCBjbGFzcyBDWE1MX1BhcnNlcjsNCisgICAgZnJpZW5kIGNsYXNzIENYTUxfQ29tcG9zZXI7DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvZnhnZS9mcGYuaCBiL2NvcmUvaW5jbHVkZS9meGdlL2ZwZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ZDliN2MKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvZnhnZS9mcGYuaApAQCAtMCwwICsxLDU1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWF9QQUxURk9STV9ERVZJQ0VfSF8KKyNkZWZpbmUgX0ZYX1BBTFRGT1JNX0RFVklDRV9IXworY2xhc3MgSUZQRl9EZXZpY2VNb2R1bGU7CitjbGFzcyBJRlBGX0ZvbnRNZ3I7CitjbGFzcyBJRlBGX0ZvbnQ7CitjbGFzcyBJRlBGX0RldmljZU1vZHVsZQoreworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZAkJCQlEZXN0cm95KCkgPSAwOworICAgIHZpcnR1YWwgSUZQRl9Gb250TWdyKgkJR2V0Rm9udE1ncigpID0gMDsKK307CitJRlBGX0RldmljZU1vZHVsZSoJRlBGX0dldERldmljZU1vZHVsZSgpOworI2RlZmluZSBGUEZfTUFUQ0hGT05UX1JFUExBQ0VBTlNJCQkxCitGWF9ERUZJTkVIQU5ETEUoRlBGX0hGT05UKTsKK2NsYXNzIElGUEZfRm9udAoreworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZAkJCVJlbGVhc2UoKSA9IDA7CisgICAgdmlydHVhbCBJRlBGX0ZvbnQqCQlSZXRhaW4oKSA9IDA7CisgICAgdmlydHVhbCBGUEZfSEZPTlQJCUdldEhhbmRsZSgpID0gMDsKKyAgICB2aXJ0dWFsIENGWF9CeXRlU3RyaW5nCUdldEZhbWlseU5hbWUoKSA9IDA7CisgICAgdmlydHVhbCBDRlhfV2lkZVN0cmluZwlHZXRQc05hbWUoKSA9IDA7CisgICAgdmlydHVhbCBGWF9EV09SRAkJR2V0Rm9udFN0eWxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRlhfQllURQkJCUdldENoYXJzZXQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQlHZXRHbHlwaEluZGV4KEZYX1dDSEFSIHdVbmljb2RlKSA9IDA7CisgICAgdmlydHVhbCBGWF9JTlQzMgkJR2V0R2x5cGhXaWR0aChGWF9JTlQzMiBpR2x5cGhJbmRleCkgPSAwOworCisgICAgdmlydHVhbCBGWF9JTlQzMgkJR2V0QXNjZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRlhfSU5UMzIJCUdldERlc2NlbnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlHZXRHbHlwaEJCb3goRlhfSU5UMzIgaUdseXBoSW5kZXgsIEZYX1JFQ1QgJnJ0QkJveCkgPSAwOworICAgIHZpcnR1YWwgRlhfQk9PTAkJCUdldEJCb3goRlhfUkVDVCAmcnRCQm94KSA9IDA7CisKKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQlHZXRIZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGWF9JTlQzMgkJR2V0SXRhbGljQW5nbGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGWF9EV09SRAkJR2V0Rm9udERhdGEoRlhfRFdPUkQgZHdUYWJsZSwgRlhfTFBCWVRFIHBCdWZmZXIsIEZYX0RXT1JEIGR3U2l6ZSkgPSAwOworfTsKK2NsYXNzIElGUEZfRm9udE1ncgoreworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZAkJCUxvYWRTeXN0ZW1Gb250cygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQJCQlMb2FkUHJpdmF0ZUZvbnQoSUZYX0ZpbGVSZWFkKiBwRm9udEZpbGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQJCQlMb2FkUHJpdmF0ZUZvbnQoRlhfQlNUUiBic0ZpbGVOYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkCQkJTG9hZFByaXZhdGVGb250KEZYX0xQVk9JRCBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpID0gMDsKKworICAgIHZpcnR1YWwgSUZQRl9Gb250KgkJQ3JlYXRlRm9udChGWF9CU1RSIGJzRmFtaWx5bmFtZSwgRlhfQllURSBjaGFyc2V0LCBGWF9EV09SRCBkd1N0eWxlLCBGWF9EV09SRCBkd01hdGNoID0gMCkgPSAwOworfTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Z2UvZnhfZGliLmggYi9jb3JlL2luY2x1ZGUvZnhnZS9meF9kaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWEzYmY4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL2Z4Z2UvZnhfZGliLmgKQEAgLTAsMCArMSw2MDYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZfRElCX0hfDQorI2RlZmluZSBfRlBERl9ESUJfSF8NCisjaWZuZGVmIF9GWENSVF9FWFRFTlNJT05fDQorI2luY2x1ZGUgIi4uL2Z4Y3J0L2Z4X2V4dC5oIg0KKyNlbmRpZg0KK2VudW0gRlhESUJfRm9ybWF0IHsNCisgICAgRlhESUJfSW52YWxpZCA9IDAsDQorICAgIEZYRElCXzFicHBNYXNrID0gMHgxMDEsDQorICAgIEZYRElCXzFicHBSZ2IgPSAweDAwMSwNCisgICAgRlhESUJfMWJwcENteWsgPSAweDQwMSwNCisgICAgRlhESUJfOGJwcE1hc2sgPSAweDEwOCwNCisgICAgRlhESUJfOGJwcFJnYiA9IDB4MDA4LA0KKyAgICBGWERJQl84YnBwUmdiYSA9IDB4MjA4LA0KKyAgICBGWERJQl84YnBwQ215ayA9IDB4NDA4LA0KKyAgICBGWERJQl84YnBwQ215a2EgPSAweDYwOCwNCisgICAgRlhESUJfUmdiID0gMHgwMTgsDQorICAgIEZYRElCX1JnYmEgPSAweDIxOCwNCisgICAgRlhESUJfUmdiMzIgPSAweDAyMCwNCisgICAgRlhESUJfQXJnYiA9IDB4MjIwLA0KKyAgICBGWERJQl9DbXlrID0gMHg0MjAsDQorICAgIEZYRElCX0NteWthID0gMHg2MjAsDQorfTsNCitlbnVtIEZYRElCX0NoYW5uZWwgew0KKyAgICBGWERJQl9SZWQgPSAxLA0KKyAgICBGWERJQl9HcmVlbiwNCisgICAgRlhESUJfQmx1ZSwNCisgICAgRlhESUJfQ3lhbiwNCisgICAgRlhESUJfTWFnZW50YSwNCisgICAgRlhESUJfWWVsbG93LA0KKyAgICBGWERJQl9CbGFjaywNCisgICAgRlhESUJfQWxwaGENCit9Ow0KKyNkZWZpbmUgRlhESUJfRE9XTlNBTVBMRQkJMHgwNA0KKyNkZWZpbmUgRlhESUJfSU5URVJQT0wJCQkweDIwDQorI2RlZmluZSBGWERJQl9CSUNVQklDX0lOVEVSUE9MICAweDgwDQorI2RlZmluZSBGWERJQl9OT1NNT09USAkJCTB4MTAwDQorI2RlZmluZSBGWERJQl9QQUxFVFRFX0xPQwkJMHgwMQ0KKyNkZWZpbmUgRlhESUJfUEFMRVRURV9XSU4JCTB4MDINCisjZGVmaW5lIEZYRElCX1BBTEVUVEVfTUFDCQkweDA0DQorI2RlZmluZSBGWERJQl9CTEVORF9OT1JNQUwJCQkwDQorI2RlZmluZSBGWERJQl9CTEVORF9NVUxUSVBMWQkJMQ0KKyNkZWZpbmUgRlhESUJfQkxFTkRfU0NSRUVOCQkJMg0KKyNkZWZpbmUgRlhESUJfQkxFTkRfT1ZFUkxBWQkJCTMNCisjZGVmaW5lIEZYRElCX0JMRU5EX0RBUktFTgkJCTQNCisjZGVmaW5lIEZYRElCX0JMRU5EX0xJR0hURU4JCQk1DQorDQorI2RlZmluZSBGWERJQl9CTEVORF9DT0xPUkRPREdFCQk2DQorI2RlZmluZSBGWERJQl9CTEVORF9DT0xPUkJVUk4JCTcNCisjZGVmaW5lIEZYRElCX0JMRU5EX0hBUkRMSUdIVAkJOA0KKyNkZWZpbmUgRlhESUJfQkxFTkRfU09GVExJR0hUCQk5DQorI2RlZmluZSBGWERJQl9CTEVORF9ESUZGRVJFTkNFCQkxMA0KKyNkZWZpbmUgRlhESUJfQkxFTkRfRVhDTFVTSU9OCQkxMQ0KKyNkZWZpbmUgRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFCTIxDQorI2RlZmluZSBGWERJQl9CTEVORF9IVUUJCQkJMjENCisjZGVmaW5lIEZYRElCX0JMRU5EX1NBVFVSQVRJT04JCTIyDQorI2RlZmluZSBGWERJQl9CTEVORF9DT0xPUgkJCTIzDQorI2RlZmluZSBGWERJQl9CTEVORF9MVU1JTk9TSVRZCQkyNA0KKyNkZWZpbmUgRlhESUJfQkxFTkRfVU5TVVBQT1JURUQJCS0xDQordHlwZWRlZiBGWF9EV09SRAlGWF9BUkdCOw0KK3R5cGVkZWYgRlhfRFdPUkQJRlhfQ09MT1JSRUY7DQordHlwZWRlZiBGWF9EV09SRAlGWF9DTVlLOw0KK2NsYXNzIENGWF9DbGlwUmduOw0KK2NsYXNzIENGWF9ESUJTb3VyY2U7DQorY2xhc3MgQ0ZYX0RJQml0bWFwOw0KKyNkZWZpbmUgRlhTWVNfUkdCKHIsIGcsIGIpICAoKHIpIHwgKChnKSA8PCA4KSB8ICgoYikgPDwgMTYpKQ0KKyNkZWZpbmUgRlhTWVNfR2V0UlZhbHVlKHJnYikgKChyZ2IpICYgMHhmZikNCisjZGVmaW5lIEZYU1lTX0dldEdWYWx1ZShyZ2IpICgoKHJnYikgPj4gOCkgJiAweGZmKQ0KKyNkZWZpbmUgRlhTWVNfR2V0QlZhbHVlKHJnYikgKCgocmdiKSA+PiAxNikgJiAweGZmKQ0KKyNkZWZpbmUgRlhfQ0NPTE9SKHZhbCkgKDI1NS0odmFsKSkNCisjZGVmaW5lIEZYU1lTX0NNWUsoYywgbSwgeSwgaykgKCgoYykgPDwgMjQpIHwgKChtKSA8PCAxNikgfCAoKHkpIDw8IDgpIHwgKGspKQ0KKyNkZWZpbmUgRlhTWVNfR2V0Q1ZhbHVlKGNteWspICgoRlhfQllURSkoKGNteWspID4+IDI0KSAmIDB4ZmYpDQorI2RlZmluZSBGWFNZU19HZXRNVmFsdWUoY215aykgKChGWF9CWVRFKSgoY215aykgPj4gMTYpICYgMHhmZikNCisjZGVmaW5lIEZYU1lTX0dldFlWYWx1ZShjbXlrKSAoKEZYX0JZVEUpKChjbXlrKSA+PiA4KSAmIDB4ZmYpDQorI2RlZmluZSBGWFNZU19HZXRLVmFsdWUoY215aykgKChGWF9CWVRFKShjbXlrKSAmIDB4ZmYpDQordm9pZCBDbXlrRGVjb2RlKEZYX0NNWUsgY215aywgaW50JiBjLCBpbnQmIG0sIGludCYgeSwgaW50JiBrKTsNCitpbmxpbmUgRlhfQ01ZSyBDbXlrRW5jb2RlKGludCBjLCBpbnQgbSwgaW50IHksIGludCBrKQ0KK3sNCisgICAgcmV0dXJuIChjIDw8IDI0KSB8IChtIDw8IDE2KSB8ICh5IDw8IDgpIHwgazsNCit9DQordm9pZCBBcmdiRGVjb2RlKEZYX0FSR0IgYXJnYiwgaW50JiBhLCBpbnQmIHIsIGludCZnLCBpbnQmIGIpOw0KK3ZvaWQgQXJnYkRlY29kZShGWF9BUkdCIGFyZ2IsIGludCYgYSwgRlhfQ09MT1JSRUYmIHJnYik7DQoraW5saW5lIEZYX0FSR0IgQXJnYkVuY29kZShpbnQgYSwgaW50IHIsIGludCBnLCBpbnQgYikNCit7DQorICAgIHJldHVybiAoYSA8PCAyNCkgfCAociA8PCAxNikgfCAoZyA8PCA4KSB8IGI7DQorfQ0KK0ZYX0FSR0IgQXJnYkVuY29kZShpbnQgYSwgRlhfQ09MT1JSRUYgcmdiKTsNCisjZGVmaW5lIEZYQVJHQl9BKGFyZ2IpICgoRlhfQllURSkoKGFyZ2IpID4+IDI0KSkNCisjZGVmaW5lIEZYQVJHQl9SKGFyZ2IpICgoRlhfQllURSkoKGFyZ2IpID4+IDE2KSkNCisjZGVmaW5lIEZYQVJHQl9HKGFyZ2IpICgoRlhfQllURSkoKGFyZ2IpID4+IDgpKQ0KKyNkZWZpbmUgRlhBUkdCX0IoYXJnYikgKChGWF9CWVRFKShhcmdiKSkNCisjZGVmaW5lIEZYQVJHQl9NQUtFKGEscixnLGIpICgoKEZYX0RXT1JEKShhKSA8PCAyNCkgfCAoKHIpIDw8IDE2KSB8ICgoZykgPDwgOCkgfCAoYikpDQorI2RlZmluZSBGWEFSR0JfTVVMX0FMUEhBKGFyZ2IsIGFscGhhKSAoKCgoKGFyZ2IpID4+IDI0KSAqIChhbHBoYSkgLyAyNTUpIDw8IDI0KSB8ICgoYXJnYikgJiAweGZmZmZmZikpDQorI2RlZmluZSBGWFJHQjJHUkFZKHIsZyxiKSAoKChiKSAqIDExICsgKGcpICogNTkgKyAocikgKiAzMCkgLyAxMDApDQorI2RlZmluZSBGWENNWUsyR1JBWShjLG0seSxrKSAoKCgyNTUtKGMpKSAqICgyNTUtKGspKSAqIDMwICsgKDI1NS0obSkpICogKDI1NS0oaykpICogNTkgKyAoMjU1LSh5KSkgKiAoMjU1LShrKSkgKiAxMSkgLyAyNTUwMCkNCisjZGVmaW5lIEZYRElCX0FMUEhBX01FUkdFKGJhY2tkcm9wLCBzb3VyY2UsIHNvdXJjZV9hbHBoYSkgKCgoYmFja2Ryb3ApICogKDI1NS0oc291cmNlX2FscGhhKSkgKyAoc291cmNlKSooc291cmNlX2FscGhhKSkvMjU1KQ0KKyNkZWZpbmUgRlhESUJfQUxQSEFfVU5JT04oZGVzdCwgc3JjKSAoKGRlc3QpICsgKHNyYykgLSAoZGVzdCkqKHNyYykvMjU1KQ0KKyNkZWZpbmUgRlhDTVlLX0dFVERJQihwKSAoKCgoRlhfTFBCWVRFKShwKSlbMF0gPDwgMjQgfCAoKChGWF9MUEJZVEUpKHApKVsxXSA8PCAxNikgfCAoKChGWF9MUEJZVEUpKHApKVsyXSA8PCA4KSB8ICgoRlhfTFBCWVRFKShwKSlbM10pKQ0KKyNkZWZpbmUgRlhDTVlLX1NFVERJQihwLCBjbXlrKSAgKChGWF9MUEJZVEUpKHApKVswXSA9IChGWF9CWVRFKSgoY215aykgPj4gMjQpLCBcDQorICAgICAgICAoKEZYX0xQQllURSkocCkpWzFdID0gKEZYX0JZVEUpKChjbXlrKSA+PiAxNiksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZYX0xQQllURSkocCkpWzJdID0gKEZYX0JZVEUpKChjbXlrKSA+PiA4KSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGWF9MUEJZVEUpKHApKVszXSA9IChGWF9CWVRFKShjbXlrKSkNCisjZGVmaW5lIEZYQVJHQl9HRVRESUIocCkgKCgoRlhfTFBCWVRFKShwKSlbMF0pIHwgKCgoRlhfTFBCWVRFKShwKSlbMV0gPDwgOCkgfCAoKChGWF9MUEJZVEUpKHApKVsyXSA8PCAxNikgfCAoKChGWF9MUEJZVEUpKHApKVszXSA8PCAyNCkNCisjZGVmaW5lIEZYQVJHQl9TRVRESUIocCwgYXJnYikgKChGWF9MUEJZVEUpKHApKVswXSA9IChGWF9CWVRFKShhcmdiKSwgXA0KKyAgICAgICAgKChGWF9MUEJZVEUpKHApKVsxXSA9IChGWF9CWVRFKSgoYXJnYikgPj4gOCksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZYX0xQQllURSkocCkpWzJdID0gKEZYX0JZVEUpKChhcmdiKSA+PiAxNiksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRlhfTFBCWVRFKShwKSlbM10gPSAoRlhfQllURSkoKGFyZ2IpID4+IDI0KQ0KKyNkZWZpbmUgRlhBUkdCX0NPUFkoZGVzdCwgc3JjKSAqKEZYX0xQQllURSkoZGVzdCkgPSAqKEZYX0xQQllURSkoc3JjKSwgXA0KKyAgICAgICAgKigoRlhfTFBCWVRFKShkZXN0KSsxKSA9ICooKEZYX0xQQllURSkoc3JjKSsxKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooKEZYX0xQQllURSkoZGVzdCkrMikgPSAqKChGWF9MUEJZVEUpKHNyYykrMiksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooKEZYX0xQQllURSkoZGVzdCkrMykgPSAqKChGWF9MUEJZVEUpKHNyYykrMykNCisjZGVmaW5lIEZYQ01ZS19DT1BZKGRlc3QsIHNyYykgICooRlhfTFBCWVRFKShkZXN0KSA9ICooRlhfTFBCWVRFKShzcmMpLCBcDQorICAgICAgICAqKChGWF9MUEJZVEUpKGRlc3QpKzEpID0gKigoRlhfTFBCWVRFKShzcmMpKzEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKigoRlhfTFBCWVRFKShkZXN0KSsyKSA9ICooKEZYX0xQQllURSkoc3JjKSsyKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKigoRlhfTFBCWVRFKShkZXN0KSszKSA9ICooKEZYX0xQQllURSkoc3JjKSszKQ0KKyNkZWZpbmUgRlhBUkdCX1NFVFJHQk9SREVSRElCKHAsIGFyZ2IpICgoRlhfTFBCWVRFKShwKSlbM10gPSAoRlhfQllURSkoYXJnYj4+MjQpLCBcDQorICAgICAgICAoKEZYX0xQQllURSkocCkpWzBdID0gKEZYX0JZVEUpKChhcmdiKSA+PiAxNiksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZYX0xQQllURSkocCkpWzFdID0gKEZYX0JZVEUpKChhcmdiKSA+PiA4KSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGWF9MUEJZVEUpKHApKVsyXSA9IChGWF9CWVRFKShhcmdiKQ0KKyNkZWZpbmUgRlhBUkdCX0dFVFJHQk9SREVSRElCKHApICgoKEZYX0xQQllURSkocCkpWzJdKSB8ICgoKEZYX0xQQllURSkocCkpWzFdIDw8IDgpIHwgKCgoRlhfTFBCWVRFKShwKSlbMF0gPDwgMTYpIHwgKCgoRlhfTFBCWVRFKShwKSlbM10gPDwgMjQpDQorI2RlZmluZSBGWEFSR0JfUkdCT1JERVJDT1BZKGRlc3QsIHNyYykgKigoRlhfTFBCWVRFKShkZXN0KSszKSA9ICooKEZYX0xQQllURSkoc3JjKSszKSwgXA0KKyAgICAgICAgKihGWF9MUEJZVEUpKGRlc3QpID0gKigoRlhfTFBCWVRFKShzcmMpKzIpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKChGWF9MUEJZVEUpKGRlc3QpKzEpID0gKigoRlhfTFBCWVRFKShzcmMpKzEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooKEZYX0xQQllURSkoZGVzdCkrMikgPSAqKChGWF9MUEJZVEUpKHNyYykpDQorI2RlZmluZSBGWEFSR0JfVE9ESUIoYXJnYikgKGFyZ2IpDQorI2RlZmluZSBGWENNWUtfVE9ESUIoY215aykgKChGWF9CWVRFKSgoY215aykgPj4gMjQpIHwgKChGWF9CWVRFKSgoY215aykgPj4gMTYpKSA8PCA4IHwgKChGWF9CWVRFKSgoY215aykgPj4gOCkpIDw8IDE2IHwgKChGWF9CWVRFKShjbXlrKSA8PCAyNCkpDQorI2RlZmluZSBGWEFSR0JfVE9CR1JPUkRFUkRJQihhcmdiKSAoKEZYX0JZVEUpKGFyZ2I+PjE2KSB8ICgoRlhfQllURSkoYXJnYj4+OCkpIDw8IDggfCAoKEZYX0JZVEUpKGFyZ2IpKSA8PCAxNiB8ICgoRlhfQllURSkoYXJnYj4+MjQpIDw8IDI0KSkNCisjZGVmaW5lIEZYR0VURkxBR19DT0xPUlRZUEUoZmxhZykJCQkoRlhfQllURSkoKGZsYWcpPj44KQ0KKyNkZWZpbmUgRlhHRVRGTEFHX0FMUEhBX0ZJTEwoZmxhZykJCQkoRlhfQllURSkoZmxhZykNCisjZGVmaW5lIEZYR0VURkxBR19BTFBIQV9TVFJPS0UoZmxhZykJCShGWF9CWVRFKSgoZmxhZyk+PjE2KQ0KKyNkZWZpbmUgRlhTRVRGTEFHX0NPTE9SVFlQRShmbGFnLCB2YWwpCQlmbGFnID0gKCgodmFsKTw8OCl8KGZsYWcmMHhmZmZmMDBmZikpDQorI2RlZmluZSBGWFNFVEZMQUdfQUxQSEFfRklMTChmbGFnLCB2YWwpCQlmbGFnID0gKCh2YWwpfChmbGFnJjB4ZmZmZmZmMDApKQ0KKyNkZWZpbmUgRlhTRVRGTEFHX0FMUEhBX1NUUk9LRShmbGFnLCB2YWwpCWZsYWcgPSAoKCh2YWwpPDwxNil8KGZsYWcmMHhmZjAwZmZmZikpDQorY2xhc3MgQ0ZYX0RJQlNvdXJjZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbAkJCX5DRlhfRElCU291cmNlKCk7DQorDQorDQorDQorICAgIGludAkJCQlHZXRXaWR0aCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1dpZHRoOw0KKyAgICB9DQorDQorICAgIGludAkJCQlHZXRIZWlnaHQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9IZWlnaHQ7DQorICAgIH0NCisNCisgICAgRlhESUJfRm9ybWF0CUdldEZvcm1hdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoRlhESUJfRm9ybWF0KShtX0FscGhhRmxhZyAqIDB4MTAwICsgbV9icHApOw0KKyAgICB9DQorDQorICAgIEZYX0RXT1JECQlHZXRQaXRjaCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1BpdGNoOw0KKyAgICB9DQorDQorICAgIEZYX0RXT1JEKgkJR2V0UGFsZXR0ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BQYWxldHRlOw0KKyAgICB9DQorDQorDQorDQorICAgIHZpcnR1YWwJRlhfTFBCWVRFCUdldEJ1ZmZlcigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgRlhfTFBDQllURQlHZXRTY2FubGluZShpbnQgbGluZSkgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVNraXBUb1NjYW5saW5lKGludCBsaW5lLCBJRlhfUGF1c2UqIHBQYXVzZSkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgdm9pZAkJRG93blNhbXBsZVNjYW5saW5lKGludCBsaW5lLCBGWF9MUEJZVEUgZGVzdF9zY2FuLCBpbnQgZGVzdF9icHAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBGWF9CT09MIGJGbGlwWCwgaW50IGNsaXBfbGVmdCwgaW50IGNsaXBfd2lkdGgpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQlTZXREb3duU2FtcGxlU2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0IHt9DQorDQorICAgIGludAkJCQlHZXRCUFAoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9icHA7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCUlzQWxwaGFNYXNrKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fQWxwaGFGbGFnID09IDE7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCUhhc0FscGhhKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fQWxwaGFGbGFnICYgMiA/IFRSVUUgOiBGQUxTRTsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJSXNPcGFxdWVJbWFnZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAhKG1fQWxwaGFGbGFnICYgMyk7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCUlzQ215a0ltYWdlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fQWxwaGFGbGFnICYgNCA/IFRSVUUgOiBGQUxTRTsNCisgICAgfQ0KKw0KKw0KKw0KKyAgICBpbnQJCQkJR2V0UGFsZXR0ZVNpemUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gSXNBbHBoYU1hc2soKSA/IDAgOiAobV9icHAgPT0gMSA/IDIgOiAobV9icHAgPT0gOCA/IDI1NiA6IDApKTsNCisgICAgfQ0KKw0KKyAgICBGWF9EV09SRAkJR2V0UGFsZXR0ZUVudHJ5KGludCBpbmRleCkgY29uc3Q7DQorDQorICAgIHZvaWQJCQlTZXRQYWxldHRlRW50cnkoaW50IGluZGV4LCBGWF9EV09SRCBjb2xvcik7DQorICAgIEZYX0RXT1JECQlHZXRQYWxldHRlQXJnYihpbnQgaW5kZXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRQYWxldHRlRW50cnkoaW5kZXgpOw0KKyAgICB9DQorICAgIHZvaWQJCQlTZXRQYWxldHRlQXJnYihpbnQgaW5kZXgsIEZYX0RXT1JEIGNvbG9yKQ0KKyAgICB7DQorICAgICAgICBTZXRQYWxldHRlRW50cnkoaW5kZXgsIGNvbG9yKTsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJQ29weVBhbGV0dGUoY29uc3QgRlhfRFdPUkQqIHBTcmNQYWwsIEZYX0RXT1JEIHNpemUgPSAyNTYpOw0KKw0KKw0KKyAgICBDRlhfRElCaXRtYXAqCUNsb25lKGNvbnN0IEZYX1JFQ1QqIHBDbGlwID0gTlVMTCkgY29uc3Q7DQorDQorICAgIENGWF9ESUJpdG1hcCoJQ2xvbmVDb252ZXJ0KEZYRElCX0Zvcm1hdCBmb3JtYXQsIGNvbnN0IEZYX1JFQ1QqIHBDbGlwID0gTlVMTCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpIGNvbnN0Ow0KKw0KKyAgICBDRlhfRElCaXRtYXAqCVN0cmV0Y2hUbyhpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0LCBGWF9EV09SRCBmbGFncyA9IDAsIGNvbnN0IEZYX1JFQ1QqIHBDbGlwID0gTlVMTCkgY29uc3Q7DQorDQorDQorICAgIENGWF9ESUJpdG1hcCoJVHJhbnNmb3JtVG8oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgaW50JiBsZWZ0LCBpbnQgJnRvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGZsYWdzID0gMCwgY29uc3QgRlhfUkVDVCogcENsaXAgPSBOVUxMKSBjb25zdDsNCisNCisgICAgQ0ZYX0RJQml0bWFwKglHZXRBbHBoYU1hc2soY29uc3QgRlhfUkVDVCogcENsaXAgPSBOVUxMKSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCUNvcHlBbHBoYU1hc2soY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEFscGhhTWFzaywgY29uc3QgRlhfUkVDVCogcENsaXAgPSBOVUxMKTsNCisNCisgICAgQ0ZYX0RJQml0bWFwKglTd2FwWFkoRlhfQk9PTCBiWEZsaXAsIEZYX0JPT0wgYllGbGlwLCBjb25zdCBGWF9SRUNUKiBwQ2xpcCA9IE5VTEwpIGNvbnN0Ow0KKw0KKyAgICBDRlhfRElCaXRtYXAqCUZsaXBJbWFnZShGWF9CT09MIGJYRmxpcCwgRlhfQk9PTCBiWUZsaXApIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJR2V0T3ZlcmxhcFJlY3QoaW50JiBkZXN0X2xlZnQsIGludCYgZGVzdF90b3AsIGludCYgd2lkdGgsIGludCYgaGVpZ2h0LCBpbnQgc3JjX3dpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19oZWlnaHQsIGludCYgc3JjX2xlZnQsIGludCYgc3JjX3RvcCwgY29uc3QgQ0ZYX0NsaXBSZ24qIHBDbGlwUmduKTsNCisNCisgICAgQ0ZYX0RJQml0bWFwKgltX3BBbHBoYU1hc2s7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDRlhfRElCU291cmNlKCk7DQorDQorICAgIGludAkJCQltX1dpZHRoOw0KKw0KKyAgICBpbnQJCQkJbV9IZWlnaHQ7DQorDQorICAgIGludAkJCQltX2JwcDsNCisNCisgICAgRlhfRFdPUkQJCW1fQWxwaGFGbGFnOw0KKw0KKyAgICBGWF9EV09SRAkJbV9QaXRjaDsNCisNCisgICAgRlhfRFdPUkQqCQltX3BQYWxldHRlOw0KKw0KKyAgICB2b2lkCQkJQnVpbGRQYWxldHRlKCk7DQorDQorICAgIEZYX0JPT0wJCQlCdWlsZEFscGhhTWFzaygpOw0KKw0KKyAgICBpbnQJCQkJRmluZFBhbGV0dGUoRlhfRFdPUkQgY29sb3IpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJR2V0UGFsZXR0ZShGWF9EV09SRCogcGFsLCBpbnQgYWxwaGEpIGNvbnN0Ow0KK307DQorY2xhc3MgQ0ZYX0RJQml0bWFwIDogcHVibGljIENGWF9ESUJTb3VyY2UNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIH5DRlhfRElCaXRtYXAoKTsNCisNCisgICAgQ0ZYX0RJQml0bWFwKCk7DQorDQorICAgIENGWF9ESUJpdG1hcChjb25zdCBDRlhfRElCaXRtYXAmIHNyYyk7DQorDQorICAgIEZYX0JPT0wJCQlDcmVhdGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBGWERJQl9Gb3JtYXQgZm9ybWF0LCBGWF9MUEJZVEUgcEJ1ZmZlciA9IE5VTEwsIGludCBwaXRjaCA9IDApOw0KKw0KKyAgICBGWF9CT09MCQkJQ29weShjb25zdCBDRlhfRElCU291cmNlKiBwU3JjKTsNCisNCisgICAgdmlydHVhbAlGWF9MUEJZVEUJR2V0QnVmZmVyKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEJ1ZmZlcjsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0xQQ0JZVEUJR2V0U2NhbmxpbmUoaW50IGxpbmUpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BCdWZmZXIgPyBtX3BCdWZmZXIgKyBsaW5lICogbV9QaXRjaCA6IE5VTEw7DQorICAgIH0NCisNCisgICAgdmlydHVhbCB2b2lkCURvd25TYW1wbGVTY2FubGluZShpbnQgbGluZSwgRlhfTFBCWVRFIGRlc3Rfc2NhbiwgaW50IGRlc3RfYnBwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBGWF9CT09MIGJGbGlwWCwgaW50IGNsaXBfbGVmdCwgaW50IGNsaXBfd2lkdGgpIGNvbnN0Ow0KKw0KKyAgICB2b2lkCQkJVGFrZU92ZXIoQ0ZYX0RJQml0bWFwKiBwU3JjQml0bWFwKTsNCisNCisgICAgRlhfQk9PTAkJCUNvbnZlcnRGb3JtYXQoRlhESUJfRm9ybWF0IGZvcm1hdCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpOw0KKw0KKyAgICB2b2lkCQkJQ2xlYXIoRlhfRFdPUkQgY29sb3IpOw0KKw0KKyAgICBGWF9EV09SRAkJR2V0UGl4ZWwoaW50IHgsIGludCB5KSBjb25zdDsNCisNCisgICAgdm9pZAkJCVNldFBpeGVsKGludCB4LCBpbnQgeSwgRlhfRFdPUkQgY29sb3IpOw0KKw0KKyAgICBGWF9CT09MCQkJTG9hZENoYW5uZWwoRlhESUJfQ2hhbm5lbCBkZXN0Q2hhbm5lbCwgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgRlhESUJfQ2hhbm5lbCBzcmNDaGFubmVsKTsNCisNCisgICAgRlhfQk9PTAkJCUxvYWRDaGFubmVsKEZYRElCX0NoYW5uZWwgZGVzdENoYW5uZWwsIGludCB2YWx1ZSk7DQorDQorICAgIEZYX0JPT0wJCQlNdWx0aXBseUFscGhhKGludCBhbHBoYSk7DQorDQorICAgIEZYX0JPT0wJCQlNdWx0aXBseUFscGhhKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBBbHBoYU1hc2spOw0KKw0KKyAgICBGWF9CT09MCQkJVHJhbnNmZXJCaXRtYXAoaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwU3JjQml0bWFwLCBpbnQgc3JjX2xlZnQsIGludCBzcmNfdG9wLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCk7DQorDQorICAgIEZYX0JPT0wJCQlDb21wb3NpdGVCaXRtYXAoaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxlbmRfdHlwZSA9IEZYRElCX0JMRU5EX05PUk1BTCwgY29uc3QgQ0ZYX0NsaXBSZ24qIHBDbGlwUmduID0gTlVMTCwgRlhfQk9PTCBiUmdiQnl0ZU9yZGVyID0gRkFMU0UsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMKTsNCisNCisgICAgRlhfQk9PTAkJCVRyYW5zZmVyTWFzayhpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwTWFzaywgRlhfRFdPUkQgY29sb3IsIGludCBzcmNfbGVmdCwgaW50IHNyY190b3AsIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpOw0KKw0KKyAgICBGWF9CT09MCQkJQ29tcG9zaXRlTWFzayhpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcE1hc2ssIEZYX0RXT1JEIGNvbG9yLCBpbnQgc3JjX2xlZnQsIGludCBzcmNfdG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxlbmRfdHlwZSA9IEZYRElCX0JMRU5EX05PUk1BTCwgY29uc3QgQ0ZYX0NsaXBSZ24qIHBDbGlwUmduID0gTlVMTCwgRlhfQk9PTCBiUmdiQnl0ZU9yZGVyID0gRkFMU0UsIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpOw0KKw0KKyAgICBGWF9CT09MCQkJQ29tcG9zaXRlUmVjdChpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCwgRlhfRFdPUkQgY29sb3IsIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpOw0KKw0KKyAgICBGWF9CT09MCQkJQ29udmVydENvbG9yU2NhbGUoRlhfRFdPUkQgZm9yZWNvbG9yLCBGWF9EV09SRCBiYWNrY29sb3IpOw0KKw0KKyAgICBGWF9CT09MCQkJRGl0aGVyRlMoY29uc3QgRlhfRFdPUkQqIHBQYWxldHRlLCBpbnQgcGFsX3NpemUsIGNvbnN0IEZYX1JFQ1QqIHBSZWN0ID0gTlVMTCk7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBGWF9MUEJZVEUJCW1fcEJ1ZmZlcjsNCisNCisgICAgRlhfQk9PTAkJCW1fYkV4dEJ1ZjsNCisNCisgICAgRlhfQk9PTAkJCUdldEdyYXlEYXRhKHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMKTsNCit9Ow0KK2NsYXNzIENGWF9ESUJFeHRyYWN0b3IgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9ESUJFeHRyYWN0b3IoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyYyk7DQorDQorICAgIH5DRlhfRElCRXh0cmFjdG9yKCk7DQorDQorICAgIG9wZXJhdG9yIENGWF9ESUJpdG1hcCooKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wQml0bWFwOw0KKyAgICB9DQorcHJpdmF0ZToNCisNCisgICAgQ0ZYX0RJQml0bWFwKgkJCW1fcEJpdG1hcDsNCit9Ow0KK3R5cGVkZWYgQ0ZYX0NvdW50UmVmPENGWF9ESUJpdG1hcD4gQ0ZYX0RJQml0bWFwUmVmOw0KK2NsYXNzIENGWF9GaWx0ZXJlZERJQiA6IHB1YmxpYyBDRlhfRElCU291cmNlDQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX0ZpbHRlcmVkRElCKCk7DQorDQorICAgIH5DRlhfRmlsdGVyZWRESUIoKTsNCisNCisgICAgdm9pZAkJCQkJTG9hZFNyYyhjb25zdCBDRlhfRElCU291cmNlKiBwU3JjLCBGWF9CT09MIGJBdXRvRHJvcFNyYyA9IEZBTFNFKTsNCisNCisgICAgdmlydHVhbCBGWERJQl9Gb3JtYXQJR2V0RGVzdEZvcm1hdCgpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9EV09SRCoJCUdldERlc3RQYWxldHRlKCkgPSAwOw0KKw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlUcmFuc2xhdGVTY2FubGluZShGWF9MUEJZVEUgZGVzdF9idWYsIEZYX0xQQ0JZVEUgc3JjX2J1ZikgY29uc3QgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlUcmFuc2xhdGVEb3duU2FtcGxlcyhGWF9MUEJZVEUgZGVzdF9idWYsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgaW50IHBpeGVscywgaW50IEJwcCkgY29uc3QgPSAwOw0KK3Byb3RlY3RlZDoNCisgICAgdmlydHVhbCBGWF9MUENCWVRFCQlHZXRTY2FubGluZShpbnQgbGluZSkgY29uc3Q7DQorICAgIHZpcnR1YWwgdm9pZAkJCURvd25TYW1wbGVTY2FubGluZShpbnQgbGluZSwgRlhfTFBCWVRFIGRlc3Rfc2NhbiwgaW50IGRlc3RfYnBwLA0KKyAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBGWF9CT09MIGJGbGlwWCwgaW50IGNsaXBfbGVmdCwgaW50IGNsaXBfd2lkdGgpIGNvbnN0Ow0KKw0KKyAgICBjb25zdCBDRlhfRElCU291cmNlKgltX3BTcmM7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYkF1dG9Ecm9wU3JjOw0KKw0KKyAgICBGWF9MUEJZVEUJCQkJbV9wU2NhbmxpbmU7DQorfTsNCitjbGFzcyBJRlhfU2NhbmxpbmVDb21wb3Nlcg0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwJdm9pZAkJQ29tcG9zZVNjYW5saW5lKGludCBsaW5lLCBGWF9MUENCWVRFIHNjYW5saW5lLCBGWF9MUENCWVRFIHNjYW5fZXh0cmFfYWxwaGEgPSBOVUxMKSA9IDA7DQorDQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJU2V0SW5mbyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIEZYRElCX0Zvcm1hdCBzcmNfZm9ybWF0LCBGWF9EV09SRCogcFNyY1BhbGV0dGUpID0gMDsNCit9Ow0KK2NsYXNzIENGWF9TY2FubGluZUNvbXBvc2l0b3IgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9TY2FubGluZUNvbXBvc2l0b3IoKTsNCisNCisgICAgfkNGWF9TY2FubGluZUNvbXBvc2l0b3IoKTsNCisNCisgICAgRlhfQk9PTAkJCQlJbml0KEZYRElCX0Zvcm1hdCBkZXN0X2Zvcm1hdCwgRlhESUJfRm9ybWF0IHNyY19mb3JtYXQsIEZYX0lOVDMyIHdpZHRoLCBGWF9EV09SRCogcFNyY1BhbGV0dGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBtYXNrX2NvbG9yLCBpbnQgYmxlbmRfdHlwZSwgRlhfQk9PTCBiQ2xpcCwgRlhfQk9PTCBiUmdiQnl0ZU9yZGVyID0gRkFMU0UsIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpOw0KKw0KKw0KKyAgICB2b2lkCQkJCUNvbXBvc2l0ZVJnYkJpdG1hcExpbmUoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19leHRyYV9hbHBoYSA9IE5VTEwsIEZYX0xQQllURSBkc3RfZXh0cmFfYWxwaGEgPSBOVUxMKTsNCisNCisNCisgICAgdm9pZAkJCQlDb21wb3NpdGVQYWxCaXRtYXBMaW5lKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBzcmNfbGVmdCwgaW50IHdpZHRoLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19leHRyYV9hbHBoYSA9IE5VTEwsIEZYX0xQQllURSBkc3RfZXh0cmFfYWxwaGEgPSBOVUxMKTsNCisNCisNCisgICAgdm9pZAkJCQlDb21wb3NpdGVCeXRlTWFza0xpbmUoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgICAgICBGWF9MUEJZVEUgZHN0X2V4dHJhX2FscGhhID0gTlVMTCk7DQorDQorDQorICAgIHZvaWQJCQkJQ29tcG9zaXRlQml0TWFza0xpbmUoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHNyY19sZWZ0LCBpbnQgd2lkdGgsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgIEZYX0xQQllURSBkc3RfZXh0cmFfYWxwaGEgPSBOVUxMKTsNCitwcm90ZWN0ZWQ6DQorICAgIGludAkJCQkJbV9UcmFuc3BhcmVuY3k7DQorICAgIEZYRElCX0Zvcm1hdAkJbV9TcmNGb3JtYXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgbV9EZXN0Rm9ybWF0Ow0KKyAgICBGWF9EV09SRCoJCQltX3BTcmNQYWxldHRlOw0KKw0KKyAgICBpbnQJCQkJCW1fTWFza0FscGhhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fTWFza1JlZCwNCisgICAgICAgICAgICAgICAgICAgICAgICBtX01hc2tHcmVlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICBtX01hc2tCbHVlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fTWFza0JsYWNrOw0KKyAgICBpbnQJCQkJCW1fQmxlbmRUeXBlOw0KKyAgICB2b2lkKgkJCQltX3BJY2NUcmFuc2Zvcm07DQorICAgIEZYX0xQQllURQkJCW1fcENhY2hlU2NhbmxpbmU7DQorICAgIGludAkJCQkJbV9DYWNoZVNpemU7DQorICAgIEZYX0JPT0wgICAgICAgICAgICAgbV9iUmdiQnl0ZU9yZGVyOw0KK307DQorY2xhc3MgQ0ZYX0JpdG1hcENvbXBvc2VyIDogcHVibGljIElGWF9TY2FubGluZUNvbXBvc2VyLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9CaXRtYXBDb21wb3NlcigpOw0KKw0KKyAgICB+Q0ZYX0JpdG1hcENvbXBvc2VyKCk7DQorDQorDQorICAgIHZvaWQJCQkJQ29tcG9zZShDRlhfRElCaXRtYXAqIHBEZXN0LCBjb25zdCBDRlhfQ2xpcFJnbiogcENsaXBSZ24sIGludCBiaXRtYXBfYWxwaGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBtYXNrX2NvbG9yLCBGWF9SRUNUJiBkZXN0X3JlY3QsIEZYX0JPT0wgYlZlcnRpY2FsLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiRmxpcFgsIEZYX0JPT0wgYkZsaXBZLCBGWF9CT09MIGJSZ2JCeXRlT3JkZXIgPSBGQUxTRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwsIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMKTsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCQlTZXRJbmZvKGludCB3aWR0aCwgaW50IGhlaWdodCwgRlhESUJfRm9ybWF0IHNyY19mb3JtYXQsIEZYX0RXT1JEKiBwU3JjUGFsZXR0ZSk7DQorDQorDQorICAgIHZpcnR1YWwJdm9pZAkJQ29tcG9zZVNjYW5saW5lKGludCBsaW5lLCBGWF9MUENCWVRFIHNjYW5saW5lLCBGWF9MUENCWVRFIHNjYW5fZXh0cmFfYWxwaGEpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgdm9pZAkJCQlEb0NvbXBvc2UoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IGRlc3Rfd2lkdGgsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19leHRyYV9hbHBoYSA9IE5VTEwsIEZYX0xQQllURSBkc3RfZXh0cmFfYWxwaGEgPSBOVUxMKTsNCisgICAgQ0ZYX0RJQml0bWFwKgkJbV9wQml0bWFwOw0KKyAgICBjb25zdCBDRlhfQ2xpcFJnbioJbV9wQ2xpcFJnbjsNCisgICAgRlhESUJfRm9ybWF0CQltX1NyY0Zvcm1hdDsNCisgICAgaW50CQkJCQltX0Rlc3RMZWZ0LCBtX0Rlc3RUb3AsIG1fRGVzdFdpZHRoLCBtX0Rlc3RIZWlnaHQsIG1fQml0bWFwQWxwaGE7DQorICAgIEZYX0RXT1JECQkJbV9NYXNrQ29sb3I7DQorICAgIGNvbnN0IENGWF9ESUJpdG1hcCoJbV9wQ2xpcE1hc2s7DQorICAgIENGWF9TY2FubGluZUNvbXBvc2l0b3IJbV9Db21wb3NpdG9yOw0KKyAgICBGWF9CT09MCQkJCW1fYlZlcnRpY2FsLCBtX2JGbGlwWCwgbV9iRmxpcFk7DQorICAgIGludAkJCQkJbV9BbHBoYUZsYWc7DQorICAgIHZvaWQqCQkJCW1fcEljY1RyYW5zZm9ybTsNCisgICAgRlhfQk9PTCAgICAgICAgICAgICBtX2JSZ2JCeXRlT3JkZXI7DQorICAgIGludAkJCQkJbV9CbGVuZFR5cGU7DQorICAgIHZvaWQJCQkJQ29tcG9zZVNjYW5saW5lVihpbnQgbGluZSwgRlhfTFBDQllURSBzY2FubGluZSwgRlhfTFBDQllURSBzY2FuX2V4dHJhX2FscGhhID0gTlVMTCk7DQorICAgIEZYX0xQQllURQkJCW1fcFNjYW5saW5lViwgbV9wQ2xpcFNjYW5WLCBtX3BBZGRDbGlwU2NhbiwgbV9wU2NhbmxpbmVBbHBoYVY7DQorfTsNCitjbGFzcyBDRlhfQml0bWFwU3RvcmVyIDogcHVibGljIElGWF9TY2FubGluZUNvbXBvc2VyLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9CaXRtYXBTdG9yZXIoKTsNCisNCisgICAgfkNGWF9CaXRtYXBTdG9yZXIoKTsNCisNCisgICAgdmlydHVhbAl2b2lkCQlDb21wb3NlU2NhbmxpbmUoaW50IGxpbmUsIEZYX0xQQ0JZVEUgc2NhbmxpbmUsIEZYX0xQQ0JZVEUgc2Nhbl9leHRyYV9hbHBoYSk7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAkJU2V0SW5mbyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIEZYRElCX0Zvcm1hdCBzcmNfZm9ybWF0LCBGWF9EV09SRCogcFNyY1BhbGV0dGUpOw0KKw0KKyAgICBDRlhfRElCaXRtYXAqCQlHZXRCaXRtYXAoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wQml0bWFwOw0KKyAgICB9DQorDQorICAgIENGWF9ESUJpdG1hcCoJCURldGFjaCgpOw0KKw0KKyAgICB2b2lkCQkJCVJlcGxhY2UoQ0ZYX0RJQml0bWFwKiBwQml0bWFwKTsNCitwcml2YXRlOg0KKyAgICBDRlhfRElCaXRtYXAqCQltX3BCaXRtYXA7DQorfTsNCitjbGFzcyBDU3RyZXRjaEVuZ2luZTsNCitjbGFzcyBDRlhfSW1hZ2VTdHJldGNoZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9JbWFnZVN0cmV0Y2hlcigpOw0KKw0KKyAgICB+Q0ZYX0ltYWdlU3RyZXRjaGVyKCk7DQorDQorICAgIEZYX0lOVDMyCQlTdGFydChJRlhfU2NhbmxpbmVDb21wb3NlciogcERlc3QsIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0LCBjb25zdCBGWF9SRUNUJiBiaXRtYXBfcmVjdCwgRlhfRFdPUkQgZmxhZ3MpOw0KKw0KKw0KKyAgICBGWF9JTlQzMgkJQ29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBJRlhfU2NhbmxpbmVDb21wb3NlcioJbV9wRGVzdDsNCisgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSoJbV9wU291cmNlOw0KKyAgICBDU3RyZXRjaEVuZ2luZSoJCW1fcFN0cmV0Y2hFbmdpbmU7DQorICAgIEZYX0RXT1JECQltX0ZsYWdzOw0KKyAgICBGWF9CT09MCQkJbV9iRmxpcFgsDQorICAgICAgICAgICAgICAgICAgICBtX2JGbGlwWTsNCisgICAgaW50CQkJCW1fRGVzdFdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgbV9EZXN0SGVpZ2h0Ow0KKyAgICBGWF9SRUNUCQkJbV9DbGlwUmVjdDsNCisgICAgaW50CQkJCW1fTGluZUluZGV4Ow0KKyAgICBpbnQJCQkJbV9EZXN0QlBQOw0KKyAgICBGWF9MUEJZVEUJCW1fcFNjYW5saW5lOw0KKyAgICBGWF9MUEJZVEUgICAgICAgbV9wTWFza1NjYW5saW5lOw0KKyAgICBGWERJQl9Gb3JtYXQJbV9EZXN0Rm9ybWF0Ow0KKyAgICBGWF9JTlQzMgkJbV9TdGF0dXM7DQorDQorICAgIEZYX0lOVDMyCQlTdGFydFF1aWNrU3RyZXRjaCgpOw0KKw0KKyAgICBGWF9JTlQzMgkJU3RhcnRTdHJldGNoKCk7DQorDQorICAgIEZYX0lOVDMyCQlDb250aW51ZVF1aWNrU3RyZXRjaChJRlhfUGF1c2UqIHBQYXVzZSk7DQorDQorICAgIEZYX0lOVDMyCQlDb250aW51ZVN0cmV0Y2goSUZYX1BhdXNlKiBwUGF1c2UpOw0KK307DQorY2xhc3MgQ0ZYX0ltYWdlVHJhbnNmb3JtZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9JbWFnZVRyYW5zZm9ybWVyKCk7DQorDQorICAgIH5DRlhfSW1hZ2VUcmFuc2Zvcm1lcigpOw0KKw0KKyAgICBGWF9JTlQzMglTdGFydChjb25zdCBDRlhfRElCU291cmNlKiBwU3JjLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBpbnQgZmxhZ3MsIGNvbnN0IEZYX1JFQ1QqIHBDbGlwKTsNCisNCisNCisgICAgRlhfSU5UMzIJQ29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4KiBtX3BNYXRyaXg7DQorICAgIEZYX1JFQ1QJCW1fU3RyZXRjaENsaXA7DQorICAgIGludAkJCW1fUmVzdWx0TGVmdCwgbV9SZXN1bHRUb3AsIG1fUmVzdWx0V2lkdGgsIG1fUmVzdWx0SGVpZ2h0Ow0KKyAgICBDRlhfQWZmaW5lTWF0cml4CW1fZGVzdDJzdHJldGNoOw0KKyAgICBDRlhfSW1hZ2VTdHJldGNoZXIJbV9TdHJldGNoZXI7DQorICAgIENGWF9CaXRtYXBTdG9yZXIJbV9TdG9yZXI7DQorICAgIEZYX0RXT1JECW1fRmxhZ3M7DQorICAgIGludAkJCW1fU3RhdHVzOw0KK307DQorY2xhc3MgQ0ZYX0ltYWdlUmVuZGVyZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9JbWFnZVJlbmRlcmVyKCk7DQorDQorICAgIH5DRlhfSW1hZ2VSZW5kZXJlcigpOw0KKw0KKyAgICBGWF9JTlQzMgkJCVN0YXJ0KENGWF9ESUJpdG1hcCogcERldmljZSwgY29uc3QgQ0ZYX0NsaXBSZ24qIHBDbGlwUmduLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIGludCBiaXRtYXBfYWxwaGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgbWFza19jb2xvciwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgZGliX2ZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYlJnYkJ5dGVPcmRlciA9IEZBTFNFLCBpbnQgYWxwaGFfZmxhZyA9IDAsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMKTsNCisNCisgICAgRlhfSU5UMzIJCQlDb250aW51ZShJRlhfUGF1c2UqIHBQYXVzZSk7DQorcHJvdGVjdGVkOg0KKyAgICBDRlhfRElCaXRtYXAqCQltX3BEZXZpY2U7DQorICAgIGNvbnN0IENGWF9DbGlwUmduKgltX3BDbGlwUmduOw0KKyAgICBpbnQJCQkJCW1fQml0bWFwQWxwaGE7DQorICAgIEZYX0RXT1JECQkJbV9NYXNrQ29sb3I7DQorICAgIENGWF9BZmZpbmVNYXRyaXgJbV9NYXRyaXg7DQorICAgIENGWF9JbWFnZVRyYW5zZm9ybWVyKgltX3BUcmFuc2Zvcm1lcjsNCisgICAgQ0ZYX0ltYWdlU3RyZXRjaGVyCW1fU3RyZXRjaGVyOw0KKyAgICBDRlhfQml0bWFwQ29tcG9zZXIJbV9Db21wb3NlcjsNCisgICAgaW50CQkJCQltX1N0YXR1czsNCisgICAgaW50CQkJCQltX0Rlc3RMZWZ0LCBtX0Rlc3RUb3A7DQorICAgIEZYX1JFQ1QJCQkJbV9DbGlwQm94Ow0KKyAgICBGWF9EV09SRAkJCW1fRmxhZ3M7DQorICAgIGludAkJCQkJbV9BbHBoYUZsYWc7DQorICAgIHZvaWQqCQkJCW1fcEljY1RyYW5zZm9ybTsNCisgICAgRlhfQk9PTAkJCQltX2JSZ2JCeXRlT3JkZXI7DQorICAgIGludAkJCQkJbV9CbGVuZFR5cGU7DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvZnhnZS9meF9mb250LmggYi9jb3JlL2luY2x1ZGUvZnhnZS9meF9mb250LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmYTliOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGdlL2Z4X2ZvbnQuaApAQCAtMCwwICsxLDQyOCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhfRk9OVF9IXw0KKyNkZWZpbmUgX0ZYX0ZPTlRfSF8NCisjaWZuZGVmIF9GWENSVF9FWFRFTlNJT05fDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfZXh0LmgiDQorI2VuZGlmDQorI2lmbmRlZiBfRlhfRElCX0hfDQorI2luY2x1ZGUgImZ4X2RpYi5oIg0KKyNlbmRpZg0KK3R5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiBGWEZUX0ZhY2U7DQordHlwZWRlZiB2b2lkKiBGWEZUX0xpYnJhcnk7DQorY2xhc3MgSUZYX0ZvbnRFbmNvZGluZzsNCitjbGFzcyBDRlhfUGF0aERhdGE7DQorY2xhc3MgQ0ZYX1N1YnN0Rm9udDsNCitjbGFzcyBDRlhfRmFjZUNhY2hlOw0KK2NsYXNzIElGWF9Gb250TWFwcGVyOw0KK2NsYXNzIENGWF9Gb250TWFwcGVyOw0KK2NsYXNzIElGWF9TeXN0ZW1Gb250SW5mbzsNCitjbGFzcyBDRm9udEZpbGVGYWNlSW5mbzsNCisjZGVmaW5lIEZYRk9OVF9GSVhFRF9QSVRDSAkJMHgwMQ0KKyNkZWZpbmUgRlhGT05UX1NFUklGCQkJMHgwMg0KKyNkZWZpbmUgRlhGT05UX1NZTUJPTElDCQkJMHgwNA0KKyNkZWZpbmUgRlhGT05UX1NDUklQVAkJCTB4MDgNCisjZGVmaW5lIEZYRk9OVF9JVEFMSUMJCQkweDQwDQorI2RlZmluZSBGWEZPTlRfQk9MRAkJCQkweDQwMDAwDQorI2RlZmluZSBGWEZPTlRfVVNFRVhURVJOQVRUUgkweDgwMDAwDQorI2RlZmluZSBGWEZPTlRfQ0lERk9OVAkJCTB4MTAwMDAwDQorI2RlZmluZSBGWEZPTlRfQU5TSV9DSEFSU0VUCQkwDQorI2RlZmluZSBGWEZPTlRfREVGQVVMVF9DSEFSU0VUCTENCisjZGVmaW5lIEZYRk9OVF9TWU1CT0xfQ0hBUlNFVAkyDQorI2RlZmluZSBGWEZPTlRfU0hJRlRKSVNfQ0hBUlNFVAkxMjgNCisjZGVmaW5lIEZYRk9OVF9IQU5HRVVMX0NIQVJTRVQJMTI5DQorI2RlZmluZSBGWEZPTlRfR0IyMzEyX0NIQVJTRVQJMTM0DQorI2RlZmluZSBGWEZPTlRfQ0hJTkVTRUJJRzVfQ0hBUlNFVAkxMzYNCisjZGVmaW5lIEZYRk9OVF9USEFJX0NIQVJTRVQJCTIyMg0KKyNkZWZpbmUgRlhGT05UX0VBU1RFVVJPUEVfQ0hBUlNFVAkyMzgNCisjZGVmaW5lIEZYRk9OVF9SVVNTSUFOX0NIQVJTRVQJMjA0DQorI2RlZmluZSBGWEZPTlRfR1JFRUtfQ0hBUlNFVAkxNjENCisjZGVmaW5lIEZYRk9OVF9UVVJLSVNIX0NIQVJTRVQJMTYyDQorI2RlZmluZSBGWEZPTlRfSEVCUkVXX0NIQVJTRVQJMTc3DQorI2RlZmluZSBGWEZPTlRfQVJBQklDX0NIQVJTRVQJMTc4DQorI2RlZmluZSBGWEZPTlRfQkFMVElDX0NIQVJTRVQJMTg2DQorI2RlZmluZSBGWEZPTlRfRkZfRklYRURQSVRDSAkxDQorI2RlZmluZSBGWEZPTlRfRkZfUk9NQU4JCQkoMTw8NCkNCisjZGVmaW5lIEZYRk9OVF9GRl9TQ1JJUFQJCSg0PDw0KQ0KKyNkZWZpbmUgRlhGT05UX0ZXX05PUk1BTAkJNDAwDQorI2RlZmluZSBGWEZPTlRfRldfQk9MRAkJCTcwMA0KK2NsYXNzIENGWF9Gb250IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhfRm9udCgpOw0KKyAgICB+Q0ZYX0ZvbnQoKTsNCisNCisgICAgRlhfQk9PTAkJCQkJTG9hZFN1YnN0KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBmYWNlX25hbWUsIEZYX0JPT0wgYlRydWVUeXBlLCBGWF9EV09SRCBmbGFncywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3ZWlnaHQsIGludCBpdGFsaWNfYW5nbGUsIGludCBDaGFyc2V0Q1AsIEZYX0JPT0wgYlZlcnRpY2FsID0gRkFMU0UpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlMb2FkRW1iZWRkZWQoRlhfTFBDQllURSBkYXRhLCBGWF9EV09SRCBzaXplKTsNCisNCisgICAgRlhfQk9PTAkJCQkJTG9hZEZpbGUoSUZYX0ZpbGVSZWFkKiBwRmlsZSk7DQorDQorICAgIEZYRlRfRmFjZQkJCQlHZXRGYWNlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fRmFjZTsNCisgICAgfQ0KKw0KKw0KKyAgICBjb25zdCBDRlhfU3Vic3RGb250KglHZXRTdWJzdEZvbnQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wU3Vic3RGb250Ow0KKyAgICB9DQorDQorICAgIENGWF9QYXRoRGF0YSoJCQlMb2FkR2x5cGhQYXRoKEZYX0RXT1JEIGdseXBoX2luZGV4LCBpbnQgZGVzdF93aWR0aCA9IDApOw0KKw0KKyAgICBpbnQJCQkJCQlHZXRHbHlwaFdpZHRoKEZYX0RXT1JEIGdseXBoX2luZGV4KTsNCisNCisgICAgaW50CQkJCQkJR2V0QXNjZW50KCkgY29uc3Q7DQorDQorICAgIGludAkJCQkJCUdldERlc2NlbnQoKSBjb25zdDsNCisNCisgICAgRlhfQk9PTCAgICAgICAgICAgICAgICAgR2V0R2x5cGhCQm94KEZYX0RXT1JEIGdseXBoX2luZGV4LCBGWF9SRUNUICZiYm94KTsNCisNCisgICAgRlhfQk9PTCAgICAgICAgICAgICAgICAgSXNJdGFsaWMoKTsNCisNCisgICAgRlhfQk9PTCAgICAgICAgICAgICAgICAgSXNCb2xkKCk7DQorDQorICAgIEZYX0JPT0wgICAgICAgICAgICAgICAgIElzRml4ZWRXaWR0aCgpOw0KKw0KKyAgICBGWF9CT09MCQkJCQlJc1ZlcnRpY2FsKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fYlZlcnRpY2FsOw0KKyAgICB9DQorDQorICAgIENGWF9XaWRlU3RyaW5nICAgICAgICAgIEdldFBzTmFtZSgpIGNvbnN0Ow0KKw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZyAgICAgICAgICBHZXRGYW1pbHlOYW1lKCkgY29uc3Q7DQorDQorICAgIENGWF9CeXRlU3RyaW5nICAgICAgICAgIEdldEZhY2VOYW1lKCkgY29uc3Q7DQorDQorDQorICAgIEZYX0JPT0wgICAgICAgICAgICAgICAgIElzVFRGb250KCk7DQorDQorICAgIEZYX0JPT0wgICAgICAgICAgICAgICAgIEdldEJCb3goRlhfUkVDVCAmYmJveCk7DQorDQorICAgIGludCAgICAgICAgICAgICAgICAgICAgIEdldEhlaWdodCgpOw0KKw0KKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBHZXRVTFBvcygpOw0KKw0KKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBHZXRVTHRoaWNrbmVzcygpOw0KKw0KKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBHZXRNYXhBZHZhbmNlV2lkdGgoKTsNCisNCisgICAgRlhGVF9GYWNlCQkJCW1fRmFjZTsNCisNCisgICAgQ0ZYX1N1YnN0Rm9udCoJCQltX3BTdWJzdEZvbnQ7DQorICAgIEZYX0JPT0wJCQkJCUlzRW1iZWRkZWQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iRW1iZWRkZWQ7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQkJQWRqdXN0TU1QYXJhbXMoaW50IGdseXBoX2luZGV4LCBpbnQgd2lkdGgsIGludCB3ZWlnaHQpOw0KKyAgICBGWF9MUEJZVEUJCQkJbV9wRm9udERhdGFBbGxvY2F0aW9uOw0KKyAgICBGWF9MUEJZVEUgICAgICAgICAgICAgICBtX3BGb250RGF0YTsNCisgICAgRlhfTFBCWVRFCQkJCW1fcEdzdWJEYXRhOw0KKyAgICBGWF9EV09SRCAgICAgICAgICAgICAgICBtX2R3U2l6ZTsNCisgICAgQ0ZYX0JpbmFyeUJ1ZiAgICAgICAgICAgbV9PdGZGb250RGF0YTsNCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgbV9oSGFuZGxlOw0KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICBtX3BQbGF0Zm9ybUZvbnQ7DQorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgIG1fcFBsYXRmb3JtRm9udENvbGxlY3Rpb247DQorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgIG1fcER3Rm9udDsNCisgICAgRlhfQk9PTCAgICAgICAgICAgICAgICAgbV9iRHdMb2FkZWQ7DQorICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VQbGF0Zm9ybVJlc291cmNlKCk7DQorDQorICAgIHZvaWQJCQkJCURlbGV0ZUZhY2UoKTsNCitwcm90ZWN0ZWQ6DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYkVtYmVkZGVkOw0KKyAgICBGWF9CT09MCQkJCQltX2JWZXJ0aWNhbDsNCisgICAgdm9pZCoJCQkJCW1fcE93bmVkU3RyZWFtOw0KK307DQorI2RlZmluZSBFTkNPRElOR19JTlRFUk5BTAkJMA0KKyNkZWZpbmUgRU5DT0RJTkdfVU5JQ09ERQkJMQ0KK2NsYXNzIElGWF9Gb250RW5jb2RpbmcgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgfklGWF9Gb250RW5jb2RpbmcoKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECQlHbHlwaEZyb21DaGFyQ29kZShGWF9EV09SRCBjaGFyY29kZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIENGWF9XaWRlU3RyaW5nCVVuaWNvZGVGcm9tQ2hhckNvZGUoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0ID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9EV09SRAkJQ2hhckNvZGVGcm9tVW5pY29kZShGWF9XQ0hBUiBVbmljb2RlKSBjb25zdCA9IDA7DQorfTsNCitJRlhfRm9udEVuY29kaW5nKiBGWEdFX0NyZWF0ZVVuaWNvZGVFbmNvZGluZyhDRlhfRm9udCogcEZvbnQpOw0KKyNkZWZpbmUgRlhGT05UX1NVQlNUX01NCQkJCTB4MDENCisjZGVmaW5lIEZYRk9OVF9TVUJTVF9HTFlQSFBBVEgJCTB4MDQNCisjZGVmaW5lIEZYRk9OVF9TVUJTVF9DTEVBUlRZUEUJCTB4MDgNCisjZGVmaW5lIEZYRk9OVF9TVUJTVF9UUkFOU0ZPUk0JCTB4MTANCisjZGVmaW5lIEZYRk9OVF9TVUJTVF9OT05TWU1CT0wJCTB4MjANCisjZGVmaW5lIEZYRk9OVF9TVUJTVF9FWEFDVAkJCTB4NDANCisjZGVmaW5lIEZYRk9OVF9TVUJTVF9TVEFOREFSRAkJMHg4MA0KK2NsYXNzIENGWF9TdWJzdEZvbnQgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9TdWJzdEZvbnQoKTsNCisNCisgICAgRlhfTFBWT0lECQkJCW1fRXh0SGFuZGxlOw0KKw0KKyAgICBDRlhfQnl0ZVN0cmluZwkJCW1fRmFtaWx5Ow0KKw0KKyAgICBpbnQJCQkJCQltX0NoYXJzZXQ7DQorDQorICAgIEZYX0RXT1JECQkJCW1fU3Vic3RGbGFnczsNCisNCisgICAgaW50CQkJCQkJbV9XZWlnaHQ7DQorDQorICAgIGludAkJCQkJCW1fSXRhbGljQW5nbGU7DQorDQorICAgIEZYX0JPT0wJCQkJCW1fYlN1YnN0T2ZDSks7DQorDQorICAgIGludAkJCQkJCW1fV2VpZ2h0Q0pLOw0KKw0KKyAgICBGWF9CT09MCQkJCQltX2JJdGxpY0NKSzsNCit9Ow0KKyNkZWZpbmUgRlhfRk9OVF9GTEFHX1NFUklGICAgICAgICAgICAgICAweDAxDQorI2RlZmluZSBGWF9GT05UX0ZMQUdfRklYRURQSVRDSAkJCTB4MDINCisjZGVmaW5lIEZYX0ZPTlRfRkxBR19JVEFMSUMJCQkJMHgwNA0KKyNkZWZpbmUgRlhfRk9OVF9GTEFHX0JPTEQJCQkJMHgwOA0KKyNkZWZpbmUgRlhfRk9OVF9GTEFHX1NZTUJPTElDX1NZTUJPTAkweDEwDQorI2RlZmluZSBGWF9GT05UX0ZMQUdfU1lNQk9MSUNfRElOR0JBVFMJMHgyMA0KKyNkZWZpbmUgRlhfRk9OVF9GTEFHX01VTFRJUExFTUFTVEVSCQkweDQwDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICBGWF9MUENCWVRFCW1fcEZvbnREYXRhOw0KKyAgICBGWF9EV09SRAltX2R3U2l6ZTsNCit9IEZveGl0Rm9udHM7DQorY2xhc3MgQ0ZYX0ZvbnRNZ3IgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENGWF9Gb250TWdyKCk7DQorICAgIH5DRlhfRm9udE1ncigpOw0KKyAgICB2b2lkCQkJSW5pdEZUTGlicmFyeSgpOw0KKyAgICBGWEZUX0ZhY2UJCUdldENhY2hlZEZhY2UoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIGZhY2VfbmFtZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdlaWdodCwgRlhfQk9PTCBiSXRhbGljLCBGWF9MUEJZVEUmIHBGb250RGF0YSk7DQorICAgIEZYRlRfRmFjZQkJQWRkQ2FjaGVkRmFjZShjb25zdCBDRlhfQnl0ZVN0cmluZyYgZmFjZV9uYW1lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2VpZ2h0LCBGWF9CT09MIGJJdGFsaWMsIEZYX0xQQllURSBwRGF0YSwgRlhfRFdPUkQgc2l6ZSwgaW50IGZhY2VfaW5kZXgpOw0KKyAgICBGWEZUX0ZhY2UJCUdldENhY2hlZFRUQ0ZhY2UoaW50IHR0Y19zaXplLCBGWF9EV09SRCBjaGVja3N1bSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbnRfb2Zmc2V0LCBGWF9MUEJZVEUmIHBGb250RGF0YSk7DQorICAgIEZYRlRfRmFjZQkJQWRkQ2FjaGVkVFRDRmFjZShpbnQgdHRjX3NpemUsIEZYX0RXT1JEIGNoZWNrc3VtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgcERhdGEsIEZYX0RXT1JEIHNpemUsIGludCBmb250X29mZnNldCk7DQorICAgIEZYRlRfRmFjZQkJR2V0RmlsZUZhY2UoRlhfTFBDU1RSIGZpbGVuYW1lLCBpbnQgZmFjZV9pbmRleCk7DQorICAgIEZYRlRfRmFjZQkJR2V0Rml4ZWRGYWNlKEZYX0xQQ0JZVEUgcERhdGEsIEZYX0RXT1JEIHNpemUsIGludCBmYWNlX2luZGV4KTsNCisgICAgdm9pZAkJCVJlbGVhc2VGYWNlKEZYRlRfRmFjZSBmYWNlKTsNCisgICAgdm9pZAkJCVNldFN5c3RlbUZvbnRJbmZvKElGWF9TeXN0ZW1Gb250SW5mbyogcEZvbnRJbmZvKTsNCisgICAgRlhGVF9GYWNlCQlGaW5kU3Vic3RGb250KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBmYWNlX25hbWUsIEZYX0JPT0wgYlRydWVUeXBlLCBGWF9EV09SRCBmbGFncywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdlaWdodCwgaW50IGl0YWxpY19hbmdsZSwgaW50IENoYXJzZXRDUCwgQ0ZYX1N1YnN0Rm9udCogcFN1YnN0Rm9udCk7DQorDQorICAgIHZvaWQJCQlGcmVlQ2FjaGUoKTsNCisNCisgICAgRlhfQk9PTAkJCUdldFN0YW5kYXJkRm9udChGWF9MUENCWVRFJiBwRm9udERhdGEsIEZYX0RXT1JEJiBzaXplLCBpbnQgaW5kZXgpOw0KKyAgICBDRlhfRm9udE1hcHBlcioJbV9wQnVpbHRpbk1hcHBlcjsNCisgICAgSUZYX0ZvbnRNYXBwZXIqCW1fcEV4dE1hcHBlcjsNCisgICAgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cgltX0ZhY2VNYXA7DQorICAgIEZYRlRfTGlicmFyeQltX0ZUTGlicmFyeTsNCisgICAgRm94aXRGb250cyBtX0V4dGVybmFsRm9udHNbMTZdOw0KK307DQorY2xhc3MgSUZYX0ZvbnRNYXBwZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgfklGWF9Gb250TWFwcGVyKCkge30NCisNCisgICAgdmlydHVhbCBGWEZUX0ZhY2UJRmluZFN1YnN0Rm9udChjb25zdCBDRlhfQnl0ZVN0cmluZyYgZmFjZV9uYW1lLCBGWF9CT09MIGJUcnVlVHlwZSwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2VpZ2h0LCBpbnQgaXRhbGljX2FuZ2xlLCBpbnQgQ2hhcnNldENQLCBDRlhfU3Vic3RGb250KiBwU3Vic3RGb250KSA9IDA7DQorDQorICAgIENGWF9Gb250TWdyKgkJbV9wRm9udE1ncjsNCit9Ow0KK2NsYXNzIElGWF9Gb250RW51bWVyYXRvcg0KK3sNCitwdWJsaWM6DQorDQorICAgIHZpcnR1YWwgdm9pZAkJSGl0Rm9udCgpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkCQlGaW5pc2goKSA9IDA7DQorfTsNCitjbGFzcyBJRlhfQWRkaXRpb25hbEZvbnRFbnVtDQorew0KK3B1YmxpYzoNCisgICAgdmlydHVhbCBpbnQgIENvdW50RmlsZXMoKSA9IDA7DQorICAgIHZpcnR1YWwgSUZYX0ZpbGVTdHJlYW0qIEdldEZvbnRGaWxlKGludCBpbmRleCkgPSAwOw0KK307DQorY2xhc3MgQ0ZYX0ZvbnRNYXBwZXIgOiBwdWJsaWMgSUZYX0ZvbnRNYXBwZXINCit7DQorcHVibGljOg0KKyAgICBDRlhfRm9udE1hcHBlcigpOw0KKyAgICB2aXJ0dWFsIH5DRlhfRm9udE1hcHBlcigpOw0KKyAgICB2b2lkCQkJCVNldFN5c3RlbUZvbnRJbmZvKElGWF9TeXN0ZW1Gb250SW5mbyogcEZvbnRJbmZvKTsNCisgICAgSUZYX1N5c3RlbUZvbnRJbmZvKglHZXRTeXN0ZW1Gb250SW5mbygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BGb250SW5mbzsNCisgICAgfQ0KKyAgICB2b2lkCQkJCUFkZEluc3RhbGxlZEZvbnQoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUsIGludCBjaGFyc2V0KTsNCisgICAgdm9pZAkJCQlMb2FkSW5zdGFsbGVkRm9udHMoKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmdBcnJheQltX0luc3RhbGxlZFRURm9udHM7DQorICAgIHZvaWQJCQkJU2V0Rm9udEVudW1lcmF0b3IoSUZYX0ZvbnRFbnVtZXJhdG9yKiBwRm9udEVudW1lcmF0b3IpDQorICAgIHsNCisgICAgICAgIG1fcEZvbnRFbnVtZXJhdG9yID0gcEZvbnRFbnVtZXJhdG9yOw0KKyAgICB9DQorICAgIElGWF9Gb250RW51bWVyYXRvcioJR2V0Rm9udEVudW1lcmF0b3IoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRm9udEVudW1lcmF0b3I7DQorICAgIH0NCisgICAgdmlydHVhbCBGWEZUX0ZhY2UJRmluZFN1YnN0Rm9udChjb25zdCBDRlhfQnl0ZVN0cmluZyYgZmFjZV9uYW1lLCBGWF9CT09MIGJUcnVlVHlwZSwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2VpZ2h0LCBpbnQgaXRhbGljX2FuZ2xlLCBpbnQgQ2hhcnNldENQLCBDRlhfU3Vic3RGb250KiBwU3Vic3RGb250KTsNCitwcml2YXRlOg0KKyAgICBDRlhfQnl0ZVN0cmluZwkJR2V0UFNOYW1lRnJvbVRUKHZvaWQqIGhGb250KTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCU1hdGNoSW5zdGFsbGVkRm9udHMoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5vcm1fbmFtZSk7DQorICAgIEZYRlRfRmFjZQkJCVVzZUludGVybmFsU3Vic3QoQ0ZYX1N1YnN0Rm9udCogcFN1YnN0Rm9udCwgaW50IGlCYXNlRm9udCwgaW50IGl0YWxpY19hbmdsZSwgaW50IHdlaWdodCwgaW50IHBpY3RoZmFtaWx5KTsNCisNCisgICAgRlhfQk9PTAkJCQltX2JMaXN0TG9hZGVkOw0KKyAgICBGWEZUX0ZhY2UJCQltX01NRmFjZXNbMl07DQorICAgIENGWF9CeXRlU3RyaW5nCQltX0xhc3RGYW1pbHk7DQorICAgIENGWF9EV29yZEFycmF5CQltX0NoYXJzZXRBcnJheTsNCisgICAgQ0ZYX0J5dGVTdHJpbmdBcnJheQltX0ZhY2VBcnJheTsNCisgICAgSUZYX1N5c3RlbUZvbnRJbmZvKgltX3BGb250SW5mbzsNCisgICAgRlhGVF9GYWNlCQkJbV9Gb3hpdEZhY2VzWzE0XTsNCisgICAgSUZYX0ZvbnRFbnVtZXJhdG9yKgkJbV9wRm9udEVudW1lcmF0b3I7DQorfTsNCitjbGFzcyBJRlhfU3lzdGVtRm9udEluZm8gOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIHN0YXRpYyBJRlhfU3lzdGVtRm9udEluZm8qCUNyZWF0ZURlZmF1bHQoKTsNCisgICAgdmlydHVhbCB2b2lkCQlSZWxlYXNlKCkgPSAwOw0KKyAgICB2aXJ0dWFsCUZYX0JPT0wJCUVudW1Gb250TGlzdChDRlhfRm9udE1hcHBlciogcE1hcHBlcikgPSAwOw0KKyAgICB2aXJ0dWFsIHZvaWQqCQlNYXBGb250KGludCB3ZWlnaHQsIEZYX0JPT0wgYkl0YWxpYywgaW50IGNoYXJzZXQsIGludCBwaXRjaF9mYW1pbHksIEZYX0xQQ1NUUiBmYWNlLCBGWF9CT09MJiBiRXhhY3QpID0gMDsNCisgICAgdmlydHVhbCB2b2lkKgkJR2V0Rm9udChGWF9MUENTVFIgZmFjZSkgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECUdldEZvbnREYXRhKHZvaWQqIGhGb250LCBGWF9EV09SRCB0YWJsZSwgRlhfTFBCWVRFIGJ1ZmZlciwgRlhfRFdPUkQgc2l6ZSkgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUdldEZhY2VOYW1lKHZvaWQqIGhGb250LCBDRlhfQnl0ZVN0cmluZyYgbmFtZSkgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUdldEZvbnRDaGFyc2V0KHZvaWQqIGhGb250LCBpbnQmIGNoYXJzZXQpID0gMDsNCisgICAgdmlydHVhbCBpbnQJCQlHZXRGYWNlSW5kZXgodm9pZCogaEZvbnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHZpcnR1YWwgdm9pZAkJRGVsZXRlRm9udCh2b2lkKiBoRm9udCkgPSAwOw0KKyAgICB2aXJ0dWFsIHZvaWQqICAgICAgIFJldGFpbkZvbnQodm9pZCogaEZvbnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorfTsNCitjbGFzcyBDRlhfRm9sZGVyRm9udEluZm8gOiBwdWJsaWMgSUZYX1N5c3RlbUZvbnRJbmZvDQorew0KK3B1YmxpYzoNCisgICAgQ0ZYX0ZvbGRlckZvbnRJbmZvKCk7DQorICAgIH5DRlhfRm9sZGVyRm9udEluZm8oKTsNCisgICAgdm9pZAkJCQlBZGRQYXRoKEZYX0JTVFIgcGF0aCk7DQorICAgIHZpcnR1YWwgdm9pZAkJUmVsZWFzZSgpOw0KKyAgICB2aXJ0dWFsCUZYX0JPT0wJCUVudW1Gb250TGlzdChDRlhfRm9udE1hcHBlciogcE1hcHBlcik7DQorICAgIHZpcnR1YWwgdm9pZCoJCU1hcEZvbnQoaW50IHdlaWdodCwgRlhfQk9PTCBiSXRhbGljLCBpbnQgY2hhcnNldCwgaW50IHBpdGNoX2ZhbWlseSwgRlhfTFBDU1RSIGZhY2UsIEZYX0JPT0wmIGJFeGFjdCk7DQorICAgIHZpcnR1YWwgdm9pZCoJCUdldEZvbnQoRlhfTFBDU1RSIGZhY2UpOw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECUdldEZvbnREYXRhKHZvaWQqIGhGb250LCBGWF9EV09SRCB0YWJsZSwgRlhfTFBCWVRFIGJ1ZmZlciwgRlhfRFdPUkQgc2l6ZSk7DQorICAgIHZpcnR1YWwgdm9pZAkJRGVsZXRlRm9udCh2b2lkKiBoRm9udCk7DQorICAgIHZpcnR1YWwJRlhfQk9PTAkJR2V0RmFjZU5hbWUodm9pZCogaEZvbnQsIENGWF9CeXRlU3RyaW5nJiBuYW1lKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQlHZXRGb250Q2hhcnNldCh2b2lkKiBoRm9udCwgaW50JiBjaGFyc2V0KTsNCitwcm90ZWN0ZWQ6DQorICAgIENGWF9NYXBCeXRlU3RyaW5nVG9QdHIJbV9Gb250TGlzdDsNCisgICAgQ0ZYX0J5dGVTdHJpbmdBcnJheQltX1BhdGhMaXN0Ow0KKyAgICBDRlhfRm9udE1hcHBlcioJCW1fcE1hcHBlcjsNCisgICAgdm9pZAkJCQlTY2FuUGF0aChDRlhfQnl0ZVN0cmluZyYgcGF0aCk7DQorICAgIHZvaWQJCQkJU2NhbkZpbGUoQ0ZYX0J5dGVTdHJpbmcmIHBhdGgpOw0KKyAgICB2b2lkCQkJCVJlcG9ydEZhY2UoQ0ZYX0J5dGVTdHJpbmcmIHBhdGgsIEZYU1lTX0ZJTEUqIHBGaWxlLCBGWF9EV09SRCBmaWxlc2l6ZSwgRlhfRFdPUkQgb2Zmc2V0KTsNCit9Ow0KK2NsYXNzIENGWF9Db3VudGVkRmFjZUNhY2hlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhfRmFjZUNhY2hlKgltX09iajsNCisgICAgRlhfRFdPUkQJCW1fbkNvdW50Ow0KK307DQordHlwZWRlZiBDRlhfTWFwUHRyVGVtcGxhdGU8RlhGVF9GYWNlLCBDRlhfQ291bnRlZEZhY2VDYWNoZSo+IENGWF9GVENhY2hlTWFwOw0KK2NsYXNzIENGWF9Gb250Q2FjaGUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIH5DRlhfRm9udENhY2hlKCk7DQorICAgIENGWF9GYWNlQ2FjaGUqCQkJR2V0Q2FjaGVkRmFjZShDRlhfRm9udCogcEZvbnQpOw0KKyAgICB2b2lkCQkJCQlSZWxlYXNlQ2FjaGVkRmFjZShDRlhfRm9udCogcEZvbnQpOw0KKyAgICB2b2lkCQkJCQlGcmVlQ2FjaGUoRlhfQk9PTCBiUmVsZWFzZSA9IEZBTFNFKTsNCisNCitwcml2YXRlOg0KKyAgICBDRlhfRlRDYWNoZU1hcAkJCW1fRlRGYWNlTWFwOw0KKyAgICBDRlhfRlRDYWNoZU1hcAkJCW1fRXh0RmFjZU1hcDsNCit9Ow0KK2NsYXNzIENGWF9BdXRvRm9udENhY2hlDQorew0KK3B1YmxpYzoNCisgICAgQ0ZYX0F1dG9Gb250Q2FjaGUoQ0ZYX0ZvbnRDYWNoZSogcEZvbnRDYWNoZSwgQ0ZYX0ZvbnQqIHBGb250KQ0KKyAgICAgICAgOiBtX3BGb250Q2FjaGUocEZvbnRDYWNoZSkNCisgICAgICAgICwgbV9wRm9udChwRm9udCkNCisgICAgew0KKyAgICB9DQorICAgIH5DRlhfQXV0b0ZvbnRDYWNoZSgpDQorICAgIHsNCisgICAgICAgIG1fcEZvbnRDYWNoZS0+UmVsZWFzZUNhY2hlZEZhY2UobV9wRm9udCk7DQorICAgIH0NCisgICAgQ0ZYX0ZvbnRDYWNoZSogbV9wRm9udENhY2hlOw0KKyAgICBDRlhfRm9udCogbV9wRm9udDsNCit9Ow0KKyNkZWZpbmUgRlhfRk9OVENBQ0hFX0RFRklORShwRm9udENhY2hlLCBwRm9udCkgQ0ZYX0F1dG9Gb250Q2FjaGUgYXV0b0ZvbnRDYWNoZSgocEZvbnRDYWNoZSksIChwRm9udCkpDQorY2xhc3MgQ0ZYX0dseXBoQml0bWFwIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBpbnQJCQkJCQltX1RvcDsNCisgICAgaW50CQkJCQkJbV9MZWZ0Ow0KKyAgICBDRlhfRElCaXRtYXAJCQltX0JpdG1hcDsNCit9Ow0KK2NsYXNzIENGWF9GYWNlQ2FjaGUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIH5DRlhfRmFjZUNhY2hlKCk7DQorICAgIGNvbnN0IENGWF9HbHlwaEJpdG1hcCoJTG9hZEdseXBoQml0bWFwKENGWF9Gb250KiBwRm9udCwgRlhfRFdPUkQgZ2x5cGhfaW5kZXgsIEZYX0JPT0wgYkZvbnRTdHlsZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBpbnQgYW50aV9hbGlhcywgaW50JiB0ZXh0X2ZsYWdzKTsNCisgICAgY29uc3QgQ0ZYX1BhdGhEYXRhKgkJTG9hZEdseXBoUGF0aChDRlhfRm9udCogcEZvbnQsIEZYX0RXT1JEIGdseXBoX2luZGV4LCBpbnQgZGVzdF93aWR0aCk7DQorDQorDQorICAgIENGWF9GYWNlQ2FjaGUoRlhGVF9GYWNlIGZhY2UpOw0KK3ByaXZhdGU6DQorICAgIEZYRlRfRmFjZQkJCQltX0ZhY2U7DQorICAgIENGWF9HbHlwaEJpdG1hcCoJCVJlbmRlckdseXBoKENGWF9Gb250KiBwRm9udCwgRlhfRFdPUkQgZ2x5cGhfaW5kZXgsIEZYX0JPT0wgYkZvbnRTdHlsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgaW50IGRlc3Rfd2lkdGgsIGludCBhbnRpX2FsaWFzKTsNCisgICAgQ0ZYX0dseXBoQml0bWFwKgkJUmVuZGVyR2x5cGhfTmF0aXZldGV4dChDRlhfRm9udCogcEZvbnQsIEZYX0RXT1JEIGdseXBoX2luZGV4LA0KKyAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIGludCBkZXN0X3dpZHRoLCBpbnQgYW50aV9hbGlhcyk7DQorICAgIENGWF9HbHlwaEJpdG1hcCogICAgICAgIExvb2tVcEdseXBoQml0bWFwKENGWF9Gb250KiBwRm9udCwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgQ0ZYX0J5dGVTdHJpbmdDJiBGYWNlR2x5cGhzS2V5LA0KKyAgICAgICAgICAgIEZYX0RXT1JEIGdseXBoX2luZGV4LCBGWF9CT09MIGJGb250U3R5bGUsIGludCBkZXN0X3dpZHRoLCBpbnQgYW50aV9hbGlhcyk7DQorICAgIENGWF9NYXBCeXRlU3RyaW5nVG9QdHIJbV9TaXplTWFwOw0KKyAgICBDRlhfTWFwUHRyVG9QdHIJCQltX1BhdGhNYXA7DQorICAgIENGWF9ESUJpdG1hcCogICAgICAgICAgIG1fcEJpdG1hcDsNCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgbV9wUGxhdGZvcm1HcmFwaGljczsNCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgbV9wUGxhdGZvcm1CaXRtYXA7DQorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgIG1faERDOw0KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICBtX2hCaXRtYXA7DQorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgIG1faE9sZEJpdG1hcDsNCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgbV9oR2RpRm9udDsNCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgbV9oT2xkR2RpRm9udDsNCisNCisgICAgdm9pZAkJCQkgICAgSW5pdFBsYXRmb3JtKCk7DQorICAgIHZvaWQJCQkJICAgIERlc3Ryb3lQbGF0Zm9ybSgpOw0KK307DQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICBjb25zdCBDRlhfR2x5cGhCaXRtYXAqCW1fcEdseXBoOw0KKyAgICBpbnQJCQkJCW1fT3JpZ2luWCwgbV9PcmlnaW5ZOw0KKyAgICBGWF9GTE9BVAkJCW1fZk9yaWdpblgsIG1fZk9yaWdpblk7DQorfSBGWFRFWFRfR0xZUEhQT1M7DQorRlhfUkVDVCBGWEdFX0dldEdseXBoc0JCb3goRlhURVhUX0dMWVBIUE9TKiBwR2x5cGhBbmRQb3MsIGludCBuQ2hhcnMsIGludCBhbnRpX2FsaWFzLCBGWF9GTE9BVCByZXRpbmFTY2FsZVggPSAxLjBmLCBGWF9GTE9BVCByZXRpbmFTY2FsZVkgPSAxLjBmKTsNCitGWF9CT09MCU91dHB1dEdseXBoKHZvaWQqIGRpYiwgaW50IHgsIGludCB5LCBDRlhfRm9udCogcEZvbnQsIGRvdWJsZSBmb250X3NpemUsDQorICAgICAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCB1bnNpZ25lZCBsb25nIGdseXBoX2luZGV4LCB1bnNpZ25lZCBsb25nIGFyZ2IpOw0KK0ZYX0JPT0wJT3V0cHV0VGV4dCh2b2lkKiBkaWIsIGludCB4LCBpbnQgeSwgQ0ZYX0ZvbnQqIHBGb250LCBkb3VibGUgZm9udF9zaXplLA0KKyAgICAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4KiBwVGV4dF9tYXRyaXgsIHVuc2lnbmVkIHNob3J0IGNvbnN0KiB0ZXh0LCB1bnNpZ25lZCBsb25nIGFyZ2IpOw0KK2NsYXNzIElGWF9HU1VCVGFibGUNCit7DQorcHVibGljOg0KKyAgICB2aXJ0dWFsIHZvaWQJUmVsZWFzZSgpID0gMDsNCisgICAgdmlydHVhbCBGWF9CT09MIEdldFZlcnRpY2FsR2x5cGgoRlhfRFdPUkQgZ2x5cGhudW0sIEZYX0RXT1JEKiB2Z2x5cGhudW0pID0gMDsNCit9Ow0KK0lGWF9HU1VCVGFibGUqIEZYR0VfQ3JlYXRlR1NVQlRhYmxlKENGWF9Gb250KiBwRm9udCk7DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Z2UvZnhfZnJlZXR5cGUuaCBiL2NvcmUvaW5jbHVkZS9meGdlL2Z4X2ZyZWV0eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3YzNlZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGdlL2Z4X2ZyZWV0eXBlLmgKQEAgLTAsMCArMSwxNDQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnQyYnVpbGQuaCINCisjaW5jbHVkZSAiLi4vdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiDQorI2luY2x1ZGUgIi4uL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdG91dGxuLmgiDQorI2luY2x1ZGUgIi4uL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdG1tLmgiDQorI2luY2x1ZGUgIi4uL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCINCisjaW5jbHVkZSAiLi4vdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL3R0dGFibGVzLmgiDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorI2RlZmluZSBGWEZUX0VOQ09ESU5HX1VOSUNPREUgRlRfRU5DT0RJTkdfVU5JQ09ERQ0KKyNkZWZpbmUgRlhGVF9FTkNPRElOR19BRE9CRV9TVEFOREFSRCBGVF9FTkNPRElOR19BRE9CRV9TVEFOREFSRA0KKyNkZWZpbmUgRlhGVF9FTkNPRElOR19BRE9CRV9FWFBFUlQgRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJUDQorI2RlZmluZSBGWEZUX0VOQ09ESU5HX0FET0JFX0xBVElOXzEgRlRfRU5DT0RJTkdfQURPQkVfTEFUSU5fMQ0KKyNkZWZpbmUgRlhGVF9FTkNPRElOR19BUFBMRV9ST01BTiBGVF9FTkNPRElOR19BUFBMRV9ST01BTg0KKyNkZWZpbmUgRlhGVF9FTkNPRElOR19BRE9CRV9DVVNUT00gRlRfRU5DT0RJTkdfQURPQkVfQ1VTVE9NDQorI2RlZmluZSBGWEZUX0VOQ09ESU5HX01TX1NZTUJPTCBGVF9FTkNPRElOR19NU19TWU1CT0wNCisjZGVmaW5lIEZYRlRfRU5DT0RJTkdfR0IyMzEyIEZUX0VOQ09ESU5HX0dCMjMxMg0KKyNkZWZpbmUgRlhGVF9FTkNPRElOR19CSUc1IEZUX0VOQ09ESU5HX0JJRzUNCisjZGVmaW5lIEZYRlRfRU5DT0RJTkdfU0pJUyBGVF9FTkNPRElOR19TSklTDQorI2RlZmluZSBGWEZUX0VOQ09ESU5HX0pPSEFCIEZUX0VOQ09ESU5HX0pPSEFCDQorI2RlZmluZSBGWEZUX0VOQ09ESU5HX1dBTlNVTkcgRlRfRU5DT0RJTkdfV0FOU1VORw0KKyNkZWZpbmUgRlhGVF9MT0FEX05PX1NDQUxFIEZUX0xPQURfTk9fU0NBTEUNCisjZGVmaW5lIEZYRlRfTE9BRF9JR05PUkVfR0xPQkFMX0FEVkFOQ0VfV0lEVEggRlRfTE9BRF9JR05PUkVfR0xPQkFMX0FEVkFOQ0VfV0lEVEgNCisjZGVmaW5lIEZYRlRfUkVOREVSX01PREVfTENEIEZUX1JFTkRFUl9NT0RFX0xDRA0KKyNkZWZpbmUgRlhGVF9SRU5ERVJfTU9ERV9NT05PIEZUX1JFTkRFUl9NT0RFX01PTk8NCisjZGVmaW5lIEZYRlRfUkVOREVSX01PREVfTk9STUFMIEZUX1JFTkRFUl9NT0RFX05PUk1BTA0KKyNkZWZpbmUgRlhGVF9MT0FEX0lHTk9SRV9UUkFOU0ZPUk0gRlRfTE9BRF9JR05PUkVfVFJBTlNGT1JNDQorI2RlZmluZSBGWEZUX0xPQURfTk9fQklUTUFQIEZUX0xPQURfTk9fQklUTUFQDQorI2RlZmluZSBGWEZUX0xPQURfTk9fSElOVElORyBGVF9MT0FEX05PX0hJTlRJTkcNCisjZGVmaW5lIEZYRlRfUElYRUxfTU9ERV9NT05PIEZUX1BJWEVMX01PREVfTU9OTw0KKyNkZWZpbmUgRlhGVF9TVFlMRV9GTEFHX0lUQUxJQyBGVF9TVFlMRV9GTEFHX0lUQUxJQw0KKyNkZWZpbmUgRlhGVF9TVFlMRV9GTEFHX0JPTEQgRlRfU1RZTEVfRkxBR19CT0xEDQorI2RlZmluZSBGWEZUX0ZBQ0VfRkxBR19TRk5UIEZUX0ZBQ0VfRkxBR19TRk5UDQorI2RlZmluZSBGWEZUX0ZBQ0VfRkxBR19UUklDS1kgKCAxTCA8PCAxMyApDQordHlwZWRlZiBGVF9NTV9WYXIqCQlGWEZUX01NX1ZhcjsNCit0eXBlZGVmIEZUX0JpdG1hcCoJCUZYRlRfQml0bWFwOw0KKyNkZWZpbmUgRlhGVF9NYXRyaXgJCUZUX01hdHJpeA0KKyNkZWZpbmUgRlhGVF9WZWN0b3IJCUZUX1ZlY3Rvcg0KKyNkZWZpbmUgRlhGVF9PdXRsaW5lX0Z1bmNzIEZUX091dGxpbmVfRnVuY3MNCit0eXBlZGVmIEZUX09wZW5fQXJncwlGWEZUX09wZW5fQXJnczsNCit0eXBlZGVmIEZUX1N0cmVhbVJlYwlGWEZUX1N0cmVhbVJlYzsNCit0eXBlZGVmIEZUX1N0cmVhbVJlYyoJRlhGVF9TdHJlYW07DQordHlwZWRlZiBGVF9CQm94CQkJRlhGVF9CQm94Ow0KK3R5cGVkZWYgRlRfR2x5cGgJCUZYRlRfR2x5cGg7DQordHlwZWRlZiBGVF9DaGFyTWFwCQlGWEZUX0NoYXJNYXA7DQorI2RlZmluZSBGWEZUX0dMWVBIX0JCT1hfUElYRUxTCUZUX0dMWVBIX0JCT1hfUElYRUxTDQorI2RlZmluZSBGWEZUX09wZW5fRmFjZShsaWJyYXJ5LCBhcmdzLCBpbmRleCwgZmFjZSkgXA0KKyAgICBGVF9PcGVuX0ZhY2UoKEZUX0xpYnJhcnkpKGxpYnJhcnkpLCBhcmdzLCBpbmRleCwgKEZUX0ZhY2UqKShmYWNlKSkNCisjZGVmaW5lIEZYRlRfRG9uZV9GYWNlKGZhY2UpIEZUX0RvbmVfRmFjZSgoRlRfRmFjZSkoZmFjZSkpDQorI2RlZmluZSBGWEZUX0RvbmVfRnJlZVR5cGUobGlicmFyeSkgRlRfRG9uZV9GcmVlVHlwZSgoRlRfTGlicmFyeSkobGlicmFyeSkpDQorI2RlZmluZSBGWEZUX0luaXRfRnJlZVR5cGUobGlicmFyeSkgRlRfSW5pdF9GcmVlVHlwZSgoRlRfTGlicmFyeSopKGxpYnJhcnkpKQ0KKyNkZWZpbmUgRlhGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwgYmFzZSwgc2l6ZSwgaW5kZXgsIGZhY2UpIFwNCisgICAgRlRfTmV3X01lbW9yeV9GYWNlKChGVF9MaWJyYXJ5KShsaWJyYXJ5KSwgYmFzZSwgc2l6ZSwgaW5kZXgsIChGVF9GYWNlKikoZmFjZSkpDQorI2RlZmluZSBGWEZUX05ld19GYWNlKGxpYnJhcnksIGZpbGVuYW1lLCBpbmRleCwgZmFjZSkgXA0KKyAgICBGVF9OZXdfRmFjZSgoRlRfTGlicmFyeSkobGlicmFyeSksIGZpbGVuYW1lLCBpbmRleCwgKEZUX0ZhY2UqKShmYWNlKSkNCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfRnJlZVR5cGUoZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5kcml2ZXItPnJvb3QubGlicmFyeQ0KKyNkZWZpbmUgRlhGVF9TZWxlY3RfQ2hhcm1hcChmYWNlLCBlbmNvZGluZykgRlRfU2VsZWN0X0NoYXJtYXAoKEZUX0ZhY2UpZmFjZSwgKEZUX0VuY29kaW5nKWVuY29kaW5nKQ0KKyNkZWZpbmUgRlhGVF9TZXRfQ2hhcm1hcChmYWNlLCBjaGFybWFwKSBGVF9TZXRfQ2hhcm1hcCgoRlRfRmFjZSlmYWNlLCAoRlRfQ2hhck1hcCljaGFybWFwKQ0KKyNkZWZpbmUgRlhGVF9Mb2FkX0dseXBoKGZhY2UsIGdseXBoX2luZGV4LCBmbGFncykgRlRfTG9hZF9HbHlwaCgoRlRfRmFjZSlmYWNlLCBnbHlwaF9pbmRleCwgZmxhZ3MpDQorI2RlZmluZSBGWEZUX0dldF9DaGFyX0luZGV4KGZhY2UsIGNvZGUpIEZUX0dldF9DaGFyX0luZGV4KChGVF9GYWNlKWZhY2UsIGNvZGUpDQorI2RlZmluZSBGWEZUX0dldF9HbHlwaF9OYW1lKGZhY2UsIGluZGV4LCBidWZmZXIsIHNpemUpIEZUX0dldF9HbHlwaF9OYW1lKChGVF9GYWNlKWZhY2UsIGluZGV4LCBidWZmZXIsIHNpemUpDQorI2RlZmluZSBGWEZUX0dldF9OYW1lX0luZGV4KGZhY2UsIG5hbWUpIEZUX0dldF9OYW1lX0luZGV4KChGVF9GYWNlKWZhY2UsIG5hbWUpDQorI2RlZmluZSBGWEZUX0hhc19HbHlwaF9OYW1lcyhmYWNlKSAgKCgoRlRfRmFjZSlmYWNlKS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUykNCisjZGVmaW5lIEZYRlRfR2V0X1Bvc3RzY3JpcHRfTmFtZShmYWNlKSBGVF9HZXRfUG9zdHNjcmlwdF9OYW1lKChGVF9GYWNlKWZhY2UpDQorI2RlZmluZSBGWEZUX0xvYWRfU2ZudF9UYWJsZShmYWNlLCB0YWcsIG9mZnNldCwgYnVmZmVyLCBsZW5ndGgpIFwNCisgICAgRlRfTG9hZF9TZm50X1RhYmxlKChGVF9GYWNlKWZhY2UsIHRhZywgb2Zmc2V0LCBidWZmZXIsIGxlbmd0aCkNCisjZGVmaW5lIEZYRlRfR2V0X0ZpcnN0X0NoYXIoZmFjZSwgZ2x5cGhfaW5kZXgpIEZUX0dldF9GaXJzdF9DaGFyKChGVF9GYWNlKWZhY2UsIGdseXBoX2luZGV4KQ0KKyNkZWZpbmUgRlhGVF9HZXRfTmV4dF9DaGFyKGZhY2UsIGNvZGUsIGdseXBoX2luZGV4KSBGVF9HZXRfTmV4dF9DaGFyKChGVF9GYWNlKWZhY2UsIGNvZGUsIGdseXBoX2luZGV4KQ0KKyNkZWZpbmUgRlhGVF9DbGVhcl9GYWNlX0V4dGVybmFsX1N0cmVhbShmYWNlKSAoKChGVF9GYWNlKWZhY2UpLT5mYWNlX2ZsYWdzJj1+RlRfRkFDRV9GTEFHX0VYVEVSTkFMX1NUUkVBTSkNCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfRXh0ZXJuYWxfU3RyZWFtKGZhY2UpICgoKEZUX0ZhY2UpZmFjZSktPmZhY2VfZmxhZ3MmRlRfRkFDRV9GTEFHX0VYVEVSTkFMX1NUUkVBTSkNCisjZGVmaW5lIEZYRlRfSXNfRmFjZV9UVF9PVChmYWNlKSAoKChGVF9GYWNlKWZhY2UpLT5mYWNlX2ZsYWdzJkZUX0ZBQ0VfRkxBR19TRk5UKQ0KKyNkZWZpbmUgRlhGVF9Jc19GYWNlX1RyaWNreShmYWNlKSAoKChGVF9GYWNlKWZhY2UpLT5mYWNlX2ZsYWdzJkZYRlRfRkFDRV9GTEFHX1RSSUNLWSkNCisjZGVmaW5lIEZYRlRfSXNfRmFjZV9maXhlZHdpZHRoKGZhY2UpICgoKEZUX0ZhY2UpZmFjZSktPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfRklYRURfV0lEVEgpDQorI2RlZmluZSBGWEZUX0dldF9GYWNlX1N0cmVhbV9CYXNlKGZhY2UpICgoRlRfRmFjZSlmYWNlKS0+c3RyZWFtLT5iYXNlDQorI2RlZmluZSBGWEZUX0dldF9GYWNlX1N0cmVhbV9TaXplKGZhY2UpICgoRlRfRmFjZSlmYWNlKS0+c3RyZWFtLT5zaXplDQorI2RlZmluZSBGWEZUX0dldF9GYWNlX0ZhbWlseV9OYW1lKGZhY2UpICgoRlRfRmFjZSlmYWNlKS0+ZmFtaWx5X25hbWUNCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfU3R5bGVfTmFtZShmYWNlKSAoKEZUX0ZhY2UpZmFjZSktPnN0eWxlX25hbWUNCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfTnVtZmFjZXMoZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5udW1fZmFjZXMNCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfRmFjZWluZGV4KGZhY2UpICgoRlRfRmFjZSlmYWNlKS0+ZmFjZV9pbmRleA0KKyNkZWZpbmUgRlhGVF9Jc19GYWNlX0l0YWxpYyhmYWNlKSAoKChGVF9GYWNlKWZhY2UpLT5zdHlsZV9mbGFncyZGVF9TVFlMRV9GTEFHX0lUQUxJQykNCisjZGVmaW5lIEZYRlRfSXNfRmFjZV9Cb2xkKGZhY2UpICgoKEZUX0ZhY2UpZmFjZSktPnN0eWxlX2ZsYWdzJkZUX1NUWUxFX0ZMQUdfQk9MRCkNCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcHMoZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5jaGFybWFwcw0KKyNkZWZpbmUgRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdYKGZhY2UpICgoRlRfRmFjZSlmYWNlKS0+Z2x5cGgtPm1ldHJpY3MuaG9yaUJlYXJpbmdYDQorI2RlZmluZSBGWEZUX0dldF9HbHlwaF9Ib3JpQmVhcmluZ1koZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5nbHlwaC0+bWV0cmljcy5ob3JpQmVhcmluZ1kNCisjZGVmaW5lIEZYRlRfR2V0X0dseXBoX1dpZHRoKGZhY2UpICgoRlRfRmFjZSlmYWNlKS0+Z2x5cGgtPm1ldHJpY3Mud2lkdGgNCisjZGVmaW5lIEZYRlRfR2V0X0dseXBoX0hlaWdodChmYWNlKSAoKEZUX0ZhY2UpZmFjZSktPmdseXBoLT5tZXRyaWNzLmhlaWdodA0KKyNkZWZpbmUgRlhGVF9HZXRfRmFjZV9DaGFybWFwQ291bnQoZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5udW1fY2hhcm1hcHMNCisjZGVmaW5lIEZYRlRfR2V0X0NoYXJtYXBfRW5jb2RpbmcoY2hhcm1hcCkgKChGVF9DaGFyTWFwKWNoYXJtYXApLT5lbmNvZGluZw0KKyNkZWZpbmUgRlhGVF9HZXRfRmFjZV9DaGFybWFwKGZhY2UpICgoRlRfRmFjZSlmYWNlKS0+Y2hhcm1hcA0KKyNkZWZpbmUgRlhGVF9HZXRfQ2hhcm1hcF9QbGF0Zm9ybUlEKGNoYXJtYXApICgoRlRfQ2hhck1hcCljaGFybWFwKS0+cGxhdGZvcm1faWQNCisjZGVmaW5lIEZYRlRfR2V0X0NoYXJtYXBfRW5jb2RpbmdJRChjaGFybWFwKSAoKEZUX0NoYXJNYXApY2hhcm1hcCktPmVuY29kaW5nX2lkDQorI2RlZmluZSBGWEZUX0dldF9GYWNlX1VuaXRzUGVyRU0oZmFjZSkgKChGVF9GYWNlKWZhY2UpLT51bml0c19wZXJfRU0NCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfeE1pbihmYWNlKSAoKEZUX0ZhY2UpZmFjZSktPmJib3gueE1pbg0KKyNkZWZpbmUgRlhGVF9HZXRfRmFjZV94TWF4KGZhY2UpICgoRlRfRmFjZSlmYWNlKS0+YmJveC54TWF4DQorI2RlZmluZSBGWEZUX0dldF9GYWNlX3lNaW4oZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5iYm94LnlNaW4NCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfeU1heChmYWNlKSAoKEZUX0ZhY2UpZmFjZSktPmJib3gueU1heA0KKyNkZWZpbmUgRlhGVF9HZXRfRmFjZV9IZWlnaHQoZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5oZWlnaHQNCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfVW5kZXJMaW5lVGhpY2tuZXNzKGZhY2UpICgoRlRfRmFjZSlmYWNlKS0+dW5kZXJsaW5lX3RoaWNrbmVzcw0KKyNkZWZpbmUgRlhGVF9HZXRfRmFjZV9VbmRlckxpbmVQb3NpdGlvbihmYWNlKSAoKEZUX0ZhY2UpZmFjZSktPnVuZGVybGluZV9wb3NpdGlvbg0KKyNkZWZpbmUgRlhGVF9HZXRfRmFjZV9NYXhBZHZhbmNlV2lkdGgoZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5tYXhfYWR2YW5jZV93aWR0aA0KKyNkZWZpbmUgRlhGVF9HZXRfRmFjZV9Bc2NlbmRlcihmYWNlKSAoKEZUX0ZhY2UpZmFjZSktPmFzY2VuZGVyDQorI2RlZmluZSBGWEZUX0dldF9GYWNlX0Rlc2NlbmRlcihmYWNlKSAoKEZUX0ZhY2UpZmFjZSktPmRlc2NlbmRlcg0KKyNkZWZpbmUgRlhGVF9HZXRfR2x5cGhfSG9yaUFkdmFuY2UoZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5nbHlwaC0+bWV0cmljcy5ob3JpQWR2YW5jZQ0KKyNkZWZpbmUgRlhGVF9HZXRfTU1fQXhpcyh2YXIsIGluZGV4KSAmKChGVF9NTV9WYXIqKXZhciktPmF4aXNbaW5kZXhdDQorI2RlZmluZSBGWEZUX0dldF9NTV9BeGlzX01pbihheGlzKSAoKEZUX1Zhcl9BeGlzKilheGlzKS0+bWluaW11bQ0KKyNkZWZpbmUgRlhGVF9HZXRfTU1fQXhpc19NYXgoYXhpcykgKChGVF9WYXJfQXhpcyopYXhpcyktPm1heGltdW0NCisjZGVmaW5lIEZYRlRfR2V0X01NX0F4aXNfRGVmKGF4aXMpICgoRlRfVmFyX0F4aXMqKWF4aXMpLT5kZWYNCisjZGVmaW5lIEZYRlRfR2V0X0ZhY2VfSW50ZXJuYWxfRmxhZyhmYWNlKSAoKEZUX0ZhY2UpZmFjZSktPmludGVybmFsLT50cmFuc2Zvcm1fZmxhZ3MNCisjZGVmaW5lIEZYRlRfU2V0X0ZhY2VfSW50ZXJuYWxfRmxhZyhmYWNlLCBmbGFnKSAoKChGVF9GYWNlKWZhY2UpLT5pbnRlcm5hbC0+dHJhbnNmb3JtX2ZsYWdzID0gZmxhZykNCisjZGVmaW5lIEZYRlRfQWxsb2MobGlicmFyeSwgc2l6ZSkgKChGVF9MaWJyYXJ5KWxpYnJhcnkpLT5tZW1vcnktPmFsbG9jKCgoRlRfTGlicmFyeSlsaWJyYXJ5KS0+bWVtb3J5LCBzaXplKQ0KKyNkZWZpbmUgRlhGVF9GcmVlKGZhY2UsIHApICgoRlRfRmFjZSlmYWNlKS0+bWVtb3J5LT5mcmVlKCgoRlRfRmFjZSlmYWNlKS0+bWVtb3J5LCBwKQ0KKyNkZWZpbmUgRlhGVF9HZXRfR2x5cGhfT3V0bGluZShmYWNlKSAmKChGVF9GYWNlKWZhY2UpLT5nbHlwaC0+b3V0bGluZQ0KKyNkZWZpbmUgRlhGVF9HZXRfT3V0bGluZV9CYm94KG91dGxpbmUsIGNib3gpICBGVF9PdXRsaW5lX0dldF9DQm94KG91dGxpbmUsIGNib3gpDQorI2RlZmluZSBGWEZUX1JlbmRlcl9HbHlwaChmYWNlLCBtb2RlKSBGVF9SZW5kZXJfR2x5cGgoKChGVF9GYWNlKWZhY2UpLT5nbHlwaCwgKGVudW0gRlRfUmVuZGVyX01vZGVfKW1vZGUpDQorI2RlZmluZSBGWEZUX0dldF9NTV9WYXIoZmFjZSwgcCkgRlRfR2V0X01NX1ZhcigoRlRfRmFjZSlmYWNlLCBwKQ0KKyNkZWZpbmUgRlhGVF9TZXRfTU1fRGVzaWduX0Nvb3JkaW5hdGVzKGZhY2UsIG4sIHApIEZUX1NldF9NTV9EZXNpZ25fQ29vcmRpbmF0ZXMoKEZUX0ZhY2UpZmFjZSwgbiwgcCkNCisjZGVmaW5lIEZYRlRfU2V0X1BpeGVsX1NpemVzKGZhY2UsIHcsIGgpIEZUX1NldF9QaXhlbF9TaXplcygoRlRfRmFjZSlmYWNlLCB3LCBoKQ0KKyNkZWZpbmUgRlhGVF9TZXRfVHJhbnNmb3JtKGZhY2UsIG0sIGQpIEZUX1NldF9UcmFuc2Zvcm0oKEZUX0ZhY2UpZmFjZSwgbSwgZCkNCisjZGVmaW5lIEZYRlRfT3V0bGluZV9FbWJvbGRlbihvdXRsaW5lLCBzKSBGVF9PdXRsaW5lX0VtYm9sZGVuKG91dGxpbmUsIHMpDQorI2RlZmluZSBGWEZUX0dldF9HbHlwaF9CaXRtYXAoZmFjZSkgJigoRlRfRmFjZSlmYWNlKS0+Z2x5cGgtPmJpdG1hcA0KKyNkZWZpbmUgRlhGVF9HZXRfQml0bWFwX1dpZHRoKGJpdG1hcCkgKChGVF9CaXRtYXAqKWJpdG1hcCktPndpZHRoDQorI2RlZmluZSBGWEZUX0dldF9CaXRtYXBfUm93cyhiaXRtYXApICgoRlRfQml0bWFwKiliaXRtYXApLT5yb3dzDQorI2RlZmluZSBGWEZUX0dldF9CaXRtYXBfUGl4ZWxNb2RlKGJpdG1hcCkgKChGVF9CaXRtYXAqKWJpdG1hcCktPnBpeGVsX21vZGUNCisjZGVmaW5lIEZYRlRfR2V0X0JpdG1hcF9QaXRjaChiaXRtYXApICgoRlRfQml0bWFwKiliaXRtYXApLT5waXRjaA0KKyNkZWZpbmUgRlhGVF9HZXRfQml0bWFwX0J1ZmZlcihiaXRtYXApICgoRlRfQml0bWFwKiliaXRtYXApLT5idWZmZXINCisjZGVmaW5lIEZYRlRfR2V0X0dseXBoX0JpdG1hcExlZnQoZmFjZSkgKChGVF9GYWNlKWZhY2UpLT5nbHlwaC0+Yml0bWFwX2xlZnQNCisjZGVmaW5lIEZYRlRfR2V0X0dseXBoX0JpdG1hcFRvcChmYWNlKSAoKEZUX0ZhY2UpZmFjZSktPmdseXBoLT5iaXRtYXBfdG9wDQorI2RlZmluZSBGWEZUX091dGxpbmVfRGVjb21wb3NlKG91dGxpbmUsIGZ1bmNzLCBwYXJhbXMpIEZUX091dGxpbmVfRGVjb21wb3NlKG91dGxpbmUsIGZ1bmNzLCBwYXJhbXMpDQorI2RlZmluZSBGWEZUX1NldF9DaGFyX1NpemUoZmFjZSwgY2hhcl93aWR0aCwgY2hhcl9oZWlnaHQsIGhvcnpfcmVzb2x1dGlvbiwgdmVydF9yZXNvbHV0aW9uKSBGVF9TZXRfQ2hhcl9TaXplKGZhY2UsIGNoYXJfd2lkdGgsIGNoYXJfaGVpZ2h0LCBob3J6X3Jlc29sdXRpb24sIHZlcnRfcmVzb2x1dGlvbikNCisjZGVmaW5lIEZYRlRfR2V0X0dseXBoKHNsb3QsIGFnbHlwaCkgRlRfR2V0X0dseXBoKHNsb3QsIGFnbHlwaCkNCisjZGVmaW5lIEZYRlRfR2x5cGhfR2V0X0NCb3goZ2x5cGgsIGJib3hfbW9kZSwgYWNib3gpIEZUX0dseXBoX0dldF9DQm94KGdseXBoLCBiYm94X21vZGUsIGFjYm94KQ0KKyNkZWZpbmUgRlhGVF9Eb25lX0dseXBoKGdseXBoKQlGVF9Eb25lX0dseXBoKGdseXBoKQ0KKyNkZWZpbmUgRlhGVF9MaWJyYXJ5X1NldExjZEZpbHRlcihsaWJyYXJ5LCBmaWx0ZXIpIEZUX0xpYnJhcnlfU2V0TGNkRmlsdGVyKChGVF9MaWJyYXJ5KShsaWJyYXJ5KSwgZmlsdGVyKQ0KK2ludCBGWEZUX3VuaWNvZGVfZnJvbV9hZG9iZV9uYW1lKGNvbnN0IGNoYXIqIG5hbWUpOw0KK3ZvaWQgRlhGVF9hZG9iZV9uYW1lX2Zyb21fdW5pY29kZShjaGFyKiBuYW1lLCB1bnNpZ25lZCBpbnQgdW5pY29kZSk7DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvZnhnZS9meF9nZS5oIGIvY29yZS9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjBiZjM1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaApAQCAtMCwwICsxLDczMyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhfR0VfSF8NCisjZGVmaW5lIF9GWF9HRV9IXw0KKyNpZm5kZWYgX0ZYX0RJQl9IXw0KKyNpbmNsdWRlICJmeF9kaWIuaCINCisjZW5kaWYNCisjaWZuZGVmIF9GWF9GT05UX0hfDQorI2luY2x1ZGUgImZ4X2ZvbnQuaCINCisjZW5kaWYNCitjbGFzcyBDRlhfQ2xpcFJnbjsNCitjbGFzcyBDRlhfUGF0aERhdGE7DQorY2xhc3MgQ0ZYX0dyYXBoU3RhdGVEYXRhOw0KK2NsYXNzIENGWF9Gb250Ow0KK2NsYXNzIENGWF9Gb250TWdyOw0KK2NsYXNzIENGWF9Gb250Q2FjaGU7DQorY2xhc3MgQ0ZYX0ZhY2VDYWNoZTsNCitjbGFzcyBDRlhfUmVuZGVyRGV2aWNlOw0KK2NsYXNzIElGWF9SZW5kZXJEZXZpY2VEcml2ZXI7DQorY2xhc3MgQ0NvZGVjX01vZHVsZU1ncjsNCitjbGFzcyBJRlhHX1BhaW50TW9kdWxlTWdyOw0KK2NsYXNzIENGWF9HRU1vZHVsZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgc3RhdGljIHZvaWQJCQkJQ3JlYXRlKCk7DQorDQorICAgIHN0YXRpYyB2b2lkCQkJCVVzZShDRlhfR0VNb2R1bGUqIHBNZ3IpOw0KKw0KKyAgICBzdGF0aWMgQ0ZYX0dFTW9kdWxlKglHZXQoKTsNCisNCisgICAgc3RhdGljIHZvaWQJCQkJRGVzdHJveSgpOw0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX0ZvbnRDYWNoZSoJCQlHZXRGb250Q2FjaGUoKTsNCisgICAgQ0ZYX0ZvbnRNZ3IqCQkJR2V0Rm9udE1ncigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BGb250TWdyOw0KKyAgICB9DQorICAgIHZvaWQJCQkJCVNldFRleHRHYW1tYShGWF9GTE9BVCBnYW1tYVZhbHVlKTsNCisgICAgRlhfTFBDQllURQkJCQlHZXRUZXh0R2FtbWFUYWJsZSgpOw0KKyAgICB2b2lkCQkJCQlTZXRFeHRGb250TWFwcGVyKElGWF9Gb250TWFwcGVyKiBwRm9udE1hcHBlcik7DQorDQorICAgIHZvaWQJCQkJCVNldENvZGVjTW9kdWxlKENDb2RlY19Nb2R1bGVNZ3IqIHBDb2RlY01vZHVsZSkNCisgICAgew0KKyAgICAgICAgbV9wQ29kZWNNb2R1bGUgPSBwQ29kZWNNb2R1bGU7DQorICAgIH0NCisgICAgQ0NvZGVjX01vZHVsZU1ncioJCUdldENvZGVjTW9kdWxlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcENvZGVjTW9kdWxlOw0KKyAgICB9DQorICAgIEZYRlRfTGlicmFyeQkJCW1fRlRMaWJyYXJ5Ow0KKyAgICB2b2lkKgkJCQkJR2V0UGxhdGZvcm1EYXRhKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFBsYXRmb3JtRGF0YTsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgQ0ZYX0dFTW9kdWxlKCk7DQorDQorICAgIH5DRlhfR0VNb2R1bGUoKTsNCisgICAgdm9pZAkJCQkJSW5pdFBsYXRmb3JtKCk7DQorICAgIHZvaWQJCQkJCURlc3Ryb3lQbGF0Zm9ybSgpOw0KK3ByaXZhdGU6DQorICAgIEZYX0JZVEUJCQkJCW1fR2FtbWFWYWx1ZVsyNTZdOw0KKyAgICBDRlhfRm9udENhY2hlKgkJCW1fcEZvbnRDYWNoZTsNCisgICAgQ0ZYX0ZvbnRNZ3IqCQkJbV9wRm9udE1ncjsNCisgICAgQ0NvZGVjX01vZHVsZU1ncioJCW1fcENvZGVjTW9kdWxlOw0KKyAgICB2b2lkKgkJCQkJbV9wUGxhdGZvcm1EYXRhOw0KK307DQordHlwZWRlZiBzdHJ1Y3Qgew0KKw0KKyAgICBGWF9GTE9BVAkJCW1fUG9pbnRYOw0KKw0KKyAgICBGWF9GTE9BVAkJCW1fUG9pbnRZOw0KKw0KKyAgICBpbnQJCQkJCW1fRmxhZzsNCit9IEZYX1BBVEhQT0lOVDsNCisjZGVmaW5lIEZYUFRfQ0xPU0VGSUdVUkUJCTB4MDENCisjZGVmaW5lIEZYUFRfTElORVRPCQkJCTB4MDINCisjZGVmaW5lIEZYUFRfQkVaSUVSVE8JCQkweDA0DQorI2RlZmluZSBGWFBUX01PVkVUTwkJCQkweDA2DQorI2RlZmluZSBGWFBUX1RZUEUJCQkJMHgwNg0KKyNkZWZpbmUgRlhGSUxMX0FMVEVSTkFURQkJMQ0KKyNkZWZpbmUgRlhGSUxMX1dJTkRJTkcJCQkyDQorY2xhc3MgQ0ZYX0NsaXBSZ24gOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9DbGlwUmduKGludCBkZXZpY2Vfd2lkdGgsIGludCBkZXZpY2VfaGVpZ2h0KTsNCisNCisgICAgQ0ZYX0NsaXBSZ24oY29uc3QgRlhfUkVDVCYgcmVjdCk7DQorDQorICAgIENGWF9DbGlwUmduKGNvbnN0IENGWF9DbGlwUmduJiBzcmMpOw0KKw0KKyAgICB+Q0ZYX0NsaXBSZ24oKTsNCisNCisgICAgdHlwZWRlZiBlbnVtIHsNCisgICAgICAgIFJlY3RJLA0KKyAgICAgICAgTWFza0YNCisgICAgfSBDbGlwVHlwZTsNCisNCisgICAgdm9pZAkJCVJlc2V0KGNvbnN0IEZYX1JFQ1QmIHJlY3QpOw0KKw0KKyAgICBDbGlwVHlwZQkJR2V0VHlwZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1R5cGU7DQorICAgIH0NCisNCisgICAgY29uc3QgRlhfUkVDVCYJR2V0Qm94KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fQm94Ow0KKyAgICB9DQorDQorICAgIENGWF9ESUJpdG1hcFJlZglHZXRNYXNrKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fTWFzazsNCisgICAgfQ0KKw0KKyAgICB2b2lkCQkJSW50ZXJzZWN0UmVjdChjb25zdCBGWF9SRUNUJiByZWN0KTsNCisNCisgICAgdm9pZAkJCUludGVyc2VjdE1hc2tGKGludCBsZWZ0LCBpbnQgdG9wLCBDRlhfRElCaXRtYXBSZWYgTWFzayk7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDbGlwVHlwZQkJbV9UeXBlOw0KKw0KKyAgICBGWF9SRUNUCQkJbV9Cb3g7DQorDQorICAgIENGWF9ESUJpdG1hcFJlZgltX01hc2s7DQorDQorICAgIHZvaWQJCQlJbnRlcnNlY3RNYXNrUmVjdChGWF9SRUNUIHJlY3QsIEZYX1JFQ1QgbWFza19ib3gsIENGWF9ESUJpdG1hcFJlZiBNYXNrKTsNCit9Ow0KK2V4dGVybiBjb25zdCBGWF9CWVRFIGdfR2FtbWFSYW1wWzI1Nl07DQorZXh0ZXJuIGNvbnN0IEZYX0JZVEUgZ19HYW1tYUludmVyc2VbMjU2XTsNCisjZGVmaW5lIEZYX0dBTU1BKHZhbHVlKQkJCSh2YWx1ZSkNCisjZGVmaW5lIEZYX0dBTU1BX0lOVkVSU0UodmFsdWUpCSh2YWx1ZSkNCitpbmxpbmUgRlhfQVJHQiBBcmdiR2FtbWEoRlhfQVJHQiBhcmdiKQ0KK3sNCisgICAgcmV0dXJuIGFyZ2I7DQorfQ0KK2lubGluZSBGWF9BUkdCIEFyZ2JHYW1tYUludmVyc2UoRlhfQVJHQiBhcmdiKQ0KK3sNCisgICAgcmV0dXJuIGFyZ2I7DQorfQ0KK2NsYXNzIENGWF9QYXRoRGF0YSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX1BhdGhEYXRhKCk7DQorDQorICAgIENGWF9QYXRoRGF0YShjb25zdCBDRlhfUGF0aERhdGEmIHNyYyk7DQorDQorICAgIH5DRlhfUGF0aERhdGEoKTsNCisNCisNCisNCisNCisgICAgaW50CQkJCQlHZXRQb2ludENvdW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fUG9pbnRDb3VudDsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQkJCUdldEZsYWcoaW50IGluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wUG9pbnRzW2luZGV4XS5tX0ZsYWc7DQorICAgIH0NCisNCisgICAgRlhfRkxPQVQJCQlHZXRQb2ludFgoaW50IGluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wUG9pbnRzW2luZGV4XS5tX1BvaW50WDsNCisgICAgfQ0KKw0KKyAgICBGWF9GTE9BVAkJCUdldFBvaW50WShpbnQgaW5kZXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BQb2ludHNbaW5kZXhdLm1fUG9pbnRZOw0KKyAgICB9DQorDQorDQorDQorICAgIEZYX1BBVEhQT0lOVCoJCUdldFBvaW50cygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BQb2ludHM7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQlTZXRQb2ludENvdW50KGludCBuUG9pbnRzKTsNCisNCisgICAgRlhfQk9PTAkJCQlBbGxvY1BvaW50Q291bnQoaW50IG5Qb2ludHMpOw0KKw0KKyAgICBGWF9CT09MCQkJCUFkZFBvaW50Q291bnQoaW50IGFkZFBvaW50cyk7DQorDQorICAgIENGWF9GbG9hdFJlY3QJCUdldEJvdW5kaW5nQm94KCkgY29uc3Q7DQorDQorICAgIENGWF9GbG9hdFJlY3QJCUdldEJvdW5kaW5nQm94KEZYX0ZMT0FUIGxpbmVfd2lkdGgsIEZYX0ZMT0FUIG1pdGVyX2xpbWl0KSBjb25zdDsNCisNCisgICAgdm9pZAkJCQlUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCk7DQorDQorICAgIEZYX0JPT0wJCQkJSXNSZWN0KCkgY29uc3Q7DQorDQorICAgIEZYX0JPT0wJCQkJR2V0WmVyb0FyZWFQYXRoKENGWF9QYXRoRGF0YSYgTmV3UGF0aCwgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfQk9PTCZiVGhpbiwgRlhfQk9PTCBiQWRqdXN0KSBjb25zdDsNCisNCisgICAgRlhfQk9PTAkJCQlJc1JlY3QoY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgQ0ZYX0Zsb2F0UmVjdCogcmVjdCkgY29uc3Q7DQorDQorICAgIEZYX0JPT0wJCQkJQXBwZW5kKGNvbnN0IENGWF9QYXRoRGF0YSogcFNyYywgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCk7DQorDQorICAgIEZYX0JPT0wJCQkJQXBwZW5kUmVjdChGWF9GTE9BVCBsZWZ0LCBGWF9GTE9BVCBib3R0b20sIEZYX0ZMT0FUIHJpZ2h0LCBGWF9GTE9BVCB0b3ApOw0KKw0KKyAgICB2b2lkCQkJCVNldFBvaW50KGludCBpbmRleCwgRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSwgaW50IGZsYWcpOw0KKw0KKyAgICB2b2lkCQkJCVRyaW1Qb2ludHMoaW50IG5Qb2ludHMpOw0KKw0KKyAgICBGWF9CT09MCQkJCUNvcHkoY29uc3QgQ0ZYX1BhdGhEYXRhICZzcmMpOw0KK3Byb3RlY3RlZDoNCisgICAgZnJpZW5kIGNsYXNzCQlDUERGX1BhdGg7DQorDQorICAgIGludAkJCQkJbV9Qb2ludENvdW50Ow0KKw0KKyAgICBGWF9QQVRIUE9JTlQqCQltX3BQb2ludHM7DQorDQorICAgIGludAkJCQkJbV9BbGxvY0NvdW50Ow0KK307DQorY2xhc3MgQ0ZYX0dyYXBoU3RhdGVEYXRhIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDRlhfR3JhcGhTdGF0ZURhdGEoKTsNCisNCisgICAgQ0ZYX0dyYXBoU3RhdGVEYXRhKGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSYgc3JjKTsNCisNCisgICAgfkNGWF9HcmFwaFN0YXRlRGF0YSgpOw0KKw0KKyAgICB2b2lkCQkJCUNvcHkoY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhJiBzcmMpOw0KKw0KKyAgICB2b2lkCQkJCVNldERhc2hDb3VudChpbnQgY291bnQpOw0KKw0KKw0KKw0KKyAgICB0eXBlZGVmIGVudW0gew0KKyAgICAgICAgTGluZUNhcEJ1dHQgPSAwLA0KKyAgICAgICAgTGluZUNhcFJvdW5kID0gMSwNCisgICAgICAgIExpbmVDYXBTcXVhcmUgPSAyDQorICAgIH0gTGluZUNhcDsNCisgICAgTGluZUNhcAkJCQltX0xpbmVDYXA7DQorICAgIGludAkJCQkJbV9EYXNoQ291bnQ7DQorICAgIEZYX0ZMT0FUKgkJbV9EYXNoQXJyYXk7DQorICAgIEZYX0ZMT0FUCQkJbV9EYXNoUGhhc2U7DQorDQorICAgIHR5cGVkZWYgZW51bSB7DQorICAgICAgICBMaW5lSm9pbk1pdGVyID0gMCwNCisgICAgICAgIExpbmVKb2luUm91bmQgPSAxLA0KKyAgICAgICAgTGluZUpvaW5CZXZlbCA9IDIsDQorICAgIH0gTGluZUpvaW47DQorICAgIExpbmVKb2luCQkJbV9MaW5lSm9pbjsNCisgICAgRlhfRkxPQVQJCQltX01pdGVyTGltaXQ7DQorICAgIEZYX0ZMT0FUCQkJbV9MaW5lV2lkdGg7DQorDQorfTsNCisjZGVmaW5lIEZYRENfREVWSUNFX0NMQVNTCQkJMQ0KKyNkZWZpbmUgRlhEQ19QSVhFTF9XSURUSAkJCTINCisjZGVmaW5lIEZYRENfUElYRUxfSEVJR0hUCQkJMw0KKyNkZWZpbmUgRlhEQ19CSVRTX1BJWEVMCQkJCTQNCisjZGVmaW5lIEZYRENfSE9SWl9TSVpFCQkJCTUNCisjZGVmaW5lIEZYRENfVkVSVF9TSVpFCQkJCTYNCisjZGVmaW5lIEZYRENfUkVOREVSX0NBUFMJCQk3DQorI2RlZmluZSBGWERDX0RJVEhFUl9CSVRTCQkJOA0KKyNkZWZpbmUgRlhEQ19ESVNQTEFZCQkJCTENCisjZGVmaW5lIEZYRENfUFJJTlRFUgkJCQkyDQorI2RlZmluZSBGWFJDX0dFVF9CSVRTCQkJCTB4MDENCisjZGVmaW5lIEZYUkNfQklUX01BU0sJCQkJMHgwMg0KKyNkZWZpbmUgRlhSQ19BTFBIQV9NQVNLCQkJCTB4MDQNCisjZGVmaW5lIEZYUkNfQUxQSEFfUEFUSAkJCQkweDEwDQorI2RlZmluZSBGWFJDX0FMUEhBX0lNQUdFCQkJMHgyMA0KKyNkZWZpbmUgRlhSQ19BTFBIQV9PVVRQVVQJCQkweDQwDQorI2RlZmluZSBGWFJDX0JMRU5EX01PREUJCQkJMHg4MA0KKyNkZWZpbmUgRlhSQ19TT0ZUX0NMSVAJCQkJMHgxMDANCisjZGVmaW5lIEZYUkNfQ01ZS19PVVRQVVQJCQkweDIwMA0KKyNkZWZpbmUgRlhSQ19CSVRNQVNLX09VVFBVVCAgICAgICAgIDB4NDAwDQorI2RlZmluZSBGWFJDX0JZVEVNQVNLX09VVFBVVCAgICAgICAgMHg4MDANCisjZGVmaW5lIEZYUkVOREVSX0lNQUdFX0xPU1NZCQkweDEwMDANCisjZGVmaW5lIEZYRklMTF9BTFRFUk5BVEUJCTENCisjZGVmaW5lIEZYRklMTF9XSU5ESU5HCQkJMg0KKyNkZWZpbmUgRlhGSUxMX0ZVTExDT1ZFUgkJNA0KKyNkZWZpbmUgRlhGSUxMX1JFQ1RfQUEJCQk4DQorI2RlZmluZSBGWF9GSUxMX1NUUk9LRQkJCTE2DQorI2RlZmluZSBGWF9TVFJPS0VfQURKVVNUCQkzMg0KKyNkZWZpbmUgRlhfU1RST0tFX1RFWFRfTU9ERQkJNjQNCisjZGVmaW5lIEZYX0ZJTExfVEVYVF9NT0RFCQkxMjgNCisjZGVmaW5lIEZYX1pFUk9BUkVBX0ZJTEwJCTI1Ng0KKyNkZWZpbmUgRlhGSUxMX05PUEFUSFNNT09USAkJNTEyDQorI2RlZmluZSBGWFRFWFRfQ0xFQVJUWVBFCQkJMHgwMQ0KKyNkZWZpbmUgRlhURVhUX0JHUl9TVFJJUEUJCQkweDAyDQorI2RlZmluZSBGWFRFWFRfUFJJTlRHUkFQSElDVEVYVAkJMHgwNA0KKyNkZWZpbmUgRlhURVhUX05PX05BVElWRVRFWFQJCTB4MDgNCisjZGVmaW5lIEZYVEVYVF9QUklOVElNQUdFVEVYVAkJMHgxMA0KKyNkZWZpbmUgRlhURVhUX05PU01PT1RICQkJCTB4MjANCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIEZYX0RXT1JECQkJbV9HbHlwaEluZGV4Ow0KKyAgICBGWF9GTE9BVAkJCW1fT3JpZ2luWCwgbV9PcmlnaW5ZOw0KKyAgICBpbnQJCQkJCW1fRm9udENoYXJXaWR0aDsNCisgICAgRlhfQk9PTAkJCQltX2JHbHlwaEFkanVzdDsNCisgICAgRlhfRkxPQVQJCQltX0FkanVzdE1hdHJpeFs0XTsNCisgICAgRlhfRFdPUkQJCQltX0V4dEdJRDsNCisgICAgRlhfQk9PTAkJCQltX2JGb250U3R5bGU7DQorfSBGWFRFWFRfQ0hBUlBPUzsNCitjbGFzcyBDRlhfUmVuZGVyRGV2aWNlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhfUmVuZGVyRGV2aWNlKCk7DQorDQorICAgIHZpcnR1YWwgfkNGWF9SZW5kZXJEZXZpY2UoKTsNCisNCisgICAgdm9pZAkJCVNldERldmljZURyaXZlcihJRlhfUmVuZGVyRGV2aWNlRHJpdmVyKiBwRHJpdmVyKTsNCisNCisgICAgSUZYX1JlbmRlckRldmljZURyaXZlcioJR2V0RGV2aWNlRHJpdmVyKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcERldmljZURyaXZlcjsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJU3RhcnRSZW5kZXJpbmcoKTsNCisNCisgICAgdm9pZAkJCUVuZFJlbmRlcmluZygpOw0KKw0KKw0KKw0KKyAgICB2b2lkCQkJU2F2ZVN0YXRlKCk7DQorDQorICAgIHZvaWQJCQlSZXN0b3JlU3RhdGUoRlhfQk9PTCBiS2VlcFNhdmVkID0gRkFMU0UpOw0KKw0KKw0KKw0KKw0KKyAgICBpbnQJCQkJR2V0V2lkdGgoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9XaWR0aDsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQkJR2V0SGVpZ2h0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fSGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIGludAkJCQlHZXREZXZpY2VDbGFzcygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0RldmljZUNsYXNzOw0KKyAgICB9DQorDQorICAgIGludAkJCQlHZXRCUFAoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9icHA7DQorICAgIH0NCisNCisgICAgaW50CQkJCUdldFJlbmRlckNhcHMoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9SZW5kZXJDYXBzOw0KKyAgICB9DQorDQorICAgIGludAkJCQlHZXREZXZpY2VDYXBzKGludCBpZCkgY29uc3Q7DQorDQorICAgIENGWF9NYXRyaXgJCUdldENUTSgpIGNvbnN0Ow0KKw0KKw0KKyAgICBDRlhfRElCaXRtYXAqCUdldEJpdG1hcCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BCaXRtYXA7DQorICAgIH0NCisgICAgdm9pZAkJCVNldEJpdG1hcChDRlhfRElCaXRtYXAqIHBCaXRtYXApDQorICAgIHsNCisgICAgICAgIG1fcEJpdG1hcCA9IHBCaXRtYXA7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCUNyZWF0ZUNvbXBhdGlibGVCaXRtYXAoQ0ZYX0RJQml0bWFwKiBwRElCLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0Ow0KKw0KKyAgICBjb25zdCBGWF9SRUNUJglHZXRDbGlwQm94KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fQ2xpcEJveDsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJU2V0Q2xpcF9QYXRoRmlsbChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KKw0KKyAgICBGWF9CT09MCQkJU2V0Q2xpcF9SZWN0KGNvbnN0IEZYX1JFQ1QqIHBSZWN0KTsNCisNCisgICAgRlhfQk9PTAkJCVNldENsaXBfUGF0aFN0cm9rZShjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KKw0KKyAgICBGWF9CT09MCQkJRHJhd1BhdGgoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBmaWxsX2NvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgc3Ryb2tlX2NvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbGxfbW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsZW5kX3R5cGUgPSBGWERJQl9CTEVORF9OT1JNQUwNCisgICAgICAgICAgICAgICAgICAgICAgKTsNCisNCisgICAgRlhfQk9PTAkJCVNldFBpeGVsKGludCB4LCBpbnQgeSwgRlhfRFdPUkQgY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZyA9IDAsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMKTsNCisNCisgICAgRlhfQk9PTAkJCUZpbGxSZWN0KGNvbnN0IEZYX1JFQ1QqIHBSZWN0LCBGWF9EV09SRCBjb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwsIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMKTsNCisNCisgICAgRlhfQk9PTAkJCURyYXdDb3NtZXRpY0xpbmUoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLCBGWF9GTE9BVCB4MiwgRlhfRkxPQVQgeTIsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmlsbF9tb2RlID0gMCwgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwgaW50IGJsZW5kX3R5cGUgPSBGWERJQl9CTEVORF9OT1JNQUwpOw0KKw0KKyAgICBGWF9CT09MCQkJR2V0RElCaXRzKENGWF9ESUJpdG1hcCogcEJpdG1hcCwgaW50IGxlZnQsIGludCB0b3AsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMKTsNCisNCisgICAgQ0ZYX0RJQml0bWFwKiAgIEdldEJhY2tEcm9wKCk7DQorDQorICAgIEZYX0JPT0wJCQlTZXRESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgaW50IGxlZnQsIGludCB0b3AsIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMKTsNCisNCisgICAgRlhfQk9PTAkJCVN0cmV0Y2hESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgaW50IGxlZnQsIGludCB0b3AsIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGZsYWdzID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwsIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMKTsNCisNCisgICAgRlhfQk9PTAkJCVNldEJpdE1hc2soY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgaW50IGxlZnQsIGludCB0b3AsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZyA9IDAsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMKTsNCisNCisgICAgRlhfQk9PTAkJCVN0cmV0Y2hCaXRNYXNrKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgY29sb3IsIEZYX0RXT1JEIGZsYWdzID0gMCwgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCk7DQorDQorICAgIEZYX0JPT0wJCQlTdGFydERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBpbnQgYml0bWFwX2FscGhhLCBGWF9EV09SRCBjb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIEZYX0RXT1JEIGZsYWdzLCBGWF9MUFZPSUQmIGhhbmRsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwsIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMKTsNCisNCisgICAgRlhfQk9PTAkJCUNvbnRpbnVlRElCaXRzKEZYX0xQVk9JRCBoYW5kbGUsIElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisgICAgdm9pZAkJCUNhbmNlbERJQml0cyhGWF9MUFZPSUQgaGFuZGxlKTsNCisNCisgICAgRlhfQk9PTAkJCURyYXdOb3JtYWxUZXh0KGludCBuQ2hhcnMsIGNvbnN0IEZYVEVYVF9DSEFSUE9TKiBwQ2hhclBvcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9Gb250KiBwRm9udCwgQ0ZYX0ZvbnRDYWNoZSogcENhY2hlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgZm9udF9zaXplLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVGV4dDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBmaWxsX2NvbG9yLCBGWF9EV09SRCB0ZXh0X2ZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCk7DQorDQorICAgIEZYX0JPT0wJCQlEcmF3VGV4dFBhdGgoaW50IG5DaGFycywgY29uc3QgRlhURVhUX0NIQVJQT1MqIHBDaGFyUG9zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9Gb250KiBwRm9udCwgQ0ZYX0ZvbnRDYWNoZSogcENhY2hlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGZvbnRfc2l6ZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcFRleHQyVXNlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVXNlcjJEZXZpY2UsIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZmlsbF9jb2xvciwgRlhfRFdPUkQgc3Ryb2tlX2NvbG9yLCBDRlhfUGF0aERhdGEqIHBDbGlwcGluZ1BhdGgsIGludCBuRmxhZyA9IDAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwgaW50IGJsZW5kX3R5cGUgPSBGWERJQl9CTEVORF9OT1JNQUwpOw0KKyAgICB2aXJ0dWFsIHZvaWQgQmVnaW4oKSB7fQ0KKyAgICB2aXJ0dWFsIHZvaWQgRW5kKCkge30NCitwcml2YXRlOg0KKw0KKyAgICBDRlhfRElCaXRtYXAqCW1fcEJpdG1hcDsNCisNCisNCisNCisgICAgaW50CQkJCW1fV2lkdGg7DQorDQorICAgIGludAkJCQltX0hlaWdodDsNCisNCisgICAgaW50CQkJCW1fYnBwOw0KKw0KKyAgICBpbnQJCQkJbV9SZW5kZXJDYXBzOw0KKw0KKyAgICBpbnQJCQkJbV9EZXZpY2VDbGFzczsNCisNCisgICAgRlhfUkVDVAkJCW1fQ2xpcEJveDsNCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIElGWF9SZW5kZXJEZXZpY2VEcml2ZXIqCW1fcERldmljZURyaXZlcjsNCitwcml2YXRlOg0KKw0KKyAgICB2b2lkCQkJSW5pdERldmljZUluZm8oKTsNCisNCisgICAgdm9pZAkJCVVwZGF0ZUNsaXBCb3goKTsNCit9Ow0KK2NsYXNzIENGWF9GeGdlRGV2aWNlIDogcHVibGljIENGWF9SZW5kZXJEZXZpY2UNCit7DQorcHVibGljOg0KKw0KKyAgICBDRlhfRnhnZURldmljZSgpOw0KKw0KKyAgICB+Q0ZYX0Z4Z2VEZXZpY2UoKTsNCisNCisgICAgRlhfQk9PTAkJCUF0dGFjaChDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBkaXRoZXJfYml0cyA9IDAsIEZYX0JPT0wgYlJnYkJ5dGVPcmRlciA9IEZBTFNFLCBDRlhfRElCaXRtYXAqIHBPcmlEZXZpY2UgPSBOVUxMLCBGWF9CT09MIGJHcm91cEtub2Nrb3V0ID0gRkFMU0UpOw0KKw0KKyAgICBGWF9CT09MCQkJQ3JlYXRlKGludCB3aWR0aCwgaW50IGhlaWdodCwgRlhESUJfRm9ybWF0IGZvcm1hdCwgaW50IGRpdGhlcl9iaXRzID0gMCwgQ0ZYX0RJQml0bWFwKiBwT3JpRGV2aWNlID0gTlVMTCk7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBGWF9CT09MCQkJbV9iT3duZWRCaXRtYXA7DQorfTsNCitjbGFzcyBDRlhfU2tpYURldmljZSA6IHB1YmxpYyBDRlhfUmVuZGVyRGV2aWNlDQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX1NraWFEZXZpY2UoKTsNCisNCisgICAgfkNGWF9Ta2lhRGV2aWNlKCk7DQorDQorICAgIEZYX0JPT0wJCQlBdHRhY2goQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBpbnQgZGl0aGVyX2JpdHMgPSAwLCBGWF9CT09MIGJSZ2JCeXRlT3JkZXIgPSBGQUxTRSwgQ0ZYX0RJQml0bWFwKiBwT3JpRGV2aWNlID0gTlVMTCwgRlhfQk9PTCBiR3JvdXBLbm9ja291dCA9IEZBTFNFKTsNCisNCisgICAgRlhfQk9PTAkJCUNyZWF0ZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIEZYRElCX0Zvcm1hdCBmb3JtYXQsIGludCBkaXRoZXJfYml0cyA9IDAsIENGWF9ESUJpdG1hcCogcE9yaURldmljZSA9IE5VTEwpOw0KK3Byb3RlY3RlZDoNCisNCisgICAgRlhfQk9PTAkJCW1fYk93bmVkQml0bWFwOw0KK307DQorY2xhc3MgSUZYX1JlbmRlckRldmljZURyaXZlciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgc3RhdGljIElGWF9SZW5kZXJEZXZpY2VEcml2ZXIqCQlDcmVhdGVGeGdlRHJpdmVyKENGWF9ESUJpdG1hcCogcEJpdG1hcCwgRlhfQk9PTCBiUmdiQnl0ZU9yZGVyID0gRkFMU0UsDQorICAgICAgICAgICAgQ0ZYX0RJQml0bWFwKiBwT3JpRGV2aWNlID0gTlVMTCwgRlhfQk9PTCBiR3JvdXBLbm9ja291dCA9IEZBTFNFKTsNCisNCisgICAgdmlydHVhbCB+SUZYX1JlbmRlckRldmljZURyaXZlcigpIHt9DQorICAgIHZpcnR1YWwgdm9pZCBCZWdpbigpIHsgfQ0KKyAgICB2aXJ0dWFsIHZvaWQgRW5kKCkgeyB9DQorDQorICAgIHZpcnR1YWwgaW50CQlHZXREZXZpY2VDYXBzKGludCBjYXBzX2lkKSA9IDA7DQorDQorICAgIHZpcnR1YWwgQ0ZYX01hdHJpeAlHZXRDVE0oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gQ0ZYX01hdHJpeCgpOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTCBJc1BTUHJpbnREcml2ZXIoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBGWF9CT09MCVN0YXJ0UmVuZGVyaW5nKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisNCisgICAgdmlydHVhbCB2b2lkCUVuZFJlbmRlcmluZygpIHt9DQorDQorDQorDQorDQorICAgIHZpcnR1YWwgdm9pZAlTYXZlU3RhdGUoKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZAlSZXN0b3JlU3RhdGUoRlhfQk9PTCBiS2VlcFNhdmVkID0gRkFMU0UpID0gMDsNCisNCisNCisgICAgdmlydHVhbCBGWF9CT09MCVNldENsaXBfUGF0aEZpbGwoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmlsbF9tb2RlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA9IDA7DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAlTZXRDbGlwX1BhdGhTdHJva2UoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBGWF9CT09MCURyYXdQYXRoKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZmlsbF9jb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIHN0cm9rZV9jb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZyA9IDAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJU2V0UGl4ZWwoaW50IHgsIGludCB5LCBGWF9EV09SRCBjb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgRmlsbFJlY3QoY29uc3QgRlhfUkVDVCogcFJlY3QsIEZYX0RXT1JEIGZpbGxfY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZyA9IDAsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMLCBpbnQgYmxlbmRfdHlwZSA9IEZYRElCX0JMRU5EX05PUk1BTCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgRlhfQk9PTAlEcmF3Q29zbWV0aWNMaW5lKEZYX0ZMT0FUIHgxLCBGWF9GTE9BVCB5MSwgRlhfRkxPQVQgeDIsIEZYX0ZMT0FUIHkyLCBGWF9EV09SRCBjb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwgaW50IGJsZW5kX3R5cGUgPSBGWERJQl9CTEVORF9OT1JNQUwpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgR2V0Q2xpcEJveChGWF9SRUNUKiBwUmVjdCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJR2V0RElCaXRzKENGWF9ESUJpdG1hcCogcEJpdG1hcCwgaW50IGxlZnQsIGludCB0b3AsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMLCBGWF9CT09MIGJERWRnZSA9IEZBTFNFKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgdmlydHVhbCBDRlhfRElCaXRtYXAqICAgR2V0QmFja0Ryb3AoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJU2V0RElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIEZYX0RXT1JEIGNvbG9yLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsIGludCBibGVuZF90eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCVN0cmV0Y2hESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgRlhfRFdPUkQgY29sb3IsIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgY29uc3QgRlhfUkVDVCogcENsaXBSZWN0LCBGWF9EV09SRCBmbGFncywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwgaW50IGJsZW5kX3R5cGUgPSBGWERJQl9CTEVORF9OT1JNQUwpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCVN0YXJ0RElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIGludCBiaXRtYXBfYWxwaGEsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgZmxhZ3MsIEZYX0xQVk9JRCYgaGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwgaW50IGJsZW5kX3R5cGUgPSBGWERJQl9CTEVORF9OT1JNQUwpID0gMDsNCisNCisgICAgdmlydHVhbCBGWF9CT09MCUNvbnRpbnVlRElCaXRzKEZYX0xQVk9JRCBoYW5kbGUsIElGWF9QYXVzZSogcFBhdXNlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisNCisgICAgdmlydHVhbCB2b2lkCUNhbmNlbERJQml0cyhGWF9MUFZPSUQgaGFuZGxlKSB7fQ0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgRHJhd0RldmljZVRleHQoaW50IG5DaGFycywgY29uc3QgRlhURVhUX0NIQVJQT1MqIHBDaGFyUG9zLCBDRlhfRm9udCogcEZvbnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfRm9udENhY2hlKiBwQ2FjaGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLCBGWF9GTE9BVCBmb250X3NpemUsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgdm9pZCoJR2V0UGxhdGZvcm1TdXJmYWNlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBpbnQJCUdldERyaXZlclR5cGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAgICB2aXJ0dWFsIHZvaWQgICAgQ2xlYXJEcml2ZXIoKSB7fQ0KK307DQorY2xhc3MgSUZYX1BTT3V0cHV0DQorew0KK3B1YmxpYzoNCisNCisgICAgdmlydHVhbCB2b2lkCU91dHB1dFBTKEZYX0xQQ1NUUiBzdHJpbmcsIGludCBsZW4pID0gMDsNCisgICAgdmlydHVhbCB2b2lkICBSZWxlYXNlKCkgPSAwOw0KK307DQorY2xhc3MgQ1BTRm9udDsNCitjbGFzcyBDRlhfUFNSZW5kZXJlciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0ZYX1BTUmVuZGVyZXIoKTsNCisNCisgICAgfkNGWF9QU1JlbmRlcmVyKCk7DQorDQorICAgIHZvaWQJCQlJbml0KElGWF9QU091dHB1dCogcE91dHB1dCwgaW50IHBzX2xldmVsLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIEZYX0JPT0wgYkNteWtPdXRwdXQpOw0KKyAgICBGWF9CT09MCQkJU3RhcnRSZW5kZXJpbmcoKTsNCisgICAgdm9pZAkJCUVuZFJlbmRlcmluZygpOw0KKw0KKyAgICB2b2lkCQkJU2F2ZVN0YXRlKCk7DQorDQorICAgIHZvaWQJCQlSZXN0b3JlU3RhdGUoRlhfQk9PTCBiS2VlcFNhdmVkID0gRkFMU0UpOw0KKw0KKyAgICB2b2lkCQkJU2V0Q2xpcF9QYXRoRmlsbChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KKw0KKyAgICB2b2lkCQkJU2V0Q2xpcF9QYXRoU3Ryb2tlKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorDQorICAgIEZYX1JFQ1QJCQlHZXRDbGlwQm94KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fQ2xpcEJveDsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJRHJhd1BhdGgoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBmaWxsX2NvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgc3Ryb2tlX2NvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbGxfbW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMDQorICAgICAgICAgICAgICAgICAgICAgICk7DQorDQorICAgIEZYX0JPT0wJCQlTZXRESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgRlhfRFdPUkQgY29sb3IsIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZyA9IDAsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMKTsNCisNCisgICAgRlhfQk9PTAkJCVN0cmV0Y2hESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgRlhfRFdPUkQgY29sb3IsIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpOw0KKw0KKyAgICBGWF9CT09MCQkJRHJhd0RJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBGWF9EV09SRCBjb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwpOw0KKw0KKyAgICBGWF9CT09MCQkJRHJhd1RleHQoaW50IG5DaGFycywgY29uc3QgRlhURVhUX0NIQVJQT1MqIHBDaGFyUG9zLCBDRlhfRm9udCogcEZvbnQsIENGWF9Gb250Q2FjaGUqIHBDYWNoZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLCBGWF9GTE9BVCBmb250X3NpemUsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCk7DQorcHJpdmF0ZToNCisNCisgICAgSUZYX1BTT3V0cHV0KgltX3BPdXRwdXQ7DQorDQorICAgIGludAkJCQltX1BTTGV2ZWw7DQorDQorICAgIENGWF9HcmFwaFN0YXRlRGF0YQltX0N1ckdyYXBoU3RhdGU7DQorDQorICAgIEZYX0JPT0wJCQltX2JHcmFwaFN0YXRlU2V0Ow0KKw0KKyAgICBGWF9CT09MCQkJbV9iQ215a091dHB1dDsNCisNCisgICAgRlhfQk9PTAkJCW1fYkNvbG9yU2V0Ow0KKw0KKyAgICBGWF9EV09SRAkJbV9MYXN0Q29sb3I7DQorDQorICAgIEZYX1JFQ1QJCQltX0NsaXBCb3g7DQorDQorICAgIENGWF9BcnJheVRlbXBsYXRlPENQU0ZvbnQqPgltX1BTRm9udExpc3Q7DQorDQorICAgIENGWF9BcnJheVRlbXBsYXRlPEZYX1JFQ1Q+CW1fQ2xpcEJveFN0YWNrOw0KKyAgICBGWF9CT09MCQkJbV9iSW5pdGVkOw0KKw0KKyAgICB2b2lkCQkJT3V0cHV0UGF0aChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UpOw0KKw0KKyAgICB2b2lkCQkJU2V0R3JhcGhTdGF0ZShjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlKTsNCisNCisgICAgdm9pZAkJCVNldENvbG9yKEZYX0RXT1JEIGNvbG9yLCBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSk7DQorDQorICAgIHZvaWQJCQlGaW5kUFNGb250R2x5cGgoQ0ZYX0ZhY2VDYWNoZSogcEZhY2VDYWNoZSwgQ0ZYX0ZvbnQqIHBGb250LCBjb25zdCBGWFRFWFRfQ0hBUlBPUyYgY2hhcnBvcywgaW50JiBwc19mb250bnVtLCBpbnQgJnBzX2dseXBoaW5kZXgpOw0KKw0KKyAgICB2b2lkCQkJV3JpdGVQU0JpbmFyeShGWF9MUENCWVRFIGRhdGEsIGludCBsZW4pOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Z2UvZnhfZ2VfYXBwbGUuaCBiL2NvcmUvaW5jbHVkZS9meGdlL2Z4X2dlX2FwcGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEzYTFiMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGdlL2Z4X2dlX2FwcGxlLmgKQEAgLTAsMCArMSwyNiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhfR0VfQVBQTEVfSF8NCisjZGVmaW5lIF9GWF9HRV9BUFBMRV9IXw0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCitjbGFzcyBDRlhfUXVhcnR6RGV2aWNlIDogcHVibGljIENGWF9SZW5kZXJEZXZpY2UNCit7DQorcHVibGljOg0KKyAgICBDRlhfUXVhcnR6RGV2aWNlKCk7DQorICAgIH5DRlhfUXVhcnR6RGV2aWNlKCk7DQorICAgIEZYX0JPT0wgQXR0YWNoKENHQ29udGV4dFJlZiBjb250ZXh0LCBGWF9JTlQzMiBuRGV2aWNlQ2xhc3MgPSBGWERDX0RJU1BMQVkpOw0KKyAgICBGWF9CT09MIEF0dGFjaChDRlhfRElCaXRtYXAqIHBCaXRtYXApOw0KKyAgICBGWF9CT09MIENyZWF0ZShGWF9JTlQzMiB3aWR0aCwgRlhfSU5UMzIgaGVpZ2h0LCBGWERJQl9Gb3JtYXQgZm9ybWF0KTsNCisNCisgICAgQ0dDb250ZXh0UmVmIEdldENvbnRleHQoKTsNCisNCitwcm90ZWN0ZWQ6DQorICAgIENHQ29udGV4dFJlZiBtX3BDb250ZXh0Ow0KKyAgICBGWF9CT09MIG1fYk93bmVkQml0bWFwOw0KK307DQorI2VuZGlmDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL2Z4Z2UvZnhfZ2Vfd2luMzIuaCBiL2NvcmUvaW5jbHVkZS9meGdlL2Z4X2dlX3dpbjMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI0MjFkYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9meGdlL2Z4X2dlX3dpbjMyLmgKQEAgLTAsMCArMSwxMDUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX0dFX1dJTjMyX0hfDQorI2RlZmluZSBfRlhfR0VfV0lOMzJfSF8NCisjaWZkZWYgX1dJTjMyDQorI2lmbmRlZiBfV0lORE9XU18NCisjaW5jbHVkZSA8d2luZG93cy5oPg0KKyNlbmRpZg0KKyNkZWZpbmUgV0lORElCX09QRU5fTUVNT1JZICAgIDB4MQ0KKyNkZWZpbmUgV0lORElCX09QRU5fUEFUSE5BTUUgIDB4Mg0KK3R5cGVkZWYgc3RydWN0ICBXSU5ESUJfT3Blbl9BcmdzXyB7DQorDQorICAgIGludCAgICAgICAgIGZsYWdzOw0KKw0KKyAgICBjb25zdCBGWF9CWVRFKiAgbWVtb3J5X2Jhc2U7DQorDQorICAgIHNpemVfdCAgICBtZW1vcnlfc2l6ZTsNCisNCisgICAgRlhfTFBDV1NUUiAgcGF0aF9uYW1lOw0KK30gV0lORElCX09wZW5fQXJnc187DQorY2xhc3MgQ0ZYX1dpbmRvd3NESUIgOiBwdWJsaWMgQ0ZYX0RJQml0bWFwDQorew0KK3B1YmxpYzoNCisNCisgICAgc3RhdGljIENGWF9CeXRlU3RyaW5nCUdldEJpdG1hcEluZm8oY29uc3QgQ0ZYX0RJQml0bWFwKiBwQml0bWFwKTsNCisNCisgICAgc3RhdGljIENGWF9ESUJpdG1hcCogTG9hZEZyb21CdWYoQklUTUFQSU5GTyogcGJtaSwgdm9pZCogcERhdGEpOw0KKw0KKyAgICBzdGF0aWMgSEJJVE1BUAkJR2V0RERCaXRtYXAoY29uc3QgQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBIREMgaERDKTsNCisNCisgICAgc3RhdGljIENGWF9ESUJpdG1hcCogTG9hZEZyb21EREIoSERDIGhEQywgSEJJVE1BUCBoQml0bWFwLCBGWF9EV09SRCogcFBhbGV0dGUgPSBOVUxMLCBGWF9EV09SRCBzaXplID0gMjU2KTsNCisNCisgICAgc3RhdGljIENGWF9ESUJpdG1hcCogTG9hZEZyb21GaWxlKEZYX0xQQ1dTVFIgZmlsZW5hbWUpOw0KKw0KKyAgICBzdGF0aWMgQ0ZYX0RJQml0bWFwKiBMb2FkRnJvbUZpbGUoRlhfTFBDU1RSIGZpbGVuYW1lKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gTG9hZEZyb21GaWxlKENGWF9XaWRlU3RyaW5nOjpGcm9tTG9jYWwoZmlsZW5hbWUpKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgQ0ZYX0RJQml0bWFwKiBMb2FkRElCaXRtYXAoV0lORElCX09wZW5fQXJnc18gYXJncyk7DQorDQorICAgIENGWF9XaW5kb3dzRElCKEhEQyBoREMsIGludCB3aWR0aCwgaW50IGhlaWdodCk7DQorDQorICAgIH5DRlhfV2luZG93c0RJQigpOw0KKw0KKyAgICBIREMJCQkJCUdldERDKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1faE1lbURDOw0KKyAgICB9DQorDQorICAgIEhCSVRNQVAJCQkJR2V0V2luZG93c0JpdG1hcCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2hCaXRtYXA7DQorICAgIH0NCisNCisgICAgdm9pZAkJCQlMb2FkRnJvbURldmljZShIREMgaERDLCBpbnQgbGVmdCwgaW50IHRvcCk7DQorDQorICAgIHZvaWQJCQkJU2V0VG9EZXZpY2UoSERDIGhEQywgaW50IGxlZnQsIGludCB0b3ApOw0KK3Byb3RlY3RlZDoNCisNCisgICAgSERDCQkJCQltX2hNZW1EQzsNCisNCisgICAgSEJJVE1BUAkJCQltX2hCaXRtYXA7DQorDQorICAgIEhCSVRNQVAJCQkJbV9oT2xkQml0bWFwOw0KK307DQorY2xhc3MgQ0ZYX1dpbmRvd3NEZXZpY2UgOiBwdWJsaWMgQ0ZYX1JlbmRlckRldmljZQ0KK3sNCitwdWJsaWM6DQorICAgIHN0YXRpYyBJRlhfUmVuZGVyRGV2aWNlRHJpdmVyKglDcmVhdGVEcml2ZXIoSERDIGhEQywgRlhfQk9PTCBiQ215a091dHB1dCA9IEZBTFNFKTsNCisNCisgICAgQ0ZYX1dpbmRvd3NEZXZpY2UoSERDIGhEQywgRlhfQk9PTCBiQ215a091dHB1dCA9IEZBTFNFLCBGWF9CT09MIGJGb3JjZVBTT3V0cHV0ID0gRkFMU0UsIGludCBwc0xldmVsID0gMik7DQorDQorICAgIEhEQwkJR2V0REMoKSBjb25zdDsNCisNCisgICAgRlhfQk9PTCBtX2JGb3JjZVBTT3V0cHV0Ow0KKw0KKyAgICBzdGF0aWMgaW50IG1fcHNMZXZlbDsNCit9Ow0KK2NsYXNzIENGWF9XaW5CaXRtYXBEZXZpY2UgOiBwdWJsaWMgQ0ZYX1JlbmRlckRldmljZQ0KK3sNCitwdWJsaWM6DQorDQorICAgIENGWF9XaW5CaXRtYXBEZXZpY2UoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBGWERJQl9Gb3JtYXQgZm9ybWF0KTsNCisNCisgICAgfkNGWF9XaW5CaXRtYXBEZXZpY2UoKTsNCisNCisgICAgSERDCQlHZXREQygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2hEQzsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgSEJJVE1BUAltX2hCaXRtYXA7DQorDQorICAgIEhCSVRNQVAgbV9oT2xkQml0bWFwOw0KKw0KKyAgICBIREMJCW1faERDOw0KK307DQorI2VuZGlmDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3JlZmxvdy9mcGRmX2xheW91dC5oIGIvY29yZS9pbmNsdWRlL3JlZmxvdy9mcGRmX2xheW91dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDFiYTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvcmVmbG93L2ZwZGZfbGF5b3V0LmgKQEAgLTAsMCArMSwyODAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZQREZBUElfTEFZT1VUX0hfCisjZGVmaW5lIF9GUERGQVBJX0xBWU9VVF9IXworY2xhc3MgSVBERl9MYXlvdXRFbGVtZW50OworY2xhc3MgSVBERl9MYXlvdXRQcm9jZXNzb3I7CitjbGFzcyBJUERGX0xheW91dFByb3ZpZGVyOwordHlwZWRlZiBlbnVtIHsKKyAgICBMYXlvdXRVbmtub3duLAorICAgIExheW91dEFyaWZhY3QsCisgICAgTGF5b3V0RG9jdW1lbnQsCisgICAgTGF5b3V0UGFydCwKKyAgICBMYXlvdXRBcnQsCisgICAgTGF5b3V0U2VjdCwKKyAgICBMYXlvdXREaXYsCisgICAgTGF5b3V0QmxvY2tRdW90ZSwKKyAgICBMYXlvdXRDYXB0aW9uLAorICAgIExheW91dFRPQywKKyAgICBMYXlvdXRUT0NJLAorICAgIExheW91dEluZGV4LAorICAgIExheW91dE5vblN0cnVjdCwKKyAgICBMYXlvdXRQcml2YXRlLAorICAgIExheW91dFBhcmFncmFwaCwKKyAgICBMYXlvdXRIZWFkaW5nLAorICAgIExheW91dEhlYWRpbmcxLAorICAgIExheW91dEhlYWRpbmcyLAorICAgIExheW91dEhlYWRpbmczLAorICAgIExheW91dEhlYWRpbmc0LAorICAgIExheW91dEhlYWRpbmc1LAorICAgIExheW91dEhlYWRpbmc2LAorICAgIExheW91dExpc3QsCisgICAgTGF5b3V0TGlzdEl0ZW0sCisgICAgTGF5b3V0TGlzdExhYmVsLAorICAgIExheW91dExpc3RCb2R5LAorICAgIExheW91dFRhYmxlLAorICAgIExheW91dFRhYmxlUm93LAorICAgIExheW91dFRhYmxlSGVhZGVyQ2VsbCwKKyAgICBMYXlvdXRUYWJsZURhdGFDZWxsLAorICAgIExheW91dFRhYmxlSGVhZGVyR3JvdXAsCisgICAgTGF5b3V0VGFibGVCb2R5R3JvdXAsCisgICAgTGF5b3V0VGFibGVGb290R3JvdXAsCisgICAgTGF5b3V0U3BhbiwKKyAgICBMYXlvdXRRdW90ZSwKKyAgICBMYXlvdXROb3RlLAorICAgIExheW91dFJlZmVyZW5jZSwKKyAgICBMYXlvdXRCaWJFbnRyeSwKKyAgICBMYXlvdXRDb2RlLAorICAgIExheW91dExpbmssCisgICAgTGF5b3V0QW5ub3QsCisgICAgTGF5b3V0UnVieSwKKyAgICBMYXlvdXRSdWJ5QmFzZSwKKyAgICBMYXlvdXRSdWJ5QW5ub3QsCisgICAgTGF5b3V0UnVieVB1bmMsCisgICAgTGF5b3V0V2FyaWNodSwKKyAgICBMYXlvdXRXYXJpY2h1VGV4dCwKKyAgICBMYXlvdXRXYXJpY2h1UHVuYywKKyAgICBMYXlvdXRGaWd1cmUsCisgICAgTGF5b3V0Rm9ybXVsYSwKKyAgICBMYXlvdXRGb3JtLAorfSBMYXlvdXRUeXBlOwordHlwZWRlZiBlbnVtIHsKKyAgICBMYXlvdXRBcnRpZmFjdFR5cGUsCisgICAgTGF5b3V0QXJ0aWZhY3RBdHRhY2hlZCwKKyAgICBMYXlvdXRBcnRpZmFjdFN1YlR5cGUsCisgICAgTGF5b3V0UGxhY2VtZW50LAorICAgIExheW91dFdyaXRpbmdNb2RlLAorICAgIExheW91dEJhY2tncm91bmRDb2xvciwKKyAgICBMYXlvdXRCb3JkZXJDb2xvciwKKyAgICBMYXlvdXRCb3JkZXJTdHlsZSwKKyAgICBMYXlvdXRCb3JkZXJUaGlja25lc3MsCisgICAgTGF5b3V0UGFkZGluZywKKyAgICBMYXlvdXRDb2xvciwKKyAgICBMYXlvdXRTcGFjZUJlZm9yZSwKKyAgICBMYXlvdXRTcGFjZUFmdGVyLAorICAgIExheW91dFN0YXJ0SW5kZW50LAorICAgIExheW91dEVuZEluZGVudCwKKyAgICBMYXlvdXRUZXh0SW5kZW50LAorICAgIExheW91dFRleHRBbGlnbiwKKyAgICBMYXlvdXRCQm94LAorICAgIExheW91dFdpZHRoLAorICAgIExheW91dEhlaWdodCwKKyAgICBMYXlvdXRCbG9ja0FsaWduLAorICAgIExheW91dElubGluZUFsaWduLAorICAgIExheW91dFRCb3JkZXJTdHlsZSwKKyAgICBMYXlvdXRUUGFkZGluZywKKyAgICBMYXlvdXRCYXNlbGluZVNoaWZ0LAorICAgIExheW91dExpbmVIZWlnaHQsCisgICAgTGF5b3V0VGV4dERlY29yYXRpb25Db2xvciwKKyAgICBMYXlvdXRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcywKKyAgICBMYXlvdXRUZXh0RGVjb3JhdGlvblR5cGUsCisgICAgTGF5b3V0UnVieUFsaWduLAorICAgIExheW91dFJ1YnlQb3NpdGlvbiwKKyAgICBMYXlvdXRHbHlwaE9yaWVudGF0aW9uVmVydGljYWwsCisgICAgTGF5b3V0Q29sdW1uQ291bnQsCisgICAgTGF5b3V0Q29sdW1uR2FwLAorICAgIExheW91dENvbHVtbldpZHRocywKKyAgICBMYXlvdXRMaXN0TnVtYmVyaW5nLAorICAgIExheW91dEZpZWxkUm9sZSwKKyAgICBMYXlvdXRGaWVsZENoZWNrZWQsCisgICAgTGF5b3V0RmllbGREZXNjLAorICAgIExheW91dFJvd1NwYW4sCisgICAgTGF5b3V0Q29sU3BhbiwKKyAgICBMYXlvdXRUYWJsZUhlYWRlcnMsCisgICAgTGF5b3V0VGFibGVIZWFkZXJTY29wZSwKKyAgICBMYXlvdXRUYWJsZVN1bW1hcnksCit9IExheW91dEF0dHI7Cit0eXBlZGVmIGVudW0geworICAgIExheW91dEludmFsaWQgPSAwLAorICAgIExheW91dEJsb2NrLAorICAgIExheW91dElubGluZSwKKyAgICBMYXlvdXRCZWZvcmUsCisgICAgTGF5b3V0QWZ0ZXIsCisgICAgTGF5b3V0U3RhcnQsCisgICAgTGF5b3V0RW5kLAorICAgIExheW91dExyVGIsCisgICAgTGF5b3V0UmxUYiwKKyAgICBMYXlvdXRUYlJsLAorICAgIExheW91dE5vbmUsCisgICAgTGF5b3V0SGlkZGVuLAorICAgIExheW91dERvdHRlZCwKKyAgICBMYXlvdXREYXNoZWQsCisgICAgTGF5b3V0U29saWQsCisgICAgTGF5b3V0RG91YmxlLAorICAgIExheW91dEdyb292ZSwKKyAgICBMYXlvdXRSaWRnZSwKKyAgICBMYXlvdXRJbnNldCwKKyAgICBMYXlvdXRPdXRzZXQsCisgICAgTGF5b3V0Tm9ybWFsLAorICAgIExheW91dEF1dG8sCisgICAgTGF5b3V0Q2VudGVyLAorICAgIExheW91dEp1c3RpZnksCisgICAgTGF5b3V0TWlkZGxlLAorICAgIExheW91dFVuZGVybGluZSwKKyAgICBMYXlvdXRPdmVybGluZSwKKyAgICBMYXlvdXRMaW5lVGhyb3VnaCwKKyAgICBMYXlvdXREaXN0cmlidXRlLAorICAgIExheW91dE1pbnVzOTBEZWdyZWUsCisgICAgTGF5b3V0WmVyb0RlZ3JlZSwKKyAgICBMYXlvdXQ5MERlZ3JlZSwKKyAgICBMYXlvdXQxODBEZWdyZWUsCisgICAgTGF5b3V0MjcwRGVncmVlLAorICAgIExheW91dERpc2MsCisgICAgTGF5b3V0Q2lyY2xlLAorICAgIExheW91dFNxdWFyZSwKKyAgICBMYXlvdXREZWNpbWFsLAorICAgIExheW91dFVwcGVyUm9tYW4sCisgICAgTGF5b3V0TG93ZXJSb21hbiwKKyAgICBMYXlvdXRVcHBlckFscGhhLAorICAgIExheW91dExvd2VyQWxwaGEsCisgICAgTGF5b3V0UkIsCisgICAgTGF5b3V0Q0IsCisgICAgTGF5b3V0UEIsCisgICAgTGF5b3V0VFYsCisgICAgTGF5b3V0T24sCisgICAgTGF5b3V0T2ZmLAorICAgIExheW91dE5ldXRyYWwsCisgICAgTGF5b3V0Um93LAorICAgIExheW91dENvbHVtbiwKKyAgICBMYXlvdXRCb3RoLAorICAgIExheW91dExlZnQsCisgICAgTGF5b3V0VG9wLAorICAgIExheW91dEJvdHRvbSwKKyAgICBMYXlvdXRSaWdodCwKKyAgICBMYXlvdXRQYWdpbmF0aW9uLAorICAgIExheW91dExheW91dCwKKyAgICBMYXlvdXRQYWdlLAorICAgIExheW91dEJhY2tncm91bmQsCisgICAgTGF5b3V0SGVhZGVyLAorICAgIExheW91dEZvb3RlciwKKyAgICBMYXlvdXRXYXRlcm1hcmssCit9IExheW91dEVudW07CitjbGFzcyBJUERGX0xheW91dEVsZW1lbnQKK3sKK3B1YmxpYzoKKworICAgIHZpcnR1YWwgfklQREZfTGF5b3V0RWxlbWVudCgpIHt9OworCisKKyAgICB2aXJ0dWFsIExheW91dFR5cGUJR2V0VHlwZSgpID0gMDsKKworICAgIHZpcnR1YWwgaW50CQlDb3VudEF0dHJWYWx1ZXMoTGF5b3V0QXR0ciBhdHRyX3R5cGUpID0gMDsKKworCisgICAgdmlydHVhbCBMYXlvdXRFbnVtCUdldEVudW1BdHRyKExheW91dEF0dHIgYXR0cl90eXBlLCBpbnQgaW5kZXggPSAwKSA9IDA7CisKKyAgICB2aXJ0dWFsIEZYX0ZMT0FUCUdldE51bWJlckF0dHIoTGF5b3V0QXR0ciBhdHRyX3R5cGUsIGludCBpbmRleCA9IDApID0gMDsKKworICAgIHZpcnR1YWwgRlhfQ09MT1JSRUYJR2V0Q29sb3JBdHRyKExheW91dEF0dHIgYXR0cl90eXBlLCBpbnQgaW5kZXggPSAwKSA9IDA7CisKKworICAgIHZpcnR1YWwgaW50CQlDb3VudENoaWxkcmVuKCkgPSAwOworCisKKyAgICB2aXJ0dWFsIElQREZfTGF5b3V0RWxlbWVudCogR2V0Q2hpbGQoaW50IGluZGV4KSA9IDA7CisKKworICAgIHZpcnR1YWwgSVBERl9MYXlvdXRFbGVtZW50KiBHZXRQYXJlbnQoKSA9IDA7CisKKworICAgIHZpcnR1YWwgaW50CQlDb3VudE9iamVjdHMoKSA9IDA7CisKKyAgICB2aXJ0dWFsIENQREZfUGFnZU9iamVjdCoJR2V0T2JqZWN0KGludCBpbmRleCkgPSAwOworfTsKK3R5cGVkZWYgZW51bSB7CisgICAgTGF5b3V0UmVhZHksCisgICAgTGF5b3V0RmluaXNoZWQsCisgICAgTGF5b3V0VG9CZUNvbnRpbnVlZCwKKyAgICBMYXlvdXRFcnJvcgorfSBMYXlvdXRTdGF0dXM7CisjZGVmaW5lIFJGX1BBUlNFUl9JTUFHRQkJMHgxCisjZGVmaW5lIFJGX1BBUlNFUl9ERUJVR0lORk8JMHgyCisjZGVmaW5lIFJGX1BBUlNFUl9QQUdFTU9ERQkweDQKKyNkZWZpbmUgUkZfUEFSU0VSX1JFQURFUk9SREVSCTB4OAorY2xhc3MgSVBERl9MYXlvdXRQcm9jZXNzb3IKK3sKK3B1YmxpYzoKKworICAgIHZpcnR1YWwgfklQREZfTGF5b3V0UHJvY2Vzc29yKCkge307CisKKyAgICBzdGF0aWMgSVBERl9MYXlvdXRQcm9jZXNzb3IqIENyZWF0ZV9MYXlvdXRQcm9jZXNzb3JfUmVmbG93KEZYX0ZMT0FUIFRvcEluZGVudCwgRlhfRkxPQVQgZldpZHRoLCBGWF9GTE9BVCBmSGVpZ2h0LCB2b2lkKiBwUmVmbG93ZWRQYWdlLCBpbnQgZmxhZ3MsIEZYX0ZMT0FUIGxpbmVTcGFjZSA9IDApOworCisgICAgc3RhdGljIElQREZfTGF5b3V0UHJvY2Vzc29yKiBDcmVhdGVfTGF5b3V0UHJvY2Vzc29yXzJIVE1MKEZYX0xQQ1NUUiBmaWxlTmFtZSk7CisKKyAgICB2aXJ0dWFsIExheW91dFN0YXR1cwlTdGFydFByb2Nlc3MoSVBERl9MYXlvdXRFbGVtZW50KiBwRWxlbWVudCwgSUZYX1BhdXNlKiBwUGF1c2UsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBQREZNYXRyaXggPSBOVUxMKSA9IDA7CisKKyAgICB2aXJ0dWFsIExheW91dFN0YXR1cwlDb250aW51ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGludAkJCQlHZXRQb3NpdGlvbigpID0gMDsKK307CisjZGVmaW5lIExQX0xhbmdfVW5rbm93CSAJCTB4MAorI2RlZmluZSBMUF9MYW5nX0VuZ2xpc2gJIAkJMHgxCisjZGVmaW5lIExQX0xhbmdfRnJlbmNoCQkJMHgyCisjZGVmaW5lIExQX0xhbmdfSXRhbGlhbgkJCTB4NAorI2RlZmluZSBMUF9MYW5nX0dlcm1hbgkJCTB4OAorI2RlZmluZSBMUF9MYW5nX1NwYW5pc2gJCQkweDEwCisjZGVmaW5lIExQX0xhbmdfUG9saXNoCQkJMHgyMAorI2RlZmluZSBMUF9MYW5nX1J1c3NpYW4JCQkweDQwCisjZGVmaW5lIExQX0xhbmdfQ2hpbmVzZVBSQwkJMHg4MAorI2RlZmluZSBMUF9MYW5nX0NoaW5lc2VUYWl3YW4JMHgxMDAKKyNkZWZpbmUgTFBfTGFuZ19KYXBhbmVzZQkJMHgyMDAKKyNkZWZpbmUgTFBfTGFuZ19Lb3JlYW4JCQkweDQwMAorI2RlZmluZSBMUF9MYW5nX1BvcnR1Z3Vlc2UJCTB4ODAwCisjZGVmaW5lIExQX0xhbmdfVHVya2lzaAkJCTB4MTAwMAorI2RlZmluZSBMUF9MYW5nX0R1dGNoCQkJMHgyMDAwCit0eXBlZGVmIHN0cnVjdCBfTGF5b3V0UHJvdmlkZXJTdHlsZSB7CisgICAgX0xheW91dFByb3ZpZGVyU3R5bGUoKQorICAgIHsKKyAgICAgICAgbV9MYW5ndWFnZSA9IExQX0xhbmdfVW5rbm93OworICAgICAgICBtX2JJZ25vcmVJbnZpc2libGVUZXh0ID0gVFJVRTsKKyAgICB9CisgICAgRlhfSU5UMzIJbV9MYW5ndWFnZTsKKyAgICBGWF9CT09MCQltX2JJZ25vcmVJbnZpc2libGVUZXh0OworfSBMQVlPVVRQUk9WSURFUl9TVFlMRTsKK2NsYXNzIElQREZfTGF5b3V0UHJvdmlkZXIKK3sKK3B1YmxpYzoKKworICAgIHZpcnR1YWwgfklQREZfTGF5b3V0UHJvdmlkZXIoKSB7fTsKKworICAgIHN0YXRpYyBJUERGX0xheW91dFByb3ZpZGVyKiBDcmVhdGVfTGF5b3V0UHJvdmlkZXJfVGFnZ2VkUERGKENQREZfUGFnZU9iamVjdHMqIHBQYWdlT2Jqcyk7CisKKyAgICBzdGF0aWMgSVBERl9MYXlvdXRQcm92aWRlciogQ3JlYXRlX0xheW91dFByb3ZpZGVyX0F1dG9SZWZsb3coQ1BERl9QYWdlT2JqZWN0cyogcFBhZ2VPYmpzLCBGWF9CT09MIGJSZWFkT3JkZXIpOworCisgICAgdmlydHVhbCB2b2lkCQkJU2V0TGF5b3V0UHJvdmlkZXJTdHlsZShMQVlPVVRQUk9WSURFUl9TVFlMRSBTdHlsZSkgPSAwOworCisKKworCisgICAgdmlydHVhbCBMYXlvdXRTdGF0dXMJU3RhcnRMb2FkKElGWF9QYXVzZSogcFBhdXNlID0gTlVMTCkgPSAwOworCisgICAgdmlydHVhbCBMYXlvdXRTdGF0dXMJQ29udGludWUoKSA9IDA7CisgICAgdmlydHVhbCBpbnQJCQkJR2V0UG9zaXRpb24oKSA9IDA7CisKKworICAgIHZpcnR1YWwgSVBERl9MYXlvdXRFbGVtZW50KiBHZXRSb290KCkgPSAwOworfTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3JlZmxvdy9yZWZsb3dlbmdpbmUuaCBiL2NvcmUvaW5jbHVkZS9yZWZsb3cvcmVmbG93ZW5naW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZhNTI2NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS9yZWZsb3cvcmVmbG93ZW5naW5lLmgKQEAgLTAsMCArMSw3NiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfUkVGTE9XX0VOR0lORV9ICisjZGVmaW5lIF9SRUZMT1dfRU5HSU5FX0gKKyNpbmNsdWRlICIuLi9mcGRmYXBpL2ZwZGZfcmVuZGVyLmgiCisjaW5jbHVkZSAiLi4vZnBkZnRleHQvZnBkZl90ZXh0LmgiCisjaW5jbHVkZSAiZnBkZl9sYXlvdXQuaCIKKyNpbmNsdWRlICIuLi9mcGRmYXBpL2ZwZGZfcGFnZW9iai5oIgorI2luY2x1ZGUgIi4uL2ZwZGZkb2MvZnBkZl90YWdnZWQuaCIKK2NsYXNzIElQREZfUmVmbG93ZWRQYWdlCit7CitwdWJsaWM6CisgICAgc3RhdGljIElQREZfUmVmbG93ZWRQYWdlKiBDcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfklQREZfUmVmbG93ZWRQYWdlKCkge30KKyAgICB2aXJ0dWFsIENGWF9Qcml2YXRlRGF0YSoJR2V0UHJpdmF0ZURhdGFDdHJsKCkgPSAwOworCisKKyAgICB2aXJ0dWFsIHZvaWQJCUdldERpc3BsYXlNYXRyaXgoQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4LCBGWF9JTlQzMiB4UG9zLCBGWF9JTlQzMiB5UG9zLCBGWF9JTlQzMiB4U2l6ZSwgRlhfSU5UMzIgeVNpemUsIEZYX0lOVDMyIGlSb3RhdGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBQYWdlTWF0cml4KSA9IDA7CisgICAgdmlydHVhbCBGWF9GTE9BVAlHZXRQYWdlSGVpZ2h0KCkgPSAwOworICAgIHZpcnR1YWwgRlhfRkxPQVQJR2V0UGFnZVdpZHRoKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZAkJRm9jdXNHZXREYXRhKGNvbnN0IENGWF9BZmZpbmVNYXRyaXggbWF0cml4LCBGWF9JTlQzMiB4LCBGWF9JTlQzMiB5LCBDRlhfQnl0ZVN0cmluZyYgc3RyKSA9IDA7CisgICAgdmlydHVhbCBGWF9CT09MCQlGb2N1c0dldFBvc2l0aW9uKGNvbnN0IENGWF9BZmZpbmVNYXRyaXggbWF0cml4LCBDRlhfQnl0ZVN0cmluZyBzdHIsIEZYX0lOVDMyJiB4LCBGWF9JTlQzMiYgeSkgPSAwOworfTsKK3R5cGVkZWYgc3RydWN0IF9SRl9QYXJzZVN0eWxlIHsKKyAgICBfUkZfUGFyc2VTdHlsZSgpCisgICAgeworICAgICAgICBtX0xpbmVTcGFjZSA9IDA7CisgICAgfTsKKyAgICBGWF9GTE9BVCBtX0xpbmVTcGFjZTsKK30gUkZfUGFyc2VTdHlsZTsKK2NsYXNzIElQREZfUHJvZ3Jlc3NpdmVSZWZsb3dQYWdlUGFyc2VyCit7CitwdWJsaWM6CisgICAgc3RhdGljIElQREZfUHJvZ3Jlc3NpdmVSZWZsb3dQYWdlUGFyc2VyKiBDcmVhdGUoKTsKKyAgICBzdGF0aWMgRlhfQk9PTAlJc1RhZ2dlZFBhZ2UoQ1BERl9QYWdlT2JqZWN0cypwUGFnZSk7CisKKyAgICB2aXJ0dWFsIH5JUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlcigpIHt9CisgICAgdHlwZWRlZiBlbnVtIHsgUmVhZHksIFRvQmVDb250aW51ZWQsIERvbmUsIEZhaWxlZCB9IFBhcnNlU3RhdHVzOworCisgICAgdmlydHVhbCBQYXJzZVN0YXR1cwkJR2V0U3RhdHVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZAkJCVNldFBhcnNlclN0eWxlKFJGX1BhcnNlU3R5bGUgc3R5bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQJCQlTdGFydChJUERGX1JlZmxvd2VkUGFnZSogcFJlZmxvd1BhZ2UsIENQREZfUGFnZSogcFBhZ2UsIEZYX0ZMT0FUIFRvcEluZGVudCwgRlhfRkxPQVQgZldpZHRoLCBGWF9GTE9BVCBmSGVpZ2h0LCBJRlhfUGF1c2UqIHBQYXVzZSwgaW50IGZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkCQkJQ29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpID0gMDsKKworICAgIHZpcnR1YWwgaW50CQkJCUdldFBvc2l0aW9uKCkgPSAwOworCisKKyAgICB2aXJ0dWFsIHZvaWQJCQlDbGVhcigpID0gMDsKK307CitjbGFzcyBJUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVJlbmRlcgoreworcHVibGljOgorICAgIHN0YXRpYyBJUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVJlbmRlciogQ3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5JUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVJlbmRlcigpIHt9CisgICAgdHlwZWRlZiBlbnVtIHsgUmVhZHksIFRvQmVDb250aW51ZWQsIFdhaXRpbmcsIERvbmUsIEZhaWxlZCB9IFJlbmRlclN0YXR1czsKKworICAgIHZpcnR1YWwgUmVuZGVyU3RhdHVzCUdldFN0YXR1cygpID0gMDsKKworCisgICAgdmlydHVhbCB2b2lkCQlTdGFydChJUERGX1JlZmxvd2VkUGFnZSogcFJlZmxvd1BhZ2UsIENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIElGWF9QYXVzZSogcFBhdXNlLCBpbnQgRGl0aGVyQml0cyApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQJCUNvbnRpbnVlKElGWF9QYXVzZSogcFBhdXNlKSA9IDA7CisgICAgdmlydHVhbCBpbnQJCQlHZXRQb3NpdGlvbigpID0gMDsKKworCisgICAgdmlydHVhbCB2b2lkCQkJCUNsZWFyKCkgPSAwOworfTsKK0lQREZfUmVmbG93ZWRQYWdlKiBDcmVhdGVfUmVmbG93UGFnZSgpOworSVBERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VQYXJzZXIqIENyZWF0ZV9SZWZsb3dQYWdlUGFyc2VyKCk7CitJUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVJlbmRlciogQ3JlYXRlX1JlZmxvd1BhZ2VSZW5kZXIoKTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mb3hpdG5hbWVzLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZveGl0bmFtZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzQ5ZjliCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mb3hpdG5hbWVzLmgKQEAgLTAsMCArMSwyODMgQEAKKyNpZm5kZWYgX0ZYX0ZSRUVUWVBFX0RPTlRfUkVOQU1FXw0KKy8vIFRvIGF2b2lkIGFueSBwb3NzaWJsZSBsaW5raW5nIGNvbmZsaWN0aW9uLCB3ZSByZW5hbWUgYWxsIEZyZWVUeXBlIGV4cG9ydGVkIG5hbWVzDQorDQorI2RlZmluZSBGVF9Jbml0X0ZyZWVUeXBlIEZQREZBUElfRlRfSW5pdF9GcmVlVHlwZQ0KKyNkZWZpbmUgRlRfRG9uZV9GcmVlVHlwZSBGUERGQVBJX0ZUX0RvbmVfRnJlZVR5cGUNCisjZGVmaW5lIEZUX05ld19GYWNlCQlGUERGQVBJX0ZUX05ld19GYWNlDQorI2RlZmluZSBGVF9TZWxlY3RfQ2hhcm1hcCBGUERGQVBJX0ZUX1NlbGVjdF9DaGFybWFwIA0KKyNkZWZpbmUgRlRfRG9uZV9GYWNlIEZQREZBUElfRlRfRG9uZV9GYWNlIA0KKyNkZWZpbmUgRlRfR2V0X0NoYXJtYXBfSW5kZXggRlBERkFQSV9GVF9HZXRfQ2hhcm1hcF9JbmRleCANCisjZGVmaW5lIEZUX05ld19NZW1vcnlfRmFjZSBGUERGQVBJX0ZUX05ld19NZW1vcnlfRmFjZSANCisjZGVmaW5lIEZUX011bERpdiBGUERGQVBJX0ZUX011bERpdiANCisjZGVmaW5lIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0gRlBERkFQSV9GVF9WZWN0b3JfVHJhbnNmb3JtIA0KKyNkZWZpbmUgRlRfQ29zIEZQREZBUElfRlRfQ29zIA0KKyNkZWZpbmUgRlRfU2luIEZQREZBUElfRlRfU2luIA0KKyNkZWZpbmUgRlRfTG9hZF9HbHlwaCBGUERGQVBJX0ZUX0xvYWRfR2x5cGggDQorI2RlZmluZSBGVF9EaXZGaXggRlBERkFQSV9GVF9EaXZGaXggDQorI2RlZmluZSBGVF9SZWFsbG9jIEZQREZBUElfRlRfUmVhbGxvYyANCisjZGVmaW5lIEZUX0FsbG9jIEZQREZBUElfRlRfQWxsb2MgDQorI2RlZmluZSBGVF9HZXRfQ2hhcl9JbmRleCBGUERGQVBJX0ZUX0dldF9DaGFyX0luZGV4IA0KKyNkZWZpbmUgRlRfR2x5cGhMb2FkZXJfQ2hlY2tQb2ludHMgRlBERkFQSV9GVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cyANCisjZGVmaW5lIEZUX0dseXBoTG9hZGVyX0FkZCBGUERGQVBJX0ZUX0dseXBoTG9hZGVyX0FkZCANCisjZGVmaW5lIEZUX0dseXBoTG9hZGVyX0NoZWNrU3ViR2x5cGhzIEZQREZBUElfRlRfR2x5cGhMb2FkZXJfQ2hlY2tTdWJHbHlwaHMgDQorI2RlZmluZSBGVF9PdXRsaW5lX1RyYW5zbGF0ZSBGUERGQVBJX0ZUX091dGxpbmVfVHJhbnNsYXRlIA0KKyNkZWZpbmUgRlRfT3V0bGluZV9UcmFuc2Zvcm0gRlBERkFQSV9GVF9PdXRsaW5lX1RyYW5zZm9ybSANCisjZGVmaW5lIEZUX091dGxpbmVfR2V0X0NCb3ggRlBERkFQSV9GVF9PdXRsaW5lX0dldF9DQm94IA0KKyNkZWZpbmUgRlRfR2x5cGhMb2FkZXJfUmV3aW5kIEZQREZBUElfRlRfR2x5cGhMb2FkZXJfUmV3aW5kIA0KKyNkZWZpbmUgRlRfR2x5cGhMb2FkZXJfQ29weVBvaW50cyBGUERGQVBJX0ZUX0dseXBoTG9hZGVyX0NvcHlQb2ludHMgDQorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9OZXcgRlBERkFQSV9GVF9HbHlwaExvYWRlcl9OZXcgDQorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9DcmVhdGVFeHRyYSBGUERGQVBJX0ZUX0dseXBoTG9hZGVyX0NyZWF0ZUV4dHJhIA0KKyNkZWZpbmUgRlRfRnJlZSBGUERGQVBJX0ZUX0ZyZWUgDQorI2RlZmluZSBGVF9TZXRfQ2hhcm1hcCBGUERGQVBJX0ZUX1NldF9DaGFybWFwIA0KKyNkZWZpbmUgRlRfR2x5cGhMb2FkZXJfRG9uZSBGUERGQVBJX0ZUX0dseXBoTG9hZGVyX0RvbmUgDQorI2RlZmluZSBfZGVidWdfbWVtX2R1bW15IEZQREZBUElfX2RlYnVnX21lbV9kdW1teSANCisjZGVmaW5lIF9kZWJ1Z19tZW1fZHVtbXkgRlBERkFQSV9fZGVidWdfbWVtX2R1bW15IA0KKyNkZWZpbmUgRlRfUUFsbG9jIEZQREZBUElfRlRfUUFsbG9jIA0KKyNkZWZpbmUgRlRfUVJlYWxsb2MgRlBERkFQSV9GVF9RUmVhbGxvYyANCisjZGVmaW5lIEZUX0xpc3RfRmluZCBGUERGQVBJX0ZUX0xpc3RfRmluZCANCisjZGVmaW5lIEZUX0xpc3RfQWRkIEZQREZBUElfRlRfTGlzdF9BZGQgDQorI2RlZmluZSBGVF9MaXN0X0luc2VydCBGUERGQVBJX0ZUX0xpc3RfSW5zZXJ0IA0KKyNkZWZpbmUgRlRfTGlzdF9SZW1vdmUgRlBERkFQSV9GVF9MaXN0X1JlbW92ZSANCisjZGVmaW5lIEZUX0xpc3RfVXAgRlBERkFQSV9GVF9MaXN0X1VwIA0KKyNkZWZpbmUgRlRfTGlzdF9JdGVyYXRlIEZQREZBUElfRlRfTGlzdF9JdGVyYXRlIA0KKyNkZWZpbmUgRlRfTGlzdF9GaW5hbGl6ZSBGUERGQVBJX0ZUX0xpc3RfRmluYWxpemUgDQorI2RlZmluZSBmdF9oaWdocG93MiBGUERGQVBJX2Z0X2hpZ2hwb3cyIA0KKyNkZWZpbmUgRlRfU3RyZWFtX09wZW5NZW1vcnkgRlBERkFQSV9GVF9TdHJlYW1fT3Blbk1lbW9yeSANCisjZGVmaW5lIEZUX1N0cmVhbV9DbG9zZSBGUERGQVBJX0ZUX1N0cmVhbV9DbG9zZSANCisjZGVmaW5lIEZUX1N0cmVhbV9TZWVrIEZQREZBUElfRlRfU3RyZWFtX1NlZWsgDQorI2RlZmluZSBGVF9TdHJlYW1fU2tpcCBGUERGQVBJX0ZUX1N0cmVhbV9Ta2lwIA0KKyNkZWZpbmUgRlRfU3RyZWFtX1BvcyBGUERGQVBJX0ZUX1N0cmVhbV9Qb3MgDQorI2RlZmluZSBGVF9TdHJlYW1fUmVhZEF0IEZQREZBUElfRlRfU3RyZWFtX1JlYWRBdCANCisjZGVmaW5lIEZUX1N0cmVhbV9SZWFkIEZQREZBUElfRlRfU3RyZWFtX1JlYWQgDQorI2RlZmluZSBGVF9TdHJlYW1fVHJ5UmVhZCBGUERGQVBJX0ZUX1N0cmVhbV9UcnlSZWFkIA0KKyNkZWZpbmUgRlRfU3RyZWFtX0VudGVyRnJhbWUgRlBERkFQSV9GVF9TdHJlYW1fRW50ZXJGcmFtZSANCisjZGVmaW5lIEZUX1N0cmVhbV9FeHRyYWN0RnJhbWUgRlBERkFQSV9GVF9TdHJlYW1fRXh0cmFjdEZyYW1lIA0KKyNkZWZpbmUgRlRfU3RyZWFtX1JlbGVhc2VGcmFtZSBGUERGQVBJX0ZUX1N0cmVhbV9SZWxlYXNlRnJhbWUgDQorI2RlZmluZSBGVF9TdHJlYW1fRXhpdEZyYW1lIEZQREZBUElfRlRfU3RyZWFtX0V4aXRGcmFtZSANCisjZGVmaW5lIEZUX1N0cmVhbV9HZXRDaGFyIEZQREZBUElfRlRfU3RyZWFtX0dldENoYXIgDQorI2RlZmluZSBGVF9TdHJlYW1fR2V0U2hvcnQgRlBERkFQSV9GVF9TdHJlYW1fR2V0U2hvcnQgDQorI2RlZmluZSBGVF9TdHJlYW1fR2V0U2hvcnRMRSBGUERGQVBJX0ZUX1N0cmVhbV9HZXRTaG9ydExFIA0KKyNkZWZpbmUgRlRfU3RyZWFtX0dldE9mZnNldCBGUERGQVBJX0ZUX1N0cmVhbV9HZXRPZmZzZXQgDQorI2RlZmluZSBGVF9TdHJlYW1fR2V0TG9uZyBGUERGQVBJX0ZUX1N0cmVhbV9HZXRMb25nIA0KKyNkZWZpbmUgRlRfU3RyZWFtX0dldExvbmdMRSBGUERGQVBJX0ZUX1N0cmVhbV9HZXRMb25nTEUgDQorI2RlZmluZSBGVF9TdHJlYW1fUmVhZENoYXIgRlBERkFQSV9GVF9TdHJlYW1fUmVhZENoYXIgDQorI2RlZmluZSBGVF9TdHJlYW1fUmVhZFNob3J0IEZQREZBUElfRlRfU3RyZWFtX1JlYWRTaG9ydCANCisjZGVmaW5lIEZUX1N0cmVhbV9SZWFkU2hvcnRMRSBGUERGQVBJX0ZUX1N0cmVhbV9SZWFkU2hvcnRMRSANCisjZGVmaW5lIEZUX1N0cmVhbV9SZWFkT2Zmc2V0IEZQREZBUElfRlRfU3RyZWFtX1JlYWRPZmZzZXQgDQorI2RlZmluZSBGVF9TdHJlYW1fUmVhZExvbmcgRlBERkFQSV9GVF9TdHJlYW1fUmVhZExvbmcgDQorI2RlZmluZSBGVF9TdHJlYW1fUmVhZExvbmdMRSBGUERGQVBJX0ZUX1N0cmVhbV9SZWFkTG9uZ0xFIA0KKyNkZWZpbmUgRlRfU3RyZWFtX1JlYWRGaWVsZHMgRlBERkFQSV9GVF9TdHJlYW1fUmVhZEZpZWxkcyANCisjZGVmaW5lIEZUX1JvdW5kRml4IEZQREZBUElfRlRfUm91bmRGaXggDQorI2RlZmluZSBGVF9DZWlsRml4IEZQREZBUElfRlRfQ2VpbEZpeCANCisjZGVmaW5lIEZUX0Zsb29yRml4IEZQREZBUElfRlRfRmxvb3JGaXggDQorI2RlZmluZSBGVF9TcXJ0MzIgRlBERkFQSV9GVF9TcXJ0MzIgDQorI2RlZmluZSBGVF9TcXJ0Rml4ZWQgRlBERkFQSV9GVF9TcXJ0Rml4ZWQgDQorI2RlZmluZSBGVF9UYW4gRlBERkFQSV9GVF9UYW4gDQorI2RlZmluZSBGVF9BdGFuMiBGUERGQVBJX0ZUX0F0YW4yIA0KKyNkZWZpbmUgRlRfVmVjdG9yX1VuaXQgRlBERkFQSV9GVF9WZWN0b3JfVW5pdCANCisjZGVmaW5lIEZUX1ZlY3Rvcl9Sb3RhdGUgRlBERkFQSV9GVF9WZWN0b3JfUm90YXRlIA0KKyNkZWZpbmUgRlRfVmVjdG9yX0xlbmd0aCBGUERGQVBJX0ZUX1ZlY3Rvcl9MZW5ndGggDQorI2RlZmluZSBGVF9WZWN0b3JfUG9sYXJpemUgRlBERkFQSV9GVF9WZWN0b3JfUG9sYXJpemUgDQorI2RlZmluZSBGVF9WZWN0b3JfRnJvbV9Qb2xhciBGUERGQVBJX0ZUX1ZlY3Rvcl9Gcm9tX1BvbGFyIA0KKyNkZWZpbmUgRlRfQW5nbGVfRGlmZiBGUERGQVBJX0ZUX0FuZ2xlX0RpZmYgDQorI2RlZmluZSBGVF9PdXRsaW5lX0RlY29tcG9zZSBGUERGQVBJX0ZUX091dGxpbmVfRGVjb21wb3NlIA0KKyNkZWZpbmUgRlRfT3V0bGluZV9Eb25lX0ludGVybmFsIEZQREZBUElfRlRfT3V0bGluZV9Eb25lX0ludGVybmFsIA0KKyNkZWZpbmUgRlRfT3V0bGluZV9OZXdfSW50ZXJuYWwgRlBERkFQSV9GVF9PdXRsaW5lX05ld19JbnRlcm5hbCANCisjZGVmaW5lIEZUX091dGxpbmVfTmV3IEZQREZBUElfRlRfT3V0bGluZV9OZXcgDQorI2RlZmluZSBGVF9PdXRsaW5lX0NoZWNrIEZQREZBUElfRlRfT3V0bGluZV9DaGVjayANCisjZGVmaW5lIEZUX091dGxpbmVfQ29weSBGUERGQVBJX0ZUX091dGxpbmVfQ29weSANCisjZGVmaW5lIEZUX091dGxpbmVfRG9uZSBGUERGQVBJX0ZUX091dGxpbmVfRG9uZSANCisjZGVmaW5lIEZUX091dGxpbmVfUmV2ZXJzZSBGUERGQVBJX0ZUX091dGxpbmVfUmV2ZXJzZSANCisjZGVmaW5lIEZUX1NldF9SZW5kZXJlciBGUERGQVBJX0ZUX1NldF9SZW5kZXJlciANCisjZGVmaW5lIEZUX0xvb2t1cF9SZW5kZXJlciBGUERGQVBJX0ZUX0xvb2t1cF9SZW5kZXJlciANCisjZGVmaW5lIEZUX091dGxpbmVfUmVuZGVyIEZQREZBUElfRlRfT3V0bGluZV9SZW5kZXIgDQorI2RlZmluZSBGVF9PdXRsaW5lX0dldF9CaXRtYXAgRlBERkFQSV9GVF9PdXRsaW5lX0dldF9CaXRtYXAgDQorI2RlZmluZSBGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbiBGUERGQVBJX0ZUX091dGxpbmVfR2V0X09yaWVudGF0aW9uIA0KKyNkZWZpbmUgRlRfT3V0bGluZV9FbWJvbGRlbiBGUERGQVBJX0ZUX091dGxpbmVfRW1ib2xkZW4gDQorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9SZXNldCBGUERGQVBJX0ZUX0dseXBoTG9hZGVyX1Jlc2V0IA0KKyNkZWZpbmUgRlRfR2x5cGhMb2FkZXJfUHJlcGFyZSBGUERGQVBJX0ZUX0dseXBoTG9hZGVyX1ByZXBhcmUgDQorI2RlZmluZSBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwIEZQREZBUElfZnRfc2VydmljZV9saXN0X2xvb2t1cCANCisjZGVmaW5lIGZ0X3ZhbGlkYXRvcl9pbml0IEZQREZBUElfZnRfdmFsaWRhdG9yX2luaXQgDQorI2RlZmluZSBmdF92YWxpZGF0b3JfcnVuIEZQREZBUElfZnRfdmFsaWRhdG9yX3J1biANCisjZGVmaW5lIGZ0X3ZhbGlkYXRvcl9lcnJvciBGUERGQVBJX2Z0X3ZhbGlkYXRvcl9lcnJvciANCisjZGVmaW5lIEZUX1N0cmVhbV9OZXcgRlBERkFQSV9GVF9TdHJlYW1fTmV3IA0KKyNkZWZpbmUgRlRfU3RyZWFtX0ZyZWUgRlBERkFQSV9GVF9TdHJlYW1fRnJlZSANCisjZGVmaW5lIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCBGUERGQVBJX2Z0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCANCisjZGVmaW5lIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwIEZQREZBUElfZnRfZ2x5cGhzbG90X3NldF9iaXRtYXAgDQorI2RlZmluZSBGVF9HbHlwaFNsb3RfT3duX0JpdG1hcCBGUERGQVBJX0ZUX0dseXBoU2xvdF9Pd25fQml0bWFwDQorI2RlZmluZSBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwIEZQREZBUElfZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCANCisjZGVmaW5lIEZUX05ld19HbHlwaFNsb3QgRlBERkFQSV9GVF9OZXdfR2x5cGhTbG90IA0KKyNkZWZpbmUgRlRfRG9uZV9HbHlwaFNsb3QgRlBERkFQSV9GVF9Eb25lX0dseXBoU2xvdCANCisjZGVmaW5lIEZUX1NldF9UcmFuc2Zvcm0gRlBERkFQSV9GVF9TZXRfVHJhbnNmb3JtIA0KKyNkZWZpbmUgRlRfUmVuZGVyX0dseXBoX0ludGVybmFsIEZQREZBUElfRlRfUmVuZGVyX0dseXBoX0ludGVybmFsIA0KKyNkZWZpbmUgRlRfUmVuZGVyX0dseXBoIEZQREZBUElfRlRfUmVuZGVyX0dseXBoIA0KKyNkZWZpbmUgRlRfTG9hZF9DaGFyIEZQREZBUElfRlRfTG9hZF9DaGFyIA0KKyNkZWZpbmUgRlRfTmV3X1NpemUgRlBERkFQSV9GVF9OZXdfU2l6ZSANCisjZGVmaW5lIEZUX09wZW5fRmFjZSBGUERGQVBJX0ZUX09wZW5fRmFjZSANCisjZGVmaW5lIEZUX0F0dGFjaF9TdHJlYW0gRlBERkFQSV9GVF9BdHRhY2hfU3RyZWFtIA0KKyNkZWZpbmUgRlRfQXR0YWNoX0ZpbGUgRlBERkFQSV9GVF9BdHRhY2hfRmlsZSANCisjZGVmaW5lIEZUX0RvbmVfU2l6ZSBGUERGQVBJX0ZUX0RvbmVfU2l6ZSANCisjZGVmaW5lIEZUX1NldF9DaGFyX1NpemUgRlBERkFQSV9GVF9TZXRfQ2hhcl9TaXplIA0KKyNkZWZpbmUgRlRfU2V0X1BpeGVsX1NpemVzIEZQREZBUElfRlRfU2V0X1BpeGVsX1NpemVzIA0KKyNkZWZpbmUgRlRfR2V0X0tlcm5pbmcgRlBERkFQSV9GVF9HZXRfS2VybmluZyANCisjZGVmaW5lIEZUX0NNYXBfRG9uZSBGUERGQVBJX0ZUX0NNYXBfRG9uZSANCisjZGVmaW5lIEZUX0NNYXBfTmV3IEZQREZBUElfRlRfQ01hcF9OZXcgDQorI2RlZmluZSBGVF9HZXRfTmV4dF9DaGFyIEZQREZBUElfRlRfR2V0X05leHRfQ2hhciANCisjZGVmaW5lIEZUX0dldF9GaXJzdF9DaGFyIEZQREZBUElfRlRfR2V0X0ZpcnN0X0NoYXIgDQorI2RlZmluZSBGVF9HZXRfTmFtZV9JbmRleCBGUERGQVBJX0ZUX0dldF9OYW1lX0luZGV4IA0KKyNkZWZpbmUgRlRfR2V0X0dseXBoX05hbWUgRlBERkFQSV9GVF9HZXRfR2x5cGhfTmFtZSANCisjZGVmaW5lIEZUX0dldF9Qb3N0c2NyaXB0X05hbWUgRlBERkFQSV9GVF9HZXRfUG9zdHNjcmlwdF9OYW1lIA0KKyNkZWZpbmUgRlRfR2V0X1NmbnRfVGFibGUgRlBERkFQSV9GVF9HZXRfU2ZudF9UYWJsZSANCisjZGVmaW5lIEZUX0xvYWRfU2ZudF9UYWJsZSBGUERGQVBJX0ZUX0xvYWRfU2ZudF9UYWJsZSANCisjZGVmaW5lIEZUX1NmbnRfVGFibGVfSW5mbyBGUERGQVBJX0ZUX1NmbnRfVGFibGVfSW5mbyANCisjZGVmaW5lIEZUX0dldF9DTWFwX0xhbmd1YWdlX0lEIEZQREZBUElfRlRfR2V0X0NNYXBfTGFuZ3VhZ2VfSUQgDQorI2RlZmluZSBGVF9BY3RpdmF0ZV9TaXplIEZQREZBUElfRlRfQWN0aXZhdGVfU2l6ZSANCisjZGVmaW5lIEZUX0dldF9SZW5kZXJlciBGUERGQVBJX0ZUX0dldF9SZW5kZXJlciANCisjZGVmaW5lIEZUX1JlbW92ZV9Nb2R1bGUgRlBERkFQSV9GVF9SZW1vdmVfTW9kdWxlIA0KKyNkZWZpbmUgRlRfQWRkX01vZHVsZSBGUERGQVBJX0ZUX0FkZF9Nb2R1bGUgDQorI2RlZmluZSBGVF9HZXRfTW9kdWxlIEZQREZBUElfRlRfR2V0X01vZHVsZSANCisjZGVmaW5lIEZUX0dldF9Nb2R1bGVfSW50ZXJmYWNlIEZQREZBUElfRlRfR2V0X01vZHVsZV9JbnRlcmZhY2UgDQorI2RlZmluZSBmdF9tb2R1bGVfZ2V0X3NlcnZpY2UgRlBERkFQSV9mdF9tb2R1bGVfZ2V0X3NlcnZpY2UgDQorI2RlZmluZSBGVF9OZXdfTGlicmFyeSBGUERGQVBJX0ZUX05ld19MaWJyYXJ5IA0KKyNkZWZpbmUgRlRfTGlicmFyeV9WZXJzaW9uIEZQREZBUElfRlRfTGlicmFyeV9WZXJzaW9uIA0KKyNkZWZpbmUgRlRfRG9uZV9MaWJyYXJ5IEZQREZBUElfRlRfRG9uZV9MaWJyYXJ5IA0KKyNkZWZpbmUgRlRfU2V0X0RlYnVnX0hvb2sgRlBERkFQSV9GVF9TZXRfRGVidWdfSG9vayANCisjZGVmaW5lIEZUX1JhY2Nlc3NfR2V0X0hlYWRlckluZm8gRlBERkFQSV9GVF9SYWNjZXNzX0dldF9IZWFkZXJJbmZvIA0KKyNkZWZpbmUgRlRfUmFjY2Vzc19HZXRfRGF0YU9mZnNldHMgRlBERkFQSV9GVF9SYWNjZXNzX0dldF9EYXRhT2Zmc2V0cyANCisjZGVmaW5lIEZUX1JhY2Nlc3NfR3Vlc3MgRlBERkFQSV9GVF9SYWNjZXNzX0d1ZXNzDQorI2RlZmluZSBhZl9kdW1teV9zY3JpcHRfY2xhc3MgRlBERkFQSV9hZl9kdW1teV9zY3JpcHRfY2xhc3MNCisjZGVmaW5lIGFmX2xhdGluX3NjcmlwdF9jbGFzcyBGUERGQVBJX2FmX2xhdGluX3NjcmlwdF9jbGFzcw0KKyNkZWZpbmUgYWZfY2prX3NjcmlwdF9jbGFzcyBGUERGQVBJX2FmX2Nqa19zY3JpcHRfY2xhc3MNCisjZGVmaW5lIGFmX2F1dG9maXR0ZXJfc2VydmljZSBGUERGQVBJX2FmX2F1dG9maXR0ZXJfc2VydmljZQ0KKyNkZWZpbmUgYXV0b2ZpdF9tb2R1bGVfY2xhc3MgRlBERkFQSV9hdXRvZml0X21vZHVsZV9jbGFzcw0KKyNkZWZpbmUgY2ZmX2NtYXBfZW5jb2RpbmdfY2xhc3NfcmVjIEZQREZBUElfY2ZmX2NtYXBfZW5jb2RpbmdfY2xhc3NfcmVjDQorI2RlZmluZSBjZmZfY21hcF91bmljb2RlX2NsYXNzX3JlYyBGUERGQVBJX2NmZl9jbWFwX3VuaWNvZGVfY2xhc3NfcmVjDQorI2RlZmluZSBjZmZfZHJpdmVyX2NsYXNzIEZQREZBUElfY2ZmX2RyaXZlcl9jbGFzcw0KKyNkZWZpbmUgRlRfU3RyZWFtX09wZW4gRlBERkFQSV9GVF9TdHJlYW1fT3Blbg0KKyNkZWZpbmUgRlRfTmV3X01lbW9yeSBGUERGQVBJX0ZUX05ld19NZW1vcnkNCisjZGVmaW5lIEZUX0RvbmVfTWVtb3J5IEZQREZBUElfRlRfRG9uZV9NZW1vcnkNCisjZGVmaW5lIGZ0X21lbV9xYWxsb2MgRlBERkFQSV9mdF9tZW1fcWFsbG9jDQorI2RlZmluZSBmdF9tZW1fYWxsb2MgRlBERkFQSV9mdF9tZW1fYWxsb2MNCisjZGVmaW5lIGZ0X21lbV9mcmVlIEZQREZBUElfZnRfbWVtX2ZyZWUNCisjZGVmaW5lIGZ0X21lbV9xcmVhbGxvYyBGUERGQVBJX2Z0X21lbV9xcmVhbGxvYw0KKyNkZWZpbmUgZnRfbWVtX3JlYWxsb2MgRlBERkFQSV9mdF9tZW1fcmVhbGxvYw0KKyNkZWZpbmUgRlRfR2V0X1RydWVUeXBlX0VuZ2luZV9UeXBlIEZQREZBUElfRlRfR2V0X1RydWVUeXBlX0VuZ2luZV9UeXBlDQorI2RlZmluZSBmdF9zdHViX3NldF9jaGFyX3NpemVzIEZQREZBUElfZnRfc3R1Yl9zZXRfY2hhcl9zaXplcw0KKyNkZWZpbmUgZnRfc3R1Yl9zZXRfcGl4ZWxfc2l6ZXMgRlBERkFQSV9mdF9zdHViX3NldF9waXhlbF9zaXplcw0KKyNkZWZpbmUgRlRfR2V0X1N1YkdseXBoX0luZm8gRlBERkFQSV9GVF9HZXRfU3ViR2x5cGhfSW5mbw0KKyNkZWZpbmUgRlRfR2V0X1NmbnRfTmFtZV9Db3VudCBGUERGQVBJX0ZUX0dldF9TZm50X05hbWVfQ291bnQNCisjZGVmaW5lIEZUX0dldF9TZm50X05hbWUgRlBERkFQSV9GVF9HZXRfU2ZudF9OYW1lDQorI2RlZmluZSBGVF9CaXRtYXBfTmV3IEZQREZBUElfRlRfQml0bWFwX05ldw0KKyNkZWZpbmUgRlRfQml0bWFwX0NvcHkgRlBERkFQSV9GVF9CaXRtYXBfQ29weQ0KKyNkZWZpbmUgRlRfQml0bWFwX0RvbmUgRlBERkFQSV9GVF9CaXRtYXBfRG9uZQ0KKyNkZWZpbmUgRlRfQml0bWFwX0NvbnZlcnQgRlBERkFQSV9GVF9CaXRtYXBfQ29udmVydA0KKyNkZWZpbmUgRlRfQml0bWFwX0VtYm9sZGVuIEZQREZBUElfRlRfQml0bWFwX0VtYm9sZGVuDQorI2RlZmluZSBmdF9iaXRtYXBfZ2x5cGhfY2xhc3MgRlBERkFQSV9mdF9iaXRtYXBfZ2x5cGhfY2xhc3MNCisjZGVmaW5lIGZ0X291dGxpbmVfZ2x5cGhfY2xhc3MgRlBERkFQSV9mdF9vdXRsaW5lX2dseXBoX2NsYXNzDQorI2RlZmluZSBGVF9NYXRyaXhfTXVsdGlwbHkgRlBERkFQSV9GVF9NYXRyaXhfTXVsdGlwbHkNCisjZGVmaW5lIEZUX01hdHJpeF9JbnZlcnQgRlBERkFQSV9GVF9NYXRyaXhfSW52ZXJ0DQorI2RlZmluZSBGVF9Eb25lX0dseXBoIEZQREZBUElfRlRfRG9uZV9HbHlwaA0KKyNkZWZpbmUgRlRfR2x5cGhfQ29weSBGUERGQVBJX0ZUX0dseXBoX0NvcHkNCisjZGVmaW5lIEZUX0dldF9HbHlwaCBGUERGQVBJX0ZUX0dldF9HbHlwaA0KKyNkZWZpbmUgRlRfR2x5cGhfVHJhbnNmb3JtIEZQREZBUElfRlRfR2x5cGhfVHJhbnNmb3JtDQorI2RlZmluZSBGVF9HbHlwaF9HZXRfQ0JveCBGUERGQVBJX0ZUX0dseXBoX0dldF9DQm94DQorI2RlZmluZSBGVF9HbHlwaF9Ub19CaXRtYXAgRlBERkFQSV9GVF9HbHlwaF9Ub19CaXRtYXANCisjZGVmaW5lIEZUX0FkZF9EZWZhdWx0X01vZHVsZXMgRlBERkFQSV9GVF9BZGRfRGVmYXVsdF9Nb2R1bGVzDQorI2RlZmluZSBGVF9HZXRfTXVsdGlfTWFzdGVyIEZQREZBUElfRlRfR2V0X011bHRpX01hc3Rlcg0KKyNkZWZpbmUgRlRfR2V0X01NX1ZhciBGUERGQVBJX0ZUX0dldF9NTV9WYXINCisjZGVmaW5lIEZUX1NldF9NTV9EZXNpZ25fQ29vcmRpbmF0ZXMgRlBERkFQSV9GVF9TZXRfTU1fRGVzaWduX0Nvb3JkaW5hdGVzDQorI2RlZmluZSBGVF9TZXRfVmFyX0Rlc2lnbl9Db29yZGluYXRlcyBGUERGQVBJX0ZUX1NldF9WYXJfRGVzaWduX0Nvb3JkaW5hdGVzDQorI2RlZmluZSBGVF9TZXRfTU1fQmxlbmRfQ29vcmRpbmF0ZXMgRlBERkFQSV9GVF9TZXRfTU1fQmxlbmRfQ29vcmRpbmF0ZXMNCisjZGVmaW5lIEZUX1NldF9WYXJfQmxlbmRfQ29vcmRpbmF0ZXMgRlBERkFQSV9GVF9TZXRfVmFyX0JsZW5kX0Nvb3JkaW5hdGVzDQorI2RlZmluZSBwc190YWJsZV9mdW5jcyBGUERGQVBJX3BzX3RhYmxlX2Z1bmNzDQorI2RlZmluZSBwc19wYXJzZXJfZnVuY3MgRlBERkFQSV9wc19wYXJzZXJfZnVuY3MNCisjZGVmaW5lIHQxX2J1aWxkZXJfZnVuY3MgRlBERkFQSV90MV9idWlsZGVyX2Z1bmNzDQorI2RlZmluZSB0MV9kZWNvZGVyX2Z1bmNzIEZQREZBUElfdDFfZGVjb2Rlcl9mdW5jcw0KKyNkZWZpbmUgYWZtX3BhcnNlcl9mdW5jcyBGUERGQVBJX2FmbV9wYXJzZXJfZnVuY3MNCisjZGVmaW5lIHQxX2NtYXBfY2xhc3NlcyBGUERGQVBJX3QxX2NtYXBfY2xhc3Nlcw0KKyNkZWZpbmUgdDFfY21hcF9zdGFuZGFyZF9jbGFzc19yZWMgRlBERkFQSV90MV9jbWFwX3N0YW5kYXJkX2NsYXNzX3JlYw0KKyNkZWZpbmUgdDFfY21hcF9leHBlcnRfY2xhc3NfcmVjIEZQREZBUElfdDFfY21hcF9leHBlcnRfY2xhc3NfcmVjDQorI2RlZmluZSB0MV9jbWFwX2N1c3RvbV9jbGFzc19yZWMgRlBERkFQSV90MV9jbWFwX2N1c3RvbV9jbGFzc19yZWMNCisjZGVmaW5lIHQxX2NtYXBfdW5pY29kZV9jbGFzc19yZWMgRlBERkFQSV90MV9jbWFwX3VuaWNvZGVfY2xhc3NfcmVjDQorI2RlZmluZSBwc2F1eF9tb2R1bGVfY2xhc3MgRlBERkFQSV9wc2F1eF9tb2R1bGVfY2xhc3MNCisjZGVmaW5lIHBzaGludGVyX21vZHVsZV9jbGFzcyBGUERGQVBJX3BzaGludGVyX21vZHVsZV9jbGFzcw0KKyNkZWZpbmUgcHNfaGludHNfYXBwbHkgRlBERkFQSV9wc19oaW50c19hcHBseQ0KKyNkZWZpbmUgcHNuYW1lc19tb2R1bGVfY2xhc3MgRlBERkFQSV9wc25hbWVzX21vZHVsZV9jbGFzcw0KKyNkZWZpbmUgZnRfcmFzdGVyMV9yZW5kZXJlcl9jbGFzcyBGUERGQVBJX2Z0X3Jhc3RlcjFfcmVuZGVyZXJfY2xhc3MNCisjZGVmaW5lIGZ0X3N0YW5kYXJkX3Jhc3RlciBGUERGQVBJX2Z0X3N0YW5kYXJkX3Jhc3Rlcg0KKyNkZWZpbmUgZnRfcmFzdGVyNV9yZW5kZXJlcl9jbGFzcyBGUERGQVBJX2Z0X3Jhc3RlcjVfcmVuZGVyZXJfY2xhc3MNCisjZGVmaW5lIHR0X2NtYXAwX2NsYXNzX3JlYyBGUERGQVBJX3R0X2NtYXAwX2NsYXNzX3JlYw0KKyNkZWZpbmUgdHRfY21hcDJfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDJfY2xhc3NfcmVjDQorI2RlZmluZSB0dF9jbWFwNF9jbGFzc19yZWMgRlBERkFQSV90dF9jbWFwNF9jbGFzc19yZWMNCisjZGVmaW5lIHR0X2NtYXA2X2NsYXNzX3JlYyBGUERGQVBJX3R0X2NtYXA2X2NsYXNzX3JlYw0KKyNkZWZpbmUgdHRfY21hcDhfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDhfY2xhc3NfcmVjDQorI2RlZmluZSB0dF9jbWFwMTBfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDEwX2NsYXNzX3JlYw0KKyNkZWZpbmUgdHRfY21hcDEyX2NsYXNzX3JlYyBGUERGQVBJX3R0X2NtYXAxMl9jbGFzc19yZWMNCisjZGVmaW5lIHR0X2NtYXAxM19jbGFzc19yZWMgRlBERkFQSV90dF9jbWFwMTNfY2xhc3NfcmVjDQorI2RlZmluZSB0dF9jbWFwMTRfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDE0X2NsYXNzX3JlYw0KKyNkZWZpbmUgc2ZudF9tb2R1bGVfY2xhc3MgRlBERkFQSV9zZm50X21vZHVsZV9jbGFzcw0KKyNkZWZpbmUgZnRfZ3JheXNfcmFzdGVyIEZQREZBUElfZnRfZ3JheXNfcmFzdGVyDQorI2RlZmluZSBmdF9zbW9vdGhfcmVuZGVyZXJfY2xhc3MgRlBERkFQSV9mdF9zbW9vdGhfcmVuZGVyZXJfY2xhc3MNCisjZGVmaW5lIGZ0X3Ntb290aF9sY2RfcmVuZGVyZXJfY2xhc3MgRlBERkFQSV9mdF9zbW9vdGhfbGNkX3JlbmRlcmVyX2NsYXNzDQorI2RlZmluZSBmdF9zbW9vdGhfbGNkdl9yZW5kZXJlcl9jbGFzcyBGUERGQVBJX2Z0X3Ntb290aF9sY2R2X3JlbmRlcmVyX2NsYXNzDQorI2RlZmluZSB0dF9kZWZhdWx0X2dyYXBoaWNzX3N0YXRlIEZQREZBUElfdHRfZGVmYXVsdF9ncmFwaGljc19zdGF0ZQ0KKyNkZWZpbmUgdHRfZHJpdmVyX2NsYXNzIEZQREZBUElfdHRfZHJpdmVyX2NsYXNzDQorI2RlZmluZSBUVF9SdW5JbnMgRlBERkFQSV9UVF9SdW5JbnMNCisjZGVmaW5lIFRUX05ld19Db250ZXh0IEZQREZBUElfVFRfTmV3X0NvbnRleHQNCisjZGVmaW5lIHQxX2RyaXZlcl9jbGFzcyBGUERGQVBJX3QxX2RyaXZlcl9jbGFzcw0KKyNkZWZpbmUgdDFjaWRfZHJpdmVyX2NsYXNzIEZQREZBUElfdDFjaWRfZHJpdmVyX2NsYXNzDQorI2RlZmluZSBGVF9HZXRfVHJhY2tfS2VybmluZyBGUERGQVBJX0ZUX0dldF9UcmFja19LZXJuaW5nDQorI2RlZmluZSBGVF9NYXRjaF9TaXplIEZQREZBUElfRlRfTWF0Y2hfU2l6ZQ0KKyNkZWZpbmUgRlRfTXVsRGl2X05vX1JvdW5kIEZQREZBUElfRlRfTXVsRGl2X05vX1JvdW5kDQorI2RlZmluZSBGVF9SZXF1ZXN0X01ldHJpY3MgRlBERkFQSV9GVF9SZXF1ZXN0X01ldHJpY3MNCisjZGVmaW5lIEZUX1JlcXVlc3RfU2l6ZSBGUERGQVBJX0ZUX1JlcXVlc3RfU2l6ZQ0KKyNkZWZpbmUgRlRfU2VsZWN0X01ldHJpY3MgRlBERkFQSV9GVF9TZWxlY3RfTWV0cmljcw0KKyNkZWZpbmUgRlRfU2VsZWN0X1NpemUgRlBERkFQSV9GVF9TZWxlY3RfU2l6ZQ0KKyNkZWZpbmUgZnRfc3ludGhlc2l6ZV92ZXJ0aWNhbF9tZXRyaWNzIEZQREZBUElfZnRfc3ludGhlc2l6ZV92ZXJ0aWNhbF9tZXRyaWNzDQorI2RlZmluZSBOZXdfUHJvZmlsZSBGUERGQVBJX05ld19Qcm9maWxlDQorI2RlZmluZSBFbmRfUHJvZmlsZSBGUERGQVBJX0VuZF9Qcm9maWxlDQorI2RlZmluZSBJbnNlcnRfWV9UdXJuIEZQREZBUElfSW5zZXJ0X1lfVHVybiANCisjZGVmaW5lIFNwbGl0X0NvbmljIEZQREZBUElfU3BsaXRfQ29uaWMgIA0KKyNkZWZpbmUgU3BsaXRfQ3ViaWMgRlBERkFQSV9TcGxpdF9DdWJpYw0KKyNkZWZpbmUgTGluZV9VcCBGUERGQVBJX0xpbmVfVXAgDQorI2RlZmluZSBCZXppZXJfVXAgRlBERkFQSV9CZXppZXJfVXAgDQorI2RlZmluZSBCZXppZXJfRG93biBGUERGQVBJX0Jlemllcl9Eb3duIA0KKyNkZWZpbmUgTGluZV9UbyBGUERGQVBJX0xpbmVfVG8NCisjZGVmaW5lIENvbmljX1RvIEZQREZBUElfQ29uaWNfVG8gDQorI2RlZmluZSBDdWJpY19UbyBGUERGQVBJX0N1YmljX1RvDQorI2RlZmluZSBEZWNvbXBvc2VfQ3VydmUgRlBERkFQSV9EZWNvbXBvc2VfQ3VydmUNCisjZGVmaW5lIENvbnZlcnRfR2x5cGggRlBERkFQSV9Db252ZXJ0X0dseXBoIA0KKyNkZWZpbmUgU29ydCBGUERGQVBJX1NvcnQgDQorI2RlZmluZSBWZXJ0aWNhbF9Td2VlcF9Jbml0IEZQREZBUElfVmVydGljYWxfU3dlZXBfSW5pdCANCisjZGVmaW5lIFZlcnRpY2FsX1N3ZWVwX1NwYW4gRlBERkFQSV9WZXJ0aWNhbF9Td2VlcF9TcGFuIA0KKyNkZWZpbmUgVmVydGljYWxfU3dlZXBfRHJvcCBGUERGQVBJX1ZlcnRpY2FsX1N3ZWVwX0Ryb3AgDQorI2RlZmluZSBWZXJ0aWNhbF9Td2VlcF9TdGVwIEZQREZBUElfVmVydGljYWxfU3dlZXBfU3RlcCANCisjZGVmaW5lIEhvcml6b250YWxfU3dlZXBfSW5pdCBGUERGQVBJX0hvcml6b250YWxfU3dlZXBfSW5pdCANCisjZGVmaW5lIEhvcml6b250YWxfU3dlZXBfU3BhbiBGUERGQVBJX0hvcml6b250YWxfU3dlZXBfU3BhbiANCisjZGVmaW5lIEhvcml6b250YWxfU3dlZXBfRHJvcCBGUERGQVBJX0hvcml6b250YWxfU3dlZXBfRHJvcCANCisjZGVmaW5lIEhvcml6b250YWxfU3dlZXBfU3RlcCBGUERGQVBJX0hvcml6b250YWxfU3dlZXBfU3RlcCANCisjZGVmaW5lIERyYXdfU3dlZXAgRlBERkFQSV9EcmF3X1N3ZWVwIA0KKyNkZWZpbmUgUmVuZGVyX1NpbmdsZV9QYXNzIEZQREZBUElfUmVuZGVyX1NpbmdsZV9QYXNzIA0KKyNkZWZpbmUgUmVuZGVyX0dseXBoIEZQREZBUElfUmVuZGVyX0dseXBoICANCisjZGVmaW5lIEZpbmFsaXplX1Byb2ZpbGVfVGFibGUgRlBERkFQSV9GaW5hbGl6ZV9Qcm9maWxlX1RhYmxlIA0KKyNkZWZpbmUgSW5zTmV3IEZQREZBUElfSW5zTmV3IA0KKyNkZWZpbmUgRGVsT2xkIEZQREZBUElfRGVsT2xkDQorI2RlZmluZSBGVF9NdWxGaXggRlBERkFQSV9GVF9NdWxGaXgNCisjZGVmaW5lIEZUX01hdHJpeF9NdWx0aXBseV9TY2FsZWQgRlBERkFQSV9GVF9NYXRyaXhfTXVsdGlwbHlfU2NhbGVkDQorI2RlZmluZSBGVF9WZWN0b3JfVHJhbnNmb3JtX1NjYWxlZCBGUERGQVBJX0ZUX1ZlY3Rvcl9UcmFuc2Zvcm1fU2NhbGVkDQorI2RlZmluZSBmdF9jb3JuZXJfb3JpZW50YXRpb24gRlBERkFQSV9mdF9jb3JuZXJfb3JpZW50YXRpb24NCisjZGVmaW5lIGZ0X2Nvcm5lcl9pc19mbGF0IEZQREZBUElfZnRfY29ybmVyX2lzX2ZsYXQNCisjZGVmaW5lIEZUX0dldF9DTWFwX0Zvcm1hdCBGUERGQVBJX0ZUX0dldF9DTWFwX0Zvcm1hdA0KKyNkZWZpbmUgZnRfbWVtX3N0cmNweW4gRlBERkFQSV9mdF9tZW1fc3RyY3B5bg0KKyNkZWZpbmUgZnRfbWVtX2R1cCBGUERGQVBJX2Z0X21lbV9kdXANCisjZGVmaW5lIGZ0X21lbV9zdHJkdXAgRlBERkFQSV9mdF9tZW1fc3RyZHVwDQorI2RlZmluZSBGVF9GYWNlX0dldENoYXJWYXJpYW50SXNEZWZhdWx0IEZQREZBUElfRlRfRmFjZV9HZXRDaGFyVmFyaWFudElzRGVmYXVsdA0KKyNkZWZpbmUgRlRfRmFjZV9HZXRDaGFyc09mVmFyaWFudCBGUERGQVBJX0ZUX0ZhY2VfR2V0Q2hhcnNPZlZhcmlhbnQNCisjZGVmaW5lIEZUX0ZhY2VfR2V0VmFyaWFudHNPZkNoYXIgRlBERkFQSV9GVF9GYWNlX0dldFZhcmlhbnRzT2ZDaGFyDQorI2RlZmluZSBGVF9GYWNlX0dldFZhcmlhbnRTZWxlY3RvcnMgRlBERkFQSV9GVF9GYWNlX0dldFZhcmlhbnRTZWxlY3RvcnMNCisjZGVmaW5lIEZUX0ZhY2VfR2V0Q2hhclZhcmlhbnRJbmRleCBGUERGQVBJX0ZUX0ZhY2VfR2V0Q2hhclZhcmlhbnRJbmRleA0KKyNkZWZpbmUgRlRfR2V0X0FkdmFuY2VzIEZQREZBUElfRlRfR2V0X0FkdmFuY2VzDQorI2RlZmluZSBGVF9HZXRfQWR2YW5jZSBGUERGQVBJX0ZUX0dldF9BZHZhbmNlDQorI2RlZmluZSBGVF9MaWJyYXJ5X1NldExjZEZpbHRlciBGUERGQVBJX0ZUX0xpYnJhcnlfU2V0TGNkRmlsdGVyDQorIA0KKyNlbmRpZiAvLyAhX0ZYX0ZSRUVUWVBFX0RPTlRfUkVOQU1FXw0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZWI0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCkBAIC0wLDAgKzEsNTk5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGNvbmZpZy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQU5TSS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNCwgMjAwNi0yMDA4LCAyMDEwLTIwMTEsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGhlYWRlciBmaWxlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIG1hY3JvIGRlZmluaXRpb25zIHRoYXQgYXJlIHVzZWQgKi8KKyAgLyogYnkgdGhlIHJlc3Qgb2YgdGhlIGVuZ2luZS4gIE1vc3Qgb2YgdGhlIG1hY3JvcyBoZXJlIGFyZSBhdXRvbWF0aWNhbGx5ICovCisgIC8qIGRldGVybWluZWQgYXQgY29tcGlsZSB0aW1lLCBhbmQgeW91IHNob3VsZCBub3QgbmVlZCB0byBjaGFuZ2UgaXQgdG8gICAqLworICAvKiBwb3J0IEZyZWVUeXBlLCBleGNlcHQgdG8gY29tcGlsZSB0aGUgbGlicmFyeSB3aXRoIGEgbm9uLUFOU0kgICAgICAgICAgKi8KKyAgLyogY29tcGlsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlIGhvd2V2ZXIgdGhhdCBpZiBzb21lIHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgYXJlIG5lZWRlZCwgd2UgICAgICAgKi8KKyAgLyogYWR2aXNlIHlvdSB0byBwbGFjZSBhIG1vZGlmaWVkIGNvcHkgaW4geW91ciBidWlsZCBkaXJlY3RvcnkuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgYnVpbGQgZGlyZWN0b3J5IGlzIHVzdWFsbHkgYGZyZWV0eXBlL2J1aWxkcy88c3lzdGVtPicsIGFuZCAgICAgICAgKi8KKyAgLyogY29udGFpbnMgc3lzdGVtLXNwZWNpZmljIGZpbGVzIHRoYXQgYXJlIGFsd2F5cyBpbmNsdWRlZCBmaXJzdCB3aGVuICAgICovCisgIC8qIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBBTlNJIHZlcnNpb24gc2hvdWxkIHN0YXkgaW4gYGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnJy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0ZUQ09ORklHX0hfXworI2RlZmluZSBfX0ZUQ09ORklHX0hfXworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmdG9wdGlvbi5oIgorI2luY2x1ZGUgImZ0c3RkbGliLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgUExBVEZPUk0tU1BFQ0lGSUMgQ09ORklHVVJBVElPTiBNQUNST1MgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlc2UgbWFjcm9zIGNhbiBiZSB0b2dnbGVkIHRvIHN1aXQgYSBzcGVjaWZpYyBzeXN0ZW0uICBUaGUgY3VycmVudCAgICovCisgIC8qIG9uZXMgYXJlIGRlZmF1bHRzIHVzZWQgdG8gY29tcGlsZSBGcmVlVHlwZSBpbiBhbiBBTlNJIEMgZW52aXJvbm1lbnQgICAqLworICAvKiAoMTZiaXQgY29tcGlsZXJzIGFyZSBhbHNvIHN1cHBvcnRlZCkuICBDb3B5IHRoaXMgZmlsZSB0byB5b3VyIG93biAgICAgKi8KKyAgLyogYGZyZWV0eXBlL2J1aWxkcy88c3lzdGVtPicgZGlyZWN0b3J5LCBhbmQgZWRpdCBpdCB0byBwb3J0IHRoZSBlbmdpbmUuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIFRoZXJlIGFyZSBzeXN0ZW1zIChsaWtlIHRoZSBUZXhhcyBJbnN0cnVtZW50cyAnQzU0eCkgd2hlcmUgYSBgY2hhcicgKi8KKyAgLyogaGFzIDE2IGJpdHMuICBBTlNJIEMgc2F5cyB0aGF0IHNpemVvZihjaGFyKSBpcyBhbHdheXMgMS4gIFNpbmNlIGFuICAqLworICAvKiBgaW50JyBoYXMgMTYgYml0cyBhbHNvIGZvciB0aGlzIHN5c3RlbSwgc2l6ZW9mKGludCkgZ2l2ZXMgMSB3aGljaCAgICovCisgIC8qIGlzIHByb2JhYmx5IHVuZXhwZWN0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBgQ0hBUl9CSVQnIChkZWZpbmVkIGluIGxpbWl0cy5oKSBnaXZlcyB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gYSAgICAgICovCisgIC8qIGBjaGFyJyB0eXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmbmRlZiBGVF9DSEFSX0JJVAorI2RlZmluZSBGVF9DSEFSX0JJVCAgQ0hBUl9CSVQKKyNlbmRpZgorCisKKyAgLyogVGhlIHNpemUgb2YgYW4gYGludCcgdHlwZS4gICovCisjaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSU5UX01BWCA9PSAweEZGRkZVTAorI2RlZmluZSBGVF9TSVpFT0ZfSU5UICAoMTYgLyBGVF9DSEFSX0JJVCkKKyNlbGlmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJTlRfTUFYID09IDB4RkZGRkZGRkZVTAorI2RlZmluZSBGVF9TSVpFT0ZfSU5UICAoMzIgLyBGVF9DSEFSX0JJVCkKKyNlbGlmIEZUX1VJTlRfTUFYID4gMHhGRkZGRkZGRlVMICYmIEZUX1VJTlRfTUFYID09IDB4RkZGRkZGRkZGRkZGRkZGRlVMCisjZGVmaW5lIEZUX1NJWkVPRl9JTlQgICg2NCAvIEZUX0NIQVJfQklUKQorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgc2l6ZSBvZiBgaW50JyB0eXBlISIKKyNlbmRpZgorCisgIC8qIFRoZSBzaXplIG9mIGEgYGxvbmcnIHR5cGUuICBBIGZpdmUtYnl0ZSBgbG9uZycgKGFzIHVzZWQgZS5nLiBvbiB0aGUgKi8KKyAgLyogRE02NDIpIGlzIHJlY29nbml6ZWQgYnV0IGF2b2lkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMT05HX01BWCA9PSAweEZGRkZGRkZGVUwKKyNkZWZpbmUgRlRfU0laRU9GX0xPTkcgICgzMiAvIEZUX0NIQVJfQklUKQorI2VsaWYgRlRfVUxPTkdfTUFYID4gMHhGRkZGRkZGRlVMICYmIEZUX1VMT05HX01BWCA9PSAweEZGRkZGRkZGRkZVTAorI2RlZmluZSBGVF9TSVpFT0ZfTE9ORyAgKDMyIC8gRlRfQ0hBUl9CSVQpCisjZWxpZiBGVF9VTE9OR19NQVggPiAweEZGRkZGRkZGVUwgJiYgRlRfVUxPTkdfTUFYID09IDB4RkZGRkZGRkZGRkZGRkZGRlVMCisjZGVmaW5lIEZUX1NJWkVPRl9MT05HICAoNjQgLyBGVF9DSEFSX0JJVCkKKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIHNpemUgb2YgYGxvbmcnIHR5cGUhIgorI2VuZGlmCisKKworICAvKiBGVF9VTlVTRUQgaXMgYSBtYWNybyB1c2VkIHRvIGluZGljYXRlIHRoYXQgYSBnaXZlbiBwYXJhbWV0ZXIgaXMgbm90ICAqLworICAvKiB1c2VkIC0tIHRoaXMgaXMgb25seSB1c2VkIHRvIGdldCByaWQgb2YgdW5wbGVhc2FudCBjb21waWxlciB3YXJuaW5ncyAqLworI2lmbmRlZiBGVF9VTlVTRUQKKyNkZWZpbmUgRlRfVU5VU0VEKCBhcmcgKSAgKCAoYXJnKSA9IChhcmcpICkKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIEFVVE9NQVRJQyBDT05GSUdVUkFUSU9OIE1BQ1JPUyAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZXNlIG1hY3JvcyBhcmUgY29tcHV0ZWQgZnJvbSB0aGUgb25lcyBkZWZpbmVkIGFib3ZlLiAgRG9uJ3QgdG91Y2ggICAqLworICAvKiB0aGVpciBkZWZpbml0aW9uLCB1bmxlc3MgeW91IGtub3cgcHJlY2lzZWx5IHdoYXQgeW91IGFyZSBkb2luZy4gIE5vICAgKi8KKyAgLyogcG9ydGVyIHNob3VsZCBuZWVkIHRvIG1lc3Mgd2l0aCB0aGVtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTWFjIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFRoaXMgaXMgdGhlIG9ubHkgbmVjZXNzYXJ5IGNoYW5nZSwgc28gaXQgaXMgZGVmaW5lZCBoZXJlIGluc3RlYWQgICAgKi8KKyAgLyogICBwcm92aWRpbmcgYSBuZXcgY29uZmlndXJhdGlvbiBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmIGRlZmluZWQoIF9fQVBQTEVfXyApIHx8ICggZGVmaW5lZCggX19NV0VSS1NfXyApICYmIGRlZmluZWQoIG1hY2ludG9zaCApICkKKyAgLyogbm8gQ2FyYm9uIGZyYW1ld29ya3MgZm9yIDY0Yml0IDEwLjQueCAqLworICAvKiBBdmFpbGFiaWxpdHlNYWNyb3MuaCBpcyBhdmFpbGFibGUgc2luY2UgTWFjIE9TIFggMTAuMiwgICAgICAgICovCisgIC8qIHNvIGd1ZXNzIHRoZSBzeXN0ZW0gdmVyc2lvbiBieSBtYXhpbXVtIGVycm5vIGJlZm9yZSBpbmNsdXNpb24gKi8KKyNpbmNsdWRlIDxlcnJuby5oPgorI2lmZGVmIEVDQU5DRUxFRCAvKiBkZWZpbmVkIHNpbmNlIDEwLjIgKi8KKyNpbmNsdWRlICJBdmFpbGFiaWxpdHlNYWNyb3MuaCIKKyNlbmRpZgorI2lmIGRlZmluZWQoIF9fTFA2NF9fICkgJiYgXAorICAgICggTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gTUFDX09TX1hfVkVSU0lPTl8xMF80ICkKKyN1bmRlZiBGVF9NQUNJTlRPU0gKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKCBfX1NDX18gKSB8fCBkZWZpbmVkKCBfX01SQ19fICkKKyAgLyogQ2xhc3NpYyBNYWNPUyBjb21waWxlcnMgKi8KKyNpbmNsdWRlICJDb25kaXRpb25hbE1hY3Jvcy5oIgorI2lmIFRBUkdFVF9PU19NQUMKKyNkZWZpbmUgRlRfTUFDSU5UT1NIIDEKKyNlbmRpZgorCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJhc2ljX3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9JbnQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHR5cGVkZWYgZm9yIGEgMTZiaXQgc2lnbmVkIGludGVnZXIgdHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIHNob3J0ICBGVF9JbnQxNjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VJbnQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgYSAxNmJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgRlRfVUludDE2OworCisgIC8qICovCisKKworICAvKiB0aGlzICNpZiAwIC4uLiAjZW5kaWYgY2xhdXNlIGlzIGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzICovCisjaWYgMAorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgYSAzMmJpdCBzaWduZWQgaW50ZWdlciB0eXBlLiAgVGhlIHNpemUgZGVwZW5kcyBvbiAgICAqLworICAvKiAgICB0aGUgY29uZmlndXJhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIFhYWCAgRlRfSW50MzI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VSW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgYSAzMmJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUuICBUaGUgc2l6ZSBkZXBlbmRzIG9uICAqLworICAvKiAgICB0aGUgY29uZmlndXJhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgWFhYICBGVF9VSW50MzI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9JbnQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgYSA2NGJpdCBzaWduZWQgaW50ZWdlciB0eXBlLiAgVGhlIHNpemUgZGVwZW5kcyBvbiAgICAqLworICAvKiAgICB0aGUgY29uZmlndXJhdGlvbi4gIE9ubHkgZGVmaW5lZCBpZiB0aGVyZSBpcyByZWFsIDY0Yml0IHN1cHBvcnQ7ICAgKi8KKyAgLyogICAgb3RoZXJ3aXNlLCBpdCBnZXRzIGVtdWxhdGVkIHdpdGggYSBzdHJ1Y3R1cmUgKGlmIG5lY2Vzc2FyeSkuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpZ25lZCBYWFggIEZUX0ludDY0OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVUludDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHR5cGVkZWYgZm9yIGEgNjRiaXQgdW5zaWduZWQgaW50ZWdlciB0eXBlLiAgVGhlIHNpemUgZGVwZW5kcyBvbiAgKi8KKyAgLyogICAgdGhlIGNvbmZpZ3VyYXRpb24uICBPbmx5IGRlZmluZWQgaWYgdGhlcmUgaXMgcmVhbCA2NGJpdCBzdXBwb3J0OyAgICovCisgIC8qICAgIG90aGVyd2lzZSwgaXQgZ2V0cyBlbXVsYXRlZCB3aXRoIGEgc3RydWN0dXJlIChpZiBuZWNlc3NhcnkpLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB1bnNpZ25lZCBYWFggIEZUX1VJbnQ2NDsKKworICAvKiAqLworCisjZW5kaWYKKworI2lmIEZUX1NJWkVPRl9JTlQgPT0gKDMyIC8gRlRfQ0hBUl9CSVQpCisKKyAgdHlwZWRlZiBzaWduZWQgaW50ICAgICAgRlRfSW50MzI7CisgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgIEZUX1VJbnQzMjsKKworI2VsaWYgRlRfU0laRU9GX0xPTkcgPT0gKDMyIC8gRlRfQ0hBUl9CSVQpCisKKyAgdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgRlRfSW50MzI7CisgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgIEZUX1VJbnQzMjsKKworI2Vsc2UKKyNlcnJvciAibm8gMzJiaXQgdHlwZSBmb3VuZCAtLSBwbGVhc2UgY2hlY2sgeW91ciBjb25maWd1cmF0aW9uIGZpbGVzIgorI2VuZGlmCisKKworICAvKiBsb29rIHVwIGFuIGludGVnZXIgdHlwZSB0aGF0IGlzIGF0IGxlYXN0IDMyIGJpdHMgKi8KKyNpZiBGVF9TSVpFT0ZfSU5UID49ICgzMiAvIEZUX0NIQVJfQklUKQorCisgIHR5cGVkZWYgaW50ICAgICAgICAgICAgRlRfRmFzdDsKKyAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgICBGVF9VRmFzdDsKKworI2VsaWYgRlRfU0laRU9GX0xPTkcgPj0gKDMyIC8gRlRfQ0hBUl9CSVQpCisKKyAgdHlwZWRlZiBsb25nICAgICAgICAgICBGVF9GYXN0OworICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgIEZUX1VGYXN0OworCisjZW5kaWYKKworCisgIC8qIGRldGVybWluZSB3aGV0aGVyIHdlIGhhdmUgYSA2NC1iaXQgaW50IHR5cGUgZm9yIHBsYXRmb3JtcyB3aXRob3V0ICovCisgIC8qIEF1dG9jb25mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWYgRlRfU0laRU9GX0xPTkcgPT0gKDY0IC8gRlRfQ0hBUl9CSVQpCisKKyAgLyogRlRfTE9ORzY0IG11c3QgYmUgZGVmaW5lZCBpZiBhIDY0LWJpdCB0eXBlIGlzIGF2YWlsYWJsZSAqLworI2RlZmluZSBGVF9MT05HNjQKKyNkZWZpbmUgRlRfSU5UNjQgICBsb25nCisjZGVmaW5lIEZUX1VJTlQ2NCAgdW5zaWduZWQgbG9uZworCisjZWxpZiBkZWZpbmVkKCBfTVNDX1ZFUiApICYmIF9NU0NfVkVSID49IDkwMCAgLyogVmlzdWFsIEMrKyAoYW5kIEludGVsIEMrKykgKi8KKworICAvKiB0aGlzIGNvbXBpbGVyIHByb3ZpZGVzIHRoZSBfX2ludDY0IHR5cGUgKi8KKyNkZWZpbmUgRlRfTE9ORzY0CisjZGVmaW5lIEZUX0lOVDY0ICAgX19pbnQ2NAorI2RlZmluZSBGVF9VSU5UNjQgIHVuc2lnbmVkIF9faW50NjQKKworI2VsaWYgZGVmaW5lZCggX19CT1JMQU5EQ19fICkgIC8qIEJvcmxhbmQgQysrICovCisKKyAgLyogWFhYWDogV2Ugc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSB2YWx1ZSBvZiBfX0JPUkxBTkRDX18gaW4gb3JkZXIgKi8KKyAgLyogICAgICAgdG8gdGVzdCB0aGUgY29tcGlsZXIgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAvKiB0aGlzIGNvbXBpbGVyIHByb3ZpZGVzIHRoZSBfX2ludDY0IHR5cGUgKi8KKyNkZWZpbmUgRlRfTE9ORzY0CisjZGVmaW5lIEZUX0lOVDY0ICAgX19pbnQ2NAorI2RlZmluZSBGVF9VSU5UNjQgIHVuc2lnbmVkIF9faW50NjQKKworI2VsaWYgZGVmaW5lZCggX19XQVRDT01DX18gKSAgIC8qIFdhdGNvbSBDKysgKi8KKworICAvKiBXYXRjb20gZG9lc24ndCBwcm92aWRlIDY0LWJpdCBkYXRhIHR5cGVzICovCisKKyNlbGlmIGRlZmluZWQoIF9fTVdFUktTX18gKSAgICAvKiBNZXRyb3dlcmtzIENvZGVXYXJyaW9yICovCisKKyNkZWZpbmUgRlRfTE9ORzY0CisjZGVmaW5lIEZUX0lOVDY0ICAgbG9uZyBsb25nIGludAorI2RlZmluZSBGVF9VSU5UNjQgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKKworI2VsaWYgZGVmaW5lZCggX19HTlVDX18gKQorCisgIC8qIEdDQyBwcm92aWRlcyB0aGUgYGxvbmcgbG9uZycgdHlwZSAqLworI2RlZmluZSBGVF9MT05HNjQKKyNkZWZpbmUgRlRfSU5UNjQgICBsb25nIGxvbmcgaW50CisjZGVmaW5lIEZUX1VJTlQ2NCAgdW5zaWduZWQgbG9uZyBsb25nIGludAorCisjZW5kaWYgLyogRlRfU0laRU9GX0xPTkcgPT0gKDY0IC8gRlRfQ0hBUl9CSVQpICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEEgNjQtYml0IGRhdGEgdHlwZSB3aWxsIGNyZWF0ZSBjb21waWxhdGlvbiBwcm9ibGVtcyBpZiB5b3UgY29tcGlsZSAgICAqLworICAvKiBpbiBzdHJpY3QgQU5TSSBtb2RlLiAgVG8gYXZvaWQgdGhlbSwgd2UgZGlzYWJsZSBpdHMgdXNlIGlmIF9fU1REQ19fICAgKi8KKyAgLyogaXMgZGVmaW5lZC4gIFlvdSBjYW4gaG93ZXZlciBpZ25vcmUgdGhpcyBydWxlIGJ5IGRlZmluaW5nIHRoZSAgICAgICAgICovCisgIC8qIEZUX0NPTkZJR19PUFRJT05fRk9SQ0VfSU5UNjQgY29uZmlndXJhdGlvbiBtYWNyby4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZiBkZWZpbmVkKCBGVF9MT05HNjQgKSAmJiAhZGVmaW5lZCggRlRfQ09ORklHX09QVElPTl9GT1JDRV9JTlQ2NCApCisKKyNpZmRlZiBfX1NURENfXworCisgIC8qIHVuZGVmaW5lIHRoZSA2NC1iaXQgbWFjcm9zIGluIHN0cmljdCBBTlNJIGNvbXBpbGF0aW9uIG1vZGUgKi8KKyN1bmRlZiBGVF9MT05HNjQKKyN1bmRlZiBGVF9JTlQ2NAorCisjZW5kaWYgLyogX19TVERDX18gKi8KKworI2VuZGlmIC8qIEZUX0xPTkc2NCAmJiAhRlRfQ09ORklHX09QVElPTl9GT1JDRV9JTlQ2NCAqLworCisjaWZkZWYgRlRfTE9ORzY0CisgIHR5cGVkZWYgRlRfSU5UNjQgICBGVF9JbnQ2NDsKKyAgdHlwZWRlZiBGVF9VSU5UNjQgIEZUX1VJbnQ2NDsKKyNlbmRpZgorCisKKyNkZWZpbmUgRlRfQkVHSU5fU1RNTlQgIGRvIHsKKyNkZWZpbmUgRlRfRU5EX1NUTU5UICAgIH0gd2hpbGUgKCAwICkKKyNkZWZpbmUgRlRfRFVNTVlfU1RNTlQgIEZUX0JFR0lOX1NUTU5UIEZUX0VORF9TVE1OVAorCisKKyNpZm5kZWYgIEZUX0NPTkZJR19PUFRJT05fTk9fQVNTRU1CTEVSCisgIC8qIFByb3ZpZGUgYXNzZW1ibGVyIGZyYWdtZW50cyBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgZnVuY3Rpb25zLiAqLworICAvKiBUaGVzZSBtdXN0IGJlIGRlZmluZWQgYHN0YXRpYyBfX2lubGluZV9fJyB3aXRoIEdDQy4gICAgICAgICAgICAgKi8KKworICAvKipKb2huc29uIGFkZCAhZGVmaW5lZCggX190aHVtYl9fICkqLw0KKyNpZiAoZGVmaW5lZCggX19DQ19BUk0gKSB8fCBkZWZpbmVkKCBfX0FSTUNDX18gKSkmJiAhZGVmaW5lZCggX190aHVtYl9fICkgIC8qIFJWQ1QgKi8KKyNkZWZpbmUgRlRfTVVMRklYX0FTU0VNQkxFUiAgRlRfTXVsRml4X2FybQorCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIHN0YXRpYyBfX2lubGluZSBGVF9JbnQzMgorICBGVF9NdWxGaXhfYXJtKCBGVF9JbnQzMiAgYSwKKyAgICAgICAgICAgICAgICAgRlRfSW50MzIgIGIgKQorICB7CisgICAgcmVnaXN0ZXIgRlRfSW50MzIgIHQsIHQyOworCisKKyAgICBfX2FzbQorICAgIHsKKyAgICAgIHNtdWxsIHQyLCB0LCAgYiwgIGEgICAgICAgICAgIC8qIChsbz10MixoaT10KSA9IGEqYiAqLworICAgICAgbW92ICAgYSwgIHQsICBhc3IgIzMxICAgICAgICAgLyogYSAgID0gKGhpID4+IDMxKSAqLworICAgICAgYWRkICAgYSwgIGEsICAjMHg4MDAwICAgICAgICAgLyogYSAgKz0gMHg4MDAwICovCisgICAgICBhZGRzICB0MiwgdDIsIGEgICAgICAgICAgICAgICAvKiB0MiArPSBhICovCisgICAgICBhZGMgICB0LCAgdCwgICMwICAgICAgICAgICAgICAvKiB0ICArPSBjYXJyeSAqLworICAgICAgbW92ICAgYSwgIHQyLCBsc3IgIzE2ICAgICAgICAgLyogYSAgID0gdDIgPj4gMTYgKi8KKyAgICAgIG9yciAgIGEsICBhLCAgdCwgIGxzbCAjMTYgICAgIC8qIGEgIHw9IHQgPDwgMTYgKi8KKyAgICB9CisgICAgcmV0dXJuIGE7CisgIH0KKworI2VuZGlmIC8qIF9fQ0NfQVJNIHx8IF9fQVJNQ0NfXyAqLworCisKKyNpZmRlZiBfX0dOVUNfXworCisjaWYgZGVmaW5lZCggX19hcm1fXyApICYmICFkZWZpbmVkKCBfX3RodW1iX18gKSAgICAmJiBcCisgICAgISggZGVmaW5lZCggX19DQ19BUk0gKSB8fCBkZWZpbmVkKCBfX0FSTUNDX18gKSApCisjZGVmaW5lIEZUX01VTEZJWF9BU1NFTUJMRVIgIEZUX011bEZpeF9hcm0KKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBzdGF0aWMgX19pbmxpbmVfXyBGVF9JbnQzMgorICBGVF9NdWxGaXhfYXJtKCBGVF9JbnQzMiAgYSwKKyAgICAgICAgICAgICAgICAgRlRfSW50MzIgIGIgKQorICB7CisgICAgcmVnaXN0ZXIgRlRfSW50MzIgIHQsIHQyOworCisKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAic211bGwgICUxLCAlMiwgJTQsICUzXG5cdCIgICAgICAgLyogKGxvPSUxLGhpPSUyKSA9IGEqYiAqLworICAgICAgIm1vdiAgICAlMCwgJTIsIGFzciAjMzFcblx0IiAgICAgIC8qICUwICA9IChoaSA+PiAzMSkgKi8KKyAgICAgICJhZGQgICAgJTAsICUwLCAjMHg4MDAwXG5cdCIgICAgICAvKiAlMCArPSAweDgwMDAgKi8KKyAgICAgICJhZGRzICAgJTEsICUxLCAlMFxuXHQiICAgICAgICAgICAvKiAlMSArPSAlMCAqLworICAgICAgImFkYyAgICAlMiwgJTIsICMwXG5cdCIgICAgICAgICAgIC8qICUyICs9IGNhcnJ5ICovCisgICAgICAibW92ICAgICUwLCAlMSwgbHNyICMxNlxuXHQiICAgICAgLyogJTAgID0gJTEgPj4gMTYgKi8KKyAgICAgICJvcnIgICAgJTAsICUwLCAlMiwgbHNsICMxNlxuXHQiICAvKiAlMCB8PSAlMiA8PCAxNiAqLworICAgICAgOiAiPXIiKGEpLCAiPSZyIih0MiksICI9JnIiKHQpCisgICAgICA6ICJyIihhKSwgInIiKGIpCisgICAgICA6ICJjYyIgKTsKKyAgICByZXR1cm4gYTsKKyAgfQorCisjZW5kaWYgLyogX19hcm1fXyAmJiAhX190aHVtYl9fICYmICEoIF9fQ0NfQVJNIHx8IF9fQVJNQ0NfXyApICovCisKKyNpZiBkZWZpbmVkKCBfX2kzODZfXyApCisjZGVmaW5lIEZUX01VTEZJWF9BU1NFTUJMRVIgIEZUX011bEZpeF9pMzg2CisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgc3RhdGljIF9faW5saW5lX18gRlRfSW50MzIKKyAgRlRfTXVsRml4X2kzODYoIEZUX0ludDMyICBhLAorICAgICAgICAgICAgICAgICAgRlRfSW50MzIgIGIgKQorICB7CisgICAgcmVnaXN0ZXIgRlRfSW50MzIgIHJlc3VsdDsKKworCisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgImltdWwgICUlZWR4XG4iCisgICAgICAibW92bCAgJSVlZHgsICUlZWN4XG4iCisgICAgICAic2FybCAgJDMxLCAlJWVjeFxuIgorICAgICAgImFkZGwgICQweDgwMDAsICUlZWN4XG4iCisgICAgICAiYWRkbCAgJSVlY3gsICUlZWF4XG4iCisgICAgICAiYWRjbCAgJDAsICUlZWR4XG4iCisgICAgICAic2hybCAgJDE2LCAlJWVheFxuIgorICAgICAgInNobGwgICQxNiwgJSVlZHhcbiIKKyAgICAgICJhZGRsICAlJWVkeCwgJSVlYXhcbiIKKyAgICAgIDogIj1hIihyZXN1bHQpLCAiPWQiKGIpCisgICAgICA6ICJhIihhKSwgImQiKGIpCisgICAgICA6ICIlZWN4IiwgImNjIiApOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworI2VuZGlmIC8qIGkzODYgKi8KKworI2VuZGlmIC8qIF9fR05VQ19fICovCisKKworI2lmZGVmIF9NU0NfVkVSIC8qIFZpc3VhbCBDKysgKi8KKworI2lmZGVmIF9NX0lYODYKKworI2RlZmluZSBGVF9NVUxGSVhfQVNTRU1CTEVSICBGVF9NdWxGaXhfaTM4NgorCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIHN0YXRpYyBfX2lubGluZSBGVF9JbnQzMgorICBGVF9NdWxGaXhfaTM4NiggRlRfSW50MzIgIGEsCisgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgYiApCisgIHsKKyAgICByZWdpc3RlciBGVF9JbnQzMiAgcmVzdWx0OworCisgICAgX19hc20KKyAgICB7CisgICAgICBtb3YgZWF4LCBhCisgICAgICBtb3YgZWR4LCBiCisgICAgICBpbXVsIGVkeAorICAgICAgbW92IGVjeCwgZWR4CisgICAgICBzYXIgZWN4LCAzMQorICAgICAgYWRkIGVjeCwgODAwMGgKKyAgICAgIGFkZCBlYXgsIGVjeAorICAgICAgYWRjIGVkeCwgMAorICAgICAgc2hyIGVheCwgMTYKKyAgICAgIHNobCBlZHgsIDE2CisgICAgICBhZGQgZWF4LCBlZHgKKyAgICAgIG1vdiByZXN1bHQsIGVheAorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyNlbmRpZiAvKiBfTV9JWDg2ICovCisKKyNlbmRpZiAvKiBfTVNDX1ZFUiAqLworCisjZW5kaWYgLyogIUZUX0NPTkZJR19PUFRJT05fTk9fQVNTRU1CTEVSICovCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5MSU5FX01VTEZJWAorI2lmZGVmIEZUX01VTEZJWF9BU1NFTUJMRVIKKyNkZWZpbmUgRlRfTVVMRklYX0lOTElORUQgIEZUX01VTEZJWF9BU1NFTUJMRVIKKyNlbmRpZgorI2VuZGlmCisKKworI2lmZGVmIEZUX01BS0VfT1BUSU9OX1NJTkdMRV9PQkpFQ1QKKworI2RlZmluZSBGVF9MT0NBTCggeCApICAgICAgc3RhdGljICB4CisjZGVmaW5lIEZUX0xPQ0FMX0RFRiggeCApICBzdGF0aWMgIHgKKworI2Vsc2UKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjZGVmaW5lIEZUX0xPQ0FMKCB4ICkgICAgICBleHRlcm4gIkMiICB4CisjZGVmaW5lIEZUX0xPQ0FMX0RFRiggeCApICBleHRlcm4gIkMiICB4CisjZWxzZQorI2RlZmluZSBGVF9MT0NBTCggeCApICAgICAgZXh0ZXJuICB4CisjZGVmaW5lIEZUX0xPQ0FMX0RFRiggeCApICB4CisjZW5kaWYKKworI2VuZGlmIC8qIEZUX01BS0VfT1BUSU9OX1NJTkdMRV9PQkpFQ1QgKi8KKworCisjaWZuZGVmIEZUX0JBU0UKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjZGVmaW5lIEZUX0JBU0UoIHggKSAgZXh0ZXJuICJDIiAgeAorI2Vsc2UKKyNkZWZpbmUgRlRfQkFTRSggeCApICBleHRlcm4gIHgKKyNlbmRpZgorCisjZW5kaWYgLyogIUZUX0JBU0UgKi8KKworCisjaWZuZGVmIEZUX0JBU0VfREVGCisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9CQVNFX0RFRiggeCApICB4CisjZWxzZQorI2RlZmluZSBGVF9CQVNFX0RFRiggeCApICB4CisjZW5kaWYKKworI2VuZGlmIC8qICFGVF9CQVNFX0RFRiAqLworCisKKyNpZm5kZWYgRlRfRVhQT1JUCisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9FWFBPUlQoIHggKSAgZXh0ZXJuICJDIiAgeAorI2Vsc2UKKyNkZWZpbmUgRlRfRVhQT1JUKCB4ICkgIGV4dGVybiAgeAorI2VuZGlmCisKKyNlbmRpZiAvKiAhRlRfRVhQT1JUICovCisKKworI2lmbmRlZiBGVF9FWFBPUlRfREVGCisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9FWFBPUlRfREVGKCB4ICkgIGV4dGVybiAiQyIgIHgKKyNlbHNlCisjZGVmaW5lIEZUX0VYUE9SVF9ERUYoIHggKSAgZXh0ZXJuICB4CisjZW5kaWYKKworI2VuZGlmIC8qICFGVF9FWFBPUlRfREVGICovCisKKworI2lmbmRlZiBGVF9FWFBPUlRfVkFSCisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9FWFBPUlRfVkFSKCB4ICkgIGV4dGVybiAiQyIgIHgKKyNlbHNlCisjZGVmaW5lIEZUX0VYUE9SVF9WQVIoIHggKSAgZXh0ZXJuICB4CisjZW5kaWYKKworI2VuZGlmIC8qICFGVF9FWFBPUlRfVkFSICovCisKKyAgLyogVGhlIGZvbGxvd2luZyBtYWNyb3MgYXJlIG5lZWRlZCB0byBjb21waWxlIHRoZSBsaWJyYXJ5IHdpdGggYSAgICovCisgIC8qIEMrKyBjb21waWxlciBhbmQgd2l0aCAxNmJpdCBjb21waWxlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAvKiBUaGlzIGlzIHNwZWNpYWwuICBXaXRoaW4gQysrLCB5b3UgbXVzdCBzcGVjaWZ5IGBleHRlcm4gIkMiJyBmb3IgKi8KKyAgLyogZnVuY3Rpb25zIHdoaWNoIGFyZSB1c2VkIHZpYSBmdW5jdGlvbiBwb2ludGVycywgYW5kIHlvdSBhbHNvICAgICovCisgIC8qIG11c3QgZG8gdGhhdCBmb3Igc3RydWN0dXJlcyB3aGljaCBjb250YWluIGZ1bmN0aW9uIHBvaW50ZXJzIHRvICAqLworICAvKiBhc3N1cmUgQyBsaW5rYWdlIC0tIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGhhdmUgKGxvY2FsKSBhbm9ueW1vdXMgKi8KKyAgLyogZnVuY3Rpb25zIHdoaWNoIGFyZSBhY2Nlc3NlZCBieSAoZ2xvYmFsKSBmdW5jdGlvbiBwb2ludGVycy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRlRfQ0FMTEJBQ0tfREVGIGlzIHVzZWQgdG8gX2RlZmluZV8gYSBjYWxsYmFjayBmdW5jdGlvbi4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGVF9DQUxMQkFDS19UQUJMRSBpcyB1c2VkIHRvIF9kZWNsYXJlXyBhIGNvbnN0YW50IHZhcmlhYmxlIHRoYXQgKi8KKyAgLyogY29udGFpbnMgcG9pbnRlcnMgdG8gY2FsbGJhY2sgZnVuY3Rpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGVF9DQUxMQkFDS19UQUJMRV9ERUYgaXMgdXNlZCB0byBfZGVmaW5lXyBhIGNvbnN0YW50IHZhcmlhYmxlICAgKi8KKyAgLyogdGhhdCBjb250YWlucyBwb2ludGVycyB0byBjYWxsYmFjayBmdW5jdGlvbnMuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU29tZSAxNmJpdCBjb21waWxlcnMgaGF2ZSB0byByZWRlZmluZSB0aGVzZSBtYWNyb3MgdG8gaW5zZXJ0ICAgICovCisgIC8qIHRoZSBpbmZhbW91cyBgX2NkZWNsJyBvciBgX19mYXN0Y2FsbCcgZGVjbGFyYXRpb25zLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfQ0FMTEJBQ0tfREVGCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfQ0FMTEJBQ0tfREVGKCB4ICkgIGV4dGVybiAiQyIgIHgKKyNlbHNlCisjZGVmaW5lIEZUX0NBTExCQUNLX0RFRiggeCApICBzdGF0aWMgIHgKKyNlbmRpZgorI2VuZGlmIC8qIEZUX0NBTExCQUNLX0RFRiAqLworCisjaWZuZGVmIEZUX0NBTExCQUNLX1RBQkxFCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfQ0FMTEJBQ0tfVEFCTEUgICAgICBleHRlcm4gIkMiCisjZGVmaW5lIEZUX0NBTExCQUNLX1RBQkxFX0RFRiAgZXh0ZXJuICJDIgorI2Vsc2UKKyNkZWZpbmUgRlRfQ0FMTEJBQ0tfVEFCTEUgICAgICBleHRlcm4KKyNkZWZpbmUgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGICAvKiBub3RoaW5nICovCisjZW5kaWYKKyNlbmRpZiAvKiBGVF9DQUxMQkFDS19UQUJMRSAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19GVENPTkZJR19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NzkxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oCkBAIC0wLDAgKzEsODMyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGhlYWRlci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQnVpbGQgbWFjcm9zIG9mIHRoZSBGcmVlVHlwZSAyIGxpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwOCwgMjAxMCwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fRlRfSEVBREVSX0hfXworI2RlZmluZSBfX0ZUX0hFQURFUl9IX18KKworCisgIC8qQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE1hY3JvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0JFR0lOX0hFQURFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgbWFjcm8gaXMgdXNlZCBpbiBhc3NvY2lhdGlvbiB3aXRoIEBGVF9FTkRfSEVBREVSIGluIGhlYWRlciAgICAqLworICAvKiAgICBmaWxlcyB0byBlbnN1cmUgdGhhdCB0aGUgZGVjbGFyYXRpb25zIHdpdGhpbiBhcmUgcHJvcGVybHkgICAgICAgICAgKi8KKyAgLyogICAgZW5jYXBzdWxhdGVkIGluIGFuIGBleHRlcm4gIkMiIHsgLi4gfScgYmxvY2sgd2hlbiBpbmNsdWRlZCBmcm9tIGEgICovCisgIC8qICAgIEMrKyBjb21waWxlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9CRUdJTl9IRUFERVIgIGV4dGVybiAiQyIgeworI2Vsc2UKKyNkZWZpbmUgRlRfQkVHSU5fSEVBREVSICAvKiBub3RoaW5nICovCisjZW5kaWYKKworCisgIC8qQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE1hY3JvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VORF9IRUFERVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgbWFjcm8gaXMgdXNlZCBpbiBhc3NvY2lhdGlvbiB3aXRoIEBGVF9CRUdJTl9IRUFERVIgaW4gaGVhZGVyICAqLworICAvKiAgICBmaWxlcyB0byBlbnN1cmUgdGhhdCB0aGUgZGVjbGFyYXRpb25zIHdpdGhpbiBhcmUgcHJvcGVybHkgICAgICAgICAgKi8KKyAgLyogICAgZW5jYXBzdWxhdGVkIGluIGFuIGBleHRlcm4gIkMiIHsgLi4gfScgYmxvY2sgd2hlbiBpbmNsdWRlZCBmcm9tIGEgICovCisgIC8qICAgIEMrKyBjb21waWxlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9FTkRfSEVBREVSICB9CisjZWxzZQorI2RlZmluZSBGVF9FTkRfSEVBREVSICAvKiBub3RoaW5nICovCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQWxpYXNlcyBmb3IgdGhlIEZyZWVUeXBlIDIgcHVibGljIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBoZWFkZXJfZmlsZV9tYWNyb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBIZWFkZXIgRmlsZSBNYWNyb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBNYWNybyBkZWZpbml0aW9ucyB1c2VkIHRvICNpbmNsdWRlIHNwZWNpZmljIGhlYWRlciBmaWxlcy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgZGVmaW5lZCB0byB0aGUgbmFtZSBvZiBzcGVjaWZpYyAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGV+MiBoZWFkZXIgZmlsZXMuICBUaGV5IGNhbiBiZSB1c2VkIGRpcmVjdGx5IGluICNpbmNsdWRlICAgICovCisgIC8qICAgIHN0YXRlbWVudHMgYXMgaW46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgI2luY2x1ZGUgIi4uL2ZyZWV0eXBlLmgiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgI2luY2x1ZGUgIi4uL2Z0bW0uaCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgI2luY2x1ZGUgIi4uL2Z0Z2x5cGguaCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGVyZSBhcmUgc2V2ZXJhbCByZWFzb25zIHdoeSB3ZSBhcmUgbm93IHVzaW5nIG1hY3JvcyB0byBuYW1lICAgICAgKi8KKyAgLyogICAgcHVibGljIGhlYWRlciBmaWxlcy4gIFRoZSBmaXJzdCBvbmUgaXMgdGhhdCBzdWNoIG1hY3JvcyBhcmUgbm90ICAgICovCisgIC8qICAgIGxpbWl0ZWQgdG8gdGhlIGluZmFtb3VzIDguM35uYW1pbmcgcnVsZSByZXF1aXJlZCBieSBET1MgKGFuZCAgICAgICAqLworICAvKiAgICBgRlRfTVVMVElQTEVfTUFTVEVSU19IJyBpcyBhIGxvdCBtb3JlIG1lYW5pbmdmdWwgdGhhbiBgZnRtbS5oJykuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBzZWNvbmQgcmVhc29uIGlzIHRoYXQgaXQgYWxsb3dzIGZvciBtb3JlIGZsZXhpYmlsaXR5IGluIHRoZSAgICAqLworICAvKiAgICB3YXkgRnJlZVR5cGV+MiBpcyBpbnN0YWxsZWQgb24gYSBnaXZlbiBzeXN0ZW0uICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyogY29uZmlndXJhdGlvbiBmaWxlcyAqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9DT05GSUdfQ09ORklHX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZworICAgKiAgIEZyZWVUeXBlfjIgY29uZmlndXJhdGlvbiBkYXRhLgorICAgKgorICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX0NPTkZJR19ICisjZGVmaW5lIEZUX0NPTkZJR19DT05GSUdfSCAgPGZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oPgorI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQ09ORklHX1NUQU5EQVJEX0xJQlJBUllfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nCisgICAqICAgRnJlZVR5cGV+MiBpbnRlcmZhY2UgdG8gdGhlIHN0YW5kYXJkIEMgbGlicmFyeSBmdW5jdGlvbnMuCisgICAqCisgICAqLworI2lmbmRlZiBGVF9DT05GSUdfU1RBTkRBUkRfTElCUkFSWV9ICisjZGVmaW5lIEZUX0NPTkZJR19TVEFOREFSRF9MSUJSQVJZX0ggIDxmcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaD4KKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0NPTkZJR19PUFRJT05TX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZworICAgKiAgIEZyZWVUeXBlfjIgcHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisgICAqCisgICAqLworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OU19ICisjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05TX0ggIDxmcmVldHlwZS9jb25maWcvZnRvcHRpb24uaD4KKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0NPTkZJR19NT0RVTEVTX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBsaXN0IG9mIEZyZWVUeXBlfjIgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCB0byBuZXcgbGlicmFyeQorICAgKiAgIGluc3RhbmNlcyBpbiBARlRfSW5pdF9GcmVlVHlwZS4KKyAgICoKKyAgICovCisjaWZuZGVmIEZUX0NPTkZJR19NT0RVTEVTX0gKKyNkZWZpbmUgRlRfQ09ORklHX01PRFVMRVNfSCAgPGZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oPgorI2VuZGlmCisKKyAgLyogKi8KKworICAvKiBwdWJsaWMgaGVhZGVycyAqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9GUkVFVFlQRV9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgYmFzZSBGcmVlVHlwZX4yIEFQSS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0ZSRUVUWVBFX0ggIDxmcmVldHlwZS9mcmVldHlwZS5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0VSUk9SU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgbGlzdCBvZiBGcmVlVHlwZX4yIGVycm9yIGNvZGVzIChhbmQgbWVzc2FnZXMpLgorICAgKgorICAgKiAgIEl0IGlzIGluY2x1ZGVkIGJ5IEBGVF9GUkVFVFlQRV9ILgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfRVJST1JTX0ggIDxmcmVldHlwZS9mdGVycm9ycy5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX01PRFVMRV9FUlJPUlNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGxpc3Qgb2YgRnJlZVR5cGV+MiBtb2R1bGUgZXJyb3Igb2Zmc2V0cyAoYW5kIG1lc3NhZ2VzKS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX01PRFVMRV9FUlJPUlNfSCAgPGZyZWV0eXBlL2Z0bW9kZXJyLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfU1lTVEVNX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBGcmVlVHlwZX4yIGludGVyZmFjZSB0byBsb3ctbGV2ZWwgb3BlcmF0aW9ucyAoaS5lLiwgbWVtb3J5IG1hbmFnZW1lbnQKKyAgICogICBhbmQgc3RyZWFtIGkvbykuCisgICAqCisgICAqICAgSXQgaXMgaW5jbHVkZWQgYnkgQEZUX0ZSRUVUWVBFX0guCisgICAqCisgICAqLworI2RlZmluZSBGVF9TWVNURU1fSCAgPGZyZWV0eXBlL2Z0c3lzdGVtLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfSU1BR0VfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHR5cGUKKyAgICogICBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGdseXBoIGltYWdlcyAoaS5lLiwgYml0bWFwcywgb3V0bGluZXMsCisgICAqICAgc2Nhbi1jb252ZXJ0ZXIgcGFyYW1ldGVycykuCisgICAqCisgICAqICAgSXQgaXMgaW5jbHVkZWQgYnkgQEZUX0ZSRUVUWVBFX0guCisgICAqCisgICAqLworI2RlZmluZSBGVF9JTUFHRV9IICA8ZnJlZXR5cGUvZnRpbWFnZS5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1RZUEVTX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBiYXNpYyBkYXRhIHR5cGVzIGRlZmluZWQgYnkgRnJlZVR5cGV+Mi4KKyAgICoKKyAgICogICBJdCBpcyBpbmNsdWRlZCBieSBARlRfRlJFRVRZUEVfSC4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1RZUEVTX0ggIDxmcmVldHlwZS9mdHR5cGVzLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfTElTVF9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgbGlzdCBtYW5hZ2VtZW50IEFQSSBvZiBGcmVlVHlwZX4yLgorICAgKgorICAgKiAgIChNb3N0IGFwcGxpY2F0aW9ucyB3aWxsIG5ldmVyIG5lZWQgdG8gaW5jbHVkZSB0aGlzIGZpbGUuKQorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfTElTVF9IICA8ZnJlZXR5cGUvZnRsaXN0Lmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfT1VUTElORV9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgc2NhbGFibGUgb3V0bGluZSBtYW5hZ2VtZW50IEFQSSBvZiBGcmVlVHlwZX4yLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfT1VUTElORV9IICA8ZnJlZXR5cGUvZnRvdXRsbi5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1NJWkVTX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBBUEkgd2hpY2ggbWFuYWdlcyBtdWx0aXBsZSBARlRfU2l6ZSBvYmplY3RzIHBlciBmYWNlLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfU0laRVNfSCAgPGZyZWV0eXBlL2Z0c2l6ZXMuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9NT0RVTEVfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIG1vZHVsZSBtYW5hZ2VtZW50IEFQSSBvZiBGcmVlVHlwZX4yLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfTU9EVUxFX0ggIDxmcmVldHlwZS9mdG1vZGFwaS5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1JFTkRFUl9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgcmVuZGVyZXIgbW9kdWxlIG1hbmFnZW1lbnQgQVBJIG9mIEZyZWVUeXBlfjIuCisgICAqCisgICAqLworI2RlZmluZSBGVF9SRU5ERVJfSCAgPGZyZWV0eXBlL2Z0cmVuZGVyLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQVVUT0hJTlRFUl9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcKKyAgICogICBzdHJ1Y3R1cmVzIGFuZCBtYWNyb3MgcmVsYXRlZCB0byB0aGUgYXV0by1oaW50aW5nIG1vZHVsZS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FVVE9ISU5URVJfSCAgPGZyZWV0eXBlL2Z0YXV0b2guaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9DRkZfRFJJVkVSX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZworICAgKiAgIHN0cnVjdHVyZXMgYW5kIG1hY3JvcyByZWxhdGVkIHRvIHRoZSBDRkYgZHJpdmVyIG1vZHVsZS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0NGRl9EUklWRVJfSCAgPGZyZWV0eXBlL2Z0Y2ZmZHJ2Lmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfVFJVRVRZUEVfRFJJVkVSX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZworICAgKiAgIHN0cnVjdHVyZXMgYW5kIG1hY3JvcyByZWxhdGVkIHRvIHRoZSBUcnVlVHlwZSBkcml2ZXIgbW9kdWxlLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfVFJVRVRZUEVfRFJJVkVSX0ggIDxmcmVldHlwZS9mdHR0ZHJ2Lmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfVFlQRTFfVEFCTEVTX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICB0eXBlcyBhbmQgQVBJIHNwZWNpZmljIHRvIHRoZSBUeXBlfjEgZm9ybWF0LgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfVFlQRTFfVEFCTEVTX0ggIDxmcmVldHlwZS90MXRhYmxlcy5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1RSVUVUWVBFX0lEU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgZW51bWVyYXRpb24gdmFsdWVzIHdoaWNoIGlkZW50aWZ5IG5hbWUgc3RyaW5ncywgbGFuZ3VhZ2VzLCBlbmNvZGluZ3MsCisgICAqICAgZXRjLiAgVGhpcyBmaWxlIHJlYWxseSBjb250YWlucyBhIF9sYXJnZV8gc2V0IG9mIGNvbnN0YW50IG1hY3JvCisgICAqICAgZGVmaW5pdGlvbnMsIHRha2VuIGZyb20gdGhlIFRydWVUeXBlIGFuZCBPcGVuVHlwZSBzcGVjaWZpY2F0aW9ucy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1RSVUVUWVBFX0lEU19IICA8ZnJlZXR5cGUvdHRuYW1laWQuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9UUlVFVFlQRV9UQUJMRVNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIHR5cGVzIGFuZCBBUEkgc3BlY2lmaWMgdG8gdGhlIFRydWVUeXBlIChhcyB3ZWxsIGFzIE9wZW5UeXBlKSBmb3JtYXQuCisgICAqCisgICAqLworI2RlZmluZSBGVF9UUlVFVFlQRV9UQUJMRVNfSCAgPGZyZWV0eXBlL3R0dGFibGVzLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfVFJVRVRZUEVfVEFHU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgZGVmaW5pdGlvbnMgb2YgVHJ1ZVR5cGUgZm91ci1ieXRlIGB0YWdzJyB3aGljaCBpZGVudGlmeSBibG9ja3MgaW4KKyAgICogICBTRk5ULWJhc2VkIGZvbnQgZm9ybWF0cyAoaS5lLiwgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlKS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1RSVUVUWVBFX1RBR1NfSCAgPGZyZWV0eXBlL3R0dGFncy5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0JERl9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgZGVmaW5pdGlvbnMgb2YgYW4gQVBJIHdoaWNoIGFjY2Vzc2VzIEJERi1zcGVjaWZpYyBzdHJpbmdzIGZyb20gYQorICAgKiAgIGZhY2UuCisgICAqCisgICAqLworI2RlZmluZSBGVF9CREZfSCAgPGZyZWV0eXBlL2Z0YmRmLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQ0lEX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBkZWZpbml0aW9ucyBvZiBhbiBBUEkgd2hpY2ggYWNjZXNzIENJRCBmb250IGluZm9ybWF0aW9uIGZyb20gYQorICAgKiAgIGZhY2UuCisgICAqCisgICAqLworI2RlZmluZSBGVF9DSURfSCAgPGZyZWV0eXBlL2Z0Y2lkLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfR1pJUF9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgZGVmaW5pdGlvbnMgb2YgYW4gQVBJIHdoaWNoIHN1cHBvcnRzIGd6aXAtY29tcHJlc3NlZCBmaWxlcy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0daSVBfSCAgPGZyZWV0eXBlL2Z0Z3ppcC5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0xaV19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgZGVmaW5pdGlvbnMgb2YgYW4gQVBJIHdoaWNoIHN1cHBvcnRzIExaVy1jb21wcmVzc2VkIGZpbGVzLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfTFpXX0ggIDxmcmVldHlwZS9mdGx6dy5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0JaSVAyX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBkZWZpbml0aW9ucyBvZiBhbiBBUEkgd2hpY2ggc3VwcG9ydHMgYnppcDItY29tcHJlc3NlZCBmaWxlcy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0JaSVAyX0ggIDxmcmVldHlwZS9mdGJ6aXAyLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfV0lORk9OVFNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGRlZmluaXRpb25zIG9mIGFuIEFQSSB3aGljaCBzdXBwb3J0cyBXaW5kb3dzIEZOVCBmaWxlcy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1dJTkZPTlRTX0ggICA8ZnJlZXR5cGUvZnR3aW5mbnQuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9HTFlQSF9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgQVBJIG9mIHRoZSBvcHRpb25hbCBnbHlwaCBtYW5hZ2VtZW50IGNvbXBvbmVudC4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0dMWVBIX0ggIDxmcmVldHlwZS9mdGdseXBoLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQklUTUFQX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBBUEkgb2YgdGhlIG9wdGlvbmFsIGJpdG1hcCBjb252ZXJzaW9uIGNvbXBvbmVudC4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0JJVE1BUF9IICA8ZnJlZXR5cGUvZnRiaXRtYXAuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9CQk9YX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBBUEkgb2YgdGhlIG9wdGlvbmFsIGV4YWN0IGJvdW5kaW5nIGJveCBjb21wdXRhdGlvbiByb3V0aW5lcy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0JCT1hfSCAgPGZyZWV0eXBlL2Z0YmJveC5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0NBQ0hFX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBBUEkgb2YgdGhlIG9wdGlvbmFsIEZyZWVUeXBlfjIgY2FjaGUgc3ViLXN5c3RlbS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0NBQ0hFX0ggIDxmcmVldHlwZS9mdGNhY2hlLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQ0FDSEVfSU1BR0VfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGBnbHlwaCBpbWFnZScgQVBJIG9mIHRoZSBGcmVlVHlwZX4yIGNhY2hlIHN1Yi1zeXN0ZW0uCisgICAqCisgICAqICAgSXQgaXMgdXNlZCB0byBkZWZpbmUgYSBjYWNoZSBmb3IgQEZUX0dseXBoIGVsZW1lbnRzLiAgWW91IGNhbiBhbHNvCisgICAqICAgdXNlIHRoZSBBUEkgZGVmaW5lZCBpbiBARlRfQ0FDSEVfU01BTExfQklUTUFQU19IIGlmIHlvdSBvbmx5IG5lZWQgdG8KKyAgICogICBzdG9yZSBzbWFsbCBnbHlwaCBiaXRtYXBzLCBhcyBpdCB3aWxsIHVzZSBsZXNzIG1lbW9yeS4KKyAgICoKKyAgICogICBUaGlzIG1hY3JvIGlzIGRlcHJlY2F0ZWQuICBTaW1wbHkgaW5jbHVkZSBARlRfQ0FDSEVfSCB0byBoYXZlIGFsbAorICAgKiAgIGdseXBoIGltYWdlLXJlbGF0ZWQgY2FjaGUgZGVjbGFyYXRpb25zLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfQ0FDSEVfSU1BR0VfSCAgRlRfQ0FDSEVfSAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0NBQ0hFX1NNQUxMX0JJVE1BUFNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGBzbWFsbCBiaXRtYXBzJyBBUEkgb2YgdGhlIEZyZWVUeXBlfjIgY2FjaGUgc3ViLXN5c3RlbS4KKyAgICoKKyAgICogICBJdCBpcyB1c2VkIHRvIGRlZmluZSBhIGNhY2hlIGZvciBzbWFsbCBnbHlwaCBiaXRtYXBzIGluIGEgcmVsYXRpdmVseQorICAgKiAgIG1lbW9yeS1lZmZpY2llbnQgd2F5LiAgWW91IGNhbiBhbHNvIHVzZSB0aGUgQVBJIGRlZmluZWQgaW4KKyAgICogICBARlRfQ0FDSEVfSU1BR0VfSCBpZiB5b3Ugd2FudCB0byBjYWNoZSBhcmJpdHJhcnkgZ2x5cGggaW1hZ2VzLAorICAgKiAgIGluY2x1ZGluZyBzY2FsYWJsZSBvdXRsaW5lcy4KKyAgICoKKyAgICogICBUaGlzIG1hY3JvIGlzIGRlcHJlY2F0ZWQuICBTaW1wbHkgaW5jbHVkZSBARlRfQ0FDSEVfSCB0byBoYXZlIGFsbAorICAgKiAgIHNtYWxsIGJpdG1hcHMtcmVsYXRlZCBjYWNoZSBkZWNsYXJhdGlvbnMuCisgICAqCisgICAqLworI2RlZmluZSBGVF9DQUNIRV9TTUFMTF9CSVRNQVBTX0ggIEZUX0NBQ0hFX0gKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9DQUNIRV9DSEFSTUFQX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBgY2hhcm1hcCcgQVBJIG9mIHRoZSBGcmVlVHlwZX4yIGNhY2hlIHN1Yi1zeXN0ZW0uCisgICAqCisgICAqICAgVGhpcyBtYWNybyBpcyBkZXByZWNhdGVkLiAgU2ltcGx5IGluY2x1ZGUgQEZUX0NBQ0hFX0ggdG8gaGF2ZSBhbGwKKyAgICogICBjaGFybWFwLWJhc2VkIGNhY2hlIGRlY2xhcmF0aW9ucy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0NBQ0hFX0NIQVJNQVBfSCAgRlRfQ0FDSEVfSAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX01BQ19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgTWFjaW50b3NoLXNwZWNpZmljIEZyZWVUeXBlfjIgQVBJLiAgVGhlIGxhdHRlciBpcyB1c2VkIHRvIGFjY2VzcworICAgKiAgIGZvbnRzIGVtYmVkZGVkIGluIHJlc291cmNlIGZvcmtzLgorICAgKgorICAgKiAgIFRoaXMgaGVhZGVyIGZpbGUgbXVzdCBiZSBleHBsaWNpdGx5IGluY2x1ZGVkIGJ5IGNsaWVudCBhcHBsaWNhdGlvbnMKKyAgICogICBjb21waWxlZCBvbiB0aGUgTWFjIChub3RlIHRoYXQgdGhlIGJhc2UgQVBJIHN0aWxsIHdvcmtzIHRob3VnaCkuCisgICAqCisgICAqLworI2RlZmluZSBGVF9NQUNfSCAgPGZyZWV0eXBlL2Z0bWFjLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfTVVMVElQTEVfTUFTVEVSU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgb3B0aW9uYWwgbXVsdGlwbGUtbWFzdGVycyBtYW5hZ2VtZW50IEFQSSBvZiBGcmVlVHlwZX4yLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfTVVMVElQTEVfTUFTVEVSU19IICA8ZnJlZXR5cGUvZnRtbS5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1NGTlRfTkFNRVNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIG9wdGlvbmFsIEZyZWVUeXBlfjIgQVBJIHdoaWNoIGFjY2Vzc2VzIGVtYmVkZGVkIGBuYW1lJyBzdHJpbmdzIGluCisgICAqICAgU0ZOVC1iYXNlZCBmb250IGZvcm1hdHMgKGkuZS4sIFRydWVUeXBlIGFuZCBPcGVuVHlwZSkuCisgICAqCisgICAqLworI2RlZmluZSBGVF9TRk5UX05BTUVTX0ggIDxmcmVldHlwZS9mdHNuYW1lcy5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX09QRU5UWVBFX1ZBTElEQVRFX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBvcHRpb25hbCBGcmVlVHlwZX4yIEFQSSB3aGljaCB2YWxpZGF0ZXMgT3BlblR5cGUgdGFibGVzIChCQVNFLCBHREVGLAorICAgKiAgIEdQT1MsIEdTVUIsIEpTVEYpLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfT1BFTlRZUEVfVkFMSURBVEVfSCAgPGZyZWV0eXBlL2Z0b3R2YWwuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9HWF9WQUxJREFURV9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgb3B0aW9uYWwgRnJlZVR5cGV+MiBBUEkgd2hpY2ggdmFsaWRhdGVzIFRydWVUeXBlR1gvQUFUIHRhYmxlcyAoZmVhdCwKKyAgICogICBtb3J0LCBtb3J4LCBic2xuLCBqdXN0LCBrZXJuLCBvcGJkLCB0cmFrLCBwcm9wKS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0dYX1ZBTElEQVRFX0ggIDxmcmVldHlwZS9mdGd4dmFsLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfUEZSX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBGcmVlVHlwZX4yIEFQSSB3aGljaCBhY2Nlc3NlcyBQRlItc3BlY2lmaWMgZGF0YS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1BGUl9IICA8ZnJlZXR5cGUvZnRwZnIuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9TVFJPS0VSX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBGcmVlVHlwZX4yIEFQSSB3aGljaCBwcm92aWRlcyBmdW5jdGlvbnMgdG8gc3Ryb2tlIG91dGxpbmUgcGF0aHMuCisgICAqLworI2RlZmluZSBGVF9TVFJPS0VSX0ggIDxmcmVldHlwZS9mdHN0cm9rZS5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1NZTlRIRVNJU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgRnJlZVR5cGV+MiBBUEkgd2hpY2ggcGVyZm9ybXMgYXJ0aWZpY2lhbCBvYmxpcXVpbmcgYW5kIGVtYm9sZGVuaW5nLgorICAgKi8KKyNkZWZpbmUgRlRfU1lOVEhFU0lTX0ggIDxmcmVldHlwZS9mdHN5bnRoLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfWEZSRUU4Nl9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgRnJlZVR5cGV+MiBBUEkgd2hpY2ggcHJvdmlkZXMgZnVuY3Rpb25zIHNwZWNpZmljIHRvIHRoZSBYRnJlZTg2IGFuZAorICAgKiAgIFguT3JnIFgxMSBzZXJ2ZXJzLgorICAgKi8KKyNkZWZpbmUgRlRfWEZSRUU4Nl9IICA8ZnJlZXR5cGUvZnR4Zjg2Lmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfVFJJR09OT01FVFJZX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBGcmVlVHlwZX4yIEFQSSB3aGljaCBwZXJmb3JtcyB0cmlnb25vbWV0cmljIGNvbXB1dGF0aW9ucyAoZS5nLiwKKyAgICogICBjb3NpbmVzIGFuZCBhcmMgdGFuZ2VudHMpLgorICAgKi8KKyNkZWZpbmUgRlRfVFJJR09OT01FVFJZX0ggIDxmcmVldHlwZS9mdHRyaWdvbi5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0xDRF9GSUxURVJfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIEZyZWVUeXBlfjIgQVBJIHdoaWNoIHBlcmZvcm1zIGNvbG9yIGZpbHRlcmluZyBmb3Igc3VicGl4ZWwgcmVuZGVyaW5nLgorICAgKi8KKyNkZWZpbmUgRlRfTENEX0ZJTFRFUl9IICA8ZnJlZXR5cGUvZnRsY2RmaWwuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9VTlBBVEVOVEVEX0hJTlRJTkdfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIEZyZWVUeXBlfjIgQVBJIHdoaWNoIHBlcmZvcm1zIGNvbG9yIGZpbHRlcmluZyBmb3Igc3VicGl4ZWwgcmVuZGVyaW5nLgorICAgKi8KKyNkZWZpbmUgRlRfVU5QQVRFTlRFRF9ISU5USU5HX0ggIDxmcmVldHlwZS90dHVucGF0Lmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfSU5DUkVNRU5UQUxfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIEZyZWVUeXBlfjIgQVBJIHdoaWNoIHBlcmZvcm1zIGNvbG9yIGZpbHRlcmluZyBmb3Igc3VicGl4ZWwgcmVuZGVyaW5nLgorICAgKi8KKyNkZWZpbmUgRlRfSU5DUkVNRU5UQUxfSCAgPGZyZWV0eXBlL2Z0aW5jcmVtLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfR0FTUF9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgRnJlZVR5cGV+MiBBUEkgd2hpY2ggcmV0dXJucyBlbnRyaWVzIGZyb20gdGhlIFRydWVUeXBlIEdBU1AgdGFibGUuCisgICAqLworI2RlZmluZSBGVF9HQVNQX0ggIDxmcmVldHlwZS9mdGdhc3AuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9BRFZBTkNFU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgRnJlZVR5cGV+MiBBUEkgd2hpY2ggcmV0dXJucyBpbmRpdmlkdWFsIGFuZCByYW5nZWQgZ2x5cGggYWR2YW5jZXMuCisgICAqLworI2RlZmluZSBGVF9BRFZBTkNFU19IICA8ZnJlZXR5cGUvZnRhZHZhbmMuaD4KKworCisgIC8qICovCisKKyNkZWZpbmUgRlRfRVJST1JfREVGSU5JVElPTlNfSCAgPGZyZWV0eXBlL2Z0ZXJyZGVmLmg+CisKKworICAvKiBUaGUgaW50ZXJuYWxzIG9mIHRoZSBjYWNoZSBzdWItc3lzdGVtIGFyZSBubyBsb25nZXIgZXhwb3NlZC4gIFdlICovCisgIC8qIGRlZmF1bHQgdG8gRlRfQ0FDSEVfSCBhdCB0aGUgbW9tZW50IGp1c3QgaW4gY2FzZSwgYnV0IHdlIGtub3cgb2YgKi8KKyAgLyogbm8gcm9ndWUgY2xpZW50IHRoYXQgdXNlcyB0aGVtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX0NBQ0hFX01BTkFHRVJfSCAgICAgICAgICAgPGZyZWV0eXBlL2Z0Y2FjaGUuaD4KKyNkZWZpbmUgRlRfQ0FDSEVfSU5URVJOQUxfTVJVX0ggICAgICA8ZnJlZXR5cGUvZnRjYWNoZS5oPgorI2RlZmluZSBGVF9DQUNIRV9JTlRFUk5BTF9NQU5BR0VSX0ggIDxmcmVldHlwZS9mdGNhY2hlLmg+CisjZGVmaW5lIEZUX0NBQ0hFX0lOVEVSTkFMX0NBQ0hFX0ggICAgPGZyZWV0eXBlL2Z0Y2FjaGUuaD4KKyNkZWZpbmUgRlRfQ0FDSEVfSU5URVJOQUxfR0xZUEhfSCAgICA8ZnJlZXR5cGUvZnRjYWNoZS5oPgorI2RlZmluZSBGVF9DQUNIRV9JTlRFUk5BTF9JTUFHRV9IICAgIDxmcmVldHlwZS9mdGNhY2hlLmg+CisjZGVmaW5lIEZUX0NBQ0hFX0lOVEVSTkFMX1NCSVRTX0ggICAgPGZyZWV0eXBlL2Z0Y2FjaGUuaD4KKworCisjZGVmaW5lIEZUX0lOQ1JFTUVOVEFMX0ggICAgICAgICAgPGZyZWV0eXBlL2Z0aW5jcmVtLmg+CisKKyNkZWZpbmUgRlRfVFJVRVRZUEVfVU5QQVRFTlRFRF9IICA8ZnJlZXR5cGUvdHR1bnBhdC5oPgorCisKKyAgLyoKKyAgICogSW5jbHVkZSBpbnRlcm5hbCBoZWFkZXJzIGRlZmluaXRpb25zIGZyb20gPGZyZWV0eXBlL2ludGVybmFsLy4uLj4KKyAgICogb25seSB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LgorICAgKi8KKyNpZmRlZiBGVDJfQlVJTERfTElCUkFSWQorI2RlZmluZSAgRlRfSU5URVJOQUxfSU5URVJOQUxfSCAgPGZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg+CisjaW5jbHVkZSAiLi4vaW50ZXJuYWwvaW50ZXJuYWwuaCIKKyNlbmRpZiAvKiBGVDJfQlVJTERfTElCUkFSWSAqLworCisKKyNlbmRpZiAvKiBfX0ZUMl9CVUlMRF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMzFjZTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiAgVGhpcyBmaWxlIHJlZ2lzdGVycyB0aGUgRnJlZVR5cGUgbW9kdWxlcyBjb21waWxlZCBpbnRvIHRoZSBsaWJyYXJ5LgorICoKKyAqICBJZiB5b3UgdXNlIEdOVSBtYWtlLCB0aGlzIGZpbGUgSVMgTk9UIFVTRUQhICBJbnN0ZWFkLCBpdCBpcyBjcmVhdGVkIGluCisgKiAgdGhlIG9iamVjdHMgZGlyZWN0b3J5IChub3JtYWxseSBgPHRvcGRpcj4vb2Jqcy8nKSBiYXNlZCBvbiBpbmZvcm1hdGlvbgorICogIGZyb20gYDx0b3BkaXI+L21vZHVsZXMuY2ZnJy4KKyAqCisgKiAgUGxlYXNlIHJlYWQgYGRvY3MvSU5TVEFMTC5BTlknIGFuZCBgZG9jcy9DVVNUT01JWkUnIGhvdyB0byBjb21waWxlCisgKiAgRnJlZVR5cGUgd2l0aG91dCBHTlUgbWFrZS4KKyAqCisgKi8KKworLy9GVF9VU0VfTU9EVUxFKCBGVF9Nb2R1bGVfQ2xhc3MsIGF1dG9maXRfbW9kdWxlX2NsYXNzICkKK0ZUX1VTRV9NT0RVTEUoIEZUX0RyaXZlcl9DbGFzc1JlYywgdHRfZHJpdmVyX2NsYXNzICkKK0ZUX1VTRV9NT0RVTEUoIEZUX0RyaXZlcl9DbGFzc1JlYywgdDFfZHJpdmVyX2NsYXNzICkKK0ZUX1VTRV9NT0RVTEUoIEZUX0RyaXZlcl9DbGFzc1JlYywgY2ZmX2RyaXZlcl9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9Ecml2ZXJfQ2xhc3NSZWMsIHQxY2lkX2RyaXZlcl9jbGFzcyApCisvL0ZUX1VTRV9NT0RVTEUoIEZUX0RyaXZlcl9DbGFzc1JlYywgcGZyX2RyaXZlcl9jbGFzcyApCisvL0ZUX1VTRV9NT0RVTEUoIEZUX0RyaXZlcl9DbGFzc1JlYywgdDQyX2RyaXZlcl9jbGFzcyApCisvL0ZUX1VTRV9NT0RVTEUoIEZUX0RyaXZlcl9DbGFzc1JlYywgd2luZm50X2RyaXZlcl9jbGFzcyApCisvL0ZUX1VTRV9NT0RVTEUoIEZUX0RyaXZlcl9DbGFzc1JlYywgcGNmX2RyaXZlcl9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9Nb2R1bGVfQ2xhc3MsIHBzYXV4X21vZHVsZV9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9Nb2R1bGVfQ2xhc3MsIHBzbmFtZXNfbW9kdWxlX2NsYXNzICkKK0ZUX1VTRV9NT0RVTEUoIEZUX01vZHVsZV9DbGFzcywgcHNoaW50ZXJfbW9kdWxlX2NsYXNzICkKK0ZUX1VTRV9NT0RVTEUoIEZUX1JlbmRlcmVyX0NsYXNzLCBmdF9yYXN0ZXIxX3JlbmRlcmVyX2NsYXNzICkKK0ZUX1VTRV9NT0RVTEUoIEZUX01vZHVsZV9DbGFzcywgc2ZudF9tb2R1bGVfY2xhc3MgKQorRlRfVVNFX01PRFVMRSggRlRfUmVuZGVyZXJfQ2xhc3MsIGZ0X3Ntb290aF9yZW5kZXJlcl9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9SZW5kZXJlcl9DbGFzcywgZnRfc21vb3RoX2xjZF9yZW5kZXJlcl9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9SZW5kZXJlcl9DbGFzcywgZnRfc21vb3RoX2xjZHZfcmVuZGVyZXJfY2xhc3MgKQorLy9GVF9VU0VfTU9EVUxFKCBGVF9Ecml2ZXJfQ2xhc3NSZWMsIGJkZl9kcml2ZXJfY2xhc3MgKQorCisvKiBFT0YgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNmUzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCkBAIC0wLDAgKzEsODMzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdG9wdGlvbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVXNlci1zZWxlY3RhYmxlIGNvbmZpZ3VyYXRpb24gbWFjcm9zIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVE9QVElPTl9IX18KKyNkZWZpbmUgX19GVE9QVElPTl9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICBVU0VSLVNFTEVDVEFCTEUgQ09ORklHVVJBVElPTiBNQUNST1MgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gbWFjcm8gZGVmaW5pdGlvbnMgZm9yICAgICovCisgIC8qIGEgc3RhbmRhcmQgYnVpbGQgb2YgdGhlIEZyZWVUeXBlIGxpYnJhcnkuICBUaGVyZSBhcmUgdGhyZWUgd2F5cyB0byAgICAqLworICAvKiB1c2UgdGhpcyBmaWxlIHRvIGJ1aWxkIHByb2plY3Qtc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnk6ICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAtIFlvdSBjYW4gbW9kaWZ5IHRoaXMgZmlsZSBieSBoYW5kLCBidXQgdGhpcyBpcyBub3QgcmVjb21tZW5kZWQgaW4gICAqLworICAvKiAgICBjYXNlcyB3aGVyZSB5b3Ugd291bGQgbGlrZSB0byBidWlsZCBzZXZlcmFsIHZlcnNpb25zIG9mIHRoZSAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSBmcm9tIGEgc2luZ2xlIHNvdXJjZSBkaXJlY3RvcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgLSBZb3UgY2FuIHB1dCBhIGNvcHkgb2YgdGhpcyBmaWxlIGluIHlvdXIgYnVpbGQgZGlyZWN0b3J5LCBtb3JlICAgICAgKi8KKyAgLyogICAgcHJlY2lzZWx5IGluIGAkQlVJTEQvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgnLCB3aGVyZSBgJEJVSUxEJyAgICovCisgIC8qICAgIGlzIHRoZSBuYW1lIG9mIGEgZGlyZWN0b3J5IHRoYXQgaXMgaW5jbHVkZWQgX2JlZm9yZV8gdGhlIEZyZWVUeXBlICAqLworICAvKiAgICBpbmNsdWRlIHBhdGggZHVyaW5nIGNvbXBpbGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBkZWZhdWx0IEZyZWVUeXBlIE1ha2VmaWxlcyBhbmQgSmFtZmlsZXMgdXNlIHRoZSBidWlsZCAgICAgICAgICAqLworICAvKiAgICBkaXJlY3RvcnkgYGJ1aWxkcy88c3lzdGVtPicgYnkgZGVmYXVsdCwgYnV0IHlvdSBjYW4gZWFzaWx5IGNoYW5nZSAgKi8KKyAgLyogICAgdGhhdCBmb3IgeW91ciBvd24gcHJvamVjdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgLSBDb3B5IHRoZSBmaWxlIDxmdDJidWlsZC5oPiB0byBgJEJVSUxEL2Z0MmJ1aWxkLmgnIGFuZCBtb2RpZnkgaXQgICAgKi8KKyAgLyogICAgc2xpZ2h0bHkgdG8gcHJlLWRlZmluZSB0aGUgbWFjcm8gRlRfQ09ORklHX09QVElPTlNfSCB1c2VkIHRvICAgICAgICovCisgIC8qICAgIGxvY2F0ZSB0aGlzIGZpbGUgZHVyaW5nIHRoZSBidWlsZC4gIEZvciBleGFtcGxlLCAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05TX0ggIDxteWZ0b3B0aW9ucy5oPiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgI2luY2x1ZGUgPGZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgd2lsbCB1c2UgYCRCVUlMRC9teWZ0b3B0aW9ucy5oJyBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBmb3IgbWFjcm8gICAgICovCisgIC8qICAgIGRlZmluaXRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSBhbHNvIHRoYXQgeW91IGNhbiBzaW1pbGFybHkgcHJlLWRlZmluZSB0aGUgbWFjcm8gICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0NPTkZJR19NT0RVTEVTX0ggdXNlZCB0byBsb2NhdGUgdGhlIGZpbGUgbGlzdGluZyBvZiB0aGUgbW9kdWxlcyAqLworICAvKiAgICB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCB0byB0aGUgbGlicmFyeSBhdCBjb21waWxlIHRpbWUuICBCeSAgICAgKi8KKyAgLyogICAgZGVmYXVsdCwgdGhpcyBmaWxlIGlzIDxmcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaD4uICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgV2UgaGlnaGx5IHJlY29tbWVuZCB1c2luZyB0aGUgdGhpcmQgbWV0aG9kIHdoZW5ldmVyIHBvc3NpYmxlLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogRyBFIE4gRSBSIEEgTCAgIEYgUiBFIEUgVCBZIFAgRSAgIDIgICBDIE8gTiBGIEkgRyBVIFIgQSBUIEkgTyBOICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyBpZiB5b3Ugd2FudCB0byBhY3RpdmF0ZSBzdWItcGl4ZWwgcmVuZGVyaW5nICAqLworICAvKiAoYS5rLmEuIExDRCByZW5kZXJpbmcsIG9yIENsZWFyVHlwZSkgaW4gdGhpcyBidWlsZCBvZiB0aGUgbGlicmFyeS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgaXMgY292ZXJlZCBieSBzZXZlcmFsIE1pY3Jvc29mdCBwYXRlbnRzICAgICAgICAqLworICAvKiBhbmQgc2hvdWxkIG5vdCBiZSBhY3RpdmF0ZWQgaW4gYW55IGRlZmF1bHQgYnVpbGQgb2YgdGhlIGxpYnJhcnkuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgbWFjcm8gaGFzIG5vIGltcGFjdCBvbiB0aGUgRnJlZVR5cGUgQVBJLCBvbmx5IG9uIGl0cyAgICAgICAgICAgICAqLworICAvKiBfaW1wbGVtZW50YXRpb25fLiAgRm9yIGV4YW1wbGUsIHVzaW5nIEZUX1JFTkRFUl9NT0RFX0xDRCB3aGVuIGNhbGxpbmcgKi8KKyAgLyogRlRfUmVuZGVyX0dseXBoIHN0aWxsIGdlbmVyYXRlcyBhIGJpdG1hcCB0aGF0IGlzIDMgdGltZXMgd2lkZXIgdGhhbiAgICovCisgIC8qIHRoZSBvcmlnaW5hbCBzaXplIGluIGNhc2UgdGhpcyBtYWNybyBpc24ndCBkZWZpbmVkOyBob3dldmVyLCBlYWNoICAgICAqLworICAvKiB0cmlwbGV0IG9mIHN1YnBpeGVscyBoYXMgUj1HPUIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgaXMgZG9uZSB0byBhbGxvdyBGcmVlVHlwZSBjbGllbnRzIHRvIHJ1biB1bm1vZGlmaWVkLCBmb3JjaW5nICAgICAqLworICAvKiB0aGVtIHRvIGRpc3BsYXkgbm9ybWFsIGdyYXktbGV2ZWwgYW50aS1hbGlhc2VkIGdseXBocy4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfUkVOREVSSU5HCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE1hbnkgY29tcGlsZXJzIHByb3ZpZGUgYSBub24tQU5TSSA2NC1iaXQgZGF0YSB0eXBlIHRoYXQgY2FuIGJlIHVzZWQgICAqLworICAvKiBieSBGcmVlVHlwZSB0byBzcGVlZCB1cCBzb21lIGNvbXB1dGF0aW9ucy4gIEhvd2V2ZXIsIHRoaXMgd2lsbCBjcmVhdGUgKi8KKyAgLyogc29tZSBwcm9ibGVtcyB3aGVuIGNvbXBpbGluZyB0aGUgbGlicmFyeSBpbiBzdHJpY3QgQU5TSSBtb2RlLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGb3IgdGhpcyByZWFzb24sIHRoZSB1c2Ugb2YgNjQtYml0IGludGVnZXJzIGlzIG5vcm1hbGx5IGRpc2FibGVkIHdoZW4gKi8KKyAgLyogdGhlIF9fU1REQ19fIG1hY3JvIGlzIGRlZmluZWQuICBZb3UgY2FuIGhvd2V2ZXIgZGlzYWJsZSB0aGlzIGJ5ICAgICAgICovCisgIC8qIGRlZmluaW5nIHRoZSBtYWNybyBGVF9DT05GSUdfT1BUSU9OX0ZPUkNFX0lOVDY0IGhlcmUuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRm9yIG1vc3QgY29tcGlsZXJzLCB0aGlzIHdpbGwgb25seSBjcmVhdGUgY29tcGlsYXRpb24gd2FybmluZ3Mgd2hlbiAgICovCisgIC8qIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT2JOb3RlOiBUaGUgY29tcGlsZXItc3BlY2lmaWMgNjQtYml0IGludGVnZXJzIGFyZSBkZXRlY3RlZCBpbiB0aGUgICAgICovCisgIC8qICAgICAgICAgZmlsZSBgZnRjb25maWcuaCcgZWl0aGVyIHN0YXRpY2FsbHkgb3IgdGhyb3VnaCB0aGUgICAgICAgICAgICAqLworICAvKiAgICAgICAgIGBjb25maWd1cmUnIHNjcmlwdCBvbiBzdXBwb3J0ZWQgcGxhdGZvcm1zLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgRlRfQ09ORklHX09QVElPTl9GT1JDRV9JTlQ2NAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJZiB0aGlzIG1hY3JvIGlzIGRlZmluZWQsIGRvIG5vdCB0cnkgdG8gdXNlIGFuIGFzc2VtYmxlciB2ZXJzaW9uIG9mICAgKi8KKyAgLyogcGVyZm9ybWFuY2UtY3JpdGljYWwgZnVuY3Rpb25zIChlLmcuIEZUX011bEZpeCkuICBZb3Ugc2hvdWxkIG9ubHkgZG8gICovCisgIC8qIHRoYXQgdG8gdmVyaWZ5IHRoYXQgdGhlIGFzc2VtYmxlciBmdW5jdGlvbiB3b3JrcyBwcm9wZXJseSwgb3IgdG8gICAgICAqLworICAvKiBleGVjdXRlIGJlbmNobWFyayB0ZXN0cyBvZiB0aGUgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMuICAgICAgICAgICAgICAgKi8KKy8qICNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9OT19BU1NFTUJMRVIgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSWYgdGhpcyBtYWNybyBpcyBkZWZpbmVkLCB0cnkgdG8gdXNlIGFuIGlubGluZWQgYXNzZW1ibGVyIHZlcnNpb24gb2YgICovCisgIC8qIHRoZSBgRlRfTXVsRml4JyBmdW5jdGlvbiwgd2hpY2ggaXMgYSBgaG90c3BvdCcgd2hlbiBsb2FkaW5nIGFuZCAgICAgICAqLworICAvKiBoaW50aW5nIGdseXBocywgYW5kIHdoaWNoIHNob3VsZCBiZSBleGVjdXRlZCBhcyBmYXN0IGFzIHBvc3NpYmxlLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE5vdGUgdGhhdCBpZiB5b3VyIGNvbXBpbGVyIG9yIENQVSBpcyBub3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgZGVmYXVsdCAqLworICAvKiB0byB0aGUgc3RhbmRhcmQgYW5kIHBvcnRhYmxlIGltcGxlbWVudGF0aW9uIGZvdW5kIGluIGBmdGNhbGMuYycuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fSU5MSU5FX01VTEZJWAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBMWlctY29tcHJlc3NlZCBmaWxlIHN1cHBvcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRnJlZVR5cGUgbm93IGhhbmRsZXMgZm9udCBmaWxlcyB0aGF0IGhhdmUgYmVlbiBjb21wcmVzc2VkIHdpdGggdGhlICAqLworICAvKiAgIGBjb21wcmVzcycgcHJvZ3JhbS4gIFRoaXMgaXMgbW9zdGx5IHVzZWQgdG8gcGFyc2UgbWFueSBvZiB0aGUgUENGICAgKi8KKyAgLyogICBmaWxlcyB0aGF0IGNvbWUgd2l0aCB2YXJpb3VzIFgxMSBkaXN0cmlidXRpb25zLiAgVGhlIGltcGxlbWVudGF0aW9uICovCisgIC8qICAgdXNlcyBOZXRCU0QncyBgem9wZW4nIHRvIHBhcnRpYWxseSB1bmNvbXByZXNzIHRoZSBmaWxlIG9uIHRoZSBmbHkgICAqLworICAvKiAgIChzZWUgc3JjL2x6dy9mdGd6aXAuYykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRGVmaW5lIHRoaXMgbWFjcm8gaWYgeW91IHdhbnQgdG8gZW5hYmxlIHRoaXMgYGZlYXR1cmUnLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9VU0VfTFpXCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEd6aXAtY29tcHJlc3NlZCBmaWxlIHN1cHBvcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGcmVlVHlwZSBub3cgaGFuZGxlcyBmb250IGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGNvbXByZXNzZWQgd2l0aCB0aGUgICovCisgIC8qICAgYGd6aXAnIHByb2dyYW0uICBUaGlzIGlzIG1vc3RseSB1c2VkIHRvIHBhcnNlIG1hbnkgb2YgdGhlIFBDRiBmaWxlcyAqLworICAvKiAgIHRoYXQgY29tZSB3aXRoIFhGcmVlODYuICBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBgemxpYicgdG8gICAgICAgICAgKi8KKyAgLyogICBwYXJ0aWFsbHkgdW5jb21wcmVzcyB0aGUgZmlsZSBvbiB0aGUgZmx5IChzZWUgc3JjL2d6aXAvZnRnemlwLmMpLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERlZmluZSB0aGlzIG1hY3JvIGlmIHlvdSB3YW50IHRvIGVuYWJsZSB0aGlzIGBmZWF0dXJlJy4gIFNlZSBhbHNvICAgKi8KKyAgLyogICB0aGUgbWFjcm8gRlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQiBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX1VTRV9aTElCCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFpMaWIgbGlicmFyeSBzZWxlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUaGlzIG1hY3JvIGlzIG9ubHkgdXNlZCB3aGVuIEZUX0NPTkZJR19PUFRJT05fVVNFX1pMSUIgaXMgZGVmaW5lZC4gICovCisgIC8qICAgSXQgYWxsb3dzIEZyZWVUeXBlJ3MgYGZ0Z3ppcCcgY29tcG9uZW50IHRvIGxpbmsgdG8gdGhlIHN5c3RlbSdzICAgICAqLworICAvKiAgIGluc3RhbGxhdGlvbiBvZiB0aGUgWkxpYiBsaWJyYXJ5LiAgVGhpcyBpcyB1c2VmdWwgb24gc3lzdGVtcyBsaWtlICAgKi8KKyAgLyogICBVbml4IG9yIFZNUyB3aGVyZSBpdCBnZW5lcmFsbHkgaXMgYWxyZWFkeSBhdmFpbGFibGUuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIElmIHlvdSBsZXQgaXQgdW5kZWZpbmVkLCB0aGUgY29tcG9uZW50IHdpbGwgdXNlIGl0cyBvd24gY29weSAgICAgICAgKi8KKyAgLyogICBvZiB0aGUgemxpYiBzb3VyY2VzIGluc3RlYWQuICBUaGVzZSBoYXZlIGJlZW4gbW9kaWZpZWQgdG8gYmUgICAgICAgICovCisgIC8qICAgaW5jbHVkZWQgZGlyZWN0bHkgd2l0aGluIHRoZSBjb21wb25lbnQgYW5kICpub3QqIGV4cG9ydCBleHRlcm5hbCAgICAqLworICAvKiAgIGZ1bmN0aW9uIG5hbWVzLiAgVGhpcyBhbGxvd3MgeW91IHRvIGxpbmsgYW55IHByb2dyYW0gd2l0aCBGcmVlVHlwZSAgKi8KKyAgLyogICBfYW5kXyBaTGliIHdpdGhvdXQgbGlua2luZyBjb25mbGljdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERvIG5vdCAjdW5kZWYgdGhpcyBtYWNybyBoZXJlIHNpbmNlIHRoZSBidWlsZCBzeXN0ZW0gbWlnaHQgZGVmaW5lICAgKi8KKyAgLyogICBpdCBmb3IgY2VydGFpbiBjb25maWd1cmF0aW9ucyBvbmx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX1NZU1RFTV9aTElCICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEJ6aXAyLWNvbXByZXNzZWQgZmlsZSBzdXBwb3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGcmVlVHlwZSBub3cgaGFuZGxlcyBmb250IGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGNvbXByZXNzZWQgd2l0aCB0aGUgICovCisgIC8qICAgYGJ6aXAyJyBwcm9ncmFtLiAgVGhpcyBpcyBtb3N0bHkgdXNlZCB0byBwYXJzZSBtYW55IG9mIHRoZSBQQ0YgICAgICAqLworICAvKiAgIGZpbGVzIHRoYXQgY29tZSB3aXRoIFhGcmVlODYuICBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBgbGliYnoyJyB0byAgKi8KKyAgLyogICBwYXJ0aWFsbHkgdW5jb21wcmVzcyB0aGUgZmlsZSBvbiB0aGUgZmx5IChzZWUgc3JjL2J6aXAyL2Z0YnppcDIuYykuICovCisgIC8qICAgQ29udHJhcnkgdG8gZ3ppcCwgYnppcDIgY3VycmVudGx5IGlzIG5vdCBpbmNsdWRlZCBhbmQgbmVlZCB0byB1c2UgICAqLworICAvKiAgIHRoZSBzeXN0ZW0gYXZhaWxhYmxlIGJ6aXAyIGltcGxlbWVudGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRGVmaW5lIHRoaXMgbWFjcm8gaWYgeW91IHdhbnQgdG8gZW5hYmxlIHRoaXMgYGZlYXR1cmUnLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9VU0VfQlpJUDIgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRvIGRpc2FibGUgdGhlIHVzZSBvZiBmaWxlIHN0cmVhbSBmdW5jdGlvbnMgYW5kIHR5cGVzLCBGSUxFLCAgICovCisgIC8qIGZvcGVuKCkgZXRjLiAgRW5hYmxlcyB0aGUgdXNlIG9mIHNtYWxsZXIgc3lzdGVtIGxpYnJhcmllcyBvbiBlbWJlZGRlZCAqLworICAvKiBzeXN0ZW1zIHRoYXQgaGF2ZSBtdWx0aXBsZSBzeXN0ZW0gbGlicmFyaWVzLCBzb21lIHdpdGggb3Igd2l0aG91dCAgICAgKi8KKyAgLyogZmlsZSBzdHJlYW0gc3VwcG9ydCwgaW4gdGhlIGNhc2VzIHdoZXJlIGZpbGUgc3RyZWFtIHN1cHBvcnQgaXMgbm90ICAgICovCisgIC8qIG5lY2Vzc2FyeSBzdWNoIGFzIG1lbW9yeSBsb2FkaW5nIG9mIGZvbnQgZmlsZXMuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9ESVNBQkxFX1NUUkVBTV9TVVBQT1JUICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBQTkcgYml0bWFwIHN1cHBvcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGcmVlVHlwZSBub3cgaGFuZGxlcyBsb2FkaW5nIGNvbG9yIGJpdG1hcCBnbHlwaHMgaW4gdGhlIFBORyBmb3JtYXQuICovCisgIC8qICAgVGhpcyByZXF1aXJlcyBoZWxwIGZyb20gdGhlIGV4dGVybmFsIGxpYnBuZyBsaWJyYXJ5LiAgVW5jb21wcmVzc2VkICAqLworICAvKiAgIGNvbG9yIGJpdG1hcHMgZG8gbm90IG5lZWQgYW55IGV4dGVybmFsIGxpYnJhcmllcyBhbmQgd2lsbCBiZSAgICAgICAgKi8KKyAgLyogICBzdXBwb3J0ZWQgcmVnYXJkbGVzcyBvZiB0aGlzIGNvbmZpZ3VyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERlZmluZSB0aGlzIG1hY3JvIGlmIHlvdSB3YW50IHRvIGVuYWJsZSB0aGlzIGBmZWF0dXJlJy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fVVNFX1BORyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBETEwgZXhwb3J0IGNvbXBpbGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgV2hlbiBjb21waWxpbmcgRnJlZVR5cGUgYXMgYSBETEwsIHNvbWUgc3lzdGVtcy9jb21waWxlcnMgbmVlZCBhICAgICAqLworICAvKiAgIHNwZWNpYWwga2V5d29yZCBpbiBmcm9udCBPUiBhZnRlciB0aGUgcmV0dXJuIHR5cGUgb2YgZnVuY3Rpb24gICAgICAgKi8KKyAgLyogICBkZWNsYXJhdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFR3byBtYWNyb3MgYXJlIHVzZWQgd2l0aGluIHRoZSBGcmVlVHlwZSBzb3VyY2UgY29kZSB0byBkZWZpbmUgICAgICAgKi8KKyAgLyogICBleHBvcnRlZCBsaWJyYXJ5IGZ1bmN0aW9uczogRlRfRVhQT1JUIGFuZCBGVF9FWFBPUlRfREVGLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgRlRfRVhQT1JUKCByZXR1cm5fdHlwZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgIGlzIHVzZWQgaW4gYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiwgYXMgaW4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICBGVF9FWFBPUlQoIEZUX0Vycm9yICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgRlRfSW5pdF9GcmVlVHlwZSggRlRfTGlicmFyeSogIGFsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBGVF9FWFBPUlRfREVGKCByZXR1cm5fdHlwZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgaXMgdXNlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sIGFzIGluICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICBGVF9Jbml0X0ZyZWVUeXBlKCBGVF9MaWJyYXJ5KiAgYWxpYnJhcnkgKSAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgLi4uIHNvbWUgY29kZSAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBZb3UgY2FuIHByb3ZpZGUgeW91ciBvd24gaW1wbGVtZW50YXRpb24gb2YgRlRfRVhQT1JUIGFuZCAgICAgICAgICAgICovCisgIC8qICAgRlRfRVhQT1JUX0RFRiBoZXJlIGlmIHlvdSB3YW50LiAgSWYgeW91IGxlYXZlIHRoZW0gdW5kZWZpbmVkLCB0aGV5ICAqLworICAvKiAgIHdpbGwgYmUgbGF0ZXIgYXV0b21hdGljYWxseSBkZWZpbmVkIGFzIGBleHRlcm4gcmV0dXJuX3R5cGUnIHRvICAgICAgKi8KKyAgLyogICBhbGxvdyBub3JtYWwgY29tcGlsYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERvIG5vdCAjdW5kZWYgdGhlc2UgbWFjcm9zIGhlcmUgc2luY2UgdGhlIGJ1aWxkIHN5c3RlbSBtaWdodCBkZWZpbmUgKi8KKyAgLyogICB0aGVtIGZvciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zIG9ubHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBGVF9FWFBPUlQoeCkgICAgICBleHRlcm4geCAqLworLyogI2RlZmluZSBGVF9FWFBPUlRfREVGKHgpICB4ICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEdseXBoIFBvc3RzY3JpcHQgTmFtZXMgaGFuZGxpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBCeSBkZWZhdWx0LCBGcmVlVHlwZSAyIGlzIGNvbXBpbGVkIHdpdGggdGhlIGBwc25hbWVzJyBtb2R1bGUuICBUaGlzICovCisgIC8qICAgbW9kdWxlIGlzIGluIGNoYXJnZSBvZiBjb252ZXJ0aW5nIGEgZ2x5cGggbmFtZSBzdHJpbmcgaW50byBhICAgICAgICAqLworICAvKiAgIFVuaWNvZGUgdmFsdWUsIG9yIHJldHVybiBhIE1hY2ludG9zaCBzdGFuZGFyZCBnbHlwaCBuYW1lIGZvciB0aGUgICAgKi8KKyAgLyogICB1c2Ugd2l0aCB0aGUgVHJ1ZVR5cGUgYHBvc3QnIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFVuZGVmaW5lIHRoaXMgbWFjcm8gaWYgeW91IGRvIG5vdCB3YW50IGBwc25hbWVzJyBjb21waWxlZCBpbiB5b3VyICAgKi8KKyAgLyogICBidWlsZCBvZiBGcmVlVHlwZS4gIFRoaXMgaGFzIHRoZSBmb2xsb3dpbmcgZWZmZWN0czogICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIC0gVGhlIFRydWVUeXBlIGRyaXZlciB3aWxsIHByb3ZpZGUgaXRzIG93biBzZXQgb2YgZ2x5cGggbmFtZXMsICAgICAgKi8KKyAgLyogICAgIGlmIHlvdSBidWlsZCBpdCB0byBzdXBwb3J0IHBvc3RzY3JpcHQgbmFtZXMgaW4gdGhlIFRydWVUeXBlICAgICAgICovCisgIC8qICAgICBgcG9zdCcgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAtIFRoZSBUeXBlIDEgZHJpdmVyIHdpbGwgbm90IGJlIGFibGUgdG8gc3ludGhlc2l6ZSBhIFVuaWNvZGUgICAgICAgICovCisgIC8qICAgICBjaGFybWFwIG91dCBvZiB0aGUgZ2x5cGhzIGZvdW5kIGluIHRoZSBmb250cy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBZb3Ugd291bGQgbm9ybWFsbHkgdW5kZWZpbmUgdGhpcyBjb25maWd1cmF0aW9uIG1hY3JvIHdoZW4gYnVpbGRpbmcgICovCisgIC8qICAgYSB2ZXJzaW9uIG9mIEZyZWVUeXBlIHRoYXQgZG9lc24ndCBjb250YWluIGEgVHlwZSAxIG9yIENGRiBkcml2ZXIuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFBvc3RzY3JpcHQgTmFtZXMgdG8gVW5pY29kZSBWYWx1ZXMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBCeSBkZWZhdWx0LCBGcmVlVHlwZSAyIGlzIGJ1aWx0IHdpdGggdGhlIGBQU05hbWVzJyBtb2R1bGUgY29tcGlsZWQgICovCisgIC8qICAgaW4uICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBtb2R1bGUgaXMgdXNlZCB0byBjb252ZXJ0IGEgZ2x5cGggbmFtZSAqLworICAvKiAgIGludG8gYSBVbmljb2RlIHZhbHVlLiAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBpbiBvcmRlciB0byAgICAgICAgKi8KKyAgLyogICBzeW50aGVzaXplIG9uIHRoZSBmbHkgYSBVbmljb2RlIGNoYXJtYXAgZnJvbSB0aGUgQ0ZGL1R5cGUgMSBkcml2ZXIgICovCisgIC8qICAgdGhyb3VnaCBhIGJpZyB0YWJsZSBuYW1lZCB0aGUgYEFkb2JlIEdseXBoIExpc3QnIChBR0wpLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBVbmRlZmluZSB0aGlzIG1hY3JvIGlmIHlvdSBkbyBub3Qgd2FudCB0aGUgQWRvYmUgR2x5cGggTGlzdCAgICAgICAgICovCisgIC8qICAgY29tcGlsZWQgaW4geW91ciBgUFNOYW1lcycgbW9kdWxlLiAgVGhlIFR5cGUgMSBkcml2ZXIgd2lsbCBub3QgYmUgICAqLworICAvKiAgIGFibGUgdG8gc3ludGhlc2l6ZSBhIFVuaWNvZGUgY2hhcm1hcCBvdXQgb2YgdGhlIGdseXBocyBmb3VuZCBpbiB0aGUgKi8KKyAgLyogICBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX0FET0JFX0dMWVBIX0xJU1QKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3VwcG9ydCBmb3IgTWFjIGZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERlZmluZSB0aGlzIG1hY3JvIGlmIHlvdSB3YW50IHN1cHBvcnQgZm9yIG91dGxpbmUgZm9udHMgaW4gTWFjICAgICAgKi8KKyAgLyogICBmb3JtYXQgKG1hYyBkZm9udCwgbWFjIHJlc291cmNlLCBtYWNiaW5hcnkgY29udGFpbmluZyBhIG1hYyAgICAgICAgICovCisgIC8qICAgcmVzb3VyY2UpIG9uIG5vbi1NYWMgcGxhdGZvcm1zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBOb3RlIHRoYXQgdGhlIGBGT05EJyByZXNvdXJjZSBpc24ndCBjaGVja2VkLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLy8jZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fTUFDX0ZPTlRTCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEd1ZXNzaW5nIG1ldGhvZHMgdG8gYWNjZXNzIGVtYmVkZGVkIHJlc291cmNlIGZvcmtzICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBFbmFibGUgZXh0cmEgTWFjIGZvbnRzIHN1cHBvcnQgb24gbm9uLU1hYyBwbGF0Zm9ybXMgKGUuZy4gICAgICAgICAgICovCisgIC8qICAgR05VL0xpbnV4KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBSZXNvdXJjZSBmb3JrcyB3aGljaCBpbmNsdWRlIGZvbnRzIGRhdGEgYXJlIHN0b3JlZCBzb21ldGltZXMgaW4gICAgICovCisgIC8qICAgbG9jYXRpb25zIHdoaWNoIHVzZXJzIG9yIGRldmVsb3BlcnMgZG9uJ3QgZXhwZWN0ZWQuICBJbiBzb21lIGNhc2VzLCAqLworICAvKiAgIHJlc291cmNlIGZvcmtzIHN0YXJ0IHdpdGggc29tZSBvZmZzZXQgZnJvbSB0aGUgaGVhZCBvZiBhIGZpbGUuICBJbiAgKi8KKyAgLyogICBvdGhlciBjYXNlcywgdGhlIGFjdHVhbCByZXNvdXJjZSBmb3JrIGlzIHN0b3JlZCBpbiBmaWxlIGRpZmZlcmVudCAgICovCisgIC8qICAgZnJvbSB3aGF0IHRoZSB1c2VyIHNwZWNpZmllcy4gIElmIHRoaXMgb3B0aW9uIGlzIGFjdGl2YXRlZCwgICAgICAgICAqLworICAvKiAgIEZyZWVUeXBlIHRyaWVzIHRvIGd1ZXNzIHdoZXRoZXIgc3VjaCBvZmZzZXRzIG9yIGRpZmZlcmVudCBmaWxlICAgICAgKi8KKyAgLyogICBuYW1lcyBtdXN0IGJlIHVzZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIE5vdGUgdGhhdCBub3JtYWwsIGRpcmVjdCBhY2Nlc3Mgb2YgcmVzb3VyY2UgZm9ya3MgaXMgY29udHJvbGxlZCB2aWEgKi8KKyAgLyogICB0aGUgRlRfQ09ORklHX09QVElPTl9NQUNfRk9OVFMgb3B0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fTUFDX0ZPTlRTCisjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fR1VFU1NJTkdfRU1CRURERURfUkZPUksKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBbGxvdyB0aGUgdXNlIG9mIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZSB0byBsb2FkIHR5cGVmYWNlcyB0aGF0ICAgICAgKi8KKyAgLyogY29udGFpbiBubyBnbHlwaCBkYXRhLCBidXQgc3VwcGx5IGl0IHZpYSBhIGNhbGxiYWNrIGZ1bmN0aW9uLiAgICAgICAgICovCisgIC8qIFRoaXMgaXMgcmVxdWlyZWQgYnkgY2xpZW50cyBzdXBwb3J0aW5nIGRvY3VtZW50IGZvcm1hdHMgd2hpY2ggICAgICAgICAqLworICAvKiBzdXBwbHkgZm9udCBkYXRhIGluY3JlbWVudGFsbHkgYXMgdGhlIGRvY3VtZW50IGlzIHBhcnNlZCwgc3VjaCAgICAgICAgKi8KKyAgLyogYXMgdGhlIEdob3N0c2NyaXB0IGludGVycHJldGVyIGZvciB0aGUgUG9zdFNjcmlwdCBsYW5ndWFnZS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSByZW5kZXIgcG9vbCB1c2VkIGJ5IHRoZSBzY2FuLWxpbmUgY29udmVydGVyICAqLworICAvKiB0byBkbyBhbGwgb2YgaXRzIHdvcmsuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gNEtCeXRlIGlmIHlvdSB1c2UgRnJlZVR5cGUgdG8gcmFzdGVyaXplICAgICAqLworICAvKiBnbHlwaHM7IG90aGVyd2lzZSwgeW91IG1heSBzZXQgaXQgdG8gemVybyB0byBhdm9pZCB1bm5lY2Vzc2FyeSAgICAgICAgKi8KKyAgLyogYWxsb2NhdGlvbiBvZiB0aGUgcmVuZGVyIHBvb2wuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9SRU5ERVJfUE9PTF9TSVpFICAxNjM4NEwKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRlRfTUFYX01PRFVMRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtb2R1bGVzIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQgaW4gYSBzaW5nbGUgICAgKi8KKyAgLyogICBGcmVlVHlwZSBsaWJyYXJ5IG9iamVjdC4gIDMyIGlzIHRoZSBkZWZhdWx0LiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9NQVhfTU9EVUxFUyAgMzIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVidWcgbGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZyZWVUeXBlIGNhbiBiZSBjb21waWxlZCBpbiBkZWJ1ZyBvciB0cmFjZSBtb2RlLiAgSW4gZGVidWcgbW9kZSwgICAgKi8KKyAgLyogICBlcnJvcnMgYXJlIHJlcG9ydGVkIHRocm91Z2ggdGhlIGBmdGRlYnVnJyBjb21wb25lbnQuICBJbiB0cmFjZSAgICAgICovCisgIC8qICAgbW9kZSwgYWRkaXRpb25hbCBtZXNzYWdlcyBhcmUgc2VudCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IGR1cmluZyAgICAqLworICAvKiAgIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRGVmaW5lIEZUX0RFQlVHX0xFVkVMX0VSUk9SIHRvIGJ1aWxkIHRoZSBsaWJyYXJ5IGluIGRlYnVnIG1vZGUuICAgICAqLworICAvKiAgIERlZmluZSBGVF9ERUJVR19MRVZFTF9UUkFDRSB0byBidWlsZCBpdCBpbiB0cmFjZSBtb2RlLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRG9uJ3QgZGVmaW5lIGFueSBvZiB0aGVzZSBtYWNyb3MgdG8gY29tcGlsZSBpbiBgcmVsZWFzZScgbW9kZSEgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBEbyBub3QgI3VuZGVmIHRoZXNlIG1hY3JvcyBoZXJlIHNpbmNlIHRoZSBidWlsZCBzeXN0ZW0gbWlnaHQgZGVmaW5lICovCisgIC8qICAgdGhlbSBmb3IgY2VydGFpbiBjb25maWd1cmF0aW9ucyBvbmx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICNkZWZpbmUgRlRfREVCVUdfTEVWRUxfRVJST1IgKi8KKy8qICNkZWZpbmUgRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQXV0b2ZpdHRlciBkZWJ1Z2dpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIElmIEZUX0RFQlVHX0FVVE9GSVQgaXMgZGVmaW5lZCwgRnJlZVR5cGUgcHJvdmlkZXMgc29tZSBtZWFucyB0byAgICAgKi8KKyAgLyogICBjb250cm9sIHRoZSBhdXRvZml0dGVyIGJlaGF2aW91ciBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIHdpdGggZ2xvYmFsICovCisgIC8qICAgYm9vbGVhbiB2YXJpYWJsZXMgKGNvbnNlcXVlbnRseSwgeW91IHNob3VsZCAqbmV2ZXIqIGVuYWJsZSB0aGlzICAgICAqLworICAvKiAgIHdoaWxlIGNvbXBpbGluZyBpbiBgcmVsZWFzZScgbW9kZSk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBfYWZfZGVidWdfZGlzYWJsZV9ob3J6X2hpbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgX2FmX2RlYnVnX2Rpc2FibGVfdmVydF9oaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIF9hZl9kZWJ1Z19kaXNhYmxlX2JsdWVfaGludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEFkZGl0aW9uYWxseSwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcHJvdmlkZSBkdW1wcyBvZiB2YXJpb3VzICAgICAgKi8KKyAgLyogICBpbnRlcm5hbCBhdXRvZml0IHN0cnVjdHVyZXMgdG8gc3Rkb3V0ICh1c2luZyBgcHJpbnRmJyk6ICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgYWZfZ2x5cGhfaGludHNfZHVtcF9wb2ludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGFmX2dseXBoX2hpbnRzX2R1bXBfc2VnbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBhZl9nbHlwaF9oaW50c19kdW1wX2VkZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBBcyBhbiBhcmd1bWVudCwgdGhleSB1c2UgYW5vdGhlciBnbG9iYWwgdmFyaWFibGU6ICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgX2FmX2RlYnVnX2hpbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgUGxlYXNlIGhhdmUgYSBsb29rIGF0IHRoZSBgZnRncmlkJyBkZW1vIHByb2dyYW0gdG8gc2VlIGhvdyB0aG9zZSAgICAqLworICAvKiAgIHZhcmlhYmxlcyBhbmQgbWFjcm9zIHNob3VsZCBiZSB1c2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRG8gbm90ICN1bmRlZiB0aGVzZSBtYWNyb3MgaGVyZSBzaW5jZSB0aGUgYnVpbGQgc3lzdGVtIG1pZ2h0IGRlZmluZSAqLworICAvKiAgIHRoZW0gZm9yIGNlcnRhaW4gY29uZmlndXJhdGlvbnMgb25seS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIEZUX0RFQlVHX0FVVE9GSVQgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTWVtb3J5IERlYnVnZ2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZyZWVUeXBlIG5vdyBjb21lcyB3aXRoIGFuIGludGVncmF0ZWQgbWVtb3J5IGRlYnVnZ2VyIHRoYXQgaXMgICAgICAgKi8KKyAgLyogICBjYXBhYmxlIG9mIGRldGVjdGluZyBzaW1wbGUgZXJyb3JzIGxpa2UgbWVtb3J5IGxlYWtzIG9yIGRvdWJsZSAgICAgICovCisgIC8qICAgZGVsZXRlcy4gIFRvIGNvbXBpbGUgaXQgd2l0aGluIHlvdXIgYnVpbGQgb2YgdGhlIGxpYnJhcnksIHlvdSAgICAgICAqLworICAvKiAgIHNob3VsZCBkZWZpbmUgRlRfREVCVUdfTUVNT1JZIGhlcmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgTm90ZSB0aGF0IHRoZSBtZW1vcnkgZGVidWdnZXIgaXMgb25seSBhY3RpdmF0ZWQgYXQgcnVudGltZSB3aGVuICAgICAqLworICAvKiAgIHdoZW4gdGhlIF9lbnZpcm9ubWVudF8gdmFyaWFibGUgYEZUMl9ERUJVR19NRU1PUlknIGlzIGRlZmluZWQgYWxzbyEgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRG8gbm90ICN1bmRlZiB0aGlzIG1hY3JvIGhlcmUgc2luY2UgdGhlIGJ1aWxkIHN5c3RlbSBtaWdodCBkZWZpbmUgICAqLworICAvKiAgIGl0IGZvciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zIG9ubHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIEZUX0RFQlVHX01FTU9SWSAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBNb2R1bGUgZXJyb3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgSWYgdGhpcyBtYWNybyBpcyBzZXQgKHdoaWNoIGlzIF9ub3RfIHRoZSBkZWZhdWx0KSwgdGhlIGhpZ2hlciBieXRlICAqLworICAvKiAgIG9mIGFuIGVycm9yIGNvZGUgZ2l2ZXMgdGhlIG1vZHVsZSBpbiB3aGljaCB0aGUgZXJyb3IgaGFzIG9jY3VycmVkLCAgKi8KKyAgLyogICB3aGlsZSB0aGUgbG93ZXIgYnl0ZSBpcyB0aGUgcmVhbCBlcnJvciBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFNldHRpbmcgdGhpcyBtYWNybyBtYWtlcyBzZW5zZSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIG9ubHksIHNpbmNlICAgKi8KKyAgLyogICBpdCB3b3VsZCBicmVhayBzb3VyY2UgY29tcGF0aWJpbGl0eSBvZiBjZXJ0YWluIHByb2dyYW1zIHRoYXQgdXNlICAgICovCisgIC8qICAgRnJlZVR5cGUgMi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBNb3JlIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlcyBmdG1vZGVyci5oIGFuZCBmdGVycm9ycy5oLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogUG9zaXRpb24gSW5kZXBlbmRlbnQgQ29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIElmIHRoaXMgbWFjcm8gaXMgc2V0ICh3aGljaCBpcyBfbm90XyB0aGUgZGVmYXVsdCksIEZyZWVUeXBlMiB3aWxsICAgKi8KKyAgLyogICBhdm9pZCBjcmVhdGluZyBjb25zdGFudHMgdGhhdCByZXF1aXJlIGFkZHJlc3MgZml4dXBzLiAgSW5zdGVhZCB0aGUgICovCisgIC8qICAgY29uc3RhbnRzIHdpbGwgYmUgbW92ZWQgaW50byBhIHN0cnVjdCBhbmQgYWRkaXRpb25hbCBpbnRpYWxpemF0aW9uICAqLworICAvKiAgIGNvZGUgd2lsbCBiZSB1c2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgU2V0dGluZyB0aGlzIG1hY3JvIGlzIG5lZWRlZCBmb3Igc3lzdGVtcyB0aGF0IHByb2hpYml0IGFkZHJlc3MgICAgICAqLworICAvKiAgIGZpeHVwcywgc3VjaCBhcyBCUkVXLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgUyBGIE4gVCAgIEQgUiBJIFYgRSBSICAgIEMgTyBOIEYgSSBHIFUgUiBBIFQgSSBPIE4gICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUyBpZiB5b3Ugd2FudCB0byBzdXBwb3J0ICAgICAgICovCisgIC8qIGVtYmVkZGVkIGJpdG1hcHMgaW4gYWxsIGZvcm1hdHMgdXNpbmcgdGhlIFNGTlQgbW9kdWxlIChuYW1lbHkgICAgICAgICAqLworICAvKiBUcnVlVHlwZSAmIE9wZW5UeXBlKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSBUVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byAgICAqLworICAvKiBsb2FkIGFuZCBlbnVtZXJhdGUgdGhlIGdseXBoIFBvc3RzY3JpcHQgbmFtZXMgaW4gYSBUcnVlVHlwZSBvciAgICAgICAgKi8KKyAgLyogT3BlblR5cGUgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlIHRoYXQgd2hlbiB5b3UgZG8gbm90IGNvbXBpbGUgdGhlIGBQU05hbWVzJyBtb2R1bGUgYnkgdW5kZWZpbmluZyAgKi8KKyAgLyogdGhlIGFib3ZlIEZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUywgdGhlIGBzZm50JyBtb2R1bGUgd2lsbCAgICovCisgIC8qIGNvbnRhaW4gYWRkaXRpb25hbCBjb2RlIHVzZWQgdG8gcmVhZCB0aGUgUFMgTmFtZXMgdGFibGUgZnJvbSBhIGZvbnQuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogKEJ5IGRlZmF1bHQsIHRoZSBtb2R1bGUgdXNlcyBgUFNOYW1lcycgdG8gZXh0cmFjdCBnbHlwaCBuYW1lcy4pICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIFRUX0NPTkZJR19PUFRJT05fU0ZOVF9OQU1FUyBpZiB5b3VyIGFwcGxpY2F0aW9ucyBuZWVkIHRvICAgICAgICovCisgIC8qIGFjY2VzcyB0aGUgaW50ZXJuYWwgbmFtZSB0YWJsZSBpbiBhIFNGTlQtYmFzZWQgZm9ybWF0IGxpa2UgVHJ1ZVR5cGUgICAqLworICAvKiBvciBPcGVuVHlwZS4gIFRoZSBuYW1lIHRhYmxlIGNvbnRhaW5zIHZhcmlvdXMgc3RyaW5ncyB1c2VkIHRvICAgICAgICAgKi8KKyAgLyogZGVzY3JpYmUgdGhlIGZvbnQsIGxpa2UgZmFtaWx5IG5hbWUsIGNvcHlyaWdodCwgdmVyc2lvbiwgZXRjLiAgSXQgICAgICovCisgIC8qIGRvZXMgbm90IGNvbnRhaW4gYW55IGdseXBoIG5hbWUgdGhvdWdoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQWNjZXNzaW5nIFNGTlQgbmFtZXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gICAgICAgICovCisgIC8qIGBmcmVldHlwZS9mdHNuYW1lcy5oJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFRfQ09ORklHX09QVElPTl9TRk5UX05BTUVTCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRydWVUeXBlIENNYXAgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBIZXJlIHlvdSBjYW4gZmluZS10dW5lIHdoaWNoIFRydWVUeXBlIENNYXAgdGFibGUgZm9ybWF0IHNoYWxsIGJlICAgICovCisgIC8qICAgc3VwcG9ydGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMAorI2RlZmluZSBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMgorI2RlZmluZSBUVF9DT05GSUdfQ01BUF9GT1JNQVRfNAorI2RlZmluZSBUVF9DT05GSUdfQ01BUF9GT1JNQVRfNgorI2RlZmluZSBUVF9DT05GSUdfQ01BUF9GT1JNQVRfOAorI2RlZmluZSBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMTAKKyNkZWZpbmUgVFRfQ09ORklHX0NNQVBfRk9STUFUXzEyCisjZGVmaW5lIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF8xMworI2RlZmluZSBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMTQKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgIFQgUiBVIEUgVCBZIFAgRSAgIEQgUiBJIFYgRSBSICAgIEMgTyBOIEYgSSBHIFUgUiBBIFQgSSBPIE4gICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIFRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIgaWYgeW91IHdhbnQgdG8gY29tcGlsZSAgICovCisgIC8qIGEgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgaW4gdGhlIFRydWVUeXBlIGRyaXZlci4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQnkgdW5kZWZpbmluZyB0aGlzLCB5b3Ugd2lsbCBvbmx5IGNvbXBpbGUgdGhlIGNvZGUgbmVjZXNzYXJ5IHRvIGxvYWQgICovCisgIC8qIFRydWVUeXBlIGdseXBocyB3aXRob3V0IGhpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBEbyBub3QgI3VuZGVmIHRoaXMgbWFjcm8gaGVyZSwgc2luY2UgdGhlIGJ1aWxkIHN5c3RlbSBtaWdodCAgICAgICAgICovCisgIC8qICAgZGVmaW5lIGl0IGZvciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zIG9ubHkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBEZWZpbmUgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgICAgICAgKi8KKyAgLyogRVhQRVJJTUVOVEFMIHN1YnBpeGVsIGhpbnRpbmcgc3VwcG9ydCBpbnRvIHRoZSBUcnVlVHlwZSBkcml2ZXIuICBUaGlzICovCisgIC8qIHJlcGxhY2VzIHRoZSBuYXRpdmUgVHJ1ZVR5cGUgaGludGluZyBtZWNoYW5pc20gd2hlbiBhbnl0aGluZyBidXQgICAgICAqLworICAvKiBGVF9SRU5ERVJfTU9ERV9NT05PIGlzIHJlcXVlc3RlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEVuYWJsaW5nIHRoaXMgY2F1c2VzIHRoZSBUcnVlVHlwZSBkcml2ZXIgdG8gaWdub3JlIGluc3RydWN0aW9ucyB1bmRlciAqLworICAvKiBjZXJ0YWluIGNvbmRpdGlvbnMuICBUaGlzIGlzIGRvbmUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBndWlkZSBoZXJlLCAgKi8KKyAgLyogd2l0aCBzb21lIG1pbm9yIGRpZmZlcmVuY2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvY2xlYXJ0eXBlL3RydWV0eXBlY2xlYXJ0eXBlLmFzcHggKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEJ5IHVuZGVmaW5pbmcgdGhpcywgeW91IG9ubHkgY29tcGlsZSB0aGUgY29kZSBuZWNlc3NhcnkgdG8gaGludCAgICAgICAqLworICAvKiBUcnVlVHlwZSBnbHlwaHMgd2l0aCBuYXRpdmUgVFQgaGludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhpcyBvcHRpb24gcmVxdWlyZXMgVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUiB0byBiZSAgICAqLworICAvKiAgIGRlZmluZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJZiB5b3UgZGVmaW5lIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HLCBhIHNwZWNpYWwgdmVyc2lvbiAgKi8KKyAgLyogb2YgdGhlIFRydWVUeXBlIGJ5dGVjb2RlIGludGVycHJldGVyIGlzIHVzZWQgdGhhdCBkb2Vzbid0IGltcGxlbWVudCAgICovCisgIC8qIGFueSBvZiB0aGUgcGF0ZW50ZWQgb3Bjb2RlcyBhbmQgYWxnb3JpdGhtcy4gIFRoZSBwYXRlbnRzIHJlbGF0ZWQgdG8gICAqLworICAvKiBUcnVlVHlwZSBoaW50aW5nIGhhdmUgZXhwaXJlZCB3b3JsZHdpZGUgc2luY2UgTWF5IDIwMTA7IHRoaXMgb3B0aW9uICAgKi8KKyAgLyogaXMgbm93IGRlcHJlY2F0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlIHRoYXQgdGhlIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HIG1hY3JvIGlzICppZ25vcmVkKiAgKi8KKyAgLyogaWYgeW91IGRlZmluZSBUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSOyBpbiBvdGhlciB3b3JkcywgICovCisgIC8qIGVpdGhlciBkZWZpbmUgVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUiBvciAgICAgICAgICAgICAgICAqLworICAvKiBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORyBidXQgbm90IGJvdGggYXQgdGhlIHNhbWUgdGltZS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgbWFjcm8gaXMgb25seSB1c2VmdWwgZm9yIGEgc21hbGwgbnVtYmVyIG9mIGZvbnQgZmlsZXMgKG1vc3RseSAgICAqLworICAvKiBmb3IgQXNpYW4gc2NyaXB0cykgdGhhdCByZXF1aXJlIGJ5dGVjb2RlIGludGVycHJldGF0aW9uIHRvIHByb3Blcmx5ICAgKi8KKyAgLyogbG9hZCBnbHlwaHMuICBGb3IgYWxsIG90aGVyIGZvbnRzLCB0aGlzIHByb2R1Y2VzIHVucGxlYXNhbnQgcmVzdWx0cywgICovCisgIC8qIHRodXMgdGhlIHVucGF0ZW50ZWQgaW50ZXJwcmV0ZXIgaXMgbmV2ZXIgdXNlZCB0byBsb2FkIGdseXBocyBmcm9tICAgICAqLworICAvKiBUcnVlVHlwZSBmb250cyB1bmxlc3Mgb25lIG9mIHRoZSBmb2xsb3dpbmcgdHdvIG9wdGlvbnMgaXMgdXNlZC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgLSBUaGUgdW5wYXRlbnRlZCBpbnRlcnByZXRlciBpcyBleHBsaWNpdGx5IGFjdGl2YXRlZCBieSB0aGUgdXNlciAgICAqLworICAvKiAgICAgdGhyb3VnaCB0aGUgRlRfUEFSQU1fVEFHX1VOUEFURU5URURfSElOVElORyBwYXJhbWV0ZXIgdGFnICAgICAgICAgKi8KKyAgLyogICAgIHdoZW4gb3BlbmluZyB0aGUgRlRfRmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIC0gRnJlZVR5cGUgZGV0ZWN0cyB0aGF0IHRoZSBGVF9GYWNlIGNvcnJlc3BvbmRzIHRvIG9uZSBvZiB0aGUgICAgICAgKi8KKyAgLyogICAgIGB0cmljaycgZm9udHMgKGUuZy4sIGBNaW5nbGl1JykgaXQga25vd3MgYWJvdXQuICBUaGUgZm9udCBlbmdpbmUgICovCisgIC8qICAgICBjb250YWlucyBhIGhhcmQtY29kZWQgbGlzdCBvZiBmb250IG5hbWVzIGFuZCBvdGhlciBtYXRjaGluZyAgICAgICAqLworICAvKiAgICAgcGFyYW1ldGVycyAoc2VlIGZ1bmN0aW9uIGB0dF9mYWNlX2luaXQnIGluIGZpbGUgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMnKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBIZXJlIGEgc2FtcGxlIGNvZGUgc25pcHBldCBmb3IgdXNpbmcgRlRfUEFSQU1fVEFHX1VOUEFURU5URURfSElOVElORy4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgRlRfUGFyYW1ldGVyICBwYXJhbWV0ZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIEZUX09wZW5fQXJncyAgb3Blbl9hcmdzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIHBhcmFtZXRlci50YWcgPSBGVF9QQVJBTV9UQUdfVU5QQVRFTlRFRF9ISU5USU5HOyAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgb3Blbl9hcmdzLmZsYWdzICAgICAgPSBGVF9PUEVOX1BBVEhOQU1FIHwgRlRfT1BFTl9QQVJBTVM7ICAgICAgICAgKi8KKyAgLyogICAgIG9wZW5fYXJncy5wYXRobmFtZSAgID0gbXlfZm9udF9wYXRobmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBvcGVuX2FyZ3MubnVtX3BhcmFtcyA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgb3Blbl9hcmdzLnBhcmFtcyAgICAgPSAmcGFyYW1ldGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBlcnJvciA9IEZUX09wZW5fRmFjZSggbGlicmFyeSwgJm9wZW5fYXJncywgaW5kZXgsICZmYWNlICk7ICAgICAgICAqLworICAvKiAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBEZWZpbmUgVFRfQ09ORklHX09QVElPTl9JTlRFUlBSRVRFUl9TV0lUQ0ggdG8gY29tcGlsZSB0aGUgVHJ1ZVR5cGUgICAgKi8KKyAgLyogYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgd2l0aCBhIGh1Z2Ugc3dpdGNoIHN0YXRlbWVudCwgcmF0aGVyIHRoYW4gYSBjYWxsICovCisgIC8qIHRhYmxlLiAgVGhpcyByZXN1bHRzIGluIHNtYWxsZXIgYW5kIGZhc3RlciBjb2RlIGZvciBhIG51bWJlciBvZiAgICAgICAqLworICAvKiBhcmNoaXRlY3R1cmVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE5vdGUgaG93ZXZlciB0aGF0IG9uIHNvbWUgY29tcGlsZXIvcHJvY2Vzc29yIGNvbWJpbmF0aW9ucywgdW5kZWZpbmluZyAqLworICAvKiB0aGlzIG1hY3JvIHdpbGwgZ2VuZXJhdGUgZmFzdGVyLCB0aG91Z2ggbGFyZ2VyLCBjb2RlLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX0NPTkZJR19PUFRJT05fSU5URVJQUkVURVJfU1dJVENICisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSBUVF9DT05GSUdfT1BUSU9OX0NPTVBPTkVOVF9PRkZTRVRfU0NBTEVEIHRvIGNvbXBpbGUgdGhlICAgICAgICAqLworICAvKiBUcnVlVHlwZSBnbHlwaCBsb2FkZXIgdG8gdXNlIEFwcGxlJ3MgZGVmaW5pdGlvbiBvZiBob3cgdG8gaGFuZGxlICAgICAgKi8KKyAgLyogY29tcG9uZW50IG9mZnNldHMgaW4gY29tcG9zaXRlIGdseXBocy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBcHBsZSBhbmQgTVMgZGlzYWdyZWUgb24gdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY29tcG9uZW50IG9mZnNldHMgICAgKi8KKyAgLyogaW4gY29tcG9zaXRlcy4gIEFwcGxlIHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSBzY2FsZWQgYnkgdGhlIHNjYWxpbmcgICovCisgIC8qIGZhY3RvcnMgaW4gdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCAocm91Z2hseSwgaXQncyBtb3JlIGNvbXBsZXgpICAgICAqLworICAvKiB3aGlsZSBNUyBzYXlzIHRoZXkgc2hvdWxkIG5vdC4gIE9wZW5UeXBlIGRlZmluZXMgdHdvIGJpdHMgaW4gdGhlICAgICAgKi8KKyAgLyogY29tcG9zaXRlIGZsYWdzIGFycmF5IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRpc2FtYmlndWF0ZSwgYnV0IG9sZCAgICAgICovCisgIC8qIGZvbnRzIHdpbGwgbm90IGhhdmUgdGhlbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdHNwZWMvZ2x5Zi5odG0gICAgICAgICAgICAgICAgICovCisgIC8qICAgaHR0cDovL2ZvbnRzLmFwcGxlLmNvbS9UVFJlZk1hbi9STTA2L0NoYXA2Z2x5Zi5odG1sICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiBUVF9DT05GSUdfT1BUSU9OX0NPTVBPTkVOVF9PRkZTRVRfU0NBTEVECisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUIGlmIHlvdSB3YW50IHRvIGluY2x1ZGUgICAgICAgICAqLworICAvKiBzdXBwb3J0IGZvciBBcHBsZSdzIGRpc3RvcnRhYmxlIGZvbnQgdGVjaG5vbG9neSAoZnZhciwgZ3ZhciwgY3ZhciwgICAgKi8KKyAgLyogYW5kIGF2YXIgdGFibGVzKS4gIFRoaXMgaGFzIG1hbnkgc2ltaWxhcml0aWVzIHRvIFR5cGUgMSBNdWx0aXBsZSAgICAgICovCisgIC8qIE1hc3RlcnMgc3VwcG9ydC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSBUVF9DT05GSUdfT1BUSU9OX0JERiBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIHN1cHBvcnQgZm9yICAgICAgICAqLworICAvKiBhbiBlbWJlZGRlZCBgQkRGICcgdGFibGUgd2l0aGluIFNGTlQtYmFzZWQgYml0bWFwIGZvcm1hdHMuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgVFRfQ09ORklHX09QVElPTl9CREYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgVCBZIFAgRSAxICAgRCBSIEkgViBFIFIgICAgQyBPIE4gRiBJIEcgVSBSIEEgVCBJIE8gTiAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUMV9NQVhfRElDVF9ERVBUSCBpcyB0aGUgbWF4aW11bSBkZXB0aCBvZiBuZXN0IGRpY3Rpb25hcmllcyBhbmQgICAgICAgKi8KKyAgLyogYXJyYXlzIGluIHRoZSBUeXBlIDEgc3RyZWFtIChzZWUgdDFsb2FkLmMpLiAgQSBtaW5pbXVtIG9mIDQgaXMgICAgICAgICovCisgIC8qIHJlcXVpcmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVDFfTUFYX0RJQ1RfREVQVEggIDUKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVDFfTUFYX1NVQlJTX0NBTExTIGRldGFpbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5lc3RlZCBzdWItcm91dGluZSAgICovCisgIC8qIGNhbGxzIGR1cmluZyBnbHlwaCBsb2FkaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVDFfTUFYX1NVQlJTX0NBTExTICAxNgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUMV9NQVhfQ0hBUlNUUklOR19PUEVSQU5EUyBpcyB0aGUgY2hhcnN0cmluZyBzdGFjaydzIGNhcGFjaXR5LiAgQSAgICAgKi8KKyAgLyogbWluaW11bSBvZiAxNiBpcyByZXF1aXJlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgQ2hpbmVzZSBmb250IE1pbmdUaUVHLU1lZGl1bSAoQ05TIDExNjQzIGNoYXJhY3RlciBzZXQpIG5lZWRzIDI1Ni4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFQxX01BWF9DSEFSU1RSSU5HU19PUEVSQU5EUyAgNTEyCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSB0aGlzIGNvbmZpZ3VyYXRpb24gbWFjcm8gaWYgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgICAgICAgICAgICAqLworICAvKiBjb21waWxhdGlvbiBvZiBgdDFhZm0nLCB3aGljaCBpcyBpbiBjaGFyZ2Ugb2YgcmVhZGluZyBUeXBlIDEgQUZNICAgICAgKi8KKyAgLyogZmlsZXMgaW50byBhbiBleGlzdGluZyBmYWNlLiAgTm90ZSB0aGF0IGlmIHNldCwgdGhlIFQxIGRyaXZlciB3aWxsIGJlICovCisgIC8qIHVuYWJsZSB0byBwcm9kdWNlIGtlcm5pbmcgZGlzdGFuY2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX0FGTQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBEZWZpbmUgdGhpcyBjb25maWd1cmF0aW9uIG1hY3JvIGlmIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlICAgICAgICAgICAgKi8KKyAgLyogY29tcGlsYXRpb24gb2YgdGhlIE11bHRpcGxlIE1hc3RlcnMgZm9udCBzdXBwb3J0IGluIHRoZSBUeXBlIDEgICAgICAgICovCisgIC8qIGRyaXZlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlQKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgQyBGIEYgICBEIFIgSSBWIEUgUiAgICBDIE8gTiBGIEkgRyBVIFIgQSBUIEkgTyBOICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBDRkZfQ09ORklHX09QVElPTl9PTERfRU5HSU5FIGNvbnRyb2xzIHdoZXRoZXIgdGhlIHByZS1BZG9iZSBDRkYgICAgICAgKi8KKyAgLyogZW5naW5lIGdldHMgY29tcGlsZWQgaW50byBGcmVlVHlwZS4gIElmIGRlZmluZWQsIGl0IGlzIHBvc3NpYmxlIHRvICAgICovCisgIC8qIHN3aXRjaCBiZXR3ZWVuIHRoZSB0d28gZW5naW5lcyB1c2luZyB0aGUgYGhpbnRpbmctZW5naW5lJyBwcm9wZXJ0eSBvZiAqLworICAvKiB0aGUgY2ZmIGRyaXZlciBtb2R1bGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIENGRl9DT05GSUdfT1BUSU9OX09MRF9FTkdJTkUgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgIEEgVSBUIE8gRiBJIFQgICBNIE8gRCBVIEwgRSAgICBDIE8gTiBGIEkgRyBVIFIgQSBUIEkgTyBOICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBDb21waWxlIGF1dG9maXQgbW9kdWxlIHdpdGggQ0pLIChDaGluZXNlLCBKYXBhbmVzZSwgS29yZWFuKSBzY3JpcHQgICAgKi8KKyAgLyogc3VwcG9ydC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBBRl9DT05GSUdfT1BUSU9OX0NKSworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQ29tcGlsZSBhdXRvZml0IG1vZHVsZSB3aXRoIEluZGljIHNjcmlwdCBzdXBwb3J0LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBBRl9DT05GSUdfT1BUSU9OX0lORElDCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBDb21waWxlIGF1dG9maXQgbW9kdWxlIHdpdGggd2FycCBoaW50aW5nLiAgVGhlIGlkZWEgb2YgdGhlIHdhcnBpbmcgICAgKi8KKyAgLyogY29kZSBpcyB0byBzbGlnaHRseSBzY2FsZSBhbmQgc2hpZnQgYSBnbHlwaCB3aXRoaW4gYSBzaW5nbGUgZGltZW5zaW9uICovCisgIC8qIHNvIHRoYXQgYXMgbXVjaCBvZiBpdHMgc2VnbWVudHMgYXJlIGFsaWduZWQgKG1vcmUgb3IgbGVzcykgb24gdGhlICAgICAqLworICAvKiBncmlkLiAgVG8gZmluZCBvdXQgdGhlIG9wdGltYWwgc2NhbGluZyBhbmQgc2hpZnRpbmcgdmFsdWUsIHZhcmlvdXMgICAgKi8KKyAgLyogcGFyYW1ldGVyIGNvbWJpbmF0aW9ucyBhcmUgdHJpZWQgYW5kIHNjb3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGV4cGVyaW1lbnRhbCBvcHRpb24gaXMgb25seSBhY3RpdmUgaWYgdGhlIHJlbmRlciBtb2RlIGlzICAgICAgICAgKi8KKyAgLyogRlRfUkVOREVSX01PREVfTElHSFQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBBRl9DT05GSUdfT1BUSU9OX1VTRV9XQVJQRVIgKi8KKworICAvKiAqLworCisKKyAgLyoKKyAgICogIFRoaXMgbWFjcm8gaXMgb2Jzb2xldGUuICBTdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQgaW4gRnJlZVR5cGUKKyAgICogIHZlcnNpb24gMi41LgorICAgKi8KKy8qICNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9PTERfSU5URVJOQUxTICovCisKKworICAvKgorICAgKiBUaGlzIG1hY3JvIGlzIGRlZmluZWQgaWYgZWl0aGVyIHVucGF0ZW50ZWQgb3IgbmF0aXZlIFRydWVUeXBlCisgICAqIGhpbnRpbmcgaXMgcmVxdWVzdGVkIGJ5IHRoZSBkZWZpbml0aW9ucyBhYm92ZS4KKyAgICovCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUgorI2RlZmluZSAgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisjdW5kZWYgICBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORworI2VsaWYgZGVmaW5lZCBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORworI2RlZmluZSAgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisjZW5kaWYKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX0ZUT1BUSU9OX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiZTA0ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmgKQEAgLTAsMCArMSwxNzQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c3RkbGliLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBTlNJLXNwZWNpZmljIGxpYnJhcnkgYW5kIGhlYWRlciBjb25maWd1cmF0aW9uIGZpbGUgKHNwZWNpZmljYXRpb24gICAqLworLyogICAgb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDItMjAwNywgMjAwOSwgMjAxMS0yMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBncm91cCBhbGwgI2luY2x1ZGVzIHRvIHRoZSBBTlNJIEMgbGlicmFyeSB0aGF0ICAgKi8KKyAgLyogRnJlZVR5cGUgbm9ybWFsbHkgcmVxdWlyZXMuICBJdCBhbHNvIGRlZmluZXMgbWFjcm9zIHRvIHJlbmFtZSB0aGUgICAgICovCisgIC8qIHN0YW5kYXJkIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIEZyZWVUeXBlIHNvdXJjZSBjb2RlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTG9hZCBhIGZpbGUgd2hpY2ggZGVmaW5lcyBfX0ZUU1RETElCX0hfXyBiZWZvcmUgdGhpcyBvbmUgdG8gb3ZlcnJpZGUgICovCisgIC8qIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUU1RETElCX0hfXworI2RlZmluZSBfX0ZUU1RETElCX0hfXworCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2RlZmluZSBmdF9wdHJkaWZmX3QgIHB0cmRpZmZfdAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVnZXIgbGltaXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFVJTlRfTUFYIGFuZCBVTE9OR19NQVggYXJlIHVzZWQgdG8gYXV0b21hdGljYWxseSBjb21wdXRlIHRoZSBzaXplICAqLworICAvKiBvZiBgaW50JyBhbmQgYGxvbmcnIGluIGJ5dGVzIGF0IGNvbXBpbGUtdGltZS4gIFNvIGZhciwgdGhpcyB3b3JrcyAgKi8KKyAgLyogZm9yIGFsbCBwbGF0Zm9ybXMgdGhlIGxpYnJhcnkgaGFzIGJlZW4gdGVzdGVkIG9uLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlIHRoYXQgb24gdGhlIGV4dHJlbWVseSByYXJlIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBwcm92aWRlICAgICAgKi8KKyAgLyogaW50ZWdlciB0eXBlcyB0aGF0IGFyZSBfZXhhY3RseV8gMTYgYW5kIDMyIGJpdHMgd2lkZSAoZS5nLiBzb21lICAgICovCisgIC8qIG9sZCBDcmF5cyB3aGVyZSBgaW50JyBpcyAzNiBiaXRzKSwgd2UgZG8gbm90IG1ha2UgYW55IGd1YXJhbnRlZSAgICAqLworICAvKiBhYm91dCB0aGUgY29ycmVjdCBiZWhhdmlvdXIgb2YgRlQyIHdpdGggYWxsIGZvbnRzLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEluIHRoZXNlIGNhc2UsIGBmdGNvbmZpZy5oJyB3aWxsIHJlZnVzZSB0byBjb21waWxlIGFueXdheSB3aXRoIGEgICAqLworICAvKiBtZXNzYWdlIGxpa2UgYGNvdWxkbid0IGZpbmQgMzItYml0IHR5cGUnIG9yIHNvbWV0aGluZyBzaW1pbGFyLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworI2RlZmluZSBGVF9DSEFSX0JJVCAgICBDSEFSX0JJVAorI2RlZmluZSBGVF9VU0hPUlRfTUFYICBVU0hSVF9NQVgKKyNkZWZpbmUgRlRfSU5UX01BWCAgICAgSU5UX01BWAorI2RlZmluZSBGVF9JTlRfTUlOICAgICBJTlRfTUlOCisjZGVmaW5lIEZUX1VJTlRfTUFYICAgIFVJTlRfTUFYCisjZGVmaW5lIEZUX1VMT05HX01BWCAgIFVMT05HX01BWAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIGFuZCBzdHJpbmcgcHJvY2Vzc2luZyAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vZnhjcnQvZnhfc3lzdGVtLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNkZWZpbmUgZnRfbWVtY2hyICAgRlhTWVNfbWVtY2hyCisjZGVmaW5lIGZ0X21lbWNtcCAgIEZYU1lTX21lbWNtcDMyCisjZGVmaW5lIGZ0X21lbWNweSAgIEZYU1lTX21lbWNweTMyCisjZGVmaW5lIGZ0X21lbW1vdmUgIEZYU1lTX21lbW1vdmUzMgorI2RlZmluZSBmdF9tZW1zZXQgICBGWFNZU19tZW1zZXQ4CisvLyNkZWZpbmUgZnRfc3RyY2F0ICAgRlhTWVNfc3RyY2F0CisjZGVmaW5lIGZ0X3N0cmNtcCAgIEZYU1lTX3N0cmNtcAorI2RlZmluZSBmdF9zdHJjcHkgICBGWFNZU19zdHJjcHkKKyNkZWZpbmUgZnRfc3RybGVuICAgRlhTWVNfc3RybGVuCisjZGVmaW5lIGZ0X3N0cm5jbXAgIEZYU1lTX3N0cm5jbXAKKyNkZWZpbmUgZnRfc3RybmNweSAgRlhTWVNfc3RybmNweQorI2RlZmluZSBmdF9zdHJyY2hyICBGWFNZU19zdHJyY2hyCisjZGVmaW5lIGZ0X3N0cnN0ciAgIEZYU1lTX3N0cnN0cgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaGFuZGxpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjZGVmaW5lIEZUX0ZJTEUgICAgIEZYU1lTX0ZJTEUKKyNkZWZpbmUgZnRfZmNsb3NlICAgRlhTWVNfZmNsb3NlCisjZGVmaW5lIGZ0X2ZvcGVuICAgIEZYU1lTX2ZvcGVuCisjZGVmaW5lIGZ0X2ZyZWFkICAgIEZYU1lTX2ZyZWFkCisjZGVmaW5lIGZ0X2ZzZWVrICAgIEZYU1lTX2ZzZWVrCisjZGVmaW5lIGZ0X2Z0ZWxsICAgIEZYU1lTX2Z0ZWxsCisjZGVmaW5lIGZ0X3NwcmludGYgIEZYU1lTX3NwcmludGYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvLyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2RlZmluZSBmdF9xc29ydCAgRlhTWVNfcXNvcnQKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgYWxsb2NhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjZGVmaW5lIGZ0X3NjYWxsb2MgICBjYWxsb2MKKyNkZWZpbmUgZnRfc2ZyZWUgICAgIGZyZWUKKyNkZWZpbmUgZnRfc21hbGxvYyAgIG1hbGxvYworI2RlZmluZSBmdF9zcmVhbGxvYyAgcmVhbGxvYworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzY2VsbGFuZW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNkZWZpbmUgZnRfYXRvbCAgIEZYU1lTX2F0b2kKKyNkZWZpbmUgZnRfbGFicyAgIGxhYnMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aW9uIGNvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvLyNpbmNsdWRlIDxzZXRqbXAuaD4KKworI2RlZmluZSBmdF9qbXBfYnVmICAgICBqbXBfYnVmICAvKiBub3RlOiB0aGlzIGNhbm5vdCBiZSBhIHR5cGVkZWYgc2luY2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgam1wX2J1ZiBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgIG9uIGNlcnRhaW4gcGxhdGZvcm1zICAgICAgICAgICAqLworCisjZGVmaW5lIGZ0X2xvbmdqbXAgICAgIGxvbmdqbXAKKyNkZWZpbmUgZnRfc2V0am1wKCBiICkgc2V0am1wKCAqKGZ0X2ptcF9idWYqKSAmKGIpICkgLyogc2FtZSB0aGluZyBoZXJlICovCisKKworICAvKiB0aGUgZm9sbG93aW5nIGlzIG9ubHkgdXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBpLmUuLCBpZiAqLworICAvKiBGVF9ERUJVR19MRVZFTF9FUlJPUiBvciBGVF9ERUJVR19MRVZFTF9UUkFDRSBhcmUgZGVmaW5lZCAgICAqLworCisjaW5jbHVkZSA8c3RkYXJnLmg+CisKKworI2VuZGlmIC8qIF9fRlRTVERMSUJfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzMTkyMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnJlZXR5cGUuaApAQCAtMCwwICsxLDQwMTYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgZnJlZXR5cGUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogICAgRnJlZVR5cGUgaGlnaC1sZXZlbCBBUEkgYW5kIGNvbW1vbiB0eXBlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovDQorLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8NCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLw0KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovDQorLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorDQorI2lmbmRlZiBfX0ZSRUVUWVBFX0hfXw0KKyNkZWZpbmUgX19GUkVFVFlQRV9IX18NCisNCisNCisjaWZuZGVmIEZUX0ZSRUVUWVBFX0gNCisjZXJyb3IgImBmdDJidWlsZC5oJyBoYXNuJ3QgYmVlbiBpbmNsdWRlZCB5ZXQhIg0KKyNlcnJvciAiUGxlYXNlIGFsd2F5cyB1c2UgbWFjcm9zIHRvIGluY2x1ZGUgRnJlZVR5cGUgaGVhZGVyIGZpbGVzLiINCisjZXJyb3IgIkV4YW1wbGU6Ig0KKyNlcnJvciAiICAjaW5jbHVkZSA8ZnQyYnVpbGQuaD4iDQorI2Vycm9yICIgICNpbmNsdWRlIEZUX0ZSRUVUWVBFX0giDQorI2VuZGlmDQorDQorDQorI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiDQorI2luY2x1ZGUgImNvbmZpZy9mdGNvbmZpZy5oIg0KKyNpbmNsdWRlICJmdHR5cGVzLmgiDQorI2luY2x1ZGUgImZ0ZXJyb3JzLmgiDQorDQorDQorRlRfQkVHSU5fSEVBREVSDQorDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB1c2VyX2FsbG9jYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBVc2VyIGFsbG9jYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBIb3cgY2xpZW50IGFwcGxpY2F0aW9ucyBzaG91bGQgYWxsb2NhdGUgRnJlZVR5cGUgZGF0YSBzdHJ1Y3R1cmVzLiAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBhc3N1bWVzIHRoYXQgc3RydWN0dXJlcyBhbGxvY2F0ZWQgYnkgdGhlIHVzZXIgYW5kIHBhc3NlZCAgKi8NCisgIC8qICAgIGFzIGFyZ3VtZW50cyBhcmUgemVyb2VkIG91dCBleGNlcHQgZm9yIHRoZSBhY3R1YWwgZGF0YS4gIEluIG90aGVyICAqLw0KKyAgLyogICAgd29yZHMsIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBgY2FsbG9jJyAob3IgdmFyaWFudHMgb2YgaXQpICAgICAgICovDQorICAvKiAgICBpbnN0ZWFkIG9mIGBtYWxsb2MnIGZvciBhbGxvY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgIEIgQSBTIEkgQyAgIFQgWSBQIEUgUyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGJhc2VfaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEJhc2UgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBGcmVlVHlwZX4yIGJhc2UgZm9udCBpbnRlcmZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHB1YmxpYyBoaWdoLWxldmVsIEFQSSBvZiBGcmVlVHlwZX4yLiAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8T3JkZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0xpYnJhcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0dseXBoU2xvdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfQ2hhck1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9FbmNvZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRmFjZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19TQ0FMQUJMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRkFDRV9GTEFHX0ZJWEVEX1NJWkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GQUNFX0ZMQUdfRklYRURfV0lEVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19IT1JJWk9OVEFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRkFDRV9GTEFHX1ZFUlRJQ0FMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GQUNFX0ZMQUdfU0ZOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19LRVJOSU5HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRkFDRV9GTEFHX01VTFRJUExFX01BU1RFUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19FWFRFUk5BTF9TVFJFQU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRkFDRV9GTEFHX0ZBU1RfR0xZUEhTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GQUNFX0ZMQUdfSElOVEVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU1RZTEVfRkxBR19CT0xEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TVFlMRV9GTEFHX0lUQUxJQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2l6ZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TaXplX01ldHJpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2x5cGhTbG90UmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9HbHlwaF9NZXRyaWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1N1YkdseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9CaXRtYXBfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfSW5pdF9GcmVlVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9Eb25lX0ZyZWVUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTmV3X0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9Eb25lX0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX05ld19NZW1vcnlfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfT3Blbl9GYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9PcGVuX0FyZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1BhcmFtZXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfQXR0YWNoX0ZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9BdHRhY2hfU3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2V0X0NoYXJfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TZXRfUGl4ZWxfU2l6ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1JlcXVlc3RfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2VsZWN0X1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TaXplX1JlcXVlc3RfVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1NpemVfUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2V0X1RyYW5zZm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9Mb2FkX0dseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0dldF9DaGFyX0luZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2V0X05hbWVfSW5kZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9Mb2FkX0NoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfT1BFTl9NRU1PUlkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9PUEVOX1NUUkVBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX09QRU5fUEFUSE5BTUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfT1BFTl9EUklWRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9PUEVOX1BBUkFNUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTE9BRF9ERUZBVUxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9MT0FEX1JFTkRFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0xPQURfTU9OT0NIUk9NRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTE9BRF9MSU5FQVJfREVTSUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9MT0FEX05PX1NDQUxFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0xPQURfTk9fSElOVElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTE9BRF9OT19CSVRNQVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9MT0FEX0NST1BfQklUTUFQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9MT0FEX0lHTk9SRV9UUkFOU0ZPUk0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0xPQURfSUdOT1JFX0dMT0JBTF9BRFZBTkNFX1dJRFRIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTE9BRF9GT1JDRV9BVVRPSElOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9MT0FEX05PX1JFQ1VSU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0xPQURfUEVEQU5USUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9MT0FEX1RBUkdFVF9OT1JNQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0xPQURfVEFSR0VUX0xJR0hUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTE9BRF9UQVJHRVRfTU9OTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9MT0FEX1RBUkdFVF9MQ0QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0xPQURfVEFSR0VUX0xDRF9WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9SZW5kZXJfR2x5cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1JlbmRlcl9Nb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2V0X0tlcm5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9LZXJuaW5nX01vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0dldF9UcmFja19LZXJuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2V0X0dseXBoX05hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9HZXRfUG9zdHNjcmlwdF9OYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfQ2hhck1hcFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TZWxlY3RfQ2hhcm1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1NldF9DaGFybWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2V0X0NoYXJtYXBfSW5kZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZTVFlQRV9JTlNUQUxMQUJMRV9FTUJFRERJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRlNUWVBFX1JFU1RSSUNURURfTElDRU5TRV9FTUJFRERJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GU1RZUEVfUFJFVklFV19BTkRfUFJJTlRfRU1CRURESU5HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZTVFlQRV9FRElUQUJMRV9FTUJFRERJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRlNUWVBFX05PX1NVQlNFVFRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GU1RZUEVfQklUTUFQX0VNQkVERElOR19PTkxZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2V0X0ZTVHlwZV9GbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2x5cGhfTWV0cmljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCB0aGUgbWV0cmljcyBvZiBhIHNpbmdsZSBnbHlwaC4gIFRoZSAgICAgICovDQorICAvKiAgICB2YWx1ZXMgYXJlIGV4cHJlc3NlZCBpbiAyNi42IGZyYWN0aW9uYWwgcGl4ZWwgZm9ybWF0OyBpZiB0aGUgZmxhZyAgKi8NCisgIC8qICAgIEBGVF9MT0FEX05PX1NDQUxFIGhhcyBiZWVuIHVzZWQgd2hpbGUgbG9hZGluZyB0aGUgZ2x5cGgsIHZhbHVlcyAgICAqLw0KKyAgLyogICAgYXJlIGV4cHJlc3NlZCBpbiBmb250IHVuaXRzIGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgd2lkdGggOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRoZSBnbHlwaCdzIHdpZHRoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgaGVpZ2h0IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRoZSBnbHlwaCdzIGhlaWdodC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgaG9yaUJlYXJpbmdYIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIExlZnQgc2lkZSBiZWFyaW5nIGZvciBob3Jpem9udGFsIGxheW91dC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgaG9yaUJlYXJpbmdZIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRvcCBzaWRlIGJlYXJpbmcgZm9yIGhvcml6b250YWwgbGF5b3V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgaG9yaUFkdmFuY2UgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEFkdmFuY2Ugd2lkdGggZm9yIGhvcml6b250YWwgbGF5b3V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgdmVydEJlYXJpbmdYIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIExlZnQgc2lkZSBiZWFyaW5nIGZvciB2ZXJ0aWNhbCBsYXlvdXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgdmVydEJlYXJpbmdZIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRvcCBzaWRlIGJlYXJpbmcgZm9yIHZlcnRpY2FsIGxheW91dC4gIExhcmdlciBwb3NpdGl2ZSB2YWx1ZXMgICAgKi8NCisgIC8qICAgICAgbWVhbiBmdXJ0aGVyIGJlbG93IHRoZSB2ZXJ0aWNhbCBnbHlwaCBvcmlnaW4uICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB2ZXJ0QWR2YW5jZSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgQWR2YW5jZSBoZWlnaHQgZm9yIHZlcnRpY2FsIGxheW91dC4gIFBvc2l0aXZlIHZhbHVlcyBtZWFuIHRoZSAgICAqLw0KKyAgLyogICAgICBnbHlwaCBoYXMgYSBwb3NpdGl2ZSBhZHZhbmNlIGRvd253YXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgSWYgbm90IGRpc2FibGVkIHdpdGggQEZUX0xPQURfTk9fSElOVElORywgdGhlIHZhbHVlcyByZXByZXNlbnQgICAgICovDQorICAvKiAgICBkaW1lbnNpb25zIG9mIHRoZSBoaW50ZWQgZ2x5cGggKGluIGNhc2UgaGludGluZyBpcyBhcHBsaWNhYmxlKS4gICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgU3Ryb2tpbmcgYSBnbHlwaCB3aXRoIGFuIG91dHNpZGUgYm9yZGVyIGRvZXMgbm90IGluY3JlYXNlICAgICAgICAgICovDQorICAvKiAgICBgaG9yaUFkdmFuY2UnIG9yIGB2ZXJ0QWR2YW5jZSc7IHlvdSBoYXZlIHRvIG1hbnVhbGx5IGFkanVzdCB0aGVzZSAgKi8NCisgIC8qICAgIHZhbHVlcyB0byBhY2NvdW50IGZvciB0aGUgYWRkZWQgd2lkdGggYW5kIGhlaWdodC4gICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICB0eXBlZGVmIHN0cnVjdCAgRlRfR2x5cGhfTWV0cmljc18NCisgIHsNCisgICAgRlRfUG9zICB3aWR0aDsNCisgICAgRlRfUG9zICBoZWlnaHQ7DQorDQorICAgIEZUX1BvcyAgaG9yaUJlYXJpbmdYOw0KKyAgICBGVF9Qb3MgIGhvcmlCZWFyaW5nWTsNCisgICAgRlRfUG9zICBob3JpQWR2YW5jZTsNCisNCisgICAgRlRfUG9zICB2ZXJ0QmVhcmluZ1g7DQorICAgIEZUX1BvcyAgdmVydEJlYXJpbmdZOw0KKyAgICBGVF9Qb3MgIHZlcnRBZHZhbmNlOw0KKw0KKyAgfSBGVF9HbHlwaF9NZXRyaWNzOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfQml0bWFwX1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgbW9kZWxzIHRoZSBtZXRyaWNzIG9mIGEgYml0bWFwIHN0cmlrZSAoaS5lLiwgYSBzZXQgICovDQorICAvKiAgICBvZiBnbHlwaHMgZm9yIGEgZ2l2ZW4gcG9pbnQgc2l6ZSBhbmQgcmVzb2x1dGlvbikgaW4gYSBiaXRtYXAgZm9udC4gKi8NCisgIC8qICAgIEl0IGlzIHVzZWQgZm9yIHRoZSBgYXZhaWxhYmxlX3NpemVzJyBmaWVsZCBvZiBARlRfRmFjZS4gICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGhlaWdodCA6OiBUaGUgdmVydGljYWwgZGlzdGFuY2UsIGluIHBpeGVscywgYmV0d2VlbiB0d28gICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgIGNvbnNlY3V0aXZlIGJhc2VsaW5lcy4gIEl0IGlzIGFsd2F5cyBwb3NpdGl2ZS4gICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHdpZHRoICA6OiBUaGUgYXZlcmFnZSB3aWR0aCwgaW4gcGl4ZWxzLCBvZiBhbGwgZ2x5cGhzIGluIHRoZSAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgIHN0cmlrZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHNpemUgICA6OiBUaGUgbm9taW5hbCBzaXplIG9mIHRoZSBzdHJpa2UgaW4gMjYuNiBmcmFjdGlvbmFsICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgIHBvaW50cy4gIFRoaXMgZmllbGQgaXMgbm90IHZlcnkgdXNlZnVsLiAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHhfcHBlbSA6OiBUaGUgaG9yaXpvbnRhbCBwcGVtIChub21pbmFsIHdpZHRoKSBpbiAyNi42IGZyYWN0aW9uYWwgICAqLw0KKyAgLyogICAgICAgICAgICAgIHBpeGVscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHlfcHBlbSA6OiBUaGUgdmVydGljYWwgcHBlbSAobm9taW5hbCBoZWlnaHQpIGluIDI2LjYgZnJhY3Rpb25hbCAgICAqLw0KKyAgLyogICAgICAgICAgICAgIHBpeGVscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgV2luZG93cyBGTlQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRoZSBub21pbmFsIHNpemUgZ2l2ZW4gaW4gYSBGTlQgZm9udCBpcyBub3QgcmVsaWFibGUuICBUaHVzIHdoZW4gKi8NCisgIC8qICAgICAgdGhlIGRyaXZlciBmaW5kcyBpdCBpbmNvcnJlY3QsIGl0IHNldHMgYHNpemUnIHRvIHNvbWUgY2FsY3VsYXRlZCAqLw0KKyAgLyogICAgICB2YWx1ZXMgYW5kIHNldHMgYHhfcHBlbScgYW5kIGB5X3BwZW0nIHRvIHRoZSBwaXhlbCB3aWR0aCBhbmQgICAgICovDQorICAvKiAgICAgIGhlaWdodCBnaXZlbiBpbiB0aGUgZm9udCwgcmVzcGVjdGl2ZWx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVHJ1ZVR5cGUgZW1iZWRkZWQgYml0bWFwczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIGBzaXplJywgYHdpZHRoJywgYW5kIGBoZWlnaHQnIHZhbHVlcyBhcmUgbm90IGNvbnRhaW5lZCBpbiB0aGUgICAgKi8NCisgIC8qICAgICAgYml0bWFwIHN0cmlrZSBpdHNlbGYuICBUaGV5IGFyZSBjb21wdXRlZCBmcm9tIHRoZSBnbG9iYWwgZm9udCAgICAqLw0KKyAgLyogICAgICBwYXJhbWV0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIHR5cGVkZWYgc3RydWN0ICBGVF9CaXRtYXBfU2l6ZV8NCisgIHsNCisgICAgRlRfU2hvcnQgIGhlaWdodDsNCisgICAgRlRfU2hvcnQgIHdpZHRoOw0KKw0KKyAgICBGVF9Qb3MgICAgc2l6ZTsNCisNCisgICAgRlRfUG9zICAgIHhfcHBlbTsNCisgICAgRlRfUG9zICAgIHlfcHBlbTsNCisNCisgIH0gRlRfQml0bWFwX1NpemU7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgIE8gQiBKIEUgQyBUICAgQyBMIEEgUyBTIEUgUyAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0xpYnJhcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgRnJlZVR5cGUgbGlicmFyeSBpbnN0YW5jZS4gIEVhY2ggYGxpYnJhcnknIGlzICAgICAgICAqLw0KKyAgLyogICAgY29tcGxldGVseSBpbmRlcGVuZGVudCBmcm9tIHRoZSBvdGhlcnM7IGl0IGlzIHRoZSBgcm9vdCcgb2YgYSBzZXQgICovDQorICAvKiAgICBvZiBvYmplY3RzIGxpa2UgZm9udHMsIGZhY2VzLCBzaXplcywgZXRjLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgSXQgYWxzbyBlbWJlZHMgYSBtZW1vcnkgbWFuYWdlciAoc2VlIEBGVF9NZW1vcnkpLCBhcyB3ZWxsIGFzIGEgICAgICovDQorICAvKiAgICBzY2FuLWxpbmUgY29udmVydGVyIG9iamVjdCAoc2VlIEBGVF9SYXN0ZXIpLiAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgSW4gbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb25zLCBtYWtlIHN1cmUgdGhhdCB0aGUgc2FtZSBGVF9MaWJyYXJ5ICovDQorICAvKiAgICBvYmplY3Qgb3IgYW55IG9mIGl0cyBjaGlsZHJlbiBkb2Vzbid0IGdldCBhY2Nlc3NlZCBpbiBwYXJhbGxlbC4gICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBMaWJyYXJ5IG9iamVjdHMgYXJlIG5vcm1hbGx5IGNyZWF0ZWQgYnkgQEZUX0luaXRfRnJlZVR5cGUsIGFuZCAgICAgKi8NCisgIC8qICAgIGRlc3Ryb3llZCB3aXRoIEBGVF9Eb25lX0ZyZWVUeXBlLiAgSWYgeW91IG5lZWQgcmVmZXJlbmNlLWNvdW50aW5nICAqLw0KKyAgLyogICAgKGNmLiBARlRfUmVmZXJlbmNlX0xpYnJhcnkpLCB1c2UgQEZUX05ld19MaWJyYXJ5IGFuZCAgICAgICAgICAgICAgICovDQorICAvKiAgICBARlRfRG9uZV9MaWJyYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfTGlicmFyeVJlY18gICpGVF9MaWJyYXJ5Ow0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBnaXZlbiBGcmVlVHlwZSBtb2R1bGUgb2JqZWN0LiAgRWFjaCBtb2R1bGUgY2FuIGJlIGEgICovDQorICAvKiAgICBmb250IGRyaXZlciwgYSByZW5kZXJlciwgb3IgYW55dGhpbmcgZWxzZSB0aGF0IHByb3ZpZGVzIHNlcnZpY2VzICAgKi8NCisgIC8qICAgIHRvIHRoZSBmb3JtZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICB0eXBlZGVmIHN0cnVjdCBGVF9Nb2R1bGVSZWNfKiAgRlRfTW9kdWxlOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRHJpdmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBnaXZlbiBGcmVlVHlwZSBmb250IGRyaXZlciBvYmplY3QuICBFYWNoIGZvbnQgZHJpdmVyICovDQorICAvKiAgICBpcyBhIHNwZWNpYWwgbW9kdWxlIGNhcGFibGUgb2YgY3JlYXRpbmcgZmFjZXMgZnJvbSBmb250IGZpbGVzLiAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfRHJpdmVyUmVjXyogIEZUX0RyaXZlcjsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1JlbmRlcmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgZ2l2ZW4gRnJlZVR5cGUgcmVuZGVyZXIuICBBIHJlbmRlcmVyIGlzIGEgc3BlY2lhbCAgICAqLw0KKyAgLyogICAgbW9kdWxlIGluIGNoYXJnZSBvZiBjb252ZXJ0aW5nIGEgZ2x5cGggaW1hZ2UgdG8gYSBiaXRtYXAsIHdoZW4gICAgICovDQorICAvKiAgICBuZWNlc3NhcnkuICBFYWNoIHJlbmRlcmVyIHN1cHBvcnRzIGEgZ2l2ZW4gZ2x5cGggaW1hZ2UgZm9ybWF0LCBhbmQgKi8NCisgIC8qICAgIG9uZSBvciBtb3JlIHRhcmdldCBzdXJmYWNlIGRlcHRocy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICB0eXBlZGVmIHN0cnVjdCBGVF9SZW5kZXJlclJlY18qICBGVF9SZW5kZXJlcjsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgZ2l2ZW4gdHlwb2dyYXBoaWMgZmFjZSBvYmplY3QuICBBIGZhY2Ugb2JqZWN0IG1vZGVscyAqLw0KKyAgLyogICAgYSBnaXZlbiB0eXBlZmFjZSwgaW4gYSBnaXZlbiBzdHlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRWFjaCBmYWNlIG9iamVjdCBhbHNvIG93bnMgYSBzaW5nbGUgQEZUX0dseXBoU2xvdCBvYmplY3QsIGFzIHdlbGwgICovDQorICAvKiAgICBhcyBvbmUgb3IgbW9yZSBARlRfU2l6ZSBvYmplY3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVXNlIEBGVF9OZXdfRmFjZSBvciBARlRfT3Blbl9GYWNlIHRvIGNyZWF0ZSBhIG5ldyBmYWNlIG9iamVjdCBmcm9tICovDQorICAvKiAgICBhIGdpdmVuIGZpbGVwYXRobmFtZSBvciBhIGN1c3RvbSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVXNlIEBGVF9Eb25lX0ZhY2UgdG8gZGVzdHJveSBpdCAoYWxvbmcgd2l0aCBpdHMgc2xvdCBhbmQgc2l6ZXMpLiAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxBbHNvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgU2VlIEBGVF9GYWNlUmVjIGZvciB0aGUgcHVibGljbHkgYWNjZXNzaWJsZSBmaWVsZHMgb2YgYSBnaXZlbiBmYWNlICovDQorICAvKiAgICBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBoYW5kbGUgdG8gYW4gb2JqZWN0IHVzZWQgdG8gbW9kZWwgYSBmYWNlIHNjYWxlZCB0byBhIGdpdmVuICAgICAgICovDQorICAvKiAgICBjaGFyYWN0ZXIgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBFYWNoIEBGVF9GYWNlIGhhcyBhbiBfYWN0aXZlXyBARlRfU2l6ZSBvYmplY3QgdGhhdCBpcyB1c2VkIGJ5ICAgICAgKi8NCisgIC8qICAgIGZ1bmN0aW9ucyBsaWtlIEBGVF9Mb2FkX0dseXBoIHRvIGRldGVybWluZSB0aGUgc2NhbGluZyAgICAgICAgICAgICAqLw0KKyAgLyogICAgdHJhbnNmb3JtYXRpb24gd2hpY2ggaXMgdXNlZCB0byBsb2FkIGFuZCBoaW50IGdseXBocyBhbmQgbWV0cmljcy4gICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFlvdSBjYW4gdXNlIEBGVF9TZXRfQ2hhcl9TaXplLCBARlRfU2V0X1BpeGVsX1NpemVzLCAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQEZUX1JlcXVlc3RfU2l6ZSBvciBldmVuIEBGVF9TZWxlY3RfU2l6ZSB0byBjaGFuZ2UgdGhlIGNvbnRlbnQgICAgICovDQorICAvKiAgICAoaS5lLiwgdGhlIHNjYWxpbmcgdmFsdWVzKSBvZiB0aGUgYWN0aXZlIEBGVF9TaXplLiAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgWW91IGNhbiB1c2UgQEZUX05ld19TaXplIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIHNpemUgb2JqZWN0cyBmb3IgYSAgICovDQorICAvKiAgICBnaXZlbiBARlRfRmFjZSwgYnV0IHRoZXkgd29uJ3QgYmUgdXNlZCBieSBvdGhlciBmdW5jdGlvbnMgdW50aWwgICAgKi8NCisgIC8qICAgIHlvdSBhY3RpdmF0ZSBpdCB0aHJvdWdoIEBGVF9BY3RpdmF0ZV9TaXplLiAgT25seSBvbmUgc2l6ZSBjYW4gYmUgICAqLw0KKyAgLyogICAgYWN0aXZhdGVkIGF0IGFueSBnaXZlbiB0aW1lIHBlciBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxBbHNvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgU2VlIEBGVF9TaXplUmVjIGZvciB0aGUgcHVibGljbHkgYWNjZXNzaWJsZSBmaWVsZHMgb2YgYSBnaXZlbiBzaXplICovDQorICAvKiAgICBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU2l6ZVJlY18qICBGVF9TaXplOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2x5cGhTbG90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBnaXZlbiBgZ2x5cGggc2xvdCcuICBBIHNsb3QgaXMgYSBjb250YWluZXIgd2hlcmUgaXQgICovDQorICAvKiAgICBpcyBwb3NzaWJsZSB0byBsb2FkIGFueSBvZiB0aGUgZ2x5cGhzIGNvbnRhaW5lZCBpbiBpdHMgcGFyZW50ICAgICAgKi8NCisgIC8qICAgIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBJbiBvdGhlciB3b3JkcywgZWFjaCB0aW1lIHlvdSBjYWxsIEBGVF9Mb2FkX0dseXBoIG9yICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEBGVF9Mb2FkX0NoYXIsIHRoZSBzbG90J3MgY29udGVudCBpcyBlcmFzZWQgYnkgdGhlIG5ldyBnbHlwaCBkYXRhLCAqLw0KKyAgLyogICAgaS5lLiwgdGhlIGdseXBoJ3MgbWV0cmljcywgaXRzIGltYWdlIChiaXRtYXAgb3Igb3V0bGluZSksIGFuZCAgICAgICovDQorICAvKiAgICBvdGhlciBjb250cm9sIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEFsc28+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBTZWUgQEZUX0dseXBoU2xvdFJlYyBmb3IgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgZ2x5cGggZmllbGRzLiAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfR2x5cGhTbG90UmVjXyogIEZUX0dseXBoU2xvdDsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0NoYXJNYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgZ2l2ZW4gY2hhcmFjdGVyIG1hcC4gIEEgY2hhcm1hcCBpcyB1c2VkIHRvIHRyYW5zbGF0ZSAqLw0KKyAgLyogICAgY2hhcmFjdGVyIGNvZGVzIGluIGEgZ2l2ZW4gZW5jb2RpbmcgaW50byBnbHlwaCBpbmRleGVzIGZvciBpdHMgICAgICovDQorICAvKiAgICBwYXJlbnQncyBmYWNlLiAgU29tZSBmb250IGZvcm1hdHMgbWF5IHByb3ZpZGUgc2V2ZXJhbCBjaGFybWFwcyBwZXIgKi8NCisgIC8qICAgIGZvbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBFYWNoIGZhY2Ugb2JqZWN0IG93bnMgemVybyBvciBtb3JlIGNoYXJtYXBzLCBidXQgb25seSBvbmUgb2YgdGhlbSAgKi8NCisgIC8qICAgIGNhbiBiZSBgYWN0aXZlJyBhbmQgdXNlZCBieSBARlRfR2V0X0NoYXJfSW5kZXggb3IgQEZUX0xvYWRfQ2hhci4gICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgbGlzdCBvZiBhdmFpbGFibGUgY2hhcm1hcHMgaW4gYSBmYWNlIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSAgKi8NCisgIC8qICAgIGBmYWNlLT5udW1fY2hhcm1hcHMnIGFuZCBgZmFjZS0+Y2hhcm1hcHMnIGZpZWxkcyBvZiBARlRfRmFjZVJlYy4gICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgY3VycmVudGx5IGFjdGl2ZSBjaGFybWFwIGlzIGF2YWlsYWJsZSBhcyBgZmFjZS0+Y2hhcm1hcCcuICAgICAgKi8NCisgIC8qICAgIFlvdSBzaG91bGQgY2FsbCBARlRfU2V0X0NoYXJtYXAgdG8gY2hhbmdlIGl0LiAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFdoZW4gYSBuZXcgZmFjZSBpcyBjcmVhdGVkIChlaXRoZXIgdGhyb3VnaCBARlRfTmV3X0ZhY2Ugb3IgICAgICAgICAqLw0KKyAgLyogICAgQEZUX09wZW5fRmFjZSksIHRoZSBsaWJyYXJ5IGxvb2tzIGZvciBhIFVuaWNvZGUgY2hhcm1hcCB3aXRoaW4gICAgICovDQorICAvKiAgICB0aGUgbGlzdCBhbmQgYXV0b21hdGljYWxseSBhY3RpdmF0ZXMgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEFsc28+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBTZWUgQEZUX0NoYXJNYXBSZWMgZm9yIHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxlIGZpZWxkcyBvZiBhIGdpdmVuICAgKi8NCisgIC8qICAgIGNoYXJhY3RlciBtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICB0eXBlZGVmIHN0cnVjdCBGVF9DaGFyTWFwUmVjXyogIEZUX0NoYXJNYXA7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE1hY3JvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9FTkNfVEFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGlzIG1hY3JvIGNvbnZlcnRzIGZvdXItbGV0dGVyIHRhZ3MgaW50byBhbiB1bnNpZ25lZCBsb25nLiAgSXQgaXMgKi8NCisgIC8qICAgIHVzZWQgdG8gZGVmaW5lIGBlbmNvZGluZycgaWRlbnRpZmllcnMgKHNlZSBARlRfRW5jb2RpbmcpLiAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFNpbmNlIG1hbnkgMTYtYml0IGNvbXBpbGVycyBkb24ndCBsaWtlIDMyLWJpdCBlbnVtZXJhdGlvbnMsIHlvdSAgICAqLw0KKyAgLyogICAgc2hvdWxkIHJlZGVmaW5lIHRoaXMgbWFjcm8gaW4gY2FzZSBvZiBwcm9ibGVtcyB0byBzb21ldGhpbmcgbGlrZSAgICovDQorICAvKiAgICB0aGlzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICNkZWZpbmUgRlRfRU5DX1RBRyggdmFsdWUsIGEsIGIsIGMsIGQgKSAgdmFsdWUgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB0byBnZXQgYSBzaW1wbGUgZW51bWVyYXRpb24gd2l0aG91dCBhc3NpZ25pbmcgc3BlY2lhbCBudW1iZXJzLiAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKyNpZm5kZWYgRlRfRU5DX1RBRw0KKyNkZWZpbmUgRlRfRU5DX1RBRyggdmFsdWUsIGEsIGIsIGMsIGQgKSAgICAgICAgIFwNCisgICAgICAgICAgdmFsdWUgPSAoICggKEZUX1VJbnQzMikoYSkgPDwgMjQgKSB8ICBcDQorICAgICAgICAgICAgICAgICAgICAoIChGVF9VSW50MzIpKGIpIDw8IDE2ICkgfCAgXA0KKyAgICAgICAgICAgICAgICAgICAgKCAoRlRfVUludDMyKShjKSA8PCAgOCApIHwgIFwNCisgICAgICAgICAgICAgICAgICAgICAgKEZUX1VJbnQzMikoZCkgICAgICAgICApDQorDQorI2VuZGlmIC8qIEZUX0VOQ19UQUcgKi8NCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0VuY29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIHVzZWQgdG8gc3BlY2lmeSBjaGFyYWN0ZXIgc2V0cyBzdXBwb3J0ZWQgYnkgICAgICAgICAqLw0KKyAgLyogICAgY2hhcm1hcHMuICBVc2VkIGluIHRoZSBARlRfU2VsZWN0X0NoYXJtYXAgQVBJIGZ1bmN0aW9uLiAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRGVzcGl0ZSB0aGUgbmFtZSwgdGhpcyBlbnVtZXJhdGlvbiBsaXN0cyBzcGVjaWZpYyBjaGFyYWN0ZXIgICAgICAgICovDQorICAvKiAgICByZXBlcnRvcmllcyAoaS5lLiwgY2hhcnNldHMpLCBhbmQgbm90IHRleHQgZW5jb2RpbmcgbWV0aG9kcyAoZS5nLiwgKi8NCisgIC8qICAgIFVURi04LCBVVEYtMTYsIGV0Yy4pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBPdGhlciBlbmNvZGluZ3MgbWlnaHQgYmUgZGVmaW5lZCBpbiB0aGUgZnV0dXJlLiAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9FTkNPRElOR19OT05FIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgVGhlIGVuY29kaW5nIHZhbHVlfjAgaXMgcmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9FTkNPRElOR19VTklDT0RFIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgQ29ycmVzcG9uZHMgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHNldC4gIFRoaXMgdmFsdWUgY292ZXJzICAgICAqLw0KKyAgLyogICAgICBhbGwgdmVyc2lvbnMgb2YgdGhlIFVuaWNvZGUgcmVwZXJ0b2lyZSwgaW5jbHVkaW5nIEFTQ0lJIGFuZCAgICAgICovDQorICAvKiAgICAgIExhdGluLTEuICBNb3N0IGZvbnRzIGluY2x1ZGUgYSBVbmljb2RlIGNoYXJtYXAsIGJ1dCBub3QgYWxsICAgICAgKi8NCisgIC8qICAgICAgb2YgdGhlbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBhY2Nlc3MgVW5pY29kZSB2YWx1ZSBVKzFGMDI4IChhbmQgICAgKi8NCisgIC8qICAgICAgdGhlIGZvbnQgY29udGFpbnMgaXQpLCB1c2UgdmFsdWUgMHgxRjAyOCBhcyB0aGUgaW5wdXQgdmFsdWUgZm9yICAqLw0KKyAgLyogICAgICBARlRfR2V0X0NoYXJfSW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0VOQ09ESU5HX01TX1NZTUJPTCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBDb3JyZXNwb25kcyB0byB0aGUgTWljcm9zb2Z0IFN5bWJvbCBlbmNvZGluZywgdXNlZCB0byBlbmNvZGUgICAgICovDQorICAvKiAgICAgIG1hdGhlbWF0aWNhbCBzeW1ib2xzIGluIHRoZSAzMi4uMjU1IGNoYXJhY3RlciBjb2RlIHJhbmdlLiAgRm9yICAgKi8NCisgIC8qICAgICAgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGBodHRwOi8vd3d3LmNldml6Lm5ldC9zeW1ib2wuaHRtJy4gICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9FTkNPRElOR19TSklTIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgQ29ycmVzcG9uZHMgdG8gSmFwYW5lc2UgU0pJUyBlbmNvZGluZy4gIE1vcmUgaW5mbyBhdCAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBhdCBgaHR0cDovL2xhbmdzdXBwb3J0LmphcGFucmVmZXJlbmNlLmNvbS9lbmNvZGluZy5zaHRtbCcuICAgICAgICovDQorICAvKiAgICAgIFNlZSBub3RlIG9uIG11bHRpLWJ5dGUgZW5jb2RpbmdzIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfR0IyMzEyIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIENvcnJlc3BvbmRzIHRvIGFuIGVuY29kaW5nIHN5c3RlbSBmb3IgU2ltcGxpZmllZCBDaGluZXNlIGFzIHVzZWQgKi8NCisgIC8qICAgICAgdXNlZCBpbiBtYWlubGFuZCBDaGluYS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9FTkNPRElOR19CSUc1IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgQ29ycmVzcG9uZHMgdG8gYW4gZW5jb2Rpbmcgc3lzdGVtIGZvciBUcmFkaXRpb25hbCBDaGluZXNlIGFzICAgICAqLw0KKyAgLyogICAgICB1c2VkIGluIFRhaXdhbiBhbmQgSG9uZyBLb25nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0VOQ09ESU5HX1dBTlNVTkcgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBDb3JyZXNwb25kcyB0byB0aGUgS29yZWFuIGVuY29kaW5nIHN5c3RlbSBrbm93biBhcyBXYW5zdW5nLiAgICAgICovDQorICAvKiAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgYGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L3VuaWNvZGUvOTQ5LnR4dCcuICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9FTkNPRElOR19KT0hBQiA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgVGhlIEtvcmVhbiBzdGFuZGFyZCBjaGFyYWN0ZXIgc2V0IChLU35DIDU2MDEtMTk5MiksIHdoaWNoICAgICAgICAqLw0KKyAgLyogICAgICBjb3JyZXNwb25kcyB0byBNUyBXaW5kb3dzIGNvZGUgcGFnZSAxMzYxLiAgVGhpcyBjaGFyYWN0ZXIgc2V0ICAgICovDQorICAvKiAgICAgIGluY2x1ZGVzIGFsbCBwb3NzaWJsZSBIYW5nZXVsIGNoYXJhY3RlciBjb21iaW5hdGlvbnMuICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfQURPQkVfTEFUSU5fMSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIENvcnJlc3BvbmRzIHRvIGEgTGF0aW4tMSBlbmNvZGluZyBhcyBkZWZpbmVkIGluIGEgVHlwZX4xICAgICAgICAgKi8NCisgIC8qICAgICAgUG9zdFNjcmlwdCBmb250LiAgSXQgaXMgbGltaXRlZCB0byAyNTYgY2hhcmFjdGVyIGNvZGVzLiAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9FTkNPRElOR19BRE9CRV9TVEFOREFSRCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgQ29ycmVzcG9uZHMgdG8gdGhlIEFkb2JlIFN0YW5kYXJkIGVuY29kaW5nLCBhcyBmb3VuZCBpbiBUeXBlfjEsICAqLw0KKyAgLyogICAgICBDRkYsIGFuZCBPcGVuVHlwZS9DRkYgZm9udHMuICBJdCBpcyBsaW1pdGVkIHRvIDI1NiBjaGFyYWN0ZXIgICAgICovDQorICAvKiAgICAgIGNvZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJUIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIENvcnJlc3BvbmRzIHRvIHRoZSBBZG9iZSBFeHBlcnQgZW5jb2RpbmcsIGFzIGZvdW5kIGluIFR5cGV+MSwgICAgKi8NCisgIC8qICAgICAgQ0ZGLCBhbmQgT3BlblR5cGUvQ0ZGIGZvbnRzLiAgSXQgaXMgbGltaXRlZCB0byAyNTYgY2hhcmFjdGVyICAgICAqLw0KKyAgLyogICAgICBjb2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0VOQ09ESU5HX0FET0JFX0NVU1RPTSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBDb3JyZXNwb25kcyB0byBhIGN1c3RvbSBlbmNvZGluZywgYXMgZm91bmQgaW4gVHlwZX4xLCBDRkYsIGFuZCAgICovDQorICAvKiAgICAgIE9wZW5UeXBlL0NGRiBmb250cy4gIEl0IGlzIGxpbWl0ZWQgdG8gMjU2IGNoYXJhY3RlciBjb2Rlcy4gICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfQVBQTEVfUk9NQU4gOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIENvcnJlc3BvbmRzIHRvIHRoZSA4LWJpdCBBcHBsZSByb21hbiBlbmNvZGluZy4gIE1hbnkgVHJ1ZVR5cGUgICAgKi8NCisgIC8qICAgICAgYW5kIE9wZW5UeXBlIGZvbnRzIGNvbnRhaW4gYSBjaGFybWFwIGZvciB0aGlzIGVuY29kaW5nLCBzaW5jZSAgICAqLw0KKyAgLyogICAgICBvbGRlciB2ZXJzaW9ucyBvZiBNYWMgT1MgYXJlIGFibGUgdG8gdXNlIGl0LiAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0VOQ09ESU5HX09MRF9MQVRJTl8yIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBUaGlzIHZhbHVlIGlzIGRlcHJlY2F0ZWQgYW5kIHdhcyBuZXZlciB1c2VkIG5vciByZXBvcnRlZCBieSAgICAgICovDQorICAvKiAgICAgIEZyZWVUeXBlLiAgRG9uJ3QgdXNlIG9yIHRlc3QgZm9yIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfU0pJUyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFNhbWUgYXMgRlRfRU5DT0RJTkdfU0pJUy4gIERlcHJlY2F0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfR0IyMzEyIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFNhbWUgYXMgRlRfRU5DT0RJTkdfR0IyMzEyLiAgRGVwcmVjYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfQklHNSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFNhbWUgYXMgRlRfRU5DT0RJTkdfQklHNS4gIERlcHJlY2F0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfV0FOU1VORyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFNhbWUgYXMgRlRfRU5DT0RJTkdfV0FOU1VORy4gIERlcHJlY2F0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfSk9IQUIgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFNhbWUgYXMgRlRfRU5DT0RJTkdfSk9IQUIuICBEZXByZWNhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBCeSBkZWZhdWx0LCBGcmVlVHlwZSBhdXRvbWF0aWNhbGx5IHN5bnRoZXNpemVzIGEgVW5pY29kZSBjaGFybWFwICAgKi8NCisgIC8qICAgIGZvciBQb3N0U2NyaXB0IGZvbnRzLCB1c2luZyB0aGVpciBnbHlwaCBuYW1lcyBkaWN0aW9uYXJpZXMuICAgICAgICAqLw0KKyAgLyogICAgSG93ZXZlciwgaXQgYWxzbyByZXBvcnRzIHRoZSBlbmNvZGluZ3MgZGVmaW5lZCBleHBsaWNpdGx5IGluIHRoZSAgICovDQorICAvKiAgICBmb250IGZpbGUsIGZvciB0aGUgY2FzZXMgd2hlbiB0aGV5IGFyZSBuZWVkZWQsIHdpdGggdGhlIEFkb2JlICAgICAgKi8NCisgIC8qICAgIHZhbHVlcyBhcyB3ZWxsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9FTkNPRElOR19OT05FIGlzIHNldCBieSB0aGUgQkRGIGFuZCBQQ0YgZHJpdmVycyBpZiB0aGUgY2hhcm1hcCAgKi8NCisgIC8qICAgIGlzIG5laXRoZXIgVW5pY29kZSBub3IgSVNPLTg4NTktMSAob3RoZXJ3aXNlIGl0IGlzIHNldCB0byAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfVU5JQ09ERSkuICBVc2UgQEZUX0dldF9CREZfQ2hhcnNldF9JRCB0byBmaW5kIG91dCAgICAgICovDQorICAvKiAgICB3aGljaCBlbmNvZGluZyBpcyByZWFsbHkgcHJlc2VudC4gIElmLCBmb3IgZXhhbXBsZSwgdGhlICAgICAgICAgICAgKi8NCisgIC8qICAgIGBjc19yZWdpc3RyeScgZmllbGQgaXMgYEtPSTgnIGFuZCB0aGUgYGNzX2VuY29kaW5nJyBmaWVsZCBpcyBgUicsICAqLw0KKyAgLyogICAgdGhlIGZvbnQgaXMgZW5jb2RlZCBpbiBLT0k4LVIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0VOQ09ESU5HX05PTkUgaXMgYWx3YXlzIHNldCAod2l0aCBhIHNpbmdsZSBleGNlcHRpb24pIGJ5IHRoZSAgICAqLw0KKyAgLyogICAgd2luZm9udHMgZHJpdmVyLiAgVXNlIEBGVF9HZXRfV2luRk5UX0hlYWRlciBhbmQgZXhhbWluZSB0aGUgICAgICAgICovDQorICAvKiAgICBgY2hhcnNldCcgZmllbGQgb2YgdGhlIEBGVF9XaW5GTlRfSGVhZGVyUmVjIHN0cnVjdHVyZSB0byBmaW5kIG91dCAgKi8NCisgIC8qICAgIHdoaWNoIGVuY29kaW5nIGlzIHJlYWxseSBwcmVzZW50LiAgRm9yIGV4YW1wbGUsICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQEZUX1dpbkZOVF9JRF9DUDEyNTEgKDIwNCkgbWVhbnMgV2luZG93cyBjb2RlIHBhZ2UgMTI1MSAoZm9yICAgICAgICovDQorICAvKiAgICBSdXNzaWFuKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRU5DT0RJTkdfTk9ORSBpcyBzZXQgaWYgYHBsYXRmb3JtX2lkJyBpcyBAVFRfUExBVEZPUk1fTUFDSU5UT1NIICovDQorICAvKiAgICBhbmQgYGVuY29kaW5nX2lkJyBpcyBub3QgQFRUX01BQ19JRF9ST01BTiAob3RoZXJ3aXNlIGl0IGlzIHNldCB0byAgKi8NCisgIC8qICAgIEZUX0VOQ09ESU5HX0FQUExFX1JPTUFOKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBJZiBgcGxhdGZvcm1faWQnIGlzIEBUVF9QTEFURk9STV9NQUNJTlRPU0gsIHVzZSB0aGUgZnVuY3Rpb24gICAgICAgKi8NCisgIC8qICAgIEBGVF9HZXRfQ01hcF9MYW5ndWFnZV9JRCAgdG8gcXVlcnkgdGhlIE1hYyBsYW5ndWFnZSBJRCB3aGljaCBtYXkgICAqLw0KKyAgLyogICAgYmUgbmVlZGVkIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggQXBwbGUgZW5jb2RpbmcgdmFyaWFudHMuICBTZWUgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy9BUFBMRS9SRUFETUUuVFhUICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB0byBnZXQgYW4gaWRlYSBob3cgdG8gZG8gdGhhdC4gIEJhc2ljYWxseSwgaWYgdGhlIGxhbmd1YWdlIElEICAgICAgKi8NCisgIC8qICAgIGlzfjAsIGRvbid0IHVzZSBpdCwgb3RoZXJ3aXNlIHN1YnRyYWN0IDEgZnJvbSB0aGUgbGFuZ3VhZ2UgSUQuICAgICAqLw0KKyAgLyogICAgVGhlbiBleGFtaW5lIGBlbmNvZGluZ19pZCcuICBJZiwgZm9yIGV4YW1wbGUsIGBlbmNvZGluZ19pZCcgaXMgICAgICovDQorICAvKiAgICBAVFRfTUFDX0lEX1JPTUFOIGFuZCB0aGUgbGFuZ3VhZ2UgSUQgKG1pbnVzfjEpIGlzICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGBUVF9NQUNfTEFOR0lEX0dSRUVLJywgaXQgaXMgdGhlIEdyZWVrIGVuY29kaW5nLCBub3QgUm9tYW4uICAgICAgICAqLw0KKyAgLyogICAgQFRUX01BQ19JRF9BUkFCSUMgd2l0aCBgVFRfTUFDX0xBTkdJRF9GQVJTSScgbWVhbnMgdGhlIEZhcnNpICAgICAgICovDQorICAvKiAgICB2YXJpYW50IHRoZSBBcmFiaWMgZW5jb2RpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBlbnVtICBGVF9FbmNvZGluZ18NCisgIHsNCisgICAgRlRfRU5DX1RBRyggRlRfRU5DT0RJTkdfTk9ORSwgMCwgMCwgMCwgMCApLA0KKw0KKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19NU19TWU1CT0wsICdzJywgJ3knLCAnbScsICdiJyApLA0KKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19VTklDT0RFLCAgICd1JywgJ24nLCAnaScsICdjJyApLA0KKw0KKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19TSklTLCAgICAncycsICdqJywgJ2knLCAncycgKSwNCisgICAgRlRfRU5DX1RBRyggRlRfRU5DT0RJTkdfR0IyMzEyLCAgJ2cnLCAnYicsICcgJywgJyAnICksDQorICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX0JJRzUsICAgICdiJywgJ2knLCAnZycsICc1JyApLA0KKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19XQU5TVU5HLCAndycsICdhJywgJ24nLCAncycgKSwNCisgICAgRlRfRU5DX1RBRyggRlRfRU5DT0RJTkdfSk9IQUIsICAgJ2onLCAnbycsICdoJywgJ2EnICksDQorDQorICAgIC8qIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAqLw0KKyAgICBGVF9FTkNPRElOR19NU19TSklTICAgID0gRlRfRU5DT0RJTkdfU0pJUywNCisgICAgRlRfRU5DT0RJTkdfTVNfR0IyMzEyICA9IEZUX0VOQ09ESU5HX0dCMjMxMiwNCisgICAgRlRfRU5DT0RJTkdfTVNfQklHNSAgICA9IEZUX0VOQ09ESU5HX0JJRzUsDQorICAgIEZUX0VOQ09ESU5HX01TX1dBTlNVTkcgPSBGVF9FTkNPRElOR19XQU5TVU5HLA0KKyAgICBGVF9FTkNPRElOR19NU19KT0hBQiAgID0gRlRfRU5DT0RJTkdfSk9IQUIsDQorDQorICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX0FET0JFX1NUQU5EQVJELCAnQScsICdEJywgJ08nLCAnQicgKSwNCisgICAgRlRfRU5DX1RBRyggRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJULCAgICdBJywgJ0QnLCAnQicsICdFJyApLA0KKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19BRE9CRV9DVVNUT00sICAgJ0EnLCAnRCcsICdCJywgJ0MnICksDQorICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX0FET0JFX0xBVElOXzEsICAnbCcsICdhJywgJ3QnLCAnMScgKSwNCisNCisgICAgRlRfRU5DX1RBRyggRlRfRU5DT0RJTkdfT0xEX0xBVElOXzIsICdsJywgJ2EnLCAndCcsICcyJyApLA0KKw0KKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19BUFBMRV9ST01BTiwgJ2EnLCAncicsICdtJywgJ24nICkNCisNCisgIH0gRlRfRW5jb2Rpbmc7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmdF9lbmNvZGluZ194eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGVzZSBjb25zdGFudHMgYXJlIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgY29ycmVzcG9uZGluZyBARlRfRW5jb2RpbmcgKi8NCisgIC8qICAgIHZhbHVlcyBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorI2RlZmluZSBmdF9lbmNvZGluZ19ub25lICAgICAgICAgICAgRlRfRU5DT0RJTkdfTk9ORQ0KKyNkZWZpbmUgZnRfZW5jb2RpbmdfdW5pY29kZSAgICAgICAgIEZUX0VOQ09ESU5HX1VOSUNPREUNCisjZGVmaW5lIGZ0X2VuY29kaW5nX3N5bWJvbCAgICAgICAgICBGVF9FTkNPRElOR19NU19TWU1CT0wNCisjZGVmaW5lIGZ0X2VuY29kaW5nX2xhdGluXzEgICAgICAgICBGVF9FTkNPRElOR19BRE9CRV9MQVRJTl8xDQorI2RlZmluZSBmdF9lbmNvZGluZ19sYXRpbl8yICAgICAgICAgRlRfRU5DT0RJTkdfT0xEX0xBVElOXzINCisjZGVmaW5lIGZ0X2VuY29kaW5nX3NqaXMgICAgICAgICAgICBGVF9FTkNPRElOR19TSklTDQorI2RlZmluZSBmdF9lbmNvZGluZ19nYjIzMTIgICAgICAgICAgRlRfRU5DT0RJTkdfR0IyMzEyDQorI2RlZmluZSBmdF9lbmNvZGluZ19iaWc1ICAgICAgICAgICAgRlRfRU5DT0RJTkdfQklHNQ0KKyNkZWZpbmUgZnRfZW5jb2Rpbmdfd2Fuc3VuZyAgICAgICAgIEZUX0VOQ09ESU5HX1dBTlNVTkcNCisjZGVmaW5lIGZ0X2VuY29kaW5nX2pvaGFiICAgICAgICAgICBGVF9FTkNPRElOR19KT0hBQg0KKw0KKyNkZWZpbmUgZnRfZW5jb2RpbmdfYWRvYmVfc3RhbmRhcmQgIEZUX0VOQ09ESU5HX0FET0JFX1NUQU5EQVJEDQorI2RlZmluZSBmdF9lbmNvZGluZ19hZG9iZV9leHBlcnQgICAgRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJUDQorI2RlZmluZSBmdF9lbmNvZGluZ19hZG9iZV9jdXN0b20gICAgRlRfRU5DT0RJTkdfQURPQkVfQ1VTVE9NDQorI2RlZmluZSBmdF9lbmNvZGluZ19hcHBsZV9yb21hbiAgICAgRlRfRU5DT0RJTkdfQVBQTEVfUk9NQU4NCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0NoYXJNYXBSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBiYXNlIGNoYXJtYXAgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBwYXJlbnQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBlbmNvZGluZyAgICA6OiBBbiBARlRfRW5jb2RpbmcgdGFnIGlkZW50aWZ5aW5nIHRoZSBjaGFybWFwLiAgVXNlICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIHRoaXMgd2l0aCBARlRfU2VsZWN0X0NoYXJtYXAuICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBwbGF0Zm9ybV9pZCA6OiBBbiBJRCBudW1iZXIgZGVzY3JpYmluZyB0aGUgcGxhdGZvcm0gZm9yIHRoZSAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBlbmNvZGluZyBJRC4gIFRoaXMgY29tZXMgZGlyZWN0bHkgZnJvbSAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgdGhlIFRydWVUeXBlIHNwZWNpZmljYXRpb24gYW5kIHNob3VsZCBiZSBlbXVsYXRlZCAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBmb3Igb3RoZXIgZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZW5jb2RpbmdfaWQgOjogQSBwbGF0Zm9ybSBzcGVjaWZpYyBlbmNvZGluZyBudW1iZXIuICBUaGlzIGFsc28gICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBjb21lcyBmcm9tIHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgYmUgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIGVtdWxhdGVkIHNpbWlsYXJseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICB0eXBlZGVmIHN0cnVjdCAgRlRfQ2hhck1hcFJlY18NCisgIHsNCisgICAgRlRfRmFjZSAgICAgIGZhY2U7DQorICAgIEZUX0VuY29kaW5nICBlbmNvZGluZzsNCisgICAgRlRfVVNob3J0ICAgIHBsYXRmb3JtX2lkOw0KKyAgICBGVF9VU2hvcnQgICAgZW5jb2RpbmdfaWQ7DQorDQorICB9IEZUX0NoYXJNYXBSZWM7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgQiBBIFMgRSAgIE8gQiBKIEUgQyBUICAgQyBMIEEgUyBTIEUgUyAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZhY2VfSW50ZXJuYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEFuIG9wYXF1ZSBoYW5kbGUgdG8gYW4gYEZUX0ZhY2VfSW50ZXJuYWxSZWMnIHN0cnVjdHVyZSwgdXNlZCB0byAgICAqLw0KKyAgLyogICAgbW9kZWwgcHJpdmF0ZSBkYXRhIG9mIGEgZ2l2ZW4gQEZUX0ZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIG1pZ2h0IGNoYW5nZSBiZXR3ZWVuIHJlbGVhc2VzIG9mIEZyZWVUeXBlfjIgYW5kIGlzICAqLw0KKyAgLyogICAgbm90IGdlbmVyYWxseSBhdmFpbGFibGUgdG8gY2xpZW50IGFwcGxpY2F0aW9ucy4gICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VfSW50ZXJuYWxSZWNfKiAgRlRfRmFjZV9JbnRlcm5hbDsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZhY2VSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIHJvb3QgZmFjZSBjbGFzcyBzdHJ1Y3R1cmUuICBBIGZhY2Ugb2JqZWN0IG1vZGVscyBhICAgICAgICAqLw0KKyAgLyogICAgdHlwZWZhY2UgaW4gYSBmb250IGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgbnVtX2ZhY2VzICAgICAgICAgICA6OiBUaGUgbnVtYmVyIG9mIGZhY2VzIGluIHRoZSBmb250IGZpbGUuICBTb21lICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQgZm9ybWF0cyBjYW4gaGF2ZSBtdWx0aXBsZSBmYWNlcyBpbiAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBmb250IGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlX2luZGV4ICAgICAgICAgIDo6IFRoZSBpbmRleCBvZiB0aGUgZmFjZSBpbiB0aGUgZm9udCBmaWxlLiAgSXQgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvfjAgaWYgdGhlcmUgaXMgb25seSBvbmUgZmFjZSBpbiAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9udCBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2VfZmxhZ3MgICAgICAgICAgOjogQSBzZXQgb2YgYml0IGZsYWdzIHRoYXQgZ2l2ZSBpbXBvcnRhbnQgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmFjZTsgc2VlICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9GQUNFX0ZMQUdfWFhYIGZvciB0aGUgZGV0YWlscy4gICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgc3R5bGVfZmxhZ3MgICAgICAgICA6OiBBIHNldCBvZiBiaXQgZmxhZ3MgaW5kaWNhdGluZyB0aGUgc3R5bGUgb2YgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmYWNlOyBzZWUgQEZUX1NUWUxFX0ZMQUdfWFhYIGZvciB0aGUgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBudW1fZ2x5cGhzICAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgZ2x5cGhzIGluIHRoZSBmYWNlLiAgSWYgdGhlICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSBpcyBzY2FsYWJsZSBhbmQgaGFzIHNiaXRzIChzZWUgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBgbnVtX2ZpeGVkX3NpemVzJyksIGl0IGlzIHNldCB0byB0aGUgbnVtYmVyICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG91dGxpbmUgZ2x5cGhzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgQ0lELWtleWVkIGZvbnRzLCB0aGlzIHZhbHVlIGdpdmVzIHRoZSAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hlc3QgQ0lEIHVzZWQgaW4gdGhlIGZvbnQuICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFtaWx5X25hbWUgICAgICAgICA6OiBUaGUgZmFjZSdzIGZhbWlseSBuYW1lLiAgVGhpcyBpcyBhbiBBU0NJSSAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgdXN1YWxseSBpbiBFbmdsaXNoLCB3aGljaCBkZXNjcmliZXMgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHR5cGVmYWNlJ3MgZmFtaWx5IChsaWtlIGBUaW1lcyBOZXcgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBSb21hbicsIGBCb2RvbmknLCBgR2FyYW1vbmQnLCBldGMpLiAgVGhpcyAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgbGVhc3QgY29tbW9uIGRlbm9taW5hdG9yIHVzZWQgdG8gbGlzdCAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udHMuICBTb21lIGZvcm1hdHMgKFRydWVUeXBlICYgT3BlblR5cGUpICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIGxvY2FsaXplZCBhbmQgVW5pY29kZSB2ZXJzaW9ucyBvZiAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgc3RyaW5nLiAgQXBwbGljYXRpb25zIHNob3VsZCB1c2UgdGhlICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IHNwZWNpZmljIGludGVyZmFjZSB0byBhY2Nlc3MgdGhlbS4gICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgTlVMTCAoZS5nLiwgaW4gZm9udHMgZW1iZWRkZWQgaW4gYSAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBERiBmaWxlKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgc3R5bGVfbmFtZSAgICAgICAgICA6OiBUaGUgZmFjZSdzIHN0eWxlIG5hbWUuICBUaGlzIGlzIGFuIEFTQ0lJICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgdXN1YWxseSBpbiBFbmdsaXNoLCB3aGljaCBkZXNjcmliZXMgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHR5cGVmYWNlJ3Mgc3R5bGUgKGxpa2UgYEl0YWxpYycsICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBgQm9sZCcsIGBDb25kZW5zZWQnLCBldGMpLiAgTm90IGFsbCBmb250ICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHMgcHJvdmlkZSBhIHN0eWxlIG5hbWUsIHNvIHRoaXMgZmllbGQgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgb3B0aW9uYWwsIGFuZCBjYW4gYmUgc2V0IHRvIE5VTEwuICBBcyAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYGZhbWlseV9uYW1lJywgc29tZSBmb3JtYXRzIHByb3ZpZGUgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXplZCBhbmQgVW5pY29kZSB2ZXJzaW9ucyBvZiB0aGlzICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLiAgQXBwbGljYXRpb25zIHNob3VsZCB1c2UgdGhlIGZvcm1hdCAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBpbnRlcmZhY2UgdG8gYWNjZXNzIHRoZW0uICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIG51bV9maXhlZF9zaXplcyAgICAgOjogVGhlIG51bWJlciBvZiBiaXRtYXAgc3RyaWtlcyBpbiB0aGUgZmFjZS4gICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVuIGlmIHRoZSBmYWNlIGlzIHNjYWxhYmxlLCB0aGVyZSBtaWdodCAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWxsIGJlIGJpdG1hcCBzdHJpa2VzLCB3aGljaCBhcmUgY2FsbGVkICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYHNiaXRzJyBpbiB0aGF0IGNhc2UuICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBhdmFpbGFibGVfc2l6ZXMgICAgIDo6IEFuIGFycmF5IG9mIEBGVF9CaXRtYXBfU2l6ZSBmb3IgYWxsIGJpdG1hcCAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWtlcyBpbiB0aGUgZmFjZS4gIEl0IGlzIHNldCB0byBOVUxMIGlmICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVyZSBpcyBubyBiaXRtYXAgc3RyaWtlLiAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIG51bV9jaGFybWFwcyAgICAgICAgOjogVGhlIG51bWJlciBvZiBjaGFybWFwcyBpbiB0aGUgZmFjZS4gICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBjaGFybWFwcyAgICAgICAgICAgIDo6IEFuIGFycmF5IG9mIHRoZSBjaGFybWFwcyBvZiB0aGUgZmFjZS4gICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZ2VuZXJpYyAgICAgICAgICAgICA6OiBBIGZpZWxkIHJlc2VydmVkIGZvciBjbGllbnQgdXNlcy4gIFNlZSB0aGUgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9HZW5lcmljIHR5cGUgZGVzY3JpcHRpb24uICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYmJveCAgICAgICAgICAgICAgICA6OiBUaGUgZm9udCBib3VuZGluZyBib3guICBDb29yZGluYXRlcyBhcmUgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiBmb250IHVuaXRzIChzZWUgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYHVuaXRzX3Blcl9FTScpLiAgVGhlIGJveCBpcyBsYXJnZSBlbm91Z2ggICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjb250YWluIGFueSBnbHlwaCBmcm9tIHRoZSBmb250LiAgVGh1cywgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGBiYm94LnlNYXgnIGNhbiBiZSBzZWVuIGFzIHRoZSBgbWF4aW11bSAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNjZW5kZXInLCBhbmQgYGJib3gueU1pbicgYXMgdGhlIGBtaW5pbXVtICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjZW5kZXInLiAgT25seSByZWxldmFudCBmb3Igc2NhbGFibGUgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhlIGJvdW5kaW5nIGJveCBtaWdodCBiZSBvZmYgYnkgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdCBsZWFzdCkgb25lIHBpeGVsIGZvciBoaW50ZWQgZm9udHMuICBTZWUgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgQEZUX1NpemVfTWV0cmljcyBmb3IgZnVydGhlciBkaXNjdXNzaW9uLiAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB1bml0c19wZXJfRU0gICAgICAgIDo6IFRoZSBudW1iZXIgb2YgZm9udCB1bml0cyBwZXIgRU0gc3F1YXJlIGZvciAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBmYWNlLiAgVGhpcyBpcyB0eXBpY2FsbHkgMjA0OCBmb3IgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlVHlwZSBmb250cywgYW5kIDEwMDAgZm9yIFR5cGV+MSBmb250cy4gICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgcmVsZXZhbnQgZm9yIHNjYWxhYmxlIGZvcm1hdHMuICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYXNjZW5kZXIgICAgICAgICAgICA6OiBUaGUgdHlwb2dyYXBoaWMgYXNjZW5kZXIgb2YgdGhlIGZhY2UsICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiBmb250IHVuaXRzLiAgRm9yIGZvbnQgZm9ybWF0cyAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGhhdmluZyB0aGlzIGluZm9ybWF0aW9uLCBpdCBpcyBzZXQgdG8gICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBgYmJveC55TWF4Jy4gIE9ubHkgcmVsZXZhbnQgZm9yIHNjYWxhYmxlICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZGVzY2VuZGVyICAgICAgICAgICA6OiBUaGUgdHlwb2dyYXBoaWMgZGVzY2VuZGVyIG9mIHRoZSBmYWNlLCAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiBmb250IHVuaXRzLiAgRm9yIGZvbnQgZm9ybWF0cyAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGhhdmluZyB0aGlzIGluZm9ybWF0aW9uLCBpdCBpcyBzZXQgdG8gICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBgYmJveC55TWluJy4gIE5vdGUgdGhhdCB0aGlzIGZpZWxkIGlzICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzdWFsbHkgbmVnYXRpdmUuICBPbmx5IHJlbGV2YW50IGZvciAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGFibGUgZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBoZWlnaHQgICAgICAgICAgICAgIDo6IFRoaXMgdmFsdWUgaXMgdGhlIHZlcnRpY2FsIGRpc3RhbmNlICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgYmFzZWxpbmVzLCAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzZWQgaW4gZm9udCB1bml0cy4gIEl0IGlzIGFsd2F5cyAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlLiAgT25seSByZWxldmFudCBmb3Igc2NhbGFibGUgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSBnbG9iYWwgZ2x5cGggaGVpZ2h0LCB1c2UgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYGFzY2VuZGVyIC0gZGVzY2VuZGVyJy4gICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBtYXhfYWR2YW5jZV93aWR0aCAgIDo6IFRoZSBtYXhpbXVtIGFkdmFuY2Ugd2lkdGgsIGluIGZvbnQgdW5pdHMsICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFsbCBnbHlwaHMgaW4gdGhpcyBmYWNlLiAgVGhpcyBjYW4gYmUgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIG1ha2Ugd29yZCB3cmFwcGluZyBjb21wdXRhdGlvbnMgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rlci4gIE9ubHkgcmVsZXZhbnQgZm9yIHNjYWxhYmxlICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBtYXhfYWR2YW5jZV9oZWlnaHQgIDo6IFRoZSBtYXhpbXVtIGFkdmFuY2UgaGVpZ2h0LCBpbiBmb250IHVuaXRzLCAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFsbCBnbHlwaHMgaW4gdGhpcyBmYWNlLiAgVGhpcyBpcyBvbmx5ICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFudCBmb3IgdmVydGljYWwgbGF5b3V0cywgYW5kIGlzIHNldCAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGBoZWlnaHQnIGZvciBmb250cyB0aGF0IGRvIG5vdCBwcm92aWRlICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwgbWV0cmljcy4gIE9ubHkgcmVsZXZhbnQgZm9yICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsYWJsZSBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHVuZGVybGluZV9wb3NpdGlvbiAgOjogVGhlIHBvc2l0aW9uLCBpbiBmb250IHVuaXRzLCBvZiB0aGUgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmUgbGluZSBmb3IgdGhpcyBmYWNlLiAgSXQgaXMgdGhlICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlciBvZiB0aGUgdW5kZXJsaW5pbmcgc3RlbS4gIE9ubHkgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZXZhbnQgZm9yIHNjYWxhYmxlIGZvcm1hdHMuICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB1bmRlcmxpbmVfdGhpY2tuZXNzIDo6IFRoZSB0aGlja25lc3MsIGluIGZvbnQgdW5pdHMsIG9mIHRoZSAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJsaW5lIGZvciB0aGlzIGZhY2UuICBPbmx5IHJlbGV2YW50IGZvciAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsYWJsZSBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGdseXBoICAgICAgICAgICAgICAgOjogVGhlIGZhY2UncyBhc3NvY2lhdGVkIGdseXBoIHNsb3QocykuICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBzaXplICAgICAgICAgICAgICAgIDo6IFRoZSBjdXJyZW50IGFjdGl2ZSBzaXplIGZvciB0aGlzIGZhY2UuICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgY2hhcm1hcCAgICAgICAgICAgICA6OiBUaGUgY3VycmVudCBhY3RpdmUgY2hhcm1hcCBmb3IgdGhpcyBmYWNlLiAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRmllbGRzIG1heSBiZSBjaGFuZ2VkIGFmdGVyIGEgY2FsbCB0byBARlRfQXR0YWNoX0ZpbGUgb3IgICAgICAgICAgICovDQorICAvKiAgICBARlRfQXR0YWNoX1N0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0ZhY2VSZWNfDQorICB7DQorICAgIEZUX0xvbmcgICAgICAgICAgIG51bV9mYWNlczsNCisgICAgRlRfTG9uZyAgICAgICAgICAgZmFjZV9pbmRleDsNCisNCisgICAgRlRfTG9uZyAgICAgICAgICAgZmFjZV9mbGFnczsNCisgICAgRlRfTG9uZyAgICAgICAgICAgc3R5bGVfZmxhZ3M7DQorDQorICAgIEZUX0xvbmcgICAgICAgICAgIG51bV9nbHlwaHM7DQorDQorICAgIEZUX1N0cmluZyogICAgICAgIGZhbWlseV9uYW1lOw0KKyAgICBGVF9TdHJpbmcqICAgICAgICBzdHlsZV9uYW1lOw0KKw0KKyAgICBGVF9JbnQgICAgICAgICAgICBudW1fZml4ZWRfc2l6ZXM7DQorICAgIEZUX0JpdG1hcF9TaXplKiAgIGF2YWlsYWJsZV9zaXplczsNCisNCisgICAgRlRfSW50ICAgICAgICAgICAgbnVtX2NoYXJtYXBzOw0KKyAgICBGVF9DaGFyTWFwKiAgICAgICBjaGFybWFwczsNCisNCisjaWZkZWYJX0ZYX01BTkFHRURfQ09ERV8NCisjZGVmaW5lIGdlbmVyaWMJCWdlbmVyaWNfZGF0YQ0KKyNlbmRpZg0KKw0KKyAgICBGVF9HZW5lcmljICAgICAgICBnZW5lcmljOw0KKw0KKyAgICAvKiMgVGhlIGZvbGxvd2luZyBtZW1iZXIgdmFyaWFibGVzIChkb3duIHRvIGB1bmRlcmxpbmVfdGhpY2tuZXNzJykgKi8NCisgICAgLyojIGFyZSBvbmx5IHJlbGV2YW50IHRvIHNjYWxhYmxlIG91dGxpbmVzOyBjZi4gQEZUX0JpdG1hcF9TaXplICAgICovDQorICAgIC8qIyBmb3IgYml0bWFwIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICBGVF9CQm94ICAgICAgICAgICBiYm94Ow0KKw0KKyAgICBGVF9VU2hvcnQgICAgICAgICB1bml0c19wZXJfRU07DQorICAgIEZUX1Nob3J0ICAgICAgICAgIGFzY2VuZGVyOw0KKyAgICBGVF9TaG9ydCAgICAgICAgICBkZXNjZW5kZXI7DQorICAgIEZUX1Nob3J0ICAgICAgICAgIGhlaWdodDsNCisNCisgICAgRlRfU2hvcnQgICAgICAgICAgbWF4X2FkdmFuY2Vfd2lkdGg7DQorICAgIEZUX1Nob3J0ICAgICAgICAgIG1heF9hZHZhbmNlX2hlaWdodDsNCisNCisgICAgRlRfU2hvcnQgICAgICAgICAgdW5kZXJsaW5lX3Bvc2l0aW9uOw0KKyAgICBGVF9TaG9ydCAgICAgICAgICB1bmRlcmxpbmVfdGhpY2tuZXNzOw0KKw0KKyAgICBGVF9HbHlwaFNsb3QgICAgICBnbHlwaDsNCisgICAgRlRfU2l6ZSAgICAgICAgICAgc2l6ZTsNCisgICAgRlRfQ2hhck1hcCAgICAgICAgY2hhcm1hcDsNCisNCisgICAgLypAcHJpdmF0ZSBiZWdpbiAqLw0KKw0KKyAgICBGVF9Ecml2ZXIgICAgICAgICBkcml2ZXI7DQorICAgIEZUX01lbW9yeSAgICAgICAgIG1lbW9yeTsNCisgICAgRlRfU3RyZWFtICAgICAgICAgc3RyZWFtOw0KKw0KKyAgICBGVF9MaXN0UmVjICAgICAgICBzaXplc19saXN0Ow0KKw0KKyAgICBGVF9HZW5lcmljICAgICAgICBhdXRvaGludDsgICAvKiBmYWNlLXNwZWNpZmljIGF1dG8taGludGVyIGRhdGEgKi8NCisgICAgdm9pZCogICAgICAgICAgICAgZXh0ZW5zaW9uczsgLyogdW51c2VkICAgICAgICAgICAgICAgICAgICAgICAgICovDQorDQorICAgIEZUX0ZhY2VfSW50ZXJuYWwgIGludGVybmFsOw0KKw0KKyAgICAvKkBwcml2YXRlIGVuZCAqLw0KKw0KKyAgfSBGVF9GYWNlUmVjOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRkFDRV9GTEFHX1hYWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBsaXN0IG9mIGJpdCBmbGFncyB1c2VkIGluIHRoZSBgZmFjZV9mbGFncycgZmllbGQgb2YgdGhlICAgICAgICAgICovDQorICAvKiAgICBARlRfRmFjZVJlYyBzdHJ1Y3R1cmUuICBUaGV5IGluZm9ybSBjbGllbnQgYXBwbGljYXRpb25zIG9mICAgICAgICAgKi8NCisgIC8qICAgIHByb3BlcnRpZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19TQ0FMQUJMRSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgZmFjZSBjb250YWlucyBvdXRsaW5lIGdseXBocy4gIFRoaXMgZG9lc24ndCAgICovDQorICAvKiAgICAgIHByZXZlbnQgYml0bWFwIHN0cmlrZXMsIGkuZS4sIGEgZmFjZSBjYW4gaGF2ZSBib3RoIHRoaXMgYW5kICAgICAgKi8NCisgIC8qICAgICAgYW5kIEBGVF9GQUNFX0ZMQUdfRklYRURfU0laRVMgc2V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GQUNFX0ZMQUdfRklYRURfU0laRVMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGZhY2UgY29udGFpbnMgYml0bWFwIHN0cmlrZXMuICBTZWUgYWxzbyB0aGUgICAqLw0KKyAgLyogICAgICBgbnVtX2ZpeGVkX3NpemVzJyBhbmQgYGF2YWlsYWJsZV9zaXplcycgZmllbGRzIG9mIEBGVF9GYWNlUmVjLiAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURUSCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgZmFjZSBjb250YWlucyBmaXhlZC13aWR0aCBjaGFyYWN0ZXJzIChsaWtlICAgICovDQorICAvKiAgICAgIENvdXJpZXIsIEx1Y2lkbywgTW9ub1R5cGUsIGV0Yy4pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRkFDRV9GTEFHX1NGTlQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBmYWNlIHVzZXMgdGhlIGBzZm50JyBzdG9yYWdlIHNjaGVtZS4gIEZvciAgICAgKi8NCisgIC8qICAgICAgbm93LCB0aGlzIG1lYW5zIFRydWVUeXBlIGFuZCBPcGVuVHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GQUNFX0ZMQUdfSE9SSVpPTlRBTCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGZhY2UgY29udGFpbnMgaG9yaXpvbnRhbCBnbHlwaCBtZXRyaWNzLiAgVGhpcyAqLw0KKyAgLyogICAgICBzaG91bGQgYmUgc2V0IGZvciBhbGwgY29tbW9uIGZvcm1hdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19WRVJUSUNBTCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgZmFjZSBjb250YWlucyB2ZXJ0aWNhbCBnbHlwaCBtZXRyaWNzLiAgVGhpcyAgICovDQorICAvKiAgICAgIGlzIG9ubHkgYXZhaWxhYmxlIGluIHNvbWUgZm9ybWF0cywgbm90IGFsbCBvZiB0aGVtLiAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRkFDRV9GTEFHX0tFUk5JTkcgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBmYWNlIGNvbnRhaW5zIGtlcm5pbmcgaW5mb3JtYXRpb24uICBJZiBzZXQsICAgKi8NCisgIC8qICAgICAgdGhlIGtlcm5pbmcgZGlzdGFuY2UgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSBmdW5jdGlvbiAgICAgICAqLw0KKyAgLyogICAgICBARlRfR2V0X0tlcm5pbmcuICBPdGhlcndpc2UgdGhlIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm4gdGhlICAgICAgICovDQorICAvKiAgICAgIHZlY3RvciAoMCwwKS4gIE5vdGUgdGhhdCBGcmVlVHlwZSBkb2Vzbid0IGhhbmRsZSBrZXJuaW5nIGRhdGEgICAgKi8NCisgIC8qICAgICAgZnJvbSB0aGUgYEdQT1MnIHRhYmxlIChhcyBwcmVzZW50IGluIHNvbWUgT3BlblR5cGUgZm9udHMpLiAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GQUNFX0ZMQUdfRkFTVF9HTFlQSFMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgVEhJUyBGTEFHIElTIERFUFJFQ0FURUQuICBETyBOT1QgVVNFIE9SIFRFU1QgSVQuICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GQUNFX0ZMQUdfTVVMVElQTEVfTUFTVEVSUyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGZvbnQgY29udGFpbnMgbXVsdGlwbGUgbWFzdGVycyBhbmQgaXMgY2FwYWJsZSAqLw0KKyAgLyogICAgICBvZiBpbnRlcnBvbGF0aW5nIGJldHdlZW4gdGhlbS4gIFNlZSB0aGUgbXVsdGlwbGUtbWFzdGVycyAgICAgICAgICovDQorICAvKiAgICAgIHNwZWNpZmljIEFQSSBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRkFDRV9GTEFHX0dMWVBIX05BTUVTIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBmb250IGNvbnRhaW5zIGdseXBoIG5hbWVzIHRoYXQgY2FuIGJlICAgICAgICAgKi8NCisgIC8qICAgICAgcmV0cmlldmVkIHRocm91Z2ggQEZUX0dldF9HbHlwaF9OYW1lLiAgTm90ZSB0aGF0IHNvbWUgVHJ1ZVR5cGUgICAqLw0KKyAgLyogICAgICBmb250cyBjb250YWluIGJyb2tlbiBnbHlwaCBuYW1lIHRhYmxlcy4gIFVzZSB0aGUgZnVuY3Rpb24gICAgICAgICovDQorICAvKiAgICAgIEBGVF9IYXNfUFNfR2x5cGhfTmFtZXMgd2hlbiBuZWVkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRkFDRV9GTEFHX0VYVEVSTkFMX1NUUkVBTSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFVzZWQgaW50ZXJuYWxseSBieSBGcmVlVHlwZSB0byBpbmRpY2F0ZSB0aGF0IGEgZmFjZSdzIHN0cmVhbSB3YXMgKi8NCisgIC8qICAgICAgcHJvdmlkZWQgYnkgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBkZXN0cm95ZWQgICAqLw0KKyAgLyogICAgICB3aGVuIEBGVF9Eb25lX0ZhY2UgaXMgY2FsbGVkLiAgRG9uJ3QgcmVhZCBvciB0ZXN0IHRoaXMgZmxhZy4gICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19ISU5URVIgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBTZXQgaWYgdGhlIGZvbnQgZHJpdmVyIGhhcyBhIGhpbnRpbmcgbWFjaGluZSBvZiBpdHMgb3duLiAgRm9yICAgICovDQorICAvKiAgICAgIGV4YW1wbGUsIHdpdGggVHJ1ZVR5cGUgZm9udHMsIGl0IG1ha2VzIHNlbnNlIHRvIHVzZSBkYXRhIGZyb20gICAgKi8NCisgIC8qICAgICAgdGhlIFNGTlQgYGdhc3AnIHRhYmxlIG9ubHkgaWYgdGhlIG5hdGl2ZSBUcnVlVHlwZSBoaW50aW5nIGVuZ2luZSAqLw0KKyAgLyogICAgICAod2l0aCB0aGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIpIGlzIGF2YWlsYWJsZSBhbmQgYWN0aXZlLiAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19DSURfS0VZRUQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBTZXQgaWYgdGhlIGZvbnQgaXMgQ0lELWtleWVkLiAgSW4gdGhhdCBjYXNlLCB0aGUgZm9udCBpcyBub3QgICAgICovDQorICAvKiAgICAgIGFjY2Vzc2VkIGJ5IGdseXBoIGluZGljZXMgYnV0IGJ5IENJRCB2YWx1ZXMuICBGb3Igc3Vic2V0dGVkICAgICAgKi8NCisgIC8qICAgICAgQ0lELWtleWVkIGZvbnRzIHRoaXMgaGFzIHRoZSBjb25zZXF1ZW5jZSB0aGF0IG5vdCBhbGwgaW5kZXggICAgICAqLw0KKyAgLyogICAgICB2YWx1ZXMgYXJlIGEgdmFsaWQgYXJndW1lbnQgdG8gRlRfTG9hZF9HbHlwaC4gIE9ubHkgdGhlIENJRCAgICAgICovDQorICAvKiAgICAgIHZhbHVlcyBmb3Igd2hpY2ggY29ycmVzcG9uZGluZyBnbHlwaHMgaW4gdGhlIHN1YnNldHRlZCBmb250ICAgICAgKi8NCisgIC8qICAgICAgZXhpc3QgbWFrZSBGVF9Mb2FkX0dseXBoIHJldHVybiBzdWNjZXNzZnVsbHk7IGluIGFsbCBvdGhlciBjYXNlcyAqLw0KKyAgLyogICAgICB5b3UgZ2V0IGFuIGBGVF9FcnJfSW52YWxpZF9Bcmd1bWVudCcgZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgTm90ZSB0aGF0IENJRC1rZXllZCBmb250cyB3aGljaCBhcmUgaW4gYW4gU0ZOVCB3cmFwcGVyIGRvbid0ICAgICAqLw0KKyAgLyogICAgICBoYXZlIHRoaXMgZmxhZyBzZXQgc2luY2UgdGhlIGdseXBocyBhcmUgYWNjZXNzZWQgaW4gdGhlIG5vcm1hbCAgICovDQorICAvKiAgICAgIHdheSAodXNpbmcgY29udGlndW91cyBpbmRpY2VzKTsgdGhlIGBDSUQtbmVzcycgaXNuJ3QgdmlzaWJsZSB0byAgKi8NCisgIC8qICAgICAgdGhlIGFwcGxpY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GQUNFX0ZMQUdfVFJJQ0tZIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgU2V0IGlmIHRoZSBmb250IGlzIGB0cmlja3knLCB0aGlzIGlzLCBpdCBhbHdheXMgbmVlZHMgdGhlICAgICAgICAqLw0KKyAgLyogICAgICBmb250IGZvcm1hdCdzIG5hdGl2ZSBoaW50aW5nIGVuZ2luZSB0byBnZXQgYSByZWFzb25hYmxlIHJlc3VsdC4gICovDQorICAvKiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIGlzIHRoZSBDaGluZXNlIGZvbnQgYG1pbmdsaS50dGYnIHdoaWNoIHVzZXMgICAgKi8NCisgIC8qICAgICAgVHJ1ZVR5cGUgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zIHRvIG1vdmUgYW5kIHNjYWxlIGFsbCBvZiBpdHMgICAgICAqLw0KKyAgLyogICAgICBzdWJnbHlwaHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIGF1dG9oaW50IHN1Y2ggZm9udHMgdXNpbmcgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBARlRfTE9BRF9GT1JDRV9BVVRPSElOVDsgaXQgd2lsbCBhbHNvIGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEBGVF9MT0FEX05PX0hJTlRJTkcuICBZb3UgaGF2ZSB0byBzZXQgYm90aCBARlRfTE9BRF9OT19ISU5USU5HICAgKi8NCisgIC8qICAgICAgYW5kIEBGVF9MT0FEX05PX0FVVE9ISU5UIHRvIHJlYWxseSBkaXNhYmxlIGhpbnRpbmc7IGhvd2V2ZXIsIHlvdSAqLw0KKyAgLyogICAgICBwcm9iYWJseSBuZXZlciB3YW50IHRoaXMgZXhjZXB0IGZvciBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzLiAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgQ3VycmVudGx5LCB0aGVyZSBhcmUgYWJvdXQgYSBkb3plbiBUcnVlVHlwZSBmb250cyBpbiB0aGUgbGlzdCBvZiAqLw0KKyAgLyogICAgICB0cmlja3kgZm9udHM7IHRoZXkgYXJlIGhhcmQtY29kZWQgaW4gZmlsZSBgdHRvYmpzLmMnLiAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19TQ0FMQUJMRSAgICAgICAgICAoIDFMIDw8ICAwICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19GSVhFRF9TSVpFUyAgICAgICAoIDFMIDw8ICAxICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURUSCAgICAgICAoIDFMIDw8ICAyICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19TRk5UICAgICAgICAgICAgICAoIDFMIDw8ICAzICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19IT1JJWk9OVEFMICAgICAgICAoIDFMIDw8ICA0ICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19WRVJUSUNBTCAgICAgICAgICAoIDFMIDw8ICA1ICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19LRVJOSU5HICAgICAgICAgICAoIDFMIDw8ICA2ICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19GQVNUX0dMWVBIUyAgICAgICAoIDFMIDw8ICA3ICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19NVUxUSVBMRV9NQVNURVJTICAoIDFMIDw8ICA4ICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUyAgICAgICAoIDFMIDw8ICA5ICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19FWFRFUk5BTF9TVFJFQU0gICAoIDFMIDw8IDEwICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19ISU5URVIgICAgICAgICAgICAoIDFMIDw8IDExICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19DSURfS0VZRUQgICAgICAgICAoIDFMIDw8IDEyICkNCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19UUklDS1kgICAgICAgICAgICAoIDFMIDw8IDEzICkNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAgKg0KKyAgICogQG1hY3JvOg0KKyAgICogICBGVF9IQVNfSE9SSVpPTlRBTCggZmFjZSApDQorICAgKg0KKyAgICogQGRlc2NyaXB0aW9uOg0KKyAgICogICBBIG1hY3JvIHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIGEgZmFjZSBvYmplY3QgY29udGFpbnMNCisgICAqICAgaG9yaXpvbnRhbCBtZXRyaWNzICh0aGlzIGlzIHRydWUgZm9yIGFsbCBmb250IGZvcm1hdHMgdGhvdWdoKS4NCisgICAqDQorICAgKiBAYWxzbzoNCisgICAqICAgQEZUX0hBU19WRVJUSUNBTCBjYW4gYmUgdXNlZCB0byBjaGVjayBmb3IgdmVydGljYWwgbWV0cmljcy4NCisgICAqDQorICAgKi8NCisjZGVmaW5lIEZUX0hBU19IT1JJWk9OVEFMKCBmYWNlICkgXA0KKyAgICAgICAgICAoIGZhY2UtPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfSE9SSVpPTlRBTCApDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICoNCisgICAqIEBtYWNybzoNCisgICAqICAgRlRfSEFTX1ZFUlRJQ0FMKCBmYWNlICkNCisgICAqDQorICAgKiBAZGVzY3JpcHRpb246DQorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIG9iamVjdCBjb250YWlucyByZWFsDQorICAgKiAgIHZlcnRpY2FsIG1ldHJpY3MgKGFuZCBub3Qgb25seSBzeW50aGVzaXplZCBvbmVzKS4NCisgICAqDQorICAgKi8NCisjZGVmaW5lIEZUX0hBU19WRVJUSUNBTCggZmFjZSApIFwNCisgICAgICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX1ZFUlRJQ0FMICkNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAgKg0KKyAgICogQG1hY3JvOg0KKyAgICogICBGVF9IQVNfS0VSTklORyggZmFjZSApDQorICAgKg0KKyAgICogQGRlc2NyaXB0aW9uOg0KKyAgICogICBBIG1hY3JvIHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIGEgZmFjZSBvYmplY3QgY29udGFpbnMga2VybmluZw0KKyAgICogICBkYXRhIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIHdpdGggQEZUX0dldF9LZXJuaW5nLg0KKyAgICoNCisgICAqLw0KKyNkZWZpbmUgRlRfSEFTX0tFUk5JTkcoIGZhY2UgKSBcDQorICAgICAgICAgICggZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19LRVJOSU5HICkNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAgKg0KKyAgICogQG1hY3JvOg0KKyAgICogICBGVF9JU19TQ0FMQUJMRSggZmFjZSApDQorICAgKg0KKyAgICogQGRlc2NyaXB0aW9uOg0KKyAgICogICBBIG1hY3JvIHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIGEgZmFjZSBvYmplY3QgY29udGFpbnMgYSBzY2FsYWJsZQ0KKyAgICogICBmb250IGZhY2UgKHRydWUgZm9yIFRydWVUeXBlLCBUeXBlfjEsIFR5cGV+NDIsIENJRCwgT3BlblR5cGUvQ0ZGLA0KKyAgICogICBhbmQgUEZSIGZvbnQgZm9ybWF0cy4NCisgICAqDQorICAgKi8NCisjZGVmaW5lIEZUX0lTX1NDQUxBQkxFKCBmYWNlICkgXA0KKyAgICAgICAgICAoIGZhY2UtPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfU0NBTEFCTEUgKQ0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICAqDQorICAgKiBAbWFjcm86DQorICAgKiAgIEZUX0lTX1NGTlQoIGZhY2UgKQ0KKyAgICoNCisgICAqIEBkZXNjcmlwdGlvbjoNCisgICAqICAgQSBtYWNybyB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuZXZlciBhIGZhY2Ugb2JqZWN0IGNvbnRhaW5zIGEgZm9udA0KKyAgICogICB3aG9zZSBmb3JtYXQgaXMgYmFzZWQgb24gdGhlIFNGTlQgc3RvcmFnZSBzY2hlbWUuICBUaGlzIHVzdWFsbHkNCisgICAqICAgbWVhbnM6IFRydWVUeXBlIGZvbnRzLCBPcGVuVHlwZSBmb250cywgYXMgd2VsbCBhcyBTRk5ULWJhc2VkIGVtYmVkZGVkDQorICAgKiAgIGJpdG1hcCBmb250cy4NCisgICAqDQorICAgKiAgIElmIHRoaXMgbWFjcm8gaXMgdHJ1ZSwgYWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIEBGVF9TRk5UX05BTUVTX0ggYW5kDQorICAgKiAgIEBGVF9UUlVFVFlQRV9UQUJMRVNfSCBhcmUgYXZhaWxhYmxlLg0KKyAgICoNCisgICAqLw0KKyNkZWZpbmUgRlRfSVNfU0ZOVCggZmFjZSApIFwNCisgICAgICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX1NGTlQgKQ0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICAqDQorICAgKiBAbWFjcm86DQorICAgKiAgIEZUX0lTX0ZJWEVEX1dJRFRIKCBmYWNlICkNCisgICAqDQorICAgKiBAZGVzY3JpcHRpb246DQorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIG9iamVjdCBjb250YWlucyBhIGZvbnQgZmFjZQ0KKyAgICogICB0aGF0IGNvbnRhaW5zIGZpeGVkLXdpZHRoIChvciBgbW9ub3NwYWNlJywgYGZpeGVkLXBpdGNoJywgZXRjLikNCisgICAqICAgZ2x5cGhzLg0KKyAgICoNCisgICAqLw0KKyNkZWZpbmUgRlRfSVNfRklYRURfV0lEVEgoIGZhY2UgKSBcDQorICAgICAgICAgICggZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURUSCApDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICoNCisgICAqIEBtYWNybzoNCisgICAqICAgRlRfSEFTX0ZJWEVEX1NJWkVTKCBmYWNlICkNCisgICAqDQorICAgKiBAZGVzY3JpcHRpb246DQorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIG9iamVjdCBjb250YWlucyBzb21lDQorICAgKiAgIGVtYmVkZGVkIGJpdG1hcHMuICBTZWUgdGhlIGBhdmFpbGFibGVfc2l6ZXMnIGZpZWxkIG9mIHRoZQ0KKyAgICogICBARlRfRmFjZVJlYyBzdHJ1Y3R1cmUuDQorICAgKg0KKyAgICovDQorI2RlZmluZSBGVF9IQVNfRklYRURfU0laRVMoIGZhY2UgKSBcDQorICAgICAgICAgICggZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19GSVhFRF9TSVpFUyApDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICoNCisgICAqIEBtYWNybzoNCisgICAqICAgRlRfSEFTX0ZBU1RfR0xZUEhTKCBmYWNlICkNCisgICAqDQorICAgKiBAZGVzY3JpcHRpb246DQorICAgKiAgIERlcHJlY2F0ZWQuDQorICAgKg0KKyAgICovDQorI2RlZmluZSBGVF9IQVNfRkFTVF9HTFlQSFMoIGZhY2UgKSAgMA0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICAqDQorICAgKiBAbWFjcm86DQorICAgKiAgIEZUX0hBU19HTFlQSF9OQU1FUyggZmFjZSApDQorICAgKg0KKyAgICogQGRlc2NyaXB0aW9uOg0KKyAgICogICBBIG1hY3JvIHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIGEgZmFjZSBvYmplY3QgY29udGFpbnMgc29tZSBnbHlwaA0KKyAgICogICBuYW1lcyB0aGF0IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIEBGVF9HZXRfR2x5cGhfTmFtZS4NCisgICAqDQorICAgKi8NCisjZGVmaW5lIEZUX0hBU19HTFlQSF9OQU1FUyggZmFjZSApIFwNCisgICAgICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX0dMWVBIX05BTUVTICkNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAgKg0KKyAgICogQG1hY3JvOg0KKyAgICogICBGVF9IQVNfTVVMVElQTEVfTUFTVEVSUyggZmFjZSApDQorICAgKg0KKyAgICogQGRlc2NyaXB0aW9uOg0KKyAgICogICBBIG1hY3JvIHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIGEgZmFjZSBvYmplY3QgY29udGFpbnMgc29tZQ0KKyAgICogICBtdWx0aXBsZSBtYXN0ZXJzLiAgVGhlIGZ1bmN0aW9ucyBwcm92aWRlZCBieSBARlRfTVVMVElQTEVfTUFTVEVSU19IDQorICAgKiAgIGFyZSB0aGVuIGF2YWlsYWJsZSB0byBjaG9vc2UgdGhlIGV4YWN0IGRlc2lnbiB5b3Ugd2FudC4NCisgICAqDQorICAgKi8NCisjZGVmaW5lIEZUX0hBU19NVUxUSVBMRV9NQVNURVJTKCBmYWNlICkgXA0KKyAgICAgICAgICAoIGZhY2UtPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfTVVMVElQTEVfTUFTVEVSUyApDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICoNCisgICAqIEBtYWNybzoNCisgICAqICAgRlRfSVNfQ0lEX0tFWUVEKCBmYWNlICkNCisgICAqDQorICAgKiBAZGVzY3JpcHRpb246DQorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIG9iamVjdCBjb250YWlucyBhIENJRC1rZXllZA0KKyAgICogICBmb250LiAgU2VlIHRoZSBkaXNjdXNzaW9uIG9mIEBGVF9GQUNFX0ZMQUdfQ0lEX0tFWUVEIGZvciBtb3JlDQorICAgKiAgIGRldGFpbHMuDQorICAgKg0KKyAgICogICBJZiB0aGlzIG1hY3JvIGlzIHRydWUsIGFsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBARlRfQ0lEX0ggYXJlDQorICAgKiAgIGF2YWlsYWJsZS4NCisgICAqDQorICAgKi8NCisjZGVmaW5lIEZUX0lTX0NJRF9LRVlFRCggZmFjZSApIFwNCisgICAgICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX0NJRF9LRVlFRCApDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICoNCisgICAqIEBtYWNybzoNCisgICAqICAgRlRfSVNfVFJJQ0tZKCBmYWNlICkNCisgICAqDQorICAgKiBAZGVzY3JpcHRpb246DQorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIHJlcHJlc2VudHMgYSBgdHJpY2t5JyBmb250Lg0KKyAgICogICBTZWUgdGhlIGRpc2N1c3Npb24gb2YgQEZUX0ZBQ0VfRkxBR19UUklDS1kgZm9yIG1vcmUgZGV0YWlscy4NCisgICAqDQorICAgKi8NCisjZGVmaW5lIEZUX0lTX1RSSUNLWSggZmFjZSApIFwNCisgICAgICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX1RSSUNLWSApDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPENvbnN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TVFlMRV9GTEFHX1hYWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBBIGxpc3Qgb2YgYml0LWZsYWdzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHN0eWxlIG9mIGEgZ2l2ZW4gZmFjZS4gICAgKi8NCisgIC8qICAgIFRoZXNlIGFyZSB1c2VkIGluIHRoZSBgc3R5bGVfZmxhZ3MnIGZpZWxkIG9mIEBGVF9GYWNlUmVjLiAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1NUWUxFX0ZMQUdfSVRBTElDIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCBhIGdpdmVuIGZhY2Ugc3R5bGUgaXMgaXRhbGljIG9yIG9ibGlxdWUuICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1NUWUxFX0ZMQUdfQk9MRCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCBhIGdpdmVuIGZhY2UgaXMgYm9sZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIHN0eWxlIGluZm9ybWF0aW9uIGFzIHByb3ZpZGVkIGJ5IEZyZWVUeXBlIGlzIHZlcnkgYmFzaWMuICBNb3JlICovDQorICAvKiAgICBkZXRhaWxzIGFyZSBiZXlvbmQgdGhlIHNjb3BlIGFuZCBzaG91bGQgYmUgZG9uZSBvbiBhIGhpZ2hlciBsZXZlbCAgKi8NCisgIC8qICAgIChmb3IgZXhhbXBsZSwgYnkgYW5hbHl6aW5nIHZhcmlvdXMgZmllbGRzIG9mIHRoZSBgT1MvMicgdGFibGUgaW4gICAqLw0KKyAgLyogICAgU0ZOVCBiYXNlZCBmb250cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIEZUX1NUWUxFX0ZMQUdfSVRBTElDICAoIDEgPDwgMCApDQorI2RlZmluZSBGVF9TVFlMRV9GTEFHX0JPTEQgICAgKCAxIDw8IDEgKQ0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2l6ZV9JbnRlcm5hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQW4gb3BhcXVlIGhhbmRsZSB0byBhbiBgRlRfU2l6ZV9JbnRlcm5hbFJlYycgc3RydWN0dXJlLCB1c2VkIHRvICAgICovDQorICAvKiAgICBtb2RlbCBwcml2YXRlIGRhdGEgb2YgYSBnaXZlbiBARlRfU2l6ZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU2l6ZV9JbnRlcm5hbFJlY18qICBGVF9TaXplX0ludGVybmFsOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2l6ZV9NZXRyaWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIHNpemUgbWV0cmljcyBzdHJ1Y3R1cmUgZ2l2ZXMgdGhlIG1ldHJpY3Mgb2YgYSBzaXplIG9iamVjdC4gICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgeF9wcGVtICAgICAgIDo6IFRoZSB3aWR0aCBvZiB0aGUgc2NhbGVkIEVNIHNxdWFyZSBpbiBwaXhlbHMsIGhlbmNlICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgdGhlIHRlcm0gYHBwZW0nIChwaXhlbHMgcGVyIEVNKS4gIEl0IGlzIGFsc28gICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICByZWZlcnJlZCB0byBhcyBgbm9taW5hbCB3aWR0aCcuICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB5X3BwZW0gICAgICAgOjogVGhlIGhlaWdodCBvZiB0aGUgc2NhbGVkIEVNIHNxdWFyZSBpbiBwaXhlbHMsICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICBoZW5jZSB0aGUgdGVybSBgcHBlbScgKHBpeGVscyBwZXIgRU0pLiAgSXQgaXMgYWxzbyAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgIHJlZmVycmVkIHRvIGFzIGBub21pbmFsIGhlaWdodCcuICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHhfc2NhbGUgICAgICA6OiBBIDE2LjE2IGZyYWN0aW9uYWwgc2NhbGluZyB2YWx1ZSB1c2VkIHRvIGNvbnZlcnQgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgIGhvcml6b250YWwgbWV0cmljcyBmcm9tIGZvbnQgdW5pdHMgdG8gMjYuNiAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25hbCBwaXhlbHMuICBPbmx5IHJlbGV2YW50IGZvciBzY2FsYWJsZSAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICBmb250IGZvcm1hdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB5X3NjYWxlICAgICAgOjogQSAxNi4xNiBmcmFjdGlvbmFsIHNjYWxpbmcgdmFsdWUgdXNlZCB0byBjb252ZXJ0ICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBtZXRyaWNzIGZyb20gZm9udCB1bml0cyB0byAyNi42ICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uYWwgcGl4ZWxzLiAgT25seSByZWxldmFudCBmb3Igc2NhbGFibGUgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgZm9udCBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYXNjZW5kZXIgICAgIDo6IFRoZSBhc2NlbmRlciBpbiAyNi42IGZyYWN0aW9uYWwgcGl4ZWxzLiAgU2VlICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgQEZUX0ZhY2VSZWMgZm9yIHRoZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZGVzY2VuZGVyICAgIDo6IFRoZSBkZXNjZW5kZXIgaW4gMjYuNiBmcmFjdGlvbmFsIHBpeGVscy4gIFNlZSAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgQEZUX0ZhY2VSZWMgZm9yIHRoZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgaGVpZ2h0ICAgICAgIDo6IFRoZSBoZWlnaHQgaW4gMjYuNiBmcmFjdGlvbmFsIHBpeGVscy4gIFNlZSAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgQEZUX0ZhY2VSZWMgZm9yIHRoZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgbWF4X2FkdmFuY2UgIDo6IFRoZSBtYXhpbXVtIGFkdmFuY2Ugd2lkdGggaW4gMjYuNiBmcmFjdGlvbmFsICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgcGl4ZWxzLiAgU2VlIEBGVF9GYWNlUmVjIGZvciB0aGUgZGV0YWlscy4gICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgc2NhbGluZyB2YWx1ZXMsIGlmIHJlbGV2YW50LCBhcmUgZGV0ZXJtaW5lZCBmaXJzdCBkdXJpbmcgYSAgICAgKi8NCisgIC8qICAgIHNpemUgY2hhbmdpbmcgb3BlcmF0aW9uLiAgVGhlIHJlbWFpbmluZyBmaWVsZHMgYXJlIHRoZW4gc2V0IGJ5IHRoZSAqLw0KKyAgLyogICAgZHJpdmVyLiAgRm9yIHNjYWxhYmxlIGZvcm1hdHMsIHRoZXkgYXJlIHVzdWFsbHkgc2V0IHRvIHNjYWxlZCAgICAgICovDQorICAvKiAgICB2YWx1ZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIGluIEBGVF9GYWNlUmVjLiAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgTm90ZSB0aGF0IGR1ZSB0byBnbHlwaCBoaW50aW5nLCB0aGVzZSB2YWx1ZXMgbWlnaHQgbm90IGJlIGV4YWN0ICAgICovDQorICAvKiAgICBmb3IgY2VydGFpbiBmb250cy4gIFRodXMgdGhleSBtdXN0IGJlIHRyZWF0ZWQgYXMgdW5yZWxpYWJsZSAgICAgICAgKi8NCisgIC8qICAgIHdpdGggYW4gZXJyb3IgbWFyZ2luIG9mIGF0IGxlYXN0IG9uZSBwaXhlbCEgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBJbmRlZWQsIHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIGV4YWN0IG1ldHJpY3MgaXMgdG8gcmVuZGVyIF9hbGxfICAgKi8NCisgIC8qICAgIGdseXBocy4gIEFzIHRoaXMgd291bGQgYmUgYSBkZWZpbml0ZSBwZXJmb3JtYW5jZSBoaXQsIGl0IGlzIHVwIHRvICAqLw0KKyAgLyogICAgY2xpZW50IGFwcGxpY2F0aW9ucyB0byBwZXJmb3JtIHN1Y2ggY29tcHV0YXRpb25zLiAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBGVF9TaXplX01ldHJpY3Mgc3RydWN0dXJlIGlzIHZhbGlkIGZvciBiaXRtYXAgZm9udHMgYWxzby4gICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICB0eXBlZGVmIHN0cnVjdCAgRlRfU2l6ZV9NZXRyaWNzXw0KKyAgew0KKyAgICBGVF9VU2hvcnQgIHhfcHBlbTsgICAgICAvKiBob3Jpem9udGFsIHBpeGVscyBwZXIgRU0gICAgICAgICAgICAgICAqLw0KKyAgICBGVF9VU2hvcnQgIHlfcHBlbTsgICAgICAvKiB2ZXJ0aWNhbCBwaXhlbHMgcGVyIEVNICAgICAgICAgICAgICAgICAqLw0KKw0KKyAgICBGVF9GaXhlZCAgIHhfc2NhbGU7ICAgICAvKiBzY2FsaW5nIHZhbHVlcyB1c2VkIHRvIGNvbnZlcnQgZm9udCAgICAqLw0KKyAgICBGVF9GaXhlZCAgIHlfc2NhbGU7ICAgICAvKiB1bml0cyB0byAyNi42IGZyYWN0aW9uYWwgcGl4ZWxzICAgICAgICAqLw0KKw0KKyAgICBGVF9Qb3MgICAgIGFzY2VuZGVyOyAgICAvKiBhc2NlbmRlciBpbiAyNi42IGZyYWMuIHBpeGVscyAgICAgICAgICAqLw0KKyAgICBGVF9Qb3MgICAgIGRlc2NlbmRlcjsgICAvKiBkZXNjZW5kZXIgaW4gMjYuNiBmcmFjLiBwaXhlbHMgICAgICAgICAqLw0KKyAgICBGVF9Qb3MgICAgIGhlaWdodDsgICAgICAvKiB0ZXh0IGhlaWdodCBpbiAyNi42IGZyYWMuIHBpeGVscyAgICAgICAqLw0KKyAgICBGVF9Qb3MgICAgIG1heF9hZHZhbmNlOyAvKiBtYXggaG9yaXpvbnRhbCBhZHZhbmNlLCBpbiAyNi42IHBpeGVscyAqLw0KKw0KKyAgfSBGVF9TaXplX01ldHJpY3M7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TaXplUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSByb290IHNpemUgY2xhc3Mgc3RydWN0dXJlLiAgQSBzaXplIG9iamVjdCBtb2RlbHMgYSBmYWNlICAgKi8NCisgIC8qICAgIG9iamVjdCBhdCBhIGdpdmVuIHNpemUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgICAgOjogSGFuZGxlIHRvIHRoZSBwYXJlbnQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBnZW5lcmljIDo6IEEgdHlwZWxlc3MgcG9pbnRlciwgd2hpY2ggaXMgdW51c2VkIGJ5IHRoZSBGcmVlVHlwZSAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgbGlicmFyeSBvciBhbnkgb2YgaXRzIGRyaXZlcnMuICBJdCBjYW4gYmUgdXNlZCBieSAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICBjbGllbnQgYXBwbGljYXRpb25zIHRvIGxpbmsgdGhlaXIgb3duIGRhdGEgdG8gZWFjaCBzaXplICovDQorICAvKiAgICAgICAgICAgICAgIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgbWV0cmljcyA6OiBNZXRyaWNzIGZvciB0aGlzIHNpemUgb2JqZWN0LiAgVGhpcyBmaWVsZCBpcyByZWFkLW9ubHkuICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TaXplUmVjXw0KKyAgew0KKyAgICBGVF9GYWNlICAgICAgICAgICBmYWNlOyAgICAgIC8qIHBhcmVudCBmYWNlIG9iamVjdCAgICAgICAgICAgICAgKi8NCisgICAgRlRfR2VuZXJpYyAgICAgICAgZ2VuZXJpYzsgICAvKiBnZW5lcmljIHBvaW50ZXIgZm9yIGNsaWVudCB1c2VzICovDQorICAgIEZUX1NpemVfTWV0cmljcyAgIG1ldHJpY3M7ICAgLyogc2l6ZSBtZXRyaWNzICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICBGVF9TaXplX0ludGVybmFsICBpbnRlcm5hbDsNCisNCisgIH0gRlRfU2l6ZVJlYzsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1N1YkdseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBzdWJnbHlwaCBzdHJ1Y3R1cmUgaXMgYW4gaW50ZXJuYWwgb2JqZWN0IHVzZWQgdG8gZGVzY3JpYmUgICAgICAqLw0KKyAgLyogICAgc3ViZ2x5cGhzIChmb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgY29tcG9zaXRlcykuICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIHN1YmdseXBoIGltcGxlbWVudGF0aW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBoaWdoLWxldmVsIEFQSSwgICAgICovDQorICAvKiAgICBoZW5jZSB0aGUgZm9yd2FyZCBzdHJ1Y3R1cmUgZGVjbGFyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgWW91IGNhbiBob3dldmVyIHJldHJpZXZlIHN1YmdseXBoIGluZm9ybWF0aW9uIHdpdGggICAgICAgICAgICAgICAgICovDQorICAvKiAgICBARlRfR2V0X1N1YkdseXBoX0luZm8uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU3ViR2x5cGhSZWNfKiAgRlRfU3ViR2x5cGg7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TbG90X0ludGVybmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBBbiBvcGFxdWUgaGFuZGxlIHRvIGFuIGBGVF9TbG90X0ludGVybmFsUmVjJyBzdHJ1Y3R1cmUsIHVzZWQgdG8gICAgKi8NCisgIC8qICAgIG1vZGVsIHByaXZhdGUgZGF0YSBvZiBhIGdpdmVuIEBGVF9HbHlwaFNsb3Qgb2JqZWN0LiAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICB0eXBlZGVmIHN0cnVjdCBGVF9TbG90X0ludGVybmFsUmVjXyogIEZUX1Nsb3RfSW50ZXJuYWw7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9HbHlwaFNsb3RSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSByb290IGdseXBoIHNsb3QgY2xhc3Mgc3RydWN0dXJlLiAgQSBnbHlwaCBzbG90IGlzIGEgICAgICAgKi8NCisgIC8qICAgIGNvbnRhaW5lciB3aGVyZSBpbmRpdmlkdWFsIGdseXBocyBjYW4gYmUgbG9hZGVkLCBiZSB0aGV5IGluICAgICAgICAqLw0KKyAgLyogICAgb3V0bGluZSBvciBiaXRtYXAgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgbGlicmFyeSAgICAgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIEZyZWVUeXBlIGxpYnJhcnkgaW5zdGFuY2UgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHNsb3QgYmVsb25ncyB0by4gICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSAgICAgICAgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHBhcmVudCBmYWNlIG9iamVjdC4gICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIG5leHQgICAgICAgICAgICAgIDo6IEluIHNvbWUgY2FzZXMgKGxpa2Ugc29tZSBmb250IHRvb2xzKSwgc2V2ZXJhbCAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGggc2xvdHMgcGVyIGZhY2Ugb2JqZWN0IGNhbiBiZSBhIGdvb2QgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICB0aGluZy4gIEFzIHRoaXMgaXMgcmFyZSwgdGhlIGdseXBoIHNsb3RzIGFyZSAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlZCB0aHJvdWdoIGEgZGlyZWN0LCBzaW5nbGUtbGlua2VkIGxpc3QgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgaXRzIGBuZXh0JyBmaWVsZC4gICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGdlbmVyaWMgICAgICAgICAgIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB3aGljaCBpcyB1bnVzZWQgYnkgdGhlICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVR5cGUgbGlicmFyeSBvciBhbnkgb2YgaXRzIGRyaXZlcnMuICBJdCAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCBieSBjbGllbnQgYXBwbGljYXRpb25zIHRvIGxpbmsgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyIG93biBkYXRhIHRvIGVhY2ggZ2x5cGggc2xvdCBvYmplY3QuICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBtZXRyaWNzICAgICAgICAgICA6OiBUaGUgbWV0cmljcyBvZiB0aGUgbGFzdCBsb2FkZWQgZ2x5cGggaW4gdGhlICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3QuICBUaGUgcmV0dXJuZWQgdmFsdWVzIGRlcGVuZCBvbiB0aGUgbGFzdCAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgbG9hZCBmbGFncyAoc2VlIHRoZSBARlRfTG9hZF9HbHlwaCBBUEkgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbikgYW5kIGNhbiBiZSBleHByZXNzZWQgZWl0aGVyIGluIDI2LjYgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uYWwgcGl4ZWxzIG9yIGZvbnQgdW5pdHMuICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgZXZlbiB3aGVuIHRoZSBnbHlwaCBpbWFnZSBpcyAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkLCB0aGUgbWV0cmljcyBhcmUgbm90LiAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBsaW5lYXJIb3JpQWR2YW5jZSA6OiBUaGUgYWR2YW5jZSB3aWR0aCBvZiB0aGUgdW5oaW50ZWQgZ2x5cGguICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEl0cyB2YWx1ZSBpcyBleHByZXNzZWQgaW4gMTYuMTYgZnJhY3Rpb25hbCAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzLCB1bmxlc3MgQEZUX0xPQURfTElORUFSX0RFU0lHTiBpcyBzZXQgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGxvYWRpbmcgdGhlIGdseXBoLiAgVGhpcyBmaWVsZCBjYW4gYmUgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGFudCB0byBwZXJmb3JtIGNvcnJlY3QgV1lTSVdZRyBsYXlvdXQuICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgT25seSByZWxldmFudCBmb3Igb3V0bGluZSBnbHlwaHMuICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGxpbmVhclZlcnRBZHZhbmNlIDo6IFRoZSBhZHZhbmNlIGhlaWdodCBvZiB0aGUgdW5oaW50ZWQgZ2x5cGguICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgSXRzIHZhbHVlIGlzIGV4cHJlc3NlZCBpbiAxNi4xNiBmcmFjdGlvbmFsICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMsIHVubGVzcyBARlRfTE9BRF9MSU5FQVJfREVTSUdOIGlzIHNldCAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gbG9hZGluZyB0aGUgZ2x5cGguICBUaGlzIGZpZWxkIGNhbiBiZSAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0YW50IHRvIHBlcmZvcm0gY29ycmVjdCBXWVNJV1lHIGxheW91dC4gICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IHJlbGV2YW50IGZvciBvdXRsaW5lIGdseXBocy4gICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYWR2YW5jZSAgICAgICAgICAgOjogVGhpcyBzaG9ydGhhbmQgaXMsIGRlcGVuZGluZyBvbiAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBARlRfTE9BRF9JR05PUkVfVFJBTlNGT1JNLCB0aGUgdHJhbnNmb3JtZWQgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2Ugd2lkdGggZm9yIHRoZSBnbHlwaCAoaW4gMjYuNiAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25hbCBwaXhlbCBmb3JtYXQpLiAgQXMgc3BlY2lmaWVkIHdpdGggICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBARlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQsIGl0IHVzZXMgZWl0aGVyIHRoZSAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGBob3JpQWR2YW5jZScgb3IgdGhlIGB2ZXJ0QWR2YW5jZScgdmFsdWUgb2YgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgYG1ldHJpY3MnIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZvcm1hdCAgICAgICAgICAgIDo6IFRoaXMgZmllbGQgaW5kaWNhdGVzIHRoZSBmb3JtYXQgb2YgdGhlIGltYWdlICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVkIGluIHRoZSBnbHlwaCBzbG90LiAgVHlwaWNhbGx5ICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBARlRfR0xZUEhfRk9STUFUX0JJVE1BUCwgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSwgb3IgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgQEZUX0dMWVBIX0ZPUk1BVF9DT01QT1NJVEUsIGJ1dCBvdGhlcnMgYXJlICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYml0bWFwICAgICAgICAgICAgOjogVGhpcyBmaWVsZCBpcyB1c2VkIGFzIGEgYml0bWFwIGRlc2NyaXB0b3IgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBzbG90IGZvcm1hdCBpcyAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9HTFlQSF9GT1JNQVRfQklUTUFQLiAgTm90ZSB0aGF0IHRoZSAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyBhbmQgY29udGVudCBvZiB0aGUgYml0bWFwIGJ1ZmZlciBjYW4gICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgYmV0d2VlbiBjYWxscyBvZiBARlRfTG9hZF9HbHlwaCBhbmQgYSAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGZldyBvdGhlciBmdW5jdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBiaXRtYXBfbGVmdCAgICAgICA6OiBUaGlzIGlzIHRoZSBiaXRtYXAncyBsZWZ0IGJlYXJpbmcgZXhwcmVzc2VkICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGluIGludGVnZXIgcGl4ZWxzLiAgT2YgY291cnNlLCB0aGlzIGlzIG9ubHkgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgaWYgdGhlIGZvcm1hdCBpcyAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBARlRfR0xZUEhfRk9STUFUX0JJVE1BUC4gICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYml0bWFwX3RvcCAgICAgICAgOjogVGhpcyBpcyB0aGUgYml0bWFwJ3MgdG9wIGJlYXJpbmcgZXhwcmVzc2VkIGluICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ2VyIHBpeGVscy4gIFJlbWVtYmVyIHRoYXQgdGhpcyBpcyB0aGUgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlIGZyb20gdGhlIGJhc2VsaW5lIHRvIHRoZSB0b3AtbW9zdCAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGggc2NhbmxpbmUsIHVwd2FyZHMgeX5jb29yZGluYXRlcyBiZWluZyAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAqcG9zaXRpdmUqLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgb3V0bGluZSAgICAgICAgICAgOjogVGhlIG91dGxpbmUgZGVzY3JpcHRvciBmb3IgdGhlIGN1cnJlbnQgZ2x5cGggICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSBpZiBpdHMgZm9ybWF0IGlzICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9HTFlQSF9GT1JNQVRfT1VUTElORS4gIE9uY2UgYSBnbHlwaCBpcyAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkLCBgb3V0bGluZScgY2FuIGJlIHRyYW5zZm9ybWVkLCAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0b3J0ZWQsIGVtYm9sZGVkLCBldGMuICBIb3dldmVyLCBpdCBtdXN0ICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBiZSBmcmVlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBudW1fc3ViZ2x5cGhzICAgICA6OiBUaGUgbnVtYmVyIG9mIHN1YmdseXBocyBpbiBhIGNvbXBvc2l0ZSBnbHlwaC4gKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgaXMgb25seSB2YWxpZCBmb3IgdGhlIGNvbXBvc2l0ZSAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGggZm9ybWF0IHRoYXQgc2hvdWxkIG5vcm1hbGx5IG9ubHkgYmUgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQgd2l0aCB0aGUgQEZUX0xPQURfTk9fUkVDVVJTRSBmbGFnLiAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBub3cgdGhpcyBpcyBpbnRlcm5hbCB0byBGcmVlVHlwZS4gICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBzdWJnbHlwaHMgICAgICAgICA6OiBBbiBhcnJheSBvZiBzdWJnbHlwaCBkZXNjcmlwdG9ycyBmb3IgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0ZSBnbHlwaHMuICBUaGVyZSBhcmUgYG51bV9zdWJnbHlwaHMnICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgaW4gdGhlcmUuICBDdXJyZW50bHkgaW50ZXJuYWwgdG8gICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlVHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgY29udHJvbF9kYXRhICAgICAgOjogQ2VydGFpbiBmb250IGRyaXZlcnMgY2FuIGFsc28gcmV0dXJuIHRoZSAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sIGRhdGEgZm9yIGEgZ2l2ZW4gZ2x5cGggaW1hZ2UgKGUuZy4gICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIFRydWVUeXBlIGJ5dGVjb2RlLCBUeXBlfjEgY2hhcnN0cmluZ3MsIGV0Yy4pLiAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWVsZCBpcyBhIHBvaW50ZXIgdG8gc3VjaCBkYXRhLiAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGNvbnRyb2xfbGVuICAgICAgIDo6IFRoaXMgaXMgdGhlIGxlbmd0aCBpbiBieXRlcyBvZiB0aGUgY29udHJvbCAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIG90aGVyICAgICAgICAgICAgIDo6IFJlYWxseSB3aWNrZWQgZm9ybWF0cyBjYW4gdXNlIHRoaXMgcG9pbnRlciB0byAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudCB0aGVpciBvd24gZ2x5cGggaW1hZ2UgdG8gY2xpZW50ICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMuICBOb3RlIHRoYXQgdGhlIGFwcGxpY2F0aW9uICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGltYWdlIGZvcm1hdC4gICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBsc2JfZGVsdGEgICAgICAgICA6OiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGhpbnRlZCBhbmQgdW5oaW50ZWQgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgc2lkZSBiZWFyaW5nIHdoaWxlIGF1dG9oaW50aW5nIGlzICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLiAgWmVybyBvdGhlcndpc2UuICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHJzYl9kZWx0YSAgICAgICAgIDo6IFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gaGludGVkIGFuZCB1bmhpbnRlZCAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgc2lkZSBiZWFyaW5nIHdoaWxlIGF1dG9oaW50aW5nIGlzICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuICBaZXJvIG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBJZiBARlRfTG9hZF9HbHlwaCBpcyBjYWxsZWQgd2l0aCBkZWZhdWx0IGZsYWdzIChzZWUgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEBGVF9MT0FEX0RFRkFVTFQpIHRoZSBnbHlwaCBpbWFnZSBpcyBsb2FkZWQgaW4gdGhlIGdseXBoIHNsb3QgaW4gICAqLw0KKyAgLyogICAgaXRzIG5hdGl2ZSBmb3JtYXQgKGUuZy4sIGFuIG91dGxpbmUgZ2x5cGggZm9yIFRydWVUeXBlIGFuZCBUeXBlfjEgICovDQorICAvKiAgICBmb3JtYXRzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBpbWFnZSBjYW4gbGF0ZXIgYmUgY29udmVydGVkIGludG8gYSBiaXRtYXAgYnkgY2FsbGluZyAgICAgICAgICovDQorICAvKiAgICBARlRfUmVuZGVyX0dseXBoLiAgVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgY3VycmVudCByZW5kZXJlciBmb3IgICAgKi8NCisgIC8qICAgIHRoZSBuYXRpdmUgaW1hZ2UncyBmb3JtYXQsIHRoZW4gaW52b2tlcyBpdC4gICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgcmVuZGVyZXIgaXMgaW4gY2hhcmdlIG9mIHRyYW5zZm9ybWluZyB0aGUgbmF0aXZlIGltYWdlIHRocm91Z2ggKi8NCisgIC8qICAgIHRoZSBzbG90J3MgZmFjZSB0cmFuc2Zvcm1hdGlvbiBmaWVsZHMsIHRoZW4gY29udmVydGluZyBpdCBpbnRvIGEgICAqLw0KKyAgLyogICAgYml0bWFwIHRoYXQgaXMgcmV0dXJuZWQgaW4gYHNsb3QtPmJpdG1hcCcuICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIE5vdGUgdGhhdCBgc2xvdC0+Yml0bWFwX2xlZnQnIGFuZCBgc2xvdC0+Yml0bWFwX3RvcCcgYXJlIGFsc28gdXNlZCAqLw0KKyAgLyogICAgdG8gc3BlY2lmeSB0aGUgcG9zaXRpb24gb2YgdGhlIGJpdG1hcCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwZW4gICovDQorICAvKiAgICBwb3NpdGlvbiAoZS5nLiwgY29vcmRpbmF0ZXMgKDAsMCkgb24gdGhlIGJhc2VsaW5lKS4gIE9mIGNvdXJzZSwgICAgKi8NCisgIC8qICAgIGBzbG90LT5mb3JtYXQnIGlzIGFsc28gY2hhbmdlZCB0byBARlRfR0xZUEhfRk9STUFUX0JJVE1BUC4gICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEhlcmUgYSBzbWFsbCBwc2V1ZG8gY29kZSBmcmFnbWVudCB3aGljaCBzaG93cyBob3cgdG8gdXNlICAgICAgICAgICAqLw0KKyAgLyogICAgYGxzYl9kZWx0YScgYW5kIGByc2JfZGVsdGEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBGVF9Qb3MgIG9yaWdpbl94ICAgICAgID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEZUX1BvcyAgcHJldl9yc2JfZGVsdGEgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIGZvciBhbGwgZ2x5cGhzIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICA8Y29tcHV0ZSBrZXJuIGJldHdlZW4gY3VycmVudCBhbmQgcHJldmlvdXMgZ2x5cGggYW5kIGFkZCBpdCB0byAqLw0KKyAgLyogICAgICAgICBgb3JpZ2luX3gnPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICA8bG9hZCBnbHlwaCB3aXRoIGBGVF9Mb2FkX0dseXBoJz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgaWYgKCBwcmV2X3JzYl9kZWx0YSAtIGZhY2UtPmdseXBoLT5sc2JfZGVsdGEgPj0gMzIgKSAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgIG9yaWdpbl94IC09IDY0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgIGVsc2UgaWYgKCBwcmV2X3JzYl9kZWx0YSAtIGZhY2UtPmdseXBoLT5sc2JfZGVsdGEgPCAtMzIgKSAgICAgICovDQorICAvKiAgICAgICAgICBvcmlnaW5feCArPSA2NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgIHByZXZfcnNiX2RlbHRhID0gZmFjZS0+Z2x5cGgtPnJzYl9kZWx0YTsgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICA8c2F2ZSBnbHlwaCBpbWFnZSwgb3IgcmVuZGVyIGdseXBoLCBvciAuLi4+ICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgb3JpZ2luX3ggKz0gZmFjZS0+Z2x5cGgtPmFkdmFuY2UueDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgZW5kZm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIHR5cGVkZWYgc3RydWN0ICBGVF9HbHlwaFNsb3RSZWNfDQorICB7DQorICAgIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnk7DQorICAgIEZUX0ZhY2UgICAgICAgICAgIGZhY2U7DQorICAgIEZUX0dseXBoU2xvdCAgICAgIG5leHQ7DQorICAgIEZUX1VJbnQgICAgICAgICAgIHJlc2VydmVkOyAgICAgICAvKiByZXRhaW5lZCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgKi8NCisgICAgRlRfR2VuZXJpYyAgICAgICAgZ2VuZXJpYzsNCisNCisgICAgRlRfR2x5cGhfTWV0cmljcyAgbWV0cmljczsNCisgICAgRlRfRml4ZWQgICAgICAgICAgbGluZWFySG9yaUFkdmFuY2U7DQorICAgIEZUX0ZpeGVkICAgICAgICAgIGxpbmVhclZlcnRBZHZhbmNlOw0KKyAgICBGVF9WZWN0b3IgICAgICAgICBhZHZhbmNlOw0KKw0KKyAgICBGVF9HbHlwaF9Gb3JtYXQgICBmb3JtYXQ7DQorDQorICAgIEZUX0JpdG1hcCAgICAgICAgIGJpdG1hcDsNCisgICAgRlRfSW50ICAgICAgICAgICAgYml0bWFwX2xlZnQ7DQorICAgIEZUX0ludCAgICAgICAgICAgIGJpdG1hcF90b3A7DQorDQorICAgIEZUX091dGxpbmUgICAgICAgIG91dGxpbmU7DQorDQorICAgIEZUX1VJbnQgICAgICAgICAgIG51bV9zdWJnbHlwaHM7DQorICAgIEZUX1N1YkdseXBoICAgICAgIHN1YmdseXBoczsNCisNCisgICAgdm9pZCogICAgICAgICAgICAgY29udHJvbF9kYXRhOw0KKyAgICBsb25nICAgICAgICAgICAgICBjb250cm9sX2xlbjsNCisNCisgICAgRlRfUG9zICAgICAgICAgICAgbHNiX2RlbHRhOw0KKyAgICBGVF9Qb3MgICAgICAgICAgICByc2JfZGVsdGE7DQorDQorICAgIHZvaWQqICAgICAgICAgICAgIG90aGVyOw0KKw0KKyAgICBGVF9TbG90X0ludGVybmFsICBpbnRlcm5hbDsNCisNCisgIH0gRlRfR2x5cGhTbG90UmVjOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgRiBVIE4gQyBUIEkgTyBOIFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9Jbml0X0ZyZWVUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBJbml0aWFsaXplIGEgbmV3IEZyZWVUeXBlIGxpYnJhcnkgb2JqZWN0LiAgVGhlIHNldCBvZiBtb2R1bGVzICAgICAgKi8NCisgIC8qICAgIHRoYXQgYXJlIHJlZ2lzdGVyZWQgYnkgdGhpcyBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGF0IGJ1aWxkIHRpbWUuICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGFsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIGEgbmV3IGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEluIGNhc2UgeW91IHdhbnQgdG8gcHJvdmlkZSB5b3VyIG93biBtZW1vcnkgYWxsb2NhdGluZyByb3V0aW5lcywgICAqLw0KKyAgLyogICAgdXNlIEBGVF9OZXdfTGlicmFyeSBpbnN0ZWFkLCBmb2xsb3dlZCBieSBhIGNhbGwgdG8gICAgICAgICAgICAgICAgICovDQorICAvKiAgICBARlRfQWRkX0RlZmF1bHRfTW9kdWxlcyAob3IgYSBzZXJpZXMgb2YgY2FsbHMgdG8gQEZUX0FkZF9Nb2R1bGUpLiAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRm9yIG11bHRpLXRocmVhZGluZyBhcHBsaWNhdGlvbnMgZWFjaCB0aHJlYWQgc2hvdWxkIGhhdmUgaXRzIG93biAgICovDQorICAvKiAgICBGVF9MaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgSWYgeW91IG5lZWQgcmVmZXJlbmNlLWNvdW50aW5nIChjZi4gQEZUX1JlZmVyZW5jZV9MaWJyYXJ5KSwgdXNlICAgICovDQorICAvKiAgICBARlRfTmV3X0xpYnJhcnkgYW5kIEBGVF9Eb25lX0xpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApDQorICBGVF9Jbml0X0ZyZWVUeXBlKCBGVF9MaWJyYXJ5ICAqYWxpYnJhcnkgKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0RvbmVfRnJlZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIERlc3Ryb3kgYSBnaXZlbiBGcmVlVHlwZSBsaWJyYXJ5IG9iamVjdCBhbmQgYWxsIG9mIGl0cyBjaGlsZHJlbiwgICAqLw0KKyAgLyogICAgaW5jbHVkaW5nIHJlc291cmNlcywgZHJpdmVycywgZmFjZXMsIHNpemVzLCBldGMuICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQ0KKyAgRlRfRG9uZV9GcmVlVHlwZSggRlRfTGlicmFyeSAgbGlicmFyeSApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfT1BFTl9YWFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBsaXN0IG9mIGJpdC1maWVsZCBjb25zdGFudHMgdXNlZCB3aXRoaW4gdGhlIGBmbGFncycgZmllbGQgb2YgdGhlICovDQorICAvKiAgICBARlRfT3Blbl9BcmdzIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9PUEVOX01FTU9SWSAgIDo6IFRoaXMgaXMgYSBtZW1vcnktYmFzZWQgc3RyZWFtLiAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfT1BFTl9TVFJFQU0gICA6OiBDb3B5IHRoZSBzdHJlYW0gZnJvbSB0aGUgYHN0cmVhbScgZmllbGQuICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX09QRU5fUEFUSE5BTUUgOjogQ3JlYXRlIGEgbmV3IGlucHV0IHN0cmVhbSBmcm9tIGEgQ35wYXRoICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBuYW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX09QRU5fRFJJVkVSICAgOjogVXNlIHRoZSBgZHJpdmVyJyBmaWVsZC4gICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9PUEVOX1BBUkFNUyAgIDo6IFVzZSB0aGUgYG51bV9wYXJhbXMnIGFuZCBgcGFyYW1zJyBmaWVsZHMuICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZnRfb3Blbl9tZW1vcnkgICA6OiBEZXByZWNhdGVkOyB1c2UgQEZUX09QRU5fTUVNT1JZIGluc3RlYWQuICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZ0X29wZW5fc3RyZWFtICAgOjogRGVwcmVjYXRlZDsgdXNlIEBGVF9PUEVOX1NUUkVBTSBpbnN0ZWFkLiAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmdF9vcGVuX3BhdGhuYW1lIDo6IERlcHJlY2F0ZWQ7IHVzZSBARlRfT1BFTl9QQVRITkFNRSBpbnN0ZWFkLiAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZnRfb3Blbl9kcml2ZXIgICA6OiBEZXByZWNhdGVkOyB1c2UgQEZUX09QRU5fRFJJVkVSIGluc3RlYWQuICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZ0X29wZW5fcGFyYW1zICAgOjogRGVwcmVjYXRlZDsgdXNlIEBGVF9PUEVOX1BBUkFNUyBpbnN0ZWFkLiAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBgRlRfT1BFTl9NRU1PUlknLCBgRlRfT1BFTl9TVFJFQU0nLCBhbmQgYEZUX09QRU5fUEFUSE5BTUUnICAgICAqLw0KKyAgLyogICAgZmxhZ3MgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIEZUX09QRU5fTUVNT1JZICAgIDB4MQ0KKyNkZWZpbmUgRlRfT1BFTl9TVFJFQU0gICAgMHgyDQorI2RlZmluZSBGVF9PUEVOX1BBVEhOQU1FICAweDQNCisjZGVmaW5lIEZUX09QRU5fRFJJVkVSICAgIDB4OA0KKyNkZWZpbmUgRlRfT1BFTl9QQVJBTVMgICAgMHgxMA0KKw0KKyNkZWZpbmUgZnRfb3Blbl9tZW1vcnkgICAgRlRfT1BFTl9NRU1PUlkgICAgIC8qIGRlcHJlY2F0ZWQgKi8NCisjZGVmaW5lIGZ0X29wZW5fc3RyZWFtICAgIEZUX09QRU5fU1RSRUFNICAgICAvKiBkZXByZWNhdGVkICovDQorI2RlZmluZSBmdF9vcGVuX3BhdGhuYW1lICBGVF9PUEVOX1BBVEhOQU1FICAgLyogZGVwcmVjYXRlZCAqLw0KKyNkZWZpbmUgZnRfb3Blbl9kcml2ZXIgICAgRlRfT1BFTl9EUklWRVIgICAgIC8qIGRlcHJlY2F0ZWQgKi8NCisjZGVmaW5lIGZ0X29wZW5fcGFyYW1zICAgIEZUX09QRU5fUEFSQU1TICAgICAvKiBkZXByZWNhdGVkICovDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9QYXJhbWV0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBBIHNpbXBsZSBzdHJ1Y3R1cmUgdXNlZCB0byBwYXNzIG1vcmUgb3IgbGVzcyBnZW5lcmljIHBhcmFtZXRlcnMgdG8gKi8NCisgIC8qICAgIEBGVF9PcGVuX0ZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHRhZyAgOjogQSBmb3VyLWJ5dGUgaWRlbnRpZmljYXRpb24gdGFnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBkYXRhIDo6IEEgcG9pbnRlciB0byB0aGUgcGFyYW1ldGVyIGRhdGEuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgSUQgYW5kIGZ1bmN0aW9uIG9mIHBhcmFtZXRlcnMgYXJlIGRyaXZlci1zcGVjaWZpYy4gIFNlZSB0aGUgICAgKi8NCisgIC8qICAgIHZhcmlvdXMgRlRfUEFSQU1fVEFHX1hYWCBmbGFncyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICB0eXBlZGVmIHN0cnVjdCAgRlRfUGFyYW1ldGVyXw0KKyAgew0KKyAgICBGVF9VTG9uZyAgICB0YWc7DQorICAgIEZUX1BvaW50ZXIgIGRhdGE7DQorDQorICB9IEZUX1BhcmFtZXRlcjsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX09wZW5fQXJncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gaW5kaWNhdGUgaG93IHRvIG9wZW4gYSBuZXcgZm9udCBmaWxlIG9yICAgICAgICAqLw0KKyAgLyogICAgc3RyZWFtLiAgQSBwb2ludGVyIHRvIHN1Y2ggYSBzdHJ1Y3R1cmUgY2FuIGJlIHVzZWQgYXMgYSBwYXJhbWV0ZXIgICovDQorICAvKiAgICBmb3IgdGhlIGZ1bmN0aW9ucyBARlRfT3Blbl9GYWNlIGFuZCBARlRfQXR0YWNoX1N0cmVhbS4gICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmbGFncyAgICAgICA6OiBBIHNldCBvZiBiaXQgZmxhZ3MgaW5kaWNhdGluZyBob3cgdG8gdXNlIHRoZSAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBtZW1vcnlfYmFzZSA6OiBUaGUgZmlyc3QgYnl0ZSBvZiB0aGUgZmlsZSBpbiBtZW1vcnkuICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgbWVtb3J5X3NpemUgOjogVGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGZpbGUgaW4gbWVtb3J5LiAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHBhdGhuYW1lICAgIDo6IEEgcG9pbnRlciB0byBhbiA4LWJpdCBmaWxlIHBhdGhuYW1lLiAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBzdHJlYW0gICAgICA6OiBBIGhhbmRsZSB0byBhIHNvdXJjZSBzdHJlYW0gb2JqZWN0LiAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZHJpdmVyICAgICAgOjogVGhpcyBmaWVsZCBpcyBleGNsdXNpdmVseSB1c2VkIGJ5IEBGVF9PcGVuX0ZhY2U7ICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBpdCBzaW1wbHkgc3BlY2lmaWVzIHRoZSBmb250IGRyaXZlciB0byB1c2UgdG8gb3BlbiAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIHRoZSBmYWNlLiAgSWYgc2V0IHRvfjAsIEZyZWVUeXBlIHRyaWVzIHRvIGxvYWQgdGhlICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgZmFjZSB3aXRoIGVhY2ggb25lIG9mIHRoZSBkcml2ZXJzIGluIGl0cyBsaXN0LiAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIG51bV9wYXJhbXMgIDo6IFRoZSBudW1iZXIgb2YgZXh0cmEgcGFyYW1ldGVycy4gICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBwYXJhbXMgICAgICA6OiBFeHRyYSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGUgZm9udCBkcml2ZXIgd2hlbiAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIG9wZW5pbmcgYSBuZXcgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBzdHJlYW0gdHlwZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50cyBvZiBgZmxhZ3MnIHdoaWNoICAgICAqLw0KKyAgLyogICAgYXJlIHRlc3RlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyIGJ5IEBGVF9PcGVuX0ZhY2U6ICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIElmIHRoZSBgRlRfT1BFTl9NRU1PUlknIGJpdCBpcyBzZXQsIGFzc3VtZSB0aGF0IHRoaXMgaXMgYSAgICAgICAgICAqLw0KKyAgLyogICAgbWVtb3J5IGZpbGUgb2YgYG1lbW9yeV9zaXplJyBieXRlcywgbG9jYXRlZCBhdCBgbWVtb3J5X2FkZHJlc3MnLiAgICovDQorICAvKiAgICBUaGUgZGF0YSBhcmUgYXJlIG5vdCBjb3BpZWQsIGFuZCB0aGUgY2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciAgICAgKi8NCisgIC8qICAgIHJlbGVhc2luZyBhbmQgZGVzdHJveWluZyB0aGVtIF9hZnRlcl8gdGhlIGNvcnJlc3BvbmRpbmcgY2FsbCB0byAgICAqLw0KKyAgLyogICAgQEZUX0RvbmVfRmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIE90aGVyd2lzZSwgaWYgdGhlIGBGVF9PUEVOX1NUUkVBTScgYml0IGlzIHNldCwgYXNzdW1lIHRoYXQgYSAgICAgICAqLw0KKyAgLyogICAgY3VzdG9tIGlucHV0IHN0cmVhbSBgc3RyZWFtJyBpcyB1c2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIE90aGVyd2lzZSwgaWYgdGhlIGBGVF9PUEVOX1BBVEhOQU1FJyBiaXQgaXMgc2V0LCBhc3N1bWUgdGhhdCB0aGlzICAqLw0KKyAgLyogICAgaXMgYSBub3JtYWwgZmlsZSBhbmQgdXNlIGBwYXRobmFtZScgdG8gb3BlbiBpdC4gICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIElmIHRoZSBgRlRfT1BFTl9EUklWRVInIGJpdCBpcyBzZXQsIEBGVF9PcGVuX0ZhY2Ugb25seSB0cmllcyB0byAgICAqLw0KKyAgLyogICAgb3BlbiB0aGUgZmlsZSB3aXRoIHRoZSBkcml2ZXIgd2hvc2UgaGFuZGxlciBpcyBpbiBgZHJpdmVyJy4gICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIElmIHRoZSBgRlRfT1BFTl9QQVJBTVMnIGJpdCBpcyBzZXQsIHRoZSBwYXJhbWV0ZXJzIGdpdmVuIGJ5ICAgICAgICAqLw0KKyAgLyogICAgYG51bV9wYXJhbXMnIGFuZCBgcGFyYW1zJyBpcyB1c2VkLiAgVGhleSBhcmUgaWdub3JlZCBvdGhlcndpc2UuICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIElkZWFsbHksIGJvdGggdGhlIGBwYXRobmFtZScgYW5kIGBwYXJhbXMnIGZpZWxkcyBzaG91bGQgYmUgdGFnZ2VkICAqLw0KKyAgLyogICAgYXMgYGNvbnN0JzsgdGhpcyBpcyBtaXNzaW5nIGZvciBBUEkgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuICBJbiAgICovDQorICAvKiAgICBvdGhlciB3b3JkcywgYXBwbGljYXRpb25zIHNob3VsZCB0cmVhdCB0aGVtIGFzIHJlYWQtb25seS4gICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX09wZW5fQXJnc18NCisgIHsNCisgICAgRlRfVUludCAgICAgICAgIGZsYWdzOw0KKyAgICBjb25zdCBGVF9CeXRlKiAgbWVtb3J5X2Jhc2U7DQorICAgIEZUX0xvbmcgICAgICAgICBtZW1vcnlfc2l6ZTsNCisgICAgRlRfU3RyaW5nKiAgICAgIHBhdGhuYW1lOw0KKyAgICBGVF9TdHJlYW0gICAgICAgc3RyZWFtOw0KKyAgICBGVF9Nb2R1bGUgICAgICAgZHJpdmVyOw0KKyAgICBGVF9JbnQgICAgICAgICAgbnVtX3BhcmFtczsNCisgICAgRlRfUGFyYW1ldGVyKiAgIHBhcmFtczsNCisNCisgIH0gRlRfT3Blbl9BcmdzOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTmV3X0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBjYWxscyBARlRfT3Blbl9GYWNlIHRvIG9wZW4gYSBmb250IGJ5IGl0cyBwYXRobmFtZS4gICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgbGlicmFyeSAgICA6OiBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSByZXNvdXJjZS4gICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgcGF0aG5hbWUgICA6OiBBIHBhdGggdG8gdGhlIGZvbnQgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2VfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBmYWNlIHdpdGhpbiB0aGUgZm9udC4gIFRoZSBmaXJzdCAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICBmYWNlIGhhcyBpbmRleH4wLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYWZhY2UgICAgICA6OiBBIGhhbmRsZSB0byBhIG5ldyBmYWNlIG9iamVjdC4gIElmIGBmYWNlX2luZGV4JyBpcyAgICovDQorICAvKiAgICAgICAgICAgICAgICAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCBpdCBtdXN0IGJlIG5vbi1OVUxMLiAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgU2VlIEBGVF9PcGVuX0ZhY2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFVzZSBARlRfRG9uZV9GYWNlIHRvIGRlc3Ryb3kgdGhlIGNyZWF0ZWQgQEZUX0ZhY2Ugb2JqZWN0IChhbG9uZyAgICAqLw0KKyAgLyogICAgd2l0aCBpdHMgc2xvdCBhbmQgc2l6ZXMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQ0KKyAgRlRfTmV3X0ZhY2UoIEZUX0xpYnJhcnkgICBsaWJyYXJ5LA0KKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBmaWxlcGF0aG5hbWUsDQorICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgIGZhY2VfaW5kZXgsDQorICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgKmFmYWNlICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9OZXdfTWVtb3J5X0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGlzIGZ1bmN0aW9uIGNhbGxzIEBGVF9PcGVuX0ZhY2UgdG8gb3BlbiBhIGZvbnQgd2hpY2ggaGFzIGJlZW4gICAgKi8NCisgIC8qICAgIGxvYWRlZCBpbnRvIG1lbW9yeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGxpYnJhcnkgICAgOjogQSBoYW5kbGUgdG8gdGhlIGxpYnJhcnkgcmVzb3VyY2UuICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZpbGVfYmFzZSAgOjogQSBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZvbnQgZGF0YS4gICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmaWxlX3NpemUgIDo6IFRoZSBzaXplIG9mIHRoZSBtZW1vcnkgY2h1bmsgdXNlZCBieSB0aGUgZm9udCBkYXRhLiAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZV9pbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIGZhY2Ugd2l0aGluIHRoZSBmb250LiAgVGhlIGZpcnN0ICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgIGZhY2UgaGFzIGluZGV4fjAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBhZmFjZSAgICAgIDo6IEEgaGFuZGxlIHRvIGEgbmV3IGZhY2Ugb2JqZWN0LiAgSWYgYGZhY2VfaW5kZXgnIGlzICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8sIGl0IG11c3QgYmUgbm9uLU5VTEwuICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICBTZWUgQEZUX09wZW5fRmFjZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgWW91IG11c3Qgbm90IGRlYWxsb2NhdGUgdGhlIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBARlRfRG9uZV9GYWNlLiAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQ0KKyAgRlRfTmV3X01lbW9yeV9GYWNlKCBGVF9MaWJyYXJ5ICAgICAgbGlicmFyeSwNCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfQnl0ZSogIGZpbGVfYmFzZSwNCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgIGZpbGVfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgIGZhY2VfaW5kZXgsDQorICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgICphZmFjZSApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfT3Blbl9GYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQ3JlYXRlIGEgZmFjZSBvYmplY3QgZnJvbSBhIGdpdmVuIHJlc291cmNlIGRlc2NyaWJlZCBieSAgICAgICAgICAgICovDQorICAvKiAgICBARlRfT3Blbl9BcmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBsaWJyYXJ5ICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IHJlc291cmNlLiAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBhcmdzICAgICAgIDo6IEEgcG9pbnRlciB0byBhbiBgRlRfT3Blbl9BcmdzJyBzdHJ1Y3R1cmUgd2hpY2ggbXVzdCAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgYmUgZmlsbGVkIGJ5IHRoZSBjYWxsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgZmFjZSB3aXRoaW4gdGhlIGZvbnQuICBUaGUgZmlyc3QgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgZmFjZSBoYXMgaW5kZXh+MC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGFmYWNlICAgICAgOjogQSBoYW5kbGUgdG8gYSBuZXcgZmFjZSBvYmplY3QuICBJZiBgZmFjZV9pbmRleCcgaXMgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybywgaXQgbXVzdCBiZSBub24tTlVMTC4gICovDQorICAvKiAgICAgICAgICAgICAgICAgIFNlZSBub3RlIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBVbmxpa2UgRnJlZVR5cGUgMS54LCB0aGlzIGZ1bmN0aW9uIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhIGdseXBoICAgKi8NCisgIC8qICAgIHNsb3QgZm9yIHRoZSBmYWNlIG9iamVjdCB3aGljaCBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgdGhyb3VnaCAgICAqLw0KKyAgLyogICAgYGZhY2UtPmdseXBoJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX09wZW5fRmFjZSBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgdGhlIGZvbnQgICAgICAgICAqLw0KKyAgLyogICAgZm9ybWF0IG9mIGEgZ2l2ZW4gZm9udCByZXNvdXJjZSBpcyBzdXBwb3J0ZWQgYnkgRnJlZVR5cGUuICBJZiB0aGUgICovDQorICAvKiAgICBgZmFjZV9pbmRleCcgZmllbGQgaXMgbmVnYXRpdmUsIHRoZSBmdW5jdGlvbidzIHJldHVybiB2YWx1ZSBpc34wICAgKi8NCisgIC8qICAgIGlmIHRoZSBmb250IGZvcm1hdCBpcyByZWNvZ25pemVkLCBvciBub24temVybyBvdGhlcndpc2U7ICAgICAgICAgICAqLw0KKyAgLyogICAgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBtb3JlIG9yIGxlc3MgZW1wdHkgZmFjZSBoYW5kbGUgaW4gYCphZmFjZScgICovDQorICAvKiAgICAoaWYgYGFmYWNlJyBpc24ndCBOVUxMKS4gIFRoZSBvbmx5IHVzZWZ1bCBmaWVsZCBpbiB0aGlzIHNwZWNpYWwgICAgKi8NCisgIC8qICAgIGNhc2UgaXMgYGZhY2UtPm51bV9mYWNlcycgd2hpY2ggZ2l2ZXMgdGhlIG51bWJlciBvZiBmYWNlcyB3aXRoaW4gICAqLw0KKyAgLyogICAgdGhlIGZvbnQgZmlsZS4gIEFmdGVyIGV4YW1pbmF0aW9uLCB0aGUgcmV0dXJuZWQgQEZUX0ZhY2Ugc3RydWN0dXJlICovDQorICAvKiAgICBzaG91bGQgYmUgZGVhbGxvY2F0ZWQgd2l0aCBhIGNhbGwgdG8gQEZUX0RvbmVfRmFjZS4gICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRWFjaCBuZXcgZmFjZSBvYmplY3QgY3JlYXRlZCB3aXRoIHRoaXMgZnVuY3Rpb24gYWxzbyBvd25zIGEgICAgICAgICovDQorICAvKiAgICBkZWZhdWx0IEBGVF9TaXplIG9iamVjdCwgYWNjZXNzaWJsZSBhcyBgZmFjZS0+c2l6ZScuICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgT25lIEBGVF9MaWJyYXJ5IGluc3RhbmNlIGNhbiBoYXZlIG11bHRpcGxlIGZhY2Ugb2JqZWN0cywgdGhpcyBpcywgICovDQorICAvKiAgICBARlRfT3Blbl9GYWNlIGFuZCBpdHMgc2libGluZ3MgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB1c2luZyAgKi8NCisgIC8qICAgIHRoZSBzYW1lIGBsaWJyYXJ5JyBhcmd1bWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBTZWUgdGhlIGRpc2N1c3Npb24gb2YgcmVmZXJlbmNlIGNvdW50ZXJzIGluIHRoZSBkZXNjcmlwdGlvbiBvZiAgICAgKi8NCisgIC8qICAgIEBGVF9SZWZlcmVuY2VfRmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX0Vycm9yICkNCisgIEZUX09wZW5fRmFjZSggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwNCisgICAgICAgICAgICAgICAgY29uc3QgRlRfT3Blbl9BcmdzKiAgYXJncywNCisgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgICAgICAgZmFjZV9pbmRleCwNCisgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgICAgICAqYWZhY2UgKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0F0dGFjaF9GaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gY2FsbHMgQEZUX0F0dGFjaF9TdHJlYW0gdG8gYXR0YWNoIGEgZmlsZS4gICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgICAgICAgICA6OiBUaGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZpbGVwYXRobmFtZSA6OiBUaGUgcGF0aG5hbWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX0Vycm9yICkNCisgIEZUX0F0dGFjaF9GaWxlKCBGVF9GYWNlICAgICAgZmFjZSwNCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgZmlsZXBhdGhuYW1lICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9BdHRhY2hfU3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBgQXR0YWNoJyBkYXRhIHRvIGEgZmFjZSBvYmplY3QuICBOb3JtYWxseSwgdGhpcyBpcyB1c2VkIHRvIHJlYWQgICAgKi8NCisgIC8qICAgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIHRoZSBmYWNlIG9iamVjdC4gIEZvciBleGFtcGxlLCB5b3UgY2FuICAqLw0KKyAgLyogICAgYXR0YWNoIGFuIEFGTSBmaWxlIHRoYXQgY29tZXMgd2l0aCBhIFR5cGV+MSBmb250IHRvIGdldCB0aGUgICAgICAgICovDQorICAvKiAgICBrZXJuaW5nIHZhbHVlcyBhbmQgb3RoZXIgbWV0cmljcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlICAgICAgIDo6IFRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBwYXJhbWV0ZXJzIDo6IEEgcG9pbnRlciB0byBARlRfT3Blbl9BcmdzIHdoaWNoIG11c3QgYmUgZmlsbGVkIGJ5ICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgdGhlIGNhbGxlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBtZWFuaW5nIG9mIHRoZSBgYXR0YWNoJyAoaS5lLiwgd2hhdCByZWFsbHkgaGFwcGVucyB3aGVuIHRoZSAgICAqLw0KKyAgLyogICAgbmV3IGZpbGUgaXMgcmVhZCkgaXMgbm90IGZpeGVkIGJ5IEZyZWVUeXBlIGl0c2VsZi4gIEl0IHJlYWxseSAgICAgICovDQorICAvKiAgICBkZXBlbmRzIG9uIHRoZSBmb250IGZvcm1hdCAoYW5kIHRodXMgdGhlIGZvbnQgZHJpdmVyKS4gICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQ2xpZW50IGFwcGxpY2F0aW9ucyBhcmUgZXhwZWN0ZWQgdG8ga25vdyB3aGF0IHRoZXkgYXJlIGRvaW5nICAgICAgICovDQorICAvKiAgICB3aGVuIGludm9raW5nIHRoaXMgZnVuY3Rpb24uICBNb3N0IGRyaXZlcnMgc2ltcGx5IGRvIG5vdCBpbXBsZW1lbnQgKi8NCisgIC8qICAgIGZpbGUgYXR0YWNobWVudHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX0Vycm9yICkNCisgIEZUX0F0dGFjaF9TdHJlYW0oIEZUX0ZhY2UgICAgICAgIGZhY2UsDQorICAgICAgICAgICAgICAgICAgICBGVF9PcGVuX0FyZ3MqICBwYXJhbWV0ZXJzICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9SZWZlcmVuY2VfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBBIGNvdW50ZXIgZ2V0cyBpbml0aWFsaXplZCB0b34xIGF0IHRoZSB0aW1lIGFuIEBGVF9GYWNlIHN0cnVjdHVyZSAgKi8NCisgIC8qICAgIGlzIGNyZWF0ZWQuICBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIGNvdW50ZXIuICBARlRfRG9uZV9GYWNlICAqLw0KKyAgLyogICAgdGhlbiBvbmx5IGRlc3Ryb3lzIGEgZmFjZSBpZiB0aGUgY291bnRlciBpc34xLCBvdGhlcndpc2UgaXQgc2ltcGx5ICovDQorICAvKiAgICBkZWNyZW1lbnRzIHRoZSBjb3VudGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBoZWxwcyBpbiBtYW5hZ2luZyBsaWZlLWN5Y2xlcyBvZiBzdHJ1Y3R1cmVzIHdoaWNoICAgICovDQorICAvKiAgICByZWZlcmVuY2UgQEZUX0ZhY2Ugb2JqZWN0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlIDo6IEEgaGFuZGxlIHRvIGEgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFNpbmNlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAyLjQuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApDQorICBGVF9SZWZlcmVuY2VfRmFjZSggRlRfRmFjZSAgZmFjZSApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRG9uZV9GYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRGlzY2FyZCBhIGdpdmVuIGZhY2Ugb2JqZWN0LCBhcyB3ZWxsIGFzIGFsbCBvZiBpdHMgY2hpbGQgc2xvdHMgYW5kICovDQorICAvKiAgICBzaXplcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlIDo6IEEgaGFuZGxlIHRvIGEgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBTZWUgdGhlIGRpc2N1c3Npb24gb2YgcmVmZXJlbmNlIGNvdW50ZXJzIGluIHRoZSBkZXNjcmlwdGlvbiBvZiAgICAgKi8NCisgIC8qICAgIEBGVF9SZWZlcmVuY2VfRmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX0Vycm9yICkNCisgIEZUX0RvbmVfRmFjZSggRlRfRmFjZSAgZmFjZSApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2VsZWN0X1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgU2VsZWN0IGEgYml0bWFwIHN0cmlrZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSAgICAgICAgIDo6IEEgaGFuZGxlIHRvIGEgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgc3RyaWtlX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgYml0bWFwIHN0cmlrZSBpbiB0aGUgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgYGF2YWlsYWJsZV9zaXplcycgZmllbGQgb2YgQEZUX0ZhY2VSZWMgc3RydWN0dXJlLiAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApDQorICBGVF9TZWxlY3RfU2l6ZSggRlRfRmFjZSAgZmFjZSwNCisgICAgICAgICAgICAgICAgICBGVF9JbnQgICBzdHJpa2VfaW5kZXggKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1NpemVfUmVxdWVzdF9UeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIHR5cGUgdGhhdCBsaXN0cyB0aGUgc3VwcG9ydGVkIHNpemUgcmVxdWVzdCB0eXBlcy4gICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1NJWkVfUkVRVUVTVF9UWVBFX05PTUlOQUwgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBUaGUgbm9taW5hbCBzaXplLiAgVGhlIGB1bml0c19wZXJfRU0nIGZpZWxkIG9mIEBGVF9GYWNlUmVjIGlzICAgICovDQorICAvKiAgICAgIHVzZWQgdG8gZGV0ZXJtaW5lIGJvdGggc2NhbGluZyB2YWx1ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU0laRV9SRVFVRVNUX1RZUEVfUkVBTF9ESU0gOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRoZSByZWFsIGRpbWVuc2lvbi4gIFRoZSBzdW0gb2YgdGhlIHRoZSBgYXNjZW5kZXInIGFuZCAobWludXMgICAgKi8NCisgIC8qICAgICAgb2YpIHRoZSBgZGVzY2VuZGVyJyBmaWVsZHMgb2YgQEZUX0ZhY2VSZWMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lICAqLw0KKyAgLyogICAgICBib3RoIHNjYWxpbmcgdmFsdWVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1NJWkVfUkVRVUVTVF9UWVBFX0JCT1ggOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBUaGUgZm9udCBib3VuZGluZyBib3guICBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgYGJib3gnIGZpZWxkICovDQorICAvKiAgICAgIG9mIEBGVF9GYWNlUmVjIGFyZSB1c2VkIHRvIGRldGVybWluZSB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgKi8NCisgIC8qICAgICAgc2NhbGluZyB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TSVpFX1JFUVVFU1RfVFlQRV9DRUxMIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgVGhlIGBtYXhfYWR2YW5jZV93aWR0aCcgZmllbGQgb2YgQEZUX0ZhY2VSZWMgaXMgdXNlZCB0byAgICAgICAgICAqLw0KKyAgLyogICAgICBkZXRlcm1pbmUgdGhlIGhvcml6b250YWwgc2NhbGluZyB2YWx1ZTsgdGhlIHZlcnRpY2FsIHNjYWxpbmcgICAgICovDQorICAvKiAgICAgIHZhbHVlIGlzIGRldGVybWluZWQgdGhlIHNhbWUgd2F5IGFzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgQEZUX1NJWkVfUkVRVUVTVF9UWVBFX1JFQUxfRElNIGRvZXMuICBGaW5hbGx5LCBib3RoIHNjYWxpbmcgICAgICAqLw0KKyAgLyogICAgICB2YWx1ZXMgYXJlIHNldCB0byB0aGUgc21hbGxlciBvbmUuICBUaGlzIHR5cGUgaXMgdXNlZnVsIGlmIHlvdSAgICovDQorICAvKiAgICAgIHdhbnQgdG8gc3BlY2lmeSB0aGUgZm9udCBzaXplIGZvciwgc2F5LCBhIHdpbmRvdyBvZiBhIGdpdmVuICAgICAgKi8NCisgIC8qICAgICAgZGltZW5zaW9uIGFuZCA4MHgyNCBjZWxscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TSVpFX1JFUVVFU1RfVFlQRV9TQ0FMRVMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgU3BlY2lmeSB0aGUgc2NhbGluZyB2YWx1ZXMgZGlyZWN0bHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBhYm92ZSBkZXNjcmlwdGlvbnMgb25seSBhcHBseSB0byBzY2FsYWJsZSBmb3JtYXRzLiAgRm9yIGJpdG1hcCAqLw0KKyAgLyogICAgZm9ybWF0cywgdGhlIGJlaGF2aW91ciBpcyB1cCB0byB0aGUgZHJpdmVyLiAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFNlZSB0aGUgbm90ZSBzZWN0aW9uIG9mIEBGVF9TaXplX01ldHJpY3MgaWYgeW91IHdvbmRlciBob3cgc2l6ZSAgICAqLw0KKyAgLyogICAgcmVxdWVzdGluZyByZWxhdGVzIHRvIHNjYWxpbmcgdmFsdWVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIHR5cGVkZWYgZW51bSAgRlRfU2l6ZV9SZXF1ZXN0X1R5cGVfDQorICB7DQorICAgIEZUX1NJWkVfUkVRVUVTVF9UWVBFX05PTUlOQUwsDQorICAgIEZUX1NJWkVfUkVRVUVTVF9UWVBFX1JFQUxfRElNLA0KKyAgICBGVF9TSVpFX1JFUVVFU1RfVFlQRV9CQk9YLA0KKyAgICBGVF9TSVpFX1JFUVVFU1RfVFlQRV9DRUxMLA0KKyAgICBGVF9TSVpFX1JFUVVFU1RfVFlQRV9TQ0FMRVMsDQorDQorICAgIEZUX1NJWkVfUkVRVUVTVF9UWVBFX01BWA0KKw0KKyAgfSBGVF9TaXplX1JlcXVlc3RfVHlwZTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1NpemVfUmVxdWVzdFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYSBzaXplIHJlcXVlc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHR5cGUgICAgICAgICAgIDo6IFNlZSBARlRfU2l6ZV9SZXF1ZXN0X1R5cGUuICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB3aWR0aCAgICAgICAgICA6OiBUaGUgZGVzaXJlZCB3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgaGVpZ2h0ICAgICAgICAgOjogVGhlIGRlc2lyZWQgaGVpZ2h0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGhvcmlSZXNvbHV0aW9uIDo6IFRoZSBob3Jpem9udGFsIHJlc29sdXRpb24uICBJZiBzZXQgdG8gemVybywgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgYHdpZHRoJyBpcyB0cmVhdGVkIGFzIGEgMjYuNiBmcmFjdGlvbmFsIHBpeGVsICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgdmVydFJlc29sdXRpb24gOjogVGhlIHZlcnRpY2FsIHJlc29sdXRpb24uICBJZiBzZXQgdG8gemVybywgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICBgaGVpZ2h0JyBpcyB0cmVhdGVkIGFzIGEgMjYuNiBmcmFjdGlvbmFsIHBpeGVsICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIElmIGB3aWR0aCcgaXMgemVybywgdGhlbiB0aGUgaG9yaXpvbnRhbCBzY2FsaW5nIHZhbHVlIGlzIHNldCBlcXVhbCAqLw0KKyAgLyogICAgdG8gdGhlIHZlcnRpY2FsIHNjYWxpbmcgdmFsdWUsIGFuZCB2aWNlIHZlcnNhLiAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TaXplX1JlcXVlc3RSZWNfDQorICB7DQorICAgIEZUX1NpemVfUmVxdWVzdF9UeXBlICB0eXBlOw0KKyAgICBGVF9Mb25nICAgICAgICAgICAgICAgd2lkdGg7DQorICAgIEZUX0xvbmcgICAgICAgICAgICAgICBoZWlnaHQ7DQorICAgIEZUX1VJbnQgICAgICAgICAgICAgICBob3JpUmVzb2x1dGlvbjsNCisgICAgRlRfVUludCAgICAgICAgICAgICAgIHZlcnRSZXNvbHV0aW9uOw0KKw0KKyAgfSBGVF9TaXplX1JlcXVlc3RSZWM7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TaXplX1JlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBBIGhhbmRsZSB0byBhIHNpemUgcmVxdWVzdCBzdHJ1Y3R1cmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU2l6ZV9SZXF1ZXN0UmVjXyAgKkZUX1NpemVfUmVxdWVzdDsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1JlcXVlc3RfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFJlc2l6ZSB0aGUgc2NhbGUgb2YgdGhlIGFjdGl2ZSBARlRfU2l6ZSBvYmplY3QgaW4gYSBmYWNlLiAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gYSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHJlcSAgOjogQSBwb2ludGVyIHRvIGEgQEZUX1NpemVfUmVxdWVzdFJlYy4gICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEFsdGhvdWdoIGRyaXZlcnMgbWF5IHNlbGVjdCB0aGUgYml0bWFwIHN0cmlrZSBtYXRjaGluZyB0aGUgICAgICAgICAqLw0KKyAgLyogICAgcmVxdWVzdCwgeW91IHNob3VsZCBub3QgcmVseSBvbiB0aGlzIGlmIHlvdSBpbnRlbmQgdG8gc2VsZWN0IGEgICAgICovDQorICAvKiAgICBwYXJ0aWN1bGFyIGJpdG1hcCBzdHJpa2UuICBVc2UgQEZUX1NlbGVjdF9TaXplIGluc3RlYWQgaW4gdGhhdCAgICAgKi8NCisgIC8qICAgIGNhc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgcmVsYXRpb24gYmV0d2VlbiB0aGUgcmVxdWVzdGVkIHNpemUgYW5kIHRoZSByZXN1bHRpbmcgZ2x5cGggICAgKi8NCisgIC8qICAgIHNpemUgaXMgZGVwZW5kZW50IGVudGlyZWx5IG9uIGhvdyB0aGUgc2l6ZSBpcyBkZWZpbmVkIGluIHRoZSAgICAgICAqLw0KKyAgLyogICAgc291cmNlIGZhY2UuICBUaGUgZm9udCBkZXNpZ25lciBjaG9vc2VzIHRoZSBmaW5hbCBzaXplIG9mIGVhY2ggICAgICovDQorICAvKiAgICBnbHlwaCByZWxhdGl2ZSB0byB0aGlzIHNpemUuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0byAgICAgICAgKi8NCisgIC8qICAgIGBodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy9mcmVldHlwZTIvZG9jcy9nbHlwaHMvZ2x5cGhzLTIuaHRtbCcgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX0Vycm9yICkNCisgIEZUX1JlcXVlc3RfU2l6ZSggRlRfRmFjZSAgICAgICAgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICBGVF9TaXplX1JlcXVlc3QgIHJlcSApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2V0X0NoYXJfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBjYWxscyBARlRfUmVxdWVzdF9TaXplIHRvIHJlcXVlc3QgdGhlIG5vbWluYWwgc2l6ZSAgICovDQorICAvKiAgICAoaW4gcG9pbnRzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlICAgICAgICAgICAgOjogQSBoYW5kbGUgdG8gYSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBjaGFyX3dpZHRoICAgICAgOjogVGhlIG5vbWluYWwgd2lkdGgsIGluIDI2LjYgZnJhY3Rpb25hbCBwb2ludHMuICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgY2hhcl9oZWlnaHQgICAgIDo6IFRoZSBub21pbmFsIGhlaWdodCwgaW4gMjYuNiBmcmFjdGlvbmFsIHBvaW50cy4gICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGhvcnpfcmVzb2x1dGlvbiA6OiBUaGUgaG9yaXpvbnRhbCByZXNvbHV0aW9uIGluIGRwaS4gICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB2ZXJ0X3Jlc29sdXRpb24gOjogVGhlIHZlcnRpY2FsIHJlc29sdXRpb24gaW4gZHBpLiAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBJZiBlaXRoZXIgdGhlIGNoYXJhY3RlciB3aWR0aCBvciBoZWlnaHQgaXMgemVybywgaXQgaXMgc2V0IGVxdWFsICAgKi8NCisgIC8qICAgIHRvIHRoZSBvdGhlciB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBJZiBlaXRoZXIgdGhlIGhvcml6b250YWwgb3IgdmVydGljYWwgcmVzb2x1dGlvbiBpcyB6ZXJvLCBpdCBpcyBzZXQgKi8NCisgIC8qICAgIGVxdWFsIHRvIHRoZSBvdGhlciB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBBIGNoYXJhY3RlciB3aWR0aCBvciBoZWlnaHQgc21hbGxlciB0aGFuIDFwdCBpcyBzZXQgdG8gMXB0OyBpZiAgICAgKi8NCisgIC8qICAgIGJvdGggcmVzb2x1dGlvbiB2YWx1ZXMgYXJlIHplcm8sIHRoZXkgYXJlIHNldCB0byA3MmRwaS4gICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBEb24ndCB1c2UgdGhpcyBmdW5jdGlvbiBpZiB5b3UgYXJlIHVzaW5nIHRoZSBGcmVlVHlwZSBjYWNoZSBBUEkuICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApDQorICBGVF9TZXRfQ2hhcl9TaXplKCBGVF9GYWNlICAgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgY2hhcl93aWR0aCwNCisgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIGNoYXJfaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgaG9yel9yZXNvbHV0aW9uLA0KKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgdmVydF9yZXNvbHV0aW9uICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TZXRfUGl4ZWxfU2l6ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGlzIGZ1bmN0aW9uIGNhbGxzIEBGVF9SZXF1ZXN0X1NpemUgdG8gcmVxdWVzdCB0aGUgbm9taW5hbCBzaXplICAgKi8NCisgIC8qICAgIChpbiBwaXhlbHMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgICAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHBpeGVsX3dpZHRoICA6OiBUaGUgbm9taW5hbCB3aWR0aCwgaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBwaXhlbF9oZWlnaHQgOjogVGhlIG5vbWluYWwgaGVpZ2h0LCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBZb3Ugc2hvdWxkIG5vdCByZWx5IG9uIHRoZSByZXN1bHRpbmcgZ2x5cGhzIG1hdGNoaW5nLCBvciBiZWluZyAgICAgKi8NCisgIC8qICAgIGNvbnN0cmFpbmVkLCB0byB0aGlzIHBpeGVsIHNpemUuICBSZWZlciB0byBARlRfUmVxdWVzdF9TaXplIHRvICAgICAqLw0KKyAgLyogICAgdW5kZXJzdGFuZCBob3cgcmVxdWVzdGVkIHNpemVzIHJlbGF0ZSB0byBhY3R1YWwgc2l6ZXMuICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQ0KKyAgRlRfU2V0X1BpeGVsX1NpemVzKCBGVF9GYWNlICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBwaXhlbF93aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgcGl4ZWxfaGVpZ2h0ICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9Mb2FkX0dseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBBIGZ1bmN0aW9uIHVzZWQgdG8gbG9hZCBhIHNpbmdsZSBnbHlwaCBpbnRvIHRoZSBnbHlwaCBzbG90IG9mIGEgICAgKi8NCisgIC8qICAgIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3Qgd2hlcmUgdGhlIGdseXBoICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgaXMgbG9hZGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZ2x5cGhfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBnbHlwaCBpbiB0aGUgZm9udCBmaWxlLiAgRm9yICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBDSUQta2V5ZWQgZm9udHMgKGVpdGhlciBpbiBQUyBvciBpbiBDRkYgZm9ybWF0KSAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIHRoaXMgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBDSUQgdmFsdWUuICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBsb2FkX2ZsYWdzICA6OiBBIGZsYWcgaW5kaWNhdGluZyB3aGF0IHRvIGxvYWQgZm9yIHRoaXMgZ2x5cGguICBUaGUgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIEBGVF9MT0FEX1hYWCBjb25zdGFudHMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgZ2x5cGggbG9hZGluZyBwcm9jZXNzIChlLmcuLCB3aGV0aGVyIHRoZSBvdXRsaW5lICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgc2NhbGVkLCB3aGV0aGVyIHRvIGxvYWQgYml0bWFwcyBvciBub3QsICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIHdoZXRoZXIgdG8gaGludCB0aGUgb3V0bGluZSwgZXRjKS4gICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBsb2FkZWQgZ2x5cGggbWF5IGJlIHRyYW5zZm9ybWVkLiAgU2VlIEBGVF9TZXRfVHJhbnNmb3JtIGZvciAgICAqLw0KKyAgLyogICAgdGhlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZvciBzdWJzZXR0ZWQgQ0lELWtleWVkIGZvbnRzLCBgRlRfRXJyX0ludmFsaWRfQXJndW1lbnQnIGlzICAgICAgICAqLw0KKyAgLyogICAgcmV0dXJuZWQgZm9yIGludmFsaWQgQ0lEIHZhbHVlcyAodGhpcyBpcywgZm9yIENJRCB2YWx1ZXMgd2hpY2ggICAgICovDQorICAvKiAgICBkb24ndCBoYXZlIGEgY29ycmVzcG9uZGluZyBnbHlwaCBpbiB0aGUgZm9udCkuICBTZWUgdGhlIGRpc2N1c3Npb24gKi8NCisgIC8qICAgIG9mIHRoZSBARlRfRkFDRV9GTEFHX0NJRF9LRVlFRCBmbGFnIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX0Vycm9yICkNCisgIEZUX0xvYWRfR2x5cGgoIEZUX0ZhY2UgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdseXBoX2luZGV4LA0KKyAgICAgICAgICAgICAgICAgRlRfSW50MzIgIGxvYWRfZmxhZ3MgKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0xvYWRfQ2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCB0byBsb2FkIGEgc2luZ2xlIGdseXBoIGludG8gdGhlIGdseXBoIHNsb3Qgb2YgYSAgICAqLw0KKyAgLyogICAgZmFjZSBvYmplY3QsIGFjY29yZGluZyB0byBpdHMgY2hhcmFjdGVyIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSAgICAgICAgOjogQSBoYW5kbGUgdG8gYSB0YXJnZXQgZmFjZSBvYmplY3Qgd2hlcmUgdGhlIGdseXBoICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBpcyBsb2FkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBjaGFyX2NvZGUgICA6OiBUaGUgZ2x5cGgncyBjaGFyYWN0ZXIgY29kZSwgYWNjb3JkaW5nIHRvIHRoZSAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgY2hhcm1hcCB1c2VkIGluIHRoZSBmYWNlLiAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBsb2FkX2ZsYWdzICA6OiBBIGZsYWcgaW5kaWNhdGluZyB3aGF0IHRvIGxvYWQgZm9yIHRoaXMgZ2x5cGguICBUaGUgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIEBGVF9MT0FEX1hYWCBjb25zdGFudHMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgZ2x5cGggbG9hZGluZyBwcm9jZXNzIChlLmcuLCB3aGV0aGVyIHRoZSBvdXRsaW5lICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgc2NhbGVkLCB3aGV0aGVyIHRvIGxvYWQgYml0bWFwcyBvciBub3QsICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIHdoZXRoZXIgdG8gaGludCB0aGUgb3V0bGluZSwgZXRjKS4gICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gc2ltcGx5IGNhbGxzIEBGVF9HZXRfQ2hhcl9JbmRleCBhbmQgQEZUX0xvYWRfR2x5cGguICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX0Vycm9yICkNCisgIEZUX0xvYWRfQ2hhciggRlRfRmFjZSAgIGZhY2UsDQorICAgICAgICAgICAgICAgIEZUX1VMb25nICBjaGFyX2NvZGUsDQorICAgICAgICAgICAgICAgIEZUX0ludDMyICBsb2FkX2ZsYWdzICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICoNCisgICAqIEBlbnVtOg0KKyAgICogICBGVF9MT0FEX1hYWA0KKyAgICoNCisgICAqIEBkZXNjcmlwdGlvbjoNCisgICAqICAgQSBsaXN0IG9mIGJpdC1maWVsZCBjb25zdGFudHMgdXNlZCB3aXRoIEBGVF9Mb2FkX0dseXBoIHRvIGluZGljYXRlDQorICAgKiAgIHdoYXQga2luZCBvZiBvcGVyYXRpb25zIHRvIHBlcmZvcm0gZHVyaW5nIGdseXBoIGxvYWRpbmcuDQorICAgKg0KKyAgICogQHZhbHVlczoNCisgICAqICAgRlRfTE9BRF9ERUZBVUxUIDo6DQorICAgKiAgICAgQ29ycmVzcG9uZGluZyB0b34wLCB0aGlzIHZhbHVlIGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgZ2x5cGggbG9hZA0KKyAgICogICAgIG9wZXJhdGlvbi4gIEluIHRoaXMgY2FzZSwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOg0KKyAgICoNCisgICAqICAgICAxLiBGcmVlVHlwZSBsb29rcyBmb3IgYSBiaXRtYXAgZm9yIHRoZSBnbHlwaCBjb3JyZXNwb25kaW5nIHRvIHRoZQ0KKyAgICogICAgICAgIGZhY2UncyBjdXJyZW50IHNpemUuICBJZiBvbmUgaXMgZm91bmQsIHRoZSBmdW5jdGlvbiByZXR1cm5zLg0KKyAgICogICAgICAgIFRoZSBiaXRtYXAgZGF0YSBjYW4gYmUgYWNjZXNzZWQgZnJvbSB0aGUgZ2x5cGggc2xvdCAoc2VlIG5vdGUNCisgICAqICAgICAgICBiZWxvdykuDQorICAgKg0KKyAgICogICAgIDIuIElmIG5vIGVtYmVkZGVkIGJpdG1hcCBpcyBzZWFyY2hlZCBvciBmb3VuZCwgRnJlZVR5cGUgbG9va3MgZm9yIGENCisgICAqICAgICAgICBzY2FsYWJsZSBvdXRsaW5lLiAgSWYgb25lIGlzIGZvdW5kLCBpdCBpcyBsb2FkZWQgZnJvbSB0aGUgZm9udA0KKyAgICogICAgICAgIGZpbGUsIHNjYWxlZCB0byBkZXZpY2UgcGl4ZWxzLCB0aGVuIGBoaW50ZWQnIHRvIHRoZSBwaXhlbCBncmlkDQorICAgKiAgICAgICAgaW4gb3JkZXIgdG8gb3B0aW1pemUgaXQuICBUaGUgb3V0bGluZSBkYXRhIGNhbiBiZSBhY2Nlc3NlZCBmcm9tDQorICAgKiAgICAgICAgdGhlIGdseXBoIHNsb3QgKHNlZSBub3RlIGJlbG93KS4NCisgICAqDQorICAgKiAgICAgTm90ZSB0aGF0IGJ5IGRlZmF1bHQsIHRoZSBnbHlwaCBsb2FkZXIgZG9lc24ndCByZW5kZXIgb3V0bGluZXMgaW50bw0KKyAgICogICAgIGJpdG1hcHMuICBUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSB1c2VkIHRvIG1vZGlmeSB0aGlzIGRlZmF1bHQNCisgICAqICAgICBiZWhhdmlvdXIgdG8gbW9yZSBzcGVjaWZpYyBhbmQgdXNlZnVsIGNhc2VzLg0KKyAgICoNCisgICAqICAgRlRfTE9BRF9OT19TQ0FMRSA6Og0KKyAgICogICAgIERvbid0IHNjYWxlIHRoZSBsb2FkZWQgb3V0bGluZSBnbHlwaCBidXQga2VlcCBpdCBpbiBmb250IHVuaXRzLg0KKyAgICoNCisgICAqICAgICBUaGlzIGZsYWcgaW1wbGllcyBARlRfTE9BRF9OT19ISU5USU5HIGFuZCBARlRfTE9BRF9OT19CSVRNQVAsIGFuZA0KKyAgICogICAgIHVuc2V0cyBARlRfTE9BRF9SRU5ERVIuDQorICAgKg0KKyAgICogICAgIElmIHRoZSBmb250IGlzIGB0cmlja3knIChzZWUgQEZUX0ZBQ0VfRkxBR19UUklDS1kgZm9yIG1vcmUpLCB1c2luZw0KKyAgICogICAgIEZUX0xPQURfTk9fU0NBTEUgdXN1YWxseSB5aWVsZHMgbWVhbmluZ2xlc3Mgb3V0bGluZXMgYmVjYXVzZSB0aGUNCisgICAqICAgICBzdWJnbHlwaHMgbXVzdCBiZSBzY2FsZWQgYW5kIHBvc2l0aW9uZWQgd2l0aCBoaW50aW5nIGluc3RydWN0aW9ucy4NCisgICAqICAgICBUaGlzIGNhbiBiZSBzb2x2ZWQgYnkgbG9hZGluZyB0aGUgZm9udCB3aXRob3V0IEZUX0xPQURfTk9fU0NBTEUgYW5kDQorICAgKiAgICAgc2V0dGluZyB0aGUgY2hhcmFjdGVyIHNpemUgdG8gYGZvbnQtPnVuaXRzX3Blcl9FTScuDQorICAgKg0KKyAgICogICBGVF9MT0FEX05PX0hJTlRJTkcgOjoNCisgICAqICAgICBEaXNhYmxlIGhpbnRpbmcuICBUaGlzIGdlbmVyYWxseSBnZW5lcmF0ZXMgYGJsdXJyaWVyJyBiaXRtYXAgZ2x5cGhzDQorICAgKiAgICAgd2hlbiB0aGUgZ2x5cGggYXJlIHJlbmRlcmVkIGluIGFueSBvZiB0aGUgYW50aS1hbGlhc2VkIG1vZGVzLiAgU2VlDQorICAgKiAgICAgYWxzbyB0aGUgbm90ZSBiZWxvdy4NCisgICAqDQorICAgKiAgICAgVGhpcyBmbGFnIGlzIGltcGxpZWQgYnkgQEZUX0xPQURfTk9fU0NBTEUuDQorICAgKg0KKyAgICogICBGVF9MT0FEX1JFTkRFUiA6Og0KKyAgICogICAgIENhbGwgQEZUX1JlbmRlcl9HbHlwaCBhZnRlciB0aGUgZ2x5cGggaXMgbG9hZGVkLiAgQnkgZGVmYXVsdCwgdGhlDQorICAgKiAgICAgZ2x5cGggaXMgcmVuZGVyZWQgaW4gQEZUX1JFTkRFUl9NT0RFX05PUk1BTCBtb2RlLiAgVGhpcyBjYW4gYmUNCisgICAqICAgICBvdmVycmlkZGVuIGJ5IEBGVF9MT0FEX1RBUkdFVF9YWFggb3IgQEZUX0xPQURfTU9OT0NIUk9NRS4NCisgICAqDQorICAgKiAgICAgVGhpcyBmbGFnIGlzIHVuc2V0IGJ5IEBGVF9MT0FEX05PX1NDQUxFLg0KKyAgICoNCisgICAqICAgRlRfTE9BRF9OT19CSVRNQVAgOjoNCisgICAqICAgICBJZ25vcmUgYml0bWFwIHN0cmlrZXMgd2hlbiBsb2FkaW5nLiAgQml0bWFwLW9ubHkgZm9udHMgaWdub3JlIHRoaXMNCisgICAqICAgICBmbGFnLg0KKyAgICoNCisgICAqICAgICBARlRfTE9BRF9OT19TQ0FMRSBhbHdheXMgc2V0cyB0aGlzIGZsYWcuDQorICAgKg0KKyAgICogICBGVF9MT0FEX1ZFUlRJQ0FMX0xBWU9VVCA6Og0KKyAgICogICAgIExvYWQgdGhlIGdseXBoIGZvciB2ZXJ0aWNhbCB0ZXh0IGxheW91dC4gIEluIHBhcnRpY3VsYXIsIHRoZQ0KKyAgICogICAgIGBhZHZhbmNlJyB2YWx1ZSBpbiB0aGUgQEZUX0dseXBoU2xvdFJlYyBzdHJ1Y3R1cmUgaXMgc2V0IHRvIHRoZQ0KKyAgICogICAgIGB2ZXJ0QWR2YW5jZScgdmFsdWUgb2YgdGhlIGBtZXRyaWNzJyBmaWVsZC4NCisgICAqDQorICAgKiAgICAgSW4gY2FzZSBARlRfSEFTX1ZFUlRJQ0FMIGRvZXNuJ3QgcmV0dXJuIHRydWUsIHlvdSBzaG91bGRuJ3QgdXNlDQorICAgKiAgICAgdGhpcyBmbGFnIGN1cnJlbnRseS4gIFJlYXNvbiBpcyB0aGF0IGluIHRoaXMgY2FzZSB2ZXJ0aWNhbCBtZXRyaWNzDQorICAgKiAgICAgZ2V0IHN5bnRoZXNpemVkLCBhbmQgdGhvc2UgdmFsdWVzIGFyZSBub3QgYWx3YXlzIGNvbnNpc3RlbnQgYWNyb3NzDQorICAgKiAgICAgdmFyaW91cyBmb250IGZvcm1hdHMuDQorICAgKg0KKyAgICogICBGVF9MT0FEX0ZPUkNFX0FVVE9ISU5UIDo6DQorICAgKiAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGF1dG8taGludGVyIGlzIHByZWZlcnJlZCBvdmVyIHRoZSBmb250J3MgbmF0aXZlDQorICAgKiAgICAgaGludGVyLiAgU2VlIGFsc28gdGhlIG5vdGUgYmVsb3cuDQorICAgKg0KKyAgICogICBGVF9MT0FEX0NST1BfQklUTUFQIDo6DQorICAgKiAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGZvbnQgZHJpdmVyIHNob3VsZCBjcm9wIHRoZSBsb2FkZWQgYml0bWFwIGdseXBoDQorICAgKiAgICAgKGkuZS4sIHJlbW92ZSBhbGwgc3BhY2UgYXJvdW5kIGl0cyBibGFjayBiaXRzKS4gIE5vdCBhbGwgZHJpdmVycw0KKyAgICogICAgIGltcGxlbWVudCB0aGlzLg0KKyAgICoNCisgICAqICAgRlRfTE9BRF9QRURBTlRJQyA6Og0KKyAgICogICAgIEluZGljYXRlcyB0aGF0IHRoZSBmb250IGRyaXZlciBzaG91bGQgcGVyZm9ybSBwZWRhbnRpYyB2ZXJpZmljYXRpb25zDQorICAgKiAgICAgZHVyaW5nIGdseXBoIGxvYWRpbmcuICBUaGlzIGlzIG1vc3RseSB1c2VkIHRvIGRldGVjdCBicm9rZW4gZ2x5cGhzDQorICAgKiAgICAgaW4gZm9udHMuICBCeSBkZWZhdWx0LCBGcmVlVHlwZSB0cmllcyB0byBoYW5kbGUgYnJva2VuIGZvbnRzIGFsc28uDQorICAgKg0KKyAgICogICAgIEluIHBhcnRpY3VsYXIsIGVycm9ycyBmcm9tIHRoZSBUcnVlVHlwZSBieXRlY29kZSBlbmdpbmUgYXJlIG5vdA0KKyAgICogICAgIHBhc3NlZCB0byB0aGUgYXBwbGljYXRpb24gaWYgdGhpcyBmbGFnIGlzIG5vdCBzZXQ7IHRoaXMgbWlnaHQNCisgICAqICAgICByZXN1bHQgaW4gcGFydGlhbGx5IGhpbnRlZCBvciBkaXN0b3J0ZWQgZ2x5cGhzIGluIGNhc2UgYSBnbHlwaCdzDQorICAgKiAgICAgYnl0ZWNvZGUgaXMgYnVnZ3kuDQorICAgKg0KKyAgICogICBGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCA6Og0KKyAgICogICAgIElnbm9yZWQuICBEZXByZWNhdGVkLg0KKyAgICoNCisgICAqICAgRlRfTE9BRF9OT19SRUNVUlNFIDo6DQorICAgKiAgICAgVGhpcyBmbGFnIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LiAgSXQgbWVyZWx5IGluZGljYXRlcyB0aGF0IHRoZQ0KKyAgICogICAgIGZvbnQgZHJpdmVyIHNob3VsZCBub3QgbG9hZCBjb21wb3NpdGUgZ2x5cGhzIHJlY3Vyc2l2ZWx5LiAgSW5zdGVhZCwNCisgICAqICAgICBpdCBzaG91bGQgc2V0IHRoZSBgbnVtX3N1YmdseXBoJyBhbmQgYHN1YmdseXBocycgdmFsdWVzIG9mIHRoZQ0KKyAgICogICAgIGdseXBoIHNsb3QgYWNjb3JkaW5nbHksIGFuZCBzZXQgYGdseXBoLT5mb3JtYXQnIHRvDQorICAgKiAgICAgQEZUX0dMWVBIX0ZPUk1BVF9DT01QT1NJVEUuDQorICAgKg0KKyAgICogICAgIFRoZSBkZXNjcmlwdGlvbiBvZiBzdWItZ2x5cGhzIGlzIG5vdCBhdmFpbGFibGUgdG8gY2xpZW50DQorICAgKiAgICAgYXBwbGljYXRpb25zIGZvciBub3cuDQorICAgKg0KKyAgICogICAgIFRoaXMgZmxhZyBpbXBsaWVzIEBGVF9MT0FEX05PX1NDQUxFIGFuZCBARlRfTE9BRF9JR05PUkVfVFJBTlNGT1JNLg0KKyAgICoNCisgICAqICAgRlRfTE9BRF9JR05PUkVfVFJBTlNGT1JNIDo6DQorICAgKiAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIHRyYW5zZm9ybSBtYXRyaXggc2V0IGJ5IEBGVF9TZXRfVHJhbnNmb3JtIHNob3VsZA0KKyAgICogICAgIGJlIGlnbm9yZWQuDQorICAgKg0KKyAgICogICBGVF9MT0FEX01PTk9DSFJPTUUgOjoNCisgICAqICAgICBUaGlzIGZsYWcgaXMgdXNlZCB3aXRoIEBGVF9MT0FEX1JFTkRFUiB0byBpbmRpY2F0ZSB0aGF0IHlvdSB3YW50IHRvDQorICAgKiAgICAgcmVuZGVyIGFuIG91dGxpbmUgZ2x5cGggdG8gYSAxLWJpdCBtb25vY2hyb21lIGJpdG1hcCBnbHlwaCwgd2l0aA0KKyAgICogICAgIDh+cGl4ZWxzIHBhY2tlZCBpbnRvIGVhY2ggYnl0ZSBvZiB0aGUgYml0bWFwIGRhdGEuDQorICAgKg0KKyAgICogICAgIE5vdGUgdGhhdCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGhpbnRpbmcgYWxnb3JpdGhtIHVzZWQuICBZb3UNCisgICAqICAgICBzaG91bGQgcmF0aGVyIHVzZSBARlRfTE9BRF9UQVJHRVRfTU9OTyBzbyB0aGF0IHRoZQ0KKyAgICogICAgIG1vbm9jaHJvbWUtb3B0aW1pemVkIGhpbnRpbmcgYWxnb3JpdGhtIGlzIHVzZWQuDQorICAgKg0KKyAgICogICBGVF9MT0FEX0xJTkVBUl9ERVNJR04gOjoNCisgICAqICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgYGxpbmVhckhvcmlBZHZhbmNlJyBhbmQgYGxpbmVhclZlcnRBZHZhbmNlJw0KKyAgICogICAgIGZpZWxkcyBvZiBARlRfR2x5cGhTbG90UmVjIHNob3VsZCBiZSBrZXB0IGluIGZvbnQgdW5pdHMuICBTZWUNCisgICAqICAgICBARlRfR2x5cGhTbG90UmVjIGZvciBkZXRhaWxzLg0KKyAgICoNCisgICAqICAgRlRfTE9BRF9OT19BVVRPSElOVCA6Og0KKyAgICogICAgIERpc2FibGUgYXV0by1oaW50ZXIuICBTZWUgYWxzbyB0aGUgbm90ZSBiZWxvdy4NCisgICAqDQorICAgKiAgIEZUX0xPQURfQ09MT1IgOjoNCisgICAqICAgICBUaGlzIGZsYWcgaXMgdXNlZCB0byByZXF1ZXN0IGxvYWRpbmcgb2YgY29sb3IgZW1iZWRkZWQtYml0bWFwDQorICAgKiAgICAgaW1hZ2VzLiAgVGhlIHJlc3VsdGluZyBjb2xvciBiaXRtYXBzLCBpZiBhdmFpbGFibGUsIHdpbGwgaGF2ZSB0aGUNCisgICAqICAgICBARlRfUElYRUxfTU9ERV9CR1JBIGZvcm1hdC4gIFdoZW4gdGhlIGZsYWcgaXMgbm90IHVzZWQgYW5kIGNvbG9yDQorICAgKiAgICAgYml0bWFwcyBhcmUgZm91bmQsIHRoZXkgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gMjU2LWxldmVsIGdyYXkNCisgICAqICAgICBiaXRtYXBzIHRyYW5zcGFyZW50bHkuICBUaG9zZSBiaXRtYXBzIHdpbGwgYmUgaW4gdGhlDQorICAgKiAgICAgQEZUX1BJWEVMX01PREVfR1JBWSBmb3JtYXQuDQorICAgKg0KKyAgICogQG5vdGU6DQorICAgKiAgIEJ5IGRlZmF1bHQsIGhpbnRpbmcgaXMgZW5hYmxlZCBhbmQgdGhlIGZvbnQncyBuYXRpdmUgaGludGVyIChzZWUNCisgICAqICAgQEZUX0ZBQ0VfRkxBR19ISU5URVIpIGlzIHByZWZlcnJlZCBvdmVyIHRoZSBhdXRvLWhpbnRlci4gIFlvdSBjYW4NCisgICAqICAgZGlzYWJsZSBoaW50aW5nIGJ5IHNldHRpbmcgQEZUX0xPQURfTk9fSElOVElORyBvciBjaGFuZ2UgdGhlDQorICAgKiAgIHByZWNlZGVuY2UgYnkgc2V0dGluZyBARlRfTE9BRF9GT1JDRV9BVVRPSElOVC4gIFlvdSBjYW4gYWxzbyBzZXQNCisgICAqICAgQEZUX0xPQURfTk9fQVVUT0hJTlQgaW4gY2FzZSB5b3UgZG9uJ3Qgd2FudCB0aGUgYXV0by1oaW50ZXIgdG8gYmUNCisgICAqICAgdXNlZCBhdCBhbGwuDQorICAgKg0KKyAgICogICBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIEBGVF9GQUNFX0ZMQUdfVFJJQ0tZIGZvciBhIHNwZWNpYWwgZXhjZXB0aW9uDQorICAgKiAgIChhZmZlY3Rpbmcgb25seSBhIGhhbmRmdWwgb2YgQXNpYW4gZm9udHMpLg0KKyAgICoNCisgICAqICAgQmVzaWRlcyBkZWNpZGluZyB3aGljaCBoaW50ZXIgdG8gdXNlLCB5b3UgY2FuIGFsc28gZGVjaWRlIHdoaWNoDQorICAgKiAgIGhpbnRpbmcgYWxnb3JpdGhtIHRvIHVzZS4gIFNlZSBARlRfTE9BRF9UQVJHRVRfWFhYIGZvciBkZXRhaWxzLg0KKyAgICoNCisgICAqICAgTm90ZSB0aGF0IHRoZSBhdXRvLWhpbnRlciBuZWVkcyBhIHZhbGlkIFVuaWNvZGUgY21hcCAoZWl0aGVyIGEgbmF0aXZlDQorICAgKiAgIG9uZSBvciBzeW50aGVzaXplZCBieSBGcmVlVHlwZSkgZm9yIHByb2R1Y2luZyBjb3JyZWN0IHJlc3VsdHMuICBJZiBhDQorICAgKiAgIGZvbnQgcHJvdmlkZXMgYW4gaW5jb3JyZWN0IG1hcHBpbmcgKGZvciBleGFtcGxlLCBhc3NpZ25pbmcgdGhlDQorICAgKiAgIGNoYXJhY3RlciBjb2RlIFUrMDA1QSwgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiwgdG8gYSBnbHlwaCBkZXBpY3RpbmcgYQ0KKyAgICogICBtYXRoZW1hdGljYWwgaW50ZWdyYWwgc2lnbiksIHRoZSBhdXRvLWhpbnRlciBtaWdodCBwcm9kdWNlIHVzZWxlc3MNCisgICAqICAgcmVzdWx0cy4NCisgICAqDQorICAgKi8NCisjZGVmaW5lIEZUX0xPQURfREVGQVVMVCAgICAgICAgICAgICAgICAgICAgICAweDANCisjZGVmaW5lIEZUX0xPQURfTk9fU0NBTEUgICAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDAgKQ0KKyNkZWZpbmUgRlRfTE9BRF9OT19ISU5USU5HICAgICAgICAgICAgICAgICAgICggMUwgPDwgMSApDQorI2RlZmluZSBGVF9MT0FEX1JFTkRFUiAgICAgICAgICAgICAgICAgICAgICAgKCAxTCA8PCAyICkNCisjZGVmaW5lIEZUX0xPQURfTk9fQklUTUFQICAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDMgKQ0KKyNkZWZpbmUgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgICAgICAgICAgICAgICggMUwgPDwgNCApDQorI2RlZmluZSBGVF9MT0FEX0ZPUkNFX0FVVE9ISU5UICAgICAgICAgICAgICAgKCAxTCA8PCA1ICkNCisjZGVmaW5lIEZUX0xPQURfQ1JPUF9CSVRNQVAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDYgKQ0KKyNkZWZpbmUgRlRfTE9BRF9QRURBTlRJQyAgICAgICAgICAgICAgICAgICAgICggMUwgPDwgNyApDQorI2RlZmluZSBGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCAgKCAxTCA8PCA5ICkNCisjZGVmaW5lIEZUX0xPQURfTk9fUkVDVVJTRSAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDEwICkNCisjZGVmaW5lIEZUX0xPQURfSUdOT1JFX1RSQU5TRk9STSAgICAgICAgICAgICAoIDFMIDw8IDExICkNCisjZGVmaW5lIEZUX0xPQURfTU9OT0NIUk9NRSAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDEyICkNCisjZGVmaW5lIEZUX0xPQURfTElORUFSX0RFU0lHTiAgICAgICAgICAgICAgICAoIDFMIDw8IDEzICkNCisjZGVmaW5lIEZUX0xPQURfTk9fQVVUT0hJTlQgICAgICAgICAgICAgICAgICAoIDFMIDw8IDE1ICkNCisgIC8qIEJpdHMgMTYuLjE5IGFyZSB1c2VkIGJ5IGBGVF9MT0FEX1RBUkdFVF8nICovDQorI2RlZmluZSBGVF9MT0FEX0NPTE9SICAgICAgICAgICAgICAgICAgICAgICAgKCAxTCA8PCAyMCApDQorDQorICAvKiAqLw0KKw0KKyAgLyogdXNlZCBpbnRlcm5hbGx5IG9ubHkgYnkgY2VydGFpbiBmb250IGRyaXZlcnMhICovDQorI2RlZmluZSBGVF9MT0FEX0FEVkFOQ0VfT05MWSAgICAgICAgICAgICAgICAgKCAxTCA8PCA4ICkNCisjZGVmaW5lIEZUX0xPQURfU0JJVFNfT05MWSAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDE0ICkNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICoNCisgICAqIEBlbnVtOg0KKyAgICogICBGVF9MT0FEX1RBUkdFVF9YWFgNCisgICAqDQorICAgKiBAZGVzY3JpcHRpb246DQorICAgKiAgIEEgbGlzdCBvZiB2YWx1ZXMgdGhhdCBhcmUgdXNlZCB0byBzZWxlY3QgYSBzcGVjaWZpYyBoaW50aW5nIGFsZ29yaXRobQ0KKyAgICogICB0byB1c2UgYnkgdGhlIGhpbnRlci4gIFlvdSBzaG91bGQgT1Igb25lIG9mIHRoZXNlIHZhbHVlcyB0byB5b3VyDQorICAgKiAgIGBsb2FkX2ZsYWdzJyB3aGVuIGNhbGxpbmcgQEZUX0xvYWRfR2x5cGguDQorICAgKg0KKyAgICogICBOb3RlIHRoYXQgZm9udCdzIG5hdGl2ZSBoaW50ZXJzIG1heSBpZ25vcmUgdGhlIGhpbnRpbmcgYWxnb3JpdGhtIHlvdQ0KKyAgICogICBoYXZlIHNwZWNpZmllZCAoZS5nLiwgdGhlIFRydWVUeXBlIGJ5dGVjb2RlIGludGVycHJldGVyKS4gIFlvdSBjYW4gc2V0DQorICAgKiAgIEBGVF9MT0FEX0ZPUkNFX0FVVE9ISU5UIHRvIGVuc3VyZSB0aGF0IHRoZSBhdXRvLWhpbnRlciBpcyB1c2VkLg0KKyAgICoNCisgICAqICAgQWxzbyBub3RlIHRoYXQgQEZUX0xPQURfVEFSR0VUX0xJR0hUIGlzIGFuIGV4Y2VwdGlvbiwgaW4gdGhhdCBpdA0KKyAgICogICBhbHdheXMgaW1wbGllcyBARlRfTE9BRF9GT1JDRV9BVVRPSElOVC4NCisgICAqDQorICAgKiBAdmFsdWVzOg0KKyAgICogICBGVF9MT0FEX1RBUkdFVF9OT1JNQUwgOjoNCisgICAqICAgICBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBkZWZhdWx0IGhpbnRpbmcgYWxnb3JpdGhtLCBvcHRpbWl6ZWQgZm9yDQorICAgKiAgICAgc3RhbmRhcmQgZ3JheS1sZXZlbCByZW5kZXJpbmcuICBGb3IgbW9ub2Nocm9tZSBvdXRwdXQsIHVzZQ0KKyAgICogICAgIEBGVF9MT0FEX1RBUkdFVF9NT05PIGluc3RlYWQuDQorICAgKg0KKyAgICogICBGVF9MT0FEX1RBUkdFVF9MSUdIVCA6Og0KKyAgICogICAgIEEgbGlnaHRlciBoaW50aW5nIGFsZ29yaXRobSBmb3Igbm9uLW1vbm9jaHJvbWUgbW9kZXMuICBNYW55DQorICAgKiAgICAgZ2VuZXJhdGVkIGdseXBocyBhcmUgbW9yZSBmdXp6eSBidXQgYmV0dGVyIHJlc2VtYmxlIGl0cyBvcmlnaW5hbA0KKyAgICogICAgIHNoYXBlLiAgQSBiaXQgbGlrZSByZW5kZXJpbmcgb24gTWFjIE9TflguDQorICAgKg0KKyAgICogICAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoaXMgdGFyZ2V0IGltcGxpZXMgQEZUX0xPQURfRk9SQ0VfQVVUT0hJTlQuDQorICAgKg0KKyAgICogICBGVF9MT0FEX1RBUkdFVF9NT05PIDo6DQorICAgKiAgICAgU3Ryb25nIGhpbnRpbmcgYWxnb3JpdGhtIHRoYXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgbW9ub2Nocm9tZQ0KKyAgICogICAgIG91dHB1dC4gIFRoZSByZXN1bHQgaXMgcHJvYmFibHkgdW5wbGVhc2FudCBpZiB0aGUgZ2x5cGggaXMgcmVuZGVyZWQNCisgICAqICAgICBpbiBub24tbW9ub2Nocm9tZSBtb2Rlcy4NCisgICAqDQorICAgKiAgIEZUX0xPQURfVEFSR0VUX0xDRCA6Og0KKyAgICogICAgIEEgdmFyaWFudCBvZiBARlRfTE9BRF9UQVJHRVRfTk9STUFMIG9wdGltaXplZCBmb3IgaG9yaXpvbnRhbGx5DQorICAgKiAgICAgZGVjaW1hdGVkIExDRCBkaXNwbGF5cy4NCisgICAqDQorICAgKiAgIEZUX0xPQURfVEFSR0VUX0xDRF9WIDo6DQorICAgKiAgICAgQSB2YXJpYW50IG9mIEBGVF9MT0FEX1RBUkdFVF9OT1JNQUwgb3B0aW1pemVkIGZvciB2ZXJ0aWNhbGx5DQorICAgKiAgICAgZGVjaW1hdGVkIExDRCBkaXNwbGF5cy4NCisgICAqDQorICAgKiBAbm90ZToNCisgICAqICAgWW91IHNob3VsZCB1c2Ugb25seSBfb25lXyBvZiB0aGUgRlRfTE9BRF9UQVJHRVRfWFhYIHZhbHVlcyBpbiB5b3VyDQorICAgKiAgIGBsb2FkX2ZsYWdzJy4gIFRoZXkgY2FuJ3QgYmUgT1JlZC4NCisgICAqDQorICAgKiAgIElmIEBGVF9MT0FEX1JFTkRFUiBpcyBhbHNvIHNldCwgdGhlIGdseXBoIGlzIHJlbmRlcmVkIGluIHRoZQ0KKyAgICogICBjb3JyZXNwb25kaW5nIG1vZGUgKGkuZS4sIHRoZSBtb2RlIHdoaWNoIG1hdGNoZXMgdGhlIHVzZWQgYWxnb3JpdGhtDQorICAgKiAgIGJlc3QpLiAgQW4gZXhlcHRpb24gaXMgRlRfTE9BRF9UQVJHRVRfTU9OTyBzaW5jZSBpdCBpbXBsaWVzDQorICAgKiAgIEBGVF9MT0FEX01PTk9DSFJPTUUuDQorICAgKg0KKyAgICogICBZb3UgY2FuIHVzZSBhIGhpbnRpbmcgYWxnb3JpdGhtIHRoYXQgZG9lc24ndCBjb3JyZXNwb25kIHRvIHRoZSBzYW1lDQorICAgKiAgIHJlbmRlcmluZyBtb2RlLiAgQXMgYW4gZXhhbXBsZSwgaXQgaXMgcG9zc2libGUgdG8gdXNlIHRoZSBgbGlnaHQnDQorICAgKiAgIGhpbnRpbmcgYWxnb3JpdGhtIGFuZCBoYXZlIHRoZSByZXN1bHRzIHJlbmRlcmVkIGluIGhvcml6b250YWwgTENEDQorICAgKiAgIHBpeGVsIG1vZGUsIHdpdGggY29kZSBsaWtlDQorICAgKg0KKyAgICogICAgIHsNCisgICAqICAgICAgIEZUX0xvYWRfR2x5cGgoIGZhY2UsIGdseXBoX2luZGV4LA0KKyAgICogICAgICAgICAgICAgICAgICAgICAgbG9hZF9mbGFncyB8IEZUX0xPQURfVEFSR0VUX0xJR0hUICk7DQorICAgKg0KKyAgICogICAgICAgRlRfUmVuZGVyX0dseXBoKCBmYWNlLT5nbHlwaCwgRlRfUkVOREVSX01PREVfTENEICk7DQorICAgKiAgICAgfQ0KKyAgICoNCisgICAqLw0KKyNkZWZpbmUgRlRfTE9BRF9UQVJHRVRfKCB4ICkgICAoIChGVF9JbnQzMikoICh4KSAmIDE1ICkgPDwgMTYgKQ0KKw0KKyNkZWZpbmUgRlRfTE9BRF9UQVJHRVRfTk9STUFMICBGVF9MT0FEX1RBUkdFVF8oIEZUX1JFTkRFUl9NT0RFX05PUk1BTCApDQorI2RlZmluZSBGVF9MT0FEX1RBUkdFVF9MSUdIVCAgIEZUX0xPQURfVEFSR0VUXyggRlRfUkVOREVSX01PREVfTElHSFQgICkNCisjZGVmaW5lIEZUX0xPQURfVEFSR0VUX01PTk8gICAgRlRfTE9BRF9UQVJHRVRfKCBGVF9SRU5ERVJfTU9ERV9NT05PICAgKQ0KKyNkZWZpbmUgRlRfTE9BRF9UQVJHRVRfTENEICAgICBGVF9MT0FEX1RBUkdFVF8oIEZUX1JFTkRFUl9NT0RFX0xDRCAgICApDQorI2RlZmluZSBGVF9MT0FEX1RBUkdFVF9MQ0RfViAgIEZUX0xPQURfVEFSR0VUXyggRlRfUkVOREVSX01PREVfTENEX1YgICkNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICoNCisgICAqIEBtYWNybzoNCisgICAqICAgRlRfTE9BRF9UQVJHRVRfTU9ERQ0KKyAgICoNCisgICAqIEBkZXNjcmlwdGlvbjoNCisgICAqICAgUmV0dXJuIHRoZSBARlRfUmVuZGVyX01vZGUgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuDQorICAgKiAgIEBGVF9MT0FEX1RBUkdFVF9YWFggdmFsdWUuDQorICAgKg0KKyAgICovDQorI2RlZmluZSBGVF9MT0FEX1RBUkdFVF9NT0RFKCB4ICkgICggKEZUX1JlbmRlcl9Nb2RlKSggKCAoeCkgPj4gMTYgKSAmIDE1ICkgKQ0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2V0X1RyYW5zZm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIHNldCB0aGUgdHJhbnNmb3JtYXRpb24gdGhhdCBpcyBhcHBsaWVkIHRvIGdseXBoICovDQorICAvKiAgICBpbWFnZXMgd2hlbiB0aGV5IGFyZSBsb2FkZWQgaW50byBhIGdseXBoIHNsb3QgdGhyb3VnaCAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEBGVF9Mb2FkX0dseXBoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIG1hdHJpeCA6OiBBIHBvaW50ZXIgdG8gdGhlIHRyYW5zZm9ybWF0aW9uJ3MgMngyIG1hdHJpeC4gIFVzZX4wIGZvciAqLw0KKyAgLyogICAgICAgICAgICAgIHRoZSBpZGVudGl0eSBtYXRyaXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBkZWx0YSAgOjogQSBwb2ludGVyIHRvIHRoZSB0cmFuc2xhdGlvbiB2ZWN0b3IuICBVc2V+MCBmb3IgdGhlIG51bGwgKi8NCisgIC8qICAgICAgICAgICAgICB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBvbmx5IGFwcGxpZWQgdG8gc2NhbGFibGUgaW1hZ2UgZm9ybWF0cyBhZnRlciAqLw0KKyAgLyogICAgdGhlIGdseXBoIGhhcyBiZWVuIGxvYWRlZC4gIEl0IG1lYW5zIHRoYXQgaGludGluZyBpcyB1bmFsdGVyZWQgYnkgICovDQorICAvKiAgICB0aGUgdHJhbnNmb3JtYXRpb24gYW5kIGlzIHBlcmZvcm1lZCBvbiB0aGUgY2hhcmFjdGVyIHNpemUgZ2l2ZW4gaW4gKi8NCisgIC8qICAgIHRoZSBsYXN0IGNhbGwgdG8gQEZUX1NldF9DaGFyX1NpemUgb3IgQEZUX1NldF9QaXhlbF9TaXplcy4gICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBOb3RlIHRoYXQgdGhpcyBhbHNvIHRyYW5zZm9ybXMgdGhlIGBmYWNlLmdseXBoLmFkdmFuY2UnIGZpZWxkLCBidXQgKi8NCisgIC8qICAgICpub3QqIHRoZSB2YWx1ZXMgaW4gYGZhY2UuZ2x5cGgubWV0cmljcycuICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIHZvaWQgKQ0KKyAgRlRfU2V0X1RyYW5zZm9ybSggRlRfRmFjZSAgICAgZmFjZSwNCisgICAgICAgICAgICAgICAgICAgIEZUX01hdHJpeCogIG1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIGRlbHRhICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9SZW5kZXJfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBBbiBlbnVtZXJhdGlvbiB0eXBlIHRoYXQgbGlzdHMgdGhlIHJlbmRlciBtb2RlcyBzdXBwb3J0ZWQgYnkgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlfjIuICBFYWNoIG1vZGUgY29ycmVzcG9uZHMgdG8gYSBzcGVjaWZpYyB0eXBlIG9mIHNjYW5saW5lICAqLw0KKyAgLyogICAgY29udmVyc2lvbiBwZXJmb3JtZWQgb24gdGhlIG91dGxpbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZvciBiaXRtYXAgZm9udHMgYW5kIGVtYmVkZGVkIGJpdG1hcHMgdGhlIGBiaXRtYXAtPnBpeGVsX21vZGUnICAgICAqLw0KKyAgLyogICAgZmllbGQgaW4gdGhlIEBGVF9HbHlwaFNsb3RSZWMgc3RydWN0dXJlIGdpdmVzIHRoZSBmb3JtYXQgb2YgdGhlICAgICovDQorICAvKiAgICByZXR1cm5lZCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQWxsIG1vZGVzIGV4Y2VwdCBARlRfUkVOREVSX01PREVfTU9OTyB1c2UgMjU2IGxldmVscyBvZiBvcGFjaXR5LiAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfUkVOREVSX01PREVfTk9STUFMIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgcmVuZGVyIG1vZGU7IGl0IGNvcnJlc3BvbmRzIHRvIDgtYml0ICAgICAgICAgKi8NCisgIC8qICAgICAgYW50aS1hbGlhc2VkIGJpdG1hcHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9SRU5ERVJfTU9ERV9MSUdIVCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIEBGVF9SRU5ERVJfTU9ERV9OT1JNQUwuICBJdCBpcyBvbmx5ICAgICAgICAqLw0KKyAgLyogICAgICBkZWZpbmVkIGFzIGEgc2VwYXJhdGUgdmFsdWUgYmVjYXVzZSByZW5kZXIgbW9kZXMgYXJlIGFsc28gdXNlZCAgICovDQorICAvKiAgICAgIGluZGlyZWN0bHkgdG8gZGVmaW5lIGhpbnRpbmcgYWxnb3JpdGhtIHNlbGVjdG9ycy4gIFNlZSAgICAgICAgICAgKi8NCisgIC8qICAgICAgQEZUX0xPQURfVEFSR0VUX1hYWCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9SRU5ERVJfTU9ERV9NT05PIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgVGhpcyBtb2RlIGNvcnJlc3BvbmRzIHRvIDEtYml0IGJpdG1hcHMgKHdpdGggMn5sZXZlbHMgb2YgICAgICAgICAqLw0KKyAgLyogICAgICBvcGFjaXR5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1JFTkRFUl9NT0RFX0xDRCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBUaGlzIG1vZGUgY29ycmVzcG9uZHMgdG8gaG9yaXpvbnRhbCBSR0IgYW5kIEJHUiBzdWItcGl4ZWwgICAgICAgICovDQorICAvKiAgICAgIGRpc3BsYXlzIGxpa2UgTENEIHNjcmVlbnMuICBJdCBwcm9kdWNlcyA4LWJpdCBiaXRtYXBzIHRoYXQgYXJlICAgKi8NCisgIC8qICAgICAgM350aW1lcyB0aGUgd2lkdGggb2YgdGhlIG9yaWdpbmFsIGdseXBoIG91dGxpbmUgaW4gcGl4ZWxzLCBhbmQgICAqLw0KKyAgLyogICAgICB3aGljaCB1c2UgdGhlIEBGVF9QSVhFTF9NT0RFX0xDRCBtb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1JFTkRFUl9NT0RFX0xDRF9WIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBUaGlzIG1vZGUgY29ycmVzcG9uZHMgdG8gdmVydGljYWwgUkdCIGFuZCBCR1Igc3ViLXBpeGVsIGRpc3BsYXlzICovDQorICAvKiAgICAgIChsaWtlIFBEQSBzY3JlZW5zLCByb3RhdGVkIExDRCBkaXNwbGF5cywgZXRjLikuICBJdCBwcm9kdWNlcyAgICAgKi8NCisgIC8qICAgICAgOC1iaXQgYml0bWFwcyB0aGF0IGFyZSAzfnRpbWVzIHRoZSBoZWlnaHQgb2YgdGhlIG9yaWdpbmFsICAgICAgICAqLw0KKyAgLyogICAgICBnbHlwaCBvdXRsaW5lIGluIHBpeGVscyBhbmQgdXNlIHRoZSBARlRfUElYRUxfTU9ERV9MQ0RfViBtb2RlLiAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIExDRC1vcHRpbWl6ZWQgZ2x5cGggYml0bWFwcyBwcm9kdWNlZCBieSBGVF9SZW5kZXJfR2x5cGggY2FuIGJlICovDQorICAvKiAgICBmaWx0ZXJlZCB0byByZWR1Y2UgY29sb3ItZnJpbmdlcyBieSB1c2luZyBARlRfTGlicmFyeV9TZXRMY2RGaWx0ZXIgKi8NCisgIC8qICAgIChub3QgYWN0aXZlIGluIHRoZSBkZWZhdWx0IGJ1aWxkcykuICBJdCBpcyB1cCB0byB0aGUgY2FsbGVyIHRvICAgICAqLw0KKyAgLyogICAgZWl0aGVyIGNhbGwgQEZUX0xpYnJhcnlfU2V0TGNkRmlsdGVyIChpZiBhdmFpbGFibGUpIG9yIGRvIHRoZSAgICAgICovDQorICAvKiAgICBmaWx0ZXJpbmcgaXRzZWxmLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIHNlbGVjdGVkIHJlbmRlciBtb2RlIG9ubHkgYWZmZWN0cyB2ZWN0b3IgZ2x5cGhzIG9mIGEgZm9udC4gICAgICovDQorICAvKiAgICBFbWJlZGRlZCBiaXRtYXBzIG9mdGVuIGhhdmUgYSBkaWZmZXJlbnQgcGl4ZWwgbW9kZSBsaWtlICAgICAgICAgICAgKi8NCisgIC8qICAgIEBGVF9QSVhFTF9NT0RFX01PTk8uICBZb3UgY2FuIHVzZSBARlRfQml0bWFwX0NvbnZlcnQgdG8gdHJhbnNmb3JtICAqLw0KKyAgLyogICAgdGhlbSBpbnRvIDgtYml0IHBpeG1hcHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIHR5cGVkZWYgZW51bSAgRlRfUmVuZGVyX01vZGVfDQorICB7DQorICAgIEZUX1JFTkRFUl9NT0RFX05PUk1BTCA9IDAsDQorICAgIEZUX1JFTkRFUl9NT0RFX0xJR0hULA0KKyAgICBGVF9SRU5ERVJfTU9ERV9NT05PLA0KKyAgICBGVF9SRU5ERVJfTU9ERV9MQ0QsDQorICAgIEZUX1JFTkRFUl9NT0RFX0xDRF9WLA0KKw0KKyAgICBGVF9SRU5ERVJfTU9ERV9NQVgNCisNCisgIH0gRlRfUmVuZGVyX01vZGU7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmdF9yZW5kZXJfbW9kZV94eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGVzZSBjb25zdGFudHMgYXJlIGRlcHJlY2F0ZWQuICBVc2UgdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgICAgICAgKi8NCisgIC8qICAgIEBGVF9SZW5kZXJfTW9kZSB2YWx1ZXMgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZ0X3JlbmRlcl9tb2RlX25vcm1hbCA6OiBzZWUgQEZUX1JFTkRFUl9NT0RFX05PUk1BTCAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZnRfcmVuZGVyX21vZGVfbW9ubyAgIDo6IHNlZSBARlRfUkVOREVSX01PREVfTU9OTyAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIGZ0X3JlbmRlcl9tb2RlX25vcm1hbCAgRlRfUkVOREVSX01PREVfTk9STUFMDQorI2RlZmluZSBmdF9yZW5kZXJfbW9kZV9tb25vICAgIEZUX1JFTkRFUl9NT0RFX01PTk8NCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1JlbmRlcl9HbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIENvbnZlcnQgYSBnaXZlbiBnbHlwaCBpbWFnZSB0byBhIGJpdG1hcC4gIEl0IGRvZXMgc28gYnkgaW5zcGVjdGluZyAqLw0KKyAgLyogICAgdGhlIGdseXBoIGltYWdlIGZvcm1hdCwgZmluZGluZyB0aGUgcmVsZXZhbnQgcmVuZGVyZXIsIGFuZCAgICAgICAgICovDQorICAvKiAgICBpbnZva2luZyBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBzbG90ICAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgZ2x5cGggc2xvdCBjb250YWluaW5nIHRoZSBpbWFnZSB0byAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIGNvbnZlcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHJlbmRlcl9tb2RlIDo6IFRoaXMgaXMgdGhlIHJlbmRlciBtb2RlIHVzZWQgdG8gcmVuZGVyIHRoZSBnbHlwaCAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgaW1hZ2UgaW50byBhIGJpdG1hcC4gIFNlZSBARlRfUmVuZGVyX01vZGUgZm9yIGEgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApDQorICBGVF9SZW5kZXJfR2x5cGgoIEZUX0dseXBoU2xvdCAgICBzbG90LA0KKyAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgcmVuZGVyX21vZGUgKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0tlcm5pbmdfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBrZXJuaW5nIHZhbHVlcyB0byByZXR1cm4gaW4gICAqLw0KKyAgLyogICAgQEZUX0dldF9LZXJuaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfS0VSTklOR19ERUZBVUxUICA6OiBSZXR1cm4gc2NhbGVkIGFuZCBncmlkLWZpdHRlZCBrZXJuaW5nICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlcyAodmFsdWUgaXN+MCkuICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfS0VSTklOR19VTkZJVFRFRCA6OiBSZXR1cm4gc2NhbGVkIGJ1dCB1bi1ncmlkLWZpdHRlZCBrZXJuaW5nICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfS0VSTklOR19VTlNDQUxFRCA6OiBSZXR1cm4gdGhlIGtlcm5pbmcgdmVjdG9yIGluIG9yaWdpbmFsIGZvbnQgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgdHlwZWRlZiBlbnVtICBGVF9LZXJuaW5nX01vZGVfDQorICB7DQorICAgIEZUX0tFUk5JTkdfREVGQVVMVCAgPSAwLA0KKyAgICBGVF9LRVJOSU5HX1VORklUVEVELA0KKyAgICBGVF9LRVJOSU5HX1VOU0NBTEVEDQorDQorICB9IEZUX0tlcm5pbmdfTW9kZTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Q29uc3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZ0X2tlcm5pbmdfZGVmYXVsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgY29uc3RhbnQgaXMgZGVwcmVjYXRlZC4gIFBsZWFzZSB1c2UgQEZUX0tFUk5JTkdfREVGQVVMVCAgICAgICAqLw0KKyAgLyogICAgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIGZ0X2tlcm5pbmdfZGVmYXVsdCAgIEZUX0tFUk5JTkdfREVGQVVMVA0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxDb25zdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZnRfa2VybmluZ191bmZpdHRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBjb25zdGFudCBpcyBkZXByZWNhdGVkLiAgUGxlYXNlIHVzZSBARlRfS0VSTklOR19VTkZJVFRFRCAgICAgICovDQorICAvKiAgICBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgZnRfa2VybmluZ191bmZpdHRlZCAgRlRfS0VSTklOR19VTkZJVFRFRA0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxDb25zdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZnRfa2VybmluZ191bnNjYWxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBjb25zdGFudCBpcyBkZXByZWNhdGVkLiAgUGxlYXNlIHVzZSBARlRfS0VSTklOR19VTlNDQUxFRCAgICAgICovDQorICAvKiAgICBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgZnRfa2VybmluZ191bnNjYWxlZCAgRlRfS0VSTklOR19VTlNDQUxFRA0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2V0X0tlcm5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgUmV0dXJuIHRoZSBrZXJuaW5nIHZlY3RvciBiZXR3ZWVuIHR3byBnbHlwaHMgb2YgYSBzYW1lIGZhY2UuICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSAgICAgICAgOjogQSBoYW5kbGUgdG8gYSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGxlZnRfZ2x5cGggIDo6IFRoZSBpbmRleCBvZiB0aGUgbGVmdCBnbHlwaCBpbiB0aGUga2VybiBwYWlyLiAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICByaWdodF9nbHlwaCA6OiBUaGUgaW5kZXggb2YgdGhlIHJpZ2h0IGdseXBoIGluIHRoZSBrZXJuIHBhaXIuICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAga2Vybl9tb2RlICAgOjogU2VlIEBGVF9LZXJuaW5nX01vZGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmVzIHRoZSBzY2FsZSBhbmQgZGltZW5zaW9uIG9mIHRoZSByZXR1cm5lZCAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIGtlcm5pbmcgdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGFrZXJuaW5nICAgIDo6IFRoZSBrZXJuaW5nIHZlY3Rvci4gIFRoaXMgaXMgZWl0aGVyIGluIGZvbnQgdW5pdHMgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgb3IgaW4gcGl4ZWxzICgyNi42IGZvcm1hdCkgZm9yIHNjYWxhYmxlIGZvcm1hdHMsICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBhbmQgaW4gcGl4ZWxzIGZvciBmaXhlZC1zaXplcyBmb3JtYXRzLiAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBPbmx5IGhvcml6b250YWwgbGF5b3V0cyAobGVmdC10by1yaWdodCAmIHJpZ2h0LXRvLWxlZnQpIGFyZSAgICAgICAgKi8NCisgIC8qICAgIHN1cHBvcnRlZCBieSB0aGlzIG1ldGhvZC4gIE90aGVyIGxheW91dHMsIG9yIG1vcmUgc29waGlzdGljYXRlZCAgICAqLw0KKyAgLyogICAga2VybmluZ3MsIGFyZSBvdXQgb2YgdGhlIHNjb3BlIG9mIHRoaXMgQVBJIGZ1bmN0aW9uIC0tIHRoZXkgY2FuIGJlICovDQorICAvKiAgICBpbXBsZW1lbnRlZCB0aHJvdWdoIGZvcm1hdC1zcGVjaWZpYyBpbnRlcmZhY2VzLiAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApDQorICBGVF9HZXRfS2VybmluZyggRlRfRmFjZSAgICAgZmFjZSwNCisgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBsZWZ0X2dseXBoLA0KKyAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHJpZ2h0X2dseXBoLA0KKyAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGtlcm5fbW9kZSwNCisgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IgICpha2VybmluZyApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2V0X1RyYWNrX0tlcm5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgUmV0dXJuIHRoZSB0cmFjayBrZXJuaW5nIGZvciBhIGdpdmVuIGZhY2Ugb2JqZWN0IGF0IGEgZ2l2ZW4gc2l6ZS4gICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSAgICAgICA6OiBBIGhhbmRsZSB0byBhIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHBvaW50X3NpemUgOjogVGhlIHBvaW50IHNpemUgaW4gMTYuMTYgZnJhY3Rpb25hbCBwb2ludHMuICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBkZWdyZWUgICAgIDo6IFRoZSBkZWdyZWUgb2YgdGlnaHRuZXNzLiAgSW5jcmVhc2luZ2x5IG5lZ2F0aXZlICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgdmFsdWVzIHJlcHJlc2VudCB0aWdodGVyIHRyYWNrIGtlcm5pbmcsIHdoaWxlICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICBpbmNyZWFzaW5nbHkgcG9zaXRpdmUgdmFsdWVzIHJlcHJlc2VudCBsb29zZXIgdHJhY2sgICovDQorICAvKiAgICAgICAgICAgICAgICAgIGtlcm5pbmcuICBWYWx1ZSB6ZXJvIG1lYW5zIG5vIHRyYWNrIGtlcm5pbmcuICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBha2VybmluZyAgIDo6IFRoZSBrZXJuaW5nIGluIDE2LjE2IGZyYWN0aW9uYWwgcG9pbnRzLCB0byBiZSAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgdW5pZm9ybWx5IGFwcGxpZWQgYmV0d2VlbiBhbGwgZ2x5cGhzLiAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEN1cnJlbnRseSwgb25seSB0aGUgVHlwZX4xIGZvbnQgZHJpdmVyIHN1cHBvcnRzIHRyYWNrIGtlcm5pbmcsICAgICAqLw0KKyAgLyogICAgdXNpbmcgZGF0YSBmcm9tIEFGTSBmaWxlcyAoaWYgYXR0YWNoZWQgd2l0aCBARlRfQXR0YWNoX0ZpbGUgb3IgICAgICovDQorICAvKiAgICBARlRfQXR0YWNoX1N0cmVhbSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgT25seSB2ZXJ5IGZldyBBRk0gZmlsZXMgY29tZSB3aXRoIHRyYWNrIGtlcm5pbmcgZGF0YTsgcGxlYXNlIHJlZmVyICovDQorICAvKiAgICB0byB0aGUgQWRvYmUncyBBRk0gc3BlY2lmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApDQorICBGVF9HZXRfVHJhY2tfS2VybmluZyggRlRfRmFjZSAgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgcG9pbnRfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGRlZ3JlZSwNCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGFrZXJuaW5nICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9HZXRfR2x5cGhfTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBSZXRyaWV2ZSB0aGUgQVNDSUkgbmFtZSBvZiBhIGdpdmVuIGdseXBoIGluIGEgZmFjZS4gIFRoaXMgb25seSAgICAgKi8NCisgIC8qICAgIHdvcmtzIGZvciB0aG9zZSBmYWNlcyB3aGVyZSBARlRfSEFTX0dMWVBIX05BTUVTKGZhY2UpIHJldHVybnN+MS4gICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgICAgICAgIDo6IEEgaGFuZGxlIHRvIGEgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBnbHlwaF9pbmRleCA6OiBUaGUgZ2x5cGggaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYnVmZmVyX21heCAgOjogVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBpbiB0aGUgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICBidWZmZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBidWZmZXIgICAgICA6OiBBIHBvaW50ZXIgdG8gYSB0YXJnZXQgYnVmZmVyIHdoZXJlIHRoZSBuYW1lIGlzICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgIGNvcGllZCB0by4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEFuIGVycm9yIGlzIHJldHVybmVkIGlmIHRoZSBmYWNlIGRvZXNuJ3QgcHJvdmlkZSBnbHlwaCBuYW1lcyBvciBpZiAqLw0KKyAgLyogICAgdGhlIGdseXBoIGluZGV4IGlzIGludmFsaWQuICBJbiBhbGwgY2FzZXMgb2YgZmFpbHVyZSwgdGhlIGZpcnN0ICAgICovDQorICAvKiAgICBieXRlIG9mIGBidWZmZXInIGlzIHNldCB0b34wIHRvIGluZGljYXRlIGFuIGVtcHR5IG5hbWUuICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIGdseXBoIG5hbWUgaXMgdHJ1bmNhdGVkIHRvIGZpdCB3aXRoaW4gdGhlIGJ1ZmZlciBpZiBpdCBpcyB0b28gICovDQorICAvKiAgICBsb25nLiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBhbHdheXMgemVyby10ZXJtaW5hdGVkLiAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQmUgYXdhcmUgdGhhdCBGcmVlVHlwZSByZW9yZGVycyBnbHlwaCBpbmRpY2VzIGludGVybmFsbHkgc28gdGhhdCAgICovDQorICAvKiAgICBnbHlwaCBpbmRleH4wIGFsd2F5cyBjb3JyZXNwb25kcyB0byB0aGUgYG1pc3NpbmcgZ2x5cGgnIChjYWxsZWQgICAgKi8NCisgIC8qICAgIGAubm90ZGVmJykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBjb21waWxlZCB3aXRoaW4gdGhlIGxpYnJhcnkgaWYgdGhlIGNvbmZpZyAgICAgKi8NCisgIC8qICAgIG1hY3JvIGBGVF9DT05GSUdfT1BUSU9OX05PX0dMWVBIX05BTUVTJyBpcyBkZWZpbmVkIGluICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9ucy5oJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQ0KKyAgRlRfR2V0X0dseXBoX05hbWUoIEZUX0ZhY2UgICAgIGZhY2UsDQorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2x5cGhfaW5kZXgsDQorICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgYnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGJ1ZmZlcl9tYXggKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0dldF9Qb3N0c2NyaXB0X05hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFJldHJpZXZlIHRoZSBBU0NJSSBQb3N0U2NyaXB0IG5hbWUgb2YgYSBnaXZlbiBmYWNlLCBpZiBhdmFpbGFibGUuICAqLw0KKyAgLyogICAgVGhpcyBvbmx5IHdvcmtzIHdpdGggUG9zdFNjcmlwdCBhbmQgVHJ1ZVR5cGUgZm9udHMuICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBwb2ludGVyIHRvIHRoZSBmYWNlJ3MgUG9zdFNjcmlwdCBuYW1lLiAgTlVMTCBpZiB1bmF2YWlsYWJsZS4gICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIHJldHVybmVkIHBvaW50ZXIgaXMgb3duZWQgYnkgdGhlIGZhY2UgYW5kIGlzIGRlc3Ryb3llZCB3aXRoICAgICovDQorICAvKiAgICBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBjb25zdCBjaGFyKiApDQorICBGVF9HZXRfUG9zdHNjcmlwdF9OYW1lKCBGVF9GYWNlICBmYWNlICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9TZWxlY3RfQ2hhcm1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBTZWxlY3QgYSBnaXZlbiBjaGFybWFwIGJ5IGl0cyBlbmNvZGluZyB0YWcgKGFzIGxpc3RlZCBpbiAgICAgICAgICAgKi8NCisgIC8qICAgIGBmcmVldHlwZS5oJykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGVuY29kaW5nIDo6IEEgaGFuZGxlIHRvIHRoZSBzZWxlY3RlZCBlbmNvZGluZy4gICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciBpZiBubyBjaGFybWFwIGluIHRoZSBmYWNlICAgICAgICAgICAqLw0KKyAgLyogICAgY29ycmVzcG9uZHMgdG8gdGhlIGVuY29kaW5nIHF1ZXJpZWQgaGVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEJlY2F1c2UgbWFueSBmb250cyBjb250YWluIG1vcmUgdGhhbiBhIHNpbmdsZSBjbWFwIGZvciBVbmljb2RlICAgICAqLw0KKyAgLyogICAgZW5jb2RpbmcsIHRoaXMgZnVuY3Rpb24gaGFzIHNvbWUgc3BlY2lhbCBjb2RlIHRvIHNlbGVjdCB0aGUgb25lICAgICovDQorICAvKiAgICB3aGljaCBjb3ZlcnMgVW5pY29kZSBiZXN0IChgYmVzdCcgaW4gdGhlIHNlbnNlIHRoYXQgYSBVQ1MtNCBjbWFwICAgKi8NCisgIC8qICAgIGlzIHByZWZlcnJlZCB0byBhIFVDUy0yIGNtYXApLiAgSXQgaXMgdGh1cyBwcmVmZXJhYmxlIHRvICAgICAgICAgICAqLw0KKyAgLyogICAgQEZUX1NldF9DaGFybWFwIGluIHRoaXMgY2FzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQ0KKyAgRlRfU2VsZWN0X0NoYXJtYXAoIEZUX0ZhY2UgICAgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgIEZUX0VuY29kaW5nICBlbmNvZGluZyApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfU2V0X0NoYXJtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgU2VsZWN0IGEgZ2l2ZW4gY2hhcm1hcCBmb3IgY2hhcmFjdGVyIGNvZGUgdG8gZ2x5cGggaW5kZXggbWFwcGluZy4gICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgY2hhcm1hcCA6OiBBIGhhbmRsZSB0byB0aGUgc2VsZWN0ZWQgY2hhcm1hcC4gICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBjaGFybWFwIGlzIG5vdCBwYXJ0IG9mICAgICAgICovDQorICAvKiAgICB0aGUgZmFjZSAoaS5lLiwgaWYgaXQgaXMgbm90IGxpc3RlZCBpbiB0aGUgYGZhY2UtPmNoYXJtYXBzJyAgICAgICAgKi8NCisgIC8qICAgIHRhYmxlKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBJdCBhbHNvIGZhaWxzIGlmIGEgdHlwZX4xNCBjaGFybWFwIGlzIHNlbGVjdGVkLiAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApDQorICBGVF9TZXRfQ2hhcm1hcCggRlRfRmFjZSAgICAgZmFjZSwNCisgICAgICAgICAgICAgICAgICBGVF9DaGFyTWFwICBjaGFybWFwICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICoNCisgICAqIEBmdW5jdGlvbjoNCisgICAqICAgRlRfR2V0X0NoYXJtYXBfSW5kZXgNCisgICAqDQorICAgKiBAZGVzY3JpcHRpb246DQorICAgKiAgIFJldHJpZXZlIGluZGV4IG9mIGEgZ2l2ZW4gY2hhcm1hcC4NCisgICAqDQorICAgKiBAaW5wdXQ6DQorICAgKiAgIGNoYXJtYXAgOjoNCisgICAqICAgICBBIGhhbmRsZSB0byBhIGNoYXJtYXAuDQorICAgKg0KKyAgICogQHJldHVybjoNCisgICAqICAgVGhlIGluZGV4IGludG8gdGhlIGFycmF5IG9mIGNoYXJhY3RlciBtYXBzIHdpdGhpbiB0aGUgZmFjZSB0byB3aGljaA0KKyAgICogICBgY2hhcm1hcCcgYmVsb25ncy4gIElmIGFuIGVycm9yIG9jY3VycywgLTEgaXMgcmV0dXJuZWQuDQorICAgKg0KKyAgICovDQorICBGVF9FWFBPUlQoIEZUX0ludCApDQorICBGVF9HZXRfQ2hhcm1hcF9JbmRleCggRlRfQ2hhck1hcCAgY2hhcm1hcCApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfR2V0X0NoYXJfSW5kZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgUmV0dXJuIHRoZSBnbHlwaCBpbmRleCBvZiBhIGdpdmVuIGNoYXJhY3RlciBjb2RlLiAgVGhpcyBmdW5jdGlvbiAgICovDQorICAvKiAgICB1c2VzIGEgY2hhcm1hcCBvYmplY3QgdG8gZG8gdGhlIG1hcHBpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlICAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgY2hhcmNvZGUgOjogVGhlIGNoYXJhY3RlciBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIGdseXBoIGluZGV4LiAgMH5tZWFucyBgdW5kZWZpbmVkIGNoYXJhY3RlciBjb2RlJy4gICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgSWYgeW91IHVzZSBGcmVlVHlwZSB0byBtYW5pcHVsYXRlIHRoZSBjb250ZW50cyBvZiBmb250IGZpbGVzICAgICAgICovDQorICAvKiAgICBkaXJlY3RseSwgYmUgYXdhcmUgdGhhdCB0aGUgZ2x5cGggaW5kZXggcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiAgKi8NCisgIC8qICAgIGRvZXNuJ3QgYWx3YXlzIGNvcnJlc3BvbmQgdG8gdGhlIGludGVybmFsIGluZGljZXMgdXNlZCB3aXRoaW4gdGhlICAqLw0KKyAgLyogICAgZmlsZS4gIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgdGhhdCB2YWx1ZX4wIGFsd2F5cyBjb3JyZXNwb25kcyB0byAgICovDQorICAvKiAgICB0aGUgYG1pc3NpbmcgZ2x5cGgnLiAgSWYgdGhlIGZpcnN0IGdseXBoIGlzIG5vdCBuYW1lZCBgLm5vdGRlZicsICAgKi8NCisgIC8qICAgIHRoZW4gZm9yIFR5cGV+MSBhbmQgVHlwZX40MiBmb250cywgYC5ub3RkZWYnIHdpbGwgYmUgbW92ZWQgaW50byAgICAqLw0KKyAgLyogICAgdGhlIGdseXBoIElEfjAgcG9zaXRpb24sIGFuZCB3aGF0ZXZlciB3YXMgdGhlcmUgd2lsbCBiZSBtb3ZlZCB0byAgICovDQorICAvKiAgICB0aGUgcG9zaXRpb24gYC5ub3RkZWYnIGhhZC4gIEZvciBUeXBlfjEgZm9udHMsIGlmIHRoZXJlIGlzIG5vICAgICAgKi8NCisgIC8qICAgIGAubm90ZGVmJyBnbHlwaCBhdCBhbGwsIHRoZW4gb25lIHdpbGwgYmUgY3JlYXRlZCBhdCBpbmRleH4wIGFuZCAgICAqLw0KKyAgLyogICAgd2hhdGV2ZXIgd2FzIHRoZXJlIHdpbGwgYmUgbW92ZWQgdG8gdGhlIGxhc3QgaW5kZXggLS0gVHlwZX40MiAgICAgICovDQorICAvKiAgICBmb250cyBhcmUgY29uc2lkZXJlZCBpbnZhbGlkIHVuZGVyIHRoaXMgY29uZGl0aW9uLiAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9VSW50ICkNCisgIEZUX0dldF9DaGFyX0luZGV4KCBGVF9GYWNlICAgZmFjZSwNCisgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgY2hhcmNvZGUgKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0dldF9GaXJzdF9DaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4gdGhlIGZpcnN0IGNoYXJhY3RlciBjb2RlIGluIHRoZSAgICAqLw0KKyAgLyogICAgY3VycmVudCBjaGFybWFwIG9mIGEgZ2l2ZW4gZmFjZS4gIEl0IGFsc28gcmV0dXJucyB0aGUgICAgICAgICAgICAgICovDQorICAvKiAgICBjb3JyZXNwb25kaW5nIGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBhZ2luZGV4IDo6IEdseXBoIGluZGV4IG9mIGZpcnN0IGNoYXJhY3RlciBjb2RlLiAgMH5pZiBjaGFybWFwIGlzICAgKi8NCisgIC8qICAgICAgICAgICAgICAgZW1wdHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBjaGFybWFwJ3MgZmlyc3QgY2hhcmFjdGVyIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFlvdSBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb24gd2l0aCBARlRfR2V0X05leHRfQ2hhciB0byBiZSBhYmxlIHRvICAqLw0KKyAgLyogICAgcGFyc2UgYWxsIGNoYXJhY3RlciBjb2RlcyBhdmFpbGFibGUgaW4gYSBnaXZlbiBjaGFybWFwLiAgVGhlIGNvZGUgICovDQorICAvKiAgICBzaG91bGQgbG9vayBsaWtlIHRoaXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEZUX1VMb25nICBjaGFyY29kZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgRlRfVUludCAgIGdpbmRleDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgY2hhcmNvZGUgPSBGVF9HZXRfRmlyc3RfQ2hhciggZmFjZSwgJmdpbmRleCApOyAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICB3aGlsZSAoIGdpbmRleCAhPSAwICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAuLi4gZG8gc29tZXRoaW5nIHdpdGggKGNoYXJjb2RlLGdpbmRleCkgcGFpciAuLi4gICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgY2hhcmNvZGUgPSBGVF9HZXRfTmV4dF9DaGFyKCBmYWNlLCBjaGFyY29kZSwgJmdpbmRleCApOyAgICAgICAgKi8NCisgIC8qICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIE5vdGUgdGhhdCBgKmFnaW5kZXgnIGlzIHNldCB0b34wIGlmIHRoZSBjaGFybWFwIGlzIGVtcHR5LiAgVGhlICAgICAqLw0KKyAgLyogICAgcmVzdWx0IGl0c2VsZiBjYW4gYmV+MCBpbiB0d28gY2FzZXM6IGlmIHRoZSBjaGFybWFwIGlzIGVtcHR5IG9yICAgICovDQorICAvKiAgICBpZiB0aGUgdmFsdWV+MCBpcyB0aGUgZmlyc3QgdmFsaWQgY2hhcmFjdGVyIGNvZGUuICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9VTG9uZyApDQorICBGVF9HZXRfRmlyc3RfQ2hhciggRlRfRmFjZSAgIGZhY2UsDQorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgKmFnaW5kZXggKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0dldF9OZXh0X0NoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4gdGhlIG5leHQgY2hhcmFjdGVyIGNvZGUgaW4gdGhlICAgICAqLw0KKyAgLyogICAgY3VycmVudCBjaGFybWFwIG9mIGEgZ2l2ZW4gZmFjZSBmb2xsb3dpbmcgdGhlIHZhbHVlIGBjaGFyX2NvZGUnLCAgICovDQorICAvKiAgICBhcyB3ZWxsIGFzIHRoZSBjb3JyZXNwb25kaW5nIGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGNoYXJfY29kZSA6OiBUaGUgc3RhcnRpbmcgY2hhcmFjdGVyIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGFnaW5kZXggICA6OiBHbHlwaCBpbmRleCBvZiBuZXh0IGNoYXJhY3RlciBjb2RlLiAgMH5pZiBjaGFybWFwICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgIGlzIGVtcHR5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIGNoYXJtYXAncyBuZXh0IGNoYXJhY3RlciBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgWW91IHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbiB3aXRoIEBGVF9HZXRfRmlyc3RfQ2hhciB0byB3YWxrICAgICAgICovDQorICAvKiAgICBvdmVyIGFsbCBjaGFyYWN0ZXIgY29kZXMgYXZhaWxhYmxlIGluIGEgZ2l2ZW4gY2hhcm1hcC4gIFNlZSB0aGUgICAgKi8NCisgIC8qICAgIG5vdGUgZm9yIHRoaXMgZnVuY3Rpb24gZm9yIGEgc2ltcGxlIGNvZGUgZXhhbXBsZS4gICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBOb3RlIHRoYXQgYCphZ2luZGV4JyBpcyBzZXQgdG9+MCB3aGVuIHRoZXJlIGFyZSBubyBtb3JlIGNvZGVzIGluICAgKi8NCisgIC8qICAgIHRoZSBjaGFybWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX1VMb25nICkNCisgIEZUX0dldF9OZXh0X0NoYXIoIEZUX0ZhY2UgICAgZmFjZSwNCisgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgY2hhcl9jb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICphZ2luZGV4ICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9HZXRfTmFtZV9JbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBSZXR1cm4gdGhlIGdseXBoIGluZGV4IG9mIGEgZ2l2ZW4gZ2x5cGggbmFtZS4gIFRoaXMgZnVuY3Rpb24gdXNlcyAgKi8NCisgIC8qICAgIGRyaXZlciBzcGVjaWZpYyBvYmplY3RzIHRvIGRvIHRoZSB0cmFuc2xhdGlvbi4gICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBnbHlwaF9uYW1lIDo6IFRoZSBnbHlwaCBuYW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgZ2x5cGggaW5kZXguICAwfm1lYW5zIGB1bmRlZmluZWQgY2hhcmFjdGVyIGNvZGUnLiAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9VSW50ICkNCisgIEZUX0dldF9OYW1lX0luZGV4KCBGVF9GYWNlICAgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmluZyogIGdseXBoX25hbWUgKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAgKg0KKyAgICogQG1hY3JvOg0KKyAgICogICBGVF9TVUJHTFlQSF9GTEFHX1hYWA0KKyAgICoNCisgICAqIEBkZXNjcmlwdGlvbjoNCisgICAqICAgQSBsaXN0IG9mIGNvbnN0YW50cyB1c2VkIHRvIGRlc2NyaWJlIHN1YmdseXBocy4gIFBsZWFzZSByZWZlciB0byB0aGUNCisgICAqICAgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgZmxhZ3MuDQorICAgKg0KKyAgICogQHZhbHVlczoNCisgICAqICAgRlRfU1VCR0xZUEhfRkxBR19BUkdTX0FSRV9XT1JEUyA6Og0KKyAgICogICBGVF9TVUJHTFlQSF9GTEFHX0FSR1NfQVJFX1hZX1ZBTFVFUyA6Og0KKyAgICogICBGVF9TVUJHTFlQSF9GTEFHX1JPVU5EX1hZX1RPX0dSSUQgOjoNCisgICAqICAgRlRfU1VCR0xZUEhfRkxBR19TQ0FMRSA6Og0KKyAgICogICBGVF9TVUJHTFlQSF9GTEFHX1hZX1NDQUxFIDo6DQorICAgKiAgIEZUX1NVQkdMWVBIX0ZMQUdfMlgyIDo6DQorICAgKiAgIEZUX1NVQkdMWVBIX0ZMQUdfVVNFX01ZX01FVFJJQ1MgOjoNCisgICAqDQorICAgKi8NCisjZGVmaW5lIEZUX1NVQkdMWVBIX0ZMQUdfQVJHU19BUkVfV09SRFMgICAgICAgICAgMQ0KKyNkZWZpbmUgRlRfU1VCR0xZUEhfRkxBR19BUkdTX0FSRV9YWV9WQUxVRVMgICAgICAyDQorI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHX1JPVU5EX1hZX1RPX0dSSUQgICAgICAgIDQNCisjZGVmaW5lIEZUX1NVQkdMWVBIX0ZMQUdfU0NBTEUgICAgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgRlRfU1VCR0xZUEhfRkxBR19YWV9TQ0FMRSAgICAgICAgICAgICAweDQwDQorI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHXzJYMiAgICAgICAgICAgICAgICAgIDB4ODANCisjZGVmaW5lIEZUX1NVQkdMWVBIX0ZMQUdfVVNFX01ZX01FVFJJQ1MgICAgICAweDIwMA0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICAqDQorICAgKiBAZnVuYzoNCisgICAqICAgRlRfR2V0X1N1YkdseXBoX0luZm8NCisgICAqDQorICAgKiBAZGVzY3JpcHRpb246DQorICAgKiAgIFJldHJpZXZlIGEgZGVzY3JpcHRpb24gb2YgYSBnaXZlbiBzdWJnbHlwaC4gIE9ubHkgdXNlIGl0IGlmDQorICAgKiAgIGBnbHlwaC0+Zm9ybWF0JyBpcyBARlRfR0xZUEhfRk9STUFUX0NPTVBPU0lURTsgYW4gZXJyb3IgaXMNCisgICAqICAgcmV0dXJuZWQgb3RoZXJ3aXNlLg0KKyAgICoNCisgICAqIEBpbnB1dDoNCisgICAqICAgZ2x5cGggOjoNCisgICAqICAgICBUaGUgc291cmNlIGdseXBoIHNsb3QuDQorICAgKg0KKyAgICogICBzdWJfaW5kZXggOjoNCisgICAqICAgICBUaGUgaW5kZXggb2YgdGhlIHN1YmdseXBoLiAgTXVzdCBiZSBsZXNzIHRoYW4NCisgICAqICAgICBgZ2x5cGgtPm51bV9zdWJnbHlwaHMnLg0KKyAgICoNCisgICAqIEBvdXRwdXQ6DQorICAgKiAgIHBfaW5kZXggOjoNCisgICAqICAgICBUaGUgZ2x5cGggaW5kZXggb2YgdGhlIHN1YmdseXBoLg0KKyAgICoNCisgICAqICAgcF9mbGFncyA6Og0KKyAgICogICAgIFRoZSBzdWJnbHlwaCBmbGFncywgc2VlIEBGVF9TVUJHTFlQSF9GTEFHX1hYWC4NCisgICAqDQorICAgKiAgIHBfYXJnMSA6Og0KKyAgICogICAgIFRoZSBzdWJnbHlwaCdzIGZpcnN0IGFyZ3VtZW50IChpZiBhbnkpLg0KKyAgICoNCisgICAqICAgcF9hcmcyIDo6DQorICAgKiAgICAgVGhlIHN1YmdseXBoJ3Mgc2Vjb25kIGFyZ3VtZW50IChpZiBhbnkpLg0KKyAgICoNCisgICAqICAgcF90cmFuc2Zvcm0gOjoNCisgICAqICAgICBUaGUgc3ViZ2x5cGggdHJhbnNmb3JtYXRpb24gKGlmIGFueSkuDQorICAgKg0KKyAgICogQHJldHVybjoNCisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4NCisgICAqDQorICAgKiBAbm90ZToNCisgICAqICAgVGhlIHZhbHVlcyBvZiBgKnBfYXJnMScsIGAqcF9hcmcyJywgYW5kIGAqcF90cmFuc2Zvcm0nIG11c3QgYmUNCisgICAqICAgaW50ZXJwcmV0ZWQgZGVwZW5kaW5nIG9uIHRoZSBmbGFncyByZXR1cm5lZCBpbiBgKnBfZmxhZ3MnLiAgU2VlIHRoZQ0KKyAgICogICBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLg0KKyAgICoNCisgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApDQorICBGVF9HZXRfU3ViR2x5cGhfSW5mbyggRlRfR2x5cGhTbG90ICBnbHlwaCwNCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIHN1Yl9pbmRleCwNCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgKnBfaW5kZXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICpwX2ZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAqcF9hcmcxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAqcF9hcmcyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX01hdHJpeCAgICAqcF90cmFuc2Zvcm0gKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZTVFlQRV9YWFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgbGlzdCBvZiBiaXQgZmxhZ3MgdXNlZCBpbiB0aGUgYGZzVHlwZScgZmllbGQgb2YgdGhlIE9TLzIgdGFibGUgICAqLw0KKyAgLyogICAgaW4gYSBUcnVlVHlwZSBvciBPcGVuVHlwZSBmb250IGFuZCB0aGUgYEZTVHlwZScgZW50cnkgaW4gYSAgICAgICAgICovDQorICAvKiAgICBQb3N0U2NyaXB0IGZvbnQuICBUaGVzZSBiaXQgZmxhZ3MgYXJlIHJldHVybmVkIGJ5ICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEBGVF9HZXRfRlNUeXBlX0ZsYWdzOyB0aGV5IGluZm9ybSBjbGllbnQgYXBwbGljYXRpb25zIG9mIGVtYmVkZGluZyAqLw0KKyAgLyogICAgYW5kIHN1YnNldHRpbmcgcmVzdHJpY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIGZvbnQuICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFNlZSBodHRwOi8vd3d3LmFkb2JlLmNvbS9kZXZuZXQvYWNyb2JhdC9wZGZzL0ZvbnRQb2xpY2llcy5wZGYgZm9yICAqLw0KKyAgLyogICAgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRlNUWVBFX0lOU1RBTExBQkxFX0VNQkVERElORyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEZvbnRzIHdpdGggbm8gZnNUeXBlIGJpdCBzZXQgbWF5IGJlIGVtYmVkZGVkIGFuZCBwZXJtYW5lbnRseSAgICAgKi8NCisgIC8qICAgICAgaW5zdGFsbGVkIG9uIHRoZSByZW1vdGUgc3lzdGVtIGJ5IGFuIGFwcGxpY2F0aW9uLiAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GU1RZUEVfUkVTVFJJQ1RFRF9MSUNFTlNFX0VNQkVERElORyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgRm9udHMgdGhhdCBoYXZlIG9ubHkgdGhpcyBiaXQgc2V0IG11c3Qgbm90IGJlIG1vZGlmaWVkLCBlbWJlZGRlZCAqLw0KKyAgLyogICAgICBvciBleGNoYW5nZWQgaW4gYW55IG1hbm5lciB3aXRob3V0IGZpcnN0IG9idGFpbmluZyBwZXJtaXNzaW9uIG9mICovDQorICAvKiAgICAgIHRoZSBmb250IHNvZnR3YXJlIGNvcHlyaWdodCBvd25lci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRlNUWVBFX1BSRVZJRVdfQU5EX1BSSU5UX0VNQkVERElORyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIElmIHRoaXMgYml0IGlzIHNldCwgdGhlIGZvbnQgbWF5IGJlIGVtYmVkZGVkIGFuZCB0ZW1wb3JhcmlseSAgICAgKi8NCisgIC8qICAgICAgbG9hZGVkIG9uIHRoZSByZW1vdGUgc3lzdGVtLiAgRG9jdW1lbnRzIGNvbnRhaW5pbmcgUHJldmlldyAmICAgICAqLw0KKyAgLyogICAgICBQcmludCBmb250cyBtdXN0IGJlIG9wZW5lZCBgcmVhZC1vbmx5Jzsgbm8gZWRpdHMgY2FuIGJlIGFwcGxpZWQgICovDQorICAvKiAgICAgIHRvIHRoZSBkb2N1bWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRlNUWVBFX0VESVRBQkxFX0VNQkVERElORyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIElmIHRoaXMgYml0IGlzIHNldCwgdGhlIGZvbnQgbWF5IGJlIGVtYmVkZGVkIGJ1dCBtdXN0IG9ubHkgYmUgICAgKi8NCisgIC8qICAgICAgaW5zdGFsbGVkIHRlbXBvcmFyaWx5IG9uIG90aGVyIHN5c3RlbXMuICBJbiBjb250cmFzdCB0byBQcmV2aWV3ICAqLw0KKyAgLyogICAgICAmIFByaW50IGZvbnRzLCBkb2N1bWVudHMgY29udGFpbmluZyBlZGl0YWJsZSBmb250cyBtYXkgYmUgb3BlbmVkICovDQorICAvKiAgICAgIGZvciByZWFkaW5nLCBlZGl0aW5nIGlzIHBlcm1pdHRlZCwgYW5kIGNoYW5nZXMgbWF5IGJlIHNhdmVkLiAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRlNUWVBFX05PX1NVQlNFVFRJTkcgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIElmIHRoaXMgYml0IGlzIHNldCwgdGhlIGZvbnQgbWF5IG5vdCBiZSBzdWJzZXR0ZWQgcHJpb3IgdG8gICAgICAgKi8NCisgIC8qICAgICAgZW1iZWRkaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GU1RZUEVfQklUTUFQX0VNQkVERElOR19PTkxZIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgSWYgdGhpcyBiaXQgaXMgc2V0LCBvbmx5IGJpdG1hcHMgY29udGFpbmVkIGluIHRoZSBmb250IG1heSBiZSAgICAqLw0KKyAgLyogICAgICBlbWJlZGRlZDsgbm8gb3V0bGluZSBkYXRhIG1heSBiZSBlbWJlZGRlZC4gIElmIHRoZXJlIGFyZSBubyAgICAgICovDQorICAvKiAgICAgIGJpdG1hcHMgYXZhaWxhYmxlIGluIHRoZSBmb250LCB0aGVuIHRoZSBmb250IGlzIHVuZW1iZWRkYWJsZS4gICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBXaGlsZSB0aGUgZnNUeXBlIGZsYWdzIGNhbiBpbmRpY2F0ZSB0aGF0IGEgZm9udCBtYXkgYmUgZW1iZWRkZWQsIGEgKi8NCisgIC8qICAgIGxpY2Vuc2Ugd2l0aCB0aGUgZm9udCB2ZW5kb3IgbWF5IGJlIHNlcGFyYXRlbHkgcmVxdWlyZWQgdG8gdXNlIHRoZSAqLw0KKyAgLyogICAgZm9udCBpbiB0aGlzIHdheS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIEZUX0ZTVFlQRV9JTlNUQUxMQUJMRV9FTUJFRERJTkcgICAgICAgICAweDAwMDANCisjZGVmaW5lIEZUX0ZTVFlQRV9SRVNUUklDVEVEX0xJQ0VOU0VfRU1CRURESU5HICAweDAwMDINCisjZGVmaW5lIEZUX0ZTVFlQRV9QUkVWSUVXX0FORF9QUklOVF9FTUJFRERJTkcgICAweDAwMDQNCisjZGVmaW5lIEZUX0ZTVFlQRV9FRElUQUJMRV9FTUJFRERJTkcgICAgICAgICAgICAweDAwMDgNCisjZGVmaW5lIEZUX0ZTVFlQRV9OT19TVUJTRVRUSU5HICAgICAgICAgICAgICAgICAweDAxMDANCisjZGVmaW5lIEZUX0ZTVFlQRV9CSVRNQVBfRU1CRURESU5HX09OTFkgICAgICAgICAweDAyMDANCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0dldF9GU1R5cGVfRmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFJldHVybiB0aGUgZnNUeXBlIGZsYWdzIGZvciBhIGZvbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBmc1R5cGUgZmxhZ3MsIEBGVF9GU1RZUEVfWFhYLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFVzZSB0aGlzIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdGx5IHJlYWRpbmcgdGhlIGBmc190eXBlJyBmaWVsZCAqLw0KKyAgLyogICAgaW4gdGhlIEBQU19Gb250SW5mb1JlYyBzdHJ1Y3R1cmUgd2hpY2ggaXMgb25seSBndWFyYW50ZWVkIHRvICAgICAgICovDQorICAvKiAgICByZXR1cm4gdGhlIGNvcnJlY3QgcmVzdWx0cyBmb3IgVHlwZX4xIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFNpbmNlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAyLjMuOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9VU2hvcnQgKQ0KKyAgRlRfR2V0X0ZTVHlwZV9GbGFncyggRlRfRmFjZSAgZmFjZSApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZ2x5cGhfdmFyaWFudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgR2x5cGggVmFyaWFudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIEZyZWVUeXBlfjIgaW50ZXJmYWNlIHRvIFVuaWNvZGUgSWRlb2dyYXBoaWMgVmFyaWF0aW9uICAgICAgICAgICovDQorICAvKiAgICBTZXF1ZW5jZXMgKElWUyksIHVzaW5nIHRoZSBTRk5UIGNtYXAgZm9ybWF0fjE0LiAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBNYW55IENKSyBjaGFyYWN0ZXJzIGhhdmUgdmFyaWFudCBmb3Jtcy4gIFRoZXkgYXJlIGEgc29ydCBvZiBncmV5ICAgKi8NCisgIC8qICAgIGFyZWEgc29tZXdoZXJlIGJldHdlZW4gYmVpbmcgdG90YWxseSBpcnJlbGV2YW50IGFuZCBzZW1hbnRpY2FsbHkgICAqLw0KKyAgLyogICAgZGlzdGluY3Q7IGZvciB0aGlzIHJlYXNvbiwgdGhlIFVuaWNvZGUgY29uc29ydGl1bSBkZWNpZGVkIHRvICAgICAgICovDQorICAvKiAgICBpbnRyb2R1Y2UgSWRlb2dyYXBoaWMgVmFyaWF0aW9uIFNlcXVlbmNlcyAoSVZTKSwgY29uc2lzdGluZyBvZiBhICAgKi8NCisgIC8qICAgIFVuaWNvZGUgYmFzZSBjaGFyYWN0ZXIgYW5kIG9uZSBvZiAyNDAgdmFyaWFudCBzZWxlY3RvcnMgICAgICAgICAgICAqLw0KKyAgLyogICAgKFUrRTAxMDAtVStFMDFFRiksIGluc3RlYWQgb2YgZnVydGhlciBleHRlbmRpbmcgdGhlIGFscmVhZHkgaHVnZSAgICovDQorICAvKiAgICBjb2RlIHJhbmdlIGZvciBDSksgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQW4gSVZTIGlzIHJlZ2lzdGVyZWQgYW5kIHVuaXF1ZTsgZm9yIGZ1cnRoZXIgZGV0YWlscyBwbGVhc2UgcmVmZXIgICovDQorICAvKiAgICB0byBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzcsIHRoZSBJZGVvZ3JhcGhpYyBWYXJpYXRpb24gICAgICAgKi8NCisgIC8qICAgIERhdGFiYXNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM3LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVG8gZGF0ZSAoTm92ZW1iZXIgMjAxMiksIHRoZSBjaGFyYWN0ZXIgd2l0aCB0aGUgbW9zdCB2YXJpYW50cyBpcyAgICovDQorICAvKiAgICBVKzkwODksIGhhdmluZyAzMSBzdWNoIElWUy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQWRvYmUgYW5kIE1TIGRlY2lkZWQgdG8gc3VwcG9ydCBJVlMgd2l0aCBhIG5ldyBjbWFwIHN1YnRhYmxlICAgICAgICovDQorICAvKiAgICAoZm9ybWF0fjE0KS4gIEl0IGlzIGFuIG9kZCBzdWJ0YWJsZSBiZWNhdXNlIGl0IGlzIG5vdCBhIG1hcHBpbmcgb2YgKi8NCisgIC8qICAgIGlucHV0IGNvZGUgcG9pbnRzIHRvIGdseXBocywgYnV0IGNvbnRhaW5zIGxpc3RzIG9mIGFsbCB2YXJpYW50cyAgICAqLw0KKyAgLyogICAgc3VwcG9ydGVkIGJ5IHRoZSBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgdmFyaWFudCBtYXkgYmUgZWl0aGVyIGBkZWZhdWx0JyBvciBgbm9uLWRlZmF1bHQnLiAgQSBkZWZhdWx0ICAgICAqLw0KKyAgLyogICAgdmFyaWFudCBpcyB0aGUgb25lIHlvdSB3aWxsIGdldCBmb3IgdGhhdCBjb2RlIHBvaW50IGlmIHlvdSBsb29rIGl0ICovDQorICAvKiAgICB1cCBpbiB0aGUgc3RhbmRhcmQgVW5pY29kZSBjbWFwLiAgQSBub24tZGVmYXVsdCB2YXJpYW50IGlzIGEgICAgICAgKi8NCisgIC8qICAgIGRpZmZlcmVudCBnbHlwaC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZhY2VfR2V0Q2hhclZhcmlhbnRJbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFJldHVybiB0aGUgZ2x5cGggaW5kZXggb2YgYSBnaXZlbiBjaGFyYWN0ZXIgY29kZSBhcyBtb2RpZmllZCBieSAgICAqLw0KKyAgLyogICAgdGhlIHZhcmlhdGlvbiBzZWxlY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgY2hhcmNvZGUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRoZSBjaGFyYWN0ZXIgY29kZSBwb2ludCBpbiBVbmljb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgdmFyaWFudFNlbGVjdG9yIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRoZSBVbmljb2RlIGNvZGUgcG9pbnQgb2YgdGhlIHZhcmlhdGlvbiBzZWxlY3Rvci4gICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgZ2x5cGggaW5kZXguICAwfm1lYW5zIGVpdGhlciBgdW5kZWZpbmVkIGNoYXJhY3RlciBjb2RlJywgb3IgICAgKi8NCisgIC8qICAgIGB1bmRlZmluZWQgc2VsZWN0b3IgY29kZScsIG9yIGBubyB2YXJpYXRpb24gc2VsZWN0b3IgY21hcCAgICAgICAgICAqLw0KKyAgLyogICAgc3VidGFibGUnLCBvciBgY3VycmVudCBDaGFyTWFwIGlzIG5vdCBVbmljb2RlJy4gICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgSWYgeW91IHVzZSBGcmVlVHlwZSB0byBtYW5pcHVsYXRlIHRoZSBjb250ZW50cyBvZiBmb250IGZpbGVzICAgICAgICovDQorICAvKiAgICBkaXJlY3RseSwgYmUgYXdhcmUgdGhhdCB0aGUgZ2x5cGggaW5kZXggcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiAgKi8NCisgIC8qICAgIGRvZXNuJ3QgYWx3YXlzIGNvcnJlc3BvbmQgdG8gdGhlIGludGVybmFsIGluZGljZXMgdXNlZCB3aXRoaW4gICAgICAqLw0KKyAgLyogICAgdGhlIGZpbGUuICBUaGlzIGlzIGRvbmUgdG8gZW5zdXJlIHRoYXQgdmFsdWV+MCBhbHdheXMgY29ycmVzcG9uZHMgICovDQorICAvKiAgICB0byB0aGUgYG1pc3NpbmcgZ2x5cGgnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IG1lYW5pbmdmdWwgaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIGEpIHRoZSBmb250IGhhcyBhIHZhcmlhdGlvbiBzZWxlY3RvciBjbWFwIHN1YiB0YWJsZSwgICAgICAgICAgICAgKi8NCisgIC8qICAgIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBiKSB0aGUgY3VycmVudCBjaGFybWFwIGhhcyBhIFVuaWNvZGUgZW5jb2RpbmcuICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxTaW5jZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgMi4zLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfVUludCApDQorICBGVF9GYWNlX0dldENoYXJWYXJpYW50SW5kZXgoIEZUX0ZhY2UgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgY2hhcmNvZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICB2YXJpYW50U2VsZWN0b3IgKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZhY2VfR2V0Q2hhclZhcmlhbnRJc0RlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIENoZWNrIHdoZXRoZXIgdGhpcyB2YXJpYW50IG9mIHRoaXMgVW5pY29kZSBjaGFyYWN0ZXIgaXMgdGhlIG9uZSB0byAqLw0KKyAgLyogICAgYmUgZm91bmQgaW4gdGhlIGBjbWFwJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgY2hhcmNvZGUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRoZSBjaGFyYWN0ZXIgY29kZXBvaW50IGluIFVuaWNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgdmFyaWFudFNlbGVjdG9yIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgIFRoZSBVbmljb2RlIGNvZGVwb2ludCBvZiB0aGUgdmFyaWF0aW9uIHNlbGVjdG9yLiAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAxfmlmIGZvdW5kIGluIHRoZSBzdGFuZGFyZCAoVW5pY29kZSkgY21hcCwgMH5pZiBmb3VuZCBpbiB0aGUgICAgICAgKi8NCisgIC8qICAgIHZhcmlhdGlvbiBzZWxlY3RvciBjbWFwLCBvciAtMSBpZiBpdCBpcyBub3QgYSB2YXJpYW50LiAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgb25seSBtZWFuaW5nZnVsIGlmIHRoZSBmb250IGhhcyBhIHZhcmlhdGlvbiAgICAgICAqLw0KKyAgLyogICAgc2VsZWN0b3IgY21hcCBzdWJ0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxTaW5jZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgMi4zLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfSW50ICkNCisgIEZUX0ZhY2VfR2V0Q2hhclZhcmlhbnRJc0RlZmF1bHQoIEZUX0ZhY2UgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIGNoYXJjb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHZhcmlhbnRTZWxlY3RvciApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRmFjZV9HZXRWYXJpYW50U2VsZWN0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgUmV0dXJuIGEgemVyby10ZXJtaW5hdGVkIGxpc3Qgb2YgVW5pY29kZSB2YXJpYW50IHNlbGVjdG9ycyBmb3VuZCAgICovDQorICAvKiAgICBpbiB0aGUgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBmYWNlIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBzZWxlY3RvciBjb2RlIHBvaW50cywgb3IgTlVMTCBpZiB0aGVyZSBpcyAqLw0KKyAgLyogICAgbm8gdmFsaWQgdmFyaWFudCBzZWxlY3RvciBjbWFwIHN1YnRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhlIGxhc3QgaXRlbSBpbiB0aGUgYXJyYXkgaXN+MDsgdGhlIGFycmF5IGlzIG93bmVkIGJ5IHRoZSAgICAgICAgICovDQorICAvKiAgICBARlRfRmFjZSBvYmplY3QgYnV0IGNhbiBiZSBvdmVyd3JpdHRlbiBvciByZWxlYXNlZCBvbiB0aGUgbmV4dCAgICAgKi8NCisgIC8qICAgIGNhbGwgdG8gYSBGcmVlVHlwZSBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8U2luY2U+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIDIuMy42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX1VJbnQzMiogKQ0KKyAgRlRfRmFjZV9HZXRWYXJpYW50U2VsZWN0b3JzKCBGVF9GYWNlICBmYWNlICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GYWNlX0dldFZhcmlhbnRzT2ZDaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBSZXR1cm4gYSB6ZXJvLXRlcm1pbmF0ZWQgbGlzdCBvZiBVbmljb2RlIHZhcmlhbnQgc2VsZWN0b3JzIGZvdW5kICAgKi8NCisgIC8qICAgIGZvciB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGNoYXJjb2RlIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBUaGUgY2hhcmFjdGVyIGNvZGVwb2ludCBpbiBVbmljb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIHZhcmlhbnQgc2VsZWN0b3IgY29kZSBwb2ludHMgd2hpY2ggYXJlICAgICovDQorICAvKiAgICBhY3RpdmUgZm9yIHRoZSBnaXZlbiBjaGFyYWN0ZXIsIG9yIE5VTEwgaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGlzdCAgKi8NCisgIC8qICAgIGlzIGVtcHR5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBsYXN0IGl0ZW0gaW4gdGhlIGFycmF5IGlzfjA7IHRoZSBhcnJheSBpcyBvd25lZCBieSB0aGUgICAgICAgICAqLw0KKyAgLyogICAgQEZUX0ZhY2Ugb2JqZWN0IGJ1dCBjYW4gYmUgb3ZlcndyaXR0ZW4gb3IgcmVsZWFzZWQgb24gdGhlIG5leHQgICAgICovDQorICAvKiAgICBjYWxsIHRvIGEgRnJlZVR5cGUgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFNpbmNlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAyLjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9VSW50MzIqICkNCisgIEZUX0ZhY2VfR2V0VmFyaWFudHNPZkNoYXIoIEZUX0ZhY2UgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIGNoYXJjb2RlICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GYWNlX0dldENoYXJzT2ZWYXJpYW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBSZXR1cm4gYSB6ZXJvLXRlcm1pbmF0ZWQgbGlzdCBvZiBVbmljb2RlIGNoYXJhY3RlciBjb2RlcyBmb3VuZCBmb3IgKi8NCisgIC8qICAgIHRoZSBzcGVjaWZpZWQgdmFyaWFudCBzZWxlY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHZhcmlhbnRTZWxlY3RvciA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICBUaGUgdmFyaWFudCBzZWxlY3RvciBjb2RlIHBvaW50IGluIFVuaWNvZGUuICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSBsaXN0IG9mIGFsbCB0aGUgY29kZSBwb2ludHMgd2hpY2ggYXJlIHNwZWNpZmllZCBieSB0aGlzIHNlbGVjdG9yICovDQorICAvKiAgICAoYm90aCBkZWZhdWx0IGFuZCBub24tZGVmYXVsdCBjb2RlcyBhcmUgcmV0dXJuZWQpIG9yIE5VTEwgaWYgdGhlcmUgKi8NCisgIC8qICAgIGlzIG5vIHZhbGlkIGNtYXAgb3IgdGhlIHZhcmlhbnQgc2VsZWN0b3IgaXMgaW52YWxpZC4gICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBsYXN0IGl0ZW0gaW4gdGhlIGFycmF5IGlzfjA7IHRoZSBhcnJheSBpcyBvd25lZCBieSB0aGUgICAgICAgICAqLw0KKyAgLyogICAgQEZUX0ZhY2Ugb2JqZWN0IGJ1dCBjYW4gYmUgb3ZlcndyaXR0ZW4gb3IgcmVsZWFzZWQgb24gdGhlIG5leHQgICAgICovDQorICAvKiAgICBjYWxsIHRvIGEgRnJlZVR5cGUgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFNpbmNlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAyLjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9VSW50MzIqICkNCisgIEZUX0ZhY2VfR2V0Q2hhcnNPZlZhcmlhbnQoIEZUX0ZhY2UgICBmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHZhcmlhbnRTZWxlY3RvciApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgY29tcHV0YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQ29tcHV0YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQ3J1bmNoaW5nIGZpeGVkIG51bWJlcnMgYW5kIHZlY3RvcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHZhcmlvdXMgZnVuY3Rpb25zIHVzZWQgdG8gcGVyZm9ybSAgICAgICAgICAgICovDQorICAvKiAgICBjb21wdXRhdGlvbnMgb24gMTYuMTYgZml4ZWQtZmxvYXQgbnVtYmVycyBvciAyZCB2ZWN0b3JzLiAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE9yZGVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9NdWxEaXYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX011bEZpeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRGl2Rml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9Sb3VuZEZpeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0NlaWxGaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRmxvb3JGaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9WZWN0b3JfVHJhbnNmb3JtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX01hdHJpeF9NdWx0aXBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTWF0cml4X0ludmVydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfTXVsRGl2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSB2ZXJ5IHNpbXBsZSBmdW5jdGlvbiB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvbXB1dGF0aW9uIGAoYSpiKS9jJyAgICovDQorICAvKiAgICB3aXRoIG1heGltdW0gYWNjdXJhY3kgKGl0IHVzZXMgYSA2NC1iaXQgaW50ZXJtZWRpYXRlIGludGVnZXIgICAgICAgKi8NCisgIC8qICAgIHdoZW5ldmVyIG5lY2Vzc2FyeSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGlzIGZ1bmN0aW9uIGlzbid0IG5lY2Vzc2FyaWx5IGFzIGZhc3QgYXMgc29tZSBwcm9jZXNzb3Igc3BlY2lmaWMgKi8NCisgIC8qICAgIG9wZXJhdGlvbnMsIGJ1dCBpcyBhdCBsZWFzdCBjb21wbGV0ZWx5IHBvcnRhYmxlLiAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGEgOjogVGhlIGZpcnN0IG11bHRpcGxpZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYiA6OiBUaGUgc2Vjb25kIG11bHRpcGxpZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBjIDo6IFRoZSBkaXZpc29yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgcmVzdWx0IG9mIGAoYSpiKS9jJy4gIFRoaXMgZnVuY3Rpb24gbmV2ZXIgdHJhcHMgd2hlbiB0cnlpbmcgdG8gKi8NCisgIC8qICAgIGRpdmlkZSBieSB6ZXJvOyBpdCBzaW1wbHkgcmV0dXJucyBgTWF4SW50JyBvciBgTWluSW50JyBkZXBlbmRpbmcgICAqLw0KKyAgLyogICAgb24gdGhlIHNpZ25zIG9mIGBhJyBhbmQgYGInLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfTG9uZyApDQorICBGVF9NdWxEaXYoIEZUX0xvbmcgIGEsDQorICAgICAgICAgICAgIEZUX0xvbmcgIGIsDQorICAgICAgICAgICAgIEZUX0xvbmcgIGMgKTsNCisNCisNCisgIC8qICovDQorDQorICAvKiBUaGUgZm9sbG93aW5nICNpZiAwIC4uLiAjZW5kaWYgaXMgZm9yIHRoZSBkb2N1bWVudGF0aW9uIGZvcm1hdHRlciwgKi8NCisgIC8qIGhpZGluZyB0aGUgaW50ZXJuYWwgYEZUX01VTEZJWF9JTkxJTkVEJyBtYWNyby4gICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKyNpZiAwDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9NdWxGaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBBIHZlcnkgc2ltcGxlIGZ1bmN0aW9uIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29tcHV0YXRpb24gICAgICAgICAgICAgKi8NCisgIC8qICAgIGAoYSpiKS8weDEwMDAwJyB3aXRoIG1heGltdW0gYWNjdXJhY3kuICBNb3N0IG9mIHRoZSB0aW1lIHRoaXMgaXMgICAqLw0KKyAgLyogICAgdXNlZCB0byBtdWx0aXBseSBhIGdpdmVuIHZhbHVlIGJ5IGEgMTYuMTYgZml4ZWQtcG9pbnQgZmFjdG9yLiAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYSA6OiBUaGUgZmlyc3QgbXVsdGlwbGllci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBiIDo6IFRoZSBzZWNvbmQgbXVsdGlwbGllci4gIFVzZSBhIDE2LjE2IGZhY3RvciBoZXJlIHdoZW5ldmVyICAgICAgKi8NCisgIC8qICAgICAgICAgcG9zc2libGUgKHNlZSBub3RlIGJlbG93KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSByZXN1bHQgb2YgYChhKmIpLzB4MTAwMDAnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gb3B0aW1pemVkIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgYWJzb2x1dGUgICAqLw0KKyAgLyogICAgdmFsdWUgb2YgYGEnIGlzIGxlc3MgdGhhbiAyMDQ4LCBhbmQgYGInIGlzIGEgMTYuMTYgc2NhbGluZyBmYWN0b3IuICovDQorICAvKiAgICBBcyB0aGlzIGhhcHBlbnMgbWFpbmx5IHdoZW4gc2NhbGluZyBmcm9tIG5vdGlvbmFsIHVuaXRzIHRvICAgICAgICAgKi8NCisgIC8qICAgIGZyYWN0aW9uYWwgcGl4ZWxzIGluIEZyZWVUeXBlLCBpdCByZXN1bHRlZCBpbiBub3RpY2VhYmxlIHNwZWVkICAgICAqLw0KKyAgLyogICAgaW1wcm92ZW1lbnRzIGJldHdlZW4gdmVyc2lvbnMgMi54IGFuZCAxLnguICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEFzIGEgY29uY2x1c2lvbiwgYWx3YXlzIHRyeSB0byBwbGFjZSBhIDE2LjE2IGZhY3RvciBhcyB0aGUgICAgICAgICAqLw0KKyAgLyogICAgX3NlY29uZF8gYXJndW1lbnQgb2YgdGhpcyBmdW5jdGlvbjsgdGhpcyBjYW4gbWFrZSBhIGdyZWF0ICAgICAgICAgICovDQorICAvKiAgICBkaWZmZXJlbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9Mb25nICkNCisgIEZUX011bEZpeCggRlRfTG9uZyAgYSwNCisgICAgICAgICAgICAgRlRfTG9uZyAgYiApOw0KKw0KKyAgLyogKi8NCisjZW5kaWYNCisNCisjaWZkZWYgRlRfTVVMRklYX0lOTElORUQNCisjZGVmaW5lIEZQREZBUElfRlRfTXVsRml4KCBhLCBiICkgIEZUX01VTEZJWF9JTkxJTkVEKCBhLCBiICkNCisjZWxzZQ0KKyAgRlRfRVhQT1JUKCBGVF9Mb25nICkNCisgIEZUX011bEZpeCggRlRfTG9uZyAgYSwNCisgICAgICAgICAgICAgRlRfTG9uZyAgYiApOw0KKyNlbmRpZg0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRGl2Rml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSB2ZXJ5IHNpbXBsZSBmdW5jdGlvbiB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvbXB1dGF0aW9uICAgICAgICAgICAgICovDQorICAvKiAgICBgKGEqMHgxMDAwMCkvYicgd2l0aCBtYXhpbXVtIGFjY3VyYWN5LiAgTW9zdCBvZiB0aGUgdGltZSwgdGhpcyBpcyAgKi8NCisgIC8qICAgIHVzZWQgdG8gZGl2aWRlIGEgZ2l2ZW4gdmFsdWUgYnkgYSAxNi4xNiBmaXhlZC1wb2ludCBmYWN0b3IuICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGEgOjogVGhlIGZpcnN0IG11bHRpcGxpZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYiA6OiBUaGUgc2Vjb25kIG11bHRpcGxpZXIuICBVc2UgYSAxNi4xNiBmYWN0b3IgaGVyZSB3aGVuZXZlciAgICAgICovDQorICAvKiAgICAgICAgIHBvc3NpYmxlIChzZWUgbm90ZSBiZWxvdykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgcmVzdWx0IG9mIGAoYSoweDEwMDAwKS9iJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgb3B0aW1pemF0aW9uIGZvciBGVF9EaXZGaXgoKSBpcyBzaW1wbGU6IElmIChhfjw8fjE2KSBmaXRzIGluICAgKi8NCisgIC8qICAgIDMyfmJpdHMsIHRoZW4gdGhlIGRpdmlzaW9uIGlzIGNvbXB1dGVkIGRpcmVjdGx5LiAgT3RoZXJ3aXNlLCB3ZSAgICAqLw0KKyAgLyogICAgdXNlIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBARlRfTXVsRGl2LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfTG9uZyApDQorICBGVF9EaXZGaXgoIEZUX0xvbmcgIGEsDQorICAgICAgICAgICAgIEZUX0xvbmcgIGIgKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1JvdW5kRml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEEgdmVyeSBzaW1wbGUgZnVuY3Rpb24gdXNlZCB0byByb3VuZCBhIDE2LjE2IGZpeGVkIG51bWJlci4gICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGEgOjogVGhlIG51bWJlciB0byBiZSByb3VuZGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSByZXN1bHQgb2YgYChhICsgMHg4MDAwKSAmIC0weDEwMDAwJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIEZUX0ZpeGVkICkNCisgIEZUX1JvdW5kRml4KCBGVF9GaXhlZCAgYSApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfQ2VpbEZpeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSB2ZXJ5IHNpbXBsZSBmdW5jdGlvbiB1c2VkIHRvIGNvbXB1dGUgdGhlIGNlaWxpbmcgZnVuY3Rpb24gb2YgYSAgICovDQorICAvKiAgICAxNi4xNiBmaXhlZCBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBhIDo6IFRoZSBudW1iZXIgZm9yIHdoaWNoIHRoZSBjZWlsaW5nIGZ1bmN0aW9uIGlzIHRvIGJlIGNvbXB1dGVkLiAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgcmVzdWx0IG9mIGAoYSArIDB4MTAwMDAgLSAxKSAmIC0weDEwMDAwJy4gICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9GaXhlZCApDQorICBGVF9DZWlsRml4KCBGVF9GaXhlZCAgYSApOw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgRlRfRmxvb3JGaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgQSB2ZXJ5IHNpbXBsZSBmdW5jdGlvbiB1c2VkIHRvIGNvbXB1dGUgdGhlIGZsb29yIGZ1bmN0aW9uIG9mIGEgICAgICovDQorICAvKiAgICAxNi4xNiBmaXhlZCBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBhIDo6IFRoZSBudW1iZXIgZm9yIHdoaWNoIHRoZSBmbG9vciBmdW5jdGlvbiBpcyB0byBiZSBjb21wdXRlZC4gICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBUaGUgcmVzdWx0IG9mIGBhICYgLTB4MTAwMDAnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9GaXhlZCApDQorICBGVF9GbG9vckZpeCggRlRfRml4ZWQgIGEgKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRyYW5zZm9ybSBhIHNpbmdsZSB2ZWN0b3IgdGhyb3VnaCBhIDJ4MiBtYXRyaXguICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHZlY3RvciA6OiBUaGUgdGFyZ2V0IHZlY3RvciB0byB0cmFuc2Zvcm0uICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIG1hdHJpeCA6OiBBIHBvaW50ZXIgdG8gdGhlIHNvdXJjZSAyeDIgbWF0cml4LiAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSByZXN1bHQgaXMgdW5kZWZpbmVkIGlmIGVpdGhlciBgdmVjdG9yJyBvciBgbWF0cml4JyBpcyBpbnZhbGlkLiAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICBGVF9FWFBPUlQoIHZvaWQgKQ0KKyAgRlRfVmVjdG9yX1RyYW5zZm9ybSggRlRfVmVjdG9yKiAgICAgICAgdmVjLA0KKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfTWF0cml4KiAgbWF0cml4ICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGcmVlVHlwZSBWZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGdW5jdGlvbnMgYW5kIG1hY3JvcyByZWxhdGVkIHRvIEZyZWVUeXBlIHZlcnNpb25zLiAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBOb3RlIHRoYXQgdGhvc2UgZnVuY3Rpb25zIGFuZCBtYWNyb3MgYXJlIG9mIGxpbWl0ZWQgdXNlIGJlY2F1c2UgICAgKi8NCisgIC8qICAgIGV2ZW4gYSBuZXcgcmVsZWFzZSBvZiBGcmVlVHlwZSB3aXRoIG9ubHkgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzICAgICAqLw0KKyAgLyogICAgaW5jcmVhc2VzIHRoZSB2ZXJzaW9uIG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKw0KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgICAqDQorICAgKiBAZW51bToNCisgICAqICAgRlJFRVRZUEVfWFhYDQorICAgKg0KKyAgICogQGRlc2NyaXB0aW9uOg0KKyAgICogICBUaGVzZSB0aHJlZSBtYWNyb3MgaWRlbnRpZnkgdGhlIEZyZWVUeXBlIHNvdXJjZSBjb2RlIHZlcnNpb24uDQorICAgKiAgIFVzZSBARlRfTGlicmFyeV9WZXJzaW9uIHRvIGFjY2VzcyB0aGVtIGF0IHJ1bnRpbWUuDQorICAgKg0KKyAgICogQHZhbHVlczoNCisgICAqICAgRlJFRVRZUEVfTUFKT1IgOjogVGhlIG1ham9yIHZlcnNpb24gbnVtYmVyLg0KKyAgICogICBGUkVFVFlQRV9NSU5PUiA6OiBUaGUgbWlub3IgdmVyc2lvbiBudW1iZXIuDQorICAgKiAgIEZSRUVUWVBFX1BBVENIIDo6IFRoZSBwYXRjaCBsZXZlbC4NCisgICAqDQorICAgKiBAbm90ZToNCisgICAqICAgVGhlIHZlcnNpb24gbnVtYmVyIG9mIEZyZWVUeXBlIGlmIGJ1aWx0IGFzIGEgZHluYW1pYyBsaW5rIGxpYnJhcnkNCisgICAqICAgd2l0aCB0aGUgYGxpYnRvb2wnIHBhY2thZ2UgaXMgX25vdF8gY29udHJvbGxlZCBieSB0aGVzZSB0aHJlZQ0KKyAgICogICBtYWNyb3MuDQorICAgKg0KKyAgICovDQorI2RlZmluZSBGUkVFVFlQRV9NQUpPUiAgMg0KKyNkZWZpbmUgRlJFRVRZUEVfTUlOT1IgIDUNCisjZGVmaW5lIEZSRUVUWVBFX1BBVENIICAwDQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9MaWJyYXJ5X1ZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBSZXR1cm4gdGhlIHZlcnNpb24gb2YgdGhlIEZyZWVUeXBlIGxpYnJhcnkgYmVpbmcgdXNlZC4gIFRoaXMgaXMgICAgKi8NCisgIC8qICAgIHVzZWZ1bCB3aGVuIGR5bmFtaWNhbGx5IGxpbmtpbmcgdG8gdGhlIGxpYnJhcnksIHNpbmNlIG9uZSBjYW5ub3QgICAqLw0KKyAgLyogICAgdXNlIHRoZSBtYWNyb3MgQEZSRUVUWVBFX01BSk9SLCBARlJFRVRZUEVfTUlOT1IsIGFuZCAgICAgICAgICAgICAgICovDQorICAvKiAgICBARlJFRVRZUEVfUEFUQ0guICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBsaWJyYXJ5IDo6IEEgc291cmNlIGxpYnJhcnkgaGFuZGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBhbWFqb3IgIDo6IFRoZSBtYWpvciB2ZXJzaW9uIG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgYW1pbm9yICA6OiBUaGUgbWlub3IgdmVyc2lvbiBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGFwYXRjaCAgOjogVGhlIHBhdGNoIHZlcnNpb24gbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSByZWFzb24gd2h5IHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBgbGlicmFyeScgYXJndW1lbnQgaXMgYmVjYXVzZSAqLw0KKyAgLyogICAgY2VydGFpbiBwcm9ncmFtcyBpbXBsZW1lbnQgbGlicmFyeSBpbml0aWFsaXphdGlvbiBpbiBhIGN1c3RvbSB3YXkgICovDQorICAvKiAgICB0aGF0IGRvZXNuJ3QgdXNlIEBGVF9Jbml0X0ZyZWVUeXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgSW4gc3VjaCBjYXNlcywgdGhlIGxpYnJhcnkgdmVyc2lvbiBtaWdodCBub3QgYmUgYXZhaWxhYmxlIGJlZm9yZSAgICovDQorICAvKiAgICB0aGUgbGlicmFyeSBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCB2b2lkICkNCisgIEZUX0xpYnJhcnlfVmVyc2lvbiggRlRfTGlicmFyeSAgIGxpYnJhcnksDQorICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICphbWFqb3IsDQorICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICphbWlub3IsDQorICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICphcGF0Y2ggKTsNCisNCisNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIEZUX0ZhY2VfQ2hlY2tUcnVlVHlwZVBhdGVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFBhcnNlIGFsbCBieXRlY29kZSBpbnN0cnVjdGlvbnMgb2YgYSBUcnVlVHlwZSBmb250IGZpbGUgdG8gY2hlY2sgICAqLw0KKyAgLyogICAgd2hldGhlciBhbnkgb2YgdGhlIHBhdGVudGVkIG9wY29kZXMgYXJlIHVzZWQuICBUaGlzIGlzIG9ubHkgdXNlZnVsICovDQorICAvKiAgICBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSB0aGUgdW5wYXRlbnRlZCBoaW50ZXIgd2l0aCAgICAgICAgICAgKi8NCisgIC8qICAgIGZvbnRzIHRoYXQgZG8gKm5vdCogdXNlIHRoZXNlIG9wY29kZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgKmFsbCogZ2x5cGggaW5zdHJ1Y3Rpb25zIGluIHRoZSAgICAgKi8NCisgIC8qICAgIGZvbnQgZmlsZSwgd2hpY2ggbWF5IGJlIHNsb3cuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIGZhY2UgOjogQSBmYWNlIGhhbmRsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIDF+aWYgdGhpcyBpcyBhIFRydWVUeXBlIGZvbnQgdGhhdCB1c2VzIG9uZSBvZiB0aGUgcGF0ZW50ZWQgICAgICAgICAqLw0KKyAgLyogICAgb3Bjb2RlcywgMH5vdGhlcndpc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgU2luY2UgTWF5IDIwMTAsIFRydWVUeXBlIGhpbnRpbmcgaXMgbm8gbG9uZ2VyIHBhdGVudGVkLiAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxTaW5jZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgMi4zLjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIEZUX0VYUE9SVCggRlRfQm9vbCApDQorICBGVF9GYWNlX0NoZWNrVHJ1ZVR5cGVQYXRlbnRzKCBGVF9GYWNlICBmYWNlICk7DQorDQorDQorICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBGVF9GYWNlX1NldFVucGF0ZW50ZWRIaW50aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBFbmFibGUgb3IgZGlzYWJsZSB0aGUgdW5wYXRlbnRlZCBoaW50ZXIgZm9yIGEgZ2l2ZW4gZmFjZS4gICAgICAgICAgKi8NCisgIC8qICAgIE9ubHkgZW5hYmxlIGl0IGlmIHlvdSBoYXZlIGRldGVybWluZWQgdGhhdCB0aGUgZmFjZSBkb2Vzbid0ICAgICAgICAqLw0KKyAgLyogICAgdXNlIGFueSBwYXRlbnRlZCBvcGNvZGVzIChzZWUgQEZUX0ZhY2VfQ2hlY2tUcnVlVHlwZVBhdGVudHMpLiAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgZmFjZSAgOjogQSBmYWNlIGhhbmRsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIHZhbHVlIDo6IE5ldyBib29sZWFuIHNldHRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgIFRoZSBvbGQgc2V0dGluZyB2YWx1ZS4gIFRoaXMgd2lsbCBhbHdheXMgYmUgZmFsc2UgaWYgdGhpcyBpcyBub3QgICAqLw0KKyAgLyogICAgYW4gU0ZOVCBmb250LCBvciBpZiB0aGUgdW5wYXRlbnRlZCBoaW50ZXIgaXMgbm90IGNvbXBpbGVkIGluIHRoaXMgICovDQorICAvKiAgICBpbnN0YW5jZSBvZiB0aGUgbGlicmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICBTaW5jZSBNYXkgMjAxMCwgVHJ1ZVR5cGUgaGludGluZyBpcyBubyBsb25nZXIgcGF0ZW50ZWQuICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgLyogPFNpbmNlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiAgICAyLjMuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgRlRfRVhQT1JUKCBGVF9Cb29sICkNCisgIEZUX0ZhY2VfU2V0VW5wYXRlbnRlZEhpbnRpbmcoIEZUX0ZhY2UgIGZhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICB2YWx1ZSApOw0KKw0KKyAgLyogKi8NCisNCisNCitGVF9FTkRfSEVBREVSDQorDQorI2VuZGlmIC8qIF9fRlJFRVRZUEVfSF9fICovDQorDQorDQorLyogRU5EICovDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGFkdmFuYy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGFkdmFuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNjNiYTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0YWR2YW5jLmgKQEAgLTAsMCArMSwxODIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0YWR2YW5jLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBRdWljayBjb21wdXRhdGlvbiBvZiBhZHZhbmNlIHdpZHRocyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQURWQU5DX0hfXworI2RlZmluZSBfX0ZUQURWQU5DX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzZWN0aW9uOgorICAgKiAgIHF1aWNrX2FkdmFuY2UKKyAgICoKKyAgICogQHRpdGxlOgorICAgKiAgIFF1aWNrIHJldHJpZXZhbCBvZiBhZHZhbmNlIHZhbHVlcworICAgKgorICAgKiBAYWJzdHJhY3Q6CisgICAqICAgUmV0cmlldmUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgYWR2YW5jZSB2YWx1ZXMgd2l0aG91dCBwcm9jZXNzaW5nCisgICAqICAgZ2x5cGggb3V0bGluZXMsIGlmIHBvc3NpYmxlLgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBxdWlja2x5IGV4dHJhY3QgYWR2YW5jZSB2YWx1ZXMKKyAgICogICB3aXRob3V0IGhhbmRsaW5nIGdseXBoIG91dGxpbmVzLCBpZiBwb3NzaWJsZS4KKyAgICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxDb25zdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9BRFZBTkNFX0ZMQUdfRkFTVF9PTkxZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGJpdC1mbGFnIHRvIGJlIE9SLWVkIHdpdGggdGhlIGBmbGFncycgcGFyYW1ldGVyIG9mIHRoZSAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX0dldF9BZHZhbmNlIGFuZCBARlRfR2V0X0FkdmFuY2VzIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiBzZXQsIGl0IGluZGljYXRlcyB0aGF0IHlvdSB3YW50IHRoZXNlIGZ1bmN0aW9ucyB0byBmYWlsIGlmIHRoZSAgKi8KKyAgLyogICAgY29ycmVzcG9uZGluZyBoaW50aW5nIG1vZGUgb3IgZm9udCBkcml2ZXIgZG9lc24ndCBhbGxvdyBmb3IgdmVyeSAgICovCisgIC8qICAgIHF1aWNrIGFkdmFuY2UgY29tcHV0YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVHlwaWNhbGx5LCBnbHlwaHMgd2hpY2ggYXJlIGVpdGhlciB1bnNjYWxlZCwgdW5oaW50ZWQsIGJpdG1hcHBlZCwgICovCisgIC8qICAgIG9yIGxpZ2h0LWhpbnRlZCBjYW4gaGF2ZSB0aGVpciBhZHZhbmNlIHdpZHRoIGNvbXB1dGVkIHZlcnkgICAgICAgICAqLworICAvKiAgICBxdWlja2x5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vcm1hbCBhbmQgYnl0ZWNvZGUgaGludGVkIG1vZGVzLCB3aGljaCByZXF1aXJlIGxvYWRpbmcsIHNjYWxpbmcsICAqLworICAvKiAgICBhbmQgaGludGluZyBvZiB0aGUgZ2x5cGggb3V0bGluZSwgYXJlIGV4dHJlbWVseSBzbG93IGJ5ICAgICAgICAgICAgKi8KKyAgLyogICAgY29tcGFyaXNvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9BRFZBTkNFX0ZMQUdfRkFTVF9PTkxZICAweDIwMDAwMDAwVUwKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9BZHZhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBhZHZhbmNlIHZhbHVlIG9mIGEgZ2l2ZW4gZ2x5cGggb3V0bGluZSBpbiBhbiAgICAgICAgICAqLworICAvKiAgICBARlRfRmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgIDo6IFRoZSBzb3VyY2UgQEZUX0ZhY2UgaGFuZGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdpbmRleCAgICAgOjogVGhlIGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZF9mbGFncyA6OiBBIHNldCBvZiBiaXQgZmxhZ3Mgc2ltaWxhciB0byB0aG9zZSB1c2VkIHdoZW4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgY2FsbGluZyBARlRfTG9hZF9HbHlwaCwgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBraW5kICAqLworICAvKiAgICAgICAgICAgICAgICAgIG9mIGFkdmFuY2VzIHlvdSBuZWVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhZHZhbmNlIDo6IFRoZSBhZHZhbmNlIHZhbHVlLiAgSWYgc2NhbGluZyBpcyBwZXJmb3JtZWQgKGJhc2VkIG9uICAqLworICAvKiAgICAgICAgICAgICAgICB0aGUgdmFsdWUgb2YgYGxvYWRfZmxhZ3MnKSwgdGhlIGFkdmFuY2UgdmFsdWUgaXMgaW4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgMTYuMTYgZm9ybWF0LiAgT3RoZXJ3aXNlLCBpdCBpcyBpbiBmb250IHVuaXRzLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICBJZiBARlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgaXMgc2V0LCB0aGlzIGlzIHRoZSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgdmVydGljYWwgYWR2YW5jZSBjb3JyZXNwb25kaW5nIHRvIGEgdmVydGljYWwgbGF5b3V0LiAgICovCisgIC8qICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgaXQgaXMgdGhlIGhvcml6b250YWwgYWR2YW5jZSBpbiBhICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICBob3Jpem9udGFsIGxheW91dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIG1heSBmYWlsIGlmIHlvdSB1c2UgQEZUX0FEVkFOQ0VfRkxBR19GQVNUX09OTFkgYW5kICAgKi8KKyAgLyogICAgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZm9udCBiYWNrZW5kIGRvZXNuJ3QgaGF2ZSBhIHF1aWNrIHdheSB0byAgICAgICovCisgIC8qICAgIHJldHJpZXZlIHRoZSBhZHZhbmNlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzY2FsZWQgYWR2YW5jZSBpcyByZXR1cm5lZCBpbiAxNi4xNiBmb3JtYXQgYnV0IGlzbid0IHRyYW5zZm9ybWVkICovCisgIC8qICAgIGJ5IHRoZSBhZmZpbmUgdHJhbnNmb3JtYXRpb24gc3BlY2lmaWVkIGJ5IEBGVF9TZXRfVHJhbnNmb3JtLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9BZHZhbmNlKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGdpbmRleCwKKyAgICAgICAgICAgICAgICAgIEZUX0ludDMyICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAqcGFkdmFuY2UgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9BZHZhbmNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBhZHZhbmNlIHZhbHVlcyBvZiBzZXZlcmFsIGdseXBoIG91dGxpbmVzIGluIGFuICAgICAgICAqLworICAvKiAgICBARlRfRmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICA6OiBUaGUgc291cmNlIEBGVF9GYWNlIGhhbmRsZS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0YXJ0ICAgICAgIDo6IFRoZSBmaXJzdCBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY291bnQgICAgICAgOjogVGhlIG51bWJlciBvZiBhZHZhbmNlIHZhbHVlcyB5b3Ugd2FudCB0byByZXRyaWV2ZS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkX2ZsYWdzICA6OiBBIHNldCBvZiBiaXQgZmxhZ3Mgc2ltaWxhciB0byB0aG9zZSB1c2VkIHdoZW4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgY2FsbGluZyBARlRfTG9hZF9HbHlwaC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGFkdmFuY2UgOjogVGhlIGFkdmFuY2UgdmFsdWVzLiAgVGhpcyBhcnJheSwgdG8gYmUgcHJvdmlkZWQgYnkgdGhlICovCisgIC8qICAgICAgICAgICAgICAgIGNhbGxlciwgbXVzdCBjb250YWluIGF0IGxlYXN0IGBjb3VudCcgZWxlbWVudHMuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgSWYgc2NhbGluZyBpcyBwZXJmb3JtZWQgKGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIGBsb2FkX2ZsYWdzJyksIHRoZSBhZHZhbmNlIHZhbHVlcyBhcmUgaW4gMTYuMTYgZm9ybWF0LiAqLworICAvKiAgICAgICAgICAgICAgICBPdGhlcndpc2UsIHRoZXkgYXJlIGluIGZvbnQgdW5pdHMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIElmIEBGVF9MT0FEX1ZFUlRJQ0FMX0xBWU9VVCBpcyBzZXQsIHRoZXNlIGFyZSB0aGUgICAgICAqLworICAvKiAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBhZHZhbmNlcyBjb3JyZXNwb25kaW5nIHRvIGEgdmVydGljYWwgbGF5b3V0LiAgKi8KKyAgLyogICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCB0aGV5IGFyZSB0aGUgaG9yaXpvbnRhbCBhZHZhbmNlcyBpbiBhICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIGhvcml6b250YWwgbGF5b3V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gbWF5IGZhaWwgaWYgeW91IHVzZSBARlRfQURWQU5DRV9GTEFHX0ZBU1RfT05MWSBhbmQgICAqLworICAvKiAgICBpZiB0aGUgY29ycmVzcG9uZGluZyBmb250IGJhY2tlbmQgZG9lc24ndCBoYXZlIGEgcXVpY2sgd2F5IHRvICAgICAgKi8KKyAgLyogICAgcmV0cmlldmUgdGhlIGFkdmFuY2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTY2FsZWQgYWR2YW5jZXMgYXJlIHJldHVybmVkIGluIDE2LjE2IGZvcm1hdCBidXQgYXJlbid0ICAgICAgICAgICAgKi8KKyAgLyogICAgdHJhbnNmb3JtZWQgYnkgdGhlIGFmZmluZSB0cmFuc2Zvcm1hdGlvbiBzcGVjaWZpZWQgYnkgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9TZXRfVHJhbnNmb3JtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9BZHZhbmNlcyggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgIGxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICpwYWR2YW5jZXMgKTsKKworLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUQURWQU5DX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGF1dG9oLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0YXV0b2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWRkOWY0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGF1dG9oLmgKQEAgLTAsMCArMSwzNTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0YXV0b2guaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIGNvbnRyb2xsaW5nIHRoZSBhdXRvLWhpbnRlciAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQVVUT0hfSF9fCisjZGVmaW5lIF9fRlRBVVRPSF9IX18KKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHNlY3Rpb246CisgICAqICAgYXV0b19oaW50ZXIKKyAgICoKKyAgICogQHRpdGxlOgorICAgKiAgIFRoZSBhdXRvLWhpbnRlcgorICAgKgorICAgKiBAYWJzdHJhY3Q6CisgICAqICAgQ29udHJvbGxpbmcgdGhlIGF1dG8taGludGluZyBtb2R1bGUuCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBXaGlsZSBGcmVlVHlwZSdzIGF1dG8taGludGVyIGRvZXNuJ3QgZXhwb3NlIEFQSSBmdW5jdGlvbnMgYnkgaXRzZWxmLAorICAgKiAgIGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRyb2wgaXRzIGJlaGF2aW91ciB3aXRoIEBGVF9Qcm9wZXJ0eV9TZXQgYW5kCisgICAqICAgQEZUX1Byb3BlcnR5X0dldC4gIFRoZSBmb2xsb3dpbmcgbGlzdHMgdGhlIGF2YWlsYWJsZSBwcm9wZXJ0aWVzCisgICAqICAgdG9nZXRoZXIgd2l0aCB0aGUgbmVjZXNzYXJ5IG1hY3JvcyBhbmQgc3RydWN0dXJlcy4KKyAgICoKKyAgICogICBOb3RlIHRoYXQgdGhlIGF1dG8taGludGVyJ3MgbW9kdWxlIG5hbWUgaXMgYGF1dG9maXR0ZXInIGZvcgorICAgKiAgIGhpc3RvcmljYWwgcmVhc29ucy4KKyAgICoKKyAgICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHByb3BlcnR5OgorICAgKiAgIGdseXBoLXRvLXNjcmlwdC1tYXAKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgICpFeHBlcmltZW50YWwqICpvbmx5KgorICAgKgorICAgKiAgIFRoZSBhdXRvLWhpbnRlciBwcm92aWRlcyB2YXJpb3VzIHNjcmlwdCBtb2R1bGVzIHRvIGhpbnQgZ2x5cGhzLgorICAgKiAgIEV4YW1wbGVzIG9mIHN1cHBvcnRlZCBzY3JpcHRzIGFyZSBMYXRpbiBvciBDSksuICBCZWZvcmUgYSBnbHlwaCBpcworICAgKiAgIGF1dG8taGludGVkLCB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgbWFwIG9mIHRoZSBmb250IGdldHMgZXhhbWluZWQsIGFuZAorICAgKiAgIHRoZSBzY3JpcHQgaXMgdGhlbiBkZXRlcm1pbmVkIGJhc2VkIG9uIFVuaWNvZGUgY2hhcmFjdGVyIHJhbmdlcywgc2VlCisgICAqICAgYmVsb3cuCisgICAqCisgICAqICAgT3BlblR5cGUgZm9udHMsIGhvd2V2ZXIsIG9mdGVuIHByb3ZpZGUgbXVjaCBtb3JlIGdseXBocyB0aGFuCisgICAqICAgY2hhcmFjdGVyIGNvZGVzIChzbWFsbCBjYXBzLCBzdXBlcnNjcmlwdHMsIGxpZ2F0dXJlcywgc3dhc2hlcywgZXRjLiksCisgICAqICAgdG8gYmUgY29udHJvbGxlZCBieSBzby1jYWxsZWQgYGZlYXR1cmVzJy4gIEhhbmRsaW5nIE9wZW5UeXBlIGZlYXR1cmVzCisgICAqICAgY2FuIGJlIHF1aXRlIGNvbXBsaWNhdGVkIGFuZCB0aHVzIG5lZWRzIGEgc2VwYXJhdGUgbGlicmFyeSBvbiB0b3Agb2YKKyAgICogICBGcmVlVHlwZS4KKyAgICoKKyAgICogICBUaGUgbWFwcGluZyBiZXR3ZWVuIGdseXBoIGluZGljZXMgYW5kIHNjcmlwdHMgKGluIHRoZSBhdXRvLWhpbnRlcgorICAgKiAgIHNlbnNlLCBzZWUgdGhlIEBGVF9BVVRPSElOVEVSX1NDUklQVF9YWFggdmFsdWVzKSBpcyBzdG9yZWQgYXMgYW4KKyAgICogICBhcnJheSB3aXRoIGBudW1fZ2x5cGhzJyBlbGVtZW50cywgYXMgZm91bmQgaW4gdGhlIGZvbnQncyBARlRfRmFjZQorICAgKiAgIHN0cnVjdHVyZS4gIFRoZSBgZ2x5cGgtdG8tc2NyaXB0LW1hcCcgcHJvcGVydHkgcmV0dXJucyBhIHBvaW50ZXIgdG8KKyAgICogICB0aGlzIGFycmF5IHdoaWNoIGNhbiBiZSBtb2RpZmllZCBhcyBuZWVkZWQuICBOb3RlIHRoYXQgdGhlCisgICAqICAgbW9kaWZpY2F0aW9uIHNob3VsZCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCBnbHlwaCBnZXRzIHByb2Nlc3NlZCBieQorICAgKiAgIHRoZSBhdXRvLWhpbnRlciBzbyB0aGF0IHRoZSBnbG9iYWwgYW5hbHlzaXMgb2YgdGhlIGZvbnQgc2hhcGVzCisgICAqICAgYWN0dWFsbHkgdXNlcyB0aGUgbW9kaWZpZWQgbWFwcGluZy4KKyAgICoKKyAgICogICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29kZSBkZW1vbnN0cmF0ZXMgaG93IHRvIGFjY2VzcyBpdCAob21pdHRpbmcKKyAgICogICB0aGUgZXJyb3IgaGFuZGxpbmcpLgorICAgKgorICAgKiAgIHsKKyAgICogICAgIEZUX0xpYnJhcnkgICAgICAgICAgICAgICAgbGlicmFyeTsKKyAgICogICAgIEZUX0ZhY2UgICAgICAgICAgICAgICAgICAgZmFjZTsKKyAgICogICAgIEZUX1Byb3BfR2x5cGhUb1NjcmlwdE1hcCAgcHJvcDsKKyAgICoKKyAgICoKKyAgICogICAgIEZUX0luaXRfRnJlZVR5cGUoICZsaWJyYXJ5ICk7CisgICAqICAgICBGVF9OZXdfRmFjZSggbGlicmFyeSwgImZvby50dGYiLCAwLCAmZmFjZSApOworICAgKgorICAgKiAgICAgcHJvcC5mYWNlID0gZmFjZTsKKyAgICoKKyAgICogICAgIEZUX1Byb3BlcnR5X0dldCggbGlicmFyeSwgImF1dG9maXR0ZXIiLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2x5cGgtdG8tc2NyaXB0LW1hcCIsICZwcm9wICk7CisgICAqCisgICAqICAgICAvLyBhZGp1c3QgYHByb3AubWFwJyBhcyBuZWVkZWQgcmlnaHQgaGVyZQorICAgKgorICAgKiAgICAgRlRfTG9hZF9HbHlwaCggZmFjZSwgLi4uLCBGVF9MT0FEX0ZPUkNFX0FVVE9ISU5UICk7CisgICAqICAgfQorICAgKgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBGVF9BVVRPSElOVEVSX1NDUklQVF9YWFgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgICpFeHBlcmltZW50YWwqICpvbmx5KgorICAgKgorICAgKiAgIEEgbGlzdCBvZiBjb25zdGFudHMgdXNlZCBmb3IgdGhlIEBnbHlwaC10by1zY3JpcHQtbWFwIHByb3BlcnR5IHRvCisgICAqICAgc3BlY2lmeSB0aGUgc2NyaXB0IHN1Ym1vZHVsZSB0aGUgYXV0by1oaW50ZXIgc2hvdWxkIHVzZSBmb3IgaGludGluZyBhCisgICAqICAgcGFydGljdWxhciBnbHlwaC4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBGVF9BVVRPSElOVEVSX1NDUklQVF9OT05FIDo6CisgICAqICAgICBEb24ndCBhdXRvLWhpbnQgdGhpcyBnbHlwaC4KKyAgICoKKyAgICogICBGVF9BVVRPSElOVEVSX1NDUklQVF9MQVRJTiA6OgorICAgKiAgICAgQXBwbHkgdGhlIGxhdGluIGF1dG8taGludGVyLiAgRm9yIHRoZSBhdXRvLWhpbnRlciwgYGxhdGluJyBpcyBhCisgICAqICAgICB2ZXJ5IGJyb2FkIHRlcm0sIGluY2x1ZGluZyBDeXJpbGxpYyBhbmQgR3JlZWsgYWxzbyBzaW5jZSBjaGFyYWN0ZXJzCisgICAqICAgICBmcm9tIHRob3NlIHNjcmlwdHMgc2hhcmUgdGhlIHNhbWUgZGVzaWduIGNvbnN0cmFpbnRzLgorICAgKgorICAgKiAgICAgQnkgZGVmYXVsdCwgY2hhcmFjdGVycyBmcm9tIHRoZSBmb2xsb3dpbmcgVW5pY29kZSByYW5nZXMgYXJlCisgICAqICAgICBhc3NpZ25lZCB0byB0aGlzIHN1Ym1vZHVsZS4KKyAgICoKKyAgICogICAgIHsKKyAgICogICAgICAgVSswMDIwIC0gVSswMDdGICAvLyBCYXNpYyBMYXRpbiAobm8gY29udHJvbCBjaGFyYWN0ZXJzKQorICAgKiAgICAgICBVKzAwQTAgLSBVKzAwRkYgIC8vIExhdGluLTEgU3VwcGxlbWVudCAobm8gY29udHJvbCBjaGFyYWN0ZXJzKQorICAgKiAgICAgICBVKzAxMDAgLSBVKzAxN0YgIC8vIExhdGluIEV4dGVuZGVkLUEKKyAgICogICAgICAgVSswMTgwIC0gVSswMjRGICAvLyBMYXRpbiBFeHRlbmRlZC1CCisgICAqICAgICAgIFUrMDI1MCAtIFUrMDJBRiAgLy8gSVBBIEV4dGVuc2lvbnMKKyAgICogICAgICAgVSswMkIwIC0gVSswMkZGICAvLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMKKyAgICogICAgICAgVSswMzAwIC0gVSswMzZGICAvLyBDb21iaW5pbmcgRGlhY3JpdGljYWwgTWFya3MKKyAgICogICAgICAgVSswMzcwIC0gVSswM0ZGICAvLyBHcmVlayBhbmQgQ29wdGljCisgICAqICAgICAgIFUrMDQwMCAtIFUrMDRGRiAgLy8gQ3lyaWxsaWMKKyAgICogICAgICAgVSswNTAwIC0gVSswNTJGICAvLyBDeXJpbGxpYyBTdXBwbGVtZW50CisgICAqICAgICAgIFUrMUQwMCAtIFUrMUQ3RiAgLy8gUGhvbmV0aWMgRXh0ZW5zaW9ucworICAgKiAgICAgICBVKzFEODAgLSBVKzFEQkYgIC8vIFBob25ldGljIEV4dGVuc2lvbnMgU3VwcGxlbWVudAorICAgKiAgICAgICBVKzFEQzAgLSBVKzFERkYgIC8vIENvbWJpbmluZyBEaWFjcml0aWNhbCBNYXJrcyBTdXBwbGVtZW50CisgICAqICAgICAgIFUrMUUwMCAtIFUrMUVGRiAgLy8gTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbAorICAgKiAgICAgICBVKzFGMDAgLSBVKzFGRkYgIC8vIEdyZWVrIEV4dGVuZGVkCisgICAqICAgICAgIFUrMjAwMCAtIFUrMjA2RiAgLy8gR2VuZXJhbCBQdW5jdHVhdGlvbgorICAgKiAgICAgICBVKzIwNzAgLSBVKzIwOUYgIC8vIFN1cGVyc2NyaXB0cyBhbmQgU3Vic2NyaXB0cworICAgKiAgICAgICBVKzIwQTAgLSBVKzIwQ0YgIC8vIEN1cnJlbmN5IFN5bWJvbHMKKyAgICogICAgICAgVSsyMTUwIC0gVSsyMThGICAvLyBOdW1iZXIgRm9ybXMKKyAgICogICAgICAgVSsyNDYwIC0gVSsyNEZGICAvLyBFbmNsb3NlZCBBbHBoYW51bWVyaWNzCisgICAqICAgICAgIFUrMkM2MCAtIFUrMkM3RiAgLy8gTGF0aW4gRXh0ZW5kZWQtQworICAgKiAgICAgICBVKzJERTAgLSBVKzJERkYgIC8vIEN5cmlsbGljIEV4dGVuZGVkLUEKKyAgICogICAgICAgVSsyRTAwIC0gVSsyRTdGICAvLyBTdXBwbGVtZW50YWwgUHVuY3R1YXRpb24KKyAgICogICAgICAgVStBNjQwIC0gVStBNjlGICAvLyBDeXJpbGxpYyBFeHRlbmRlZC1CCisgICAqICAgICAgIFUrQTcyMCAtIFUrQTdGRiAgLy8gTGF0aW4gRXh0ZW5kZWQtRAorICAgKiAgICAgICBVK0ZCMDAgLSBVK0ZCMDYgIC8vIEFscGhhYi4gUHJlc2VudC4gRm9ybXMgKExhdGluIExpZ2F0dXJlcykKKyAgICogICAgICBVKzFENDAwIC0gVSsxRDdGRiAvLyBNYXRoZW1hdGljYWwgQWxwaGFudW1lcmljIFN5bWJvbHMKKyAgICogICAgICBVKzFGMTAwIC0gVSsxRjFGRiAvLyBFbmNsb3NlZCBBbHBoYW51bWVyaWMgU3VwcGxlbWVudAorICAgKiAgICAgfQorICAgKgorICAgKiAgIEZUX0FVVE9ISU5URVJfU0NSSVBUX0NKSyA6OgorICAgKiAgICAgQXBwbHkgdGhlIENKSyBhdXRvLWhpbnRlciwgY292ZXJpbmcgQ2hpbmVzZSwgSmFwYW5lc2UsIEtvcmVhbiwgb2xkCisgICAqICAgICBWaWV0bmFtZXNlLCBhbmQgc29tZSBvdGhlciBzY3JpcHRzLgorICAgKgorICAgKiAgICAgQnkgZGVmYXVsdCwgY2hhcmFjdGVycyBmcm9tIHRoZSBmb2xsb3dpbmcgVW5pY29kZSByYW5nZXMgYXJlCisgICAqICAgICBhc3NpZ25lZCB0byB0aGlzIHN1Ym1vZHVsZS4KKyAgICoKKyAgICogICAgIHsKKyAgICogICAgICAgVSsxMTAwIC0gVSsxMUZGICAvLyBIYW5ndWwgSmFtbworICAgKiAgICAgICBVKzJFODAgLSBVKzJFRkYgIC8vIENKSyBSYWRpY2FscyBTdXBwbGVtZW50CisgICAqICAgICAgIFUrMkYwMCAtIFUrMkZERiAgLy8gS2FuZ3hpIFJhZGljYWxzCisgICAqICAgICAgIFUrMkZGMCAtIFUrMkZGRiAgLy8gSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gQ2hhcmFjdGVycworICAgKiAgICAgICBVKzMwMDAgLSBVKzMwM0YgIC8vIENKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvbgorICAgKiAgICAgICBVKzMwNDAgLSBVKzMwOUYgIC8vIEhpcmFnYW5hCisgICAqICAgICAgIFUrMzBBMCAtIFUrMzBGRiAgLy8gS2F0YWthbmEKKyAgICogICAgICAgVSszMTAwIC0gVSszMTJGICAvLyBCb3BvbW9mbworICAgKiAgICAgICBVKzMxMzAgLSBVKzMxOEYgIC8vIEhhbmd1bCBDb21wYXRpYmlsaXR5IEphbW8KKyAgICogICAgICAgVSszMTkwIC0gVSszMTlGICAvLyBLYW5idW4KKyAgICogICAgICAgVSszMUEwIC0gVSszMUJGICAvLyBCb3BvbW9mbyBFeHRlbmRlZAorICAgKiAgICAgICBVKzMxQzAgLSBVKzMxRUYgIC8vIENKSyBTdHJva2VzCisgICAqICAgICAgIFUrMzFGMCAtIFUrMzFGRiAgLy8gS2F0YWthbmEgUGhvbmV0aWMgRXh0ZW5zaW9ucworICAgKiAgICAgICBVKzMyMDAgLSBVKzMyRkYgIC8vIEVuY2xvc2VkIENKSyBMZXR0ZXJzIGFuZCBNb250aHMKKyAgICogICAgICAgVSszMzAwIC0gVSszM0ZGICAvLyBDSksgQ29tcGF0aWJpbGl0eQorICAgKiAgICAgICBVKzM0MDAgLSBVKzREQkYgIC8vIENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEEKKyAgICogICAgICAgVSs0REMwIC0gVSs0REZGICAvLyBZaWppbmcgSGV4YWdyYW0gU3ltYm9scworICAgKiAgICAgICBVKzRFMDAgLSBVKzlGRkYgIC8vIENKSyBVbmlmaWVkIElkZW9ncmFwaHMKKyAgICogICAgICAgVStBOTYwIC0gVStBOTdGICAvLyBIYW5ndWwgSmFtbyBFeHRlbmRlZC1BCisgICAqICAgICAgIFUrQUMwMCAtIFUrRDdBRiAgLy8gSGFuZ3VsIFN5bGxhYmxlcworICAgKiAgICAgICBVK0Q3QjAgLSBVK0Q3RkYgIC8vIEhhbmd1bCBKYW1vIEV4dGVuZGVkLUIKKyAgICogICAgICAgVStGOTAwIC0gVStGQUZGICAvLyBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzCisgICAqICAgICAgIFUrRkUxMCAtIFUrRkUxRiAgLy8gVmVydGljYWwgZm9ybXMKKyAgICogICAgICAgVStGRTMwIC0gVStGRTRGICAvLyBDSksgQ29tcGF0aWJpbGl0eSBGb3JtcworICAgKiAgICAgICBVK0ZGMDAgLSBVK0ZGRUYgIC8vIEhhbGZ3aWR0aCBhbmQgRnVsbHdpZHRoIEZvcm1zCisgICAqICAgICAgVSsxQjAwMCAtIFUrMUIwRkYgLy8gS2FuYSBTdXBwbGVtZW50CisgICAqICAgICAgVSsxRDMwMCAtIFUrMUQzNUYgLy8gVGFpIFh1YW4gSGluZyBTeW1ib2xzCisgICAqICAgICAgVSsxRjIwMCAtIFUrMUYyRkYgLy8gRW5jbG9zZWQgSWRlb2dyYXBoaWMgU3VwcGxlbWVudAorICAgKiAgICAgIFUrMjAwMDAgLSBVKzJBNkRGIC8vIENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEIKKyAgICogICAgICBVKzJBNzAwIC0gVSsyQjczRiAvLyBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBDCisgICAqICAgICAgVSsyQjc0MCAtIFUrMkI4MUYgLy8gQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gRAorICAgKiAgICAgIFUrMkY4MDAgLSBVKzJGQTFGIC8vIENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgU3VwcGxlbWVudAorICAgKiAgICAgfQorICAgKgorICAgKiAgIEZUX0FVVE9ISU5URVJfU0NSSVBUX0lORElDIDo6CisgICAqICAgICBBcHBseSB0aGUgaW5kaWMgYXV0by1oaW50ZXIsIGNvdmVyaW5nIGFsbCBtYWpvciBzY3JpcHRzIGZyb20gdGhlCisgICAqICAgICBJbmRpYW4gc3ViLWNvbnRpbmVudCBhbmQgc29tZSBvdGhlciByZWxhdGVkIHNjcmlwdHMgbGlrZSBUaGFpLCBMYW8sCisgICAqICAgICBvciBUaWJldGFuLgorICAgKgorICAgKiAgICAgQnkgZGVmYXVsdCwgY2hhcmFjdGVycyBmcm9tIHRoZSBmb2xsb3dpbmcgVW5pY29kZSByYW5nZXMgYXJlCisgICAqICAgICBhc3NpZ25lZCB0byB0aGlzIHN1Ym1vZHVsZS4KKyAgICoKKyAgICogICAgIHsKKyAgICogICAgICAgVSswOTAwIC0gVSswREZGICAvLyBJbmRpYyBSYW5nZQorICAgKiAgICAgICBVKzBGMDAgLSBVKzBGRkYgIC8vIFRpYmV0YW4KKyAgICogICAgICAgVSsxOTAwIC0gVSsxOTRGICAvLyBMaW1idQorICAgKiAgICAgICBVKzFCODAgLSBVKzFCQkYgIC8vIFN1bmRhbmVzZQorICAgKiAgICAgICBVKzFDODAgLSBVKzFDREYgIC8vIE1lZXRlaSBNYXlhaworICAgKiAgICAgICBVK0E4MDAgLSBVK0E4MkYgIC8vIFN5bG90aSBOYWdyaQorICAgKiAgICAgIFUrMTE4MDAgLSBVKzExOERGIC8vIFNoYXJhZGEKKyAgICogICAgIH0KKyAgICoKKyAgICogICAgIE5vdGUgdGhhdCBjdXJyZW50bHkgSW5kaWMgc3VwcG9ydCBpcyBydWRpbWVudGFyeSBvbmx5LCBtaXNzaW5nIGJsdWUKKyAgICogICAgIHpvbmUgc3VwcG9ydC4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FVVE9ISU5URVJfU0NSSVBUX05PTkUgICAwCisjZGVmaW5lIEZUX0FVVE9ISU5URVJfU0NSSVBUX0xBVElOICAxCisjZGVmaW5lIEZUX0FVVE9ISU5URVJfU0NSSVBUX0NKSyAgICAyCisjZGVmaW5lIEZUX0FVVE9ISU5URVJfU0NSSVBUX0lORElDICAzCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHN0cnVjdDoKKyAgICogICBGVF9Qcm9wX0dseXBoVG9TY3JpcHRNYXAKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgICpFeHBlcmltZW50YWwqICpvbmx5KgorICAgKgorICAgKiAgIFRoZSBkYXRhIGV4Y2hhbmdlIHN0cnVjdHVyZSBmb3IgdGhlIEBnbHlwaC10by1zY3JpcHQtbWFwIHByb3BlcnR5LgorICAgKgorICAgKi8KKyAgIHR5cGVkZWYgc3RydWN0ICBGVF9Qcm9wX0dseXBoVG9TY3JpcHRNYXBfCisgICB7CisgICAgIEZUX0ZhY2UgICBmYWNlOworICAgICBGVF9CeXRlKiAgbWFwOworCisgICB9IEZUX1Byb3BfR2x5cGhUb1NjcmlwdE1hcDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAcHJvcGVydHk6CisgICAqICAgZmFsbGJhY2stc2NyaXB0CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAqRXhwZXJpbWVudGFsKiAqb25seSoKKyAgICoKKyAgICogICBJZiBubyBhdXRvLWhpbnRlciBzY3JpcHQgbW9kdWxlIGNhbiBiZSBhc3NpZ25lZCB0byBhIGdseXBoLCBhCisgICAqICAgZmFsbGJhY2sgc2NyaXB0IGdldHMgYXNzaWduZWQgdG8gaXQgKHNlZSBhbHNvIHRoZQorICAgKiAgIEBnbHlwaC10by1zY3JpcHQtbWFwIHByb3BlcnR5KS4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMKKyAgICogICBARlRfQVVUT0hJTlRFUl9TQ1JJUFRfQ0pLLiAgVXNpbmcgdGhlIGBmYWxsYmFjay1zY3JpcHQnIHByb3BlcnR5LAorICAgKiAgIHRoaXMgZmFsbGJhY2sgdmFsdWUgY2FuIGJlIGNoYW5nZWQuCisgICAqCisgICAqICAgeworICAgKiAgICAgRlRfTGlicmFyeSAgbGlicmFyeTsKKyAgICogICAgIEZUX1VJbnQgICAgIGZhbGxiYWNrX3NjcmlwdCA9IEZUX0FVVE9ISU5URVJfU0NSSVBUX05PTkU7CisgICAqCisgICAqCisgICAqICAgICBGVF9Jbml0X0ZyZWVUeXBlKCAmbGlicmFyeSApOworICAgKgorICAgKiAgICAgRlRfUHJvcGVydHlfU2V0KCBsaWJyYXJ5LCAiYXV0b2ZpdHRlciIsCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWxsYmFjay1zY3JpcHQiLCAmZmFsbGJhY2tfc2NyaXB0ICk7CisgICAqICAgfQorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGlzIHByb3BlcnR5IGNhbiBiZSB1c2VkIHdpdGggQEZUX1Byb3BlcnR5X0dldCBhbHNvLgorICAgKgorICAgKiAgIEl0J3MgaW1wb3J0YW50IHRvIHVzZSB0aGUgcmlnaHQgdGltaW5nIGZvciBjaGFuZ2luZyB0aGlzIHZhbHVlOiBUaGUKKyAgICogICBjcmVhdGlvbiBvZiB0aGUgZ2x5cGgtdG8tc2NyaXB0IG1hcCB3aGljaCBldmVudHVhbGx5IHVzZXMgdGhlCisgICAqICAgZmFsbGJhY2sgc2NyaXB0IHZhbHVlIGdldHMgdHJpZ2dlcmVkIGVpdGhlciBieSBzZXR0aW5nIG9yIHJlYWRpbmcgYQorICAgKiAgIGZhY2Utc3BlY2lmaWMgcHJvcGVydHkgbGlrZSBAZ2x5cGgtdG8tc2NyaXB0LW1hcCwgb3IgYnkgYXV0by1oaW50aW5nCisgICAqICAgYW55IGdseXBoIGZyb20gdGhhdCBmYWNlLiAgSW4gcGFydGljdWxhciwgaWYgeW91IGhhdmUgYWxyZWFkeSBjcmVhdGVkCisgICAqICAgYW4gQEZUX0ZhY2Ugc3RydWN0dXJlIGJ1dCBub3QgbG9hZGVkIGFueSBnbHlwaCAodXNpbmcgdGhlCisgICAqICAgYXV0by1oaW50ZXIpLCBhIGNoYW5nZSBvZiB0aGUgZmFsbGJhY2sgZ2x5cGggd2lsbCBhZmZlY3QgdGhpcyBmYWNlLgorICAgKgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAcHJvcGVydHk6CisgICAqICAgaW5jcmVhc2UteC1oZWlnaHQKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEZvciBwcGVtIHZhbHVlcyBpbiB0aGUgcmFuZ2UgNn48PSBwcGVtIDw9IGBpbmNyZWFzZS14LWhlaWdodCcsIHJvdW5kCisgICAqICAgdXAgdGhlIGZvbnQncyB4fmhlaWdodCBtdWNoIG1vcmUgb2Z0ZW4gdGhhbiBub3JtYWxseS4gIElmIHRoZSB2YWx1ZQorICAgKiAgIGlzIHNldCB0b34wLCB3aGljaCBpcyB0aGUgZGVmYXVsdCwgdGhpcyBmZWF0dXJlIGlzIHN3aXRjaGVkIG9mZi4gIFVzZQorICAgKiAgIHRoaXMgcHJvcGVydHkgdG8gaW1wcm92ZSB0aGUgbGVnaWJpbGl0eSBvZiBzbWFsbCBmb250IHNpemVzIGlmCisgICAqICAgbmVjZXNzYXJ5LgorICAgKgorICAgKiAgIHsKKyAgICogICAgIEZUX0xpYnJhcnkgICAgICAgICAgICAgICBsaWJyYXJ5OworICAgKiAgICAgRlRfRmFjZSAgICAgICAgICAgICAgICAgIGZhY2U7CisgICAqICAgICBGVF9Qcm9wX0luY3JlYXNlWEhlaWdodCAgcHJvcDsKKyAgICoKKyAgICoKKyAgICogICAgIEZUX0luaXRfRnJlZVR5cGUoICZsaWJyYXJ5ICk7CisgICAqICAgICBGVF9OZXdfRmFjZSggbGlicmFyeSwgImZvby50dGYiLCAwLCAmZmFjZSApOworICAgKiAgICAgRlRfU2V0X0NoYXJfU2l6ZSggZmFjZSwgMTAgKiA2NCwgMCwgNzIsIDAgKTsKKyAgICoKKyAgICogICAgIHByb3AuZmFjZSAgPSBmYWNlOworICAgKiAgICAgcHJvcC5saW1pdCA9IDE0OworICAgKgorICAgKiAgICAgRlRfUHJvcGVydHlfU2V0KCBsaWJyYXJ5LCAiYXV0b2ZpdHRlciIsCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNyZWFzZS14LWhlaWdodCIsICZwcm9wICk7CisgICAqICAgfQorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGlzIHByb3BlcnR5IGNhbiBiZSB1c2VkIHdpdGggQEZUX1Byb3BlcnR5X0dldCBhbHNvLgorICAgKgorICAgKiAgIFNldCB0aGlzIHZhbHVlIHJpZ2h0IGFmdGVyIGNhbGxpbmcgQEZUX1NldF9DaGFyX1NpemUsIGJ1dCBiZWZvcmUKKyAgICogICBsb2FkaW5nIGFueSBnbHlwaCAodXNpbmcgdGhlIGF1dG8taGludGVyKS4KKyAgICoKKyAgICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHN0cnVjdDoKKyAgICogICBGVF9Qcm9wX0luY3JlYXNlWEhlaWdodAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIGRhdGEgZXhjaGFuZ2Ugc3RydWN0dXJlIGZvciB0aGUgQGluY3JlYXNlLXgtaGVpZ2h0IHByb3BlcnR5LgorICAgKgorICAgKi8KKyAgIHR5cGVkZWYgc3RydWN0ICBGVF9Qcm9wX0luY3JlYXNlWEhlaWdodF8KKyAgIHsKKyAgICAgRlRfRmFjZSAgZmFjZTsKKyAgICAgRlRfVUludCAgbGltaXQ7CisKKyAgIH0gRlRfUHJvcF9JbmNyZWFzZVhIZWlnaHQ7CisKKworIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRBVVRPSF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRiYm94LmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0YmJveC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNTQyNDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0YmJveC5oCkBAIC0wLDAgKzEsMTAyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGJib3guaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgZXhhY3QgYmJveCBjb21wdXRhdGlvbiAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMywgMjAwNywgMjAxMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGNvbXBvbmVudCBoYXMgYSBfc2luZ2xlXyByb2xlOiB0byBjb21wdXRlIGV4YWN0IG91dGxpbmUgYm91bmRpbmcgKi8KKyAgLyogYm94ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJdCBpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgcmVzdCBvZiB0aGUgZW5naW5lIGZvciB2YXJpb3VzIHRlY2huaWNhbCAgICAgKi8KKyAgLyogcmVhc29ucy4gIEl0IG1heSB3ZWxsIGJlIGludGVncmF0ZWQgaW4gYGZ0b3V0bG4nIGxhdGVyLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRCQk9YX0hfXworI2RlZmluZSBfX0ZUQkJPWF9IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmVfcHJvY2Vzc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0dldF9CQm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDb21wdXRlIHRoZSBleGFjdCBib3VuZGluZyBib3ggb2YgYW4gb3V0bGluZS4gIFRoaXMgaXMgc2xvd2VyICAgICAgKi8KKyAgLyogICAgdGhhbiBjb21wdXRpbmcgdGhlIGNvbnRyb2wgYm94LiAgSG93ZXZlciwgaXQgdXNlcyBhbiBhZHZhbmNlZCAgICAgICovCisgIC8qICAgIGFsZ29yaXRobSB3aGljaCByZXR1cm5zIF92ZXJ5XyBxdWlja2x5IHdoZW4gdGhlIHR3byBib3hlcyAgICAgICAgICAqLworICAvKiAgICBjb2luY2lkZS4gIE90aGVyd2lzZSwgdGhlIG91dGxpbmUgQsOpemllciBhcmNzIGFyZSB0cmF2ZXJzZWQgdG8gICAgICovCisgIC8qICAgIGV4dHJhY3QgdGhlaXIgZXh0cmVtYS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmUgOjogQSBwb2ludGVyIHRvIHRoZSBzb3VyY2Ugb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFiYm94ICAgOjogVGhlIG91dGxpbmUncyBleGFjdCBib3VuZGluZyBib3guICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIHRoZSBmb250IGlzIHRyaWNreSBhbmQgdGhlIGdseXBoIGhhcyBiZWVuIGxvYWRlZCB3aXRoICAgICAgICAgICAqLworICAvKiAgICBARlRfTE9BRF9OT19TQ0FMRSwgdGhlIHJlc3VsdGluZyBCQm94IGlzIG1lYW5pbmdsZXNzLiAgVG8gZ2V0ICAgICAgKi8KKyAgLyogICAgcmVhc29uYWJsZSB2YWx1ZXMgZm9yIHRoZSBCQm94IGl0IGlzIG5lY2Vzc2FyeSB0byBsb2FkIHRoZSBnbHlwaCAgICovCisgIC8qICAgIGF0IGEgbGFyZ2UgcHBlbSB2YWx1ZSAoc28gdGhhdCB0aGUgaGludGluZyBpbnN0cnVjdGlvbnMgY2FuICAgICAgICAqLworICAvKiAgICBwcm9wZXJseSBzaGlmdCBhbmQgc2NhbGUgdGhlIHN1YmdseXBocyksIHRoZW4gZXh0cmFjdGluZyB0aGUgQkJveCAgKi8KKyAgLyogICAgd2hpY2ggY2FuIGJlIGV2ZW50dWFsbHkgY29udmVydGVkIGJhY2sgdG8gZm9udCB1bml0cy4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9HZXRfQkJveCggRlRfT3V0bGluZSogIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0JCb3ggICAgICphYmJveCApOworCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUQkJPWF9IX18gKi8KKworCisvKiBFTkQgKi8KKworCisvKiBMb2NhbCBWYXJpYWJsZXM6ICovCisvKiBjb2Rpbmc6IHV0Zi04ICAgICovCisvKiBFbmQ6ICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0YmRmLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0YmRmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3MjFiYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRiZGYuaApAQCAtMCwwICsxLDIwOSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRiZGYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgYWNjZXNzaW5nIEJERi1zcGVjaWZpYyBzdHJpbmdzIChzcGVjaWZpY2F0aW9uKS4gICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA2LCAyMDA5IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRCREZfSF9fCisjZGVmaW5lIF9fRlRCREZfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmRmX2ZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQkRGIGFuZCBQQ0YgRmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQkRGIGFuZCBQQ0Ygc3BlY2lmaWMgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gQkRGICovCisgIC8qICAgIGFuZCBQQ0YgZm9udHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICAgRlRfUHJvcGVydHlUeXBlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgQSBsaXN0IG9mIEJERiBwcm9wZXJ0eSB0eXBlcy4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICAgQkRGX1BST1BFUlRZX1RZUEVfTk9ORSA6OgorICAgKiAgICAgIFZhbHVlfjAgaXMgdXNlZCB0byBpbmRpY2F0ZSBhIG1pc3NpbmcgcHJvcGVydHkuCisgICAqCisgICAqICAgIEJERl9QUk9QRVJUWV9UWVBFX0FUT00gOjoKKyAgICogICAgICBQcm9wZXJ0eSBpcyBhIHN0cmluZyBhdG9tLgorICAgKgorICAgKiAgICBCREZfUFJPUEVSVFlfVFlQRV9JTlRFR0VSIDo6CisgICAqICAgICAgUHJvcGVydHkgaXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIuCisgICAqCisgICAqICAgIEJERl9QUk9QRVJUWV9UWVBFX0NBUkRJTkFMIDo6CisgICAqICAgICAgUHJvcGVydHkgaXMgYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KKyAgICovCisgIHR5cGVkZWYgZW51bSAgQkRGX1Byb3BlcnR5VHlwZV8KKyAgeworICAgIEJERl9QUk9QRVJUWV9UWVBFX05PTkUgICAgID0gMCwKKyAgICBCREZfUFJPUEVSVFlfVFlQRV9BVE9NICAgICA9IDEsCisgICAgQkRGX1BST1BFUlRZX1RZUEVfSU5URUdFUiAgPSAyLAorICAgIEJERl9QUk9QRVJUWV9UWVBFX0NBUkRJTkFMID0gMworCisgIH0gQkRGX1Byb3BlcnR5VHlwZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgICBCREZfUHJvcGVydHkKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgICBBIGhhbmRsZSB0byBhIEBCREZfUHJvcGVydHlSZWMgc3RydWN0dXJlIHRvIG1vZGVsIGEgZ2l2ZW4KKyAgICogICAgQkRGL1BDRiBwcm9wZXJ0eS4KKyAgICovCisgIHR5cGVkZWYgc3RydWN0IEJERl9Qcm9wZXJ0eVJlY18qICBCREZfUHJvcGVydHk7CisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAc3RydWN0OgorICAqICAgIEJERl9Qcm9wZXJ0eVJlYworICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIFRoaXMgc3RydWN0dXJlIG1vZGVscyBhIGdpdmVuIEJERi9QQ0YgcHJvcGVydHkuCisgICoKKyAgKiBAZmllbGRzOgorICAqICAgIHR5cGUgOjoKKyAgKiAgICAgIFRoZSBwcm9wZXJ0eSB0eXBlLgorICAqCisgICogICAgdS5hdG9tIDo6CisgICogICAgICBUaGUgYXRvbSBzdHJpbmcsIGlmIHR5cGUgaXMgQEJERl9QUk9QRVJUWV9UWVBFX0FUT00uCisgICoKKyAgKiAgICB1LmludGVnZXIgOjoKKyAgKiAgICAgIEEgc2lnbmVkIGludGVnZXIsIGlmIHR5cGUgaXMgQEJERl9QUk9QRVJUWV9UWVBFX0lOVEVHRVIuCisgICoKKyAgKiAgICB1LmNhcmRpbmFsIDo6CisgICogICAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyLCBpZiB0eXBlIGlzIEBCREZfUFJPUEVSVFlfVFlQRV9DQVJESU5BTC4KKyAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEJERl9Qcm9wZXJ0eVJlY18KKyAgeworICAgIEJERl9Qcm9wZXJ0eVR5cGUgIHR5cGU7CisgICAgdW5pb24geworICAgICAgY29uc3QgY2hhciogICAgIGF0b207CisgICAgICBGVF9JbnQzMiAgICAgICAgaW50ZWdlcjsKKyAgICAgIEZUX1VJbnQzMiAgICAgICBjYXJkaW5hbDsKKworICAgIH0gdTsKKworICB9IEJERl9Qcm9wZXJ0eVJlYzsKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBmdW5jdGlvbjoKKyAgKiAgICBGVF9HZXRfQkRGX0NoYXJzZXRfSUQKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBSZXRyaWV2ZSBhIEJERiBmb250IGNoYXJhY3RlciBzZXQgaWRlbnRpdHksIGFjY29yZGluZyB0bworICAqICAgIHRoZSBCREYgc3BlY2lmaWNhdGlvbi4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgICBmYWNlIDo6CisgICogICAgICAgQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICoKKyAgKiBAb3V0cHV0OgorICAqICAgIGFjaGFyc2V0X2VuY29kaW5nIDo6CisgICogICAgICAgQ2hhcnNldCBlbmNvZGluZywgYXMgYSBDfnN0cmluZywgb3duZWQgYnkgdGhlIGZhY2UuCisgICoKKyAgKiAgICBhY2hhcnNldF9yZWdpc3RyeSA6OgorICAqICAgICAgIENoYXJzZXQgcmVnaXN0cnksIGFzIGEgQ35zdHJpbmcsIG93bmVkIGJ5IHRoZSBmYWNlLgorICAqCisgICogQHJldHVybjoKKyAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aXRoIEJERiBmYWNlcywgcmV0dXJuaW5nIGFuIGVycm9yIG90aGVyd2lzZS4KKyAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9CREZfQ2hhcnNldF9JRCggRlRfRmFjZSAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqYWNoYXJzZXRfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICphY2hhcnNldF9yZWdpc3RyeSApOworCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgIEZUX0dldF9CREZfUHJvcGVydHkKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBSZXRyaWV2ZSBhIEJERiBwcm9wZXJ0eSBmcm9tIGEgQkRGIG9yIFBDRiBmb250IGZpbGUuCisgICoKKyAgKiBAaW5wdXQ6CisgICogICAgZmFjZSA6OiBBIGhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4KKyAgKgorICAqICAgIG5hbWUgOjogVGhlIHByb3BlcnR5IG5hbWUuCisgICoKKyAgKiBAb3V0cHV0OgorICAqICAgIGFwcm9wZXJ0eSA6OiBUaGUgcHJvcGVydHkuCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgKgorICAqIEBub3RlOgorICAqICAgVGhpcyBmdW5jdGlvbiB3b3JrcyB3aXRoIEJERiBfYW5kXyBQQ0YgZm9udHMuICBJdCByZXR1cm5zIGFuIGVycm9yCisgICogICBvdGhlcndpc2UuICBJdCBhbHNvIHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBpbiB0aGUKKyAgKiAgIGZvbnQuCisgICoKKyAgKiAgIEEgYHByb3BlcnR5JyBpcyBhIGVpdGhlciBrZXktdmFsdWUgcGFpciB3aXRoaW4gdGhlIFNUQVJUUFJPUEVSVElFUworICAqICAgLi4uIEVORFBST1BFUlRJRVMgYmxvY2sgb2YgYSBCREYgZm9udCBvciBhIGtleS12YWx1ZSBwYWlyIGZyb20gdGhlCisgICogICBgaW5mby0+cHJvcHMnIGFycmF5IHdpdGhpbiBhIGBGb250UmVjJyBzdHJ1Y3R1cmUgb2YgYSBQQ0YgZm9udC4KKyAgKgorICAqICAgSW50ZWdlciBwcm9wZXJ0aWVzIGFyZSBhbHdheXMgc3RvcmVkIGFzIGBzaWduZWQnIHdpdGhpbiBQQ0YgZm9udHM7CisgICogICBjb25zZXF1ZW50bHksIEBCREZfUFJPUEVSVFlfVFlQRV9DQVJESU5BTCBpcyBhIHBvc3NpYmxlIHJldHVybiB2YWx1ZQorICAqICAgZm9yIEJERiBmb250cyBvbmx5LgorICAqCisgICogICBJbiBjYXNlIG9mIGVycm9yLCBgYXByb3BlcnR5LT50eXBlJyBpcyBhbHdheXMgc2V0IHRvCisgICogICBAQkRGX1BST1BFUlRZX1RZUEVfTk9ORS4KKyAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9CREZfUHJvcGVydHkoIEZUX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAgICAgIHByb3BfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgQkRGX1Byb3BlcnR5UmVjICAqYXByb3BlcnR5ICk7CisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUQkRGX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGJpdG1hcC5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGJpdG1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NDA3OTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0Yml0bWFwLmgKQEAgLTAsMCArMSwyMjcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Yml0bWFwLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgYml0bWFwcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNC0yMDA2LCAyMDA4LCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQklUTUFQX0hfXworI2RlZmluZSBfX0ZUQklUTUFQX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYml0bWFwX2hhbmRsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQml0bWFwIEhhbmRsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSGFuZGxpbmcgRlRfQml0bWFwIG9iamVjdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBGVF9CaXRtYXAgb2JqZWN0cy4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0JpdG1hcF9OZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRpYWxpemUgYSBwb2ludGVyIHRvIGFuIEBGVF9CaXRtYXAgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFiaXRtYXAgOjogQSBwb2ludGVyIHRvIHRoZSBiaXRtYXAgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfQml0bWFwX05ldyggRlRfQml0bWFwICAqYWJpdG1hcCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQml0bWFwX0NvcHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29weSBhIGJpdG1hcCBpbnRvIGFub3RoZXIgb25lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSB0byBhIGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzb3VyY2UgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YXJnZXQgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9CaXRtYXBfQ29weSggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0JpdG1hcCAgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgIEZUX0JpdG1hcCAgICAgICAgKnRhcmdldCk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXBfRW1ib2xkZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFbWJvbGRlbiBhIGJpdG1hcC4gIFRoZSBuZXcgYml0bWFwIHdpbGwgYmUgYWJvdXQgYHhTdHJlbmd0aCcgICAgICAgKi8KKyAgLyogICAgcGl4ZWxzIHdpZGVyIGFuZCBgeVN0cmVuZ3RoJyBwaXhlbHMgaGlnaGVyLiAgVGhlIGxlZnQgYW5kIGJvdHRvbSAgICovCisgIC8qICAgIGJvcmRlcnMgYXJlIGtlcHQgdW5jaGFuZ2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgICA6OiBBIGhhbmRsZSB0byBhIGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeFN0cmVuZ3RoIDo6IEhvdyBzdHJvbmcgdGhlIGdseXBoIGlzIGVtYm9sZGVuZWQgaG9yaXpvbnRhbGx5LiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICBFeHByZXNzZWQgaW4gMjYuNiBwaXhlbCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeVN0cmVuZ3RoIDo6IEhvdyBzdHJvbmcgdGhlIGdseXBoIGlzIGVtYm9sZGVuZWQgdmVydGljYWxseS4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICBFeHByZXNzZWQgaW4gMjYuNiBwaXhlbCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJpdG1hcCAgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGJpdG1hcC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHJlc3RyaWN0cyBgeFN0cmVuZ3RoJyB0byBiZSBsZXNzIHRoYW4gICAqLworICAvKiAgICBvciBlcXVhbCB0b344IGlmIGJpdG1hcCBpcyBvZiBwaXhlbF9tb2RlIEBGVF9QSVhFTF9NT0RFX01PTk8uICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIHlvdSB3YW50IHRvIGVtYm9sZGVuIHRoZSBiaXRtYXAgb3duZWQgYnkgYSBARlRfR2x5cGhTbG90UmVjLCAgICAqLworICAvKiAgICB5b3Ugc2hvdWxkIGNhbGwgQEZUX0dseXBoU2xvdF9Pd25fQml0bWFwIG9uIHRoZSBzbG90IGZpcnN0LiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9CaXRtYXBfRW1ib2xkZW4oIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgRlRfQml0bWFwKiAgYml0bWFwLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIHhTdHJlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB5U3RyZW5ndGggKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0JpdG1hcF9Db252ZXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbnZlcnQgYSBiaXRtYXAgb2JqZWN0IHdpdGggZGVwdGggMWJwcCwgMmJwcCwgNGJwcCwgOGJwcCBvciAzMmJwcCAqLworICAvKiAgICB0byBhIGJpdG1hcCBvYmplY3Qgd2l0aCBkZXB0aCA4YnBwLCBtYWtpbmcgdGhlIG51bWJlciBvZiB1c2VkICAgICAgKi8KKyAgLyogICAgYnl0ZXMgbGluZSAoYS5rLmEuIHRoZSBgcGl0Y2gnKSBhIG11bHRpcGxlIG9mIGBhbGlnbm1lbnQnLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSAgIDo6IEEgaGFuZGxlIHRvIGEgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzb3VyY2UgICAgOjogVGhlIHNvdXJjZSBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFsaWdubWVudCA6OiBUaGUgcGl0Y2ggb2YgdGhlIGJpdG1hcCBpcyBhIG11bHRpcGxlIG9mIHRoaXMgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLiAgQ29tbW9uIHZhbHVlcyBhcmUgMSwgMiwgb3IgNC4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YXJnZXQgICAgOjogVGhlIHRhcmdldCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJdCBpcyBwb3NzaWJsZSB0byBjYWxsIEBGVF9CaXRtYXBfQ29udmVydCBtdWx0aXBsZSB0aW1lcyB3aXRob3V0ICAgKi8KKyAgLyogICAgY2FsbGluZyBARlRfQml0bWFwX0RvbmUgKHRoZSBtZW1vcnkgaXMgc2ltcGx5IHJlYWxsb2NhdGVkKS4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2UgQEZUX0JpdG1hcF9Eb25lIHRvIGZpbmFsbHkgcmVtb3ZlIHRoZSBiaXRtYXAgb2JqZWN0LiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBgbGlicmFyeScgYXJndW1lbnQgaXMgdGFrZW4gdG8gaGF2ZSBhY2Nlc3MgdG8gRnJlZVR5cGUncyAgICAgICAqLworICAvKiAgICBtZW1vcnkgaGFuZGxpbmcgZnVuY3Rpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9CaXRtYXBfQ29udmVydCggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0JpdG1hcCAgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX0JpdG1hcCAgICAgICAgKnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICAgIGFsaWdubWVudCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2x5cGhTbG90X093bl9CaXRtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTWFrZSBzdXJlIHRoYXQgYSBnbHlwaCBzbG90IG93bnMgYHNsb3QtPmJpdG1hcCcuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2xvdCA6OiBUaGUgZ2x5cGggc2xvdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9CaXRtYXBfRW1ib2xkZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dseXBoU2xvdF9Pd25fQml0bWFwKCBGVF9HbHlwaFNsb3QgIHNsb3QgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0JpdG1hcF9Eb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERlc3Ryb3kgYSBiaXRtYXAgb2JqZWN0IGNyZWF0ZWQgd2l0aCBARlRfQml0bWFwX05ldy4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogQSBoYW5kbGUgdG8gYSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYml0bWFwICA6OiBUaGUgYml0bWFwIG9iamVjdCB0byBiZSBmcmVlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGBsaWJyYXJ5JyBhcmd1bWVudCBpcyB0YWtlbiB0byBoYXZlIGFjY2VzcyB0byBGcmVlVHlwZSdzICAgICAgICovCisgIC8qICAgIG1lbW9yeSBoYW5kbGluZyBmdW5jdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0JpdG1hcF9Eb25lKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgRlRfQml0bWFwICAqYml0bWFwICk7CisKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRCSVRNQVBfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0YnppcDIuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRiemlwMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NGIyMjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0YnppcDIuaApAQCAtMCwwICsxLDEwMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRiemlwMi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEJ6aXAyLWNvbXByZXNzZWQgc3RyZWFtIHN1cHBvcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDEwIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBKb2VsIEtsaW5naGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRCWklQMl9IX18KKyNkZWZpbmUgX19GVEJaSVAyX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiemlwMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBCWklQMiBTdHJlYW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2luZyBiemlwMi1jb21wcmVzc2VkIGZvbnQgZmlsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGRlY2xhcmF0aW9uIG9mIEJ6aXAyLXNwZWNpZmljIGZ1bmN0aW9ucy4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICBGVF9TdHJlYW1fT3BlbkJ6aXAyCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICBPcGVuIGEgbmV3IHN0cmVhbSB0byBwYXJzZSBiemlwMi1jb21wcmVzc2VkIGZvbnQgZmlsZXMuICBUaGlzIGlzCisgICogICBtYWlubHkgdXNlZCB0byBzdXBwb3J0IHRoZSBjb21wcmVzc2VkIGAqLnBjZi5iejInIGZvbnRzIHRoYXQgY29tZQorICAqICAgd2l0aCBYRnJlZTg2LgorICAqCisgICogQGlucHV0OgorICAqICAgc3RyZWFtIDo6CisgICogICAgIFRoZSB0YXJnZXQgZW1iZWRkaW5nIHN0cmVhbS4KKyAgKgorICAqICAgc291cmNlIDo6CisgICogICAgIFRoZSBzb3VyY2Ugc3RyZWFtLgorICAqCisgICogQHJldHVybjoKKyAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoZSBzb3VyY2Ugc3RyZWFtIG11c3QgYmUgb3BlbmVkIF9iZWZvcmVfIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAgKgorICAqICAgQ2FsbGluZyB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gYEZUX1N0cmVhbV9DbG9zZScgb24gdGhlIG5ldyBzdHJlYW0gd2lsbAorICAqICAgKm5vdCogY2FsbCBgRlRfU3RyZWFtX0Nsb3NlJyBvbiB0aGUgc291cmNlIHN0cmVhbS4gIE5vbmUgb2YgdGhlIHN0cmVhbQorICAqICAgb2JqZWN0cyB3aWxsIGJlIHJlbGVhc2VkIHRvIHRoZSBoZWFwLgorICAqCisgICogICBUaGUgc3RyZWFtIGltcGxlbWVudGF0aW9uIGlzIHZlcnkgYmFzaWMgYW5kIHJlc2V0cyB0aGUgZGVjb21wcmVzc2lvbgorICAqICAgcHJvY2VzcyBlYWNoIHRpbWUgc2Vla2luZyBiYWNrd2FyZHMgaXMgbmVlZGVkIHdpdGhpbiB0aGUgc3RyZWFtLgorICAqCisgICogICBJbiBjZXJ0YWluIGJ1aWxkcyBvZiB0aGUgbGlicmFyeSwgYnppcDIgY29tcHJlc3Npb24gcmVjb2duaXRpb24gaXMKKyAgKiAgIGF1dG9tYXRpY2FsbHkgaGFuZGxlZCB3aGVuIGNhbGxpbmcgQEZUX05ld19GYWNlIG9yIEBGVF9PcGVuX0ZhY2UuCisgICogICBUaGlzIG1lYW5zIHRoYXQgaWYgbm8gZm9udCBkcml2ZXIgaXMgY2FwYWJsZSBvZiBoYW5kbGluZyB0aGUgcmF3CisgICogICBjb21wcmVzc2VkIGZpbGUsIHRoZSBsaWJyYXJ5IHdpbGwgdHJ5IHRvIG9wZW4gYSBiemlwMiBjb21wcmVzc2VkIHN0cmVhbQorICAqICAgZnJvbSBpdCBhbmQgcmUtb3BlbiB0aGUgZmFjZSB3aXRoIGl0LgorICAqCisgICogICBUaGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYEZUX0Vycl9VbmltcGxlbWVudGVkX0ZlYXR1cmUnIGlmIHlvdXIgYnVpbGQKKyAgKiAgIG9mIEZyZWVUeXBlIHdhcyBub3QgY29tcGlsZWQgd2l0aCBiemlwMiBzdXBwb3J0LgorICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX09wZW5CemlwMiggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc291cmNlICk7CisKKyAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRCWklQMl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRjYWNoZS5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA0YjBmYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRjYWNoZS5oCkBAIC0wLDAgKzEsMTA1NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRjYWNoZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIENhY2hlIHN1YnN5c3RlbSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDgsIDIwMTAsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRDQUNIRV9IX18KKyNkZWZpbmUgX19GVENBQ0hFX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZ0Z2x5cGguaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIDxTZWN0aW9uPgorICAgKiAgICBjYWNoZV9zdWJzeXN0ZW0KKyAgICoKKyAgICogPFRpdGxlPgorICAgKiAgICBDYWNoZSBTdWItU3lzdGVtCisgICAqCisgICAqIDxBYnN0cmFjdD4KKyAgICogICAgSG93IHRvIGNhY2hlIGZhY2UsIHNpemUsIGFuZCBnbHlwaCBkYXRhIHdpdGggRnJlZVR5cGV+Mi4KKyAgICoKKyAgICogPERlc2NyaXB0aW9uPgorICAgKiAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIEZyZWVUeXBlfjIgY2FjaGUgc3ViLXN5c3RlbSwgd2hpY2ggaXMgdXNlZAorICAgKiAgIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29uY3VycmVudGx5IG9wZW5lZCBARlRfRmFjZSBhbmQgQEZUX1NpemUKKyAgICogICBvYmplY3RzLCBhcyB3ZWxsIGFzIGNhY2hpbmcgaW5mb3JtYXRpb24gbGlrZSBjaGFyYWN0ZXIgbWFwcyBhbmQgZ2x5cGgKKyAgICogICBpbWFnZXMgd2hpbGUgbGltaXRpbmcgdGhlaXIgbWF4aW11bSBtZW1vcnkgdXNhZ2UuCisgICAqCisgICAqICAgTm90ZSB0aGF0IGFsbCB0eXBlcyBhbmQgZnVuY3Rpb25zIGJlZ2luIHdpdGggdGhlIGBGVENfJyBwcmVmaXguCisgICAqCisgICAqICAgVGhlIGNhY2hlIGlzIGhpZ2hseSBwb3J0YWJsZSBhbmQgdGh1cyBkb2Vzbid0IGtub3cgYW55dGhpbmcgYWJvdXQgdGhlCisgICAqICAgZm9udHMgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLCBvciBob3cgdG8gYWNjZXNzIHRoZW0uICBUaGlzIGltcGxpZXMKKyAgICogICB0aGUgZm9sbG93aW5nIHNjaGVtZToKKyAgICoKKyAgICogICBGaXJzdCwgYXZhaWxhYmxlIG9yIGluc3RhbGxlZCBmb250IGZhY2VzIGFyZSB1bmlxdWVseSBpZGVudGlmaWVkIGJ5CisgICAqICAgQEZUQ19GYWNlSUQgdmFsdWVzLCBwcm92aWRlZCB0byB0aGUgY2FjaGUgYnkgdGhlIGNsaWVudC4gIE5vdGUgdGhhdAorICAgKiAgIHRoZSBjYWNoZSBvbmx5IHN0b3JlcyBhbmQgY29tcGFyZXMgdGhlc2UgdmFsdWVzLCBhbmQgZG9lc24ndCB0cnkgdG8KKyAgICogICBpbnRlcnByZXQgdGhlbSBpbiBhbnkgd2F5LgorICAgKgorICAgKiAgIFNlY29uZCwgdGhlIGNhY2hlIGNhbGxzLCBvbmx5IHdoZW4gbmVlZGVkLCBhIGNsaWVudC1wcm92aWRlZCBmdW5jdGlvbgorICAgKiAgIHRvIGNvbnZlcnQgYW4gQEZUQ19GYWNlSUQgaW50byBhIG5ldyBARlRfRmFjZSBvYmplY3QuICBUaGUgbGF0dGVyIGlzCisgICAqICAgdGhlbiBjb21wbGV0ZWx5IG1hbmFnZWQgYnkgdGhlIGNhY2hlLCBpbmNsdWRpbmcgaXRzIHRlcm1pbmF0aW9uCisgICAqICAgdGhyb3VnaCBARlRfRG9uZV9GYWNlLiAgVG8gbW9uaXRvciB0ZXJtaW5hdGlvbiBvZiBmYWNlIG9iamVjdHMsIHRoZQorICAgKiAgIGZpbmFsaXplciBjYWxsYmFjayBpbiB0aGUgYGdlbmVyaWMnIGZpZWxkIG9mIHRoZSBARlRfRmFjZSBvYmplY3QgY2FuCisgICAqICAgYmUgdXNlZCwgd2hpY2ggbWlnaHQgYWxzbyBiZSB1c2VkIHRvIHN0b3JlIHRoZSBARlRDX0ZhY2VJRCBvZiB0aGUKKyAgICogICBmYWNlLgorICAgKgorICAgKiAgIENsaWVudHMgYXJlIGZyZWUgdG8gbWFwIGZhY2UgSURzIHRvIGFueXRoaW5nIGVsc2UuICBUaGUgbW9zdCBzaW1wbGUKKyAgICogICB1c2FnZSBpcyB0byBhc3NvY2lhdGUgdGhlbSB0byBhIChwYXRobmFtZSxmYWNlX2luZGV4KSBwYWlyIHRoYXQgaXMKKyAgICogICB1c2VkIHRvIGNhbGwgQEZUX05ld19GYWNlLiAgSG93ZXZlciwgbW9yZSBjb21wbGV4IHNjaGVtZXMgYXJlIGFsc28KKyAgICogICBwb3NzaWJsZS4KKyAgICoKKyAgICogICBOb3RlIHRoYXQgZm9yIHRoZSBjYWNoZSB0byB3b3JrIGNvcnJlY3RseSwgdGhlIGZhY2UgSUQgdmFsdWVzIG11c3QgYmUKKyAgICogICAqcGVyc2lzdGVudCosIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGNvbnRlbnRzIHRoZXkgcG9pbnQgdG8gc2hvdWxkIG5vdAorICAgKiAgIGNoYW5nZSBhdCBydW50aW1lLCBvciB0aGF0IHRoZWlyIHZhbHVlIHNob3VsZCBub3QgYmVjb21lIGludmFsaWQuCisgICAqCisgICAqICAgSWYgdGhpcyBpcyB1bmF2b2lkYWJsZSAoZS5nLiwgd2hlbiBhIGZvbnQgaXMgdW5pbnN0YWxsZWQgYXQgcnVudGltZSksCisgICAqICAgeW91IHNob3VsZCBjYWxsIEBGVENfTWFuYWdlcl9SZW1vdmVGYWNlSUQgYXMgc29vbiBhcyBwb3NzaWJsZSwgdG8gbGV0CisgICAqICAgdGhlIGNhY2hlIGdldCByaWQgb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIG9sZCBARlRDX0ZhY2VJRCBpdCBtYXkKKyAgICogICBrZWVwIGludGVybmFsbHkuICBGYWlsdXJlIHRvIGRvIHNvIHdpbGwgbGVhZCB0byBpbmNvcnJlY3QgYmVoYXZpb3VyCisgICAqICAgb3IgZXZlbiBjcmFzaGVzLgorICAgKgorICAgKiAgIFRvIHVzZSB0aGUgY2FjaGUsIHN0YXJ0IHdpdGggY2FsbGluZyBARlRDX01hbmFnZXJfTmV3IHRvIGNyZWF0ZSBhIG5ldworICAgKiAgIEBGVENfTWFuYWdlciBvYmplY3QsIHdoaWNoIG1vZGVscyBhIHNpbmdsZSBjYWNoZSBpbnN0YW5jZS4gIFlvdSBjYW4KKyAgICogICB0aGVuIGxvb2sgdXAgQEZUX0ZhY2UgYW5kIEBGVF9TaXplIG9iamVjdHMgd2l0aAorICAgKiAgIEBGVENfTWFuYWdlcl9Mb29rdXBGYWNlIGFuZCBARlRDX01hbmFnZXJfTG9va3VwU2l6ZSwgcmVzcGVjdGl2ZWx5LgorICAgKgorICAgKiAgIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgY2hhcm1hcCBjYWNoaW5nLCBjYWxsIEBGVENfQ01hcENhY2hlX05ldywgdGhlbgorICAgKiAgIGxhdGVyIHVzZSBARlRDX0NNYXBDYWNoZV9Mb29rdXAgdG8gcGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZgorICAgKiAgIEBGVF9HZXRfQ2hhcl9JbmRleCwgb25seSBtdWNoIGZhc3Rlci4KKyAgICoKKyAgICogICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIEBGVF9HbHlwaCBjYWNoaW5nLCBjYWxsIEBGVENfSW1hZ2VDYWNoZSwgdGhlbgorICAgKiAgIGxhdGVyIHVzZSBARlRDX0ltYWdlQ2FjaGVfTG9va3VwIHRvIHJldHJpZXZlIHRoZSBjb3JyZXNwb25kaW5nCisgICAqICAgQEZUX0dseXBoIG9iamVjdHMgZnJvbSB0aGUgY2FjaGUuCisgICAqCisgICAqICAgSWYgeW91IG5lZWQgbG90cyBvZiBzbWFsbCBiaXRtYXBzLCBpdCBpcyBtdWNoIG1vcmUgbWVtb3J5IGVmZmljaWVudAorICAgKiAgIHRvIGNhbGwgQEZUQ19TQml0Q2FjaGVfTmV3IGZvbGxvd2VkIGJ5IEBGVENfU0JpdENhY2hlX0xvb2t1cC4gIFRoaXMKKyAgICogICByZXR1cm5zIEBGVENfU0JpdFJlYyBzdHJ1Y3R1cmVzLCB3aGljaCBhcmUgdXNlZCB0byBzdG9yZSBzbWFsbAorICAgKiAgIGJpdG1hcHMgZGlyZWN0bHkuICAoQSBzbWFsbCBiaXRtYXAgaXMgb25lIHdob3NlIG1ldHJpY3MgYW5kCisgICAqICAgZGltZW5zaW9ucyBhbGwgZml0IGludG8gOC1iaXQgaW50ZWdlcnMpLgorICAgKgorICAgKiAgIFdlIGhvcGUgdG8gYWxzbyBwcm92aWRlIGEga2VybmluZyBjYWNoZSBpbiB0aGUgbmVhciBmdXR1cmUuCisgICAqCisgICAqCisgICAqIDxPcmRlcj4KKyAgICogICBGVENfTWFuYWdlcgorICAgKiAgIEZUQ19GYWNlSUQKKyAgICogICBGVENfRmFjZV9SZXF1ZXN0ZXIKKyAgICoKKyAgICogICBGVENfTWFuYWdlcl9OZXcKKyAgICogICBGVENfTWFuYWdlcl9SZXNldAorICAgKiAgIEZUQ19NYW5hZ2VyX0RvbmUKKyAgICogICBGVENfTWFuYWdlcl9Mb29rdXBGYWNlCisgICAqICAgRlRDX01hbmFnZXJfTG9va3VwU2l6ZQorICAgKiAgIEZUQ19NYW5hZ2VyX1JlbW92ZUZhY2VJRAorICAgKgorICAgKiAgIEZUQ19Ob2RlCisgICAqICAgRlRDX05vZGVfVW5yZWYKKyAgICoKKyAgICogICBGVENfSW1hZ2VDYWNoZQorICAgKiAgIEZUQ19JbWFnZUNhY2hlX05ldworICAgKiAgIEZUQ19JbWFnZUNhY2hlX0xvb2t1cAorICAgKgorICAgKiAgIEZUQ19TQml0CisgICAqICAgRlRDX1NCaXRDYWNoZQorICAgKiAgIEZUQ19TQml0Q2FjaGVfTmV3CisgICAqICAgRlRDX1NCaXRDYWNoZV9Mb29rdXAKKyAgICoKKyAgICogICBGVENfQ01hcENhY2hlCisgICAqICAgRlRDX0NNYXBDYWNoZV9OZXcKKyAgICogICBGVENfQ01hcENhY2hlX0xvb2t1cAorICAgKgorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgIEJBU0lDIFRZUEUgREVGSU5JVElPTlMgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZTogRlRDX0ZhY2VJRAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQW4gb3BhcXVlIHBvaW50ZXIgdHlwZSB0aGF0IGlzIHVzZWQgdG8gaWRlbnRpdHkgZmFjZSBvYmplY3RzLiAgVGhlCisgICAqICAgY29udGVudHMgb2Ygc3VjaCBvYmplY3RzIGlzIGFwcGxpY2F0aW9uLWRlcGVuZGVudC4KKyAgICoKKyAgICogICBUaGVzZSBwb2ludGVycyBhcmUgdHlwaWNhbGx5IHVzZWQgdG8gcG9pbnQgdG8gYSB1c2VyLWRlZmluZWQKKyAgICogICBzdHJ1Y3R1cmUgY29udGFpbmluZyBhIGZvbnQgZmlsZSBwYXRoLCBhbmQgZmFjZSBpbmRleC4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgTmV2ZXIgdXNlIE5VTEwgYXMgYSB2YWxpZCBARlRDX0ZhY2VJRC4KKyAgICoKKyAgICogICBGYWNlIElEcyBhcmUgcGFzc2VkIGJ5IHRoZSBjbGllbnQgdG8gdGhlIGNhY2hlIG1hbmFnZXIsIHdoaWNoIGNhbGxzLAorICAgKiAgIHdoZW4gbmVlZGVkLCB0aGUgQEZUQ19GYWNlX1JlcXVlc3RlciB0byB0cmFuc2xhdGUgdGhlbSBpbnRvIG5ldworICAgKiAgIEBGVF9GYWNlIG9iamVjdHMuCisgICAqCisgICAqICAgSWYgdGhlIGNvbnRlbnQgb2YgYSBnaXZlbiBmYWNlIElEIGNoYW5nZXMgYXQgcnVudGltZSwgb3IgaWYgdGhlIHZhbHVlCisgICAqICAgYmVjb21lcyBpbnZhbGlkIChlLmcuLCB3aGVuIHVuaW5zdGFsbGluZyBhIGZvbnQpLCB5b3Ugc2hvdWxkCisgICAqICAgaW1tZWRpYXRlbHkgY2FsbCBARlRDX01hbmFnZXJfUmVtb3ZlRmFjZUlEIGJlZm9yZSBhbnkgb3RoZXIgY2FjaGUKKyAgICogICBmdW5jdGlvbi4KKyAgICoKKyAgICogICBGYWlsdXJlIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIGluY29ycmVjdCBiZWhhdmlvdXIgb3IgZXZlbgorICAgKiAgIG1lbW9yeSBsZWFrcyBhbmQgY3Jhc2hlcy4KKyAgICovCisgIHR5cGVkZWYgRlRfUG9pbnRlciAgRlRDX0ZhY2VJRDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIEZUQ19GYWNlX1JlcXVlc3RlcgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBjYWxsYmFjayBmdW5jdGlvbiBwcm92aWRlZCBieSBjbGllbnQgYXBwbGljYXRpb25zLiAgSXQgaXMgdXNlZCBieQorICAgKiAgIHRoZSBjYWNoZSBtYW5hZ2VyIHRvIHRyYW5zbGF0ZSBhIGdpdmVuIEBGVENfRmFjZUlEIGludG8gYSBuZXcgdmFsaWQKKyAgICogICBARlRfRmFjZSBvYmplY3QsIG9uIGRlbWFuZC4KKyAgICoKKyAgICogPElucHV0PgorICAgKiAgIGZhY2VfaWQgOjoKKyAgICogICAgIFRoZSBmYWNlIElEIHRvIHJlc29sdmUuCisgICAqCisgICAqICAgbGlicmFyeSA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gYSBGcmVlVHlwZSBsaWJyYXJ5IG9iamVjdC4KKyAgICoKKyAgICogICByZXFfZGF0YSA6OgorICAgKiAgICAgQXBwbGljYXRpb24tcHJvdmlkZWQgcmVxdWVzdCBkYXRhIChzZWUgbm90ZSBiZWxvdykuCisgICAqCisgICAqIDxPdXRwdXQ+CisgICAqICAgYWZhY2UgOjoKKyAgICogICAgIEEgbmV3IEBGVF9GYWNlIGhhbmRsZS4KKyAgICoKKyAgICogPFJldHVybj4KKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiA8Tm90ZT4KKyAgICogICBUaGUgdGhpcmQgcGFyYW1ldGVyIGByZXFfZGF0YScgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBwYXNzZWQgYnkgdGhlCisgICAqICAgY2xpZW50IHdoZW4gQEZUQ19NYW5hZ2VyX05ldyBpcyBjYWxsZWQuCisgICAqCisgICAqICAgVGhlIGZhY2UgcmVxdWVzdGVyIHNob3VsZCBub3QgcGVyZm9ybSBmdW5ueSB0aGluZ3Mgb24gdGhlIHJldHVybmVkCisgICAqICAgZmFjZSBvYmplY3QsIGxpa2UgY3JlYXRpbmcgYSBuZXcgQEZUX1NpemUgZm9yIGl0LCBvciBzZXR0aW5nIGEKKyAgICogICB0cmFuc2Zvcm1hdGlvbiB0aHJvdWdoIEBGVF9TZXRfVHJhbnNmb3JtIQorICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUQ19GYWNlX1JlcXVlc3RlcikoIEZUQ19GYWNlSUQgIGZhY2VfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICByZXF1ZXN0X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSogICAgYWZhY2UgKTsKKworIC8qICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgIENBQ0hFIE1BTkFHRVIgT0JKRUNUICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX01hbmFnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBvYmplY3QgY29ycmVzcG9uZHMgdG8gb25lIGluc3RhbmNlIG9mIHRoZSBjYWNoZS1zdWJzeXN0ZW0uICAgICovCisgIC8qICAgIEl0IGlzIHVzZWQgdG8gY2FjaGUgb25lIG9yIG1vcmUgQEZUX0ZhY2Ugb2JqZWN0cywgYWxvbmcgd2l0aCAgICAgICAqLworICAvKiAgICBjb3JyZXNwb25kaW5nIEBGVF9TaXplIG9iamVjdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBtYW5hZ2VyIGludGVudGlvbmFsbHkgbGltaXRzIHRoZSB0b3RhbCBudW1iZXIgb2Ygb3BlbmVkICAgICAgICAqLworICAvKiAgICBARlRfRmFjZSBhbmQgQEZUX1NpemUgb2JqZWN0cyB0byBjb250cm9sIG1lbW9yeSB1c2FnZS4gIFNlZSB0aGUgICAgKi8KKyAgLyogICAgYG1heF9mYWNlcycgYW5kIGBtYXhfc2l6ZXMnIHBhcmFtZXRlcnMgb2YgQEZUQ19NYW5hZ2VyX05ldy4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgbWFuYWdlciBpcyBhbHNvIHVzZWQgdG8gY2FjaGUgYG5vZGVzJyBvZiB2YXJpb3VzIHR5cGVzIHdoaWxlICAgKi8KKyAgLyogICAgbGltaXRpbmcgdGhlaXIgdG90YWwgbWVtb3J5IHVzYWdlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbGwgbGltaXRhdGlvbnMgYXJlIGVuZm9yY2VkIGJ5IGtlZXBpbmcgbGlzdHMgb2YgbWFuYWdlZCBvYmplY3RzICAgKi8KKyAgLyogICAgaW4gbW9zdC1yZWNlbnRseS11c2VkIG9yZGVyLCBhbmQgZmx1c2hpbmcgb2xkIG5vZGVzIHRvIG1ha2Ugcm9vbSAgICovCisgIC8qICAgIGZvciBuZXcgb25lcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRDX01hbmFnZXJSZWNfKiAgRlRDX01hbmFnZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfTm9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBvcGFxdWUgaGFuZGxlIHRvIGEgY2FjaGUgbm9kZSBvYmplY3QuICBFYWNoIGNhY2hlIG5vZGUgaXMgICAgICAgKi8KKyAgLyogICAgcmVmZXJlbmNlLWNvdW50ZWQuICBBIG5vZGUgd2l0aCBhIGNvdW50IG9mfjAgbWlnaHQgYmUgZmx1c2hlZCAgICAgICovCisgIC8qICAgIG91dCBvZiBhIGZ1bGwgY2FjaGUgd2hlbmV2ZXIgYSBsb29rdXAgcmVxdWVzdCBpcyBwZXJmb3JtZWQuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgeW91IGxvb2sgdXAgbm9kZXMsIHlvdSBoYXZlIHRoZSBhYmlsaXR5IHRvIGBhY3F1aXJlJyB0aGVtLCAgICAgICovCisgIC8qICAgIGkuZS4sIHRvIGluY3JlbWVudCB0aGVpciByZWZlcmVuY2UgY291bnQuICBUaGlzIHdpbGwgcHJldmVudCB0aGUgICAqLworICAvKiAgICBub2RlIGZyb20gYmVpbmcgZmx1c2hlZCBvdXQgb2YgdGhlIGNhY2hlIHVudGlsIHlvdSBleHBsaWNpdGx5ICAgICAgKi8KKyAgLyogICAgYHJlbGVhc2UnIGl0IChzZWUgQEZUQ19Ob2RlX1VucmVmKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTZWUgYWxzbyBARlRDX1NCaXRDYWNoZV9Mb29rdXAgYW5kIEBGVENfSW1hZ2VDYWNoZV9Mb29rdXAuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUQ19Ob2RlUmVjXyogIEZUQ19Ob2RlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX01hbmFnZXJfTmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ3JlYXRlIGEgbmV3IGNhY2hlIG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSAgIDo6IFRoZSBwYXJlbnQgRnJlZVR5cGUgbGlicmFyeSBoYW5kbGUgdG8gdXNlLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfZmFjZXMgOjogTWF4aW11bSBudW1iZXIgb2Ygb3BlbmVkIEBGVF9GYWNlIG9iamVjdHMgbWFuYWdlZCBieSAgKi8KKyAgLyogICAgICAgICAgICAgICAgIHRoaXMgY2FjaGUgaW5zdGFuY2UuICBVc2V+MCBmb3IgZGVmYXVsdHMuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfc2l6ZXMgOjogTWF4aW11bSBudW1iZXIgb2Ygb3BlbmVkIEBGVF9TaXplIG9iamVjdHMgbWFuYWdlZCBieSAgKi8KKyAgLyogICAgICAgICAgICAgICAgIHRoaXMgY2FjaGUgaW5zdGFuY2UuICBVc2V+MCBmb3IgZGVmYXVsdHMuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfYnl0ZXMgOjogTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gdXNlIGZvciBjYWNoZWQgZGF0YSBub2Rlcy4gKi8KKyAgLyogICAgICAgICAgICAgICAgIFVzZX4wIGZvciBkZWZhdWx0cy4gIE5vdGUgdGhhdCB0aGlzIHZhbHVlIGRvZXMgbm90ICAgICovCisgIC8qICAgICAgICAgICAgICAgICBhY2NvdW50IGZvciBtYW5hZ2VkIEBGVF9GYWNlIGFuZCBARlRfU2l6ZSBvYmplY3RzLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmVxdWVzdGVyIDo6IEFuIGFwcGxpY2F0aW9uLXByb3ZpZGVkIGNhbGxiYWNrIHVzZWQgdG8gdHJhbnNsYXRlICAgICovCisgIC8qICAgICAgICAgICAgICAgICBmYWNlIElEcyBpbnRvIHJlYWwgQEZUX0ZhY2Ugb2JqZWN0cy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmVxX2RhdGEgIDo6IEEgZ2VuZXJpYyBwb2ludGVyIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSByZXF1ZXN0ZXIgICAgICovCisgIC8qICAgICAgICAgICAgICAgICBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkIChzZWUgQEZUQ19GYWNlX1JlcXVlc3RlcikuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFtYW5hZ2VyICA6OiBBIGhhbmRsZSB0byBhIG5ldyBtYW5hZ2VyIG9iamVjdC4gIDB+aW4gY2FzZSBvZiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgZmFpbHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVENfTWFuYWdlcl9OZXcoIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgIG1heF9mYWNlcywKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgIG1heF9zaXplcywKKyAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgICAgIG1heF9ieXRlcywKKyAgICAgICAgICAgICAgICAgICBGVENfRmFjZV9SZXF1ZXN0ZXIgIHJlcXVlc3RlciwKKyAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICAgICAgICAgIHJlcV9kYXRhLAorICAgICAgICAgICAgICAgICAgIEZUQ19NYW5hZ2VyICAgICAgICAqYW1hbmFnZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19NYW5hZ2VyX1Jlc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVtcHR5IGEgZ2l2ZW4gY2FjaGUgbWFuYWdlci4gIFRoaXMgc2ltcGx5IGdldHMgcmlkIG9mIGFsbCB0aGUgICAgICAqLworICAvKiAgICBjdXJyZW50bHkgY2FjaGVkIEBGVF9GYWNlIGFuZCBARlRfU2l6ZSBvYmplY3RzIHdpdGhpbiB0aGUgbWFuYWdlci4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYW5hZ2VyIDo6IEEgaGFuZGxlIHRvIHRoZSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUQ19NYW5hZ2VyX1Jlc2V0KCBGVENfTWFuYWdlciAgbWFuYWdlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX01hbmFnZXJfRG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVzdHJveSBhIGdpdmVuIG1hbmFnZXIgYWZ0ZXIgZW1wdHlpbmcgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWFuYWdlciA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGNhY2hlIG1hbmFnZXIgb2JqZWN0LiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVENfTWFuYWdlcl9Eb25lKCBGVENfTWFuYWdlciAgbWFuYWdlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX01hbmFnZXJfTG9va3VwRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0cmlldmUgdGhlIEBGVF9GYWNlIG9iamVjdCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgZ2l2ZW4gZmFjZSBJRCAgICovCisgIC8qICAgIHRocm91Z2ggYSBjYWNoZSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hbmFnZXIgOjogQSBoYW5kbGUgdG8gdGhlIGNhY2hlIG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pZCA6OiBUaGUgSUQgb2YgdGhlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJldHVybmVkIEBGVF9GYWNlIG9iamVjdCBpcyBhbHdheXMgb3duZWQgYnkgdGhlIG1hbmFnZXIuICBZb3UgICovCisgIC8qICAgIHNob3VsZCBuZXZlciB0cnkgdG8gZGlzY2FyZCBpdCB5b3Vyc2VsZi4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIEBGVF9GYWNlIG9iamVjdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IGhhdmUgYSBjdXJyZW50IHNpemUgb2JqZWN0ICovCisgIC8qICAgIChpLmUuLCBmYWNlLT5zaXplIGNhbiBiZX4wKS4gIElmIHlvdSBuZWVkIGEgc3BlY2lmaWMgYGZvbnQgc2l6ZScsICAqLworICAvKiAgICB1c2UgQEZUQ19NYW5hZ2VyX0xvb2t1cFNpemUgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5ldmVyIGNoYW5nZSB0aGUgZmFjZSdzIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCAoaS5lLiwgbmV2ZXIgY2FsbCAgICAqLworICAvKiAgICB0aGUgQEZUX1NldF9UcmFuc2Zvcm0gZnVuY3Rpb24pIG9uIGEgcmV0dXJuZWQgZmFjZSEgIElmIHlvdSBuZWVkICAgKi8KKyAgLyogICAgdG8gdHJhbnNmb3JtIGdseXBocywgZG8gaXQgeW91cnNlbGYgYWZ0ZXIgZ2x5cGggbG9hZGluZy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIHlvdSBwZXJmb3JtIGEgbG9va3VwLCBvdXQtb2YtbWVtb3J5IGVycm9ycyBhcmUgZGV0ZWN0ZWQgICAgICAgKi8KKyAgLyogICAgX3dpdGhpbl8gdGhlIGxvb2t1cCBhbmQgZm9yY2UgaW5jcmVtZW50YWwgZmx1c2hlcyBvZiB0aGUgY2FjaGUgICAgICovCisgIC8qICAgIHVudGlsIGVub3VnaCBtZW1vcnkgaXMgcmVsZWFzZWQgZm9yIHRoZSBsb29rdXAgdG8gc3VjY2VlZC4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgYSBsb29rdXAgZmFpbHMgd2l0aCBgRlRfRXJyX091dF9PZl9NZW1vcnknIHRoZSBjYWNoZSBoYXMgICAgICAgICovCisgIC8qICAgIGFscmVhZHkgYmVlbiBjb21wbGV0ZWx5IGZsdXNoZWQsIGFuZCBzdGlsbCBubyBtZW1vcnkgd2FzIGF2YWlsYWJsZSAqLworICAvKiAgICBmb3IgdGhlIG9wZXJhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVENfTWFuYWdlcl9Mb29rdXBGYWNlKCBGVENfTWFuYWdlciAgbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRDX0ZhY2VJRCAgIGZhY2VfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICphZmFjZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX1NjYWxlclJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBkZXNjcmliZSBhIGdpdmVuIGNoYXJhY3RlciBzaXplIGluIGVpdGhlciAgICAgICovCisgIC8qICAgIHBpeGVscyBvciBwb2ludHMgdG8gdGhlIGNhY2hlIG1hbmFnZXIuICBTZWUgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBARlRDX01hbmFnZXJfTG9va3VwU2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX2lkIDo6IFRoZSBzb3VyY2UgZmFjZSBJRC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHdpZHRoICAgOjogVGhlIGNoYXJhY3RlciB3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVpZ2h0ICA6OiBUaGUgY2hhcmFjdGVyIGhlaWdodC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwaXhlbCAgIDo6IEEgQm9vbGVhbi4gIElmIDEsIHRoZSBgd2lkdGgnIGFuZCBgaGVpZ2h0JyBmaWVsZHMgYXJlICAgKi8KKyAgLyogICAgICAgICAgICAgICBpbnRlcnByZXRlZCBhcyBpbnRlZ2VyIHBpeGVsIGNoYXJhY3RlciBzaXplcy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCB0aGV5IGFyZSBleHByZXNzZWQgYXMgMS82NHRoIG9mIHBvaW50cy4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeF9yZXMgICA6OiBPbmx5IHVzZWQgd2hlbiBgcGl4ZWwnIGlzIHZhbHVlfjAgdG8gaW5kaWNhdGUgdGhlICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgaG9yaXpvbnRhbCByZXNvbHV0aW9uIGluIGRwaS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeV9yZXMgICA6OiBPbmx5IHVzZWQgd2hlbiBgcGl4ZWwnIGlzIHZhbHVlfjAgdG8gaW5kaWNhdGUgdGhlICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgdmVydGljYWwgcmVzb2x1dGlvbiBpbiBkcGkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgdHlwZSBpcyBtYWlubHkgdXNlZCB0byByZXRyaWV2ZSBARlRfU2l6ZSBvYmplY3RzIHRocm91Z2ggdGhlICAqLworICAvKiAgICBjYWNoZSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVENfU2NhbGVyUmVjXworICB7CisgICAgRlRDX0ZhY2VJRCAgZmFjZV9pZDsKKyAgICBGVF9VSW50ICAgICB3aWR0aDsKKyAgICBGVF9VSW50ICAgICBoZWlnaHQ7CisgICAgRlRfSW50ICAgICAgcGl4ZWw7CisgICAgRlRfVUludCAgICAgeF9yZXM7CisgICAgRlRfVUludCAgICAgeV9yZXM7CisKKyAgfSBGVENfU2NhbGVyUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX1NjYWxlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYW4gQEZUQ19TY2FsZXJSZWMgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVENfU2NhbGVyUmVjXyogIEZUQ19TY2FsZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfTWFuYWdlcl9Mb29rdXBTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXRyaWV2ZSB0aGUgQEZUX1NpemUgb2JqZWN0IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBnaXZlbiAgICAgICAgICAgKi8KKyAgLyogICAgQEZUQ19TY2FsZXJSZWMgcG9pbnRlciB0aHJvdWdoIGEgY2FjaGUgbWFuYWdlci4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWFuYWdlciA6OiBBIGhhbmRsZSB0byB0aGUgY2FjaGUgbWFuYWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzY2FsZXIgIDo6IEEgc2NhbGVyIGhhbmRsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhc2l6ZSAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzaXplIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmV0dXJuZWQgQEZUX1NpemUgb2JqZWN0IGlzIGFsd2F5cyBvd25lZCBieSB0aGUgbWFuYWdlci4gIFlvdSAgKi8KKyAgLyogICAgc2hvdWxkIG5ldmVyIHRyeSB0byBkaXNjYXJkIGl0IGJ5IHlvdXJzZWxmLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBZb3UgY2FuIGFjY2VzcyB0aGUgcGFyZW50IEBGVF9GYWNlIG9iamVjdCBzaW1wbHkgYXMgYHNpemUtPmZhY2UnICAgKi8KKyAgLyogICAgaWYgeW91IG5lZWQgaXQuICBOb3RlIHRoYXQgdGhpcyBvYmplY3QgaXMgYWxzbyBvd25lZCBieSB0aGUgICAgICAgICovCisgIC8qICAgIG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFdoZW4geW91IHBlcmZvcm0gYSBsb29rdXAsIG91dC1vZi1tZW1vcnkgZXJyb3JzIGFyZSBkZXRlY3RlZCAgICAgICAqLworICAvKiAgICBfd2l0aGluXyB0aGUgbG9va3VwIGFuZCBmb3JjZSBpbmNyZW1lbnRhbCBmbHVzaGVzIG9mIHRoZSBjYWNoZSAgICAgKi8KKyAgLyogICAgdW50aWwgZW5vdWdoIG1lbW9yeSBpcyByZWxlYXNlZCBmb3IgdGhlIGxvb2t1cCB0byBzdWNjZWVkLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiBhIGxvb2t1cCBmYWlscyB3aXRoIGBGVF9FcnJfT3V0X09mX01lbW9yeScgdGhlIGNhY2hlIGhhcyAgICAgICAgKi8KKyAgLyogICAgYWxyZWFkeSBiZWVuIGNvbXBsZXRlbHkgZmx1c2hlZCwgYW5kIHN0aWxsIG5vIG1lbW9yeSBpcyBhdmFpbGFibGUgICovCisgIC8qICAgIGZvciB0aGUgb3BlcmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUQ19NYW5hZ2VyX0xvb2t1cFNpemUoIEZUQ19NYW5hZ2VyICBtYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVENfU2NhbGVyICAgc2NhbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TaXplICAgICAqYXNpemUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19Ob2RlX1VucmVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERlY3JlbWVudCBhIGNhY2hlIG5vZGUncyBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQuICBXaGVuIHRoZSBjb3VudCAqLworICAvKiAgICByZWFjaGVzIDAsIGl0IGlzIG5vdCBkZXN0cm95ZWQgYnV0IGJlY29tZXMgZWxpZ2libGUgZm9yIHN1YnNlcXVlbnQgKi8KKyAgLyogICAgY2FjaGUgZmx1c2hlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbm9kZSAgICA6OiBUaGUgY2FjaGUgbm9kZSBoYW5kbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYW5hZ2VyIDo6IFRoZSBjYWNoZSBtYW5hZ2VyIGhhbmRsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUQ19Ob2RlX1VucmVmKCBGVENfTm9kZSAgICAgbm9kZSwKKyAgICAgICAgICAgICAgICAgIEZUQ19NYW5hZ2VyICBtYW5hZ2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRDX01hbmFnZXJfUmVtb3ZlRmFjZUlECisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIHNwZWNpYWwgZnVuY3Rpb24gdXNlZCB0byBpbmRpY2F0ZSB0byB0aGUgY2FjaGUgbWFuYWdlciB0aGF0CisgICAqICAgYSBnaXZlbiBARlRDX0ZhY2VJRCBpcyBubyBsb25nZXIgdmFsaWQsIGVpdGhlciBiZWNhdXNlIGl0cworICAgKiAgIGNvbnRlbnQgY2hhbmdlZCwgb3IgYmVjYXVzZSBpdCB3YXMgZGVhbGxvY2F0ZWQgb3IgdW5pbnN0YWxsZWQuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBtYW5hZ2VyIDo6CisgICAqICAgICBUaGUgY2FjaGUgbWFuYWdlciBoYW5kbGUuCisgICAqCisgICAqICAgZmFjZV9pZCA6OgorICAgKiAgICAgVGhlIEBGVENfRmFjZUlEIHRvIGJlIHJlbW92ZWQuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoaXMgZnVuY3Rpb24gZmx1c2hlcyBhbGwgbm9kZXMgZnJvbSB0aGUgY2FjaGUgY29ycmVzcG9uZGluZyB0byB0aGlzCisgICAqICAgYGZhY2VfaWQnLCB3aXRoIHRoZSBleGNlcHRpb24gb2Ygbm9kZXMgd2l0aCBhIG5vbi1udWxsIHJlZmVyZW5jZQorICAgKiAgIGNvdW50LgorICAgKgorICAgKiAgIFN1Y2ggbm9kZXMgYXJlIGhvd2V2ZXIgbW9kaWZpZWQgaW50ZXJuYWxseSBzbyBhcyB0byBuZXZlciBhcHBlYXIKKyAgICogICBpbiBsYXRlciBsb29rdXBzIHdpdGggdGhlIHNhbWUgYGZhY2VfaWQnIHZhbHVlLCBhbmQgdG8gYmUgaW1tZWRpYXRlbHkKKyAgICogICBkZXN0cm95ZWQgd2hlbiByZWxlYXNlZCBieSBhbGwgdGhlaXIgdXNlcnMuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVENfTWFuYWdlcl9SZW1vdmVGYWNlSUQoIEZUQ19NYW5hZ2VyICBtYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19GYWNlSUQgICBmYWNlX2lkICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYWNoZV9zdWJzeXN0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUQ19DTWFwQ2FjaGUKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEFuIG9wYXF1ZSBoYW5kbGUgdXNlZCB0byBtb2RlbCBhIGNoYXJtYXAgY2FjaGUuICBUaGlzIGNhY2hlIGlzIHRvCisgICAqICAgaG9sZCBjaGFyYWN0ZXIgY29kZXMgLT4gZ2x5cGggaW5kaWNlcyBtYXBwaW5ncy4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUQ19DTWFwQ2FjaGVSZWNfKiAgRlRDX0NNYXBDYWNoZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVENfQ01hcENhY2hlX05ldworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ3JlYXRlIGEgbmV3IGNoYXJtYXAgY2FjaGUuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBtYW5hZ2VyIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgY2FjaGUgbWFuYWdlci4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICBhY2FjaGUgOjoKKyAgICogICAgIEEgbmV3IGNhY2hlIGhhbmRsZS4gIE5VTEwgaW4gY2FzZSBvZiBlcnJvci4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBMaWtlIGFsbCBvdGhlciBjYWNoZXMsIHRoaXMgb25lIHdpbGwgYmUgZGVzdHJveWVkIHdpdGggdGhlIGNhY2hlCisgICAqICAgbWFuYWdlci4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVENfQ01hcENhY2hlX05ldyggRlRDX01hbmFnZXIgICAgIG1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICBGVENfQ01hcENhY2hlICAqYWNhY2hlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVENfQ01hcENhY2hlX0xvb2t1cAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVHJhbnNsYXRlIGEgY2hhcmFjdGVyIGNvZGUgaW50byBhIGdseXBoIGluZGV4LCB1c2luZyB0aGUgY2hhcm1hcAorICAgKiAgIGNhY2hlLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgY2FjaGUgOjoKKyAgICogICAgIEEgY2hhcm1hcCBjYWNoZSBoYW5kbGUuCisgICAqCisgICAqICAgZmFjZV9pZCA6OgorICAgKiAgICAgVGhlIHNvdXJjZSBmYWNlIElELgorICAgKgorICAgKiAgIGNtYXBfaW5kZXggOjoKKyAgICogICAgIFRoZSBpbmRleCBvZiB0aGUgY2hhcm1hcCBpbiB0aGUgc291cmNlIGZhY2UuICBBbnkgbmVnYXRpdmUgdmFsdWUKKyAgICogICAgIG1lYW5zIHRvIHVzZSB0aGUgY2FjaGUgQEZUX0ZhY2UncyBkZWZhdWx0IGNoYXJtYXAuCisgICAqCisgICAqICAgY2hhcl9jb2RlIDo6CisgICAqICAgICBUaGUgY2hhcmFjdGVyIGNvZGUgKGluIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJtYXApLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgICBHbHlwaCBpbmRleC4gIDB+bWVhbnMgYG5vIGdseXBoJy4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfVUludCApCisgIEZUQ19DTWFwQ2FjaGVfTG9va3VwKCBGVENfQ01hcENhY2hlICBjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19GYWNlSUQgICAgIGZhY2VfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBjbWFwX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAgICAgY2hhcl9jb2RlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYWNoZV9zdWJzeXN0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgSU1BR0UgQ0FDSEUgT0JKRUNUICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRDX0ltYWdlVHlwZVJlYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCB0aGUgdHlwZSBvZiBpbWFnZXMgaW4gYSBnbHlwaCBjYWNoZS4KKyAgICoKKyAgICogQGZpZWxkczoKKyAgICogICBmYWNlX2lkIDo6CisgICAqICAgICBUaGUgZmFjZSBJRC4KKyAgICoKKyAgICogICB3aWR0aCA6OgorICAgKiAgICAgVGhlIHdpZHRoIGluIHBpeGVscy4KKyAgICoKKyAgICogICBoZWlnaHQgOjoKKyAgICogICAgIFRoZSBoZWlnaHQgaW4gcGl4ZWxzLgorICAgKgorICAgKiAgIGZsYWdzIDo6CisgICAqICAgICBUaGUgbG9hZCBmbGFncywgYXMgaW4gQEZUX0xvYWRfR2x5cGguCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRDX0ltYWdlVHlwZVJlY18KKyAgeworICAgIEZUQ19GYWNlSUQgIGZhY2VfaWQ7CisgICAgRlRfSW50ICAgICAgd2lkdGg7CisgICAgRlRfSW50ICAgICAgaGVpZ2h0OworICAgIEZUX0ludDMyICAgIGZsYWdzOworCisgIH0gRlRDX0ltYWdlVHlwZVJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUQ19JbWFnZVR5cGUKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgaGFuZGxlIHRvIGFuIEBGVENfSW1hZ2VUeXBlUmVjIHN0cnVjdHVyZS4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUQ19JbWFnZVR5cGVSZWNfKiAgRlRDX0ltYWdlVHlwZTsKKworCisgIC8qICovCisKKworI2RlZmluZSBGVENfSU1BR0VfVFlQRV9DT01QQVJFKCBkMSwgZDIgKSAgICAgIFwKKyAgICAgICAgICAoIChkMSktPmZhY2VfaWQgPT0gKGQyKS0+ZmFjZV9pZCAmJiBcCisgICAgICAgICAgICAoZDEpLT53aWR0aCAgID09IChkMiktPndpZHRoICAgJiYgXAorICAgICAgICAgICAgKGQxKS0+ZmxhZ3MgICA9PSAoZDIpLT5mbGFncyAgICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19JbWFnZUNhY2hlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgZ2x5cGggaW1hZ2UgY2FjaGUgb2JqZWN0LiAgVGhleSBhcmUgZGVzaWduZWQgdG8gICAgICAqLworICAvKiAgICBob2xkIG1hbnkgZGlzdGluY3QgZ2x5cGggaW1hZ2VzIHdoaWxlIG5vdCBleGNlZWRpbmcgYSBjZXJ0YWluICAgICAgKi8KKyAgLyogICAgbWVtb3J5IHRocmVzaG9sZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVENfSW1hZ2VDYWNoZVJlY18qICBGVENfSW1hZ2VDYWNoZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19JbWFnZUNhY2hlX05ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENyZWF0ZSBhIG5ldyBnbHlwaCBpbWFnZSBjYWNoZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hbmFnZXIgOjogVGhlIHBhcmVudCBtYW5hZ2VyIGZvciB0aGUgaW1hZ2UgY2FjaGUuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFjYWNoZSAgOjogQSBoYW5kbGUgdG8gdGhlIG5ldyBnbHlwaCBpbWFnZSBjYWNoZSBvYmplY3QuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUQ19JbWFnZUNhY2hlX05ldyggRlRDX01hbmFnZXIgICAgICBtYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgIEZUQ19JbWFnZUNhY2hlICAqYWNhY2hlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfSW1hZ2VDYWNoZV9Mb29rdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXRyaWV2ZSBhIGdpdmVuIGdseXBoIGltYWdlIGZyb20gYSBnbHlwaCBpbWFnZSBjYWNoZS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYWNoZSAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBnbHlwaCBpbWFnZSBjYWNoZS4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR5cGUgICA6OiBBIHBvaW50ZXIgdG8gYSBnbHlwaCBpbWFnZSB0eXBlIGRlc2NyaXB0b3IuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2luZGV4IDo6IFRoZSBnbHlwaCBpbmRleCB0byByZXRyaWV2ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWdseXBoIDo6IFRoZSBjb3JyZXNwb25kaW5nIEBGVF9HbHlwaCBvYmplY3QuICAwfmluIGNhc2Ugb2YgICAgICAgICovCisgIC8qICAgICAgICAgICAgICBmYWlsdXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYW5vZGUgIDo6IFVzZWQgdG8gcmV0dXJuIHRoZSBhZGRyZXNzIG9mIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNhY2hlICovCisgIC8qICAgICAgICAgICAgICBub2RlIGFmdGVyIGluY3JlbWVudGluZyBpdHMgcmVmZXJlbmNlIGNvdW50IChzZWUgbm90ZSAgICAqLworICAvKiAgICAgICAgICAgICAgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmV0dXJuZWQgZ2x5cGggaXMgb3duZWQgYW5kIG1hbmFnZWQgYnkgdGhlIGdseXBoIGltYWdlIGNhY2hlLiAgKi8KKyAgLyogICAgTmV2ZXIgdHJ5IHRvIHRyYW5zZm9ybSBvciBkaXNjYXJkIGl0IG1hbnVhbGx5ISAgWW91IGNhbiBob3dldmVyICAgICovCisgIC8qICAgIGNyZWF0ZSBhIGNvcHkgd2l0aCBARlRfR2x5cGhfQ29weSBhbmQgbW9kaWZ5IHRoZSBuZXcgb25lLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgYGFub2RlJyBpcyBfbm90XyBOVUxMLCBpdCByZWNlaXZlcyB0aGUgYWRkcmVzcyBvZiB0aGUgY2FjaGUgICAgICovCisgIC8qICAgIG5vZGUgY29udGFpbmluZyB0aGUgZ2x5cGggaW1hZ2UsIGFmdGVyIGluY3JlYXNpbmcgaXRzIHJlZmVyZW5jZSAgICAqLworICAvKiAgICBjb3VudC4gIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBub2RlIChhcyB3ZWxsIGFzIHRoZSBARlRfR2x5cGgpIHdpbGwgKi8KKyAgLyogICAgYWx3YXlzIGJlIGtlcHQgaW4gdGhlIGNhY2hlIHVudGlsIHlvdSBjYWxsIEBGVENfTm9kZV9VbnJlZiB0byAgICAgICovCisgIC8qICAgIGByZWxlYXNlJyBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgYGFub2RlJyBpcyBOVUxMLCB0aGUgY2FjaGUgbm9kZSBpcyBsZWZ0IHVuY2hhbmdlZCwgd2hpY2ggbWVhbnMgICovCisgIC8qICAgIHRoYXQgdGhlIEBGVF9HbHlwaCBjb3VsZCBiZSBmbHVzaGVkIG91dCBvZiB0aGUgY2FjaGUgb24gdGhlIG5leHQgICAqLworICAvKiAgICBjYWxsIHRvIG9uZSBvZiB0aGUgY2FjaGluZyBzdWItc3lzdGVtIEFQSXMuICBEb24ndCBhc3N1bWUgdGhhdCBpdCAgKi8KKyAgLyogICAgaXMgcGVyc2lzdGVudCEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRDX0ltYWdlQ2FjaGVfTG9va3VwKCBGVENfSW1hZ2VDYWNoZSAgY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRDX0ltYWdlVHlwZSAgIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaCAgICAgICAqYWdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19Ob2RlICAgICAgICphbm9kZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX0ltYWdlQ2FjaGVfTG9va3VwU2NhbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB2YXJpYW50IG9mIEBGVENfSW1hZ2VDYWNoZV9Mb29rdXAgdGhhdCB1c2VzIGFuIEBGVENfU2NhbGVyUmVjICAgICovCisgIC8qICAgIHRvIHNwZWNpZnkgdGhlIGZhY2UgSUQgYW5kIGl0cyBzaXplLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNhY2hlICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBnbHlwaCBpbWFnZSBjYWNoZS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2NhbGVyICAgICA6OiBBIHBvaW50ZXIgdG8gYSBzY2FsZXIgZGVzY3JpcHRvci4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkX2ZsYWdzIDo6IFRoZSBjb3JyZXNwb25kaW5nIGxvYWQgZmxhZ3MuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdpbmRleCAgICAgOjogVGhlIGdseXBoIGluZGV4IHRvIHJldHJpZXZlLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFnbHlwaCAgICAgOjogVGhlIGNvcnJlc3BvbmRpbmcgQEZUX0dseXBoIG9iamVjdC4gIDB+aW4gY2FzZSBvZiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGZhaWx1cmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFub2RlICAgICAgOjogVXNlZCB0byByZXR1cm4gdGhlIGFkZHJlc3Mgb2Ygb2YgdGhlIGNvcnJlc3BvbmRpbmcgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGNhY2hlIG5vZGUgYWZ0ZXIgaW5jcmVtZW50aW5nIGl0cyByZWZlcmVuY2UgY291bnQgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAoc2VlIG5vdGUgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJldHVybmVkIGdseXBoIGlzIG93bmVkIGFuZCBtYW5hZ2VkIGJ5IHRoZSBnbHlwaCBpbWFnZSBjYWNoZS4gICovCisgIC8qICAgIE5ldmVyIHRyeSB0byB0cmFuc2Zvcm0gb3IgZGlzY2FyZCBpdCBtYW51YWxseSEgIFlvdSBjYW4gaG93ZXZlciAgICAqLworICAvKiAgICBjcmVhdGUgYSBjb3B5IHdpdGggQEZUX0dseXBoX0NvcHkgYW5kIG1vZGlmeSB0aGUgbmV3IG9uZS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGBhbm9kZScgaXMgX25vdF8gTlVMTCwgaXQgcmVjZWl2ZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGNhY2hlICAgICAqLworICAvKiAgICBub2RlIGNvbnRhaW5pbmcgdGhlIGdseXBoIGltYWdlLCBhZnRlciBpbmNyZWFzaW5nIGl0cyByZWZlcmVuY2UgICAgKi8KKyAgLyogICAgY291bnQuICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbm9kZSAoYXMgd2VsbCBhcyB0aGUgQEZUX0dseXBoKSB3aWxsICovCisgIC8qICAgIGFsd2F5cyBiZSBrZXB0IGluIHRoZSBjYWNoZSB1bnRpbCB5b3UgY2FsbCBARlRDX05vZGVfVW5yZWYgdG8gICAgICAqLworICAvKiAgICBgcmVsZWFzZScgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGBhbm9kZScgaXMgTlVMTCwgdGhlIGNhY2hlIG5vZGUgaXMgbGVmdCB1bmNoYW5nZWQsIHdoaWNoIG1lYW5zICAqLworICAvKiAgICB0aGF0IHRoZSBARlRfR2x5cGggY291bGQgYmUgZmx1c2hlZCBvdXQgb2YgdGhlIGNhY2hlIG9uIHRoZSBuZXh0ICAgKi8KKyAgLyogICAgY2FsbCB0byBvbmUgb2YgdGhlIGNhY2hpbmcgc3ViLXN5c3RlbSBBUElzLiAgRG9uJ3QgYXNzdW1lIHRoYXQgaXQgICovCisgIC8qICAgIGlzIHBlcnNpc3RlbnQhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ2FsbHMgdG8gQEZUX1NldF9DaGFyX1NpemUgYW5kIGZyaWVuZHMgaGF2ZSBubyBlZmZlY3Qgb24gY2FjaGVkICAgICovCisgIC8qICAgIGdseXBoczsgeW91IHNob3VsZCBhbHdheXMgdXNlIHRoZSBGcmVlVHlwZSBjYWNoZSBBUEkgaW5zdGVhZC4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUQ19JbWFnZUNhY2hlX0xvb2t1cFNjYWxlciggRlRDX0ltYWdlQ2FjaGUgIGNhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19TY2FsZXIgICAgICBzY2FsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgIGxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaCAgICAgICAqYWdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19Ob2RlICAgICAgICphbm9kZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX1NCaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBzbWFsbCBiaXRtYXAgZGVzY3JpcHRvci4gIFNlZSB0aGUgQEZUQ19TQml0UmVjICAgICAgICovCisgIC8qICAgIHN0cnVjdHVyZSBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRDX1NCaXRSZWNfKiAgRlRDX1NCaXQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfU0JpdFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHZlcnkgY29tcGFjdCBzdHJ1Y3R1cmUgdXNlZCB0byBkZXNjcmliZSBhIHNtYWxsIGdseXBoIGJpdG1hcC4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB3aWR0aCAgICAgOjogVGhlIGJpdG1hcCB3aWR0aCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhlaWdodCAgICA6OiBUaGUgYml0bWFwIGhlaWdodCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGVmdCAgICAgIDo6IFRoZSBob3Jpem9udGFsIGRpc3RhbmNlIGZyb20gdGhlIHBlbiBwb3NpdGlvbiB0byB0aGUgICovCisgIC8qICAgICAgICAgICAgICAgICBsZWZ0IGJpdG1hcCBib3JkZXIgKGEuay5hLiBgbGVmdCBzaWRlIGJlYXJpbmcnLCBvciAgICAqLworICAvKiAgICAgICAgICAgICAgICAgYGxzYicpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvcCAgICAgICA6OiBUaGUgdmVydGljYWwgZGlzdGFuY2UgZnJvbSB0aGUgcGVuIHBvc2l0aW9uIChvbiB0aGUgICAqLworICAvKiAgICAgICAgICAgICAgICAgYmFzZWxpbmUpIHRvIHRoZSB1cHBlciBiaXRtYXAgYm9yZGVyIChhLmsuYS4gYHRvcCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIHNpZGUgYmVhcmluZycpLiAgVGhlIGRpc3RhbmNlIGlzIHBvc2l0aXZlIGZvciB1cHdhcmRzICovCisgIC8qICAgICAgICAgICAgICAgICB5fmNvb3JkaW5hdGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZm9ybWF0ICAgIDo6IFRoZSBmb3JtYXQgb2YgdGhlIGdseXBoIGJpdG1hcCAobW9ub2Nocm9tZSBvciBncmF5KS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfZ3JheXMgOjogTWF4aW11bSBncmF5IGxldmVsIHZhbHVlIChpbiB0aGUgcmFuZ2UgMSB0b34yNTUpLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBpdGNoICAgICA6OiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHBlciBiaXRtYXAgbGluZS4gIE1heSBiZSBwb3NpdGl2ZSAqLworICAvKiAgICAgICAgICAgICAgICAgb3IgbmVnYXRpdmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHhhZHZhbmNlICA6OiBUaGUgaG9yaXpvbnRhbCBhZHZhbmNlIHdpZHRoIGluIHBpeGVscy4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeWFkdmFuY2UgIDo6IFRoZSB2ZXJ0aWNhbCBhZHZhbmNlIGhlaWdodCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBidWZmZXIgICAgOjogQSBwb2ludGVyIHRvIHRoZSBiaXRtYXAgcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVENfU0JpdFJlY18KKyAgeworICAgIEZUX0J5dGUgICB3aWR0aDsKKyAgICBGVF9CeXRlICAgaGVpZ2h0OworICAgIEZUX0NoYXIgICBsZWZ0OworICAgIEZUX0NoYXIgICB0b3A7CisKKyAgICBGVF9CeXRlICAgZm9ybWF0OworICAgIEZUX0J5dGUgICBtYXhfZ3JheXM7CisgICAgRlRfU2hvcnQgIHBpdGNoOworICAgIEZUX0NoYXIgICB4YWR2YW5jZTsKKyAgICBGVF9DaGFyICAgeWFkdmFuY2U7CisKKyAgICBGVF9CeXRlKiAgYnVmZmVyOworCisgIH0gRlRDX1NCaXRSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfU0JpdENhY2hlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIHNtYWxsIGJpdG1hcCBjYWNoZS4gIFRoZXNlIGFyZSBzcGVjaWFsIGNhY2hlIG9iamVjdHMgKi8KKyAgLyogICAgdXNlZCB0byBzdG9yZSBzbWFsbCBnbHlwaCBiaXRtYXBzIChhbmQgYW50aS1hbGlhc2VkIHBpeG1hcHMpIGluIGEgICovCisgIC8qICAgIG11Y2ggbW9yZSBlZmZpY2llbnQgd2F5IHRoYW4gdGhlIHRyYWRpdGlvbmFsIGdseXBoIGltYWdlIGNhY2hlICAgICAqLworICAvKiAgICBpbXBsZW1lbnRlZCBieSBARlRDX0ltYWdlQ2FjaGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUQ19TQml0Q2FjaGVSZWNfKiAgRlRDX1NCaXRDYWNoZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19TQml0Q2FjaGVfTmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENyZWF0ZSBhIG5ldyBjYWNoZSB0byBzdG9yZSBzbWFsbCBnbHlwaCBiaXRtYXBzLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hbmFnZXIgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBjYWNoZSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFjYWNoZSAgOjogQSBoYW5kbGUgdG8gdGhlIG5ldyBzYml0IGNhY2hlLiAgTlVMTCBpbiBjYXNlIG9mIGVycm9yLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUQ19TQml0Q2FjaGVfTmV3KCBGVENfTWFuYWdlciAgICAgbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgIEZUQ19TQml0Q2FjaGUgICphY2FjaGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19TQml0Q2FjaGVfTG9va3VwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvb2sgdXAgYSBnaXZlbiBzbWFsbCBnbHlwaCBiaXRtYXAgaW4gYSBnaXZlbiBzYml0IGNhY2hlIGFuZCAgICAgICAqLworICAvKiAgICBgbG9jaycgaXQgdG8gcHJldmVudCBpdHMgZmx1c2hpbmcgZnJvbSB0aGUgY2FjaGUgdW50aWwgbmVlZGVkLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYWNoZSAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBzYml0IGNhY2hlLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR5cGUgICA6OiBBIHBvaW50ZXIgdG8gdGhlIGdseXBoIGltYWdlIHR5cGUgZGVzY3JpcHRvci4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2luZGV4IDo6IFRoZSBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2JpdCAgIDo6IEEgaGFuZGxlIHRvIGEgc21hbGwgYml0bWFwIGRlc2NyaXB0b3IuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhbm9kZSAgOjogVXNlZCB0byByZXR1cm4gdGhlIGFkZHJlc3Mgb2Ygb2YgdGhlIGNvcnJlc3BvbmRpbmcgY2FjaGUgKi8KKyAgLyogICAgICAgICAgICAgIG5vZGUgYWZ0ZXIgaW5jcmVtZW50aW5nIGl0cyByZWZlcmVuY2UgY291bnQgKHNlZSBub3RlICAgICovCisgIC8qICAgICAgICAgICAgICBiZWxvdykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBzbWFsbCBiaXRtYXAgZGVzY3JpcHRvciBhbmQgaXRzIGJpdCBidWZmZXIgYXJlIG93bmVkIGJ5IHRoZSAgICAqLworICAvKiAgICBjYWNoZSBhbmQgc2hvdWxkIG5ldmVyIGJlIGZyZWVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gIFRoZXkgbWlnaHQgICAgKi8KKyAgLyogICAgYXMgd2VsbCBkaXNhcHBlYXIgZnJvbSBtZW1vcnkgb24gdGhlIG5leHQgY2FjaGUgbG9va3VwLCBzbyBkb24ndCAgICovCisgIC8qICAgIHRyZWF0IHRoZW0gYXMgcGVyc2lzdGVudCBkYXRhLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGRlc2NyaXB0b3IncyBgYnVmZmVyJyBmaWVsZCBpcyBzZXQgdG9+MCB0byBpbmRpY2F0ZSBhIG1pc3NpbmcgICovCisgIC8qICAgIGdseXBoIGJpdG1hcC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgYGFub2RlJyBpcyBfbm90XyBOVUxMLCBpdCByZWNlaXZlcyB0aGUgYWRkcmVzcyBvZiB0aGUgY2FjaGUgICAgICovCisgIC8qICAgIG5vZGUgY29udGFpbmluZyB0aGUgYml0bWFwLCBhZnRlciBpbmNyZWFzaW5nIGl0cyByZWZlcmVuY2UgY291bnQuICAqLworICAvKiAgICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbm9kZSAoYXMgd2VsbCBhcyB0aGUgaW1hZ2UpIHdpbGwgYWx3YXlzIGJlICAgKi8KKyAgLyogICAga2VwdCBpbiB0aGUgY2FjaGUgdW50aWwgeW91IGNhbGwgQEZUQ19Ob2RlX1VucmVmIHRvIGByZWxlYXNlJyBpdC4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiBgYW5vZGUnIGlzIE5VTEwsIHRoZSBjYWNoZSBub2RlIGlzIGxlZnQgdW5jaGFuZ2VkLCB3aGljaCBtZWFucyAgKi8KKyAgLyogICAgdGhhdCB0aGUgYml0bWFwIGNvdWxkIGJlIGZsdXNoZWQgb3V0IG9mIHRoZSBjYWNoZSBvbiB0aGUgbmV4dCAgICAgICovCisgIC8qICAgIGNhbGwgdG8gb25lIG9mIHRoZSBjYWNoaW5nIHN1Yi1zeXN0ZW0gQVBJcy4gIERvbid0IGFzc3VtZSB0aGF0IGl0ICAqLworICAvKiAgICBpcyBwZXJzaXN0ZW50ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVENfU0JpdENhY2hlX0xvb2t1cCggRlRDX1NCaXRDYWNoZSAgICBjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19JbWFnZVR5cGUgICAgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgZ2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRDX1NCaXQgICAgICAgICpzYml0LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRDX05vZGUgICAgICAgICphbm9kZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX1NCaXRDYWNoZV9Mb29rdXBTY2FsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB2YXJpYW50IG9mIEBGVENfU0JpdENhY2hlX0xvb2t1cCB0aGF0IHVzZXMgYW4gQEZUQ19TY2FsZXJSZWMgICAgICovCisgIC8qICAgIHRvIHNwZWNpZnkgdGhlIGZhY2UgSUQgYW5kIGl0cyBzaXplLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNhY2hlICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBzYml0IGNhY2hlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2NhbGVyICAgICA6OiBBIHBvaW50ZXIgdG8gdGhlIHNjYWxlciBkZXNjcmlwdG9yLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkX2ZsYWdzIDo6IFRoZSBjb3JyZXNwb25kaW5nIGxvYWQgZmxhZ3MuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdpbmRleCAgICAgOjogVGhlIGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNiaXQgICAgICAgOjogQSBoYW5kbGUgdG8gYSBzbWFsbCBiaXRtYXAgZGVzY3JpcHRvci4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYW5vZGUgICAgICA6OiBVc2VkIHRvIHJldHVybiB0aGUgYWRkcmVzcyBvZiBvZiB0aGUgY29ycmVzcG9uZGluZyAgICovCisgIC8qICAgICAgICAgICAgICAgICAgY2FjaGUgbm9kZSBhZnRlciBpbmNyZW1lbnRpbmcgaXRzIHJlZmVyZW5jZSBjb3VudCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIChzZWUgbm90ZSBiZWxvdykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgc21hbGwgYml0bWFwIGRlc2NyaXB0b3IgYW5kIGl0cyBiaXQgYnVmZmVyIGFyZSBvd25lZCBieSB0aGUgICAgKi8KKyAgLyogICAgY2FjaGUgYW5kIHNob3VsZCBuZXZlciBiZSBmcmVlZCBieSB0aGUgYXBwbGljYXRpb24uICBUaGV5IG1pZ2h0ICAgICovCisgIC8qICAgIGFzIHdlbGwgZGlzYXBwZWFyIGZyb20gbWVtb3J5IG9uIHRoZSBuZXh0IGNhY2hlIGxvb2t1cCwgc28gZG9uJ3QgICAqLworICAvKiAgICB0cmVhdCB0aGVtIGFzIHBlcnNpc3RlbnQgZGF0YS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBkZXNjcmlwdG9yJ3MgYGJ1ZmZlcicgZmllbGQgaXMgc2V0IHRvfjAgdG8gaW5kaWNhdGUgYSBtaXNzaW5nICAqLworICAvKiAgICBnbHlwaCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGBhbm9kZScgaXMgX25vdF8gTlVMTCwgaXQgcmVjZWl2ZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGNhY2hlICAgICAqLworICAvKiAgICBub2RlIGNvbnRhaW5pbmcgdGhlIGJpdG1hcCwgYWZ0ZXIgaW5jcmVhc2luZyBpdHMgcmVmZXJlbmNlIGNvdW50LiAgKi8KKyAgLyogICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG5vZGUgKGFzIHdlbGwgYXMgdGhlIGltYWdlKSB3aWxsIGFsd2F5cyBiZSAgICovCisgIC8qICAgIGtlcHQgaW4gdGhlIGNhY2hlIHVudGlsIHlvdSBjYWxsIEBGVENfTm9kZV9VbnJlZiB0byBgcmVsZWFzZScgaXQuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgYGFub2RlJyBpcyBOVUxMLCB0aGUgY2FjaGUgbm9kZSBpcyBsZWZ0IHVuY2hhbmdlZCwgd2hpY2ggbWVhbnMgICovCisgIC8qICAgIHRoYXQgdGhlIGJpdG1hcCBjb3VsZCBiZSBmbHVzaGVkIG91dCBvZiB0aGUgY2FjaGUgb24gdGhlIG5leHQgICAgICAqLworICAvKiAgICBjYWxsIHRvIG9uZSBvZiB0aGUgY2FjaGluZyBzdWItc3lzdGVtIEFQSXMuICBEb24ndCBhc3N1bWUgdGhhdCBpdCAgKi8KKyAgLyogICAgaXMgcGVyc2lzdGVudCEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRDX1NCaXRDYWNoZV9Mb29rdXBTY2FsZXIoIEZUQ19TQml0Q2FjaGUgIGNhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRDX1NjYWxlciAgICAgc2NhbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgIGdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19TQml0ICAgICAgKnNiaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVENfTm9kZSAgICAgICphbm9kZSApOworCisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUQ0FDSEVfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0Y2ZmZHJ2LmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0Y2ZmZHJ2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EzNzc5NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRjZmZkcnYuaApAQCAtMCwwICsxLDE1MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRjZmZkcnYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgY29udHJvbGxpbmcgdGhlIENGRiBkcml2ZXIgKHNwZWNpZmljYXRpb24gb25seSkuICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRDRkZEUlZfSF9fCisjZGVmaW5lIF9fRlRDRkZEUlZfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzZWN0aW9uOgorICAgKiAgIGNmZl9kcml2ZXIKKyAgICoKKyAgICogQHRpdGxlOgorICAgKiAgIFRoZSBDRkYgZHJpdmVyCisgICAqCisgICAqIEBhYnN0cmFjdDoKKyAgICogICBDb250cm9sbGluZyB0aGUgQ0ZGIGRyaXZlciBtb2R1bGUuCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBXaGlsZSBGcmVlVHlwZSdzIENGRiBkcml2ZXIgZG9lc24ndCBleHBvc2UgQVBJIGZ1bmN0aW9ucyBieSBpdHNlbGYsCisgICAqICAgaXQgaXMgcG9zc2libGUgdG8gY29udHJvbCBpdHMgYmVoYXZpb3VyIHdpdGggQEZUX1Byb3BlcnR5X1NldCBhbmQKKyAgICogICBARlRfUHJvcGVydHlfR2V0LiAgVGhlIGZvbGxvd2luZyBsaXN0cyB0aGUgYXZhaWxhYmxlIHByb3BlcnRpZXMKKyAgICogICB0b2dldGhlciB3aXRoIHRoZSBuZWNlc3NhcnkgbWFjcm9zIGFuZCBzdHJ1Y3R1cmVzLgorICAgKgorICAgKiAgIFRoZSBDRkYgZHJpdmVyJ3MgbW9kdWxlIG5hbWUgaXMgYGNmZicuCisgICAqCisgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBwcm9wZXJ0eToKKyAgICogICBoaW50aW5nLWVuZ2luZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhhbmtzIHRvIEFkb2JlLCB3aGljaCBjb250cmlidXRlZCBhIG5ldyBoaW50aW5nIChhbmQgcGFyc2luZykKKyAgICogICBlbmdpbmUsIGFuIGFwcGxpY2F0aW9uIGNhbiBzZWxlY3QgYmV0d2VlbiBgZnJlZXR5cGUnIGFuZCBgYWRvYmUnIGlmCisgICAqICAgY29tcGlsZWQgd2l0aCBDRkZfQ09ORklHX09QVElPTl9PTERfRU5HSU5FLiAgSWYgdGhpcyBjb25maWd1cmF0aW9uCisgICAqICAgbWFjcm8gaXNuJ3QgZGVmaW5lZCwgYGhpbnRpbmctZW5naW5lJyBkb2VzIG5vdGhpbmcuCisgICAqCisgICAqICAgVGhlIGRlZmF1bHQgZW5naW5lIGlzIGBmcmVldHlwZScgaWYgQ0ZGX0NPTkZJR19PUFRJT05fT0xEX0VOR0lORSBpcworICAgKiAgIGRlZmluZWQsIGFuZCBgYWRvYmUnIG90aGVyd2lzZS4KKyAgICoKKyAgICogICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29kZSBkZW1vbnN0cmF0ZXMgaG93IHRvIHNlbGVjdCBBZG9iZSdzIGhpbnRpbmcKKyAgICogICBlbmdpbmUgKG9taXR0aW5nIHRoZSBlcnJvciBoYW5kbGluZykuCisgICAqCisgICAqICAgeworICAgKiAgICAgRlRfTGlicmFyeSAgbGlicmFyeTsKKyAgICogICAgIEZUX0ZhY2UgICAgIGZhY2U7CisgICAqICAgICBGVF9VSW50ICAgICBoaW50aW5nX2VuZ2luZSA9IEZUX0NGRl9ISU5USU5HX0FET0JFOworICAgKgorICAgKgorICAgKiAgICAgRlRfSW5pdF9GcmVlVHlwZSggJmxpYnJhcnkgKTsKKyAgICoKKyAgICogICAgIEZUX1Byb3BlcnR5X1NldCggbGlicmFyeSwgImNmZiIsCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaW50aW5nLWVuZ2luZSIsICZoaW50aW5nX2VuZ2luZSApOworICAgKiAgIH0KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB3aXRoIEBGVF9Qcm9wZXJ0eV9HZXQgYWxzby4KKyAgICoKKyAgICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgRlRfQ0ZGX0hJTlRJTkdfWFhYCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGxpc3Qgb2YgY29uc3RhbnRzIHVzZWQgZm9yIHRoZSBAaGludGluZy1lbmdpbmUgcHJvcGVydHkgdG8gc2VsZWN0CisgICAqICAgdGhlIGhpbnRpbmcgZW5naW5lIGZvciBDRkYgZm9udHMuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgRlRfQ0ZGX0hJTlRJTkdfRlJFRVRZUEUgOjoKKyAgICogICAgIFVzZSB0aGUgb2xkIEZyZWVUeXBlIGhpbnRpbmcgZW5naW5lLgorICAgKgorICAgKiAgIEZUX0NGRl9ISU5USU5HX0FET0JFIDo6CisgICAqICAgICBVc2UgdGhlIGhpbnRpbmcgZW5naW5lIGNvbnRyaWJ1dGVkIGJ5IEFkb2JlLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfQ0ZGX0hJTlRJTkdfRlJFRVRZUEUgIDAKKyNkZWZpbmUgRlRfQ0ZGX0hJTlRJTkdfQURPQkUgICAgIDEKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAcHJvcGVydHk6CisgICAqICAgbm8tc3RlbS1kYXJrZW5pbmcKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEJ5IGRlZmF1bHQsIHRoZSBBZG9iZSBDRkYgZW5naW5lIGRhcmtlbnMgc3RlbXMgYXQgc21hbGxlciBzaXplcywKKyAgICogICByZWdhcmRsZXNzIG9mIGhpbnRpbmcsIHRvIGVuaGFuY2UgY29udHJhc3QuICBTZXR0aW5nIHRoaXMgcHJvcGVydHksCisgICAqICAgc3RlbSBkYXJrZW5pbmcgZ2V0cyBzd2l0Y2hlZCBvZmYuCisgICAqCisgICAqICAgTm90ZSB0aGF0IHN0ZW0gZGFya2VuaW5nIGlzIG5ldmVyIGFwcGxpZWQgaWYgQEZUX0xPQURfTk9fU0NBTEUgaXMgc2V0LgorICAgKgorICAgKiAgIHsKKyAgICogICAgIEZUX0xpYnJhcnkgIGxpYnJhcnk7CisgICAqICAgICBGVF9GYWNlICAgICBmYWNlOworICAgKiAgICAgRlRfQm9vbCAgICAgbm9fc3RlbV9kYXJrZW5pbmcgPSBUUlVFOworICAgKgorICAgKgorICAgKiAgICAgRlRfSW5pdF9GcmVlVHlwZSggJmxpYnJhcnkgKTsKKyAgICoKKyAgICogICAgIEZUX1Byb3BlcnR5X1NldCggbGlicmFyeSwgImNmZiIsCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuby1zdGVtLWRhcmtlbmluZyIsICZub19zdGVtX2RhcmtlbmluZyApOworICAgKiAgIH0KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB3aXRoIEBGVF9Qcm9wZXJ0eV9HZXQgYWxzby4KKyAgICoKKyAgICovCisKKworIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19GVENGRkRSVl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRjaGFwdGVycy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGNoYXB0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU1NjcwZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRjaGFwdGVycy5oCkBAIC0wLDAgKzEsMTIwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIEZyZWVUeXBlIHJlZmVyZW5jZS4gICAgICAgICAgICAgICovCisvKiBJdCBpcyB1c2VkIGJ5IHRoZSBweXRob24gc2NyaXB0IHdoaWNoIGdlbmVyYXRlcyB0aGUgSFRNTCBmaWxlcy4gICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA8Q2hhcHRlcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgZ2VuZXJhbF9yZW1hcmtzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgR2VuZXJhbCBSZW1hcmtzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA8U2VjdGlvbnM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgdXNlcl9hbGxvY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPENoYXB0ZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGNvcmVfYXBpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIENvcmUgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFNlY3Rpb25zPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBiYXNpY190eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgYmFzZV9pbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGdseXBoX3ZhcmlhbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBnbHlwaF9tYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgbWFjX3NwZWNpZmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHNpemVzX21hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBoZWFkZXJfZmlsZV9tYWNyb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA8Q2hhcHRlcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgZm9ybWF0X3NwZWNpZmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRm9ybWF0LVNwZWNpZmljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA8U2VjdGlvbnM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgbXVsdGlwbGVfbWFzdGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHRydWV0eXBlX3RhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICB0eXBlMV90YWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgc2ZudF9uYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGJkZl9mb250cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBjaWRfZm9udHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgcGZyX2ZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHdpbmZudF9mb250cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBmb250X2Zvcm1hdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgZ2FzcF90YWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPENoYXB0ZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIG1vZHVsZV9zcGVjaWZpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIENvbnRyb2xsaW5nIEZyZWVUeXBlIE1vZHVsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFNlY3Rpb25zPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGF1dG9faGludGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBjZmZfZHJpdmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgdHRfZHJpdmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPENoYXB0ZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGNhY2hlX3N1YnN5c3RlbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIENhY2hlIFN1Yi1TeXN0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFNlY3Rpb25zPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGNhY2hlX3N1YnN5c3RlbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxDaGFwdGVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBzdXBwb3J0X2FwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBTdXBwb3J0IEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxTZWN0aW9ucz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBjb21wdXRhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgbGlzdF9wcm9jZXNzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIG91dGxpbmVfcHJvY2Vzc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBxdWlja19hZHZhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgYml0bWFwX2hhbmRsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHJhc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBnbHlwaF9zdHJva2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgc3lzdGVtX2ludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIG1vZHVsZV9tYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBnemlwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgbHp3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGJ6aXAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBsY2RfZmlsdGVyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0Y2lkLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0Y2lkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU5NTk3NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRjaWQuaApAQCAtMCwwICsxLDE2NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRjaWQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgYWNjZXNzaW5nIENJRCBmb250IGluZm9ybWF0aW9uIChzcGVjaWZpY2F0aW9uKS4gICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LCAyMDA5IGJ5IERlcmVnIENsZWdnLCBNaWNoYWVsIFRvZnRkYWwuICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVENJRF9IX18KKyNkZWZpbmUgX19GVENJRF9IX18KKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaWRfZm9udHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDSUQgRm9udHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDSUQta2V5ZWQgZm9udCBzcGVjaWZpYyBBUEkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGRlY2xhcmF0aW9uIG9mIENJRC1rZXllZCBmb250IHNwZWNpZmljICAgKi8KKyAgLyogICAgZnVuY3Rpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICAgRlRfR2V0X0NJRF9SZWdpc3RyeV9PcmRlcmluZ19TdXBwbGVtZW50CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgUmV0cmlldmUgdGhlIFJlZ2lzdHJ5L09yZGVyaW5nL1N1cHBsZW1lbnQgdHJpcGxlIChhbHNvIGtub3duIGFzIHRoZQorICAgKiAgICAiUi9PL1MiKSBmcm9tIGEgQ0lELWtleWVkIGZvbnQuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICAgZmFjZSA6OgorICAgKiAgICAgICBBIGhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICAgcmVnaXN0cnkgOjoKKyAgICogICAgICAgVGhlIHJlZ2lzdHJ5LCBhcyBhIEN+c3RyaW5nLCBvd25lZCBieSB0aGUgZmFjZS4KKyAgICoKKyAgICogICAgb3JkZXJpbmcgOjoKKyAgICogICAgICAgVGhlIG9yZGVyaW5nLCBhcyBhIEN+c3RyaW5nLCBvd25lZCBieSB0aGUgZmFjZS4KKyAgICoKKyAgICogICAgc3VwcGxlbWVudCA6OgorICAgKiAgICAgICBUaGUgc3VwcGxlbWVudC4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aXRoIENJRCBmYWNlcywgcmV0dXJuaW5nIGFuIGVycm9yCisgICAqICAgIG90aGVyd2lzZS4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgICAyLjMuNgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9DSURfUmVnaXN0cnlfT3JkZXJpbmdfU3VwcGxlbWVudCggRlRfRmFjZSAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqcmVnaXN0cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICpvcmRlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgKnN1cHBsZW1lbnQpOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgICBGVF9HZXRfQ0lEX0lzX0ludGVybmFsbHlfQ0lEX0tleWVkCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgUmV0cmlldmUgdGhlIHR5cGUgb2YgdGhlIGlucHV0IGZhY2UsIENJRCBrZXllZCBvciBub3QuICBJbgorICAgKiAgICBjb25zdHJhc3QgdG8gdGhlIEBGVF9JU19DSURfS0VZRUQgbWFjcm8gdGhpcyBmdW5jdGlvbiByZXR1cm5zCisgICAqICAgIHN1Y2Nlc3NmdWxseSBhbHNvIGZvciBDSUQta2V5ZWQgZm9udHMgaW4gYW4gU05GVCB3cmFwcGVyLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgIGZhY2UgOjoKKyAgICogICAgICAgQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgIGlzX2NpZCA6OgorICAgKiAgICAgICBUaGUgdHlwZSBvZiB0aGUgZmFjZSBhcyBhbiBARlRfQm9vbC4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aXRoIENJRCBmYWNlcyBhbmQgT3BlblR5cGUgZm9udHMsCisgICAqICAgIHJldHVybmluZyBhbiBlcnJvciBvdGhlcndpc2UuCisgICAqCisgICAqIEBzaW5jZToKKyAgICogICAgMi4zLjkKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfQ0lEX0lzX0ludGVybmFsbHlfQ0lEX0tleWVkKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgKmlzX2NpZCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgICBGVF9HZXRfQ0lEX0Zyb21fR2x5cGhfSW5kZXgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgICBSZXRyaWV2ZSB0aGUgQ0lEIG9mIHRoZSBpbnB1dCBnbHlwaCBpbmRleC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgICBmYWNlIDo6CisgICAqICAgICAgIEEgaGFuZGxlIHRvIHRoZSBpbnB1dCBmYWNlLgorICAgKgorICAgKiAgICBnbHlwaF9pbmRleCA6OgorICAgKiAgICAgICBUaGUgaW5wdXQgZ2x5cGggaW5kZXguCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgIGNpZCA6OgorICAgKiAgICAgICBUaGUgQ0lEIGFzIGFuIEBGVF9VSW50LgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICAgVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdpdGggQ0lEIGZhY2VzIGFuZCBPcGVuVHlwZSBmb250cywKKyAgICogICAgcmV0dXJuaW5nIGFuIGVycm9yIG90aGVyd2lzZS4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgICAyLjMuOQorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9DSURfRnJvbV9HbHlwaF9JbmRleCggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICpjaWQgKTsKKworIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRDSURfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZjN2I5ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRlcnJkZWYuaApAQCAtMCwwICsxLDI0OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRlcnJkZWYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGVzIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLCAyMDA0LCAyMDA2LCAyMDA3LCAyMDEwLTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICBMSVNUIE9GIEVSUk9SIENPREVTL01FU1NBR0VTICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyogWW91IG5lZWQgdG8gZGVmaW5lIGJvdGggRlRfRVJST1JERUZfIGFuZCBGVF9OT0VSUk9SREVGXyBiZWZvcmUgKi8KKyAgLyogaW5jbHVkaW5nIHRoaXMgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworCisgIC8qIGdlbmVyaWMgZXJyb3JzICovCisKKyAgRlRfTk9FUlJPUkRFRl8oIE9rLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwLCBcCisgICAgICAgICAgICAgICAgICAibm8gZXJyb3IiICkKKworICBGVF9FUlJPUkRFRl8oIENhbm5vdF9PcGVuX1Jlc291cmNlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsIFwKKyAgICAgICAgICAgICAgICAiY2Fubm90IG9wZW4gcmVzb3VyY2UiICkKKyAgRlRfRVJST1JERUZfKCBVbmtub3duX0ZpbGVfRm9ybWF0LCAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCBcCisgICAgICAgICAgICAgICAgInVua25vd24gZmlsZSBmb3JtYXQiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0ZpbGVfRm9ybWF0LCAgICAgICAgICAgICAgICAgICAgICAgICAweDAzLCBcCisgICAgICAgICAgICAgICAgImJyb2tlbiBmaWxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9WZXJzaW9uLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNCwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIEZyZWVUeXBlIHZlcnNpb24iICkKKyAgRlRfRVJST1JERUZfKCBMb3dlcl9Nb2R1bGVfVmVyc2lvbiwgICAgICAgICAgICAgICAgICAgICAgICAweDA1LCBcCisgICAgICAgICAgICAgICAgIm1vZHVsZSB2ZXJzaW9uIGlzIHRvbyBsb3ciICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0FyZ3VtZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgYXJndW1lbnQiICkKKyAgRlRfRVJST1JERUZfKCBVbmltcGxlbWVudGVkX0ZlYXR1cmUsICAgICAgICAgICAgICAgICAgICAgICAweDA3LCBcCisgICAgICAgICAgICAgICAgInVuaW1wbGVtZW50ZWQgZmVhdHVyZSIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfVGFibGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgsIFwKKyAgICAgICAgICAgICAgICAiYnJva2VuIHRhYmxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9PZmZzZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwOSwgXAorICAgICAgICAgICAgICAgICJicm9rZW4gb2Zmc2V0IHdpdGhpbiB0YWJsZSIgKQorICBGVF9FUlJPUkRFRl8oIEFycmF5X1Rvb19MYXJnZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEEsIFwKKyAgICAgICAgICAgICAgICAiYXJyYXkgYWxsb2NhdGlvbiBzaXplIHRvbyBsYXJnZSIgKQorICBGVF9FUlJPUkRFRl8oIE1pc3NpbmdfTW9kdWxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIsIFwKKyAgICAgICAgICAgICAgICAibWlzc2luZyBtb2R1bGUiICkKKyAgRlRfRVJST1JERUZfKCBNaXNzaW5nX1Byb3BlcnR5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDLCBcCisgICAgICAgICAgICAgICAgIm1pc3NpbmcgcHJvcGVydHkiICkKKworICAvKiBnbHlwaC9jaGFyYWN0ZXIgZXJyb3JzICovCisKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0dseXBoX0luZGV4LCAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgZ2x5cGggaW5kZXgiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0NoYXJhY3Rlcl9Db2RlLCAgICAgICAgICAgICAgICAgICAgICAweDExLCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgY2hhcmFjdGVyIGNvZGUiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0dseXBoX0Zvcm1hdCwgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCBcCisgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIGdseXBoIGltYWdlIGZvcm1hdCIgKQorICBGVF9FUlJPUkRFRl8oIENhbm5vdF9SZW5kZXJfR2x5cGgsICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIFwKKyAgICAgICAgICAgICAgICAiY2Fubm90IHJlbmRlciB0aGlzIGdseXBoIGZvcm1hdCIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfT3V0bGluZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBvdXRsaW5lIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9Db21wb3NpdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbXBvc2l0ZSBnbHlwaCIgKQorICBGVF9FUlJPUkRFRl8oIFRvb19NYW55X0hpbnRzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIFwKKyAgICAgICAgICAgICAgICAidG9vIG1hbnkgaGludHMiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1BpeGVsX1NpemUsICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgcGl4ZWwgc2l6ZSIgKQorCisgIC8qIGhhbmRsZSBlcnJvcnMgKi8KKworICBGVF9FUlJPUkRFRl8oIEludmFsaWRfSGFuZGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBvYmplY3QgaGFuZGxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9MaWJyYXJ5X0hhbmRsZSwgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGxpYnJhcnkgaGFuZGxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9Ecml2ZXJfSGFuZGxlLCAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIG1vZHVsZSBoYW5kbGUiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0ZhY2VfSGFuZGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgZmFjZSBoYW5kbGUiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1NpemVfSGFuZGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgc2l6ZSBoYW5kbGUiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1Nsb3RfSGFuZGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgZ2x5cGggc2xvdCBoYW5kbGUiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0NoYXJNYXBfSGFuZGxlLCAgICAgICAgICAgICAgICAgICAgICAweDI2LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgY2hhcm1hcCBoYW5kbGUiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0NhY2hlX0hhbmRsZSwgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgY2FjaGUgbWFuYWdlciBoYW5kbGUiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1N0cmVhbV9IYW5kbGUsICAgICAgICAgICAgICAgICAgICAgICAweDI4LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgc3RyZWFtIGhhbmRsZSIgKQorCisgIC8qIGRyaXZlciBlcnJvcnMgKi8KKworICBGVF9FUlJPUkRFRl8oIFRvb19NYW55X0RyaXZlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIFwKKyAgICAgICAgICAgICAgICAidG9vIG1hbnkgbW9kdWxlcyIgKQorICBGVF9FUlJPUkRFRl8oIFRvb19NYW55X0V4dGVuc2lvbnMsICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIFwKKyAgICAgICAgICAgICAgICAidG9vIG1hbnkgZXh0ZW5zaW9ucyIgKQorCisgIC8qIG1lbW9yeSBlcnJvcnMgKi8KKworICBGVF9FUlJPUkRFRl8oIE91dF9PZl9NZW1vcnksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIFwKKyAgICAgICAgICAgICAgICAib3V0IG9mIG1lbW9yeSIgKQorICBGVF9FUlJPUkRFRl8oIFVubGlzdGVkX09iamVjdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIFwKKyAgICAgICAgICAgICAgICAidW5saXN0ZWQgb2JqZWN0IiApCisKKyAgLyogc3RyZWFtIGVycm9ycyAqLworCisgIEZUX0VSUk9SREVGXyggQ2Fubm90X09wZW5fU3RyZWFtLCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgXAorICAgICAgICAgICAgICAgICJjYW5ub3Qgb3BlbiBzdHJlYW0iICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1N0cmVhbV9TZWVrLCAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgc3RyZWFtIHNlZWsiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1N0cmVhbV9Ta2lwLCAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgc3RyZWFtIHNraXAiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1N0cmVhbV9SZWFkLCAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgc3RyZWFtIHJlYWQiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1N0cmVhbV9PcGVyYXRpb24sICAgICAgICAgICAgICAgICAgICAweDU1LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgc3RyZWFtIG9wZXJhdGlvbiIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfRnJhbWVfT3BlcmF0aW9uLCAgICAgICAgICAgICAgICAgICAgIDB4NTYsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBmcmFtZSBvcGVyYXRpb24iICkKKyAgRlRfRVJST1JERUZfKCBOZXN0ZWRfRnJhbWVfQWNjZXNzLCAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCBcCisgICAgICAgICAgICAgICAgIm5lc3RlZCBmcmFtZSBhY2Nlc3MiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0ZyYW1lX1JlYWQsICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgZnJhbWUgcmVhZCIgKQorCisgIC8qIHJhc3RlciBlcnJvcnMgKi8KKworICBGVF9FUlJPUkRFRl8oIFJhc3Rlcl9VbmluaXRpYWxpemVkLCAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIFwKKyAgICAgICAgICAgICAgICAicmFzdGVyIHVuaW5pdGlhbGl6ZWQiICkKKyAgRlRfRVJST1JERUZfKCBSYXN0ZXJfQ29ycnVwdGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCBcCisgICAgICAgICAgICAgICAgInJhc3RlciBjb3JydXB0ZWQiICkKKyAgRlRfRVJST1JERUZfKCBSYXN0ZXJfT3ZlcmZsb3csICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCBcCisgICAgICAgICAgICAgICAgInJhc3RlciBvdmVyZmxvdyIgKQorICBGVF9FUlJPUkRFRl8oIFJhc3Rlcl9OZWdhdGl2ZV9IZWlnaHQsICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIFwKKyAgICAgICAgICAgICAgICAibmVnYXRpdmUgaGVpZ2h0IHdoaWxlIHJhc3RlcmluZyIgKQorCisgIC8qIGNhY2hlIGVycm9ycyAqLworCisgIEZUX0VSUk9SREVGXyggVG9vX01hbnlfQ2FjaGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgXAorICAgICAgICAgICAgICAgICJ0b28gbWFueSByZWdpc3RlcmVkIGNhY2hlcyIgKQorCisgIC8qIFRydWVUeXBlIGFuZCBTRk5UIGVycm9ycyAqLworCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9PcGNvZGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIG9wY29kZSIgKQorICBGVF9FUlJPUkRFRl8oIFRvb19GZXdfQXJndW1lbnRzLCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIFwKKyAgICAgICAgICAgICAgICAidG9vIGZldyBhcmd1bWVudHMiICkKKyAgRlRfRVJST1JERUZfKCBTdGFja19PdmVyZmxvdywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCBcCisgICAgICAgICAgICAgICAgInN0YWNrIG92ZXJmbG93IiApCisgIEZUX0VSUk9SREVGXyggQ29kZV9PdmVyZmxvdywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgXAorICAgICAgICAgICAgICAgICJjb2RlIG92ZXJmbG93IiApCisgIEZUX0VSUk9SREVGXyggQmFkX0FyZ3VtZW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgXAorICAgICAgICAgICAgICAgICJiYWQgYXJndW1lbnQiICkKKyAgRlRfRVJST1JERUZfKCBEaXZpZGVfQnlfWmVybywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCBcCisgICAgICAgICAgICAgICAgImRpdmlzaW9uIGJ5IHplcm8iICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1JlZmVyZW5jZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgcmVmZXJlbmNlIiApCisgIEZUX0VSUk9SREVGXyggRGVidWdfT3BDb2RlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgXAorICAgICAgICAgICAgICAgICJmb3VuZCBkZWJ1ZyBvcGNvZGUiICkKKyAgRlRfRVJST1JERUZfKCBFTkRGX0luX0V4ZWNfU3RyZWFtLCAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCBcCisgICAgICAgICAgICAgICAgImZvdW5kIEVOREYgb3Bjb2RlIGluIGV4ZWN1dGlvbiBzdHJlYW0iICkKKyAgRlRfRVJST1JERUZfKCBOZXN0ZWRfREVGUywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCBcCisgICAgICAgICAgICAgICAgIm5lc3RlZCBERUZTIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9Db2RlUmFuZ2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QSwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvZGUgcmFuZ2UiICkKKyAgRlRfRVJST1JERUZfKCBFeGVjdXRpb25fVG9vX0xvbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCLCBcCisgICAgICAgICAgICAgICAgImV4ZWN1dGlvbiBjb250ZXh0IHRvbyBsb25nIiApCisgIEZUX0VSUk9SREVGXyggVG9vX01hbnlfRnVuY3Rpb25fRGVmcywgICAgICAgICAgICAgICAgICAgICAgMHg4QywgXAorICAgICAgICAgICAgICAgICJ0b28gbWFueSBmdW5jdGlvbiBkZWZpbml0aW9ucyIgKQorICBGVF9FUlJPUkRFRl8oIFRvb19NYW55X0luc3RydWN0aW9uX0RlZnMsICAgICAgICAgICAgICAgICAgIDB4OEQsIFwKKyAgICAgICAgICAgICAgICAidG9vIG1hbnkgaW5zdHJ1Y3Rpb24gZGVmaW5pdGlvbnMiICkKKyAgRlRfRVJST1JERUZfKCBUYWJsZV9NaXNzaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhFLCBcCisgICAgICAgICAgICAgICAgIlNGTlQgZm9udCB0YWJsZSBtaXNzaW5nIiApCisgIEZUX0VSUk9SREVGXyggSG9yaXpfSGVhZGVyX01pc3NpbmcsICAgICAgICAgICAgICAgICAgICAgICAgMHg4RiwgXAorICAgICAgICAgICAgICAgICJob3Jpem9udGFsIGhlYWRlciAoaGhlYSkgdGFibGUgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIExvY2F0aW9uc19NaXNzaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIFwKKyAgICAgICAgICAgICAgICAibG9jYXRpb25zIChsb2NhKSB0YWJsZSBtaXNzaW5nIiApCisgIEZUX0VSUk9SREVGXyggTmFtZV9UYWJsZV9NaXNzaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgXAorICAgICAgICAgICAgICAgICJuYW1lIHRhYmxlIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBDTWFwX1RhYmxlX01pc3NpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCBcCisgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXAgKGNtYXApIHRhYmxlIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBIbXR4X1RhYmxlX01pc3NpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCBcCisgICAgICAgICAgICAgICAgImhvcml6b250YWwgbWV0cmljcyAoaG10eCkgdGFibGUgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIFBvc3RfVGFibGVfTWlzc2luZywgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIFwKKyAgICAgICAgICAgICAgICAiUG9zdFNjcmlwdCAocG9zdCkgdGFibGUgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfSG9yaXpfTWV0cmljcywgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBob3Jpem9udGFsIG1ldHJpY3MiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0NoYXJNYXBfRm9ybWF0LCAgICAgICAgICAgICAgICAgICAgICAweDk2LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgY2hhcmFjdGVyIG1hcCAoY21hcCkgZm9ybWF0IiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9QUGVtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHBwZW0gdmFsdWUiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1ZlcnRfTWV0cmljcywgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgdmVydGljYWwgbWV0cmljcyIgKQorICBGVF9FUlJPUkRFRl8oIENvdWxkX05vdF9GaW5kX0NvbnRleHQsICAgICAgICAgICAgICAgICAgICAgIDB4OTksIFwKKyAgICAgICAgICAgICAgICAiY291bGQgbm90IGZpbmQgY29udGV4dCIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfUG9zdF9UYWJsZV9Gb3JtYXQsICAgICAgICAgICAgICAgICAgIDB4OUEsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBQb3N0U2NyaXB0IChwb3N0KSB0YWJsZSBmb3JtYXQiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1Bvc3RfVGFibGUsICAgICAgICAgICAgICAgICAgICAgICAgICAweDlCLCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgUG9zdFNjcmlwdCAocG9zdCkgdGFibGUiICkKKworICAvKiBDRkYsIENJRCwgYW5kIFR5cGUgMSBlcnJvcnMgKi8KKworICBGVF9FUlJPUkRFRl8oIFN5bnRheF9FcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QTAsIFwKKyAgICAgICAgICAgICAgICAib3Bjb2RlIHN5bnRheCBlcnJvciIgKQorICBGVF9FUlJPUkRFRl8oIFN0YWNrX1VuZGVyZmxvdywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QTEsIFwKKyAgICAgICAgICAgICAgICAiYXJndW1lbnQgc3RhY2sgdW5kZXJmbG93IiApCisgIEZUX0VSUk9SREVGXyggSWdub3JlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhBMiwgXAorICAgICAgICAgICAgICAgICJpZ25vcmUiICkKKyAgRlRfRVJST1JERUZfKCBOb19Vbmljb2RlX0dseXBoX05hbWUsICAgICAgICAgICAgICAgICAgICAgICAweEEzLCBcCisgICAgICAgICAgICAgICAgIm5vIFVuaWNvZGUgZ2x5cGggbmFtZSBmb3VuZCIgKQorICBGVF9FUlJPUkRFRl8oIEdseXBoX1Rvb19CaWcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QTQsIFwKKyAgICAgICAgICAgICAgICAiZ2x5cGggdG8gYmlnIGZvciBoaW50aW5nIiApCisKKyAgLyogQkRGIGVycm9ycyAqLworCisgIEZUX0VSUk9SREVGXyggTWlzc2luZ19TdGFydGZvbnRfRmllbGQsICAgICAgICAgICAgICAgICAgICAgMHhCMCwgXAorICAgICAgICAgICAgICAgICJgU1RBUlRGT05UJyBmaWVsZCBtaXNzaW5nIiApCisgIEZUX0VSUk9SREVGXyggTWlzc2luZ19Gb250X0ZpZWxkLCAgICAgICAgICAgICAgICAgICAgICAgICAgMHhCMSwgXAorICAgICAgICAgICAgICAgICJgRk9OVCcgZmllbGQgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIE1pc3NpbmdfU2l6ZV9GaWVsZCwgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QjIsIFwKKyAgICAgICAgICAgICAgICAiYFNJWkUnIGZpZWxkIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBNaXNzaW5nX0ZvbnRib3VuZGluZ2JveF9GaWVsZCwgICAgICAgICAgICAgICAweEIzLCBcCisgICAgICAgICAgICAgICAgImBGT05UQk9VTkRJTkdCT1gnIGZpZWxkIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBNaXNzaW5nX0NoYXJzX0ZpZWxkLCAgICAgICAgICAgICAgICAgICAgICAgICAweEI0LCBcCisgICAgICAgICAgICAgICAgImBDSEFSUycgZmllbGQgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIE1pc3NpbmdfU3RhcnRjaGFyX0ZpZWxkLCAgICAgICAgICAgICAgICAgICAgIDB4QjUsIFwKKyAgICAgICAgICAgICAgICAiYFNUQVJUQ0hBUicgZmllbGQgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIE1pc3NpbmdfRW5jb2RpbmdfRmllbGQsICAgICAgICAgICAgICAgICAgICAgIDB4QjYsIFwKKyAgICAgICAgICAgICAgICAiYEVOQ09ESU5HJyBmaWVsZCBtaXNzaW5nIiApCisgIEZUX0VSUk9SREVGXyggTWlzc2luZ19CYnhfRmllbGQsICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhCNywgXAorICAgICAgICAgICAgICAgICJgQkJYJyBmaWVsZCBtaXNzaW5nIiApCisgIEZUX0VSUk9SREVGXyggQmJ4X1Rvb19CaWcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhCOCwgXAorICAgICAgICAgICAgICAgICJgQkJYJyB0b28gYmlnIiApCisgIEZUX0VSUk9SREVGXyggQ29ycnVwdGVkX0ZvbnRfSGVhZGVyLCAgICAgICAgICAgICAgICAgICAgICAgMHhCOSwgXAorICAgICAgICAgICAgICAgICJGb250IGhlYWRlciBjb3JydXB0ZWQgb3IgbWlzc2luZyBmaWVsZHMiICkKKyAgRlRfRVJST1JERUZfKCBDb3JydXB0ZWRfRm9udF9HbHlwaHMsICAgICAgICAgICAgICAgICAgICAgICAweEJBLCBcCisgICAgICAgICAgICAgICAgIkZvbnQgZ2x5cGhzIGNvcnJ1cHRlZCBvciBtaXNzaW5nIGZpZWxkcyIgKQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGVycm9ycy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGVycm9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNjlkMGYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmgKQEAgLTAsMCArMSwxOTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0ZXJyb3JzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlIGhhbmRsaW5nIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAyLCAyMDA0LCAyMDA3LCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgc3BlY2lhbCBoZWFkZXIgZmlsZSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgaGFuZGxpbmcgb2YgRlQyICAgICAgICAqLworICAvKiBlbnVtZXJhdGlvbiBjb25zdGFudHMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdlbmVyYXRlIGVycm9yIG1lc3NhZ2UgKi8KKyAgLyogc3RyaW5ncyB3aXRoIGEgc21hbGwgbWFjcm8gdHJpY2sgZXhwbGFpbmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJIC0gRXJyb3IgRm9ybWF0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFRoZSBjb25maWd1cmF0aW9uIG1hY3JvIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMgY2FuIGJlICAgKi8KKyAgLyogICBkZWZpbmVkIGluIGZ0b3B0aW9uLmggaW4gb3JkZXIgdG8gbWFrZSB0aGUgaGlnaGVyIGJ5dGUgaW5kaWNhdGUgICAgICovCisgIC8qICAgdGhlIG1vZHVsZSB3aGVyZSB0aGUgZXJyb3IgaGFzIGhhcHBlbmVkICh0aGlzIGlzIG5vdCBjb21wYXRpYmxlICAgICAqLworICAvKiAgIHdpdGggc3RhbmRhcmQgYnVpbGRzIG9mIEZyZWVUeXBlIDIpLiAgU2VlIHRoZSBmaWxlIGBmdG1vZGVyci5oJyBmb3IgKi8KKyAgLyogICBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSUkgLSBFcnJvciBNZXNzYWdlIHN0cmluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUaGUgZXJyb3IgZGVmaW5pdGlvbnMgYmVsb3cgYXJlIG1hZGUgdGhyb3VnaCBzcGVjaWFsIG1hY3JvcyB0aGF0ICAgICovCisgIC8qICAgYWxsb3cgY2xpZW50IGFwcGxpY2F0aW9ucyB0byBidWlsZCBhIHRhYmxlIG9mIGVycm9yIG1lc3NhZ2Ugc3RyaW5ncyAqLworICAvKiAgIGlmIHRoZXkgbmVlZCBpdC4gIFRoZSBzdHJpbmdzIGFyZSBub3QgaW5jbHVkZWQgaW4gYSBub3JtYWwgYnVpbGQgb2YgKi8KKyAgLyogICBGcmVlVHlwZSAyIHRvIHNhdmUgc3BhY2UgKG1vc3QgY2xpZW50IGFwcGxpY2F0aW9ucyBkbyBub3QgdXNlICAgICAgICovCisgIC8qICAgdGhlbSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUbyBkbyBzbywgeW91IGhhdmUgdG8gZGVmaW5lIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGJlZm9yZSBpbmNsdWRpbmcgICovCisgIC8qICAgdGhpcyBmaWxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGVF9FUlJPUl9TVEFSVF9MSVNUIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBUaGlzIG1hY3JvIGlzIGNhbGxlZCBiZWZvcmUgYW55dGhpbmcgZWxzZSB0byBkZWZpbmUgdGhlIHN0YXJ0IG9mICAqLworICAvKiAgICAgdGhlIGVycm9yIGxpc3QuICBJdCBpcyBmb2xsb3dlZCBieSBzZXZlcmFsIEZUX0VSUk9SX0RFRiBjYWxscyAgICAgKi8KKyAgLyogICAgIChzZWUgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZUX0VSUk9SX0RFRiggZSwgdiwgcyApIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIFRoaXMgbWFjcm8gaXMgY2FsbGVkIHRvIGRlZmluZSBvbmUgc2luZ2xlIGVycm9yLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBgZScgaXMgdGhlIGVycm9yIGNvZGUgaWRlbnRpZmllciAoZS5nLiBGVF9FcnJfSW52YWxpZF9Bcmd1bWVudCkuICAqLworICAvKiAgICAgYHYnIGlzIHRoZSBlcnJvciBudW1lcmljYWwgdmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGBzJyBpcyB0aGUgY29ycmVzcG9uZGluZyBlcnJvciBzdHJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZUX0VSUk9SX0VORF9MSVNUIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIFRoaXMgbWFjcm8gZW5kcyB0aGUgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEFkZGl0aW9uYWxseSwgeW91IGhhdmUgdG8gdW5kZWZpbmUgX19GVEVSUk9SU19IX18gYmVmb3JlICNpbmNsdWRpbmcgKi8KKyAgLyogICB0aGlzIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEhlcmUgaXMgYSBzaW1wbGUgZXhhbXBsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAjdW5kZWYgX19GVEVSUk9SU19IX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgI2RlZmluZSBGVF9FUlJPUkRFRiggZSwgdiwgcyApICB7IGUsIHMgfSwgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICNkZWZpbmUgRlRfRVJST1JfU1RBUlRfTElTVCAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAjZGVmaW5lIEZUX0VSUk9SX0VORF9MSVNUICAgICAgIHsgMCwgMCB9IH07ICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgIGNvbnN0IHN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICBpbnQgICAgICAgICAgZXJyX2NvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgY29uc3QgY2hhciogIGVycl9tc2c7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICB9IGZ0X2Vycm9yc1tdID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICNpbmNsdWRlICJmdGVycm9ycy5oIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRFUlJPUlNfSF9fCisjZGVmaW5lIF9fRlRFUlJPUlNfSF9fCisKKworICAvKiBpbmNsdWRlIG1vZHVsZSBiYXNlIGVycm9yIGNvZGVzICovCisjaW5jbHVkZSAiZnRtb2RlcnIuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgU0VUVVAgTUFDUk9TICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyN1bmRlZiAgRlRfTkVFRF9FWFRFUk5fQworCisKKyAgLyogRlRfRVJSX1BSRUZJWCBpcyB1c2VkIGFzIGEgcHJlZml4IGZvciBlcnJvciBpZGVudGlmaWVycy4gKi8KKyAgLyogQnkgZGVmYXVsdCwgd2UgdXNlIGBGVF9FcnJfJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfRVJSX1BSRUZJWAorI2RlZmluZSBGVF9FUlJfUFJFRklYICBGVF9FcnJfCisjZW5kaWYKKworCisgIC8qIEZUX0VSUl9CQVNFIGlzIHVzZWQgYXMgdGhlIGJhc2UgZm9yIG1vZHVsZS1zcGVjaWZpYyBlcnJvcnMuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9VU0VfTU9EVUxFX0VSUk9SUworCisjaWZuZGVmIEZUX0VSUl9CQVNFCisjZGVmaW5lIEZUX0VSUl9CQVNFICBGVF9Nb2RfRXJyX0Jhc2UKKyNlbmRpZgorCisjZWxzZQorCisjdW5kZWYgRlRfRVJSX0JBU0UKKyNkZWZpbmUgRlRfRVJSX0JBU0UgIDAKKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMgKi8KKworCisgIC8qIElmIEZUX0VSUk9SREVGIGlzIG5vdCBkZWZpbmVkLCB3ZSBuZWVkIHRvIGRlZmluZSBhIHNpbXBsZSAqLworICAvKiBlbnVtZXJhdGlvbiB0eXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEZUX0VSUk9SREVGCisKKyNkZWZpbmUgRlRfRVJST1JERUYoIGUsIHYsIHMgKSAgZSA9IHYsCisjZGVmaW5lIEZUX0VSUk9SX1NUQVJUX0xJU1QgICAgIGVudW0geworI2RlZmluZSBGVF9FUlJPUl9FTkRfTElTVCAgICAgICBGVF9FUlJfQ0FUKCBGVF9FUlJfUFJFRklYLCBNYXggKSB9OworCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfTkVFRF9FWFRFUk5fQworICBleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjZW5kaWYgLyogIUZUX0VSUk9SREVGICovCisKKworICAvKiB0aGlzIG1hY3JvIGlzIHVzZWQgdG8gZGVmaW5lIGFuIGVycm9yICovCisjZGVmaW5lIEZUX0VSUk9SREVGXyggZSwgdiwgcyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0VSUk9SREVGKCBGVF9FUlJfQ0FUKCBGVF9FUlJfUFJFRklYLCBlICksIHYgKyBGVF9FUlJfQkFTRSwgcyApCisKKyAgLyogdGhpcyBpcyBvbmx5IHVzZWQgZm9yIDxtb2R1bGU+X0Vycl9Paywgd2hpY2ggbXVzdCBiZSAwISAqLworI2RlZmluZSBGVF9OT0VSUk9SREVGXyggZSwgdiwgcyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfRVJST1JERUYoIEZUX0VSUl9DQVQoIEZUX0VSUl9QUkVGSVgsIGUgKSwgdiwgcyApCisKKworI2lmZGVmIEZUX0VSUk9SX1NUQVJUX0xJU1QKKyAgRlRfRVJST1JfU1RBUlRfTElTVAorI2VuZGlmCisKKworICAvKiBub3cgaW5jbHVkZSB0aGUgZXJyb3IgY29kZXMgKi8KKyNpbmNsdWRlICJmdGVycmRlZi5oIgorCisKKyNpZmRlZiBGVF9FUlJPUl9FTkRfTElTVAorICBGVF9FUlJPUl9FTkRfTElTVAorI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgU0lNUExFIENMRUFOVVAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIEZUX05FRURfRVhURVJOX0MKKyAgfQorI2VuZGlmCisKKyN1bmRlZiBGVF9FUlJPUl9TVEFSVF9MSVNUCisjdW5kZWYgRlRfRVJST1JfRU5EX0xJU1QKKworI3VuZGVmIEZUX0VSUk9SREVGCisjdW5kZWYgRlRfRVJST1JERUZfCisjdW5kZWYgRlRfTk9FUlJPUkRFRl8KKworI3VuZGVmIEZUX05FRURfRVhURVJOX0MKKyN1bmRlZiBGVF9FUlJfQkFTRQorCisgIC8qIEZUX0VSUl9QUkVGSVggaXMgbmVlZGVkIGludGVybmFsbHkgKi8KKyNpZm5kZWYgRlQyX0JVSUxEX0xJQlJBUlkKKyN1bmRlZiBGVF9FUlJfUFJFRklYCisjZW5kaWYKKworI2VuZGlmIC8qIF9fRlRFUlJPUlNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0Z2FzcC5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGdhc3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjBhMzRhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGdhc3AuaApAQCAtMCwwICsxLDEyOCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRnYXNwLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFjY2VzcyBvZiBUcnVlVHlwZSdzIGBnYXNwJyB0YWJsZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LCAyMDA4LCAyMDExIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9GVF9HQVNQX0hfCisjZGVmaW5lIF9GVF9HQVNQX0hfCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc2VjdGlvbjoKKyAgICogICBnYXNwX3RhYmxlCisgICAqCisgICAqIEB0aXRsZToKKyAgICogICBHYXNwIFRhYmxlCisgICAqCisgICAqIEBhYnN0cmFjdDoKKyAgICogICBSZXRyaWV2aW5nIFRydWVUeXBlIGBnYXNwJyB0YWJsZSBlbnRyaWVzLgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIGZ1bmN0aW9uIEBGVF9HZXRfR2FzcCBjYW4gYmUgdXNlZCB0byBxdWVyeSBhIFRydWVUeXBlIG9yIE9wZW5UeXBlCisgICAqICAgZm9udCBmb3Igc3BlY2lmaWMgZW50cmllcyBpbiBpdHMgYGdhc3AnIHRhYmxlLCBpZiBhbnkuICBUaGlzIGlzCisgICAqICAgbWFpbmx5IHVzZWZ1bCB3aGVuIGltcGxlbWVudGluZyBuYXRpdmUgVHJ1ZVR5cGUgaGludGluZyB3aXRoIHRoZQorICAgKiAgIGJ5dGVjb2RlIGludGVycHJldGVyIHRvIGR1cGxpY2F0ZSB0aGUgV2luZG93cyB0ZXh0IHJlbmRlcmluZyByZXN1bHRzLgorICAgKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBGVF9HQVNQX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIHZhbHVlcyBhbmQvb3IgYml0LWZsYWdzIHJldHVybmVkIGJ5IHRoZSBARlRfR2V0X0dhc3AKKyAgICogICBmdW5jdGlvbi4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBGVF9HQVNQX05PX1RBQkxFIDo6CisgICAqICAgICBUaGlzIHNwZWNpYWwgdmFsdWUgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBHQVNQIHRhYmxlIGluIHRoaXMgZmFjZS4KKyAgICogICAgIEl0IGlzIHVwIHRvIHRoZSBjbGllbnQgdG8gZGVjaWRlIHdoYXQgdG8gZG8uCisgICAqCisgICAqICAgRlRfR0FTUF9ET19HUklERklUIDo6CisgICAqICAgICBHcmlkLWZpdHRpbmcgYW5kIGhpbnRpbmcgc2hvdWxkIGJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHBwZW0uCisgICAqICAgICBUaGlzICpyZWFsbHkqIG1lYW5zIFRydWVUeXBlIGJ5dGVjb2RlIGludGVycHJldGF0aW9uLiAgSWYgdGhpcyBiaXQKKyAgICogICAgIGlzIG5vdCBzZXQsIG5vIGhpbnRpbmcgZ2V0cyBhcHBsaWVkLgorICAgKgorICAgKiAgIEZUX0dBU1BfRE9fR1JBWSA6OgorICAgKiAgICAgQW50aS1hbGlhc2VkIHJlbmRlcmluZyBzaG91bGQgYmUgcGVyZm9ybWVkIGF0IHRoZSBzcGVjaWZpZWQgcHBlbS4KKyAgICogICAgIElmIG5vdCBzZXQsIGRvIG1vbm9jaHJvbWUgcmVuZGVyaW5nLgorICAgKgorICAgKiAgIEZUX0dBU1BfU1lNTUVUUklDX1NNT09USElORyA6OgorICAgKiAgICAgSWYgc2V0LCBzbW9vdGhpbmcgYWxvbmcgbXVsdGlwbGUgYXhlcyBtdXN0IGJlIHVzZWQgd2l0aCBDbGVhclR5cGUuCisgICAqCisgICAqICAgRlRfR0FTUF9TWU1NRVRSSUNfR1JJREZJVCA6OgorICAgKiAgICAgR3JpZC1maXR0aW5nIG11c3QgYmUgdXNlZCB3aXRoIENsZWFyVHlwZSdzIHN5bW1ldHJpYyBzbW9vdGhpbmcuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoZSBiaXQtZmxhZ3MgYEZUX0dBU1BfRE9fR1JJREZJVCcgYW5kIGBGVF9HQVNQX0RPX0dSQVknIGFyZSB0byBiZQorICAgKiAgIHVzZWQgZm9yIHN0YW5kYXJkIGZvbnQgcmFzdGVyaXphdGlvbiBvbmx5LiAgSW5kZXBlbmRlbnRseSBvZiB0aGF0LAorICAgKiAgIGBGVF9HQVNQX1NZTU1FVFJJQ19TTU9PVEhJTkcnIGFuZCBgRlRfR0FTUF9TWU1NRVRSSUNfR1JJREZJVCcgYXJlIHRvCisgICAqICAgYmUgdXNlZCBpZiBDbGVhclR5cGUgaXMgZW5hYmxlZCAoYW5kIGBGVF9HQVNQX0RPX0dSSURGSVQnIGFuZAorICAgKiAgIGBGVF9HQVNQX0RPX0dSQVknIGFyZSBjb25zZXF1ZW50bHkgaWdub3JlZCkuCisgICAqCisgICAqICAgYENsZWFyVHlwZScgaXMgTWljcm9zb2Z0J3MgaW1wbGVtZW50YXRpb24gb2YgTENEIHJlbmRlcmluZywgcGFydGx5CisgICAqICAgcHJvdGVjdGVkIGJ5IHBhdGVudHMuCisgICAqCisgICAqIEBzaW5jZToKKyAgICogICAyLjMuMAorICAgKi8KKyNkZWZpbmUgRlRfR0FTUF9OT19UQUJMRSAgICAgICAgICAgICAgIC0xCisjZGVmaW5lIEZUX0dBU1BfRE9fR1JJREZJVCAgICAgICAgICAgMHgwMQorI2RlZmluZSBGVF9HQVNQX0RPX0dSQVkgICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgRlRfR0FTUF9TWU1NRVRSSUNfU01PT1RISU5HICAweDA4CisjZGVmaW5lIEZUX0dBU1BfU1lNTUVUUklDX0dSSURGSVQgICAgMHgxMAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmM6CisgICAqICAgRlRfR2V0X0dhc3AKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFJlYWQgdGhlIGBnYXNwJyB0YWJsZSBmcm9tIGEgVHJ1ZVR5cGUgb3IgT3BlblR5cGUgZm9udCBmaWxlIGFuZAorICAgKiAgIHJldHVybiB0aGUgZW50cnkgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIGNoYXJhY3RlciBwaXhlbCBzaXplLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgZmFjZSA6OiBUaGUgc291cmNlIGZhY2UgaGFuZGxlLgorICAgKiAgIHBwZW0gOjogVGhlIHZlcnRpY2FsIGNoYXJhY3RlciBwaXhlbCBzaXplLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEJpdCBmbGFncyAoc2VlIEBGVF9HQVNQX1hYWCksIG9yIEBGVF9HQVNQX05PX1RBQkxFIGlmIHRoZXJlIGlzIG5vCisgICAqICAgYGdhc3AnIHRhYmxlIGluIHRoZSBmYWNlLgorICAgKgorICAgKiBAc2luY2U6CisgICAqICAgMi4zLjAKKyAgICovCisgIEZUX0VYUE9SVCggRlRfSW50ICkKKyAgRlRfR2V0X0dhc3AoIEZUX0ZhY2UgIGZhY2UsCisgICAgICAgICAgICAgICBGVF9VSW50ICBwcGVtICk7CisKKy8qICovCisKKyNlbmRpZiAvKiBfRlRfR0FTUF9IXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGdseXBoLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0Z2x5cGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzJkOWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGdseXBoLmgKQEAgLTAsMCArMSw2MjAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Z2x5cGguaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gaGFuZGxlIGdseXBocyAoc3BlY2lmaWNhdGlvbikuICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAzLCAyMDA2LCAyMDA4LCAyMDA5LCAyMDExIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiBzZXZlcmFsIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyAgICAqLworICAvKiB0aGF0IGNhbiBiZSB1c2VkIGJ5IGNsaWVudCBhcHBsaWNhdGlvbnMgdG8gZWFzaWx5IHJldHJpZXZlIGdseXBoICAgICAgKi8KKyAgLyogYml0bWFwcyBhbmQgb3V0bGluZXMgZnJvbSBhIGdpdmVuIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG9wdGlvbmFsIGlmIHlvdSBhcmUgd3JpdGluZyBhIGZvbnQgc2VydmVyICAgKi8KKyAgLyogb3IgdGV4dCBsYXlvdXQgZW5naW5lIG9uIHRvcCBvZiBGcmVlVHlwZS4gIEhvd2V2ZXIsIHRoZXkgYXJlIHByZXR0eSAgICovCisgIC8qIGhhbmR5IGZvciBtYW55IG90aGVyIHNpbXBsZSB1c2VzIG9mIHRoZSBsaWJyYXJ5LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUR0xZUEhfSF9fCisjZGVmaW5lIF9fRlRHTFlQSF9IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX21hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEdseXBoIE1hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEdlbmVyaWMgaW50ZXJmYWNlIHRvIG1hbmFnZSBpbmRpdmlkdWFsIGdseXBoIGRhdGEuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBkZWZpbml0aW9ucyB1c2VkIHRvIG1hbmFnZSBnbHlwaCBkYXRhICAgICAgICAqLworICAvKiAgICB0aHJvdWdoIGdlbmVyaWMgRlRfR2x5cGggb2JqZWN0cy4gIEVhY2ggb2YgdGhlbSBjYW4gY29udGFpbiBhICAgICAgKi8KKyAgLyogICAgYml0bWFwLCBhIHZlY3RvciBvdXRsaW5lLCBvciBldmVuIGltYWdlcyBpbiBvdGhlciBmb3JtYXRzLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIGZvcndhcmQgZGVjbGFyYXRpb24gdG8gYSBwcml2YXRlIHR5cGUgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfR2x5cGhfQ2xhc3NfICBGVF9HbHlwaF9DbGFzczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEhhbmRsZSB0byBhbiBvYmplY3QgdXNlZCB0byBtb2RlbCBnZW5lcmljIGdseXBoIGltYWdlcy4gIEl0IGlzIGEgICAqLworICAvKiAgICBwb2ludGVyIHRvIHRoZSBARlRfR2x5cGhSZWMgc3RydWN0dXJlIGFuZCBjYW4gY29udGFpbiBhIGdseXBoICAgICAgKi8KKyAgLyogICAgYml0bWFwIG9yIHBvaW50ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR2x5cGggb2JqZWN0cyBhcmUgbm90IG93bmVkIGJ5IHRoZSBsaWJyYXJ5LiAgWW91IG11c3QgdGh1cyByZWxlYXNlICovCisgIC8qICAgIHRoZW0gbWFudWFsbHkgKHRocm91Z2ggQEZUX0RvbmVfR2x5cGgpIF9iZWZvcmVfIGNhbGxpbmcgICAgICAgICAgICAqLworICAvKiAgICBARlRfRG9uZV9GcmVlVHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0dseXBoUmVjXyogIEZUX0dseXBoOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2x5cGhSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJvb3QgZ2x5cGggc3RydWN0dXJlIGNvbnRhaW5zIGEgZ2l2ZW4gZ2x5cGggaW1hZ2UgcGx1cyBpdHMgICAgICovCisgIC8qICAgIGFkdmFuY2Ugd2lkdGggaW4gMTYuMTYgZml4ZWQtcG9pbnQgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogQSBoYW5kbGUgdG8gdGhlIEZyZWVUeXBlIGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2xhenogICA6OiBBIHBvaW50ZXIgdG8gdGhlIGdseXBoJ3MgY2xhc3MuICBQcml2YXRlLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb3JtYXQgIDo6IFRoZSBmb3JtYXQgb2YgdGhlIGdseXBoJ3MgaW1hZ2UuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFkdmFuY2UgOjogQSAxNi4xNiB2ZWN0b3IgdGhhdCBnaXZlcyB0aGUgZ2x5cGgncyBhZHZhbmNlIHdpZHRoLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0dseXBoUmVjXworICB7CisgICAgRlRfTGlicmFyeSAgICAgICAgICAgICBsaWJyYXJ5OworICAgIGNvbnN0IEZUX0dseXBoX0NsYXNzKiAgY2xheno7CisgICAgRlRfR2x5cGhfRm9ybWF0ICAgICAgICBmb3JtYXQ7CisgICAgRlRfVmVjdG9yICAgICAgICAgICAgICBhZHZhbmNlOworCisgIH0gRlRfR2x5cGhSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXBHbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhbiBvYmplY3QgdXNlZCB0byBtb2RlbCBhIGJpdG1hcCBnbHlwaCBpbWFnZS4gIFRoaXMgaXMgKi8KKyAgLyogICAgYSBzdWItY2xhc3Mgb2YgQEZUX0dseXBoLCBhbmQgYSBwb2ludGVyIHRvIEBGVF9CaXRtYXBHbHlwaFJlYy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9CaXRtYXBHbHlwaFJlY18qICBGVF9CaXRtYXBHbHlwaDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0JpdG1hcEdseXBoUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgZm9yIGJpdG1hcCBnbHlwaCBpbWFnZXMuICBUaGlzIHJlYWxseSBpcyBhICAgICAgICAqLworICAvKiAgICBgc3ViLWNsYXNzJyBvZiBARlRfR2x5cGhSZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByb290ICAgOjogVGhlIHJvb3QgQEZUX0dseXBoIGZpZWxkcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlZnQgICA6OiBUaGUgbGVmdC1zaWRlIGJlYXJpbmcsIGkuZS4sIHRoZSBob3Jpem9udGFsIGRpc3RhbmNlICAgICAqLworICAvKiAgICAgICAgICAgICAgZnJvbSB0aGUgY3VycmVudCBwZW4gcG9zaXRpb24gdG8gdGhlIGxlZnQgYm9yZGVyIG9mIHRoZSAgKi8KKyAgLyogICAgICAgICAgICAgIGdseXBoIGJpdG1hcC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0b3AgICAgOjogVGhlIHRvcC1zaWRlIGJlYXJpbmcsIGkuZS4sIHRoZSB2ZXJ0aWNhbCBkaXN0YW5jZSBmcm9tICAgKi8KKyAgLyogICAgICAgICAgICAgIHRoZSBjdXJyZW50IHBlbiBwb3NpdGlvbiB0byB0aGUgdG9wIGJvcmRlciBvZiB0aGUgZ2x5cGggICovCisgIC8qICAgICAgICAgICAgICBiaXRtYXAuICBUaGlzIGRpc3RhbmNlIGlzIHBvc2l0aXZlIGZvciB1cHdhcmRzfnkhICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYml0bWFwIDo6IEEgZGVzY3JpcHRvciBmb3IgdGhlIGJpdG1hcC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgWW91IGNhbiB0eXBlY2FzdCBhbiBARlRfR2x5cGggdG8gQEZUX0JpdG1hcEdseXBoIGlmIHlvdSBoYXZlICAgICAgICovCisgIC8qICAgIGBnbHlwaC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAnLiAgVGhpcyBsZXRzIHlvdSBhY2Nlc3MgICAqLworICAvKiAgICB0aGUgYml0bWFwJ3MgY29udGVudHMgZWFzaWx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBjb3JyZXNwb25kaW5nIHBpeGVsIGJ1ZmZlciBpcyBhbHdheXMgb3duZWQgYnkgQEZUX0JpdG1hcEdseXBoICAqLworICAvKiAgICBhbmQgaXMgdGh1cyBjcmVhdGVkIGFuZCBkZXN0cm95ZWQgd2l0aCBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9CaXRtYXBHbHlwaFJlY18KKyAgeworICAgIEZUX0dseXBoUmVjICByb290OworICAgIEZUX0ludCAgICAgICBsZWZ0OworICAgIEZUX0ludCAgICAgICB0b3A7CisgICAgRlRfQml0bWFwICAgIGJpdG1hcDsKKworICB9IEZUX0JpdG1hcEdseXBoUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZUdseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYW4gb2JqZWN0IHVzZWQgdG8gbW9kZWwgYW4gb3V0bGluZSBnbHlwaCBpbWFnZS4gIFRoaXMgICovCisgIC8qICAgIGlzIGEgc3ViLWNsYXNzIG9mIEBGVF9HbHlwaCwgYW5kIGEgcG9pbnRlciB0byBARlRfT3V0bGluZUdseXBoUmVjLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfT3V0bGluZUdseXBoUmVjXyogIEZUX091dGxpbmVHbHlwaDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVHbHlwaFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgZm9yIG91dGxpbmUgKHZlY3RvcmlhbCkgZ2x5cGggaW1hZ2VzLiAgVGhpcyAgICAgICAqLworICAvKiAgICByZWFsbHkgaXMgYSBgc3ViLWNsYXNzJyBvZiBARlRfR2x5cGhSZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByb290ICAgIDo6IFRoZSByb290IEBGVF9HbHlwaCBmaWVsZHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmUgOjogQSBkZXNjcmlwdG9yIGZvciB0aGUgb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFlvdSBjYW4gdHlwZWNhc3QgYW4gQEZUX0dseXBoIHRvIEBGVF9PdXRsaW5lR2x5cGggaWYgeW91IGhhdmUgICAgICAqLworICAvKiAgICBgZ2x5cGgtPmZvcm1hdCA9PSBGVF9HTFlQSF9GT1JNQVRfT1VUTElORScuICBUaGlzIGxldHMgeW91IGFjY2VzcyAgKi8KKyAgLyogICAgdGhlIG91dGxpbmUncyBjb250ZW50IGVhc2lseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBcyB0aGUgb3V0bGluZSBpcyBleHRyYWN0ZWQgZnJvbSBhIGdseXBoIHNsb3QsIGl0cyBjb29yZGluYXRlcyBhcmUgKi8KKyAgLyogICAgZXhwcmVzc2VkIG5vcm1hbGx5IGluIDI2LjYgcGl4ZWxzLCB1bmxlc3MgdGhlIGZsYWcgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9MT0FEX05PX1NDQUxFIHdhcyB1c2VkIGluIEBGVF9Mb2FkX0dseXBoKCkgb3IgQEZUX0xvYWRfQ2hhcigpLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG91dGxpbmUncyB0YWJsZXMgYXJlIGFsd2F5cyBvd25lZCBieSB0aGUgb2JqZWN0IGFuZCBhcmUgICAgICAgICovCisgIC8qICAgIGRlc3Ryb3llZCB3aXRoIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX091dGxpbmVHbHlwaFJlY18KKyAgeworICAgIEZUX0dseXBoUmVjICByb290OworICAgIEZUX091dGxpbmUgICBvdXRsaW5lOworCisgIH0gRlRfT3V0bGluZUdseXBoUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X0dseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIGV4dHJhY3QgYSBnbHlwaCBpbWFnZSBmcm9tIGEgc2xvdC4gIE5vdGUgdGhhdCAgICovCisgIC8qICAgIHRoZSBjcmVhdGVkIEBGVF9HbHlwaCBvYmplY3QgbXVzdCBiZSByZWxlYXNlZCB3aXRoIEBGVF9Eb25lX0dseXBoLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNsb3QgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGdseXBoIHNsb3QuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFnbHlwaCA6OiBBIGhhbmRsZSB0byB0aGUgZ2x5cGggb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9HbHlwaCggRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgIEZUX0dseXBoICAgICAqYWdseXBoICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HbHlwaF9Db3B5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGZ1bmN0aW9uIHVzZWQgdG8gY29weSBhIGdseXBoIGltYWdlLiAgTm90ZSB0aGF0IHRoZSBjcmVhdGVkICAgICAgKi8KKyAgLyogICAgQEZUX0dseXBoIG9iamVjdCBtdXN0IGJlIHJlbGVhc2VkIHdpdGggQEZUX0RvbmVfR2x5cGguICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc291cmNlIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZ2x5cGggb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFyZ2V0IDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZ2x5cGggb2JqZWN0LiAgMH5pbiBjYXNlIG9mICAgICAgICovCisgIC8qICAgICAgICAgICAgICBlcnJvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dseXBoX0NvcHkoIEZUX0dseXBoICAgc291cmNlLAorICAgICAgICAgICAgICAgICBGVF9HbHlwaCAgKnRhcmdldCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2x5cGhfVHJhbnNmb3JtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVHJhbnNmb3JtIGEgZ2x5cGggaW1hZ2UgaWYgaXRzIGZvcm1hdCBpcyBzY2FsYWJsZS4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGggIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZ2x5cGggb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF0cml4IDo6IEEgcG9pbnRlciB0byBhIDJ4MiBtYXRyaXggdG8gYXBwbHkuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkZWx0YSAgOjogQSBwb2ludGVyIHRvIGEgMmQgdmVjdG9yIHRvIGFwcGx5LiAgQ29vcmRpbmF0ZXMgYXJlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiAxLzY0dGggb2YgYSBwaXhlbC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZSAoaWYgbm90IDAsIHRoZSBnbHlwaCBmb3JtYXQgaXMgbm90IHNjYWxhYmxlKS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIDJ4MiB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXMgYWxzbyBhcHBsaWVkIHRvIHRoZSBnbHlwaCdzICAgICAgICovCisgIC8qICAgIGFkdmFuY2UgdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dseXBoX1RyYW5zZm9ybSggRlRfR2x5cGggICAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTWF0cml4KiAgbWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIGRlbHRhICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HbHlwaF9CQm94X01vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgbW9kZSBob3cgdGhlIHZhbHVlcyBvZiBARlRfR2x5cGhfR2V0X0NCb3ggYXJlIHJldHVybmVkLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HTFlQSF9CQk9YX1VOU0NBTEVEIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBSZXR1cm4gdW5zY2FsZWQgZm9udCB1bml0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HTFlQSF9CQk9YX1NVQlBJWEVMUyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBSZXR1cm4gdW5maXR0ZWQgMjYuNiBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HTFlQSF9CQk9YX0dSSURGSVQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBSZXR1cm4gZ3JpZC1maXR0ZWQgMjYuNiBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HTFlQSF9CQk9YX1RSVU5DQVRFIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBSZXR1cm4gY29vcmRpbmF0ZXMgaW4gaW50ZWdlciBwaXhlbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HTFlQSF9CQk9YX1BJWEVMUyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBSZXR1cm4gZ3JpZC1maXR0ZWQgcGl4ZWwgY29vcmRpbmF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIEZUX0dseXBoX0JCb3hfTW9kZV8KKyAgeworICAgIEZUX0dMWVBIX0JCT1hfVU5TQ0FMRUQgID0gMCwKKyAgICBGVF9HTFlQSF9CQk9YX1NVQlBJWEVMUyA9IDAsCisgICAgRlRfR0xZUEhfQkJPWF9HUklERklUICAgPSAxLAorICAgIEZUX0dMWVBIX0JCT1hfVFJVTkNBVEUgID0gMiwKKyAgICBGVF9HTFlQSF9CQk9YX1BJWEVMUyAgICA9IDMKKworICB9IEZUX0dseXBoX0JCb3hfTW9kZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X2dseXBoX2Jib3hfeHh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZXNlIGNvbnN0YW50cyBhcmUgZGVwcmVjYXRlZC4gIFVzZSB0aGUgY29ycmVzcG9uZGluZyAgICAgICAgICAgICAqLworICAvKiAgICBARlRfR2x5cGhfQkJveF9Nb2RlIHZhbHVlcyBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGZ0X2dseXBoX2Jib3hfdW5zY2FsZWQgIDo6IFNlZSBARlRfR0xZUEhfQkJPWF9VTlNDQUxFRC4gICAgICAgICAgICAgKi8KKyAgLyogICBmdF9nbHlwaF9iYm94X3N1YnBpeGVscyA6OiBTZWUgQEZUX0dMWVBIX0JCT1hfU1VCUElYRUxTLiAgICAgICAgICAgICovCisgIC8qICAgZnRfZ2x5cGhfYmJveF9ncmlkZml0ICAgOjogU2VlIEBGVF9HTFlQSF9CQk9YX0dSSURGSVQuICAgICAgICAgICAgICAqLworICAvKiAgIGZ0X2dseXBoX2Jib3hfdHJ1bmNhdGUgIDo6IFNlZSBARlRfR0xZUEhfQkJPWF9UUlVOQ0FURS4gICAgICAgICAgICAgKi8KKyAgLyogICBmdF9nbHlwaF9iYm94X3BpeGVscyAgICA6OiBTZWUgQEZUX0dMWVBIX0JCT1hfUElYRUxTLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBmdF9nbHlwaF9iYm94X3Vuc2NhbGVkICAgRlRfR0xZUEhfQkJPWF9VTlNDQUxFRAorI2RlZmluZSBmdF9nbHlwaF9iYm94X3N1YnBpeGVscyAgRlRfR0xZUEhfQkJPWF9TVUJQSVhFTFMKKyNkZWZpbmUgZnRfZ2x5cGhfYmJveF9ncmlkZml0ICAgIEZUX0dMWVBIX0JCT1hfR1JJREZJVAorI2RlZmluZSBmdF9nbHlwaF9iYm94X3RydW5jYXRlICAgRlRfR0xZUEhfQkJPWF9UUlVOQ0FURQorI2RlZmluZSBmdF9nbHlwaF9iYm94X3BpeGVscyAgICAgRlRfR0xZUEhfQkJPWF9QSVhFTFMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoX0dldF9DQm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiBhIGdseXBoJ3MgYGNvbnRyb2wgYm94Jy4gIFRoZSBjb250cm9sIGJveCBlbmNsb3NlcyBhbGwgdGhlICAqLworICAvKiAgICBvdXRsaW5lJ3MgcG9pbnRzLCBpbmNsdWRpbmcgQsOpemllciBjb250cm9sIHBvaW50cy4gIFRob3VnaCBpdCAgICAgICovCisgIC8qICAgIGNvaW5jaWRlcyB3aXRoIHRoZSBleGFjdCBib3VuZGluZyBib3ggZm9yIG1vc3QgZ2x5cGhzLCBpdCBjYW4gYmUgICAqLworICAvKiAgICBzbGlnaHRseSBsYXJnZXIgaW4gc29tZSBzaXR1YXRpb25zIChsaWtlIHdoZW4gcm90YXRpbmcgYW4gb3V0bGluZSAgKi8KKyAgLyogICAgd2hpY2ggY29udGFpbnMgQsOpemllciBvdXRzaWRlIGFyY3MpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29tcHV0aW5nIHRoZSBjb250cm9sIGJveCBpcyB2ZXJ5IGZhc3QsIHdoaWxlIGdldHRpbmcgdGhlIGJvdW5kaW5nICovCisgIC8qICAgIGJveCBjYW4gdGFrZSBtdWNoIG1vcmUgdGltZSBhcyBpdCBuZWVkcyB0byB3YWxrIG92ZXIgYWxsIHNlZ21lbnRzICAqLworICAvKiAgICBhbmQgYXJjcyBpbiB0aGUgb3V0bGluZS4gIFRvIGdldCB0aGUgbGF0dGVyLCB5b3UgY2FuIHVzZSB0aGUgICAgICAgKi8KKyAgLyogICAgYGZ0YmJveCcgY29tcG9uZW50IHdoaWNoIGlzIGRlZGljYXRlZCB0byB0aGlzIHNpbmdsZSB0YXNrLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGggOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBnbHlwaCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2RlICA6OiBUaGUgbW9kZSB3aGljaCBpbmRpY2F0ZXMgaG93IHRvIGludGVycHJldCB0aGUgcmV0dXJuZWQgICAgKi8KKyAgLyogICAgICAgICAgICAgYm91bmRpbmcgYm94IHZhbHVlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWNib3ggOjogVGhlIGdseXBoIGNvb3JkaW5hdGUgYm91bmRpbmcgYm94LiAgQ29vcmRpbmF0ZXMgYXJlICAgICAgICovCisgIC8qICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiAxLzY0dGggb2YgcGl4ZWxzIGlmIGl0IGlzIGdyaWQtZml0dGVkLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgZ2x5cGggb3JpZ2luLCB1c2luZyB0aGUgeX51cHdhcmRzICAqLworICAvKiAgICBjb252ZW50aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIHRoZSBnbHlwaCBoYXMgYmVlbiBsb2FkZWQgd2l0aCBARlRfTE9BRF9OT19TQ0FMRSwgYGJib3hfbW9kZScgICAqLworICAvKiAgICBtdXN0IGJlIHNldCB0byBARlRfR0xZUEhfQkJPWF9VTlNDQUxFRCB0byBnZXQgdW5zY2FsZWQgZm9udCAgICAgICAgKi8KKyAgLyogICAgdW5pdHMgaW4gMjYuNiBwaXhlbCBmb3JtYXQuICBUaGUgdmFsdWUgQEZUX0dMWVBIX0JCT1hfU1VCUElYRUxTICAgICovCisgIC8qICAgIGlzIGFub3RoZXIgbmFtZSBmb3IgdGhpcyBjb25zdGFudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgdGhlIGZvbnQgaXMgdHJpY2t5IGFuZCB0aGUgZ2x5cGggaGFzIGJlZW4gbG9hZGVkIHdpdGggICAgICAgICAgICovCisgIC8qICAgIEBGVF9MT0FEX05PX1NDQUxFLCB0aGUgcmVzdWx0aW5nIENCb3ggaXMgbWVhbmluZ2xlc3MuICBUbyBnZXQgICAgICAqLworICAvKiAgICByZWFzb25hYmxlIHZhbHVlcyBmb3IgdGhlIENCb3ggaXQgaXMgbmVjZXNzYXJ5IHRvIGxvYWQgdGhlIGdseXBoICAgKi8KKyAgLyogICAgYXQgYSBsYXJnZSBwcGVtIHZhbHVlIChzbyB0aGF0IHRoZSBoaW50aW5nIGluc3RydWN0aW9ucyBjYW4gICAgICAgICovCisgIC8qICAgIHByb3Blcmx5IHNoaWZ0IGFuZCBzY2FsZSB0aGUgc3ViZ2x5cGhzKSwgdGhlbiBleHRyYWN0aW5nIHRoZSBDQm94ICAqLworICAvKiAgICB3aGljaCBjYW4gYmUgZXZlbnR1YWxseSBjb252ZXJ0ZWQgYmFjayB0byBmb250IHVuaXRzLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgdGhhdCB0aGUgbWF4aW11bSBjb29yZGluYXRlcyBhcmUgZXhjbHVzaXZlLCB3aGljaCBtZWFucyB0aGF0ICAqLworICAvKiAgICBvbmUgY2FuIGNvbXB1dGUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGdseXBoIGltYWdlIChiZSBpdCBpbiAgKi8KKyAgLyogICAgaW50ZWdlciBvciAyNi42IHBpeGVscykgYXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB3aWR0aCAgPSBiYm94LnhNYXggLSBiYm94LnhNaW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgaGVpZ2h0ID0gYmJveC55TWF4IC0gYmJveC55TWluOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgYWxzbyB0aGF0IGZvciAyNi42IGNvb3JkaW5hdGVzLCBpZiBgYmJveF9tb2RlJyBpcyBzZXQgdG8gICAgICAqLworICAvKiAgICBARlRfR0xZUEhfQkJPWF9HUklERklULCB0aGUgY29vcmRpbmF0ZXMgd2lsbCBhbHNvIGJlIGdyaWQtZml0dGVkLCAgKi8KKyAgLyogICAgd2hpY2ggY29ycmVzcG9uZHMgdG86ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBiYm94LnhNaW4gPSBGTE9PUihiYm94LnhNaW4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgYmJveC55TWluID0gRkxPT1IoYmJveC55TWluKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGJib3gueE1heCA9IENFSUxJTkcoYmJveC54TWF4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBiYm94LnlNYXggPSBDRUlMSU5HKGJib3gueU1heCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVG8gZ2V0IHRoZSBiYm94IGluIHBpeGVsIGNvb3JkaW5hdGVzLCBzZXQgYGJib3hfbW9kZScgdG8gICAgICAgICAgICovCisgIC8qICAgIEBGVF9HTFlQSF9CQk9YX1RSVU5DQVRFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVG8gZ2V0IHRoZSBiYm94IGluIGdyaWQtZml0dGVkIHBpeGVsIGNvb3JkaW5hdGVzLCBzZXQgYGJib3hfbW9kZScgICovCisgIC8qICAgIHRvIEBGVF9HTFlQSF9CQk9YX1BJWEVMUy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfR2x5cGhfR2V0X0NCb3goIEZUX0dseXBoICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBiYm94X21vZGUsCisgICAgICAgICAgICAgICAgICAgICBGVF9CQm94ICAqYWNib3ggKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoX1RvX0JpdG1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbnZlcnQgYSBnaXZlbiBnbHlwaCBvYmplY3QgdG8gYSBiaXRtYXAgZ2x5cGggb2JqZWN0LiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRoZV9nbHlwaCAgIDo6IEEgcG9pbnRlciB0byBhIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGdseXBoLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlbmRlcl9tb2RlIDo6IEFuIGVudW1lcmF0aW9uIHRoYXQgZGVzY3JpYmVzIGhvdyB0aGUgZGF0YSBpcyAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICByZW5kZXJlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG9yaWdpbiAgICAgIDo6IEEgcG9pbnRlciB0byBhIHZlY3RvciB1c2VkIHRvIHRyYW5zbGF0ZSB0aGUgZ2x5cGggICAqLworICAvKiAgICAgICAgICAgICAgICAgICBpbWFnZSBiZWZvcmUgcmVuZGVyaW5nLiAgQ2FuIGJlfjAgKGlmIG5vICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24pLiAgVGhlIG9yaWdpbiBpcyBleHByZXNzZWQgaW4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIDI2LjYgcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVzdHJveSAgICAgOjogQSBib29sZWFuIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhlIG9yaWdpbmFsIGdseXBoICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGltYWdlIHNob3VsZCBiZSBkZXN0cm95ZWQgYnkgdGhpcyBmdW5jdGlvbi4gIEl0IGlzICAqLworICAvKiAgICAgICAgICAgICAgICAgICBuZXZlciBkZXN0cm95ZWQgaW4gY2FzZSBvZiBlcnJvci4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZyBpZiB0aGUgZ2x5cGggZm9ybWF0IGlzbid0IHNjYWxhYmxlLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBnbHlwaCBpbWFnZSBpcyB0cmFuc2xhdGVkIHdpdGggdGhlIGBvcmlnaW4nIHZlY3RvciBiZWZvcmUgICAgICAqLworICAvKiAgICByZW5kZXJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIEBGVF9HbHlwaCBoYW5kbGUsIHRoYXQgd2lsbCAqLworICAvKiAgICBiZSBfcmVwbGFjZWRfIGJ5IHRoaXMgZnVuY3Rpb24gKHdpdGggbmV3bHkgYWxsb2NhdGVkIGRhdGEpLiAgICAgICAgKi8KKyAgLyogICAgVHlwaWNhbGx5LCB5b3Ugd291bGQgdXNlIChvbWl0dGluZyBlcnJvciBoYW5kbGluZyk6ICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICBGVF9HbHlwaCAgICAgICAgZ2x5cGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgRlRfQml0bWFwR2x5cGggIGdseXBoX2JpdG1hcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgLy8gbG9hZCBnbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIGVycm9yID0gRlRfTG9hZF9DaGFyKCBmYWNlLCBnbHlwaF9pbmRleCwgRlRfTE9BRF9ERUZBVVQgKTsgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgLy8gZXh0cmFjdCBnbHlwaCBpbWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIGVycm9yID0gRlRfR2V0X0dseXBoKCBmYWNlLT5nbHlwaCwgJmdseXBoICk7ICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgLy8gY29udmVydCB0byBhIGJpdG1hcCAoZGVmYXVsdCByZW5kZXIgbW9kZSArIGRlc3Ryb3lpbmcgb2xkKSAgKi8KKyAgLyogICAgICAgIGlmICggZ2x5cGgtPmZvcm1hdCAhPSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQICkgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBlcnJvciA9IEZUX0dseXBoX1RvX0JpdG1hcCggJmdseXBoLCBGVF9SRU5ERVJfTU9ERV9OT1JNQUwsICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIGlmICggZXJyb3IgKSAvLyBgZ2x5cGgnIHVuY2hhbmdlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgLy8gYWNjZXNzIGJpdG1hcCBjb250ZW50IGJ5IHR5cGVjYXN0aW5nICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIGdseXBoX2JpdG1hcCA9IChGVF9CaXRtYXBHbHlwaClnbHlwaDsgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgLy8gZG8gZnVubnkgc3R1ZmYgd2l0aCBpdCwgbGlrZSBibGl0dGluZy9kcmF3aW5nICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgLy8gZGlzY2FyZCBnbHlwaCBpbWFnZSAoYml0bWFwIG9yIG5vdCkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIEZUX0RvbmVfR2x5cGgoIGdseXBoICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEhlcmUgYW5vdGhlciBleGFtcGxlLCBhZ2FpbiB3aXRob3V0IGVycm9yIGhhbmRsaW5nOiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgRlRfR2x5cGggIGdseXBoc1tNQVhfR0xZUEhTXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICBmb3IgKCBpZHggPSAwOyBpIDwgTUFYX0dMWVBIUzsgaSsrICkgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBlcnJvciA9IEZUX0xvYWRfR2x5cGgoIGZhY2UsIGlkeCwgRlRfTE9BRF9ERUZBVUxUICkgfHwgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBGVF9HZXRfR2x5cGggKCBmYWNlLT5nbHlwaCwgJmdseXBoW2lkeF0gKTsgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICBmb3IgKCBpZHggPSAwOyBpIDwgTUFYX0dMWVBIUzsgaSsrICkgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgRlRfR2x5cGggIGJpdG1hcCA9IGdseXBoc1tpZHhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAvLyBhZnRlciB0aGlzIGNhbGwsIGBiaXRtYXAnIG5vIGxvbmdlciBwb2ludHMgaW50byAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgLy8gdGhlIGBnbHlwaHMnIGFycmF5IChhbmQgdGhlIG9sZCB2YWx1ZSBpc24ndCBkZXN0cm95ZWQpICAgICovCisgIC8qICAgICAgICAgIEZUX0dseXBoX1RvX0JpdG1hcCggJmJpdG1hcCwgRlRfUkVOREVSX01PREVfTU9OTywgMCwgMCApOyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBGVF9Eb25lX0dseXBoKCBiaXRtYXAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICBmb3IgKCBpZHggPSAwOyBpIDwgTUFYX0dMWVBIUzsgaSsrICkgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBGVF9Eb25lX0dseXBoKCBnbHlwaHNbaWR4XSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2x5cGhfVG9fQml0bWFwKCBGVF9HbHlwaCogICAgICAgdGhlX2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcl9Nb2RlICByZW5kZXJfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICAgICAgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICBkZXN0cm95ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Eb25lX0dseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZXN0cm95IGEgZ2l2ZW4gZ2x5cGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaCA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGdseXBoIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX0RvbmVfR2x5cGgoIEZUX0dseXBoICBnbHlwaCApOworCisgIC8qICovCisKKworICAvKiBvdGhlciBoZWxwZnVsIGZ1bmN0aW9ucyAqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbXB1dGF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NYXRyaXhfTXVsdGlwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQZXJmb3JtIHRoZSBtYXRyaXggb3BlcmF0aW9uIGBiID0gYSpiJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhIDo6IEEgcG9pbnRlciB0byBtYXRyaXggYGEnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiIDo6IEEgcG9pbnRlciB0byBtYXRyaXggYGInLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVzdWx0IGlzIHVuZGVmaW5lZCBpZiBlaXRoZXIgYGEnIG9yIGBiJyBpcyB6ZXJvLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX01hdHJpeF9NdWx0aXBseSggY29uc3QgRlRfTWF0cml4KiAgYSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9NYXRyaXgqICAgICAgICBiICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NYXRyaXhfSW52ZXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbnZlcnQgYSAyeDIgbWF0cml4LiAgUmV0dXJuIGFuIGVycm9yIGlmIGl0IGNhbid0IGJlIGludmVydGVkLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXRyaXggOjogQSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgbWF0cml4LiAgUmVtYWlucyB1bnRvdWNoZWQgaW4gICAgKi8KKyAgLyogICAgICAgICAgICAgIGNhc2Ugb2YgZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfTWF0cml4X0ludmVydCggRlRfTWF0cml4KiAgbWF0cml4ICk7CisKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRHTFlQSF9IX18gKi8KKworCisvKiBFTkQgKi8KKworCisvKiBMb2NhbCBWYXJpYWJsZXM6ICovCisvKiBjb2Rpbmc6IHV0Zi04ICAgICovCisvKiBFbmQ6ICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0Z3h2YWwuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRneHZhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MzY1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0Z3h2YWwuaApAQCAtMCwwICsxLDM1OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRneHZhbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgdmFsaWRhdGluZyBUcnVlVHlwZUdYL0FBVCB0YWJsZXMgKHNwZWNpZmljYXRpb24pLiAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA0LCAyMDA1LCAyMDA2IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBNYXNhdGFrZSBZQU1BVE8sIFJlZGhhdCBLLkssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogZ3h2YWxpZCBpcyBkZXJpdmVkIGZyb20gYm90aCBneGxheW91dCBtb2R1bGUgYW5kIG90dmFsaWQgbW9kdWxlLiAgICAgICAgKi8KKy8qIERldmVsb3BtZW50IG9mIGd4bGF5b3V0IGlzIHN1cHBvcnRlZCBieSB0aGUgSW5mb3JtYXRpb24tdGVjaG5vbG9neSAgICAgICovCisvKiBQcm9tb3Rpb24gQWdlbmN5KElQQSksIEphcGFuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUR1hWQUxfSF9fCisjZGVmaW5lIF9fRlRHWFZBTF9IX18KKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBneF92YWxpZGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUcnVlVHlwZUdYL0FBVCBWYWxpZGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBBUEkgdG8gdmFsaWRhdGUgVHJ1ZVR5cGVHWC9BQVQgdGFibGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9ucyB0byB2YWxpZGF0ZSAgICAgKi8KKyAgLyogICAgc29tZSBUcnVlVHlwZUdYIHRhYmxlcyAoZmVhdCwgbW9ydCwgbW9yeCwgYnNsbiwganVzdCwga2Vybiwgb3BiZCwgICovCisgIC8qICAgIHRyYWssIHByb3AsIGxjYXIpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBXYXJuaW5nOiBVc2UgRlRfVkFMSURBVEVfWFhYIHRvIHZhbGlkYXRlIGEgdGFibGUuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgRm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSBmb3IgZ3h2YWxpZCBkZXZlbG9wZXJzLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgRlRfVkFMSURBVEVfZmVhdF9JTkRFWCAgICAgMAorI2RlZmluZSBGVF9WQUxJREFURV9tb3J0X0lOREVYICAgICAxCisjZGVmaW5lIEZUX1ZBTElEQVRFX21vcnhfSU5ERVggICAgIDIKKyNkZWZpbmUgRlRfVkFMSURBVEVfYnNsbl9JTkRFWCAgICAgMworI2RlZmluZSBGVF9WQUxJREFURV9qdXN0X0lOREVYICAgICA0CisjZGVmaW5lIEZUX1ZBTElEQVRFX2tlcm5fSU5ERVggICAgIDUKKyNkZWZpbmUgRlRfVkFMSURBVEVfb3BiZF9JTkRFWCAgICAgNgorI2RlZmluZSBGVF9WQUxJREFURV90cmFrX0lOREVYICAgICA3CisjZGVmaW5lIEZUX1ZBTElEQVRFX3Byb3BfSU5ERVggICAgIDgKKyNkZWZpbmUgRlRfVkFMSURBVEVfbGNhcl9JTkRFWCAgICAgOQorI2RlZmluZSBGVF9WQUxJREFURV9HWF9MQVNUX0lOREVYICBGVF9WQUxJREFURV9sY2FyX0lOREVYCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfVkFMSURBVEVfR1hfTEVOR1RICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGUgbnVtYmVyIG9mIHRhYmxlcyBjaGVja2VkIGluIHRoaXMgbW9kdWxlLiAgVXNlIGl0IGFzIGEgcGFyYW1ldGVyCisgICAqICAgZm9yIHRoZSBgdGFibGUtbGVuZ3RoJyBhcmd1bWVudCBvZiBmdW5jdGlvbiBARlRfVHJ1ZVR5cGVHWF9WYWxpZGF0ZS4KKyAgICovCisjZGVmaW5lIEZUX1ZBTElEQVRFX0dYX0xFTkdUSCAgICAgKEZUX1ZBTElEQVRFX0dYX0xBU1RfSU5ERVggKyAxKQorCisgIC8qICovCisKKyAgLyogVXAgdG8gMHgxMDAwIGlzIHVzZWQgYnkgb3R2YWxpZC4KKyAgICAgT3gyeHh4IGlzIHJlc2VydmVkIGZvciBmZWF0dXJlIE9UIGV4dGVuc2lvbi4gKi8KKyNkZWZpbmUgRlRfVkFMSURBVEVfR1hfU1RBUlQgMHg0MDAwCisjZGVmaW5lIEZUX1ZBTElEQVRFX0dYX0JJVEZJRUxEKCB0YWcgKSAgICAgICAgICAgICAgICAgIFwKKyAgKCBGVF9WQUxJREFURV9HWF9TVEFSVCA8PCBGVF9WQUxJREFURV8jI3RhZyMjX0lOREVYICkKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBlbnVtOgorICAqICAgIEZUX1ZBTElEQVRFX0dYWFhYCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgQSBsaXN0IG9mIGJpdC1maWVsZCBjb25zdGFudHMgdXNlZCB3aXRoIEBGVF9UcnVlVHlwZUdYX1ZhbGlkYXRlIHRvCisgICogICAgaW5kaWNhdGUgd2hpY2ggVHJ1ZVR5cGVHWC9BQVQgVHlwZSB0YWJsZXMgc2hvdWxkIGJlIHZhbGlkYXRlZC4KKyAgKgorICAqIEB2YWx1ZXM6CisgICogICAgRlRfVkFMSURBVEVfZmVhdCA6OgorICAqICAgICAgVmFsaWRhdGUgYGZlYXQnIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfbW9ydCA6OgorICAqICAgICAgVmFsaWRhdGUgYG1vcnQnIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfbW9yeCA6OgorICAqICAgICAgVmFsaWRhdGUgYG1vcngnIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfYnNsbiA6OgorICAqICAgICAgVmFsaWRhdGUgYGJzbG4nIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfanVzdCA6OgorICAqICAgICAgVmFsaWRhdGUgYGp1c3QnIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfa2VybiA6OgorICAqICAgICAgVmFsaWRhdGUgYGtlcm4nIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfb3BiZCA6OgorICAqICAgICAgVmFsaWRhdGUgYG9wYmQnIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfdHJhayA6OgorICAqICAgICAgVmFsaWRhdGUgYHRyYWsnIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfcHJvcCA6OgorICAqICAgICAgVmFsaWRhdGUgYHByb3AnIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfbGNhciA6OgorICAqICAgICAgVmFsaWRhdGUgYGxjYXInIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfR1ggOjoKKyAgKiAgICAgIFZhbGlkYXRlIGFsbCBUcnVlVHlwZUdYIHRhYmxlcyAoZmVhdCwgbW9ydCwgbW9yeCwgYnNsbiwganVzdCwga2VybiwKKyAgKiAgICAgIG9wYmQsIHRyYWssIHByb3AgYW5kIGxjYXIpLgorICAqCisgICovCisKKyNkZWZpbmUgRlRfVkFMSURBVEVfZmVhdCAgRlRfVkFMSURBVEVfR1hfQklURklFTEQoIGZlYXQgKQorI2RlZmluZSBGVF9WQUxJREFURV9tb3J0ICBGVF9WQUxJREFURV9HWF9CSVRGSUVMRCggbW9ydCApCisjZGVmaW5lIEZUX1ZBTElEQVRFX21vcnggIEZUX1ZBTElEQVRFX0dYX0JJVEZJRUxEKCBtb3J4ICkKKyNkZWZpbmUgRlRfVkFMSURBVEVfYnNsbiAgRlRfVkFMSURBVEVfR1hfQklURklFTEQoIGJzbG4gKQorI2RlZmluZSBGVF9WQUxJREFURV9qdXN0ICBGVF9WQUxJREFURV9HWF9CSVRGSUVMRCgganVzdCApCisjZGVmaW5lIEZUX1ZBTElEQVRFX2tlcm4gIEZUX1ZBTElEQVRFX0dYX0JJVEZJRUxEKCBrZXJuICkKKyNkZWZpbmUgRlRfVkFMSURBVEVfb3BiZCAgRlRfVkFMSURBVEVfR1hfQklURklFTEQoIG9wYmQgKQorI2RlZmluZSBGVF9WQUxJREFURV90cmFrICBGVF9WQUxJREFURV9HWF9CSVRGSUVMRCggdHJhayApCisjZGVmaW5lIEZUX1ZBTElEQVRFX3Byb3AgIEZUX1ZBTElEQVRFX0dYX0JJVEZJRUxEKCBwcm9wICkKKyNkZWZpbmUgRlRfVkFMSURBVEVfbGNhciAgRlRfVkFMSURBVEVfR1hfQklURklFTEQoIGxjYXIgKQorCisjZGVmaW5lIEZUX1ZBTElEQVRFX0dYICAoIEZUX1ZBTElEQVRFX2ZlYXQgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX21vcnQgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX21vcnggfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX2JzbG4gfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX2p1c3QgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX2tlcm4gfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX29wYmQgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX3RyYWsgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX3Byb3AgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX2xjYXIgKQorCisKKyAgLyogKi8KKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICAgRlRfVHJ1ZVR5cGVHWF9WYWxpZGF0ZQorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIFZhbGlkYXRlIHZhcmlvdXMgVHJ1ZVR5cGVHWCB0YWJsZXMgdG8gYXNzdXJlIHRoYXQgYWxsIG9mZnNldHMgYW5kCisgICogICAgaW5kaWNlcyBhcmUgdmFsaWQuICBUaGUgaWRlYSBpcyB0aGF0IGEgaGlnaGVyLWxldmVsIGxpYnJhcnkgd2hpY2gKKyAgKiAgICBhY3R1YWxseSBkb2VzIHRoZSB0ZXh0IGxheW91dCBjYW4gYWNjZXNzIHRob3NlIHRhYmxlcyB3aXRob3V0CisgICogICAgZXJyb3IgY2hlY2tpbmcgKHdoaWNoIGNhbiBiZSBxdWl0ZSB0aW1lIGNvbnN1bWluZykuCisgICoKKyAgKiBAaW5wdXQ6CisgICogICAgZmFjZSA6OgorICAqICAgICAgIEEgaGFuZGxlIHRvIHRoZSBpbnB1dCBmYWNlLgorICAqCisgICogICAgdmFsaWRhdGlvbl9mbGFncyA6OgorICAqICAgICAgIEEgYml0IGZpZWxkIHdoaWNoIHNwZWNpZmllcyB0aGUgdGFibGVzIHRvIGJlIHZhbGlkYXRlZC4gIFNlZQorICAqICAgICAgIEBGVF9WQUxJREFURV9HWFhYWCBmb3IgcG9zc2libGUgdmFsdWVzLgorICAqCisgICogICAgdGFibGVfbGVuZ3RoIDo6CisgICogICAgICAgVGhlIHNpemUgb2YgdGhlIGB0YWJsZXMnIGFycmF5LiAgTm9ybWFsbHksIEBGVF9WQUxJREFURV9HWF9MRU5HVEgKKyAgKiAgICAgICBzaG91bGQgYmUgcGFzc2VkLgorICAqCisgICogQG91dHB1dDoKKyAgKiAgICB0YWJsZXMgOjoKKyAgKiAgICAgICBUaGUgYXJyYXkgd2hlcmUgYWxsIHZhbGlkYXRlZCBzZm50IHRhYmxlcyBhcmUgc3RvcmVkLgorICAqICAgICAgIFRoZSBhcnJheSBpdHNlbGYgbXVzdCBiZSBhbGxvY2F0ZWQgYnkgYSBjbGllbnQuCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgKgorICAqIEBub3RlOgorICAqICAgVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdpdGggVHJ1ZVR5cGVHWCBmb250cywgcmV0dXJuaW5nIGFuIGVycm9yCisgICogICBvdGhlcndpc2UuCisgICoKKyAgKiAgIEFmdGVyIHVzZSwgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBkZWFsbG9jYXRlIHRoZSBidWZmZXJzIHBvaW50ZWQgdG8gYnkKKyAgKiAgIGVhY2ggYHRhYmxlcycgZWxlbWVudCwgYnkgY2FsbGluZyBARlRfVHJ1ZVR5cGVHWF9GcmVlLiAgQSBOVUxMIHZhbHVlCisgICogICBpbmRpY2F0ZXMgdGhhdCB0aGUgdGFibGUgZWl0aGVyIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGZvbnQsIHRoZQorICAqICAgYXBwbGljYXRpb24gaGFzbid0IGFza2VkIGZvciB2YWxpZGF0aW9uLCBvciB0aGUgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZQorICAqICAgdGhlIGFiaWxpdHkgdG8gdmFsaWRhdGUgdGhlIHNmbnQgdGFibGUuCisgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9UcnVlVHlwZUdYX1ZhbGlkYXRlKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIHZhbGlkYXRpb25fZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICB0YWJsZXNbRlRfVkFMSURBVEVfR1hfTEVOR1RIXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIHRhYmxlX2xlbmd0aCApOworCisKKyAgLyogKi8KKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICAgRlRfVHJ1ZVR5cGVHWF9GcmVlCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgRnJlZSB0aGUgYnVmZmVyIGFsbG9jYXRlZCBieSBUcnVlVHlwZUdYIHZhbGlkYXRvci4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgICBmYWNlIDo6CisgICogICAgICAgQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICoKKyAgKiAgICB0YWJsZSA6OgorICAqICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBidWZmZXIgYWxsb2NhdGVkIGJ5CisgICogICAgICAgQEZUX1RydWVUeXBlR1hfVmFsaWRhdGUuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIHRvIGZyZWUgdGhlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkKKyAgKiAgIEBGVF9UcnVlVHlwZUdYX1ZhbGlkYXRlIG9ubHkuCisgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1RydWVUeXBlR1hfRnJlZSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgIHRhYmxlICk7CisKKworICAvKiAqLworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBlbnVtOgorICAqICAgIEZUX1ZBTElEQVRFX0NLRVJOWFhYCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgQSBsaXN0IG9mIGJpdC1maWVsZCBjb25zdGFudHMgdXNlZCB3aXRoIEBGVF9DbGFzc2ljS2Vybl9WYWxpZGF0ZQorICAqICAgIHRvIGluZGljYXRlIHRoZSBjbGFzc2ljIGtlcm4gZGlhbGVjdCBvciBkaWFsZWN0cy4gIElmIHRoZSBzZWxlY3RlZAorICAqICAgIHR5cGUgZG9lc24ndCBmaXQsIEBGVF9DbGFzc2ljS2Vybl9WYWxpZGF0ZSByZWdhcmRzIHRoZSB0YWJsZSBhcworICAqICAgIGludmFsaWQuCisgICoKKyAgKiBAdmFsdWVzOgorICAqICAgIEZUX1ZBTElEQVRFX01TIDo6CisgICogICAgICBIYW5kbGUgdGhlIGBrZXJuJyB0YWJsZSBhcyBhIGNsYXNzaWMgTWljcm9zb2Z0IGtlcm4gdGFibGUuCisgICoKKyAgKiAgICBGVF9WQUxJREFURV9BUFBMRSA6OgorICAqICAgICAgSGFuZGxlIHRoZSBga2VybicgdGFibGUgYXMgYSBjbGFzc2ljIEFwcGxlIGtlcm4gdGFibGUuCisgICoKKyAgKiAgICBGVF9WQUxJREFURV9DS0VSTiA6OgorICAqICAgICAgSGFuZGxlIHRoZSBga2VybicgYXMgZWl0aGVyIGNsYXNzaWMgQXBwbGUgb3IgTWljcm9zb2Z0IGtlcm4gdGFibGUuCisgICovCisjZGVmaW5lIEZUX1ZBTElEQVRFX01TICAgICAoIEZUX1ZBTElEQVRFX0dYX1NUQVJUIDw8IDAgKQorI2RlZmluZSBGVF9WQUxJREFURV9BUFBMRSAgKCBGVF9WQUxJREFURV9HWF9TVEFSVCA8PCAxICkKKworI2RlZmluZSBGVF9WQUxJREFURV9DS0VSTiAgKCBGVF9WQUxJREFURV9NUyB8IEZUX1ZBTElEQVRFX0FQUExFICkKKworCisgIC8qICovCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgIEZUX0NsYXNzaWNLZXJuX1ZhbGlkYXRlCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgVmFsaWRhdGUgY2xhc3NpYyAoMTYtYml0IGZvcm1hdCkga2VybiB0YWJsZSB0byBhc3N1cmUgdGhhdCB0aGUgb2Zmc2V0cworICAqICAgIGFuZCBpbmRpY2VzIGFyZSB2YWxpZC4gIFRoZSBpZGVhIGlzIHRoYXQgYSBoaWdoZXItbGV2ZWwgbGlicmFyeSB3aGljaAorICAqICAgIGFjdHVhbGx5IGRvZXMgdGhlIHRleHQgbGF5b3V0IGNhbiBhY2Nlc3MgdGhvc2UgdGFibGVzIHdpdGhvdXQgZXJyb3IKKyAgKiAgICBjaGVja2luZyAod2hpY2ggY2FuIGJlIHF1aXRlIHRpbWUgY29uc3VtaW5nKS4KKyAgKgorICAqICAgIFRoZSBga2VybicgdGFibGUgdmFsaWRhdG9yIGluIEBGVF9UcnVlVHlwZUdYX1ZhbGlkYXRlIGRlYWxzIHdpdGggYm90aAorICAqICAgIHRoZSBuZXcgMzItYml0IGZvcm1hdCBhbmQgdGhlIGNsYXNzaWMgMTYtYml0IGZvcm1hdCwgd2hpbGUKKyAgKiAgICBGVF9DbGFzc2ljS2Vybl9WYWxpZGF0ZSBvbmx5IHN1cHBvcnRzIHRoZSBjbGFzc2ljIDE2LWJpdCBmb3JtYXQuCisgICoKKyAgKiBAaW5wdXQ6CisgICogICAgZmFjZSA6OgorICAqICAgICAgIEEgaGFuZGxlIHRvIHRoZSBpbnB1dCBmYWNlLgorICAqCisgICogICAgdmFsaWRhdGlvbl9mbGFncyA6OgorICAqICAgICAgIEEgYml0IGZpZWxkIHdoaWNoIHNwZWNpZmllcyB0aGUgZGlhbGVjdCB0byBiZSB2YWxpZGF0ZWQuICBTZWUKKyAgKiAgICAgICBARlRfVkFMSURBVEVfQ0tFUk5YWFggZm9yIHBvc3NpYmxlIHZhbHVlcy4KKyAgKgorICAqIEBvdXRwdXQ6CisgICogICAgY2tlcm5fdGFibGUgOjoKKyAgKiAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGtlcm4gdGFibGUuCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgKgorICAqIEBub3RlOgorICAqICAgQWZ0ZXIgdXNlLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGRlYWxsb2NhdGUgdGhlIGJ1ZmZlcnMgcG9pbnRlZCB0byBieQorICAqICAgYGNrZXJuX3RhYmxlJywgYnkgY2FsbGluZyBARlRfQ2xhc3NpY0tlcm5fRnJlZS4gIEEgTlVMTCB2YWx1ZQorICAqICAgaW5kaWNhdGVzIHRoYXQgdGhlIHRhYmxlIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGZvbnQuCisgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9DbGFzc2ljS2Vybl9WYWxpZGF0ZSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICB2YWxpZGF0aW9uX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICpja2Vybl90YWJsZSApOworCisKKyAgLyogKi8KKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICAgRlRfQ2xhc3NpY0tlcm5fRnJlZQorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIEZyZWUgdGhlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgY2xhc3NpYyBLZXJuIHZhbGlkYXRvci4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgICBmYWNlIDo6CisgICogICAgICAgQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICoKKyAgKiAgICB0YWJsZSA6OgorICAqICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdGhhdCBpcyBhbGxvY2F0ZWQgYnkKKyAgKiAgICAgICBARlRfQ2xhc3NpY0tlcm5fVmFsaWRhdGUuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIHRvIGZyZWUgdGhlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkKKyAgKiAgIEBGVF9DbGFzc2ljS2Vybl9WYWxpZGF0ZSBvbmx5LgorICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9DbGFzc2ljS2Vybl9GcmVlKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgIHRhYmxlICk7CisKKworIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVEdYVkFMX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGd6aXAuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRnemlwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcxNTVhNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRnemlwLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Z3ppcC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBHemlwLWNvbXByZXNzZWQgc3RyZWFtIHN1cHBvcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMiwgMjAwMywgMjAwNCwgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUR1pJUF9IX18KKyNkZWZpbmUgX19GVEdaSVBfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGd6aXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEdaSVAgU3RyZWFtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzaW5nIGd6aXAtY29tcHJlc3NlZCBmb250IGZpbGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgZGVjbGFyYXRpb24gb2YgR3ppcC1zcGVjaWZpYyBmdW5jdGlvbnMuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBmdW5jdGlvbjoKKyAgKiAgIEZUX1N0cmVhbV9PcGVuR3ppcAorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgT3BlbiBhIG5ldyBzdHJlYW0gdG8gcGFyc2UgZ3ppcC1jb21wcmVzc2VkIGZvbnQgZmlsZXMuICBUaGlzIGlzCisgICogICBtYWlubHkgdXNlZCB0byBzdXBwb3J0IHRoZSBjb21wcmVzc2VkIGAqLnBjZi5neicgZm9udHMgdGhhdCBjb21lCisgICogICB3aXRoIFhGcmVlODYuCisgICoKKyAgKiBAaW5wdXQ6CisgICogICBzdHJlYW0gOjoKKyAgKiAgICAgVGhlIHRhcmdldCBlbWJlZGRpbmcgc3RyZWFtLgorICAqCisgICogICBzb3VyY2UgOjoKKyAgKiAgICAgVGhlIHNvdXJjZSBzdHJlYW0uCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgKgorICAqIEBub3RlOgorICAqICAgVGhlIHNvdXJjZSBzdHJlYW0gbXVzdCBiZSBvcGVuZWQgX2JlZm9yZV8gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICAqCisgICogICBDYWxsaW5nIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBgRlRfU3RyZWFtX0Nsb3NlJyBvbiB0aGUgbmV3IHN0cmVhbSB3aWxsCisgICogICAqbm90KiBjYWxsIGBGVF9TdHJlYW1fQ2xvc2UnIG9uIHRoZSBzb3VyY2Ugc3RyZWFtLiAgTm9uZSBvZiB0aGUgc3RyZWFtCisgICogICBvYmplY3RzIHdpbGwgYmUgcmVsZWFzZWQgdG8gdGhlIGhlYXAuCisgICoKKyAgKiAgIFRoZSBzdHJlYW0gaW1wbGVtZW50YXRpb24gaXMgdmVyeSBiYXNpYyBhbmQgcmVzZXRzIHRoZSBkZWNvbXByZXNzaW9uCisgICogICBwcm9jZXNzIGVhY2ggdGltZSBzZWVraW5nIGJhY2t3YXJkcyBpcyBuZWVkZWQgd2l0aGluIHRoZSBzdHJlYW0uCisgICoKKyAgKiAgIEluIGNlcnRhaW4gYnVpbGRzIG9mIHRoZSBsaWJyYXJ5LCBnemlwIGNvbXByZXNzaW9uIHJlY29nbml0aW9uIGlzCisgICogICBhdXRvbWF0aWNhbGx5IGhhbmRsZWQgd2hlbiBjYWxsaW5nIEBGVF9OZXdfRmFjZSBvciBARlRfT3Blbl9GYWNlLgorICAqICAgVGhpcyBtZWFucyB0aGF0IGlmIG5vIGZvbnQgZHJpdmVyIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlIHJhdworICAqICAgY29tcHJlc3NlZCBmaWxlLCB0aGUgbGlicmFyeSB3aWxsIHRyeSB0byBvcGVuIGEgZ3ppcHBlZCBzdHJlYW0gZnJvbQorICAqICAgaXQgYW5kIHJlLW9wZW4gdGhlIGZhY2Ugd2l0aCBpdC4KKyAgKgorICAqICAgVGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIGBGVF9FcnJfVW5pbXBsZW1lbnRlZF9GZWF0dXJlJyBpZiB5b3VyIGJ1aWxkCisgICogICBvZiBGcmVlVHlwZSB3YXMgbm90IGNvbXBpbGVkIHdpdGggemxpYiBzdXBwb3J0LgorICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX09wZW5HemlwKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHNvdXJjZSApOworCisgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUR1pJUF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRpbWFnZS5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAxY2IzOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRpbWFnZS5oCkBAIC0wLDAgKzEsMTMyMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRpbWFnZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIGdseXBoIGltYWdlIGZvcm1hdHMgYW5kIGRlZmF1bHQgcmFzdGVyIGludGVyZmFjZSAgICAgICAgICAgICovCisvKiAgICAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDEwLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlOiBBIGByYXN0ZXInIGlzIHNpbXBseSBhIHNjYW4tbGluZSBjb252ZXJ0ZXIsIHVzZWQgdG8gcmVuZGVyICAgICAgKi8KKyAgLyogICAgICAgRlRfT3V0bGluZXMgaW50byBGVF9CaXRtYXBzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRJTUFHRV9IX18KKyNkZWZpbmUgX19GVElNQUdFX0hfXworCisKKyAgLyogX1NUQU5EQUxPTkVfIGlzIGZyb20gZnRncmF5cy5jICovCisjaWZuZGVmIF9TVEFOREFMT05FXworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJhc2ljX3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Qb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgdHlwZSBGVF9Qb3MgaXMgdXNlZCB0byBzdG9yZSB2ZWN0b3JpYWwgY29vcmRpbmF0ZXMuICBEZXBlbmRpbmcgKi8KKyAgLyogICAgb24gdGhlIGNvbnRleHQsIHRoZXNlIGNhbiByZXByZXNlbnQgZGlzdGFuY2VzIGluIGludGVnZXIgZm9udCAgICAgICovCisgIC8qICAgIHVuaXRzLCBvciAxNi4xNiwgb3IgMjYuNiBmaXhlZC1wb2ludCBwaXhlbCBjb29yZGluYXRlcy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzaWduZWQgbG9uZyAgRlRfUG9zOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzaW1wbGUgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgYSAyRCB2ZWN0b3I7IGNvb3JkaW5hdGVzIGFyZSBvZiAgICovCisgIC8qICAgIHRoZSBGVF9Qb3MgdHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHggOjogVGhlIGhvcml6b250YWwgY29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5IDo6IFRoZSB2ZXJ0aWNhbCBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9WZWN0b3JfCisgIHsKKyAgICBGVF9Qb3MgIHg7CisgICAgRlRfUG9zICB5OworCisgIH0gRlRfVmVjdG9yOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQkJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBob2xkIGFuIG91dGxpbmUncyBib3VuZGluZyBib3gsIGkuZS4sIHRoZSAgICAgICovCisgIC8qICAgIGNvb3JkaW5hdGVzIG9mIGl0cyBleHRyZW1hIGluIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCAgICAgICAgICAqLworICAvKiAgICBkaXJlY3Rpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4TWluIDo6IFRoZSBob3Jpem9udGFsIG1pbmltdW0gKGxlZnQtbW9zdCkuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlNaW4gOjogVGhlIHZlcnRpY2FsIG1pbmltdW0gKGJvdHRvbS1tb3N0KS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeE1heCA6OiBUaGUgaG9yaXpvbnRhbCBtYXhpbXVtIChyaWdodC1tb3N0KS4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5TWF4IDo6IFRoZSB2ZXJ0aWNhbCBtYXhpbXVtICh0b3AtbW9zdCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgYm91bmRpbmcgYm94IGlzIHNwZWNpZmllZCB3aXRoIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgbG93ZXIgICAgKi8KKyAgLyogICAgbGVmdCBhbmQgdGhlIHVwcGVyIHJpZ2h0IGNvcm5lci4gIEluIFBvc3RTY3JpcHQsIHRob3NlIHZhbHVlcyBhcmUgICovCisgIC8qICAgIG9mdGVuIGNhbGxlZCAobGx4LGxseSkgYW5kICh1cngsdXJ5KSwgcmVzcGVjdGl2ZWx5LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgYHlNaW4nIGlzIG5lZ2F0aXZlLCB0aGlzIHZhbHVlIGdpdmVzIHRoZSBnbHlwaCdzIGRlc2NlbmRlci4gICAgICovCisgIC8qICAgIE90aGVyd2lzZSwgdGhlIGdseXBoIGRvZXNuJ3QgZGVzY2VuZCBiZWxvdyB0aGUgYmFzZWxpbmUuICAgICAgICAgICAqLworICAvKiAgICBTaW1pbGFybHksIGlmIGB5bWF4JyBpcyBwb3NpdGl2ZSwgdGhpcyB2YWx1ZSBnaXZlcyB0aGUgZ2x5cGgncyAgICAgKi8KKyAgLyogICAgYXNjZW5kZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBgeE1pbicgZ2l2ZXMgdGhlIGhvcml6b250YWwgZGlzdGFuY2UgZnJvbSB0aGUgZ2x5cGgncyBvcmlnaW4gdG8gICAgKi8KKyAgLyogICAgdGhlIGxlZnQgZWRnZSBvZiB0aGUgZ2x5cGgncyBib3VuZGluZyBib3guICBJZiBgeE1pbicgaXMgbmVnYXRpdmUsICovCisgIC8qICAgIHRoZSBnbHlwaCBleHRlbmRzIHRvIHRoZSBsZWZ0IG9mIHRoZSBvcmlnaW4uICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0JCb3hfCisgIHsKKyAgICBGVF9Qb3MgIHhNaW4sIHlNaW47CisgICAgRlRfUG9zICB4TWF4LCB5TWF4OworCisgIH0gRlRfQkJveDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BpeGVsX01vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIHR5cGUgdXNlZCB0byBkZXNjcmliZSB0aGUgZm9ybWF0IG9mIHBpeGVscyBpbiBhICAgICAqLworICAvKiAgICBnaXZlbiBiaXRtYXAuICBOb3RlIHRoYXQgYWRkaXRpb25hbCBmb3JtYXRzIG1heSBiZSBhZGRlZCBpbiB0aGUgICAgKi8KKyAgLyogICAgZnV0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUElYRUxfTU9ERV9OT05FIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVmFsdWV+MCBpcyByZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUElYRUxfTU9ERV9NT05PIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSBtb25vY2hyb21lIGJpdG1hcCwgdXNpbmcgMX5iaXQgcGVyIHBpeGVsLiAgTm90ZSB0aGF0IHBpeGVscyAgICAqLworICAvKiAgICAgIGFyZSBzdG9yZWQgaW4gbW9zdC1zaWduaWZpY2FudCBvcmRlciAoTVNCKSwgd2hpY2ggbWVhbnMgdGhhdCAgICAgKi8KKyAgLyogICAgICB0aGUgbGVmdC1tb3N0IHBpeGVsIGluIGEgYnl0ZSBoYXMgdmFsdWUgMTI4LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9QSVhFTF9NT0RFX0dSQVkgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBbiA4LWJpdCBiaXRtYXAsIGdlbmVyYWxseSB1c2VkIHRvIHJlcHJlc2VudCBhbnRpLWFsaWFzZWQgZ2x5cGggICovCisgIC8qICAgICAgaW1hZ2VzLiAgRWFjaCBwaXhlbCBpcyBzdG9yZWQgaW4gb25lIGJ5dGUuICBOb3RlIHRoYXQgdGhlIG51bWJlciAqLworICAvKiAgICAgIG9mIGBncmF5JyBsZXZlbHMgaXMgc3RvcmVkIGluIHRoZSBgbnVtX2dyYXlzJyBmaWVsZCBvZiB0aGUgICAgICAgKi8KKyAgLyogICAgICBARlRfQml0bWFwIHN0cnVjdHVyZSAoaXQgZ2VuZXJhbGx5IGlzIDI1NikuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9QSVhFTF9NT0RFX0dSQVkyIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIDItYml0IHBlciBwaXhlbCBiaXRtYXAsIHVzZWQgdG8gcmVwcmVzZW50IGVtYmVkZGVkICAgICAgICAgICAgICovCisgIC8qICAgICAgYW50aS1hbGlhc2VkIGJpdG1hcHMgaW4gZm9udCBmaWxlcyBhY2NvcmRpbmcgdG8gdGhlIE9wZW5UeXBlICAgICAqLworICAvKiAgICAgIHNwZWNpZmljYXRpb24uICBXZSBoYXZlbid0IGZvdW5kIGEgc2luZ2xlIGZvbnQgdXNpbmcgdGhpcyAgICAgICAgKi8KKyAgLyogICAgICBmb3JtYXQsIGhvd2V2ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9QSVhFTF9NT0RFX0dSQVk0IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIDQtYml0IHBlciBwaXhlbCBiaXRtYXAsIHJlcHJlc2VudGluZyBlbWJlZGRlZCBhbnRpLWFsaWFzZWQgICAgICovCisgIC8qICAgICAgYml0bWFwcyBpbiBmb250IGZpbGVzIGFjY29yZGluZyB0byB0aGUgT3BlblR5cGUgc3BlY2lmaWNhdGlvbi4gICAqLworICAvKiAgICAgIFdlIGhhdmVuJ3QgZm91bmQgYSBzaW5nbGUgZm9udCB1c2luZyB0aGlzIGZvcm1hdCwgaG93ZXZlci4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BJWEVMX01PREVfTENEIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEFuIDgtYml0IGJpdG1hcCwgcmVwcmVzZW50aW5nIFJHQiBvciBCR1IgZGVjaW1hdGVkIGdseXBoIGltYWdlcyAgKi8KKyAgLyogICAgICB1c2VkIGZvciBkaXNwbGF5IG9uIExDRCBkaXNwbGF5czsgdGhlIGJpdG1hcCBpcyB0aHJlZSB0aW1lcyAgICAgICovCisgIC8qICAgICAgd2lkZXIgdGhhbiB0aGUgb3JpZ2luYWwgZ2x5cGggaW1hZ2UuICBTZWUgYWxzbyAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEBGVF9SRU5ERVJfTU9ERV9MQ0QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BJWEVMX01PREVfTENEX1YgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEFuIDgtYml0IGJpdG1hcCwgcmVwcmVzZW50aW5nIFJHQiBvciBCR1IgZGVjaW1hdGVkIGdseXBoIGltYWdlcyAgKi8KKyAgLyogICAgICB1c2VkIGZvciBkaXNwbGF5IG9uIHJvdGF0ZWQgTENEIGRpc3BsYXlzOyB0aGUgYml0bWFwIGlzIHRocmVlICAgICovCisgIC8qICAgICAgdGltZXMgdGFsbGVyIHRoYW4gdGhlIG9yaWdpbmFsIGdseXBoIGltYWdlLiAgU2VlIGFsc28gICAgICAgICAgICAqLworICAvKiAgICAgIEBGVF9SRU5ERVJfTU9ERV9MQ0RfVi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BJWEVMX01PREVfQkdSQSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEFuIGltYWdlIHdpdGggZm91ciA4LWJpdCBjaGFubmVscyBwZXIgcGl4ZWwsIHJlcHJlc2VudGluZyBhICAgICAgKi8KKyAgLyogICAgICBjb2xvciBpbWFnZSAoc3VjaCBhcyBlbW90aWNvbnMpIHdpdGggYWxwaGEgY2hhbm5lbC4gIEZvciBlYWNoICAgICovCisgIC8qICAgICAgcGl4ZWwsIHRoZSBmb3JtYXQgaXMgQkdSQSwgd2hpY2ggbWVhbnMsIHRoZSBibHVlIGNoYW5uZWwgY29tZXMgICAqLworICAvKiAgICAgIGZpcnN0IGluIG1lbW9yeS4gIFRoZSBjb2xvciBjaGFubmVscyBhcmUgcHJlLW11bHRpcGxpZWQgYW5kIGluICAgKi8KKyAgLyogICAgICB0aGUgc1JHQiBjb2xvcnNwYWNlLiAgRm9yIGV4YW1wbGUsIGZ1bGwgcmVkIGF0IGhhbGYtdHJhbnNsdWNlbnQgICovCisgIC8qICAgICAgb3BhY2l0eSB3aWxsIGJlIHJlcHJlc2VudGVkIGFzIGAwMCwwMCw4MCw4MCcsIG5vdCBgMDAsMDAsRkYsODAnLiAqLworICAvKiAgICAgIFNlZSBhbHNvIEBGVF9MT0FEX0NPTE9SLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgZW51bSAgRlRfUGl4ZWxfTW9kZV8KKyAgeworICAgIEZUX1BJWEVMX01PREVfTk9ORSA9IDAsCisgICAgRlRfUElYRUxfTU9ERV9NT05PLAorICAgIEZUX1BJWEVMX01PREVfR1JBWSwKKyAgICBGVF9QSVhFTF9NT0RFX0dSQVkyLAorICAgIEZUX1BJWEVMX01PREVfR1JBWTQsCisgICAgRlRfUElYRUxfTU9ERV9MQ0QsCisgICAgRlRfUElYRUxfTU9ERV9MQ0RfViwKKyAgICBGVF9QSVhFTF9NT0RFX0JHUkEsCisKKyAgICBGVF9QSVhFTF9NT0RFX01BWCAgICAgIC8qIGRvIG5vdCByZW1vdmUgKi8KKworICB9IEZUX1BpeGVsX01vZGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9waXhlbF9tb2RlX3h4eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGxpc3Qgb2YgZGVwcmVjYXRlZCBjb25zdGFudHMuICBVc2UgdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX1BpeGVsX01vZGUgdmFsdWVzIGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfcGl4ZWxfbW9kZV9ub25lICA6OiBTZWUgQEZUX1BJWEVMX01PREVfTk9ORS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X3BpeGVsX21vZGVfbW9ubyAgOjogU2VlIEBGVF9QSVhFTF9NT0RFX01PTk8uICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9waXhlbF9tb2RlX2dyYXlzIDo6IFNlZSBARlRfUElYRUxfTU9ERV9HUkFZLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfcGl4ZWxfbW9kZV9wYWwyICA6OiBTZWUgQEZUX1BJWEVMX01PREVfR1JBWTIuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X3BpeGVsX21vZGVfcGFsNCAgOjogU2VlIEBGVF9QSVhFTF9NT0RFX0dSQVk0LiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgZnRfcGl4ZWxfbW9kZV9ub25lICAgRlRfUElYRUxfTU9ERV9OT05FCisjZGVmaW5lIGZ0X3BpeGVsX21vZGVfbW9ubyAgIEZUX1BJWEVMX01PREVfTU9OTworI2RlZmluZSBmdF9waXhlbF9tb2RlX2dyYXlzICBGVF9QSVhFTF9NT0RFX0dSQVkKKyNkZWZpbmUgZnRfcGl4ZWxfbW9kZV9wYWwyICAgRlRfUElYRUxfTU9ERV9HUkFZMgorI2RlZmluZSBmdF9waXhlbF9tb2RlX3BhbDQgICBGVF9QSVhFTF9NT0RFX0dSQVk0CisKKyAvKiAqLworCisjaWYgMAorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BhbGV0dGVfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRISVMgVFlQRSBJUyBERVBSRUNBVEVELiAgRE8gTk9UIFVTRSBJVCEgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gZW51bWVyYXRpb24gdHlwZSB0byBkZXNjcmliZSB0aGUgZm9ybWF0IG9mIGEgYml0bWFwIHBhbGV0dGUsICAgICovCisgIC8qICAgIHVzZWQgd2l0aCBmdF9waXhlbF9tb2RlX3BhbDQgYW5kIGZ0X3BpeGVsX21vZGVfcGFsOC4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X3BhbGV0dGVfbW9kZV9yZ2IgIDo6IFRoZSBwYWxldHRlIGlzIGFuIGFycmF5IG9mIDMtYnl0ZSBSR0IgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X3BhbGV0dGVfbW9kZV9yZ2JhIDo6IFRoZSBwYWxldHRlIGlzIGFuIGFycmF5IG9mIDQtYnl0ZSBSR0JBICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBcyBmdF9waXhlbF9tb2RlX3BhbDIsIHBhbDQgYW5kIHBhbDggYXJlIGN1cnJlbnRseSB1bnVzZWQgYnkgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUsIHRoZXNlIHR5cGVzIGFyZSBub3QgaGFuZGxlZCBieSB0aGUgbGlicmFyeSBpdHNlbGYuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIEZUX1BhbGV0dGVfTW9kZV8KKyAgeworICAgIGZ0X3BhbGV0dGVfbW9kZV9yZ2IgPSAwLAorICAgIGZ0X3BhbGV0dGVfbW9kZV9yZ2JhLAorCisgICAgZnRfcGFsZXR0ZV9tb2RlX21heCAgIC8qIGRvIG5vdCByZW1vdmUgKi8KKworICB9IEZUX1BhbGV0dGVfTW9kZTsKKworICAvKiAqLworCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0JpdG1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgYSBiaXRtYXAgb3IgcGl4bWFwIHRvIHRoZSByYXN0ZXIuICAgICAqLworICAvKiAgICBOb3RlIHRoYXQgd2Ugbm93IG1hbmFnZSBwaXhtYXBzIG9mIHZhcmlvdXMgZGVwdGhzIHRocm91Z2ggdGhlICAgICAgKi8KKyAgLyogICAgYHBpeGVsX21vZGUnIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcm93cyAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgYml0bWFwIHJvd3MuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB3aWR0aCAgICAgICAgOjogVGhlIG51bWJlciBvZiBwaXhlbHMgaW4gYml0bWFwIHJvdy4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBpdGNoICAgICAgICA6OiBUaGUgcGl0Y2gncyBhYnNvbHV0ZSB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgdGFrZW4gYnkgb25lIGJpdG1hcCByb3csIGluY2x1ZGluZyBwYWRkaW5nLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBwaXRjaCBpcyBwb3NpdGl2ZSB3aGVuIHRoZSBiaXRtYXAgaGFzICovCisgIC8qICAgICAgICAgICAgICAgICAgICBhIGBkb3duJyBmbG93LCBhbmQgbmVnYXRpdmUgd2hlbiBpdCBoYXMgYW4gYHVwJyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgZmxvdy4gIEluIGFsbCBjYXNlcywgdGhlIHBpdGNoIGlzIGFuIG9mZnNldCB0byBhZGQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHRvIGEgYml0bWFwIHBvaW50ZXIgaW4gb3JkZXIgdG8gZ28gZG93biBvbmUgcm93LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IGBwYWRkaW5nJyBtZWFucyB0aGUgYWxpZ25tZW50IG9mIGEgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGJpdG1hcCB0byBhIGJ5dGUgYm9yZGVyLCBhbmQgRnJlZVR5cGUgZnVuY3Rpb25zICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBub3JtYWxseSBhbGlnbiB0byB0aGUgc21hbGxlc3QgcG9zc2libGUgaW50ZWdlciAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgdmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIEIvVyByYXN0ZXJpemVyLCBgcGl0Y2gnIGlzIGFsd2F5cyBhbiBldmVuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBUbyBjaGFuZ2UgdGhlIHBpdGNoIG9mIGEgYml0bWFwIChzYXksIHRvIG1ha2UgaXQgYSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgb2YgNCksIHVzZSBARlRfQml0bWFwX0NvbnZlcnQuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBtaWdodCB1c2UgY2FsbGJhY2sgZnVuY3Rpb25zIHRvICovCisgIC8qICAgICAgICAgICAgICAgICAgICBkaXJlY3RseSByZW5kZXIgdG8gdGhlIGFwcGxpY2F0aW9uJ3Mgc3VyZmFjZTsgc2VlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUgYGV4YW1wbGUyLmNwcCcgaW4gdGhlIHR1dG9yaWFsIGZvciBhICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGRlbW9uc3RyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBidWZmZXIgICAgICAgOjogQSB0eXBlbGVzcyBwb2ludGVyIHRvIHRoZSBiaXRtYXAgYnVmZmVyLiAgVGhpcyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHZhbHVlIHNob3VsZCBiZSBhbGlnbmVkIG9uIDMyLWJpdCBib3VuZGFyaWVzIGluICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBtb3N0IGNhc2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2dyYXlzICAgIDo6IFRoaXMgZmllbGQgaXMgb25seSB1c2VkIHdpdGggICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBARlRfUElYRUxfTU9ERV9HUkFZOyBpdCBnaXZlcyB0aGUgbnVtYmVyIG9mIGdyYXkgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgbGV2ZWxzIHVzZWQgaW4gdGhlIGJpdG1hcC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBpeGVsX21vZGUgICA6OiBUaGUgcGl4ZWwgbW9kZSwgaS5lLiwgaG93IHBpeGVsIGJpdHMgYXJlIHN0b3JlZC4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgU2VlIEBGVF9QaXhlbF9Nb2RlIGZvciBwb3NzaWJsZSB2YWx1ZXMuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhbGV0dGVfbW9kZSA6OiBUaGlzIGZpZWxkIGlzIGludGVuZGVkIGZvciBwYWxldHRlZCBwaXhlbCBtb2RlczsgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgaXQgaW5kaWNhdGVzIGhvdyB0aGUgcGFsZXR0ZSBpcyBzdG9yZWQuICBOb3QgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHVzZWQgY3VycmVudGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYWxldHRlICAgICAgOjogQSB0eXBlbGVzcyBwb2ludGVyIHRvIHRoZSBiaXRtYXAgcGFsZXR0ZTsgdGhpcyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGZpZWxkIGlzIGludGVuZGVkIGZvciBwYWxldHRlZCBwaXhlbCBtb2Rlcy4gIE5vdCAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICB1c2VkIGN1cnJlbnRseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRm9yIG5vdywgdGhlIG9ubHkgcGl4ZWwgbW9kZXMgc3VwcG9ydGVkIGJ5IEZyZWVUeXBlIGFyZSBtb25vIGFuZCAgICAqLworICAvKiAgIGdyYXlzLiAgSG93ZXZlciwgZHJpdmVycyBtaWdodCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlIHRvIHN1cHBvcnQgICAgKi8KKyAgLyogICBtb3JlIGBjb2xvcmZ1bCcgb3B0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfQml0bWFwXworICB7CisgICAgaW50ICAgICAgICAgICAgIHJvd3M7CisgICAgaW50ICAgICAgICAgICAgIHdpZHRoOworICAgIGludCAgICAgICAgICAgICBwaXRjaDsKKyAgICB1bnNpZ25lZCBjaGFyKiAgYnVmZmVyOworICAgIHNob3J0ICAgICAgICAgICBudW1fZ3JheXM7CisgICAgY2hhciAgICAgICAgICAgIHBpeGVsX21vZGU7CisgICAgY2hhciAgICAgICAgICAgIHBhbGV0dGVfbW9kZTsKKyAgICB2b2lkKiAgICAgICAgICAgcGFsZXR0ZTsKKworICB9IEZUX0JpdG1hcDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmVfcHJvY2Vzc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGRlc2NyaWJlIGFuIG91dGxpbmUgdG8gdGhlIHNjYW4tbGluZSAgICAgKi8KKyAgLyogICAgY29udmVydGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbl9jb250b3VycyA6OiBUaGUgbnVtYmVyIG9mIGNvbnRvdXJzIGluIHRoZSBvdXRsaW5lLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuX3BvaW50cyAgIDo6IFRoZSBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBvdXRsaW5lLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBvaW50cyAgICAgOjogQSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIGBuX3BvaW50cycgQEZUX1ZlY3RvciAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLCBnaXZpbmcgdGhlIG91dGxpbmUncyBwb2ludCBjb29yZGluYXRlcy4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhZ3MgICAgICAgOjogQSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIGBuX3BvaW50cycgY2hhcnMsIGdpdmluZyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGVhY2ggb3V0bGluZSBwb2ludCdzIHR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgSWYgYml0fjAgaXMgdW5zZXQsIHRoZSBwb2ludCBpcyBgb2ZmJyB0aGUgY3VydmUsICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGkuZS4sIGEgQsOpemllciBjb250cm9sIHBvaW50LCB3aGlsZSBpdCBpcyBgb24nIGlmICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgc2V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBCaXR+MSBpcyBtZWFuaW5nZnVsIGZvciBgb2ZmJyBwb2ludHMgb25seS4gIElmIHNldCwgICovCisgIC8qICAgICAgICAgICAgICAgICAgaXQgaW5kaWNhdGVzIGEgdGhpcmQtb3JkZXIgQsOpemllciBhcmMgY29udHJvbCBwb2ludDsgKi8KKyAgLyogICAgICAgICAgICAgICAgICBhbmQgYSBzZWNvbmQtb3JkZXIgY29udHJvbCBwb2ludCBpZiB1bnNldC4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIElmIGJpdH4yIGlzIHNldCwgYml0cyA1LTcgY29udGFpbiB0aGUgZHJvcC1vdXQgbW9kZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAoYXMgZGVmaW5lZCBpbiB0aGUgT3BlblR5cGUgc3BlY2lmaWNhdGlvbjsgdGhlIHZhbHVlICovCisgIC8qICAgICAgICAgICAgICAgICAgaXMgdGhlIHNhbWUgYXMgdGhlIGFyZ3VtZW50IHRvIHRoZSBTQ0FOTU9ERSAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgQml0cyAzIGFuZH40IGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgcHVycG9zZXMuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29udG91cnMgICA6OiBBbiBhcnJheSBvZiBgbl9jb250b3Vycycgc2hvcnRzLCBnaXZpbmcgdGhlIGVuZCAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgcG9pbnQgb2YgZWFjaCBjb250b3VyIHdpdGhpbiB0aGUgb3V0bGluZS4gIEZvciAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGV4YW1wbGUsIHRoZSBmaXJzdCBjb250b3VyIGlzIGRlZmluZWQgYnkgdGhlIHBvaW50cyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBgMCcgdG8gYGNvbnRvdXJzWzBdJywgdGhlIHNlY29uZCBvbmUgaXMgZGVmaW5lZCBieSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgdGhlIHBvaW50cyBgY29udG91cnNbMF0rMScgdG8gYGNvbnRvdXJzWzFdJywgZXRjLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmxhZ3MgICAgICA6OiBBIHNldCBvZiBiaXQgZmxhZ3MgdXNlZCB0byBjaGFyYWN0ZXJpemUgdGhlIG91dGxpbmUgICovCisgIC8qICAgICAgICAgICAgICAgICAgYW5kIGdpdmUgaGludHMgdG8gdGhlIHNjYW4tY29udmVydGVyIGFuZCBoaW50ZXIgb24gICAqLworICAvKiAgICAgICAgICAgICAgICAgIGhvdyB0byBjb252ZXJ0L2dyaWQtZml0IGl0LiAgU2VlIEBGVF9PVVRMSU5FX0ZMQUdTLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgQi9XIHJhc3Rlcml6ZXIgb25seSBjaGVja3MgYml0fjIgaW4gdGhlIGB0YWdzJyBhcnJheSBmb3IgdGhlICAgKi8KKyAgLyogICAgZmlyc3QgcG9pbnQgb2YgZWFjaCBjb250b3VyLiAgVGhlIGRyb3Atb3V0IG1vZGUgYXMgZ2l2ZW4gd2l0aCAgICAgICovCisgIC8qICAgIEBGVF9PVVRMSU5FX0lHTk9SRV9EUk9QT1VUUywgQEZUX09VVExJTkVfU01BUlRfRFJPUE9VVFMsIGFuZCAgICAgICAqLworICAvKiAgICBARlRfT1VUTElORV9JTkNMVURFX1NUVUJTIGluIGBmbGFncycgaXMgdGhlbiBvdmVycmlkZGVuLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9PdXRsaW5lXworICB7CisgICAgc2hvcnQgICAgICAgbl9jb250b3VyczsgICAgICAvKiBudW1iZXIgb2YgY29udG91cnMgaW4gZ2x5cGggICAgICAgICovCisgICAgc2hvcnQgICAgICAgbl9wb2ludHM7ICAgICAgICAvKiBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBnbHlwaCAgICAgICovCisKKyAgICBGVF9WZWN0b3IqICBwb2ludHM7ICAgICAgICAgIC8qIHRoZSBvdXRsaW5lJ3MgcG9pbnRzICAgICAgICAgICAgICAgKi8KKyAgICBjaGFyKiAgICAgICB0YWdzOyAgICAgICAgICAgIC8qIHRoZSBwb2ludHMgZmxhZ3MgICAgICAgICAgICAgICAgICAgKi8KKyAgICBzaG9ydCogICAgICBjb250b3VyczsgICAgICAgIC8qIHRoZSBjb250b3VyIGVuZCBwb2ludHMgICAgICAgICAgICAgKi8KKworICAgIGludCAgICAgICAgIGZsYWdzOyAgICAgICAgICAgLyogb3V0bGluZSBtYXNrcyAgICAgICAgICAgICAgICAgICAgICAqLworCisgIH0gRlRfT3V0bGluZTsKKworICAvKiBGb2xsb3dpbmcgbGltaXRzIG11c3QgYmUgY29uc2lzdGVudCB3aXRoICovCisgIC8qIEZUX091dGxpbmUue25fY29udG91cnMsbl9wb2ludHN9ICAgICAgICAgKi8KKyNkZWZpbmUgRlRfT1VUTElORV9DT05UT1VSU19NQVggIFNIUlRfTUFYCisjZGVmaW5lIEZUX09VVExJTkVfUE9JTlRTX01BWCAgICBTSFJUX01BWAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1VUTElORV9GTEFHUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBsaXN0IG9mIGJpdC1maWVsZCBjb25zdGFudHMgdXNlIGZvciB0aGUgZmxhZ3MgaW4gYW4gb3V0bGluZSdzICAgICovCisgIC8qICAgIGBmbGFncycgZmllbGQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09VVExJTkVfTk9ORSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFZhbHVlfjAgaXMgcmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09VVExJTkVfT1dORVIgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIElmIHNldCwgdGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IHRoZSBvdXRsaW5lJ3MgZmllbGQgYXJyYXlzICAgICAgKi8KKyAgLyogICAgICAoaS5lLiwgYHBvaW50cycsIGBmbGFncycsIGFuZCBgY29udG91cnMnKSBhcmUgYG93bmVkJyBieSB0aGUgICAgICovCisgIC8qICAgICAgb3V0bGluZSBvYmplY3QsIGFuZCBzaG91bGQgdGh1cyBiZSBmcmVlZCB3aGVuIGl0IGlzIGRlc3Ryb3llZC4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1VUTElORV9FVkVOX09ERF9GSUxMIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQnkgZGVmYXVsdCwgb3V0bGluZXMgYXJlIGZpbGxlZCB1c2luZyB0aGUgbm9uLXplcm8gd2luZGluZyBydWxlLiAqLworICAvKiAgICAgIElmIHNldCB0byAxLCB0aGUgb3V0bGluZSB3aWxsIGJlIGZpbGxlZCB1c2luZyB0aGUgZXZlbi1vZGQgZmlsbCAgKi8KKyAgLyogICAgICBydWxlIChvbmx5IHdvcmtzIHdpdGggdGhlIHNtb290aCByYXN0ZXJpemVyKS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PVVRMSU5FX1JFVkVSU0VfRklMTCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBCeSBkZWZhdWx0LCBvdXRzaWRlIGNvbnRvdXJzIG9mIGFuIG91dGxpbmUgYXJlIG9yaWVudGVkIGluICAgICAgICovCisgIC8qICAgICAgY2xvY2std2lzZSBkaXJlY3Rpb24sIGFzIGRlZmluZWQgaW4gdGhlIFRydWVUeXBlIHNwZWNpZmljYXRpb24uICAqLworICAvKiAgICAgIFRoaXMgZmxhZyBpcyBzZXQgaWYgdGhlIG91dGxpbmUgdXNlcyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uICAgICAgKi8KKyAgLyogICAgICAodHlwaWNhbGx5IGZvciBUeXBlfjEgZm9udHMpLiAgVGhpcyBmbGFnIGlzIGlnbm9yZWQgYnkgdGhlIHNjYW4gICovCisgIC8qICAgICAgY29udmVydGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1VUTElORV9JR05PUkVfRFJPUE9VVFMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQnkgZGVmYXVsdCwgdGhlIHNjYW4gY29udmVydGVyIHdpbGwgdHJ5IHRvIGRldGVjdCBkcm9wLW91dHMgaW4gICAqLworICAvKiAgICAgIGFuIG91dGxpbmUgYW5kIGNvcnJlY3QgdGhlIGdseXBoIGJpdG1hcCB0byBlbnN1cmUgY29uc2lzdGVudCAgICAgKi8KKyAgLyogICAgICBzaGFwZSBjb250aW51aXR5LiAgSWYgc2V0LCB0aGlzIGZsYWcgaGludHMgdGhlIHNjYW4tbGluZSAgICAgICAgICovCisgIC8qICAgICAgY29udmVydGVyIHRvIGlnbm9yZSBzdWNoIGNhc2VzLiAgU2VlIGJlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1VUTElORV9TTUFSVF9EUk9QT1VUUyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgU2VsZWN0IHNtYXJ0IGRyb3BvdXQgY29udHJvbC4gIElmIHVuc2V0LCB1c2Ugc2ltcGxlIGRyb3BvdXQgICAgICAqLworICAvKiAgICAgIGNvbnRyb2wuICBJZ25vcmVkIGlmIEBGVF9PVVRMSU5FX0lHTk9SRV9EUk9QT1VUUyBpcyBzZXQuICBTZWUgICAgKi8KKyAgLyogICAgICBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PVVRMSU5FX0lOQ0xVREVfU1RVQlMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJZiBzZXQsIHR1cm4gcGl4ZWxzIG9uIGZvciBgc3R1YnMnLCBvdGhlcndpc2UgZXhjbHVkZSB0aGVtLiAgICAgICovCisgIC8qICAgICAgSWdub3JlZCBpZiBARlRfT1VUTElORV9JR05PUkVfRFJPUE9VVFMgaXMgc2V0LiAgU2VlIGJlbG93IGZvciAgICAqLworICAvKiAgICAgIG1vcmUgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09VVExJTkVfSElHSF9QUkVDSVNJT04gOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoaXMgZmxhZyBpbmRpY2F0ZXMgdGhhdCB0aGUgc2Nhbi1saW5lIGNvbnZlcnRlciBzaG91bGQgdHJ5IHRvICAgKi8KKyAgLyogICAgICBjb252ZXJ0IHRoaXMgb3V0bGluZSB0byBiaXRtYXBzIHdpdGggdGhlIGhpZ2hlc3QgcG9zc2libGUgICAgICAgICovCisgIC8qICAgICAgcXVhbGl0eS4gIEl0IGlzIHR5cGljYWxseSBzZXQgZm9yIHNtYWxsIGNoYXJhY3RlciBzaXplcy4gIE5vdGUgICAqLworICAvKiAgICAgIHRoYXQgdGhpcyBpcyBvbmx5IGEgaGludCB0aGF0IG1pZ2h0IGJlIGNvbXBsZXRlbHkgaWdub3JlZCBieSBhICAgKi8KKyAgLyogICAgICBnaXZlbiBzY2FuLWNvbnZlcnRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PVVRMSU5FX1NJTkdMRV9QQVNTIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGlzIGZsYWcgaXMgc2V0IHRvIGZvcmNlIGEgZ2l2ZW4gc2Nhbi1jb252ZXJ0ZXIgdG8gb25seSB1c2UgYSAgICovCisgIC8qICAgICAgc2luZ2xlIHBhc3Mgb3ZlciB0aGUgb3V0bGluZSB0byByZW5kZXIgYSBiaXRtYXAgZ2x5cGggaW1hZ2UuICAgICAqLworICAvKiAgICAgIE5vcm1hbGx5LCBpdCBpcyBzZXQgZm9yIHZlcnkgbGFyZ2UgY2hhcmFjdGVyIHNpemVzLiAgSXQgaXMgb25seSAgKi8KKyAgLyogICAgICBhIGhpbnQgdGhhdCBtaWdodCBiZSBjb21wbGV0ZWx5IGlnbm9yZWQgYnkgYSBnaXZlbiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgc2Nhbi1jb252ZXJ0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBmbGFncyBARlRfT1VUTElORV9JR05PUkVfRFJPUE9VVFMsIEBGVF9PVVRMSU5FX1NNQVJUX0RST1BPVVRTLCAqLworICAvKiAgICBhbmQgQEZUX09VVExJTkVfSU5DTFVERV9TVFVCUyBhcmUgaWdub3JlZCBieSB0aGUgc21vb3RoICAgICAgICAgICAgKi8KKyAgLyogICAgcmFzdGVyaXplci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGVyZSBleGlzdHMgYSBzZWNvbmQgbWVjaGFuaXNtIHRvIHBhc3MgdGhlIGRyb3Atb3V0IG1vZGUgdG8gdGhlICAgKi8KKyAgLyogICAgQi9XIHJhc3Rlcml6ZXI7IHNlZSB0aGUgYHRhZ3MnIGZpZWxkIGluIEBGVF9PdXRsaW5lLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQbGVhc2UgcmVmZXIgdG8gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBgU0NBTlRZUEUnIGluc3RydWN0aW9uIGluICAgKi8KKyAgLyogICAgdGhlIE9wZW5UeXBlIHNwZWNpZmljYXRpb24gKGluIGZpbGUgYHR0aW5zdDEuZG9jJykgaG93IHNpbXBsZSAgICAgICovCisgIC8qICAgIGRyb3Atb3V0cywgc21hcnQgZHJvcC1vdXRzLCBhbmQgc3R1YnMgYXJlIGRlZmluZWQuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfT1VUTElORV9OT05FICAgICAgICAgICAgIDB4MAorI2RlZmluZSBGVF9PVVRMSU5FX09XTkVSICAgICAgICAgICAgMHgxCisjZGVmaW5lIEZUX09VVExJTkVfRVZFTl9PRERfRklMTCAgICAweDIKKyNkZWZpbmUgRlRfT1VUTElORV9SRVZFUlNFX0ZJTEwgICAgIDB4NAorI2RlZmluZSBGVF9PVVRMSU5FX0lHTk9SRV9EUk9QT1VUUyAgMHg4CisjZGVmaW5lIEZUX09VVExJTkVfU01BUlRfRFJPUE9VVFMgICAweDEwCisjZGVmaW5lIEZUX09VVExJTkVfSU5DTFVERV9TVFVCUyAgICAweDIwCisKKyNkZWZpbmUgRlRfT1VUTElORV9ISUdIX1BSRUNJU0lPTiAgIDB4MTAwCisjZGVmaW5lIEZUX09VVExJTkVfU0lOR0xFX1BBU1MgICAgICAweDIwMAorCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGVudW06CisgICogICBmdF9vdXRsaW5lX2ZsYWdzCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICBUaGVzZSBjb25zdGFudHMgYXJlIGRlcHJlY2F0ZWQuICBQbGVhc2UgdXNlIHRoZSBjb3JyZXNwb25kaW5nCisgICogICBARlRfT1VUTElORV9GTEFHUyB2YWx1ZXMuCisgICoKKyAgKiBAdmFsdWVzOgorICAqICAgZnRfb3V0bGluZV9ub25lICAgICAgICAgICAgOjogU2VlIEBGVF9PVVRMSU5FX05PTkUuCisgICogICBmdF9vdXRsaW5lX293bmVyICAgICAgICAgICA6OiBTZWUgQEZUX09VVExJTkVfT1dORVIuCisgICogICBmdF9vdXRsaW5lX2V2ZW5fb2RkX2ZpbGwgICA6OiBTZWUgQEZUX09VVExJTkVfRVZFTl9PRERfRklMTC4KKyAgKiAgIGZ0X291dGxpbmVfcmV2ZXJzZV9maWxsICAgIDo6IFNlZSBARlRfT1VUTElORV9SRVZFUlNFX0ZJTEwuCisgICogICBmdF9vdXRsaW5lX2lnbm9yZV9kcm9wb3V0cyA6OiBTZWUgQEZUX09VVExJTkVfSUdOT1JFX0RST1BPVVRTLgorICAqICAgZnRfb3V0bGluZV9oaWdoX3ByZWNpc2lvbiAgOjogU2VlIEBGVF9PVVRMSU5FX0hJR0hfUFJFQ0lTSU9OLgorICAqICAgZnRfb3V0bGluZV9zaW5nbGVfcGFzcyAgICAgOjogU2VlIEBGVF9PVVRMSU5FX1NJTkdMRV9QQVNTLgorICAqLworI2RlZmluZSBmdF9vdXRsaW5lX25vbmUgICAgICAgICAgICAgRlRfT1VUTElORV9OT05FCisjZGVmaW5lIGZ0X291dGxpbmVfb3duZXIgICAgICAgICAgICBGVF9PVVRMSU5FX09XTkVSCisjZGVmaW5lIGZ0X291dGxpbmVfZXZlbl9vZGRfZmlsbCAgICBGVF9PVVRMSU5FX0VWRU5fT0REX0ZJTEwKKyNkZWZpbmUgZnRfb3V0bGluZV9yZXZlcnNlX2ZpbGwgICAgIEZUX09VVExJTkVfUkVWRVJTRV9GSUxMCisjZGVmaW5lIGZ0X291dGxpbmVfaWdub3JlX2Ryb3BvdXRzICBGVF9PVVRMSU5FX0lHTk9SRV9EUk9QT1VUUworI2RlZmluZSBmdF9vdXRsaW5lX2hpZ2hfcHJlY2lzaW9uICAgRlRfT1VUTElORV9ISUdIX1BSRUNJU0lPTgorI2RlZmluZSBmdF9vdXRsaW5lX3NpbmdsZV9wYXNzICAgICAgRlRfT1VUTElORV9TSU5HTEVfUEFTUworCisgIC8qICovCisKKyNkZWZpbmUgRlRfQ1VSVkVfVEFHKCBmbGFnICkgICggZmxhZyAmIDMgKQorCisjZGVmaW5lIEZUX0NVUlZFX1RBR19PTiAgICAgICAgICAgIDEKKyNkZWZpbmUgRlRfQ1VSVkVfVEFHX0NPTklDICAgICAgICAgMAorI2RlZmluZSBGVF9DVVJWRV9UQUdfQ1VCSUMgICAgICAgICAyCisKKyNkZWZpbmUgRlRfQ1VSVkVfVEFHX0hBU19TQ0FOTU9ERSAgNAorCisjZGVmaW5lIEZUX0NVUlZFX1RBR19UT1VDSF9YICAgICAgIDggIC8qIHJlc2VydmVkIGZvciB0aGUgVHJ1ZVR5cGUgaGludGVyICovCisjZGVmaW5lIEZUX0NVUlZFX1RBR19UT1VDSF9ZICAgICAgMTYgIC8qIHJlc2VydmVkIGZvciB0aGUgVHJ1ZVR5cGUgaGludGVyICovCisKKyNkZWZpbmUgRlRfQ1VSVkVfVEFHX1RPVUNIX0JPVEggICAgKCBGVF9DVVJWRV9UQUdfVE9VQ0hfWCB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9DVVJWRV9UQUdfVE9VQ0hfWSApCisKKyNkZWZpbmUgRlRfQ3VydmVfVGFnX09uICAgICAgIEZUX0NVUlZFX1RBR19PTgorI2RlZmluZSBGVF9DdXJ2ZV9UYWdfQ29uaWMgICAgRlRfQ1VSVkVfVEFHX0NPTklDCisjZGVmaW5lIEZUX0N1cnZlX1RhZ19DdWJpYyAgICBGVF9DVVJWRV9UQUdfQ1VCSUMKKyNkZWZpbmUgRlRfQ3VydmVfVGFnX1RvdWNoX1ggIEZUX0NVUlZFX1RBR19UT1VDSF9YCisjZGVmaW5lIEZUX0N1cnZlX1RhZ19Ub3VjaF9ZICBGVF9DVVJWRV9UQUdfVE9VQ0hfWQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9Nb3ZlVG9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiBwb2ludGVyIHR5cGUgdXNlZCB0byBkZXNjcmliZSB0aGUgc2lnbmF0dXJlIG9mIGEgYG1vdmUgICovCisgIC8qICAgIHRvJyBmdW5jdGlvbiBkdXJpbmcgb3V0bGluZSB3YWxraW5nL2RlY29tcG9zaXRpb24uICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBgbW92ZSB0bycgaXMgZW1pdHRlZCB0byBzdGFydCBhIG5ldyBjb250b3VyIGluIGFuIG91dGxpbmUuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdG8gICA6OiBBIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBwb2ludCBvZiB0aGUgYG1vdmUgdG8nLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1c2VyIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB3aGljaCBpcyBwYXNzZWQgZnJvbSB0aGUgY2FsbGVyIG9mIHRoZSAgKi8KKyAgLyogICAgICAgICAgICBkZWNvbXBvc2l0aW9uIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGludAorICAoKkZUX091dGxpbmVfTW92ZVRvRnVuYykoIGNvbnN0IEZUX1ZlY3RvciogIHRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgIHVzZXIgKTsKKworI2RlZmluZSBGVF9PdXRsaW5lX01vdmVUb19GdW5jICBGVF9PdXRsaW5lX01vdmVUb0Z1bmMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfTGluZVRvRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gcG9pbnRlciB0eXBlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHNpZ25hdHVyZSBvZiBhIGBsaW5lICAqLworICAvKiAgICB0bycgZnVuY3Rpb24gZHVyaW5nIG91dGxpbmUgd2Fsa2luZy9kZWNvbXBvc2l0aW9uLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgYGxpbmUgdG8nIGlzIGVtaXR0ZWQgdG8gaW5kaWNhdGUgYSBzZWdtZW50IGluIHRoZSBvdXRsaW5lLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvICAgOjogQSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgcG9pbnQgb2YgdGhlIGBsaW5lIHRvJy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciA6OiBBIHR5cGVsZXNzIHBvaW50ZXIgd2hpY2ggaXMgcGFzc2VkIGZyb20gdGhlIGNhbGxlciBvZiB0aGUgICovCisgIC8qICAgICAgICAgICAgZGVjb21wb3NpdGlvbiBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBpbnQKKyAgKCpGVF9PdXRsaW5lX0xpbmVUb0Z1bmMpKCBjb25zdCBGVF9WZWN0b3IqICB0bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICB1c2VyICk7CisKKyNkZWZpbmUgRlRfT3V0bGluZV9MaW5lVG9fRnVuYyAgRlRfT3V0bGluZV9MaW5lVG9GdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0NvbmljVG9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBzaWduYXR1cmUgb2YgYSBgY29uaWMgKi8KKyAgLyogICAgdG8nIGZ1bmN0aW9uIGR1cmluZyBvdXRsaW5lIHdhbGtpbmcgb3IgZGVjb21wb3NpdGlvbi4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGBjb25pYyB0bycgaXMgZW1pdHRlZCB0byBpbmRpY2F0ZSBhIHNlY29uZC1vcmRlciBCw6l6aWVyIGFyYyBpbiAgICovCisgIC8qICAgIHRoZSBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbnRyb2wgOjogQW4gaW50ZXJtZWRpYXRlIGNvbnRyb2wgcG9pbnQgYmV0d2VlbiB0aGUgbGFzdCBwb3NpdGlvbiAqLworICAvKiAgICAgICAgICAgICAgIGFuZCB0aGUgbmV3IHRhcmdldCBpbiBgdG8nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvICAgICAgOjogQSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgZW5kIHBvaW50IG9mIHRoZSBjb25pYyBhcmMuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciAgICA6OiBBIHR5cGVsZXNzIHBvaW50ZXIgd2hpY2ggaXMgcGFzc2VkIGZyb20gdGhlIGNhbGxlciBvZiAgICovCisgIC8qICAgICAgICAgICAgICAgdGhlIGRlY29tcG9zaXRpb24gZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBpbnQKKyAgKCpGVF9PdXRsaW5lX0NvbmljVG9GdW5jKSggY29uc3QgRlRfVmVjdG9yKiAgY29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgIHVzZXIgKTsKKworI2RlZmluZSBGVF9PdXRsaW5lX0NvbmljVG9fRnVuYyAgRlRfT3V0bGluZV9Db25pY1RvRnVuYworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9DdWJpY1RvRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiBwb2ludGVyIHR5cGUgdXNlZCB0byBkZXNjcmliZSB0aGUgc2lnbmF0dXJlIG9mIGEgYGN1YmljICovCisgIC8qICAgIHRvJyBmdW5jdGlvbiBkdXJpbmcgb3V0bGluZSB3YWxraW5nIG9yIGRlY29tcG9zaXRpb24uICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBgY3ViaWMgdG8nIGlzIGVtaXR0ZWQgdG8gaW5kaWNhdGUgYSB0aGlyZC1vcmRlciBCw6l6aWVyIGFyYy4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbnRyb2wxIDo6IEEgcG9pbnRlciB0byB0aGUgZmlyc3QgQsOpemllciBjb250cm9sIHBvaW50LiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbnRyb2wyIDo6IEEgcG9pbnRlciB0byB0aGUgc2Vjb25kIELDqXppZXIgY29udHJvbCBwb2ludC4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvICAgICAgIDo6IEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IGVuZCBwb2ludC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciAgICAgOjogQSB0eXBlbGVzcyBwb2ludGVyIHdoaWNoIGlzIHBhc3NlZCBmcm9tIHRoZSBjYWxsZXIgb2YgICovCisgIC8qICAgICAgICAgICAgICAgIHRoZSBkZWNvbXBvc2l0aW9uIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBpbnQKKyAgKCpGVF9PdXRsaW5lX0N1YmljVG9GdW5jKSggY29uc3QgRlRfVmVjdG9yKiAgY29udHJvbDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogIGNvbnRyb2wyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICB0bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgICAgdXNlciApOworCisjZGVmaW5lIEZUX091dGxpbmVfQ3ViaWNUb19GdW5jICBGVF9PdXRsaW5lX0N1YmljVG9GdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0Z1bmNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB0byBob2xkIHZhcmlvdXMgZnVuY3Rpb24gcG9pbnRlcnMgdXNlZCBkdXJpbmcgb3V0bGluZSAgKi8KKyAgLyogICAgZGVjb21wb3NpdGlvbiBpbiBvcmRlciB0byBlbWl0IHNlZ21lbnRzLCBjb25pYywgYW5kIGN1YmljIELDqXppZXJzLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vdmVfdG8gIDo6IFRoZSBgbW92ZSB0bycgZW1pdHRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGluZV90byAgOjogVGhlIHNlZ21lbnQgZW1pdHRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb25pY190byA6OiBUaGUgc2Vjb25kLW9yZGVyIELDqXppZXIgYXJjIGVtaXR0ZXIuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjdWJpY190byA6OiBUaGUgdGhpcmQtb3JkZXIgQsOpemllciBhcmMgZW1pdHRlci4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaGlmdCAgICA6OiBUaGUgc2hpZnQgdGhhdCBpcyBhcHBsaWVkIHRvIGNvb3JkaW5hdGVzIGJlZm9yZSB0aGV5ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgYXJlIHNlbnQgdG8gdGhlIGVtaXR0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkZWx0YSAgICA6OiBUaGUgZGVsdGEgdGhhdCBpcyBhcHBsaWVkIHRvIGNvb3JkaW5hdGVzIGJlZm9yZSB0aGV5ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgYXJlIHNlbnQgdG8gdGhlIGVtaXR0ZXIsIGJ1dCBhZnRlciB0aGUgc2hpZnQuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHBvaW50IGNvb3JkaW5hdGVzIHNlbnQgdG8gdGhlIGVtaXR0ZXJzIGFyZSB0aGUgdHJhbnNmb3JtZWQgICAgICovCisgIC8qICAgIHZlcnNpb24gb2YgdGhlIG9yaWdpbmFsIGNvb3JkaW5hdGVzICh0aGlzIGlzIGltcG9ydGFudCBmb3IgaGlnaCAgICAqLworICAvKiAgICBhY2N1cmFjeSBkdXJpbmcgc2Nhbi1jb252ZXJzaW9uKS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBzaW1wbGU6ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHgnID0gKHggPDwgc2hpZnQpIC0gZGVsdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB5JyA9ICh4IDw8IHNoaWZ0KSAtIGRlbHRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2V0IHRoZSB2YWx1ZXMgb2YgYHNoaWZ0JyBhbmQgYGRlbHRhJyB0b34wIHRvIGdldCB0aGUgb3JpZ2luYWwgICAgICovCisgIC8qICAgIHBvaW50IGNvb3JkaW5hdGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX091dGxpbmVfRnVuY3NfCisgIHsKKyAgICBGVF9PdXRsaW5lX01vdmVUb0Z1bmMgICBtb3ZlX3RvOworICAgIEZUX091dGxpbmVfTGluZVRvRnVuYyAgIGxpbmVfdG87CisgICAgRlRfT3V0bGluZV9Db25pY1RvRnVuYyAgY29uaWNfdG87CisgICAgRlRfT3V0bGluZV9DdWJpY1RvRnVuYyAgY3ViaWNfdG87CisKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBzaGlmdDsKKyAgICBGVF9Qb3MgICAgICAgICAgICAgICAgICBkZWx0YTsKKworICB9IEZUX091dGxpbmVfRnVuY3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiYXNpY190eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfSU1BR0VfVEFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBtYWNybyBjb252ZXJ0cyBmb3VyLWxldHRlciB0YWdzIHRvIGFuIHVuc2lnbmVkIGxvbmcgdHlwZS4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2luY2UgbWFueSAxNi1iaXQgY29tcGlsZXJzIGRvbid0IGxpa2UgMzItYml0IGVudW1lcmF0aW9ucywgeW91ICAgICovCisgIC8qICAgIHNob3VsZCByZWRlZmluZSB0aGlzIG1hY3JvIGluIGNhc2Ugb2YgcHJvYmxlbXMgdG8gc29tZXRoaW5nIGxpa2UgICAqLworICAvKiAgICB0aGlzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICNkZWZpbmUgRlRfSU1BR0VfVEFHKCB2YWx1ZSwgX3gxLCBfeDIsIF94MywgX3g0ICkgIHZhbHVlICAgICAgICAgKi8KKyAgLyogICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0byBnZXQgYSBzaW1wbGUgZW51bWVyYXRpb24gd2l0aG91dCBhc3NpZ25pbmcgc3BlY2lhbCBudW1iZXJzLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEZUX0lNQUdFX1RBRworI2RlZmluZSBGVF9JTUFHRV9UQUcoIHZhbHVlLCBfeDEsIF94MiwgX3gzLCBfeDQgKSAgXAorICAgICAgICAgIHZhbHVlID0gKCAoICh1bnNpZ25lZCBsb25nKV94MSA8PCAyNCApIHwgXAorICAgICAgICAgICAgICAgICAgICAoICh1bnNpZ25lZCBsb25nKV94MiA8PCAxNiApIHwgXAorICAgICAgICAgICAgICAgICAgICAoICh1bnNpZ25lZCBsb25nKV94MyA8PCA4ICApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKV94NCAgICAgICAgICkKKyNlbmRpZiAvKiBGVF9JTUFHRV9UQUcgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoX0Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIHR5cGUgdXNlZCB0byBkZXNjcmliZSB0aGUgZm9ybWF0IG9mIGEgZ2l2ZW4gZ2x5cGggICAqLworICAvKiAgICBpbWFnZS4gIE5vdGUgdGhhdCB0aGlzIHZlcnNpb24gb2YgRnJlZVR5cGUgb25seSBzdXBwb3J0cyB0d28gaW1hZ2UgKi8KKyAgLyogICAgZm9ybWF0cywgZXZlbiB0aG91Z2ggZnV0dXJlIGZvbnQgZHJpdmVycyB3aWxsIGJlIGFibGUgdG8gcmVnaXN0ZXIgICovCisgIC8qICAgIHRoZWlyIG93biBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dMWVBIX0ZPUk1BVF9OT05FIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSB2YWx1ZX4wIGlzIHJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dMWVBIX0ZPUk1BVF9DT01QT1NJVEUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBnbHlwaCBpbWFnZSBpcyBhIGNvbXBvc2l0ZSBvZiBzZXZlcmFsIG90aGVyIGltYWdlcy4gIFRoaXMgICAgKi8KKyAgLyogICAgICBmb3JtYXQgaXMgX29ubHlfIHVzZWQgd2l0aCBARlRfTE9BRF9OT19SRUNVUlNFLCBhbmQgaXMgdXNlZCB0byAgICovCisgIC8qICAgICAgcmVwb3J0IGNvbXBvdW5kIGdseXBocyAobGlrZSBhY2NlbnRlZCBjaGFyYWN0ZXJzKS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR0xZUEhfRk9STUFUX0JJVE1BUCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGdseXBoIGltYWdlIGlzIGEgYml0bWFwLCBhbmQgY2FuIGJlIGRlc2NyaWJlZCBhcyBhbiAgICAgICAgICAqLworICAvKiAgICAgIEBGVF9CaXRtYXAuICBZb3UgZ2VuZXJhbGx5IG5lZWQgdG8gYWNjZXNzIHRoZSBgYml0bWFwJyBmaWVsZCBvZiAgKi8KKyAgLyogICAgICB0aGUgQEZUX0dseXBoU2xvdFJlYyBzdHJ1Y3R1cmUgdG8gcmVhZCBpdC4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgZ2x5cGggaW1hZ2UgaXMgYSB2ZWN0b3JpYWwgb3V0bGluZSBtYWRlIG9mIGxpbmUgc2VnbWVudHMgICAgICovCisgIC8qICAgICAgYW5kIELDqXppZXIgYXJjczsgaXQgY2FuIGJlIGRlc2NyaWJlZCBhcyBhbiBARlRfT3V0bGluZTsgeW91ICAgICAgKi8KKyAgLyogICAgICBnZW5lcmFsbHkgd2FudCB0byBhY2Nlc3MgdGhlIGBvdXRsaW5lJyBmaWVsZCBvZiB0aGUgICAgICAgICAgICAgICovCisgIC8qICAgICAgQEZUX0dseXBoU2xvdFJlYyBzdHJ1Y3R1cmUgdG8gcmVhZCBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR0xZUEhfRk9STUFUX1BMT1RURVIgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGdseXBoIGltYWdlIGlzIGEgdmVjdG9yaWFsIHBhdGggd2l0aCBubyBpbnNpZGUgYW5kIG91dHNpZGUgICAqLworICAvKiAgICAgIGNvbnRvdXJzLiAgU29tZSBUeXBlfjEgZm9udHMsIGxpa2UgdGhvc2UgaW4gdGhlIEhlcnNoZXkgZmFtaWx5LCAgKi8KKyAgLyogICAgICBjb250YWluIGdseXBocyBpbiB0aGlzIGZvcm1hdC4gIFRoZXNlIGFyZSBkZXNjcmliZWQgYXMgICAgICAgICAgICovCisgIC8qICAgICAgQEZUX091dGxpbmUsIGJ1dCBGcmVlVHlwZSBpc24ndCBjdXJyZW50bHkgY2FwYWJsZSBvZiByZW5kZXJpbmcgICAqLworICAvKiAgICAgIHRoZW0gY29ycmVjdGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgZW51bSAgRlRfR2x5cGhfRm9ybWF0XworICB7CisgICAgRlRfSU1BR0VfVEFHKCBGVF9HTFlQSF9GT1JNQVRfTk9ORSwgMCwgMCwgMCwgMCApLAorCisgICAgRlRfSU1BR0VfVEFHKCBGVF9HTFlQSF9GT1JNQVRfQ09NUE9TSVRFLCAnYycsICdvJywgJ20nLCAncCcgKSwKKyAgICBGVF9JTUFHRV9UQUcoIEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAsICAgICdiJywgJ2knLCAndCcsICdzJyApLAorICAgIEZUX0lNQUdFX1RBRyggRlRfR0xZUEhfRk9STUFUX09VVExJTkUsICAgJ28nLCAndScsICd0JywgJ2wnICksCisgICAgRlRfSU1BR0VfVEFHKCBGVF9HTFlQSF9GT1JNQVRfUExPVFRFUiwgICAncCcsICdsJywgJ28nLCAndCcgKQorCisgIH0gRlRfR2x5cGhfRm9ybWF0OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfZ2x5cGhfZm9ybWF0X3h4eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBsaXN0IG9mIGRlcHJlY2F0ZWQgY29uc3RhbnRzLiAgVXNlIHRoZSBjb3JyZXNwb25kaW5nICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9HbHlwaF9Gb3JtYXQgdmFsdWVzIGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X2dseXBoX2Zvcm1hdF9ub25lICAgICAgOjogU2VlIEBGVF9HTFlQSF9GT1JNQVRfTk9ORS4gICAgICAgICAgICAqLworICAvKiAgICBmdF9nbHlwaF9mb3JtYXRfY29tcG9zaXRlIDo6IFNlZSBARlRfR0xZUEhfRk9STUFUX0NPTVBPU0lURS4gICAgICAgKi8KKyAgLyogICAgZnRfZ2x5cGhfZm9ybWF0X2JpdG1hcCAgICA6OiBTZWUgQEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAuICAgICAgICAgICovCisgIC8qICAgIGZ0X2dseXBoX2Zvcm1hdF9vdXRsaW5lICAgOjogU2VlIEBGVF9HTFlQSF9GT1JNQVRfT1VUTElORS4gICAgICAgICAqLworICAvKiAgICBmdF9nbHlwaF9mb3JtYXRfcGxvdHRlciAgIDo6IFNlZSBARlRfR0xZUEhfRk9STUFUX1BMT1RURVIuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIGZ0X2dseXBoX2Zvcm1hdF9ub25lICAgICAgIEZUX0dMWVBIX0ZPUk1BVF9OT05FCisjZGVmaW5lIGZ0X2dseXBoX2Zvcm1hdF9jb21wb3NpdGUgIEZUX0dMWVBIX0ZPUk1BVF9DT01QT1NJVEUKKyNkZWZpbmUgZnRfZ2x5cGhfZm9ybWF0X2JpdG1hcCAgICAgRlRfR0xZUEhfRk9STUFUX0JJVE1BUAorI2RlZmluZSBmdF9nbHlwaF9mb3JtYXRfb3V0bGluZSAgICBGVF9HTFlQSF9GT1JNQVRfT1VUTElORQorI2RlZmluZSBmdF9nbHlwaF9mb3JtYXRfcGxvdHRlciAgICBGVF9HTFlQSF9GT1JNQVRfUExPVFRFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgIFIgQSBTIFQgRSBSICAgRCBFIEYgSSBOIEkgVCBJIE8gTiBTICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQSByYXN0ZXIgaXMgYSBzY2FuIGNvbnZlcnRlciwgaW4gY2hhcmdlIG9mIHJlbmRlcmluZyBhbiBvdXRsaW5lIGludG8gICovCisgIC8qIGEgYSBiaXRtYXAuICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIHB1YmxpYyBBUEkgZm9yIHJhc3RlcnMuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTm90ZSB0aGF0IGluIEZyZWVUeXBlIDIsIGFsbCByYXN0ZXJzIGFyZSBub3cgZW5jYXBzdWxhdGVkIHdpdGhpbiAgICAgICovCisgIC8qIHNwZWNpZmljIG1vZHVsZXMgY2FsbGVkIGByZW5kZXJlcnMnLiAgU2VlIGBmcmVldHlwZS9mdHJlbmRlci5oJyBmb3IgICAqLworICAvKiBtb3JlIGRldGFpbHMgb24gcmVuZGVyZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmFzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2NhbmxpbmUgQ29udmVydGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSG93IHZlY3RvcmlhbCBvdXRsaW5lcyBhcmUgY29udmVydGVkIGludG8gYml0bWFwcyBhbmQgcGl4bWFwcy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRlY2huaWNhbCBkZWZpbml0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Jhc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIChwb2ludGVyKSB0byBhIHJhc3RlciBvYmplY3QuICBFYWNoIG9iamVjdCBjYW4gYmUgdXNlZCAgICAqLworICAvKiAgICBpbmRlcGVuZGVudGx5IHRvIGNvbnZlcnQgYW4gb3V0bGluZSBpbnRvIGEgYml0bWFwIG9yIHBpeG1hcC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX1Jhc3RlclJlY18qICBGVF9SYXN0ZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TcGFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgc2luZ2xlIHNwYW4gb2YgZ3JheSAob3IgYmxhY2spIHBpeGVscyAgKi8KKyAgLyogICAgd2hlbiByZW5kZXJpbmcgYSBtb25vY2hyb21lIG9yIGFudGktYWxpYXNlZCBiaXRtYXAuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeCAgICAgICAgOjogVGhlIHNwYW4ncyBob3Jpem9udGFsIHN0YXJ0IHBvc2l0aW9uLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsZW4gICAgICA6OiBUaGUgc3BhbidzIGxlbmd0aCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvdmVyYWdlIDo6IFRoZSBzcGFuIGNvbG9yL2NvdmVyYWdlLCByYW5naW5nIGZyb20gMCAoYmFja2dyb3VuZCkgICAqLworICAvKiAgICAgICAgICAgICAgICB0byAyNTUgKGZvcmVncm91bmQpLiAgT25seSB1c2VkIGZvciBhbnRpLWFsaWFzZWQgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgcmVuZGVyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCBieSB0aGUgc3BhbiBkcmF3aW5nIGNhbGxiYWNrIHR5cGUgbmFtZWQgICAgICovCisgIC8qICAgIEBGVF9TcGFuRnVuYyB3aGljaCB0YWtlcyB0aGUgeX5jb29yZGluYXRlIG9mIHRoZSBzcGFuIGFzIGEgICAgICAgICAqLworICAvKiAgICBhIHBhcmFtZXRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBjb3ZlcmFnZSB2YWx1ZSBpcyBhbHdheXMgYmV0d2VlbiAwIGFuZCAyNTUuICBJZiB5b3Ugd2FudCBsZXNzICAqLworICAvKiAgICBncmF5IHZhbHVlcywgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGhhcyB0byByZWR1Y2UgdGhlbS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TcGFuXworICB7CisgICAgc2hvcnQgICAgICAgICAgIHg7CisgICAgdW5zaWduZWQgc2hvcnQgIGxlbjsKKyAgICB1bnNpZ25lZCBjaGFyICAgY292ZXJhZ2U7CisKKyAgfSBGVF9TcGFuOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU3BhbkZ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIGFzIGEgY2FsbC1iYWNrIGJ5IHRoZSBhbnRpLWFsaWFzZWQgcmVuZGVyZXIgaW4gICAgICovCisgIC8qICAgIG9yZGVyIHRvIGxldCBjbGllbnQgYXBwbGljYXRpb25zIGRyYXcgdGhlbXNlbHZlcyB0aGUgZ3JheSBwaXhlbCAgICAqLworICAvKiAgICBzcGFucyBvbiBlYWNoIHNjYW4gbGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5ICAgICA6OiBUaGUgc2NhbmxpbmUncyB5fmNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvdW50IDo6IFRoZSBudW1iZXIgb2Ygc3BhbnMgdG8gZHJhdyBvbiB0aGlzIHNjYW5saW5lLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3BhbnMgOjogQSB0YWJsZSBvZiBgY291bnQnIHNwYW5zIHRvIGRyYXcgb24gdGhlIHNjYW5saW5lLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1c2VyICA6OiBVc2VyLXN1cHBsaWVkIGRhdGEgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGNhbGxiYWNrIGFsbG93cyBjbGllbnQgYXBwbGljYXRpb25zIHRvIGRpcmVjdGx5IHJlbmRlciB0aGUgICAgKi8KKyAgLyogICAgZ3JheSBzcGFucyBvZiB0aGUgYW50aS1hbGlhc2VkIGJpdG1hcCB0byBhbnkga2luZCBvZiBzdXJmYWNlcy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIHdyaXRlIGFudGktYWxpYXNlZCBvdXRsaW5lcyBkaXJlY3RseSB0byBhICAgICAgKi8KKyAgLyogICAgZ2l2ZW4gYmFja2dyb3VuZCBiaXRtYXAsIGFuZCBldmVuIHBlcmZvcm0gdHJhbnNsdWNlbmN5LiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RlIHRoYXQgdGhlIGBjb3VudCcgZmllbGQgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBhIGZpeGVkIHZhbHVlICAgKi8KKyAgLyogICAgZGVmaW5lZCBieSB0aGUgYEZUX01BWF9HUkFZX1NQQU5TJyBjb25maWd1cmF0aW9uIG1hY3JvIGluICAgICAgICAgICovCisgIC8qICAgIGBmdG9wdGlvbi5oJy4gIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgc2V0IHRvfjMyLCB3aGljaCBtZWFucyAgICAqLworICAvKiAgICB0aGF0IGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gMzJ+c3BhbnMgb24gYSBnaXZlbiBzY2FubGluZSwgdGhlICAgICAgKi8KKyAgLyogICAgY2FsbGJhY2sgaXMgY2FsbGVkIHNldmVyYWwgdGltZXMgd2l0aCB0aGUgc2FtZSBgeScgcGFyYW1ldGVyIGluICAgICovCisgIC8qICAgIG9yZGVyIHRvIGRyYXcgYWxsIGNhbGxiYWNrcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT3RoZXJ3aXNlLCB0aGUgY2FsbGJhY2sgaXMgb25seSBjYWxsZWQgb25jZSBwZXIgc2Nhbi1saW5lLCBhbmQgICAgICovCisgIC8qICAgIG9ubHkgZm9yIHRob3NlIHNjYW5saW5lcyB0aGF0IGRvIGhhdmUgYGdyYXknIHBpeGVscyBvbiB0aGVtLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfU3BhbkZ1bmMpKCBpbnQgICAgICAgICAgICAgeSwKKyAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1NwYW4qICBzcGFucywKKyAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICB1c2VyICk7CisKKyNkZWZpbmUgRlRfUmFzdGVyX1NwYW5fRnVuYyAgRlRfU3BhbkZ1bmMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Jhc3Rlcl9CaXRUZXN0X0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRISVMgVFlQRSBJUyBERVBSRUNBVEVELiAgRE8gTk9UIFVTRSBJVC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIGFzIGEgY2FsbC1iYWNrIGJ5IHRoZSBtb25vY2hyb21lIHNjYW4tY29udmVydGVyICAgICovCisgIC8qICAgIHRvIHRlc3Qgd2hldGhlciBhIGdpdmVuIHRhcmdldCBwaXhlbCBpcyBhbHJlYWR5IHNldCB0byB0aGUgZHJhd2luZyAqLworICAvKiAgICBgY29sb3InLiAgVGhlc2UgdGVzdHMgYXJlIGNydWNpYWwgdG8gaW1wbGVtZW50IGRyb3Atb3V0IGNvbnRyb2wgICAgKi8KKyAgLyogICAgcGVyLXNlIHRoZSBUcnVlVHlwZSBzcGVjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeSAgICAgOjogVGhlIHBpeGVsJ3MgeX5jb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4ICAgICA6OiBUaGUgcGl4ZWwncyB4fmNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgIDo6IFVzZXItc3VwcGxpZWQgZGF0YSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2suICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgMX5pZiB0aGUgcGl4ZWwgaXMgYHNldCcsIDB+b3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBpbnQKKyAgKCpGVF9SYXN0ZXJfQml0VGVzdF9GdW5jKSggaW50ICAgIHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgdXNlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmFzdGVyX0JpdFNldF9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVEhJUyBUWVBFIElTIERFUFJFQ0FURUQuICBETyBOT1QgVVNFIElULiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGZ1bmN0aW9uIHVzZWQgYXMgYSBjYWxsLWJhY2sgYnkgdGhlIG1vbm9jaHJvbWUgc2Nhbi1jb252ZXJ0ZXIgICAgKi8KKyAgLyogICAgdG8gc2V0IGFuIGluZGl2aWR1YWwgdGFyZ2V0IHBpeGVsLiAgVGhpcyBpcyBjcnVjaWFsIHRvIGltcGxlbWVudCAgICovCisgIC8qICAgIGRyb3Atb3V0IGNvbnRyb2wgYWNjb3JkaW5nIHRvIHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHkgICAgIDo6IFRoZSBwaXhlbCdzIHl+Y29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeCAgICAgOjogVGhlIHBpeGVsJ3MgeH5jb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1c2VyICA6OiBVc2VyLXN1cHBsaWVkIGRhdGEgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAxfmlmIHRoZSBwaXhlbCBpcyBgc2V0JywgMH5vdGhlcndpc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1Jhc3Rlcl9CaXRTZXRfRnVuYykoIGludCAgICB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICB1c2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SQVNURVJfRkxBR19YWFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGxpc3Qgb2YgYml0IGZsYWcgY29uc3RhbnRzIGFzIHVzZWQgaW4gdGhlIGBmbGFncycgZmllbGQgb2YgYSAgICAgKi8KKyAgLyogICAgQEZUX1Jhc3Rlcl9QYXJhbXMgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUkFTVEVSX0ZMQUdfREVGQVVMVCA6OiBUaGlzIHZhbHVlIGlzIDAuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SQVNURVJfRkxBR19BQSAgICAgIDo6IFRoaXMgZmxhZyBpcyBzZXQgdG8gaW5kaWNhdGUgdGhhdCBhbiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnRpLWFsaWFzZWQgZ2x5cGggaW1hZ2Ugc2hvdWxkIGJlICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIGJlICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbm9jaHJvbWUgKDEtYml0KS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JBU1RFUl9GTEFHX0RJUkVDVCAgOjogVGhpcyBmbGFnIGlzIHNldCB0byBpbmRpY2F0ZSBkaXJlY3QgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZy4gIEluIHRoaXMgbW9kZSwgY2xpZW50ICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgbXVzdCBwcm92aWRlIHRoZWlyIG93biBzcGFuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suICBUaGlzIGxldHMgdGhlbSBkaXJlY3RseSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXcgb3IgY29tcG9zZSBvdmVyIGFuIGV4aXN0aW5nIGJpdG1hcC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGJpdCBpcyBub3Qgc2V0LCB0aGUgdGFyZ2V0ICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4bWFwJ3MgYnVmZmVyIF9tdXN0XyBiZSB6ZXJvZWQgYmVmb3JlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IGZvciBub3csIGRpcmVjdCByZW5kZXJpbmcgaXMgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgcG9zc2libGUgd2l0aCBhbnRpLWFsaWFzZWQgZ2x5cGhzLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JBU1RFUl9GTEFHX0NMSVAgICAgOjogVGhpcyBmbGFnIGlzIG9ubHkgdXNlZCBpbiBkaXJlY3QgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZyBtb2RlLiAgSWYgc2V0LCB0aGUgb3V0cHV0IHdpbGwgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBjbGlwcGVkIHRvIGEgYm94IHNwZWNpZmllZCBpbiB0aGUgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGNsaXBfYm94JyBmaWVsZCBvZiB0aGUgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9SYXN0ZXJfUGFyYW1zIHN0cnVjdHVyZS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IGJ5IGRlZmF1bHQsIHRoZSBnbHlwaCBiaXRtYXAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNsaXBwZWQgdG8gdGhlIHRhcmdldCBwaXhtYXAsIGV4Y2VwdCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBkaXJlY3QgcmVuZGVyaW5nIG1vZGUgd2hlcmUgYWxsIHNwYW5zICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGdlbmVyYXRlZCBpZiBubyBjbGlwcGluZyBib3ggaXMgc2V0LiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfUkFTVEVSX0ZMQUdfREVGQVVMVCAgMHgwCisjZGVmaW5lIEZUX1JBU1RFUl9GTEFHX0FBICAgICAgIDB4MQorI2RlZmluZSBGVF9SQVNURVJfRkxBR19ESVJFQ1QgICAweDIKKyNkZWZpbmUgRlRfUkFTVEVSX0ZMQUdfQ0xJUCAgICAgMHg0CisKKyAgLyogZGVwcmVjYXRlZCAqLworI2RlZmluZSBmdF9yYXN0ZXJfZmxhZ19kZWZhdWx0ICBGVF9SQVNURVJfRkxBR19ERUZBVUxUCisjZGVmaW5lIGZ0X3Jhc3Rlcl9mbGFnX2FhICAgICAgIEZUX1JBU1RFUl9GTEFHX0FBCisjZGVmaW5lIGZ0X3Jhc3Rlcl9mbGFnX2RpcmVjdCAgIEZUX1JBU1RFUl9GTEFHX0RJUkVDVAorI2RlZmluZSBmdF9yYXN0ZXJfZmxhZ19jbGlwICAgICBGVF9SQVNURVJfRkxBR19DTElQCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYXN0ZXJfUGFyYW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB0byBob2xkIHRoZSBhcmd1bWVudHMgdXNlZCBieSBhIHJhc3RlcidzIHJlbmRlciAgICAgICAgKi8KKyAgLyogICAgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFyZ2V0ICAgICAgOjogVGhlIHRhcmdldCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzb3VyY2UgICAgICA6OiBBIHBvaW50ZXIgdG8gdGhlIHNvdXJjZSBnbHlwaCBpbWFnZSAoZS5nLiwgYW4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgQEZUX091dGxpbmUpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmbGFncyAgICAgICA6OiBUaGUgcmVuZGVyaW5nIGZsYWdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdyYXlfc3BhbnMgIDo6IFRoZSBncmF5IHNwYW4gZHJhd2luZyBjYWxsYmFjay4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmxhY2tfc3BhbnMgOjogVGhlIGJsYWNrIHNwYW4gZHJhd2luZyBjYWxsYmFjay4gIFVOSU1QTEVNRU5URUQhICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiaXRfdGVzdCAgICA6OiBUaGUgYml0IHRlc3QgY2FsbGJhY2suICBVTklNUExFTUVOVEVEISAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJpdF9zZXQgICAgIDo6IFRoZSBiaXQgc2V0IGNhbGxiYWNrLiAgVU5JTVBMRU1FTlRFRCEgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciAgICAgICAgOjogVXNlci1zdXBwbGllZCBkYXRhIHRoYXQgaXMgcGFzc2VkIHRvIGVhY2ggZHJhd2luZyAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2xpcF9ib3ggICAgOjogQW4gb3B0aW9uYWwgY2xpcHBpbmcgYm94LiAgSXQgaXMgb25seSB1c2VkIGluICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGRpcmVjdCByZW5kZXJpbmcgbW9kZS4gIE5vdGUgdGhhdCBjb29yZGluYXRlcyBoZXJlICAqLworICAvKiAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgZXhwcmVzc2VkIGluIF9pbnRlZ2VyXyBwaXhlbHMgKGFuZCBub3QgaW4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgMjYuNiBmaXhlZC1wb2ludCB1bml0cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gYW50aS1hbGlhc2VkIGdseXBoIGJpdG1hcCBpcyBkcmF3biBpZiB0aGUgQEZUX1JBU1RFUl9GTEFHX0FBICAgICovCisgIC8qICAgIGJpdCBmbGFnIGlzIHNldCBpbiB0aGUgYGZsYWdzJyBmaWVsZCwgb3RoZXJ3aXNlIGEgbW9ub2Nocm9tZSAgICAgICAqLworICAvKiAgICBiaXRtYXAgaXMgZ2VuZXJhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIHRoZSBARlRfUkFTVEVSX0ZMQUdfRElSRUNUIGJpdCBmbGFnIGlzIHNldCBpbiBgZmxhZ3MnLCB0aGUgICAgICAqLworICAvKiAgICByYXN0ZXIgd2lsbCBjYWxsIHRoZSBgZ3JheV9zcGFucycgY2FsbGJhY2sgdG8gZHJhdyBncmF5IHBpeGVsICAgICAgKi8KKyAgLyogICAgc3BhbnMsIGluIHRoZSBjYXNlIG9mIGFuIGFhIGdseXBoIGJpdG1hcCwgaXQgd2lsbCBjYWxsICAgICAgICAgICAgICovCisgIC8qICAgIGBibGFja19zcGFucycsIGFuZCBgYml0X3Rlc3QnIGFuZCBgYml0X3NldCcgaW4gdGhlIGNhc2Ugb2YgYSAgICAgICAqLworICAvKiAgICBtb25vY2hyb21lIGJpdG1hcC4gIFRoaXMgYWxsb3dzIGRpcmVjdCBjb21wb3NpdGlvbiBvdmVyIGEgICAgICAgICAgKi8KKyAgLyogICAgcHJlLWV4aXN0aW5nIGJpdG1hcCB0aHJvdWdoIHVzZXItcHJvdmlkZWQgY2FsbGJhY2tzIHRvIHBlcmZvcm0gdGhlICovCisgIC8qICAgIHNwYW4gZHJhd2luZy9jb21wb3NpdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IHRoZSBgYml0X3Rlc3QnIGFuZCBgYml0X3NldCcgY2FsbGJhY2tzIGFyZSByZXF1aXJlZCB3aGVuICovCisgIC8qICAgIHJlbmRlcmluZyBhIG1vbm9jaHJvbWUgYml0bWFwLCBhcyB0aGV5IGFyZSBjcnVjaWFsIHRvIGltcGxlbWVudCAgICAqLworICAvKiAgICBjb3JyZWN0IGRyb3Atb3V0IGNvbnRyb2wgYXMgZGVmaW5lZCBpbiB0aGUgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbi4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9SYXN0ZXJfUGFyYW1zXworICB7CisgICAgY29uc3QgRlRfQml0bWFwKiAgICAgICAgdGFyZ2V0OworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgIHNvdXJjZTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBmbGFnczsKKyAgICBGVF9TcGFuRnVuYyAgICAgICAgICAgICBncmF5X3NwYW5zOworICAgIEZUX1NwYW5GdW5jICAgICAgICAgICAgIGJsYWNrX3NwYW5zOyAgLyogZG9lc24ndCB3b3JrISAqLworICAgIEZUX1Jhc3Rlcl9CaXRUZXN0X0Z1bmMgIGJpdF90ZXN0OyAgICAgLyogZG9lc24ndCB3b3JrISAqLworICAgIEZUX1Jhc3Rlcl9CaXRTZXRfRnVuYyAgIGJpdF9zZXQ7ICAgICAgLyogZG9lc24ndCB3b3JrISAqLworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgIHVzZXI7CisgICAgRlRfQkJveCAgICAgICAgICAgICAgICAgY2xpcF9ib3g7CisKKyAgfSBGVF9SYXN0ZXJfUGFyYW1zOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmFzdGVyX05ld0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSBhIG5ldyByYXN0ZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5IDo6IEEgaGFuZGxlIHRvIHRoZSBtZW1vcnkgYWxsb2NhdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmFzdGVyIDo6IEEgaGFuZGxlIHRvIHRoZSBuZXcgcmFzdGVyIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGBtZW1vcnknIHBhcmFtZXRlciBpcyBhIHR5cGVsZXNzIHBvaW50ZXIgaW4gb3JkZXIgdG8gYXZvaWQgICAgICovCisgIC8qICAgIHVuLXdhbnRlZCBkZXBlbmRlbmNpZXMgb24gdGhlIHJlc3Qgb2YgdGhlIEZyZWVUeXBlIGNvZGUuICBJbiAgICAgICAqLworICAvKiAgICBwcmFjdGljZSwgaXQgaXMgYW4gQEZUX01lbW9yeSBvYmplY3QsIGkuZS4sIGEgaGFuZGxlIHRvIHRoZSAgICAgICAgKi8KKyAgLyogICAgc3RhbmRhcmQgRnJlZVR5cGUgbWVtb3J5IGFsbG9jYXRvci4gIEhvd2V2ZXIsIHRoaXMgZmllbGQgY2FuIGJlICAgICovCisgIC8qICAgIGNvbXBsZXRlbHkgaWdub3JlZCBieSBhIGdpdmVuIHJhc3RlciBpbXBsZW1lbnRhdGlvbi4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBpbnQKKyAgKCpGVF9SYXN0ZXJfTmV3RnVuYykoIHZvaWQqICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1Jhc3RlciogIHJhc3RlciApOworCisjZGVmaW5lIEZUX1Jhc3Rlcl9OZXdfRnVuYyAgRlRfUmFzdGVyX05ld0Z1bmMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Jhc3Rlcl9Eb25lRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCB0byBkZXN0cm95IGEgZ2l2ZW4gcmFzdGVyIG9iamVjdC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3RlciA6OiBBIGhhbmRsZSB0byB0aGUgcmFzdGVyIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfUmFzdGVyX0RvbmVGdW5jKSggRlRfUmFzdGVyICByYXN0ZXIgKTsKKworI2RlZmluZSBGVF9SYXN0ZXJfRG9uZV9GdW5jICBGVF9SYXN0ZXJfRG9uZUZ1bmMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Jhc3Rlcl9SZXNldEZ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIHByb3ZpZGVzIGFuIGFyZWEgb2YgbWVtb3J5IGNhbGxlZCB0aGUgYHJlbmRlciBwb29sJywgICAgICAqLworICAvKiAgICBhdmFpbGFibGUgdG8gYWxsIHJlZ2lzdGVyZWQgcmFzdGVycy4gIFRoaXMgcG9vbCBjYW4gYmUgZnJlZWx5IHVzZWQgKi8KKyAgLyogICAgZHVyaW5nIGEgZ2l2ZW4gc2Nhbi1jb252ZXJzaW9uIGJ1dCBpcyBzaGFyZWQgYnkgYWxsIHJhc3RlcnMuICBJdHMgICovCisgIC8qICAgIGNvbnRlbnQgaXMgdGh1cyB0cmFuc2llbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZWFjaCB0aW1lIHRoZSByZW5kZXIgcG9vbCBjaGFuZ2VzLCBvciBqdXN0ICovCisgIC8qICAgIGFmdGVyIGEgbmV3IHJhc3RlciBvYmplY3QgaXMgY3JlYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3RlciAgICA6OiBBIGhhbmRsZSB0byB0aGUgbmV3IHJhc3RlciBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcG9vbF9iYXNlIDo6IFRoZSBhZGRyZXNzIGluIG1lbW9yeSBvZiB0aGUgcmVuZGVyIHBvb2wuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb29sX3NpemUgOjogVGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHJlbmRlciBwb29sLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSYXN0ZXJzIGNhbiBpZ25vcmUgdGhlIHJlbmRlciBwb29sIGFuZCByZWx5IG9uIGR5bmFtaWMgbWVtb3J5ICAgICAgKi8KKyAgLyogICAgYWxsb2NhdGlvbiBpZiB0aGV5IHdhbnQgdG8gKGEgaGFuZGxlIHRvIHRoZSBtZW1vcnkgYWxsb2NhdG9yIGlzICAgICovCisgIC8qICAgIHBhc3NlZCB0byB0aGUgcmFzdGVyIGNvbnN0cnVjdG9yKS4gIEhvd2V2ZXIsIHRoaXMgaXMgbm90ICAgICAgICAgICAqLworICAvKiAgICByZWNvbW1lbmRlZCBmb3IgZWZmaWNpZW5jeSBwdXJwb3Nlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1Jhc3Rlcl9SZXNldEZ1bmMpKCBGVF9SYXN0ZXIgICAgICAgcmFzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiAgcG9vbF9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgcG9vbF9zaXplICk7CisKKyNkZWZpbmUgRlRfUmFzdGVyX1Jlc2V0X0Z1bmMgIEZUX1Jhc3Rlcl9SZXNldEZ1bmMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Jhc3Rlcl9TZXRNb2RlRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgYSBnZW5lcmljIGZhY2lsaXR5IHRvIGNoYW5nZSBtb2RlcyBvciBhdHRyaWJ1dGVzICAqLworICAvKiAgICBpbiBhIGdpdmVuIHJhc3Rlci4gIFRoaXMgY2FuIGJlIHVzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcywgb3IgICAgKi8KKyAgLyogICAgc2ltcGx5IHRvIGFsbG93IGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGBmZWF0dXJlcycgaW4gYSBnaXZlbiAgICAgICovCisgIC8qICAgIHJhc3RlciBtb2R1bGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3RlciA6OiBBIGhhbmRsZSB0byB0aGUgbmV3IHJhc3RlciBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kZSAgIDo6IEEgNC1ieXRlIHRhZyB1c2VkIHRvIG5hbWUgdGhlIG1vZGUgb3IgcHJvcGVydHkuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhcmdzICAgOjogQSBwb2ludGVyIHRvIHRoZSBuZXcgbW9kZS9wcm9wZXJ0eSB0byB1c2UuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgaW50CisgICgqRlRfUmFzdGVyX1NldE1vZGVGdW5jKSggRlRfUmFzdGVyICAgICAgcmFzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgYXJncyApOworCisjZGVmaW5lIEZUX1Jhc3Rlcl9TZXRfTW9kZV9GdW5jICBGVF9SYXN0ZXJfU2V0TW9kZUZ1bmMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Jhc3Rlcl9SZW5kZXJGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEludm9rZSBhIGdpdmVuIHJhc3RlciB0byBzY2FuLWNvbnZlcnQgYSBnaXZlbiBnbHlwaCBpbWFnZSBpbnRvIGEgICAqLworICAvKiAgICB0YXJnZXQgYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYXN0ZXIgOjogQSBoYW5kbGUgdG8gdGhlIHJhc3RlciBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhcmFtcyA6OiBBIHBvaW50ZXIgdG8gYW4gQEZUX1Jhc3Rlcl9QYXJhbXMgc3RydWN0dXJlIHVzZWQgdG8gICAgICAqLworICAvKiAgICAgICAgICAgICAgc3RvcmUgdGhlIHJlbmRlcmluZyBwYXJhbWV0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZXhhY3QgZm9ybWF0IG9mIHRoZSBzb3VyY2UgaW1hZ2UgZGVwZW5kcyBvbiB0aGUgcmFzdGVyJ3MgZ2x5cGggKi8KKyAgLyogICAgZm9ybWF0IGRlZmluZWQgaW4gaXRzIEBGVF9SYXN0ZXJfRnVuY3Mgc3RydWN0dXJlLiAgSXQgY2FuIGJlIGFuICAgICovCisgIC8qICAgIEBGVF9PdXRsaW5lIG9yIGFueXRoaW5nIGVsc2UgaW4gb3JkZXIgdG8gc3VwcG9ydCBhIGxhcmdlIGFycmF5IG9mICAqLworICAvKiAgICBnbHlwaCBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgYWxzbyB0aGF0IHRoZSByZW5kZXIgZnVuY3Rpb24gY2FuIGZhaWwgYW5kIHJldHVybiBhICAgICAgICAgICAqLworICAvKiAgICBgRlRfRXJyX1VuaW1wbGVtZW50ZWRfRmVhdHVyZScgZXJyb3IgY29kZSBpZiB0aGUgcmFzdGVyIHVzZWQgZG9lcyAgKi8KKyAgLyogICAgbm90IHN1cHBvcnQgZGlyZWN0IGNvbXBvc2l0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBYWFg6IEZvciBub3csIHRoZSBzdGFuZGFyZCByYXN0ZXIgZG9lc24ndCBzdXBwb3J0IGRpcmVjdCAgICAgICAgICAgKi8KKyAgLyogICAgICAgICBjb21wb3NpdGlvbiBidXQgdGhpcyBzaG91bGQgY2hhbmdlIGZvciB0aGUgZmluYWwgcmVsZWFzZSAoc2VlICovCisgIC8qICAgICAgICAgdGhlIGZpbGVzIGBkZW1vcy9zcmMvZnRncmF5cy5jJyBhbmQgYGRlbW9zL3NyYy9mdGdyYXlzMi5jJyAgICAqLworICAvKiAgICAgICAgIGZvciBleGFtcGxlcyBvZiBkaXN0aW5jdCBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggc3VwcG9ydCBkaXJlY3QgKi8KKyAgLyogICAgICAgICBjb21wb3NpdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGludAorICAoKkZUX1Jhc3Rlcl9SZW5kZXJGdW5jKSggRlRfUmFzdGVyICAgICAgICAgICAgICAgIHJhc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1Jhc3Rlcl9QYXJhbXMqICBwYXJhbXMgKTsKKworI2RlZmluZSBGVF9SYXN0ZXJfUmVuZGVyX0Z1bmMgIEZUX1Jhc3Rlcl9SZW5kZXJGdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYXN0ZXJfRnVuY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEEgc3RydWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgYSBnaXZlbiByYXN0ZXIgY2xhc3MgdG8gdGhlIGxpYnJhcnkuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9mb3JtYXQgIDo6IFRoZSBzdXBwb3J0ZWQgZ2x5cGggZm9ybWF0IGZvciB0aGlzIHJhc3Rlci4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3Rlcl9uZXcgICAgOjogVGhlIHJhc3RlciBjb25zdHJ1Y3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmFzdGVyX3Jlc2V0ICA6OiBVc2VkIHRvIHJlc2V0IHRoZSByZW5kZXIgcG9vbCB3aXRoaW4gdGhlIHJhc3Rlci4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYXN0ZXJfcmVuZGVyIDo6IEEgZnVuY3Rpb24gdG8gcmVuZGVyIGEgZ2x5cGggaW50byBhIGdpdmVuIGJpdG1hcC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3Rlcl9kb25lICAgOjogVGhlIHJhc3RlciBkZXN0cnVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1Jhc3Rlcl9GdW5jc18KKyAgeworICAgIEZUX0dseXBoX0Zvcm1hdCAgICAgICAgZ2x5cGhfZm9ybWF0OworICAgIEZUX1Jhc3Rlcl9OZXdGdW5jICAgICAgcmFzdGVyX25ldzsKKyAgICBGVF9SYXN0ZXJfUmVzZXRGdW5jICAgIHJhc3Rlcl9yZXNldDsKKyAgICBGVF9SYXN0ZXJfU2V0TW9kZUZ1bmMgIHJhc3Rlcl9zZXRfbW9kZTsKKyAgICBGVF9SYXN0ZXJfUmVuZGVyRnVuYyAgIHJhc3Rlcl9yZW5kZXI7CisgICAgRlRfUmFzdGVyX0RvbmVGdW5jICAgICByYXN0ZXJfZG9uZTsKKworICB9IEZUX1Jhc3Rlcl9GdW5jczsKKworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVElNQUdFX0hfXyAqLworCisKKy8qIEVORCAqLworCisKKy8qIExvY2FsIFZhcmlhYmxlczogKi8KKy8qIGNvZGluZzogdXRmLTggICAgKi8KKy8qIEVuZDogICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRpbmNyZW0uaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRpbmNyZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTMwMTVlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGluY3JlbS5oCkBAIC0wLDAgKzEsMzUzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGluY3JlbS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgaW5jcmVtZW50YWwgbG9hZGluZyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgYnkgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVElOQ1JFTV9IX18KKyNkZWZpbmUgX19GVElOQ1JFTV9IX18KKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc2VjdGlvbjoKKyAgICogICAgaW5jcmVtZW50YWwKKyAgICoKKyAgICogQHRpdGxlOgorICAgKiAgICBJbmNyZW1lbnRhbCBMb2FkaW5nCisgICAqCisgICAqIEBhYnN0cmFjdDoKKyAgICogICAgQ3VzdG9tIEdseXBoIExvYWRpbmcuCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdmFyaW91cyBmdW5jdGlvbnMgdXNlZCB0byBwZXJmb3JtIHNvLWNhbGxlZAorICAgKiAgIGBpbmNyZW1lbnRhbCcgZ2x5cGggbG9hZGluZy4gIFRoaXMgaXMgYSBtb2RlIHdoZXJlIGFsbCBnbHlwaHMgbG9hZGVkCisgICAqICAgZnJvbSBhIGdpdmVuIEBGVF9GYWNlIGFyZSBwcm92aWRlZCBieSB0aGUgY2xpZW50IGFwcGxpY2F0aW9uLAorICAgKgorICAgKiAgIEFwYXJ0IGZyb20gdGhhdCwgYWxsIG90aGVyIHRhYmxlcyBhcmUgbG9hZGVkIG5vcm1hbGx5IGZyb20gdGhlIGZvbnQKKyAgICogICBmaWxlLiAgVGhpcyBtb2RlIGlzIHVzZWZ1bCB3aGVuIEZyZWVUeXBlIGlzIHVzZWQgd2l0aGluIGFub3RoZXIKKyAgICogICBlbmdpbmUsIGUuZy4sIGEgUG9zdFNjcmlwdCBJbWFnaW5nIFByb2Nlc3Nvci4KKyAgICoKKyAgICogICBUbyBlbmFibGUgdGhpcyBtb2RlLCB5b3UgbXVzdCB1c2UgQEZUX09wZW5fRmFjZSwgcGFzc2luZyBhbgorICAgKiAgIEBGVF9QYXJhbWV0ZXIgd2l0aCB0aGUgQEZUX1BBUkFNX1RBR19JTkNSRU1FTlRBTCB0YWcgYW5kIGFuCisgICAqICAgQEZUX0luY3JlbWVudGFsX0ludGVyZmFjZSB2YWx1ZS4gIFNlZSB0aGUgY29tbWVudHMgZm9yCisgICAqICAgQEZUX0luY3JlbWVudGFsX0ludGVyZmFjZVJlYyBmb3IgYW4gZXhhbXBsZS4KKyAgICoKKyAgICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUX0luY3JlbWVudGFsCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBbiBvcGFxdWUgdHlwZSBkZXNjcmliaW5nIGEgdXNlci1wcm92aWRlZCBvYmplY3QgdXNlZCB0byBpbXBsZW1lbnQKKyAgICogICBgaW5jcmVtZW50YWwnIGdseXBoIGxvYWRpbmcgd2l0aGluIEZyZWVUeXBlLiAgVGhpcyBpcyB1c2VkIHRvIHN1cHBvcnQKKyAgICogICBlbWJlZGRlZCBmb250cyBpbiBjZXJ0YWluIGVudmlyb25tZW50cyAoZS5nLiwgUG9zdFNjcmlwdCBpbnRlcnByZXRlcnMpLAorICAgKiAgIHdoZXJlIHRoZSBnbHlwaCBkYXRhIGlzbid0IGluIHRoZSBmb250IGZpbGUsIG9yIG11c3QgYmUgb3ZlcnJpZGRlbiBieQorICAgKiAgIGRpZmZlcmVudCB2YWx1ZXMuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIEl0IGlzIHVwIHRvIGNsaWVudCBhcHBsaWNhdGlvbnMgdG8gY3JlYXRlIGFuZCBpbXBsZW1lbnQgQEZUX0luY3JlbWVudGFsCisgICAqICAgb2JqZWN0cywgYXMgbG9uZyBhcyB0aGV5IHByb3ZpZGUgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgbWV0aG9kcworICAgKiAgIEBGVF9JbmNyZW1lbnRhbF9HZXRHbHlwaERhdGFGdW5jLCBARlRfSW5jcmVtZW50YWxfRnJlZUdseXBoRGF0YUZ1bmMKKyAgICogICBhbmQgQEZUX0luY3JlbWVudGFsX0dldEdseXBoTWV0cmljc0Z1bmMuCisgICAqCisgICAqICAgU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBARlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlUmVjIHRvIHVuZGVyc3RhbmQgaG93CisgICAqICAgdG8gdXNlIGluY3JlbWVudGFsIG9iamVjdHMgd2l0aCBGcmVlVHlwZS4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0luY3JlbWVudGFsUmVjXyogIEZUX0luY3JlbWVudGFsOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc3RydWN0OgorICAgKiAgIEZUX0luY3JlbWVudGFsX01ldHJpY3NSZWMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgc21hbGwgc3RydWN0dXJlIHVzZWQgdG8gY29udGFpbiB0aGUgYmFzaWMgZ2x5cGggbWV0cmljcyByZXR1cm5lZAorICAgKiAgIGJ5IHRoZSBARlRfSW5jcmVtZW50YWxfR2V0R2x5cGhNZXRyaWNzRnVuYyBtZXRob2QuCisgICAqCisgICAqIEBmaWVsZHM6CisgICAqICAgYmVhcmluZ194IDo6CisgICAqICAgICBMZWZ0IGJlYXJpbmcsIGluIGZvbnQgdW5pdHMuCisgICAqCisgICAqICAgYmVhcmluZ195IDo6CisgICAqICAgICBUb3AgYmVhcmluZywgaW4gZm9udCB1bml0cy4KKyAgICoKKyAgICogICBhZHZhbmNlIDo6CisgICAqICAgICBIb3Jpem9udGFsIGNvbXBvbmVudCBvZiBnbHlwaCBhZHZhbmNlLCBpbiBmb250IHVuaXRzLgorICAgKgorICAgKiAgIGFkdmFuY2VfdiA6OgorICAgKiAgICAgVmVydGljYWwgY29tcG9uZW50IG9mIGdseXBoIGFkdmFuY2UsIGluIGZvbnQgdW5pdHMuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoZXNlIGNvcnJlc3BvbmQgdG8gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBtZXRyaWNzIGRlcGVuZGluZyBvbiB0aGUKKyAgICogICB2YWx1ZSBvZiB0aGUgYHZlcnRpY2FsJyBhcmd1bWVudCB0byB0aGUgZnVuY3Rpb24KKyAgICogICBARlRfSW5jcmVtZW50YWxfR2V0R2x5cGhNZXRyaWNzRnVuYy4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9JbmNyZW1lbnRhbF9NZXRyaWNzUmVjXworICB7CisgICAgRlRfTG9uZyAgYmVhcmluZ194OworICAgIEZUX0xvbmcgIGJlYXJpbmdfeTsKKyAgICBGVF9Mb25nICBhZHZhbmNlOworICAgIEZUX0xvbmcgIGFkdmFuY2VfdjsgICAgIC8qIHNpbmNlIDIuMy4xMiAqLworCisgIH0gRlRfSW5jcmVtZW50YWxfTWV0cmljc1JlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHN0cnVjdDoKKyAgICogICBGVF9JbmNyZW1lbnRhbF9NZXRyaWNzCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGhhbmRsZSB0byBhbiBARlRfSW5jcmVtZW50YWxfTWV0cmljc1JlYyBzdHJ1Y3R1cmUuCisgICAqCisgICAqLworICAgdHlwZWRlZiBzdHJ1Y3QgRlRfSW5jcmVtZW50YWxfTWV0cmljc1JlY18qICBGVF9JbmNyZW1lbnRhbF9NZXRyaWNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBGVF9JbmNyZW1lbnRhbF9HZXRHbHlwaERhdGFGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGZ1bmN0aW9uIGNhbGxlZCBieSBGcmVlVHlwZSB0byBhY2Nlc3MgYSBnaXZlbiBnbHlwaCdzIGRhdGEgYnl0ZXMKKyAgICogICBkdXJpbmcgQEZUX0xvYWRfR2x5cGggb3IgQEZUX0xvYWRfQ2hhciBpZiBpbmNyZW1lbnRhbCBsb2FkaW5nIGlzCisgICAqICAgZW5hYmxlZC4KKyAgICoKKyAgICogICBOb3RlIHRoYXQgdGhlIGZvcm1hdCBvZiB0aGUgZ2x5cGgncyBkYXRhIGJ5dGVzIGRlcGVuZHMgb24gdGhlIGZvbnQKKyAgICogICBmaWxlIGZvcm1hdC4gIEZvciBUcnVlVHlwZSwgaXQgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSByYXcgYnl0ZXMgd2l0aGluCisgICAqICAgdGhlIGBnbHlmJyB0YWJsZS4gIEZvciBQb3N0U2NyaXB0IGZvcm1hdHMsIGl0IG11c3QgY29ycmVzcG9uZCB0byB0aGUKKyAgICogICAqdW5lbmNyeXB0ZWQqIGNoYXJzdHJpbmcgYnl0ZXMsIHdpdGhvdXQgYW55IGBsZW5JVicgaGVhZGVyLiAgSXQgaXMKKyAgICogICB1bmRlZmluZWQgZm9yIGFueSBvdGhlciBmb3JtYXQuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBpbmNyZW1lbnRhbCA6OgorICAgKiAgICAgSGFuZGxlIHRvIGFuIG9wYXF1ZSBARlRfSW5jcmVtZW50YWwgaGFuZGxlIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQKKyAgICogICAgIGFwcGxpY2F0aW9uLgorICAgKgorICAgKiAgIGdseXBoX2luZGV4IDo6CisgICAqICAgICBJbmRleCBvZiByZWxldmFudCBnbHlwaC4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICBhZGF0YSA6OgorICAgKiAgICAgQSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgcmV0dXJuZWQgZ2x5cGggZGF0YSBieXRlcyAod2hpY2ggd2lsbCBiZQorICAgKiAgICAgYWNjZXNzZWQgYXMgYSByZWFkLW9ubHkgYnl0ZSBibG9jaykuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSB0aGUgbWV0aG9kCisgICAqICAgQEZUX0luY3JlbWVudGFsX0ZyZWVHbHlwaERhdGFGdW5jIHdpbGwgYmUgY2FsbGVkIGxhdGVyIHRvIHJlbGVhc2UKKyAgICogICB0aGUgZGF0YSBieXRlcy4KKyAgICoKKyAgICogICBOZXN0ZWQgY2FsbHMgdG8gQEZUX0luY3JlbWVudGFsX0dldEdseXBoRGF0YUZ1bmMgY2FuIGhhcHBlbiBmb3IKKyAgICogICBjb21wb3VuZCBnbHlwaHMuCisgICAqCisgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfSW5jcmVtZW50YWxfR2V0R2x5cGhEYXRhRnVuYykoIEZUX0luY3JlbWVudGFsICBpbmNyZW1lbnRhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9EYXRhKiAgICAgICAgYWRhdGEgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHR5cGU6CisgICAqICAgRlRfSW5jcmVtZW50YWxfRnJlZUdseXBoRGF0YUZ1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgZnVuY3Rpb24gdXNlZCB0byByZWxlYXNlIHRoZSBnbHlwaCBkYXRhIGJ5dGVzIHJldHVybmVkIGJ5IGEKKyAgICogICBzdWNjZXNzZnVsIGNhbGwgdG8gQEZUX0luY3JlbWVudGFsX0dldEdseXBoRGF0YUZ1bmMuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBpbmNyZW1lbnRhbCA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gYW4gb3BhcXVlIEBGVF9JbmNyZW1lbnRhbCBoYW5kbGUgcHJvdmlkZWQgYnkgdGhlIGNsaWVudAorICAgKiAgICAgYXBwbGljYXRpb24uCisgICAqCisgICAqICAgZGF0YSA6OgorICAgKiAgICAgQSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgZ2x5cGggZGF0YSBieXRlcyAod2hpY2ggd2lsbCBiZSBhY2Nlc3NlZAorICAgKiAgICAgYXMgYSByZWFkLW9ubHkgYnl0ZSBibG9jaykuCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9JbmNyZW1lbnRhbF9GcmVlR2x5cGhEYXRhRnVuYykoIEZUX0luY3JlbWVudGFsICBpbmNyZW1lbnRhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0RhdGEqICAgICAgICBkYXRhICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUX0luY3JlbWVudGFsX0dldEdseXBoTWV0cmljc0Z1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgZnVuY3Rpb24gdXNlZCB0byByZXRyaWV2ZSB0aGUgYmFzaWMgbWV0cmljcyBvZiBhIGdpdmVuIGdseXBoIGluZGV4CisgICAqICAgYmVmb3JlIGFjY2Vzc2luZyBpdHMgZGF0YS4gIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UsIGluIGNlcnRhaW4KKyAgICogICBmb3JtYXRzIGxpa2UgVHJ1ZVR5cGUsIHRoZSBtZXRyaWNzIGFyZSBzdG9yZWQgaW4gYSBkaWZmZXJlbnQgcGxhY2UgZnJvbQorICAgKiAgIHRoZSBnbHlwaCBpbWFnZXMgcHJvcGVyLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaW5jcmVtZW50YWwgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIGFuIG9wYXF1ZSBARlRfSW5jcmVtZW50YWwgaGFuZGxlIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQKKyAgICogICAgIGFwcGxpY2F0aW9uLgorICAgKgorICAgKiAgIGdseXBoX2luZGV4IDo6CisgICAqICAgICBJbmRleCBvZiByZWxldmFudCBnbHlwaC4KKyAgICoKKyAgICogICB2ZXJ0aWNhbCA6OgorICAgKiAgICAgSWYgdHJ1ZSwgcmV0dXJuIHZlcnRpY2FsIG1ldHJpY3MuCisgICAqCisgICAqICAgYW1ldHJpY3MgOjoKKyAgICogICAgIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWQgZm9yIGJvdGggaW5wdXQgYW5kIG91dHB1dC4KKyAgICogICAgIFRoZSBvcmlnaW5hbCBnbHlwaCBtZXRyaWNzLCBpZiBhbnksIGluIGZvbnQgdW5pdHMuICBJZiBtZXRyaWNzIGFyZQorICAgKiAgICAgbm90IGF2YWlsYWJsZSBhbGwgdGhlIHZhbHVlcyBtdXN0IGJlIHNldCB0byB6ZXJvLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIGFtZXRyaWNzIDo6CisgICAqICAgICBUaGUgcmVwbGFjZW1lbnQgZ2x5cGggbWV0cmljcyBpbiBmb250IHVuaXRzLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0luY3JlbWVudGFsX0dldEdseXBoTWV0cmljc0Z1bmMpCisgICAgICAgICAgICAgICAgICAgICAgKCBGVF9JbmNyZW1lbnRhbCAgICAgICAgICAgICAgaW5jcmVtZW50YWwsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbmNyZW1lbnRhbF9NZXRyaWNzUmVjICAqYW1ldHJpY3MgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc3RydWN0OgorICAgKiAgIEZUX0luY3JlbWVudGFsX0Z1bmNzUmVjCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIHRhYmxlIG9mIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIGZvbnRzIHRoYXQgbG9hZCBkYXRhCisgICAqICAgaW5jcmVtZW50YWxseS4gIFVzZWQgaW4gQEZUX0luY3JlbWVudGFsX0ludGVyZmFjZVJlYy4KKyAgICoKKyAgICogQGZpZWxkczoKKyAgICogICBnZXRfZ2x5cGhfZGF0YSA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIGdldCBnbHlwaCBkYXRhLiAgTXVzdCBub3QgYmUgbnVsbC4KKyAgICoKKyAgICogICBmcmVlX2dseXBoX2RhdGEgOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byByZWxlYXNlIGdseXBoIGRhdGEuICBNdXN0IG5vdCBiZSBudWxsLgorICAgKgorICAgKiAgIGdldF9nbHlwaF9tZXRyaWNzIDo6CisgICAqICAgICBUaGUgZnVuY3Rpb24gdG8gZ2V0IGdseXBoIG1ldHJpY3MuICBNYXkgYmUgbnVsbCBpZiB0aGUgZm9udCBkb2VzCisgICAqICAgICBub3QgcHJvdmlkZSBvdmVycmlkaW5nIGdseXBoIG1ldHJpY3MuCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfSW5jcmVtZW50YWxfRnVuY3NSZWNfCisgIHsKKyAgICBGVF9JbmNyZW1lbnRhbF9HZXRHbHlwaERhdGFGdW5jICAgICBnZXRfZ2x5cGhfZGF0YTsKKyAgICBGVF9JbmNyZW1lbnRhbF9GcmVlR2x5cGhEYXRhRnVuYyAgICBmcmVlX2dseXBoX2RhdGE7CisgICAgRlRfSW5jcmVtZW50YWxfR2V0R2x5cGhNZXRyaWNzRnVuYyAgZ2V0X2dseXBoX21ldHJpY3M7CisKKyAgfSBGVF9JbmNyZW1lbnRhbF9GdW5jc1JlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHN0cnVjdDoKKyAgICogICBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VSZWMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgc3RydWN0dXJlIHRvIGJlIHVzZWQgd2l0aCBARlRfT3Blbl9GYWNlIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZXIKKyAgICogICB3YW50cyB0byBzdXBwb3J0IGluY3JlbWVudGFsIGdseXBoIGxvYWRpbmcuICBZb3Ugc2hvdWxkIHVzZSBpdCB3aXRoCisgICAqICAgQEZUX1BBUkFNX1RBR19JTkNSRU1FTlRBTCBhcyBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisgICAqCisgICAqICAgICB7CisgICAqICAgICAgIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZVJlYyAgaW5jX2ludDsKKyAgICogICAgICAgRlRfUGFyYW1ldGVyICAgICAgICAgICAgICAgICBwYXJhbWV0ZXI7CisgICAqICAgICAgIEZUX09wZW5fQXJncyAgICAgICAgICAgICAgICAgb3Blbl9hcmdzOworICAgKgorICAgKgorICAgKiAgICAgICAvLyBzZXQgdXAgaW5jcmVtZW50YWwgZGVzY3JpcHRvcgorICAgKiAgICAgICBpbmNfaW50LmZ1bmNzICA9IG15X2Z1bmNzOworICAgKiAgICAgICBpbmNfaW50Lm9iamVjdCA9IG15X29iamVjdDsKKyAgICoKKyAgICogICAgICAgLy8gc2V0IHVwIG9wdGlvbmFsIHBhcmFtZXRlcgorICAgKiAgICAgICBwYXJhbWV0ZXIudGFnICA9IEZUX1BBUkFNX1RBR19JTkNSRU1FTlRBTDsKKyAgICogICAgICAgcGFyYW1ldGVyLmRhdGEgPSAmaW5jX2ludDsKKyAgICoKKyAgICogICAgICAgLy8gc2V0IHVwIEZUX09wZW5fQXJncyBzdHJ1Y3R1cmUKKyAgICogICAgICAgb3Blbl9hcmdzLmZsYWdzICAgICAgPSBGVF9PUEVOX1BBVEhOQU1FIHwgRlRfT1BFTl9QQVJBTVM7CisgICAqICAgICAgIG9wZW5fYXJncy5wYXRobmFtZSAgID0gbXlfZm9udF9wYXRobmFtZTsKKyAgICogICAgICAgb3Blbl9hcmdzLm51bV9wYXJhbXMgPSAxOworICAgKiAgICAgICBvcGVuX2FyZ3MucGFyYW1zICAgICA9ICZwYXJhbWV0ZXI7IC8vIHdlIHVzZSBvbmUgb3B0aW9uYWwgYXJndW1lbnQKKyAgICoKKyAgICogICAgICAgLy8gb3BlbiB0aGUgZm9udAorICAgKiAgICAgICBlcnJvciA9IEZUX09wZW5fRmFjZSggbGlicmFyeSwgJm9wZW5fYXJncywgaW5kZXgsICZmYWNlICk7CisgICAqICAgICAgIC4uLgorICAgKiAgICAgfQorICAgKgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZVJlY18KKyAgeworICAgIGNvbnN0IEZUX0luY3JlbWVudGFsX0Z1bmNzUmVjKiAgZnVuY3M7CisgICAgRlRfSW5jcmVtZW50YWwgICAgICAgICAgICAgICAgICBvYmplY3Q7CisKKyAgfSBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBwb2ludGVyIHRvIGFuIEBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VSZWMgc3RydWN0dXJlLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VSZWMqICAgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAY29uc3RhbnQ6CisgICAqICAgRlRfUEFSQU1fVEFHX0lOQ1JFTUVOVEFMCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGNvbnN0YW50IHVzZWQgYXMgdGhlIHRhZyBvZiBARlRfUGFyYW1ldGVyIHN0cnVjdHVyZXMgdG8gaW5kaWNhdGUKKyAgICogICBhbiBpbmNyZW1lbnRhbCBsb2FkaW5nIG9iamVjdCB0byBiZSB1c2VkIGJ5IEZyZWVUeXBlLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfUEFSQU1fVEFHX0lOQ1JFTUVOVEFMICBGVF9NQUtFX1RBRyggJ2knLCAnbicsICdjJywgJ3InICkKKworICAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUSU5DUkVNX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGxjZGZpbC5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGxjZGZpbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MmY5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0bGNkZmlsLmgKQEAgLTAsMCArMSwyNTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0bGNkZmlsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIGNvbG9yIGZpbHRlcmluZyBvZiBzdWJwaXhlbCBiaXRtYXAgZ2x5cGhzICAgICAgICAgICAqLworLyogICAgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVF9MQ0RfRklMVEVSX0hfXworI2RlZmluZSBfX0ZUX0xDRF9GSUxURVJfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHNlY3Rpb246CisgICAqICAgbGNkX2ZpbHRlcmluZworICAgKgorICAgKiBAdGl0bGU6CisgICAqICAgTENEIEZpbHRlcmluZworICAgKgorICAgKiBAYWJzdHJhY3Q6CisgICAqICAgUmVkdWNlIGNvbG9yIGZyaW5nZXMgb2YgTENELW9wdGltaXplZCBiaXRtYXBzLgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIEBGVF9MaWJyYXJ5X1NldExjZEZpbHRlciBBUEkgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGxvdy1wYXNzCisgICAqICAgZmlsdGVyIHdoaWNoIGlzIHRoZW4gYXBwbGllZCB0byBMQ0Qtb3B0aW1pemVkIGJpdG1hcHMgZ2VuZXJhdGVkCisgICAqICAgdGhyb3VnaCBARlRfUmVuZGVyX0dseXBoLiAgVGhpcyBpcyB1c2VmdWwgdG8gcmVkdWNlIGNvbG9yIGZyaW5nZXMKKyAgICogICB3aGljaCB3b3VsZCBvY2N1ciB3aXRoIHVuZmlsdGVyZWQgcmVuZGVyaW5nLgorICAgKgorICAgKiAgIE5vdGUgdGhhdCBubyBmaWx0ZXIgaXMgYWN0aXZlIGJ5IGRlZmF1bHQsIGFuZCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMKKyAgICogICAqbm90KiBpbXBsZW1lbnRlZCBpbiBkZWZhdWx0IGJ1aWxkcyBvZiB0aGUgbGlicmFyeS4gIFlvdSBuZWVkIHRvCisgICAqICAgI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX1JFTkRFUklORyBpbiB5b3VyIGBmdG9wdGlvbi5oJyBmaWxlCisgICAqICAgaW4gb3JkZXIgdG8gYWN0aXZhdGUgaXQuCisgICAqCisgICAqICAgRnJlZVR5cGUgZ2VuZXJhdGVzIGFscGhhIGNvdmVyYWdlIG1hcHMsIHdoaWNoIGFyZSBsaW5lYXIgYnkgbmF0dXJlLgorICAgKiAgIEZvciBpbnN0YW5jZSwgdGhlIHZhbHVlIDB4ODAgaW4gYml0bWFwIHJlcHJlc2VudGF0aW9uIG1lYW5zIHRoYXQKKyAgICogICAod2l0aGluIG51bWVyaWNhbCBwcmVjaXNpb24pIDB4ODAvMHhmZiBmcmFjdGlvbiBvZiB0aGF0IHBpeGVsIGlzCisgICAqICAgY292ZXJlZCBieSB0aGUgZ2x5cGgncyBvdXRsaW5lLiAgVGhlIGJsZW5kaW5nIGZ1bmN0aW9uIGZvciBwbGFjaW5nCisgICAqICAgdGV4dCBvdmVyIGEgYmFja2dyb3VuZCBpcworICAgKgorICAgKiAgIHsKKyAgICogICAgIGRzdCA9IGFscGhhICogc3JjICsgKDEgLSBhbHBoYSkgKiBkc3QgICAgLAorICAgKiAgIH0KKyAgICoKKyAgICogICB3aGljaCBpcyBrbm93biBhcyBPVkVSLiAgSG93ZXZlciwgd2hlbiBjYWxjdWxhdGluZyB0aGUgb3V0cHV0IG9mIHRoZQorICAgKiAgIE9WRVIgb3BlcmF0b3IsIHRoZSBzb3VyY2UgY29sb3JzIHNob3VsZCBmaXJzdCBiZSB0cmFuc2Zvcm1lZCB0byBhCisgICAqICAgbGluZWFyIGNvbG9yIHNwYWNlLCB0aGVuIGFscGhhIGJsZW5kZWQgaW4gdGhhdCBzcGFjZSwgYW5kIHRyYW5zZm9ybWVkCisgICAqICAgYmFjayB0byB0aGUgb3V0cHV0IGNvbG9yIHNwYWNlLgorICAgKgorICAgKiAgIFdoZW4gbGluZWFyIGxpZ2h0IGJsZW5kaW5nIGlzIHVzZWQsIHRoZSBkZWZhdWx0IEZJUjUgZmlsdGVyaW5nCisgICAqICAgd2VpZ2h0cyAoYXMgZ2l2ZW4gYnkgRlRfTENEX0ZJTFRFUl9ERUZBVUxUKSBhcmUgbm8gbG9uZ2VyIG9wdGltYWwsIGFzCisgICAqICAgdGhleSBoYXZlIGJlZW4gZGVzaWduZWQgZm9yIGJsYWNrIG9uIHdoaXRlIHJlbmRlcmluZyB3aGlsZSBsYWNraW5nCisgICAqICAgZ2FtbWEgY29ycmVjdGlvbi4gIFRvIHByZXNlcnZlIGNvbG9yIG5ldXRyYWxpdHksIHdlaWdodHMgZm9yIGEgRklSNQorICAgKiAgIGZpbHRlciBzaG91bGQgYmUgY2hvc2VuIGFjY29yZGluZyB0byB0d28gZnJlZSBwYXJhbWV0ZXJzIGBhJyBhbmQgYGMnLAorICAgKiAgIGFuZCB0aGUgRklSIHdlaWdodHMgc2hvdWxkIGJlCisgICAqCisgICAqICAgeworICAgKiAgICAgW2EgLSBjLCBhICsgYywgMiAqIGEsIGEgKyBjLCBhIC0gY10gICAgLgorICAgKiAgIH0KKyAgICoKKyAgICogICBUaGlzIGZvcm11bGEgZ2VuZXJhdGVzIGVxdWFsIHdlaWdodHMgZm9yIGFsbCB0aGUgY29sb3IgcHJpbWFyaWVzCisgICAqICAgYWNyb3NzIHRoZSBmaWx0ZXIga2VybmVsLCB3aGljaCBtYWtlcyBpdCBjb2xvcmxlc3MuICBPbmUgc3VnZ2VzdGVkCisgICAqICAgc2V0IG9mIHdlaWdodHMgaXMKKyAgICoKKyAgICogICB7CisgICAqICAgICBbMHgxMCwgMHg1MCwgMHg2MCwgMHg1MCwgMHgxMF0gICAgLAorICAgKiAgIH0KKyAgICoKKyAgICogICB3aGVyZSBgYScgaGFzIHZhbHVlIDB4MzAgYW5kIGBiJyB2YWx1ZSAweDIwLiAgVGhlIHdlaWdodHMgaW4gZmlsdGVyCisgICAqICAgbWF5IGhhdmUgYSBzdW0gbGFyZ2VyIHRoYW4gMHgxMDAsIHdoaWNoIGluY3JlYXNlcyBjb2xvcmF0aW9uIHNsaWdodGx5CisgICAqICAgYnV0IGFsc28gaW1wcm92ZXMgY29udHJhc3QuCisgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgRlRfTGNkRmlsdGVyCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGxpc3Qgb2YgdmFsdWVzIHRvIGlkZW50aWZ5IHZhcmlvdXMgdHlwZXMgb2YgTENEIGZpbHRlcnMuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgRlRfTENEX0ZJTFRFUl9OT05FIDo6CisgICAqICAgICBEbyBub3QgcGVyZm9ybSBmaWx0ZXJpbmcuICBXaGVuIHVzZWQgd2l0aCBzdWJwaXhlbCByZW5kZXJpbmcsIHRoaXMKKyAgICogICAgIHJlc3VsdHMgaW4gc29tZXRpbWVzIHNldmVyZSBjb2xvciBmcmluZ2VzLgorICAgKgorICAgKiAgIEZUX0xDRF9GSUxURVJfREVGQVVMVCA6OgorICAgKiAgICAgVGhlIGRlZmF1bHQgZmlsdGVyIHJlZHVjZXMgY29sb3IgZnJpbmdlcyBjb25zaWRlcmFibHksIGF0IHRoZSBjb3N0CisgICAqICAgICBvZiBhIHNsaWdodCBibHVycmluZXNzIGluIHRoZSBvdXRwdXQuCisgICAqCisgICAqICAgRlRfTENEX0ZJTFRFUl9MSUdIVCA6OgorICAgKiAgICAgVGhlIGxpZ2h0IGZpbHRlciBpcyBhIHZhcmlhbnQgdGhhdCBwcm9kdWNlcyBsZXNzIGJsdXJyaW5lc3MgYXQgdGhlCisgICAqICAgICBjb3N0IG9mIHNsaWdodGx5IG1vcmUgY29sb3IgZnJpbmdlcyB0aGFuIHRoZSBkZWZhdWx0IG9uZS4gIEl0IG1pZ2h0CisgICAqICAgICBiZSBiZXR0ZXIsIGRlcGVuZGluZyBvbiB0YXN0ZSwgeW91ciBtb25pdG9yLCBvciB5b3VyIHBlcnNvbmFsIHZpc2lvbi4KKyAgICoKKyAgICogICBGVF9MQ0RfRklMVEVSX0xFR0FDWSA6OgorICAgKiAgICAgVGhpcyBmaWx0ZXIgY29ycmVzcG9uZHMgdG8gdGhlIG9yaWdpbmFsIGxpYlhmdCBjb2xvciBmaWx0ZXIuICBJdAorICAgKiAgICAgcHJvdmlkZXMgaGlnaCBjb250cmFzdCBvdXRwdXQgYnV0IGNhbiBleGhpYml0IHJlYWxseSBiYWQgY29sb3IKKyAgICogICAgIGZyaW5nZXMgaWYgZ2x5cGhzIGFyZSBub3QgZXh0cmVtZWx5IHdlbGwgaGludGVkIHRvIHRoZSBwaXhlbCBncmlkLgorICAgKiAgICAgSW4gb3RoZXIgd29yZHMsIGl0IG9ubHkgd29ya3Mgd2VsbCBpZiB0aGUgVHJ1ZVR5cGUgYnl0ZWNvZGUKKyAgICogICAgIGludGVycHJldGVyIGlzIGVuYWJsZWQgKmFuZCogaGlnaC1xdWFsaXR5IGhpbnRlZCBmb250cyBhcmUgdXNlZC4KKyAgICoKKyAgICogICAgIFRoaXMgZmlsdGVyIGlzIG9ubHkgcHJvdmlkZWQgZm9yIGNvbXBhcmlzb24gcHVycG9zZXMsIGFuZCBtaWdodCBiZQorICAgKiAgICAgZGlzYWJsZWQgb3Igc3RheSB1bnN1cHBvcnRlZCBpbiB0aGUgZnV0dXJlLgorICAgKgorICAgKiBAc2luY2U6CisgICAqICAgMi4zLjAKKyAgICovCisgIHR5cGVkZWYgZW51bSAgRlRfTGNkRmlsdGVyXworICB7CisgICAgRlRfTENEX0ZJTFRFUl9OT05FICAgID0gMCwKKyAgICBGVF9MQ0RfRklMVEVSX0RFRkFVTFQgPSAxLAorICAgIEZUX0xDRF9GSUxURVJfTElHSFQgICA9IDIsCisgICAgRlRfTENEX0ZJTFRFUl9MRUdBQ1kgID0gMTYsCisKKyAgICBGVF9MQ0RfRklMVEVSX01BWCAgIC8qIGRvIG5vdCByZW1vdmUgKi8KKworICB9IEZUX0xjZEZpbHRlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuYzoKKyAgICogICBGVF9MaWJyYXJ5X1NldExjZEZpbHRlcgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGFwcGx5IGNvbG9yIGZpbHRlcmluZyB0byBMQ0QgZGVjaW1hdGVkCisgICAqICAgYml0bWFwcywgbGlrZSB0aGUgb25lcyB1c2VkIHdoZW4gY2FsbGluZyBARlRfUmVuZGVyX0dseXBoIHdpdGgKKyAgICogICBARlRfUkVOREVSX01PREVfTENEIG9yIEBGVF9SRU5ERVJfTU9ERV9MQ0RfVi4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGxpYnJhcnkgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgbGlicmFyeSBpbnN0YW5jZS4KKyAgICoKKyAgICogICBmaWx0ZXIgOjoKKyAgICogICAgIFRoZSBmaWx0ZXIgdHlwZS4KKyAgICoKKyAgICogICAgIFlvdSBjYW4gdXNlIEBGVF9MQ0RfRklMVEVSX05PTkUgaGVyZSB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZSwgb3IKKyAgICogICAgIEBGVF9MQ0RfRklMVEVSX0RFRkFVTFQgdG8gdXNlIGEgZGVmYXVsdCBmaWx0ZXIgdGhhdCBzaG91bGQgd29yaworICAgKiAgICAgd2VsbCBvbiBtb3N0IExDRCBzY3JlZW5zLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoaXMgZmVhdHVyZSBpcyBhbHdheXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIENsaWVudHMgbXVzdCBtYWtlIGFuCisgICAqICAgZXhwbGljaXQgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHdpdGggYSBgZmlsdGVyJyB2YWx1ZSBvdGhlciB0aGFuCisgICAqICAgQEZUX0xDRF9GSUxURVJfTk9ORSBpbiBvcmRlciB0byBlbmFibGUgaXQuCisgICAqCisgICAqICAgRHVlIHRvICpQQVRFTlRTKiBjb3ZlcmluZyBzdWJwaXhlbCByZW5kZXJpbmcsIHRoaXMgZnVuY3Rpb24gZG9lc24ndAorICAgKiAgIGRvIGFueXRoaW5nIGV4Y2VwdCByZXR1cm5pbmcgYEZUX0Vycl9VbmltcGxlbWVudGVkX0ZlYXR1cmUnIGlmIHRoZQorICAgKiAgIGNvbmZpZ3VyYXRpb24gbWFjcm8gRlRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9SRU5ERVJJTkcgaXMgbm90CisgICAqICAgZGVmaW5lZCBpbiB5b3VyIGJ1aWxkIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCBzaG91bGQgY29ycmVzcG9uZCB0byBhbGwKKyAgICogICBkZWZhdWx0IGJ1aWxkcyBvZiBGcmVlVHlwZS4KKyAgICoKKyAgICogICBUaGUgZmlsdGVyIGFmZmVjdHMgZ2x5cGggYml0bWFwcyByZW5kZXJlZCB0aHJvdWdoIEBGVF9SZW5kZXJfR2x5cGgsCisgICAqICAgQEZUX091dGxpbmVfR2V0X0JpdG1hcCwgQEZUX0xvYWRfR2x5cGgsIGFuZCBARlRfTG9hZF9DaGFyLgorICAgKgorICAgKiAgIEl0IGRvZXMgX25vdF8gYWZmZWN0IHRoZSBvdXRwdXQgb2YgQEZUX091dGxpbmVfUmVuZGVyIGFuZAorICAgKiAgIEBGVF9PdXRsaW5lX0dldF9CaXRtYXAuCisgICAqCisgICAqICAgSWYgdGhpcyBmZWF0dXJlIGlzIGFjdGl2YXRlZCwgdGhlIGRpbWVuc2lvbnMgb2YgTENEIGdseXBoIGJpdG1hcHMgYXJlCisgICAqICAgZWl0aGVyIGxhcmdlciBvciB0YWxsZXIgdGhhbiB0aGUgZGltZW5zaW9ucyBvZiB0aGUgY29ycmVzcG9uZGluZworICAgKiAgIG91dGxpbmUgd2l0aCByZWdhcmRzIHRvIHRoZSBwaXhlbCBncmlkLiAgRm9yIGV4YW1wbGUsIGZvcgorICAgKiAgIEBGVF9SRU5ERVJfTU9ERV9MQ0QsIHRoZSBmaWx0ZXIgYWRkcyB1cCB0byAzfnBpeGVscyB0byB0aGUgbGVmdCwgYW5kCisgICAqICAgdXAgdG8gM35waXhlbHMgdG8gdGhlIHJpZ2h0LgorICAgKgorICAgKiAgIFRoZSBiaXRtYXAgb2Zmc2V0IHZhbHVlcyBhcmUgYWRqdXN0ZWQgY29ycmVjdGx5LCBzbyBjbGllbnRzIHNob3VsZG4ndAorICAgKiAgIG5lZWQgdG8gbW9kaWZ5IHRoZWlyIGxheW91dCBhbmQgZ2x5cGggcG9zaXRpb25pbmcgY29kZSB3aGVuIGVuYWJsaW5nCisgICAqICAgdGhlIGZpbHRlci4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMy4wCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfTGlicmFyeV9TZXRMY2RGaWx0ZXIoIEZUX0xpYnJhcnkgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xjZEZpbHRlciAgZmlsdGVyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmM6CisgICAqICAgRlRfTGlicmFyeV9TZXRMY2RGaWx0ZXJXZWlnaHRzCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBVc2UgdGhpcyBmdW5jdGlvbiB0byBvdmVycmlkZSB0aGUgZmlsdGVyIHdlaWdodHMgc2VsZWN0ZWQgYnkKKyAgICogICBARlRfTGlicmFyeV9TZXRMY2RGaWx0ZXIuICBCeSBkZWZhdWx0LCBGcmVlVHlwZSB1c2VzIHRoZSBxdWludHVwbGUKKyAgICogICAoMHgwMCwgMHg1NSwgMHg1NiwgMHg1NSwgMHgwMCkgZm9yIEZUX0xDRF9GSUxURVJfTElHSFQsIGFuZCAoMHgxMCwKKyAgICogICAweDQwLCAweDcwLCAweDQwLCAweDEwKSBmb3IgRlRfTENEX0ZJTFRFUl9ERUZBVUxUIGFuZAorICAgKiAgIEZUX0xDRF9GSUxURVJfTEVHQUNZLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgbGlicmFyeSA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBsaWJyYXJ5IGluc3RhbmNlLgorICAgKgorICAgKiAgIHdlaWdodHMgOjoKKyAgICogICAgIEEgcG9pbnRlciB0byBhbiBhcnJheTsgdGhlIGZ1bmN0aW9uIGNvcGllcyB0aGUgZmlyc3QgZml2ZSBieXRlcyBhbmQKKyAgICogICAgIHVzZXMgdGhlbSB0byBzcGVjaWZ5IHRoZSBmaWx0ZXIgd2VpZ2h0cy4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBEdWUgdG8gKlBBVEVOVFMqIGNvdmVyaW5nIHN1YnBpeGVsIHJlbmRlcmluZywgdGhpcyBmdW5jdGlvbiBkb2Vzbid0CisgICAqICAgZG8gYW55dGhpbmcgZXhjZXB0IHJldHVybmluZyBgRlRfRXJyX1VuaW1wbGVtZW50ZWRfRmVhdHVyZScgaWYgdGhlCisgICAqICAgY29uZmlndXJhdGlvbiBtYWNybyBGVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX1JFTkRFUklORyBpcyBub3QKKyAgICogICBkZWZpbmVkIGluIHlvdXIgYnVpbGQgb2YgdGhlIGxpYnJhcnksIHdoaWNoIHNob3VsZCBjb3JyZXNwb25kIHRvIGFsbAorICAgKiAgIGRlZmF1bHQgYnVpbGRzIG9mIEZyZWVUeXBlLgorICAgKgorICAgKiAgIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgQEZUX0xpYnJhcnlfU2V0TGNkRmlsdGVyIHRvIGhhdmUKKyAgICogICBhbnkgZWZmZWN0LgorICAgKgorICAgKiBAc2luY2U6CisgICAqICAgMi40LjAKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9MaWJyYXJ5X1NldExjZEZpbHRlcldlaWdodHMoIEZUX0xpYnJhcnkgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgICp3ZWlnaHRzICk7CisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUX0xDRF9GSUxURVJfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0bGlzdC5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjE4OTc4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGxpc3QuaApAQCAtMCwwICsxLDI3NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRsaXN0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEdlbmVyaWMgbGlzdCBzdXBwb3J0IGZvciBGcmVlVHlwZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDMsIDIwMDcsIDIwMTAgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGZ1bmN0aW9ucyByZWxhdGl2ZSB0byBsaXN0IHByb2Nlc3NpbmcuICBJdHMgICAgICovCisgIC8qICBkYXRhIHN0cnVjdHVyZXMgYXJlIGRlZmluZWQgaW4gYGZyZWV0eXBlLmgnLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUTElTVF9IX18KKyNkZWZpbmUgX19GVExJU1RfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaXN0X3Byb2Nlc3NpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMaXN0IFByb2Nlc3NpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTaW1wbGUgbWFuYWdlbWVudCBvZiBsaXN0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdmFyaW91cyBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGxpc3QgICAgICAgICAgKi8KKyAgLyogICAgcHJvY2Vzc2luZyB1c2luZyBkb3VibHktbGlua2VkIG5vZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3JkZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3ROb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0UmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdE5vZGVSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0FkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9JbnNlcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X1JlbW92ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9VcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfSXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9GaW5hbGl6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfRGVzdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0ZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGaW5kIHRoZSBsaXN0IG5vZGUgZm9yIGEgZ2l2ZW4gbGlzdGVkIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaXN0IDo6IEEgcG9pbnRlciB0byB0aGUgcGFyZW50IGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGF0YSA6OiBUaGUgYWRkcmVzcyBvZiB0aGUgbGlzdGVkIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTGlzdCBub2RlLiAgTlVMTCBpZiBpdCB3YXNuJ3QgZm91bmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0xpc3ROb2RlICkKKyAgRlRfTGlzdF9GaW5kKCBGVF9MaXN0ICBsaXN0LAorICAgICAgICAgICAgICAgIHZvaWQqICAgIGRhdGEgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfQWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFwcGVuZCBhbiBlbGVtZW50IHRvIHRoZSBlbmQgb2YgYSBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpc3QgOjogQSBwb2ludGVyIHRvIHRoZSBwYXJlbnQgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBub2RlIDo6IFRoZSBub2RlIHRvIGFwcGVuZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX0xpc3RfQWRkKCBGVF9MaXN0ICAgICAgbGlzdCwKKyAgICAgICAgICAgICAgIEZUX0xpc3ROb2RlICBub2RlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0luc2VydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbnNlcnQgYW4gZWxlbWVudCBhdCB0aGUgaGVhZCBvZiBhIGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaXN0IDo6IEEgcG9pbnRlciB0byBwYXJlbnQgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbm9kZSA6OiBUaGUgbm9kZSB0byBpbnNlcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9MaXN0X0luc2VydCggRlRfTGlzdCAgICAgIGxpc3QsCisgICAgICAgICAgICAgICAgICBGVF9MaXN0Tm9kZSAgbm9kZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9SZW1vdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmVtb3ZlIGEgbm9kZSBmcm9tIGEgbGlzdC4gIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGVjayB3aGV0aGVyICAgICovCisgIC8qICAgIHRoZSBub2RlIGlzIGluIHRoZSBsaXN0ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5vZGUgOjogVGhlIG5vZGUgdG8gcmVtb3ZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpc3QgOjogQSBwb2ludGVyIHRvIHRoZSBwYXJlbnQgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfTGlzdF9SZW1vdmUoIEZUX0xpc3QgICAgICBsaXN0LAorICAgICAgICAgICAgICAgICAgRlRfTGlzdE5vZGUgIG5vZGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfVXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE1vdmUgYSBub2RlIHRvIHRoZSBoZWFkL3RvcCBvZiBhIGxpc3QuICBVc2VkIHRvIG1haW50YWluIExSVSAgICAgICAqLworICAvKiAgICBsaXN0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaXN0IDo6IEEgcG9pbnRlciB0byB0aGUgcGFyZW50IGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbm9kZSA6OiBUaGUgbm9kZSB0byBtb3ZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9MaXN0X1VwKCBGVF9MaXN0ICAgICAgbGlzdCwKKyAgICAgICAgICAgICAgRlRfTGlzdE5vZGUgIG5vZGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfSXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIEZUX0xpc3QgaXRlcmF0b3IgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBhIGxpc3QgcGFyc2UgICAqLworICAvKiAgICBieSBARlRfTGlzdF9JdGVyYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBub2RlIDo6IFRoZSBjdXJyZW50IGl0ZXJhdGlvbiBsaXN0IG5vZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgOjogQSB0eXBlbGVzcyBwb2ludGVyIHBhc3NlZCB0byBARlRfTGlzdF9JdGVyYXRlLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgIENhbiBiZSB1c2VkIHRvIHBvaW50IHRvIHRoZSBpdGVyYXRpb24ncyBzdGF0ZS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9MaXN0X0l0ZXJhdG9yKSggRlRfTGlzdE5vZGUgIG5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICB1c2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0l0ZXJhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQYXJzZSBhIGxpc3QgYW5kIGNhbGxzIGEgZ2l2ZW4gaXRlcmF0b3IgZnVuY3Rpb24gb24gZWFjaCBlbGVtZW50LiAgKi8KKyAgLyogICAgTm90ZSB0aGF0IHBhcnNpbmcgaXMgc3RvcHBlZCBhcyBzb29uIGFzIG9uZSBvZiB0aGUgaXRlcmF0b3IgY2FsbHMgICovCisgIC8qICAgIHJldHVybnMgYSBub24temVybyB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpc3QgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpdGVyYXRvciA6OiBBbiBpdGVyYXRvciBmdW5jdGlvbiwgY2FsbGVkIG9uIGVhY2ggbm9kZSBvZiB0aGUgbGlzdC4gKi8KKyAgLyogICAgdXNlciAgICAgOjogQSB1c2VyLXN1cHBsaWVkIGZpZWxkIHdoaWNoIGlzIHBhc3NlZCBhcyB0aGUgc2Vjb25kICAgICovCisgIC8qICAgICAgICAgICAgICAgIGFyZ3VtZW50IHRvIHRoZSBpdGVyYXRvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSByZXN1bHQgKGEgRnJlZVR5cGUgZXJyb3IgY29kZSkgb2YgdGhlIGxhc3QgaXRlcmF0b3IgY2FsbC4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0xpc3RfSXRlcmF0ZSggRlRfTGlzdCAgICAgICAgICAgbGlzdCwKKyAgICAgICAgICAgICAgICAgICBGVF9MaXN0X0l0ZXJhdG9yICBpdGVyYXRvciwKKyAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICB1c2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0Rlc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBARlRfTGlzdCBpdGVyYXRvciBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIGEgbGlzdCAgICAgICAgKi8KKyAgLyogICAgZmluYWxpemF0aW9uIGJ5IEBGVF9MaXN0X0ZpbmFsaXplIHRvIGRlc3Ryb3kgYWxsIGVsZW1lbnRzIGluIGEgICAgICovCisgIC8qICAgIGdpdmVuIGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN5c3RlbSA6OiBUaGUgY3VycmVudCBzeXN0ZW0gb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGF0YSAgIDo6IFRoZSBjdXJyZW50IG9iamVjdCB0byBkZXN0cm95LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1c2VyICAgOjogQSB0eXBlbGVzcyBwb2ludGVyIHBhc3NlZCB0byBARlRfTGlzdF9JdGVyYXRlLiAgSXQgY2FuICAgKi8KKyAgLyogICAgICAgICAgICAgIGJlIHVzZWQgdG8gcG9pbnQgdG8gdGhlIGl0ZXJhdGlvbidzIHN0YXRlLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9MaXN0X0Rlc3RydWN0b3IpKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICB1c2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0ZpbmFsaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZXN0cm95IGFsbCBlbGVtZW50cyBpbiB0aGUgbGlzdCBhcyB3ZWxsIGFzIHRoZSBsaXN0IGl0c2VsZi4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaXN0ICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlc3Ryb3kgOjogQSBsaXN0IGRlc3RydWN0b3IgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gZWFjaCBlbGVtZW50ICAqLworICAvKiAgICAgICAgICAgICAgIG9mIHRoZSBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSAgOjogVGhlIGN1cnJlbnQgbWVtb3J5IG9iamVjdCB3aGljaCBoYW5kbGVzIGRlYWxsb2NhdGlvbi4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciAgICA6OiBBIHVzZXItc3VwcGxpZWQgZmllbGQgd2hpY2ggaXMgcGFzc2VkIGFzIHRoZSBsYXN0ICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgYXJndW1lbnQgdG8gdGhlIGRlc3RydWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gZXhwZWN0cyB0aGF0IGFsbCBub2RlcyBhZGRlZCBieSBARlRfTGlzdF9BZGQgb3IgICAgICAqLworICAvKiAgICBARlRfTGlzdF9JbnNlcnQgaGF2ZSBiZWVuIGR5bmFtaWNhbGx5IGFsbG9jYXRlZC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX0xpc3RfRmluYWxpemUoIEZUX0xpc3QgICAgICAgICAgICAgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgRlRfTGlzdF9EZXN0cnVjdG9yICBkZXN0cm95LAorICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgICAgICB1c2VyICk7CisKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRMSVNUX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGx6dy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdGx6dy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjRhODIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0bHp3LmgKQEAgLTAsMCArMSw5OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRsencuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIExaVy1jb21wcmVzc2VkIHN0cmVhbSBzdXBwb3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA0LCAyMDA2IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRMWldfSF9fCisjZGVmaW5lIF9fRlRMWldfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGx6dyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExaVyBTdHJlYW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzaW5nIExaVy1jb21wcmVzc2VkIGZvbnQgZmlsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgZGVjbGFyYXRpb24gb2YgTFpXLXNwZWNpZmljIGZ1bmN0aW9ucy4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICBGVF9TdHJlYW1fT3BlbkxaVworICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgT3BlbiBhIG5ldyBzdHJlYW0gdG8gcGFyc2UgTFpXLWNvbXByZXNzZWQgZm9udCBmaWxlcy4gIFRoaXMgaXMKKyAgKiAgIG1haW5seSB1c2VkIHRvIHN1cHBvcnQgdGhlIGNvbXByZXNzZWQgYCoucGNmLlonIGZvbnRzIHRoYXQgY29tZQorICAqICAgd2l0aCBYRnJlZTg2LgorICAqCisgICogQGlucHV0OgorICAqICAgc3RyZWFtIDo6IFRoZSB0YXJnZXQgZW1iZWRkaW5nIHN0cmVhbS4KKyAgKgorICAqICAgc291cmNlIDo6IFRoZSBzb3VyY2Ugc3RyZWFtLgorICAqCisgICogQHJldHVybjoKKyAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoZSBzb3VyY2Ugc3RyZWFtIG11c3QgYmUgb3BlbmVkIF9iZWZvcmVfIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAgKgorICAqICAgQ2FsbGluZyB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gYEZUX1N0cmVhbV9DbG9zZScgb24gdGhlIG5ldyBzdHJlYW0gd2lsbAorICAqICAgKm5vdCogY2FsbCBgRlRfU3RyZWFtX0Nsb3NlJyBvbiB0aGUgc291cmNlIHN0cmVhbS4gIE5vbmUgb2YgdGhlIHN0cmVhbQorICAqICAgb2JqZWN0cyB3aWxsIGJlIHJlbGVhc2VkIHRvIHRoZSBoZWFwLgorICAqCisgICogICBUaGUgc3RyZWFtIGltcGxlbWVudGF0aW9uIGlzIHZlcnkgYmFzaWMgYW5kIHJlc2V0cyB0aGUgZGVjb21wcmVzc2lvbgorICAqICAgcHJvY2VzcyBlYWNoIHRpbWUgc2Vla2luZyBiYWNrd2FyZHMgaXMgbmVlZGVkIHdpdGhpbiB0aGUgc3RyZWFtCisgICoKKyAgKiAgIEluIGNlcnRhaW4gYnVpbGRzIG9mIHRoZSBsaWJyYXJ5LCBMWlcgY29tcHJlc3Npb24gcmVjb2duaXRpb24gaXMKKyAgKiAgIGF1dG9tYXRpY2FsbHkgaGFuZGxlZCB3aGVuIGNhbGxpbmcgQEZUX05ld19GYWNlIG9yIEBGVF9PcGVuX0ZhY2UuCisgICogICBUaGlzIG1lYW5zIHRoYXQgaWYgbm8gZm9udCBkcml2ZXIgaXMgY2FwYWJsZSBvZiBoYW5kbGluZyB0aGUgcmF3CisgICogICBjb21wcmVzc2VkIGZpbGUsIHRoZSBsaWJyYXJ5IHdpbGwgdHJ5IHRvIG9wZW4gYSBMWlcgc3RyZWFtIGZyb20gaXQKKyAgKiAgIGFuZCByZS1vcGVuIHRoZSBmYWNlIHdpdGggaXQuCisgICoKKyAgKiAgIFRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBgRlRfRXJyX1VuaW1wbGVtZW50ZWRfRmVhdHVyZScgaWYgeW91ciBidWlsZAorICAqICAgb2YgRnJlZVR5cGUgd2FzIG5vdCBjb21waWxlZCB3aXRoIExaVyBzdXBwb3J0LgorICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX09wZW5MWlcoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzb3VyY2UgKTsKKworIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVExaV19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRtYWMuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRtYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDBmM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdG1hYy5oCkBAIC0wLDAgKzEsMjc0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdG1hYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQWRkaXRpb25hbCBNYWMtc3BlY2lmaWMgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwNCwgMjAwNiwgMjAwNyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIEp1c3QgdmFuIFJvc3N1bSwgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogTk9URTogSW5jbHVkZSB0aGlzIGZpbGUgYWZ0ZXIgPGZyZWV0eXBlL2ZyZWV0eXBlLmg+IGFuZCBhZnRlciBhbnkgICAgICAgKi8KKy8qICAgICAgIE1hYy1zcGVjaWZpYyBoZWFkZXJzIChiZWNhdXNlIHRoaXMgaGVhZGVyIHVzZXMgTWFjIHR5cGVzIHN1Y2ggYXMgICovCisvKiAgICAgICBIYW5kbGUsIEZTU3BlYywgRlNSZWYsIGV0Yy4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUTUFDX0hfXworI2RlZmluZSBfX0ZUTUFDX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKy8qIGdjYy0zLjQuMSBhbmQgbGF0ZXIgY2FuIHdhcm4gYWJvdXQgZnVuY3Rpb25zIHRhZ2dlZCBhcyBkZXByZWNhdGVkICovCisjaWZuZGVmIEZUX0RFUFJFQ0FURURfQVRUUklCVVRFCisjaWYgZGVmaW5lZChfX0dOVUNfXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFwKKyAgICAoKF9fR05VQ19fID49IDQpIHx8ICgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDEpKSkKKyNkZWZpbmUgRlRfREVQUkVDQVRFRF9BVFRSSUJVVEUgIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQpKQorI2Vsc2UKKyNkZWZpbmUgRlRfREVQUkVDQVRFRF9BVFRSSUJVVEUKKyNlbmRpZgorI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYWNfc3BlY2lmaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBNYWMgU3BlY2lmaWMgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBPbmx5IGF2YWlsYWJsZSBvbiB0aGUgTWFjaW50b3NoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiBGcmVlVHlwZSBpcyAgICAgICAgKi8KKyAgLyogICAgY29tcGlsZWQgb24gYSBNYWNpbnRvc2guICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX05ld19GYWNlX0Zyb21fRk9ORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENyZWF0ZSBhIG5ldyBmYWNlIG9iamVjdCBmcm9tIGEgRk9ORCByZXNvdXJjZS4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgICAgOjogQSBoYW5kbGUgdG8gdGhlIGxpYnJhcnkgcmVzb3VyY2UuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvbmQgICAgICAgOjogQSBGT05EIHJlc291cmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pbmRleCA6OiBPbmx5IHN1cHBvcnRlZCBmb3IgdGhlIC0xIGBzYW5pdHkgY2hlY2snIHNwZWNpYWwgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgY2FzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFmYWNlICAgICAgOjogQSBoYW5kbGUgdG8gYSBuZXcgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY3JlYXRlIEBGVF9GYWNlIG9iamVjdHMgZnJvbSBmb250cyAgICAqLworICAvKiAgICB0aGF0IGFyZSBpbnN0YWxsZWQgaW4gdGhlIHN5c3RlbSBhcyBmb2xsb3dzLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGZvbmQgPSBHZXRSZXNvdXJjZSggJ0ZPTkQnLCBmb250TmFtZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBlcnJvciA9IEZUX05ld19GYWNlX0Zyb21fRk9ORCggbGlicmFyeSwgZm9uZCwgMCwgJmZhY2UgKTsgICAgICAgICovCisgIC8qICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX05ld19GYWNlX0Zyb21fRk9ORCggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGUgICAgICBmb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAqYWZhY2UgKQorICAgICAgICAgICAgICAgICAgICAgICBGVF9ERVBSRUNBVEVEX0FUVFJJQlVURTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiBhbiBGU1NwZWMgZm9yIHRoZSBkaXNrIGZpbGUgY29udGFpbmluZyB0aGUgbmFtZWQgZm9udC4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvbnROYW1lICAgOjogTWFjIE9TIG5hbWUgb2YgdGhlIGZvbnQgKGUuZy4sIFRpbWVzIE5ldyBSb21hbiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIEJvbGQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXRoU3BlYyAgIDo6IEZTU3BlYyB0byB0aGUgZmlsZS4gIEZvciBwYXNzaW5nIHRvICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBARlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX2luZGV4IDo6IEluZGV4IG9mIHRoZSBmYWNlLiAgRm9yIHBhc3NpbmcgdG8gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBARlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0RmlsZV9Gcm9tX01hY19OYW1lKCBjb25zdCBjaGFyKiAgZm9udE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNTcGVjKiAgICAgIHBhdGhTcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICAgICBmYWNlX2luZGV4ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfREVQUkVDQVRFRF9BVFRSSUJVVEU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRGaWxlX0Zyb21fTWFjX0FUU19OYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gYW4gRlNTcGVjIGZvciB0aGUgZGlzayBmaWxlIGNvbnRhaW5pbmcgdGhlIG5hbWVkIGZvbnQuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb250TmFtZSAgIDo6IE1hYyBPUyBuYW1lIG9mIHRoZSBmb250IGluIEFUUyBmcmFtZXdvcmsuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXRoU3BlYyAgIDo6IEZTU3BlYyB0byB0aGUgZmlsZS4gRm9yIHBhc3NpbmcgdG8gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBARlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX2luZGV4IDo6IEluZGV4IG9mIHRoZSBmYWNlLiBGb3IgcGFzc2luZyB0byAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBARlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0RmlsZV9Gcm9tX01hY19BVFNfTmFtZSggY29uc3QgY2hhciogIGZvbnROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1NwZWMqICAgICAgcGF0aFNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICAgICBmYWNlX2luZGV4ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0RFUFJFQ0FURURfQVRUUklCVVRFOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0RmlsZVBhdGhfRnJvbV9NYWNfQVRTX05hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0dXJuIGEgcGF0aG5hbWUgb2YgdGhlIGRpc2sgZmlsZSBhbmQgZmFjZSBpbmRleCBmb3IgZ2l2ZW4gZm9udCAgICovCisgIC8qICAgIG5hbWUgd2hpY2ggaXMgaGFuZGxlZCBieSBBVFMgZnJhbWV3b3JrLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvbnROYW1lICAgIDo6IE1hYyBPUyBuYW1lIG9mIHRoZSBmb250IGluIEFUUyBmcmFtZXdvcmsuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhdGggICAgICAgIDo6IEJ1ZmZlciB0byBzdG9yZSBwYXRobmFtZSBvZiB0aGUgZmlsZS4gIEZvciBwYXNzaW5nICAqLworICAvKiAgICAgICAgICAgICAgICAgICB0byBARlRfTmV3X0ZhY2UuICBUaGUgY2xpZW50IG11c3QgYWxsb2NhdGUgdGhpcyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgYnVmZmVyIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhQYXRoU2l6ZSA6OiBMZW5ndGhzIG9mIHRoZSBidWZmZXIgYHBhdGgnIHRoYXQgY2xpZW50IGFsbG9jYXRlZC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2VfaW5kZXggIDo6IEluZGV4IG9mIHRoZSBmYWNlLiAgRm9yIHBhc3NpbmcgdG8gQEZUX05ld19GYWNlLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldEZpbGVQYXRoX0Zyb21fTWFjX0FUU19OYW1lKCBjb25zdCBjaGFyKiAgZm9udE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSW50OCogICAgICAgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJbnQzMiAgICAgICBtYXhQYXRoU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICAgICBmYWNlX2luZGV4ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9ERVBSRUNBVEVEX0FUVFJJQlVURTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX05ld19GYWNlX0Zyb21fRlNTcGVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENyZWF0ZSBhIG5ldyBmYWNlIG9iamVjdCBmcm9tIGEgZ2l2ZW4gcmVzb3VyY2UgYW5kIHR5cGVmYWNlIGluZGV4ICAqLworICAvKiAgICB1c2luZyBhbiBGU1NwZWMgdG8gdGhlIGZvbnQgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IHJlc291cmNlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzcGVjICAgICAgIDo6IEZTU3BlYyB0byB0aGUgZm9udCBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2VfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBmYWNlIHdpdGhpbiB0aGUgcmVzb3VyY2UuICBUaGUgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGZpcnN0IGZhY2UgaGFzIGluZGV4fjAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFmYWNlICAgICAgOjogQSBoYW5kbGUgdG8gYSBuZXcgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9OZXdfRmFjZV9Gcm9tX0ZTU3BlYyBpcyBpZGVudGljYWwgdG8gQEZUX05ld19GYWNlIGV4Y2VwdCAgICAgICAqLworICAvKiAgICBpdCBhY2NlcHRzIGFuIEZTU3BlYyBpbnN0ZWFkIG9mIGEgcGF0aC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9OZXdfRmFjZV9Gcm9tX0ZTU3BlYyggRlRfTGlicmFyeSAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZTU3BlYyAgKnNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAqYWZhY2UgKQorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0RFUFJFQ0FURURfQVRUUklCVVRFOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTmV3X0ZhY2VfRnJvbV9GU1JlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ3JlYXRlIGEgbmV3IGZhY2Ugb2JqZWN0IGZyb20gYSBnaXZlbiByZXNvdXJjZSBhbmQgdHlwZWZhY2UgaW5kZXggICovCisgIC8qICAgIHVzaW5nIGFuIEZTUmVmIHRvIHRoZSBmb250IGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgICAgOjogQSBoYW5kbGUgdG8gdGhlIGxpYnJhcnkgcmVzb3VyY2UuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNwZWMgICAgICAgOjogRlNSZWYgdG8gdGhlIGZvbnQgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIGZhY2Ugd2l0aGluIHRoZSByZXNvdXJjZS4gIFRoZSAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgZmlyc3QgZmFjZSBoYXMgaW5kZXh+MC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWZhY2UgICAgICA6OiBBIGhhbmRsZSB0byBhIG5ldyBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX05ld19GYWNlX0Zyb21fRlNSZWYgaXMgaWRlbnRpY2FsIHRvIEBGVF9OZXdfRmFjZSBleGNlcHQgICAgICAgICovCisgIC8qICAgIGl0IGFjY2VwdHMgYW4gRlNSZWYgaW5zdGVhZCBvZiBhIHBhdGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX05ld19GYWNlX0Zyb21fRlNSZWYoIEZUX0xpYnJhcnkgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlNSZWYgICpyZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICphZmFjZSApCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9ERVBSRUNBVEVEX0FUVFJJQlVURTsKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19GVE1BQ19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRtbS5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdG1tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJhYWY0NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRtbS5oCkBAIC0wLDAgKzEsMzc4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdG1tLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgTXVsdGlwbGUgTWFzdGVyIGZvbnQgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMywgMjAwNCwgMjAwNiwgMjAwOSBieSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVE1NX0hfXworI2RlZmluZSBfX0ZUTU1fSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAidDF0YWJsZXMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG11bHRpcGxlX21hc3RlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE11bHRpcGxlIE1hc3RlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEhvdyB0byBtYW5hZ2UgTXVsdGlwbGUgTWFzdGVycyBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYW5kIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBtYW5hZ2UgTXVsdGlwbGUgICAgICAqLworICAvKiAgICBNYXN0ZXIgZm9udHMsIGkuZS4sIHRoZSBzZWxlY3Rpb24gb2Ygc3BlY2lmaWMgZGVzaWduIGluc3RhbmNlcyBieSAgKi8KKyAgLyogICAgc2V0dGluZyBkZXNpZ24gYXhpcyBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHZW9yZ2UgV2lsbGlhbXMgaGFzIGV4dGVuZGVkIHRoaXMgaW50ZXJmYWNlIHRvIG1ha2UgaXQgd29yayB3aXRoICAgKi8KKyAgLyogICAgYm90aCBUeXBlfjEgTXVsdGlwbGUgTWFzdGVycyBmb250cyBhbmQgR1ggZGlzdG9ydGFibGUgKHZhcikgICAgICAgICovCisgIC8qICAgIGZvbnRzLiAgU29tZSBvZiB0aGVzZSByb3V0aW5lcyBvbmx5IHdvcmsgd2l0aCBNTSBmb250cywgb3RoZXJzICAgICAqLworICAvKiAgICB3aWxsIHdvcmsgd2l0aCBib3RoIHR5cGVzLiAgVGhleSBhcmUgc2ltaWxhciBlbm91Z2ggdGhhdCBhICAgICAgICAgKi8KKyAgLyogICAgY29uc2lzdGVudCBpbnRlcmZhY2UgbWFrZXMgc2Vuc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX01NX0F4aXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2ltcGxlIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgZ2l2ZW4gYXhpcyBpbiBkZXNpZ24gc3BhY2UgZm9yICAqLworICAvKiAgICBNdWx0aXBsZSBNYXN0ZXJzIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIGNhbid0IGJlIHVzZWQgZm9yIEdYIHZhciBmb250cy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWUgICAgOjogVGhlIGF4aXMncyBuYW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWluaW11bSA6OiBUaGUgYXhpcydzIG1pbmltdW0gZGVzaWduIGNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhpbXVtIDo6IFRoZSBheGlzJ3MgbWF4aW11bSBkZXNpZ24gY29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9NTV9BeGlzXworICB7CisgICAgRlRfU3RyaW5nKiAgbmFtZTsKKyAgICBGVF9Mb25nICAgICBtaW5pbXVtOworICAgIEZUX0xvbmcgICAgIG1heGltdW07CisKKyAgfSBGVF9NTV9BeGlzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTXVsdGlfTWFzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCB0aGUgYXhlcyBhbmQgc3BhY2Ugb2YgYSBNdWx0aXBsZSBNYXN0ZXJzICovCisgIC8qICAgIGZvbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgY2FuJ3QgYmUgdXNlZCBmb3IgR1ggdmFyIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2F4aXMgICAgOjogTnVtYmVyIG9mIGF4ZXMuICBDYW5ub3QgZXhjZWVkfjQuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fZGVzaWducyA6OiBOdW1iZXIgb2YgZGVzaWduczsgc2hvdWxkIGJlIG5vcm1hbGx5IDJebnVtX2F4aXMgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgZXZlbiB0aG91Z2ggdGhlIFR5cGV+MSBzcGVjaWZpY2F0aW9uIHN0cmFuZ2VseSAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGFsbG93cyBmb3IgaW50ZXJtZWRpYXRlIGRlc2lnbnMgdG8gYmUgcHJlc2VudC4gVGhpcyAqLworICAvKiAgICAgICAgICAgICAgICAgICBudW1iZXIgY2Fubm90IGV4Y2VlZH4xNi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGF4aXMgICAgICAgIDo6IEEgdGFibGUgb2YgYXhpcyBkZXNjcmlwdG9ycy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX011bHRpX01hc3Rlcl8KKyAgeworICAgIEZUX1VJbnQgICAgIG51bV9heGlzOworICAgIEZUX1VJbnQgICAgIG51bV9kZXNpZ25zOworICAgIEZUX01NX0F4aXMgIGF4aXNbVDFfTUFYX01NX0FYSVNdOworCisgIH0gRlRfTXVsdGlfTWFzdGVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVmFyX0F4aXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzaW1wbGUgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYSBnaXZlbiBheGlzIGluIGRlc2lnbiBzcGFjZSBmb3IgICovCisgIC8qICAgIE11bHRpcGxlIE1hc3RlcnMgYW5kIEdYIHZhciBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWUgICAgOjogVGhlIGF4aXMncyBuYW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIE5vdCBhbHdheXMgbWVhbmluZ2Z1bCBmb3IgR1guICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1pbmltdW0gOjogVGhlIGF4aXMncyBtaW5pbXVtIGRlc2lnbiBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVmICAgICA6OiBUaGUgYXhpcydzIGRlZmF1bHQgZGVzaWduIGNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgRnJlZVR5cGUgY29tcHV0ZXMgbWVhbmluZ2Z1bCBkZWZhdWx0IHZhbHVlcyBmb3IgTU07IGl0ICAqLworICAvKiAgICAgICAgICAgICAgIGlzIHRoZW4gYW4gaW50ZWdlciB2YWx1ZSwgbm90IGluIDE2LjE2IGZvcm1hdC4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heGltdW0gOjogVGhlIGF4aXMncyBtYXhpbXVtIGRlc2lnbiBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFnICAgICA6OiBUaGUgYXhpcydzIHRhZyAodGhlIEdYIGVxdWl2YWxlbnQgdG8gYG5hbWUnKS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgRnJlZVR5cGUgcHJvdmlkZXMgZGVmYXVsdCB2YWx1ZXMgZm9yIE1NIGlmIHBvc3NpYmxlLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyaWQgICA6OiBUaGUgZW50cnkgaW4gYG5hbWUnIHRhYmxlIChhbm90aGVyIEdYIHZlcnNpb24gb2YgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgYG5hbWUnKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIE5vdCBtZWFuaW5nZnVsIGZvciBNTS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9WYXJfQXhpc18KKyAgeworICAgIEZUX1N0cmluZyogIG5hbWU7CisKKyAgICBGVF9GaXhlZCAgICBtaW5pbXVtOworICAgIEZUX0ZpeGVkICAgIGRlZjsKKyAgICBGVF9GaXhlZCAgICBtYXhpbXVtOworCisgICAgRlRfVUxvbmcgICAgdGFnOworICAgIEZUX1VJbnQgICAgIHN0cmlkOworCisgIH0gRlRfVmFyX0F4aXM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9WYXJfTmFtZWRfU3R5bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCBhIG5hbWVkIHN0eWxlIGluIGEgR1ggdmFyIGZvbnQuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIGNhbid0IGJlIHVzZWQgZm9yIE1NIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvb3JkcyA6OiBUaGUgZGVzaWduIGNvb3JkaW5hdGVzIGZvciB0aGlzIHN0eWxlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgVGhpcyBpcyBhbiBhcnJheSB3aXRoIG9uZSBlbnRyeSBmb3IgZWFjaCBheGlzLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmlkICA6OiBUaGUgZW50cnkgaW4gYG5hbWUnIHRhYmxlIGlkZW50aWZ5aW5nIHRoaXMgc3R5bGUuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1Zhcl9OYW1lZF9TdHlsZV8KKyAgeworICAgIEZUX0ZpeGVkKiAgY29vcmRzOworICAgIEZUX1VJbnQgICAgc3RyaWQ7CisKKyAgfSBGVF9WYXJfTmFtZWRfU3R5bGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NTV9WYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIHRoZSBheGVzIGFuZCBzcGFjZSBvZiBhIE11bHRpcGxlIE1hc3RlcnMgKi8KKyAgLyogICAgb3IgR1ggdmFyIGRpc3RvcnRhYmxlIGZvbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTb21lIGZpZWxkcyBhcmUgc3BlY2lmaWMgdG8gb25lIGZvcm1hdCBhbmQgbm90IHRvIHRoZSBvdGhlci4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fYXhpcyAgICAgICAgOjogVGhlIG51bWJlciBvZiBheGVzLiAgVGhlIG1heGltdW0gdmFsdWUgaXN+NCBmb3IgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIE1NOyBubyBsaW1pdCBpbiBHWC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fZGVzaWducyAgICAgOjogVGhlIG51bWJlciBvZiBkZXNpZ25zOyBzaG91bGQgYmUgbm9ybWFsbHkgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIDJebnVtX2F4aXMgZm9yIE1NIGZvbnRzLiAgTm90IG1lYW5pbmdmdWwgZm9yIEdYICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAod2hlcmUgZXZlcnkgZ2x5cGggY291bGQgaGF2ZSBhIGRpZmZlcmVudCAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGRlc2lnbnMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9uYW1lZHN0eWxlcyA6OiBUaGUgbnVtYmVyIG9mIG5hbWVkIHN0eWxlczsgb25seSBtZWFuaW5nZnVsIGZvciAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgR1ggd2hpY2ggYWxsb3dzIGNlcnRhaW4gZGVzaWduIGNvb3JkaW5hdGVzIHRvICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYSBzdHJpbmcgSUQgKGluIHRoZSBgbmFtZScgdGFibGUpICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggdGhlbS4gIFRoZSBmb250IGNhbiB0ZWxsIHRoZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgdXNlciB0aGF0LCBmb3IgZXhhbXBsZSwgV2VpZ2h0PTEuNSBpcyBgQm9sZCcuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGF4aXMgICAgICAgICAgICA6OiBBIHRhYmxlIG9mIGF4aXMgZGVzY3JpcHRvcnMuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgR1ggZm9udHMgY29udGFpbiBzbGlnaHRseSBtb3JlIGRhdGEgdGhhbiBNTS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWVkc3R5bGVzICAgICA6OiBBIHRhYmxlIG9mIG5hbWVkIHN0eWxlcy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgT25seSBtZWFuaW5nZnVsIHdpdGggR1guICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9NTV9WYXJfCisgIHsKKyAgICBGVF9VSW50ICAgICAgICAgICAgICBudW1fYXhpczsKKyAgICBGVF9VSW50ICAgICAgICAgICAgICBudW1fZGVzaWduczsKKyAgICBGVF9VSW50ICAgICAgICAgICAgICBudW1fbmFtZWRzdHlsZXM7CisgICAgRlRfVmFyX0F4aXMqICAgICAgICAgYXhpczsKKyAgICBGVF9WYXJfTmFtZWRfU3R5bGUqICBuYW1lZHN0eWxlOworCisgIH0gRlRfTU1fVmFyOworCisKKyAgLyogKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9NdWx0aV9NYXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBNdWx0aXBsZSBNYXN0ZXIgZGVzY3JpcHRvciBvZiBhIGdpdmVuIGZvbnQuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBjYW4ndCBiZSB1c2VkIHdpdGggR1ggZm9udHMuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYW1hc3RlciA6OiBUaGUgTXVsdGlwbGUgTWFzdGVycyBkZXNjcmlwdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0X011bHRpX01hc3RlciggRlRfRmFjZSAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfTXVsdGlfTWFzdGVyICAqYW1hc3RlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X01NX1ZhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0cmlldmUgdGhlIE11bHRpcGxlIE1hc3Rlci9HWCB2YXIgZGVzY3JpcHRvciBvZiBhIGdpdmVuIGZvbnQuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYW1hc3RlciA6OiBUaGUgTXVsdGlwbGUgTWFzdGVycy9HWCB2YXIgZGVzY3JpcHRvci4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgQWxsb2NhdGVzIGEgZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIHRoZSB1c2VyIG11c3QgZnJlZSAgICAqLworICAvKiAgICAgICAgICAgICAgIChhIHNpbmdsZSBjYWxsIHRvIEZUX0ZSRUUgd2lsbCBkbyBpdCkuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfTU1fVmFyKCBGVF9GYWNlICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgRlRfTU1fVmFyKiAgKmFtYXN0ZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NldF9NTV9EZXNpZ25fQ29vcmRpbmF0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZvciBNdWx0aXBsZSBNYXN0ZXJzIGZvbnRzLCBjaG9vc2UgYW4gaW50ZXJwb2xhdGVkIGZvbnQgZGVzaWduICAgICAqLworICAvKiAgICB0aHJvdWdoIGRlc2lnbiBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gY2FuJ3QgYmUgdXNlZCB3aXRoIEdYIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9jb29yZHMgOjogVGhlIG51bWJlciBvZiBkZXNpZ24gY29vcmRpbmF0ZXMgKG11c3QgYmUgZXF1YWwgdG8gICAqLworICAvKiAgICAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgYXhlcyBpbiB0aGUgZm9udCkuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvb3JkcyAgICAgOjogQW4gYXJyYXkgb2YgZGVzaWduIGNvb3JkaW5hdGVzLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1NldF9NTV9EZXNpZ25fQ29vcmRpbmF0ZXMoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyogIGNvb3JkcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2V0X1Zhcl9EZXNpZ25fQ29vcmRpbmF0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRm9yIE11bHRpcGxlIE1hc3RlciBvciBHWCBWYXIgZm9udHMsIGNob29zZSBhbiBpbnRlcnBvbGF0ZWQgZm9udCAgICovCisgIC8qICAgIGRlc2lnbiB0aHJvdWdoIGRlc2lnbiBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9jb29yZHMgOjogVGhlIG51bWJlciBvZiBkZXNpZ24gY29vcmRpbmF0ZXMgKG11c3QgYmUgZXF1YWwgdG8gICAqLworICAvKiAgICAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgYXhlcyBpbiB0aGUgZm9udCkuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvb3JkcyAgICAgOjogQW4gYXJyYXkgb2YgZGVzaWduIGNvb3JkaW5hdGVzLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1NldF9WYXJfRGVzaWduX0Nvb3JkaW5hdGVzKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIG51bV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGNvb3JkcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2V0X01NX0JsZW5kX0Nvb3JkaW5hdGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRm9yIE11bHRpcGxlIE1hc3RlcnMgYW5kIEdYIHZhciBmb250cywgY2hvb3NlIGFuIGludGVycG9sYXRlZCBmb250ICovCisgIC8qICAgIGRlc2lnbiB0aHJvdWdoIG5vcm1hbGl6ZWQgYmxlbmQgY29vcmRpbmF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9jb29yZHMgOjogVGhlIG51bWJlciBvZiBkZXNpZ24gY29vcmRpbmF0ZXMgKG11c3QgYmUgZXF1YWwgdG8gICAqLworICAvKiAgICAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgYXhlcyBpbiB0aGUgZm9udCkuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvb3JkcyAgICAgOjogVGhlIGRlc2lnbiBjb29yZGluYXRlcyBhcnJheSAoZWFjaCBlbGVtZW50IG11c3QgYmUgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGJldHdlZW4gMCBhbmQgMS4wKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TZXRfTU1fQmxlbmRfQ29vcmRpbmF0ZXMoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIG51bV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZHMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NldF9WYXJfQmxlbmRfQ29vcmRpbmF0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgaXMgYW5vdGhlciBuYW1lIG9mIEBGVF9TZXRfTU1fQmxlbmRfQ29vcmRpbmF0ZXMuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1NldF9WYXJfQmxlbmRfQ29vcmRpbmF0ZXMoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBudW1fY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGNvb3JkcyApOworCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUTU1fSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0bW9kYXBpLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0bW9kYXBpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyYzBhOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRtb2RhcGkuaApAQCAtMCwwICsxLDY0MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRtb2RhcGkuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIG1vZHVsZXMgcHVibGljIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDMsIDIwMDYsIDIwMDgtMjAxMCwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRNT0RBUElfSF9fCisjZGVmaW5lIF9fRlRNT0RBUElfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2R1bGVfbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBNb2R1bGUgTWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBIb3cgdG8gYWRkLCB1cGdyYWRlLCByZW1vdmUsIGFuZCBjb250cm9sIG1vZHVsZXMgZnJvbSBGcmVlVHlwZS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZGVmaW5pdGlvbnMgYmVsb3cgYXJlIHVzZWQgdG8gbWFuYWdlIG1vZHVsZXMgd2l0aGluIEZyZWVUeXBlLiAgKi8KKyAgLyogICAgTW9kdWxlcyBjYW4gYmUgYWRkZWQsIHVwZ3JhZGVkLCBhbmQgcmVtb3ZlZCBhdCBydW50aW1lLiAgICAgICAgICAgICovCisgIC8qICAgIEFkZGl0aW9uYWxseSwgc29tZSBtb2R1bGUgcHJvcGVydGllcyBjYW4gYmUgY29udHJvbGxlZCBhbHNvLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSGVyZSBpcyBhIGxpc3Qgb2YgcG9zc2libGUgdmFsdWVzIG9mIHRoZSBgbW9kdWxlX25hbWUnIGZpZWxkIGluICAgICovCisgIC8qICAgIHRoZSBARlRfTW9kdWxlX0NsYXNzIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgYXV0b2ZpdHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGJkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBjZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgZ3h2YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIG90dmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBwY2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgcGZyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHBzYXV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBwc2hpbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgcHNuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHJhc3RlcjEsIHJhc3RlcjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBzZm50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgc21vb3RoLCBzbW9vdGgtbGNkLCBzbW9vdGgtbGNkdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHRydWV0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB0eXBlMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgdHlwZTQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHQxY2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB3aW5mb250cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IHRoZSBGcmVlVHlwZSBDYWNoZSBzdWItc3lzdGVtIGlzIG5vdCBhIEZyZWVUeXBlIG1vZHVsZS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIG1vZHVsZSBiaXQgZmxhZ3MgKi8KKyNkZWZpbmUgRlRfTU9EVUxFX0ZPTlRfRFJJVkVSICAgICAgICAgMSAgLyogdGhpcyBtb2R1bGUgaXMgYSBmb250IGRyaXZlciAgKi8KKyNkZWZpbmUgRlRfTU9EVUxFX1JFTkRFUkVSICAgICAgICAgICAgMiAgLyogdGhpcyBtb2R1bGUgaXMgYSByZW5kZXJlciAgICAgKi8KKyNkZWZpbmUgRlRfTU9EVUxFX0hJTlRFUiAgICAgICAgICAgICAgNCAgLyogdGhpcyBtb2R1bGUgaXMgYSBnbHlwaCBoaW50ZXIgKi8KKyNkZWZpbmUgRlRfTU9EVUxFX1NUWUxFUiAgICAgICAgICAgICAgOCAgLyogdGhpcyBtb2R1bGUgaXMgYSBzdHlsZXIgICAgICAgKi8KKworI2RlZmluZSBGVF9NT0RVTEVfRFJJVkVSX1NDQUxBQkxFICAgICAweDEwMCAgIC8qIHRoZSBkcml2ZXIgc3VwcG9ydHMgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjYWxhYmxlIGZvbnRzICAgICAgICAgICAqLworI2RlZmluZSBGVF9NT0RVTEVfRFJJVkVSX05PX09VVExJTkVTICAweDIwMCAgIC8qIHRoZSBkcml2ZXIgZG9lcyBub3QgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN1cHBvcnQgdmVjdG9yIG91dGxpbmVzICAqLworI2RlZmluZSBGVF9NT0RVTEVfRFJJVkVSX0hBU19ISU5URVIgICAweDQwMCAgIC8qIHRoZSBkcml2ZXIgcHJvdmlkZXMgaXRzICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG93biBoaW50ZXIgICAgICAgICAgICAgICAqLworCisKKyAgLyogZGVwcmVjYXRlZCB2YWx1ZXMgKi8KKyNkZWZpbmUgZnRfbW9kdWxlX2ZvbnRfZHJpdmVyICAgICAgICAgRlRfTU9EVUxFX0ZPTlRfRFJJVkVSCisjZGVmaW5lIGZ0X21vZHVsZV9yZW5kZXJlciAgICAgICAgICAgIEZUX01PRFVMRV9SRU5ERVJFUgorI2RlZmluZSBmdF9tb2R1bGVfaGludGVyICAgICAgICAgICAgICBGVF9NT0RVTEVfSElOVEVSCisjZGVmaW5lIGZ0X21vZHVsZV9zdHlsZXIgICAgICAgICAgICAgIEZUX01PRFVMRV9TVFlMRVIKKworI2RlZmluZSBmdF9tb2R1bGVfZHJpdmVyX3NjYWxhYmxlICAgICBGVF9NT0RVTEVfRFJJVkVSX1NDQUxBQkxFCisjZGVmaW5lIGZ0X21vZHVsZV9kcml2ZXJfbm9fb3V0bGluZXMgIEZUX01PRFVMRV9EUklWRVJfTk9fT1VUTElORVMKKyNkZWZpbmUgZnRfbW9kdWxlX2RyaXZlcl9oYXNfaGludGVyICAgRlRfTU9EVUxFX0RSSVZFUl9IQVNfSElOVEVSCisKKworICB0eXBlZGVmIEZUX1BvaW50ZXIgIEZUX01vZHVsZV9JbnRlcmZhY2U7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Nb2R1bGVfQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGZ1bmN0aW9uIHVzZWQgdG8gaW5pdGlhbGl6ZSAobm90IGNyZWF0ZSkgYSBuZXcgbW9kdWxlIG9iamVjdC4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2R1bGUgOjogVGhlIG1vZHVsZSB0byBpbml0aWFsaXplLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9Nb2R1bGVfQ29uc3RydWN0b3IpKCBGVF9Nb2R1bGUgIG1vZHVsZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTW9kdWxlX0Rlc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIGZpbmFsaXplIChub3QgZGVzdHJveSkgYSBnaXZlbiBtb2R1bGUgb2JqZWN0LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlIDo6IFRoZSBtb2R1bGUgdG8gZmluYWxpemUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9Nb2R1bGVfRGVzdHJ1Y3RvcikoIEZUX01vZHVsZSAgbW9kdWxlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Nb2R1bGVfUmVxdWVzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGZ1bmN0aW9uIHVzZWQgdG8gcXVlcnkgYSBnaXZlbiBtb2R1bGUgZm9yIGEgc3BlY2lmaWMgaW50ZXJmYWNlLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2R1bGUgOjogVGhlIG1vZHVsZSB0byBiZSBzZWFyY2hlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWUgOjogICBUaGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIGluIHRoZSBtb2R1bGUuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9Nb2R1bGVfSW50ZXJmYWNlCisgICgqRlRfTW9kdWxlX1JlcXVlc3RlcikoIEZUX01vZHVsZSAgICBtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBuYW1lICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Nb2R1bGVfQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgbW9kdWxlIGNsYXNzIGRlc2NyaXB0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2R1bGVfZmxhZ3MgICAgOjogQml0IGZsYWdzIGRlc2NyaWJpbmcgdGhlIG1vZHVsZS4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZV9zaXplICAgICA6OiBUaGUgc2l6ZSBvZiBvbmUgbW9kdWxlIG9iamVjdC9pbnN0YW5jZSBpbiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZV9uYW1lICAgICA6OiBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlX3ZlcnNpb24gIDo6IFRoZSB2ZXJzaW9uLCBhcyBhIDE2LjE2IGZpeGVkIG51bWJlciAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAobWFqb3IubWlub3IpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlX3JlcXVpcmVzIDo6IFRoZSB2ZXJzaW9uIG9mIEZyZWVUeXBlIHRoaXMgbW9kdWxlIHJlcXVpcmVzLCAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICBhcyBhIDE2LjE2IGZpeGVkIG51bWJlciAobWFqb3IubWlub3IpLiAgU3RhcnRzICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgYXQgdmVyc2lvbiAyLjAsIGkuZS4sIDB4MjAwMDAuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZV9pbml0ICAgICA6OiBUaGUgaW5pdGlhbGl6aW5nIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlX2RvbmUgICAgIDo6IFRoZSBmaW5hbGl6aW5nIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnZXRfaW50ZXJmYWNlICAgOjogVGhlIGludGVyZmFjZSByZXF1ZXN0aW5nIGZ1bmN0aW9uLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9Nb2R1bGVfQ2xhc3NfCisgIHsKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgIG1vZHVsZV9mbGFnczsKKyAgICBGVF9Mb25nICAgICAgICAgICAgICAgIG1vZHVsZV9zaXplOworICAgIGNvbnN0IEZUX1N0cmluZyogICAgICAgbW9kdWxlX25hbWU7CisgICAgRlRfRml4ZWQgICAgICAgICAgICAgICBtb2R1bGVfdmVyc2lvbjsKKyAgICBGVF9GaXhlZCAgICAgICAgICAgICAgIG1vZHVsZV9yZXF1aXJlczsKKworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgbW9kdWxlX2ludGVyZmFjZTsKKworICAgIEZUX01vZHVsZV9Db25zdHJ1Y3RvciAgbW9kdWxlX2luaXQ7CisgICAgRlRfTW9kdWxlX0Rlc3RydWN0b3IgICBtb2R1bGVfZG9uZTsKKyAgICBGVF9Nb2R1bGVfUmVxdWVzdGVyICAgIGdldF9pbnRlcmZhY2U7CisKKyAgfSBGVF9Nb2R1bGVfQ2xhc3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9BZGRfTW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBZGQgYSBuZXcgbW9kdWxlIHRvIGEgZ2l2ZW4gbGlicmFyeSBpbnN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjbGF6eiAgIDo6IEEgcG9pbnRlciB0byBjbGFzcyBkZXNjcmlwdG9yIGZvciB0aGUgbW9kdWxlLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBlcnJvciB3aWxsIGJlIHJldHVybmVkIGlmIGEgbW9kdWxlIGFscmVhZHkgZXhpc3RzIGJ5IHRoYXQgbmFtZSwgKi8KKyAgLyogICAgb3IgaWYgdGhlIG1vZHVsZSByZXF1aXJlcyBhIHZlcnNpb24gb2YgRnJlZVR5cGUgdGhhdCBpcyB0b28gZ3JlYXQuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfQWRkX01vZHVsZSggRlRfTGlicmFyeSAgICAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgY29uc3QgRlRfTW9kdWxlX0NsYXNzKiAgY2xhenogKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9Nb2R1bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZpbmQgYSBtb2R1bGUgYnkgaXRzIG5hbWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlX25hbWUgOjogVGhlIG1vZHVsZSdzIG5hbWUgKGFzIGFuIEFTQ0lJIHN0cmluZykuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBtb2R1bGUgaGFuZGxlLiAgMH5pZiBub25lIHdhcyBmb3VuZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUncyBpbnRlcm5hbCBtb2R1bGVzIGFyZW4ndCBkb2N1bWVudGVkIHZlcnkgd2VsbCwgYW5kIHlvdSAgICovCisgIC8qICAgIHNob3VsZCBsb29rIHVwIHRoZSBzb3VyY2UgY29kZSBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9Nb2R1bGUgKQorICBGVF9HZXRfTW9kdWxlKCBGVF9MaWJyYXJ5ICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIG1vZHVsZV9uYW1lICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SZW1vdmVfTW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZW1vdmUgYSBnaXZlbiBtb2R1bGUgZnJvbSBhIGxpYnJhcnkgaW5zdGFuY2UuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIGEgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2R1bGUgIDo6IEEgaGFuZGxlIHRvIGEgbW9kdWxlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgbW9kdWxlIG9iamVjdCBpcyBkZXN0cm95ZWQgYnkgdGhlIGZ1bmN0aW9uIGluIGNhc2Ugb2Ygc3VjY2Vzcy4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9SZW1vdmVfTW9kdWxlKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICBGVF9Nb2R1bGUgICBtb2R1bGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICAgRlRfUHJvcGVydHlfU2V0CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgU2V0IGEgcHJvcGVydHkgZm9yIGEgZ2l2ZW4gbW9kdWxlLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgIGxpYnJhcnkgOjoKKyAgICogICAgICAgQSBoYW5kbGUgdG8gdGhlIGxpYnJhcnkgdGhlIG1vZHVsZSBpcyBwYXJ0IG9mLgorICAgKgorICAgKiAgICBtb2R1bGVfbmFtZSA6OgorICAgKiAgICAgICBUaGUgbW9kdWxlIG5hbWUuCisgICAqCisgICAqICAgIHByb3BlcnR5X25hbWUgOjoKKyAgICogICAgICAgVGhlIHByb3BlcnR5IG5hbWUuICBQcm9wZXJ0aWVzIGFyZSBkZXNjcmliZWQgaW4gdGhlIGBTeW5vcHNpcycKKyAgICogICAgICAgc3Vic2VjdGlvbiBvZiB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbi4KKyAgICoKKyAgICogICAgICAgTm90ZSB0aGF0IG9ubHkgYSBmZXcgbW9kdWxlcyBoYXZlIHByb3BlcnRpZXMuCisgICAqCisgICAqICAgIHZhbHVlIDo6CisgICAqICAgICAgIEEgZ2VuZXJpYyBwb2ludGVyIHRvIGEgdmFyaWFibGUgb3Igc3RydWN0dXJlIHdoaWNoIGdpdmVzIHRoZSBuZXcKKyAgICogICAgICAgdmFsdWUgb2YgdGhlIHByb3BlcnR5LiAgVGhlIGV4YWN0IGRlZmluaXRpb24gb2YgYHZhbHVlJyBpcworICAgKiAgICAgICBkZXBlbmRlbnQgb24gdGhlIHByb3BlcnR5OyBzZWUgdGhlIGBTeW5vcHNpcycgc3Vic2VjdGlvbiBvZiB0aGUKKyAgICogICAgICAgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbi4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICAgSWYgYG1vZHVsZV9uYW1lJyBpc24ndCBhIHZhbGlkIG1vZHVsZSBuYW1lLCBvciBgcHJvcGVydHlfbmFtZScKKyAgICogICAgZG9lc24ndCBzcGVjaWZ5IGEgdmFsaWQgcHJvcGVydHksIG9yIGlmIGB2YWx1ZScgZG9lc24ndCByZXByZXNlbnQgYQorICAgKiAgICB2YWxpZCB2YWx1ZSBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LCBhbiBlcnJvciBpcyByZXR1cm5lZC4KKyAgICoKKyAgICogICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNldHMgcHJvcGVydHkgYGJhcicgKGEgc2ltcGxlIGludGVnZXIpIGluCisgICAqICAgIG1vZHVsZSBgZm9vJyB0byB2YWx1ZX4xLgorICAgKgorICAgKiAgICB7CisgICAqICAgICAgRlRfVUludCAgYmFyOworICAgKgorICAgKgorICAgKiAgICAgIGJhciA9IDE7CisgICAqICAgICAgRlRfUHJvcGVydHlfU2V0KCBsaWJyYXJ5LCAiZm9vIiwgImJhciIsICZiYXIgKTsKKyAgICogICAgfQorICAgKgorICAgKiAgICBOb3RlIHRoYXQgdGhlIEZyZWVUeXBlIENhY2hlIHN1Yi1zeXN0ZW0gZG9lc24ndCByZWNvZ25pemUgbW9kdWxlCisgICAqICAgIHByb3BlcnR5IGNoYW5nZXMuICBUbyBhdm9pZCBnbHlwaCBsb29rdXAgY29uZnVzaW9uIHdpdGhpbiB0aGUgY2FjaGUKKyAgICogICAgeW91IHNob3VsZCBjYWxsIEBGVENfTWFuYWdlcl9SZXNldCB0byBjb21wbGV0ZWx5IGZsdXNoIHRoZSBjYWNoZSBpZgorICAgKiAgICBhIG1vZHVsZSBwcm9wZXJ0eSBnZXRzIGNoYW5nZWQgYWZ0ZXIgQEZUQ19NYW5hZ2VyX05ldyBoYXMgYmVlbgorICAgKiAgICBjYWxsZWQuCisgICAqCisgICAqICAgIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZXQgcHJvcGVydGllcyBvZiB0aGUgRnJlZVR5cGUgQ2FjaGUKKyAgICogICAgc3ViLXN5c3RlbSBpdHNlbGYgd2l0aCBGVF9Qcm9wZXJ0eV9TZXQ7IHVzZSBARlRDX1Byb3BlcnR5X1NldAorICAgKiAgICBpbnN0ZWFkLgorICAgKgorICAgKiAgQHNpbmNlOgorICAgKiAgICAyLjQuMTEKKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9Qcm9wZXJ0eV9TZXQoIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgbW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgcHJvcGVydHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiAgICAgICB2YWx1ZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgICBGVF9Qcm9wZXJ0eV9HZXQKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgICBHZXQgYSBtb2R1bGUncyBwcm9wZXJ0eSB2YWx1ZS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgICBsaWJyYXJ5IDo6CisgICAqICAgICAgIEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IHRoZSBtb2R1bGUgaXMgcGFydCBvZi4KKyAgICoKKyAgICogICAgbW9kdWxlX25hbWUgOjoKKyAgICogICAgICAgVGhlIG1vZHVsZSBuYW1lLgorICAgKgorICAgKiAgICBwcm9wZXJ0eV9uYW1lIDo6CisgICAqICAgICAgIFRoZSBwcm9wZXJ0eSBuYW1lLiAgUHJvcGVydGllcyBhcmUgZGVzY3JpYmVkIGluIHRoZSBgU3lub3BzaXMnCisgICAqICAgICAgIHN1YnNlY3Rpb24gb2YgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24uCisgICAqCisgICAqIEBpbm91dDoKKyAgICogICAgdmFsdWUgOjoKKyAgICogICAgICAgQSBnZW5lcmljIHBvaW50ZXIgdG8gYSB2YXJpYWJsZSBvciBzdHJ1Y3R1cmUgd2hpY2ggZ2l2ZXMgdGhlCisgICAqICAgICAgIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4gIFRoZSBleGFjdCBkZWZpbml0aW9uIG9mIGB2YWx1ZScgaXMKKyAgICogICAgICAgZGVwZW5kZW50IG9uIHRoZSBwcm9wZXJ0eTsgc2VlIHRoZSBgU3lub3BzaXMnIHN1YnNlY3Rpb24gb2YgdGhlCisgICAqICAgICAgIG1vZHVsZSdzIGRvY3VtZW50YXRpb24uCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgIElmIGBtb2R1bGVfbmFtZScgaXNuJ3QgYSB2YWxpZCBtb2R1bGUgbmFtZSwgb3IgYHByb3BlcnR5X25hbWUnCisgICAqICAgIGRvZXNuJ3Qgc3BlY2lmeSBhIHZhbGlkIHByb3BlcnR5LCBvciBpZiBgdmFsdWUnIGRvZXNuJ3QgcmVwcmVzZW50IGEKKyAgICogICAgdmFsaWQgdmFsdWUgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSwgYW4gZXJyb3IgaXMgcmV0dXJuZWQuCisgICAqCisgICAqICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBnZXRzIHByb3BlcnR5IGBiYXonIChhIHJhbmdlKSBpbiBtb2R1bGUgYGZvbycuCisgICAqCisgICAqICAgIHsKKyAgICogICAgICB0eXBlZGVmICByYW5nZV8KKyAgICogICAgICB7CisgICAqICAgICAgICBGVF9JbnQzMiAgbWluOworICAgKiAgICAgICAgRlRfSW50MzIgIG1heDsKKyAgICoKKyAgICogICAgICB9IHJhbmdlOworICAgKgorICAgKiAgICAgIHJhbmdlICBiYXo7CisgICAqCisgICAqCisgICAqICAgICAgRlRfUHJvcGVydHlfR2V0KCBsaWJyYXJ5LCAiZm9vIiwgImJheiIsICZiYXogKTsKKyAgICogICAgfQorICAgKgorICAgKiAgICBJdCBpcyBub3QgcG9zc2libGUgdG8gcmV0cmlldmUgcHJvcGVydGllcyBvZiB0aGUgRnJlZVR5cGUgQ2FjaGUKKyAgICogICAgc3ViLXN5c3RlbSB3aXRoIEZUX1Byb3BlcnR5X0dldDsgdXNlIEBGVENfUHJvcGVydHlfR2V0IGluc3RlYWQuCisgICAqCisgICAqICBAc2luY2U6CisgICAqICAgIDIuNC4xMQorICAgKgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1Byb3BlcnR5X0dldCggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICBtb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICBwcm9wZXJ0eV9uYW1lLAorICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgIHZhbHVlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SZWZlcmVuY2VfTGlicmFyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGNvdW50ZXIgZ2V0cyBpbml0aWFsaXplZCB0b34xIGF0IHRoZSB0aW1lIGFuIEBGVF9MaWJyYXJ5ICAgICAgICAgKi8KKyAgLyogICAgc3RydWN0dXJlIGlzIGNyZWF0ZWQuICBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIGNvdW50ZXIuICAgICAgICovCisgIC8qICAgIEBGVF9Eb25lX0xpYnJhcnkgdGhlbiBvbmx5IGRlc3Ryb3lzIGEgbGlicmFyeSBpZiB0aGUgY291bnRlciBpc34xLCAqLworICAvKiAgICBvdGhlcndpc2UgaXQgc2ltcGx5IGRlY3JlbWVudHMgdGhlIGNvdW50ZXIuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaGVscHMgaW4gbWFuYWdpbmcgbGlmZS1jeWNsZXMgb2Ygc3RydWN0dXJlcyB3aGljaCAgICAqLworICAvKiAgICByZWZlcmVuY2UgQEZUX0xpYnJhcnkgb2JqZWN0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIGEgdGFyZ2V0IGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTaW5jZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAyLjQuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9SZWZlcmVuY2VfTGlicmFyeSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTmV3X0xpYnJhcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNyZWF0ZSBhIG5ldyBGcmVlVHlwZSBsaWJyYXJ5IGluc3RhbmNlICAgICovCisgIC8qICAgIGZyb20gYSBnaXZlbiBtZW1vcnkgb2JqZWN0LiAgSXQgaXMgdGh1cyBwb3NzaWJsZSB0byB1c2UgbGlicmFyaWVzICAqLworICAvKiAgICB3aXRoIGRpc3RpbmN0IG1lbW9yeSBhbGxvY2F0b3JzIHdpdGhpbiB0aGUgc2FtZSBwcm9ncmFtLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vcm1hbGx5LCB5b3Ugd291bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIChmb2xsb3dlZCBieSBhIGNhbGwgdG8gICAgICAqLworICAvKiAgICBARlRfQWRkX0RlZmF1bHRfTW9kdWxlcyBvciBhIHNlcmllcyBvZiBjYWxscyB0byBARlRfQWRkX01vZHVsZSkgICAgKi8KKyAgLyogICAgaW5zdGVhZCBvZiBARlRfSW5pdF9GcmVlVHlwZSB0byBpbml0aWFsaXplIHRoZSBGcmVlVHlwZSBsaWJyYXJ5LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEb24ndCB1c2UgQEZUX0RvbmVfRnJlZVR5cGUgYnV0IEBGVF9Eb25lX0xpYnJhcnkgdG8gZGVzdHJveSBhICAgICAgKi8KKyAgLyogICAgbGlicmFyeSBpbnN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5ICAgOjogQSBoYW5kbGUgdG8gdGhlIG9yaWdpbmFsIG1lbW9yeSBvYmplY3QuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWxpYnJhcnkgOjogQSBwb2ludGVyIHRvIGhhbmRsZSBvZiBhIG5ldyBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2VlIHRoZSBkaXNjdXNzaW9uIG9mIHJlZmVyZW5jZSBjb3VudGVycyBpbiB0aGUgZGVzY3JpcHRpb24gb2YgICAgICovCisgIC8qICAgIEBGVF9SZWZlcmVuY2VfTGlicmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX05ld19MaWJyYXJ5KCBGVF9NZW1vcnkgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgRlRfTGlicmFyeSAgKmFsaWJyYXJ5ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Eb25lX0xpYnJhcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEaXNjYXJkIGEgZ2l2ZW4gbGlicmFyeSBvYmplY3QuICBUaGlzIGNsb3NlcyBhbGwgZHJpdmVycyBhbmQgICAgICAgKi8KKyAgLyogICAgZGlzY2FyZHMgYWxsIHJlc291cmNlIG9iamVjdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGxpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2VlIHRoZSBkaXNjdXNzaW9uIG9mIHJlZmVyZW5jZSBjb3VudGVycyBpbiB0aGUgZGVzY3JpcHRpb24gb2YgICAgICovCisgIC8qICAgIEBGVF9SZWZlcmVuY2VfTGlicmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0RvbmVfTGlicmFyeSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisvKiAqLworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX0RlYnVnSG9va19GdW5jKSggdm9pZCogIGFyZyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2V0X0RlYnVnX0hvb2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2V0IGEgZGVidWcgaG9vayBmdW5jdGlvbiBmb3IgZGVidWdnaW5nIHRoZSBpbnRlcnByZXRlciBvZiBhIGZvbnQgICovCisgIC8qICAgIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgICAgOjogQSBoYW5kbGUgdG8gdGhlIGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhvb2tfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBkZWJ1ZyBob29rLiAgWW91IHNob3VsZCB1c2UgdGhlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIHZhbHVlcyBkZWZpbmVkIGluIGBmdG9ianMuaCcsIGUuZy4sICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBgRlRfREVCVUdfSE9PS19UUlVFVFlQRScuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkZWJ1Z19ob29rIDo6IFRoZSBmdW5jdGlvbiB1c2VkIHRvIGRlYnVnIHRoZSBpbnRlcnByZXRlci4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDdXJyZW50bHksIGZvdXIgZGVidWcgaG9vayBzbG90cyBhcmUgYXZhaWxhYmxlLCBidXQgb25seSB0d28gKGZvciAgKi8KKyAgLyogICAgdGhlIFRydWVUeXBlIGFuZCB0aGUgVHlwZX4xIGludGVycHJldGVyKSBhcmUgZGVmaW5lZC4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTaW5jZSB0aGUgaW50ZXJuYWwgaGVhZGVycyBvZiBGcmVlVHlwZSBhcmUgbm8gbG9uZ2VyIGluc3RhbGxlZCwgICAgKi8KKyAgLyogICAgdGhlIHN5bWJvbCBgRlRfREVCVUdfSE9PS19UUlVFVFlQRScgaXNuJ3QgYXZhaWxhYmxlIHB1YmxpY2x5LiAgICAgICovCisgIC8qICAgIFRoaXMgaXMgYSBidWcgYW5kIHdpbGwgYmUgZml4ZWQgaW4gYSBmb3J0aGNvbWluZyByZWxlYXNlLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfU2V0X0RlYnVnX0hvb2soIEZUX0xpYnJhcnkgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgIGhvb2tfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICBGVF9EZWJ1Z0hvb2tfRnVuYyAgZGVidWdfaG9vayApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQWRkX0RlZmF1bHRfTW9kdWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQWRkIHRoZSBzZXQgb2YgZGVmYXVsdCBkcml2ZXJzIHRvIGEgZ2l2ZW4gbGlicmFyeSBvYmplY3QuICAgICAgICAgICovCisgIC8qICAgIFRoaXMgaXMgb25seSB1c2VmdWwgd2hlbiB5b3UgY3JlYXRlIGEgbGlicmFyeSBvYmplY3Qgd2l0aCAgICAgICAgICAqLworICAvKiAgICBARlRfTmV3X0xpYnJhcnkgKHVzdWFsbHkgdG8gcGx1ZyBhIGN1c3RvbSBtZW1vcnkgbWFuYWdlcikuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIGEgbmV3IGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX0FkZF9EZWZhdWx0X01vZHVsZXMoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzZWN0aW9uOgorICAgKiAgIHRydWV0eXBlX2VuZ2luZQorICAgKgorICAgKiBAdGl0bGU6CisgICAqICAgVGhlIFRydWVUeXBlIEVuZ2luZQorICAgKgorICAgKiBAYWJzdHJhY3Q6CisgICAqICAgVHJ1ZVR5cGUgYnl0ZWNvZGUgc3VwcG9ydC4KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhIGZ1bmN0aW9uIHVzZWQgdG8gcXVlcnkgdGhlIGxldmVsIG9mIFRydWVUeXBlCisgICAqICAgYnl0ZWNvZGUgc3VwcG9ydCBjb21waWxlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuCisgICAqCisgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqICBAZW51bToKKyAgICogICAgIEZUX1RydWVUeXBlRW5naW5lVHlwZQorICAgKgorICAgKiAgQGRlc2NyaXB0aW9uOgorICAgKiAgICAgQSBsaXN0IG9mIHZhbHVlcyBkZXNjcmliaW5nIHdoaWNoIGtpbmQgb2YgVHJ1ZVR5cGUgYnl0ZWNvZGUKKyAgICogICAgIGVuZ2luZSBpcyBpbXBsZW1lbnRlZCBpbiBhIGdpdmVuIEZUX0xpYnJhcnkgaW5zdGFuY2UuICBJdCBpcyB1c2VkCisgICAqICAgICBieSB0aGUgQEZUX0dldF9UcnVlVHlwZV9FbmdpbmVfVHlwZSBmdW5jdGlvbi4KKyAgICoKKyAgICogIEB2YWx1ZXM6CisgICAqICAgICBGVF9UUlVFVFlQRV9FTkdJTkVfVFlQRV9OT05FIDo6CisgICAqICAgICAgIFRoZSBsaWJyYXJ5IGRvZXNuJ3QgaW1wbGVtZW50IGFueSBraW5kIG9mIGJ5dGVjb2RlIGludGVycHJldGVyLgorICAgKgorICAgKiAgICAgRlRfVFJVRVRZUEVfRU5HSU5FX1RZUEVfVU5QQVRFTlRFRCA6OgorICAgKiAgICAgICBUaGUgbGlicmFyeSBpbXBsZW1lbnRzIGEgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgdGhhdCBkb2Vzbid0CisgICAqICAgICAgIHN1cHBvcnQgdGhlIHBhdGVudGVkIG9wZXJhdGlvbnMgb2YgdGhlIFRydWVUeXBlIHZpcnR1YWwgbWFjaGluZS4KKyAgICoKKyAgICogICAgICAgSXRzIG1haW4gdXNlIGlzIHRvIGxvYWQgY2VydGFpbiBBc2lhbiBmb250cyB3aGljaCBwb3NpdGlvbiBhbmQKKyAgICogICAgICAgc2NhbGUgZ2x5cGggY29tcG9uZW50cyB3aXRoIGJ5dGVjb2RlIGluc3RydWN0aW9ucy4gIEl0IHByb2R1Y2VzCisgICAqICAgICAgIGJhZCBvdXRwdXQgZm9yIG1vc3Qgb3RoZXIgZm9udHMuCisgICAqCisgICAqICAgICBGVF9UUlVFVFlQRV9FTkdJTkVfVFlQRV9QQVRFTlRFRCA6OgorICAgKiAgICAgICBUaGUgbGlicmFyeSBpbXBsZW1lbnRzIGEgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgdGhhdCBjb3ZlcnMKKyAgICogICAgICAgdGhlIGZ1bGwgaW5zdHJ1Y3Rpb24gc2V0IG9mIHRoZSBUcnVlVHlwZSB2aXJ0dWFsIG1hY2hpbmUgKHRoaXMKKyAgICogICAgICAgd2FzIGdvdmVybmVkIGJ5IHBhdGVudHMgdW50aWwgTWF5IDIwMTAsIGhlbmNlIHRoZSBuYW1lKS4KKyAgICoKKyAgICogIEBzaW5jZToKKyAgICogICAgIDIuMgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBlbnVtICBGVF9UcnVlVHlwZUVuZ2luZVR5cGVfCisgIHsKKyAgICBGVF9UUlVFVFlQRV9FTkdJTkVfVFlQRV9OT05FID0gMCwKKyAgICBGVF9UUlVFVFlQRV9FTkdJTkVfVFlQRV9VTlBBVEVOVEVELAorICAgIEZUX1RSVUVUWVBFX0VOR0lORV9UWVBFX1BBVEVOVEVECisKKyAgfSBGVF9UcnVlVHlwZUVuZ2luZVR5cGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogIEBmdW5jOgorICAgKiAgICAgRlRfR2V0X1RydWVUeXBlX0VuZ2luZV9UeXBlCisgICAqCisgICAqICBAZGVzY3JpcHRpb246CisgICAqICAgICBSZXR1cm4gYW4gQEZUX1RydWVUeXBlRW5naW5lVHlwZSB2YWx1ZSB0byBpbmRpY2F0ZSB3aGljaCBsZXZlbCBvZgorICAgKiAgICAgdGhlIFRydWVUeXBlIHZpcnR1YWwgbWFjaGluZSBhIGdpdmVuIGxpYnJhcnkgaW5zdGFuY2Ugc3VwcG9ydHMuCisgICAqCisgICAqICBAaW5wdXQ6CisgICAqICAgICBsaWJyYXJ5IDo6CisgICAqICAgICAgIEEgbGlicmFyeSBpbnN0YW5jZS4KKyAgICoKKyAgICogIEByZXR1cm46CisgICAqICAgICBBIHZhbHVlIGluZGljYXRpbmcgd2hpY2ggbGV2ZWwgaXMgc3VwcG9ydGVkLgorICAgKgorICAgKiAgQHNpbmNlOgorICAgKiAgICAgMi4yCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX1RydWVUeXBlRW5naW5lVHlwZSApCisgIEZUX0dldF9UcnVlVHlwZV9FbmdpbmVfVHlwZSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUTU9EQVBJX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdG1vZGVyci5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdG1vZGVyci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYTg1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0bW9kZXJyLmgKQEAgLTAsMCArMSwxOTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0bW9kZXJyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBtb2R1bGUgZXJyb3Igb2Zmc2V0cyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMS0yMDA1LCAyMDEwLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgZmlsZSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgRnJlZVR5cGUgbW9kdWxlIGVycm9yIGNvZGVzLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSWYgdGhlIG1hY3JvIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMgaW4gYGZ0b3B0aW9uLmgnIGlzICAgICovCisgIC8qIHNldCwgdGhlIGxvd2VyIGJ5dGUgb2YgYW4gZXJyb3IgdmFsdWUgaWRlbnRpZmllcyB0aGUgZXJyb3IgY29kZSBhcyAgICAqLworICAvKiB1c3VhbC4gIEluIGFkZGl0aW9uLCB0aGUgaGlnaGVyIGJ5dGUgaWRlbnRpZmllcyB0aGUgbW9kdWxlLiAgRm9yICAgICAgKi8KKyAgLyogZXhhbXBsZSwgdGhlIGVycm9yIGBGVF9FcnJfSW52YWxpZF9GaWxlX0Zvcm1hdCcgaGFzIHZhbHVlIDB4MDAwMywgdGhlICovCisgIC8qIGVycm9yIGBUVF9FcnJfSW52YWxpZF9GaWxlX0Zvcm1hdCcgaGFzIHZhbHVlIDB4MTMwMywgdGhlIGVycm9yICAgICAgICAqLworICAvKiBgVDFfRXJyX0ludmFsaWRfRmlsZV9Gb3JtYXQnIGhhcyB2YWx1ZSAweDE0MDMsIGV0Yy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE5vdGUgdGhhdCBgRlRfRXJyX09rJywgYFRUX0Vycl9PaycsIGV0Yy4gYXJlIGFsd2F5cyBlcXVhbCB0byB6ZXJvLCAgICAqLworICAvKiBpbmNsdWRpbmcgdGhlIGhpZ2ggYnl0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIElmIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMgaXNuJ3Qgc2V0LCB0aGUgaGlnaGVyIGJ5dGUgb2YgICAqLworICAvKiBhbiBlcnJvciB2YWx1ZSBpcyBzZXQgdG8gemVyby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRvIGhpZGUgdGhlIHZhcmlvdXMgYFhYWF9FcnJfJyBwcmVmaXhlcyBpbiB0aGUgc291cmNlIGNvZGUsIEZyZWVUeXBlICAqLworICAvKiBwcm92aWRlcyBzb21lIG1hY3JvcyBpbiBgZnR0eXBlcy5oJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRlRfRVJSKCBlcnIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgQWRkIGN1cnJlbnQgZXJyb3IgbW9kdWxlIHByZWZpeCAoYXMgZGVmaW5lZCB3aXRoIHRoZSAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGBGVF9FUlJfUFJFRklYJyBtYWNybykgdG8gYGVycicuICBGb3IgZXhhbXBsZSwgaW4gdGhlIEJERiBtb2R1bGUgICovCisgIC8qICAgICB0aGUgbGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfT3V0bGluZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgZXhwYW5kcyB0byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgIGVycm9yID0gQkRGX0Vycl9JbnZhbGlkX091dGxpbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIEZvciBzaW1wbGljaXR5LCB5b3UgY2FuIGFsd2F5cyB1c2UgYEZUX0Vycl9PaycgZGlyZWN0bHkgaW5zdGVhZCAgICovCisgIC8qICAgICBvZiBgRlRfRVJSKCBPayApJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGVF9FUlJfRVEoIGVycmNvZGUsIGVyciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRlRfRVJSX05FUSggZXJyY29kZSwgZXJyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgQ29tcGFyZSBlcnJvciBjb2RlIGBlcnJjb2RlJyB3aXRoIHRoZSBlcnJvciBgZXJyJyBmb3IgZXF1YWxpdHkgICAgKi8KKyAgLyogICAgIGFuZCBpbmVxdWFsaXR5LCByZXNwZWN0aXZlbHkuICBFeGFtcGxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBpZiAoIEZUX0VSUl9FUSggZXJyb3IsIEludmFsaWRfT3V0bGluZSApICkgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgVXNpbmcgdGhpcyBtYWNybyB5b3UgZG9uJ3QgaGF2ZSB0byB0aGluayBhYm91dCBlcnJvciBwcmVmaXhlcy4gICAgKi8KKyAgLyogICAgIE9mIGNvdXJzZSwgaWYgbW9kdWxlIGVycm9ycyBhcmUgbm90IGFjdGl2ZSwgdGhlIGFib3ZlIGV4YW1wbGUgaXMgICovCisgIC8qICAgICB0aGUgc2FtZSBhcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgaWYgKCBlcnJvciA9PSBGVF9FcnJfSW52YWxpZF9PdXRsaW5lICkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGVF9FUlJPUl9CQVNFKCBlcnJjb2RlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRlRfRVJST1JfTU9EVUxFKCBlcnJjb2RlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgR2V0IGJhc2UgZXJyb3IgYW5kIG1vZHVsZSBlcnJvciBjb2RlLCByZXNwZWN0aXZlbHkuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGNyZWF0ZSBhIG1vZHVsZSBlcnJvciBtZXNzYWdlIHRhYmxlIGVhc2lseSAgICAgKi8KKyAgLyogd2l0aCBzb21ldGhpbmcgbGlrZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICN1bmRlZiBfX0ZUTU9ERVJSX0hfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAjZGVmaW5lIEZUX01PREVSUkRFRiggZSwgdiwgcyApICB7IEZUX01vZF9FcnJfICMjIGUsIHMgfSwgICAgICAgICAqLworICAvKiAgICAgI2RlZmluZSBGVF9NT0RFUlJfU1RBUlRfTElTVCAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICNkZWZpbmUgRlRfTU9ERVJSX0VORF9MSVNUICAgICAgIHsgMCwgMCB9IH07ICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgY29uc3Qgc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgIGludCAgICAgICAgICBtb2RfZXJyX29mZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBjb25zdCBjaGFyKiAgbW9kX2Vycl9tc2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIH0gZnRfbW9kX2Vycm9yc1tdID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgI2luY2x1ZGUgImZ0bW9kZXJyLmgiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRNT0RFUlJfSF9fCisjZGVmaW5lIF9fRlRNT0RFUlJfSF9fCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgIFNFVFVQIE1BQ1JPUyAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjdW5kZWYgIEZUX05FRURfRVhURVJOX0MKKworI2lmbmRlZiBGVF9NT0RFUlJERUYKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMKKyNkZWZpbmUgRlRfTU9ERVJSREVGKCBlLCB2LCBzICkgIEZUX01vZF9FcnJfICMjIGUgPSB2LAorI2Vsc2UKKyNkZWZpbmUgRlRfTU9ERVJSREVGKCBlLCB2LCBzICkgIEZUX01vZF9FcnJfICMjIGUgPSAwLAorI2VuZGlmCisKKyNkZWZpbmUgRlRfTU9ERVJSX1NUQVJUX0xJU1QgIGVudW0geworI2RlZmluZSBGVF9NT0RFUlJfRU5EX0xJU1QgICAgRlRfTW9kX0Vycl9NYXggfTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjZGVmaW5lIEZUX05FRURfRVhURVJOX0MKKyAgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2VuZGlmIC8qICFGVF9NT0RFUlJERUYgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgIExJU1QgTU9EVUxFIEVSUk9SIEJBU0VTICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZmRlZiBGVF9NT0RFUlJfU1RBUlRfTElTVAorICBGVF9NT0RFUlJfU1RBUlRfTElTVAorI2VuZGlmCisKKworICBGVF9NT0RFUlJERUYoIEJhc2UsICAgICAgMHgwMDAsICJiYXNlIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIEF1dG9maXQsICAgMHgxMDAsICJhdXRvZml0dGVyIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIEJERiwgICAgICAgMHgyMDAsICJCREYgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggQnppcDIsICAgICAweDMwMCwgIkJ6aXAyIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIENhY2hlLCAgICAgMHg0MDAsICJjYWNoZSBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBDRkYsICAgICAgIDB4NTAwLCAiQ0ZGIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIENJRCwgICAgICAgMHg2MDAsICJDSUQgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggR3ppcCwgICAgICAweDcwMCwgIkd6aXAgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggTFpXLCAgICAgICAweDgwMCwgIkxaVyBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBPVHZhbGlkLCAgIDB4OTAwLCAiT3BlblR5cGUgdmFsaWRhdGlvbiBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBQQ0YsICAgICAgIDB4QTAwLCAiUENGIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIFBGUiwgICAgICAgMHhCMDAsICJQRlIgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggUFNhdXgsICAgICAweEMwMCwgIlBTIGF1eGlsaWFyeSBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBQU2hpbnRlciwgIDB4RDAwLCAiUFMgaGludGVyIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIFBTbmFtZXMsICAgMHhFMDAsICJQUyBuYW1lcyBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBSYXN0ZXIsICAgIDB4RjAwLCAicmFzdGVyIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIFNGTlQsICAgICAweDEwMDAsICJTRk5UIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIFNtb290aCwgICAweDExMDAsICJzbW9vdGggcmFzdGVyIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIFRydWVUeXBlLCAweDEyMDAsICJUcnVlVHlwZSBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBUeXBlMSwgICAgMHgxMzAwLCAiVHlwZSAxIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIFR5cGU0MiwgICAweDE0MDAsICJUeXBlIDQyIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIFdpbmZvbnRzLCAweDE1MDAsICJXaW5kb3dzIEZPTi9GTlQgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggR1h2YWxpZCwgIDB4MTYwMCwgIkdYIHZhbGlkYXRpb24gbW9kdWxlIiApCisKKworI2lmZGVmIEZUX01PREVSUl9FTkRfTElTVAorICBGVF9NT0RFUlJfRU5EX0xJU1QKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgIENMRUFOVVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmZGVmIEZUX05FRURfRVhURVJOX0MKKyAgfQorI2VuZGlmCisKKyN1bmRlZiBGVF9NT0RFUlJfU1RBUlRfTElTVAorI3VuZGVmIEZUX01PREVSUl9FTkRfTElTVAorI3VuZGVmIEZUX01PREVSUkRFRgorI3VuZGVmIEZUX05FRURfRVhURVJOX0MKKworCisjZW5kaWYgLyogX19GVE1PREVSUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRvdHZhbC5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdG90dmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMzZTMwNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRvdHZhbC5oCkBAIC0wLDAgKzEsMjAzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdG90dmFsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgQVBJIGZvciB2YWxpZGF0aW5nIE9wZW5UeXBlIHRhYmxlcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIFdhcm5pbmc6IFRoaXMgbW9kdWxlIG1pZ2h0IGJlIG1vdmVkIHRvIGEgZGlmZmVyZW50IGxpYnJhcnkgaW4gdGhlICAgICAgICovCisvKiAgICAgICAgICBmdXR1cmUgdG8gYXZvaWQgYSB0aWdodCBkZXBlbmRlbmN5IGJldHdlZW4gRnJlZVR5cGUgYW5kIHRoZSAgICAqLworLyogICAgICAgICAgT3BlblR5cGUgc3BlY2lmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRPVFZBTF9IX18KKyNkZWZpbmUgX19GVE9UVkFMX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG90X3ZhbGlkYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE9wZW5UeXBlIFZhbGlkYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIEFQSSB0byB2YWxpZGF0ZSBPcGVuVHlwZSB0YWJsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb25zIHRvIHZhbGlkYXRlICAgICAqLworICAvKiAgICBzb21lIE9wZW5UeXBlIHRhYmxlcyAoQkFTRSwgR0RFRiwgR1BPUywgR1NVQiwgSlNURiwgTUFUSCkuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGVudW06CisgICogICAgRlRfVkFMSURBVEVfT1RYWFgKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBBIGxpc3Qgb2YgYml0LWZpZWxkIGNvbnN0YW50cyB1c2VkIHdpdGggQEZUX09wZW5UeXBlX1ZhbGlkYXRlIHRvCisgICogICAgaW5kaWNhdGUgd2hpY2ggT3BlblR5cGUgdGFibGVzIHNob3VsZCBiZSB2YWxpZGF0ZWQuCisgICoKKyAgKiBAdmFsdWVzOgorICAqICAgIEZUX1ZBTElEQVRFX0JBU0UgOjoKKyAgKiAgICAgIFZhbGlkYXRlIEJBU0UgdGFibGUuCisgICoKKyAgKiAgICBGVF9WQUxJREFURV9HREVGIDo6CisgICogICAgICBWYWxpZGF0ZSBHREVGIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfR1BPUyA6OgorICAqICAgICAgVmFsaWRhdGUgR1BPUyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX0dTVUIgOjoKKyAgKiAgICAgIFZhbGlkYXRlIEdTVUIgdGFibGUuCisgICoKKyAgKiAgICBGVF9WQUxJREFURV9KU1RGIDo6CisgICogICAgICBWYWxpZGF0ZSBKU1RGIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfTUFUSCA6OgorICAqICAgICAgVmFsaWRhdGUgTUFUSCB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX09UIDo6CisgICogICAgICBWYWxpZGF0ZSBhbGwgT3BlblR5cGUgdGFibGVzIChCQVNFLCBHREVGLCBHUE9TLCBHU1VCLCBKU1RGLCBNQVRIKS4KKyAgKgorICAqLworI2RlZmluZSBGVF9WQUxJREFURV9CQVNFICAweDAxMDAKKyNkZWZpbmUgRlRfVkFMSURBVEVfR0RFRiAgMHgwMjAwCisjZGVmaW5lIEZUX1ZBTElEQVRFX0dQT1MgIDB4MDQwMAorI2RlZmluZSBGVF9WQUxJREFURV9HU1VCICAweDA4MDAKKyNkZWZpbmUgRlRfVkFMSURBVEVfSlNURiAgMHgxMDAwCisjZGVmaW5lIEZUX1ZBTElEQVRFX01BVEggIDB4MjAwMAorCisjZGVmaW5lIEZUX1ZBTElEQVRFX09UICBGVF9WQUxJREFURV9CQVNFIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVkFMSURBVEVfR0RFRiB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX0dQT1MgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9HU1VCIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVkFMSURBVEVfSlNURiB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX01BVEgKKworICAvKiAqLworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBmdW5jdGlvbjoKKyAgKiAgICBGVF9PcGVuVHlwZV9WYWxpZGF0ZQorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIFZhbGlkYXRlIHZhcmlvdXMgT3BlblR5cGUgdGFibGVzIHRvIGFzc3VyZSB0aGF0IGFsbCBvZmZzZXRzIGFuZAorICAqICAgIGluZGljZXMgYXJlIHZhbGlkLiAgVGhlIGlkZWEgaXMgdGhhdCBhIGhpZ2hlci1sZXZlbCBsaWJyYXJ5IHdoaWNoCisgICogICAgYWN0dWFsbHkgZG9lcyB0aGUgdGV4dCBsYXlvdXQgY2FuIGFjY2VzcyB0aG9zZSB0YWJsZXMgd2l0aG91dAorICAqICAgIGVycm9yIGNoZWNraW5nICh3aGljaCBjYW4gYmUgcXVpdGUgdGltZSBjb25zdW1pbmcpLgorICAqCisgICogQGlucHV0OgorICAqICAgIGZhY2UgOjoKKyAgKiAgICAgICBBIGhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4KKyAgKgorICAqICAgIHZhbGlkYXRpb25fZmxhZ3MgOjoKKyAgKiAgICAgICBBIGJpdCBmaWVsZCB3aGljaCBzcGVjaWZpZXMgdGhlIHRhYmxlcyB0byBiZSB2YWxpZGF0ZWQuICBTZWUKKyAgKiAgICAgICBARlRfVkFMSURBVEVfT1RYWFggZm9yIHBvc3NpYmxlIHZhbHVlcy4KKyAgKgorICAqIEBvdXRwdXQ6CisgICogICAgQkFTRV90YWJsZSA6OgorICAqICAgICAgIEEgcG9pbnRlciB0byB0aGUgQkFTRSB0YWJsZS4KKyAgKgorICAqICAgIEdERUZfdGFibGUgOjoKKyAgKiAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEdERUYgdGFibGUuCisgICoKKyAgKiAgICBHUE9TX3RhYmxlIDo6CisgICogICAgICAgQSBwb2ludGVyIHRvIHRoZSBHUE9TIHRhYmxlLgorICAqCisgICogICAgR1NVQl90YWJsZSA6OgorICAqICAgICAgIEEgcG9pbnRlciB0byB0aGUgR1NVQiB0YWJsZS4KKyAgKgorICAqICAgIEpTVEZfdGFibGUgOjoKKyAgKiAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEpTVEYgdGFibGUuCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgKgorICAqIEBub3RlOgorICAqICAgVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdpdGggT3BlblR5cGUgZm9udHMsIHJldHVybmluZyBhbiBlcnJvcgorICAqICAgb3RoZXJ3aXNlLgorICAqCisgICogICBBZnRlciB1c2UsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZGVhbGxvY2F0ZSB0aGUgZml2ZSB0YWJsZXMgd2l0aAorICAqICAgQEZUX09wZW5UeXBlX0ZyZWUuICBBIE5VTEwgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIHRhYmxlIGVpdGhlcgorICAqICAgZG9lc24ndCBleGlzdCBpbiB0aGUgZm9udCwgb3IgdGhlIGFwcGxpY2F0aW9uIGhhc24ndCBhc2tlZCBmb3IKKyAgKiAgIHZhbGlkYXRpb24uCisgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9PcGVuVHlwZV9WYWxpZGF0ZSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICB2YWxpZGF0aW9uX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICpCQVNFX3RhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICpHREVGX3RhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICpHUE9TX3RhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICpHU1VCX3RhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICpKU1RGX3RhYmxlICk7CisKKyAgLyogKi8KKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICAgRlRfT3BlblR5cGVfRnJlZQorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIEZyZWUgdGhlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgT3BlblR5cGUgdmFsaWRhdG9yLgorICAqCisgICogQGlucHV0OgorICAqICAgIGZhY2UgOjoKKyAgKiAgICAgICBBIGhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4KKyAgKgorICAqICAgIHRhYmxlIDo6CisgICogICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0aGF0IGlzIGFsbG9jYXRlZCBieQorICAqICAgICAgIEBGVF9PcGVuVHlwZV9WYWxpZGF0ZS4KKyAgKgorICAqIEBub3RlOgorICAqICAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgdG8gZnJlZSB0aGUgYnVmZmVyIGFsbG9jYXRlZCBieQorICAqICAgQEZUX09wZW5UeXBlX1ZhbGlkYXRlIG9ubHkuCisgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX09wZW5UeXBlX0ZyZWUoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgdGFibGUgKTsKKworCisgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUT1RWQUxfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0b3V0bG4uaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRvdXRsbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhOTQ5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0b3V0bG4uaApAQCAtMCwwICsxLDU2MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRvdXRsbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFN1cHBvcnQgZm9yIHRoZSBGVF9PdXRsaW5lIHR5cGUgdXNlZCB0byBzdG9yZSBnbHlwaCBzaGFwZXMgb2YgICAgICAgICovCisvKiAgICBtb3N0IHNjYWxhYmxlIGZvbnQgZm9ybWF0cyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAzLCAyMDA1LTIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUT1VUTE5fSF9fCisjZGVmaW5lIF9fRlRPVVRMTl9IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmVfcHJvY2Vzc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE91dGxpbmUgUHJvY2Vzc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZ1bmN0aW9ucyB0byBjcmVhdGUsIHRyYW5zZm9ybSwgYW5kIHJlbmRlciB2ZWN0b3JpYWwgZ2x5cGggaW1hZ2VzLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyByb3V0aW5lcyB1c2VkIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSBzY2FsYWJsZSAqLworICAvKiAgICBnbHlwaCBpbWFnZXMga25vd24gYXMgYG91dGxpbmVzJy4gIFRoZXNlIGNhbiBhbHNvIGJlIG1lYXN1cmVkLCAgICAgKi8KKyAgLyogICAgdHJhbnNmb3JtZWQsIGFuZCBjb252ZXJ0ZWQgaW50byBiaXRtYXBzIGFuZCBwaXhtYXBzLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3JkZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09VVExJTkVfRkxBR1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX05ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9Eb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfQ29weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX1RyYW5zbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9UcmFuc2Zvcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfRW1ib2xkZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0VtYm9sZGVuWFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9SZXZlcnNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9HZXRfQ0JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfR2V0X0JCb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9HZXRfQml0bWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfUmVuZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9EZWNvbXBvc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfRnVuY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX01vdmVUb19GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9MaW5lVG9fRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfQ29uaWNUb19GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0N1YmljVG9fRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9EZWNvbXBvc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2FsayBvdmVyIGFuIG91dGxpbmUncyBzdHJ1Y3R1cmUgdG8gZGVjb21wb3NlIGl0IGludG8gaW5kaXZpZHVhbCAgICovCisgIC8qICAgIHNlZ21lbnRzIGFuZCBCw6l6aWVyIGFyY3MuICBUaGlzIGZ1bmN0aW9uIGFsc28gZW1pdHMgYG1vdmUgdG8nICAgICAgKi8KKyAgLyogICAgb3BlcmF0aW9ucyB0byBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgbmV3IGNvbnRvdXJzIGluIHRoZSBvdXRsaW5lLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0bGluZSAgICAgICAgOjogQSBwb2ludGVyIHRvIHRoZSBzb3VyY2UgdGFyZ2V0LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdW5jX2ludGVyZmFjZSA6OiBBIHRhYmxlIG9mIGBlbWl0dGVycycsIGkuZS4sIGZ1bmN0aW9uIHBvaW50ZXJzICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgY2FsbGVkIGR1cmluZyBkZWNvbXBvc2l0aW9uIHRvIGluZGljYXRlIHBhdGggICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgICAgICAgICAgIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB3aGljaCBpcyBwYXNzZWQgdG8gZWFjaCAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVyIGR1cmluZyB0aGUgZGVjb21wb3NpdGlvbi4gIEl0IGNhbiBiZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgdXNlZCB0byBzdG9yZSB0aGUgc3RhdGUgZHVyaW5nIHRoZSAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgIGRlY29tcG9zaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfRGVjb21wb3NlKCBGVF9PdXRsaW5lKiAgICAgICAgICAgICAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX091dGxpbmVfRnVuY3MqICBmdW5jX2ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICB1c2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX05ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDcmVhdGUgYSBuZXcgb3V0bGluZSBvZiBhIGdpdmVuIHNpemUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgICA6OiBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSBvYmplY3QgZnJvbSB3aGVyZSB0aGUgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgb3V0bGluZSBpcyBhbGxvY2F0ZWQuICBOb3RlIGhvd2V2ZXIgdGhhdCB0aGUgbmV3ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIG91dGxpbmUgd2lsbCAqbm90KiBuZWNlc3NhcmlseSBiZSAqZnJlZWQqLCB3aGVuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBkZXN0cm95aW5nIHRoZSBsaWJyYXJ5LCBieSBARlRfRG9uZV9GcmVlVHlwZS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bVBvaW50cyAgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2ludHMgd2l0aGluIHRoZSBvdXRsaW5lLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBNdXN0IGJlIHNtYWxsZXIgdGhhbiBvciBlcXVhbCB0byAweEZGRkYgKDY1NTM1KS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bUNvbnRvdXJzIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb250b3VycyB3aXRoaW4gdGhlIG91dGxpbmUuICAqLworICAvKiAgICAgICAgICAgICAgICAgICBUaGlzIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIDAgdG8gYG51bVBvaW50cycuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhbm91dGxpbmUgICA6OiBBIGhhbmRsZSB0byB0aGUgbmV3IG91dGxpbmUuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVhc29uIHdoeSB0aGlzIGZ1bmN0aW9uIHRha2VzIGEgYGxpYnJhcnknIHBhcmFtZXRlciBpcyBzaW1wbHkgKi8KKyAgLyogICAgdG8gdXNlIHRoZSBsaWJyYXJ5J3MgbWVtb3J5IGFsbG9jYXRvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9OZXcoIEZUX0xpYnJhcnkgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIG51bVBvaW50cywKKyAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICBudW1Db250b3VycywKKyAgICAgICAgICAgICAgICAgIEZUX091dGxpbmUgICphbm91dGxpbmUgKTsKKworCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9PdXRsaW5lX05ld19JbnRlcm5hbCggRlRfTWVtb3J5ICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICBudW1Qb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgbnVtQ29udG91cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lICAqYW5vdXRsaW5lICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZXN0cm95IGFuIG91dGxpbmUgY3JlYXRlZCB3aXRoIEBGVF9PdXRsaW5lX05ldy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIG9mIHRoZSBsaWJyYXJ5IG9iamVjdCB1c2VkIHRvIGFsbG9jYXRlIHRoZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lIDo6IEEgcG9pbnRlciB0byB0aGUgb3V0bGluZSBvYmplY3QgdG8gYmUgZGlzY2FyZGVkLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiB0aGUgb3V0bGluZSdzIGBvd25lcicgZmllbGQgaXMgbm90IHNldCwgb25seSB0aGUgb3V0bGluZSAgICAgICAgKi8KKyAgLyogICAgZGVzY3JpcHRvciB3aWxsIGJlIHJlbGVhc2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVhc29uIHdoeSB0aGlzIGZ1bmN0aW9uIHRha2VzIGFuIGBsaWJyYXJ5JyBwYXJhbWV0ZXIgaXMgICAgICAgKi8KKyAgLyogICAgc2ltcGx5IHRvIHVzZSBmdF9tZW1fZnJlZSgpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9Eb25lKCBGVF9MaWJyYXJ5ICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgb3V0bGluZSApOworCisKKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfRG9uZV9JbnRlcm5hbCggRlRfTWVtb3J5ICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgb3V0bGluZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9DaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ2hlY2sgdGhlIGNvbnRlbnRzIG9mIGFuIG91dGxpbmUgZGVzY3JpcHRvci4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0bGluZSA6OiBBIGhhbmRsZSB0byBhIHNvdXJjZSBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9DaGVjayggRlRfT3V0bGluZSogIG91dGxpbmUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfR2V0X0NCb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiBhbiBvdXRsaW5lJ3MgYGNvbnRyb2wgYm94Jy4gIFRoZSBjb250cm9sIGJveCBlbmNsb3NlcyBhbGwgICAqLworICAvKiAgICB0aGUgb3V0bGluZSdzIHBvaW50cywgaW5jbHVkaW5nIELDqXppZXIgY29udHJvbCBwb2ludHMuICBUaG91Z2ggaXQgICovCisgIC8qICAgIGNvaW5jaWRlcyB3aXRoIHRoZSBleGFjdCBib3VuZGluZyBib3ggZm9yIG1vc3QgZ2x5cGhzLCBpdCBjYW4gYmUgICAqLworICAvKiAgICBzbGlnaHRseSBsYXJnZXIgaW4gc29tZSBzaXR1YXRpb25zIChsaWtlIHdoZW4gcm90YXRpbmcgYW4gb3V0bGluZSAgKi8KKyAgLyogICAgd2hpY2ggY29udGFpbnMgQsOpemllciBvdXRzaWRlIGFyY3MpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29tcHV0aW5nIHRoZSBjb250cm9sIGJveCBpcyB2ZXJ5IGZhc3QsIHdoaWxlIGdldHRpbmcgdGhlIGJvdW5kaW5nICovCisgIC8qICAgIGJveCBjYW4gdGFrZSBtdWNoIG1vcmUgdGltZSBhcyBpdCBuZWVkcyB0byB3YWxrIG92ZXIgYWxsIHNlZ21lbnRzICAqLworICAvKiAgICBhbmQgYXJjcyBpbiB0aGUgb3V0bGluZS4gIFRvIGdldCB0aGUgbGF0dGVyLCB5b3UgY2FuIHVzZSB0aGUgICAgICAgKi8KKyAgLyogICAgYGZ0YmJveCcgY29tcG9uZW50IHdoaWNoIGlzIGRlZGljYXRlZCB0byB0aGlzIHNpbmdsZSB0YXNrLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0bGluZSA6OiBBIHBvaW50ZXIgdG8gdGhlIHNvdXJjZSBvdXRsaW5lIGRlc2NyaXB0b3IuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWNib3ggICA6OiBUaGUgb3V0bGluZSdzIGNvbnRyb2wgYm94LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2VlIEBGVF9HbHlwaF9HZXRfQ0JveCBmb3IgYSBkaXNjdXNzaW9uIG9mIHRyaWNreSBmb250cy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9PdXRsaW5lX0dldF9DQm94KCBjb25zdCBGVF9PdXRsaW5lKiAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQkJveCAgICAgICAgICAgKmFjYm94ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX1RyYW5zbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBcHBseSBhIHNpbXBsZSB0cmFuc2xhdGlvbiB0byB0aGUgcG9pbnRzIG9mIGFuIG91dGxpbmUuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lIDo6IEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IG91dGxpbmUgZGVzY3JpcHRvci4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4T2Zmc2V0IDo6IFRoZSBob3Jpem9udGFsIG9mZnNldC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlPZmZzZXQgOjogVGhlIHZlcnRpY2FsIG9mZnNldC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfT3V0bGluZV9UcmFuc2xhdGUoIGNvbnN0IEZUX091dGxpbmUqICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgICAgICAgIHhPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgICAgICAgeU9mZnNldCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9Db3B5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29weSBhbiBvdXRsaW5lIGludG8gYW5vdGhlciBvbmUuICBCb3RoIG9iamVjdHMgbXVzdCBoYXZlIHRoZSAgICAgICovCisgIC8qICAgIHNhbWUgc2l6ZXMgKG51bWJlciBvZiBwb2ludHMgJiBudW1iZXIgb2YgY29udG91cnMpIHdoZW4gdGhpcyAgICAgICAqLworICAvKiAgICBmdW5jdGlvbiBpcyBjYWxsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzb3VyY2UgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YXJnZXQgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9PdXRsaW5lX0NvcHkoIGNvbnN0IEZUX091dGxpbmUqICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSAgICAgICAgKnRhcmdldCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9UcmFuc2Zvcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQXBwbHkgYSBzaW1wbGUgMngyIG1hdHJpeCB0byBhbGwgb2YgYW4gb3V0bGluZSdzIHBvaW50cy4gIFVzZWZ1bCAgICovCisgIC8qICAgIGZvciBhcHBseWluZyByb3RhdGlvbnMsIHNsYW50aW5nLCBmbGlwcGluZywgZXRjLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmUgOjogQSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgb3V0bGluZSBkZXNjcmlwdG9yLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hdHJpeCAgOjogQSBwb2ludGVyIHRvIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFlvdSBjYW4gdXNlIEBGVF9PdXRsaW5lX1RyYW5zbGF0ZSBpZiB5b3UgbmVlZCB0byB0cmFuc2xhdGUgdGhlICAgICAqLworICAvKiAgICBvdXRsaW5lJ3MgcG9pbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX091dGxpbmVfVHJhbnNmb3JtKCBjb25zdCBGVF9PdXRsaW5lKiAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX01hdHJpeCogICBtYXRyaXggKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfRW1ib2xkZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVtYm9sZGVuIGFuIG91dGxpbmUuICBUaGUgbmV3IG91dGxpbmUgd2lsbCBiZSBhdCBtb3N0IDR+dGltZXMgICAgICAqLworICAvKiAgICBgc3RyZW5ndGgnIHBpeGVscyB3aWRlciBhbmQgaGlnaGVyLiAgWW91IG1heSB0aGluayBvZiB0aGUgbGVmdCBhbmQgKi8KKyAgLyogICAgYm90dG9tIGJvcmRlcnMgYXMgdW5jaGFuZ2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOZWdhdGl2ZSBgc3RyZW5ndGgnIHZhbHVlcyB0byByZWR1Y2UgdGhlIG91dGxpbmUgdGhpY2tuZXNzIGFyZSAgICAgKi8KKyAgLyogICAgcG9zc2libGUgYWxzby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0bGluZSAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZW5ndGggOjogSG93IHN0cm9uZyB0aGUgZ2x5cGggaXMgZW1ib2xkZW5lZC4gIEV4cHJlc3NlZCBpbiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIDI2LjYgcGl4ZWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSB1c2VkIGFsZ29yaXRobSB0byBpbmNyZWFzZSBvciBkZWNyZWFzZSB0aGUgdGhpY2tuZXNzIG9mIHRoZSAgICAqLworICAvKiAgICBnbHlwaCBkb2Vzbid0IGNoYW5nZSB0aGUgbnVtYmVyIG9mIHBvaW50czsgdGhpcyBtZWFucyB0aGF0IGNlcnRhaW4gKi8KKyAgLyogICAgc2l0dWF0aW9ucyBsaWtlIGFjdXRlIGFuZ2xlcyBvciBpbnRlcnNlY3Rpb25zIGFyZSBzb21ldGltZXMgICAgICAgICovCisgIC8qICAgIGhhbmRsZWQgaW5jb3JyZWN0bHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgeW91IG5lZWQgYGJldHRlcicgbWV0cmljcyB2YWx1ZXMgeW91IHNob3VsZCBjYWxsICAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9PdXRsaW5lX0dldF9DQm94IG9yIEBGVF9PdXRsaW5lX0dldF9CQm94LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRXhhbXBsZSBjYWxsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBGVF9Mb2FkX0dseXBoKCBmYWNlLCBpbmRleCwgRlRfTE9BRF9ERUZBVUxUICk7ICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgaWYgKCBmYWNlLT5zbG90LT5mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgKSAgICAgICAgICAgICAqLworICAvKiAgICAgICAgRlRfT3V0bGluZV9FbWJvbGRlbiggJmZhY2UtPnNsb3QtPm91dGxpbmUsIHN0cmVuZ3RoICk7ICAgICAgICAgKi8KKyAgLyogICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9FbWJvbGRlbiggRlRfT3V0bGluZSogIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICBzdHJlbmd0aCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9FbWJvbGRlblhZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRW1ib2xkZW4gYW4gb3V0bGluZS4gIFRoZSBuZXcgb3V0bGluZSB3aWxsIGJlIGB4c3RyZW5ndGgnIHBpeGVscyAgICovCisgIC8qICAgIHdpZGVyIGFuZCBgeXN0cmVuZ3RoJyBwaXhlbHMgaGlnaGVyLiAgT3RoZXJ3aXNlLCBpdCBpcyBzaW1pbGFyIHRvICAqLworICAvKiAgICBARlRfT3V0bGluZV9FbWJvbGRlbiwgd2hpY2ggdXNlcyB0aGUgc2FtZSBzdHJlbmd0aCBpbiBib3RoICAgICAgICAgKi8KKyAgLyogICAgZGlyZWN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9FbWJvbGRlblhZKCBGVF9PdXRsaW5lKiAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgeHN0cmVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICB5c3RyZW5ndGggKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfUmV2ZXJzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldmVyc2UgdGhlIGRyYXdpbmcgZGlyZWN0aW9uIG9mIGFuIG91dGxpbmUuICBUaGlzIGlzIHVzZWQgdG8gICAgICAqLworICAvKiAgICBlbnN1cmUgY29uc2lzdGVudCBmaWxsIGNvbnZlbnRpb25zIGZvciBtaXJyb3JlZCBnbHlwaHMuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lIDo6IEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IG91dGxpbmUgZGVzY3JpcHRvci4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIHRvZ2dsZXMgdGhlIGJpdCBmbGFnIEBGVF9PVVRMSU5FX1JFVkVSU0VfRklMTCBpbiAgICAgKi8KKyAgLyogICAgdGhlIG91dGxpbmUncyBgZmxhZ3MnIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJdCBzaG91bGRuJ3QgYmUgdXNlZCBieSBhIG5vcm1hbCBjbGllbnQgYXBwbGljYXRpb24sIHVubGVzcyBpdCAgICAgKi8KKyAgLyogICAga25vd3Mgd2hhdCBpdCBpcyBkb2luZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9PdXRsaW5lX1JldmVyc2UoIEZUX091dGxpbmUqICBvdXRsaW5lICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0dldF9CaXRtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZW5kZXIgYW4gb3V0bGluZSB3aXRoaW4gYSBiaXRtYXAuICBUaGUgb3V0bGluZSdzIGltYWdlIGlzIHNpbXBseSAgKi8KKyAgLyogICAgT1ItZWQgdG8gdGhlIHRhcmdldCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSB0byBhIEZyZWVUeXBlIGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lIDo6IEEgcG9pbnRlciB0byB0aGUgc291cmNlIG91dGxpbmUgZGVzY3JpcHRvci4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhYml0bWFwIDo6IEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IGJpdG1hcCBkZXNjcmlwdG9yLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgTk9UIENSRUFURSB0aGUgYml0bWFwLCBpdCBvbmx5IHJlbmRlcnMgYW4gICAgICAgKi8KKyAgLyogICAgb3V0bGluZSBpbWFnZSB3aXRoaW4gdGhlIG9uZSB5b3UgcGFzcyB0byBpdCEgIENvbnNlcXVlbnRseSwgdGhlICAgICovCisgIC8qICAgIHZhcmlvdXMgZmllbGRzIGluIGBhYml0bWFwJyBzaG91bGQgYmUgc2V0IGFjY29yZGluZ2x5LiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSXQgd2lsbCB1c2UgdGhlIHJhc3RlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBkZWZhdWx0IGdseXBoIGZvcm1hdC4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgdmFsdWUgb2YgdGhlIGBudW1fZ3JheXMnIGZpZWxkIGluIGBhYml0bWFwJyBpcyBpZ25vcmVkLiAgSWYgICAgKi8KKyAgLyogICAgeW91IHNlbGVjdCB0aGUgZ3JheS1sZXZlbCByYXN0ZXJpemVyLCBhbmQgeW91IHdhbnQgbGVzcyB0aGFuIDI1NiAgICovCisgIC8qICAgIGdyYXkgbGV2ZWxzLCB5b3UgaGF2ZSB0byB1c2UgQEZUX091dGxpbmVfUmVuZGVyIGRpcmVjdGx5LiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfR2V0X0JpdG1hcCggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgICAgICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0JpdG1hcCAgKmFiaXRtYXAgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfUmVuZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJlbmRlciBhbiBvdXRsaW5lIHdpdGhpbiBhIGJpdG1hcCB1c2luZyB0aGUgY3VycmVudCBzY2FuLWNvbnZlcnQuICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgYW4gQEZUX1Jhc3Rlcl9QYXJhbXMgc3RydWN0dXJlIGFzIGFuIGFyZ3VtZW50LCAgKi8KKyAgLyogICAgYWxsb3dpbmcgYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBkaXJlY3QgY29tcG9zaXRpb24sIHRyYW5zbHVjZW5jeSwgICovCisgIC8qICAgIGV0Yy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogQSBoYW5kbGUgdG8gYSBGcmVlVHlwZSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0bGluZSA6OiBBIHBvaW50ZXIgdG8gdGhlIHNvdXJjZSBvdXRsaW5lIGRlc2NyaXB0b3IuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGFyYW1zICA6OiBBIHBvaW50ZXIgdG8gYW4gQEZUX1Jhc3Rlcl9QYXJhbXMgc3RydWN0dXJlIHVzZWQgdG8gICAgICovCisgIC8qICAgICAgICAgICAgICAgZGVzY3JpYmUgdGhlIHJlbmRlcmluZyBvcGVyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFlvdSBzaG91bGQga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcgYW5kIGhvdyBARlRfUmFzdGVyX1BhcmFtcyB3b3JrcyAqLworICAvKiAgICB0byB1c2UgdGhpcyBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBmaWVsZCBgcGFyYW1zLnNvdXJjZScgd2lsbCBiZSBzZXQgdG8gYG91dGxpbmUnIGJlZm9yZSB0aGUgc2NhbiAqLworICAvKiAgICBjb252ZXJ0ZXIgaXMgY2FsbGVkLCB3aGljaCBtZWFucyB0aGF0IHRoZSB2YWx1ZSB5b3UgZ2l2ZSB0byBpdCBpcyAgKi8KKyAgLyogICAgYWN0dWFsbHkgaWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZ3JheS1sZXZlbCByYXN0ZXJpemVyIGFsd2F5cyB1c2VzIDI1NiBncmF5IGxldmVscy4gIElmIHlvdSAgICAgKi8KKyAgLyogICAgd2FudCBsZXNzIGdyYXkgbGV2ZWxzLCB5b3UgaGF2ZSB0byBwcm92aWRlIHlvdXIgb3duIHNwYW4gY2FsbGJhY2suICovCisgIC8qICAgIFNlZSB0aGUgQEZUX1JBU1RFUl9GTEFHX0RJUkVDVCB2YWx1ZSBvZiB0aGUgYGZsYWdzJyBmaWVsZCBpbiB0aGUgICAqLworICAvKiAgICBARlRfUmFzdGVyX1BhcmFtcyBzdHJ1Y3R1cmUgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9PdXRsaW5lX1JlbmRlciggRlRfTGlicmFyeSAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgICAgICAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1Jhc3Rlcl9QYXJhbXMqICBwYXJhbXMgKTsKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZW51bToKKyAgKiAgIEZUX09yaWVudGF0aW9uCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICBBIGxpc3Qgb2YgdmFsdWVzIHVzZWQgdG8gZGVzY3JpYmUgYW4gb3V0bGluZSdzIGNvbnRvdXIgb3JpZW50YXRpb24uCisgICoKKyAgKiAgIFRoZSBUcnVlVHlwZSBhbmQgUG9zdFNjcmlwdCBzcGVjaWZpY2F0aW9ucyB1c2UgZGlmZmVyZW50IGNvbnZlbnRpb25zCisgICogICB0byBkZXRlcm1pbmUgd2hldGhlciBvdXRsaW5lIGNvbnRvdXJzIHNob3VsZCBiZSBmaWxsZWQgb3IgdW5maWxsZWQuCisgICoKKyAgKiBAdmFsdWVzOgorICAqICAgRlRfT1JJRU5UQVRJT05fVFJVRVRZUEUgOjoKKyAgKiAgICAgQWNjb3JkaW5nIHRvIHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uLCBjbG9ja3dpc2UgY29udG91cnMgbXVzdAorICAqICAgICBiZSBmaWxsZWQsIGFuZCBjb3VudGVyLWNsb2Nrd2lzZSBvbmVzIG11c3QgYmUgdW5maWxsZWQuCisgICoKKyAgKiAgIEZUX09SSUVOVEFUSU9OX1BPU1RTQ1JJUFQgOjoKKyAgKiAgICAgQWNjb3JkaW5nIHRvIHRoZSBQb3N0U2NyaXB0IHNwZWNpZmljYXRpb24sIGNvdW50ZXItY2xvY2t3aXNlIGNvbnRvdXJzCisgICogICAgIG11c3QgYmUgZmlsbGVkLCBhbmQgY2xvY2t3aXNlIG9uZXMgbXVzdCBiZSB1bmZpbGxlZC4KKyAgKgorICAqICAgRlRfT1JJRU5UQVRJT05fRklMTF9SSUdIVCA6OgorICAqICAgICBUaGlzIGlzIGlkZW50aWNhbCB0byBARlRfT1JJRU5UQVRJT05fVFJVRVRZUEUsIGJ1dCBpcyB1c2VkIHRvCisgICogICAgIHJlbWVtYmVyIHRoYXQgaW4gVHJ1ZVR5cGUsIGV2ZXJ5dGhpbmcgdGhhdCBpcyB0byB0aGUgcmlnaHQgb2YKKyAgKiAgICAgdGhlIGRyYXdpbmcgZGlyZWN0aW9uIG9mIGEgY29udG91ciBtdXN0IGJlIGZpbGxlZC4KKyAgKgorICAqICAgRlRfT1JJRU5UQVRJT05fRklMTF9MRUZUIDo6CisgICogICAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIEBGVF9PUklFTlRBVElPTl9QT1NUU0NSSVBULCBidXQgaXMgdXNlZCB0bworICAqICAgICByZW1lbWJlciB0aGF0IGluIFBvc3RTY3JpcHQsIGV2ZXJ5dGhpbmcgdGhhdCBpcyB0byB0aGUgbGVmdCBvZgorICAqICAgICB0aGUgZHJhd2luZyBkaXJlY3Rpb24gb2YgYSBjb250b3VyIG11c3QgYmUgZmlsbGVkLgorICAqCisgICogICBGVF9PUklFTlRBVElPTl9OT05FIDo6CisgICogICAgIFRoZSBvcmllbnRhdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4gIFRoYXQgaXMsIGRpZmZlcmVudCBwYXJ0cyBvZgorICAqICAgICB0aGUgZ2x5cGggaGF2ZSBkaWZmZXJlbnQgb3JpZW50YXRpb24uCisgICoKKyAgKi8KKyAgdHlwZWRlZiBlbnVtICBGVF9PcmllbnRhdGlvbl8KKyAgeworICAgIEZUX09SSUVOVEFUSU9OX1RSVUVUWVBFICAgPSAwLAorICAgIEZUX09SSUVOVEFUSU9OX1BPU1RTQ1JJUFQgPSAxLAorICAgIEZUX09SSUVOVEFUSU9OX0ZJTExfUklHSFQgPSBGVF9PUklFTlRBVElPTl9UUlVFVFlQRSwKKyAgICBGVF9PUklFTlRBVElPTl9GSUxMX0xFRlQgID0gRlRfT1JJRU5UQVRJT05fUE9TVFNDUklQVCwKKyAgICBGVF9PUklFTlRBVElPTl9OT05FCisKKyAgfSBGVF9PcmllbnRhdGlvbjsKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICBGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbgorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgVGhpcyBmdW5jdGlvbiBhbmFseXplcyBhIGdseXBoIG91dGxpbmUgYW5kIHRyaWVzIHRvIGNvbXB1dGUgaXRzCisgICogICBmaWxsIG9yaWVudGF0aW9uIChzZWUgQEZUX09yaWVudGF0aW9uKS4gIFRoaXMgaXMgZG9uZSBieSBjb21wdXRpbmcKKyAgKiAgIHRoZSBkaXJlY3Rpb24gb2YgZWFjaCBnbG9iYWwgaG9yaXpvbnRhbCBhbmQvb3IgdmVydGljYWwgZXh0cmVtYQorICAqICAgd2l0aGluIHRoZSBvdXRsaW5lLgorICAqCisgICogICBOb3RlIHRoYXQgdGhpcyB3aWxsIHJldHVybiBARlRfT1JJRU5UQVRJT05fVFJVRVRZUEUgZm9yIGVtcHR5CisgICogICBvdXRsaW5lcy4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgIG91dGxpbmUgOjoKKyAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBvdXRsaW5lLgorICAqCisgICogQHJldHVybjoKKyAgKiAgIFRoZSBvcmllbnRhdGlvbi4KKyAgKgorICAqLworICBGVF9FWFBPUlQoIEZUX09yaWVudGF0aW9uICkKKyAgRlRfT3V0bGluZV9HZXRfT3JpZW50YXRpb24oIEZUX091dGxpbmUqICBvdXRsaW5lICk7CisKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRPVVRMTl9IX18gKi8KKworCisvKiBFTkQgKi8KKworCisvKiBMb2NhbCBWYXJpYWJsZXM6ICovCisvKiBjb2Rpbmc6IHV0Zi04ICAgICovCisvKiBFbmQ6ICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0cGZyLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0cGZyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJjZDY3ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRwZnIuaApAQCAtMCwwICsxLDE3MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRwZnIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgYWNjZXNzaW5nIFBGUi1zcGVjaWZpYyBkYXRhIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA2LCAyMDA4LCAyMDA5IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRQRlJfSF9fCisjZGVmaW5lIF9fRlRQRlJfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGZyX2ZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUEZSIEZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUEZSL1RydWVEb2Mgc3BlY2lmaWMgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbiBvZiBQRlItc3BlY2lmaWMgZnVuY3Rpb25zLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBmdW5jdGlvbjoKKyAgKiAgICBGVF9HZXRfUEZSX01ldHJpY3MKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBSZXR1cm4gdGhlIG91dGxpbmUgYW5kIG1ldHJpY3MgcmVzb2x1dGlvbnMgb2YgYSBnaXZlbiBQRlIgZmFjZS4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgICBmYWNlIDo6IEhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4gIEl0IGNhbiBiZSBhIG5vbi1QRlIgZmFjZS4KKyAgKgorICAqIEBvdXRwdXQ6CisgICogICAgYW91dGxpbmVfcmVzb2x1dGlvbiA6OgorICAqICAgICAgT3V0bGluZSByZXNvbHV0aW9uLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBmYWNlLT51bml0c19wZXJfRU0nCisgICogICAgICBmb3Igbm9uLVBGUiBmb250cy4gIE9wdGlvbmFsIChwYXJhbWV0ZXIgY2FuIGJlIE5VTEwpLgorICAqCisgICogICAgYW1ldHJpY3NfcmVzb2x1dGlvbiA6OgorICAqICAgICAgTWV0cmljcyByZXNvbHV0aW9uLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBvdXRsaW5lX3Jlc29sdXRpb24nCisgICogICAgICBmb3Igbm9uLVBGUiBmb250cy4gIE9wdGlvbmFsIChwYXJhbWV0ZXIgY2FuIGJlIE5VTEwpLgorICAqCisgICogICAgYW1ldHJpY3NfeF9zY2FsZSA6OgorICAqICAgICAgQSAxNi4xNiBmaXhlZC1wb2ludCBudW1iZXIgdXNlZCB0byBzY2FsZSBkaXN0YW5jZSBleHByZXNzZWQKKyAgKiAgICAgIGluIG1ldHJpY3MgdW5pdHMgdG8gZGV2aWNlIHN1Yi1waXhlbHMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgKiAgICAgIGBmYWNlLT5zaXplLT54X3NjYWxlJywgYnV0IGZvciBtZXRyaWNzIG9ubHkuICBPcHRpb25hbCAocGFyYW1ldGVyCisgICogICAgICBjYW4gYmUgTlVMTCkuCisgICoKKyAgKiAgICBhbWV0cmljc195X3NjYWxlIDo6CisgICogICAgICBTYW1lIGFzIGBhbWV0cmljc194X3NjYWxlJyBidXQgZm9yIHRoZSB2ZXJ0aWNhbCBkaXJlY3Rpb24uCisgICogICAgICBvcHRpb25hbCAocGFyYW1ldGVyIGNhbiBiZSBOVUxMKS4KKyAgKgorICAqIEByZXR1cm46CisgICogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgKgorICAqIEBub3RlOgorICAqICAgSWYgdGhlIGlucHV0IGZhY2UgaXMgbm90IGEgUEZSLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFuIGVycm9yLgorICAqICAgSG93ZXZlciwgaW4gYWxsIGNhc2VzLCBpdCB3aWxsIHJldHVybiB2YWxpZCB2YWx1ZXMuCisgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfUEZSX01ldHJpY3MoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgKmFvdXRsaW5lX3Jlc29sdXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICphbWV0cmljc19yZXNvbHV0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAqYW1ldHJpY3NfeF9zY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgKmFtZXRyaWNzX3lfc2NhbGUgKTsKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBmdW5jdGlvbjoKKyAgKiAgICBGVF9HZXRfUEZSX0tlcm5pbmcKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBSZXR1cm4gdGhlIGtlcm5pbmcgcGFpciBjb3JyZXNwb25kaW5nIHRvIHR3byBnbHlwaHMgaW4gYSBQRlIgZmFjZS4KKyAgKiAgICBUaGUgZGlzdGFuY2UgaXMgZXhwcmVzc2VkIGluIG1ldHJpY3MgdW5pdHMsIHVubGlrZSB0aGUgcmVzdWx0IG9mCisgICogICAgQEZUX0dldF9LZXJuaW5nLgorICAqCisgICogQGlucHV0OgorICAqICAgIGZhY2UgIDo6IEEgaGFuZGxlIHRvIHRoZSBpbnB1dCBmYWNlLgorICAqCisgICogICAgbGVmdCAgOjogSW5kZXggb2YgdGhlIGxlZnQgZ2x5cGguCisgICoKKyAgKiAgICByaWdodCA6OiBJbmRleCBvZiB0aGUgcmlnaHQgZ2x5cGguCisgICoKKyAgKiBAb3V0cHV0OgorICAqICAgIGF2ZWN0b3IgOjogQSBrZXJuaW5nIHZlY3Rvci4KKyAgKgorICAqIEByZXR1cm46CisgICogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgKgorICAqIEBub3RlOgorICAqICAgIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybiBkaXN0YW5jZXMgaW4gb3JpZ2luYWwgUEZSIG1ldHJpY3MKKyAgKiAgICB1bml0cy4gIFRoaXMgaXMgdW5saWtlIEBGVF9HZXRfS2VybmluZyB3aXRoIHRoZSBARlRfS0VSTklOR19VTlNDQUxFRAorICAqICAgIG1vZGUsIHdoaWNoIGFsd2F5cyByZXR1cm5zIGRpc3RhbmNlcyBjb252ZXJ0ZWQgdG8gb3V0bGluZSB1bml0cy4KKyAgKgorICAqICAgIFlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgYHhfc2NhbGUnIGFuZCBgeV9zY2FsZScgcGFyYW1ldGVycworICAqICAgIHJldHVybmVkIGJ5IEBGVF9HZXRfUEZSX01ldHJpY3MgdG8gc2NhbGUgdGhlc2UgdG8gZGV2aWNlIHN1Yi1waXhlbHMuCisgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfUEZSX0tlcm5pbmcoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IgICphdmVjdG9yICk7CisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICAgRlRfR2V0X1BGUl9BZHZhbmNlCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgUmV0dXJuIGEgZ2l2ZW4gZ2x5cGggYWR2YW5jZSwgZXhwcmVzc2VkIGluIG9yaWdpbmFsIG1ldHJpY3MgdW5pdHMsCisgICogICAgZnJvbSBhIFBGUiBmb250LgorICAqCisgICogQGlucHV0OgorICAqICAgIGZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4KKyAgKgorICAqICAgIGdpbmRleCA6OiBUaGUgZ2x5cGggaW5kZXguCisgICoKKyAgKiBAb3V0cHV0OgorICAqICAgIGFhZHZhbmNlIDo6IFRoZSBnbHlwaCBhZHZhbmNlIGluIG1ldHJpY3MgdW5pdHMuCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgICBZb3UgY2FuIHVzZSB0aGUgYHhfc2NhbGUnIG9yIGB5X3NjYWxlJyByZXN1bHRzIG9mIEBGVF9HZXRfUEZSX01ldHJpY3MKKyAgKiAgICB0byBjb252ZXJ0IHRoZSBhZHZhbmNlIHRvIGRldmljZSBzdWItcGl4ZWxzIChpLmUuLCAxLzY0dGggb2YgcGl4ZWxzKS4KKyAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9QRlJfQWR2YW5jZSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAqYWFkdmFuY2UgKTsKKworIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFBGUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRyZW5kZXIuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRyZW5kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTQzN2RmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHJlbmRlci5oCkBAIC0wLDAgKzEsMjM4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHJlbmRlci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgcmVuZGVyZXIgbW9kdWxlcyBwdWJsaWMgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwNSwgMjAwNiwgMjAxMCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVFJFTkRFUl9IX18KKyNkZWZpbmUgX19GVFJFTkRFUl9IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmdG1vZGFwaS5oIgorI2luY2x1ZGUgImZ0Z2x5cGguaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZV9tYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBjcmVhdGUgYSBuZXcgZ2x5cGggb2JqZWN0ICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9HbHlwaF9Jbml0RnVuYykoIEZUX0dseXBoICAgICAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgIHNsb3QgKTsKKworICAvKiBkZXN0cm95cyBhIGdpdmVuIGdseXBoIG9iamVjdCAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9HbHlwaF9Eb25lRnVuYykoIEZUX0dseXBoICBnbHlwaCApOworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX0dseXBoX1RyYW5zZm9ybUZ1bmMpKCBGVF9HbHlwaCAgICAgICAgICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfTWF0cml4KiAgbWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICBkZWx0YSApOworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX0dseXBoX0dldEJCb3hGdW5jKSggRlRfR2x5cGggIGdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQkJveCogIGFiYm94ICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0dseXBoX0NvcHlGdW5jKSggRlRfR2x5cGggICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaCAgIHRhcmdldCApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9HbHlwaF9QcmVwYXJlRnVuYykoIEZUX0dseXBoICAgICAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgIHNsb3QgKTsKKworLyogZGVwcmVjYXRlZCAqLworI2RlZmluZSBGVF9HbHlwaF9Jbml0X0Z1bmMgICAgICAgRlRfR2x5cGhfSW5pdEZ1bmMKKyNkZWZpbmUgRlRfR2x5cGhfRG9uZV9GdW5jICAgICAgIEZUX0dseXBoX0RvbmVGdW5jCisjZGVmaW5lIEZUX0dseXBoX1RyYW5zZm9ybV9GdW5jICBGVF9HbHlwaF9UcmFuc2Zvcm1GdW5jCisjZGVmaW5lIEZUX0dseXBoX0JCb3hfRnVuYyAgICAgICBGVF9HbHlwaF9HZXRCQm94RnVuYworI2RlZmluZSBGVF9HbHlwaF9Db3B5X0Z1bmMgICAgICAgRlRfR2x5cGhfQ29weUZ1bmMKKyNkZWZpbmUgRlRfR2x5cGhfUHJlcGFyZV9GdW5jICAgIEZUX0dseXBoX1ByZXBhcmVGdW5jCisKKworICBzdHJ1Y3QgIEZUX0dseXBoX0NsYXNzXworICB7CisgICAgRlRfTG9uZyAgICAgICAgICAgICAgICAgZ2x5cGhfc2l6ZTsKKyAgICBGVF9HbHlwaF9Gb3JtYXQgICAgICAgICBnbHlwaF9mb3JtYXQ7CisgICAgRlRfR2x5cGhfSW5pdEZ1bmMgICAgICAgZ2x5cGhfaW5pdDsKKyAgICBGVF9HbHlwaF9Eb25lRnVuYyAgICAgICBnbHlwaF9kb25lOworICAgIEZUX0dseXBoX0NvcHlGdW5jICAgICAgIGdseXBoX2NvcHk7CisgICAgRlRfR2x5cGhfVHJhbnNmb3JtRnVuYyAgZ2x5cGhfdHJhbnNmb3JtOworICAgIEZUX0dseXBoX0dldEJCb3hGdW5jICAgIGdseXBoX2Jib3g7CisgICAgRlRfR2x5cGhfUHJlcGFyZUZ1bmMgICAgZ2x5cGhfcHJlcGFyZTsKKyAgfTsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9SZW5kZXJlcl9SZW5kZXJGdW5jKSggRlRfUmVuZGVyZXIgICAgICAgcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgICAgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogIG9yaWdpbiApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9SZW5kZXJlcl9UcmFuc2Zvcm1GdW5jKSggRlRfUmVuZGVyZXIgICAgICAgcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgICAgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX01hdHJpeCogIG1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgZGVsdGEgKTsKKworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1JlbmRlcmVyX0dldENCb3hGdW5jKSggRlRfUmVuZGVyZXIgICByZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JCb3gqICAgICAgY2JveCApOworCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1JlbmRlcmVyX1NldE1vZGVGdW5jKSggRlRfUmVuZGVyZXIgIHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgIG1vZGVfdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgIG1vZGVfcHRyICk7CisKKy8qIGRlcHJlY2F0ZWQgaWRlbnRpZmllcnMgKi8KKyNkZWZpbmUgRlRSZW5kZXJlcl9yZW5kZXIgIEZUX1JlbmRlcmVyX1JlbmRlckZ1bmMKKyNkZWZpbmUgRlRSZW5kZXJlcl90cmFuc2Zvcm0gIEZUX1JlbmRlcmVyX1RyYW5zZm9ybUZ1bmMKKyNkZWZpbmUgRlRSZW5kZXJlcl9nZXRDQm94ICBGVF9SZW5kZXJlcl9HZXRDQm94RnVuYworI2RlZmluZSBGVFJlbmRlcmVyX3NldE1vZGUgIEZUX1JlbmRlcmVyX1NldE1vZGVGdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SZW5kZXJlcl9DbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVuZGVyZXIgbW9kdWxlIGNsYXNzIGRlc2NyaXB0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByb290ICAgICAgICAgICAgOjogVGhlIHJvb3QgQEZUX01vZHVsZV9DbGFzcyBmaWVsZHMuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX2Zvcm1hdCAgICA6OiBUaGUgZ2x5cGggaW1hZ2UgZm9ybWF0IHRoaXMgcmVuZGVyZXIgaGFuZGxlcy4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmVuZGVyX2dseXBoICAgIDo6IEEgbWV0aG9kIHVzZWQgdG8gcmVuZGVyIHRoZSBpbWFnZSB0aGF0IGlzIGluIGEgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBnbHlwaCBzbG90IGludG8gYSBiaXRtYXAuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHJhbnNmb3JtX2dseXBoIDo6IEEgbWV0aG9kIHVzZWQgdG8gdHJhbnNmb3JtIHRoZSBpbWFnZSB0aGF0IGlzIGluICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICBhIGdpdmVuIGdseXBoIHNsb3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2V0X2dseXBoX2Nib3ggIDo6IEEgbWV0aG9kIHVzZWQgdG8gYWNjZXNzIHRoZSBnbHlwaCdzIGNib3guICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzZXRfbW9kZSAgICAgICAgOjogQSBtZXRob2QgdXNlZCB0byBwYXNzIGFkZGl0aW9uYWwgcGFyYW1ldGVycy4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3Rlcl9jbGFzcyAgICA6OiBGb3IgQEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FIHJlbmRlcmVycyBvbmx5LiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIHBvaW50ZXIgdG8gaXRzIHJhc3RlcidzIGNsYXNzLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9SZW5kZXJlcl9DbGFzc18KKyAgeworICAgIEZUX01vZHVsZV9DbGFzcyAgICAgICAgICAgIHJvb3Q7CisKKyAgICBGVF9HbHlwaF9Gb3JtYXQgICAgICAgICAgICBnbHlwaF9mb3JtYXQ7CisKKyAgICBGVF9SZW5kZXJlcl9SZW5kZXJGdW5jICAgICByZW5kZXJfZ2x5cGg7CisgICAgRlRfUmVuZGVyZXJfVHJhbnNmb3JtRnVuYyAgdHJhbnNmb3JtX2dseXBoOworICAgIEZUX1JlbmRlcmVyX0dldENCb3hGdW5jICAgIGdldF9nbHlwaF9jYm94OworICAgIEZUX1JlbmRlcmVyX1NldE1vZGVGdW5jICAgIHNldF9tb2RlOworCisgICAgRlRfUmFzdGVyX0Z1bmNzKiAgICAgICAgICAgcmFzdGVyX2NsYXNzOworCisgIH0gRlRfUmVuZGVyZXJfQ2xhc3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfUmVuZGVyZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXRyaWV2ZSB0aGUgY3VycmVudCByZW5kZXJlciBmb3IgYSBnaXZlbiBnbHlwaCBmb3JtYXQuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvcm1hdCAgOjogVGhlIGdseXBoIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgcmVuZGVyZXIgaGFuZGxlLiAgMH5pZiBub25lIGZvdW5kLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQgaWYgYSBtb2R1bGUgYWxyZWFkeSBleGlzdHMgYnkgdGhhdCBuYW1lLCAqLworICAvKiAgICBvciBpZiB0aGUgbW9kdWxlIHJlcXVpcmVzIGEgdmVyc2lvbiBvZiBGcmVlVHlwZSB0aGF0IGlzIHRvbyBncmVhdC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRvIGFkZCBhIG5ldyByZW5kZXJlciwgc2ltcGx5IHVzZSBARlRfQWRkX01vZHVsZS4gIFRvIHJldHJpZXZlIGEgICAqLworICAvKiAgICByZW5kZXJlciBieSBpdHMgbmFtZSwgdXNlIEBGVF9HZXRfTW9kdWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfUmVuZGVyZXIgKQorICBGVF9HZXRfUmVuZGVyZXIoIEZUX0xpYnJhcnkgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICBGVF9HbHlwaF9Gb3JtYXQgIGZvcm1hdCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2V0X1JlbmRlcmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2V0IHRoZSBjdXJyZW50IHJlbmRlcmVyIHRvIHVzZSwgYW5kIHNldCBhZGRpdGlvbmFsIG1vZGUuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSAgICA6OiBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmVuZGVyZXIgICA6OiBBIGhhbmRsZSB0byB0aGUgcmVuZGVyZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fcGFyYW1zIDo6IFRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCBwYXJhbWV0ZXJzLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhcmFtZXRlcnMgOjogQWRkaXRpb25hbCBwYXJhbWV0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluIGNhc2Ugb2Ygc3VjY2VzcywgdGhlIHJlbmRlcmVyIHdpbGwgYmUgdXNlZCB0byBjb252ZXJ0IGdseXBoICAgICAqLworICAvKiAgICBpbWFnZXMgaW4gdGhlIHJlbmRlcmVyJ3Mga25vd24gZm9ybWF0IGludG8gYml0bWFwcy4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIGN1cnJlbnQgcmVuZGVyZXIgZm9yIG90aGVyIGZvcm1hdHMuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ3VycmVudGx5LCBvbmx5IHRoZSBCL1cgcmVuZGVyZXIsIGlmIGNvbXBpbGVkIHdpdGggICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JBU1RFUl9PUFRJT05fQU5USV9BTElBU0lORyAocHJvdmlkaW5nIGEgNS1sZXZlbHMgICAgICAgICAgICAgICAqLworICAvKiAgICBhbnRpLWFsaWFzaW5nIG1vZGU7IHRoaXMgb3B0aW9uIG11c3QgYmUgc2V0IGRpcmVjdGx5IGluICAgICAgICAgICAgKi8KKyAgLyogICAgYGZ0cmFzdGVyLmMnIGFuZCBpcyB1bmRlZmluZWQgYnkgZGVmYXVsdCkgYWNjZXB0cyBhIHNpbmdsZSB0YWcgICAgICovCisgIC8qICAgIGBwYWw1JyB0byBzZXQgaXRzIGdyYXkgcGFsZXR0ZSBhcyBhIGNoYXJhY3RlciBzdHJpbmcgd2l0aCAgICAgICAgICAqLworICAvKiAgICA1fmVsZW1lbnRzLiAgQ29uc2VxdWVudGx5LCB0aGUgdGhpcmQgYW5kIGZvdXJ0aCBhcmd1bWVudCBhcmUgemVybyAgKi8KKyAgLyogICAgbm9ybWFsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU2V0X1JlbmRlcmVyKCBGVF9MaWJyYXJ5ICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcmVyICAgIHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgIG51bV9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgRlRfUGFyYW1ldGVyKiAgcGFyYW1ldGVycyApOworCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUUkVOREVSX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHNpemVzLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0c2l6ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGI0NDliCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHNpemVzLmgKQEAgLTAsMCArMSwxNTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c2l6ZXMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBzaXplIG9iamVjdHMgbWFuYWdlbWVudCAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAzLCAyMDA0LCAyMDA2LCAyMDA5IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFR5cGljYWwgYXBwbGljYXRpb24gd291bGQgbm9ybWFsbHkgbm90IG5lZWQgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucy4gICAqLworICAvKiBIb3dldmVyLCB0aGV5IGhhdmUgYmVlbiBwbGFjZWQgaW4gYSBwdWJsaWMgQVBJIGZvciB0aGUgcmFyZSBjYXNlcyAgICAgKi8KKyAgLyogd2hlcmUgdGhleSBhcmUgbmVlZGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRTSVpFU19IX18KKyNkZWZpbmUgX19GVFNJWkVTX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2l6ZXNfbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2l6ZSBNYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTWFuYWdpbmcgbXVsdGlwbGUgc2l6ZXMgcGVyIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBjcmVhdGluZyBhIG5ldyBmYWNlIG9iamVjdCAoZS5nLiwgd2l0aCBARlRfTmV3X0ZhY2UpLCBhbiAgICAgICovCisgIC8qICAgIEBGVF9TaXplIG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYW5kIHVzZWQgdG8gc3RvcmUgYWxsICAgICAqLworICAvKiAgICBwaXhlbC1zaXplIGRlcGVuZGVudCBpbmZvcm1hdGlvbiwgYXZhaWxhYmxlIGluIHRoZSBgZmFjZS0+c2l6ZScgICAgKi8KKyAgLyogICAgZmllbGQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJdCBpcyBob3dldmVyIHBvc3NpYmxlIHRvIGNyZWF0ZSBtb3JlIHNpemVzIGZvciBhIGdpdmVuIGZhY2UsICAgICAgKi8KKyAgLyogICAgbW9zdGx5IGluIG9yZGVyIHRvIG1hbmFnZSBzZXZlcmFsIGNoYXJhY3RlciBwaXhlbCBzaXplcyBvZiB0aGUgICAgICovCisgIC8qICAgIHNhbWUgZm9udCBmYW1pbHkgYW5kIHN0eWxlLiAgU2VlIEBGVF9OZXdfU2l6ZSBhbmQgQEZUX0RvbmVfU2l6ZS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IEBGVF9TZXRfUGl4ZWxfU2l6ZXMgYW5kIEBGVF9TZXRfQ2hhcl9TaXplIG9ubHkgICAgICAgICAgICovCisgIC8qICAgIG1vZGlmeSB0aGUgY29udGVudHMgb2YgdGhlIGN1cnJlbnQgYGFjdGl2ZScgc2l6ZTsgeW91IHRodXMgbmVlZCAgICAqLworICAvKiAgICB0byB1c2UgQEZUX0FjdGl2YXRlX1NpemUgdG8gY2hhbmdlIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIDk5JSBvZiBhcHBsaWNhdGlvbnMgd29uJ3QgbmVlZCB0aGUgZnVuY3Rpb25zIHByb3ZpZGVkIGhlcmUsICAgICAgICAqLworICAvKiAgICBlc3BlY2lhbGx5IGlmIHRoZXkgdXNlIHRoZSBjYWNoaW5nIHN1Yi1zeXN0ZW0sIHNvIGJlIGNhdXRpb3VzICAgICAgKi8KKyAgLyogICAgd2hlbiB1c2luZyB0aGVzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX05ld19TaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENyZWF0ZSBhIG5ldyBzaXplIG9iamVjdCBmcm9tIGEgZ2l2ZW4gZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gYSBwYXJlbnQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFzaXplIDo6IEEgaGFuZGxlIHRvIGEgbmV3IHNpemUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFlvdSBuZWVkIHRvIGNhbGwgQEZUX0FjdGl2YXRlX1NpemUgaW4gb3JkZXIgdG8gc2VsZWN0IHRoZSBuZXcgc2l6ZSAqLworICAvKiAgICBmb3IgdXBjb21pbmcgY2FsbHMgdG8gQEZUX1NldF9QaXhlbF9TaXplcywgQEZUX1NldF9DaGFyX1NpemUsICAgICAgKi8KKyAgLyogICAgQEZUX0xvYWRfR2x5cGgsIEBGVF9Mb2FkX0NoYXIsIGV0Yy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfTmV3X1NpemUoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgRlRfU2l6ZSogIHNpemUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RvbmVfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERpc2NhcmQgYSBnaXZlbiBzaXplIG9iamVjdC4gIE5vdGUgdGhhdCBARlRfRG9uZV9GYWNlICAgICAgICAgICAgICAqLworICAvKiAgICBhdXRvbWF0aWNhbGx5IGRpc2NhcmRzIGFsbCBzaXplIG9iamVjdHMgYWxsb2NhdGVkIHdpdGggICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX05ld19TaXplLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2l6ZSA6OiBBIGhhbmRsZSB0byBhIHRhcmdldCBzaXplIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfRG9uZV9TaXplKCBGVF9TaXplICBzaXplICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9BY3RpdmF0ZV9TaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFdmVuIHRob3VnaCBpdCBpcyBwb3NzaWJsZSB0byBjcmVhdGUgc2V2ZXJhbCBzaXplIG9iamVjdHMgZm9yIGEgICAgKi8KKyAgLyogICAgZ2l2ZW4gZmFjZSAoc2VlIEBGVF9OZXdfU2l6ZSBmb3IgZGV0YWlscyksIGZ1bmN0aW9ucyBsaWtlICAgICAgICAgICovCisgIC8qICAgIEBGVF9Mb2FkX0dseXBoIG9yIEBGVF9Mb2FkX0NoYXIgb25seSB1c2UgdGhlIG9uZSB3aGljaCBoYXMgYmVlbiAgICAqLworICAvKiAgICBhY3RpdmF0ZWQgbGFzdCB0byBkZXRlcm1pbmUgdGhlIGBjdXJyZW50IGNoYXJhY3RlciBwaXhlbCBzaXplJy4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYGFjdGl2YXRlJyBhIHByZXZpb3VzbHkgY3JlYXRlZCBzaXplICAqLworICAvKiAgICBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaXplIDo6IEEgaGFuZGxlIHRvIGEgdGFyZ2V0IHNpemUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiBgZmFjZScgaXMgdGhlIHNpemUncyBwYXJlbnQgZmFjZSBvYmplY3QsIHRoaXMgZnVuY3Rpb24gY2hhbmdlcyAgKi8KKyAgLyogICAgdGhlIHZhbHVlIG9mIGBmYWNlLT5zaXplJyB0byB0aGUgaW5wdXQgc2l6ZSBoYW5kbGUuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfQWN0aXZhdGVfU2l6ZSggRlRfU2l6ZSAgc2l6ZSApOworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFNJWkVTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHNuYW1lcy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHNuYW1lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExM2RiODEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0c25hbWVzLmgKQEAgLTAsMCArMSwyMDAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c25hbWVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBTaW1wbGUgaW50ZXJmYWNlIHRvIGFjY2VzcyBTRk5UIG5hbWUgdGFibGVzICh3aGljaCBhcmUgdXNlZCAgICAgICAgICAqLworLyogICAgdG8gaG9sZCBmb250IG5hbWVzLCBjb3B5cmlnaHQgaW5mbywgbm90aWNlcywgZXRjLikgKHNwZWNpZmljYXRpb24pLiAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGlzIGlzIF9ub3RfIHVzZWQgdG8gcmV0cmlldmUgZ2x5cGggbmFtZXMhICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAyLCAyMDAzLCAyMDA2LCAyMDA5LCAyMDEwIGJ5ICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUX1NGTlRfTkFNRVNfSF9fCisjZGVmaW5lIF9fRlRfU0ZOVF9OQU1FU19IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNmbnRfbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNGTlQgTmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFjY2VzcyB0aGUgbmFtZXMgZW1iZWRkZWQgaW4gVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlIGZpbGVzLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBUcnVlVHlwZSBhbmQgT3BlblR5cGUgc3BlY2lmaWNhdGlvbnMgYWxsb3cgdGhlIGluY2x1c2lvbiBvZiAgICAqLworICAvKiAgICBhIHNwZWNpYWwgYG5hbWVzIHRhYmxlJyBpbiBmb250IGZpbGVzLiAgVGhpcyB0YWJsZSBjb250YWlucyAgICAgICAgKi8KKyAgLyogICAgdGV4dHVhbCAoYW5kIGludGVybmF0aW9uYWxpemVkKSBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIGZvbnQsICAgICovCisgIC8qICAgIGxpa2UgZmFtaWx5IG5hbWUsIGNvcHlyaWdodCwgdmVyc2lvbiwgZXRjLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGRlZmluaXRpb25zIGJlbG93IGFyZSB1c2VkIHRvIGFjY2VzcyB0aGVtIGlmIGF2YWlsYWJsZS4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RlIHRoYXQgdGhpcyBoYXMgbm90aGluZyB0byBkbyB3aXRoIGdseXBoIG5hbWVzISAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2ZudE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCBhbiBTRk5UIGBuYW1lJyB0YWJsZSBlbnRyeS4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGxhdGZvcm1faWQgOjogVGhlIHBsYXRmb3JtIElEIGZvciBgc3RyaW5nJy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBlbmNvZGluZ19pZCA6OiBUaGUgZW5jb2RpbmcgSUQgZm9yIGBzdHJpbmcnLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxhbmd1YWdlX2lkIDo6IFRoZSBsYW5ndWFnZSBJRCBmb3IgYHN0cmluZycuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbmFtZV9pZCAgICAgOjogQW4gaWRlbnRpZmllciBmb3IgYHN0cmluZycuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJpbmcgICAgICA6OiBUaGUgYG5hbWUnIHN0cmluZy4gIE5vdGUgdGhhdCBpdHMgZm9ybWF0IGRpZmZlcnMgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSAocGxhdGZvcm0sZW5jb2RpbmcpIHBhaXIuICBJdCBjYW4gICovCisgIC8qICAgICAgICAgICAgICAgICAgIGJlIGEgUGFzY2FsIFN0cmluZywgYSBVVEYtMTYgb25lLCBldGMuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgR2VuZXJhbGx5IHNwZWFraW5nLCB0aGUgc3RyaW5nIGlzIG5vdCAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHplcm8tdGVybWluYXRlZC4gIFBsZWFzZSByZWZlciB0byB0aGUgVHJ1ZVR5cGUgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmluZ19sZW4gIDo6IFRoZSBsZW5ndGggb2YgYHN0cmluZycgaW4gYnl0ZXMuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBvc3NpYmxlIHZhbHVlcyBmb3IgYHBsYXRmb3JtX2lkJywgYGVuY29kaW5nX2lkJywgYGxhbmd1YWdlX2lkJywgICAqLworICAvKiAgICBhbmQgYG5hbWVfaWQnIGFyZSBnaXZlbiBpbiB0aGUgZmlsZSBgdHRuYW1laWQuaCcuICBGb3IgZGV0YWlscyAgICAgKi8KKyAgLyogICAgcGxlYXNlIHJlZmVyIHRvIHRoZSBUcnVlVHlwZSBvciBPcGVuVHlwZSBzcGVjaWZpY2F0aW9uLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTZWUgYWxzbyBAVFRfUExBVEZPUk1fWFhYLCBAVFRfQVBQTEVfSURfWFhYLCBAVFRfTUFDX0lEX1hYWCwgICAgICAgKi8KKyAgLyogICAgQFRUX0lTT19JRF9YWFgsIGFuZCBAVFRfTVNfSURfWFhYLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfU2ZudE5hbWVfCisgIHsKKyAgICBGVF9VU2hvcnQgIHBsYXRmb3JtX2lkOworICAgIEZUX1VTaG9ydCAgZW5jb2RpbmdfaWQ7CisgICAgRlRfVVNob3J0ICBsYW5ndWFnZV9pZDsKKyAgICBGVF9VU2hvcnQgIG5hbWVfaWQ7CisKKyAgICBGVF9CeXRlKiAgIHN0cmluZzsgICAgICAvKiB0aGlzIHN0cmluZyBpcyAqbm90KiBudWxsLXRlcm1pbmF0ZWQhICovCisgICAgRlRfVUludCAgICBzdHJpbmdfbGVuOyAgLyogaW4gYnl0ZXMgKi8KKworICB9IEZUX1NmbnROYW1lOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X1NmbnRfTmFtZV9Db3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0cmlldmUgdGhlIG51bWJlciBvZiBuYW1lIHN0cmluZ3MgaW4gdGhlIFNGTlQgYG5hbWUnIHRhYmxlLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG51bWJlciBvZiBzdHJpbmdzIGluIHRoZSBgbmFtZScgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX1VJbnQgKQorICBGVF9HZXRfU2ZudF9OYW1lX0NvdW50KCBGVF9GYWNlICBmYWNlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfU2ZudF9OYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXRyaWV2ZSBhIHN0cmluZyBvZiB0aGUgU0ZOVCBgbmFtZScgdGFibGUgZm9yIGEgZ2l2ZW4gaW5kZXguICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGlkeCAgIDo6IFRoZSBpbmRleCBvZiB0aGUgYG5hbWUnIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFuYW1lIDo6IFRoZSBpbmRleGVkIEBGVF9TZm50TmFtZSBzdHJ1Y3R1cmUuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBgc3RyaW5nJyBhcnJheSByZXR1cm5lZCBpbiB0aGUgYGFuYW1lJyBzdHJ1Y3R1cmUgaXMgbm90ICAgICAgICAqLworICAvKiAgICBudWxsLXRlcm1pbmF0ZWQuICBUaGUgYXBwbGljYXRpb24gc2hvdWxkIGRlYWxsb2NhdGUgaXQgaWYgaXQgaXMgbm8gKi8KKyAgLyogICAgbG9uZ2VyIGluIHVzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2UgQEZUX0dldF9TZm50X05hbWVfQ291bnQgdG8gZ2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgYXZhaWxhYmxlICAgKi8KKyAgLyogICAgYG5hbWUnIHRhYmxlIGVudHJpZXMsIHRoZW4gZG8gYSBsb29wIHVudGlsIHlvdSBnZXQgdGhlIHJpZ2h0ICAgICAgICovCisgIC8qICAgIHBsYXRmb3JtLCBlbmNvZGluZywgYW5kIG5hbWUgSUQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9TZm50X05hbWUoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgIEZUX1NmbnROYW1lICAqYW5hbWUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGNvbnN0YW50OgorICAgKiAgIEZUX1BBUkFNX1RBR19JR05PUkVfUFJFRkVSUkVEX0ZBTUlMWQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBjb25zdGFudCB1c2VkIGFzIHRoZSB0YWcgb2YgQEZUX1BhcmFtZXRlciBzdHJ1Y3R1cmVzIHRvIG1ha2UKKyAgICogICBGVF9PcGVuX0ZhY2UoKSBpZ25vcmUgcHJlZmVycmVkIGZhbWlseSBzdWJmYW1pbHkgbmFtZXMgaW4gYG5hbWUnCisgICAqICAgdGFibGUgc2luY2UgT3BlblR5cGUgdmVyc2lvbiAxLjQuICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAorICAgKiAgIGxlZ2FjeSBzeXN0ZW1zIHdoaWNoIGhhcyA0LWZhY2UtcGVyLWZhbWlseSByZXN0cmljdGlvbi4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1BBUkFNX1RBR19JR05PUkVfUFJFRkVSUkVEX0ZBTUlMWSAgRlRfTUFLRV9UQUcoICdpJywgJ2cnLCAncCcsICdmJyApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBjb25zdGFudDoKKyAgICogICBGVF9QQVJBTV9UQUdfSUdOT1JFX1BSRUZFUlJFRF9TVUJGQU1JTFkKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgY29uc3RhbnQgdXNlZCBhcyB0aGUgdGFnIG9mIEBGVF9QYXJhbWV0ZXIgc3RydWN0dXJlcyB0byBtYWtlCisgICAqICAgRlRfT3Blbl9GYWNlKCkgaWdub3JlIHByZWZlcnJlZCBzdWJmYW1pbHkgbmFtZXMgaW4gYG5hbWUnIHRhYmxlIHNpbmNlCisgICAqICAgT3BlblR5cGUgdmVyc2lvbiAxLjQuICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kKKyAgICogICBzeXN0ZW1zIHdoaWNoIGhhcyA0LWZhY2UtcGVyLWZhbWlseSByZXN0cmljdGlvbi4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1BBUkFNX1RBR19JR05PUkVfUFJFRkVSUkVEX1NVQkZBTUlMWSAgRlRfTUFLRV9UQUcoICdpJywgJ2cnLCAncCcsICdzJyApCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUX1NGTlRfTkFNRVNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0c3Ryb2tlLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0c3Ryb2tlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVmOWExMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRzdHJva2UuaApAQCAtMCwwICsxLDc1MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRzdHJva2UuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIHBhdGggc3Ryb2tlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLTIwMDYsIDIwMDgsIDIwMDksIDIwMTEtMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRfU1RST0tFX0hfXworI2RlZmluZSBfX0ZUX1NUUk9LRV9IX18KKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnRvdXRsbi5oIgorI2luY2x1ZGUgImZ0Z2x5cGguaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQHNlY3Rpb246CisgICogICAgZ2x5cGhfc3Ryb2tlcgorICAqCisgICogQHRpdGxlOgorICAqICAgIEdseXBoIFN0cm9rZXIKKyAgKgorICAqIEBhYnN0cmFjdDoKKyAgKiAgICBHZW5lcmF0aW5nIGJvcmRlcmVkIGFuZCBzdHJva2VkIGdseXBocy4KKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBUaGlzIGNvbXBvbmVudCBnZW5lcmF0ZXMgc3Ryb2tlZCBvdXRsaW5lcyBvZiBhIGdpdmVuIHZlY3RvcmlhbAorICAqICAgIGdseXBoLiAgSXQgYWxzbyBhbGxvd3MgeW91IHRvIHJldHJpZXZlIHRoZSBgb3V0c2lkZScgYW5kL29yIHRoZQorICAqICAgIGBpbnNpZGUnIGJvcmRlcnMgb2YgdGhlIHN0cm9rZS4KKyAgKgorICAqICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBnZW5lcmF0ZSBgYm9yZGVyZWQnIGdseXBoLCBpLmUuLCBnbHlwaHMKKyAgKiAgICBkaXNwbGF5ZWQgd2l0aCBhIGNvbG91cmVkIChhbmQgYW50aS1hbGlhc2VkKSBib3JkZXIgYXJvdW5kIHRoZWlyCisgICogICAgc2hhcGUuCisgICovCisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQHR5cGU6CisgICogICBGVF9TdHJva2VyCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICBPcGFxdWUgaGFuZGxlciB0byBhIHBhdGggc3Ryb2tlciBvYmplY3QuCisgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX1N0cm9rZXJSZWNfKiAgRlRfU3Ryb2tlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBGVF9TdHJva2VyX0xpbmVKb2luCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGVzZSB2YWx1ZXMgZGV0ZXJtaW5lIGhvdyB0d28gam9pbmluZyBsaW5lcyBhcmUgcmVuZGVyZWQKKyAgICogICBpbiBhIHN0cm9rZXIuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgRlRfU1RST0tFUl9MSU5FSk9JTl9ST1VORCA6OgorICAgKiAgICAgVXNlZCB0byByZW5kZXIgcm91bmRlZCBsaW5lIGpvaW5zLiAgQ2lyY3VsYXIgYXJjcyBhcmUgdXNlZAorICAgKiAgICAgdG8gam9pbiB0d28gbGluZXMgc21vb3RobHkuCisgICAqCisgICAqICAgRlRfU1RST0tFUl9MSU5FSk9JTl9CRVZFTCA6OgorICAgKiAgICAgVXNlZCB0byByZW5kZXIgYmV2ZWxlZCBsaW5lIGpvaW5zLiAgVGhlIG91dGVyIGNvcm5lciBvZgorICAgKiAgICAgdGhlIGpvaW5lZCBsaW5lcyBpcyBmaWxsZWQgYnkgZW5jbG9zaW5nIHRoZSB0cmlhbmd1bGFyCisgICAqICAgICByZWdpb24gb2YgdGhlIGNvcm5lciB3aXRoIGEgc3RyYWlnaHQgbGluZSBiZXR3ZWVuIHRoZQorICAgKiAgICAgb3V0ZXIgY29ybmVycyBvZiBlYWNoIHN0cm9rZS4KKyAgICoKKyAgICogICBGVF9TVFJPS0VSX0xJTkVKT0lOX01JVEVSX0ZJWEVEIDo6CisgICAqICAgICBVc2VkIHRvIHJlbmRlciBtaXRlcmVkIGxpbmUgam9pbnMsIHdpdGggZml4ZWQgYmV2ZWxzIGlmIHRoZQorICAgKiAgICAgbWl0ZXIgbGltaXQgaXMgZXhjZWVkZWQuICBUaGUgb3V0ZXIgZWRnZXMgb2YgdGhlIHN0cm9rZXMKKyAgICogICAgIGZvciB0aGUgdHdvIHNlZ21lbnRzIGFyZSBleHRlbmRlZCB1bnRpbCB0aGV5IG1lZXQgYXQgYW4KKyAgICogICAgIGFuZ2xlLiAgSWYgdGhlIHNlZ21lbnRzIG1lZXQgYXQgdG9vIHNoYXJwIGFuIGFuZ2xlIChzdWNoCisgICAqICAgICB0aGF0IHRoZSBtaXRlciB3b3VsZCBleHRlbmQgZnJvbSB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZQorICAgKiAgICAgc2VnbWVudHMgYSBkaXN0YW5jZSBncmVhdGVyIHRoYW4gdGhlIHByb2R1Y3Qgb2YgdGhlIG1pdGVyCisgICAqICAgICBsaW1pdCB2YWx1ZSBhbmQgdGhlIGJvcmRlciByYWRpdXMpLCB0aGVuIGEgYmV2ZWwgam9pbiAoc2VlCisgICAqICAgICBhYm92ZSkgaXMgdXNlZCBpbnN0ZWFkLiAgVGhpcyBwcmV2ZW50cyBsb25nIHNwaWtlcyBiZWluZworICAgKiAgICAgY3JlYXRlZC4gIEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVJfRklYRUQgZ2VuZXJhdGVzIGEgbWl0ZXIKKyAgICogICAgIGxpbmUgam9pbiBhcyB1c2VkIGluIFBvc3RTY3JpcHQgYW5kIFBERi4KKyAgICoKKyAgICogICBGVF9TVFJPS0VSX0xJTkVKT0lOX01JVEVSX1ZBUklBQkxFIDo6CisgICAqICAgRlRfU1RST0tFUl9MSU5FSk9JTl9NSVRFUiA6OgorICAgKiAgICAgVXNlZCB0byByZW5kZXIgbWl0ZXJlZCBsaW5lIGpvaW5zLCB3aXRoIHZhcmlhYmxlIGJldmVscyBpZgorICAgKiAgICAgdGhlIG1pdGVyIGxpbWl0IGlzIGV4Y2VlZGVkLiAgVGhlIGludGVyc2VjdGlvbiBvZiB0aGUKKyAgICogICAgIHN0cm9rZXMgaXMgY2xpcHBlZCBhdCBhIGxpbmUgcGVycGVuZGljdWxhciB0byB0aGUgYmlzZWN0b3IKKyAgICogICAgIG9mIHRoZSBhbmdsZSBiZXR3ZWVuIHRoZSBzdHJva2VzLCBhdCB0aGUgZGlzdGFuY2UgZnJvbSB0aGUKKyAgICogICAgIGludGVyc2VjdGlvbiBvZiB0aGUgc2VnbWVudHMgZXF1YWwgdG8gdGhlIHByb2R1Y3Qgb2YgdGhlCisgICAqICAgICBtaXRlciBsaW1pdCB2YWx1ZSBhbmQgdGhlIGJvcmRlciByYWRpdXMuICBUaGlzIHByZXZlbnRzCisgICAqICAgICBsb25nIHNwaWtlcyBiZWluZyBjcmVhdGVkLgorICAgKiAgICAgRlRfU1RST0tFUl9MSU5FSk9JTl9NSVRFUl9WQVJJQUJMRSBnZW5lcmF0ZXMgYSBtaXRlcmVkIGxpbmUKKyAgICogICAgIGpvaW4gYXMgdXNlZCBpbiBYUFMuICBGVF9TVFJPS0VSX0xJTkVKT0lOX01JVEVSIGlzIGFuIGFsaWFzCisgICAqICAgICBmb3IgRlRfU1RST0tFUl9MSU5FSk9JTl9NSVRFUl9WQVJJQUJMRSwgcmV0YWluZWQgZm9yCisgICAqICAgICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKyAgICovCisgIHR5cGVkZWYgZW51bSAgRlRfU3Ryb2tlcl9MaW5lSm9pbl8KKyAgeworICAgIEZUX1NUUk9LRVJfTElORUpPSU5fUk9VTkQgICAgICAgICAgPSAwLAorICAgIEZUX1NUUk9LRVJfTElORUpPSU5fQkVWRUwgICAgICAgICAgPSAxLAorICAgIEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVJfVkFSSUFCTEUgPSAyLAorICAgIEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVIgICAgICAgICAgPSBGVF9TVFJPS0VSX0xJTkVKT0lOX01JVEVSX1ZBUklBQkxFLAorICAgIEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVJfRklYRUQgICAgPSAzCisKKyAgfSBGVF9TdHJva2VyX0xpbmVKb2luOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBlbnVtOgorICAgKiAgIEZUX1N0cm9rZXJfTGluZUNhcAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlc2UgdmFsdWVzIGRldGVybWluZSBob3cgdGhlIGVuZCBvZiBvcGVuZWQgc3ViLXBhdGhzIGFyZQorICAgKiAgIHJlbmRlcmVkIGluIGEgc3Ryb2tlLgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIEZUX1NUUk9LRVJfTElORUNBUF9CVVRUIDo6CisgICAqICAgICBUaGUgZW5kIG9mIGxpbmVzIGlzIHJlbmRlcmVkIGFzIGEgZnVsbCBzdG9wIG9uIHRoZSBsYXN0CisgICAqICAgICBwb2ludCBpdHNlbGYuCisgICAqCisgICAqICAgRlRfU1RST0tFUl9MSU5FQ0FQX1JPVU5EIDo6CisgICAqICAgICBUaGUgZW5kIG9mIGxpbmVzIGlzIHJlbmRlcmVkIGFzIGEgaGFsZi1jaXJjbGUgYXJvdW5kIHRoZQorICAgKiAgICAgbGFzdCBwb2ludC4KKyAgICoKKyAgICogICBGVF9TVFJPS0VSX0xJTkVDQVBfU1FVQVJFIDo6CisgICAqICAgICBUaGUgZW5kIG9mIGxpbmVzIGlzIHJlbmRlcmVkIGFzIGEgc3F1YXJlIGFyb3VuZCB0aGUKKyAgICogICAgIGxhc3QgcG9pbnQuCisgICAqLworICB0eXBlZGVmIGVudW0gIEZUX1N0cm9rZXJfTGluZUNhcF8KKyAgeworICAgIEZUX1NUUk9LRVJfTElORUNBUF9CVVRUID0gMCwKKyAgICBGVF9TVFJPS0VSX0xJTkVDQVBfUk9VTkQsCisgICAgRlRfU1RST0tFUl9MSU5FQ0FQX1NRVUFSRQorCisgIH0gRlRfU3Ryb2tlcl9MaW5lQ2FwOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBlbnVtOgorICAgKiAgIEZUX1N0cm9rZXJCb3JkZXIKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoZXNlIHZhbHVlcyBhcmUgdXNlZCB0byBzZWxlY3QgYSBnaXZlbiBzdHJva2UgYm9yZGVyCisgICAqICAgaW4gQEZUX1N0cm9rZXJfR2V0Qm9yZGVyQ291bnRzIGFuZCBARlRfU3Ryb2tlcl9FeHBvcnRCb3JkZXIuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgRlRfU1RST0tFUl9CT1JERVJfTEVGVCA6OgorICAgKiAgICAgU2VsZWN0IHRoZSBsZWZ0IGJvcmRlciwgcmVsYXRpdmUgdG8gdGhlIGRyYXdpbmcgZGlyZWN0aW9uLgorICAgKgorICAgKiAgIEZUX1NUUk9LRVJfQk9SREVSX1JJR0hUIDo6CisgICAqICAgICBTZWxlY3QgdGhlIHJpZ2h0IGJvcmRlciwgcmVsYXRpdmUgdG8gdGhlIGRyYXdpbmcgZGlyZWN0aW9uLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBBcHBsaWNhdGlvbnMgYXJlIGdlbmVyYWxseSBpbnRlcmVzdGVkIGluIHRoZSBgaW5zaWRlJyBhbmQgYG91dHNpZGUnCisgICAqICAgYm9yZGVycy4gIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGRpcmVjdCBtYXBwaW5nIGJldHdlZW4gdGhlc2UgYW5kIHRoZQorICAgKiAgIGBsZWZ0JyBhbmQgYHJpZ2h0JyBvbmVzLCBzaW5jZSB0aGlzIHJlYWxseSBkZXBlbmRzIG9uIHRoZSBnbHlwaCdzCisgICAqICAgZHJhd2luZyBvcmllbnRhdGlvbiwgd2hpY2ggdmFyaWVzIGJldHdlZW4gZm9udCBmb3JtYXRzLgorICAgKgorICAgKiAgIFlvdSBjYW4gaG93ZXZlciB1c2UgQEZUX091dGxpbmVfR2V0SW5zaWRlQm9yZGVyIGFuZAorICAgKiAgIEBGVF9PdXRsaW5lX0dldE91dHNpZGVCb3JkZXIgdG8gZ2V0IHRoZXNlLgorICAgKi8KKyAgdHlwZWRlZiBlbnVtICBGVF9TdHJva2VyQm9yZGVyXworICB7CisgICAgRlRfU1RST0tFUl9CT1JERVJfTEVGVCA9IDAsCisgICAgRlRfU1RST0tFUl9CT1JERVJfUklHSFQKKworICB9IEZUX1N0cm9rZXJCb3JkZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX091dGxpbmVfR2V0SW5zaWRlQm9yZGVyCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXRyaWV2ZSB0aGUgQEZUX1N0cm9rZXJCb3JkZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUKKyAgICogICBgaW5zaWRlJyBib3JkZXJzIG9mIGEgZ2l2ZW4gb3V0bGluZS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIG91dGxpbmUgOjoKKyAgICogICAgIFRoZSBzb3VyY2Ugb3V0bGluZSBoYW5kbGUuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgVGhlIGJvcmRlciBpbmRleC4gIEBGVF9TVFJPS0VSX0JPUkRFUl9SSUdIVCBmb3IgZW1wdHkgb3IgaW52YWxpZAorICAgKiAgIG91dGxpbmVzLgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9TdHJva2VyQm9yZGVyICkKKyAgRlRfT3V0bGluZV9HZXRJbnNpZGVCb3JkZXIoIEZUX091dGxpbmUqICBvdXRsaW5lICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX091dGxpbmVfR2V0T3V0c2lkZUJvcmRlcgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0cmlldmUgdGhlIEBGVF9TdHJva2VyQm9yZGVyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICAqICAgYG91dHNpZGUnIGJvcmRlcnMgb2YgYSBnaXZlbiBvdXRsaW5lLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgb3V0bGluZSA6OgorICAgKiAgICAgVGhlIHNvdXJjZSBvdXRsaW5lIGhhbmRsZS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBUaGUgYm9yZGVyIGluZGV4LiAgQEZUX1NUUk9LRVJfQk9SREVSX0xFRlQgZm9yIGVtcHR5IG9yIGludmFsaWQKKyAgICogICBvdXRsaW5lcy4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfU3Ryb2tlckJvcmRlciApCisgIEZUX091dGxpbmVfR2V0T3V0c2lkZUJvcmRlciggRlRfT3V0bGluZSogIG91dGxpbmUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9OZXcKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIENyZWF0ZSBhIG5ldyBzdHJva2VyIG9iamVjdC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGxpYnJhcnkgOjoKKyAgICogICAgIEZyZWVUeXBlIGxpYnJhcnkgaGFuZGxlLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIGFzdHJva2VyIDo6CisgICAqICAgICBBIG5ldyBzdHJva2VyIG9iamVjdCBoYW5kbGUuICBOVUxMIGluIGNhc2Ugb2YgZXJyb3IuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3Ryb2tlcl9OZXcoIEZUX0xpYnJhcnkgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlciAgKmFzdHJva2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1N0cm9rZXJfU2V0CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXNldCBhIHN0cm9rZXIgb2JqZWN0J3MgYXR0cmlidXRlcy4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqICAgcmFkaXVzIDo6CisgICAqICAgICBUaGUgYm9yZGVyIHJhZGl1cy4KKyAgICoKKyAgICogICBsaW5lX2NhcCA6OgorICAgKiAgICAgVGhlIGxpbmUgY2FwIHN0eWxlLgorICAgKgorICAgKiAgIGxpbmVfam9pbiA6OgorICAgKiAgICAgVGhlIGxpbmUgam9pbiBzdHlsZS4KKyAgICoKKyAgICogICBtaXRlcl9saW1pdCA6OgorICAgKiAgICAgVGhlIG1pdGVyIGxpbWl0IGZvciB0aGUgRlRfU1RST0tFUl9MSU5FSk9JTl9NSVRFUl9GSVhFRCBhbmQKKyAgICogICAgIEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVJfVkFSSUFCTEUgbGluZSBqb2luIHN0eWxlcywKKyAgICogICAgIGV4cHJlc3NlZCBhcyAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZS4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhlIHJhZGl1cyBpcyBleHByZXNzZWQgaW4gdGhlIHNhbWUgdW5pdHMgYXMgdGhlIG91dGxpbmUKKyAgICogICBjb29yZGluYXRlcy4KKyAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1N0cm9rZXJfU2V0KCBGVF9TdHJva2VyICAgICAgICAgICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgICAgICAgICAgcmFkaXVzLAorICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlcl9MaW5lQ2FwICAgbGluZV9jYXAsCisgICAgICAgICAgICAgICAgICBGVF9TdHJva2VyX0xpbmVKb2luICBsaW5lX2pvaW4sCisgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICAgICAgICAgICBtaXRlcl9saW1pdCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX1Jld2luZAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmVzZXQgYSBzdHJva2VyIG9iamVjdCB3aXRob3V0IGNoYW5naW5nIGl0cyBhdHRyaWJ1dGVzLgorICAgKiAgIFlvdSBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBiZWdpbm5pbmcgYSBuZXcKKyAgICogICBzZXJpZXMgb2YgY2FsbHMgdG8gQEZUX1N0cm9rZXJfQmVnaW5TdWJQYXRoIG9yCisgICAqICAgQEZUX1N0cm9rZXJfRW5kU3ViUGF0aC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9TdHJva2VyX1Jld2luZCggRlRfU3Ryb2tlciAgc3Ryb2tlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX1BhcnNlT3V0bGluZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB1c2VkIHRvIHBhcnNlIGEgd2hvbGUgb3V0bGluZSB3aXRoCisgICAqICAgdGhlIHN0cm9rZXIuICBUaGUgcmVzdWx0aW5nIG91dGxpbmUocykgY2FuIGJlIHJldHJpZXZlZAorICAgKiAgIGxhdGVyIGJ5IGZ1bmN0aW9ucyBsaWtlIEBGVF9TdHJva2VyX0dldENvdW50cyBhbmQgQEZUX1N0cm9rZXJfRXhwb3J0LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3Ryb2tlciA6OgorICAgKiAgICAgVGhlIHRhcmdldCBzdHJva2VyIGhhbmRsZS4KKyAgICoKKyAgICogICBvdXRsaW5lIDo6CisgICAqICAgICBUaGUgc291cmNlIG91dGxpbmUuCisgICAqCisgICAqICAgb3BlbmVkIDo6CisgICAqICAgICBBIGJvb2xlYW4uICBJZn4xLCB0aGUgb3V0bGluZSBpcyB0cmVhdGVkIGFzIGFuIG9wZW4gcGF0aCBpbnN0ZWFkCisgICAqICAgICBvZiBhIGNsb3NlZCBvbmUuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgSWYgYG9wZW5lZCcgaXN+MCAodGhlIGRlZmF1bHQpLCB0aGUgb3V0bGluZSBpcyB0cmVhdGVkIGFzIGEgY2xvc2VkCisgICAqICAgcGF0aCwgYW5kIHRoZSBzdHJva2VyIGdlbmVyYXRlcyB0d28gZGlzdGluY3QgYGJvcmRlcicgb3V0bGluZXMuCisgICAqCisgICAqICAgSWYgYG9wZW5lZCcgaXN+MSwgdGhlIG91dGxpbmUgaXMgcHJvY2Vzc2VkIGFzIGFuIG9wZW4gcGF0aCwgYW5kIHRoZQorICAgKiAgIHN0cm9rZXIgZ2VuZXJhdGVzIGEgc2luZ2xlIGBzdHJva2UnIG91dGxpbmUuCisgICAqCisgICAqICAgVGhpcyBmdW5jdGlvbiBjYWxscyBARlRfU3Ryb2tlcl9SZXdpbmQgYXV0b21hdGljYWxseS4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TdHJva2VyX1BhcnNlT3V0bGluZSggRlRfU3Ryb2tlciAgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICBvcGVuZWQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9CZWdpblN1YlBhdGgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFN0YXJ0IGEgbmV3IHN1Yi1wYXRoIGluIHRoZSBzdHJva2VyLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3Ryb2tlciA6OgorICAgKiAgICAgVGhlIHRhcmdldCBzdHJva2VyIGhhbmRsZS4KKyAgICoKKyAgICogICB0byA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIHRoZSBzdGFydCB2ZWN0b3IuCisgICAqCisgICAqICAgb3BlbiA6OgorICAgKiAgICAgQSBib29sZWFuLiAgSWZ+MSwgdGhlIHN1Yi1wYXRoIGlzIHRyZWF0ZWQgYXMgYW4gb3BlbiBvbmUuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0byBzdHJva2UgYSBwYXRoIHRoYXQgaXMKKyAgICogICBub3Qgc3RvcmVkIGFzIGFuIEBGVF9PdXRsaW5lIG9iamVjdC4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TdHJva2VyX0JlZ2luU3ViUGF0aCggRlRfU3Ryb2tlciAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIHRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgb3BlbiApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX0VuZFN1YlBhdGgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIENsb3NlIHRoZSBjdXJyZW50IHN1Yi1wYXRoIGluIHRoZSBzdHJva2VyLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3Ryb2tlciA6OgorICAgKiAgICAgVGhlIHRhcmdldCBzdHJva2VyIGhhbmRsZS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBZb3Ugc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBARlRfU3Ryb2tlcl9CZWdpblN1YlBhdGguCisgICAqICAgSWYgdGhlIHN1YnBhdGggd2FzIG5vdCBgb3BlbmVkJywgdGhpcyBmdW5jdGlvbiBgZHJhd3MnIGEKKyAgICogICBzaW5nbGUgbGluZSBzZWdtZW50IHRvIHRoZSBzdGFydCBwb3NpdGlvbiB3aGVuIG5lZWRlZC4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TdHJva2VyX0VuZFN1YlBhdGgoIEZUX1N0cm9rZXIgIHN0cm9rZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9MaW5lVG8KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIGBEcmF3JyBhIHNpbmdsZSBsaW5lIHNlZ21lbnQgaW4gdGhlIHN0cm9rZXIncyBjdXJyZW50IHN1Yi1wYXRoLAorICAgKiAgIGZyb20gdGhlIGxhc3QgcG9zaXRpb24uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzdHJva2VyIDo6CisgICAqICAgICBUaGUgdGFyZ2V0IHN0cm9rZXIgaGFuZGxlLgorICAgKgorICAgKiAgIHRvIDo6CisgICAqICAgICBBIHBvaW50ZXIgdG8gdGhlIGRlc3RpbmF0aW9uIHBvaW50LgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFlvdSBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGJldHdlZW4gQEZUX1N0cm9rZXJfQmVnaW5TdWJQYXRoIGFuZAorICAgKiAgIEBGVF9TdHJva2VyX0VuZFN1YlBhdGguCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3Ryb2tlcl9MaW5lVG8oIEZUX1N0cm9rZXIgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICB0byApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX0NvbmljVG8KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIGBEcmF3JyBhIHNpbmdsZSBxdWFkcmF0aWMgQsOpemllciBpbiB0aGUgc3Ryb2tlcidzIGN1cnJlbnQgc3ViLXBhdGgsCisgICAqICAgZnJvbSB0aGUgbGFzdCBwb3NpdGlvbi4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqICAgY29udHJvbCA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIGEgQsOpemllciBjb250cm9sIHBvaW50LgorICAgKgorICAgKiAgIHRvIDo6CisgICAqICAgICBBIHBvaW50ZXIgdG8gdGhlIGRlc3RpbmF0aW9uIHBvaW50LgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFlvdSBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGJldHdlZW4gQEZUX1N0cm9rZXJfQmVnaW5TdWJQYXRoIGFuZAorICAgKiAgIEBGVF9TdHJva2VyX0VuZFN1YlBhdGguCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3Ryb2tlcl9Db25pY1RvKCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIGNvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgdG8gKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9DdWJpY1RvCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBgRHJhdycgYSBzaW5nbGUgY3ViaWMgQsOpemllciBpbiB0aGUgc3Ryb2tlcidzIGN1cnJlbnQgc3ViLXBhdGgsCisgICAqICAgZnJvbSB0aGUgbGFzdCBwb3NpdGlvbi4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqICAgY29udHJvbDEgOjoKKyAgICogICAgIEEgcG9pbnRlciB0byB0aGUgZmlyc3QgQsOpemllciBjb250cm9sIHBvaW50LgorICAgKgorICAgKiAgIGNvbnRyb2wyIDo6CisgICAqICAgICBBIHBvaW50ZXIgdG8gc2Vjb25kIELDqXppZXIgY29udHJvbCBwb2ludC4KKyAgICoKKyAgICogICB0byA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIHRoZSBkZXN0aW5hdGlvbiBwb2ludC4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBZb3Ugc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBiZXR3ZWVuIEBGVF9TdHJva2VyX0JlZ2luU3ViUGF0aCBhbmQKKyAgICogICBARlRfU3Ryb2tlcl9FbmRTdWJQYXRoLgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1N0cm9rZXJfQ3ViaWNUbyggRlRfU3Ryb2tlciAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICBjb250cm9sMSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICBjb250cm9sMiwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICB0byApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX0dldEJvcmRlckNvdW50cworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ2FsbCB0aGlzIGZ1bmN0aW9uIG9uY2UgeW91IGhhdmUgZmluaXNoZWQgcGFyc2luZyB5b3VyIHBhdGhzCisgICAqICAgd2l0aCB0aGUgc3Ryb2tlci4gIEl0IHJldHVybnMgdGhlIG51bWJlciBvZiBwb2ludHMgYW5kCisgICAqICAgY29udG91cnMgbmVjZXNzYXJ5IHRvIGV4cG9ydCBvbmUgb2YgdGhlIGBib3JkZXInIG9yIGBzdHJva2UnCisgICAqICAgb3V0bGluZXMgZ2VuZXJhdGVkIGJ5IHRoZSBzdHJva2VyLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3Ryb2tlciA6OgorICAgKiAgICAgVGhlIHRhcmdldCBzdHJva2VyIGhhbmRsZS4KKyAgICoKKyAgICogICBib3JkZXIgOjoKKyAgICogICAgIFRoZSBib3JkZXIgaW5kZXguCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgYW51bV9wb2ludHMgOjoKKyAgICogICAgIFRoZSBudW1iZXIgb2YgcG9pbnRzLgorICAgKgorICAgKiAgIGFudW1fY29udG91cnMgOjoKKyAgICogICAgIFRoZSBudW1iZXIgb2YgY29udG91cnMuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgV2hlbiBhbiBvdXRsaW5lLCBvciBhIHN1Yi1wYXRoLCBpcyBgY2xvc2VkJywgdGhlIHN0cm9rZXIgZ2VuZXJhdGVzCisgICAqICAgdHdvIGluZGVwZW5kZW50IGBib3JkZXInIG91dGxpbmVzLCBuYW1lZCBgbGVmdCcgYW5kIGByaWdodCcuCisgICAqCisgICAqICAgV2hlbiB0aGUgb3V0bGluZSwgb3IgYSBzdWItcGF0aCwgaXMgYG9wZW5lZCcsIHRoZSBzdHJva2VyIG1lcmdlcworICAgKiAgIHRoZSBgYm9yZGVyJyBvdXRsaW5lcyB3aXRoIGNhcHMuICBUaGUgYGxlZnQnIGJvcmRlciByZWNlaXZlcyBhbGwKKyAgICogICBwb2ludHMsIHdoaWxlIHRoZSBgcmlnaHQnIGJvcmRlciBiZWNvbWVzIGVtcHR5LgorICAgKgorICAgKiAgIFVzZSB0aGUgZnVuY3Rpb24gQEZUX1N0cm9rZXJfR2V0Q291bnRzIGluc3RlYWQgaWYgeW91IHdhbnQgdG8KKyAgICogICByZXRyaWV2ZSB0aGUgY291bnRzIGFzc29jaWF0ZWQgdG8gYm90aCBib3JkZXJzLgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1N0cm9rZXJfR2V0Qm9yZGVyQ291bnRzKCBGVF9TdHJva2VyICAgICAgICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlckJvcmRlciAgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAqYW51bV9wb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICphbnVtX2NvbnRvdXJzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1N0cm9rZXJfRXhwb3J0Qm9yZGVyCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBDYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgQEZUX1N0cm9rZXJfR2V0Qm9yZGVyQ291bnRzIHRvCisgICAqICAgZXhwb3J0IHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlciB0byB5b3VyIG93biBARlRfT3V0bGluZQorICAgKiAgIHN0cnVjdHVyZS4KKyAgICoKKyAgICogICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBhcHBlbmRzIHRoZSBib3JkZXIgcG9pbnRzIGFuZAorICAgKiAgIGNvbnRvdXJzIHRvIHlvdXIgb3V0bGluZSwgYnV0IGRvZXMgbm90IHRyeSB0byByZXNpemUgaXRzCisgICAqICAgYXJyYXlzLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3Ryb2tlciA6OgorICAgKiAgICAgVGhlIHRhcmdldCBzdHJva2VyIGhhbmRsZS4KKyAgICoKKyAgICogICBib3JkZXIgOjoKKyAgICogICAgIFRoZSBib3JkZXIgaW5kZXguCisgICAqCisgICAqICAgb3V0bGluZSA6OgorICAgKiAgICAgVGhlIHRhcmdldCBvdXRsaW5lIGhhbmRsZS4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgQWx3YXlzIGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBARlRfU3Ryb2tlcl9HZXRCb3JkZXJDb3VudHMgdG8KKyAgICogICBnZXQgc3VyZSB0aGF0IHRoZXJlIGlzIGVub3VnaCByb29tIGluIHlvdXIgQEZUX091dGxpbmUgb2JqZWN0IHRvCisgICAqICAgcmVjZWl2ZSBhbGwgbmV3IGRhdGEuCisgICAqCisgICAqICAgV2hlbiBhbiBvdXRsaW5lLCBvciBhIHN1Yi1wYXRoLCBpcyBgY2xvc2VkJywgdGhlIHN0cm9rZXIgZ2VuZXJhdGVzCisgICAqICAgdHdvIGluZGVwZW5kZW50IGBib3JkZXInIG91dGxpbmVzLCBuYW1lZCBgbGVmdCcgYW5kIGByaWdodCcKKyAgICoKKyAgICogICBXaGVuIHRoZSBvdXRsaW5lLCBvciBhIHN1Yi1wYXRoLCBpcyBgb3BlbmVkJywgdGhlIHN0cm9rZXIgbWVyZ2VzCisgICAqICAgdGhlIGBib3JkZXInIG91dGxpbmVzIHdpdGggY2Fwcy4gVGhlIGBsZWZ0JyBib3JkZXIgcmVjZWl2ZXMgYWxsCisgICAqICAgcG9pbnRzLCB3aGlsZSB0aGUgYHJpZ2h0JyBib3JkZXIgYmVjb21lcyBlbXB0eS4KKyAgICoKKyAgICogICBVc2UgdGhlIGZ1bmN0aW9uIEBGVF9TdHJva2VyX0V4cG9ydCBpbnN0ZWFkIGlmIHlvdSB3YW50IHRvCisgICAqICAgcmV0cmlldmUgYWxsIGJvcmRlcnMgYXQgb25jZS4KKyAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1N0cm9rZXJfRXhwb3J0Qm9yZGVyKCBGVF9TdHJva2VyICAgICAgICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlckJvcmRlciAgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSogICAgICAgb3V0bGluZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX0dldENvdW50cworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ2FsbCB0aGlzIGZ1bmN0aW9uIG9uY2UgeW91IGhhdmUgZmluaXNoZWQgcGFyc2luZyB5b3VyIHBhdGhzCisgICAqICAgd2l0aCB0aGUgc3Ryb2tlci4gIEl0IHJldHVybnMgdGhlIG51bWJlciBvZiBwb2ludHMgYW5kCisgICAqICAgY29udG91cnMgbmVjZXNzYXJ5IHRvIGV4cG9ydCBhbGwgcG9pbnRzL2JvcmRlcnMgZnJvbSB0aGUgc3Ryb2tlZAorICAgKiAgIG91dGxpbmUvcGF0aC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgYW51bV9wb2ludHMgOjoKKyAgICogICAgIFRoZSBudW1iZXIgb2YgcG9pbnRzLgorICAgKgorICAgKiAgIGFudW1fY29udG91cnMgOjoKKyAgICogICAgIFRoZSBudW1iZXIgb2YgY29udG91cnMuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TdHJva2VyX0dldENvdW50cyggRlRfU3Ryb2tlciAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgKmFudW1fcG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAqYW51bV9jb250b3VycyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX0V4cG9ydAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIEBGVF9TdHJva2VyX0dldEJvcmRlckNvdW50cyB0bworICAgKiAgIGV4cG9ydCBhbGwgYm9yZGVycyB0byB5b3VyIG93biBARlRfT3V0bGluZSBzdHJ1Y3R1cmUuCisgICAqCisgICAqICAgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gYXBwZW5kcyB0aGUgYm9yZGVyIHBvaW50cyBhbmQKKyAgICogICBjb250b3VycyB0byB5b3VyIG91dGxpbmUsIGJ1dCBkb2VzIG5vdCB0cnkgdG8gcmVzaXplIGl0cworICAgKiAgIGFycmF5cy4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqICAgb3V0bGluZSA6OgorICAgKiAgICAgVGhlIHRhcmdldCBvdXRsaW5lIGhhbmRsZS4KKyAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1N0cm9rZXJfRXhwb3J0KCBGVF9TdHJva2VyICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgIEZUX091dGxpbmUqICBvdXRsaW5lICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1N0cm9rZXJfRG9uZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgRGVzdHJveSBhIHN0cm9rZXIgb2JqZWN0LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3Ryb2tlciA6OgorICAgKiAgICAgQSBzdHJva2VyIGhhbmRsZS4gIENhbiBiZSBOVUxMLgorICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfU3Ryb2tlcl9Eb25lKCBGVF9TdHJva2VyICBzdHJva2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX0dseXBoX1N0cm9rZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgU3Ryb2tlIGEgZ2l2ZW4gb3V0bGluZSBnbHlwaCBvYmplY3Qgd2l0aCBhIGdpdmVuIHN0cm9rZXIuCisgICAqCisgICAqIEBpbm91dDoKKyAgICogICBwZ2x5cGggOjoKKyAgICogICAgIFNvdXJjZSBnbHlwaCBoYW5kbGUgb24gaW5wdXQsIG5ldyBnbHlwaCBoYW5kbGUgb24gb3V0cHV0LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3Ryb2tlciA6OgorICAgKiAgICAgQSBzdHJva2VyIGhhbmRsZS4KKyAgICoKKyAgICogICBkZXN0cm95IDo6CisgICAqICAgICBBIEJvb2xlYW4uICBJZn4xLCB0aGUgc291cmNlIGdseXBoIG9iamVjdCBpcyBkZXN0cm95ZWQKKyAgICogICAgIG9uIHN1Y2Nlc3MuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoZSBzb3VyY2UgZ2x5cGggaXMgdW50b3VjaGVkIGluIGNhc2Ugb2YgZXJyb3IuCisgICAqCisgICAqICAgQWRkaW5nIHN0cm9rZSBtYXkgeWllbGQgYSBzaWduaWZpY2FudGx5IHdpZGVyIGFuZCB0YWxsZXIgZ2x5cGgKKyAgICogICBkZXBlbmRpbmcgb24gaG93IGxhcmdlIG9mIGEgcmFkaXVzIHdhcyB1c2VkIHRvIHN0cm9rZSB0aGUgZ2x5cGguICBZb3UKKyAgICogICBtYXkgbmVlZCB0byBtYW51YWxseSBhZGp1c3QgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgYWR2YW5jZSBhbW91bnRzCisgICAqICAgdG8gYWNjb3VudCBmb3IgdGhpcyBhZGRlZCBzaXplLgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dseXBoX1N0cm9rZSggRlRfR2x5cGggICAgKnBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICBGVF9TdHJva2VyICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgZGVzdHJveSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9HbHlwaF9TdHJva2VCb3JkZXIKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFN0cm9rZSBhIGdpdmVuIG91dGxpbmUgZ2x5cGggb2JqZWN0IHdpdGggYSBnaXZlbiBzdHJva2VyLCBidXQKKyAgICogICBvbmx5IHJldHVybiBlaXRoZXIgaXRzIGluc2lkZSBvciBvdXRzaWRlIGJvcmRlci4KKyAgICoKKyAgICogQGlub3V0OgorICAgKiAgIHBnbHlwaCA6OgorICAgKiAgICAgU291cmNlIGdseXBoIGhhbmRsZSBvbiBpbnB1dCwgbmV3IGdseXBoIGhhbmRsZSBvbiBvdXRwdXQuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzdHJva2VyIDo6CisgICAqICAgICBBIHN0cm9rZXIgaGFuZGxlLgorICAgKgorICAgKiAgIGluc2lkZSA6OgorICAgKiAgICAgQSBCb29sZWFuLiAgSWZ+MSwgcmV0dXJuIHRoZSBpbnNpZGUgYm9yZGVyLCBvdGhlcndpc2UKKyAgICogICAgIHRoZSBvdXRzaWRlIGJvcmRlci4KKyAgICoKKyAgICogICBkZXN0cm95IDo6CisgICAqICAgICBBIEJvb2xlYW4uICBJZn4xLCB0aGUgc291cmNlIGdseXBoIG9iamVjdCBpcyBkZXN0cm95ZWQKKyAgICogICAgIG9uIHN1Y2Nlc3MuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoZSBzb3VyY2UgZ2x5cGggaXMgdW50b3VjaGVkIGluIGNhc2Ugb2YgZXJyb3IuCisgICAqCisgICAqICAgQWRkaW5nIHN0cm9rZSBtYXkgeWllbGQgYSBzaWduaWZpY2FudGx5IHdpZGVyIGFuZCB0YWxsZXIgZ2x5cGgKKyAgICogICBkZXBlbmRpbmcgb24gaG93IGxhcmdlIG9mIGEgcmFkaXVzIHdhcyB1c2VkIHRvIHN0cm9rZSB0aGUgZ2x5cGguICBZb3UKKyAgICogICBtYXkgbmVlZCB0byBtYW51YWxseSBhZGp1c3QgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgYWR2YW5jZSBhbW91bnRzCisgICAqICAgdG8gYWNjb3VudCBmb3IgdGhpcyBhZGRlZCBzaXplLgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dseXBoX1N0cm9rZUJvcmRlciggRlRfR2x5cGggICAgKnBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJva2VyICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgaW5zaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICBkZXN0cm95ICk7CisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUX1NUUk9LRV9IX18gKi8KKworCisvKiBFTkQgKi8KKworCisvKiBMb2NhbCBWYXJpYWJsZXM6ICovCisvKiBjb2Rpbmc6IHV0Zi04ICAgICovCisvKiBFbmQ6ICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0c3ludGguaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRzeW50aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZjMyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0c3ludGguaApAQCAtMCwwICsxLDgxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHN5bnRoLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgc3ludGhlc2l6aW5nIGNvZGUgZm9yIGVtYm9sZGVuaW5nIGFuZCBzbGFudGluZyAgICAgICAgICAgICAgKi8KKy8qICAgIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAwLTIwMDEsIDIwMDMsIDIwMDYsIDIwMDgsIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKiogICAgICAgIFdBUk5JTkcsIFRISVMgSVMgQUxQSEEgQ09ERSEgIFRISVMgQVBJICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqICAgIElTIERVRSBUTyBDSEFOR0UgVU5USUwgU1RSSUNUTFkgTk9USUZJRUQgQlkgVEhFICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiAgICAgICAgICAgIEZSRUVUWVBFIERFVkVMT1BNRU5UIFRFQU0gICAgICAgICAgICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBNYWluIHJlYXNvbiBmb3Igbm90IGxpZnRpbmcgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSB0byBhICAqLworICAvKiBgc3RhbmRhcmQnIEFQSSBpcyB0aGF0IHRoZSB1c2VkIHBhcmFtZXRlcnMgZm9yIGVtYm9sZGVuaW5nIGFuZCAqLworICAvKiBzbGFudGluZyBhcmUgbm90IGNvbmZpZ3VyYWJsZS4gIENvbnNpZGVyIHRoZSBmdW5jdGlvbnMgYXMgYSAgICAqLworICAvKiBjb2RlIHJlc291cmNlIHdoaWNoIHNob3VsZCBiZSBjb3BpZWQgaW50byB0aGUgYXBwbGljYXRpb24gYW5kICAqLworICAvKiBhZGFwdGVkIHRvIHRoZSBwYXJ0aWN1bGFyIG5lZWRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisKKyNpZm5kZWYgX19GVFNZTlRIX0hfXworI2RlZmluZSBfX0ZUU1lOVEhfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKyAgLyogRW1ib2xkZW4gYSBnbHlwaCBieSBhIGByZWFzb25hYmxlJyB2YWx1ZSAod2hpY2ggaXMgaGlnaGx5IGEgbWF0dGVyIG9mICovCisgIC8qIHRhc3RlKS4gIFRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiwgcHJvdmlkaW5nICAqLworICAvKiBhIHdyYXBwZXIgZm9yIEBGVF9PdXRsaW5lX0VtYm9sZGVuIGFuZCBARlRfQml0bWFwX0VtYm9sZGVuLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZvciBlbWJvbGRlbmVkIG91dGxpbmVzIHRoZSBoZWlnaHQsIHdpZHRoLCBhbmQgYWR2YW5jZSBtZXRyaWNzIGFyZSAgICAqLworICAvKiBpbmNyZWFzZWQgYnkgdGhlIHN0cmVuZ3RoIG9mIHRoZSBlbWJvbGRlbmluZy4gIFlvdSBjYW4gYWxzbyBjYWxsICAgICAgKi8KKyAgLyogQEZUX091dGxpbmVfR2V0X0NCb3ggdG8gZ2V0IHByZWNpc2UgdmFsdWVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX0dseXBoU2xvdF9FbWJvbGRlbiggRlRfR2x5cGhTbG90ICBzbG90ICk7CisKKyAgLyogU2xhbnQgYW4gb3V0bGluZSBnbHlwaCB0byB0aGUgcmlnaHQgYnkgYWJvdXQgMTIgZGVncmVlcy4gKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfR2x5cGhTbG90X09ibGlxdWUoIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisgIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRTWU5USF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRzeXN0ZW0uaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnRzeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjQxMzIwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHN5c3RlbS5oCkBAIC0wLDAgKzEsMzU0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHN5c3RlbS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgbG93LWxldmVsIHN5c3RlbSBpbnRlcmZhY2UgZGVmaW5pdGlvbiAoc3BlY2lmaWNhdGlvbikuICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwNSwgMjAxMCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVFNZU1RFTV9IX18KKyNkZWZpbmUgX19GVFNZU1RFTV9IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgc3lzdGVtX2ludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgU3lzdGVtIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgSG93IEZyZWVUeXBlIG1hbmFnZXMgbWVtb3J5IGFuZCBpL28uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHZhcmlvdXMgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBtZW1vcnkgICAgICAgICAqLworICAvKiAgIG1hbmFnZW1lbnQgYW5kIGkvbyBhY2Nlc3MuICBZb3UgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgICAgICAgICAgICAgKi8KKyAgLyogICBpbmZvcm1hdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UgYSBjdXN0b20gbWVtb3J5IG1hbmFnZXIgb3IgeW91IG93biAgICovCisgIC8qICAgaS9vIHN0cmVhbXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgTSBFIE0gTyBSIFkgICBNIEEgTiBBIEcgRSBNIEUgTiBUICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBGVF9NZW1vcnkKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgaGFuZGxlIHRvIGEgZ2l2ZW4gbWVtb3J5IG1hbmFnZXIgb2JqZWN0LCBkZWZpbmVkIHdpdGggYW4KKyAgICogICBARlRfTWVtb3J5UmVjIHN0cnVjdHVyZS4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX01lbW9yeVJlY18qICBGVF9NZW1vcnk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgRlRfQWxsb2NfRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBmdW5jdGlvbiB1c2VkIHRvIGFsbG9jYXRlIGBzaXplJyBieXRlcyBmcm9tIGBtZW1vcnknLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgbWVtb3J5IDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIG1lbW9yeSBtYW5hZ2VyLgorICAgKgorICAgKiAgIHNpemUgOjoKKyAgICogICAgIFRoZSBzaXplIGluIGJ5dGVzIHRvIGFsbG9jYXRlLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEFkZHJlc3Mgb2YgbmV3IG1lbW9yeSBibG9jay4gIDB+aW4gY2FzZSBvZiBmYWlsdXJlLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB2b2lkKgorICAoKkZUX0FsbG9jX0Z1bmMpKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgbG9uZyAgICAgICBzaXplICk7CisKKyAgLyogU3VubGlhbmcuTGl1IDIwMTAwOTE1IHN5bmMgMjIxJ3MgcmV2aXNvbi4gKi8NCisgIHR5cGVkZWYgdm9pZCoNCisJICAoKkZUX0FsbG9jRGVidWdfRnVuYykoIEZUX01lbW9yeSAgbWVtb3J5LA0KKwkgIGxvbmcgICAgICAgc2l6ZSwgY29uc3QgY2hhciogZmlsZW5hbWUsICBpbnQgbGluZSk7DQorCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgRlRfRnJlZV9GdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGZ1bmN0aW9uIHVzZWQgdG8gcmVsZWFzZSBhIGdpdmVuIGJsb2NrIG9mIG1lbW9yeS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIG1lbW9yeSA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBtZW1vcnkgbWFuYWdlci4KKyAgICoKKyAgICogICBibG9jayA6OgorICAgKiAgICAgVGhlIGFkZHJlc3Mgb2YgdGhlIHRhcmdldCBtZW1vcnkgYmxvY2suCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9GcmVlX0Z1bmMpKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgIGJsb2NrICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgRlRfUmVhbGxvY19GdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGZ1bmN0aW9uIHVzZWQgdG8gcmUtYWxsb2NhdGUgYSBnaXZlbiBibG9jayBvZiBtZW1vcnkuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBtZW1vcnkgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgbWVtb3J5IG1hbmFnZXIuCisgICAqCisgICAqICAgY3VyX3NpemUgOjoKKyAgICogICAgIFRoZSBibG9jaydzIGN1cnJlbnQgc2l6ZSBpbiBieXRlcy4KKyAgICoKKyAgICogICBuZXdfc2l6ZSA6OgorICAgKiAgICAgVGhlIGJsb2NrJ3MgcmVxdWVzdGVkIG5ldyBzaXplLgorICAgKgorICAgKiAgIGJsb2NrIDo6CisgICAqICAgICBUaGUgYmxvY2sncyBjdXJyZW50IGFkZHJlc3MuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgTmV3IGJsb2NrIGFkZHJlc3MuICAwfmluIGNhc2Ugb2YgbWVtb3J5IHNob3J0YWdlLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBJbiBjYXNlIG9mIGVycm9yLCB0aGUgb2xkIGJsb2NrIG11c3Qgc3RpbGwgYmUgYXZhaWxhYmxlLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB2b2lkKgorICAoKkZUX1JlYWxsb2NfRnVuYykoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgY3VyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgbG9uZyAgICAgICBuZXdfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgIGJsb2NrICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc3RydWN0OgorICAgKiAgIEZUX01lbW9yeVJlYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBkZXNjcmliZSBhIGdpdmVuIG1lbW9yeSBtYW5hZ2VyIHRvIEZyZWVUeXBlfjIuCisgICAqCisgICAqIEBmaWVsZHM6CisgICAqICAgdXNlciA6OgorICAgKiAgICAgQSBnZW5lcmljIHR5cGVsZXNzIHBvaW50ZXIgZm9yIHVzZXIgZGF0YS4KKyAgICoKKyAgICogICBhbGxvYyA6OgorICAgKiAgICAgQSBwb2ludGVyIHR5cGUgdG8gYW4gYWxsb2NhdGlvbiBmdW5jdGlvbi4KKyAgICoKKyAgICogICBmcmVlIDo6CisgICAqICAgICBBIHBvaW50ZXIgdHlwZSB0byBhbiBtZW1vcnkgZnJlZWluZyBmdW5jdGlvbi4KKyAgICoKKyAgICogICByZWFsbG9jIDo6CisgICAqICAgICBBIHBvaW50ZXIgdHlwZSB0byBhIHJlYWxsb2NhdGlvbiBmdW5jdGlvbi4KKyAgICoKKyAgICovCisgIHN0cnVjdCAgRlRfTWVtb3J5UmVjXworICB7CisgICAgdm9pZCogICAgICAgICAgICB1c2VyOworICAgIEZUX0FsbG9jX0Z1bmMgICAgYWxsb2M7CisJRlRfQWxsb2NEZWJ1Z19GdW5jIGFsbG9jZGVidWc7CS8qIFN1bmxpYW5nLkxpdSAyMDEwMDkxNSBzeW5jIDIyMSdzIHJldmlzb24uICovCisgICAgRlRfRnJlZV9GdW5jICAgICBmcmVlOworICAgIEZUX1JlYWxsb2NfRnVuYyAgcmVhbGxvYzsKKyAgfTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIEkgLyBPICAgTSBBIE4gQSBHIEUgTSBFIE4gVCAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUX1N0cmVhbQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBoYW5kbGUgdG8gYW4gaW5wdXQgc3RyZWFtLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU3RyZWFtUmVjXyogIEZUX1N0cmVhbTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRfU3RyZWFtRGVzYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSB1bmlvbiB0eXBlIHVzZWQgdG8gc3RvcmUgZWl0aGVyIGEgbG9uZyBvciBhIHBvaW50ZXIuICBUaGlzIGlzIHVzZWQKKyAgICogICB0byBzdG9yZSBhIGZpbGUgZGVzY3JpcHRvciBvciBhIGBGSUxFKicgaW4gYW4gaW5wdXQgc3RyZWFtLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB1bmlvbiAgRlRfU3RyZWFtRGVzY18KKyAgeworICAgIGxvbmcgICB2YWx1ZTsKKyAgICB2b2lkKiAgcG9pbnRlcjsKKworICB9IEZUX1N0cmVhbURlc2M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgRlRfU3RyZWFtX0lvRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBmdW5jdGlvbiB1c2VkIHRvIHNlZWsgYW5kIHJlYWQgZGF0YSBmcm9tIGEgZ2l2ZW4gaW5wdXQgc3RyZWFtLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3RyZWFtIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIHN0cmVhbS4KKyAgICoKKyAgICogICBvZmZzZXQgOjoKKyAgICogICAgIFRoZSBvZmZzZXQgb2YgcmVhZCBpbiBzdHJlYW0gKGFsd2F5cyBmcm9tIHN0YXJ0KS4KKyAgICoKKyAgICogICBidWZmZXIgOjoKKyAgICogICAgIFRoZSBhZGRyZXNzIG9mIHRoZSByZWFkIGJ1ZmZlci4KKyAgICoKKyAgICogICBjb3VudCA6OgorICAgKiAgICAgVGhlIG51bWJlciBvZiBieXRlcyB0byByZWFkIGZyb20gdGhlIHN0cmVhbS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGVmZmVjdGl2ZWx5IHJlYWQgYnkgdGhlIHN0cmVhbS4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhpcyBmdW5jdGlvbiBtaWdodCBiZSBjYWxsZWQgdG8gcGVyZm9ybSBhIHNlZWsgb3Igc2tpcCBvcGVyYXRpb24KKyAgICogICB3aXRoIGEgYGNvdW50JyBvZn4wLiAgQSBub24temVybyByZXR1cm4gdmFsdWUgdGhlbiBpbmRpY2F0ZXMgYW4KKyAgICogICBlcnJvci4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgbG9uZworICAoKkZUX1N0cmVhbV9Jb0Z1bmMpKCBGVF9TdHJlYW0gICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgY291bnQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBGVF9TdHJlYW1fQ2xvc2VGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGZ1bmN0aW9uIHVzZWQgdG8gY2xvc2UgYSBnaXZlbiBpbnB1dCBzdHJlYW0uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogIHN0cmVhbSA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBzdHJlYW0uCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9TdHJlYW1fQ2xvc2VGdW5jKSggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRfU3RyZWFtUmVjCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIHN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIGFuIGlucHV0IHN0cmVhbS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGJhc2UgOjoKKyAgICogICAgIEZvciBtZW1vcnktYmFzZWQgc3RyZWFtcywgdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgZmlyc3Qgc3RyZWFtCisgICAqICAgICBieXRlIGluIG1lbW9yeS4gIFRoaXMgZmllbGQgc2hvdWxkIGFsd2F5cyBiZSBzZXQgdG8gTlVMTCBmb3IKKyAgICogICAgIGRpc2stYmFzZWQgc3RyZWFtcy4KKyAgICoKKyAgICogICBzaXplIDo6CisgICAqICAgICBUaGUgc3RyZWFtIHNpemUgaW4gYnl0ZXMuCisgICAqCisgICAqICAgcG9zIDo6CisgICAqICAgICBUaGUgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gdGhlIHN0cmVhbS4KKyAgICoKKyAgICogICBkZXNjcmlwdG9yIDo6CisgICAqICAgICBUaGlzIGZpZWxkIGlzIGEgdW5pb24gdGhhdCBjYW4gaG9sZCBhbiBpbnRlZ2VyIG9yIGEgcG9pbnRlci4gIEl0IGlzCisgICAqICAgICB1c2VkIGJ5IHN0cmVhbSBpbXBsZW1lbnRhdGlvbnMgdG8gc3RvcmUgZmlsZSBkZXNjcmlwdG9ycyBvciBgRklMRSonCisgICAqICAgICBwb2ludGVycy4KKyAgICoKKyAgICogICBwYXRobmFtZSA6OgorICAgKiAgICAgVGhpcyBmaWVsZCBpcyBjb21wbGV0ZWx5IGlnbm9yZWQgYnkgRnJlZVR5cGUuICBIb3dldmVyLCBpdCBpcyBvZnRlbgorICAgKiAgICAgdXNlZnVsIGR1cmluZyBkZWJ1Z2dpbmcgdG8gdXNlIGl0IHRvIHN0b3JlIHRoZSBzdHJlYW0ncyBmaWxlbmFtZQorICAgKiAgICAgKHdoZXJlIGF2YWlsYWJsZSkuCisgICAqCisgICAqICAgcmVhZCA6OgorICAgKiAgICAgVGhlIHN0cmVhbSdzIGlucHV0IGZ1bmN0aW9uLgorICAgKgorICAgKiAgIGNsb3NlIDo6CisgICAqICAgICBUaGUgc3RyZWFtJ3MgY2xvc2UgZnVuY3Rpb24uCisgICAqCisgICAqICAgbWVtb3J5IDo6CisgICAqICAgICBUaGUgbWVtb3J5IG1hbmFnZXIgdG8gdXNlIHRvIHByZWxvYWQgZnJhbWVzLiAgVGhpcyBpcyBzZXQKKyAgICogICAgIGludGVybmFsbHkgYnkgRnJlZVR5cGUgYW5kIHNob3VsZG4ndCBiZSB0b3VjaGVkIGJ5IHN0cmVhbQorICAgKiAgICAgaW1wbGVtZW50YXRpb25zLgorICAgKgorICAgKiAgIGN1cnNvciA6OgorICAgKiAgICAgVGhpcyBmaWVsZCBpcyBzZXQgYW5kIHVzZWQgaW50ZXJuYWxseSBieSBGcmVlVHlwZSB3aGVuIHBhcnNpbmcKKyAgICogICAgIGZyYW1lcy4KKyAgICoKKyAgICogICBsaW1pdCA6OgorICAgKiAgICAgVGhpcyBmaWVsZCBpcyBzZXQgYW5kIHVzZWQgaW50ZXJuYWxseSBieSBGcmVlVHlwZSB3aGVuIHBhcnNpbmcKKyAgICogICAgIGZyYW1lcy4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TdHJlYW1SZWNfCisgIHsKKyAgICB1bnNpZ25lZCBjaGFyKiAgICAgICBiYXNlOworICAgIHVuc2lnbmVkIGxvbmcgICAgICAgIHNpemU7CisgICAgdW5zaWduZWQgbG9uZyAgICAgICAgcG9zOworCisgICAgRlRfU3RyZWFtRGVzYyAgICAgICAgZGVzY3JpcHRvcjsKKyAgICBGVF9TdHJlYW1EZXNjICAgICAgICBwYXRobmFtZTsKKyAgICBGVF9TdHJlYW1fSW9GdW5jICAgICByZWFkOworICAgIEZUX1N0cmVhbV9DbG9zZUZ1bmMgIGNsb3NlOworCisgICAgRlRfTWVtb3J5ICAgICAgICAgICAgbWVtb3J5OworICAgIHVuc2lnbmVkIGNoYXIqICAgICAgIGN1cnNvcjsKKyAgICB1bnNpZ25lZCBjaGFyKiAgICAgICBsaW1pdDsKKworICB9IEZUX1N0cmVhbVJlYzsKKworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFNZU1RFTV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnR0cmlnb24uaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnR0cmlnb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTFjNjNlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHRyaWdvbi5oCkBAIC0wLDAgKzEsMzUwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHRyaWdvbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEsIDIwMDMsIDIwMDUsIDIwMDcsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVFRSSUdPTl9IX18KKyNkZWZpbmUgX19GVFRSSUdPTl9IX18KKworI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBjb21wdXRhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUX0FuZ2xlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGlzIHR5cGUgaXMgdXNlZCB0byBtb2RlbCBhbmdsZSB2YWx1ZXMgaW4gRnJlZVR5cGUuICBOb3RlIHRoYXQgdGhlCisgICAqICAgYW5nbGUgaXMgYSAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZSBleHByZXNzZWQgaW4gZGVncmVlcy4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgRlRfRml4ZWQgIEZUX0FuZ2xlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0FOR0xFX1BJCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGUgYW5nbGUgcGkgZXhwcmVzc2VkIGluIEBGVF9BbmdsZSB1bml0cy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FOR0xFX1BJICAoIDE4MEwgPDwgMTYgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0FOR0xFXzJQSQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIGFuZ2xlIDIqcGkgZXhwcmVzc2VkIGluIEBGVF9BbmdsZSB1bml0cy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FOR0xFXzJQSSAgKCBGVF9BTkdMRV9QSSAqIDIgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0FOR0xFX1BJMgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIGFuZ2xlIHBpLzIgZXhwcmVzc2VkIGluIEBGVF9BbmdsZSB1bml0cy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FOR0xFX1BJMiAgKCBGVF9BTkdMRV9QSSAvIDIgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0FOR0xFX1BJNAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIGFuZ2xlIHBpLzQgZXhwcmVzc2VkIGluIEBGVF9BbmdsZSB1bml0cy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FOR0xFX1BJNCAgKCBGVF9BTkdMRV9QSSAvIDQgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1NpbgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0dXJuIHRoZSBzaW51cyBvZiBhIGdpdmVuIGFuZ2xlIGluIGZpeGVkLXBvaW50IGZvcm1hdC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGFuZ2xlIDo6CisgICAqICAgICBUaGUgaW5wdXQgYW5nbGUuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgVGhlIHNpbnVzIHZhbHVlLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBJZiB5b3UgbmVlZCBib3RoIHRoZSBzaW51cyBhbmQgY29zaW51cyBmb3IgYSBnaXZlbiBhbmdsZSwgdXNlIHRoZQorICAgKiAgIGZ1bmN0aW9uIEBGVF9WZWN0b3JfVW5pdC4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRml4ZWQgKQorICBGVF9TaW4oIEZUX0FuZ2xlICBhbmdsZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX0NvcworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0dXJuIHRoZSBjb3NpbnVzIG9mIGEgZ2l2ZW4gYW5nbGUgaW4gZml4ZWQtcG9pbnQgZm9ybWF0LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgYW5nbGUgOjoKKyAgICogICAgIFRoZSBpbnB1dCBhbmdsZS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBUaGUgY29zaW51cyB2YWx1ZS4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgSWYgeW91IG5lZWQgYm90aCB0aGUgc2ludXMgYW5kIGNvc2ludXMgZm9yIGEgZ2l2ZW4gYW5nbGUsIHVzZSB0aGUKKyAgICogICBmdW5jdGlvbiBARlRfVmVjdG9yX1VuaXQuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0ZpeGVkICkKKyAgRlRfQ29zKCBGVF9BbmdsZSAgYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9UYW4KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFJldHVybiB0aGUgdGFuZ2VudCBvZiBhIGdpdmVuIGFuZ2xlIGluIGZpeGVkLXBvaW50IGZvcm1hdC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGFuZ2xlIDo6CisgICAqICAgICBUaGUgaW5wdXQgYW5nbGUuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgVGhlIHRhbmdlbnQgdmFsdWUuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0ZpeGVkICkKKyAgRlRfVGFuKCBGVF9BbmdsZSAgYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9BdGFuMgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0dXJuIHRoZSBhcmMtdGFuZ2VudCBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4gdmVjdG9yICh4LHkpIGluCisgICAqICAgdGhlIDJkIHBsYW5lLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgeCA6OgorICAgKiAgICAgVGhlIGhvcml6b250YWwgdmVjdG9yIGNvb3JkaW5hdGUuCisgICAqCisgICAqICAgeSA6OgorICAgKiAgICAgVGhlIHZlcnRpY2FsIHZlY3RvciBjb29yZGluYXRlLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIFRoZSBhcmMtdGFuZ2VudCB2YWx1ZSAoaS5lLiBhbmdsZSkuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0FuZ2xlICkKKyAgRlRfQXRhbjIoIEZUX0ZpeGVkICB4LAorICAgICAgICAgICAgRlRfRml4ZWQgIHkgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9BbmdsZV9EaWZmCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gYW5nbGVzLiAgVGhlIHJlc3VsdCBpcyBhbHdheXMKKyAgICogICBjb25zdHJhaW5lZCB0byB0aGUgXS1QSS4uUEldIGludGVydmFsLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgYW5nbGUxIDo6CisgICAqICAgICBGaXJzdCBhbmdsZS4KKyAgICoKKyAgICogICBhbmdsZTIgOjoKKyAgICogICAgIFNlY29uZCBhbmdsZS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBDb25zdHJhaW5lZCB2YWx1ZSBvZiBgdmFsdWUyLXZhbHVlMScuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0FuZ2xlICkKKyAgRlRfQW5nbGVfRGlmZiggRlRfQW5nbGUgIGFuZ2xlMSwKKyAgICAgICAgICAgICAgICAgRlRfQW5nbGUgIGFuZ2xlMiApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1ZlY3Rvcl9Vbml0CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXR1cm4gdGhlIHVuaXQgdmVjdG9yIGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbiBhbmdsZS4gIEFmdGVyIHRoZQorICAgKiAgIGNhbGwsIHRoZSB2YWx1ZSBvZiBgdmVjLngnIHdpbGwgYmUgYHNpbihhbmdsZSknLCBhbmQgdGhlIHZhbHVlIG9mCisgICAqICAgYHZlYy55JyB3aWxsIGJlIGBjb3MoYW5nbGUpJy4KKyAgICoKKyAgICogICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0byByZXRyaWV2ZSBib3RoIHRoZSBzaW51cyBhbmQgY29zaW51cyBvZiBhCisgICAqICAgZ2l2ZW4gYW5nbGUgcXVpY2tseS4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICB2ZWMgOjoKKyAgICogICAgIFRoZSBhZGRyZXNzIG9mIHRhcmdldCB2ZWN0b3IuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBhbmdsZSA6OgorICAgKiAgICAgVGhlIGFkZHJlc3Mgb2YgYW5nbGUuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9WZWN0b3JfVW5pdCggRlRfVmVjdG9yKiAgdmVjLAorICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAgYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9WZWN0b3JfUm90YXRlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSb3RhdGUgYSB2ZWN0b3IgYnkgYSBnaXZlbiBhbmdsZS4KKyAgICoKKyAgICogQGlub3V0OgorICAgKiAgIHZlYyA6OgorICAgKiAgICAgVGhlIGFkZHJlc3Mgb2YgdGFyZ2V0IHZlY3Rvci4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGFuZ2xlIDo6CisgICAqICAgICBUaGUgYWRkcmVzcyBvZiBhbmdsZS4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1ZlY3Rvcl9Sb3RhdGUoIEZUX1ZlY3RvciogIHZlYywKKyAgICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAgYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9WZWN0b3JfTGVuZ3RoCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXR1cm4gdGhlIGxlbmd0aCBvZiBhIGdpdmVuIHZlY3Rvci4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHZlYyA6OgorICAgKiAgICAgVGhlIGFkZHJlc3Mgb2YgdGFyZ2V0IHZlY3Rvci4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBUaGUgdmVjdG9yIGxlbmd0aCwgZXhwcmVzc2VkIGluIHRoZSBzYW1lIHVuaXRzIHRoYXQgdGhlIG9yaWdpbmFsCisgICAqICAgdmVjdG9yIGNvb3JkaW5hdGVzLgorICAgKgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9GaXhlZCApCisgIEZUX1ZlY3Rvcl9MZW5ndGgoIEZUX1ZlY3RvciogIHZlYyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1ZlY3Rvcl9Qb2xhcml6ZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ29tcHV0ZSBib3RoIHRoZSBsZW5ndGggYW5kIGFuZ2xlIG9mIGEgZ2l2ZW4gdmVjdG9yLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgdmVjIDo6CisgICAqICAgICBUaGUgYWRkcmVzcyBvZiBzb3VyY2UgdmVjdG9yLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIGxlbmd0aCA6OgorICAgKiAgICAgVGhlIHZlY3RvciBsZW5ndGguCisgICAqCisgICAqICAgYW5nbGUgOjoKKyAgICogICAgIFRoZSB2ZWN0b3IgYW5nbGUuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9WZWN0b3JfUG9sYXJpemUoIEZUX1ZlY3RvciogIHZlYywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAqYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9WZWN0b3JfRnJvbV9Qb2xhcgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ29tcHV0ZSB2ZWN0b3IgY29vcmRpbmF0ZXMgZnJvbSBhIGxlbmd0aCBhbmQgYW5nbGUuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgdmVjIDo6CisgICAqICAgICBUaGUgYWRkcmVzcyBvZiBzb3VyY2UgdmVjdG9yLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgbGVuZ3RoIDo6CisgICAqICAgICBUaGUgdmVjdG9yIGxlbmd0aC4KKyAgICoKKyAgICogICBhbmdsZSA6OgorICAgKiAgICAgVGhlIHZlY3RvciBhbmdsZS4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCBGVF9WZWN0b3IqICB2ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICBhbmdsZSApOworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFRSSUdPTl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnR0dGRydi5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHR0ZHJ2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFiMjVhNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnR0dGRydi5oCkBAIC0wLDAgKzEsMTUwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHR0ZHJ2LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgQVBJIGZvciBjb250cm9sbGluZyB0aGUgVHJ1ZVR5cGUgZHJpdmVyICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRUVERSVl9IX18KKyNkZWZpbmUgX19GVFRURFJWX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc2VjdGlvbjoKKyAgICogICB0dF9kcml2ZXIKKyAgICoKKyAgICogQHRpdGxlOgorICAgKiAgIFRoZSBUcnVlVHlwZSBkcml2ZXIKKyAgICoKKyAgICogQGFic3RyYWN0OgorICAgKiAgIENvbnRyb2xsaW5nIHRoZSBUcnVlVHlwZSBkcml2ZXIgbW9kdWxlLgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgV2hpbGUgRnJlZVR5cGUncyBUcnVlVHlwZSBkcml2ZXIgZG9lc24ndCBleHBvc2UgQVBJIGZ1bmN0aW9ucyBieQorICAgKiAgIGl0c2VsZiwgaXQgaXMgcG9zc2libGUgdG8gY29udHJvbCBpdHMgYmVoYXZpb3VyIHdpdGggQEZUX1Byb3BlcnR5X1NldAorICAgKiAgIGFuZCBARlRfUHJvcGVydHlfR2V0LiAgVGhlIGZvbGxvd2luZyBsaXN0cyB0aGUgYXZhaWxhYmxlIHByb3BlcnRpZXMKKyAgICogICB0b2dldGhlciB3aXRoIHRoZSBuZWNlc3NhcnkgbWFjcm9zIGFuZCBzdHJ1Y3R1cmVzLgorICAgKgorICAgKiAgIFRoZSBUcnVlVHlwZSBkcml2ZXIncyBtb2R1bGUgbmFtZSBpcyBgdHJ1ZXR5cGUnLgorICAgKgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAcHJvcGVydHk6CisgICAqICAgaW50ZXJwcmV0ZXItdmVyc2lvbgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ3VycmVudGx5LCB0d28gdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSB3aGljaCByZXByZXNlbnQgdGhlIGJ5dGVjb2RlCisgICAqICAgaW50ZXJwcmV0ZXIgd2l0aCBhbmQgd2l0aG91dCBzdWJwaXhlbCBoaW50aW5nIHN1cHBvcnQsCisgICAqICAgcmVzcGVjdGl2ZWx5LiAgVGhlIGRlZmF1bHQgaXMgc3VicGl4ZWwgc3VwcG9ydCBpZgorICAgKiAgIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyBpcyBkZWZpbmVkLCBhbmQgbm8gc3VicGl4ZWwKKyAgICogICBzdXBwb3J0IG90aGVyd2lzZSAoc2luY2UgaXQgaXNuJ3QgYXZhaWxhYmxlIHRoZW4pLgorICAgKgorICAgKiAgIElmIHN1YnBpeGVsIGhpbnRpbmcgaXMgb24sIG1hbnkgVHJ1ZVR5cGUgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zCisgICAqICAgYmVoYXZlIGRpZmZlcmVudGx5IGNvbXBhcmVkIHRvIEIvVyBvciBncmF5c2NhbGUgcmVuZGVyaW5nLiAgVGhlCisgICAqICAgbWFpbiBpZGVhIGlzIHRvIHJlbmRlciBhdCBhIG11Y2ggaW5jcmVhc2VkIGhvcml6b250YWwgcmVzb2x1dGlvbiwKKyAgICogICB0aGVuIHNhbXBsaW5nIGRvd24gdGhlIGNyZWF0ZWQgb3V0cHV0IHRvIHN1YnBpeGVsIHByZWNpc2lvbi4KKyAgICogICBIb3dldmVyLCBtYW55IG9sZGVyIGZvbnRzIGFyZSBub3Qgc3VpdGVkIHRvIHRoaXMgYW5kIG11c3QgYmUKKyAgICogICBzcGVjaWFsbHkgdGFrZW4gY2FyZSBvZiBieSBhcHBseWluZyAoaGFyZGNvZGVkKSBmb250LXNwZWNpZmljCisgICAqICAgdHdlYWtzLgorICAgKgorICAgKiAgIERldGFpbHMgb24gc3VicGl4ZWwgaGludGluZyBhbmQgc29tZSBvZiB0aGUgbmVjZXNzYXJ5IHR3ZWFrcyBjYW4gYmUKKyAgICogICBmb3VuZCBpbiBHcmVnIEhpdGNoY29jaydzIHdoaXRlcGFwZXIgYXQKKyAgICogICBgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvY2xlYXJ0eXBlL3RydWV0eXBlY2xlYXJ0eXBlLmFzcHgnLgorICAgKgorICAgKiAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjb2RlIGRlbW9uc3RyYXRlcyBob3cgdG8gYWN0aXZhdGUgc3VicGl4ZWwKKyAgICogICBoaW50aW5nIChvbWl0dGluZyB0aGUgZXJyb3IgaGFuZGxpbmcpLgorICAgKgorICAgKiAgIHsKKyAgICogICAgIEZUX0xpYnJhcnkgIGxpYnJhcnk7CisgICAqICAgICBGVF9GYWNlICAgICBmYWNlOworICAgKiAgICAgRlRfVUludCAgICAgaW50ZXJwcmV0ZXJfdmVyc2lvbiA9IFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzg7CisgICAqCisgICAqCisgICAqICAgICBGVF9Jbml0X0ZyZWVUeXBlKCAmbGlicmFyeSApOworICAgKgorICAgKiAgICAgRlRfUHJvcGVydHlfU2V0KCBsaWJyYXJ5LCAidHJ1ZXR5cGUiLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJwcmV0ZXItdmVyc2lvbiIsCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnRlcnByZXRlcl92ZXJzaW9uICk7CisgICAqICAgfQorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGlzIHByb3BlcnR5IGNhbiBiZSB1c2VkIHdpdGggQEZUX1Byb3BlcnR5X0dldCBhbHNvLgorICAgKgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIGNvbnN0YW50cyB1c2VkIGZvciB0aGUgQGludGVycHJldGVyLXZlcnNpb24gcHJvcGVydHkgdG8KKyAgICogICBzZWxlY3QgdGhlIGhpbnRpbmcgZW5naW5lIGZvciBUcnVldHlwZSBmb250cy4KKyAgICoKKyAgICogICBUaGUgbnVtZXJpYyB2YWx1ZSBpbiB0aGUgY29uc3RhbnQgbmFtZXMgcmVwcmVzZW50cyB0aGUgdmVyc2lvbgorICAgKiAgIG51bWJlciBhcyByZXR1cm5lZCBieSB0aGUgYEdFVElORk8nIGJ5dGVjb2RlIGluc3RydWN0aW9uLgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzUgOjoKKyAgICogICAgIFZlcnNpb25+MzUgY29ycmVzcG9uZHMgdG8gTVMgcmFzdGVyaXplciB2LjEuNyBhcyB1c2VkIGUuZy4gaW4KKyAgICogICAgIFdpbmRvd3N+OTg7IG9ubHkgZ3JheXNjYWxlIGFuZCBCL1cgcmFzdGVyaXppbmcgaXMgc3VwcG9ydGVkLgorICAgKgorICAgKiAgIFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzggOjoKKyAgICogICAgIFZlcnNpb25+MzggY29ycmVzcG9uZHMgdG8gTVMgcmFzdGVyaXplciB2LjEuOTsgaXQgaXMgcm91Z2hseQorICAgKiAgICAgZXF1aXZhbGVudCB0byB0aGUgaGludGluZyBwcm92aWRlZCBieSBEaXJlY3RXcml0ZSBDbGVhclR5cGUgKGFzCisgICAqICAgICBjYW4gYmUgZm91bmQsIGZvciBleGFtcGxlLCBpbiB0aGUgSW50ZXJuZXQgRXhwbG9yZXJ+OSBydW5uaW5nIG9uCisgICAqICAgICBXaW5kb3dzfjcpLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGlzIHByb3BlcnR5IGNvbnRyb2xzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGJ5dGVjb2RlIGludGVycHJldGVyCisgICAqICAgYW5kIHRodXMgaG93IG91dGxpbmVzIGdldCBoaW50ZWQuICBJdCBkb2VzICpub3QqIGNvbnRyb2wgaG93IGdseXBoCisgICAqICAgZ2V0IHJhc3Rlcml6ZWQhICBJbiBwYXJ0aWN1bGFyLCBpdCBkb2VzIG5vdCBjb250cm9sIHN1YnBpeGVsIGNvbG9yCisgICAqICAgZmlsdGVyaW5nLgorICAgKgorICAgKiAgIElmIEZyZWVUeXBlIGhhcyBub3QgYmVlbiBjb21waWxlZCB3aXRoIGNvbmZpZ3VyYXRpb24gb3B0aW9uCisgICAqICAgRlRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HLCBzZWxlY3RpbmcgdmVyc2lvbn4zOCBjYXVzZXMgYW4KKyAgICogICBgRlRfRXJyX1VuaW1wbGVtZW50ZWRfRmVhdHVyZScgZXJyb3IuCisgICAqCisgICAqLworI2RlZmluZSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM1ICAzNQorI2RlZmluZSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM4ICAzOAorCisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fRlRUVERSVl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnR0eXBlcy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHR5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQxMWJlZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnR0eXBlcy5oCkBAIC0wLDAgKzEsNTk4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgc2ltcGxlIHR5cGVzIGRlZmluaXRpb25zIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMiwgMjAwNCwgMjAwNi0yMDA5LCAyMDEyLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVFRZUEVTX0hfXworI2RlZmluZSBfX0ZUVFlQRVNfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiY29uZmlnL2Z0Y29uZmlnLmgiCisjaW5jbHVkZSAiZnRzeXN0ZW0uaCIKKyNpbmNsdWRlICJmdGltYWdlLmgiCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJhc2ljX3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEJhc2ljIERhdGEgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBiYXNpYyBkYXRhIHR5cGVzIGRlZmluZWQgYnkgdGhlIGxpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgYmFzaWMgZGF0YSB0eXBlcyBkZWZpbmVkIGJ5IEZyZWVUeXBlfjIsICAqLworICAvKiAgICByYW5naW5nIGZyb20gc2ltcGxlIHNjYWxhciB0eXBlcyB0byBiaXRtYXAgZGVzY3JpcHRvcnMuICBNb3JlICAgICAgKi8KKyAgLyogICAgZm9udC1zcGVjaWZpYyBzdHJ1Y3R1cmVzIGFyZSBkZWZpbmVkIGluIGEgZGlmZmVyZW50IHNlY3Rpb24uICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3JkZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0J5dGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9DaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9JbnQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVUludDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VSW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VTaG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Mb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVUxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUHRyRGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9UYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZpeGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Qb2ludGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUG9zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1ZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CQm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTWF0cml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZXb3JkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VRldvcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRjJEb3QxNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VuaXRWZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GMjZEb3Q2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZW5lcmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2VuZXJpY19GaW5hbGl6ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUGl4ZWxfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BhbGV0dGVfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HbHlwaF9Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfSU1BR0VfVEFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBvZiB1bnNpZ25lZCBjaGFyLCB1c2VkIGZvciBzaW1wbGUgYm9vbGVhbnMuICBBcyB1c3VhbCwgICAqLworICAvKiAgICB2YWx1ZXMgMSBhbmR+MCByZXByZXNlbnQgdHJ1ZSBhbmQgZmFsc2UsIHJlc3BlY3RpdmVseS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgRlRfQm9vbDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZXb3JkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIHVzZWQgdG8gc3RvcmUgYSBkaXN0YW5jZSBpbiBvcmlnaW5hbCBmb250ICAqLworICAvKiAgICB1bml0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIHNob3J0ICBGVF9GV29yZDsgICAvKiBkaXN0YW5jZSBpbiBGVW5pdHMgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VGV29yZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIHVzZWQgdG8gc3RvcmUgYSBkaXN0YW5jZSBpbiBvcmlnaW5hbCAgICAqLworICAvKiAgICBmb250IHVuaXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIEZUX1VGV29yZDsgIC8qIHVuc2lnbmVkIGRpc3RhbmNlICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9DaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSB0eXBlZGVmIGZvciB0aGUgX3NpZ25lZF8gY2hhciB0eXBlLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIGNoYXIgIEZUX0NoYXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CeXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSB0eXBlZGVmIGZvciB0aGUgX3Vuc2lnbmVkXyBjaGFyIHR5cGUuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgRlRfQnl0ZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0J5dGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgY29uc3RhbnQgbWVtb3J5IGFyZWFzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBjb25zdCBGVF9CeXRlKiAgRlRfQnl0ZXM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9UYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHR5cGVkZWYgZm9yIDMyLWJpdCB0YWdzIChhcyB1c2VkIGluIHRoZSBTRk5UIGZvcm1hdCkuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfVUludDMyICBGVF9UYWc7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSB0eXBlZGVmIGZvciB0aGUgY2hhciB0eXBlLCB1c3VhbGx5IHVzZWQgZm9yIHN0cmluZ3MuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgY2hhciAgRlRfU3RyaW5nOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciBzaWduZWQgc2hvcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpZ25lZCBzaG9ydCAgRlRfU2hvcnQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VU2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHR5cGVkZWYgZm9yIHVuc2lnbmVkIHNob3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIEZUX1VTaG9ydDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgdGhlIGludCB0eXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzaWduZWQgaW50ICBGVF9JbnQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHR5cGVkZWYgZm9yIHRoZSB1bnNpZ25lZCBpbnQgdHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgaW50ICBGVF9VSW50OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTG9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciBzaWduZWQgbG9uZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpZ25lZCBsb25nICBGVF9Mb25nOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVUxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciB1bnNpZ25lZCBsb25nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgIEZUX1VMb25nOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRjJEb3QxNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzaWduZWQgMi4xNCBmaXhlZC1wb2ludCB0eXBlIHVzZWQgZm9yIHVuaXQgdmVjdG9ycy4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpZ25lZCBzaG9ydCAgRlRfRjJEb3QxNDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0YyNkRvdDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2lnbmVkIDI2LjYgZml4ZWQtcG9pbnQgdHlwZSB1c2VkIGZvciB2ZWN0b3JpYWwgcGl4ZWwgICAgICAgICAgICAqLworICAvKiAgICBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIGxvbmcgIEZUX0YyNkRvdDY7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GaXhlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHR5cGUgaXMgdXNlZCB0byBzdG9yZSAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZXMsIGxpa2Ugc2NhbGluZyAgKi8KKyAgLyogICAgdmFsdWVzIG9yIG1hdHJpeCBjb2VmZmljaWVudHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpZ25lZCBsb25nICBGVF9GaXhlZDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBGcmVlVHlwZSBlcnJvciBjb2RlIHR5cGUuICBBIHZhbHVlIG9mfjAgaXMgYWx3YXlzIGludGVycHJldGVkICAqLworICAvKiAgICBhcyBhIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgaW50ICBGVF9FcnJvcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2ltcGxlIHR5cGVkZWYgZm9yIGEgdHlwZWxlc3MgcG9pbnRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkKiAgRlRfUG9pbnRlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgQU5TSX5DIGBzaXplX3QnIHR5cGUsIGkuZS4sIHRoZSBsYXJnZXN0ICAqLworICAvKiAgICBfdW5zaWduZWRfIGludGVnZXIgdHlwZSB1c2VkIHRvIGV4cHJlc3MgYSBmaWxlIHNpemUgb3IgcG9zaXRpb24sICAgKi8KKyAgLyogICAgb3IgYSBtZW1vcnkgYmxvY2sgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpemVfdCAgRlRfT2Zmc2V0OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUHRyRGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBBTlNJfkMgYHB0cmRpZmZfdCcgdHlwZSwgaS5lLiwgdGhlICAgICAgICovCisgIC8qICAgIGxhcmdlc3QgX3NpZ25lZF8gaW50ZWdlciB0eXBlIHVzZWQgdG8gZXhwcmVzcyB0aGUgZGlzdGFuY2UgICAgICAgICAqLworICAvKiAgICBiZXR3ZWVuIHR3byBwb2ludGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgZnRfcHRyZGlmZl90ICBGVF9QdHJEaXN0OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVW5pdFZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzaW1wbGUgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgYSAyRCB2ZWN0b3IgdW5pdCB2ZWN0b3IuICBVc2VzICAgICovCisgIC8qICAgIEZUX0YyRG90MTQgdHlwZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHggOjogSG9yaXpvbnRhbCBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeSA6OiBWZXJ0aWNhbCBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfVW5pdFZlY3Rvcl8KKyAgeworICAgIEZUX0YyRG90MTQgIHg7CisgICAgRlRfRjJEb3QxNCAgeTsKKworICB9IEZUX1VuaXRWZWN0b3I7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NYXRyaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSBzdHJ1Y3R1cmUgdXNlZCB0byBzdG9yZSBhIDJ4MiBtYXRyaXguICBDb2VmZmljaWVudHMgYXJlICAgKi8KKyAgLyogICAgaW4gMTYuMTYgZml4ZWQtcG9pbnQgZm9ybWF0LiAgVGhlIGNvbXB1dGF0aW9uIHBlcmZvcm1lZCBpczogICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgeCcgPSB4Knh4ICsgeSp4eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIHknID0geCp5eCArIHkqeXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4eCA6OiBNYXRyaXggY29lZmZpY2llbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHh5IDo6IE1hdHJpeCBjb2VmZmljaWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeXggOjogTWF0cml4IGNvZWZmaWNpZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5eSA6OiBNYXRyaXggY29lZmZpY2llbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9NYXRyaXhfCisgIHsKKyAgICBGVF9GaXhlZCAgeHgsIHh5OworICAgIEZUX0ZpeGVkICB5eCwgeXk7CisKKyAgfSBGVF9NYXRyaXg7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9EYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZWFkLW9ubHkgYmluYXJ5IGRhdGEgcmVwcmVzZW50ZWQgYXMgYSBwb2ludGVyIGFuZCBhIGxlbmd0aC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb2ludGVyIDo6IFRoZSBkYXRhLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlbmd0aCAgOjogVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBpbiBieXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0RhdGFfCisgIHsKKyAgICBjb25zdCBGVF9CeXRlKiAgcG9pbnRlcjsKKyAgICBGVF9JbnQgICAgICAgICAgbGVuZ3RoOworCisgIH0gRlRfRGF0YTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dlbmVyaWNfRmluYWxpemVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERlc2NyaWJlIGEgZnVuY3Rpb24gdXNlZCB0byBkZXN0cm95IHRoZSBgY2xpZW50JyBkYXRhIG9mIGFueSAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBvYmplY3QuICBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBARlRfR2VuZXJpYyB0eXBlIGZvciAgKi8KKyAgLyogICAgZGV0YWlscyBvZiB1c2FnZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGFkZHJlc3Mgb2YgdGhlIEZyZWVUeXBlIG9iamVjdCB3aGljaCBpcyB1bmRlciBmaW5hbGl6YXRpb24uICAgICovCisgIC8qICAgIEl0cyBjbGllbnQgZGF0YSBpcyBhY2Nlc3NlZCB0aHJvdWdoIGl0cyBgZ2VuZXJpYycgZmllbGQuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkICAoKkZUX0dlbmVyaWNfRmluYWxpemVyKSh2b2lkKiAgb2JqZWN0KTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dlbmVyaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENsaWVudCBhcHBsaWNhdGlvbnMgb2Z0ZW4gbmVlZCB0byBhc3NvY2lhdGUgdGhlaXIgb3duIGRhdGEgdG8gYSAgICAqLworICAvKiAgICB2YXJpZXR5IG9mIEZyZWVUeXBlIGNvcmUgb2JqZWN0cy4gIEZvciBleGFtcGxlLCBhIHRleHQgbGF5b3V0IEFQSSAgKi8KKyAgLyogICAgbWlnaHQgd2FudCB0byBhc3NvY2lhdGUgYSBnbHlwaCBjYWNoZSB0byBhIGdpdmVuIHNpemUgb2JqZWN0LiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTb21lIEZyZWVUeXBlIG9iamVjdCBjb250YWlucyBhIGBnZW5lcmljJyBmaWVsZCwgb2YgdHlwZSAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2VuZXJpYywgd2hpY2ggdXNhZ2UgaXMgbGVmdCB0byBjbGllbnQgYXBwbGljYXRpb25zIGFuZCBmb250ICAgICovCisgIC8qICAgIHNlcnZlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYSBwb2ludGVyIHRvIGNsaWVudC1zcGVjaWZpYyBkYXRhLCBhcyB3ZWxsICovCisgIC8qICAgIGFzIHRoZSBhZGRyZXNzIG9mIGEgYGZpbmFsaXplcicgZnVuY3Rpb24sIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGJ5ICAqLworICAvKiAgICBGcmVlVHlwZSB3aGVuIHRoZSBvYmplY3QgaXMgZGVzdHJveWVkIChmb3IgZXhhbXBsZSwgdGhlIHByZXZpb3VzICAgKi8KKyAgLyogICAgY2xpZW50IGV4YW1wbGUgd291bGQgcHV0IHRoZSBhZGRyZXNzIG9mIHRoZSBnbHlwaCBjYWNoZSBkZXN0cnVjdG9yICovCisgIC8qICAgIGluIHRoZSBgZmluYWxpemVyJyBmaWVsZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRhdGEgICAgICA6OiBBIHR5cGVsZXNzIHBvaW50ZXIgdG8gYW55IGNsaWVudC1zcGVjaWZpZWQgZGF0YS4gVGhpcyAqLworICAvKiAgICAgICAgICAgICAgICAgZmllbGQgaXMgY29tcGxldGVseSBpZ25vcmVkIGJ5IHRoZSBGcmVlVHlwZSBsaWJyYXJ5LiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZpbmFsaXplciA6OiBBIHBvaW50ZXIgdG8gYSBgZ2VuZXJpYyBmaW5hbGl6ZXInIGZ1bmN0aW9uLCB3aGljaCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZC4gIElmIHRoaXMgKi8KKyAgLyogICAgICAgICAgICAgICAgIGZpZWxkIGlzIHNldCB0byBOVUxMLCBubyBjb2RlIHdpbGwgYmUgY2FsbGVkLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfR2VuZXJpY18KKyAgeworICAgIHZvaWQqICAgICAgICAgICAgICAgICBkYXRhOworICAgIEZUX0dlbmVyaWNfRmluYWxpemVyICBmaW5hbGl6ZXI7CisKKyAgfSBGVF9HZW5lcmljOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTUFLRV9UQUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBtYWNybyBjb252ZXJ0cyBmb3VyLWxldHRlciB0YWdzIHdoaWNoIGFyZSB1c2VkIHRvIGxhYmVsICAgICAgICovCisgIC8qICAgIFRydWVUeXBlIHRhYmxlcyBpbnRvIGFuIHVuc2lnbmVkIGxvbmcgdG8gYmUgdXNlZCB3aXRoaW4gRnJlZVR5cGUuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBwcm9kdWNlZCB2YWx1ZXMgKm11c3QqIGJlIDMyLWJpdCBpbnRlZ2Vycy4gIERvbid0IHJlZGVmaW5lICAgICAqLworICAvKiAgICB0aGlzIG1hY3JvLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX01BS0VfVEFHKCBfeDEsIF94MiwgX3gzLCBfeDQgKSBcCisgICAgICAgICAgKEZUX1RhZykgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAoIChGVF9VTG9uZylfeDEgPDwgMjQgKSB8ICAgICBcCisgICAgICAgICAgICAoIChGVF9VTG9uZylfeDIgPDwgMTYgKSB8ICAgICBcCisgICAgICAgICAgICAoIChGVF9VTG9uZylfeDMgPDwgIDggKSB8ICAgICBcCisgICAgICAgICAgICAgIChGVF9VTG9uZylfeDQgICAgICAgICApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgTCBJIFMgVCAgIE0gQSBOIEEgRyBFIE0gRSBOIFQgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpc3RfcHJvY2Vzc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0Tm9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgTWFueSBlbGVtZW50cyBhbmQgb2JqZWN0cyBpbiBGcmVlVHlwZSBhcmUgbGlzdGVkIHRocm91Z2ggYW4gICAgICAgKi8KKyAgLyogICAgIEBGVF9MaXN0IHJlY29yZCAoc2VlIEBGVF9MaXN0UmVjKS4gIEFzIGl0cyBuYW1lIHN1Z2dlc3RzLCBhbiAgICAgICovCisgIC8qICAgICBGVF9MaXN0Tm9kZSBpcyBhIGhhbmRsZSB0byBhIHNpbmdsZSBsaXN0IGVsZW1lbnQuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfTGlzdE5vZGVSZWNfKiAgRlRfTGlzdE5vZGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIGxpc3QgcmVjb3JkIChzZWUgQEZUX0xpc3RSZWMpLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0xpc3RSZWNfKiAgRlRfTGlzdDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3ROb2RlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gaG9sZCBhIHNpbmdsZSBsaXN0IGVsZW1lbnQuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHByZXYgOjogVGhlIHByZXZpb3VzIGVsZW1lbnQgaW4gdGhlIGxpc3QuICBOVUxMIGlmIGZpcnN0LiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbmV4dCA6OiBUaGUgbmV4dCBlbGVtZW50IGluIHRoZSBsaXN0LiAgTlVMTCBpZiBsYXN0LiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkYXRhIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgbGlzdGVkIG9iamVjdC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9MaXN0Tm9kZVJlY18KKyAgeworICAgIEZUX0xpc3ROb2RlICBwcmV2OworICAgIEZUX0xpc3ROb2RlICBuZXh0OworICAgIHZvaWQqICAgICAgICBkYXRhOworCisgIH0gRlRfTGlzdE5vZGVSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0UmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgYSBzaW1wbGUgZG91Ymx5LWxpbmtlZCBsaXN0LiAgVGhlc2UgYXJlICAgKi8KKyAgLyogICAgdXNlZCBpbiBtYW55IHBhcnRzIG9mIEZyZWVUeXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVhZCA6OiBUaGUgaGVhZCAoZmlyc3QgZWxlbWVudCkgb2YgZG91Ymx5LWxpbmtlZCBsaXN0LiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWlsIDo6IFRoZSB0YWlsIChsYXN0IGVsZW1lbnQpIG9mIGRvdWJseS1saW5rZWQgbGlzdC4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9MaXN0UmVjXworICB7CisgICAgRlRfTGlzdE5vZGUgIGhlYWQ7CisgICAgRlRfTGlzdE5vZGUgIHRhaWw7CisKKyAgfSBGVF9MaXN0UmVjOworCisKKyAgLyogKi8KKworI2RlZmluZSBGVF9JU19FTVBUWSggbGlzdCApICAoIChsaXN0KS5oZWFkID09IDAgKQorI2RlZmluZSBGVF9CT09MKCB4ICkgICggKEZUX0Jvb2wpKCB4ICkgKQorCisgIC8qIGNvbmNhdGVuYXRlIEMgdG9rZW5zICovCisjZGVmaW5lIEZUX0VSUl9YQ0FUKCB4LCB5ICkgIHggIyMgeQorI2RlZmluZSBGVF9FUlJfQ0FUKCB4LCB5ICkgICBGVF9FUlJfWENBVCggeCwgeSApCisKKyAgLyogc2VlIGBmdG1vZGVyci5oJyBmb3IgZGVzY3JpcHRpb25zIG9mIHRoZSBmb2xsb3dpbmcgbWFjcm9zICovCisKKyNkZWZpbmUgRlRfRVJSKCBlICkgIEZUX0VSUl9DQVQoIEZUX0VSUl9QUkVGSVgsIGUgKQorCisjZGVmaW5lIEZUX0VSUk9SX0JBU0UoIHggKSAgICAoICh4KSAmIDB4RkYgKQorI2RlZmluZSBGVF9FUlJPUl9NT0RVTEUoIHggKSAgKCAoeCkgJiAweEZGMDBVICkKKworI2RlZmluZSBGVF9FUlJfRVEoIHgsIGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBGVF9FUlJPUl9CQVNFKCB4ICkgPT0gRlRfRVJST1JfQkFTRSggRlRfRVJSKCBlICkgKSApCisjZGVmaW5lIEZUX0VSUl9ORVEoIHgsIGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEZUX0VSUk9SX0JBU0UoIHggKSAhPSBGVF9FUlJPUl9CQVNFKCBGVF9FUlIoIGUgKSApICkKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUVFlQRVNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0d2luZm50LmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0d2luZm50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY0MzM0ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvZnR3aW5mbnQuaApAQCAtMCwwICsxLDI3NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnR3aW5mbnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgYWNjZXNzaW5nIFdpbmRvd3MgZm50LXNwZWNpZmljIGRhdGEuICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLCAyMDA0LCAyMDA4IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRXSU5GTlRfSF9fCisjZGVmaW5lIF9fRlRXSU5GTlRfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgd2luZm50X2ZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2luZG93IEZOVCBGaWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2luZG93cyBGTlQgc3BlY2lmaWMgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbiBvZiBXaW5kb3dzIEZOVCBzcGVjaWZpYyAgICAgICovCisgIC8qICAgIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBGVF9XaW5GTlRfSURfWFhYCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIGZvciB0aGUgYGNoYXJzZXQnIGJ5dGUgaW4KKyAgICogICBARlRfV2luRk5UX0hlYWRlclJlYy4gIEV4YWN0IG1hcHBpbmcgdGFibGVzIGZvciB0aGUgdmFyaW91cyBjcFhYWFgKKyAgICogICBlbmNvZGluZ3MgKGV4Y2VwdCBmb3IgY3AxMzYxKSBjYW4gYmUgZm91bmQgYXQgZnRwOi8vZnRwLnVuaWNvZGUub3JnCisgICAqICAgaW4gdGhlIE1BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1dJTkRPV1Mgc3ViZGlyZWN0b3J5LiAgY3AxMzYxIGlzCisgICAqICAgcm91Z2hseSBhIHN1cGVyc2V0IG9mIE1BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBL0tTQy9KT0hBQi5UWFQuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgRlRfV2luRk5UX0lEX0RFRkFVTFQgOjoKKyAgICogICAgIFRoaXMgaXMgdXNlZCBmb3IgZm9udCBlbnVtZXJhdGlvbiBhbmQgZm9udCBjcmVhdGlvbiBhcyBhCisgICAqICAgICBgZG9uJ3QgY2FyZScgdmFsdWUuICBWYWxpZCBmb250IGZpbGVzIGRvbid0IGNvbnRhaW4gdGhpcyB2YWx1ZS4KKyAgICogICAgIFdoZW4gcXVlcnlpbmcgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGFyYWN0ZXIgc2V0IG9mIHRoZSBmb250CisgICAqICAgICB0aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZCBpbnRvIGEgc3BlY2lmaWVkIGRldmljZSBjb250ZXh0LCB0aGlzCisgICAqICAgICByZXR1cm4gdmFsdWUgKG9mIHRoZSByZWxhdGVkIFdpbmRvd3MgQVBJKSBzaW1wbHkgZGVub3RlcyBmYWlsdXJlLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9TWU1CT0wgOjoKKyAgICogICAgIFRoZXJlIGlzIG5vIGtub3duIG1hcHBpbmcgdGFibGUgYXZhaWxhYmxlLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9NQUMgOjoKKyAgICogICAgIE1hYyBSb21hbiBlbmNvZGluZy4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfT0VNIDo6CisgICAqICAgICBGcm9tIE1pY2hhZWwgUMO2dHRnZW4gPG1pY2hhZWxAcG9ldHRnZW4uZGU+OgorICAgKgorICAgKiAgICAgICBUaGUgYFdpbmRvd3MgRm9udCBNYXBwaW5nJyBhcnRpY2xlIHNheXMgdGhhdCBGVF9XaW5GTlRfSURfT0VNCisgICAqICAgICAgIGlzIHVzZWQgZm9yIHRoZSBjaGFyc2V0IG9mIHZlY3RvciBmb250cywgbGlrZSBgbW9kZXJuLmZvbicsCisgICAqICAgICAgIGByb21hbi5mb24nLCBhbmQgYHNjcmlwdC5mb24nIG9uIFdpbmRvd3MuCisgICAqCisgICAqICAgICAgIFRoZSBgQ3JlYXRlRm9udCcgZG9jdW1lbnRhdGlvbiBzYXlzOiBUaGUgRlRfV2luRk5UX0lEX09FTSB2YWx1ZQorICAgKiAgICAgICBzcGVjaWZpZXMgYSBjaGFyYWN0ZXIgc2V0IHRoYXQgaXMgb3BlcmF0aW5nLXN5c3RlbSBkZXBlbmRlbnQuCisgICAqCisgICAqICAgICAgIFRoZSBgSUZJTUVUUklDUycgZG9jdW1lbnRhdGlvbiBmcm9tIHRoZSBgV2luZG93cyBEcml2ZXIKKyAgICogICAgICAgRGV2ZWxvcG1lbnQgS2l0JyBzYXlzOiBUaGlzIGZvbnQgc3VwcG9ydHMgYW4gT0VNLXNwZWNpZmljCisgICAqICAgICAgIGNoYXJhY3RlciBzZXQuICBUaGUgT0VNIGNoYXJhY3RlciBzZXQgaXMgc3lzdGVtIGRlcGVuZGVudC4KKyAgICoKKyAgICogICAgICAgSW4gZ2VuZXJhbCBPRU0sIGFzIG9wcG9zZWQgdG8gQU5TSSAoaS5lLiwgY3AxMjUyKSwgZGVub3RlcyB0aGUKKyAgICogICAgICAgc2Vjb25kIGRlZmF1bHQgY29kZXBhZ2UgdGhhdCBtb3N0IGludGVybmF0aW9uYWwgdmVyc2lvbnMgb2YKKyAgICogICAgICAgV2luZG93cyBoYXZlLiAgSXQgaXMgb25lIG9mIHRoZSBPRU0gY29kZXBhZ2VzIGZyb20KKyAgICoKKyAgICogICAgICAgICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZ2xvYmFsZGV2L3JlZmVyZW5jZS9jcGhvbWUubXNweCwKKyAgICoKKyAgICogICAgICAgYW5kIGlzIHVzZWQgZm9yIHRoZSBgRE9TIGJveGVzJywgdG8gc3VwcG9ydCBsZWdhY3kgYXBwbGljYXRpb25zLgorICAgKiAgICAgICBBIEdlcm1hbiBXaW5kb3dzIHZlcnNpb24gZm9yIGV4YW1wbGUgdXN1YWxseSB1c2VzIEFOU0kgY29kZXBhZ2UKKyAgICogICAgICAgMTI1MiBhbmQgT0VNIGNvZGVwYWdlIDg1MC4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1A4NzQgOjoKKyAgICogICAgIEEgc3VwZXJzZXQgb2YgVGhhaSBUSVMgNjIwIGFuZCBJU08gODg1OS0xMS4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1A5MzIgOjoKKyAgICogICAgIEEgc3VwZXJzZXQgb2YgSmFwYW5lc2UgU2hpZnQtSklTICh3aXRoIG1pbm9yIGRldmlhdGlvbnMpLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDkzNiA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBzaW1wbGlmaWVkIENoaW5lc2UgR0IgMjMxMi0xOTgwICh3aXRoIGRpZmZlcmVudAorICAgKiAgICAgb3JkZXJpbmcgYW5kIG1pbm9yIGRldmlhdGlvbnMpLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDk0OSA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBLb3JlYW4gSGFuZ3VsIEtTfkMgNTYwMS0xOTg3ICh3aXRoIGRpZmZlcmVudAorICAgKiAgICAgb3JkZXJpbmcgYW5kIG1pbm9yIGRldmlhdGlvbnMpLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDk1MCA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiB0cmFkaXRpb25hbCBDaGluZXNlIEJpZ341IEVUZW4gKHdpdGggZGlmZmVyZW50CisgICAqICAgICBvcmRlcmluZyBhbmQgbWlub3IgZGV2aWF0aW9ucykuCisgICAqCisgICAqICAgRlRfV2luRk5UX0lEX0NQMTI1MCA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBFYXN0IEV1cm9wZWFuIElTTyA4ODU5LTIgKHdpdGggc2xpZ2h0bHkgZGlmZmVyZW50CisgICAqICAgICBvcmRlcmluZykuCisgICAqCisgICAqICAgRlRfV2luRk5UX0lEX0NQMTI1MSA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBSdXNzaWFuIElTTyA4ODU5LTUgKHdpdGggZGlmZmVyZW50IG9yZGVyaW5nKS4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1AxMjUyIDo6CisgICAqICAgICBBTlNJIGVuY29kaW5nLiAgQSBzdXBlcnNldCBvZiBJU08gODg1OS0xLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDEyNTMgOjoKKyAgICogICAgIEEgc3VwZXJzZXQgb2YgR3JlZWsgSVNPIDg4NTktNyAod2l0aCBtaW5vciBtb2RpZmljYXRpb25zKS4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1AxMjU0IDo6CisgICAqICAgICBBIHN1cGVyc2V0IG9mIFR1cmtpc2ggSVNPIDg4NTktOS4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1AxMjU1IDo6CisgICAqICAgICBBIHN1cGVyc2V0IG9mIEhlYnJldyBJU08gODg1OS04ICh3aXRoIHNvbWUgbW9kaWZpY2F0aW9ucykuCisgICAqCisgICAqICAgRlRfV2luRk5UX0lEX0NQMTI1NiA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBBcmFiaWMgSVNPIDg4NTktNiAod2l0aCBkaWZmZXJlbnQgb3JkZXJpbmcpLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDEyNTcgOjoKKyAgICogICAgIEEgc3VwZXJzZXQgb2YgQmFsdGljIElTTyA4ODU5LTEzICh3aXRoIHNvbWUgZGV2aWF0aW9ucykuCisgICAqCisgICAqICAgRlRfV2luRk5UX0lEX0NQMTI1OCA6OgorICAgKiAgICAgRm9yIFZpZXRuYW1lc2UuICBUaGlzIGVuY29kaW5nIGRvZXNuJ3QgY292ZXIgYWxsIG5lY2Vzc2FyeQorICAgKiAgICAgY2hhcmFjdGVycy4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1AxMzYxIDo6CisgICAqICAgICBLb3JlYW4gKEpvaGFiKS4KKyAgICovCisKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTI1MiAgICAwCisjZGVmaW5lIEZUX1dpbkZOVF9JRF9ERUZBVUxUICAgMQorI2RlZmluZSBGVF9XaW5GTlRfSURfU1lNQk9MICAgIDIKKyNkZWZpbmUgRlRfV2luRk5UX0lEX01BQyAgICAgIDc3CisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDkzMiAgIDEyOAorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1A5NDkgICAxMjkKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTM2MSAgMTMwCisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDkzNiAgIDEzNAorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1A5NTAgICAxMzYKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTI1MyAgMTYxCisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDEyNTQgIDE2MgorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1AxMjU4ICAxNjMKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTI1NSAgMTc3CisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDEyNTYgIDE3OAorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1AxMjU3ICAxODYKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTI1MSAgMjA0CisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDg3NCAgIDIyMgorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1AxMjUwICAyMzgKKyNkZWZpbmUgRlRfV2luRk5UX0lEX09FTSAgICAgMjU1CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9XaW5GTlRfSGVhZGVyUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaW5kb3dzIEZOVCBIZWFkZXIgaW5mby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9XaW5GTlRfSGVhZGVyUmVjXworICB7CisgICAgRlRfVVNob3J0ICB2ZXJzaW9uOworICAgIEZUX1VMb25nICAgZmlsZV9zaXplOworICAgIEZUX0J5dGUgICAgY29weXJpZ2h0WzYwXTsKKyAgICBGVF9VU2hvcnQgIGZpbGVfdHlwZTsKKyAgICBGVF9VU2hvcnQgIG5vbWluYWxfcG9pbnRfc2l6ZTsKKyAgICBGVF9VU2hvcnQgIHZlcnRpY2FsX3Jlc29sdXRpb247CisgICAgRlRfVVNob3J0ICBob3Jpem9udGFsX3Jlc29sdXRpb247CisgICAgRlRfVVNob3J0ICBhc2NlbnQ7CisgICAgRlRfVVNob3J0ICBpbnRlcm5hbF9sZWFkaW5nOworICAgIEZUX1VTaG9ydCAgZXh0ZXJuYWxfbGVhZGluZzsKKyAgICBGVF9CeXRlICAgIGl0YWxpYzsKKyAgICBGVF9CeXRlICAgIHVuZGVybGluZTsKKyAgICBGVF9CeXRlICAgIHN0cmlrZV9vdXQ7CisgICAgRlRfVVNob3J0ICB3ZWlnaHQ7CisgICAgRlRfQnl0ZSAgICBjaGFyc2V0OworICAgIEZUX1VTaG9ydCAgcGl4ZWxfd2lkdGg7CisgICAgRlRfVVNob3J0ICBwaXhlbF9oZWlnaHQ7CisgICAgRlRfQnl0ZSAgICBwaXRjaF9hbmRfZmFtaWx5OworICAgIEZUX1VTaG9ydCAgYXZnX3dpZHRoOworICAgIEZUX1VTaG9ydCAgbWF4X3dpZHRoOworICAgIEZUX0J5dGUgICAgZmlyc3RfY2hhcjsKKyAgICBGVF9CeXRlICAgIGxhc3RfY2hhcjsKKyAgICBGVF9CeXRlICAgIGRlZmF1bHRfY2hhcjsKKyAgICBGVF9CeXRlICAgIGJyZWFrX2NoYXI7CisgICAgRlRfVVNob3J0ICBieXRlc19wZXJfcm93OworICAgIEZUX1VMb25nICAgZGV2aWNlX29mZnNldDsKKyAgICBGVF9VTG9uZyAgIGZhY2VfbmFtZV9vZmZzZXQ7CisgICAgRlRfVUxvbmcgICBiaXRzX3BvaW50ZXI7CisgICAgRlRfVUxvbmcgICBiaXRzX29mZnNldDsKKyAgICBGVF9CeXRlICAgIHJlc2VydmVkOworICAgIEZUX1VMb25nICAgZmxhZ3M7CisgICAgRlRfVVNob3J0ICBBX3NwYWNlOworICAgIEZUX1VTaG9ydCAgQl9zcGFjZTsKKyAgICBGVF9VU2hvcnQgIENfc3BhY2U7CisgICAgRlRfVVNob3J0ICBjb2xvcl90YWJsZV9vZmZzZXQ7CisgICAgRlRfVUxvbmcgICByZXNlcnZlZDFbNF07CisKKyAgfSBGVF9XaW5GTlRfSGVhZGVyUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfV2luRk5UX0hlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYW4gQEZUX1dpbkZOVF9IZWFkZXJSZWMgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9XaW5GTlRfSGVhZGVyUmVjXyogIEZUX1dpbkZOVF9IZWFkZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgIEZUX0dldF9XaW5GTlRfSGVhZGVyCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgUmV0cmlldmUgYSBXaW5kb3dzIEZOVCBmb250IGluZm8gaGVhZGVyLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgIGZhY2UgICAgOjogQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgIGFoZWFkZXIgOjogVGhlIFdpbkZOVCBoZWFkZXIuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdpdGggV2luZG93cyBGTlQgZmFjZXMsIHJldHVybmluZyBhbiBlcnJvcgorICAgKiAgIG90aGVyd2lzZS4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfV2luRk5UX0hlYWRlciggRlRfRmFjZSAgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9XaW5GTlRfSGVhZGVyUmVjICAqYWhlYWRlciApOworCisKKyAgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFdJTkZOVF9IX18gKi8KKworCisvKiBFTkQgKi8KKworCisvKiBMb2NhbCBWYXJpYWJsZXM6ICovCisvKiBjb2Rpbmc6IHV0Zi04ICAgICovCisvKiBFbmQ6ICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2Z0eGY4Ni5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHhmODYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2UyZGFiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9mdHhmODYuaApAQCAtMCwwICsxLDgzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHhmODYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgU3VwcG9ydCBmdW5jdGlvbnMgZm9yIFgxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVFhGODZfSF9fCisjZGVmaW5lIF9fRlRYRjg2X0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZm9udF9mb3JtYXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRm9udCBGb3JtYXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgR2V0dGluZyB0aGUgZm9udCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhlIHNpbmdsZSBmdW5jdGlvbiBpbiB0aGlzIHNlY3Rpb24gY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBmb250ICAgICAqLworICAvKiAgIGZvcm1hdC4gIE5vdGUgdGhhdCB0aGlzIGluZm9ybWF0aW9uIGlzIG5vdCBuZWVkZWQgbm9ybWFsbHk7ICAgICAgICAgKi8KKyAgLyogICBob3dldmVyLCB0aGVyZSBhcmUgc3BlY2lhbCBjYXNlcyAobGlrZSBpbiBQREYgZGV2aWNlcykgd2hlcmUgaXQgaXMgICovCisgIC8qICAgaW1wb3J0YW50IHRvIGRpZmZlcmVudGlhdGUsIGluIHNwaXRlIG9mIEZyZWVUeXBlJ3MgdW5pZm9ybSBBUEkuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUaGlzIGZ1bmN0aW9uIGlzIGluIHRoZSBYMTEveGY4NiBuYW1lc3BhY2UgZm9yIGhpc3RvcmljYWwgcmVhc29ucyAgICovCisgIC8qICAgYW5kIGluIG5vIHdheSBkZXBlbmRzIG9uIHRoYXQgd2luZG93aW5nIHN5c3RlbS4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZUX0dldF9YMTFfRm9udF9Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFJldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBmb3JtYXQgb2YgYSBnaXZlbiBmYWNlLCB1c2luZyB2YWx1ZXMgKi8KKyAgLyogICB3aGljaCBjYW4gYmUgdXNlZCBhcyBhbiBYMTEgRk9OVF9QUk9QRVJUWS4gIFBvc3NpYmxlIHZhbHVlcyBhcmUgICAgICovCisgIC8qICAgYFRydWVUeXBlJywgYFR5cGV+MScsIGBCREYnLCBgUENGJywgYFR5cGV+NDInLCBgQ0lEflR5cGV+MScsIGBDRkYnLCAqLworICAvKiAgIGBQRlInLCBhbmQgYFdpbmRvd3N+Rk5UJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGZhY2UgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIElucHV0IGZhY2UgaGFuZGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGb250IGZvcm1hdCBzdHJpbmcuICBOVUxMIGluIGNhc2Ugb2YgZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIGNvbnN0IGNoYXIqICkKKyAgRlRfR2V0X1gxMV9Gb250X0Zvcm1hdCggRlRfRmFjZSAgZmFjZSApOworCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFhGODZfSF9fICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2F1dG9oaW50LmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2F1dG9oaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA3NjQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvYXV0b2hpbnQuaApAQCAtMCwwICsxLDI0NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgYXV0b2hpbnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEhpZ2gtbGV2ZWwgYGF1dG9oaW50JyBtb2R1bGUtc3BlY2lmaWMgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDIsIDIwMDcsIDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGF1dG8taGludGVyIGlzIHVzZWQgdG8gbG9hZCBhbmQgYXV0b21hdGljYWxseSBoaW50IGdseXBocyBpZiBhICAgICovCisgIC8qIGZvcm1hdC1zcGVjaWZpYyBoaW50ZXIgaXNuJ3QgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0FVVE9ISU5UX0hfXworI2RlZmluZSBfX0FVVE9ISU5UX0hfXworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBIHNtYWxsIHRlY2huaWNhbCBub3RlIHJlZ2FyZGluZyBhdXRvbWF0aWMgaGludGluZyBpbiBvcmRlciB0byAgICAgICAgKi8KKyAgLyogY2xhcmlmeSB0aGlzIG1vZHVsZSBpbnRlcmZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBbiBhdXRvbWF0aWMgaGludGVyIG1pZ2h0IGNvbXB1dGUgdHdvIGtpbmRzIG9mIGRhdGEgZm9yIGEgZ2l2ZW4gZmFjZTogKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gZ2xvYmFsIGhpbnRzOiBVc3VhbGx5IHNvbWUgbWV0cmljcyB0aGF0IGRlc2NyaWJlIGdsb2JhbCBwcm9wZXJ0aWVzICAqLworICAvKiAgICAgICAgICAgICAgICAgb2YgdGhlIGZhY2UuICBJdCBpcyBjb21wdXRlZCBieSBzY2FubmluZyBtb3JlIG9yIGxlc3MgKi8KKyAgLyogICAgICAgICAgICAgICAgIGFnZ3Jlc3NpdmVseSB0aGUgZ2x5cGhzIGluIHRoZSBmYWNlLCBhbmQgdGh1cyBjYW4gYmUgICovCisgIC8qICAgICAgICAgICAgICAgICB2ZXJ5IHNsb3cgdG8gY29tcHV0ZSAoZXZlbiBpZiB0aGUgc2l6ZSBvZiBnbG9iYWwgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgaGludHMgaXMgcmVhbGx5IHNtYWxsKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gZ2x5cGggaGludHM6ICBUaGVzZSBkZXNjcmliZSBzb21lIGltcG9ydGFudCBmZWF0dXJlcyBvZiB0aGUgZ2x5cGggICAqLworICAvKiAgICAgICAgICAgICAgICAgb3V0bGluZSwgYXMgd2VsbCBhcyBob3cgdG8gYWxpZ24gdGhlbS4gIFRoZXkgYXJlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIGdlbmVyYWxseSBtdWNoIGZhc3RlciB0byBjb21wdXRlIHRoYW4gZ2xvYmFsIGhpbnRzLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgY3VycmVudCBGcmVlVHlwZSBhdXRvLWhpbnRlciBkb2VzIGEgcHJldHR5IGdvb2Qgam9iIHdoaWxlICAgICAgICAgKi8KKyAgLyogcGVyZm9ybWluZyBmYXN0IGNvbXB1dGF0aW9ucyBmb3IgYm90aCBnbG9iYWwgYW5kIGdseXBoIGhpbnRzLiAgICAgICAgICovCisgIC8qIEhvd2V2ZXIsIHdlIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gaW50cm9kdWNpbmcgbW9yZSBjb21wbGV4IGFuZCAgICAgICAqLworICAvKiBwb3dlcmZ1bCBhbGdvcml0aG1zIGluIHRoZSBmdXR1cmUsIGxpa2UgdGhlIG9uZSBkZXNjcmliZWQgaW4gdGhlIEpvaG4gKi8KKyAgLyogRC4gSG9iYnkgcGFwZXIsIHdoaWNoIHVuZm9ydHVuYXRlbHkgcmVxdWlyZXMgYSBsb3QgbW9yZSBob3JzZXBvd2VyLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBCZWNhdXNlIGEgc3VmZmljaWVudGx5IHNvcGhpc3RpY2F0ZWQgZm9udCBtYW5hZ2VtZW50IHN5c3RlbSB3b3VsZCAgICAgKi8KKyAgLyogdHlwaWNhbGx5IGltcGxlbWVudCBhbiBMUlUgY2FjaGUgb2Ygb3BlbmVkIGZhY2Ugb2JqZWN0cyB0byByZWR1Y2UgICAgICovCisgIC8qIG1lbW9yeSB1c2FnZSwgaXQgaXMgYSBnb29kIGlkZWEgdG8gYmUgYWJsZSB0byBhdm9pZCByZWNvbXB1dGluZyAgICAgICAqLworICAvKiBnbG9iYWwgaGludHMgZXZlcnkgdGltZSB0aGUgc2FtZSBmYWNlIGlzIHJlLW9wZW5lZC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFdlIHRodXMgcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBjYWNoZSBnbG9iYWwgaGludHMgb3V0c2lkZSBvZiB0aGUgZmFjZSAqLworICAvKiBvYmplY3QsIGluIG9yZGVyIHRvIHNwZWVkIHVwIGZvbnQgcmUtb3BlbmluZyB0aW1lLiAgT2YgY291cnNlLCB0aGlzICAgKi8KKyAgLyogZmVhdHVyZSBpcyBwdXJlbHkgb3B0aW9uYWwsIHNvIG1vc3QgY2xpZW50IHByb2dyYW1zIHdvbid0IGV2ZW4gbm90aWNlICovCisgIC8qIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSSBpbml0aWFsbHkgdGhvdWdodCB0aGF0IGl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIGNhY2hlIHRoZSBnbHlwaCAgICovCisgIC8qIGhpbnRzIHRvby4gIEhvd2V2ZXIsIG15IGdlbmVyYWwgaWRlYSBub3cgaXMgdGhhdCBpZiB5b3UgcmVhbGx5IG5lZWQgICAqLworICAvKiB0byBjYWNoZSB0aGVzZSB0b28sIHlvdSBhcmUgc2ltcGx5IGluIG5lZWQgb2YgYSBuZXcgZm9udCBmb3JtYXQsICAgICAgKi8KKyAgLyogd2hlcmUgYWxsIHRoaXMgaW5mb3JtYXRpb24gY291bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUgZm9udCBmaWxlIGFuZCAgICovCisgIC8qIGRlY29kZWQgb24gdGhlIGZseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vZnJlZXR5cGUuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIHR5cGVkZWYgc3RydWN0IEZUX0F1dG9IaW50ZXJSZWNfICAqRlRfQXV0b0hpbnRlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsR2V0RnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBnbG9iYWwgaGludHMgY29tcHV0ZWQgZm9yIGEgZ2l2ZW4gZmFjZSBvYmplY3QuICBUaGUgICAqLworICAvKiAgICByZXN1bHRpbmcgZGF0YSBpcyBkaXNzb2NpYXRlZCBmcm9tIHRoZSBmYWNlIGFuZCB3aWxsIHN1cnZpdmUgYSAgICAgKi8KKyAgLyogICAgY2FsbCB0byBGVF9Eb25lX0ZhY2UoKS4gIEl0IG11c3QgYmUgZGlzY2FyZGVkIHRocm91Z2ggdGhlIEFQSSAgICAgICovCisgIC8qICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsRG9uZUZ1bmMoKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhpbnRlciAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGF1dG8taGludGVyLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2xvYmFsX2hpbnRzIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgZ2xvYmFsIGhpbnRzLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbG9iYWxfbGVuICAgOjogVGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGdsb2JhbCBoaW50cy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX0F1dG9IaW50ZXJfR2xvYmFsR2V0RnVuYykoIEZUX0F1dG9IaW50ZXIgIGhpbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKiAgICAgICAgIGdsb2JhbF9oaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nKiAgICAgICAgICBnbG9iYWxfbGVuICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9BdXRvSGludGVyX0dsb2JhbERvbmVGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEaXNjYXJkIHRoZSBnbG9iYWwgaGludHMgcmV0cmlldmVkIHRocm91Z2ggICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQXV0b0hpbnRlcl9HbG9iYWxHZXRGdW5jKCkuICBUaGlzIGlzIHRoZSBvbmx5IHdheSB0aGVzZSBoaW50cyAgICovCisgIC8qICAgIGFyZSBmcmVlZCBmcm9tIG1lbW9yeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhpbnRlciA6OiBBIGhhbmRsZSB0byB0aGUgYXV0by1oaW50ZXIgbW9kdWxlLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2xvYmFsIDo6IEEgcG9pbnRlciB0byByZXRyaWV2ZWQgZ2xvYmFsIGhpbnRzIHRvIGRpc2NhcmQuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9BdXRvSGludGVyX0dsb2JhbERvbmVGdW5jKSggRlRfQXV0b0hpbnRlciAgaGludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICBnbG9iYWwgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsUmVzZXRGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZWNvbXB1dGUgdGhlIGdsb2JhbCBtZXRyaWNzIGluIGEgZ2l2ZW4gICAqLworICAvKiAgICBmb250LiAgVGhpcyBpcyB1c2VmdWwgd2hlbiBnbG9iYWwgZm9udCBkYXRhIGNoYW5nZXMgKGUuZy4gTXVsdGlwbGUgKi8KKyAgLyogICAgTWFzdGVycyBmb250cyB3aGVyZSBibGVuZCBjb29yZGluYXRlcyBjaGFuZ2UpLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGludGVyIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgYXV0by1oaW50ZXIuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX0F1dG9IaW50ZXJfR2xvYmFsUmVzZXRGdW5jKSggRlRfQXV0b0hpbnRlciAgaGludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgZmFjZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQXV0b0hpbnRlcl9HbHlwaExvYWRGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxvYWQsIHNjYWxlLCBhbmQgYXV0b21hdGljYWxseSBoaW50IGEgICAgICovCisgIC8qICAgIGdseXBoIGZyb20gYSBnaXZlbiBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfaW5kZXggOjogVGhlIGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkX2ZsYWdzICA6OiBUaGUgbG9hZCBmbGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhcGFibGUgb2YgbG9hZGluZyBjb21wb3NpdGUgZ2x5cGhzIGJ5IGhpbnRpbmcgICAgKi8KKyAgLyogICAgZWFjaCBzdWItZ2x5cGggaW5kZXBlbmRlbnRseSAod2hpY2ggaW1wcm92ZXMgcXVhbGl0eSkuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJdCB3aWxsIGNhbGwgdGhlIGZvbnQgZHJpdmVyIHdpdGggQEZUX0xvYWRfR2x5cGgsIHdpdGggICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX0xPQURfTk9fU0NBTEUgc2V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfQXV0b0hpbnRlcl9HbHlwaExvYWRGdW5jKSggRlRfQXV0b0hpbnRlciAgaGludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZSAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgICAgICBsb2FkX2ZsYWdzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9BdXRvSGludGVyX0ludGVyZmFjZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgYXV0by1oaW50ZXIgbW9kdWxlJ3MgaW50ZXJmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9BdXRvSGludGVyX0ludGVyZmFjZVJlY18KKyAgeworICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsUmVzZXRGdW5jICByZXNldF9mYWNlOworICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsR2V0RnVuYyAgICBnZXRfZ2xvYmFsX2hpbnRzOworICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsRG9uZUZ1bmMgICBkb25lX2dsb2JhbF9oaW50czsKKyAgICBGVF9BdXRvSGludGVyX0dseXBoTG9hZEZ1bmMgICAgbG9hZF9nbHlwaDsKKworICB9IEZUX0F1dG9IaW50ZXJfSW50ZXJmYWNlUmVjLCAqRlRfQXV0b0hpbnRlcl9JbnRlcmZhY2U7CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9BVVRPSElOVEVSX0lOVEVSRkFDRSggICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZXNldF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2dsb2JhbF9oaW50c18sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfZ2xvYmFsX2hpbnRzXywgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2dseXBoXyApICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRiAgICAgICAgICAgICAgICAgICAgICAgXAorICBjb25zdCBGVF9BdXRvSGludGVyX0ludGVyZmFjZVJlYyAgY2xhc3NfID0gIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmVzZXRfZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9nbG9iYWxfaGludHNfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkb25lX2dsb2JhbF9oaW50c18sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9nbHlwaF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9BVVRPSElOVEVSX0lOVEVSRkFDRSggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZXNldF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2dsb2JhbF9oaW50c18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfZ2xvYmFsX2hpbnRzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2dseXBoXyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgICAgICAgICAgbGlicmFyeSwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9BdXRvSGludGVyX0ludGVyZmFjZVJlYyogIGNsYXp6ICkgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1VOVVNFRCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnJlc2V0X2ZhY2UgICAgICAgID0gcmVzZXRfZmFjZV87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfZ2xvYmFsX2hpbnRzICA9IGdldF9nbG9iYWxfaGludHNfOyAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZG9uZV9nbG9iYWxfaGludHMgPSBkb25lX2dsb2JhbF9oaW50c187ICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfZ2x5cGggICAgICAgID0gbG9hZF9nbHlwaF87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0FVVE9ISU5UX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYyNDYyZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgKQEAgLTAsMCArMSwxNjcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Y2FsYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBcml0aG1ldGljIGNvbXB1dGF0aW9ucyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA2LCAyMDA4LCAyMDA5LCAyMDEyLTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQ0FMQ19IX18KKyNkZWZpbmUgX19GVENBTENfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vZnJlZXR5cGUuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZpeGVkU3FydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbXB1dGVzIHRoZSBzcXVhcmUgcm9vdCBvZiBhIDE2LjE2IGZpeGVkLXBvaW50IHZhbHVlLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHggOjogVGhlIHZhbHVlIHRvIGNvbXB1dGUgdGhlIHJvb3QgZm9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSByZXN1bHQgb2YgYHNxcnQoeCknLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IHZlcnkgZmFzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfSW50MzIgKQorICBGVF9TcXJ0Rml4ZWQoIEZUX0ludDMyICB4ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZUX011bERpdigpIGFuZCBGVF9NdWxGaXgoKSBhcmUgZGVjbGFyZWQgaW4gZnJlZXR5cGUuaC4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NdWxEaXZfTm9fUm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHZlcnkgc2ltcGxlIGZ1bmN0aW9uIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29tcHV0YXRpb24gYChhKmIpL2MnICAgKi8KKyAgLyogICAgKHdpdGhvdXQgcm91bmRpbmcpIHdpdGggbWF4aW11bSBhY2N1cmFjeSAoaXQgdXNlcyBhIDY0LWJpdCAgICAgICAgICovCisgIC8qICAgIGludGVybWVkaWF0ZSBpbnRlZ2VyIHdoZW5ldmVyIG5lY2Vzc2FyeSkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpc24ndCBuZWNlc3NhcmlseSBhcyBmYXN0IGFzIHNvbWUgcHJvY2Vzc29yIHNwZWNpZmljICovCisgIC8qICAgIG9wZXJhdGlvbnMsIGJ1dCBpcyBhdCBsZWFzdCBjb21wbGV0ZWx5IHBvcnRhYmxlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGEgOjogVGhlIGZpcnN0IG11bHRpcGxpZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiIDo6IFRoZSBzZWNvbmQgbXVsdGlwbGllci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYyA6OiBUaGUgZGl2aXNvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlc3VsdCBvZiBgKGEqYikvYycuICBUaGlzIGZ1bmN0aW9uIG5ldmVyIHRyYXBzIHdoZW4gdHJ5aW5nIHRvICovCisgIC8qICAgIGRpdmlkZSBieSB6ZXJvOyBpdCBzaW1wbHkgcmV0dXJucyBgTWF4SW50JyBvciBgTWluSW50JyBkZXBlbmRpbmcgICAqLworICAvKiAgICBvbiB0aGUgc2lnbnMgb2YgYGEnIGFuZCBgYicuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX0xvbmcgKQorICBGVF9NdWxEaXZfTm9fUm91bmQoIEZUX0xvbmcgIGEsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgYiwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICBjICk7CisKKworICAvKgorICAgKiAgQSB2YXJpYW50IG9mIEZUX01hdHJpeF9NdWx0aXBseSB3aGljaCBzY2FsZXMgaXRzIHJlc3VsdCBhZnRlcndhcmRzLgorICAgKiAgVGhlIGlkZWEgaXMgdGhhdCBib3RoIGBhJyBhbmQgYGInIGFyZSBzY2FsZWQgYnkgZmFjdG9ycyBvZiAxMCBzbyB0aGF0CisgICAqICB0aGUgdmFsdWVzIGFyZSBhcyBwcmVjaXNlIGFzIHBvc3NpYmxlIHRvIGdldCBhIGNvcnJlY3QgcmVzdWx0IGR1cmluZworICAgKiAgdGhlIDY0Yml0IG11bHRpcGxpY2F0aW9uLiAgTGV0IGBzYScgYW5kIGBzYicgYmUgdGhlIHNjYWxpbmcgZmFjdG9ycyBvZgorICAgKiAgYGEnIGFuZCBgYicsIHJlc3BlY3RpdmVseSwgdGhlbiB0aGUgc2NhbGluZyBmYWN0b3Igb2YgdGhlIHJlc3VsdCBpcworICAgKiAgYHNhKnNiJy4KKyAgICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9NYXRyaXhfTXVsdGlwbHlfU2NhbGVkKCBjb25zdCBGVF9NYXRyaXgqICBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NYXRyaXggICAgICAgICpiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgICAgICBzY2FsaW5nICk7CisKKworICAvKgorICAgKiAgQSB2YXJpYW50IG9mIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0uICBTZWUgY29tbWVudHMgZm9yCisgICAqICBGVF9NYXRyaXhfTXVsdGlwbHlfU2NhbGVkLgorICAgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm1fU2NhbGVkKCBGVF9WZWN0b3IqICAgICAgICB2ZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9NYXRyaXgqICBtYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgICAgICBzY2FsaW5nICk7CisKKworICAvKgorICAgKiAgUmV0dXJuIC0xLCAwLCBvciArMSwgZGVwZW5kaW5nIG9uIHRoZSBvcmllbnRhdGlvbiBvZiBhIGdpdmVuIGNvcm5lci4KKyAgICogIFdlIHVzZSB0aGUgQ2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtLCB3aXRoIHBvc2l0aXZlIHZlcnRpY2FsIHZhbHVlcworICAgKiAgZ29pbmcgdXB3YXJkcy4gIFRoZSBmdW5jdGlvbiByZXR1cm5zICsxIGlmIHRoZSBjb3JuZXIgdHVybnMgdG8gdGhlCisgICAqICBsZWZ0LCAtMSB0byB0aGUgcmlnaHQsIGFuZCAwIGZvciB1bmRlY2lkYWJsZSBjYXNlcy4KKyAgICovCisgIEZUX0JBU0UoIEZUX0ludCApCisgIGZ0X2Nvcm5lcl9vcmllbnRhdGlvbiggRlRfUG9zICBpbl94LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgaW5feSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgIG91dF94LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgb3V0X3kgKTsKKworICAvKgorICAgKiAgUmV0dXJuIFRSVUUgaWYgYSBjb3JuZXIgaXMgZmxhdCBvciBuZWFybHkgZmxhdC4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgKiAgc2F5aW5nIHRoYXQgdGhlIGFuZ2xlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYGluJyBhbmQgYG91dCcgdmVjdG9ycyBpcworICAgKiAgdmVyeSBzbWFsbC4KKyAgICovCisgIEZUX0JBU0UoIEZUX0ludCApCisgIGZ0X2Nvcm5lcl9pc19mbGF0KCBGVF9Qb3MgIGluX3gsCisgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgIGluX3ksCisgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgIG91dF94LAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICBvdXRfeSApOworCisKKyAgLyoKKyAgICogIFJldHVybiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgaW5kZXguCisgICAqLworICBGVF9CQVNFKCBGVF9JbnQgKQorICBGVF9NU0IoIEZUX1VJbnQzMiAgeiApOworCisKKyAgLyoKKyAgICogIFJldHVybiBzcXJ0KHgqeCt5KnkpLCB3aGljaCBpcyB0aGUgc2FtZSBhcyBgRlRfVmVjdG9yX0xlbmd0aCcgYnV0IHVzZXMKKyAgICogIHR3byBmaXhlZC1wb2ludCBhcmd1bWVudHMgaW5zdGVhZC4KKyAgICovCisgIEZUX0JBU0UoIEZUX0ZpeGVkICkKKyAgRlRfSHlwb3QoIEZUX0ZpeGVkICB4LAorICAgICAgICAgICAgRlRfRml4ZWQgIHkgKTsKKworCisjZGVmaW5lIElOVF9UT19GMjZET1Q2KCB4ICkgICAgKCAoRlRfTG9uZykoeCkgPDwgNiAgKQorI2RlZmluZSBJTlRfVE9fRjJET1QxNCggeCApICAgICggKEZUX0xvbmcpKHgpIDw8IDE0ICkKKyNkZWZpbmUgSU5UX1RPX0ZJWEVEKCB4ICkgICAgICAoIChGVF9Mb25nKSh4KSA8PCAxNiApCisjZGVmaW5lIEYyRE9UMTRfVE9fRklYRUQoIHggKSAgKCAoRlRfTG9uZykoeCkgPDwgMiAgKQorI2RlZmluZSBGTE9BVF9UT19GSVhFRCggeCApICAgICggKEZUX0xvbmcpKCB4ICogNjU1MzYuMCApICkKKyNkZWZpbmUgRklYRURfVE9fSU5UKCB4ICkgICAgICAoIEZUX1JvdW5kRml4KCB4ICkgPj4gMTYgKQorCisjZGVmaW5lIFJPVU5EX0YyNkRPVDYoIHggKSAgICAgKCB4ID49IDAgPyAoICAgICggKHgpICsgMzIgKSAmIC02NCApICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoIC0oICggMzIgLSAoeCkgKSAmIC02NCApICkgKQorCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRDQUxDX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2IxNDE5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgKQEAgLTAsMCArMSwyNTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0ZGVidWcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBEZWJ1Z2dpbmcgYW5kIGxvZ2dpbmcgY29tcG9uZW50IChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAyLCAyMDA0LCAyMDA2LTIwMDksIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgSU1QT1JUQU5UOiBBIGRlc2NyaXB0aW9uIG9mIEZyZWVUeXBlJ3MgZGVidWdnaW5nIHN1cHBvcnQgY2FuIGJlICAgICAgICAqLworLyogICAgICAgICAgICAgZm91bmQgaW4gYGRvY3MvREVCVUcuVFhUJy4gIFJlYWQgaXQgaWYgeW91IG5lZWQgdG8gdXNlIG9yICAgKi8KKy8qICAgICAgICAgICAgIHVuZGVyc3RhbmQgdGhpcyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRERUJVR19IX18KKyNkZWZpbmUgX19GVERFQlVHX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uL2NvbmZpZy9mdGNvbmZpZy5oIgorI2luY2x1ZGUgIi4uL2ZyZWV0eXBlLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKiBmb3JjZSB0aGUgZGVmaW5pdGlvbiBvZiBGVF9ERUJVR19MRVZFTF9FUlJPUiBpZiBGVF9ERUJVR19MRVZFTF9UUkFDRSAqLworICAvKiBpcyBhbHJlYWR5IGRlZmluZWQ7IHRoaXMgc2ltcGxpZmllcyB0aGUgZm9sbG93aW5nICNpZmRlZnMgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisjdW5kZWYgIEZUX0RFQlVHX0xFVkVMX0VSUk9SCisjZGVmaW5lIEZUX0RFQlVHX0xFVkVMX0VSUk9SCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRoZSB0cmFjZSBlbnVtcyBhcyB3ZWxsIGFzIHRoZSB0cmFjZSBsZXZlbHMgYXJyYXkgd2hlbiB0aGV5ICAgICovCisgIC8qIGFyZSBuZWVkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorCisjZGVmaW5lIEZUX1RSQUNFX0RFRiggeCApICB0cmFjZV8gIyMgeCAsCisKKyAgLyogZGVmaW5pbmcgdGhlIGVudW1lcmF0aW9uICovCisgIHR5cGVkZWYgZW51bSAgRlRfVHJhY2VfCisgIHsKKyNpbmNsdWRlICJmdHRyYWNlLmgiCisgICAgdHJhY2VfY291bnQKKworICB9IEZUX1RyYWNlOworCisKKyAgLyogZGVmaW5pbmcgdGhlIGFycmF5IG9mIHRyYWNlIGxldmVscywgcHJvdmlkZWQgYnkgYHNyYy9iYXNlL2Z0ZGVidWcuYycgKi8KKyAgZXh0ZXJuIGludCAgZnRfdHJhY2VfbGV2ZWxzW3RyYWNlX2NvdW50XTsKKworI3VuZGVmIEZUX1RSQUNFX0RFRgorCisjZW5kaWYgLyogRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRoZSBGVF9UUkFDRSBtYWNybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJTVBPUlRBTlQhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEVhY2ggY29tcG9uZW50IG11c3QgZGVmaW5lIHRoZSBtYWNybyBGVF9DT01QT05FTlQgdG8gYSB2YWxpZCBGVF9UcmFjZSAqLworICAvKiB2YWx1ZSBiZWZvcmUgdXNpbmcgYW55IFRSQUNFIG1hY3JvLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKworI2RlZmluZSBGVF9UUkFDRSggbGV2ZWwsIHZhcmZvcm1hdCApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKCBmdF90cmFjZV9sZXZlbHNbRlRfQ09NUE9ORU5UXSA+PSBsZXZlbCApIFwKKyAgICAgICAgICAgICAgRlRfTWVzc2FnZSB2YXJmb3JtYXQ7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSB3aGlsZSAoIDAgKQorCisjZWxzZSAvKiAhRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworI2RlZmluZSBGVF9UUkFDRSggbGV2ZWwsIHZhcmZvcm1hdCApICBkbyB7IH0gd2hpbGUgKCAwICkgICAgICAvKiBub3RoaW5nICovCisKKyNlbmRpZiAvKiAhRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1RyYWNlX0dldF9Db3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSB0cmFjZSBjb21wb25lbnRzLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBudW1iZXIgb2YgdHJhY2UgY29tcG9uZW50cy4gIDAgaWYgRnJlZVR5cGUgMiBpcyBub3QgYnVpbHQgd2l0aCAqLworICAvKiAgICBGVF9ERUJVR19MRVZFTF9UUkFDRSBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIG1heSBiZSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gYWNjZXNzIGVsZW1lbnRzIG9mICAgICAgKi8KKyAgLyogICAgdGhlIGludGVybmFsIGBmdF90cmFjZV9sZXZlbHMnIGFycmF5IGJ5IGFuIGluZGV4LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9JbnQgKQorICBGVF9UcmFjZV9HZXRfQ291bnQoIHZvaWQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1RyYWNlX0dldF9OYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiB0aGUgbmFtZSBvZiBhIHRyYWNlIGNvbXBvbmVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBpbmRleCBvZiB0aGUgdHJhY2UgY29tcG9uZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBuYW1lIG9mIHRoZSB0cmFjZSBjb21wb25lbnQuICBUaGlzIGlzIGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgICAqLworICAvKiAgICBDIHN0cmluZywgc28gZG8gbm90IGZyZWUgaXQgYWZ0ZXIgdXNlLiAgTlVMTCBpZiBGcmVlVHlwZSAyIGlzIG5vdCAgKi8KKyAgLyogICAgYnVpbHQgd2l0aCBGVF9ERUJVR19MRVZFTF9UUkFDRSBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlIEBGVF9UcmFjZV9HZXRfQ291bnQgdG8gZ2V0IHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHRyYWNlICAgICAgICovCisgIC8qICAgIGNvbXBvbmVudHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBtYXkgYmUgdXNlZnVsIGlmIHlvdSB3YW50IHRvIGNvbnRyb2wgRnJlZVR5cGUgMidzICAgICovCisgIC8qICAgIGRlYnVnIGxldmVsIGluIHlvdXIgYXBwbGljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggY29uc3QgY2hhciAqICkKKyAgRlRfVHJhY2VfR2V0X05hbWUoIEZUX0ludCAgaWR4ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFlvdSBuZWVkIHR3byBvcGVuaW5nIGFuZCBjbG9zaW5nIHBhcmVudGhlc2VzISAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRXhhbXBsZTogRlRfVFJBQ0UwKCggIlZhbHVlIGlzICVpIiwgZm9vICkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPdXRwdXQgb2YgdGhlIEZUX1RSQUNFWCBtYWNyb3MgaXMgc2VudCB0byBzdGRlcnIuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEZUX1RSQUNFMCggdmFyZm9ybWF0ICkgIEZUX1RSQUNFKCAwLCB2YXJmb3JtYXQgKQorI2RlZmluZSBGVF9UUkFDRTEoIHZhcmZvcm1hdCApICBGVF9UUkFDRSggMSwgdmFyZm9ybWF0ICkKKyNkZWZpbmUgRlRfVFJBQ0UyKCB2YXJmb3JtYXQgKSAgRlRfVFJBQ0UoIDIsIHZhcmZvcm1hdCApCisjZGVmaW5lIEZUX1RSQUNFMyggdmFyZm9ybWF0ICkgIEZUX1RSQUNFKCAzLCB2YXJmb3JtYXQgKQorI2RlZmluZSBGVF9UUkFDRTQoIHZhcmZvcm1hdCApICBGVF9UUkFDRSggNCwgdmFyZm9ybWF0ICkKKyNkZWZpbmUgRlRfVFJBQ0U1KCB2YXJmb3JtYXQgKSAgRlRfVFJBQ0UoIDUsIHZhcmZvcm1hdCApCisjZGVmaW5lIEZUX1RSQUNFNiggdmFyZm9ybWF0ICkgIEZUX1RSQUNFKCA2LCB2YXJmb3JtYXQgKQorI2RlZmluZSBGVF9UUkFDRTcoIHZhcmZvcm1hdCApICBGVF9UUkFDRSggNywgdmFyZm9ybWF0ICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRoZSBGVF9FUlJPUiBtYWNyby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPdXRwdXQgb2YgdGhpcyBtYWNybyBpcyBzZW50IHRvIHN0ZGVyci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfRVJST1IKKworI2RlZmluZSBGVF9FUlJPUiggdmFyZm9ybWF0ICkgIEZUX01lc3NhZ2UgIHZhcmZvcm1hdAorCisjZWxzZSAgLyogIUZUX0RFQlVHX0xFVkVMX0VSUk9SICovCisKKyNkZWZpbmUgRlRfRVJST1IoIHZhcmZvcm1hdCApICBkbyB7IH0gd2hpbGUgKCAwICkgICAgICAvKiBub3RoaW5nICovCisKKyNlbmRpZiAvKiAhRlRfREVCVUdfTEVWRUxfRVJST1IgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRoZSBGVF9BU1NFUlQgYW5kIEZUX1RIUk9XIG1hY3Jvcy4gIFRoZSBjYWxsIHRvIGBGVF9UaHJvdycgICAgICovCisgIC8qIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGVhc2lseSBzZXQgYSBicmVha3BvaW50IGF0IHRoaXMgZnVuY3Rpb24uICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9FUlJPUgorCisjZGVmaW5lIEZUX0FTU0VSVCggY29uZGl0aW9uICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAoICEoIGNvbmRpdGlvbiApICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgRlRfUGFuaWMoICJhc3NlcnRpb24gZmFpbGVkIG9uIGxpbmUgJWQgb2YgZmlsZSAlc1xuIiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgX19MSU5FX18sIF9fRklMRV9fICk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSB3aGlsZSAoIDAgKQorCisjZGVmaW5lIEZUX1RIUk9XKCBlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEZUX1Rocm93KCBGVF9FUlJfQ0FUKCBGVF9FUlJfUFJFRklYLCBlICksICAgXAorICAgICAgICAgICAgICAgICAgICAgIF9fTElORV9fLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18gKSAgICAgICAgICAgICAgICAgICAgICB8IFwKKyAgICAgICAgICAgIEZUX0VSUl9DQVQoIEZUX0VSUl9QUkVGSVgsIGUgKSAgICAgICAgICAgICkKKworI2Vsc2UgLyogIUZUX0RFQlVHX0xFVkVMX0VSUk9SICovCisKKyNkZWZpbmUgRlRfQVNTRVJUKCBjb25kaXRpb24gKSAgZG8geyB9IHdoaWxlICggMCApCisKKyNkZWZpbmUgRlRfVEhST1coIGUgKSAgRlRfRVJSX0NBVCggRlRfRVJSX1BSRUZJWCwgZSApCisKKyNlbmRpZiAvKiAhRlRfREVCVUdfTEVWRUxfRVJST1IgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIGBGVF9NZXNzYWdlJyBhbmQgYEZUX1BhbmljJyB3aGVuIG5lZWRlZC4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX0VSUk9SCisKKyNpbmNsdWRlICJzdGRpby5oIiAgLyogZm9yIHZmcHJpbnRmKCkgKi8KKworICAvKiBwcmludCBhIG1lc3NhZ2UgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX01lc3NhZ2UoIGNvbnN0IGNoYXIqICBmbXQsCisgICAgICAgICAgICAgIC4uLiApOworCisgIC8qIHByaW50IGEgbWVzc2FnZSBhbmQgZXhpdCAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfUGFuaWMoIGNvbnN0IGNoYXIqICBmbXQsCisgICAgICAgICAgICAuLi4gKTsKKworICAvKiByZXBvcnQgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlciBvZiBhbiBlcnJvciAqLworICBGVF9CQVNFKCBpbnQgKQorICBGVF9UaHJvdyggRlRfRXJyb3IgICAgIGVycm9yLAorICAgICAgICAgICAgaW50ICAgICAgICAgIGxpbmUsCisgICAgICAgICAgICBjb25zdCBjaGFyKiAgZmlsZSApOworCisjZW5kaWYgLyogRlRfREVCVUdfTEVWRUxfRVJST1IgKi8KKworCisgIEZUX0JBU0UoIHZvaWQgKQorICBmdF9kZWJ1Z19pbml0KCB2b2lkICk7CisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRERUJVR19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjBlODYzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oCkBAIC0wLDAgKzEsNDA5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGRyaXZlci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgZm9udCBkcml2ZXIgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMywgMjAwNiwgMjAwOCwgMjAxMS0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVERSSVZFUl9IX18KKyNkZWZpbmUgX19GVERSSVZFUl9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi9mdG1vZGFwaS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0ZhY2VfSW5pdEZ1bmMpKCBGVF9TdHJlYW0gICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIHR5cGVmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBudW1fcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbWV0ZXJzICk7CisKKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfRmFjZV9Eb25lRnVuYykoIEZUX0ZhY2UgIGZhY2UgKTsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TaXplX0luaXRGdW5jKSggRlRfU2l6ZSAgc2l6ZSApOworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1NpemVfRG9uZUZ1bmMpKCBGVF9TaXplICBzaXplICk7CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfU2xvdF9Jbml0RnVuYykoIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1Nsb3RfRG9uZUZ1bmMpKCBGVF9HbHlwaFNsb3QgIHNsb3QgKTsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TaXplX1JlcXVlc3RGdW5jKSggRlRfU2l6ZSAgICAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TaXplX1JlcXVlc3QgIHJlcSApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TaXplX1NlbGVjdEZ1bmMpKCBGVF9TaXplICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgc2l6ZV9pbmRleCApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TbG90X0xvYWRGdW5jKSggRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9TaXplICAgICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludDMyICAgICAgbG9hZF9mbGFncyApOworCisKKyAgdHlwZWRlZiBGVF9VSW50CisgICgqRlRfQ2hhck1hcF9DaGFySW5kZXhGdW5jKSggRlRfQ2hhck1hcCAgY2hhcm1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICBjaGFyY29kZSApOworCisgIHR5cGVkZWYgRlRfTG9uZworICAoKkZUX0NoYXJNYXBfQ2hhck5leHRGdW5jKSggRlRfQ2hhck1hcCAgY2hhcm1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIGNoYXJjb2RlICk7CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfRmFjZV9HZXRLZXJuaW5nRnVuYykoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGxlZnRfZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHJpZ2h0X2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICBrZXJuaW5nICk7CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfRmFjZV9BdHRhY2hGdW5jKSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtICk7CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfRmFjZV9HZXRBZHZhbmNlc0Z1bmMpKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludDMyICAgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGFkdmFuY2VzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Ecml2ZXJfQ2xhc3NSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZm9udCBkcml2ZXIgY2xhc3MuICBUaGlzIHN0cnVjdHVyZSBtb3N0bHkgY29udGFpbnMgcG9pbnRlcnMgdG8gKi8KKyAgLyogICAgZHJpdmVyIG1ldGhvZHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcm9vdCAgICAgICAgICAgICA6OiBUaGUgcGFyZW50IG1vZHVsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX29iamVjdF9zaXplIDo6IFRoZSBzaXplIG9mIGEgZmFjZSBvYmplY3QgaW4gYnl0ZXMuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNpemVfb2JqZWN0X3NpemUgOjogVGhlIHNpemUgb2YgYSBzaXplIG9iamVjdCBpbiBieXRlcy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2xvdF9vYmplY3Rfc2l6ZSA6OiBUaGUgc2l6ZSBvZiBhIGdseXBoIG9iamVjdCBpbiBieXRlcy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpbml0X2ZhY2UgICAgICAgIDo6IFRoZSBmb3JtYXQtc3BlY2lmaWMgZmFjZSBjb25zdHJ1Y3Rvci4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRvbmVfZmFjZSAgICAgICAgOjogVGhlIGZvcm1hdC1zcGVjaWZpYyBmYWNlIGRlc3RydWN0b3IuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW5pdF9zaXplICAgICAgICA6OiBUaGUgZm9ybWF0LXNwZWNpZmljIHNpemUgY29uc3RydWN0b3IuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkb25lX3NpemUgICAgICAgIDo6IFRoZSBmb3JtYXQtc3BlY2lmaWMgc2l6ZSBkZXN0cnVjdG9yLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGluaXRfc2xvdCAgICAgICAgOjogVGhlIGZvcm1hdC1zcGVjaWZpYyBzbG90IGNvbnN0cnVjdG9yLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZG9uZV9zbG90ICAgICAgICA6OiBUaGUgZm9ybWF0LXNwZWNpZmljIHNsb3QgZGVzdHJ1Y3Rvci4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZF9nbHlwaCAgICAgICA6OiBBIGZ1bmN0aW9uIGhhbmRsZSB0byBsb2FkIGEgZ2x5cGggdG8gYSBzbG90LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWVsZCBpcyBtYW5kYXRvcnkhICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2V0X2tlcm5pbmcgICAgICA6OiBBIGZ1bmN0aW9uIGhhbmRsZSB0byByZXR1cm4gdGhlIHVuc2NhbGVkICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAga2VybmluZyBmb3IgYSBnaXZlbiBwYWlyIG9mIGdseXBocy4gIENhbiBiZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHNldCB0byAwIGlmIHRoZSBmb3JtYXQgZG9lc24ndCBzdXBwb3J0ICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBrZXJuaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhdHRhY2hfZmlsZSAgICAgIDo6IFRoaXMgZnVuY3Rpb24gaGFuZGxlIGlzIHVzZWQgdG8gcmVhZCAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGRhdGEgZm9yIGEgZmFjZSBmcm9tIGFub3RoZXIgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS9zdHJlYW0uICBGb3IgZXhhbXBsZSwgdGhpcyBjYW4gYmUgdXNlZCB0byAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBkYXRhIGZyb20gQUZNIG9yIFBGTSBmaWxlcyBvbiBhIFR5cGUgMSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBmYWNlLCBvciBhIENJRE1hcCBvbiBhIENJRC1rZXllZCBmYWNlLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnZXRfYWR2YW5jZXMgICAgIDo6IEEgZnVuY3Rpb24gaGFuZGxlIHVzZWQgdG8gcmV0dXJuIGFkdmFuY2UgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMgb2YgYGNvdW50JyBnbHlwaHMgKGluIGZvbnQgdW5pdHMpLCAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmcgYXQgYGZpcnN0Jy4gIFRoZSBgdmVydGljYWwnIGZsYWcgbXVzdCAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGJlIHNldCB0byBnZXQgdmVydGljYWwgYWR2YW5jZSBoZWlnaHRzLiAgVGhlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBgYWR2YW5jZXMnIGJ1ZmZlciBpcyBjYWxsZXItYWxsb2NhdGVkLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGlkZWEgb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBiZSBhYmxlIHRvICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gZGV2aWNlLWluZGVwZW5kZW50IHRleHQgbGF5b3V0IHdpdGhvdXQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nIGEgc2luZ2xlIGdseXBoIGltYWdlLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZXF1ZXN0X3NpemUgICAgIDo6IEEgaGFuZGxlIHRvIGEgZnVuY3Rpb24gdXNlZCB0byByZXF1ZXN0IHRoZSBuZXcgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgc2l6ZS4gIENhbiBiZSBzZXQgdG8gMCBpZiB0aGUgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGluZyBkb25lIGluIHRoZSBiYXNlIGxheWVyIHN1ZmZpY2VzLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2VsZWN0X3NpemUgICAgICA6OiBBIGhhbmRsZSB0byBhIGZ1bmN0aW9uIHVzZWQgdG8gc2VsZWN0IGEgbmV3ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWQgc2l6ZS4gIEl0IGlzIHVzZWQgb25seSBpZiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9GQUNFX0ZMQUdfRklYRURfU0laRVMgaXMgc2V0LiAgQ2FuIGJlIHNldCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICB0byAwIGlmIHRoZSBzY2FsaW5nIGRvbmUgaW4gdGhlIGJhc2UgbGF5ZXIgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgc3VmZmljZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTW9zdCBmdW5jdGlvbiBwb2ludGVycywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGBsb2FkX2dseXBoJywgY2FuIGJlICovCisgIC8qICAgIHNldCB0byAwIHRvIGluZGljYXRlIGEgZGVmYXVsdCBiZWhhdmlvdXIuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0RyaXZlcl9DbGFzc1JlY18KKyAgeworICAgIEZUX01vZHVsZV9DbGFzcyAgICAgICAgICByb290OworCisgICAgRlRfTG9uZyAgICAgICAgICAgICAgICAgIGZhY2Vfb2JqZWN0X3NpemU7CisgICAgRlRfTG9uZyAgICAgICAgICAgICAgICAgIHNpemVfb2JqZWN0X3NpemU7CisgICAgRlRfTG9uZyAgICAgICAgICAgICAgICAgIHNsb3Rfb2JqZWN0X3NpemU7CisKKyAgICBGVF9GYWNlX0luaXRGdW5jICAgICAgICAgaW5pdF9mYWNlOworICAgIEZUX0ZhY2VfRG9uZUZ1bmMgICAgICAgICBkb25lX2ZhY2U7CisKKyAgICBGVF9TaXplX0luaXRGdW5jICAgICAgICAgaW5pdF9zaXplOworICAgIEZUX1NpemVfRG9uZUZ1bmMgICAgICAgICBkb25lX3NpemU7CisKKyAgICBGVF9TbG90X0luaXRGdW5jICAgICAgICAgaW5pdF9zbG90OworICAgIEZUX1Nsb3RfRG9uZUZ1bmMgICAgICAgICBkb25lX3Nsb3Q7CisKKyAgICBGVF9TbG90X0xvYWRGdW5jICAgICAgICAgbG9hZF9nbHlwaDsKKworICAgIEZUX0ZhY2VfR2V0S2VybmluZ0Z1bmMgICBnZXRfa2VybmluZzsKKyAgICBGVF9GYWNlX0F0dGFjaEZ1bmMgICAgICAgYXR0YWNoX2ZpbGU7CisgICAgRlRfRmFjZV9HZXRBZHZhbmNlc0Z1bmMgIGdldF9hZHZhbmNlczsKKworICAgIC8qIHNpbmNlIHZlcnNpb24gMi4yICovCisgICAgRlRfU2l6ZV9SZXF1ZXN0RnVuYyAgICAgIHJlcXVlc3Rfc2l6ZTsKKyAgICBGVF9TaXplX1NlbGVjdEZ1bmMgICAgICAgc2VsZWN0X3NpemU7CisKKyAgfSBGVF9Ecml2ZXJfQ2xhc3NSZWMsICpGVF9Ecml2ZXJfQ2xhc3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUNMQVJFX0RSSVZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2VkIHRvIGNyZWF0ZSBhIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgYW4gRlRfRHJpdmVyX0NsYXNzUmVjICAgICAgKi8KKyAgLyogICAgc3RydWN0IGluc3RhbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX0RSSVZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBpbml0aWFsaXplIGFuIGluc3RhbmNlIG9mIEZUX0RyaXZlcl9DbGFzc1JlYyBzdHJ1Y3QuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIGRlZmluZWQgYSBgY3JlYXRlJyBmdW5jdGlvbiBoYXMgdG8gYmUgKi8KKyAgLyogICAgY2FsbGVkIHdpdGggYSBwb2ludGVyIHdoZXJlIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlIGlzIHJldHVybmVkLiAgICovCisgIC8qICAgIEFuZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQgYSBgZGVzdHJveScgZnVuY3Rpb24gbmVlZHMgdG8gYmUgICAqLworICAvKiAgICBjYWxsZWQgdG8gcmVsZWFzZSB0aGF0IGFsbG9jYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGBmY2luaXQuYycgKGZ0X2NyZWF0ZV9kZWZhdWx0X21vZHVsZV9jbGFzc2VzKSBhbHJlYWR5IGNvbnRhaW5zIGEgICAqLworICAvKiAgICBtZWNoYW5pc20gdG8gY2FsbCB0aGVzZSBmdW5jdGlvbnMgZm9yIHRoZSBkZWZhdWx0IG1vZHVsZXMgICAgICAgICAgKi8KKyAgLyogICAgZGVzY3JpYmVkIGluIGBmdG1vZHVsZS5oJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RpY2UgdGhhdCB0aGUgY3JlYXRlZCBgY3JlYXRlJyBhbmQgYGRlc3Ryb3knIGZ1bmN0aW9ucyBjYWxsICAgICAgKi8KKyAgLyogICAgYHBpY19pbml0JyBhbmQgYHBpY19mcmVlJyB0byBhbGxvdyB5b3UgdG8gbWFudWFsbHkgYWxsb2NhdGUgYW5kICAgICovCisgIC8qICAgIGluaXRpYWxpemUgYW55IGFkZGl0aW9uYWwgZ2xvYmFsIGRhdGEsIGxpa2UgYSBtb2R1bGUgc3BlY2lmaWMgICAgICAqLworICAvKiAgICBpbnRlcmZhY2UsIGFuZCBwdXQgdGhlbSBpbiB0aGUgZ2xvYmFsIHBpYyBjb250YWluZXIgZGVmaW5lZCBpbiAgICAgKi8KKyAgLyogICAgYGZ0cGljLmgnLiAgSWYgeW91IGRvbid0IG5lZWQgdGhlbSBqdXN0IGltcGxlbWVudCB0aGUgZnVuY3Rpb25zIGFzICovCisgIC8qICAgIGVtcHR5IHRvIHJlc29sdmUgdGhlIGxpbmsgZXJyb3IuICBBbHNvIHRoZSBgcGljX2luaXQnIGFuZCAgICAgICAgICAqLworICAvKiAgICBgcGljX2ZyZWUnIGZ1bmN0aW9ucyBzaG91bGQgYmUgZGVjbGFyZWQgaW4gYHBpYy5oJywgdG8gYmUgcmVmZXJyZWQgKi8KKyAgLyogICAgYnkgZHJpdmVyIGRlZmluaXRpb24gY2FsbGluZyBgRlRfREVGSU5FX0RSSVZFUicgaW4gZm9sbG93aW5nLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIG5vdCBkZWZpbmVkIHRoZSBzdHJ1Y3Qgd2lsbCBiZSAgICAgICAgKi8KKyAgLyogICAgYWxsb2NhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUgKG9yIHRoZSBzY29wZSB3aGVyZSB0aGUgbWFjcm8gaXMgICAgICovCisgIC8qICAgIHVzZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUNMQVJFX0RSSVZFUiggY2xhc3NfICkgIFwKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUgICAgICAgICAgICAgICAgICBcCisgIGNvbnN0IEZUX0RyaXZlcl9DbGFzc1JlYyAgY2xhc3NfOworCisjZGVmaW5lIEZUX0RFRklORV9EUklWRVIoICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZmxhZ3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdmVyc2lvbl8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZmFjZV9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2xvdF9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9nbHlwaF8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2tlcm5pbmdfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgYXR0YWNoX2ZpbGVfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2FkdmFuY2VzXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWVzdF9zaXplXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2VsZWN0X3NpemVfICkgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRiAgICAgICAgICAgICAgICAgICAgICBcCisgIGNvbnN0IEZUX0RyaXZlcl9DbGFzc1JlYyAgY2xhc3NfID0gICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfREVGSU5FX1JPT1RfTU9EVUxFKCBmbGFnc18sICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplXywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lXywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc18sICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VfLCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0XywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lXywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaW50ZXJmYWNlXyApICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZmFjZV9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2l6ZV9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2xvdF9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5pdF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5pdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5pdF9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9nbHlwaF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2tlcm5pbmdfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXR0YWNoX2ZpbGVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2FkdmFuY2VzXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmVxdWVzdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2VsZWN0X3NpemVfICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVDTEFSRV9EUklWRVIoIGNsYXNzXyApICBGVF9ERUNMQVJFX01PRFVMRSggY2xhc3NfICkKKworI2RlZmluZSBGVF9ERUZJTkVfRFJJVkVSKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmbGFnc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNpemVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHJlcXVpcmVzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmYWNlX29iamVjdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNpemVfb2JqZWN0X3NpemVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2xvdF9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0X2ZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkb25lX3NpemVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfc2xvdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2dseXBoXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9rZXJuaW5nXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgYXR0YWNoX2ZpbGVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfYWR2YW5jZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHJlcXVlc3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2VsZWN0X3NpemVfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9EZXN0cm95X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlX0NsYXNzKiAgY2xhenogKSAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfRHJpdmVyX0NsYXNzICBkY2xhenogPSAoRlRfRHJpdmVyX0NsYXNzKWNsYXp6OyAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhc3NfICMjIF9waWNfZnJlZSggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGRjbGF6eiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggZGNsYXp6ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ3JlYXRlX0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICBsaWJyYXJ5LCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlX0NsYXNzKiogIG91dHB1dF9jbGFzcyApICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Ecml2ZXJfQ2xhc3MgIGNsYXp6ICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX0Vycm9yICAgICAgICAgZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBGVF9BTExPQyggY2xhenosIHNpemVvZiAoICpjbGF6eiApICkgKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZXJyb3IgPSBjbGFzc18gIyMgX3BpY19pbml0KCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGVycm9yICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCBjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9ERUZJTkVfUk9PVF9NT0RVTEUoIGZsYWdzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaW50ZXJmYWNlXyApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5mYWNlX29iamVjdF9zaXplID0gZmFjZV9vYmplY3Rfc2l6ZV87ICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnNpemVfb2JqZWN0X3NpemUgPSBzaXplX29iamVjdF9zaXplXzsgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+c2xvdF9vYmplY3Rfc2l6ZSA9IHNsb3Rfb2JqZWN0X3NpemVfOyAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmluaXRfZmFjZSAgICAgICAgPSBpbml0X2ZhY2VfOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZG9uZV9mYWNlICAgICAgICA9IGRvbmVfZmFjZV87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmluaXRfc2l6ZSAgICAgICAgPSBpbml0X3NpemVfOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZG9uZV9zaXplICAgICAgICA9IGRvbmVfc2l6ZV87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmluaXRfc2xvdCAgICAgICAgPSBpbml0X3Nsb3RfOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZG9uZV9zbG90ICAgICAgICA9IGRvbmVfc2xvdF87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfZ2x5cGggICAgICAgPSBsb2FkX2dseXBoXzsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfa2VybmluZyAgICAgID0gZ2V0X2tlcm5pbmdfOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmF0dGFjaF9maWxlICAgICAgPSBhdHRhY2hfZmlsZV87ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X2FkdmFuY2VzICAgICA9IGdldF9hZHZhbmNlc187ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnJlcXVlc3Rfc2l6ZSAgICAgPSByZXF1ZXN0X3NpemVfOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+c2VsZWN0X3NpemUgICAgICA9IHNlbGVjdF9zaXplXzsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKm91dHB1dF9jbGFzcyA9IChGVF9Nb2R1bGVfQ2xhc3MqKWNsYXp6OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVERSSVZFUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmU1YTdlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oCkBAIC0wLDAgKzEsMTY4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGdsb2Fkci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIGdseXBoIGxvYWRlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZyAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVEdMT0FEUl9IX18KKyNkZWZpbmUgX19GVEdMT0FEUl9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi9mcmVldHlwZS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2x5cGhMb2FkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGdseXBoIGxvYWRlciBpcyBhbiBpbnRlcm5hbCBvYmplY3QgdXNlZCB0byBsb2FkIHNldmVyYWwgZ2x5cGhzICovCisgIC8qICAgIHRvZ2V0aGVyIChmb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgY29tcG9zaXRlcykuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBnbHlwaCBsb2FkZXIgaW1wbGVtZW50YXRpb24gaXMgbm90IHBhcnQgb2YgdGhlIGhpZ2gtbGV2ZWwgQVBJLCAqLworICAvKiAgICBoZW5jZSB0aGUgZm9yd2FyZCBzdHJ1Y3R1cmUgZGVjbGFyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0dseXBoTG9hZGVyUmVjXyogIEZUX0dseXBoTG9hZGVyIDsKKworCisjaWYgMCAgLyogbW92ZWQgdG8gZnJlZXR5cGUuaCBpbiB2ZXJzaW9uIDIuMiAqLworI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHX0FSR1NfQVJFX1dPUkRTICAgICAgICAgIDEKKyNkZWZpbmUgRlRfU1VCR0xZUEhfRkxBR19BUkdTX0FSRV9YWV9WQUxVRVMgICAgICAyCisjZGVmaW5lIEZUX1NVQkdMWVBIX0ZMQUdfUk9VTkRfWFlfVE9fR1JJRCAgICAgICAgNAorI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHX1NDQUxFICAgICAgICAgICAgICAgICAgIDgKKyNkZWZpbmUgRlRfU1VCR0xZUEhfRkxBR19YWV9TQ0FMRSAgICAgICAgICAgICAweDQwCisjZGVmaW5lIEZUX1NVQkdMWVBIX0ZMQUdfMlgyICAgICAgICAgICAgICAgICAgMHg4MAorI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHX1VTRV9NWV9NRVRSSUNTICAgICAgMHgyMDAKKyNlbmRpZgorCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1N1YkdseXBoUmVjXworICB7CisgICAgRlRfSW50ICAgICBpbmRleDsKKyAgICBGVF9VU2hvcnQgIGZsYWdzOworICAgIEZUX0ludCAgICAgYXJnMTsKKyAgICBGVF9JbnQgICAgIGFyZzI7CisgICAgRlRfTWF0cml4ICB0cmFuc2Zvcm07CisKKyAgfSBGVF9TdWJHbHlwaFJlYzsKKworCisgIHR5cGVkZWYgc3RydWN0ICBGVF9HbHlwaExvYWRSZWNfCisgIHsKKyAgICBGVF9PdXRsaW5lICAgb3V0bGluZTsgICAgICAgLyogb3V0bGluZSAgICAgICAgICAgICAgICAgICAqLworICAgIEZUX1ZlY3RvciogICBleHRyYV9wb2ludHM7ICAvKiBleHRyYSBwb2ludHMgdGFibGUgICAgICAgICovCisgICAgRlRfVmVjdG9yKiAgIGV4dHJhX3BvaW50czI7IC8qIHNlY29uZCBleHRyYSBwb2ludHMgdGFibGUgKi8KKyAgICBGVF9VSW50ICAgICAgbnVtX3N1YmdseXBoczsgLyogbnVtYmVyIG9mIHN1YmdseXBocyAgICAgICAqLworICAgIEZUX1N1YkdseXBoICBzdWJnbHlwaHM7ICAgICAvKiBzdWJnbHlwaHMgICAgICAgICAgICAgICAgICovCisKKyAgfSBGVF9HbHlwaExvYWRSZWMsICpGVF9HbHlwaExvYWQ7CisKKworICB0eXBlZGVmIHN0cnVjdCAgRlRfR2x5cGhMb2FkZXJSZWNfCisgIHsKKyAgICBGVF9NZW1vcnkgICAgICAgIG1lbW9yeTsKKyAgICBGVF9VSW50ICAgICAgICAgIG1heF9wb2ludHM7CisgICAgRlRfVUludCAgICAgICAgICBtYXhfY29udG91cnM7CisgICAgRlRfVUludCAgICAgICAgICBtYXhfc3ViZ2x5cGhzOworICAgIEZUX0Jvb2wgICAgICAgICAgdXNlX2V4dHJhOworCisgICAgRlRfR2x5cGhMb2FkUmVjICBiYXNlOworICAgIEZUX0dseXBoTG9hZFJlYyAgY3VycmVudDsKKworICAgIHZvaWQqICAgICAgICAgICAgb3RoZXI7ICAgICAgICAgICAgLyogZm9yIHBvc3NpYmxlIGZ1dHVyZSBleHRlbnNpb24/ICovCisKKyAgfSBGVF9HbHlwaExvYWRlclJlYzsKKworCisgIC8qIGNyZWF0ZSBuZXcgZW1wdHkgZ2x5cGggbG9hZGVyICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfR2x5cGhMb2FkZXJfTmV3KCBGVF9NZW1vcnkgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaExvYWRlciAgKmFsb2FkZXIgKTsKKworICAvKiBhZGQgYW4gZXh0cmEgcG9pbnRzIHRhYmxlIHRvIGEgZ2x5cGggbG9hZGVyICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfR2x5cGhMb2FkZXJfQ3JlYXRlRXh0cmEoIEZUX0dseXBoTG9hZGVyICBsb2FkZXIgKTsKKworICAvKiBkZXN0cm95IGEgZ2x5cGggbG9hZGVyICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9HbHlwaExvYWRlcl9Eb25lKCBGVF9HbHlwaExvYWRlciAgbG9hZGVyICk7CisKKyAgLyogcmVzZXQgYSBnbHlwaCBsb2FkZXIgKGZyZWVzIGV2ZXJ5dGhpbmcgaW50IGl0KSAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfR2x5cGhMb2FkZXJfUmVzZXQoIEZUX0dseXBoTG9hZGVyICBsb2FkZXIgKTsKKworICAvKiByZXdpbmQgYSBnbHlwaCBsb2FkZXIgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX0dseXBoTG9hZGVyX1Jld2luZCggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciApOworCisgIC8qIGNoZWNrIHRoYXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIHRvIGFkZCBgbl9wb2ludHMnIGFuZCBgbl9jb250b3VycycgKi8KKyAgLyogdG8gdGhlIGdseXBoIGxvYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX0dseXBoTG9hZGVyX0NoZWNrUG9pbnRzKCBGVF9HbHlwaExvYWRlciAgbG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIG5fcG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIG5fY29udG91cnMgKTsKKworCisjZGVmaW5lIEZUX0dMWVBITE9BREVSX0NIRUNLX1AoIF9sb2FkZXIsIF9jb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICggKF9jb3VudCkgPT0gMCB8fCAoKF9sb2FkZXIpLT5iYXNlLm91dGxpbmUubl9wb2ludHMgICAgKyAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAoX2xvYWRlciktPmN1cnJlbnQub3V0bGluZS5uX3BvaW50cyArICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShfY291bnQpKSA8PSAoX2xvYWRlciktPm1heF9wb2ludHMgKQorCisjZGVmaW5lIEZUX0dMWVBITE9BREVSX0NIRUNLX0MoIF9sb2FkZXIsIF9jb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICggKF9jb3VudCkgPT0gMCB8fCAoKF9sb2FkZXIpLT5iYXNlLm91dGxpbmUubl9jb250b3VycyAgICArICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgKF9sb2FkZXIpLT5jdXJyZW50Lm91dGxpbmUubl9jb250b3VycyArICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKF9jb3VudCkpIDw9IChfbG9hZGVyKS0+bWF4X2NvbnRvdXJzICkKKworI2RlZmluZSBGVF9HTFlQSExPQURFUl9DSEVDS19QT0lOVFMoIF9sb2FkZXIsIF9wb2ludHMsX2NvbnRvdXJzICkgICAgICBcCisgICggKCBGVF9HTFlQSExPQURFUl9DSEVDS19QKCBfbG9hZGVyLCBfcG9pbnRzICkgICAmJiAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0dMWVBITE9BREVSX0NIRUNLX0MoIF9sb2FkZXIsIF9jb250b3VycyApICkgICAgICAgICAgICAgICAgICAgXAorICAgID8gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgOiBGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cyggKF9sb2FkZXIpLCAoX3BvaW50cyksIChfY29udG91cnMpICkgKQorCisKKyAgLyogY2hlY2sgdGhhdCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgdG8gYWRkIGBuX3N1YnMnIHN1Yi1nbHlwaHMgdG8gKi8KKyAgLyogYSBnbHlwaCBsb2FkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9HbHlwaExvYWRlcl9DaGVja1N1YkdseXBocyggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBuX3N1YnMgKTsKKworICAvKiBwcmVwYXJlIGEgZ2x5cGggbG9hZGVyLCBpLmUuIGVtcHR5IHRoZSBjdXJyZW50IGdseXBoICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9HbHlwaExvYWRlcl9QcmVwYXJlKCBGVF9HbHlwaExvYWRlciAgbG9hZGVyICk7CisKKyAgLyogYWRkIHRoZSBjdXJyZW50IGdseXBoIHRvIHRoZSBiYXNlIGdseXBoICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9HbHlwaExvYWRlcl9BZGQoIEZUX0dseXBoTG9hZGVyICBsb2FkZXIgKTsKKworICAvKiBjb3B5IHBvaW50cyBmcm9tIG9uZSBnbHlwaCBsb2FkZXIgdG8gYW5vdGhlciAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX0dseXBoTG9hZGVyX0NvcHlQb2ludHMoIEZUX0dseXBoTG9hZGVyICB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoTG9hZGVyICBzb3VyY2UgKTsKKworIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVEdMT0FEUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2NiZjQzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oCkBAIC0wLDAgKzEsNDU5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdG1lbW9yeS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIG1lbW9yeSBtYW5hZ2VtZW50IG1hY3JvcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMiwgMjAwNC0yMDA3LCAyMDEwLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZyAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVE1FTU9SWV9IX18KKyNkZWZpbmUgX19GVE1FTU9SWV9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi9jb25maWcvZnRjb25maWcuaCIKKyNpbmNsdWRlICIuLi9mdHR5cGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TRVRfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gc2V0IGFuIGltcGxpY2l0IGBlcnJvcicgdmFyaWFibGUgdG8gYSBnaXZlbiAgKi8KKyAgLyogICAgZXhwcmVzc2lvbidzIHZhbHVlICh1c3VhbGx5IGEgZnVuY3Rpb24gY2FsbCksIGFuZCBjb252ZXJ0IGl0IHRvIGEgICovCisgIC8qICAgIGJvb2xlYW4gd2hpY2ggaXMgc2V0IHdoZW5ldmVyIHRoZSB2YWx1ZSBpcyAhPSAwLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfU0VUX0VSUk9SCisjZGVmaW5lIEZUX1NFVF9FUlJPUiggZXhwcmVzc2lvbiApIFwKKyAgICAgICAgICAoICggZXJyb3IgPSAoZXhwcmVzc2lvbikgKSAhPSAwICkKKworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gRSBNIE8gUiBZICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoKKyAgICogIEMrKyByZWZ1c2VzIHRvIGhhbmRsZSBzdGF0ZW1lbnRzIGxpa2UgcCA9ICh2b2lkKilhbnl0aGluZywgd2l0aCBgcCcgYQorICAgKiAgdHlwZWQgcG9pbnRlci4gIFNpbmNlIHdlIGRvbid0IGhhdmUgYSBgdHlwZW9mJyBvcGVyYXRvciBpbiBzdGFuZGFyZAorICAgKiAgQysrLCB3ZSBoYXZlIHRvIHVzZSBhIHRlbXBsYXRlIHRvIGVtdWxhdGUgaXQuCisgICAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKKworICBleHRlcm4gIkMrKyIKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKgorICBjcGx1c3BsdXNfdHlwZW9mKCAgICAgICAgVCosCisgICAgICAgICAgICAgICAgICAgIHZvaWQgICp2ICkKKyAgeworICAgIHJldHVybiBzdGF0aWNfY2FzdCA8VCo+ICggdiApOworICB9CisKKyNkZWZpbmUgRlRfQVNTSUdOUCggcCwgdmFsICkgIChwKSA9IGNwbHVzcGx1c190eXBlb2YoIChwKSwgKHZhbCkgKQorCisjZWxzZQorCisjZGVmaW5lIEZUX0FTU0lHTlAoIHAsIHZhbCApICAocCkgPSAodmFsKQorCisjZW5kaWYKKworCisKKyNpZmRlZiBGVF9ERUJVR19NRU1PUlkKKworICBGVF9CQVNFKCBjb25zdCBjaGFyKiApICBfZnRfZGVidWdfZmlsZTsKKyAgRlRfQkFTRSggbG9uZyApICAgICAgICAgX2Z0X2RlYnVnX2xpbmVubzsKKworI2RlZmluZSBGVF9ERUJVR19JTk5FUiggZXhwICkgICggX2Z0X2RlYnVnX2ZpbGUgICA9IF9fRklMRV9fLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZnRfZGVidWdfbGluZW5vID0gX19MSU5FX18sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHApICkKKworI2RlZmluZSBGVF9BU1NJR05QX0lOTkVSKCBwLCBleHAgKSAgKCBfZnRfZGVidWdfZmlsZSAgID0gX19GSUxFX18sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Z0X2RlYnVnX2xpbmVubyA9IF9fTElORV9fLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0FTU0lHTlAoIHAsIGV4cCApICkKKworI2Vsc2UgLyogIUZUX0RFQlVHX01FTU9SWSAqLworCisjZGVmaW5lIEZUX0RFQlVHX0lOTkVSKCBleHAgKSAgICAgICAoZXhwKQorI2RlZmluZSBGVF9BU1NJR05QX0lOTkVSKCBwLCBleHAgKSAgRlRfQVNTSUdOUCggcCwgZXhwICkKKworI2VuZGlmIC8qICFGVF9ERUJVR19NRU1PUlkgKi8KKworCisgIC8qCisgICAqICBUaGUgYWxsb2NhdGlvbiBmdW5jdGlvbnMgcmV0dXJuIGEgcG9pbnRlciwgYW5kIHRoZSBlcnJvciBjb2RlCisgICAqICBpcyB3cml0dGVuIHRvIHRocm91Z2ggdGhlIGBwX2Vycm9yJyBwYXJhbWV0ZXIuICBTZWUgYmVsb3cgZm9yCisgICAqICBmb3IgZG9jdW1lbnRhdGlvbi4KKyAgICovCisKKyAgRlRfQkFTRSggRlRfUG9pbnRlciApCisgIGZ0X21lbV9hbGxvYyggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBzaXplLAorICAgICAgICAgICAgICAgIEZUX0Vycm9yICAqcF9lcnJvciApOworCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQorICBmdF9tZW1fcWFsbG9jKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBzaXplLAorICAgICAgICAgICAgICAgICBGVF9FcnJvciAgKnBfZXJyb3IgKTsKKworICBGVF9CQVNFKCBGVF9Qb2ludGVyICkKKyAgZnRfbWVtX3JlYWxsb2MoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBpdGVtX3NpemUsCisgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGN1cl9jb3VudCwKKyAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgbmV3X2NvdW50LAorICAgICAgICAgICAgICAgICAgdm9pZCogICAgICBibG9jaywKKyAgICAgICAgICAgICAgICAgIEZUX0Vycm9yICAqcF9lcnJvciApOworCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQorICBmdF9tZW1fcXJlYWxsb2MoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgaXRlbV9zaXplLAorICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgY3VyX2NvdW50LAorICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgbmV3X2NvdW50LAorICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgYmxvY2ssCisgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IgICpwX2Vycm9yICk7CisjaWZkZWYgX0RFQlVHDQorLy8jZGVmaW5lIF9YWVFfTUVNX0RFQlVHDQorI2VuZGlmDQorICANCisjaWZkZWYgX1hZUV9NRU1fREVCVUcJCS8qIFhZUSAqLw0KKyAgRlRfQkFTRSggRlRfUG9pbnRlciApDQorCSAgZnRfbWVtX2FsbG9jZGVidWcoIEZUX01lbW9yeSAgbWVtb3J5LA0KKwkgIEZUX0xvbmcgICAgc2l6ZSwgY29uc3QgY2hhciogZmlsZW5hbWUsIGludCBsaW5lLA0KKwkgIEZUX0Vycm9yICAqcF9lcnJvciApOw0KKyAgDQorICBGVF9CQVNFKCBGVF9Qb2ludGVyICkNCisJICBmdF9tZW1fcWFsbG9jZGVidWcoIEZUX01lbW9yeSAgbWVtb3J5LA0KKwkgIEZUX0xvbmcgICAgc2l6ZSwgY29uc3QgY2hhciogZmlsZW5hbWUsIGludCBsaW5lLA0KKwkgIEZUX0Vycm9yICAqcF9lcnJvciApOw0KKyAgDQorICBGVF9CQVNFKCBGVF9Qb2ludGVyICkNCisJICBmdF9tZW1fcmVhbGxvY2RlYnVnKCBGVF9NZW1vcnkgIG1lbW9yeSwNCisJICBGVF9Mb25nICAgIGl0ZW1fc2l6ZSwNCisJICBGVF9Mb25nICAgIGN1cl9jb3VudCwNCisJICBGVF9Mb25nICAgIG5ld19jb3VudCwNCisJICB2b2lkKiAgICAgIGJsb2NrLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwgaW50IGxpbmUsDQorCSAgRlRfRXJyb3IgICpwX2Vycm9yICk7DQorICANCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQ0KKwkgIGZ0X21lbV9xcmVhbGxvY2RlYnVnKCBGVF9NZW1vcnkgIG1lbW9yeSwNCisJICBGVF9Mb25nICAgIGl0ZW1fc2l6ZSwNCisJICBGVF9Mb25nICAgIGN1cl9jb3VudCwNCisJICBGVF9Mb25nICAgIG5ld19jb3VudCwNCisJICB2b2lkKiAgICAgIGJsb2NrLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwgaW50IGxpbmUsDQorCSAgRlRfRXJyb3IgICpwX2Vycm9yICk7DQorI2VuZGlmDQorCisKKyAgRlRfQkFTRSggdm9pZCApCisgIGZ0X21lbV9mcmVlKCBGVF9NZW1vcnkgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogIFAgKTsKKworCisjZGVmaW5lIEZUX01FTV9GUkVFKCBwdHIgKSAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQkVHSU5fU1RNTlQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBmdF9tZW1fZnJlZSggbWVtb3J5LCAocHRyKSApOyBcCisgICAgICAgICAgICAocHRyKSA9IE5VTEw7ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfRU5EX1NUTU5UCisjaWZuZGVmIF9YWVFfTUVNX0RFQlVHDQorI2RlZmluZSBGVF9NRU1fQUxMT0MoIHB0ciwgc2l6ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorCQkgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX2FsbG9jKCBtZW1vcnksIChzaXplKSwgJmVycm9yICkgKQorCisKKyNkZWZpbmUgRlRfTUVNX1JFQUxMT0MoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvYyggbWVtb3J5LCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfTG9uZykoY3Vyc3opLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKG5ld3N6KSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdHIpLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1FBTExPQyggcHRyLCBzaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3FhbGxvYyggbWVtb3J5LCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfTG9uZykoc2l6ZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvciApICkKKworI2RlZmluZSBGVF9NRU1fUVJFQUxMT0MoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2MoIG1lbW9yeSwgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfTG9uZykoY3Vyc3opLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShuZXdzeiksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX0FMTE9DX01VTFQoIHB0ciwgY291bnQsIGl0ZW1fc2l6ZSApICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3JlYWxsb2MoIG1lbW9yeSwgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKGl0ZW1fc2l6ZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShjb3VudCksICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1JFQUxMT0NfTVVMVCggcHRyLCBvbGRjbnQsIG5ld2NudCwgaXRtc3ogKSAgICAgICAgICAgXAorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3JlYWxsb2MoIG1lbW9yeSwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKGl0bXN6KSwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfTG9uZykob2xkY250KSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShuZXdjbnQpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1FBTExPQ19NVUxUKCBwdHIsIGNvdW50LCBpdGVtX3NpemUgKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9xcmVhbGxvYyggbWVtb3J5LCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKGl0ZW1fc2l6ZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKGNvdW50KSwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yICkgKQorCisjZGVmaW5lIEZUX01FTV9RUkVBTExPQ19NVUxUKCBwdHIsIG9sZGNudCwgbmV3Y250LCBpdG1zeikgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2MoIG1lbW9yeSwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShpdG1zeiksICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShvbGRjbnQpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShuZXdjbnQpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdHIpLCAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvciApICkKKyNkZWZpbmUgRlRfTUVNX05FV19BUlJBWSggcHRyLCBjb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3JlYWxsb2MoIG1lbW9yeSwgc2l6ZW9mICggKihwdHIpICksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgKGNvdW50KSwgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmZXJyb3IgKSApDQorDQorI2RlZmluZSBGVF9NRU1fUkVORVdfQVJSQVkoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvYyggbWVtb3J5LCBzaXplb2YgKCAqKHB0cikgKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3Vyc3opLCAobmV3c3opLCAgICAgICAgICBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdHIpLCAmZXJyb3IgKSApDQorDQorI2RlZmluZSBGVF9NRU1fUU5FV19BUlJBWSggcHRyLCBjb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3FyZWFsbG9jKCBtZW1vcnksIHNpemVvZiAoICoocHRyKSApLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAoY291bnQpLCAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmZXJyb3IgKSApDQorDQorI2RlZmluZSBGVF9NRU1fUVJFTkVXX0FSUkFZKCBwdHIsIGN1cnN6LCBuZXdzeiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorCUZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3FyZWFsbG9jKCBtZW1vcnksIHNpemVvZiAoICoocHRyKSApLCBcDQorCShjdXJzeiksIChuZXdzeiksICAgICAgICAgIFwNCisgIChwdHIpLCAmZXJyb3IgKSApDQorICANCisjZWxzZQ0KKyNkZWZpbmUgRlRfTUVNX0FMTE9DKCBwdHIsIHNpemUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fYWxsb2NkZWJ1ZyggbWVtb3J5LCAoc2l6ZSksIF9fRklMRV9fLCBfX0xJTkVfXywgJmVycm9yICkgKQ0KKyAgDQorI2RlZmluZSBGVF9NRU1fUkVBTExPQyggcHRyLCBjdXJzeiwgbmV3c3ogKSAgICAgICAgICAgICAgICAgICAgICAgIFwNCisJRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvY2RlYnVnKCBtZW1vcnksIDEsICAgICAgICBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3Vyc3opLCAobmV3c3opLCAgICAgICAgICBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdHIpLCBfX0ZJTEVfXywgX19MSU5FX18sICZlcnJvciApICkNCisNCisjZGVmaW5lIEZUX01FTV9RQUxMT0MoIHB0ciwgc2l6ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3FhbGxvY2RlYnVnKCBtZW1vcnksIChzaXplKSwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApDQorDQorI2RlZmluZSBGVF9NRU1fUVJFQUxMT0MoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9xcmVhbGxvY2RlYnVnKCBtZW1vcnksIDEsICAgICAgICBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3Vyc3opLCAobmV3c3opLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHRyKSwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApDQorDQorI2RlZmluZSBGVF9NRU1fQUxMT0NfTVVMVCggcHRyLCBjb3VudCwgaXRlbV9zaXplICkgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvY2RlYnVnKCBtZW1vcnksIChpdGVtX3NpemUpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIChjb3VudCksICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApDQorDQorI2RlZmluZSBGVF9NRU1fUkVBTExPQ19NVUxUKCBwdHIsIG9sZGNudCwgbmV3Y250LCBpdG1zeiApICAgICAgICAgICAgXA0KKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9yZWFsbG9jZGVidWcoIG1lbW9yeSwgKGl0bXN6KSwgICAgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkY250KSwgKG5ld2NudCksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksIF9fRklMRV9fLCBfX0xJTkVfXywgJmVycm9yICkgKQorCisjZGVmaW5lIEZUX01FTV9RQUxMT0NfTVVMVCggcHRyLCBjb3VudCwgaXRlbV9zaXplICkgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2NkZWJ1ZyggbWVtb3J5LCAoaXRlbV9zaXplKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgKGNvdW50KSwgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApDQorDQorI2RlZmluZSBGVF9NRU1fUVJFQUxMT0NfTVVMVCggcHRyLCBvbGRjbnQsIG5ld2NudCwgaXRtc3opICAgICAgICAgICAgIFwNCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2NkZWJ1ZyggbWVtb3J5LCAoaXRtc3opLCAgICBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkY250KSwgKG5ld2NudCksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdHIpLCBfX0ZJTEVfXywgX19MSU5FX18sICZlcnJvciApICkNCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAvKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtYWNyb3MgZXhwZWN0IHRoYXQgdGhlaXIgcG9pbnRlciBhcmd1bWVudCBpcyAgKi8NCisgIC8qIF90eXBlZF8gaW4gb3JkZXIgdG8gYXV0b21hdGljYWxseSBjb21wdXRlIGFycmF5IGVsZW1lbnQgc2l6ZXMuICAgICAgICAqLw0KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorDQorI2RlZmluZSBGVF9NRU1fTkVXX0FSUkFZKCBwdHIsIGNvdW50ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvY2RlYnVnKCBtZW1vcnksIHNpemVvZiAoICoocHRyKSApLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIChjb3VudCksICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApDQorDQorI2RlZmluZSBGVF9NRU1fUkVORVdfQVJSQVkoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvY2RlYnVnKCBtZW1vcnksIHNpemVvZiAoICoocHRyKSApLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJzeiksIChuZXdzeiksICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksIF9fRklMRV9fLCBfX0xJTkVfXywgJmVycm9yICkgKQ0KKw0KKyNkZWZpbmUgRlRfTUVNX1FORVdfQVJSQVkoIHB0ciwgY291bnQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9xcmVhbGxvY2RlYnVnKCBtZW1vcnksIHNpemVvZiAoICoocHRyKSApLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAoY291bnQpLCAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBfX0ZJTEVfXywgX19MSU5FX18sICZlcnJvciApICkNCisNCisjZGVmaW5lIEZUX01FTV9RUkVORVdfQVJSQVkoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2NkZWJ1ZyggbWVtb3J5LCBzaXplb2YgKCAqKHB0cikgKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnN6KSwgKG5ld3N6KSwgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksIF9fRklMRV9fLCBfX0xJTkVfXywgJmVycm9yICkgKQ0KKw0KKyNlbmRpZg0KKw0KKyNkZWZpbmUgRlRfTUVNX05FVyggcHRyICkgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgIEZUX01FTV9BTExPQyggcHRyLCBzaXplb2YgKCAqKHB0cikgKSApDQorDQorI2RlZmluZSBGVF9NRU1fUU5FVyggcHRyICkgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgIEZUX01FTV9RQUxMT0MoIHB0ciwgc2l6ZW9mICggKihwdHIpICkgKQorCisjZGVmaW5lIEZUX01FTV9TRVRfRVJST1IoIGNvbmQgKSAgKCAoY29uZCksIGVycm9yICE9IDAgKQorCisKKyNkZWZpbmUgRlRfTUVNX1NFVCggZGVzdCwgYnl0ZSwgY291bnQgKSAgICAgZnRfbWVtc2V0KCBkZXN0LCBieXRlLCBjb3VudCApCisKKyNkZWZpbmUgRlRfTUVNX0NPUFkoIGRlc3QsIHNvdXJjZSwgY291bnQgKSAgZnRfbWVtY3B5KCBkZXN0LCBzb3VyY2UsIGNvdW50ICkKKworI2RlZmluZSBGVF9NRU1fTU9WRSggZGVzdCwgc291cmNlLCBjb3VudCApICBmdF9tZW1tb3ZlKCBkZXN0LCBzb3VyY2UsIGNvdW50ICkKKworCisjZGVmaW5lIEZUX01FTV9aRVJPKCBkZXN0LCBjb3VudCApICBGVF9NRU1fU0VUKCBkZXN0LCAwLCBjb3VudCApCisKKyNkZWZpbmUgRlRfWkVSTyggcCApICAgICAgICAgICAgICAgIEZUX01FTV9aRVJPKCBwLCBzaXplb2YgKCAqKHApICkgKQorCisKKyNkZWZpbmUgRlRfQVJSQVlfWkVSTyggZGVzdCwgY291bnQgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fWkVSTyggZGVzdCwgKGNvdW50KSAqIHNpemVvZiAoICooZGVzdCkgKSApCisKKyNkZWZpbmUgRlRfQVJSQVlfQ09QWSggZGVzdCwgc291cmNlLCBjb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9DT1BZKCBkZXN0LCBzb3VyY2UsIChjb3VudCkgKiBzaXplb2YgKCAqKGRlc3QpICkgKQorCisjZGVmaW5lIEZUX0FSUkFZX01PVkUoIGRlc3QsIHNvdXJjZSwgY291bnQgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fTU9WRSggZGVzdCwgc291cmNlLCAoY291bnQpICogc2l6ZW9mICggKihkZXN0KSApICkKKworCisgIC8qCisgICAqICBSZXR1cm4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGFkZHJlc3NhYmxlIGVsZW1lbnRzIGluIGFuIGFycmF5LgorICAgKiAgV2UgbGltaXQgb3Vyc2VsdmVzIHRvIElOVF9NQVgsIHJhdGhlciB0aGFuIFVJTlRfTUFYLCB0byBhdm9pZAorICAgKiAgYW55IHByb2JsZW1zLgorICAgKi8KKyNkZWZpbmUgRlRfQVJSQVlfTUFYKCBwdHIgKSAgICAgICAgICAgKCBGVF9JTlRfTUFYIC8gc2l6ZW9mICggKihwdHIpICkgKQorCisjZGVmaW5lIEZUX0FSUkFZX0NIRUNLKCBwdHIsIGNvdW50ICkgICggKGNvdW50KSA8PSBGVF9BUlJBWV9NQVgoIHB0ciApICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbWFjcm9zIGV4cGVjdCB0aGF0IHRoZWlyIHBvaW50ZXIgYXJndW1lbnQgaXMgICovCisgIC8qIF90eXBlZF8gaW4gb3JkZXIgdG8gYXV0b21hdGljYWxseSBjb21wdXRlIGFycmF5IGVsZW1lbnQgc2l6ZXMuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2RlZmluZSBGVF9BTExPQyggcHRyLCBzaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX0FMTE9DKCBwdHIsIHNpemUgKSApCisKKyNkZWZpbmUgRlRfUkVBTExPQyggcHRyLCBjdXJzeiwgbmV3c3ogKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fU0VUX0VSUk9SKCBGVF9NRU1fUkVBTExPQyggcHRyLCBjdXJzeiwgbmV3c3ogKSApCisKKyNkZWZpbmUgRlRfQUxMT0NfTVVMVCggcHRyLCBjb3VudCwgaXRlbV9zaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX0FMTE9DX01VTFQoIHB0ciwgY291bnQsIGl0ZW1fc2l6ZSApICkKKworI2RlZmluZSBGVF9SRUFMTE9DX01VTFQoIHB0ciwgb2xkY250LCBuZXdjbnQsIGl0bXN6ICkgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fU0VUX0VSUk9SKCBGVF9NRU1fUkVBTExPQ19NVUxUKCBwdHIsIG9sZGNudCwgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Y250LCBpdG1zeiApICkKKworI2RlZmluZSBGVF9RQUxMT0MoIHB0ciwgc2l6ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9RQUxMT0MoIHB0ciwgc2l6ZSApICkKKworI2RlZmluZSBGVF9RUkVBTExPQyggcHRyLCBjdXJzeiwgbmV3c3ogKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fU0VUX0VSUk9SKCBGVF9NRU1fUVJFQUxMT0MoIHB0ciwgY3Vyc3osIG5ld3N6ICkgKQorCisjZGVmaW5lIEZUX1FBTExPQ19NVUxUKCBwdHIsIGNvdW50LCBpdGVtX3NpemUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fU0VUX0VSUk9SKCBGVF9NRU1fUUFMTE9DX01VTFQoIHB0ciwgY291bnQsIGl0ZW1fc2l6ZSApICkKKworI2RlZmluZSBGVF9RUkVBTExPQ19NVUxUKCBwdHIsIG9sZGNudCwgbmV3Y250LCBpdG1zeiApICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX1FSRUFMTE9DX01VTFQoIHB0ciwgb2xkY250LCAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Y250LCBpdG1zeiApICkKKworI2RlZmluZSBGVF9GUkVFKCBwdHIgKSAgRlRfTUVNX0ZSRUUoIHB0ciApCisKKyNkZWZpbmUgRlRfTkVXKCBwdHIgKSAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX05FVyggcHRyICkgKQorCisjZGVmaW5lIEZUX05FV19BUlJBWSggcHRyLCBjb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9ORVdfQVJSQVkoIHB0ciwgY291bnQgKSApCisKKyNkZWZpbmUgRlRfUkVORVdfQVJSQVkoIHB0ciwgY3VyY250LCBuZXdjbnQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fU0VUX0VSUk9SKCBGVF9NRU1fUkVORVdfQVJSQVkoIHB0ciwgY3VyY250LCBuZXdjbnQgKSApCisKKyNkZWZpbmUgRlRfUU5FVyggcHRyICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX1FORVcoIHB0ciApICkKKworI2RlZmluZSBGVF9RTkVXX0FSUkFZKCBwdHIsIGNvdW50ICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fU0VUX0VSUk9SKCBGVF9NRU1fTkVXX0FSUkFZKCBwdHIsIGNvdW50ICkgKQorCisjZGVmaW5lIEZUX1FSRU5FV19BUlJBWSggcHRyLCBjdXJjbnQsIG5ld2NudCApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX1JFTkVXX0FSUkFZKCBwdHIsIGN1cmNudCwgbmV3Y250ICkgKQorCisKKyAgRlRfQkFTRSggRlRfUG9pbnRlciApCisgIGZ0X21lbV9zdHJkdXAoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBzdHIsCisgICAgICAgICAgICAgICAgIEZUX0Vycm9yICAgICpwX2Vycm9yICk7CisKKyAgRlRfQkFTRSggRlRfUG9pbnRlciApCisgIGZ0X21lbV9kdXAoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICBhZGRyZXNzLAorICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgRlRfRXJyb3IgICAgKnBfZXJyb3IgKTsKKworCisjZGVmaW5lIEZUX01FTV9TVFJEVVAoIGRzdCwgc3RyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoZHN0KSA9IChjaGFyKilmdF9tZW1fc3RyZHVwKCBtZW1vcnksIChjb25zdCBjaGFyKikoc3RyKSwgJmVycm9yICkKKworI2RlZmluZSBGVF9TVFJEVVAoIGRzdCwgc3RyICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX1NUUkRVUCggZHN0LCBzdHIgKSApCisKKyNkZWZpbmUgRlRfTUVNX0RVUCggZHN0LCBhZGRyZXNzLCBzaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKGRzdCkgPSBmdF9tZW1fZHVwKCBtZW1vcnksIChhZGRyZXNzKSwgKEZUX1VMb25nKShzaXplKSwgJmVycm9yICkKKworI2RlZmluZSBGVF9EVVAoIGRzdCwgYWRkcmVzcywgc2l6ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9EVVAoIGRzdCwgYWRkcmVzcywgc2l6ZSApICkKKworCisgIC8qIFJldHVybiA+PSAxIGlmIGEgdHJ1bmNhdGlvbiBvY2N1cnMuICAgICAgICAgICAgKi8KKyAgLyogUmV0dXJuIDAgaWYgdGhlIHNvdXJjZSBzdHJpbmcgZml0cyB0aGUgYnVmZmVyLiAqLworICAvKiBUaGlzIGlzICpub3QqIHRoZSBzYW1lIGFzIHN0cmxjcHkoKS4gICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX0ludCApCisgIGZ0X21lbV9zdHJjcHluKCBjaGFyKiAgICAgICAgZHN0LAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIHNyYywKKyAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICBzaXplICk7CisKKyNkZWZpbmUgRlRfU1RSQ1BZTiggZHN0LCBzcmMsIHNpemUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZ0X21lbV9zdHJjcHluKCAoY2hhciopZHN0LCAoY29uc3QgY2hhciopKHNyYyksIChGVF9VTG9uZykoc2l6ZSkgKQorCisgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUTUVNT1JZX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZmN2RlMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgKQEAgLTAsMCArMSwxNTY5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdG9ianMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHByaXZhdGUgYmFzZSBjbGFzc2VzIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNiwgMjAwOCwgMjAxMCwgMjAxMi0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9mIGFsbCBpbnRlcm5hbCBGcmVlVHlwZSBjbGFzc2VzLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVE9CSlNfSF9fCisjZGVmaW5lIF9fRlRPQkpTX0hfXworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi9mdHJlbmRlci5oIgorI2luY2x1ZGUgIi4uL2Z0c2l6ZXMuaCIKKyNpbmNsdWRlICIuLi9mdGxjZGZpbC5oIgorI2luY2x1ZGUgImZ0bWVtb3J5LmgiCisjaW5jbHVkZSAiZnRnbG9hZHIuaCIKKyNpbmNsdWRlICJmdGRyaXZlci5oIgorI2luY2x1ZGUgImF1dG9oaW50LmgiCisjaW5jbHVkZSAiZnRzZXJ2LmgiCisjaW5jbHVkZSAiZnRwaWMuaCIKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyNpbmNsdWRlICIuLi9mdGluY3JlbS5oIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNvbWUgZ2VuZXJpYyBkZWZpbml0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgVFJVRQorI2RlZmluZSBUUlVFICAxCisjZW5kaWYKKworI2lmbmRlZiBGQUxTRQorI2RlZmluZSBGQUxTRSAgMAorI2VuZGlmCisKKyNpZm5kZWYgTlVMTAorI2RlZmluZSBOVUxMICAodm9pZCopMAorI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtaW4gYW5kIG1heCBmdW5jdGlvbnMgbWlzc2luZyBpbiBDLiAgQXMgdXN1YWwsIGJlIGNhcmVmdWwgbm90IHRvICAqLworICAvKiB3cml0ZSB0aGluZ3MgbGlrZSBGVF9NSU4oIGErKywgYisrICkgdG8gYXZvaWQgc2lkZSBlZmZlY3RzLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX01JTiggYSwgYiApICAoIChhKSA8IChiKSA/IChhKSA6IChiKSApCisjZGVmaW5lIEZUX01BWCggYSwgYiApICAoIChhKSA+IChiKSA/IChhKSA6IChiKSApCisKKyNkZWZpbmUgRlRfQUJTKCBhICkgICAgICggKGEpIDwgMCA/IC0oYSkgOiAoYSkgKQorCisKKyNkZWZpbmUgRlRfUEFEX0ZMT09SKCB4LCBuICkgICggKHgpICYgfigobiktMSkgKQorI2RlZmluZSBGVF9QQURfUk9VTkQoIHgsIG4gKSAgRlRfUEFEX0ZMT09SKCAoeCkgKyAoKG4pLzIpLCBuICkKKyNkZWZpbmUgRlRfUEFEX0NFSUwoIHgsIG4gKSAgIEZUX1BBRF9GTE9PUiggKHgpICsgKChuKS0xKSwgbiApCisKKyNkZWZpbmUgRlRfUElYX0ZMT09SKCB4ICkgICAgICggKHgpICYgfjYzICkKKyNkZWZpbmUgRlRfUElYX1JPVU5EKCB4ICkgICAgIEZUX1BJWF9GTE9PUiggKHgpICsgMzIgKQorI2RlZmluZSBGVF9QSVhfQ0VJTCggeCApICAgICAgRlRfUElYX0ZMT09SKCAoeCkgKyA2MyApCisKKworICAvKgorICAgKiAgUmV0dXJuIHRoZSBoaWdoZXN0IHBvd2VyIG9mIDIgdGhhdCBpcyA8PSB2YWx1ZTsgdGhpcyBjb3JyZXNwb25kIHRvCisgICAqICB0aGUgaGlnaGVzdCBiaXQgaW4gYSBnaXZlbiAzMi1iaXQgdmFsdWUuCisgICAqLworICBGVF9CQVNFKCBGVF9VSW50MzIgKQorICBmdF9oaWdocG93MiggRlRfVUludDMyICB2YWx1ZSApOworCisKKyAgLyoKKyAgICogIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMgLS0gc2luY2UgdGhlc2UgYXJlIHVzZWQgdG8gcGFyc2UKKyAgICogIGZvbnQgZmlsZXMsIHdlIG11c3Qgbm90IHVzZSB0aG9zZSBpbiA8Y3R5cGVzLmg+IHdoaWNoIGFyZQorICAgKiAgbG9jYWxlLWRlcGVuZGVudAorICAgKi8KKyNkZWZpbmUgIGZ0X2lzZGlnaXQoIHggKSAgICggKCAodW5zaWduZWQpKHgpIC0gJzAnICkgPCAxMFUgKQorCisjZGVmaW5lICBmdF9pc3hkaWdpdCggeCApICAoICggKHVuc2lnbmVkKSh4KSAtICcwJyApIDwgMTBVIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAodW5zaWduZWQpKHgpIC0gJ2EnICkgPCA2VSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICh1bnNpZ25lZCkoeCkgLSAnQScgKSA8IDZVICApCisKKyAgLyogdGhlIG5leHQgdHdvIG1hY3JvcyBhc3N1bWUgQVNDSUkgcmVwcmVzZW50YXRpb24gKi8KKyNkZWZpbmUgIGZ0X2lzdXBwZXIoIHggKSAgKCAoICh1bnNpZ25lZCkoeCkgLSAnQScgKSA8IDI2VSApCisjZGVmaW5lICBmdF9pc2xvd2VyKCB4ICkgICggKCAodW5zaWduZWQpKHgpIC0gJ2EnICkgPCAyNlUgKQorCisjZGVmaW5lICBmdF9pc2FscGhhKCB4ICkgICggZnRfaXN1cHBlciggeCApIHx8IGZ0X2lzbG93ZXIoIHggKSApCisjZGVmaW5lICBmdF9pc2FsbnVtKCB4ICkgICggZnRfaXNkaWdpdCggeCApIHx8IGZ0X2lzYWxwaGEoIHggKSApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICBDIEggQSBSIE0gQSBQIFMgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyogaGFuZGxlIHRvIGludGVybmFsIGNoYXJtYXAgb2JqZWN0ICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0NNYXBSZWNfKiAgICAgICAgICAgICAgRlRfQ01hcDsKKworICAvKiBoYW5kbGUgdG8gY2hhcm1hcCBjbGFzcyBzdHJ1Y3R1cmUgKi8KKyAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgRlRfQ01hcF9DbGFzc1JlY18qICBGVF9DTWFwX0NsYXNzOworCisgIC8qIGludGVybmFsIGNoYXJtYXAgb2JqZWN0IHN0cnVjdHVyZSAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfQ01hcFJlY18KKyAgeworICAgIEZUX0NoYXJNYXBSZWMgIGNoYXJtYXA7CisgICAgRlRfQ01hcF9DbGFzcyAgY2xheno7CisKKyAgfSBGVF9DTWFwUmVjOworCisgIC8qIHR5cGVjYXNlIGFueSBwb2ludGVyIHRvIGEgY2hhcm1hcCBoYW5kbGUgKi8KKyNkZWZpbmUgRlRfQ01BUCggeCApICAgICAgICAgICAgICAoKEZUX0NNYXApKCB4ICkpCisKKyAgLyogb2J2aW91cyBtYWNyb3MgKi8KKyNkZWZpbmUgRlRfQ01BUF9QTEFURk9STV9JRCggeCApICBGVF9DTUFQKCB4ICktPmNoYXJtYXAucGxhdGZvcm1faWQKKyNkZWZpbmUgRlRfQ01BUF9FTkNPRElOR19JRCggeCApICBGVF9DTUFQKCB4ICktPmNoYXJtYXAuZW5jb2RpbmdfaWQKKyNkZWZpbmUgRlRfQ01BUF9FTkNPRElORyggeCApICAgICBGVF9DTUFQKCB4ICktPmNoYXJtYXAuZW5jb2RpbmcKKyNkZWZpbmUgRlRfQ01BUF9GQUNFKCB4ICkgICAgICAgICBGVF9DTUFQKCB4ICktPmNoYXJtYXAuZmFjZQorCisKKyAgLyogY2xhc3MgbWV0aG9kIGRlZmluaXRpb25zICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9DTWFwX0luaXRGdW5jKSggRlRfQ01hcCAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgaW5pdF9kYXRhICk7CisKKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfQ01hcF9Eb25lRnVuYykoIEZUX0NNYXAgIGNtYXAgKTsKKworICB0eXBlZGVmIEZUX1VJbnQKKyAgKCpGVF9DTWFwX0NoYXJJbmRleEZ1bmMpKCBGVF9DTWFwICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBjaGFyX2NvZGUgKTsKKworICB0eXBlZGVmIEZUX1VJbnQKKyAgKCpGVF9DTWFwX0NoYXJOZXh0RnVuYykoIEZUX0NNYXAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICphY2hhcl9jb2RlICk7CisKKyAgdHlwZWRlZiBGVF9VSW50CisgICgqRlRfQ01hcF9DaGFyVmFySW5kZXhGdW5jKSggRlRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0NNYXAgICAgdW5pY29kZV9jbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgdmFyaWFudF9zZWxlY3RvciApOworCisgIHR5cGVkZWYgRlRfQm9vbAorICAoKkZUX0NNYXBfQ2hhclZhcklzRGVmYXVsdEZ1bmMpKCBGVF9DTWFwICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIHZhcmlhbnRfc2VsZWN0b3IgKTsKKworICB0eXBlZGVmIEZUX1VJbnQzMiAqCisgICgqRlRfQ01hcF9WYXJpYW50TGlzdEZ1bmMpKCBGVF9DTWFwICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbSApOworCisgIHR5cGVkZWYgRlRfVUludDMyICoKKyAgKCpGVF9DTWFwX0NoYXJWYXJpYW50TGlzdEZ1bmMpKCBGVF9DTWFwICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBjaGFyX2NvZGUgKTsKKworICB0eXBlZGVmIEZUX1VJbnQzMiAqCisgICgqRlRfQ01hcF9WYXJpYW50Q2hhckxpc3RGdW5jKSggRlRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgdmFyaWFudF9zZWxlY3RvciApOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0NNYXBfQ2xhc3NSZWNfCisgIHsKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgIHNpemU7CisgICAgRlRfQ01hcF9Jbml0RnVuYyAgICAgICBpbml0OworICAgIEZUX0NNYXBfRG9uZUZ1bmMgICAgICAgZG9uZTsKKyAgICBGVF9DTWFwX0NoYXJJbmRleEZ1bmMgIGNoYXJfaW5kZXg7CisgICAgRlRfQ01hcF9DaGFyTmV4dEZ1bmMgICBjaGFyX25leHQ7CisKKyAgICAvKiBTdWJzZXF1ZW50IGVudHJpZXMgYXJlIHNwZWNpYWwgb25lcyBmb3IgZm9ybWF0IDE0IC0tIHRoZSB2YXJpYW50ICovCisgICAgLyogc2VsZWN0b3Igc3VidGFibGUgd2hpY2ggYmVoYXZlcyBsaWtlIG5vIG90aGVyICAgICAgICAgICAgICAgICAgICAqLworCisgICAgRlRfQ01hcF9DaGFyVmFySW5kZXhGdW5jICAgICAgY2hhcl92YXJfaW5kZXg7CisgICAgRlRfQ01hcF9DaGFyVmFySXNEZWZhdWx0RnVuYyAgY2hhcl92YXJfZGVmYXVsdDsKKyAgICBGVF9DTWFwX1ZhcmlhbnRMaXN0RnVuYyAgICAgICB2YXJpYW50X2xpc3Q7CisgICAgRlRfQ01hcF9DaGFyVmFyaWFudExpc3RGdW5jICAgY2hhcnZhcmlhbnRfbGlzdDsKKyAgICBGVF9DTWFwX1ZhcmlhbnRDaGFyTGlzdEZ1bmMgICB2YXJpYW50Y2hhcl9saXN0OworCisgIH0gRlRfQ01hcF9DbGFzc1JlYzsKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVDTEFSRV9DTUFQX0NMQVNTKCBjbGFzc18gKSAgICAgICAgICAgICAgXAorICBGVF9DQUxMQkFDS19UQUJMRSBjb25zdCAgRlRfQ01hcF9DbGFzc1JlYyBjbGFzc187CisKKyNkZWZpbmUgRlRfREVGSU5FX0NNQVBfQ0xBU1MoICAgICAgIFwKKyAgICAgICAgICBjbGFzc18sICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzaXplXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0XywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkb25lXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjaGFyX2luZGV4XywgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjaGFyX25leHRfLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjaGFyX3Zhcl9pbmRleF8sICAgICAgICAgIFwKKyAgICAgICAgICBjaGFyX3Zhcl9kZWZhdWx0XywgICAgICAgIFwKKyAgICAgICAgICB2YXJpYW50X2xpc3RfLCAgICAgICAgICAgIFwKKyAgICAgICAgICBjaGFydmFyaWFudF9saXN0XywgICAgICAgIFwKKyAgICAgICAgICB2YXJpYW50Y2hhcl9saXN0XyApICAgICAgIFwKKyAgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGICAgICAgICAgICAgIFwKKyAgY29uc3QgRlRfQ01hcF9DbGFzc1JlYyAgY2xhc3NfID0gIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbml0XywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGFyX2luZGV4XywgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGFyX25leHRfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGFyX3Zhcl9pbmRleF8sICAgICAgICAgICAgICAgIFwKKyAgICBjaGFyX3Zhcl9kZWZhdWx0XywgICAgICAgICAgICAgIFwKKyAgICB2YXJpYW50X2xpc3RfLCAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGFydmFyaWFudF9saXN0XywgICAgICAgICAgICAgIFwKKyAgICB2YXJpYW50Y2hhcl9saXN0XyAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUNMQVJFX0NNQVBfQ0xBU1MoIGNsYXNzXyApICAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICBsaWJyYXJ5LCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0NNYXBfQ2xhc3NSZWMqICBjbGF6eiApOworCisjZGVmaW5lIEZUX0RFRklORV9DTUFQX0NMQVNTKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2hhcl9pbmRleF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2hhcl9uZXh0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2hhcl92YXJfaW5kZXhfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2hhcl92YXJfZGVmYXVsdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdmFyaWFudF9saXN0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2hhcnZhcmlhbnRfbGlzdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdmFyaWFudGNoYXJfbGlzdF8gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgIGxpYnJhcnksICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQ01hcF9DbGFzc1JlYyogIGNsYXp6ICkgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnNpemUgICAgICAgICAgICAgPSBzaXplXzsgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmluaXQgICAgICAgICAgICAgPSBpbml0XzsgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmRvbmUgICAgICAgICAgICAgPSBkb25lXzsgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmNoYXJfaW5kZXggICAgICAgPSBjaGFyX2luZGV4XzsgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmNoYXJfbmV4dCAgICAgICAgPSBjaGFyX25leHRfOyAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmNoYXJfdmFyX2luZGV4ICAgPSBjaGFyX3Zhcl9pbmRleF87ICAgICAgICAgICBcCisgICAgY2xhenotPmNoYXJfdmFyX2RlZmF1bHQgPSBjaGFyX3Zhcl9kZWZhdWx0XzsgICAgICAgICBcCisgICAgY2xhenotPnZhcmlhbnRfbGlzdCAgICAgPSB2YXJpYW50X2xpc3RfOyAgICAgICAgICAgICBcCisgICAgY2xhenotPmNoYXJ2YXJpYW50X2xpc3QgPSBjaGFydmFyaWFudF9saXN0XzsgICAgICAgICBcCisgICAgY2xhenotPnZhcmlhbnRjaGFyX2xpc3QgPSB2YXJpYW50Y2hhcl9saXN0XzsgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworICAvKiBjcmVhdGUgYSBuZXcgY2hhcm1hcCBhbmQgYWRkIGl0IHRvIGNoYXJtYXAtPmZhY2UgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9DTWFwX05ldyggRlRfQ01hcF9DbGFzcyAgY2xhenosCisgICAgICAgICAgICAgICBGVF9Qb2ludGVyICAgICBpbml0X2RhdGEsCisgICAgICAgICAgICAgICBGVF9DaGFyTWFwICAgICBjaGFybWFwLAorICAgICAgICAgICAgICAgRlRfQ01hcCAgICAgICAqYWNtYXAgKTsKKworICAvKiBkZXN0cm95IGEgY2hhcm1hcCBhbmQgcmVtb3ZlIGl0IGZyb20gZmFjZSdzIGxpc3QgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX0NNYXBfRG9uZSggRlRfQ01hcCAgY21hcCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmFjZV9JbnRlcm5hbFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGludGVybmFsIGZpZWxkcyBvZiBlYWNoIEZUX0ZhY2UgICAgICAgICovCisgIC8qICAgIG9iamVjdC4gIFRoZXNlIGZpZWxkcyBtYXkgY2hhbmdlIGJldHdlZW4gZGlmZmVyZW50IHJlbGVhc2VzIG9mICAgICAqLworICAvKiAgICBGcmVlVHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfcG9pbnRzIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcG9pbnRzIHVzZWQgdG8gc3RvcmUgdGhlIHZlY3RvcmlhbCBvdXRsaW5lICovCisgIC8qICAgICAgb2YgYW55IGdseXBoIGluIHRoaXMgZmFjZS4gIElmIHRoaXMgdmFsdWUgY2Fubm90IGJlIGtub3duIGluICAgICAqLworICAvKiAgICAgIGFkdmFuY2UsIG9yIGlmIHRoZSBmYWNlIGlzbid0IHNjYWxhYmxlLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gMC4gKi8KKyAgLyogICAgICBPbmx5IHJlbGV2YW50IGZvciBzY2FsYWJsZSBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfY29udG91cnMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29udG91cnMgdXNlZCB0byBzdG9yZSB0aGUgdmVjdG9yaWFsICAgICAgICovCisgIC8qICAgICAgb3V0bGluZSBvZiBhbnkgZ2x5cGggaW4gdGhpcyBmYWNlLiAgSWYgdGhpcyB2YWx1ZSBjYW5ub3QgYmUgICAgICAqLworICAvKiAgICAgIGtub3duIGluIGFkdmFuY2UsIG9yIGlmIHRoZSBmYWNlIGlzbid0IHNjYWxhYmxlLCB0aGlzIHNob3VsZCBiZSAgKi8KKyAgLyogICAgICBzZXQgdG8gMC4gIE9ubHkgcmVsZXZhbnQgZm9yIHNjYWxhYmxlIGZvcm1hdHMuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0cmFuc2Zvcm1fbWF0cml4IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIDJ4MiBtYXRyaXggb2YgMTYuMTYgY29lZmZpY2llbnRzIHVzZWQgdG8gdHJhbnNmb3JtIGdseXBoICAgICAgICovCisgIC8qICAgICAgb3V0bGluZXMgYWZ0ZXIgdGhleSBhcmUgbG9hZGVkIGZyb20gdGhlIGZvbnQuICBPbmx5IHVzZWQgYnkgdGhlICAqLworICAvKiAgICAgIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRyYW5zZm9ybV9kZWx0YSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEEgdHJhbnNsYXRpb24gdmVjdG9yIHVzZWQgdG8gdHJhbnNmb3JtIGdseXBoIG91dGxpbmVzIGFmdGVyIHRoZXkgKi8KKyAgLyogICAgICBhcmUgbG9hZGVkIGZyb20gdGhlIGZvbnQuICBPbmx5IHVzZWQgYnkgdGhlIGNvbnZlbmllbmNlICAgICAgICAgICovCisgIC8qICAgICAgZnVuY3Rpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHJhbnNmb3JtX2ZsYWdzIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgU29tZSBmbGFncyB1c2VkIHRvIGNsYXNzaWZ5IHRoZSB0cmFuc2Zvcm0uICBPbmx5IHVzZWQgYnkgdGhlICAgICAqLworICAvKiAgICAgIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNlcnZpY2VzIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEEgY2FjaGUgZm9yIGZyZXF1ZW50bHkgdXNlZCBzZXJ2aWNlcy4gIEl0IHNob3VsZCBiZSBvbmx5ICAgICAgICAgKi8KKyAgLyogICAgICBhY2Nlc3NlZCB3aXRoIHRoZSBtYWNybyBgRlRfRkFDRV9MT09LVVBfU0VSVklDRScuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpbmNyZW1lbnRhbF9pbnRlcmZhY2UgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJZiBub24tbnVsbCwgdGhlIGludGVyZmFjZSB0aHJvdWdoIHdoaWNoIGdseXBoIGRhdGEgYW5kIG1ldHJpY3MgICovCisgIC8qICAgICAgYXJlIGxvYWRlZCBpbmNyZW1lbnRhbGx5IGZvciBmYWNlcyB0aGF0IGRvIG5vdCBwcm92aWRlIGFsbCBvZiAgICAqLworICAvKiAgICAgIHRoaXMgZGF0YSB3aGVuIGZpcnN0IG9wZW5lZC4gIFRoaXMgZmllbGQgZXhpc3RzIG9ubHkgaWYgICAgICAgICAgKi8KKyAgLyogICAgICBARlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCBpcyBkZWZpbmVkLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpZ25vcmVfdW5wYXRlbnRlZF9oaW50ZXIgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGlzIGJvb2xlYW4gZmxhZyBpbnN0cnVjdHMgdGhlIGdseXBoIGxvYWRlciB0byBpZ25vcmUgdGhlICAgICAgICovCisgIC8qICAgICAgbmF0aXZlIGZvbnQgaGludGVyLCBpZiBvbmUgaXMgZm91bmQuICBUaGlzIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgICAqLworICAvKiAgICAgIGluIHRoZSBjYXNlIHdoZW4gdGhlIHVucGF0ZW50ZWQgaGludGVyIGlzIGNvbXBpbGVkIHdpdGhpbiB0aGUgICAgKi8KKyAgLyogICAgICBsaWJyYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZWZjb3VudCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIGNvdW50ZXIgaW5pdGlhbGl6ZWQgdG9+MSBhdCB0aGUgdGltZSBhbiBARlRfRmFjZSBzdHJ1Y3R1cmUgaXMgICovCisgIC8qICAgICAgY3JlYXRlZC4gIEBGVF9SZWZlcmVuY2VfRmFjZSBpbmNyZW1lbnRzIHRoaXMgY291bnRlciwgYW5kICAgICAgICAqLworICAvKiAgICAgIEBGVF9Eb25lX0ZhY2Ugb25seSBkZXN0cm95cyBhIGZhY2UgaWYgdGhlIGNvdW50ZXIgaXN+MSwgICAgICAgICAgKi8KKyAgLyogICAgICBvdGhlcndpc2UgaXQgc2ltcGx5IGRlY3JlbWVudHMgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfRmFjZV9JbnRlcm5hbFJlY18KKyAgeworICAgIEZUX01hdHJpeCAgICAgICAgICAgdHJhbnNmb3JtX21hdHJpeDsKKyAgICBGVF9WZWN0b3IgICAgICAgICAgIHRyYW5zZm9ybV9kZWx0YTsKKyAgICBGVF9JbnQgICAgICAgICAgICAgIHRyYW5zZm9ybV9mbGFnczsKKworICAgIEZUX1NlcnZpY2VDYWNoZVJlYyAgc2VydmljZXM7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisgICAgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlUmVjKiAgaW5jcmVtZW50YWxfaW50ZXJmYWNlOworI2VuZGlmCisKKyAgICBGVF9Cb29sICAgICAgICAgICAgIGlnbm9yZV91bnBhdGVudGVkX2hpbnRlcjsKKyAgICBGVF9JbnQgICAgICAgICAgICAgIHJlZmNvdW50OworCisgIH0gRlRfRmFjZV9JbnRlcm5hbFJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Nsb3RfSW50ZXJuYWxSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBpbnRlcm5hbCBmaWVsZHMgb2YgZWFjaCBGVF9HbHlwaFNsb3QgICAqLworICAvKiAgICBvYmplY3QuICBUaGVzZSBmaWVsZHMgbWF5IGNoYW5nZSBiZXR3ZWVuIGRpZmZlcmVudCByZWxlYXNlcyBvZiAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZGVyICAgICAgICAgICAgOjogVGhlIGdseXBoIGxvYWRlciBvYmplY3QgdXNlZCB0byBsb2FkIG91dGxpbmVzICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIGdseXBoIHNsb3QuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmxhZ3MgICAgICAgICAgICAgOjogUG9zc2libGUgdmFsdWVzIGFyZSB6ZXJvIG9yICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dMWVBIX09XTl9CSVRNQVAuICBUaGUgbGF0dGVyIGluZGljYXRlcyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHRoZSBGVF9HbHlwaFNsb3Qgc3RydWN0dXJlIG93bnMgdGhlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwIGJ1ZmZlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF90cmFuc2Zvcm1lZCA6OiBCb29sZWFuLiAgU2V0IHRvIFRSVUUgd2hlbiB0aGUgbG9hZGVkIGdseXBoICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSB0cmFuc2Zvcm1lZCB0aHJvdWdoIGEgc3BlY2lmaWMgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQgdHJhbnNmb3JtYXRpb24uICBUaGlzIGlzIF9ub3RfIHRoZSBzYW1lICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgZmFjZSB0cmFuc2Zvcm0gc2V0IHRocm91Z2ggICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2V0X1RyYW5zZm9ybSgpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9tYXRyaXggICAgICA6OiBUaGUgMngyIG1hdHJpeCBjb3JyZXNwb25kaW5nIHRvIHRoZSBnbHlwaCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb24sIGlmIG5lY2Vzc2FyeS4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9kZWx0YSAgICAgICA6OiBUaGUgMmQgdHJhbnNsYXRpb24gdmVjdG9yIGNvcnJlc3BvbmRpbmcgdG8gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGdseXBoIHRyYW5zZm9ybWF0aW9uLCBpZiBuZWNlc3NhcnkuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9oaW50cyAgICAgICA6OiBGb3JtYXQtc3BlY2lmaWMgZ2x5cGggaGludHMgbWFuYWdlbWVudC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgRlRfR0xZUEhfT1dOX0JJVE1BUCAgMHgxCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1Nsb3RfSW50ZXJuYWxSZWNfCisgIHsKKyAgICBGVF9HbHlwaExvYWRlciAgbG9hZGVyOworICAgIEZUX1VJbnQgICAgICAgICBmbGFnczsKKyAgICBGVF9Cb29sICAgICAgICAgZ2x5cGhfdHJhbnNmb3JtZWQ7CisgICAgRlRfTWF0cml4ICAgICAgIGdseXBoX21hdHJpeDsKKyAgICBGVF9WZWN0b3IgICAgICAgZ2x5cGhfZGVsdGE7CisgICAgdm9pZCogICAgICAgICAgIGdseXBoX2hpbnRzOworCisgIH0gRlRfR2x5cGhTbG90X0ludGVybmFsUmVjOworCisKKyNpZiAwCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2l6ZV9JbnRlcm5hbFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGludGVybmFsIGZpZWxkcyBvZiBlYWNoIEZUX1NpemUgICAgICAgICovCisgIC8qICAgIG9iamVjdC4gIEN1cnJlbnRseSwgaXQncyBlbXB0eS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1NpemVfSW50ZXJuYWxSZWNfCisgIHsKKyAgICAvKiBlbXB0eSAqLworCisgIH0gRlRfU2l6ZV9JbnRlcm5hbFJlYzsKKworI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgIE0gTyBEIFUgTCBFIFMgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Nb2R1bGVSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIG1vZHVsZSBvYmplY3QgaW5zdGFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjbGF6eiAgIDo6IEEgcG9pbnRlciB0byB0aGUgbW9kdWxlJ3MgY2xhc3MuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogQSBoYW5kbGUgdG8gdGhlIHBhcmVudCBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5ICA6OiBBIGhhbmRsZSB0byB0aGUgbWVtb3J5IG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfTW9kdWxlUmVjXworICB7CisgICAgRlRfTW9kdWxlX0NsYXNzKiAgY2xheno7CisgICAgRlRfTGlicmFyeSAgICAgICAgbGlicmFyeTsKKyAgICBGVF9NZW1vcnkgICAgICAgICBtZW1vcnk7CisKKyAgfSBGVF9Nb2R1bGVSZWM7CisKKworICAvKiB0eXBlY2FzdCBhbiBvYmplY3QgdG8gYW4gRlRfTW9kdWxlICovCisjZGVmaW5lIEZUX01PRFVMRSggeCApICAgICAgICAgICgoRlRfTW9kdWxlKSggeCApKQorI2RlZmluZSBGVF9NT0RVTEVfQ0xBU1MoIHggKSAgICBGVF9NT0RVTEUoIHggKS0+Y2xhenoKKyNkZWZpbmUgRlRfTU9EVUxFX0xJQlJBUlkoIHggKSAgRlRfTU9EVUxFKCB4ICktPmxpYnJhcnkKKyNkZWZpbmUgRlRfTU9EVUxFX01FTU9SWSggeCApICAgRlRfTU9EVUxFKCB4ICktPm1lbW9yeQorCisKKyNkZWZpbmUgRlRfTU9EVUxFX0lTX0RSSVZFUiggeCApICAoIEZUX01PRFVMRV9DTEFTUyggeCApLT5tb2R1bGVfZmxhZ3MgJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NT0RVTEVfRk9OVF9EUklWRVIgKQorCisjZGVmaW5lIEZUX01PRFVMRV9JU19SRU5ERVJFUiggeCApICAoIEZUX01PRFVMRV9DTEFTUyggeCApLT5tb2R1bGVfZmxhZ3MgJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01PRFVMRV9SRU5ERVJFUiApCisKKyNkZWZpbmUgRlRfTU9EVUxFX0lTX0hJTlRFUiggeCApICAoIEZUX01PRFVMRV9DTEFTUyggeCApLT5tb2R1bGVfZmxhZ3MgJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NT0RVTEVfSElOVEVSICkKKworI2RlZmluZSBGVF9NT0RVTEVfSVNfU1RZTEVSKCB4ICkgICggRlRfTU9EVUxFX0NMQVNTKCB4ICktPm1vZHVsZV9mbGFncyAmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01PRFVMRV9TVFlMRVIgKQorCisjZGVmaW5lIEZUX0RSSVZFUl9JU19TQ0FMQUJMRSggeCApICAoIEZUX01PRFVMRV9DTEFTUyggeCApLT5tb2R1bGVfZmxhZ3MgJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01PRFVMRV9EUklWRVJfU0NBTEFCTEUgKQorCisjZGVmaW5lIEZUX0RSSVZFUl9VU0VTX09VVExJTkVTKCB4ICkgICEoIEZUX01PRFVMRV9DTEFTUyggeCApLT5tb2R1bGVfZmxhZ3MgJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01PRFVMRV9EUklWRVJfTk9fT1VUTElORVMgKQorCisjZGVmaW5lIEZUX0RSSVZFUl9IQVNfSElOVEVSKCB4ICkgICggRlRfTU9EVUxFX0NMQVNTKCB4ICktPm1vZHVsZV9mbGFncyAmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NT0RVTEVfRFJJVkVSX0hBU19ISU5URVIgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X01vZHVsZV9JbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRmluZHMgYSBtb2R1bGUgYW5kIHJldHVybnMgaXRzIHNwZWNpZmljIGludGVyZmFjZSBhcyBhIHR5cGVsZXNzICAgICovCisgIC8qICAgIHBvaW50ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlX25hbWUgOjogVGhlIG1vZHVsZSdzIG5hbWUgKGFzIGFuIEFTQ0lJIHN0cmluZykuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBtb2R1bGUtc3BlY2lmaWMgaW50ZXJmYWNlIGlmIGF2YWlsYWJsZSwgMCBvdGhlcndpc2UuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgWW91IHNob3VsZCBiZXR0ZXIgYmUgZmFtaWxpYXIgd2l0aCBGcmVlVHlwZSBpbnRlcm5hbHMgdG8ga25vdyAgICAgICovCisgIC8qICAgIHdoaWNoIG1vZHVsZSB0byBsb29rIGZvciwgYW5kIHdoYXQgaXRzIGludGVyZmFjZSBpcyA6LSkgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggY29uc3Qgdm9pZCogKQorICBGVF9HZXRfTW9kdWxlX0ludGVyZmFjZSggRlRfTGlicmFyeSAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgbW9kX25hbWUgKTsKKworICBGVF9CQVNFKCBGVF9Qb2ludGVyICkKKyAgZnRfbW9kdWxlX2dldF9zZXJ2aWNlKCBGVF9Nb2R1bGUgICAgbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBzZXJ2aWNlX2lkICk7CisKKyAgLyogKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICBGIEEgQyBFLCAgIFMgSSBaIEUgICAmICAgRyBMIFkgUCBIICAgUyBMIE8gVCAgIE8gQiBKIEUgQyBUIFMgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKiBhIGZldyBtYWNyb3MgdXNlZCB0byBwZXJmb3JtIGVhc3kgdHlwZWNhc3RzIHdpdGggbWluaW1hbCBicmFpbiBkYW1hZ2UgKi8KKworI2RlZmluZSBGVF9GQUNFKCB4ICkgICAgICAgICAgKChGVF9GYWNlKSh4KSkKKyNkZWZpbmUgRlRfU0laRSggeCApICAgICAgICAgICgoRlRfU2l6ZSkoeCkpCisjZGVmaW5lIEZUX1NMT1QoIHggKSAgICAgICAgICAoKEZUX0dseXBoU2xvdCkoeCkpCisKKyNkZWZpbmUgRlRfRkFDRV9EUklWRVIoIHggKSAgIEZUX0ZBQ0UoIHggKS0+ZHJpdmVyCisjZGVmaW5lIEZUX0ZBQ0VfTElCUkFSWSggeCApICBGVF9GQUNFX0RSSVZFUiggeCApLT5yb290LmxpYnJhcnkKKyNkZWZpbmUgRlRfRkFDRV9NRU1PUlkoIHggKSAgIEZUX0ZBQ0UoIHggKS0+bWVtb3J5CisjZGVmaW5lIEZUX0ZBQ0VfU1RSRUFNKCB4ICkgICBGVF9GQUNFKCB4ICktPnN0cmVhbQorCisjZGVmaW5lIEZUX1NJWkVfRkFDRSggeCApICAgICBGVF9TSVpFKCB4ICktPmZhY2UKKyNkZWZpbmUgRlRfU0xPVF9GQUNFKCB4ICkgICAgIEZUX1NMT1QoIHggKS0+ZmFjZQorCisjZGVmaW5lIEZUX0ZBQ0VfU0xPVCggeCApICAgICBGVF9GQUNFKCB4ICktPmdseXBoCisjZGVmaW5lIEZUX0ZBQ0VfU0laRSggeCApICAgICBGVF9GQUNFKCB4ICktPnNpemUKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX05ld19HbHlwaFNsb3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIGdseXBoIHNsb3QgZm9yIGEgICAgICAqLworICAvKiAgICBnaXZlbiBmYWNlIG9iamVjdC4gIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjcmVhdGUgYWRkaXRpb25hbCAgICAgKi8KKyAgLyogICAgc2xvdHMuICBBbGwgb2YgdGhlbSBhcmUgYXV0b21hdGljYWxseSBkaXNjYXJkZWQgd2hlbiB0aGUgZmFjZSBpcyAgICovCisgIC8qICAgIGRlc3Ryb3llZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgIDo6IEEgaGFuZGxlIHRvIGEgcGFyZW50IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFzbG90IDo6IEEgaGFuZGxlIHRvIGEgbmV3IGdseXBoIHNsb3Qgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9OZXdfR2x5cGhTbG90KCBGVF9GYWNlICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICphc2xvdCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRG9uZV9HbHlwaFNsb3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVzdHJveXMgYSBnaXZlbiBnbHlwaCBzbG90LiAgUmVtZW1iZXIgaG93ZXZlciB0aGF0IGFsbCBzbG90cyBhcmUgICovCisgIC8qICAgIGF1dG9tYXRpY2FsbHkgZGVzdHJveWVkIHdpdGggaXRzIHBhcmVudC4gIFVzaW5nIHRoaXMgZnVuY3Rpb24gaXMgICAqLworICAvKiAgICBub3QgYWx3YXlzIG1hbmRhdG9yeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzbG90IDo6IEEgaGFuZGxlIHRvIGEgdGFyZ2V0IGdseXBoIHNsb3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9Eb25lX0dseXBoU2xvdCggRlRfR2x5cGhTbG90ICBzbG90ICk7CisKKyAvKiAqLworCisjZGVmaW5lIEZUX1JFUVVFU1RfV0lEVEgoIHJlcSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAocmVxKS0+aG9yaVJlc29sdXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgID8gKEZUX1BvcykoIChyZXEpLT53aWR0aCAqIChyZXEpLT5ob3JpUmVzb2x1dGlvbiArIDM2ICkgLyA3MiBcCisgICAgICAgICAgICAgIDogKHJlcSktPndpZHRoICkKKworI2RlZmluZSBGVF9SRVFVRVNUX0hFSUdIVCggcmVxICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIChyZXEpLT52ZXJ0UmVzb2x1dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgID8gKEZUX1BvcykoIChyZXEpLT5oZWlnaHQgKiAocmVxKS0+dmVydFJlc29sdXRpb24gKyAzNiApIC8gNzIgXAorICAgICAgICAgICAgICA6IChyZXEpLT5oZWlnaHQgKQorCisKKyAgLyogU2V0IHRoZSBtZXRyaWNzIGFjY29yZGluZyB0byBhIGJpdG1hcCBzdHJpa2UuICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9TZWxlY3RfTWV0cmljcyggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgc3RyaWtlX2luZGV4ICk7CisKKworICAvKiBTZXQgdGhlIG1ldHJpY3MgYWNjb3JkaW5nIHRvIGEgc2l6ZSByZXF1ZXN0LiAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfUmVxdWVzdF9NZXRyaWNzKCBGVF9GYWNlICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEgKTsKKworCisgIC8qIE1hdGNoIGEgc2l6ZSByZXF1ZXN0IGFnYWluc3QgYGF2YWlsYWJsZV9zaXplcycuICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfTWF0Y2hfU2l6ZSggRlRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICBGVF9TaXplX1JlcXVlc3QgIHJlcSwKKyAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICAgICBpZ25vcmVfd2lkdGgsCisgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgICAgICAgc2l6ZV9pbmRleCApOworCisKKyAgLyogVXNlIHRoZSBob3Jpem9udGFsIG1ldHJpY3MgdG8gc3ludGhlc2l6ZSB0aGUgdmVydGljYWwgbWV0cmljcy4gKi8KKyAgLyogSWYgYGFkdmFuY2UnIGlzIHplcm8sIGl0IGlzIGFsc28gc3ludGhlc2l6ZWQuICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIGZ0X3N5bnRoZXNpemVfdmVydGljYWxfbWV0cmljcyggRlRfR2x5cGhfTWV0cmljcyogIG1ldHJpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgICAgICAgIGFkdmFuY2UgKTsKKworCisgIC8qIEZyZWUgdGhlIGJpdG1hcCBvZiBhIGdpdmVuIGdseXBoc2xvdCB3aGVuIG5lZWRlZCAoaS5lLiwgb25seSB3aGVuIGl0ICovCisgIC8qIHdhcyBhbGxvY2F0ZWQgd2l0aCBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwKS4gICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAoIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisKKyAgLyogQWxsb2NhdGUgYSBuZXcgYml0bWFwIGJ1ZmZlciBpbiBhIGdseXBoIHNsb3QuICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCggRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgIHNpemUgKTsKKworCisgIC8qIFNldCB0aGUgYml0bWFwIGJ1ZmZlciBpbiBhIGdseXBoIHNsb3QgdG8gYSBnaXZlbiBwb2ludGVyLiAgVGhlIGJ1ZmZlciAqLworICAvKiB3aWxsIG5vdCBiZSBmcmVlZCBieSBhIGxhdGVyIGNhbGwgdG8gZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwLiAgICAgICAgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwKCBGVF9HbHlwaFNsb3QgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgICAgIGJ1ZmZlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgIFIgRSBOIEQgRSBSIEUgUiBTICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNkZWZpbmUgRlRfUkVOREVSRVIoIHggKSAgICAgICgoRlRfUmVuZGVyZXIpKCB4ICkpCisjZGVmaW5lIEZUX0dMWVBIKCB4ICkgICAgICAgICAoKEZUX0dseXBoKSggeCApKQorI2RlZmluZSBGVF9CSVRNQVBfR0xZUEgoIHggKSAgKChGVF9CaXRtYXBHbHlwaCkoIHggKSkKKyNkZWZpbmUgRlRfT1VUTElORV9HTFlQSCggeCApICgoRlRfT3V0bGluZUdseXBoKSggeCApKQorCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1JlbmRlcmVyUmVjXworICB7CisgICAgRlRfTW9kdWxlUmVjICAgICAgICAgICAgcm9vdDsKKyAgICBGVF9SZW5kZXJlcl9DbGFzcyogICAgICBjbGF6ejsKKyAgICBGVF9HbHlwaF9Gb3JtYXQgICAgICAgICBnbHlwaF9mb3JtYXQ7CisgICAgRlRfR2x5cGhfQ2xhc3MgICAgICAgICAgZ2x5cGhfY2xhc3M7CisKKyAgICBGVF9SYXN0ZXIgICAgICAgICAgICAgICByYXN0ZXI7CisgICAgRlRfUmFzdGVyX1JlbmRlcl9GdW5jICAgcmFzdGVyX3JlbmRlcjsKKyAgICBGVF9SZW5kZXJlcl9SZW5kZXJGdW5jICByZW5kZXI7CisKKyAgfSBGVF9SZW5kZXJlclJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgIEYgTyBOIFQgICBEIFIgSSBWIEUgUiBTICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIHR5cGVjYXN0IGEgbW9kdWxlIGludG8gYSBkcml2ZXIgZWFzaWx5ICovCisjZGVmaW5lIEZUX0RSSVZFUiggeCApICAgICAgICAoKEZUX0RyaXZlcikoeCkpCisKKyAgLyogdHlwZWNhc3QgYSBtb2R1bGUgYXMgYSBkcml2ZXIsIGFuZCBnZXQgaXRzIGRyaXZlciBjbGFzcyAqLworI2RlZmluZSBGVF9EUklWRVJfQ0xBU1MoIHggKSAgRlRfRFJJVkVSKCB4ICktPmNsYXp6CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Ecml2ZXJSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcm9vdCBmb250IGRyaXZlciBjbGFzcy4gIEEgZm9udCBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yICAgICAgKi8KKyAgLyogICAgbWFuYWdpbmcgYW5kIGxvYWRpbmcgZm9udCBmaWxlcyBvZiBhIGdpdmVuIGZvcm1hdC4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIHJvb3QgICAgICAgICA6OiBDb250YWlucyB0aGUgZmllbGRzIG9mIHRoZSByb290IG1vZHVsZSBjbGFzcy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgY2xhenogICAgICAgIDo6IEEgcG9pbnRlciB0byB0aGUgZm9udCBkcml2ZXIncyBjbGFzcy4gIE5vdGUgdGhhdCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICB0aGlzIGlzIE5PVCByb290LmNsYXp6LiAgYGNsYXNzJyB3YXNuJ3QgdXNlZCAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgYXMgaXQgaXMgYSByZXNlcnZlZCB3b3JkIGluIEMrKy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGZhY2VzX2xpc3QgICA6OiBUaGUgbGlzdCBvZiBmYWNlcyBjdXJyZW50bHkgb3BlbmVkIGJ5IHRoaXMgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgZHJpdmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGdseXBoX2xvYWRlciA6OiBUaGUgZ2x5cGggbG9hZGVyIGZvciBhbGwgZmFjZXMgbWFuYWdlZCBieSB0aGlzICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgZHJpdmVyLiAgVGhpcyBvYmplY3QgaXNuJ3QgZGVmaW5lZCBmb3IgdW5zY2FsYWJsZSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9Ecml2ZXJSZWNfCisgIHsKKyAgICBGVF9Nb2R1bGVSZWMgICAgIHJvb3Q7CisgICAgRlRfRHJpdmVyX0NsYXNzICBjbGF6ejsKKyAgICBGVF9MaXN0UmVjICAgICAgIGZhY2VzX2xpc3Q7CisgICAgRlRfR2x5cGhMb2FkZXIgICBnbHlwaF9sb2FkZXI7CisKKyAgfSBGVF9Ecml2ZXJSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICBMIEkgQiBSIEEgUiBJIEUgUyAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBUaGlzIGhvb2sgaXMgdXNlZCBieSB0aGUgVHJ1ZVR5cGUgZGVidWdnZXIuICBJdCBtdXN0IGJlIHNldCB0byBhbiAqLworICAvKiBhbHRlcm5hdGUgdHJ1ZXR5cGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9ERUJVR19IT09LX1RSVUVUWVBFICAgICAgICAgICAgMAorCisKKyAgLyogU2V0IHRoaXMgZGVidWcgaG9vayB0byBhIG5vbi1udWxsIHBvaW50ZXIgdG8gZm9yY2UgdW5wYXRlbnRlZCBoaW50aW5nICovCisgIC8qIGZvciBhbGwgZmFjZXMgd2hlbiBib3RoIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUiBhbmQgICAgICAgICAgICAgICAqLworICAvKiBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORyBhcmUgZGVmaW5lZC4gIFRoaXMgaXMgb25seSB1c2VkICAgKi8KKyAgLyogZHVyaW5nIGRlYnVnZ2luZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX0RFQlVHX0hPT0tfVU5QQVRFTlRFRF9ISU5USU5HICAxCisKKworICB0eXBlZGVmIHZvaWQgICgqRlRfQml0bWFwX0xjZEZpbHRlckZ1bmMpKCBGVF9CaXRtYXAqICAgICAgYml0bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgcmVuZGVyX21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xpYnJhcnkgICAgICBsaWJyYXJ5ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaWJyYXJ5UmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgRnJlZVR5cGUgbGlicmFyeSBjbGFzcy4gIFRoaXMgaXMgdGhlIHJvb3Qgb2YgYWxsIEZyZWVUeXBlICAgICAgKi8KKyAgLyogICAgZGF0YS4gIFVzZSBGVF9OZXdfTGlicmFyeSgpIHRvIGNyZWF0ZSBhIGxpYnJhcnkgb2JqZWN0LCBhbmQgICAgICAgICovCisgIC8qICAgIEZUX0RvbmVfTGlicmFyeSgpIHRvIGRpc2NhcmQgaXQgYW5kIGFsbCBjaGlsZCBvYmplY3RzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSAgICAgICAgICAgOjogVGhlIGxpYnJhcnkncyBtZW1vcnkgb2JqZWN0LiAgTWFuYWdlcyBtZW1vcnkgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnNpb25fbWFqb3IgICAgOjogVGhlIG1ham9yIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBsaWJyYXJ5LiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVyc2lvbl9taW5vciAgICA6OiBUaGUgbWlub3IgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGxpYnJhcnkuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJzaW9uX3BhdGNoICAgIDo6IFRoZSBjdXJyZW50IHBhdGNoIGxldmVsIG9mIHRoZSBsaWJyYXJ5LiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9tb2R1bGVzICAgICAgOjogVGhlIG51bWJlciBvZiBtb2R1bGVzIGN1cnJlbnRseSByZWdpc3RlcmVkICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGlzIGxpYnJhcnkuICBUaGlzIGlzIHNldCB0byAwIGZvciBuZXcgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMuICBOZXcgbW9kdWxlcyBhcmUgYWRkZWQgdGhyb3VnaCB0aGUgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgRlRfQWRkX01vZHVsZSgpIEFQSSBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlcyAgICAgICAgICA6OiBBIHRhYmxlIHVzZWQgdG8gc3RvcmUgaGFuZGxlcyB0byB0aGUgY3VycmVudGx5ICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCBtb2R1bGVzLiBOb3RlIHRoYXQgZWFjaCBmb250IGRyaXZlciAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgbGlzdCBvZiBpdHMgb3BlbmVkIGZhY2VzLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlbmRlcmVycyAgICAgICAgOjogVGhlIGxpc3Qgb2YgcmVuZGVyZXJzIGN1cnJlbnRseSByZWdpc3RlcmVkICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgbGlicmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGN1cl9yZW5kZXJlciAgICAgOjogVGhlIGN1cnJlbnQgb3V0bGluZSByZW5kZXJlci4gIFRoaXMgaXMgYSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0Y3V0IHVzZWQgdG8gYXZvaWQgcGFyc2luZyB0aGUgbGlzdCBvbiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBlYWNoIGNhbGwgdG8gRlRfT3V0bGluZV9SZW5kZXIoKS4gIEl0IGlzIGEgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlIHRvIHRoZSBjdXJyZW50IHJlbmRlcmVyIGZvciB0aGUgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FIGZvcm1hdC4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGF1dG9faGludGVyICAgICAgOjogWFhYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmFzdGVyX3Bvb2wgICAgICA6OiBUaGUgcmFzdGVyIG9iamVjdCdzIHJlbmRlciBwb29sLiAgVGhpcyBjYW4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgaWRlYWxseSBiZSBjaGFuZ2VkIGR5bmFtaWNhbGx5IGF0IHJ1bi10aW1lLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmFzdGVyX3Bvb2xfc2l6ZSA6OiBUaGUgc2l6ZSBvZiB0aGUgcmVuZGVyIHBvb2wgaW4gYnl0ZXMuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkZWJ1Z19ob29rcyAgICAgIDo6IFhYWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxjZF9maWx0ZXIgICAgICAgOjogSWYgc3VicGl4ZWwgcmVuZGVyaW5nIGlzIGFjdGl2YXRlZCwgdGhlICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkIExDRCBmaWx0ZXIgbW9kZS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxjZF9leHRyYSAgICAgICAgOjogSWYgc3VicGl4ZWwgcmVuZGVyaW5nIGlzIGFjdGl2YXRlZCwgdGhlIG51bWJlciAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIG9mIGV4dHJhIHBpeGVscyBuZWVkZWQgZm9yIHRoZSBMQ0QgZmlsdGVyLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxjZF93ZWlnaHRzICAgICAgOjogSWYgc3VicGl4ZWwgcmVuZGVyaW5nIGlzIGFjdGl2YXRlZCwgdGhlIExDRCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciB3ZWlnaHRzLCBpZiBhbnkuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxjZF9maWx0ZXJfZnVuYyAgOjogSWYgc3VicGl4ZWwgcmVuZGVyaW5nIGlzIGFjdGl2YXRlZCwgdGhlIExDRCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmluZyBjYWxsYmFjayBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBpY19jb250YWluZXIgICAgOjogQ29udGFpbnMgZ2xvYmFsIHN0cnVjdHMgYW5kIHRhYmxlcywgaW5zdGVhZCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRlZmluaW5nIHRoZW0gZ2xvYmFsbGx5LiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlZmNvdW50ICAgICAgICAgOjogQSBjb3VudGVyIGluaXRpYWxpemVkIHRvfjEgYXQgdGhlIHRpbWUgYW4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9MaWJyYXJ5IHN0cnVjdHVyZSBpcyBjcmVhdGVkLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBARlRfUmVmZXJlbmNlX0xpYnJhcnkgaW5jcmVtZW50cyB0aGlzIGNvdW50ZXIsICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgYW5kIEBGVF9Eb25lX0xpYnJhcnkgb25seSBkZXN0cm95cyBhIGxpYnJhcnkgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSBjb3VudGVyIGlzfjEsIG90aGVyd2lzZSBpdCBzaW1wbHkgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRzIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfTGlicmFyeVJlY18KKyAgeworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnk7ICAgICAgICAgICAvKiBsaWJyYXJ5J3MgbWVtb3J5IG1hbmFnZXIgKi8KKworICAgIEZUX0ludCAgICAgICAgICAgICB2ZXJzaW9uX21ham9yOworICAgIEZUX0ludCAgICAgICAgICAgICB2ZXJzaW9uX21pbm9yOworICAgIEZUX0ludCAgICAgICAgICAgICB2ZXJzaW9uX3BhdGNoOworCisgICAgRlRfVUludCAgICAgICAgICAgIG51bV9tb2R1bGVzOworICAgIEZUX01vZHVsZSAgICAgICAgICBtb2R1bGVzW0ZUX01BWF9NT0RVTEVTXTsgIC8qIG1vZHVsZSBvYmplY3RzICAqLworCisgICAgRlRfTGlzdFJlYyAgICAgICAgIHJlbmRlcmVyczsgICAgICAgIC8qIGxpc3Qgb2YgcmVuZGVyZXJzICAgICAgICAqLworICAgIEZUX1JlbmRlcmVyICAgICAgICBjdXJfcmVuZGVyZXI7ICAgICAvKiBjdXJyZW50IG91dGxpbmUgcmVuZGVyZXIgKi8KKyAgICBGVF9Nb2R1bGUgICAgICAgICAgYXV0b19oaW50ZXI7CisKKyAgICBGVF9CeXRlKiAgICAgICAgICAgcmFzdGVyX3Bvb2w7ICAgICAgLyogc2Nhbi1saW5lIGNvbnZlcnNpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVuZGVyIHBvb2wgICAgICAgICAgKi8KKyAgICBGVF9VTG9uZyAgICAgICAgICAgcmFzdGVyX3Bvb2xfc2l6ZTsgLyogc2l6ZSBvZiByZW5kZXIgcG9vbCBpbiBieXRlcyAqLworCisgICAgRlRfRGVidWdIb29rX0Z1bmMgIGRlYnVnX2hvb2tzWzRdOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9SRU5ERVJJTkcKKyAgICBGVF9MY2RGaWx0ZXIgICAgICAgICAgICAgbGNkX2ZpbHRlcjsKKyAgICBGVF9JbnQgICAgICAgICAgICAgICAgICAgbGNkX2V4dHJhOyAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIHBpeGVscyAqLworICAgIEZUX0J5dGUgICAgICAgICAgICAgICAgICBsY2Rfd2VpZ2h0c1s3XTsgICAvKiBmaWx0ZXIgd2VpZ2h0cywgaWYgYW55ICovCisgICAgRlRfQml0bWFwX0xjZEZpbHRlckZ1bmMgIGxjZF9maWx0ZXJfZnVuYzsgIC8qIGZpbHRlcmluZyBjYWxsYmFjayAgICAgKi8KKyNlbmRpZgorCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKyAgICBGVF9QSUNfQ29udGFpbmVyICAgcGljX2NvbnRhaW5lcjsKKyNlbmRpZgorCisgICAgRlRfSW50ICAgICAgICAgICAgIHJlZmNvdW50OworCisgIH0gRlRfTGlicmFyeVJlYzsKKworCisgIEZUX0JBU0UoIEZUX1JlbmRlcmVyICkKKyAgRlRfTG9va3VwX1JlbmRlcmVyKCBGVF9MaWJyYXJ5ICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhfRm9ybWF0ICBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTGlzdE5vZGUqICAgICBub2RlICk7CisKKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwoIEZUX0xpYnJhcnkgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcl9Nb2RlICByZW5kZXJfbW9kZSApOworCisgIHR5cGVkZWYgY29uc3QgY2hhcioKKyAgKCpGVF9GYWNlX0dldFBvc3RzY3JpcHROYW1lRnVuYykoIEZUX0ZhY2UgIGZhY2UgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfRmFjZV9HZXRHbHlwaE5hbWVGdW5jKSggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgYnVmZmVyX21heCApOworCisgIHR5cGVkZWYgRlRfVUludAorICAoKkZUX0ZhY2VfR2V0R2x5cGhOYW1lSW5kZXhGdW5jKSggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmluZyogIGdseXBoX25hbWUgKTsKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fTk9fREVGQVVMVF9TWVNURU0KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfTWVtb3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDcmVhdGVzIGEgbmV3IG1lbW9yeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHBvaW50ZXIgdG8gdGhlIG5ldyBtZW1vcnkgb2JqZWN0LiAgMCBpbiBjYXNlIG9mIGVycm9yLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX01lbW9yeSApCisgIEZUX05ld19NZW1vcnkoIHZvaWQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RvbmVfTWVtb3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERpc2NhcmRzIG1lbW9yeSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSA6OiBBIGhhbmRsZSB0byB0aGUgbWVtb3J5IG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX0RvbmVfTWVtb3J5KCBGVF9NZW1vcnkgIG1lbW9yeSApOworCisjZW5kaWYgLyogIUZUX0NPTkZJR19PUFRJT05fTk9fREVGQVVMVF9TWVNURU0gKi8KKworCisgIC8qIERlZmluZSBkZWZhdWx0IHJhc3RlcidzIGludGVyZmFjZS4gIFRoZSBkZWZhdWx0IHJhc3RlciBpcyBsb2NhdGVkIGluICAqLworICAvKiBgc3JjL2Jhc2UvZnRyYXN0ZXIuYycuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIENsaWVudCBhcHBsaWNhdGlvbnMgY2FuIHJlZ2lzdGVyIG5ldyByYXN0ZXJzIHRocm91Z2ggdGhlICAgICAgICAgICAgICAqLworICAvKiBGVF9TZXRfUmFzdGVyKCkgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmbmRlZiBGVF9OT19ERUZBVUxUX1JBU1RFUgorICBGVF9FWFBPUlRfVkFSKCBGVF9SYXN0ZXJfRnVuY3MgKSAgZnRfZGVmYXVsdF9yYXN0ZXI7CisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgUCBJIEMgICBTIFUgUCBQIE8gUiBUICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIFBJQyBzdXBwb3J0IG1hY3JvcyBmb3IgZnRpbWFnZS5oICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUZJTkVfT1VUTElORV9GVU5DUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2VkIHRvIGluaXRpYWxpemUgYW4gaW5zdGFuY2Ugb2YgRlRfT3V0bGluZV9GdW5jcyBzdHJ1Y3QuICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBkZWZpbmVkIGFuIGluaXQgZnVudGlvbiB3aWxsIG5lZWQgdG8gICovCisgIC8qICAgIGJlIGNhbGxlZCB3aXRoIGEgcHJlLWFsbG9jYXRlZCBzdHJ1Y3R1cmUgdG8gYmUgZmlsbGVkLiAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIG5vdCBkZWZpbmVkIHRoZSBzdHJ1Y3Qgd2lsbCBiZSAgICAgICAgKi8KKyAgLyogICAgYWxsb2NhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUgKG9yIHRoZSBzY29wZSB3aGVyZSB0aGUgbWFjcm8gICAgICAgICovCisgIC8qICAgIGlzIHVzZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfT1VUTElORV9GVU5DUyggICAgICAgICAgIFwKKyAgICAgICAgICBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbW92ZV90b18sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxpbmVfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjb25pY190b18sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY3ViaWNfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNoaWZ0XywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkZWx0YV8gKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCAgRlRfT3V0bGluZV9GdW5jcyBjbGFzc18gPSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBtb3ZlX3RvXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbGluZV90b18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNvbmljX3RvXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjdWJpY190b18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2hpZnRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRlbHRhXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUZJTkVfT1VUTElORV9GVU5DUyggICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBtb3ZlX3RvXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxpbmVfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY29uaWNfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjdWJpY190b18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNoaWZ0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZGVsdGFfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBJbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX091dGxpbmVfRnVuY3MqICBjbGF6eiApICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bW92ZV90byAgPSBtb3ZlX3RvXzsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5saW5lX3RvICA9IGxpbmVfdG9fOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmNvbmljX3RvID0gY29uaWNfdG9fOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Y3ViaWNfdG8gPSBjdWJpY190b187ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5zaGlmdCAgICA9IHNoaWZ0XzsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmRlbHRhICAgID0gZGVsdGFfOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUZJTkVfUkFTVEVSX0ZVTkNTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2VkIHRvIGluaXRpYWxpemUgYW4gaW5zdGFuY2Ugb2YgRlRfUmFzdGVyX0Z1bmNzIHN0cnVjdC4gICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBkZWZpbmVkIGFuIGluaXQgZnVudGlvbiB3aWxsIG5lZWQgdG8gICovCisgIC8qICAgIGJlIGNhbGxlZCB3aXRoIGEgcHJlLWFsbG9jYXRlZCBzdHJ1Y3R1cmUgdG8gYmUgZmlsbGVkLiAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIG5vdCBkZWZpbmVkIHRoZSBzdHJ1Y3Qgd2lsbCBiZSAgICAgICAgKi8KKyAgLyogICAgYWxsb2NhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUgKG9yIHRoZSBzY29wZSB3aGVyZSB0aGUgbWFjcm8gICAgICAgICovCisgIC8qICAgIGlzIHVzZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfUkFTVEVSX0ZVTkNTKCAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnbHlwaF9mb3JtYXRfLCAgICAgICAgICAgXAorICAgICAgICAgIHJhc3Rlcl9uZXdfLCAgICAgICAgICAgICBcCisgICAgICAgICAgcmFzdGVyX3Jlc2V0XywgICAgICAgICAgIFwKKyAgICAgICAgICByYXN0ZXJfc2V0X21vZGVfLCAgICAgICAgXAorICAgICAgICAgIHJhc3Rlcl9yZW5kZXJfLCAgICAgICAgICBcCisgICAgICAgICAgcmFzdGVyX2RvbmVfICkgICAgICAgICAgIFwKKyAgY29uc3QgRlRfUmFzdGVyX0Z1bmNzICBjbGFzc18gPSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2x5cGhfZm9ybWF0XywgICAgICAgICAgICAgICAgIFwKKyAgICByYXN0ZXJfbmV3XywgICAgICAgICAgICAgICAgICAgXAorICAgIHJhc3Rlcl9yZXNldF8sICAgICAgICAgICAgICAgICBcCisgICAgcmFzdGVyX3NldF9tb2RlXywgICAgICAgICAgICAgIFwKKyAgICByYXN0ZXJfcmVuZGVyXywgICAgICAgICAgICAgICAgXAorICAgIHJhc3Rlcl9kb25lXyAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1JBU1RFUl9GVU5DUyggICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdseXBoX2Zvcm1hdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByYXN0ZXJfbmV3XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmFzdGVyX3Jlc2V0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHJhc3Rlcl9zZXRfbW9kZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByYXN0ZXJfcmVuZGVyXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmFzdGVyX2RvbmVfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9SYXN0ZXJfRnVuY3MqICBjbGF6eiApICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nbHlwaF9mb3JtYXQgICAgPSBnbHlwaF9mb3JtYXRfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cmFzdGVyX25ldyAgICAgID0gcmFzdGVyX25ld187ICAgICAgICAgICAgICBcCisgICAgY2xhenotPnJhc3Rlcl9yZXNldCAgICA9IHJhc3Rlcl9yZXNldF87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5yYXN0ZXJfc2V0X21vZGUgPSByYXN0ZXJfc2V0X21vZGVfOyAgICAgICAgIFwKKyAgICBjbGF6ei0+cmFzdGVyX3JlbmRlciAgID0gcmFzdGVyX3JlbmRlcl87ICAgICAgICAgICBcCisgICAgY2xhenotPnJhc3Rlcl9kb25lICAgICA9IHJhc3Rlcl9kb25lXzsgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisKKyAgLyogUElDIHN1cHBvcnQgbWFjcm9zIGZvciBmdHJlbmRlci5oICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUZJTkVfR0xZUEggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2VkIHRvIGluaXRpYWxpemUgYW4gaW5zdGFuY2Ugb2YgRlRfR2x5cGhfQ2xhc3Mgc3RydWN0LiAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBkZWZpbmVkIGFuIGluaXQgZnVudGlvbiB3aWxsIG5lZWQgdG8gICovCisgIC8qICAgIGJlIGNhbGxlZCB3aXRoIGEgcHJlLWFsbG9jYXRlZCBzdGN0dXJlIHRvIGJlIGZpbGxlZC4gICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIG5vdCBkZWZpbmVkIHRoZSBzdHJ1Y3Qgd2lsbCBiZSAgICAgICAgKi8KKyAgLyogICAgYWxsb2NhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUgKG9yIHRoZSBzY29wZSB3aGVyZSB0aGUgbWFjcm8gICAgICAgICovCisgIC8qICAgIGlzIHVzZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfR0xZUEgoICAgICAgICAgIFwKKyAgICAgICAgICBjbGFzc18sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZvcm1hdF8sICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0XywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNvcHlfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB0cmFuc2Zvcm1fLCAgICAgICAgICAgICBcCisgICAgICAgICAgYmJveF8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHByZXBhcmVfICkgICAgICAgICAgICAgIFwKKyAgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGICAgICAgICAgICBcCisgIGNvbnN0IEZUX0dseXBoX0NsYXNzICBjbGFzc18gPSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzaXplXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZm9ybWF0XywgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29weV8sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRyYW5zZm9ybV8sICAgICAgICAgICAgICAgICAgIFwKKyAgICBiYm94XywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcHJlcGFyZV8gICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9HTFlQSCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZm9ybWF0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY29weV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdHJhbnNmb3JtXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgYmJveF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcHJlcGFyZV8gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfR2x5cGhfQ2xhc3MqICBjbGF6eiApICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdseXBoX3NpemUgICAgICA9IHNpemVfOyAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdseXBoX2Zvcm1hdCAgICA9IGZvcm1hdF87ICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdseXBoX2luaXQgICAgICA9IGluaXRfOyAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdseXBoX2RvbmUgICAgICA9IGRvbmVfOyAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdseXBoX2NvcHkgICAgICA9IGNvcHlfOyAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdseXBoX3RyYW5zZm9ybSA9IHRyYW5zZm9ybV87ICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdseXBoX2Jib3ggICAgICA9IGJib3hfOyAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdseXBoX3ByZXBhcmUgICA9IHByZXBhcmVfOyAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUNMQVJFX1JFTkRFUkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2VkIHRvIGNyZWF0ZSBhIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgYSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmVuZGVyZXJfQ2xhc3Mgc3RydWN0IGluc3RhbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX1JFTkRFUkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBpbml0aWFsaXplIGFuIGluc3RhbmNlIG9mIEZUX1JlbmRlcmVyX0NsYXNzIHN0cnVjdC4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIGRlZmluZWQgYSBgY3JlYXRlJyBmdW50aW9uIHdpbGwgbmVlZCAgKi8KKyAgLyogICAgdG8gYmUgY2FsbGVkIHdpdGggYSBwb2ludGVyIHdoZXJlIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlIGlzICAgICAgICovCisgIC8qICAgIHJldHVybmVkLiAgQW5kIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhIGBkZXN0cm95JyBmdW5jdGlvbiAgICAqLworICAvKiAgICBuZWVkcyB0byBiZSBjYWxsZWQgdG8gcmVsZWFzZSB0aGF0IGFsbG9jYXRpb24uICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYGZjaW5pdC5jJyAoZnRfY3JlYXRlX2RlZmF1bHRfbW9kdWxlX2NsYXNzZXMpIGFscmVhZHkgY29udGFpbnMgICAgICovCisgIC8qICAgIGEgbWVjaGFuaXNtIHRvIGNhbGwgdGhlc2UgZnVuY3Rpb25zIGZvciB0aGUgZGVmYXVsdCBtb2R1bGVzICAgICAgICAqLworICAvKiAgICBkZXNjcmliZWQgaW4gYGZ0bW9kdWxlLmgnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGljZSB0aGF0IHRoZSBjcmVhdGVkIGBjcmVhdGUnIGFuZCBgZGVzdHJveScgZnVuY3Rpb25zIGNhbGwgICAgICAqLworICAvKiAgICBgcGljX2luaXQnIGFuZCBgcGljX2ZyZWUnIHRvIGFsbG93IHlvdSB0byBtYW51YWxseSBhbGxvY2F0ZSBhbmQgICAgKi8KKyAgLyogICAgaW5pdGlhbGl6ZSBhbnkgYWRkaXRpb25hbCBnbG9iYWwgZGF0YSwgbGlrZSBhIG1vZHVsZSBzcGVjaWZpYyAgICAgICovCisgIC8qICAgIGludGVyZmFjZSwgYW5kIHB1dCB0aGVtIGluIHRoZSBnbG9iYWwgcGljIGNvbnRhaW5lciBkZWZpbmVkIGluICAgICAqLworICAvKiAgICBgZnRwaWMuaCcuICBJZiB5b3UgZG9uJ3QgbmVlZCB0aGVtIGp1c3QgaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMgYXMgKi8KKyAgLyogICAgZW1wdHkgdG8gcmVzb2x2ZSB0aGUgbGluayBlcnJvci4gIEFsc28gdGhlIGBwaWNfaW5pdCcgYW5kICAgICAgICAgICovCisgIC8qICAgIGBwaWNfZnJlZScgZnVuY3Rpb25zIHNob3VsZCBiZSBkZWNsYXJlZCBpbiBgcGljLmgnLCB0byBiZSByZWZlcnJlZCAqLworICAvKiAgICBieSB0aGUgcmVuZGVyZXIgZGVmaW5pdGlvbiBjYWxsaW5nIGBGVF9ERUZJTkVfUkVOREVSRVInIGluIHRoZSAgICAgKi8KKyAgLyogICAgZm9sbG93aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIG5vdCBkZWZpbmVkIHRoZSBzdHJ1Y3Qgd2lsbCBiZSAgICAgICAgKi8KKyAgLyogICAgYWxsb2NhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUgKG9yIHRoZSBzY29wZSB3aGVyZSB0aGUgbWFjcm8gICAgICAgICovCisgIC8qICAgIGlzIHVzZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUNMQVJFX1JFTkRFUkVSKCBjbGFzc18gKSAgICAgICAgICAgICAgIFwKKyAgRlRfRVhQT1JUX1ZBUiggY29uc3QgRlRfUmVuZGVyZXJfQ2xhc3MgKSBjbGFzc187CisKKyNkZWZpbmUgRlRfREVGSU5FX1JFTkRFUkVSKCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmbGFnc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBuYW1lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZXF1aXJlc18sICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnbHlwaF9mb3JtYXRfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZW5kZXJfZ2x5cGhfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB0cmFuc2Zvcm1fZ2x5cGhfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfZ2x5cGhfY2JveF8sICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzZXRfbW9kZV8sICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByYXN0ZXJfY2xhc3NfICkgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY29uc3QgRlRfUmVuZGVyZXJfQ2xhc3MgIGNsYXNzXyA9ICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9ERUZJTkVfUk9PVF9NT0RVTEUoIGZsYWdzXywgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25fLCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzXywgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZV8sICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVfLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9pbnRlcmZhY2VfICkgIFwKKyAgICBnbHlwaF9mb3JtYXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZW5kZXJfZ2x5cGhfLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0cmFuc2Zvcm1fZ2x5cGhfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfZ2x5cGhfY2JveF8sICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzZXRfbW9kZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByYXN0ZXJfY2xhc3NfICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUNMQVJFX1JFTkRFUkVSKCBjbGFzc18gKSAgRlRfREVDTEFSRV9NT0RVTEUoIGNsYXNzXyApCisKKyNkZWZpbmUgRlRfREVGSU5FX1JFTkRFUkVSKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZmxhZ3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIG5hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdmVyc2lvbl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZXF1aXJlc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9pbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2x5cGhfZm9ybWF0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZW5kZXJfZ2x5cGhfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHRyYW5zZm9ybV9nbHlwaF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2dseXBoX2Nib3hfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzZXRfbW9kZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHJhc3Rlcl9jbGFzc18gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRGVzdHJveV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICBsaWJyYXJ5LCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01vZHVsZV9DbGFzcyogIGNsYXp6ICkgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9SZW5kZXJlcl9DbGFzcyogIHJjbGF6eiA9IChGVF9SZW5kZXJlcl9DbGFzcyopY2xheno7ICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXNzXyAjIyBfcGljX2ZyZWUoIGxpYnJhcnkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCByY2xhenogKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0ZSRUUoIHJjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NyZWF0ZV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgbGlicmFyeSwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01vZHVsZV9DbGFzcyoqICBvdXRwdXRfY2xhc3MgKSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfUmVuZGVyZXJfQ2xhc3MqICBjbGF6eiA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9FcnJvciAgICAgICAgICAgIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggRlRfQUxMT0MoIGNsYXp6LCBzaXplb2YgKCAqY2xhenogKSApICkgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yID0gY2xhc3NfICMjIF9waWNfaW5pdCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBlcnJvciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggY2xhenogKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfREVGSU5FX1JPT1RfTU9EVUxFKCBmbGFnc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2ludGVyZmFjZV8gKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2x5cGhfZm9ybWF0ICAgID0gZ2x5cGhfZm9ybWF0XzsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnJlbmRlcl9nbHlwaCAgICA9IHJlbmRlcl9nbHlwaF87ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+dHJhbnNmb3JtX2dseXBoID0gdHJhbnNmb3JtX2dseXBoXzsgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfZ2x5cGhfY2JveCAgPSBnZXRfZ2x5cGhfY2JveF87ICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnNldF9tb2RlICAgICAgICA9IHNldF9tb2RlXzsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5yYXN0ZXJfY2xhc3MgICAgPSByYXN0ZXJfY2xhc3NfOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqb3V0cHV0X2NsYXNzID0gKEZUX01vZHVsZV9DbGFzcyopY2xheno7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIEZUX0Vycl9PazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworCisgIC8qIFBJQyBzdXBwb3J0IG1hY3JvcyBmb3IgZnRtb2RhcGkuaCAqKi8KKworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Nb2R1bGVfQ3JlYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGZ1bmN0aW9uIHVzZWQgdG8gY3JlYXRlIChhbGxvY2F0ZSkgYSBuZXcgbW9kdWxlIGNsYXNzIG9iamVjdC4gICAgKi8KKyAgLyogICAgVGhlIG9iamVjdCdzIG1lbWJlcnMgYXJlIGluaXRpYWxpemVkLCBidXQgdGhlIG1vZHVsZSBpdHNlbGYgaXMgICAgICovCisgIC8qICAgIG5vdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgbWVtb3J5IG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRwdXRfY2xhc3MgOjogSW5pdGlhbGl6ZWQgd2l0aCB0aGUgbmV3bHkgYWxsb2NhdGVkIGNsYXNzLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9Nb2R1bGVfQ3JlYXRvcikoIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9Nb2R1bGVfQ2xhc3MqKiAgb3V0cHV0X2NsYXNzICk7CisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTW9kdWxlX0Rlc3Ryb3llciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIGRlc3Ryb3kgKGRlYWxsb2NhdGUpIGEgbW9kdWxlIGNsYXNzIG9iamVjdC4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5IDo6IEEgaGFuZGxlIHRvIHRoZSBtZW1vcnkgbWFuYWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNsYXp6ICA6OiBNb2R1bGUgY2xhc3MgdG8gZGVzdHJveS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfTW9kdWxlX0Rlc3Ryb3llcikoIEZUX01lbW9yeSAgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlX0NsYXNzKiAgY2xhenogKTsKKworI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUNMQVJFX01PRFVMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2VkIHRvIGNyZWF0ZSBhIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgYSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTW9kdWxlX0NsYXNzIHN0cnVjdCBpbnN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX01PRFVMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBpbml0aWFsaXplIGFuIGluc3RhbmNlIG9mIGFuIEZUX01vZHVsZV9DbGFzcyBzdHJ1Y3QuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIGRlZmluZWQgYSBgY3JlYXRlJyBmdW50aW9uIG5lZWRzIHRvICAgKi8KKyAgLyogICAgYmUgY2FsbGVkIHdpdGggYSBwb2ludGVyIHdoZXJlIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlIGlzICAgICAgICAgICovCisgIC8qICAgIHJldHVybmVkLiAgQW5kIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhIGBkZXN0cm95JyBmdW5jdGlvbiAgICAqLworICAvKiAgICBuZWVkcyB0byBiZSBjYWxsZWQgdG8gcmVsZWFzZSB0aGF0IGFsbG9jYXRpb24uICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYGZjaW5pdC5jJyAoZnRfY3JlYXRlX2RlZmF1bHRfbW9kdWxlX2NsYXNzZXMpIGFscmVhZHkgY29udGFpbnMgICAgICovCisgIC8qICAgIGEgbWVjaGFuaXNtIHRvIGNhbGwgdGhlc2UgZnVuY3Rpb25zIGZvciB0aGUgZGVmYXVsdCBtb2R1bGVzICAgICAgICAqLworICAvKiAgICBkZXNjcmliZWQgaW4gYGZ0bW9kdWxlLmgnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGljZSB0aGF0IHRoZSBjcmVhdGVkIGBjcmVhdGUnIGFuZCBgZGVzdHJveScgZnVuY3Rpb25zIGNhbGwgICAgICAqLworICAvKiAgICBgcGljX2luaXQnIGFuZCBgcGljX2ZyZWUnIHRvIGFsbG93IHlvdSB0byBtYW51YWxseSBhbGxvY2F0ZSBhbmQgICAgKi8KKyAgLyogICAgaW5pdGlhbGl6ZSBhbnkgYWRkaXRpb25hbCBnbG9iYWwgZGF0YSwgbGlrZSBhIG1vZHVsZSBzcGVjaWZpYyAgICAgICovCisgIC8qICAgIGludGVyZmFjZSwgYW5kIHB1dCB0aGVtIGluIHRoZSBnbG9iYWwgcGljIGNvbnRhaW5lciBkZWZpbmVkIGluICAgICAqLworICAvKiAgICBgZnRwaWMuaCcuICBJZiB5b3UgZG9uJ3QgbmVlZCB0aGVtIGp1c3QgaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMgYXMgKi8KKyAgLyogICAgZW1wdHkgdG8gcmVzb2x2ZSB0aGUgbGluayBlcnJvci4gIEFsc28gdGhlIGBwaWNfaW5pdCcgYW5kICAgICAgICAgICovCisgIC8qICAgIGBwaWNfZnJlZScgZnVuY3Rpb25zIHNob3VsZCBiZSBkZWNsYXJlZCBpbiBgcGljLmgnLCB0byBiZSByZWZlcnJlZCAqLworICAvKiAgICBieSB0aGUgbW9kdWxlIGRlZmluaXRpb24gY2FsbGluZyBgRlRfREVGSU5FX01PRFVMRScgaW4gdGhlICAgICAgICAgKi8KKyAgLyogICAgZm9sbG93aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIG5vdCBkZWZpbmVkIHRoZSBzdHJ1Y3Qgd2lsbCBiZSAgICAgICAgKi8KKyAgLyogICAgYWxsb2NhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUgKG9yIHRoZSBzY29wZSB3aGVyZSB0aGUgbWFjcm8gICAgICAgICovCisgIC8qICAgIGlzIHVzZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE1hY3JvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RFRklORV9ST09UX01PRFVMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzZWQgdG8gaW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBvZiBhbiBGVF9Nb2R1bGVfQ2xhc3Mgc3RydWN0IGluc2lkZSAqLworICAvKiAgICBhbm90aGVyIHN0cnVjdCB0aGF0IGNvbnRhaW5zIGl0IG9yIGluIGEgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyAgKi8KKyAgLyogICAgdGhhdCBjb250YWluaW5nIHN0cnVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFQ0xBUkVfTU9EVUxFKCBjbGFzc18gKSAgXAorICBGVF9DQUxMQkFDS19UQUJMRSAgICAgICAgICAgICAgICAgIFwKKyAgY29uc3QgRlRfTW9kdWxlX0NsYXNzICBjbGFzc187CisKKyNkZWZpbmUgRlRfREVGSU5FX1JPT1RfTU9EVUxFKCAgXAorICAgICAgICAgIGZsYWdzXywgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBuYW1lXywgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHZlcnNpb25fLCAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgIFwKKyAgICAgICAgICBpbnRlcmZhY2VfLCAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfaW50ZXJmYWNlXyApICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZmxhZ3NfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzaXplXywgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbmFtZV8sICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2ZXJzaW9uXywgICAgICAgICAgICAgICAgICAgXAorICAgIHJlcXVpcmVzXywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9pbnRlcmZhY2VfLCAgICAgICAgICAgICBcCisgIH0sCisKKyNkZWZpbmUgRlRfREVGSU5FX01PRFVMRSggICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZsYWdzXywgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzaXplXywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbmFtZV8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHZlcnNpb25fLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZXF1aXJlc18sICAgICAgICAgICAgICBcCisgICAgICAgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkb25lXywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8gKSAgICAgICAgXAorICBGVF9DQUxMQkFDS19UQUJMRV9ERUYgICAgICAgICAgIFwKKyAgY29uc3QgRlRfTW9kdWxlX0NsYXNzIGNsYXNzXyA9ICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZsYWdzXywgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzaXplXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG5hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2ZXJzaW9uXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2ludGVyZmFjZV8sICAgICAgICAgICAgICAgXAorICB9OworCisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVDTEFSRV9NT0RVTEUoIGNsYXNzXyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ3JlYXRlX0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICBsaWJyYXJ5LCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01vZHVsZV9DbGFzcyoqICBvdXRwdXRfY2xhc3MgKTsgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRGVzdHJveV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICBsaWJyYXJ5LCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Nb2R1bGVfQ2xhc3MqICBjbGF6eiApOworCisjZGVmaW5lIEZUX0RFRklORV9ST09UX01PRFVMRSggICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZsYWdzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHZlcnNpb25fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZXF1aXJlc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8gKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5yb290Lm1vZHVsZV9mbGFncyAgICAgPSBmbGFnc187ICAgICAgICAgIFwKKyAgICBjbGF6ei0+cm9vdC5tb2R1bGVfc2l6ZSAgICAgID0gc2l6ZV87ICAgICAgICAgICBcCisgICAgY2xhenotPnJvb3QubW9kdWxlX25hbWUgICAgICA9IG5hbWVfOyAgICAgICAgICAgXAorICAgIGNsYXp6LT5yb290Lm1vZHVsZV92ZXJzaW9uICAgPSB2ZXJzaW9uXzsgICAgICAgIFwKKyAgICBjbGF6ei0+cm9vdC5tb2R1bGVfcmVxdWlyZXMgID0gcmVxdWlyZXNfOyAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5yb290Lm1vZHVsZV9pbnRlcmZhY2UgPSBpbnRlcmZhY2VfOyAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnJvb3QubW9kdWxlX2luaXQgICAgICA9IGluaXRfOyAgICAgICAgICAgXAorICAgIGNsYXp6LT5yb290Lm1vZHVsZV9kb25lICAgICAgPSBkb25lXzsgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cm9vdC5nZXRfaW50ZXJmYWNlICAgID0gZ2V0X2ludGVyZmFjZV87CisKKyNkZWZpbmUgRlRfREVGSU5FX01PRFVMRSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZmxhZ3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIG5hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdmVyc2lvbl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZXF1aXJlc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9pbnRlcmZhY2VfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRGVzdHJveV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICBsaWJyYXJ5LCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01vZHVsZV9DbGFzcyogIGNsYXp6ICkgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGFzc18gIyMgX3BpY19mcmVlKCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggY2xhenogKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCBjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9DcmVhdGVfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgIGxpYnJhcnksICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Nb2R1bGVfQ2xhc3MqKiAgb3V0cHV0X2NsYXNzICkgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTW9kdWxlX0NsYXNzKiAgY2xhenogID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9FcnJvciAgICAgICAgICBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIEZUX0FMTE9DKCBjbGF6eiwgc2l6ZW9mICggKmNsYXp6ICkgKSApICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZXJyb3IgPSBjbGFzc18gIyMgX3BpY19pbml0KCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGVycm9yICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCBjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bW9kdWxlX2ZsYWdzICAgICA9IGZsYWdzXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5tb2R1bGVfc2l6ZSAgICAgID0gc2l6ZV87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPm1vZHVsZV9uYW1lICAgICAgPSBuYW1lXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bW9kdWxlX3ZlcnNpb24gICA9IHZlcnNpb25fOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5tb2R1bGVfcmVxdWlyZXMgID0gcmVxdWlyZXNfOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bW9kdWxlX2ludGVyZmFjZSA9IGludGVyZmFjZV87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPm1vZHVsZV9pbml0ICAgICAgPSBpbml0XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bW9kdWxlX2RvbmUgICAgICA9IGRvbmVfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfaW50ZXJmYWNlICAgID0gZ2V0X2ludGVyZmFjZV87ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqb3V0cHV0X2NsYXNzID0gY2xheno7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIEZUX0Vycl9PazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUT0JKU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRwaWMuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRwaWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODVjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9mdHBpYy5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0cGljLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSBzZXJ2aWNlcyAoZGVjbGFyYXRpb24pLiAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgTW9kdWxlcyB0aGF0IG9yZGluYXJpbHkgaGF2ZSBjb25zdCBnbG9iYWwgZGF0YSB0aGF0IG5lZWQgYWRkcmVzcyAgICAgKi8KKyAgLyogIGNhbiBpbnN0ZWFkIGRlZmluZSBwb2ludGVycyBoZXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRQSUNfSF9fCisjZGVmaW5lIF9fRlRQSUNfSF9fCisKKworRlRfQkVHSU5fSEVBREVSCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisgIHR5cGVkZWYgc3RydWN0ICBGVF9QSUNfQ29udGFpbmVyXworICB7CisgICAgLyogcGljIGNvbnRhaW5lcnMgZm9yIGJhc2UgKi8KKyAgICB2b2lkKiAgYmFzZTsKKworICAgIC8qIHBpYyBjb250YWluZXJzIGZvciBtb2R1bGVzICovCisgICAgdm9pZCogIGF1dG9maXQ7CisgICAgdm9pZCogIGNmZjsKKyAgICB2b2lkKiAgcHNoaW50ZXI7CisgICAgdm9pZCogIHBzbmFtZXM7CisgICAgdm9pZCogIHJhc3RlcjsKKyAgICB2b2lkKiAgc2ZudDsKKyAgICB2b2lkKiAgc21vb3RoOworICAgIHZvaWQqICB0cnVldHlwZTsKKworICB9IEZUX1BJQ19Db250YWluZXI7CisKKworICAvKiBJbml0aWFsaXplIHRoZSB2YXJpb3VzIGZ1bmN0aW9uIHRhYmxlcywgc3RydWN0cywgZXRjLiAqLworICAvKiBzdG9yZWQgaW4gdGhlIGNvbnRhaW5lci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIGZ0X3BpY19jb250YWluZXJfaW5pdCggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisKKyAgLyogRGVzdHJveSB0aGUgY29udGVudHMgb2YgdGhlIGNvbnRhaW5lci4gKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIGZ0X3BpY19jb250YWluZXJfZGVzdHJveSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRQSUNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cmZvcmsuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTEyNGIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cmZvcmsuaApAQCAtMCwwICsxLDI1OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRyZm9yay5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEVtYmVkZGVkIHJlc291cmNlIGZvcmtzIGFjY2Vzc29yIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA0LCAyMDA2LCAyMDA3LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBNYXNhdGFrZSBZQU1BVE8gYW5kIFJlZGhhdCBLLksuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIERldmVsb3BtZW50IG9mIHRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBzdXBwb3J0IG9mICAgICAgICAgICAgICAgICAgICAgICovCisvKiBJbmZvcm1hdGlvbi10ZWNobm9sb2d5IFByb21vdGlvbiBBZ2VuY3ksIEphcGFuLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRSRk9SS19IX18KKyNkZWZpbmUgX19GVFJGT1JLX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZ0b2Jqcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyogTnVtYmVyIG9mIGd1ZXNzaW5nIHJ1bGVzIHN1cHBvcnRlZCBpbiBgRlRfUmFjY2Vzc19HdWVzcycuICAgICAgICAgICAgKi8KKyAgLyogRG9uJ3QgZm9yZ2V0IHRvIGluY3JlbWVudCB0aGUgbnVtYmVyIGlmIHlvdSBhZGQgYSBuZXcgZ3Vlc3NpbmcgcnVsZS4gKi8KKyNkZWZpbmUgRlRfUkFDQ0VTU19OX1JVTEVTICA5CisKKworICAvKiBBIHN0cnVjdHVyZSB0byBkZXNjcmliZSBhIHJlZmVyZW5jZSBpbiBhIHJlc291cmNlIGJ5IGl0cyByZXNvdXJjZSBJRCAqLworICAvKiBhbmQgaW50ZXJuYWwgb2Zmc2V0LiAgVGhlIGBQT1NUJyByZXNvdXJjZSBleHBlY3RzIHRvIGJlIGNvbmNhdGVuYXRlZCAqLworICAvKiBieSB0aGUgb3JkZXIgb2YgcmVzb3VyY2UgSURzIGluc3RlYWQgb2YgaXRzIGFwcGVhcmFuY2UgaW4gdGhlIGZpbGUuICAqLworCisgIHR5cGVkZWYgc3RydWN0ICBGVF9SRm9ya19SZWZfCisgIHsKKyAgICBGVF9VU2hvcnQgIHJlc19pZDsKKyAgICBGVF9VTG9uZyAgIG9mZnNldDsKKworICB9IEZUX1JGb3JrX1JlZjsKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fR1VFU1NJTkdfRU1CRURERURfUkZPUksKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKmZ0X3JhY2Nlc3NfZ3Vlc3NfZnVuYykoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgKmJhc2VfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAqKnJlc3VsdF9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqcmVzdWx0X29mZnNldCApOworCisgIHR5cGVkZWYgZW51bSAgRlRfUkZvcmtfUnVsZV8geworICAgIEZUX1JGb3JrX1J1bGVfaW52YWxpZCA9IC0yLAorICAgIEZUX1JGb3JrX1J1bGVfdWtub3duLCAvKiAtMSAqLworICAgIEZUX1JGb3JrX1J1bGVfYXBwbGVfZG91YmxlLAorICAgIEZUX1JGb3JrX1J1bGVfYXBwbGVfc2luZ2xlLAorICAgIEZUX1JGb3JrX1J1bGVfZGFyd2luX3Vmc19leHBvcnQsCisgICAgRlRfUkZvcmtfUnVsZV9kYXJ3aW5fbmV3dmZzLAorICAgIEZUX1JGb3JrX1J1bGVfZGFyd2luX2hmc3BsdXMsCisgICAgRlRfUkZvcmtfUnVsZV92ZmF0LAorICAgIEZUX1JGb3JrX1J1bGVfbGludXhfY2FwLAorICAgIEZUX1JGb3JrX1J1bGVfbGludXhfZG91YmxlLAorICAgIEZUX1JGb3JrX1J1bGVfbGludXhfbmV0YXRhbGsKKyAgfSBGVF9SRm9ya19SdWxlOworCisgIC8qIEZvciBmYXN0IHRyYW5zbGF0aW9uIGJldHdlZW4gcnVsZSBpbmRleCBhbmQgcnVsZSB0eXBlLAorICAgKiB0aGUgbWFjcm9zIEZUX1JGT1JLX3h4eCBzaG91bGQgYmUga2VwdCBjb25zaXN0ZW50IHdpdGgKKyAgICogdGhlIHJhY2Nlc3NfZ3Vlc3NfZnVuY3MgdGFibGUKKyAgICovCisgIHR5cGVkZWYgc3RydWN0IGZ0X3JhY2Nlc3NfZ3Vlc3NfcmVjXyB7CisgICAgZnRfcmFjY2Vzc19ndWVzc19mdW5jICBmdW5jOworICAgIEZUX1JGb3JrX1J1bGUgICAgICAgICAgdHlwZTsKKyAgfSBmdF9yYWNjZXNzX2d1ZXNzX3JlYzsKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisgIC8qIHRoaXMgYXJyYXkgaXMgYSBzdG9yYWdlIGluIG5vbi1QSUMgbW9kZSwgc28gOyBpcyBuZWVkZWQgaW4gRU5EICovCisjZGVmaW5lIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfQkVHSU4oIG5hbWUsIHR5cGUgKSAgXAorICAgICAgICAgIGNvbnN0IHR5cGUgbmFtZVtdID0geworI2RlZmluZSBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKCBmdW5jX3N1ZmZpeCwgdHlwZV9zdWZmaXggKSAgXAorICAgICAgICAgIHsgcmFjY2Vzc19ndWVzc18gIyMgZnVuY19zdWZmaXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfUkZvcmtfUnVsZV8gIyMgdHlwZV9zdWZmaXggfSwKKyNkZWZpbmUgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTkQgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAgLyogdGhpcyBhcnJheSBpcyBhIGZ1bmN0aW9uIGluIFBJQyBtb2RlLCBzbyBubyA7IGlzIG5lZWRlZCBpbiBFTkQgKi8KKyNkZWZpbmUgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9CRUdJTiggbmFtZSwgdHlwZSApICBcCisgICAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0luaXRfICMjIG5hbWUoIHR5cGUqICBzdG9yYWdlICkgICAgICAgICAgIFwKKyAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB0eXBlKiAgbG9jYWwgPSBzdG9yYWdlOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQgIGkgPSAwOworI2RlZmluZSBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKCBmdW5jX3N1ZmZpeCwgdHlwZV9zdWZmaXggKSAgXAorICAgICAgICAgIGxvY2FsW2ldLmZ1bmMgPSByYWNjZXNzX2d1ZXNzXyAjIyBmdW5jX3N1ZmZpeDsgICAgICAgICAgICAgXAorICAgICAgICAgIGxvY2FsW2ldLnR5cGUgPSBGVF9SRm9ya19SdWxlXyAjIyB0eXBlX3N1ZmZpeDsgICAgICAgICAgICAgXAorICAgICAgICAgIGkrKzsKKyNkZWZpbmUgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTkQgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX0dVRVNTSU5HX0VNQkVEREVEX1JGT1JLICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYWNjZXNzX0d1ZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHdWVzcyBhIGZpbGUgbmFtZSBhbmQgb2Zmc2V0IHdoZXJlIHRoZSBhY3R1YWwgcmVzb3VyY2UgZm9yayBpcyAgICAgKi8KKyAgLyogICAgc3RvcmVkLiAgVGhlIG1hY3JvIEZUX1JBQ0NFU1NfTl9SVUxFUyBob2xkcyB0aGUgbnVtYmVyIG9mICAgICAgICAgICovCisgIC8qICAgIGd1ZXNzaW5nIHJ1bGVzOyAgdGhlIGd1ZXNzZWQgcmVzdWx0IGZvciB0aGUgTnRoIHJ1bGUgaXMgICAgICAgICAgICAqLworICAvKiAgICByZXByZXNlbnRlZCBhcyBhIHRyaXBsZXQ6IGEgbmV3IGZpbGUgbmFtZSAobmV3X25hbWVzW05dKSwgYSBmaWxlICAgKi8KKyAgLyogICAgb2Zmc2V0IChvZmZzZXRzW05dKSwgYW5kIGFuIGVycm9yIGNvZGUgKGVycm9yc1tOXSkuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSBGcmVlVHlwZSBsaWJyYXJ5IGluc3RhbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSBmaWxlIHN0cmVhbSBjb250YWluaW5nIHRoZSByZXNvdXJjZSBmb3JrLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmFzZV9uYW1lIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIChiYXNlKSBmaWxlIG5hbWUgb2YgdGhlIHJlc291cmNlIGZvcmsgdXNlZCBmb3Igc29tZSAgICAgICAgICAqLworICAvKiAgICAgIGd1ZXNzaW5nIHJ1bGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuZXdfbmFtZXMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBbiBhcnJheSBvZiBndWVzc2VkIGZpbGUgbmFtZXMgaW4gd2hpY2ggdGhlIHJlc291cmNlIGZvcmtzIG1heSAgICovCisgIC8qICAgICAgZXhpc3QuICBJZiBgbmV3X25hbWVzW05dJyBpcyBOVUxMLCB0aGUgZ3Vlc3NlZCBmaWxlIG5hbWUgaXMgICAgICAqLworICAvKiAgICAgIGVxdWFsIHRvIGBiYXNlX25hbWUnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG9mZnNldHMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEFuIGFycmF5IG9mIGd1ZXNzZWQgZmlsZSBvZmZzZXRzLiAgYG9mZnNldHNbTl0nIGhvbGRzIHRoZSBmaWxlICAgKi8KKyAgLyogICAgICBvZmZzZXQgb2YgdGhlIHBvc3NpYmxlIHN0YXJ0IG9mIHRoZSByZXNvdXJjZSBmb3JrIGluIGZpbGUgICAgICAgICovCisgIC8qICAgICAgYG5ld19uYW1lc1tOXScuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZXJyb3JzIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQW4gYXJyYXkgb2YgRnJlZVR5cGUgZXJyb3IgY29kZXMuICBgZXJyb3JzW05dJyBpcyB0aGUgZXJyb3IgICAgICAqLworICAvKiAgICAgIGNvZGUgb2YgTnRoIGd1ZXNzaW5nIHJ1bGUgZnVuY3Rpb24uICBJZiBgZXJyb3JzW05dJyBpcyBub3QgICAgICAgKi8KKyAgLyogICAgICBGVF9FcnJfT2ssIGBuZXdfbmFtZXNbTl0nIGFuZCBgb2Zmc2V0c1tOXScgYXJlIG1lYW5pbmdsZXNzLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfUmFjY2Vzc19HdWVzcyggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICBjaGFyKiAgICAgICBiYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgIGNoYXIqKiAgICAgIG5ld19uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyogICAgb2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICAgZXJyb3JzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYWNjZXNzX0dldF9IZWFkZXJJbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHZXQgdGhlIGluZm9ybWF0aW9uIGZyb20gdGhlIGhlYWRlciBvZiByZXNvdXJjZSBmb3JrLiAgVGhlICAgICAgICAgKi8KKyAgLyogICAgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIGZpbGUgb2Zmc2V0IHdoZXJlIHRoZSByZXNvdXJjZSBtYXAgICAgICAgICovCisgIC8qICAgIHN0YXJ0cywgYW5kIHRoZSBmaWxlIG9mZnNldCB3aGVyZSB0aGUgcmVzb3VyY2UgZGF0YSBzdGFydHMuICAgICAgICAqLworICAvKiAgICBgRlRfUmFjY2Vzc19HZXRfRGF0YU9mZnNldHMnIHJlcXVpcmVzIHRoZXNlIHR3byBkYXRhLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIEZyZWVUeXBlIGxpYnJhcnkgaW5zdGFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIGZpbGUgc3RyZWFtIGNvbnRhaW5pbmcgdGhlIHJlc291cmNlIGZvcmsuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZm9ya19vZmZzZXQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgZmlsZSBvZmZzZXQgd2hlcmUgdGhlIHJlc291cmNlIGZvcmsgc3RhcnRzLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWFwX29mZnNldCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGZpbGUgb2Zmc2V0IHdoZXJlIHRoZSByZXNvdXJjZSBtYXAgc3RhcnRzLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmRhdGFfcG9zIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGZpbGUgb2Zmc2V0IHdoZXJlIHRoZSByZXNvdXJjZSBkYXRhIHN0YXJ0cy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICBGVF9FcnJfT2sgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9SYWNjZXNzX0dldF9IZWFkZXJJbmZvKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIHJmb3JrX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqbWFwX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqcmRhdGFfcG9zICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYWNjZXNzX0dldF9EYXRhT2Zmc2V0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHZXQgdGhlIGRhdGEgb2Zmc2V0cyBmb3IgYSB0YWcgaW4gYSByZXNvdXJjZSBmb3JrLiAgT2Zmc2V0cyBhcmUgICAgKi8KKyAgLyogICAgc3RvcmVkIGluIGFuIGFycmF5IGJlY2F1c2UsIGluIHNvbWUgY2FzZXMsIHJlc291cmNlcyBpbiBhIHJlc291cmNlICovCisgIC8qICAgIGZvcmsgaGF2ZSB0aGUgc2FtZSB0YWcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEEgRnJlZVR5cGUgbGlicmFyeSBpbnN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEEgZmlsZSBzdHJlYW0gY29udGFpbmluZyB0aGUgcmVzb3VyY2UgZm9yay4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hcF9vZmZzZXQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBmaWxlIG9mZnNldCB3aGVyZSB0aGUgcmVzb3VyY2UgbWFwIHN0YXJ0cy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJkYXRhX3BvcyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBmaWxlIG9mZnNldCB3aGVyZSB0aGUgcmVzb3VyY2UgZGF0YSBzdGFydHMuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhZyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSByZXNvdXJjZSB0YWcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvZmZzZXRzIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgc3RyZWFtIG9mZnNldHMgZm9yIHRoZSByZXNvdXJjZSBkYXRhIHNwZWNpZmllZCBieSBgdGFnJy4gICAgICovCisgIC8qICAgICAgVGhpcyBhcnJheSBpcyBhbGxvY2F0ZWQgYnkgdGhlIGZ1bmN0aW9uLCBzbyB5b3UgaGF2ZSB0byBjYWxsICAgICAqLworICAvKiAgICAgIEBmdF9tZW1fZnJlZSBhZnRlciB1c2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvdW50IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBsZW5ndGggb2Ygb2Zmc2V0cyBhcnJheS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgRlRfRXJyX09rIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3JtYWxseSB5b3Ugc2hvdWxkIHVzZSBgRlRfUmFjY2Vzc19HZXRfSGVhZGVySW5mbycgdG8gZ2V0IHRoZSAgICAgKi8KKyAgLyogICAgdmFsdWUgZm9yIGBtYXBfb2Zmc2V0JyBhbmQgYHJkYXRhX3BvcycuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX1JhY2Nlc3NfR2V0X0RhdGFPZmZzZXRzKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgbWFwX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIHJkYXRhX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIHRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAqKm9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICpjb3VudCApOworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRSRk9SS19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNWZiZDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oCkBAIC0wLDAgKzEsNzYzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHNlcnYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHNlcnZpY2VzIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDMtMjAwNywgMjAwOSwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIEVhY2ggbW9kdWxlIGNhbiBleHBvcnQgb25lIG9yIG1vcmUgYHNlcnZpY2VzJy4gIEVhY2ggc2VydmljZSBpcyAgICAgICovCisgIC8qICBpZGVudGlmaWVkIGJ5IGEgY29uc3RhbnQgc3RyaW5nIGFuZCBtb2RlbGVkIGJ5IGEgcG9pbnRlcjsgdGhlIGxhdHRlciAqLworICAvKiAgZ2VuZXJhbGx5IGNvcnJlc3BvbmRzIHRvIGEgc3RydWN0dXJlIGNvbnRhaW5pbmcgZnVuY3Rpb24gcG9pbnRlcnMuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBOb3RlIHRoYXQgYSBzZXJ2aWNlJ3MgZGF0YSBjYW5ub3QgYmUgYSBtZXJlIGZ1bmN0aW9uIHBvaW50ZXIgYmVjYXVzZSAqLworICAvKiAgaW4gQyBpdCBpcyBwb3NzaWJsZSB0aGF0IGZ1bmN0aW9uIHBvaW50ZXJzIG1pZ2h0IGJlIGltcGxlbWVudGVkICAgICAgKi8KKyAgLyogIGRpZmZlcmVudGx5IHRoYW4gZGF0YSBwb2ludGVycyAoZS5nLiA0OCBiaXRzIGluc3RlYWQgb2YgMzIpLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRTRVJWX0hfXworI2RlZmluZSBfX0ZUU0VSVl9IX18KKworCitGVF9CRUdJTl9IRUFERVIKKworICAvKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfRkFDRV9GSU5EX1NFUlZJQ0UKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoaXMgbWFjcm8gaXMgdXNlZCB0byBsb29rIHVwIGEgc2VydmljZSBmcm9tIGEgZmFjZSdzIGRyaXZlciBtb2R1bGUuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBmYWNlIDo6CisgICAqICAgICBUaGUgc291cmNlIGZhY2UgaGFuZGxlLgorICAgKgorICAgKiAgIGlkIDo6CisgICAqICAgICBBIHN0cmluZyBkZXNjcmliaW5nIHRoZSBzZXJ2aWNlIGFzIGRlZmluZWQgaW4gdGhlIHNlcnZpY2UncworICAgKiAgICAgaGVhZGVyIGZpbGVzIChlLmcuIEZUX1NFUlZJQ0VfSURfTVVMVElfTUFTVEVSUyB3aGljaCBleHBhbmRzIHRvCisgICAqICAgICBgbXVsdGktbWFzdGVycycpLiAgSXQgaXMgYXV0b21hdGljYWxseSBwcmVmaXhlZCB3aXRoCisgICAqICAgICBgRlRfU0VSVklDRV9JRF8nLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIHB0ciA6OgorICAgKiAgICAgQSB2YXJpYWJsZSB0aGF0IHJlY2VpdmVzIHRoZSBzZXJ2aWNlIHBvaW50ZXIuICBXaWxsIGJlIE5VTEwKKyAgICogICAgIGlmIG5vdCBmb3VuZC4KKyAgICovCisjaWZkZWYgX19jcGx1c3BsdXMKKworI2RlZmluZSBGVF9GQUNFX0ZJTkRfU0VSVklDRSggZmFjZSwgcHRyLCBpZCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQkVHSU5fU1RNTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTW9kdWxlICAgIG1vZHVsZSA9IEZUX01PRFVMRSggRlRfRkFDRSggZmFjZSApLT5kcml2ZXIgKTsgICAgICAgICAgICAgXAorICAgIEZUX1BvaW50ZXIgICBfdG1wXyAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Qb2ludGVyKiAgX3BwdHJfID0gKEZUX1BvaW50ZXIqKSYocHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIG1vZHVsZS0+Y2xhenotPmdldF9pbnRlcmZhY2UgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBfdG1wXyA9IG1vZHVsZS0+Y2xhenotPmdldF9pbnRlcmZhY2UoIG1vZHVsZSwgRlRfU0VSVklDRV9JRF8gIyMgaWQgKTsgXAorICAgICpfcHB0cl8gPSBfdG1wXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRU5EX1NUTU5UCisKKyNlbHNlIC8qICFDKysgKi8KKworI2RlZmluZSBGVF9GQUNFX0ZJTkRfU0VSVklDRSggZmFjZSwgcHRyLCBpZCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQkVHSU5fU1RNTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTW9kdWxlICAgbW9kdWxlID0gRlRfTU9EVUxFKCBGVF9GQUNFKCBmYWNlICktPmRyaXZlciApOyAgICAgICAgICAgICAgXAorICAgIEZUX1BvaW50ZXIgIF90bXBfICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBtb2R1bGUtPmNsYXp6LT5nZXRfaW50ZXJmYWNlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX3RtcF8gPSBtb2R1bGUtPmNsYXp6LT5nZXRfaW50ZXJmYWNlKCBtb2R1bGUsIEZUX1NFUlZJQ0VfSURfICMjIGlkICk7IFwKKyAgICBwdHIgPSBfdG1wXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0VORF9TVE1OVAorCisjZW5kaWYgLyogIUMrKyAqLworCisKKyAgLyoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0ZBQ0VfRklORF9HTE9CQUxfU0VSVklDRQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhpcyBtYWNybyBpcyB1c2VkIHRvIGxvb2sgdXAgYSBzZXJ2aWNlIGZyb20gYWxsIG1vZHVsZXMuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBmYWNlIDo6CisgICAqICAgICBUaGUgc291cmNlIGZhY2UgaGFuZGxlLgorICAgKgorICAgKiAgIGlkIDo6CisgICAqICAgICBBIHN0cmluZyBkZXNjcmliaW5nIHRoZSBzZXJ2aWNlIGFzIGRlZmluZWQgaW4gdGhlIHNlcnZpY2UncworICAgKiAgICAgaGVhZGVyIGZpbGVzIChlLmcuIEZUX1NFUlZJQ0VfSURfTVVMVElfTUFTVEVSUyB3aGljaCBleHBhbmRzIHRvCisgICAqICAgICBgbXVsdGktbWFzdGVycycpLiAgSXQgaXMgYXV0b21hdGljYWxseSBwcmVmaXhlZCB3aXRoCisgICAqICAgICBgRlRfU0VSVklDRV9JRF8nLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIHB0ciA6OgorICAgKiAgICAgQSB2YXJpYWJsZSB0aGF0IHJlY2VpdmVzIHRoZSBzZXJ2aWNlIHBvaW50ZXIuICBXaWxsIGJlIE5VTEwKKyAgICogICAgIGlmIG5vdCBmb3VuZC4KKyAgICovCisjaWZkZWYgX19jcGx1c3BsdXMKKworI2RlZmluZSBGVF9GQUNFX0ZJTkRfR0xPQkFMX1NFUlZJQ0UoIGZhY2UsIHB0ciwgaWQgKSAgICAgICAgICAgICAgIFwKKyAgRlRfQkVHSU5fU1RNTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTW9kdWxlICAgIG1vZHVsZSA9IEZUX01PRFVMRSggRlRfRkFDRSggZmFjZSApLT5kcml2ZXIgKTsgICAgXAorICAgIEZUX1BvaW50ZXIgICBfdG1wXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Qb2ludGVyKiAgX3BwdHJfID0gKEZUX1BvaW50ZXIqKSYocHRyKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfdG1wXyA9IGZ0X21vZHVsZV9nZXRfc2VydmljZSggbW9kdWxlLCBGVF9TRVJWSUNFX0lEXyAjIyBpZCApOyBcCisgICAgKl9wcHRyXyA9IF90bXBfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9FTkRfU1RNTlQKKworI2Vsc2UgLyogIUMrKyAqLworCisjZGVmaW5lIEZUX0ZBQ0VfRklORF9HTE9CQUxfU0VSVklDRSggZmFjZSwgcHRyLCBpZCApICAgICAgICAgICAgICAgXAorICBGVF9CRUdJTl9TVE1OVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Nb2R1bGUgICBtb2R1bGUgPSBGVF9NT0RVTEUoIEZUX0ZBQ0UoIGZhY2UgKS0+ZHJpdmVyICk7ICAgICBcCisgICAgRlRfUG9pbnRlciAgX3RtcF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX3RtcF8gPSBmdF9tb2R1bGVfZ2V0X3NlcnZpY2UoIG1vZHVsZSwgRlRfU0VSVklDRV9JRF8gIyMgaWQgKTsgXAorICAgIHB0ciAgID0gX3RtcF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRU5EX1NUTU5UCisKKyNlbmRpZiAvKiAhQysrICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICBTIEUgUiBWIEkgQyBFICAgRCBFIFMgQyBSIEkgUCBUIE8gUiBTICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKgorICAgKiAgVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBfZGVzY3JpYmVfIGEgZ2l2ZW4gc2VydmljZQorICAgKiAgdG8gdGhlIGxpYnJhcnkuICBUaGlzIGlzIHVzZWZ1bCB0byBidWlsZCBzaW1wbGUgc3RhdGljIHNlcnZpY2UgbGlzdHMuCisgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfU2VydmljZURlc2NSZWNfCisgIHsKKyAgICBjb25zdCBjaGFyKiAgc2Vydl9pZDsgICAgIC8qIHNlcnZpY2UgbmFtZSAgICAgICAgICovCisgICAgY29uc3Qgdm9pZCogIHNlcnZfZGF0YTsgICAvKiBzZXJ2aWNlIHBvaW50ZXIvZGF0YSAqLworCisgIH0gRlRfU2VydmljZURlc2NSZWM7CisKKyAgdHlwZWRlZiBjb25zdCBGVF9TZXJ2aWNlRGVzY1JlYyogIEZUX1NlcnZpY2VEZXNjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUMzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBpbml0aWFsaXplIGFuIGFycmF5IG9mIEZUX1NlcnZpY2VEZXNjUmVjIHN0cnVjdHVyZXMuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIGRlZmluZWQgYSBgY3JlYXRlJyBmdW5jdGlvbiBuZWVkcyB0byAgKi8KKyAgLyogICAgYmUgY2FsbGVkIHdpdGggYSBwb2ludGVyIHRvIHJldHVybiBhbiBhbGxvY2F0ZWQgYXJyYXkuICBBcyBzb29uIGFzICovCisgIC8qICAgIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQsIGEgYGRlc3Ryb3knIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGNhbGxlZCB0byAqLworICAvKiAgICByZWxlYXNlIHRoYXQgYWxsb2NhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgbWFudWFsbHkgY2FsbGVkIGZyb20gdGhlIGBwaWNfaW5pdCcgYW5kICAqLworICAvKiAgICBgcGljX2ZyZWUnIGZ1bmN0aW9ucyBvZiB5b3VyIG1vZHVsZSAoc2VlIEZUX0RFRklORV9NT0RVTEUpLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFdoZW4gRlRfQ09ORklHX09QVElPTl9QSUMgaXMgbm90IGRlZmluZWQgdGhlIGFycmF5IHdpbGwgYmUgICAgICAgICAqLworICAvKiAgICBhbGxvY2F0ZWQgaW4gdGhlIGdsb2JhbCBzY29wZSAob3IgdGhlIHNjb3BlIHdoZXJlIHRoZSBtYWNybyBpcyAgICAgKi8KKyAgLyogICAgdXNlZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzEoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xICkgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VEZXNjUmVjICBjbGFzc19bXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IE5VTEwsIE5VTEwgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDMiggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yICkgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VEZXNjUmVjICBjbGFzc19bXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBOVUxMLCBOVUxMIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzMoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMywgc2Vydl9kYXRhXzMgKSAgICAgICAgICAgICAgICAgXAorICBzdGF0aWMgY29uc3QgRlRfU2VydmljZURlc2NSZWMgIGNsYXNzX1tdID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMywgc2Vydl9kYXRhXzMgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBOVUxMLCBOVUxMIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzQoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMywgc2Vydl9kYXRhXzMsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzQsIHNlcnZfZGF0YV80ICkgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VEZXNjUmVjICBjbGFzc19bXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF80LCBzZXJ2X2RhdGFfNCB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IE5VTEwsIE5VTEwgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNSggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8zLCBzZXJ2X2RhdGFfMywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNCwgc2Vydl9kYXRhXzQsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzUsIHNlcnZfZGF0YV81ICkgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VEZXNjUmVjICBjbGFzc19bXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF80LCBzZXJ2X2RhdGFfNCB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfNSwgc2Vydl9kYXRhXzUgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBOVUxMLCBOVUxMIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzYoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMywgc2Vydl9kYXRhXzMsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzQsIHNlcnZfZGF0YV80LCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF81LCBzZXJ2X2RhdGFfNSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNiwgc2Vydl9kYXRhXzYgKSAgICAgICAgICAgICAgICAgXAorICBzdGF0aWMgY29uc3QgRlRfU2VydmljZURlc2NSZWMgIGNsYXNzX1tdID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMywgc2Vydl9kYXRhXzMgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzQsIHNlcnZfZGF0YV80IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF81LCBzZXJ2X2RhdGFfNSB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfNiwgc2Vydl9kYXRhXzYgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBOVUxMLCBOVUxMIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzcoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMywgc2Vydl9kYXRhXzMsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzQsIHNlcnZfZGF0YV80LCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF81LCBzZXJ2X2RhdGFfNSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNiwgc2Vydl9kYXRhXzYsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzcsIHNlcnZfZGF0YV83ICkgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VEZXNjUmVjICBjbGFzc19bXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF80LCBzZXJ2X2RhdGFfNCB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfNSwgc2Vydl9kYXRhXzUgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzYsIHNlcnZfZGF0YV82IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF83LCBzZXJ2X2RhdGFfNyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IE5VTEwsIE5VTEwgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDMSggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEgKSAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRGVzdHJveV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqICBjbGF6eiApICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGNsYXp6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCBjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9DcmVhdGVfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiogIG91dHB1dF9jbGFzcyApICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9FcnJvciAgICAgICAgICAgIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICAgICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBGVF9BTExPQyggY2xhenosIHNpemVvZiAoICpjbGF6eiApICogMiApICkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMF0uc2Vydl9pZCAgID0gc2Vydl9pZF8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsxXS5zZXJ2X2lkICAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9kYXRhID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqb3V0cHV0X2NsYXNzID0gY2xheno7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzIoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiApICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9EZXN0cm95X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICkgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggY2xhenogKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0ZSRUUoIGNsYXp6ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NyZWF0ZV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqKiAgb3V0cHV0X2NsYXNzICkgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfU2VydmljZURlc2NSZWMqICBjbGF6eiAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX0Vycm9yICAgICAgICAgICAgZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgICAgICAgICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIEZUX0FMTE9DKCBjbGF6eiwgc2l6ZW9mICggKmNsYXp6ICkgKiAzICkgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elswXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMF0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzFdLnNlcnZfaWQgICA9IHNlcnZfaWRfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsxXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMl0uc2Vydl9pZCAgID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzJdLnNlcnZfZGF0YSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKm91dHB1dF9jbGFzcyA9IGNsYXp6OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gRlRfRXJyX09rOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUMzKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zICkgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogKSAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBjbGF6eiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggY2xhenogKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ3JlYXRlX0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyoqICBvdXRwdXRfY2xhc3MgKSAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfRXJyb3IgICAgICAgICAgICBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggRlRfQUxMT0MoIGNsYXp6LCBzaXplb2YgKCAqY2xhenogKSAqIDQgKSApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfaWQgICA9IHNlcnZfaWRfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elswXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9pZCAgID0gc2Vydl9pZF8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzFdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsyXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMl0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzNdLnNlcnZfaWQgICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elszXS5zZXJ2X2RhdGEgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICpvdXRwdXRfY2xhc3MgPSBjbGF6ejsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIEZUX0Vycl9PazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNCggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8zLCBzZXJ2X2RhdGFfMywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNCwgc2Vydl9kYXRhXzQgKSAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRGVzdHJveV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqICBjbGF6eiApICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGNsYXp6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCBjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9DcmVhdGVfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiogIG91dHB1dF9jbGFzcyApICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9FcnJvciAgICAgICAgICAgIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICAgICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBGVF9BTExPQyggY2xhenosIHNpemVvZiAoICpjbGF6eiApICogNSApICkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMF0uc2Vydl9pZCAgID0gc2Vydl9pZF8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsxXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzJdLnNlcnZfaWQgICA9IHNlcnZfaWRfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsyXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbM10uc2Vydl9pZCAgID0gc2Vydl9pZF80OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzNdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV80OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els0XS5zZXJ2X2lkICAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNF0uc2Vydl9kYXRhID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqb3V0cHV0X2NsYXNzID0gY2xheno7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzUoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMywgc2Vydl9kYXRhXzMsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzQsIHNlcnZfZGF0YV80LCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF81LCBzZXJ2X2RhdGFfNSApICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9EZXN0cm95X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICkgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggY2xhenogKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0ZSRUUoIGNsYXp6ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NyZWF0ZV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqKiAgb3V0cHV0X2NsYXNzICkgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfU2VydmljZURlc2NSZWMqICBjbGF6eiAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX0Vycm9yICAgICAgICAgICAgZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgICAgICAgICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIEZUX0FMTE9DKCBjbGF6eiwgc2l6ZW9mICggKmNsYXp6ICkgKiA2ICkgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elswXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMF0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzFdLnNlcnZfaWQgICA9IHNlcnZfaWRfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsxXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMl0uc2Vydl9pZCAgID0gc2Vydl9pZF8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzJdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elszXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbM10uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzRdLnNlcnZfaWQgICA9IHNlcnZfaWRfNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els0XS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNV0uc2Vydl9pZCAgID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzVdLnNlcnZfZGF0YSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKm91dHB1dF9jbGFzcyA9IGNsYXp6OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gRlRfRXJyX09rOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM2KCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF80LCBzZXJ2X2RhdGFfNCwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNSwgc2Vydl9kYXRhXzUsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzYsIHNlcnZfZGF0YV82ICkgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogKSAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBjbGF6eiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggY2xhenogKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ3JlYXRlX0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyoqICBvdXRwdXRfY2xhc3MpICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfRXJyb3IgICAgICAgICAgICBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggRlRfQUxMT0MoIGNsYXp6LCBzaXplb2YgKCAqY2xhenogKSAqIDcgKSApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfaWQgICA9IHNlcnZfaWRfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elswXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9pZCAgID0gc2Vydl9pZF8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzFdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsyXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMl0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzNdLnNlcnZfaWQgICA9IHNlcnZfaWRfNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elszXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNF0uc2Vydl9pZCAgID0gc2Vydl9pZF81OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzRdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV81OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els1XS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNV0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzZdLnNlcnZfaWQgICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els2XS5zZXJ2X2RhdGEgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICpvdXRwdXRfY2xhc3MgPSBjbGF6ejsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIEZUX0Vycl9PazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNyggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8zLCBzZXJ2X2RhdGFfMywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNCwgc2Vydl9kYXRhXzQsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzUsIHNlcnZfZGF0YV81LCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF82LCBzZXJ2X2RhdGFfNiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNywgc2Vydl9kYXRhXzcgKSAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRGVzdHJveV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqICBjbGF6eiApICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGNsYXp6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCBjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9DcmVhdGVfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiogIG91dHB1dF9jbGFzcykgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9FcnJvciAgICAgICAgICAgIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICAgICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBGVF9BTExPQyggY2xhenosIHNpemVvZiAoICpjbGF6eiApICogOCApICkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMF0uc2Vydl9pZCAgID0gc2Vydl9pZF8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsxXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzJdLnNlcnZfaWQgICA9IHNlcnZfaWRfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsyXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbM10uc2Vydl9pZCAgID0gc2Vydl9pZF80OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzNdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV80OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els0XS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNF0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzVdLnNlcnZfaWQgICA9IHNlcnZfaWRfNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els1XS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNl0uc2Vydl9pZCAgID0gc2Vydl9pZF83OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzZdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV83OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els3XS5zZXJ2X2lkICAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbN10uc2Vydl9kYXRhID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqb3V0cHV0X2NsYXNzID0gY2xheno7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworCisgIC8qCisgICAqICBQYXJzZSBhIGxpc3Qgb2YgRlRfU2VydmljZURlc2NSZWMgZGVzY3JpcHRvcnMgYW5kIGxvb2sgZm9yCisgICAqICBhIHNwZWNpZmljIHNlcnZpY2UgYnkgSUQuICBOb3RlIHRoYXQgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUKKyAgICogIGFycmF5IG11c3QgYmUgeyBOVUxMLCBOVUxMIH0sIGFuZCB0aGF0IHRoZSBmdW5jdGlvbiBzaG91bGQKKyAgICogIHJldHVybiBOVUxMIGlmIHRoZSBzZXJ2aWNlIGlzbid0IGF2YWlsYWJsZS4KKyAgICoKKyAgICogIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYnkgbW9kdWxlcyB0byBpbXBsZW1lbnQgdGhlaXIKKyAgICogIGBnZXRfc2VydmljZScgbWV0aG9kLgorICAgKi8KKyAgRlRfQkFTRSggRlRfUG9pbnRlciApCisgIGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAoIEZUX1NlcnZpY2VEZXNjICBzZXJ2aWNlX2Rlc2NyaXB0b3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgICAgc2VydmljZV9pZCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgIFMgRSBSIFYgSSBDIEUgUyAgIEMgQSBDIEggRSAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoKKyAgICogIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gc3RvcmUgYSBjYWNoZSBmb3Igc2V2ZXJhbCBmcmVxdWVudGx5IHVzZWQKKyAgICogIHNlcnZpY2VzLiAgSXQgaXMgdGhlIHR5cGUgb2YgYGZhY2UtPmludGVybmFsLT5zZXJ2aWNlcycuICBZb3UKKyAgICogIHNob3VsZCBvbmx5IHVzZSBGVF9GQUNFX0xPT0tVUF9TRVJWSUNFIHRvIGFjY2VzcyBpdC4KKyAgICoKKyAgICogIEFsbCBmaWVsZHMgc2hvdWxkIGhhdmUgdGhlIHR5cGUgRlRfUG9pbnRlciB0byByZWxheCBjb21waWxhdGlvbgorICAgKiAgZGVwZW5kZW5jaWVzLiAgV2UgYXNzdW1lIHRoZSBkZXZlbG9wZXIgaXNuJ3QgY29tcGxldGVseSBzdHVwaWQuCisgICAqCisgICAqICBFYWNoIGZpZWxkIG11c3QgYmUgbmFtZWQgYHNlcnZpY2VfWFhYWCcgd2hlcmUgYFhYWCcgY29ycmVzcG9uZHMgdG8KKyAgICogIHRoZSBjb3JyZWN0IEZUX1NFUlZJQ0VfSURfWFhYWCBtYWNyby4gIFNlZSB0aGUgZGVmaW5pdGlvbiBvZgorICAgKiAgRlRfRkFDRV9MT09LVVBfU0VSVklDRSBiZWxvdyBob3cgdGhpcyBpcyBpbXBsZW1lbnRlZC4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TZXJ2aWNlQ2FjaGVSZWNfCisgIHsKKyAgICBGVF9Qb2ludGVyICBzZXJ2aWNlX1BPU1RTQ1JJUFRfRk9OVF9OQU1FOworICAgIEZUX1BvaW50ZXIgIHNlcnZpY2VfTVVMVElfTUFTVEVSUzsKKyAgICBGVF9Qb2ludGVyICBzZXJ2aWNlX0dMWVBIX0RJQ1Q7CisgICAgRlRfUG9pbnRlciAgc2VydmljZV9QRlJfTUVUUklDUzsKKyAgICBGVF9Qb2ludGVyICBzZXJ2aWNlX1dJTkZOVDsKKworICB9IEZUX1NlcnZpY2VDYWNoZVJlYywgKkZUX1NlcnZpY2VDYWNoZTsKKworCisgIC8qCisgICAqICBBIG1hZ2ljIG51bWJlciB1c2VkIHdpdGhpbiB0aGUgc2VydmljZXMgY2FjaGUuCisgICAqLworCisgIC8qIGVuc3VyZSB0aGF0IHZhbHVlIGAxJyBoYXMgdGhlIHNhbWUgd2lkdGggYXMgYSBwb2ludGVyICovCisjZGVmaW5lIEZUX1NFUlZJQ0VfVU5BVkFJTEFCTEUgICgoRlRfUG9pbnRlcil+KEZUX1B0ckRpc3QpMSkKKworCisgIC8qCisgICAqIEBtYWNybzoKKyAgICogICBGVF9GQUNFX0xPT0tVUF9TRVJWSUNFCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gbG9va3VwIGEgc2VydmljZSBmcm9tIGEgZmFjZSdzIGRyaXZlciBtb2R1bGUKKyAgICogICB1c2luZyBpdHMgY2FjaGUuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBmYWNlOjoKKyAgICogICAgIFRoZSBzb3VyY2UgZmFjZSBoYW5kbGUgY29udGFpbmluZyB0aGUgY2FjaGUuCisgICAqCisgICAqICAgZmllbGQgOjoKKyAgICogICAgIFRoZSBmaWVsZCBuYW1lIGluIHRoZSBjYWNoZS4KKyAgICoKKyAgICogICBpZCA6OgorICAgKiAgICAgVGhlIHNlcnZpY2UgSUQuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgcHRyIDo6CisgICAqICAgICBBIHZhcmlhYmxlIHJlY2VpdmluZyB0aGUgc2VydmljZSBkYXRhLiAgTlVMTCBpZiBub3QgYXZhaWxhYmxlLgorICAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworCisjZGVmaW5lIEZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UoIGZhY2UsIHB0ciwgaWQgKSAgICAgICAgICAgICAgICBcCisgIEZUX0JFR0lOX1NUTU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfUG9pbnRlciAgIHN2YzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfUG9pbnRlciogIFBwdHIgPSAoRlRfUG9pbnRlciopJihwdHIpOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3ZjID0gRlRfRkFDRSggZmFjZSApLT5pbnRlcm5hbC0+c2VydmljZXMuIHNlcnZpY2VfICMjIGlkOyBcCisgICAgaWYgKCBzdmMgPT0gRlRfU0VSVklDRV9VTkFWQUlMQUJMRSApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBzdmMgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSBpZiAoIHN2YyA9PSBOVUxMICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GQUNFX0ZJTkRfU0VSVklDRSggZmFjZSwgc3ZjLCBpZCApOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GQUNFKCBmYWNlICktPmludGVybmFsLT5zZXJ2aWNlcy4gc2VydmljZV8gIyMgaWQgPSAgICBcCisgICAgICAgIChGVF9Qb2ludGVyKSggc3ZjICE9IE5VTEwgPyBzdmMgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBGVF9TRVJWSUNFX1VOQVZBSUxBQkxFICk7ICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKlBwdHIgPSBzdmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0VORF9TVE1OVAorCisjZWxzZSAvKiAhQysrICovCisKKyNkZWZpbmUgRlRfRkFDRV9MT09LVVBfU0VSVklDRSggZmFjZSwgcHRyLCBpZCApICAgICAgICAgICAgICAgIFwKKyAgRlRfQkVHSU5fU1RNTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Qb2ludGVyICBzdmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdmMgPSBGVF9GQUNFKCBmYWNlICktPmludGVybmFsLT5zZXJ2aWNlcy4gc2VydmljZV8gIyMgaWQ7IFwKKyAgICBpZiAoIHN2YyA9PSBGVF9TRVJWSUNFX1VOQVZBSUxBQkxFICkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHN2YyA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmICggc3ZjID09IE5VTEwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzdmMsIGlkICk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0ZBQ0UoIGZhY2UgKS0+aW50ZXJuYWwtPnNlcnZpY2VzLiBzZXJ2aWNlXyAjIyBpZCA9ICAgIFwKKyAgICAgICAgKEZUX1BvaW50ZXIpKCBzdmMgIT0gTlVMTCA/IHN2YyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEZUX1NFUlZJQ0VfVU5BVkFJTEFCTEUgKTsgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwdHIgPSBzdmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRU5EX1NUTU5UCisKKyNlbmRpZiAvKiAhQysrICovCisKKyAgLyoKKyAgICogIEEgbWFjcm8gdXNlZCB0byBkZWZpbmUgbmV3IHNlcnZpY2Ugc3RydWN0dXJlIHR5cGVzLgorICAgKi8KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRSggbmFtZSApICAgICAgICAgICAgXAorICB0eXBlZGVmIHN0cnVjdCBGVF9TZXJ2aWNlXyAjIyBuYW1lICMjIFJlY18gXAorICAgIEZUX1NlcnZpY2VfICMjIG5hbWUgIyMgUmVjIDsgICAgICAgICAgICAgXAorICB0eXBlZGVmIHN0cnVjdCBGVF9TZXJ2aWNlXyAjIyBuYW1lICMjIFJlY18gXAorICAgIGNvbnN0ICogRlRfU2VydmljZV8gIyMgbmFtZSA7ICAgICAgICAgICAgXAorICBzdHJ1Y3QgRlRfU2VydmljZV8gIyMgbmFtZSAjIyBSZWNfCisKKyAgLyogKi8KKworICAvKgorICAgKiAgVGhlIGhlYWRlciBmaWxlcyBjb250YWluaW5nIHRoZSBzZXJ2aWNlcy4KKyAgICovCisKKyNkZWZpbmUgRlRfU0VSVklDRV9CREZfSCAgICAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZiZGYuaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9DSURfSCAgICAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZjaWQuaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9HTFlQSF9ESUNUX0ggICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZnbGRpY3QuaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9HWF9WQUxJREFURV9IICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZneHZhbC5oPgorI2RlZmluZSBGVF9TRVJWSUNFX0tFUk5JTkdfSCAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmtlcm4uaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9NVUxUSVBMRV9NQVNURVJTX0ggICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZtbS5oPgorI2RlZmluZSBGVF9TRVJWSUNFX09QRU5UWVBFX1ZBTElEQVRFX0ggIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm90dmFsLmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfUEZSX0ggICAgICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cGZyLmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9DTUFQU19IICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNjbWFwLmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9JTkZPX0ggICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNpbmZvLmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FX0ggICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cG9zdG5tLmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfUFJPUEVSVElFU19IICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHJvcC5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1NGTlRfSCAgICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnNmbnQuaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9UUlVFVFlQRV9FTkdJTkVfSCAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGVuZy5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1RUX0NNQVBfSCAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Y21hcC5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1dJTkZOVF9IICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdndpbmZudC5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9IICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnhmODZubS5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1RSVUVUWVBFX0dMWUZfSCAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Z2x5Zi5oPgorCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFNFUlZfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFhMjY1NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaApAQCAtMCwwICsxLDUzNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRzdHJlYW0uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFN0cmVhbSBoYW5kbGluZyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDIsIDIwMDQtMjAwNiwgMjAxMSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRTVFJFQU1fSF9fCisjZGVmaW5lIF9fRlRTVFJFQU1fSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vZnRzeXN0ZW0uaCIKKyNpbmNsdWRlICJmdG9ianMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qIGZvcm1hdCBvZiBhbiA4LWJpdCBmcmFtZV9vcCB2YWx1ZTogICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIGJpdCAgNzY1NDMyMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgeHh4eHh4ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIHMgaXMgc2V0IHRvIDEgaWYgdGhlIHZhbHVlIGlzIHNpZ25lZC4gICAgICAgICovCisgIC8qIGUgaXMgc2V0IHRvIDEgaWYgdGhlIHZhbHVlIGlzIGxpdHRsZS1lbmRpYW4uICovCisgIC8qIHh4eCBpcyBhIGNvbW1hbmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgRlRfRlJBTUVfT1BfU0hJRlQgICAgICAgICAyCisjZGVmaW5lIEZUX0ZSQU1FX09QX1NJR05FRCAgICAgICAgMQorI2RlZmluZSBGVF9GUkFNRV9PUF9MSVRUTEUgICAgICAgIDIKKyNkZWZpbmUgRlRfRlJBTUVfT1BfQ09NTUFORCggeCApICAoIHggPj4gRlRfRlJBTUVfT1BfU0hJRlQgKQorCisjZGVmaW5lIEZUX01BS0VfRlJBTUVfT1AoIGNvbW1hbmQsIGxpdHRsZSwgc2lnbiApIFwKKyAgICAgICAgICAoICggY29tbWFuZCA8PCBGVF9GUkFNRV9PUF9TSElGVCApIHwgKCBsaXR0bGUgPDwgMSApIHwgc2lnbiApCisKKyNkZWZpbmUgRlRfRlJBTUVfT1BfRU5EICAgIDAKKyNkZWZpbmUgRlRfRlJBTUVfT1BfU1RBUlQgIDEgIC8qIHN0YXJ0IGEgbmV3IGZyYW1lICAgICAqLworI2RlZmluZSBGVF9GUkFNRV9PUF9CWVRFICAgMiAgLyogcmVhZCAxLWJ5dGUgdmFsdWUgICAgICovCisjZGVmaW5lIEZUX0ZSQU1FX09QX1NIT1JUICAzICAvKiByZWFkIDItYnl0ZSB2YWx1ZSAgICAgKi8KKyNkZWZpbmUgRlRfRlJBTUVfT1BfTE9ORyAgIDQgIC8qIHJlYWQgNC1ieXRlIHZhbHVlICAgICAqLworI2RlZmluZSBGVF9GUkFNRV9PUF9PRkYzICAgNSAgLyogcmVhZCAzLWJ5dGUgdmFsdWUgICAgICovCisjZGVmaW5lIEZUX0ZSQU1FX09QX0JZVEVTICA2ICAvKiByZWFkIGEgYnl0ZXMgc2VxdWVuY2UgKi8KKworCisgIHR5cGVkZWYgZW51bSAgRlRfRnJhbWVfT3BfCisgIHsKKyAgICBmdF9mcmFtZV9lbmQgICAgICAgPSAwLAorICAgIGZ0X2ZyYW1lX3N0YXJ0ICAgICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX1NUQVJULCAwLCAwICksCisKKyAgICBmdF9mcmFtZV9ieXRlICAgICAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9CWVRFLCAgMCwgMCApLAorICAgIGZ0X2ZyYW1lX3NjaGFyICAgICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX0JZVEUsICAwLCAxICksCisKKyAgICBmdF9mcmFtZV91c2hvcnRfYmUgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9TSE9SVCwgMCwgMCApLAorICAgIGZ0X2ZyYW1lX3Nob3J0X2JlICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX1NIT1JULCAwLCAxICksCisgICAgZnRfZnJhbWVfdXNob3J0X2xlID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfU0hPUlQsIDEsIDAgKSwKKyAgICBmdF9mcmFtZV9zaG9ydF9sZSAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9TSE9SVCwgMSwgMSApLAorCisgICAgZnRfZnJhbWVfdWxvbmdfYmUgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfTE9ORywgMCwgMCApLAorICAgIGZ0X2ZyYW1lX2xvbmdfYmUgICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX0xPTkcsIDAsIDEgKSwKKyAgICBmdF9mcmFtZV91bG9uZ19sZSAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9MT05HLCAxLCAwICksCisgICAgZnRfZnJhbWVfbG9uZ19sZSAgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfTE9ORywgMSwgMSApLAorCisgICAgZnRfZnJhbWVfdW9mZjNfYmUgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfT0ZGMywgMCwgMCApLAorICAgIGZ0X2ZyYW1lX29mZjNfYmUgICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX09GRjMsIDAsIDEgKSwKKyAgICBmdF9mcmFtZV91b2ZmM19sZSAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9PRkYzLCAxLCAwICksCisgICAgZnRfZnJhbWVfb2ZmM19sZSAgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfT0ZGMywgMSwgMSApLAorCisgICAgZnRfZnJhbWVfYnl0ZXMgICAgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfQllURVMsIDAsIDAgKSwKKyAgICBmdF9mcmFtZV9za2lwICAgICAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9CWVRFUywgMCwgMSApCisKKyAgfSBGVF9GcmFtZV9PcDsKKworCisgIHR5cGVkZWYgc3RydWN0ICBGVF9GcmFtZV9GaWVsZF8KKyAgeworICAgIEZUX0J5dGUgICAgdmFsdWU7CisgICAgRlRfQnl0ZSAgICBzaXplOworICAgIEZUX1VTaG9ydCAgb2Zmc2V0OworCisgIH0gRlRfRnJhbWVfRmllbGQ7CisKKworICAvKiBDb25zdHJ1Y3QgYW4gRlRfRnJhbWVfRmllbGQgb3V0IG9mIGEgc3RydWN0dXJlIHR5cGUgYW5kIGEgZmllbGQgbmFtZS4gKi8KKyAgLyogVGhlIHN0cnVjdHVyZSB0eXBlIG11c3QgYmUgc2V0IGluIHRoZSBGVF9TVFJVQ1RVUkUgbWFjcm8gYmVmb3JlICAgICAgICovCisgIC8qIGNhbGxpbmcgdGhlIEZUX0ZSQU1FX1NUQVJUKCkgbWFjcm8uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfRklFTERfU0laRSggZiApIFwKKyAgICAgICAgICAoRlRfQnl0ZSlzaXplb2YgKCAoKEZUX1NUUlVDVFVSRSopMCktPmYgKQorCisjZGVmaW5lIEZUX0ZJRUxEX1NJWkVfREVMVEEoIGYgKSBcCisgICAgICAgICAgKEZUX0J5dGUpc2l6ZW9mICggKChGVF9TVFJVQ1RVUkUqKTApLT5mWzBdICkKKworI2RlZmluZSBGVF9GSUVMRF9PRkZTRVQoIGYgKSBcCisgICAgICAgICAgKEZUX1VTaG9ydCkoIG9mZnNldG9mKCBGVF9TVFJVQ1RVUkUsIGYgKSApCisKKyNkZWZpbmUgRlRfRlJBTUVfRklFTEQoIGZyYW1lX29wLCBmaWVsZCApIFwKKyAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZyYW1lX29wLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZUX0ZJRUxEX1NJWkUoIGZpZWxkICksICAgICAgIFwKKyAgICAgICAgICAgIEZUX0ZJRUxEX09GRlNFVCggZmllbGQgKSAgICAgIFwKKyAgICAgICAgICB9CisKKyNkZWZpbmUgRlRfTUFLRV9FTVBUWV9GSUVMRCggZnJhbWVfb3AgKSAgeyBmcmFtZV9vcCwgMCwgMCB9CisKKyNkZWZpbmUgRlRfRlJBTUVfU1RBUlQoIHNpemUgKSAgIHsgZnRfZnJhbWVfc3RhcnQsIDAsIHNpemUgfQorI2RlZmluZSBGVF9GUkFNRV9FTkQgICAgICAgICAgICAgeyBmdF9mcmFtZV9lbmQsIDAsIDAgfQorCisjZGVmaW5lIEZUX0ZSQU1FX0xPTkcoIGYgKSAgICAgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfbG9uZ19iZSwgZiApCisjZGVmaW5lIEZUX0ZSQU1FX1VMT05HKCBmICkgICAgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfdWxvbmdfYmUsIGYgKQorI2RlZmluZSBGVF9GUkFNRV9TSE9SVCggZiApICAgICAgRlRfRlJBTUVfRklFTEQoIGZ0X2ZyYW1lX3Nob3J0X2JlLCBmICkKKyNkZWZpbmUgRlRfRlJBTUVfVVNIT1JUKCBmICkgICAgIEZUX0ZSQU1FX0ZJRUxEKCBmdF9mcmFtZV91c2hvcnRfYmUsIGYgKQorI2RlZmluZSBGVF9GUkFNRV9PRkYzKCBmICkgICAgICAgRlRfRlJBTUVfRklFTEQoIGZ0X2ZyYW1lX29mZjNfYmUsIGYgKQorI2RlZmluZSBGVF9GUkFNRV9VT0ZGMyggZiApICAgICAgRlRfRlJBTUVfRklFTEQoIGZ0X2ZyYW1lX3VvZmYzX2JlLCBmICkKKyNkZWZpbmUgRlRfRlJBTUVfQllURSggZiApICAgICAgIEZUX0ZSQU1FX0ZJRUxEKCBmdF9mcmFtZV9ieXRlLCBmICkKKyNkZWZpbmUgRlRfRlJBTUVfQ0hBUiggZiApICAgICAgIEZUX0ZSQU1FX0ZJRUxEKCBmdF9mcmFtZV9zY2hhciwgZiApCisKKyNkZWZpbmUgRlRfRlJBTUVfTE9OR19MRSggZiApICAgIEZUX0ZSQU1FX0ZJRUxEKCBmdF9mcmFtZV9sb25nX2xlLCBmICkKKyNkZWZpbmUgRlRfRlJBTUVfVUxPTkdfTEUoIGYgKSAgIEZUX0ZSQU1FX0ZJRUxEKCBmdF9mcmFtZV91bG9uZ19sZSwgZiApCisjZGVmaW5lIEZUX0ZSQU1FX1NIT1JUX0xFKCBmICkgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfc2hvcnRfbGUsIGYgKQorI2RlZmluZSBGVF9GUkFNRV9VU0hPUlRfTEUoIGYgKSAgRlRfRlJBTUVfRklFTEQoIGZ0X2ZyYW1lX3VzaG9ydF9sZSwgZiApCisjZGVmaW5lIEZUX0ZSQU1FX09GRjNfTEUoIGYgKSAgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfb2ZmM19sZSwgZiApCisjZGVmaW5lIEZUX0ZSQU1FX1VPRkYzX0xFKCBmICkgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfdW9mZjNfbGUsIGYgKQorCisjZGVmaW5lIEZUX0ZSQU1FX1NLSVBfTE9ORyAgICAgICB7IGZ0X2ZyYW1lX2xvbmdfYmUsIDAsIDAgfQorI2RlZmluZSBGVF9GUkFNRV9TS0lQX1NIT1JUICAgICAgeyBmdF9mcmFtZV9zaG9ydF9iZSwgMCwgMCB9CisjZGVmaW5lIEZUX0ZSQU1FX1NLSVBfQllURSAgICAgICB7IGZ0X2ZyYW1lX2J5dGUsIDAsIDAgfQorCisjZGVmaW5lIEZUX0ZSQU1FX0JZVEVTKCBmaWVsZCwgY291bnQgKSBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBmdF9mcmFtZV9ieXRlcywgICAgICAgICAgICBcCisgICAgICAgICAgICBjb3VudCwgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9PRkZTRVQoIGZpZWxkICkgICBcCisgICAgICAgICAgfQorCisjZGVmaW5lIEZUX0ZSQU1FX1NLSVBfQllURVMoIGNvdW50ICkgIHsgZnRfZnJhbWVfc2tpcCwgY291bnQsIDAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJbnRlZ2VyIGV4dHJhY3Rpb24gbWFjcm9zIC0tIHRoZSBgYnVmZmVyJyBwYXJhbWV0ZXIgbXVzdCBBTFdBWVMgYmUgb2YgKi8KKyAgLyogdHlwZSBgY2hhcionIG9yIGVxdWl2YWxlbnQgKDEtYnl0ZSBlbGVtZW50cykuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIEZUX0JZVEVfKCBwLCBpICkgICggKChjb25zdCBGVF9CeXRlKikocCkpWyhpKV0gKQorCisjZGVmaW5lIEZUX0lOVDE2KCB4ICkgICAoIChGVF9JbnQxNikoeCkgICkKKyNkZWZpbmUgRlRfVUlOVDE2KCB4ICkgICggKEZUX1VJbnQxNikoeCkgKQorI2RlZmluZSBGVF9JTlQzMiggeCApICAgKCAoRlRfSW50MzIpKHgpICApCisjZGVmaW5lIEZUX1VJTlQzMiggeCApICAoIChGVF9VSW50MzIpKHgpICkKKworCisjZGVmaW5lIEZUX0JZVEVfVTE2KCBwLCBpLCBzICkgICggRlRfVUlOVDE2KCBGVF9CWVRFXyggcCwgaSApICkgPDwgKHMpICkKKyNkZWZpbmUgRlRfQllURV9VMzIoIHAsIGksIHMgKSAgKCBGVF9VSU5UMzIoIEZUX0JZVEVfKCBwLCBpICkgKSA8PCAocykgKQorCisKKyNkZWZpbmUgRlRfUEVFS19TSE9SVCggcCApICBGVF9JTlQxNiggRlRfQllURV9VMTYoIHAsIDAsIDgpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UxNiggcCwgMSwgMCkgKQorCisjZGVmaW5lIEZUX1BFRUtfVVNIT1JUKCBwICkgIEZUX1VJTlQxNiggRlRfQllURV9VMTYoIHAsIDAsIDggKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UxNiggcCwgMSwgMCApICkKKworI2RlZmluZSBGVF9QRUVLX0xPTkcoIHAgKSAgRlRfSU5UMzIoIEZUX0JZVEVfVTMyKCBwLCAwLCAyNCApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAxLCAxNiApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAyLCAgOCApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAzLCAgMCApICkKKworI2RlZmluZSBGVF9QRUVLX1VMT05HKCBwICkgIEZUX1VJTlQzMiggRlRfQllURV9VMzIoIHAsIDAsIDI0ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMSwgMTYgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAyLCAgOCApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDMsICAwICkgKQorCisjZGVmaW5lIEZUX1BFRUtfT0ZGMyggcCApICBGVF9JTlQzMiggRlRfQllURV9VMzIoIHAsIDAsIDE2ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDEsICA4ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDIsICAwICkgKQorCisjZGVmaW5lIEZUX1BFRUtfVU9GRjMoIHAgKSAgRlRfVUlOVDMyKCBGVF9CWVRFX1UzMiggcCwgMCwgMTYgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAxLCAgOCApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDIsICAwICkgKQorCisjZGVmaW5lIEZUX1BFRUtfU0hPUlRfTEUoIHAgKSAgRlRfSU5UMTYoIEZUX0JZVEVfVTE2KCBwLCAxLCA4ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTE2KCBwLCAwLCAwICkgKQorCisjZGVmaW5lIEZUX1BFRUtfVVNIT1JUX0xFKCBwICkgIEZUX1VJTlQxNiggRlRfQllURV9VMTYoIHAsIDEsIDggKSB8ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMTYoIHAsIDAsIDAgKSApCisKKyNkZWZpbmUgRlRfUEVFS19MT05HX0xFKCBwICkgIEZUX0lOVDMyKCBGVF9CWVRFX1UzMiggcCwgMywgMjQgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMiwgMTYgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMSwgIDggKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMCwgIDAgKSApCisKKyNkZWZpbmUgRlRfUEVFS19VTE9OR19MRSggcCApICBGVF9VSU5UMzIoIEZUX0JZVEVfVTMyKCBwLCAzLCAyNCApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDIsIDE2ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMSwgIDggKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAwLCAgMCApICkKKworI2RlZmluZSBGVF9QRUVLX09GRjNfTEUoIHAgKSAgRlRfSU5UMzIoIEZUX0JZVEVfVTMyKCBwLCAyLCAxNiApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAxLCAgOCApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAwLCAgMCApICkKKworI2RlZmluZSBGVF9QRUVLX1VPRkYzX0xFKCBwICkgIEZUX1VJTlQzMiggRlRfQllURV9VMzIoIHAsIDIsIDE2ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMSwgIDggKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAwLCAgMCApICkKKworCisjZGVmaW5lIEZUX05FWFRfQ0hBUiggYnVmZmVyICkgICAgICAgXAorICAgICAgICAgICggKHNpZ25lZCBjaGFyKSpidWZmZXIrKyApCisKKyNkZWZpbmUgRlRfTkVYVF9CWVRFKCBidWZmZXIgKSAgICAgICAgIFwKKyAgICAgICAgICAoICh1bnNpZ25lZCBjaGFyKSpidWZmZXIrKyApCisKKyNkZWZpbmUgRlRfTkVYVF9TSE9SVCggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIChzaG9ydCkoIGJ1ZmZlciArPSAyLCBGVF9QRUVLX1NIT1JUKCBidWZmZXIgLSAyICkgKSApCisKKyNkZWZpbmUgRlRfTkVYVF9VU0hPUlQoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAodW5zaWduZWQgc2hvcnQpKCBidWZmZXIgKz0gMiwgRlRfUEVFS19VU0hPUlQoIGJ1ZmZlciAtIDIgKSApICkKKworI2RlZmluZSBGVF9ORVhUX09GRjMoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIChsb25nKSggYnVmZmVyICs9IDMsIEZUX1BFRUtfT0ZGMyggYnVmZmVyIC0gMyApICkgKQorCisjZGVmaW5lIEZUX05FWFRfVU9GRjMoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoICh1bnNpZ25lZCBsb25nKSggYnVmZmVyICs9IDMsIEZUX1BFRUtfVU9GRjMoIGJ1ZmZlciAtIDMgKSApICkKKworI2RlZmluZSBGVF9ORVhUX0xPTkcoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIChsb25nKSggYnVmZmVyICs9IDQsIEZUX1BFRUtfTE9ORyggYnVmZmVyIC0gNCApICkgKQorCisjZGVmaW5lIEZUX05FWFRfVUxPTkcoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoICh1bnNpZ25lZCBsb25nKSggYnVmZmVyICs9IDQsIEZUX1BFRUtfVUxPTkcoIGJ1ZmZlciAtIDQgKSApICkKKworCisjZGVmaW5lIEZUX05FWFRfU0hPUlRfTEUoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAoc2hvcnQpKCBidWZmZXIgKz0gMiwgRlRfUEVFS19TSE9SVF9MRSggYnVmZmVyIC0gMiApICkgKQorCisjZGVmaW5lIEZUX05FWFRfVVNIT1JUX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKHVuc2lnbmVkIHNob3J0KSggYnVmZmVyICs9IDIsIEZUX1BFRUtfVVNIT1JUX0xFKCBidWZmZXIgLSAyICkgKSApCisKKyNkZWZpbmUgRlRfTkVYVF9PRkYzX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAobG9uZykoIGJ1ZmZlciArPSAzLCBGVF9QRUVLX09GRjNfTEUoIGJ1ZmZlciAtIDMgKSApICkKKworI2RlZmluZSBGVF9ORVhUX1VPRkYzX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAodW5zaWduZWQgbG9uZykoIGJ1ZmZlciArPSAzLCBGVF9QRUVLX1VPRkYzX0xFKCBidWZmZXIgLSAzICkgKSApCisKKyNkZWZpbmUgRlRfTkVYVF9MT05HX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAobG9uZykoIGJ1ZmZlciArPSA0LCBGVF9QRUVLX0xPTkdfTEUoIGJ1ZmZlciAtIDQgKSApICkKKworI2RlZmluZSBGVF9ORVhUX1VMT05HX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAodW5zaWduZWQgbG9uZykoIGJ1ZmZlciArPSA0LCBGVF9QRUVLX1VMT05HX0xFKCBidWZmZXIgLSA0ICkgKSApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEVhY2ggR0VUX3h4eHgoKSBtYWNybyB1c2VzIGFuIGltcGxpY2l0IGBzdHJlYW0nIHZhcmlhYmxlLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZiAwCisjZGVmaW5lIEZUX0dFVF9NQUNSTyggdHlwZSApICAgIEZUX05FWFRfICMjIHR5cGUgKCBzdHJlYW0tPmN1cnNvciApCisKKyNkZWZpbmUgRlRfR0VUX0NIQVIoKSAgICAgICBGVF9HRVRfTUFDUk8oIENIQVIgKQorI2RlZmluZSBGVF9HRVRfQllURSgpICAgICAgIEZUX0dFVF9NQUNSTyggQllURSApCisjZGVmaW5lIEZUX0dFVF9TSE9SVCgpICAgICAgRlRfR0VUX01BQ1JPKCBTSE9SVCApCisjZGVmaW5lIEZUX0dFVF9VU0hPUlQoKSAgICAgRlRfR0VUX01BQ1JPKCBVU0hPUlQgKQorI2RlZmluZSBGVF9HRVRfT0ZGMygpICAgICAgIEZUX0dFVF9NQUNSTyggT0ZGMyApCisjZGVmaW5lIEZUX0dFVF9VT0ZGMygpICAgICAgRlRfR0VUX01BQ1JPKCBVT0ZGMyApCisjZGVmaW5lIEZUX0dFVF9MT05HKCkgICAgICAgRlRfR0VUX01BQ1JPKCBMT05HICkKKyNkZWZpbmUgRlRfR0VUX1VMT05HKCkgICAgICBGVF9HRVRfTUFDUk8oIFVMT05HICkKKyNkZWZpbmUgRlRfR0VUX1RBRzQoKSAgICAgICBGVF9HRVRfTUFDUk8oIFVMT05HICkKKworI2RlZmluZSBGVF9HRVRfU0hPUlRfTEUoKSAgIEZUX0dFVF9NQUNSTyggU0hPUlRfTEUgKQorI2RlZmluZSBGVF9HRVRfVVNIT1JUX0xFKCkgIEZUX0dFVF9NQUNSTyggVVNIT1JUX0xFICkKKyNkZWZpbmUgRlRfR0VUX0xPTkdfTEUoKSAgICBGVF9HRVRfTUFDUk8oIExPTkdfTEUgKQorI2RlZmluZSBGVF9HRVRfVUxPTkdfTEUoKSAgIEZUX0dFVF9NQUNSTyggVUxPTkdfTEUgKQorCisjZWxzZQorI2RlZmluZSBGVF9HRVRfTUFDUk8oIGZ1bmMsIHR5cGUgKSAgICAgICAgKCAodHlwZSlmdW5jKCBzdHJlYW0gKSApCisKKyNkZWZpbmUgRlRfR0VUX0NIQVIoKSAgICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRDaGFyLCBGVF9DaGFyICkKKyNkZWZpbmUgRlRfR0VUX0JZVEUoKSAgICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRDaGFyLCBGVF9CeXRlICkKKyNkZWZpbmUgRlRfR0VUX1NIT1JUKCkgICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVU2hvcnQsIEZUX1Nob3J0ICkKKyNkZWZpbmUgRlRfR0VUX1VTSE9SVCgpICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVU2hvcnQsIEZUX1VTaG9ydCApCisjZGVmaW5lIEZUX0dFVF9PRkYzKCkgICAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VU9mZnNldCwgRlRfTG9uZyApCisjZGVmaW5lIEZUX0dFVF9VT0ZGMygpICAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VU9mZnNldCwgRlRfVUxvbmcgKQorI2RlZmluZSBGVF9HRVRfTE9ORygpICAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVMb25nLCBGVF9Mb25nICkKKyNkZWZpbmUgRlRfR0VUX1VMT05HKCkgICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVTG9uZywgRlRfVUxvbmcgKQorI2RlZmluZSBGVF9HRVRfVEFHNCgpICAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVMb25nLCBGVF9VTG9uZyApCisKKyNkZWZpbmUgRlRfR0VUX1NIT1JUX0xFKCkgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVU2hvcnRMRSwgRlRfU2hvcnQgKQorI2RlZmluZSBGVF9HRVRfVVNIT1JUX0xFKCkgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVTaG9ydExFLCBGVF9VU2hvcnQgKQorI2RlZmluZSBGVF9HRVRfTE9OR19MRSgpICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVMb25nTEUsIEZUX0xvbmcgKQorI2RlZmluZSBGVF9HRVRfVUxPTkdfTEUoKSAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVMb25nTEUsIEZUX1VMb25nICkKKyNlbmRpZgorCisjZGVmaW5lIEZUX1JFQURfTUFDUk8oIGZ1bmMsIHR5cGUsIHZhciApICAgICAgICBcCisgICAgICAgICAgKCB2YXIgPSAodHlwZSlmdW5jKCBzdHJlYW0sICZlcnJvciApLCBcCisgICAgICAgICAgICBlcnJvciAhPSBGVF9FcnJfT2sgKQorCisjZGVmaW5lIEZUX1JFQURfQllURSggdmFyICkgICAgICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRDaGFyLCBGVF9CeXRlLCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX0NIQVIoIHZhciApICAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkQ2hhciwgRlRfQ2hhciwgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9TSE9SVCggdmFyICkgICAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVTaG9ydCwgRlRfU2hvcnQsIHZhciApCisjZGVmaW5lIEZUX1JFQURfVVNIT1JUKCB2YXIgKSAgICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVU2hvcnQsIEZUX1VTaG9ydCwgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9PRkYzKCB2YXIgKSAgICAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVPZmZzZXQsIEZUX0xvbmcsIHZhciApCisjZGVmaW5lIEZUX1JFQURfVU9GRjMoIHZhciApICAgICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVT2Zmc2V0LCBGVF9VTG9uZywgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9MT05HKCB2YXIgKSAgICAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVMb25nLCBGVF9Mb25nLCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX1VMT05HKCB2YXIgKSAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVUxvbmcsIEZUX1VMb25nLCB2YXIgKQorCisjZGVmaW5lIEZUX1JFQURfU0hPUlRfTEUoIHZhciApICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVU2hvcnRMRSwgRlRfU2hvcnQsIHZhciApCisjZGVmaW5lIEZUX1JFQURfVVNIT1JUX0xFKCB2YXIgKSAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVU2hvcnRMRSwgRlRfVVNob3J0LCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX0xPTkdfTEUoIHZhciApICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVUxvbmdMRSwgRlRfTG9uZywgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9VTE9OR19MRSggdmFyICkgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVMb25nTEUsIEZUX1VMb25nLCB2YXIgKQorCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9OT19ERUZBVUxUX1NZU1RFTQorCisgIC8qIGluaXRpYWxpemUgYSBzdHJlYW0gZm9yIHJlYWRpbmcgYSByZWd1bGFyIHN5c3RlbSBzdHJlYW0gKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fT3BlbiggRlRfU3RyZWFtICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBmaWxlcGF0aG5hbWUgKTsKKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fTk9fREVGQVVMVF9TWVNURU0gKi8KKworCisgIC8qIGNyZWF0ZSBhIG5ldyAoaW5wdXQpIHN0cmVhbSBmcm9tIGFuIEZUX09wZW5fQXJncyBzdHJ1Y3R1cmUgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fTmV3KCBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICBjb25zdCBGVF9PcGVuX0FyZ3MqICBhcmdzLAorICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICAgICAgICAgICphc3RyZWFtICk7CisKKyAgLyogZnJlZSBhIHN0cmVhbSAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfU3RyZWFtX0ZyZWUoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBleHRlcm5hbCApOworCisgIC8qIGluaXRpYWxpemUgYSBzdHJlYW0gZm9yIHJlYWRpbmcgaW4tbWVtb3J5IGRhdGEgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX1N0cmVhbV9PcGVuTWVtb3J5KCBGVF9TdHJlYW0gICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfQnl0ZSogIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgc2l6ZSApOworCisgIC8qIGNsb3NlIGEgc3RyZWFtIChkb2VzIG5vdCBkZXN0cm95IHRoZSBzdHJlYW0gc3RydWN0dXJlKSAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfU3RyZWFtX0Nsb3NlKCBGVF9TdHJlYW0gIHN0cmVhbSApOworCisKKyAgLyogc2VlayB3aXRoaW4gYSBzdHJlYW0uIHBvc2l0aW9uIGlzIHJlbGF0aXZlIHRvIHN0YXJ0IG9mIHN0cmVhbSAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9TZWVrKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgcG9zICk7CisKKyAgLyogc2tpcCBieXRlcyBpbiBhIHN0cmVhbSAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9Ta2lwKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgZGlzdGFuY2UgKTsKKworICAvKiByZXR1cm4gY3VycmVudCBzdHJlYW0gcG9zaXRpb24gKi8KKyAgRlRfQkFTRSggRlRfTG9uZyApCisgIEZUX1N0cmVhbV9Qb3MoIEZUX1N0cmVhbSAgc3RyZWFtICk7CisKKyAgLyogcmVhZCBieXRlcyBmcm9tIGEgc3RyZWFtIGludG8gYSB1c2VyLWFsbG9jYXRlZCBidWZmZXIsIHJldHVybnMgYW4gKi8KKyAgLyogZXJyb3IgaWYgbm90IGFsbCBieXRlcyBjb3VsZCBiZSByZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fUmVhZCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgY291bnQgKTsKKworICAvKiByZWFkIGJ5dGVzIGZyb20gYSBzdHJlYW0gYXQgYSBnaXZlbiBwb3NpdGlvbiAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9SZWFkQXQoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIHBvcywKKyAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgY291bnQgKTsKKworICAvKiB0cnkgdG8gcmVhZCBieXRlcyBhdCB0aGUgZW5kIG9mIGEgc3RyZWFtOyByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzICovCisgIC8qIHJlYWxseSBhdmFpbGFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfVUxvbmcgKQorICBGVF9TdHJlYW1fVHJ5UmVhZCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgY291bnQgKTsKKworICAvKiBFbnRlciBhIGZyYW1lIG9mIGBjb3VudCcgY29uc2VjdXRpdmUgYnl0ZXMgaW4gYSBzdHJlYW0uICBSZXR1cm5zIGFuICovCisgIC8qIGVycm9yIGlmIHRoZSBmcmFtZSBjb3VsZCBub3QgYmUgcmVhZC9hY2Nlc3NlZC4gIFRoZSBjYWxsZXIgY2FuIHVzZSAgKi8KKyAgLyogdGhlIEZUX1N0cmVhbV9HZXRfWFhYIGZ1bmN0aW9ucyB0byByZXRyaWV2ZSBmcmFtZSBkYXRhIHdpdGhvdXQgICAgICAqLworICAvKiBlcnJvciBjaGVja3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogWW91IG11c3QgX2Fsd2F5c18gY2FsbCBGVF9TdHJlYW1fRXhpdEZyYW1lKCkgb25jZSB5b3UgaGF2ZSBlbnRlcmVkICAqLworICAvKiBhIHN0cmVhbSBmcmFtZSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fRW50ZXJGcmFtZSggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIGNvdW50ICk7CisKKyAgLyogZXhpdCBhIHN0cmVhbSBmcmFtZSAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfU3RyZWFtX0V4aXRGcmFtZSggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworICAvKiBFeHRyYWN0IGEgc3RyZWFtIGZyYW1lLiAgSWYgdGhlIHN0cmVhbSBpcyBkaXNrLWJhc2VkLCBhIGhlYXAgYmxvY2sgKi8KKyAgLyogaXMgYWxsb2NhdGVkIGFuZCB0aGUgZnJhbWUgYnl0ZXMgYXJlIHJlYWQgaW50byBpdC4gIElmIHRoZSBzdHJlYW0gICovCisgIC8qIGlzIG1lbW9yeS1iYXNlZCwgdGhpcyBmdW5jdGlvbiBzaW1wbHkgc2V0IGEgcG9pbnRlciB0byB0aGUgZGF0YS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVXNlZnVsIHRvIG9wdGltaXplIGFjY2VzcyB0byBtZW1vcnktYmFzZWQgc3RyZWFtcyB0cmFuc3BhcmVudGx5LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBbGwgZXh0cmFjdGVkIGZyYW1lcyBtdXN0IGJlIGBmcmVlZCcgd2l0aCBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uICAgKi8KKyAgLyogRlRfU3RyZWFtX1JlbGVhc2VGcmFtZSgpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9FeHRyYWN0RnJhbWUoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiogIHBieXRlcyApOworCisgIC8qIHJlbGVhc2UgYW4gZXh0cmFjdCBmcmFtZSAoc2VlIEZUX1N0cmVhbV9FeHRyYWN0RnJhbWUpICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9TdHJlYW1fUmVsZWFzZUZyYW1lKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSoqICBwYnl0ZXMgKTsKKworICAvKiByZWFkIGEgYnl0ZSBmcm9tIGFuIGVudGVyZWQgZnJhbWUgKi8KKyAgRlRfQkFTRSggRlRfQ2hhciApCisgIEZUX1N0cmVhbV9HZXRDaGFyKCBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIC8qIHJlYWQgYSAxNi1iaXQgYmlnLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYW4gZW50ZXJlZCBmcmFtZSAqLworICBGVF9CQVNFKCBGVF9VU2hvcnQgKQorICBGVF9TdHJlYW1fR2V0VVNob3J0KCBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIC8qIHJlYWQgYSAyNC1iaXQgYmlnLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYW4gZW50ZXJlZCBmcmFtZSAqLworICBGVF9CQVNFKCBGVF9VTG9uZyApCisgIEZUX1N0cmVhbV9HZXRVT2Zmc2V0KCBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIC8qIHJlYWQgYSAzMi1iaXQgYmlnLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYW4gZW50ZXJlZCBmcmFtZSAqLworICBGVF9CQVNFKCBGVF9VTG9uZyApCisgIEZUX1N0cmVhbV9HZXRVTG9uZyggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworICAvKiByZWFkIGEgMTYtYml0IGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBmcm9tIGFuIGVudGVyZWQgZnJhbWUgKi8KKyAgRlRfQkFTRSggRlRfVVNob3J0ICkKKyAgRlRfU3RyZWFtX0dldFVTaG9ydExFKCBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIC8qIHJlYWQgYSAzMi1iaXQgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYW4gZW50ZXJlZCBmcmFtZSAqLworICBGVF9CQVNFKCBGVF9VTG9uZyApCisgIEZUX1N0cmVhbV9HZXRVTG9uZ0xFKCBGVF9TdHJlYW0gIHN0cmVhbSApOworCisKKyAgLyogcmVhZCBhIGJ5dGUgZnJvbSBhIHN0cmVhbSAqLworICBGVF9CQVNFKCBGVF9DaGFyICkKKyAgRlRfU3RyZWFtX1JlYWRDaGFyKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICk7CisKKyAgLyogcmVhZCBhIDE2LWJpdCBiaWctZW5kaWFuIHVuc2lnbmVkIGludGVnZXIgZnJvbSBhIHN0cmVhbSAqLworICBGVF9CQVNFKCBGVF9VU2hvcnQgKQorICBGVF9TdHJlYW1fUmVhZFVTaG9ydCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICk7CisKKyAgLyogcmVhZCBhIDI0LWJpdCBiaWctZW5kaWFuIHVuc2lnbmVkIGludGVnZXIgZnJvbSBhIHN0cmVhbSAqLworICBGVF9CQVNFKCBGVF9VTG9uZyApCisgIEZUX1N0cmVhbV9SZWFkVU9mZnNldCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApOworCisgIC8qIHJlYWQgYSAzMi1iaXQgYmlnLWVuZGlhbiBpbnRlZ2VyIGZyb20gYSBzdHJlYW0gKi8KKyAgRlRfQkFTRSggRlRfVUxvbmcgKQorICBGVF9TdHJlYW1fUmVhZFVMb25nKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApOworCisgIC8qIHJlYWQgYSAxNi1iaXQgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYSBzdHJlYW0gKi8KKyAgRlRfQkFTRSggRlRfVVNob3J0ICkKKyAgRlRfU3RyZWFtX1JlYWRVU2hvcnRMRSggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgZXJyb3IgKTsKKworICAvKiByZWFkIGEgMzItYml0IGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBmcm9tIGEgc3RyZWFtICovCisgIEZUX0JBU0UoIEZUX1VMb25nICkKKyAgRlRfU3RyZWFtX1JlYWRVTG9uZ0xFKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICk7CisKKyAgLyogUmVhZCBhIHN0cnVjdHVyZSBmcm9tIGEgc3RyZWFtLiAgVGhlIHN0cnVjdHVyZSBtdXN0IGJlIGRlc2NyaWJlZCAqLworICAvKiBieSBhbiBhcnJheSBvZiBGVF9GcmFtZV9GaWVsZCByZWNvcmRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX1JlYWRGaWVsZHMoIEZUX1N0cmVhbSAgICAgICAgICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfRnJhbWVfRmllbGQqICBmaWVsZHMsCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSApOworCisKKyNkZWZpbmUgRlRfU1RSRUFNX1BPUygpICAgICAgICAgICBcCisgICAgICAgICAgRlRfU3RyZWFtX1Bvcyggc3RyZWFtICkKKworI2RlZmluZSBGVF9TVFJFQU1fU0VFSyggcG9zaXRpb24gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfU0VUX0VSUk9SKCBGVF9TdHJlYW1fU2Vlayggc3RyZWFtLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpKHBvc2l0aW9uKSApICkKKworI2RlZmluZSBGVF9TVFJFQU1fU0tJUCggZGlzdGFuY2UgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9TRVRfRVJST1IoIEZUX1N0cmVhbV9Ta2lwKCBzdHJlYW0sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKGRpc3RhbmNlKSApICkKKworI2RlZmluZSBGVF9TVFJFQU1fUkVBRCggYnVmZmVyLCBjb3VudCApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfU0VUX0VSUk9SKCBGVF9TdHJlYW1fUmVhZCggc3RyZWFtLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfQnl0ZSopKGJ1ZmZlciksICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZykoY291bnQpICkgKQorCisjZGVmaW5lIEZUX1NUUkVBTV9SRUFEX0FUKCBwb3NpdGlvbiwgYnVmZmVyLCBjb3VudCApICAgICAgICAgICAgXAorICAgICAgICAgIEZUX1NFVF9FUlJPUiggRlRfU3RyZWFtX1JlYWRBdCggc3RyZWFtLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZykocG9zaXRpb24pLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfQnl0ZSopYnVmZmVyLCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKShjb3VudCkgKSApCisKKyNkZWZpbmUgRlRfU1RSRUFNX1JFQURfRklFTERTKCBmaWVsZHMsIG9iamVjdCApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfU0VUX0VSUk9SKCBGVF9TdHJlYW1fUmVhZEZpZWxkcyggc3RyZWFtLCBmaWVsZHMsIG9iamVjdCApICkKKworCisjZGVmaW5lIEZUX0ZSQU1FX0VOVEVSKCBzaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX1NFVF9FUlJPUiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZUX0RFQlVHX0lOTkVSKCBGVF9TdHJlYW1fRW50ZXJGcmFtZSggc3RyZWFtLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZykoc2l6ZSkgKSApICkKKworI2RlZmluZSBGVF9GUkFNRV9FWElUKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9ERUJVR19JTk5FUiggRlRfU3RyZWFtX0V4aXRGcmFtZSggc3RyZWFtICkgKQorCisjZGVmaW5lIEZUX0ZSQU1FX0VYVFJBQ1QoIHNpemUsIGJ5dGVzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfU0VUX0VSUk9SKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9ERUJVR19JTk5FUiggRlRfU3RyZWFtX0V4dHJhY3RGcmFtZSggc3RyZWFtLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKShzaXplKSwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0J5dGUqKikmKGJ5dGVzKSApICkgKQorCisjZGVmaW5lIEZUX0ZSQU1FX1JFTEVBU0UoIGJ5dGVzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9ERUJVR19JTk5FUiggRlRfU3RyZWFtX1JlbGVhc2VGcmFtZSggc3RyZWFtLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfQnl0ZSoqKSYoYnl0ZXMpICkgKQorCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRTVFJFQU1fSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDk4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaApAQCAtMCwwICsxLDE1MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnR0cmFjZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRyYWNpbmcgaGFuZGxpbmcgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLCAyMDA0LTIwMDcsIDIwMDksIDIwMTEtMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIGRlZmluaXRpb25zIG9mIHRyYWNlIGxldmVscyBmb3IgRnJlZVR5cGUgMiAqLworCisgIC8qIHRoZSBmaXJzdCBsZXZlbCBtdXN0IGFsd2F5cyBiZSBgdHJhY2VfYW55JyAqLworRlRfVFJBQ0VfREVGKCBhbnkgKQorCisgIC8qIGJhc2UgY29tcG9uZW50cyAqLworRlRfVFJBQ0VfREVGKCBjYWxjICkgICAgICAvKiBjYWxjdWxhdGlvbnMgICAgICAgICAgICAoZnRjYWxjLmMpICAgKi8KK0ZUX1RSQUNFX0RFRiggbWVtb3J5ICkgICAgLyogbWVtb3J5IG1hbmFnZXIgICAgICAgICAgKGZ0b2Jqcy5jKSAgICovCitGVF9UUkFDRV9ERUYoIHN0cmVhbSApICAgIC8qIHN0cmVhbSBtYW5hZ2VyICAgICAgICAgIChmdHN0cmVhbS5jKSAqLworRlRfVFJBQ0VfREVGKCBpbyApICAgICAgICAvKiBpL28gaW50ZXJmYWNlICAgICAgICAgICAoZnRzeXN0ZW0uYykgKi8KK0ZUX1RSQUNFX0RFRiggbGlzdCApICAgICAgLyogbGlzdCBtYW5hZ2VtZW50ICAgICAgICAgKGZ0bGlzdC5jKSAgICovCitGVF9UUkFDRV9ERUYoIGluaXQgKSAgICAgIC8qIGluaXRpYWxpemF0aW9uICAgICAgICAgIChmdGluaXQuYykgICAqLworRlRfVFJBQ0VfREVGKCBvYmpzICkgICAgICAvKiBiYXNlIG9iamVjdHMgICAgICAgICAgICAoZnRvYmpzLmMpICAgKi8KK0ZUX1RSQUNFX0RFRiggb3V0bGluZSApICAgLyogb3V0bGluZSBtYW5hZ2VtZW50ICAgICAgKGZ0b3V0bG4uYykgICovCitGVF9UUkFDRV9ERUYoIGdseXBoICkgICAgIC8qIGdseXBoIG1hbmFnZW1lbnQgICAgICAgIChmdGdseXBoLmMpICAqLworRlRfVFJBQ0VfREVGKCBnbG9hZGVyICkgICAvKiBnbHlwaCBsb2FkZXIgICAgICAgICAgICAoZnRnbG9hZHIuYykgKi8KKworRlRfVFJBQ0VfREVGKCByYXN0ZXIgKSAgICAvKiBtb25vY2hyb21lIHJhc3Rlcml6ZXIgICAoZnRyYXN0ZXIuYykgKi8KK0ZUX1RSQUNFX0RFRiggc21vb3RoICkgICAgLyogYW50aS1hbGlhc2luZyByYXN0ZXIgICAgKGZ0Z3JheXMuYykgICovCitGVF9UUkFDRV9ERUYoIG1tICkgICAgICAgIC8qIE1NIGludGVyZmFjZSAgICAgICAgICAgIChmdG1tLmMpICAgICAqLworRlRfVFJBQ0VfREVGKCByYWNjZXNzICkgICAvKiByZXNvdXJjZSBmb3JrIGFjY2Vzc29yICAoZnRyZm9yay5jKSAgKi8KK0ZUX1RSQUNFX0RFRiggc3ludGggKSAgICAgLyogYm9sZC9zbGFudCBzeW50aGVzaXplciAgKGZ0c3ludGguYykgICovCitGVF9UUkFDRV9ERUYoIGJpdG1hcCApICAgIC8qIGJpdG1hcCBjaGVja3N1bSAgICAgICAgIChmdG9ianMuYykgICAqLworCisgIC8qIENhY2hlIHN1Yi1zeXN0ZW0gKi8KK0ZUX1RSQUNFX0RFRiggY2FjaGUgKSAgICAgLyogY2FjaGUgc3ViLXN5c3RlbSAgICAgICAgKGZ0Y2FjaGUuYywgZXRjLikgKi8KKworICAvKiBTRk5UIGRyaXZlciBjb21wb25lbnRzICovCitGVF9UUkFDRV9ERUYoIHNmZHJpdmVyICkgIC8qIFNGTlQgZm9udCBkcml2ZXIgICAgICAgIChzZmRyaXZlci5jKSAqLworRlRfVFJBQ0VfREVGKCBzZm9ianMgKSAgICAvKiBTRk5UIG9iamVjdCBoYW5kbGVyICAgICAoc2ZvYmpzLmMpICAgKi8KK0ZUX1RSQUNFX0RFRiggdHRjbWFwICkgICAgLyogY2hhcm1hcCBoYW5kbGVyICAgICAgICAgKHR0Y21hcC5jKSAgICovCitGVF9UUkFDRV9ERUYoIHR0a2VybiApICAgIC8qIGtlcm5pbmcgaGFuZGxlciAgICAgICAgICh0dGtlcm4uYykgICAqLworRlRfVFJBQ0VfREVGKCB0dGxvYWQgKSAgICAvKiBiYXNpYyBUcnVlVHlwZSB0YWJsZXMgICAodHRsb2FkLmMpICAgKi8KK0ZUX1RSQUNFX0RFRiggdHRtdHggKSAgICAgLyogbWV0cmljcy1yZWxhdGVkIHRhYmxlcyAgKHR0bXR4LmMpICAgICovCitGVF9UUkFDRV9ERUYoIHR0cG9zdCApICAgIC8qIFBTIHRhYmxlIHByb2Nlc3NpbmcgICAgICh0dHBvc3QuYykgICAqLworRlRfVFJBQ0VfREVGKCB0dHNiaXQgKSAgICAvKiBUcnVlVHlwZSBzYml0IGhhbmRsaW5nICAodHRzYml0LmMpICAgKi8KK0ZUX1RSQUNFX0RFRiggdHRiZGYgKSAgICAgLyogVHJ1ZVR5cGUgZW1iZWRkZWQgQkRGICAgKHR0YmRmLmMpICAgICovCisKKyAgLyogVHJ1ZVR5cGUgZHJpdmVyIGNvbXBvbmVudHMgKi8KK0ZUX1RSQUNFX0RFRiggdHRkcml2ZXIgKSAgLyogVFQgZm9udCBkcml2ZXIgICAgICAgICAgKHR0ZHJpdmVyLmMpICovCitGVF9UUkFDRV9ERUYoIHR0Z2xvYWQgKSAgIC8qIFRUIGdseXBoIGxvYWRlciAgICAgICAgICh0dGdsb2FkLmMpICAqLworRlRfVFJBQ0VfREVGKCB0dGludGVycCApICAvKiBieXRlY29kZSBpbnRlcnByZXRlciAgICAodHRpbnRlcnAuYykgKi8KK0ZUX1RSQUNFX0RFRiggdHRvYmpzICkgICAgLyogVFQgb2JqZWN0cyBtYW5hZ2VyICAgICAgKHR0b2Jqcy5jKSAgICovCitGVF9UUkFDRV9ERUYoIHR0cGxvYWQgKSAgIC8qIFRUIGRhdGEvcHJvZ3JhbSBsb2FkZXIgICh0dHBsb2FkLmMpICAqLworRlRfVFJBQ0VfREVGKCB0dGd4dmFyICkgICAvKiBUcnVlVHlwZSBHWCB2YXIgaGFuZGxlciAodHRneHZhci5jKSAgKi8KKworICAvKiBUeXBlIDEgZHJpdmVyIGNvbXBvbmVudHMgKi8KK0ZUX1RSQUNFX0RFRiggdDFhZm0gKQorRlRfVFJBQ0VfREVGKCB0MWRyaXZlciApCitGVF9UUkFDRV9ERUYoIHQxZ2xvYWQgKQorRlRfVFJBQ0VfREVGKCB0MWhpbnQgKQorRlRfVFJBQ0VfREVGKCB0MWxvYWQgKQorRlRfVFJBQ0VfREVGKCB0MW9ianMgKQorRlRfVFJBQ0VfREVGKCB0MXBhcnNlICkKKworICAvKiBQb3N0U2NyaXB0IGhlbHBlciBtb2R1bGUgYHBzYXV4JyAqLworRlRfVFJBQ0VfREVGKCB0MWRlY29kZSApCitGVF9UUkFDRV9ERUYoIHBzb2JqcyApCitGVF9UUkFDRV9ERUYoIHBzY29udiApCisKKyAgLyogUG9zdFNjcmlwdCBoaW50aW5nIG1vZHVsZSBgcHNoaW50ZXInICovCitGVF9UUkFDRV9ERUYoIHBzaHJlYyApCitGVF9UUkFDRV9ERUYoIHBzaGFsZ28xICkKK0ZUX1RSQUNFX0RFRiggcHNoYWxnbzIgKQorCisgIC8qIFR5cGUgMiBkcml2ZXIgY29tcG9uZW50cyAqLworRlRfVFJBQ0VfREVGKCBjZmZkcml2ZXIgKQorRlRfVFJBQ0VfREVGKCBjZmZnbG9hZCApCitGVF9UUkFDRV9ERUYoIGNmZmxvYWQgKQorRlRfVFJBQ0VfREVGKCBjZmZvYmpzICkKK0ZUX1RSQUNFX0RFRiggY2ZmcGFyc2UgKQorCitGVF9UUkFDRV9ERUYoIGNmMmJsdWVzICkKK0ZUX1RSQUNFX0RFRiggY2YyaGludHMgKQorRlRfVFJBQ0VfREVGKCBjZjJpbnRlcnAgKQorCisgIC8qIFR5cGUgNDIgZHJpdmVyIGNvbXBvbmVudCAqLworRlRfVFJBQ0VfREVGKCB0NDIgKQorCisgIC8qIENJRCBkcml2ZXIgY29tcG9uZW50cyAqLworRlRfVFJBQ0VfREVGKCBjaWRhZm0gKQorRlRfVFJBQ0VfREVGKCBjaWRkcml2ZXIgKQorRlRfVFJBQ0VfREVGKCBjaWRnbG9hZCApCitGVF9UUkFDRV9ERUYoIGNpZGxvYWQgKQorRlRfVFJBQ0VfREVGKCBjaWRvYmpzICkKK0ZUX1RSQUNFX0RFRiggY2lkcGFyc2UgKQorCisgIC8qIFdpbmRvd3MgZm9udCBjb21wb25lbnQgKi8KK0ZUX1RSQUNFX0RFRiggd2luZm50ICkKKworICAvKiBQQ0YgZm9udCBjb21wb25lbnRzICovCitGVF9UUkFDRV9ERUYoIHBjZmRyaXZlciApCitGVF9UUkFDRV9ERUYoIHBjZnJlYWQgKQorCisgIC8qIEJERiBmb250IGNvbXBvbmVudHMgKi8KK0ZUX1RSQUNFX0RFRiggYmRmZHJpdmVyICkKK0ZUX1RSQUNFX0RFRiggYmRmbGliICkKKworICAvKiBQRlIgZm9udCBjb21wb25lbnQgKi8KK0ZUX1RSQUNFX0RFRiggcGZyICkKKworICAvKiBPcGVuVHlwZSB2YWxpZGF0aW9uIGNvbXBvbmVudHMgKi8KK0ZUX1RSQUNFX0RFRiggb3R2bW9kdWxlICkKK0ZUX1RSQUNFX0RFRiggb3R2Y29tbW9uICkKK0ZUX1RSQUNFX0RFRiggb3R2YmFzZSApCitGVF9UUkFDRV9ERUYoIG90dmdkZWYgKQorRlRfVFJBQ0VfREVGKCBvdHZncG9zICkKK0ZUX1RSQUNFX0RFRiggb3R2Z3N1YiApCitGVF9UUkFDRV9ERUYoIG90dmpzdGYgKQorRlRfVFJBQ0VfREVGKCBvdHZtYXRoICkKKworICAvKiBUcnVlVHlwZUdYL0FBVCB2YWxpZGF0aW9uIGNvbXBvbmVudHMgKi8KK0ZUX1RSQUNFX0RFRiggZ3h2bW9kdWxlICkKK0ZUX1RSQUNFX0RFRiggZ3h2Y29tbW9uICkKK0ZUX1RSQUNFX0RFRiggZ3h2ZmVhdCApCitGVF9UUkFDRV9ERUYoIGd4dm1vcnQgKQorRlRfVFJBQ0VfREVGKCBneHZtb3J4ICkKK0ZUX1RSQUNFX0RFRiggZ3h2YnNsbiApCitGVF9UUkFDRV9ERUYoIGd4dmp1c3QgKQorRlRfVFJBQ0VfREVGKCBneHZrZXJuICkKK0ZUX1RSQUNFX0RFRiggZ3h2b3BiZCApCitGVF9UUkFDRV9ERUYoIGd4dnRyYWsgKQorRlRfVFJBQ0VfREVGKCBneHZwcm9wICkKK0ZUX1RSQUNFX0RFRiggZ3h2bGNhciApCisKKyAgLyogYXV0b2ZpdCBjb21wb25lbnRzICovCitGVF9UUkFDRV9ERUYoIGFmbW9kdWxlICkKK0ZUX1RSQUNFX0RFRiggYWZoaW50cyApCitGVF9UUkFDRV9ERUYoIGFmY2prICkKK0ZUX1RSQUNFX0RFRiggYWZsYXRpbiApCitGVF9UUkFDRV9ERUYoIGFmbGF0aW4yICkKK0ZUX1RSQUNFX0RFRiggYWZ3YXJwICkKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dmFsaWQuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR2YWxpZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDI2MTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dmFsaWQuaApAQCAtMCwwICsxLDE2MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnR2YWxpZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIHZhbGlkYXRpb24gc3VwcG9ydCAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA0LCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRWQUxJRF9IX18KKyNkZWZpbmUgX19GVFZBTElEX0hfXworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi9jb25maWcvZnRzdGRsaWIuaCIgICAvKiBmb3IgZnRfc2V0am1wIGFuZCBmdF9sb25nam1wICovCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICBWIEEgTCBJIEQgQSBUIEkgTyBOICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyogaGFuZGxlIHRvIGEgdmFsaWRhdGlvbiBvYmplY3QgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfVmFsaWRhdG9yUmVjXyB2b2xhdGlsZSogIEZUX1ZhbGlkYXRvcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlcmUgYXJlIHRocmVlIGRpc3RpbmN0IHZhbGlkYXRpb24gbGV2ZWxzIGRlZmluZWQgaGVyZTogICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGVF9WQUxJREFURV9ERUZBVUxUIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBBIHRhYmxlIHRoYXQgcGFzc2VzIHRoaXMgdmFsaWRhdGlvbiBsZXZlbCBjYW4gYmUgdXNlZCByZWxpYWJseSBieSAgICovCisgIC8qICAgRnJlZVR5cGUuICBJdCBnZW5lcmFsbHkgbWVhbnMgdGhhdCBhbGwgb2Zmc2V0cyBoYXZlIGJlZW4gY2hlY2tlZCB0byAqLworICAvKiAgIHByZXZlbnQgb3V0LW9mLWJvdW5kIHJlYWRzLCB0aGF0IGFycmF5IGNvdW50cyBhcmUgY29ycmVjdCwgZXRjLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZUX1ZBTElEQVRFX1RJR0hUIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEEgdGFibGUgdGhhdCBwYXNzZXMgdGhpcyB2YWxpZGF0aW9uIGxldmVsIGNhbiBiZSB1c2VkIHJlbGlhYmx5IGFuZCAgKi8KKyAgLyogICBkb2Vzbid0IGNvbnRhaW4gaW52YWxpZCBkYXRhLiAgRm9yIGV4YW1wbGUsIGEgY2hhcm1hcCB0YWJsZSB0aGF0ICAgICovCisgIC8qICAgcmV0dXJucyBpbnZhbGlkIGdseXBoIGluZGljZXMgd2lsbCBub3QgcGFzcywgZXZlbiB0aG91Z2ggaXQgY2FuICAgICAqLworICAvKiAgIGJlIHVzZWQgd2l0aCBGcmVlVHlwZSBpbiBkZWZhdWx0IG1vZGUgKHRoZSBsaWJyYXJ5IHdpbGwgc2ltcGx5ICAgICAgKi8KKyAgLyogICByZXR1cm4gYW4gZXJyb3IgbGF0ZXIgd2hlbiB0cnlpbmcgdG8gbG9hZCB0aGUgZ2x5cGgpLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEl0IGFsc28gY2hlY2tzIHRoYXQgZmllbGRzIHdoaWNoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAyLCA0LCBvciA4LCAgKi8KKyAgLyogICBkb24ndCBoYXZlIGluY29ycmVjdCB2YWx1ZXMsIGV0Yy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGVF9WQUxJREFURV9QQVJBTk9JRCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBPbmx5IGZvciBmb250IGRlYnVnZ2luZy4gIENoZWNrcyB0aGF0IGEgdGFibGUgZm9sbG93cyB0aGUgICAgICAgICAgICovCisgIC8qICAgc3BlY2lmaWNhdGlvbiBieSAxMDAlLiAgVmVyeSBmZXcgZm9udHMgd2lsbCBiZSBhYmxlIHRvIHBhc3MgdGhpcyAgICAqLworICAvKiAgIGxldmVsIGFueXdheSBidXQgaXQgY2FuIGJlIHVzZWZ1bCBmb3IgY2VydGFpbiB0b29scyBsaWtlIGZvbnQgICAgICAgKi8KKyAgLyogICBlZGl0b3JzL2NvbnZlcnRlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIEZUX1ZhbGlkYXRpb25MZXZlbF8KKyAgeworICAgIEZUX1ZBTElEQVRFX0RFRkFVTFQgPSAwLAorICAgIEZUX1ZBTElEQVRFX1RJR0hULAorICAgIEZUX1ZBTElEQVRFX1BBUkFOT0lECisKKyAgfSBGVF9WYWxpZGF0aW9uTGV2ZWw7CisKKworI2lmIGRlZmluZWQoIF9NU0NfVkVSICkgICAgICAvKiBWaXN1YWwgQysrIChhbmQgSW50ZWwgQysrKSAqLworICAvKiBXZSBkaXNhYmxlIHRoZSB3YXJuaW5nIGBzdHJ1Y3R1cmUgd2FzIHBhZGRlZCBkdWUgdG8gICAqLworICAvKiBfX2RlY2xzcGVjKGFsaWduKCkpJyBpbiBvcmRlciB0byBjb21waWxlIGNsZWFubHkgd2l0aCAqLworICAvKiB0aGUgbWF4aW11bSBsZXZlbCBvZiB3YXJuaW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAqLworI3ByYWdtYSB3YXJuaW5nKCBwdXNoICkKKyNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQzMjQgKQorI2VuZGlmIC8qIF9NU0NfVkVSICovCisKKyAgLyogdmFsaWRhdG9yIHN0cnVjdHVyZSAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfVmFsaWRhdG9yUmVjXworICB7CisgICAgY29uc3QgRlRfQnl0ZSogICAgICBiYXNlOyAgICAgICAgLyogYWRkcmVzcyBvZiB0YWJsZSBpbiBtZW1vcnkgICAgICAgKi8KKyAgICBjb25zdCBGVF9CeXRlKiAgICAgIGxpbWl0OyAgICAgICAvKiBgYmFzZScgKyBzaXplb2YodGFibGUpIGluIG1lbW9yeSAqLworICAgIEZUX1ZhbGlkYXRpb25MZXZlbCAgbGV2ZWw7ICAgICAgIC8qIHZhbGlkYXRpb24gbGV2ZWwgICAgICAgICAgICAgICAgICovCisgICAgRlRfRXJyb3IgICAgICAgICAgICBlcnJvcjsgICAgICAgLyogZXJyb3IgcmV0dXJuZWQuIDAgbWVhbnMgc3VjY2VzcyAgKi8KKworICAgIGZ0X2ptcF9idWYgICAgICAgICAganVtcF9idWZmZXI7IC8qIHVzZWQgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyAgICAgICovCisKKyAgfSBGVF9WYWxpZGF0b3JSZWM7CisKKyNpZiBkZWZpbmVkKCBfTVNDX1ZFUiApCisjcHJhZ21hIHdhcm5pbmcoIHBvcCApCisjZW5kaWYKKworI2RlZmluZSBGVF9WQUxJREFUT1IoIHggKSAgKCAoRlRfVmFsaWRhdG9yKSggeCApICkKKworCisgIEZUX0JBU0UoIHZvaWQgKQorICBmdF92YWxpZGF0b3JfaW5pdCggRlRfVmFsaWRhdG9yICAgICAgICB2YWxpZCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0J5dGUqICAgICAgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0J5dGUqICAgICAgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICBGVF9WYWxpZGF0aW9uTGV2ZWwgIGxldmVsICk7CisKKyAgLyogRG8gbm90IHVzZSB0aGlzLiBJdCdzIGJyb2tlbiBhbmQgd2lsbCBjYXVzZSB5b3VyIHZhbGlkYXRvciB0byBjcmFzaCAqLworICAvKiBpZiB5b3UgcnVuIGl0IG9uIGFuIGludmFsaWQgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX0ludCApCisgIGZ0X3ZhbGlkYXRvcl9ydW4oIEZUX1ZhbGlkYXRvciAgdmFsaWQgKTsKKworICAvKiBTZXRzIHRoZSBlcnJvciBmaWVsZCBpbiBhIHZhbGlkYXRvciwgdGhlbiBjYWxscyBgbG9uZ2ptcCcgdG8gcmV0dXJuICovCisgIC8qIHRvIGhpZ2gtbGV2ZWwgY2FsbGVyLiAgVXNpbmcgYHNldGptcC9sb25nam1wJyBhdm9pZHMgbWFueSBzdHVwaWQgICAgKi8KKyAgLyogZXJyb3IgY2hlY2tzIHdpdGhpbiB0aGUgdmFsaWRhdGlvbiByb3V0aW5lcy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBmdF92YWxpZGF0b3JfZXJyb3IoIEZUX1ZhbGlkYXRvciAgdmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IgICAgICBlcnJvciApOworCisKKyAgLyogQ2FsbHMgZnRfdmFsaWRhdGVfZXJyb3IuICBBc3N1bWVzIHRoYXQgdGhlIGB2YWxpZCcgbG9jYWwgdmFyaWFibGUgKi8KKyAgLyogaG9sZHMgYSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHZhbGlkYXRvciBvYmplY3QuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVXNlIHByZXByb2Nlc3NvciBwcmVzY2FuIHRvIHBhc3MgRlRfRVJSX1BSRUZJWC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfSU5WQUxJRCggX3ByZWZpeCwgX2Vycm9yICkgIEZUX0lOVkFMSURfKCBfcHJlZml4LCBfZXJyb3IgKQorI2RlZmluZSBGVF9JTlZBTElEXyggX3ByZWZpeCwgX2Vycm9yICkgXAorICAgICAgICAgIGZ0X3ZhbGlkYXRvcl9lcnJvciggdmFsaWQsIF9wcmVmaXggIyMgX2Vycm9yICkKKworICAvKiBjYWxsZWQgd2hlbiBhIGJyb2tlbiB0YWJsZSBpcyBkZXRlY3RlZCAqLworI2RlZmluZSBGVF9JTlZBTElEX1RPT19TSE9SVCBcCisgICAgICAgICAgRlRfSU5WQUxJRCggRlRfRVJSX1BSRUZJWCwgSW52YWxpZF9UYWJsZSApCisKKyAgLyogY2FsbGVkIHdoZW4gYW4gaW52YWxpZCBvZmZzZXQgaXMgZGV0ZWN0ZWQgKi8KKyNkZWZpbmUgRlRfSU5WQUxJRF9PRkZTRVQgXAorICAgICAgICAgIEZUX0lOVkFMSUQoIEZUX0VSUl9QUkVGSVgsIEludmFsaWRfT2Zmc2V0ICkKKworICAvKiBjYWxsZWQgd2hlbiBhbiBpbnZhbGlkIGZvcm1hdC92YWx1ZSBpcyBkZXRlY3RlZCAqLworI2RlZmluZSBGVF9JTlZBTElEX0ZPUk1BVCBcCisgICAgICAgICAgRlRfSU5WQUxJRCggRlRfRVJSX1BSRUZJWCwgSW52YWxpZF9UYWJsZSApCisKKyAgLyogY2FsbGVkIHdoZW4gYW4gaW52YWxpZCBnbHlwaCBpbmRleCBpcyBkZXRlY3RlZCAqLworI2RlZmluZSBGVF9JTlZBTElEX0dMWVBIX0lEIFwKKyAgICAgICAgICBGVF9JTlZBTElEKCBGVF9FUlJfUFJFRklYLCBJbnZhbGlkX0dseXBoX0luZGV4ICkKKworICAvKiBjYWxsZWQgd2hlbiBhbiBpbnZhbGlkIGZpZWxkIHZhbHVlIGlzIGRldGVjdGVkICovCisjZGVmaW5lIEZUX0lOVkFMSURfREFUQSBcCisgICAgICAgICAgRlRfSU5WQUxJRCggRlRfRVJSX1BSRUZJWCwgSW52YWxpZF9UYWJsZSApCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFZBTElEX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MmFmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmgKQEAgLTAsMCArMSw2MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgaW50ZXJuYWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEludGVybmFsIGhlYWRlciBmaWxlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDQsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQgYnkgYGZ0MmJ1aWxkLmgnLiAgICAgICAgICAgICAgICAgICovCisgIC8qIERvIG5vdCBpbmNsdWRlIGl0IG1hbnVhbGx5ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2RlZmluZSBGVF9JTlRFUk5BTF9PQkpFQ1RTX0ggICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oPgorI2RlZmluZSBGVF9JTlRFUk5BTF9QSUNfSCAgICAgICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL2Z0cGljLmg+CisjZGVmaW5lIEZUX0lOVEVSTkFMX1NUUkVBTV9IICAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfTUVNT1JZX0ggICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oPgorI2RlZmluZSBGVF9JTlRFUk5BTF9ERUJVR19IICAgICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfQ0FMQ19IICAgICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfRFJJVkVSX0ggICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oPgorI2RlZmluZSBGVF9JTlRFUk5BTF9UUkFDRV9IICAgICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfR0xZUEhfTE9BREVSX0ggICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oPgorI2RlZmluZSBGVF9JTlRFUk5BTF9TRk5UX0ggICAgICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3NmbnQuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfU0VSVklDRV9IICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfUkZPUktfSCAgICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdHJmb3JrLmg+CisjZGVmaW5lIEZUX0lOVEVSTkFMX1ZBTElEQVRFX0ggICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvZnR2YWxpZC5oPgorCisjZGVmaW5lIEZUX0lOVEVSTkFMX1RSVUVUWVBFX1RZUEVTX0ggICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oPgorI2RlZmluZSBGVF9JTlRFUk5BTF9UWVBFMV9UWVBFU19IICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaD4KKworI2RlZmluZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0FVWF9IICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3BzYXV4Lmg+CisjZGVmaW5lIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSCAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oPgorI2RlZmluZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0dMT0JBTFNfSCAgPGZyZWV0eXBlL2ludGVybmFsL3BzZ2xvYmFsLmg+CisKKyNkZWZpbmUgRlRfSU5URVJOQUxfQVVUT0hJTlRfSCAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9hdXRvaGludC5oPgorCisKKyNpZiBkZWZpbmVkKCBfTVNDX1ZFUiApICAgICAgLyogVmlzdWFsIEMrKyAoYW5kIEludGVsIEMrKykgKi8KKworICAvKiBXZSBkaXNhYmxlIHRoZSB3YXJuaW5nIGBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50JyBoZXJlICovCisgIC8qIGluIG9yZGVyIHRvIGNvbXBpbGUgY2xlYW5seSB3aXRoIHRoZSBtYXhpbXVtIGxldmVsIG9mIHdhcm5pbmdzLiAgKi8KKyAgLyogSW4gcGFydGljdWxhciwgdGhlIHdhcm5pbmcgY29tcGxhaW5zIGFib3V0IHN0dWZmIGxpa2UgYHdoaWxlKDApJyAqLworICAvKiB3aGljaCBpcyB2ZXJ5IHVzZWZ1bCBpbiBtYWNybyBkZWZpbml0aW9ucy4gIFRoZXJlIGlzIG5vIGJlbmVmaXQgICovCisgIC8qIGluIGhhdmluZyBpdCBlbmFibGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQxMjcgKQorCisjZW5kaWYgLyogX01TQ19WRVIgKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTI4ZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oCkBAIC0wLDAgKzEsODc3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2F1eC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQXV4aWxpYXJ5IGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0ZWQgdG8gUG9zdFNjcmlwdCBmb250cyAgKi8KKy8qICAgIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDQsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fUFNBVVhfSF9fCisjZGVmaW5lIF9fUFNBVVhfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnRvYmpzLmgiCisjaW5jbHVkZSAidDF0eXBlcy5oIgorI2luY2x1ZGUgInNlcnZpY2VzL3N2cHNjbWFwLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQxX1RBQkxFICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIHR5cGVkZWYgc3RydWN0IFBTX1RhYmxlUmVjXyogICAgICAgICAgICAgIFBTX1RhYmxlOworICB0eXBlZGVmIGNvbnN0IHN0cnVjdCBQU19UYWJsZV9GdW5jc1JlY18qICBQU19UYWJsZV9GdW5jczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBTX1RhYmxlX0Z1bmNzUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2V0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIG1hbmFnZSBQU19UYWJsZSBvYmplY3RzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhYmxlX2luaXQgICAgOjogVXNlZCB0byBpbml0aWFsaXplIGEgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFibGVfZG9uZSAgICA6OiBGaW5hbGl6ZXMgcmVzcC4gZGVzdHJveSBhIGdpdmVuIHRhYmxlLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWJsZV9hZGQgICAgIDo6IEFkZHMgYSBuZXcgb2JqZWN0IHRvIGEgdGFibGUuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhYmxlX3JlbGVhc2UgOjogUmVsZWFzZXMgdGFibGUgZGF0YSwgdGhlbiBmaW5hbGl6ZXMgaXQuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTX1RhYmxlX0Z1bmNzUmVjXworICB7CisgICAgRlRfRXJyb3IKKyAgICAoKmluaXQpKCBQU19UYWJsZSAgIHRhYmxlLAorICAgICAgICAgICAgIEZUX0ludCAgICAgY291bnQsCisgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgKTsKKworICAgIHZvaWQKKyAgICAoKmRvbmUpKCBQU19UYWJsZSAgdGFibGUgKTsKKworICAgIEZUX0Vycm9yCisgICAgKCphZGQpKCBQU19UYWJsZSAgICB0YWJsZSwKKyAgICAgICAgICAgIEZUX0ludCAgICAgIGlkeCwKKyAgICAgICAgICAgIHZvaWQqICAgICAgIG9iamVjdCwKKyAgICAgICAgICAgIEZUX1B0ckRpc3QgIGxlbmd0aCApOworCisgICAgdm9pZAorICAgICgqcmVsZWFzZSkoIFBTX1RhYmxlICB0YWJsZSApOworCisgIH0gUFNfVGFibGVfRnVuY3NSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQU19UYWJsZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIFBTX1RhYmxlIGlzIGEgc2ltcGxlIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuIGFycmF5IG9mIG9iamVjdHMgaW4gKi8KKyAgLyogICAgYSBzaW5nbGUgbWVtb3J5IGJsb2NrLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmxvY2sgICAgIDo6IFRoZSBhZGRyZXNzIGluIG1lbW9yeSBvZiB0aGUgZ3Jvd2hlYXAncyBibG9jay4gIFRoaXMgICovCisgIC8qICAgICAgICAgICAgICAgICBjYW4gY2hhbmdlIGJldHdlZW4gdHdvIG9iamVjdCBhZGRzLCBkdWUgdG8gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgcmVhbGxvY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGN1cnNvciAgICA6OiBUaGUgY3VycmVudCB0b3Agb2YgdGhlIGdyb3cgaGVhcCB3aXRoaW4gaXRzIGJsb2NrLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FwYWNpdHkgIDo6IFRoZSBjdXJyZW50IHNpemUgb2YgdGhlIGhlYXAgYmxvY2suICBJbmNyZW1lbnRzIGJ5ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAxa0J5dGUgY2h1bmtzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW5pdCAgICAgIDo6IFNldCB0byAweERFQURCRUVGIGlmIGBlbGVtZW50cycgYW5kIGBsZW5ndGhzJyBoYXZlICAgICovCisgIC8qICAgICAgICAgICAgICAgICBiZWVuIGFsbG9jYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X2VsZW1zIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBpbiB0YWJsZS4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fZWxlbXMgOjogVGhlIGN1cnJlbnQgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRhYmxlLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGVsZW1lbnRzICA6OiBBIHRhYmxlIG9mIGVsZW1lbnQgYWRkcmVzc2VzIHdpdGhpbiB0aGUgYmxvY2suICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGVuZ3RocyAgIDo6IEEgdGFibGUgb2YgZWxlbWVudCBzaXplcyB3aXRoaW4gdGhlIGJsb2NrLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZW1vcnkgICAgOjogVGhlIG9iamVjdCB1c2VkIGZvciBtZW1vcnkgb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIChhbGxvYy9yZWFsbG9jKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdW5jcyAgICAgOjogQSB0YWJsZSBvZiBtZXRob2QgcG9pbnRlcnMgZm9yIHRoaXMgb2JqZWN0LiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19UYWJsZVJlY18KKyAgeworICAgIEZUX0J5dGUqICAgICAgICAgICBibG9jazsgICAgICAgICAgLyogY3VycmVudCBtZW1vcnkgYmxvY2sgICAgICAgICAgICovCisgICAgRlRfT2Zmc2V0ICAgICAgICAgIGN1cnNvcjsgICAgICAgICAvKiBjdXJyZW50IGN1cnNvciBpbiBtZW1vcnkgYmxvY2sgKi8KKyAgICBGVF9PZmZzZXQgICAgICAgICAgY2FwYWNpdHk7ICAgICAgIC8qIGN1cnJlbnQgc2l6ZSBvZiBtZW1vcnkgYmxvY2sgICAqLworICAgIEZUX0xvbmcgICAgICAgICAgICBpbml0OworCisgICAgRlRfSW50ICAgICAgICAgICAgIG1heF9lbGVtczsKKyAgICBGVF9JbnQgICAgICAgICAgICAgbnVtX2VsZW1zOworICAgIEZUX0J5dGUqKiAgICAgICAgICBlbGVtZW50czsgICAgICAgLyogYWRkcmVzc2VzIG9mIHRhYmxlIGVsZW1lbnRzICovCisgICAgRlRfUHRyRGlzdCogICAgICAgIGxlbmd0aHM7ICAgICAgICAvKiBsZW5ndGhzIG9mIHRhYmxlIGVsZW1lbnRzICAgKi8KKworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnk7CisgICAgUFNfVGFibGVfRnVuY3NSZWMgIGZ1bmNzOworCisgIH0gUFNfVGFibGVSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgIFQxIEZJRUxEUyAmIFRPS0VOUyAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICB0eXBlZGVmIHN0cnVjdCBQU19QYXJzZXJSZWNfKiAgUFNfUGFyc2VyOworCisgIHR5cGVkZWYgc3RydWN0IFQxX1Rva2VuUmVjXyogICBUMV9Ub2tlbjsKKworICB0eXBlZGVmIHN0cnVjdCBUMV9GaWVsZFJlY18qICAgVDFfRmllbGQ7CisKKworICAvKiBzaW1wbGUgZW51bWVyYXRpb24gdHlwZSB1c2VkIHRvIGlkZW50aWZ5IHRva2VuIHR5cGVzICovCisgIHR5cGVkZWYgZW51bSAgVDFfVG9rZW5UeXBlXworICB7CisgICAgVDFfVE9LRU5fVFlQRV9OT05FID0gMCwKKyAgICBUMV9UT0tFTl9UWVBFX0FOWSwKKyAgICBUMV9UT0tFTl9UWVBFX1NUUklORywKKyAgICBUMV9UT0tFTl9UWVBFX0FSUkFZLAorICAgIFQxX1RPS0VOX1RZUEVfS0VZLCAvKiBha2EgYG5hbWUnICovCisKKyAgICAvKiBkbyBub3QgcmVtb3ZlICovCisgICAgVDFfVE9LRU5fVFlQRV9NQVgKKworICB9IFQxX1Rva2VuVHlwZTsKKworCisgIC8qIGEgc2ltcGxlIHN0cnVjdHVyZSB1c2VkIHRvIGlkZW50aWZ5IHRva2VucyAqLworICB0eXBlZGVmIHN0cnVjdCAgVDFfVG9rZW5SZWNfCisgIHsKKyAgICBGVF9CeXRlKiAgICAgIHN0YXJ0OyAgIC8qIGZpcnN0IGNoYXJhY3RlciBvZiB0b2tlbiBpbiBpbnB1dCBzdHJlYW0gKi8KKyAgICBGVF9CeXRlKiAgICAgIGxpbWl0OyAgIC8qIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgdG9rZW4gICAgICAgICAgKi8KKyAgICBUMV9Ub2tlblR5cGUgIHR5cGU7ICAgIC8qIHR5cGUgb2YgdG9rZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICB9IFQxX1Rva2VuUmVjOworCisKKyAgLyogZW51bWVyYXRpb24gdHlwZSB1c2VkIHRvIGlkZW50aWZ5IG9iamVjdCBmaWVsZHMgKi8KKyAgdHlwZWRlZiBlbnVtICBUMV9GaWVsZFR5cGVfCisgIHsKKyAgICBUMV9GSUVMRF9UWVBFX05PTkUgPSAwLAorICAgIFQxX0ZJRUxEX1RZUEVfQk9PTCwKKyAgICBUMV9GSUVMRF9UWVBFX0lOVEVHRVIsCisgICAgVDFfRklFTERfVFlQRV9GSVhFRCwKKyAgICBUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDAsCisgICAgVDFfRklFTERfVFlQRV9TVFJJTkcsCisgICAgVDFfRklFTERfVFlQRV9LRVksCisgICAgVDFfRklFTERfVFlQRV9CQk9YLAorICAgIFQxX0ZJRUxEX1RZUEVfTU1fQkJPWCwKKyAgICBUMV9GSUVMRF9UWVBFX0lOVEVHRVJfQVJSQVksCisgICAgVDFfRklFTERfVFlQRV9GSVhFRF9BUlJBWSwKKyAgICBUMV9GSUVMRF9UWVBFX0NBTExCQUNLLAorCisgICAgLyogZG8gbm90IHJlbW92ZSAqLworICAgIFQxX0ZJRUxEX1RZUEVfTUFYCisKKyAgfSBUMV9GaWVsZFR5cGU7CisKKworICB0eXBlZGVmIGVudW0gIFQxX0ZpZWxkTG9jYXRpb25fCisgIHsKKyAgICBUMV9GSUVMRF9MT0NBVElPTl9DSURfSU5GTywKKyAgICBUMV9GSUVMRF9MT0NBVElPTl9GT05UX0RJQ1QsCisgICAgVDFfRklFTERfTE9DQVRJT05fRk9OVF9FWFRSQSwKKyAgICBUMV9GSUVMRF9MT0NBVElPTl9GT05UX0lORk8sCisgICAgVDFfRklFTERfTE9DQVRJT05fUFJJVkFURSwKKyAgICBUMV9GSUVMRF9MT0NBVElPTl9CQk9YLAorICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX0xPQURFUiwKKyAgICBUMV9GSUVMRF9MT0NBVElPTl9GQUNFLAorICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX0JMRU5ELAorCisgICAgLyogZG8gbm90IHJlbW92ZSAqLworICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX01BWAorCisgIH0gVDFfRmllbGRMb2NhdGlvbjsKKworCisgIHR5cGVkZWYgdm9pZAorICAoKlQxX0ZpZWxkX1BhcnNlRnVuYykoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgcGFyc2VyICk7CisKKworICAvKiBzdHJ1Y3R1cmUgdHlwZSB1c2VkIHRvIG1vZGVsIG9iamVjdCBmaWVsZHMgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0ZpZWxkUmVjXworICB7CisgICAgY29uc3QgY2hhciogICAgICAgICBpZGVudDsgICAgICAgIC8qIGZpZWxkIGlkZW50aWZpZXIgICAgICAgICAgICAgICAqLworICAgIFQxX0ZpZWxkTG9jYXRpb24gICAgbG9jYXRpb247CisgICAgVDFfRmllbGRUeXBlICAgICAgICB0eXBlOyAgICAgICAgIC8qIHR5cGUgb2YgZmllbGQgICAgICAgICAgICAgICAgICAqLworICAgIFQxX0ZpZWxkX1BhcnNlRnVuYyAgcmVhZGVyOworICAgIEZUX1VJbnQgICAgICAgICAgICAgb2Zmc2V0OyAgICAgICAvKiBvZmZzZXQgb2YgZmllbGQgaW4gb2JqZWN0ICAgICAgKi8KKyAgICBGVF9CeXRlICAgICAgICAgICAgIHNpemU7ICAgICAgICAgLyogc2l6ZSBvZiBmaWVsZCBpbiBieXRlcyAgICAgICAgICovCisgICAgRlRfVUludCAgICAgICAgICAgICBhcnJheV9tYXg7ICAgIC8qIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGZvciAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBGVF9VSW50ICAgICAgICAgICAgIGNvdW50X29mZnNldDsgLyogb2Zmc2V0IG9mIGVsZW1lbnQgY291bnQgZm9yICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFycmF5czsgbXVzdCBub3QgYmUgemVybyBpZiBpbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB1c2UgLS0gaW4gb3RoZXIgd29yZHMsIGEgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYG51bV9GT08nIGVsZW1lbnQgbXVzdCBub3QgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0IHRoZSB1c2VkIHN0cnVjdHVyZSBpZiB3ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwYXJzZSBhIGBGT08nIGFycmF5ICAgICAgICAgICAgKi8KKyAgICBGVF9VSW50ICAgICAgICAgICAgIGRpY3Q7ICAgICAgICAgLyogd2hlcmUgd2UgZXhwZWN0IGl0ICAgICAgICAgICAgICovCisgIH0gVDFfRmllbGRSZWM7CisKKyNkZWZpbmUgVDFfRklFTERfRElDVF9GT05URElDVCAoIDEgPDwgMCApIC8qIGFsc28gRm9udEluZm8gYW5kIEZEQXJyYXkgKi8KKyNkZWZpbmUgVDFfRklFTERfRElDVF9QUklWQVRFICAoIDEgPDwgMSApCisKKworCisjZGVmaW5lIFQxX05FV19TSU1QTEVfRklFTEQoIF9pZGVudCwgX3R5cGUsIF9mbmFtZSwgX2RpY3QgKSBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfaWRlbnQsIFQxQ09ERSwgX3R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9PRkZTRVQoIF9mbmFtZSApLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9TSVpFKCBfZm5hbWUgKSwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAwLCAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfZGljdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSwKKworI2RlZmluZSBUMV9ORVdfQ0FMTEJBQ0tfRklFTEQoIF9pZGVudCwgX3JlYWRlciwgX2RpY3QgKSBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9pZGVudCwgVDFDT0RFLCBUMV9GSUVMRF9UWVBFX0NBTExCQUNLLCAgICAgXAorICAgICAgICAgICAgKFQxX0ZpZWxkX1BhcnNlRnVuYylfcmVhZGVyLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAwLCAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIDAsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX2RpY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSwKKworI2RlZmluZSBUMV9ORVdfVEFCTEVfRklFTEQoIF9pZGVudCwgX3R5cGUsIF9mbmFtZSwgX21heCwgX2RpY3QgKSBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9pZGVudCwgVDFDT0RFLCBfdHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9PRkZTRVQoIF9mbmFtZSApLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZUX0ZJRUxEX1NJWkVfREVMVEEoIF9mbmFtZSApLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX21heCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9PRkZTRVQoIG51bV8gIyMgX2ZuYW1lICksICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9kaWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIH0sCisKKyNkZWZpbmUgVDFfTkVXX1RBQkxFX0ZJRUxEMiggX2lkZW50LCBfdHlwZSwgX2ZuYW1lLCBfbWF4LCBfZGljdCApIFwKKyAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9pZGVudCwgVDFDT0RFLCBfdHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZUX0ZJRUxEX09GRlNFVCggX2ZuYW1lICksICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZUX0ZJRUxEX1NJWkVfREVMVEEoIF9mbmFtZSApLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9tYXgsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9kaWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB9LAorCisKKyNkZWZpbmUgVDFfRklFTERfQk9PTCggX2lkZW50LCBfZm5hbWUsIF9kaWN0ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBUMV9ORVdfU0lNUExFX0ZJRUxEKCBfaWRlbnQsIFQxX0ZJRUxEX1RZUEVfQk9PTCwgX2ZuYW1lLCBfZGljdCApCisKKyNkZWZpbmUgVDFfRklFTERfTlVNKCBfaWRlbnQsIF9mbmFtZSwgX2RpY3QgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBUMV9ORVdfU0lNUExFX0ZJRUxEKCBfaWRlbnQsIFQxX0ZJRUxEX1RZUEVfSU5URUdFUiwgX2ZuYW1lLCBfZGljdCApCisKKyNkZWZpbmUgVDFfRklFTERfRklYRUQoIF9pZGVudCwgX2ZuYW1lLCBfZGljdCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgVDFfTkVXX1NJTVBMRV9GSUVMRCggX2lkZW50LCBUMV9GSUVMRF9UWVBFX0ZJWEVELCBfZm5hbWUsIF9kaWN0ICkKKworI2RlZmluZSBUMV9GSUVMRF9GSVhFRF8xMDAwKCBfaWRlbnQsIF9mbmFtZSwgX2RpY3QgKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBUMV9ORVdfU0lNUExFX0ZJRUxEKCBfaWRlbnQsIFQxX0ZJRUxEX1RZUEVfRklYRURfMTAwMCwgX2ZuYW1lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RpY3QgKQorCisjZGVmaW5lIFQxX0ZJRUxEX1NUUklORyggX2lkZW50LCBfZm5hbWUsIF9kaWN0ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBUMV9ORVdfU0lNUExFX0ZJRUxEKCBfaWRlbnQsIFQxX0ZJRUxEX1RZUEVfU1RSSU5HLCBfZm5hbWUsIF9kaWN0ICkKKworI2RlZmluZSBUMV9GSUVMRF9LRVkoIF9pZGVudCwgX2ZuYW1lLCBfZGljdCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgVDFfTkVXX1NJTVBMRV9GSUVMRCggX2lkZW50LCBUMV9GSUVMRF9UWVBFX0tFWSwgX2ZuYW1lLCBfZGljdCApCisKKyNkZWZpbmUgVDFfRklFTERfQkJPWCggX2lkZW50LCBfZm5hbWUsIF9kaWN0ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBUMV9ORVdfU0lNUExFX0ZJRUxEKCBfaWRlbnQsIFQxX0ZJRUxEX1RZUEVfQkJPWCwgX2ZuYW1lLCBfZGljdCApCisKKworI2RlZmluZSBUMV9GSUVMRF9OVU1fVEFCTEUoIF9pZGVudCwgX2ZuYW1lLCBfZm1heCwgX2RpY3QgKSAgICAgICAgIFwKKyAgICAgICAgICBUMV9ORVdfVEFCTEVfRklFTEQoIF9pZGVudCwgVDFfRklFTERfVFlQRV9JTlRFR0VSX0FSUkFZLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZm5hbWUsIF9mbWF4LCBfZGljdCApCisKKyNkZWZpbmUgVDFfRklFTERfRklYRURfVEFCTEUoIF9pZGVudCwgX2ZuYW1lLCBfZm1heCwgX2RpY3QgKSAgICAgXAorICAgICAgICAgIFQxX05FV19UQUJMRV9GSUVMRCggX2lkZW50LCBUMV9GSUVMRF9UWVBFX0ZJWEVEX0FSUkFZLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZm5hbWUsIF9mbWF4LCBfZGljdCApCisKKyNkZWZpbmUgVDFfRklFTERfTlVNX1RBQkxFMiggX2lkZW50LCBfZm5hbWUsIF9mbWF4LCBfZGljdCApICAgICAgICAgXAorICAgICAgICAgIFQxX05FV19UQUJMRV9GSUVMRDIoIF9pZGVudCwgVDFfRklFTERfVFlQRV9JTlRFR0VSX0FSUkFZLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZuYW1lLCBfZm1heCwgX2RpY3QgKQorCisjZGVmaW5lIFQxX0ZJRUxEX0ZJWEVEX1RBQkxFMiggX2lkZW50LCBfZm5hbWUsIF9mbWF4LCBfZGljdCApICAgICBcCisgICAgICAgICAgVDFfTkVXX1RBQkxFX0ZJRUxEMiggX2lkZW50LCBUMV9GSUVMRF9UWVBFX0ZJWEVEX0FSUkFZLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZuYW1lLCBfZm1heCwgX2RpY3QgKQorCisjZGVmaW5lIFQxX0ZJRUxEX0NBTExCQUNLKCBfaWRlbnQsIF9uYW1lLCBfZGljdCApICAgICAgIFwKKyAgICAgICAgICBUMV9ORVdfQ0FMTEJBQ0tfRklFTEQoIF9pZGVudCwgX25hbWUsIF9kaWN0ICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMSBQQVJTRVIgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHR5cGVkZWYgY29uc3Qgc3RydWN0IFBTX1BhcnNlcl9GdW5jc1JlY18qICBQU19QYXJzZXJfRnVuY3M7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTX1BhcnNlcl9GdW5jc1JlY18KKyAgeworICAgIHZvaWQKKyAgICAoKmluaXQpKCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICBGVF9CeXRlKiAgIGJhc2UsCisgICAgICAgICAgICAgRlRfQnl0ZSogICBsaW1pdCwKKyAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApOworCisgICAgdm9pZAorICAgICgqZG9uZSkoIFBTX1BhcnNlciAgcGFyc2VyICk7CisKKyAgICB2b2lkCisgICAgKCpza2lwX3NwYWNlcykoIFBTX1BhcnNlciAgcGFyc2VyICk7CisgICAgdm9pZAorICAgICgqc2tpcF9QU190b2tlbikoIFBTX1BhcnNlciAgcGFyc2VyICk7CisKKyAgICBGVF9Mb25nCisgICAgKCp0b19pbnQpKCBQU19QYXJzZXIgIHBhcnNlciApOworICAgIEZUX0ZpeGVkCisgICAgKCp0b19maXhlZCkoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIHBvd2VyX3RlbiApOworCisgICAgRlRfRXJyb3IKKyAgICAoKnRvX2J5dGVzKSggUFNfUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgYnl0ZXMsCisgICAgICAgICAgICAgICAgIEZUX09mZnNldCAgbWF4X2J5dGVzLAorICAgICAgICAgICAgICAgICBGVF9Mb25nKiAgIHBudW1fYnl0ZXMsCisgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgZGVsaW1pdGVycyApOworCisgICAgRlRfSW50CisgICAgKCp0b19jb29yZF9hcnJheSkoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIG1heF9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1Nob3J0KiAgY29vcmRzICk7CisgICAgRlRfSW50CisgICAgKCp0b19maXhlZF9hcnJheSkoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIG1heF92YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIHBvd2VyX3RlbiApOworCisgICAgdm9pZAorICAgICgqdG9fdG9rZW4pKCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgVDFfVG9rZW4gICB0b2tlbiApOworICAgIHZvaWQKKyAgICAoKnRvX3Rva2VuX2FycmF5KSggUFNfUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX1Rva2VuICAgdG9rZW5zLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIG1heF90b2tlbnMsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCogICAgcG51bV90b2tlbnMgKTsKKworICAgIEZUX0Vycm9yCisgICAgKCpsb2FkX2ZpZWxkKSggUFNfUGFyc2VyICAgICAgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBUMV9GaWVsZCAgZmllbGQsCisgICAgICAgICAgICAgICAgICAgdm9pZCoqICAgICAgICAgIG9iamVjdHMsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIG1heF9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgICAgICBwZmxhZ3MgKTsKKworICAgIEZUX0Vycm9yCisgICAgKCpsb2FkX2ZpZWxkX3RhYmxlKSggUFNfUGFyc2VyICAgICAgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMV9GaWVsZCAgZmllbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCoqICAgICAgICAgIG9iamVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIG1heF9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgICAgICBwZmxhZ3MgKTsKKworICB9IFBTX1BhcnNlcl9GdW5jc1JlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBTX1BhcnNlclJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgUFNfUGFyc2VyIGlzIGFuIG9iamVjdCB1c2VkIHRvIHBhcnNlIGEgVHlwZSAxIGZvbnQgdmVyeSBxdWlja2x5LiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGN1cnNvciA6OiBUaGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgdGV4dC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmFzZSAgIDo6IFN0YXJ0IG9mIHRoZSBwcm9jZXNzZWQgdGV4dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaW1pdCAgOjogRW5kIG9mIHRoZSBwcm9jZXNzZWQgdGV4dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGVycm9yICA6OiBUaGUgbGFzdCBlcnJvciByZXR1cm5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5IDo6IFRoZSBvYmplY3QgdXNlZCBmb3IgbWVtb3J5IG9wZXJhdGlvbnMgKGFsbG9jL3JlYWxsb2MpLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdW5jcyAgOjogQSB0YWJsZSBvZiBmdW5jdGlvbnMgZm9yIHRoZSBwYXJzZXIuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19QYXJzZXJSZWNfCisgIHsKKyAgICBGVF9CeXRlKiAgIGN1cnNvcjsKKyAgICBGVF9CeXRlKiAgIGJhc2U7CisgICAgRlRfQnl0ZSogICBsaW1pdDsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX01lbW9yeSAgbWVtb3J5OworCisgICAgUFNfUGFyc2VyX0Z1bmNzUmVjICBmdW5jczsKKworICB9IFBTX1BhcnNlclJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICBUMSBCVUlMREVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgVDFfQnVpbGRlclJlY18qICBUMV9CdWlsZGVyOworCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlQxX0J1aWxkZXJfQ2hlY2tfUG9pbnRzX0Z1bmMpKCBUMV9CdWlsZGVyICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICBjb3VudCApOworCisgIHR5cGVkZWYgdm9pZAorICAoKlQxX0J1aWxkZXJfQWRkX1BvaW50X0Z1bmMpKCBUMV9CdWlsZGVyICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlICAgICBmbGFnICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlQxX0J1aWxkZXJfQWRkX1BvaW50MV9GdW5jKSggVDFfQnVpbGRlciAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB5ICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlQxX0J1aWxkZXJfQWRkX0NvbnRvdXJfRnVuYykoIFQxX0J1aWxkZXIgIGJ1aWxkZXIgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVDFfQnVpbGRlcl9TdGFydF9Qb2ludF9GdW5jKSggVDFfQnVpbGRlciAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIHkgKTsKKworICB0eXBlZGVmIHZvaWQKKyAgKCpUMV9CdWlsZGVyX0Nsb3NlX0NvbnRvdXJfRnVuYykoIFQxX0J1aWxkZXIgIGJ1aWxkZXIgKTsKKworCisgIHR5cGVkZWYgY29uc3Qgc3RydWN0IFQxX0J1aWxkZXJfRnVuY3NSZWNfKiAgVDFfQnVpbGRlcl9GdW5jczsKKworICB0eXBlZGVmIHN0cnVjdCAgVDFfQnVpbGRlcl9GdW5jc1JlY18KKyAgeworICAgIHZvaWQKKyAgICAoKmluaXQpKCBUMV9CdWlsZGVyICAgIGJ1aWxkZXIsCisgICAgICAgICAgICAgRlRfRmFjZSAgICAgICBmYWNlLAorICAgICAgICAgICAgIEZUX1NpemUgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgIHNsb3QsCisgICAgICAgICAgICAgRlRfQm9vbCAgICAgICBoaW50aW5nICk7CisKKyAgICB2b2lkCisgICAgKCpkb25lKSggVDFfQnVpbGRlciAgIGJ1aWxkZXIgKTsKKworICAgIFQxX0J1aWxkZXJfQ2hlY2tfUG9pbnRzX0Z1bmMgICBjaGVja19wb2ludHM7CisgICAgVDFfQnVpbGRlcl9BZGRfUG9pbnRfRnVuYyAgICAgIGFkZF9wb2ludDsKKyAgICBUMV9CdWlsZGVyX0FkZF9Qb2ludDFfRnVuYyAgICAgYWRkX3BvaW50MTsKKyAgICBUMV9CdWlsZGVyX0FkZF9Db250b3VyX0Z1bmMgICAgYWRkX2NvbnRvdXI7CisgICAgVDFfQnVpbGRlcl9TdGFydF9Qb2ludF9GdW5jICAgIHN0YXJ0X3BvaW50OworICAgIFQxX0J1aWxkZXJfQ2xvc2VfQ29udG91cl9GdW5jICBjbG9zZV9jb250b3VyOworCisgIH0gVDFfQnVpbGRlcl9GdW5jc1JlYzsKKworCisgIC8qIGFuIGVudW1lcmF0aW9uIHR5cGUgdG8gaGFuZGxlIGNoYXJzdHJpbmcgcGFyc2luZyBzdGF0ZXMgKi8KKyAgdHlwZWRlZiBlbnVtICBUMV9QYXJzZVN0YXRlXworICB7CisgICAgVDFfUGFyc2VfU3RhcnQsCisgICAgVDFfUGFyc2VfSGF2ZV9XaWR0aCwKKyAgICBUMV9QYXJzZV9IYXZlX01vdmV0bywKKyAgICBUMV9QYXJzZV9IYXZlX1BhdGgKKworICB9IFQxX1BhcnNlU3RhdGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3R1cmU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUMV9CdWlsZGVyUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgQSBzdHJ1Y3R1cmUgdXNlZCBkdXJpbmcgZ2x5cGggbG9hZGluZyB0byBzdG9yZSBpdHMgb3V0bGluZS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZW1vcnkgICAgICAgOjogVGhlIGN1cnJlbnQgbWVtb3J5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgICA6OiBUaGUgY3VycmVudCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGggICAgICAgIDo6IFRoZSBjdXJyZW50IGdseXBoIHNsb3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkZXIgICAgICAgOjogWFhYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJhc2UgICAgICAgICA6OiBUaGUgYmFzZSBnbHlwaCBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY3VycmVudCAgICAgIDo6IFRoZSBjdXJyZW50IGdseXBoIG91dGxpbmUuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfcG9pbnRzICAgOjogbWF4aW11bSBwb2ludHMgaW4gYnVpbGRlciBvdXRsaW5lICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heF9jb250b3VycyA6OiBNYXhpbXVtIG51bWJlciBvZiBjb250b3VycyBpbiBidWlsZGVyIG91dGxpbmUuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcG9zX3ggICAgICAgIDo6IFRoZSBob3Jpem9udGFsIHRyYW5zbGF0aW9uIChpZiBjb21wb3NpdGUgZ2x5cGgpLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb3NfeSAgICAgICAgOjogVGhlIHZlcnRpY2FsIHRyYW5zbGF0aW9uIChpZiBjb21wb3NpdGUgZ2x5cGgpLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlZnRfYmVhcmluZyA6OiBUaGUgbGVmdCBzaWRlIGJlYXJpbmcgcG9pbnQuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWR2YW5jZSAgICAgIDo6IFRoZSBob3Jpem9udGFsIGFkdmFuY2UgdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiYm94ICAgICAgICAgOjogVW51c2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhcnNlX3N0YXRlICA6OiBBbiBlbnVtZXJhdGlvbiB3aGljaCBjb250cm9scyB0aGUgY2hhcnN0cmluZyAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgcGFyc2luZyBzdGF0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRfcG9pbnRzICA6OiBJZiB0aGlzIGZsYWcgaXMgbm90IHNldCwgbm8gcG9pbnRzIGFyZSBsb2FkZWQuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbm9fcmVjdXJzZSAgIDo6IFNldCBidXQgbm90IHVzZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZXRyaWNzX29ubHkgOjogQSBib29sZWFuIGluZGljYXRpbmcgdGhhdCB3ZSBvbmx5IHdhbnQgdG8gY29tcHV0ZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHRoZSBtZXRyaWNzIG9mIGEgZ2l2ZW4gZ2x5cGgsIG5vdCBsb2FkIGFsbCBvZiBpdHMgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBwb2ludHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnVuY3MgICAgICAgIDo6IEFuIGFycmF5IG9mIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciB0aGUgYnVpbGRlci4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVDFfQnVpbGRlclJlY18KKyAgeworICAgIEZUX01lbW9yeSAgICAgICBtZW1vcnk7CisgICAgRlRfRmFjZSAgICAgICAgIGZhY2U7CisgICAgRlRfR2x5cGhTbG90ICAgIGdseXBoOworICAgIEZUX0dseXBoTG9hZGVyICBsb2FkZXI7CisgICAgRlRfT3V0bGluZSogICAgIGJhc2U7CisgICAgRlRfT3V0bGluZSogICAgIGN1cnJlbnQ7CisKKyAgICBGVF9Qb3MgICAgICAgICAgcG9zX3g7CisgICAgRlRfUG9zICAgICAgICAgIHBvc195OworCisgICAgRlRfVmVjdG9yICAgICAgIGxlZnRfYmVhcmluZzsKKyAgICBGVF9WZWN0b3IgICAgICAgYWR2YW5jZTsKKworICAgIEZUX0JCb3ggICAgICAgICBiYm94OyAgICAgICAgICAvKiBib3VuZGluZyBib3ggKi8KKyAgICBUMV9QYXJzZVN0YXRlICAgcGFyc2Vfc3RhdGU7CisgICAgRlRfQm9vbCAgICAgICAgIGxvYWRfcG9pbnRzOworICAgIEZUX0Jvb2wgICAgICAgICBub19yZWN1cnNlOworCisgICAgRlRfQm9vbCAgICAgICAgIG1ldHJpY3Nfb25seTsKKworICAgIHZvaWQqICAgICAgICAgICBoaW50c19mdW5jczsgICAgLyogaGludGVyLXNwZWNpZmljICovCisgICAgdm9pZCogICAgICAgICAgIGhpbnRzX2dsb2JhbHM7ICAvKiBoaW50ZXItc3BlY2lmaWMgKi8KKworICAgIFQxX0J1aWxkZXJfRnVuY3NSZWMgIGZ1bmNzOworCisgIH0gVDFfQnVpbGRlclJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICBUMSBERUNPREVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWYgMAorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVDFfTUFYX1NVQlJTX0NBTExTIGRldGFpbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5lc3RlZCBzdWItcm91dGluZSAgICovCisgIC8qIGNhbGxzIGR1cmluZyBnbHlwaCBsb2FkaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVDFfTUFYX1NVQlJTX0NBTExTICA4CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFQxX01BWF9DSEFSU1RSSU5HX09QRVJBTkRTIGlzIHRoZSBjaGFyc3RyaW5nIHN0YWNrJ3MgY2FwYWNpdHkuICBBICAgICAqLworICAvKiBtaW5pbXVtIG9mIDE2IGlzIHJlcXVpcmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFQxX01BWF9DSEFSU1RSSU5HU19PUEVSQU5EUyAgMzIKKworI2VuZGlmIC8qIDAgKi8KKworCisgIHR5cGVkZWYgc3RydWN0ICBUMV9EZWNvZGVyX1pvbmVSZWNfCisgIHsKKyAgICBGVF9CeXRlKiAgY3Vyc29yOworICAgIEZUX0J5dGUqICBiYXNlOworICAgIEZUX0J5dGUqICBsaW1pdDsKKworICB9IFQxX0RlY29kZXJfWm9uZVJlYywgKlQxX0RlY29kZXJfWm9uZTsKKworCisgIHR5cGVkZWYgc3RydWN0IFQxX0RlY29kZXJSZWNfKiAgICAgICAgICAgICAgVDFfRGVjb2RlcjsKKyAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgVDFfRGVjb2Rlcl9GdW5jc1JlY18qICBUMV9EZWNvZGVyX0Z1bmNzOworCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlQxX0RlY29kZXJfQ2FsbGJhY2spKCBUMV9EZWNvZGVyICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBnbHlwaF9pbmRleCApOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0RlY29kZXJfRnVuY3NSZWNfCisgIHsKKyAgICBGVF9FcnJvcgorICAgICgqaW5pdCkoIFQxX0RlY29kZXIgICAgICAgICAgIGRlY29kZXIsCisgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICBGVF9TaXplICAgICAgICAgICAgICBzaXplLAorICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgICAgICAgIHNsb3QsCisgICAgICAgICAgICAgRlRfQnl0ZSoqICAgICAgICAgICAgZ2x5cGhfbmFtZXMsCisgICAgICAgICAgICAgUFNfQmxlbmQgICAgICAgICAgICAgYmxlbmQsCisgICAgICAgICAgICAgRlRfQm9vbCAgICAgICAgICAgICAgaGludGluZywKKyAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgICAgICBoaW50X21vZGUsCisgICAgICAgICAgICAgVDFfRGVjb2Rlcl9DYWxsYmFjayAgY2FsbGJhY2sgKTsKKworICAgIHZvaWQKKyAgICAoKmRvbmUpKCBUMV9EZWNvZGVyICBkZWNvZGVyICk7CisKKyAgICBGVF9FcnJvcgorICAgICgqcGFyc2VfY2hhcnN0cmluZ3MpKCBUMV9EZWNvZGVyICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgICBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBsZW4gKTsKKworICB9IFQxX0RlY29kZXJfRnVuY3NSZWM7CisKKworICB0eXBlZGVmIHN0cnVjdCAgVDFfRGVjb2RlclJlY18KKyAgeworICAgIFQxX0J1aWxkZXJSZWMgICAgICAgIGJ1aWxkZXI7CisKKyAgICBGVF9Mb25nICAgICAgICAgICAgICBzdGFja1tUMV9NQVhfQ0hBUlNUUklOR1NfT1BFUkFORFNdOworICAgIEZUX0xvbmcqICAgICAgICAgICAgIHRvcDsKKworICAgIFQxX0RlY29kZXJfWm9uZVJlYyAgIHpvbmVzW1QxX01BWF9TVUJSU19DQUxMUyArIDFdOworICAgIFQxX0RlY29kZXJfWm9uZSAgICAgIHpvbmU7CisKKyAgICBGVF9TZXJ2aWNlX1BzQ01hcHMgICBwc25hbWVzOyAgICAgIC8qIGZvciBzZWFjICovCisgICAgRlRfVUludCAgICAgICAgICAgICAgbnVtX2dseXBoczsKKyAgICBGVF9CeXRlKiogICAgICAgICAgICBnbHlwaF9uYW1lczsKKworICAgIEZUX0ludCAgICAgICAgICAgICAgIGxlbklWOyAgICAgICAgLyogaW50ZXJuYWwgZm9yIHN1YiByb3V0aW5lIGNhbGxzICovCisgICAgRlRfVUludCAgICAgICAgICAgICAgbnVtX3N1YnJzOworICAgIEZUX0J5dGUqKiAgICAgICAgICAgIHN1YnJzOworICAgIEZUX1B0ckRpc3QqICAgICAgICAgIHN1YnJzX2xlbjsgICAgLyogYXJyYXkgb2Ygc3VicnMgbGVuZ3RoIChvcHRpb25hbCkgKi8KKworICAgIEZUX01hdHJpeCAgICAgICAgICAgIGZvbnRfbWF0cml4OworICAgIEZUX1ZlY3RvciAgICAgICAgICAgIGZvbnRfb2Zmc2V0OworCisgICAgRlRfSW50ICAgICAgICAgICAgICAgZmxleF9zdGF0ZTsKKyAgICBGVF9JbnQgICAgICAgICAgICAgICBudW1fZmxleF92ZWN0b3JzOworICAgIEZUX1ZlY3RvciAgICAgICAgICAgIGZsZXhfdmVjdG9yc1s3XTsKKworICAgIFBTX0JsZW5kICAgICAgICAgICAgIGJsZW5kOyAgICAgICAvKiBmb3IgbXVsdGlwbGUgbWFzdGVyIHN1cHBvcnQgKi8KKworICAgIEZUX1JlbmRlcl9Nb2RlICAgICAgIGhpbnRfbW9kZTsKKworICAgIFQxX0RlY29kZXJfQ2FsbGJhY2sgIHBhcnNlX2NhbGxiYWNrOworICAgIFQxX0RlY29kZXJfRnVuY3NSZWMgIGZ1bmNzOworCisgICAgRlRfTG9uZyogICAgICAgICAgICAgYnVpbGRjaGFyOworICAgIEZUX1VJbnQgICAgICAgICAgICAgIGxlbl9idWlsZGNoYXI7CisKKyAgICBGVF9Cb29sICAgICAgICAgICAgICBzZWFjOworCisgIH0gVDFfRGVjb2RlclJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRk0gUEFSU0VSICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHR5cGVkZWYgc3RydWN0IEFGTV9QYXJzZXJSZWNfKiAgQUZNX1BhcnNlcjsKKworICB0eXBlZGVmIHN0cnVjdCAgQUZNX1BhcnNlcl9GdW5jc1JlY18KKyAgeworICAgIEZUX0Vycm9yCisgICAgKCppbml0KSggQUZNX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgIEZUX01lbW9yeSAgIG1lbW9yeSwKKyAgICAgICAgICAgICBGVF9CeXRlKiAgICBiYXNlLAorICAgICAgICAgICAgIEZUX0J5dGUqICAgIGxpbWl0ICk7CisKKyAgICB2b2lkCisgICAgKCpkb25lKSggQUZNX1BhcnNlciAgcGFyc2VyICk7CisKKyAgICBGVF9FcnJvcgorICAgICgqcGFyc2UpKCBBRk1fUGFyc2VyICBwYXJzZXIgKTsKKworICB9IEFGTV9QYXJzZXJfRnVuY3NSZWM7CisKKworICB0eXBlZGVmIHN0cnVjdCBBRk1fU3RyZWFtUmVjXyogIEFGTV9TdHJlYW07CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBRk1fUGFyc2VyUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBBRk1fUGFyc2VyIGlzIGEgcGFyc2VyIGZvciB0aGUgQUZNIGZpbGVzLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZW1vcnkgICAgOjogVGhlIG9iamVjdCB1c2VkIGZvciBtZW1vcnkgb3BlcmF0aW9ucyAoYWxsb2MgYW5kICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIHJlYWxsb2MpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gICAgOjogVGhpcyBpcyBhbiBvcGFxdWUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZvbnRJbmZvICA6OiBUaGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIGhlcmUuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2V0X2luZGV4IDo6IEEgdXNlciBwcm92aWRlZCBmdW5jdGlvbiB0byBnZXQgYSBnbHlwaCBpbmRleCBieSBpdHMgICovCisgIC8qICAgICAgICAgICAgICAgICBuYW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEFGTV9QYXJzZXJSZWNfCisgIHsKKyAgICBGVF9NZW1vcnkgICAgIG1lbW9yeTsKKyAgICBBRk1fU3RyZWFtICAgIHN0cmVhbTsKKworICAgIEFGTV9Gb250SW5mbyAgRm9udEluZm87CisKKyAgICBGVF9JbnQKKyAgICAoKmdldF9pbmRleCkoIGNvbnN0IGNoYXIqICBuYW1lLAorICAgICAgICAgICAgICAgICAgRlRfT2Zmc2V0ICAgIGxlbiwKKyAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICB1c2VyX2RhdGEgKTsKKworICAgIHZvaWQqICAgICAgICAgdXNlcl9kYXRhOworCisgIH0gQUZNX1BhcnNlclJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgIFRZUEUxIENIQVJNQVBTICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHR5cGVkZWYgY29uc3Qgc3RydWN0IFQxX0NNYXBfQ2xhc3Nlc1JlY18qICBUMV9DTWFwX0NsYXNzZXM7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgVDFfQ01hcF9DbGFzc2VzUmVjXworICB7CisgICAgRlRfQ01hcF9DbGFzcyAgc3RhbmRhcmQ7CisgICAgRlRfQ01hcF9DbGFzcyAgZXhwZXJ0OworICAgIEZUX0NNYXBfQ2xhc3MgIGN1c3RvbTsKKyAgICBGVF9DTWFwX0NsYXNzICB1bmljb2RlOworCisgIH0gVDFfQ01hcF9DbGFzc2VzUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgUFNBdXggTW9kdWxlIEludGVyZmFjZSAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTQXV4X1NlcnZpY2VSZWNfCisgIHsKKyAgICAvKiBkb24ndCB1c2UgYFBTX1RhYmxlX0Z1bmNzJyBhbmQgZnJpZW5kcyB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncyAqLworICAgIGNvbnN0IFBTX1RhYmxlX0Z1bmNzUmVjKiAgICBwc190YWJsZV9mdW5jczsKKyAgICBjb25zdCBQU19QYXJzZXJfRnVuY3NSZWMqICAgcHNfcGFyc2VyX2Z1bmNzOworICAgIGNvbnN0IFQxX0J1aWxkZXJfRnVuY3NSZWMqICB0MV9idWlsZGVyX2Z1bmNzOworICAgIGNvbnN0IFQxX0RlY29kZXJfRnVuY3NSZWMqICB0MV9kZWNvZGVyX2Z1bmNzOworCisgICAgdm9pZAorICAgICgqdDFfZGVjcnlwdCkoIEZUX0J5dGUqICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgIEZUX09mZnNldCAgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgIEZUX1VTaG9ydCAgc2VlZCApOworCisgICAgVDFfQ01hcF9DbGFzc2VzICB0MV9jbWFwX2NsYXNzZXM7CisKKyAgICAvKiBmaWVsZHMgYWZ0ZXIgdGhpcyBjb21tZW50IGxpbmUgd2VyZSBhZGRlZCBhZnRlciB2ZXJzaW9uIDIuMS4xMCAqLworICAgIGNvbnN0IEFGTV9QYXJzZXJfRnVuY3NSZWMqICBhZm1fcGFyc2VyX2Z1bmNzOworCisgIH0gUFNBdXhfU2VydmljZVJlYywgKlBTQXV4X1NlcnZpY2U7CisKKyAgLyogYmFja3dhcmRzLWNvbXBhdGlibGUgdHlwZSBkZWZpbml0aW9uICovCisgIHR5cGVkZWYgUFNBdXhfU2VydmljZVJlYyAgIFBTQXV4X0ludGVyZmFjZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgU29tZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIElTX1BTX05FV0xJTkUoIGNoICkgXAorICAoIChjaCkgPT0gJ1xyJyB8fCAgICAgICAgIFwKKyAgICAoY2gpID09ICdcbicgKQorCisjZGVmaW5lIElTX1BTX1NQQUNFKCBjaCApICBcCisgICggKGNoKSA9PSAnICcgICAgICAgICB8fCBcCisgICAgSVNfUFNfTkVXTElORSggY2ggKSB8fCBcCisgICAgKGNoKSA9PSAnXHQnICAgICAgICB8fCBcCisgICAgKGNoKSA9PSAnXGYnICAgICAgICB8fCBcCisgICAgKGNoKSA9PSAnXDAnICkKKworI2RlZmluZSBJU19QU19TUEVDSUFMKCBjaCApICAgICAgIFwKKyAgKCAoY2gpID09ICcvJyAgICAgICAgICAgICAgICB8fCBcCisgICAgKGNoKSA9PSAnKCcgfHwgKGNoKSA9PSAnKScgfHwgXAorICAgIChjaCkgPT0gJzwnIHx8IChjaCkgPT0gJz4nIHx8IFwKKyAgICAoY2gpID09ICdbJyB8fCAoY2gpID09ICddJyB8fCBcCisgICAgKGNoKSA9PSAneycgfHwgKGNoKSA9PSAnfScgfHwgXAorICAgIChjaCkgPT0gJyUnICAgICAgICAgICAgICAgICkKKworI2RlZmluZSBJU19QU19ERUxJTSggY2ggKSAgXAorICAoIElTX1BTX1NQQUNFKCBjaCApICAgfHwgXAorICAgIElTX1BTX1NQRUNJQUwoIGNoICkgKQorCisjZGVmaW5lIElTX1BTX0RJR0lUKCBjaCApICAgICAgICBcCisgICggKGNoKSA+PSAnMCcgJiYgKGNoKSA8PSAnOScgKQorCisjZGVmaW5lIElTX1BTX1hESUdJVCggY2ggKSAgICAgICAgICAgIFwKKyAgKCBJU19QU19ESUdJVCggY2ggKSAgICAgICAgICAgICAgfHwgXAorICAgICggKGNoKSA+PSAnQScgJiYgKGNoKSA8PSAnRicgKSB8fCBcCisgICAgKCAoY2gpID49ICdhJyAmJiAoY2gpIDw9ICdmJyApICkKKworI2RlZmluZSBJU19QU19CQVNFODUoIGNoICkgICAgICAgXAorICAoIChjaCkgPj0gJyEnICYmIChjaCkgPD0gJ3UnICkKKworI2RlZmluZSBJU19QU19UT0tFTiggY3VyLCBsaW1pdCwgdG9rZW4gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoIChjaGFyKShjdXIpWzBdID09ICh0b2tlbilbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgXAorICAgICggKGN1cikgKyBzaXplb2YgKCAodG9rZW4pICkgPT0gKGxpbWl0KSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKCAoY3VyKSArIHNpemVvZiggKHRva2VuKSApIDwgKGxpbWl0KSAgICAgICAgICAmJiAgICAgICAgICAgICAgICAgXAorICAgICAgICBJU19QU19ERUxJTSggKGN1cilbc2l6ZW9mICggKHRva2VuKSApIC0gMV0gKSApICkgICAgICAgICAgICAgJiYgXAorICAgIGZ0X3N0cm5jbXAoIChjaGFyKikoY3VyKSwgKHRva2VuKSwgc2l6ZW9mICggKHRva2VuKSApIC0gMSApID09IDAgKQorCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fUFNBVVhfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YjU5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaApAQCAtMCwwICsxLDcyMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcHNoaW50cy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEludGVyZmFjZSB0byBQb3N0c2NyaXB0LXNwZWNpZmljIChUeXBlIDEgYW5kIFR5cGUgMikgaGludHMgICAgICAgICAgICovCisvKiAgICByZWNvcmRlcnMgKHNwZWNpZmljYXRpb24gb25seSkuICBUaGVzZSBhcmUgdXNlZCB0byBzdXBwb3J0IG5hdGl2ZSAgICAqLworLyogICAgVDEvVDIgaGludHMgaW4gdGhlIGB0eXBlMScsIGBjaWQnLCBhbmQgYGNmZicgZm9udCBkcml2ZXJzLiAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEtMjAwMywgMjAwNS0yMDA3LCAyMDA5LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19QU0hJTlRTX0hfXworI2RlZmluZSBfX1BTSElOVFNfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vZnJlZXR5cGUuaCIKKyNpbmNsdWRlICIuLi90MXRhYmxlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgSU5URVJOQUwgUkVQUkVTRU5UQVRJT04gT0YgR0xPQkFMUyAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgdHlwZWRlZiBzdHJ1Y3QgUFNIX0dsb2JhbHNSZWNfKiAgUFNIX0dsb2JhbHM7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlBTSF9HbG9iYWxzX05ld0Z1bmMpKCBGVF9NZW1vcnkgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVDFfUHJpdmF0ZSogICBwcml2YXRlX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBTSF9HbG9iYWxzKiAgYWdsb2JhbHMgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqUFNIX0dsb2JhbHNfU2V0U2NhbGVGdW5jKSggUFNIX0dsb2JhbHMgIGdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHhfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHlfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHhfZGVsdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHlfZGVsdGEgKTsKKworICB0eXBlZGVmIHZvaWQKKyAgKCpQU0hfR2xvYmFsc19EZXN0cm95RnVuYykoIFBTSF9HbG9iYWxzICBnbG9iYWxzICk7CisKKworICB0eXBlZGVmIHN0cnVjdCAgUFNIX0dsb2JhbHNfRnVuY3NSZWNfCisgIHsKKyAgICBQU0hfR2xvYmFsc19OZXdGdW5jICAgICAgIGNyZWF0ZTsKKyAgICBQU0hfR2xvYmFsc19TZXRTY2FsZUZ1bmMgIHNldF9zY2FsZTsKKyAgICBQU0hfR2xvYmFsc19EZXN0cm95RnVuYyAgIGRlc3Ryb3k7CisKKyAgfSBQU0hfR2xvYmFsc19GdW5jc1JlYywgKlBTSF9HbG9iYWxzX0Z1bmNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgUFVCTElDIFRZUEUgMSBISU5UUyBSRUNPUkRFUiAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHR5cGU6CisgICAqICAgVDFfSGludHMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoaXMgaXMgYSBoYW5kbGUgdG8gYW4gb3BhcXVlIHN0cnVjdHVyZSB1c2VkIHRvIHJlY29yZCBnbHlwaCBoaW50cworICAgKiAgIGZyb20gYSBUeXBlIDEgY2hhcmFjdGVyIGdseXBoIGNoYXJhY3RlciBzdHJpbmcuCisgICAqCisgICAqICAgVGhlIG1ldGhvZHMgdXNlZCB0byBvcGVyYXRlIG9uIHRoaXMgb2JqZWN0IGFyZSBkZWZpbmVkIGJ5IHRoZQorICAgKiAgIEBUMV9IaW50c19GdW5jc1JlYyBzdHJ1Y3R1cmUuICBSZWNvcmRpbmcgZ2x5cGggaGludHMgaXMgbm9ybWFsbHkKKyAgICogICBhY2hpZXZlZCB0aHJvdWdoIHRoZSBmb2xsb3dpbmcgc2NoZW1lOgorICAgKgorICAgKiAgIC0gT3BlbiBhIG5ldyBoaW50IHJlY29yZGluZyBzZXNzaW9uIGJ5IGNhbGxpbmcgdGhlIGBvcGVuJyBtZXRob2QuCisgICAqICAgICBUaGlzIHJld2luZHMgdGhlIHJlY29yZGVyIGFuZCBwcmVwYXJlIGl0IGZvciBuZXcgaW5wdXQuCisgICAqCisgICAqICAgLSBGb3IgZWFjaCBoaW50IGZvdW5kIGluIHRoZSBnbHlwaCBjaGFyc3RyaW5nLCBjYWxsIHRoZSBjb3JyZXNwb25kaW5nCisgICAqICAgICBtZXRob2QgKGBzdGVtJywgYHN0ZW0zJywgb3IgYHJlc2V0JykuICBOb3RlIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGRvCisgICAqICAgICBub3QgcmV0dXJuIGFuIGVycm9yIGNvZGUuCisgICAqCisgICAqICAgLSBDbG9zZSB0aGUgcmVjb3JkaW5nIHNlc3Npb24gYnkgY2FsbGluZyB0aGUgYGNsb3NlJyBtZXRob2QuICBJdAorICAgKiAgICAgcmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoZSBoaW50cyB3ZXJlIGludmFsaWQgb3Igc29tZXRoaW5nCisgICAqICAgICBzdHJhbmdlIGhhcHBlbmVkIChlLmcuLCBtZW1vcnkgc2hvcnRhZ2UpLgorICAgKgorICAgKiAgIFRoZSBoaW50cyBhY2N1bXVsYXRlZCBpbiB0aGUgb2JqZWN0IGNhbiBsYXRlciBiZSB1c2VkIGJ5IHRoZQorICAgKiAgIFBvc3RTY3JpcHQgaGludGVyLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgVDFfSGludHNSZWNfKiAgVDFfSGludHM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBUMV9IaW50c19GdW5jcworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBwb2ludGVyIHRvIHRoZSBAVDFfSGludHNfRnVuY3NSZWMgc3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgQVBJIG9mCisgICAqICAgYSBnaXZlbiBAVDFfSGludHMgb2JqZWN0LgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgVDFfSGludHNfRnVuY3NSZWNfKiAgVDFfSGludHNfRnVuY3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDFfSGludHNfT3BlbkZ1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWV0aG9kIG9mIHRoZSBAVDFfSGludHMgY2xhc3MgdXNlZCB0byBwcmVwYXJlIGl0IGZvciBhIG5ldyBUeXBlIDEKKyAgICogICBoaW50cyByZWNvcmRpbmcgc2Vzc2lvbi4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVHlwZSAxIGhpbnRzIHJlY29yZGVyLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBZb3Ugc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBAVDFfSGludHNfQ2xvc2VGdW5jIG1ldGhvZCBpbiBvcmRlciB0bworICAgKiAgIGNsb3NlIGFuIG9wZW5lZCByZWNvcmRpbmcgc2Vzc2lvbi4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKlQxX0hpbnRzX09wZW5GdW5jKSggVDFfSGludHMgIGhpbnRzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDFfSGludHNfU2V0U3RlbUZ1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWV0aG9kIG9mIHRoZSBAVDFfSGludHMgY2xhc3MgdXNlZCB0byByZWNvcmQgYSBuZXcgaG9yaXpvbnRhbCBvcgorICAgKiAgIHZlcnRpY2FsIHN0ZW0uICBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBUeXBlIDEgYGhzdGVtJyBhbmQgYHZzdGVtJworICAgKiAgIG9wZXJhdG9ycy4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVHlwZSAxIGhpbnRzIHJlY29yZGVyLgorICAgKgorICAgKiAgIGRpbWVuc2lvbiA6OgorICAgKiAgICAgMCBmb3IgaG9yaXpvbnRhbCBzdGVtcyAoaHN0ZW0pLCAxIGZvciB2ZXJ0aWNhbCBvbmVzICh2c3RlbSkuCisgICAqCisgICAqICAgY29vcmRzIDo6CisgICAqICAgICBBcnJheSBvZiAyIGNvb3JkaW5hdGVzIGluIDE2LjE2IGZvcm1hdCwgdXNlZCBhcyAocG9zaXRpb24sbGVuZ3RoKQorICAgKiAgICAgc3RlbSBkZXNjcmlwdG9yLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBVc2UgdmVydGljYWwgY29vcmRpbmF0ZXMgKHkpIGZvciBob3Jpem9udGFsIHN0ZW1zIChkaW09MCkuICBVc2UKKyAgICogICBob3Jpem9udGFsIGNvb3JkaW5hdGVzICh4KSBmb3IgdmVydGljYWwgc3RlbXMgKGRpbT0xKS4KKyAgICoKKyAgICogICBgY29vcmRzWzBdJyBpcyB0aGUgYWJzb2x1dGUgc3RlbSBwb3NpdGlvbiAobG93ZXN0IGNvb3JkaW5hdGUpOworICAgKiAgIGBjb29yZHNbMV0nIGlzIHRoZSBsZW5ndGguCisgICAqCisgICAqICAgVGhlIGxlbmd0aCBjYW4gYmUgbmVnYXRpdmUsIGluIHdoaWNoIGNhc2UgaXQgbXVzdCBiZSBlaXRoZXIgLTIwIG9yCisgICAqICAgLTIxLiAgSXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBgZ2hvc3QnIHN0ZW0sIGFjY29yZGluZyB0byB0aGUgVHlwZSAxCisgICAqICAgc3BlY2lmaWNhdGlvbi4KKyAgICoKKyAgICogICBJZiB0aGUgbGVuZ3RoIGlzIC0yMSAoY29ycmVzcG9uZGluZyB0byBhIGJvdHRvbSBnaG9zdCBzdGVtKSwgdGhlbgorICAgKiAgIHRoZSByZWFsIHN0ZW0gcG9zaXRpb24gaXMgYGNvb3Jkc1swXStjb29yZHNbMV0nLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqVDFfSGludHNfU2V0U3RlbUZ1bmMpKCBUMV9IaW50cyAgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGNvb3JkcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIFQxX0hpbnRzX1NldFN0ZW0zRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtZXRob2Qgb2YgdGhlIEBUMV9IaW50cyBjbGFzcyB1c2VkIHRvIHJlY29yZCB0aHJlZQorICAgKiAgIGNvdW50ZXItY29udHJvbGxlZCBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHN0ZW1zIGF0IG9uY2UuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFR5cGUgMSBoaW50cyByZWNvcmRlci4KKyAgICoKKyAgICogICBkaW1lbnNpb24gOjoKKyAgICogICAgIDAgZm9yIGhvcml6b250YWwgc3RlbXMsIDEgZm9yIHZlcnRpY2FsIG9uZXMuCisgICAqCisgICAqICAgY29vcmRzIDo6CisgICAqICAgICBBbiBhcnJheSBvZiA2IHZhbHVlcyBpbiAxNi4xNiBmb3JtYXQsIGhvbGRpbmcgMyAocG9zaXRpb24sbGVuZ3RoKQorICAgKiAgICAgcGFpcnMgZm9yIHRoZSBjb3VudGVyLWNvbnRyb2xsZWQgc3RlbXMuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFVzZSB2ZXJ0aWNhbCBjb29yZGluYXRlcyAoeSkgZm9yIGhvcml6b250YWwgc3RlbXMgKGRpbT0wKS4gIFVzZQorICAgKiAgIGhvcml6b250YWwgY29vcmRpbmF0ZXMgKHgpIGZvciB2ZXJ0aWNhbCBzdGVtcyAoZGltPTEpLgorICAgKgorICAgKiAgIFRoZSBsZW5ndGhzIGNhbm5vdCBiZSBuZWdhdGl2ZSAoZ2hvc3Qgc3RlbXMgYXJlIG5ldmVyCisgICAqICAgY291bnRlci1jb250cm9sbGVkKS4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKlQxX0hpbnRzX1NldFN0ZW0zRnVuYykoIFQxX0hpbnRzICAgaGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZHMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBUMV9IaW50c19SZXNldEZ1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWV0aG9kIG9mIHRoZSBAVDFfSGludHMgY2xhc3MgdXNlZCB0byByZXNldCB0aGUgc3RlbXMgaGludHMgaW4gYQorICAgKiAgIHJlY29yZGluZyBzZXNzaW9uLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaGludHMgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBUeXBlIDEgaGludHMgcmVjb3JkZXIuCisgICAqCisgICAqICAgZW5kX3BvaW50IDo6CisgICAqICAgICBUaGUgaW5kZXggb2YgdGhlIGxhc3QgcG9pbnQgaW4gdGhlIGlucHV0IGdseXBoIGluIHdoaWNoIHRoZQorICAgKiAgICAgcHJldmlvdXNseSBkZWZpbmVkIGhpbnRzIGFwcGx5LgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqVDFfSGludHNfUmVzZXRGdW5jKSggVDFfSGludHMgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBlbmRfcG9pbnQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBUMV9IaW50c19DbG9zZUZ1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWV0aG9kIG9mIHRoZSBAVDFfSGludHMgY2xhc3MgdXNlZCB0byBjbG9zZSBhIGhpbnQgcmVjb3JkaW5nCisgICAqICAgc2Vzc2lvbi4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVHlwZSAxIGhpbnRzIHJlY29yZGVyLgorICAgKgorICAgKiAgIGVuZF9wb2ludCA6OgorICAgKiAgICAgVGhlIGluZGV4IG9mIHRoZSBsYXN0IHBvaW50IGluIHRoZSBpbnB1dCBnbHlwaC4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGUgZXJyb3IgY29kZSBpcyBzZXQgdG8gaW5kaWNhdGUgdGhhdCBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlCisgICAqICAgcmVjb3JkaW5nIHNlc3Npb24uCisgICAqCisgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVDFfSGludHNfQ2xvc2VGdW5jKSggVDFfSGludHMgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBlbmRfcG9pbnQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBUMV9IaW50c19BcHBseUZ1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWV0aG9kIG9mIHRoZSBAVDFfSGludHMgY2xhc3MgdXNlZCB0byBhcHBseSBoaW50cyB0byB0aGUKKyAgICogICBjb3JyZXNwb25kaW5nIGdseXBoIG91dGxpbmUuICBNdXN0IGJlIGNhbGxlZCBvbmNlIGFsbCBoaW50cyBoYXZlIGJlZW4KKyAgICogICByZWNvcmRlZC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVHlwZSAxIGhpbnRzIHJlY29yZGVyLgorICAgKgorICAgKiAgIG91dGxpbmUgOjoKKyAgICogICAgIEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IG91dGxpbmUgZGVzY3JpcHRvci4KKyAgICoKKyAgICogICBnbG9iYWxzIDo6CisgICAqICAgICBUaGUgaGludGVyIGdsb2JhbHMgZm9yIHRoaXMgZm9udC4KKyAgICoKKyAgICogICBoaW50X21vZGUgOjoKKyAgICogICAgIEhpbnRpbmcgaW5mb3JtYXRpb24uCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgT24gaW5wdXQsIGFsbCBwb2ludHMgd2l0aGluIHRoZSBvdXRsaW5lIGFyZSBpbiBmb250IGNvb3JkaW5hdGVzLiBPbgorICAgKiAgIG91dHB1dCwgdGhleSBhcmUgaW4gMS82NHRoIG9mIHBpeGVscy4KKyAgICoKKyAgICogICBUaGUgc2NhbGluZyB0cmFuc2Zvcm1hdGlvbiBpcyB0YWtlbiBmcm9tIHRoZSBgZ2xvYmFscycgb2JqZWN0IHdoaWNoCisgICAqICAgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvbnQgYXMgdGhlIGdseXBoLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlQxX0hpbnRzX0FwcGx5RnVuYykoIFQxX0hpbnRzICAgICAgICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgICAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQU0hfR2xvYmFscyAgICAgZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgaGludF9tb2RlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc3RydWN0OgorICAgKiAgIFQxX0hpbnRzX0Z1bmNzUmVjCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGUgc3RydWN0dXJlIHVzZWQgdG8gcHJvdmlkZSB0aGUgQVBJIHRvIEBUMV9IaW50cyBvYmplY3RzLgorICAgKgorICAgKiBAZmllbGRzOgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVDEgSGludHMgcmVjb3JkZXIuCisgICAqCisgICAqICAgb3BlbiA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIG9wZW4gYSByZWNvcmRpbmcgc2Vzc2lvbi4KKyAgICoKKyAgICogICBjbG9zZSA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIGNsb3NlIGEgcmVjb3JkaW5nIHNlc3Npb24uCisgICAqCisgICAqICAgc3RlbSA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIHNldCBhIHNpbXBsZSBzdGVtLgorICAgKgorICAgKiAgIHN0ZW0zIDo6CisgICAqICAgICBUaGUgZnVuY3Rpb24gdG8gc2V0IGNvdW50ZXItY29udHJvbGxlZCBzdGVtcy4KKyAgICoKKyAgICogICByZXNldCA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIHJlc2V0IHN0ZW0gaGludHMuCisgICAqCisgICAqICAgYXBwbHkgOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBhcHBseSB0aGUgaGludHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZ2x5cGggb3V0bGluZS4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUMV9IaW50c19GdW5jc1JlY18KKyAgeworICAgIFQxX0hpbnRzICAgICAgICAgICAgICAgaGludHM7CisgICAgVDFfSGludHNfT3BlbkZ1bmMgICAgICBvcGVuOworICAgIFQxX0hpbnRzX0Nsb3NlRnVuYyAgICAgY2xvc2U7CisgICAgVDFfSGludHNfU2V0U3RlbUZ1bmMgICBzdGVtOworICAgIFQxX0hpbnRzX1NldFN0ZW0zRnVuYyAgc3RlbTM7CisgICAgVDFfSGludHNfUmVzZXRGdW5jICAgICByZXNldDsKKyAgICBUMV9IaW50c19BcHBseUZ1bmMgICAgIGFwcGx5OworCisgIH0gVDFfSGludHNfRnVuY3NSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICBQVUJMSUMgVFlQRSAyIEhJTlRTIFJFQ09SREVSICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBUMl9IaW50cworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhpcyBpcyBhIGhhbmRsZSB0byBhbiBvcGFxdWUgc3RydWN0dXJlIHVzZWQgdG8gcmVjb3JkIGdseXBoIGhpbnRzCisgICAqICAgZnJvbSBhIFR5cGUgMiBjaGFyYWN0ZXIgZ2x5cGggY2hhcmFjdGVyIHN0cmluZy4KKyAgICoKKyAgICogICBUaGUgbWV0aG9kcyB1c2VkIHRvIG9wZXJhdGUgb24gdGhpcyBvYmplY3QgYXJlIGRlZmluZWQgYnkgdGhlCisgICAqICAgQFQyX0hpbnRzX0Z1bmNzUmVjIHN0cnVjdHVyZS4gIFJlY29yZGluZyBnbHlwaCBoaW50cyBpcyBub3JtYWxseQorICAgKiAgIGFjaGlldmVkIHRocm91Z2ggdGhlIGZvbGxvd2luZyBzY2hlbWU6CisgICAqCisgICAqICAgLSBPcGVuIGEgbmV3IGhpbnQgcmVjb3JkaW5nIHNlc3Npb24gYnkgY2FsbGluZyB0aGUgYG9wZW4nIG1ldGhvZC4KKyAgICogICAgIFRoaXMgcmV3aW5kcyB0aGUgcmVjb3JkZXIgYW5kIHByZXBhcmUgaXQgZm9yIG5ldyBpbnB1dC4KKyAgICoKKyAgICogICAtIEZvciBlYWNoIGhpbnQgZm91bmQgaW4gdGhlIGdseXBoIGNoYXJzdHJpbmcsIGNhbGwgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICogICAgIG1ldGhvZCAoYHN0ZW1zJywgYGhpbnRtYXNrJywgYGNvdW50ZXJzJykuICBOb3RlIHRoYXQgdGhlc2UKKyAgICogICAgIGZ1bmN0aW9ucyBkbyBub3QgcmV0dXJuIGFuIGVycm9yIGNvZGUuCisgICAqCisgICAqICAgLSBDbG9zZSB0aGUgcmVjb3JkaW5nIHNlc3Npb24gYnkgY2FsbGluZyB0aGUgYGNsb3NlJyBtZXRob2QuICBJdAorICAgKiAgICAgcmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoZSBoaW50cyB3ZXJlIGludmFsaWQgb3Igc29tZXRoaW5nCisgICAqICAgICBzdHJhbmdlIGhhcHBlbmVkIChlLmcuLCBtZW1vcnkgc2hvcnRhZ2UpLgorICAgKgorICAgKiAgIFRoZSBoaW50cyBhY2N1bXVsYXRlZCBpbiB0aGUgb2JqZWN0IGNhbiBsYXRlciBiZSB1c2VkIGJ5IHRoZQorICAgKiAgIFBvc3RzY3JpcHQgaGludGVyLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgVDJfSGludHNSZWNfKiAgVDJfSGludHM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBUMl9IaW50c19GdW5jcworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBwb2ludGVyIHRvIHRoZSBAVDJfSGludHNfRnVuY3NSZWMgc3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgQVBJIG9mCisgICAqICAgYSBnaXZlbiBAVDJfSGludHMgb2JqZWN0LgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgVDJfSGludHNfRnVuY3NSZWNfKiAgVDJfSGludHNfRnVuY3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDJfSGludHNfT3BlbkZ1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWV0aG9kIG9mIHRoZSBAVDJfSGludHMgY2xhc3MgdXNlZCB0byBwcmVwYXJlIGl0IGZvciBhIG5ldyBUeXBlIDIKKyAgICogICBoaW50cyByZWNvcmRpbmcgc2Vzc2lvbi4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVHlwZSAyIGhpbnRzIHJlY29yZGVyLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBZb3Ugc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBAVDJfSGludHNfQ2xvc2VGdW5jIG1ldGhvZCBpbiBvcmRlciB0bworICAgKiAgIGNsb3NlIGFuIG9wZW5lZCByZWNvcmRpbmcgc2Vzc2lvbi4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKlQyX0hpbnRzX09wZW5GdW5jKSggVDJfSGludHMgIGhpbnRzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDJfSGludHNfU3RlbXNGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQyX0hpbnRzIGNsYXNzIHVzZWQgdG8gc2V0IHRoZSB0YWJsZSBvZiBzdGVtcyBpbgorICAgKiAgIGVpdGhlciB0aGUgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBkaW1lbnNpb24uICBFcXVpdmFsZW50IHRvIHRoZQorICAgKiAgIGBoc3RlbScsIGB2c3RlbScsIGBoc3RlbWhtJywgYW5kIGB2c3RlbWhtJyBUeXBlIDIgb3BlcmF0b3JzLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaGludHMgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBUeXBlIDIgaGludHMgcmVjb3JkZXIuCisgICAqCisgICAqICAgZGltZW5zaW9uIDo6CisgICAqICAgICAwIGZvciBob3Jpem9udGFsIHN0ZW1zIChoc3RlbSksIDEgZm9yIHZlcnRpY2FsIG9uZXMgKHZzdGVtKS4KKyAgICoKKyAgICogICBjb3VudCA6OgorICAgKiAgICAgVGhlIG51bWJlciBvZiBzdGVtcy4KKyAgICoKKyAgICogICBjb29yZHMgOjoKKyAgICogICAgIEFuIGFycmF5IG9mIGBjb3VudCcgKHBvc2l0aW9uLGxlbmd0aCkgcGFpcnMgaW4gMTYuMTYgZm9ybWF0LgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBVc2UgdmVydGljYWwgY29vcmRpbmF0ZXMgKHkpIGZvciBob3Jpem9udGFsIHN0ZW1zIChkaW09MCkuICBVc2UKKyAgICogICBob3Jpem9udGFsIGNvb3JkaW5hdGVzICh4KSBmb3IgdmVydGljYWwgc3RlbXMgKGRpbT0xKS4KKyAgICoKKyAgICogICBUaGVyZSBhcmUgYDIqY291bnQnIGVsZW1lbnRzIGluIHRoZSBgY29vcmRzJyBhcnJheS4gIEVhY2ggZXZlbgorICAgKiAgIGVsZW1lbnQgaXMgYW4gYWJzb2x1dGUgcG9zaXRpb24gaW4gZm9udCB1bml0cywgZWFjaCBvZGQgZWxlbWVudCBpcyBhCisgICAqICAgbGVuZ3RoIGluIGZvbnQgdW5pdHMuCisgICAqCisgICAqICAgQSBsZW5ndGggY2FuIGJlIG5lZ2F0aXZlLCBpbiB3aGljaCBjYXNlIGl0IG11c3QgYmUgZWl0aGVyIC0yMCBvcgorICAgKiAgIC0yMS4gIEl0IGlzIGludGVycHJldGVkIGFzIGEgYGdob3N0JyBzdGVtLCBhY2NvcmRpbmcgdG8gdGhlIFR5cGUgMQorICAgKiAgIHNwZWNpZmljYXRpb24uCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpUMl9IaW50c19TdGVtc0Z1bmMpKCBUMl9IaW50cyAgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZGltZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZGluYXRlcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIFQyX0hpbnRzX01hc2tGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQyX0hpbnRzIGNsYXNzIHVzZWQgdG8gc2V0IGEgZ2l2ZW4gaGludG1hc2sgKHRoaXMKKyAgICogICBjb3JyZXNwb25kcyB0byB0aGUgYGhpbnRtYXNrJyBUeXBlIDIgb3BlcmF0b3IpLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaGludHMgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBUeXBlIDIgaGludHMgcmVjb3JkZXIuCisgICAqCisgICAqICAgZW5kX3BvaW50IDo6CisgICAqICAgICBUaGUgZ2x5cGggaW5kZXggb2YgdGhlIGxhc3QgcG9pbnQgdG8gd2hpY2ggdGhlIHByZXZpb3VzbHkgZGVmaW5lZAorICAgKiAgICAgb3IgYWN0aXZhdGVkIGhpbnRzIGFwcGx5LgorICAgKgorICAgKiAgIGJpdF9jb3VudCA6OgorICAgKiAgICAgVGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBoaW50IG1hc2suCisgICAqCisgICAqICAgYnl0ZXMgOjoKKyAgICogICAgIEFuIGFycmF5IG9mIGJ5dGVzIG1vZGVsbGluZyB0aGUgaGludCBtYXNrLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBJZiB0aGUgaGludG1hc2sgc3RhcnRzIHRoZSBjaGFyc3RyaW5nIChiZWZvcmUgYW55IGdseXBoIHBvaW50CisgICAqICAgZGVmaW5pdGlvbiksIHRoZSB2YWx1ZSBvZiBgZW5kX3BvaW50JyBzaG91bGQgYmUgMC4KKyAgICoKKyAgICogICBgYml0X2NvdW50JyBpcyB0aGUgbnVtYmVyIG9mIG1lYW5pbmdmdWwgYml0cyBpbiB0aGUgYGJ5dGVzJyBhcnJheTsgaXQKKyAgICogICBtdXN0IGJlIGVxdWFsIHRvIHRoZSB0b3RhbCBudW1iZXIgb2YgaGludHMgZGVmaW5lZCBzbyBmYXIgKGkuZS4sCisgICAqICAgaG9yaXpvbnRhbCt2ZXJ0aWNhbHMpLgorICAgKgorICAgKiAgIFRoZSBgYnl0ZXMnIGFycmF5IGNhbiBjb21lIGRpcmVjdGx5IGZyb20gdGhlIFR5cGUgMiBjaGFyc3RyaW5nIGFuZAorICAgKiAgIHJlc3BlY3RzIHRoZSBzYW1lIGZvcm1hdC4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKlQyX0hpbnRzX01hc2tGdW5jKSggVDJfSGludHMgICAgICAgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGVuZF9wb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBiaXRfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CeXRlKiAgYnl0ZXMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBUMl9IaW50c19Db3VudGVyRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtZXRob2Qgb2YgdGhlIEBUMl9IaW50cyBjbGFzcyB1c2VkIHRvIHNldCBhIGdpdmVuIGNvdW50ZXIgbWFzaworICAgKiAgICh0aGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBgaGludG1hc2snIFR5cGUgMiBvcGVyYXRvcikuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFR5cGUgMiBoaW50cyByZWNvcmRlci4KKyAgICoKKyAgICogICBlbmRfcG9pbnQgOjoKKyAgICogICAgIEEgZ2x5cGggaW5kZXggb2YgdGhlIGxhc3QgcG9pbnQgdG8gd2hpY2ggdGhlIHByZXZpb3VzbHkgZGVmaW5lZCBvcgorICAgKiAgICAgYWN0aXZlIGhpbnRzIGFwcGx5LgorICAgKgorICAgKiAgIGJpdF9jb3VudCA6OgorICAgKiAgICAgVGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBoaW50IG1hc2suCisgICAqCisgICAqICAgYnl0ZXMgOjoKKyAgICogICAgIEFuIGFycmF5IG9mIGJ5dGVzIG1vZGVsbGluZyB0aGUgaGludCBtYXNrLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBJZiB0aGUgaGludG1hc2sgc3RhcnRzIHRoZSBjaGFyc3RyaW5nIChiZWZvcmUgYW55IGdseXBoIHBvaW50CisgICAqICAgZGVmaW5pdGlvbiksIHRoZSB2YWx1ZSBvZiBgZW5kX3BvaW50JyBzaG91bGQgYmUgMC4KKyAgICoKKyAgICogICBgYml0X2NvdW50JyBpcyB0aGUgbnVtYmVyIG9mIG1lYW5pbmdmdWwgYml0cyBpbiB0aGUgYGJ5dGVzJyBhcnJheTsgaXQKKyAgICogICBtdXN0IGJlIGVxdWFsIHRvIHRoZSB0b3RhbCBudW1iZXIgb2YgaGludHMgZGVmaW5lZCBzbyBmYXIgKGkuZS4sCisgICAqICAgaG9yaXpvbnRhbCt2ZXJ0aWNhbHMpLgorICAgKgorICAgKiAgICBUaGUgYGJ5dGVzJyBhcnJheSBjYW4gY29tZSBkaXJlY3RseSBmcm9tIHRoZSBUeXBlIDIgY2hhcnN0cmluZyBhbmQKKyAgICogICAgcmVzcGVjdHMgdGhlIHNhbWUgZm9ybWF0LgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqVDJfSGludHNfQ291bnRlckZ1bmMpKCBUMl9IaW50cyAgICAgICAgaGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgYml0X2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfQnl0ZSogIGJ5dGVzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDJfSGludHNfQ2xvc2VGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQyX0hpbnRzIGNsYXNzIHVzZWQgdG8gY2xvc2UgYSBoaW50IHJlY29yZGluZworICAgKiAgIHNlc3Npb24uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFR5cGUgMiBoaW50cyByZWNvcmRlci4KKyAgICoKKyAgICogICBlbmRfcG9pbnQgOjoKKyAgICogICAgIFRoZSBpbmRleCBvZiB0aGUgbGFzdCBwb2ludCBpbiB0aGUgaW5wdXQgZ2x5cGguCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhlIGVycm9yIGNvZGUgaXMgc2V0IHRvIGluZGljYXRlIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZQorICAgKiAgIHJlY29yZGluZyBzZXNzaW9uLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlQyX0hpbnRzX0Nsb3NlRnVuYykoIFQyX0hpbnRzICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgZW5kX3BvaW50ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDJfSGludHNfQXBwbHlGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQyX0hpbnRzIGNsYXNzIHVzZWQgdG8gYXBwbHkgaGludHMgdG8gdGhlCisgICAqICAgY29ycmVzcG9uZGluZyBnbHlwaCBvdXRsaW5lLiAgTXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGBjbG9zZScKKyAgICogICBtZXRob2QuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFR5cGUgMiBoaW50cyByZWNvcmRlci4KKyAgICoKKyAgICogICBvdXRsaW5lIDo6CisgICAqICAgICBBIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBvdXRsaW5lIGRlc2NyaXB0b3IuCisgICAqCisgICAqICAgZ2xvYmFscyA6OgorICAgKiAgICAgVGhlIGhpbnRlciBnbG9iYWxzIGZvciB0aGlzIGZvbnQuCisgICAqCisgICAqICAgaGludF9tb2RlIDo6CisgICAqICAgICBIaW50aW5nIGluZm9ybWF0aW9uLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIE9uIGlucHV0LCBhbGwgcG9pbnRzIHdpdGhpbiB0aGUgb3V0bGluZSBhcmUgaW4gZm9udCBjb29yZGluYXRlcy4gT24KKyAgICogICBvdXRwdXQsIHRoZXkgYXJlIGluIDEvNjR0aCBvZiBwaXhlbHMuCisgICAqCisgICAqICAgVGhlIHNjYWxpbmcgdHJhbnNmb3JtYXRpb24gaXMgdGFrZW4gZnJvbSB0aGUgYGdsb2JhbHMnIG9iamVjdCB3aGljaAorICAgKiAgIG11c3QgY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb250IHRoYW4gdGhlIGdseXBoLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlQyX0hpbnRzX0FwcGx5RnVuYykoIFQyX0hpbnRzICAgICAgICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgICAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQU0hfR2xvYmFscyAgICAgZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgaGludF9tb2RlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc3RydWN0OgorICAgKiAgIFQyX0hpbnRzX0Z1bmNzUmVjCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGUgc3RydWN0dXJlIHVzZWQgdG8gcHJvdmlkZSB0aGUgQVBJIHRvIEBUMl9IaW50cyBvYmplY3RzLgorICAgKgorICAgKiBAZmllbGRzOgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVDIgaGludHMgcmVjb3JkZXIgb2JqZWN0LgorICAgKgorICAgKiAgIG9wZW4gOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBvcGVuIGEgcmVjb3JkaW5nIHNlc3Npb24uCisgICAqCisgICAqICAgY2xvc2UgOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBjbG9zZSBhIHJlY29yZGluZyBzZXNzaW9uLgorICAgKgorICAgKiAgIHN0ZW1zIDo6CisgICAqICAgICBUaGUgZnVuY3Rpb24gdG8gc2V0IHRoZSBkaW1lbnNpb24ncyBzdGVtcyB0YWJsZS4KKyAgICoKKyAgICogICBoaW50bWFzayA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIHNldCBoaW50IG1hc2tzLgorICAgKgorICAgKiAgIGNvdW50ZXIgOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBzZXQgY291bnRlciBtYXNrcy4KKyAgICoKKyAgICogICBhcHBseSA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRoZSBoaW50cyBvbiB0aGUgY29ycmVzcG9uZGluZyBnbHlwaCBvdXRsaW5lLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFQyX0hpbnRzX0Z1bmNzUmVjXworICB7CisgICAgVDJfSGludHMgICAgICAgICAgICAgIGhpbnRzOworICAgIFQyX0hpbnRzX09wZW5GdW5jICAgICBvcGVuOworICAgIFQyX0hpbnRzX0Nsb3NlRnVuYyAgICBjbG9zZTsKKyAgICBUMl9IaW50c19TdGVtc0Z1bmMgICAgc3RlbXM7CisgICAgVDJfSGludHNfTWFza0Z1bmMgICAgIGhpbnRtYXNrOworICAgIFQyX0hpbnRzX0NvdW50ZXJGdW5jICBjb3VudGVyOworICAgIFQyX0hpbnRzX0FwcGx5RnVuYyAgICBhcHBseTsKKworICB9IFQyX0hpbnRzX0Z1bmNzUmVjOworCisKKyAgLyogKi8KKworCisgIHR5cGVkZWYgc3RydWN0ICBQU0hpbnRlcl9JbnRlcmZhY2VfCisgIHsKKyAgICBQU0hfR2xvYmFsc19GdW5jcyAgKCpnZXRfZ2xvYmFsc19mdW5jcykoIEZUX01vZHVsZSAgbW9kdWxlICk7CisgICAgVDFfSGludHNfRnVuY3MgICAgICgqZ2V0X3QxX2Z1bmNzKSAgICAgKCBGVF9Nb2R1bGUgIG1vZHVsZSApOworICAgIFQyX0hpbnRzX0Z1bmNzICAgICAoKmdldF90Ml9mdW5jcykgICAgICggRlRfTW9kdWxlICBtb2R1bGUgKTsKKworICB9IFBTSGludGVyX0ludGVyZmFjZTsKKworICB0eXBlZGVmIFBTSGludGVyX0ludGVyZmFjZSogIFBTSGludGVyX1NlcnZpY2U7CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9QU0hJTlRFUl9JTlRFUkZBQ0UoICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2dsb2JhbHNfZnVuY3NfLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X3QxX2Z1bmNzXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X3QyX2Z1bmNzXyApICAgICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBQU0hpbnRlcl9JbnRlcmZhY2UgIGNsYXNzXyA9ICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2dsb2JhbHNfZnVuY3NfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X3QxX2Z1bmNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X3QyX2Z1bmNzXyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1BTSElOVEVSX0lOVEVSRkFDRSggICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2dsb2JhbHNfZnVuY3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfdDFfZnVuY3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF90Ml9mdW5jc18gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5LCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTSGludGVyX0ludGVyZmFjZSogIGNsYXp6ICkgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9nbG9iYWxzX2Z1bmNzID0gZ2V0X2dsb2JhbHNfZnVuY3NfOyAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X3QxX2Z1bmNzICAgICAgPSBnZXRfdDFfZnVuY3NfOyAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfdDJfZnVuY3MgICAgICA9IGdldF90Ml9mdW5jc187ICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fUFNISU5UU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZiZGYuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZiZGYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDhiZDE1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmJkZi5oCkBAIC0wLDAgKzEsODIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2YmRmLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgQkRGIHNlcnZpY2VzIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMywgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWQkRGX0hfXworI2RlZmluZSBfX1NWQkRGX0hfXworCisjaW5jbHVkZSAiLi4vLi4vZnRiZGYuaCIKKyNpbmNsdWRlICIuLi9mdHNlcnYuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfQkRGICAiYmRmIgorCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9CREZfR2V0Q2hhcnNldElkRnVuYykoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqYWNoYXJzZXRfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgKmFjaGFyc2V0X3JlZ2lzdHJ5ICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0JERl9HZXRQcm9wZXJ0eUZ1bmMpKCBGVF9GYWNlICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgICAgICBwcm9wX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJERl9Qcm9wZXJ0eVJlYyAgKmFwcm9wZXJ0eSApOworCisKKyAgRlRfREVGSU5FX1NFUlZJQ0UoIEJERiApCisgIHsKKyAgICBGVF9CREZfR2V0Q2hhcnNldElkRnVuYyAgZ2V0X2NoYXJzZXRfaWQ7CisgICAgRlRfQkRGX0dldFByb3BlcnR5RnVuYyAgIGdldF9wcm9wZXJ0eTsKKyAgfTsKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfQkRGUmVjKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2NoYXJzZXRfaWRfLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9wcm9wZXJ0eV8gKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfQkRGUmVjICBjbGFzc18gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9jaGFyc2V0X2lkXywgZ2V0X3Byb3BlcnR5XyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9CREZSZWMoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfY2hhcnNldF9pZF8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3Byb3BlcnR5XyApICAgICAgICAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9TZXJ2aWNlX0JERlJlYyogIGNsYXp6ICkgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfY2hhcnNldF9pZCA9IGdldF9jaGFyc2V0X2lkXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X3Byb3BlcnR5ICAgPSBnZXRfcHJvcGVydHlfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZCREZfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2lkLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2lkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUzM2M3NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZjaWQuaApAQCAtMCwwICsxLDg5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdmNpZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIENJRCBmb250IHNlcnZpY2VzIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDcsIDIwMDksIDIwMTIgYnkgRGVyZWsgQ2xlZ2csIE1pY2hhZWwgVG9mdGRhbC4gICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWQ0lEX0hfXworI2RlZmluZSBfX1NWQ0lEX0hfXworCisjaW5jbHVkZSAiLi4vZnRzZXJ2LmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX0NJRCAgIkNJRCIKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfQ0lEX0dldFJlZ2lzdHJ5T3JkZXJpbmdTdXBwbGVtZW50RnVuYykoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICpyZWdpc3RyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICpvcmRlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICpzdXBwbGVtZW50ICk7CisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9DSURfR2V0SXNJbnRlcm5hbGx5Q0lES2V5ZWRGdW5jKSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICppc19jaWQgKTsKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0NJRF9HZXRDSURGcm9tR2x5cGhJbmRleEZ1bmMpKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAqY2lkICk7CisKKyAgRlRfREVGSU5FX1NFUlZJQ0UoIENJRCApCisgIHsKKyAgICBGVF9DSURfR2V0UmVnaXN0cnlPcmRlcmluZ1N1cHBsZW1lbnRGdW5jICBnZXRfcm9zOworICAgIEZUX0NJRF9HZXRJc0ludGVybmFsbHlDSURLZXllZEZ1bmMgICAgICAgIGdldF9pc19jaWQ7CisgICAgRlRfQ0lEX0dldENJREZyb21HbHlwaEluZGV4RnVuYyAgICAgICAgICAgZ2V0X2NpZF9mcm9tX2dseXBoX2luZGV4OworICB9OworCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9DSURSRUMoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfcm9zXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2lzX2NpZF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9jaWRfZnJvbV9nbHlwaF9pbmRleF8gKSAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfQ0lEUmVjIGNsYXNzXyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9yb3NfLCBnZXRfaXNfY2lkXywgZ2V0X2NpZF9mcm9tX2dseXBoX2luZGV4XyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9DSURSRUMoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfcm9zXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2lzX2NpZF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9jaWRfZnJvbV9nbHlwaF9pbmRleF8gKSAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VfQ0lEUmVjKiAgY2xhenogKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X3JvcyAgICAgICAgICAgICAgICAgID0gZ2V0X3Jvc187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9pc19jaWQgICAgICAgICAgICAgICA9IGdldF9pc19jaWRfOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfY2lkX2Zyb21fZ2x5cGhfaW5kZXggPSBnZXRfY2lkX2Zyb21fZ2x5cGhfaW5kZXhfOyAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVkNJRF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZnbGRpY3QuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZnbGRpY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTU2Zjc0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmdsZGljdC5oCkBAIC0wLDAgKzEsODggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2Z2xkaWN0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgZ2x5cGggZGljdGlvbmFyeSBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMywgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWR0xESUNUX0hfXworI2RlZmluZSBfX1NWR0xESUNUX0hfXworCisjaW5jbHVkZSAiLi4vZnRzZXJ2LmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKgorICAgKiAgQSBzZXJ2aWNlIHVzZWQgdG8gcmV0cmlldmUgZ2x5cGggbmFtZXMsIGFzIHdlbGwgYXMgdG8gZmluZCB0aGUKKyAgICogIGluZGV4IG9mIGEgZ2l2ZW4gZ2x5cGggbmFtZSBpbiBhIGZvbnQuCisgICAqCisgICAqLworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfR0xZUEhfRElDVCAgImdseXBoLWRpY3QiCisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfR2x5cGhEaWN0X0dldE5hbWVGdW5jKSggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgYnVmZmVyX21heCApOworCisgIHR5cGVkZWYgRlRfVUludAorICAoKkZUX0dseXBoRGljdF9OYW1lSW5kZXhGdW5jKSggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmluZyogIGdseXBoX25hbWUgKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBHbHlwaERpY3QgKQorICB7CisgICAgRlRfR2x5cGhEaWN0X0dldE5hbWVGdW5jICAgIGdldF9uYW1lOworICAgIEZUX0dseXBoRGljdF9OYW1lSW5kZXhGdW5jICBuYW1lX2luZGV4OyAgLyogb3B0aW9uYWwgKi8KKyAgfTsKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfR0xZUEhESUNUUkVDKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9uYW1lXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9pbmRleF8pICAgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfR2x5cGhEaWN0UmVjICBjbGFzc18gPSAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X25hbWVfLCBuYW1lX2luZGV4XyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9HTFlQSERJQ1RSRUMoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X25hbWVfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX2luZGV4XykgICAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlX0dseXBoRGljdFJlYyogIGNsYXp6ICkgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfbmFtZSAgID0gZ2V0X25hbWVfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPm5hbWVfaW5kZXggPSBuYW1lX2luZGV4XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVkdMRElDVF9IX18gKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZneHZhbC5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmd4dmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3YjZhOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZneHZhbC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2Z3h2YWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIHZhbGlkYXRpbmcgVHJ1ZVR5cGVHWC9BQVQgdGFibGVzIChzcGVjaWZpY2F0aW9uKS4gICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNCwgMjAwNSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgTWFzYXRha2UgWUFNQVRPLCBSZWQgSGF0IEsuSy4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGd4dmFsaWQgaXMgZGVyaXZlZCBmcm9tIGJvdGggZ3hsYXlvdXQgbW9kdWxlIGFuZCBvdHZhbGlkIG1vZHVsZS4gICAgICAgICovCisvKiBEZXZlbG9wbWVudCBvZiBneGxheW91dCBpcyBzdXBwb3J0ZWQgYnkgdGhlIEluZm9ybWF0aW9uLXRlY2hub2xvZ3kgICAgICAqLworLyogUHJvbW90aW9uIEFnZW5jeShJUEEpLCBKYXBhbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVkdYVkFMX0hfXworI2RlZmluZSBfX1NWR1hWQUxfSF9fCisKKyNpbmNsdWRlICIuLi8uLi9mdGd4dmFsLmgiCisjaW5jbHVkZSAiLi4vZnR2YWxpZC5oIgorCitGVF9CRUdJTl9IRUFERVIKKworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfR1hfVkFMSURBVEUgICAgICAgICAgICJ0cnVldHlwZWd4LXZhbGlkYXRlIgorI2RlZmluZSBGVF9TRVJWSUNFX0lEX0NMQVNTSUNLRVJOX1ZBTElEQVRFICAiY2xhc3NpY2tlcm4tdmFsaWRhdGUiCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKmd4dl92YWxpZGF0ZV9mdW5jKSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgZ3hfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgdGFibGVzW0ZUX1ZBTElEQVRFX0dYX0xFTkdUSF0sCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgdGFibGVfbGVuZ3RoICk7CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqY2tlcm5fdmFsaWRhdGVfZnVuYykoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgY2tlcm5fZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAqY2tlcm5fdGFibGUgKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBHWHZhbGlkYXRlICkKKyAgeworICAgIGd4dl92YWxpZGF0ZV9mdW5jICB2YWxpZGF0ZTsKKyAgfTsKKworICBGVF9ERUZJTkVfU0VSVklDRSggQ0tFUk52YWxpZGF0ZSApCisgIHsKKyAgICBja2Vybl92YWxpZGF0ZV9mdW5jICB2YWxpZGF0ZTsKKyAgfTsKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVkdYVkFMX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmtlcm4uaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZrZXJuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwM2ZlZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZrZXJuLmgKQEAgLTAsMCArMSw1MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3ZrZXJuLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBLZXJuaW5nIHNlcnZpY2UgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA2IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fU1ZLRVJOX0hfXworI2RlZmluZSBfX1NWS0VSTl9IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorI2luY2x1ZGUgIi4uLy4uL3R0dGFibGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9LRVJOSU5HICAia2VybmluZyIKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9LZXJuaW5nX1RyYWNrR2V0RnVuYykoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgcG9pbnRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgZGVncmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBha2VybmluZyApOworCisgIEZUX0RFRklORV9TRVJWSUNFKCBLZXJuaW5nICkKKyAgeworICAgIEZUX0tlcm5pbmdfVHJhY2tHZXRGdW5jICBnZXRfdHJhY2s7CisgIH07CisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZLRVJOX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2bW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDBmZjg3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2bW0uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgTXVsdGlwbGUgTWFzdGVycyBhbmQgR1ggdmFyIHNlcnZpY2VzIChzcGVjaWZpY2F0aW9uKS4gICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMywgMjAwNCwgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWTU1fSF9fCisjZGVmaW5lIF9fU1ZNTV9IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoKKyAgICogIEEgc2VydmljZSB1c2VkIHRvIG1hbmFnZSBtdWx0aXBsZS1tYXN0ZXJzIGRhdGEgaW4gYSBnaXZlbiBmYWNlLgorICAgKgorICAgKiAgU2VlIHRoZSByZWxhdGVkIEFQSXMgaW4gYGZ0bW0uaCcgKEZUX01VTFRJUExFX01BU1RFUlNfSCkuCisgICAqCisgICAqLworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfTVVMVElfTUFTVEVSUyAgIm11bHRpLW1hc3RlcnMiCisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfR2V0X01NX0Z1bmMpKCBGVF9GYWNlICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfTXVsdGlfTWFzdGVyKiAgbWFzdGVyICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0dldF9NTV9WYXJfRnVuYykoIEZUX0ZhY2UgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01NX1ZhciogICptYXN0ZXIgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfU2V0X01NX0Rlc2lnbl9GdW5jKSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIG51bV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyogIGNvb3JkcyApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TZXRfVmFyX0Rlc2lnbl9GdW5jKSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIG51bV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRzICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1NldF9NTV9CbGVuZF9GdW5jKSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICBjb29yZHMgKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBNdWx0aU1hc3RlcnMgKQorICB7CisgICAgRlRfR2V0X01NX0Z1bmMgICAgICAgICAgZ2V0X21tOworICAgIEZUX1NldF9NTV9EZXNpZ25fRnVuYyAgIHNldF9tbV9kZXNpZ247CisgICAgRlRfU2V0X01NX0JsZW5kX0Z1bmMgICAgc2V0X21tX2JsZW5kOworICAgIEZUX0dldF9NTV9WYXJfRnVuYyAgICAgIGdldF9tbV92YXI7CisgICAgRlRfU2V0X1Zhcl9EZXNpZ25fRnVuYyAgc2V0X3Zhcl9kZXNpZ247CisgIH07CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX01VTFRJTUFTVEVSU1JFQyggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tbV8sICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbW1fZGVzaWduXywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X21tX2JsZW5kXywgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tbV92YXJfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfdmFyX2Rlc2lnbl8gKSAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX011bHRpTWFzdGVyc1JlYyAgY2xhc3NfID0gICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfbW1fLCBzZXRfbW1fZGVzaWduXywgc2V0X21tX2JsZW5kXywgZ2V0X21tX3Zhcl8sIHNldF92YXJfZGVzaWduXyAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfTVVMVElNQVNURVJTUkVDKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X21tXywgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9tbV9kZXNpZ25fLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbW1fYmxlbmRfLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X21tX3Zhcl8sICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF92YXJfZGVzaWduXyApICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfU2VydmljZV9NdWx0aU1hc3RlcnNSZWMqICBjbGF6eiApICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X21tICAgICAgICAgPSBnZXRfbW1fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnNldF9tbV9kZXNpZ24gID0gc2V0X21tX2Rlc2lnbl87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5zZXRfbW1fYmxlbmQgICA9IHNldF9tbV9ibGVuZF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X21tX3ZhciAgICAgPSBnZXRfbW1fdmFyXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnNldF92YXJfZGVzaWduID0gc2V0X3Zhcl9kZXNpZ25fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19TVk1NX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm90dmFsLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2b3R2YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2NkMzRmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm90dmFsLmgKQEAgLTAsMCArMSw1NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3ZvdHZhbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBPcGVuVHlwZSB2YWxpZGF0aW9uIHNlcnZpY2UgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA0LCAyMDA2IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fU1ZPVFZBTF9IX18KKyNkZWZpbmUgX19TVk9UVkFMX0hfXworCisjaW5jbHVkZSAiLi4vLi4vZnRvdHZhbC5oIgorI2luY2x1ZGUgIi4uL2Z0dmFsaWQuaCIKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX09QRU5UWVBFX1ZBTElEQVRFICAib3BlbnR5cGUtdmFsaWRhdGUiCisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqb3R2X3ZhbGlkYXRlX2Z1bmMpKCBGVF9GYWNlIHZvbGF0aWxlICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgb3RfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgICAgICAgICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICAgICAgICAqZ2RlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAgICAgICAgKmdwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgICAgICAgICpnc3ViLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICAgICAgICAqanN0ZiApOworCisKKyAgRlRfREVGSU5FX1NFUlZJQ0UoIE9UdmFsaWRhdGUgKQorICB7CisgICAgb3R2X3ZhbGlkYXRlX2Z1bmMgIHZhbGlkYXRlOworICB9OworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX1NWT1RWQUxfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cGZyLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cGZyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFhMDBkMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZwZnIuaApAQCAtMCwwICsxLDY2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdnBmci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgSW50ZXJuYWwgUEZSIHNlcnZpY2UgZnVuY3Rpb25zIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDMsIDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVlBGUl9IX18KKyNkZWZpbmUgX19TVlBGUl9IX18KKworI2luY2x1ZGUgIi4uLy4uL2Z0cGZyLmgiCisjaW5jbHVkZSAiLi4vZnRzZXJ2LmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX1BGUl9NRVRSSUNTICAicGZyLW1ldHJpY3MiCisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfUEZSX0dldE1ldHJpY3NGdW5jKSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAqYW91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICphbWV0cmljcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgKmF4X3NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAqYXlfc2NhbGUgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfUEZSX0dldEtlcm5pbmdGdW5jKSggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciAgKmF2ZWN0b3IgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfUEZSX0dldEFkdmFuY2VGdW5jKSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAqYWFkdmFuY2UgKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBQZnJNZXRyaWNzICkKKyAgeworICAgIEZUX1BGUl9HZXRNZXRyaWNzRnVuYyAgZ2V0X21ldHJpY3M7CisgICAgRlRfUEZSX0dldEtlcm5pbmdGdW5jICBnZXRfa2VybmluZzsKKyAgICBGVF9QRlJfR2V0QWR2YW5jZUZ1bmMgIGdldF9hZHZhbmNlOworCisgIH07CisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1NWUEZSX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZTg2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cG9zdG5tLmgKQEAgLTAsMCArMSw4MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3Zwb3N0bm0uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBQb3N0U2NyaXB0IG5hbWUgc2VydmljZXMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLCAyMDA3LCAyMDA5LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fU1ZQT1NUTk1fSF9fCisjZGVmaW5lIF9fU1ZQT1NUTk1fSF9fCisKKyNpbmNsdWRlICIuLi9mdHNlcnYuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworICAvKgorICAgKiAgQSB0cml2aWFsIHNlcnZpY2UgdXNlZCB0byByZXRyaWV2ZSB0aGUgUG9zdFNjcmlwdCBuYW1lIG9mIGEgZ2l2ZW4KKyAgICogIGZvbnQgd2hlbiBhdmFpbGFibGUuICBUaGUgYGdldF9uYW1lJyBmaWVsZCBzaG91bGQgbmV2ZXIgYmUgTlVMTC4KKyAgICoKKyAgICogIFRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGNhbiByZXR1cm4gTlVMTCB0byBpbmRpY2F0ZSB0aGF0IHRoZQorICAgKiAgUG9zdFNjcmlwdCBuYW1lIGlzIG5vdCBhdmFpbGFibGUuCisgICAqCisgICAqICBUaGUgbmFtZSBpcyBvd25lZCBieSB0aGUgZmFjZSBhbmQgd2lsbCBiZSBkZXN0cm95ZWQgd2l0aCBpdC4KKyAgICovCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0ZPTlRfTkFNRSAgInBvc3RzY3JpcHQtZm9udC1uYW1lIgorCisKKyAgdHlwZWRlZiBjb25zdCBjaGFyKgorICAoKkZUX1BzTmFtZV9HZXRGdW5jKSggRlRfRmFjZSAgZmFjZSApOworCisKKyAgRlRfREVGSU5FX1NFUlZJQ0UoIFBzRm9udE5hbWUgKQorICB7CisgICAgRlRfUHNOYW1lX0dldEZ1bmMgIGdldF9wc19mb250X25hbWU7CisgIH07CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1BTRk9OVE5BTUVSRUMoIGNsYXNzXywgZ2V0X3BzX2ZvbnRfbmFtZV8gKSBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX1BzRm9udE5hbWVSZWMgIGNsYXNzXyA9ICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X3BzX2ZvbnRfbmFtZV8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfUFNGT05UTkFNRVJFQyggY2xhc3NfLCBnZXRfcHNfZm9udF9uYW1lXyApIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgICAgICAgICBsaWJyYXJ5LCAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlX1BzRm9udE5hbWVSZWMqICBjbGF6eiApICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X3BzX2ZvbnRfbmFtZSA9IGdldF9wc19mb250X25hbWVfOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVlBPU1ROTV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwcm9wLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHJvcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZGEwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHJvcC5oCkBAIC0wLDAgKzEsODEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2cHJvcC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcHJvcGVydHkgc2VydmljZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWUFJPUF9IX18KKyNkZWZpbmUgX19TVlBST1BfSF9fCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX1BST1BFUlRJRVMgICJwcm9wZXJ0aWVzIgorCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1Byb3BlcnRpZXNfU2V0RnVuYykoIEZUX01vZHVsZSAgICBtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogIHZhbHVlICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1Byb3BlcnRpZXNfR2V0RnVuYykoIEZUX01vZHVsZSAgICBtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgIHZhbHVlICk7CisKKworICBGVF9ERUZJTkVfU0VSVklDRSggUHJvcGVydGllcyApCisgIHsKKyAgICBGVF9Qcm9wZXJ0aWVzX1NldEZ1bmMgIHNldF9wcm9wZXJ0eTsKKyAgICBGVF9Qcm9wZXJ0aWVzX0dldEZ1bmMgIGdldF9wcm9wZXJ0eTsKKyAgfTsKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfUFJPUEVSVElFU1JFQyggY2xhc3NfLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9wcm9wZXJ0eV8sICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfcHJvcGVydHlfICkgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfUHJvcGVydGllc1JlYyAgY2xhc3NfID0gICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNldF9wcm9wZXJ0eV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfcHJvcGVydHlfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfUFJPUEVSVElFU1JFQyggY2xhc3NfLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9wcm9wZXJ0eV8sICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfcHJvcGVydHlfICkgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfU2VydmljZV9Qcm9wZXJ0aWVzUmVjKiAgY2xhenogKSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+c2V0X3Byb3BlcnR5ID0gc2V0X3Byb3BlcnR5XzsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9wcm9wZXJ0eSA9IGdldF9wcm9wZXJ0eV87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX1NWUFJPUF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2NtYXAuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2NtYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTJkMTRmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzY21hcC5oCkBAIC0wLDAgKzEsMTc3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdnBzY21hcC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIFBvc3RTY3JpcHQgY2hhcm1hcCBzZXJ2aWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDMsIDIwMDYsIDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVlBTQ01BUF9IX18KKyNkZWZpbmUgX19TVlBTQ01BUF9IX18KKworI2luY2x1ZGUgIi4uL2Z0b2Jqcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0NNQVBTICAicG9zdHNjcmlwdC1jbWFwcyIKKworCisgIC8qCisgICAqICBBZG9iZSBnbHlwaCBuYW1lIHRvIHVuaWNvZGUgdmFsdWUuCisgICAqLworICB0eXBlZGVmIEZUX1VJbnQzMgorICAoKlBTX1VuaWNvZGVfVmFsdWVGdW5jKSggY29uc3QgY2hhciogIGdseXBoX25hbWUgKTsKKworICAvKgorICAgKiAgTWFjaW50b3NoIG5hbWUgaWQgdG8gZ2x5cGggbmFtZS4gIE5VTEwgaWYgaW52YWxpZCBpbmRleC4KKyAgICovCisgIHR5cGVkZWYgY29uc3QgY2hhcioKKyAgKCpQU19NYWNpbnRvc2hfTmFtZUZ1bmMpKCBGVF9VSW50ICBuYW1lX2luZGV4ICk7CisKKyAgLyoKKyAgICogIEFkb2JlIHN0YW5kYXJkIHN0cmluZyBJRCB0byBnbHlwaCBuYW1lLiAgTlVMTCBpZiBpbnZhbGlkIGluZGV4LgorICAgKi8KKyAgdHlwZWRlZiBjb25zdCBjaGFyKgorICAoKlBTX0Fkb2JlX1N0ZF9TdHJpbmdzRnVuYykoIEZUX1VJbnQgIHN0cmluZ19pbmRleCApOworCisKKyAgLyoKKyAgICogIFNpbXBsZSB1bmljb2RlIC0+IGdseXBoIGluZGV4IGNoYXJtYXAgYnVpbHQgZnJvbSBmb250IGdseXBoIG5hbWVzCisgICAqICB0YWJsZS4KKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19VbmlNYXBfCisgIHsKKyAgICBGVF9VSW50MzIgIHVuaWNvZGU7ICAgICAgLyogYml0IDMxIHNldDogaXMgZ2x5cGggdmFyaWFudCAqLworICAgIEZUX1VJbnQgICAgZ2x5cGhfaW5kZXg7CisKKyAgfSBQU19VbmlNYXA7CisKKworICB0eXBlZGVmIHN0cnVjdCBQU19Vbmljb2Rlc1JlY18qICBQU19Vbmljb2RlczsKKworICB0eXBlZGVmIHN0cnVjdCAgUFNfVW5pY29kZXNSZWNfCisgIHsKKyAgICBGVF9DTWFwUmVjICBjbWFwOworICAgIEZUX1VJbnQgICAgIG51bV9tYXBzOworICAgIFBTX1VuaU1hcCogIG1hcHM7CisKKyAgfSBQU19Vbmljb2Rlc1JlYzsKKworCisgIC8qCisgICAqICBBIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSBnbHlwaCBuYW1lIGZvciBhIGdpdmVuIGluZGV4LiAgUmV0dXJucworICAgKiAgTlVMTCBpZiBpbnZhbGlkIGluZGV4LgorICAgKi8KKyAgdHlwZWRlZiBjb25zdCBjaGFyKgorICAoKlBTX0dldEdseXBoTmFtZUZ1bmMpKCBGVF9Qb2ludGVyICBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBzdHJpbmdfaW5kZXggKTsKKworICAvKgorICAgKiAgQSBmdW5jdGlvbiB1c2VkIHRvIHJlbGVhc2UgdGhlIGdseXBoIG5hbWUgcmV0dXJuZWQgYnkKKyAgICogIFBTX0dldEdseXBoTmFtZUZ1bmMsIHdoZW4gbmVlZGVkCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpQU19GcmVlR2x5cGhOYW1lRnVuYykoIEZUX1BvaW50ZXIgIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgbmFtZSApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpQU19Vbmljb2Rlc19Jbml0RnVuYykoIEZUX01lbW9yeSAgICAgICAgICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQU19Vbmljb2RlcyAgICAgICAgICAgdW5pY29kZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgICAgbnVtX2dseXBocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTX0dldEdseXBoTmFtZUZ1bmMgICBnZXRfZ2x5cGhfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTX0ZyZWVHbHlwaE5hbWVGdW5jICBmcmVlX2dseXBoX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICAgICAgICAgICAgZ2x5cGhfZGF0YSApOworCisgIHR5cGVkZWYgRlRfVUludAorICAoKlBTX1VuaWNvZGVzX0NoYXJJbmRleEZ1bmMpKCBQU19Vbmljb2RlcyAgdW5pY29kZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgICB1bmljb2RlICk7CisKKyAgdHlwZWRlZiBGVF9VSW50MzIKKyAgKCpQU19Vbmljb2Rlc19DaGFyTmV4dEZ1bmMpKCBQU19Vbmljb2RlcyAgdW5pY29kZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAgKnVuaWNvZGUgKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBQc0NNYXBzICkKKyAgeworICAgIFBTX1VuaWNvZGVfVmFsdWVGdW5jICAgICAgIHVuaWNvZGVfdmFsdWU7CisKKyAgICBQU19Vbmljb2Rlc19Jbml0RnVuYyAgICAgICB1bmljb2Rlc19pbml0OworICAgIFBTX1VuaWNvZGVzX0NoYXJJbmRleEZ1bmMgIHVuaWNvZGVzX2NoYXJfaW5kZXg7CisgICAgUFNfVW5pY29kZXNfQ2hhck5leHRGdW5jICAgdW5pY29kZXNfY2hhcl9uZXh0OworCisgICAgUFNfTWFjaW50b3NoX05hbWVGdW5jICAgICAgbWFjaW50b3NoX25hbWU7CisgICAgUFNfQWRvYmVfU3RkX1N0cmluZ3NGdW5jICAgYWRvYmVfc3RkX3N0cmluZ3M7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQqICAgICAgYWRvYmVfc3RkX2VuY29kaW5nOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiAgICAgIGFkb2JlX2V4cGVydF9lbmNvZGluZzsKKyAgfTsKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfUFNDTUFQU1JFQyggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfdmFsdWVfLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2Rlc19pbml0XywgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZXNfY2hhcl9pbmRleF8sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVzX2NoYXJfbmV4dF8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNpbnRvc2hfbmFtZV8sICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRvYmVfc3RkX3N0cmluZ3NfLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkb2JlX3N0ZF9lbmNvZGluZ18sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG9iZV9leHBlcnRfZW5jb2RpbmdfICkgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfUHNDTWFwc1JlYyAgY2xhc3NfID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVuaWNvZGVfdmFsdWVfLCB1bmljb2Rlc19pbml0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1bmljb2Rlc19jaGFyX2luZGV4XywgdW5pY29kZXNfY2hhcl9uZXh0XywgbWFjaW50b3NoX25hbWVfLCAgICAgICAgICAgICBcCisgICAgYWRvYmVfc3RkX3N0cmluZ3NfLCBhZG9iZV9zdGRfZW5jb2RpbmdfLCBhZG9iZV9leHBlcnRfZW5jb2RpbmdfICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1BTQ01BUFNSRUMoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX3ZhbHVlXywgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZXNfaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVzX2NoYXJfaW5kZXhfLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2Rlc19jaGFyX25leHRfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaW50b3NoX25hbWVfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkb2JlX3N0ZF9zdHJpbmdzXywgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG9iZV9zdGRfZW5jb2RpbmdfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRvYmVfZXhwZXJ0X2VuY29kaW5nXyApICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlX1BzQ01hcHNSZWMqICBjbGF6eiApICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1VOVVNFRCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnVuaWNvZGVfdmFsdWUgICAgICAgICA9IHVuaWNvZGVfdmFsdWVfOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT51bmljb2Rlc19pbml0ICAgICAgICAgPSB1bmljb2Rlc19pbml0XzsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+dW5pY29kZXNfY2hhcl9pbmRleCAgID0gdW5pY29kZXNfY2hhcl9pbmRleF87ICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnVuaWNvZGVzX2NoYXJfbmV4dCAgICA9IHVuaWNvZGVzX2NoYXJfbmV4dF87ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5tYWNpbnRvc2hfbmFtZSAgICAgICAgPSBtYWNpbnRvc2hfbmFtZV87ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+YWRvYmVfc3RkX3N0cmluZ3MgICAgID0gYWRvYmVfc3RkX3N0cmluZ3NfOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmFkb2JlX3N0ZF9lbmNvZGluZyAgICA9IGFkb2JlX3N0ZF9lbmNvZGluZ187ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5hZG9iZV9leHBlcnRfZW5jb2RpbmcgPSBhZG9iZV9leHBlcnRfZW5jb2RpbmdfOyAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVlBTQ01BUF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2luZm8uaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2luZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTNiMzAzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzaW5mby5oCkBAIC0wLDAgKzEsMTExIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdnBzaW5mby5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIFBvc3RTY3JpcHQgaW5mbyBzZXJ2aWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDMsIDIwMDQsIDIwMDksIDIwMTEsIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVlBTSU5GT19IX18KKyNkZWZpbmUgX19TVlBTSU5GT19IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorI2luY2x1ZGUgIi4uL3QxdHlwZXMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9JTkZPICAicG9zdHNjcmlwdC1pbmZvIgorCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlBTX0dldEZvbnRJbmZvRnVuYykoIEZUX0ZhY2UgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQU19Gb250SW5mb1JlYyogIGFmb250X2luZm8gKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqUFNfR2V0Rm9udEV4dHJhRnVuYykoIEZUX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBTX0ZvbnRFeHRyYVJlYyogIGFmb250X2V4dHJhICk7CisKKyAgdHlwZWRlZiBGVF9JbnQKKyAgKCpQU19IYXNHbHlwaE5hbWVzRnVuYykoIEZUX0ZhY2UgIGZhY2UgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqUFNfR2V0Rm9udFByaXZhdGVGdW5jKSggRlRfRmFjZSAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNfUHJpdmF0ZVJlYyogIGFmb250X3ByaXZhdGUgKTsKKworICB0eXBlZGVmIEZUX0xvbmcKKyAgKCpQU19HZXRGb250VmFsdWVGdW5jKSggRlRfRmFjZSAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQU19EaWN0X0tleXMgIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgdmFsdWVfbGVuICk7CisKKworICBGVF9ERUZJTkVfU0VSVklDRSggUHNJbmZvICkKKyAgeworICAgIFBTX0dldEZvbnRJbmZvRnVuYyAgICAgcHNfZ2V0X2ZvbnRfaW5mbzsKKyAgICBQU19HZXRGb250RXh0cmFGdW5jICAgIHBzX2dldF9mb250X2V4dHJhOworICAgIFBTX0hhc0dseXBoTmFtZXNGdW5jICAgcHNfaGFzX2dseXBoX25hbWVzOworICAgIFBTX0dldEZvbnRQcml2YXRlRnVuYyAgcHNfZ2V0X2ZvbnRfcHJpdmF0ZTsKKyAgICBQU19HZXRGb250VmFsdWVGdW5jICAgIHBzX2dldF9mb250X3ZhbHVlOworICB9OworCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9QU0lORk9SRUMoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2ZvbnRfaW5mb18sICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc19nZXRfZm9udF9leHRyYV8sICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19nbHlwaF9uYW1lc18sICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2ZvbnRfcHJpdmF0ZV8sICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfZm9udF92YWx1ZV8gKSAgICAgICAgICAgXAorICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9Qc0luZm9SZWMgIGNsYXNzXyA9ICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfZm9udF9pbmZvXywgcHNfZ2V0X2ZvbnRfZXh0cmFfLCBoYXNfZ2x5cGhfbmFtZXNfLCAgICAgICAgXAorICAgIGdldF9mb250X3ByaXZhdGVfLCBnZXRfZm9udF92YWx1ZV8gICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfUFNJTkZPUkVDKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9mb250X2luZm9fLCAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNfZ2V0X2ZvbnRfZXh0cmFfLCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfZ2x5cGhfbmFtZXNfLCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9mb250X3ByaXZhdGVfLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2ZvbnRfdmFsdWVfICkgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgICAgbGlicmFyeSwgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZV9Qc0luZm9SZWMqICBjbGF6eiApICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1VOVVNFRCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cHNfZ2V0X2ZvbnRfaW5mbyAgICA9IGdldF9mb250X2luZm9fOyAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5wc19nZXRfZm9udF9leHRyYSAgID0gcHNfZ2V0X2ZvbnRfZXh0cmFfOyAgICAgICAgICAgICBcCisgICAgY2xhenotPnBzX2hhc19nbHlwaF9uYW1lcyAgPSBoYXNfZ2x5cGhfbmFtZXNfOyAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cHNfZ2V0X2ZvbnRfcHJpdmF0ZSA9IGdldF9mb250X3ByaXZhdGVfOyAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5wc19nZXRfZm9udF92YWx1ZSAgID0gZ2V0X2ZvbnRfdmFsdWVfOyAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZQU0lORk9fSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2c2ZudC5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnNmbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDI1MDQyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnNmbnQuaApAQCAtMCwwICsxLDEwMyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3ZzZm50LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBTRk5UIHRhYmxlIGxvYWRpbmcgc2VydmljZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLCAyMDA0LCAyMDA5LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fU1ZTRk5UX0hfXworI2RlZmluZSBfX1NWU0ZOVF9IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorI2luY2x1ZGUgIi4uLy4uL3R0dGFibGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKgorICAgKiAgU0ZOVCB0YWJsZSBsb2FkaW5nIHNlcnZpY2UuCisgICAqLworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfU0ZOVF9UQUJMRSAgInNmbnQtdGFibGUiCisKKworICAvKgorICAgKiBVc2VkIHRvIGltcGxlbWVudCBGVF9Mb2FkX1NmbnRfVGFibGUoKS4KKyAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TRk5UX1RhYmxlTG9hZEZ1bmMpKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICB0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICBsZW5ndGggKTsKKworICAvKgorICAgKiBVc2VkIHRvIGltcGxlbWVudCBGVF9HZXRfU2ZudF9UYWJsZSgpLgorICAgKi8KKyAgdHlwZWRlZiB2b2lkKgorICAoKkZUX1NGTlRfVGFibGVHZXRGdW5jKSggRlRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZm50X1RhZyAgdGFnICk7CisKKworICAvKgorICAgKiBVc2VkIHRvIGltcGxlbWVudCBGVF9TZm50X1RhYmxlX0luZm8oKS4KKyAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TRk5UX1RhYmxlSW5mb0Z1bmMpKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICp0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICpsZW5ndGggKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBTRk5UX1RhYmxlICkKKyAgeworICAgIEZUX1NGTlRfVGFibGVMb2FkRnVuYyAgbG9hZF90YWJsZTsKKyAgICBGVF9TRk5UX1RhYmxlR2V0RnVuYyAgIGdldF90YWJsZTsKKyAgICBGVF9TRk5UX1RhYmxlSW5mb0Z1bmMgIHRhYmxlX2luZm87CisgIH07CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1NGTlRfVEFCTEVSRUMoIGNsYXNzXywgbG9hZF8sIGdldF8sIGluZm9fICkgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfU0ZOVF9UYWJsZVJlYyAgY2xhc3NfID0gICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF8sIGdldF8sIGluZm9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9TRk5UX1RBQkxFUkVDKCBjbGFzc18sIGxvYWRfLCBnZXRfLCBpbmZvXyApIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfU2VydmljZV9TRk5UX1RhYmxlUmVjKiAgY2xhenogKSAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF90YWJsZSA9IGxvYWRfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF90YWJsZSAgPSBnZXRfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT50YWJsZV9pbmZvID0gaW5mb187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVlNGTlRfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRjbWFwLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRjbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1NDJhYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGNtYXAuaApAQCAtMCwwICsxLDEwNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3Z0dGNtYXAuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBUcnVlVHlwZS9zZm50IGNtYXAgZXh0cmEgaW5mb3JtYXRpb24gc2VydmljZS4gICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBNYXNhdGFrZSBZQU1BVE8sIFJlZGhhdCBLLksuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLCAyMDA4LCAyMDA5LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogRGV2ZWxvcG1lbnQgb2YgdGhpcyBzZXJ2aWNlIGlzIHN1cHBvcnQgb2YKKyAgIEluZm9ybWF0aW9uLXRlY2hub2xvZ3kgUHJvbW90aW9uIEFnZW5jeSwgSmFwYW4uICovCisKKyNpZm5kZWYgX19TVlRUQ01BUF9IX18KKyNkZWZpbmUgX19TVlRUQ01BUF9IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorI2luY2x1ZGUgIi4uLy4uL3R0dGFibGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX1RUX0NNQVAgICJ0dC1jbWFwcyIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0NNYXBJbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgVHJ1ZVR5cGUvc2ZudCBzcGVjaWZpYyBjbWFwIGluZm9ybWF0aW9uICAqLworICAvKiAgICB3aGljaCBpcyBub3QgY292ZXJlZCBieSB0aGUgZ2VuZXJpYyBARlRfQ2hhck1hcCBzdHJ1Y3R1cmUuICBUaGlzICAgKi8KKyAgLyogICAgc3RydWN0dXJlIGNhbiBiZSBhY2Nlc3NlZCB3aXRoIHRoZSBARlRfR2V0X1RUX0NNYXBfSW5mbyBmdW5jdGlvbi4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGFuZ3VhZ2UgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGxhbmd1YWdlIElEIHVzZWQgaW4gTWFjIGZvbnRzLiAgRGVmaW5pdGlvbnMgb2YgdmFsdWVzIGFyZSBpbiAqLworICAvKiAgICAgIGZyZWV0eXBlL3R0bmFtZWlkLmguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvcm1hdCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBjbWFwIGZvcm1hdC4gIE9wZW5UeXBlIDEuNSBkZWZpbmVzIHRoZSBmb3JtYXRzIDAgKGJ5dGUgICAgICAgKi8KKyAgLyogICAgICBlbmNvZGluZyB0YWJsZSksIDJ+KGhpZ2gtYnl0ZSBtYXBwaW5nIHRocm91Z2ggdGFibGUpLCA0fihzZWdtZW50ICovCisgIC8qICAgICAgbWFwcGluZyB0byBkZWx0YSB2YWx1ZXMpLCA2fih0cmltbWVkIHRhYmxlIG1hcHBpbmcpLCA4fihtaXhlZCAgICAqLworICAvKiAgICAgIDE2LWJpdCBhbmQgMzItYml0IGNvdmVyYWdlKSwgMTB+KHRyaW1tZWQgYXJyYXkpLCAxMn4oc2VnbWVudGVkICAgKi8KKyAgLyogICAgICBjb3ZlcmFnZSksIGFuZCAxNCAoVW5pY29kZSBWYXJpYXRpb24gU2VxdWVuY2VzKS4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfQ01hcEluZm9fCisgIHsKKyAgICBGVF9VTG9uZyAgbGFuZ3VhZ2U7CisgICAgRlRfTG9uZyAgIGZvcm1hdDsKKworICB9IFRUX0NNYXBJbmZvOworCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0NNYXBfSW5mb19HZXRGdW5jKSggRlRfQ2hhck1hcCAgICBjaGFybWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfQ01hcEluZm8gICpjbWFwX2luZm8gKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBUVENNYXBzICkKKyAgeworICAgIFRUX0NNYXBfSW5mb19HZXRGdW5jICBnZXRfY21hcF9pbmZvOworICB9OworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfVFRDTUFQU1JFQyggY2xhc3NfLCBnZXRfY21hcF9pbmZvXyApICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX1RUQ01hcHNSZWMgIGNsYXNzXyA9ICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfY21hcF9pbmZvXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfVFRDTUFQU1JFQyggY2xhc3NfLCBnZXRfY21hcF9pbmZvXyApICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgICAgIGxpYnJhcnksICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlX1RUQ01hcHNSZWMqICBjbGF6eiApICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1VOVVNFRCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9jbWFwX2luZm8gPSBnZXRfY21hcF9pbmZvXzsgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19TVlRUQ01BUF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGVuZy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0ZW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU2N2VmYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGVuZy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2dHRlbmcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgVHJ1ZVR5cGUgZW5naW5lIHF1ZXJ5IHNlcnZpY2UgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWVFRFTkdfSF9fCisjZGVmaW5lIF9fU1ZUVEVOR19IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorI2luY2x1ZGUgIi4uLy4uL2Z0bW9kYXBpLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKgorICAgKiAgU0ZOVCB0YWJsZSBsb2FkaW5nIHNlcnZpY2UuCisgICAqLworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfVFJVRVRZUEVfRU5HSU5FICAidHJ1ZXR5cGUtZW5naW5lIgorCisgIC8qCisgICAqIFVzZWQgdG8gaW1wbGVtZW50IEZUX0dldF9UcnVlVHlwZV9FbmdpbmVfVHlwZQorICAgKi8KKworICBGVF9ERUZJTkVfU0VSVklDRSggVHJ1ZVR5cGVFbmdpbmUgKQorICB7CisgICAgRlRfVHJ1ZVR5cGVFbmdpbmVUeXBlICBlbmdpbmVfdHlwZTsKKyAgfTsKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVlRURU5HX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Z2x5Zi5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Z2x5Zi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ODI0ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRnbHlmLmgKQEAgLTAsMCArMSw2OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3Z0dGdseWYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBUcnVlVHlwZSBnbHlwaCBzZXJ2aWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LCAyMDA5LCAyMDEyIGJ5IERhdmlkIFR1cm5lci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fU1ZUVEdMWUZfSF9fCisjZGVmaW5lIF9fU1ZUVEdMWUZfSF9fCisKKyNpbmNsdWRlICIuLi9mdHNlcnYuaCIKKyNpbmNsdWRlICIuLi8uLi90dHRhYmxlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9UVF9HTFlGICAidHQtZ2x5ZiIKKworCisgIHR5cGVkZWYgRlRfVUxvbmcKKyAgKCpUVF9HbHlmX0dldExvY2F0aW9uRnVuYykoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZ2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICpwc2l6ZSApOworCisgIEZUX0RFRklORV9TRVJWSUNFKCBUVEdseWYgKQorICB7CisgICAgVFRfR2x5Zl9HZXRMb2NhdGlvbkZ1bmMgIGdldF9sb2NhdGlvbjsKKyAgfTsKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfVFRHTFlGUkVDKCBjbGFzc18sIGdldF9sb2NhdGlvbl8gKSAgXAorICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9UVEdseWZSZWMgIGNsYXNzXyA9ICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfbG9jYXRpb25fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1RUR0xZRlJFQyggY2xhc3NfLCBnZXRfbG9jYXRpb25fICkgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX1NlcnZpY2VfVFRHbHlmUmVjKiAgY2xhenogKSAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X2xvY2F0aW9uID0gZ2V0X2xvY2F0aW9uXzsgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19TVlRUR0xZRl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z3aW5mbnQuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z3aW5mbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTNhOTkxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdndpbmZudC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2d2luZm50LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgV2luZG93cyBGTlQvRk9OVCBzZXJ2aWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWV0lORk5UX0hfXworI2RlZmluZSBfX1NWV0lORk5UX0hfXworCisjaW5jbHVkZSAiLi4vZnRzZXJ2LmgiCisjaW5jbHVkZSAiLi4vLi4vZnR3aW5mbnQuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfV0lORk5UICAid2luZm9udHMiCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1dpbkZudF9HZXRIZWFkZXJGdW5jKSggRlRfRmFjZSAgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9XaW5GTlRfSGVhZGVyUmVjICAqYWhlYWRlciApOworCisKKyAgRlRfREVGSU5FX1NFUlZJQ0UoIFdpbkZudCApCisgIHsKKyAgICBGVF9XaW5GbnRfR2V0SGVhZGVyRnVuYyAgZ2V0X2hlYWRlcjsKKyAgfTsKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVldJTkZOVF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z4Zjg2bm0uaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z4Zjg2bm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzFmNjNkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnhmODZubS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2eGY4Nm5tLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgWEZyZWU4NiBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWWEY4Nk5NX0hfXworI2RlZmluZSBfX1NWWEY4Nk5NX0hfXworCisjaW5jbHVkZSAiLi4vZnRzZXJ2LmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKgorICAgKiAgQSB0cml2aWFsIHNlcnZpY2UgdXNlZCB0byByZXR1cm4gdGhlIG5hbWUgb2YgYSBmYWNlJ3MgZm9udCBkcml2ZXIsCisgICAqICBhY2NvcmRpbmcgdG8gdGhlIFhGcmVlODYgbm9tZW5jbGF0dXJlLiAgTm90ZSB0aGF0IHRoZSBzZXJ2aWNlIGRhdGEKKyAgICogIGlzIGEgc2ltcGxlIGNvbnN0YW50IHN0cmluZyBwb2ludGVyLgorICAgKi8KKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX1hGODZfTkFNRSAgInhmODYtZHJpdmVyLW5hbWUiCisKKyNkZWZpbmUgRlRfWEY4Nl9GT1JNQVRfVFJVRVRZUEUgICJUcnVlVHlwZSIKKyNkZWZpbmUgRlRfWEY4Nl9GT1JNQVRfVFlQRV8xICAgICJUeXBlIDEiCisjZGVmaW5lIEZUX1hGODZfRk9STUFUX0JERiAgICAgICAiQkRGIgorI2RlZmluZSBGVF9YRjg2X0ZPUk1BVF9QQ0YgICAgICAgIlBDRiIKKyNkZWZpbmUgRlRfWEY4Nl9GT1JNQVRfVFlQRV80MiAgICJUeXBlIDQyIgorI2RlZmluZSBGVF9YRjg2X0ZPUk1BVF9DSUQgICAgICAgIkNJRCBUeXBlIDEiCisjZGVmaW5lIEZUX1hGODZfRk9STUFUX0NGRiAgICAgICAiQ0ZGIgorI2RlZmluZSBGVF9YRjg2X0ZPUk1BVF9QRlIgICAgICAgIlBGUiIKKyNkZWZpbmUgRlRfWEY4Nl9GT1JNQVRfV0lORk5UICAgICJXaW5kb3dzIEZOVCIKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVlhGODZOTV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc1OWJhMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oCkBAIC0wLDAgKzEsNzA3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzZm50LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgSGlnaC1sZXZlbCBgc2ZudCcgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNiwgMjAwOSwgMjAxMi0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TRk5UX0hfXworI2RlZmluZSBfX1NGTlRfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnRkcml2ZXIuaCIKKyNpbmNsdWRlICJ0dHR5cGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Jbml0X0ZhY2VfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGaXJzdCBwYXJ0IG9mIHRoZSBTRk5UIGZhY2Ugb2JqZWN0IGluaXRpYWxpemF0aW9uLiAgVGhpcyBmaW5kcyAgICAgKi8KKyAgLyogICAgdGhlIGZhY2UgaW4gYSBTRk5UIGZpbGUgb3IgY29sbGVjdGlvbiwgYW5kIGxvYWQgaXRzIGZvcm1hdCB0YWcgaW4gICovCisgIC8qICAgIGZhY2UtPmZvcm1hdF90YWcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSAgICAgOjogVGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgVHJ1ZVR5cGUgZm9udCwgaWYgd2UgYXJlIG9wZW5pbmcgYSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fcGFyYW1zIDo6IFRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCBwYXJhbWV0ZXJzLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhcmFtcyAgICAgOjogT3B0aW9uYWwgYWRkaXRpb25hbCBwYXJhbWV0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBzdHJlYW0gY3Vyc29yIG11c3QgYmUgYXQgdGhlIGZvbnQgZmlsZSdzIG9yaWdpbi4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiByZWNvZ25pemVzIGZvbnRzIGVtYmVkZGVkIGluIGEgYFRydWVUeXBlICAgICAgICAgICAgICovCisgIC8qICAgIGNvbGxlY3Rpb24nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT25jZSB0aGUgZm9ybWF0IHRhZyBoYXMgYmVlbiB2YWxpZGF0ZWQgYnkgdGhlIGZvbnQgZHJpdmVyLCBpdCAgICAgICovCisgIC8qICAgIHNob3VsZCB0aGVuIGNhbGwgdGhlIFRUX0xvYWRfRmFjZV9GdW5jKCkgY2FsbGJhY2sgdG8gcmVhZCB0aGUgcmVzdCAqLworICAvKiAgICBvZiB0aGUgU0ZOVCB0YWJsZXMgaW4gdGhlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9Jbml0X0ZhY2VfRnVuYykoIEZUX1N0cmVhbSAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRUX0ZhY2UgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZF9GYWNlX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2Vjb25kIHBhcnQgb2YgdGhlIFNGTlQgZmFjZSBvYmplY3QgaW5pdGlhbGl6YXRpb24uICBUaGlzIGxvYWRzICAgICovCisgIC8qICAgIHRoZSBjb21tb24gU0ZOVCB0YWJsZXMgKGhlYWQsIE9TLzIsIG1heHAsIG1ldHJpY3MsIGV0Yy4pIGluIHRoZSAgICAqLworICAvKiAgICBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gICAgIDo6IFRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIFRydWVUeXBlIGZvbnQsIGlmIHdlIGFyZSBvcGVuaW5nIGEgICovCisgIC8qICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX3BhcmFtcyA6OiBUaGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgcGFyYW1ldGVycy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXJhbXMgICAgIDo6IE9wdGlvbmFsIGFkZGl0aW9uYWwgcGFyYW1ldGVycy4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGFmdGVyIFRUX0luaXRfRmFjZV9GdW5jKCkuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9Mb2FkX0ZhY2VfRnVuYykoIEZUX1N0cmVhbSAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRUX0ZhY2UgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfRG9uZV9GYWNlX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBjYWxsYmFjayB1c2VkIHRvIGRlbGV0ZSB0aGUgY29tbW9uIFNGTlQgZGF0YSBmcm9tIGEgZmFjZS4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCBkZXN0cm95IHRoZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpUVF9Eb25lX0ZhY2VfRnVuYykoIFRUX0ZhY2UgIGZhY2UgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0xvYWRfQW55X0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvYWQgYW55IGZvbnQgdGFibGUgaW50byBjbGllbnQgbWVtb3J5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICA6OiBUaGUgZmFjZSBvYmplY3QgdG8gbG9vayBmb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFnICAgIDo6IFRoZSB0YWcgb2YgdGFibGUgdG8gbG9hZC4gIFVzZSB0aGUgdmFsdWUgMCBpZiB5b3Ugd2FudCAgICovCisgIC8qICAgICAgICAgICAgICB0byBhY2Nlc3MgdGhlIHdob2xlIGZvbnQgZmlsZSwgZWxzZSBzZXQgdGhpcyBwYXJhbWV0ZXIgICAqLworICAvKiAgICAgICAgICAgICAgdG8gYSB2YWxpZCBUcnVlVHlwZSB0YWJsZSB0YWcgdGhhdCB5b3UgY2FuIGZvcmdlIHdpdGggICAgKi8KKyAgLyogICAgICAgICAgICAgIHRoZSBNQUtFX1RUX1RBRyBtYWNyby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvZmZzZXQgOjogVGhlIHN0YXJ0aW5nIG9mZnNldCBpbiB0aGUgdGFibGUgKG9yIHRoZSBmaWxlIGlmICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgIHRhZyA9PSAwKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsZW5ndGggOjogVGhlIGFkZHJlc3Mgb2YgdGhlIGRlY2lzaW9uIHZhcmlhYmxlOiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIElmIGxlbmd0aCA9PSBOVUxMOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIExvYWRzIHRoZSB3aG9sZSB0YWJsZS4gIFJldHVybnMgYW4gZXJyb3IgaWYgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBgb2Zmc2V0JyA9PSAwISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICBJZiAqbGVuZ3RoID09IDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBFeGl0cyBpbW1lZGlhdGVseTsgcmV0dXJuaW5nIHRoZSBsZW5ndGggb2YgdGhlIGdpdmVuICovCisgIC8qICAgICAgICAgICAgICAgICAgdGFibGUgb3Igb2YgdGhlIGZvbnQgZmlsZSwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiAqLworICAvKiAgICAgICAgICAgICAgICAgIGB0YWcnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIElmICpsZW5ndGggIT0gMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIExvYWRzIHRoZSBuZXh0IGBsZW5ndGgnIGJ5dGVzIG9mIHRhYmxlIG9yIGZvbnQsICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBzdGFydGluZyBhdCBvZmZzZXQgYG9mZnNldCcgKGluIHRhYmxlIG9yIGZvbnQgdG9vKS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYnVmZmVyIDo6IFRoZSBhZGRyZXNzIG9mIHRhcmdldCBidWZmZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVHJ1ZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfTG9hZF9BbnlfRnVuYykoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICB0YWcsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlICAgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICBsZW5ndGggKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0ZpbmRfU0JpdF9JbWFnZV9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENoZWNrIHdoZXRoZXIgYW4gZW1iZWRkZWQgYml0bWFwIChhbiBgc2JpdCcpIGV4aXN0cyBmb3IgYSBnaXZlbiAgICAqLworICAvKiAgICBnbHlwaCwgYXQgYSBnaXZlbiBzdHJpa2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICAgIDo6IFRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX2luZGV4ICAgOjogVGhlIGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyaWtlX2luZGV4ICA6OiBUaGUgY3VycmVudCBzdHJpa2UgaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYXJhbmdlICAgICAgICA6OiBUaGUgU0JpdCByYW5nZSBjb250YWluaW5nIHRoZSBnbHlwaCBpbmRleC4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhc3RyaWtlICAgICAgIDo6IFRoZSBTQml0IHN0cmlrZSBjb250YWluaW5nIHRoZSBnbHlwaCBpbmRleC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFnbHlwaF9vZmZzZXQgOjogVGhlIG9mZnNldCBvZiB0aGUgZ2x5cGggZGF0YSBpbiBgRUJEVCcgdGFibGUuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICBSZXR1cm5zICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTRk5UX0Vycl9JbnZhbGlkX0FyZ3VtZW50IGlmIG5vIHNiaXQgZXhpc3RzIGZvciB0aGUgcmVxdWVzdGVkICAgICAgKi8KKyAgLyogICAgZ2x5cGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfRmluZF9TQml0X0ltYWdlX0Z1bmMpKCBUVF9GYWNlICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICBzdHJpa2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVF9TQml0X1JhbmdlICAgKmFyYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUX1NCaXRfU3RyaWtlICAqYXN0cmlrZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAqYWdseXBoX29mZnNldCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZF9TQml0X01ldHJpY3NfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR2V0IHRoZSBiaWcgbWV0cmljcyBmb3IgYSBnaXZlbiBlbWJlZGRlZCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgICAgOjogVGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYW5nZSAgICAgICA6OiBUaGUgU0JpdCByYW5nZSBjb250YWluaW5nIHRoZSBnbHlwaC4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiaWdfbWV0cmljcyA6OiBBIGJpZyBTQml0IG1ldHJpY3Mgc3RydWN0dXJlIGZvciB0aGUgZ2x5cGguICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgc3RyZWFtIGN1cnNvciBtdXN0IGJlIHBvc2l0aW9uZWQgYXQgdGhlIGdseXBoJ3Mgb2Zmc2V0IHdpdGhpbiAgKi8KKyAgLyogICAgdGhlIGBFQkRUJyB0YWJsZSBiZWZvcmUgdGhlIGNhbGwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiB0aGUgaW1hZ2UgZm9ybWF0IHVzZXMgdmFyaWFibGUgbWV0cmljcywgdGhlIHN0cmVhbSBjdXJzb3IgaXMgICAgKi8KKyAgLyogICAgcG9zaXRpb25lZCBqdXN0IGFmdGVyIHRoZSBtZXRyaWNzIGhlYWRlciBpbiB0aGUgYEVCRFQnIHRhYmxlIG9uICAgICovCisgIC8qICAgIGZ1bmN0aW9uIGV4aXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0xvYWRfU0JpdF9NZXRyaWNzX0Z1bmMpKCBGVF9TdHJlYW0gICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfU0JpdF9SYW5nZSAgICByYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfU0JpdF9NZXRyaWNzICBtZXRyaWNzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Mb2FkX1NCaXRfSW1hZ2VfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkIGEgZ2l2ZW4gZ2x5cGggc2JpdCBpbWFnZSBmcm9tIHRoZSBmb250IHJlc291cmNlLiAgVGhpcyBhbHNvICAgKi8KKyAgLyogICAgcmV0dXJucyBpdHMgbWV0cmljcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyaWtlX2luZGV4IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIHN0cmlrZSBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfaW5kZXggOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGN1cnJlbnQgZ2x5cGggaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZF9mbGFncyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGN1cnJlbnQgbG9hZCBmbGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFtYXAgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSB0YXJnZXQgcGl4bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFtZXRyaWNzIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEEgYmlnIHNiaXQgbWV0cmljcyBzdHJ1Y3R1cmUgZm9yIHRoZSBnbHlwaCBpbWFnZS4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgUmV0dXJucyBhbiBlcnJvciBpZiBubyAgICAgKi8KKyAgLyogICAgZ2x5cGggc2JpdCBleGlzdHMgZm9yIHRoZSBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGBtYXAuYnVmZmVyJyBmaWVsZCBpcyBhbHdheXMgZnJlZWQgYmVmb3JlIHRoZSBnbHlwaCBpcyBsb2FkZWQuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfTG9hZF9TQml0X0ltYWdlX0Z1bmMpKCBUVF9GYWNlICAgICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICAgICAgc3RyaWtlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgICBsb2FkX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgICAgICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQml0bWFwICAgICAgICAgICAqYW1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUX1NCaXRfTWV0cmljc1JlYyAgKmFtZXRyaWNzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9TZXRfU0JpdF9TdHJpa2VfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTZWxlY3QgYW4gc2JpdCBzdHJpa2UgZm9yIGEgZ2l2ZW4gc2l6ZSByZXF1ZXN0LiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICAgIDo6IFRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlcSAgICAgICAgICAgOjogVGhlIHNpemUgcmVxdWVzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFzdHJpa2VfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBzYml0IHN0cmlrZS4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICBSZXR1cm5zIGFuIGVycm9yIGlmIG5vICAgICAqLworICAvKiAgICBzYml0IHN0cmlrZSBleGlzdHMgZm9yIHRoZSBzZWxlY3RlZCBwcGVtIHZhbHVlcy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9TZXRfU0JpdF9TdHJpa2VfRnVuYykoIFRUX0ZhY2UgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NpemVfUmVxdWVzdCAgcmVxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICAgICAgICBhc3RyaWtlX2luZGV4ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Mb2FkX1N0cmlrZV9NZXRyaWNzX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkIHRoZSBtZXRyaWNzIG9mIGEgZ2l2ZW4gc3RyaWtlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICAgIDo6IFRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmlrZV9pbmRleCAgOjogVGhlIHN0cmlrZSBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1ldHJpY3MgICAgICAgOjogdGhlIG1ldHJpY3Mgb2YgdGhlIHN0cmlrZS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICBSZXR1cm5zIGFuIGVycm9yIGlmIG5vICAgICAqLworICAvKiAgICBzdWNoIHNiaXQgc3RyaWtlIGV4aXN0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9Mb2FkX1N0cmlrZV9NZXRyaWNzX0Z1bmMpKCBUVF9GYWNlICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAgIHN0cmlrZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TaXplX01ldHJpY3MqICBtZXRyaWNzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9HZXRfUFNfTmFtZV9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHZXQgdGhlIFBvc3RTY3JpcHQgZ2x5cGggbmFtZSBvZiBhIGdseXBoLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpZHggIDo6IFRoZSBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBTbmFtZSA6OiBUaGUgYWRkcmVzcyBvZiBhIHN0cmluZyBwb2ludGVyLiAgV2lsbCBiZSBOVUxMIGluIGNhc2UgICAqLworICAvKiAgICAgICAgICAgICAgb2YgZXJyb3IsIG90aGVyd2lzZSBpdCBpcyBhIHBvaW50ZXIgdG8gdGhlIGdseXBoIG5hbWUuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICBZb3UgbXVzdCBub3QgbW9kaWZ5IHRoZSByZXR1cm5lZCBzdHJpbmchICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0dldF9QU19OYW1lX0Z1bmMpKCBUVF9GYWNlICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyaW5nKiogIFBTbmFtZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZF9NZXRyaWNzX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZCBhIG1ldHJpY3MgdGFibGUsIHdoaWNoIGlzIGEgdGFibGUgd2l0aCBhIGhvcml6b250YWwgYW5kIGEgICAgICovCisgIC8qICAgIHZlcnRpY2FsIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgOjogVGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJ0aWNhbCA6OiBBIGJvb2xlYW4gZmxhZy4gIElmIHNldCwgbG9hZCB0aGUgdmVydGljYWwgb25lLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9Mb2FkX01ldHJpY3NfRnVuYykoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICB2ZXJ0aWNhbCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfR2V0X01ldHJpY3NfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZCB0aGUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBoZWFkZXIgaW4gYSBmYWNlIG9iamVjdC4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gICA6OiBUaGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnRpY2FsIDo6IEEgYm9vbGVhbiBmbGFnLiAgSWYgc2V0LCBsb2FkIHZlcnRpY2FsIG1ldHJpY3MuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0dldF9NZXRyaWNzX0Z1bmMpKCBUVF9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICB2ZXJ0aWNhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TaG9ydCogICBhYmVhcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0KiAgYWFkdmFuY2UgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvYWQgYSBnaXZlbiBUcnVlVHlwZSB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtIDo6IFRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGZ1bmN0aW9uIHVzZXMgYGZhY2UtPmdvdG9fdGFibGUnIHRvIHNlZWsgdGhlIHN0cmVhbSB0byB0aGUgICAgICovCisgIC8qICAgIHN0YXJ0IG9mIHRoZSB0YWJsZSwgZXhjZXB0IHdoaWxlIGxvYWRpbmcgdGhlIGZvbnQgZGlyZWN0b3J5LiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0xvYWRfVGFibGVfRnVuYykoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfRnJlZV9UYWJsZV9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZSBhIGdpdmVuIFRydWVUeXBlIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpUVF9GcmVlX1RhYmxlX0Z1bmMpKCBUVF9GYWNlICBmYWNlICk7CisKKworICAvKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgIFRUX0ZhY2VfR2V0S2VybmluZ0Z1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgICBSZXR1cm4gdGhlIGhvcml6b250YWwga2VybmluZyB2YWx1ZSBiZXR3ZWVuIHR3byBnbHlwaHMuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICAgZmFjZSAgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4KKyAgICogICAgbGVmdF9nbHlwaCAgOjogVGhlIGxlZnQgZ2x5cGggaW5kZXguCisgICAqICAgIHJpZ2h0X2dseXBoIDo6IFRoZSByaWdodCBnbHlwaCBpbmRleC4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICAgVGhlIGtlcm5pbmcgdmFsdWUgaW4gZm9udCB1bml0cy4KKyAgICovCisgIHR5cGVkZWYgRlRfSW50CisgICgqVFRfRmFjZV9HZXRLZXJuaW5nRnVuYykoIFRUX0ZhY2UgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgIGxlZnRfZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgIHJpZ2h0X2dseXBoICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTRk5UX0ludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHN0cnVjdHVyZSBob2xkcyBwb2ludGVycyB0byB0aGUgZnVuY3Rpb25zIHVzZWQgdG8gbG9hZCBhbmQgICAgKi8KKyAgLyogICAgZnJlZSB0aGUgYmFzaWMgdGFibGVzIHRoYXQgYXJlIHJlcXVpcmVkIGluIGEgYHNmbnQnIGZvbnQgZmlsZS4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ2hlY2sgdGhlIHZhcmlvdXMgeHh4X0Z1bmMoKSBkZXNjcmlwdGlvbnMgZm9yIGRldGFpbHMuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgU0ZOVF9JbnRlcmZhY2VfCisgIHsKKyAgICBUVF9Mb2FkZXJfR290b1RhYmxlRnVuYyAgICAgIGdvdG9fdGFibGU7CisKKyAgICBUVF9Jbml0X0ZhY2VfRnVuYyAgICAgICAgICAgIGluaXRfZmFjZTsKKyAgICBUVF9Mb2FkX0ZhY2VfRnVuYyAgICAgICAgICAgIGxvYWRfZmFjZTsKKyAgICBUVF9Eb25lX0ZhY2VfRnVuYyAgICAgICAgICAgIGRvbmVfZmFjZTsKKyAgICBGVF9Nb2R1bGVfUmVxdWVzdGVyICAgICAgICAgIGdldF9pbnRlcmZhY2U7CisKKyAgICBUVF9Mb2FkX0FueV9GdW5jICAgICAgICAgICAgIGxvYWRfYW55OworCisgICAgLyogdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYnkgYGxvYWRfZmFjZScgYnV0IHRoZXkgY2FuIGFsc28gICovCisgICAgLyogYmUgY2FsbGVkIGZyb20gZXh0ZXJuYWwgbW9kdWxlcywgaWYgdGhlcmUgaXMgYSBuZWVkIHRvIGRvIHNvICovCisgICAgVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgICAgICBsb2FkX2hlYWQ7CisgICAgVFRfTG9hZF9NZXRyaWNzX0Z1bmMgICAgICAgICBsb2FkX2hoZWE7CisgICAgVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgICAgICBsb2FkX2NtYXA7CisgICAgVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgICAgICBsb2FkX21heHA7CisgICAgVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgICAgICBsb2FkX29zMjsKKyAgICBUVF9Mb2FkX1RhYmxlX0Z1bmMgICAgICAgICAgIGxvYWRfcG9zdDsKKworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgbG9hZF9uYW1lOworICAgIFRUX0ZyZWVfVGFibGVfRnVuYyAgICAgICAgICAgZnJlZV9uYW1lOworCisgICAgLyogdGhpcyBmaWVsZCB3YXMgY2FsbGVkIGBsb2FkX2tlcm5pbmcnIHVwIHRvIHZlcnNpb24gMi4xLjEwICovCisgICAgVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgICAgICBsb2FkX2tlcm47CisKKyAgICBUVF9Mb2FkX1RhYmxlX0Z1bmMgICAgICAgICAgIGxvYWRfZ2FzcDsKKyAgICBUVF9Mb2FkX1RhYmxlX0Z1bmMgICAgICAgICAgIGxvYWRfcGNsdDsKKworICAgIC8qIHNlZSBgdHRsb2FkLmgnOyB0aGlzIGZpZWxkIHdhcyBjYWxsZWQgYGxvYWRfYml0bWFwX2hlYWRlcicgdXAgdG8gKi8KKyAgICAvKiB2ZXJzaW9uIDIuMS4xMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgICAgICBsb2FkX2JoZWQ7CisKKyAgICBUVF9Mb2FkX1NCaXRfSW1hZ2VfRnVuYyAgICAgIGxvYWRfc2JpdF9pbWFnZTsKKworICAgIC8qIHNlZSBgdHRwb3N0LmgnICovCisgICAgVFRfR2V0X1BTX05hbWVfRnVuYyAgICAgICAgICBnZXRfcHNuYW1lOworICAgIFRUX0ZyZWVfVGFibGVfRnVuYyAgICAgICAgICAgZnJlZV9wc25hbWVzOworCisgICAgLyogc3RhcnRpbmcgaGVyZSwgdGhlIHN0cnVjdHVyZSBkaWZmZXJzIGZyb20gdmVyc2lvbiAyLjEuNyAqLworCisgICAgLyogdGhpcyBmaWVsZCB3YXMgaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDIuMS44LCBuYW1lZCBgZ2V0X3BzbmFtZScgKi8KKyAgICBUVF9GYWNlX0dldEtlcm5pbmdGdW5jICAgICAgIGdldF9rZXJuaW5nOworCisgICAgLyogbmV3IGVsZW1lbnRzIGludHJvZHVjZWQgYWZ0ZXIgdmVyc2lvbiAyLjEuMTAgKi8KKworICAgIC8qIGxvYWQgdGhlIGZvbnQgZGlyZWN0b3J5LCBpLmUuLCB0aGUgb2Zmc2V0IHRhYmxlIGFuZCAqLworICAgIC8qIHRoZSB0YWJsZSBkaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgbG9hZF9mb250X2RpcjsKKyAgICBUVF9Mb2FkX01ldHJpY3NfRnVuYyAgICAgICAgIGxvYWRfaG10eDsKKworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgbG9hZF9lYmxjOworICAgIFRUX0ZyZWVfVGFibGVfRnVuYyAgICAgICAgICAgZnJlZV9lYmxjOworCisgICAgVFRfU2V0X1NCaXRfU3RyaWtlX0Z1bmMgICAgICBzZXRfc2JpdF9zdHJpa2U7CisgICAgVFRfTG9hZF9TdHJpa2VfTWV0cmljc19GdW5jICBsb2FkX3N0cmlrZV9tZXRyaWNzOworCisgICAgVFRfR2V0X01ldHJpY3NfRnVuYyAgICAgICAgICBnZXRfbWV0cmljczsKKworICB9IFNGTlRfSW50ZXJmYWNlOworCisKKyAgLyogdHJhbnNpdGlvbmFsICovCisgIHR5cGVkZWYgU0ZOVF9JbnRlcmZhY2UqICAgU0ZOVF9TZXJ2aWNlOworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1NGTlRfSU5URVJGQUNFKCAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ290b190YWJsZV8sICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0X2ZhY2VfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfZmFjZV8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV9mYWNlXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfYW55XywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9oZWFkXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2hoZWFfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfY21hcF8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9tYXhwXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX29zMl8sICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfcG9zdF8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9uYW1lXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmcmVlX25hbWVfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfa2Vybl8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9nYXNwXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX3BjbHRfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfYmhlZF8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9zYml0X2ltYWdlXywgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfcHNuYW1lXywgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZyZWVfcHNuYW1lc18sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2tlcm5pbmdfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2ZvbnRfZGlyXywgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfaG10eF8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9lYmxjXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmcmVlX2VibGNfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNldF9zYml0X3N0cmlrZV8sICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9zdHJpa2VfbWV0cmljc18sICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfbWV0cmljc18gKSAgICAgICAgICAgICAgICAgXAorICBzdGF0aWMgY29uc3QgU0ZOVF9JbnRlcmZhY2UgIGNsYXNzXyA9ICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnb3RvX3RhYmxlXywgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGluaXRfZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkb25lX2ZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9pbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9hbnlfLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX2hlYWRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfaGhlYV8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9jbWFwXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX21heHBfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfb3MyXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9wb3N0XywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX25hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZyZWVfbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9rZXJuXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX2dhc3BfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfcGNsdF8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9iaGVkXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX3NiaXRfaW1hZ2VfLCAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9wc25hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZnJlZV9wc25hbWVzXywgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfa2VybmluZ18sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfZm9udF9kaXJfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9obXR4XywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX2VibGNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZyZWVfZWJsY18sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2V0X3NiaXRfc3RyaWtlXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX3N0cmlrZV9tZXRyaWNzXywgICAgICAgICAgICAgICAgXAorICAgIGdldF9tZXRyaWNzXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfSU5URVJOQUwoIGEsIGFfICkgIFwKKyAgICAgICAgICBjbGF6ei0+YSA9IGFfOworCisjZGVmaW5lIEZUX0RFRklORV9TRk5UX0lOVEVSRkFDRSggICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdvdG9fdGFibGVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2ZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2FueV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfaGVhZF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9oaGVhXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2NtYXBfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfbWF4cF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9vczJfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX3Bvc3RfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZnJlZV9uYW1lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2tlcm5fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfZ2FzcF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9wY2x0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2JoZWRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfc2JpdF9pbWFnZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X3BzbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmcmVlX3BzbmFtZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9rZXJuaW5nXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9mb250X2Rpcl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2htdHhfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfZWJsY18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZnJlZV9lYmxjXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzZXRfc2JpdF9zdHJpa2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfc3RyaWtlX21ldHJpY3NfLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X21ldHJpY3NfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgbGlicmFyeSwgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0ZOVF9JbnRlcmZhY2UqICBjbGF6eiApICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1VOVVNFRCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z290b190YWJsZSAgICAgICAgICA9IGdvdG9fdGFibGVfOyAgICAgICAgICAgXAorICAgIGNsYXp6LT5pbml0X2ZhY2UgICAgICAgICAgID0gaW5pdF9mYWNlXzsgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfZmFjZSAgICAgICAgICAgPSBsb2FkX2ZhY2VfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZG9uZV9mYWNlICAgICAgICAgICA9IGRvbmVfZmFjZV87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfaW50ZXJmYWNlICAgICAgID0gZ2V0X2ludGVyZmFjZV87ICAgICAgICBcCisgICAgY2xhenotPmxvYWRfYW55ICAgICAgICAgICAgPSBsb2FkX2FueV87ICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9oZWFkICAgICAgICAgICA9IGxvYWRfaGVhZF87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX2hoZWEgICAgICAgICAgID0gbG9hZF9oaGVhXzsgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfY21hcCAgICAgICAgICAgPSBsb2FkX2NtYXBfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9tYXhwICAgICAgICAgICA9IGxvYWRfbWF4cF87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX29zMiAgICAgICAgICAgID0gbG9hZF9vczJfOyAgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfcG9zdCAgICAgICAgICAgPSBsb2FkX3Bvc3RfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9uYW1lICAgICAgICAgICA9IGxvYWRfbmFtZV87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5mcmVlX25hbWUgICAgICAgICAgID0gZnJlZV9uYW1lXzsgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfa2VybiAgICAgICAgICAgPSBsb2FkX2tlcm5fOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9nYXNwICAgICAgICAgICA9IGxvYWRfZ2FzcF87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX3BjbHQgICAgICAgICAgID0gbG9hZF9wY2x0XzsgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfYmhlZCAgICAgICAgICAgPSBsb2FkX2JoZWRfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9zYml0X2ltYWdlICAgICA9IGxvYWRfc2JpdF9pbWFnZV87ICAgICAgXAorICAgIGNsYXp6LT5nZXRfcHNuYW1lICAgICAgICAgID0gZ2V0X3BzbmFtZV87ICAgICAgICAgICBcCisgICAgY2xhenotPmZyZWVfcHNuYW1lcyAgICAgICAgPSBmcmVlX3BzbmFtZXNfOyAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X2tlcm5pbmcgICAgICAgICA9IGdldF9rZXJuaW5nXzsgICAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX2ZvbnRfZGlyICAgICAgID0gbG9hZF9mb250X2Rpcl87ICAgICAgICBcCisgICAgY2xhenotPmxvYWRfaG10eCAgICAgICAgICAgPSBsb2FkX2htdHhfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9lYmxjICAgICAgICAgICA9IGxvYWRfZWJsY187ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5mcmVlX2VibGMgICAgICAgICAgID0gZnJlZV9lYmxjXzsgICAgICAgICAgICBcCisgICAgY2xhenotPnNldF9zYml0X3N0cmlrZSAgICAgPSBzZXRfc2JpdF9zdHJpa2VfOyAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9zdHJpa2VfbWV0cmljcyA9IGxvYWRfc3RyaWtlX21ldHJpY3NfOyAgXAorICAgIGNsYXp6LT5nZXRfbWV0cmljcyAgICAgICAgID0gZ2V0X21ldHJpY3NfOyAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fU0ZOVF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZkZWVjOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oCkBAIC0wLDAgKzEsMjU1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MXR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQmFzaWMgVHlwZTEvVHlwZTIgdHlwZSBkZWZpbml0aW9ucyBhbmQgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uICAgICAgKi8KKy8qICAgIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDQsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVDFUWVBFU19IX18KKyNkZWZpbmUgX19UMVRZUEVTX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uL3QxdGFibGVzLmgiCisjaW5jbHVkZSAicHNoaW50cy5oIgorI2luY2x1ZGUgImZ0c2Vydi5oIgorI2luY2x1ZGUgInNlcnZpY2VzL3N2cHNjbWFwLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgIFJFUVVJUkVEIFRZUEUxL1RZUEUyIFRBQkxFUyBERUZJTklUSU9OUyAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUMV9FbmNvZGluZ1JlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSBtb2RlbGluZyBhIGN1c3RvbSBlbmNvZGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fY2hhcnMgIDo6IFRoZSBudW1iZXIgb2YgY2hhcmFjdGVyIGNvZGVzIGluIHRoZSBlbmNvZGluZy4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBVc3VhbGx5IDI1Ni4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb2RlX2ZpcnN0IDo6IFRoZSBsb3dlc3QgdmFsaWQgY2hhcmFjdGVyIGNvZGUgaW4gdGhlIGVuY29kaW5nLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvZGVfbGFzdCAgOjogVGhlIGhpZ2hlc3QgdmFsaWQgY2hhcmFjdGVyIGNvZGUgaW4gdGhlIGVuY29kaW5nICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICsgMS4gV2hlbiBlcXVhbCB0byBjb2RlX2ZpcnN0IHRoZXJlIGFyZSBubyB2YWxpZCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgY29kZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFyX2luZGV4IDo6IEFuIGFycmF5IG9mIGNvcnJlc3BvbmRpbmcgZ2x5cGggaW5kaWNlcy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNoYXJfbmFtZSAgOjogQW4gYXJyYXkgb2YgY29ycmVzcG9uZGluZyBnbHlwaCBuYW1lcy4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0VuY29kaW5nUmVjUmVjXworICB7CisgICAgRlRfSW50ICAgICAgIG51bV9jaGFyczsKKyAgICBGVF9JbnQgICAgICAgY29kZV9maXJzdDsKKyAgICBGVF9JbnQgICAgICAgY29kZV9sYXN0OworCisgICAgRlRfVVNob3J0KiAgIGNoYXJfaW5kZXg7CisgICAgRlRfU3RyaW5nKiogIGNoYXJfbmFtZTsKKworICB9IFQxX0VuY29kaW5nUmVjLCAqVDFfRW5jb2Rpbmc7CisKKworICAvKiB1c2VkIHRvIGhvbGQgZXh0cmEgZGF0YSBvZiBQU19Gb250SW5mb1JlYyB0aGF0CisgICAqIGNhbm5vdCBiZSBzdG9yZWQgaW4gdGhlIHB1YmxpY2x5IGRlZmluZWQgc3RydWN0dXJlLgorICAgKgorICAgKiBOb3RlIHRoZXNlIGNhbid0IGJlIGJsZW5kZWQgd2l0aCBtdWx0aXBsZS1tYXN0ZXJzLgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTX0ZvbnRFeHRyYVJlY18KKyAgeworICAgIEZUX1VTaG9ydCAgZnNfdHlwZTsKKworICB9IFBTX0ZvbnRFeHRyYVJlYzsKKworCisgIHR5cGVkZWYgc3RydWN0ICBUMV9Gb250UmVjXworICB7CisgICAgUFNfRm9udEluZm9SZWMgICBmb250X2luZm87ICAgICAgICAgLyogZm9udCBpbmZvIGRpY3Rpb25hcnkgICAqLworICAgIFBTX0ZvbnRFeHRyYVJlYyAgZm9udF9leHRyYTsgICAgICAgIC8qIGZvbnQgaW5mbyBleHRyYSBmaWVsZHMgKi8KKyAgICBQU19Qcml2YXRlUmVjICAgIHByaXZhdGVfZGljdDsgICAgICAvKiBwcml2YXRlIGRpY3Rpb25hcnkgICAgICovCisgICAgRlRfU3RyaW5nKiAgICAgICBmb250X25hbWU7ICAgICAgICAgLyogdG9wLWxldmVsIGRpY3Rpb25hcnkgICAqLworCisgICAgVDFfRW5jb2RpbmdUeXBlICBlbmNvZGluZ190eXBlOworICAgIFQxX0VuY29kaW5nUmVjICAgZW5jb2Rpbmc7CisKKyAgICBGVF9CeXRlKiAgICAgICAgIHN1YnJzX2Jsb2NrOworICAgIEZUX0J5dGUqICAgICAgICAgY2hhcnN0cmluZ3NfYmxvY2s7CisgICAgRlRfQnl0ZSogICAgICAgICBnbHlwaF9uYW1lc19ibG9jazsKKworICAgIEZUX0ludCAgICAgICAgICAgbnVtX3N1YnJzOworICAgIEZUX0J5dGUqKiAgICAgICAgc3VicnM7CisgICAgRlRfUHRyRGlzdCogICAgICBzdWJyc19sZW47CisKKyAgICBGVF9JbnQgICAgICAgICAgIG51bV9nbHlwaHM7CisgICAgRlRfU3RyaW5nKiogICAgICBnbHlwaF9uYW1lczsgICAgICAgLyogYXJyYXkgb2YgZ2x5cGggbmFtZXMgICAgICAgKi8KKyAgICBGVF9CeXRlKiogICAgICAgIGNoYXJzdHJpbmdzOyAgICAgICAvKiBhcnJheSBvZiBnbHlwaCBjaGFyc3RyaW5ncyAqLworICAgIEZUX1B0ckRpc3QqICAgICAgY2hhcnN0cmluZ3NfbGVuOworCisgICAgRlRfQnl0ZSAgICAgICAgICBwYWludF90eXBlOworICAgIEZUX0J5dGUgICAgICAgICAgZm9udF90eXBlOworICAgIEZUX01hdHJpeCAgICAgICAgZm9udF9tYXRyaXg7CisgICAgRlRfVmVjdG9yICAgICAgICBmb250X29mZnNldDsKKyAgICBGVF9CQm94ICAgICAgICAgIGZvbnRfYmJveDsKKyAgICBGVF9Mb25nICAgICAgICAgIGZvbnRfaWQ7CisKKyAgICBGVF9GaXhlZCAgICAgICAgIHN0cm9rZV93aWR0aDsKKworICB9IFQxX0ZvbnRSZWMsICpUMV9Gb250OworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIENJRF9TdWJyc1JlY18KKyAgeworICAgIEZUX1VJbnQgICAgbnVtX3N1YnJzOworICAgIEZUX0J5dGUqKiAgY29kZTsKKworICB9IENJRF9TdWJyc1JlYywgKkNJRF9TdWJyczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICBBRk0gRk9OVCBJTkZPUk1BVElPTiBTVFJVQ1RVUkVTICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICB0eXBlZGVmIHN0cnVjdCAgQUZNX1RyYWNrS2VyblJlY18KKyAgeworICAgIEZUX0ludCAgICBkZWdyZWU7CisgICAgRlRfRml4ZWQgIG1pbl9wdHNpemU7CisgICAgRlRfRml4ZWQgIG1pbl9rZXJuOworICAgIEZUX0ZpeGVkICBtYXhfcHRzaXplOworICAgIEZUX0ZpeGVkICBtYXhfa2VybjsKKworICB9IEFGTV9UcmFja0tlcm5SZWMsICpBRk1fVHJhY2tLZXJuOworCisgIHR5cGVkZWYgc3RydWN0ICBBRk1fS2VyblBhaXJSZWNfCisgIHsKKyAgICBGVF9JbnQgIGluZGV4MTsKKyAgICBGVF9JbnQgIGluZGV4MjsKKyAgICBGVF9JbnQgIHg7CisgICAgRlRfSW50ICB5OworCisgIH0gQUZNX0tlcm5QYWlyUmVjLCAqQUZNX0tlcm5QYWlyOworCisgIHR5cGVkZWYgc3RydWN0ICBBRk1fRm9udEluZm9SZWNfCisgIHsKKyAgICBGVF9Cb29sICAgICAgICBJc0NJREZvbnQ7CisgICAgRlRfQkJveCAgICAgICAgRm9udEJCb3g7CisgICAgRlRfRml4ZWQgICAgICAgQXNjZW5kZXI7CisgICAgRlRfRml4ZWQgICAgICAgRGVzY2VuZGVyOworICAgIEFGTV9UcmFja0tlcm4gIFRyYWNrS2VybnM7ICAgLyogZnJlZSBpZiBub24tTlVMTCAqLworICAgIEZUX0ludCAgICAgICAgIE51bVRyYWNrS2VybjsKKyAgICBBRk1fS2VyblBhaXIgICBLZXJuUGFpcnM7ICAgIC8qIGZyZWUgaWYgbm9uLU5VTEwgKi8KKyAgICBGVF9JbnQgICAgICAgICBOdW1LZXJuUGFpcjsKKworICB9IEFGTV9Gb250SW5mb1JlYywgKkFGTV9Gb250SW5mbzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICBPUklHSU5BTCBUMV9GQUNFIENMQVNTIERFRklOSVRJT04gICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIHR5cGVkZWYgc3RydWN0IFQxX0ZhY2VSZWNfKiAgIFQxX0ZhY2U7CisgIHR5cGVkZWYgc3RydWN0IENJRF9GYWNlUmVjXyogIENJRF9GYWNlOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0ZhY2VSZWNfCisgIHsKKyAgICBGVF9GYWNlUmVjICAgICAgcm9vdDsKKyAgICBUMV9Gb250UmVjICAgICAgdHlwZTE7CisgICAgY29uc3Qgdm9pZCogICAgIHBzbmFtZXM7CisgICAgY29uc3Qgdm9pZCogICAgIHBzYXV4OworICAgIGNvbnN0IHZvaWQqICAgICBhZm1fZGF0YTsKKyAgICBGVF9DaGFyTWFwUmVjICAgY2hhcm1hcHJlY3NbMl07CisgICAgRlRfQ2hhck1hcCAgICAgIGNoYXJtYXBzWzJdOworCisgICAgLyogc3VwcG9ydCBmb3IgTXVsdGlwbGUgTWFzdGVycyBmb250cyAqLworICAgIFBTX0JsZW5kICAgICAgICBibGVuZDsKKworICAgIC8qIHVuZG9jdW1lbnRlZCwgb3B0aW9uYWw6IGluZGljZXMgb2Ygc3Vicm91dGluZXMgdGhhdCBleHByZXNzICAgICAgKi8KKyAgICAvKiB0aGUgTm9ybWFsaXplRGVzaWduVmVjdG9yIGFuZCB0aGUgQ29udmVydERlc2lnblZlY3RvciBwcm9jZWR1cmUsICovCisgICAgLyogcmVzcGVjdGl2ZWx5LCBhcyBUeXBlIDIgY2hhcnN0cmluZ3M7IC0xIGlmIGtleXdvcmRzIG5vdCBwcmVzZW50ICAqLworICAgIEZUX0ludCAgICAgICAgICAgbmR2X2lkeDsKKyAgICBGVF9JbnQgICAgICAgICAgIGNkdl9pZHg7CisKKyAgICAvKiB1bmRvY3VtZW50ZWQsIG9wdGlvbmFsOiBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBsZW5fYnVpbGRjaGFyICovCisgICAgLyogZm9yIFR5cGUgMiBmb250czsgbWFuaXB1bGF0ZWQgYnkgb3RoZXJzdWJycyAxOSwgMjQsIGFuZCAyNSAgICAqLworICAgIEZUX1VJbnQgICAgICAgICAgbGVuX2J1aWxkY2hhcjsKKyAgICBGVF9Mb25nKiAgICAgICAgIGJ1aWxkY2hhcjsKKworICAgIC8qIHNpbmNlIHZlcnNpb24gMi4xIC0gaW50ZXJmYWNlIHRvIFBvc3RTY3JpcHQgaGludGVyICovCisgICAgY29uc3Qgdm9pZCogICAgIHBzaGludGVyOworCisgIH0gVDFfRmFjZVJlYzsKKworCisgIHR5cGVkZWYgc3RydWN0ICBDSURfRmFjZVJlY18KKyAgeworICAgIEZUX0ZhY2VSZWMgICAgICAgcm9vdDsKKyAgICB2b2lkKiAgICAgICAgICAgIHBzbmFtZXM7CisgICAgdm9pZCogICAgICAgICAgICBwc2F1eDsKKyAgICBDSURfRmFjZUluZm9SZWMgIGNpZDsKKyAgICBQU19Gb250RXh0cmFSZWMgIGZvbnRfZXh0cmE7CisjaWYgMAorICAgIHZvaWQqICAgICAgICAgICAgYWZtX2RhdGE7CisjZW5kaWYKKyAgICBDSURfU3VicnMgICAgICAgIHN1YnJzOworCisgICAgLyogc2luY2UgdmVyc2lvbiAyLjEgLSBpbnRlcmZhY2UgdG8gUG9zdFNjcmlwdCBoaW50ZXIgKi8KKyAgICB2b2lkKiAgICAgICAgICAgIHBzaGludGVyOworCisgICAgLyogc2luY2UgdmVyc2lvbiAyLjEuOCwgYnV0IHdhcyBvcmlnaW5hbGx5IHBvc2l0aW9uZWQgYWZ0ZXIgYGFmbV9kYXRhJyAqLworICAgIEZUX0J5dGUqICAgICAgICAgYmluYXJ5X2RhdGE7IC8qIHVzZWQgaWYgaGV4IGRhdGEgaGFzIGJlZW4gY29udmVydGVkICovCisgICAgRlRfU3RyZWFtICAgICAgICBjaWRfc3RyZWFtOworCisgIH0gQ0lEX0ZhY2VSZWM7CisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UMVRZUEVTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmMxZDYyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgKQEAgLTAsMCArMSwxNDQwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dHR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQmFzaWMgU0ZOVC9UcnVlVHlwZSB0eXBlIGRlZmluaXRpb25zIGFuZCBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24gICAgKi8KKy8qICAgIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDIsIDIwMDQtMjAwOCwgMjAxMi0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVFRUWVBFU19IX18KKyNkZWZpbmUgX19UVFRZUEVTX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uL3R0dGFibGVzLmgiCisjaW5jbHVkZSAiZnRvYmpzLmgiCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisjaW5jbHVkZSAiLi4vZnRtbS5oIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgUkVRVUlSRUQgVFJVRVRZUEUvT1BFTlRZUEUgVEFCTEVTIERFRklOSVRJT05TICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVENfSGVhZGVyUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUcnVlVHlwZSBjb2xsZWN0aW9uIGhlYWRlci4gIFRoaXMgdGFibGUgY29udGFpbnMgdGhlIG9mZnNldHMgb2YgICAgKi8KKyAgLyogICAgdGhlIGZvbnQgaGVhZGVycyBvZiBlYWNoIGRpc3RpbmN0IFRydWVUeXBlIGZhY2UgaW4gdGhlIGZpbGUuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFnICAgICA6OiBNdXN0IGJlIGB0dGMgJyB0byBpbmRpY2F0ZSBhIFRydWVUeXBlIGNvbGxlY3Rpb24uICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJzaW9uIDo6IFRoZSB2ZXJzaW9uIG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvdW50ICAgOjogVGhlIG51bWJlciBvZiBmYWNlcyBpbiB0aGUgY29sbGVjdGlvbi4gIFRoZSAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb24gc2F5cyB0aGlzIHNob3VsZCBiZSBhbiB1bnNpZ25lZCBsb25nLCBidXQgKi8KKyAgLyogICAgICAgICAgICAgICB3ZSB1c2UgYSBzaWduZWQgbG9uZyBzaW5jZSB3ZSBuZWVkIHRoZSB2YWx1ZSAtMSBmb3IgICAgICovCisgIC8qICAgICAgICAgICAgICAgc3BlY2lmaWMgcHVycG9zZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb2Zmc2V0cyA6OiBUaGUgb2Zmc2V0cyBvZiB0aGUgZm9udCBoZWFkZXJzLCBvbmUgcGVyIGZhY2UuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRDX0hlYWRlclJlY18KKyAgeworICAgIEZUX1VMb25nICAgdGFnOworICAgIEZUX0ZpeGVkICAgdmVyc2lvbjsKKyAgICBGVF9Mb25nICAgIGNvdW50OworICAgIEZUX1VMb25nKiAgb2Zmc2V0czsKKworICB9IFRUQ19IZWFkZXJSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTRk5UX0hlYWRlclJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTRk5UIGZpbGUgZm9ybWF0IGhlYWRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb3JtYXRfdGFnICAgICA6OiBUaGUgZm9udCBmb3JtYXQgdGFnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV90YWJsZXMgICAgIDo6IFRoZSBudW1iZXIgb2YgdGFibGVzIGluIGZpbGUuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2VhcmNoX3JhbmdlICAgOjogTXVzdCBiZSBgMTYgKiAobWF4IHBvd2VyIG9mIDIgPD0gbnVtX3RhYmxlcyknLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBlbnRyeV9zZWxlY3RvciA6OiBNdXN0IGJlIGxvZzIgb2YgYHNlYXJjaF9yYW5nZSAvIDE2Jy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhbmdlX3NoaWZ0ICAgIDo6IE11c3QgYmUgYG51bV90YWJsZXMgKiAxNiAtIHNlYXJjaF9yYW5nZScuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFNGTlRfSGVhZGVyUmVjXworICB7CisgICAgRlRfVUxvbmcgICBmb3JtYXRfdGFnOworICAgIEZUX1VTaG9ydCAgbnVtX3RhYmxlczsKKyAgICBGVF9VU2hvcnQgIHNlYXJjaF9yYW5nZTsKKyAgICBGVF9VU2hvcnQgIGVudHJ5X3NlbGVjdG9yOworICAgIEZUX1VTaG9ydCAgcmFuZ2Vfc2hpZnQ7CisKKyAgICBGVF9VTG9uZyAgIG9mZnNldDsgIC8qIG5vdCBpbiBmaWxlICovCisKKyAgfSBTRk5UX0hlYWRlclJlYywgKlNGTlRfSGVhZGVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfVGFibGVSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGEgZ2l2ZW4gdGFibGUgb2YgYSBUcnVlVHlwZSBmb250LiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGFnICAgICAgOjogQSBmb3VyLWJ5dGVzIHRhZyBkZXNjcmliaW5nIHRoZSB0YWJsZS4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDaGVja1N1bSA6OiBUaGUgdGFibGUgY2hlY2tzdW0uICBUaGlzIHZhbHVlIGNhbiBiZSBpZ25vcmVkLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE9mZnNldCAgIDo6IFRoZSBvZmZzZXQgb2YgdGhlIHRhYmxlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBUcnVlVHlwZSAqLworICAvKiAgICAgICAgICAgICAgICBmb250IGluIGl0cyByZXNvdXJjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExlbmd0aCAgIDo6IFRoZSB0YWJsZSBsZW5ndGggKGluIGJ5dGVzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX1RhYmxlUmVjXworICB7CisgICAgRlRfVUxvbmcgIFRhZzsgICAgICAgIC8qICAgICAgICB0YWJsZSB0eXBlICovCisgICAgRlRfVUxvbmcgIENoZWNrU3VtOyAgIC8qICAgIHRhYmxlIGNoZWNrc3VtICovCisgICAgRlRfVUxvbmcgIE9mZnNldDsgICAgIC8qIHRhYmxlIGZpbGUgb2Zmc2V0ICovCisgICAgRlRfVUxvbmcgIExlbmd0aDsgICAgIC8qICAgICAgdGFibGUgbGVuZ3RoICovCisKKyAgfSBUVF9UYWJsZVJlYywgKlRUX1RhYmxlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9uZ01ldHJpY3NSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgbW9kZWxpbmcgdGhlIGxvbmcgbWV0cmljcyBvZiB0aGUgYGhtdHgnIGFuZCBgdm10eCcgICAgICovCisgIC8qICAgIFRydWVUeXBlIHRhYmxlcy4gIFRoZSB2YWx1ZXMgYXJlIGV4cHJlc3NlZCBpbiBmb250IHVuaXRzLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFkdmFuY2UgOjogVGhlIGFkdmFuY2Ugd2lkdGggb3IgaGVpZ2h0IGZvciB0aGUgZ2x5cGguICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmVhcmluZyA6OiBUaGUgbGVmdC1zaWRlIG9yIHRvcC1zaWRlIGJlYXJpbmcgZm9yIHRoZSBnbHlwaC4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfTG9uZ01ldHJpY3NSZWNfCisgIHsKKyAgICBGVF9VU2hvcnQgIGFkdmFuY2U7CisgICAgRlRfU2hvcnQgICBiZWFyaW5nOworCisgIH0gVFRfTG9uZ01ldHJpY3NSZWMsICpUVF9Mb25nTWV0cmljczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1Nob3J0TWV0cmljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2ltcGxlIHR5cGUgdG8gbW9kZWwgdGhlIHNob3J0IG1ldHJpY3Mgb2YgdGhlIGBobXR4JyBhbmQgYHZtdHgnICAqLworICAvKiAgICB0YWJsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfU2hvcnQgIFRUX1Nob3J0TWV0cmljczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX05hbWVFbnRyeVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIG1vZGVsaW5nIFRydWVUeXBlIG5hbWUgcmVjb3Jkcy4gIE5hbWUgcmVjb3JkcyBhcmUgdXNlZCAqLworICAvKiAgICB0byBzdG9yZSBpbXBvcnRhbnQgc3RyaW5ncyBsaWtlIGZhbWlseSBuYW1lLCBzdHlsZSBuYW1lLCAgICAgICAgICAgKi8KKyAgLyogICAgY29weXJpZ2h0LCBldGMuIGluIF9sb2NhbGl6ZWRfIHZlcnNpb25zIChpLmUuLCBsYW5ndWFnZSwgZW5jb2RpbmcsICovCisgIC8qICAgIGV0YykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBsYXRmb3JtSUQgICA6OiBUaGUgSUQgb2YgdGhlIG5hbWUncyBlbmNvZGluZyBwbGF0Zm9ybS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZW5jb2RpbmdJRCAgIDo6IFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBJRCBmb3IgdGhlIG5hbWUncyBlbmNvZGluZy4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsYW5ndWFnZUlEICAgOjogVGhlIHBsYXRmb3JtLXNwZWNpZmljIElEIGZvciB0aGUgbmFtZSdzIGxhbmd1YWdlLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWVJRCAgICAgICA6OiBUaGUgSUQgc3BlY2lmeWluZyB3aGF0IGtpbmQgb2YgbmFtZSB0aGlzIGlzLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyaW5nTGVuZ3RoIDo6IFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBieXRlcy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJpbmdPZmZzZXQgOjogVGhlIG9mZnNldCB0byB0aGUgc3RyaW5nIGluIHRoZSBgbmFtZScgdGFibGUuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmluZyAgICAgICA6OiBBIHBvaW50ZXIgdG8gdGhlIHN0cmluZydzIGJ5dGVzLiAgTm90ZSB0aGF0IHRoZXNlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgYXJlIHVzdWFsbHkgVVRGLTE2IGVuY29kZWQgY2hhcmFjdGVycy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9OYW1lRW50cnlSZWNfCisgIHsKKyAgICBGVF9VU2hvcnQgIHBsYXRmb3JtSUQ7CisgICAgRlRfVVNob3J0ICBlbmNvZGluZ0lEOworICAgIEZUX1VTaG9ydCAgbGFuZ3VhZ2VJRDsKKyAgICBGVF9VU2hvcnQgIG5hbWVJRDsKKyAgICBGVF9VU2hvcnQgIHN0cmluZ0xlbmd0aDsKKyAgICBGVF9VTG9uZyAgIHN0cmluZ09mZnNldDsKKworICAgIC8qIHRoaXMgbGFzdCBmaWVsZCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgc3BlYyAqLworICAgIC8qIGJ1dCB1c2VkIGJ5IHRoZSBGcmVlVHlwZSBlbmdpbmUgICAgICAgICAgICAqLworCisgICAgRlRfQnl0ZSogICBzdHJpbmc7CisKKyAgfSBUVF9OYW1lRW50cnlSZWMsICpUVF9OYW1lRW50cnk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9OYW1lVGFibGVSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSBtb2RlbGluZyB0aGUgVHJ1ZVR5cGUgbmFtZSB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb3JtYXQgICAgICAgICA6OiBUaGUgZm9ybWF0IG9mIHRoZSBuYW1lIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bU5hbWVSZWNvcmRzIDo6IFRoZSBudW1iZXIgb2YgbmFtZXMgaW4gdGFibGUuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RvcmFnZU9mZnNldCAgOjogVGhlIG9mZnNldCBvZiB0aGUgbmFtZSB0YWJsZSBpbiB0aGUgYG5hbWUnICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgIFRydWVUeXBlIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbmFtZXMgICAgICAgICAgOjogQW4gYXJyYXkgb2YgbmFtZSByZWNvcmRzLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gICAgICAgICA6OiB0aGUgZmlsZSdzIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9OYW1lVGFibGVSZWNfCisgIHsKKyAgICBGVF9VU2hvcnQgICAgICAgICBmb3JtYXQ7CisgICAgRlRfVUludCAgICAgICAgICAgbnVtTmFtZVJlY29yZHM7CisgICAgRlRfVUludCAgICAgICAgICAgc3RvcmFnZU9mZnNldDsKKyAgICBUVF9OYW1lRW50cnlSZWMqICBuYW1lczsKKyAgICBGVF9TdHJlYW0gICAgICAgICBzdHJlYW07CisKKyAgfSBUVF9OYW1lVGFibGVSZWMsICpUVF9OYW1lVGFibGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgT1BUSU9OQUwgVFJVRVRZUEUvT1BFTlRZUEUgVEFCTEVTIERFRklOSVRJT05TICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9HYXNwUmFuZ2VSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHRpbnkgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYSBnYXNwIHJhbmdlIGFjY29yZGluZyB0byB0aGUgICAgICAgKi8KKyAgLyogICAgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4UFBFTSAgOjogVGhlIG1heGltdW0gcHBlbSB2YWx1ZSB0byB3aGljaCBgZ2FzcEZsYWcnIGFwcGxpZXMuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnYXNwRmxhZyA6OiBBIGZsYWcgZGVzY3JpYmluZyB0aGUgZ3JpZC1maXR0aW5nIGFuZCBhbnRpLWFsaWFzaW5nICAgKi8KKyAgLyogICAgICAgICAgICAgICAgbW9kZXMgdG8gYmUgdXNlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfR2FzcFJhbmdlUmVjXworICB7CisgICAgRlRfVVNob3J0ICBtYXhQUEVNOworICAgIEZUX1VTaG9ydCAgZ2FzcEZsYWc7CisKKyAgfSBUVF9HYXNwUmFuZ2VSZWMsICpUVF9HYXNwUmFuZ2U7CisKKworI2RlZmluZSBUVF9HQVNQX0dSSURGSVQgIDB4MDEKKyNkZWZpbmUgVFRfR0FTUF9ET0dSQVkgICAweDAyCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9HYXNwUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSBtb2RlbGluZyB0aGUgVHJ1ZVR5cGUgYGdhc3AnIHRhYmxlIHVzZWQgdG8gc3BlY2lmeSAgICAgKi8KKyAgLyogICAgZ3JpZC1maXR0aW5nIGFuZCBhbnRpLWFsaWFzaW5nIGJlaGF2aW91ci4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVyc2lvbiAgICA6OiBUaGUgdmVyc2lvbiBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1SYW5nZXMgIDo6IFRoZSBudW1iZXIgb2YgZ2FzcCByYW5nZXMgaW4gdGFibGUuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdhc3BSYW5nZXMgOjogQW4gYXJyYXkgb2YgZ2FzcCByYW5nZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX0dhc3BfCisgIHsKKyAgICBGVF9VU2hvcnQgICAgIHZlcnNpb247CisgICAgRlRfVVNob3J0ICAgICBudW1SYW5nZXM7CisgICAgVFRfR2FzcFJhbmdlICBnYXNwUmFuZ2VzOworCisgIH0gVFRfR2FzcFJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgRU1CRURERUQgQklUTUFQUyBTVVBQT1JUICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1NCaXRfTWV0cmljc1JlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gaG9sZCB0aGUgYmlnIG1ldHJpY3Mgb2YgYSBnaXZlbiBnbHlwaCBiaXRtYXAgICAqLworICAvKiAgICBpbiBhIFRydWVUeXBlIG9yIE9wZW5UeXBlIGZvbnQuICBUaGVzZSBhcmUgdXN1YWxseSBmb3VuZCBpbiB0aGUgICAgKi8KKyAgLyogICAgYEVCRFQnIChNaWNyb3NvZnQpIG9yIGBibG9jJyAoQXBwbGUpIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVpZ2h0ICAgICAgIDo6IFRoZSBnbHlwaCBoZWlnaHQgaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB3aWR0aCAgICAgICAgOjogVGhlIGdseXBoIHdpZHRoIGluIHBpeGVscy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhvcmlCZWFyaW5nWCA6OiBUaGUgaG9yaXpvbnRhbCBsZWZ0IGJlYXJpbmcuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaG9yaUJlYXJpbmdZIDo6IFRoZSBob3Jpem9udGFsIHRvcCBiZWFyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBob3JpQWR2YW5jZSAgOjogVGhlIGhvcml6b250YWwgYWR2YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnRCZWFyaW5nWCA6OiBUaGUgdmVydGljYWwgbGVmdCBiZWFyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVydEJlYXJpbmdZIDo6IFRoZSB2ZXJ0aWNhbCB0b3AgYmVhcmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJ0QWR2YW5jZSAgOjogVGhlIHZlcnRpY2FsIGFkdmFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9TQml0X01ldHJpY3NSZWNfCisgIHsKKyAgICBGVF9CeXRlICBoZWlnaHQ7CisgICAgRlRfQnl0ZSAgd2lkdGg7CisKKyAgICBGVF9DaGFyICBob3JpQmVhcmluZ1g7CisgICAgRlRfQ2hhciAgaG9yaUJlYXJpbmdZOworICAgIEZUX0J5dGUgIGhvcmlBZHZhbmNlOworCisgICAgRlRfQ2hhciAgdmVydEJlYXJpbmdYOworICAgIEZUX0NoYXIgIHZlcnRCZWFyaW5nWTsKKyAgICBGVF9CeXRlICB2ZXJ0QWR2YW5jZTsKKworICB9IFRUX1NCaXRfTWV0cmljc1JlYywgKlRUX1NCaXRfTWV0cmljczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1NCaXRfU21hbGxNZXRyaWNzUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gaG9sZCB0aGUgc21hbGwgbWV0cmljcyBvZiBhIGdpdmVuIGdseXBoIGJpdG1hcCAqLworICAvKiAgICBpbiBhIFRydWVUeXBlIG9yIE9wZW5UeXBlIGZvbnQuICBUaGVzZSBhcmUgdXN1YWxseSBmb3VuZCBpbiB0aGUgICAgKi8KKyAgLyogICAgYEVCRFQnIChNaWNyb3NvZnQpIG9yIHRoZSBgYmRhdCcgKEFwcGxlKSB0YWJsZS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVpZ2h0ICAgOjogVGhlIGdseXBoIGhlaWdodCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB3aWR0aCAgICA6OiBUaGUgZ2x5cGggd2lkdGggaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJlYXJpbmdYIDo6IFRoZSBsZWZ0LXNpZGUgYmVhcmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmVhcmluZ1kgOjogVGhlIHRvcC1zaWRlIGJlYXJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZHZhbmNlICA6OiBUaGUgYWR2YW5jZSB3aWR0aCBvciBoZWlnaHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9TQml0X1NtYWxsX01ldHJpY3NfCisgIHsKKyAgICBGVF9CeXRlICBoZWlnaHQ7CisgICAgRlRfQnl0ZSAgd2lkdGg7CisKKyAgICBGVF9DaGFyICBiZWFyaW5nWDsKKyAgICBGVF9DaGFyICBiZWFyaW5nWTsKKyAgICBGVF9CeXRlICBhZHZhbmNlOworCisgIH0gVFRfU0JpdF9TbWFsbE1ldHJpY3NSZWMsICpUVF9TQml0X1NtYWxsTWV0cmljczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1NCaXRfTGluZU1ldHJpY3NSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHRleHQgbGluZSBtZXRyaWNzIG9mIGEgZ2l2ZW4gICAgICAqLworICAvKiAgICBiaXRtYXAgc3RyaWtlLCBmb3IgZWl0aGVyIGEgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBsYXlvdXQuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhc2NlbmRlciAgICAgICAgICAgICAgICA6OiBUaGUgYXNjZW5kZXIgaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlc2NlbmRlciAgICAgICAgICAgICAgIDo6IFRoZSBkZXNjZW5kZXIgaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X3dpZHRoICAgICAgICAgICAgICAgOjogVGhlIG1heGltdW0gZ2x5cGggd2lkdGggaW4gcGl4ZWxzLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYXJldF9zbG9wZV9lbnVtZXJhdG9yICA6OiBSaXNlIG9mIHRoZSBjYXJldCBzbG9wZSwgdHlwaWNhbGx5IHNldCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gMSBmb3Igbm9uLWl0YWxpYyBmb250cy4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYXJldF9zbG9wZV9kZW5vbWluYXRvciA6OiBSaXNlIG9mIHRoZSBjYXJldCBzbG9wZSwgdHlwaWNhbGx5IHNldCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gMCBmb3Igbm9uLWl0YWxpYyBmb250cy4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYXJldF9vZmZzZXQgICAgICAgICAgICA6OiBPZmZzZXQgaW4gcGl4ZWxzIHRvIG1vdmUgdGhlIGNhcmV0IGZvciAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVyIHBvc2l0aW9uaW5nLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtaW5fb3JpZ2luX1NCICAgICAgICAgICA6OiBNaW5pbXVtIG9mIGhvcmlCZWFyaW5nWCAocmVzcC4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydEJlYXJpbmdZKS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1pbl9hZHZhbmNlX1NCICAgICAgICAgIDo6IE1pbmltdW0gb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsIGFkdmFuY2UgLSAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGhvcmlCZWFyaW5nWCArIHdpZHRoICkgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsIGFkdmFuY2UgLSAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdmVydEJlYXJpbmdZICsgaGVpZ2h0ICkgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfYmVmb3JlX0JMICAgICAgICAgICA6OiBNYXhpbXVtIG9mIGhvcmlCZWFyaW5nWSAocmVzcC4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydEJlYXJpbmdZKS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtaW5fYWZ0ZXJfQkwgICAgICAgICAgICA6OiBNaW5pbXVtIG9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaUJlYXJpbmdZIC0gaGVpZ2h0ICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRCZWFyaW5nWCAtIHdpZHRoICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhZHMgICAgICAgICAgICAgICAgICAgIDo6IFVudXNlZCAodG8gbWFrZSB0aGUgc2l6ZSBvZiB0aGUgcmVjb3JkICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIG11bHRpcGxlIG9mIDMyIGJpdHMuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9TQml0X0xpbmVNZXRyaWNzUmVjXworICB7CisgICAgRlRfQ2hhciAgYXNjZW5kZXI7CisgICAgRlRfQ2hhciAgZGVzY2VuZGVyOworICAgIEZUX0J5dGUgIG1heF93aWR0aDsKKyAgICBGVF9DaGFyICBjYXJldF9zbG9wZV9udW1lcmF0b3I7CisgICAgRlRfQ2hhciAgY2FyZXRfc2xvcGVfZGVub21pbmF0b3I7CisgICAgRlRfQ2hhciAgY2FyZXRfb2Zmc2V0OworICAgIEZUX0NoYXIgIG1pbl9vcmlnaW5fU0I7CisgICAgRlRfQ2hhciAgbWluX2FkdmFuY2VfU0I7CisgICAgRlRfQ2hhciAgbWF4X2JlZm9yZV9CTDsKKyAgICBGVF9DaGFyICBtaW5fYWZ0ZXJfQkw7CisgICAgRlRfQ2hhciAgcGFkc1syXTsKKworICB9IFRUX1NCaXRfTGluZU1ldHJpY3NSZWMsICpUVF9TQml0X0xpbmVNZXRyaWNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfU0JpdF9SYW5nZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBUcnVlVHlwZS9PcGVuVHlwZSBzdWJJbmRleFRhYmxlIGFzIGRlZmluZWQgaW4gdGhlIGBFQkxDJyAgICAgICAgICovCisgIC8qICAgIChNaWNyb3NvZnQpIG9yIGBibG9jJyAoQXBwbGUpIHRhYmxlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZpcnN0X2dseXBoICAgOjogVGhlIGZpcnN0IGdseXBoIGluZGV4IGluIHRoZSByYW5nZS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGFzdF9nbHlwaCAgICA6OiBUaGUgbGFzdCBnbHlwaCBpbmRleCBpbiB0aGUgcmFuZ2UuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpbmRleF9mb3JtYXQgIDo6IFRoZSBmb3JtYXQgb2YgaW5kZXggdGFibGUuICBWYWxpZCB2YWx1ZXMgYXJlIDEgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICB0byA1LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpbWFnZV9mb3JtYXQgIDo6IFRoZSBmb3JtYXQgb2YgYEVCRFQnIGltYWdlIGRhdGEuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGltYWdlX29mZnNldCAgOjogVGhlIG9mZnNldCB0byBpbWFnZSBkYXRhIGluIGBFQkRUJy4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW1hZ2Vfc2l6ZSAgICA6OiBGb3IgaW5kZXggZm9ybWF0cyAyIGFuZCA1LiAgVGhpcyBpcyB0aGUgc2l6ZSBpbiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgYnl0ZXMgb2YgZWFjaCBnbHlwaCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmlnX21ldHJpY3MgICA6OiBGb3IgaW5kZXggZm9ybWF0cyAyIGFuZCA1LiAgVGhpcyBpcyB0aGUgYmlnICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgbWV0cmljcyBmb3IgZWFjaCBnbHlwaCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2dseXBocyAgICA6OiBGb3IgaW5kZXggZm9ybWF0cyA0IGFuZCA1LiAgVGhpcyBpcyB0aGUgbnVtYmVyIG9mICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzIGluIHRoZSBjb2RlIGFycmF5LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfb2Zmc2V0cyA6OiBGb3IgaW5kZXggZm9ybWF0cyAxIGFuZCAzLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9jb2RlcyAgIDo6IEZvciBpbmRleCBmb3JtYXRzIDQgYW5kIDUuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhYmxlX29mZnNldCAgOjogVGhlIG9mZnNldCBvZiB0aGUgaW5kZXggdGFibGUgaW4gdGhlIGBFQkxDJyAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIHRhYmxlLiAgT25seSB1c2VkIGR1cmluZyBzdHJpa2UgbG9hZGluZy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9TQml0X1JhbmdlUmVjXworICB7CisgICAgRlRfVVNob3J0ICAgICAgICAgICBmaXJzdF9nbHlwaDsKKyAgICBGVF9VU2hvcnQgICAgICAgICAgIGxhc3RfZ2x5cGg7CisKKyAgICBGVF9VU2hvcnQgICAgICAgICAgIGluZGV4X2Zvcm1hdDsKKyAgICBGVF9VU2hvcnQgICAgICAgICAgIGltYWdlX2Zvcm1hdDsKKyAgICBGVF9VTG9uZyAgICAgICAgICAgIGltYWdlX29mZnNldDsKKworICAgIEZUX1VMb25nICAgICAgICAgICAgaW1hZ2Vfc2l6ZTsKKyAgICBUVF9TQml0X01ldHJpY3NSZWMgIG1ldHJpY3M7CisgICAgRlRfVUxvbmcgICAgICAgICAgICBudW1fZ2x5cGhzOworCisgICAgRlRfVUxvbmcqICAgICAgICAgICBnbHlwaF9vZmZzZXRzOworICAgIEZUX1VTaG9ydCogICAgICAgICAgZ2x5cGhfY29kZXM7CisKKyAgICBGVF9VTG9uZyAgICAgICAgICAgIHRhYmxlX29mZnNldDsKKworICB9IFRUX1NCaXRfUmFuZ2VSZWMsICpUVF9TQml0X1JhbmdlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfU0JpdF9TdHJpa2VSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCBkZXNjcmliZSBhIGdpdmVuIGJpdG1hcCBzdHJpa2UgaW4gdGhlIGBFQkxDJyAgICAgICovCisgIC8qICAgIChNaWNyb3NvZnQpIG9yIGBibG9jJyAoQXBwbGUpIHRhYmxlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgbnVtX2luZGV4X3JhbmdlcyA6OiBUaGUgbnVtYmVyIG9mIGluZGV4IHJhbmdlcy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBpbmRleF9yYW5nZXMgICAgIDo6IEFuIGFycmF5IG9mIGdseXBoIGluZGV4IHJhbmdlcy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGNvbG9yX3JlZiAgICAgICAgOjogVW51c2VkLiAgYGNvbG9yX3JlZicgaXMgcHV0IGluIGZvciBmdXR1cmUgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIGVuaGFuY2VtZW50cywgYnV0IHRoZXNlIGZpZWxkcyBhcmUgYWxyZWFkeSAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICBpbiB1c2UgYnkgb3RoZXIgcGxhdGZvcm1zIChlLmcuIE5ld3RvbikuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgRm9yIGRldGFpbHMsIHBsZWFzZSBzZWUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9mb250cy5hcHBsZS5jb20vICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRSZWZNYW4vUk0wNi9DaGFwNmJsb2MuaHRtbCAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgaG9yaSAgICAgICAgICAgICA6OiBUaGUgbGluZSBtZXRyaWNzIGZvciBob3Jpem9udGFsIGxheW91dHMuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICB2ZXJ0ICAgICAgICAgICAgIDo6IFRoZSBsaW5lIG1ldHJpY3MgZm9yIHZlcnRpY2FsIGxheW91dHMuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHN0YXJ0X2dseXBoICAgICAgOjogVGhlIGxvd2VzdCBnbHlwaCBpbmRleCBmb3IgdGhpcyBzdHJpa2UuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZW5kX2dseXBoICAgICAgICA6OiBUaGUgaGlnaGVzdCBnbHlwaCBpbmRleCBmb3IgdGhpcyBzdHJpa2UuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICB4X3BwZW0gICAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgaG9yaXpvbnRhbCBwaXhlbHMgcGVyIEVNLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHlfcHBlbSAgICAgICAgICAgOjogVGhlIG51bWJlciBvZiB2ZXJ0aWNhbCBwaXhlbHMgcGVyIEVNLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgYml0X2RlcHRoICAgICAgICA6OiBUaGUgYml0IGRlcHRoLiAgVmFsaWQgdmFsdWVzIGFyZSAxLCAyLCA0LCAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgYW5kIDguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZmxhZ3MgICAgICAgICAgICA6OiBJcyB0aGlzIGEgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBzdHJpa2U/ICBGb3IgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscywgcGxlYXNlIHNlZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9mb250cy5hcHBsZS5jb20vICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRSZWZNYW4vUk0wNi9DaGFwNmJsb2MuaHRtbCAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9TQml0X1N0cmlrZVJlY18KKyAgeworICAgIEZUX0ludCAgICAgICAgICAgICAgICAgIG51bV9yYW5nZXM7CisgICAgVFRfU0JpdF9SYW5nZSAgICAgICAgICAgc2JpdF9yYW5nZXM7CisgICAgRlRfVUxvbmcgICAgICAgICAgICAgICAgcmFuZ2VzX29mZnNldDsKKworICAgIEZUX1VMb25nICAgICAgICAgICAgICAgIGNvbG9yX3JlZjsKKworICAgIFRUX1NCaXRfTGluZU1ldHJpY3NSZWMgIGhvcmk7CisgICAgVFRfU0JpdF9MaW5lTWV0cmljc1JlYyAgdmVydDsKKworICAgIEZUX1VTaG9ydCAgICAgICAgICAgICAgIHN0YXJ0X2dseXBoOworICAgIEZUX1VTaG9ydCAgICAgICAgICAgICAgIGVuZF9nbHlwaDsKKworICAgIEZUX0J5dGUgICAgICAgICAgICAgICAgIHhfcHBlbTsKKyAgICBGVF9CeXRlICAgICAgICAgICAgICAgICB5X3BwZW07CisKKyAgICBGVF9CeXRlICAgICAgICAgICAgICAgICBiaXRfZGVwdGg7CisgICAgRlRfQ2hhciAgICAgICAgICAgICAgICAgZmxhZ3M7CisKKyAgfSBUVF9TQml0X1N0cmlrZVJlYywgKlRUX1NCaXRfU3RyaWtlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfU0JpdF9Db21wb25lbnRSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzaW1wbGUgc3RydWN0dXJlIHRvIGRlc2NyaWJlIGEgY29tcG91bmQgc2JpdCBlbGVtZW50LiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfY29kZSA6OiBUaGUgZWxlbWVudCdzIGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4X29mZnNldCAgIDo6IFRoZSBlbGVtZW50J3MgbGVmdCBiZWFyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlfb2Zmc2V0ICAgOjogVGhlIGVsZW1lbnQncyB0b3AgYmVhcmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX1NCaXRfQ29tcG9uZW50UmVjXworICB7CisgICAgRlRfVVNob3J0ICBnbHlwaF9jb2RlOworICAgIEZUX0NoYXIgICAgeF9vZmZzZXQ7CisgICAgRlRfQ2hhciAgICB5X29mZnNldDsKKworICB9IFRUX1NCaXRfQ29tcG9uZW50UmVjLCAqVFRfU0JpdF9Db21wb25lbnQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9TQml0X1NjYWxlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIGRlc2NyaWJlIGEgZ2l2ZW4gYml0bWFwIHNjYWxpbmcgdGFibGUsIGFzIGRlZmluZWQgKi8KKyAgLyogICAgaW4gdGhlIGBFQlNDJyB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaG9yaSAgICAgICAgICAgICAgOjogVGhlIGhvcml6b250YWwgbGluZSBtZXRyaWNzLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJ0ICAgICAgICAgICAgICA6OiBUaGUgdmVydGljYWwgbGluZSBtZXRyaWNzLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHhfcHBlbSAgICAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgaG9yaXpvbnRhbCBwaXhlbHMgcGVyIEVNLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeV9wcGVtICAgICAgICAgICAgOjogVGhlIG51bWJlciBvZiB2ZXJ0aWNhbCBwaXhlbHMgcGVyIEVNLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4X3BwZW1fc3Vic3RpdHV0ZSA6OiBTdWJzdGl0dXRpb24geF9wcGVtIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlfcHBlbV9zdWJzdGl0dXRlIDo6IFN1YnN0aXR1dGlvbiB5X3BwZW0gdmFsdWUuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX1NCaXRfU2NhbGVSZWNfCisgIHsKKyAgICBUVF9TQml0X0xpbmVNZXRyaWNzUmVjICBob3JpOworICAgIFRUX1NCaXRfTGluZU1ldHJpY3NSZWMgIHZlcnQ7CisKKyAgICBGVF9CeXRlICAgICAgICAgICAgICAgICB4X3BwZW07CisgICAgRlRfQnl0ZSAgICAgICAgICAgICAgICAgeV9wcGVtOworCisgICAgRlRfQnl0ZSAgICAgICAgICAgICAgICAgeF9wcGVtX3N1YnN0aXR1dGU7CisgICAgRlRfQnl0ZSAgICAgICAgICAgICAgICAgeV9wcGVtX3N1YnN0aXR1dGU7CisKKyAgfSBUVF9TQml0X1NjYWxlUmVjLCAqVFRfU0JpdF9TY2FsZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgIFBPU1RTQ1JJUFQgR0xZUEggTkFNRVMgU1VQUE9SVCAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1Bvc3RfMjBSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBvc3RzY3JpcHQgbmFtZXMgc3ViLXRhYmxlLCBmb3JtYXQgMi4wLiAgU3RvcmVzIHRoZSBQUyBuYW1lIG9mICAgICAqLworICAvKiAgICBlYWNoIGdseXBoIGluIHRoZSBmb250IGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fZ2x5cGhzICAgIDo6IFRoZSBudW1iZXIgb2YgbmFtZWQgZ2x5cGhzIGluIHRoZSB0YWJsZS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9uYW1lcyAgICAgOjogVGhlIG51bWJlciBvZiBQUyBuYW1lcyBzdG9yZWQgaW4gdGhlIHRhYmxlLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfaW5kaWNlcyA6OiBUaGUgaW5kaWNlcyBvZiB0aGUgZ2x5cGhzIGluIHRoZSBuYW1lcyBhcnJheXMuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9uYW1lcyAgIDo6IFRoZSBQUyBuYW1lcyBub3QgaW4gTWFjIEVuY29kaW5nLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9Qb3N0XzIwUmVjXworICB7CisgICAgRlRfVVNob3J0ICAgbnVtX2dseXBoczsKKyAgICBGVF9VU2hvcnQgICBudW1fbmFtZXM7CisgICAgRlRfVVNob3J0KiAgZ2x5cGhfaW5kaWNlczsKKyAgICBGVF9DaGFyKiogICBnbHlwaF9uYW1lczsKKworICB9IFRUX1Bvc3RfMjBSZWMsICpUVF9Qb3N0XzIwOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfUG9zdF8yNVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUG9zdHNjcmlwdCBuYW1lcyBzdWItdGFibGUsIGZvcm1hdCAyLjUuICBTdG9yZXMgdGhlIFBTIG5hbWUgb2YgICAgICovCisgIC8qICAgIGVhY2ggZ2x5cGggaW4gdGhlIGZvbnQgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9nbHlwaHMgOjogVGhlIG51bWJlciBvZiBnbHlwaHMgaW4gdGhlIHRhYmxlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb2Zmc2V0cyAgICA6OiBBbiBhcnJheSBvZiBzaWduZWQgb2Zmc2V0cyBpbiBhIG5vcm1hbCBNYWMgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgUG9zdHNjcmlwdCBuYW1lIGVuY29kaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX1Bvc3RfMjVfCisgIHsKKyAgICBGVF9VU2hvcnQgIG51bV9nbHlwaHM7CisgICAgRlRfQ2hhciogICBvZmZzZXRzOworCisgIH0gVFRfUG9zdF8yNVJlYywgKlRUX1Bvc3RfMjU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Qb3N0X05hbWVzUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQb3N0c2NyaXB0IG5hbWVzIHRhYmxlLCBlaXRoZXIgZm9ybWF0IDIuMCBvciAyLjUuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkZWQgICAgOjogQSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIFBTIG5hbWVzIGFyZSBsb2FkZWQuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvcm1hdF8yMCA6OiBUaGUgc3ViLXRhYmxlIHVzZWQgZm9yIGZvcm1hdCAyLjAuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZm9ybWF0XzI1IDo6IFRoZSBzdWItdGFibGUgdXNlZCBmb3IgZm9ybWF0IDIuNS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfUG9zdF9OYW1lc1JlY18KKyAgeworICAgIEZUX0Jvb2wgIGxvYWRlZDsKKworICAgIHVuaW9uCisgICAgeworICAgICAgVFRfUG9zdF8yMFJlYyAgZm9ybWF0XzIwOworICAgICAgVFRfUG9zdF8yNVJlYyAgZm9ybWF0XzI1OworCisgICAgfSBuYW1lczsKKworICB9IFRUX1Bvc3RfTmFtZXNSZWMsICpUVF9Qb3N0X05hbWVzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICBHWCBWQVJJQVRJT04gVEFCTEUgU1VQUE9SVCAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgIHR5cGVkZWYgc3RydWN0IEdYX0JsZW5kUmVjXyAgKkdYX0JsZW5kOworI2VuZGlmCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICBFTUJFRERFRCBCREYgUFJPUEVSVElFUyBUQUJMRSBTVVBQT1JUICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qCisgICAqIFRoZXNlIHR5cGVzIGFyZSB1c2VkIHRvIHN1cHBvcnQgYSBgQkRGICcgdGFibGUgdGhhdCBpc24ndCBwYXJ0IG9mIHRoZQorICAgKiBvZmZpY2lhbCBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uLiAgSXQgaXMgbWFpbmx5IHVzZWQgaW4gU0ZOVC1iYXNlZAorICAgKiBiaXRtYXAgZm9udHMgdGhhdCB3ZXJlIGdlbmVyYXRlZCBmcm9tIGEgc2V0IG9mIEJERiBmb250cy4KKyAgICoKKyAgICogVGhlIGZvcm1hdCBvZiB0aGUgdGFibGUgaXMgYXMgZm9sbG93cy4KKyAgICoKKyAgICogICBVU0hPUlQgICB2ZXJzaW9uICAgICAgYEJERiAnIHRhYmxlIHZlcnNpb24gbnVtYmVyLCBzaG91bGQgYmUgMHgwMDAxLgorICAgKiAgIFVTSE9SVCAgIHN0cmlrZUNvdW50ICBOdW1iZXIgb2Ygc3RyaWtlcyAoYml0bWFwIHNpemVzKSBpbiB0aGlzIHRhYmxlLgorICAgKiAgIFVMT05HICAgIHN0cmluZ1RhYmxlICBPZmZzZXQgKGZyb20gc3RhcnQgb2YgQkRGIHRhYmxlKSB0byBzdHJpbmcKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuCisgICAqCisgICAqIFRoaXMgaXMgZm9sbG93ZWQgYnkgYW4gYXJyYXkgb2YgYHN0cmlrZUNvdW50JyBkZXNjcmlwdG9ycywgaGF2aW5nIHRoZQorICAgKiBmb2xsb3dpbmcgZm9ybWF0LgorICAgKgorICAgKiAgIFVTSE9SVCAgIHBwZW0gICAgICAgICBWZXJ0aWNhbCBwaXhlbHMgcGVyIEVNIGZvciB0aGlzIHN0cmlrZS4KKyAgICogICBVU0hPUlQgICBudW1JdGVtcyAgICAgTnVtYmVyIG9mIGl0ZW1zIGZvciB0aGlzIHN0cmlrZSAocHJvcGVydGllcyBhbmQKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgYXRvbXMpLiAgTWF4aW11bSBpcyAyNTUuCisgICAqCisgICAqIFRoaXMgYXJyYXkgaW4gdHVybiBpcyBmb2xsb3dlZCBieSBgc3RyaWtlQ291bnQnIHZhbHVlIHNldHMuICBFYWNoCisgICAqIGB2YWx1ZSBzZXQnIGlzIGFuIGFycmF5IG9mIGBudW1JdGVtcycgaXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGZvcm1hdC4KKyAgICoKKyAgICogICBVTE9ORyAgICBpdGVtX25hbWUgICAgT2Zmc2V0IGluIHN0cmluZyB0YWJsZSB0byBpdGVtIG5hbWUuCisgICAqICAgVVNIT1JUICAgaXRlbV90eXBlICAgIFRoZSBpdGVtIHR5cGUuICBQb3NzaWJsZSB2YWx1ZXMgYXJlCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT4gc3RyaW5nIChlLmcuLCBDT01NRU5UKQorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID0+IGF0b20gICAoZS5nLiwgRk9OVCBvciBldmVuIFNJWkUpCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgPT4gaW50MzIKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgMyA9PiB1aW50MzIKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCA9PiBBIGZsYWcgdG8gaW5kaWNhdGUgYSBwcm9wZXJ0aWVzLiAgVGhpcworICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIE9SZWQgd2l0aCB0aGUgYWJvdmUgdmFsdWVzLgorICAgKiAgIFVMT05HICAgIGl0ZW1fdmFsdWUgICBGb3Igc3RyaW5ncyAgPT4gT2Zmc2V0IGludG8gc3RyaW5nIHRhYmxlIHdpdGhvdXQKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZSBxdW90ZXMuCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhdG9tcyAgICA9PiBPZmZzZXQgaW50byBzdHJpbmcgdGFibGUuCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlZ2VycyA9PiBEaXJlY3QgdmFsdWUuCisgICAqCisgICAqIEFsbCBzdHJpbmdzIGluIHRoZSBzdHJpbmcgdGFibGUgY29uc2lzdCBvZiBieXRlcyBhbmQgYXJlCisgICAqIHplcm8tdGVybWluYXRlZC4KKyAgICoKKyAgICovCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0JERgorCisgIHR5cGVkZWYgc3RydWN0ICBUVF9CREZSZWNfCisgIHsKKyAgICBGVF9CeXRlKiAgIHRhYmxlOworICAgIEZUX0J5dGUqICAgdGFibGVfZW5kOworICAgIEZUX0J5dGUqICAgc3RyaW5nczsKKyAgICBGVF9VTG9uZyAgIHN0cmluZ3Nfc2l6ZTsKKyAgICBGVF9VSW50ICAgIG51bV9zdHJpa2VzOworICAgIEZUX0Jvb2wgICAgbG9hZGVkOworCisgIH0gVFRfQkRGUmVjLCAqVFRfQkRGOworCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9CREYgKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICBPUklHSU5BTCBUVF9GQUNFIENMQVNTIERFRklOSVRJT04gICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgc3RydWN0dXJlL2NsYXNzIGlzIGRlZmluZWQgaGVyZSBiZWNhdXNlIGl0IGlzIGNvbW1vbiB0byB0aGUgICAgICAqLworICAvKiBmb2xsb3dpbmcgZm9ybWF0czogVFRGLCBPcGVuVHlwZS1UVCwgYW5kIE9wZW5UeXBlLUNGRi4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE5vdGUsIGhvd2V2ZXIsIHRoYXQgdGhlIGNsYXNzZXMgVFRfU2l6ZSBhbmQgVFRfR2x5cGhTbG90IGFyZSBub3QgICAgICAqLworICAvKiBzaGFyZWQgYmV0d2VlbiBmb250IGRyaXZlcnMsIGFuZCBhcmUgdGh1cyBkZWZpbmVkIGluIGB0dG9ianMuaCcuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBUcnVlVHlwZSBmYWNlL2ZvbnQgb2JqZWN0LiAgQSBUVF9GYWNlIGVuY2Fwc3VsYXRlcyAgICovCisgIC8qICAgIHRoZSByZXNvbHV0aW9uIGFuZCBzY2FsaW5nIGluZGVwZW5kZW50IHBhcnRzIG9mIGEgVHJ1ZVR5cGUgZm9udCAgICAqLworICAvKiAgICByZXNvdXJjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgVFRfRmFjZSBzdHJ1Y3R1cmUgaXMgYWxzbyB1c2VkIGFzIGEgYHBhcmVudCBjbGFzcycgZm9yIHRoZSAgICAgKi8KKyAgLyogICAgT3BlblR5cGUtQ0ZGIGNsYXNzIChUMl9GYWNlKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBUVF9GYWNlUmVjXyogIFRUX0ZhY2U7CisKKworICAvKiBhIGZ1bmN0aW9uIHR5cGUgdXNlZCBmb3IgdGhlIHRydWV0eXBlIGJ5dGVjb2RlIGludGVycHJldGVyIGhvb2tzICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9JbnRlcnByZXRlcikoIHZvaWQqICBleGVjX2NvbnRleHQgKTsKKworICAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uICovCisgIHR5cGVkZWYgc3RydWN0IFRUX0xvYWRlclJlY18qICBUVF9Mb2FkZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Mb2FkZXJfR290b1RhYmxlRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTZWVrcyBhIHN0cmVhbSB0byB0aGUgc3RhcnQgb2YgYSBnaXZlbiBUcnVlVHlwZSB0YWJsZS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhZyAgICA6OiBBIDQtYnl0ZSB0YWcgdXNlZCB0byBuYW1lIHRoZSB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtIDo6IFRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGVuZ3RoIDo6IFRoZSBsZW5ndGggb2YgdGhlIHRhYmxlIGluIGJ5dGVzLiAgU2V0IHRvIDAgaWYgbm90ICAgICAgICovCisgIC8qICAgICAgICAgICAgICBuZWVkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBzdHJlYW0gY3Vyc29yIG11c3QgYmUgYXQgdGhlIGZvbnQgZmlsZSdzIG9yaWdpbi4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0xvYWRlcl9Hb3RvVGFibGVGdW5jKSggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICB0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgbGVuZ3RoICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Mb2FkZXJfU3RhcnRHbHlwaEZ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTZWVrcyBhIHN0cmVhbSB0byB0aGUgc3RhcnQgb2YgYSBnaXZlbiBnbHlwaCBlbGVtZW50LCBhbmQgb3BlbnMgYSAgKi8KKyAgLyogICAgZnJhbWUgZm9yIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZGVyICAgICAgOjogVGhlIGN1cnJlbnQgVHJ1ZVR5cGUgZ2x5cGggbG9hZGVyIG9iamVjdC4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaCBpbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIGdseXBoIHRvIGFjY2Vzcy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG9mZnNldCAgICAgIDo6IFRoZSBvZmZzZXQgb2YgdGhlIGdseXBoIGFjY29yZGluZyB0byB0aGUgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBgbG9jYXRpb25zJyB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJ5dGVfY291bnQgIDo6IFRoZSBzaXplIG9mIHRoZSBmcmFtZSBpbiBieXRlcy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgbm9ybWFsbHkgZXF1aXZhbGVudCB0byBGVF9TVFJFQU1fU0VFSyhvZmZzZXQpICAgICAqLworICAvKiAgICBmb2xsb3dlZCBieSBGVF9GUkFNRV9FTlRFUihieXRlX2NvdW50KSB3aXRoIHRoZSBsb2FkZXIncyBzdHJlYW0sICAgKi8KKyAgLyogICAgYnV0IGFsdGVybmF0aXZlIGZvcm1hdHMgKGUuZy4gY29tcHJlc3NlZCBvbmVzKSBtaWdodCB1c2Ugc29tZXRoaW5nICovCisgIC8qICAgIGRpZmZlcmVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0xvYWRlcl9TdGFydEdseXBoRnVuYykoIFRUX0xvYWRlciAgbG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBieXRlX2NvdW50ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Mb2FkZXJfUmVhZEdseXBoRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZWFkcyBvbmUgZ2x5cGggZWxlbWVudCAoaXRzIGhlYWRlciwgYSBzaW1wbGUgZ2x5cGgsIG9yIGEgICAgICAgICAgKi8KKyAgLyogICAgY29tcG9zaXRlKSBmcm9tIHRoZSBsb2FkZXIncyBjdXJyZW50IHN0cmVhbSBmcmFtZS4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZGVyIDo6IFRoZSBjdXJyZW50IFRydWVUeXBlIGdseXBoIGxvYWRlciBvYmplY3QuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfTG9hZGVyX1JlYWRHbHlwaEZ1bmMpKCBUVF9Mb2FkZXIgIGxvYWRlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZGVyX0VuZEdseXBoRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ2xvc2VzIHRoZSBjdXJyZW50IGxvYWRlciBzdHJlYW0gZnJhbWUgZm9yIHRoZSBnbHlwaC4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZGVyIDo6IFRoZSBjdXJyZW50IFRydWVUeXBlIGdseXBoIGxvYWRlciBvYmplY3QuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpUVF9Mb2FkZXJfRW5kR2x5cGhGdW5jKSggVFRfTG9hZGVyICBsb2FkZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZVR5cGUgRmFjZSBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIFRydWVUeXBlIGZhY2UgY2xhc3MuICBUaGVzZSBvYmplY3RzIG1vZGVsIHRoZSByZXNvbHV0aW9uIGFuZCAgICovCisgIC8qICAgIHBvaW50LXNpemUgaW5kZXBlbmRlbnQgZGF0YSBmb3VuZCBpbiBhIFRydWVUeXBlIGZvbnQgZmlsZS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJvb3QgICAgICAgICAgICAgICAgIDo6IFRoZSBiYXNlIEZUX0ZhY2Ugc3RydWN0dXJlLCBtYW5hZ2VkIGJ5IHRoZSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlIGxheWVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0Y19oZWFkZXIgICAgICAgICAgIDo6IFRoZSBUcnVlVHlwZSBjb2xsZWN0aW9uIGhlYWRlciwgdXNlZCB3aGVuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSBpcyBhIGB0dGMnIHJhdGhlciB0aGFuIGEgYHR0ZicuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG9yZGluYXJ5IGZvbnQgZmlsZXMsIHRoZSBmaWVsZCAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB0dGNfaGVhZGVyLmNvdW50JyBpcyBzZXQgdG8gMC4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZm9ybWF0X3RhZyAgICAgICAgICAgOjogVGhlIGZvbnQgZm9ybWF0IHRhZy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fdGFibGVzICAgICAgICAgICA6OiBUaGUgbnVtYmVyIG9mIFRydWVUeXBlIHRhYmxlcyBpbiB0aGlzIGZvbnQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkaXJfdGFibGVzICAgICAgICAgICA6OiBUaGUgZGlyZWN0b3J5IG9mIFRydWVUeXBlIHRhYmxlcyBmb3IgdGhpcyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udCBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBoZWFkZXIgICAgICAgICAgICAgICA6OiBUaGUgZm9udCdzIGZvbnQgaGVhZGVyIChgaGVhZCcgdGFibGUpLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZCBvbiBmb250IG9wZW5pbmcuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBob3Jpem9udGFsICAgICAgICAgICA6OiBUaGUgZm9udCdzIGhvcml6b250YWwgaGVhZGVyIChgaGhlYScgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUpLiAgVGhpcyBmaWVsZCBhbHNvIGNvbnRhaW5zIHRoZSAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgaG9yaXpvbnRhbCBtZXRyaWNzIHRhYmxlICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYGhtdHgnKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heF9wcm9maWxlICAgICAgICAgIDo6IFRoZSBmb250J3MgbWF4aW11bSBwcm9maWxlIHRhYmxlLiAgUmVhZCBvbiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250IG9wZW5pbmcuICBOb3RlIHRoYXQgc29tZSBtYXhpbXVtICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzIGNhbm5vdCBiZSB0YWtlbiBkaXJlY3RseSBmcm9tIHRoaXMgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLiAgV2UgdGh1cyBkZWZpbmUgYWRkaXRpb25hbCBmaWVsZHMgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWxvdyB0byBob2xkIHRoZSBjb21wdXRlZCBtYXhpbWEuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnRpY2FsX2luZm8gICAgICAgIDo6IEEgYm9vbGVhbiB3aGljaCBpcyBzZXQgd2hlbiB0aGUgZm9udCBmaWxlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyB2ZXJ0aWNhbCBtZXRyaWNzLiAgSWYgbm90LCB0aGUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgdGhlIGB2ZXJ0aWNhbCcgZmllbGQgaXMgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVydGljYWwgICAgICAgICAgICAgOjogVGhlIGZvbnQncyB2ZXJ0aWNhbCBoZWFkZXIgKGB2aGVhJyB0YWJsZSkuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgYWxzbyBjb250YWlucyB0aGUgYXNzb2NpYXRlZCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBtZXRyaWNzIHRhYmxlIChgdm10eCcpLCBpZiBmb3VuZC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1QT1JUQU5UOiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWVsZCBpcyAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCBpZiB0aGUgYHZlcnRpY2FsSW5mbycgZmllbGQgaXMgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNldC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9uYW1lcyAgICAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgbmFtZSByZWNvcmRzIHdpdGhpbiB0aGlzICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlVHlwZSBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWVfdGFibGUgICAgICAgICAgIDo6IFRoZSB0YWJsZSBvZiBuYW1lIHJlY29yZHMgKGBuYW1lJykuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3MyICAgICAgICAgICAgICAgICAgOjogVGhlIGZvbnQncyBPUy8yIHRhYmxlIChgT1MvMicpLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb3N0c2NyaXB0ICAgICAgICAgICA6OiBUaGUgZm9udCdzIFBvc3RTY3JpcHQgdGFibGUgKGBwb3N0JyAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUpLiAgVGhlIFBvc3RTY3JpcHQgZ2x5cGggbmFtZXMgYXJlICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBsb2FkZWQgYnkgdGhlIGRyaXZlciBvbiBmYWNlIG9wZW5pbmcuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIGB0dHBvc3QnIG1vZHVsZSBmb3IgbW9yZSBkZXRhaWxzLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNtYXBfdGFibGUgICAgICAgICAgIDo6IEFkZHJlc3Mgb2YgdGhlIGZhY2UncyBgY21hcCcgU0ZOVCB0YWJsZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBtZW1vcnkgKGl0J3MgYW4gZXh0cmFjdGVkIGZyYW1lKS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNtYXBfc2l6ZSAgICAgICAgICAgIDo6IFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBgY21hcF90YWJsZScgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZWQgYWJvdmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdvdG9fdGFibGUgICAgICAgICAgIDo6IEEgZnVuY3Rpb24gY2FsbGVkIGJ5IGVhY2ggVHJ1ZVR5cGUgdGFibGUgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIgdG8gcG9zaXRpb24gYSBzdHJlYW0ncyBjdXJzb3IgdG8gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIGEgZ2l2ZW4gdGFibGUgYWNjb3JkaW5nIHRvICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0cyB0YWcuICBJdCBkZWZhdWx0cyB0byBUVF9Hb3RvX0ZhY2UgYnV0ICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgZGlmZmVyZW50IGZvciBzdHJhbmdlIGZvcm1hdHMgKGUuZy4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA0MikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhY2Nlc3NfZ2x5cGhfZnJhbWUgICA6OiBBIGZ1bmN0aW9uIHVzZWQgdG8gYWNjZXNzIHRoZSBmcmFtZSBvZiBhICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gZ2x5cGggd2l0aGluIHRoZSBmYWNlJ3MgZm9udCBmaWxlLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb3JnZXRfZ2x5cGhfZnJhbWUgICA6OiBBIGZ1bmN0aW9uIHVzZWQgdG8gZm9yZ2V0IHRoZSBmcmFtZSBvZiBhICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gZ2x5cGggd2hlbiBhbGwgZGF0YSBoYXMgYmVlbiBsb2FkZWQuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZWFkX2dseXBoX2hlYWRlciAgICA6OiBBIGZ1bmN0aW9uIHVzZWQgdG8gcmVhZCBhIGdseXBoIGhlYWRlci4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgbXVzdCBiZSBjYWxsZWQgYmV0d2VlbiBhbiBgYWNjZXNzJyBhbmQgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmb3JnZXQnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmVhZF9zaW1wbGVfZ2x5cGggICAgOjogQSBmdW5jdGlvbiB1c2VkIHRvIHJlYWQgYSBzaW1wbGUgZ2x5cGguICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IG11c3QgYmUgY2FsbGVkIGFmdGVyIHRoZSBoZWFkZXIgd2FzICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkLCBhbmQgYmVmb3JlIHRoZSBgZm9yZ2V0Jy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlYWRfY29tcG9zaXRlX2dseXBoIDo6IEEgZnVuY3Rpb24gdXNlZCB0byByZWFkIGEgY29tcG9zaXRlIGdseXBoLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBtdXN0IGJlIGNhbGxlZCBhZnRlciB0aGUgaGVhZGVyIHdhcyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwgYW5kIGJlZm9yZSB0aGUgYGZvcmdldCcuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzZm50ICAgICAgICAgICAgICAgICA6OiBBIHBvaW50ZXIgdG8gdGhlIFNGTlQgc2VydmljZS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBzbmFtZXMgICAgICAgICAgICAgIDo6IEEgcG9pbnRlciB0byB0aGUgUG9zdFNjcmlwdCBuYW1lcyBzZXJ2aWNlLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGRteCAgICAgICAgICAgICAgICAgOjogVGhlIGZhY2UncyBob3Jpem9udGFsIGRldmljZSBtZXRyaWNzICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIChgaGRteCcgdGFibGUpLiAgVGhpcyB0YWJsZSBpcyBvcHRpb25hbCBpbiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlVHlwZS9PcGVuVHlwZSBmb250cy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdhc3AgICAgICAgICAgICAgICAgIDo6IFRoZSBncmlkLWZpdHRpbmcgYW5kIHNjYWxpbmcgcHJvcGVydGllcyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSAoYGdhc3AnKS4gIFRoaXMgdGFibGUgaXMgb3B0aW9uYWwgaW4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZVR5cGUvT3BlblR5cGUgZm9udHMuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwY2x0ICAgICAgICAgICAgICAgICA6OiBUaGUgYHBjbHQnIFNGTlQgdGFibGUuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9zYml0X3N0cmlrZXMgICAgIDo6IFRoZSBudW1iZXIgb2Ygc2JpdCBzdHJpa2VzLCBpLmUuLCBiaXRtYXAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcywgZW1iZWRkZWQgaW4gdGhpcyBmb250LiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNiaXRfc3RyaWtlcyAgICAgICAgIDo6IEFuIGFycmF5IG9mIHNiaXQgc3RyaWtlcyBlbWJlZGRlZCBpbiB0aGlzICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LiAgVGhpcyB0YWJsZSBpcyBvcHRpb25hbCBpbiBhICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZVR5cGUvT3BlblR5cGUgZm9udC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fc2JpdF9zY2FsZXMgICAgICA6OiBUaGUgbnVtYmVyIG9mIHNiaXQgc2NhbGVzIGZvciB0aGlzIGZvbnQuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNiaXRfc2NhbGVzICAgICAgICAgIDo6IEFycmF5IG9mIHNiaXQgc2NhbGVzIGVtYmVkZGVkIGluIHRoaXMgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LiAgVGhpcyB0YWJsZSBpcyBvcHRpb25hbCBpbiBhICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZVR5cGUvT3BlblR5cGUgZm9udC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb3N0c2NyaXB0X25hbWVzICAgICA6OiBBIHRhYmxlIHVzZWQgdG8gc3RvcmUgdGhlIFBvc3RzY3JpcHQgbmFtZXMgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgIHRoZSBnbHlwaHMgZm9yIHRoaXMgZm9udC4gIFNlZSB0aGUgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgIGB0dGNvbmZpZy5oJyBmb3IgY29tbWVudHMgb24gdGhlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMgb3B0aW9uLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9sb2NhdGlvbnMgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgZ2x5cGggbG9jYXRpb25zIGluIHRoaXMgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlVHlwZSBmaWxlLiAgVGhpcyBzaG91bGQgYmUgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsIHRvIHRoZSBudW1iZXIgb2YgZ2x5cGhzLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIElnbm9yZWQgZm9yIFR5cGUgMiBmb250cy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfbG9jYXRpb25zICAgICAgOjogQW4gYXJyYXkgb2YgbG9uZ3MuICBUaGVzZSBhcmUgb2Zmc2V0cyB0byAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoIGRhdGEgd2l0aGluIHRoZSBgZ2x5ZicgdGFibGUuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZ25vcmVkIGZvciBUeXBlIDIgZm9udCBmYWNlcy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseWZfbGVuICAgICAgICAgICAgIDo6IFRoZSBsZW5ndGggb2YgdGhlIGBnbHlmJyB0YWJsZS4gIE5lZWRlZCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbWFsZm9ybWVkIGBsb2NhJyB0YWJsZXMuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvbnRfcHJvZ3JhbV9zaXplICAgIDo6IFNpemUgaW4gYnl0ZWNvZGVzIG9mIHRoZSBmYWNlJ3MgZm9udCAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLiAgMCBpZiBub25lIGRlZmluZWQuICBJZ25vcmVkIGZvciAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAyIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb250X3Byb2dyYW0gICAgICAgICA6OiBUaGUgZmFjZSdzIGZvbnQgcHJvZ3JhbSAoYnl0ZWNvZGUgc3RyZWFtKSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZWQgYXQgbG9hZCB0aW1lLCBhbHNvIHVzZWQgZHVyaW5nICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoIHJlbmRlcmluZy4gIENvbWVzIGZyb20gdGhlIGBmcGdtJyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS4gIElnbm9yZWQgZm9yIFR5cGUgMiBmb250IGZvbnRzLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGN2dF9wcm9ncmFtX3NpemUgICAgIDo6IFRoZSBzaXplIGluIGJ5dGVjb2RlcyBvZiB0aGUgZmFjZSdzIGN2dCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLiAgSWdub3JlZCBmb3IgVHlwZSAyIGZvbnRzLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGN2dF9wcm9ncmFtICAgICAgICAgIDo6IFRoZSBmYWNlJ3MgY3Z0IHByb2dyYW0gKGJ5dGVjb2RlIHN0cmVhbSkgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlZCBlYWNoIHRpbWUgYW4gaW5zdGFuY2Uvc2l6ZSBpcyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZC9yZXNldC4gIENvbWVzIGZyb20gdGhlIGBwcmVwJyAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLiAgSWdub3JlZCBmb3IgVHlwZSAyIGZvbnRzLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY3Z0X3NpemUgICAgICAgICAgICAgOjogU2l6ZSBvZiB0aGUgY29udHJvbCB2YWx1ZSB0YWJsZSAoaW4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXMpLiAgIElnbm9yZWQgZm9yIFR5cGUgMiBmb250cy4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY3Z0ICAgICAgICAgICAgICAgICAgOjogVGhlIGZhY2UncyBvcmlnaW5hbCBjb250cm9sIHZhbHVlIHRhYmxlLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvb3JkaW5hdGVzIGFyZSBleHByZXNzZWQgaW4gdW5zY2FsZWQgZm9udCAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0cy4gIENvbWVzIGZyb20gdGhlIGBjdnQgJyB0YWJsZS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWdub3JlZCBmb3IgVHlwZSAyIGZvbnRzLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fa2Vybl9wYWlycyAgICAgICA6OiBUaGUgbnVtYmVyIG9mIGtlcm5pbmcgcGFpcnMgcHJlc2VudCBpbiB0aGUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udCBmaWxlLiAgVGhlIGVuZ2luZSBvbmx5IGxvYWRzIHRoZSAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IGhvcml6b250YWwgZm9ybWF0IDAga2VybiB0YWJsZSBpdCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kcyBpbiB0aGUgZm9udCBmaWxlLiAgSWdub3JlZCBmb3IgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAyIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBrZXJuX3RhYmxlX2luZGV4ICAgICA6OiBUaGUgaW5kZXggb2YgdGhlIGtlcm5pbmcgdGFibGUgaW4gdGhlIGZvbnQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmluZyBkaXJlY3RvcnkuICBJZ25vcmVkIGZvciBUeXBlIDIgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW50ZXJwcmV0ZXIgICAgICAgICAgOjogQSBwb2ludGVyIHRvIHRoZSBUcnVlVHlwZSBieXRlY29kZSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycHJldGVycyBmaWVsZCBpcyBhbHNvIHVzZWQgdG8gaG9vayAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGVidWdnZXIgaW4gYHR0ZGVidWcnLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVucGF0ZW50ZWRfaGludGluZyAgIDo6IElmIHRydWUsIHVzZSBvbmx5IHVucGF0ZW50ZWQgbWV0aG9kcyBpbiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRvYmxlbmQgICAgICAgICAgICAgIDo6IEEgYm9vbGVhbiB3aGljaCBpcyBzZXQgaWYgdGhlIGZvbnQgc2hvdWxkICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBibGVuZGVkICh0aGlzIGlzIGZvciBHWCB2YXIpLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJsZW5kICAgICAgICAgICAgICAgIDo6IENvbnRhaW5zIHRoZSBkYXRhIG5lZWRlZCB0byBjb250cm9sIEdYICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb24gdGFibGVzIChyYXRoZXIgbGlrZSBNdWx0aXBsZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFzdGVyIGRhdGEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBleHRyYSAgICAgICAgICAgICAgICA6OiBSZXNlcnZlZCBmb3IgdGhpcmQtcGFydHkgZm9udCBkcml2ZXJzLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBvc3RzY3JpcHRfbmFtZSAgICAgIDo6IFRoZSBQUyBuYW1lIG9mIHRoZSBmb250LiAgVXNlZCBieSB0aGUgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0c2NyaXB0IG5hbWUgc2VydmljZS4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9GYWNlUmVjXworICB7CisgICAgRlRfRmFjZVJlYyAgICAgICAgICAgIHJvb3Q7CisKKyAgICBUVENfSGVhZGVyUmVjICAgICAgICAgdHRjX2hlYWRlcjsKKworICAgIEZUX1VMb25nICAgICAgICAgICAgICBmb3JtYXRfdGFnOworICAgIEZUX1VTaG9ydCAgICAgICAgICAgICBudW1fdGFibGVzOworICAgIFRUX1RhYmxlICAgICAgICAgICAgICBkaXJfdGFibGVzOworCisgICAgVFRfSGVhZGVyICAgICAgICAgICAgIGhlYWRlcjsgICAgICAgLyogVHJ1ZVR5cGUgaGVhZGVyIHRhYmxlICAgICAgICAgICovCisgICAgVFRfSG9yaUhlYWRlciAgICAgICAgIGhvcml6b250YWw7ICAgLyogVHJ1ZVR5cGUgaG9yaXpvbnRhbCBoZWFkZXIgICAgICovCisKKyAgICBUVF9NYXhQcm9maWxlICAgICAgICAgbWF4X3Byb2ZpbGU7CisKKyAgICBGVF9Cb29sICAgICAgICAgICAgICAgdmVydGljYWxfaW5mbzsKKyAgICBUVF9WZXJ0SGVhZGVyICAgICAgICAgdmVydGljYWw7ICAgICAvKiBUVCBWZXJ0aWNhbCBoZWFkZXIsIGlmIHByZXNlbnQgKi8KKworICAgIEZUX1VTaG9ydCAgICAgICAgICAgICBudW1fbmFtZXM7ICAgIC8qIG51bWJlciBvZiBuYW1lIHJlY29yZHMgICovCisgICAgVFRfTmFtZVRhYmxlUmVjICAgICAgIG5hbWVfdGFibGU7ICAgLyogbmFtZSB0YWJsZSAgICAgICAgICAgICAgKi8KKworICAgIFRUX09TMiAgICAgICAgICAgICAgICBvczI7ICAgICAgICAgIC8qIFRydWVUeXBlIE9TLzIgdGFibGUgICAgICAgICAgICAqLworICAgIFRUX1Bvc3RzY3JpcHQgICAgICAgICBwb3N0c2NyaXB0OyAgIC8qIFRydWVUeXBlIFBvc3RzY3JpcHQgdGFibGUgICAgICAqLworCisgICAgRlRfQnl0ZSogICAgICAgICAgICAgIGNtYXBfdGFibGU7ICAgLyogZXh0cmFjdGVkIGBjbWFwJyB0YWJsZSAqLworICAgIEZUX1VMb25nICAgICAgICAgICAgICBjbWFwX3NpemU7CisKKyAgICBUVF9Mb2FkZXJfR290b1RhYmxlRnVuYyAgIGdvdG9fdGFibGU7CisKKyAgICBUVF9Mb2FkZXJfU3RhcnRHbHlwaEZ1bmMgIGFjY2Vzc19nbHlwaF9mcmFtZTsKKyAgICBUVF9Mb2FkZXJfRW5kR2x5cGhGdW5jICAgIGZvcmdldF9nbHlwaF9mcmFtZTsKKyAgICBUVF9Mb2FkZXJfUmVhZEdseXBoRnVuYyAgIHJlYWRfZ2x5cGhfaGVhZGVyOworICAgIFRUX0xvYWRlcl9SZWFkR2x5cGhGdW5jICAgcmVhZF9zaW1wbGVfZ2x5cGg7CisgICAgVFRfTG9hZGVyX1JlYWRHbHlwaEZ1bmMgICByZWFkX2NvbXBvc2l0ZV9nbHlwaDsKKworICAgIC8qIGEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgU0ZOVF9JbnRlcmZhY2UgdGFibGUgdXNlZCB0byBsb2FkICovCisgICAgLyogdGhlIGJhc2ljIFRydWVUeXBlIHRhYmxlcyBpbiB0aGUgZmFjZSBvYmplY3QgICAgICAgICAgICAgICAgKi8KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgc2ZudDsKKworICAgIC8qIGEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgRlRfU2VydmljZV9Qc0NNYXBzUmVjIHRhYmxlIHVzZWQgdG8gKi8KKyAgICAvKiBoYW5kbGUgZ2x5cGggbmFtZXMgPC0+IHVuaWNvZGUgJiBNYWMgdmFsdWVzICAgICAgICAgICAgICAgICAgICovCisgICAgdm9pZCogICAgICAgICAgICAgICAgIHBzbmFtZXM7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogT3B0aW9uYWwgVHJ1ZVR5cGUvT3BlblR5cGUgdGFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgICAvKiBncmlkLWZpdHRpbmcgYW5kIHNjYWxpbmcgdGFibGUgKi8KKyAgICBUVF9HYXNwUmVjICAgICAgICAgICAgZ2FzcDsgICAgICAgICAgICAgICAgIC8qIHRoZSBgZ2FzcCcgdGFibGUgKi8KKworICAgIC8qIFBDTCA1IHRhYmxlICovCisgICAgVFRfUENMVCAgICAgICAgICAgICAgIHBjbHQ7CisKKyAgICAvKiBlbWJlZGRlZCBiaXRtYXBzIHN1cHBvcnQgKi8KKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgbnVtX3NiaXRfc2NhbGVzOworICAgIFRUX1NCaXRfU2NhbGUgICAgICAgICBzYml0X3NjYWxlczsKKworICAgIC8qIHBvc3RzY3JpcHQgbmFtZXMgdGFibGUgKi8KKyAgICBUVF9Qb3N0X05hbWVzUmVjICAgICAgcG9zdHNjcmlwdF9uYW1lczsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBUcnVlVHlwZS1zcGVjaWZpYyBmaWVsZHMgKGlnbm9yZWQgYnkgdGhlIE9URi1UeXBlMiBkcml2ZXIpICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAgIC8qIHRoZSBmb250IHByb2dyYW0sIGlmIGFueSAqLworICAgIEZUX1VMb25nICAgICAgICAgICAgICBmb250X3Byb2dyYW1fc2l6ZTsKKyAgICBGVF9CeXRlKiAgICAgICAgICAgICAgZm9udF9wcm9ncmFtOworCisgICAgLyogdGhlIGN2dCBwcm9ncmFtLCBpZiBhbnkgKi8KKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgY3Z0X3Byb2dyYW1fc2l6ZTsKKyAgICBGVF9CeXRlKiAgICAgICAgICAgICAgY3Z0X3Byb2dyYW07CisKKyAgICAvKiB0aGUgb3JpZ2luYWwsIHVuc2NhbGVkLCBjb250cm9sIHZhbHVlIHRhYmxlICovCisgICAgRlRfVUxvbmcgICAgICAgICAgICAgIGN2dF9zaXplOworICAgIEZUX1Nob3J0KiAgICAgICAgICAgICBjdnQ7CisKKyAgICAvKiBBIHBvaW50ZXIgdG8gdGhlIGJ5dGVjb2RlIGludGVycHJldGVyIHRvIHVzZS4gIFRoaXMgaXMgYWxzbyAqLworICAgIC8qIHVzZWQgdG8gaG9vayB0aGUgZGVidWdnZXIgZm9yIHRoZSBgdHRkZWJ1ZycgdXRpbGl0eS4gICAgICAgICovCisgICAgVFRfSW50ZXJwcmV0ZXIgICAgICAgIGludGVycHJldGVyOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcKKyAgICAvKiBVc2UgdW5wYXRlbnRlZCBoaW50aW5nIG9ubHkuICovCisgICAgRlRfQm9vbCAgICAgICAgICAgICAgIHVucGF0ZW50ZWRfaGludGluZzsKKyNlbmRpZgorCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBPdGhlciB0YWJsZXMgb3IgZmllbGRzLiBUaGlzIGlzIHVzZWQgYnkgZGVyaXZhdGl2ZSBmb3JtYXRzIGxpa2UgICAgICovCisgICAgLyogT3BlblR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgICBGVF9HZW5lcmljICAgICAgICAgICAgZXh0cmE7CisKKyAgICBjb25zdCBjaGFyKiAgICAgICAgICAgcG9zdHNjcmlwdF9uYW1lOworCisgICAgRlRfVUxvbmcgICAgICAgICAgICAgIGdseWZfbGVuOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICAgIEZUX0Jvb2wgICAgICAgICAgICAgICBkb2JsZW5kOworICAgIEdYX0JsZW5kICAgICAgICAgICAgICBibGVuZDsKKyNlbmRpZgorCisgICAgLyogc2luY2UgdmVyc2lvbiAyLjIgKi8KKworICAgIEZUX0J5dGUqICAgICAgICAgICAgICBob3J6X21ldHJpY3M7CisgICAgRlRfVUxvbmcgICAgICAgICAgICAgIGhvcnpfbWV0cmljc19zaXplOworCisgICAgRlRfQnl0ZSogICAgICAgICAgICAgIHZlcnRfbWV0cmljczsKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgdmVydF9tZXRyaWNzX3NpemU7CisKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgbnVtX2xvY2F0aW9uczsgLyogaW4gYnJva2VuIFRURiwgZ2lkID4gMHhGRkZGICovCisgICAgRlRfQnl0ZSogICAgICAgICAgICAgIGdseXBoX2xvY2F0aW9uczsKKworICAgIEZUX0J5dGUqICAgICAgICAgICAgICBoZG14X3RhYmxlOworICAgIEZUX1VMb25nICAgICAgICAgICAgICBoZG14X3RhYmxlX3NpemU7CisgICAgRlRfVUludCAgICAgICAgICAgICAgIGhkbXhfcmVjb3JkX2NvdW50OworICAgIEZUX1VMb25nICAgICAgICAgICAgICBoZG14X3JlY29yZF9zaXplOworICAgIEZUX0J5dGUqICAgICAgICAgICAgICBoZG14X3JlY29yZF9zaXplczsKKworICAgIEZUX0J5dGUqICAgICAgICAgICAgICBzYml0X3RhYmxlOworICAgIEZUX1VMb25nICAgICAgICAgICAgICBzYml0X3RhYmxlX3NpemU7CisgICAgRlRfVUludCAgICAgICAgICAgICAgIHNiaXRfbnVtX3N0cmlrZXM7CisKKyAgICBGVF9CeXRlKiAgICAgICAgICAgICAga2Vybl90YWJsZTsKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAga2Vybl90YWJsZV9zaXplOworICAgIEZUX1VJbnQgICAgICAgICAgICAgICBudW1fa2Vybl90YWJsZXM7CisgICAgRlRfVUludDMyICAgICAgICAgICAgIGtlcm5fYXZhaWxfYml0czsKKyAgICBGVF9VSW50MzIgICAgICAgICAgICAga2Vybl9vcmRlcl9iaXRzOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9CREYKKyAgICBUVF9CREZSZWMgICAgICAgICAgICAgYmRmOworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fQkRGICovCisKKyAgICAvKiBzaW5jZSAyLjMuMCAqLworICAgIEZUX1VMb25nICAgICAgICAgICAgICBob3J6X21ldHJpY3Nfb2Zmc2V0OworICAgIEZUX1VMb25nICAgICAgICAgICAgICB2ZXJ0X21ldHJpY3Nfb2Zmc2V0OworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgLyogc2luY2UgMi40LjEyICovCisgICAgRlRfVUxvbmcgICAgICAgICAgICAgIHNwaF9mb3VuZF9mdW5jX2ZsYWdzOyAvKiBzcGVjaWFsIGZ1bmN0aW9ucyBmb3VuZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIHRoaXMgZmFjZSAgICAgICAgICAgKi8KKyAgICBGVF9Cb29sICAgICAgICAgICAgICAgc3BoX2NvbXBhdGliaWxpdHlfbW9kZTsKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICB9IFRUX0ZhY2VSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgVFRfR2x5cGhab25lUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgQSBnbHlwaCB6b25lIGlzIHVzZWQgdG8gbG9hZCwgc2NhbGUgYW5kIGhpbnQgZ2x5cGggb3V0bGluZSAgICAgICAgKi8KKyAgLyogICAgIGNvb3JkaW5hdGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIG1lbW9yeSAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgbWVtb3J5IG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgbWF4X3BvaW50cyAgIDo6IFRoZSBtYXhpbXVtIHNpemUgaW4gcG9pbnRzIG9mIHRoZSB6b25lLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBtYXhfY29udG91cnMgOjogTWF4IHNpemUgaW4gbGlua3MgY29udG91cnMgb2YgdGhlIHpvbmUuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIG5fcG9pbnRzICAgICA6OiBUaGUgY3VycmVudCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSB6b25lLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgbl9jb250b3VycyAgIDo6IFRoZSBjdXJyZW50IG51bWJlciBvZiBjb250b3VycyBpbiB0aGUgem9uZS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBvcmcgICAgICAgICAgOjogVGhlIG9yaWdpbmFsIGdseXBoIGNvb3JkaW5hdGVzIChmb250ICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIHVuaXRzL3NjYWxlZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBjdXIgICAgICAgICAgOjogVGhlIGN1cnJlbnQgZ2x5cGggY29vcmRpbmF0ZXMgKHNjYWxlZC9oaW50ZWQpLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIHRhZ3MgICAgICAgICA6OiBUaGUgcG9pbnQgY29udHJvbCB0YWdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgY29udG91cnMgICAgIDo6IFRoZSBjb250b3VycyBlbmQgcG9pbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBmaXJzdF9wb2ludCAgOjogT2Zmc2V0IG9mIHRoZSBjdXJyZW50IHN1YmdseXBoJ3MgZmlyc3QgcG9pbnQuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX0dseXBoWm9uZVJlY18KKyAgeworICAgIEZUX01lbW9yeSAgIG1lbW9yeTsKKyAgICBGVF9VU2hvcnQgICBtYXhfcG9pbnRzOworICAgIEZUX1VTaG9ydCAgIG1heF9jb250b3VyczsKKyAgICBGVF9VU2hvcnQgICBuX3BvaW50czsgICAgLyogbnVtYmVyIG9mIHBvaW50cyBpbiB6b25lICAgICovCisgICAgRlRfU2hvcnQgICAgbl9jb250b3VyczsgIC8qIG51bWJlciBvZiBjb250b3VycyAgICAgICAgICAqLworCisgICAgRlRfVmVjdG9yKiAgb3JnOyAgICAgICAgIC8qIG9yaWdpbmFsIHBvaW50IGNvb3JkaW5hdGVzICAqLworICAgIEZUX1ZlY3RvciogIGN1cjsgICAgICAgICAvKiBjdXJyZW50IHBvaW50IGNvb3JkaW5hdGVzICAgKi8KKyAgICBGVF9WZWN0b3IqICBvcnVzOyAgICAgICAgLyogb3JpZ2luYWwgKHVuc2NhbGVkKSBwb2ludCBjb29yZGluYXRlcyAqLworCisgICAgRlRfQnl0ZSogICAgdGFnczsgICAgICAgIC8qIGN1cnJlbnQgdG91Y2ggZmxhZ3MgICAgICAgICAqLworICAgIEZUX1VTaG9ydCogIGNvbnRvdXJzOyAgICAvKiBjb250b3VyIGVuZCBwb2ludHMgICAgICAgICAgKi8KKworICAgIEZUX1VTaG9ydCAgIGZpcnN0X3BvaW50OyAvKiBvZmZzZXQgb2YgZmlyc3QgKCMwKSBwb2ludCAgKi8KKworICB9IFRUX0dseXBoWm9uZVJlYywgKlRUX0dseXBoWm9uZTsKKworCisgIC8qIGhhbmRsZSB0byBleGVjdXRpb24gY29udGV4dCAqLworICB0eXBlZGVmIHN0cnVjdCBUVF9FeGVjQ29udGV4dFJlY18qICBUVF9FeGVjQ29udGV4dDsKKworICAvKiBnbHlwaCBsb2FkZXIgc3RydWN0dXJlICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9Mb2FkZXJSZWNfCisgIHsKKyAgICBGVF9GYWNlICAgICAgICAgIGZhY2U7CisgICAgRlRfU2l6ZSAgICAgICAgICBzaXplOworICAgIEZUX0dseXBoU2xvdCAgICAgZ2x5cGg7CisgICAgRlRfR2x5cGhMb2FkZXIgICBnbG9hZGVyOworCisgICAgRlRfVUxvbmcgICAgICAgICBsb2FkX2ZsYWdzOworICAgIEZUX1VJbnQgICAgICAgICAgZ2x5cGhfaW5kZXg7CisKKyAgICBGVF9TdHJlYW0gICAgICAgIHN0cmVhbTsKKyAgICBGVF9JbnQgICAgICAgICAgIGJ5dGVfbGVuOworCisgICAgRlRfU2hvcnQgICAgICAgICBuX2NvbnRvdXJzOworICAgIEZUX0JCb3ggICAgICAgICAgYmJveDsKKyAgICBGVF9JbnQgICAgICAgICAgIGxlZnRfYmVhcmluZzsKKyAgICBGVF9JbnQgICAgICAgICAgIGFkdmFuY2U7CisgICAgRlRfSW50ICAgICAgICAgICBsaW5lYXI7CisgICAgRlRfQm9vbCAgICAgICAgICBsaW5lYXJfZGVmOworICAgIEZUX0Jvb2wgICAgICAgICAgcHJlc2VydmVfcHBzOworICAgIEZUX1ZlY3RvciAgICAgICAgcHAxOworICAgIEZUX1ZlY3RvciAgICAgICAgcHAyOworCisgICAgRlRfVUxvbmcgICAgICAgICBnbHlmX29mZnNldDsKKworICAgIC8qIHRoZSB6b25lIHdoZXJlIHdlIGxvYWQgb3VyIGdseXBocyAqLworICAgIFRUX0dseXBoWm9uZVJlYyAgYmFzZTsKKyAgICBUVF9HbHlwaFpvbmVSZWMgIHpvbmU7CisKKyAgICBUVF9FeGVjQ29udGV4dCAgIGV4ZWM7CisgICAgRlRfQnl0ZSogICAgICAgICBpbnN0cnVjdGlvbnM7CisgICAgRlRfVUxvbmcgICAgICAgICBpbnNfcG9zOworCisgICAgLyogZm9yIHBvc3NpYmxlIGV4dGVuc2liaWxpdHkgaW4gb3RoZXIgZm9ybWF0cyAqLworICAgIHZvaWQqICAgICAgICAgICAgb3RoZXI7CisKKyAgICAvKiBzaW5jZSB2ZXJzaW9uIDIuMS44ICovCisgICAgRlRfSW50ICAgICAgICAgICB0b3BfYmVhcmluZzsKKyAgICBGVF9JbnQgICAgICAgICAgIHZhZHZhbmNlOworICAgIEZUX1ZlY3RvciAgICAgICAgcHAzOworICAgIEZUX1ZlY3RvciAgICAgICAgcHA0OworCisgICAgLyogc2luY2UgdmVyc2lvbiAyLjIuMSAqLworICAgIEZUX0J5dGUqICAgICAgICAgY3Vyc29yOworICAgIEZUX0J5dGUqICAgICAgICAgbGltaXQ7CisKKyAgfSBUVF9Mb2FkZXJSZWM7CisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UVFRZUEVTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS90MXRhYmxlcy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS90MXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MzAwOTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL3QxdGFibGVzLmgKQEAgLTAsMCArMSw2NjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHQxdGFibGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBCYXNpYyBUeXBlIDEvVHlwZSAyIHRhYmxlcyBkZWZpbml0aW9ucyBhbmQgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uICAqLworLyogICAgb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNCwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UMVRBQkxFU19IX18KKyNkZWZpbmUgX19UMVRBQkxFU19IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR5cGUxX3RhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFR5cGUgMSBUYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFR5cGV+MSAoUG9zdFNjcmlwdCkgc3BlY2lmaWMgZm9udCB0YWJsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiBUeXBlIDEtc3BlY2lmaWMgdGFibGVzLCAgICAqLworICAvKiAgICBpbmNsdWRpbmcgc3RydWN0dXJlcyByZWxhdGVkIHRvIG90aGVyIFBvc3RTY3JpcHQgZm9udCBmb3JtYXRzLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyogTm90ZSB0aGF0IHdlIHNlcGFyYXRlIGZvbnQgZGF0YSBpbiBQU19Gb250SW5mb1JlYyBhbmQgUFNfUHJpdmF0ZVJlYyAqLworICAvKiBzdHJ1Y3R1cmVzIGluIG9yZGVyIHRvIHN1cHBvcnQgTXVsdGlwbGUgTWFzdGVyIGZvbnRzLiAgICAgICAgICAgICAgICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQU19Gb250SW5mb1JlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgVHlwZX4xIG9yIFR5cGV+MiBGb250SW5mbyBkaWN0aW9uYXJ5LiAgKi8KKyAgLyogICAgTm90ZSB0aGF0IGZvciBNdWx0aXBsZSBNYXN0ZXIgZm9udHMsIGVhY2ggaW5zdGFuY2UgaGFzIGl0cyBvd24gICAgICovCisgIC8qICAgIEZvbnRJbmZvIGRpY3Rpb25hcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTX0ZvbnRJbmZvUmVjXworICB7CisgICAgRlRfU3RyaW5nKiAgdmVyc2lvbjsKKyAgICBGVF9TdHJpbmcqICBub3RpY2U7CisgICAgRlRfU3RyaW5nKiAgZnVsbF9uYW1lOworICAgIEZUX1N0cmluZyogIGZhbWlseV9uYW1lOworICAgIEZUX1N0cmluZyogIHdlaWdodDsKKyAgICBGVF9Mb25nICAgICBpdGFsaWNfYW5nbGU7CisgICAgRlRfQm9vbCAgICAgaXNfZml4ZWRfcGl0Y2g7CisgICAgRlRfU2hvcnQgICAgdW5kZXJsaW5lX3Bvc2l0aW9uOworICAgIEZUX1VTaG9ydCAgIHVuZGVybGluZV90aGlja25lc3M7CisKKyAgfSBQU19Gb250SW5mb1JlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBTX0ZvbnRJbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgQFBTX0ZvbnRJbmZvUmVjIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgUFNfRm9udEluZm9SZWNfKiAgUFNfRm9udEluZm87CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUMV9Gb250SW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHR5cGUgaXMgZXF1aXZhbGVudCB0byBAUFNfRm9udEluZm9SZWMuICBJdCBpcyBkZXByZWNhdGVkIGJ1dCAgKi8KKyAgLyogICAga2VwdCB0byBtYWludGFpbiBzb3VyY2UgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIHZhcmlvdXMgdmVyc2lvbnMgb2YgICovCisgIC8qICAgIEZyZWVUeXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBQU19Gb250SW5mb1JlYyAgVDFfRm9udEluZm87CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQU19Qcml2YXRlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgVHlwZX4xIG9yIFR5cGV+MiBwcml2YXRlIGRpY3Rpb25hcnkuICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IGZvciBNdWx0aXBsZSBNYXN0ZXIgZm9udHMsIGVhY2ggaW5zdGFuY2UgaGFzIGl0cyBvd24gICAgICovCisgIC8qICAgIFByaXZhdGUgZGljdGlvbmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTX1ByaXZhdGVSZWNfCisgIHsKKyAgICBGVF9JbnQgICAgIHVuaXF1ZV9pZDsKKyAgICBGVF9JbnQgICAgIGxlbklWOworCisgICAgRlRfQnl0ZSAgICBudW1fYmx1ZV92YWx1ZXM7CisgICAgRlRfQnl0ZSAgICBudW1fb3RoZXJfYmx1ZXM7CisgICAgRlRfQnl0ZSAgICBudW1fZmFtaWx5X2JsdWVzOworICAgIEZUX0J5dGUgICAgbnVtX2ZhbWlseV9vdGhlcl9ibHVlczsKKworICAgIEZUX1Nob3J0ICAgYmx1ZV92YWx1ZXNbMTRdOworICAgIEZUX1Nob3J0ICAgb3RoZXJfYmx1ZXNbMTBdOworCisgICAgRlRfU2hvcnQgICBmYW1pbHlfYmx1ZXMgICAgICBbMTRdOworICAgIEZUX1Nob3J0ICAgZmFtaWx5X290aGVyX2JsdWVzWzEwXTsKKworICAgIEZUX0ZpeGVkICAgYmx1ZV9zY2FsZTsKKyAgICBGVF9JbnQgICAgIGJsdWVfc2hpZnQ7CisgICAgRlRfSW50ICAgICBibHVlX2Z1eno7CisKKyAgICBGVF9VU2hvcnQgIHN0YW5kYXJkX3dpZHRoWzFdOworICAgIEZUX1VTaG9ydCAgc3RhbmRhcmRfaGVpZ2h0WzFdOworCisgICAgRlRfQnl0ZSAgICBudW1fc25hcF93aWR0aHM7CisgICAgRlRfQnl0ZSAgICBudW1fc25hcF9oZWlnaHRzOworICAgIEZUX0Jvb2wgICAgZm9yY2VfYm9sZDsKKyAgICBGVF9Cb29sICAgIHJvdW5kX3N0ZW1fdXA7CisKKyAgICBGVF9TaG9ydCAgIHNuYXBfd2lkdGhzIFsxM107ICAvKiBpbmNsdWRpbmcgc3RkIHdpZHRoICAqLworICAgIEZUX1Nob3J0ICAgc25hcF9oZWlnaHRzWzEzXTsgIC8qIGluY2x1ZGluZyBzdGQgaGVpZ2h0ICovCisKKyAgICBGVF9GaXhlZCAgIGV4cGFuc2lvbl9mYWN0b3I7CisKKyAgICBGVF9Mb25nICAgIGxhbmd1YWdlX2dyb3VwOworICAgIEZUX0xvbmcgICAgcGFzc3dvcmQ7CisKKyAgICBGVF9TaG9ydCAgIG1pbl9mZWF0dXJlWzJdOworCisgIH0gUFNfUHJpdmF0ZVJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBTX1ByaXZhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgQFBTX1ByaXZhdGVSZWMgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgUFNfUHJpdmF0ZVJlY18qICBQU19Qcml2YXRlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVDFfUHJpdmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUaGlzIHR5cGUgaXMgZXF1aXZhbGVudCB0byBAUFNfUHJpdmF0ZVJlYy4gIEl0IGlzIGRlcHJlY2F0ZWQgYnV0ICAgICovCisgIC8qICAga2VwdCB0byBtYWludGFpbiBzb3VyY2UgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIHZhcmlvdXMgdmVyc2lvbnMgb2YgICAqLworICAvKiAgIEZyZWVUeXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgUFNfUHJpdmF0ZVJlYyAgVDFfUHJpdmF0ZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFQxX0JsZW5kX0ZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2V0IG9mIGZsYWdzIHVzZWQgdG8gaW5kaWNhdGUgd2hpY2ggZmllbGRzIGFyZSBwcmVzZW50IGluIGEgICAgICAqLworICAvKiAgICBnaXZlbiBibGVuZCBkaWN0aW9uYXJ5IChmb250IGluZm8gb3IgcHJpdmF0ZSkuICBVc2VkIHRvIHN1cHBvcnQgICAgKi8KKyAgLyogICAgTXVsdGlwbGUgTWFzdGVycyBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIFQxX0JsZW5kX0ZsYWdzXworICB7CisgICAgLyojIHJlcXVpcmVkIGZpZWxkcyBpbiBhIEZvbnRJbmZvIGJsZW5kIGRpY3Rpb25hcnkgKi8KKyAgICBUMV9CTEVORF9VTkRFUkxJTkVfUE9TSVRJT04gPSAwLAorICAgIFQxX0JMRU5EX1VOREVSTElORV9USElDS05FU1MsCisgICAgVDFfQkxFTkRfSVRBTElDX0FOR0xFLAorCisgICAgLyojIHJlcXVpcmVkIGZpZWxkcyBpbiBhIFByaXZhdGUgYmxlbmQgZGljdGlvbmFyeSAqLworICAgIFQxX0JMRU5EX0JMVUVfVkFMVUVTLAorICAgIFQxX0JMRU5EX09USEVSX0JMVUVTLAorICAgIFQxX0JMRU5EX1NUQU5EQVJEX1dJRFRILAorICAgIFQxX0JMRU5EX1NUQU5EQVJEX0hFSUdIVCwKKyAgICBUMV9CTEVORF9TVEVNX1NOQVBfV0lEVEhTLAorICAgIFQxX0JMRU5EX1NURU1fU05BUF9IRUlHSFRTLAorICAgIFQxX0JMRU5EX0JMVUVfU0NBTEUsCisgICAgVDFfQkxFTkRfQkxVRV9TSElGVCwKKyAgICBUMV9CTEVORF9GQU1JTFlfQkxVRVMsCisgICAgVDFfQkxFTkRfRkFNSUxZX09USEVSX0JMVUVTLAorICAgIFQxX0JMRU5EX0ZPUkNFX0JPTEQsCisKKyAgICAvKiMgbmV2ZXIgcmVtb3ZlICovCisgICAgVDFfQkxFTkRfTUFYCisKKyAgfSBUMV9CbGVuZF9GbGFnczsKKworICAvKiAqLworCisKKyAgLyojIGJhY2t3YXJkcyBjb21wYXRpYmxlIGRlZmluaXRpb25zICovCisjZGVmaW5lIHQxX2JsZW5kX3VuZGVybGluZV9wb3NpdGlvbiAgIFQxX0JMRU5EX1VOREVSTElORV9QT1NJVElPTgorI2RlZmluZSB0MV9ibGVuZF91bmRlcmxpbmVfdGhpY2tuZXNzICBUMV9CTEVORF9VTkRFUkxJTkVfVEhJQ0tORVNTCisjZGVmaW5lIHQxX2JsZW5kX2l0YWxpY19hbmdsZSAgICAgICAgIFQxX0JMRU5EX0lUQUxJQ19BTkdMRQorI2RlZmluZSB0MV9ibGVuZF9ibHVlX3ZhbHVlcyAgICAgICAgICBUMV9CTEVORF9CTFVFX1ZBTFVFUworI2RlZmluZSB0MV9ibGVuZF9vdGhlcl9ibHVlcyAgICAgICAgICBUMV9CTEVORF9PVEhFUl9CTFVFUworI2RlZmluZSB0MV9ibGVuZF9zdGFuZGFyZF93aWR0aHMgICAgICBUMV9CTEVORF9TVEFOREFSRF9XSURUSAorI2RlZmluZSB0MV9ibGVuZF9zdGFuZGFyZF9oZWlnaHQgICAgICBUMV9CTEVORF9TVEFOREFSRF9IRUlHSFQKKyNkZWZpbmUgdDFfYmxlbmRfc3RlbV9zbmFwX3dpZHRocyAgICAgVDFfQkxFTkRfU1RFTV9TTkFQX1dJRFRIUworI2RlZmluZSB0MV9ibGVuZF9zdGVtX3NuYXBfaGVpZ2h0cyAgICBUMV9CTEVORF9TVEVNX1NOQVBfSEVJR0hUUworI2RlZmluZSB0MV9ibGVuZF9ibHVlX3NjYWxlICAgICAgICAgICBUMV9CTEVORF9CTFVFX1NDQUxFCisjZGVmaW5lIHQxX2JsZW5kX2JsdWVfc2hpZnQgICAgICAgICAgIFQxX0JMRU5EX0JMVUVfU0hJRlQKKyNkZWZpbmUgdDFfYmxlbmRfZmFtaWx5X2JsdWVzICAgICAgICAgVDFfQkxFTkRfRkFNSUxZX0JMVUVTCisjZGVmaW5lIHQxX2JsZW5kX2ZhbWlseV9vdGhlcl9ibHVlcyAgIFQxX0JMRU5EX0ZBTUlMWV9PVEhFUl9CTFVFUworI2RlZmluZSB0MV9ibGVuZF9mb3JjZV9ib2xkICAgICAgICAgICBUMV9CTEVORF9GT1JDRV9CT0xECisjZGVmaW5lIHQxX2JsZW5kX21heCAgICAgICAgICAgICAgICAgIFQxX0JMRU5EX01BWAorCisKKyAgLyogbWF4aW11bSBudW1iZXIgb2YgTXVsdGlwbGUgTWFzdGVycyBkZXNpZ25zLCBhcyBkZWZpbmVkIGluIHRoZSBzcGVjICovCisjZGVmaW5lIFQxX01BWF9NTV9ERVNJR05TICAgICAxNgorCisgIC8qIG1heGltdW0gbnVtYmVyIG9mIE11bHRpcGxlIE1hc3RlcnMgYXhlcywgYXMgZGVmaW5lZCBpbiB0aGUgc3BlYyAqLworI2RlZmluZSBUMV9NQVhfTU1fQVhJUyAgICAgICAgNAorCisgIC8qIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgZGVzaWduIG1hcCAqLworI2RlZmluZSBUMV9NQVhfTU1fTUFQX1BPSU5UUyAgMjAKKworCisgIC8qIHRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gc3RvcmUgdGhlIEJsZW5kRGVzaWduTWFwIGVudHJ5IGZvciBhbiBheGlzICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19EZXNpZ25NYXBfCisgIHsKKyAgICBGVF9CeXRlICAgIG51bV9wb2ludHM7CisgICAgRlRfTG9uZyogICBkZXNpZ25fcG9pbnRzOworICAgIEZUX0ZpeGVkKiAgYmxlbmRfcG9pbnRzOworCisgIH0gUFNfRGVzaWduTWFwUmVjLCAqUFNfRGVzaWduTWFwOworCisgIC8qIGJhY2t3YXJkcy1jb21wYXRpYmxlIGRlZmluaXRpb24gKi8KKyAgdHlwZWRlZiBQU19EZXNpZ25NYXBSZWMgIFQxX0Rlc2lnbk1hcDsKKworCisgIHR5cGVkZWYgc3RydWN0ICBQU19CbGVuZFJlY18KKyAgeworICAgIEZUX1VJbnQgICAgICAgICAgbnVtX2Rlc2lnbnM7CisgICAgRlRfVUludCAgICAgICAgICBudW1fYXhpczsKKworICAgIEZUX1N0cmluZyogICAgICAgYXhpc19uYW1lc1tUMV9NQVhfTU1fQVhJU107CisgICAgRlRfRml4ZWQqICAgICAgICBkZXNpZ25fcG9zW1QxX01BWF9NTV9ERVNJR05TXTsKKyAgICBQU19EZXNpZ25NYXBSZWMgIGRlc2lnbl9tYXBbVDFfTUFYX01NX0FYSVNdOworCisgICAgRlRfRml4ZWQqICAgICAgICB3ZWlnaHRfdmVjdG9yOworICAgIEZUX0ZpeGVkKiAgICAgICAgZGVmYXVsdF93ZWlnaHRfdmVjdG9yOworCisgICAgUFNfRm9udEluZm8gICAgICBmb250X2luZm9zW1QxX01BWF9NTV9ERVNJR05TICsgMV07CisgICAgUFNfUHJpdmF0ZSAgICAgICBwcml2YXRlcyAgW1QxX01BWF9NTV9ERVNJR05TICsgMV07CisKKyAgICBGVF9VTG9uZyAgICAgICAgIGJsZW5kX2JpdGZsYWdzOworCisgICAgRlRfQkJveCogICAgICAgICBiYm94ZXMgICAgW1QxX01BWF9NTV9ERVNJR05TICsgMV07CisKKyAgICAvKiBzaW5jZSAyLjMuMCAqLworCisgICAgLyogdW5kb2N1bWVudGVkLCBvcHRpb25hbDogdGhlIGRlZmF1bHQgZGVzaWduIGluc3RhbmNlOyAgICovCisgICAgLyogY29ycmVzcG9uZHMgdG8gZGVmYXVsdF93ZWlnaHRfdmVjdG9yIC0tICAgICAgICAgICAgICAgICovCisgICAgLyogbnVtX2RlZmF1bHRfZGVzaWduX3ZlY3RvciA9PSAwIG1lYW5zIGl0IGlzIG5vdCBwcmVzZW50ICovCisgICAgLyogaW4gdGhlIGZvbnQgYW5kIGFzc29jaWF0ZWQgbWV0cmljcyBmaWxlcyAgICAgICAgICAgICAgICovCisgICAgRlRfVUludCAgICAgICAgICBkZWZhdWx0X2Rlc2lnbl92ZWN0b3JbVDFfTUFYX01NX0RFU0lHTlNdOworICAgIEZUX1VJbnQgICAgICAgICAgbnVtX2RlZmF1bHRfZGVzaWduX3ZlY3RvcjsKKworICB9IFBTX0JsZW5kUmVjLCAqUFNfQmxlbmQ7CisKKworICAvKiBiYWNrd2FyZHMtY29tcGF0aWJsZSBkZWZpbml0aW9uICovCisgIHR5cGVkZWYgUFNfQmxlbmRSZWMgIFQxX0JsZW5kOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ0lEX0ZhY2VEaWN0UmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byByZXByZXNlbnQgZGF0YSBpbiBhIENJRCB0b3AtbGV2ZWwgZGljdGlvbmFyeS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgQ0lEX0ZhY2VEaWN0UmVjXworICB7CisgICAgUFNfUHJpdmF0ZVJlYyAgcHJpdmF0ZV9kaWN0OworCisgICAgRlRfVUludCAgICAgICAgbGVuX2J1aWxkY2hhcjsKKyAgICBGVF9GaXhlZCAgICAgICBmb3JjZWJvbGRfdGhyZXNob2xkOworICAgIEZUX1BvcyAgICAgICAgIHN0cm9rZV93aWR0aDsKKyAgICBGVF9GaXhlZCAgICAgICBleHBhbnNpb25fZmFjdG9yOworCisgICAgRlRfQnl0ZSAgICAgICAgcGFpbnRfdHlwZTsKKyAgICBGVF9CeXRlICAgICAgICBmb250X3R5cGU7CisgICAgRlRfTWF0cml4ICAgICAgZm9udF9tYXRyaXg7CisgICAgRlRfVmVjdG9yICAgICAgZm9udF9vZmZzZXQ7CisKKyAgICBGVF9VSW50ICAgICAgICBudW1fc3VicnM7CisgICAgRlRfVUxvbmcgICAgICAgc3Vicm1hcF9vZmZzZXQ7CisgICAgRlRfSW50ICAgICAgICAgc2RfYnl0ZXM7CisKKyAgfSBDSURfRmFjZURpY3RSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDSURfRmFjZURpY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIEBDSURfRmFjZURpY3RSZWMgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IENJRF9GYWNlRGljdFJlY18qICBDSURfRmFjZURpY3Q7CisKKyAgLyogKi8KKworCisgIC8qIGJhY2t3YXJkcy1jb21wYXRpYmxlIGRlZmluaXRpb24gKi8KKyAgdHlwZWRlZiBDSURfRmFjZURpY3RSZWMgIENJRF9Gb250RGljdDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENJRF9GYWNlSW5mb1JlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gcmVwcmVzZW50IENJRCBGYWNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIENJRF9GYWNlSW5mb1JlY18KKyAgeworICAgIEZUX1N0cmluZyogICAgICBjaWRfZm9udF9uYW1lOworICAgIEZUX0ZpeGVkICAgICAgICBjaWRfdmVyc2lvbjsKKyAgICBGVF9JbnQgICAgICAgICAgY2lkX2ZvbnRfdHlwZTsKKworICAgIEZUX1N0cmluZyogICAgICByZWdpc3RyeTsKKyAgICBGVF9TdHJpbmcqICAgICAgb3JkZXJpbmc7CisgICAgRlRfSW50ICAgICAgICAgIHN1cHBsZW1lbnQ7CisKKyAgICBQU19Gb250SW5mb1JlYyAgZm9udF9pbmZvOworICAgIEZUX0JCb3ggICAgICAgICBmb250X2Jib3g7CisgICAgRlRfVUxvbmcgICAgICAgIHVpZF9iYXNlOworCisgICAgRlRfSW50ICAgICAgICAgIG51bV94dWlkOworICAgIEZUX1VMb25nICAgICAgICB4dWlkWzE2XTsKKworICAgIEZUX1VMb25nICAgICAgICBjaWRtYXBfb2Zmc2V0OworICAgIEZUX0ludCAgICAgICAgICBmZF9ieXRlczsKKyAgICBGVF9JbnQgICAgICAgICAgZ2RfYnl0ZXM7CisgICAgRlRfVUxvbmcgICAgICAgIGNpZF9jb3VudDsKKworICAgIEZUX0ludCAgICAgICAgICBudW1fZGljdHM7CisgICAgQ0lEX0ZhY2VEaWN0ICAgIGZvbnRfZGljdHM7CisKKyAgICBGVF9VTG9uZyAgICAgICAgZGF0YV9vZmZzZXQ7CisKKyAgfSBDSURfRmFjZUluZm9SZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDSURfRmFjZUluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIEBDSURfRmFjZUluZm9SZWMgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IENJRF9GYWNlSW5mb1JlY18qICBDSURfRmFjZUluZm87CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDSURfSW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFRoaXMgdHlwZSBpcyBlcXVpdmFsZW50IHRvIEBDSURfRmFjZUluZm9SZWMuICBJdCBpcyBkZXByZWNhdGVkIGJ1dCAgKi8KKyAgLyogICBrZXB0IHRvIG1haW50YWluIHNvdXJjZSBjb21wYXRpYmlsaXR5IGJldHdlZW4gdmFyaW91cyB2ZXJzaW9ucyBvZiAgICovCisgIC8qICAgRnJlZVR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBDSURfRmFjZUluZm9SZWMgIENJRF9JbmZvOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgIEZUX0hhc19QU19HbHlwaF9OYW1lcworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgIFJldHVybiB0cnVlIGlmIGEgZ2l2ZW4gZmFjZSBwcm92aWRlcyByZWxpYWJsZSBQb3N0U2NyaXB0IGdseXBoCisgICAqICAgIG5hbWVzLiAgVGhpcyBpcyBzaW1pbGFyIHRvIHVzaW5nIHRoZSBARlRfSEFTX0dMWVBIX05BTUVTIG1hY3JvLAorICAgKiAgICBleGNlcHQgdGhhdCBjZXJ0YWluIGZvbnRzIChtb3N0bHkgVHJ1ZVR5cGUpIGNvbnRhaW4gaW5jb3JyZWN0CisgICAqICAgIGdseXBoIG5hbWUgdGFibGVzLgorICAgKgorICAgKiAgICBXaGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGUgY2FsbGVyIGlzIHN1cmUgdGhhdCB0aGUgZ2x5cGgKKyAgICogICAgbmFtZXMgcmV0dXJuZWQgYnkgQEZUX0dldF9HbHlwaF9OYW1lIGFyZSByZWxpYWJsZS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgICBmYWNlIDo6CisgICAqICAgICAgIGZhY2UgaGFuZGxlCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgIEJvb2xlYW4uICBUcnVlIGlmIGdseXBoIG5hbWVzIGFyZSByZWxpYWJsZS4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfSW50ICkKKyAgRlRfSGFzX1BTX0dseXBoX05hbWVzKCBGVF9GYWNlICBmYWNlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICAgRlRfR2V0X1BTX0ZvbnRfSW5mbworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgIFJldHJpZXZlIHRoZSBAUFNfRm9udEluZm9SZWMgc3RydWN0dXJlIGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbgorICAgKiAgICBQb3N0U2NyaXB0IGZvbnQuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICAgZmFjZSA6OgorICAgKiAgICAgICBQb3N0U2NyaXB0IGZhY2UgaGFuZGxlLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgICBhZm9udF9pbmZvIDo6CisgICAqICAgICAgIE91dHB1dCBmb250IGluZm8gc3RydWN0dXJlIHBvaW50ZXIuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgICBUaGUgc3RyaW5nIHBvaW50ZXJzIHdpdGhpbiB0aGUgZm9udCBpbmZvIHN0cnVjdHVyZSBhcmUgb3duZWQgYnkKKyAgICogICAgdGhlIGZhY2UgYW5kIGRvbid0IG5lZWQgdG8gYmUgZnJlZWQgYnkgdGhlIGNhbGxlci4KKyAgICoKKyAgICogICAgSWYgdGhlIGZvbnQncyBmb3JtYXQgaXMgbm90IFBvc3RTY3JpcHQtYmFzZWQsIHRoaXMgZnVuY3Rpb24gd2lsbAorICAgKiAgICByZXR1cm4gdGhlIGBGVF9FcnJfSW52YWxpZF9Bcmd1bWVudCcgZXJyb3IgY29kZS4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfUFNfRm9udF9JbmZvKCBGVF9GYWNlICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUFNfRm9udEluZm8gIGFmb250X2luZm8gKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgICBGVF9HZXRfUFNfRm9udF9Qcml2YXRlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgUmV0cmlldmUgdGhlIEBQU19Qcml2YXRlUmVjIHN0cnVjdHVyZSBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4KKyAgICogICAgUG9zdFNjcmlwdCBmb250LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgIGZhY2UgOjoKKyAgICogICAgICAgUG9zdFNjcmlwdCBmYWNlIGhhbmRsZS4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICAgYWZvbnRfcHJpdmF0ZSA6OgorICAgKiAgICAgICBPdXRwdXQgcHJpdmF0ZSBkaWN0aW9uYXJ5IHN0cnVjdHVyZSBwb2ludGVyLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICAgVGhlIHN0cmluZyBwb2ludGVycyB3aXRoaW4gdGhlIEBQU19Qcml2YXRlUmVjIHN0cnVjdHVyZSBhcmUgb3duZWQgYnkKKyAgICogICAgdGhlIGZhY2UgYW5kIGRvbid0IG5lZWQgdG8gYmUgZnJlZWQgYnkgdGhlIGNhbGxlci4KKyAgICoKKyAgICogICAgSWYgdGhlIGZvbnQncyBmb3JtYXQgaXMgbm90IFBvc3RTY3JpcHQtYmFzZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucworICAgKiAgICB0aGUgYEZUX0Vycl9JbnZhbGlkX0FyZ3VtZW50JyBlcnJvciBjb2RlLgorICAgKgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9QU19Gb250X1ByaXZhdGUoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBTX1ByaXZhdGUgIGFmb250X3ByaXZhdGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFQxX0VuY29kaW5nVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgdGhlIGBFbmNvZGluZycgZW50cnkgaW4gYSBUeXBlIDEgICAgICAgICAqLworICAvKiAgICBkaWN0aW9uYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgZW51bSAgVDFfRW5jb2RpbmdUeXBlXworICB7CisgICAgVDFfRU5DT0RJTkdfVFlQRV9OT05FID0gMCwKKyAgICBUMV9FTkNPRElOR19UWVBFX0FSUkFZLAorICAgIFQxX0VOQ09ESU5HX1RZUEVfU1RBTkRBUkQsCisgICAgVDFfRU5DT0RJTkdfVFlQRV9JU09MQVRJTjEsCisgICAgVDFfRU5DT0RJTkdfVFlQRV9FWFBFUlQKKworICB9IFQxX0VuY29kaW5nVHlwZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBTX0RpY3RfS2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIHVzZWQgaW4gY2FsbHMgdG8gQEZUX0dldF9QU19Gb250X1ZhbHVlIHRvIGlkZW50aWZ5ICAqLworICAvKiAgICB0aGUgVHlwZX4xIGRpY3Rpb25hcnkgZW50cnkgdG8gcmV0cmlldmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgZW51bSAgUFNfRGljdF9LZXlzXworICB7CisgICAgLyogY29udmVudGlvbmFsbHkgaW4gdGhlIGZvbnQgZGljdGlvbmFyeSAqLworICAgIFBTX0RJQ1RfRk9OVF9UWVBFLCAgICAgICAgICAgICAgLyogRlRfQnl0ZSAgICAgICAgICovCisgICAgUFNfRElDVF9GT05UX01BVFJJWCwgICAgICAgICAgICAvKiBGVF9GaXhlZCAgICAgICAgKi8KKyAgICBQU19ESUNUX0ZPTlRfQkJPWCwgICAgICAgICAgICAgIC8qIEZUX0ZpeGVkICAgICAgICAqLworICAgIFBTX0RJQ1RfUEFJTlRfVFlQRSwgICAgICAgICAgICAgLyogRlRfQnl0ZSAgICAgICAgICovCisgICAgUFNfRElDVF9GT05UX05BTUUsICAgICAgICAgICAgICAvKiBGVF9TdHJpbmcqICAgICAgKi8KKyAgICBQU19ESUNUX1VOSVFVRV9JRCwgICAgICAgICAgICAgIC8qIEZUX0ludCAgICAgICAgICAqLworICAgIFBTX0RJQ1RfTlVNX0NIQVJfU1RSSU5HUywgICAgICAgLyogRlRfSW50ICAgICAgICAgICovCisgICAgUFNfRElDVF9DSEFSX1NUUklOR19LRVksICAgICAgICAvKiBGVF9TdHJpbmcqICAgICAgKi8KKyAgICBQU19ESUNUX0NIQVJfU1RSSU5HLCAgICAgICAgICAgIC8qIEZUX1N0cmluZyogICAgICAqLworICAgIFBTX0RJQ1RfRU5DT0RJTkdfVFlQRSwgICAgICAgICAgLyogVDFfRW5jb2RpbmdUeXBlICovCisgICAgUFNfRElDVF9FTkNPRElOR19FTlRSWSwgICAgICAgICAvKiBGVF9TdHJpbmcqICAgICAgKi8KKworICAgIC8qIGNvbnZlbnRpb25hbGx5IGluIHRoZSBmb250IFByaXZhdGUgZGljdGlvbmFyeSAqLworICAgIFBTX0RJQ1RfTlVNX1NVQlJTLCAgICAgICAgICAgICAgLyogRlRfSW50ICAgICAqLworICAgIFBTX0RJQ1RfU1VCUiwgICAgICAgICAgICAgICAgICAgLyogRlRfU3RyaW5nKiAqLworICAgIFBTX0RJQ1RfU1REX0hXLCAgICAgICAgICAgICAgICAgLyogRlRfVVNob3J0ICAqLworICAgIFBTX0RJQ1RfU1REX1ZXLCAgICAgICAgICAgICAgICAgLyogRlRfVVNob3J0ICAqLworICAgIFBTX0RJQ1RfTlVNX0JMVUVfVkFMVUVTLCAgICAgICAgLyogRlRfQnl0ZSAgICAqLworICAgIFBTX0RJQ1RfQkxVRV9WQUxVRSwgICAgICAgICAgICAgLyogRlRfU2hvcnQgICAqLworICAgIFBTX0RJQ1RfQkxVRV9GVVpaLCAgICAgICAgICAgICAgLyogRlRfSW50ICAgICAqLworICAgIFBTX0RJQ1RfTlVNX09USEVSX0JMVUVTLCAgICAgICAgLyogRlRfQnl0ZSAgICAqLworICAgIFBTX0RJQ1RfT1RIRVJfQkxVRSwgICAgICAgICAgICAgLyogRlRfU2hvcnQgICAqLworICAgIFBTX0RJQ1RfTlVNX0ZBTUlMWV9CTFVFUywgICAgICAgLyogRlRfQnl0ZSAgICAqLworICAgIFBTX0RJQ1RfRkFNSUxZX0JMVUUsICAgICAgICAgICAgLyogRlRfU2hvcnQgICAqLworICAgIFBTX0RJQ1RfTlVNX0ZBTUlMWV9PVEhFUl9CTFVFUywgLyogRlRfQnl0ZSAgICAqLworICAgIFBTX0RJQ1RfRkFNSUxZX09USEVSX0JMVUUsICAgICAgLyogRlRfU2hvcnQgICAqLworICAgIFBTX0RJQ1RfQkxVRV9TQ0FMRSwgICAgICAgICAgICAgLyogRlRfRml4ZWQgICAqLworICAgIFBTX0RJQ1RfQkxVRV9TSElGVCwgICAgICAgICAgICAgLyogRlRfSW50ICAgICAqLworICAgIFBTX0RJQ1RfTlVNX1NURU1fU05BUF9ILCAgICAgICAgLyogRlRfQnl0ZSAgICAqLworICAgIFBTX0RJQ1RfU1RFTV9TTkFQX0gsICAgICAgICAgICAgLyogRlRfU2hvcnQgICAqLworICAgIFBTX0RJQ1RfTlVNX1NURU1fU05BUF9WLCAgICAgICAgLyogRlRfQnl0ZSAgICAqLworICAgIFBTX0RJQ1RfU1RFTV9TTkFQX1YsICAgICAgICAgICAgLyogRlRfU2hvcnQgICAqLworICAgIFBTX0RJQ1RfRk9SQ0VfQk9MRCwgICAgICAgICAgICAgLyogRlRfQm9vbCAgICAqLworICAgIFBTX0RJQ1RfUk5EX1NURU1fVVAsICAgICAgICAgICAgLyogRlRfQm9vbCAgICAqLworICAgIFBTX0RJQ1RfTUlOX0ZFQVRVUkUsICAgICAgICAgICAgLyogRlRfU2hvcnQgICAqLworICAgIFBTX0RJQ1RfTEVOX0lWLCAgICAgICAgICAgICAgICAgLyogRlRfSW50ICAgICAqLworICAgIFBTX0RJQ1RfUEFTU1dPUkQsICAgICAgICAgICAgICAgLyogRlRfTG9uZyAgICAqLworICAgIFBTX0RJQ1RfTEFOR1VBR0VfR1JPVVAsICAgICAgICAgLyogRlRfTG9uZyAgICAqLworCisgICAgLyogY29udmVudGlvbmFsbHkgaW4gdGhlIGZvbnQgRm9udEluZm8gZGljdGlvbmFyeSAqLworICAgIFBTX0RJQ1RfVkVSU0lPTiwgICAgICAgICAgICAgICAgLyogRlRfU3RyaW5nKiAqLworICAgIFBTX0RJQ1RfTk9USUNFLCAgICAgICAgICAgICAgICAgLyogRlRfU3RyaW5nKiAqLworICAgIFBTX0RJQ1RfRlVMTF9OQU1FLCAgICAgICAgICAgICAgLyogRlRfU3RyaW5nKiAqLworICAgIFBTX0RJQ1RfRkFNSUxZX05BTUUsICAgICAgICAgICAgLyogRlRfU3RyaW5nKiAqLworICAgIFBTX0RJQ1RfV0VJR0hULCAgICAgICAgICAgICAgICAgLyogRlRfU3RyaW5nKiAqLworICAgIFBTX0RJQ1RfSVNfRklYRURfUElUQ0gsICAgICAgICAgLyogRlRfQm9vbCAgICAqLworICAgIFBTX0RJQ1RfVU5ERVJMSU5FX1BPU0lUSU9OLCAgICAgLyogRlRfU2hvcnQgICAqLworICAgIFBTX0RJQ1RfVU5ERVJMSU5FX1RISUNLTkVTUywgICAgLyogRlRfVVNob3J0ICAqLworICAgIFBTX0RJQ1RfRlNfVFlQRSwgICAgICAgICAgICAgICAgLyogRlRfVVNob3J0ICAqLworICAgIFBTX0RJQ1RfSVRBTElDX0FOR0xFLCAgICAgICAgICAgLyogRlRfTG9uZyAgICAqLworCisgICAgUFNfRElDVF9NQVggPSBQU19ESUNUX0lUQUxJQ19BTkdMRQorCisgIH0gUFNfRGljdF9LZXlzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgIEZUX0dldF9QU19Gb250X1ZhbHVlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgUmV0cmlldmUgdGhlIHZhbHVlIGZvciB0aGUgc3VwcGxpZWQga2V5IGZyb20gYSBQb3N0U2NyaXB0IGZvbnQuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICAgZmFjZSA6OgorICAgKiAgICAgICBQb3N0U2NyaXB0IGZhY2UgaGFuZGxlLgorICAgKgorICAgKiAgICBrZXkgOjoKKyAgICogICAgICAgQW4gZW51bWVyYXRpb24gdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBkaWN0aW9uYXJ5IGtleSB0byByZXRyaWV2ZS4KKyAgICoKKyAgICogICAgaWR4IDo6CisgICAqICAgICAgIEZvciBhcnJheSB2YWx1ZXMsIHRoaXMgc3BlY2lmaWVzIHRoZSBpbmRleCB0byBiZSByZXR1cm5lZC4KKyAgICoKKyAgICogICAgdmFsdWUgOjoKKyAgICogICAgICAgQSBwb2ludGVyIHRvIG1lbW9yeSBpbnRvIHdoaWNoIHRvIHdyaXRlIHRoZSB2YWx1ZS4KKyAgICoKKyAgICogICAgdmFsZW5fbGVuIDo6CisgICAqICAgICAgIFRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIG1lbW9yeSBzdXBwbGllZCBmb3IgdGhlIHZhbHVlLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgICB2YWx1ZSA6OgorICAgKiAgICAgICBUaGUgdmFsdWUgbWF0Y2hpbmcgdGhlIGFib3ZlIGtleSwgaWYgaXQgZXhpc3RzLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgICBUaGUgYW1vdW50IG9mIG1lbW9yeSAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgdGhlIHJlcXVlc3RlZAorICAgKiAgICB2YWx1ZSAoaWYgaXQgZXhpc3RzLCAtMSBvdGhlcndpc2UpLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICAgVGhlIHZhbHVlcyByZXR1cm5lZCBhcmUgbm90IHBvaW50ZXJzIGludG8gdGhlIGludGVybmFsIHN0cnVjdHVyZXMgb2YKKyAgICogICAgdGhlIGZhY2UsIGJ1dCBhcmUgYGZyZXNoJyBjb3BpZXMsIHNvIHRoYXQgdGhlIG1lbW9yeSBjb250YWluaW5nIHRoZW0KKyAgICogICAgYmVsb25ncyB0byB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIFRoaXMgYWxzbyBlbmZvcmNlcyB0aGUKKyAgICogICAgYHJlYWQtb25seScgbmF0dXJlIG9mIHRoZXNlIHZhbHVlcywgaS5lLiwgdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUKKyAgICogICAgdXNlZCB0byBtYW5pcHVsYXRlIHRoZSBmYWNlLgorICAgKgorICAgKiAgICBgdmFsdWUnIGlzIGEgdm9pZCBwb2ludGVyIGJlY2F1c2UgdGhlIHZhbHVlcyByZXR1cm5lZCBjYW4gYmUgb2YKKyAgICogICAgdmFyaW91cyB0eXBlcy4KKyAgICoKKyAgICogICAgSWYgZWl0aGVyIGB2YWx1ZScgaXMgTlVMTCBvciBgdmFsdWVfbGVuJyBpcyB0b28gc21hbGwsIGp1c3QgdGhlCisgICAqICAgIHJlcXVpcmVkIG1lbW9yeSBzaXplIGZvciB0aGUgcmVxdWVzdGVkIGVudHJ5IGlzIHJldHVybmVkLgorICAgKgorICAgKiAgICBUaGUgYGlkeCcgcGFyYW1ldGVyIGlzIHVzZWQsIG5vdCBvbmx5IHRvIHJldHJpZXZlIGVsZW1lbnRzIG9mLCBmb3IKKyAgICogICAgZXhhbXBsZSwgdGhlIEZvbnRNYXRyaXggb3IgRm9udEJCb3gsIGJ1dCBhbHNvIHRvIHJldHJpZXZlIG5hbWUga2V5cworICAgKiAgICBmcm9tIHRoZSBDaGFyU3RyaW5ncyBkaWN0aW9uYXJ5LCBhbmQgdGhlIGNoYXJzdHJpbmdzIHRoZW1zZWx2ZXMuICBJdAorICAgKiAgICBpcyBpZ25vcmVkIGZvciBhdG9taWMgdmFsdWVzLgorICAgKgorICAgKiAgICBQU19ESUNUX0JMVUVfU0NBTEUgcmV0dXJucyBhIHZhbHVlIHRoYXQgaXMgc2NhbGVkIHVwIGJ5IDEwMDAuICBUbworICAgKiAgICBnZXQgdGhlIHZhbHVlIGFzIGluIHRoZSBmb250IHN0cmVhbSwgeW91IG5lZWQgdG8gZGl2aWRlIGJ5CisgICAqICAgIDY1NTM2MDAwLjAgKHRvIHJlbW92ZSB0aGUgRlRfRml4ZWQgc2NhbGUsIGFuZCB0aGUgeDEwMDAgc2NhbGUpLgorICAgKgorICAgKiAgICBJTVBPUlRBTlQ6IE9ubHkga2V5L3ZhbHVlIHBhaXJzIHJlYWQgYnkgdGhlIEZyZWVUeXBlIGludGVycHJldGVyIGNhbgorICAgKiAgICBiZSByZXRyaWV2ZWQuICBTbywgZm9yIGV4YW1wbGUsIFBvc3RTY3JpcHQgcHJvY2VkdXJlcyBzdWNoIGFzIE5QLAorICAgKiAgICBORCwgYW5kIFJEIGFyZSBub3QgYXZhaWxhYmxlLiAgQXJiaXRyYXJ5IGtleXMgYXJlLCBvYnZpb3VzbHksIG5vdCBiZQorICAgKiAgICBhdmFpbGFibGUgZWl0aGVyLgorICAgKgorICAgKiAgICBJZiB0aGUgZm9udCdzIGZvcm1hdCBpcyBub3QgUG9zdFNjcmlwdC1iYXNlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zCisgICAqICAgIHRoZSBgRlRfRXJyX0ludmFsaWRfQXJndW1lbnQnIGVycm9yIGNvZGUuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0xvbmcgKQorICBGVF9HZXRfUFNfRm9udF9WYWx1ZSggRlRfRmFjZSAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgUFNfRGljdF9LZXlzICBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgIHZhbHVlX2xlbiApOworCisgIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fVDFUQUJMRVNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL3R0bmFtZWlkLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL3R0bmFtZWlkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYyYmY5MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvdHRuYW1laWQuaApAQCAtMCwwICsxLDEyMzcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0bmFtZWlkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcnVlVHlwZSBuYW1lIElEIGRlZmluaXRpb25zIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA0LCAyMDA2LTIwMDgsIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1RUTkFNRUlEX0hfXworI2RlZmluZSBfX1RUTkFNRUlEX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHJ1ZXR5cGVfdGFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBQb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBgcGxhdGZvcm0nIGlkZW50aWZpZXIgY29kZSBpbiB0aGUgbmFtZSAgICAgICAgKi8KKyAgLyogcmVjb3JkcyBvZiB0aGUgVFRGIGBuYW1lJyB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBUVF9QTEFURk9STV9YWFgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbGlzdCBvZiB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBgcGxhdGZvcm1faWQnIGlkZW50aWZpZXIgY29kZSBpbgorICAgKiAgIEBGVF9DaGFyTWFwUmVjIGFuZCBARlRfU2ZudE5hbWUgc3RydWN0dXJlcy4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBUVF9QTEFURk9STV9BUFBMRV9VTklDT0RFIDo6CisgICAqICAgICBVc2VkIGJ5IEFwcGxlIHRvIGluZGljYXRlIGEgVW5pY29kZSBjaGFyYWN0ZXIgbWFwIGFuZC9vciBuYW1lIGVudHJ5LgorICAgKiAgICAgU2VlIEBUVF9BUFBMRV9JRF9YWFggZm9yIGNvcnJlc3BvbmRpbmcgYGVuY29kaW5nX2lkJyB2YWx1ZXMuICBOb3RlCisgICAqICAgICB0aGF0IG5hbWUgZW50cmllcyBpbiB0aGlzIGZvcm1hdCBhcmUgY29kZWQgYXMgYmlnLWVuZGlhbiBVQ1MtMgorICAgKiAgICAgY2hhcmFjdGVyIGNvZGVzIF9vbmx5Xy4KKyAgICoKKyAgICogICBUVF9QTEFURk9STV9NQUNJTlRPU0ggOjoKKyAgICogICAgIFVzZWQgYnkgQXBwbGUgdG8gaW5kaWNhdGUgYSBNYWNPUy1zcGVjaWZpYyBjaGFybWFwIGFuZC9vciBuYW1lIGVudHJ5LgorICAgKiAgICAgU2VlIEBUVF9NQUNfSURfWFhYIGZvciBjb3JyZXNwb25kaW5nIGBlbmNvZGluZ19pZCcgdmFsdWVzLiAgTm90ZSB0aGF0CisgICAqICAgICBtb3N0IFRydWVUeXBlIGZvbnRzIGNvbnRhaW4gYW4gQXBwbGUgcm9tYW4gY2hhcm1hcCB0byBiZSB1c2FibGUgb24KKyAgICogICAgIE1hY09TIHN5c3RlbXMgKGV2ZW4gaWYgdGhleSBjb250YWluIGEgTWljcm9zb2Z0IGNoYXJtYXAgYXMgd2VsbCkuCisgICAqCisgICAqICAgVFRfUExBVEZPUk1fSVNPIDo6CisgICAqICAgICBUaGlzIHZhbHVlIHdhcyB1c2VkIHRvIHNwZWNpZnkgSVNPL0lFQyAxMDY0NiBjaGFybWFwcy4gIEl0IGlzIGhvd2V2ZXIKKyAgICogICAgIG5vdyBkZXByZWNhdGVkLiAgU2VlIEBUVF9JU09fSURfWFhYIGZvciBhIGxpc3Qgb2YgY29ycmVzcG9uZGluZworICAgKiAgICAgYGVuY29kaW5nX2lkJyB2YWx1ZXMuCisgICAqCisgICAqICAgVFRfUExBVEZPUk1fTUlDUk9TT0ZUIDo6CisgICAqICAgICBVc2VkIGJ5IE1pY3Jvc29mdCB0byBpbmRpY2F0ZSBXaW5kb3dzLXNwZWNpZmljIGNoYXJtYXBzLiAgU2VlCisgICAqICAgICBAVFRfTVNfSURfWFhYIGZvciBhIGxpc3Qgb2YgY29ycmVzcG9uZGluZyBgZW5jb2RpbmdfaWQnIHZhbHVlcy4KKyAgICogICAgIE5vdGUgdGhhdCBtb3N0IGZvbnRzIGNvbnRhaW4gYSBVbmljb2RlIGNoYXJtYXAgdXNpbmcKKyAgICogICAgIChUVF9QTEFURk9STV9NSUNST1NPRlQsIEBUVF9NU19JRF9VTklDT0RFX0NTKS4KKyAgICoKKyAgICogICBUVF9QTEFURk9STV9DVVNUT00gOjoKKyAgICogICAgIFVzZWQgdG8gaW5kaWNhdGUgYXBwbGljYXRpb24tc3BlY2lmaWMgY2hhcm1hcHMuCisgICAqCisgICAqICAgVFRfUExBVEZPUk1fQURPQkUgOjoKKyAgICogICAgIFRoaXMgdmFsdWUgaXNuJ3QgcGFydCBvZiBhbnkgZm9udCBmb3JtYXQgc3BlY2lmaWNhdGlvbiwgYnV0IGlzIHVzZWQKKyAgICogICAgIGJ5IEZyZWVUeXBlIHRvIHJlcG9ydCBBZG9iZS1zcGVjaWZpYyBjaGFybWFwcyBpbiBhbiBARlRfQ2hhck1hcFJlYworICAgKiAgICAgc3RydWN0dXJlLiAgU2VlIEBUVF9BRE9CRV9JRF9YWFguCisgICAqLworCisjZGVmaW5lIFRUX1BMQVRGT1JNX0FQUExFX1VOSUNPREUgIDAKKyNkZWZpbmUgVFRfUExBVEZPUk1fTUFDSU5UT1NIICAgICAgMQorI2RlZmluZSBUVF9QTEFURk9STV9JU08gICAgICAgICAgICAyIC8qIGRlcHJlY2F0ZWQgKi8KKyNkZWZpbmUgVFRfUExBVEZPUk1fTUlDUk9TT0ZUICAgICAgMworI2RlZmluZSBUVF9QTEFURk9STV9DVVNUT00gICAgICAgICA0CisjZGVmaW5lIFRUX1BMQVRGT1JNX0FET0JFICAgICAgICAgIDcgLyogYXJ0aWZpY2lhbCAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBlbnVtOgorICAgKiAgIFRUX0FQUExFX0lEX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIHZhbGlkIHZhbHVlcyBmb3IgdGhlIGBlbmNvZGluZ19pZCcgZm9yCisgICAqICAgQFRUX1BMQVRGT1JNX0FQUExFX1VOSUNPREUgY2hhcm1hcHMgYW5kIG5hbWUgZW50cmllcy4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBUVF9BUFBMRV9JRF9ERUZBVUxUIDo6CisgICAqICAgICBVbmljb2RlIHZlcnNpb24gMS4wLgorICAgKgorICAgKiAgIFRUX0FQUExFX0lEX1VOSUNPREVfMV8xIDo6CisgICAqICAgICBVbmljb2RlIDEuMTsgc3BlY2lmaWVzIEhhbmd1bCBjaGFyYWN0ZXJzIHN0YXJ0aW5nIGF0IFUrMzR4eC4KKyAgICoKKyAgICogICBUVF9BUFBMRV9JRF9JU09fMTA2NDYgOjoKKyAgICogICAgIERlcHJlY2F0ZWQgKGlkZW50aWNhbCB0byBwcmVjZWRpbmcpLgorICAgKgorICAgKiAgIFRUX0FQUExFX0lEX1VOSUNPREVfMl8wIDo6CisgICAqICAgICBVbmljb2RlIDIuMCBhbmQgYmV5b25kIChVVEYtMTYgQk1QIG9ubHkpLgorICAgKgorICAgKiAgIFRUX0FQUExFX0lEX1VOSUNPREVfMzIgOjoKKyAgICogICAgIFVuaWNvZGUgMy4xIGFuZCBiZXlvbmQsIHVzaW5nIFVURi0zMi4KKyAgICoKKyAgICogICBUVF9BUFBMRV9JRF9WQVJJQU5UX1NFTEVDVE9SIDo6CisgICAqICAgICBGcm9tIEFkb2JlLCBub3QgQXBwbGUuICBOb3QgYSBub3JtYWwgY21hcC4gIFNwZWNpZmllcyB2YXJpYXRpb25zCisgICAqICAgICBvbiBhIHJlYWwgY21hcC4KKyAgICovCisKKyNkZWZpbmUgVFRfQVBQTEVfSURfREVGQVVMVCAgICAgICAgICAgMCAvKiBVbmljb2RlIDEuMCAqLworI2RlZmluZSBUVF9BUFBMRV9JRF9VTklDT0RFXzFfMSAgICAgICAxIC8qIHNwZWNpZnkgSGFuZ3VsIGF0IFUrMzR4eCAqLworI2RlZmluZSBUVF9BUFBMRV9JRF9JU09fMTA2NDYgICAgICAgICAyIC8qIGRlcHJlY2F0ZWQgKi8KKyNkZWZpbmUgVFRfQVBQTEVfSURfVU5JQ09ERV8yXzAgICAgICAgMyAvKiBvciBsYXRlciAqLworI2RlZmluZSBUVF9BUFBMRV9JRF9VTklDT0RFXzMyICAgICAgICA0IC8qIDIuMCBvciBsYXRlciwgZnVsbCByZXBlcnRvaXJlICovCisjZGVmaW5lIFRUX0FQUExFX0lEX1ZBUklBTlRfU0VMRUNUT1IgIDUgLyogdmFyaWF0aW9uIHNlbGVjdG9yIGRhdGEgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBUVF9NQUNfSURfWFhYCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIGZvciB0aGUgYGVuY29kaW5nX2lkJyBmb3IKKyAgICogICBAVFRfUExBVEZPUk1fTUFDSU5UT1NIIGNoYXJtYXBzIGFuZCBuYW1lIGVudHJpZXMuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgVFRfTUFDX0lEX1JPTUFOIDo6CisgICAqICAgVFRfTUFDX0lEX0pBUEFORVNFIDo6CisgICAqICAgVFRfTUFDX0lEX1RSQURJVElPTkFMX0NISU5FU0UgOjoKKyAgICogICBUVF9NQUNfSURfS09SRUFOIDo6CisgICAqICAgVFRfTUFDX0lEX0FSQUJJQyA6OgorICAgKiAgIFRUX01BQ19JRF9IRUJSRVcgOjoKKyAgICogICBUVF9NQUNfSURfR1JFRUsgOjoKKyAgICogICBUVF9NQUNfSURfUlVTU0lBTiA6OgorICAgKiAgIFRUX01BQ19JRF9SU1lNQk9MIDo6CisgICAqICAgVFRfTUFDX0lEX0RFVkFOQUdBUkkgOjoKKyAgICogICBUVF9NQUNfSURfR1VSTVVLSEkgOjoKKyAgICogICBUVF9NQUNfSURfR1VKQVJBVEkgOjoKKyAgICogICBUVF9NQUNfSURfT1JJWUEgOjoKKyAgICogICBUVF9NQUNfSURfQkVOR0FMSSA6OgorICAgKiAgIFRUX01BQ19JRF9UQU1JTCA6OgorICAgKiAgIFRUX01BQ19JRF9URUxVR1UgOjoKKyAgICogICBUVF9NQUNfSURfS0FOTkFEQSA6OgorICAgKiAgIFRUX01BQ19JRF9NQUxBWUFMQU0gOjoKKyAgICogICBUVF9NQUNfSURfU0lOSEFMRVNFIDo6CisgICAqICAgVFRfTUFDX0lEX0JVUk1FU0UgOjoKKyAgICogICBUVF9NQUNfSURfS0hNRVIgOjoKKyAgICogICBUVF9NQUNfSURfVEhBSSA6OgorICAgKiAgIFRUX01BQ19JRF9MQU9USUFOIDo6CisgICAqICAgVFRfTUFDX0lEX0dFT1JHSUFOIDo6CisgICAqICAgVFRfTUFDX0lEX0FSTUVOSUFOIDo6CisgICAqICAgVFRfTUFDX0lEX01BTERJVklBTiA6OgorICAgKiAgIFRUX01BQ19JRF9TSU1QTElGSUVEX0NISU5FU0UgOjoKKyAgICogICBUVF9NQUNfSURfVElCRVRBTiA6OgorICAgKiAgIFRUX01BQ19JRF9NT05HT0xJQU4gOjoKKyAgICogICBUVF9NQUNfSURfR0VFWiA6OgorICAgKiAgIFRUX01BQ19JRF9TTEFWSUMgOjoKKyAgICogICBUVF9NQUNfSURfVklFVE5BTUVTRSA6OgorICAgKiAgIFRUX01BQ19JRF9TSU5ESEkgOjoKKyAgICogICBUVF9NQUNfSURfVU5JTlRFUlAgOjoKKyAgICovCisKKyNkZWZpbmUgVFRfTUFDX0lEX1JPTUFOICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIFRUX01BQ19JRF9KQVBBTkVTRSAgICAgICAgICAgICAgMQorI2RlZmluZSBUVF9NQUNfSURfVFJBRElUSU9OQUxfQ0hJTkVTRSAgIDIKKyNkZWZpbmUgVFRfTUFDX0lEX0tPUkVBTiAgICAgICAgICAgICAgICAzCisjZGVmaW5lIFRUX01BQ19JRF9BUkFCSUMgICAgICAgICAgICAgICAgNAorI2RlZmluZSBUVF9NQUNfSURfSEVCUkVXICAgICAgICAgICAgICAgIDUKKyNkZWZpbmUgVFRfTUFDX0lEX0dSRUVLICAgICAgICAgICAgICAgICA2CisjZGVmaW5lIFRUX01BQ19JRF9SVVNTSUFOICAgICAgICAgICAgICAgNworI2RlZmluZSBUVF9NQUNfSURfUlNZTUJPTCAgICAgICAgICAgICAgIDgKKyNkZWZpbmUgVFRfTUFDX0lEX0RFVkFOQUdBUkkgICAgICAgICAgICA5CisjZGVmaW5lIFRUX01BQ19JRF9HVVJNVUtISSAgICAgICAgICAgICAxMAorI2RlZmluZSBUVF9NQUNfSURfR1VKQVJBVEkgICAgICAgICAgICAgMTEKKyNkZWZpbmUgVFRfTUFDX0lEX09SSVlBICAgICAgICAgICAgICAgIDEyCisjZGVmaW5lIFRUX01BQ19JRF9CRU5HQUxJICAgICAgICAgICAgICAxMworI2RlZmluZSBUVF9NQUNfSURfVEFNSUwgICAgICAgICAgICAgICAgMTQKKyNkZWZpbmUgVFRfTUFDX0lEX1RFTFVHVSAgICAgICAgICAgICAgIDE1CisjZGVmaW5lIFRUX01BQ19JRF9LQU5OQURBICAgICAgICAgICAgICAxNgorI2RlZmluZSBUVF9NQUNfSURfTUFMQVlBTEFNICAgICAgICAgICAgMTcKKyNkZWZpbmUgVFRfTUFDX0lEX1NJTkhBTEVTRSAgICAgICAgICAgIDE4CisjZGVmaW5lIFRUX01BQ19JRF9CVVJNRVNFICAgICAgICAgICAgICAxOQorI2RlZmluZSBUVF9NQUNfSURfS0hNRVIgICAgICAgICAgICAgICAgMjAKKyNkZWZpbmUgVFRfTUFDX0lEX1RIQUkgICAgICAgICAgICAgICAgIDIxCisjZGVmaW5lIFRUX01BQ19JRF9MQU9USUFOICAgICAgICAgICAgICAyMgorI2RlZmluZSBUVF9NQUNfSURfR0VPUkdJQU4gICAgICAgICAgICAgMjMKKyNkZWZpbmUgVFRfTUFDX0lEX0FSTUVOSUFOICAgICAgICAgICAgIDI0CisjZGVmaW5lIFRUX01BQ19JRF9NQUxESVZJQU4gICAgICAgICAgICAyNQorI2RlZmluZSBUVF9NQUNfSURfU0lNUExJRklFRF9DSElORVNFICAgMjUKKyNkZWZpbmUgVFRfTUFDX0lEX1RJQkVUQU4gICAgICAgICAgICAgIDI2CisjZGVmaW5lIFRUX01BQ19JRF9NT05HT0xJQU4gICAgICAgICAgICAyNworI2RlZmluZSBUVF9NQUNfSURfR0VFWiAgICAgICAgICAgICAgICAgMjgKKyNkZWZpbmUgVFRfTUFDX0lEX1NMQVZJQyAgICAgICAgICAgICAgIDI5CisjZGVmaW5lIFRUX01BQ19JRF9WSUVUTkFNRVNFICAgICAgICAgICAzMAorI2RlZmluZSBUVF9NQUNfSURfU0lOREhJICAgICAgICAgICAgICAgMzEKKyNkZWZpbmUgVFRfTUFDX0lEX1VOSU5URVJQICAgICAgICAgICAgIDMyCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgVFRfSVNPX0lEX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIHZhbGlkIHZhbHVlcyBmb3IgdGhlIGBlbmNvZGluZ19pZCcgZm9yCisgICAqICAgQFRUX1BMQVRGT1JNX0lTTyBjaGFybWFwcyBhbmQgbmFtZSBlbnRyaWVzLgorICAgKgorICAgKiAgIFRoZWlyIHVzZSBpcyBub3cgZGVwcmVjYXRlZC4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBUVF9JU09fSURfN0JJVF9BU0NJSSA6OgorICAgKiAgICAgQVNDSUkuCisgICAqICAgVFRfSVNPX0lEXzEwNjQ2IDo6CisgICAqICAgICBJU08vMTA2NDYuCisgICAqICAgVFRfSVNPX0lEXzg4NTlfMSA6OgorICAgKiAgICAgQWxzbyBrbm93biBhcyBMYXRpbi0xLgorICAgKi8KKworI2RlZmluZSBUVF9JU09fSURfN0JJVF9BU0NJSSAgMAorI2RlZmluZSBUVF9JU09fSURfMTA2NDYgICAgICAgMQorI2RlZmluZSBUVF9JU09fSURfODg1OV8xICAgICAgMgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBlbnVtOgorICAgKiAgIFRUX01TX0lEX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIHZhbGlkIHZhbHVlcyBmb3IgdGhlIGBlbmNvZGluZ19pZCcgZm9yCisgICAqICAgQFRUX1BMQVRGT1JNX01JQ1JPU09GVCBjaGFybWFwcyBhbmQgbmFtZSBlbnRyaWVzLgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIFRUX01TX0lEX1NZTUJPTF9DUyA6OgorICAgKiAgICAgQ29ycmVzcG9uZHMgdG8gTWljcm9zb2Z0IHN5bWJvbCBlbmNvZGluZy4gU2VlCisgICAqICAgICBARlRfRU5DT0RJTkdfTVNfU1lNQk9MLgorICAgKgorICAgKiAgIFRUX01TX0lEX1VOSUNPREVfQ1MgOjoKKyAgICogICAgIENvcnJlc3BvbmRzIHRvIGEgTWljcm9zb2Z0IFdHTDQgY2hhcm1hcCwgbWF0Y2hpbmcgVW5pY29kZS4gIFNlZQorICAgKiAgICAgQEZUX0VOQ09ESU5HX1VOSUNPREUuCisgICAqCisgICAqICAgVFRfTVNfSURfU0pJUyA6OgorICAgKiAgICAgQ29ycmVzcG9uZHMgdG8gU0pJUyBKYXBhbmVzZSBlbmNvZGluZy4gIFNlZSBARlRfRU5DT0RJTkdfU0pJUy4KKyAgICoKKyAgICogICBUVF9NU19JRF9HQjIzMTIgOjoKKyAgICogICAgIENvcnJlc3BvbmRzIHRvIFNpbXBsaWZpZWQgQ2hpbmVzZSBhcyB1c2VkIGluIE1haW5sYW5kIENoaW5hLiAgU2VlCisgICAqICAgICBARlRfRU5DT0RJTkdfR0IyMzEyLgorICAgKgorICAgKiAgIFRUX01TX0lEX0JJR181IDo6CisgICAqICAgICBDb3JyZXNwb25kcyB0byBUcmFkaXRpb25hbCBDaGluZXNlIGFzIHVzZWQgaW4gVGFpd2FuIGFuZCBIb25nIEtvbmcuCisgICAqICAgICBTZWUgQEZUX0VOQ09ESU5HX0JJRzUuCisgICAqCisgICAqICAgVFRfTVNfSURfV0FOU1VORyA6OgorICAgKiAgICAgQ29ycmVzcG9uZHMgdG8gS29yZWFuIFdhbnN1bmcgZW5jb2RpbmcuICBTZWUgQEZUX0VOQ09ESU5HX1dBTlNVTkcuCisgICAqCisgICAqICAgVFRfTVNfSURfSk9IQUIgOjoKKyAgICogICAgIENvcnJlc3BvbmRzIHRvIEpvaGFiIGVuY29kaW5nLiAgU2VlIEBGVF9FTkNPRElOR19KT0hBQi4KKyAgICoKKyAgICogICBUVF9NU19JRF9VQ1NfNCA6OgorICAgKiAgICAgQ29ycmVzcG9uZHMgdG8gVUNTLTQgb3IgVVRGLTMyIGNoYXJtYXBzLiAgVGhpcyBoYXMgYmVlbiBhZGRlZCB0bworICAgKiAgICAgdGhlIE9wZW5UeXBlIHNwZWNpZmljYXRpb24gdmVyc2lvbiAxLjQgKG1pZC0yMDAxLikKKyAgICovCisKKyNkZWZpbmUgVFRfTVNfSURfU1lNQk9MX0NTICAgIDAKKyNkZWZpbmUgVFRfTVNfSURfVU5JQ09ERV9DUyAgIDEKKyNkZWZpbmUgVFRfTVNfSURfU0pJUyAgICAgICAgIDIKKyNkZWZpbmUgVFRfTVNfSURfR0IyMzEyICAgICAgIDMKKyNkZWZpbmUgVFRfTVNfSURfQklHXzUgICAgICAgIDQKKyNkZWZpbmUgVFRfTVNfSURfV0FOU1VORyAgICAgIDUKKyNkZWZpbmUgVFRfTVNfSURfSk9IQUIgICAgICAgIDYKKyNkZWZpbmUgVFRfTVNfSURfVUNTXzQgICAgICAgMTAKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBUVF9BRE9CRV9JRF9YWFgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbGlzdCBvZiB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBgZW5jb2RpbmdfaWQnIGZvcgorICAgKiAgIEBUVF9QTEFURk9STV9BRE9CRSBjaGFybWFwcy4gIFRoaXMgaXMgYSBGcmVlVHlwZS1zcGVjaWZpYyBleHRlbnNpb24hCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgVFRfQURPQkVfSURfU1RBTkRBUkQgOjoKKyAgICogICAgIEFkb2JlIHN0YW5kYXJkIGVuY29kaW5nLgorICAgKiAgIFRUX0FET0JFX0lEX0VYUEVSVCA6OgorICAgKiAgICAgQWRvYmUgZXhwZXJ0IGVuY29kaW5nLgorICAgKiAgIFRUX0FET0JFX0lEX0NVU1RPTSA6OgorICAgKiAgICAgQWRvYmUgY3VzdG9tIGVuY29kaW5nLgorICAgKiAgIFRUX0FET0JFX0lEX0xBVElOXzEgOjoKKyAgICogICAgIEFkb2JlIExhdGlufjEgZW5jb2RpbmcuCisgICAqLworCisjZGVmaW5lIFRUX0FET0JFX0lEX1NUQU5EQVJEICAwCisjZGVmaW5lIFRUX0FET0JFX0lEX0VYUEVSVCAgICAxCisjZGVmaW5lIFRUX0FET0JFX0lEX0NVU1RPTSAgICAyCisjZGVmaW5lIFRUX0FET0JFX0lEX0xBVElOXzEgICAzCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgbGFuZ3VhZ2UgaWRlbnRpZmllciBmaWVsZCBpbiB0aGUgbmFtZSByZWNvcmRzICAqLworICAvKiBvZiB0aGUgVFRGIGBuYW1lJyB0YWJsZSBpZiB0aGUgYHBsYXRmb3JtJyBpZGVudGlmaWVyIGNvZGUgaXMgICAgICAgICAgKi8KKyAgLyogVFRfUExBVEZPUk1fTUFDSU5UT1NILiAgVGhlc2UgdmFsdWVzIGFyZSBhbHNvIHVzZWQgYXMgcmV0dXJuIHZhbHVlcyAgICovCisgIC8qIGZvciBmdW5jdGlvbiBARlRfR2V0X0NNYXBfTGFuZ3VhZ2VfSUQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGNhbm9uaWNhbCBzb3VyY2UgZm9yIHRoZSBBcHBsZSBhc3NpZ25lZCBMYW5ndWFnZSBJRCdzIGlzIGF0ICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9mb250cy9UVFJlZk1hbi9STTA2L0NoYXA2bmFtZS5odG1sICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX01BQ19MQU5HSURfRU5HTElTSCAgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0ZSRU5DSCAgICAgICAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9HRVJNQU4gICAgICAgICAgICAgICAgICAgICAgICAyCisjZGVmaW5lIFRUX01BQ19MQU5HSURfSVRBTElBTiAgICAgICAgICAgICAgICAgICAgICAgMworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0RVVENIICAgICAgICAgICAgICAgICAgICAgICAgIDQKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9TV0VESVNIICAgICAgICAgICAgICAgICAgICAgICA1CisjZGVmaW5lIFRUX01BQ19MQU5HSURfU1BBTklTSCAgICAgICAgICAgICAgICAgICAgICAgNgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0RBTklTSCAgICAgICAgICAgICAgICAgICAgICAgIDcKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9QT1JUVUdVRVNFICAgICAgICAgICAgICAgICAgICA4CisjZGVmaW5lIFRUX01BQ19MQU5HSURfTk9SV0VHSUFOICAgICAgICAgICAgICAgICAgICAgOQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0hFQlJFVyAgICAgICAgICAgICAgICAgICAgICAgMTAKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9KQVBBTkVTRSAgICAgICAgICAgICAgICAgICAgIDExCisjZGVmaW5lIFRUX01BQ19MQU5HSURfQVJBQklDICAgICAgICAgICAgICAgICAgICAgICAxMgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0ZJTk5JU0ggICAgICAgICAgICAgICAgICAgICAgMTMKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9HUkVFSyAgICAgICAgICAgICAgICAgICAgICAgIDE0CisjZGVmaW5lIFRUX01BQ19MQU5HSURfSUNFTEFORElDICAgICAgICAgICAgICAgICAgICAxNQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX01BTFRFU0UgICAgICAgICAgICAgICAgICAgICAgMTYKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9UVVJLSVNIICAgICAgICAgICAgICAgICAgICAgIDE3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfQ1JPQVRJQU4gICAgICAgICAgICAgICAgICAgICAxOAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0NISU5FU0VfVFJBRElUSU9OQUwgICAgICAgICAgMTkKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9VUkRVICAgICAgICAgICAgICAgICAgICAgICAgIDIwCisjZGVmaW5lIFRUX01BQ19MQU5HSURfSElOREkgICAgICAgICAgICAgICAgICAgICAgICAyMQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1RIQUkgICAgICAgICAgICAgICAgICAgICAgICAgMjIKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9LT1JFQU4gICAgICAgICAgICAgICAgICAgICAgIDIzCisjZGVmaW5lIFRUX01BQ19MQU5HSURfTElUSFVBTklBTiAgICAgICAgICAgICAgICAgICAyNAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1BPTElTSCAgICAgICAgICAgICAgICAgICAgICAgMjUKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9IVU5HQVJJQU4gICAgICAgICAgICAgICAgICAgIDI2CisjZGVmaW5lIFRUX01BQ19MQU5HSURfRVNUT05JQU4gICAgICAgICAgICAgICAgICAgICAyNworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0xFVFRJU0ggICAgICAgICAgICAgICAgICAgICAgMjgKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9TQUFNSVNLICAgICAgICAgICAgICAgICAgICAgIDI5CisjZGVmaW5lIFRUX01BQ19MQU5HSURfRkFFUk9FU0UgICAgICAgICAgICAgICAgICAgICAzMAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0ZBUlNJICAgICAgICAgICAgICAgICAgICAgICAgMzEKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9SVVNTSUFOICAgICAgICAgICAgICAgICAgICAgIDMyCisjZGVmaW5lIFRUX01BQ19MQU5HSURfQ0hJTkVTRV9TSU1QTElGSUVEICAgICAgICAgICAzMworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0ZMRU1JU0ggICAgICAgICAgICAgICAgICAgICAgMzQKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9JUklTSCAgICAgICAgICAgICAgICAgICAgICAgIDM1CisjZGVmaW5lIFRUX01BQ19MQU5HSURfQUxCQU5JQU4gICAgICAgICAgICAgICAgICAgICAzNgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1JPTUFOSUFOICAgICAgICAgICAgICAgICAgICAgMzcKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9DWkVDSCAgICAgICAgICAgICAgICAgICAgICAgIDM4CisjZGVmaW5lIFRUX01BQ19MQU5HSURfU0xPVkFLICAgICAgICAgICAgICAgICAgICAgICAzOQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NMT1ZFTklBTiAgICAgICAgICAgICAgICAgICAgNDAKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9ZSURESVNIICAgICAgICAgICAgICAgICAgICAgIDQxCisjZGVmaW5lIFRUX01BQ19MQU5HSURfU0VSQklBTiAgICAgICAgICAgICAgICAgICAgICA0MgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX01BQ0VET05JQU4gICAgICAgICAgICAgICAgICAgNDMKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9CVUxHQVJJQU4gICAgICAgICAgICAgICAgICAgIDQ0CisjZGVmaW5lIFRUX01BQ19MQU5HSURfVUtSQUlOSUFOICAgICAgICAgICAgICAgICAgICA0NQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0JZRUxPUlVTU0lBTiAgICAgICAgICAgICAgICAgNDYKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9VWkJFSyAgICAgICAgICAgICAgICAgICAgICAgIDQ3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfS0FaQUtIICAgICAgICAgICAgICAgICAgICAgICA0OAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FaRVJCQUlKQU5JICAgICAgICAgICAgICAgICAgNDkKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9BWkVSQkFJSkFOSV9DWVJJTExJQ19TQ1JJUFQgIDQ5CisjZGVmaW5lIFRUX01BQ19MQU5HSURfQVpFUkJBSUpBTklfQVJBQklDX1NDUklQVCAgICA1MAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FSTUVOSUFOICAgICAgICAgICAgICAgICAgICAgNTEKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9HRU9SR0lBTiAgICAgICAgICAgICAgICAgICAgIDUyCisjZGVmaW5lIFRUX01BQ19MQU5HSURfTU9MREFWSUFOICAgICAgICAgICAgICAgICAgICA1MworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0tJUkdISVogICAgICAgICAgICAgICAgICAgICAgNTQKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9UQUpJS0kgICAgICAgICAgICAgICAgICAgICAgIDU1CisjZGVmaW5lIFRUX01BQ19MQU5HSURfVFVSS01FTiAgICAgICAgICAgICAgICAgICAgICA1NgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX01PTkdPTElBTiAgICAgICAgICAgICAgICAgICAgNTcKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NT05HT0xJQU5fTU9OR09MSUFOX1NDUklQVCAgIDU3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfTU9OR09MSUFOX0NZUklMTElDX1NDUklQVCAgICA1OAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1BBU0hUTyAgICAgICAgICAgICAgICAgICAgICAgNTkKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9LVVJESVNIICAgICAgICAgICAgICAgICAgICAgIDYwCisjZGVmaW5lIFRUX01BQ19MQU5HSURfS0FTSE1JUkkgICAgICAgICAgICAgICAgICAgICA2MQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NJTkRISSAgICAgICAgICAgICAgICAgICAgICAgNjIKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9USUJFVEFOICAgICAgICAgICAgICAgICAgICAgIDYzCisjZGVmaW5lIFRUX01BQ19MQU5HSURfTkVQQUxJICAgICAgICAgICAgICAgICAgICAgICA2NAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NBTlNLUklUICAgICAgICAgICAgICAgICAgICAgNjUKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NQVJBVEhJICAgICAgICAgICAgICAgICAgICAgIDY2CisjZGVmaW5lIFRUX01BQ19MQU5HSURfQkVOR0FMSSAgICAgICAgICAgICAgICAgICAgICA2NworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FTU0FNRVNFICAgICAgICAgICAgICAgICAgICAgNjgKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9HVUpBUkFUSSAgICAgICAgICAgICAgICAgICAgIDY5CisjZGVmaW5lIFRUX01BQ19MQU5HSURfUFVOSkFCSSAgICAgICAgICAgICAgICAgICAgICA3MAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX09SSVlBICAgICAgICAgICAgICAgICAgICAgICAgNzEKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NQUxBWUFMQU0gICAgICAgICAgICAgICAgICAgIDcyCisjZGVmaW5lIFRUX01BQ19MQU5HSURfS0FOTkFEQSAgICAgICAgICAgICAgICAgICAgICA3MworI2RlZmluZSBUVF9NQUNfTEFOR0lEX1RBTUlMICAgICAgICAgICAgICAgICAgICAgICAgNzQKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9URUxVR1UgICAgICAgICAgICAgICAgICAgICAgIDc1CisjZGVmaW5lIFRUX01BQ19MQU5HSURfU0lOSEFMRVNFICAgICAgICAgICAgICAgICAgICA3NgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0JVUk1FU0UgICAgICAgICAgICAgICAgICAgICAgNzcKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9LSE1FUiAgICAgICAgICAgICAgICAgICAgICAgIDc4CisjZGVmaW5lIFRUX01BQ19MQU5HSURfTEFPICAgICAgICAgICAgICAgICAgICAgICAgICA3OQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1ZJRVROQU1FU0UgICAgICAgICAgICAgICAgICAgODAKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9JTkRPTkVTSUFOICAgICAgICAgICAgICAgICAgIDgxCisjZGVmaW5lIFRUX01BQ19MQU5HSURfVEFHQUxPRyAgICAgICAgICAgICAgICAgICAgICA4MgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX01BTEFZX1JPTUFOX1NDUklQVCAgICAgICAgICAgODMKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NQUxBWV9BUkFCSUNfU0NSSVBUICAgICAgICAgIDg0CisjZGVmaW5lIFRUX01BQ19MQU5HSURfQU1IQVJJQyAgICAgICAgICAgICAgICAgICAgICA4NQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1RJR1JJTllBICAgICAgICAgICAgICAgICAgICAgODYKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9HQUxMQSAgICAgICAgICAgICAgICAgICAgICAgIDg3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfU09NQUxJICAgICAgICAgICAgICAgICAgICAgICA4OAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NXQUhJTEkgICAgICAgICAgICAgICAgICAgICAgODkKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9SVUFOREEgICAgICAgICAgICAgICAgICAgICAgIDkwCisjZGVmaW5lIFRUX01BQ19MQU5HSURfUlVOREkgICAgICAgICAgICAgICAgICAgICAgICA5MQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0NIRVdBICAgICAgICAgICAgICAgICAgICAgICAgOTIKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NQUxBR0FTWSAgICAgICAgICAgICAgICAgICAgIDkzCisjZGVmaW5lIFRUX01BQ19MQU5HSURfRVNQRVJBTlRPICAgICAgICAgICAgICAgICAgICA5NAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1dFTFNIICAgICAgICAgICAgICAgICAgICAgICAxMjgKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9CQVNRVUUgICAgICAgICAgICAgICAgICAgICAgMTI5CisjZGVmaW5lIFRUX01BQ19MQU5HSURfQ0FUQUxBTiAgICAgICAgICAgICAgICAgICAgIDEzMAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0xBVElOICAgICAgICAgICAgICAgICAgICAgICAxMzEKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9RVUVDSFVBICAgICAgICAgICAgICAgICAgICAgMTMyCisjZGVmaW5lIFRUX01BQ19MQU5HSURfR1VBUkFOSSAgICAgICAgICAgICAgICAgICAgIDEzMworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FZTUFSQSAgICAgICAgICAgICAgICAgICAgICAxMzQKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9UQVRBUiAgICAgICAgICAgICAgICAgICAgICAgMTM1CisjZGVmaW5lIFRUX01BQ19MQU5HSURfVUlHSFVSICAgICAgICAgICAgICAgICAgICAgIDEzNgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0RaT05HS0hBICAgICAgICAgICAgICAgICAgICAxMzcKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9KQVZBTkVTRSAgICAgICAgICAgICAgICAgICAgMTM4CisjZGVmaW5lIFRUX01BQ19MQU5HSURfU1VOREFORVNFICAgICAgICAgICAgICAgICAgIDEzOQorCisKKyNpZiAwICAvKiB0aGVzZSBzZWVtIHRvIGJlIGVycm9ycyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkICovCisKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9TQ09UVElTSF9HQUVMSUMgICAgICAgICAgICAgMTQwCisjZGVmaW5lIFRUX01BQ19MQU5HSURfSVJJU0hfR0FFTElDICAgICAgICAgICAgICAgIDE0MQorCisjZW5kaWYKKworCisgIC8qIFRoZSBmb2xsb3dpbmcgY29kZXMgYXJlIG5ldyBhcyBvZiAyMDAwLTAzLTEwICovCisjZGVmaW5lIFRUX01BQ19MQU5HSURfR0FMSUNJQU4gICAgICAgICAgICAgICAgICAgIDE0MAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FGUklLQUFOUyAgICAgICAgICAgICAgICAgICAxNDEKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9CUkVUT04gICAgICAgICAgICAgICAgICAgICAgMTQyCisjZGVmaW5lIFRUX01BQ19MQU5HSURfSU5VS1RJVFVUICAgICAgICAgICAgICAgICAgIDE0MworI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NDT1RUSVNIX0dBRUxJQyAgICAgICAgICAgICAxNDQKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NQU5YX0dBRUxJQyAgICAgICAgICAgICAgICAgMTQ1CisjZGVmaW5lIFRUX01BQ19MQU5HSURfSVJJU0hfR0FFTElDICAgICAgICAgICAgICAgIDE0NgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1RPTkdBTiAgICAgICAgICAgICAgICAgICAgICAxNDcKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9HUkVFS19QT0xZVE9OSUMgICAgICAgICAgICAgMTQ4CisjZGVmaW5lIFRUX01BQ19MQU5HSURfR1JFRUxBTkRJQyAgICAgICAgICAgICAgICAgIDE0OQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FaRVJCQUlKQU5JX1JPTUFOX1NDUklQVCAgICAxNTAKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogUG9zc2libGUgdmFsdWVzIG9mIHRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIGZpZWxkIGluIHRoZSBuYW1lIHJlY29yZHMgICovCisgIC8qIG9mIHRoZSBUVEYgYG5hbWUnIHRhYmxlIGlmIHRoZSBgcGxhdGZvcm0nIGlkZW50aWZpZXIgY29kZSBpcyAgICAgICAgICAqLworICAvKiBUVF9QTEFURk9STV9NSUNST1NPRlQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBjYW5vbmljYWwgc291cmNlIGZvciB0aGUgTVMgYXNzaWduZWQgTENJRHMgaXMgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZ2xvYmFsZGV2L3JlZmVyZW5jZS9sY2lkLWFsbC5tc3B4ICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfR0VORVJBTCAgICAgICAgICAgICAgICAgICAgMHgwMDAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfU0FVRElfQVJBQklBICAgICAgICAgICAgICAgMHgwNDAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfSVJBUSAgICAgICAgICAgICAgICAgICAgICAgMHgwODAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfRUdZUFQgICAgICAgICAgICAgICAgICAgICAgMHgwYzAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfTElCWUEgICAgICAgICAgICAgICAgICAgICAgMHgxMDAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfQUxHRVJJQSAgICAgICAgICAgICAgICAgICAgMHgxNDAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfTU9ST0NDTyAgICAgICAgICAgICAgICAgICAgMHgxODAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfVFVOSVNJQSAgICAgICAgICAgICAgICAgICAgMHgxYzAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfT01BTiAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfWUVNRU4gICAgICAgICAgICAgICAgICAgICAgMHgyNDAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfU1lSSUEgICAgICAgICAgICAgICAgICAgICAgMHgyODAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfSk9SREFOICAgICAgICAgICAgICAgICAgICAgMHgyYzAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfTEVCQU5PTiAgICAgICAgICAgICAgICAgICAgMHgzMDAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfS1VXQUlUICAgICAgICAgICAgICAgICAgICAgMHgzNDAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfVUFFICAgICAgICAgICAgICAgICAgICAgICAgMHgzODAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfQkFIUkFJTiAgICAgICAgICAgICAgICAgICAgMHgzYzAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUkFCSUNfUUFUQVIgICAgICAgICAgICAgICAgICAgICAgMHg0MDAxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9CVUxHQVJJQU5fQlVMR0FSSUEgICAgICAgICAgICAgICAgMHgwNDAyCisjZGVmaW5lIFRUX01TX0xBTkdJRF9DQVRBTEFOX1NQQUlOICAgICAgICAgICAgICAgICAgICAgMHgwNDAzCisjZGVmaW5lIFRUX01TX0xBTkdJRF9DSElORVNFX0dFTkVSQUwgICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIFRUX01TX0xBTkdJRF9DSElORVNFX1RBSVdBTiAgICAgICAgICAgICAgICAgICAgMHgwNDA0CisjZGVmaW5lIFRUX01TX0xBTkdJRF9DSElORVNFX1BSQyAgICAgICAgICAgICAgICAgICAgICAgMHgwODA0CisjZGVmaW5lIFRUX01TX0xBTkdJRF9DSElORVNFX0hPTkdfS09ORyAgICAgICAgICAgICAgICAgMHgwYzA0CisjZGVmaW5lIFRUX01TX0xBTkdJRF9DSElORVNFX1NJTkdBUE9SRSAgICAgICAgICAgICAgICAgMHgxMDA0CisKKyNpZiAxICAvKiB0aGlzIGxvb2tzIGxpa2UgdGhlIGNvcnJlY3QgdmFsdWUgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0NISU5FU0VfTUFDQVUgICAgICAgICAgICAgICAgICAgICAweDE0MDQKKyNlbHNlICAvKiBidXQgYmV3YXJlLCBNaWNyb3NvZnQgbWF5IGNoYW5nZSBpdHMgbWluZC4uLgorICAgICAgICAgIHRoZSBtb3N0IHJlY2VudCBXb3JkIHJlZmVyZW5jZSBoYXMgdGhlIGZvbGxvd2luZzogKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0NISU5FU0VfTUFDQVUgIFRUX01TX0xBTkdJRF9DSElORVNFX0hPTkdfS09ORworI2VuZGlmCisKKyNpZiAwICAvKiB1c2VkIG9ubHkgd2l0aCAuTkVUIGBjdWx0dXJlcyc7IGNvbW1lbnRlZCBvdXQgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0NISU5FU0VfVFJBRElUSU9OQUwgICAgICAgICAgICAgICAweDdDMDQKKyNlbmRpZgorCisjZGVmaW5lIFRUX01TX0xBTkdJRF9DWkVDSF9DWkVDSF9SRVBVQkxJQyAgICAgICAgICAgICAgMHgwNDA1CisjZGVmaW5lIFRUX01TX0xBTkdJRF9EQU5JU0hfREVOTUFSSyAgICAgICAgICAgICAgICAgICAgMHgwNDA2CisjZGVmaW5lIFRUX01TX0xBTkdJRF9HRVJNQU5fR0VSTUFOWSAgICAgICAgICAgICAgICAgICAgMHgwNDA3CisjZGVmaW5lIFRUX01TX0xBTkdJRF9HRVJNQU5fU1dJVFpFUkxBTkQgICAgICAgICAgICAgICAgMHgwODA3CisjZGVmaW5lIFRUX01TX0xBTkdJRF9HRVJNQU5fQVVTVFJJQSAgICAgICAgICAgICAgICAgICAgMHgwYzA3CisjZGVmaW5lIFRUX01TX0xBTkdJRF9HRVJNQU5fTFVYRU1CT1VSRyAgICAgICAgICAgICAgICAgMHgxMDA3CisjZGVmaW5lIFRUX01TX0xBTkdJRF9HRVJNQU5fTElFQ0hURU5TVEVJICAgICAgICAgICAgICAgMHgxNDA3CisjZGVmaW5lIFRUX01TX0xBTkdJRF9HUkVFS19HUkVFQ0UgICAgICAgICAgICAgICAgICAgICAgMHgwNDA4CisKKyAgLyogZG9uJ3QgYXNrIHdoYXQgdGhpcyBvbmUgbWVhbnMuLi4gSXQgaXMgY29tbWVudGVkIG91dCBjdXJyZW50bHkuICovCisjaWYgMAorI2RlZmluZSBUVF9NU19MQU5HSURfR1JFRUtfR1JFRUNFMiAgICAgICAgICAgICAgICAgICAgIDB4MjAwOAorI2VuZGlmCisKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfR0VORVJBTCAgICAgICAgICAgICAgICAgICAweDAwMDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfVU5JVEVEX1NUQVRFUyAgICAgICAgICAgICAweDA0MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfVU5JVEVEX0tJTkdET00gICAgICAgICAgICAweDA4MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfQVVTVFJBTElBICAgICAgICAgICAgICAgICAweDBjMDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfQ0FOQURBICAgICAgICAgICAgICAgICAgICAweDEwMDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfTkVXX1pFQUxBTkQgICAgICAgICAgICAgICAweDE0MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfSVJFTEFORCAgICAgICAgICAgICAgICAgICAweDE4MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfU09VVEhfQUZSSUNBICAgICAgICAgICAgICAweDFjMDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfSkFNQUlDQSAgICAgICAgICAgICAgICAgICAweDIwMDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfQ0FSSUJCRUFOICAgICAgICAgICAgICAgICAweDI0MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfQkVMSVpFICAgICAgICAgICAgICAgICAgICAweDI4MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfVFJJTklEQUQgICAgICAgICAgICAgICAgICAweDJjMDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfWklNQkFCV0UgICAgICAgICAgICAgICAgICAweDMwMDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfUEhJTElQUElORVMgICAgICAgICAgICAgICAweDM0MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfSU5ET05FU0lBICAgICAgICAgICAgICAgICAweDM4MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfSE9OR19LT05HICAgICAgICAgICAgICAgICAweDNjMDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfSU5ESUEgICAgICAgICAgICAgICAgICAgICAweDQwMDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfTUFMQVlTSUEgICAgICAgICAgICAgICAgICAweDQ0MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0VOR0xJU0hfU0lOR0FQT1JFICAgICAgICAgICAgICAgICAweDQ4MDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfU1BBSU5fVFJBRElUSU9OQUxfU09SVCAgICAweDA0MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfTUVYSUNPICAgICAgICAgICAgICAgICAgICAweDA4MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfU1BBSU5fSU5URVJOQVRJT05BTF9TT1JUICAweDBjMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfR1VBVEVNQUxBICAgICAgICAgICAgICAgICAweDEwMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfQ09TVEFfUklDQSAgICAgICAgICAgICAgICAweDE0MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfUEFOQU1BICAgICAgICAgICAgICAgICAgICAweDE4MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfRE9NSU5JQ0FOX1JFUFVCTElDICAgICAgICAweDFjMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfVkVORVpVRUxBICAgICAgICAgICAgICAgICAweDIwMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfQ09MT01CSUEgICAgICAgICAgICAgICAgICAweDI0MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfUEVSVSAgICAgICAgICAgICAgICAgICAgICAweDI4MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfQVJHRU5USU5BICAgICAgICAgICAgICAgICAweDJjMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfRUNVQURPUiAgICAgICAgICAgICAgICAgICAweDMwMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfQ0hJTEUgICAgICAgICAgICAgICAgICAgICAweDM0MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfVVJVR1VBWSAgICAgICAgICAgICAgICAgICAweDM4MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfUEFSQUdVQVkgICAgICAgICAgICAgICAgICAweDNjMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfQk9MSVZJQSAgICAgICAgICAgICAgICAgICAweDQwMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfRUxfU0FMVkFET1IgICAgICAgICAgICAgICAweDQ0MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfSE9ORFVSQVMgICAgICAgICAgICAgICAgICAweDQ4MGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfTklDQVJBR1VBICAgICAgICAgICAgICAgICAweDRjMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfUFVFUlRPX1JJQ08gICAgICAgICAgICAgICAweDUwMGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfVU5JVEVEX1NUQVRFUyAgICAgICAgICAgICAweDU0MGEKKyAgLyogVGhlIGZvbGxvd2luZyBJRCBibGF0YW50bHkgdmlvbGF0ZSBNUyBzcGVjcyBieSB1c2luZyBhICovCisgIC8qIHN1Ymxhbmd1YWdlID4gMHgxRi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9NU19MQU5HSURfU1BBTklTSF9MQVRJTl9BTUVSSUNBICAgICAgICAgICAgIDB4RTQwYVUKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZJTk5JU0hfRklOTEFORCAgICAgICAgICAgICAgICAgICAweDA0MGIKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9GUkFOQ0UgICAgICAgICAgICAgICAgICAgICAweDA0MGMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9CRUxHSVVNICAgICAgICAgICAgICAgICAgICAweDA4MGMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9DQU5BREEgICAgICAgICAgICAgICAgICAgICAweDBjMGMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9TV0lUWkVSTEFORCAgICAgICAgICAgICAgICAweDEwMGMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9MVVhFTUJPVVJHICAgICAgICAgICAgICAgICAweDE0MGMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9NT05BQ08gICAgICAgICAgICAgICAgICAgICAweDE4MGMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9XRVNUX0lORElFUyAgICAgICAgICAgICAgICAweDFjMGMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9SRVVOSU9OICAgICAgICAgICAgICAgICAgICAweDIwMGMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9DT05HTyAgICAgICAgICAgICAgICAgICAgICAweDI0MGMKKyAgLyogd2hpY2ggd2FzIGZvcm1lcmx5OiAqLworI2RlZmluZSBUVF9NU19MQU5HSURfRlJFTkNIX1pBSVJFICBUVF9NU19MQU5HSURfRlJFTkNIX0NPTkdPCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfU0VORUdBTCAgICAgICAgICAgICAgICAgICAgMHgyODBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfQ0FNRVJPT04gICAgICAgICAgICAgICAgICAgMHgyYzBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfQ09URV9EX0lWT0lSRSAgICAgICAgICAgICAgMHgzMDBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfTUFMSSAgICAgICAgICAgICAgICAgICAgICAgMHgzNDBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfTU9ST0NDTyAgICAgICAgICAgICAgICAgICAgMHgzODBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfSEFJVEkgICAgICAgICAgICAgICAgICAgICAgMHgzYzBjCisgIC8qIGFuZCBhbm90aGVyIHZpb2xhdGlvbiBvZiB0aGUgc3BlYyAoc2VlIDB4RTQwYVUpICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfTk9SVEhfQUZSSUNBICAgICAgICAgICAgICAgMHhFNDBjVQorI2RlZmluZSBUVF9NU19MQU5HSURfSEVCUkVXX0lTUkFFTCAgICAgICAgICAgICAgICAgICAgIDB4MDQwZAorI2RlZmluZSBUVF9NU19MQU5HSURfSFVOR0FSSUFOX0hVTkdBUlkgICAgICAgICAgICAgICAgIDB4MDQwZQorI2RlZmluZSBUVF9NU19MQU5HSURfSUNFTEFORElDX0lDRUxBTkQgICAgICAgICAgICAgICAgIDB4MDQwZgorI2RlZmluZSBUVF9NU19MQU5HSURfSVRBTElBTl9JVEFMWSAgICAgICAgICAgICAgICAgICAgIDB4MDQxMAorI2RlZmluZSBUVF9NU19MQU5HSURfSVRBTElBTl9TV0lUWkVSTEFORCAgICAgICAgICAgICAgIDB4MDgxMAorI2RlZmluZSBUVF9NU19MQU5HSURfSkFQQU5FU0VfSkFQQU4gICAgICAgICAgICAgICAgICAgIDB4MDQxMQorI2RlZmluZSBUVF9NU19MQU5HSURfS09SRUFOX0VYVEVOREVEX1dBTlNVTkdfS09SRUEgICAgIDB4MDQxMgorI2RlZmluZSBUVF9NU19MQU5HSURfS09SRUFOX0pPSEFCX0tPUkVBICAgICAgICAgICAgICAgIDB4MDgxMgorI2RlZmluZSBUVF9NU19MQU5HSURfRFVUQ0hfTkVUSEVSTEFORFMgICAgICAgICAgICAgICAgIDB4MDQxMworI2RlZmluZSBUVF9NU19MQU5HSURfRFVUQ0hfQkVMR0lVTSAgICAgICAgICAgICAgICAgICAgIDB4MDgxMworI2RlZmluZSBUVF9NU19MQU5HSURfTk9SV0VHSUFOX05PUldBWV9CT0tNQUwgICAgICAgICAgIDB4MDQxNAorI2RlZmluZSBUVF9NU19MQU5HSURfTk9SV0VHSUFOX05PUldBWV9OWU5PUlNLICAgICAgICAgIDB4MDgxNAorI2RlZmluZSBUVF9NU19MQU5HSURfUE9MSVNIX1BPTEFORCAgICAgICAgICAgICAgICAgICAgIDB4MDQxNQorI2RlZmluZSBUVF9NU19MQU5HSURfUE9SVFVHVUVTRV9CUkFaSUwgICAgICAgICAgICAgICAgIDB4MDQxNgorI2RlZmluZSBUVF9NU19MQU5HSURfUE9SVFVHVUVTRV9QT1JUVUdBTCAgICAgICAgICAgICAgIDB4MDgxNgorI2RlZmluZSBUVF9NU19MQU5HSURfUkhBRVRPX1JPTUFOSUNfU1dJVFpFUkxBTkQgICAgICAgIDB4MDQxNworI2RlZmluZSBUVF9NU19MQU5HSURfUk9NQU5JQU5fUk9NQU5JQSAgICAgICAgICAgICAgICAgIDB4MDQxOAorI2RlZmluZSBUVF9NU19MQU5HSURfTU9MREFWSUFOX01PTERBVklBICAgICAgICAgICAgICAgIDB4MDgxOAorI2RlZmluZSBUVF9NU19MQU5HSURfUlVTU0lBTl9SVVNTSUEgICAgICAgICAgICAgICAgICAgIDB4MDQxOQorI2RlZmluZSBUVF9NU19MQU5HSURfUlVTU0lBTl9NT0xEQVZJQSAgICAgICAgICAgICAgICAgIDB4MDgxOQorI2RlZmluZSBUVF9NU19MQU5HSURfQ1JPQVRJQU5fQ1JPQVRJQSAgICAgICAgICAgICAgICAgIDB4MDQxYQorI2RlZmluZSBUVF9NU19MQU5HSURfU0VSQklBTl9TRVJCSUFfTEFUSU4gICAgICAgICAgICAgIDB4MDgxYQorI2RlZmluZSBUVF9NU19MQU5HSURfU0VSQklBTl9TRVJCSUFfQ1lSSUxMSUMgICAgICAgICAgIDB4MGMxYQorCisjaWYgMCAgLyogdGhpcyB1c2VkIHRvIGJlIHRoaXMgdmFsdWUsIGJ1dCBpdCBsb29rcyBsaWtlIHdlIHdlcmUgd3JvbmcgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0JPU05JQU5fQk9TTklBX0hFUlpFR09WSU5BICAgICAgICAweDEwMWEKKyNlbHNlICAvKiBjdXJyZW50IHNvdXJjZXMgc2F5ICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9DUk9BVElBTl9CT1NOSUFfSEVSWkVHT1ZJTkEgICAgICAgMHgxMDFhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9CT1NOSUFOX0JPU05JQV9IRVJaRUdPVklOQSAgICAgICAgMHgxNDFhCisgICAgICAgLyogYW5kIFhQc3AyIFBsYXRmb3JtIFNESyBhZGRlZCAoMjAwNC0wNy0yNikgKi8KKyAgICAgICAvKiBOYW1lcyBhcmUgc2hvcnRlbmVkIHRvIGJlIHNpZ25pZmljYW50IHdpdGhpbiA0MCBjaGFycy4gKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NFUkJJQU5fQk9TTklBX0hFUlpfTEFUSU4gICAgICAgICAweDE4MWEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NFUkJJQU5fQk9TTklBX0hFUlpfQ1lSSUxMSUMgICAgICAweDE4MWEKKyNlbmRpZgorCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TTE9WQUtfU0xPVkFLSUEgICAgICAgICAgICAgICAgICAgMHgwNDFiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BTEJBTklBTl9BTEJBTklBICAgICAgICAgICAgICAgICAgMHgwNDFjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TV0VESVNIX1NXRURFTiAgICAgICAgICAgICAgICAgICAgMHgwNDFkCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TV0VESVNIX0ZJTkxBTkQgICAgICAgICAgICAgICAgICAgMHgwODFkCisjZGVmaW5lIFRUX01TX0xBTkdJRF9USEFJX1RIQUlMQU5EICAgICAgICAgICAgICAgICAgICAgMHgwNDFlCisjZGVmaW5lIFRUX01TX0xBTkdJRF9UVVJLSVNIX1RVUktFWSAgICAgICAgICAgICAgICAgICAgMHgwNDFmCisjZGVmaW5lIFRUX01TX0xBTkdJRF9VUkRVX1BBS0lTVEFOICAgICAgICAgICAgICAgICAgICAgMHgwNDIwCisjZGVmaW5lIFRUX01TX0xBTkdJRF9VUkRVX0lORElBICAgICAgICAgICAgICAgICAgICAgICAgMHgwODIwCisjZGVmaW5lIFRUX01TX0xBTkdJRF9JTkRPTkVTSUFOX0lORE9ORVNJQSAgICAgICAgICAgICAgMHgwNDIxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9VS1JBSU5JQU5fVUtSQUlORSAgICAgICAgICAgICAgICAgMHgwNDIyCisjZGVmaW5lIFRUX01TX0xBTkdJRF9CRUxBUlVTSUFOX0JFTEFSVVMgICAgICAgICAgICAgICAgMHgwNDIzCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TTE9WRU5FX1NMT1ZFTklBICAgICAgICAgICAgICAgICAgMHgwNDI0CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FU1RPTklBTl9FU1RPTklBICAgICAgICAgICAgICAgICAgMHgwNDI1CisjZGVmaW5lIFRUX01TX0xBTkdJRF9MQVRWSUFOX0xBVFZJQSAgICAgICAgICAgICAgICAgICAgMHgwNDI2CisjZGVmaW5lIFRUX01TX0xBTkdJRF9MSVRIVUFOSUFOX0xJVEhVQU5JQSAgICAgICAgICAgICAgMHgwNDI3CisjZGVmaW5lIFRUX01TX0xBTkdJRF9DTEFTU0lDX0xJVEhVQU5JQU5fTElUSFVBTklBICAgICAgMHgwODI3CisjZGVmaW5lIFRUX01TX0xBTkdJRF9UQUpJS19UQUpJS0lTVEFOICAgICAgICAgICAgICAgICAgMHgwNDI4CisjZGVmaW5lIFRUX01TX0xBTkdJRF9GQVJTSV9JUkFOICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDI5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9WSUVUTkFNRVNFX1ZJRVRfTkFNICAgICAgICAgICAgICAgMHgwNDJhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BUk1FTklBTl9BUk1FTklBICAgICAgICAgICAgICAgICAgMHgwNDJiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BWkVSSV9BWkVSQkFJSkFOX0xBVElOICAgICAgICAgICAgMHgwNDJjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BWkVSSV9BWkVSQkFJSkFOX0NZUklMTElDICAgICAgICAgMHgwODJjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9CQVNRVUVfU1BBSU4gICAgICAgICAgICAgICAgICAgICAgMHgwNDJkCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TT1JCSUFOX0dFUk1BTlkgICAgICAgICAgICAgICAgICAgMHgwNDJlCisjZGVmaW5lIFRUX01TX0xBTkdJRF9NQUNFRE9OSUFOX01BQ0VET05JQSAgICAgICAgICAgICAgMHgwNDJmCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TVVRVX1NPVVRIX0FGUklDQSAgICAgICAgICAgICAgICAgMHgwNDMwCisjZGVmaW5lIFRUX01TX0xBTkdJRF9UU09OR0FfU09VVEhfQUZSSUNBICAgICAgICAgICAgICAgMHgwNDMxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9UU1dBTkFfU09VVEhfQUZSSUNBICAgICAgICAgICAgICAgMHgwNDMyCisjZGVmaW5lIFRUX01TX0xBTkdJRF9WRU5EQV9TT1VUSF9BRlJJQ0EgICAgICAgICAgICAgICAgMHgwNDMzCisjZGVmaW5lIFRUX01TX0xBTkdJRF9YSE9TQV9TT1VUSF9BRlJJQ0EgICAgICAgICAgICAgICAgMHgwNDM0CisjZGVmaW5lIFRUX01TX0xBTkdJRF9aVUxVX1NPVVRIX0FGUklDQSAgICAgICAgICAgICAgICAgMHgwNDM1CisjZGVmaW5lIFRUX01TX0xBTkdJRF9BRlJJS0FBTlNfU09VVEhfQUZSSUNBICAgICAgICAgICAgMHgwNDM2CisjZGVmaW5lIFRUX01TX0xBTkdJRF9HRU9SR0lBTl9HRU9SR0lBICAgICAgICAgICAgICAgICAgMHgwNDM3CisjZGVmaW5lIFRUX01TX0xBTkdJRF9GQUVST0VTRV9GQUVST0VfSVNMQU5EUyAgICAgICAgICAgMHgwNDM4CisjZGVmaW5lIFRUX01TX0xBTkdJRF9ISU5ESV9JTkRJQSAgICAgICAgICAgICAgICAgICAgICAgMHgwNDM5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9NQUxURVNFX01BTFRBICAgICAgICAgICAgICAgICAgICAgMHgwNDNhCisgIC8qIEFkZGVkIGJ5IFhQc3AyIFBsYXRmb3JtIFNESyAoMjAwNC0wNy0yNikgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTUlfTk9SVEhFUk5fTk9SV0FZICAgICAgICAgICAgICAweDA0M2IKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTUlfTk9SVEhFUk5fU1dFREVOICAgICAgICAgICAgICAweDA4M2IKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTUlfTk9SVEhFUk5fRklOTEFORCAgICAgICAgICAgICAweDBDM2IKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTUlfTFVMRV9OT1JXQVkgICAgICAgICAgICAgICAgICAweDEwM2IKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTUlfTFVMRV9TV0VERU4gICAgICAgICAgICAgICAgICAweDE0M2IKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTUlfU09VVEhFUk5fTk9SV0FZICAgICAgICAgICAgICAweDE4M2IKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTUlfU09VVEhFUk5fU1dFREVOICAgICAgICAgICAgICAweDFDM2IKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTUlfU0tPTFRfRklOTEFORCAgICAgICAgICAgICAgICAweDIwM2IKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTUlfSU5BUklfRklOTEFORCAgICAgICAgICAgICAgICAweDI0M2IKKyAgLyogLi4uIGFuZCB3ZSBhbHNvIGtlZXAgb3VyIG9sZCBpZGVudGlmaWVyLi4uICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQUFNSV9MQVBPTklBICAgICAgICAgICAgICAgICAgICAgMHgwNDNiCisKKyNpZiAwIC8qIHRoaXMgc2VlbXMgdG8gYmUgYSBwcmV2aW91cyBpbnZlcnNpb24gKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0lSSVNIX0dBRUxJQ19JUkVMQU5EICAgICAgICAgICAgICAweDA0M2MKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NDT1RUSVNIX0dBRUxJQ19VTklURURfS0lOR0RPTSAgICAweDA4M2MKKyNlbHNlCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQ09UVElTSF9HQUVMSUNfVU5JVEVEX0tJTkdET00gICAgMHgwODNjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9JUklTSF9HQUVMSUNfSVJFTEFORCAgICAgICAgICAgICAgMHgwNDNjCisjZW5kaWYKKworI2RlZmluZSBUVF9NU19MQU5HSURfWUlERElTSF9HRVJNQU5ZICAgICAgICAgICAgICAgICAgIDB4MDQzZAorI2RlZmluZSBUVF9NU19MQU5HSURfTUFMQVlfTUFMQVlTSUEgICAgICAgICAgICAgICAgICAgIDB4MDQzZQorI2RlZmluZSBUVF9NU19MQU5HSURfTUFMQVlfQlJVTkVJX0RBUlVTU0FMQU0gICAgICAgICAgIDB4MDgzZQorI2RlZmluZSBUVF9NU19MQU5HSURfS0FaQUtfS0FaQUtTVEFOICAgICAgICAgICAgICAgICAgIDB4MDQzZgorI2RlZmluZSBUVF9NU19MQU5HSURfS0lSR0hJWl9LSVJHSElaU1RBTiAvKiBDeXJpbGxpYyovIDB4MDQ0MAorICAvKiBhbGlhcyBkZWNsYXJlZCBpbiBXaW5kb3dzIDIwMDAgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tJUkdISVpfS0lSR0hJWl9SRVBVQkxJQyBcCisgICAgICAgICAgVFRfTVNfTEFOR0lEX0tJUkdISVpfS0lSR0hJWlNUQU4KKworI2RlZmluZSBUVF9NU19MQU5HSURfU1dBSElMSV9LRU5ZQSAgICAgICAgICAgICAgICAgICAgIDB4MDQ0MQorI2RlZmluZSBUVF9NU19MQU5HSURfVFVSS01FTl9UVVJLTUVOSVNUQU4gICAgICAgICAgICAgIDB4MDQ0MgorI2RlZmluZSBUVF9NU19MQU5HSURfVVpCRUtfVVpCRUtJU1RBTl9MQVRJTiAgICAgICAgICAgIDB4MDQ0MworI2RlZmluZSBUVF9NU19MQU5HSURfVVpCRUtfVVpCRUtJU1RBTl9DWVJJTExJQyAgICAgICAgIDB4MDg0MworI2RlZmluZSBUVF9NU19MQU5HSURfVEFUQVJfVEFUQVJTVEFOICAgICAgICAgICAgICAgICAgIDB4MDQ0NAorI2RlZmluZSBUVF9NU19MQU5HSURfQkVOR0FMSV9JTkRJQSAgICAgICAgICAgICAgICAgICAgIDB4MDQ0NQorI2RlZmluZSBUVF9NU19MQU5HSURfQkVOR0FMSV9CQU5HTEFERVNIICAgICAgICAgICAgICAgIDB4MDg0NQorI2RlZmluZSBUVF9NU19MQU5HSURfUFVOSkFCSV9JTkRJQSAgICAgICAgICAgICAgICAgICAgIDB4MDQ0NgorI2RlZmluZSBUVF9NU19MQU5HSURfUFVOSkFCSV9BUkFCSUNfUEFLSVNUQU4gICAgICAgICAgIDB4MDg0NgorI2RlZmluZSBUVF9NU19MQU5HSURfR1VKQVJBVElfSU5ESUEgICAgICAgICAgICAgICAgICAgIDB4MDQ0NworI2RlZmluZSBUVF9NU19MQU5HSURfT1JJWUFfSU5ESUEgICAgICAgICAgICAgICAgICAgICAgIDB4MDQ0OAorI2RlZmluZSBUVF9NU19MQU5HSURfVEFNSUxfSU5ESUEgICAgICAgICAgICAgICAgICAgICAgIDB4MDQ0OQorI2RlZmluZSBUVF9NU19MQU5HSURfVEVMVUdVX0lORElBICAgICAgICAgICAgICAgICAgICAgIDB4MDQ0YQorI2RlZmluZSBUVF9NU19MQU5HSURfS0FOTkFEQV9JTkRJQSAgICAgICAgICAgICAgICAgICAgIDB4MDQ0YgorI2RlZmluZSBUVF9NU19MQU5HSURfTUFMQVlBTEFNX0lORElBICAgICAgICAgICAgICAgICAgIDB4MDQ0YworI2RlZmluZSBUVF9NU19MQU5HSURfQVNTQU1FU0VfSU5ESUEgICAgICAgICAgICAgICAgICAgIDB4MDQ0ZAorI2RlZmluZSBUVF9NU19MQU5HSURfTUFSQVRISV9JTkRJQSAgICAgICAgICAgICAgICAgICAgIDB4MDQ0ZQorI2RlZmluZSBUVF9NU19MQU5HSURfU0FOU0tSSVRfSU5ESUEgICAgICAgICAgICAgICAgICAgIDB4MDQ0ZgorI2RlZmluZSBUVF9NU19MQU5HSURfTU9OR09MSUFOX01PTkdPTElBIC8qIEN5cmlsbGljICovIDB4MDQ1MAorI2RlZmluZSBUVF9NU19MQU5HSURfTU9OR09MSUFOX01PTkdPTElBX01PTkdPTElBTiAgICAgIDB4MDg1MAorI2RlZmluZSBUVF9NU19MQU5HSURfVElCRVRBTl9DSElOQSAgICAgICAgICAgICAgICAgICAgIDB4MDQ1MQorICAvKiBEb24ndCB1c2UgdGhlIG5leHQgY29uc3RhbnQhICBJdCBoYXMgICAgICAgICAgICAqLworICAvKiAgICgxKSB0aGUgd3Jvbmcgc3BlbGxpbmcgKER6b25naGthKSAgICAgICAgICAgICAqLworICAvKiAgICgyKSBNaWNyb3NvZnQgZG9lc24ndCBvZmZpY2lhbGx5IGRlZmluZSBpdCAtLSAqLworICAvKiAgICAgICBhdCBsZWFzdCBpdCBpcyBub3QgaW4gdGhlIExpc3Qgb2YgTG9jYWwgICAqLworICAvKiAgICAgICBJRCBWYWx1ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICgzKSBEem9uZ2toYSBpcyBub3QgdGhlIHNhbWUgbGFuZ3VhZ2UgYXMgICAgICAqLworICAvKiAgICAgICBUaWJldGFuLCBzbyBtZXJnaW5nIGl0IGlzIHdyb25nIGFueXdheS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUVF9NU19MQU5HSURfVElCRVRBTl9CSFVUQU4gaXMgY29ycmVjdCwgQlRXLiAgICAqLworI2RlZmluZSBUVF9NU19MQU5HSURfRFpPTkdIS0FfQkhVVEFOICAgICAgICAgICAgICAgICAgIDB4MDg1MQorCisjaWYgMAorICAvKiB0aGUgZm9sbG93aW5nIHVzZWQgdG8gYmUgZGVmaW5lZCAqLworI2RlZmluZSBUVF9NU19MQU5HSURfVElCRVRBTl9CSFVUQU4gICAgICAgICAgICAgICAgICAgIDB4MDQ1MQorICAvKiAuLi4gYnV0IGl0IHdhcyBjaGFuZ2VkOyAqLworI2Vsc2UKKyAgLyogU28gd2Ugd2lsbCBjb250aW51ZSB0byAjZGVmaW5lIGl0LCBidXQgd2l0aCB0aGUgY29ycmVjdCB2YWx1ZSAqLworI2RlZmluZSBUVF9NU19MQU5HSURfVElCRVRBTl9CSFVUQU4gICBUVF9NU19MQU5HSURfRFpPTkdIS0FfQkhVVEFOCisjZW5kaWYKKworI2RlZmluZSBUVF9NU19MQU5HSURfV0VMU0hfV0FMRVMgICAgICAgICAgICAgICAgICAgICAgIDB4MDQ1MgorI2RlZmluZSBUVF9NU19MQU5HSURfS0hNRVJfQ0FNQk9ESUEgICAgICAgICAgICAgICAgICAgIDB4MDQ1MworI2RlZmluZSBUVF9NU19MQU5HSURfTEFPX0xBT1MgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQ1NAorI2RlZmluZSBUVF9NU19MQU5HSURfQlVSTUVTRV9NWUFOTUFSICAgICAgICAgICAgICAgICAgIDB4MDQ1NQorI2RlZmluZSBUVF9NU19MQU5HSURfR0FMSUNJQU5fU1BBSU4gICAgICAgICAgICAgICAgICAgIDB4MDQ1NgorI2RlZmluZSBUVF9NU19MQU5HSURfS09OS0FOSV9JTkRJQSAgICAgICAgICAgICAgICAgICAgIDB4MDQ1NworI2RlZmluZSBUVF9NU19MQU5HSURfTUFOSVBVUklfSU5ESUEgIC8qIEJlbmdhbGkgKi8gICAgIDB4MDQ1OAorI2RlZmluZSBUVF9NU19MQU5HSURfU0lOREhJX0lORElBIC8qIEFyYWJpYyAqLyAgICAgICAgIDB4MDQ1OQorI2RlZmluZSBUVF9NU19MQU5HSURfU0lOREhJX1BBS0lTVEFOICAgICAgICAgICAgICAgICAgIDB4MDg1OQorICAvKiBNaXNzaW5nIGEgTENJRCBmb3IgU2luZGhpIGluIERldmFuYWdhcmkgc2NyaXB0ICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TWVJJQUNfU1lSSUEgICAgICAgICAgICAgICAgICAgICAgMHgwNDVhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TSU5IQUxFU0VfU1JJX0xBTktBICAgICAgICAgICAgICAgMHgwNDViCisjZGVmaW5lIFRUX01TX0xBTkdJRF9DSEVST0tFRV9VTklURURfU1RBVEVTICAgICAgICAgICAgMHgwNDVjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9JTlVLVElUVVRfQ0FOQURBICAgICAgICAgICAgICAgICAgMHgwNDVkCisjZGVmaW5lIFRUX01TX0xBTkdJRF9BTUhBUklDX0VUSElPUElBICAgICAgICAgICAgICAgICAgMHgwNDVlCisjZGVmaW5lIFRUX01TX0xBTkdJRF9UQU1BWklHSFRfTU9ST0NDTyAvKiBBcmFiaWMgKi8gICAgMHgwNDVmCisjZGVmaW5lIFRUX01TX0xBTkdJRF9UQU1BWklHSFRfTU9ST0NDT19MQVRJTiAgICAgICAgICAgMHgwODVmCisgIC8qIE1pc3NpbmcgYSBMQ0lEIGZvciBUaWZpbmFnaCBzY3JpcHQgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tBU0hNSVJJX1BBS0lTVEFOIC8qIEFyYWJpYyAqLyAgICAweDA0NjAKKyAgLyogU3BlbGxlZCB0aGlzIHdheSBieSBYUHNwMiBQbGF0Zm9ybSBTREsgKDIwMDQtMDctMjYpICovCisgIC8qIHNjcmlwdCBpcyB5ZXQgdW5jbGVhci4uLiBtaWdodCBiZSBBcmFiaWMsIE5hZ2FyaSBvciBTaGFyYWRhICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9LQVNITUlSSV9TQVNJQSAgICAgICAgICAgICAgICAgICAgMHgwODYwCisgIC8qIC4uLiBhbmQgYWxpYXNlZCAoYnkgTVMpIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9LQVNITUlSSV9JTkRJQSBUVF9NU19MQU5HSURfS0FTSE1JUklfU0FTSUEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX05FUEFMSV9ORVBBTCAgICAgICAgICAgICAgICAgICAgICAweDA0NjEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX05FUEFMSV9JTkRJQSAgICAgICAgICAgICAgICAgICAgICAweDA4NjEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSSVNJQU5fTkVUSEVSTEFORFMgICAgICAgICAgICAgICAweDA0NjIKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1BBU0hUT19BRkdIQU5JU1RBTiAgICAgICAgICAgICAgICAweDA0NjMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZJTElQSU5PX1BISUxJUFBJTkVTICAgICAgICAgICAgICAweDA0NjQKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0RISVZFSElfTUFMRElWRVMgICAgICAgICAgICAgICAgICAweDA0NjUKKyAgLyogYWxpYXMgZGVjbGFyZWQgaW4gV2luZG93cyAyMDAwICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9ESVZFSElfTUFMRElWRVMgIFRUX01TX0xBTkdJRF9ESElWRUhJX01BTERJVkVTCisjZGVmaW5lIFRUX01TX0xBTkdJRF9FRE9fTklHRVJJQSAgICAgICAgICAgICAgICAgICAgICAgMHgwNDY2CisjZGVmaW5lIFRUX01TX0xBTkdJRF9GVUxGVUxERV9OSUdFUklBICAgICAgICAgICAgICAgICAgMHgwNDY3CisjZGVmaW5lIFRUX01TX0xBTkdJRF9IQVVTQV9OSUdFUklBICAgICAgICAgICAgICAgICAgICAgMHgwNDY4CisjZGVmaW5lIFRUX01TX0xBTkdJRF9JQklCSU9fTklHRVJJQSAgICAgICAgICAgICAgICAgICAgMHgwNDY5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9ZT1JVQkFfTklHRVJJQSAgICAgICAgICAgICAgICAgICAgMHgwNDZhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9RVUVDSFVBX0JPTElWSUEgICAgICAgICAgICAgICAgICAgMHgwNDZiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9RVUVDSFVBX0VDVUFET1IgICAgICAgICAgICAgICAgICAgMHgwODZiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9RVUVDSFVBX1BFUlUgICAgICAgICAgICAgICAgICAgICAgMHgwYzZiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TRVBFRElfU09VVEhfQUZSSUNBICAgICAgICAgICAgICAgMHgwNDZjCisgIC8qIEFsc28gc3BlbGxlZCBieSBYUHNwMiBQbGF0Zm9ybSBTREsgKDIwMDQtMDctMjYpICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TT1RIT19TT1VUSEVSTl9TT1VUSF9BRlJJQ0EgXAorICAgICAgICAgIFRUX01TX0xBTkdJRF9TRVBFRElfU09VVEhfQUZSSUNBCisgIC8qIGxhbmd1YWdlIGNvZGVzIDB4MDQ2ZCwgMHgwNDZlIGFuZCAweDA0NmYgYXJlIChzdGlsbCkgdW5rbm93bi4gKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0lHQk9fTklHRVJJQSAgICAgICAgICAgICAgICAgICAgICAweDA0NzAKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tBTlVSSV9OSUdFUklBICAgICAgICAgICAgICAgICAgICAweDA0NzEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX09ST01PX0VUSElPUElBICAgICAgICAgICAgICAgICAgICAweDA0NzIKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RJR1JJR05BX0VUSElPUElBICAgICAgICAgICAgICAgICAweDA0NzMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RJR1JJR05BX0VSWVRIUkVBICAgICAgICAgICAgICAgICAweDA4NzMKKyAgLyogYWxzbyBzcGVsbGVkIGluIHRoZSBgUGFzc3BvcnQgU0RLJyBsaXN0IGFzOiAqLworI2RlZmluZSBUVF9NU19MQU5HSURfVElHUklHTkFfRVJZVFJFQSAgVFRfTVNfTEFOR0lEX1RJR1JJR05BX0VSWVRIUkVBCisjZGVmaW5lIFRUX01TX0xBTkdJRF9HVUFSQU5JX1BBUkFHVUFZICAgICAgICAgICAgICAgICAgMHgwNDc0CisjZGVmaW5lIFRUX01TX0xBTkdJRF9IQVdBSUlBTl9VTklURURfU1RBVEVTICAgICAgICAgICAgMHgwNDc1CisjZGVmaW5lIFRUX01TX0xBTkdJRF9MQVRJTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDc2CisjZGVmaW5lIFRUX01TX0xBTkdJRF9TT01BTElfU09NQUxJQSAgICAgICAgICAgICAgICAgICAgMHgwNDc3CisgIC8qIE5vdGU6IFlpIGRvZXMgbm90IGhhdmUgYSAocHJvcGVyKSBJU08gNjM5LTIgY29kZSwgc2luY2UgaXQgaXMgbW9zdGx5ICovCisgIC8qICAgICAgIG5vdCB3cml0dGVuIChidXQgT1RPSCB0aGUgcGVjdWxpYXIgd3JpdGluZyBzeXN0ZW0gaXMgd29ydGggICAgICovCisgIC8qICAgICAgIHN0dWR5aW5nKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9ZSV9DSElOQSAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDc4CisjZGVmaW5lIFRUX01TX0xBTkdJRF9QQVBJQU1FTlRVX05FVEhFUkxBTkRTX0FOVElMTEVTICAgMHgwNDc5CisgIC8qIGxhbmd1YWdlIGNvZGVzIGZyb20gMHgwNDdhIHRvIDB4MDQ3ZiBhcmUgKHN0aWxsKSB1bmtub3duLiAqLworI2RlZmluZSBUVF9NU19MQU5HSURfVUlHSFVSX0NISU5BICAgICAgICAgICAgICAgICAgICAgIDB4MDQ4MAorI2RlZmluZSBUVF9NU19MQU5HSURfTUFPUklfTkVXX1pFQUxBTkQgICAgICAgICAgICAgICAgIDB4MDQ4MQorCisjaWYgMCAgLyogbm90IGRlZW1lZCB1c2VmdWwgZm9yIGZvbnRzICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9IVU1BTl9JTlRFUkZBQ0VfREVWSUNFICAgICAgICAgICAgMHgwNGZmCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogUG9zc2libGUgdmFsdWVzIG9mIHRoZSBgbmFtZScgaWRlbnRpZmllciBmaWVsZCBpbiB0aGUgbmFtZSByZWNvcmRzIG9mICovCisgIC8qIHRoZSBUVEYgYG5hbWUnIHRhYmxlLiAgVGhlc2UgdmFsdWVzIGFyZSBwbGF0Zm9ybSBpbmRlcGVuZGVudC4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFRfTkFNRV9JRF9DT1BZUklHSFQgICAgICAgICAgICAwCisjZGVmaW5lIFRUX05BTUVfSURfRk9OVF9GQU1JTFkgICAgICAgICAgMQorI2RlZmluZSBUVF9OQU1FX0lEX0ZPTlRfU1VCRkFNSUxZICAgICAgIDIKKyNkZWZpbmUgVFRfTkFNRV9JRF9VTklRVUVfSUQgICAgICAgICAgICAzCisjZGVmaW5lIFRUX05BTUVfSURfRlVMTF9OQU1FICAgICAgICAgICAgNAorI2RlZmluZSBUVF9OQU1FX0lEX1ZFUlNJT05fU1RSSU5HICAgICAgIDUKKyNkZWZpbmUgVFRfTkFNRV9JRF9QU19OQU1FICAgICAgICAgICAgICA2CisjZGVmaW5lIFRUX05BTUVfSURfVFJBREVNQVJLICAgICAgICAgICAgNworCisgIC8qIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBmcm9tIHRoZSBPcGVuVHlwZSBzcGVjICovCisjZGVmaW5lIFRUX05BTUVfSURfTUFOVUZBQ1RVUkVSICAgICAgICAgOAorI2RlZmluZSBUVF9OQU1FX0lEX0RFU0lHTkVSICAgICAgICAgICAgIDkKKyNkZWZpbmUgVFRfTkFNRV9JRF9ERVNDUklQVElPTiAgICAgICAgICAxMAorI2RlZmluZSBUVF9OQU1FX0lEX1ZFTkRPUl9VUkwgICAgICAgICAgIDExCisjZGVmaW5lIFRUX05BTUVfSURfREVTSUdORVJfVVJMICAgICAgICAgMTIKKyNkZWZpbmUgVFRfTkFNRV9JRF9MSUNFTlNFICAgICAgICAgICAgICAxMworI2RlZmluZSBUVF9OQU1FX0lEX0xJQ0VOU0VfVVJMICAgICAgICAgIDE0CisgIC8qIG51bWJlciAxNSBpcyByZXNlcnZlZCAqLworI2RlZmluZSBUVF9OQU1FX0lEX1BSRUZFUlJFRF9GQU1JTFkgICAgIDE2CisjZGVmaW5lIFRUX05BTUVfSURfUFJFRkVSUkVEX1NVQkZBTUlMWSAgMTcKKyNkZWZpbmUgVFRfTkFNRV9JRF9NQUNfRlVMTF9OQU1FICAgICAgICAxOAorCisgIC8qIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBuZXcgYXMgb2YgMjAwMC0wMS0yMSAqLworI2RlZmluZSBUVF9OQU1FX0lEX1NBTVBMRV9URVhUICAgICAgICAgIDE5CisKKyAgLyogVGhpcyBpcyBuZXcgaW4gT3BlblR5cGUgMS4zICovCisjZGVmaW5lIFRUX05BTUVfSURfQ0lEX0ZJTkRGT05UX05BTUUgICAgMjAKKworICAvKiBUaGlzIGlzIG5ldyBpbiBPcGVuVHlwZSAxLjUgKi8KKyNkZWZpbmUgVFRfTkFNRV9JRF9XV1NfRkFNSUxZICAgICAgICAgICAyMQorI2RlZmluZSBUVF9OQU1FX0lEX1dXU19TVUJGQU1JTFkgICAgICAgIDIyCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEJpdCBtYXNrIHZhbHVlcyBmb3IgdGhlIFVuaWNvZGUgUmFuZ2VzIGZyb20gdGhlIFRURiBgT1MyICcgdGFibGUuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVXBkYXRlZCAwOC1Ob3YtMjAwOC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIC8qIEJpdCAgMCAgIEJhc2ljIExhdGluICovCisjZGVmaW5lIFRUX1VDUl9CQVNJQ19MQVRJTiAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgMCkgLyogVSswMDIwLVUrMDA3RSAqLworICAvKiBCaXQgIDEgICBDMSBDb250cm9scyBhbmQgTGF0aW4tMSBTdXBwbGVtZW50ICovCisjZGVmaW5lIFRUX1VDUl9MQVRJTjFfU1VQUExFTUVOVCAgICAgICAgICAgICAgICgxTCA8PCAgMSkgLyogVSswMDgwLVUrMDBGRiAqLworICAvKiBCaXQgIDIgICBMYXRpbiBFeHRlbmRlZC1BICovCisjZGVmaW5lIFRUX1VDUl9MQVRJTl9FWFRFTkRFRF9BICAgICAgICAgICAgICAgICgxTCA8PCAgMikgLyogVSswMTAwLVUrMDE3RiAqLworICAvKiBCaXQgIDMgICBMYXRpbiBFeHRlbmRlZC1CICovCisjZGVmaW5lIFRUX1VDUl9MQVRJTl9FWFRFTkRFRF9CICAgICAgICAgICAgICAgICgxTCA8PCAgMykgLyogVSswMTgwLVUrMDI0RiAqLworICAvKiBCaXQgIDQgICBJUEEgRXh0ZW5zaW9ucyAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgUGhvbmV0aWMgRXh0ZW5zaW9ucyAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIFBob25ldGljIEV4dGVuc2lvbnMgU3VwcGxlbWVudCAqLworI2RlZmluZSBUVF9VQ1JfSVBBX0VYVEVOU0lPTlMgICAgICAgICAgICAgICAgICAoMUwgPDwgIDQpIC8qIFUrMDI1MC1VKzAyQUYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzFEMDAtVSsxRDdGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsxRDgwLVUrMURCRiAqLworICAvKiBCaXQgIDUgICBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMgKi8KKyAgLyogICAgICAgICAgTW9kaWZpZXIgVG9uZSBMZXR0ZXJzICAgICovCisjZGVmaW5lIFRUX1VDUl9TUEFDSU5HX01PRElGSUVSICAgICAgICAgICAgICAgICgxTCA8PCAgNSkgLyogVSswMkIwLVUrMDJGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrQTcwMC1VK0E3MUYgKi8KKyAgLyogQml0ICA2ICAgQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzIFN1cHBsZW1lbnQgKi8KKyNkZWZpbmUgVFRfVUNSX0NPTUJJTklOR19ESUFDUklUSUNTICAgICAgICAgICAgKDFMIDw8ICA2KSAvKiBVKzAzMDAtVSswMzZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsxREMwLVUrMURGRiAqLworICAvKiBCaXQgIDcgICBHcmVlayBhbmQgQ29wdGljICovCisjZGVmaW5lIFRUX1VDUl9HUkVFSyAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgNykgLyogVSswMzcwLVUrMDNGRiAqLworICAvKiBCaXQgIDggICBDb3B0aWMgKi8KKyNkZWZpbmUgVFRfVUNSX0NPUFRJQyAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICA4KSAvKiBVKzJDODAtVSsyQ0ZGICovCisgIC8qIEJpdCAgOSAgIEN5cmlsbGljICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgQ3lyaWxsaWMgU3VwcGxlbWVudCAqLworICAvKiAgICAgICAgICBDeXJpbGxpYyBFeHRlbmRlZC1BICovCisgIC8qICAgICAgICAgIEN5cmlsbGljIEV4dGVuZGVkLUIgKi8KKyNkZWZpbmUgVFRfVUNSX0NZUklMTElDICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICA5KSAvKiBVKzA0MDAtVSswNEZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSswNTAwLVUrMDUyRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMkRFMC1VKzJERkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVK0E2NDAtVStBNjlGICovCisgIC8qIEJpdCAxMCAgIEFybWVuaWFuICovCisjZGVmaW5lIFRUX1VDUl9BUk1FTklBTiAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxMCkgLyogVSswNTMwLVUrMDU4RiAqLworICAvKiBCaXQgMTEgICBIZWJyZXcgKi8KKyNkZWZpbmUgVFRfVUNSX0hFQlJFVyAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDExKSAvKiBVKzA1OTAtVSswNUZGICovCisgIC8qIEJpdCAxMiAgIFZhaSAqLworI2RlZmluZSBUVF9VQ1JfVkFJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTIpIC8qIFUrQTUwMC1VK0E2M0YgKi8KKyAgLyogQml0IDEzICAgQXJhYmljICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgQXJhYmljIFN1cHBsZW1lbnQgKi8KKyNkZWZpbmUgVFRfVUNSX0FSQUJJQyAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDEzKSAvKiBVKzA2MDAtVSswNkZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSswNzUwLVUrMDc3RiAqLworICAvKiBCaXQgMTQgICBOS28gKi8KKyNkZWZpbmUgVFRfVUNSX05LTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE0KSAvKiBVKzA3QzAtVSswN0ZGICovCisgIC8qIEJpdCAxNSAgIERldmFuYWdhcmkgKi8KKyNkZWZpbmUgVFRfVUNSX0RFVkFOQUdBUkkgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE1KSAvKiBVKzA5MDAtVSswOTdGICovCisgIC8qIEJpdCAxNiAgIEJlbmdhbGkgKi8KKyNkZWZpbmUgVFRfVUNSX0JFTkdBTEkgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE2KSAvKiBVKzA5ODAtVSswOUZGICovCisgIC8qIEJpdCAxNyAgIEd1cm11a2hpICovCisjZGVmaW5lIFRUX1VDUl9HVVJNVUtISSAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNykgLyogVSswQTAwLVUrMEE3RiAqLworICAvKiBCaXQgMTggICBHdWphcmF0aSAqLworI2RlZmluZSBUVF9VQ1JfR1VKQVJBVEkgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTgpIC8qIFUrMEE4MC1VKzBBRkYgKi8KKyAgLyogQml0IDE5ICAgT3JpeWEgKi8KKyNkZWZpbmUgVFRfVUNSX09SSVlBICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE5KSAvKiBVKzBCMDAtVSswQjdGICovCisgIC8qIEJpdCAyMCAgIFRhbWlsICovCisjZGVmaW5lIFRUX1VDUl9UQU1JTCAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyMCkgLyogVSswQjgwLVUrMEJGRiAqLworICAvKiBCaXQgMjEgICBUZWx1Z3UgKi8KKyNkZWZpbmUgVFRfVUNSX1RFTFVHVSAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDIxKSAvKiBVKzBDMDAtVSswQzdGICovCisgIC8qIEJpdCAyMiAgIEthbm5hZGEgKi8KKyNkZWZpbmUgVFRfVUNSX0tBTk5BREEgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDIyKSAvKiBVKzBDODAtVSswQ0ZGICovCisgIC8qIEJpdCAyMyAgIE1hbGF5YWxhbSAqLworI2RlZmluZSBUVF9VQ1JfTUFMQVlBTEFNICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjMpIC8qIFUrMEQwMC1VKzBEN0YgKi8KKyAgLyogQml0IDI0ICAgVGhhaSAqLworI2RlZmluZSBUVF9VQ1JfVEhBSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjQpIC8qIFUrMEUwMC1VKzBFN0YgKi8KKyAgLyogQml0IDI1ICAgTGFvICovCisjZGVmaW5lIFRUX1VDUl9MQU8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyNSkgLyogVSswRTgwLVUrMEVGRiAqLworICAvKiBCaXQgMjYgICBHZW9yZ2lhbiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEdlb3JnaWFuIFN1cHBsZW1lbnQgKi8KKyNkZWZpbmUgVFRfVUNSX0dFT1JHSUFOICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDI2KSAvKiBVKzEwQTAtVSsxMEZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsyRDAwLVUrMkQyRiAqLworICAvKiBCaXQgMjcgICBCYWxpbmVzZSAqLworI2RlZmluZSBUVF9VQ1JfQkFMSU5FU0UgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjcpIC8qIFUrMUIwMC1VKzFCN0YgKi8KKyAgLyogQml0IDI4ICAgSGFuZ3VsIEphbW8gKi8KKyNkZWZpbmUgVFRfVUNSX0hBTkdVTF9KQU1PICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDI4KSAvKiBVKzExMDAtVSsxMUZGICovCisgIC8qIEJpdCAyOSAgIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwgKi8KKyAgLyogICAgICAgICAgTGF0aW4gRXh0ZW5kZWQtQyAgICAgICAgICAqLworICAvKiAgICAgICAgICBMYXRpbiBFeHRlbmRlZC1EICAgICAgICAgICovCisjZGVmaW5lIFRUX1VDUl9MQVRJTl9FWFRFTkRFRF9BRERJVElPTkFMICAgICAgICgxTCA8PCAyOSkgLyogVSsxRTAwLVUrMUVGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMkM2MC1VKzJDN0YgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVK0E3MjAtVStBN0ZGICovCisgIC8qIEJpdCAzMCAgIEdyZWVrIEV4dGVuZGVkICovCisjZGVmaW5lIFRUX1VDUl9HUkVFS19FWFRFTkRFRCAgICAgICAgICAgICAgICAgICgxTCA8PCAzMCkgLyogVSsxRjAwLVUrMUZGRiAqLworICAvKiBCaXQgMzEgICBHZW5lcmFsIFB1bmN0dWF0aW9uICAgICAgKi8KKyAgLyogICAgICAgICAgU3VwcGxlbWVudGFsIFB1bmN0dWF0aW9uICovCisjZGVmaW5lIFRUX1VDUl9HRU5FUkFMX1BVTkNUVUFUSU9OICAgICAgICAgICAgICgxTCA8PCAzMSkgLyogVSsyMDAwLVUrMjA2RiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMkUwMC1VKzJFN0YgKi8KKyAgLyogQml0IDMyICAgU3VwZXJzY3JpcHRzIEFuZCBTdWJzY3JpcHRzICovCisjZGVmaW5lIFRUX1VDUl9TVVBFUlNDUklQVFNfU1VCU0NSSVBUUyAgICAgICAgICgxTCA8PCAgMCkgLyogVSsyMDcwLVUrMjA5RiAqLworICAvKiBCaXQgMzMgICBDdXJyZW5jeSBTeW1ib2xzICovCisjZGVmaW5lIFRUX1VDUl9DVVJSRU5DWV9TWU1CT0xTICAgICAgICAgICAgICAgICgxTCA8PCAgMSkgLyogVSsyMEEwLVUrMjBDRiAqLworICAvKiBCaXQgMzQgICBDb21iaW5pbmcgRGlhY3JpdGljYWwgTWFya3MgRm9yIFN5bWJvbHMgKi8KKyNkZWZpbmUgVFRfVUNSX0NPTUJJTklOR19ESUFDUklUSUNTX1NZTUIgICAgICAgKDFMIDw8ICAyKSAvKiBVKzIwRDAtVSsyMEZGICovCisgIC8qIEJpdCAzNSAgIExldHRlcmxpa2UgU3ltYm9scyAqLworI2RlZmluZSBUVF9VQ1JfTEVUVEVSTElLRV9TWU1CT0xTICAgICAgICAgICAgICAoMUwgPDwgIDMpIC8qIFUrMjEwMC1VKzIxNEYgKi8KKyAgLyogQml0IDM2ICAgTnVtYmVyIEZvcm1zICovCisjZGVmaW5lIFRUX1VDUl9OVU1CRVJfRk9STVMgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgNCkgLyogVSsyMTUwLVUrMjE4RiAqLworICAvKiBCaXQgMzcgICBBcnJvd3MgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBTdXBwbGVtZW50YWwgQXJyb3dzLUEgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBTdXBwbGVtZW50YWwgQXJyb3dzLUIgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBNaXNjZWxsYW5lb3VzIFN5bWJvbHMgYW5kIEFycm93cyAqLworI2RlZmluZSBUVF9VQ1JfQVJST1dTICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDUpIC8qIFUrMjE5MC1VKzIxRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzI3RjAtVSsyN0ZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsyOTAwLVUrMjk3RiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMkIwMC1VKzJCRkYgKi8KKyAgLyogQml0IDM4ICAgTWF0aGVtYXRpY2FsIE9wZXJhdG9ycyAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIFN1cHBsZW1lbnRhbCBNYXRoZW1hdGljYWwgT3BlcmF0b3JzICAqLworICAvKiAgICAgICAgICBNaXNjZWxsYW5lb3VzIE1hdGhlbWF0aWNhbCBTeW1ib2xzLUEgKi8KKyAgLyogICAgICAgICAgTWlzY2VsbGFuZW91cyBNYXRoZW1hdGljYWwgU3ltYm9scy1CICovCisjZGVmaW5lIFRUX1VDUl9NQVRIRU1BVElDQUxfT1BFUkFUT1JTICAgICAgICAgICgxTCA8PCAgNikgLyogVSsyMjAwLVUrMjJGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMkEwMC1VKzJBRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzI3QzAtVSsyN0VGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsyOTgwLVUrMjlGRiAqLworICAvKiBCaXQgMzkgTWlzY2VsbGFuZW91cyBUZWNobmljYWwgKi8KKyNkZWZpbmUgVFRfVUNSX01JU0NFTExBTkVPVVNfVEVDSE5JQ0FMICAgICAgICAgKDFMIDw8ICA3KSAvKiBVKzIzMDAtVSsyM0ZGICovCisgIC8qIEJpdCA0MCAgIENvbnRyb2wgUGljdHVyZXMgKi8KKyNkZWZpbmUgVFRfVUNSX0NPTlRST0xfUElDVFVSRVMgICAgICAgICAgICAgICAgKDFMIDw8ICA4KSAvKiBVKzI0MDAtVSsyNDNGICovCisgIC8qIEJpdCA0MSAgIE9wdGljYWwgQ2hhcmFjdGVyIFJlY29nbml0aW9uICovCisjZGVmaW5lIFRUX1VDUl9PQ1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgOSkgLyogVSsyNDQwLVUrMjQ1RiAqLworICAvKiBCaXQgNDIgICBFbmNsb3NlZCBBbHBoYW51bWVyaWNzICovCisjZGVmaW5lIFRUX1VDUl9FTkNMT1NFRF9BTFBIQU5VTUVSSUNTICAgICAgICAgICgxTCA8PCAxMCkgLyogVSsyNDYwLVUrMjRGRiAqLworICAvKiBCaXQgNDMgICBCb3ggRHJhd2luZyAqLworI2RlZmluZSBUVF9VQ1JfQk9YX0RSQVdJTkcgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTEpIC8qIFUrMjUwMC1VKzI1N0YgKi8KKyAgLyogQml0IDQ0ICAgQmxvY2sgRWxlbWVudHMgKi8KKyNkZWZpbmUgVFRfVUNSX0JMT0NLX0VMRU1FTlRTICAgICAgICAgICAgICAgICAgKDFMIDw8IDEyKSAvKiBVKzI1ODAtVSsyNTlGICovCisgIC8qIEJpdCA0NSAgIEdlb21ldHJpYyBTaGFwZXMgKi8KKyNkZWZpbmUgVFRfVUNSX0dFT01FVFJJQ19TSEFQRVMgICAgICAgICAgICAgICAgKDFMIDw8IDEzKSAvKiBVKzI1QTAtVSsyNUZGICovCisgIC8qIEJpdCA0NiAgIE1pc2NlbGxhbmVvdXMgU3ltYm9scyAqLworI2RlZmluZSBUVF9VQ1JfTUlTQ0VMTEFORU9VU19TWU1CT0xTICAgICAgICAgICAoMUwgPDwgMTQpIC8qIFUrMjYwMC1VKzI2RkYgKi8KKyAgLyogQml0IDQ3ICAgRGluZ2JhdHMgKi8KKyNkZWZpbmUgVFRfVUNSX0RJTkdCQVRTICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE1KSAvKiBVKzI3MDAtVSsyN0JGICovCisgIC8qIEJpdCA0OCAgIENKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvbiAqLworI2RlZmluZSBUVF9VQ1JfQ0pLX1NZTUJPTFMgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTYpIC8qIFUrMzAwMC1VKzMwM0YgKi8KKyAgLyogQml0IDQ5ICAgSGlyYWdhbmEgKi8KKyNkZWZpbmUgVFRfVUNSX0hJUkFHQU5BICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE3KSAvKiBVKzMwNDAtVSszMDlGICovCisgIC8qIEJpdCA1MCAgIEthdGFrYW5hICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgS2F0YWthbmEgUGhvbmV0aWMgRXh0ZW5zaW9ucyAqLworI2RlZmluZSBUVF9VQ1JfS0FUQUtBTkEgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTgpIC8qIFUrMzBBMC1VKzMwRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzMxRjAtVSszMUZGICovCisgIC8qIEJpdCA1MSAgIEJvcG9tb2ZvICAgICAgICAgICovCisgIC8qICAgICAgICAgIEJvcG9tb2ZvIEV4dGVuZGVkICovCisjZGVmaW5lIFRUX1VDUl9CT1BPTU9GTyAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxOSkgLyogVSszMTAwLVUrMzEyRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMzFBMC1VKzMxQkYgKi8KKyAgLyogQml0IDUyICAgSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbyAqLworI2RlZmluZSBUVF9VQ1JfSEFOR1VMX0NPTVBBVElCSUxJVFlfSkFNTyAgICAgICAoMUwgPDwgMjApIC8qIFUrMzEzMC1VKzMxOEYgKi8KKyAgLyogQml0IDUzICAgUGhhZ3MtUGEgKi8KKyNkZWZpbmUgVFRfVUNSX0NKS19NSVNDICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDIxKSAvKiBVK0E4NDAtVStBODdGICovCisjZGVmaW5lIFRUX1VDUl9LQU5CVU4gIFRUX1VDUl9DSktfTUlTQyAvKiBkZXByZWNhdGVkICovCisjZGVmaW5lIFRUX1VDUl9QSEFHU1BBCisgIC8qIEJpdCA1NCAgIEVuY2xvc2VkIENKSyBMZXR0ZXJzIGFuZCBNb250aHMgKi8KKyNkZWZpbmUgVFRfVUNSX0VOQ0xPU0VEX0NKS19MRVRURVJTX01PTlRIUyAgICAgKDFMIDw8IDIyKSAvKiBVKzMyMDAtVSszMkZGICovCisgIC8qIEJpdCA1NSAgIENKSyBDb21wYXRpYmlsaXR5ICovCisjZGVmaW5lIFRUX1VDUl9DSktfQ09NUEFUSUJJTElUWSAgICAgICAgICAgICAgICgxTCA8PCAyMykgLyogVSszMzAwLVUrMzNGRiAqLworICAvKiBCaXQgNTYgICBIYW5ndWwgU3lsbGFibGVzICovCisjZGVmaW5lIFRUX1VDUl9IQU5HVUwgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyNCkgLyogVStBQzAwLVUrRDdBMyAqLworICAvKiBCaXQgNTcgICBIaWdoIFN1cnJvZ2F0ZXMgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEhpZ2ggUHJpdmF0ZSBVc2UgU3Vycm9nYXRlcyAgKi8KKyAgLyogICAgICAgICAgTG93IFN1cnJvZ2F0ZXMgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEFjY29yZGluZyB0byBPcGVuVHlwZSBzcGVjcyB2LjEuMyssICAgKi8KKyAgLyogc2V0dGluZyBiaXQgNTcgaW1wbGllcyB0aGF0IHRoZXJlIGlzICAqLworICAvKiBhdCBsZWFzdCBvbmUgY29kZXBvaW50IGJleW9uZCB0aGUgICAgICovCisgIC8qIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSB0aGF0IGlzICAgICAgKi8KKyAgLyogc3VwcG9ydGVkIGJ5IHRoaXMgZm9udC4gIFNvIGl0IHJlYWxseSAqLworICAvKiBtZWFucyA+PSBVKzEwMDAwICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX1VDUl9TVVJST0dBVEVTICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyNSkgLyogVStEODAwLVUrREI3RiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrREI4MC1VK0RCRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVK0RDMDAtVStERkZGICovCisjZGVmaW5lIFRUX1VDUl9OT05fUExBTkVfMCAgVFRfVUNSX1NVUlJPR0FURVMKKyAgLyogQml0IDU4ICBQaG9lbmljaWFuICovCisjZGVmaW5lIFRUX1VDUl9QSE9FTklDSUFOICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyNikgLypVKzEwOTAwLVUrMTA5MUYqLworICAvKiBCaXQgNTkgICBDSksgVW5pZmllZCBJZGVvZ3JhcGhzICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIENKSyBSYWRpY2FscyBTdXBwbGVtZW50ICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgS2FuZ3hpIFJhZGljYWxzICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBDaGFyYWN0ZXJzICovCisgIC8qICAgICAgICAgIENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEEgKi8KKyAgLyogICAgICAgICAgQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQiAqLworICAvKiAgICAgICAgICBLYW5idW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX1VDUl9DSktfVU5JRklFRF9JREVPR1JBUEhTICAgICAgICAgICgxTCA8PCAyNykgLyogVSs0RTAwLVUrOUZGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMkU4MC1VKzJFRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzJGMDAtVSsyRkRGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsyRkYwLVUrMkZGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMzQwMC1VKzREQjUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlUrMjAwMDAtVSsyQTZERiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSszMTkwLVUrMzE5RiAqLworICAvKiBCaXQgNjAgICBQcml2YXRlIFVzZSAqLworI2RlZmluZSBUVF9VQ1JfUFJJVkFURV9VU0UgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjgpIC8qIFUrRTAwMC1VK0Y4RkYgKi8KKyAgLyogQml0IDYxICAgQ0pLIFN0cm9rZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzIFN1cHBsZW1lbnQgKi8KKyNkZWZpbmUgVFRfVUNSX0NKS19DT01QQVRJQklMSVRZX0lERU9HUkFQSFMgICAgKDFMIDw8IDI5KSAvKiBVKzMxQzAtVSszMUVGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVStGOTAwLVUrRkFGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qVSsyRjgwMC1VKzJGQTFGKi8KKyAgLyogQml0IDYyICAgQWxwaGFiZXRpYyBQcmVzZW50YXRpb24gRm9ybXMgKi8KKyNkZWZpbmUgVFRfVUNSX0FMUEhBQkVUSUNfUFJFU0VOVEFUSU9OX0ZPUk1TICAgKDFMIDw8IDMwKSAvKiBVK0ZCMDAtVStGQjRGICovCisgIC8qIEJpdCA2MyAgIEFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQSAqLworI2RlZmluZSBUVF9VQ1JfQVJBQklDX1BSRVNFTlRBVElPTlNfQSAgICAgICAgICAoMUwgPDwgMzEpIC8qIFUrRkI1MC1VK0ZERkYgKi8KKyAgLyogQml0IDY0ICAgQ29tYmluaW5nIEhhbGYgTWFya3MgKi8KKyNkZWZpbmUgVFRfVUNSX0NPTUJJTklOR19IQUxGX01BUktTICAgICAgICAgICAgKDFMIDw8ICAwKSAvKiBVK0ZFMjAtVStGRTJGICovCisgIC8qIEJpdCA2NSAgIFZlcnRpY2FsIGZvcm1zICAgICAgICAgICovCisgIC8qICAgICAgICAgIENKSyBDb21wYXRpYmlsaXR5IEZvcm1zICovCisjZGVmaW5lIFRUX1VDUl9DSktfQ09NUEFUSUJJTElUWV9GT1JNUyAgICAgICAgICgxTCA8PCAgMSkgLyogVStGRTEwLVUrRkUxRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrRkUzMC1VK0ZFNEYgKi8KKyAgLyogQml0IDY2ICAgU21hbGwgRm9ybSBWYXJpYW50cyAqLworI2RlZmluZSBUVF9VQ1JfU01BTExfRk9STV9WQVJJQU5UUyAgICAgICAgICAgICAoMUwgPDwgIDIpIC8qIFUrRkU1MC1VK0ZFNkYgKi8KKyAgLyogQml0IDY3ICAgQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1CICovCisjZGVmaW5lIFRUX1VDUl9BUkFCSUNfUFJFU0VOVEFUSU9OU19CICAgICAgICAgICgxTCA8PCAgMykgLyogVStGRTcwLVUrRkVGRSAqLworICAvKiBCaXQgNjggICBIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBGb3JtcyAqLworI2RlZmluZSBUVF9VQ1JfSEFMRldJRFRIX0ZVTExXSURUSF9GT1JNUyAgICAgICAoMUwgPDwgIDQpIC8qIFUrRkYwMC1VK0ZGRUYgKi8KKyAgLyogQml0IDY5ICAgU3BlY2lhbHMgKi8KKyNkZWZpbmUgVFRfVUNSX1NQRUNJQUxTICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICA1KSAvKiBVK0ZGRjAtVStGRkZEICovCisgIC8qIEJpdCA3MCAgIFRpYmV0YW4gKi8KKyNkZWZpbmUgVFRfVUNSX1RJQkVUQU4gICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICA2KSAvKiBVKzBGMDAtVSswRkZGICovCisgIC8qIEJpdCA3MSAgIFN5cmlhYyAqLworI2RlZmluZSBUVF9VQ1JfU1lSSUFDICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDcpIC8qIFUrMDcwMC1VKzA3NEYgKi8KKyAgLyogQml0IDcyICAgVGhhYW5hICovCisjZGVmaW5lIFRUX1VDUl9USEFBTkEgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgOCkgLyogVSswNzgwLVUrMDdCRiAqLworICAvKiBCaXQgNzMgICBTaW5oYWxhICovCisjZGVmaW5lIFRUX1VDUl9TSU5IQUxBICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgOSkgLyogVSswRDgwLVUrMERGRiAqLworICAvKiBCaXQgNzQgICBNeWFubWFyICovCisjZGVmaW5lIFRUX1VDUl9NWUFOTUFSICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxMCkgLyogVSsxMDAwLVUrMTA5RiAqLworICAvKiBCaXQgNzUgICBFdGhpb3BpYyAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEV0aGlvcGljIFN1cHBsZW1lbnQgKi8KKyAgLyogICAgICAgICAgRXRoaW9waWMgRXh0ZW5kZWQgICAqLworI2RlZmluZSBUVF9VQ1JfRVRISU9QSUMgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTEpIC8qIFUrMTIwMC1VKzEzN0YgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzEzODAtVSsxMzlGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsyRDgwLVUrMkRERiAqLworICAvKiBCaXQgNzYgICBDaGVyb2tlZSAqLworI2RlZmluZSBUVF9VQ1JfQ0hFUk9LRUUgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTIpIC8qIFUrMTNBMC1VKzEzRkYgKi8KKyAgLyogQml0IDc3ICAgVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bGxhYmljcyAqLworI2RlZmluZSBUVF9VQ1JfQ0FOQURJQU5fQUJPUklHSU5BTF9TWUxMQUJJQ1MgICAoMUwgPDwgMTMpIC8qIFUrMTQwMC1VKzE2N0YgKi8KKyAgLyogQml0IDc4ICAgT2doYW0gKi8KKyNkZWZpbmUgVFRfVUNSX09HSEFNICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE0KSAvKiBVKzE2ODAtVSsxNjlGICovCisgIC8qIEJpdCA3OSAgIFJ1bmljICovCisjZGVmaW5lIFRUX1VDUl9SVU5JQyAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNSkgLyogVSsxNkEwLVUrMTZGRiAqLworICAvKiBCaXQgODAgICBLaG1lciAgICAgICAgICovCisgIC8qICAgICAgICAgIEtobWVyIFN5bWJvbHMgKi8KKyNkZWZpbmUgVFRfVUNSX0tITUVSICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE2KSAvKiBVKzE3ODAtVSsxN0ZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsxOUUwLVUrMTlGRiAqLworICAvKiBCaXQgODEgICBNb25nb2xpYW4gKi8KKyNkZWZpbmUgVFRfVUNSX01PTkdPTElBTiAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE3KSAvKiBVKzE4MDAtVSsxOEFGICovCisgIC8qIEJpdCA4MiAgIEJyYWlsbGUgUGF0dGVybnMgKi8KKyNkZWZpbmUgVFRfVUNSX0JSQUlMTEUgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE4KSAvKiBVKzI4MDAtVSsyOEZGICovCisgIC8qIEJpdCA4MyAgIFlpIFN5bGxhYmxlcyAqLworICAvKiAgICAgICAgICBZaSBSYWRpY2FscyAgKi8KKyNkZWZpbmUgVFRfVUNSX1lJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE5KSAvKiBVK0EwMDAtVStBNDhGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVStBNDkwLVUrQTRDRiAqLworICAvKiBCaXQgODQgICBUYWdhbG9nICAqLworICAvKiAgICAgICAgICBIYW51bm9vICAqLworICAvKiAgICAgICAgICBCdWhpZCAgICAqLworICAvKiAgICAgICAgICBUYWdiYW53YSAqLworI2RlZmluZSBUVF9VQ1JfUEhJTElQUElORSAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjApIC8qIFUrMTcwMC1VKzE3MUYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzE3MjAtVSsxNzNGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsxNzQwLVUrMTc1RiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMTc2MC1VKzE3N0YgKi8KKyAgLyogQml0IDg1ICAgT2xkIEl0YWxpYyAqLworI2RlZmluZSBUVF9VQ1JfT0xEX0lUQUxJQyAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjEpIC8qVSsxMDMwMC1VKzEwMzJGKi8KKyAgLyogQml0IDg2ICAgR290aGljICovCisjZGVmaW5lIFRUX1VDUl9HT1RISUMgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyMikgLypVKzEwMzMwLVUrMTAzNEYqLworICAvKiBCaXQgODcgICBEZXNlcmV0ICovCisjZGVmaW5lIFRUX1VDUl9ERVNFUkVUICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyMykgLypVKzEwNDAwLVUrMTA0NEYqLworICAvKiBCaXQgODggICBCeXphbnRpbmUgTXVzaWNhbCBTeW1ib2xzICAgICAgKi8KKyAgLyogICAgICAgICAgTXVzaWNhbCBTeW1ib2xzICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEFuY2llbnQgR3JlZWsgTXVzaWNhbCBOb3RhdGlvbiAqLworI2RlZmluZSBUVF9VQ1JfTVVTSUNBTF9TWU1CT0xTICAgICAgICAgICAgICAgICAoMUwgPDwgMjQpIC8qVSsxRDAwMC1VKzFEMEZGKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlUrMUQxMDAtVSsxRDFGRiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVKzFEMjAwLVUrMUQyNEYqLworICAvKiBCaXQgODkgICBNYXRoZW1hdGljYWwgQWxwaGFudW1lcmljIFN5bWJvbHMgKi8KKyNkZWZpbmUgVFRfVUNSX01BVEhfQUxQSEFOVU1FUklDX1NZTUJPTFMgICAgICAgKDFMIDw8IDI1KSAvKlUrMUQ0MDAtVSsxRDdGRiovCisgIC8qIEJpdCA5MCAgIFByaXZhdGUgVXNlIChwbGFuZSAxNSkgKi8KKyAgLyogICAgICAgICAgUHJpdmF0ZSBVc2UgKHBsYW5lIDE2KSAqLworI2RlZmluZSBUVF9VQ1JfUFJJVkFURV9VU0VfU1VQUExFTUVOVEFSWSAgICAgICAoMUwgPDwgMjYpIC8qVStGMDAwMC1VK0ZGRkZEKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVKzEwMDAwMC1VKzEwRkZGRCovCisgIC8qIEJpdCA5MSAgIFZhcmlhdGlvbiBTZWxlY3RvcnMgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBWYXJpYXRpb24gU2VsZWN0b3JzIFN1cHBsZW1lbnQgKi8KKyNkZWZpbmUgVFRfVUNSX1ZBUklBVElPTl9TRUxFQ1RPUlMgICAgICAgICAgICAgKDFMIDw8IDI3KSAvKiBVK0ZFMDAtVStGRTBGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVK0UwMTAwLVUrRTAxRUYqLworICAvKiBCaXQgOTIgICBUYWdzICovCisjZGVmaW5lIFRUX1VDUl9UQUdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyOCkgLypVK0UwMDAwLVUrRTAwN0YqLworICAvKiBCaXQgOTMgICBMaW1idSAqLworI2RlZmluZSBUVF9VQ1JfTElNQlUgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjkpIC8qIFUrMTkwMC1VKzE5NEYgKi8KKyAgLyogQml0IDk0ICAgVGFpIExlICovCisjZGVmaW5lIFRUX1VDUl9UQUlfTEUgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAzMCkgLyogVSsxOTUwLVUrMTk3RiAqLworICAvKiBCaXQgOTUgICBOZXcgVGFpIEx1ZSAqLworI2RlZmluZSBUVF9VQ1JfTkVXX1RBSV9MVUUgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMzEpIC8qIFUrMTk4MC1VKzE5REYgKi8KKyAgLyogQml0IDk2ICAgQnVnaW5lc2UgKi8KKyNkZWZpbmUgVFRfVUNSX0JVR0lORVNFICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICAwKSAvKiBVKzFBMDAtVSsxQTFGICovCisgIC8qIEJpdCA5NyAgIEdsYWdvbGl0aWMgKi8KKyNkZWZpbmUgVFRfVUNSX0dMQUdPTElUSUMgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICAxKSAvKiBVKzJDMDAtVSsyQzVGICovCisgIC8qIEJpdCA5OCAgIFRpZmluYWdoICovCisjZGVmaW5lIFRUX1VDUl9USUZJTkFHSCAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgMikgLyogVSsyRDMwLVUrMkQ3RiAqLworICAvKiBCaXQgOTkgICBZaWppbmcgSGV4YWdyYW0gU3ltYm9scyAqLworI2RlZmluZSBUVF9VQ1JfWUlKSU5HICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDMpIC8qIFUrNERDMC1VKzRERkYgKi8KKyAgLyogQml0IDEwMCAgU3lsb3RpIE5hZ3JpICovCisjZGVmaW5lIFRUX1VDUl9TWUxPVElfTkFHUkkgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgNCkgLyogVStBODAwLVUrQTgyRiAqLworICAvKiBCaXQgMTAxICBMaW5lYXIgQiBTeWxsYWJhcnkgKi8KKyAgLyogICAgICAgICAgTGluZWFyIEIgSWRlb2dyYW1zICovCisgIC8qICAgICAgICAgIEFlZ2VhbiBOdW1iZXJzICAgICAqLworI2RlZmluZSBUVF9VQ1JfTElORUFSX0IgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDUpIC8qVSsxMDAwMC1VKzEwMDdGKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlUrMTAwODAtVSsxMDBGRiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVKzEwMTAwLVUrMTAxM0YqLworICAvKiBCaXQgMTAyICBBbmNpZW50IEdyZWVrIE51bWJlcnMgKi8KKyNkZWZpbmUgVFRfVUNSX0FOQ0lFTlRfR1JFRUtfTlVNQkVSUyAgICAgICAgICAgKDFMIDw8ICA2KSAvKlUrMTAxNDAtVSsxMDE4RiovCisgIC8qIEJpdCAxMDMgIFVnYXJpdGljICovCisjZGVmaW5lIFRUX1VDUl9VR0FSSVRJQyAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgNykgLypVKzEwMzgwLVUrMTAzOUYqLworICAvKiBCaXQgMTA0ICBPbGQgUGVyc2lhbiAqLworI2RlZmluZSBUVF9VQ1JfT0xEX1BFUlNJQU4gICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDgpIC8qVSsxMDNBMC1VKzEwM0RGKi8KKyAgLyogQml0IDEwNSAgU2hhdmlhbiAqLworI2RlZmluZSBUVF9VQ1JfU0hBVklBTiAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDkpIC8qVSsxMDQ1MC1VKzEwNDdGKi8KKyAgLyogQml0IDEwNiAgT3NtYW55YSAqLworI2RlZmluZSBUVF9VQ1JfT1NNQU5ZQSAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTApIC8qVSsxMDQ4MC1VKzEwNEFGKi8KKyAgLyogQml0IDEwNyAgQ3lwcmlvdCBTeWxsYWJhcnkgKi8KKyNkZWZpbmUgVFRfVUNSX0NZUFJJT1RfU1lMTEFCQVJZICAgICAgICAgICAgICAgKDFMIDw8IDExKSAvKlUrMTA4MDAtVSsxMDgzRiovCisgIC8qIEJpdCAxMDggIEtoYXJvc2h0aGkgKi8KKyNkZWZpbmUgVFRfVUNSX0tIQVJPU0hUSEkgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDEyKSAvKlUrMTBBMDAtVSsxMEE1RiovCisgIC8qIEJpdCAxMDkgIFRhaSBYdWFuIEppbmcgU3ltYm9scyAqLworI2RlZmluZSBUVF9VQ1JfVEFJX1hVQU5fSklORyAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTMpIC8qVSsxRDMwMC1VKzFEMzVGKi8KKyAgLyogQml0IDExMCAgQ3VuZWlmb3JtICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEN1bmVpZm9ybSBOdW1iZXJzIGFuZCBQdW5jdHVhdGlvbiAqLworI2RlZmluZSBUVF9VQ1JfQ1VORUlGT1JNICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTQpIC8qVSsxMjAwMC1VKzEyM0ZGKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlUrMTI0MDAtVSsxMjQ3RiovCisgIC8qIEJpdCAxMTEgIENvdW50aW5nIFJvZCBOdW1lcmFscyAqLworI2RlZmluZSBUVF9VQ1JfQ09VTlRJTkdfUk9EX05VTUVSQUxTICAgICAgICAgICAoMUwgPDwgMTUpIC8qVSsxRDM2MC1VKzFEMzdGKi8KKyAgLyogQml0IDExMiAgU3VuZGFuZXNlICovCisjZGVmaW5lIFRUX1VDUl9TVU5EQU5FU0UgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNikgLyogVSsxQjgwLVUrMUJCRiAqLworICAvKiBCaXQgMTEzICBMZXBjaGEgKi8KKyNkZWZpbmUgVFRfVUNSX0xFUENIQSAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE3KSAvKiBVKzFDMDAtVSsxQzRGICovCisgIC8qIEJpdCAxMTQgIE9sIENoaWtpICovCisjZGVmaW5lIFRUX1VDUl9PTF9DSElLSSAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxOCkgLyogVSsxQzUwLVUrMUM3RiAqLworICAvKiBCaXQgMTE1ICBTYXVyYXNodHJhICovCisjZGVmaW5lIFRUX1VDUl9TQVVSQVNIVFJBICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxOSkgLyogVStBODgwLVUrQThERiAqLworICAvKiBCaXQgMTE2ICBLYXlhaCBMaSAqLworI2RlZmluZSBUVF9VQ1JfS0FZQUhfTEkgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjApIC8qIFUrQTkwMC1VK0E5MkYgKi8KKyAgLyogQml0IDExNyAgUmVqYW5nICovCisjZGVmaW5lIFRUX1VDUl9SRUpBTkcgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyMSkgLyogVStBOTMwLVUrQTk1RiAqLworICAvKiBCaXQgMTE4ICBDaGFtICovCisjZGVmaW5lIFRUX1VDUl9DSEFNICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyMikgLyogVStBQTAwLVUrQUE1RiAqLworICAvKiBCaXQgMTE5ICBBbmNpZW50IFN5bWJvbHMgKi8KKyNkZWZpbmUgVFRfVUNSX0FOQ0lFTlRfU1lNQk9MUyAgICAgICAgICAgICAgICAgKDFMIDw8IDIzKSAvKlUrMTAxOTAtVSsxMDFDRiovCisgIC8qIEJpdCAxMjAgIFBoYWlzdG9zIERpc2MgKi8KKyNkZWZpbmUgVFRfVUNSX1BIQUlTVE9TX0RJU0MgICAgICAgICAgICAgICAgICAgKDFMIDw8IDI0KSAvKlUrMTAxRDAtVSsxMDFGRiovCisgIC8qIEJpdCAxMjEgIENhcmlhbiAqLworICAvKiAgICAgICAgICBMeWNpYW4gKi8KKyAgLyogICAgICAgICAgTHlkaWFuICovCisjZGVmaW5lIFRUX1VDUl9PTERfQU5BVE9MSUFOICAgICAgICAgICAgICAgICAgICgxTCA8PCAyNSkgLypVKzEwMkEwLVUrMTAyREYqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qVSsxMDI4MC1VKzEwMjlGKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlUrMTA5MjAtVSsxMDkzRiovCisgIC8qIEJpdCAxMjIgIERvbWlubyBUaWxlcyAgKi8KKyAgLyogICAgICAgICAgTWFoam9uZyBUaWxlcyAqLworI2RlZmluZSBUVF9VQ1JfR0FNRV9USUxFUyAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjYpIC8qVSsxRjAzMC1VKzFGMDlGKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlUrMUYwMDAtVSsxRjAyRiovCisgIC8qIEJpdCAxMjMtMTI3IFJlc2VydmVkIGZvciBwcm9jZXNzLWludGVybmFsIHVzYWdlICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNvbWUgY29tcGlsZXJzIGhhdmUgYSB2ZXJ5IGxpbWl0ZWQgbGVuZ3RoIG9mIGlkZW50aWZpZXJzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZiBkZWZpbmVkKCBfX1RVUkJPQ19fICkgJiYgX19UVVJCT0NfXyA8IDB4MDQxMCB8fCBkZWZpbmVkKCBfX1BBQ0lGSUNfXyApCisjZGVmaW5lIEhBVkVfTElNSVRfT05fSURFTlRTCisjZW5kaWYKKworCisjaWZuZGVmIEhBVkVfTElNSVRfT05fSURFTlRTCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEhlcmUgc29tZSBhbGlhcyAjZGVmaW5lcyBpbiBvcmRlciB0byBiZSBjbGVhcmVyLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlc2UgYXJlIG5vdCBhbHdheXMgI2RlZmluZWQgdG8gc3RheSB3aXRoaW4gdGhlIDMxfmNoYXJhY3RlciBsaW1pdCAgICovCisgIC8qIHdoaWNoIHNvbWUgY29tcGlsZXJzIGhhdmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQ3JlZGl0cyBnbyB0byBEYXZlIEhvbyA8ZGhvb0BmbGFzaC5uZXQ+IGZvciBwb2ludGluZyBvdXQgdGhhdCBtb2Rlcm4gICovCisgIC8qIEJvcmxhbmQgY29tcGlsZXJzIChyZWFkOiBmcm9tIEJDKysgMy4xIG9uKSBjYW4gaW5jcmVhc2UgdGhpcyBsaW1pdC4gICAqLworICAvKiBJZiB5b3UgZ2V0IGEgd2FybmluZyB3aXRoIHN1Y2ggYSBjb21waWxlciwgdXNlIHRoZSAtaTQwIHN3aXRjaC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX1VDUl9BUkFCSUNfUFJFU0VOVEFUSU9OX0ZPUk1TX0EgICAgICBcCisgICAgICAgICBUVF9VQ1JfQVJBQklDX1BSRVNFTlRBVElPTlNfQQorI2RlZmluZSBUVF9VQ1JfQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19CICAgICAgXAorICAgICAgICAgVFRfVUNSX0FSQUJJQ19QUkVTRU5UQVRJT05TX0IKKworI2RlZmluZSBUVF9VQ1JfQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTICAgICAgXAorICAgICAgICAgVFRfVUNSX0NPTUJJTklOR19ESUFDUklUSUNTCisjZGVmaW5lIFRUX1VDUl9DT01CSU5JTkdfRElBQ1JJVElDQUxfTUFSS1NfU1lNQiBcCisgICAgICAgICBUVF9VQ1JfQ09NQklOSU5HX0RJQUNSSVRJQ1NfU1lNQgorCisKKyNlbmRpZiAvKiAhSEFWRV9MSU1JVF9PTl9JREVOVFMgKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUTkFNRUlEX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS90dHRhYmxlcy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS90dHRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MjA1NTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL3R0dGFibGVzLmgKQEAgLTAsMCArMSw3NzcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0dGFibGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBCYXNpYyBTRk5UL1RydWVUeXBlIHRhYmxlcyBkZWZpbml0aW9ucyBhbmQgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAqLworLyogICAgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNSwgMjAwOC0yMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVFRBQkxFU19IX18KKyNkZWZpbmUgX19UVFRBQkxFU19IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0cnVldHlwZV90YWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUcnVlVHlwZSBUYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUcnVlVHlwZSBzcGVjaWZpYyB0YWJsZSB0eXBlcyBhbmQgZnVuY3Rpb25zLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGRlZmluaXRpb24gb2YgVHJ1ZVR5cGUtc3BlY2lmaWMgdGFibGVzICAgKi8KKyAgLyogICAgYXMgd2VsbCBhcyBzb21lIHJvdXRpbmVzIHVzZWQgdG8gYWNjZXNzIGFuZCBwcm9jZXNzIHRoZW0uICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0hlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYSBUcnVlVHlwZSBmb250IGhlYWRlciB0YWJsZS4gIEFsbCAgICAgICAqLworICAvKiAgICBmaWVsZHMgZm9sbG93IHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9IZWFkZXJfCisgIHsKKyAgICBGVF9GaXhlZCAgIFRhYmxlX1ZlcnNpb247CisgICAgRlRfRml4ZWQgICBGb250X1JldmlzaW9uOworCisgICAgRlRfTG9uZyAgICBDaGVja1N1bV9BZGp1c3Q7CisgICAgRlRfTG9uZyAgICBNYWdpY19OdW1iZXI7CisKKyAgICBGVF9VU2hvcnQgIEZsYWdzOworICAgIEZUX1VTaG9ydCAgVW5pdHNfUGVyX0VNOworCisgICAgRlRfTG9uZyAgICBDcmVhdGVkIFsyXTsKKyAgICBGVF9Mb25nICAgIE1vZGlmaWVkWzJdOworCisgICAgRlRfU2hvcnQgICB4TWluOworICAgIEZUX1Nob3J0ICAgeU1pbjsKKyAgICBGVF9TaG9ydCAgIHhNYXg7CisgICAgRlRfU2hvcnQgICB5TWF4OworCisgICAgRlRfVVNob3J0ICBNYWNfU3R5bGU7CisgICAgRlRfVVNob3J0ICBMb3dlc3RfUmVjX1BQRU07CisKKyAgICBGVF9TaG9ydCAgIEZvbnRfRGlyZWN0aW9uOworICAgIEZUX1Nob3J0ICAgSW5kZXhfVG9fTG9jX0Zvcm1hdDsKKyAgICBGVF9TaG9ydCAgIEdseXBoX0RhdGFfRm9ybWF0OworCisgIH0gVFRfSGVhZGVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfSG9yaUhlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCBhIFRydWVUeXBlIGhvcml6b250YWwgaGVhZGVyLCB0aGUgYGhoZWEnICovCisgIC8qICAgIHRhYmxlLCBhcyB3ZWxsIGFzIHRoZSBjb3JyZXNwb25kaW5nIGhvcml6b250YWwgbWV0cmljcyB0YWJsZSwgICAgICAqLworICAvKiAgICBpLmUuLCB0aGUgYGhtdHgnIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBWZXJzaW9uICAgICAgICAgICAgICAgIDo6IFRoZSB0YWJsZSB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFzY2VuZGVyICAgICAgICAgICAgICAgOjogVGhlIGZvbnQncyBhc2NlbmRlciwgaS5lLiwgdGhlIGRpc3RhbmNlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGJhc2VsaW5lIHRvIHRoZSB0b3AtbW9zdCBvZiBhbGwgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCBwb2ludHMgZm91bmQgaW4gdGhlIGZvbnQuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFsdWUgaXMgaW52YWxpZCBpbiBtYW55IGZvbnRzLCBhcyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyB1c3VhbGx5IHNldCBieSB0aGUgZm9udCBkZXNpZ25lciwgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9mdGVuIHJlZmxlY3RzIG9ubHkgYSBwb3J0aW9uIG9mIHRoZSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocyBmb3VuZCBpbiB0aGUgZm9udCAobWF5YmUgQVNDSUkpLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCB1c2UgdGhlIGBzVHlwb0FzY2VuZGVyJyBmaWVsZCAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBPUy8yIHRhYmxlIGluc3RlYWQgaWYgeW91IHdhbnQgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29ycmVjdCBvbmUuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZXNjZW5kZXIgICAgICAgICAgICAgIDo6IFRoZSBmb250J3MgZGVzY2VuZGVyLCBpLmUuLCB0aGUgZGlzdGFuY2UgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBiYXNlbGluZSB0byB0aGUgYm90dG9tLW1vc3Qgb2YgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsIGdseXBoIHBvaW50cyBmb3VuZCBpbiB0aGUgZm9udC4gIEl0ICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5lZ2F0aXZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YWx1ZSBpcyBpbnZhbGlkIGluIG1hbnkgZm9udHMsIGFzICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IGlzIHVzdWFsbHkgc2V0IGJ5IHRoZSBmb250IGRlc2lnbmVyLCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgb2Z0ZW4gcmVmbGVjdHMgb25seSBhIHBvcnRpb24gb2YgdGhlICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzIGZvdW5kIGluIHRoZSBmb250IChtYXliZSBBU0NJSSkuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHVzZSB0aGUgYHNUeXBvRGVzY2VuZGVyJyAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgb2YgdGhlIE9TLzIgdGFibGUgaW5zdGVhZCBpZiB5b3UgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdGhlIGNvcnJlY3Qgb25lLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExpbmVfR2FwICAgICAgICAgICAgICAgOjogVGhlIGZvbnQncyBsaW5lIGdhcCwgaS5lLiwgdGhlIGRpc3RhbmNlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFkZCB0byB0aGUgYXNjZW5kZXIgYW5kIGRlc2NlbmRlciB0byAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgdGhlIEJUQiwgaS5lLiwgdGhlICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUtdG8tYmFzZWxpbmUgZGlzdGFuY2UgZm9yIHRoZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFkdmFuY2VfV2lkdGhfTWF4ICAgICAgOjogVGhpcyBmaWVsZCBpcyB0aGUgbWF4aW11bSBvZiBhbGwgYWR2YW5jZSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRocyBmb3VuZCBpbiB0aGUgZm9udC4gIEl0IGNhbiBiZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGNvbXB1dGUgdGhlIG1heGltdW0gd2lkdGggb2YgYW4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJiaXRyYXJ5IHN0cmluZyBvZiB0ZXh0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWluX0xlZnRfU2lkZV9CZWFyaW5nICA6OiBUaGUgbWluaW11bSBsZWZ0IHNpZGUgYmVhcmluZyBvZiBhbGwgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzIHdpdGhpbiB0aGUgZm9udC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWluX1JpZ2h0X1NpZGVfQmVhcmluZyA6OiBUaGUgbWluaW11bSByaWdodCBzaWRlIGJlYXJpbmcgb2YgYWxsICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzIHdpdGhpbiB0aGUgZm9udC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeE1heF9FeHRlbnQgICAgICAgICAgICA6OiBUaGUgbWF4aW11bSBob3Jpem9udGFsIGV4dGVudCAoaS5lLiwgdGhlICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHdpZHRoJyBvZiBhIGdseXBoJ3MgYm91bmRpbmcgYm94KSBmb3IgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBnbHlwaHMgaW4gdGhlIGZvbnQuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNhcmV0X1Nsb3BlX1Jpc2UgICAgICAgOjogVGhlIHJpc2UgY29lZmZpY2llbnQgb2YgdGhlIGN1cnNvcidzICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3BlIG9mIHRoZSBjdXJzb3IgKHNsb3BlPXJpc2UvcnVuKS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNhcmV0X1Nsb3BlX1J1biAgICAgICAgOjogVGhlIHJ1biBjb2VmZmljaWVudCBvZiB0aGUgY3Vyc29yJ3MgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3BlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJlc2VydmVkICAgICAgICAgICAgICAgOjogOH5yZXNlcnZlZCBieXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWV0cmljX0RhdGFfRm9ybWF0ICAgICA6OiBBbHdheXN+MC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1iZXJfT2ZfSE1ldHJpY3MgICAgIDo6IE51bWJlciBvZiBITWV0cmljcyBlbnRyaWVzIGluIHRoZSBgaG10eCcgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSAtLSB0aGlzIHZhbHVlIGNhbiBiZSBzbWFsbGVyIHRoYW4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRvdGFsIG51bWJlciBvZiBnbHlwaHMgaW4gdGhlIGZvbnQuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9uZ19tZXRyaWNzICAgICAgICAgICA6OiBBIHBvaW50ZXIgaW50byB0aGUgYGhtdHgnIHRhYmxlLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaG9ydF9tZXRyaWNzICAgICAgICAgIDo6IEEgcG9pbnRlciBpbnRvIHRoZSBgaG10eCcgdGFibGUuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJTVBPUlRBTlQ6IFRoZSBUVF9Ib3JpSGVhZGVyIGFuZCBUVF9WZXJ0SGVhZGVyIHN0cnVjdHVyZXMgc2hvdWxkICAgKi8KKyAgLyogICAgICAgICAgICAgICBiZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgbmFtZXMgb2YgdGhlaXIgZmllbGRzIHdoaWNoICovCisgIC8qICAgICAgICAgICAgICAgYXJlIGRpZmZlcmVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBhIHNpbmdsZSBmdW5jdGlvbiBpbiB0aGUgYHR0bG9hZCcgICAgICovCisgIC8qICAgICAgICAgICAgICAgbW9kdWxlIGlzIGFibGUgdG8gcmVhZCBib3RoIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCAqLworICAvKiAgICAgICAgICAgICAgIGhlYWRlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9Ib3JpSGVhZGVyXworICB7CisgICAgRlRfRml4ZWQgICBWZXJzaW9uOworICAgIEZUX1Nob3J0ICAgQXNjZW5kZXI7CisgICAgRlRfU2hvcnQgICBEZXNjZW5kZXI7CisgICAgRlRfU2hvcnQgICBMaW5lX0dhcDsKKworICAgIEZUX1VTaG9ydCAgYWR2YW5jZV9XaWR0aF9NYXg7ICAgICAgLyogYWR2YW5jZSB3aWR0aCBtYXhpbXVtICovCisKKyAgICBGVF9TaG9ydCAgIG1pbl9MZWZ0X1NpZGVfQmVhcmluZzsgIC8qIG1pbmltdW0gbGVmdC1zYiAgICAgICAqLworICAgIEZUX1Nob3J0ICAgbWluX1JpZ2h0X1NpZGVfQmVhcmluZzsgLyogbWluaW11bSByaWdodC1zYiAgICAgICovCisgICAgRlRfU2hvcnQgICB4TWF4X0V4dGVudDsgICAgICAgICAgICAvKiB4bWF4IGV4dGVudHMgICAgICAgICAgKi8KKyAgICBGVF9TaG9ydCAgIGNhcmV0X1Nsb3BlX1Jpc2U7CisgICAgRlRfU2hvcnQgICBjYXJldF9TbG9wZV9SdW47CisgICAgRlRfU2hvcnQgICBjYXJldF9PZmZzZXQ7CisKKyAgICBGVF9TaG9ydCAgIFJlc2VydmVkWzRdOworCisgICAgRlRfU2hvcnQgICBtZXRyaWNfRGF0YV9Gb3JtYXQ7CisgICAgRlRfVVNob3J0ICBudW1iZXJfT2ZfSE1ldHJpY3M7CisKKyAgICAvKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgbm90IGRlZmluZWQgYnkgdGhlIFRydWVUeXBlIHNwZWNpZmljYXRpb24gKi8KKyAgICAvKiBidXQgdGhleSBhcmUgdXNlZCB0byBjb25uZWN0IHRoZSBtZXRyaWNzIGhlYWRlciB0byB0aGUgcmVsZXZhbnQgICAgKi8KKyAgICAvKiBgSE1UWCcgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIHZvaWQqICAgICAgbG9uZ19tZXRyaWNzOworICAgIHZvaWQqICAgICAgc2hvcnRfbWV0cmljczsKKworICB9IFRUX0hvcmlIZWFkZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9WZXJ0SGVhZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgVHJ1ZVR5cGUgdmVydGljYWwgaGVhZGVyLCB0aGUgYHZoZWEnICAgKi8KKyAgLyogICAgdGFibGUsIGFzIHdlbGwgYXMgdGhlIGNvcnJlc3BvbmRpbmcgdmVydGljYWwgbWV0cmljcyB0YWJsZSwgaS5lLiwgICovCisgIC8qICAgIHRoZSBgdm10eCcgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFZlcnNpb24gICAgICAgICAgICAgICAgIDo6IFRoZSB0YWJsZSB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQXNjZW5kZXIgICAgICAgICAgICAgICAgOjogVGhlIGZvbnQncyBhc2NlbmRlciwgaS5lLiwgdGhlIGRpc3RhbmNlICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGJhc2VsaW5lIHRvIHRoZSB0b3AtbW9zdCBvZiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwgZ2x5cGggcG9pbnRzIGZvdW5kIGluIHRoZSBmb250LiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFsdWUgaXMgaW52YWxpZCBpbiBtYW55IGZvbnRzLCBhcyAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyB1c3VhbGx5IHNldCBieSB0aGUgZm9udCBkZXNpZ25lciwgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9mdGVuIHJlZmxlY3RzIG9ubHkgYSBwb3J0aW9uIG9mICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBnbHlwaHMgZm91bmQgaW4gdGhlIGZvbnQgKG1heWJlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU0NJSSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgdXNlIHRoZSBgc1R5cG9Bc2NlbmRlcicgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCBvZiB0aGUgT1MvMiB0YWJsZSBpbnN0ZWFkIGlmIHlvdSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudCB0aGUgY29ycmVjdCBvbmUuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZXNjZW5kZXIgICAgICAgICAgICAgICA6OiBUaGUgZm9udCdzIGRlc2NlbmRlciwgaS5lLiwgdGhlICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2UgZnJvbSB0aGUgYmFzZWxpbmUgdG8gdGhlICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbS1tb3N0IG9mIGFsbCBnbHlwaCBwb2ludHMgZm91bmQgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZm9udC4gIEl0IGlzIG5lZ2F0aXZlLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFsdWUgaXMgaW52YWxpZCBpbiBtYW55IGZvbnRzLCBhcyAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyB1c3VhbGx5IHNldCBieSB0aGUgZm9udCBkZXNpZ25lciwgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9mdGVuIHJlZmxlY3RzIG9ubHkgYSBwb3J0aW9uIG9mICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBnbHlwaHMgZm91bmQgaW4gdGhlIGZvbnQgKG1heWJlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU0NJSSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgdXNlIHRoZSBgc1R5cG9EZXNjZW5kZXInICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCBvZiB0aGUgT1MvMiB0YWJsZSBpbnN0ZWFkIGlmIHlvdSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudCB0aGUgY29ycmVjdCBvbmUuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMaW5lX0dhcCAgICAgICAgICAgICAgICA6OiBUaGUgZm9udCdzIGxpbmUgZ2FwLCBpLmUuLCB0aGUgZGlzdGFuY2UgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWRkIHRvIHRoZSBhc2NlbmRlciBhbmQgZGVzY2VuZGVyIHRvICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCB0aGUgQlRCLCBpLmUuLCB0aGUgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZS10by1iYXNlbGluZSBkaXN0YW5jZSBmb3IgdGhlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZHZhbmNlX0hlaWdodF9NYXggICAgICA6OiBUaGlzIGZpZWxkIGlzIHRoZSBtYXhpbXVtIG9mIGFsbCAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZSBoZWlnaHRzIGZvdW5kIGluIHRoZSBmb250LiAgSXQgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSB1c2VkIHRvIGNvbXB1dGUgdGhlIG1heGltdW0gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgb2YgYW4gYXJiaXRyYXJ5IHN0cmluZyBvZiB0ZXh0LiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1pbl9Ub3BfU2lkZV9CZWFyaW5nICAgIDo6IFRoZSBtaW5pbXVtIHRvcCBzaWRlIGJlYXJpbmcgb2YgYWxsICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHMgd2l0aGluIHRoZSBmb250LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1pbl9Cb3R0b21fU2lkZV9CZWFyaW5nIDo6IFRoZSBtaW5pbXVtIGJvdHRvbSBzaWRlIGJlYXJpbmcgb2YgYWxsICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHMgd2l0aGluIHRoZSBmb250LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlNYXhfRXh0ZW50ICAgICAgICAgICAgIDo6IFRoZSBtYXhpbXVtIHZlcnRpY2FsIGV4dGVudCAoaS5lLiwgdGhlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgaGVpZ2h0JyBvZiBhIGdseXBoJ3MgYm91bmRpbmcgYm94KSBmb3IgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsIGdseXBocyBpbiB0aGUgZm9udC4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYXJldF9TbG9wZV9SaXNlICAgICAgICA6OiBUaGUgcmlzZSBjb2VmZmljaWVudCBvZiB0aGUgY3Vyc29yJ3MgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvcGUgb2YgdGhlIGN1cnNvciAoc2xvcGU9cmlzZS9ydW4pLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYXJldF9TbG9wZV9SdW4gICAgICAgICA6OiBUaGUgcnVuIGNvZWZmaWNpZW50IG9mIHRoZSBjdXJzb3IncyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvcGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYXJldF9PZmZzZXQgICAgICAgICAgICA6OiBUaGUgY3Vyc29yJ3Mgb2Zmc2V0IGZvciBzbGFudGVkIGZvbnRzLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YWx1ZSBpcyBgcmVzZXJ2ZWQnIGluIHZtdHggICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gMS4wLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgOjogOH5yZXNlcnZlZCBieXRlcy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZXRyaWNfRGF0YV9Gb3JtYXQgICAgICA6OiBBbHdheXN+MC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bWJlcl9PZl9ITWV0cmljcyAgICAgIDo6IE51bWJlciBvZiBWTWV0cmljcyBlbnRyaWVzIGluIHRoZSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgdm10eCcgdGFibGUgLS0gdGhpcyB2YWx1ZSBjYW4gYmUgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxlciB0aGFuIHRoZSB0b3RhbCBudW1iZXIgb2YgZ2x5cGhzICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9uZ19tZXRyaWNzICAgICAgICAgICA6OiBBIHBvaW50ZXIgaW50byB0aGUgYHZtdHgnIHRhYmxlLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaG9ydF9tZXRyaWNzICAgICAgICAgIDo6IEEgcG9pbnRlciBpbnRvIHRoZSBgdm10eCcgdGFibGUuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJTVBPUlRBTlQ6IFRoZSBUVF9Ib3JpSGVhZGVyIGFuZCBUVF9WZXJ0SGVhZGVyIHN0cnVjdHVyZXMgc2hvdWxkICAgKi8KKyAgLyogICAgICAgICAgICAgICBiZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgbmFtZXMgb2YgdGhlaXIgZmllbGRzIHdoaWNoICovCisgIC8qICAgICAgICAgICAgICAgYXJlIGRpZmZlcmVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBhIHNpbmdsZSBmdW5jdGlvbiBpbiB0aGUgYHR0bG9hZCcgICAgICovCisgIC8qICAgICAgICAgICAgICAgbW9kdWxlIGlzIGFibGUgdG8gcmVhZCBib3RoIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCAqLworICAvKiAgICAgICAgICAgICAgIGhlYWRlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9WZXJ0SGVhZGVyXworICB7CisgICAgRlRfRml4ZWQgICBWZXJzaW9uOworICAgIEZUX1Nob3J0ICAgQXNjZW5kZXI7CisgICAgRlRfU2hvcnQgICBEZXNjZW5kZXI7CisgICAgRlRfU2hvcnQgICBMaW5lX0dhcDsKKworICAgIEZUX1VTaG9ydCAgYWR2YW5jZV9IZWlnaHRfTWF4OyAgICAgIC8qIGFkdmFuY2UgaGVpZ2h0IG1heGltdW0gKi8KKworICAgIEZUX1Nob3J0ICAgbWluX1RvcF9TaWRlX0JlYXJpbmc7ICAgIC8qIG1pbmltdW0gbGVmdC1zYiBvciB0b3Atc2IgICAgICAgKi8KKyAgICBGVF9TaG9ydCAgIG1pbl9Cb3R0b21fU2lkZV9CZWFyaW5nOyAvKiBtaW5pbXVtIHJpZ2h0LXNiIG9yIGJvdHRvbS1zYiAgICovCisgICAgRlRfU2hvcnQgICB5TWF4X0V4dGVudDsgICAgICAgICAgICAgLyogeG1heCBvciB5bWF4IGV4dGVudHMgICAgICAgICAgICAqLworICAgIEZUX1Nob3J0ICAgY2FyZXRfU2xvcGVfUmlzZTsKKyAgICBGVF9TaG9ydCAgIGNhcmV0X1Nsb3BlX1J1bjsKKyAgICBGVF9TaG9ydCAgIGNhcmV0X09mZnNldDsKKworICAgIEZUX1Nob3J0ICAgUmVzZXJ2ZWRbNF07CisKKyAgICBGVF9TaG9ydCAgIG1ldHJpY19EYXRhX0Zvcm1hdDsKKyAgICBGVF9VU2hvcnQgIG51bWJlcl9PZl9WTWV0cmljczsKKworICAgIC8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBub3QgZGVmaW5lZCBieSB0aGUgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbiAqLworICAgIC8qIGJ1dCB0aGV5J3JlIHVzZWQgdG8gY29ubmVjdCB0aGUgbWV0cmljcyBoZWFkZXIgdG8gdGhlIHJlbGV2YW50ICAgICAqLworICAgIC8qIGBITVRYJyBvciBgVk1UWCcgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgdm9pZCogICAgICBsb25nX21ldHJpY3M7CisgICAgdm9pZCogICAgICBzaG9ydF9tZXRyaWNzOworCisgIH0gVFRfVmVydEhlYWRlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX09TMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYSBUcnVlVHlwZSBPUy8yIHRhYmxlLiBUaGlzIGlzIHRoZSBsb25nICAqLworICAvKiAgICB0YWJsZSB2ZXJzaW9uLiAgQWxsIGZpZWxkcyBjb21wbHkgdG8gdGhlIFRydWVUeXBlIHNwZWNpZmljYXRpb24uICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgdGhhdCB3ZSBub3cgc3VwcG9ydCBvbGQgTWFjIGZvbnRzIHdoaWNoIGRvIG5vdCBpbmNsdWRlIGFuICAgICAqLworICAvKiAgICBPUy8yIHRhYmxlLiAgSW4gdGhpcyBjYXNlLCB0aGUgYHZlcnNpb24nIGZpZWxkIGlzIGFsd2F5cyBzZXQgdG8gICAgKi8KKyAgLyogICAgMHhGRkZGLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfT1MyXworICB7CisgICAgRlRfVVNob3J0ICB2ZXJzaW9uOyAgICAgICAgICAgICAgICAvKiAweDAwMDEgLSBtb3JlIG9yIDB4RkZGRiAqLworICAgIEZUX1Nob3J0ICAgeEF2Z0NoYXJXaWR0aDsKKyAgICBGVF9VU2hvcnQgIHVzV2VpZ2h0Q2xhc3M7CisgICAgRlRfVVNob3J0ICB1c1dpZHRoQ2xhc3M7CisgICAgRlRfU2hvcnQgICBmc1R5cGU7CisgICAgRlRfU2hvcnQgICB5U3Vic2NyaXB0WFNpemU7CisgICAgRlRfU2hvcnQgICB5U3Vic2NyaXB0WVNpemU7CisgICAgRlRfU2hvcnQgICB5U3Vic2NyaXB0WE9mZnNldDsKKyAgICBGVF9TaG9ydCAgIHlTdWJzY3JpcHRZT2Zmc2V0OworICAgIEZUX1Nob3J0ICAgeVN1cGVyc2NyaXB0WFNpemU7CisgICAgRlRfU2hvcnQgICB5U3VwZXJzY3JpcHRZU2l6ZTsKKyAgICBGVF9TaG9ydCAgIHlTdXBlcnNjcmlwdFhPZmZzZXQ7CisgICAgRlRfU2hvcnQgICB5U3VwZXJzY3JpcHRZT2Zmc2V0OworICAgIEZUX1Nob3J0ICAgeVN0cmlrZW91dFNpemU7CisgICAgRlRfU2hvcnQgICB5U3RyaWtlb3V0UG9zaXRpb247CisgICAgRlRfU2hvcnQgICBzRmFtaWx5Q2xhc3M7CisKKyAgICBGVF9CeXRlICAgIHBhbm9zZVsxMF07CisKKyAgICBGVF9VTG9uZyAgIHVsVW5pY29kZVJhbmdlMTsgICAgICAgIC8qIEJpdHMgMC0zMSAgICovCisgICAgRlRfVUxvbmcgICB1bFVuaWNvZGVSYW5nZTI7ICAgICAgICAvKiBCaXRzIDMyLTYzICAqLworICAgIEZUX1VMb25nICAgdWxVbmljb2RlUmFuZ2UzOyAgICAgICAgLyogQml0cyA2NC05NSAgKi8KKyAgICBGVF9VTG9uZyAgIHVsVW5pY29kZVJhbmdlNDsgICAgICAgIC8qIEJpdHMgOTYtMTI3ICovCisKKyAgICBGVF9DaGFyICAgIGFjaFZlbmRJRFs0XTsKKworICAgIEZUX1VTaG9ydCAgZnNTZWxlY3Rpb247CisgICAgRlRfVVNob3J0ICB1c0ZpcnN0Q2hhckluZGV4OworICAgIEZUX1VTaG9ydCAgdXNMYXN0Q2hhckluZGV4OworICAgIEZUX1Nob3J0ICAgc1R5cG9Bc2NlbmRlcjsKKyAgICBGVF9TaG9ydCAgIHNUeXBvRGVzY2VuZGVyOworICAgIEZUX1Nob3J0ICAgc1R5cG9MaW5lR2FwOworICAgIEZUX1VTaG9ydCAgdXNXaW5Bc2NlbnQ7CisgICAgRlRfVVNob3J0ICB1c1dpbkRlc2NlbnQ7CisKKyAgICAvKiBvbmx5IHZlcnNpb24gMSB0YWJsZXM6ICovCisKKyAgICBGVF9VTG9uZyAgIHVsQ29kZVBhZ2VSYW5nZTE7ICAgICAgIC8qIEJpdHMgMC0zMSAgICovCisgICAgRlRfVUxvbmcgICB1bENvZGVQYWdlUmFuZ2UyOyAgICAgICAvKiBCaXRzIDMyLTYzICAqLworCisgICAgLyogb25seSB2ZXJzaW9uIDIgdGFibGVzOiAqLworCisgICAgRlRfU2hvcnQgICBzeEhlaWdodDsKKyAgICBGVF9TaG9ydCAgIHNDYXBIZWlnaHQ7CisgICAgRlRfVVNob3J0ICB1c0RlZmF1bHRDaGFyOworICAgIEZUX1VTaG9ydCAgdXNCcmVha0NoYXI7CisgICAgRlRfVVNob3J0ICB1c01heENvbnRleHQ7CisKKyAgfSBUVF9PUzI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Qb3N0c2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgVHJ1ZVR5cGUgUG9zdFNjcmlwdCB0YWJsZS4gIEFsbCBmaWVsZHMgKi8KKyAgLyogICAgY29tcGx5IHRvIHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uLiAgVGhpcyBzdHJ1Y3R1cmUgZG9lcyBub3QgICAgICovCisgIC8qICAgIHJlZmVyZW5jZSB0aGUgUG9zdFNjcmlwdCBnbHlwaCBuYW1lcywgd2hpY2ggY2FuIGJlIG5ldmVydGhlbGVzcyAgICAqLworICAvKiAgICBhY2Nlc3NlZCB3aXRoIHRoZSBgdHRwb3N0JyBtb2R1bGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9Qb3N0c2NyaXB0XworICB7CisgICAgRlRfRml4ZWQgIEZvcm1hdFR5cGU7CisgICAgRlRfRml4ZWQgIGl0YWxpY0FuZ2xlOworICAgIEZUX1Nob3J0ICB1bmRlcmxpbmVQb3NpdGlvbjsKKyAgICBGVF9TaG9ydCAgdW5kZXJsaW5lVGhpY2tuZXNzOworICAgIEZUX1VMb25nICBpc0ZpeGVkUGl0Y2g7CisgICAgRlRfVUxvbmcgIG1pbk1lbVR5cGU0MjsKKyAgICBGVF9VTG9uZyAgbWF4TWVtVHlwZTQyOworICAgIEZUX1VMb25nICBtaW5NZW1UeXBlMTsKKyAgICBGVF9VTG9uZyAgbWF4TWVtVHlwZTE7CisKKyAgICAvKiBHbHlwaCBuYW1lcyBmb2xsb3cgaW4gdGhlIGZpbGUsIGJ1dCB3ZSBkb24ndCAgICovCisgICAgLyogbG9hZCB0aGVtIGJ5IGRlZmF1bHQuICBTZWUgdGhlIHR0cG9zdC5jIGZpbGUuICAqLworCisgIH0gVFRfUG9zdHNjcmlwdDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1BDTFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYSBUcnVlVHlwZSBQQ0xUIHRhYmxlLiAgQWxsIGZpZWxkcyAgICAgICAqLworICAvKiAgICBjb21wbHkgdG8gdGhlIFRydWVUeXBlIHNwZWNpZmljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9QQ0xUXworICB7CisgICAgRlRfRml4ZWQgICBWZXJzaW9uOworICAgIEZUX1VMb25nICAgRm9udE51bWJlcjsKKyAgICBGVF9VU2hvcnQgIFBpdGNoOworICAgIEZUX1VTaG9ydCAgeEhlaWdodDsKKyAgICBGVF9VU2hvcnQgIFN0eWxlOworICAgIEZUX1VTaG9ydCAgVHlwZUZhbWlseTsKKyAgICBGVF9VU2hvcnQgIENhcEhlaWdodDsKKyAgICBGVF9VU2hvcnQgIFN5bWJvbFNldDsKKyAgICBGVF9DaGFyICAgIFR5cGVGYWNlWzE2XTsKKyAgICBGVF9DaGFyICAgIENoYXJhY3RlckNvbXBsZW1lbnRbOF07CisgICAgRlRfQ2hhciAgICBGaWxlTmFtZVs2XTsKKyAgICBGVF9DaGFyICAgIFN0cm9rZVdlaWdodDsKKyAgICBGVF9DaGFyICAgIFdpZHRoVHlwZTsKKyAgICBGVF9CeXRlICAgIFNlcmlmU3R5bGU7CisgICAgRlRfQnl0ZSAgICBSZXNlcnZlZDsKKworICB9IFRUX1BDTFQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9NYXhQcm9maWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgbWF4aW11bSBwcm9maWxlIGlzIGEgdGFibGUgY29udGFpbmluZyBtYW55IG1heCB2YWx1ZXMgd2hpY2ggICAgKi8KKyAgLyogICAgY2FuIGJlIHVzZWQgdG8gcHJlLWFsbG9jYXRlIGFycmF5cy4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vIG1lbW9yeSAgICovCisgIC8qICAgIGFsbG9jYXRpb24gb2NjdXJzIGR1cmluZyBhIGdseXBoIGxvYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnNpb24gICAgICAgICAgICAgICA6OiBUaGUgdmVyc2lvbiBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtR2x5cGhzICAgICAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgZ2x5cGhzIGluIHRoaXMgVHJ1ZVR5cGUgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4UG9pbnRzICAgICAgICAgICAgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2ludHMgaW4gYSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub24tY29tcG9zaXRlIFRydWVUeXBlIGdseXBoLiAgU2VlIGFsc28gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cnVjdHVyZSBlbGVtZW50ICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBtYXhDb21wb3NpdGVQb2ludHMnLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhDb250b3VycyAgICAgICAgICAgOjogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnRvdXJzIGluIGEgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbi1jb21wb3NpdGUgVHJ1ZVR5cGUgZ2x5cGguICBTZWUgYWxzbyAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3RydWN0dXJlIGVsZW1lbnQgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYG1heENvbXBvc2l0ZUNvbnRvdXJzJy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heENvbXBvc2l0ZVBvaW50cyAgICA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcG9pbnRzIGluIGEgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9zaXRlIFRydWVUeXBlIGdseXBoLiAgU2VlIGFsc28gdGhlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSBlbGVtZW50IGBtYXhQb2ludHMnLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhDb21wb3NpdGVDb250b3VycyAgOjogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnRvdXJzIGluIGEgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0ZSBUcnVlVHlwZSBnbHlwaC4gIFNlZSBhbHNvIHRoZSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgZWxlbWVudCBgbWF4Q29udG91cnMnLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4Wm9uZXMgICAgICAgICAgICAgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiB6b25lcyB1c2VkIGZvciAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCBoaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4VHdpbGlnaHRQb2ludHMgICAgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2ludHMgaW4gdGhlICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d2lsaWdodCB6b25lIHVzZWQgZm9yIGdseXBoIGhpbnRpbmcuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4U3RvcmFnZSAgICAgICAgICAgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlIGFyZWEgdXNlZCBmb3IgZ2x5cGggaGludGluZy4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4RnVuY3Rpb25EZWZzICAgICAgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBmdW5jdGlvbiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9ucyBpbiB0aGUgVHJ1ZVR5cGUgYnl0ZWNvZGUgZm9yICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heEluc3RydWN0aW9uRGVmcyAgICA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb24gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbnMgaW4gdGhlIFRydWVUeXBlIGJ5dGVjb2RlIGZvciAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhTdGFja0VsZW1lbnRzICAgICAgOjogVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGVsZW1lbnRzIHVzZWQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBieXRlY29kZSBpbnRlcnByZXRhdGlvbi4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhTaXplT2ZJbnN0cnVjdGlvbnMgOjogVGhlIG1heGltdW0gbnVtYmVyIG9mIFRydWVUeXBlIG9wY29kZXMgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgZm9yIGdseXBoIGhpbnRpbmcuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhDb21wb25lbnRFbGVtZW50cyAgOjogVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpbXBsZSAoaS5lLiwgbm9uLSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0ZSkgZ2x5cGhzIGluIGEgY29tcG9zaXRlIGdseXBoLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhDb21wb25lbnREZXB0aCAgICAgOjogVGhlIG1heGltdW0gbmVzdGluZyBkZXB0aCBvZiBjb21wb3NpdGUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgaXMgb25seSB1c2VkIGR1cmluZyBmb250IGxvYWRpbmcuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfTWF4UHJvZmlsZV8KKyAgeworICAgIEZUX0ZpeGVkICAgdmVyc2lvbjsKKyAgICBGVF9VU2hvcnQgIG51bUdseXBoczsKKyAgICBGVF9VU2hvcnQgIG1heFBvaW50czsKKyAgICBGVF9VU2hvcnQgIG1heENvbnRvdXJzOworICAgIEZUX1VTaG9ydCAgbWF4Q29tcG9zaXRlUG9pbnRzOworICAgIEZUX1VTaG9ydCAgbWF4Q29tcG9zaXRlQ29udG91cnM7CisgICAgRlRfVVNob3J0ICBtYXhab25lczsKKyAgICBGVF9VU2hvcnQgIG1heFR3aWxpZ2h0UG9pbnRzOworICAgIEZUX1VTaG9ydCAgbWF4U3RvcmFnZTsKKyAgICBGVF9VU2hvcnQgIG1heEZ1bmN0aW9uRGVmczsKKyAgICBGVF9VU2hvcnQgIG1heEluc3RydWN0aW9uRGVmczsKKyAgICBGVF9VU2hvcnQgIG1heFN0YWNrRWxlbWVudHM7CisgICAgRlRfVVNob3J0ICBtYXhTaXplT2ZJbnN0cnVjdGlvbnM7CisgICAgRlRfVVNob3J0ICBtYXhDb21wb25lbnRFbGVtZW50czsKKyAgICBGVF9VU2hvcnQgIG1heENvbXBvbmVudERlcHRoOworCisgIH0gVFRfTWF4UHJvZmlsZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NmbnRfVGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIHVzZWQgdG8gc3BlY2lmeSB0aGUgaW5kZXggb2YgYW4gU0ZOVCB0YWJsZS4gICAgICAgICAqLworICAvKiAgICBVc2VkIGluIHRoZSBARlRfR2V0X1NmbnRfVGFibGUgQVBJIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgZW51bSAgRlRfU2ZudF9UYWdfCisgIHsKKyAgICBmdF9zZm50X2hlYWQgPSAwLCAgICAvKiBUVF9IZWFkZXIgICAgICovCisgICAgZnRfc2ZudF9tYXhwID0gMSwgICAgLyogVFRfTWF4UHJvZmlsZSAqLworICAgIGZ0X3NmbnRfb3MyICA9IDIsICAgIC8qIFRUX09TMiAgICAgICAgKi8KKyAgICBmdF9zZm50X2hoZWEgPSAzLCAgICAvKiBUVF9Ib3JpSGVhZGVyICovCisgICAgZnRfc2ZudF92aGVhID0gNCwgICAgLyogVFRfVmVydEhlYWRlciAqLworICAgIGZ0X3NmbnRfcG9zdCA9IDUsICAgIC8qIFRUX1Bvc3RzY3JpcHQgKi8KKyAgICBmdF9zZm50X3BjbHQgPSA2LCAgICAvKiBUVF9QQ0xUICAgICAgICovCisKKyAgICBzZm50X21heCAgIC8qIGludGVybmFsIGVuZCBtYXJrICovCisKKyAgfSBGVF9TZm50X1RhZzsKKworICAvKiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X1NmbnRfVGFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIGdpdmVuIFNGTlQgdGFibGUgd2l0aGluIGEgZmFjZS4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWcgIDo6IFRoZSBpbmRleCBvZiB0aGUgU0ZOVCB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHR5cGUtbGVzcyBwb2ludGVyIHRvIHRoZSB0YWJsZS4gIFRoaXMgd2lsbCBiZX4wIGluIGNhc2Ugb2YgICAgICAgKi8KKyAgLyogICAgZXJyb3IsIG9yIGlmIHRoZSBjb3JyZXNwb25kaW5nIHRhYmxlIHdhcyBub3QgZm91bmQgKk9SKiBsb2FkZWQgICAgICovCisgIC8qICAgIGZyb20gdGhlIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlIGEgdHlwZWNhc3QgYWNjb3JkaW5nIHRvIGB0YWcnIHRvIGFjY2VzcyB0aGUgc3RydWN0dXJlICAgICAgICAgICovCisgIC8qICAgIGVsZW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSB0YWJsZSBpcyBvd25lZCBieSB0aGUgZmFjZSBvYmplY3QgYW5kIGRpc2FwcGVhcnMgd2l0aCBpdC4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bCB0byBhY2Nlc3MgU0ZOVCB0YWJsZXMgdGhhdCBhcmUgbG9hZGVkICovCisgIC8qICAgIGJ5IHRoZSBzZm50LCB0cnVldHlwZSwgYW5kIG9wZW50eXBlIGRyaXZlcnMuICBTZWUgQEZUX1NmbnRfVGFnIGZvciAqLworICAvKiAgICBhIGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEhlcmUgYW4gZXhhbXBsZSBob3cgdG8gYWNjZXNzIHRoZSBgdmhlYScgdGFibGU6ICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVFRfVmVydEhlYWRlciogIHZlcnRfaGVhZGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgdmVydF9oZWFkZXIgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgKFRUX1ZlcnRIZWFkZXIqKUZUX0dldF9TZm50X1RhYmxlKCBmYWNlLCBmdF9zZm50X3ZoZWEgKTsgICAgICAgKi8KKyAgLyogICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQqICkKKyAgRlRfR2V0X1NmbnRfVGFibGUoIEZUX0ZhY2UgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU2ZudF9UYWcgIHRhZyApOworCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBmdW5jdGlvbjoKKyAgKiAgIEZUX0xvYWRfU2ZudF9UYWJsZQorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgTG9hZCBhbnkgZm9udCB0YWJsZSBpbnRvIGNsaWVudCBtZW1vcnkuCisgICoKKyAgKiBAaW5wdXQ6CisgICogICBmYWNlIDo6CisgICogICAgIEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZS4KKyAgKgorICAqICAgdGFnIDo6CisgICogICAgIFRoZSBmb3VyLWJ5dGUgdGFnIG9mIHRoZSB0YWJsZSB0byBsb2FkLiAgVXNlIHRoZSB2YWx1ZX4wIGlmIHlvdSB3YW50CisgICogICAgIHRvIGFjY2VzcyB0aGUgd2hvbGUgZm9udCBmaWxlLiAgT3RoZXJ3aXNlLCB5b3UgY2FuIHVzZSBvbmUgb2YgdGhlCisgICogICAgIGRlZmluaXRpb25zIGZvdW5kIGluIHRoZSBARlRfVFJVRVRZUEVfVEFHU19IIGZpbGUsIG9yIGZvcmdlIGEgbmV3CisgICogICAgIG9uZSB3aXRoIEBGVF9NQUtFX1RBRy4KKyAgKgorICAqICAgb2Zmc2V0IDo6CisgICogICAgIFRoZSBzdGFydGluZyBvZmZzZXQgaW4gdGhlIHRhYmxlIChvciBmaWxlIGlmIHRhZyA9PSAwKS4KKyAgKgorICAqIEBvdXRwdXQ6CisgICogICBidWZmZXIgOjoKKyAgKiAgICAgVGhlIHRhcmdldCBidWZmZXIgYWRkcmVzcy4gIFRoZSBjbGllbnQgbXVzdCBlbnN1cmUgdGhhdCB0aGUgbWVtb3J5CisgICogICAgIGFycmF5IGlzIGJpZyBlbm91Z2ggdG8gaG9sZCB0aGUgZGF0YS4KKyAgKgorICAqIEBpbm91dDoKKyAgKiAgIGxlbmd0aCA6OgorICAqICAgICBJZiB0aGUgYGxlbmd0aCcgcGFyYW1ldGVyIGlzIE5VTEwsIHRoZW4gdHJ5IHRvIGxvYWQgdGhlIHdob2xlIHRhYmxlLgorICAqICAgICBSZXR1cm4gYW4gZXJyb3IgY29kZSBpZiBpdCBmYWlscy4KKyAgKgorICAqICAgICBFbHNlLCBpZiBgKmxlbmd0aCcgaXN+MCwgZXhpdCBpbW1lZGlhdGVseSB3aGlsZSByZXR1cm5pbmcgdGhlCisgICogICAgIHRhYmxlJ3MgKG9yIGZpbGUpIGZ1bGwgc2l6ZSBpbiBpdC4KKyAgKgorICAqICAgICBFbHNlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBmcm9tIHRoZSB0YWJsZSBvciBmaWxlLCBmcm9tIHRoZQorICAqICAgICBzdGFydGluZyBvZmZzZXQuCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgKgorICAqIEBub3RlOgorICAqICAgSWYgeW91IG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSB0YWJsZSdzIGxlbmd0aCB5b3Ugc2hvdWxkIGZpcnN0IGNhbGwgdGhpcworICAqICAgZnVuY3Rpb24gd2l0aCBgKmxlbmd0aCcgc2V0IHRvfjAsIGFzIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKyAgKgorICAqICAgICB7CisgICogICAgICAgRlRfVUxvbmcgIGxlbmd0aCA9IDA7CisgICoKKyAgKgorICAqICAgICAgIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKCBmYWNlLCB0YWcsIDAsIE5VTEwsICZsZW5ndGggKTsKKyAgKiAgICAgICBpZiAoIGVycm9yICkgeyAuLi4gdGFibGUgZG9lcyBub3QgZXhpc3QgLi4uIH0KKyAgKgorICAqICAgICAgIGJ1ZmZlciA9IG1hbGxvYyggbGVuZ3RoICk7CisgICogICAgICAgaWYgKCBidWZmZXIgPT0gTlVMTCApIHsgLi4uIG5vdCBlbm91Z2ggbWVtb3J5IC4uLiB9CisgICoKKyAgKiAgICAgICBlcnJvciA9IEZUX0xvYWRfU2ZudF9UYWJsZSggZmFjZSwgdGFnLCAwLCBidWZmZXIsICZsZW5ndGggKTsKKyAgKiAgICAgICBpZiAoIGVycm9yICkgeyAuLi4gY291bGQgbm90IGxvYWQgdGFibGUgLi4uIH0KKyAgKiAgICAgfQorICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfTG9hZF9TZm50X1RhYmxlKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICB0YWcsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICBsZW5ndGggKTsKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICBGVF9TZm50X1RhYmxlX0luZm8KKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgIFJldHVybiBpbmZvcm1hdGlvbiBvbiBhbiBTRk5UIHRhYmxlLgorICAqCisgICogQGlucHV0OgorICAqICAgZmFjZSA6OgorICAqICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2UuCisgICoKKyAgKiAgIHRhYmxlX2luZGV4IDo6CisgICogICAgIFRoZSBpbmRleCBvZiBhbiBTRk5UIHRhYmxlLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMKKyAgKiAgICAgRlRfRXJyX1RhYmxlX01pc3NpbmcgZm9yIGFuIGludmFsaWQgdmFsdWUuCisgICoKKyAgKiBAaW5vdXQ6CisgICogICB0YWcgOjoKKyAgKiAgICAgVGhlIG5hbWUgdGFnIG9mIHRoZSBTRk5UIHRhYmxlLiAgSWYgdGhlIHZhbHVlIGlzIE5VTEwsIGB0YWJsZV9pbmRleCcKKyAgKiAgICAgaXMgaWdub3JlZCwgYW5kIGBsZW5ndGgnIHJldHVybnMgdGhlIG51bWJlciBvZiBTRk5UIHRhYmxlcyBpbiB0aGUKKyAgKiAgICAgZm9udC4KKyAgKgorICAqIEBvdXRwdXQ6CisgICogICBsZW5ndGggOjoKKyAgKiAgICAgVGhlIGxlbmd0aCBvZiB0aGUgU0ZOVCB0YWJsZSAob3IgdGhlIG51bWJlciBvZiBTRk5UIHRhYmxlcywgZGVwZW5kaW5nCisgICogICAgIG9uIGB0YWcnKS4KKyAgKgorICAqIEByZXR1cm46CisgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAqCisgICogQG5vdGU6CisgICogICBXaGlsZSBwYXJzaW5nIGZvbnRzLCBGcmVlVHlwZSBoYW5kbGVzIFNGTlQgdGFibGVzIHdpdGggbGVuZ3RoIHplcm8gYXMKKyAgKiAgIG1pc3NpbmcuCisgICoKKyAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1NmbnRfVGFibGVfSW5mbyggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgdGFibGVfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICp0YWcsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICpsZW5ndGggKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9DTWFwX0xhbmd1YWdlX0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiBUcnVlVHlwZS9zZm50IHNwZWNpZmljIGNtYXAgbGFuZ3VhZ2UgSUQuICBEZWZpbml0aW9ucyBvZiAgICAqLworICAvKiAgICBsYW5ndWFnZSBJRCB2YWx1ZXMgYXJlIGluIGBmcmVldHlwZS90dG5hbWVpZC5oJy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFybWFwIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgdGFyZ2V0IGNoYXJtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGxhbmd1YWdlIElEIG9mIGBjaGFybWFwJy4gIElmIGBjaGFybWFwJyBkb2Vzbid0IGJlbG9uZyB0byBhICAgICovCisgIC8qICAgIFRydWVUeXBlL3NmbnQgZmFjZSwganVzdCByZXR1cm5+MCBhcyB0aGUgZGVmYXVsdCB2YWx1ZS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRm9yIGEgZm9ybWF0fjE0IGNtYXAgKHRvIGFjY2VzcyBVbmljb2RlIElWUyksIHRoZSByZXR1cm4gdmFsdWUgaXMgICovCisgIC8qICAgIDB4RkZGRkZGRkYuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9VTG9uZyApCisgIEZUX0dldF9DTWFwX0xhbmd1YWdlX0lEKCBGVF9DaGFyTWFwICBjaGFybWFwICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfQ01hcF9Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gVHJ1ZVR5cGUvc2ZudCBzcGVjaWZpYyBjbWFwIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFybWFwIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgdGFyZ2V0IGNoYXJtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGZvcm1hdCBvZiBgY2hhcm1hcCcuICBJZiBgY2hhcm1hcCcgZG9lc24ndCBiZWxvbmcgdG8gYSAgICAgICAgICovCisgIC8qICAgIFRydWVUeXBlL3NmbnQgZmFjZSwgcmV0dXJuIC0xLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9Mb25nICkKKyAgRlRfR2V0X0NNYXBfRm9ybWF0KCBGVF9DaGFyTWFwICBjaGFybWFwICk7CisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUVEFCTEVTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS90dHRhZ3MuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvdHR0YWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM3ZGUyYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnJlZXR5cGUvdHR0YWdzLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0dGFncy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUYWdzIGZvciBUcnVlVHlwZSBhbmQgT3BlblR5cGUgdGFibGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1RUQUdTX0hfXworI2RlZmluZSBfX1RUQUdTX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNkZWZpbmUgVFRBR19hdmFyICBGVF9NQUtFX1RBRyggJ2EnLCAndicsICdhJywgJ3InICkKKyNkZWZpbmUgVFRBR19CQVNFICBGVF9NQUtFX1RBRyggJ0InLCAnQScsICdTJywgJ0UnICkKKyNkZWZpbmUgVFRBR19iZGF0ICBGVF9NQUtFX1RBRyggJ2InLCAnZCcsICdhJywgJ3QnICkKKyNkZWZpbmUgVFRBR19CREYgICBGVF9NQUtFX1RBRyggJ0InLCAnRCcsICdGJywgJyAnICkKKyNkZWZpbmUgVFRBR19iaGVkICBGVF9NQUtFX1RBRyggJ2InLCAnaCcsICdlJywgJ2QnICkKKyNkZWZpbmUgVFRBR19ibG9jICBGVF9NQUtFX1RBRyggJ2InLCAnbCcsICdvJywgJ2MnICkKKyNkZWZpbmUgVFRBR19ic2xuICBGVF9NQUtFX1RBRyggJ2InLCAncycsICdsJywgJ24nICkKKyNkZWZpbmUgVFRBR19DQkRUICBGVF9NQUtFX1RBRyggJ0MnLCAnQicsICdEJywgJ1QnICkKKyNkZWZpbmUgVFRBR19DQkxDICBGVF9NQUtFX1RBRyggJ0MnLCAnQicsICdMJywgJ0MnICkKKyNkZWZpbmUgVFRBR19DRkYgICBGVF9NQUtFX1RBRyggJ0MnLCAnRicsICdGJywgJyAnICkKKyNkZWZpbmUgVFRBR19DSUQgICBGVF9NQUtFX1RBRyggJ0MnLCAnSScsICdEJywgJyAnICkKKyNkZWZpbmUgVFRBR19jbWFwICBGVF9NQUtFX1RBRyggJ2MnLCAnbScsICdhJywgJ3AnICkKKyNkZWZpbmUgVFRBR19jdmFyICBGVF9NQUtFX1RBRyggJ2MnLCAndicsICdhJywgJ3InICkKKyNkZWZpbmUgVFRBR19jdnQgICBGVF9NQUtFX1RBRyggJ2MnLCAndicsICd0JywgJyAnICkKKyNkZWZpbmUgVFRBR19EU0lHICBGVF9NQUtFX1RBRyggJ0QnLCAnUycsICdJJywgJ0cnICkKKyNkZWZpbmUgVFRBR19FQkRUICBGVF9NQUtFX1RBRyggJ0UnLCAnQicsICdEJywgJ1QnICkKKyNkZWZpbmUgVFRBR19FQkxDICBGVF9NQUtFX1RBRyggJ0UnLCAnQicsICdMJywgJ0MnICkKKyNkZWZpbmUgVFRBR19FQlNDICBGVF9NQUtFX1RBRyggJ0UnLCAnQicsICdTJywgJ0MnICkKKyNkZWZpbmUgVFRBR19mZWF0ICBGVF9NQUtFX1RBRyggJ2YnLCAnZScsICdhJywgJ3QnICkKKyNkZWZpbmUgVFRBR19GT05EICBGVF9NQUtFX1RBRyggJ0YnLCAnTycsICdOJywgJ0QnICkKKyNkZWZpbmUgVFRBR19mcGdtICBGVF9NQUtFX1RBRyggJ2YnLCAncCcsICdnJywgJ20nICkKKyNkZWZpbmUgVFRBR19mdmFyICBGVF9NQUtFX1RBRyggJ2YnLCAndicsICdhJywgJ3InICkKKyNkZWZpbmUgVFRBR19nYXNwICBGVF9NQUtFX1RBRyggJ2cnLCAnYScsICdzJywgJ3AnICkKKyNkZWZpbmUgVFRBR19HREVGICBGVF9NQUtFX1RBRyggJ0cnLCAnRCcsICdFJywgJ0YnICkKKyNkZWZpbmUgVFRBR19nbHlmICBGVF9NQUtFX1RBRyggJ2cnLCAnbCcsICd5JywgJ2YnICkKKyNkZWZpbmUgVFRBR19HUE9TICBGVF9NQUtFX1RBRyggJ0cnLCAnUCcsICdPJywgJ1MnICkKKyNkZWZpbmUgVFRBR19HU1VCICBGVF9NQUtFX1RBRyggJ0cnLCAnUycsICdVJywgJ0InICkKKyNkZWZpbmUgVFRBR19ndmFyICBGVF9NQUtFX1RBRyggJ2cnLCAndicsICdhJywgJ3InICkKKyNkZWZpbmUgVFRBR19oZG14ICBGVF9NQUtFX1RBRyggJ2gnLCAnZCcsICdtJywgJ3gnICkKKyNkZWZpbmUgVFRBR19oZWFkICBGVF9NQUtFX1RBRyggJ2gnLCAnZScsICdhJywgJ2QnICkKKyNkZWZpbmUgVFRBR19oaGVhICBGVF9NQUtFX1RBRyggJ2gnLCAnaCcsICdlJywgJ2EnICkKKyNkZWZpbmUgVFRBR19obXR4ICBGVF9NQUtFX1RBRyggJ2gnLCAnbScsICd0JywgJ3gnICkKKyNkZWZpbmUgVFRBR19KU1RGICBGVF9NQUtFX1RBRyggJ0onLCAnUycsICdUJywgJ0YnICkKKyNkZWZpbmUgVFRBR19qdXN0ICBGVF9NQUtFX1RBRyggJ2onLCAndScsICdzJywgJ3QnICkKKyNkZWZpbmUgVFRBR19rZXJuICBGVF9NQUtFX1RBRyggJ2snLCAnZScsICdyJywgJ24nICkKKyNkZWZpbmUgVFRBR19sY2FyICBGVF9NQUtFX1RBRyggJ2wnLCAnYycsICdhJywgJ3InICkKKyNkZWZpbmUgVFRBR19sb2NhICBGVF9NQUtFX1RBRyggJ2wnLCAnbycsICdjJywgJ2EnICkKKyNkZWZpbmUgVFRBR19MVFNIICBGVF9NQUtFX1RBRyggJ0wnLCAnVCcsICdTJywgJ0gnICkKKyNkZWZpbmUgVFRBR19MV0ZOICBGVF9NQUtFX1RBRyggJ0wnLCAnVycsICdGJywgJ04nICkKKyNkZWZpbmUgVFRBR19NQVRIICBGVF9NQUtFX1RBRyggJ00nLCAnQScsICdUJywgJ0gnICkKKyNkZWZpbmUgVFRBR19tYXhwICBGVF9NQUtFX1RBRyggJ20nLCAnYScsICd4JywgJ3AnICkKKyNkZWZpbmUgVFRBR19NRVRBICBGVF9NQUtFX1RBRyggJ00nLCAnRScsICdUJywgJ0EnICkKKyNkZWZpbmUgVFRBR19NTUZYICBGVF9NQUtFX1RBRyggJ00nLCAnTScsICdGJywgJ1gnICkKKyNkZWZpbmUgVFRBR19NTVNEICBGVF9NQUtFX1RBRyggJ00nLCAnTScsICdTJywgJ0QnICkKKyNkZWZpbmUgVFRBR19tb3J0ICBGVF9NQUtFX1RBRyggJ20nLCAnbycsICdyJywgJ3QnICkKKyNkZWZpbmUgVFRBR19tb3J4ICBGVF9NQUtFX1RBRyggJ20nLCAnbycsICdyJywgJ3gnICkKKyNkZWZpbmUgVFRBR19uYW1lICBGVF9NQUtFX1RBRyggJ24nLCAnYScsICdtJywgJ2UnICkKKyNkZWZpbmUgVFRBR19vcGJkICBGVF9NQUtFX1RBRyggJ28nLCAncCcsICdiJywgJ2QnICkKKyNkZWZpbmUgVFRBR19PUzIgICBGVF9NQUtFX1RBRyggJ08nLCAnUycsICcvJywgJzInICkKKyNkZWZpbmUgVFRBR19PVFRPICBGVF9NQUtFX1RBRyggJ08nLCAnVCcsICdUJywgJ08nICkKKyNkZWZpbmUgVFRBR19QQ0xUICBGVF9NQUtFX1RBRyggJ1AnLCAnQycsICdMJywgJ1QnICkKKyNkZWZpbmUgVFRBR19QT1NUICBGVF9NQUtFX1RBRyggJ1AnLCAnTycsICdTJywgJ1QnICkKKyNkZWZpbmUgVFRBR19wb3N0ICBGVF9NQUtFX1RBRyggJ3AnLCAnbycsICdzJywgJ3QnICkKKyNkZWZpbmUgVFRBR19wcmVwICBGVF9NQUtFX1RBRyggJ3AnLCAncicsICdlJywgJ3AnICkKKyNkZWZpbmUgVFRBR19wcm9wICBGVF9NQUtFX1RBRyggJ3AnLCAncicsICdvJywgJ3AnICkKKyNkZWZpbmUgVFRBR19zZm50ICBGVF9NQUtFX1RBRyggJ3MnLCAnZicsICduJywgJ3QnICkKKyNkZWZpbmUgVFRBR19TSU5HICBGVF9NQUtFX1RBRyggJ1MnLCAnSScsICdOJywgJ0cnICkKKyNkZWZpbmUgVFRBR190cmFrICBGVF9NQUtFX1RBRyggJ3QnLCAncicsICdhJywgJ2snICkKKyNkZWZpbmUgVFRBR190cnVlICBGVF9NQUtFX1RBRyggJ3QnLCAncicsICd1JywgJ2UnICkKKyNkZWZpbmUgVFRBR190dGMgICBGVF9NQUtFX1RBRyggJ3QnLCAndCcsICdjJywgJyAnICkKKyNkZWZpbmUgVFRBR190dGNmICBGVF9NQUtFX1RBRyggJ3QnLCAndCcsICdjJywgJ2YnICkKKyNkZWZpbmUgVFRBR19UWVAxICBGVF9NQUtFX1RBRyggJ1QnLCAnWScsICdQJywgJzEnICkKKyNkZWZpbmUgVFRBR190eXAxICBGVF9NQUtFX1RBRyggJ3QnLCAneScsICdwJywgJzEnICkKKyNkZWZpbmUgVFRBR19WRE1YICBGVF9NQUtFX1RBRyggJ1YnLCAnRCcsICdNJywgJ1gnICkKKyNkZWZpbmUgVFRBR192aGVhICBGVF9NQUtFX1RBRyggJ3YnLCAnaCcsICdlJywgJ2EnICkKKyNkZWZpbmUgVFRBR192bXR4ICBGVF9NQUtFX1RBRyggJ3YnLCAnbScsICd0JywgJ3gnICkKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUQUdTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS90dHVucGF0LmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2ZyZWV0eXBlL2ZyZWV0eXBlL3R0dW5wYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGUyNzU5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mcmVldHlwZS90dHVucGF0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHR1bnBhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIERlZmluaXRpb25zIGZvciB0aGUgdW5wYXRlbnRlZCBUcnVlVHlwZSBoaW50aW5nIHN5c3RlbSAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLCAyMDA2IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFdyaXR0ZW4gYnkgR3JhaGFtIEFzaGVyIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+ICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVFVOUEFUX0hfXworI2RlZmluZSBfX1RUVU5QQVRfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBjb25zdGFudDoKKyAgKiAgIEZUX1BBUkFNX1RBR19VTlBBVEVOVEVEX0hJTlRJTkcKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgIEEgY29uc3RhbnQgdXNlZCBhcyB0aGUgdGFnIG9mIGFuIEBGVF9QYXJhbWV0ZXIgc3RydWN0dXJlIHRvIGluZGljYXRlCisgICogICB0aGF0IHVucGF0ZW50ZWQgbWV0aG9kcyBvbmx5IHNob3VsZCBiZSB1c2VkIGJ5IHRoZSBUcnVlVHlwZSBieXRlY29kZQorICAqICAgaW50ZXJwcmV0ZXIgZm9yIGEgdHlwZWZhY2Ugb3BlbmVkIGJ5IEBGVF9PcGVuX0ZhY2UuCisgICoKKyAgKi8KKyNkZWZpbmUgRlRfUEFSQU1fVEFHX1VOUEFURU5URURfSElOVElORyAgRlRfTUFLRV9UQUcoICd1JywgJ24nLCAncCcsICdhJyApCisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fVFRVTlBBVF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnQyYnVpbGQuaCBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvZnJlZXR5cGUvZnQyYnVpbGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzQwMDdkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9mcmVldHlwZS9mdDJidWlsZC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0MmJ1aWxkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSAyIGJ1aWxkIGFuZCBzZXR1cCBtYWNyb3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgKEdlbmVyaWMgdmVyc2lvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGZpbGUgY29ycmVzcG9uZHMgdG8gdGhlIGRlZmF1bHQgYGZ0MmJ1aWxkLmgnIGZpbGUgZm9yICAgICAgICAgICAgKi8KKyAgLyogRnJlZVR5cGUgMi4gIEl0IHVzZXMgdGhlIGBmcmVldHlwZScgaW5jbHVkZSByb290LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlIHRoYXQgc3BlY2lmaWMgcGxhdGZvcm1zIG1pZ2h0IHVzZSBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLiAgICAgKi8KKyAgLyogU2VlIGJ1aWxkcy91bml4L2Z0MnVuaXguaCBmb3IgYW4gZXhhbXBsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlQyX0JVSUxEX0dFTkVSSUNfSF9fCisjZGVmaW5lIF9fRlQyX0JVSUxEX0dFTkVSSUNfSF9fCisKKyNpbmNsdWRlICJmb3hpdG5hbWVzLmgiDQorI2luY2x1ZGUgImZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIgorCisjZW5kaWYgLyogX19GVDJfQlVJTERfR0VORVJJQ19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvbGlianBlZy9qY29uZmlnLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2xpYmpwZWcvamNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNGRhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2xpYmpwZWcvamNvbmZpZy5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qIGpjb25maWcudmMgLS0tIGpjb25maWcuaCBmb3IgTWljcm9zb2Z0IFZpc3VhbCBDKysgb24gV2luZG93cyA5NSBvciBOVC4gKi8NCisvKiBzZWUgamNvbmZpZy5kb2MgZm9yIGV4cGxhbmF0aW9ucyAqLw0KKw0KKyNkZWZpbmUgSEFWRV9QUk9UT1RZUEVTDQorI2RlZmluZSBIQVZFX1VOU0lHTkVEX0NIQVINCisjZGVmaW5lIEhBVkVfVU5TSUdORURfU0hPUlQNCisvKiAjZGVmaW5lIHZvaWQgY2hhciAqLw0KKy8qICNkZWZpbmUgY29uc3QgKi8NCisjdW5kZWYgQ0hBUl9JU19VTlNJR05FRA0KKyNkZWZpbmUgSEFWRV9TVERERUZfSA0KKyNkZWZpbmUgSEFWRV9TVERMSUJfSA0KKyN1bmRlZiBORUVEX0JTRF9TVFJJTkdTDQorI3VuZGVmIE5FRURfU1lTX1RZUEVTX0gNCisjdW5kZWYgTkVFRF9GQVJfUE9JTlRFUlMJLyogd2UgcHJlc3VtZSBhIDMyLWJpdCBmbGF0IG1lbW9yeSBtb2RlbCAqLw0KKyN1bmRlZiBORUVEX1NIT1JUX0VYVEVSTkFMX05BTUVTDQorI3VuZGVmIElOQ09NUExFVEVfVFlQRVNfQlJPS0VODQorDQorLyogRGVmaW5lICJib29sZWFuIiBhcyB1bnNpZ25lZCBjaGFyLCBub3QgaW50LCBwZXIgV2luZG93cyBjdXN0b20gKi8NCisjaWZuZGVmIF9fUlBDTkRSX0hfXwkJLyogZG9uJ3QgY29uZmxpY3QgaWYgcnBjbmRyLmggYWxyZWFkeSByZWFkICovDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIGJvb2xlYW47DQorI2VuZGlmDQorI2RlZmluZSBIQVZFX0JPT0xFQU4JCS8qIHByZXZlbnQgam1vcmVjZmcuaCBmcm9tIHJlZGVmaW5pbmcgaXQgKi8NCisNCisNCisjaWZkZWYgSlBFR19JTlRFUk5BTFMNCisNCisjdW5kZWYgUklHSFRfU0hJRlRfSVNfVU5TSUdORUQNCisNCisjZW5kaWYgLyogSlBFR19JTlRFUk5BTFMgKi8NCisNCisjaWZkZWYgSlBFR19DSlBFR19ESlBFRw0KKw0KKyNkZWZpbmUgQk1QX1NVUFBPUlRFRAkJLyogQk1QIGltYWdlIGZpbGUgZm9ybWF0ICovDQorI2RlZmluZSBHSUZfU1VQUE9SVEVECQkvKiBHSUYgaW1hZ2UgZmlsZSBmb3JtYXQgKi8NCisjZGVmaW5lIFBQTV9TVVBQT1JURUQJCS8qIFBCTVBMVVMgUFBNL1BHTSBpbWFnZSBmaWxlIGZvcm1hdCAqLw0KKyN1bmRlZiBSTEVfU1VQUE9SVEVECQkvKiBVdGFoIFJMRSBpbWFnZSBmaWxlIGZvcm1hdCAqLw0KKyNkZWZpbmUgVEFSR0FfU1VQUE9SVEVECQkvKiBUYXJnYSBpbWFnZSBmaWxlIGZvcm1hdCAqLw0KKw0KKyNkZWZpbmUgVFdPX0ZJTEVfQ09NTUFORExJTkUJLyogb3B0aW9uYWwgKi8NCisjZGVmaW5lIFVTRV9TRVRNT0RFCQkvKiBNaWNyb3NvZnQgaGFzIHNldG1vZGUoKSAqLw0KKyN1bmRlZiBORUVEX1NJR05BTF9DQVRDSEVSDQorI3VuZGVmIERPTlRfVVNFX0JfTU9ERQ0KKyN1bmRlZiBQUk9HUkVTU19SRVBPUlQJCS8qIG9wdGlvbmFsICovDQorDQorI2VuZGlmIC8qIEpQRUdfQ0pQRUdfREpQRUcgKi8NCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2xpYmpwZWcvamVycm9yLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2xpYmpwZWcvamVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJiOGY5NgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvbGlianBlZy9qZXJyb3IuaApAQCAtMCwwICsxLDI5MSBAQAorLyoNCisgKiBqZXJyb3IuaA0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTk0LTE5OTcsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGVycm9yIGFuZCBtZXNzYWdlIGNvZGVzIGZvciB0aGUgSlBFRyBsaWJyYXJ5Lg0KKyAqIEVkaXQgdGhpcyBmaWxlIHRvIGFkZCBuZXcgY29kZXMsIG9yIHRvIHRyYW5zbGF0ZSB0aGUgbWVzc2FnZSBzdHJpbmdzIHRvDQorICogc29tZSBvdGhlciBsYW5ndWFnZS4NCisgKiBBIHNldCBvZiBlcnJvci1yZXBvcnRpbmcgbWFjcm9zIGFyZSBkZWZpbmVkIHRvby4gIFNvbWUgYXBwbGljYXRpb25zIHVzaW5nDQorICogdGhlIEpQRUcgbGlicmFyeSBtYXkgd2lzaCB0byBpbmNsdWRlIHRoaXMgZmlsZSB0byBnZXQgdGhlIGVycm9yIGNvZGVzDQorICogYW5kL29yIHRoZSBtYWNyb3MuDQorICovDQorDQorLyoNCisgKiBUbyBkZWZpbmUgdGhlIGVudW0gbGlzdCBvZiBtZXNzYWdlIGNvZGVzLCBpbmNsdWRlIHRoaXMgZmlsZSB3aXRob3V0DQorICogZGVmaW5pbmcgbWFjcm8gSk1FU1NBR0UuICBUbyBjcmVhdGUgYSBtZXNzYWdlIHN0cmluZyB0YWJsZSwgaW5jbHVkZSBpdA0KKyAqIGFnYWluIHdpdGggYSBzdWl0YWJsZSBKTUVTU0FHRSBkZWZpbml0aW9uIChzZWUgamVycm9yLmMgZm9yIGFuIGV4YW1wbGUpLg0KKyAqLw0KKyNpZm5kZWYgSk1FU1NBR0UNCisjaWZuZGVmIEpFUlJPUl9IDQorLyogRmlyc3QgdGltZSB0aHJvdWdoLCBkZWZpbmUgdGhlIGVudW0gbGlzdCAqLw0KKyNkZWZpbmUgSk1BS0VfRU5VTV9MSVNUDQorI2Vsc2UNCisvKiBSZXBlYXRlZCBpbmNsdXNpb25zIG9mIHRoaXMgZmlsZSBhcmUgbm8tb3BzIHVubGVzcyBKTUVTU0FHRSBpcyBkZWZpbmVkICovDQorI2RlZmluZSBKTUVTU0FHRShjb2RlLHN0cmluZykNCisjZW5kaWYgLyogSkVSUk9SX0ggKi8NCisjZW5kaWYgLyogSk1FU1NBR0UgKi8NCisNCisjaWZkZWYgSk1BS0VfRU5VTV9MSVNUDQorDQordHlwZWRlZiBlbnVtIHsNCisNCisjZGVmaW5lIEpNRVNTQUdFKGNvZGUsc3RyaW5nKQljb2RlICwNCisNCisjZW5kaWYgLyogSk1BS0VfRU5VTV9MSVNUICovDQorDQorSk1FU1NBR0UoSk1TR19OT01FU1NBR0UsICJCb2d1cyBtZXNzYWdlIGNvZGUgJWQiKSAvKiBNdXN0IGJlIGZpcnN0IGVudHJ5ISAqLw0KKw0KKy8qIEZvciBtYWludGVuYW5jZSBjb252ZW5pZW5jZSwgbGlzdCBpcyBhbHBoYWJldGljYWwgYnkgbWVzc2FnZSBjb2RlIG5hbWUgKi8NCitKTUVTU0FHRShKRVJSX0FSSVRIX05PVElNUEwsDQorCSAiU29ycnksIHRoZXJlIGFyZSBsZWdhbCByZXN0cmljdGlvbnMgb24gYXJpdGhtZXRpYyBjb2RpbmciKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX0FMSUdOX1RZUEUsICJBTElHTl9UWVBFIGlzIHdyb25nLCBwbGVhc2UgZml4IikNCitKTUVTU0FHRShKRVJSX0JBRF9BTExPQ19DSFVOSywgIk1BWF9BTExPQ19DSFVOSyBpcyB3cm9uZywgcGxlYXNlIGZpeCIpDQorSk1FU1NBR0UoSkVSUl9CQURfQlVGRkVSX01PREUsICJCb2d1cyBidWZmZXIgY29udHJvbCBtb2RlIikNCitKTUVTU0FHRShKRVJSX0JBRF9DT01QT05FTlRfSUQsICJJbnZhbGlkIGNvbXBvbmVudCBJRCAlZCBpbiBTT1MiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX0RDVF9DT0VGLCAiRENUIGNvZWZmaWNpZW50IG91dCBvZiByYW5nZSIpDQorSk1FU1NBR0UoSkVSUl9CQURfRENUU0laRSwgIklEQ1Qgb3V0cHV0IGJsb2NrIHNpemUgJWQgbm90IHN1cHBvcnRlZCIpDQorSk1FU1NBR0UoSkVSUl9CQURfSFVGRl9UQUJMRSwgIkJvZ3VzIEh1ZmZtYW4gdGFibGUgZGVmaW5pdGlvbiIpDQorSk1FU1NBR0UoSkVSUl9CQURfSU5fQ09MT1JTUEFDRSwgIkJvZ3VzIGlucHV0IGNvbG9yc3BhY2UiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX0pfQ09MT1JTUEFDRSwgIkJvZ3VzIEpQRUcgY29sb3JzcGFjZSIpDQorSk1FU1NBR0UoSkVSUl9CQURfTEVOR1RILCAiQm9ndXMgbWFya2VyIGxlbmd0aCIpDQorSk1FU1NBR0UoSkVSUl9CQURfTElCX1ZFUlNJT04sDQorCSAiV3JvbmcgSlBFRyBsaWJyYXJ5IHZlcnNpb246IGxpYnJhcnkgaXMgJWQsIGNhbGxlciBleHBlY3RzICVkIikNCitKTUVTU0FHRShKRVJSX0JBRF9NQ1VfU0laRSwgIlNhbXBsaW5nIGZhY3RvcnMgdG9vIGxhcmdlIGZvciBpbnRlcmxlYXZlZCBzY2FuIikNCitKTUVTU0FHRShKRVJSX0JBRF9QT09MX0lELCAiSW52YWxpZCBtZW1vcnkgcG9vbCBjb2RlICVkIikNCitKTUVTU0FHRShKRVJSX0JBRF9QUkVDSVNJT04sICJVbnN1cHBvcnRlZCBKUEVHIGRhdGEgcHJlY2lzaW9uICVkIikNCitKTUVTU0FHRShKRVJSX0JBRF9QUk9HUkVTU0lPTiwNCisJICJJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgU3M9JWQgU2U9JWQgQWg9JWQgQWw9JWQiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX1BST0dfU0NSSVBULA0KKwkgIkludmFsaWQgcHJvZ3Jlc3NpdmUgcGFyYW1ldGVycyBhdCBzY2FuIHNjcmlwdCBlbnRyeSAlZCIpDQorSk1FU1NBR0UoSkVSUl9CQURfU0FNUExJTkcsICJCb2d1cyBzYW1wbGluZyBmYWN0b3JzIikNCitKTUVTU0FHRShKRVJSX0JBRF9TQ0FOX1NDUklQVCwgIkludmFsaWQgc2NhbiBzY3JpcHQgYXQgZW50cnkgJWQiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX1NUQVRFLCAiSW1wcm9wZXIgY2FsbCB0byBKUEVHIGxpYnJhcnkgaW4gc3RhdGUgJWQiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX1NUUlVDVF9TSVpFLA0KKwkgIkpQRUcgcGFyYW1ldGVyIHN0cnVjdCBtaXNtYXRjaDogbGlicmFyeSB0aGlua3Mgc2l6ZSBpcyAldSwgY2FsbGVyIGV4cGVjdHMgJXUiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX1ZJUlRVQUxfQUNDRVNTLCAiQm9ndXMgdmlydHVhbCBhcnJheSBhY2Nlc3MiKQ0KK0pNRVNTQUdFKEpFUlJfQlVGRkVSX1NJWkUsICJCdWZmZXIgcGFzc2VkIHRvIEpQRUcgbGlicmFyeSBpcyB0b28gc21hbGwiKQ0KK0pNRVNTQUdFKEpFUlJfQ0FOVF9TVVNQRU5ELCAiU3VzcGVuc2lvbiBub3QgYWxsb3dlZCBoZXJlIikNCitKTUVTU0FHRShKRVJSX0NDSVI2MDFfTk9USU1QTCwgIkNDSVI2MDEgc2FtcGxpbmcgbm90IGltcGxlbWVudGVkIHlldCIpDQorSk1FU1NBR0UoSkVSUl9DT01QT05FTlRfQ09VTlQsICJUb28gbWFueSBjb2xvciBjb21wb25lbnRzOiAlZCwgbWF4ICVkIikNCitKTUVTU0FHRShKRVJSX0NPTlZFUlNJT05fTk9USU1QTCwgIlVuc3VwcG9ydGVkIGNvbG9yIGNvbnZlcnNpb24gcmVxdWVzdCIpDQorSk1FU1NBR0UoSkVSUl9EQUNfSU5ERVgsICJCb2d1cyBEQUMgaW5kZXggJWQiKQ0KK0pNRVNTQUdFKEpFUlJfREFDX1ZBTFVFLCAiQm9ndXMgREFDIHZhbHVlIDB4JXgiKQ0KK0pNRVNTQUdFKEpFUlJfREhUX0lOREVYLCAiQm9ndXMgREhUIGluZGV4ICVkIikNCitKTUVTU0FHRShKRVJSX0RRVF9JTkRFWCwgIkJvZ3VzIERRVCBpbmRleCAlZCIpDQorSk1FU1NBR0UoSkVSUl9FTVBUWV9JTUFHRSwgIkVtcHR5IEpQRUcgaW1hZ2UgKEROTCBub3Qgc3VwcG9ydGVkKSIpDQorSk1FU1NBR0UoSkVSUl9FTVNfUkVBRCwgIlJlYWQgZnJvbSBFTVMgZmFpbGVkIikNCitKTUVTU0FHRShKRVJSX0VNU19XUklURSwgIldyaXRlIHRvIEVNUyBmYWlsZWQiKQ0KK0pNRVNTQUdFKEpFUlJfRU9JX0VYUEVDVEVELCAiRGlkbid0IGV4cGVjdCBtb3JlIHRoYW4gb25lIHNjYW4iKQ0KK0pNRVNTQUdFKEpFUlJfRklMRV9SRUFELCAiSW5wdXQgZmlsZSByZWFkIGVycm9yIikNCitKTUVTU0FHRShKRVJSX0ZJTEVfV1JJVEUsICJPdXRwdXQgZmlsZSB3cml0ZSBlcnJvciAtLS0gb3V0IG9mIGRpc2sgc3BhY2U/IikNCitKTUVTU0FHRShKRVJSX0ZSQUNUX1NBTVBMRV9OT1RJTVBMLCAiRnJhY3Rpb25hbCBzYW1wbGluZyBub3QgaW1wbGVtZW50ZWQgeWV0IikNCitKTUVTU0FHRShKRVJSX0hVRkZfQ0xFTl9PVkVSRkxPVywgIkh1ZmZtYW4gY29kZSBzaXplIHRhYmxlIG92ZXJmbG93IikNCitKTUVTU0FHRShKRVJSX0hVRkZfTUlTU0lOR19DT0RFLCAiTWlzc2luZyBIdWZmbWFuIGNvZGUgdGFibGUgZW50cnkiKQ0KK0pNRVNTQUdFKEpFUlJfSU1BR0VfVE9PX0JJRywgIk1heGltdW0gc3VwcG9ydGVkIGltYWdlIGRpbWVuc2lvbiBpcyAldSBwaXhlbHMiKQ0KK0pNRVNTQUdFKEpFUlJfSU5QVVRfRU1QVFksICJFbXB0eSBpbnB1dCBmaWxlIikNCitKTUVTU0FHRShKRVJSX0lOUFVUX0VPRiwgIlByZW1hdHVyZSBlbmQgb2YgaW5wdXQgZmlsZSIpDQorSk1FU1NBR0UoSkVSUl9NSVNNQVRDSEVEX1FVQU5UX1RBQkxFLA0KKwkgIkNhbm5vdCB0cmFuc2NvZGUgZHVlIHRvIG11bHRpcGxlIHVzZSBvZiBxdWFudGl6YXRpb24gdGFibGUgJWQiKQ0KK0pNRVNTQUdFKEpFUlJfTUlTU0lOR19EQVRBLCAiU2NhbiBzY3JpcHQgZG9lcyBub3QgdHJhbnNtaXQgYWxsIGRhdGEiKQ0KK0pNRVNTQUdFKEpFUlJfTU9ERV9DSEFOR0UsICJJbnZhbGlkIGNvbG9yIHF1YW50aXphdGlvbiBtb2RlIGNoYW5nZSIpDQorSk1FU1NBR0UoSkVSUl9OT1RJTVBMLCAiTm90IGltcGxlbWVudGVkIHlldCIpDQorSk1FU1NBR0UoSkVSUl9OT1RfQ09NUElMRUQsICJSZXF1ZXN0ZWQgZmVhdHVyZSB3YXMgb21pdHRlZCBhdCBjb21waWxlIHRpbWUiKQ0KK0pNRVNTQUdFKEpFUlJfTk9fQkFDS0lOR19TVE9SRSwgIkJhY2tpbmcgc3RvcmUgbm90IHN1cHBvcnRlZCIpDQorSk1FU1NBR0UoSkVSUl9OT19IVUZGX1RBQkxFLCAiSHVmZm1hbiB0YWJsZSAweCUwMnggd2FzIG5vdCBkZWZpbmVkIikNCitKTUVTU0FHRShKRVJSX05PX0lNQUdFLCAiSlBFRyBkYXRhc3RyZWFtIGNvbnRhaW5zIG5vIGltYWdlIikNCitKTUVTU0FHRShKRVJSX05PX1FVQU5UX1RBQkxFLCAiUXVhbnRpemF0aW9uIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQiKQ0KK0pNRVNTQUdFKEpFUlJfTk9fU09JLCAiTm90IGEgSlBFRyBmaWxlOiBzdGFydHMgd2l0aCAweCUwMnggMHglMDJ4IikNCitKTUVTU0FHRShKRVJSX09VVF9PRl9NRU1PUlksICJJbnN1ZmZpY2llbnQgbWVtb3J5IChjYXNlICVkKSIpDQorSk1FU1NBR0UoSkVSUl9RVUFOVF9DT01QT05FTlRTLA0KKwkgIkNhbm5vdCBxdWFudGl6ZSBtb3JlIHRoYW4gJWQgY29sb3IgY29tcG9uZW50cyIpDQorSk1FU1NBR0UoSkVSUl9RVUFOVF9GRVdfQ09MT1JTLCAiQ2Fubm90IHF1YW50aXplIHRvIGZld2VyIHRoYW4gJWQgY29sb3JzIikNCitKTUVTU0FHRShKRVJSX1FVQU5UX01BTllfQ09MT1JTLCAiQ2Fubm90IHF1YW50aXplIHRvIG1vcmUgdGhhbiAlZCBjb2xvcnMiKQ0KK0pNRVNTQUdFKEpFUlJfU09GX0RVUExJQ0FURSwgIkludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogdHdvIFNPRiBtYXJrZXJzIikNCitKTUVTU0FHRShKRVJSX1NPRl9OT19TT1MsICJJbnZhbGlkIEpQRUcgZmlsZSBzdHJ1Y3R1cmU6IG1pc3NpbmcgU09TIG1hcmtlciIpDQorSk1FU1NBR0UoSkVSUl9TT0ZfVU5TVVBQT1JURUQsICJVbnN1cHBvcnRlZCBKUEVHIHByb2Nlc3M6IFNPRiB0eXBlIDB4JTAyeCIpDQorSk1FU1NBR0UoSkVSUl9TT0lfRFVQTElDQVRFLCAiSW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiB0d28gU09JIG1hcmtlcnMiKQ0KK0pNRVNTQUdFKEpFUlJfU09TX05PX1NPRiwgIkludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogU09TIGJlZm9yZSBTT0YiKQ0KK0pNRVNTQUdFKEpFUlJfVEZJTEVfQ1JFQVRFLCAiRmFpbGVkIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAlcyIpDQorSk1FU1NBR0UoSkVSUl9URklMRV9SRUFELCAiUmVhZCBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUiKQ0KK0pNRVNTQUdFKEpFUlJfVEZJTEVfU0VFSywgIlNlZWsgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlIikNCitKTUVTU0FHRShKRVJSX1RGSUxFX1dSSVRFLA0KKwkgIldyaXRlIGZhaWxlZCBvbiB0ZW1wb3JhcnkgZmlsZSAtLS0gb3V0IG9mIGRpc2sgc3BhY2U/IikNCitKTUVTU0FHRShKRVJSX1RPT19MSVRUTEVfREFUQSwgIkFwcGxpY2F0aW9uIHRyYW5zZmVycmVkIHRvbyBmZXcgc2NhbmxpbmVzIikNCitKTUVTU0FHRShKRVJSX1VOS05PV05fTUFSS0VSLCAiVW5zdXBwb3J0ZWQgbWFya2VyIHR5cGUgMHglMDJ4IikNCitKTUVTU0FHRShKRVJSX1ZJUlRVQUxfQlVHLCAiVmlydHVhbCBhcnJheSBjb250cm9sbGVyIG1lc3NlZCB1cCIpDQorSk1FU1NBR0UoSkVSUl9XSURUSF9PVkVSRkxPVywgIkltYWdlIHRvbyB3aWRlIGZvciB0aGlzIGltcGxlbWVudGF0aW9uIikNCitKTUVTU0FHRShKRVJSX1hNU19SRUFELCAiUmVhZCBmcm9tIFhNUyBmYWlsZWQiKQ0KK0pNRVNTQUdFKEpFUlJfWE1TX1dSSVRFLCAiV3JpdGUgdG8gWE1TIGZhaWxlZCIpDQorSk1FU1NBR0UoSk1TR19DT1BZUklHSFQsIEpDT1BZUklHSFQpDQorSk1FU1NBR0UoSk1TR19WRVJTSU9OLCBKVkVSU0lPTikNCitKTUVTU0FHRShKVFJDXzE2QklUX1RBQkxFUywNCisJICJDYXV0aW9uOiBxdWFudGl6YXRpb24gdGFibGVzIGFyZSB0b28gY29hcnNlIGZvciBiYXNlbGluZSBKUEVHIikNCitKTUVTU0FHRShKVFJDX0FET0JFLA0KKwkgIkFkb2JlIEFQUDE0IG1hcmtlcjogdmVyc2lvbiAlZCwgZmxhZ3MgMHglMDR4IDB4JTA0eCwgdHJhbnNmb3JtICVkIikNCitKTUVTU0FHRShKVFJDX0FQUDAsICJVbmtub3duIEFQUDAgbWFya2VyIChub3QgSkZJRiksIGxlbmd0aCAldSIpDQorSk1FU1NBR0UoSlRSQ19BUFAxNCwgIlVua25vd24gQVBQMTQgbWFya2VyIChub3QgQWRvYmUpLCBsZW5ndGggJXUiKQ0KK0pNRVNTQUdFKEpUUkNfREFDLCAiRGVmaW5lIEFyaXRobWV0aWMgVGFibGUgMHglMDJ4OiAweCUwMngiKQ0KK0pNRVNTQUdFKEpUUkNfREhULCAiRGVmaW5lIEh1ZmZtYW4gVGFibGUgMHglMDJ4IikNCitKTUVTU0FHRShKVFJDX0RRVCwgIkRlZmluZSBRdWFudGl6YXRpb24gVGFibGUgJWQgIHByZWNpc2lvbiAlZCIpDQorSk1FU1NBR0UoSlRSQ19EUkksICJEZWZpbmUgUmVzdGFydCBJbnRlcnZhbCAldSIpDQorSk1FU1NBR0UoSlRSQ19FTVNfQ0xPU0UsICJGcmVlZCBFTVMgaGFuZGxlICV1IikNCitKTUVTU0FHRShKVFJDX0VNU19PUEVOLCAiT2J0YWluZWQgRU1TIGhhbmRsZSAldSIpDQorSk1FU1NBR0UoSlRSQ19FT0ksICJFbmQgT2YgSW1hZ2UiKQ0KK0pNRVNTQUdFKEpUUkNfSFVGRkJJVFMsICIgICAgICAgICUzZCAlM2QgJTNkICUzZCAlM2QgJTNkICUzZCAlM2QiKQ0KK0pNRVNTQUdFKEpUUkNfSkZJRiwgIkpGSUYgQVBQMCBtYXJrZXI6IHZlcnNpb24gJWQuJTAyZCwgZGVuc2l0eSAlZHglZCAgJWQiKQ0KK0pNRVNTQUdFKEpUUkNfSkZJRl9CQURUSFVNQk5BSUxTSVpFLA0KKwkgIldhcm5pbmc6IHRodW1ibmFpbCBpbWFnZSBzaXplIGRvZXMgbm90IG1hdGNoIGRhdGEgbGVuZ3RoICV1IikNCitKTUVTU0FHRShKVFJDX0pGSUZfRVhURU5TSU9OLA0KKwkgIkpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogdHlwZSAweCUwMngsIGxlbmd0aCAldSIpDQorSk1FU1NBR0UoSlRSQ19KRklGX1RIVU1CTkFJTCwgIiAgICB3aXRoICVkIHggJWQgdGh1bWJuYWlsIGltYWdlIikNCitKTUVTU0FHRShKVFJDX01JU0NfTUFSS0VSLCAiTWlzY2VsbGFuZW91cyBtYXJrZXIgMHglMDJ4LCBsZW5ndGggJXUiKQ0KK0pNRVNTQUdFKEpUUkNfUEFSTUxFU1NfTUFSS0VSLCAiVW5leHBlY3RlZCBtYXJrZXIgMHglMDJ4IikNCitKTUVTU0FHRShKVFJDX1FVQU5UVkFMUywgIiAgICAgICAgJTR1ICU0dSAlNHUgJTR1ICU0dSAlNHUgJTR1ICU0dSIpDQorSk1FU1NBR0UoSlRSQ19RVUFOVF8zX05DT0xPUlMsICJRdWFudGl6aW5nIHRvICVkID0gJWQqJWQqJWQgY29sb3JzIikNCitKTUVTU0FHRShKVFJDX1FVQU5UX05DT0xPUlMsICJRdWFudGl6aW5nIHRvICVkIGNvbG9ycyIpDQorSk1FU1NBR0UoSlRSQ19RVUFOVF9TRUxFQ1RFRCwgIlNlbGVjdGVkICVkIGNvbG9ycyBmb3IgcXVhbnRpemF0aW9uIikNCitKTUVTU0FHRShKVFJDX1JFQ09WRVJZX0FDVElPTiwgIkF0IG1hcmtlciAweCUwMngsIHJlY292ZXJ5IGFjdGlvbiAlZCIpDQorSk1FU1NBR0UoSlRSQ19SU1QsICJSU1QlZCIpDQorSk1FU1NBR0UoSlRSQ19TTU9PVEhfTk9USU1QTCwNCisJICJTbW9vdGhpbmcgbm90IHN1cHBvcnRlZCB3aXRoIG5vbnN0YW5kYXJkIHNhbXBsaW5nIHJhdGlvcyIpDQorSk1FU1NBR0UoSlRSQ19TT0YsICJTdGFydCBPZiBGcmFtZSAweCUwMng6IHdpZHRoPSV1LCBoZWlnaHQ9JXUsIGNvbXBvbmVudHM9JWQiKQ0KK0pNRVNTQUdFKEpUUkNfU09GX0NPTVBPTkVOVCwgIiAgICBDb21wb25lbnQgJWQ6ICVkaHglZHYgcT0lZCIpDQorSk1FU1NBR0UoSlRSQ19TT0ksICJTdGFydCBvZiBJbWFnZSIpDQorSk1FU1NBR0UoSlRSQ19TT1MsICJTdGFydCBPZiBTY2FuOiAlZCBjb21wb25lbnRzIikNCitKTUVTU0FHRShKVFJDX1NPU19DT01QT05FTlQsICIgICAgQ29tcG9uZW50ICVkOiBkYz0lZCBhYz0lZCIpDQorSk1FU1NBR0UoSlRSQ19TT1NfUEFSQU1TLCAiICBTcz0lZCwgU2U9JWQsIEFoPSVkLCBBbD0lZCIpDQorSk1FU1NBR0UoSlRSQ19URklMRV9DTE9TRSwgIkNsb3NlZCB0ZW1wb3JhcnkgZmlsZSAlcyIpDQorSk1FU1NBR0UoSlRSQ19URklMRV9PUEVOLCAiT3BlbmVkIHRlbXBvcmFyeSBmaWxlICVzIikNCitKTUVTU0FHRShKVFJDX1RIVU1CX0pQRUcsDQorCSAiSkZJRiBleHRlbnNpb24gbWFya2VyOiBKUEVHLWNvbXByZXNzZWQgdGh1bWJuYWlsIGltYWdlLCBsZW5ndGggJXUiKQ0KK0pNRVNTQUdFKEpUUkNfVEhVTUJfUEFMRVRURSwNCisJICJKRklGIGV4dGVuc2lvbiBtYXJrZXI6IHBhbGV0dGUgdGh1bWJuYWlsIGltYWdlLCBsZW5ndGggJXUiKQ0KK0pNRVNTQUdFKEpUUkNfVEhVTUJfUkdCLA0KKwkgIkpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogUkdCIHRodW1ibmFpbCBpbWFnZSwgbGVuZ3RoICV1IikNCitKTUVTU0FHRShKVFJDX1VOS05PV05fSURTLA0KKwkgIlVucmVjb2duaXplZCBjb21wb25lbnQgSURzICVkICVkICVkLCBhc3N1bWluZyBZQ2JDciIpDQorSk1FU1NBR0UoSlRSQ19YTVNfQ0xPU0UsICJGcmVlZCBYTVMgaGFuZGxlICV1IikNCitKTUVTU0FHRShKVFJDX1hNU19PUEVOLCAiT2J0YWluZWQgWE1TIGhhbmRsZSAldSIpDQorSk1FU1NBR0UoSldSTl9BRE9CRV9YRk9STSwgIlVua25vd24gQWRvYmUgY29sb3IgdHJhbnNmb3JtIGNvZGUgJWQiKQ0KK0pNRVNTQUdFKEpXUk5fQk9HVVNfUFJPR1JFU1NJT04sDQorCSAiSW5jb25zaXN0ZW50IHByb2dyZXNzaW9uIHNlcXVlbmNlIGZvciBjb21wb25lbnQgJWQgY29lZmZpY2llbnQgJWQiKQ0KK0pNRVNTQUdFKEpXUk5fRVhUUkFORU9VU19EQVRBLA0KKwkgIkNvcnJ1cHQgSlBFRyBkYXRhOiAldSBleHRyYW5lb3VzIGJ5dGVzIGJlZm9yZSBtYXJrZXIgMHglMDJ4IikNCitKTUVTU0FHRShKV1JOX0hJVF9NQVJLRVIsICJDb3JydXB0IEpQRUcgZGF0YTogcHJlbWF0dXJlIGVuZCBvZiBkYXRhIHNlZ21lbnQiKQ0KK0pNRVNTQUdFKEpXUk5fSFVGRl9CQURfQ09ERSwgIkNvcnJ1cHQgSlBFRyBkYXRhOiBiYWQgSHVmZm1hbiBjb2RlIikNCitKTUVTU0FHRShKV1JOX0pGSUZfTUFKT1IsICJXYXJuaW5nOiB1bmtub3duIEpGSUYgcmV2aXNpb24gbnVtYmVyICVkLiUwMmQiKQ0KK0pNRVNTQUdFKEpXUk5fSlBFR19FT0YsICJQcmVtYXR1cmUgZW5kIG9mIEpQRUcgZmlsZSIpDQorSk1FU1NBR0UoSldSTl9NVVNUX1JFU1lOQywNCisJICJDb3JydXB0IEpQRUcgZGF0YTogZm91bmQgbWFya2VyIDB4JTAyeCBpbnN0ZWFkIG9mIFJTVCVkIikNCitKTUVTU0FHRShKV1JOX05PVF9TRVFVRU5USUFMLCAiSW52YWxpZCBTT1MgcGFyYW1ldGVycyBmb3Igc2VxdWVudGlhbCBKUEVHIikNCitKTUVTU0FHRShKV1JOX1RPT19NVUNIX0RBVEEsICJBcHBsaWNhdGlvbiB0cmFuc2ZlcnJlZCB0b28gbWFueSBzY2FubGluZXMiKQ0KKw0KKyNpZmRlZiBKTUFLRV9FTlVNX0xJU1QNCisNCisgIEpNU0dfTEFTVE1TR0NPREUNCit9IEpfTUVTU0FHRV9DT0RFOw0KKw0KKyN1bmRlZiBKTUFLRV9FTlVNX0xJU1QNCisjZW5kaWYgLyogSk1BS0VfRU5VTV9MSVNUICovDQorDQorLyogWmFwIEpNRVNTQUdFIG1hY3JvIHNvIHRoYXQgZnV0dXJlIHJlLWluY2x1c2lvbnMgZG8gbm90aGluZyBieSBkZWZhdWx0ICovDQorI3VuZGVmIEpNRVNTQUdFDQorDQorDQorI2lmbmRlZiBKRVJST1JfSA0KKyNkZWZpbmUgSkVSUk9SX0gNCisNCisvKiBNYWNyb3MgdG8gc2ltcGxpZnkgdXNpbmcgdGhlIGVycm9yIGFuZCB0cmFjZSBtZXNzYWdlIHN0dWZmICovDQorLyogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBlaXRoZXIgdHlwZSBvZiBjaW5mbyBwb2ludGVyICovDQorDQorLyogRmF0YWwgZXJyb3JzIChwcmludCBtZXNzYWdlIGFuZCBleGl0KSAqLw0KKyNkZWZpbmUgRVJSRVhJVChjaW5mbyxjb2RlKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoKihjaW5mbyktPmVyci0+ZXJyb3JfZXhpdCkgKChqX2NvbW1vbl9wdHIpIChjaW5mbykpKQ0KKyNkZWZpbmUgRVJSRVhJVDEoY2luZm8sY29kZSxwMSkgIFwNCisgICgoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzBdID0gKHAxKSwgXA0KKyAgICgqKGNpbmZvKS0+ZXJyLT5lcnJvcl9leGl0KSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSkpDQorI2RlZmluZSBFUlJFWElUMihjaW5mbyxjb2RlLHAxLHAyKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMF0gPSAocDEpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzFdID0gKHAyKSwgXA0KKyAgICgqKGNpbmZvKS0+ZXJyLT5lcnJvcl9leGl0KSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSkpDQorI2RlZmluZSBFUlJFWElUMyhjaW5mbyxjb2RlLHAxLHAyLHAzKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMF0gPSAocDEpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzFdID0gKHAyKSwgXA0KKyAgIChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaVsyXSA9IChwMyksIFwNCisgICAoKihjaW5mbyktPmVyci0+ZXJyb3JfZXhpdCkgKChqX2NvbW1vbl9wdHIpIChjaW5mbykpKQ0KKyNkZWZpbmUgRVJSRVhJVDQoY2luZm8sY29kZSxwMSxwMixwMyxwNCkgIFwNCisgICgoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzBdID0gKHAxKSwgXA0KKyAgIChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaVsxXSA9IChwMiksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMl0gPSAocDMpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzNdID0gKHA0KSwgXA0KKyAgICgqKGNpbmZvKS0+ZXJyLT5lcnJvcl9leGl0KSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSkpDQorI2RlZmluZSBFUlJFWElUUyhjaW5mbyxjb2RlLHN0cikgIFwNCisgICgoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpLCBcDQorICAgRlhTWVNfc3RybmNweSgoY2luZm8pLT5lcnItPm1zZ19wYXJtLnMsIChzdHIpLCBKTVNHX1NUUl9QQVJNX01BWCksIFwNCisgICAoKihjaW5mbyktPmVyci0+ZXJyb3JfZXhpdCkgKChqX2NvbW1vbl9wdHIpIChjaW5mbykpKQ0KKw0KKyNkZWZpbmUgTUFLRVNUTVQoc3R1ZmYpCQlkbyB7IHN0dWZmIH0gd2hpbGUgKDApDQorDQorLyogTm9uZmF0YWwgZXJyb3JzICh3ZSBjYW4ga2VlcCBnb2luZywgYnV0IHRoZSBkYXRhIGlzIHByb2JhYmx5IGNvcnJ1cHQpICovDQorI2RlZmluZSBXQVJOTVMoY2luZm8sY29kZSkgIFwNCisgICgoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpLCBcDQorICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIC0xKSkNCisjZGVmaW5lIFdBUk5NUzEoY2luZm8sY29kZSxwMSkgIFwNCisgICgoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzBdID0gKHAxKSwgXA0KKyAgICgqKGNpbmZvKS0+ZXJyLT5lbWl0X21lc3NhZ2UpICgoal9jb21tb25fcHRyKSAoY2luZm8pLCAtMSkpDQorI2RlZmluZSBXQVJOTVMyKGNpbmZvLGNvZGUscDEscDIpICBcDQorICAoKGNpbmZvKS0+ZXJyLT5tc2dfY29kZSA9IChjb2RlKSwgXA0KKyAgIChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaVswXSA9IChwMSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMV0gPSAocDIpLCBcDQorICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIC0xKSkNCisNCisvKiBJbmZvcm1hdGlvbmFsL2RlYnVnZ2luZyBtZXNzYWdlcyAqLw0KKyNkZWZpbmUgVFJBQ0VNUyhjaW5mbyxsdmwsY29kZSkgIFwNCisgICgoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpLCBcDQorICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIChsdmwpKSkNCisjZGVmaW5lIFRSQUNFTVMxKGNpbmZvLGx2bCxjb2RlLHAxKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMF0gPSAocDEpLCBcDQorICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIChsdmwpKSkNCisjZGVmaW5lIFRSQUNFTVMyKGNpbmZvLGx2bCxjb2RlLHAxLHAyKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMF0gPSAocDEpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzFdID0gKHAyKSwgXA0KKyAgICgqKGNpbmZvKS0+ZXJyLT5lbWl0X21lc3NhZ2UpICgoal9jb21tb25fcHRyKSAoY2luZm8pLCAobHZsKSkpDQorI2RlZmluZSBUUkFDRU1TMyhjaW5mbyxsdmwsY29kZSxwMSxwMixwMykgIFwNCisgIE1BS0VTVE1UKGludCAqIF9tcCA9IChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaTsgXA0KKwkgICBfbXBbMF0gPSAocDEpOyBfbXBbMV0gPSAocDIpOyBfbXBbMl0gPSAocDMpOyBcDQorCSAgIChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSk7IFwNCisJICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIChsdmwpKTsgKQ0KKyNkZWZpbmUgVFJBQ0VNUzQoY2luZm8sbHZsLGNvZGUscDEscDIscDMscDQpICBcDQorICBNQUtFU1RNVChpbnQgKiBfbXAgPSAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmk7IFwNCisJICAgX21wWzBdID0gKHAxKTsgX21wWzFdID0gKHAyKTsgX21wWzJdID0gKHAzKTsgX21wWzNdID0gKHA0KTsgXA0KKwkgICAoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpOyBcDQorCSAgICgqKGNpbmZvKS0+ZXJyLT5lbWl0X21lc3NhZ2UpICgoal9jb21tb25fcHRyKSAoY2luZm8pLCAobHZsKSk7ICkNCisjZGVmaW5lIFRSQUNFTVM1KGNpbmZvLGx2bCxjb2RlLHAxLHAyLHAzLHA0LHA1KSAgXA0KKyAgTUFLRVNUTVQoaW50ICogX21wID0gKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pOyBcDQorCSAgIF9tcFswXSA9IChwMSk7IF9tcFsxXSA9IChwMik7IF9tcFsyXSA9IChwMyk7IF9tcFszXSA9IChwNCk7IFwNCisJICAgX21wWzRdID0gKHA1KTsgXA0KKwkgICAoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpOyBcDQorCSAgICgqKGNpbmZvKS0+ZXJyLT5lbWl0X21lc3NhZ2UpICgoal9jb21tb25fcHRyKSAoY2luZm8pLCAobHZsKSk7ICkNCisjZGVmaW5lIFRSQUNFTVM4KGNpbmZvLGx2bCxjb2RlLHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4KSAgXA0KKyAgTUFLRVNUTVQoaW50ICogX21wID0gKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pOyBcDQorCSAgIF9tcFswXSA9IChwMSk7IF9tcFsxXSA9IChwMik7IF9tcFsyXSA9IChwMyk7IF9tcFszXSA9IChwNCk7IFwNCisJICAgX21wWzRdID0gKHA1KTsgX21wWzVdID0gKHA2KTsgX21wWzZdID0gKHA3KTsgX21wWzddID0gKHA4KTsgXA0KKwkgICAoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpOyBcDQorCSAgICgqKGNpbmZvKS0+ZXJyLT5lbWl0X21lc3NhZ2UpICgoal9jb21tb25fcHRyKSAoY2luZm8pLCAobHZsKSk7ICkNCisjZGVmaW5lIFRSQUNFTVNTKGNpbmZvLGx2bCxjb2RlLHN0cikgIFwNCisgICgoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpLCBcDQorICAgRlhTWVNfc3RybmNweSgoY2luZm8pLT5lcnItPm1zZ19wYXJtLnMsIChzdHIpLCBKTVNHX1NUUl9QQVJNX01BWCksIFwNCisgICAoKihjaW5mbyktPmVyci0+ZW1pdF9tZXNzYWdlKSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSwgKGx2bCkpKQ0KKw0KKyNlbmRpZiAvKiBKRVJST1JfSCAqLw0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvbGlianBlZy9qbW9yZWNmZy5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy9saWJqcGVnL2ptb3JlY2ZnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwMjExNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvbGlianBlZy9qbW9yZWNmZy5oCkBAIC0wLDAgKzEsMzc2IEBACisvKg0KKyAqIGptb3JlY2ZnLmgNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5MS0xOTk3LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGN1c3RvbWl6ZSB0aGUNCisgKiBKUEVHIHNvZnR3YXJlIGZvciBzcGVjaWFsIGFwcGxpY2F0aW9ucyBvciBzdXBwb3J0IG1hY2hpbmUtZGVwZW5kZW50DQorICogb3B0aW1pemF0aW9ucy4gIE1vc3QgdXNlcnMgd2lsbCBub3QgbmVlZCB0byB0b3VjaCB0aGlzIGZpbGUuDQorICovDQorDQorI2lmZGVmIF9NU0NfVkVSDQorI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDE0MikNCisjZW5kaWYNCisNCisvKg0KKyAqIERlZmluZSBCSVRTX0lOX0pTQU1QTEUgYXMgZWl0aGVyDQorICogICA4ICAgZm9yIDgtYml0IHNhbXBsZSB2YWx1ZXMgKHRoZSB1c3VhbCBzZXR0aW5nKQ0KKyAqICAgMTIgIGZvciAxMi1iaXQgc2FtcGxlIHZhbHVlcw0KKyAqIE9ubHkgOCBhbmQgMTIgYXJlIGxlZ2FsIGRhdGEgcHJlY2lzaW9ucyBmb3IgbG9zc3kgSlBFRyBhY2NvcmRpbmcgdG8gdGhlDQorICogSlBFRyBzdGFuZGFyZCwgYW5kIHRoZSBJSkcgY29kZSBkb2VzIG5vdCBzdXBwb3J0IGFueXRoaW5nIGVsc2UhDQorICogV2UgZG8gbm90IHN1cHBvcnQgcnVuLXRpbWUgc2VsZWN0aW9uIG9mIGRhdGEgcHJlY2lzaW9uLCBzb3JyeS4NCisgKi8NCisNCisjZGVmaW5lIEJJVFNfSU5fSlNBTVBMRSAgOAkvKiB1c2UgOCBvciAxMiAqLw0KKw0KKw0KKy8qDQorICogTWF4aW11bSBudW1iZXIgb2YgY29tcG9uZW50cyAoY29sb3IgY2hhbm5lbHMpIGFsbG93ZWQgaW4gSlBFRyBpbWFnZS4NCisgKiBUbyBtZWV0IHRoZSBsZXR0ZXIgb2YgdGhlIEpQRUcgc3BlYywgc2V0IHRoaXMgdG8gMjU1LiAgSG93ZXZlciwgZGFybg0KKyAqIGZldyBhcHBsaWNhdGlvbnMgbmVlZCBtb3JlIHRoYW4gNCBjaGFubmVscyAobWF5YmUgNSBmb3IgQ01ZSyArIGFscGhhDQorICogbWFzaykuICBXZSByZWNvbW1lbmQgMTAgYXMgYSByZWFzb25hYmxlIGNvbXByb21pc2U7IHVzZSA0IGlmIHlvdSBhcmUNCisgKiByZWFsbHkgc2hvcnQgb24gbWVtb3J5LiAgKEVhY2ggYWxsb3dlZCBjb21wb25lbnQgY29zdHMgYSBodW5kcmVkIG9yIHNvDQorICogYnl0ZXMgb2Ygc3RvcmFnZSwgd2hldGhlciBhY3R1YWxseSB1c2VkIGluIGFuIGltYWdlIG9yIG5vdC4pDQorICovDQorDQorI2RlZmluZSBNQVhfQ09NUE9ORU5UUyAgMTAJLyogbWF4aW11bSBudW1iZXIgb2YgaW1hZ2UgY29tcG9uZW50cyAqLw0KKw0KKw0KKy8qDQorICogQmFzaWMgZGF0YSB0eXBlcy4NCisgKiBZb3UgbWF5IG5lZWQgdG8gY2hhbmdlIHRoZXNlIGlmIHlvdSBoYXZlIGEgbWFjaGluZSB3aXRoIHVudXN1YWwgZGF0YQ0KKyAqIHR5cGUgc2l6ZXM7IGZvciBleGFtcGxlLCAiY2hhciIgbm90IDggYml0cywgInNob3J0IiBub3QgMTYgYml0cywNCisgKiBvciAibG9uZyIgbm90IDMyIGJpdHMuICBXZSBkb24ndCBjYXJlIHdoZXRoZXIgImludCIgaXMgMTYgb3IgMzIgYml0cywNCisgKiBidXQgaXQgaGFkIGJldHRlciBiZSBhdCBsZWFzdCAxNi4NCisgKi8NCisNCisvKiBSZXByZXNlbnRhdGlvbiBvZiBhIHNpbmdsZSBzYW1wbGUgKHBpeGVsIGVsZW1lbnQgdmFsdWUpLg0KKyAqIFdlIGZyZXF1ZW50bHkgYWxsb2NhdGUgbGFyZ2UgYXJyYXlzIG9mIHRoZXNlLCBzbyBpdCdzIGltcG9ydGFudCB0byBrZWVwDQorICogdGhlbSBzbWFsbC4gIEJ1dCBpZiB5b3UgaGF2ZSBtZW1vcnkgdG8gYnVybiBhbmQgYWNjZXNzIHRvIGNoYXIgb3Igc2hvcnQNCisgKiBhcnJheXMgaXMgdmVyeSBzbG93IG9uIHlvdXIgaGFyZHdhcmUsIHlvdSBtaWdodCB3YW50IHRvIGNoYW5nZSB0aGVzZS4NCisgKi8NCisNCisjaWYgQklUU19JTl9KU0FNUExFID09IDgNCisvKiBKU0FNUExFIHNob3VsZCBiZSB0aGUgc21hbGxlc3QgdHlwZSB0aGF0IHdpbGwgaG9sZCB0aGUgdmFsdWVzIDAuLjI1NS4NCisgKiBZb3UgY2FuIHVzZSBhIHNpZ25lZCBjaGFyIGJ5IGhhdmluZyBHRVRKU0FNUExFIG1hc2sgaXQgd2l0aCAweEZGLg0KKyAqLw0KKw0KKyNpZmRlZiBIQVZFX1VOU0lHTkVEX0NIQVINCisNCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgSlNBTVBMRTsNCisjZGVmaW5lIEdFVEpTQU1QTEUodmFsdWUpICAoKGludCkgKHZhbHVlKSkNCisNCisjZWxzZSAvKiBub3QgSEFWRV9VTlNJR05FRF9DSEFSICovDQorDQordHlwZWRlZiBjaGFyIEpTQU1QTEU7DQorI2lmZGVmIENIQVJfSVNfVU5TSUdORUQNCisjZGVmaW5lIEdFVEpTQU1QTEUodmFsdWUpICAoKGludCkgKHZhbHVlKSkNCisjZWxzZQ0KKyNkZWZpbmUgR0VUSlNBTVBMRSh2YWx1ZSkgICgoaW50KSAodmFsdWUpICYgMHhGRikNCisjZW5kaWYgLyogQ0hBUl9JU19VTlNJR05FRCAqLw0KKw0KKyNlbmRpZiAvKiBIQVZFX1VOU0lHTkVEX0NIQVIgKi8NCisNCisjZGVmaW5lIE1BWEpTQU1QTEUJMjU1DQorI2RlZmluZSBDRU5URVJKU0FNUExFCTEyOA0KKw0KKyNlbmRpZiAvKiBCSVRTX0lOX0pTQU1QTEUgPT0gOCAqLw0KKw0KKw0KKyNpZiBCSVRTX0lOX0pTQU1QTEUgPT0gMTINCisvKiBKU0FNUExFIHNob3VsZCBiZSB0aGUgc21hbGxlc3QgdHlwZSB0aGF0IHdpbGwgaG9sZCB0aGUgdmFsdWVzIDAuLjQwOTUuDQorICogT24gbmVhcmx5IGFsbCBtYWNoaW5lcyAic2hvcnQiIHdpbGwgZG8gbmljZWx5Lg0KKyAqLw0KKw0KK3R5cGVkZWYgc2hvcnQgSlNBTVBMRTsNCisjZGVmaW5lIEdFVEpTQU1QTEUodmFsdWUpICAoKGludCkgKHZhbHVlKSkNCisNCisjZGVmaW5lIE1BWEpTQU1QTEUJNDA5NQ0KKyNkZWZpbmUgQ0VOVEVSSlNBTVBMRQkyMDQ4DQorDQorI2VuZGlmIC8qIEJJVFNfSU5fSlNBTVBMRSA9PSAxMiAqLw0KKw0KKw0KKy8qIFJlcHJlc2VudGF0aW9uIG9mIGEgRENUIGZyZXF1ZW5jeSBjb2VmZmljaWVudC4NCisgKiBUaGlzIHNob3VsZCBiZSBhIHNpZ25lZCB2YWx1ZSBvZiBhdCBsZWFzdCAxNiBiaXRzOyAic2hvcnQiIGlzIHVzdWFsbHkgT0suDQorICogQWdhaW4sIHdlIGFsbG9jYXRlIGxhcmdlIGFycmF5cyBvZiB0aGVzZSwgYnV0IHlvdSBjYW4gY2hhbmdlIHRvIGludA0KKyAqIGlmIHlvdSBoYXZlIG1lbW9yeSB0byBidXJuIGFuZCAic2hvcnQiIGlzIHJlYWxseSBzbG93Lg0KKyAqLw0KKw0KK3R5cGVkZWYgc2hvcnQgSkNPRUY7DQorDQorDQorLyogQ29tcHJlc3NlZCBkYXRhc3RyZWFtcyBhcmUgcmVwcmVzZW50ZWQgYXMgYXJyYXlzIG9mIEpPQ1RFVC4NCisgKiBUaGVzZSBtdXN0IGJlIEVYQUNUTFkgOCBiaXRzIHdpZGUsIGF0IGxlYXN0IG9uY2UgdGhleSBhcmUgd3JpdHRlbiB0bw0KKyAqIGV4dGVybmFsIHN0b3JhZ2UuICBOb3RlIHRoYXQgd2hlbiB1c2luZyB0aGUgc3RkaW8gZGF0YSBzb3VyY2UvZGVzdGluYXRpb24NCisgKiBtYW5hZ2VycywgdGhpcyBpcyBhbHNvIHRoZSBkYXRhIHR5cGUgcGFzc2VkIHRvIGZyZWFkL2Z3cml0ZS4NCisgKi8NCisNCisjaWZkZWYgSEFWRV9VTlNJR05FRF9DSEFSDQorDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIEpPQ1RFVDsNCisjZGVmaW5lIEdFVEpPQ1RFVCh2YWx1ZSkgICh2YWx1ZSkNCisNCisjZWxzZSAvKiBub3QgSEFWRV9VTlNJR05FRF9DSEFSICovDQorDQordHlwZWRlZiBjaGFyIEpPQ1RFVDsNCisjaWZkZWYgQ0hBUl9JU19VTlNJR05FRA0KKyNkZWZpbmUgR0VUSk9DVEVUKHZhbHVlKSAgKHZhbHVlKQ0KKyNlbHNlDQorI2RlZmluZSBHRVRKT0NURVQodmFsdWUpICAoKHZhbHVlKSAmIDB4RkYpDQorI2VuZGlmIC8qIENIQVJfSVNfVU5TSUdORUQgKi8NCisNCisjZW5kaWYgLyogSEFWRV9VTlNJR05FRF9DSEFSICovDQorDQorDQorLyogVGhlc2UgdHlwZWRlZnMgYXJlIHVzZWQgZm9yIHZhcmlvdXMgdGFibGUgZW50cmllcyBhbmQgc28gZm9ydGguDQorICogVGhleSBtdXN0IGJlIGF0IGxlYXN0IGFzIHdpZGUgYXMgc3BlY2lmaWVkOyBidXQgbWFraW5nIHRoZW0gdG9vIGJpZw0KKyAqIHdvbid0IGNvc3QgYSBodWdlIGFtb3VudCBvZiBtZW1vcnksIHNvIHdlIGRvbid0IHByb3ZpZGUgc3BlY2lhbA0KKyAqIGV4dHJhY3Rpb24gY29kZSBsaWtlIHdlIGRpZCBmb3IgSlNBTVBMRS4gIChJbiBvdGhlciB3b3JkcywgdGhlc2UNCisgKiB0eXBlZGVmcyBsaXZlIGF0IGEgZGlmZmVyZW50IHBvaW50IG9uIHRoZSBzcGVlZC9zcGFjZSB0cmFkZW9mZiBjdXJ2ZS4pDQorICovDQorDQorI2lmIF9GWF9PU18gIT0gX0ZYX1ZYV09SS1NfDQorDQorLyogVUlOVDggbXVzdCBob2xkIGF0IGxlYXN0IHRoZSB2YWx1ZXMgMC4uMjU1LiAqLw0KKw0KKyNpZmRlZiBIQVZFX1VOU0lHTkVEX0NIQVINCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUlOVDg7DQorI2Vsc2UgLyogbm90IEhBVkVfVU5TSUdORURfQ0hBUiAqLw0KKyNpZmRlZiBDSEFSX0lTX1VOU0lHTkVEDQordHlwZWRlZiBjaGFyIFVJTlQ4Ow0KKyNlbHNlIC8qIG5vdCBDSEFSX0lTX1VOU0lHTkVEICovDQordHlwZWRlZiBzaG9ydCBVSU5UODsNCisjZW5kaWYgLyogQ0hBUl9JU19VTlNJR05FRCAqLw0KKyNlbmRpZiAvKiBIQVZFX1VOU0lHTkVEX0NIQVIgKi8NCisNCisNCisvKiBVSU5UMTYgbXVzdCBob2xkIGF0IGxlYXN0IHRoZSB2YWx1ZXMgMC4uNjU1MzUuICovDQorDQorI2lmZGVmIEhBVkVfVU5TSUdORURfU0hPUlQNCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVJTlQxNjsNCisjZWxzZSAvKiBub3QgSEFWRV9VTlNJR05FRF9TSE9SVCAqLw0KK3R5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQxNjsNCisjZW5kaWYgLyogSEFWRV9VTlNJR05FRF9TSE9SVCAqLw0KKw0KKy8qIElOVDE2IG11c3QgaG9sZCBhdCBsZWFzdCB0aGUgdmFsdWVzIC0zMjc2OC4uMzI3NjcuICovDQorDQorI2lmbmRlZiBYTURfSAkJCS8qIFgxMS94bWQuaCBjb3JyZWN0bHkgZGVmaW5lcyBJTlQxNiAqLw0KK3R5cGVkZWYgc2hvcnQgSU5UMTY7DQorI2VuZGlmDQorDQorLyogSU5UMzIgbXVzdCBob2xkIGF0IGxlYXN0IHNpZ25lZCAzMi1iaXQgdmFsdWVzLiAqLw0KKw0KKyNpZm5kZWYgWE1EX0gJCQkvKiBYMTEveG1kLmggY29ycmVjdGx5IGRlZmluZXMgSU5UMzIgKi8NCit0eXBlZGVmIGludCBJTlQzMjsNCisjZW5kaWYNCisNCisjZW5kaWYgDQorDQorLyogRGF0YXR5cGUgdXNlZCBmb3IgaW1hZ2UgZGltZW5zaW9ucy4gIFRoZSBKUEVHIHN0YW5kYXJkIG9ubHkgc3VwcG9ydHMNCisgKiBpbWFnZXMgdXAgdG8gNjRLKjY0SyBkdWUgdG8gMTYtYml0IGZpZWxkcyBpbiBTT0YgbWFya2Vycy4gIFRoZXJlZm9yZQ0KKyAqICJ1bnNpZ25lZCBpbnQiIGlzIHN1ZmZpY2llbnQgb24gYWxsIG1hY2hpbmVzLiAgSG93ZXZlciwgaWYgeW91IG5lZWQgdG8NCisgKiBoYW5kbGUgbGFyZ2VyIGltYWdlcyBhbmQgeW91IGRvbid0IG1pbmQgZGV2aWF0aW5nIGZyb20gdGhlIHNwZWMsIHlvdQ0KKyAqIGNhbiBjaGFuZ2UgdGhpcyBkYXRhdHlwZS4NCisgKi8NCisNCit0eXBlZGVmIHVuc2lnbmVkIGludCBKRElNRU5TSU9OOw0KKw0KKyNkZWZpbmUgSlBFR19NQVhfRElNRU5TSU9OICA2NTUwMEwgIC8qIGEgdGFkIHVuZGVyIDY0SyB0byBwcmV2ZW50IG92ZXJmbG93cyAqLw0KKw0KKw0KKy8qIFRoZXNlIG1hY3JvcyBhcmUgdXNlZCBpbiBhbGwgZnVuY3Rpb24gZGVmaW5pdGlvbnMgYW5kIGV4dGVybiBkZWNsYXJhdGlvbnMuDQorICogWW91IGNvdWxkIG1vZGlmeSB0aGVtIGlmIHlvdSBuZWVkIHRvIGNoYW5nZSBmdW5jdGlvbiBsaW5rYWdlIGNvbnZlbnRpb25zOw0KKyAqIGluIHBhcnRpY3VsYXIsIHlvdSdsbCBuZWVkIHRvIGRvIHRoYXQgdG8gbWFrZSB0aGUgbGlicmFyeSBhIFdpbmRvd3MgRExMLg0KKyAqIEFub3RoZXIgYXBwbGljYXRpb24gaXMgdG8gbWFrZSBhbGwgZnVuY3Rpb25zIGdsb2JhbCBmb3IgdXNlIHdpdGggZGVidWdnZXJzDQorICogb3IgY29kZSBwcm9maWxlcnMgdGhhdCByZXF1aXJlIGl0Lg0KKyAqLw0KKw0KKy8qIGEgZnVuY3Rpb24gY2FsbGVkIHRocm91Z2ggbWV0aG9kIHBvaW50ZXJzOiAqLw0KKyNkZWZpbmUgTUVUSE9EREVGKHR5cGUpCQlzdGF0aWMgdHlwZQ0KKy8qIGEgZnVuY3Rpb24gdXNlZCBvbmx5IGluIGl0cyBtb2R1bGU6ICovDQorI2RlZmluZSBMT0NBTCh0eXBlKQkJc3RhdGljIHR5cGUNCisvKiBhIGZ1bmN0aW9uIHJlZmVyZW5jZWQgdGhydSBFWFRFUk5zOiAqLw0KKyNkZWZpbmUgR0xPQkFMKHR5cGUpCQl0eXBlDQorDQorI2lmZGVmIF9GWF9NQU5BR0VEX0NPREVfDQorI2RlZmluZSBFWFRFUk4odHlwZSkJCWV4dGVybiAiQyIgdHlwZQ0KKyNlbHNlDQorLyogYSByZWZlcmVuY2UgdG8gYSBHTE9CQUwgZnVuY3Rpb246ICovDQorI2RlZmluZSBFWFRFUk4odHlwZSkJCWV4dGVybiB0eXBlDQorI2VuZGlmDQorDQorDQorLyogVGhpcyBtYWNybyBpcyB1c2VkIHRvIGRlY2xhcmUgYSAibWV0aG9kIiwgdGhhdCBpcywgYSBmdW5jdGlvbiBwb2ludGVyLg0KKyAqIFdlIHdhbnQgdG8gc3VwcGx5IHByb3RvdHlwZSBwYXJhbWV0ZXJzIGlmIHRoZSBjb21waWxlciBjYW4gY29wZS4NCisgKiBOb3RlIHRoYXQgdGhlIGFyZ2xpc3QgcGFyYW1ldGVyIG11c3QgYmUgcGFyZW50aGVzaXplZCENCisgKiBBZ2FpbiwgeW91IGNhbiBjdXN0b21pemUgdGhpcyBpZiB5b3UgbmVlZCBzcGVjaWFsIGxpbmthZ2Uga2V5d29yZHMuDQorICovDQorDQorI2lmZGVmIEhBVkVfUFJPVE9UWVBFUw0KKyNkZWZpbmUgSk1FVEhPRCh0eXBlLG1ldGhvZG5hbWUsYXJnbGlzdCkgIHR5cGUgKCptZXRob2RuYW1lKSBhcmdsaXN0DQorI2Vsc2UNCisjZGVmaW5lIEpNRVRIT0QodHlwZSxtZXRob2RuYW1lLGFyZ2xpc3QpICB0eXBlICgqbWV0aG9kbmFtZSkgKCkNCisjZW5kaWYNCisNCisNCisvKiBIZXJlIGlzIHRoZSBwc2V1ZG8ta2V5d29yZCBmb3IgZGVjbGFyaW5nIHBvaW50ZXJzIHRoYXQgbXVzdCBiZSAiZmFyIg0KKyAqIG9uIDgweDg2IG1hY2hpbmVzLiAgTW9zdCBvZiB0aGUgc3BlY2lhbGl6ZWQgY29kaW5nIGZvciA4MHg4NiBpcyBoYW5kbGVkDQorICogYnkganVzdCBzYXlpbmcgIkZBUiAqIiB3aGVyZSBzdWNoIGEgcG9pbnRlciBpcyBuZWVkZWQuICBJbiBhIGZldyBwbGFjZXMNCisgKiBleHBsaWNpdCBjb2RpbmcgaXMgbmVlZGVkOyBzZWUgdXNlcyBvZiB0aGUgTkVFRF9GQVJfUE9JTlRFUlMgc3ltYm9sLg0KKyAqLw0KKw0KKyNpZmRlZiBORUVEX0ZBUl9QT0lOVEVSUw0KKyNkZWZpbmUgRkFSICBmYXINCisjZWxzZQ0KKy8vI2RlZmluZSBGQVINCisjZW5kaWYNCisNCisNCisvKg0KKyAqIE9uIGEgZmV3IHN5c3RlbXMsIHR5cGUgYm9vbGVhbiBhbmQvb3IgaXRzIHZhbHVlcyBGQUxTRSwgVFJVRSBtYXkgYXBwZWFyDQorICogaW4gc3RhbmRhcmQgaGVhZGVyIGZpbGVzLiAgT3IgeW91IG1heSBoYXZlIGNvbmZsaWN0cyB3aXRoIGFwcGxpY2F0aW9uLQ0KKyAqIHNwZWNpZmljIGhlYWRlciBmaWxlcyB0aGF0IHlvdSB3YW50IHRvIGluY2x1ZGUgdG9nZXRoZXIgd2l0aCB0aGVzZSBmaWxlcy4NCisgKiBEZWZpbmluZyBIQVZFX0JPT0xFQU4gYmVmb3JlIGluY2x1ZGluZyBqcGVnbGliLmggc2hvdWxkIG1ha2UgaXQgd29yay4NCisgKi8NCisNCisjaWZuZGVmIEhBVkVfQk9PTEVBTg0KK3R5cGVkZWYgaW50IGJvb2xlYW47DQorI2VuZGlmDQorI2lmbmRlZiBGQUxTRQkJCS8qIGluIGNhc2UgdGhlc2UgbWFjcm9zIGFscmVhZHkgZXhpc3QgKi8NCisjZGVmaW5lIEZBTFNFCTAJCS8qIHZhbHVlcyBvZiBib29sZWFuICovDQorI2VuZGlmDQorI2lmbmRlZiBUUlVFDQorI2RlZmluZSBUUlVFCTENCisjZW5kaWYNCisNCisNCisvKg0KKyAqIFRoZSByZW1haW5pbmcgb3B0aW9ucyBhZmZlY3QgY29kZSBzZWxlY3Rpb24gd2l0aGluIHRoZSBKUEVHIGxpYnJhcnksDQorICogYnV0IHRoZXkgZG9uJ3QgbmVlZCB0byBiZSB2aXNpYmxlIHRvIG1vc3QgYXBwbGljYXRpb25zIHVzaW5nIHRoZSBsaWJyYXJ5Lg0KKyAqIFRvIG1pbmltaXplIGFwcGxpY2F0aW9uIG5hbWVzcGFjZSBwb2xsdXRpb24sIHRoZSBzeW1ib2xzIHdvbid0IGJlDQorICogZGVmaW5lZCB1bmxlc3MgSlBFR19JTlRFUk5BTFMgb3IgSlBFR19JTlRFUk5BTF9PUFRJT05TIGhhcyBiZWVuIGRlZmluZWQuDQorICovDQorDQorI2lmZGVmIEpQRUdfSU5URVJOQUxTDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMX09QVElPTlMNCisjZW5kaWYNCisNCisjaWZkZWYgSlBFR19JTlRFUk5BTF9PUFRJT05TDQorDQorDQorLyoNCisgKiBUaGVzZSBkZWZpbmVzIGluZGljYXRlIHdoZXRoZXIgdG8gaW5jbHVkZSB2YXJpb3VzIG9wdGlvbmFsIGZ1bmN0aW9ucy4NCisgKiBVbmRlZmluaW5nIHNvbWUgb2YgdGhlc2Ugc3ltYm9scyB3aWxsIHByb2R1Y2UgYSBzbWFsbGVyIGJ1dCBsZXNzIGNhcGFibGUNCisgKiBsaWJyYXJ5LiAgTm90ZSB0aGF0IHlvdSBjYW4gbGVhdmUgY2VydGFpbiBzb3VyY2UgZmlsZXMgb3V0IG9mIHRoZQ0KKyAqIGNvbXBpbGF0aW9uL2xpbmtpbmcgcHJvY2VzcyBpZiB5b3UndmUgI3VuZGVmJ2QgdGhlIGNvcnJlc3BvbmRpbmcgc3ltYm9scy4NCisgKiAoWW91IG1heSBIQVZFIHRvIGRvIHRoYXQgaWYgeW91ciBjb21waWxlciBkb2Vzbid0IGxpa2UgbnVsbCBzb3VyY2UgZmlsZXMuKQ0KKyAqLw0KKw0KKy8qIEFyaXRobWV0aWMgY29kaW5nIGlzIHVuc3VwcG9ydGVkIGZvciBsZWdhbCByZWFzb25zLiAgQ29tcGxhaW50cyB0byBJQk0uICovDQorDQorLyogQ2FwYWJpbGl0eSBvcHRpb25zIGNvbW1vbiB0byBlbmNvZGVyIGFuZCBkZWNvZGVyOiAqLw0KKw0KKyNkZWZpbmUgRENUX0lTTE9XX1NVUFBPUlRFRAkvKiBzbG93IGJ1dCBhY2N1cmF0ZSBpbnRlZ2VyIGFsZ29yaXRobSAqLw0KKyNkZWZpbmUgRENUX0lGQVNUX1NVUFBPUlRFRAkvKiBmYXN0ZXIsIGxlc3MgYWNjdXJhdGUgaW50ZWdlciBtZXRob2QgKi8NCisjdW5kZWYgRENUX0ZMT0FUX1NVUFBPUlRFRAkvKiBmbG9hdGluZy1wb2ludDogYWNjdXJhdGUsIGZhc3Qgb24gZmFzdCBIVyAqLw0KKw0KKy8qIEVuY29kZXIgY2FwYWJpbGl0eSBvcHRpb25zOiAqLw0KKw0KKyN1bmRlZiAgQ19BUklUSF9DT0RJTkdfU1VQUE9SVEVEICAgIC8qIEFyaXRobWV0aWMgY29kaW5nIGJhY2sgZW5kPyAqLw0KKyNkZWZpbmUgQ19NVUxUSVNDQU5fRklMRVNfU1VQUE9SVEVEIC8qIE11bHRpcGxlLXNjYW4gSlBFRyBmaWxlcz8gKi8NCisjZGVmaW5lIENfUFJPR1JFU1NJVkVfU1VQUE9SVEVECSAgICAvKiBQcm9ncmVzc2l2ZSBKUEVHPyAoUmVxdWlyZXMgTVVMVElTQ0FOKSovDQorI2RlZmluZSBFTlRST1BZX09QVF9TVVBQT1JURUQJICAgIC8qIE9wdGltaXphdGlvbiBvZiBlbnRyb3B5IGNvZGluZyBwYXJtcz8gKi8NCisvKiBOb3RlOiBpZiB5b3Ugc2VsZWN0ZWQgMTItYml0IGRhdGEgcHJlY2lzaW9uLCBpdCBpcyBkYW5nZXJvdXMgdG8gdHVybiBvZmYNCisgKiBFTlRST1BZX09QVF9TVVBQT1JURUQuICBUaGUgc3RhbmRhcmQgSHVmZm1hbiB0YWJsZXMgYXJlIG9ubHkgZ29vZCBmb3IgOC1iaXQNCisgKiBwcmVjaXNpb24sIHNvIGpjaHVmZi5jIG5vcm1hbGx5IHVzZXMgZW50cm9weSBvcHRpbWl6YXRpb24gdG8gY29tcHV0ZQ0KKyAqIHVzYWJsZSB0YWJsZXMgZm9yIGhpZ2hlciBwcmVjaXNpb24uICBJZiB5b3UgZG9uJ3Qgd2FudCB0byBkbyBvcHRpbWl6YXRpb24sDQorICogeW91J2xsIGhhdmUgdG8gc3VwcGx5IGRpZmZlcmVudCBkZWZhdWx0IEh1ZmZtYW4gdGFibGVzLg0KKyAqIFRoZSBleGFjdCBzYW1lIHN0YXRlbWVudHMgYXBwbHkgZm9yIHByb2dyZXNzaXZlIEpQRUc6IHRoZSBkZWZhdWx0IHRhYmxlcw0KKyAqIGRvbid0IHdvcmsgZm9yIHByb2dyZXNzaXZlIG1vZGUuICAoVGhpcyBtYXkgZ2V0IGZpeGVkLCBob3dldmVyLikNCisgKi8NCisjZGVmaW5lIElOUFVUX1NNT09USElOR19TVVBQT1JURUQgICAvKiBJbnB1dCBpbWFnZSBzbW9vdGhpbmcgb3B0aW9uPyAqLw0KKw0KKy8qIERlY29kZXIgY2FwYWJpbGl0eSBvcHRpb25zOiAqLw0KKw0KKyN1bmRlZiAgRF9BUklUSF9DT0RJTkdfU1VQUE9SVEVEICAgIC8qIEFyaXRobWV0aWMgY29kaW5nIGJhY2sgZW5kPyAqLw0KKyNkZWZpbmUgRF9NVUxUSVNDQU5fRklMRVNfU1VQUE9SVEVEIC8qIE11bHRpcGxlLXNjYW4gSlBFRyBmaWxlcz8gKi8NCisjZGVmaW5lIERfUFJPR1JFU1NJVkVfU1VQUE9SVEVECSAgICAvKiBQcm9ncmVzc2l2ZSBKUEVHPyAoUmVxdWlyZXMgTVVMVElTQ0FOKSovDQorI2RlZmluZSBTQVZFX01BUktFUlNfU1VQUE9SVEVECSAgICAvKiBqcGVnX3NhdmVfbWFya2VycygpIG5lZWRlZD8gKi8NCisjZGVmaW5lIEJMT0NLX1NNT09USElOR19TVVBQT1JURUQgICAvKiBCbG9jayBzbW9vdGhpbmc/IChQcm9ncmVzc2l2ZSBvbmx5KSAqLw0KKyNkZWZpbmUgSURDVF9TQ0FMSU5HX1NVUFBPUlRFRAkgICAgLyogT3V0cHV0IHJlc2NhbGluZyB2aWEgSURDVD8gKi8NCisjdW5kZWYgVVBTQU1QTEVfU0NBTElOR19TVVBQT1JURUQgIC8qIE91dHB1dCByZXNjYWxpbmcgYXQgdXBzYW1wbGUgc3RhZ2U/ICovDQorI2RlZmluZSBVUFNBTVBMRV9NRVJHSU5HX1NVUFBPUlRFRCAgLyogRmFzdCBwYXRoIGZvciBzbG9wcHkgdXBzYW1wbGluZz8gKi8NCisjdW5kZWYgUVVBTlRfMVBBU1NfU1VQUE9SVEVECSAgICAvKiAxLXBhc3MgY29sb3IgcXVhbnRpemF0aW9uPyAqLw0KKyN1bmRlZiBRVUFOVF8yUEFTU19TVVBQT1JURUQJICAgIC8qIDItcGFzcyBjb2xvciBxdWFudGl6YXRpb24/ICovDQorDQorLyogbW9yZSBjYXBhYmlsaXR5IG9wdGlvbnMgbGF0ZXIsIG5vIGRvdWJ0ICovDQorDQorDQorLyoNCisgKiBPcmRlcmluZyBvZiBSR0IgZGF0YSBpbiBzY2FubGluZXMgcGFzc2VkIHRvIG9yIGZyb20gdGhlIGFwcGxpY2F0aW9uLg0KKyAqIElmIHlvdXIgYXBwbGljYXRpb24gd2FudHMgdG8gZGVhbCB3aXRoIGRhdGEgaW4gdGhlIG9yZGVyIEIsRyxSLCBqdXN0DQorICogY2hhbmdlIHRoZXNlIG1hY3Jvcy4gIFlvdSBjYW4gYWxzbyBkZWFsIHdpdGggZm9ybWF0cyBzdWNoIGFzIFIsRyxCLFgNCisgKiAob25lIGV4dHJhIGJ5dGUgcGVyIHBpeGVsKSBieSBjaGFuZ2luZyBSR0JfUElYRUxTSVpFLiAgTm90ZSB0aGF0IGNoYW5naW5nDQorICogdGhlIG9mZnNldHMgd2lsbCBhbHNvIGNoYW5nZSB0aGUgb3JkZXIgaW4gd2hpY2ggY29sb3JtYXAgZGF0YSBpcyBvcmdhbml6ZWQuDQorICogUkVTVFJJQ1RJT05TOg0KKyAqIDEuIFRoZSBzYW1wbGUgYXBwbGljYXRpb25zIGNqcGVnLGRqcGVnIGRvIE5PVCBzdXBwb3J0IG1vZGlmaWVkIFJHQiBmb3JtYXRzLg0KKyAqIDIuIFRoZXNlIG1hY3JvcyBvbmx5IGFmZmVjdCBSR0I8PT5ZQ2JDciBjb2xvciBjb252ZXJzaW9uLCBzbyB0aGV5IGFyZSBub3QNCisgKiAgICB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBKUEVHIGNvbG9yIHNwYWNlcyBvdGhlciB0aGFuIFlDYkNyIG9yIGdyYXlzY2FsZS4NCisgKiAzLiBUaGUgY29sb3IgcXVhbnRpemVyIG1vZHVsZXMgd2lsbCBub3QgYmVoYXZlIGRlc2lyYWJseSBpZiBSR0JfUElYRUxTSVpFDQorICogICAgaXMgbm90IDMgKHRoZXkgZG9uJ3QgdW5kZXJzdGFuZCBhYm91dCBkdW1teSBjb2xvciBjb21wb25lbnRzISkuICBTbyB5b3UNCisgKiAgICBjYW4ndCB1c2UgY29sb3IgcXVhbnRpemF0aW9uIGlmIHlvdSBjaGFuZ2UgdGhhdCB2YWx1ZS4NCisgKi8NCisNCisjZGVmaW5lIFJHQl9SRUQJCTAJLyogT2Zmc2V0IG9mIFJlZCBpbiBhbiBSR0Igc2NhbmxpbmUgZWxlbWVudCAqLw0KKyNkZWZpbmUgUkdCX0dSRUVOCTEJLyogT2Zmc2V0IG9mIEdyZWVuICovDQorI2RlZmluZSBSR0JfQkxVRQkyCS8qIE9mZnNldCBvZiBCbHVlICovDQorI2RlZmluZSBSR0JfUElYRUxTSVpFCTMJLyogSlNBTVBMRXMgcGVyIFJHQiBzY2FubGluZSBlbGVtZW50ICovDQorDQorDQorLyogRGVmaW5pdGlvbnMgZm9yIHNwZWVkLXJlbGF0ZWQgb3B0aW1pemF0aW9ucy4gKi8NCisNCisNCisvKiBJZiB5b3VyIGNvbXBpbGVyIHN1cHBvcnRzIGlubGluZSBmdW5jdGlvbnMsIGRlZmluZSBJTkxJTkUNCisgKiBhcyB0aGUgaW5saW5lIGtleXdvcmQ7IG90aGVyd2lzZSBkZWZpbmUgaXQgYXMgZW1wdHkuDQorICovDQorDQorI2lmbmRlZiBJTkxJTkUNCisjaWZkZWYgX19HTlVDX18JCQkvKiBmb3IgaW5zdGFuY2UsIEdOVSBDIGtub3dzIGFib3V0IGlubGluZSAqLw0KKyNkZWZpbmUgSU5MSU5FIF9faW5saW5lX18NCisjZW5kaWYNCisjaWZuZGVmIElOTElORQ0KKyNkZWZpbmUgSU5MSU5FCQkJLyogZGVmYXVsdCBpcyB0byBkZWZpbmUgaXQgYXMgZW1wdHkgKi8NCisjZW5kaWYNCisjZW5kaWYNCisNCisNCisvKiBPbiBzb21lIG1hY2hpbmVzIChub3RhYmx5IDY4MDAwIHNlcmllcykgImludCIgaXMgMzIgYml0cywgYnV0IG11bHRpcGx5aW5nDQorICogdHdvIDE2LWJpdCBzaG9ydHMgaXMgZmFzdGVyIHRoYW4gbXVsdGlwbHlpbmcgdHdvIGludHMuICBEZWZpbmUgTVVMVElQTElFUg0KKyAqIGFzIHNob3J0IG9uIHN1Y2ggYSBtYWNoaW5lLiAgTVVMVElQTElFUiBtdXN0IGJlIGF0IGxlYXN0IDE2IGJpdHMgd2lkZS4NCisgKi8NCisNCisjaWZuZGVmIE1VTFRJUExJRVINCisjZGVmaW5lIE1VTFRJUExJRVIgIGludAkJLyogdHlwZSBmb3IgZmFzdGVzdCBpbnRlZ2VyIG11bHRpcGx5ICovDQorI2VuZGlmDQorDQorDQorLyogRkFTVF9GTE9BVCBzaG91bGQgYmUgZWl0aGVyIGZsb2F0IG9yIGRvdWJsZSwgd2hpY2hldmVyIGlzIGRvbmUgZmFzdGVyDQorICogYnkgeW91ciBjb21waWxlci4gIChOb3RlIHRoYXQgdGhpcyB0eXBlIGlzIG9ubHkgdXNlZCBpbiB0aGUgZmxvYXRpbmcgcG9pbnQNCisgKiBEQ1Qgcm91dGluZXMsIHNvIGl0IG9ubHkgbWF0dGVycyBpZiB5b3UndmUgZGVmaW5lZCBEQ1RfRkxPQVRfU1VQUE9SVEVELikNCisgKiBUeXBpY2FsbHksIGZsb2F0IGlzIGZhc3RlciBpbiBBTlNJIEMgY29tcGlsZXJzLCB3aGlsZSBkb3VibGUgaXMgZmFzdGVyIGluDQorICogcHJlLUFOU0kgY29tcGlsZXJzIChiZWNhdXNlIHRoZXkgaW5zaXN0IG9uIGNvbnZlcnRpbmcgdG8gZG91YmxlIGFueXdheSkuDQorICogVGhlIGNvZGUgYmVsb3cgdGhlcmVmb3JlIGNob29zZXMgZmxvYXQgaWYgd2UgaGF2ZSBBTlNJLXN0eWxlIHByb3RvdHlwZXMuDQorICovDQorDQorI2lmbmRlZiBGQVNUX0ZMT0FUDQorI2lmZGVmIEhBVkVfUFJPVE9UWVBFUw0KKyNkZWZpbmUgRkFTVF9GTE9BVCAgZmxvYXQNCisjZWxzZQ0KKyNkZWZpbmUgRkFTVF9GTE9BVCAgZG91YmxlDQorI2VuZGlmDQorI2VuZGlmDQorDQorI2VuZGlmIC8qIEpQRUdfSU5URVJOQUxfT1BUSU9OUyAqLw0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvbGlianBlZy9qcGVnaW50LmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2xpYmpwZWcvanBlZ2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NWEzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2xpYmpwZWcvanBlZ2ludC5oCkBAIC0wLDAgKzEsMzkyIEBACisvKg0KKyAqIGpwZWdpbnQuaA0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTcsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIHByb3ZpZGVzIGNvbW1vbiBkZWNsYXJhdGlvbnMgZm9yIHRoZSB2YXJpb3VzIEpQRUcgbW9kdWxlcy4NCisgKiBUaGVzZSBkZWNsYXJhdGlvbnMgYXJlIGNvbnNpZGVyZWQgaW50ZXJuYWwgdG8gdGhlIEpQRUcgbGlicmFyeTsgbW9zdA0KKyAqIGFwcGxpY2F0aW9ucyB1c2luZyB0aGUgbGlicmFyeSBzaG91bGRuJ3QgbmVlZCB0byBpbmNsdWRlIHRoaXMgZmlsZS4NCisgKi8NCisNCisNCisvKiBEZWNsYXJhdGlvbnMgZm9yIGJvdGggY29tcHJlc3Npb24gJiBkZWNvbXByZXNzaW9uICovDQorDQordHlwZWRlZiBlbnVtIHsJCQkvKiBPcGVyYXRpbmcgbW9kZXMgZm9yIGJ1ZmZlciBjb250cm9sbGVycyAqLw0KKwlKQlVGX1BBU1NfVEhSVSwJCS8qIFBsYWluIHN0cmlwd2lzZSBvcGVyYXRpb24gKi8NCisJLyogUmVtYWluaW5nIG1vZGVzIHJlcXVpcmUgYSBmdWxsLWltYWdlIGJ1ZmZlciB0byBoYXZlIGJlZW4gY3JlYXRlZCAqLw0KKwlKQlVGX1NBVkVfU09VUkNFLAkvKiBSdW4gc291cmNlIHN1Ym9iamVjdCBvbmx5LCBzYXZlIG91dHB1dCAqLw0KKwlKQlVGX0NSQU5LX0RFU1QsCS8qIFJ1biBkZXN0IHN1Ym9iamVjdCBvbmx5LCB1c2luZyBzYXZlZCBkYXRhICovDQorCUpCVUZfU0FWRV9BTkRfUEFTUwkvKiBSdW4gYm90aCBzdWJvYmplY3RzLCBzYXZlIG91dHB1dCAqLw0KK30gSl9CVUZfTU9ERTsNCisNCisvKiBWYWx1ZXMgb2YgZ2xvYmFsX3N0YXRlIGZpZWxkIChqZGFwaS5jIGhhcyBzb21lIGRlcGVuZGVuY2llcyBvbiBvcmRlcmluZyEpICovDQorI2RlZmluZSBDU1RBVEVfU1RBUlQJMTAwCS8qIGFmdGVyIGNyZWF0ZV9jb21wcmVzcyAqLw0KKyNkZWZpbmUgQ1NUQVRFX1NDQU5OSU5HCTEwMQkvKiBzdGFydF9jb21wcmVzcyBkb25lLCB3cml0ZV9zY2FubGluZXMgT0sgKi8NCisjZGVmaW5lIENTVEFURV9SQVdfT0sJMTAyCS8qIHN0YXJ0X2NvbXByZXNzIGRvbmUsIHdyaXRlX3Jhd19kYXRhIE9LICovDQorI2RlZmluZSBDU1RBVEVfV1JDT0VGUwkxMDMJLyoganBlZ193cml0ZV9jb2VmZmljaWVudHMgZG9uZSAqLw0KKyNkZWZpbmUgRFNUQVRFX1NUQVJUCTIwMAkvKiBhZnRlciBjcmVhdGVfZGVjb21wcmVzcyAqLw0KKyNkZWZpbmUgRFNUQVRFX0lOSEVBREVSCTIwMQkvKiByZWFkaW5nIGhlYWRlciBtYXJrZXJzLCBubyBTT1MgeWV0ICovDQorI2RlZmluZSBEU1RBVEVfUkVBRFkJMjAyCS8qIGZvdW5kIFNPUywgcmVhZHkgZm9yIHN0YXJ0X2RlY29tcHJlc3MgKi8NCisjZGVmaW5lIERTVEFURV9QUkVMT0FECTIwMwkvKiByZWFkaW5nIG11bHRpc2NhbiBmaWxlIGluIHN0YXJ0X2RlY29tcHJlc3MqLw0KKyNkZWZpbmUgRFNUQVRFX1BSRVNDQU4JMjA0CS8qIHBlcmZvcm1pbmcgZHVtbXkgcGFzcyBmb3IgMi1wYXNzIHF1YW50ICovDQorI2RlZmluZSBEU1RBVEVfU0NBTk5JTkcJMjA1CS8qIHN0YXJ0X2RlY29tcHJlc3MgZG9uZSwgcmVhZF9zY2FubGluZXMgT0sgKi8NCisjZGVmaW5lIERTVEFURV9SQVdfT0sJMjA2CS8qIHN0YXJ0X2RlY29tcHJlc3MgZG9uZSwgcmVhZF9yYXdfZGF0YSBPSyAqLw0KKyNkZWZpbmUgRFNUQVRFX0JVRklNQUdFCTIwNwkvKiBleHBlY3RpbmcganBlZ19zdGFydF9vdXRwdXQgKi8NCisjZGVmaW5lIERTVEFURV9CVUZQT1NUCTIwOAkvKiBsb29raW5nIGZvciBTT1MvRU9JIGluIGpwZWdfZmluaXNoX291dHB1dCAqLw0KKyNkZWZpbmUgRFNUQVRFX1JEQ09FRlMJMjA5CS8qIHJlYWRpbmcgZmlsZSBpbiBqcGVnX3JlYWRfY29lZmZpY2llbnRzICovDQorI2RlZmluZSBEU1RBVEVfU1RPUFBJTkcJMjEwCS8qIGxvb2tpbmcgZm9yIEVPSSBpbiBqcGVnX2ZpbmlzaF9kZWNvbXByZXNzICovDQorDQorDQorLyogRGVjbGFyYXRpb25zIGZvciBjb21wcmVzc2lvbiBtb2R1bGVzICovDQorDQorLyogTWFzdGVyIGNvbnRyb2wgbW9kdWxlICovDQorc3RydWN0IGpwZWdfY29tcF9tYXN0ZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBwcmVwYXJlX2Zvcl9wYXNzLCAoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgcGFzc19zdGFydHVwLCAoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgZmluaXNoX3Bhc3MsIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKw0KKyAgLyogU3RhdGUgdmFyaWFibGVzIG1hZGUgdmlzaWJsZSB0byBvdGhlciBtb2R1bGVzICovDQorICBib29sZWFuIGNhbGxfcGFzc19zdGFydHVwOwkvKiBUcnVlIGlmIHBhc3Nfc3RhcnR1cCBtdXN0IGJlIGNhbGxlZCAqLw0KKyAgYm9vbGVhbiBpc19sYXN0X3Bhc3M7CQkvKiBUcnVlIGR1cmluZyBsYXN0IHBhc3MgKi8NCit9Ow0KKw0KKy8qIE1haW4gYnVmZmVyIGNvbnRyb2wgKGRvd25zYW1wbGVkLWRhdGEgYnVmZmVyKSAqLw0KK3N0cnVjdCBqcGVnX2NfbWFpbl9jb250cm9sbGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKX0JVRl9NT0RFIHBhc3NfbW9kZSkpOw0KKyAgSk1FVEhPRCh2b2lkLCBwcm9jZXNzX2RhdGEsIChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkgICAgICAgSlNBTVBBUlJBWSBpbnB1dF9idWYsIEpESU1FTlNJT04gKmluX3Jvd19jdHIsDQorCQkJICAgICAgIEpESU1FTlNJT04gaW5fcm93c19hdmFpbCkpOw0KK307DQorDQorLyogQ29tcHJlc3Npb24gcHJlcHJvY2Vzc2luZyAoZG93bnNhbXBsaW5nIGlucHV0IGJ1ZmZlciBjb250cm9sKSAqLw0KK3N0cnVjdCBqcGVnX2NfcHJlcF9jb250cm9sbGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKX0JVRl9NT0RFIHBhc3NfbW9kZSkpOw0KKyAgSk1FVEhPRCh2b2lkLCBwcmVfcHJvY2Vzc19kYXRhLCAoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCSAgIEpTQU1QQVJSQVkgaW5wdXRfYnVmLA0KKwkJCQkgICBKRElNRU5TSU9OICppbl9yb3dfY3RyLA0KKwkJCQkgICBKRElNRU5TSU9OIGluX3Jvd3NfYXZhaWwsDQorCQkJCSAgIEpTQU1QSU1BR0Ugb3V0cHV0X2J1ZiwNCisJCQkJICAgSkRJTUVOU0lPTiAqb3V0X3Jvd19ncm91cF9jdHIsDQorCQkJCSAgIEpESU1FTlNJT04gb3V0X3Jvd19ncm91cHNfYXZhaWwpKTsNCit9Ow0KKw0KKy8qIENvZWZmaWNpZW50IGJ1ZmZlciBjb250cm9sICovDQorc3RydWN0IGpwZWdfY19jb2VmX2NvbnRyb2xsZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9wYXNzLCAoal9jb21wcmVzc19wdHIgY2luZm8sIEpfQlVGX01PREUgcGFzc19tb2RlKSk7DQorICBKTUVUSE9EKGJvb2xlYW4sIGNvbXByZXNzX2RhdGEsIChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJICAgSlNBTVBJTUFHRSBpbnB1dF9idWYpKTsNCit9Ow0KKw0KKy8qIENvbG9yc3BhY2UgY29udmVyc2lvbiAqLw0KK3N0cnVjdCBqcGVnX2NvbG9yX2NvbnZlcnRlciB7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X3Bhc3MsIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCBjb2xvcl9jb252ZXJ0LCAoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCUpTQU1QQVJSQVkgaW5wdXRfYnVmLCBKU0FNUElNQUdFIG91dHB1dF9idWYsDQorCQkJCUpESU1FTlNJT04gb3V0cHV0X3JvdywgaW50IG51bV9yb3dzKSk7DQorfTsNCisNCisvKiBEb3duc2FtcGxpbmcgKi8NCitzdHJ1Y3QganBlZ19kb3duc2FtcGxlciB7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X3Bhc3MsIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCBkb3duc2FtcGxlLCAoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJICAgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiBpbl9yb3dfaW5kZXgsDQorCQkJICAgICBKU0FNUElNQUdFIG91dHB1dF9idWYsDQorCQkJICAgICBKRElNRU5TSU9OIG91dF9yb3dfZ3JvdXBfaW5kZXgpKTsNCisNCisgIGJvb2xlYW4gbmVlZF9jb250ZXh0X3Jvd3M7CS8qIFRSVUUgaWYgbmVlZCByb3dzIGFib3ZlICYgYmVsb3cgKi8NCit9Ow0KKw0KKy8qIEZvcndhcmQgRENUIChhbHNvIGNvbnRyb2xzIGNvZWZmaWNpZW50IHF1YW50aXphdGlvbikgKi8NCitzdHJ1Y3QganBlZ19mb3J3YXJkX2RjdCB7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X3Bhc3MsIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgLyogcGVyaGFwcyB0aGlzIHNob3VsZCBiZSBhbiBhcnJheT8/PyAqLw0KKyAgSk1FVEhPRCh2b2lkLCBmb3J3YXJkX0RDVCwgKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCSAgICAgIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyLA0KKwkJCSAgICAgIEpTQU1QQVJSQVkgc2FtcGxlX2RhdGEsIEpCTE9DS1JPVyBjb2VmX2Jsb2NrcywNCisJCQkgICAgICBKRElNRU5TSU9OIHN0YXJ0X3JvdywgSkRJTUVOU0lPTiBzdGFydF9jb2wsDQorCQkJICAgICAgSkRJTUVOU0lPTiBudW1fYmxvY2tzKSk7DQorfTsNCisNCisvKiBFbnRyb3B5IGVuY29kaW5nICovDQorc3RydWN0IGpwZWdfZW50cm9weV9lbmNvZGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBib29sZWFuIGdhdGhlcl9zdGF0aXN0aWNzKSk7DQorICBKTUVUSE9EKGJvb2xlYW4sIGVuY29kZV9tY3UsIChqX2NvbXByZXNzX3B0ciBjaW5mbywgSkJMT0NLUk9XICpNQ1VfZGF0YSkpOw0KKyAgSk1FVEhPRCh2b2lkLCBmaW5pc2hfcGFzcywgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorfTsNCisNCisvKiBNYXJrZXIgd3JpdGluZyAqLw0KK3N0cnVjdCBqcGVnX21hcmtlcl93cml0ZXIgew0KKyAgSk1FVEhPRCh2b2lkLCB3cml0ZV9maWxlX2hlYWRlciwgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIHdyaXRlX2ZyYW1lX2hlYWRlciwgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIHdyaXRlX3NjYW5faGVhZGVyLCAoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgd3JpdGVfZmlsZV90cmFpbGVyLCAoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgd3JpdGVfdGFibGVzX29ubHksIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgLyogVGhlc2Ugcm91dGluZXMgYXJlIGV4cG9ydGVkIHRvIGFsbG93IGluc2VydGlvbiBvZiBleHRyYSBtYXJrZXJzICovDQorICAvKiBQcm9iYWJseSBvbmx5IENPTSBhbmQgQVBQbiBtYXJrZXJzIHNob3VsZCBiZSB3cml0dGVuIHRoaXMgd2F5ICovDQorICBKTUVUSE9EKHZvaWQsIHdyaXRlX21hcmtlcl9oZWFkZXIsIChqX2NvbXByZXNzX3B0ciBjaW5mbywgaW50IG1hcmtlciwNCisJCQkJICAgICAgdW5zaWduZWQgaW50IGRhdGFsZW4pKTsNCisgIEpNRVRIT0Qodm9pZCwgd3JpdGVfbWFya2VyX2J5dGUsIChqX2NvbXByZXNzX3B0ciBjaW5mbywgaW50IHZhbCkpOw0KK307DQorDQorDQorLyogRGVjbGFyYXRpb25zIGZvciBkZWNvbXByZXNzaW9uIG1vZHVsZXMgKi8NCisNCisvKiBNYXN0ZXIgY29udHJvbCBtb2R1bGUgKi8NCitzdHJ1Y3QganBlZ19kZWNvbXBfbWFzdGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgcHJlcGFyZV9mb3Jfb3V0cHV0X3Bhc3MsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIGZpbmlzaF9vdXRwdXRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisNCisgIC8qIFN0YXRlIHZhcmlhYmxlcyBtYWRlIHZpc2libGUgdG8gb3RoZXIgbW9kdWxlcyAqLw0KKyAgYm9vbGVhbiBpc19kdW1teV9wYXNzOwkvKiBUcnVlIGR1cmluZyAxc3QgcGFzcyBmb3IgMi1wYXNzIHF1YW50ICovDQorfTsNCisNCisvKiBJbnB1dCBjb250cm9sIG1vZHVsZSAqLw0KK3N0cnVjdCBqcGVnX2lucHV0X2NvbnRyb2xsZXIgew0KKyAgSk1FVEhPRChpbnQsIGNvbnN1bWVfaW5wdXQsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIHJlc2V0X2lucHV0X2NvbnRyb2xsZXIsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X2lucHV0X3Bhc3MsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIGZpbmlzaF9pbnB1dF9wYXNzLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKw0KKyAgLyogU3RhdGUgdmFyaWFibGVzIG1hZGUgdmlzaWJsZSB0byBvdGhlciBtb2R1bGVzICovDQorICBib29sZWFuIGhhc19tdWx0aXBsZV9zY2FuczsJLyogVHJ1ZSBpZiBmaWxlIGhhcyBtdWx0aXBsZSBzY2FucyAqLw0KKyAgYm9vbGVhbiBlb2lfcmVhY2hlZDsJCS8qIFRydWUgd2hlbiBFT0kgaGFzIGJlZW4gY29uc3VtZWQgKi8NCit9Ow0KKw0KKy8qIE1haW4gYnVmZmVyIGNvbnRyb2wgKGRvd25zYW1wbGVkLWRhdGEgYnVmZmVyKSAqLw0KK3N0cnVjdCBqcGVnX2RfbWFpbl9jb250cm9sbGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpfQlVGX01PREUgcGFzc19tb2RlKSk7DQorICBKTUVUSE9EKHZvaWQsIHByb2Nlc3NfZGF0YSwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJICAgICAgIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZiwgSkRJTUVOU0lPTiAqb3V0X3Jvd19jdHIsDQorCQkJICAgICAgIEpESU1FTlNJT04gb3V0X3Jvd3NfYXZhaWwpKTsNCit9Ow0KKw0KKy8qIENvZWZmaWNpZW50IGJ1ZmZlciBjb250cm9sICovDQorc3RydWN0IGpwZWdfZF9jb2VmX2NvbnRyb2xsZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9pbnB1dF9wYXNzLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRChpbnQsIGNvbnN1bWVfZGF0YSwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfb3V0cHV0X3Bhc3MsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKGludCwgZGVjb21wcmVzc19kYXRhLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJIEpTQU1QSU1BR0Ugb3V0cHV0X2J1ZikpOw0KKyAgLyogUG9pbnRlciB0byBhcnJheSBvZiBjb2VmZmljaWVudCB2aXJ0dWFsIGFycmF5cywgb3IgTlVMTCBpZiBub25lICovDQorICBqdmlydF9iYXJyYXlfcHRyICpjb2VmX2FycmF5czsNCit9Ow0KKw0KKy8qIERlY29tcHJlc3Npb24gcG9zdHByb2Nlc3NpbmcgKGNvbG9yIHF1YW50aXphdGlvbiBidWZmZXIgY29udHJvbCkgKi8NCitzdHJ1Y3QganBlZ19kX3Bvc3RfY29udHJvbGxlciB7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X3Bhc3MsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBKX0JVRl9NT0RFIHBhc3NfbW9kZSkpOw0KKyAgSk1FVEhPRCh2b2lkLCBwb3N0X3Byb2Nlc3NfZGF0YSwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCSAgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwNCisJCQkJICAgIEpESU1FTlNJT04gKmluX3Jvd19ncm91cF9jdHIsDQorCQkJCSAgICBKRElNRU5TSU9OIGluX3Jvd19ncm91cHNfYXZhaWwsDQorCQkJCSAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsDQorCQkJCSAgICBKRElNRU5TSU9OICpvdXRfcm93X2N0ciwNCisJCQkJICAgIEpESU1FTlNJT04gb3V0X3Jvd3NfYXZhaWwpKTsNCit9Ow0KKw0KKy8qIE1hcmtlciByZWFkaW5nICYgcGFyc2luZyAqLw0KK3N0cnVjdCBqcGVnX21hcmtlcl9yZWFkZXIgew0KKyAgSk1FVEhPRCh2b2lkLCByZXNldF9tYXJrZXJfcmVhZGVyLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgLyogUmVhZCBtYXJrZXJzIHVudGlsIFNPUyBvciBFT0kuDQorICAgKiBSZXR1cm5zIHNhbWUgY29kZXMgYXMgYXJlIGRlZmluZWQgZm9yIGpwZWdfY29uc3VtZV9pbnB1dDoNCisgICAqIEpQRUdfU1VTUEVOREVELCBKUEVHX1JFQUNIRURfU09TLCBvciBKUEVHX1JFQUNIRURfRU9JLg0KKyAgICovDQorICBKTUVUSE9EKGludCwgcmVhZF9tYXJrZXJzLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgLyogUmVhZCBhIHJlc3RhcnQgbWFya2VyIC0tLSBleHBvcnRlZCBmb3IgdXNlIGJ5IGVudHJvcHkgZGVjb2RlciBvbmx5ICovDQorICBqcGVnX21hcmtlcl9wYXJzZXJfbWV0aG9kIHJlYWRfcmVzdGFydF9tYXJrZXI7DQorDQorICAvKiBTdGF0ZSBvZiBtYXJrZXIgcmVhZGVyIC0tLSBub21pbmFsbHkgaW50ZXJuYWwsIGJ1dCBhcHBsaWNhdGlvbnMNCisgICAqIHN1cHBseWluZyBDT00gb3IgQVBQbiBoYW5kbGVycyBtaWdodCBsaWtlIHRvIGtub3cgdGhlIHN0YXRlLg0KKyAgICovDQorICBib29sZWFuIHNhd19TT0k7CQkvKiBmb3VuZCBTT0k/ICovDQorICBib29sZWFuIHNhd19TT0Y7CQkvKiBmb3VuZCBTT0Y/ICovDQorICBpbnQgbmV4dF9yZXN0YXJ0X251bTsJCS8qIG5leHQgcmVzdGFydCBudW1iZXIgZXhwZWN0ZWQgKDAtNykgKi8NCisgIHVuc2lnbmVkIGludCBkaXNjYXJkZWRfYnl0ZXM7CS8qICMgb2YgYnl0ZXMgc2tpcHBlZCBsb29raW5nIGZvciBhIG1hcmtlciAqLw0KK307DQorDQorLyogRW50cm9weSBkZWNvZGluZyAqLw0KK3N0cnVjdCBqcGVnX2VudHJvcHlfZGVjb2RlciB7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X3Bhc3MsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKGJvb2xlYW4sIGRlY29kZV9tY3UsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQlKQkxPQ0tST1cgKk1DVV9kYXRhKSk7DQorDQorICAvKiBUaGlzIGlzIGhlcmUgdG8gc2hhcmUgY29kZSBiZXR3ZWVuIGJhc2VsaW5lIGFuZCBwcm9ncmVzc2l2ZSBkZWNvZGVyczsgKi8NCisgIC8qIG90aGVyIG1vZHVsZXMgcHJvYmFibHkgc2hvdWxkIG5vdCB1c2UgaXQgKi8NCisgIGJvb2xlYW4gaW5zdWZmaWNpZW50X2RhdGE7CS8qIHNldCBUUlVFIGFmdGVyIGVtaXR0aW5nIHdhcm5pbmcgKi8NCit9Ow0KKw0KKy8qIEludmVyc2UgRENUIChhbHNvIHBlcmZvcm1zIGRlcXVhbnRpemF0aW9uKSAqLw0KK3R5cGVkZWYgSk1FVEhPRCh2b2lkLCBpbnZlcnNlX0RDVF9tZXRob2RfcHRyLA0KKwkJKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyLA0KKwkJIEpDT0VGUFRSIGNvZWZfYmxvY2ssDQorCQkgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OIG91dHB1dF9jb2wpKTsNCisNCitzdHJ1Y3QganBlZ19pbnZlcnNlX2RjdCB7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X3Bhc3MsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICAvKiBJdCBpcyB1c2VmdWwgdG8gYWxsb3cgZWFjaCBjb21wb25lbnQgdG8gaGF2ZSBhIHNlcGFyYXRlIElEQ1QgbWV0aG9kLiAqLw0KKyAgaW52ZXJzZV9EQ1RfbWV0aG9kX3B0ciBpbnZlcnNlX0RDVFtNQVhfQ09NUE9ORU5UU107DQorfTsNCisNCisvKiBVcHNhbXBsaW5nIChub3RlIHRoYXQgdXBzYW1wbGVyIG11c3QgYWxzbyBjYWxsIGNvbG9yIGNvbnZlcnRlcikgKi8NCitzdHJ1Y3QganBlZ191cHNhbXBsZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9wYXNzLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCB1cHNhbXBsZSwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJICAgSlNBTVBJTUFHRSBpbnB1dF9idWYsDQorCQkJICAgSkRJTUVOU0lPTiAqaW5fcm93X2dyb3VwX2N0ciwNCisJCQkgICBKRElNRU5TSU9OIGluX3Jvd19ncm91cHNfYXZhaWwsDQorCQkJICAgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLA0KKwkJCSAgIEpESU1FTlNJT04gKm91dF9yb3dfY3RyLA0KKwkJCSAgIEpESU1FTlNJT04gb3V0X3Jvd3NfYXZhaWwpKTsNCisNCisgIGJvb2xlYW4gbmVlZF9jb250ZXh0X3Jvd3M7CS8qIFRSVUUgaWYgbmVlZCByb3dzIGFib3ZlICYgYmVsb3cgKi8NCit9Ow0KKw0KKy8qIENvbG9yc3BhY2UgY29udmVyc2lvbiAqLw0KK3N0cnVjdCBqcGVnX2NvbG9yX2RlY29udmVydGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgY29sb3JfY29udmVydCwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCUpTQU1QSU1BR0UgaW5wdXRfYnVmLCBKRElNRU5TSU9OIGlucHV0X3JvdywNCisJCQkJSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBpbnQgbnVtX3Jvd3MpKTsNCit9Ow0KKw0KKy8qIENvbG9yIHF1YW50aXphdGlvbiBvciBjb2xvciBwcmVjaXNpb24gcmVkdWN0aW9uICovDQorc3RydWN0IGpwZWdfY29sb3JfcXVhbnRpemVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGJvb2xlYW4gaXNfcHJlX3NjYW4pKTsNCisgIEpNRVRIT0Qodm9pZCwgY29sb3JfcXVhbnRpemUsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkgSlNBTVBBUlJBWSBpbnB1dF9idWYsIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZiwNCisJCQkJIGludCBudW1fcm93cykpOw0KKyAgSk1FVEhPRCh2b2lkLCBmaW5pc2hfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgbmV3X2NvbG9yX21hcCwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCit9Ow0KKw0KKw0KKy8qIE1pc2NlbGxhbmVvdXMgdXNlZnVsIG1hY3JvcyAqLw0KKw0KKyN1bmRlZiBNQVgNCisjZGVmaW5lIE1BWChhLGIpCSgoYSkgPiAoYikgPyAoYSkgOiAoYikpDQorI3VuZGVmIE1JTg0KKyNkZWZpbmUgTUlOKGEsYikJKChhKSA8IChiKSA/IChhKSA6IChiKSkNCisNCisNCisvKiBXZSBhc3N1bWUgdGhhdCByaWdodCBzaGlmdCBjb3JyZXNwb25kcyB0byBzaWduZWQgZGl2aXNpb24gYnkgMiB3aXRoDQorICogcm91bmRpbmcgdG93YXJkcyBtaW51cyBpbmZpbml0eS4gIFRoaXMgaXMgY29ycmVjdCBmb3IgdHlwaWNhbCAiYXJpdGhtZXRpYw0KKyAqIHNoaWZ0IiBpbnN0cnVjdGlvbnMgdGhhdCBzaGlmdCBpbiBjb3BpZXMgb2YgdGhlIHNpZ24gYml0LiAgQnV0IHNvbWUNCisgKiBDIGNvbXBpbGVycyBpbXBsZW1lbnQgPj4gd2l0aCBhbiB1bnNpZ25lZCBzaGlmdC4gIEZvciB0aGVzZSBtYWNoaW5lcyB5b3UNCisgKiBtdXN0IGRlZmluZSBSSUdIVF9TSElGVF9JU19VTlNJR05FRC4NCisgKiBSSUdIVF9TSElGVCBwcm92aWRlcyBhIHByb3BlciBzaWduZWQgcmlnaHQgc2hpZnQgb2YgYW4gSU5UMzIgcXVhbnRpdHkuDQorICogSXQgaXMgb25seSBhcHBsaWVkIHdpdGggY29uc3RhbnQgc2hpZnQgY291bnRzLiAgU0hJRlRfVEVNUFMgbXVzdCBiZQ0KKyAqIGluY2x1ZGVkIGluIHRoZSB2YXJpYWJsZXMgb2YgYW55IHJvdXRpbmUgdXNpbmcgUklHSFRfU0hJRlQuDQorICovDQorDQorI2lmZGVmIFJJR0hUX1NISUZUX0lTX1VOU0lHTkVEDQorI2RlZmluZSBTSElGVF9URU1QUwlJTlQzMiBzaGlmdF90ZW1wOw0KKyNkZWZpbmUgUklHSFRfU0hJRlQoeCxzaGZ0KSAgXA0KKwkoKHNoaWZ0X3RlbXAgPSAoeCkpIDwgMCA/IFwNCisJIChzaGlmdF90ZW1wID4+IChzaGZ0KSkgfCAoKH4oKElOVDMyKSAwKSkgPDwgKDMyLShzaGZ0KSkpIDogXA0KKwkgKHNoaWZ0X3RlbXAgPj4gKHNoZnQpKSkNCisjZWxzZQ0KKyNkZWZpbmUgU0hJRlRfVEVNUFMNCisjZGVmaW5lIFJJR0hUX1NISUZUKHgsc2hmdCkJKCh4KSA+PiAoc2hmdCkpDQorI2VuZGlmDQorDQorDQorLyogU2hvcnQgZm9ybXMgb2YgZXh0ZXJuYWwgbmFtZXMgZm9yIHN5c3RlbXMgd2l0aCBicmFpbi1kYW1hZ2VkIGxpbmtlcnMuICovDQorDQorI2lmZGVmIE5FRURfU0hPUlRfRVhURVJOQUxfTkFNRVMNCisjZGVmaW5lIGppbml0X2NvbXByZXNzX21hc3RlcglqSUNvbXByZXNzDQorI2RlZmluZSBqaW5pdF9jX21hc3Rlcl9jb250cm9sCWpJQ01hc3Rlcg0KKyNkZWZpbmUgamluaXRfY19tYWluX2NvbnRyb2xsZXIJaklDTWFpbkMNCisjZGVmaW5lIGppbml0X2NfcHJlcF9jb250cm9sbGVyCWpJQ1ByZXBDDQorI2RlZmluZSBqaW5pdF9jX2NvZWZfY29udHJvbGxlcglqSUNDb2VmQw0KKyNkZWZpbmUgamluaXRfY29sb3JfY29udmVydGVyCWpJQ0NvbG9yDQorI2RlZmluZSBqaW5pdF9kb3duc2FtcGxlcglqSURvd25zYW1wbGVyDQorI2RlZmluZSBqaW5pdF9mb3J3YXJkX2RjdAlqSUZEQ1QNCisjZGVmaW5lIGppbml0X2h1ZmZfZW5jb2RlcglqSUhFbmNvZGVyDQorI2RlZmluZSBqaW5pdF9waHVmZl9lbmNvZGVyCWpJUEhFbmNvZGVyDQorI2RlZmluZSBqaW5pdF9tYXJrZXJfd3JpdGVyCWpJTVdyaXRlcg0KKyNkZWZpbmUgamluaXRfbWFzdGVyX2RlY29tcHJlc3MJaklETWFzdGVyDQorI2RlZmluZSBqaW5pdF9kX21haW5fY29udHJvbGxlcglqSURNYWluQw0KKyNkZWZpbmUgamluaXRfZF9jb2VmX2NvbnRyb2xsZXIJaklEQ29lZkMNCisjZGVmaW5lIGppbml0X2RfcG9zdF9jb250cm9sbGVyCWpJRFBvc3RDDQorI2RlZmluZSBqaW5pdF9pbnB1dF9jb250cm9sbGVyCWpJSW5DdGxyDQorI2RlZmluZSBqaW5pdF9tYXJrZXJfcmVhZGVyCWpJTVJlYWRlcg0KKyNkZWZpbmUgamluaXRfaHVmZl9kZWNvZGVyCWpJSERlY29kZXINCisjZGVmaW5lIGppbml0X3BodWZmX2RlY29kZXIJaklQSERlY29kZXINCisjZGVmaW5lIGppbml0X2ludmVyc2VfZGN0CWpJSURDVA0KKyNkZWZpbmUgamluaXRfdXBzYW1wbGVyCQlqSVVwc2FtcGxlcg0KKyNkZWZpbmUgamluaXRfY29sb3JfZGVjb252ZXJ0ZXIJaklEQ29sb3INCisjZGVmaW5lIGppbml0XzFwYXNzX3F1YW50aXplcglqSTFRdWFudA0KKyNkZWZpbmUgamluaXRfMnBhc3NfcXVhbnRpemVyCWpJMlF1YW50DQorI2RlZmluZSBqaW5pdF9tZXJnZWRfdXBzYW1wbGVyCWpJTVVwc2FtcGxlcg0KKyNkZWZpbmUgamluaXRfbWVtb3J5X21ncglqSU1lbU1ncg0KKyNkZWZpbmUgamRpdl9yb3VuZF91cAkJakRpdlJvdW5kDQorI2RlZmluZSBqcm91bmRfdXAJCWpSb3VuZA0KKyNkZWZpbmUgamNvcHlfc2FtcGxlX3Jvd3MJakNvcHlTYW1wbGVzDQorI2RlZmluZSBqY29weV9ibG9ja19yb3cJCWpDb3B5QmxvY2tzDQorI2RlZmluZSBqemVyb19mYXIJCWpaZXJvRmFyDQorI2RlZmluZSBqcGVnX3ppZ3phZ19vcmRlcglqWklHVGFibGUNCisjZGVmaW5lIGpwZWdfbmF0dXJhbF9vcmRlcglqWkFHVGFibGUNCisjZW5kaWYgLyogTkVFRF9TSE9SVF9FWFRFUk5BTF9OQU1FUyAqLw0KKw0KKw0KKy8qIENvbXByZXNzaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcyAqLw0KK0VYVEVSTih2b2lkKSBqaW5pdF9jb21wcmVzc19tYXN0ZXIgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9jX21hc3Rlcl9jb250cm9sIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgYm9vbGVhbiB0cmFuc2NvZGVfb25seSkpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9jX21haW5fY29udHJvbGxlciBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICBib29sZWFuIG5lZWRfZnVsbF9idWZmZXIpKTsNCitFWFRFUk4odm9pZCkgamluaXRfY19wcmVwX2NvbnRyb2xsZXIgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgYm9vbGVhbiBuZWVkX2Z1bGxfYnVmZmVyKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2NfY29lZl9jb250cm9sbGVyIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgIGJvb2xlYW4gbmVlZF9mdWxsX2J1ZmZlcikpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9jb2xvcl9jb252ZXJ0ZXIgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9kb3duc2FtcGxlciBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2ZvcndhcmRfZGN0IEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgamluaXRfaHVmZl9lbmNvZGVyIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgamluaXRfcGh1ZmZfZW5jb2RlciBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X21hcmtlcl93cml0ZXIgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKy8qIERlY29tcHJlc3Npb24gbW9kdWxlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzICovDQorRVhURVJOKHZvaWQpIGppbml0X21hc3Rlcl9kZWNvbXByZXNzIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9kX21haW5fY29udHJvbGxlciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgIGJvb2xlYW4gbmVlZF9mdWxsX2J1ZmZlcikpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9kX2NvZWZfY29udHJvbGxlciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgIGJvb2xlYW4gbmVlZF9mdWxsX2J1ZmZlcikpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9kX3Bvc3RfY29udHJvbGxlciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgIGJvb2xlYW4gbmVlZF9mdWxsX2J1ZmZlcikpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9pbnB1dF9jb250cm9sbGVyIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9tYXJrZXJfcmVhZGVyIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9odWZmX2RlY29kZXIgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X3BodWZmX2RlY29kZXIgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2ludmVyc2VfZGN0IEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF91cHNhbXBsZXIgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2NvbG9yX2RlY29udmVydGVyIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF8xcGFzc19xdWFudGl6ZXIgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0XzJwYXNzX3F1YW50aXplciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgamluaXRfbWVyZ2VkX3Vwc2FtcGxlciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisvKiBNZW1vcnkgbWFuYWdlciBpbml0aWFsaXphdGlvbiAqLw0KK0VYVEVSTih2b2lkKSBqaW5pdF9tZW1vcnlfbWdyIEpQUCgoal9jb21tb25fcHRyIGNpbmZvKSk7DQorDQorLyogVXRpbGl0eSByb3V0aW5lcyBpbiBqdXRpbHMuYyAqLw0KK0VYVEVSTihsb25nKSBqZGl2X3JvdW5kX3VwIEpQUCgobG9uZyBhLCBsb25nIGIpKTsNCitFWFRFUk4obG9uZykganJvdW5kX3VwIEpQUCgobG9uZyBhLCBsb25nIGIpKTsNCitFWFRFUk4odm9pZCkgamNvcHlfc2FtcGxlX3Jvd3MgSlBQKChKU0FNUEFSUkFZIGlucHV0X2FycmF5LCBpbnQgc291cmNlX3JvdywNCisJCQkJICAgIEpTQU1QQVJSQVkgb3V0cHV0X2FycmF5LCBpbnQgZGVzdF9yb3csDQorCQkJCSAgICBpbnQgbnVtX3Jvd3MsIEpESU1FTlNJT04gbnVtX2NvbHMpKTsNCitFWFRFUk4odm9pZCkgamNvcHlfYmxvY2tfcm93IEpQUCgoSkJMT0NLUk9XIGlucHV0X3JvdywgSkJMT0NLUk9XIG91dHB1dF9yb3csDQorCQkJCSAgSkRJTUVOU0lPTiBudW1fYmxvY2tzKSk7DQorRVhURVJOKHZvaWQpIGp6ZXJvX2ZhciBKUFAoKHZvaWQgRkFSICogdGFyZ2V0LCBzaXplX3QgYnl0ZXN0b3plcm8pKTsNCisvKiBDb25zdGFudCB0YWJsZXMgaW4ganV0aWxzLmMgKi8NCisjaWYgMAkJCQkvKiBUaGlzIHRhYmxlIGlzIG5vdCBhY3R1YWxseSBuZWVkZWQgaW4gdjZhICovDQorZXh0ZXJuIGNvbnN0IGludCBqcGVnX3ppZ3phZ19vcmRlcltdOyAvKiBuYXR1cmFsIGNvZWYgb3JkZXIgdG8gemlnemFnIG9yZGVyICovDQorI2VuZGlmDQorZXh0ZXJuIGNvbnN0IGludCBqcGVnX25hdHVyYWxfb3JkZXJbXTsgLyogemlnemFnIGNvZWYgb3JkZXIgdG8gbmF0dXJhbCBvcmRlciAqLw0KKw0KKy8qIFN1cHByZXNzIHVuZGVmaW5lZC1zdHJ1Y3R1cmUgY29tcGxhaW50cyBpZiBuZWNlc3NhcnkuICovDQorDQorI2lmZGVmIElOQ09NUExFVEVfVFlQRVNfQlJPS0VODQorI2lmbmRlZiBBTV9NRU1PUllfTUFOQUdFUgkvKiBvbmx5IGptZW1tZ3IuYyBkZWZpbmVzIHRoZXNlICovDQorc3RydWN0IGp2aXJ0X3NhcnJheV9jb250cm9sIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganZpcnRfYmFycmF5X2NvbnRyb2wgeyBsb25nIGR1bW15OyB9Ow0KKyNlbmRpZg0KKyNlbmRpZiAvKiBJTkNPTVBMRVRFX1RZUEVTX0JST0tFTiAqLw0KZGlmZiAtLWdpdCBhL2NvcmUvaW5jbHVkZS90aGlyZHBhcnRpZXMvbGlianBlZy9qcGVnbGliLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2xpYmpwZWcvanBlZ2xpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMmFmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL2xpYmpwZWcvanBlZ2xpYi5oCkBAIC0wLDAgKzEsMTE2NSBAQAorLyoNCisgKiBqcGVnbGliLmgNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5MS0xOTk4LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiBpbnRlcmZhY2UgZm9yIHRoZSBKUEVHIGxpYnJhcnkuDQorICogTW9zdCBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGxpYnJhcnkgbmVlZCBvbmx5IGluY2x1ZGUgdGhpcyBmaWxlLA0KKyAqIGFuZCBwZXJoYXBzIGplcnJvci5oIGlmIHRoZXkgd2FudCB0byBrbm93IHRoZSBleGFjdCBlcnJvciBjb2Rlcy4NCisgKi8NCisNCisjaWZuZGVmIEpQRUdMSUJfSA0KKyNkZWZpbmUgSlBFR0xJQl9IDQorDQorI2RlZmluZSBGT1hJVF9QUkVGSVgob3JpZ05hbWUpICBGUERGQVBJSlBFR18jI29yaWdOYW1lDQorDQorI2RlZmluZSBqY29weV9ibG9ja19yb3cgRk9YSVRfUFJFRklYKGpjb3B5X2Jsb2NrX3JvdykNCisjZGVmaW5lIGpjb3B5X3NhbXBsZV9yb3dzIEZPWElUX1BSRUZJWChqY29weV9zYW1wbGVfcm93cykNCisjZGVmaW5lIGpkaXZfcm91bmRfdXAgRk9YSVRfUFJFRklYKGpkaXZfcm91bmRfdXApDQorI2RlZmluZSBqaW5pdF8xcGFzc19xdWFudGl6ZXIgRk9YSVRfUFJFRklYKGppbml0XzFwYXNzX3F1YW50aXplcikNCisjZGVmaW5lIGppbml0XzJwYXNzX3F1YW50aXplciBGT1hJVF9QUkVGSVgoamluaXRfMnBhc3NfcXVhbnRpemVyKQ0KKyNkZWZpbmUgamluaXRfY29sb3JfZGVjb252ZXJ0ZXIgRk9YSVRfUFJFRklYKGppbml0X2NvbG9yX2RlY29udmVydGVyKQ0KKyNkZWZpbmUgamluaXRfZF9jb2VmX2NvbnRyb2xsZXIgRk9YSVRfUFJFRklYKGppbml0X2RfY29lZl9jb250cm9sbGVyKQ0KKyNkZWZpbmUgamluaXRfZF9tYWluX2NvbnRyb2xsZXIgRk9YSVRfUFJFRklYKGppbml0X2RfbWFpbl9jb250cm9sbGVyKQ0KKyNkZWZpbmUgamluaXRfZF9wb3N0X2NvbnRyb2xsZXIgRk9YSVRfUFJFRklYKGppbml0X2RfcG9zdF9jb250cm9sbGVyKQ0KKyNkZWZpbmUgamluaXRfaHVmZl9kZWNvZGVyIEZPWElUX1BSRUZJWChqaW5pdF9odWZmX2RlY29kZXIpDQorI2RlZmluZSBqaW5pdF9pbnB1dF9jb250cm9sbGVyIEZPWElUX1BSRUZJWChqaW5pdF9pbnB1dF9jb250cm9sbGVyKQ0KKyNkZWZpbmUgamluaXRfaW52ZXJzZV9kY3QgRk9YSVRfUFJFRklYKGppbml0X2ludmVyc2VfZGN0KQ0KKyNkZWZpbmUgamluaXRfbWFya2VyX3JlYWRlciBGT1hJVF9QUkVGSVgoamluaXRfbWFya2VyX3JlYWRlcikNCisjZGVmaW5lIGppbml0X21hc3Rlcl9kZWNvbXByZXNzIEZPWElUX1BSRUZJWChqaW5pdF9tYXN0ZXJfZGVjb21wcmVzcykNCisjZGVmaW5lIGppbml0X21lbW9yeV9tZ3IgRk9YSVRfUFJFRklYKGppbml0X21lbW9yeV9tZ3IpDQorI2RlZmluZSBqaW5pdF9tZXJnZWRfdXBzYW1wbGVyIEZPWElUX1BSRUZJWChqaW5pdF9tZXJnZWRfdXBzYW1wbGVyKQ0KKyNkZWZpbmUgamluaXRfcGh1ZmZfZGVjb2RlciBGT1hJVF9QUkVGSVgoamluaXRfcGh1ZmZfZGVjb2RlcikNCisjZGVmaW5lIGppbml0X3Vwc2FtcGxlciBGT1hJVF9QUkVGSVgoamluaXRfdXBzYW1wbGVyKQ0KKyNkZWZpbmUganBlZ19DcmVhdGVEZWNvbXByZXNzIEZPWElUX1BSRUZJWChqcGVnX0NyZWF0ZURlY29tcHJlc3MpDQorI2RlZmluZSBqcGVnX2Fib3J0IEZPWElUX1BSRUZJWChqcGVnX2Fib3J0KQ0KKyNkZWZpbmUganBlZ19hYm9ydF9kZWNvbXByZXNzIEZPWElUX1BSRUZJWChqcGVnX2Fib3J0X2RlY29tcHJlc3MpDQorI2RlZmluZSBqcGVnX2FsbG9jX2h1ZmZfdGFibGUgRk9YSVRfUFJFRklYKGpwZWdfYWxsb2NfaHVmZl90YWJsZSkNCisjZGVmaW5lIGpwZWdfYWxsb2NfcXVhbnRfdGFibGUgRk9YSVRfUFJFRklYKGpwZWdfYWxsb2NfcXVhbnRfdGFibGUpDQorI2RlZmluZSBqcGVnX2NhbGNfb3V0cHV0X2RpbWVuc2lvbnMgRk9YSVRfUFJFRklYKGpwZWdfY2FsY19vdXRwdXRfZGltZW5zaW9ucykNCisjZGVmaW5lIGpwZWdfY29uc3VtZV9pbnB1dCBGT1hJVF9QUkVGSVgoanBlZ19jb25zdW1lX2lucHV0KQ0KKyNkZWZpbmUganBlZ19kZXN0cm95IEZPWElUX1BSRUZJWChqcGVnX2Rlc3Ryb3kpDQorI2RlZmluZSBqcGVnX2Rlc3Ryb3lfZGVjb21wcmVzcyBGT1hJVF9QUkVGSVgoanBlZ19kZXN0cm95X2RlY29tcHJlc3MpDQorI2RlZmluZSBqcGVnX2ZpbGxfYml0X2J1ZmZlciBGT1hJVF9QUkVGSVgoanBlZ19maWxsX2JpdF9idWZmZXIpDQorI2RlZmluZSBqcGVnX2ZpbmlzaF9kZWNvbXByZXNzIEZPWElUX1BSRUZJWChqcGVnX2ZpbmlzaF9kZWNvbXByZXNzKQ0KKyNkZWZpbmUganBlZ19maW5pc2hfb3V0cHV0IEZPWElUX1BSRUZJWChqcGVnX2ZpbmlzaF9vdXRwdXQpDQorI2RlZmluZSBqcGVnX2ZyZWVfbGFyZ2UgRk9YSVRfUFJFRklYKGpwZWdfZnJlZV9sYXJnZSkNCisjZGVmaW5lIGpwZWdfZnJlZV9zbWFsbCBGT1hJVF9QUkVGSVgoanBlZ19mcmVlX3NtYWxsKQ0KKyNkZWZpbmUganBlZ19nZXRfbGFyZ2UgRk9YSVRfUFJFRklYKGpwZWdfZ2V0X2xhcmdlKQ0KKyNkZWZpbmUganBlZ19nZXRfc21hbGwgRk9YSVRfUFJFRklYKGpwZWdfZ2V0X3NtYWxsKQ0KKyNkZWZpbmUganBlZ19oYXNfbXVsdGlwbGVfc2NhbnMgRk9YSVRfUFJFRklYKGpwZWdfaGFzX211bHRpcGxlX3NjYW5zKQ0KKyNkZWZpbmUganBlZ19odWZmX2RlY29kZSBGT1hJVF9QUkVGSVgoanBlZ19odWZmX2RlY29kZSkNCisjZGVmaW5lIGpwZWdfaWRjdF8xeDEgRk9YSVRfUFJFRklYKGpwZWdfaWRjdF8xeDEpDQorI2RlZmluZSBqcGVnX2lkY3RfMngyIEZPWElUX1BSRUZJWChqcGVnX2lkY3RfMngyKQ0KKyNkZWZpbmUganBlZ19pZGN0XzR4NCBGT1hJVF9QUkVGSVgoanBlZ19pZGN0XzR4NCkNCisjZGVmaW5lIGpwZWdfaWRjdF9mbG9hdCBGT1hJVF9QUkVGSVgoanBlZ19pZGN0X2Zsb2F0KQ0KKyNkZWZpbmUganBlZ19pZGN0X2lmYXN0IEZPWElUX1BSRUZJWChqcGVnX2lkY3RfaWZhc3QpDQorI2RlZmluZSBqcGVnX2lkY3RfaXNsb3cgRk9YSVRfUFJFRklYKGpwZWdfaWRjdF9pc2xvdykNCisjZGVmaW5lIGpwZWdfaW5wdXRfY29tcGxldGUgRk9YSVRfUFJFRklYKGpwZWdfaW5wdXRfY29tcGxldGUpDQorI2RlZmluZSBqcGVnX21ha2VfZF9kZXJpdmVkX3RibCBGT1hJVF9QUkVGSVgoanBlZ19tYWtlX2RfZGVyaXZlZF90YmwpDQorI2RlZmluZSBqcGVnX21lbV9hdmFpbGFibGUgRk9YSVRfUFJFRklYKGpwZWdfbWVtX2F2YWlsYWJsZSkNCisjZGVmaW5lIGpwZWdfbWVtX2luaXQgRk9YSVRfUFJFRklYKGpwZWdfbWVtX2luaXQpDQorI2RlZmluZSBqcGVnX21lbV90ZXJtIEZPWElUX1BSRUZJWChqcGVnX21lbV90ZXJtKQ0KKyNkZWZpbmUganBlZ19uYXR1cmFsX29yZGVyIEZPWElUX1BSRUZJWChqcGVnX25hdHVyYWxfb3JkZXIpDQorI2RlZmluZSBqcGVnX25ld19jb2xvcm1hcCBGT1hJVF9QUkVGSVgoanBlZ19uZXdfY29sb3JtYXApDQorI2RlZmluZSBqcGVnX29wZW5fYmFja2luZ19zdG9yZSBGT1hJVF9QUkVGSVgoanBlZ19vcGVuX2JhY2tpbmdfc3RvcmUpDQorI2RlZmluZSBqcGVnX3JlYWRfY29lZmZpY2llbnRzIEZPWElUX1BSRUZJWChqcGVnX3JlYWRfY29lZmZpY2llbnRzKQ0KKyNkZWZpbmUganBlZ19yZWFkX2hlYWRlciBGT1hJVF9QUkVGSVgoanBlZ19yZWFkX2hlYWRlcikNCisjZGVmaW5lIGpwZWdfcmVhZF9yYXdfZGF0YSBGT1hJVF9QUkVGSVgoanBlZ19yZWFkX3Jhd19kYXRhKQ0KKyNkZWZpbmUganBlZ19yZWFkX3NjYW5saW5lcyBGT1hJVF9QUkVGSVgoanBlZ19yZWFkX3NjYW5saW5lcykNCisjZGVmaW5lIGpwZWdfcmVzeW5jX3RvX3Jlc3RhcnQgRk9YSVRfUFJFRklYKGpwZWdfcmVzeW5jX3RvX3Jlc3RhcnQpDQorI2RlZmluZSBqcGVnX3NhdmVfbWFya2VycyBGT1hJVF9QUkVGSVgoanBlZ19zYXZlX21hcmtlcnMpDQorI2RlZmluZSBqcGVnX3NldF9tYXJrZXJfcHJvY2Vzc29yIEZPWElUX1BSRUZJWChqcGVnX3NldF9tYXJrZXJfcHJvY2Vzc29yKQ0KKyNkZWZpbmUganBlZ19zdGFydF9kZWNvbXByZXNzIEZPWElUX1BSRUZJWChqcGVnX3N0YXJ0X2RlY29tcHJlc3MpDQorI2RlZmluZSBqcGVnX3N0YXJ0X291dHB1dCBGT1hJVF9QUkVGSVgoanBlZ19zdGFydF9vdXRwdXQpDQorI2RlZmluZSBqcGVnX3N0ZF9lcnJvciBGT1hJVF9QUkVGSVgoanBlZ19zdGRfZXJyb3IpDQorI2RlZmluZSBqcGVnX3N0ZF9tZXNzYWdlX3RhYmxlIEZPWElUX1BSRUZJWChqcGVnX3N0ZF9tZXNzYWdlX3RhYmxlKQ0KKyNkZWZpbmUganBlZ19zdGRpb19zcmMgRk9YSVRfUFJFRklYKGpwZWdfc3RkaW9fc3JjKQ0KKyNkZWZpbmUganJvdW5kX3VwIEZPWElUX1BSRUZJWChqcm91bmRfdXApDQorI2RlZmluZSBqemVyb19mYXIgRk9YSVRfUFJFRklYKGp6ZXJvX2ZhcikNCisNCisgLyoNCisgKiBGaXJzdCB3ZSBpbmNsdWRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQgcmVjb3JkIGhvdyB0aGlzDQorICogaW5zdGFsbGF0aW9uIG9mIHRoZSBKUEVHIGxpYnJhcnkgaXMgc2V0IHVwLiAgamNvbmZpZy5oIGNhbiBiZQ0KKyAqIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZvciBtYW55IHN5c3RlbXMuICBqbW9yZWNmZy5oIGNvbnRhaW5zDQorICogbWFudWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1vc3QgcGVvcGxlIG5lZWQgbm90IHdvcnJ5IGFib3V0Lg0KKyAqLw0KKw0KKyNpZm5kZWYgSkNPTkZJR19JTkNMVURFRAkvKiBpbiBjYXNlIGppbmNsdWRlLmggYWxyZWFkeSBkaWQgKi8NCisjaW5jbHVkZSAiamNvbmZpZy5oIgkJLyogd2lkZWx5IHVzZWQgY29uZmlndXJhdGlvbiBvcHRpb25zICovDQorI2VuZGlmDQorI2luY2x1ZGUgImptb3JlY2ZnLmgiCQkvKiBzZWxkb20gY2hhbmdlZCBvcHRpb25zICovDQorDQorDQorLyogVmVyc2lvbiBJRCBmb3IgdGhlIEpQRUcgbGlicmFyeS4NCisgKiBNaWdodCBiZSB1c2VmdWwgZm9yIHRlc3RzIGxpa2UgIiNpZiBKUEVHX0xJQl9WRVJTSU9OID49IDYwIi4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfTElCX1ZFUlNJT04gIDYyCS8qIFZlcnNpb24gNmIgKi8NCisNCisNCisvKiBWYXJpb3VzIGNvbnN0YW50cyBkZXRlcm1pbmluZyB0aGUgc2l6ZXMgb2YgdGhpbmdzLg0KKyAqIEFsbCBvZiB0aGVzZSBhcmUgc3BlY2lmaWVkIGJ5IHRoZSBKUEVHIHN0YW5kYXJkLCBzbyBkb24ndCBjaGFuZ2UgdGhlbQ0KKyAqIGlmIHlvdSB3YW50IHRvIGJlIGNvbXBhdGlibGUuDQorICovDQorDQorI2RlZmluZSBEQ1RTSVpFCQkgICAgOAkvKiBUaGUgYmFzaWMgRENUIGJsb2NrIGlzIDh4OCBzYW1wbGVzICovDQorI2RlZmluZSBEQ1RTSVpFMgkgICAgNjQJLyogRENUU0laRSBzcXVhcmVkOyAjIG9mIGVsZW1lbnRzIGluIGEgYmxvY2sgKi8NCisjZGVmaW5lIE5VTV9RVUFOVF9UQkxTICAgICAgNAkvKiBRdWFudGl6YXRpb24gdGFibGVzIGFyZSBudW1iZXJlZCAwLi4zICovDQorI2RlZmluZSBOVU1fSFVGRl9UQkxTICAgICAgIDQJLyogSHVmZm1hbiB0YWJsZXMgYXJlIG51bWJlcmVkIDAuLjMgKi8NCisjZGVmaW5lIE5VTV9BUklUSF9UQkxTICAgICAgMTYJLyogQXJpdGgtY29kaW5nIHRhYmxlcyBhcmUgbnVtYmVyZWQgMC4uMTUgKi8NCisjZGVmaW5lIE1BWF9DT01QU19JTl9TQ0FOICAgNAkvKiBKUEVHIGxpbWl0IG9uICMgb2YgY29tcG9uZW50cyBpbiBvbmUgc2NhbiAqLw0KKyNkZWZpbmUgTUFYX1NBTVBfRkFDVE9SICAgICA0CS8qIEpQRUcgbGltaXQgb24gc2FtcGxpbmcgZmFjdG9ycyAqLw0KKy8qIFVuZm9ydHVuYXRlbHksIHNvbWUgYm96byBhdCBBZG9iZSBzYXcgbm8gcmVhc29uIHRvIGJlIGJvdW5kIGJ5IHRoZSBzdGFuZGFyZDsNCisgKiB0aGUgUG9zdFNjcmlwdCBEQ1QgZmlsdGVyIGNhbiBlbWl0IGZpbGVzIHdpdGggbWFueSBtb3JlIHRoYW4gMTAgYmxvY2tzL01DVS4NCisgKiBJZiB5b3UgaGFwcGVuIHRvIHJ1biBhY3Jvc3Mgc3VjaCBhIGZpbGUsIHlvdSBjYW4gdXAgRF9NQVhfQkxPQ0tTX0lOX01DVQ0KKyAqIHRvIGhhbmRsZSBpdC4gIFdlIGV2ZW4gbGV0IHlvdSBkbyB0aGlzIGZyb20gdGhlIGpjb25maWcuaCBmaWxlLiAgSG93ZXZlciwNCisgKiB3ZSBzdHJvbmdseSBkaXNjb3VyYWdlIGNoYW5naW5nIENfTUFYX0JMT0NLU19JTl9NQ1U7IGp1c3QgYmVjYXVzZSBBZG9iZQ0KKyAqIHNvbWV0aW1lcyBlbWl0cyBub25jb21wbGlhbnQgZmlsZXMgZG9lc24ndCBtZWFuIHlvdSBzaG91bGQgdG9vLg0KKyAqLw0KKyNkZWZpbmUgQ19NQVhfQkxPQ0tTX0lOX01DVSAgIDEwIC8qIGNvbXByZXNzb3IncyBsaW1pdCBvbiBibG9ja3MgcGVyIE1DVSAqLw0KKyNpZm5kZWYgRF9NQVhfQkxPQ0tTX0lOX01DVQ0KKyNkZWZpbmUgRF9NQVhfQkxPQ0tTX0lOX01DVSAgIDEwIC8qIGRlY29tcHJlc3NvcidzIGxpbWl0IG9uIGJsb2NrcyBwZXIgTUNVICovDQorI2VuZGlmDQorDQorDQorLyogRGF0YSBzdHJ1Y3R1cmVzIGZvciBpbWFnZXMgKGFycmF5cyBvZiBzYW1wbGVzIGFuZCBvZiBEQ1QgY29lZmZpY2llbnRzKS4NCisgKiBPbiA4MHg4NiBtYWNoaW5lcywgdGhlIGltYWdlIGFycmF5cyBhcmUgdG9vIGJpZyBmb3IgbmVhciBwb2ludGVycywNCisgKiBidXQgdGhlIHBvaW50ZXIgYXJyYXlzIGNhbiBmaXQgaW4gbmVhciBtZW1vcnkuDQorICovDQorDQordHlwZWRlZiBKU0FNUExFICAqSlNBTVBST1c7CS8qIHB0ciB0byBvbmUgaW1hZ2Ugcm93IG9mIHBpeGVsIHNhbXBsZXMuICovDQordHlwZWRlZiBKU0FNUFJPVyAqSlNBTVBBUlJBWTsJLyogcHRyIHRvIHNvbWUgcm93cyAoYSAyLUQgc2FtcGxlIGFycmF5KSAqLw0KK3R5cGVkZWYgSlNBTVBBUlJBWSAqSlNBTVBJTUFHRTsJLyogYSAzLUQgc2FtcGxlIGFycmF5OiB0b3AgaW5kZXggaXMgY29sb3IgKi8NCisNCit0eXBlZGVmIEpDT0VGIEpCTE9DS1tEQ1RTSVpFMl07CS8qIG9uZSBibG9jayBvZiBjb2VmZmljaWVudHMgKi8NCit0eXBlZGVmIEpCTE9DSyAgKkpCTE9DS1JPVzsJLyogcG9pbnRlciB0byBvbmUgcm93IG9mIGNvZWZmaWNpZW50IGJsb2NrcyAqLw0KK3R5cGVkZWYgSkJMT0NLUk9XICpKQkxPQ0tBUlJBWTsJCS8qIGEgMi1EIGFycmF5IG9mIGNvZWZmaWNpZW50IGJsb2NrcyAqLw0KK3R5cGVkZWYgSkJMT0NLQVJSQVkgKkpCTE9DS0lNQUdFOwkvKiBhIDMtRCBhcnJheSBvZiBjb2VmZmljaWVudCBibG9ja3MgKi8NCisNCit0eXBlZGVmIEpDT0VGICAqSkNPRUZQVFI7CS8qIHVzZWZ1bCBpbiBhIGNvdXBsZSBvZiBwbGFjZXMgKi8NCisNCisNCisvKiBUeXBlcyBmb3IgSlBFRyBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIGFuZCB3b3JraW5nIHRhYmxlcy4gKi8NCisNCisNCisvKiBEQ1QgY29lZmZpY2llbnQgcXVhbnRpemF0aW9uIHRhYmxlcy4gKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICAvKiBUaGlzIGFycmF5IGdpdmVzIHRoZSBjb2VmZmljaWVudCBxdWFudGl6ZXJzIGluIG5hdHVyYWwgYXJyYXkgb3JkZXINCisgICAqIChub3QgdGhlIHppZ3phZyBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBzdG9yZWQgaW4gYSBKUEVHIERRVCBtYXJrZXIpLg0KKyAgICogQ0FVVElPTjogSUpHIHZlcnNpb25zIHByaW9yIHRvIHY2YSBrZXB0IHRoaXMgYXJyYXkgaW4gemlnemFnIG9yZGVyLg0KKyAgICovDQorICBVSU5UMTYgcXVhbnR2YWxbRENUU0laRTJdOwkvKiBxdWFudGl6YXRpb24gc3RlcCBmb3IgZWFjaCBjb2VmZmljaWVudCAqLw0KKyAgLyogVGhpcyBmaWVsZCBpcyB1c2VkIG9ubHkgZHVyaW5nIGNvbXByZXNzaW9uLiAgSXQncyBpbml0aWFsaXplZCBGQUxTRSB3aGVuDQorICAgKiB0aGUgdGFibGUgaXMgY3JlYXRlZCwgYW5kIHNldCBUUlVFIHdoZW4gaXQncyBiZWVuIG91dHB1dCB0byB0aGUgZmlsZS4NCisgICAqIFlvdSBjb3VsZCBzdXBwcmVzcyBvdXRwdXQgb2YgYSB0YWJsZSBieSBzZXR0aW5nIHRoaXMgdG8gVFJVRS4NCisgICAqIChTZWUganBlZ19zdXBwcmVzc190YWJsZXMgZm9yIGFuIGV4YW1wbGUuKQ0KKyAgICovDQorICBib29sZWFuIHNlbnRfdGFibGU7CQkvKiBUUlVFIHdoZW4gdGFibGUgaGFzIGJlZW4gb3V0cHV0ICovDQorfSBKUVVBTlRfVEJMOw0KKw0KKw0KKy8qIEh1ZmZtYW4gY29kaW5nIHRhYmxlcy4gKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICAvKiBUaGVzZSB0d28gZmllbGRzIGRpcmVjdGx5IHJlcHJlc2VudCB0aGUgY29udGVudHMgb2YgYSBKUEVHIERIVCBtYXJrZXIgKi8NCisgIFVJTlQ4IGJpdHNbMTddOwkJLyogYml0c1trXSA9ICMgb2Ygc3ltYm9scyB3aXRoIGNvZGVzIG9mICovDQorCQkJCS8qIGxlbmd0aCBrIGJpdHM7IGJpdHNbMF0gaXMgdW51c2VkICovDQorICBVSU5UOCBodWZmdmFsWzI1Nl07CQkvKiBUaGUgc3ltYm9scywgaW4gb3JkZXIgb2YgaW5jciBjb2RlIGxlbmd0aCAqLw0KKyAgLyogVGhpcyBmaWVsZCBpcyB1c2VkIG9ubHkgZHVyaW5nIGNvbXByZXNzaW9uLiAgSXQncyBpbml0aWFsaXplZCBGQUxTRSB3aGVuDQorICAgKiB0aGUgdGFibGUgaXMgY3JlYXRlZCwgYW5kIHNldCBUUlVFIHdoZW4gaXQncyBiZWVuIG91dHB1dCB0byB0aGUgZmlsZS4NCisgICAqIFlvdSBjb3VsZCBzdXBwcmVzcyBvdXRwdXQgb2YgYSB0YWJsZSBieSBzZXR0aW5nIHRoaXMgdG8gVFJVRS4NCisgICAqIChTZWUganBlZ19zdXBwcmVzc190YWJsZXMgZm9yIGFuIGV4YW1wbGUuKQ0KKyAgICovDQorICBib29sZWFuIHNlbnRfdGFibGU7CQkvKiBUUlVFIHdoZW4gdGFibGUgaGFzIGJlZW4gb3V0cHV0ICovDQorfSBKSFVGRl9UQkw7DQorDQorDQorLyogQmFzaWMgaW5mbyBhYm91dCBvbmUgY29tcG9uZW50IChjb2xvciBjaGFubmVsKS4gKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICAvKiBUaGVzZSB2YWx1ZXMgYXJlIGZpeGVkIG92ZXIgdGhlIHdob2xlIGltYWdlLiAqLw0KKyAgLyogRm9yIGNvbXByZXNzaW9uLCB0aGV5IG11c3QgYmUgc3VwcGxpZWQgYnkgcGFyYW1ldGVyIHNldHVwOyAqLw0KKyAgLyogZm9yIGRlY29tcHJlc3Npb24sIHRoZXkgYXJlIHJlYWQgZnJvbSB0aGUgU09GIG1hcmtlci4gKi8NCisgIGludCBjb21wb25lbnRfaWQ7CQkvKiBpZGVudGlmaWVyIGZvciB0aGlzIGNvbXBvbmVudCAoMC4uMjU1KSAqLw0KKyAgaW50IGNvbXBvbmVudF9pbmRleDsJCS8qIGl0cyBpbmRleCBpbiBTT0Ygb3IgY2luZm8tPmNvbXBfaW5mb1tdICovDQorICBpbnQgaF9zYW1wX2ZhY3RvcjsJCS8qIGhvcml6b250YWwgc2FtcGxpbmcgZmFjdG9yICgxLi40KSAqLw0KKyAgaW50IHZfc2FtcF9mYWN0b3I7CQkvKiB2ZXJ0aWNhbCBzYW1wbGluZyBmYWN0b3IgKDEuLjQpICovDQorICBpbnQgcXVhbnRfdGJsX25vOwkJLyogcXVhbnRpemF0aW9uIHRhYmxlIHNlbGVjdG9yICgwLi4zKSAqLw0KKyAgLyogVGhlc2UgdmFsdWVzIG1heSB2YXJ5IGJldHdlZW4gc2NhbnMuICovDQorICAvKiBGb3IgY29tcHJlc3Npb24sIHRoZXkgbXVzdCBiZSBzdXBwbGllZCBieSBwYXJhbWV0ZXIgc2V0dXA7ICovDQorICAvKiBmb3IgZGVjb21wcmVzc2lvbiwgdGhleSBhcmUgcmVhZCBmcm9tIHRoZSBTT1MgbWFya2VyLiAqLw0KKyAgLyogVGhlIGRlY29tcHJlc3NvciBvdXRwdXQgc2lkZSBtYXkgbm90IHVzZSB0aGVzZSB2YXJpYWJsZXMuICovDQorICBpbnQgZGNfdGJsX25vOwkJLyogREMgZW50cm9weSB0YWJsZSBzZWxlY3RvciAoMC4uMykgKi8NCisgIGludCBhY190Ymxfbm87CQkvKiBBQyBlbnRyb3B5IHRhYmxlIHNlbGVjdG9yICgwLi4zKSAqLw0KKyAgDQorICAvKiBSZW1haW5pbmcgZmllbGRzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHByaXZhdGUgYnkgYXBwbGljYXRpb25zLiAqLw0KKyAgDQorICAvKiBUaGVzZSB2YWx1ZXMgYXJlIGNvbXB1dGVkIGR1cmluZyBjb21wcmVzc2lvbiBvciBkZWNvbXByZXNzaW9uIHN0YXJ0dXA6ICovDQorICAvKiBDb21wb25lbnQncyBzaXplIGluIERDVCBibG9ja3MuDQorICAgKiBBbnkgZHVtbXkgYmxvY2tzIGFkZGVkIHRvIGNvbXBsZXRlIGFuIE1DVSBhcmUgbm90IGNvdW50ZWQ7IHRoZXJlZm9yZQ0KKyAgICogdGhlc2UgdmFsdWVzIGRvIG5vdCBkZXBlbmQgb24gd2hldGhlciBhIHNjYW4gaXMgaW50ZXJsZWF2ZWQgb3Igbm90Lg0KKyAgICovDQorICBKRElNRU5TSU9OIHdpZHRoX2luX2Jsb2NrczsNCisgIEpESU1FTlNJT04gaGVpZ2h0X2luX2Jsb2NrczsNCisgIC8qIFNpemUgb2YgYSBEQ1QgYmxvY2sgaW4gc2FtcGxlcy4gIEFsd2F5cyBEQ1RTSVpFIGZvciBjb21wcmVzc2lvbi4NCisgICAqIEZvciBkZWNvbXByZXNzaW9uIHRoaXMgaXMgdGhlIHNpemUgb2YgdGhlIG91dHB1dCBmcm9tIG9uZSBEQ1QgYmxvY2ssDQorICAgKiByZWZsZWN0aW5nIGFueSBzY2FsaW5nIHdlIGNob29zZSB0byBhcHBseSBkdXJpbmcgdGhlIElEQ1Qgc3RlcC4NCisgICAqIFZhbHVlcyBvZiAxLDIsNCw4IGFyZSBsaWtlbHkgdG8gYmUgc3VwcG9ydGVkLiAgTm90ZSB0aGF0IGRpZmZlcmVudA0KKyAgICogY29tcG9uZW50cyBtYXkgcmVjZWl2ZSBkaWZmZXJlbnQgSURDVCBzY2FsaW5ncy4NCisgICAqLw0KKyAgaW50IERDVF9zY2FsZWRfc2l6ZTsNCisgIC8qIFRoZSBkb3duc2FtcGxlZCBkaW1lbnNpb25zIGFyZSB0aGUgY29tcG9uZW50J3MgYWN0dWFsLCB1bnBhZGRlZCBudW1iZXINCisgICAqIG9mIHNhbXBsZXMgYXQgdGhlIG1haW4gYnVmZmVyIChwcmVwcm9jZXNzaW5nL2NvbXByZXNzaW9uIGludGVyZmFjZSksIHRodXMNCisgICAqIGRvd25zYW1wbGVkX3dpZHRoID0gY2VpbChpbWFnZV93aWR0aCAqIEhpL0htYXgpDQorICAgKiBhbmQgc2ltaWxhcmx5IGZvciBoZWlnaHQuICBGb3IgZGVjb21wcmVzc2lvbiwgSURDVCBzY2FsaW5nIGlzIGluY2x1ZGVkLCBzbw0KKyAgICogZG93bnNhbXBsZWRfd2lkdGggPSBjZWlsKGltYWdlX3dpZHRoICogSGkvSG1heCAqIERDVF9zY2FsZWRfc2l6ZS9EQ1RTSVpFKQ0KKyAgICovDQorICBKRElNRU5TSU9OIGRvd25zYW1wbGVkX3dpZHRoOwkgLyogYWN0dWFsIHdpZHRoIGluIHNhbXBsZXMgKi8NCisgIEpESU1FTlNJT04gZG93bnNhbXBsZWRfaGVpZ2h0OyAvKiBhY3R1YWwgaGVpZ2h0IGluIHNhbXBsZXMgKi8NCisgIC8qIFRoaXMgZmxhZyBpcyB1c2VkIG9ubHkgZm9yIGRlY29tcHJlc3Npb24uICBJbiBjYXNlcyB3aGVyZSBzb21lIG9mIHRoZQ0KKyAgICogY29tcG9uZW50cyB3aWxsIGJlIGlnbm9yZWQgKGVnIGdyYXlzY2FsZSBvdXRwdXQgZnJvbSBZQ2JDciBpbWFnZSksDQorICAgKiB3ZSBjYW4gc2tpcCBtb3N0IGNvbXB1dGF0aW9ucyBmb3IgdGhlIHVudXNlZCBjb21wb25lbnRzLg0KKyAgICovDQorICBib29sZWFuIGNvbXBvbmVudF9uZWVkZWQ7CS8qIGRvIHdlIG5lZWQgdGhlIHZhbHVlIG9mIHRoaXMgY29tcG9uZW50PyAqLw0KKw0KKyAgLyogVGhlc2UgdmFsdWVzIGFyZSBjb21wdXRlZCBiZWZvcmUgc3RhcnRpbmcgYSBzY2FuIG9mIHRoZSBjb21wb25lbnQuICovDQorICAvKiBUaGUgZGVjb21wcmVzc29yIG91dHB1dCBzaWRlIG1heSBub3QgdXNlIHRoZXNlIHZhcmlhYmxlcy4gKi8NCisgIGludCBNQ1Vfd2lkdGg7CQkvKiBudW1iZXIgb2YgYmxvY2tzIHBlciBNQ1UsIGhvcml6b250YWxseSAqLw0KKyAgaW50IE1DVV9oZWlnaHQ7CQkvKiBudW1iZXIgb2YgYmxvY2tzIHBlciBNQ1UsIHZlcnRpY2FsbHkgKi8NCisgIGludCBNQ1VfYmxvY2tzOwkJLyogTUNVX3dpZHRoICogTUNVX2hlaWdodCAqLw0KKyAgaW50IE1DVV9zYW1wbGVfd2lkdGg7CQkvKiBNQ1Ugd2lkdGggaW4gc2FtcGxlcywgTUNVX3dpZHRoKkRDVF9zY2FsZWRfc2l6ZSAqLw0KKyAgaW50IGxhc3RfY29sX3dpZHRoOwkJLyogIyBvZiBub24tZHVtbXkgYmxvY2tzIGFjcm9zcyBpbiBsYXN0IE1DVSAqLw0KKyAgaW50IGxhc3Rfcm93X2hlaWdodDsJCS8qICMgb2Ygbm9uLWR1bW15IGJsb2NrcyBkb3duIGluIGxhc3QgTUNVICovDQorDQorICAvKiBTYXZlZCBxdWFudGl6YXRpb24gdGFibGUgZm9yIGNvbXBvbmVudDsgTlVMTCBpZiBub25lIHlldCBzYXZlZC4NCisgICAqIFNlZSBqZGlucHV0LmMgY29tbWVudHMgYWJvdXQgdGhlIG5lZWQgZm9yIHRoaXMgaW5mb3JtYXRpb24uDQorICAgKiBUaGlzIGZpZWxkIGlzIGN1cnJlbnRseSB1c2VkIG9ubHkgZm9yIGRlY29tcHJlc3Npb24uDQorICAgKi8NCisgIEpRVUFOVF9UQkwgKiBxdWFudF90YWJsZTsNCisNCisgIC8qIFByaXZhdGUgcGVyLWNvbXBvbmVudCBzdG9yYWdlIGZvciBEQ1Qgb3IgSURDVCBzdWJzeXN0ZW0uICovDQorICB2b2lkICogZGN0X3RhYmxlOw0KK30ganBlZ19jb21wb25lbnRfaW5mbzsNCisNCisNCisvKiBUaGUgc2NyaXB0IGZvciBlbmNvZGluZyBhIG11bHRpcGxlLXNjYW4gZmlsZSBpcyBhbiBhcnJheSBvZiB0aGVzZTogKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBpbnQgY29tcHNfaW5fc2NhbjsJCS8qIG51bWJlciBvZiBjb21wb25lbnRzIGVuY29kZWQgaW4gdGhpcyBzY2FuICovDQorICBpbnQgY29tcG9uZW50X2luZGV4W01BWF9DT01QU19JTl9TQ0FOXTsgLyogdGhlaXIgU09GL2NvbXBfaW5mb1tdIGluZGV4ZXMgKi8NCisgIGludCBTcywgU2U7CQkJLyogcHJvZ3Jlc3NpdmUgSlBFRyBzcGVjdHJhbCBzZWxlY3Rpb24gcGFybXMgKi8NCisgIGludCBBaCwgQWw7CQkJLyogcHJvZ3Jlc3NpdmUgSlBFRyBzdWNjZXNzaXZlIGFwcHJveC4gcGFybXMgKi8NCit9IGpwZWdfc2Nhbl9pbmZvOw0KKw0KKy8qIFRoZSBkZWNvbXByZXNzb3IgY2FuIHNhdmUgQVBQbiBhbmQgQ09NIG1hcmtlcnMgaW4gYSBsaXN0IG9mIHRoZXNlOiAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IGpwZWdfbWFya2VyX3N0cnVjdCAgKiBqcGVnX3NhdmVkX21hcmtlcl9wdHI7DQorDQorc3RydWN0IGpwZWdfbWFya2VyX3N0cnVjdCB7DQorICBqcGVnX3NhdmVkX21hcmtlcl9wdHIgbmV4dDsJLyogbmV4dCBpbiBsaXN0LCBvciBOVUxMICovDQorICBVSU5UOCBtYXJrZXI7CQkJLyogbWFya2VyIGNvZGU6IEpQRUdfQ09NLCBvciBKUEVHX0FQUDArbiAqLw0KKyAgdW5zaWduZWQgaW50IG9yaWdpbmFsX2xlbmd0aDsJLyogIyBieXRlcyBvZiBkYXRhIGluIHRoZSBmaWxlICovDQorICB1bnNpZ25lZCBpbnQgZGF0YV9sZW5ndGg7CS8qICMgYnl0ZXMgb2YgZGF0YSBzYXZlZCBhdCBkYXRhW10gKi8NCisgIEpPQ1RFVCAgKiBkYXRhOwkJLyogdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBtYXJrZXIgKi8NCisgIC8qIHRoZSBtYXJrZXIgbGVuZ3RoIHdvcmQgaXMgbm90IGNvdW50ZWQgaW4gZGF0YV9sZW5ndGggb3Igb3JpZ2luYWxfbGVuZ3RoICovDQorfTsNCisNCisvKiBLbm93biBjb2xvciBzcGFjZXMuICovDQorDQordHlwZWRlZiBlbnVtIHsNCisJSkNTX1VOS05PV04sCQkvKiBlcnJvci91bnNwZWNpZmllZCAqLw0KKwlKQ1NfR1JBWVNDQUxFLAkJLyogbW9ub2Nocm9tZSAqLw0KKwlKQ1NfUkdCLAkJLyogcmVkL2dyZWVuL2JsdWUgKi8NCisJSkNTX1lDYkNyLAkJLyogWS9DYi9DciAoYWxzbyBrbm93biBhcyBZVVYpICovDQorCUpDU19DTVlLLAkJLyogQy9NL1kvSyAqLw0KKwlKQ1NfWUNDSwkJLyogWS9DYi9Dci9LICovDQorfSBKX0NPTE9SX1NQQUNFOw0KKw0KKy8qIERDVC9JRENUIGFsZ29yaXRobSBvcHRpb25zLiAqLw0KKw0KK3R5cGVkZWYgZW51bSB7DQorCUpEQ1RfSVNMT1csCQkvKiBzbG93IGJ1dCBhY2N1cmF0ZSBpbnRlZ2VyIGFsZ29yaXRobSAqLw0KKwlKRENUX0lGQVNULAkJLyogZmFzdGVyLCBsZXNzIGFjY3VyYXRlIGludGVnZXIgbWV0aG9kICovDQorCUpEQ1RfRkxPQVQJCS8qIGZsb2F0aW5nLXBvaW50OiBhY2N1cmF0ZSwgZmFzdCBvbiBmYXN0IEhXICovDQorfSBKX0RDVF9NRVRIT0Q7DQorDQorI2lmbmRlZiBKRENUX0RFRkFVTFQJCS8qIG1heSBiZSBvdmVycmlkZGVuIGluIGpjb25maWcuaCAqLw0KKyNkZWZpbmUgSkRDVF9ERUZBVUxUICBKRENUX0lTTE9XDQorI2VuZGlmDQorI2lmbmRlZiBKRENUX0ZBU1RFU1QJCS8qIG1heSBiZSBvdmVycmlkZGVuIGluIGpjb25maWcuaCAqLw0KKyNkZWZpbmUgSkRDVF9GQVNURVNUICBKRENUX0lGQVNUDQorI2VuZGlmDQorDQorLyogRGl0aGVyaW5nIG9wdGlvbnMgZm9yIGRlY29tcHJlc3Npb24uICovDQorDQordHlwZWRlZiBlbnVtIHsNCisJSkRJVEhFUl9OT05FLAkJLyogbm8gZGl0aGVyaW5nICovDQorCUpESVRIRVJfT1JERVJFRCwJLyogc2ltcGxlIG9yZGVyZWQgZGl0aGVyICovDQorCUpESVRIRVJfRlMJCS8qIEZsb3lkLVN0ZWluYmVyZyBlcnJvciBkaWZmdXNpb24gZGl0aGVyICovDQorfSBKX0RJVEhFUl9NT0RFOw0KKw0KKw0KKy8qIENvbW1vbiBmaWVsZHMgYmV0d2VlbiBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIG1hc3RlciBzdHJ1Y3RzLiAqLw0KKw0KKyNkZWZpbmUganBlZ19jb21tb25fZmllbGRzIFwNCisgIHN0cnVjdCBqcGVnX2Vycm9yX21nciAqIGVycjsJLyogRXJyb3IgaGFuZGxlciBtb2R1bGUgKi9cDQorICBzdHJ1Y3QganBlZ19tZW1vcnlfbWdyICogbWVtOwkvKiBNZW1vcnkgbWFuYWdlciBtb2R1bGUgKi9cDQorICBzdHJ1Y3QganBlZ19wcm9ncmVzc19tZ3IgKiBwcm9ncmVzczsgLyogUHJvZ3Jlc3MgbW9uaXRvciwgb3IgTlVMTCBpZiBub25lICovXA0KKyAgdm9pZCAqIGNsaWVudF9kYXRhOwkJLyogQXZhaWxhYmxlIGZvciB1c2UgYnkgYXBwbGljYXRpb24gKi9cDQorICBib29sZWFuIGlzX2RlY29tcHJlc3NvcjsJLyogU28gY29tbW9uIGNvZGUgY2FuIHRlbGwgd2hpY2ggaXMgd2hpY2ggKi9cDQorICBpbnQgZ2xvYmFsX3N0YXRlCQkvKiBGb3IgY2hlY2tpbmcgY2FsbCBzZXF1ZW5jZSB2YWxpZGl0eSAqLw0KKw0KKy8qIFJvdXRpbmVzIHRoYXQgYXJlIHRvIGJlIHVzZWQgYnkgYm90aCBoYWx2ZXMgb2YgdGhlIGxpYnJhcnkgYXJlIGRlY2xhcmVkDQorICogdG8gcmVjZWl2ZSBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUuICBUaGVyZSBhcmUgbm8gYWN0dWFsIGluc3RhbmNlcyBvZg0KKyAqIGpwZWdfY29tbW9uX3N0cnVjdCwgb25seSBvZiBqcGVnX2NvbXByZXNzX3N0cnVjdCBhbmQganBlZ19kZWNvbXByZXNzX3N0cnVjdC4NCisgKi8NCitzdHJ1Y3QganBlZ19jb21tb25fc3RydWN0IHsNCisgIGpwZWdfY29tbW9uX2ZpZWxkczsJCS8qIEZpZWxkcyBjb21tb24gdG8gYm90aCBtYXN0ZXIgc3RydWN0IHR5cGVzICovDQorICAvKiBBZGRpdGlvbmFsIGZpZWxkcyBmb2xsb3cgaW4gYW4gYWN0dWFsIGpwZWdfY29tcHJlc3Nfc3RydWN0IG9yDQorICAgKiBqcGVnX2RlY29tcHJlc3Nfc3RydWN0LiAgQWxsIHRocmVlIHN0cnVjdHMgbXVzdCBhZ3JlZSBvbiB0aGVzZQ0KKyAgICogaW5pdGlhbCBmaWVsZHMhICAoVGhpcyB3b3VsZCBiZSBhIGxvdCBjbGVhbmVyIGluIEMrKy4pDQorICAgKi8NCit9Ow0KKw0KK3R5cGVkZWYgc3RydWN0IGpwZWdfY29tbW9uX3N0cnVjdCAqIGpfY29tbW9uX3B0cjsNCit0eXBlZGVmIHN0cnVjdCBqcGVnX2NvbXByZXNzX3N0cnVjdCAqIGpfY29tcHJlc3NfcHRyOw0KK3R5cGVkZWYgc3RydWN0IGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QgKiBqX2RlY29tcHJlc3NfcHRyOw0KKw0KKw0KKy8qIE1hc3RlciByZWNvcmQgZm9yIGEgY29tcHJlc3Npb24gaW5zdGFuY2UgKi8NCisNCitzdHJ1Y3QganBlZ19jb21wcmVzc19zdHJ1Y3Qgew0KKyAganBlZ19jb21tb25fZmllbGRzOwkJLyogRmllbGRzIHNoYXJlZCB3aXRoIGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QgKi8NCisNCisgIC8qIERlc3RpbmF0aW9uIGZvciBjb21wcmVzc2VkIGRhdGEgKi8NCisgIHN0cnVjdCBqcGVnX2Rlc3RpbmF0aW9uX21nciAqIGRlc3Q7DQorDQorICAvKiBEZXNjcmlwdGlvbiBvZiBzb3VyY2UgaW1hZ2UgLS0tIHRoZXNlIGZpZWxkcyBtdXN0IGJlIGZpbGxlZCBpbiBieQ0KKyAgICogb3V0ZXIgYXBwbGljYXRpb24gYmVmb3JlIHN0YXJ0aW5nIGNvbXByZXNzaW9uLiAgaW5fY29sb3Jfc3BhY2UgbXVzdA0KKyAgICogYmUgY29ycmVjdCBiZWZvcmUgeW91IGNhbiBldmVuIGNhbGwganBlZ19zZXRfZGVmYXVsdHMoKS4NCisgICAqLw0KKw0KKyAgSkRJTUVOU0lPTiBpbWFnZV93aWR0aDsJLyogaW5wdXQgaW1hZ2Ugd2lkdGggKi8NCisgIEpESU1FTlNJT04gaW1hZ2VfaGVpZ2h0OwkvKiBpbnB1dCBpbWFnZSBoZWlnaHQgKi8NCisgIGludCBpbnB1dF9jb21wb25lbnRzOwkJLyogIyBvZiBjb2xvciBjb21wb25lbnRzIGluIGlucHV0IGltYWdlICovDQorICBKX0NPTE9SX1NQQUNFIGluX2NvbG9yX3NwYWNlOwkvKiBjb2xvcnNwYWNlIG9mIGlucHV0IGltYWdlICovDQorDQorICBkb3VibGUgaW5wdXRfZ2FtbWE7CQkvKiBpbWFnZSBnYW1tYSBvZiBpbnB1dCBpbWFnZSAqLw0KKw0KKyAgLyogQ29tcHJlc3Npb24gcGFyYW1ldGVycyAtLS0gdGhlc2UgZmllbGRzIG11c3QgYmUgc2V0IGJlZm9yZSBjYWxsaW5nDQorICAgKiBqcGVnX3N0YXJ0X2NvbXByZXNzKCkuICBXZSByZWNvbW1lbmQgY2FsbGluZyBqcGVnX3NldF9kZWZhdWx0cygpIHRvDQorICAgKiBpbml0aWFsaXplIGV2ZXJ5dGhpbmcgdG8gcmVhc29uYWJsZSBkZWZhdWx0cywgdGhlbiBjaGFuZ2luZyBhbnl0aGluZw0KKyAgICogdGhlIGFwcGxpY2F0aW9uIHNwZWNpZmljYWxseSB3YW50cyB0byBjaGFuZ2UuICBUaGF0IHdheSB5b3Ugd29uJ3QgZ2V0DQorICAgKiBidXJudCB3aGVuIG5ldyBwYXJhbWV0ZXJzIGFyZSBhZGRlZC4gIEFsc28gbm90ZSB0aGF0IHRoZXJlIGFyZSBzZXZlcmFsDQorICAgKiBoZWxwZXIgcm91dGluZXMgdG8gc2ltcGxpZnkgY2hhbmdpbmcgcGFyYW1ldGVycy4NCisgICAqLw0KKw0KKyAgaW50IGRhdGFfcHJlY2lzaW9uOwkJLyogYml0cyBvZiBwcmVjaXNpb24gaW4gaW1hZ2UgZGF0YSAqLw0KKw0KKyAgaW50IG51bV9jb21wb25lbnRzOwkJLyogIyBvZiBjb2xvciBjb21wb25lbnRzIGluIEpQRUcgaW1hZ2UgKi8NCisgIEpfQ09MT1JfU1BBQ0UganBlZ19jb2xvcl9zcGFjZTsgLyogY29sb3JzcGFjZSBvZiBKUEVHIGltYWdlICovDQorDQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcF9pbmZvOw0KKyAgLyogY29tcF9pbmZvW2ldIGRlc2NyaWJlcyBjb21wb25lbnQgdGhhdCBhcHBlYXJzIGkndGggaW4gU09GICovDQorICANCisgIEpRVUFOVF9UQkwgKiBxdWFudF90YmxfcHRyc1tOVU1fUVVBTlRfVEJMU107DQorICAvKiBwdHJzIHRvIGNvZWZmaWNpZW50IHF1YW50aXphdGlvbiB0YWJsZXMsIG9yIE5VTEwgaWYgbm90IGRlZmluZWQgKi8NCisgIA0KKyAgSkhVRkZfVEJMICogZGNfaHVmZl90YmxfcHRyc1tOVU1fSFVGRl9UQkxTXTsNCisgIEpIVUZGX1RCTCAqIGFjX2h1ZmZfdGJsX3B0cnNbTlVNX0hVRkZfVEJMU107DQorICAvKiBwdHJzIHRvIEh1ZmZtYW4gY29kaW5nIHRhYmxlcywgb3IgTlVMTCBpZiBub3QgZGVmaW5lZCAqLw0KKyAgDQorICBVSU5UOCBhcml0aF9kY19MW05VTV9BUklUSF9UQkxTXTsgLyogTCB2YWx1ZXMgZm9yIERDIGFyaXRoLWNvZGluZyB0YWJsZXMgKi8NCisgIFVJTlQ4IGFyaXRoX2RjX1VbTlVNX0FSSVRIX1RCTFNdOyAvKiBVIHZhbHVlcyBmb3IgREMgYXJpdGgtY29kaW5nIHRhYmxlcyAqLw0KKyAgVUlOVDggYXJpdGhfYWNfS1tOVU1fQVJJVEhfVEJMU107IC8qIEt4IHZhbHVlcyBmb3IgQUMgYXJpdGgtY29kaW5nIHRhYmxlcyAqLw0KKw0KKyAgaW50IG51bV9zY2FuczsJCS8qICMgb2YgZW50cmllcyBpbiBzY2FuX2luZm8gYXJyYXkgKi8NCisgIGNvbnN0IGpwZWdfc2Nhbl9pbmZvICogc2Nhbl9pbmZvOyAvKiBzY3JpcHQgZm9yIG11bHRpLXNjYW4gZmlsZSwgb3IgTlVMTCAqLw0KKyAgLyogVGhlIGRlZmF1bHQgdmFsdWUgb2Ygc2Nhbl9pbmZvIGlzIE5VTEwsIHdoaWNoIGNhdXNlcyBhIHNpbmdsZS1zY2FuDQorICAgKiBzZXF1ZW50aWFsIEpQRUcgZmlsZSB0byBiZSBlbWl0dGVkLiAgVG8gY3JlYXRlIGEgbXVsdGktc2NhbiBmaWxlLA0KKyAgICogc2V0IG51bV9zY2FucyBhbmQgc2Nhbl9pbmZvIHRvIHBvaW50IHRvIGFuIGFycmF5IG9mIHNjYW4gZGVmaW5pdGlvbnMuDQorICAgKi8NCisNCisgIGJvb2xlYW4gcmF3X2RhdGFfaW47CQkvKiBUUlVFPWNhbGxlciBzdXBwbGllcyBkb3duc2FtcGxlZCBkYXRhICovDQorICBib29sZWFuIGFyaXRoX2NvZGU7CQkvKiBUUlVFPWFyaXRobWV0aWMgY29kaW5nLCBGQUxTRT1IdWZmbWFuICovDQorICBib29sZWFuIG9wdGltaXplX2NvZGluZzsJLyogVFJVRT1vcHRpbWl6ZSBlbnRyb3B5IGVuY29kaW5nIHBhcm1zICovDQorICBib29sZWFuIENDSVI2MDFfc2FtcGxpbmc7CS8qIFRSVUU9Zmlyc3Qgc2FtcGxlcyBhcmUgY29zaXRlZCAqLw0KKyAgaW50IHNtb290aGluZ19mYWN0b3I7CQkvKiAxLi4xMDAsIG9yIDAgZm9yIG5vIGlucHV0IHNtb290aGluZyAqLw0KKyAgSl9EQ1RfTUVUSE9EIGRjdF9tZXRob2Q7CS8qIERDVCBhbGdvcml0aG0gc2VsZWN0b3IgKi8NCisNCisgIC8qIFRoZSByZXN0YXJ0IGludGVydmFsIGNhbiBiZSBzcGVjaWZpZWQgaW4gYWJzb2x1dGUgTUNVcyBieSBzZXR0aW5nDQorICAgKiByZXN0YXJ0X2ludGVydmFsLCBvciBpbiBNQ1Ugcm93cyBieSBzZXR0aW5nIHJlc3RhcnRfaW5fcm93cw0KKyAgICogKGluIHdoaWNoIGNhc2UgdGhlIGNvcnJlY3QgcmVzdGFydF9pbnRlcnZhbCB3aWxsIGJlIGZpZ3VyZWQNCisgICAqIGZvciBlYWNoIHNjYW4pLg0KKyAgICovDQorICB1bnNpZ25lZCBpbnQgcmVzdGFydF9pbnRlcnZhbDsgLyogTUNVcyBwZXIgcmVzdGFydCwgb3IgMCBmb3Igbm8gcmVzdGFydCAqLw0KKyAgaW50IHJlc3RhcnRfaW5fcm93czsJCS8qIGlmID4gMCwgTUNVIHJvd3MgcGVyIHJlc3RhcnQgaW50ZXJ2YWwgKi8NCisNCisgIC8qIFBhcmFtZXRlcnMgY29udHJvbGxpbmcgZW1pc3Npb24gb2Ygc3BlY2lhbCBtYXJrZXJzLiAqLw0KKw0KKyAgYm9vbGVhbiB3cml0ZV9KRklGX2hlYWRlcjsJLyogc2hvdWxkIGEgSkZJRiBtYXJrZXIgYmUgd3JpdHRlbj8gKi8NCisgIFVJTlQ4IEpGSUZfbWFqb3JfdmVyc2lvbjsJLyogV2hhdCB0byB3cml0ZSBmb3IgdGhlIEpGSUYgdmVyc2lvbiBudW1iZXIgKi8NCisgIFVJTlQ4IEpGSUZfbWlub3JfdmVyc2lvbjsNCisgIC8qIFRoZXNlIHRocmVlIHZhbHVlcyBhcmUgbm90IHVzZWQgYnkgdGhlIEpQRUcgY29kZSwgbWVyZWx5IGNvcGllZCAqLw0KKyAgLyogaW50byB0aGUgSkZJRiBBUFAwIG1hcmtlci4gIGRlbnNpdHlfdW5pdCBjYW4gYmUgMCBmb3IgdW5rbm93biwgKi8NCisgIC8qIDEgZm9yIGRvdHMvaW5jaCwgb3IgMiBmb3IgZG90cy9jbS4gIE5vdGUgdGhhdCB0aGUgcGl4ZWwgYXNwZWN0ICovDQorICAvKiByYXRpbyBpcyBkZWZpbmVkIGJ5IFhfZGVuc2l0eS9ZX2RlbnNpdHkgZXZlbiB3aGVuIGRlbnNpdHlfdW5pdD0wLiAqLw0KKyAgVUlOVDggZGVuc2l0eV91bml0OwkJLyogSkZJRiBjb2RlIGZvciBwaXhlbCBzaXplIHVuaXRzICovDQorICBVSU5UMTYgWF9kZW5zaXR5OwkJLyogSG9yaXpvbnRhbCBwaXhlbCBkZW5zaXR5ICovDQorICBVSU5UMTYgWV9kZW5zaXR5OwkJLyogVmVydGljYWwgcGl4ZWwgZGVuc2l0eSAqLw0KKyAgYm9vbGVhbiB3cml0ZV9BZG9iZV9tYXJrZXI7CS8qIHNob3VsZCBhbiBBZG9iZSBtYXJrZXIgYmUgd3JpdHRlbj8gKi8NCisgIA0KKyAgLyogU3RhdGUgdmFyaWFibGU6IGluZGV4IG9mIG5leHQgc2NhbmxpbmUgdG8gYmUgd3JpdHRlbiB0bw0KKyAgICoganBlZ193cml0ZV9zY2FubGluZXMoKS4gIEFwcGxpY2F0aW9uIG1heSB1c2UgdGhpcyB0byBjb250cm9sIGl0cw0KKyAgICogcHJvY2Vzc2luZyBsb29wLCBlLmcuLCAid2hpbGUgKG5leHRfc2NhbmxpbmUgPCBpbWFnZV9oZWlnaHQpIi4NCisgICAqLw0KKw0KKyAgSkRJTUVOU0lPTiBuZXh0X3NjYW5saW5lOwkvKiAwIC4uIGltYWdlX2hlaWdodC0xICAqLw0KKw0KKyAgLyogUmVtYWluaW5nIGZpZWxkcyBhcmUga25vd24gdGhyb3VnaG91dCBjb21wcmVzc29yLCBidXQgZ2VuZXJhbGx5DQorICAgKiBzaG91bGQgbm90IGJlIHRvdWNoZWQgYnkgYSBzdXJyb3VuZGluZyBhcHBsaWNhdGlvbi4NCisgICAqLw0KKw0KKyAgLyoNCisgICAqIFRoZXNlIGZpZWxkcyBhcmUgY29tcHV0ZWQgZHVyaW5nIGNvbXByZXNzaW9uIHN0YXJ0dXANCisgICAqLw0KKyAgYm9vbGVhbiBwcm9ncmVzc2l2ZV9tb2RlOwkvKiBUUlVFIGlmIHNjYW4gc2NyaXB0IHVzZXMgcHJvZ3Jlc3NpdmUgbW9kZSAqLw0KKyAgaW50IG1heF9oX3NhbXBfZmFjdG9yOwkvKiBsYXJnZXN0IGhfc2FtcF9mYWN0b3IgKi8NCisgIGludCBtYXhfdl9zYW1wX2ZhY3RvcjsJLyogbGFyZ2VzdCB2X3NhbXBfZmFjdG9yICovDQorDQorICBKRElNRU5TSU9OIHRvdGFsX2lNQ1Vfcm93czsJLyogIyBvZiBpTUNVIHJvd3MgdG8gYmUgaW5wdXQgdG8gY29lZiBjdGxyICovDQorICAvKiBUaGUgY29lZmZpY2llbnQgY29udHJvbGxlciByZWNlaXZlcyBkYXRhIGluIHVuaXRzIG9mIE1DVSByb3dzIGFzIGRlZmluZWQNCisgICAqIGZvciBmdWxseSBpbnRlcmxlYXZlZCBzY2FucyAod2hldGhlciB0aGUgSlBFRyBmaWxlIGlzIGludGVybGVhdmVkIG9yIG5vdCkuDQorICAgKiBUaGVyZSBhcmUgdl9zYW1wX2ZhY3RvciAqIERDVFNJWkUgc2FtcGxlIHJvd3Mgb2YgZWFjaCBjb21wb25lbnQgaW4gYW4NCisgICAqICJpTUNVIiAoaW50ZXJsZWF2ZWQgTUNVKSByb3cuDQorICAgKi8NCisgIA0KKyAgLyoNCisgICAqIFRoZXNlIGZpZWxkcyBhcmUgdmFsaWQgZHVyaW5nIGFueSBvbmUgc2Nhbi4NCisgICAqIFRoZXkgZGVzY3JpYmUgdGhlIGNvbXBvbmVudHMgYW5kIE1DVXMgYWN0dWFsbHkgYXBwZWFyaW5nIGluIHRoZSBzY2FuLg0KKyAgICovDQorICBpbnQgY29tcHNfaW5fc2NhbjsJCS8qICMgb2YgSlBFRyBjb21wb25lbnRzIGluIHRoaXMgc2NhbiAqLw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqIGN1cl9jb21wX2luZm9bTUFYX0NPTVBTX0lOX1NDQU5dOw0KKyAgLyogKmN1cl9jb21wX2luZm9baV0gZGVzY3JpYmVzIGNvbXBvbmVudCB0aGF0IGFwcGVhcnMgaSd0aCBpbiBTT1MgKi8NCisgIA0KKyAgSkRJTUVOU0lPTiBNQ1VzX3Blcl9yb3c7CS8qICMgb2YgTUNVcyBhY3Jvc3MgdGhlIGltYWdlICovDQorICBKRElNRU5TSU9OIE1DVV9yb3dzX2luX3NjYW47CS8qICMgb2YgTUNVIHJvd3MgaW4gdGhlIGltYWdlICovDQorICANCisgIGludCBibG9ja3NfaW5fTUNVOwkJLyogIyBvZiBEQ1QgYmxvY2tzIHBlciBNQ1UgKi8NCisgIGludCBNQ1VfbWVtYmVyc2hpcFtDX01BWF9CTE9DS1NfSU5fTUNVXTsNCisgIC8qIE1DVV9tZW1iZXJzaGlwW2ldIGlzIGluZGV4IGluIGN1cl9jb21wX2luZm8gb2YgY29tcG9uZW50IG93bmluZyAqLw0KKyAgLyogaSd0aCBibG9jayBpbiBhbiBNQ1UgKi8NCisNCisgIGludCBTcywgU2UsIEFoLCBBbDsJCS8qIHByb2dyZXNzaXZlIEpQRUcgcGFyYW1ldGVycyBmb3Igc2NhbiAqLw0KKw0KKyAgLyoNCisgICAqIExpbmtzIHRvIGNvbXByZXNzaW9uIHN1Ym9iamVjdHMgKG1ldGhvZHMgYW5kIHByaXZhdGUgdmFyaWFibGVzIG9mIG1vZHVsZXMpDQorICAgKi8NCisgIHN0cnVjdCBqcGVnX2NvbXBfbWFzdGVyICogbWFzdGVyOw0KKyAgc3RydWN0IGpwZWdfY19tYWluX2NvbnRyb2xsZXIgKiBtYWluOw0KKyAgc3RydWN0IGpwZWdfY19wcmVwX2NvbnRyb2xsZXIgKiBwcmVwOw0KKyAgc3RydWN0IGpwZWdfY19jb2VmX2NvbnRyb2xsZXIgKiBjb2VmOw0KKyAgc3RydWN0IGpwZWdfbWFya2VyX3dyaXRlciAqIG1hcmtlcjsNCisgIHN0cnVjdCBqcGVnX2NvbG9yX2NvbnZlcnRlciAqIGNjb252ZXJ0Ow0KKyAgc3RydWN0IGpwZWdfZG93bnNhbXBsZXIgKiBkb3duc2FtcGxlOw0KKyAgc3RydWN0IGpwZWdfZm9yd2FyZF9kY3QgKiBmZGN0Ow0KKyAgc3RydWN0IGpwZWdfZW50cm9weV9lbmNvZGVyICogZW50cm9weTsNCisgIGpwZWdfc2Nhbl9pbmZvICogc2NyaXB0X3NwYWNlOyAvKiB3b3Jrc3BhY2UgZm9yIGpwZWdfc2ltcGxlX3Byb2dyZXNzaW9uICovDQorICBpbnQgc2NyaXB0X3NwYWNlX3NpemU7DQorfTsNCisNCisNCisvKiBNYXN0ZXIgcmVjb3JkIGZvciBhIGRlY29tcHJlc3Npb24gaW5zdGFuY2UgKi8NCisNCitzdHJ1Y3QganBlZ19kZWNvbXByZXNzX3N0cnVjdCB7DQorICBqcGVnX2NvbW1vbl9maWVsZHM7CQkvKiBGaWVsZHMgc2hhcmVkIHdpdGgganBlZ19jb21wcmVzc19zdHJ1Y3QgKi8NCisNCisgIC8qIFNvdXJjZSBvZiBjb21wcmVzc2VkIGRhdGEgKi8NCisgIHN0cnVjdCBqcGVnX3NvdXJjZV9tZ3IgKiBzcmM7DQorDQorICAvKiBCYXNpYyBkZXNjcmlwdGlvbiBvZiBpbWFnZSAtLS0gZmlsbGVkIGluIGJ5IGpwZWdfcmVhZF9oZWFkZXIoKS4gKi8NCisgIC8qIEFwcGxpY2F0aW9uIG1heSBpbnNwZWN0IHRoZXNlIHZhbHVlcyB0byBkZWNpZGUgaG93IHRvIHByb2Nlc3MgaW1hZ2UuICovDQorDQorICBKRElNRU5TSU9OIGltYWdlX3dpZHRoOwkvKiBub21pbmFsIGltYWdlIHdpZHRoIChmcm9tIFNPRiBtYXJrZXIpICovDQorICBKRElNRU5TSU9OIGltYWdlX2hlaWdodDsJLyogbm9taW5hbCBpbWFnZSBoZWlnaHQgKi8NCisgIGludCBudW1fY29tcG9uZW50czsJCS8qICMgb2YgY29sb3IgY29tcG9uZW50cyBpbiBKUEVHIGltYWdlICovDQorICBKX0NPTE9SX1NQQUNFIGpwZWdfY29sb3Jfc3BhY2U7IC8qIGNvbG9yc3BhY2Ugb2YgSlBFRyBpbWFnZSAqLw0KKw0KKyAgLyogRGVjb21wcmVzc2lvbiBwcm9jZXNzaW5nIHBhcmFtZXRlcnMgLS0tIHRoZXNlIGZpZWxkcyBtdXN0IGJlIHNldCBiZWZvcmUNCisgICAqIGNhbGxpbmcganBlZ19zdGFydF9kZWNvbXByZXNzKCkuICBOb3RlIHRoYXQganBlZ19yZWFkX2hlYWRlcigpIGluaXRpYWxpemVzDQorICAgKiB0aGVtIHRvIGRlZmF1bHQgdmFsdWVzLg0KKyAgICovDQorDQorICBKX0NPTE9SX1NQQUNFIG91dF9jb2xvcl9zcGFjZTsgLyogY29sb3JzcGFjZSBmb3Igb3V0cHV0ICovDQorDQorICB1bnNpZ25lZCBpbnQgc2NhbGVfbnVtLCBzY2FsZV9kZW5vbTsgLyogZnJhY3Rpb24gYnkgd2hpY2ggdG8gc2NhbGUgaW1hZ2UgKi8NCisNCisgIGRvdWJsZSBvdXRwdXRfZ2FtbWE7CQkvKiBpbWFnZSBnYW1tYSB3YW50ZWQgaW4gb3V0cHV0ICovDQorDQorICBib29sZWFuIGJ1ZmZlcmVkX2ltYWdlOwkvKiBUUlVFPW11bHRpcGxlIG91dHB1dCBwYXNzZXMgKi8NCisgIGJvb2xlYW4gcmF3X2RhdGFfb3V0OwkJLyogVFJVRT1kb3duc2FtcGxlZCBkYXRhIHdhbnRlZCAqLw0KKw0KKyAgSl9EQ1RfTUVUSE9EIGRjdF9tZXRob2Q7CS8qIElEQ1QgYWxnb3JpdGhtIHNlbGVjdG9yICovDQorICBib29sZWFuIGRvX2ZhbmN5X3Vwc2FtcGxpbmc7CS8qIFRSVUU9YXBwbHkgZmFuY3kgdXBzYW1wbGluZyAqLw0KKyAgYm9vbGVhbiBkb19ibG9ja19zbW9vdGhpbmc7CS8qIFRSVUU9YXBwbHkgaW50ZXJibG9jayBzbW9vdGhpbmcgKi8NCisNCisgIGJvb2xlYW4gcXVhbnRpemVfY29sb3JzOwkvKiBUUlVFPWNvbG9ybWFwcGVkIG91dHB1dCB3YW50ZWQgKi8NCisgIC8qIHRoZSBmb2xsb3dpbmcgYXJlIGlnbm9yZWQgaWYgbm90IHF1YW50aXplX2NvbG9yczogKi8NCisgIEpfRElUSEVSX01PREUgZGl0aGVyX21vZGU7CS8qIHR5cGUgb2YgY29sb3IgZGl0aGVyaW5nIHRvIHVzZSAqLw0KKyAgYm9vbGVhbiB0d29fcGFzc19xdWFudGl6ZTsJLyogVFJVRT11c2UgdHdvLXBhc3MgY29sb3IgcXVhbnRpemF0aW9uICovDQorICBpbnQgZGVzaXJlZF9udW1iZXJfb2ZfY29sb3JzOwkvKiBtYXggIyBjb2xvcnMgdG8gdXNlIGluIGNyZWF0ZWQgY29sb3JtYXAgKi8NCisgIC8qIHRoZXNlIGFyZSBzaWduaWZpY2FudCBvbmx5IGluIGJ1ZmZlcmVkLWltYWdlIG1vZGU6ICovDQorICBib29sZWFuIGVuYWJsZV8xcGFzc19xdWFudDsJLyogZW5hYmxlIGZ1dHVyZSB1c2Ugb2YgMS1wYXNzIHF1YW50aXplciAqLw0KKyAgYm9vbGVhbiBlbmFibGVfZXh0ZXJuYWxfcXVhbnQ7LyogZW5hYmxlIGZ1dHVyZSB1c2Ugb2YgZXh0ZXJuYWwgY29sb3JtYXAgKi8NCisgIGJvb2xlYW4gZW5hYmxlXzJwYXNzX3F1YW50OwkvKiBlbmFibGUgZnV0dXJlIHVzZSBvZiAyLXBhc3MgcXVhbnRpemVyICovDQorDQorICAvKiBEZXNjcmlwdGlvbiBvZiBhY3R1YWwgb3V0cHV0IGltYWdlIHRoYXQgd2lsbCBiZSByZXR1cm5lZCB0byBhcHBsaWNhdGlvbi4NCisgICAqIFRoZXNlIGZpZWxkcyBhcmUgY29tcHV0ZWQgYnkganBlZ19zdGFydF9kZWNvbXByZXNzKCkuDQorICAgKiBZb3UgY2FuIGFsc28gdXNlIGpwZWdfY2FsY19vdXRwdXRfZGltZW5zaW9ucygpIHRvIGRldGVybWluZSB0aGVzZSB2YWx1ZXMNCisgICAqIGluIGFkdmFuY2Ugb2YgY2FsbGluZyBqcGVnX3N0YXJ0X2RlY29tcHJlc3MoKS4NCisgICAqLw0KKw0KKyAgSkRJTUVOU0lPTiBvdXRwdXRfd2lkdGg7CS8qIHNjYWxlZCBpbWFnZSB3aWR0aCAqLw0KKyAgSkRJTUVOU0lPTiBvdXRwdXRfaGVpZ2h0OwkvKiBzY2FsZWQgaW1hZ2UgaGVpZ2h0ICovDQorICBpbnQgb3V0X2NvbG9yX2NvbXBvbmVudHM7CS8qICMgb2YgY29sb3IgY29tcG9uZW50cyBpbiBvdXRfY29sb3Jfc3BhY2UgKi8NCisgIGludCBvdXRwdXRfY29tcG9uZW50czsJLyogIyBvZiBjb2xvciBjb21wb25lbnRzIHJldHVybmVkICovDQorICAvKiBvdXRwdXRfY29tcG9uZW50cyBpcyAxIChhIGNvbG9ybWFwIGluZGV4KSB3aGVuIHF1YW50aXppbmcgY29sb3JzOw0KKyAgICogb3RoZXJ3aXNlIGl0IGVxdWFscyBvdXRfY29sb3JfY29tcG9uZW50cy4NCisgICAqLw0KKyAgaW50IHJlY19vdXRidWZfaGVpZ2h0OwkvKiBtaW4gcmVjb21tZW5kZWQgaGVpZ2h0IG9mIHNjYW5saW5lIGJ1ZmZlciAqLw0KKyAgLyogSWYgdGhlIGJ1ZmZlciBwYXNzZWQgdG8ganBlZ19yZWFkX3NjYW5saW5lcygpIGlzIGxlc3MgdGhhbiB0aGlzIG1hbnkgcm93cw0KKyAgICogaGlnaCwgc3BhY2UgYW5kIHRpbWUgd2lsbCBiZSB3YXN0ZWQgZHVlIHRvIHVubmVjZXNzYXJ5IGRhdGEgY29weWluZy4NCisgICAqIFVzdWFsbHkgcmVjX291dGJ1Zl9oZWlnaHQgd2lsbCBiZSAxIG9yIDIsIGF0IG1vc3QgNC4NCisgICAqLw0KKw0KKyAgLyogV2hlbiBxdWFudGl6aW5nIGNvbG9ycywgdGhlIG91dHB1dCBjb2xvcm1hcCBpcyBkZXNjcmliZWQgYnkgdGhlc2UgZmllbGRzLg0KKyAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBzdXBwbHkgYSBjb2xvcm1hcCBieSBzZXR0aW5nIGNvbG9ybWFwIG5vbi1OVUxMIGJlZm9yZQ0KKyAgICogY2FsbGluZyBqcGVnX3N0YXJ0X2RlY29tcHJlc3M7IG90aGVyd2lzZSBhIGNvbG9ybWFwIGlzIGNyZWF0ZWQgZHVyaW5nDQorICAgKiBqcGVnX3N0YXJ0X2RlY29tcHJlc3Mgb3IganBlZ19zdGFydF9vdXRwdXQuDQorICAgKiBUaGUgbWFwIGhhcyBvdXRfY29sb3JfY29tcG9uZW50cyByb3dzIGFuZCBhY3R1YWxfbnVtYmVyX29mX2NvbG9ycyBjb2x1bW5zLg0KKyAgICovDQorICBpbnQgYWN0dWFsX251bWJlcl9vZl9jb2xvcnM7CS8qIG51bWJlciBvZiBlbnRyaWVzIGluIHVzZSAqLw0KKyAgSlNBTVBBUlJBWSBjb2xvcm1hcDsJCS8qIFRoZSBjb2xvciBtYXAgYXMgYSAyLUQgcGl4ZWwgYXJyYXkgKi8NCisNCisgIC8qIFN0YXRlIHZhcmlhYmxlczogdGhlc2UgdmFyaWFibGVzIGluZGljYXRlIHRoZSBwcm9ncmVzcyBvZiBkZWNvbXByZXNzaW9uLg0KKyAgICogVGhlIGFwcGxpY2F0aW9uIG1heSBleGFtaW5lIHRoZXNlIGJ1dCBtdXN0IG5vdCBtb2RpZnkgdGhlbS4NCisgICAqLw0KKw0KKyAgLyogUm93IGluZGV4IG9mIG5leHQgc2NhbmxpbmUgdG8gYmUgcmVhZCBmcm9tIGpwZWdfcmVhZF9zY2FubGluZXMoKS4NCisgICAqIEFwcGxpY2F0aW9uIG1heSB1c2UgdGhpcyB0byBjb250cm9sIGl0cyBwcm9jZXNzaW5nIGxvb3AsIGUuZy4sDQorICAgKiAid2hpbGUgKG91dHB1dF9zY2FubGluZSA8IG91dHB1dF9oZWlnaHQpIi4NCisgICAqLw0KKyAgSkRJTUVOU0lPTiBvdXRwdXRfc2NhbmxpbmU7CS8qIDAgLi4gb3V0cHV0X2hlaWdodC0xICAqLw0KKw0KKyAgLyogQ3VycmVudCBpbnB1dCBzY2FuIG51bWJlciBhbmQgbnVtYmVyIG9mIGlNQ1Ugcm93cyBjb21wbGV0ZWQgaW4gc2Nhbi4NCisgICAqIFRoZXNlIGluZGljYXRlIHRoZSBwcm9ncmVzcyBvZiB0aGUgZGVjb21wcmVzc29yIGlucHV0IHNpZGUuDQorICAgKi8NCisgIGludCBpbnB1dF9zY2FuX251bWJlcjsJLyogTnVtYmVyIG9mIFNPUyBtYXJrZXJzIHNlZW4gc28gZmFyICovDQorICBKRElNRU5TSU9OIGlucHV0X2lNQ1Vfcm93OwkvKiBOdW1iZXIgb2YgaU1DVSByb3dzIGNvbXBsZXRlZCAqLw0KKw0KKyAgLyogVGhlICJvdXRwdXQgc2NhbiBudW1iZXIiIGlzIHRoZSBub3Rpb25hbCBzY2FuIGJlaW5nIGRpc3BsYXllZCBieSB0aGUNCisgICAqIG91dHB1dCBzaWRlLiAgVGhlIGRlY29tcHJlc3NvciB3aWxsIG5vdCBhbGxvdyBvdXRwdXQgc2Nhbi9yb3cgbnVtYmVyDQorICAgKiB0byBnZXQgYWhlYWQgb2YgaW5wdXQgc2Nhbi9yb3csIGJ1dCBpdCBjYW4gZmFsbCBhcmJpdHJhcmlseSBmYXIgYmVoaW5kLg0KKyAgICovDQorICBpbnQgb3V0cHV0X3NjYW5fbnVtYmVyOwkvKiBOb21pbmFsIHNjYW4gbnVtYmVyIGJlaW5nIGRpc3BsYXllZCAqLw0KKyAgSkRJTUVOU0lPTiBvdXRwdXRfaU1DVV9yb3c7CS8qIE51bWJlciBvZiBpTUNVIHJvd3MgcmVhZCAqLw0KKw0KKyAgLyogQ3VycmVudCBwcm9ncmVzc2lvbiBzdGF0dXMuICBjb2VmX2JpdHNbY11baV0gaW5kaWNhdGVzIHRoZSBwcmVjaXNpb24NCisgICAqIHdpdGggd2hpY2ggY29tcG9uZW50IGMncyBEQ1QgY29lZmZpY2llbnQgaSAoaW4gemlnemFnIG9yZGVyKSBpcyBrbm93bi4NCisgICAqIEl0IGlzIC0xIHdoZW4gbm8gZGF0YSBoYXMgeWV0IGJlZW4gcmVjZWl2ZWQsIG90aGVyd2lzZSBpdCBpcyB0aGUgcG9pbnQNCisgICAqIHRyYW5zZm9ybSAoc2hpZnQpIHZhbHVlIGZvciB0aGUgbW9zdCByZWNlbnQgc2NhbiBvZiB0aGUgY29lZmZpY2llbnQNCisgICAqICh0aHVzLCAwIGF0IGNvbXBsZXRpb24gb2YgdGhlIHByb2dyZXNzaW9uKS4NCisgICAqIFRoaXMgcG9pbnRlciBpcyBOVUxMIHdoZW4gcmVhZGluZyBhIG5vbi1wcm9ncmVzc2l2ZSBmaWxlLg0KKyAgICovDQorICBpbnQgKCpjb2VmX2JpdHMpW0RDVFNJWkUyXTsJLyogLTEgb3IgY3VycmVudCBBbCB2YWx1ZSBmb3IgZWFjaCBjb2VmICovDQorDQorICAvKiBJbnRlcm5hbCBKUEVHIHBhcmFtZXRlcnMgLS0tIHRoZSBhcHBsaWNhdGlvbiB1c3VhbGx5IG5lZWQgbm90IGxvb2sgYXQNCisgICAqIHRoZXNlIGZpZWxkcy4gIE5vdGUgdGhhdCB0aGUgZGVjb21wcmVzc29yIG91dHB1dCBzaWRlIG1heSBub3QgdXNlDQorICAgKiBhbnkgcGFyYW1ldGVycyB0aGF0IGNhbiBjaGFuZ2UgYmV0d2VlbiBzY2Fucy4NCisgICAqLw0KKw0KKyAgLyogUXVhbnRpemF0aW9uIGFuZCBIdWZmbWFuIHRhYmxlcyBhcmUgY2FycmllZCBmb3J3YXJkIGFjcm9zcyBpbnB1dA0KKyAgICogZGF0YXN0cmVhbXMgd2hlbiBwcm9jZXNzaW5nIGFiYnJldmlhdGVkIEpQRUcgZGF0YXN0cmVhbXMuDQorICAgKi8NCisNCisgIEpRVUFOVF9UQkwgKiBxdWFudF90YmxfcHRyc1tOVU1fUVVBTlRfVEJMU107DQorICAvKiBwdHJzIHRvIGNvZWZmaWNpZW50IHF1YW50aXphdGlvbiB0YWJsZXMsIG9yIE5VTEwgaWYgbm90IGRlZmluZWQgKi8NCisNCisgIEpIVUZGX1RCTCAqIGRjX2h1ZmZfdGJsX3B0cnNbTlVNX0hVRkZfVEJMU107DQorICBKSFVGRl9UQkwgKiBhY19odWZmX3RibF9wdHJzW05VTV9IVUZGX1RCTFNdOw0KKyAgLyogcHRycyB0byBIdWZmbWFuIGNvZGluZyB0YWJsZXMsIG9yIE5VTEwgaWYgbm90IGRlZmluZWQgKi8NCisNCisgIC8qIFRoZXNlIHBhcmFtZXRlcnMgYXJlIG5ldmVyIGNhcnJpZWQgYWNyb3NzIGRhdGFzdHJlYW1zLCBzaW5jZSB0aGV5DQorICAgKiBhcmUgZ2l2ZW4gaW4gU09GL1NPUyBtYXJrZXJzIG9yIGRlZmluZWQgdG8gYmUgcmVzZXQgYnkgU09JLg0KKyAgICovDQorDQorICBpbnQgZGF0YV9wcmVjaXNpb247CQkvKiBiaXRzIG9mIHByZWNpc2lvbiBpbiBpbWFnZSBkYXRhICovDQorDQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcF9pbmZvOw0KKyAgLyogY29tcF9pbmZvW2ldIGRlc2NyaWJlcyBjb21wb25lbnQgdGhhdCBhcHBlYXJzIGkndGggaW4gU09GICovDQorDQorICBib29sZWFuIHByb2dyZXNzaXZlX21vZGU7CS8qIFRSVUUgaWYgU09GbiBzcGVjaWZpZXMgcHJvZ3Jlc3NpdmUgbW9kZSAqLw0KKyAgYm9vbGVhbiBhcml0aF9jb2RlOwkJLyogVFJVRT1hcml0aG1ldGljIGNvZGluZywgRkFMU0U9SHVmZm1hbiAqLw0KKw0KKyAgVUlOVDggYXJpdGhfZGNfTFtOVU1fQVJJVEhfVEJMU107IC8qIEwgdmFsdWVzIGZvciBEQyBhcml0aC1jb2RpbmcgdGFibGVzICovDQorICBVSU5UOCBhcml0aF9kY19VW05VTV9BUklUSF9UQkxTXTsgLyogVSB2YWx1ZXMgZm9yIERDIGFyaXRoLWNvZGluZyB0YWJsZXMgKi8NCisgIFVJTlQ4IGFyaXRoX2FjX0tbTlVNX0FSSVRIX1RCTFNdOyAvKiBLeCB2YWx1ZXMgZm9yIEFDIGFyaXRoLWNvZGluZyB0YWJsZXMgKi8NCisNCisgIHVuc2lnbmVkIGludCByZXN0YXJ0X2ludGVydmFsOyAvKiBNQ1VzIHBlciByZXN0YXJ0IGludGVydmFsLCBvciAwIGZvciBubyByZXN0YXJ0ICovDQorDQorICAvKiBUaGVzZSBmaWVsZHMgcmVjb3JkIGRhdGEgb2J0YWluZWQgZnJvbSBvcHRpb25hbCBtYXJrZXJzIHJlY29nbml6ZWQgYnkNCisgICAqIHRoZSBKUEVHIGxpYnJhcnkuDQorICAgKi8NCisgIGJvb2xlYW4gc2F3X0pGSUZfbWFya2VyOwkvKiBUUlVFIGlmZiBhIEpGSUYgQVBQMCBtYXJrZXIgd2FzIGZvdW5kICovDQorICAvKiBEYXRhIGNvcGllZCBmcm9tIEpGSUYgbWFya2VyOyBvbmx5IHZhbGlkIGlmIHNhd19KRklGX21hcmtlciBpcyBUUlVFOiAqLw0KKyAgVUlOVDggSkZJRl9tYWpvcl92ZXJzaW9uOwkvKiBKRklGIHZlcnNpb24gbnVtYmVyICovDQorICBVSU5UOCBKRklGX21pbm9yX3ZlcnNpb247DQorICBVSU5UOCBkZW5zaXR5X3VuaXQ7CQkvKiBKRklGIGNvZGUgZm9yIHBpeGVsIHNpemUgdW5pdHMgKi8NCisgIFVJTlQxNiBYX2RlbnNpdHk7CQkvKiBIb3Jpem9udGFsIHBpeGVsIGRlbnNpdHkgKi8NCisgIFVJTlQxNiBZX2RlbnNpdHk7CQkvKiBWZXJ0aWNhbCBwaXhlbCBkZW5zaXR5ICovDQorICBib29sZWFuIHNhd19BZG9iZV9tYXJrZXI7CS8qIFRSVUUgaWZmIGFuIEFkb2JlIEFQUDE0IG1hcmtlciB3YXMgZm91bmQgKi8NCisgIFVJTlQ4IEFkb2JlX3RyYW5zZm9ybTsJLyogQ29sb3IgdHJhbnNmb3JtIGNvZGUgZnJvbSBBZG9iZSBtYXJrZXIgKi8NCisNCisgIGJvb2xlYW4gQ0NJUjYwMV9zYW1wbGluZzsJLyogVFJVRT1maXJzdCBzYW1wbGVzIGFyZSBjb3NpdGVkICovDQorDQorICAvKiBBc2lkZSBmcm9tIHRoZSBzcGVjaWZpYyBkYXRhIHJldGFpbmVkIGZyb20gQVBQbiBtYXJrZXJzIGtub3duIHRvIHRoZQ0KKyAgICogbGlicmFyeSwgdGhlIHVuaW50ZXJwcmV0ZWQgY29udGVudHMgb2YgYW55IG9yIGFsbCBBUFBuIGFuZCBDT00gbWFya2Vycw0KKyAgICogY2FuIGJlIHNhdmVkIGluIGEgbGlzdCBmb3IgZXhhbWluYXRpb24gYnkgdGhlIGFwcGxpY2F0aW9uLg0KKyAgICovDQorICBqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyX2xpc3Q7IC8qIEhlYWQgb2YgbGlzdCBvZiBzYXZlZCBtYXJrZXJzICovDQorDQorICAvKiBSZW1haW5pbmcgZmllbGRzIGFyZSBrbm93biB0aHJvdWdob3V0IGRlY29tcHJlc3NvciwgYnV0IGdlbmVyYWxseQ0KKyAgICogc2hvdWxkIG5vdCBiZSB0b3VjaGVkIGJ5IGEgc3Vycm91bmRpbmcgYXBwbGljYXRpb24uDQorICAgKi8NCisNCisgIC8qDQorICAgKiBUaGVzZSBmaWVsZHMgYXJlIGNvbXB1dGVkIGR1cmluZyBkZWNvbXByZXNzaW9uIHN0YXJ0dXANCisgICAqLw0KKyAgaW50IG1heF9oX3NhbXBfZmFjdG9yOwkvKiBsYXJnZXN0IGhfc2FtcF9mYWN0b3IgKi8NCisgIGludCBtYXhfdl9zYW1wX2ZhY3RvcjsJLyogbGFyZ2VzdCB2X3NhbXBfZmFjdG9yICovDQorDQorICBpbnQgbWluX0RDVF9zY2FsZWRfc2l6ZTsJLyogc21hbGxlc3QgRENUX3NjYWxlZF9zaXplIG9mIGFueSBjb21wb25lbnQgKi8NCisNCisgIEpESU1FTlNJT04gdG90YWxfaU1DVV9yb3dzOwkvKiAjIG9mIGlNQ1Ugcm93cyBpbiBpbWFnZSAqLw0KKyAgLyogVGhlIGNvZWZmaWNpZW50IGNvbnRyb2xsZXIncyBpbnB1dCBhbmQgb3V0cHV0IHByb2dyZXNzIGlzIG1lYXN1cmVkIGluDQorICAgKiB1bml0cyBvZiAiaU1DVSIgKGludGVybGVhdmVkIE1DVSkgcm93cy4gIFRoZXNlIGFyZSB0aGUgc2FtZSBhcyBNQ1Ugcm93cw0KKyAgICogaW4gZnVsbHkgaW50ZXJsZWF2ZWQgSlBFRyBzY2FucywgYnV0IGFyZSB1c2VkIHdoZXRoZXIgdGhlIHNjYW4gaXMNCisgICAqIGludGVybGVhdmVkIG9yIG5vdC4gIFdlIGRlZmluZSBhbiBpTUNVIHJvdyBhcyB2X3NhbXBfZmFjdG9yIERDVCBibG9jaw0KKyAgICogcm93cyBvZiBlYWNoIGNvbXBvbmVudC4gIFRoZXJlZm9yZSwgdGhlIElEQ1Qgb3V0cHV0IGNvbnRhaW5zDQorICAgKiB2X3NhbXBfZmFjdG9yKkRDVF9zY2FsZWRfc2l6ZSBzYW1wbGUgcm93cyBvZiBhIGNvbXBvbmVudCBwZXIgaU1DVSByb3cuDQorICAgKi8NCisNCisgIEpTQU1QTEUgKiBzYW1wbGVfcmFuZ2VfbGltaXQ7IC8qIHRhYmxlIGZvciBmYXN0IHJhbmdlLWxpbWl0aW5nICovDQorDQorICAvKg0KKyAgICogVGhlc2UgZmllbGRzIGFyZSB2YWxpZCBkdXJpbmcgYW55IG9uZSBzY2FuLg0KKyAgICogVGhleSBkZXNjcmliZSB0aGUgY29tcG9uZW50cyBhbmQgTUNVcyBhY3R1YWxseSBhcHBlYXJpbmcgaW4gdGhlIHNjYW4uDQorICAgKiBOb3RlIHRoYXQgdGhlIGRlY29tcHJlc3NvciBvdXRwdXQgc2lkZSBtdXN0IG5vdCB1c2UgdGhlc2UgZmllbGRzLg0KKyAgICovDQorICBpbnQgY29tcHNfaW5fc2NhbjsJCS8qICMgb2YgSlBFRyBjb21wb25lbnRzIGluIHRoaXMgc2NhbiAqLw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqIGN1cl9jb21wX2luZm9bTUFYX0NPTVBTX0lOX1NDQU5dOw0KKyAgLyogKmN1cl9jb21wX2luZm9baV0gZGVzY3JpYmVzIGNvbXBvbmVudCB0aGF0IGFwcGVhcnMgaSd0aCBpbiBTT1MgKi8NCisNCisgIEpESU1FTlNJT04gTUNVc19wZXJfcm93OwkvKiAjIG9mIE1DVXMgYWNyb3NzIHRoZSBpbWFnZSAqLw0KKyAgSkRJTUVOU0lPTiBNQ1Vfcm93c19pbl9zY2FuOwkvKiAjIG9mIE1DVSByb3dzIGluIHRoZSBpbWFnZSAqLw0KKw0KKyAgaW50IGJsb2Nrc19pbl9NQ1U7CQkvKiAjIG9mIERDVCBibG9ja3MgcGVyIE1DVSAqLw0KKyAgaW50IE1DVV9tZW1iZXJzaGlwW0RfTUFYX0JMT0NLU19JTl9NQ1VdOw0KKyAgLyogTUNVX21lbWJlcnNoaXBbaV0gaXMgaW5kZXggaW4gY3VyX2NvbXBfaW5mbyBvZiBjb21wb25lbnQgb3duaW5nICovDQorICAvKiBpJ3RoIGJsb2NrIGluIGFuIE1DVSAqLw0KKw0KKyAgaW50IFNzLCBTZSwgQWgsIEFsOwkJLyogcHJvZ3Jlc3NpdmUgSlBFRyBwYXJhbWV0ZXJzIGZvciBzY2FuICovDQorDQorICAvKiBUaGlzIGZpZWxkIGlzIHNoYXJlZCBiZXR3ZWVuIGVudHJvcHkgZGVjb2RlciBhbmQgbWFya2VyIHBhcnNlci4NCisgICAqIEl0IGlzIGVpdGhlciB6ZXJvIG9yIHRoZSBjb2RlIG9mIGEgSlBFRyBtYXJrZXIgdGhhdCBoYXMgYmVlbg0KKyAgICogcmVhZCBmcm9tIHRoZSBkYXRhIHNvdXJjZSwgYnV0IGhhcyBub3QgeWV0IGJlZW4gcHJvY2Vzc2VkLg0KKyAgICovDQorICBpbnQgdW5yZWFkX21hcmtlcjsNCisNCisgIC8qDQorICAgKiBMaW5rcyB0byBkZWNvbXByZXNzaW9uIHN1Ym9iamVjdHMgKG1ldGhvZHMsIHByaXZhdGUgdmFyaWFibGVzIG9mIG1vZHVsZXMpDQorICAgKi8NCisgIHN0cnVjdCBqcGVnX2RlY29tcF9tYXN0ZXIgKiBtYXN0ZXI7DQorICBzdHJ1Y3QganBlZ19kX21haW5fY29udHJvbGxlciAqIG1haW47DQorICBzdHJ1Y3QganBlZ19kX2NvZWZfY29udHJvbGxlciAqIGNvZWY7DQorICBzdHJ1Y3QganBlZ19kX3Bvc3RfY29udHJvbGxlciAqIHBvc3Q7DQorICBzdHJ1Y3QganBlZ19pbnB1dF9jb250cm9sbGVyICogaW5wdXRjdGw7DQorICBzdHJ1Y3QganBlZ19tYXJrZXJfcmVhZGVyICogbWFya2VyOw0KKyAgc3RydWN0IGpwZWdfZW50cm9weV9kZWNvZGVyICogZW50cm9weTsNCisgIHN0cnVjdCBqcGVnX2ludmVyc2VfZGN0ICogaWRjdDsNCisgIHN0cnVjdCBqcGVnX3Vwc2FtcGxlciAqIHVwc2FtcGxlOw0KKyAgc3RydWN0IGpwZWdfY29sb3JfZGVjb252ZXJ0ZXIgKiBjY29udmVydDsNCisgIHN0cnVjdCBqcGVnX2NvbG9yX3F1YW50aXplciAqIGNxdWFudGl6ZTsNCit9Ow0KKw0KKw0KKy8qICJPYmplY3QiIGRlY2xhcmF0aW9ucyBmb3IgSlBFRyBtb2R1bGVzIHRoYXQgbWF5IGJlIHN1cHBsaWVkIG9yIGNhbGxlZA0KKyAqIGRpcmVjdGx5IGJ5IHRoZSBzdXJyb3VuZGluZyBhcHBsaWNhdGlvbi4NCisgKiBBcyB3aXRoIGFsbCBvYmplY3RzIGluIHRoZSBKUEVHIGxpYnJhcnksIHRoZXNlIHN0cnVjdHMgb25seSBkZWZpbmUgdGhlDQorICogcHVibGljbHkgdmlzaWJsZSBtZXRob2RzIGFuZCBzdGF0ZSB2YXJpYWJsZXMgb2YgYSBtb2R1bGUuICBBZGRpdGlvbmFsDQorICogcHJpdmF0ZSBmaWVsZHMgbWF5IGV4aXN0IGFmdGVyIHRoZSBwdWJsaWMgb25lcy4NCisgKi8NCisNCisNCisvKiBFcnJvciBoYW5kbGVyIG9iamVjdCAqLw0KKw0KK3N0cnVjdCBqcGVnX2Vycm9yX21nciB7DQorICAvKiBFcnJvciBleGl0IGhhbmRsZXI6IGRvZXMgbm90IHJldHVybiB0byBjYWxsZXIgKi8NCisgIEpNRVRIT0Qodm9pZCwgZXJyb3JfZXhpdCwgKGpfY29tbW9uX3B0ciBjaW5mbykpOw0KKyAgLyogQ29uZGl0aW9uYWxseSBlbWl0IGEgdHJhY2Ugb3Igd2FybmluZyBtZXNzYWdlICovDQorICBKTUVUSE9EKHZvaWQsIGVtaXRfbWVzc2FnZSwgKGpfY29tbW9uX3B0ciBjaW5mbywgaW50IG1zZ19sZXZlbCkpOw0KKyAgLyogUm91dGluZSB0aGF0IGFjdHVhbGx5IG91dHB1dHMgYSB0cmFjZSBvciBlcnJvciBtZXNzYWdlICovDQorICBKTUVUSE9EKHZvaWQsIG91dHB1dF9tZXNzYWdlLCAoal9jb21tb25fcHRyIGNpbmZvKSk7DQorICAvKiBGb3JtYXQgYSBtZXNzYWdlIHN0cmluZyBmb3IgdGhlIG1vc3QgcmVjZW50IEpQRUcgZXJyb3Igb3IgbWVzc2FnZSAqLw0KKyAgSk1FVEhPRCh2b2lkLCBmb3JtYXRfbWVzc2FnZSwgKGpfY29tbW9uX3B0ciBjaW5mbywgY2hhciAqIGJ1ZmZlcikpOw0KKyNkZWZpbmUgSk1TR19MRU5HVEhfTUFYICAyMDAJLyogcmVjb21tZW5kZWQgc2l6ZSBvZiBmb3JtYXRfbWVzc2FnZSBidWZmZXIgKi8NCisgIC8qIFJlc2V0IGVycm9yIHN0YXRlIHZhcmlhYmxlcyBhdCBzdGFydCBvZiBhIG5ldyBpbWFnZSAqLw0KKyAgSk1FVEhPRCh2b2lkLCByZXNldF9lcnJvcl9tZ3IsIChqX2NvbW1vbl9wdHIgY2luZm8pKTsNCisgIA0KKyAgLyogVGhlIG1lc3NhZ2UgSUQgY29kZSBhbmQgYW55IHBhcmFtZXRlcnMgYXJlIHNhdmVkIGhlcmUuDQorICAgKiBBIG1lc3NhZ2UgY2FuIGhhdmUgb25lIHN0cmluZyBwYXJhbWV0ZXIgb3IgdXAgdG8gOCBpbnQgcGFyYW1ldGVycy4NCisgICAqLw0KKyAgaW50IG1zZ19jb2RlOw0KKyNkZWZpbmUgSk1TR19TVFJfUEFSTV9NQVggIDgwDQorICB1bmlvbiB7DQorICAgIGludCBpWzhdOw0KKyAgICBjaGFyIHNbSk1TR19TVFJfUEFSTV9NQVhdOw0KKyAgfSBtc2dfcGFybTsNCisgIA0KKyAgLyogU3RhbmRhcmQgc3RhdGUgdmFyaWFibGVzIGZvciBlcnJvciBmYWNpbGl0eSAqLw0KKyAgDQorICBpbnQgdHJhY2VfbGV2ZWw7CQkvKiBtYXggbXNnX2xldmVsIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgKi8NCisgIA0KKyAgLyogRm9yIHJlY292ZXJhYmxlIGNvcnJ1cHQtZGF0YSBlcnJvcnMsIHdlIGVtaXQgYSB3YXJuaW5nIG1lc3NhZ2UsDQorICAgKiBidXQga2VlcCBnb2luZyB1bmxlc3MgZW1pdF9tZXNzYWdlIGNob29zZXMgdG8gYWJvcnQuICBlbWl0X21lc3NhZ2UNCisgICAqIHNob3VsZCBjb3VudCB3YXJuaW5ncyBpbiBudW1fd2FybmluZ3MuICBUaGUgc3Vycm91bmRpbmcgYXBwbGljYXRpb24NCisgICAqIGNhbiBjaGVjayBmb3IgYmFkIGRhdGEgYnkgc2VlaW5nIGlmIG51bV93YXJuaW5ncyBpcyBub256ZXJvIGF0IHRoZQ0KKyAgICogZW5kIG9mIHByb2Nlc3NpbmcuDQorICAgKi8NCisgIGxvbmcgbnVtX3dhcm5pbmdzOwkJLyogbnVtYmVyIG9mIGNvcnJ1cHQtZGF0YSB3YXJuaW5ncyAqLw0KKw0KKyAgLyogVGhlc2UgZmllbGRzIHBvaW50IHRvIHRoZSB0YWJsZShzKSBvZiBlcnJvciBtZXNzYWdlIHN0cmluZ3MuDQorICAgKiBBbiBhcHBsaWNhdGlvbiBjYW4gY2hhbmdlIHRoZSB0YWJsZSBwb2ludGVyIHRvIHN3aXRjaCB0byBhIGRpZmZlcmVudA0KKyAgICogbWVzc2FnZSBsaXN0ICh0eXBpY2FsbHksIHRvIGNoYW5nZSB0aGUgbGFuZ3VhZ2UgaW4gd2hpY2ggZXJyb3JzIGFyZQ0KKyAgICogcmVwb3J0ZWQpLiAgU29tZSBhcHBsaWNhdGlvbnMgbWF5IHdpc2ggdG8gYWRkIGFkZGl0aW9uYWwgZXJyb3IgY29kZXMNCisgICAqIHRoYXQgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBKUEVHIGxpYnJhcnkgZXJyb3IgbWVjaGFuaXNtOyB0aGUgc2Vjb25kDQorICAgKiB0YWJsZSBwb2ludGVyIGlzIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4NCisgICAqDQorICAgKiBGaXJzdCB0YWJsZSBpbmNsdWRlcyBhbGwgZXJyb3JzIGdlbmVyYXRlZCBieSBKUEVHIGxpYnJhcnkgaXRzZWxmLg0KKyAgICogRXJyb3IgY29kZSAwIGlzIHJlc2VydmVkIGZvciBhICJubyBzdWNoIGVycm9yIHN0cmluZyIgbWVzc2FnZS4NCisgICAqLw0KKyAgY29uc3QgY2hhciAqIGNvbnN0ICoganBlZ19tZXNzYWdlX3RhYmxlOyAvKiBMaWJyYXJ5IGVycm9ycyAqLw0KKyAgaW50IGxhc3RfanBlZ19tZXNzYWdlOyAgICAvKiBUYWJsZSBjb250YWlucyBzdHJpbmdzIDAuLmxhc3RfanBlZ19tZXNzYWdlICovDQorICAvKiBTZWNvbmQgdGFibGUgY2FuIGJlIGFkZGVkIGJ5IGFwcGxpY2F0aW9uIChzZWUgY2pwZWcvZGpwZWcgZm9yIGV4YW1wbGUpLg0KKyAgICogSXQgY29udGFpbnMgc3RyaW5ncyBudW1iZXJlZCBmaXJzdF9hZGRvbl9tZXNzYWdlLi5sYXN0X2FkZG9uX21lc3NhZ2UuDQorICAgKi8NCisgIGNvbnN0IGNoYXIgKiBjb25zdCAqIGFkZG9uX21lc3NhZ2VfdGFibGU7IC8qIE5vbi1saWJyYXJ5IGVycm9ycyAqLw0KKyAgaW50IGZpcnN0X2FkZG9uX21lc3NhZ2U7CS8qIGNvZGUgZm9yIGZpcnN0IHN0cmluZyBpbiBhZGRvbiB0YWJsZSAqLw0KKyAgaW50IGxhc3RfYWRkb25fbWVzc2FnZTsJLyogY29kZSBmb3IgbGFzdCBzdHJpbmcgaW4gYWRkb24gdGFibGUgKi8NCit9Ow0KKw0KKw0KKy8qIFByb2dyZXNzIG1vbml0b3Igb2JqZWN0ICovDQorDQorc3RydWN0IGpwZWdfcHJvZ3Jlc3NfbWdyIHsNCisgIEpNRVRIT0Qodm9pZCwgcHJvZ3Jlc3NfbW9uaXRvciwgKGpfY29tbW9uX3B0ciBjaW5mbykpOw0KKw0KKyAgbG9uZyBwYXNzX2NvdW50ZXI7CQkvKiB3b3JrIHVuaXRzIGNvbXBsZXRlZCBpbiB0aGlzIHBhc3MgKi8NCisgIGxvbmcgcGFzc19saW1pdDsJCS8qIHRvdGFsIG51bWJlciBvZiB3b3JrIHVuaXRzIGluIHRoaXMgcGFzcyAqLw0KKyAgaW50IGNvbXBsZXRlZF9wYXNzZXM7CQkvKiBwYXNzZXMgY29tcGxldGVkIHNvIGZhciAqLw0KKyAgaW50IHRvdGFsX3Bhc3NlczsJCS8qIHRvdGFsIG51bWJlciBvZiBwYXNzZXMgZXhwZWN0ZWQgKi8NCit9Ow0KKw0KKw0KKy8qIERhdGEgZGVzdGluYXRpb24gb2JqZWN0IGZvciBjb21wcmVzc2lvbiAqLw0KKw0KK3N0cnVjdCBqcGVnX2Rlc3RpbmF0aW9uX21nciB7DQorICBKT0NURVQgKiBuZXh0X291dHB1dF9ieXRlOwkvKiA9PiBuZXh0IGJ5dGUgdG8gd3JpdGUgaW4gYnVmZmVyICovDQorICBzaXplX3QgZnJlZV9pbl9idWZmZXI7CS8qICMgb2YgYnl0ZSBzcGFjZXMgcmVtYWluaW5nIGluIGJ1ZmZlciAqLw0KKw0KKyAgSk1FVEhPRCh2b2lkLCBpbml0X2Rlc3RpbmF0aW9uLCAoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0QoYm9vbGVhbiwgZW1wdHlfb3V0cHV0X2J1ZmZlciwgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIHRlcm1fZGVzdGluYXRpb24sIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KK307DQorDQorDQorLyogRGF0YSBzb3VyY2Ugb2JqZWN0IGZvciBkZWNvbXByZXNzaW9uICovDQorDQorc3RydWN0IGpwZWdfc291cmNlX21nciB7DQorICBjb25zdCBKT0NURVQgKiBuZXh0X2lucHV0X2J5dGU7IC8qID0+IG5leHQgYnl0ZSB0byByZWFkIGZyb20gYnVmZmVyICovDQorICBzaXplX3QgYnl0ZXNfaW5fYnVmZmVyOwkvKiAjIG9mIGJ5dGVzIHJlbWFpbmluZyBpbiBidWZmZXIgKi8NCisNCisgIEpNRVRIT0Qodm9pZCwgaW5pdF9zb3VyY2UsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKGJvb2xlYW4sIGZpbGxfaW5wdXRfYnVmZmVyLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCBza2lwX2lucHV0X2RhdGEsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBsb25nIG51bV9ieXRlcykpOw0KKyAgSk1FVEhPRChib29sZWFuLCByZXN5bmNfdG9fcmVzdGFydCwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGludCBkZXNpcmVkKSk7DQorICBKTUVUSE9EKHZvaWQsIHRlcm1fc291cmNlLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK307DQorDQorDQorLyogTWVtb3J5IG1hbmFnZXIgb2JqZWN0Lg0KKyAqIEFsbG9jYXRlcyAic21hbGwiIG9iamVjdHMgKGEgZmV3IEsgdG90YWwpLCAibGFyZ2UiIG9iamVjdHMgKHRlbnMgb2YgSyksDQorICogYW5kICJyZWFsbHkgYmlnIiBvYmplY3RzICh2aXJ0dWFsIGFycmF5cyB3aXRoIGJhY2tpbmcgc3RvcmUgaWYgbmVlZGVkKS4NCisgKiBUaGUgbWVtb3J5IG1hbmFnZXIgZG9lcyBub3QgYWxsb3cgaW5kaXZpZHVhbCBvYmplY3RzIHRvIGJlIGZyZWVkOyByYXRoZXIsDQorICogZWFjaCBjcmVhdGVkIG9iamVjdCBpcyBhc3NpZ25lZCB0byBhIHBvb2wsIGFuZCB3aG9sZSBwb29scyBjYW4gYmUgZnJlZWQNCisgKiBhdCBvbmNlLiAgVGhpcyBpcyBmYXN0ZXIgYW5kIG1vcmUgY29udmVuaWVudCB0aGFuIHJlbWVtYmVyaW5nIGV4YWN0bHkgd2hhdA0KKyAqIHRvIGZyZWUsIGVzcGVjaWFsbHkgd2hlcmUgbWFsbG9jKCkvZnJlZSgpIGFyZSBub3QgdG9vIHNwZWVkeS4NCisgKiBOQjogYWxsb2Mgcm91dGluZXMgbmV2ZXIgcmV0dXJuIE5VTEwuICBUaGV5IGV4aXQgdG8gZXJyb3JfZXhpdCBpZiBub3QNCisgKiBzdWNjZXNzZnVsLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBPT0xfUEVSTUFORU5UCTAJLyogbGFzdHMgdW50aWwgbWFzdGVyIHJlY29yZCBpcyBkZXN0cm95ZWQgKi8NCisjZGVmaW5lIEpQT09MX0lNQUdFCTEJLyogbGFzdHMgdW50aWwgZG9uZSB3aXRoIGltYWdlL2RhdGFzdHJlYW0gKi8NCisjZGVmaW5lIEpQT09MX05VTVBPT0xTCTINCisNCit0eXBlZGVmIHN0cnVjdCBqdmlydF9zYXJyYXlfY29udHJvbCAqIGp2aXJ0X3NhcnJheV9wdHI7DQordHlwZWRlZiBzdHJ1Y3QganZpcnRfYmFycmF5X2NvbnRyb2wgKiBqdmlydF9iYXJyYXlfcHRyOw0KKw0KKw0KK3N0cnVjdCBqcGVnX21lbW9yeV9tZ3Igew0KKyAgLyogTWV0aG9kIHBvaW50ZXJzICovDQorICBKTUVUSE9EKHZvaWQgKiwgYWxsb2Nfc21hbGwsIChqX2NvbW1vbl9wdHIgY2luZm8sIGludCBwb29sX2lkLA0KKwkJCQlzaXplX3Qgc2l6ZW9mb2JqZWN0KSk7DQorICBKTUVUSE9EKHZvaWQgICosIGFsbG9jX2xhcmdlLCAoal9jb21tb25fcHRyIGNpbmZvLCBpbnQgcG9vbF9pZCwNCisJCQkJICAgICBzaXplX3Qgc2l6ZW9mb2JqZWN0KSk7DQorICBKTUVUSE9EKEpTQU1QQVJSQVksIGFsbG9jX3NhcnJheSwgKGpfY29tbW9uX3B0ciBjaW5mbywgaW50IHBvb2xfaWQsDQorCQkJCSAgICAgSkRJTUVOU0lPTiBzYW1wbGVzcGVycm93LA0KKwkJCQkgICAgIEpESU1FTlNJT04gbnVtcm93cykpOw0KKyAgSk1FVEhPRChKQkxPQ0tBUlJBWSwgYWxsb2NfYmFycmF5LCAoal9jb21tb25fcHRyIGNpbmZvLCBpbnQgcG9vbF9pZCwNCisJCQkJICAgICAgSkRJTUVOU0lPTiBibG9ja3NwZXJyb3csDQorCQkJCSAgICAgIEpESU1FTlNJT04gbnVtcm93cykpOw0KKyAgSk1FVEhPRChqdmlydF9zYXJyYXlfcHRyLCByZXF1ZXN0X3ZpcnRfc2FycmF5LCAoal9jb21tb25fcHRyIGNpbmZvLA0KKwkJCQkJCSAgaW50IHBvb2xfaWQsDQorCQkJCQkJICBib29sZWFuIHByZV96ZXJvLA0KKwkJCQkJCSAgSkRJTUVOU0lPTiBzYW1wbGVzcGVycm93LA0KKwkJCQkJCSAgSkRJTUVOU0lPTiBudW1yb3dzLA0KKwkJCQkJCSAgSkRJTUVOU0lPTiBtYXhhY2Nlc3MpKTsNCisgIEpNRVRIT0QoanZpcnRfYmFycmF5X3B0ciwgcmVxdWVzdF92aXJ0X2JhcnJheSwgKGpfY29tbW9uX3B0ciBjaW5mbywNCisJCQkJCQkgIGludCBwb29sX2lkLA0KKwkJCQkJCSAgYm9vbGVhbiBwcmVfemVybywNCisJCQkJCQkgIEpESU1FTlNJT04gYmxvY2tzcGVycm93LA0KKwkJCQkJCSAgSkRJTUVOU0lPTiBudW1yb3dzLA0KKwkJCQkJCSAgSkRJTUVOU0lPTiBtYXhhY2Nlc3MpKTsNCisgIEpNRVRIT0Qodm9pZCwgcmVhbGl6ZV92aXJ0X2FycmF5cywgKGpfY29tbW9uX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRChKU0FNUEFSUkFZLCBhY2Nlc3NfdmlydF9zYXJyYXksIChqX2NvbW1vbl9wdHIgY2luZm8sDQorCQkJCQkgICBqdmlydF9zYXJyYXlfcHRyIHB0ciwNCisJCQkJCSAgIEpESU1FTlNJT04gc3RhcnRfcm93LA0KKwkJCQkJICAgSkRJTUVOU0lPTiBudW1fcm93cywNCisJCQkJCSAgIGJvb2xlYW4gd3JpdGFibGUpKTsNCisgIEpNRVRIT0QoSkJMT0NLQVJSQVksIGFjY2Vzc192aXJ0X2JhcnJheSwgKGpfY29tbW9uX3B0ciBjaW5mbywNCisJCQkJCSAgICBqdmlydF9iYXJyYXlfcHRyIHB0ciwNCisJCQkJCSAgICBKRElNRU5TSU9OIHN0YXJ0X3JvdywNCisJCQkJCSAgICBKRElNRU5TSU9OIG51bV9yb3dzLA0KKwkJCQkJICAgIGJvb2xlYW4gd3JpdGFibGUpKTsNCisgIEpNRVRIT0Qodm9pZCwgZnJlZV9wb29sLCAoal9jb21tb25fcHRyIGNpbmZvLCBpbnQgcG9vbF9pZCkpOw0KKyAgSk1FVEhPRCh2b2lkLCBzZWxmX2Rlc3RydWN0LCAoal9jb21tb25fcHRyIGNpbmZvKSk7DQorDQorICAvKiBMaW1pdCBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgdGhpcyBKUEVHIG9iamVjdC4gIChOb3RlIHRoYXQgdGhpcyBpcw0KKyAgICogbWVyZWx5IGFkdmlzb3J5LCBub3QgYSBndWFyYW50ZWVkIG1heGltdW07IGl0IG9ubHkgYWZmZWN0cyB0aGUgc3BhY2UNCisgICAqIHVzZWQgZm9yIHZpcnR1YWwtYXJyYXkgYnVmZmVycy4pICBNYXkgYmUgY2hhbmdlZCBieSBvdXRlciBhcHBsaWNhdGlvbg0KKyAgICogYWZ0ZXIgY3JlYXRpbmcgdGhlIEpQRUcgb2JqZWN0Lg0KKyAgICovDQorICBsb25nIG1heF9tZW1vcnlfdG9fdXNlOw0KKw0KKyAgLyogTWF4aW11bSBhbGxvY2F0aW9uIHJlcXVlc3QgYWNjZXB0ZWQgYnkgYWxsb2NfbGFyZ2UuICovDQorICBsb25nIG1heF9hbGxvY19jaHVuazsNCit9Ow0KKw0KKw0KKy8qIFJvdXRpbmUgc2lnbmF0dXJlIGZvciBhcHBsaWNhdGlvbi1zdXBwbGllZCBtYXJrZXIgcHJvY2Vzc2luZyBtZXRob2RzLg0KKyAqIE5lZWQgbm90IHBhc3MgbWFya2VyIGNvZGUgc2luY2UgaXQgaXMgc3RvcmVkIGluIGNpbmZvLT51bnJlYWRfbWFya2VyLg0KKyAqLw0KK3R5cGVkZWYgSk1FVEhPRChib29sZWFuLCBqcGVnX21hcmtlcl9wYXJzZXJfbWV0aG9kLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKw0KKw0KKy8qIERlY2xhcmF0aW9ucyBmb3Igcm91dGluZXMgY2FsbGVkIGJ5IGFwcGxpY2F0aW9uLg0KKyAqIFRoZSBKUFAgbWFjcm8gaGlkZXMgcHJvdG90eXBlIHBhcmFtZXRlcnMgZnJvbSBjb21waWxlcnMgdGhhdCBjYW4ndCBjb3BlLg0KKyAqIE5vdGUgSlBQIHJlcXVpcmVzIGRvdWJsZSBwYXJlbnRoZXNlcy4NCisgKi8NCisNCisjaWZkZWYgSEFWRV9QUk9UT1RZUEVTDQorI2RlZmluZSBKUFAoYXJnbGlzdCkJYXJnbGlzdA0KKyNlbHNlDQorI2RlZmluZSBKUFAoYXJnbGlzdCkJKCkNCisjZW5kaWYNCisNCisNCisvKiBTaG9ydCBmb3JtcyBvZiBleHRlcm5hbCBuYW1lcyBmb3Igc3lzdGVtcyB3aXRoIGJyYWluLWRhbWFnZWQgbGlua2Vycy4NCisgKiBXZSBzaG9ydGVuIGV4dGVybmFsIG5hbWVzIHRvIGJlIHVuaXF1ZSBpbiB0aGUgZmlyc3Qgc2l4IGxldHRlcnMsIHdoaWNoDQorICogaXMgZ29vZCBlbm91Z2ggZm9yIGFsbCBrbm93biBzeXN0ZW1zLg0KKyAqIChJZiB5b3VyIGNvbXBpbGVyIGl0c2VsZiBuZWVkcyBuYW1lcyB0byBiZSB1bmlxdWUgaW4gbGVzcyB0aGFuIDE1IA0KKyAqIGNoYXJhY3RlcnMsIHlvdSBhcmUgb3V0IG9mIGx1Y2suICBHZXQgYSBiZXR0ZXIgY29tcGlsZXIuKQ0KKyAqLw0KKw0KKyNpZmRlZiBORUVEX1NIT1JUX0VYVEVSTkFMX05BTUVTDQorI2RlZmluZSBqcGVnX3N0ZF9lcnJvcgkJalN0ZEVycm9yDQorI2RlZmluZSBqcGVnX0NyZWF0ZUNvbXByZXNzCWpDcmVhQ29tcHJlc3MNCisjZGVmaW5lIGpwZWdfQ3JlYXRlRGVjb21wcmVzcwlqQ3JlYURlY29tcHJlc3MNCisjZGVmaW5lIGpwZWdfZGVzdHJveV9jb21wcmVzcwlqRGVzdENvbXByZXNzDQorI2RlZmluZSBqcGVnX2Rlc3Ryb3lfZGVjb21wcmVzcwlqRGVzdERlY29tcHJlc3MNCisjZGVmaW5lIGpwZWdfc3RkaW9fZGVzdAkJalN0ZERlc3QNCisjZGVmaW5lIGpwZWdfc3RkaW9fc3JjCQlqU3RkU3JjDQorI2RlZmluZSBqcGVnX3NldF9kZWZhdWx0cwlqU2V0RGVmYXVsdHMNCisjZGVmaW5lIGpwZWdfc2V0X2NvbG9yc3BhY2UJalNldENvbG9yc3BhY2UNCisjZGVmaW5lIGpwZWdfZGVmYXVsdF9jb2xvcnNwYWNlCWpEZWZDb2xvcnNwYWNlDQorI2RlZmluZSBqcGVnX3NldF9xdWFsaXR5CWpTZXRRdWFsaXR5DQorI2RlZmluZSBqcGVnX3NldF9saW5lYXJfcXVhbGl0eQlqU2V0TFF1YWxpdHkNCisjZGVmaW5lIGpwZWdfYWRkX3F1YW50X3RhYmxlCWpBZGRRdWFudFRhYmxlDQorI2RlZmluZSBqcGVnX3F1YWxpdHlfc2NhbGluZwlqUXVhbGl0eVNjYWxpbmcNCisjZGVmaW5lIGpwZWdfc2ltcGxlX3Byb2dyZXNzaW9uCWpTaW1Qcm9ncmVzcw0KKyNkZWZpbmUganBlZ19zdXBwcmVzc190YWJsZXMJalN1cHByZXNzVGFibGVzDQorI2RlZmluZSBqcGVnX2FsbG9jX3F1YW50X3RhYmxlCWpBbGNRVGFibGUNCisjZGVmaW5lIGpwZWdfYWxsb2NfaHVmZl90YWJsZQlqQWxjSFRhYmxlDQorI2RlZmluZSBqcGVnX3N0YXJ0X2NvbXByZXNzCWpTdHJ0Q29tcHJlc3MNCisjZGVmaW5lIGpwZWdfd3JpdGVfc2NhbmxpbmVzCWpXcnRTY2FubGluZXMNCisjZGVmaW5lIGpwZWdfZmluaXNoX2NvbXByZXNzCWpGaW5Db21wcmVzcw0KKyNkZWZpbmUganBlZ193cml0ZV9yYXdfZGF0YQlqV3J0UmF3RGF0YQ0KKyNkZWZpbmUganBlZ193cml0ZV9tYXJrZXIJaldydE1hcmtlcg0KKyNkZWZpbmUganBlZ193cml0ZV9tX2hlYWRlcglqV3J0TUhlYWRlcg0KKyNkZWZpbmUganBlZ193cml0ZV9tX2J5dGUJaldydE1CeXRlDQorI2RlZmluZSBqcGVnX3dyaXRlX3RhYmxlcwlqV3J0VGFibGVzDQorI2RlZmluZSBqcGVnX3JlYWRfaGVhZGVyCWpSZWFkSGVhZGVyDQorI2RlZmluZSBqcGVnX3N0YXJ0X2RlY29tcHJlc3MJalN0cnREZWNvbXByZXNzDQorI2RlZmluZSBqcGVnX3JlYWRfc2NhbmxpbmVzCWpSZWFkU2NhbmxpbmVzDQorI2RlZmluZSBqcGVnX2ZpbmlzaF9kZWNvbXByZXNzCWpGaW5EZWNvbXByZXNzDQorI2RlZmluZSBqcGVnX3JlYWRfcmF3X2RhdGEJalJlYWRSYXdEYXRhDQorI2RlZmluZSBqcGVnX2hhc19tdWx0aXBsZV9zY2FucwlqSGFzTXVsdFNjbg0KKyNkZWZpbmUganBlZ19zdGFydF9vdXRwdXQJalN0cnRPdXRwdXQNCisjZGVmaW5lIGpwZWdfZmluaXNoX291dHB1dAlqRmluT3V0cHV0DQorI2RlZmluZSBqcGVnX2lucHV0X2NvbXBsZXRlCWpJbkNvbXBsZXRlDQorI2RlZmluZSBqcGVnX25ld19jb2xvcm1hcAlqTmV3Q01hcA0KKyNkZWZpbmUganBlZ19jb25zdW1lX2lucHV0CWpDb25zdW1lSW5wdXQNCisjZGVmaW5lIGpwZWdfY2FsY19vdXRwdXRfZGltZW5zaW9ucwlqQ2FsY0RpbWVuc2lvbnMNCisjZGVmaW5lIGpwZWdfc2F2ZV9tYXJrZXJzCWpTYXZlTWFya2Vycw0KKyNkZWZpbmUganBlZ19zZXRfbWFya2VyX3Byb2Nlc3NvcglqU2V0TWFya2VyDQorI2RlZmluZSBqcGVnX3JlYWRfY29lZmZpY2llbnRzCWpSZWFkQ29lZnMNCisjZGVmaW5lIGpwZWdfd3JpdGVfY29lZmZpY2llbnRzCWpXcnRDb2Vmcw0KKyNkZWZpbmUganBlZ19jb3B5X2NyaXRpY2FsX3BhcmFtZXRlcnMJakNvcHlDcml0DQorI2RlZmluZSBqcGVnX2Fib3J0X2NvbXByZXNzCWpBYnJ0Q29tcHJlc3MNCisjZGVmaW5lIGpwZWdfYWJvcnRfZGVjb21wcmVzcwlqQWJydERlY29tcHJlc3MNCisjZGVmaW5lIGpwZWdfYWJvcnQJCWpBYm9ydA0KKyNkZWZpbmUganBlZ19kZXN0cm95CQlqRGVzdHJveQ0KKyNkZWZpbmUganBlZ19yZXN5bmNfdG9fcmVzdGFydAlqUmVzeW5jUmVzdGFydA0KKyNlbmRpZiAvKiBORUVEX1NIT1JUX0VYVEVSTkFMX05BTUVTICovDQorDQorDQorLyogRGVmYXVsdCBlcnJvci1tYW5hZ2VtZW50IHNldHVwICovDQorRVhURVJOKHN0cnVjdCBqcGVnX2Vycm9yX21nciAqKSBqcGVnX3N0ZF9lcnJvcg0KKwlKUFAoKHN0cnVjdCBqcGVnX2Vycm9yX21nciAqIGVycikpOw0KKw0KKy8qIEluaXRpYWxpemF0aW9uIG9mIEpQRUcgY29tcHJlc3Npb24gb2JqZWN0cy4NCisgKiBqcGVnX2NyZWF0ZV9jb21wcmVzcygpIGFuZCBqcGVnX2NyZWF0ZV9kZWNvbXByZXNzKCkgYXJlIHRoZSBleHBvcnRlZA0KKyAqIG5hbWVzIHRoYXQgYXBwbGljYXRpb25zIHNob3VsZCBjYWxsLiAgVGhlc2UgZXhwYW5kIHRvIGNhbGxzIG9uDQorICoganBlZ19DcmVhdGVDb21wcmVzcyBhbmQganBlZ19DcmVhdGVEZWNvbXByZXNzIHdpdGggYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHBhc3NlZCBmb3IgdmVyc2lvbiBtaXNtYXRjaCBjaGVja2luZy4NCisgKiBOQjogeW91IG11c3Qgc2V0IHVwIHRoZSBlcnJvci1tYW5hZ2VyIEJFRk9SRSBjYWxsaW5nIGpwZWdfY3JlYXRlX3h4eC4NCisgKi8NCisjZGVmaW5lIGpwZWdfY3JlYXRlX2NvbXByZXNzKGNpbmZvKSBcDQorICAgIGpwZWdfQ3JlYXRlQ29tcHJlc3MoKGNpbmZvKSwgSlBFR19MSUJfVkVSU0lPTiwgXA0KKwkJCShzaXplX3QpIHNpemVvZihzdHJ1Y3QganBlZ19jb21wcmVzc19zdHJ1Y3QpKQ0KKyNkZWZpbmUganBlZ19jcmVhdGVfZGVjb21wcmVzcyhjaW5mbykgXA0KKyAgICBqcGVnX0NyZWF0ZURlY29tcHJlc3MoKGNpbmZvKSwgSlBFR19MSUJfVkVSU0lPTiwgXA0KKwkJCSAgKHNpemVfdCkgc2l6ZW9mKHN0cnVjdCBqcGVnX2RlY29tcHJlc3Nfc3RydWN0KSkNCitFWFRFUk4odm9pZCkganBlZ19DcmVhdGVDb21wcmVzcyBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkgICAgICBpbnQgdmVyc2lvbiwgc2l6ZV90IHN0cnVjdHNpemUpKTsNCitFWFRFUk4odm9pZCkganBlZ19DcmVhdGVEZWNvbXByZXNzIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCWludCB2ZXJzaW9uLCBzaXplX3Qgc3RydWN0c2l6ZSkpOw0KKy8qIERlc3RydWN0aW9uIG9mIEpQRUcgY29tcHJlc3Npb24gb2JqZWN0cyAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX2Rlc3Ryb3lfY29tcHJlc3MgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqcGVnX2Rlc3Ryb3lfZGVjb21wcmVzcyBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisNCisjaWYgMA0KKy8qIFN0YW5kYXJkIGRhdGEgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2Vyczogc3RkaW8gc3RyZWFtcy4gKi8NCisvKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG9wZW5pbmcgdGhlIGZpbGUgYmVmb3JlIGFuZCBjbG9zaW5nIGFmdGVyLiAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX3N0ZGlvX2Rlc3QgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywgRlhTWVNfRklMRSAqIG91dGZpbGUpKTsNCitFWFRFUk4odm9pZCkganBlZ19zdGRpb19zcmMgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBGWFNZU19GSUxFICogaW5maWxlKSk7DQorI2VuZGlmDQorDQorLyogRGVmYXVsdCBwYXJhbWV0ZXIgc2V0dXAgZm9yIGNvbXByZXNzaW9uICovDQorRVhURVJOKHZvaWQpIGpwZWdfc2V0X2RlZmF1bHRzIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisvKiBDb21wcmVzc2lvbiBwYXJhbWV0ZXIgc2V0dXAgYWlkcyAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX3NldF9jb2xvcnNwYWNlIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCSAgICAgIEpfQ09MT1JfU1BBQ0UgY29sb3JzcGFjZSkpOw0KK0VYVEVSTih2b2lkKSBqcGVnX2RlZmF1bHRfY29sb3JzcGFjZSBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfc2V0X3F1YWxpdHkgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywgaW50IHF1YWxpdHksDQorCQkJCSAgIGJvb2xlYW4gZm9yY2VfYmFzZWxpbmUpKTsNCitFWFRFUk4odm9pZCkganBlZ19zZXRfbGluZWFyX3F1YWxpdHkgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgaW50IHNjYWxlX2ZhY3RvciwNCisJCQkJCSAgYm9vbGVhbiBmb3JjZV9iYXNlbGluZSkpOw0KK0VYVEVSTih2b2lkKSBqcGVnX2FkZF9xdWFudF90YWJsZSBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgd2hpY2hfdGJsLA0KKwkJCQkgICAgICAgY29uc3QgdW5zaWduZWQgaW50ICpiYXNpY190YWJsZSwNCisJCQkJICAgICAgIGludCBzY2FsZV9mYWN0b3IsDQorCQkJCSAgICAgICBib29sZWFuIGZvcmNlX2Jhc2VsaW5lKSk7DQorRVhURVJOKGludCkganBlZ19xdWFsaXR5X3NjYWxpbmcgSlBQKChpbnQgcXVhbGl0eSkpOw0KK0VYVEVSTih2b2lkKSBqcGVnX3NpbXBsZV9wcm9ncmVzc2lvbiBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfc3VwcHJlc3NfdGFibGVzIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCSAgICAgICBib29sZWFuIHN1cHByZXNzKSk7DQorRVhURVJOKEpRVUFOVF9UQkwgKikganBlZ19hbGxvY19xdWFudF90YWJsZSBKUFAoKGpfY29tbW9uX3B0ciBjaW5mbykpOw0KK0VYVEVSTihKSFVGRl9UQkwgKikganBlZ19hbGxvY19odWZmX3RhYmxlIEpQUCgoal9jb21tb25fcHRyIGNpbmZvKSk7DQorDQorLyogTWFpbiBlbnRyeSBwb2ludHMgZm9yIGNvbXByZXNzaW9uICovDQorRVhURVJOKHZvaWQpIGpwZWdfc3RhcnRfY29tcHJlc3MgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJICAgICAgYm9vbGVhbiB3cml0ZV9hbGxfdGFibGVzKSk7DQorRVhURVJOKEpESU1FTlNJT04pIGpwZWdfd3JpdGVfc2NhbmxpbmVzIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgICAgIEpTQU1QQVJSQVkgc2NhbmxpbmVzLA0KKwkJCQkJICAgICBKRElNRU5TSU9OIG51bV9saW5lcykpOw0KK0VYVEVSTih2b2lkKSBqcGVnX2ZpbmlzaF9jb21wcmVzcyBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorDQorLyogUmVwbGFjZXMganBlZ193cml0ZV9zY2FubGluZXMgd2hlbiB3cml0aW5nIHJhdyBkb3duc2FtcGxlZCBkYXRhLiAqLw0KK0VYVEVSTihKRElNRU5TSU9OKSBqcGVnX3dyaXRlX3Jhd19kYXRhIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgICAgSlNBTVBJTUFHRSBkYXRhLA0KKwkJCQkJICAgIEpESU1FTlNJT04gbnVtX2xpbmVzKSk7DQorDQorLyogV3JpdGUgYSBzcGVjaWFsIG1hcmtlci4gIFNlZSBsaWJqcGVnLmRvYyBjb25jZXJuaW5nIHNhZmUgdXNhZ2UuICovDQorRVhURVJOKHZvaWQpIGpwZWdfd3JpdGVfbWFya2VyDQorCUpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sIGludCBtYXJrZXIsDQorCSAgICAgY29uc3QgSk9DVEVUICogZGF0YXB0ciwgdW5zaWduZWQgaW50IGRhdGFsZW4pKTsNCisvKiBTYW1lLCBidXQgcGllY2VtZWFsLiAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX3dyaXRlX21faGVhZGVyDQorCUpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sIGludCBtYXJrZXIsIHVuc2lnbmVkIGludCBkYXRhbGVuKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfd3JpdGVfbV9ieXRlDQorCUpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sIGludCB2YWwpKTsNCisNCisvKiBBbHRlcm5hdGUgY29tcHJlc3Npb24gZnVuY3Rpb246IGp1c3Qgd3JpdGUgYW4gYWJicmV2aWF0ZWQgdGFibGUgZmlsZSAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX3dyaXRlX3RhYmxlcyBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorDQorLyogRGVjb21wcmVzc2lvbiBzdGFydHVwOiByZWFkIHN0YXJ0IG9mIEpQRUcgZGF0YXN0cmVhbSB0byBzZWUgd2hhdCdzIHRoZXJlICovDQorRVhURVJOKGludCkganBlZ19yZWFkX2hlYWRlciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCSAgYm9vbGVhbiByZXF1aXJlX2ltYWdlKSk7DQorLyogUmV0dXJuIHZhbHVlIGlzIG9uZSBvZjogKi8NCisjZGVmaW5lIEpQRUdfU1VTUEVOREVECQkwIC8qIFN1c3BlbmRlZCBkdWUgdG8gbGFjayBvZiBpbnB1dCBkYXRhICovDQorI2RlZmluZSBKUEVHX0hFQURFUl9PSwkJMSAvKiBGb3VuZCB2YWxpZCBpbWFnZSBkYXRhc3RyZWFtICovDQorI2RlZmluZSBKUEVHX0hFQURFUl9UQUJMRVNfT05MWQkyIC8qIEZvdW5kIHZhbGlkIHRhYmxlLXNwZWNzLW9ubHkgZGF0YXN0cmVhbSAqLw0KKy8qIElmIHlvdSBwYXNzIHJlcXVpcmVfaW1hZ2UgPSBUUlVFIChub3JtYWwgY2FzZSksIHlvdSBuZWVkIG5vdCBjaGVjayBmb3INCisgKiBhIFRBQkxFU19PTkxZIHJldHVybiBjb2RlOyBhbiBhYmJyZXZpYXRlZCBmaWxlIHdpbGwgY2F1c2UgYW4gZXJyb3IgZXhpdC4NCisgKiBKUEVHX1NVU1BFTkRFRCBpcyBvbmx5IHBvc3NpYmxlIGlmIHlvdSB1c2UgYSBkYXRhIHNvdXJjZSBtb2R1bGUgdGhhdCBjYW4NCisgKiBnaXZlIGEgc3VzcGVuc2lvbiByZXR1cm4gKHRoZSBzdGRpbyBzb3VyY2UgbW9kdWxlIGRvZXNuJ3QpLg0KKyAqLw0KKw0KKy8qIE1haW4gZW50cnkgcG9pbnRzIGZvciBkZWNvbXByZXNzaW9uICovDQorRVhURVJOKGJvb2xlYW4pIGpwZWdfc3RhcnRfZGVjb21wcmVzcyBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4oSkRJTUVOU0lPTikganBlZ19yZWFkX3NjYW5saW5lcyBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgICAgSlNBTVBBUlJBWSBzY2FubGluZXMsDQorCQkJCQkgICAgSkRJTUVOU0lPTiBtYXhfbGluZXMpKTsNCitFWFRFUk4oYm9vbGVhbikganBlZ19maW5pc2hfZGVjb21wcmVzcyBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisNCisvKiBSZXBsYWNlcyBqcGVnX3JlYWRfc2NhbmxpbmVzIHdoZW4gcmVhZGluZyByYXcgZG93bnNhbXBsZWQgZGF0YS4gKi8NCitFWFRFUk4oSkRJTUVOU0lPTikganBlZ19yZWFkX3Jhd19kYXRhIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgIEpTQU1QSU1BR0UgZGF0YSwNCisJCQkJCSAgIEpESU1FTlNJT04gbWF4X2xpbmVzKSk7DQorDQorLyogQWRkaXRpb25hbCBlbnRyeSBwb2ludHMgZm9yIGJ1ZmZlcmVkLWltYWdlIG1vZGUuICovDQorRVhURVJOKGJvb2xlYW4pIGpwZWdfaGFzX211bHRpcGxlX3NjYW5zIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTihib29sZWFuKSBqcGVnX3N0YXJ0X291dHB1dCBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCSAgICAgICBpbnQgc2Nhbl9udW1iZXIpKTsNCitFWFRFUk4oYm9vbGVhbikganBlZ19maW5pc2hfb3V0cHV0IEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTihib29sZWFuKSBqcGVnX2lucHV0X2NvbXBsZXRlIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqcGVnX25ld19jb2xvcm1hcCBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4oaW50KSBqcGVnX2NvbnN1bWVfaW5wdXQgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorLyogUmV0dXJuIHZhbHVlIGlzIG9uZSBvZjogKi8NCisvKiAjZGVmaW5lIEpQRUdfU1VTUEVOREVECTAgICAgU3VzcGVuZGVkIGR1ZSB0byBsYWNrIG9mIGlucHV0IGRhdGEgKi8NCisjZGVmaW5lIEpQRUdfUkVBQ0hFRF9TT1MJMSAvKiBSZWFjaGVkIHN0YXJ0IG9mIG5ldyBzY2FuICovDQorI2RlZmluZSBKUEVHX1JFQUNIRURfRU9JCTIgLyogUmVhY2hlZCBlbmQgb2YgaW1hZ2UgKi8NCisjZGVmaW5lIEpQRUdfUk9XX0NPTVBMRVRFRAkzIC8qIENvbXBsZXRlZCBvbmUgaU1DVSByb3cgKi8NCisjZGVmaW5lIEpQRUdfU0NBTl9DT01QTEVURUQJNCAvKiBDb21wbGV0ZWQgbGFzdCBpTUNVIHJvdyBvZiBhIHNjYW4gKi8NCisNCisvKiBQcmVjYWxjdWxhdGUgb3V0cHV0IGRpbWVuc2lvbnMgZm9yIGN1cnJlbnQgZGVjb21wcmVzc2lvbiBwYXJhbWV0ZXJzLiAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX2NhbGNfb3V0cHV0X2RpbWVuc2lvbnMgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorDQorLyogQ29udHJvbCBzYXZpbmcgb2YgQ09NIGFuZCBBUFBuIG1hcmtlcnMgaW50byBtYXJrZXJfbGlzdC4gKi8NCitFWFRFUk4odm9pZCkganBlZ19zYXZlX21hcmtlcnMNCisJSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgbWFya2VyX2NvZGUsDQorCSAgICAgdW5zaWduZWQgaW50IGxlbmd0aF9saW1pdCkpOw0KKw0KKy8qIEluc3RhbGwgYSBzcGVjaWFsIHByb2Nlc3NpbmcgbWV0aG9kIGZvciBDT00gb3IgQVBQbiBtYXJrZXJzLiAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX3NldF9tYXJrZXJfcHJvY2Vzc29yDQorCUpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgaW50IG1hcmtlcl9jb2RlLA0KKwkgICAgIGpwZWdfbWFya2VyX3BhcnNlcl9tZXRob2Qgcm91dGluZSkpOw0KKw0KKy8qIFJlYWQgb3Igd3JpdGUgcmF3IERDVCBjb2VmZmljaWVudHMgLS0tIHVzZWZ1bCBmb3IgbG9zc2xlc3MgdHJhbnNjb2RpbmcuICovDQorRVhURVJOKGp2aXJ0X2JhcnJheV9wdHIgKikganBlZ19yZWFkX2NvZWZmaWNpZW50cyBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkganBlZ193cml0ZV9jb2VmZmljaWVudHMgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAganZpcnRfYmFycmF5X3B0ciAqIGNvZWZfYXJyYXlzKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfY29weV9jcml0aWNhbF9wYXJhbWV0ZXJzIEpQUCgoal9kZWNvbXByZXNzX3B0ciBzcmNpbmZvLA0KKwkJCQkJCWpfY29tcHJlc3NfcHRyIGRzdGluZm8pKTsNCisNCisvKiBJZiB5b3UgY2hvb3NlIHRvIGFib3J0IGNvbXByZXNzaW9uIG9yIGRlY29tcHJlc3Npb24gYmVmb3JlIGNvbXBsZXRpbmcNCisgKiBqcGVnX2ZpbmlzaF8oZGUpY29tcHJlc3MsIHRoZW4geW91IG5lZWQgdG8gY2xlYW4gdXAgdG8gcmVsZWFzZSBtZW1vcnksDQorICogdGVtcG9yYXJ5IGZpbGVzLCBldGMuICBZb3UgY2FuIGp1c3QgY2FsbCBqcGVnX2Rlc3Ryb3lfKGRlKWNvbXByZXNzDQorICogaWYgeW91J3JlIGRvbmUgd2l0aCB0aGUgSlBFRyBvYmplY3QsIGJ1dCBpZiB5b3Ugd2FudCB0byBjbGVhbiBpdCB1cCBhbmQNCisgKiByZXVzZSBpdCwgY2FsbCB0aGlzOg0KKyAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX2Fib3J0X2NvbXByZXNzIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkganBlZ19hYm9ydF9kZWNvbXByZXNzIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKw0KKy8qIEdlbmVyaWMgdmVyc2lvbnMgb2YganBlZ19hYm9ydCBhbmQganBlZ19kZXN0cm95IHRoYXQgd29yayBvbiBlaXRoZXINCisgKiBmbGF2b3Igb2YgSlBFRyBvYmplY3QuICBUaGVzZSBtYXkgYmUgbW9yZSBjb252ZW5pZW50IGluIHNvbWUgcGxhY2VzLg0KKyAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX2Fib3J0IEpQUCgoal9jb21tb25fcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfZGVzdHJveSBKUFAoKGpfY29tbW9uX3B0ciBjaW5mbykpOw0KKw0KKy8qIERlZmF1bHQgcmVzdGFydC1tYXJrZXItcmVzeW5jIHByb2NlZHVyZSBmb3IgdXNlIGJ5IGRhdGEgc291cmNlIG1vZHVsZXMgKi8NCitFWFRFUk4oYm9vbGVhbikganBlZ19yZXN5bmNfdG9fcmVzdGFydCBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgICAgaW50IGRlc2lyZWQpKTsNCisNCisNCisvKiBUaGVzZSBtYXJrZXIgY29kZXMgYXJlIGV4cG9ydGVkIHNpbmNlIGFwcGxpY2F0aW9ucyBhbmQgZGF0YSBzb3VyY2UgbW9kdWxlcw0KKyAqIGFyZSBsaWtlbHkgdG8gd2FudCB0byB1c2UgdGhlbS4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfUlNUMAkweEQwCS8qIFJTVDAgbWFya2VyIGNvZGUgKi8NCisjZGVmaW5lIEpQRUdfRU9JCTB4RDkJLyogRU9JIG1hcmtlciBjb2RlICovDQorI2RlZmluZSBKUEVHX0FQUDAJMHhFMAkvKiBBUFAwIG1hcmtlciBjb2RlICovDQorI2RlZmluZSBKUEVHX0NPTQkweEZFCS8qIENPTSBtYXJrZXIgY29kZSAqLw0KKw0KKw0KKy8qIElmIHdlIGhhdmUgYSBicmFpbi1kYW1hZ2VkIGNvbXBpbGVyIHRoYXQgZW1pdHMgd2FybmluZ3MgKG9yIHdvcnNlLCBlcnJvcnMpDQorICogZm9yIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB0aGF0IGFyZSBuZXZlciBmaWxsZWQgaW4sIGtlZXAgaXQgcXVpZXQgYnkNCisgKiBzdXBwbHlpbmcgZHVtbXkgZGVmaW5pdGlvbnMgZm9yIHRoZSB2YXJpb3VzIHN1YnN0cnVjdHVyZXMuDQorICovDQorDQorI2lmZGVmIElOQ09NUExFVEVfVFlQRVNfQlJPS0VODQorI2lmbmRlZiBKUEVHX0lOVEVSTkFMUwkJLyogd2lsbCBiZSBkZWZpbmVkIGluIGpwZWdpbnQuaCAqLw0KK3N0cnVjdCBqdmlydF9zYXJyYXlfY29udHJvbCB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGp2aXJ0X2JhcnJheV9jb250cm9sIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19jb21wX21hc3RlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfY19tYWluX2NvbnRyb2xsZXIgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqcGVnX2NfcHJlcF9jb250cm9sbGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19jX2NvZWZfY29udHJvbGxlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfbWFya2VyX3dyaXRlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfY29sb3JfY29udmVydGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19kb3duc2FtcGxlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfZm9yd2FyZF9kY3QgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqcGVnX2VudHJvcHlfZW5jb2RlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfZGVjb21wX21hc3RlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfZF9tYWluX2NvbnRyb2xsZXIgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqcGVnX2RfY29lZl9jb250cm9sbGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19kX3Bvc3RfY29udHJvbGxlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfaW5wdXRfY29udHJvbGxlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfbWFya2VyX3JlYWRlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfZW50cm9weV9kZWNvZGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19pbnZlcnNlX2RjdCB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfdXBzYW1wbGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19jb2xvcl9kZWNvbnZlcnRlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfY29sb3JfcXVhbnRpemVyIHsgbG9uZyBkdW1teTsgfTsNCisjZW5kaWYgLyogSlBFR19JTlRFUk5BTFMgKi8NCisjZW5kaWYgLyogSU5DT01QTEVURV9UWVBFU19CUk9LRU4gKi8NCisNCisNCisvKg0KKyAqIFRoZSBKUEVHIGxpYnJhcnkgbW9kdWxlcyBkZWZpbmUgSlBFR19JTlRFUk5BTFMgYmVmb3JlIGluY2x1ZGluZyB0aGlzIGZpbGUuDQorICogVGhlIGludGVybmFsIHN0cnVjdHVyZSBkZWNsYXJhdGlvbnMgYXJlIHJlYWQgb25seSB3aGVuIHRoYXQgaXMgdHJ1ZS4NCisgKiBBcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGxpYnJhcnkgc2hvdWxkIG5vdCBpbmNsdWRlIGpwZWdpbnQuaCwgYnV0IG1heSB3aXNoDQorICogdG8gaW5jbHVkZSBqZXJyb3IuaC4NCisgKi8NCisNCisjaWZkZWYgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAianBlZ2ludC5oIgkJLyogZmV0Y2ggcHJpdmF0ZSBkZWNsYXJhdGlvbnMgKi8NCisjaW5jbHVkZSAiamVycm9yLmgiCQkvKiBmZXRjaCBlcnJvciBjb2RlcyB0b28gKi8NCisjZW5kaWYNCisNCisjZW5kaWYgLyogSlBFR0xJQl9IICovDQpkaWZmIC0tZ2l0IGEvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy96bGliL3pjb25mLmggYi9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL3psaWIvemNvbmYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTFmOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy96bGliL3pjb25mLmgKQEAgLTAsMCArMSw1MTkgQEAKKy8qIHpjb25mLmggLS0gY29uZmlndXJhdGlvbiBvZiB0aGUgemxpYiBjb21wcmVzc2lvbiBsaWJyYXJ5DQorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oDQorICovDQorDQorLyogQCgjKSAkSWQkICovDQorDQorI2lmbmRlZiBaQ09ORl9IDQorI2RlZmluZSBaQ09ORl9IDQorDQorLyoNCisgKiBJZiB5b3UgKnJlYWxseSogbmVlZCBhIHVuaXF1ZSBwcmVmaXggZm9yIGFsbCB0eXBlcyBhbmQgbGlicmFyeSBmdW5jdGlvbnMsDQorICogY29tcGlsZSB3aXRoIC1EWl9QUkVGSVguIFRoZSAic3RhbmRhcmQiIHpsaWIgc2hvdWxkIGJlIGNvbXBpbGVkIHdpdGhvdXQgaXQuDQorICogRXZlbiBiZXR0ZXIgdGhhbiBjb21waWxpbmcgd2l0aCAtRFpfUFJFRklYIHdvdWxkIGJlIHRvIHVzZSBjb25maWd1cmUgdG8gc2V0DQorICogdGhpcyBwZXJtYW5lbnRseSBpbiB6Y29uZi5oIHVzaW5nICIuL2NvbmZpZ3VyZSAtLXpwcmVmaXgiLg0KKyAqLw0KKyNpZmRlZiBaX1BSRUZJWCAgICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLw0KKyMgIGRlZmluZSBaX1BSRUZJWF9TRVQNCisNCisvKiBhbGwgbGlua2VkIHN5bWJvbHMgKi8NCisjICBkZWZpbmUgX2Rpc3RfY29kZSAgICAgICAgICAgIHpfX2Rpc3RfY29kZQ0KKyMgIGRlZmluZSBfbGVuZ3RoX2NvZGUgICAgICAgICAgel9fbGVuZ3RoX2NvZGUNCisjICBkZWZpbmUgX3RyX2FsaWduICAgICAgICAgICAgIHpfX3RyX2FsaWduDQorIyAgZGVmaW5lIF90cl9mbHVzaF9iaXRzICAgICAgICB6X190cl9mbHVzaF9iaXRzDQorIyAgZGVmaW5lIF90cl9mbHVzaF9ibG9jayAgICAgICB6X190cl9mbHVzaF9ibG9jaw0KKyMgIGRlZmluZSBfdHJfaW5pdCAgICAgICAgICAgICAgel9fdHJfaW5pdA0KKyMgIGRlZmluZSBfdHJfc3RvcmVkX2Jsb2NrICAgICAgel9fdHJfc3RvcmVkX2Jsb2NrDQorIyAgZGVmaW5lIF90cl90YWxseSAgICAgICAgICAgICB6X190cl90YWxseQ0KKyMgIGRlZmluZSBhZGxlcjMyICAgICAgICAgICAgICAgel9hZGxlcjMyDQorIyAgZGVmaW5lIGFkbGVyMzJfY29tYmluZSAgICAgICB6X2FkbGVyMzJfY29tYmluZQ0KKyMgIGRlZmluZSBhZGxlcjMyX2NvbWJpbmU2NCAgICAgel9hZGxlcjMyX2NvbWJpbmU2NA0KKyMgIGlmbmRlZiBaX1NPTE8NCisjICAgIGRlZmluZSBjb21wcmVzcyAgICAgICAgICAgICAgel9jb21wcmVzcw0KKyMgICAgZGVmaW5lIGNvbXByZXNzMiAgICAgICAgICAgICB6X2NvbXByZXNzMg0KKyMgICAgZGVmaW5lIGNvbXByZXNzQm91bmQgICAgICAgICB6X2NvbXByZXNzQm91bmQNCisjICBlbmRpZg0KKyMgIGRlZmluZSBjcmMzMiAgICAgICAgICAgICAgICAgel9jcmMzMg0KKyMgIGRlZmluZSBjcmMzMl9jb21iaW5lICAgICAgICAgel9jcmMzMl9jb21iaW5lDQorIyAgZGVmaW5lIGNyYzMyX2NvbWJpbmU2NCAgICAgICB6X2NyYzMyX2NvbWJpbmU2NA0KKyMgIGRlZmluZSBkZWZsYXRlICAgICAgICAgICAgICAgel9kZWZsYXRlDQorIyAgZGVmaW5lIGRlZmxhdGVCb3VuZCAgICAgICAgICB6X2RlZmxhdGVCb3VuZA0KKyMgIGRlZmluZSBkZWZsYXRlQ29weSAgICAgICAgICAgel9kZWZsYXRlQ29weQ0KKyMgIGRlZmluZSBkZWZsYXRlRW5kICAgICAgICAgICAgel9kZWZsYXRlRW5kDQorIyAgZGVmaW5lIGRlZmxhdGVJbml0Ml8gICAgICAgICB6X2RlZmxhdGVJbml0Ml8NCisjICBkZWZpbmUgZGVmbGF0ZUluaXRfICAgICAgICAgIHpfZGVmbGF0ZUluaXRfDQorIyAgZGVmaW5lIGRlZmxhdGVQYXJhbXMgICAgICAgICB6X2RlZmxhdGVQYXJhbXMNCisjICBkZWZpbmUgZGVmbGF0ZVBlbmRpbmcgICAgICAgIHpfZGVmbGF0ZVBlbmRpbmcNCisjICBkZWZpbmUgZGVmbGF0ZVByaW1lICAgICAgICAgIHpfZGVmbGF0ZVByaW1lDQorIyAgZGVmaW5lIGRlZmxhdGVSZXNldCAgICAgICAgICB6X2RlZmxhdGVSZXNldA0KKyMgIGRlZmluZSBkZWZsYXRlUmVzZXRLZWVwICAgICAgel9kZWZsYXRlUmVzZXRLZWVwDQorIyAgZGVmaW5lIGRlZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2RlZmxhdGVTZXREaWN0aW9uYXJ5DQorIyAgZGVmaW5lIGRlZmxhdGVTZXRIZWFkZXIgICAgICB6X2RlZmxhdGVTZXRIZWFkZXINCisjICBkZWZpbmUgZGVmbGF0ZVR1bmUgICAgICAgICAgIHpfZGVmbGF0ZVR1bmUNCisjICBkZWZpbmUgZGVmbGF0ZV9jb3B5cmlnaHQgICAgIHpfZGVmbGF0ZV9jb3B5cmlnaHQNCisjICBkZWZpbmUgZ2V0X2NyY190YWJsZSAgICAgICAgIHpfZ2V0X2NyY190YWJsZQ0KKyMgIGlmbmRlZiBaX1NPTE8NCisjICAgIGRlZmluZSBnel9lcnJvciAgICAgICAgICAgICAgel9nel9lcnJvcg0KKyMgICAgZGVmaW5lIGd6X2ludG1heCAgICAgICAgICAgICB6X2d6X2ludG1heA0KKyMgICAgZGVmaW5lIGd6X3N0cndpbmVycm9yICAgICAgICB6X2d6X3N0cndpbmVycm9yDQorIyAgICBkZWZpbmUgZ3pidWZmZXIgICAgICAgICAgICAgIHpfZ3pidWZmZXINCisjICAgIGRlZmluZSBnemNsZWFyZXJyICAgICAgICAgICAgel9nemNsZWFyZXJyDQorIyAgICBkZWZpbmUgZ3pjbG9zZSAgICAgICAgICAgICAgIHpfZ3pjbG9zZQ0KKyMgICAgZGVmaW5lIGd6Y2xvc2VfciAgICAgICAgICAgICB6X2d6Y2xvc2Vfcg0KKyMgICAgZGVmaW5lIGd6Y2xvc2VfdyAgICAgICAgICAgICB6X2d6Y2xvc2Vfdw0KKyMgICAgZGVmaW5lIGd6ZGlyZWN0ICAgICAgICAgICAgICB6X2d6ZGlyZWN0DQorIyAgICBkZWZpbmUgZ3pkb3BlbiAgICAgICAgICAgICAgIHpfZ3pkb3Blbg0KKyMgICAgZGVmaW5lIGd6ZW9mICAgICAgICAgICAgICAgICB6X2d6ZW9mDQorIyAgICBkZWZpbmUgZ3plcnJvciAgICAgICAgICAgICAgIHpfZ3plcnJvcg0KKyMgICAgZGVmaW5lIGd6Zmx1c2ggICAgICAgICAgICAgICB6X2d6Zmx1c2gNCisjICAgIGRlZmluZSBnemdldGMgICAgICAgICAgICAgICAgel9nemdldGMNCisjICAgIGRlZmluZSBnemdldGNfICAgICAgICAgICAgICAgel9nemdldGNfDQorIyAgICBkZWZpbmUgZ3pnZXRzICAgICAgICAgICAgICAgIHpfZ3pnZXRzDQorIyAgICBkZWZpbmUgZ3pvZmZzZXQgICAgICAgICAgICAgIHpfZ3pvZmZzZXQNCisjICAgIGRlZmluZSBnem9mZnNldDY0ICAgICAgICAgICAgel9nem9mZnNldDY0DQorIyAgICBkZWZpbmUgZ3pvcGVuICAgICAgICAgICAgICAgIHpfZ3pvcGVuDQorIyAgICBkZWZpbmUgZ3pvcGVuNjQgICAgICAgICAgICAgIHpfZ3pvcGVuNjQNCisjICAgIGlmZGVmIF9XSU4zMg0KKyMgICAgICBkZWZpbmUgZ3pvcGVuX3cgICAgICAgICAgICAgIHpfZ3pvcGVuX3cNCisjICAgIGVuZGlmDQorIyAgICBkZWZpbmUgZ3pwcmludGYgICAgICAgICAgICAgIHpfZ3pwcmludGYNCisjICAgIGRlZmluZSBnenZwcmludGYgICAgICAgICAgICAgel9nenZwcmludGYNCisjICAgIGRlZmluZSBnenB1dGMgICAgICAgICAgICAgICAgel9nenB1dGMNCisjICAgIGRlZmluZSBnenB1dHMgICAgICAgICAgICAgICAgel9nenB1dHMNCisjICAgIGRlZmluZSBnenJlYWQgICAgICAgICAgICAgICAgel9nenJlYWQNCisjICAgIGRlZmluZSBnenJld2luZCAgICAgICAgICAgICAgel9nenJld2luZA0KKyMgICAgZGVmaW5lIGd6c2VlayAgICAgICAgICAgICAgICB6X2d6c2Vlaw0KKyMgICAgZGVmaW5lIGd6c2VlazY0ICAgICAgICAgICAgICB6X2d6c2VlazY0DQorIyAgICBkZWZpbmUgZ3pzZXRwYXJhbXMgICAgICAgICAgIHpfZ3pzZXRwYXJhbXMNCisjICAgIGRlZmluZSBnenRlbGwgICAgICAgICAgICAgICAgel9nenRlbGwNCisjICAgIGRlZmluZSBnenRlbGw2NCAgICAgICAgICAgICAgel9nenRlbGw2NA0KKyMgICAgZGVmaW5lIGd6dW5nZXRjICAgICAgICAgICAgICB6X2d6dW5nZXRjDQorIyAgICBkZWZpbmUgZ3p3cml0ZSAgICAgICAgICAgICAgIHpfZ3p3cml0ZQ0KKyMgIGVuZGlmDQorIyAgZGVmaW5lIGluZmxhdGUgICAgICAgICAgICAgICB6X2luZmxhdGUNCisjICBkZWZpbmUgaW5mbGF0ZUJhY2sgICAgICAgICAgIHpfaW5mbGF0ZUJhY2sNCisjICBkZWZpbmUgaW5mbGF0ZUJhY2tFbmQgICAgICAgIHpfaW5mbGF0ZUJhY2tFbmQNCisjICBkZWZpbmUgaW5mbGF0ZUJhY2tJbml0XyAgICAgIHpfaW5mbGF0ZUJhY2tJbml0Xw0KKyMgIGRlZmluZSBpbmZsYXRlQ29weSAgICAgICAgICAgel9pbmZsYXRlQ29weQ0KKyMgIGRlZmluZSBpbmZsYXRlRW5kICAgICAgICAgICAgel9pbmZsYXRlRW5kDQorIyAgZGVmaW5lIGluZmxhdGVHZXRIZWFkZXIgICAgICB6X2luZmxhdGVHZXRIZWFkZXINCisjICBkZWZpbmUgaW5mbGF0ZUluaXQyXyAgICAgICAgIHpfaW5mbGF0ZUluaXQyXw0KKyMgIGRlZmluZSBpbmZsYXRlSW5pdF8gICAgICAgICAgel9pbmZsYXRlSW5pdF8NCisjICBkZWZpbmUgaW5mbGF0ZU1hcmsgICAgICAgICAgIHpfaW5mbGF0ZU1hcmsNCisjICBkZWZpbmUgaW5mbGF0ZVByaW1lICAgICAgICAgIHpfaW5mbGF0ZVByaW1lDQorIyAgZGVmaW5lIGluZmxhdGVSZXNldCAgICAgICAgICB6X2luZmxhdGVSZXNldA0KKyMgIGRlZmluZSBpbmZsYXRlUmVzZXQyICAgICAgICAgel9pbmZsYXRlUmVzZXQyDQorIyAgZGVmaW5lIGluZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2luZmxhdGVTZXREaWN0aW9uYXJ5DQorIyAgZGVmaW5lIGluZmxhdGVHZXREaWN0aW9uYXJ5ICB6X2luZmxhdGVHZXREaWN0aW9uYXJ5DQorIyAgZGVmaW5lIGluZmxhdGVTeW5jICAgICAgICAgICB6X2luZmxhdGVTeW5jDQorIyAgZGVmaW5lIGluZmxhdGVTeW5jUG9pbnQgICAgICB6X2luZmxhdGVTeW5jUG9pbnQNCisjICBkZWZpbmUgaW5mbGF0ZVVuZGVybWluZSAgICAgIHpfaW5mbGF0ZVVuZGVybWluZQ0KKyMgIGRlZmluZSBpbmZsYXRlUmVzZXRLZWVwICAgICAgel9pbmZsYXRlUmVzZXRLZWVwDQorIyAgZGVmaW5lIGluZmxhdGVfY29weXJpZ2h0ICAgICB6X2luZmxhdGVfY29weXJpZ2h0DQorIyAgZGVmaW5lIGluZmxhdGVfZmFzdCAgICAgICAgICB6X2luZmxhdGVfZmFzdA0KKyMgIGRlZmluZSBpbmZsYXRlX3RhYmxlICAgICAgICAgel9pbmZsYXRlX3RhYmxlDQorIyAgaWZuZGVmIFpfU09MTw0KKyMgICAgZGVmaW5lIHVuY29tcHJlc3MgICAgICAgICAgICB6X3VuY29tcHJlc3MNCisjICBlbmRpZg0KKyMgIGRlZmluZSB6RXJyb3IgICAgICAgICAgICAgICAgel96RXJyb3INCisjICBpZm5kZWYgWl9TT0xPDQorIyAgICBkZWZpbmUgemNhbGxvYyAgICAgICAgICAgICAgIHpfemNhbGxvYw0KKyMgICAgZGVmaW5lIHpjZnJlZSAgICAgICAgICAgICAgICB6X3pjZnJlZQ0KKyMgIGVuZGlmDQorIyAgZGVmaW5lIHpsaWJDb21waWxlRmxhZ3MgICAgICB6X3psaWJDb21waWxlRmxhZ3MNCisjICBkZWZpbmUgemxpYlZlcnNpb24gICAgICAgICAgIHpfemxpYlZlcnNpb24NCisNCisvKiBhbGwgemxpYiB0eXBlZGVmcyBpbiB6bGliLmggYW5kIHpjb25mLmggKi8NCisjICBkZWZpbmUgQnl0ZSAgICAgICAgICAgICAgICAgIHpfQnl0ZQ0KKyMgIGRlZmluZSBCeXRlZiAgICAgICAgICAgICAgICAgel9CeXRlZg0KKyMgIGRlZmluZSBhbGxvY19mdW5jICAgICAgICAgICAgel9hbGxvY19mdW5jDQorIyAgZGVmaW5lIGNoYXJmICAgICAgICAgICAgICAgICB6X2NoYXJmDQorIyAgZGVmaW5lIGZyZWVfZnVuYyAgICAgICAgICAgICB6X2ZyZWVfZnVuYw0KKyMgIGlmbmRlZiBaX1NPTE8NCisjICAgIGRlZmluZSBnekZpbGUgICAgICAgICAgICAgICAgel9nekZpbGUNCisjICBlbmRpZg0KKyMgIGRlZmluZSBnel9oZWFkZXIgICAgICAgICAgICAgel9nel9oZWFkZXINCisjICBkZWZpbmUgZ3pfaGVhZGVycCAgICAgICAgICAgIHpfZ3pfaGVhZGVycA0KKyMgIGRlZmluZSBpbl9mdW5jICAgICAgICAgICAgICAgel9pbl9mdW5jDQorIyAgZGVmaW5lIGludGYgICAgICAgICAgICAgICAgICB6X2ludGYNCisjICBkZWZpbmUgb3V0X2Z1bmMgICAgICAgICAgICAgIHpfb3V0X2Z1bmMNCisjICBkZWZpbmUgdUludCAgICAgICAgICAgICAgICAgIHpfdUludA0KKyMgIGRlZmluZSB1SW50ZiAgICAgICAgICAgICAgICAgel91SW50Zg0KKyMgIGRlZmluZSB1TG9uZyAgICAgICAgICAgICAgICAgel91TG9uZw0KKyMgIGRlZmluZSB1TG9uZ2YgICAgICAgICAgICAgICAgel91TG9uZ2YNCisjICBkZWZpbmUgdm9pZHAgICAgICAgICAgICAgICAgIHpfdm9pZHANCisjICBkZWZpbmUgdm9pZHBjICAgICAgICAgICAgICAgIHpfdm9pZHBjDQorIyAgZGVmaW5lIHZvaWRwZiAgICAgICAgICAgICAgICB6X3ZvaWRwZg0KKw0KKy8qIGFsbCB6bGliIHN0cnVjdHMgaW4gemxpYi5oIGFuZCB6Y29uZi5oICovDQorIyAgZGVmaW5lIGd6X2hlYWRlcl9zICAgICAgICAgICB6X2d6X2hlYWRlcl9zDQorIyAgZGVmaW5lIGludGVybmFsX3N0YXRlICAgICAgICB6X2ludGVybmFsX3N0YXRlDQorDQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoX19NU0RPU19fKSAmJiAhZGVmaW5lZChNU0RPUykNCisjICBkZWZpbmUgTVNET1MNCisjZW5kaWYNCisjaWYgKGRlZmluZWQoT1NfMikgfHwgZGVmaW5lZChfX09TMl9fKSkgJiYgIWRlZmluZWQoT1MyKQ0KKyMgIGRlZmluZSBPUzINCisjZW5kaWYNCisjaWYgZGVmaW5lZChfV0lORE9XUykgJiYgIWRlZmluZWQoV0lORE9XUykNCisjICBkZWZpbmUgV0lORE9XUw0KKyNlbmRpZg0KKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lOMzJfV0NFKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykNCisjICBpZm5kZWYgV0lOMzINCisjICAgIGRlZmluZSBXSU4zMg0KKyMgIGVuZGlmDQorI2VuZGlmDQorI2lmIChkZWZpbmVkKE1TRE9TKSB8fCBkZWZpbmVkKE9TMikgfHwgZGVmaW5lZChXSU5ET1dTKSkgJiYgIWRlZmluZWQoV0lOMzIpDQorIyAgaWYgIWRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fRkxBVF9fKSAmJiAhZGVmaW5lZChfXzM4Nl9fKQ0KKyMgICAgaWZuZGVmIFNZUzE2QklUDQorIyAgICAgIGRlZmluZSBTWVMxNkJJVA0KKyMgICAgZW5kaWYNCisjICBlbmRpZg0KKyNlbmRpZg0KKw0KKy8qDQorICogQ29tcGlsZSB3aXRoIC1ETUFYU0VHXzY0SyBpZiB0aGUgYWxsb2MgZnVuY3Rpb24gY2Fubm90IGFsbG9jYXRlIG1vcmUNCisgKiB0aGFuIDY0ayBieXRlcyBhdCBhIHRpbWUgKG5lZWRlZCBvbiBzeXN0ZW1zIHdpdGggMTYtYml0IGludCkuDQorICovDQorI2lmZGVmIFNZUzE2QklUDQorIyAgZGVmaW5lIE1BWFNFR182NEsNCisjZW5kaWYNCisjaWZkZWYgTVNET1MNCisjICBkZWZpbmUgVU5BTElHTkVEX09LDQorI2VuZGlmDQorDQorI2lmZGVmIF9fU1REQ19WRVJTSU9OX18NCisjICBpZm5kZWYgU1REQw0KKyMgICAgZGVmaW5lIFNUREMNCisjICBlbmRpZg0KKyMgIGlmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTA0KKyMgICAgaWZuZGVmIFNUREM5OQ0KKyMgICAgICBkZWZpbmUgU1REQzk5DQorIyAgICBlbmRpZg0KKyMgIGVuZGlmDQorI2VuZGlmDQorI2lmICFkZWZpbmVkKFNUREMpICYmIChkZWZpbmVkKF9fU1REQ19fKSB8fCBkZWZpbmVkKF9fY3BsdXNwbHVzKSkNCisjICBkZWZpbmUgU1REQw0KKyNlbmRpZg0KKyNpZiAhZGVmaW5lZChTVERDKSAmJiAoZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pKQ0KKyMgIGRlZmluZSBTVERDDQorI2VuZGlmDQorI2lmICFkZWZpbmVkKFNUREMpICYmIChkZWZpbmVkKE1TRE9TKSB8fCBkZWZpbmVkKFdJTkRPV1MpIHx8IGRlZmluZWQoV0lOMzIpKQ0KKyMgIGRlZmluZSBTVERDDQorI2VuZGlmDQorI2lmICFkZWZpbmVkKFNUREMpICYmIChkZWZpbmVkKE9TMikgfHwgZGVmaW5lZChfX0hPU19BSVhfXykpDQorIyAgZGVmaW5lIFNUREMNCisjZW5kaWYNCisNCisjaWYgZGVmaW5lZChfX09TNDAwX18pICYmICFkZWZpbmVkKFNUREMpICAgIC8qIGlTZXJpZXMgKGZvcm1lcmx5IEFTLzQwMCkuICovDQorIyAgZGVmaW5lIFNUREMNCisjZW5kaWYNCisNCisjaWZuZGVmIFNUREMNCisjICBpZm5kZWYgY29uc3QgLyogY2Fubm90IHVzZSAhZGVmaW5lZChTVERDKSAmJiAhZGVmaW5lZChjb25zdCkgb24gTWFjICovDQorIyAgICBkZWZpbmUgY29uc3QgICAgICAgLyogbm90ZTogbmVlZCBhIG1vcmUgZ2VudGxlIHNvbHV0aW9uIGhlcmUgKi8NCisjICBlbmRpZg0KKyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkKFpMSUJfQ09OU1QpICYmICFkZWZpbmVkKHpfY29uc3QpDQorIyAgZGVmaW5lIHpfY29uc3QgY29uc3QNCisjZWxzZQ0KKyMgIGRlZmluZSB6X2NvbnN0DQorI2VuZGlmDQorDQorLyogU29tZSBNYWMgY29tcGlsZXJzIG1lcmdlIGFsbCAuaCBmaWxlcyBpbmNvcnJlY3RseTogKi8NCisjaWYgZGVmaW5lZChfX01XRVJLU19fKXx8ZGVmaW5lZChhcHBsZWMpfHxkZWZpbmVkKFRISU5LX0MpfHxkZWZpbmVkKF9fU0NfXykNCisjICBkZWZpbmUgTk9fRFVNTVlfREVDTA0KKyNlbmRpZg0KKw0KKy8qIE1heGltdW0gdmFsdWUgZm9yIG1lbUxldmVsIGluIGRlZmxhdGVJbml0MiAqLw0KKyNpZm5kZWYgTUFYX01FTV9MRVZFTA0KKyMgIGlmZGVmIE1BWFNFR182NEsNCisjICAgIGRlZmluZSBNQVhfTUVNX0xFVkVMIDgNCisjICBlbHNlDQorIyAgICBkZWZpbmUgTUFYX01FTV9MRVZFTCA5DQorIyAgZW5kaWYNCisjZW5kaWYNCisNCisvKiBNYXhpbXVtIHZhbHVlIGZvciB3aW5kb3dCaXRzIGluIGRlZmxhdGVJbml0MiBhbmQgaW5mbGF0ZUluaXQyLg0KKyAqIFdBUk5JTkc6IHJlZHVjaW5nIE1BWF9XQklUUyBtYWtlcyBtaW5pZ3ppcCB1bmFibGUgdG8gZXh0cmFjdCAuZ3ogZmlsZXMNCisgKiBjcmVhdGVkIGJ5IGd6aXAuIChGaWxlcyBjcmVhdGVkIGJ5IG1pbmlnemlwIGNhbiBzdGlsbCBiZSBleHRyYWN0ZWQgYnkNCisgKiBnemlwLikNCisgKi8NCisjaWZuZGVmIE1BWF9XQklUUw0KKyMgIGRlZmluZSBNQVhfV0JJVFMgICAxNSAvKiAzMksgTFo3NyB3aW5kb3cgKi8NCisjZW5kaWYNCisNCisvKiBUaGUgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgZGVmbGF0ZSBhcmUgKGluIGJ5dGVzKToNCisgICAgICAgICAgICAoMSA8PCAod2luZG93Qml0cysyKSkgKyAgKDEgPDwgKG1lbUxldmVsKzkpKQ0KKyB0aGF0IGlzOiAxMjhLIGZvciB3aW5kb3dCaXRzPTE1ICArICAxMjhLIGZvciBtZW1MZXZlbCA9IDggIChkZWZhdWx0IHZhbHVlcykNCisgcGx1cyBhIGZldyBraWxvYnl0ZXMgZm9yIHNtYWxsIG9iamVjdHMuIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byByZWR1Y2UNCisgdGhlIGRlZmF1bHQgbWVtb3J5IHJlcXVpcmVtZW50cyBmcm9tIDI1NksgdG8gMTI4SywgY29tcGlsZSB3aXRoDQorICAgICBtYWtlIENGTEFHUz0iLU8gLURNQVhfV0JJVFM9MTQgLURNQVhfTUVNX0xFVkVMPTciDQorIE9mIGNvdXJzZSB0aGlzIHdpbGwgZ2VuZXJhbGx5IGRlZ3JhZGUgY29tcHJlc3Npb24gKHRoZXJlJ3Mgbm8gZnJlZSBsdW5jaCkuDQorDQorICAgVGhlIG1lbW9yeSByZXF1aXJlbWVudHMgZm9yIGluZmxhdGUgYXJlIChpbiBieXRlcykgMSA8PCB3aW5kb3dCaXRzDQorIHRoYXQgaXMsIDMySyBmb3Igd2luZG93Qml0cz0xNSAoZGVmYXVsdCB2YWx1ZSkgcGx1cyBhIGZldyBraWxvYnl0ZXMNCisgZm9yIHNtYWxsIG9iamVjdHMuDQorKi8NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUeXBlIGRlY2xhcmF0aW9ucyAqLw0KKw0KKyNpZm5kZWYgT0YgLyogZnVuY3Rpb24gcHJvdG90eXBlcyAqLw0KKyMgIGlmZGVmIFNUREMNCisjICAgIGRlZmluZSBPRihhcmdzKSAgYXJncw0KKyMgIGVsc2UNCisjICAgIGRlZmluZSBPRihhcmdzKSAgKCkNCisjICBlbmRpZg0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgWl9BUkcgLyogZnVuY3Rpb24gcHJvdG90eXBlcyBmb3Igc3RkYXJnICovDQorIyAgaWYgZGVmaW5lZChTVERDKSB8fCBkZWZpbmVkKFpfSEFWRV9TVERBUkdfSCkNCisjICAgIGRlZmluZSBaX0FSRyhhcmdzKSAgYXJncw0KKyMgIGVsc2UNCisjICAgIGRlZmluZSBaX0FSRyhhcmdzKSAgKCkNCisjICBlbmRpZg0KKyNlbmRpZg0KKw0KKy8qIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgZm9yIEZBUiBhcmUgbmVlZGVkIG9ubHkgZm9yIE1TRE9TIG1peGVkDQorICogbW9kZWwgcHJvZ3JhbW1pbmcgKHNtYWxsIG9yIG1lZGl1bSBtb2RlbCB3aXRoIHNvbWUgZmFyIGFsbG9jYXRpb25zKS4NCisgKiBUaGlzIHdhcyB0ZXN0ZWQgb25seSB3aXRoIE1TQzsgZm9yIG90aGVyIE1TRE9TIGNvbXBpbGVycyB5b3UgbWF5IGhhdmUNCisgKiB0byBkZWZpbmUgTk9fTUVNQ1BZIGluIHp1dGlsLmguICBJZiB5b3UgZG9uJ3QgbmVlZCB0aGUgbWl4ZWQgbW9kZWwsDQorICoganVzdCBkZWZpbmUgRkFSIHRvIGJlIGVtcHR5Lg0KKyAqLw0KKyNpZmRlZiBTWVMxNkJJVA0KKyMgIGlmIGRlZmluZWQoTV9JODZTTSkgfHwgZGVmaW5lZChNX0k4Nk1NKQ0KKyAgICAgLyogTVNDIHNtYWxsIG9yIG1lZGl1bSBtb2RlbCAqLw0KKyMgICAgZGVmaW5lIFNNQUxMX01FRElVTQ0KKyMgICAgaWZkZWYgX01TQ19WRVINCisjICAgICAgZGVmaW5lIEZBUiBfZmFyDQorIyAgICBlbHNlDQorIyAgICAgIGRlZmluZSBGQVIgZmFyDQorIyAgICBlbmRpZg0KKyMgIGVuZGlmDQorIyAgaWYgKGRlZmluZWQoX19TTUFMTF9fKSB8fCBkZWZpbmVkKF9fTUVESVVNX18pKQ0KKyAgICAgLyogVHVyYm8gQyBzbWFsbCBvciBtZWRpdW0gbW9kZWwgKi8NCisjICAgIGRlZmluZSBTTUFMTF9NRURJVU0NCisjICAgIGlmZGVmIF9fQk9STEFORENfXw0KKyMgICAgICBkZWZpbmUgRkFSIF9mYXINCisjICAgIGVsc2UNCisjICAgICAgZGVmaW5lIEZBUiBmYXINCisjICAgIGVuZGlmDQorIyAgZW5kaWYNCisjZW5kaWYNCisNCisjaWYgZGVmaW5lZChXSU5ET1dTKSB8fCBkZWZpbmVkKFdJTjMyKQ0KKyAgIC8qIElmIGJ1aWxkaW5nIG9yIHVzaW5nIHpsaWIgYXMgYSBETEwsIGRlZmluZSBaTElCX0RMTC4NCisgICAgKiBUaGlzIGlzIG5vdCBtYW5kYXRvcnksIGJ1dCBpdCBvZmZlcnMgYSBsaXR0bGUgcGVyZm9ybWFuY2UgaW5jcmVhc2UuDQorICAgICovDQorIyAgaWZkZWYgWkxJQl9ETEwNCisjICAgIGlmIGRlZmluZWQoV0lOMzIpICYmICghZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IChfX0JPUkxBTkRDX18gPj0gMHg1MDApKQ0KKyMgICAgICBpZmRlZiBaTElCX0lOVEVSTkFMDQorIyAgICAgICAgZGVmaW5lIFpFWFRFUk4gZXh0ZXJuIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQ0KKyMgICAgICBlbHNlDQorIyAgICAgICAgZGVmaW5lIFpFWFRFUk4gZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KKyMgICAgICBlbmRpZg0KKyMgICAgZW5kaWYNCisjICBlbmRpZiAgLyogWkxJQl9ETEwgKi8NCisgICAvKiBJZiBidWlsZGluZyBvciB1c2luZyB6bGliIHdpdGggdGhlIFdJTkFQSS9XSU5BUElWIGNhbGxpbmcgY29udmVudGlvbiwNCisgICAgKiBkZWZpbmUgWkxJQl9XSU5BUEkuDQorICAgICogQ2F1dGlvbjogdGhlIHN0YW5kYXJkIFpMSUIxLkRMTCBpcyBOT1QgY29tcGlsZWQgdXNpbmcgWkxJQl9XSU5BUEkuDQorICAgICovDQorIyAgaWZkZWYgWkxJQl9XSU5BUEkNCisjICAgIGlmZGVmIEZBUg0KKyMgICAgICB1bmRlZiBGQVINCisjICAgIGVuZGlmDQorIyAgICBpbmNsdWRlIDx3aW5kb3dzLmg+DQorICAgICAvKiBObyBuZWVkIGZvciBfZXhwb3J0LCB1c2UgWkxJQi5ERUYgaW5zdGVhZC4gKi8NCisgICAgIC8qIEZvciBjb21wbGV0ZSBXaW5kb3dzIGNvbXBhdGliaWxpdHksIHVzZSBXSU5BUEksIG5vdCBfX3N0ZGNhbGwuICovDQorIyAgICBkZWZpbmUgWkVYUE9SVCBXSU5BUEkNCisjICAgIGlmZGVmIFdJTjMyDQorIyAgICAgIGRlZmluZSBaRVhQT1JUVkEgV0lOQVBJVg0KKyMgICAgZWxzZQ0KKyMgICAgICBkZWZpbmUgWkVYUE9SVFZBIEZBUiBDREVDTA0KKyMgICAgZW5kaWYNCisjICBlbmRpZg0KKyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkIChfX0JFT1NfXykNCisjICBpZmRlZiBaTElCX0RMTA0KKyMgICAgaWZkZWYgWkxJQl9JTlRFUk5BTA0KKyMgICAgICBkZWZpbmUgWkVYUE9SVCAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQ0KKyMgICAgICBkZWZpbmUgWkVYUE9SVFZBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQ0KKyMgICAgZWxzZQ0KKyMgICAgICBkZWZpbmUgWkVYUE9SVCAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KKyMgICAgICBkZWZpbmUgWkVYUE9SVFZBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KKyMgICAgZW5kaWYNCisjICBlbmRpZg0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgWkVYVEVSTg0KKyMgIGRlZmluZSBaRVhURVJOIGV4dGVybg0KKyNlbmRpZg0KKyNpZm5kZWYgWkVYUE9SVA0KKyMgIGRlZmluZSBaRVhQT1JUDQorI2VuZGlmDQorI2lmbmRlZiBaRVhQT1JUVkENCisjICBkZWZpbmUgWkVYUE9SVFZBDQorI2VuZGlmDQorDQorI2lmbmRlZiBGQVINCisjICBkZWZpbmUgRkFSDQorI2VuZGlmDQorDQorI2lmICFkZWZpbmVkKF9fTUFDVFlQRVNfXykNCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgIEJ5dGU7ICAvKiA4IGJpdHMgKi8NCisjZW5kaWYNCit0eXBlZGVmIHVuc2lnbmVkIGludCAgIHVJbnQ7ICAvKiAxNiBiaXRzIG9yIG1vcmUgKi8NCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgIHVMb25nOyAvKiAzMiBiaXRzIG9yIG1vcmUgKi8NCisNCisjaWZkZWYgU01BTExfTUVESVVNDQorICAgLyogQm9ybGFuZCBDL0MrKyBhbmQgc29tZSBvbGQgTVNDIHZlcnNpb25zIGlnbm9yZSBGQVIgaW5zaWRlIHR5cGVkZWYgKi8NCisjICBkZWZpbmUgQnl0ZWYgQnl0ZSBGQVINCisjZWxzZQ0KKyAgIHR5cGVkZWYgQnl0ZSAgRkFSIEJ5dGVmOw0KKyNlbmRpZg0KK3R5cGVkZWYgY2hhciAgRkFSIGNoYXJmOw0KK3R5cGVkZWYgaW50ICAgRkFSIGludGY7DQordHlwZWRlZiB1SW50ICBGQVIgdUludGY7DQordHlwZWRlZiB1TG9uZyBGQVIgdUxvbmdmOw0KKw0KKyNpZmRlZiBTVERDDQorICAgdHlwZWRlZiB2b2lkIGNvbnN0ICp2b2lkcGM7DQorICAgdHlwZWRlZiB2b2lkIEZBUiAgICp2b2lkcGY7DQorICAgdHlwZWRlZiB2b2lkICAgICAgICp2b2lkcDsNCisjZWxzZQ0KKyAgIHR5cGVkZWYgQnl0ZSBjb25zdCAqdm9pZHBjOw0KKyAgIHR5cGVkZWYgQnl0ZSBGQVIgICAqdm9pZHBmOw0KKyAgIHR5cGVkZWYgQnl0ZSAgICAgICAqdm9pZHA7DQorI2VuZGlmDQorDQorI2lmICFkZWZpbmVkKFpfVTQpICYmICFkZWZpbmVkKFpfU09MTykgJiYgZGVmaW5lZChTVERDKQ0KKyMgIGluY2x1ZGUgPGxpbWl0cy5oPg0KKyMgIGlmIChVSU5UX01BWCA9PSAweGZmZmZmZmZmVUwpDQorIyAgICBkZWZpbmUgWl9VNCB1bnNpZ25lZA0KKyMgIGVsaWYgKFVMT05HX01BWCA9PSAweGZmZmZmZmZmVUwpDQorIyAgICBkZWZpbmUgWl9VNCB1bnNpZ25lZCBsb25nDQorIyAgZWxpZiAoVVNIUlRfTUFYID09IDB4ZmZmZmZmZmZVTCkNCisjICAgIGRlZmluZSBaX1U0IHVuc2lnbmVkIHNob3J0DQorIyAgZW5kaWYNCisjZW5kaWYNCisNCisjaWZkZWYgWl9VNA0KKyAgIHR5cGVkZWYgWl9VNCB6X2NyY190Ow0KKyNlbHNlDQorICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHpfY3JjX3Q7DQorI2VuZGlmDQorDQorI2lmIDAJCQkJLyogU3VubGlhbmcuTGl1IDIwMTAwOTA4IHN5bmMgdGhlIGNvbmZpZyB0byB0aGUgb2xkIHJldmlzaW9uLCBvdGhlcndpc2UsIGV2YyBjb21waWxlIGZhaWxlZC4gKi8NCisjaWZkZWYgSEFWRV9VTklTVERfSCAgICAvKiBtYXkgYmUgc2V0IHRvICNpZiAxIGJ5IC4vY29uZmlndXJlICovDQorIyAgZGVmaW5lIFpfSEFWRV9VTklTVERfSA0KKyNlbmRpZg0KKyNlbmRpZiAvKiAwICovDQorDQorI2lmZGVmIEhBVkVfU1REQVJHX0ggICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLw0KKyMgIGRlZmluZSBaX0hBVkVfU1REQVJHX0gNCisjZW5kaWYNCisNCisjaWYgMAkJCQkvKiBTdW5saWFuZy5MaXUgMjAxMDA5MDggc3luYyB0aGUgY29uZmlnIHRvIHRoZSBvbGQgcmV2aXNpb24sIG90aGVyd2lzZSwgZXZjIGNvbXBpbGUgZmFpbGVkLiAqLw0KKyNpZmRlZiBTVERDDQorIyAgaWZuZGVmIFpfU09MTw0KKyMgICAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAgICAgLyogZm9yIG9mZl90ICovDQorIyAgZW5kaWYNCisjZW5kaWYNCisjZW5kaWYgLyogMCAqLw0KKw0KKyNpZiBkZWZpbmVkKFNUREMpIHx8IGRlZmluZWQoWl9IQVZFX1NUREFSR19IKQ0KKyMgIGlmbmRlZiBaX1NPTE8NCisjICAgIGluY2x1ZGUgPHN0ZGFyZy5oPiAgICAgICAgIC8qIGZvciB2YV9saXN0ICovDQorIyAgZW5kaWYNCisjZW5kaWYNCisNCisjaWZkZWYgX1dJTjMyDQorIyAgaWZuZGVmIFpfU09MTw0KKyMgICAgaW5jbHVkZSA8c3RkZGVmLmg+ICAgICAgICAgLyogZm9yIHdjaGFyX3QgKi8NCisjICBlbmRpZg0KKyNlbmRpZg0KKw0KKyNpZiAwCQkJCS8qIFN1bmxpYW5nLkxpdSAyMDEwMDkwOCBzeW5jIHRoZSBjb25maWcgdG8gdGhlIG9sZCByZXZpc2lvbiwgb3RoZXJ3aXNlLCBldmMgY29tcGlsZSBmYWlsZWQuICovDQorLyogYSBsaXR0bGUgdHJpY2sgdG8gYWNjb21tb2RhdGUgYm90aCAiI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIiBhbmQNCisgKiAiI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIDEiIGFzIHJlcXVlc3RpbmcgNjQtYml0IG9wZXJhdGlvbnMsIChldmVuDQorICogdGhvdWdoIHRoZSBmb3JtZXIgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgTEZTIGRvY3VtZW50KSwgYnV0IGNvbnNpZGVyaW5nDQorICogYm90aCAiI3VuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UiIGFuZCAiI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIDAiIGFzDQorICogZXF1aXZhbGVudGx5IHJlcXVlc3Rpbmcgbm8gNjQtYml0IG9wZXJhdGlvbnMNCisgKi8NCisjaWYgZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKSAmJiAtX0xBUkdFRklMRTY0X1NPVVJDRSAtIC0xID09IDENCisjICB1bmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFDQorI2VuZGlmDQorI2VuZGlmIC8qIDAgKi8NCisNCisjaWYgZGVmaW5lZChfX1dBVENPTUNfXykgJiYgIWRlZmluZWQoWl9IQVZFX1VOSVNURF9IKQ0KKyMgIGRlZmluZSBaX0hBVkVfVU5JU1REX0gNCisjZW5kaWYNCisjaWZuZGVmIFpfU09MTw0KKyNpZiAwCQkJCS8qIFN1bmxpYW5nLkxpdSAyMDEwMDkwOCBzeW5jIHRoZSBjb25maWcgdG8gdGhlIG9sZCByZXZpc2lvbiwgb3RoZXJ3aXNlLCBldmMgY29tcGlsZSBmYWlsZWQuICovDQorIyAgaWYgZGVmaW5lZChaX0hBVkVfVU5JU1REX0gpIHx8IGRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkNCisjICAgIGluY2x1ZGUgPHVuaXN0ZC5oPiAgICAgICAgIC8qIGZvciBTRUVLXyosIG9mZl90LCBhbmQgX0xGUzY0X0xBUkdFRklMRSAqLw0KKyMgICAgaWZkZWYgVk1TDQorIyAgICAgIGluY2x1ZGUgPHVuaXhpby5oPiAgICAgICAvKiBmb3Igb2ZmX3QgKi8NCisjICAgIGVuZGlmDQorIyAgICBpZm5kZWYgel9vZmZfdA0KKyMgICAgICBkZWZpbmUgel9vZmZfdCBvZmZfdA0KKyMgICAgZW5kaWYNCisjICBlbmRpZg0KKyNlbmRpZiAvKiAwICovDQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoX0xGUzY0X0xBUkdFRklMRSkgJiYgX0xGUzY0X0xBUkdFRklMRS0wDQorIyAgZGVmaW5lIFpfTEZTNjQNCisjZW5kaWYNCisNCisjaWYgZGVmaW5lZChfTEFSR0VGSUxFNjRfU09VUkNFKSAmJiBkZWZpbmVkKFpfTEZTNjQpDQorIyAgZGVmaW5lIFpfTEFSR0U2NA0KKyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUy0wID09IDY0ICYmIGRlZmluZWQoWl9MRlM2NCkNCisjICBkZWZpbmUgWl9XQU5UNjQNCisjZW5kaWYNCisNCisjaWYgIWRlZmluZWQoU0VFS19TRVQpICYmICFkZWZpbmVkKFpfU09MTykNCisjICBkZWZpbmUgU0VFS19TRVQgICAgICAgIDAgICAgICAgLyogU2VlayBmcm9tIGJlZ2lubmluZyBvZiBmaWxlLiAgKi8NCisjICBkZWZpbmUgU0VFS19DVVIgICAgICAgIDEgICAgICAgLyogU2VlayBmcm9tIGN1cnJlbnQgcG9zaXRpb24uICAqLw0KKyMgIGRlZmluZSBTRUVLX0VORCAgICAgICAgMiAgICAgICAvKiBTZXQgZmlsZSBwb2ludGVyIHRvIEVPRiBwbHVzICJvZmZzZXQiICovDQorI2VuZGlmDQorDQorI2lmbmRlZiB6X29mZl90DQorIyAgZGVmaW5lIHpfb2ZmX3QgbG9uZw0KKyNlbmRpZg0KKw0KKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoWl9MQVJHRTY0KQ0KKyMgIGRlZmluZSB6X29mZjY0X3Qgb2ZmNjRfdA0KKyNlbHNlDQorIyAgaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChaX1NPTE8pDQorIyAgICBkZWZpbmUgel9vZmY2NF90IF9faW50NjQNCisjICBlbHNlDQorIyAgICBkZWZpbmUgel9vZmY2NF90IHpfb2ZmX3QNCisjICBlbmRpZg0KKyNlbmRpZg0KKw0KKy8qIE1WUyBsaW5rZXIgZG9lcyBub3Qgc3VwcG9ydCBleHRlcm5hbCBuYW1lcyBsYXJnZXIgdGhhbiA4IGJ5dGVzICovDQorI2lmIGRlZmluZWQoX19NVlNfXykNCisgICNwcmFnbWEgbWFwKGRlZmxhdGVJbml0XywiREVJTiIpDQorICAjcHJhZ21hIG1hcChkZWZsYXRlSW5pdDJfLCJERUlOMiIpDQorICAjcHJhZ21hIG1hcChkZWZsYXRlRW5kLCJERUVORCIpDQorICAjcHJhZ21hIG1hcChkZWZsYXRlQm91bmQsIkRFQk5EIikNCisgICNwcmFnbWEgbWFwKGluZmxhdGVJbml0XywiSU5JTiIpDQorICAjcHJhZ21hIG1hcChpbmZsYXRlSW5pdDJfLCJJTklOMiIpDQorICAjcHJhZ21hIG1hcChpbmZsYXRlRW5kLCJJTkVORCIpDQorICAjcHJhZ21hIG1hcChpbmZsYXRlU3luYywiSU5TWSIpDQorICAjcHJhZ21hIG1hcChpbmZsYXRlU2V0RGljdGlvbmFyeSwiSU5TRURJIikNCisgICNwcmFnbWEgbWFwKGNvbXByZXNzQm91bmQsIkNNQk5EIikNCisgICNwcmFnbWEgbWFwKGluZmxhdGVfdGFibGUsIklOVEFCTCIpDQorICAjcHJhZ21hIG1hcChpbmZsYXRlX2Zhc3QsIklORkEiKQ0KKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZV9jb3B5cmlnaHQsIklOQ09QWSIpDQorI2VuZGlmDQorDQorI2VuZGlmIC8qIFpDT05GX0ggKi8NCmRpZmYgLS1naXQgYS9jb3JlL2luY2x1ZGUvdGhpcmRwYXJ0aWVzL3psaWIvemxpYi5oIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy96bGliL3psaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTA2OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9pbmNsdWRlL3RoaXJkcGFydGllcy96bGliL3psaWIuaApAQCAtMCwwICsxLDE4MjggQEAKKy8qIHpsaWIuaCAtLSBpbnRlcmZhY2Ugb2YgdGhlICd6bGliJyBnZW5lcmFsIHB1cnBvc2UgY29tcHJlc3Npb24gbGlicmFyeQ0KKyAgdmVyc2lvbiAxLjIuOCwgQXByaWwgMjh0aCwgMjAxMw0KKw0KKyAgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcg0KKw0KKyAgVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQNCisgIHdhcnJhbnR5LiAgSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMNCisgIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuDQorDQorICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwNCisgIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQNCisgIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoNCisNCisgIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90DQorICAgICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQ0KKyAgICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlDQorICAgICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLg0KKyAgMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUNCisgICAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4NCisgIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uDQorDQorICBKZWFuLWxvdXAgR2FpbGx5ICAgICAgICBNYXJrIEFkbGVyDQorICBqbG91cEBnemlwLm9yZyAgICAgICAgICBtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1DQorDQorDQorICBUaGUgZGF0YSBmb3JtYXQgdXNlZCBieSB0aGUgemxpYiBsaWJyYXJ5IGlzIGRlc2NyaWJlZCBieSBSRkNzIChSZXF1ZXN0IGZvcg0KKyAgQ29tbWVudHMpIDE5NTAgdG8gMTk1MiBpbiB0aGUgZmlsZXMgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTk1MA0KKyAgKHpsaWIgZm9ybWF0KSwgcmZjMTk1MSAoZGVmbGF0ZSBmb3JtYXQpIGFuZCByZmMxOTUyIChnemlwIGZvcm1hdCkuDQorKi8NCisNCisjaWZuZGVmIFpMSUJfSA0KKyNkZWZpbmUgWkxJQl9IDQorDQorI2RlZmluZSBkZWZsYXRlX2NvcHlyaWdodCBGUERGQVBJX2RlZmxhdGVfY29weXJpZ2h0DQorI2RlZmluZSBhZGxlcjMyIEZQREZBUElfYWRsZXIzMg0KKyNkZWZpbmUgY29tcHJlc3MyIEZQREZBUElfY29tcHJlc3MyDQorI2RlZmluZSBjb21wcmVzcyBGUERGQVBJX2NvbXByZXNzDQorI2RlZmluZSBjb21wcmVzc0JvdW5kIEZQREZBUElfY29tcHJlc3NCb3VuZA0KKyNkZWZpbmUgZ2V0X2NyY190YWJsZSBGUERGQVBJX2dldF9jcmNfdGFibGUNCisjZGVmaW5lIGNyYzMyIEZQREZBUElfY3JjMzINCisjZGVmaW5lIGRlZmxhdGVJbml0XyBGUERGQVBJX2RlZmxhdGVJbml0Xw0KKyNkZWZpbmUgZGVmbGF0ZUluaXQyXyBGUERGQVBJX2RlZmxhdGVJbml0Ml8NCisjZGVmaW5lIGRlZmxhdGVTZXREaWN0aW9uYXJ5IEZQREZBUElfZGVmbGF0ZVNldERpY3Rpb25hcnkNCisjZGVmaW5lIGRlZmxhdGVSZXNldCBGUERGQVBJX2RlZmxhdGVSZXNldA0KKyNkZWZpbmUgZGVmbGF0ZVByaW1lIEZQREZBUElfZGVmbGF0ZVByaW1lDQorI2RlZmluZSBkZWZsYXRlUGFyYW1zIEZQREZBUElfZGVmbGF0ZVBhcmFtcw0KKyNkZWZpbmUgZGVmbGF0ZUJvdW5kIEZQREZBUElfZGVmbGF0ZUJvdW5kDQorI2RlZmluZSBkZWZsYXRlU2V0SGVhZGVyIEZQREZBUElfZGVmbGF0ZVNldEhlYWRlcg0KKyNkZWZpbmUgZGVmbGF0ZVR1bmUgRlBERkFQSV9kZWZsYXRlVHVuZQ0KKyNkZWZpbmUgZGVmbGF0ZSBGUERGQVBJX2RlZmxhdGUNCisjZGVmaW5lIGRlZmxhdGVFbmQgRlBERkFQSV9kZWZsYXRlRW5kDQorI2RlZmluZSBkZWZsYXRlQ29weSBGUERGQVBJX2RlZmxhdGVDb3B5DQorI2RlZmluZSBpbmZsYXRlQmFja0luaXRfIEZQREZBUElfaW5mbGF0ZUJhY2tJbml0Xw0KKyNkZWZpbmUgaW5mbGF0ZUJhY2sgRlBERkFQSV9pbmZsYXRlQmFjaw0KKyNkZWZpbmUgaW5mbGF0ZUJhY2tFbmQgRlBERkFQSV9pbmZsYXRlQmFja0VuZA0KKyNkZWZpbmUgaW5mbGF0ZVJlc2V0IEZQREZBUElfaW5mbGF0ZVJlc2V0DQorI2RlZmluZSBpbmZsYXRlSW5pdDJfIEZQREZBUElfaW5mbGF0ZUluaXQyXw0KKyNkZWZpbmUgaW5mbGF0ZUluaXRfIEZQREZBUElfaW5mbGF0ZUluaXRfDQorI2RlZmluZSBpbmZsYXRlIEZQREZBUElfaW5mbGF0ZQ0KKyNkZWZpbmUgaW5mbGF0ZUVuZCBGUERGQVBJX2luZmxhdGVFbmQNCisjZGVmaW5lIGluZmxhdGVTZXREaWN0aW9uYXJ5IEZQREZBUElfaW5mbGF0ZVNldERpY3Rpb25hcnkNCisjZGVmaW5lIGluZmxhdGVTeW5jIEZQREZBUElfaW5mbGF0ZVN5bmMNCisjZGVmaW5lIGluZmxhdGVTeW5jUG9pbnQgRlBERkFQSV9pbmZsYXRlU3luY1BvaW50DQorI2RlZmluZSBpbmZsYXRlQ29weSBGUERGQVBJX2luZmxhdGVDb3B5DQorI2RlZmluZSB1bmNvbXByZXNzIEZQREZBUElfdW5jb21wcmVzcw0KKyNkZWZpbmUgemxpYlZlcnNpb24gRlBERkFQSV96bGliVmVyc2lvbg0KKyNkZWZpbmUgemxpYkNvbXBpbGVGbGFncyBGUERGQVBJX3psaWJDb21waWxlRmxhZ3MNCisjZGVmaW5lIHpFcnJvciBGUERGQVBJX3pFcnJvcg0KKyNkZWZpbmUgel9lcnJtc2cgRlBERkFQSV96X2Vycm1zZw0KKyNkZWZpbmUgemNmcmVlIEZQREZBUElfemNmcmVlDQorI2RlZmluZSB6Y2FsbG9jIEZQREZBUElfemNhbGxvYw0KKyNkZWZpbmUgaW5mbGF0ZV9mYXN0IEZQREZBUElfaW5mbGF0ZV9mYXN0DQorI2RlZmluZSBpbmZsYXRlX3RhYmxlIEZQREZBUElfaW5mbGF0ZV90YWJsZQ0KKyNkZWZpbmUgaW5mbGF0ZV9jb3B5cmlnaHQgRlBERkFQSV9pbmZsYXRlX2NvcHlyaWdodA0KKyNkZWZpbmUgX2xlbmd0aF9jb2RlIEZQREZBUElfbGVuZ3RoX2NvZGUNCisjZGVmaW5lIF90cl9mbHVzaF9ibG9jayBGUERGQVBJX3RyX2ZsdXNoX2Jsb2NrDQorI2RlZmluZSBfZGlzdF9jb2RlIEZQREZBUElfZGlzdF9jb2RlDQorI2RlZmluZSBfdHJfc3RvcmVkX2Jsb2NrIEZQREZBUElfdHJfc3RvcmVkX2Jsb2NrDQorI2RlZmluZSBfdHJfaW5pdCBGUERGQVBJX3RyX2luaXQNCisjZGVmaW5lIF90cl9hbGlnbiBGUERGQVBJX3RyX2FsaWduDQorI2RlZmluZSBfdHJfdGFsbHkgRlBERkFQSV90cl90YWxseQ0KKyNkZWZpbmUgYWRsZXIzMl9jb21iaW5lIEZQREZBUElfYWRsZXIzMl9jb21iaW5lDQorI2RlZmluZSBpbmZsYXRlUHJpbWUgRlBERkFQSV9pbmZsYXRlUHJpbWUNCisjZGVmaW5lIGluZmxhdGVHZXRIZWFkZXIgRlBERkFQSV9pbmZsYXRlR2V0SGVhZGVyDQorI2RlZmluZSBjcmMzMl9jb21iaW5lIEZQREZBUElfY3JjMzJfY29tYmluZQ0KKyNkZWZpbmUgaW5mbGF0ZVJlc2V0MiBGUERGQVBJX2luZmxhdGVSZXNldDINCisjZGVmaW5lIGluZmxhdGVVbmRlcm1pbmUgRlBERkFQSV9pbmZsYXRlVW5kZXJtaW5lDQorI2RlZmluZSBpbmZsYXRlTWFyayBGUERGQVBJX2luZmxhdGVNYXJrDQorI2RlZmluZSBhZGxlcjMyX2NvbWJpbmU2NCBGUERGQVBJX2FkbGVyMzJfY29tYmluZTY0DQorDQorI2luY2x1ZGUgInpjb25mLmgiDQorDQorLyogU3VubGlhbmcuTGl1IDIwMTAwOTA4IHN5bmMgdGhlIGNvbmZpZyB0byB0aGUgb2xkIHJldmlzaW9uLiBOT19HWklQICovDQorI2RlZmluZSBOT19HWklQCQkvKiBYWVEgKi8NCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisjZGVmaW5lIFpMSUJfVkVSU0lPTiAiMS4yLjgiDQorI2RlZmluZSBaTElCX1ZFUk5VTSAweDEyODANCisjZGVmaW5lIFpMSUJfVkVSX01BSk9SIDENCisjZGVmaW5lIFpMSUJfVkVSX01JTk9SIDINCisjZGVmaW5lIFpMSUJfVkVSX1JFVklTSU9OIDgNCisjZGVmaW5lIFpMSUJfVkVSX1NVQlJFVklTSU9OIDANCisNCisvKg0KKyAgICBUaGUgJ3psaWInIGNvbXByZXNzaW9uIGxpYnJhcnkgcHJvdmlkZXMgaW4tbWVtb3J5IGNvbXByZXNzaW9uIGFuZA0KKyAgZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMsIGluY2x1ZGluZyBpbnRlZ3JpdHkgY2hlY2tzIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YS4NCisgIFRoaXMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBzdXBwb3J0cyBvbmx5IG9uZSBjb21wcmVzc2lvbiBtZXRob2QgKGRlZmxhdGlvbikNCisgIGJ1dCBvdGhlciBhbGdvcml0aG1zIHdpbGwgYmUgYWRkZWQgbGF0ZXIgYW5kIHdpbGwgaGF2ZSB0aGUgc2FtZSBzdHJlYW0NCisgIGludGVyZmFjZS4NCisNCisgICAgQ29tcHJlc3Npb24gY2FuIGJlIGRvbmUgaW4gYSBzaW5nbGUgc3RlcCBpZiB0aGUgYnVmZmVycyBhcmUgbGFyZ2UgZW5vdWdoLA0KKyAgb3IgY2FuIGJlIGRvbmUgYnkgcmVwZWF0ZWQgY2FsbHMgb2YgdGhlIGNvbXByZXNzaW9uIGZ1bmN0aW9uLiAgSW4gdGhlIGxhdHRlcg0KKyAgY2FzZSwgdGhlIGFwcGxpY2F0aW9uIG11c3QgcHJvdmlkZSBtb3JlIGlucHV0IGFuZC9vciBjb25zdW1lIHRoZSBvdXRwdXQNCisgIChwcm92aWRpbmcgbW9yZSBvdXRwdXQgc3BhY2UpIGJlZm9yZSBlYWNoIGNhbGwuDQorDQorICAgIFRoZSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0IHVzZWQgYnkgZGVmYXVsdCBieSB0aGUgaW4tbWVtb3J5IGZ1bmN0aW9ucyBpcw0KKyAgdGhlIHpsaWIgZm9ybWF0LCB3aGljaCBpcyBhIHpsaWIgd3JhcHBlciBkb2N1bWVudGVkIGluIFJGQyAxOTUwLCB3cmFwcGVkDQorICBhcm91bmQgYSBkZWZsYXRlIHN0cmVhbSwgd2hpY2ggaXMgaXRzZWxmIGRvY3VtZW50ZWQgaW4gUkZDIDE5NTEuDQorDQorICAgIFRoZSBsaWJyYXJ5IGFsc28gc3VwcG9ydHMgcmVhZGluZyBhbmQgd3JpdGluZyBmaWxlcyBpbiBnemlwICguZ3opIGZvcm1hdA0KKyAgd2l0aCBhbiBpbnRlcmZhY2Ugc2ltaWxhciB0byB0aGF0IG9mIHN0ZGlvIHVzaW5nIHRoZSBmdW5jdGlvbnMgdGhhdCBzdGFydA0KKyAgd2l0aCAiZ3oiLiAgVGhlIGd6aXAgZm9ybWF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSB6bGliIGZvcm1hdC4gIGd6aXAgaXMgYQ0KKyAgZ3ppcCB3cmFwcGVyLCBkb2N1bWVudGVkIGluIFJGQyAxOTUyLCB3cmFwcGVkIGFyb3VuZCBhIGRlZmxhdGUgc3RyZWFtLg0KKw0KKyAgICBUaGlzIGxpYnJhcnkgY2FuIG9wdGlvbmFsbHkgcmVhZCBhbmQgd3JpdGUgZ3ppcCBzdHJlYW1zIGluIG1lbW9yeSBhcyB3ZWxsLg0KKw0KKyAgICBUaGUgemxpYiBmb3JtYXQgd2FzIGRlc2lnbmVkIHRvIGJlIGNvbXBhY3QgYW5kIGZhc3QgZm9yIHVzZSBpbiBtZW1vcnkNCisgIGFuZCBvbiBjb21tdW5pY2F0aW9ucyBjaGFubmVscy4gIFRoZSBnemlwIGZvcm1hdCB3YXMgZGVzaWduZWQgZm9yIHNpbmdsZS0NCisgIGZpbGUgY29tcHJlc3Npb24gb24gZmlsZSBzeXN0ZW1zLCBoYXMgYSBsYXJnZXIgaGVhZGVyIHRoYW4gemxpYiB0byBtYWludGFpbg0KKyAgZGlyZWN0b3J5IGluZm9ybWF0aW9uLCBhbmQgdXNlcyBhIGRpZmZlcmVudCwgc2xvd2VyIGNoZWNrIG1ldGhvZCB0aGFuIHpsaWIuDQorDQorICAgIFRoZSBsaWJyYXJ5IGRvZXMgbm90IGluc3RhbGwgYW55IHNpZ25hbCBoYW5kbGVyLiAgVGhlIGRlY29kZXIgY2hlY2tzDQorICB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSwgc28gdGhlIGxpYnJhcnkgc2hvdWxkIG5ldmVyIGNyYXNoDQorICBldmVuIGluIGNhc2Ugb2YgY29ycnVwdGVkIGlucHV0Lg0KKyovDQorDQordHlwZWRlZiB2b2lkcGYgKCphbGxvY19mdW5jKSBPRigodm9pZHBmIG9wYXF1ZSwgdUludCBpdGVtcywgdUludCBzaXplKSk7DQordHlwZWRlZiB2b2lkICAgKCpmcmVlX2Z1bmMpICBPRigodm9pZHBmIG9wYXF1ZSwgdm9pZHBmIGFkZHJlc3MpKTsNCisNCitzdHJ1Y3QgaW50ZXJuYWxfc3RhdGU7DQorDQordHlwZWRlZiBzdHJ1Y3Qgel9zdHJlYW1fcyB7DQorICAgIHpfY29uc3QgQnl0ZWYgKm5leHRfaW47ICAgICAvKiBuZXh0IGlucHV0IGJ5dGUgKi8NCisgICAgdUludCAgICAgYXZhaWxfaW47ICAvKiBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IG5leHRfaW4gKi8NCisgICAgdUxvbmcgICAgdG90YWxfaW47ICAvKiB0b3RhbCBudW1iZXIgb2YgaW5wdXQgYnl0ZXMgcmVhZCBzbyBmYXIgKi8NCisNCisgICAgQnl0ZWYgICAgKm5leHRfb3V0OyAvKiBuZXh0IG91dHB1dCBieXRlIHNob3VsZCBiZSBwdXQgdGhlcmUgKi8NCisgICAgdUludCAgICAgYXZhaWxfb3V0OyAvKiByZW1haW5pbmcgZnJlZSBzcGFjZSBhdCBuZXh0X291dCAqLw0KKyAgICB1TG9uZyAgICB0b3RhbF9vdXQ7IC8qIHRvdGFsIG51bWJlciBvZiBieXRlcyBvdXRwdXQgc28gZmFyICovDQorDQorICAgIHpfY29uc3QgY2hhciAqbXNnOyAgLyogbGFzdCBlcnJvciBtZXNzYWdlLCBOVUxMIGlmIG5vIGVycm9yICovDQorICAgIHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSBGQVIgKnN0YXRlOyAvKiBub3QgdmlzaWJsZSBieSBhcHBsaWNhdGlvbnMgKi8NCisNCisgICAgYWxsb2NfZnVuYyB6YWxsb2M7ICAvKiB1c2VkIHRvIGFsbG9jYXRlIHRoZSBpbnRlcm5hbCBzdGF0ZSAqLw0KKyAgICBmcmVlX2Z1bmMgIHpmcmVlOyAgIC8qIHVzZWQgdG8gZnJlZSB0aGUgaW50ZXJuYWwgc3RhdGUgKi8NCisgICAgdm9pZHBmICAgICBvcGFxdWU7ICAvKiBwcml2YXRlIGRhdGEgb2JqZWN0IHBhc3NlZCB0byB6YWxsb2MgYW5kIHpmcmVlICovDQorDQorICAgIGludCAgICAgZGF0YV90eXBlOyAgLyogYmVzdCBndWVzcyBhYm91dCB0aGUgZGF0YSB0eXBlOiBiaW5hcnkgb3IgdGV4dCAqLw0KKyAgICB1TG9uZyAgIGFkbGVyOyAgICAgIC8qIGFkbGVyMzIgdmFsdWUgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhICovDQorICAgIHVMb25nICAgcmVzZXJ2ZWQ7ICAgLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8NCit9IHpfc3RyZWFtOw0KKw0KK3R5cGVkZWYgel9zdHJlYW0gRkFSICp6X3N0cmVhbXA7DQorDQorLyoNCisgICAgIGd6aXAgaGVhZGVyIGluZm9ybWF0aW9uIHBhc3NlZCB0byBhbmQgZnJvbSB6bGliIHJvdXRpbmVzLiAgU2VlIFJGQyAxOTUyDQorICBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBtZWFuaW5ncyBvZiB0aGVzZSBmaWVsZHMuDQorKi8NCit0eXBlZGVmIHN0cnVjdCBnel9oZWFkZXJfcyB7DQorICAgIGludCAgICAgdGV4dDsgICAgICAgLyogdHJ1ZSBpZiBjb21wcmVzc2VkIGRhdGEgYmVsaWV2ZWQgdG8gYmUgdGV4dCAqLw0KKyAgICB1TG9uZyAgIHRpbWU7ICAgICAgIC8qIG1vZGlmaWNhdGlvbiB0aW1lICovDQorICAgIGludCAgICAgeGZsYWdzOyAgICAgLyogZXh0cmEgZmxhZ3MgKG5vdCB1c2VkIHdoZW4gd3JpdGluZyBhIGd6aXAgZmlsZSkgKi8NCisgICAgaW50ICAgICBvczsgICAgICAgICAvKiBvcGVyYXRpbmcgc3lzdGVtICovDQorICAgIEJ5dGVmICAgKmV4dHJhOyAgICAgLyogcG9pbnRlciB0byBleHRyYSBmaWVsZCBvciBaX05VTEwgaWYgbm9uZSAqLw0KKyAgICB1SW50ICAgIGV4dHJhX2xlbjsgIC8qIGV4dHJhIGZpZWxkIGxlbmd0aCAodmFsaWQgaWYgZXh0cmEgIT0gWl9OVUxMKSAqLw0KKyAgICB1SW50ICAgIGV4dHJhX21heDsgIC8qIHNwYWNlIGF0IGV4dHJhIChvbmx5IHdoZW4gcmVhZGluZyBoZWFkZXIpICovDQorICAgIEJ5dGVmICAgKm5hbWU7ICAgICAgLyogcG9pbnRlciB0byB6ZXJvLXRlcm1pbmF0ZWQgZmlsZSBuYW1lIG9yIFpfTlVMTCAqLw0KKyAgICB1SW50ICAgIG5hbWVfbWF4OyAgIC8qIHNwYWNlIGF0IG5hbWUgKG9ubHkgd2hlbiByZWFkaW5nIGhlYWRlcikgKi8NCisgICAgQnl0ZWYgICAqY29tbWVudDsgICAvKiBwb2ludGVyIHRvIHplcm8tdGVybWluYXRlZCBjb21tZW50IG9yIFpfTlVMTCAqLw0KKyAgICB1SW50ICAgIGNvbW1fbWF4OyAgIC8qIHNwYWNlIGF0IGNvbW1lbnQgKG9ubHkgd2hlbiByZWFkaW5nIGhlYWRlcikgKi8NCisgICAgaW50ICAgICBoY3JjOyAgICAgICAvKiB0cnVlIGlmIHRoZXJlIHdhcyBvciB3aWxsIGJlIGEgaGVhZGVyIGNyYyAqLw0KKyAgICBpbnQgICAgIGRvbmU7ICAgICAgIC8qIHRydWUgd2hlbiBkb25lIHJlYWRpbmcgZ3ppcCBoZWFkZXIgKG5vdCB1c2VkDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB3cml0aW5nIGEgZ3ppcCBmaWxlKSAqLw0KK30gZ3pfaGVhZGVyOw0KKw0KK3R5cGVkZWYgZ3pfaGVhZGVyIEZBUiAqZ3pfaGVhZGVycDsNCisNCisvKg0KKyAgICAgVGhlIGFwcGxpY2F0aW9uIG11c3QgdXBkYXRlIG5leHRfaW4gYW5kIGF2YWlsX2luIHdoZW4gYXZhaWxfaW4gaGFzIGRyb3BwZWQNCisgICB0byB6ZXJvLiAgSXQgbXVzdCB1cGRhdGUgbmV4dF9vdXQgYW5kIGF2YWlsX291dCB3aGVuIGF2YWlsX291dCBoYXMgZHJvcHBlZA0KKyAgIHRvIHplcm8uICBUaGUgYXBwbGljYXRpb24gbXVzdCBpbml0aWFsaXplIHphbGxvYywgemZyZWUgYW5kIG9wYXF1ZSBiZWZvcmUNCisgICBjYWxsaW5nIHRoZSBpbml0IGZ1bmN0aW9uLiAgQWxsIG90aGVyIGZpZWxkcyBhcmUgc2V0IGJ5IHRoZSBjb21wcmVzc2lvbg0KKyAgIGxpYnJhcnkgYW5kIG11c3Qgbm90IGJlIHVwZGF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLg0KKw0KKyAgICAgVGhlIG9wYXF1ZSB2YWx1ZSBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBwYXNzZWQgYXMgdGhlIGZpcnN0DQorICAgcGFyYW1ldGVyIGZvciBjYWxscyBvZiB6YWxsb2MgYW5kIHpmcmVlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBjdXN0b20NCisgICBtZW1vcnkgbWFuYWdlbWVudC4gIFRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5IGF0dGFjaGVzIG5vIG1lYW5pbmcgdG8gdGhlDQorICAgb3BhcXVlIHZhbHVlLg0KKw0KKyAgICAgemFsbG9jIG11c3QgcmV0dXJuIFpfTlVMTCBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSBmb3IgdGhlIG9iamVjdC4NCisgICBJZiB6bGliIGlzIHVzZWQgaW4gYSBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbiwgemFsbG9jIGFuZCB6ZnJlZSBtdXN0IGJlDQorICAgdGhyZWFkIHNhZmUuDQorDQorICAgICBPbiAxNi1iaXQgc3lzdGVtcywgdGhlIGZ1bmN0aW9ucyB6YWxsb2MgYW5kIHpmcmVlIG11c3QgYmUgYWJsZSB0byBhbGxvY2F0ZQ0KKyAgIGV4YWN0bHkgNjU1MzYgYnl0ZXMsIGJ1dCB3aWxsIG5vdCBiZSByZXF1aXJlZCB0byBhbGxvY2F0ZSBtb3JlIHRoYW4gdGhpcyBpZg0KKyAgIHRoZSBzeW1ib2wgTUFYU0VHXzY0SyBpcyBkZWZpbmVkIChzZWUgemNvbmYuaCkuICBXQVJOSU5HOiBPbiBNU0RPUywgcG9pbnRlcnMNCisgICByZXR1cm5lZCBieSB6YWxsb2MgZm9yIG9iamVjdHMgb2YgZXhhY3RseSA2NTUzNiBieXRlcyAqbXVzdCogaGF2ZSB0aGVpcg0KKyAgIG9mZnNldCBub3JtYWxpemVkIHRvIHplcm8uICBUaGUgZGVmYXVsdCBhbGxvY2F0aW9uIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRoaXMNCisgICBsaWJyYXJ5IGVuc3VyZXMgdGhpcyAoc2VlIHp1dGlsLmMpLiAgVG8gcmVkdWNlIG1lbW9yeSByZXF1aXJlbWVudHMgYW5kIGF2b2lkDQorICAgYW55IGFsbG9jYXRpb24gb2YgNjRLIG9iamVjdHMsIGF0IHRoZSBleHBlbnNlIG9mIGNvbXByZXNzaW9uIHJhdGlvLCBjb21waWxlDQorICAgdGhlIGxpYnJhcnkgd2l0aCAtRE1BWF9XQklUUz0xNCAoc2VlIHpjb25mLmgpLg0KKw0KKyAgICAgVGhlIGZpZWxkcyB0b3RhbF9pbiBhbmQgdG90YWxfb3V0IGNhbiBiZSB1c2VkIGZvciBzdGF0aXN0aWNzIG9yIHByb2dyZXNzDQorICAgcmVwb3J0cy4gIEFmdGVyIGNvbXByZXNzaW9uLCB0b3RhbF9pbiBob2xkcyB0aGUgdG90YWwgc2l6ZSBvZiB0aGUNCisgICB1bmNvbXByZXNzZWQgZGF0YSBhbmQgbWF5IGJlIHNhdmVkIGZvciB1c2UgaW4gdGhlIGRlY29tcHJlc3NvciAocGFydGljdWxhcmx5DQorICAgaWYgdGhlIGRlY29tcHJlc3NvciB3YW50cyB0byBkZWNvbXByZXNzIGV2ZXJ5dGhpbmcgaW4gYSBzaW5nbGUgc3RlcCkuDQorKi8NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb25zdGFudHMgKi8NCisNCisjZGVmaW5lIFpfTk9fRkxVU0ggICAgICAwDQorI2RlZmluZSBaX1BBUlRJQUxfRkxVU0ggMQ0KKyNkZWZpbmUgWl9TWU5DX0ZMVVNIICAgIDINCisjZGVmaW5lIFpfRlVMTF9GTFVTSCAgICAzDQorI2RlZmluZSBaX0ZJTklTSCAgICAgICAgNA0KKyNkZWZpbmUgWl9CTE9DSyAgICAgICAgIDUNCisjZGVmaW5lIFpfVFJFRVMgICAgICAgICA2DQorLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYW5kIGluZmxhdGUoKSBiZWxvdyBmb3IgZGV0YWlscyAqLw0KKw0KKyNkZWZpbmUgWl9PSyAgICAgICAgICAgIDANCisjZGVmaW5lIFpfU1RSRUFNX0VORCAgICAxDQorI2RlZmluZSBaX05FRURfRElDVCAgICAgMg0KKyNkZWZpbmUgWl9FUlJOTyAgICAgICAgKC0xKQ0KKyNkZWZpbmUgWl9TVFJFQU1fRVJST1IgKC0yKQ0KKyNkZWZpbmUgWl9EQVRBX0VSUk9SICAgKC0zKQ0KKyNkZWZpbmUgWl9NRU1fRVJST1IgICAgKC00KQ0KKyNkZWZpbmUgWl9CVUZfRVJST1IgICAgKC01KQ0KKyNkZWZpbmUgWl9WRVJTSU9OX0VSUk9SICgtNikNCisvKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzDQorICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLg0KKyAqLw0KKw0KKyNkZWZpbmUgWl9OT19DT01QUkVTU0lPTiAgICAgICAgIDANCisjZGVmaW5lIFpfQkVTVF9TUEVFRCAgICAgICAgICAgICAxDQorI2RlZmluZSBaX0JFU1RfQ09NUFJFU1NJT04gICAgICAgOQ0KKyNkZWZpbmUgWl9ERUZBVUxUX0NPTVBSRVNTSU9OICAoLTEpDQorLyogY29tcHJlc3Npb24gbGV2ZWxzICovDQorDQorI2RlZmluZSBaX0ZJTFRFUkVEICAgICAgICAgICAgMQ0KKyNkZWZpbmUgWl9IVUZGTUFOX09OTFkgICAgICAgIDINCisjZGVmaW5lIFpfUkxFICAgICAgICAgICAgICAgICAzDQorI2RlZmluZSBaX0ZJWEVEICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgWl9ERUZBVUxUX1NUUkFURUdZICAgIDANCisvKiBjb21wcmVzc2lvbiBzdHJhdGVneTsgc2VlIGRlZmxhdGVJbml0MigpIGJlbG93IGZvciBkZXRhaWxzICovDQorDQorI2RlZmluZSBaX0JJTkFSWSAgIDANCisjZGVmaW5lIFpfVEVYVCAgICAgMQ0KKyNkZWZpbmUgWl9BU0NJSSAgICBaX1RFWFQgICAvKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIDEuMi4yIGFuZCBlYXJsaWVyICovDQorI2RlZmluZSBaX1VOS05PV04gIDINCisvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovDQorDQorI2RlZmluZSBaX0RFRkxBVEVEICAgOA0KKy8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAodGhlIG9ubHkgb25lIHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24pICovDQorDQorI2RlZmluZSBaX05VTEwgIDAgIC8qIGZvciBpbml0aWFsaXppbmcgemFsbG9jLCB6ZnJlZSwgb3BhcXVlICovDQorDQorI2RlZmluZSB6bGliX3ZlcnNpb24gemxpYlZlcnNpb24oKQ0KKy8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdmVyc2lvbnMgPCAxLjAuMiAqLw0KKw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJhc2ljIGZ1bmN0aW9ucyAqLw0KKw0KK1pFWFRFUk4gY29uc3QgY2hhciAqIFpFWFBPUlQgemxpYlZlcnNpb24gT0YoKHZvaWQpKTsNCisvKiBUaGUgYXBwbGljYXRpb24gY2FuIGNvbXBhcmUgemxpYlZlcnNpb24gYW5kIFpMSUJfVkVSU0lPTiBmb3IgY29uc2lzdGVuY3kuDQorICAgSWYgdGhlIGZpcnN0IGNoYXJhY3RlciBkaWZmZXJzLCB0aGUgbGlicmFyeSBjb2RlIGFjdHVhbGx5IHVzZWQgaXMgbm90DQorICAgY29tcGF0aWJsZSB3aXRoIHRoZSB6bGliLmggaGVhZGVyIGZpbGUgdXNlZCBieSB0aGUgYXBwbGljYXRpb24uICBUaGlzIGNoZWNrDQorICAgaXMgYXV0b21hdGljYWxseSBtYWRlIGJ5IGRlZmxhdGVJbml0IGFuZCBpbmZsYXRlSW5pdC4NCisgKi8NCisNCisvKg0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUluaXQgT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgbGV2ZWwpKTsNCisNCisgICAgIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBzdHJlYW0gc3RhdGUgZm9yIGNvbXByZXNzaW9uLiAgVGhlIGZpZWxkcw0KKyAgIHphbGxvYywgemZyZWUgYW5kIG9wYXF1ZSBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBieSB0aGUgY2FsbGVyLiAgSWYNCisgICB6YWxsb2MgYW5kIHpmcmVlIGFyZSBzZXQgdG8gWl9OVUxMLCBkZWZsYXRlSW5pdCB1cGRhdGVzIHRoZW0gdG8gdXNlIGRlZmF1bHQNCisgICBhbGxvY2F0aW9uIGZ1bmN0aW9ucy4NCisNCisgICAgIFRoZSBjb21wcmVzc2lvbiBsZXZlbCBtdXN0IGJlIFpfREVGQVVMVF9DT01QUkVTU0lPTiwgb3IgYmV0d2VlbiAwIGFuZCA5Og0KKyAgIDEgZ2l2ZXMgYmVzdCBzcGVlZCwgOSBnaXZlcyBiZXN0IGNvbXByZXNzaW9uLCAwIGdpdmVzIG5vIGNvbXByZXNzaW9uIGF0IGFsbA0KKyAgICh0aGUgaW5wdXQgZGF0YSBpcyBzaW1wbHkgY29waWVkIGEgYmxvY2sgYXQgYSB0aW1lKS4gIFpfREVGQVVMVF9DT01QUkVTU0lPTg0KKyAgIHJlcXVlc3RzIGEgZGVmYXVsdCBjb21wcm9taXNlIGJldHdlZW4gc3BlZWQgYW5kIGNvbXByZXNzaW9uIChjdXJyZW50bHkNCisgICBlcXVpdmFsZW50IHRvIGxldmVsIDYpLg0KKw0KKyAgICAgZGVmbGF0ZUluaXQgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoDQorICAgbWVtb3J5LCBaX1NUUkVBTV9FUlJPUiBpZiBsZXZlbCBpcyBub3QgYSB2YWxpZCBjb21wcmVzc2lvbiBsZXZlbCwgb3INCisgICBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHpsaWIgbGlicmFyeSB2ZXJzaW9uICh6bGliX3ZlcnNpb24pIGlzIGluY29tcGF0aWJsZQ0KKyAgIHdpdGggdGhlIHZlcnNpb24gYXNzdW1lZCBieSB0aGUgY2FsbGVyIChaTElCX1ZFUlNJT04pLiAgbXNnIGlzIHNldCB0byBudWxsDQorICAgaWYgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZS4gIGRlZmxhdGVJbml0IGRvZXMgbm90IHBlcmZvcm0gYW55IGNvbXByZXNzaW9uOg0KKyAgIHRoaXMgd2lsbCBiZSBkb25lIGJ5IGRlZmxhdGUoKS4NCisqLw0KKw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZSBPRigoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCkpOw0KKy8qDQorICAgIGRlZmxhdGUgY29tcHJlc3NlcyBhcyBtdWNoIGRhdGEgYXMgcG9zc2libGUsIGFuZCBzdG9wcyB3aGVuIHRoZSBpbnB1dA0KKyAgYnVmZmVyIGJlY29tZXMgZW1wdHkgb3IgdGhlIG91dHB1dCBidWZmZXIgYmVjb21lcyBmdWxsLiAgSXQgbWF5IGludHJvZHVjZQ0KKyAgc29tZSBvdXRwdXQgbGF0ZW5jeSAocmVhZGluZyBpbnB1dCB3aXRob3V0IHByb2R1Y2luZyBhbnkgb3V0cHV0KSBleGNlcHQgd2hlbg0KKyAgZm9yY2VkIHRvIGZsdXNoLg0KKw0KKyAgICBUaGUgZGV0YWlsZWQgc2VtYW50aWNzIGFyZSBhcyBmb2xsb3dzLiAgZGVmbGF0ZSBwZXJmb3JtcyBvbmUgb3IgYm90aCBvZiB0aGUNCisgIGZvbGxvd2luZyBhY3Rpb25zOg0KKw0KKyAgLSBDb21wcmVzcyBtb3JlIGlucHV0IHN0YXJ0aW5nIGF0IG5leHRfaW4gYW5kIHVwZGF0ZSBuZXh0X2luIGFuZCBhdmFpbF9pbg0KKyAgICBhY2NvcmRpbmdseS4gIElmIG5vdCBhbGwgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZCAoYmVjYXVzZSB0aGVyZSBpcyBub3QNCisgICAgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIpLCBuZXh0X2luIGFuZCBhdmFpbF9pbiBhcmUgdXBkYXRlZCBhbmQNCisgICAgcHJvY2Vzc2luZyB3aWxsIHJlc3VtZSBhdCB0aGlzIHBvaW50IGZvciB0aGUgbmV4dCBjYWxsIG9mIGRlZmxhdGUoKS4NCisNCisgIC0gUHJvdmlkZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBhbmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQNCisgICAgYWNjb3JkaW5nbHkuICBUaGlzIGFjdGlvbiBpcyBmb3JjZWQgaWYgdGhlIHBhcmFtZXRlciBmbHVzaCBpcyBub24gemVyby4NCisgICAgRm9yY2luZyBmbHVzaCBmcmVxdWVudGx5IGRlZ3JhZGVzIHRoZSBjb21wcmVzc2lvbiByYXRpbywgc28gdGhpcyBwYXJhbWV0ZXINCisgICAgc2hvdWxkIGJlIHNldCBvbmx5IHdoZW4gbmVjZXNzYXJ5IChpbiBpbnRlcmFjdGl2ZSBhcHBsaWNhdGlvbnMpLiAgU29tZQ0KKyAgICBvdXRwdXQgbWF5IGJlIHByb3ZpZGVkIGV2ZW4gaWYgZmx1c2ggaXMgbm90IHNldC4NCisNCisgICAgQmVmb3JlIHRoZSBjYWxsIG9mIGRlZmxhdGUoKSwgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBlbnN1cmUgdGhhdCBhdCBsZWFzdA0KKyAgb25lIG9mIHRoZSBhY3Rpb25zIGlzIHBvc3NpYmxlLCBieSBwcm92aWRpbmcgbW9yZSBpbnB1dCBhbmQvb3IgY29uc3VtaW5nIG1vcmUNCisgIG91dHB1dCwgYW5kIHVwZGF0aW5nIGF2YWlsX2luIG9yIGF2YWlsX291dCBhY2NvcmRpbmdseTsgYXZhaWxfb3V0IHNob3VsZA0KKyAgbmV2ZXIgYmUgemVybyBiZWZvcmUgdGhlIGNhbGwuICBUaGUgYXBwbGljYXRpb24gY2FuIGNvbnN1bWUgdGhlIGNvbXByZXNzZWQNCisgIG91dHB1dCB3aGVuIGl0IHdhbnRzLCBmb3IgZXhhbXBsZSB3aGVuIHRoZSBvdXRwdXQgYnVmZmVyIGlzIGZ1bGwgKGF2YWlsX291dA0KKyAgPT0gMCksIG9yIGFmdGVyIGVhY2ggY2FsbCBvZiBkZWZsYXRlKCkuICBJZiBkZWZsYXRlIHJldHVybnMgWl9PSyBhbmQgd2l0aA0KKyAgemVybyBhdmFpbF9vdXQsIGl0IG11c3QgYmUgY2FsbGVkIGFnYWluIGFmdGVyIG1ha2luZyByb29tIGluIHRoZSBvdXRwdXQNCisgIGJ1ZmZlciBiZWNhdXNlIHRoZXJlIG1pZ2h0IGJlIG1vcmUgb3V0cHV0IHBlbmRpbmcuDQorDQorICAgIE5vcm1hbGx5IHRoZSBwYXJhbWV0ZXIgZmx1c2ggaXMgc2V0IHRvIFpfTk9fRkxVU0gsIHdoaWNoIGFsbG93cyBkZWZsYXRlIHRvDQorICBkZWNpZGUgaG93IG11Y2ggZGF0YSB0byBhY2N1bXVsYXRlIGJlZm9yZSBwcm9kdWNpbmcgb3V0cHV0LCBpbiBvcmRlciB0bw0KKyAgbWF4aW1pemUgY29tcHJlc3Npb24uDQorDQorICAgIElmIHRoZSBwYXJhbWV0ZXIgZmx1c2ggaXMgc2V0IHRvIFpfU1lOQ19GTFVTSCwgYWxsIHBlbmRpbmcgb3V0cHV0IGlzDQorICBmbHVzaGVkIHRvIHRoZSBvdXRwdXQgYnVmZmVyIGFuZCB0aGUgb3V0cHV0IGlzIGFsaWduZWQgb24gYSBieXRlIGJvdW5kYXJ5LCBzbw0KKyAgdGhhdCB0aGUgZGVjb21wcmVzc29yIGNhbiBnZXQgYWxsIGlucHV0IGRhdGEgYXZhaWxhYmxlIHNvIGZhci4gIChJbg0KKyAgcGFydGljdWxhciBhdmFpbF9pbiBpcyB6ZXJvIGFmdGVyIHRoZSBjYWxsIGlmIGVub3VnaCBvdXRwdXQgc3BhY2UgaGFzIGJlZW4NCisgIHByb3ZpZGVkIGJlZm9yZSB0aGUgY2FsbC4pIEZsdXNoaW5nIG1heSBkZWdyYWRlIGNvbXByZXNzaW9uIGZvciBzb21lDQorICBjb21wcmVzc2lvbiBhbGdvcml0aG1zIGFuZCBzbyBpdCBzaG91bGQgYmUgdXNlZCBvbmx5IHdoZW4gbmVjZXNzYXJ5LiAgVGhpcw0KKyAgY29tcGxldGVzIHRoZSBjdXJyZW50IGRlZmxhdGUgYmxvY2sgYW5kIGZvbGxvd3MgaXQgd2l0aCBhbiBlbXB0eSBzdG9yZWQgYmxvY2sNCisgIHRoYXQgaXMgdGhyZWUgYml0cyBwbHVzIGZpbGxlciBiaXRzIHRvIHRoZSBuZXh0IGJ5dGUsIGZvbGxvd2VkIGJ5IGZvdXIgYnl0ZXMNCisgICgwMCAwMCBmZiBmZikuDQorDQorICAgIElmIGZsdXNoIGlzIHNldCB0byBaX1BBUlRJQUxfRkxVU0gsIGFsbCBwZW5kaW5nIG91dHB1dCBpcyBmbHVzaGVkIHRvIHRoZQ0KKyAgb3V0cHV0IGJ1ZmZlciwgYnV0IHRoZSBvdXRwdXQgaXMgbm90IGFsaWduZWQgdG8gYSBieXRlIGJvdW5kYXJ5LiAgQWxsIG9mIHRoZQ0KKyAgaW5wdXQgZGF0YSBzbyBmYXIgd2lsbCBiZSBhdmFpbGFibGUgdG8gdGhlIGRlY29tcHJlc3NvciwgYXMgZm9yIFpfU1lOQ19GTFVTSC4NCisgIFRoaXMgY29tcGxldGVzIHRoZSBjdXJyZW50IGRlZmxhdGUgYmxvY2sgYW5kIGZvbGxvd3MgaXQgd2l0aCBhbiBlbXB0eSBmaXhlZA0KKyAgY29kZXMgYmxvY2sgdGhhdCBpcyAxMCBiaXRzIGxvbmcuICBUaGlzIGFzc3VyZXMgdGhhdCBlbm91Z2ggYnl0ZXMgYXJlIG91dHB1dA0KKyAgaW4gb3JkZXIgZm9yIHRoZSBkZWNvbXByZXNzb3IgdG8gZmluaXNoIHRoZSBibG9jayBiZWZvcmUgdGhlIGVtcHR5IGZpeGVkIGNvZGUNCisgIGJsb2NrLg0KKw0KKyAgICBJZiBmbHVzaCBpcyBzZXQgdG8gWl9CTE9DSywgYSBkZWZsYXRlIGJsb2NrIGlzIGNvbXBsZXRlZCBhbmQgZW1pdHRlZCwgYXMNCisgIGZvciBaX1NZTkNfRkxVU0gsIGJ1dCB0aGUgb3V0cHV0IGlzIG5vdCBhbGlnbmVkIG9uIGEgYnl0ZSBib3VuZGFyeSwgYW5kIHVwIHRvDQorICBzZXZlbiBiaXRzIG9mIHRoZSBjdXJyZW50IGJsb2NrIGFyZSBoZWxkIHRvIGJlIHdyaXR0ZW4gYXMgdGhlIG5leHQgYnl0ZSBhZnRlcg0KKyAgdGhlIG5leHQgZGVmbGF0ZSBibG9jayBpcyBjb21wbGV0ZWQuICBJbiB0aGlzIGNhc2UsIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdA0KKyAgYmUgcHJvdmlkZWQgZW5vdWdoIGJpdHMgYXQgdGhpcyBwb2ludCBpbiBvcmRlciB0byBjb21wbGV0ZSBkZWNvbXByZXNzaW9uIG9mDQorICB0aGUgZGF0YSBwcm92aWRlZCBzbyBmYXIgdG8gdGhlIGNvbXByZXNzb3IuICBJdCBtYXkgbmVlZCB0byB3YWl0IGZvciB0aGUgbmV4dA0KKyAgYmxvY2sgdG8gYmUgZW1pdHRlZC4gIFRoaXMgaXMgZm9yIGFkdmFuY2VkIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgdG8gY29udHJvbA0KKyAgdGhlIGVtaXNzaW9uIG9mIGRlZmxhdGUgYmxvY2tzLg0KKw0KKyAgICBJZiBmbHVzaCBpcyBzZXQgdG8gWl9GVUxMX0ZMVVNILCBhbGwgb3V0cHV0IGlzIGZsdXNoZWQgYXMgd2l0aA0KKyAgWl9TWU5DX0ZMVVNILCBhbmQgdGhlIGNvbXByZXNzaW9uIHN0YXRlIGlzIHJlc2V0IHNvIHRoYXQgZGVjb21wcmVzc2lvbiBjYW4NCisgIHJlc3RhcnQgZnJvbSB0aGlzIHBvaW50IGlmIHByZXZpb3VzIGNvbXByZXNzZWQgZGF0YSBoYXMgYmVlbiBkYW1hZ2VkIG9yIGlmDQorICByYW5kb20gYWNjZXNzIGlzIGRlc2lyZWQuICBVc2luZyBaX0ZVTExfRkxVU0ggdG9vIG9mdGVuIGNhbiBzZXJpb3VzbHkgZGVncmFkZQ0KKyAgY29tcHJlc3Npb24uDQorDQorICAgIElmIGRlZmxhdGUgcmV0dXJucyB3aXRoIGF2YWlsX291dCA9PSAwLCB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGFnYWluDQorICB3aXRoIHRoZSBzYW1lIHZhbHVlIG9mIHRoZSBmbHVzaCBwYXJhbWV0ZXIgYW5kIG1vcmUgb3V0cHV0IHNwYWNlICh1cGRhdGVkDQorICBhdmFpbF9vdXQpLCB1bnRpbCB0aGUgZmx1c2ggaXMgY29tcGxldGUgKGRlZmxhdGUgcmV0dXJucyB3aXRoIG5vbi16ZXJvDQorICBhdmFpbF9vdXQpLiAgSW4gdGhlIGNhc2Ugb2YgYSBaX0ZVTExfRkxVU0ggb3IgWl9TWU5DX0ZMVVNILCBtYWtlIHN1cmUgdGhhdA0KKyAgYXZhaWxfb3V0IGlzIGdyZWF0ZXIgdGhhbiBzaXggdG8gYXZvaWQgcmVwZWF0ZWQgZmx1c2ggbWFya2VycyBkdWUgdG8NCisgIGF2YWlsX291dCA9PSAwIG9uIHJldHVybi4NCisNCisgICAgSWYgdGhlIHBhcmFtZXRlciBmbHVzaCBpcyBzZXQgdG8gWl9GSU5JU0gsIHBlbmRpbmcgaW5wdXQgaXMgcHJvY2Vzc2VkLA0KKyAgcGVuZGluZyBvdXRwdXQgaXMgZmx1c2hlZCBhbmQgZGVmbGF0ZSByZXR1cm5zIHdpdGggWl9TVFJFQU1fRU5EIGlmIHRoZXJlIHdhcw0KKyAgZW5vdWdoIG91dHB1dCBzcGFjZTsgaWYgZGVmbGF0ZSByZXR1cm5zIHdpdGggWl9PSywgdGhpcyBmdW5jdGlvbiBtdXN0IGJlDQorICBjYWxsZWQgYWdhaW4gd2l0aCBaX0ZJTklTSCBhbmQgbW9yZSBvdXRwdXQgc3BhY2UgKHVwZGF0ZWQgYXZhaWxfb3V0KSBidXQgbm8NCisgIG1vcmUgaW5wdXQgZGF0YSwgdW50aWwgaXQgcmV0dXJucyB3aXRoIFpfU1RSRUFNX0VORCBvciBhbiBlcnJvci4gIEFmdGVyDQorICBkZWZsYXRlIGhhcyByZXR1cm5lZCBaX1NUUkVBTV9FTkQsIHRoZSBvbmx5IHBvc3NpYmxlIG9wZXJhdGlvbnMgb24gdGhlIHN0cmVhbQ0KKyAgYXJlIGRlZmxhdGVSZXNldCBvciBkZWZsYXRlRW5kLg0KKw0KKyAgICBaX0ZJTklTSCBjYW4gYmUgdXNlZCBpbW1lZGlhdGVseSBhZnRlciBkZWZsYXRlSW5pdCBpZiBhbGwgdGhlIGNvbXByZXNzaW9uDQorICBpcyB0byBiZSBkb25lIGluIGEgc2luZ2xlIHN0ZXAuICBJbiB0aGlzIGNhc2UsIGF2YWlsX291dCBtdXN0IGJlIGF0IGxlYXN0IHRoZQ0KKyAgdmFsdWUgcmV0dXJuZWQgYnkgZGVmbGF0ZUJvdW5kIChzZWUgYmVsb3cpLiAgVGhlbiBkZWZsYXRlIGlzIGd1YXJhbnRlZWQgdG8NCisgIHJldHVybiBaX1NUUkVBTV9FTkQuICBJZiBub3QgZW5vdWdoIG91dHB1dCBzcGFjZSBpcyBwcm92aWRlZCwgZGVmbGF0ZSB3aWxsDQorICBub3QgcmV0dXJuIFpfU1RSRUFNX0VORCwgYW5kIGl0IG11c3QgYmUgY2FsbGVkIGFnYWluIGFzIGRlc2NyaWJlZCBhYm92ZS4NCisNCisgICAgZGVmbGF0ZSgpIHNldHMgc3RybS0+YWRsZXIgdG8gdGhlIGFkbGVyMzIgY2hlY2tzdW0gb2YgYWxsIGlucHV0IHJlYWQNCisgIHNvIGZhciAodGhhdCBpcywgdG90YWxfaW4gYnl0ZXMpLg0KKw0KKyAgICBkZWZsYXRlKCkgbWF5IHVwZGF0ZSBzdHJtLT5kYXRhX3R5cGUgaWYgaXQgY2FuIG1ha2UgYSBnb29kIGd1ZXNzIGFib3V0DQorICB0aGUgaW5wdXQgZGF0YSB0eXBlIChaX0JJTkFSWSBvciBaX1RFWFQpLiAgSW4gZG91YnQsIHRoZSBkYXRhIGlzIGNvbnNpZGVyZWQNCisgIGJpbmFyeS4gIFRoaXMgZmllbGQgaXMgb25seSBmb3IgaW5mb3JtYXRpb24gcHVycG9zZXMgYW5kIGRvZXMgbm90IGFmZmVjdCB0aGUNCisgIGNvbXByZXNzaW9uIGFsZ29yaXRobSBpbiBhbnkgbWFubmVyLg0KKw0KKyAgICBkZWZsYXRlKCkgcmV0dXJucyBaX09LIGlmIHNvbWUgcHJvZ3Jlc3MgaGFzIGJlZW4gbWFkZSAobW9yZSBpbnB1dA0KKyAgcHJvY2Vzc2VkIG9yIG1vcmUgb3V0cHV0IHByb2R1Y2VkKSwgWl9TVFJFQU1fRU5EIGlmIGFsbCBpbnB1dCBoYXMgYmVlbg0KKyAgY29uc3VtZWQgYW5kIGFsbCBvdXRwdXQgaGFzIGJlZW4gcHJvZHVjZWQgKG9ubHkgd2hlbiBmbHVzaCBpcyBzZXQgdG8NCisgIFpfRklOSVNIKSwgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50IChmb3IgZXhhbXBsZQ0KKyAgaWYgbmV4dF9pbiBvciBuZXh0X291dCB3YXMgWl9OVUxMKSwgWl9CVUZfRVJST1IgaWYgbm8gcHJvZ3Jlc3MgaXMgcG9zc2libGUNCisgIChmb3IgZXhhbXBsZSBhdmFpbF9pbiBvciBhdmFpbF9vdXQgd2FzIHplcm8pLiAgTm90ZSB0aGF0IFpfQlVGX0VSUk9SIGlzIG5vdA0KKyAgZmF0YWwsIGFuZCBkZWZsYXRlKCkgY2FuIGJlIGNhbGxlZCBhZ2FpbiB3aXRoIG1vcmUgaW5wdXQgYW5kIG1vcmUgb3V0cHV0DQorICBzcGFjZSB0byBjb250aW51ZSBjb21wcmVzc2luZy4NCisqLw0KKw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUVuZCBPRigoel9zdHJlYW1wIHN0cm0pKTsNCisvKg0KKyAgICAgQWxsIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBkYXRhIHN0cnVjdHVyZXMgZm9yIHRoaXMgc3RyZWFtIGFyZSBmcmVlZC4NCisgICBUaGlzIGZ1bmN0aW9uIGRpc2NhcmRzIGFueSB1bnByb2Nlc3NlZCBpbnB1dCBhbmQgZG9lcyBub3QgZmx1c2ggYW55IHBlbmRpbmcNCisgICBvdXRwdXQuDQorDQorICAgICBkZWZsYXRlRW5kIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUNCisgICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudCwgWl9EQVRBX0VSUk9SIGlmIHRoZSBzdHJlYW0gd2FzIGZyZWVkDQorICAgcHJlbWF0dXJlbHkgKHNvbWUgaW5wdXQgb3Igb3V0cHV0IHdhcyBkaXNjYXJkZWQpLiAgSW4gdGhlIGVycm9yIGNhc2UsIG1zZw0KKyAgIG1heSBiZSBzZXQgYnV0IHRoZW4gcG9pbnRzIHRvIGEgc3RhdGljIHN0cmluZyAod2hpY2ggbXVzdCBub3QgYmUNCisgICBkZWFsbG9jYXRlZCkuDQorKi8NCisNCisNCisvKg0KK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUluaXQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7DQorDQorICAgICBJbml0aWFsaXplcyB0aGUgaW50ZXJuYWwgc3RyZWFtIHN0YXRlIGZvciBkZWNvbXByZXNzaW9uLiAgVGhlIGZpZWxkcw0KKyAgIG5leHRfaW4sIGF2YWlsX2luLCB6YWxsb2MsIHpmcmVlIGFuZCBvcGFxdWUgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgYnkNCisgICB0aGUgY2FsbGVyLiAgSWYgbmV4dF9pbiBpcyBub3QgWl9OVUxMIGFuZCBhdmFpbF9pbiBpcyBsYXJnZSBlbm91Z2ggKHRoZQ0KKyAgIGV4YWN0IHZhbHVlIGRlcGVuZHMgb24gdGhlIGNvbXByZXNzaW9uIG1ldGhvZCksIGluZmxhdGVJbml0IGRldGVybWluZXMgdGhlDQorICAgY29tcHJlc3Npb24gbWV0aG9kIGZyb20gdGhlIHpsaWIgaGVhZGVyIGFuZCBhbGxvY2F0ZXMgYWxsIGRhdGEgc3RydWN0dXJlcw0KKyAgIGFjY29yZGluZ2x5OyBvdGhlcndpc2UgdGhlIGFsbG9jYXRpb24gd2lsbCBiZSBkZWZlcnJlZCB0byB0aGUgZmlyc3QgY2FsbCBvZg0KKyAgIGluZmxhdGUuICBJZiB6YWxsb2MgYW5kIHpmcmVlIGFyZSBzZXQgdG8gWl9OVUxMLCBpbmZsYXRlSW5pdCB1cGRhdGVzIHRoZW0gdG8NCisgICB1c2UgZGVmYXVsdCBhbGxvY2F0aW9uIGZ1bmN0aW9ucy4NCisNCisgICAgIGluZmxhdGVJbml0IHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaA0KKyAgIG1lbW9yeSwgWl9WRVJTSU9OX0VSUk9SIGlmIHRoZSB6bGliIGxpYnJhcnkgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUNCisgICB2ZXJzaW9uIGFzc3VtZWQgYnkgdGhlIGNhbGxlciwgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHBhcmFtZXRlcnMgYXJlDQorICAgaW52YWxpZCwgc3VjaCBhcyBhIG51bGwgcG9pbnRlciB0byB0aGUgc3RydWN0dXJlLiAgbXNnIGlzIHNldCB0byBudWxsIGlmDQorICAgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZS4gIGluZmxhdGVJbml0IGRvZXMgbm90IHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb24NCisgICBhcGFydCBmcm9tIHBvc3NpYmx5IHJlYWRpbmcgdGhlIHpsaWIgaGVhZGVyIGlmIHByZXNlbnQ6IGFjdHVhbCBkZWNvbXByZXNzaW9uDQorICAgd2lsbCBiZSBkb25lIGJ5IGluZmxhdGUoKS4gIChTbyBuZXh0X2luIGFuZCBhdmFpbF9pbiBtYXkgYmUgbW9kaWZpZWQsIGJ1dA0KKyAgIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgYXJlIHVudXNlZCBhbmQgdW5jaGFuZ2VkLikgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24NCisgICBvZiBpbmZsYXRlSW5pdCgpIGRvZXMgbm90IHByb2Nlc3MgYW55IGhlYWRlciBpbmZvcm1hdGlvbiAtLSB0aGF0IGlzIGRlZmVycmVkDQorICAgdW50aWwgaW5mbGF0ZSgpIGlzIGNhbGxlZC4NCisqLw0KKw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZSBPRigoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCkpOw0KKy8qDQorICAgIGluZmxhdGUgZGVjb21wcmVzc2VzIGFzIG11Y2ggZGF0YSBhcyBwb3NzaWJsZSwgYW5kIHN0b3BzIHdoZW4gdGhlIGlucHV0DQorICBidWZmZXIgYmVjb21lcyBlbXB0eSBvciB0aGUgb3V0cHV0IGJ1ZmZlciBiZWNvbWVzIGZ1bGwuICBJdCBtYXkgaW50cm9kdWNlDQorICBzb21lIG91dHB1dCBsYXRlbmN5IChyZWFkaW5nIGlucHV0IHdpdGhvdXQgcHJvZHVjaW5nIGFueSBvdXRwdXQpIGV4Y2VwdCB3aGVuDQorICBmb3JjZWQgdG8gZmx1c2guDQorDQorICBUaGUgZGV0YWlsZWQgc2VtYW50aWNzIGFyZSBhcyBmb2xsb3dzLiAgaW5mbGF0ZSBwZXJmb3JtcyBvbmUgb3IgYm90aCBvZiB0aGUNCisgIGZvbGxvd2luZyBhY3Rpb25zOg0KKw0KKyAgLSBEZWNvbXByZXNzIG1vcmUgaW5wdXQgc3RhcnRpbmcgYXQgbmV4dF9pbiBhbmQgdXBkYXRlIG5leHRfaW4gYW5kIGF2YWlsX2luDQorICAgIGFjY29yZGluZ2x5LiAgSWYgbm90IGFsbCBpbnB1dCBjYW4gYmUgcHJvY2Vzc2VkIChiZWNhdXNlIHRoZXJlIGlzIG5vdA0KKyAgICBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciksIG5leHRfaW4gaXMgdXBkYXRlZCBhbmQgcHJvY2Vzc2luZyB3aWxsDQorICAgIHJlc3VtZSBhdCB0aGlzIHBvaW50IGZvciB0aGUgbmV4dCBjYWxsIG9mIGluZmxhdGUoKS4NCisNCisgIC0gUHJvdmlkZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBhbmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQNCisgICAgYWNjb3JkaW5nbHkuICBpbmZsYXRlKCkgcHJvdmlkZXMgYXMgbXVjaCBvdXRwdXQgYXMgcG9zc2libGUsIHVudGlsIHRoZXJlIGlzDQorICAgIG5vIG1vcmUgaW5wdXQgZGF0YSBvciBubyBtb3JlIHNwYWNlIGluIHRoZSBvdXRwdXQgYnVmZmVyIChzZWUgYmVsb3cgYWJvdXQNCisgICAgdGhlIGZsdXNoIHBhcmFtZXRlcikuDQorDQorICAgIEJlZm9yZSB0aGUgY2FsbCBvZiBpbmZsYXRlKCksIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZW5zdXJlIHRoYXQgYXQgbGVhc3QNCisgIG9uZSBvZiB0aGUgYWN0aW9ucyBpcyBwb3NzaWJsZSwgYnkgcHJvdmlkaW5nIG1vcmUgaW5wdXQgYW5kL29yIGNvbnN1bWluZyBtb3JlDQorICBvdXRwdXQsIGFuZCB1cGRhdGluZyB0aGUgbmV4dF8qIGFuZCBhdmFpbF8qIHZhbHVlcyBhY2NvcmRpbmdseS4gIFRoZQ0KKyAgYXBwbGljYXRpb24gY2FuIGNvbnN1bWUgdGhlIHVuY29tcHJlc3NlZCBvdXRwdXQgd2hlbiBpdCB3YW50cywgZm9yIGV4YW1wbGUNCisgIHdoZW4gdGhlIG91dHB1dCBidWZmZXIgaXMgZnVsbCAoYXZhaWxfb3V0ID09IDApLCBvciBhZnRlciBlYWNoIGNhbGwgb2YNCisgIGluZmxhdGUoKS4gIElmIGluZmxhdGUgcmV0dXJucyBaX09LIGFuZCB3aXRoIHplcm8gYXZhaWxfb3V0LCBpdCBtdXN0IGJlDQorICBjYWxsZWQgYWdhaW4gYWZ0ZXIgbWFraW5nIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIgYmVjYXVzZSB0aGVyZSBtaWdodCBiZQ0KKyAgbW9yZSBvdXRwdXQgcGVuZGluZy4NCisNCisgICAgVGhlIGZsdXNoIHBhcmFtZXRlciBvZiBpbmZsYXRlKCkgY2FuIGJlIFpfTk9fRkxVU0gsIFpfU1lOQ19GTFVTSCwgWl9GSU5JU0gsDQorICBaX0JMT0NLLCBvciBaX1RSRUVTLiAgWl9TWU5DX0ZMVVNIIHJlcXVlc3RzIHRoYXQgaW5mbGF0ZSgpIGZsdXNoIGFzIG11Y2gNCisgIG91dHB1dCBhcyBwb3NzaWJsZSB0byB0aGUgb3V0cHV0IGJ1ZmZlci4gIFpfQkxPQ0sgcmVxdWVzdHMgdGhhdCBpbmZsYXRlKCkNCisgIHN0b3AgaWYgYW5kIHdoZW4gaXQgZ2V0cyB0byB0aGUgbmV4dCBkZWZsYXRlIGJsb2NrIGJvdW5kYXJ5LiAgV2hlbiBkZWNvZGluZw0KKyAgdGhlIHpsaWIgb3IgZ3ppcCBmb3JtYXQsIHRoaXMgd2lsbCBjYXVzZSBpbmZsYXRlKCkgdG8gcmV0dXJuIGltbWVkaWF0ZWx5DQorICBhZnRlciB0aGUgaGVhZGVyIGFuZCBiZWZvcmUgdGhlIGZpcnN0IGJsb2NrLiAgV2hlbiBkb2luZyBhIHJhdyBpbmZsYXRlLA0KKyAgaW5mbGF0ZSgpIHdpbGwgZ28gYWhlYWQgYW5kIHByb2Nlc3MgdGhlIGZpcnN0IGJsb2NrLCBhbmQgd2lsbCByZXR1cm4gd2hlbiBpdA0KKyAgZ2V0cyB0byB0aGUgZW5kIG9mIHRoYXQgYmxvY2ssIG9yIHdoZW4gaXQgcnVucyBvdXQgb2YgZGF0YS4NCisNCisgICAgVGhlIFpfQkxPQ0sgb3B0aW9uIGFzc2lzdHMgaW4gYXBwZW5kaW5nIHRvIG9yIGNvbWJpbmluZyBkZWZsYXRlIHN0cmVhbXMuDQorICBBbHNvIHRvIGFzc2lzdCBpbiB0aGlzLCBvbiByZXR1cm4gaW5mbGF0ZSgpIHdpbGwgc2V0IHN0cm0tPmRhdGFfdHlwZSB0byB0aGUNCisgIG51bWJlciBvZiB1bnVzZWQgYml0cyBpbiB0aGUgbGFzdCBieXRlIHRha2VuIGZyb20gc3RybS0+bmV4dF9pbiwgcGx1cyA2NCBpZg0KKyAgaW5mbGF0ZSgpIGlzIGN1cnJlbnRseSBkZWNvZGluZyB0aGUgbGFzdCBibG9jayBpbiB0aGUgZGVmbGF0ZSBzdHJlYW0sIHBsdXMNCisgIDEyOCBpZiBpbmZsYXRlKCkgcmV0dXJuZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGVjb2RpbmcgYW4gZW5kLW9mLWJsb2NrIGNvZGUgb3INCisgIGRlY29kaW5nIHRoZSBjb21wbGV0ZSBoZWFkZXIgdXAgdG8ganVzdCBiZWZvcmUgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGRlZmxhdGUNCisgIHN0cmVhbS4gIFRoZSBlbmQtb2YtYmxvY2sgd2lsbCBub3QgYmUgaW5kaWNhdGVkIHVudGlsIGFsbCBvZiB0aGUgdW5jb21wcmVzc2VkDQorICBkYXRhIGZyb20gdGhhdCBibG9jayBoYXMgYmVlbiB3cml0dGVuIHRvIHN0cm0tPm5leHRfb3V0LiAgVGhlIG51bWJlciBvZg0KKyAgdW51c2VkIGJpdHMgbWF5IGluIGdlbmVyYWwgYmUgZ3JlYXRlciB0aGFuIHNldmVuLCBleGNlcHQgd2hlbiBiaXQgNyBvZg0KKyAgZGF0YV90eXBlIGlzIHNldCwgaW4gd2hpY2ggY2FzZSB0aGUgbnVtYmVyIG9mIHVudXNlZCBiaXRzIHdpbGwgYmUgbGVzcyB0aGFuDQorICBlaWdodC4gIGRhdGFfdHlwZSBpcyBzZXQgYXMgbm90ZWQgaGVyZSBldmVyeSB0aW1lIGluZmxhdGUoKSByZXR1cm5zIGZvciBhbGwNCisgIGZsdXNoIG9wdGlvbnMsIGFuZCBzbyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFtb3VudCBvZiBjdXJyZW50bHkNCisgIGNvbnN1bWVkIGlucHV0IGluIGJpdHMuDQorDQorICAgIFRoZSBaX1RSRUVTIG9wdGlvbiBiZWhhdmVzIGFzIFpfQkxPQ0sgZG9lcywgYnV0IGl0IGFsc28gcmV0dXJucyB3aGVuIHRoZQ0KKyAgZW5kIG9mIGVhY2ggZGVmbGF0ZSBibG9jayBoZWFkZXIgaXMgcmVhY2hlZCwgYmVmb3JlIGFueSBhY3R1YWwgZGF0YSBpbiB0aGF0DQorICBibG9jayBpcyBkZWNvZGVkLiAgVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUNCisgIGRlZmxhdGUgYmxvY2sgaGVhZGVyIGZvciBsYXRlciB1c2UgaW4gcmFuZG9tIGFjY2VzcyB3aXRoaW4gYSBkZWZsYXRlIGJsb2NrLg0KKyAgMjU2IGlzIGFkZGVkIHRvIHRoZSB2YWx1ZSBvZiBzdHJtLT5kYXRhX3R5cGUgd2hlbiBpbmZsYXRlKCkgcmV0dXJucw0KKyAgaW1tZWRpYXRlbHkgYWZ0ZXIgcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgZGVmbGF0ZSBibG9jayBoZWFkZXIuDQorDQorICAgIGluZmxhdGUoKSBzaG91bGQgbm9ybWFsbHkgYmUgY2FsbGVkIHVudGlsIGl0IHJldHVybnMgWl9TVFJFQU1fRU5EIG9yIGFuDQorICBlcnJvci4gIEhvd2V2ZXIgaWYgYWxsIGRlY29tcHJlc3Npb24gaXMgdG8gYmUgcGVyZm9ybWVkIGluIGEgc2luZ2xlIHN0ZXAgKGENCisgIHNpbmdsZSBjYWxsIG9mIGluZmxhdGUpLCB0aGUgcGFyYW1ldGVyIGZsdXNoIHNob3VsZCBiZSBzZXQgdG8gWl9GSU5JU0guICBJbg0KKyAgdGhpcyBjYXNlIGFsbCBwZW5kaW5nIGlucHV0IGlzIHByb2Nlc3NlZCBhbmQgYWxsIHBlbmRpbmcgb3V0cHV0IGlzIGZsdXNoZWQ7DQorICBhdmFpbF9vdXQgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCBhbGwgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGZvciB0aGUNCisgIG9wZXJhdGlvbiB0byBjb21wbGV0ZS4gIChUaGUgc2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgbWF5IGhhdmUgYmVlbg0KKyAgc2F2ZWQgYnkgdGhlIGNvbXByZXNzb3IgZm9yIHRoaXMgcHVycG9zZS4pIFRoZSB1c2Ugb2YgWl9GSU5JU0ggaXMgbm90DQorICByZXF1aXJlZCB0byBwZXJmb3JtIGFuIGluZmxhdGlvbiBpbiBvbmUgc3RlcC4gIEhvd2V2ZXIgaXQgbWF5IGJlIHVzZWQgdG8NCisgIGluZm9ybSBpbmZsYXRlIHRoYXQgYSBmYXN0ZXIgYXBwcm9hY2ggY2FuIGJlIHVzZWQgZm9yIHRoZSBzaW5nbGUgaW5mbGF0ZSgpDQorICBjYWxsLiAgWl9GSU5JU0ggYWxzbyBpbmZvcm1zIGluZmxhdGUgdG8gbm90IG1haW50YWluIGEgc2xpZGluZyB3aW5kb3cgaWYgdGhlDQorICBzdHJlYW0gY29tcGxldGVzLCB3aGljaCByZWR1Y2VzIGluZmxhdGUncyBtZW1vcnkgZm9vdHByaW50LiAgSWYgdGhlIHN0cmVhbQ0KKyAgZG9lcyBub3QgY29tcGxldGUsIGVpdGhlciBiZWNhdXNlIG5vdCBhbGwgb2YgdGhlIHN0cmVhbSBpcyBwcm92aWRlZCBvciBub3QNCisgIGVub3VnaCBvdXRwdXQgc3BhY2UgaXMgcHJvdmlkZWQsIHRoZW4gYSBzbGlkaW5nIHdpbmRvdyB3aWxsIGJlIGFsbG9jYXRlZCBhbmQNCisgIGluZmxhdGUoKSBjYW4gYmUgY2FsbGVkIGFnYWluIHRvIGNvbnRpbnVlIHRoZSBvcGVyYXRpb24gYXMgaWYgWl9OT19GTFVTSCBoYWQNCisgIGJlZW4gdXNlZC4NCisNCisgICAgIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIGluZmxhdGUoKSBhbHdheXMgZmx1c2hlcyBhcyBtdWNoIG91dHB1dCBhcw0KKyAgcG9zc2libGUgdG8gdGhlIG91dHB1dCBidWZmZXIsIGFuZCBhbHdheXMgdXNlcyB0aGUgZmFzdGVyIGFwcHJvYWNoIG9uIHRoZQ0KKyAgZmlyc3QgY2FsbC4gIFNvIHRoZSBlZmZlY3RzIG9mIHRoZSBmbHVzaCBwYXJhbWV0ZXIgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiBhcmUNCisgIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgaW5mbGF0ZSgpIGFzIG5vdGVkIGJlbG93LCB3aGVuIGluZmxhdGUoKSByZXR1cm5zIGVhcmx5DQorICB3aGVuIFpfQkxPQ0sgb3IgWl9UUkVFUyBpcyB1c2VkLCBhbmQgd2hlbiBpbmZsYXRlKCkgYXZvaWRzIHRoZSBhbGxvY2F0aW9uIG9mDQorICBtZW1vcnkgZm9yIGEgc2xpZGluZyB3aW5kb3cgd2hlbiBaX0ZJTklTSCBpcyB1c2VkLg0KKw0KKyAgICAgSWYgYSBwcmVzZXQgZGljdGlvbmFyeSBpcyBuZWVkZWQgYWZ0ZXIgdGhpcyBjYWxsIChzZWUgaW5mbGF0ZVNldERpY3Rpb25hcnkNCisgIGJlbG93KSwgaW5mbGF0ZSBzZXRzIHN0cm0tPmFkbGVyIHRvIHRoZSBBZGxlci0zMiBjaGVja3N1bSBvZiB0aGUgZGljdGlvbmFyeQ0KKyAgY2hvc2VuIGJ5IHRoZSBjb21wcmVzc29yIGFuZCByZXR1cm5zIFpfTkVFRF9ESUNUOyBvdGhlcndpc2UgaXQgc2V0cw0KKyAgc3RybS0+YWRsZXIgdG8gdGhlIEFkbGVyLTMyIGNoZWNrc3VtIG9mIGFsbCBvdXRwdXQgcHJvZHVjZWQgc28gZmFyICh0aGF0IGlzLA0KKyAgdG90YWxfb3V0IGJ5dGVzKSBhbmQgcmV0dXJucyBaX09LLCBaX1NUUkVBTV9FTkQgb3IgYW4gZXJyb3IgY29kZSBhcyBkZXNjcmliZWQNCisgIGJlbG93LiAgQXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLCBpbmZsYXRlKCkgY2hlY2tzIHRoYXQgaXRzIGNvbXB1dGVkIGFkbGVyMzINCisgIGNoZWNrc3VtIGlzIGVxdWFsIHRvIHRoYXQgc2F2ZWQgYnkgdGhlIGNvbXByZXNzb3IgYW5kIHJldHVybnMgWl9TVFJFQU1fRU5EDQorICBvbmx5IGlmIHRoZSBjaGVja3N1bSBpcyBjb3JyZWN0Lg0KKw0KKyAgICBpbmZsYXRlKCkgY2FuIGRlY29tcHJlc3MgYW5kIGNoZWNrIGVpdGhlciB6bGliLXdyYXBwZWQgb3IgZ3ppcC13cmFwcGVkDQorICBkZWZsYXRlIGRhdGEuICBUaGUgaGVhZGVyIHR5cGUgaXMgZGV0ZWN0ZWQgYXV0b21hdGljYWxseSwgaWYgcmVxdWVzdGVkIHdoZW4NCisgIGluaXRpYWxpemluZyB3aXRoIGluZmxhdGVJbml0MigpLiAgQW55IGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGUgZ3ppcA0KKyAgaGVhZGVyIGlzIG5vdCByZXRhaW5lZCwgc28gYXBwbGljYXRpb25zIHRoYXQgbmVlZCB0aGF0IGluZm9ybWF0aW9uIHNob3VsZA0KKyAgaW5zdGVhZCB1c2UgcmF3IGluZmxhdGUsIHNlZSBpbmZsYXRlSW5pdDIoKSBiZWxvdywgb3IgaW5mbGF0ZUJhY2soKSBhbmQNCisgIHBlcmZvcm0gdGhlaXIgb3duIHByb2Nlc3Npbmcgb2YgdGhlIGd6aXAgaGVhZGVyIGFuZCB0cmFpbGVyLiAgV2hlbiBwcm9jZXNzaW5nDQorICBnemlwLXdyYXBwZWQgZGVmbGF0ZSBkYXRhLCBzdHJtLT5hZGxlcjMyIGlzIHNldCB0byB0aGUgQ1JDLTMyIG9mIHRoZSBvdXRwdXQNCisgIHByb2R1Y3RlZCBzbyBmYXIuICBUaGUgQ1JDLTMyIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgZ3ppcCB0cmFpbGVyLg0KKw0KKyAgICBpbmZsYXRlKCkgcmV0dXJucyBaX09LIGlmIHNvbWUgcHJvZ3Jlc3MgaGFzIGJlZW4gbWFkZSAobW9yZSBpbnB1dCBwcm9jZXNzZWQNCisgIG9yIG1vcmUgb3V0cHV0IHByb2R1Y2VkKSwgWl9TVFJFQU1fRU5EIGlmIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBoYXMNCisgIGJlZW4gcmVhY2hlZCBhbmQgYWxsIHVuY29tcHJlc3NlZCBvdXRwdXQgaGFzIGJlZW4gcHJvZHVjZWQsIFpfTkVFRF9ESUNUIGlmIGENCisgIHByZXNldCBkaWN0aW9uYXJ5IGlzIG5lZWRlZCBhdCB0aGlzIHBvaW50LCBaX0RBVEFfRVJST1IgaWYgdGhlIGlucHV0IGRhdGEgd2FzDQorICBjb3JydXB0ZWQgKGlucHV0IHN0cmVhbSBub3QgY29uZm9ybWluZyB0byB0aGUgemxpYiBmb3JtYXQgb3IgaW5jb3JyZWN0IGNoZWNrDQorICB2YWx1ZSksIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gc3RydWN0dXJlIHdhcyBpbmNvbnNpc3RlbnQgKGZvciBleGFtcGxlDQorICBuZXh0X2luIG9yIG5leHRfb3V0IHdhcyBaX05VTEwpLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCBtZW1vcnksDQorICBaX0JVRl9FUlJPUiBpZiBubyBwcm9ncmVzcyBpcyBwb3NzaWJsZSBvciBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZQ0KKyAgb3V0cHV0IGJ1ZmZlciB3aGVuIFpfRklOSVNIIGlzIHVzZWQuICBOb3RlIHRoYXQgWl9CVUZfRVJST1IgaXMgbm90IGZhdGFsLCBhbmQNCisgIGluZmxhdGUoKSBjYW4gYmUgY2FsbGVkIGFnYWluIHdpdGggbW9yZSBpbnB1dCBhbmQgbW9yZSBvdXRwdXQgc3BhY2UgdG8NCisgIGNvbnRpbnVlIGRlY29tcHJlc3NpbmcuICBJZiBaX0RBVEFfRVJST1IgaXMgcmV0dXJuZWQsIHRoZSBhcHBsaWNhdGlvbiBtYXkNCisgIHRoZW4gY2FsbCBpbmZsYXRlU3luYygpIHRvIGxvb2sgZm9yIGEgZ29vZCBjb21wcmVzc2lvbiBibG9jayBpZiBhIHBhcnRpYWwNCisgIHJlY292ZXJ5IG9mIHRoZSBkYXRhIGlzIGRlc2lyZWQuDQorKi8NCisNCisNCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVFbmQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7DQorLyoNCisgICAgIEFsbCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGZvciB0aGlzIHN0cmVhbSBhcmUgZnJlZWQuDQorICAgVGhpcyBmdW5jdGlvbiBkaXNjYXJkcyBhbnkgdW5wcm9jZXNzZWQgaW5wdXQgYW5kIGRvZXMgbm90IGZsdXNoIGFueSBwZW5kaW5nDQorICAgb3V0cHV0Lg0KKw0KKyAgICAgaW5mbGF0ZUVuZCByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHN0cmVhbSBzdGF0ZQ0KKyAgIHdhcyBpbmNvbnNpc3RlbnQuICBJbiB0aGUgZXJyb3IgY2FzZSwgbXNnIG1heSBiZSBzZXQgYnV0IHRoZW4gcG9pbnRzIHRvIGENCisgICBzdGF0aWMgc3RyaW5nICh3aGljaCBtdXN0IG5vdCBiZSBkZWFsbG9jYXRlZCkuDQorKi8NCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBBZHZhbmNlZCBmdW5jdGlvbnMgKi8NCisNCisvKg0KKyAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIG9ubHkgaW4gc29tZSBzcGVjaWFsIGFwcGxpY2F0aW9ucy4NCisqLw0KKw0KKy8qDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlSW5pdDIgT0YoKHpfc3RyZWFtcCBzdHJtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgIGxldmVsLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgIG1ldGhvZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICB3aW5kb3dCaXRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgIG1lbUxldmVsLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgIHN0cmF0ZWd5KSk7DQorDQorICAgICBUaGlzIGlzIGFub3RoZXIgdmVyc2lvbiBvZiBkZWZsYXRlSW5pdCB3aXRoIG1vcmUgY29tcHJlc3Npb24gb3B0aW9ucy4gIFRoZQ0KKyAgIGZpZWxkcyBuZXh0X2luLCB6YWxsb2MsIHpmcmVlIGFuZCBvcGFxdWUgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgYnkgdGhlDQorICAgY2FsbGVyLg0KKw0KKyAgICAgVGhlIG1ldGhvZCBwYXJhbWV0ZXIgaXMgdGhlIGNvbXByZXNzaW9uIG1ldGhvZC4gIEl0IG11c3QgYmUgWl9ERUZMQVRFRCBpbg0KKyAgIHRoaXMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4NCisNCisgICAgIFRoZSB3aW5kb3dCaXRzIHBhcmFtZXRlciBpcyB0aGUgYmFzZSB0d28gbG9nYXJpdGhtIG9mIHRoZSB3aW5kb3cgc2l6ZQ0KKyAgICh0aGUgc2l6ZSBvZiB0aGUgaGlzdG9yeSBidWZmZXIpLiAgSXQgc2hvdWxkIGJlIGluIHRoZSByYW5nZSA4Li4xNSBmb3IgdGhpcw0KKyAgIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuICBMYXJnZXIgdmFsdWVzIG9mIHRoaXMgcGFyYW1ldGVyIHJlc3VsdCBpbiBiZXR0ZXINCisgICBjb21wcmVzc2lvbiBhdCB0aGUgZXhwZW5zZSBvZiBtZW1vcnkgdXNhZ2UuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxNSBpZg0KKyAgIGRlZmxhdGVJbml0IGlzIHVzZWQgaW5zdGVhZC4NCisNCisgICAgIHdpbmRvd0JpdHMgY2FuIGFsc28gYmUgLTguLi0xNSBmb3IgcmF3IGRlZmxhdGUuICBJbiB0aGlzIGNhc2UsIC13aW5kb3dCaXRzDQorICAgZGV0ZXJtaW5lcyB0aGUgd2luZG93IHNpemUuICBkZWZsYXRlKCkgd2lsbCB0aGVuIGdlbmVyYXRlIHJhdyBkZWZsYXRlIGRhdGENCisgICB3aXRoIG5vIHpsaWIgaGVhZGVyIG9yIHRyYWlsZXIsIGFuZCB3aWxsIG5vdCBjb21wdXRlIGFuIGFkbGVyMzIgY2hlY2sgdmFsdWUuDQorDQorICAgICB3aW5kb3dCaXRzIGNhbiBhbHNvIGJlIGdyZWF0ZXIgdGhhbiAxNSBmb3Igb3B0aW9uYWwgZ3ppcCBlbmNvZGluZy4gIEFkZA0KKyAgIDE2IHRvIHdpbmRvd0JpdHMgdG8gd3JpdGUgYSBzaW1wbGUgZ3ppcCBoZWFkZXIgYW5kIHRyYWlsZXIgYXJvdW5kIHRoZQ0KKyAgIGNvbXByZXNzZWQgZGF0YSBpbnN0ZWFkIG9mIGEgemxpYiB3cmFwcGVyLiAgVGhlIGd6aXAgaGVhZGVyIHdpbGwgaGF2ZSBubw0KKyAgIGZpbGUgbmFtZSwgbm8gZXh0cmEgZGF0YSwgbm8gY29tbWVudCwgbm8gbW9kaWZpY2F0aW9uIHRpbWUgKHNldCB0byB6ZXJvKSwgbm8NCisgICBoZWFkZXIgY3JjLCBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0gd2lsbCBiZSBzZXQgdG8gMjU1ICh1bmtub3duKS4gIElmIGENCisgICBnemlwIHN0cmVhbSBpcyBiZWluZyB3cml0dGVuLCBzdHJtLT5hZGxlciBpcyBhIGNyYzMyIGluc3RlYWQgb2YgYW4gYWRsZXIzMi4NCisNCisgICAgIFRoZSBtZW1MZXZlbCBwYXJhbWV0ZXIgc3BlY2lmaWVzIGhvdyBtdWNoIG1lbW9yeSBzaG91bGQgYmUgYWxsb2NhdGVkDQorICAgZm9yIHRoZSBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4gIG1lbUxldmVsPTEgdXNlcyBtaW5pbXVtIG1lbW9yeSBidXQgaXMNCisgICBzbG93IGFuZCByZWR1Y2VzIGNvbXByZXNzaW9uIHJhdGlvOyBtZW1MZXZlbD05IHVzZXMgbWF4aW11bSBtZW1vcnkgZm9yDQorICAgb3B0aW1hbCBzcGVlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDguICBTZWUgemNvbmYuaCBmb3IgdG90YWwgbWVtb3J5IHVzYWdlDQorICAgYXMgYSBmdW5jdGlvbiBvZiB3aW5kb3dCaXRzIGFuZCBtZW1MZXZlbC4NCisNCisgICAgIFRoZSBzdHJhdGVneSBwYXJhbWV0ZXIgaXMgdXNlZCB0byB0dW5lIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uICBVc2UgdGhlDQorICAgdmFsdWUgWl9ERUZBVUxUX1NUUkFURUdZIGZvciBub3JtYWwgZGF0YSwgWl9GSUxURVJFRCBmb3IgZGF0YSBwcm9kdWNlZCBieSBhDQorICAgZmlsdGVyIChvciBwcmVkaWN0b3IpLCBaX0hVRkZNQU5fT05MWSB0byBmb3JjZSBIdWZmbWFuIGVuY29kaW5nIG9ubHkgKG5vDQorICAgc3RyaW5nIG1hdGNoKSwgb3IgWl9STEUgdG8gbGltaXQgbWF0Y2ggZGlzdGFuY2VzIHRvIG9uZSAocnVuLWxlbmd0aA0KKyAgIGVuY29kaW5nKS4gIEZpbHRlcmVkIGRhdGEgY29uc2lzdHMgbW9zdGx5IG9mIHNtYWxsIHZhbHVlcyB3aXRoIGEgc29tZXdoYXQNCisgICByYW5kb20gZGlzdHJpYnV0aW9uLiAgSW4gdGhpcyBjYXNlLCB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGlzIHR1bmVkIHRvDQorICAgY29tcHJlc3MgdGhlbSBiZXR0ZXIuICBUaGUgZWZmZWN0IG9mIFpfRklMVEVSRUQgaXMgdG8gZm9yY2UgbW9yZSBIdWZmbWFuDQorICAgY29kaW5nIGFuZCBsZXNzIHN0cmluZyBtYXRjaGluZzsgaXQgaXMgc29tZXdoYXQgaW50ZXJtZWRpYXRlIGJldHdlZW4NCisgICBaX0RFRkFVTFRfU1RSQVRFR1kgYW5kIFpfSFVGRk1BTl9PTkxZLiAgWl9STEUgaXMgZGVzaWduZWQgdG8gYmUgYWxtb3N0IGFzDQorICAgZmFzdCBhcyBaX0hVRkZNQU5fT05MWSwgYnV0IGdpdmUgYmV0dGVyIGNvbXByZXNzaW9uIGZvciBQTkcgaW1hZ2UgZGF0YS4gIFRoZQ0KKyAgIHN0cmF0ZWd5IHBhcmFtZXRlciBvbmx5IGFmZmVjdHMgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGJ1dCBub3QgdGhlDQorICAgY29ycmVjdG5lc3Mgb2YgdGhlIGNvbXByZXNzZWQgb3V0cHV0IGV2ZW4gaWYgaXQgaXMgbm90IHNldCBhcHByb3ByaWF0ZWx5Lg0KKyAgIFpfRklYRUQgcHJldmVudHMgdGhlIHVzZSBvZiBkeW5hbWljIEh1ZmZtYW4gY29kZXMsIGFsbG93aW5nIGZvciBhIHNpbXBsZXINCisgICBkZWNvZGVyIGZvciBzcGVjaWFsIGFwcGxpY2F0aW9ucy4NCisNCisgICAgIGRlZmxhdGVJbml0MiByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gNCisgICBtZW1vcnksIFpfU1RSRUFNX0VSUk9SIGlmIGFueSBwYXJhbWV0ZXIgaXMgaW52YWxpZCAoc3VjaCBhcyBhbiBpbnZhbGlkDQorICAgbWV0aG9kKSwgb3IgWl9WRVJTSU9OX0VSUk9SIGlmIHRoZSB6bGliIGxpYnJhcnkgdmVyc2lvbiAoemxpYl92ZXJzaW9uKSBpcw0KKyAgIGluY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIGFzc3VtZWQgYnkgdGhlIGNhbGxlciAoWkxJQl9WRVJTSU9OKS4gIG1zZyBpcw0KKyAgIHNldCB0byBudWxsIGlmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UuICBkZWZsYXRlSW5pdDIgZG9lcyBub3QgcGVyZm9ybSBhbnkNCisgICBjb21wcmVzc2lvbjogdGhpcyB3aWxsIGJlIGRvbmUgYnkgZGVmbGF0ZSgpLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlU2V0RGljdGlvbmFyeSBPRigoel9zdHJlYW1wIHN0cm0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnl0ZWYgKmRpY3Rpb25hcnksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdUludCAgZGljdExlbmd0aCkpOw0KKy8qDQorICAgICBJbml0aWFsaXplcyB0aGUgY29tcHJlc3Npb24gZGljdGlvbmFyeSBmcm9tIHRoZSBnaXZlbiBieXRlIHNlcXVlbmNlDQorICAgd2l0aG91dCBwcm9kdWNpbmcgYW55IGNvbXByZXNzZWQgb3V0cHV0LiAgV2hlbiB1c2luZyB0aGUgemxpYiBmb3JtYXQsIHRoaXMNCisgICBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBkZWZsYXRlSW5pdCwgZGVmbGF0ZUluaXQyIG9yDQorICAgZGVmbGF0ZVJlc2V0LCBhbmQgYmVmb3JlIGFueSBjYWxsIG9mIGRlZmxhdGUuICBXaGVuIGRvaW5nIHJhdyBkZWZsYXRlLCB0aGlzDQorICAgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZWl0aGVyIGJlZm9yZSBhbnkgY2FsbCBvZiBkZWZsYXRlLCBvciBpbW1lZGlhdGVseQ0KKyAgIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIGEgZGVmbGF0ZSBibG9jaywgaS5lLiBhZnRlciBhbGwgaW5wdXQgaGFzIGJlZW4NCisgICBjb25zdW1lZCBhbmQgYWxsIG91dHB1dCBoYXMgYmVlbiBkZWxpdmVyZWQgd2hlbiB1c2luZyBhbnkgb2YgdGhlIGZsdXNoDQorICAgb3B0aW9ucyBaX0JMT0NLLCBaX1BBUlRJQUxfRkxVU0gsIFpfU1lOQ19GTFVTSCwgb3IgWl9GVUxMX0ZMVVNILiAgVGhlDQorICAgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG11c3QgdXNlIGV4YWN0bHkgdGhlIHNhbWUgZGljdGlvbmFyeSAoc2VlDQorICAgaW5mbGF0ZVNldERpY3Rpb25hcnkpLg0KKw0KKyAgICAgVGhlIGRpY3Rpb25hcnkgc2hvdWxkIGNvbnNpc3Qgb2Ygc3RyaW5ncyAoYnl0ZSBzZXF1ZW5jZXMpIHRoYXQgYXJlIGxpa2VseQ0KKyAgIHRvIGJlIGVuY291bnRlcmVkIGxhdGVyIGluIHRoZSBkYXRhIHRvIGJlIGNvbXByZXNzZWQsIHdpdGggdGhlIG1vc3QgY29tbW9ubHkNCisgICB1c2VkIHN0cmluZ3MgcHJlZmVyYWJseSBwdXQgdG93YXJkcyB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVXNpbmcgYQ0KKyAgIGRpY3Rpb25hcnkgaXMgbW9zdCB1c2VmdWwgd2hlbiB0aGUgZGF0YSB0byBiZSBjb21wcmVzc2VkIGlzIHNob3J0IGFuZCBjYW4gYmUNCisgICBwcmVkaWN0ZWQgd2l0aCBnb29kIGFjY3VyYWN5OyB0aGUgZGF0YSBjYW4gdGhlbiBiZSBjb21wcmVzc2VkIGJldHRlciB0aGFuDQorICAgd2l0aCB0aGUgZGVmYXVsdCBlbXB0eSBkaWN0aW9uYXJ5Lg0KKw0KKyAgICAgRGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSBjb21wcmVzc2lvbiBkYXRhIHN0cnVjdHVyZXMgc2VsZWN0ZWQgYnkNCisgICBkZWZsYXRlSW5pdCBvciBkZWZsYXRlSW5pdDIsIGEgcGFydCBvZiB0aGUgZGljdGlvbmFyeSBtYXkgaW4gZWZmZWN0IGJlDQorICAgZGlzY2FyZGVkLCBmb3IgZXhhbXBsZSBpZiB0aGUgZGljdGlvbmFyeSBpcyBsYXJnZXIgdGhhbiB0aGUgd2luZG93IHNpemUNCisgICBwcm92aWRlZCBpbiBkZWZsYXRlSW5pdCBvciBkZWZsYXRlSW5pdDIuICBUaHVzIHRoZSBzdHJpbmdzIG1vc3QgbGlrZWx5IHRvIGJlDQorICAgdXNlZnVsIHNob3VsZCBiZSBwdXQgYXQgdGhlIGVuZCBvZiB0aGUgZGljdGlvbmFyeSwgbm90IGF0IHRoZSBmcm9udC4gIEluDQorICAgYWRkaXRpb24sIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGRlZmxhdGUgd2lsbCB1c2UgYXQgbW9zdCB0aGUgd2luZG93DQorICAgc2l6ZSBtaW51cyAyNjIgYnl0ZXMgb2YgdGhlIHByb3ZpZGVkIGRpY3Rpb25hcnkuDQorDQorICAgICBVcG9uIHJldHVybiBvZiB0aGlzIGZ1bmN0aW9uLCBzdHJtLT5hZGxlciBpcyBzZXQgdG8gdGhlIGFkbGVyMzIgdmFsdWUNCisgICBvZiB0aGUgZGljdGlvbmFyeTsgdGhlIGRlY29tcHJlc3NvciBtYXkgbGF0ZXIgdXNlIHRoaXMgdmFsdWUgdG8gZGV0ZXJtaW5lDQorICAgd2hpY2ggZGljdGlvbmFyeSBoYXMgYmVlbiB1c2VkIGJ5IHRoZSBjb21wcmVzc29yLiAgKFRoZSBhZGxlcjMyIHZhbHVlDQorICAgYXBwbGllcyB0byB0aGUgd2hvbGUgZGljdGlvbmFyeSBldmVuIGlmIG9ubHkgYSBzdWJzZXQgb2YgdGhlIGRpY3Rpb25hcnkgaXMNCisgICBhY3R1YWxseSB1c2VkIGJ5IHRoZSBjb21wcmVzc29yLikgSWYgYSByYXcgZGVmbGF0ZSB3YXMgcmVxdWVzdGVkLCB0aGVuIHRoZQ0KKyAgIGFkbGVyMzIgdmFsdWUgaXMgbm90IGNvbXB1dGVkIGFuZCBzdHJtLT5hZGxlciBpcyBub3Qgc2V0Lg0KKw0KKyAgICAgZGVmbGF0ZVNldERpY3Rpb25hcnkgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIGENCisgICBwYXJhbWV0ZXIgaXMgaW52YWxpZCAoZS5nLiAgZGljdGlvbmFyeSBiZWluZyBaX05VTEwpIG9yIHRoZSBzdHJlYW0gc3RhdGUgaXMNCisgICBpbmNvbnNpc3RlbnQgKGZvciBleGFtcGxlIGlmIGRlZmxhdGUgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIHRoaXMgc3RyZWFtDQorICAgb3IgaWYgbm90IGF0IGEgYmxvY2sgYm91bmRhcnkgZm9yIHJhdyBkZWZsYXRlKS4gIGRlZmxhdGVTZXREaWN0aW9uYXJ5IGRvZXMNCisgICBub3QgcGVyZm9ybSBhbnkgY29tcHJlc3Npb246IHRoaXMgd2lsbCBiZSBkb25lIGJ5IGRlZmxhdGUoKS4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUNvcHkgT0YoKHpfc3RyZWFtcCBkZXN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfc3RyZWFtcCBzb3VyY2UpKTsNCisvKg0KKyAgICAgU2V0cyB0aGUgZGVzdGluYXRpb24gc3RyZWFtIGFzIGEgY29tcGxldGUgY29weSBvZiB0aGUgc291cmNlIHN0cmVhbS4NCisNCisgICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWZ1bCB3aGVuIHNldmVyYWwgY29tcHJlc3Npb24gc3RyYXRlZ2llcyB3aWxsIGJlDQorICAgdHJpZWQsIGZvciBleGFtcGxlIHdoZW4gdGhlcmUgYXJlIHNldmVyYWwgd2F5cyBvZiBwcmUtcHJvY2Vzc2luZyB0aGUgaW5wdXQNCisgICBkYXRhIHdpdGggYSBmaWx0ZXIuICBUaGUgc3RyZWFtcyB0aGF0IHdpbGwgYmUgZGlzY2FyZGVkIHNob3VsZCB0aGVuIGJlIGZyZWVkDQorICAgYnkgY2FsbGluZyBkZWZsYXRlRW5kLiAgTm90ZSB0aGF0IGRlZmxhdGVDb3B5IGR1cGxpY2F0ZXMgdGhlIGludGVybmFsDQorICAgY29tcHJlc3Npb24gc3RhdGUgd2hpY2ggY2FuIGJlIHF1aXRlIGxhcmdlLCBzbyB0aGlzIHN0cmF0ZWd5IGlzIHNsb3cgYW5kIGNhbg0KKyAgIGNvbnN1bWUgbG90cyBvZiBtZW1vcnkuDQorDQorICAgICBkZWZsYXRlQ29weSByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdA0KKyAgIGVub3VnaCBtZW1vcnksIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2Ugc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQNCisgICAoc3VjaCBhcyB6YWxsb2MgYmVpbmcgWl9OVUxMKS4gIG1zZyBpcyBsZWZ0IHVuY2hhbmdlZCBpbiBib3RoIHNvdXJjZSBhbmQNCisgICBkZXN0aW5hdGlvbi4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVJlc2V0IE9GKCh6X3N0cmVhbXAgc3RybSkpOw0KKy8qDQorICAgICBUaGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gZGVmbGF0ZUVuZCBmb2xsb3dlZCBieSBkZWZsYXRlSW5pdCwNCisgICBidXQgZG9lcyBub3QgZnJlZSBhbmQgcmVhbGxvY2F0ZSBhbGwgdGhlIGludGVybmFsIGNvbXByZXNzaW9uIHN0YXRlLiAgVGhlDQorICAgc3RyZWFtIHdpbGwga2VlcCB0aGUgc2FtZSBjb21wcmVzc2lvbiBsZXZlbCBhbmQgYW55IG90aGVyIGF0dHJpYnV0ZXMgdGhhdA0KKyAgIG1heSBoYXZlIGJlZW4gc2V0IGJ5IGRlZmxhdGVJbml0Mi4NCisNCisgICAgIGRlZmxhdGVSZXNldCByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQ0KKyAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50IChzdWNoIGFzIHphbGxvYyBvciBzdGF0ZSBiZWluZyBaX05VTEwpLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlUGFyYW1zIE9GKCh6X3N0cmVhbXAgc3RybSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJhdGVneSkpOw0KKy8qDQorICAgICBEeW5hbWljYWxseSB1cGRhdGUgdGhlIGNvbXByZXNzaW9uIGxldmVsIGFuZCBjb21wcmVzc2lvbiBzdHJhdGVneS4gIFRoZQ0KKyAgIGludGVycHJldGF0aW9uIG9mIGxldmVsIGFuZCBzdHJhdGVneSBpcyBhcyBpbiBkZWZsYXRlSW5pdDIuICBUaGlzIGNhbiBiZQ0KKyAgIHVzZWQgdG8gc3dpdGNoIGJldHdlZW4gY29tcHJlc3Npb24gYW5kIHN0cmFpZ2h0IGNvcHkgb2YgdGhlIGlucHV0IGRhdGEsIG9yDQorICAgdG8gc3dpdGNoIHRvIGEgZGlmZmVyZW50IGtpbmQgb2YgaW5wdXQgZGF0YSByZXF1aXJpbmcgYSBkaWZmZXJlbnQgc3RyYXRlZ3kuDQorICAgSWYgdGhlIGNvbXByZXNzaW9uIGxldmVsIGlzIGNoYW5nZWQsIHRoZSBpbnB1dCBhdmFpbGFibGUgc28gZmFyIGlzDQorICAgY29tcHJlc3NlZCB3aXRoIHRoZSBvbGQgbGV2ZWwgKGFuZCBtYXkgYmUgZmx1c2hlZCk7IHRoZSBuZXcgbGV2ZWwgd2lsbCB0YWtlDQorICAgZWZmZWN0IG9ubHkgYXQgdGhlIG5leHQgY2FsbCBvZiBkZWZsYXRlKCkuDQorDQorICAgICBCZWZvcmUgdGhlIGNhbGwgb2YgZGVmbGF0ZVBhcmFtcywgdGhlIHN0cmVhbSBzdGF0ZSBtdXN0IGJlIHNldCBhcyBmb3INCisgICBhIGNhbGwgb2YgZGVmbGF0ZSgpLCBzaW5jZSB0aGUgY3VycmVudGx5IGF2YWlsYWJsZSBpbnB1dCBtYXkgaGF2ZSB0byBiZQ0KKyAgIGNvbXByZXNzZWQgYW5kIGZsdXNoZWQuICBJbiBwYXJ0aWN1bGFyLCBzdHJtLT5hdmFpbF9vdXQgbXVzdCBiZSBub24temVyby4NCisNCisgICAgIGRlZmxhdGVQYXJhbXMgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UNCisgICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudCBvciBpZiBhIHBhcmFtZXRlciB3YXMgaW52YWxpZCwgWl9CVUZfRVJST1IgaWYNCisgICBzdHJtLT5hdmFpbF9vdXQgd2FzIHplcm8uDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVUdW5lIE9GKCh6X3N0cmVhbXAgc3RybSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ29vZF9sZW5ndGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9sYXp5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuaWNlX2xlbmd0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4X2NoYWluKSk7DQorLyoNCisgICAgIEZpbmUgdHVuZSBkZWZsYXRlJ3MgaW50ZXJuYWwgY29tcHJlc3Npb24gcGFyYW1ldGVycy4gIFRoaXMgc2hvdWxkIG9ubHkgYmUNCisgICB1c2VkIGJ5IHNvbWVvbmUgd2hvIHVuZGVyc3RhbmRzIHRoZSBhbGdvcml0aG0gdXNlZCBieSB6bGliJ3MgZGVmbGF0ZSBmb3INCisgICBzZWFyY2hpbmcgZm9yIHRoZSBiZXN0IG1hdGNoaW5nIHN0cmluZywgYW5kIGV2ZW4gdGhlbiBvbmx5IGJ5IHRoZSBtb3N0DQorICAgZmFuYXRpYyBvcHRpbWl6ZXIgdHJ5aW5nIHRvIHNxdWVlemUgb3V0IHRoZSBsYXN0IGNvbXByZXNzZWQgYml0IGZvciB0aGVpcg0KKyAgIHNwZWNpZmljIGlucHV0IGRhdGEuICBSZWFkIHRoZSBkZWZsYXRlLmMgc291cmNlIGNvZGUgZm9yIHRoZSBtZWFuaW5nIG9mIHRoZQ0KKyAgIG1heF9sYXp5LCBnb29kX2xlbmd0aCwgbmljZV9sZW5ndGgsIGFuZCBtYXhfY2hhaW4gcGFyYW1ldGVycy4NCisNCisgICAgIGRlZmxhdGVUdW5lKCkgY2FuIGJlIGNhbGxlZCBhZnRlciBkZWZsYXRlSW5pdCgpIG9yIGRlZmxhdGVJbml0MigpLCBhbmQNCisgICByZXR1cm5zIFpfT0sgb24gc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgZm9yIGFuIGludmFsaWQgZGVmbGF0ZSBzdHJlYW0uDQorICovDQorDQorWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGRlZmxhdGVCb3VuZCBPRigoel9zdHJlYW1wIHN0cm0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdUxvbmcgc291cmNlTGVuKSk7DQorLyoNCisgICAgIGRlZmxhdGVCb3VuZCgpIHJldHVybnMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGNvbXByZXNzZWQgc2l6ZSBhZnRlcg0KKyAgIGRlZmxhdGlvbiBvZiBzb3VyY2VMZW4gYnl0ZXMuICBJdCBtdXN0IGJlIGNhbGxlZCBhZnRlciBkZWZsYXRlSW5pdCgpIG9yDQorICAgZGVmbGF0ZUluaXQyKCksIGFuZCBhZnRlciBkZWZsYXRlU2V0SGVhZGVyKCksIGlmIHVzZWQuICBUaGlzIHdvdWxkIGJlIHVzZWQNCisgICB0byBhbGxvY2F0ZSBhbiBvdXRwdXQgYnVmZmVyIGZvciBkZWZsYXRpb24gaW4gYSBzaW5nbGUgcGFzcywgYW5kIHNvIHdvdWxkIGJlDQorICAgY2FsbGVkIGJlZm9yZSBkZWZsYXRlKCkuICBJZiB0aGF0IGZpcnN0IGRlZmxhdGUoKSBjYWxsIGlzIHByb3ZpZGVkIHRoZQ0KKyAgIHNvdXJjZUxlbiBpbnB1dCBieXRlcywgYW4gb3V0cHV0IGJ1ZmZlciBhbGxvY2F0ZWQgdG8gdGhlIHNpemUgcmV0dXJuZWQgYnkNCisgICBkZWZsYXRlQm91bmQoKSwgYW5kIHRoZSBmbHVzaCB2YWx1ZSBaX0ZJTklTSCwgdGhlbiBkZWZsYXRlKCkgaXMgZ3VhcmFudGVlZA0KKyAgIHRvIHJldHVybiBaX1NUUkVBTV9FTkQuICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBjb21wcmVzc2VkIHNpemUgdG8NCisgICBiZSBsYXJnZXIgdGhhbiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgZGVmbGF0ZUJvdW5kKCkgaWYgZmx1c2ggb3B0aW9ucyBvdGhlcg0KKyAgIHRoYW4gWl9GSU5JU0ggb3IgWl9OT19GTFVTSCBhcmUgdXNlZC4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVBlbmRpbmcgT0YoKHpfc3RyZWFtcCBzdHJtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICpwZW5kaW5nLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYml0cykpOw0KKy8qDQorICAgICBkZWZsYXRlUGVuZGluZygpIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBhbmQgYml0cyBvZiBvdXRwdXQgdGhhdCBoYXZlDQorICAgYmVlbiBnZW5lcmF0ZWQsIGJ1dCBub3QgeWV0IHByb3ZpZGVkIGluIHRoZSBhdmFpbGFibGUgb3V0cHV0LiAgVGhlIGJ5dGVzIG5vdA0KKyAgIHByb3ZpZGVkIHdvdWxkIGJlIGR1ZSB0byB0aGUgYXZhaWxhYmxlIG91dHB1dCBzcGFjZSBoYXZpbmcgYmVpbmcgY29uc3VtZWQuDQorICAgVGhlIG51bWJlciBvZiBiaXRzIG9mIG91dHB1dCBub3QgcHJvdmlkZWQgYXJlIGJldHdlZW4gMCBhbmQgNywgd2hlcmUgdGhleQ0KKyAgIGF3YWl0IG1vcmUgYml0cyB0byBqb2luIHRoZW0gaW4gb3JkZXIgdG8gZmlsbCBvdXQgYSBmdWxsIGJ5dGUuICBJZiBwZW5kaW5nDQorICAgb3IgYml0cyBhcmUgWl9OVUxMLCB0aGVuIHRob3NlIHZhbHVlcyBhcmUgbm90IHNldC4NCisNCisgICAgIGRlZmxhdGVQZW5kaW5nIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlDQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuDQorICovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlUHJpbWUgT0YoKHpfc3RyZWFtcCBzdHJtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYml0cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKSk7DQorLyoNCisgICAgIGRlZmxhdGVQcmltZSgpIGluc2VydHMgYml0cyBpbiB0aGUgZGVmbGF0ZSBvdXRwdXQgc3RyZWFtLiAgVGhlIGludGVudA0KKyAgIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHN0YXJ0IG9mZiB0aGUgZGVmbGF0ZSBvdXRwdXQgd2l0aCB0aGUgYml0cw0KKyAgIGxlZnRvdmVyIGZyb20gYSBwcmV2aW91cyBkZWZsYXRlIHN0cmVhbSB3aGVuIGFwcGVuZGluZyB0byBpdC4gIEFzIHN1Y2gsIHRoaXMNCisgICBmdW5jdGlvbiBjYW4gb25seSBiZSB1c2VkIGZvciByYXcgZGVmbGF0ZSwgYW5kIG11c3QgYmUgdXNlZCBiZWZvcmUgdGhlIGZpcnN0DQorICAgZGVmbGF0ZSgpIGNhbGwgYWZ0ZXIgYSBkZWZsYXRlSW5pdDIoKSBvciBkZWZsYXRlUmVzZXQoKS4gIGJpdHMgbXVzdCBiZSBsZXNzDQorICAgdGhhbiBvciBlcXVhbCB0byAxNiwgYW5kIHRoYXQgbWFueSBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB2YWx1ZQ0KKyAgIHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhlIG91dHB1dC4NCisNCisgICAgIGRlZmxhdGVQcmltZSByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9CVUZfRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gNCisgICByb29tIGluIHRoZSBpbnRlcm5hbCBidWZmZXIgdG8gaW5zZXJ0IHRoZSBiaXRzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUNCisgICBzb3VyY2Ugc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVTZXRIZWFkZXIgT0YoKHpfc3RyZWFtcCBzdHJtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3pfaGVhZGVycCBoZWFkKSk7DQorLyoNCisgICAgIGRlZmxhdGVTZXRIZWFkZXIoKSBwcm92aWRlcyBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiBmb3Igd2hlbiBhIGd6aXANCisgICBzdHJlYW0gaXMgcmVxdWVzdGVkIGJ5IGRlZmxhdGVJbml0MigpLiAgZGVmbGF0ZVNldEhlYWRlcigpIG1heSBiZSBjYWxsZWQNCisgICBhZnRlciBkZWZsYXRlSW5pdDIoKSBvciBkZWZsYXRlUmVzZXQoKSBhbmQgYmVmb3JlIHRoZSBmaXJzdCBjYWxsIG9mDQorICAgZGVmbGF0ZSgpLiAgVGhlIHRleHQsIHRpbWUsIG9zLCBleHRyYSBmaWVsZCwgbmFtZSwgYW5kIGNvbW1lbnQgaW5mb3JtYXRpb24NCisgICBpbiB0aGUgcHJvdmlkZWQgZ3pfaGVhZGVyIHN0cnVjdHVyZSBhcmUgd3JpdHRlbiB0byB0aGUgZ3ppcCBoZWFkZXIgKHhmbGFnIGlzDQorICAgaWdub3JlZCAtLSB0aGUgZXh0cmEgZmxhZ3MgYXJlIHNldCBhY2NvcmRpbmcgdG8gdGhlIGNvbXByZXNzaW9uIGxldmVsKS4gIFRoZQ0KKyAgIGNhbGxlciBtdXN0IGFzc3VyZSB0aGF0LCBpZiBub3QgWl9OVUxMLCBuYW1lIGFuZCBjb21tZW50IGFyZSB0ZXJtaW5hdGVkIHdpdGgNCisgICBhIHplcm8gYnl0ZSwgYW5kIHRoYXQgaWYgZXh0cmEgaXMgbm90IFpfTlVMTCwgdGhhdCBleHRyYV9sZW4gYnl0ZXMgYXJlDQorICAgYXZhaWxhYmxlIHRoZXJlLiAgSWYgaGNyYyBpcyB0cnVlLCBhIGd6aXAgaGVhZGVyIGNyYyBpcyBpbmNsdWRlZC4gIE5vdGUgdGhhdA0KKyAgIHRoZSBjdXJyZW50IHZlcnNpb25zIG9mIHRoZSBjb21tYW5kLWxpbmUgdmVyc2lvbiBvZiBnemlwICh1cCB0aHJvdWdoIHZlcnNpb24NCisgICAxLjMueCkgZG8gbm90IHN1cHBvcnQgaGVhZGVyIGNyYydzLCBhbmQgd2lsbCByZXBvcnQgdGhhdCBpdCBpcyBhICJtdWx0aS1wYXJ0DQorICAgZ3ppcCBmaWxlIiBhbmQgZ2l2ZSB1cC4NCisNCisgICAgIElmIGRlZmxhdGVTZXRIZWFkZXIgaXMgbm90IHVzZWQsIHRoZSBkZWZhdWx0IGd6aXAgaGVhZGVyIGhhcyB0ZXh0IGZhbHNlLA0KKyAgIHRoZSB0aW1lIHNldCB0byB6ZXJvLCBhbmQgb3Mgc2V0IHRvIDI1NSwgd2l0aCBubyBleHRyYSwgbmFtZSwgb3IgY29tbWVudA0KKyAgIGZpZWxkcy4gIFRoZSBnemlwIGhlYWRlciBpcyByZXR1cm5lZCB0byB0aGUgZGVmYXVsdCBzdGF0ZSBieSBkZWZsYXRlUmVzZXQoKS4NCisNCisgICAgIGRlZmxhdGVTZXRIZWFkZXIgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UNCisgICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudC4NCisqLw0KKw0KKy8qDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdDIgT0YoKHpfc3RyZWFtcCBzdHJtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgIHdpbmRvd0JpdHMpKTsNCisNCisgICAgIFRoaXMgaXMgYW5vdGhlciB2ZXJzaW9uIG9mIGluZmxhdGVJbml0IHdpdGggYW4gZXh0cmEgcGFyYW1ldGVyLiAgVGhlDQorICAgZmllbGRzIG5leHRfaW4sIGF2YWlsX2luLCB6YWxsb2MsIHpmcmVlIGFuZCBvcGFxdWUgbXVzdCBiZSBpbml0aWFsaXplZA0KKyAgIGJlZm9yZSBieSB0aGUgY2FsbGVyLg0KKw0KKyAgICAgVGhlIHdpbmRvd0JpdHMgcGFyYW1ldGVyIGlzIHRoZSBiYXNlIHR3byBsb2dhcml0aG0gb2YgdGhlIG1heGltdW0gd2luZG93DQorICAgc2l6ZSAodGhlIHNpemUgb2YgdGhlIGhpc3RvcnkgYnVmZmVyKS4gIEl0IHNob3VsZCBiZSBpbiB0aGUgcmFuZ2UgOC4uMTUgZm9yDQorICAgdGhpcyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTUgaWYgaW5mbGF0ZUluaXQgaXMgdXNlZA0KKyAgIGluc3RlYWQuICB3aW5kb3dCaXRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB3aW5kb3dCaXRzIHZhbHVlDQorICAgcHJvdmlkZWQgdG8gZGVmbGF0ZUluaXQyKCkgd2hpbGUgY29tcHJlc3NpbmcsIG9yIGl0IG11c3QgYmUgZXF1YWwgdG8gMTUgaWYNCisgICBkZWZsYXRlSW5pdDIoKSB3YXMgbm90IHVzZWQuICBJZiBhIGNvbXByZXNzZWQgc3RyZWFtIHdpdGggYSBsYXJnZXIgd2luZG93DQorICAgc2l6ZSBpcyBnaXZlbiBhcyBpbnB1dCwgaW5mbGF0ZSgpIHdpbGwgcmV0dXJuIHdpdGggdGhlIGVycm9yIGNvZGUNCisgICBaX0RBVEFfRVJST1IgaW5zdGVhZCBvZiB0cnlpbmcgdG8gYWxsb2NhdGUgYSBsYXJnZXIgd2luZG93Lg0KKw0KKyAgICAgd2luZG93Qml0cyBjYW4gYWxzbyBiZSB6ZXJvIHRvIHJlcXVlc3QgdGhhdCBpbmZsYXRlIHVzZSB0aGUgd2luZG93IHNpemUgaW4NCisgICB0aGUgemxpYiBoZWFkZXIgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLg0KKw0KKyAgICAgd2luZG93Qml0cyBjYW4gYWxzbyBiZSAtOC4uLTE1IGZvciByYXcgaW5mbGF0ZS4gIEluIHRoaXMgY2FzZSwgLXdpbmRvd0JpdHMNCisgICBkZXRlcm1pbmVzIHRoZSB3aW5kb3cgc2l6ZS4gIGluZmxhdGUoKSB3aWxsIHRoZW4gcHJvY2VzcyByYXcgZGVmbGF0ZSBkYXRhLA0KKyAgIG5vdCBsb29raW5nIGZvciBhIHpsaWIgb3IgZ3ppcCBoZWFkZXIsIG5vdCBnZW5lcmF0aW5nIGEgY2hlY2sgdmFsdWUsIGFuZCBub3QNCisgICBsb29raW5nIGZvciBhbnkgY2hlY2sgdmFsdWVzIGZvciBjb21wYXJpc29uIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmVhbS4gIFRoaXMNCisgICBpcyBmb3IgdXNlIHdpdGggb3RoZXIgZm9ybWF0cyB0aGF0IHVzZSB0aGUgZGVmbGF0ZSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0DQorICAgc3VjaCBhcyB6aXAuICBUaG9zZSBmb3JtYXRzIHByb3ZpZGUgdGhlaXIgb3duIGNoZWNrIHZhbHVlcy4gIElmIGEgY3VzdG9tDQorICAgZm9ybWF0IGlzIGRldmVsb3BlZCB1c2luZyB0aGUgcmF3IGRlZmxhdGUgZm9ybWF0IGZvciBjb21wcmVzc2VkIGRhdGEsIGl0IGlzDQorICAgcmVjb21tZW5kZWQgdGhhdCBhIGNoZWNrIHZhbHVlIHN1Y2ggYXMgYW4gYWRsZXIzMiBvciBhIGNyYzMyIGJlIGFwcGxpZWQgdG8NCisgICB0aGUgdW5jb21wcmVzc2VkIGRhdGEgYXMgaXMgZG9uZSBpbiB0aGUgemxpYiwgZ3ppcCwgYW5kIHppcCBmb3JtYXRzLiAgRm9yDQorICAgbW9zdCBhcHBsaWNhdGlvbnMsIHRoZSB6bGliIGZvcm1hdCBzaG91bGQgYmUgdXNlZCBhcyBpcy4gIE5vdGUgdGhhdCBjb21tZW50cw0KKyAgIGFib3ZlIG9uIHRoZSB1c2UgaW4gZGVmbGF0ZUluaXQyKCkgYXBwbGllcyB0byB0aGUgbWFnbml0dWRlIG9mIHdpbmRvd0JpdHMuDQorDQorICAgICB3aW5kb3dCaXRzIGNhbiBhbHNvIGJlIGdyZWF0ZXIgdGhhbiAxNSBmb3Igb3B0aW9uYWwgZ3ppcCBkZWNvZGluZy4gIEFkZA0KKyAgIDMyIHRvIHdpbmRvd0JpdHMgdG8gZW5hYmxlIHpsaWIgYW5kIGd6aXAgZGVjb2Rpbmcgd2l0aCBhdXRvbWF0aWMgaGVhZGVyDQorICAgZGV0ZWN0aW9uLCBvciBhZGQgMTYgdG8gZGVjb2RlIG9ubHkgdGhlIGd6aXAgZm9ybWF0ICh0aGUgemxpYiBmb3JtYXQgd2lsbA0KKyAgIHJldHVybiBhIFpfREFUQV9FUlJPUikuICBJZiBhIGd6aXAgc3RyZWFtIGlzIGJlaW5nIGRlY29kZWQsIHN0cm0tPmFkbGVyIGlzIGENCisgICBjcmMzMiBpbnN0ZWFkIG9mIGFuIGFkbGVyMzIuDQorDQorICAgICBpbmZsYXRlSW5pdDIgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoDQorICAgbWVtb3J5LCBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHpsaWIgbGlicmFyeSB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZQ0KKyAgIHZlcnNpb24gYXNzdW1lZCBieSB0aGUgY2FsbGVyLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgcGFyYW1ldGVycyBhcmUNCisgICBpbnZhbGlkLCBzdWNoIGFzIGEgbnVsbCBwb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUuICBtc2cgaXMgc2V0IHRvIG51bGwgaWYNCisgICB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLiAgaW5mbGF0ZUluaXQyIGRvZXMgbm90IHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb24NCisgICBhcGFydCBmcm9tIHBvc3NpYmx5IHJlYWRpbmcgdGhlIHpsaWIgaGVhZGVyIGlmIHByZXNlbnQ6IGFjdHVhbCBkZWNvbXByZXNzaW9uDQorICAgd2lsbCBiZSBkb25lIGJ5IGluZmxhdGUoKS4gIChTbyBuZXh0X2luIGFuZCBhdmFpbF9pbiBtYXkgYmUgbW9kaWZpZWQsIGJ1dA0KKyAgIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgYXJlIHVudXNlZCBhbmQgdW5jaGFuZ2VkLikgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24NCisgICBvZiBpbmZsYXRlSW5pdDIoKSBkb2VzIG5vdCBwcm9jZXNzIGFueSBoZWFkZXIgaW5mb3JtYXRpb24gLS0gdGhhdCBpcw0KKyAgIGRlZmVycmVkIHVudGlsIGluZmxhdGUoKSBpcyBjYWxsZWQuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVTZXREaWN0aW9uYXJ5IE9GKCh6X3N0cmVhbXAgc3RybSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlZiAqZGljdGlvbmFyeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1SW50ICBkaWN0TGVuZ3RoKSk7DQorLyoNCisgICAgIEluaXRpYWxpemVzIHRoZSBkZWNvbXByZXNzaW9uIGRpY3Rpb25hcnkgZnJvbSB0aGUgZ2l2ZW4gdW5jb21wcmVzc2VkIGJ5dGUNCisgICBzZXF1ZW5jZS4gIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxsIG9mIGluZmxhdGUsDQorICAgaWYgdGhhdCBjYWxsIHJldHVybmVkIFpfTkVFRF9ESUNULiAgVGhlIGRpY3Rpb25hcnkgY2hvc2VuIGJ5IHRoZSBjb21wcmVzc29yDQorICAgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgYWRsZXIzMiB2YWx1ZSByZXR1cm5lZCBieSB0aGF0IGNhbGwgb2YgaW5mbGF0ZS4NCisgICBUaGUgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG11c3QgdXNlIGV4YWN0bHkgdGhlIHNhbWUgZGljdGlvbmFyeSAoc2VlDQorICAgZGVmbGF0ZVNldERpY3Rpb25hcnkpLiAgRm9yIHJhdyBpbmZsYXRlLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgYXQgYW55DQorICAgdGltZSB0byBzZXQgdGhlIGRpY3Rpb25hcnkuICBJZiB0aGUgcHJvdmlkZWQgZGljdGlvbmFyeSBpcyBzbWFsbGVyIHRoYW4gdGhlDQorICAgd2luZG93IGFuZCB0aGVyZSBpcyBhbHJlYWR5IGRhdGEgaW4gdGhlIHdpbmRvdywgdGhlbiB0aGUgcHJvdmlkZWQgZGljdGlvbmFyeQ0KKyAgIHdpbGwgYW1lbmQgd2hhdCdzIHRoZXJlLiAgVGhlIGFwcGxpY2F0aW9uIG11c3QgaW5zdXJlIHRoYXQgdGhlIGRpY3Rpb25hcnkNCisgICB0aGF0IHdhcyB1c2VkIGZvciBjb21wcmVzc2lvbiBpcyBwcm92aWRlZC4NCisNCisgICAgIGluZmxhdGVTZXREaWN0aW9uYXJ5IHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiBhDQorICAgcGFyYW1ldGVyIGlzIGludmFsaWQgKGUuZy4gIGRpY3Rpb25hcnkgYmVpbmcgWl9OVUxMKSBvciB0aGUgc3RyZWFtIHN0YXRlIGlzDQorICAgaW5jb25zaXN0ZW50LCBaX0RBVEFfRVJST1IgaWYgdGhlIGdpdmVuIGRpY3Rpb25hcnkgZG9lc24ndCBtYXRjaCB0aGUNCisgICBleHBlY3RlZCBvbmUgKGluY29ycmVjdCBhZGxlcjMyIHZhbHVlKS4gIGluZmxhdGVTZXREaWN0aW9uYXJ5IGRvZXMgbm90DQorICAgcGVyZm9ybSBhbnkgZGVjb21wcmVzc2lvbjogdGhpcyB3aWxsIGJlIGRvbmUgYnkgc3Vic2VxdWVudCBjYWxscyBvZg0KKyAgIGluZmxhdGUoKS4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUdldERpY3Rpb25hcnkgT0YoKHpfc3RyZWFtcCBzdHJtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVmICpkaWN0aW9uYXJ5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVJbnQgICpkaWN0TGVuZ3RoKSk7DQorLyoNCisgICAgIFJldHVybnMgdGhlIHNsaWRpbmcgZGljdGlvbmFyeSBiZWluZyBtYWludGFpbmVkIGJ5IGluZmxhdGUuICBkaWN0TGVuZ3RoIGlzDQorICAgc2V0IHRvIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRpY3Rpb25hcnksIGFuZCB0aGF0IG1hbnkgYnl0ZXMgYXJlIGNvcGllZA0KKyAgIHRvIGRpY3Rpb25hcnkuICBkaWN0aW9uYXJ5IG11c3QgaGF2ZSBlbm91Z2ggc3BhY2UsIHdoZXJlIDMyNzY4IGJ5dGVzIGlzDQorICAgYWx3YXlzIGVub3VnaC4gIElmIGluZmxhdGVHZXREaWN0aW9uYXJ5KCkgaXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBlcXVhbCB0bw0KKyAgIFpfTlVMTCwgdGhlbiBvbmx5IHRoZSBkaWN0aW9uYXJ5IGxlbmd0aCBpcyByZXR1cm5lZCwgYW5kIG5vdGhpbmcgaXMgY29waWVkLg0KKyAgIFNpbWlsYXJ5LCBpZiBkaWN0TGVuZ3RoIGlzIFpfTlVMTCwgdGhlbiBpdCBpcyBub3Qgc2V0Lg0KKw0KKyAgICAgaW5mbGF0ZUdldERpY3Rpb25hcnkgcmV0dXJucyBaX09LIG9uIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZQ0KKyAgIHN0cmVhbSBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVTeW5jIE9GKCh6X3N0cmVhbXAgc3RybSkpOw0KKy8qDQorICAgICBTa2lwcyBpbnZhbGlkIGNvbXByZXNzZWQgZGF0YSB1bnRpbCBhIHBvc3NpYmxlIGZ1bGwgZmx1c2ggcG9pbnQgKHNlZSBhYm92ZQ0KKyAgIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgZGVmbGF0ZSB3aXRoIFpfRlVMTF9GTFVTSCkgY2FuIGJlIGZvdW5kLCBvciB1bnRpbCBhbGwNCisgICBhdmFpbGFibGUgaW5wdXQgaXMgc2tpcHBlZC4gIE5vIG91dHB1dCBpcyBwcm92aWRlZC4NCisNCisgICAgIGluZmxhdGVTeW5jIHNlYXJjaGVzIGZvciBhIDAwIDAwIEZGIEZGIHBhdHRlcm4gaW4gdGhlIGNvbXByZXNzZWQgZGF0YS4NCisgICBBbGwgZnVsbCBmbHVzaCBwb2ludHMgaGF2ZSB0aGlzIHBhdHRlcm4sIGJ1dCBub3QgYWxsIG9jY3VycmVuY2VzIG9mIHRoaXMNCisgICBwYXR0ZXJuIGFyZSBmdWxsIGZsdXNoIHBvaW50cy4NCisNCisgICAgIGluZmxhdGVTeW5jIHJldHVybnMgWl9PSyBpZiBhIHBvc3NpYmxlIGZ1bGwgZmx1c2ggcG9pbnQgaGFzIGJlZW4gZm91bmQsDQorICAgWl9CVUZfRVJST1IgaWYgbm8gbW9yZSBpbnB1dCB3YXMgcHJvdmlkZWQsIFpfREFUQV9FUlJPUiBpZiBubyBmbHVzaCBwb2ludA0KKyAgIGhhcyBiZWVuIGZvdW5kLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0cnVjdHVyZSB3YXMgaW5jb25zaXN0ZW50Lg0KKyAgIEluIHRoZSBzdWNjZXNzIGNhc2UsIHRoZSBhcHBsaWNhdGlvbiBtYXkgc2F2ZSB0aGUgY3VycmVudCBjdXJyZW50IHZhbHVlIG9mDQorICAgdG90YWxfaW4gd2hpY2ggaW5kaWNhdGVzIHdoZXJlIHZhbGlkIGNvbXByZXNzZWQgZGF0YSB3YXMgZm91bmQuICBJbiB0aGUNCisgICBlcnJvciBjYXNlLCB0aGUgYXBwbGljYXRpb24gbWF5IHJlcGVhdGVkbHkgY2FsbCBpbmZsYXRlU3luYywgcHJvdmlkaW5nIG1vcmUNCisgICBpbnB1dCBlYWNoIHRpbWUsIHVudGlsIHN1Y2Nlc3Mgb3IgZW5kIG9mIHRoZSBpbnB1dCBkYXRhLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlQ29weSBPRigoel9zdHJlYW1wIGRlc3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgel9zdHJlYW1wIHNvdXJjZSkpOw0KKy8qDQorICAgICBTZXRzIHRoZSBkZXN0aW5hdGlvbiBzdHJlYW0gYXMgYSBjb21wbGV0ZSBjb3B5IG9mIHRoZSBzb3VyY2Ugc3RyZWFtLg0KKw0KKyAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZnVsIHdoZW4gcmFuZG9tbHkgYWNjZXNzaW5nIGEgbGFyZ2Ugc3RyZWFtLiAgVGhlDQorICAgZmlyc3QgcGFzcyB0aHJvdWdoIHRoZSBzdHJlYW0gY2FuIHBlcmlvZGljYWxseSByZWNvcmQgdGhlIGluZmxhdGUgc3RhdGUsDQorICAgYWxsb3dpbmcgcmVzdGFydGluZyBpbmZsYXRlIGF0IHRob3NlIHBvaW50cyB3aGVuIHJhbmRvbWx5IGFjY2Vzc2luZyB0aGUNCisgICBzdHJlYW0uDQorDQorICAgICBpbmZsYXRlQ29weSByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdA0KKyAgIGVub3VnaCBtZW1vcnksIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2Ugc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQNCisgICAoc3VjaCBhcyB6YWxsb2MgYmVpbmcgWl9OVUxMKS4gIG1zZyBpcyBsZWZ0IHVuY2hhbmdlZCBpbiBib3RoIHNvdXJjZSBhbmQNCisgICBkZXN0aW5hdGlvbi4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVJlc2V0IE9GKCh6X3N0cmVhbXAgc3RybSkpOw0KKy8qDQorICAgICBUaGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gaW5mbGF0ZUVuZCBmb2xsb3dlZCBieSBpbmZsYXRlSW5pdCwNCisgICBidXQgZG9lcyBub3QgZnJlZSBhbmQgcmVhbGxvY2F0ZSBhbGwgdGhlIGludGVybmFsIGRlY29tcHJlc3Npb24gc3RhdGUuICBUaGUNCisgICBzdHJlYW0gd2lsbCBrZWVwIGF0dHJpYnV0ZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBieSBpbmZsYXRlSW5pdDIuDQorDQorICAgICBpbmZsYXRlUmVzZXQgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UNCisgICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudCAoc3VjaCBhcyB6YWxsb2Mgb3Igc3RhdGUgYmVpbmcgWl9OVUxMKS4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVJlc2V0MiBPRigoel9zdHJlYW1wIHN0cm0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2luZG93Qml0cykpOw0KKy8qDQorICAgICBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIGluZmxhdGVSZXNldCwgYnV0IGl0IGFsc28gcGVybWl0cyBjaGFuZ2luZw0KKyAgIHRoZSB3cmFwIGFuZCB3aW5kb3cgc2l6ZSByZXF1ZXN0cy4gIFRoZSB3aW5kb3dCaXRzIHBhcmFtZXRlciBpcyBpbnRlcnByZXRlZA0KKyAgIHRoZSBzYW1lIGFzIGl0IGlzIGZvciBpbmZsYXRlSW5pdDIuDQorDQorICAgICBpbmZsYXRlUmVzZXQyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlDQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQgKHN1Y2ggYXMgemFsbG9jIG9yIHN0YXRlIGJlaW5nIFpfTlVMTCksIG9yIGlmDQorICAgdGhlIHdpbmRvd0JpdHMgcGFyYW1ldGVyIGlzIGludmFsaWQuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVQcmltZSBPRigoel9zdHJlYW1wIHN0cm0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpKTsNCisvKg0KKyAgICAgVGhpcyBmdW5jdGlvbiBpbnNlcnRzIGJpdHMgaW4gdGhlIGluZmxhdGUgaW5wdXQgc3RyZWFtLiAgVGhlIGludGVudCBpcw0KKyAgIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHN0YXJ0IGluZmxhdGluZyBhdCBhIGJpdCBwb3NpdGlvbiBpbiB0aGUNCisgICBtaWRkbGUgb2YgYSBieXRlLiAgVGhlIHByb3ZpZGVkIGJpdHMgd2lsbCBiZSB1c2VkIGJlZm9yZSBhbnkgYnl0ZXMgYXJlIHVzZWQNCisgICBmcm9tIG5leHRfaW4uICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCByYXcgaW5mbGF0ZSwgYW5kDQorICAgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIHRoZSBmaXJzdCBpbmZsYXRlKCkgY2FsbCBhZnRlciBpbmZsYXRlSW5pdDIoKSBvcg0KKyAgIGluZmxhdGVSZXNldCgpLiAgYml0cyBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAxNiwgYW5kIHRoYXQgbWFueSBvZiB0aGUNCisgICBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIHZhbHVlIHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhlIGlucHV0Lg0KKw0KKyAgICAgSWYgYml0cyBpcyBuZWdhdGl2ZSwgdGhlbiB0aGUgaW5wdXQgc3RyZWFtIGJpdCBidWZmZXIgaXMgZW1wdGllZC4gIFRoZW4NCisgICBpbmZsYXRlUHJpbWUoKSBjYW4gYmUgY2FsbGVkIGFnYWluIHRvIHB1dCBiaXRzIGluIHRoZSBidWZmZXIuICBUaGlzIGlzIHVzZWQNCisgICB0byBjbGVhciBvdXQgYml0cyBsZWZ0b3ZlciBhZnRlciBmZWVkaW5nIGluZmxhdGUgYSBibG9jayBkZXNjcmlwdGlvbiBwcmlvcg0KKyAgIHRvIGZlZWRpbmcgaW5mbGF0ZSBjb2Rlcy4NCisNCisgICAgIGluZmxhdGVQcmltZSByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQ0KKyAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50Lg0KKyovDQorDQorWkVYVEVSTiBsb25nIFpFWFBPUlQgaW5mbGF0ZU1hcmsgT0YoKHpfc3RyZWFtcCBzdHJtKSk7DQorLyoNCisgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0d28gdmFsdWVzLCBvbmUgaW4gdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlIHJldHVybg0KKyAgIHZhbHVlLCBhbmQgdGhlIG90aGVyIGluIHRoZSByZW1haW5pbmcgdXBwZXIgYml0cywgb2J0YWluZWQgYnkgc2hpZnRpbmcgdGhlDQorICAgcmV0dXJuIHZhbHVlIGRvd24gMTYgYml0cy4gIElmIHRoZSB1cHBlciB2YWx1ZSBpcyAtMSBhbmQgdGhlIGxvd2VyIHZhbHVlIGlzDQorICAgemVybywgdGhlbiBpbmZsYXRlKCkgaXMgY3VycmVudGx5IGRlY29kaW5nIGluZm9ybWF0aW9uIG91dHNpZGUgb2YgYSBibG9jay4NCisgICBJZiB0aGUgdXBwZXIgdmFsdWUgaXMgLTEgYW5kIHRoZSBsb3dlciB2YWx1ZSBpcyBub24temVybywgdGhlbiBpbmZsYXRlIGlzIGluDQorICAgdGhlIG1pZGRsZSBvZiBhIHN0b3JlZCBibG9jaywgd2l0aCB0aGUgbG93ZXIgdmFsdWUgZXF1YWxpbmcgdGhlIG51bWJlciBvZg0KKyAgIGJ5dGVzIGZyb20gdGhlIGlucHV0IHJlbWFpbmluZyB0byBjb3B5LiAgSWYgdGhlIHVwcGVyIHZhbHVlIGlzIG5vdCAtMSwgdGhlbg0KKyAgIGl0IGlzIHRoZSBudW1iZXIgb2YgYml0cyBiYWNrIGZyb20gdGhlIGN1cnJlbnQgYml0IHBvc2l0aW9uIGluIHRoZSBpbnB1dCBvZg0KKyAgIHRoZSBjb2RlIChsaXRlcmFsIG9yIGxlbmd0aC9kaXN0YW5jZSBwYWlyKSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLiAgSW4NCisgICB0aGF0IGNhc2UgdGhlIGxvd2VyIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgYWxyZWFkeSBlbWl0dGVkIGZvciB0aGF0DQorICAgY29kZS4NCisNCisgICAgIEEgY29kZSBpcyBiZWluZyBwcm9jZXNzZWQgaWYgaW5mbGF0ZSBpcyB3YWl0aW5nIGZvciBtb3JlIGlucHV0IHRvIGNvbXBsZXRlDQorICAgZGVjb2Rpbmcgb2YgdGhlIGNvZGUsIG9yIGlmIGl0IGhhcyBjb21wbGV0ZWQgZGVjb2RpbmcgYnV0IGlzIHdhaXRpbmcgZm9yDQorICAgbW9yZSBvdXRwdXQgc3BhY2UgdG8gd3JpdGUgdGhlIGxpdGVyYWwgb3IgbWF0Y2ggZGF0YS4NCisNCisgICAgIGluZmxhdGVNYXJrKCkgaXMgdXNlZCB0byBtYXJrIGxvY2F0aW9ucyBpbiB0aGUgaW5wdXQgZGF0YSBmb3IgcmFuZG9tDQorICAgYWNjZXNzLCB3aGljaCBtYXkgYmUgYXQgYml0IHBvc2l0aW9ucywgYW5kIHRvIG5vdGUgdGhvc2UgY2FzZXMgd2hlcmUgdGhlDQorICAgb3V0cHV0IG9mIGEgY29kZSBtYXkgc3BhbiBib3VuZGFyaWVzIG9mIHJhbmRvbSBhY2Nlc3MgYmxvY2tzLiAgVGhlIGN1cnJlbnQNCisgICBsb2NhdGlvbiBpbiB0aGUgaW5wdXQgc3RyZWFtIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gYXZhaWxfaW4gYW5kIGRhdGFfdHlwZQ0KKyAgIGFzIG5vdGVkIGluIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIFpfQkxPQ0sgZmx1c2ggcGFyYW1ldGVyIGZvciBpbmZsYXRlLg0KKw0KKyAgICAgaW5mbGF0ZU1hcmsgcmV0dXJucyB0aGUgdmFsdWUgbm90ZWQgYWJvdmUgb3IgLTEgPDwgMTYgaWYgdGhlIHByb3ZpZGVkDQorICAgc291cmNlIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50Lg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlR2V0SGVhZGVyIE9GKCh6X3N0cmVhbXAgc3RybSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd6X2hlYWRlcnAgaGVhZCkpOw0KKy8qDQorICAgICBpbmZsYXRlR2V0SGVhZGVyKCkgcmVxdWVzdHMgdGhhdCBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiBiZSBzdG9yZWQgaW4gdGhlDQorICAgcHJvdmlkZWQgZ3pfaGVhZGVyIHN0cnVjdHVyZS4gIGluZmxhdGVHZXRIZWFkZXIoKSBtYXkgYmUgY2FsbGVkIGFmdGVyDQorICAgaW5mbGF0ZUluaXQyKCkgb3IgaW5mbGF0ZVJlc2V0KCksIGFuZCBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgb2YgaW5mbGF0ZSgpLg0KKyAgIEFzIGluZmxhdGUoKSBwcm9jZXNzZXMgdGhlIGd6aXAgc3RyZWFtLCBoZWFkLT5kb25lIGlzIHplcm8gdW50aWwgdGhlIGhlYWRlcg0KKyAgIGlzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSBoZWFkLT5kb25lIGlzIHNldCB0byBvbmUuICBJZiBhIHpsaWIgc3RyZWFtIGlzDQorICAgYmVpbmcgZGVjb2RlZCwgdGhlbiBoZWFkLT5kb25lIGlzIHNldCB0byAtMSB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIHdpbGwgYmUNCisgICBubyBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiBmb3J0aGNvbWluZy4gIE5vdGUgdGhhdCBaX0JMT0NLIG9yIFpfVFJFRVMgY2FuIGJlDQorICAgdXNlZCB0byBmb3JjZSBpbmZsYXRlKCkgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGhlYWRlciBwcm9jZXNzaW5nIGlzDQorICAgY29tcGxldGUgYW5kIGJlZm9yZSBhbnkgYWN0dWFsIGRhdGEgaXMgZGVjb21wcmVzc2VkLg0KKw0KKyAgICAgVGhlIHRleHQsIHRpbWUsIHhmbGFncywgYW5kIG9zIGZpZWxkcyBhcmUgZmlsbGVkIGluIHdpdGggdGhlIGd6aXAgaGVhZGVyDQorICAgY29udGVudHMuICBoY3JjIGlzIHNldCB0byB0cnVlIGlmIHRoZXJlIGlzIGEgaGVhZGVyIENSQy4gIChUaGUgaGVhZGVyIENSQw0KKyAgIHdhcyB2YWxpZCBpZiBkb25lIGlzIHNldCB0byBvbmUuKSBJZiBleHRyYSBpcyBub3QgWl9OVUxMLCB0aGVuIGV4dHJhX21heA0KKyAgIGNvbnRhaW5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byB3cml0ZSB0byBleHRyYS4gIE9uY2UgZG9uZSBpcyB0cnVlLA0KKyAgIGV4dHJhX2xlbiBjb250YWlucyB0aGUgYWN0dWFsIGV4dHJhIGZpZWxkIGxlbmd0aCwgYW5kIGV4dHJhIGNvbnRhaW5zIHRoZQ0KKyAgIGV4dHJhIGZpZWxkLCBvciB0aGF0IGZpZWxkIHRydW5jYXRlZCBpZiBleHRyYV9tYXggaXMgbGVzcyB0aGFuIGV4dHJhX2xlbi4NCisgICBJZiBuYW1lIGlzIG5vdCBaX05VTEwsIHRoZW4gdXAgdG8gbmFtZV9tYXggY2hhcmFjdGVycyBhcmUgd3JpdHRlbiB0aGVyZSwNCisgICB0ZXJtaW5hdGVkIHdpdGggYSB6ZXJvIHVubGVzcyB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBuYW1lX21heC4gIElmDQorICAgY29tbWVudCBpcyBub3QgWl9OVUxMLCB0aGVuIHVwIHRvIGNvbW1fbWF4IGNoYXJhY3RlcnMgYXJlIHdyaXR0ZW4gdGhlcmUsDQorICAgdGVybWluYXRlZCB3aXRoIGEgemVybyB1bmxlc3MgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gY29tbV9tYXguICBXaGVuIGFueQ0KKyAgIG9mIGV4dHJhLCBuYW1lLCBvciBjb21tZW50IGFyZSBub3QgWl9OVUxMIGFuZCB0aGUgcmVzcGVjdGl2ZSBmaWVsZCBpcyBub3QNCisgICBwcmVzZW50IGluIHRoZSBoZWFkZXIsIHRoZW4gdGhhdCBmaWVsZCBpcyBzZXQgdG8gWl9OVUxMIHRvIHNpZ25hbCBpdHMNCisgICBhYnNlbmNlLiAgVGhpcyBhbGxvd3MgdGhlIHVzZSBvZiBkZWZsYXRlU2V0SGVhZGVyKCkgd2l0aCB0aGUgcmV0dXJuZWQNCisgICBzdHJ1Y3R1cmUgdG8gZHVwbGljYXRlIHRoZSBoZWFkZXIuICBIb3dldmVyIGlmIHRob3NlIGZpZWxkcyBhcmUgc2V0IHRvDQorICAgYWxsb2NhdGVkIG1lbW9yeSwgdGhlbiB0aGUgYXBwbGljYXRpb24gd2lsbCBuZWVkIHRvIHNhdmUgdGhvc2UgcG9pbnRlcnMNCisgICBlbHNld2hlcmUgc28gdGhhdCB0aGV5IGNhbiBiZSBldmVudHVhbGx5IGZyZWVkLg0KKw0KKyAgICAgSWYgaW5mbGF0ZUdldEhlYWRlciBpcyBub3QgdXNlZCwgdGhlbiB0aGUgaGVhZGVyIGluZm9ybWF0aW9uIGlzIHNpbXBseQ0KKyAgIGRpc2NhcmRlZC4gIFRoZSBoZWFkZXIgaXMgYWx3YXlzIGNoZWNrZWQgZm9yIHZhbGlkaXR5LCBpbmNsdWRpbmcgdGhlIGhlYWRlcg0KKyAgIENSQyBpZiBwcmVzZW50LiAgaW5mbGF0ZVJlc2V0KCkgd2lsbCByZXNldCB0aGUgcHJvY2VzcyB0byBkaXNjYXJkIHRoZSBoZWFkZXINCisgICBpbmZvcm1hdGlvbi4gIFRoZSBhcHBsaWNhdGlvbiB3b3VsZCBuZWVkIHRvIGNhbGwgaW5mbGF0ZUdldEhlYWRlcigpIGFnYWluIHRvDQorICAgcmV0cmlldmUgdGhlIGhlYWRlciBmcm9tIHRoZSBuZXh0IGd6aXAgc3RyZWFtLg0KKw0KKyAgICAgaW5mbGF0ZUdldEhlYWRlciByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQ0KKyAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50Lg0KKyovDQorDQorLyoNCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVCYWNrSW5pdCBPRigoel9zdHJlYW1wIHN0cm0sIGludCB3aW5kb3dCaXRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEZBUiAqd2luZG93KSk7DQorDQorICAgICBJbml0aWFsaXplIHRoZSBpbnRlcm5hbCBzdHJlYW0gc3RhdGUgZm9yIGRlY29tcHJlc3Npb24gdXNpbmcgaW5mbGF0ZUJhY2soKQ0KKyAgIGNhbGxzLiAgVGhlIGZpZWxkcyB6YWxsb2MsIHpmcmVlIGFuZCBvcGFxdWUgaW4gc3RybSBtdXN0IGJlIGluaXRpYWxpemVkDQorICAgYmVmb3JlIHRoZSBjYWxsLiAgSWYgemFsbG9jIGFuZCB6ZnJlZSBhcmUgWl9OVUxMLCB0aGVuIHRoZSBkZWZhdWx0IGxpYnJhcnktDQorICAgZGVyaXZlZCBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyBhcmUgdXNlZC4gIHdpbmRvd0JpdHMgaXMgdGhlIGJhc2UgdHdvDQorICAgbG9nYXJpdGhtIG9mIHRoZSB3aW5kb3cgc2l6ZSwgaW4gdGhlIHJhbmdlIDguLjE1LiAgd2luZG93IGlzIGEgY2FsbGVyDQorICAgc3VwcGxpZWQgYnVmZmVyIG9mIHRoYXQgc2l6ZS4gIEV4Y2VwdCBmb3Igc3BlY2lhbCBhcHBsaWNhdGlvbnMgd2hlcmUgaXQgaXMNCisgICBhc3N1cmVkIHRoYXQgZGVmbGF0ZSB3YXMgdXNlZCB3aXRoIHNtYWxsIHdpbmRvdyBzaXplcywgd2luZG93Qml0cyBtdXN0IGJlIDE1DQorICAgYW5kIGEgMzJLIGJ5dGUgd2luZG93IG11c3QgYmUgc3VwcGxpZWQgdG8gYmUgYWJsZSB0byBkZWNvbXByZXNzIGdlbmVyYWwNCisgICBkZWZsYXRlIHN0cmVhbXMuDQorDQorICAgICBTZWUgaW5mbGF0ZUJhY2soKSBmb3IgdGhlIHVzYWdlIG9mIHRoZXNlIHJvdXRpbmVzLg0KKw0KKyAgICAgaW5mbGF0ZUJhY2tJbml0IHdpbGwgcmV0dXJuIFpfT0sgb24gc3VjY2VzcywgWl9TVFJFQU1fRVJST1IgaWYgYW55IG9mDQorICAgdGhlIHBhcmFtZXRlcnMgYXJlIGludmFsaWQsIFpfTUVNX0VSUk9SIGlmIHRoZSBpbnRlcm5hbCBzdGF0ZSBjb3VsZCBub3QgYmUNCisgICBhbGxvY2F0ZWQsIG9yIFpfVkVSU0lPTl9FUlJPUiBpZiB0aGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBkb2VzIG5vdCBtYXRjaA0KKyAgIHRoZSB2ZXJzaW9uIG9mIHRoZSBoZWFkZXIgZmlsZS4NCisqLw0KKw0KK3R5cGVkZWYgdW5zaWduZWQgKCppbl9mdW5jKSBPRigodm9pZCBGQVIgKiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKiBGQVIgKikpOw0KK3R5cGVkZWYgaW50ICgqb3V0X2Z1bmMpIE9GKCh2b2lkIEZBUiAqLCB1bnNpZ25lZCBjaGFyIEZBUiAqLCB1bnNpZ25lZCkpOw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2sgT0YoKHpfc3RyZWFtcCBzdHJtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2Z1bmMgaW4sIHZvaWQgRkFSICppbl9kZXNjLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9mdW5jIG91dCwgdm9pZCBGQVIgKm91dF9kZXNjKSk7DQorLyoNCisgICAgIGluZmxhdGVCYWNrKCkgZG9lcyBhIHJhdyBpbmZsYXRlIHdpdGggYSBzaW5nbGUgY2FsbCB1c2luZyBhIGNhbGwtYmFjaw0KKyAgIGludGVyZmFjZSBmb3IgaW5wdXQgYW5kIG91dHB1dC4gIFRoaXMgaXMgcG90ZW50aWFsbHkgbW9yZSBlZmZpY2llbnQgdGhhbg0KKyAgIGluZmxhdGUoKSBmb3IgZmlsZSBpL28gYXBwbGljYXRpb25zLCBpbiB0aGF0IGl0IGF2b2lkcyBjb3B5aW5nIGJldHdlZW4gdGhlDQorICAgb3V0cHV0IGFuZCB0aGUgc2xpZGluZyB3aW5kb3cgYnkgc2ltcGx5IG1ha2luZyB0aGUgd2luZG93IGl0c2VsZiB0aGUgb3V0cHV0DQorICAgYnVmZmVyLiAgaW5mbGF0ZSgpIGNhbiBiZSBmYXN0ZXIgb24gbW9kZXJuIENQVXMgd2hlbiB1c2VkIHdpdGggbGFyZ2UNCisgICBidWZmZXJzLiAgaW5mbGF0ZUJhY2soKSB0cnVzdHMgdGhlIGFwcGxpY2F0aW9uIHRvIG5vdCBjaGFuZ2UgdGhlIG91dHB1dA0KKyAgIGJ1ZmZlciBwYXNzZWQgYnkgdGhlIG91dHB1dCBmdW5jdGlvbiwgYXQgbGVhc3QgdW50aWwgaW5mbGF0ZUJhY2soKSByZXR1cm5zLg0KKw0KKyAgICAgaW5mbGF0ZUJhY2tJbml0KCkgbXVzdCBiZSBjYWxsZWQgZmlyc3QgdG8gYWxsb2NhdGUgdGhlIGludGVybmFsIHN0YXRlDQorICAgYW5kIHRvIGluaXRpYWxpemUgdGhlIHN0YXRlIHdpdGggdGhlIHVzZXItcHJvdmlkZWQgd2luZG93IGJ1ZmZlci4NCisgICBpbmZsYXRlQmFjaygpIG1heSB0aGVuIGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgdG8gaW5mbGF0ZSBhIGNvbXBsZXRlLCByYXcNCisgICBkZWZsYXRlIHN0cmVhbSB3aXRoIGVhY2ggY2FsbC4gIGluZmxhdGVCYWNrRW5kKCkgaXMgdGhlbiBjYWxsZWQgdG8gZnJlZSB0aGUNCisgICBhbGxvY2F0ZWQgc3RhdGUuDQorDQorICAgICBBIHJhdyBkZWZsYXRlIHN0cmVhbSBpcyBvbmUgd2l0aCBubyB6bGliIG9yIGd6aXAgaGVhZGVyIG9yIHRyYWlsZXIuDQorICAgVGhpcyByb3V0aW5lIHdvdWxkIG5vcm1hbGx5IGJlIHVzZWQgaW4gYSB1dGlsaXR5IHRoYXQgcmVhZHMgemlwIG9yIGd6aXANCisgICBmaWxlcyBhbmQgd3JpdGVzIG91dCB1bmNvbXByZXNzZWQgZmlsZXMuICBUaGUgdXRpbGl0eSB3b3VsZCBkZWNvZGUgdGhlDQorICAgaGVhZGVyIGFuZCBwcm9jZXNzIHRoZSB0cmFpbGVyIG9uIGl0cyBvd24sIGhlbmNlIHRoaXMgcm91dGluZSBleHBlY3RzIG9ubHkNCisgICB0aGUgcmF3IGRlZmxhdGUgc3RyZWFtIHRvIGRlY29tcHJlc3MuICBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBub3JtYWwNCisgICBiZWhhdmlvciBvZiBpbmZsYXRlKCksIHdoaWNoIGV4cGVjdHMgZWl0aGVyIGEgemxpYiBvciBnemlwIGhlYWRlciBhbmQNCisgICB0cmFpbGVyIGFyb3VuZCB0aGUgZGVmbGF0ZSBzdHJlYW0uDQorDQorICAgICBpbmZsYXRlQmFjaygpIHVzZXMgdHdvIHN1YnJvdXRpbmVzIHN1cHBsaWVkIGJ5IHRoZSBjYWxsZXIgdGhhdCBhcmUgdGhlbg0KKyAgIGNhbGxlZCBieSBpbmZsYXRlQmFjaygpIGZvciBpbnB1dCBhbmQgb3V0cHV0LiAgaW5mbGF0ZUJhY2soKSBjYWxscyB0aG9zZQ0KKyAgIHJvdXRpbmVzIHVudGlsIGl0IHJlYWRzIGEgY29tcGxldGUgZGVmbGF0ZSBzdHJlYW0gYW5kIHdyaXRlcyBvdXQgYWxsIG9mIHRoZQ0KKyAgIHVuY29tcHJlc3NlZCBkYXRhLCBvciB1bnRpbCBpdCBlbmNvdW50ZXJzIGFuIGVycm9yLiAgVGhlIGZ1bmN0aW9uJ3MNCisgICBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdHlwZXMgYXJlIGRlZmluZWQgYWJvdmUgaW4gdGhlIGluX2Z1bmMgYW5kIG91dF9mdW5jDQorICAgdHlwZWRlZnMuICBpbmZsYXRlQmFjaygpIHdpbGwgY2FsbCBpbihpbl9kZXNjLCAmYnVmKSB3aGljaCBzaG91bGQgcmV0dXJuIHRoZQ0KKyAgIG51bWJlciBvZiBieXRlcyBvZiBwcm92aWRlZCBpbnB1dCwgYW5kIGEgcG9pbnRlciB0byB0aGF0IGlucHV0IGluIGJ1Zi4gIElmDQorICAgdGhlcmUgaXMgbm8gaW5wdXQgYXZhaWxhYmxlLCBpbigpIG11c3QgcmV0dXJuIHplcm8tLWJ1ZiBpcyBpZ25vcmVkIGluIHRoYXQNCisgICBjYXNlLS1hbmQgaW5mbGF0ZUJhY2soKSB3aWxsIHJldHVybiBhIGJ1ZmZlciBlcnJvci4gIGluZmxhdGVCYWNrKCkgd2lsbCBjYWxsDQorICAgb3V0KG91dF9kZXNjLCBidWYsIGxlbikgdG8gd3JpdGUgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGJ1ZlswLi5sZW4tMV0uICBvdXQoKQ0KKyAgIHNob3VsZCByZXR1cm4gemVybyBvbiBzdWNjZXNzLCBvciBub24temVybyBvbiBmYWlsdXJlLiAgSWYgb3V0KCkgcmV0dXJucw0KKyAgIG5vbi16ZXJvLCBpbmZsYXRlQmFjaygpIHdpbGwgcmV0dXJuIHdpdGggYW4gZXJyb3IuICBOZWl0aGVyIGluKCkgbm9yIG91dCgpDQorICAgYXJlIHBlcm1pdHRlZCB0byBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB3aW5kb3cgcHJvdmlkZWQgdG8NCisgICBpbmZsYXRlQmFja0luaXQoKSwgd2hpY2ggaXMgYWxzbyB0aGUgYnVmZmVyIHRoYXQgb3V0KCkgdXNlcyB0byB3cml0ZSBmcm9tLg0KKyAgIFRoZSBsZW5ndGggd3JpdHRlbiBieSBvdXQoKSB3aWxsIGJlIGF0IG1vc3QgdGhlIHdpbmRvdyBzaXplLiAgQW55IG5vbi16ZXJvDQorICAgYW1vdW50IG9mIGlucHV0IG1heSBiZSBwcm92aWRlZCBieSBpbigpLg0KKw0KKyAgICAgRm9yIGNvbnZlbmllbmNlLCBpbmZsYXRlQmFjaygpIGNhbiBiZSBwcm92aWRlZCBpbnB1dCBvbiB0aGUgZmlyc3QgY2FsbCBieQ0KKyAgIHNldHRpbmcgc3RybS0+bmV4dF9pbiBhbmQgc3RybS0+YXZhaWxfaW4uICBJZiB0aGF0IGlucHV0IGlzIGV4aGF1c3RlZCwgdGhlbg0KKyAgIGluKCkgd2lsbCBiZSBjYWxsZWQuICBUaGVyZWZvcmUgc3RybS0+bmV4dF9pbiBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZQ0KKyAgIGNhbGxpbmcgaW5mbGF0ZUJhY2soKS4gIElmIHN0cm0tPm5leHRfaW4gaXMgWl9OVUxMLCB0aGVuIGluKCkgd2lsbCBiZSBjYWxsZWQNCisgICBpbW1lZGlhdGVseSBmb3IgaW5wdXQuICBJZiBzdHJtLT5uZXh0X2luIGlzIG5vdCBaX05VTEwsIHRoZW4gc3RybS0+YXZhaWxfaW4NCisgICBtdXN0IGFsc28gYmUgaW5pdGlhbGl6ZWQsIGFuZCB0aGVuIGlmIHN0cm0tPmF2YWlsX2luIGlzIG5vdCB6ZXJvLCBpbnB1dCB3aWxsDQorICAgaW5pdGlhbGx5IGJlIHRha2VuIGZyb20gc3RybS0+bmV4dF9pblswIC4uICBzdHJtLT5hdmFpbF9pbiAtIDFdLg0KKw0KKyAgICAgVGhlIGluX2Rlc2MgYW5kIG91dF9kZXNjIHBhcmFtZXRlcnMgb2YgaW5mbGF0ZUJhY2soKSBpcyBwYXNzZWQgYXMgdGhlDQorICAgZmlyc3QgcGFyYW1ldGVyIG9mIGluKCkgYW5kIG91dCgpIHJlc3BlY3RpdmVseSB3aGVuIHRoZXkgYXJlIGNhbGxlZC4gIFRoZXNlDQorICAgZGVzY3JpcHRvcnMgY2FuIGJlIG9wdGlvbmFsbHkgdXNlZCB0byBwYXNzIGFueSBpbmZvcm1hdGlvbiB0aGF0IHRoZSBjYWxsZXItDQorICAgc3VwcGxpZWQgaW4oKSBhbmQgb3V0KCkgZnVuY3Rpb25zIG5lZWQgdG8gZG8gdGhlaXIgam9iLg0KKw0KKyAgICAgT24gcmV0dXJuLCBpbmZsYXRlQmFjaygpIHdpbGwgc2V0IHN0cm0tPm5leHRfaW4gYW5kIHN0cm0tPmF2YWlsX2luIHRvDQorICAgcGFzcyBiYWNrIGFueSB1bnVzZWQgaW5wdXQgdGhhdCB3YXMgcHJvdmlkZWQgYnkgdGhlIGxhc3QgaW4oKSBjYWxsLiAgVGhlDQorICAgcmV0dXJuIHZhbHVlcyBvZiBpbmZsYXRlQmFjaygpIGNhbiBiZSBaX1NUUkVBTV9FTkQgb24gc3VjY2VzcywgWl9CVUZfRVJST1INCisgICBpZiBpbigpIG9yIG91dCgpIHJldHVybmVkIGFuIGVycm9yLCBaX0RBVEFfRVJST1IgaWYgdGhlcmUgd2FzIGEgZm9ybWF0IGVycm9yDQorICAgaW4gdGhlIGRlZmxhdGUgc3RyZWFtIChpbiB3aGljaCBjYXNlIHN0cm0tPm1zZyBpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIG5hdHVyZQ0KKyAgIG9mIHRoZSBlcnJvciksIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gd2FzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZC4NCisgICBJbiB0aGUgY2FzZSBvZiBaX0JVRl9FUlJPUiwgYW4gaW5wdXQgb3Igb3V0cHV0IGVycm9yIGNhbiBiZSBkaXN0aW5ndWlzaGVkDQorICAgdXNpbmcgc3RybS0+bmV4dF9pbiB3aGljaCB3aWxsIGJlIFpfTlVMTCBvbmx5IGlmIGluKCkgcmV0dXJuZWQgYW4gZXJyb3IuICBJZg0KKyAgIHN0cm0tPm5leHRfaW4gaXMgbm90IFpfTlVMTCwgdGhlbiB0aGUgWl9CVUZfRVJST1Igd2FzIGR1ZSB0byBvdXQoKSByZXR1cm5pbmcNCisgICBub24temVyby4gIChpbigpIHdpbGwgYWx3YXlzIGJlIGNhbGxlZCBiZWZvcmUgb3V0KCksIHNvIHN0cm0tPm5leHRfaW4gaXMNCisgICBhc3N1cmVkIHRvIGJlIGRlZmluZWQgaWYgb3V0KCkgcmV0dXJucyBub24temVyby4pIE5vdGUgdGhhdCBpbmZsYXRlQmFjaygpDQorICAgY2Fubm90IHJldHVybiBaX09LLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlQmFja0VuZCBPRigoel9zdHJlYW1wIHN0cm0pKTsNCisvKg0KKyAgICAgQWxsIG1lbW9yeSBhbGxvY2F0ZWQgYnkgaW5mbGF0ZUJhY2tJbml0KCkgaXMgZnJlZWQuDQorDQorICAgICBpbmZsYXRlQmFja0VuZCgpIHJldHVybnMgWl9PSyBvbiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtDQorICAgc3RhdGUgd2FzIGluY29uc2lzdGVudC4NCisqLw0KKw0KK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCB6bGliQ29tcGlsZUZsYWdzIE9GKCh2b2lkKSk7DQorLyogUmV0dXJuIGZsYWdzIGluZGljYXRpbmcgY29tcGlsZS10aW1lIG9wdGlvbnMuDQorDQorICAgIFR5cGUgc2l6ZXMsIHR3byBiaXRzIGVhY2gsIDAwID0gMTYgYml0cywgMDEgPSAzMiwgMTAgPSA2NCwgMTEgPSBvdGhlcjoNCisgICAgIDEuMDogc2l6ZSBvZiB1SW50DQorICAgICAzLjI6IHNpemUgb2YgdUxvbmcNCisgICAgIDUuNDogc2l6ZSBvZiB2b2lkcGYgKHBvaW50ZXIpDQorICAgICA3LjY6IHNpemUgb2Ygel9vZmZfdA0KKw0KKyAgICBDb21waWxlciwgYXNzZW1ibGVyLCBhbmQgZGVidWcgb3B0aW9uczoNCisgICAgIDg6IERFQlVHDQorICAgICA5OiBBU01WIG9yIEFTTUlORiAtLSB1c2UgQVNNIGNvZGUNCisgICAgIDEwOiBaTElCX1dJTkFQSSAtLSBleHBvcnRlZCBmdW5jdGlvbnMgdXNlIHRoZSBXSU5BUEkgY2FsbGluZyBjb252ZW50aW9uDQorICAgICAxMTogMCAocmVzZXJ2ZWQpDQorDQorICAgIE9uZS10aW1lIHRhYmxlIGJ1aWxkaW5nIChzbWFsbGVyIGNvZGUsIGJ1dCBub3QgdGhyZWFkLXNhZmUgaWYgdHJ1ZSk6DQorICAgICAxMjogQlVJTERGSVhFRCAtLSBidWlsZCBzdGF0aWMgYmxvY2sgZGVjb2RpbmcgdGFibGVzIHdoZW4gbmVlZGVkDQorICAgICAxMzogRFlOQU1JQ19DUkNfVEFCTEUgLS0gYnVpbGQgQ1JDIGNhbGN1bGF0aW9uIHRhYmxlcyB3aGVuIG5lZWRlZA0KKyAgICAgMTQsMTU6IDAgKHJlc2VydmVkKQ0KKw0KKyAgICBMaWJyYXJ5IGNvbnRlbnQgKGluZGljYXRlcyBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkpOg0KKyAgICAgMTY6IE5PX0daQ09NUFJFU1MgLS0gZ3oqIGZ1bmN0aW9ucyBjYW5ub3QgY29tcHJlc3MgKHRvIGF2b2lkIGxpbmtpbmcNCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmxhdGUgY29kZSB3aGVuIG5vdCBuZWVkZWQpDQorICAgICAxNzogTk9fR1pJUCAtLSBkZWZsYXRlIGNhbid0IHdyaXRlIGd6aXAgc3RyZWFtcywgYW5kIGluZmxhdGUgY2FuJ3QgZGV0ZWN0DQorICAgICAgICAgICAgICAgICAgICBhbmQgZGVjb2RlIGd6aXAgc3RyZWFtcyAodG8gYXZvaWQgbGlua2luZyBjcmMgY29kZSkNCisgICAgIDE4LTE5OiAwIChyZXNlcnZlZCkNCisNCisgICAgT3BlcmF0aW9uIHZhcmlhdGlvbnMgKGNoYW5nZXMgaW4gbGlicmFyeSBmdW5jdGlvbmFsaXR5KToNCisgICAgIDIwOiBQS1pJUF9CVUdfV09SS0FST1VORCAtLSBzbGlnaHRseSBtb3JlIHBlcm1pc3NpdmUgaW5mbGF0ZQ0KKyAgICAgMjE6IEZBU1RFU1QgLS0gZGVmbGF0ZSBhbGdvcml0aG0gd2l0aCBvbmx5IG9uZSwgbG93ZXN0IGNvbXByZXNzaW9uIGxldmVsDQorICAgICAyMiwyMzogMCAocmVzZXJ2ZWQpDQorDQorICAgIFRoZSBzcHJpbnRmIHZhcmlhbnQgdXNlZCBieSBnenByaW50ZiAoemVybyBpcyBiZXN0KToNCisgICAgIDI0OiAwID0gdnMqLCAxID0gcyogLS0gMSBtZWFucyBsaW1pdGVkIHRvIDIwIGFyZ3VtZW50cyBhZnRlciB0aGUgZm9ybWF0DQorICAgICAyNTogMCA9ICpucHJpbnRmLCAxID0gKnByaW50ZiAtLSAxIG1lYW5zIGd6cHJpbnRmKCkgbm90IHNlY3VyZSENCisgICAgIDI2OiAwID0gcmV0dXJucyB2YWx1ZSwgMSA9IHZvaWQgLS0gMSBtZWFucyBpbmZlcnJlZCBzdHJpbmcgbGVuZ3RoIHJldHVybmVkDQorDQorICAgIFJlbWFpbmRlcjoNCisgICAgIDI3LTMxOiAwIChyZXNlcnZlZCkNCisgKi8NCisNCisjaWZuZGVmIFpfU09MTw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHV0aWxpdHkgZnVuY3Rpb25zICovDQorDQorLyoNCisgICAgIFRoZSBmb2xsb3dpbmcgdXRpbGl0eSBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiB0aGUgYmFzaWMNCisgICBzdHJlYW0tb3JpZW50ZWQgZnVuY3Rpb25zLiAgVG8gc2ltcGxpZnkgdGhlIGludGVyZmFjZSwgc29tZSBkZWZhdWx0IG9wdGlvbnMNCisgICBhcmUgYXNzdW1lZCAoY29tcHJlc3Npb24gbGV2ZWwgYW5kIG1lbW9yeSB1c2FnZSwgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRpb24NCisgICBmdW5jdGlvbnMpLiAgVGhlIHNvdXJjZSBjb2RlIG9mIHRoZXNlIHV0aWxpdHkgZnVuY3Rpb25zIGNhbiBiZSBtb2RpZmllZCBpZg0KKyAgIHlvdSBuZWVkIHNwZWNpYWwgb3B0aW9ucy4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgY29tcHJlc3MgT0YoKEJ5dGVmICpkZXN0LCAgIHVMb25nZiAqZGVzdExlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlZiAqc291cmNlLCB1TG9uZyBzb3VyY2VMZW4pKTsNCisvKg0KKyAgICAgQ29tcHJlc3NlcyB0aGUgc291cmNlIGJ1ZmZlciBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuICBzb3VyY2VMZW4gaXMNCisgICB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlIHNvdXJjZSBidWZmZXIuICBVcG9uIGVudHJ5LCBkZXN0TGVuIGlzIHRoZSB0b3RhbCBzaXplDQorICAgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgd2hpY2ggbXVzdCBiZSBhdCBsZWFzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkNCisgICBjb21wcmVzc0JvdW5kKHNvdXJjZUxlbikuICBVcG9uIGV4aXQsIGRlc3RMZW4gaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZQ0KKyAgIGNvbXByZXNzZWQgYnVmZmVyLg0KKw0KKyAgICAgY29tcHJlc3MgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QNCisgICBlbm91Z2ggbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQNCisgICBidWZmZXIuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGNvbXByZXNzMiBPRigoQnl0ZWYgKmRlc3QsICAgdUxvbmdmICpkZXN0TGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlZiAqc291cmNlLCB1TG9uZyBzb3VyY2VMZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCkpOw0KKy8qDQorICAgICBDb21wcmVzc2VzIHRoZSBzb3VyY2UgYnVmZmVyIGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4gIFRoZSBsZXZlbA0KKyAgIHBhcmFtZXRlciBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBpbiBkZWZsYXRlSW5pdC4gIHNvdXJjZUxlbiBpcyB0aGUgYnl0ZQ0KKyAgIGxlbmd0aCBvZiB0aGUgc291cmNlIGJ1ZmZlci4gIFVwb24gZW50cnksIGRlc3RMZW4gaXMgdGhlIHRvdGFsIHNpemUgb2YgdGhlDQorICAgZGVzdGluYXRpb24gYnVmZmVyLCB3aGljaCBtdXN0IGJlIGF0IGxlYXN0IHRoZSB2YWx1ZSByZXR1cm5lZCBieQ0KKyAgIGNvbXByZXNzQm91bmQoc291cmNlTGVuKS4gIFVwb24gZXhpdCwgZGVzdExlbiBpcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlDQorICAgY29tcHJlc3NlZCBidWZmZXIuDQorDQorICAgICBjb21wcmVzczIgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoDQorICAgbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyLA0KKyAgIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBsZXZlbCBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCisqLw0KKw0KK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCBjb21wcmVzc0JvdW5kIE9GKCh1TG9uZyBzb3VyY2VMZW4pKTsNCisvKg0KKyAgICAgY29tcHJlc3NCb3VuZCgpIHJldHVybnMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGNvbXByZXNzZWQgc2l6ZSBhZnRlcg0KKyAgIGNvbXByZXNzKCkgb3IgY29tcHJlc3MyKCkgb24gc291cmNlTGVuIGJ5dGVzLiAgSXQgd291bGQgYmUgdXNlZCBiZWZvcmUgYQ0KKyAgIGNvbXByZXNzKCkgb3IgY29tcHJlc3MyKCkgY2FsbCB0byBhbGxvY2F0ZSB0aGUgZGVzdGluYXRpb24gYnVmZmVyLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCB1bmNvbXByZXNzIE9GKChCeXRlZiAqZGVzdCwgICB1TG9uZ2YgKmRlc3RMZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlZiAqc291cmNlLCB1TG9uZyBzb3VyY2VMZW4pKTsNCisvKg0KKyAgICAgRGVjb21wcmVzc2VzIHRoZSBzb3VyY2UgYnVmZmVyIGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4gIHNvdXJjZUxlbiBpcw0KKyAgIHRoZSBieXRlIGxlbmd0aCBvZiB0aGUgc291cmNlIGJ1ZmZlci4gIFVwb24gZW50cnksIGRlc3RMZW4gaXMgdGhlIHRvdGFsIHNpemUNCisgICBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLCB3aGljaCBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBlbnRpcmUNCisgICB1bmNvbXByZXNzZWQgZGF0YS4gIChUaGUgc2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgbXVzdCBoYXZlIGJlZW4gc2F2ZWQNCisgICBwcmV2aW91c2x5IGJ5IHRoZSBjb21wcmVzc29yIGFuZCB0cmFuc21pdHRlZCB0byB0aGUgZGVjb21wcmVzc29yIGJ5IHNvbWUNCisgICBtZWNoYW5pc20gb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBjb21wcmVzc2lvbiBsaWJyYXJ5LikgVXBvbiBleGl0LCBkZXN0TGVuDQorICAgaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgYnVmZmVyLg0KKw0KKyAgICAgdW5jb21wcmVzcyByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdA0KKyAgIGVub3VnaCBtZW1vcnksIFpfQlVGX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dA0KKyAgIGJ1ZmZlciwgb3IgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1dCBkYXRhIHdhcyBjb3JydXB0ZWQgb3IgaW5jb21wbGV0ZS4gIEluDQorICAgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm90IGVub3VnaCByb29tLCB1bmNvbXByZXNzKCkgd2lsbCBmaWxsIHRoZSBvdXRwdXQNCisgICBidWZmZXIgd2l0aCB0aGUgdW5jb21wcmVzc2VkIGRhdGEgdXAgdG8gdGhhdCBwb2ludC4NCisqLw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGd6aXAgZmlsZSBhY2Nlc3MgZnVuY3Rpb25zICovDQorDQorLyoNCisgICAgIFRoaXMgbGlicmFyeSBzdXBwb3J0cyByZWFkaW5nIGFuZCB3cml0aW5nIGZpbGVzIGluIGd6aXAgKC5neikgZm9ybWF0IHdpdGgNCisgICBhbiBpbnRlcmZhY2Ugc2ltaWxhciB0byB0aGF0IG9mIHN0ZGlvLCB1c2luZyB0aGUgZnVuY3Rpb25zIHRoYXQgc3RhcnQgd2l0aA0KKyAgICJneiIuICBUaGUgZ3ppcCBmb3JtYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHpsaWIgZm9ybWF0LiAgZ3ppcCBpcyBhIGd6aXANCisgICB3cmFwcGVyLCBkb2N1bWVudGVkIGluIFJGQyAxOTUyLCB3cmFwcGVkIGFyb3VuZCBhIGRlZmxhdGUgc3RyZWFtLg0KKyovDQorDQordHlwZWRlZiBzdHJ1Y3QgZ3pGaWxlX3MgKmd6RmlsZTsgICAgLyogc2VtaS1vcGFxdWUgZ3ppcCBmaWxlIGRlc2NyaXB0b3IgKi8NCisNCisvKg0KK1pFWFRFUk4gZ3pGaWxlIFpFWFBPUlQgZ3pvcGVuIE9GKChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlKSk7DQorDQorICAgICBPcGVucyBhIGd6aXAgKC5neikgZmlsZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLiAgVGhlIG1vZGUgcGFyYW1ldGVyIGlzIGFzDQorICAgaW4gZm9wZW4gKCJyYiIgb3IgIndiIikgYnV0IGNhbiBhbHNvIGluY2x1ZGUgYSBjb21wcmVzc2lvbiBsZXZlbCAoIndiOSIpIG9yDQorICAgYSBzdHJhdGVneTogJ2YnIGZvciBmaWx0ZXJlZCBkYXRhIGFzIGluICJ3YjZmIiwgJ2gnIGZvciBIdWZmbWFuLW9ubHkNCisgICBjb21wcmVzc2lvbiBhcyBpbiAid2IxaCIsICdSJyBmb3IgcnVuLWxlbmd0aCBlbmNvZGluZyBhcyBpbiAid2IxUiIsIG9yICdGJw0KKyAgIGZvciBmaXhlZCBjb2RlIGNvbXByZXNzaW9uIGFzIGluICJ3YjlGIi4gIChTZWUgdGhlIGRlc2NyaXB0aW9uIG9mDQorICAgZGVmbGF0ZUluaXQyIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdHJhdGVneSBwYXJhbWV0ZXIuKSAgJ1QnIHdpbGwNCisgICByZXF1ZXN0IHRyYW5zcGFyZW50IHdyaXRpbmcgb3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24gYW5kIG5vdCB1c2luZw0KKyAgIHRoZSBnemlwIGZvcm1hdC4NCisNCisgICAgICJhIiBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mICJ3IiB0byByZXF1ZXN0IHRoYXQgdGhlIGd6aXAgc3RyZWFtIHRoYXQgd2lsbA0KKyAgIGJlIHdyaXR0ZW4gYmUgYXBwZW5kZWQgdG8gdGhlIGZpbGUuICAiKyIgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IsIHNpbmNlDQorICAgcmVhZGluZyBhbmQgd3JpdGluZyB0byB0aGUgc2FtZSBnemlwIGZpbGUgaXMgbm90IHN1cHBvcnRlZC4gIFRoZSBhZGRpdGlvbiBvZg0KKyAgICJ4IiB3aGVuIHdyaXRpbmcgd2lsbCBjcmVhdGUgdGhlIGZpbGUgZXhjbHVzaXZlbHksIHdoaWNoIGZhaWxzIGlmIHRoZSBmaWxlDQorICAgYWxyZWFkeSBleGlzdHMuICBPbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdCwgdGhlIGFkZGl0aW9uIG9mICJlIiB3aGVuDQorICAgcmVhZGluZyBvciB3cml0aW5nIHdpbGwgc2V0IHRoZSBmbGFnIHRvIGNsb3NlIHRoZSBmaWxlIG9uIGFuIGV4ZWN2ZSgpIGNhbGwuDQorDQorICAgICBUaGVzZSBmdW5jdGlvbnMsIGFzIHdlbGwgYXMgZ3ppcCwgd2lsbCByZWFkIGFuZCBkZWNvZGUgYSBzZXF1ZW5jZSBvZiBnemlwDQorICAgc3RyZWFtcyBpbiBhIGZpbGUuICBUaGUgYXBwZW5kIGZ1bmN0aW9uIG9mIGd6b3BlbigpIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZQ0KKyAgIHN1Y2ggYSBmaWxlLiAgKEFsc28gc2VlIGd6Zmx1c2goKSBmb3IgYW5vdGhlciB3YXkgdG8gZG8gdGhpcy4pICBXaGVuDQorICAgYXBwZW5kaW5nLCBnem9wZW4gZG9lcyBub3QgdGVzdCB3aGV0aGVyIHRoZSBmaWxlIGJlZ2lucyB3aXRoIGEgZ3ppcCBzdHJlYW0sDQorICAgbm9yIGRvZXMgaXQgbG9vayBmb3IgdGhlIGVuZCBvZiB0aGUgZ3ppcCBzdHJlYW1zIHRvIGJlZ2luIGFwcGVuZGluZy4gIGd6b3Blbg0KKyAgIHdpbGwgc2ltcGx5IGFwcGVuZCBhIGd6aXAgc3RyZWFtIHRvIHRoZSBleGlzdGluZyBmaWxlLg0KKw0KKyAgICAgZ3pvcGVuIGNhbiBiZSB1c2VkIHRvIHJlYWQgYSBmaWxlIHdoaWNoIGlzIG5vdCBpbiBnemlwIGZvcm1hdDsgaW4gdGhpcw0KKyAgIGNhc2UgZ3pyZWFkIHdpbGwgZGlyZWN0bHkgcmVhZCBmcm9tIHRoZSBmaWxlIHdpdGhvdXQgZGVjb21wcmVzc2lvbi4gIFdoZW4NCisgICByZWFkaW5nLCB0aGlzIHdpbGwgYmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseSBieSBsb29raW5nIGZvciB0aGUgbWFnaWMgdHdvLQ0KKyAgIGJ5dGUgZ3ppcCBoZWFkZXIuDQorDQorICAgICBnem9wZW4gcmV0dXJucyBOVUxMIGlmIHRoZSBmaWxlIGNvdWxkIG5vdCBiZSBvcGVuZWQsIGlmIHRoZXJlIHdhcw0KKyAgIGluc3VmZmljaWVudCBtZW1vcnkgdG8gYWxsb2NhdGUgdGhlIGd6RmlsZSBzdGF0ZSwgb3IgaWYgYW4gaW52YWxpZCBtb2RlIHdhcw0KKyAgIHNwZWNpZmllZCAoYW4gJ3InLCAndycsIG9yICdhJyB3YXMgbm90IHByb3ZpZGVkLCBvciAnKycgd2FzIHByb3ZpZGVkKS4NCisgICBlcnJubyBjYW4gYmUgY2hlY2tlZCB0byBkZXRlcm1pbmUgaWYgdGhlIHJlYXNvbiBnem9wZW4gZmFpbGVkIHdhcyB0aGF0IHRoZQ0KKyAgIGZpbGUgY291bGQgbm90IGJlIG9wZW5lZC4NCisqLw0KKw0KK1pFWFRFUk4gZ3pGaWxlIFpFWFBPUlQgZ3pkb3BlbiBPRigoaW50IGZkLCBjb25zdCBjaGFyICptb2RlKSk7DQorLyoNCisgICAgIGd6ZG9wZW4gYXNzb2NpYXRlcyBhIGd6RmlsZSB3aXRoIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuICBGaWxlIGRlc2NyaXB0b3JzDQorICAgYXJlIG9idGFpbmVkIGZyb20gY2FsbHMgbGlrZSBvcGVuLCBkdXAsIGNyZWF0LCBwaXBlIG9yIGZpbGVubyAoaWYgdGhlIGZpbGUNCisgICBoYXMgYmVlbiBwcmV2aW91c2x5IG9wZW5lZCB3aXRoIGZvcGVuKS4gIFRoZSBtb2RlIHBhcmFtZXRlciBpcyBhcyBpbiBnem9wZW4uDQorDQorICAgICBUaGUgbmV4dCBjYWxsIG9mIGd6Y2xvc2Ugb24gdGhlIHJldHVybmVkIGd6RmlsZSB3aWxsIGFsc28gY2xvc2UgdGhlIGZpbGUNCisgICBkZXNjcmlwdG9yIGZkLCBqdXN0IGxpa2UgZmNsb3NlKGZkb3BlbihmZCwgbW9kZSkpIGNsb3NlcyB0aGUgZmlsZSBkZXNjcmlwdG9yDQorICAgZmQuICBJZiB5b3Ugd2FudCB0byBrZWVwIGZkIG9wZW4sIHVzZSBmZCA9IGR1cChmZF9rZWVwKTsgZ3ogPSBnemRvcGVuKGZkLA0KKyAgIG1vZGUpOy4gIFRoZSBkdXBsaWNhdGVkIGRlc2NyaXB0b3Igc2hvdWxkIGJlIHNhdmVkIHRvIGF2b2lkIGEgbGVhaywgc2luY2UNCisgICBnemRvcGVuIGRvZXMgbm90IGNsb3NlIGZkIGlmIGl0IGZhaWxzLiAgSWYgeW91IGFyZSB1c2luZyBmaWxlbm8oKSB0byBnZXQgdGhlDQorICAgZmlsZSBkZXNjcmlwdG9yIGZyb20gYSBGSUxFICosIHRoZW4geW91IHdpbGwgaGF2ZSB0byB1c2UgZHVwKCkgdG8gYXZvaWQNCisgICBkb3VibGUtY2xvc2UoKWluZyB0aGUgZmlsZSBkZXNjcmlwdG9yLiAgQm90aCBnemNsb3NlKCkgYW5kIGZjbG9zZSgpIHdpbGwNCisgICBjbG9zZSB0aGUgYXNzb2NpYXRlZCBmaWxlIGRlc2NyaXB0b3IsIHNvIHRoZXkgbmVlZCB0byBoYXZlIGRpZmZlcmVudCBmaWxlDQorICAgZGVzY3JpcHRvcnMuDQorDQorICAgICBnemRvcGVuIHJldHVybnMgTlVMTCBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBhbGxvY2F0ZSB0aGUNCisgICBnekZpbGUgc3RhdGUsIGlmIGFuIGludmFsaWQgbW9kZSB3YXMgc3BlY2lmaWVkIChhbiAncicsICd3Jywgb3IgJ2EnIHdhcyBub3QNCisgICBwcm92aWRlZCwgb3IgJysnIHdhcyBwcm92aWRlZCksIG9yIGlmIGZkIGlzIC0xLiAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBub3QNCisgICB1c2VkIHVudGlsIHRoZSBuZXh0IGd6KiByZWFkLCB3cml0ZSwgc2Vlaywgb3IgY2xvc2Ugb3BlcmF0aW9uLCBzbyBnemRvcGVuDQorICAgd2lsbCBub3QgZGV0ZWN0IGlmIGZkIGlzIGludmFsaWQgKHVubGVzcyBmZCBpcyAtMSkuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGd6YnVmZmVyIE9GKChnekZpbGUgZmlsZSwgdW5zaWduZWQgc2l6ZSkpOw0KKy8qDQorICAgICBTZXQgdGhlIGludGVybmFsIGJ1ZmZlciBzaXplIHVzZWQgYnkgdGhpcyBsaWJyYXJ5J3MgZnVuY3Rpb25zLiAgVGhlDQorICAgZGVmYXVsdCBidWZmZXIgc2l6ZSBpcyA4MTkyIGJ5dGVzLiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBhZnRlcg0KKyAgIGd6b3BlbigpIG9yIGd6ZG9wZW4oKSwgYW5kIGJlZm9yZSBhbnkgb3RoZXIgY2FsbHMgdGhhdCByZWFkIG9yIHdyaXRlIHRoZQ0KKyAgIGZpbGUuICBUaGUgYnVmZmVyIG1lbW9yeSBhbGxvY2F0aW9uIGlzIGFsd2F5cyBkZWZlcnJlZCB0byB0aGUgZmlyc3QgcmVhZCBvcg0KKyAgIHdyaXRlLiAgVHdvIGJ1ZmZlcnMgYXJlIGFsbG9jYXRlZCwgZWl0aGVyIGJvdGggb2YgdGhlIHNwZWNpZmllZCBzaXplIHdoZW4NCisgICB3cml0aW5nLCBvciBvbmUgb2YgdGhlIHNwZWNpZmllZCBzaXplIGFuZCB0aGUgb3RoZXIgdHdpY2UgdGhhdCBzaXplIHdoZW4NCisgICByZWFkaW5nLiAgQSBsYXJnZXIgYnVmZmVyIHNpemUgb2YsIGZvciBleGFtcGxlLCA2NEsgb3IgMTI4SyBieXRlcyB3aWxsDQorICAgbm90aWNlYWJseSBpbmNyZWFzZSB0aGUgc3BlZWQgb2YgZGVjb21wcmVzc2lvbiAocmVhZGluZykuDQorDQorICAgICBUaGUgbmV3IGJ1ZmZlciBzaXplIGFsc28gYWZmZWN0cyB0aGUgbWF4aW11bSBsZW5ndGggZm9yIGd6cHJpbnRmKCkuDQorDQorICAgICBnemJ1ZmZlcigpIHJldHVybnMgMCBvbiBzdWNjZXNzLCBvciAtMSBvbiBmYWlsdXJlLCBzdWNoIGFzIGJlaW5nIGNhbGxlZA0KKyAgIHRvbyBsYXRlLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBnenNldHBhcmFtcyBPRigoZ3pGaWxlIGZpbGUsIGludCBsZXZlbCwgaW50IHN0cmF0ZWd5KSk7DQorLyoNCisgICAgIER5bmFtaWNhbGx5IHVwZGF0ZSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgb3Igc3RyYXRlZ3kuICBTZWUgdGhlIGRlc2NyaXB0aW9uDQorICAgb2YgZGVmbGF0ZUluaXQyIGZvciB0aGUgbWVhbmluZyBvZiB0aGVzZSBwYXJhbWV0ZXJzLg0KKw0KKyAgICAgZ3pzZXRwYXJhbXMgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBmaWxlIHdhcyBub3QNCisgICBvcGVuZWQgZm9yIHdyaXRpbmcuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGd6cmVhZCBPRigoZ3pGaWxlIGZpbGUsIHZvaWRwIGJ1ZiwgdW5zaWduZWQgbGVuKSk7DQorLyoNCisgICAgIFJlYWRzIHRoZSBnaXZlbiBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGNvbXByZXNzZWQgZmlsZS4gIElmDQorICAgdGhlIGlucHV0IGZpbGUgaXMgbm90IGluIGd6aXAgZm9ybWF0LCBnenJlYWQgY29waWVzIHRoZSBnaXZlbiBudW1iZXIgb2YNCisgICBieXRlcyBpbnRvIHRoZSBidWZmZXIgZGlyZWN0bHkgZnJvbSB0aGUgZmlsZS4NCisNCisgICAgIEFmdGVyIHJlYWNoaW5nIHRoZSBlbmQgb2YgYSBnemlwIHN0cmVhbSBpbiB0aGUgaW5wdXQsIGd6cmVhZCB3aWxsIGNvbnRpbnVlDQorICAgdG8gcmVhZCwgbG9va2luZyBmb3IgYW5vdGhlciBnemlwIHN0cmVhbS4gIEFueSBudW1iZXIgb2YgZ3ppcCBzdHJlYW1zIG1heSBiZQ0KKyAgIGNvbmNhdGVuYXRlZCBpbiB0aGUgaW5wdXQgZmlsZSwgYW5kIHdpbGwgYWxsIGJlIGRlY29tcHJlc3NlZCBieSBnenJlYWQoKS4NCisgICBJZiBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIGd6aXAgc3RyZWFtIGlzIGVuY291bnRlcmVkIGFmdGVyIGEgZ3ppcCBzdHJlYW0sDQorICAgdGhhdCByZW1haW5pbmcgdHJhaWxpbmcgZ2FyYmFnZSBpcyBpZ25vcmVkIChhbmQgbm8gZXJyb3IgaXMgcmV0dXJuZWQpLg0KKw0KKyAgICAgZ3pyZWFkIGNhbiBiZSB1c2VkIHRvIHJlYWQgYSBnemlwIGZpbGUgdGhhdCBpcyBiZWluZyBjb25jdXJyZW50bHkgd3JpdHRlbi4NCisgICBVcG9uIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIGlucHV0LCBnenJlYWQgd2lsbCByZXR1cm4gd2l0aCB0aGUgYXZhaWxhYmxlDQorICAgZGF0YS4gIElmIHRoZSBlcnJvciBjb2RlIHJldHVybmVkIGJ5IGd6ZXJyb3IgaXMgWl9PSyBvciBaX0JVRl9FUlJPUiwgdGhlbg0KKyAgIGd6Y2xlYXJlcnIgY2FuIGJlIHVzZWQgdG8gY2xlYXIgdGhlIGVuZCBvZiBmaWxlIGluZGljYXRvciBpbiBvcmRlciB0byBwZXJtaXQNCisgICBnenJlYWQgdG8gYmUgdHJpZWQgYWdhaW4uICBaX09LIGluZGljYXRlcyB0aGF0IGEgZ3ppcCBzdHJlYW0gd2FzIGNvbXBsZXRlZA0KKyAgIG9uIHRoZSBsYXN0IGd6cmVhZC4gIFpfQlVGX0VSUk9SIGluZGljYXRlcyB0aGF0IHRoZSBpbnB1dCBmaWxlIGVuZGVkIGluIHRoZQ0KKyAgIG1pZGRsZSBvZiBhIGd6aXAgc3RyZWFtLiAgTm90ZSB0aGF0IGd6cmVhZCBkb2VzIG5vdCByZXR1cm4gLTEgaW4gdGhlIGV2ZW50DQorICAgb2YgYW4gaW5jb21wbGV0ZSBnemlwIHN0cmVhbS4gIFRoaXMgZXJyb3IgaXMgZGVmZXJyZWQgdW50aWwgZ3pjbG9zZSgpLCB3aGljaA0KKyAgIHdpbGwgcmV0dXJuIFpfQlVGX0VSUk9SIGlmIHRoZSBsYXN0IGd6cmVhZCBlbmRlZCBpbiB0aGUgbWlkZGxlIG9mIGEgZ3ppcA0KKyAgIHN0cmVhbS4gIEFsdGVybmF0aXZlbHksIGd6ZXJyb3IgY2FuIGJlIHVzZWQgYmVmb3JlIGd6Y2xvc2UgdG8gZGV0ZWN0IHRoaXMNCisgICBjYXNlLg0KKw0KKyAgICAgZ3pyZWFkIHJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgYWN0dWFsbHkgcmVhZCwgbGVzcyB0aGFuDQorICAgbGVuIGZvciBlbmQgb2YgZmlsZSwgb3IgLTEgZm9yIGVycm9yLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBnendyaXRlIE9GKChnekZpbGUgZmlsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWRwYyBidWYsIHVuc2lnbmVkIGxlbikpOw0KKy8qDQorICAgICBXcml0ZXMgdGhlIGdpdmVuIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgaW50byB0aGUgY29tcHJlc3NlZCBmaWxlLg0KKyAgIGd6d3JpdGUgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuIG9yIDAgaW4gY2FzZSBvZg0KKyAgIGVycm9yLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVFZBIGd6cHJpbnRmIFpfQVJHKChnekZpbGUgZmlsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pKTsNCisvKg0KKyAgICAgQ29udmVydHMsIGZvcm1hdHMsIGFuZCB3cml0ZXMgdGhlIGFyZ3VtZW50cyB0byB0aGUgY29tcHJlc3NlZCBmaWxlIHVuZGVyDQorICAgY29udHJvbCBvZiB0aGUgZm9ybWF0IHN0cmluZywgYXMgaW4gZnByaW50Zi4gIGd6cHJpbnRmIHJldHVybnMgdGhlIG51bWJlciBvZg0KKyAgIHVuY29tcHJlc3NlZCBieXRlcyBhY3R1YWxseSB3cml0dGVuLCBvciAwIGluIGNhc2Ugb2YgZXJyb3IuICBUaGUgbnVtYmVyIG9mDQorICAgdW5jb21wcmVzc2VkIGJ5dGVzIHdyaXR0ZW4gaXMgbGltaXRlZCB0byA4MTkxLCBvciBvbmUgbGVzcyB0aGFuIHRoZSBidWZmZXINCisgICBzaXplIGdpdmVuIHRvIGd6YnVmZmVyKCkuICBUaGUgY2FsbGVyIHNob3VsZCBhc3N1cmUgdGhhdCB0aGlzIGxpbWl0IGlzIG5vdA0KKyAgIGV4Y2VlZGVkLiAgSWYgaXQgaXMgZXhjZWVkZWQsIHRoZW4gZ3pwcmludGYoKSB3aWxsIHJldHVybiBhbiBlcnJvciAoMCkgd2l0aA0KKyAgIG5vdGhpbmcgd3JpdHRlbi4gIEluIHRoaXMgY2FzZSwgdGhlcmUgbWF5IGFsc28gYmUgYSBidWZmZXIgb3ZlcmZsb3cgd2l0aA0KKyAgIHVucHJlZGljdGFibGUgY29uc2VxdWVuY2VzLCB3aGljaCBpcyBwb3NzaWJsZSBvbmx5IGlmIHpsaWIgd2FzIGNvbXBpbGVkIHdpdGgNCisgICB0aGUgaW5zZWN1cmUgZnVuY3Rpb25zIHNwcmludGYoKSBvciB2c3ByaW50ZigpIGJlY2F1c2UgdGhlIHNlY3VyZSBzbnByaW50ZigpDQorICAgb3IgdnNucHJpbnRmKCkgZnVuY3Rpb25zIHdlcmUgbm90IGF2YWlsYWJsZS4gIFRoaXMgY2FuIGJlIGRldGVybWluZWQgdXNpbmcNCisgICB6bGliQ29tcGlsZUZsYWdzKCkuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGd6cHV0cyBPRigoZ3pGaWxlIGZpbGUsIGNvbnN0IGNoYXIgKnMpKTsNCisvKg0KKyAgICAgV3JpdGVzIHRoZSBnaXZlbiBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHRvIHRoZSBjb21wcmVzc2VkIGZpbGUsIGV4Y2x1ZGluZw0KKyAgIHRoZSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3Rlci4NCisNCisgICAgIGd6cHV0cyByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuLCBvciAtMSBpbiBjYXNlIG9mIGVycm9yLg0KKyovDQorDQorWkVYVEVSTiBjaGFyICogWkVYUE9SVCBnemdldHMgT0YoKGd6RmlsZSBmaWxlLCBjaGFyICpidWYsIGludCBsZW4pKTsNCisvKg0KKyAgICAgUmVhZHMgYnl0ZXMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlIHVudGlsIGxlbi0xIGNoYXJhY3RlcnMgYXJlIHJlYWQsIG9yIGENCisgICBuZXdsaW5lIGNoYXJhY3RlciBpcyByZWFkIGFuZCB0cmFuc2ZlcnJlZCB0byBidWYsIG9yIGFuIGVuZC1vZi1maWxlDQorICAgY29uZGl0aW9uIGlzIGVuY291bnRlcmVkLiAgSWYgYW55IGNoYXJhY3RlcnMgYXJlIHJlYWQgb3IgaWYgbGVuID09IDEsIHRoZQ0KKyAgIHN0cmluZyBpcyB0ZXJtaW5hdGVkIHdpdGggYSBudWxsIGNoYXJhY3Rlci4gIElmIG5vIGNoYXJhY3RlcnMgYXJlIHJlYWQgZHVlDQorICAgdG8gYW4gZW5kLW9mLWZpbGUgb3IgbGVuIDwgMSwgdGhlbiB0aGUgYnVmZmVyIGlzIGxlZnQgdW50b3VjaGVkLg0KKw0KKyAgICAgZ3pnZXRzIHJldHVybnMgYnVmIHdoaWNoIGlzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgb3IgaXQgcmV0dXJucyBOVUxMDQorICAgZm9yIGVuZC1vZi1maWxlIG9yIGluIGNhc2Ugb2YgZXJyb3IuICBJZiB0aGVyZSB3YXMgYW4gZXJyb3IsIHRoZSBjb250ZW50cyBhdA0KKyAgIGJ1ZiBhcmUgaW5kZXRlcm1pbmF0ZS4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3pwdXRjIE9GKChnekZpbGUgZmlsZSwgaW50IGMpKTsNCisvKg0KKyAgICAgV3JpdGVzIGMsIGNvbnZlcnRlZCB0byBhbiB1bnNpZ25lZCBjaGFyLCBpbnRvIHRoZSBjb21wcmVzc2VkIGZpbGUuICBnenB1dGMNCisgICByZXR1cm5zIHRoZSB2YWx1ZSB0aGF0IHdhcyB3cml0dGVuLCBvciAtMSBpbiBjYXNlIG9mIGVycm9yLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCBnemdldGMgT0YoKGd6RmlsZSBmaWxlKSk7DQorLyoNCisgICAgIFJlYWRzIG9uZSBieXRlIGZyb20gdGhlIGNvbXByZXNzZWQgZmlsZS4gIGd6Z2V0YyByZXR1cm5zIHRoaXMgYnl0ZSBvciAtMQ0KKyAgIGluIGNhc2Ugb2YgZW5kIG9mIGZpbGUgb3IgZXJyb3IuICBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgbWFjcm8gZm9yIHNwZWVkLg0KKyAgIEFzIHN1Y2gsIGl0IGRvZXMgbm90IGRvIGFsbCBvZiB0aGUgY2hlY2tpbmcgdGhlIG90aGVyIGZ1bmN0aW9ucyBkby4gIEkuZS4NCisgICBpdCBkb2VzIG5vdCBjaGVjayB0byBzZWUgaWYgZmlsZSBpcyBOVUxMLCBub3Igd2hldGhlciB0aGUgc3RydWN0dXJlIGZpbGUNCisgICBwb2ludHMgdG8gaGFzIGJlZW4gY2xvYmJlcmVkIG9yIG5vdC4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3p1bmdldGMgT0YoKGludCBjLCBnekZpbGUgZmlsZSkpOw0KKy8qDQorICAgICBQdXNoIG9uZSBjaGFyYWN0ZXIgYmFjayBvbnRvIHRoZSBzdHJlYW0gdG8gYmUgcmVhZCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyDQorICAgb24gdGhlIG5leHQgcmVhZC4gIEF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgcHVzaC1iYWNrIGlzIGFsbG93ZWQuDQorICAgZ3p1bmdldGMoKSByZXR1cm5zIHRoZSBjaGFyYWN0ZXIgcHVzaGVkLCBvciAtMSBvbiBmYWlsdXJlLiAgZ3p1bmdldGMoKSB3aWxsDQorICAgZmFpbCBpZiBjIGlzIC0xLCBhbmQgbWF5IGZhaWwgaWYgYSBjaGFyYWN0ZXIgaGFzIGJlZW4gcHVzaGVkIGJ1dCBub3QgcmVhZA0KKyAgIHlldC4gIElmIGd6dW5nZXRjIGlzIHVzZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZ3pvcGVuIG9yIGd6ZG9wZW4sIGF0IGxlYXN0IHRoZQ0KKyAgIG91dHB1dCBidWZmZXIgc2l6ZSBvZiBwdXNoZWQgY2hhcmFjdGVycyBpcyBhbGxvd2VkLiAgKFNlZSBnemJ1ZmZlciBhYm92ZS4pDQorICAgVGhlIHB1c2hlZCBjaGFyYWN0ZXIgd2lsbCBiZSBkaXNjYXJkZWQgaWYgdGhlIHN0cmVhbSBpcyByZXBvc2l0aW9uZWQgd2l0aA0KKyAgIGd6c2VlaygpIG9yIGd6cmV3aW5kKCkuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGd6Zmx1c2ggT0YoKGd6RmlsZSBmaWxlLCBpbnQgZmx1c2gpKTsNCisvKg0KKyAgICAgRmx1c2hlcyBhbGwgcGVuZGluZyBvdXRwdXQgaW50byB0aGUgY29tcHJlc3NlZCBmaWxlLiAgVGhlIHBhcmFtZXRlciBmbHVzaA0KKyAgIGlzIGFzIGluIHRoZSBkZWZsYXRlKCkgZnVuY3Rpb24uICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSB6bGliIGVycm9yIG51bWJlcg0KKyAgIChzZWUgZnVuY3Rpb24gZ3plcnJvciBiZWxvdykuICBnemZsdXNoIGlzIG9ubHkgcGVybWl0dGVkIHdoZW4gd3JpdGluZy4NCisNCisgICAgIElmIHRoZSBmbHVzaCBwYXJhbWV0ZXIgaXMgWl9GSU5JU0gsIHRoZSByZW1haW5pbmcgZGF0YSBpcyB3cml0dGVuIGFuZCB0aGUNCisgICBnemlwIHN0cmVhbSBpcyBjb21wbGV0ZWQgaW4gdGhlIG91dHB1dC4gIElmIGd6d3JpdGUoKSBpcyBjYWxsZWQgYWdhaW4sIGEgbmV3DQorICAgZ3ppcCBzdHJlYW0gd2lsbCBiZSBzdGFydGVkIGluIHRoZSBvdXRwdXQuICBnenJlYWQoKSBpcyBhYmxlIHRvIHJlYWQgc3VjaA0KKyAgIGNvbmNhdGVudGVkIGd6aXAgc3RyZWFtcy4NCisNCisgICAgIGd6Zmx1c2ggc2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdoZW4gc3RyaWN0bHkgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgd2lsbA0KKyAgIGRlZ3JhZGUgY29tcHJlc3Npb24gaWYgY2FsbGVkIHRvbyBvZnRlbi4NCisqLw0KKw0KKy8qDQorWkVYVEVSTiB6X29mZl90IFpFWFBPUlQgZ3pzZWVrIE9GKChnekZpbGUgZmlsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKSk7DQorDQorICAgICBTZXRzIHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIG5leHQgZ3pyZWFkIG9yIGd6d3JpdGUgb24gdGhlIGdpdmVuDQorICAgY29tcHJlc3NlZCBmaWxlLiAgVGhlIG9mZnNldCByZXByZXNlbnRzIGEgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZQ0KKyAgIHVuY29tcHJlc3NlZCBkYXRhIHN0cmVhbS4gIFRoZSB3aGVuY2UgcGFyYW1ldGVyIGlzIGRlZmluZWQgYXMgaW4gbHNlZWsoMik7DQorICAgdGhlIHZhbHVlIFNFRUtfRU5EIGlzIG5vdCBzdXBwb3J0ZWQuDQorDQorICAgICBJZiB0aGUgZmlsZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcsIHRoaXMgZnVuY3Rpb24gaXMgZW11bGF0ZWQgYnV0IGNhbiBiZQ0KKyAgIGV4dHJlbWVseSBzbG93LiAgSWYgdGhlIGZpbGUgaXMgb3BlbmVkIGZvciB3cml0aW5nLCBvbmx5IGZvcndhcmQgc2Vla3MgYXJlDQorICAgc3VwcG9ydGVkOyBnenNlZWsgdGhlbiBjb21wcmVzc2VzIGEgc2VxdWVuY2Ugb2YgemVyb2VzIHVwIHRvIHRoZSBuZXcNCisgICBzdGFydGluZyBwb3NpdGlvbi4NCisNCisgICAgIGd6c2VlayByZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGxvY2F0aW9uIGFzIG1lYXN1cmVkIGluIGJ5dGVzIGZyb20NCisgICB0aGUgYmVnaW5uaW5nIG9mIHRoZSB1bmNvbXByZXNzZWQgc3RyZWFtLCBvciAtMSBpbiBjYXNlIG9mIGVycm9yLCBpbg0KKyAgIHBhcnRpY3VsYXIgaWYgdGhlIGZpbGUgaXMgb3BlbmVkIGZvciB3cml0aW5nIGFuZCB0aGUgbmV3IHN0YXJ0aW5nIHBvc2l0aW9uDQorICAgd291bGQgYmUgYmVmb3JlIHRoZSBjdXJyZW50IHBvc2l0aW9uLg0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCAgICBnenJld2luZCBPRigoZ3pGaWxlIGZpbGUpKTsNCisvKg0KKyAgICAgUmV3aW5kcyB0aGUgZ2l2ZW4gZmlsZS4gVGhpcyBmdW5jdGlvbiBpcyBzdXBwb3J0ZWQgb25seSBmb3IgcmVhZGluZy4NCisNCisgICAgIGd6cmV3aW5kKGZpbGUpIGlzIGVxdWl2YWxlbnQgdG8gKGludClnenNlZWsoZmlsZSwgMEwsIFNFRUtfU0VUKQ0KKyovDQorDQorLyoNCitaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCAgICBnenRlbGwgT0YoKGd6RmlsZSBmaWxlKSk7DQorDQorICAgICBSZXR1cm5zIHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIG5leHQgZ3pyZWFkIG9yIGd6d3JpdGUgb24gdGhlIGdpdmVuDQorICAgY29tcHJlc3NlZCBmaWxlLiAgVGhpcyBwb3NpdGlvbiByZXByZXNlbnRzIGEgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZQ0KKyAgIHVuY29tcHJlc3NlZCBkYXRhIHN0cmVhbSwgYW5kIGlzIHplcm8gd2hlbiBzdGFydGluZywgZXZlbiBpZiBhcHBlbmRpbmcgb3INCisgICByZWFkaW5nIGEgZ3ppcCBzdHJlYW0gZnJvbSB0aGUgbWlkZGxlIG9mIGEgZmlsZSB1c2luZyBnemRvcGVuKCkuDQorDQorICAgICBnenRlbGwoZmlsZSkgaXMgZXF1aXZhbGVudCB0byBnenNlZWsoZmlsZSwgMEwsIFNFRUtfQ1VSKQ0KKyovDQorDQorLyoNCitaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCBnem9mZnNldCBPRigoZ3pGaWxlIGZpbGUpKTsNCisNCisgICAgIFJldHVybnMgdGhlIGN1cnJlbnQgb2Zmc2V0IGluIHRoZSBmaWxlIGJlaW5nIHJlYWQgb3Igd3JpdHRlbi4gIFRoaXMgb2Zmc2V0DQorICAgaW5jbHVkZXMgdGhlIGNvdW50IG9mIGJ5dGVzIHRoYXQgcHJlY2VkZSB0aGUgZ3ppcCBzdHJlYW0sIGZvciBleGFtcGxlIHdoZW4NCisgICBhcHBlbmRpbmcgb3Igd2hlbiB1c2luZyBnemRvcGVuKCkgZm9yIHJlYWRpbmcuICBXaGVuIHJlYWRpbmcsIHRoZSBvZmZzZXQNCisgICBkb2VzIG5vdCBpbmNsdWRlIGFzIHlldCB1bnVzZWQgYnVmZmVyZWQgaW5wdXQuICBUaGlzIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VkDQorICAgZm9yIGEgcHJvZ3Jlc3MgaW5kaWNhdG9yLiAgT24gZXJyb3IsIGd6b2Zmc2V0KCkgcmV0dXJucyAtMS4NCisqLw0KKw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3plb2YgT0YoKGd6RmlsZSBmaWxlKSk7DQorLyoNCisgICAgIFJldHVybnMgdHJ1ZSAoMSkgaWYgdGhlIGVuZC1vZi1maWxlIGluZGljYXRvciBoYXMgYmVlbiBzZXQgd2hpbGUgcmVhZGluZywNCisgICBmYWxzZSAoMCkgb3RoZXJ3aXNlLiAgTm90ZSB0aGF0IHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgaXMgc2V0IG9ubHkgaWYgdGhlDQorICAgcmVhZCB0cmllZCB0byBnbyBwYXN0IHRoZSBlbmQgb2YgdGhlIGlucHV0LCBidXQgY2FtZSB1cCBzaG9ydC4gIFRoZXJlZm9yZSwNCisgICBqdXN0IGxpa2UgZmVvZigpLCBnemVvZigpIG1heSByZXR1cm4gZmFsc2UgZXZlbiBpZiB0aGVyZSBpcyBubyBtb3JlIGRhdGEgdG8NCisgICByZWFkLCBpbiB0aGUgZXZlbnQgdGhhdCB0aGUgbGFzdCByZWFkIHJlcXVlc3Qgd2FzIGZvciB0aGUgZXhhY3QgbnVtYmVyIG9mDQorICAgYnl0ZXMgcmVtYWluaW5nIGluIHRoZSBpbnB1dCBmaWxlLiAgVGhpcyB3aWxsIGhhcHBlbiBpZiB0aGUgaW5wdXQgZmlsZSBzaXplDQorICAgaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIGJ1ZmZlciBzaXplLg0KKw0KKyAgICAgSWYgZ3plb2YoKSByZXR1cm5zIHRydWUsIHRoZW4gdGhlIHJlYWQgZnVuY3Rpb25zIHdpbGwgcmV0dXJuIG5vIG1vcmUgZGF0YSwNCisgICB1bmxlc3MgdGhlIGVuZC1vZi1maWxlIGluZGljYXRvciBpcyByZXNldCBieSBnemNsZWFyZXJyKCkgYW5kIHRoZSBpbnB1dCBmaWxlDQorICAgaGFzIGdyb3duIHNpbmNlIHRoZSBwcmV2aW91cyBlbmQgb2YgZmlsZSB3YXMgZGV0ZWN0ZWQuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGd6ZGlyZWN0IE9GKChnekZpbGUgZmlsZSkpOw0KKy8qDQorICAgICBSZXR1cm5zIHRydWUgKDEpIGlmIGZpbGUgaXMgYmVpbmcgY29waWVkIGRpcmVjdGx5IHdoaWxlIHJlYWRpbmcsIG9yIGZhbHNlDQorICAgKDApIGlmIGZpbGUgaXMgYSBnemlwIHN0cmVhbSBiZWluZyBkZWNvbXByZXNzZWQuDQorDQorICAgICBJZiB0aGUgaW5wdXQgZmlsZSBpcyBlbXB0eSwgZ3pkaXJlY3QoKSB3aWxsIHJldHVybiB0cnVlLCBzaW5jZSB0aGUgaW5wdXQNCisgICBkb2VzIG5vdCBjb250YWluIGEgZ3ppcCBzdHJlYW0uDQorDQorICAgICBJZiBnemRpcmVjdCgpIGlzIHVzZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZ3pvcGVuKCkgb3IgZ3pkb3BlbigpIGl0IHdpbGwNCisgICBjYXVzZSBidWZmZXJzIHRvIGJlIGFsbG9jYXRlZCB0byBhbGxvdyByZWFkaW5nIHRoZSBmaWxlIHRvIGRldGVybWluZSBpZiBpdA0KKyAgIGlzIGEgZ3ppcCBmaWxlLiAgVGhlcmVmb3JlIGlmIGd6YnVmZmVyKCkgaXMgdXNlZCwgaXQgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUNCisgICBnemRpcmVjdCgpLg0KKw0KKyAgICAgV2hlbiB3cml0aW5nLCBnemRpcmVjdCgpIHJldHVybnMgdHJ1ZSAoMSkgaWYgdHJhbnNwYXJlbnQgd3JpdGluZyB3YXMNCisgICByZXF1ZXN0ZWQgKCJ3VCIgZm9yIHRoZSBnem9wZW4oKSBtb2RlKSwgb3IgZmFsc2UgKDApIG90aGVyd2lzZS4gIChOb3RlOg0KKyAgIGd6ZGlyZWN0KCkgaXMgbm90IG5lZWRlZCB3aGVuIHdyaXRpbmcuICBUcmFuc3BhcmVudCB3cml0aW5nIG11c3QgYmUNCisgICBleHBsaWNpdGx5IHJlcXVlc3RlZCwgc28gdGhlIGFwcGxpY2F0aW9uIGFscmVhZHkga25vd3MgdGhlIGFuc3dlci4gIFdoZW4NCisgICBsaW5raW5nIHN0YXRpY2FsbHksIHVzaW5nIGd6ZGlyZWN0KCkgd2lsbCBpbmNsdWRlIGFsbCBvZiB0aGUgemxpYiBjb2RlIGZvcg0KKyAgIGd6aXAgZmlsZSByZWFkaW5nIGFuZCBkZWNvbXByZXNzaW9uLCB3aGljaCBtYXkgbm90IGJlIGRlc2lyZWQuKQ0KKyovDQorDQorWkVYVEVSTiBpbnQgWkVYUE9SVCAgICBnemNsb3NlIE9GKChnekZpbGUgZmlsZSkpOw0KKy8qDQorICAgICBGbHVzaGVzIGFsbCBwZW5kaW5nIG91dHB1dCBpZiBuZWNlc3NhcnksIGNsb3NlcyB0aGUgY29tcHJlc3NlZCBmaWxlIGFuZA0KKyAgIGRlYWxsb2NhdGVzIHRoZSAoZGUpY29tcHJlc3Npb24gc3RhdGUuICBOb3RlIHRoYXQgb25jZSBmaWxlIGlzIGNsb3NlZCwgeW91DQorICAgY2Fubm90IGNhbGwgZ3plcnJvciB3aXRoIGZpbGUsIHNpbmNlIGl0cyBzdHJ1Y3R1cmVzIGhhdmUgYmVlbiBkZWFsbG9jYXRlZC4NCisgICBnemNsb3NlIG11c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBvbiB0aGUgc2FtZSBmaWxlLCBqdXN0IGFzIGZyZWUNCisgICBtdXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugb24gdGhlIHNhbWUgYWxsb2NhdGlvbi4NCisNCisgICAgIGd6Y2xvc2Ugd2lsbCByZXR1cm4gWl9TVFJFQU1fRVJST1IgaWYgZmlsZSBpcyBub3QgdmFsaWQsIFpfRVJSTk8gb24gYQ0KKyAgIGZpbGUgb3BlcmF0aW9uIGVycm9yLCBaX01FTV9FUlJPUiBpZiBvdXQgb2YgbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGUNCisgICBsYXN0IHJlYWQgZW5kZWQgaW4gdGhlIG1pZGRsZSBvZiBhIGd6aXAgc3RyZWFtLCBvciBaX09LIG9uIHN1Y2Nlc3MuDQorKi8NCisNCitaRVhURVJOIGludCBaRVhQT1JUIGd6Y2xvc2VfciBPRigoZ3pGaWxlIGZpbGUpKTsNCitaRVhURVJOIGludCBaRVhQT1JUIGd6Y2xvc2VfdyBPRigoZ3pGaWxlIGZpbGUpKTsNCisvKg0KKyAgICAgU2FtZSBhcyBnemNsb3NlKCksIGJ1dCBnemNsb3NlX3IoKSBpcyBvbmx5IGZvciB1c2Ugd2hlbiByZWFkaW5nLCBhbmQNCisgICBnemNsb3NlX3coKSBpcyBvbmx5IGZvciB1c2Ugd2hlbiB3cml0aW5nIG9yIGFwcGVuZGluZy4gIFRoZSBhZHZhbnRhZ2UgdG8NCisgICB1c2luZyB0aGVzZSBpbnN0ZWFkIG9mIGd6Y2xvc2UoKSBpcyB0aGF0IHRoZXkgYXZvaWQgbGlua2luZyBpbiB6bGliDQorICAgY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbiBjb2RlIHRoYXQgaXMgbm90IHVzZWQgd2hlbiBvbmx5IHJlYWRpbmcgb3Igb25seQ0KKyAgIHdyaXRpbmcgcmVzcGVjdGl2ZWx5LiAgSWYgZ3pjbG9zZSgpIGlzIHVzZWQsIHRoZW4gYm90aCBjb21wcmVzc2lvbiBhbmQNCisgICBkZWNvbXByZXNzaW9uIGNvZGUgd2lsbCBiZSBpbmNsdWRlZCB0aGUgYXBwbGljYXRpb24gd2hlbiBsaW5raW5nIHRvIGEgc3RhdGljDQorICAgemxpYiBsaWJyYXJ5Lg0KKyovDQorDQorWkVYVEVSTiBjb25zdCBjaGFyICogWkVYUE9SVCBnemVycm9yIE9GKChnekZpbGUgZmlsZSwgaW50ICplcnJudW0pKTsNCisvKg0KKyAgICAgUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIGxhc3QgZXJyb3Igd2hpY2ggb2NjdXJyZWQgb24gdGhlIGdpdmVuDQorICAgY29tcHJlc3NlZCBmaWxlLiAgZXJybnVtIGlzIHNldCB0byB6bGliIGVycm9yIG51bWJlci4gIElmIGFuIGVycm9yIG9jY3VycmVkDQorICAgaW4gdGhlIGZpbGUgc3lzdGVtIGFuZCBub3QgaW4gdGhlIGNvbXByZXNzaW9uIGxpYnJhcnksIGVycm51bSBpcyBzZXQgdG8NCisgICBaX0VSUk5PIGFuZCB0aGUgYXBwbGljYXRpb24gbWF5IGNvbnN1bHQgZXJybm8gdG8gZ2V0IHRoZSBleGFjdCBlcnJvciBjb2RlLg0KKw0KKyAgICAgVGhlIGFwcGxpY2F0aW9uIG11c3Qgbm90IG1vZGlmeSB0aGUgcmV0dXJuZWQgc3RyaW5nLiAgRnV0dXJlIGNhbGxzIHRvDQorICAgdGhpcyBmdW5jdGlvbiBtYXkgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXNseSByZXR1cm5lZCBzdHJpbmcuICBJZiBmaWxlIGlzDQorICAgY2xvc2VkLCB0aGVuIHRoZSBzdHJpbmcgcHJldmlvdXNseSByZXR1cm5lZCBieSBnemVycm9yIHdpbGwgbm8gbG9uZ2VyIGJlDQorICAgYXZhaWxhYmxlLg0KKw0KKyAgICAgZ3plcnJvcigpIHNob3VsZCBiZSB1c2VkIHRvIGRpc3Rpbmd1aXNoIGVycm9ycyBmcm9tIGVuZC1vZi1maWxlIGZvciB0aG9zZQ0KKyAgIGZ1bmN0aW9ucyBhYm92ZSB0aGF0IGRvIG5vdCBkaXN0aW5ndWlzaCB0aG9zZSBjYXNlcyBpbiB0aGVpciByZXR1cm4gdmFsdWVzLg0KKyovDQorDQorWkVYVEVSTiB2b2lkIFpFWFBPUlQgZ3pjbGVhcmVyciBPRigoZ3pGaWxlIGZpbGUpKTsNCisvKg0KKyAgICAgQ2xlYXJzIHRoZSBlcnJvciBhbmQgZW5kLW9mLWZpbGUgZmxhZ3MgZm9yIGZpbGUuICBUaGlzIGlzIGFuYWxvZ291cyB0byB0aGUNCisgICBjbGVhcmVycigpIGZ1bmN0aW9uIGluIHN0ZGlvLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGNvbnRpbnVpbmcgdG8gcmVhZCBhIGd6aXANCisgICBmaWxlIHRoYXQgaXMgYmVpbmcgd3JpdHRlbiBjb25jdXJyZW50bHkuDQorKi8NCisNCisjZW5kaWYgLyogIVpfU09MTyAqLw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrc3VtIGZ1bmN0aW9ucyAqLw0KKw0KKy8qDQorICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCByZWxhdGVkIHRvIGNvbXByZXNzaW9uIGJ1dCBhcmUgZXhwb3J0ZWQNCisgICBhbnl3YXkgYmVjYXVzZSB0aGV5IG1pZ2h0IGJlIHVzZWZ1bCBpbiBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGNvbXByZXNzaW9uDQorICAgbGlicmFyeS4NCisqLw0KKw0KK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCBhZGxlcjMyIE9GKCh1TG9uZyBhZGxlciwgY29uc3QgQnl0ZWYgKmJ1ZiwgdUludCBsZW4pKTsNCisvKg0KKyAgICAgVXBkYXRlIGEgcnVubmluZyBBZGxlci0zMiBjaGVja3N1bSB3aXRoIHRoZSBieXRlcyBidWZbMC4ubGVuLTFdIGFuZA0KKyAgIHJldHVybiB0aGUgdXBkYXRlZCBjaGVja3N1bS4gIElmIGJ1ZiBpcyBaX05VTEwsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUNCisgICByZXF1aXJlZCBpbml0aWFsIHZhbHVlIGZvciB0aGUgY2hlY2tzdW0uDQorDQorICAgICBBbiBBZGxlci0zMiBjaGVja3N1bSBpcyBhbG1vc3QgYXMgcmVsaWFibGUgYXMgYSBDUkMzMiBidXQgY2FuIGJlIGNvbXB1dGVkDQorICAgbXVjaCBmYXN0ZXIuDQorDQorICAgVXNhZ2UgZXhhbXBsZToNCisNCisgICAgIHVMb25nIGFkbGVyID0gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsNCisNCisgICAgIHdoaWxlIChyZWFkX2J1ZmZlcihidWZmZXIsIGxlbmd0aCkgIT0gRU9GKSB7DQorICAgICAgIGFkbGVyID0gYWRsZXIzMihhZGxlciwgYnVmZmVyLCBsZW5ndGgpOw0KKyAgICAgfQ0KKyAgICAgaWYgKGFkbGVyICE9IG9yaWdpbmFsX2FkbGVyKSBlcnJvcigpOw0KKyovDQorDQorLyoNCitaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lIE9GKCh1TG9uZyBhZGxlcjEsIHVMb25nIGFkbGVyMiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X29mZl90IGxlbjIpKTsNCisNCisgICAgIENvbWJpbmUgdHdvIEFkbGVyLTMyIGNoZWNrc3VtcyBpbnRvIG9uZS4gIEZvciB0d28gc2VxdWVuY2VzIG9mIGJ5dGVzLCBzZXExDQorICAgYW5kIHNlcTIgd2l0aCBsZW5ndGhzIGxlbjEgYW5kIGxlbjIsIEFkbGVyLTMyIGNoZWNrc3VtcyB3ZXJlIGNhbGN1bGF0ZWQgZm9yDQorICAgZWFjaCwgYWRsZXIxIGFuZCBhZGxlcjIuICBhZGxlcjMyX2NvbWJpbmUoKSByZXR1cm5zIHRoZSBBZGxlci0zMiBjaGVja3N1bSBvZg0KKyAgIHNlcTEgYW5kIHNlcTIgY29uY2F0ZW5hdGVkLCByZXF1aXJpbmcgb25seSBhZGxlcjEsIGFkbGVyMiwgYW5kIGxlbjIuICBOb3RlDQorICAgdGhhdCB0aGUgel9vZmZfdCB0eXBlIChsaWtlIG9mZl90KSBpcyBhIHNpZ25lZCBpbnRlZ2VyLiAgSWYgbGVuMiBpcw0KKyAgIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGhhcyBubyBtZWFuaW5nIG9yIHV0aWxpdHkuDQorKi8NCisNCitaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzIgICBPRigodUxvbmcgY3JjLCBjb25zdCBCeXRlZiAqYnVmLCB1SW50IGxlbikpOw0KKy8qDQorICAgICBVcGRhdGUgYSBydW5uaW5nIENSQy0zMiB3aXRoIHRoZSBieXRlcyBidWZbMC4ubGVuLTFdIGFuZCByZXR1cm4gdGhlDQorICAgdXBkYXRlZCBDUkMtMzIuICBJZiBidWYgaXMgWl9OVUxMLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVpcmVkDQorICAgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGNyYy4gIFByZS0gYW5kIHBvc3QtY29uZGl0aW9uaW5nIChvbmUncyBjb21wbGVtZW50KSBpcw0KKyAgIHBlcmZvcm1lZCB3aXRoaW4gdGhpcyBmdW5jdGlvbiBzbyBpdCBzaG91bGRuJ3QgYmUgZG9uZSBieSB0aGUgYXBwbGljYXRpb24uDQorDQorICAgVXNhZ2UgZXhhbXBsZToNCisNCisgICAgIHVMb25nIGNyYyA9IGNyYzMyKDBMLCBaX05VTEwsIDApOw0KKw0KKyAgICAgd2hpbGUgKHJlYWRfYnVmZmVyKGJ1ZmZlciwgbGVuZ3RoKSAhPSBFT0YpIHsNCisgICAgICAgY3JjID0gY3JjMzIoY3JjLCBidWZmZXIsIGxlbmd0aCk7DQorICAgICB9DQorICAgICBpZiAoY3JjICE9IG9yaWdpbmFsX2NyYykgZXJyb3IoKTsNCisqLw0KKw0KKy8qDQorWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmUgT0YoKHVMb25nIGNyYzEsIHVMb25nIGNyYzIsIHpfb2ZmX3QgbGVuMikpOw0KKw0KKyAgICAgQ29tYmluZSB0d28gQ1JDLTMyIGNoZWNrIHZhbHVlcyBpbnRvIG9uZS4gIEZvciB0d28gc2VxdWVuY2VzIG9mIGJ5dGVzLA0KKyAgIHNlcTEgYW5kIHNlcTIgd2l0aCBsZW5ndGhzIGxlbjEgYW5kIGxlbjIsIENSQy0zMiBjaGVjayB2YWx1ZXMgd2VyZQ0KKyAgIGNhbGN1bGF0ZWQgZm9yIGVhY2gsIGNyYzEgYW5kIGNyYzIuICBjcmMzMl9jb21iaW5lKCkgcmV0dXJucyB0aGUgQ1JDLTMyDQorICAgY2hlY2sgdmFsdWUgb2Ygc2VxMSBhbmQgc2VxMiBjb25jYXRlbmF0ZWQsIHJlcXVpcmluZyBvbmx5IGNyYzEsIGNyYzIsIGFuZA0KKyAgIGxlbjIuDQorKi8NCisNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YXJpb3VzIGhhY2tzLCBkb24ndCBsb29rIDopICovDQorDQorLyogZGVmbGF0ZUluaXQgYW5kIGluZmxhdGVJbml0IGFyZSBtYWNyb3MgdG8gYWxsb3cgY2hlY2tpbmcgdGhlIHpsaWIgdmVyc2lvbg0KKyAqIGFuZCB0aGUgY29tcGlsZXIncyB2aWV3IG9mIHpfc3RyZWFtOg0KKyAqLw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUluaXRfIE9GKCh6X3N0cmVhbXAgc3RybSwgaW50IGxldmVsLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpKTsNCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVJbml0XyBPRigoel9zdHJlYW1wIHN0cm0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZlcnNpb24sIGludCBzdHJlYW1fc2l6ZSkpOw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUluaXQyXyBPRigoel9zdHJlYW1wIHN0cm0sIGludCAgbGV2ZWwsIGludCAgbWV0aG9kLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpbmRvd0JpdHMsIGludCBtZW1MZXZlbCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJhdGVneSwgY29uc3QgY2hhciAqdmVyc2lvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJlYW1fc2l6ZSkpOw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUluaXQyXyBPRigoel9zdHJlYW1wIHN0cm0sIGludCAgd2luZG93Qml0cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZlcnNpb24sIGludCBzdHJlYW1fc2l6ZSkpOw0KK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2tJbml0XyBPRigoel9zdHJlYW1wIHN0cm0sIGludCB3aW5kb3dCaXRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBGQVIgKndpbmRvdywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZlcnNpb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZWFtX3NpemUpKTsNCisjZGVmaW5lIGRlZmxhdGVJbml0KHN0cm0sIGxldmVsKSBcDQorICAgICAgICBkZWZsYXRlSW5pdF8oKHN0cm0pLCAobGV2ZWwpLCBaTElCX1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkNCisjZGVmaW5lIGluZmxhdGVJbml0KHN0cm0pIFwNCisgICAgICAgIGluZmxhdGVJbml0Xygoc3RybSksIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQ0KKyNkZWZpbmUgZGVmbGF0ZUluaXQyKHN0cm0sIGxldmVsLCBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSkgXA0KKyAgICAgICAgZGVmbGF0ZUluaXQyXygoc3RybSksKGxldmVsKSwobWV0aG9kKSwod2luZG93Qml0cyksKG1lbUxldmVsKSxcDQorICAgICAgICAgICAgICAgICAgICAgIChzdHJhdGVneSksIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQ0KKyNkZWZpbmUgaW5mbGF0ZUluaXQyKHN0cm0sIHdpbmRvd0JpdHMpIFwNCisgICAgICAgIGluZmxhdGVJbml0Ml8oKHN0cm0pLCAod2luZG93Qml0cyksIFpMSUJfVkVSU0lPTiwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZih6X3N0cmVhbSkpDQorI2RlZmluZSBpbmZsYXRlQmFja0luaXQoc3RybSwgd2luZG93Qml0cywgd2luZG93KSBcDQorICAgICAgICBpbmZsYXRlQmFja0luaXRfKChzdHJtKSwgKHdpbmRvd0JpdHMpLCAod2luZG93KSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICBaTElCX1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkNCisNCisjaWZuZGVmIFpfU09MTw0KKw0KKy8qIGd6Z2V0YygpIG1hY3JvIGFuZCBpdHMgc3VwcG9ydGluZyBmdW5jdGlvbiBhbmQgZXhwb3NlZCBkYXRhIHN0cnVjdHVyZS4gIE5vdGUNCisgKiB0aGF0IHRoZSByZWFsIGludGVybmFsIHN0YXRlIGlzIG11Y2ggbGFyZ2VyIHRoYW4gdGhlIGV4cG9zZWQgc3RydWN0dXJlLg0KKyAqIFRoaXMgYWJicmV2aWF0ZWQgc3RydWN0dXJlIGV4cG9zZXMganVzdCBlbm91Z2ggZm9yIHRoZSBnemdldGMoKSBtYWNyby4gIFRoZQ0KKyAqIHVzZXIgc2hvdWxkIG5vdCBtZXNzIHdpdGggdGhlc2UgZXhwb3NlZCBlbGVtZW50cywgc2luY2UgdGhlaXIgbmFtZXMgb3INCisgKiBiZWhhdmlvciBjb3VsZCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwgcGVyaGFwcyBldmVuIGNhcHJpY2lvdXNseS4gIFRoZXkgY2FuDQorICogb25seSBiZSB1c2VkIGJ5IHRoZSBnemdldGMoKSBtYWNyby4gIFlvdSBoYXZlIGJlZW4gd2FybmVkLg0KKyAqLw0KK3N0cnVjdCBnekZpbGVfcyB7DQorICAgIHVuc2lnbmVkIGhhdmU7DQorICAgIHVuc2lnbmVkIGNoYXIgKm5leHQ7DQorICAgIHpfb2ZmNjRfdCBwb3M7DQorfTsNCitaRVhURVJOIGludCBaRVhQT1JUIGd6Z2V0Y18gT0YoKGd6RmlsZSBmaWxlKSk7ICAvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovDQorI2lmZGVmIFpfUFJFRklYX1NFVA0KKyMgIHVuZGVmIHpfZ3pnZXRjDQorIyAgZGVmaW5lIHpfZ3pnZXRjKGcpIFwNCisgICAgICAgICAgKChnKS0+aGF2ZSA/ICgoZyktPmhhdmUtLSwgKGcpLT5wb3MrKywgKigoZyktPm5leHQpKyspIDogZ3pnZXRjKGcpKQ0KKyNlbHNlDQorIyAgZGVmaW5lIGd6Z2V0YyhnKSBcDQorICAgICAgICAgICgoZyktPmhhdmUgPyAoKGcpLT5oYXZlLS0sIChnKS0+cG9zKyssICooKGcpLT5uZXh0KSsrKSA6IGd6Z2V0YyhnKSkNCisjZW5kaWYNCisNCisvKiBwcm92aWRlIDY0LWJpdCBvZmZzZXQgZnVuY3Rpb25zIGlmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgZGVmaW5lZCwgYW5kL29yDQorICogY2hhbmdlIHRoZSByZWd1bGFyIGZ1bmN0aW9ucyB0byA2NCBiaXRzIGlmIF9GSUxFX09GRlNFVF9CSVRTIGlzIDY0IChpZg0KKyAqIGJvdGggYXJlIHRydWUsIHRoZSBhcHBsaWNhdGlvbiBnZXRzIHRoZSAqNjQgZnVuY3Rpb25zLCBhbmQgdGhlIHJlZ3VsYXINCisgKiBmdW5jdGlvbnMgYXJlIGNoYW5nZWQgdG8gNjQgYml0cykgLS0gaW4gY2FzZSB0aGVzZSBhcmUgc2V0IG9uIHN5c3RlbXMNCisgKiB3aXRob3V0IGxhcmdlIGZpbGUgc3VwcG9ydCwgX0xGUzY0X0xBUkdFRklMRSBtdXN0IGFsc28gYmUgdHJ1ZQ0KKyAqLw0KKyNpZmRlZiBaX0xBUkdFNjQNCisgICBaRVhURVJOIGd6RmlsZSBaRVhQT1JUIGd6b3BlbjY0IE9GKChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikpOw0KKyAgIFpFWFRFUk4gel9vZmY2NF90IFpFWFBPUlQgZ3pzZWVrNjQgT0YoKGd6RmlsZSwgel9vZmY2NF90LCBpbnQpKTsNCisgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6dGVsbDY0IE9GKChnekZpbGUpKTsNCisgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6b2Zmc2V0NjQgT0YoKGd6RmlsZSkpOw0KKyAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBhZGxlcjMyX2NvbWJpbmU2NCBPRigodUxvbmcsIHVMb25nLCB6X29mZjY0X3QpKTsNCisgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZTY0IE9GKCh1TG9uZywgdUxvbmcsIHpfb2ZmNjRfdCkpOw0KKyNlbmRpZg0KKw0KKyNpZiAhZGVmaW5lZChaTElCX0lOVEVSTkFMKSAmJiBkZWZpbmVkKFpfV0FOVDY0KQ0KKyMgIGlmZGVmIFpfUFJFRklYX1NFVA0KKyMgICAgZGVmaW5lIHpfZ3pvcGVuIHpfZ3pvcGVuNjQNCisjICAgIGRlZmluZSB6X2d6c2VlayB6X2d6c2VlazY0DQorIyAgICBkZWZpbmUgel9nenRlbGwgel9nenRlbGw2NA0KKyMgICAgZGVmaW5lIHpfZ3pvZmZzZXQgel9nem9mZnNldDY0DQorIyAgICBkZWZpbmUgel9hZGxlcjMyX2NvbWJpbmUgel9hZGxlcjMyX2NvbWJpbmU2NA0KKyMgICAgZGVmaW5lIHpfY3JjMzJfY29tYmluZSB6X2NyYzMyX2NvbWJpbmU2NA0KKyMgIGVsc2UNCisjICAgIGRlZmluZSBnem9wZW4gZ3pvcGVuNjQNCisjICAgIGRlZmluZSBnenNlZWsgZ3pzZWVrNjQNCisjICAgIGRlZmluZSBnenRlbGwgZ3p0ZWxsNjQNCisjICAgIGRlZmluZSBnem9mZnNldCBnem9mZnNldDY0DQorIyAgICBkZWZpbmUgYWRsZXIzMl9jb21iaW5lIGFkbGVyMzJfY29tYmluZTY0DQorIyAgICBkZWZpbmUgY3JjMzJfY29tYmluZSBjcmMzMl9jb21iaW5lNjQNCisjICBlbmRpZg0KKyMgIGlmbmRlZiBaX0xBUkdFNjQNCisgICAgIFpFWFRFUk4gZ3pGaWxlIFpFWFBPUlQgZ3pvcGVuNjQgT0YoKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSk7DQorICAgICBaRVhURVJOIG9mZjY0X3QgWkVYUE9SVCBnenNlZWs2NCBPRigoZ3pGaWxlLCBvZmY2NF90LCBpbnQpKTsNCisgICAgIFpFWFRFUk4gb2ZmNjRfdCBaRVhQT1JUIGd6dGVsbDY0IE9GKChnekZpbGUpKTsNCisgICAgIFpFWFRFUk4gel9vZmY2NF90IFpFWFBPUlQgZ3pvZmZzZXQ2NCBPRigoZ3pGaWxlKSk7DQorICAgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lNjQgT0YoKHVMb25nLCB1TG9uZywgb2ZmNjRfdCkpOw0KKyAgICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmU2NCBPRigodUxvbmcsIHVMb25nLCBvZmY2NF90KSk7DQorIyAgZW5kaWYNCisjZWxzZQ0KKyAgIFpFWFRFUk4gZ3pGaWxlIFpFWFBPUlQgZ3pvcGVuIE9GKChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikpOw0KKyAgIFpFWFRFUk4gel9vZmZfdCBaRVhQT1JUIGd6c2VlayBPRigoZ3pGaWxlLCB6X29mZl90LCBpbnQpKTsNCisgICBaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCBnenRlbGwgT0YoKGd6RmlsZSkpOw0KKyAgIFpFWFRFUk4gel9vZmZfdCBaRVhQT1JUIGd6b2Zmc2V0IE9GKChnekZpbGUpKTsNCisgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lIE9GKCh1TG9uZywgdUxvbmcsIHpfb2ZmX3QpKTsNCisgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZSBPRigodUxvbmcsIHVMb25nLCB6X29mZl90KSk7DQorI2VuZGlmDQorDQorI2Vsc2UgLyogWl9TT0xPICovDQorDQorICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGFkbGVyMzJfY29tYmluZSBPRigodUxvbmcsIHVMb25nLCB6X29mZl90KSk7DQorICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmUgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOw0KKw0KKyNlbmRpZiAvKiAhWl9TT0xPICovDQorDQorLyogaGFjayBmb3IgYnVnZ3kgY29tcGlsZXJzICovDQorI2lmICFkZWZpbmVkKFpVVElMX0gpICYmICFkZWZpbmVkKE5PX0RVTU1ZX0RFQ0wpDQorICAgIHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSB7aW50IGR1bW15O307DQorI2VuZGlmDQorDQorLyogdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyAqLw0KK1pFWFRFUk4gY29uc3QgY2hhciAgICogWkVYUE9SVCB6RXJyb3IgICAgICAgICAgIE9GKChpbnQpKTsNCitaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgaW5mbGF0ZVN5bmNQb2ludCBPRigoel9zdHJlYW1wKSk7DQorWkVYVEVSTiBjb25zdCB6X2NyY190IEZBUiAqIFpFWFBPUlQgZ2V0X2NyY190YWJsZSAgICBPRigodm9pZCkpOw0KK1pFWFRFUk4gaW50ICAgICAgICAgICAgWkVYUE9SVCBpbmZsYXRlVW5kZXJtaW5lIE9GKCh6X3N0cmVhbXAsIGludCkpOw0KK1pFWFRFUk4gaW50ICAgICAgICAgICAgWkVYUE9SVCBpbmZsYXRlUmVzZXRLZWVwIE9GKCh6X3N0cmVhbXApKTsNCitaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgZGVmbGF0ZVJlc2V0S2VlcCBPRigoel9zdHJlYW1wKSk7DQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChaX1NPTE8pDQorWkVYVEVSTiBnekZpbGUgICAgICAgICBaRVhQT1JUIGd6b3Blbl93IE9GKChjb25zdCB3Y2hhcl90ICpwYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbW9kZSkpOw0KKyNlbmRpZg0KKyNpZiBkZWZpbmVkKFNUREMpIHx8IGRlZmluZWQoWl9IQVZFX1NUREFSR19IKQ0KKyMgIGlmbmRlZiBaX1NPTE8NCitaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlRWQSBnenZwcmludGYgWl9BUkcoKGd6RmlsZSBmaWxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCB2YSkpOw0KKyMgIGVuZGlmDQorI2VuZGlmDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKw0KKyNlbmRpZiAvKiBaTElCX0ggKi8NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mZHJtL2NyeXB0by9meF9jcnlwdC5jcHAgYi9jb3JlL3NyYy9mZHJtL2NyeXB0by9meF9jcnlwdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYxYmY1ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Zkcm0vY3J5cHRvL2Z4X2NyeXB0LmNwcApAQCAtMCwwICsxLDI1OSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mZHJtL2Z4X2NyeXB0LmgiDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorc3RydWN0IHJjNF9zdGF0ZSB7DQorICAgIGludCB4LCB5LCBtWzI1Nl07DQorfTsNCit2b2lkIENSWVBUX0FyY0ZvdXJTZXR1cCh2b2lkKiBjb250ZXh0LCAgRlhfTFBDQllURSBrZXksICBGWF9EV09SRCBsZW5ndGggKQ0KK3sNCisgICAgcmM0X3N0YXRlICpzID0gKHJjNF9zdGF0ZSopY29udGV4dDsNCisgICAgaW50IGksIGosIGssICptLCBhOw0KKyAgICBzLT54ID0gMDsNCisgICAgcy0+eSA9IDA7DQorICAgIG0gPSBzLT5tOw0KKyAgICBmb3IoIGkgPSAwOyBpIDwgMjU2OyBpKysgKSB7DQorICAgICAgICBtW2ldID0gaTsNCisgICAgfQ0KKyAgICBqID0gayA9IDA7DQorICAgIGZvciggaSA9IDA7IGkgPCAyNTY7IGkrKyApIHsNCisgICAgICAgIGEgPSBtW2ldOw0KKyAgICAgICAgaiA9ICggaiArIGEgKyBrZXlba10gKSAmIDB4RkY7DQorICAgICAgICBtW2ldID0gbVtqXTsNCisgICAgICAgIG1bal0gPSBhOw0KKyAgICAgICAgaWYoICsrayA+PSAoaW50KWxlbmd0aCApIHsNCisgICAgICAgICAgICBrID0gMDsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCit2b2lkIENSWVBUX0FyY0ZvdXJDcnlwdCh2b2lkKiBjb250ZXh0LCB1bnNpZ25lZCBjaGFyICpkYXRhLCBGWF9EV09SRCBsZW5ndGggKQ0KK3sNCisgICAgc3RydWN0IHJjNF9zdGF0ZSogcyA9IChzdHJ1Y3QgcmM0X3N0YXRlKiljb250ZXh0Ow0KKyAgICBpbnQgaSwgeCwgeSwgKm0sIGEsIGI7DQorICAgIHggPSBzLT54Ow0KKyAgICB5ID0gcy0+eTsNCisgICAgbSA9IHMtPm07DQorICAgIGZvciggaSA9IDA7IGkgPCAoaW50KWxlbmd0aDsgaSsrICkgew0KKyAgICAgICAgeCA9ICggeCArIDEgKSAmIDB4RkY7DQorICAgICAgICBhID0gbVt4XTsNCisgICAgICAgIHkgPSAoIHkgKyBhICkgJiAweEZGOw0KKyAgICAgICAgbVt4XSA9IGIgPSBtW3ldOw0KKyAgICAgICAgbVt5XSA9IGE7DQorICAgICAgICBkYXRhW2ldIF49IG1bKCBhICsgYiApICYgMHhGRl07DQorICAgIH0NCisgICAgcy0+eCA9IHg7DQorICAgIHMtPnkgPSB5Ow0KK30NCit2b2lkIENSWVBUX0FyY0ZvdXJDcnlwdEJsb2NrKEZYX0xQQllURSBwRGF0YSwgRlhfRFdPUkQgc2l6ZSwgRlhfTFBDQllURSBrZXksIEZYX0RXT1JEIGtleWxlbikNCit7DQorICAgIHJjNF9zdGF0ZSBzOw0KKyAgICBDUllQVF9BcmNGb3VyU2V0dXAoJnMsIGtleSwga2V5bGVuKTsNCisgICAgQ1JZUFRfQXJjRm91ckNyeXB0KCZzLCBwRGF0YSwgc2l6ZSk7DQorfQ0KK3N0cnVjdCBtZDVfY29udGV4dCB7DQorICAgIEZYX0RXT1JEIHRvdGFsWzJdOw0KKyAgICBGWF9EV09SRCBzdGF0ZVs0XTsNCisgICAgRlhfQllURSBidWZmZXJbNjRdOw0KK307DQorI2RlZmluZSBHRVRfRlhfRFdPUkQobixiLGkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKG4pID0gKEZYX0RXT1JEKSAoKEZYX0JZVEUgKikgYilbKGkpXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgIHwgKCgoRlhfRFdPUkQpICgoRlhfQllURSAqKSBiKVsoaSkrMV0pIDw8ICA4KSAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgfCAoKChGWF9EV09SRCkgKChGWF9CWVRFICopIGIpWyhpKSsyXSkgPDwgMTYpICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICB8ICgoKEZYX0RXT1JEKSAoKEZYX0JZVEUgKikgYilbKGkpKzNdKSA8PCAyNCk7ICAgICAgICAgICAgICAgIFwNCisgICAgfQ0KKyNkZWZpbmUgUFVUX0ZYX0RXT1JEKG4sYixpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICgoKEZYX0JZVEUgKikgYilbKGkpXSAgKSA9IChGWF9CWVRFKSAoKChuKSAgICAgICkgJiAweEZGKTsgICAgICBcDQorICAgICAgICAoKChGWF9CWVRFICopIGIpWyhpKSsxXSkgPSAoRlhfQllURSkgKCgobikgPj4gIDgpICYgMHhGRik7ICAgICAgXA0KKyAgICAgICAgKCgoRlhfQllURSAqKSBiKVsoaSkrMl0pID0gKEZYX0JZVEUpICgoKG4pID4+IDE2KSAmIDB4RkYpOyAgICAgIFwNCisgICAgICAgICgoKEZYX0JZVEUgKikgYilbKGkpKzNdKSA9IChGWF9CWVRFKSAoKChuKSA+PiAyNCkgJiAweEZGKTsgICAgICBcDQorICAgIH0NCit2b2lkIG1kNV9wcm9jZXNzKCBzdHJ1Y3QgbWQ1X2NvbnRleHQgKmN0eCwgY29uc3QgRlhfQllURSBkYXRhWzY0XSApDQorew0KKyAgICBGWF9EV09SRCBBLCBCLCBDLCBELCBYWzE2XTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzBdLCAgZGF0YSwgIDAgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzFdLCAgZGF0YSwgIDQgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzJdLCAgZGF0YSwgIDggKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzNdLCAgZGF0YSwgMTIgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzRdLCAgZGF0YSwgMTYgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzVdLCAgZGF0YSwgMjAgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzZdLCAgZGF0YSwgMjQgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzddLCAgZGF0YSwgMjggKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzhdLCAgZGF0YSwgMzIgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzldLCAgZGF0YSwgMzYgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzEwXSwgZGF0YSwgNDAgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzExXSwgZGF0YSwgNDQgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzEyXSwgZGF0YSwgNDggKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzEzXSwgZGF0YSwgNTIgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzE0XSwgZGF0YSwgNTYgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBYWzE1XSwgZGF0YSwgNjAgKTsNCisjZGVmaW5lIFMoeCxuKSAoKHggPDwgbikgfCAoKHggJiAweEZGRkZGRkZGKSA+PiAoMzIgLSBuKSkpDQorI2RlZmluZSBQKGEsYixjLGQsayxzLHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgYSArPSBGKGIsYyxkKSArIFhba10gKyB0OyBhID0gUyhhLHMpICsgYjsgICAgICAgICAgIFwNCisgICAgfQ0KKyAgICBBID0gY3R4LT5zdGF0ZVswXTsNCisgICAgQiA9IGN0eC0+c3RhdGVbMV07DQorICAgIEMgPSBjdHgtPnN0YXRlWzJdOw0KKyAgICBEID0gY3R4LT5zdGF0ZVszXTsNCisjZGVmaW5lIEYoeCx5LHopICh6IF4gKHggJiAoeSBeIHopKSkNCisgICAgUCggQSwgQiwgQywgRCwgIDAsICA3LCAweEQ3NkFBNDc4ICk7DQorICAgIFAoIEQsIEEsIEIsIEMsICAxLCAxMiwgMHhFOEM3Qjc1NiApOw0KKyAgICBQKCBDLCBELCBBLCBCLCAgMiwgMTcsIDB4MjQyMDcwREIgKTsNCisgICAgUCggQiwgQywgRCwgQSwgIDMsIDIyLCAweEMxQkRDRUVFICk7DQorICAgIFAoIEEsIEIsIEMsIEQsICA0LCAgNywgMHhGNTdDMEZBRiApOw0KKyAgICBQKCBELCBBLCBCLCBDLCAgNSwgMTIsIDB4NDc4N0M2MkEgKTsNCisgICAgUCggQywgRCwgQSwgQiwgIDYsIDE3LCAweEE4MzA0NjEzICk7DQorICAgIFAoIEIsIEMsIEQsIEEsICA3LCAyMiwgMHhGRDQ2OTUwMSApOw0KKyAgICBQKCBBLCBCLCBDLCBELCAgOCwgIDcsIDB4Njk4MDk4RDggKTsNCisgICAgUCggRCwgQSwgQiwgQywgIDksIDEyLCAweDhCNDRGN0FGICk7DQorICAgIFAoIEMsIEQsIEEsIEIsIDEwLCAxNywgMHhGRkZGNUJCMSApOw0KKyAgICBQKCBCLCBDLCBELCBBLCAxMSwgMjIsIDB4ODk1Q0Q3QkUgKTsNCisgICAgUCggQSwgQiwgQywgRCwgMTIsICA3LCAweDZCOTAxMTIyICk7DQorICAgIFAoIEQsIEEsIEIsIEMsIDEzLCAxMiwgMHhGRDk4NzE5MyApOw0KKyAgICBQKCBDLCBELCBBLCBCLCAxNCwgMTcsIDB4QTY3OTQzOEUgKTsNCisgICAgUCggQiwgQywgRCwgQSwgMTUsIDIyLCAweDQ5QjQwODIxICk7DQorI3VuZGVmIEYNCisjZGVmaW5lIEYoeCx5LHopICh5IF4gKHogJiAoeCBeIHkpKSkNCisgICAgUCggQSwgQiwgQywgRCwgIDEsICA1LCAweEY2MUUyNTYyICk7DQorICAgIFAoIEQsIEEsIEIsIEMsICA2LCAgOSwgMHhDMDQwQjM0MCApOw0KKyAgICBQKCBDLCBELCBBLCBCLCAxMSwgMTQsIDB4MjY1RTVBNTEgKTsNCisgICAgUCggQiwgQywgRCwgQSwgIDAsIDIwLCAweEU5QjZDN0FBICk7DQorICAgIFAoIEEsIEIsIEMsIEQsICA1LCAgNSwgMHhENjJGMTA1RCApOw0KKyAgICBQKCBELCBBLCBCLCBDLCAxMCwgIDksIDB4MDI0NDE0NTMgKTsNCisgICAgUCggQywgRCwgQSwgQiwgMTUsIDE0LCAweEQ4QTFFNjgxICk7DQorICAgIFAoIEIsIEMsIEQsIEEsICA0LCAyMCwgMHhFN0QzRkJDOCApOw0KKyAgICBQKCBBLCBCLCBDLCBELCAgOSwgIDUsIDB4MjFFMUNERTYgKTsNCisgICAgUCggRCwgQSwgQiwgQywgMTQsICA5LCAweEMzMzcwN0Q2ICk7DQorICAgIFAoIEMsIEQsIEEsIEIsICAzLCAxNCwgMHhGNEQ1MEQ4NyApOw0KKyAgICBQKCBCLCBDLCBELCBBLCAgOCwgMjAsIDB4NDU1QTE0RUQgKTsNCisgICAgUCggQSwgQiwgQywgRCwgMTMsICA1LCAweEE5RTNFOTA1ICk7DQorICAgIFAoIEQsIEEsIEIsIEMsICAyLCAgOSwgMHhGQ0VGQTNGOCApOw0KKyAgICBQKCBDLCBELCBBLCBCLCAgNywgMTQsIDB4Njc2RjAyRDkgKTsNCisgICAgUCggQiwgQywgRCwgQSwgMTIsIDIwLCAweDhEMkE0QzhBICk7DQorI3VuZGVmIEYNCisjZGVmaW5lIEYoeCx5LHopICh4IF4geSBeIHopDQorICAgIFAoIEEsIEIsIEMsIEQsICA1LCAgNCwgMHhGRkZBMzk0MiApOw0KKyAgICBQKCBELCBBLCBCLCBDLCAgOCwgMTEsIDB4ODc3MUY2ODEgKTsNCisgICAgUCggQywgRCwgQSwgQiwgMTEsIDE2LCAweDZEOUQ2MTIyICk7DQorICAgIFAoIEIsIEMsIEQsIEEsIDE0LCAyMywgMHhGREU1MzgwQyApOw0KKyAgICBQKCBBLCBCLCBDLCBELCAgMSwgIDQsIDB4QTRCRUVBNDQgKTsNCisgICAgUCggRCwgQSwgQiwgQywgIDQsIDExLCAweDRCREVDRkE5ICk7DQorICAgIFAoIEMsIEQsIEEsIEIsICA3LCAxNiwgMHhGNkJCNEI2MCApOw0KKyAgICBQKCBCLCBDLCBELCBBLCAxMCwgMjMsIDB4QkVCRkJDNzAgKTsNCisgICAgUCggQSwgQiwgQywgRCwgMTMsICA0LCAweDI4OUI3RUM2ICk7DQorICAgIFAoIEQsIEEsIEIsIEMsICAwLCAxMSwgMHhFQUExMjdGQSApOw0KKyAgICBQKCBDLCBELCBBLCBCLCAgMywgMTYsIDB4RDRFRjMwODUgKTsNCisgICAgUCggQiwgQywgRCwgQSwgIDYsIDIzLCAweDA0ODgxRDA1ICk7DQorICAgIFAoIEEsIEIsIEMsIEQsICA5LCAgNCwgMHhEOUQ0RDAzOSApOw0KKyAgICBQKCBELCBBLCBCLCBDLCAxMiwgMTEsIDB4RTZEQjk5RTUgKTsNCisgICAgUCggQywgRCwgQSwgQiwgMTUsIDE2LCAweDFGQTI3Q0Y4ICk7DQorICAgIFAoIEIsIEMsIEQsIEEsICAyLCAyMywgMHhDNEFDNTY2NSApOw0KKyN1bmRlZiBGDQorI2RlZmluZSBGKHgseSx6KSAoeSBeICh4IHwgfnopKQ0KKyAgICBQKCBBLCBCLCBDLCBELCAgMCwgIDYsIDB4RjQyOTIyNDQgKTsNCisgICAgUCggRCwgQSwgQiwgQywgIDcsIDEwLCAweDQzMkFGRjk3ICk7DQorICAgIFAoIEMsIEQsIEEsIEIsIDE0LCAxNSwgMHhBQjk0MjNBNyApOw0KKyAgICBQKCBCLCBDLCBELCBBLCAgNSwgMjEsIDB4RkM5M0EwMzkgKTsNCisgICAgUCggQSwgQiwgQywgRCwgMTIsICA2LCAweDY1NUI1OUMzICk7DQorICAgIFAoIEQsIEEsIEIsIEMsICAzLCAxMCwgMHg4RjBDQ0M5MiApOw0KKyAgICBQKCBDLCBELCBBLCBCLCAxMCwgMTUsIDB4RkZFRkY0N0QgKTsNCisgICAgUCggQiwgQywgRCwgQSwgIDEsIDIxLCAweDg1ODQ1REQxICk7DQorICAgIFAoIEEsIEIsIEMsIEQsICA4LCAgNiwgMHg2RkE4N0U0RiApOw0KKyAgICBQKCBELCBBLCBCLCBDLCAxNSwgMTAsIDB4RkUyQ0U2RTAgKTsNCisgICAgUCggQywgRCwgQSwgQiwgIDYsIDE1LCAweEEzMDE0MzE0ICk7DQorICAgIFAoIEIsIEMsIEQsIEEsIDEzLCAyMSwgMHg0RTA4MTFBMSApOw0KKyAgICBQKCBBLCBCLCBDLCBELCAgNCwgIDYsIDB4Rjc1MzdFODIgKTsNCisgICAgUCggRCwgQSwgQiwgQywgMTEsIDEwLCAweEJEM0FGMjM1ICk7DQorICAgIFAoIEMsIEQsIEEsIEIsICAyLCAxNSwgMHgyQUQ3RDJCQiApOw0KKyAgICBQKCBCLCBDLCBELCBBLCAgOSwgMjEsIDB4RUI4NkQzOTEgKTsNCisjdW5kZWYgRg0KKyAgICBjdHgtPnN0YXRlWzBdICs9IEE7DQorICAgIGN0eC0+c3RhdGVbMV0gKz0gQjsNCisgICAgY3R4LT5zdGF0ZVsyXSArPSBDOw0KKyAgICBjdHgtPnN0YXRlWzNdICs9IEQ7DQorfQ0KK3ZvaWQgQ1JZUFRfTUQ1U3RhcnQodm9pZCogY29udGV4dCkNCit7DQorICAgIHN0cnVjdCBtZDVfY29udGV4dCAqY3R4ID0gKHN0cnVjdCBtZDVfY29udGV4dCopY29udGV4dDsNCisgICAgY3R4LT50b3RhbFswXSA9IDA7DQorICAgIGN0eC0+dG90YWxbMV0gPSAwOw0KKyAgICBjdHgtPnN0YXRlWzBdID0gMHg2NzQ1MjMwMTsNCisgICAgY3R4LT5zdGF0ZVsxXSA9IDB4RUZDREFCODk7DQorICAgIGN0eC0+c3RhdGVbMl0gPSAweDk4QkFEQ0ZFOw0KKyAgICBjdHgtPnN0YXRlWzNdID0gMHgxMDMyNTQ3NjsNCit9DQordm9pZCBDUllQVF9NRDVVcGRhdGUoRlhfTFBWT0lEIHBjdHgsIEZYX0xQQ0JZVEUgaW5wdXQsIEZYX0RXT1JEIGxlbmd0aCApDQorew0KKyAgICBzdHJ1Y3QgbWQ1X2NvbnRleHQgKmN0eCA9IChzdHJ1Y3QgbWQ1X2NvbnRleHQgKilwY3R4Ow0KKyAgICBGWF9EV09SRCBsZWZ0LCBmaWxsOw0KKyAgICBpZiggISBsZW5ndGggKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbGVmdCA9ICggY3R4LT50b3RhbFswXSA+PiAzICkgJiAweDNGOw0KKyAgICBmaWxsID0gNjQgLSBsZWZ0Ow0KKyAgICBjdHgtPnRvdGFsWzBdICs9IGxlbmd0aCA8PCAgMzsNCisgICAgY3R4LT50b3RhbFsxXSArPSBsZW5ndGggPj4gMjk7DQorICAgIGN0eC0+dG90YWxbMF0gJj0gMHhGRkZGRkZGRjsNCisgICAgY3R4LT50b3RhbFsxXSArPSBjdHgtPnRvdGFsWzBdIDwgbGVuZ3RoIDw8IDM7DQorICAgIGlmKCBsZWZ0ICYmIGxlbmd0aCA+PSBmaWxsICkgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoICh2b2lkICopIChjdHgtPmJ1ZmZlciArIGxlZnQpLCAodm9pZCAqKSBpbnB1dCwgZmlsbCApOw0KKyAgICAgICAgbWQ1X3Byb2Nlc3MoIGN0eCwgY3R4LT5idWZmZXIgKTsNCisgICAgICAgIGxlbmd0aCAtPSBmaWxsOw0KKyAgICAgICAgaW5wdXQgICs9IGZpbGw7DQorICAgICAgICBsZWZ0ID0gMDsNCisgICAgfQ0KKyAgICB3aGlsZSggbGVuZ3RoID49IDY0ICkgew0KKyAgICAgICAgbWQ1X3Byb2Nlc3MoIGN0eCwgaW5wdXQgKTsNCisgICAgICAgIGxlbmd0aCAtPSA2NDsNCisgICAgICAgIGlucHV0ICArPSA2NDsNCisgICAgfQ0KKyAgICBpZiggbGVuZ3RoICkgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoICh2b2lkICopIChjdHgtPmJ1ZmZlciArIGxlZnQpLCAodm9pZCAqKSBpbnB1dCwgbGVuZ3RoICk7DQorICAgIH0NCit9DQorY29uc3QgRlhfQllURSBtZDVfcGFkZGluZ1s2NF0gPSB7DQorICAgIDB4ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDANCit9Ow0KK3ZvaWQgQ1JZUFRfTUQ1RmluaXNoKEZYX0xQVk9JRCBwY3R4LCBGWF9CWVRFIGRpZ2VzdFsxNl0gKQ0KK3sNCisgICAgc3RydWN0IG1kNV9jb250ZXh0ICpjdHggPSAoc3RydWN0IG1kNV9jb250ZXh0ICopcGN0eDsNCisgICAgRlhfRFdPUkQgbGFzdCwgcGFkbjsNCisgICAgRlhfQllURSBtc2dsZW5bOF07DQorICAgIFBVVF9GWF9EV09SRCggY3R4LT50b3RhbFswXSwgbXNnbGVuLCAwICk7DQorICAgIFBVVF9GWF9EV09SRCggY3R4LT50b3RhbFsxXSwgbXNnbGVuLCA0ICk7DQorICAgIGxhc3QgPSAoIGN0eC0+dG90YWxbMF0gPj4gMyApICYgMHgzRjsNCisgICAgcGFkbiA9ICggbGFzdCA8IDU2ICkgPyAoIDU2IC0gbGFzdCApIDogKCAxMjAgLSBsYXN0ICk7DQorICAgIENSWVBUX01ENVVwZGF0ZSggY3R4LCBtZDVfcGFkZGluZywgcGFkbiApOw0KKyAgICBDUllQVF9NRDVVcGRhdGUoIGN0eCwgbXNnbGVuLCA4ICk7DQorICAgIFBVVF9GWF9EV09SRCggY3R4LT5zdGF0ZVswXSwgZGlnZXN0LCAgMCApOw0KKyAgICBQVVRfRlhfRFdPUkQoIGN0eC0+c3RhdGVbMV0sIGRpZ2VzdCwgIDQgKTsNCisgICAgUFVUX0ZYX0RXT1JEKCBjdHgtPnN0YXRlWzJdLCBkaWdlc3QsICA4ICk7DQorICAgIFBVVF9GWF9EV09SRCggY3R4LT5zdGF0ZVszXSwgZGlnZXN0LCAxMiApOw0KK30NCit2b2lkIENSWVBUX01ENUdlbmVyYXRlKEZYX0xQQ0JZVEUgaW5wdXQsIEZYX0RXT1JEIGxlbmd0aCwgRlhfQllURSBkaWdlc3RbMTZdKQ0KK3sNCisgICAgbWQ1X2NvbnRleHQgY3R4Ow0KKyAgICBDUllQVF9NRDVTdGFydCgmY3R4KTsNCisgICAgQ1JZUFRfTUQ1VXBkYXRlKCZjdHgsIGlucHV0LCBsZW5ndGgpOw0KKyAgICBDUllQVF9NRDVGaW5pc2goJmN0eCwgZGlnZXN0KTsNCit9DQorc3RhdGljIEZYX0JPT0wgKCpnX1B1YktleURlY3J5cHRvcikoRlhfTFBDQllURSBwRGF0YSwgRlhfRFdPUkQgc2l6ZSwgRlhfTFBCWVRFIGRhdGFfYnVmLCBGWF9EV09SRCYgZGF0YV9sZW4pID0gTlVMTDsNCit2b2lkIENSWVBUX1NldFB1YktleURlY3J5cHRvcihGWF9CT09MICgqZnVuYykoRlhfTFBDQllURSBwRGF0YSwgRlhfRFdPUkQgc2l6ZSwgRlhfTFBCWVRFIGRhdGFfYnVmLCBGWF9EV09SRCYgZGF0YV9sZW4pKQ0KK3sNCisgICAgZ19QdWJLZXlEZWNyeXB0b3IgPSBmdW5jOw0KK30NCisjaWZkZWYgX19jcGx1c3BsdXMNCit9Ow0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Zkcm0vY3J5cHRvL2Z4X2NyeXB0X2Flcy5jcHAgYi9jb3JlL3NyYy9mZHJtL2NyeXB0by9meF9jcnlwdF9hZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NjQ0ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mZHJtL2NyeXB0by9meF9jcnlwdF9hZXMuY3BwCkBAIC0wLDAgKzEsMTAxMyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mZHJtL2Z4X2NyeXB0LmgiDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorI2RlZmluZSBNQVhfTlIgMTQNCisjZGVmaW5lIE1BWF9OSyA4DQorI2RlZmluZSBNQVhfTkIgOA0KKyNkZWZpbmUgbXVsYnkyKHgpICggKCh4JjB4N0YpIDw8IDEpIF4gKHggJiAweDgwID8gMHgxQiA6IDApICkNCisjZGVmaW5lIEdFVF8zMkJJVF9NU0JfRklSU1QoY3ApIFwNCisgICAgKCgodW5zaWduZWQgbG9uZykodW5zaWduZWQgY2hhcikoY3ApWzNdKSB8IFwNCisgICAgICgodW5zaWduZWQgbG9uZykodW5zaWduZWQgY2hhcikoY3ApWzJdIDw8IDgpIHwgXA0KKyAgICAgKCh1bnNpZ25lZCBsb25nKSh1bnNpZ25lZCBjaGFyKShjcClbMV0gPDwgMTYpIHwgXA0KKyAgICAgKCh1bnNpZ25lZCBsb25nKSh1bnNpZ25lZCBjaGFyKShjcClbMF0gPDwgMjQpKQ0KKyNkZWZpbmUgUFVUXzMyQklUX01TQl9GSVJTVChjcCwgdmFsdWUpIGRvIHsgXA0KKyAgICAgICAgKGNwKVszXSA9ICh2YWx1ZSk7IFwNCisgICAgICAgIChjcClbMl0gPSAodmFsdWUpID4+IDg7IFwNCisgICAgICAgIChjcClbMV0gPSAodmFsdWUpID4+IDE2OyBcDQorICAgICAgICAoY3ApWzBdID0gKHZhbHVlKSA+PiAyNDsgfSB3aGlsZSAoMCkNCitzdHJ1Y3QgQUVTQ29udGV4dCB7DQorICAgIHVuc2lnbmVkIGludCBrZXlzY2hlZFsoTUFYX05SICsgMSkgKiBNQVhfTkJdOw0KKyAgICB1bnNpZ25lZCBpbnQgaW52a2V5c2NoZWRbKE1BWF9OUiArIDEpICogTUFYX05CXTsNCisgICAgdm9pZCAoKmVuY3J5cHQpIChBRVNDb250ZXh0ICogY3R4LCB1bnNpZ25lZCBpbnQgKiBibG9jayk7DQorICAgIHZvaWQgKCpkZWNyeXB0KSAoQUVTQ29udGV4dCAqIGN0eCwgdW5zaWduZWQgaW50ICogYmxvY2spOw0KKyAgICB1bnNpZ25lZCBpbnQgaXZbTUFYX05CXTsNCisgICAgaW50IE5iLCBOcjsNCit9Ow0KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFNib3hbMjU2XSA9IHsNCisgICAgMHg2MywgMHg3YywgMHg3NywgMHg3YiwgMHhmMiwgMHg2YiwgMHg2ZiwgMHhjNSwNCisgICAgMHgzMCwgMHgwMSwgMHg2NywgMHgyYiwgMHhmZSwgMHhkNywgMHhhYiwgMHg3NiwNCisgICAgMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMCwNCisgICAgMHhhZCwgMHhkNCwgMHhhMiwgMHhhZiwgMHg5YywgMHhhNCwgMHg3MiwgMHhjMCwNCisgICAgMHhiNywgMHhmZCwgMHg5MywgMHgyNiwgMHgzNiwgMHgzZiwgMHhmNywgMHhjYywNCisgICAgMHgzNCwgMHhhNSwgMHhlNSwgMHhmMSwgMHg3MSwgMHhkOCwgMHgzMSwgMHgxNSwNCisgICAgMHgwNCwgMHhjNywgMHgyMywgMHhjMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5YSwNCisgICAgMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwgMHhlYiwgMHgyNywgMHhiMiwgMHg3NSwNCisgICAgMHgwOSwgMHg4MywgMHgyYywgMHgxYSwgMHgxYiwgMHg2ZSwgMHg1YSwgMHhhMCwNCisgICAgMHg1MiwgMHgzYiwgMHhkNiwgMHhiMywgMHgyOSwgMHhlMywgMHgyZiwgMHg4NCwNCisgICAgMHg1MywgMHhkMSwgMHgwMCwgMHhlZCwgMHgyMCwgMHhmYywgMHhiMSwgMHg1YiwNCisgICAgMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZiwNCisgICAgMHhkMCwgMHhlZiwgMHhhYSwgMHhmYiwgMHg0MywgMHg0ZCwgMHgzMywgMHg4NSwNCisgICAgMHg0NSwgMHhmOSwgMHgwMiwgMHg3ZiwgMHg1MCwgMHgzYywgMHg5ZiwgMHhhOCwNCisgICAgMHg1MSwgMHhhMywgMHg0MCwgMHg4ZiwgMHg5MiwgMHg5ZCwgMHgzOCwgMHhmNSwNCisgICAgMHhiYywgMHhiNiwgMHhkYSwgMHgyMSwgMHgxMCwgMHhmZiwgMHhmMywgMHhkMiwNCisgICAgMHhjZCwgMHgwYywgMHgxMywgMHhlYywgMHg1ZiwgMHg5NywgMHg0NCwgMHgxNywNCisgICAgMHhjNCwgMHhhNywgMHg3ZSwgMHgzZCwgMHg2NCwgMHg1ZCwgMHgxOSwgMHg3MywNCisgICAgMHg2MCwgMHg4MSwgMHg0ZiwgMHhkYywgMHgyMiwgMHgyYSwgMHg5MCwgMHg4OCwNCisgICAgMHg0NiwgMHhlZSwgMHhiOCwgMHgxNCwgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYiwNCisgICAgMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1YywNCisgICAgMHhjMiwgMHhkMywgMHhhYywgMHg2MiwgMHg5MSwgMHg5NSwgMHhlNCwgMHg3OSwNCisgICAgMHhlNywgMHhjOCwgMHgzNywgMHg2ZCwgMHg4ZCwgMHhkNSwgMHg0ZSwgMHhhOSwNCisgICAgMHg2YywgMHg1NiwgMHhmNCwgMHhlYSwgMHg2NSwgMHg3YSwgMHhhZSwgMHgwOCwNCisgICAgMHhiYSwgMHg3OCwgMHgyNSwgMHgyZSwgMHgxYywgMHhhNiwgMHhiNCwgMHhjNiwNCisgICAgMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwgMHg0YiwgMHhiZCwgMHg4YiwgMHg4YSwNCisgICAgMHg3MCwgMHgzZSwgMHhiNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhmNiwgMHgwZSwNCisgICAgMHg2MSwgMHgzNSwgMHg1NywgMHhiOSwgMHg4NiwgMHhjMSwgMHgxZCwgMHg5ZSwNCisgICAgMHhlMSwgMHhmOCwgMHg5OCwgMHgxMSwgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NCwNCisgICAgMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZiwNCisgICAgMHg4YywgMHhhMSwgMHg4OSwgMHgwZCwgMHhiZiwgMHhlNiwgMHg0MiwgMHg2OCwNCisgICAgMHg0MSwgMHg5OSwgMHgyZCwgMHgwZiwgMHhiMCwgMHg1NCwgMHhiYiwgMHgxNg0KK307DQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgU2JveGludlsyNTZdID0gew0KKyAgICAweDUyLCAweDA5LCAweDZhLCAweGQ1LCAweDMwLCAweDM2LCAweGE1LCAweDM4LA0KKyAgICAweGJmLCAweDQwLCAweGEzLCAweDllLCAweDgxLCAweGYzLCAweGQ3LCAweGZiLA0KKyAgICAweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3LA0KKyAgICAweDM0LCAweDhlLCAweDQzLCAweDQ0LCAweGM0LCAweGRlLCAweGU5LCAweGNiLA0KKyAgICAweDU0LCAweDdiLCAweDk0LCAweDMyLCAweGE2LCAweGMyLCAweDIzLCAweDNkLA0KKyAgICAweGVlLCAweDRjLCAweDk1LCAweDBiLCAweDQyLCAweGZhLCAweGMzLCAweDRlLA0KKyAgICAweDA4LCAweDJlLCAweGExLCAweDY2LCAweDI4LCAweGQ5LCAweDI0LCAweGIyLA0KKyAgICAweDc2LCAweDViLCAweGEyLCAweDQ5LCAweDZkLCAweDhiLCAweGQxLCAweDI1LA0KKyAgICAweDcyLCAweGY4LCAweGY2LCAweDY0LCAweDg2LCAweDY4LCAweDk4LCAweDE2LA0KKyAgICAweGQ0LCAweGE0LCAweDVjLCAweGNjLCAweDVkLCAweDY1LCAweGI2LCAweDkyLA0KKyAgICAweDZjLCAweDcwLCAweDQ4LCAweDUwLCAweGZkLCAweGVkLCAweGI5LCAweGRhLA0KKyAgICAweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0LA0KKyAgICAweDkwLCAweGQ4LCAweGFiLCAweDAwLCAweDhjLCAweGJjLCAweGQzLCAweDBhLA0KKyAgICAweGY3LCAweGU0LCAweDU4LCAweDA1LCAweGI4LCAweGIzLCAweDQ1LCAweDA2LA0KKyAgICAweGQwLCAweDJjLCAweDFlLCAweDhmLCAweGNhLCAweDNmLCAweDBmLCAweDAyLA0KKyAgICAweGMxLCAweGFmLCAweGJkLCAweDAzLCAweDAxLCAweDEzLCAweDhhLCAweDZiLA0KKyAgICAweDNhLCAweDkxLCAweDExLCAweDQxLCAweDRmLCAweDY3LCAweGRjLCAweGVhLA0KKyAgICAweDk3LCAweGYyLCAweGNmLCAweGNlLCAweGYwLCAweGI0LCAweGU2LCAweDczLA0KKyAgICAweDk2LCAweGFjLCAweDc0LCAweDIyLCAweGU3LCAweGFkLCAweDM1LCAweDg1LA0KKyAgICAweGUyLCAweGY5LCAweDM3LCAweGU4LCAweDFjLCAweDc1LCAweGRmLCAweDZlLA0KKyAgICAweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5LA0KKyAgICAweDZmLCAweGI3LCAweDYyLCAweDBlLCAweGFhLCAweDE4LCAweGJlLCAweDFiLA0KKyAgICAweGZjLCAweDU2LCAweDNlLCAweDRiLCAweGM2LCAweGQyLCAweDc5LCAweDIwLA0KKyAgICAweDlhLCAweGRiLCAweGMwLCAweGZlLCAweDc4LCAweGNkLCAweDVhLCAweGY0LA0KKyAgICAweDFmLCAweGRkLCAweGE4LCAweDMzLCAweDg4LCAweDA3LCAweGM3LCAweDMxLA0KKyAgICAweGIxLCAweDEyLCAweDEwLCAweDU5LCAweDI3LCAweDgwLCAweGVjLCAweDVmLA0KKyAgICAweDYwLCAweDUxLCAweDdmLCAweGE5LCAweDE5LCAweGI1LCAweDRhLCAweDBkLA0KKyAgICAweDJkLCAweGU1LCAweDdhLCAweDlmLCAweDkzLCAweGM5LCAweDljLCAweGVmLA0KKyAgICAweGEwLCAweGUwLCAweDNiLCAweDRkLCAweGFlLCAweDJhLCAweGY1LCAweGIwLA0KKyAgICAweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxLA0KKyAgICAweDE3LCAweDJiLCAweDA0LCAweDdlLCAweGJhLCAweDc3LCAweGQ2LCAweDI2LA0KKyAgICAweGUxLCAweDY5LCAweDE0LCAweDYzLCAweDU1LCAweDIxLCAweDBjLCAweDdkDQorfTsNCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IEUwWzI1Nl0gPSB7DQorICAgIDB4YzY2MzYzYTUsIDB4Zjg3YzdjODQsIDB4ZWU3Nzc3OTksIDB4ZjY3YjdiOGQsDQorICAgIDB4ZmZmMmYyMGQsIDB4ZDY2YjZiYmQsIDB4ZGU2ZjZmYjEsIDB4OTFjNWM1NTQsDQorICAgIDB4NjAzMDMwNTAsIDB4MDIwMTAxMDMsIDB4Y2U2NzY3YTksIDB4NTYyYjJiN2QsDQorICAgIDB4ZTdmZWZlMTksIDB4YjVkN2Q3NjIsIDB4NGRhYmFiZTYsIDB4ZWM3Njc2OWEsDQorICAgIDB4OGZjYWNhNDUsIDB4MWY4MjgyOWQsIDB4ODljOWM5NDAsIDB4ZmE3ZDdkODcsDQorICAgIDB4ZWZmYWZhMTUsIDB4YjI1OTU5ZWIsIDB4OGU0NzQ3YzksIDB4ZmJmMGYwMGIsDQorICAgIDB4NDFhZGFkZWMsIDB4YjNkNGQ0NjcsIDB4NWZhMmEyZmQsIDB4NDVhZmFmZWEsDQorICAgIDB4MjM5YzljYmYsIDB4NTNhNGE0ZjcsIDB4ZTQ3MjcyOTYsIDB4OWJjMGMwNWIsDQorICAgIDB4NzViN2I3YzIsIDB4ZTFmZGZkMWMsIDB4M2Q5MzkzYWUsIDB4NGMyNjI2NmEsDQorICAgIDB4NmMzNjM2NWEsIDB4N2UzZjNmNDEsIDB4ZjVmN2Y3MDIsIDB4ODNjY2NjNGYsDQorICAgIDB4NjgzNDM0NWMsIDB4NTFhNWE1ZjQsIDB4ZDFlNWU1MzQsIDB4ZjlmMWYxMDgsDQorICAgIDB4ZTI3MTcxOTMsIDB4YWJkOGQ4NzMsIDB4NjIzMTMxNTMsIDB4MmExNTE1M2YsDQorICAgIDB4MDgwNDA0MGMsIDB4OTVjN2M3NTIsIDB4NDYyMzIzNjUsIDB4OWRjM2MzNWUsDQorICAgIDB4MzAxODE4MjgsIDB4Mzc5Njk2YTEsIDB4MGEwNTA1MGYsIDB4MmY5YTlhYjUsDQorICAgIDB4MGUwNzA3MDksIDB4MjQxMjEyMzYsIDB4MWI4MDgwOWIsIDB4ZGZlMmUyM2QsDQorICAgIDB4Y2RlYmViMjYsIDB4NGUyNzI3NjksIDB4N2ZiMmIyY2QsIDB4ZWE3NTc1OWYsDQorICAgIDB4MTIwOTA5MWIsIDB4MWQ4MzgzOWUsIDB4NTgyYzJjNzQsIDB4MzQxYTFhMmUsDQorICAgIDB4MzYxYjFiMmQsIDB4ZGM2ZTZlYjIsIDB4YjQ1YTVhZWUsIDB4NWJhMGEwZmIsDQorICAgIDB4YTQ1MjUyZjYsIDB4NzYzYjNiNGQsIDB4YjdkNmQ2NjEsIDB4N2RiM2IzY2UsDQorICAgIDB4NTIyOTI5N2IsIDB4ZGRlM2UzM2UsIDB4NWUyZjJmNzEsIDB4MTM4NDg0OTcsDQorICAgIDB4YTY1MzUzZjUsIDB4YjlkMWQxNjgsIDB4MDAwMDAwMDAsIDB4YzFlZGVkMmMsDQorICAgIDB4NDAyMDIwNjAsIDB4ZTNmY2ZjMWYsIDB4NzliMWIxYzgsIDB4YjY1YjViZWQsDQorICAgIDB4ZDQ2YTZhYmUsIDB4OGRjYmNiNDYsIDB4NjdiZWJlZDksIDB4NzIzOTM5NGIsDQorICAgIDB4OTQ0YTRhZGUsIDB4OTg0YzRjZDQsIDB4YjA1ODU4ZTgsIDB4ODVjZmNmNGEsDQorICAgIDB4YmJkMGQwNmIsIDB4YzVlZmVmMmEsIDB4NGZhYWFhZTUsIDB4ZWRmYmZiMTYsDQorICAgIDB4ODY0MzQzYzUsIDB4OWE0ZDRkZDcsIDB4NjYzMzMzNTUsIDB4MTE4NTg1OTQsDQorICAgIDB4OGE0NTQ1Y2YsIDB4ZTlmOWY5MTAsIDB4MDQwMjAyMDYsIDB4ZmU3ZjdmODEsDQorICAgIDB4YTA1MDUwZjAsIDB4NzgzYzNjNDQsIDB4MjU5ZjlmYmEsIDB4NGJhOGE4ZTMsDQorICAgIDB4YTI1MTUxZjMsIDB4NWRhM2EzZmUsIDB4ODA0MDQwYzAsIDB4MDU4ZjhmOGEsDQorICAgIDB4M2Y5MjkyYWQsIDB4MjE5ZDlkYmMsIDB4NzAzODM4NDgsIDB4ZjFmNWY1MDQsDQorICAgIDB4NjNiY2JjZGYsIDB4NzdiNmI2YzEsIDB4YWZkYWRhNzUsIDB4NDIyMTIxNjMsDQorICAgIDB4MjAxMDEwMzAsIDB4ZTVmZmZmMWEsIDB4ZmRmM2YzMGUsIDB4YmZkMmQyNmQsDQorICAgIDB4ODFjZGNkNGMsIDB4MTgwYzBjMTQsIDB4MjYxMzEzMzUsIDB4YzNlY2VjMmYsDQorICAgIDB4YmU1ZjVmZTEsIDB4MzU5Nzk3YTIsIDB4ODg0NDQ0Y2MsIDB4MmUxNzE3MzksDQorICAgIDB4OTNjNGM0NTcsIDB4NTVhN2E3ZjIsIDB4ZmM3ZTdlODIsIDB4N2EzZDNkNDcsDQorICAgIDB4Yzg2NDY0YWMsIDB4YmE1ZDVkZTcsIDB4MzIxOTE5MmIsIDB4ZTY3MzczOTUsDQorICAgIDB4YzA2MDYwYTAsIDB4MTk4MTgxOTgsIDB4OWU0ZjRmZDEsIDB4YTNkY2RjN2YsDQorICAgIDB4NDQyMjIyNjYsIDB4NTQyYTJhN2UsIDB4M2I5MDkwYWIsIDB4MGI4ODg4ODMsDQorICAgIDB4OGM0NjQ2Y2EsIDB4YzdlZWVlMjksIDB4NmJiOGI4ZDMsIDB4MjgxNDE0M2MsDQorICAgIDB4YTdkZWRlNzksIDB4YmM1ZTVlZTIsIDB4MTYwYjBiMWQsIDB4YWRkYmRiNzYsDQorICAgIDB4ZGJlMGUwM2IsIDB4NjQzMjMyNTYsIDB4NzQzYTNhNGUsIDB4MTQwYTBhMWUsDQorICAgIDB4OTI0OTQ5ZGIsIDB4MGMwNjA2MGEsIDB4NDgyNDI0NmMsIDB4Yjg1YzVjZTQsDQorICAgIDB4OWZjMmMyNWQsIDB4YmRkM2QzNmUsIDB4NDNhY2FjZWYsIDB4YzQ2MjYyYTYsDQorICAgIDB4Mzk5MTkxYTgsIDB4MzE5NTk1YTQsIDB4ZDNlNGU0MzcsIDB4ZjI3OTc5OGIsDQorICAgIDB4ZDVlN2U3MzIsIDB4OGJjOGM4NDMsIDB4NmUzNzM3NTksIDB4ZGE2ZDZkYjcsDQorICAgIDB4MDE4ZDhkOGMsIDB4YjFkNWQ1NjQsIDB4OWM0ZTRlZDIsIDB4NDlhOWE5ZTAsDQorICAgIDB4ZDg2YzZjYjQsIDB4YWM1NjU2ZmEsIDB4ZjNmNGY0MDcsIDB4Y2ZlYWVhMjUsDQorICAgIDB4Y2E2NTY1YWYsIDB4ZjQ3YTdhOGUsIDB4NDdhZWFlZTksIDB4MTAwODA4MTgsDQorICAgIDB4NmZiYWJhZDUsIDB4ZjA3ODc4ODgsIDB4NGEyNTI1NmYsIDB4NWMyZTJlNzIsDQorICAgIDB4MzgxYzFjMjQsIDB4NTdhNmE2ZjEsIDB4NzNiNGI0YzcsIDB4OTdjNmM2NTEsDQorICAgIDB4Y2JlOGU4MjMsIDB4YTFkZGRkN2MsIDB4ZTg3NDc0OWMsIDB4M2UxZjFmMjEsDQorICAgIDB4OTY0YjRiZGQsIDB4NjFiZGJkZGMsIDB4MGQ4YjhiODYsIDB4MGY4YThhODUsDQorICAgIDB4ZTA3MDcwOTAsIDB4N2MzZTNlNDIsIDB4NzFiNWI1YzQsIDB4Y2M2NjY2YWEsDQorICAgIDB4OTA0ODQ4ZDgsIDB4MDYwMzAzMDUsIDB4ZjdmNmY2MDEsIDB4MWMwZTBlMTIsDQorICAgIDB4YzI2MTYxYTMsIDB4NmEzNTM1NWYsIDB4YWU1NzU3ZjksIDB4NjliOWI5ZDAsDQorICAgIDB4MTc4Njg2OTEsIDB4OTljMWMxNTgsIDB4M2ExZDFkMjcsIDB4Mjc5ZTllYjksDQorICAgIDB4ZDllMWUxMzgsIDB4ZWJmOGY4MTMsIDB4MmI5ODk4YjMsIDB4MjIxMTExMzMsDQorICAgIDB4ZDI2OTY5YmIsIDB4YTlkOWQ5NzAsIDB4MDc4ZThlODksIDB4MzM5NDk0YTcsDQorICAgIDB4MmQ5YjliYjYsIDB4M2MxZTFlMjIsIDB4MTU4Nzg3OTIsIDB4YzllOWU5MjAsDQorICAgIDB4ODdjZWNlNDksIDB4YWE1NTU1ZmYsIDB4NTAyODI4NzgsIDB4YTVkZmRmN2EsDQorICAgIDB4MDM4YzhjOGYsIDB4NTlhMWExZjgsIDB4MDk4OTg5ODAsIDB4MWEwZDBkMTcsDQorICAgIDB4NjViZmJmZGEsIDB4ZDdlNmU2MzEsIDB4ODQ0MjQyYzYsIDB4ZDA2ODY4YjgsDQorICAgIDB4ODI0MTQxYzMsIDB4Mjk5OTk5YjAsIDB4NWEyZDJkNzcsIDB4MWUwZjBmMTEsDQorICAgIDB4N2JiMGIwY2IsIDB4YTg1NDU0ZmMsIDB4NmRiYmJiZDYsIDB4MmMxNjE2M2EsDQorfTsNCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IEUxWzI1Nl0gPSB7DQorICAgIDB4YTVjNjYzNjMsIDB4ODRmODdjN2MsIDB4OTllZTc3NzcsIDB4OGRmNjdiN2IsDQorICAgIDB4MGRmZmYyZjIsIDB4YmRkNjZiNmIsIDB4YjFkZTZmNmYsIDB4NTQ5MWM1YzUsDQorICAgIDB4NTA2MDMwMzAsIDB4MDMwMjAxMDEsIDB4YTljZTY3NjcsIDB4N2Q1NjJiMmIsDQorICAgIDB4MTllN2ZlZmUsIDB4NjJiNWQ3ZDcsIDB4ZTY0ZGFiYWIsIDB4OWFlYzc2NzYsDQorICAgIDB4NDU4ZmNhY2EsIDB4OWQxZjgyODIsIDB4NDA4OWM5YzksIDB4ODdmYTdkN2QsDQorICAgIDB4MTVlZmZhZmEsIDB4ZWJiMjU5NTksIDB4Yzk4ZTQ3NDcsIDB4MGJmYmYwZjAsDQorICAgIDB4ZWM0MWFkYWQsIDB4NjdiM2Q0ZDQsIDB4ZmQ1ZmEyYTIsIDB4ZWE0NWFmYWYsDQorICAgIDB4YmYyMzljOWMsIDB4Zjc1M2E0YTQsIDB4OTZlNDcyNzIsIDB4NWI5YmMwYzAsDQorICAgIDB4YzI3NWI3YjcsIDB4MWNlMWZkZmQsIDB4YWUzZDkzOTMsIDB4NmE0YzI2MjYsDQorICAgIDB4NWE2YzM2MzYsIDB4NDE3ZTNmM2YsIDB4MDJmNWY3ZjcsIDB4NGY4M2NjY2MsDQorICAgIDB4NWM2ODM0MzQsIDB4ZjQ1MWE1YTUsIDB4MzRkMWU1ZTUsIDB4MDhmOWYxZjEsDQorICAgIDB4OTNlMjcxNzEsIDB4NzNhYmQ4ZDgsIDB4NTM2MjMxMzEsIDB4M2YyYTE1MTUsDQorICAgIDB4MGMwODA0MDQsIDB4NTI5NWM3YzcsIDB4NjU0NjIzMjMsIDB4NWU5ZGMzYzMsDQorICAgIDB4MjgzMDE4MTgsIDB4YTEzNzk2OTYsIDB4MGYwYTA1MDUsIDB4YjUyZjlhOWEsDQorICAgIDB4MDkwZTA3MDcsIDB4MzYyNDEyMTIsIDB4OWIxYjgwODAsIDB4M2RkZmUyZTIsDQorICAgIDB4MjZjZGViZWIsIDB4Njk0ZTI3MjcsIDB4Y2Q3ZmIyYjIsIDB4OWZlYTc1NzUsDQorICAgIDB4MWIxMjA5MDksIDB4OWUxZDgzODMsIDB4NzQ1ODJjMmMsIDB4MmUzNDFhMWEsDQorICAgIDB4MmQzNjFiMWIsIDB4YjJkYzZlNmUsIDB4ZWViNDVhNWEsIDB4ZmI1YmEwYTAsDQorICAgIDB4ZjZhNDUyNTIsIDB4NGQ3NjNiM2IsIDB4NjFiN2Q2ZDYsIDB4Y2U3ZGIzYjMsDQorICAgIDB4N2I1MjI5MjksIDB4M2VkZGUzZTMsIDB4NzE1ZTJmMmYsIDB4OTcxMzg0ODQsDQorICAgIDB4ZjVhNjUzNTMsIDB4NjhiOWQxZDEsIDB4MDAwMDAwMDAsIDB4MmNjMWVkZWQsDQorICAgIDB4NjA0MDIwMjAsIDB4MWZlM2ZjZmMsIDB4Yzg3OWIxYjEsIDB4ZWRiNjViNWIsDQorICAgIDB4YmVkNDZhNmEsIDB4NDY4ZGNiY2IsIDB4ZDk2N2JlYmUsIDB4NGI3MjM5MzksDQorICAgIDB4ZGU5NDRhNGEsIDB4ZDQ5ODRjNGMsIDB4ZThiMDU4NTgsIDB4NGE4NWNmY2YsDQorICAgIDB4NmJiYmQwZDAsIDB4MmFjNWVmZWYsIDB4ZTU0ZmFhYWEsIDB4MTZlZGZiZmIsDQorICAgIDB4YzU4NjQzNDMsIDB4ZDc5YTRkNGQsIDB4NTU2NjMzMzMsIDB4OTQxMTg1ODUsDQorICAgIDB4Y2Y4YTQ1NDUsIDB4MTBlOWY5ZjksIDB4MDYwNDAyMDIsIDB4ODFmZTdmN2YsDQorICAgIDB4ZjBhMDUwNTAsIDB4NDQ3ODNjM2MsIDB4YmEyNTlmOWYsIDB4ZTM0YmE4YTgsDQorICAgIDB4ZjNhMjUxNTEsIDB4ZmU1ZGEzYTMsIDB4YzA4MDQwNDAsIDB4OGEwNThmOGYsDQorICAgIDB4YWQzZjkyOTIsIDB4YmMyMTlkOWQsIDB4NDg3MDM4MzgsIDB4MDRmMWY1ZjUsDQorICAgIDB4ZGY2M2JjYmMsIDB4YzE3N2I2YjYsIDB4NzVhZmRhZGEsIDB4NjM0MjIxMjEsDQorICAgIDB4MzAyMDEwMTAsIDB4MWFlNWZmZmYsIDB4MGVmZGYzZjMsIDB4NmRiZmQyZDIsDQorICAgIDB4NGM4MWNkY2QsIDB4MTQxODBjMGMsIDB4MzUyNjEzMTMsIDB4MmZjM2VjZWMsDQorICAgIDB4ZTFiZTVmNWYsIDB4YTIzNTk3OTcsIDB4Y2M4ODQ0NDQsIDB4MzkyZTE3MTcsDQorICAgIDB4NTc5M2M0YzQsIDB4ZjI1NWE3YTcsIDB4ODJmYzdlN2UsIDB4NDc3YTNkM2QsDQorICAgIDB4YWNjODY0NjQsIDB4ZTdiYTVkNWQsIDB4MmIzMjE5MTksIDB4OTVlNjczNzMsDQorICAgIDB4YTBjMDYwNjAsIDB4OTgxOTgxODEsIDB4ZDE5ZTRmNGYsIDB4N2ZhM2RjZGMsDQorICAgIDB4NjY0NDIyMjIsIDB4N2U1NDJhMmEsIDB4YWIzYjkwOTAsIDB4ODMwYjg4ODgsDQorICAgIDB4Y2E4YzQ2NDYsIDB4MjljN2VlZWUsIDB4ZDM2YmI4YjgsIDB4M2MyODE0MTQsDQorICAgIDB4NzlhN2RlZGUsIDB4ZTJiYzVlNWUsIDB4MWQxNjBiMGIsIDB4NzZhZGRiZGIsDQorICAgIDB4M2JkYmUwZTAsIDB4NTY2NDMyMzIsIDB4NGU3NDNhM2EsIDB4MWUxNDBhMGEsDQorICAgIDB4ZGI5MjQ5NDksIDB4MGEwYzA2MDYsIDB4NmM0ODI0MjQsIDB4ZTRiODVjNWMsDQorICAgIDB4NWQ5ZmMyYzIsIDB4NmViZGQzZDMsIDB4ZWY0M2FjYWMsIDB4YTZjNDYyNjIsDQorICAgIDB4YTgzOTkxOTEsIDB4YTQzMTk1OTUsIDB4MzdkM2U0ZTQsIDB4OGJmMjc5NzksDQorICAgIDB4MzJkNWU3ZTcsIDB4NDM4YmM4YzgsIDB4NTk2ZTM3MzcsIDB4YjdkYTZkNmQsDQorICAgIDB4OGMwMThkOGQsIDB4NjRiMWQ1ZDUsIDB4ZDI5YzRlNGUsIDB4ZTA0OWE5YTksDQorICAgIDB4YjRkODZjNmMsIDB4ZmFhYzU2NTYsIDB4MDdmM2Y0ZjQsIDB4MjVjZmVhZWEsDQorICAgIDB4YWZjYTY1NjUsIDB4OGVmNDdhN2EsIDB4ZTk0N2FlYWUsIDB4MTgxMDA4MDgsDQorICAgIDB4ZDU2ZmJhYmEsIDB4ODhmMDc4NzgsIDB4NmY0YTI1MjUsIDB4NzI1YzJlMmUsDQorICAgIDB4MjQzODFjMWMsIDB4ZjE1N2E2YTYsIDB4Yzc3M2I0YjQsIDB4NTE5N2M2YzYsDQorICAgIDB4MjNjYmU4ZTgsIDB4N2NhMWRkZGQsIDB4OWNlODc0NzQsIDB4MjEzZTFmMWYsDQorICAgIDB4ZGQ5NjRiNGIsIDB4ZGM2MWJkYmQsIDB4ODYwZDhiOGIsIDB4ODUwZjhhOGEsDQorICAgIDB4OTBlMDcwNzAsIDB4NDI3YzNlM2UsIDB4YzQ3MWI1YjUsIDB4YWFjYzY2NjYsDQorICAgIDB4ZDg5MDQ4NDgsIDB4MDUwNjAzMDMsIDB4MDFmN2Y2ZjYsIDB4MTIxYzBlMGUsDQorICAgIDB4YTNjMjYxNjEsIDB4NWY2YTM1MzUsIDB4ZjlhZTU3NTcsIDB4ZDA2OWI5YjksDQorICAgIDB4OTExNzg2ODYsIDB4NTg5OWMxYzEsIDB4MjczYTFkMWQsIDB4YjkyNzllOWUsDQorICAgIDB4MzhkOWUxZTEsIDB4MTNlYmY4ZjgsIDB4YjMyYjk4OTgsIDB4MzMyMjExMTEsDQorICAgIDB4YmJkMjY5NjksIDB4NzBhOWQ5ZDksIDB4ODkwNzhlOGUsIDB4YTczMzk0OTQsDQorICAgIDB4YjYyZDliOWIsIDB4MjIzYzFlMWUsIDB4OTIxNTg3ODcsIDB4MjBjOWU5ZTksDQorICAgIDB4NDk4N2NlY2UsIDB4ZmZhYTU1NTUsIDB4Nzg1MDI4MjgsIDB4N2FhNWRmZGYsDQorICAgIDB4OGYwMzhjOGMsIDB4Zjg1OWExYTEsIDB4ODAwOTg5ODksIDB4MTcxYTBkMGQsDQorICAgIDB4ZGE2NWJmYmYsIDB4MzFkN2U2ZTYsIDB4YzY4NDQyNDIsIDB4YjhkMDY4NjgsDQorICAgIDB4YzM4MjQxNDEsIDB4YjAyOTk5OTksIDB4Nzc1YTJkMmQsIDB4MTExZTBmMGYsDQorICAgIDB4Y2I3YmIwYjAsIDB4ZmNhODU0NTQsIDB4ZDY2ZGJiYmIsIDB4M2EyYzE2MTYsDQorfTsNCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IEUyWzI1Nl0gPSB7DQorICAgIDB4NjNhNWM2NjMsIDB4N2M4NGY4N2MsIDB4Nzc5OWVlNzcsIDB4N2I4ZGY2N2IsDQorICAgIDB4ZjIwZGZmZjIsIDB4NmJiZGQ2NmIsIDB4NmZiMWRlNmYsIDB4YzU1NDkxYzUsDQorICAgIDB4MzA1MDYwMzAsIDB4MDEwMzAyMDEsIDB4NjdhOWNlNjcsIDB4MmI3ZDU2MmIsDQorICAgIDB4ZmUxOWU3ZmUsIDB4ZDc2MmI1ZDcsIDB4YWJlNjRkYWIsIDB4NzY5YWVjNzYsDQorICAgIDB4Y2E0NThmY2EsIDB4ODI5ZDFmODIsIDB4Yzk0MDg5YzksIDB4N2Q4N2ZhN2QsDQorICAgIDB4ZmExNWVmZmEsIDB4NTllYmIyNTksIDB4NDdjOThlNDcsIDB4ZjAwYmZiZjAsDQorICAgIDB4YWRlYzQxYWQsIDB4ZDQ2N2IzZDQsIDB4YTJmZDVmYTIsIDB4YWZlYTQ1YWYsDQorICAgIDB4OWNiZjIzOWMsIDB4YTRmNzUzYTQsIDB4NzI5NmU0NzIsIDB4YzA1YjliYzAsDQorICAgIDB4YjdjMjc1YjcsIDB4ZmQxY2UxZmQsIDB4OTNhZTNkOTMsIDB4MjY2YTRjMjYsDQorICAgIDB4MzY1YTZjMzYsIDB4M2Y0MTdlM2YsIDB4ZjcwMmY1ZjcsIDB4Y2M0ZjgzY2MsDQorICAgIDB4MzQ1YzY4MzQsIDB4YTVmNDUxYTUsIDB4ZTUzNGQxZTUsIDB4ZjEwOGY5ZjEsDQorICAgIDB4NzE5M2UyNzEsIDB4ZDg3M2FiZDgsIDB4MzE1MzYyMzEsIDB4MTUzZjJhMTUsDQorICAgIDB4MDQwYzA4MDQsIDB4Yzc1Mjk1YzcsIDB4MjM2NTQ2MjMsIDB4YzM1ZTlkYzMsDQorICAgIDB4MTgyODMwMTgsIDB4OTZhMTM3OTYsIDB4MDUwZjBhMDUsIDB4OWFiNTJmOWEsDQorICAgIDB4MDcwOTBlMDcsIDB4MTIzNjI0MTIsIDB4ODA5YjFiODAsIDB4ZTIzZGRmZTIsDQorICAgIDB4ZWIyNmNkZWIsIDB4Mjc2OTRlMjcsIDB4YjJjZDdmYjIsIDB4NzU5ZmVhNzUsDQorICAgIDB4MDkxYjEyMDksIDB4ODM5ZTFkODMsIDB4MmM3NDU4MmMsIDB4MWEyZTM0MWEsDQorICAgIDB4MWIyZDM2MWIsIDB4NmViMmRjNmUsIDB4NWFlZWI0NWEsIDB4YTBmYjViYTAsDQorICAgIDB4NTJmNmE0NTIsIDB4M2I0ZDc2M2IsIDB4ZDY2MWI3ZDYsIDB4YjNjZTdkYjMsDQorICAgIDB4Mjk3YjUyMjksIDB4ZTMzZWRkZTMsIDB4MmY3MTVlMmYsIDB4ODQ5NzEzODQsDQorICAgIDB4NTNmNWE2NTMsIDB4ZDE2OGI5ZDEsIDB4MDAwMDAwMDAsIDB4ZWQyY2MxZWQsDQorICAgIDB4MjA2MDQwMjAsIDB4ZmMxZmUzZmMsIDB4YjFjODc5YjEsIDB4NWJlZGI2NWIsDQorICAgIDB4NmFiZWQ0NmEsIDB4Y2I0NjhkY2IsIDB4YmVkOTY3YmUsIDB4Mzk0YjcyMzksDQorICAgIDB4NGFkZTk0NGEsIDB4NGNkNDk4NGMsIDB4NThlOGIwNTgsIDB4Y2Y0YTg1Y2YsDQorICAgIDB4ZDA2YmJiZDAsIDB4ZWYyYWM1ZWYsIDB4YWFlNTRmYWEsIDB4ZmIxNmVkZmIsDQorICAgIDB4NDNjNTg2NDMsIDB4NGRkNzlhNGQsIDB4MzM1NTY2MzMsIDB4ODU5NDExODUsDQorICAgIDB4NDVjZjhhNDUsIDB4ZjkxMGU5ZjksIDB4MDIwNjA0MDIsIDB4N2Y4MWZlN2YsDQorICAgIDB4NTBmMGEwNTAsIDB4M2M0NDc4M2MsIDB4OWZiYTI1OWYsIDB4YThlMzRiYTgsDQorICAgIDB4NTFmM2EyNTEsIDB4YTNmZTVkYTMsIDB4NDBjMDgwNDAsIDB4OGY4YTA1OGYsDQorICAgIDB4OTJhZDNmOTIsIDB4OWRiYzIxOWQsIDB4Mzg0ODcwMzgsIDB4ZjUwNGYxZjUsDQorICAgIDB4YmNkZjYzYmMsIDB4YjZjMTc3YjYsIDB4ZGE3NWFmZGEsIDB4MjE2MzQyMjEsDQorICAgIDB4MTAzMDIwMTAsIDB4ZmYxYWU1ZmYsIDB4ZjMwZWZkZjMsIDB4ZDI2ZGJmZDIsDQorICAgIDB4Y2Q0YzgxY2QsIDB4MGMxNDE4MGMsIDB4MTMzNTI2MTMsIDB4ZWMyZmMzZWMsDQorICAgIDB4NWZlMWJlNWYsIDB4OTdhMjM1OTcsIDB4NDRjYzg4NDQsIDB4MTczOTJlMTcsDQorICAgIDB4YzQ1NzkzYzQsIDB4YTdmMjU1YTcsIDB4N2U4MmZjN2UsIDB4M2Q0NzdhM2QsDQorICAgIDB4NjRhY2M4NjQsIDB4NWRlN2JhNWQsIDB4MTkyYjMyMTksIDB4NzM5NWU2NzMsDQorICAgIDB4NjBhMGMwNjAsIDB4ODE5ODE5ODEsIDB4NGZkMTllNGYsIDB4ZGM3ZmEzZGMsDQorICAgIDB4MjI2NjQ0MjIsIDB4MmE3ZTU0MmEsIDB4OTBhYjNiOTAsIDB4ODg4MzBiODgsDQorICAgIDB4NDZjYThjNDYsIDB4ZWUyOWM3ZWUsIDB4YjhkMzZiYjgsIDB4MTQzYzI4MTQsDQorICAgIDB4ZGU3OWE3ZGUsIDB4NWVlMmJjNWUsIDB4MGIxZDE2MGIsIDB4ZGI3NmFkZGIsDQorICAgIDB4ZTAzYmRiZTAsIDB4MzI1NjY0MzIsIDB4M2E0ZTc0M2EsIDB4MGExZTE0MGEsDQorICAgIDB4NDlkYjkyNDksIDB4MDYwYTBjMDYsIDB4MjQ2YzQ4MjQsIDB4NWNlNGI4NWMsDQorICAgIDB4YzI1ZDlmYzIsIDB4ZDM2ZWJkZDMsIDB4YWNlZjQzYWMsIDB4NjJhNmM0NjIsDQorICAgIDB4OTFhODM5OTEsIDB4OTVhNDMxOTUsIDB4ZTQzN2QzZTQsIDB4Nzk4YmYyNzksDQorICAgIDB4ZTczMmQ1ZTcsIDB4Yzg0MzhiYzgsIDB4Mzc1OTZlMzcsIDB4NmRiN2RhNmQsDQorICAgIDB4OGQ4YzAxOGQsIDB4ZDU2NGIxZDUsIDB4NGVkMjljNGUsIDB4YTllMDQ5YTksDQorICAgIDB4NmNiNGQ4NmMsIDB4NTZmYWFjNTYsIDB4ZjQwN2YzZjQsIDB4ZWEyNWNmZWEsDQorICAgIDB4NjVhZmNhNjUsIDB4N2E4ZWY0N2EsIDB4YWVlOTQ3YWUsIDB4MDgxODEwMDgsDQorICAgIDB4YmFkNTZmYmEsIDB4Nzg4OGYwNzgsIDB4MjU2ZjRhMjUsIDB4MmU3MjVjMmUsDQorICAgIDB4MWMyNDM4MWMsIDB4YTZmMTU3YTYsIDB4YjRjNzczYjQsIDB4YzY1MTk3YzYsDQorICAgIDB4ZTgyM2NiZTgsIDB4ZGQ3Y2ExZGQsIDB4NzQ5Y2U4NzQsIDB4MWYyMTNlMWYsDQorICAgIDB4NGJkZDk2NGIsIDB4YmRkYzYxYmQsIDB4OGI4NjBkOGIsIDB4OGE4NTBmOGEsDQorICAgIDB4NzA5MGUwNzAsIDB4M2U0MjdjM2UsIDB4YjVjNDcxYjUsIDB4NjZhYWNjNjYsDQorICAgIDB4NDhkODkwNDgsIDB4MDMwNTA2MDMsIDB4ZjYwMWY3ZjYsIDB4MGUxMjFjMGUsDQorICAgIDB4NjFhM2MyNjEsIDB4MzU1ZjZhMzUsIDB4NTdmOWFlNTcsIDB4YjlkMDY5YjksDQorICAgIDB4ODY5MTE3ODYsIDB4YzE1ODk5YzEsIDB4MWQyNzNhMWQsIDB4OWViOTI3OWUsDQorICAgIDB4ZTEzOGQ5ZTEsIDB4ZjgxM2ViZjgsIDB4OThiMzJiOTgsIDB4MTEzMzIyMTEsDQorICAgIDB4NjliYmQyNjksIDB4ZDk3MGE5ZDksIDB4OGU4OTA3OGUsIDB4OTRhNzMzOTQsDQorICAgIDB4OWJiNjJkOWIsIDB4MWUyMjNjMWUsIDB4ODc5MjE1ODcsIDB4ZTkyMGM5ZTksDQorICAgIDB4Y2U0OTg3Y2UsIDB4NTVmZmFhNTUsIDB4Mjg3ODUwMjgsIDB4ZGY3YWE1ZGYsDQorICAgIDB4OGM4ZjAzOGMsIDB4YTFmODU5YTEsIDB4ODk4MDA5ODksIDB4MGQxNzFhMGQsDQorICAgIDB4YmZkYTY1YmYsIDB4ZTYzMWQ3ZTYsIDB4NDJjNjg0NDIsIDB4NjhiOGQwNjgsDQorICAgIDB4NDFjMzgyNDEsIDB4OTliMDI5OTksIDB4MmQ3NzVhMmQsIDB4MGYxMTFlMGYsDQorICAgIDB4YjBjYjdiYjAsIDB4NTRmY2E4NTQsIDB4YmJkNjZkYmIsIDB4MTYzYTJjMTYsDQorfTsNCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IEUzWzI1Nl0gPSB7DQorICAgIDB4NjM2M2E1YzYsIDB4N2M3Yzg0ZjgsIDB4Nzc3Nzk5ZWUsIDB4N2I3YjhkZjYsDQorICAgIDB4ZjJmMjBkZmYsIDB4NmI2YmJkZDYsIDB4NmY2ZmIxZGUsIDB4YzVjNTU0OTEsDQorICAgIDB4MzAzMDUwNjAsIDB4MDEwMTAzMDIsIDB4Njc2N2E5Y2UsIDB4MmIyYjdkNTYsDQorICAgIDB4ZmVmZTE5ZTcsIDB4ZDdkNzYyYjUsIDB4YWJhYmU2NGQsIDB4NzY3NjlhZWMsDQorICAgIDB4Y2FjYTQ1OGYsIDB4ODI4MjlkMWYsIDB4YzljOTQwODksIDB4N2Q3ZDg3ZmEsDQorICAgIDB4ZmFmYTE1ZWYsIDB4NTk1OWViYjIsIDB4NDc0N2M5OGUsIDB4ZjBmMDBiZmIsDQorICAgIDB4YWRhZGVjNDEsIDB4ZDRkNDY3YjMsIDB4YTJhMmZkNWYsIDB4YWZhZmVhNDUsDQorICAgIDB4OWM5Y2JmMjMsIDB4YTRhNGY3NTMsIDB4NzI3Mjk2ZTQsIDB4YzBjMDViOWIsDQorICAgIDB4YjdiN2MyNzUsIDB4ZmRmZDFjZTEsIDB4OTM5M2FlM2QsIDB4MjYyNjZhNGMsDQorICAgIDB4MzYzNjVhNmMsIDB4M2YzZjQxN2UsIDB4ZjdmNzAyZjUsIDB4Y2NjYzRmODMsDQorICAgIDB4MzQzNDVjNjgsIDB4YTVhNWY0NTEsIDB4ZTVlNTM0ZDEsIDB4ZjFmMTA4ZjksDQorICAgIDB4NzE3MTkzZTIsIDB4ZDhkODczYWIsIDB4MzEzMTUzNjIsIDB4MTUxNTNmMmEsDQorICAgIDB4MDQwNDBjMDgsIDB4YzdjNzUyOTUsIDB4MjMyMzY1NDYsIDB4YzNjMzVlOWQsDQorICAgIDB4MTgxODI4MzAsIDB4OTY5NmExMzcsIDB4MDUwNTBmMGEsIDB4OWE5YWI1MmYsDQorICAgIDB4MDcwNzA5MGUsIDB4MTIxMjM2MjQsIDB4ODA4MDliMWIsIDB4ZTJlMjNkZGYsDQorICAgIDB4ZWJlYjI2Y2QsIDB4MjcyNzY5NGUsIDB4YjJiMmNkN2YsIDB4NzU3NTlmZWEsDQorICAgIDB4MDkwOTFiMTIsIDB4ODM4MzllMWQsIDB4MmMyYzc0NTgsIDB4MWExYTJlMzQsDQorICAgIDB4MWIxYjJkMzYsIDB4NmU2ZWIyZGMsIDB4NWE1YWVlYjQsIDB4YTBhMGZiNWIsDQorICAgIDB4NTI1MmY2YTQsIDB4M2IzYjRkNzYsIDB4ZDZkNjYxYjcsIDB4YjNiM2NlN2QsDQorICAgIDB4MjkyOTdiNTIsIDB4ZTNlMzNlZGQsIDB4MmYyZjcxNWUsIDB4ODQ4NDk3MTMsDQorICAgIDB4NTM1M2Y1YTYsIDB4ZDFkMTY4YjksIDB4MDAwMDAwMDAsIDB4ZWRlZDJjYzEsDQorICAgIDB4MjAyMDYwNDAsIDB4ZmNmYzFmZTMsIDB4YjFiMWM4NzksIDB4NWI1YmVkYjYsDQorICAgIDB4NmE2YWJlZDQsIDB4Y2JjYjQ2OGQsIDB4YmViZWQ5NjcsIDB4MzkzOTRiNzIsDQorICAgIDB4NGE0YWRlOTQsIDB4NGM0Y2Q0OTgsIDB4NTg1OGU4YjAsIDB4Y2ZjZjRhODUsDQorICAgIDB4ZDBkMDZiYmIsIDB4ZWZlZjJhYzUsIDB4YWFhYWU1NGYsIDB4ZmJmYjE2ZWQsDQorICAgIDB4NDM0M2M1ODYsIDB4NGQ0ZGQ3OWEsIDB4MzMzMzU1NjYsIDB4ODU4NTk0MTEsDQorICAgIDB4NDU0NWNmOGEsIDB4ZjlmOTEwZTksIDB4MDIwMjA2MDQsIDB4N2Y3ZjgxZmUsDQorICAgIDB4NTA1MGYwYTAsIDB4M2MzYzQ0NzgsIDB4OWY5ZmJhMjUsIDB4YThhOGUzNGIsDQorICAgIDB4NTE1MWYzYTIsIDB4YTNhM2ZlNWQsIDB4NDA0MGMwODAsIDB4OGY4ZjhhMDUsDQorICAgIDB4OTI5MmFkM2YsIDB4OWQ5ZGJjMjEsIDB4MzgzODQ4NzAsIDB4ZjVmNTA0ZjEsDQorICAgIDB4YmNiY2RmNjMsIDB4YjZiNmMxNzcsIDB4ZGFkYTc1YWYsIDB4MjEyMTYzNDIsDQorICAgIDB4MTAxMDMwMjAsIDB4ZmZmZjFhZTUsIDB4ZjNmMzBlZmQsIDB4ZDJkMjZkYmYsDQorICAgIDB4Y2RjZDRjODEsIDB4MGMwYzE0MTgsIDB4MTMxMzM1MjYsIDB4ZWNlYzJmYzMsDQorICAgIDB4NWY1ZmUxYmUsIDB4OTc5N2EyMzUsIDB4NDQ0NGNjODgsIDB4MTcxNzM5MmUsDQorICAgIDB4YzRjNDU3OTMsIDB4YTdhN2YyNTUsIDB4N2U3ZTgyZmMsIDB4M2QzZDQ3N2EsDQorICAgIDB4NjQ2NGFjYzgsIDB4NWQ1ZGU3YmEsIDB4MTkxOTJiMzIsIDB4NzM3Mzk1ZTYsDQorICAgIDB4NjA2MGEwYzAsIDB4ODE4MTk4MTksIDB4NGY0ZmQxOWUsIDB4ZGNkYzdmYTMsDQorICAgIDB4MjIyMjY2NDQsIDB4MmEyYTdlNTQsIDB4OTA5MGFiM2IsIDB4ODg4ODgzMGIsDQorICAgIDB4NDY0NmNhOGMsIDB4ZWVlZTI5YzcsIDB4YjhiOGQzNmIsIDB4MTQxNDNjMjgsDQorICAgIDB4ZGVkZTc5YTcsIDB4NWU1ZWUyYmMsIDB4MGIwYjFkMTYsIDB4ZGJkYjc2YWQsDQorICAgIDB4ZTBlMDNiZGIsIDB4MzIzMjU2NjQsIDB4M2EzYTRlNzQsIDB4MGEwYTFlMTQsDQorICAgIDB4NDk0OWRiOTIsIDB4MDYwNjBhMGMsIDB4MjQyNDZjNDgsIDB4NWM1Y2U0YjgsDQorICAgIDB4YzJjMjVkOWYsIDB4ZDNkMzZlYmQsIDB4YWNhY2VmNDMsIDB4NjI2MmE2YzQsDQorICAgIDB4OTE5MWE4MzksIDB4OTU5NWE0MzEsIDB4ZTRlNDM3ZDMsIDB4Nzk3OThiZjIsDQorICAgIDB4ZTdlNzMyZDUsIDB4YzhjODQzOGIsIDB4MzczNzU5NmUsIDB4NmQ2ZGI3ZGEsDQorICAgIDB4OGQ4ZDhjMDEsIDB4ZDVkNTY0YjEsIDB4NGU0ZWQyOWMsIDB4YTlhOWUwNDksDQorICAgIDB4NmM2Y2I0ZDgsIDB4NTY1NmZhYWMsIDB4ZjRmNDA3ZjMsIDB4ZWFlYTI1Y2YsDQorICAgIDB4NjU2NWFmY2EsIDB4N2E3YThlZjQsIDB4YWVhZWU5NDcsIDB4MDgwODE4MTAsDQorICAgIDB4YmFiYWQ1NmYsIDB4Nzg3ODg4ZjAsIDB4MjUyNTZmNGEsIDB4MmUyZTcyNWMsDQorICAgIDB4MWMxYzI0MzgsIDB4YTZhNmYxNTcsIDB4YjRiNGM3NzMsIDB4YzZjNjUxOTcsDQorICAgIDB4ZThlODIzY2IsIDB4ZGRkZDdjYTEsIDB4NzQ3NDljZTgsIDB4MWYxZjIxM2UsDQorICAgIDB4NGI0YmRkOTYsIDB4YmRiZGRjNjEsIDB4OGI4Yjg2MGQsIDB4OGE4YTg1MGYsDQorICAgIDB4NzA3MDkwZTAsIDB4M2UzZTQyN2MsIDB4YjViNWM0NzEsIDB4NjY2NmFhY2MsDQorICAgIDB4NDg0OGQ4OTAsIDB4MDMwMzA1MDYsIDB4ZjZmNjAxZjcsIDB4MGUwZTEyMWMsDQorICAgIDB4NjE2MWEzYzIsIDB4MzUzNTVmNmEsIDB4NTc1N2Y5YWUsIDB4YjliOWQwNjksDQorICAgIDB4ODY4NjkxMTcsIDB4YzFjMTU4OTksIDB4MWQxZDI3M2EsIDB4OWU5ZWI5MjcsDQorICAgIDB4ZTFlMTM4ZDksIDB4ZjhmODEzZWIsIDB4OTg5OGIzMmIsIDB4MTExMTMzMjIsDQorICAgIDB4Njk2OWJiZDIsIDB4ZDlkOTcwYTksIDB4OGU4ZTg5MDcsIDB4OTQ5NGE3MzMsDQorICAgIDB4OWI5YmI2MmQsIDB4MWUxZTIyM2MsIDB4ODc4NzkyMTUsIDB4ZTllOTIwYzksDQorICAgIDB4Y2VjZTQ5ODcsIDB4NTU1NWZmYWEsIDB4MjgyODc4NTAsIDB4ZGZkZjdhYTUsDQorICAgIDB4OGM4YzhmMDMsIDB4YTFhMWY4NTksIDB4ODk4OTgwMDksIDB4MGQwZDE3MWEsDQorICAgIDB4YmZiZmRhNjUsIDB4ZTZlNjMxZDcsIDB4NDI0MmM2ODQsIDB4Njg2OGI4ZDAsDQorICAgIDB4NDE0MWMzODIsIDB4OTk5OWIwMjksIDB4MmQyZDc3NWEsIDB4MGYwZjExMWUsDQorICAgIDB4YjBiMGNiN2IsIDB4NTQ1NGZjYTgsIDB4YmJiYmQ2NmQsIDB4MTYxNjNhMmMsDQorfTsNCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IEQwWzI1Nl0gPSB7DQorICAgIDB4NTFmNGE3NTAsIDB4N2U0MTY1NTMsIDB4MWExN2E0YzMsIDB4M2EyNzVlOTYsDQorICAgIDB4M2JhYjZiY2IsIDB4MWY5ZDQ1ZjEsIDB4YWNmYTU4YWIsIDB4NGJlMzAzOTMsDQorICAgIDB4MjAzMGZhNTUsIDB4YWQ3NjZkZjYsIDB4ODhjYzc2OTEsIDB4ZjUwMjRjMjUsDQorICAgIDB4NGZlNWQ3ZmMsIDB4YzUyYWNiZDcsIDB4MjYzNTQ0ODAsIDB4YjU2MmEzOGYsDQorICAgIDB4ZGViMTVhNDksIDB4MjViYTFiNjcsIDB4NDVlYTBlOTgsIDB4NWRmZWMwZTEsDQorICAgIDB4YzMyZjc1MDIsIDB4ODE0Y2YwMTIsIDB4OGQ0Njk3YTMsIDB4NmJkM2Y5YzYsDQorICAgIDB4MDM4ZjVmZTcsIDB4MTU5MjljOTUsIDB4YmY2ZDdhZWIsIDB4OTU1MjU5ZGEsDQorICAgIDB4ZDRiZTgzMmQsIDB4NTg3NDIxZDMsIDB4NDllMDY5MjksIDB4OGVjOWM4NDQsDQorICAgIDB4NzVjMjg5NmEsIDB4ZjQ4ZTc5NzgsIDB4OTk1ODNlNmIsIDB4MjdiOTcxZGQsDQorICAgIDB4YmVlMTRmYjYsIDB4ZjA4OGFkMTcsIDB4YzkyMGFjNjYsIDB4N2RjZTNhYjQsDQorICAgIDB4NjNkZjRhMTgsIDB4ZTUxYTMxODIsIDB4OTc1MTMzNjAsIDB4NjI1MzdmNDUsDQorICAgIDB4YjE2NDc3ZTAsIDB4YmI2YmFlODQsIDB4ZmU4MWEwMWMsIDB4ZjkwODJiOTQsDQorICAgIDB4NzA0ODY4NTgsIDB4OGY0NWZkMTksIDB4OTRkZTZjODcsIDB4NTI3YmY4YjcsDQorICAgIDB4YWI3M2QzMjMsIDB4NzI0YjAyZTIsIDB4ZTMxZjhmNTcsIDB4NjY1NWFiMmEsDQorICAgIDB4YjJlYjI4MDcsIDB4MmZiNWMyMDMsIDB4ODZjNTdiOWEsIDB4ZDMzNzA4YTUsDQorICAgIDB4MzAyODg3ZjIsIDB4MjNiZmE1YjIsIDB4MDIwMzZhYmEsIDB4ZWQxNjgyNWMsDQorICAgIDB4OGFjZjFjMmIsIDB4YTc3OWI0OTIsIDB4ZjMwN2YyZjAsIDB4NGU2OWUyYTEsDQorICAgIDB4NjVkYWY0Y2QsIDB4MDYwNWJlZDUsIDB4ZDEzNDYyMWYsIDB4YzRhNmZlOGEsDQorICAgIDB4MzQyZTUzOWQsIDB4YTJmMzU1YTAsIDB4MDU4YWUxMzIsIDB4YTRmNmViNzUsDQorICAgIDB4MGI4M2VjMzksIDB4NDA2MGVmYWEsIDB4NWU3MTlmMDYsIDB4YmQ2ZTEwNTEsDQorICAgIDB4M2UyMThhZjksIDB4OTZkZDA2M2QsIDB4ZGQzZTA1YWUsIDB4NGRlNmJkNDYsDQorICAgIDB4OTE1NDhkYjUsIDB4NzFjNDVkMDUsIDB4MDQwNmQ0NmYsIDB4NjA1MDE1ZmYsDQorICAgIDB4MTk5OGZiMjQsIDB4ZDZiZGU5OTcsIDB4ODk0MDQzY2MsIDB4NjdkOTllNzcsDQorICAgIDB4YjBlODQyYmQsIDB4MDc4OThiODgsIDB4ZTcxOTViMzgsIDB4NzljOGVlZGIsDQorICAgIDB4YTE3YzBhNDcsIDB4N2M0MjBmZTksIDB4Zjg4NDFlYzksIDB4MDAwMDAwMDAsDQorICAgIDB4MDk4MDg2ODMsIDB4MzIyYmVkNDgsIDB4MWUxMTcwYWMsIDB4NmM1YTcyNGUsDQorICAgIDB4ZmQwZWZmZmIsIDB4MGY4NTM4NTYsIDB4M2RhZWQ1MWUsIDB4MzYyZDM5MjcsDQorICAgIDB4MGEwZmQ5NjQsIDB4Njg1Y2E2MjEsIDB4OWI1YjU0ZDEsIDB4MjQzNjJlM2EsDQorICAgIDB4MGMwYTY3YjEsIDB4OTM1N2U3MGYsIDB4YjRlZTk2ZDIsIDB4MWI5YjkxOWUsDQorICAgIDB4ODBjMGM1NGYsIDB4NjFkYzIwYTIsIDB4NWE3NzRiNjksIDB4MWMxMjFhMTYsDQorICAgIDB4ZTI5M2JhMGEsIDB4YzBhMDJhZTUsIDB4M2MyMmUwNDMsIDB4MTIxYjE3MWQsDQorICAgIDB4MGUwOTBkMGIsIDB4ZjI4YmM3YWQsIDB4MmRiNmE4YjksIDB4MTQxZWE5YzgsDQorICAgIDB4NTdmMTE5ODUsIDB4YWY3NTA3NGMsIDB4ZWU5OWRkYmIsIDB4YTM3ZjYwZmQsDQorICAgIDB4ZjcwMTI2OWYsIDB4NWM3MmY1YmMsIDB4NDQ2NjNiYzUsIDB4NWJmYjdlMzQsDQorICAgIDB4OGI0MzI5NzYsIDB4Y2IyM2M2ZGMsIDB4YjZlZGZjNjgsIDB4YjhlNGYxNjMsDQorICAgIDB4ZDczMWRjY2EsIDB4NDI2Mzg1MTAsIDB4MTM5NzIyNDAsIDB4ODRjNjExMjAsDQorICAgIDB4ODU0YTI0N2QsIDB4ZDJiYjNkZjgsIDB4YWVmOTMyMTEsIDB4YzcyOWExNmQsDQorICAgIDB4MWQ5ZTJmNGIsIDB4ZGNiMjMwZjMsIDB4MGQ4NjUyZWMsIDB4NzdjMWUzZDAsDQorICAgIDB4MmJiMzE2NmMsIDB4YTk3MGI5OTksIDB4MTE5NDQ4ZmEsIDB4NDdlOTY0MjIsDQorICAgIDB4YThmYzhjYzQsIDB4YTBmMDNmMWEsIDB4NTY3ZDJjZDgsIDB4MjIzMzkwZWYsDQorICAgIDB4ODc0OTRlYzcsIDB4ZDkzOGQxYzEsIDB4OGNjYWEyZmUsIDB4OThkNDBiMzYsDQorICAgIDB4YTZmNTgxY2YsIDB4YTU3YWRlMjgsIDB4ZGFiNzhlMjYsIDB4M2ZhZGJmYTQsDQorICAgIDB4MmMzYTlkZTQsIDB4NTA3ODkyMGQsIDB4NmE1ZmNjOWIsIDB4NTQ3ZTQ2NjIsDQorICAgIDB4ZjY4ZDEzYzIsIDB4OTBkOGI4ZTgsIDB4MmUzOWY3NWUsIDB4ODJjM2FmZjUsDQorICAgIDB4OWY1ZDgwYmUsIDB4NjlkMDkzN2MsIDB4NmZkNTJkYTksIDB4Y2YyNTEyYjMsDQorICAgIDB4YzhhYzk5M2IsIDB4MTAxODdkYTcsIDB4ZTg5YzYzNmUsIDB4ZGIzYmJiN2IsDQorICAgIDB4Y2QyNjc4MDksIDB4NmU1OTE4ZjQsIDB4ZWM5YWI3MDEsIDB4ODM0ZjlhYTgsDQorICAgIDB4ZTY5NTZlNjUsIDB4YWFmZmU2N2UsIDB4MjFiY2NmMDgsIDB4ZWYxNWU4ZTYsDQorICAgIDB4YmFlNzliZDksIDB4NGE2ZjM2Y2UsIDB4ZWE5ZjA5ZDQsIDB4MjliMDdjZDYsDQorICAgIDB4MzFhNGIyYWYsIDB4MmEzZjIzMzEsIDB4YzZhNTk0MzAsIDB4MzVhMjY2YzAsDQorICAgIDB4NzQ0ZWJjMzcsIDB4ZmM4MmNhYTYsIDB4ZTA5MGQwYjAsIDB4MzNhN2Q4MTUsDQorICAgIDB4ZjEwNDk4NGEsIDB4NDFlY2RhZjcsIDB4N2ZjZDUwMGUsIDB4MTc5MWY2MmYsDQorICAgIDB4NzY0ZGQ2OGQsIDB4NDNlZmIwNGQsIDB4Y2NhYTRkNTQsIDB4ZTQ5NjA0ZGYsDQorICAgIDB4OWVkMWI1ZTMsIDB4NGM2YTg4MWIsIDB4YzEyYzFmYjgsIDB4NDY2NTUxN2YsDQorICAgIDB4OWQ1ZWVhMDQsIDB4MDE4YzM1NWQsIDB4ZmE4Nzc0NzMsIDB4ZmIwYjQxMmUsDQorICAgIDB4YjM2NzFkNWEsIDB4OTJkYmQyNTIsIDB4ZTkxMDU2MzMsIDB4NmRkNjQ3MTMsDQorICAgIDB4OWFkNzYxOGMsIDB4MzdhMTBjN2EsIDB4NTlmODE0OGUsIDB4ZWIxMzNjODksDQorICAgIDB4Y2VhOTI3ZWUsIDB4Yjc2MWM5MzUsIDB4ZTExY2U1ZWQsIDB4N2E0N2IxM2MsDQorICAgIDB4OWNkMmRmNTksIDB4NTVmMjczM2YsIDB4MTgxNGNlNzksIDB4NzNjNzM3YmYsDQorICAgIDB4NTNmN2NkZWEsIDB4NWZmZGFhNWIsIDB4ZGYzZDZmMTQsIDB4Nzg0NGRiODYsDQorICAgIDB4Y2FhZmYzODEsIDB4Yjk2OGM0M2UsIDB4MzgyNDM0MmMsIDB4YzJhMzQwNWYsDQorICAgIDB4MTYxZGMzNzIsIDB4YmNlMjI1MGMsIDB4MjgzYzQ5OGIsIDB4ZmYwZDk1NDEsDQorICAgIDB4MzlhODAxNzEsIDB4MDgwY2IzZGUsIDB4ZDhiNGU0OWMsIDB4NjQ1NmMxOTAsDQorICAgIDB4N2JjYjg0NjEsIDB4ZDUzMmI2NzAsIDB4NDg2YzVjNzQsIDB4ZDBiODU3NDIsDQorfTsNCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IEQxWzI1Nl0gPSB7DQorICAgIDB4NTA1MWY0YTcsIDB4NTM3ZTQxNjUsIDB4YzMxYTE3YTQsIDB4OTYzYTI3NWUsDQorICAgIDB4Y2IzYmFiNmIsIDB4ZjExZjlkNDUsIDB4YWJhY2ZhNTgsIDB4OTM0YmUzMDMsDQorICAgIDB4NTUyMDMwZmEsIDB4ZjZhZDc2NmQsIDB4OTE4OGNjNzYsIDB4MjVmNTAyNGMsDQorICAgIDB4ZmM0ZmU1ZDcsIDB4ZDdjNTJhY2IsIDB4ODAyNjM1NDQsIDB4OGZiNTYyYTMsDQorICAgIDB4NDlkZWIxNWEsIDB4NjcyNWJhMWIsIDB4OTg0NWVhMGUsIDB4ZTE1ZGZlYzAsDQorICAgIDB4MDJjMzJmNzUsIDB4MTI4MTRjZjAsIDB4YTM4ZDQ2OTcsIDB4YzY2YmQzZjksDQorICAgIDB4ZTcwMzhmNWYsIDB4OTUxNTkyOWMsIDB4ZWJiZjZkN2EsIDB4ZGE5NTUyNTksDQorICAgIDB4MmRkNGJlODMsIDB4ZDM1ODc0MjEsIDB4Mjk0OWUwNjksIDB4NDQ4ZWM5YzgsDQorICAgIDB4NmE3NWMyODksIDB4NzhmNDhlNzksIDB4NmI5OTU4M2UsIDB4ZGQyN2I5NzEsDQorICAgIDB4YjZiZWUxNGYsIDB4MTdmMDg4YWQsIDB4NjZjOTIwYWMsIDB4YjQ3ZGNlM2EsDQorICAgIDB4MTg2M2RmNGEsIDB4ODJlNTFhMzEsIDB4NjA5NzUxMzMsIDB4NDU2MjUzN2YsDQorICAgIDB4ZTBiMTY0NzcsIDB4ODRiYjZiYWUsIDB4MWNmZTgxYTAsIDB4OTRmOTA4MmIsDQorICAgIDB4NTg3MDQ4NjgsIDB4MTk4ZjQ1ZmQsIDB4ODc5NGRlNmMsIDB4Yjc1MjdiZjgsDQorICAgIDB4MjNhYjczZDMsIDB4ZTI3MjRiMDIsIDB4NTdlMzFmOGYsIDB4MmE2NjU1YWIsDQorICAgIDB4MDdiMmViMjgsIDB4MDMyZmI1YzIsIDB4OWE4NmM1N2IsIDB4YTVkMzM3MDgsDQorICAgIDB4ZjIzMDI4ODcsIDB4YjIyM2JmYTUsIDB4YmEwMjAzNmEsIDB4NWNlZDE2ODIsDQorICAgIDB4MmI4YWNmMWMsIDB4OTJhNzc5YjQsIDB4ZjBmMzA3ZjIsIDB4YTE0ZTY5ZTIsDQorICAgIDB4Y2Q2NWRhZjQsIDB4ZDUwNjA1YmUsIDB4MWZkMTM0NjIsIDB4OGFjNGE2ZmUsDQorICAgIDB4OWQzNDJlNTMsIDB4YTBhMmYzNTUsIDB4MzIwNThhZTEsIDB4NzVhNGY2ZWIsDQorICAgIDB4MzkwYjgzZWMsIDB4YWE0MDYwZWYsIDB4MDY1ZTcxOWYsIDB4NTFiZDZlMTAsDQorICAgIDB4ZjkzZTIxOGEsIDB4M2Q5NmRkMDYsIDB4YWVkZDNlMDUsIDB4NDY0ZGU2YmQsDQorICAgIDB4YjU5MTU0OGQsIDB4MDU3MWM0NWQsIDB4NmYwNDA2ZDQsIDB4ZmY2MDUwMTUsDQorICAgIDB4MjQxOTk4ZmIsIDB4OTdkNmJkZTksIDB4Y2M4OTQwNDMsIDB4Nzc2N2Q5OWUsDQorICAgIDB4YmRiMGU4NDIsIDB4ODgwNzg5OGIsIDB4MzhlNzE5NWIsIDB4ZGI3OWM4ZWUsDQorICAgIDB4NDdhMTdjMGEsIDB4ZTk3YzQyMGYsIDB4YzlmODg0MWUsIDB4MDAwMDAwMDAsDQorICAgIDB4ODMwOTgwODYsIDB4NDgzMjJiZWQsIDB4YWMxZTExNzAsIDB4NGU2YzVhNzIsDQorICAgIDB4ZmJmZDBlZmYsIDB4NTYwZjg1MzgsIDB4MWUzZGFlZDUsIDB4MjczNjJkMzksDQorICAgIDB4NjQwYTBmZDksIDB4MjE2ODVjYTYsIDB4ZDE5YjViNTQsIDB4M2EyNDM2MmUsDQorICAgIDB4YjEwYzBhNjcsIDB4MGY5MzU3ZTcsIDB4ZDJiNGVlOTYsIDB4OWUxYjliOTEsDQorICAgIDB4NGY4MGMwYzUsIDB4YTI2MWRjMjAsIDB4Njk1YTc3NGIsIDB4MTYxYzEyMWEsDQorICAgIDB4MGFlMjkzYmEsIDB4ZTVjMGEwMmEsIDB4NDMzYzIyZTAsIDB4MWQxMjFiMTcsDQorICAgIDB4MGIwZTA5MGQsIDB4YWRmMjhiYzcsIDB4YjkyZGI2YTgsIDB4YzgxNDFlYTksDQorICAgIDB4ODU1N2YxMTksIDB4NGNhZjc1MDcsIDB4YmJlZTk5ZGQsIDB4ZmRhMzdmNjAsDQorICAgIDB4OWZmNzAxMjYsIDB4YmM1YzcyZjUsIDB4YzU0NDY2M2IsIDB4MzQ1YmZiN2UsDQorICAgIDB4NzY4YjQzMjksIDB4ZGNjYjIzYzYsIDB4NjhiNmVkZmMsIDB4NjNiOGU0ZjEsDQorICAgIDB4Y2FkNzMxZGMsIDB4MTA0MjYzODUsIDB4NDAxMzk3MjIsIDB4MjA4NGM2MTEsDQorICAgIDB4N2Q4NTRhMjQsIDB4ZjhkMmJiM2QsIDB4MTFhZWY5MzIsIDB4NmRjNzI5YTEsDQorICAgIDB4NGIxZDllMmYsIDB4ZjNkY2IyMzAsIDB4ZWMwZDg2NTIsIDB4ZDA3N2MxZTMsDQorICAgIDB4NmMyYmIzMTYsIDB4OTlhOTcwYjksIDB4ZmExMTk0NDgsIDB4MjI0N2U5NjQsDQorICAgIDB4YzRhOGZjOGMsIDB4MWFhMGYwM2YsIDB4ZDg1NjdkMmMsIDB4ZWYyMjMzOTAsDQorICAgIDB4Yzc4NzQ5NGUsIDB4YzFkOTM4ZDEsIDB4ZmU4Y2NhYTIsIDB4MzY5OGQ0MGIsDQorICAgIDB4Y2ZhNmY1ODEsIDB4MjhhNTdhZGUsIDB4MjZkYWI3OGUsIDB4YTQzZmFkYmYsDQorICAgIDB4ZTQyYzNhOWQsIDB4MGQ1MDc4OTIsIDB4OWI2YTVmY2MsIDB4NjI1NDdlNDYsDQorICAgIDB4YzJmNjhkMTMsIDB4ZTg5MGQ4YjgsIDB4NWUyZTM5ZjcsIDB4ZjU4MmMzYWYsDQorICAgIDB4YmU5ZjVkODAsIDB4N2M2OWQwOTMsIDB4YTk2ZmQ1MmQsIDB4YjNjZjI1MTIsDQorICAgIDB4M2JjOGFjOTksIDB4YTcxMDE4N2QsIDB4NmVlODljNjMsIDB4N2JkYjNiYmIsDQorICAgIDB4MDljZDI2NzgsIDB4ZjQ2ZTU5MTgsIDB4MDFlYzlhYjcsIDB4YTg4MzRmOWEsDQorICAgIDB4NjVlNjk1NmUsIDB4N2VhYWZmZTYsIDB4MDgyMWJjY2YsIDB4ZTZlZjE1ZTgsDQorICAgIDB4ZDliYWU3OWIsIDB4Y2U0YTZmMzYsIDB4ZDRlYTlmMDksIDB4ZDYyOWIwN2MsDQorICAgIDB4YWYzMWE0YjIsIDB4MzEyYTNmMjMsIDB4MzBjNmE1OTQsIDB4YzAzNWEyNjYsDQorICAgIDB4Mzc3NDRlYmMsIDB4YTZmYzgyY2EsIDB4YjBlMDkwZDAsIDB4MTUzM2E3ZDgsDQorICAgIDB4NGFmMTA0OTgsIDB4Zjc0MWVjZGEsIDB4MGU3ZmNkNTAsIDB4MmYxNzkxZjYsDQorICAgIDB4OGQ3NjRkZDYsIDB4NGQ0M2VmYjAsIDB4NTRjY2FhNGQsIDB4ZGZlNDk2MDQsDQorICAgIDB4ZTM5ZWQxYjUsIDB4MWI0YzZhODgsIDB4YjhjMTJjMWYsIDB4N2Y0NjY1NTEsDQorICAgIDB4MDQ5ZDVlZWEsIDB4NWQwMThjMzUsIDB4NzNmYTg3NzQsIDB4MmVmYjBiNDEsDQorICAgIDB4NWFiMzY3MWQsIDB4NTI5MmRiZDIsIDB4MzNlOTEwNTYsIDB4MTM2ZGQ2NDcsDQorICAgIDB4OGM5YWQ3NjEsIDB4N2EzN2ExMGMsIDB4OGU1OWY4MTQsIDB4ODllYjEzM2MsDQorICAgIDB4ZWVjZWE5MjcsIDB4MzViNzYxYzksIDB4ZWRlMTFjZTUsIDB4M2M3YTQ3YjEsDQorICAgIDB4NTk5Y2QyZGYsIDB4M2Y1NWYyNzMsIDB4NzkxODE0Y2UsIDB4YmY3M2M3MzcsDQorICAgIDB4ZWE1M2Y3Y2QsIDB4NWI1ZmZkYWEsIDB4MTRkZjNkNmYsIDB4ODY3ODQ0ZGIsDQorICAgIDB4ODFjYWFmZjMsIDB4M2ViOTY4YzQsIDB4MmMzODI0MzQsIDB4NWZjMmEzNDAsDQorICAgIDB4NzIxNjFkYzMsIDB4MGNiY2UyMjUsIDB4OGIyODNjNDksIDB4NDFmZjBkOTUsDQorICAgIDB4NzEzOWE4MDEsIDB4ZGUwODBjYjMsIDB4OWNkOGI0ZTQsIDB4OTA2NDU2YzEsDQorICAgIDB4NjE3YmNiODQsIDB4NzBkNTMyYjYsIDB4NzQ0ODZjNWMsIDB4NDJkMGI4NTcsDQorfTsNCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IEQyWzI1Nl0gPSB7DQorICAgIDB4YTc1MDUxZjQsIDB4NjU1MzdlNDEsIDB4YTRjMzFhMTcsIDB4NWU5NjNhMjcsDQorICAgIDB4NmJjYjNiYWIsIDB4NDVmMTFmOWQsIDB4NThhYmFjZmEsIDB4MDM5MzRiZTMsDQorICAgIDB4ZmE1NTIwMzAsIDB4NmRmNmFkNzYsIDB4NzY5MTg4Y2MsIDB4NGMyNWY1MDIsDQorICAgIDB4ZDdmYzRmZTUsIDB4Y2JkN2M1MmEsIDB4NDQ4MDI2MzUsIDB4YTM4ZmI1NjIsDQorICAgIDB4NWE0OWRlYjEsIDB4MWI2NzI1YmEsIDB4MGU5ODQ1ZWEsIDB4YzBlMTVkZmUsDQorICAgIDB4NzUwMmMzMmYsIDB4ZjAxMjgxNGMsIDB4OTdhMzhkNDYsIDB4ZjljNjZiZDMsDQorICAgIDB4NWZlNzAzOGYsIDB4OWM5NTE1OTIsIDB4N2FlYmJmNmQsIDB4NTlkYTk1NTIsDQorICAgIDB4ODMyZGQ0YmUsIDB4MjFkMzU4NzQsIDB4NjkyOTQ5ZTAsIDB4Yzg0NDhlYzksDQorICAgIDB4ODk2YTc1YzIsIDB4Nzk3OGY0OGUsIDB4M2U2Yjk5NTgsIDB4NzFkZDI3YjksDQorICAgIDB4NGZiNmJlZTEsIDB4YWQxN2YwODgsIDB4YWM2NmM5MjAsIDB4M2FiNDdkY2UsDQorICAgIDB4NGExODYzZGYsIDB4MzE4MmU1MWEsIDB4MzM2MDk3NTEsIDB4N2Y0NTYyNTMsDQorICAgIDB4NzdlMGIxNjQsIDB4YWU4NGJiNmIsIDB4YTAxY2ZlODEsIDB4MmI5NGY5MDgsDQorICAgIDB4Njg1ODcwNDgsIDB4ZmQxOThmNDUsIDB4NmM4Nzk0ZGUsIDB4ZjhiNzUyN2IsDQorICAgIDB4ZDMyM2FiNzMsIDB4MDJlMjcyNGIsIDB4OGY1N2UzMWYsIDB4YWIyYTY2NTUsDQorICAgIDB4MjgwN2IyZWIsIDB4YzIwMzJmYjUsIDB4N2I5YTg2YzUsIDB4MDhhNWQzMzcsDQorICAgIDB4ODdmMjMwMjgsIDB4YTViMjIzYmYsIDB4NmFiYTAyMDMsIDB4ODI1Y2VkMTYsDQorICAgIDB4MWMyYjhhY2YsIDB4YjQ5MmE3NzksIDB4ZjJmMGYzMDcsIDB4ZTJhMTRlNjksDQorICAgIDB4ZjRjZDY1ZGEsIDB4YmVkNTA2MDUsIDB4NjIxZmQxMzQsIDB4ZmU4YWM0YTYsDQorICAgIDB4NTM5ZDM0MmUsIDB4NTVhMGEyZjMsIDB4ZTEzMjA1OGEsIDB4ZWI3NWE0ZjYsDQorICAgIDB4ZWMzOTBiODMsIDB4ZWZhYTQwNjAsIDB4OWYwNjVlNzEsIDB4MTA1MWJkNmUsDQorICAgIDB4OGFmOTNlMjEsIDB4MDYzZDk2ZGQsIDB4MDVhZWRkM2UsIDB4YmQ0NjRkZTYsDQorICAgIDB4OGRiNTkxNTQsIDB4NWQwNTcxYzQsIDB4ZDQ2ZjA0MDYsIDB4MTVmZjYwNTAsDQorICAgIDB4ZmIyNDE5OTgsIDB4ZTk5N2Q2YmQsIDB4NDNjYzg5NDAsIDB4OWU3NzY3ZDksDQorICAgIDB4NDJiZGIwZTgsIDB4OGI4ODA3ODksIDB4NWIzOGU3MTksIDB4ZWVkYjc5YzgsDQorICAgIDB4MGE0N2ExN2MsIDB4MGZlOTdjNDIsIDB4MWVjOWY4ODQsIDB4MDAwMDAwMDAsDQorICAgIDB4ODY4MzA5ODAsIDB4ZWQ0ODMyMmIsIDB4NzBhYzFlMTEsIDB4NzI0ZTZjNWEsDQorICAgIDB4ZmZmYmZkMGUsIDB4Mzg1NjBmODUsIDB4ZDUxZTNkYWUsIDB4MzkyNzM2MmQsDQorICAgIDB4ZDk2NDBhMGYsIDB4YTYyMTY4NWMsIDB4NTRkMTliNWIsIDB4MmUzYTI0MzYsDQorICAgIDB4NjdiMTBjMGEsIDB4ZTcwZjkzNTcsIDB4OTZkMmI0ZWUsIDB4OTE5ZTFiOWIsDQorICAgIDB4YzU0ZjgwYzAsIDB4MjBhMjYxZGMsIDB4NGI2OTVhNzcsIDB4MWExNjFjMTIsDQorICAgIDB4YmEwYWUyOTMsIDB4MmFlNWMwYTAsIDB4ZTA0MzNjMjIsIDB4MTcxZDEyMWIsDQorICAgIDB4MGQwYjBlMDksIDB4YzdhZGYyOGIsIDB4YThiOTJkYjYsIDB4YTljODE0MWUsDQorICAgIDB4MTk4NTU3ZjEsIDB4MDc0Y2FmNzUsIDB4ZGRiYmVlOTksIDB4NjBmZGEzN2YsDQorICAgIDB4MjY5ZmY3MDEsIDB4ZjViYzVjNzIsIDB4M2JjNTQ0NjYsIDB4N2UzNDViZmIsDQorICAgIDB4Mjk3NjhiNDMsIDB4YzZkY2NiMjMsIDB4ZmM2OGI2ZWQsIDB4ZjE2M2I4ZTQsDQorICAgIDB4ZGNjYWQ3MzEsIDB4ODUxMDQyNjMsIDB4MjI0MDEzOTcsIDB4MTEyMDg0YzYsDQorICAgIDB4MjQ3ZDg1NGEsIDB4M2RmOGQyYmIsIDB4MzIxMWFlZjksIDB4YTE2ZGM3MjksDQorICAgIDB4MmY0YjFkOWUsIDB4MzBmM2RjYjIsIDB4NTJlYzBkODYsIDB4ZTNkMDc3YzEsDQorICAgIDB4MTY2YzJiYjMsIDB4Yjk5OWE5NzAsIDB4NDhmYTExOTQsIDB4NjQyMjQ3ZTksDQorICAgIDB4OGNjNGE4ZmMsIDB4M2YxYWEwZjAsIDB4MmNkODU2N2QsIDB4OTBlZjIyMzMsDQorICAgIDB4NGVjNzg3NDksIDB4ZDFjMWQ5MzgsIDB4YTJmZThjY2EsIDB4MGIzNjk4ZDQsDQorICAgIDB4ODFjZmE2ZjUsIDB4ZGUyOGE1N2EsIDB4OGUyNmRhYjcsIDB4YmZhNDNmYWQsDQorICAgIDB4OWRlNDJjM2EsIDB4OTIwZDUwNzgsIDB4Y2M5YjZhNWYsIDB4NDY2MjU0N2UsDQorICAgIDB4MTNjMmY2OGQsIDB4YjhlODkwZDgsIDB4Zjc1ZTJlMzksIDB4YWZmNTgyYzMsDQorICAgIDB4ODBiZTlmNWQsIDB4OTM3YzY5ZDAsIDB4MmRhOTZmZDUsIDB4MTJiM2NmMjUsDQorICAgIDB4OTkzYmM4YWMsIDB4N2RhNzEwMTgsIDB4NjM2ZWU4OWMsIDB4YmI3YmRiM2IsDQorICAgIDB4NzgwOWNkMjYsIDB4MThmNDZlNTksIDB4YjcwMWVjOWEsIDB4OWFhODgzNGYsDQorICAgIDB4NmU2NWU2OTUsIDB4ZTY3ZWFhZmYsIDB4Y2YwODIxYmMsIDB4ZThlNmVmMTUsDQorICAgIDB4OWJkOWJhZTcsIDB4MzZjZTRhNmYsIDB4MDlkNGVhOWYsIDB4N2NkNjI5YjAsDQorICAgIDB4YjJhZjMxYTQsIDB4MjMzMTJhM2YsIDB4OTQzMGM2YTUsIDB4NjZjMDM1YTIsDQorICAgIDB4YmMzNzc0NGUsIDB4Y2FhNmZjODIsIDB4ZDBiMGUwOTAsIDB4ZDgxNTMzYTcsDQorICAgIDB4OTg0YWYxMDQsIDB4ZGFmNzQxZWMsIDB4NTAwZTdmY2QsIDB4ZjYyZjE3OTEsDQorICAgIDB4ZDY4ZDc2NGQsIDB4YjA0ZDQzZWYsIDB4NGQ1NGNjYWEsIDB4MDRkZmU0OTYsDQorICAgIDB4YjVlMzllZDEsIDB4ODgxYjRjNmEsIDB4MWZiOGMxMmMsIDB4NTE3ZjQ2NjUsDQorICAgIDB4ZWEwNDlkNWUsIDB4MzU1ZDAxOGMsIDB4NzQ3M2ZhODcsIDB4NDEyZWZiMGIsDQorICAgIDB4MWQ1YWIzNjcsIDB4ZDI1MjkyZGIsIDB4NTYzM2U5MTAsIDB4NDcxMzZkZDYsDQorICAgIDB4NjE4YzlhZDcsIDB4MGM3YTM3YTEsIDB4MTQ4ZTU5ZjgsIDB4M2M4OWViMTMsDQorICAgIDB4MjdlZWNlYTksIDB4YzkzNWI3NjEsIDB4ZTVlZGUxMWMsIDB4YjEzYzdhNDcsDQorICAgIDB4ZGY1OTljZDIsIDB4NzMzZjU1ZjIsIDB4Y2U3OTE4MTQsIDB4MzdiZjczYzcsDQorICAgIDB4Y2RlYTUzZjcsIDB4YWE1YjVmZmQsIDB4NmYxNGRmM2QsIDB4ZGI4Njc4NDQsDQorICAgIDB4ZjM4MWNhYWYsIDB4YzQzZWI5NjgsIDB4MzQyYzM4MjQsIDB4NDA1ZmMyYTMsDQorICAgIDB4YzM3MjE2MWQsIDB4MjUwY2JjZTIsIDB4NDk4YjI4M2MsIDB4OTU0MWZmMGQsDQorICAgIDB4MDE3MTM5YTgsIDB4YjNkZTA4MGMsIDB4ZTQ5Y2Q4YjQsIDB4YzE5MDY0NTYsDQorICAgIDB4ODQ2MTdiY2IsIDB4YjY3MGQ1MzIsIDB4NWM3NDQ4NmMsIDB4NTc0MmQwYjgsDQorfTsNCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IEQzWzI1Nl0gPSB7DQorICAgIDB4ZjRhNzUwNTEsIDB4NDE2NTUzN2UsIDB4MTdhNGMzMWEsIDB4Mjc1ZTk2M2EsDQorICAgIDB4YWI2YmNiM2IsIDB4OWQ0NWYxMWYsIDB4ZmE1OGFiYWMsIDB4ZTMwMzkzNGIsDQorICAgIDB4MzBmYTU1MjAsIDB4NzY2ZGY2YWQsIDB4Y2M3NjkxODgsIDB4MDI0YzI1ZjUsDQorICAgIDB4ZTVkN2ZjNGYsIDB4MmFjYmQ3YzUsIDB4MzU0NDgwMjYsIDB4NjJhMzhmYjUsDQorICAgIDB4YjE1YTQ5ZGUsIDB4YmExYjY3MjUsIDB4ZWEwZTk4NDUsIDB4ZmVjMGUxNWQsDQorICAgIDB4MmY3NTAyYzMsIDB4NGNmMDEyODEsIDB4NDY5N2EzOGQsIDB4ZDNmOWM2NmIsDQorICAgIDB4OGY1ZmU3MDMsIDB4OTI5Yzk1MTUsIDB4NmQ3YWViYmYsIDB4NTI1OWRhOTUsDQorICAgIDB4YmU4MzJkZDQsIDB4NzQyMWQzNTgsIDB4ZTA2OTI5NDksIDB4YzljODQ0OGUsDQorICAgIDB4YzI4OTZhNzUsIDB4OGU3OTc4ZjQsIDB4NTgzZTZiOTksIDB4Yjk3MWRkMjcsDQorICAgIDB4ZTE0ZmI2YmUsIDB4ODhhZDE3ZjAsIDB4MjBhYzY2YzksIDB4Y2UzYWI0N2QsDQorICAgIDB4ZGY0YTE4NjMsIDB4MWEzMTgyZTUsIDB4NTEzMzYwOTcsIDB4NTM3ZjQ1NjIsDQorICAgIDB4NjQ3N2UwYjEsIDB4NmJhZTg0YmIsIDB4ODFhMDFjZmUsIDB4MDgyYjk0ZjksDQorICAgIDB4NDg2ODU4NzAsIDB4NDVmZDE5OGYsIDB4ZGU2Yzg3OTQsIDB4N2JmOGI3NTIsDQorICAgIDB4NzNkMzIzYWIsIDB4NGIwMmUyNzIsIDB4MWY4ZjU3ZTMsIDB4NTVhYjJhNjYsDQorICAgIDB4ZWIyODA3YjIsIDB4YjVjMjAzMmYsIDB4YzU3YjlhODYsIDB4MzcwOGE1ZDMsDQorICAgIDB4Mjg4N2YyMzAsIDB4YmZhNWIyMjMsIDB4MDM2YWJhMDIsIDB4MTY4MjVjZWQsDQorICAgIDB4Y2YxYzJiOGEsIDB4NzliNDkyYTcsIDB4MDdmMmYwZjMsIDB4NjllMmExNGUsDQorICAgIDB4ZGFmNGNkNjUsIDB4MDViZWQ1MDYsIDB4MzQ2MjFmZDEsIDB4YTZmZThhYzQsDQorICAgIDB4MmU1MzlkMzQsIDB4ZjM1NWEwYTIsIDB4OGFlMTMyMDUsIDB4ZjZlYjc1YTQsDQorICAgIDB4ODNlYzM5MGIsIDB4NjBlZmFhNDAsIDB4NzE5ZjA2NWUsIDB4NmUxMDUxYmQsDQorICAgIDB4MjE4YWY5M2UsIDB4ZGQwNjNkOTYsIDB4M2UwNWFlZGQsIDB4ZTZiZDQ2NGQsDQorICAgIDB4NTQ4ZGI1OTEsIDB4YzQ1ZDA1NzEsIDB4MDZkNDZmMDQsIDB4NTAxNWZmNjAsDQorICAgIDB4OThmYjI0MTksIDB4YmRlOTk3ZDYsIDB4NDA0M2NjODksIDB4ZDk5ZTc3NjcsDQorICAgIDB4ZTg0MmJkYjAsIDB4ODk4Yjg4MDcsIDB4MTk1YjM4ZTcsIDB4YzhlZWRiNzksDQorICAgIDB4N2MwYTQ3YTEsIDB4NDIwZmU5N2MsIDB4ODQxZWM5ZjgsIDB4MDAwMDAwMDAsDQorICAgIDB4ODA4NjgzMDksIDB4MmJlZDQ4MzIsIDB4MTE3MGFjMWUsIDB4NWE3MjRlNmMsDQorICAgIDB4MGVmZmZiZmQsIDB4ODUzODU2MGYsIDB4YWVkNTFlM2QsIDB4MmQzOTI3MzYsDQorICAgIDB4MGZkOTY0MGEsIDB4NWNhNjIxNjgsIDB4NWI1NGQxOWIsIDB4MzYyZTNhMjQsDQorICAgIDB4MGE2N2IxMGMsIDB4NTdlNzBmOTMsIDB4ZWU5NmQyYjQsIDB4OWI5MTllMWIsDQorICAgIDB4YzBjNTRmODAsIDB4ZGMyMGEyNjEsIDB4Nzc0YjY5NWEsIDB4MTIxYTE2MWMsDQorICAgIDB4OTNiYTBhZTIsIDB4YTAyYWU1YzAsIDB4MjJlMDQzM2MsIDB4MWIxNzFkMTIsDQorICAgIDB4MDkwZDBiMGUsIDB4OGJjN2FkZjIsIDB4YjZhOGI5MmQsIDB4MWVhOWM4MTQsDQorICAgIDB4ZjExOTg1NTcsIDB4NzUwNzRjYWYsIDB4OTlkZGJiZWUsIDB4N2Y2MGZkYTMsDQorICAgIDB4MDEyNjlmZjcsIDB4NzJmNWJjNWMsIDB4NjYzYmM1NDQsIDB4ZmI3ZTM0NWIsDQorICAgIDB4NDMyOTc2OGIsIDB4MjNjNmRjY2IsIDB4ZWRmYzY4YjYsIDB4ZTRmMTYzYjgsDQorICAgIDB4MzFkY2NhZDcsIDB4NjM4NTEwNDIsIDB4OTcyMjQwMTMsIDB4YzYxMTIwODQsDQorICAgIDB4NGEyNDdkODUsIDB4YmIzZGY4ZDIsIDB4ZjkzMjExYWUsIDB4MjlhMTZkYzcsDQorICAgIDB4OWUyZjRiMWQsIDB4YjIzMGYzZGMsIDB4ODY1MmVjMGQsIDB4YzFlM2QwNzcsDQorICAgIDB4YjMxNjZjMmIsIDB4NzBiOTk5YTksIDB4OTQ0OGZhMTEsIDB4ZTk2NDIyNDcsDQorICAgIDB4ZmM4Y2M0YTgsIDB4ZjAzZjFhYTAsIDB4N2QyY2Q4NTYsIDB4MzM5MGVmMjIsDQorICAgIDB4NDk0ZWM3ODcsIDB4MzhkMWMxZDksIDB4Y2FhMmZlOGMsIDB4ZDQwYjM2OTgsDQorICAgIDB4ZjU4MWNmYTYsIDB4N2FkZTI4YTUsIDB4Yjc4ZTI2ZGEsIDB4YWRiZmE0M2YsDQorICAgIDB4M2E5ZGU0MmMsIDB4Nzg5MjBkNTAsIDB4NWZjYzliNmEsIDB4N2U0NjYyNTQsDQorICAgIDB4OGQxM2MyZjYsIDB4ZDhiOGU4OTAsIDB4MzlmNzVlMmUsIDB4YzNhZmY1ODIsDQorICAgIDB4NWQ4MGJlOWYsIDB4ZDA5MzdjNjksIDB4ZDUyZGE5NmYsIDB4MjUxMmIzY2YsDQorICAgIDB4YWM5OTNiYzgsIDB4MTg3ZGE3MTAsIDB4OWM2MzZlZTgsIDB4M2JiYjdiZGIsDQorICAgIDB4MjY3ODA5Y2QsIDB4NTkxOGY0NmUsIDB4OWFiNzAxZWMsIDB4NGY5YWE4ODMsDQorICAgIDB4OTU2ZTY1ZTYsIDB4ZmZlNjdlYWEsIDB4YmNjZjA4MjEsIDB4MTVlOGU2ZWYsDQorICAgIDB4ZTc5YmQ5YmEsIDB4NmYzNmNlNGEsIDB4OWYwOWQ0ZWEsIDB4YjA3Y2Q2MjksDQorICAgIDB4YTRiMmFmMzEsIDB4M2YyMzMxMmEsIDB4YTU5NDMwYzYsIDB4YTI2NmMwMzUsDQorICAgIDB4NGViYzM3NzQsIDB4ODJjYWE2ZmMsIDB4OTBkMGIwZTAsIDB4YTdkODE1MzMsDQorICAgIDB4MDQ5ODRhZjEsIDB4ZWNkYWY3NDEsIDB4Y2Q1MDBlN2YsIDB4OTFmNjJmMTcsDQorICAgIDB4NGRkNjhkNzYsIDB4ZWZiMDRkNDMsIDB4YWE0ZDU0Y2MsIDB4OTYwNGRmZTQsDQorICAgIDB4ZDFiNWUzOWUsIDB4NmE4ODFiNGMsIDB4MmMxZmI4YzEsIDB4NjU1MTdmNDYsDQorICAgIDB4NWVlYTA0OWQsIDB4OGMzNTVkMDEsIDB4ODc3NDczZmEsIDB4MGI0MTJlZmIsDQorICAgIDB4NjcxZDVhYjMsIDB4ZGJkMjUyOTIsIDB4MTA1NjMzZTksIDB4ZDY0NzEzNmQsDQorICAgIDB4ZDc2MThjOWEsIDB4YTEwYzdhMzcsIDB4ZjgxNDhlNTksIDB4MTMzYzg5ZWIsDQorICAgIDB4YTkyN2VlY2UsIDB4NjFjOTM1YjcsIDB4MWNlNWVkZTEsIDB4NDdiMTNjN2EsDQorICAgIDB4ZDJkZjU5OWMsIDB4ZjI3MzNmNTUsIDB4MTRjZTc5MTgsIDB4YzczN2JmNzMsDQorICAgIDB4ZjdjZGVhNTMsIDB4ZmRhYTViNWYsIDB4M2Q2ZjE0ZGYsIDB4NDRkYjg2NzgsDQorICAgIDB4YWZmMzgxY2EsIDB4NjhjNDNlYjksIDB4MjQzNDJjMzgsIDB4YTM0MDVmYzIsDQorICAgIDB4MWRjMzcyMTYsIDB4ZTIyNTBjYmMsIDB4M2M0OThiMjgsIDB4MGQ5NTQxZmYsDQorICAgIDB4YTgwMTcxMzksIDB4MGNiM2RlMDgsIDB4YjRlNDljZDgsIDB4NTZjMTkwNjQsDQorICAgIDB4Y2I4NDYxN2IsIDB4MzJiNjcwZDUsIDB4NmM1Yzc0NDgsIDB4Yjg1NzQyZDAsDQorfTsNCisjZGVmaW5lIEFERF9ST1VORF9LRVlfNCAoYmxvY2tbMF1ePSprZXlzY2hlZCsrLCBibG9ja1sxXV49KmtleXNjaGVkKyssIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tbMl1ePSprZXlzY2hlZCsrLCBibG9ja1szXV49KmtleXNjaGVkKyspDQorI2RlZmluZSBBRERfUk9VTkRfS0VZXzYgKGJsb2NrWzBdXj0qa2V5c2NoZWQrKywgYmxvY2tbMV1ePSprZXlzY2hlZCsrLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrWzJdXj0qa2V5c2NoZWQrKywgYmxvY2tbM11ePSprZXlzY2hlZCsrLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrWzRdXj0qa2V5c2NoZWQrKywgYmxvY2tbNV1ePSprZXlzY2hlZCsrKQ0KKyNkZWZpbmUgQUREX1JPVU5EX0tFWV84IChibG9ja1swXV49KmtleXNjaGVkKyssIGJsb2NrWzFdXj0qa2V5c2NoZWQrKywgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1syXV49KmtleXNjaGVkKyssIGJsb2NrWzNdXj0qa2V5c2NoZWQrKywgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1s0XV49KmtleXNjaGVkKyssIGJsb2NrWzVdXj0qa2V5c2NoZWQrKywgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1s2XV49KmtleXNjaGVkKyssIGJsb2NrWzddXj0qa2V5c2NoZWQrKykNCisjZGVmaW5lIE1PVkVXT1JEKGkpICggYmxvY2tbaV0gPSBuZXdzdGF0ZVtpXSApDQorI3VuZGVmIE1BS0VXT1JEDQorI2RlZmluZSBNQUtFV09SRChpKSAoIG5ld3N0YXRlW2ldID0gKEUwWyhibG9ja1tpXSA+PiAyNCkgJiAweEZGXSBeIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRTFbKGJsb2NrWyhpK0MxKSVOYl0gPj4gMTYpICYgMHhGRl0gXiBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUyWyhibG9ja1soaStDMiklTmJdID4+IDgpICYgMHhGRl0gXiBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUzW2Jsb2NrWyhpK0MzKSVOYl0gJiAweEZGXSkgKQ0KKyNkZWZpbmUgTEFTVFdPUkQoaSkgKCBuZXdzdGF0ZVtpXSA9IChTYm94WyhibG9ja1tpXSA+PiAyNCkgJiAweEZGXSA8PCAyNCkgfCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNib3hbKGJsb2NrWyhpK0MxKSVOYl0gPj4gMTYpICYgMHhGRl0gPDwgMTYpIHwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTYm94WyhibG9ja1soaStDMiklTmJdID4+ICA4KSAmIDB4RkZdIDw8ICA4KSB8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2JveFsoYmxvY2tbKGkrQzMpJU5iXSAgICAgICkgJiAweEZGXSAgICAgICkgKQ0KK3N0YXRpYyB2b2lkIGFlc19lbmNyeXB0X25iXzQoQUVTQ29udGV4dCAqIGN0eCwgdW5zaWduZWQgaW50ICogYmxvY2spDQorew0KKyAgICBpbnQgaTsNCisgICAgc3RhdGljIGNvbnN0IGludCBDMSA9IDEsIEMyID0gMiwgQzMgPSAzLCBOYiA9IDQ7DQorICAgIHVuc2lnbmVkIGludCAqa2V5c2NoZWQgPSBjdHgtPmtleXNjaGVkOw0KKyAgICB1bnNpZ25lZCBpbnQgbmV3c3RhdGVbNF07DQorICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPk5yIC0gMTsgaSsrKSB7DQorICAgICAgICBBRERfUk9VTkRfS0VZXzQ7DQorICAgICAgICBNQUtFV09SRCgwKTsNCisgICAgICAgIE1BS0VXT1JEKDEpOw0KKyAgICAgICAgTUFLRVdPUkQoMik7DQorICAgICAgICBNQUtFV09SRCgzKTsNCisgICAgICAgIE1PVkVXT1JEKDApOw0KKyAgICAgICAgTU9WRVdPUkQoMSk7DQorICAgICAgICBNT1ZFV09SRCgyKTsNCisgICAgICAgIE1PVkVXT1JEKDMpOw0KKyAgICB9DQorICAgIEFERF9ST1VORF9LRVlfNDsNCisgICAgTEFTVFdPUkQoMCk7DQorICAgIExBU1RXT1JEKDEpOw0KKyAgICBMQVNUV09SRCgyKTsNCisgICAgTEFTVFdPUkQoMyk7DQorICAgIE1PVkVXT1JEKDApOw0KKyAgICBNT1ZFV09SRCgxKTsNCisgICAgTU9WRVdPUkQoMik7DQorICAgIE1PVkVXT1JEKDMpOw0KKyAgICBBRERfUk9VTkRfS0VZXzQ7DQorfQ0KK3N0YXRpYyB2b2lkIGFlc19lbmNyeXB0X25iXzYoQUVTQ29udGV4dCAqIGN0eCwgdW5zaWduZWQgaW50ICogYmxvY2spDQorew0KKyAgICBpbnQgaTsNCisgICAgc3RhdGljIGNvbnN0IGludCBDMSA9IDEsIEMyID0gMiwgQzMgPSAzLCBOYiA9IDY7DQorICAgIHVuc2lnbmVkIGludCAqa2V5c2NoZWQgPSBjdHgtPmtleXNjaGVkOw0KKyAgICB1bnNpZ25lZCBpbnQgbmV3c3RhdGVbNl07DQorICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPk5yIC0gMTsgaSsrKSB7DQorICAgICAgICBBRERfUk9VTkRfS0VZXzY7DQorICAgICAgICBNQUtFV09SRCgwKTsNCisgICAgICAgIE1BS0VXT1JEKDEpOw0KKyAgICAgICAgTUFLRVdPUkQoMik7DQorICAgICAgICBNQUtFV09SRCgzKTsNCisgICAgICAgIE1BS0VXT1JEKDQpOw0KKyAgICAgICAgTUFLRVdPUkQoNSk7DQorICAgICAgICBNT1ZFV09SRCgwKTsNCisgICAgICAgIE1PVkVXT1JEKDEpOw0KKyAgICAgICAgTU9WRVdPUkQoMik7DQorICAgICAgICBNT1ZFV09SRCgzKTsNCisgICAgICAgIE1PVkVXT1JEKDQpOw0KKyAgICAgICAgTU9WRVdPUkQoNSk7DQorICAgIH0NCisgICAgQUREX1JPVU5EX0tFWV82Ow0KKyAgICBMQVNUV09SRCgwKTsNCisgICAgTEFTVFdPUkQoMSk7DQorICAgIExBU1RXT1JEKDIpOw0KKyAgICBMQVNUV09SRCgzKTsNCisgICAgTEFTVFdPUkQoNCk7DQorICAgIExBU1RXT1JEKDUpOw0KKyAgICBNT1ZFV09SRCgwKTsNCisgICAgTU9WRVdPUkQoMSk7DQorICAgIE1PVkVXT1JEKDIpOw0KKyAgICBNT1ZFV09SRCgzKTsNCisgICAgTU9WRVdPUkQoNCk7DQorICAgIE1PVkVXT1JEKDUpOw0KKyAgICBBRERfUk9VTkRfS0VZXzY7DQorfQ0KK3N0YXRpYyB2b2lkIGFlc19lbmNyeXB0X25iXzgoQUVTQ29udGV4dCAqIGN0eCwgdW5zaWduZWQgaW50ICogYmxvY2spDQorew0KKyAgICBpbnQgaTsNCisgICAgc3RhdGljIGNvbnN0IGludCBDMSA9IDEsIEMyID0gMywgQzMgPSA0LCBOYiA9IDg7DQorICAgIHVuc2lnbmVkIGludCAqa2V5c2NoZWQgPSBjdHgtPmtleXNjaGVkOw0KKyAgICB1bnNpZ25lZCBpbnQgbmV3c3RhdGVbOF07DQorICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPk5yIC0gMTsgaSsrKSB7DQorICAgICAgICBBRERfUk9VTkRfS0VZXzg7DQorICAgICAgICBNQUtFV09SRCgwKTsNCisgICAgICAgIE1BS0VXT1JEKDEpOw0KKyAgICAgICAgTUFLRVdPUkQoMik7DQorICAgICAgICBNQUtFV09SRCgzKTsNCisgICAgICAgIE1BS0VXT1JEKDQpOw0KKyAgICAgICAgTUFLRVdPUkQoNSk7DQorICAgICAgICBNQUtFV09SRCg2KTsNCisgICAgICAgIE1BS0VXT1JEKDcpOw0KKyAgICAgICAgTU9WRVdPUkQoMCk7DQorICAgICAgICBNT1ZFV09SRCgxKTsNCisgICAgICAgIE1PVkVXT1JEKDIpOw0KKyAgICAgICAgTU9WRVdPUkQoMyk7DQorICAgICAgICBNT1ZFV09SRCg0KTsNCisgICAgICAgIE1PVkVXT1JEKDUpOw0KKyAgICAgICAgTU9WRVdPUkQoNik7DQorICAgICAgICBNT1ZFV09SRCg3KTsNCisgICAgfQ0KKyAgICBBRERfUk9VTkRfS0VZXzg7DQorICAgIExBU1RXT1JEKDApOw0KKyAgICBMQVNUV09SRCgxKTsNCisgICAgTEFTVFdPUkQoMik7DQorICAgIExBU1RXT1JEKDMpOw0KKyAgICBMQVNUV09SRCg0KTsNCisgICAgTEFTVFdPUkQoNSk7DQorICAgIExBU1RXT1JEKDYpOw0KKyAgICBMQVNUV09SRCg3KTsNCisgICAgTU9WRVdPUkQoMCk7DQorICAgIE1PVkVXT1JEKDEpOw0KKyAgICBNT1ZFV09SRCgyKTsNCisgICAgTU9WRVdPUkQoMyk7DQorICAgIE1PVkVXT1JEKDQpOw0KKyAgICBNT1ZFV09SRCg1KTsNCisgICAgTU9WRVdPUkQoNik7DQorICAgIE1PVkVXT1JEKDcpOw0KKyAgICBBRERfUk9VTkRfS0VZXzg7DQorfQ0KKyN1bmRlZiBNQUtFV09SRA0KKyN1bmRlZiBMQVNUV09SRA0KKyNkZWZpbmUgTUFLRVdPUkQoaSkgKCBuZXdzdGF0ZVtpXSA9IChEMFsoYmxvY2tbaV0gPj4gMjQpICYgMHhGRl0gXiBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQxWyhibG9ja1soaStDMSklTmJdID4+IDE2KSAmIDB4RkZdIF4gXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEMlsoYmxvY2tbKGkrQzIpJU5iXSA+PiA4KSAmIDB4RkZdIF4gXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM1tibG9ja1soaStDMyklTmJdICYgMHhGRl0pICkNCisjZGVmaW5lIExBU1RXT1JEKGkpIChuZXdzdGF0ZVtpXSA9IChTYm94aW52WyhibG9ja1tpXSA+PiAyNCkgJiAweEZGXSA8PCAyNCkgfCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2JveGludlsoYmxvY2tbKGkrQzEpJU5iXSA+PiAxNikgJiAweEZGXSA8PCAxNikgfCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2JveGludlsoYmxvY2tbKGkrQzIpJU5iXSA+PiAgOCkgJiAweEZGXSA8PCAgOCkgfCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2JveGludlsoYmxvY2tbKGkrQzMpJU5iXSAgICAgICkgJiAweEZGXSAgICAgICkgKQ0KK3N0YXRpYyB2b2lkIGFlc19kZWNyeXB0X25iXzQoQUVTQ29udGV4dCAqIGN0eCwgdW5zaWduZWQgaW50ICogYmxvY2spDQorew0KKyAgICBpbnQgaTsNCisgICAgc3RhdGljIGNvbnN0IGludCBDMSA9IDQgLSAxLCBDMiA9IDQgLSAyLCBDMyA9IDQgLSAzLCBOYiA9IDQ7DQorICAgIHVuc2lnbmVkIGludCAqa2V5c2NoZWQgPSBjdHgtPmludmtleXNjaGVkOw0KKyAgICB1bnNpZ25lZCBpbnQgbmV3c3RhdGVbNF07DQorICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPk5yIC0gMTsgaSsrKSB7DQorICAgICAgICBBRERfUk9VTkRfS0VZXzQ7DQorICAgICAgICBNQUtFV09SRCgwKTsNCisgICAgICAgIE1BS0VXT1JEKDEpOw0KKyAgICAgICAgTUFLRVdPUkQoMik7DQorICAgICAgICBNQUtFV09SRCgzKTsNCisgICAgICAgIE1PVkVXT1JEKDApOw0KKyAgICAgICAgTU9WRVdPUkQoMSk7DQorICAgICAgICBNT1ZFV09SRCgyKTsNCisgICAgICAgIE1PVkVXT1JEKDMpOw0KKyAgICB9DQorICAgIEFERF9ST1VORF9LRVlfNDsNCisgICAgTEFTVFdPUkQoMCk7DQorICAgIExBU1RXT1JEKDEpOw0KKyAgICBMQVNUV09SRCgyKTsNCisgICAgTEFTVFdPUkQoMyk7DQorICAgIE1PVkVXT1JEKDApOw0KKyAgICBNT1ZFV09SRCgxKTsNCisgICAgTU9WRVdPUkQoMik7DQorICAgIE1PVkVXT1JEKDMpOw0KKyAgICBBRERfUk9VTkRfS0VZXzQ7DQorfQ0KK3N0YXRpYyB2b2lkIGFlc19kZWNyeXB0X25iXzYoQUVTQ29udGV4dCAqIGN0eCwgdW5zaWduZWQgaW50ICogYmxvY2spDQorew0KKyAgICBpbnQgaTsNCisgICAgc3RhdGljIGNvbnN0IGludCBDMSA9IDYgLSAxLCBDMiA9IDYgLSAyLCBDMyA9IDYgLSAzLCBOYiA9IDY7DQorICAgIHVuc2lnbmVkIGludCAqa2V5c2NoZWQgPSBjdHgtPmludmtleXNjaGVkOw0KKyAgICB1bnNpZ25lZCBpbnQgbmV3c3RhdGVbNl07DQorICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPk5yIC0gMTsgaSsrKSB7DQorICAgICAgICBBRERfUk9VTkRfS0VZXzY7DQorICAgICAgICBNQUtFV09SRCgwKTsNCisgICAgICAgIE1BS0VXT1JEKDEpOw0KKyAgICAgICAgTUFLRVdPUkQoMik7DQorICAgICAgICBNQUtFV09SRCgzKTsNCisgICAgICAgIE1BS0VXT1JEKDQpOw0KKyAgICAgICAgTUFLRVdPUkQoNSk7DQorICAgICAgICBNT1ZFV09SRCgwKTsNCisgICAgICAgIE1PVkVXT1JEKDEpOw0KKyAgICAgICAgTU9WRVdPUkQoMik7DQorICAgICAgICBNT1ZFV09SRCgzKTsNCisgICAgICAgIE1PVkVXT1JEKDQpOw0KKyAgICAgICAgTU9WRVdPUkQoNSk7DQorICAgIH0NCisgICAgQUREX1JPVU5EX0tFWV82Ow0KKyAgICBMQVNUV09SRCgwKTsNCisgICAgTEFTVFdPUkQoMSk7DQorICAgIExBU1RXT1JEKDIpOw0KKyAgICBMQVNUV09SRCgzKTsNCisgICAgTEFTVFdPUkQoNCk7DQorICAgIExBU1RXT1JEKDUpOw0KKyAgICBNT1ZFV09SRCgwKTsNCisgICAgTU9WRVdPUkQoMSk7DQorICAgIE1PVkVXT1JEKDIpOw0KKyAgICBNT1ZFV09SRCgzKTsNCisgICAgTU9WRVdPUkQoNCk7DQorICAgIE1PVkVXT1JEKDUpOw0KKyAgICBBRERfUk9VTkRfS0VZXzY7DQorfQ0KK3N0YXRpYyB2b2lkIGFlc19kZWNyeXB0X25iXzgoQUVTQ29udGV4dCAqIGN0eCwgdW5zaWduZWQgaW50ICogYmxvY2spDQorew0KKyAgICBpbnQgaTsNCisgICAgc3RhdGljIGNvbnN0IGludCBDMSA9IDggLSAxLCBDMiA9IDggLSAzLCBDMyA9IDggLSA0LCBOYiA9IDg7DQorICAgIHVuc2lnbmVkIGludCAqa2V5c2NoZWQgPSBjdHgtPmludmtleXNjaGVkOw0KKyAgICB1bnNpZ25lZCBpbnQgbmV3c3RhdGVbOF07DQorICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPk5yIC0gMTsgaSsrKSB7DQorICAgICAgICBBRERfUk9VTkRfS0VZXzg7DQorICAgICAgICBNQUtFV09SRCgwKTsNCisgICAgICAgIE1BS0VXT1JEKDEpOw0KKyAgICAgICAgTUFLRVdPUkQoMik7DQorICAgICAgICBNQUtFV09SRCgzKTsNCisgICAgICAgIE1BS0VXT1JEKDQpOw0KKyAgICAgICAgTUFLRVdPUkQoNSk7DQorICAgICAgICBNQUtFV09SRCg2KTsNCisgICAgICAgIE1BS0VXT1JEKDcpOw0KKyAgICAgICAgTU9WRVdPUkQoMCk7DQorICAgICAgICBNT1ZFV09SRCgxKTsNCisgICAgICAgIE1PVkVXT1JEKDIpOw0KKyAgICAgICAgTU9WRVdPUkQoMyk7DQorICAgICAgICBNT1ZFV09SRCg0KTsNCisgICAgICAgIE1PVkVXT1JEKDUpOw0KKyAgICAgICAgTU9WRVdPUkQoNik7DQorICAgICAgICBNT1ZFV09SRCg3KTsNCisgICAgfQ0KKyAgICBBRERfUk9VTkRfS0VZXzg7DQorICAgIExBU1RXT1JEKDApOw0KKyAgICBMQVNUV09SRCgxKTsNCisgICAgTEFTVFdPUkQoMik7DQorICAgIExBU1RXT1JEKDMpOw0KKyAgICBMQVNUV09SRCg0KTsNCisgICAgTEFTVFdPUkQoNSk7DQorICAgIExBU1RXT1JEKDYpOw0KKyAgICBMQVNUV09SRCg3KTsNCisgICAgTU9WRVdPUkQoMCk7DQorICAgIE1PVkVXT1JEKDEpOw0KKyAgICBNT1ZFV09SRCgyKTsNCisgICAgTU9WRVdPUkQoMyk7DQorICAgIE1PVkVXT1JEKDQpOw0KKyAgICBNT1ZFV09SRCg1KTsNCisgICAgTU9WRVdPUkQoNik7DQorICAgIE1PVkVXT1JEKDcpOw0KKyAgICBBRERfUk9VTkRfS0VZXzg7DQorfQ0KKyN1bmRlZiBNQUtFV09SRA0KKyN1bmRlZiBMQVNUV09SRA0KK3N0YXRpYyB2b2lkIGFlc19zZXR1cChBRVNDb250ZXh0ICogY3R4LCBpbnQgYmxvY2tsZW4sDQorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwgaW50IGtleWxlbikNCit7DQorICAgIGludCBpLCBqLCBOaywgcmNvbnN0Ow0KKyAgICBBU1NFUlQoYmxvY2tsZW4gPT0gMTYgfHwgYmxvY2tsZW4gPT0gMjQgfHwgYmxvY2tsZW4gPT0gMzIpOw0KKyAgICBBU1NFUlQoa2V5bGVuID09IDE2IHx8IGtleWxlbiA9PSAyNCB8fCBrZXlsZW4gPT0gMzIpOw0KKyAgICBOayA9IGtleWxlbiAvIDQ7DQorICAgIGN0eC0+TmIgPSBibG9ja2xlbiAvIDQ7DQorICAgIGN0eC0+TnIgPSA2ICsgKGN0eC0+TmIgPiBOayA/IGN0eC0+TmIgOiBOayk7DQorICAgIGlmIChjdHgtPk5iID09IDgpIHsNCisgICAgICAgIGN0eC0+ZW5jcnlwdCA9IGFlc19lbmNyeXB0X25iXzgsIGN0eC0+ZGVjcnlwdCA9IGFlc19kZWNyeXB0X25iXzg7DQorICAgIH0gZWxzZSBpZiAoY3R4LT5OYiA9PSA2KSB7DQorICAgICAgICBjdHgtPmVuY3J5cHQgPSBhZXNfZW5jcnlwdF9uYl82LCBjdHgtPmRlY3J5cHQgPSBhZXNfZGVjcnlwdF9uYl82Ow0KKyAgICB9IGVsc2UgaWYgKGN0eC0+TmIgPT0gNCkgew0KKyAgICAgICAgY3R4LT5lbmNyeXB0ID0gYWVzX2VuY3J5cHRfbmJfNCwgY3R4LT5kZWNyeXB0ID0gYWVzX2RlY3J5cHRfbmJfNDsNCisgICAgfQ0KKyAgICByY29uc3QgPSAxOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgKGN0eC0+TnIgKyAxKSAqIGN0eC0+TmI7IGkrKykgew0KKyAgICAgICAgaWYgKGkgPCBOaykgew0KKyAgICAgICAgICAgIGN0eC0+a2V5c2NoZWRbaV0gPSBHRVRfMzJCSVRfTVNCX0ZJUlNUKGtleSArIDQgKiBpKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgdW5zaWduZWQgaW50IHRlbXAgPSBjdHgtPmtleXNjaGVkW2kgLSAxXTsNCisgICAgICAgICAgICBpZiAoaSAlIE5rID09IDApIHsNCisgICAgICAgICAgICAgICAgaW50IGEsIGIsIGMsIGQ7DQorICAgICAgICAgICAgICAgIGEgPSAodGVtcCA+PiAxNikgJiAweEZGOw0KKyAgICAgICAgICAgICAgICBiID0gKHRlbXAgPj4gOCkgJiAweEZGOw0KKyAgICAgICAgICAgICAgICBjID0gKHRlbXAgPj4gMCkgJiAweEZGOw0KKyAgICAgICAgICAgICAgICBkID0gKHRlbXAgPj4gMjQpICYgMHhGRjsNCisgICAgICAgICAgICAgICAgdGVtcCA9IFNib3hbYV0gXiByY29uc3Q7DQorICAgICAgICAgICAgICAgIHRlbXAgPSAodGVtcCA8PCA4KSB8IFNib3hbYl07DQorICAgICAgICAgICAgICAgIHRlbXAgPSAodGVtcCA8PCA4KSB8IFNib3hbY107DQorICAgICAgICAgICAgICAgIHRlbXAgPSAodGVtcCA8PCA4KSB8IFNib3hbZF07DQorICAgICAgICAgICAgICAgIHJjb25zdCA9IG11bGJ5MihyY29uc3QpOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaSAlIE5rID09IDQgJiYgTmsgPiA2KSB7DQorICAgICAgICAgICAgICAgIGludCBhLCBiLCBjLCBkOw0KKyAgICAgICAgICAgICAgICBhID0gKHRlbXAgPj4gMjQpICYgMHhGRjsNCisgICAgICAgICAgICAgICAgYiA9ICh0ZW1wID4+IDE2KSAmIDB4RkY7DQorICAgICAgICAgICAgICAgIGMgPSAodGVtcCA+PiA4KSAmIDB4RkY7DQorICAgICAgICAgICAgICAgIGQgPSAodGVtcCA+PiAwKSAmIDB4RkY7DQorICAgICAgICAgICAgICAgIHRlbXAgPSBTYm94W2FdOw0KKyAgICAgICAgICAgICAgICB0ZW1wID0gKHRlbXAgPDwgOCkgfCBTYm94W2JdOw0KKyAgICAgICAgICAgICAgICB0ZW1wID0gKHRlbXAgPDwgOCkgfCBTYm94W2NdOw0KKyAgICAgICAgICAgICAgICB0ZW1wID0gKHRlbXAgPDwgOCkgfCBTYm94W2RdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjdHgtPmtleXNjaGVkW2ldID0gY3R4LT5rZXlzY2hlZFtpIC0gTmtdIF4gdGVtcDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBmb3IgKGkgPSAwOyBpIDw9IGN0eC0+TnI7IGkrKykgew0KKyAgICAgICAgZm9yIChqID0gMDsgaiA8IGN0eC0+TmI7IGorKykgew0KKyAgICAgICAgICAgIHVuc2lnbmVkIGludCB0ZW1wOw0KKyAgICAgICAgICAgIHRlbXAgPSBjdHgtPmtleXNjaGVkWyhjdHgtPk5yIC0gaSkgKiBjdHgtPk5iICsgal07DQorICAgICAgICAgICAgaWYgKGkgIT0gMCAmJiBpICE9IGN0eC0+TnIpIHsNCisgICAgICAgICAgICAgICAgaW50IGEsIGIsIGMsIGQ7DQorICAgICAgICAgICAgICAgIGEgPSAodGVtcCA+PiAyNCkgJiAweEZGOw0KKyAgICAgICAgICAgICAgICBiID0gKHRlbXAgPj4gMTYpICYgMHhGRjsNCisgICAgICAgICAgICAgICAgYyA9ICh0ZW1wID4+IDgpICYgMHhGRjsNCisgICAgICAgICAgICAgICAgZCA9ICh0ZW1wID4+IDApICYgMHhGRjsNCisgICAgICAgICAgICAgICAgdGVtcCA9IEQwW1Nib3hbYV1dOw0KKyAgICAgICAgICAgICAgICB0ZW1wIF49IEQxW1Nib3hbYl1dOw0KKyAgICAgICAgICAgICAgICB0ZW1wIF49IEQyW1Nib3hbY11dOw0KKyAgICAgICAgICAgICAgICB0ZW1wIF49IEQzW1Nib3hbZF1dOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjdHgtPmludmtleXNjaGVkW2kgKiBjdHgtPk5iICsgal0gPSB0ZW1wOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3N0YXRpYyB2b2lkIGFlc19kZWNyeXB0KEFFU0NvbnRleHQgKiBjdHgsIHVuc2lnbmVkIGludCAqIGJsb2NrKQ0KK3sNCisgICAgY3R4LT5kZWNyeXB0KGN0eCwgYmxvY2spOw0KK30NCitzdGF0aWMgdm9pZCBhZXNfZGVjcnlwdF9jYmModW5zaWduZWQgY2hhciAqZGVzdCwgY29uc3QgdW5zaWduZWQgY2hhciAqc3JjLCBpbnQgbGVuLCBBRVNDb250ZXh0ICogY3R4KQ0KK3sNCisgICAgdW5zaWduZWQgaW50IGl2WzRdLCB4WzRdLCBjdFs0XTsNCisgICAgaW50IGk7DQorICAgIEFTU0VSVCgobGVuICYgMTUpID09IDApOw0KKyAgICBGWFNZU19tZW1jcHkzMihpdiwgY3R4LT5pdiwgc2l6ZW9mKGl2KSk7DQorICAgIHdoaWxlIChsZW4gPiAwKSB7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7DQorICAgICAgICAgICAgeFtpXSA9IGN0W2ldID0gR0VUXzMyQklUX01TQl9GSVJTVChzcmMgKyA0ICogaSk7DQorICAgICAgICB9DQorICAgICAgICBhZXNfZGVjcnlwdChjdHgsIHgpOw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgew0KKyAgICAgICAgICAgIFBVVF8zMkJJVF9NU0JfRklSU1QoZGVzdCArIDQgKiBpLCBpdltpXSBeIHhbaV0pOw0KKyAgICAgICAgICAgIGl2W2ldID0gY3RbaV07DQorICAgICAgICB9DQorICAgICAgICBkZXN0ICs9IDE2Ow0KKyAgICAgICAgc3JjICs9IDE2Ow0KKyAgICAgICAgbGVuIC09IDE2Ow0KKyAgICB9DQorICAgIEZYU1lTX21lbWNweTMyKGN0eC0+aXYsIGl2LCBzaXplb2YoaXYpKTsNCit9DQorc3RhdGljIHZvaWQgYWVzX2VuY3J5cHQoQUVTQ29udGV4dCAqIGN0eCwgdW5zaWduZWQgaW50ICogYmxvY2spDQorew0KKyAgICBjdHgtPmVuY3J5cHQoY3R4LCBibG9jayk7DQorfQ0KK3N0YXRpYyB2b2lkIGFlc19lbmNyeXB0X2NiYyh1bnNpZ25lZCBjaGFyICpkZXN0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpzcmMsIGludCBsZW4sIEFFU0NvbnRleHQgKiBjdHgpDQorew0KKyAgICB1bnNpZ25lZCBpbnQgaXZbNF07DQorICAgIGludCBpOw0KKyAgICBBU1NFUlQoKGxlbiAmIDE1KSA9PSAwKTsNCisgICAgRlhTWVNfbWVtY3B5MzIoaXYsIGN0eC0+aXYsIHNpemVvZihpdikpOw0KKyAgICB3aGlsZSAobGVuID4gMCkgew0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgew0KKyAgICAgICAgICAgIGl2W2ldIF49IEdFVF8zMkJJVF9NU0JfRklSU1Qoc3JjICsgNCAqIGkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgYWVzX2VuY3J5cHQoY3R4LCBpdik7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7DQorICAgICAgICAgICAgUFVUXzMyQklUX01TQl9GSVJTVChkZXN0ICsgNCAqIGksIGl2W2ldKTsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3QgKz0gMTY7DQorICAgICAgICBzcmMgKz0gMTY7DQorICAgICAgICBsZW4gLT0gMTY7DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIoY3R4LT5pdiwgaXYsIHNpemVvZihpdikpOw0KK30NCit2b2lkIENSWVBUX0FFU1NldEtleShGWF9MUFZPSUQgY29udGV4dCwgRlhfRFdPUkQgYmxvY2tsZW4sIEZYX0xQQ0JZVEUga2V5LCBGWF9EV09SRCBrZXlsZW4sIEZYX0JPT0wgYkVuY3J5cHQpDQorew0KKyAgICBhZXNfc2V0dXAoKEFFU0NvbnRleHQqKWNvbnRleHQsIGJsb2NrbGVuLCBrZXksIGtleWxlbik7DQorfQ0KK3ZvaWQgQ1JZUFRfQUVTU2V0SVYoRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQ0JZVEUgaXYpDQorew0KKyAgICBpbnQgaTsNCisgICAgZm9yIChpID0gMDsgaSA8ICgoQUVTQ29udGV4dCopY29udGV4dCktPk5iOyBpKyspIHsNCisgICAgICAgICgoQUVTQ29udGV4dCopY29udGV4dCktPml2W2ldID0gR0VUXzMyQklUX01TQl9GSVJTVChpdiArIDQgKiBpKTsNCisgICAgfQ0KK30NCit2b2lkIENSWVBUX0FFU0RlY3J5cHQoRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQllURSBkZXN0LCBGWF9MUENCWVRFIHNyYywgRlhfRFdPUkQgbGVuKQ0KK3sNCisgICAgYWVzX2RlY3J5cHRfY2JjKGRlc3QsIHNyYywgbGVuLCAoQUVTQ29udGV4dCopY29udGV4dCk7DQorfQ0KK3ZvaWQgQ1JZUFRfQUVTRW5jcnlwdChGWF9MUFZPSUQgY29udGV4dCwgRlhfTFBCWVRFIGRlc3QsIEZYX0xQQ0JZVEUgc3JjLCBGWF9EV09SRCBsZW4pDQorew0KKyAgICBhZXNfZW5jcnlwdF9jYmMoZGVzdCwgc3JjLCBsZW4sIChBRVNDb250ZXh0Kiljb250ZXh0KTsNCit9DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mZHJtL2NyeXB0by9meF9jcnlwdF9zaGEuY3BwIGIvY29yZS9zcmMvZmRybS9jcnlwdG8vZnhfY3J5cHRfc2hhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2FiY2I3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZmRybS9jcnlwdG8vZnhfY3J5cHRfc2hhLmNwcApAQCAtMCwwICsxLDc0MiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mZHJtL2Z4X2NyeXB0LmgiDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICB1bnNpZ25lZCBpbnQgaFs1XTsNCisgICAgdW5zaWduZWQgY2hhciBibG9ja1s2NF07DQorICAgIGludCBibGt1c2VkOw0KKyAgICB1bnNpZ25lZCBpbnQgbGVuaGksIGxlbmxvOw0KK30gU0hBX1N0YXRlOw0KKyNkZWZpbmUgcm9sKHgseSkgKCAoKHgpIDw8ICh5KSkgfCAoKCh1bnNpZ25lZCBpbnQpeCkgPj4gKDMyLXkpKSApDQorc3RhdGljIHZvaWQgU0hBX0NvcmVfSW5pdCh1bnNpZ25lZCBpbnQgaFs1XSkNCit7DQorICAgIGhbMF0gPSAweDY3NDUyMzAxOw0KKyAgICBoWzFdID0gMHhlZmNkYWI4OTsNCisgICAgaFsyXSA9IDB4OThiYWRjZmU7DQorICAgIGhbM10gPSAweDEwMzI1NDc2Ow0KKyAgICBoWzRdID0gMHhjM2QyZTFmMDsNCit9DQorc3RhdGljIHZvaWQgU0hBVHJhbnNmb3JtKHVuc2lnbmVkIGludCAqIGRpZ2VzdCwgdW5zaWduZWQgaW50ICogYmxvY2spDQorew0KKyAgICB1bnNpZ25lZCBpbnQgd1s4MF07DQorICAgIHVuc2lnbmVkIGludCBhLCBiLCBjLCBkLCBlOw0KKyAgICBpbnQgdDsNCisgICAgZm9yICh0ID0gMDsgdCA8IDE2OyB0KyspIHsNCisgICAgICAgIHdbdF0gPSBibG9ja1t0XTsNCisgICAgfQ0KKyAgICBmb3IgKHQgPSAxNjsgdCA8IDgwOyB0KyspIHsNCisgICAgICAgIHVuc2lnbmVkIGludCB0bXAgPSB3W3QgLSAzXSBeIHdbdCAtIDhdIF4gd1t0IC0gMTRdIF4gd1t0IC0gMTZdOw0KKyAgICAgICAgd1t0XSA9IHJvbCh0bXAsIDEpOw0KKyAgICB9DQorICAgIGEgPSBkaWdlc3RbMF07DQorICAgIGIgPSBkaWdlc3RbMV07DQorICAgIGMgPSBkaWdlc3RbMl07DQorICAgIGQgPSBkaWdlc3RbM107DQorICAgIGUgPSBkaWdlc3RbNF07DQorICAgIGZvciAodCA9IDA7IHQgPCAyMDsgdCsrKSB7DQorICAgICAgICB1bnNpZ25lZCBpbnQgdG1wID0NCisgICAgICAgICAgICByb2woYSwgNSkgKyAoKGIgJiBjKSB8IChkICYgfmIpKSArIGUgKyB3W3RdICsgMHg1YTgyNzk5OTsNCisgICAgICAgIGUgPSBkOw0KKyAgICAgICAgZCA9IGM7DQorICAgICAgICBjID0gcm9sKGIsIDMwKTsNCisgICAgICAgIGIgPSBhOw0KKyAgICAgICAgYSA9IHRtcDsNCisgICAgfQ0KKyAgICBmb3IgKHQgPSAyMDsgdCA8IDQwOyB0KyspIHsNCisgICAgICAgIHVuc2lnbmVkIGludCB0bXAgPSByb2woYSwgNSkgKyAoYiBeIGMgXiBkKSArIGUgKyB3W3RdICsgMHg2ZWQ5ZWJhMTsNCisgICAgICAgIGUgPSBkOw0KKyAgICAgICAgZCA9IGM7DQorICAgICAgICBjID0gcm9sKGIsIDMwKTsNCisgICAgICAgIGIgPSBhOw0KKyAgICAgICAgYSA9IHRtcDsNCisgICAgfQ0KKyAgICBmb3IgKHQgPSA0MDsgdCA8IDYwOyB0KyspIHsNCisgICAgICAgIHVuc2lnbmVkIGludCB0bXAgPSByb2woYSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSkgKyAoKGIgJiBjKSB8IChiICYgZCkgfCAoYyAmIGQpKSArIGUgKyB3W3RdICsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmMWJiY2RjOw0KKyAgICAgICAgZSA9IGQ7DQorICAgICAgICBkID0gYzsNCisgICAgICAgIGMgPSByb2woYiwgMzApOw0KKyAgICAgICAgYiA9IGE7DQorICAgICAgICBhID0gdG1wOw0KKyAgICB9DQorICAgIGZvciAodCA9IDYwOyB0IDwgODA7IHQrKykgew0KKyAgICAgICAgdW5zaWduZWQgaW50IHRtcCA9IHJvbChhLCA1KSArIChiIF4gYyBeIGQpICsgZSArIHdbdF0gKyAweGNhNjJjMWQ2Ow0KKyAgICAgICAgZSA9IGQ7DQorICAgICAgICBkID0gYzsNCisgICAgICAgIGMgPSByb2woYiwgMzApOw0KKyAgICAgICAgYiA9IGE7DQorICAgICAgICBhID0gdG1wOw0KKyAgICB9DQorICAgIGRpZ2VzdFswXSArPSBhOw0KKyAgICBkaWdlc3RbMV0gKz0gYjsNCisgICAgZGlnZXN0WzJdICs9IGM7DQorICAgIGRpZ2VzdFszXSArPSBkOw0KKyAgICBkaWdlc3RbNF0gKz0gZTsNCit9DQordm9pZCBDUllQVF9TSEExU3RhcnQoRlhfTFBWT0lEIGNvbnRleHQpDQorew0KKyAgICBTSEFfU3RhdGUgKiBzID0gKFNIQV9TdGF0ZSopY29udGV4dDsNCisgICAgU0hBX0NvcmVfSW5pdChzLT5oKTsNCisgICAgcy0+YmxrdXNlZCA9IDA7DQorICAgIHMtPmxlbmhpID0gcy0+bGVubG8gPSAwOw0KK30NCit2b2lkIENSWVBUX1NIQTFVcGRhdGUoRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQ0JZVEUgZGF0YSwgRlhfRFdPUkQgc2l6ZSkNCit7DQorICAgIFNIQV9TdGF0ZSAqIHMgPSAoU0hBX1N0YXRlKiljb250ZXh0Ow0KKyAgICB1bnNpZ25lZCBjaGFyICpxID0gKHVuc2lnbmVkIGNoYXIgKilkYXRhOw0KKyAgICB1bnNpZ25lZCBpbnQgd29yZGJsb2NrWzE2XTsNCisgICAgaW50IGxlbiA9IHNpemU7DQorICAgIHVuc2lnbmVkIGludCBsZW53ID0gbGVuOw0KKyAgICBpbnQgaTsNCisgICAgcy0+bGVubG8gKz0gbGVudzsNCisgICAgcy0+bGVuaGkgKz0gKHMtPmxlbmxvIDwgbGVudyk7DQorICAgIGlmIChzLT5ibGt1c2VkICYmIHMtPmJsa3VzZWQgKyBsZW4gPCA2NCkgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIocy0+YmxvY2sgKyBzLT5ibGt1c2VkLCBxLCBsZW4pOw0KKyAgICAgICAgcy0+YmxrdXNlZCArPSBsZW47DQorICAgIH0gZWxzZSB7DQorICAgICAgICB3aGlsZSAocy0+YmxrdXNlZCArIGxlbiA+PSA2NCkgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKHMtPmJsb2NrICsgcy0+YmxrdXNlZCwgcSwgNjQgLSBzLT5ibGt1c2VkKTsNCisgICAgICAgICAgICBxICs9IDY0IC0gcy0+YmxrdXNlZDsNCisgICAgICAgICAgICBsZW4gLT0gNjQgLSBzLT5ibGt1c2VkOw0KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7DQorICAgICAgICAgICAgICAgIHdvcmRibG9ja1tpXSA9DQorICAgICAgICAgICAgICAgICAgICAoKCh1bnNpZ25lZCBpbnQpIHMtPmJsb2NrW2kgKiA0ICsgMF0pIDw8IDI0KSB8DQorICAgICAgICAgICAgICAgICAgICAoKCh1bnNpZ25lZCBpbnQpIHMtPmJsb2NrW2kgKiA0ICsgMV0pIDw8IDE2KSB8DQorICAgICAgICAgICAgICAgICAgICAoKCh1bnNpZ25lZCBpbnQpIHMtPmJsb2NrW2kgKiA0ICsgMl0pIDw8IDgpIHwNCisgICAgICAgICAgICAgICAgICAgICgoKHVuc2lnbmVkIGludCkgcy0+YmxvY2tbaSAqIDQgKyAzXSkgPDwgMCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIFNIQVRyYW5zZm9ybShzLT5oLCB3b3JkYmxvY2spOw0KKyAgICAgICAgICAgIHMtPmJsa3VzZWQgPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIocy0+YmxvY2ssIHEsIGxlbik7DQorICAgICAgICBzLT5ibGt1c2VkID0gbGVuOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1JZUFRfU0hBMUZpbmlzaChGWF9MUFZPSUQgY29udGV4dCwgRlhfQllURSBkaWdlc3RbMjBdKQ0KK3sNCisgICAgU0hBX1N0YXRlICogcyA9IChTSEFfU3RhdGUqKWNvbnRleHQ7DQorICAgIGludCBpOw0KKyAgICBpbnQgcGFkOw0KKyAgICB1bnNpZ25lZCBjaGFyIGNbNjRdOw0KKyAgICB1bnNpZ25lZCBpbnQgbGVuaGksIGxlbmxvOw0KKyAgICBpZiAocy0+YmxrdXNlZCA+PSA1Nikgew0KKyAgICAgICAgcGFkID0gNTYgKyA2NCAtIHMtPmJsa3VzZWQ7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwYWQgPSA1NiAtIHMtPmJsa3VzZWQ7DQorICAgIH0NCisgICAgbGVuaGkgPSAocy0+bGVuaGkgPDwgMykgfCAocy0+bGVubG8gPj4gKDMyIC0gMykpOw0KKyAgICBsZW5sbyA9IChzLT5sZW5sbyA8PCAzKTsNCisgICAgRlhTWVNfbWVtc2V0MzIoYywgMCwgcGFkKTsNCisgICAgY1swXSA9IDB4ODA7DQorICAgIENSWVBUX1NIQTFVcGRhdGUocywgYywgcGFkKTsNCisgICAgY1swXSA9IChsZW5oaSA+PiAyNCkgJiAweEZGOw0KKyAgICBjWzFdID0gKGxlbmhpID4+IDE2KSAmIDB4RkY7DQorICAgIGNbMl0gPSAobGVuaGkgPj4gOCkgJiAweEZGOw0KKyAgICBjWzNdID0gKGxlbmhpID4+IDApICYgMHhGRjsNCisgICAgY1s0XSA9IChsZW5sbyA+PiAyNCkgJiAweEZGOw0KKyAgICBjWzVdID0gKGxlbmxvID4+IDE2KSAmIDB4RkY7DQorICAgIGNbNl0gPSAobGVubG8gPj4gOCkgJiAweEZGOw0KKyAgICBjWzddID0gKGxlbmxvID4+IDApICYgMHhGRjsNCisgICAgQ1JZUFRfU0hBMVVwZGF0ZShzLCBjLCA4KTsNCisgICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykgew0KKyAgICAgICAgZGlnZXN0W2kgKiA0XSA9IChzLT5oW2ldID4+IDI0KSAmIDB4RkY7DQorICAgICAgICBkaWdlc3RbaSAqIDQgKyAxXSA9IChzLT5oW2ldID4+IDE2KSAmIDB4RkY7DQorICAgICAgICBkaWdlc3RbaSAqIDQgKyAyXSA9IChzLT5oW2ldID4+IDgpICYgMHhGRjsNCisgICAgICAgIGRpZ2VzdFtpICogNCArIDNdID0gKHMtPmhbaV0pICYgMHhGRjsNCisgICAgfQ0KK30NCit2b2lkIENSWVBUX1NIQTFHZW5lcmF0ZShGWF9MUENCWVRFIGRhdGEsIEZYX0RXT1JEIHNpemUsIEZYX0JZVEUgZGlnZXN0WzIwXSkNCit7DQorICAgIFNIQV9TdGF0ZSBzOw0KKyAgICBDUllQVF9TSEExU3RhcnQoJnMpOw0KKyAgICBDUllQVF9TSEExVXBkYXRlKCZzLCBkYXRhLCBzaXplKTsNCisgICAgQ1JZUFRfU0hBMUZpbmlzaCgmcywgZGlnZXN0KTsNCit9DQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICBGWF9EV09SRCB0b3RhbFsyXTsNCisgICAgRlhfRFdPUkQgc3RhdGVbOF07DQorICAgIEZYX0JZVEUgYnVmZmVyWzY0XTsNCit9DQorc2hhMjU2X2NvbnRleHQ7DQorI2RlZmluZSBHRVRfRlhfRFdPUkQobixiLGkpICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIChuKSA9ICggKEZYX0RXT1JEKSAoYilbKGkpICAgIF0gPDwgMjQgKSAgICAgICBcDQorICAgICAgICAgICAgICB8ICggKEZYX0RXT1JEKSAoYilbKGkpICsgMV0gPDwgMTYgKSAgICAgICBcDQorICAgICAgICAgICAgICB8ICggKEZYX0RXT1JEKSAoYilbKGkpICsgMl0gPDwgIDggKSAgICAgICBcDQorICAgICAgICAgICAgICB8ICggKEZYX0RXT1JEKSAoYilbKGkpICsgM10gICAgICAgKTsgICAgICBcDQorICAgIH0NCisjZGVmaW5lIFBVVF9GWF9EV09SRChuLGIsaSkgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKGIpWyhpKSAgICBdID0gKEZYX0JZVEUpICggKG4pID4+IDI0ICk7ICAgICAgIFwNCisgICAgICAgIChiKVsoaSkgKyAxXSA9IChGWF9CWVRFKSAoIChuKSA+PiAxNiApOyAgICAgICBcDQorICAgICAgICAoYilbKGkpICsgMl0gPSAoRlhfQllURSkgKCAobikgPj4gIDggKTsgICAgICAgXA0KKyAgICAgICAgKGIpWyhpKSArIDNdID0gKEZYX0JZVEUpICggKG4pICAgICAgICk7ICAgICAgIFwNCisgICAgfQ0KK3ZvaWQgQ1JZUFRfU0hBMjU2U3RhcnQoIEZYX0xQVk9JRCBjb250ZXh0ICkNCit7DQorICAgIHNoYTI1Nl9jb250ZXh0ICpjdHggPSAoc2hhMjU2X2NvbnRleHQgKiljb250ZXh0Ow0KKyAgICBjdHgtPnRvdGFsWzBdID0gMDsNCisgICAgY3R4LT50b3RhbFsxXSA9IDA7DQorICAgIGN0eC0+c3RhdGVbMF0gPSAweDZBMDlFNjY3Ow0KKyAgICBjdHgtPnN0YXRlWzFdID0gMHhCQjY3QUU4NTsNCisgICAgY3R4LT5zdGF0ZVsyXSA9IDB4M0M2RUYzNzI7DQorICAgIGN0eC0+c3RhdGVbM10gPSAweEE1NEZGNTNBOw0KKyAgICBjdHgtPnN0YXRlWzRdID0gMHg1MTBFNTI3RjsNCisgICAgY3R4LT5zdGF0ZVs1XSA9IDB4OUIwNTY4OEM7DQorICAgIGN0eC0+c3RhdGVbNl0gPSAweDFGODNEOUFCOw0KKyAgICBjdHgtPnN0YXRlWzddID0gMHg1QkUwQ0QxOTsNCit9DQorc3RhdGljIHZvaWQgc2hhMjU2X3Byb2Nlc3MoIHNoYTI1Nl9jb250ZXh0ICpjdHgsIGNvbnN0IEZYX0JZVEUgZGF0YVs2NF0gKQ0KK3sNCisgICAgRlhfRFdPUkQgdGVtcDEsIHRlbXAyLCBXWzY0XTsNCisgICAgRlhfRFdPUkQgQSwgQiwgQywgRCwgRSwgRiwgRywgSDsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzBdLCAgZGF0YSwgIDAgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzFdLCAgZGF0YSwgIDQgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzJdLCAgZGF0YSwgIDggKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzNdLCAgZGF0YSwgMTIgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzRdLCAgZGF0YSwgMTYgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzVdLCAgZGF0YSwgMjAgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzZdLCAgZGF0YSwgMjQgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzddLCAgZGF0YSwgMjggKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzhdLCAgZGF0YSwgMzIgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzldLCAgZGF0YSwgMzYgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzEwXSwgZGF0YSwgNDAgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzExXSwgZGF0YSwgNDQgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzEyXSwgZGF0YSwgNDggKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzEzXSwgZGF0YSwgNTIgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzE0XSwgZGF0YSwgNTYgKTsNCisgICAgR0VUX0ZYX0RXT1JEKCBXWzE1XSwgZGF0YSwgNjAgKTsNCisjZGVmaW5lICBTSFIoeCxuKSAoKHggJiAweEZGRkZGRkZGKSA+PiBuKQ0KKyNkZWZpbmUgUk9UUih4LG4pIChTSFIoeCxuKSB8ICh4IDw8ICgzMiAtIG4pKSkNCisjZGVmaW5lIFMwKHgpIChST1RSKHgsIDcpIF4gUk9UUih4LDE4KSBeICBTSFIoeCwgMykpDQorI2RlZmluZSBTMSh4KSAoUk9UUih4LDE3KSBeIFJPVFIoeCwxOSkgXiAgU0hSKHgsMTApKQ0KKyNkZWZpbmUgUzIoeCkgKFJPVFIoeCwgMikgXiBST1RSKHgsMTMpIF4gUk9UUih4LDIyKSkNCisjZGVmaW5lIFMzKHgpIChST1RSKHgsIDYpIF4gUk9UUih4LDExKSBeIFJPVFIoeCwyNSkpDQorI2RlZmluZSBGMCh4LHkseikgKCh4ICYgeSkgfCAoeiAmICh4IHwgeSkpKQ0KKyNkZWZpbmUgRjEoeCx5LHopICh6IF4gKHggJiAoeSBeIHopKSkNCisjZGVmaW5lIFIodCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICBXW3RdID0gUzEoV1t0IC0gIDJdKSArIFdbdCAtICA3XSArICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgICAgUzAoV1t0IC0gMTVdKSArIFdbdCAtIDE2XSAgICAgICAgICAgIFwNCisgICAgKQ0KKyNkZWZpbmUgUChhLGIsYyxkLGUsZixnLGgseCxLKSAgICAgICAgICAgICAgICAgIFwNCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgdGVtcDEgPSBoICsgUzMoZSkgKyBGMShlLGYsZykgKyBLICsgeDsgICAgICBcDQorICAgICAgICB0ZW1wMiA9IFMyKGEpICsgRjAoYSxiLGMpOyAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIGQgKz0gdGVtcDE7IGggPSB0ZW1wMSArIHRlbXAyOyAgICAgICAgICAgICAgXA0KKyAgICB9DQorICAgIEEgPSBjdHgtPnN0YXRlWzBdOw0KKyAgICBCID0gY3R4LT5zdGF0ZVsxXTsNCisgICAgQyA9IGN0eC0+c3RhdGVbMl07DQorICAgIEQgPSBjdHgtPnN0YXRlWzNdOw0KKyAgICBFID0gY3R4LT5zdGF0ZVs0XTsNCisgICAgRiA9IGN0eC0+c3RhdGVbNV07DQorICAgIEcgPSBjdHgtPnN0YXRlWzZdOw0KKyAgICBIID0gY3R4LT5zdGF0ZVs3XTsNCisgICAgUCggQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgV1sgMF0sIDB4NDI4QTJGOTggKTsNCisgICAgUCggSCwgQSwgQiwgQywgRCwgRSwgRiwgRywgV1sgMV0sIDB4NzEzNzQ0OTEgKTsNCisgICAgUCggRywgSCwgQSwgQiwgQywgRCwgRSwgRiwgV1sgMl0sIDB4QjVDMEZCQ0YgKTsNCisgICAgUCggRiwgRywgSCwgQSwgQiwgQywgRCwgRSwgV1sgM10sIDB4RTlCNURCQTUgKTsNCisgICAgUCggRSwgRiwgRywgSCwgQSwgQiwgQywgRCwgV1sgNF0sIDB4Mzk1NkMyNUIgKTsNCisgICAgUCggRCwgRSwgRiwgRywgSCwgQSwgQiwgQywgV1sgNV0sIDB4NTlGMTExRjEgKTsNCisgICAgUCggQywgRCwgRSwgRiwgRywgSCwgQSwgQiwgV1sgNl0sIDB4OTIzRjgyQTQgKTsNCisgICAgUCggQiwgQywgRCwgRSwgRiwgRywgSCwgQSwgV1sgN10sIDB4QUIxQzVFRDUgKTsNCisgICAgUCggQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgV1sgOF0sIDB4RDgwN0FBOTggKTsNCisgICAgUCggSCwgQSwgQiwgQywgRCwgRSwgRiwgRywgV1sgOV0sIDB4MTI4MzVCMDEgKTsNCisgICAgUCggRywgSCwgQSwgQiwgQywgRCwgRSwgRiwgV1sxMF0sIDB4MjQzMTg1QkUgKTsNCisgICAgUCggRiwgRywgSCwgQSwgQiwgQywgRCwgRSwgV1sxMV0sIDB4NTUwQzdEQzMgKTsNCisgICAgUCggRSwgRiwgRywgSCwgQSwgQiwgQywgRCwgV1sxMl0sIDB4NzJCRTVENzQgKTsNCisgICAgUCggRCwgRSwgRiwgRywgSCwgQSwgQiwgQywgV1sxM10sIDB4ODBERUIxRkUgKTsNCisgICAgUCggQywgRCwgRSwgRiwgRywgSCwgQSwgQiwgV1sxNF0sIDB4OUJEQzA2QTcgKTsNCisgICAgUCggQiwgQywgRCwgRSwgRiwgRywgSCwgQSwgV1sxNV0sIDB4QzE5QkYxNzQgKTsNCisgICAgUCggQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgUigxNiksIDB4RTQ5QjY5QzEgKTsNCisgICAgUCggSCwgQSwgQiwgQywgRCwgRSwgRiwgRywgUigxNyksIDB4RUZCRTQ3ODYgKTsNCisgICAgUCggRywgSCwgQSwgQiwgQywgRCwgRSwgRiwgUigxOCksIDB4MEZDMTlEQzYgKTsNCisgICAgUCggRiwgRywgSCwgQSwgQiwgQywgRCwgRSwgUigxOSksIDB4MjQwQ0ExQ0MgKTsNCisgICAgUCggRSwgRiwgRywgSCwgQSwgQiwgQywgRCwgUigyMCksIDB4MkRFOTJDNkYgKTsNCisgICAgUCggRCwgRSwgRiwgRywgSCwgQSwgQiwgQywgUigyMSksIDB4NEE3NDg0QUEgKTsNCisgICAgUCggQywgRCwgRSwgRiwgRywgSCwgQSwgQiwgUigyMiksIDB4NUNCMEE5REMgKTsNCisgICAgUCggQiwgQywgRCwgRSwgRiwgRywgSCwgQSwgUigyMyksIDB4NzZGOTg4REEgKTsNCisgICAgUCggQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgUigyNCksIDB4OTgzRTUxNTIgKTsNCisgICAgUCggSCwgQSwgQiwgQywgRCwgRSwgRiwgRywgUigyNSksIDB4QTgzMUM2NkQgKTsNCisgICAgUCggRywgSCwgQSwgQiwgQywgRCwgRSwgRiwgUigyNiksIDB4QjAwMzI3QzggKTsNCisgICAgUCggRiwgRywgSCwgQSwgQiwgQywgRCwgRSwgUigyNyksIDB4QkY1OTdGQzcgKTsNCisgICAgUCggRSwgRiwgRywgSCwgQSwgQiwgQywgRCwgUigyOCksIDB4QzZFMDBCRjMgKTsNCisgICAgUCggRCwgRSwgRiwgRywgSCwgQSwgQiwgQywgUigyOSksIDB4RDVBNzkxNDcgKTsNCisgICAgUCggQywgRCwgRSwgRiwgRywgSCwgQSwgQiwgUigzMCksIDB4MDZDQTYzNTEgKTsNCisgICAgUCggQiwgQywgRCwgRSwgRiwgRywgSCwgQSwgUigzMSksIDB4MTQyOTI5NjcgKTsNCisgICAgUCggQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgUigzMiksIDB4MjdCNzBBODUgKTsNCisgICAgUCggSCwgQSwgQiwgQywgRCwgRSwgRiwgRywgUigzMyksIDB4MkUxQjIxMzggKTsNCisgICAgUCggRywgSCwgQSwgQiwgQywgRCwgRSwgRiwgUigzNCksIDB4NEQyQzZERkMgKTsNCisgICAgUCggRiwgRywgSCwgQSwgQiwgQywgRCwgRSwgUigzNSksIDB4NTMzODBEMTMgKTsNCisgICAgUCggRSwgRiwgRywgSCwgQSwgQiwgQywgRCwgUigzNiksIDB4NjUwQTczNTQgKTsNCisgICAgUCggRCwgRSwgRiwgRywgSCwgQSwgQiwgQywgUigzNyksIDB4NzY2QTBBQkIgKTsNCisgICAgUCggQywgRCwgRSwgRiwgRywgSCwgQSwgQiwgUigzOCksIDB4ODFDMkM5MkUgKTsNCisgICAgUCggQiwgQywgRCwgRSwgRiwgRywgSCwgQSwgUigzOSksIDB4OTI3MjJDODUgKTsNCisgICAgUCggQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgUig0MCksIDB4QTJCRkU4QTEgKTsNCisgICAgUCggSCwgQSwgQiwgQywgRCwgRSwgRiwgRywgUig0MSksIDB4QTgxQTY2NEIgKTsNCisgICAgUCggRywgSCwgQSwgQiwgQywgRCwgRSwgRiwgUig0MiksIDB4QzI0QjhCNzAgKTsNCisgICAgUCggRiwgRywgSCwgQSwgQiwgQywgRCwgRSwgUig0MyksIDB4Qzc2QzUxQTMgKTsNCisgICAgUCggRSwgRiwgRywgSCwgQSwgQiwgQywgRCwgUig0NCksIDB4RDE5MkU4MTkgKTsNCisgICAgUCggRCwgRSwgRiwgRywgSCwgQSwgQiwgQywgUig0NSksIDB4RDY5OTA2MjQgKTsNCisgICAgUCggQywgRCwgRSwgRiwgRywgSCwgQSwgQiwgUig0NiksIDB4RjQwRTM1ODUgKTsNCisgICAgUCggQiwgQywgRCwgRSwgRiwgRywgSCwgQSwgUig0NyksIDB4MTA2QUEwNzAgKTsNCisgICAgUCggQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgUig0OCksIDB4MTlBNEMxMTYgKTsNCisgICAgUCggSCwgQSwgQiwgQywgRCwgRSwgRiwgRywgUig0OSksIDB4MUUzNzZDMDggKTsNCisgICAgUCggRywgSCwgQSwgQiwgQywgRCwgRSwgRiwgUig1MCksIDB4Mjc0ODc3NEMgKTsNCisgICAgUCggRiwgRywgSCwgQSwgQiwgQywgRCwgRSwgUig1MSksIDB4MzRCMEJDQjUgKTsNCisgICAgUCggRSwgRiwgRywgSCwgQSwgQiwgQywgRCwgUig1MiksIDB4MzkxQzBDQjMgKTsNCisgICAgUCggRCwgRSwgRiwgRywgSCwgQSwgQiwgQywgUig1MyksIDB4NEVEOEFBNEEgKTsNCisgICAgUCggQywgRCwgRSwgRiwgRywgSCwgQSwgQiwgUig1NCksIDB4NUI5Q0NBNEYgKTsNCisgICAgUCggQiwgQywgRCwgRSwgRiwgRywgSCwgQSwgUig1NSksIDB4NjgyRTZGRjMgKTsNCisgICAgUCggQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgUig1NiksIDB4NzQ4RjgyRUUgKTsNCisgICAgUCggSCwgQSwgQiwgQywgRCwgRSwgRiwgRywgUig1NyksIDB4NzhBNTYzNkYgKTsNCisgICAgUCggRywgSCwgQSwgQiwgQywgRCwgRSwgRiwgUig1OCksIDB4ODRDODc4MTQgKTsNCisgICAgUCggRiwgRywgSCwgQSwgQiwgQywgRCwgRSwgUig1OSksIDB4OENDNzAyMDggKTsNCisgICAgUCggRSwgRiwgRywgSCwgQSwgQiwgQywgRCwgUig2MCksIDB4OTBCRUZGRkEgKTsNCisgICAgUCggRCwgRSwgRiwgRywgSCwgQSwgQiwgQywgUig2MSksIDB4QTQ1MDZDRUIgKTsNCisgICAgUCggQywgRCwgRSwgRiwgRywgSCwgQSwgQiwgUig2MiksIDB4QkVGOUEzRjcgKTsNCisgICAgUCggQiwgQywgRCwgRSwgRiwgRywgSCwgQSwgUig2MyksIDB4QzY3MTc4RjIgKTsNCisgICAgY3R4LT5zdGF0ZVswXSArPSBBOw0KKyAgICBjdHgtPnN0YXRlWzFdICs9IEI7DQorICAgIGN0eC0+c3RhdGVbMl0gKz0gQzsNCisgICAgY3R4LT5zdGF0ZVszXSArPSBEOw0KKyAgICBjdHgtPnN0YXRlWzRdICs9IEU7DQorICAgIGN0eC0+c3RhdGVbNV0gKz0gRjsNCisgICAgY3R4LT5zdGF0ZVs2XSArPSBHOw0KKyAgICBjdHgtPnN0YXRlWzddICs9IEg7DQorfQ0KK3ZvaWQgQ1JZUFRfU0hBMjU2VXBkYXRlKCB2b2lkKiBjb250ZXh0LCBGWF9MUENCWVRFIGlucHV0LCBGWF9EV09SRCBsZW5ndGggKQ0KK3sNCisgICAgc2hhMjU2X2NvbnRleHQgKmN0eCA9IChzaGEyNTZfY29udGV4dCAqKWNvbnRleHQ7DQorICAgIEZYX0RXT1JEIGxlZnQsIGZpbGw7DQorICAgIGlmKCAhIGxlbmd0aCApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBsZWZ0ID0gY3R4LT50b3RhbFswXSAmIDB4M0Y7DQorICAgIGZpbGwgPSA2NCAtIGxlZnQ7DQorICAgIGN0eC0+dG90YWxbMF0gKz0gbGVuZ3RoOw0KKyAgICBjdHgtPnRvdGFsWzBdICY9IDB4RkZGRkZGRkY7DQorICAgIGlmKCBjdHgtPnRvdGFsWzBdIDwgbGVuZ3RoICkgew0KKyAgICAgICAgY3R4LT50b3RhbFsxXSsrOw0KKyAgICB9DQorICAgIGlmKCBsZWZ0ICYmIGxlbmd0aCA+PSBmaWxsICkgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoICh2b2lkICopIChjdHgtPmJ1ZmZlciArIGxlZnQpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIGlucHV0LCBmaWxsICk7DQorICAgICAgICBzaGEyNTZfcHJvY2VzcyggY3R4LCBjdHgtPmJ1ZmZlciApOw0KKyAgICAgICAgbGVuZ3RoIC09IGZpbGw7DQorICAgICAgICBpbnB1dCAgKz0gZmlsbDsNCisgICAgICAgIGxlZnQgPSAwOw0KKyAgICB9DQorICAgIHdoaWxlKCBsZW5ndGggPj0gNjQgKSB7DQorICAgICAgICBzaGEyNTZfcHJvY2VzcyggY3R4LCBpbnB1dCApOw0KKyAgICAgICAgbGVuZ3RoIC09IDY0Ow0KKyAgICAgICAgaW5wdXQgICs9IDY0Ow0KKyAgICB9DQorICAgIGlmKCBsZW5ndGggKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMiggKHZvaWQgKikgKGN0eC0+YnVmZmVyICsgbGVmdCksDQorICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgaW5wdXQsIGxlbmd0aCApOw0KKyAgICB9DQorfQ0KK3N0YXRpYyBjb25zdCBGWF9CWVRFIHNoYTI1Nl9wYWRkaW5nWzY0XSA9IHsNCisgICAgMHg4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMA0KK307DQordm9pZCBDUllQVF9TSEEyNTZGaW5pc2goIEZYX0xQVk9JRCBjb250ZXh0LCBGWF9CWVRFIGRpZ2VzdFszMl0gKQ0KK3sNCisgICAgc2hhMjU2X2NvbnRleHQgKmN0eCA9IChzaGEyNTZfY29udGV4dCAqKWNvbnRleHQ7DQorICAgIEZYX0RXT1JEIGxhc3QsIHBhZG47DQorICAgIEZYX0RXT1JEIGhpZ2gsIGxvdzsNCisgICAgRlhfQllURSBtc2dsZW5bOF07DQorICAgIGhpZ2ggPSAoIGN0eC0+dG90YWxbMF0gPj4gMjkgKQ0KKyAgICAgICAgICAgfCAoIGN0eC0+dG90YWxbMV0gPDwgIDMgKTsNCisgICAgbG93ICA9ICggY3R4LT50b3RhbFswXSA8PCAgMyApOw0KKyAgICBQVVRfRlhfRFdPUkQoIGhpZ2gsIG1zZ2xlbiwgMCApOw0KKyAgICBQVVRfRlhfRFdPUkQoIGxvdywgIG1zZ2xlbiwgNCApOw0KKyAgICBsYXN0ID0gY3R4LT50b3RhbFswXSAmIDB4M0Y7DQorICAgIHBhZG4gPSAoIGxhc3QgPCA1NiApID8gKCA1NiAtIGxhc3QgKSA6ICggMTIwIC0gbGFzdCApOw0KKyAgICBDUllQVF9TSEEyNTZVcGRhdGUoIGN0eCwgc2hhMjU2X3BhZGRpbmcsIHBhZG4gKTsNCisgICAgQ1JZUFRfU0hBMjU2VXBkYXRlKCBjdHgsIG1zZ2xlbiwgOCApOw0KKyAgICBQVVRfRlhfRFdPUkQoIGN0eC0+c3RhdGVbMF0sIGRpZ2VzdCwgIDAgKTsNCisgICAgUFVUX0ZYX0RXT1JEKCBjdHgtPnN0YXRlWzFdLCBkaWdlc3QsICA0ICk7DQorICAgIFBVVF9GWF9EV09SRCggY3R4LT5zdGF0ZVsyXSwgZGlnZXN0LCAgOCApOw0KKyAgICBQVVRfRlhfRFdPUkQoIGN0eC0+c3RhdGVbM10sIGRpZ2VzdCwgMTIgKTsNCisgICAgUFVUX0ZYX0RXT1JEKCBjdHgtPnN0YXRlWzRdLCBkaWdlc3QsIDE2ICk7DQorICAgIFBVVF9GWF9EV09SRCggY3R4LT5zdGF0ZVs1XSwgZGlnZXN0LCAyMCApOw0KKyAgICBQVVRfRlhfRFdPUkQoIGN0eC0+c3RhdGVbNl0sIGRpZ2VzdCwgMjQgKTsNCisgICAgUFVUX0ZYX0RXT1JEKCBjdHgtPnN0YXRlWzddLCBkaWdlc3QsIDI4ICk7DQorfQ0KK3ZvaWQgQ1JZUFRfU0hBMjU2R2VuZXJhdGUoRlhfTFBDQllURSBkYXRhLCBGWF9EV09SRCBzaXplLCBGWF9CWVRFIGRpZ2VzdFszMl0pDQorew0KKyAgICBzaGEyNTZfY29udGV4dCBjdHg7DQorICAgIENSWVBUX1NIQTI1NlN0YXJ0KCZjdHgpOw0KKyAgICBDUllQVF9TSEEyNTZVcGRhdGUoJmN0eCwgZGF0YSwgc2l6ZSk7DQorICAgIENSWVBUX1NIQTI1NkZpbmlzaCgmY3R4LCBkaWdlc3QpOw0KK30NCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIEZYX1VJTlQ2NAl0b3RhbFsyXTsNCisgICAgRlhfVUlOVDY0CXN0YXRlWzhdOw0KKyAgICBGWF9CWVRFCQlidWZmZXJbMTI4XTsNCit9IHNoYTM4NF9jb250ZXh0Ow0KK0ZYX1VJTlQ2NCBGWF9hdG82NGkoRlhfTFBDU1RSIHN0cikNCit7DQorICAgIEZYU1lTX2Fzc2VydChzdHIgIT0gTlVMTCk7DQorICAgIEZYX1VJTlQ2NCByZXQgPSAwOw0KKyAgICBpbnQgbGVuID0gKGludClGWFNZU19zdHJsZW4oc3RyKTsNCisgICAgbGVuID0gbGVuID4gMTYgPyAxNiA6IGxlbjsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgew0KKyAgICAgICAgaWYgKGkpIHsNCisgICAgICAgICAgICByZXQgPDw9IDQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3RyW2ldID49ICcwJyAmJiBzdHJbaV0gPD0gJzknKSB7DQorICAgICAgICAgICAgcmV0IHw9IChzdHJbaV0gLSAnMCcpICYgMHhGRjsNCisgICAgICAgIH0gZWxzZSBpZiAoc3RyW2ldID49ICdhJyAmJiBzdHJbaV0gPD0gJ2YnKSB7DQorICAgICAgICAgICAgcmV0IHw9IChzdHJbaV0gLSAnYScgKyAxMCkgJiAweEZGOw0KKyAgICAgICAgfSBlbHNlIGlmIChzdHJbaV0gPj0gJ0EnICYmIHN0cltpXSA8PSAnRicpIHsNCisgICAgICAgICAgICByZXQgfD0gKHN0cltpXSAtICdBJyArIDEwKSAmIDB4RkY7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEZYU1lTX2Fzc2VydChGQUxTRSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHJldDsNCit9DQordm9pZCBDUllQVF9TSEEzODRTdGFydChGWF9MUFZPSUQgY29udGV4dCkNCit7DQorICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBzaGEzODRfY29udGV4dCAqY3R4ID0gKHNoYTM4NF9jb250ZXh0ICopY29udGV4dDsNCisgICAgRlhTWVNfbWVtc2V0MzIoY3R4LCAwLCBzaXplb2Yoc2hhMzg0X2NvbnRleHQpKTsNCisgICAgY3R4LT5zdGF0ZVswXSA9IEZYX2F0bzY0aSgiY2JiYjlkNWRjMTA1OWVkOCIpOw0KKyAgICBjdHgtPnN0YXRlWzFdID0gRlhfYXRvNjRpKCI2MjlhMjkyYTM2N2NkNTA3Iik7DQorICAgIGN0eC0+c3RhdGVbMl0gPSBGWF9hdG82NGkoIjkxNTkwMTVhMzA3MGRkMTciKTsNCisgICAgY3R4LT5zdGF0ZVszXSA9IEZYX2F0bzY0aSgiMTUyZmVjZDhmNzBlNTkzOSIpOw0KKyAgICBjdHgtPnN0YXRlWzRdID0gRlhfYXRvNjRpKCI2NzMzMjY2N2ZmYzAwYjMxIik7DQorICAgIGN0eC0+c3RhdGVbNV0gPSBGWF9hdG82NGkoIjhlYjQ0YTg3Njg1ODE1MTEiKTsNCisgICAgY3R4LT5zdGF0ZVs2XSA9IEZYX2F0bzY0aSgiZGIwYzJlMGQ2NGY5OGZhNyIpOw0KKyAgICBjdHgtPnN0YXRlWzddID0gRlhfYXRvNjRpKCI0N2I1NDgxZGJlZmE0ZmE0Iik7DQorfQ0KKyNkZWZpbmUgU0hBMzg0X0YwKHgseSx6KSAoKHggJiB5KSB8ICh6ICYgKHggfCB5KSkpDQorI2RlZmluZSBTSEEzODRfRjEoeCx5LHopICh6IF4gKHggJiAoeSBeIHopKSkNCisjZGVmaW5lIFNIQTM4NF9TSFIoeCxuKSAoeCA+PiBuKQ0KKyNkZWZpbmUgU0hBMzg0X1JPVFIoeCxuKSAoU0hBMzg0X1NIUih4LCBuKSB8IHggPDwgKDY0IC0gbikpDQorI2RlZmluZSBTSEEzODRfUzAoeCkgKFNIQTM4NF9ST1RSKHgsIDEpIF4gU0hBMzg0X1JPVFIoeCwgOCkgXiAgU0hBMzg0X1NIUih4LCA3KSkNCisjZGVmaW5lIFNIQTM4NF9TMSh4KSAoU0hBMzg0X1JPVFIoeCwxOSkgXiBTSEEzODRfUk9UUih4LCA2MSkgXiAgU0hBMzg0X1NIUih4LCA2KSkNCisjZGVmaW5lIFNIQTM4NF9TMih4KSAoU0hBMzg0X1JPVFIoeCwgMjgpIF4gU0hBMzg0X1JPVFIoeCwgMzQpIF4gU0hBMzg0X1JPVFIoeCwgMzkpKQ0KKyNkZWZpbmUgU0hBMzg0X1MzKHgpIChTSEEzODRfUk9UUih4LCAxNCkgXiBTSEEzODRfUk9UUih4LDE4KSBeIFNIQTM4NF9ST1RSKHgsIDQxKSkNCisjZGVmaW5lIFNIQTM4NF9QKGEsYixjLGQsZSxmLGcsaCx4LEspCQkJCQkJCVwNCisgICAgewkJCQkJCQkJCQkJCQkJCQlcDQorICAgICAgICB0ZW1wMSA9IGggKyBTSEEzODRfUzMoZSkgKyBTSEEzODRfRjEoZSxmLGcpICsgSyArIHg7CQlcDQorICAgICAgICB0ZW1wMiA9IFNIQTM4NF9TMihhKSArIFNIQTM4NF9GMChhLGIsYyk7CQkJCQlcDQorICAgICAgICBkICs9IHRlbXAxOyBoID0gdGVtcDEgKyB0ZW1wMjsJCQkJCQkJCVwNCisgICAgfQ0KK3N0YXRpYyBjb25zdCBGWF9CWVRFIHNoYTM4NF9wYWRkaW5nWzEyOF0gPSB7DQorICAgIDB4ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorfTsNCisjZGVmaW5lIFNIQTM4NF9SKHQpIChXW3RdID0gU0hBMzg0X1MxKFdbdCAtICAyXSkgKyBXW3QgLSAgN10gKyBTSEEzODRfUzAoV1t0IC0gMTVdKSArIFdbdCAtIDE2XSkNCitzdGF0aWMgRlhfTFBDU1RSIGNvbnN0YW50c1tdID0gew0KKyAgICAiNDI4YTJmOThkNzI4YWUyMiIsDQorICAgICI3MTM3NDQ5MTIzZWY2NWNkIiwNCisgICAgImI1YzBmYmNmZWM0ZDNiMmYiLA0KKyAgICAiZTliNWRiYTU4MTg5ZGJiYyIsDQorICAgICIzOTU2YzI1YmYzNDhiNTM4IiwNCisgICAgIjU5ZjExMWYxYjYwNWQwMTkiLA0KKyAgICAiOTIzZjgyYTRhZjE5NGY5YiIsDQorICAgICJhYjFjNWVkNWRhNmQ4MTE4IiwNCisgICAgImQ4MDdhYTk4YTMwMzAyNDIiLA0KKyAgICAiMTI4MzViMDE0NTcwNmZiZSIsDQorICAgICIyNDMxODViZTRlZTRiMjhjIiwNCisgICAgIjU1MGM3ZGMzZDVmZmI0ZTIiLA0KKyAgICAiNzJiZTVkNzRmMjdiODk2ZiIsDQorICAgICI4MGRlYjFmZTNiMTY5NmIxIiwNCisgICAgIjliZGMwNmE3MjVjNzEyMzUiLA0KKyAgICAiYzE5YmYxNzRjZjY5MjY5NCIsDQorICAgICJlNDliNjljMTllZjE0YWQyIiwNCisgICAgImVmYmU0Nzg2Mzg0ZjI1ZTMiLA0KKyAgICAiMGZjMTlkYzY4YjhjZDViNSIsDQorICAgICIyNDBjYTFjYzc3YWM5YzY1IiwNCisgICAgIjJkZTkyYzZmNTkyYjAyNzUiLA0KKyAgICAiNGE3NDg0YWE2ZWE2ZTQ4MyIsDQorICAgICI1Y2IwYTlkY2JkNDFmYmQ0IiwNCisgICAgIjc2Zjk4OGRhODMxMTUzYjUiLA0KKyAgICAiOTgzZTUxNTJlZTY2ZGZhYiIsDQorICAgICJhODMxYzY2ZDJkYjQzMjEwIiwNCisgICAgImIwMDMyN2M4OThmYjIxM2YiLA0KKyAgICAiYmY1OTdmYzdiZWVmMGVlNCIsDQorICAgICJjNmUwMGJmMzNkYTg4ZmMyIiwNCisgICAgImQ1YTc5MTQ3OTMwYWE3MjUiLA0KKyAgICAiMDZjYTYzNTFlMDAzODI2ZiIsDQorICAgICIxNDI5Mjk2NzBhMGU2ZTcwIiwNCisgICAgIjI3YjcwYTg1NDZkMjJmZmMiLA0KKyAgICAiMmUxYjIxMzg1YzI2YzkyNiIsDQorICAgICI0ZDJjNmRmYzVhYzQyYWVkIiwNCisgICAgIjUzMzgwZDEzOWQ5NWIzZGYiLA0KKyAgICAiNjUwYTczNTQ4YmFmNjNkZSIsDQorICAgICI3NjZhMGFiYjNjNzdiMmE4IiwNCisgICAgIjgxYzJjOTJlNDdlZGFlZTYiLA0KKyAgICAiOTI3MjJjODUxNDgyMzUzYiIsDQorICAgICJhMmJmZThhMTRjZjEwMzY0IiwNCisgICAgImE4MWE2NjRiYmM0MjMwMDEiLA0KKyAgICAiYzI0YjhiNzBkMGY4OTc5MSIsDQorICAgICJjNzZjNTFhMzA2NTRiZTMwIiwNCisgICAgImQxOTJlODE5ZDZlZjUyMTgiLA0KKyAgICAiZDY5OTA2MjQ1NTY1YTkxMCIsDQorICAgICJmNDBlMzU4NTU3NzEyMDJhIiwNCisgICAgIjEwNmFhMDcwMzJiYmQxYjgiLA0KKyAgICAiMTlhNGMxMTZiOGQyZDBjOCIsDQorICAgICIxZTM3NmMwODUxNDFhYjUzIiwNCisgICAgIjI3NDg3NzRjZGY4ZWViOTkiLA0KKyAgICAiMzRiMGJjYjVlMTliNDhhOCIsDQorICAgICIzOTFjMGNiM2M1Yzk1YTYzIiwNCisgICAgIjRlZDhhYTRhZTM0MThhY2IiLA0KKyAgICAiNWI5Y2NhNGY3NzYzZTM3MyIsDQorICAgICI2ODJlNmZmM2Q2YjJiOGEzIiwNCisgICAgIjc0OGY4MmVlNWRlZmIyZmMiLA0KKyAgICAiNzhhNTYzNmY0MzE3MmY2MCIsDQorICAgICI4NGM4NzgxNGExZjBhYjcyIiwNCisgICAgIjhjYzcwMjA4MWE2NDM5ZWMiLA0KKyAgICAiOTBiZWZmZmEyMzYzMWUyOCIsDQorICAgICJhNDUwNmNlYmRlODJiZGU5IiwNCisgICAgImJlZjlhM2Y3YjJjNjc5MTUiLA0KKyAgICAiYzY3MTc4ZjJlMzcyNTMyYiIsDQorICAgICJjYTI3M2VjZWVhMjY2MTljIiwNCisgICAgImQxODZiOGM3MjFjMGMyMDciLA0KKyAgICAiZWFkYTdkZDZjZGUwZWIxZSIsDQorICAgICJmNTdkNGY3ZmVlNmVkMTc4IiwNCisgICAgIjA2ZjA2N2FhNzIxNzZmYmEiLA0KKyAgICAiMGE2MzdkYzVhMmM4OThhNiIsDQorICAgICIxMTNmOTgwNGJlZjkwZGFlIiwNCisgICAgIjFiNzEwYjM1MTMxYzQ3MWIiLA0KKyAgICAiMjhkYjc3ZjUyMzA0N2Q4NCIsDQorICAgICIzMmNhYWI3YjQwYzcyNDkzIiwNCisgICAgIjNjOWViZTBhMTVjOWJlYmMiLA0KKyAgICAiNDMxZDY3YzQ5YzEwMGQ0YyIsDQorICAgICI0Y2M1ZDRiZWNiM2U0MmI2IiwNCisgICAgIjU5N2YyOTljZmM2NTdlMmEiLA0KKyAgICAiNWZjYjZmYWIzYWQ2ZmFlYyIsDQorICAgICI2YzQ0MTk4YzRhNDc1ODE3IiwNCit9Ow0KKyNkZWZpbmUgR0VUX0ZYXzY0V09SRChuLGIsaSkgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKG4pID0gKCAoRlhfVUlOVDY0KSAoYilbKGkpICAgIF0gPDwgNTYgKSAgICAgICBcDQorICAgICAgICAgICAgICB8ICggKEZYX1VJTlQ2NCkgKGIpWyhpKSArIDFdIDw8IDQ4ICkgICAgICAgXA0KKyAgICAgICAgICAgICAgfCAoIChGWF9VSU5UNjQpIChiKVsoaSkgKyAyXSA8PCA0MCApICAgICAgIFwNCisgICAgICAgICAgICAgIHwgKCAoRlhfVUlOVDY0KSAoYilbKGkpICsgM10gPDwgMzIgKSAgICAgIFwNCisgICAgICAgICAgICAgIHwgKCAoRlhfVUlOVDY0KSAoYilbKGkpICsgNF0gPDwgMjQgKSAgICAgICBcDQorICAgICAgICAgICAgICB8ICggKEZYX1VJTlQ2NCkgKGIpWyhpKSArIDVdIDw8IDE2ICkgICAgICAgXA0KKyAgICAgICAgICAgICAgfCAoIChGWF9VSU5UNjQpIChiKVsoaSkgKyA2XSA8PCAgOCApICAgICAgIFwNCisgICAgICAgICAgICAgIHwgKCAoRlhfVUlOVDY0KSAoYilbKGkpICsgN10gICAgICAgKTsgICAgICBcDQorICAgIH0NCisjZGVmaW5lIFBVVF9GWF82NERXT1JEKG4sYixpKSAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoYilbKGkpICAgIF0gPSAoRlhfQllURSkgKCAobikgPj4gNTYgKTsgICAgICAgXA0KKyAgICAgICAgKGIpWyhpKSArIDFdID0gKEZYX0JZVEUpICggKG4pID4+IDQ4ICk7ICAgICAgIFwNCisgICAgICAgIChiKVsoaSkgKyAyXSA9IChGWF9CWVRFKSAoIChuKSA+PiA0MCApOyAgICAgICBcDQorICAgICAgICAoYilbKGkpICsgM10gPSAoRlhfQllURSkgKCAobikgPj4gMzIgKTsgICAgICAgXA0KKyAgICAgICAgKGIpWyhpKSArIDRdID0gKEZYX0JZVEUpICggKG4pID4+IDI0ICk7ICAgICAgIFwNCisgICAgICAgIChiKVsoaSkgKyA1XSA9IChGWF9CWVRFKSAoIChuKSA+PiAxNiApOyAgICAgICBcDQorICAgICAgICAoYilbKGkpICsgNl0gPSAoRlhfQllURSkgKCAobikgPj4gIDggKTsgICAgICAgXA0KKyAgICAgICAgKGIpWyhpKSArIDddID0gKEZYX0JZVEUpICggKG4pICk7ICAgICAgIFwNCisgICAgfQ0KK3N0YXRpYyB2b2lkIHNoYTM4NF9wcm9jZXNzKCBzaGEzODRfY29udGV4dCAqY3R4LCBjb25zdCBGWF9CWVRFIGRhdGFbMTI4XSApDQorew0KKyAgICBGWF9VSU5UNjQgdGVtcDEsIHRlbXAyOw0KKyAgICBGWF9VSU5UNjQgQSwgQiwgQywgRCwgRSwgRiwgRywgSDsNCisgICAgRlhfVUlOVDY0IFdbODBdOw0KKyAgICBHRVRfRlhfNjRXT1JEKFdbMF0sIGRhdGEsIDApOw0KKyAgICBHRVRfRlhfNjRXT1JEKFdbMV0sIGRhdGEsIDgpOw0KKyAgICBHRVRfRlhfNjRXT1JEKFdbMl0sIGRhdGEsIDE2KTsNCisgICAgR0VUX0ZYXzY0V09SRChXWzNdLCBkYXRhLCAyNCk7DQorICAgIEdFVF9GWF82NFdPUkQoV1s0XSwgZGF0YSwgMzIpOw0KKyAgICBHRVRfRlhfNjRXT1JEKFdbNV0sIGRhdGEsIDQwKTsNCisgICAgR0VUX0ZYXzY0V09SRChXWzZdLCBkYXRhLCA0OCk7DQorICAgIEdFVF9GWF82NFdPUkQoV1s3XSwgZGF0YSwgNTYpOw0KKyAgICBHRVRfRlhfNjRXT1JEKFdbOF0sIGRhdGEsIDY0KTsNCisgICAgR0VUX0ZYXzY0V09SRChXWzldLCBkYXRhLCA3Mik7DQorICAgIEdFVF9GWF82NFdPUkQoV1sxMF0sIGRhdGEsIDgwKTsNCisgICAgR0VUX0ZYXzY0V09SRChXWzExXSwgZGF0YSwgODgpOw0KKyAgICBHRVRfRlhfNjRXT1JEKFdbMTJdLCBkYXRhLCA5Nik7DQorICAgIEdFVF9GWF82NFdPUkQoV1sxM10sIGRhdGEsIDEwNCk7DQorICAgIEdFVF9GWF82NFdPUkQoV1sxNF0sIGRhdGEsIDExMik7DQorICAgIEdFVF9GWF82NFdPUkQoV1sxNV0sIGRhdGEsIDEyMCk7DQorICAgIEEgPSBjdHgtPnN0YXRlWzBdOw0KKyAgICBCID0gY3R4LT5zdGF0ZVsxXTsNCisgICAgQyA9IGN0eC0+c3RhdGVbMl07DQorICAgIEQgPSBjdHgtPnN0YXRlWzNdOw0KKyAgICBFID0gY3R4LT5zdGF0ZVs0XTsNCisgICAgRiA9IGN0eC0+c3RhdGVbNV07DQorICAgIEcgPSBjdHgtPnN0YXRlWzZdOw0KKyAgICBIID0gY3R4LT5zdGF0ZVs3XTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgKytpKSB7DQorICAgICAgICBGWF9VSU5UNjQgdGVtcFs4XTsNCisgICAgICAgIGlmIChpIDwgMikgew0KKyAgICAgICAgICAgIHRlbXBbMF0gPSBXW2kgKiA4XTsNCisgICAgICAgICAgICB0ZW1wWzFdID0gV1tpICogOCArIDFdOw0KKyAgICAgICAgICAgIHRlbXBbMl0gPSBXW2kgKiA4ICsgMl07DQorICAgICAgICAgICAgdGVtcFszXSA9IFdbaSAqIDggKyAzXTsNCisgICAgICAgICAgICB0ZW1wWzRdID0gV1tpICogOCArIDRdOw0KKyAgICAgICAgICAgIHRlbXBbNV0gPSBXW2kgKiA4ICsgNV07DQorICAgICAgICAgICAgdGVtcFs2XSA9IFdbaSAqIDggKyA2XTsNCisgICAgICAgICAgICB0ZW1wWzddID0gV1tpICogOCArIDddOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0ZW1wWzBdID0gU0hBMzg0X1IoaSAqIDgpOw0KKyAgICAgICAgICAgIHRlbXBbMV0gPSBTSEEzODRfUihpICogOCArIDEpOw0KKyAgICAgICAgICAgIHRlbXBbMl0gPSBTSEEzODRfUihpICogOCArIDIpOw0KKyAgICAgICAgICAgIHRlbXBbM10gPSBTSEEzODRfUihpICogOCArIDMpOw0KKyAgICAgICAgICAgIHRlbXBbNF0gPSBTSEEzODRfUihpICogOCArIDQpOw0KKyAgICAgICAgICAgIHRlbXBbNV0gPSBTSEEzODRfUihpICogOCArIDUpOw0KKyAgICAgICAgICAgIHRlbXBbNl0gPSBTSEEzODRfUihpICogOCArIDYpOw0KKyAgICAgICAgICAgIHRlbXBbN10gPSBTSEEzODRfUihpICogOCArIDcpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgU0hBMzg0X1AoIEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIHRlbXBbIDBdLCBGWF9hdG82NGkoY29uc3RhbnRzW2kgKiA4ICAgIF0pICk7DQorICAgICAgICBTSEEzODRfUCggSCwgQSwgQiwgQywgRCwgRSwgRiwgRywgdGVtcFsgMV0sIEZYX2F0bzY0aShjb25zdGFudHNbaSAqIDggKyAxXSkgKTsNCisgICAgICAgIFNIQTM4NF9QKCBHLCBILCBBLCBCLCBDLCBELCBFLCBGLCB0ZW1wWyAyXSwgRlhfYXRvNjRpKGNvbnN0YW50c1tpICogOCArIDJdKSApOw0KKyAgICAgICAgU0hBMzg0X1AoIEYsIEcsIEgsIEEsIEIsIEMsIEQsIEUsIHRlbXBbIDNdLCBGWF9hdG82NGkoY29uc3RhbnRzW2kgKiA4ICsgM10pICk7DQorICAgICAgICBTSEEzODRfUCggRSwgRiwgRywgSCwgQSwgQiwgQywgRCwgdGVtcFsgNF0sIEZYX2F0bzY0aShjb25zdGFudHNbaSAqIDggKyA0XSkgKTsNCisgICAgICAgIFNIQTM4NF9QKCBELCBFLCBGLCBHLCBILCBBLCBCLCBDLCB0ZW1wWyA1XSwgRlhfYXRvNjRpKGNvbnN0YW50c1tpICogOCArIDVdKSApOw0KKyAgICAgICAgU0hBMzg0X1AoIEMsIEQsIEUsIEYsIEcsIEgsIEEsIEIsIHRlbXBbIDZdLCBGWF9hdG82NGkoY29uc3RhbnRzW2kgKiA4ICsgNl0pICk7DQorICAgICAgICBTSEEzODRfUCggQiwgQywgRCwgRSwgRiwgRywgSCwgQSwgdGVtcFsgN10sIEZYX2F0bzY0aShjb25zdGFudHNbaSAqIDggKyA3XSkgKTsNCisgICAgfQ0KKyAgICBjdHgtPnN0YXRlWzBdICs9IEE7DQorICAgIGN0eC0+c3RhdGVbMV0gKz0gQjsNCisgICAgY3R4LT5zdGF0ZVsyXSArPSBDOw0KKyAgICBjdHgtPnN0YXRlWzNdICs9IEQ7DQorICAgIGN0eC0+c3RhdGVbNF0gKz0gRTsNCisgICAgY3R4LT5zdGF0ZVs1XSArPSBGOw0KKyAgICBjdHgtPnN0YXRlWzZdICs9IEc7DQorICAgIGN0eC0+c3RhdGVbN10gKz0gSDsNCit9DQordm9pZCBDUllQVF9TSEEzODRVcGRhdGUoRlhfTFBWT0lEIGNvbnRleHQsIEZYX0xQQ0JZVEUgaW5wdXQsIEZYX0RXT1JEIGxlbmd0aCkNCit7DQorICAgIHNoYTM4NF9jb250ZXh0ICpjdHggPSAoc2hhMzg0X2NvbnRleHQgKiljb250ZXh0Ow0KKyAgICBGWF9EV09SRCBsZWZ0LCBmaWxsOw0KKyAgICBpZiggISBsZW5ndGggKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbGVmdCA9IChGWF9EV09SRCljdHgtPnRvdGFsWzBdICYgMHg3RjsNCisgICAgZmlsbCA9IDEyOCAtIGxlZnQ7DQorICAgIGN0eC0+dG90YWxbMF0gKz0gbGVuZ3RoOw0KKyAgICBpZiggY3R4LT50b3RhbFswXSA8IGxlbmd0aCApIHsNCisgICAgICAgIGN0eC0+dG90YWxbMV0rKzsNCisgICAgfQ0KKyAgICBpZiggbGVmdCAmJiBsZW5ndGggPj0gZmlsbCApIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKCAodm9pZCAqKSAoY3R4LT5idWZmZXIgKyBsZWZ0KSwNCisgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSBpbnB1dCwgZmlsbCApOw0KKyAgICAgICAgc2hhMzg0X3Byb2Nlc3MoIGN0eCwgY3R4LT5idWZmZXIgKTsNCisgICAgICAgIGxlbmd0aCAtPSBmaWxsOw0KKyAgICAgICAgaW5wdXQgICs9IGZpbGw7DQorICAgICAgICBsZWZ0ID0gMDsNCisgICAgfQ0KKyAgICB3aGlsZSggbGVuZ3RoID49IDEyOCApIHsNCisgICAgICAgIHNoYTM4NF9wcm9jZXNzKCBjdHgsIGlucHV0ICk7DQorICAgICAgICBsZW5ndGggLT0gMTI4Ow0KKyAgICAgICAgaW5wdXQgICs9IDEyODsNCisgICAgfQ0KKyAgICBpZiggbGVuZ3RoICkgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoICh2b2lkICopIChjdHgtPmJ1ZmZlciArIGxlZnQpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIGlucHV0LCBsZW5ndGggKTsNCisgICAgfQ0KK30NCit2b2lkIENSWVBUX1NIQTM4NEZpbmlzaChGWF9MUFZPSUQgY29udGV4dCwgRlhfQllURSBkaWdlc3RbNDhdKQ0KK3sNCisgICAgc2hhMzg0X2NvbnRleHQgKmN0eCA9IChzaGEzODRfY29udGV4dCAqKWNvbnRleHQ7DQorICAgIEZYX0RXT1JEIGxhc3QsIHBhZG47DQorICAgIEZYX0JZVEUgbXNnbGVuWzE2XTsNCisgICAgRlhTWVNfbWVtc2V0MzIobXNnbGVuLCAwLCAxNik7DQorICAgIEZYX1VJTlQ2NCBoaWdoLCBsb3c7DQorICAgIGhpZ2ggPSAoIGN0eC0+dG90YWxbMF0gPj4gMjkgKQ0KKyAgICAgICAgICAgfCAoIGN0eC0+dG90YWxbMV0gPDwgIDMgKTsNCisgICAgbG93ICA9ICggY3R4LT50b3RhbFswXSA8PCAgMyApOw0KKyAgICBQVVRfRlhfNjREV09SRCggaGlnaCwgbXNnbGVuLCAwICk7DQorICAgIFBVVF9GWF82NERXT1JEKCBsb3csICBtc2dsZW4sIDggKTsNCisgICAgbGFzdCA9IChGWF9EV09SRCljdHgtPnRvdGFsWzBdICYgMHg3RjsNCisgICAgcGFkbiA9ICggbGFzdCA8IDExMiApID8gKCAxMTIgLSBsYXN0ICkgOiAoIDI0MCAtIGxhc3QgKTsNCisgICAgQ1JZUFRfU0hBMzg0VXBkYXRlKCBjdHgsIHNoYTM4NF9wYWRkaW5nLCBwYWRuICk7DQorICAgIENSWVBUX1NIQTM4NFVwZGF0ZSggY3R4LCBtc2dsZW4sIDE2ICk7DQorICAgIFBVVF9GWF82NERXT1JEKGN0eC0+c3RhdGVbMF0sIGRpZ2VzdCwgMCk7DQorICAgIFBVVF9GWF82NERXT1JEKGN0eC0+c3RhdGVbMV0sIGRpZ2VzdCwgOCk7DQorICAgIFBVVF9GWF82NERXT1JEKGN0eC0+c3RhdGVbMl0sIGRpZ2VzdCwgMTYpOw0KKyAgICBQVVRfRlhfNjREV09SRChjdHgtPnN0YXRlWzNdLCBkaWdlc3QsIDI0KTsNCisgICAgUFVUX0ZYXzY0RFdPUkQoY3R4LT5zdGF0ZVs0XSwgZGlnZXN0LCAzMik7DQorICAgIFBVVF9GWF82NERXT1JEKGN0eC0+c3RhdGVbNV0sIGRpZ2VzdCwgNDApOw0KK30NCit2b2lkIENSWVBUX1NIQTM4NEdlbmVyYXRlKEZYX0xQQ0JZVEUgZGF0YSwgRlhfRFdPUkQgc2l6ZSwgRlhfQllURSBkaWdlc3RbNjRdKQ0KK3sNCisgICAgc2hhMzg0X2NvbnRleHQgY29udGV4dDsNCisgICAgQ1JZUFRfU0hBMzg0U3RhcnQoJmNvbnRleHQpOw0KKyAgICBDUllQVF9TSEEzODRVcGRhdGUoJmNvbnRleHQsIGRhdGEsIHNpemUpOw0KKyAgICBDUllQVF9TSEEzODRGaW5pc2goJmNvbnRleHQsIGRpZ2VzdCk7DQorfQ0KK3ZvaWQgQ1JZUFRfU0hBNTEyU3RhcnQoRlhfTFBWT0lEIGNvbnRleHQpDQorew0KKyAgICBpZiAoY29udGV4dCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgc2hhMzg0X2NvbnRleHQgKmN0eCA9IChzaGEzODRfY29udGV4dCAqKWNvbnRleHQ7DQorICAgIEZYU1lTX21lbXNldDMyKGN0eCwgMCwgc2l6ZW9mKHNoYTM4NF9jb250ZXh0KSk7DQorICAgIGN0eC0+c3RhdGVbMF0gPSBGWF9hdG82NGkoIjZhMDllNjY3ZjNiY2M5MDgiKTsNCisgICAgY3R4LT5zdGF0ZVsxXSA9IEZYX2F0bzY0aSgiYmI2N2FlODU4NGNhYTczYiIpOw0KKyAgICBjdHgtPnN0YXRlWzJdID0gRlhfYXRvNjRpKCIzYzZlZjM3MmZlOTRmODJiIik7DQorICAgIGN0eC0+c3RhdGVbM10gPSBGWF9hdG82NGkoImE1NGZmNTNhNWYxZDM2ZjEiKTsNCisgICAgY3R4LT5zdGF0ZVs0XSA9IEZYX2F0bzY0aSgiNTEwZTUyN2ZhZGU2ODJkMSIpOw0KKyAgICBjdHgtPnN0YXRlWzVdID0gRlhfYXRvNjRpKCI5YjA1Njg4YzJiM2U2YzFmIik7DQorICAgIGN0eC0+c3RhdGVbNl0gPSBGWF9hdG82NGkoIjFmODNkOWFiZmI0MWJkNmIiKTsNCisgICAgY3R4LT5zdGF0ZVs3XSA9IEZYX2F0bzY0aSgiNWJlMGNkMTkxMzdlMjE3OSIpOw0KK30NCit2b2lkIENSWVBUX1NIQTUxMlVwZGF0ZShGWF9MUFZPSUQgY29udGV4dCwgRlhfTFBDQllURSBkYXRhLCBGWF9EV09SRCBzaXplKQ0KK3sNCisgICAgQ1JZUFRfU0hBMzg0VXBkYXRlKGNvbnRleHQsIGRhdGEsIHNpemUpOw0KK30NCit2b2lkIENSWVBUX1NIQTUxMkZpbmlzaChGWF9MUFZPSUQgY29udGV4dCwgRlhfQllURSBkaWdlc3RbNjRdKQ0KK3sNCisgICAgc2hhMzg0X2NvbnRleHQgKmN0eCA9IChzaGEzODRfY29udGV4dCAqKWNvbnRleHQ7DQorICAgIEZYX0RXT1JEIGxhc3QsIHBhZG47DQorICAgIEZYX0JZVEUgbXNnbGVuWzE2XTsNCisgICAgRlhTWVNfbWVtc2V0MzIobXNnbGVuLCAwLCAxNik7DQorICAgIEZYX1VJTlQ2NCBoaWdoLCBsb3c7DQorICAgIGhpZ2ggPSAoIGN0eC0+dG90YWxbMF0gPj4gMjkgKQ0KKyAgICAgICAgICAgfCAoIGN0eC0+dG90YWxbMV0gPDwgIDMgKTsNCisgICAgbG93ICA9ICggY3R4LT50b3RhbFswXSA8PCAgMyApOw0KKyAgICBQVVRfRlhfNjREV09SRCggaGlnaCwgbXNnbGVuLCAwICk7DQorICAgIFBVVF9GWF82NERXT1JEKCBsb3csICBtc2dsZW4sIDggKTsNCisgICAgbGFzdCA9IChGWF9EV09SRCljdHgtPnRvdGFsWzBdICYgMHg3RjsNCisgICAgcGFkbiA9ICggbGFzdCA8IDExMiApID8gKCAxMTIgLSBsYXN0ICkgOiAoIDI0MCAtIGxhc3QgKTsNCisgICAgQ1JZUFRfU0hBNTEyVXBkYXRlKCBjdHgsIHNoYTM4NF9wYWRkaW5nLCBwYWRuICk7DQorICAgIENSWVBUX1NIQTUxMlVwZGF0ZSggY3R4LCBtc2dsZW4sIDE2ICk7DQorICAgIFBVVF9GWF82NERXT1JEKGN0eC0+c3RhdGVbMF0sIGRpZ2VzdCwgMCk7DQorICAgIFBVVF9GWF82NERXT1JEKGN0eC0+c3RhdGVbMV0sIGRpZ2VzdCwgOCk7DQorICAgIFBVVF9GWF82NERXT1JEKGN0eC0+c3RhdGVbMl0sIGRpZ2VzdCwgMTYpOw0KKyAgICBQVVRfRlhfNjREV09SRChjdHgtPnN0YXRlWzNdLCBkaWdlc3QsIDI0KTsNCisgICAgUFVUX0ZYXzY0RFdPUkQoY3R4LT5zdGF0ZVs0XSwgZGlnZXN0LCAzMik7DQorICAgIFBVVF9GWF82NERXT1JEKGN0eC0+c3RhdGVbNV0sIGRpZ2VzdCwgNDApOw0KKyAgICBQVVRfRlhfNjREV09SRChjdHgtPnN0YXRlWzZdLCBkaWdlc3QsIDQ4KTsNCisgICAgUFVUX0ZYXzY0RFdPUkQoY3R4LT5zdGF0ZVs3XSwgZGlnZXN0LCA1Nik7DQorfQ0KK3ZvaWQgQ1JZUFRfU0hBNTEyR2VuZXJhdGUoRlhfTFBDQllURSBkYXRhLCBGWF9EV09SRCBzaXplLCBGWF9CWVRFIGRpZ2VzdFs2NF0pDQorew0KKyAgICBzaGEzODRfY29udGV4dCBjb250ZXh0Ow0KKyAgICBDUllQVF9TSEE1MTJTdGFydCgmY29udGV4dCk7DQorICAgIENSWVBUX1NIQTUxMlVwZGF0ZSgmY29udGV4dCwgZGF0YSwgc2l6ZSk7DQorICAgIENSWVBUX1NIQTUxMkZpbmlzaCgmY29udGV4dCwgZGlnZXN0KTsNCit9DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfYmFzaWNfbW9kdWxlLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9iYXNpY19tb2R1bGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNjQ4YjQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfYmFzaWNfbW9kdWxlLmNwcApAQCAtMCwwICsxLDE3OCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnhjb2RlYy9meF9jb2RlYy5oIg0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCitzdGF0aWMgQ1BERl9Nb2R1bGVNZ3IqCWdfRlBERkFQSV9wRGVmYXVsdE1nciA9IE5VTEw7DQorQ1BERl9Nb2R1bGVNZ3IqIENQREZfTW9kdWxlTWdyOjpHZXQoKQ0KK3sNCisgICAgcmV0dXJuIGdfRlBERkFQSV9wRGVmYXVsdE1ncjsNCit9DQordm9pZCBDUERGX01vZHVsZU1ncjo6Q3JlYXRlKCkNCit7DQorICAgIGdfRlBERkFQSV9wRGVmYXVsdE1nciA9IEZYX05FVyBDUERGX01vZHVsZU1ncjsNCisgICAgZ19GUERGQVBJX3BEZWZhdWx0TWdyLT5Jbml0aWFsaXplKCk7DQorfQ0KK3ZvaWQgQ1BERl9Nb2R1bGVNZ3I6OkRlc3Ryb3koKQ0KK3sNCisgICAgaWYgKGdfRlBERkFQSV9wRGVmYXVsdE1ncikgew0KKyAgICAgICAgZGVsZXRlIGdfRlBERkFQSV9wRGVmYXVsdE1ncjsNCisgICAgfQ0KKyAgICBnX0ZQREZBUElfcERlZmF1bHRNZ3IgPSBOVUxMOw0KK30NCitDUERGX01vZHVsZU1ncjo6Q1BERl9Nb2R1bGVNZ3IoKQ0KK3sNCisgICAgbV9wQ29kZWNNb2R1bGUgPSBOVUxMOw0KKyAgICBtX3BQYWdlTW9kdWxlID0gTlVMTDsNCisgICAgbV9wUmVuZGVyTW9kdWxlID0gTlVMTDsNCisgICAgbV9GaWxlQnVmU2l6ZSA9IDUxMjsNCit9DQordm9pZCBDUERGX01vZHVsZU1ncjo6SW5pdGlhbGl6ZSgpDQorew0KKyAgICBJbml0TW9kdWxlcygpOw0KKyAgICBtX0ZpbGVCdWZTaXplID0gNTEyOw0KK30NCit2b2lkIENQREZfTW9kdWxlTWdyOjpJbml0TW9kdWxlcygpDQorew0KKyAgICBtX3BDb2RlY01vZHVsZSA9IE5VTEw7DQorICAgIG1fcFBhZ2VNb2R1bGUgPSBGWF9ORVcgQ1BERl9QYWdlTW9kdWxlRGVmOw0KKyAgICBtX3BSZW5kZXJNb2R1bGUgPSBGWF9ORVcgQ1BERl9SZW5kZXJNb2R1bGVEZWY7DQorfQ0KK0NQREZfTW9kdWxlTWdyOjp+Q1BERl9Nb2R1bGVNZ3IoKQ0KK3sNCisgICAgaWYgKG1fcFBhZ2VNb2R1bGUpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BQYWdlTW9kdWxlOw0KKyAgICB9DQorICAgIGlmIChtX3BSZW5kZXJNb2R1bGUpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BSZW5kZXJNb2R1bGU7DQorICAgIH0NCit9DQordm9pZCBDUERGX01vZHVsZU1ncjo6U2V0RG93bmxvYWRDYWxsYmFjayhGWF9CT09MICgqY2FsbGJhY2spKEZYX0xQQ1NUUiBtb2R1bGVfbmFtZSkpDQorew0KKyAgICBtX3BEb3dubG9hZENhbGxiYWNrID0gY2FsbGJhY2s7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Nb2R1bGVNZ3I6OkRvd25sb2FkTW9kdWxlKEZYX0xQQ1NUUiBtb2R1bGVfbmFtZSkNCit7DQorICAgIGlmIChtX3BEb3dubG9hZENhbGxiYWNrID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRG93bmxvYWRDYWxsYmFjayhtb2R1bGVfbmFtZSk7DQorfQ0KK3N0YXRpYyBDRlhfQnl0ZVN0cmluZyBfR2V0UGF0aChjb25zdCBDRlhfQnl0ZVN0cmluZyYgZm9sZGVyLCBGWF9MUENTVFIgbmFtZSkNCit7DQorICAgIEZYX1NUUlNJWkUgZm9sZGVyX2xlbiA9IGZvbGRlci5HZXRMZW5ndGgoKTsNCisjaWYgX0ZYX09TXyA9PSBfRlhfU1lNQklBTl8gfHwgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgaWYgKGZvbGRlcltmb2xkZXJfbGVuIC0gMV0gPT0gJ1xcJykgew0KKyAgICAgICAgcmV0dXJuIGZvbGRlciArIG5hbWU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gKGZvbGRlciArICJcXCIpICsgbmFtZTsNCisgICAgfQ0KKyNlbHNlDQorICAgIGlmIChmb2xkZXJbZm9sZGVyX2xlbiAtIDFdID09ICcvJykgew0KKyAgICAgICAgcmV0dXJuIGZvbGRlciArIG5hbWU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gKGZvbGRlciArICIvIikgKyBuYW1lOw0KKyAgICB9DQorI2VuZGlmDQorfQ0KK3ZvaWQgQ1BERl9Nb2R1bGVNZ3I6OlNldE1vZHVsZVBhdGgoRlhfTFBDU1RSIG1vZHVsZV9uYW1lLCBGWF9MUENTVFIgcGF0aCkNCit7DQorICAgIGlmIChtb2R1bGVfbmFtZSA9PSBOVUxMIHx8IG1vZHVsZV9uYW1lWzBdID09IDApIHsNCisgICAgICAgIG1fRGVmYXVsdE1vZHVsZVBhdGggPSBwYXRoOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9Nb2R1bGVQYXRoTGlzdC5TZXRBdChtb2R1bGVfbmFtZSwgRlhfTkVXIENGWF9CeXRlU3RyaW5nKHBhdGgsIC0xKSk7DQorICAgIH0NCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ1BERl9Nb2R1bGVNZ3I6OkdldE1vZHVsZUZpbGVQYXRoKEZYX0xQQ1NUUiBtb2R1bGVfbmFtZSwgRlhfTFBDU1RSIG5hbWUpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyogcFBhdGggPSBOVUxMOw0KKyAgICBpZiAobV9Nb2R1bGVQYXRoTGlzdC5Mb29rdXAobW9kdWxlX25hbWUsIChGWF9MUFZPSUQmKXBQYXRoKSkgew0KKyAgICAgICAgcmV0dXJuIF9HZXRQYXRoKCpwUGF0aCwgbmFtZSk7DQorICAgIH0NCisgICAgaWYgKCFtX0RlZmF1bHRNb2R1bGVQYXRoLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIF9HZXRQYXRoKG1fRGVmYXVsdE1vZHVsZVBhdGgsIG5hbWUpOw0KKyAgICB9DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorICAgIEZYX1dDSEFSIGFwcF9wYXRoWzI2MF07DQorICAgIDo6R2V0TW9kdWxlRmlsZU5hbWVXKE5VTEwsIChMUFdTVFIpYXBwX3BhdGgsIDI2MCk7DQorICAgIEZYX0lOVFBUUiBsZW4gPSBGWFNZU193Y3NsZW4oYXBwX3BhdGgpOw0KKyAgICBmb3IgKEZYX0lOVFBUUiBpID0gbGVuOyBpID49IDA7IGkgLS0pDQorICAgICAgICBpZiAoYXBwX3BhdGhbaV0gPT0gJ1xcJykgew0KKyAgICAgICAgICAgIGFwcF9wYXRoW2ldID0gMDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgcGF0aCA9IENGWF9CeXRlU3RyaW5nOjpGcm9tVW5pY29kZShhcHBfcGF0aCk7DQorICAgIHBhdGggKz0gJ1xcJzsNCisgICAgcGF0aCArPSBuYW1lOw0KKyAgICByZXR1cm4gcGF0aDsNCisjZWxzZQ0KKyAgICByZXR1cm4gbmFtZTsNCisjZW5kaWYNCit9DQordm9pZCBDUERGX01vZHVsZU1ncjo6Tm90aWZ5TW9kdWxlQXZhaWxhYmxlKEZYX0xQQ1NUUiBtb2R1bGVfbmFtZSkNCit7DQorICAgIGlmIChGWFNZU19zdHJjbXAobW9kdWxlX25hbWUsIEFERElOX05BTUVfQ0pLKSA9PSAwKSB7DQorICAgICAgICBtX3BQYWdlTW9kdWxlLT5Ob3RpZnlDSktBdmFpbGFibGUoKTsNCisgICAgfSBlbHNlIGlmIChGWFNZU19zdHJjbXAobW9kdWxlX25hbWUsIEFERElOX05BTUVfREVDT0RFUikgPT0gMCkgew0KKyAgICAgICAgbV9wUmVuZGVyTW9kdWxlLT5Ob3RpZnlEZWNvZGVyQXZhaWxhYmxlKCk7DQorICAgIH0NCit9DQordm9pZCBDUERGX01vZHVsZU1ncjo6UmVnaXN0ZXJTZWN1cml0eUhhbmRsZXIoRlhfTFBDU1RSIGZpbHRlciwgQ1BERl9TZWN1cml0eUhhbmRsZXIgKiAoKkNyZWF0ZUhhbmRsZXIpKHZvaWQqIHBhcmFtKSwgdm9pZCogcGFyYW0pDQorew0KKyAgICBpZiAoQ3JlYXRlSGFuZGxlciA9PSBOVUxMKSB7DQorICAgICAgICBtX1NlY3VyaXR5SGFuZGxlck1hcC5SZW1vdmVLZXkoZmlsdGVyKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fU2VjdXJpdHlIYW5kbGVyTWFwLlNldEF0KGZpbHRlciwgKHZvaWQqKUNyZWF0ZUhhbmRsZXIpOw0KKyAgICB9DQorICAgIGlmIChwYXJhbSkgew0KKyAgICAgICAgbV9TZWN1cml0eUhhbmRsZXJNYXAuU2V0QXQoRlhfQlNUUkMoIl9wYXJhbV8iKSArIGZpbHRlciwgcGFyYW0pOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9Nb2R1bGVNZ3I6OlNldFByaXZhdGVEYXRhKEZYX0xQVk9JRCBtb2R1bGVfaWQsIEZYX0xQVk9JRCBwRGF0YSwgUERfQ0FMTEJBQ0tfRlJFRURBVEEgY2FsbGJhY2spDQorew0KKyAgICBtX3ByaXZhdGVEYXRhLlNldFByaXZhdGVEYXRhKG1vZHVsZV9pZCwgcERhdGEsIGNhbGxiYWNrKTsNCit9DQorRlhfTFBWT0lEIENQREZfTW9kdWxlTWdyOjpHZXRQcml2YXRlRGF0YShGWF9MUFZPSUQgbW9kdWxlX2lkKQ0KK3sNCisgICAgcmV0dXJuIG1fcHJpdmF0ZURhdGEuR2V0UHJpdmF0ZURhdGEobW9kdWxlX2lkKTsNCit9DQorQ1BERl9TZWN1cml0eUhhbmRsZXIqIENQREZfTW9kdWxlTWdyOjpDcmVhdGVTZWN1cml0eUhhbmRsZXIoRlhfTFBDU1RSIGZpbHRlcikNCit7DQorICAgIENQREZfU2VjdXJpdHlIYW5kbGVyKiAoKkNyZWF0ZUhhbmRsZXIpKHZvaWQqKSA9IE5VTEw7DQorICAgIGlmICghbV9TZWN1cml0eUhhbmRsZXJNYXAuTG9va3VwKGZpbHRlciwgKHZvaWQqJilDcmVhdGVIYW5kbGVyKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKENyZWF0ZUhhbmRsZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgdm9pZCogcGFyYW0gPSBOVUxMOw0KKyAgICBtX1NlY3VyaXR5SGFuZGxlck1hcC5Mb29rdXAoRlhfQlNUUkMoIl9wYXJhbV8iKSArIGZpbHRlciwgcGFyYW0pOw0KKyAgICByZXR1cm4gQ3JlYXRlSGFuZGxlcihwYXJhbSk7DQorfQ0KK0lDb2RlY19GYXhNb2R1bGUqIENQREZfTW9kdWxlTWdyOjpHZXRGYXhNb2R1bGUoKQ0KK3sNCisgICAgcmV0dXJuIG1fcENvZGVjTW9kdWxlID8gbV9wQ29kZWNNb2R1bGUtPkdldEZheE1vZHVsZSgpIDogTlVMTDsNCit9DQorSUNvZGVjX0pwZWdNb2R1bGUqIENQREZfTW9kdWxlTWdyOjpHZXRKcGVnTW9kdWxlKCkNCit7DQorICAgIHJldHVybiBtX3BDb2RlY01vZHVsZSA/IG1fcENvZGVjTW9kdWxlLT5HZXRKcGVnTW9kdWxlKCkgOiBOVUxMOw0KK30NCitJQ29kZWNfSnB4TW9kdWxlKiBDUERGX01vZHVsZU1ncjo6R2V0SnB4TW9kdWxlKCkNCit7DQorICAgIHJldHVybiBtX3BDb2RlY01vZHVsZSA/IG1fcENvZGVjTW9kdWxlLT5HZXRKcHhNb2R1bGUoKSA6IE5VTEw7DQorfQ0KK0lDb2RlY19KYmlnMk1vZHVsZSogQ1BERl9Nb2R1bGVNZ3I6OkdldEpiaWcyTW9kdWxlKCkNCit7DQorICAgIHJldHVybiBtX3BDb2RlY01vZHVsZSA/IG1fcENvZGVjTW9kdWxlLT5HZXRKYmlnMk1vZHVsZSgpIDogTlVMTDsNCit9DQorSUNvZGVjX0ljY01vZHVsZSogQ1BERl9Nb2R1bGVNZ3I6OkdldEljY01vZHVsZSgpDQorew0KKyAgICByZXR1cm4gbV9wQ29kZWNNb2R1bGUgPyBtX3BDb2RlY01vZHVsZS0+R2V0SWNjTW9kdWxlKCkgOiBOVUxMOw0KK30NCitJQ29kZWNfRmxhdGVNb2R1bGUqIENQREZfTW9kdWxlTWdyOjpHZXRGbGF0ZU1vZHVsZSgpDQorew0KKyAgICByZXR1cm4gbV9wQ29kZWNNb2R1bGUgPyBtX3BDb2RlY01vZHVsZS0+R2V0RmxhdGVNb2R1bGUoKSA6IE5VTEw7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0Fkb2JlLUNOUzEtVUNTMl81LmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0Fkb2JlLUNOUzEtVUNTMl81LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODk5ZTI4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvQWRvYmUtQ05TMS1VQ1MyXzUuY3BwCkBAIC0wLDAgKzEsMjM5NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0NOUzFDSUQyVW5pY29kZV81WzE5MDg4XSA9IHsKKyAgICAweEZGRkQsIDB4MDAyMCwgMHgwMDIxLCAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwKKyAgICAweDAwMjcsIDB4MDAyOCwgMHgwMDI5LCAweDAwMkEsIDB4MDAyQiwgMHgwMDJDLCAweDAwMkQsIDB4MDAyRSwKKyAgICAweDAwMkYsIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwKKyAgICAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwM0EsIDB4MDAzQiwgMHgwMDNDLCAweDAwM0QsIDB4MDAzRSwKKyAgICAweDAwM0YsIDB4MDA0MCwgMHgwMDQxLCAweDAwNDIsIDB4MDA0MywgMHgwMDQ0LCAweDAwNDUsIDB4MDA0NiwKKyAgICAweDAwNDcsIDB4MDA0OCwgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwgMHgwMDRDLCAweDAwNEQsIDB4MDA0RSwKKyAgICAweDAwNEYsIDB4MDA1MCwgMHgwMDUxLCAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwKKyAgICAweDAwNTcsIDB4MDA1OCwgMHgwMDU5LCAweDAwNUEsIDB4MDA1QiwgMHgwMDVDLCAweDAwNUQsIDB4MDA1RSwKKyAgICAweDAwNUYsIDB4MDA2MCwgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwKKyAgICAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLCAweDAwNkQsIDB4MDA2RSwKKyAgICAweDAwNkYsIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4MDA3MywgMHgwMDc0LCAweDAwNzUsIDB4MDA3NiwKKyAgICAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LCAweDAwN0EsIDB4MDA3QiwgMHgwMDdDLCAweDAwN0QsIDB4MDA3RSwKKyAgICAweDAwQTksIDB4MjEyMiwgMHgyMDI2LCAweDMwMDAsIDB4RkYwQywgMHgzMDAxLCAweDMwMDIsIDB4RkYwRSwKKyAgICAweDIwMjcsIDB4RkYxQiwgMHhGRjFBLCAweEZGMUYsIDB4RkYwMSwgMHhGRTMwLCAweDIyRUYsIDB4MjAyNSwKKyAgICAweEZFNTAsIDB4RkU1MSwgMHhGRTUyLCAweDAwQjcsIDB4RkU1NCwgMHhGRTU1LCAweEZFNTYsIDB4RkU1NywKKyAgICAweEZGNUMsIDB4MjAxMywgMHhGRTMxLCAweDIwMTQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwKKyAgICAweEZGMDgsIDB4RkYwOSwgMHhGRTM1LCAweEZFMzYsIDB4RkY1QiwgMHhGRjVELCAweEZFMzcsIDB4RkUzOCwKKyAgICAweDMwMTQsIDB4MzAxNSwgMHhGRTM5LCAweEZFM0EsIDB4MzAxMCwgMHgzMDExLCAweEZFM0IsIDB4RkUzQywKKyAgICAweDMwMEEsIDB4MzAwQiwgMHhGRTNELCAweEZFM0UsIDB4MzAwOCwgMHgzMDA5LCAweEZFM0YsIDB4RkU0MCwKKyAgICAweDMwMEMsIDB4MzAwRCwgMHhGRTQxLCAweEZFNDIsIDB4MzAwRSwgMHgzMDBGLCAweEZFNDMsIDB4RkU0NCwKKyAgICAweEZFNTksIDB4RkU1QSwgMHhGRTVCLCAweEZFNUMsIDB4RkU1RCwgMHhGRTVFLCAweDIwMTgsIDB4MjAxOSwKKyAgICAweDIwMUMsIDB4MjAxRCwgMHgzMDFELCAweDMwMUUsIDB4MjAzNSwgMHgyMDMyLCAweEZGMDMsIDB4RkYwNiwKKyAgICAweEZGMEEsIDB4MjAzQiwgMHgwMEE3LCAweDMwMDMsIDB4MjVDQiwgMHgyNUNGLCAweDI1QjMsIDB4MjVCMiwKKyAgICAweDI1Q0UsIDB4MjYwNiwgMHgyNjA1LCAweDI1QzcsIDB4MjVDNiwgMHgyNUExLCAweDI1QTAsIDB4MjVCRCwKKyAgICAweDI1QkMsIDB4MzJBMywgMHgyMTA1LCAweDIwM0UsIDB4RkZFMywgMHhGRjNGLCAweDAyQ0QsIDB4RkU0OSwKKyAgICAweEZFNEEsIDB4RkU0RCwgMHhGRTRFLCAweEZFNEIsIDB4RkU0QywgMHhGRTVGLCAweEZFNjAsIDB4RkU2MSwKKyAgICAweEZGMEIsIDB4RkYwRCwgMHgwMEQ3LCAweDAwRjcsIDB4MDBCMSwgMHgyMjFBLCAweEZGMUMsIDB4RkYxRSwKKyAgICAweEZGMUQsIDB4MjI2NiwgMHgyMjY3LCAweDIyNjAsIDB4MjIxRSwgMHgyMjUyLCAweDIyNjEsIDB4RkU2MiwKKyAgICAweEZFNjMsIDB4RkU2NCwgMHhGRTY1LCAweEZFNjYsIDB4MjIzQywgMHgyMjI5LCAweDIyMkEsIDB4MjJBNSwKKyAgICAweDIyMjAsIDB4MjIxRiwgMHgyMkJGLCAweDMzRDIsIDB4MzNEMSwgMHgyMjJCLCAweDIyMkUsIDB4MjIzNSwKKyAgICAweDIyMzQsIDB4MjY0MCwgMHgyNjQyLCAweDIyOTUsIDB4MjYwOSwgMHgyMTkxLCAweDIxOTMsIDB4MjE5MiwKKyAgICAweDIxOTAsIDB4MjE5NiwgMHgyMTk3LCAweDIxOTksIDB4MjE5OCwgMHgyMjI1LCAweDIyMjMsIDB4RkYwRiwKKyAgICAweEZGM0MsIDB4RkYwRiwgMHhGRjNDLCAweEZGMDQsIDB4MDBBNSwgMHgzMDEyLCAweDAwQTIsIDB4MDBBMywKKyAgICAweEZGMDUsIDB4RkYyMCwgMHgyMTAzLCAweDIxMDksIDB4RkU2OSwgMHhGRTZBLCAweEZFNkIsIDB4MzNENSwKKyAgICAweDMzOUMsIDB4MzM5RCwgMHgzMzlFLCAweDMzQ0UsIDB4MzNBMSwgMHgzMzhFLCAweDMzOEYsIDB4MzNDNCwKKyAgICAweDAwQjAsIDB4NTE1OSwgMHg1MTVCLCAweDUxNUUsIDB4NTE1RCwgMHg1MTYxLCAweDUxNjMsIDB4NTVFNywKKyAgICAweDc0RTksIDB4N0NDRSwgMHgyNTgxLCAweDI1ODIsIDB4MjU4MywgMHgyNTg0LCAweDI1ODUsIDB4MjU4NiwKKyAgICAweDI1ODcsIDB4MjU4OCwgMHgyNThGLCAweDI1OEUsIDB4MjU4RCwgMHgyNThDLCAweDI1OEIsIDB4MjU4QSwKKyAgICAweDI1ODksIDB4MjUzQywgMHgyNTM0LCAweDI1MkMsIDB4MjUyNCwgMHgyNTFDLCAweDI1OTQsIDB4MjUwMCwKKyAgICAweDI1MDIsIDB4MjU5NSwgMHgyNTBDLCAweDI1MTAsIDB4MjUxNCwgMHgyNTE4LCAweDI1NkQsIDB4MjU2RSwKKyAgICAweDI1NzAsIDB4MjU2RiwgMHgyNTUwLCAweDI1NUUsIDB4MjU2QSwgMHgyNTYxLCAweDI1RTIsIDB4MjVFMywKKyAgICAweDI1RTUsIDB4MjVFNCwgMHgyNTcxLCAweDI1NzIsIDB4MjU3MywgMHhGRjEwLCAweEZGMTEsIDB4RkYxMiwKKyAgICAweEZGMTMsIDB4RkYxNCwgMHhGRjE1LCAweEZGMTYsIDB4RkYxNywgMHhGRjE4LCAweEZGMTksIDB4MjE2MCwKKyAgICAweDIxNjEsIDB4MjE2MiwgMHgyMTYzLCAweDIxNjQsIDB4MjE2NSwgMHgyMTY2LCAweDIxNjcsIDB4MjE2OCwKKyAgICAweDIxNjksIDB4MzAyMSwgMHgzMDIyLCAweDMwMjMsIDB4MzAyNCwgMHgzMDI1LCAweDMwMjYsIDB4MzAyNywKKyAgICAweDMwMjgsIDB4MzAyOSwgMHgzMDM4LCAweDUzNDQsIDB4MzAzQSwgMHhGRjIxLCAweEZGMjIsIDB4RkYyMywKKyAgICAweEZGMjQsIDB4RkYyNSwgMHhGRjI2LCAweEZGMjcsIDB4RkYyOCwgMHhGRjI5LCAweEZGMkEsIDB4RkYyQiwKKyAgICAweEZGMkMsIDB4RkYyRCwgMHhGRjJFLCAweEZGMkYsIDB4RkYzMCwgMHhGRjMxLCAweEZGMzIsIDB4RkYzMywKKyAgICAweEZGMzQsIDB4RkYzNSwgMHhGRjM2LCAweEZGMzcsIDB4RkYzOCwgMHhGRjM5LCAweEZGM0EsIDB4RkY0MSwKKyAgICAweEZGNDIsIDB4RkY0MywgMHhGRjQ0LCAweEZGNDUsIDB4RkY0NiwgMHhGRjQ3LCAweEZGNDgsIDB4RkY0OSwKKyAgICAweEZGNEEsIDB4RkY0QiwgMHhGRjRDLCAweEZGNEQsIDB4RkY0RSwgMHhGRjRGLCAweEZGNTAsIDB4RkY1MSwKKyAgICAweEZGNTIsIDB4RkY1MywgMHhGRjU0LCAweEZGNTUsIDB4RkY1NiwgMHhGRjU3LCAweEZGNTgsIDB4RkY1OSwKKyAgICAweEZGNUEsIDB4MDM5MSwgMHgwMzkyLCAweDAzOTMsIDB4MDM5NCwgMHgwMzk1LCAweDAzOTYsIDB4MDM5NywKKyAgICAweDAzOTgsIDB4MDM5OSwgMHgwMzlBLCAweDAzOUIsIDB4MDM5QywgMHgwMzlELCAweDAzOUUsIDB4MDM5RiwKKyAgICAweDAzQTAsIDB4MDNBMSwgMHgwM0EzLCAweDAzQTQsIDB4MDNBNSwgMHgwM0E2LCAweDAzQTcsIDB4MDNBOCwKKyAgICAweDAzQTksIDB4MDNCMSwgMHgwM0IyLCAweDAzQjMsIDB4MDNCNCwgMHgwM0I1LCAweDAzQjYsIDB4MDNCNywKKyAgICAweDAzQjgsIDB4MDNCOSwgMHgwM0JBLCAweDAzQkIsIDB4MDNCQywgMHgwM0JELCAweDAzQkUsIDB4MDNCRiwKKyAgICAweDAzQzAsIDB4MDNDMSwgMHgwM0MzLCAweDAzQzQsIDB4MDNDNSwgMHgwM0M2LCAweDAzQzcsIDB4MDNDOCwKKyAgICAweDAzQzksIDB4MzEwNSwgMHgzMTA2LCAweDMxMDcsIDB4MzEwOCwgMHgzMTA5LCAweDMxMEEsIDB4MzEwQiwKKyAgICAweDMxMEMsIDB4MzEwRCwgMHgzMTBFLCAweDMxMEYsIDB4MzExMCwgMHgzMTExLCAweDMxMTIsIDB4MzExMywKKyAgICAweDMxMTQsIDB4MzExNSwgMHgzMTE2LCAweDMxMTcsIDB4MzExOCwgMHgzMTE5LCAweDMxMUEsIDB4MzExQiwKKyAgICAweDMxMUMsIDB4MzExRCwgMHgzMTFFLCAweDMxMUYsIDB4MzEyMCwgMHgzMTIxLCAweDMxMjIsIDB4MzEyMywKKyAgICAweDMxMjQsIDB4MzEyNSwgMHgzMTI2LCAweDMxMjcsIDB4MzEyOCwgMHgzMTI5LCAweDAyRDksIDB4MDJDQSwKKyAgICAweDAyQzcsIDB4MDJDQiwgMHgyNDYwLCAweDI0NjEsIDB4MjQ2MiwgMHgyNDYzLCAweDI0NjQsIDB4MjQ2NSwKKyAgICAweDI0NjYsIDB4MjQ2NywgMHgyNDY4LCAweDI0NjksIDB4MjQ3NCwgMHgyNDc1LCAweDI0NzYsIDB4MjQ3NywKKyAgICAweDI0NzgsIDB4MjQ3OSwgMHgyNDdBLCAweDI0N0IsIDB4MjQ3QywgMHgyNDdELCAweDIxNzAsIDB4MjE3MSwKKyAgICAweDIxNzIsIDB4MjE3MywgMHgyMTc0LCAweDIxNzUsIDB4MjE3NiwgMHgyMTc3LCAweDIxNzgsIDB4MjE3OSwKKyAgICAweDRFMjgsIDB4NEUzNiwgMHg0RTNGLCAweDRFODUsIDB4NEVBMCwgMHg1MTgyLCAweDUxOTYsIDB4NTFBQiwKKyAgICAweDUyRjksIDB4NTMzOCwgMHg1MzY5LCAweDUzQjYsIDB4NTkwMiwgMHg1QjgwLCAweDVEREIsIDB4NUU3QSwKKyAgICAweDVFN0YsIDB4NUVGNCwgMHg1RjUwLCAweDVGNjEsIDB4NjUzNCwgMHg2NUUwLCAweDc1OTIsIDB4NzY3NiwKKyAgICAweDhGQjUsIDB4OTZCNiwgMHgyNDAwLCAweDI0MDEsIDB4MjQwMiwgMHgyNDAzLCAweDI0MDQsIDB4MjQwNSwKKyAgICAweDI0MDYsIDB4MjQwNywgMHgyNDA4LCAweDI0MDksIDB4MjQwQSwgMHgyNDBCLCAweDI0MEMsIDB4MjQwRCwKKyAgICAweDI0MEUsIDB4MjQwRiwgMHgyNDEwLCAweDI0MTEsIDB4MjQxMiwgMHgyNDEzLCAweDI0MTQsIDB4MjQxNSwKKyAgICAweDI0MTYsIDB4MjQxNywgMHgyNDE4LCAweDI0MTksIDB4MjQxQSwgMHgyNDFCLCAweDI0MUMsIDB4MjQxRCwKKyAgICAweDI0MUUsIDB4MjQxRiwgMHgyNDIxLCAweDRFMDAsIDB4NEU1OSwgMHg0RTAxLCAweDRFMDMsIDB4NEU0MywKKyAgICAweDRFNUQsIDB4NEU4NiwgMHg0RThDLCAweDRFQkEsIDB4NTEzRiwgMHg1MTY1LCAweDUxNkIsIDB4NTFFMCwKKyAgICAweDUyMDAsIDB4NTIwMSwgMHg1MjlCLCAweDUzMTUsIDB4NTM0MSwgMHg1MzVDLCAweDUzQzgsIDB4NEUwOSwKKyAgICAweDRFMEIsIDB4NEUwOCwgMHg0RTBBLCAweDRFMkIsIDB4NEUzOCwgMHg1MUUxLCAweDRFNDUsIDB4NEU0OCwKKyAgICAweDRFNUYsIDB4NEU1RSwgMHg0RThFLCAweDRFQTEsIDB4NTE0MCwgMHg1MjAzLCAweDUyRkEsIDB4NTM0MywKKyAgICAweDUzQzksIDB4NTNFMywgMHg1NzFGLCAweDU4RUIsIDB4NTkxNSwgMHg1OTI3LCAweDU5NzMsIDB4NUI1MCwKKyAgICAweDVCNTEsIDB4NUI1MywgMHg1QkY4LCAweDVDMEYsIDB4NUMyMiwgMHg1QzM4LCAweDVDNzEsIDB4NURERCwKKyAgICAweDVERTUsIDB4NURGMSwgMHg1REYyLCAweDVERjMsIDB4NURGRSwgMHg1RTcyLCAweDVFRkUsIDB4NUYwQiwKKyAgICAweDVGMTMsIDB4NjI0RCwgMHg0RTExLCAweDRFMTAsIDB4NEUwRCwgMHg0RTJELCAweDRFMzAsIDB4NEUzOSwKKyAgICAweDRFNEIsIDB4NUMzOSwgMHg0RTg4LCAweDRFOTEsIDB4NEU5NSwgMHg0RTkyLCAweDRFOTQsIDB4NEVBMiwKKyAgICAweDRFQzEsIDB4NEVDMCwgMHg0RUMzLCAweDRFQzYsIDB4NEVDNywgMHg0RUNELCAweDRFQ0EsIDB4NEVDQiwKKyAgICAweDRFQzQsIDB4NTE0MywgMHg1MTQxLCAweDUxNjcsIDB4NTE2RCwgMHg1MTZFLCAweDUxNkMsIDB4NTE5NywKKyAgICAweDUxRjYsIDB4NTIwNiwgMHg1MjA3LCAweDUyMDgsIDB4NTJGQiwgMHg1MkZFLCAweDUyRkYsIDB4NTMxNiwKKyAgICAweDUzMzksIDB4NTM0OCwgMHg1MzQ3LCAweDUzNDUsIDB4NTM1RSwgMHg1Mzg0LCAweDUzQ0IsIDB4NTNDQSwKKyAgICAweDUzQ0QsIDB4NThFQywgMHg1OTI5LCAweDU5MkIsIDB4NTkyQSwgMHg1OTJELCAweDVCNTQsIDB4NUMxMSwKKyAgICAweDVDMjQsIDB4NUMzQSwgMHg1QzZGLCAweDVERjQsIDB4NUU3QiwgMHg1RUZGLCAweDVGMTQsIDB4NUYxNSwKKyAgICAweDVGQzMsIDB4NjIwOCwgMHg2MjM2LCAweDYyNEIsIDB4NjI0RSwgMHg2NTJGLCAweDY1ODcsIDB4NjU5NywKKyAgICAweDY1QTQsIDB4NjVCOSwgMHg2NUU1LCAweDY2RjAsIDB4NjcwOCwgMHg2NzI4LCAweDZCMjAsIDB4NkI2MiwKKyAgICAweDZCNzksIDB4NkJDQiwgMHg2QkQ0LCAweDZCREIsIDB4NkMwRiwgMHg2QzM0LCAweDcwNkIsIDB4NzIyQSwKKyAgICAweDcyMzYsIDB4NzIzQiwgMHg3MjQ3LCAweDcyNTksIDB4NzI1QiwgMHg3MkFDLCAweDczOEIsIDB4NEUxOSwKKyAgICAweDRFMTYsIDB4NEUxNSwgMHg0RTE0LCAweDRFMTgsIDB4NEUzQiwgMHg0RTRELCAweDRFNEYsIDB4NEU0RSwKKyAgICAweDRFRTUsIDB4NEVEOCwgMHg0RUQ0LCAweDRFRDUsIDB4NEVENiwgMHg0RUQ3LCAweDRFRTMsIDB4NEVFNCwKKyAgICAweDRFRDksIDB4NEVERSwgMHg1MTQ1LCAweDUxNDQsIDB4NTE4OSwgMHg1MThBLCAweDUxQUMsIDB4NTFGOSwKKyAgICAweDUxRkEsIDB4NTFGOCwgMHg1MjBBLCAweDUyQTAsIDB4NTI5RiwgMHg1MzA1LCAweDUzMDYsIDB4NTMxNywKKyAgICAweDUzMUQsIDB4NEVERiwgMHg1MzRBLCAweDUzNDksIDB4NTM2MSwgMHg1MzYwLCAweDUzNkYsIDB4NTM2RSwKKyAgICAweDUzQkIsIDB4NTNFRiwgMHg1M0U0LCAweDUzRjMsIDB4NTNFQywgMHg1M0VFLCAweDUzRTksIDB4NTNFOCwKKyAgICAweDUzRkMsIDB4NTNGOCwgMHg1M0Y1LCAweDUzRUIsIDB4NTNFNiwgMHg1M0VBLCAweDUzRjIsIDB4NTNGMSwKKyAgICAweDUzRjAsIDB4NTNFNSwgMHg1M0VELCAweDUzRkIsIDB4NTZEQiwgMHg1NkRBLCAweDU5MTYsIDB4NTkyRSwKKyAgICAweDU5MzEsIDB4NTk3NCwgMHg1OTc2LCAweDVCNTUsIDB4NUI4MywgMHg1QzNDLCAweDVERTgsIDB4NURFNywKKyAgICAweDVERTYsIDB4NUUwMiwgMHg1RTAzLCAweDVFNzMsIDB4NUU3QywgMHg1RjAxLCAweDVGMTgsIDB4NUYxNywKKyAgICAweDVGQzUsIDB4NjIwQSwgMHg2MjUzLCAweDYyNTQsIDB4NjI1MiwgMHg2MjUxLCAweDY1QTUsIDB4NjVFNiwKKyAgICAweDY3MkUsIDB4NjcyQywgMHg2NzJBLCAweDY3MkIsIDB4NjcyRCwgMHg2QjYzLCAweDZCQ0QsIDB4NkMxMSwKKyAgICAweDZDMTAsIDB4NkMzOCwgMHg2QzQxLCAweDZDNDAsIDB4NkMzRSwgMHg3MkFGLCAweDczODQsIDB4NzM4OSwKKyAgICAweDc0REMsIDB4NzRFNiwgMHg3NTE4LCAweDc1MUYsIDB4NzUyOCwgMHg3NTI5LCAweDc1MzAsIDB4NzUzMSwKKyAgICAweDc1MzIsIDB4NzUzMywgMHg3NThCLCAweDc2N0QsIDB4NzZBRSwgMHg3NkJGLCAweDc2RUUsIDB4NzdEQiwKKyAgICAweDc3RTIsIDB4NzdGMywgMHg3OTNBLCAweDc5QkUsIDB4N0E3NCwgMHg3QUNCLCAweDRFMUUsIDB4NEUxRiwKKyAgICAweDRFNTIsIDB4NEU1MywgMHg0RTY5LCAweDRFOTksIDB4NEVBNCwgMHg0RUE2LCAweDRFQTUsIDB4NEVGRiwKKyAgICAweDRGMDksIDB4NEYxOSwgMHg0RjBBLCAweDRGMTUsIDB4NEYwRCwgMHg0RjEwLCAweDRGMTEsIDB4NEYwRiwKKyAgICAweDRFRjIsIDB4NEVGNiwgMHg0RUZCLCAweDRFRjAsIDB4NEVGMywgMHg0RUZELCAweDRGMDEsIDB4NEYwQiwKKyAgICAweDUxNDksIDB4NTE0NywgMHg1MTQ2LCAweDUxNDgsIDB4NTE2OCwgMHg1MTcxLCAweDUxOEQsIDB4NTFCMCwKKyAgICAweDUyMTcsIDB4NTIxMSwgMHg1MjEyLCAweDUyMEUsIDB4NTIxNiwgMHg1MkEzLCAweDUzMDgsIDB4NTMyMSwKKyAgICAweDUzMjAsIDB4NTM3MCwgMHg1MzcxLCAweDU0MDksIDB4NTQwRiwgMHg1NDBDLCAweDU0MEEsIDB4NTQxMCwKKyAgICAweDU0MDEsIDB4NTQwQiwgMHg1NDA0LCAweDU0MTEsIDB4NTQwRCwgMHg1NDA4LCAweDU0MDMsIDB4NTQwRSwKKyAgICAweDU0MDYsIDB4NTQxMiwgMHg1NkUwLCAweDU2REUsIDB4NTZERCwgMHg1NzMzLCAweDU3MzAsIDB4NTcyOCwKKyAgICAweDU3MkQsIDB4NTcyQywgMHg1NzJGLCAweDU3MjksIDB4NTkxOSwgMHg1OTFBLCAweDU5MzcsIDB4NTkzOCwKKyAgICAweDU5ODQsIDB4NTk3OCwgMHg1OTgzLCAweDU5N0QsIDB4NTk3OSwgMHg1OTgyLCAweDU5ODEsIDB4NUI1NywKKyAgICAweDVCNTgsIDB4NUI4NywgMHg1Qjg4LCAweDVCODUsIDB4NUI4OSwgMHg1QkZBLCAweDVDMTYsIDB4NUM3OSwKKyAgICAweDVEREUsIDB4NUUwNiwgMHg1RTc2LCAweDVFNzQsIDB4NUYwRiwgMHg1RjFCLCAweDVGRDksIDB4NUZENiwKKyAgICAweDYyMEUsIDB4NjIwQywgMHg2MjBELCAweDYyMTAsIDB4NjI2MywgMHg2MjVCLCAweDYyNTgsIDB4NjUzNiwKKyAgICAweDY1RTksIDB4NjVFOCwgMHg2NUVDLCAweDY1RUQsIDB4NjZGMiwgMHg2NkYzLCAweDY3MDksIDB4NjczRCwKKyAgICAweDY3MzQsIDB4NjczMSwgMHg2NzM1LCAweDZCMjEsIDB4NkI2NCwgMHg2QjdCLCAweDZDMTYsIDB4NkM1RCwKKyAgICAweDZDNTcsIDB4NkM1OSwgMHg2QzVGLCAweDZDNjAsIDB4NkM1MCwgMHg2QzU1LCAweDZDNjEsIDB4NkM1QiwKKyAgICAweDZDNEQsIDB4NkM0RSwgMHg3MDcwLCAweDcyNUYsIDB4NzI1RCwgMHg3NjdFLCAweDdBRjksIDB4N0M3MywKKyAgICAweDdDRjgsIDB4N0YzNiwgMHg3RjhBLCAweDdGQkQsIDB4ODAwMSwgMHg4MDAzLCAweDgwMEMsIDB4ODAxMiwKKyAgICAweDgwMzMsIDB4ODA3RiwgMHg4MDg5LCAweDgwOEIsIDB4ODA4QywgMHg4MUUzLCAweDgxRUEsIDB4ODFGMywKKyAgICAweDgxRkMsIDB4ODIwQywgMHg4MjFCLCAweDgyMUYsIDB4ODI2RSwgMHg4MjcyLCAweDgyN0UsIDB4ODY2QiwKKyAgICAweDg4NDAsIDB4ODg0QywgMHg4ODYzLCAweDg5N0YsIDB4OTYyMSwgMHg0RTMyLCAweDRFQTgsIDB4NEY0RCwKKyAgICAweDRGNEYsIDB4NEY0NywgMHg0RjU3LCAweDRGNUUsIDB4NEYzNCwgMHg0RjVCLCAweDRGNTUsIDB4NEYzMCwKKyAgICAweDRGNTAsIDB4NEY1MSwgMHg0RjNELCAweDRGM0EsIDB4NEYzOCwgMHg0RjQzLCAweDRGNTQsIDB4NEYzQywKKyAgICAweDRGNDYsIDB4NEY2MywgMHg0RjVDLCAweDRGNjAsIDB4NEYyRiwgMHg0RjRFLCAweDRGMzYsIDB4NEY1OSwKKyAgICAweDRGNUQsIDB4NEY0OCwgMHg0RjVBLCAweDUxNEMsIDB4NTE0QiwgMHg1MTRELCAweDUxNzUsIDB4NTFCNiwKKyAgICAweDUxQjcsIDB4NTIyNSwgMHg1MjI0LCAweDUyMjksIDB4NTIyQSwgMHg1MjI4LCAweDUyQUIsIDB4NTJBOSwKKyAgICAweDUyQUEsIDB4NTJBQywgMHg1MzIzLCAweDUzNzMsIDB4NTM3NSwgMHg1NDFELCAweDU0MkQsIDB4NTQxRSwKKyAgICAweDU0M0UsIDB4NTQyNiwgMHg1NDRFLCAweDU0MjcsIDB4NTQ0NiwgMHg1NDQzLCAweDU0MzMsIDB4NTQ0OCwKKyAgICAweDU0NDIsIDB4NTQxQiwgMHg1NDI5LCAweDU0NEEsIDB4NTQzOSwgMHg1NDNCLCAweDU0MzgsIDB4NTQyRSwKKyAgICAweDU0MzUsIDB4NTQzNiwgMHg1NDIwLCAweDU0M0MsIDB4NTQ0MCwgMHg1NDMxLCAweDU0MkIsIDB4NTQxRiwKKyAgICAweDU0MkMsIDB4NTZFQSwgMHg1NkYwLCAweDU2RTQsIDB4NTZFQiwgMHg1NzRBLCAweDU3NTEsIDB4NTc0MCwKKyAgICAweDU3NEQsIDB4NTc0NywgMHg1NzRFLCAweDU3M0UsIDB4NTc1MCwgMHg1NzRGLCAweDU3M0IsIDB4NThFRiwKKyAgICAweDU5M0UsIDB4NTk5RCwgMHg1OTkyLCAweDU5QTgsIDB4NTk5RSwgMHg1OUEzLCAweDU5OTksIDB4NTk5NiwKKyAgICAweDU5OEQsIDB4NTlBNCwgMHg1OTkzLCAweDU5OEEsIDB4NTlBNSwgMHg1QjVELCAweDVCNUMsIDB4NUI1QSwKKyAgICAweDVCNUIsIDB4NUI4QywgMHg1QjhCLCAweDVCOEYsIDB4NUMyQywgMHg1QzQwLCAweDVDNDEsIDB4NUMzRiwKKyAgICAweDVDM0UsIDB4NUM5MCwgMHg1QzkxLCAweDVDOTQsIDB4NUM4QywgMHg1REVCLCAweDVFMEMsIDB4NUU4RiwKKyAgICAweDVFODcsIDB4NUU4QSwgMHg1RUY3LCAweDVGMDQsIDB4NUYxRiwgMHg1RjY0LCAweDVGNjIsIDB4NUY3NywKKyAgICAweDVGNzksIDB4NUZEOCwgMHg1RkNDLCAweDVGRDcsIDB4NUZDRCwgMHg1RkYxLCAweDVGRUIsIDB4NUZGOCwKKyAgICAweDVGRUEsIDB4NjIxMiwgMHg2MjExLCAweDYyODQsIDB4NjI5NywgMHg2Mjk2LCAweDYyODAsIDB4NjI3NiwKKyAgICAweDYyODksIDB4NjI2RCwgMHg2MjhBLCAweDYyN0MsIDB4NjI3RSwgMHg2Mjc5LCAweDYyNzMsIDB4NjI5MiwKKyAgICAweDYyNkYsIDB4NjI5OCwgMHg2MjZFLCAweDYyOTUsIDB4NjI5MywgMHg2MjkxLCAweDYyODYsIDB4NjUzOSwKKyAgICAweDY1M0IsIDB4NjUzOCwgMHg2NUYxLCAweDY2RjQsIDB4Njc1RiwgMHg2NzRFLCAweDY3NEYsIDB4Njc1MCwKKyAgICAweDY3NTEsIDB4Njc1QywgMHg2NzU2LCAweDY3NUUsIDB4Njc0OSwgMHg2NzQ2LCAweDY3NjAsIDB4Njc1MywKKyAgICAweDY3NTcsIDB4NkI2NSwgMHg2QkNGLCAweDZDNDIsIDB4NkM1RSwgMHg2Qzk5LCAweDZDODEsIDB4NkM4OCwKKyAgICAweDZDODksIDB4NkM4NSwgMHg2QzlCLCAweDZDNkEsIDB4NkM3QSwgMHg2QzkwLCAweDZDNzAsIDB4NkM4QywKKyAgICAweDZDNjgsIDB4NkM5NiwgMHg2QzkyLCAweDZDN0QsIDB4NkM4MywgMHg2QzcyLCAweDZDN0UsIDB4NkM3NCwKKyAgICAweDZDODYsIDB4NkM3NiwgMHg2QzhELCAweDZDOTQsIDB4NkM5OCwgMHg2QzgyLCAweDcwNzYsIDB4NzA3QywKKyAgICAweDcwN0QsIDB4NzA3OCwgMHg3MjYyLCAweDcyNjEsIDB4NzI2MCwgMHg3MkM0LCAweDcyQzIsIDB4NzM5NiwKKyAgICAweDc1MkMsIDB4NzUyQiwgMHg3NTM3LCAweDc1MzgsIDB4NzY4MiwgMHg3NkVGLCAweDc3RTMsIDB4NzlDMSwKKyAgICAweDc5QzAsIDB4NzlCRiwgMHg3QTc2LCAweDdDRkIsIDB4N0Y1NSwgMHg4MDk2LCAweDgwOTMsIDB4ODA5RCwKKyAgICAweDgwOTgsIDB4ODA5QiwgMHg4MDlBLCAweDgwQjIsIDB4ODI2RiwgMHg4MjkyLCAweDgyOEIsIDB4ODI4RCwKKyAgICAweDg5OEIsIDB4ODlEMiwgMHg4QTAwLCAweDhDMzcsIDB4OEM0NiwgMHg4QzU1LCAweDhDOUQsIDB4OEQ2NCwKKyAgICAweDhENzAsIDB4OERCMywgMHg4RUFCLCAweDhFQ0EsIDB4OEY5QiwgMHg4RkIwLCAweDhGQzIsIDB4OEZDNiwKKyAgICAweDhGQzUsIDB4OEZDNCwgMHg1REUxLCAweDkwOTEsIDB4OTBBMiwgMHg5MEFBLCAweDkwQTYsIDB4OTBBMywKKyAgICAweDkxNDksIDB4OTFDNiwgMHg5MUNDLCAweDk2MzIsIDB4OTYyRSwgMHg5NjMxLCAweDk2MkEsIDB4OTYyQywKKyAgICAweDRFMjYsIDB4NEU1NiwgMHg0RTczLCAweDRFOEIsIDB4NEU5QiwgMHg0RTlFLCAweDRFQUIsIDB4NEVBQywKKyAgICAweDRGNkYsIDB4NEY5RCwgMHg0RjhELCAweDRGNzMsIDB4NEY3RiwgMHg0RjZDLCAweDRGOUIsIDB4NEY4QiwKKyAgICAweDRGODYsIDB4NEY4MywgMHg0RjcwLCAweDRGNzUsIDB4NEY4OCwgMHg0RjY5LCAweDRGN0IsIDB4NEY5NiwKKyAgICAweDRGN0UsIDB4NEY4RiwgMHg0RjkxLCAweDRGN0EsIDB4NTE1NCwgMHg1MTUyLCAweDUxNTUsIDB4NTE2OSwKKyAgICAweDUxNzcsIDB4NTE3NiwgMHg1MTc4LCAweDUxQkQsIDB4NTFGRCwgMHg1MjNCLCAweDUyMzgsIDB4NTIzNywKKyAgICAweDUyM0EsIDB4NTIzMCwgMHg1MjJFLCAweDUyMzYsIDB4NTI0MSwgMHg1MkJFLCAweDUyQkIsIDB4NTM1MiwKKyAgICAweDUzNTQsIDB4NTM1MywgMHg1MzUxLCAweDUzNjYsIDB4NTM3NywgMHg1Mzc4LCAweDUzNzksIDB4NTNENiwKKyAgICAweDUzRDQsIDB4NTNENywgMHg1NDczLCAweDU0NzUsIDB4NTQ5NiwgMHg1NDc4LCAweDU0OTUsIDB4NTQ4MCwKKyAgICAweDU0N0IsIDB4NTQ3NywgMHg1NDg0LCAweDU0OTIsIDB4NTQ4NiwgMHg1NDdDLCAweDU0OTAsIDB4NTQ3MSwKKyAgICAweDU0NzYsIDB4NTQ4QywgMHg1NDlBLCAweDU0NjIsIDB4NTQ2OCwgMHg1NDhCLCAweDU0N0QsIDB4NTQ4RSwKKyAgICAweDU2RkEsIDB4NTc4MywgMHg1Nzc3LCAweDU3NkEsIDB4NTc2OSwgMHg1NzYxLCAweDU3NjYsIDB4NTc2NCwKKyAgICAweDU3N0MsIDB4NTkxQywgMHg1OTQ5LCAweDU5NDcsIDB4NTk0OCwgMHg1OTQ0LCAweDU5NTQsIDB4NTlCRSwKKyAgICAweDU5QkIsIDB4NTlENCwgMHg1OUI5LCAweDU5QUUsIDB4NTlEMSwgMHg1OUM2LCAweDU5RDAsIDB4NTlDRCwKKyAgICAweDU5Q0IsIDB4NTlEMywgMHg1OUNBLCAweDU5QUYsIDB4NTlCMywgMHg1OUQyLCAweDU5QzUsIDB4NUI1RiwKKyAgICAweDVCNjQsIDB4NUI2MywgMHg1Qjk3LCAweDVCOUEsIDB4NUI5OCwgMHg1QjlDLCAweDVCOTksIDB4NUI5QiwKKyAgICAweDVDMUEsIDB4NUM0OCwgMHg1QzQ1LCAweDVDNDYsIDB4NUNCNywgMHg1Q0ExLCAweDVDQjgsIDB4NUNBOSwKKyAgICAweDVDQUIsIDB4NUNCMSwgMHg1Q0IzLCAweDVFMTgsIDB4NUUxQSwgMHg1RTE2LCAweDVFMTUsIDB4NUUxQiwKKyAgICAweDVFMTEsIDB4NUU3OCwgMHg1RTlBLCAweDVFOTcsIDB4NUU5QywgMHg1RTk1LCAweDVFOTYsIDB4NUVGNiwKKyAgICAweDVGMjYsIDB4NUYyNywgMHg1RjI5LCAweDVGODAsIDB4NUY4MSwgMHg1RjdGLCAweDVGN0MsIDB4NUZERCwKKyAgICAweDVGRTAsIDB4NUZGRCwgMHg1RkY1LCAweDVGRkYsIDB4NjAwRiwgMHg2MDE0LCAweDYwMkYsIDB4NjAzNSwKKyAgICAweDYwMTYsIDB4NjAyQSwgMHg2MDE1LCAweDYwMjEsIDB4NjAyNywgMHg2MDI5LCAweDYwMkIsIDB4NjAxQiwKKyAgICAweDYyMTYsIDB4NjIxNSwgMHg2MjNGLCAweDYyM0UsIDB4NjI0MCwgMHg2MjdGLCAweDYyQzksIDB4NjJDQywKKyAgICAweDYyQzQsIDB4NjJCRiwgMHg2MkMyLCAweDYyQjksIDB4NjJEMiwgMHg2MkRCLCAweDYyQUIsIDB4NjJEMywKKyAgICAweDYyRDQsIDB4NjJDQiwgMHg2MkM4LCAweDYyQTgsIDB4NjJCRCwgMHg2MkJDLCAweDYyRDAsIDB4NjJEOSwKKyAgICAweDYyQzcsIDB4NjJDRCwgMHg2MkI1LCAweDYyREEsIDB4NjJCMSwgMHg2MkQ4LCAweDYyRDYsIDB4NjJENywKKyAgICAweDYyQzYsIDB4NjJBQywgMHg2MkNFLCAweDY1M0UsIDB4NjVBNywgMHg2NUJDLCAweDY1RkEsIDB4NjYxNCwKKyAgICAweDY2MTMsIDB4NjYwQywgMHg2NjA2LCAweDY2MDIsIDB4NjYwRSwgMHg2NjAwLCAweDY2MEYsIDB4NjYxNSwKKyAgICAweDY2MEEsIDB4NjYwNywgMHg2NzBELCAweDY3MEIsIDB4Njc2RCwgMHg2NzhCLCAweDY3OTUsIDB4Njc3MSwKKyAgICAweDY3OUMsIDB4Njc3MywgMHg2Nzc3LCAweDY3ODcsIDB4Njc5RCwgMHg2Nzk3LCAweDY3NkYsIDB4Njc3MCwKKyAgICAweDY3N0YsIDB4Njc4OSwgMHg2NzdFLCAweDY3OTAsIDB4Njc3NSwgMHg2NzlBLCAweDY3OTMsIDB4Njc3QywKKyAgICAweDY3NkEsIDB4Njc3MiwgMHg2QjIzLCAweDZCNjYsIDB4NkI2NywgMHg2QjdGLCAweDZDMTMsIDB4NkMxQiwKKyAgICAweDZDRTMsIDB4NkNFOCwgMHg2Q0YzLCAweDZDQjEsIDB4NkNDQywgMHg2Q0U1LCAweDZDQjMsIDB4NkNCRCwKKyAgICAweDZDQkUsIDB4NkNCQywgMHg2Q0UyLCAweDZDQUIsIDB4NkNENSwgMHg2Q0QzLCAweDZDQjgsIDB4NkNDNCwKKyAgICAweDZDQjksIDB4NkNDMSwgMHg2Q0FFLCAweDZDRDcsIDB4NkNDNSwgMHg2Q0YxLCAweDZDQkYsIDB4NkNCQiwKKyAgICAweDZDRTEsIDB4NkNEQiwgMHg2Q0NBLCAweDZDQUMsIDB4NkNFRiwgMHg2Q0RDLCAweDZDRDYsIDB4NkNFMCwKKyAgICAweDcwOTUsIDB4NzA4RSwgMHg3MDkyLCAweDcwOEEsIDB4NzA5OSwgMHg3MjJDLCAweDcyMkQsIDB4NzIzOCwKKyAgICAweDcyNDgsIDB4NzI2NywgMHg3MjY5LCAweDcyQzAsIDB4NzJDRSwgMHg3MkQ5LCAweDcyRDcsIDB4NzJEMCwKKyAgICAweDczQTksIDB4NzNBOCwgMHg3MzlGLCAweDczQUIsIDB4NzNBNSwgMHg3NTNELCAweDc1OUQsIDB4NzU5OSwKKyAgICAweDc1OUEsIDB4NzY4NCwgMHg3NkMyLCAweDc2RjIsIDB4NzZGNCwgMHg3N0U1LCAweDc3RkQsIDB4NzkzRSwKKyAgICAweDc5NDAsIDB4Nzk0MSwgMHg3OUM5LCAweDc5QzgsIDB4N0E3QSwgMHg3QTc5LCAweDdBRkEsIDB4N0NGRSwKKyAgICAweDdGNTQsIDB4N0Y4QywgMHg3RjhCLCAweDgwMDUsIDB4ODBCQSwgMHg4MEE1LCAweDgwQTIsIDB4ODBCMSwKKyAgICAweDgwQTEsIDB4ODBBQiwgMHg4MEE5LCAweDgwQjQsIDB4ODBBQSwgMHg4MEFGLCAweDgxRTUsIDB4ODFGRSwKKyAgICAweDgyMEQsIDB4ODJCMywgMHg4MjlELCAweDgyOTksIDB4ODJBRCwgMHg4MkJELCAweDgyOUYsIDB4ODJCOSwKKyAgICAweDgyQjEsIDB4ODJBQywgMHg4MkE1LCAweDgyQUYsIDB4ODJCOCwgMHg4MkEzLCAweDgyQjAsIDB4ODJCRSwKKyAgICAweDgyQjcsIDB4ODY0RSwgMHg4NjcxLCAweDUyMUQsIDB4ODg2OCwgMHg4RUNCLCAweDhGQ0UsIDB4OEZENCwKKyAgICAweDhGRDEsIDB4OTBCNSwgMHg5MEI4LCAweDkwQjEsIDB4OTBCNiwgMHg5MUM3LCAweDkxRDEsIDB4OTU3NywKKyAgICAweDk1ODAsIDB4OTYxQywgMHg5NjQwLCAweDk2M0YsIDB4OTYzQiwgMHg5NjQ0LCAweDk2NDIsIDB4OTZCOSwKKyAgICAweDk2RTgsIDB4OTc1MiwgMHg5NzVFLCAweDRFOUYsIDB4NEVBRCwgMHg0RUFFLCAweDRGRTEsIDB4NEZCNSwKKyAgICAweDRGQUYsIDB4NEZCRiwgMHg0RkUwLCAweDRGRDEsIDB4NEZDRiwgMHg0RkRELCAweDRGQzMsIDB4NEZCNiwKKyAgICAweDRGRDgsIDB4NEZERiwgMHg0RkNBLCAweDRGRDcsIDB4NEZBRSwgMHg0RkQwLCAweDRGQzQsIDB4NEZDMiwKKyAgICAweDRGREEsIDB4NEZDRSwgMHg0RkRFLCAweDRGQjcsIDB4NTE1NywgMHg1MTkyLCAweDUxOTEsIDB4NTFBMCwKKyAgICAweDUyNEUsIDB4NTI0MywgMHg1MjRBLCAweDUyNEQsIDB4NTI0QywgMHg1MjRCLCAweDUyNDcsIDB4NTJDNywKKyAgICAweDUyQzksIDB4NTJDMywgMHg1MkMxLCAweDUzMEQsIDB4NTM1NywgMHg1MzdCLCAweDUzOUEsIDB4NTNEQiwKKyAgICAweDU0QUMsIDB4NTRDMCwgMHg1NEE4LCAweDU0Q0UsIDB4NTRDOSwgMHg1NEI4LCAweDU0QTYsIDB4NTRCMywKKyAgICAweDU0QzcsIDB4NTRDMiwgMHg1NEJELCAweDU0QUEsIDB4NTRDMSwgMHg1NEM0LCAweDU0QzgsIDB4NTRBRiwKKyAgICAweDU0QUIsIDB4NTRCMSwgMHg1NEJCLCAweDU0QTksIDB4NTRBNywgMHg1NEJGLCAweDU2RkYsIDB4NTc4MiwKKyAgICAweDU3OEIsIDB4NTdBMCwgMHg1N0EzLCAweDU3QTIsIDB4NTdDRSwgMHg1N0FFLCAweDU3OTMsIDB4NTk1NSwKKyAgICAweDU5NTEsIDB4NTk0RiwgMHg1OTRFLCAweDU5NTAsIDB4NTlEQywgMHg1OUQ4LCAweDU5RkYsIDB4NTlFMywKKyAgICAweDU5RTgsIDB4NUEwMywgMHg1OUU1LCAweDU5RUEsIDB4NTlEQSwgMHg1OUU2LCAweDVBMDEsIDB4NTlGQiwKKyAgICAweDVCNjksIDB4NUJBMywgMHg1QkE2LCAweDVCQTQsIDB4NUJBMiwgMHg1QkE1LCAweDVDMDEsIDB4NUM0RSwKKyAgICAweDVDNEYsIDB4NUM0RCwgMHg1QzRCLCAweDVDRDksIDB4NUNEMiwgMHg1REY3LCAweDVFMUQsIDB4NUUyNSwKKyAgICAweDVFMUYsIDB4NUU3RCwgMHg1RUEwLCAweDVFQTYsIDB4NUVGQSwgMHg1RjA4LCAweDVGMkQsIDB4NUY2NSwKKyAgICAweDVGODgsIDB4NUY4NSwgMHg1RjhBLCAweDVGOEIsIDB4NUY4NywgMHg1RjhDLCAweDVGODksIDB4NjAxMiwKKyAgICAweDYwMUQsIDB4NjAyMCwgMHg2MDI1LCAweDYwMEUsIDB4NjAyOCwgMHg2MDRELCAweDYwNzAsIDB4NjA2OCwKKyAgICAweDYwNjIsIDB4NjA0NiwgMHg2MDQzLCAweDYwNkMsIDB4NjA2QiwgMHg2MDZBLCAweDYwNjQsIDB4NjI0MSwKKyAgICAweDYyREMsIDB4NjMxNiwgMHg2MzA5LCAweDYyRkMsIDB4NjJFRCwgMHg2MzAxLCAweDYyRUUsIDB4NjJGRCwKKyAgICAweDYzMDcsIDB4NjJGMSwgMHg2MkY3LCAweDYyRUYsIDB4NjJFQywgMHg2MkZFLCAweDYyRjQsIDB4NjMxMSwKKyAgICAweDYzMDIsIDB4NjUzRiwgMHg2NTQ1LCAweDY1QUIsIDB4NjVCRCwgMHg2NUUyLCAweDY2MjUsIDB4NjYyRCwKKyAgICAweDY2MjAsIDB4NjYyNywgMHg2NjJGLCAweDY2MUYsIDB4NjYyOCwgMHg2NjMxLCAweDY2MjQsIDB4NjZGNywKKyAgICAweDY3RkYsIDB4NjdEMywgMHg2N0YxLCAweDY3RDQsIDB4NjdEMCwgMHg2N0VDLCAweDY3QjYsIDB4NjdBRiwKKyAgICAweDY3RjUsIDB4NjdFOSwgMHg2N0VGLCAweDY3QzQsIDB4NjdEMSwgMHg2N0I0LCAweDY3REEsIDB4NjdFNSwKKyAgICAweDY3QjgsIDB4NjdDRiwgMHg2N0RFLCAweDY3RjMsIDB4NjdCMCwgMHg2N0Q5LCAweDY3RTIsIDB4NjdERCwKKyAgICAweDY3RDIsIDB4NkI2QSwgMHg2QjgzLCAweDZCODYsIDB4NkJCNSwgMHg2QkQyLCAweDZCRDcsIDB4NkMxRiwKKyAgICAweDZDQzksIDB4NkQwQiwgMHg2RDMyLCAweDZEMkEsIDB4NkQ0MSwgMHg2RDI1LCAweDZEMEMsIDB4NkQzMSwKKyAgICAweDZEMUUsIDB4NkQxNywgMHg2RDNCLCAweDZEM0QsIDB4NkQzRSwgMHg2RDM2LCAweDZEMUIsIDB4NkNGNSwKKyAgICAweDZEMzksIDB4NkQyNywgMHg2RDM4LCAweDZEMjksIDB4NkQyRSwgMHg2RDM1LCAweDZEMEUsIDB4NkQyQiwKKyAgICAweDcwQUIsIDB4NzBCQSwgMHg3MEIzLCAweDcwQUMsIDB4NzBBRiwgMHg3MEFELCAweDcwQjgsIDB4NzBBRSwKKyAgICAweDcwQTQsIDB4NzIzMCwgMHg3MjcyLCAweDcyNkYsIDB4NzI3NCwgMHg3MkU5LCAweDcyRTAsIDB4NzJFMSwKKyAgICAweDczQjcsIDB4NzNDQSwgMHg3M0JCLCAweDczQjIsIDB4NzNDRCwgMHg3M0MwLCAweDczQjMsIDB4NzUxQSwKKyAgICAweDc1MkQsIDB4NzU0RiwgMHg3NTRDLCAweDc1NEUsIDB4NzU0QiwgMHg3NUFCLCAweDc1QTQsIDB4NzVBNSwKKyAgICAweDc1QTIsIDB4NzVBMywgMHg3Njc4LCAweDc2ODYsIDB4NzY4NywgMHg3Njg4LCAweDc2QzgsIDB4NzZDNiwKKyAgICAweDc2QzMsIDB4NzZDNSwgMHg3NzAxLCAweDc2RjksIDB4NzZGOCwgMHg3NzA5LCAweDc3MEIsIDB4NzZGRSwKKyAgICAweDc2RkMsIDB4NzcwNywgMHg3N0RDLCAweDc4MDIsIDB4NzgxNCwgMHg3ODBDLCAweDc4MEQsIDB4Nzk0NiwKKyAgICAweDc5NDksIDB4Nzk0OCwgMHg3OTQ3LCAweDc5QjksIDB4NzlCQSwgMHg3OUQxLCAweDc5RDIsIDB4NzlDQiwKKyAgICAweDdBN0YsIDB4N0E4MSwgMHg3QUZGLCAweDdBRkQsIDB4N0M3RCwgMHg3RDAyLCAweDdEMDUsIDB4N0QwMCwKKyAgICAweDdEMDksIDB4N0QwNywgMHg3RDA0LCAweDdEMDYsIDB4N0YzOCwgMHg3RjhFLCAweDdGQkYsIDB4ODAxMCwKKyAgICAweDgwMEQsIDB4ODAxMSwgMHg4MDM2LCAweDgwRDYsIDB4ODBFNSwgMHg4MERBLCAweDgwQzMsIDB4ODBDNCwKKyAgICAweDgwQ0MsIDB4ODBFMSwgMHg4MERCLCAweDgwQ0UsIDB4ODBERSwgMHg4MEU0LCAweDgwREQsIDB4ODFGNCwKKyAgICAweDgyMjIsIDB4ODJFNywgMHg4MzAzLCAweDgzMDUsIDB4ODJFMywgMHg4MkRCLCAweDgyRTYsIDB4ODMwNCwKKyAgICAweDgyRTUsIDB4ODMwMiwgMHg4MzA5LCAweDgyRDIsIDB4ODJENywgMHg4MkYxLCAweDgzMDEsIDB4ODJEQywKKyAgICAweDgyRDQsIDB4ODJEMSwgMHg4MkRFLCAweDgyRDMsIDB4ODJERiwgMHg4MkVGLCAweDgzMDYsIDB4ODY1MCwKKyAgICAweDg2NzksIDB4ODY3QiwgMHg4NjdBLCAweDg4NEQsIDB4ODg2QiwgMHg4OTgxLCAweDg5RDQsIDB4OEEwOCwKKyAgICAweDhBMDIsIDB4OEEwMywgMHg4QzlFLCAweDhDQTAsIDB4OEQ3NCwgMHg4RDczLCAweDhEQjQsIDB4OEVDRCwKKyAgICAweDhFQ0MsIDB4OEZGMCwgMHg4RkU2LCAweDhGRTIsIDB4OEZFQSwgMHg4RkU1LCAweDhGRUQsIDB4OEZFQiwKKyAgICAweDhGRTQsIDB4OEZFOCwgMHg5MENBLCAweDkwQ0UsIDB4OTBDMSwgMHg5MEMzLCAweDkxNEIsIDB4OTE0QSwKKyAgICAweDkxQ0QsIDB4OTU4MiwgMHg5NjUwLCAweDk2NEIsIDB4OTY0QywgMHg5NjRELCAweDk3NjIsIDB4OTc2OSwKKyAgICAweDk3Q0IsIDB4OTdFRCwgMHg5N0YzLCAweDk4MDEsIDB4OThBOCwgMHg5OERCLCAweDk4REYsIDB4OTk5NiwKKyAgICAweDk5OTksIDB4NEU1OCwgMHg0RUIzLCAweDUwMEMsIDB4NTAwRCwgMHg1MDIzLCAweDRGRUYsIDB4NTAyNiwKKyAgICAweDUwMjUsIDB4NEZGOCwgMHg1MDI5LCAweDUwMTYsIDB4NTAwNiwgMHg1MDNDLCAweDUwMUYsIDB4NTAxQSwKKyAgICAweDUwMTIsIDB4NTAxMSwgMHg0RkZBLCAweDUwMDAsIDB4NTAxNCwgMHg1MDI4LCAweDRGRjEsIDB4NTAyMSwKKyAgICAweDUwMEIsIDB4NTAxOSwgMHg1MDE4LCAweDRGRjMsIDB4NEZFRSwgMHg1MDJELCAweDUwMkEsIDB4NEZGRSwKKyAgICAweDUwMkIsIDB4NTAwOSwgMHg1MTdDLCAweDUxQTQsIDB4NTFBNSwgMHg1MUEyLCAweDUxQ0QsIDB4NTFDQywKKyAgICAweDUxQzYsIDB4NTFDQiwgMHg1MjU2LCAweDUyNUMsIDB4NTI1NCwgMHg1MjVCLCAweDUyNUQsIDB4NTMyQSwKKyAgICAweDUzN0YsIDB4NTM5RiwgMHg1MzlELCAweDUzREYsIDB4NTRFOCwgMHg1NTEwLCAweDU1MDEsIDB4NTUzNywKKyAgICAweDU0RkMsIDB4NTRFNSwgMHg1NEYyLCAweDU1MDYsIDB4NTRGQSwgMHg1NTE0LCAweDU0RTksIDB4NTRFRCwKKyAgICAweDU0RTEsIDB4NTUwOSwgMHg1NEVFLCAweDU0RUEsIDB4NTRFNiwgMHg1NTI3LCAweDU1MDcsIDB4NTRGRCwKKyAgICAweDU1MEYsIDB4NTcwMywgMHg1NzA0LCAweDU3QzIsIDB4NTdENCwgMHg1N0NCLCAweDU3QzMsIDB4NTgwOSwKKyAgICAweDU5MEYsIDB4NTk1NywgMHg1OTU4LCAweDU5NUEsIDB4NUExMSwgMHg1QTE4LCAweDVBMUMsIDB4NUExRiwKKyAgICAweDVBMUIsIDB4NUExMywgMHg1OUVDLCAweDVBMjAsIDB4NUEyMywgMHg1QTI5LCAweDVBMjUsIDB4NUEwQywKKyAgICAweDVBMDksIDB4NUI2QiwgMHg1QzU4LCAweDVCQjAsIDB4NUJCMywgMHg1QkI2LCAweDVCQjQsIDB4NUJBRSwKKyAgICAweDVCQjUsIDB4NUJCOSwgMHg1QkI4LCAweDVDMDQsIDB4NUM1MSwgMHg1QzU1LCAweDVDNTAsIDB4NUNFRCwKKyAgICAweDVDRkQsIDB4NUNGQiwgMHg1Q0VBLCAweDVDRTgsIDB4NUNGMCwgMHg1Q0Y2LCAweDVEMDEsIDB4NUNGNCwKKyAgICAweDVERUUsIDB4NUUyRCwgMHg1RTJCLCAweDVFQUIsIDB4NUVBRCwgMHg1RUE3LCAweDVGMzEsIDB4NUY5MiwKKyAgICAweDVGOTEsIDB4NUY5MCwgMHg2MDU5LCAweDYwNjMsIDB4NjA2NSwgMHg2MDUwLCAweDYwNTUsIDB4NjA2RCwKKyAgICAweDYwNjksIDB4NjA2RiwgMHg2MDg0LCAweDYwOUYsIDB4NjA5QSwgMHg2MDhELCAweDYwOTQsIDB4NjA4QywKKyAgICAweDYwODUsIDB4NjA5NiwgMHg2MjQ3LCAweDYyRjMsIDB4NjMwOCwgMHg2MkZGLCAweDYzNEUsIDB4NjMzRSwKKyAgICAweDYzMkYsIDB4NjM1NSwgMHg2MzQyLCAweDYzNDYsIDB4NjM0RiwgMHg2MzQ5LCAweDYzM0EsIDB4NjM1MCwKKyAgICAweDYzM0QsIDB4NjMyQSwgMHg2MzJCLCAweDYzMjgsIDB4NjM0RCwgMHg2MzRDLCAweDY1NDgsIDB4NjU0OSwKKyAgICAweDY1OTksIDB4NjVDMSwgMHg2NUM1LCAweDY2NDIsIDB4NjY0OSwgMHg2NjRGLCAweDY2NDMsIDB4NjY1MiwKKyAgICAweDY2NEMsIDB4NjY0NSwgMHg2NjQxLCAweDY2RjgsIDB4NjcxNCwgMHg2NzE1LCAweDY3MTcsIDB4NjgyMSwKKyAgICAweDY4MzgsIDB4Njg0OCwgMHg2ODQ2LCAweDY4NTMsIDB4NjgzOSwgMHg2ODQyLCAweDY4NTQsIDB4NjgyOSwKKyAgICAweDY4QjMsIDB4NjgxNywgMHg2ODRDLCAweDY4NTEsIDB4NjgzRCwgMHg2N0Y0LCAweDY4NTAsIDB4Njg0MCwKKyAgICAweDY4M0MsIDB4Njg0MywgMHg2ODJBLCAweDY4NDUsIDB4NjgxMywgMHg2ODE4LCAweDY4NDEsIDB4NkI4QSwKKyAgICAweDZCODksIDB4NkJCNywgMHg2QzIzLCAweDZDMjcsIDB4NkMyOCwgMHg2QzI2LCAweDZDMjQsIDB4NkNGMCwKKyAgICAweDZENkEsIDB4NkQ5NSwgMHg2RDg4LCAweDZEODcsIDB4NkQ2NiwgMHg2RDc4LCAweDZENzcsIDB4NkQ1OSwKKyAgICAweDZEOTMsIDB4NkQ2QywgMHg2RDg5LCAweDZENkUsIDB4NkQ1QSwgMHg2RDc0LCAweDZENjksIDB4NkQ4QywKKyAgICAweDZEOEEsIDB4NkQ3OSwgMHg2RDg1LCAweDZENjUsIDB4NkQ5NCwgMHg3MENBLCAweDcwRDgsIDB4NzBFNCwKKyAgICAweDcwRDksIDB4NzBDOCwgMHg3MENGLCAweDcyMzksIDB4NzI3OSwgMHg3MkZDLCAweDcyRjksIDB4NzJGRCwKKyAgICAweDcyRjgsIDB4NzJGNywgMHg3Mzg2LCAweDczRUQsIDB4NzQwOSwgMHg3M0VFLCAweDczRTAsIDB4NzNFQSwKKyAgICAweDczREUsIDB4NzU1NCwgMHg3NTVELCAweDc1NUMsIDB4NzU1QSwgMHg3NTU5LCAweDc1QkUsIDB4NzVDNSwKKyAgICAweDc1QzcsIDB4NzVCMiwgMHg3NUIzLCAweDc1QkQsIDB4NzVCQywgMHg3NUI5LCAweDc1QzIsIDB4NzVCOCwKKyAgICAweDc2OEIsIDB4NzZCMCwgMHg3NkNBLCAweDc2Q0QsIDB4NzZDRSwgMHg3NzI5LCAweDc3MUYsIDB4NzcyMCwKKyAgICAweDc3MjgsIDB4NzdFOSwgMHg3ODMwLCAweDc4MjcsIDB4NzgzOCwgMHg3ODFELCAweDc4MzQsIDB4NzgzNywKKyAgICAweDc4MjUsIDB4NzgyRCwgMHg3ODIwLCAweDc4MUYsIDB4NzgzMiwgMHg3OTU1LCAweDc5NTAsIDB4Nzk2MCwKKyAgICAweDc5NUYsIDB4Nzk1NiwgMHg3OTVFLCAweDc5NUQsIDB4Nzk1NywgMHg3OTVBLCAweDc5RTQsIDB4NzlFMywKKyAgICAweDc5RTcsIDB4NzlERiwgMHg3OUU2LCAweDc5RTksIDB4NzlEOCwgMHg3QTg0LCAweDdBODgsIDB4N0FEOSwKKyAgICAweDdCMDYsIDB4N0IxMSwgMHg3Qzg5LCAweDdEMjEsIDB4N0QxNywgMHg3RDBCLCAweDdEMEEsIDB4N0QyMCwKKyAgICAweDdEMjIsIDB4N0QxNCwgMHg3RDEwLCAweDdEMTUsIDB4N0QxQSwgMHg3RDFDLCAweDdEMEQsIDB4N0QxOSwKKyAgICAweDdEMUIsIDB4N0YzQSwgMHg3RjVGLCAweDdGOTQsIDB4N0ZDNSwgMHg3RkMxLCAweDgwMDYsIDB4ODAwNCwKKyAgICAweDgwMTgsIDB4ODAxNSwgMHg4MDE5LCAweDgwMTcsIDB4ODAzRCwgMHg4MDNGLCAweDgwRjEsIDB4ODEwMiwKKyAgICAweDgwRjAsIDB4ODEwNSwgMHg4MEVELCAweDgwRjQsIDB4ODEwNiwgMHg4MEY4LCAweDgwRjMsIDB4ODEwOCwKKyAgICAweDgwRkQsIDB4ODEwQSwgMHg4MEZDLCAweDgwRUYsIDB4ODFFRCwgMHg4MUVDLCAweDgyMDAsIDB4ODIxMCwKKyAgICAweDgyMkEsIDB4ODIyQiwgMHg4MjI4LCAweDgyMkMsIDB4ODJCQiwgMHg4MzJCLCAweDgzNTIsIDB4ODM1NCwKKyAgICAweDgzNEEsIDB4ODMzOCwgMHg4MzUwLCAweDgzNDksIDB4ODMzNSwgMHg4MzM0LCAweDgzNEYsIDB4ODMzMiwKKyAgICAweDgzMzksIDB4ODMzNiwgMHg4MzE3LCAweDgzNDAsIDB4ODMzMSwgMHg4MzI4LCAweDgzNDMsIDB4ODY1NCwKKyAgICAweDg2OEEsIDB4ODZBQSwgMHg4NjkzLCAweDg2QTQsIDB4ODZBOSwgMHg4NjhDLCAweDg2QTMsIDB4ODY5QywKKyAgICAweDg4NzAsIDB4ODg3NywgMHg4ODgxLCAweDg4ODIsIDB4ODg3RCwgMHg4ODc5LCAweDhBMTgsIDB4OEExMCwKKyAgICAweDhBMEUsIDB4OEEwQywgMHg4QTE1LCAweDhBMEEsIDB4OEExNywgMHg4QTEzLCAweDhBMTYsIDB4OEEwRiwKKyAgICAweDhBMTEsIDB4OEM0OCwgMHg4QzdBLCAweDhDNzksIDB4OENBMSwgMHg4Q0EyLCAweDhENzcsIDB4OEVBQywKKyAgICAweDhFRDIsIDB4OEVENCwgMHg4RUNGLCAweDhGQjEsIDB4OTAwMSwgMHg5MDA2LCAweDhGRjcsIDB4OTAwMCwKKyAgICAweDhGRkEsIDB4OEZGNCwgMHg5MDAzLCAweDhGRkQsIDB4OTAwNSwgMHg4RkY4LCAweDkwOTUsIDB4OTBFMSwKKyAgICAweDkwREQsIDB4OTBFMiwgMHg5MTUyLCAweDkxNEQsIDB4OTE0QywgMHg5MUQ4LCAweDkxREQsIDB4OTFENywKKyAgICAweDkxREMsIDB4OTFEOSwgMHg5NTgzLCAweDk2NjIsIDB4OTY2MywgMHg5NjYxLCAweDk2NUIsIDB4OTY1RCwKKyAgICAweDk2NjQsIDB4OTY1OCwgMHg5NjVFLCAweDk2QkIsIDB4OThFMiwgMHg5OUFDLCAweDlBQTgsIDB4OUFEOCwKKyAgICAweDlCMjUsIDB4OUIzMiwgMHg5QjNDLCAweDRFN0UsIDB4NTA3QSwgMHg1MDdELCAweDUwNUMsIDB4NTA0NywKKyAgICAweDUwNDMsIDB4NTA0QywgMHg1MDVBLCAweDUwNDksIDB4NTA2NSwgMHg1MDc2LCAweDUwNEUsIDB4NTA1NSwKKyAgICAweDUwNzUsIDB4NTA3NCwgMHg1MDc3LCAweDUwNEYsIDB4NTAwRiwgMHg1MDZGLCAweDUwNkQsIDB4NTE1QywKKyAgICAweDUxOTUsIDB4NTFGMCwgMHg1MjZBLCAweDUyNkYsIDB4NTJEMiwgMHg1MkQ5LCAweDUyRDgsIDB4NTJENSwKKyAgICAweDUzMTAsIDB4NTMwRiwgMHg1MzE5LCAweDUzM0YsIDB4NTM0MCwgMHg1MzNFLCAweDUzQzMsIDB4NjZGQywKKyAgICAweDU1NDYsIDB4NTU2QSwgMHg1NTY2LCAweDU1NDQsIDB4NTU1RSwgMHg1NTYxLCAweDU1NDMsIDB4NTU0QSwKKyAgICAweDU1MzEsIDB4NTU1NiwgMHg1NTRGLCAweDU1NTUsIDB4NTUyRiwgMHg1NTY0LCAweDU1MzgsIDB4NTUyRSwKKyAgICAweDU1NUMsIDB4NTUyQywgMHg1NTYzLCAweDU1MzMsIDB4NTU0MSwgMHg1NTU3LCAweDU3MDgsIDB4NTcwQiwKKyAgICAweDU3MDksIDB4NTdERiwgMHg1ODA1LCAweDU4MEEsIDB4NTgwNiwgMHg1N0UwLCAweDU3RTQsIDB4NTdGQSwKKyAgICAweDU4MDIsIDB4NTgzNSwgMHg1N0Y3LCAweDU3RjksIDB4NTkyMCwgMHg1OTYyLCAweDVBMzYsIDB4NUE0MSwKKyAgICAweDVBNDksIDB4NUE2NiwgMHg1QTZBLCAweDVBNDAsIDB4NUEzQywgMHg1QTYyLCAweDVBNUEsIDB4NUE0NiwKKyAgICAweDVBNEEsIDB4NUI3MCwgMHg1QkM3LCAweDVCQzUsIDB4NUJDNCwgMHg1QkMyLCAweDVCQkYsIDB4NUJDNiwKKyAgICAweDVDMDksIDB4NUMwOCwgMHg1QzA3LCAweDVDNjAsIDB4NUM1QywgMHg1QzVELCAweDVEMDcsIDB4NUQwNiwKKyAgICAweDVEMEUsIDB4NUQxQiwgMHg1RDE2LCAweDVEMjIsIDB4NUQxMSwgMHg1RDI5LCAweDVEMTQsIDB4NUQxOSwKKyAgICAweDVEMjQsIDB4NUQyNywgMHg1RDE3LCAweDVERTIsIDB4NUUzOCwgMHg1RTM2LCAweDVFMzMsIDB4NUUzNywKKyAgICAweDVFQjcsIDB4NUVCOCwgMHg1RUI2LCAweDVFQjUsIDB4NUVCRSwgMHg1RjM1LCAweDVGMzcsIDB4NUY1NywKKyAgICAweDVGNkMsIDB4NUY2OSwgMHg1RjZCLCAweDVGOTcsIDB4NUY5OSwgMHg1RjlFLCAweDVGOTgsIDB4NUZBMSwKKyAgICAweDVGQTAsIDB4NUY5QywgMHg2MDdGLCAweDYwQTMsIDB4NjA4OSwgMHg2MEEwLCAweDYwQTgsIDB4NjBDQiwKKyAgICAweDYwQjQsIDB4NjBFNiwgMHg2MEJELCAweDYwQzUsIDB4NjBCQiwgMHg2MEI1LCAweDYwREMsIDB4NjBCQywKKyAgICAweDYwRDgsIDB4NjBENSwgMHg2MEM2LCAweDYwREYsIDB4NjBCOCwgMHg2MERBLCAweDYwQzcsIDB4NjIxQSwKKyAgICAweDYyMUIsIDB4NjI0OCwgMHg2M0EwLCAweDYzQTcsIDB4NjM3MiwgMHg2Mzk2LCAweDYzQTIsIDB4NjNBNSwKKyAgICAweDYzNzcsIDB4NjM2NywgMHg2Mzk4LCAweDYzQUEsIDB4NjM3MSwgMHg2M0E5LCAweDYzODksIDB4NjM4MywKKyAgICAweDYzOUIsIDB4NjM2QiwgMHg2M0E4LCAweDYzODQsIDB4NjM4OCwgMHg2Mzk5LCAweDYzQTEsIDB4NjNBQywKKyAgICAweDYzOTIsIDB4NjM4RiwgMHg2MzgwLCAweDYzN0IsIDB4NjM2OSwgMHg2MzY4LCAweDYzN0EsIDB4NjU1RCwKKyAgICAweDY1NTYsIDB4NjU1MSwgMHg2NTU5LCAweDY1NTcsIDB4NTU1RiwgMHg2NTRGLCAweDY1NTgsIDB4NjU1NSwKKyAgICAweDY1NTQsIDB4NjU5QywgMHg2NTlCLCAweDY1QUMsIDB4NjVDRiwgMHg2NUNCLCAweDY1Q0MsIDB4NjVDRSwKKyAgICAweDY2NUQsIDB4NjY1QSwgMHg2NjY0LCAweDY2NjgsIDB4NjY2NiwgMHg2NjVFLCAweDY2RjksIDB4NTJENywKKyAgICAweDY3MUIsIDB4Njg4MSwgMHg2OEFGLCAweDY4QTIsIDB4Njg5MywgMHg2OEI1LCAweDY4N0YsIDB4Njg3NiwKKyAgICAweDY4QjEsIDB4NjhBNywgMHg2ODk3LCAweDY4QjAsIDB4Njg4MywgMHg2OEM0LCAweDY4QUQsIDB4Njg4NiwKKyAgICAweDY4ODUsIDB4Njg5NCwgMHg2ODlELCAweDY4QTgsIDB4Njg5RiwgMHg2OEExLCAweDY4ODIsIDB4NkIzMiwKKyAgICAweDZCQkEsIDB4NkJFQiwgMHg2QkVDLCAweDZDMkIsIDB4NkQ4RSwgMHg2REJDLCAweDZERjMsIDB4NkREOSwKKyAgICAweDZEQjIsIDB4NkRFMSwgMHg2RENDLCAweDZERTQsIDB4NkRGQiwgMHg2REZBLCAweDZFMDUsIDB4NkRDNywKKyAgICAweDZEQ0IsIDB4NkRBRiwgMHg2REQxLCAweDZEQUUsIDB4NkRERSwgMHg2REY5LCAweDZEQjgsIDB4NkRGNywKKyAgICAweDZERjUsIDB4NkRDNSwgMHg2REQyLCAweDZFMUEsIDB4NkRCNSwgMHg2RERBLCAweDZERUIsIDB4NkREOCwKKyAgICAweDZERUEsIDB4NkRGMSwgMHg2REVFLCAweDZERTgsIDB4NkRDNiwgMHg2REM0LCAweDZEQUEsIDB4NkRFQywKKyAgICAweDZEQkYsIDB4NkRFNiwgMHg3MEY5LCAweDcxMDksIDB4NzEwQSwgMHg3MEZELCAweDcwRUYsIDB4NzIzRCwKKyAgICAweDcyN0QsIDB4NzI4MSwgMHg3MzFDLCAweDczMUIsIDB4NzMxNiwgMHg3MzEzLCAweDczMTksIDB4NzM4NywKKyAgICAweDc0MDUsIDB4NzQwQSwgMHg3NDAzLCAweDc0MDYsIDB4NzNGRSwgMHg3NDBELCAweDc0RTAsIDB4NzRGNiwKKyAgICAweDc0RjcsIDB4NzUxQywgMHg3NTIyLCAweDc1NjUsIDB4NzU2NiwgMHg3NTYyLCAweDc1NzAsIDB4NzU4RiwKKyAgICAweDc1RDQsIDB4NzVENSwgMHg3NUI1LCAweDc1Q0EsIDB4NzVDRCwgMHg3NjhFLCAweDc2RDQsIDB4NzZEMiwKKyAgICAweDc2REIsIDB4NzczNywgMHg3NzNFLCAweDc3M0MsIDB4NzczNiwgMHg3NzM4LCAweDc3M0EsIDB4Nzg2QiwKKyAgICAweDc4NDMsIDB4Nzg0RSwgMHg3OTY1LCAweDc5NjgsIDB4Nzk2RCwgMHg3OUZCLCAweDdBOTIsIDB4N0E5NSwKKyAgICAweDdCMjAsIDB4N0IyOCwgMHg3QjFCLCAweDdCMkMsIDB4N0IyNiwgMHg3QjE5LCAweDdCMUUsIDB4N0IyRSwKKyAgICAweDdDOTIsIDB4N0M5NywgMHg3Qzk1LCAweDdENDYsIDB4N0Q0MywgMHg3RDcxLCAweDdEMkUsIDB4N0QzOSwKKyAgICAweDdEM0MsIDB4N0Q0MCwgMHg3RDMwLCAweDdEMzMsIDB4N0Q0NCwgMHg3RDJGLCAweDdENDIsIDB4N0QzMiwKKyAgICAweDdEMzEsIDB4N0YzRCwgMHg3RjlFLCAweDdGOUEsIDB4N0ZDQywgMHg3RkNFLCAweDdGRDIsIDB4ODAxQywKKyAgICAweDgwNEEsIDB4ODA0NiwgMHg4MTJGLCAweDgxMTYsIDB4ODEyMywgMHg4MTJCLCAweDgxMjksIDB4ODEzMCwKKyAgICAweDgxMjQsIDB4ODIwMiwgMHg4MjM1LCAweDgyMzcsIDB4ODIzNiwgMHg4MjM5LCAweDgzOEUsIDB4ODM5RSwKKyAgICAweDgzOTgsIDB4ODM3OCwgMHg4M0EyLCAweDgzOTYsIDB4ODNCRCwgMHg4M0FCLCAweDgzOTIsIDB4ODM4QSwKKyAgICAweDgzOTMsIDB4ODM4OSwgMHg4M0EwLCAweDgzNzcsIDB4ODM3QiwgMHg4MzdDLCAweDgzODYsIDB4ODNBNywKKyAgICAweDg2NTUsIDB4NUY2QSwgMHg4NkM3LCAweDg2QzAsIDB4ODZCNiwgMHg4NkM0LCAweDg2QjUsIDB4ODZDNiwKKyAgICAweDg2Q0IsIDB4ODZCMSwgMHg4NkFGLCAweDg2QzksIDB4ODg1MywgMHg4ODlFLCAweDg4ODgsIDB4ODhBQiwKKyAgICAweDg4OTIsIDB4ODg5NiwgMHg4ODhELCAweDg4OEIsIDB4ODk5MywgMHg4OThGLCAweDhBMkEsIDB4OEExRCwKKyAgICAweDhBMjMsIDB4OEEyNSwgMHg4QTMxLCAweDhBMkQsIDB4OEExRiwgMHg4QTFCLCAweDhBMjIsIDB4OEM0OSwKKyAgICAweDhDNUEsIDB4OENBOSwgMHg4Q0FDLCAweDhDQUIsIDB4OENBOCwgMHg4Q0FBLCAweDhDQTcsIDB4OEQ2NywKKyAgICAweDhENjYsIDB4OERCRSwgMHg4REJBLCAweDhFREIsIDB4OEVERiwgMHg5MDE5LCAweDkwMEQsIDB4OTAxQSwKKyAgICAweDkwMTcsIDB4OTAyMywgMHg5MDFGLCAweDkwMUQsIDB4OTAxMCwgMHg5MDE1LCAweDkwMUUsIDB4OTAyMCwKKyAgICAweDkwMEYsIDB4OTAyMiwgMHg5MDE2LCAweDkwMUIsIDB4OTAxNCwgMHg5MEU4LCAweDkwRUQsIDB4OTBGRCwKKyAgICAweDkxNTcsIDB4OTFDRSwgMHg5MUY1LCAweDkxRTYsIDB4OTFFMywgMHg5MUU3LCAweDkxRUQsIDB4OTFFOSwKKyAgICAweDk1ODksIDB4OTY2QSwgMHg5Njc1LCAweDk2NzMsIDB4OTY3OCwgMHg5NjcwLCAweDk2NzQsIDB4OTY3NiwKKyAgICAweDk2NzcsIDB4OTY2QywgMHg5NkMwLCAweDk2RUEsIDB4OTZFOSwgMHg3QUUwLCAweDdBREYsIDB4OTgwMiwKKyAgICAweDk4MDMsIDB4OUI1QSwgMHg5Q0U1LCAweDlFNzUsIDB4OUU3RiwgMHg5RUE1LCAweDlFQkIsIDB4NTBBMiwKKyAgICAweDUwOEQsIDB4NTA4NSwgMHg1MDk5LCAweDUwOTEsIDB4NTA4MCwgMHg1MDk2LCAweDUwOTgsIDB4NTA5QSwKKyAgICAweDY3MDAsIDB4NTFGMSwgMHg1MjcyLCAweDUyNzQsIDB4NTI3NSwgMHg1MjY5LCAweDUyREUsIDB4NTJERCwKKyAgICAweDUyREIsIDB4NTM1QSwgMHg1M0E1LCAweDU1N0IsIDB4NTU4MCwgMHg1NUE3LCAweDU1N0MsIDB4NTU4QSwKKyAgICAweDU1OUQsIDB4NTU5OCwgMHg1NTgyLCAweDU1OUMsIDB4NTVBQSwgMHg1NTk0LCAweDU1ODcsIDB4NTU4QiwKKyAgICAweDU1ODMsIDB4NTVCMywgMHg1NUFFLCAweDU1OUYsIDB4NTUzRSwgMHg1NUIyLCAweDU1OUEsIDB4NTVCQiwKKyAgICAweDU1QUMsIDB4NTVCMSwgMHg1NTdFLCAweDU1ODksIDB4NTVBQiwgMHg1NTk5LCAweDU3MEQsIDB4NTgyRiwKKyAgICAweDU4MkEsIDB4NTgzNCwgMHg1ODI0LCAweDU4MzAsIDB4NTgzMSwgMHg1ODIxLCAweDU4MUQsIDB4NTgyMCwKKyAgICAweDU4RjksIDB4NThGQSwgMHg1OTYwLCAweDVBNzcsIDB4NUE5QSwgMHg1QTdGLCAweDVBOTIsIDB4NUE5QiwKKyAgICAweDVBQTcsIDB4NUI3MywgMHg1QjcxLCAweDVCRDIsIDB4NUJDQywgMHg1QkQzLCAweDVCRDAsIDB4NUMwQSwKKyAgICAweDVDMEIsIDB4NUMzMSwgMHg1RDRDLCAweDVENTAsIDB4NUQzNCwgMHg1RDQ3LCAweDVERkQsIDB4NUU0NSwKKyAgICAweDVFM0QsIDB4NUU0MCwgMHg1RTQzLCAweDVFN0UsIDB4NUVDQSwgMHg1RUMxLCAweDVFQzIsIDB4NUVDNCwKKyAgICAweDVGM0MsIDB4NUY2RCwgMHg1RkE5LCAweDVGQUEsIDB4NUZBOCwgMHg2MEQxLCAweDYwRTEsIDB4NjBCMiwKKyAgICAweDYwQjYsIDB4NjBFMCwgMHg2MTFDLCAweDYxMjMsIDB4NjBGQSwgMHg2MTE1LCAweDYwRjAsIDB4NjBGQiwKKyAgICAweDYwRjQsIDB4NjE2OCwgMHg2MEYxLCAweDYxMEUsIDB4NjBGNiwgMHg2MTA5LCAweDYxMDAsIDB4NjExMiwKKyAgICAweDYyMUYsIDB4NjI0OSwgMHg2M0EzLCAweDYzOEMsIDB4NjNDRiwgMHg2M0MwLCAweDYzRTksIDB4NjNDOSwKKyAgICAweDYzQzYsIDB4NjNDRCwgMHg2M0QyLCAweDYzRTMsIDB4NjNEMCwgMHg2M0UxLCAweDYzRDYsIDB4NjNFRCwKKyAgICAweDYzRUUsIDB4NjM3NiwgMHg2M0Y0LCAweDYzRUEsIDB4NjNEQiwgMHg2NDUyLCAweDYzREEsIDB4NjNGOSwKKyAgICAweDY1NUUsIDB4NjU2NiwgMHg2NTYyLCAweDY1NjMsIDB4NjU5MSwgMHg2NTkwLCAweDY1QUYsIDB4NjY2RSwKKyAgICAweDY2NzAsIDB4NjY3NCwgMHg2Njc2LCAweDY2NkYsIDB4NjY5MSwgMHg2NjdBLCAweDY2N0UsIDB4NjY3NywKKyAgICAweDY2RkUsIDB4NjZGRiwgMHg2NzFGLCAweDY3MUQsIDB4NjhGQSwgMHg2OEQ1LCAweDY4RTAsIDB4NjhEOCwKKyAgICAweDY4RDcsIDB4NjkwNSwgMHg2OERGLCAweDY4RjUsIDB4NjhFRSwgMHg2OEU3LCAweDY4RjksIDB4NjhEMiwKKyAgICAweDY4RjIsIDB4NjhFMywgMHg2OENCLCAweDY4Q0QsIDB4NjkwRCwgMHg2OTEyLCAweDY5MEUsIDB4NjhDOSwKKyAgICAweDY4REEsIDB4Njk2RSwgMHg2OEZCLCAweDZCM0UsIDB4NkIzQSwgMHg2QjNELCAweDZCOTgsIDB4NkI5NiwKKyAgICAweDZCQkMsIDB4NkJFRiwgMHg2QzJFLCAweDZDMkYsIDB4NkMyQywgMHg2RTJGLCAweDZFMzgsIDB4NkU1NCwKKyAgICAweDZFMjEsIDB4NkUzMiwgMHg2RTY3LCAweDZFNEEsIDB4NkUyMCwgMHg2RTI1LCAweDZFMjMsIDB4NkUxQiwKKyAgICAweDZFNUIsIDB4NkU1OCwgMHg2RTI0LCAweDZFNTYsIDB4NkU2RSwgMHg2RTJELCAweDZFMjYsIDB4NkU2RiwKKyAgICAweDZFMzQsIDB4NkU0RCwgMHg2RTNBLCAweDZFMkMsIDB4NkU0MywgMHg2RTFELCAweDZFM0UsIDB4NkVDQiwKKyAgICAweDZFODksIDB4NkUxOSwgMHg2RTRFLCAweDZFNjMsIDB4NkU0NCwgMHg2RTcyLCAweDZFNjksIDB4NkU1RiwKKyAgICAweDcxMTksIDB4NzExQSwgMHg3MTI2LCAweDcxMzAsIDB4NzEyMSwgMHg3MTM2LCAweDcxNkUsIDB4NzExQywKKyAgICAweDcyNEMsIDB4NzI4NCwgMHg3MjgwLCAweDczMzYsIDB4NzMyNSwgMHg3MzM0LCAweDczMjksIDB4NzQzQSwKKyAgICAweDc0MkEsIDB4NzQzMywgMHg3NDIyLCAweDc0MjUsIDB4NzQzNSwgMHg3NDM2LCAweDc0MzQsIDB4NzQyRiwKKyAgICAweDc0MUIsIDB4NzQyNiwgMHg3NDI4LCAweDc1MjUsIDB4NzUyNiwgMHg3NTZCLCAweDc1NkEsIDB4NzVFMiwKKyAgICAweDc1REIsIDB4NzVFMywgMHg3NUQ5LCAweDc1RDgsIDB4NzVERSwgMHg3NUUwLCAweDc2N0IsIDB4NzY3QywKKyAgICAweDc2OTYsIDB4NzY5MywgMHg3NkI0LCAweDc2REMsIDB4Nzc0RiwgMHg3N0VELCAweDc4NUQsIDB4Nzg2QywKKyAgICAweDc4NkYsIDB4N0EwRCwgMHg3QTA4LCAweDdBMEIsIDB4N0EwNSwgMHg3QTAwLCAweDdBOTgsIDB4N0E5NywKKyAgICAweDdBOTYsIDB4N0FFNSwgMHg3QUUzLCAweDdCNDksIDB4N0I1NiwgMHg3QjQ2LCAweDdCNTAsIDB4N0I1MiwKKyAgICAweDdCNTQsIDB4N0I0RCwgMHg3QjRCLCAweDdCNEYsIDB4N0I1MSwgMHg3QzlGLCAweDdDQTUsIDB4N0Q1RSwKKyAgICAweDdENTAsIDB4N0Q2OCwgMHg3RDU1LCAweDdEMkIsIDB4N0Q2RSwgMHg3RDcyLCAweDdENjEsIDB4N0Q2NiwKKyAgICAweDdENjIsIDB4N0Q3MCwgMHg3RDczLCAweDU1ODQsIDB4N0ZENCwgMHg3RkQ1LCAweDgwMEIsIDB4ODA1MiwKKyAgICAweDgwODUsIDB4ODE1NSwgMHg4MTU0LCAweDgxNEIsIDB4ODE1MSwgMHg4MTRFLCAweDgxMzksIDB4ODE0NiwKKyAgICAweDgxM0UsIDB4ODE0QywgMHg4MTUzLCAweDgxNzQsIDB4ODIxMiwgMHg4MjFDLCAweDgzRTksIDB4ODQwMywKKyAgICAweDgzRjgsIDB4ODQwRCwgMHg4M0UwLCAweDgzQzUsIDB4ODQwQiwgMHg4M0MxLCAweDgzRUYsIDB4ODNGMSwKKyAgICAweDgzRjQsIDB4ODQ1NywgMHg4NDBBLCAweDgzRjAsIDB4ODQwQywgMHg4M0NDLCAweDgzRkQsIDB4ODNGMiwKKyAgICAweDgzQ0EsIDB4ODQzOCwgMHg4NDBFLCAweDg0MDQsIDB4ODNEQywgMHg4NDA3LCAweDgzRDQsIDB4ODNERiwKKyAgICAweDg2NUIsIDB4ODZERiwgMHg4NkQ5LCAweDg2RUQsIDB4ODZENCwgMHg4NkRCLCAweDg2RTQsIDB4ODZEMCwKKyAgICAweDg2REUsIDB4ODg1NywgMHg4OEMxLCAweDg4QzIsIDB4ODhCMSwgMHg4OTgzLCAweDg5OTYsIDB4OEEzQiwKKyAgICAweDhBNjAsIDB4OEE1NSwgMHg4QTVFLCAweDhBM0MsIDB4OEE0MSwgMHg4QTU0LCAweDhBNUIsIDB4OEE1MCwKKyAgICAweDhBNDYsIDB4OEEzNCwgMHg4QTNBLCAweDhBMzYsIDB4OEE1NiwgMHg4QzYxLCAweDhDODIsIDB4OENBRiwKKyAgICAweDhDQkMsIDB4OENCMywgMHg4Q0JELCAweDhDQzEsIDB4OENCQiwgMHg4Q0MwLCAweDhDQjQsIDB4OENCNywKKyAgICAweDhDQjYsIDB4OENCRiwgMHg4Q0I4LCAweDhEOEEsIDB4OEQ4NSwgMHg4RDgxLCAweDhEQ0UsIDB4OERERCwKKyAgICAweDhEQ0IsIDB4OEREQSwgMHg4REQxLCAweDhEQ0MsIDB4OEREQiwgMHg4REM2LCAweDhFRkIsIDB4OEVGOCwKKyAgICAweDhFRkMsIDB4OEY5QywgMHg5MDJFLCAweDkwMzUsIDB4OTAzMSwgMHg5MDM4LCAweDkwMzIsIDB4OTAzNiwKKyAgICAweDkxMDIsIDB4OTBGNSwgMHg5MTA5LCAweDkwRkUsIDB4OTE2MywgMHg5MTY1LCAweDkxQ0YsIDB4OTIxNCwKKyAgICAweDkyMTUsIDB4OTIyMywgMHg5MjA5LCAweDkyMUUsIDB4OTIwRCwgMHg5MjEwLCAweDkyMDcsIDB4OTIxMSwKKyAgICAweDk1OTQsIDB4OTU4RiwgMHg5NThCLCAweDk1OTEsIDB4OTU5MywgMHg5NTkyLCAweDk1OEUsIDB4OTY4QSwKKyAgICAweDk2OEUsIDB4OTY4QiwgMHg5NjdELCAweDk2ODUsIDB4OTY4NiwgMHg5NjhELCAweDk2NzIsIDB4OTY4NCwKKyAgICAweDk2QzEsIDB4OTZDNSwgMHg5NkM0LCAweDk2QzYsIDB4OTZDNywgMHg5NkVGLCAweDk2RjIsIDB4OTdDQywKKyAgICAweDk4MDUsIDB4OTgwNiwgMHg5ODA4LCAweDk4RTcsIDB4OThFQSwgMHg5OEVGLCAweDk4RTksIDB4OThGMiwKKyAgICAweDk4RUQsIDB4OTlBRSwgMHg5OUFELCAweDlFQzMsIDB4OUVDRCwgMHg5RUQxLCAweDRFODIsIDB4NTBBRCwKKyAgICAweDUwQjUsIDB4NTBCMiwgMHg1MEIzLCAweDUwQzUsIDB4NTBCRSwgMHg1MEFDLCAweDUwQjcsIDB4NTBCQiwKKyAgICAweDUwQUYsIDB4NTBDNywgMHg1MjdGLCAweDUyNzcsIDB4NTI3RCwgMHg1MkRGLCAweDUyRTYsIDB4NTJFNCwKKyAgICAweDUyRTIsIDB4NTJFMywgMHg1MzJGLCAweDU1REYsIDB4NTVFOCwgMHg1NUQzLCAweDU1RTYsIDB4NTVDRSwKKyAgICAweDU1REMsIDB4NTVDNywgMHg1NUQxLCAweDU1RTMsIDB4NTVFNCwgMHg1NUVGLCAweDU1REEsIDB4NTVFMSwKKyAgICAweDU1QzUsIDB4NTVDNiwgMHg1NUU1LCAweDU1QzksIDB4NTcxMiwgMHg1NzEzLCAweDU4NUUsIDB4NTg1MSwKKyAgICAweDU4NTgsIDB4NTg1NywgMHg1ODVBLCAweDU4NTQsIDB4NTg2QiwgMHg1ODRDLCAweDU4NkQsIDB4NTg0QSwKKyAgICAweDU4NjIsIDB4NTg1MiwgMHg1ODRCLCAweDU5NjcsIDB4NUFDMSwgMHg1QUM5LCAweDVBQ0MsIDB4NUFCRSwKKyAgICAweDVBQkQsIDB4NUFCQywgMHg1QUIzLCAweDVBQzIsIDB4NUFCMiwgMHg1RDY5LCAweDVENkYsIDB4NUU0QywKKyAgICAweDVFNzksIDB4NUVDOSwgMHg1RUM4LCAweDVGMTIsIDB4NUY1OSwgMHg1RkFDLCAweDVGQUUsIDB4NjExQSwKKyAgICAweDYxMEYsIDB4NjE0OCwgMHg2MTFGLCAweDYwRjMsIDB4NjExQiwgMHg2MEY5LCAweDYxMDEsIDB4NjEwOCwKKyAgICAweDYxNEUsIDB4NjE0QywgMHg2MTQ0LCAweDYxNEQsIDB4NjEzRSwgMHg2MTM0LCAweDYxMjcsIDB4NjEwRCwKKyAgICAweDYxMDYsIDB4NjEzNywgMHg2MjIxLCAweDYyMjIsIDB4NjQxMywgMHg2NDNFLCAweDY0MUUsIDB4NjQyQSwKKyAgICAweDY0MkQsIDB4NjQzRCwgMHg2NDJDLCAweDY0MEYsIDB4NjQxQywgMHg2NDE0LCAweDY0MEQsIDB4NjQzNiwKKyAgICAweDY0MTYsIDB4NjQxNywgMHg2NDA2LCAweDY1NkMsIDB4NjU5RiwgMHg2NUIwLCAweDY2OTcsIDB4NjY4OSwKKyAgICAweDY2ODcsIDB4NjY4OCwgMHg2Njk2LCAweDY2ODQsIDB4NjY5OCwgMHg2NjhELCAweDY3MDMsIDB4Njk5NCwKKyAgICAweDY5NkQsIDB4Njk1QSwgMHg2OTc3LCAweDY5NjAsIDB4Njk1NCwgMHg2OTc1LCAweDY5MzAsIDB4Njk4MiwKKyAgICAweDY5NEEsIDB4Njk2OCwgMHg2OTZCLCAweDY5NUUsIDB4Njk1MywgMHg2OTc5LCAweDY5ODYsIDB4Njk1RCwKKyAgICAweDY5NjMsIDB4Njk1QiwgMHg2QjQ3LCAweDZCNzIsIDB4NkJDMCwgMHg2QkJGLCAweDZCRDMsIDB4NkJGRCwKKyAgICAweDZFQTIsIDB4NkVBRiwgMHg2RUQzLCAweDZFQjYsIDB4NkVDMiwgMHg2RTkwLCAweDZFOUQsIDB4NkVDNywKKyAgICAweDZFQzUsIDB4NkVBNSwgMHg2RTk4LCAweDZFQkMsIDB4NkVCQSwgMHg2RUFCLCAweDZFRDEsIDB4NkU5NiwKKyAgICAweDZFOUMsIDB4NkVDNCwgMHg2RUQ0LCAweDZFQUEsIDB4NkVBNywgMHg2RUI0LCAweDcxNEUsIDB4NzE1OSwKKyAgICAweDcxNjksIDB4NzE2NCwgMHg3MTQ5LCAweDcxNjcsIDB4NzE1QywgMHg3MTZDLCAweDcxNjYsIDB4NzE0QywKKyAgICAweDcxNjUsIDB4NzE1RSwgMHg3MTQ2LCAweDcxNjgsIDB4NzE1NiwgMHg3MjNBLCAweDcyNTIsIDB4NzMzNywKKyAgICAweDczNDUsIDB4NzMzRiwgMHg3MzNFLCAweDc0NkYsIDB4NzQ1QSwgMHg3NDU1LCAweDc0NUYsIDB4NzQ1RSwKKyAgICAweDc0NDEsIDB4NzQzRiwgMHg3NDU5LCAweDc0NUIsIDB4NzQ1QywgMHg3NTc2LCAweDc1NzgsIDB4NzYwMCwKKyAgICAweDc1RjAsIDB4NzYwMSwgMHg3NUYyLCAweDc1RjEsIDB4NzVGQSwgMHg3NUZGLCAweDc1RjQsIDB4NzVGMywKKyAgICAweDc2REUsIDB4NzZERiwgMHg3NzVCLCAweDc3NkIsIDB4Nzc2NiwgMHg3NzVFLCAweDc3NjMsIDB4Nzc3OSwKKyAgICAweDc3NkEsIDB4Nzc2QywgMHg3NzVDLCAweDc3NjUsIDB4Nzc2OCwgMHg3NzYyLCAweDc3RUUsIDB4Nzg4RSwKKyAgICAweDc4QjAsIDB4Nzg5NywgMHg3ODk4LCAweDc4OEMsIDB4Nzg4OSwgMHg3ODdDLCAweDc4OTEsIDB4Nzg5MywKKyAgICAweDc4N0YsIDB4Nzk3QSwgMHg3OTdGLCAweDc5ODEsIDB4ODQyQywgMHg3OUJELCAweDdBMUMsIDB4N0ExQSwKKyAgICAweDdBMjAsIDB4N0ExNCwgMHg3QTFGLCAweDdBMUUsIDB4N0E5RiwgMHg3QUEwLCAweDdCNzcsIDB4N0JDMCwKKyAgICAweDdCNjAsIDB4N0I2RSwgMHg3QjY3LCAweDdDQjEsIDB4N0NCMywgMHg3Q0I1LCAweDdEOTMsIDB4N0Q3OSwKKyAgICAweDdEOTEsIDB4N0Q4MSwgMHg3RDhGLCAweDdENUIsIDB4N0Y2RSwgMHg3RjY5LCAweDdGNkEsIDB4N0Y3MiwKKyAgICAweDdGQTksIDB4N0ZBOCwgMHg3RkE0LCAweDgwNTYsIDB4ODA1OCwgMHg4MDg2LCAweDgwODQsIDB4ODE3MSwKKyAgICAweDgxNzAsIDB4ODE3OCwgMHg4MTY1LCAweDgxNkUsIDB4ODE3MywgMHg4MTZCLCAweDgxNzksIDB4ODE3QSwKKyAgICAweDgxNjYsIDB4ODIwNSwgMHg4MjQ3LCAweDg0ODIsIDB4ODQ3NywgMHg4NDNELCAweDg0MzEsIDB4ODQ3NSwKKyAgICAweDg0NjYsIDB4ODQ2QiwgMHg4NDQ5LCAweDg0NkMsIDB4ODQ1QiwgMHg4NDNDLCAweDg0MzUsIDB4ODQ2MSwKKyAgICAweDg0NjMsIDB4ODQ2OSwgMHg4NDZELCAweDg0NDYsIDB4ODY1RSwgMHg4NjVDLCAweDg2NUYsIDB4ODZGOSwKKyAgICAweDg3MTMsIDB4ODcwOCwgMHg4NzA3LCAweDg3MDAsIDB4ODZGRSwgMHg4NkZCLCAweDg3MDIsIDB4ODcwMywKKyAgICAweDg3MDYsIDB4ODcwQSwgMHg4ODU5LCAweDg4REYsIDB4ODhENCwgMHg4OEQ5LCAweDg4REMsIDB4ODhEOCwKKyAgICAweDg4REQsIDB4ODhFMSwgMHg4OENBLCAweDg4RDUsIDB4ODhEMiwgMHg4OTlDLCAweDg5RTMsIDB4OEE2QiwKKyAgICAweDhBNzIsIDB4OEE3MywgMHg4QTY2LCAweDhBNjksIDB4OEE3MCwgMHg4QTg3LCAweDhBN0MsIDB4OEE2MywKKyAgICAweDhBQTAsIDB4OEE3MSwgMHg4QTg1LCAweDhBNkQsIDB4OEE2MiwgMHg4QTZFLCAweDhBNkMsIDB4OEE3OSwKKyAgICAweDhBN0IsIDB4OEEzRSwgMHg4QTY4LCAweDhDNjIsIDB4OEM4QSwgMHg4Qzg5LCAweDhDQ0EsIDB4OENDNywKKyAgICAweDhDQzgsIDB4OENDNCwgMHg4Q0IyLCAweDhDQzMsIDB4OENDMiwgMHg4Q0M1LCAweDhERTEsIDB4OERERiwKKyAgICAweDhERTgsIDB4OERFRiwgMHg4REYzLCAweDhERkEsIDB4OERFQSwgMHg4REU0LCAweDhERTYsIDB4OEVCMiwKKyAgICAweDhGMDMsIDB4OEYwOSwgMHg4RUZFLCAweDhGMEEsIDB4OEY5RiwgMHg4RkIyLCAweDkwNEIsIDB4OTA0QSwKKyAgICAweDkwNTMsIDB4OTA0MiwgMHg5MDU0LCAweDkwM0MsIDB4OTA1NSwgMHg5MDUwLCAweDkwNDcsIDB4OTA0RiwKKyAgICAweDkwNEUsIDB4OTA0RCwgMHg5MDUxLCAweDkwM0UsIDB4OTA0MSwgMHg5MTEyLCAweDkxMTcsIDB4OTE2QywKKyAgICAweDkxNkEsIDB4OTE2OSwgMHg5MUM5LCAweDkyMzcsIDB4OTI1NywgMHg5MjM4LCAweDkyM0QsIDB4OTI0MCwKKyAgICAweDkyM0UsIDB4OTI1QiwgMHg5MjRCLCAweDkyNjQsIDB4OTI1MSwgMHg5MjM0LCAweDkyNDksIDB4OTI0RCwKKyAgICAweDkyNDUsIDB4OTIzOSwgMHg5MjNGLCAweDkyNUEsIDB4OTU5OCwgMHg5Njk4LCAweDk2OTQsIDB4OTY5NSwKKyAgICAweDk2Q0QsIDB4OTZDQiwgMHg5NkM5LCAweDk2Q0EsIDB4OTZGNywgMHg5NkZCLCAweDk2RjksIDB4OTZGNiwKKyAgICAweDk3NTYsIDB4OTc3NCwgMHg5Nzc2LCAweDk4MTAsIDB4OTgxMSwgMHg5ODEzLCAweDk4MEEsIDB4OTgxMiwKKyAgICAweDk4MEMsIDB4OThGQywgMHg5OEY0LCAweDk4RkQsIDB4OThGRSwgMHg5OUIzLCAweDk5QjEsIDB4OTlCNCwKKyAgICAweDlBRTEsIDB4OUNFOSwgMHg5RTgyLCAweDlGMEUsIDB4OUYxMywgMHg5RjIwLCAweDUwRTcsIDB4NTBFRSwKKyAgICAweDUwRTUsIDB4NTBENiwgMHg1MEVELCAweDUwREEsIDB4NTBENSwgMHg1MENGLCAweDUwRDEsIDB4NTBGMSwKKyAgICAweDUwQ0UsIDB4NTBFOSwgMHg1MTYyLCAweDUxRjMsIDB4NTI4MywgMHg1MjgyLCAweDUzMzEsIDB4NTNBRCwKKyAgICAweDU1RkUsIDB4NTYwMCwgMHg1NjFCLCAweDU2MTcsIDB4NTVGRCwgMHg1NjE0LCAweDU2MDYsIDB4NTYwOSwKKyAgICAweDU2MEQsIDB4NTYwRSwgMHg1NUY3LCAweDU2MTYsIDB4NTYxRiwgMHg1NjA4LCAweDU2MTAsIDB4NTVGNiwKKyAgICAweDU3MTgsIDB4NTcxNiwgMHg1ODc1LCAweDU4N0UsIDB4NTg4MywgMHg1ODkzLCAweDU4OEEsIDB4NTg3OSwKKyAgICAweDU4ODUsIDB4NTg3RCwgMHg1OEZELCAweDU5MjUsIDB4NTkyMiwgMHg1OTI0LCAweDU5NkEsIDB4NTk2OSwKKyAgICAweDVBRTEsIDB4NUFFNiwgMHg1QUU5LCAweDVBRDcsIDB4NUFENiwgMHg1QUQ4LCAweDVBRTMsIDB4NUI3NSwKKyAgICAweDVCREUsIDB4NUJFNywgMHg1QkUxLCAweDVCRTUsIDB4NUJFNiwgMHg1QkU4LCAweDVCRTIsIDB4NUJFNCwKKyAgICAweDVCREYsIDB4NUMwRCwgMHg1QzYyLCAweDVEODQsIDB4NUQ4NywgMHg1RTVCLCAweDVFNjMsIDB4NUU1NSwKKyAgICAweDVFNTcsIDB4NUU1NCwgMHg1RUQzLCAweDVFRDYsIDB4NUYwQSwgMHg1RjQ2LCAweDVGNzAsIDB4NUZCOSwKKyAgICAweDYxNDcsIDB4NjEzRiwgMHg2MTRCLCAweDYxNzcsIDB4NjE2MiwgMHg2MTYzLCAweDYxNUYsIDB4NjE1QSwKKyAgICAweDYxNTgsIDB4NjE3NSwgMHg2MjJBLCAweDY0ODcsIDB4NjQ1OCwgMHg2NDU0LCAweDY0QTQsIDB4NjQ3OCwKKyAgICAweDY0NUYsIDB4NjQ3QSwgMHg2NDUxLCAweDY0NjcsIDB4NjQzNCwgMHg2NDZELCAweDY0N0IsIDB4NjU3MiwKKyAgICAweDY1QTEsIDB4NjVENywgMHg2NUQ2LCAweDY2QTIsIDB4NjZBOCwgMHg2NjlELCAweDY5OUMsIDB4NjlBOCwKKyAgICAweDY5OTUsIDB4NjlDMSwgMHg2OUFFLCAweDY5RDMsIDB4NjlDQiwgMHg2OTlCLCAweDY5QjcsIDB4NjlCQiwKKyAgICAweDY5QUIsIDB4NjlCNCwgMHg2OUQwLCAweDY5Q0QsIDB4NjlBRCwgMHg2OUNDLCAweDY5QTYsIDB4NjlDMywKKyAgICAweDY5QTMsIDB4NkI0OSwgMHg2QjRDLCAweDZDMzMsIDB4NkYzMywgMHg2RjE0LCAweDZFRkUsIDB4NkYxMywKKyAgICAweDZFRjQsIDB4NkYyOSwgMHg2RjNFLCAweDZGMjAsIDB4NkYyQywgMHg2RjBGLCAweDZGMDIsIDB4NkYyMiwKKyAgICAweDZFRkYsIDB4NkVFRiwgMHg2RjA2LCAweDZGMzEsIDB4NkYzOCwgMHg2RjMyLCAweDZGMjMsIDB4NkYxNSwKKyAgICAweDZGMkIsIDB4NkYyRiwgMHg2Rjg4LCAweDZGMkEsIDB4NkVFQywgMHg2RjAxLCAweDZFRjIsIDB4NkVDQywKKyAgICAweDZFRjcsIDB4NzE5NCwgMHg3MTk5LCAweDcxN0QsIDB4NzE4QSwgMHg3MTg0LCAweDcxOTIsIDB4NzIzRSwKKyAgICAweDcyOTIsIDB4NzI5NiwgMHg3MzQ0LCAweDczNTAsIDB4NzQ2NCwgMHg3NDYzLCAweDc0NkEsIDB4NzQ3MCwKKyAgICAweDc0NkQsIDB4NzUwNCwgMHg3NTkxLCAweDc2MjcsIDB4NzYwRCwgMHg3NjBCLCAweDc2MDksIDB4NzYxMywKKyAgICAweDc2RTEsIDB4NzZFMywgMHg3Nzg0LCAweDc3N0QsIDB4Nzc3RiwgMHg3NzYxLCAweDc4QzEsIDB4Nzg5RiwKKyAgICAweDc4QTcsIDB4NzhCMywgMHg3OEE5LCAweDc4QTMsIDB4Nzk4RSwgMHg3OThGLCAweDc5OEQsIDB4N0EyRSwKKyAgICAweDdBMzEsIDB4N0FBQSwgMHg3QUE5LCAweDdBRUQsIDB4N0FFRiwgMHg3QkExLCAweDdCOTUsIDB4N0I4QiwKKyAgICAweDdCNzUsIDB4N0I5NywgMHg3QjlELCAweDdCOTQsIDB4N0I4RiwgMHg3QkI4LCAweDdCODcsIDB4N0I4NCwKKyAgICAweDdDQjksIDB4N0NCRCwgMHg3Q0JFLCAweDdEQkIsIDB4N0RCMCwgMHg3RDlDLCAweDdEQkQsIDB4N0RCRSwKKyAgICAweDdEQTAsIDB4N0RDQSwgMHg3REI0LCAweDdEQjIsIDB4N0RCMSwgMHg3REJBLCAweDdEQTIsIDB4N0RCRiwKKyAgICAweDdEQjUsIDB4N0RCOCwgMHg3REFELCAweDdERDIsIDB4N0RDNywgMHg3REFDLCAweDdGNzAsIDB4N0ZFMCwKKyAgICAweDdGRTEsIDB4N0ZERiwgMHg4MDVFLCAweDgwNUEsIDB4ODA4NywgMHg4MTUwLCAweDgxODAsIDB4ODE4RiwKKyAgICAweDgxODgsIDB4ODE4QSwgMHg4MTdGLCAweDgxODIsIDB4ODFFNywgMHg4MUZBLCAweDgyMDcsIDB4ODIxNCwKKyAgICAweDgyMUUsIDB4ODI0QiwgMHg4NEM5LCAweDg0QkYsIDB4ODRDNiwgMHg4NEM0LCAweDg0OTksIDB4ODQ5RSwKKyAgICAweDg0QjIsIDB4ODQ5QywgMHg4NENCLCAweDg0QjgsIDB4ODRDMCwgMHg4NEQzLCAweDg0OTAsIDB4ODRCQywKKyAgICAweDg0RDEsIDB4ODRDQSwgMHg4NzNGLCAweDg3MUMsIDB4ODczQiwgMHg4NzIyLCAweDg3MjUsIDB4ODczNCwKKyAgICAweDg3MTgsIDB4ODc1NSwgMHg4NzM3LCAweDg3MjksIDB4ODhGMywgMHg4OTAyLCAweDg4RjQsIDB4ODhGOSwKKyAgICAweDg4RjgsIDB4ODhGRCwgMHg4OEU4LCAweDg5MUEsIDB4ODhFRiwgMHg4QUE2LCAweDhBOEMsIDB4OEE5RSwKKyAgICAweDhBQTMsIDB4OEE4RCwgMHg4QUExLCAweDhBOTMsIDB4OEFBNCwgMHg4QUFBLCAweDhBQTUsIDB4OEFBOCwKKyAgICAweDhBOTgsIDB4OEE5MSwgMHg4QTlBLCAweDhBQTcsIDB4OEM2QSwgMHg4QzhELCAweDhDOEMsIDB4OENEMywKKyAgICAweDhDRDEsIDB4OENEMiwgMHg4RDZCLCAweDhEOTksIDB4OEQ5NSwgMHg4REZDLCAweDhGMTQsIDB4OEYxMiwKKyAgICAweDhGMTUsIDB4OEYxMywgMHg4RkEzLCAweDkwNjAsIDB4OTA1OCwgMHg5MDVDLCAweDkwNjMsIDB4OTA1OSwKKyAgICAweDkwNUUsIDB4OTA2MiwgMHg5MDVELCAweDkwNUIsIDB4OTExOSwgMHg5MTE4LCAweDkxMUUsIDB4OTE3NSwKKyAgICAweDkxNzgsIDB4OTE3NywgMHg5MTc0LCAweDkyNzgsIDB4OTJBQywgMHg5MjgwLCAweDkyODUsIDB4OTI5OCwKKyAgICAweDkyOTYsIDB4OTI3QiwgMHg5MjkzLCAweDkyOUMsIDB4OTJBOCwgMHg5MjdDLCAweDkyOTEsIDB4OTVBMSwKKyAgICAweDk1QTgsIDB4OTVBOSwgMHg5NUEzLCAweDk1QTUsIDB4OTVBNCwgMHg5Njk5LCAweDk2OUMsIDB4OTY5QiwKKyAgICAweDk2Q0MsIDB4OTZEMiwgMHg5NzAwLCAweDk3N0MsIDB4OTc4NSwgMHg5N0Y2LCAweDk4MTcsIDB4OTgxOCwKKyAgICAweDk4QUYsIDB4OThCMSwgMHg5OTAzLCAweDk5MDUsIDB4OTkwQywgMHg5OTA5LCAweDk5QzEsIDB4OUFBRiwKKyAgICAweDlBQjAsIDB4OUFFNiwgMHg5QjQxLCAweDlCNDIsIDB4OUNGNCwgMHg5Q0Y2LCAweDlDRjMsIDB4OUVCQywKKyAgICAweDlGM0IsIDB4OUY0QSwgMHg1MTA0LCAweDUxMDAsIDB4NTBGQiwgMHg1MEY1LCAweDUwRjksIDB4NTEwMiwKKyAgICAweDUxMDgsIDB4NTEwOSwgMHg1MTA1LCAweDUxREMsIDB4NTI4NywgMHg1Mjg4LCAweDUyODksIDB4NTI4RCwKKyAgICAweDUyOEEsIDB4NTJGMCwgMHg1M0IyLCAweDU2MkUsIDB4NTYzQiwgMHg1NjM5LCAweDU2MzIsIDB4NTYzRiwKKyAgICAweDU2MzQsIDB4NTYyOSwgMHg1NjUzLCAweDU2NEUsIDB4NTY1NywgMHg1Njc0LCAweDU2MzYsIDB4NTYyRiwKKyAgICAweDU2MzAsIDB4NTg4MCwgMHg1ODlGLCAweDU4OUUsIDB4NThCMywgMHg1ODlDLCAweDU4QUUsIDB4NThBOSwKKyAgICAweDU4QTYsIDB4NTk2RCwgMHg1QjA5LCAweDVBRkIsIDB4NUIwQiwgMHg1QUY1LCAweDVCMEMsIDB4NUIwOCwKKyAgICAweDVCRUUsIDB4NUJFQywgMHg1QkU5LCAweDVCRUIsIDB4NUM2NCwgMHg1QzY1LCAweDVEOUQsIDB4NUQ5NCwKKyAgICAweDVFNjIsIDB4NUU1RiwgMHg1RTYxLCAweDVFRTIsIDB4NUVEQSwgMHg1RURGLCAweDVFREQsIDB4NUVFMywKKyAgICAweDVFRTAsIDB4NUY0OCwgMHg1RjcxLCAweDVGQjcsIDB4NUZCNSwgMHg2MTc2LCAweDYxNjcsIDB4NjE2RSwKKyAgICAweDYxNUQsIDB4NjE1NSwgMHg2MTgyLCAweDYxN0MsIDB4NjE3MCwgMHg2MTZCLCAweDYxN0UsIDB4NjFBNywKKyAgICAweDYxOTAsIDB4NjFBQiwgMHg2MThFLCAweDYxQUMsIDB4NjE5QSwgMHg2MUE0LCAweDYxOTQsIDB4NjFBRSwKKyAgICAweDYyMkUsIDB4NjQ2OSwgMHg2NDZGLCAweDY0NzksIDB4NjQ5RSwgMHg2NEIyLCAweDY0ODgsIDB4NjQ5MCwKKyAgICAweDY0QjAsIDB4NjRBNSwgMHg2NDkzLCAweDY0OTUsIDB4NjRBOSwgMHg2NDkyLCAweDY0QUUsIDB4NjRBRCwKKyAgICAweDY0QUIsIDB4NjQ5QSwgMHg2NEFDLCAweDY0OTksIDB4NjRBMiwgMHg2NEIzLCAweDY1NzUsIDB4NjU3NywKKyAgICAweDY1NzgsIDB4NjZBRSwgMHg2NkFCLCAweDY2QjQsIDB4NjZCMSwgMHg2QTIzLCAweDZBMUYsIDB4NjlFOCwKKyAgICAweDZBMDEsIDB4NkExRSwgMHg2QTE5LCAweDY5RkQsIDB4NkEyMSwgMHg2QTEzLCAweDZBMEEsIDB4NjlGMywKKyAgICAweDZBMDIsIDB4NkEwNSwgMHg2OUVELCAweDZBMTEsIDB4NkI1MCwgMHg2QjRFLCAweDZCQTQsIDB4NkJDNSwKKyAgICAweDZCQzYsIDB4NkYzRiwgMHg2RjdDLCAweDZGODQsIDB4NkY1MSwgMHg2RjY2LCAweDZGNTQsIDB4NkY4NiwKKyAgICAweDZGNkQsIDB4NkY1QiwgMHg2Rjc4LCAweDZGNkUsIDB4NkY4RSwgMHg2RjdBLCAweDZGNzAsIDB4NkY2NCwKKyAgICAweDZGOTcsIDB4NkY1OCwgMHg2RUQ1LCAweDZGNkYsIDB4NkY2MCwgMHg2RjVGLCAweDcxOUYsIDB4NzFBQywKKyAgICAweDcxQjEsIDB4NzFBOCwgMHg3MjU2LCAweDcyOUIsIDB4NzM0RSwgMHg3MzU3LCAweDc0NjksIDB4NzQ4QiwKKyAgICAweDc0ODMsIDB4NzQ3RSwgMHg3NDgwLCAweDc1N0YsIDB4NzYyMCwgMHg3NjI5LCAweDc2MUYsIDB4NzYyNCwKKyAgICAweDc2MjYsIDB4NzYyMSwgMHg3NjIyLCAweDc2OUEsIDB4NzZCQSwgMHg3NkU0LCAweDc3OEUsIDB4Nzc4NywKKyAgICAweDc3OEMsIDB4Nzc5MSwgMHg3NzhCLCAweDc4Q0IsIDB4NzhDNSwgMHg3OEJBLCAweDc4Q0EsIDB4NzhCRSwKKyAgICAweDc4RDUsIDB4NzhCQywgMHg3OEQwLCAweDdBM0YsIDB4N0EzQywgMHg3QTQwLCAweDdBM0QsIDB4N0EzNywKKyAgICAweDdBM0IsIDB4N0FBRiwgMHg3QUFFLCAweDdCQUQsIDB4N0JCMSwgMHg3QkM0LCAweDdCQjQsIDB4N0JDNiwKKyAgICAweDdCQzcsIDB4N0JDMSwgMHg3QkEwLCAweDdCQ0MsIDB4N0NDQSwgMHg3REUwLCAweDdERjQsIDB4N0RFRiwKKyAgICAweDdERkIsIDB4N0REOCwgMHg3REVDLCAweDdEREQsIDB4N0RFOCwgMHg3REUzLCAweDdEREEsIDB4N0RERSwKKyAgICAweDdERTksIDB4N0Q5RSwgMHg3REQ5LCAweDdERjIsIDB4N0RGOSwgMHg3Rjc1LCAweDdGNzcsIDB4N0ZBRiwKKyAgICAweDdGRTksIDB4ODAyNiwgMHg4MTlCLCAweDgxOUMsIDB4ODE5RCwgMHg4MUEwLCAweDgxOUEsIDB4ODE5OCwKKyAgICAweDg1MTcsIDB4ODUzRCwgMHg4NTFBLCAweDg0RUUsIDB4ODUyQywgMHg4NTJELCAweDg1MTMsIDB4ODUxMSwKKyAgICAweDg1MjMsIDB4ODUyMSwgMHg4NTE0LCAweDg0RUMsIDB4ODUyNSwgMHg4NEZGLCAweDg1MDYsIDB4ODc4MiwKKyAgICAweDg3NzQsIDB4ODc3NiwgMHg4NzYwLCAweDg3NjYsIDB4ODc3OCwgMHg4NzY4LCAweDg3NTksIDB4ODc1NywKKyAgICAweDg3NEMsIDB4ODc1MywgMHg4ODVCLCAweDg4NUQsIDB4ODkxMCwgMHg4OTA3LCAweDg5MTIsIDB4ODkxMywKKyAgICAweDg5MTUsIDB4ODkwQSwgMHg4QUJDLCAweDhBRDIsIDB4OEFDNywgMHg4QUM0LCAweDhBOTUsIDB4OEFDQiwKKyAgICAweDhBRjgsIDB4OEFCMiwgMHg4QUM5LCAweDhBQzIsIDB4OEFCRiwgMHg4QUIwLCAweDhBRDYsIDB4OEFDRCwKKyAgICAweDhBQjYsIDB4OEFCOSwgMHg4QURCLCAweDhDNEMsIDB4OEM0RSwgMHg4QzZDLCAweDhDRTAsIDB4OENERSwKKyAgICAweDhDRTYsIDB4OENFNCwgMHg4Q0VDLCAweDhDRUQsIDB4OENFMiwgMHg4Q0UzLCAweDhDREMsIDB4OENFQSwKKyAgICAweDhDRTEsIDB4OEQ2RCwgMHg4RDlGLCAweDhEQTMsIDB4OEUyQiwgMHg4RTEwLCAweDhFMUQsIDB4OEUyMiwKKyAgICAweDhFMEYsIDB4OEUyOSwgMHg4RTFGLCAweDhFMjEsIDB4OEUxRSwgMHg4RUJBLCAweDhGMUQsIDB4OEYxQiwKKyAgICAweDhGMUYsIDB4OEYyOSwgMHg4RjI2LCAweDhGMkEsIDB4OEYxQywgMHg4RjFFLCAweDhGMjUsIDB4OTA2OSwKKyAgICAweDkwNkUsIDB4OTA2OCwgMHg5MDZELCAweDkwNzcsIDB4OTEzMCwgMHg5MTJELCAweDkxMjcsIDB4OTEzMSwKKyAgICAweDkxODcsIDB4OTE4OSwgMHg5MThCLCAweDkxODMsIDB4OTJDNSwgMHg5MkJCLCAweDkyQjcsIDB4OTJFQSwKKyAgICAweDkyRTQsIDB4OTJDMSwgMHg5MkIzLCAweDkyQkMsIDB4OTJEMiwgMHg5MkM3LCAweDkyRjAsIDB4OTJCMiwKKyAgICAweDk1QUQsIDB4OTVCMSwgMHg5NzA0LCAweDk3MDYsIDB4OTcwNywgMHg5NzA5LCAweDk3NjAsIDB4OTc4RCwKKyAgICAweDk3OEIsIDB4OTc4RiwgMHg5ODIxLCAweDk4MkIsIDB4OTgxQywgMHg5OEIzLCAweDk5MEEsIDB4OTkxMywKKyAgICAweDk5MTIsIDB4OTkxOCwgMHg5OURELCAweDk5RDAsIDB4OTlERiwgMHg5OURCLCAweDk5RDEsIDB4OTlENSwKKyAgICAweDk5RDIsIDB4OTlEOSwgMHg5QUI3LCAweDlBRUUsIDB4OUFFRiwgMHg5QjI3LCAweDlCNDUsIDB4OUI0NCwKKyAgICAweDlCNzcsIDB4OUI2RiwgMHg5RDA2LCAweDlEMDksIDB4OUQwMywgMHg5RUE5LCAweDlFQkUsIDB4OUVDRSwKKyAgICAweDU4QTgsIDB4OUY1MiwgMHg1MTEyLCAweDUxMTgsIDB4NTExNCwgMHg1MTEwLCAweDUxMTUsIDB4NTE4MCwKKyAgICAweDUxQUEsIDB4NTFERCwgMHg1MjkxLCAweDUyOTMsIDB4NTJGMywgMHg1NjU5LCAweDU2NkIsIDB4NTY3OSwKKyAgICAweDU2NjksIDB4NTY2NCwgMHg1Njc4LCAweDU2NkEsIDB4NTY2OCwgMHg1NjY1LCAweDU2NzEsIDB4NTY2RiwKKyAgICAweDU2NkMsIDB4NTY2MiwgMHg1Njc2LCAweDU4QzEsIDB4NThCRSwgMHg1OEM3LCAweDU4QzUsIDB4NTk2RSwKKyAgICAweDVCMUQsIDB4NUIzNCwgMHg1Qjc4LCAweDVCRjAsIDB4NUMwRSwgMHg1RjRBLCAweDYxQjIsIDB4NjE5MSwKKyAgICAweDYxQTksIDB4NjE4QSwgMHg2MUNELCAweDYxQjYsIDB4NjFCRSwgMHg2MUNBLCAweDYxQzgsIDB4NjIzMCwKKyAgICAweDY0QzUsIDB4NjRDMSwgMHg2NENCLCAweDY0QkIsIDB4NjRCQywgMHg2NERBLCAweDY0QzQsIDB4NjRDNywKKyAgICAweDY0QzIsIDB4NjRDRCwgMHg2NEJGLCAweDY0RDIsIDB4NjRENCwgMHg2NEJFLCAweDY1NzQsIDB4NjZDNiwKKyAgICAweDY2QzksIDB4NjZCOSwgMHg2NkM0LCAweDY2QzcsIDB4NjZCOCwgMHg2QTNELCAweDZBMzgsIDB4NkEzQSwKKyAgICAweDZBNTksIDB4NkE2QiwgMHg2QTU4LCAweDZBMzksIDB4NkE0NCwgMHg2QTYyLCAweDZBNjEsIDB4NkE0QiwKKyAgICAweDZBNDcsIDB4NkEzNSwgMHg2QTVGLCAweDZBNDgsIDB4NkI1OSwgMHg2Qjc3LCAweDZDMDUsIDB4NkZDMiwKKyAgICAweDZGQjEsIDB4NkZBMSwgMHg2RkMzLCAweDZGQTQsIDB4NkZDMSwgMHg2RkE3LCAweDZGQjMsIDB4NkZDMCwKKyAgICAweDZGQjksIDB4NkZCNiwgMHg2RkE2LCAweDZGQTAsIDB4NkZCNCwgMHg3MUJFLCAweDcxQzksIDB4NzFEMCwKKyAgICAweDcxRDIsIDB4NzFDOCwgMHg3MUQ1LCAweDcxQjksIDB4NzFDRSwgMHg3MUQ5LCAweDcxREMsIDB4NzFDMywKKyAgICAweDcxQzQsIDB4NzM2OCwgMHg3NDlDLCAweDc0QTMsIDB4NzQ5OCwgMHg3NDlGLCAweDc0OUUsIDB4NzRFMiwKKyAgICAweDc1MEMsIDB4NzUwRCwgMHg3NjM0LCAweDc2MzgsIDB4NzYzQSwgMHg3NkU3LCAweDc2RTUsIDB4NzdBMCwKKyAgICAweDc3OUUsIDB4Nzc5RiwgMHg3N0E1LCAweDc4RTgsIDB4NzhEQSwgMHg3OEVDLCAweDc4RTcsIDB4NzlBNiwKKyAgICAweDdBNEQsIDB4N0E0RSwgMHg3QTQ2LCAweDdBNEMsIDB4N0E0QiwgMHg3QUJBLCAweDdCRDksIDB4N0MxMSwKKyAgICAweDdCQzksIDB4N0JFNCwgMHg3QkRCLCAweDdCRTEsIDB4N0JFOSwgMHg3QkU2LCAweDdDRDUsIDB4N0NENiwKKyAgICAweDdFMEEsIDB4N0UxMSwgMHg3RTA4LCAweDdFMUIsIDB4N0UyMywgMHg3RTFFLCAweDdFMUQsIDB4N0UwOSwKKyAgICAweDdFMTAsIDB4N0Y3OSwgMHg3RkIyLCAweDdGRjAsIDB4N0ZGMSwgMHg3RkVFLCAweDgwMjgsIDB4ODFCMywKKyAgICAweDgxQTksIDB4ODFBOCwgMHg4MUZCLCAweDgyMDgsIDB4ODI1OCwgMHg4MjU5LCAweDg1NEEsIDB4ODU1OSwKKyAgICAweDg1NDgsIDB4ODU2OCwgMHg4NTY5LCAweDg1NDMsIDB4ODU0OSwgMHg4NTZELCAweDg1NkEsIDB4ODU1RSwKKyAgICAweDg3ODMsIDB4ODc5RiwgMHg4NzlFLCAweDg3QTIsIDB4ODc4RCwgMHg4ODYxLCAweDg5MkEsIDB4ODkzMiwKKyAgICAweDg5MjUsIDB4ODkyQiwgMHg4OTIxLCAweDg5QUEsIDB4ODlBNiwgMHg4QUU2LCAweDhBRkEsIDB4OEFFQiwKKyAgICAweDhBRjEsIDB4OEIwMCwgMHg4QURDLCAweDhBRTcsIDB4OEFFRSwgMHg4QUZFLCAweDhCMDEsIDB4OEIwMiwKKyAgICAweDhBRjcsIDB4OEFFRCwgMHg4QUYzLCAweDhBRjYsIDB4OEFGQywgMHg4QzZCLCAweDhDNkQsIDB4OEM5MywKKyAgICAweDhDRjQsIDB4OEU0NCwgMHg4RTMxLCAweDhFMzQsIDB4OEU0MiwgMHg4RTM5LCAweDhFMzUsIDB4OEYzQiwKKyAgICAweDhGMkYsIDB4OEYzOCwgMHg4RjMzLCAweDhGQTgsIDB4OEZBNiwgMHg5MDc1LCAweDkwNzQsIDB4OTA3OCwKKyAgICAweDkwNzIsIDB4OTA3QywgMHg5MDdBLCAweDkxMzQsIDB4OTE5MiwgMHg5MzIwLCAweDkzMzYsIDB4OTJGOCwKKyAgICAweDkzMzMsIDB4OTMyRiwgMHg5MzIyLCAweDkyRkMsIDB4OTMyQiwgMHg5MzA0LCAweDkzMUEsIDB4OTMxMCwKKyAgICAweDkzMjYsIDB4OTMyMSwgMHg5MzE1LCAweDkzMkUsIDB4OTMxOSwgMHg5NUJCLCAweDk2QTcsIDB4OTZBOCwKKyAgICAweDk2QUEsIDB4OTZENSwgMHg5NzBFLCAweDk3MTEsIDB4OTcxNiwgMHg5NzBELCAweDk3MTMsIDB4OTcwRiwKKyAgICAweDk3NUIsIDB4OTc1QywgMHg5NzY2LCAweDk3OTgsIDB4OTgzMCwgMHg5ODM4LCAweDk4M0IsIDB4OTgzNywKKyAgICAweDk4MkQsIDB4OTgzOSwgMHg5ODI0LCAweDk5MTAsIDB4OTkyOCwgMHg5OTFFLCAweDk5MUIsIDB4OTkyMSwKKyAgICAweDk5MUEsIDB4OTlFRCwgMHg5OUUyLCAweDk5RjEsIDB4OUFCOCwgMHg5QUJDLCAweDlBRkIsIDB4OUFFRCwKKyAgICAweDlCMjgsIDB4OUI5MSwgMHg5RDE1LCAweDlEMjMsIDB4OUQyNiwgMHg5RDI4LCAweDlEMTIsIDB4OUQxQiwKKyAgICAweDlFRDgsIDB4OUVENCwgMHg5RjhELCAweDlGOUMsIDB4NTEyQSwgMHg1MTFGLCAweDUxMjEsIDB4NTEzMiwKKyAgICAweDUyRjUsIDB4NTY4RSwgMHg1NjgwLCAweDU2OTAsIDB4NTY4NSwgMHg1Njg3LCAweDU2OEYsIDB4NThENSwKKyAgICAweDU4RDMsIDB4NThEMSwgMHg1OENFLCAweDVCMzAsIDB4NUIyQSwgMHg1QjI0LCAweDVCN0EsIDB4NUMzNywKKyAgICAweDVDNjgsIDB4NURCQywgMHg1REJBLCAweDVEQkQsIDB4NURCOCwgMHg1RTZCLCAweDVGNEMsIDB4NUZCRCwKKyAgICAweDYxQzksIDB4NjFDMiwgMHg2MUM3LCAweDYxRTYsIDB4NjFDQiwgMHg2MjMyLCAweDYyMzQsIDB4NjRDRSwKKyAgICAweDY0Q0EsIDB4NjREOCwgMHg2NEUwLCAweDY0RjAsIDB4NjRFNiwgMHg2NEVDLCAweDY0RjEsIDB4NjRFMiwKKyAgICAweDY0RUQsIDB4NjU4MiwgMHg2NTgzLCAweDY2RDksIDB4NjZENiwgMHg2QTgwLCAweDZBOTQsIDB4NkE4NCwKKyAgICAweDZBQTIsIDB4NkE5QywgMHg2QURCLCAweDZBQTMsIDB4NkE3RSwgMHg2QTk3LCAweDZBOTAsIDB4NkFBMCwKKyAgICAweDZCNUMsIDB4NkJBRSwgMHg2QkRBLCAweDZDMDgsIDB4NkZEOCwgMHg2RkYxLCAweDZGREYsIDB4NkZFMCwKKyAgICAweDZGREIsIDB4NkZFNCwgMHg2RkVCLCAweDZGRUYsIDB4NkY4MCwgMHg2RkVDLCAweDZGRTEsIDB4NkZFOSwKKyAgICAweDZGRDUsIDB4NkZFRSwgMHg2RkYwLCAweDcxRTcsIDB4NzFERiwgMHg3MUVFLCAweDcxRTYsIDB4NzFFNSwKKyAgICAweDcxRUQsIDB4NzFFQywgMHg3MUY0LCAweDcxRTAsIDB4NzIzNSwgMHg3MjQ2LCAweDczNzAsIDB4NzM3MiwKKyAgICAweDc0QTksIDB4NzRCMCwgMHg3NEE2LCAweDc0QTgsIDB4NzY0NiwgMHg3NjQyLCAweDc2NEMsIDB4NzZFQSwKKyAgICAweDc3QjMsIDB4NzdBQSwgMHg3N0IwLCAweDc3QUMsIDB4NzdBNywgMHg3N0FELCAweDc3RUYsIDB4NzhGNywKKyAgICAweDc4RkEsIDB4NzhGNCwgMHg3OEVGLCAweDc5MDEsIDB4NzlBNywgMHg3OUFBLCAweDdBNTcsIDB4N0FCRiwKKyAgICAweDdDMDcsIDB4N0MwRCwgMHg3QkZFLCAweDdCRjcsIDB4N0MwQywgMHg3QkUwLCAweDdDRTAsIDB4N0NEQywKKyAgICAweDdDREUsIDB4N0NFMiwgMHg3Q0RGLCAweDdDRDksIDB4N0NERCwgMHg3RTJFLCAweDdFM0UsIDB4N0U0NiwKKyAgICAweDdFMzcsIDB4N0UzMiwgMHg3RTQzLCAweDdFMkIsIDB4N0UzRCwgMHg3RTMxLCAweDdFNDUsIDB4N0U0MSwKKyAgICAweDdFMzQsIDB4N0UzOSwgMHg3RTQ4LCAweDdFMzUsIDB4N0UzRiwgMHg3RTJGLCAweDdGNDQsIDB4N0ZGMywKKyAgICAweDdGRkMsIDB4ODA3MSwgMHg4MDcyLCAweDgwNzAsIDB4ODA2RiwgMHg4MDczLCAweDgxQzYsIDB4ODFDMywKKyAgICAweDgxQkEsIDB4ODFDMiwgMHg4MUMwLCAweDgxQkYsIDB4ODFCRCwgMHg4MUM5LCAweDgxQkUsIDB4ODFFOCwKKyAgICAweDgyMDksIDB4ODI3MSwgMHg4NUFBLCAweDg1ODQsIDB4ODU3RSwgMHg4NTlDLCAweDg1OTEsIDB4ODU5NCwKKyAgICAweDg1QUYsIDB4ODU5QiwgMHg4NTg3LCAweDg1QTgsIDB4ODU4QSwgMHg4NUE2LCAweDg2NjcsIDB4ODdDMCwKKyAgICAweDg3RDEsIDB4ODdCMywgMHg4N0QyLCAweDg3QzYsIDB4ODdBQiwgMHg4N0JCLCAweDg3QkEsIDB4ODdDOCwKKyAgICAweDg3Q0IsIDB4ODkzQiwgMHg4OTM2LCAweDg5NDQsIDB4ODkzOCwgMHg4OTNELCAweDg5QUMsIDB4OEIwRSwKKyAgICAweDhCMTcsIDB4OEIxOSwgMHg4QjFCLCAweDhCMEEsIDB4OEIyMCwgMHg4QjFELCAweDhCMDQsIDB4OEIxMCwKKyAgICAweDhDNDEsIDB4OEMzRiwgMHg4QzczLCAweDhDRkEsIDB4OENGRCwgMHg4Q0ZDLCAweDhDRjgsIDB4OENGQiwKKyAgICAweDhEQTgsIDB4OEU0OSwgMHg4RTRCLCAweDhFNDgsIDB4OEU0QSwgMHg4RjQ0LCAweDhGM0UsIDB4OEY0MiwKKyAgICAweDhGNDUsIDB4OEYzRiwgMHg5MDdGLCAweDkwN0QsIDB4OTA4NCwgMHg5MDgxLCAweDkwODIsIDB4OTA4MCwKKyAgICAweDkxMzksIDB4OTFBMywgMHg5MTlFLCAweDkxOUMsIDB4OTM0RCwgMHg5MzgyLCAweDkzMjgsIDB4OTM3NSwKKyAgICAweDkzNEEsIDB4OTM2NSwgMHg5MzRCLCAweDkzMTgsIDB4OTM3RSwgMHg5MzZDLCAweDkzNUIsIDB4OTM3MCwKKyAgICAweDkzNUEsIDB4OTM1NCwgMHg5NUNBLCAweDk1Q0IsIDB4OTVDQywgMHg5NUM4LCAweDk1QzYsIDB4OTZCMSwKKyAgICAweDk2QjgsIDB4OTZENiwgMHg5NzFDLCAweDk3MUUsIDB4OTdBMCwgMHg5N0QzLCAweDk4NDYsIDB4OThCNiwKKyAgICAweDk5MzUsIDB4OUEwMSwgMHg5OUZGLCAweDlCQUUsIDB4OUJBQiwgMHg5QkFBLCAweDlCQUQsIDB4OUQzQiwKKyAgICAweDlEM0YsIDB4OUU4QiwgMHg5RUNGLCAweDlFREUsIDB4OUVEQywgMHg5RURELCAweDlFREIsIDB4OUYzRSwKKyAgICAweDlGNEIsIDB4NTNFMiwgMHg1Njk1LCAweDU2QUUsIDB4NThEOSwgMHg1OEQ4LCAweDVCMzgsIDB4NUY1RCwKKyAgICAweDYxRTMsIDB4NjIzMywgMHg2NEY0LCAweDY0RjIsIDB4NjRGRSwgMHg2NTA2LCAweDY0RkEsIDB4NjRGQiwKKyAgICAweDY0RjcsIDB4NjVCNywgMHg2NkRDLCAweDY3MjYsIDB4NkFCMywgMHg2QUFDLCAweDZBQzMsIDB4NkFCQiwKKyAgICAweDZBQjgsIDB4NkFDMiwgMHg2QUFFLCAweDZBQUYsIDB4NkI1RiwgMHg2Qjc4LCAweDZCQUYsIDB4NzAwOSwKKyAgICAweDcwMEIsIDB4NkZGRSwgMHg3MDA2LCAweDZGRkEsIDB4NzAxMSwgMHg3MDBGLCAweDcxRkIsIDB4NzFGQywKKyAgICAweDcxRkUsIDB4NzFGOCwgMHg3Mzc3LCAweDczNzUsIDB4NzRBNywgMHg3NEJGLCAweDc1MTUsIDB4NzY1NiwKKyAgICAweDc2NTgsIDB4NzY1MiwgMHg3N0JELCAweDc3QkYsIDB4NzdCQiwgMHg3N0JDLCAweDc5MEUsIDB4NzlBRSwKKyAgICAweDdBNjEsIDB4N0E2MiwgMHg3QTYwLCAweDdBQzQsIDB4N0FDNSwgMHg3QzJCLCAweDdDMjcsIDB4N0MyQSwKKyAgICAweDdDMUUsIDB4N0MyMywgMHg3QzIxLCAweDdDRTcsIDB4N0U1NCwgMHg3RTU1LCAweDdFNUUsIDB4N0U1QSwKKyAgICAweDdFNjEsIDB4N0U1MiwgMHg3RTU5LCAweDdGNDgsIDB4N0ZGOSwgMHg3RkZCLCAweDgwNzcsIDB4ODA3NiwKKyAgICAweDgxQ0QsIDB4ODFDRiwgMHg4MjBBLCAweDg1Q0YsIDB4ODVBOSwgMHg4NUNELCAweDg1RDAsIDB4ODVDOSwKKyAgICAweDg1QjAsIDB4ODVCQSwgMHg4NUI5LCAweDg3RUYsIDB4ODdFQywgMHg4N0YyLCAweDg3RTAsIDB4ODk4NiwKKyAgICAweDg5QjIsIDB4ODlGNCwgMHg4QjI4LCAweDhCMzksIDB4OEIyQywgMHg4QjJCLCAweDhDNTAsIDB4OEQwNSwKKyAgICAweDhFNTksIDB4OEU2MywgMHg4RTY2LCAweDhFNjQsIDB4OEU1RiwgMHg4RTU1LCAweDhFQzAsIDB4OEY0OSwKKyAgICAweDhGNEQsIDB4OTA4NywgMHg5MDgzLCAweDkwODgsIDB4OTFBQiwgMHg5MUFDLCAweDkxRDAsIDB4OTM5NCwKKyAgICAweDkzOEEsIDB4OTM5NiwgMHg5M0EyLCAweDkzQjMsIDB4OTNBRSwgMHg5M0FDLCAweDkzQjAsIDB4OTM5OCwKKyAgICAweDkzOUEsIDB4OTM5NywgMHg5NUQ0LCAweDk1RDYsIDB4OTVEMCwgMHg5NUQ1LCAweDk2RTIsIDB4OTZEQywKKyAgICAweDk2RDksIDB4OTZEQiwgMHg5NkRFLCAweDk3MjQsIDB4OTdBMywgMHg5N0E2LCAweDk3QUQsIDB4OTdGOSwKKyAgICAweDk4NEQsIDB4OTg0RiwgMHg5ODRDLCAweDk4NEUsIDB4OTg1MywgMHg5OEJBLCAweDk5M0UsIDB4OTkzRiwKKyAgICAweDk5M0QsIDB4OTkyRSwgMHg5OUE1LCAweDlBMEUsIDB4OUFDMSwgMHg5QjAzLCAweDlCMDYsIDB4OUI0RiwKKyAgICAweDlCNEUsIDB4OUI0RCwgMHg5QkNBLCAweDlCQzksIDB4OUJGRCwgMHg5QkM4LCAweDlCQzAsIDB4OUQ1MSwKKyAgICAweDlENUQsIDB4OUQ2MCwgMHg5RUUwLCAweDlGMTUsIDB4OUYyQywgMHg1MTMzLCAweDU2QTUsIDB4NTZBOCwKKyAgICAweDU4REUsIDB4NThERiwgMHg1OEUyLCAweDVCRjUsIDB4OUY5MCwgMHg1RUVDLCAweDYxRjIsIDB4NjFGNywKKyAgICAweDYxRjYsIDB4NjFGNSwgMHg2NTAwLCAweDY1MEYsIDB4NjZFMCwgMHg2NkRELCAweDZBRTUsIDB4NkFERCwKKyAgICAweDZBREEsIDB4NkFEMywgMHg3MDFCLCAweDcwMUYsIDB4NzAyOCwgMHg3MDFBLCAweDcwMUQsIDB4NzAxNSwKKyAgICAweDcwMTgsIDB4NzIwNiwgMHg3MjBELCAweDcyNTgsIDB4NzJBMiwgMHg3Mzc4LCAweDczN0EsIDB4NzRCRCwKKyAgICAweDc0Q0EsIDB4NzRFMywgMHg3NTg3LCAweDc1ODYsIDB4NzY1RiwgMHg3NjYxLCAweDc3QzcsIDB4NzkxOSwKKyAgICAweDc5QjEsIDB4N0E2QiwgMHg3QTY5LCAweDdDM0UsIDB4N0MzRiwgMHg3QzM4LCAweDdDM0QsIDB4N0MzNywKKyAgICAweDdDNDAsIDB4N0U2QiwgMHg3RTZELCAweDdFNzksIDB4N0U2OSwgMHg3RTZBLCAweDdFNzMsIDB4N0Y4NSwKKyAgICAweDdGQjYsIDB4N0ZCOSwgMHg3RkI4LCAweDgxRDgsIDB4ODVFOSwgMHg4NURELCAweDg1RUEsIDB4ODVENSwKKyAgICAweDg1RTQsIDB4ODVFNSwgMHg4NUY3LCAweDg3RkIsIDB4ODgwNSwgMHg4ODBELCAweDg3RjksIDB4ODdGRSwKKyAgICAweDg5NjAsIDB4ODk1RiwgMHg4OTU2LCAweDg5NUUsIDB4OEI0MSwgMHg4QjVDLCAweDhCNTgsIDB4OEI0OSwKKyAgICAweDhCNUEsIDB4OEI0RSwgMHg4QjRGLCAweDhCNDYsIDB4OEI1OSwgMHg4RDA4LCAweDhEMEEsIDB4OEU3QywKKyAgICAweDhFNzIsIDB4OEU4NywgMHg4RTc2LCAweDhFNkMsIDB4OEU3QSwgMHg4RTc0LCAweDhGNTQsIDB4OEY0RSwKKyAgICAweDhGQUQsIDB4OTA4QSwgMHg5MDhCLCAweDkxQjEsIDB4OTFBRSwgMHg5M0UxLCAweDkzRDEsIDB4OTNERiwKKyAgICAweDkzQzMsIDB4OTNDOCwgMHg5M0RDLCAweDkzREQsIDB4OTNENiwgMHg5M0UyLCAweDkzQ0QsIDB4OTNEOCwKKyAgICAweDkzRTQsIDB4OTNENywgMHg5M0U4LCAweDk1REMsIDB4OTZCNCwgMHg5NkUzLCAweDk3MkEsIDB4OTcyNywKKyAgICAweDk3NjEsIDB4OTdEQywgMHg5N0ZCLCAweDk4NUUsIDB4OTg1OCwgMHg5ODVCLCAweDk4QkMsIDB4OTk0NSwKKyAgICAweDk5NDksIDB4OUExNiwgMHg5QTE5LCAweDlCMEQsIDB4OUJFOCwgMHg5QkU3LCAweDlCRDYsIDB4OUJEQiwKKyAgICAweDlEODksIDB4OUQ2MSwgMHg5RDcyLCAweDlENkEsIDB4OUQ2QywgMHg5RTkyLCAweDlFOTcsIDB4OUU5MywKKyAgICAweDlFQjQsIDB4NTJGOCwgMHg1NkI3LCAweDU2QjYsIDB4NTZCNCwgMHg1NkJDLCAweDU4RTQsIDB4NUI0MCwKKyAgICAweDVCNDMsIDB4NUI3RCwgMHg1QkY2LCAweDVEQzksIDB4NjFGOCwgMHg2MUZBLCAweDY1MTgsIDB4NjUxNCwKKyAgICAweDY1MTksIDB4NjZFNiwgMHg2NzI3LCAweDZBRUMsIDB4NzAzRSwgMHg3MDMwLCAweDcwMzIsIDB4NzIxMCwKKyAgICAweDczN0IsIDB4NzRDRiwgMHg3NjYyLCAweDc2NjUsIDB4NzkyNiwgMHg3OTJBLCAweDc5MkMsIDB4NzkyQiwKKyAgICAweDdBQzcsIDB4N0FGNiwgMHg3QzRDLCAweDdDNDMsIDB4N0M0RCwgMHg3Q0VGLCAweDdDRjAsIDB4OEZBRSwKKyAgICAweDdFN0QsIDB4N0U3QywgMHg3RTgyLCAweDdGNEMsIDB4ODAwMCwgMHg4MURBLCAweDgyNjYsIDB4ODVGQiwKKyAgICAweDg1RjksIDB4ODYxMSwgMHg4NUZBLCAweDg2MDYsIDB4ODYwQiwgMHg4NjA3LCAweDg2MEEsIDB4ODgxNCwKKyAgICAweDg4MTUsIDB4ODk2NCwgMHg4OUJBLCAweDg5RjgsIDB4OEI3MCwgMHg4QjZDLCAweDhCNjYsIDB4OEI2RiwKKyAgICAweDhCNUYsIDB4OEI2QiwgMHg4RDBGLCAweDhEMEQsIDB4OEU4OSwgMHg4RTgxLCAweDhFODUsIDB4OEU4MiwKKyAgICAweDkxQjQsIDB4OTFDQiwgMHg5NDE4LCAweDk0MDMsIDB4OTNGRCwgMHg5NUUxLCAweDk3MzAsIDB4OThDNCwKKyAgICAweDk5NTIsIDB4OTk1MSwgMHg5OUE4LCAweDlBMkIsIDB4OUEzMCwgMHg5QTM3LCAweDlBMzUsIDB4OUMxMywKKyAgICAweDlDMEQsIDB4OUU3OSwgMHg5RUI1LCAweDlFRTgsIDB4OUYyRiwgMHg5RjVGLCAweDlGNjMsIDB4OUY2MSwKKyAgICAweDUxMzcsIDB4NTEzOCwgMHg1NkMxLCAweDU2QzAsIDB4NTZDMiwgMHg1OTE0LCAweDVDNkMsIDB4NURDRCwKKyAgICAweDYxRkMsIDB4NjFGRSwgMHg2NTFELCAweDY1MUMsIDB4NjU5NSwgMHg2NkU5LCAweDZBRkIsIDB4NkIwNCwKKyAgICAweDZBRkEsIDB4NkJCMiwgMHg3MDRDLCAweDcyMUIsIDB4NzJBNywgMHg3NEQ2LCAweDc0RDQsIDB4NzY2OSwKKyAgICAweDc3RDMsIDB4N0M1MCwgMHg3RThGLCAweDdFOEMsIDB4N0ZCQywgMHg4NjE3LCAweDg2MkQsIDB4ODYxQSwKKyAgICAweDg4MjMsIDB4ODgyMiwgMHg4ODIxLCAweDg4MUYsIDB4ODk2QSwgMHg4OTZDLCAweDg5QkQsIDB4OEI3NCwKKyAgICAweDhCNzcsIDB4OEI3RCwgMHg4RDEzLCAweDhFOEEsIDB4OEU4RCwgMHg4RThCLCAweDhGNUYsIDB4OEZBRiwKKyAgICAweDkxQkEsIDB4OTQyRSwgMHg5NDMzLCAweDk0MzUsIDB4OTQzQSwgMHg5NDM4LCAweDk0MzIsIDB4OTQyQiwKKyAgICAweDk1RTIsIDB4OTczOCwgMHg5NzM5LCAweDk3MzIsIDB4OTdGRiwgMHg5ODY3LCAweDk4NjUsIDB4OTk1NywKKyAgICAweDlBNDUsIDB4OUE0MywgMHg5QTQwLCAweDlBM0UsIDB4OUFDRiwgMHg5QjU0LCAweDlCNTEsIDB4OUMyRCwKKyAgICAweDlDMjUsIDB4OURBRiwgMHg5REI0LCAweDlEQzIsIDB4OURCOCwgMHg5RTlELCAweDlFRUYsIDB4OUYxOSwKKyAgICAweDlGNUMsIDB4OUY2NiwgMHg5RjY3LCAweDUxM0MsIDB4NTEzQiwgMHg1NkM4LCAweDU2Q0EsIDB4NTZDOSwKKyAgICAweDVCN0YsIDB4NURENCwgMHg1REQyLCAweDVGNEUsIDB4NjFGRiwgMHg2NTI0LCAweDZCMEEsIDB4NkI2MSwKKyAgICAweDcwNTEsIDB4NzA1OCwgMHg3MzgwLCAweDc0RTQsIDB4NzU4QSwgMHg3NjZFLCAweDc2NkMsIDB4NzlCMywKKyAgICAweDdDNjAsIDB4N0M1RiwgMHg4MDdFLCAweDgwN0QsIDB4ODFERiwgMHg4OTcyLCAweDg5NkYsIDB4ODlGQywKKyAgICAweDhCODAsIDB4OEQxNiwgMHg4RDE3LCAweDhFOTEsIDB4OEU5MywgMHg4RjYxLCAweDkxNDgsIDB4OTQ0NCwKKyAgICAweDk0NTEsIDB4OTQ1MiwgMHg5NzNELCAweDk3M0UsIDB4OTdDMywgMHg5N0MxLCAweDk4NkIsIDB4OTk1NSwKKyAgICAweDlBNTUsIDB4OUE0RCwgMHg5QUQyLCAweDlCMUEsIDB4OUM0OSwgMHg5QzMxLCAweDlDM0UsIDB4OUMzQiwKKyAgICAweDlERDMsIDB4OURENywgMHg5RjM0LCAweDlGNkMsIDB4OUY2QSwgMHg5Rjk0LCAweDU2Q0MsIDB4NURENiwKKyAgICAweDYyMDAsIDB4NjUyMywgMHg2NTJCLCAweDY1MkEsIDB4NjZFQywgMHg2QjEwLCAweDc0REEsIDB4N0FDQSwKKyAgICAweDdDNjQsIDB4N0M2MywgMHg3QzY1LCAweDdFOTMsIDB4N0U5NiwgMHg3RTk0LCAweDgxRTIsIDB4ODYzOCwKKyAgICAweDg2M0YsIDB4ODgzMSwgMHg4QjhBLCAweDkwOTAsIDB4OTA4RiwgMHg5NDYzLCAweDk0NjAsIDB4OTQ2NCwKKyAgICAweDk3NjgsIDB4OTg2RiwgMHg5OTVDLCAweDlBNUEsIDB4OUE1QiwgMHg5QTU3LCAweDlBRDMsIDB4OUFENCwKKyAgICAweDlBRDEsIDB4OUM1NCwgMHg5QzU3LCAweDlDNTYsIDB4OURFNSwgMHg5RTlGLCAweDlFRjQsIDB4NTZEMSwKKyAgICAweDU4RTksIDB4NjUyQywgMHg3MDVFLCAweDc2NzEsIDB4NzY3MiwgMHg3N0Q3LCAweDdGNTAsIDB4N0Y4OCwKKyAgICAweDg4MzYsIDB4ODgzOSwgMHg4ODYyLCAweDhCOTMsIDB4OEI5MiwgMHg4Qjk2LCAweDgyNzcsIDB4OEQxQiwKKyAgICAweDkxQzAsIDB4OTQ2QSwgMHg5NzQyLCAweDk3NDgsIDB4OTc0NCwgMHg5N0M2LCAweDk4NzAsIDB4OUE1RiwKKyAgICAweDlCMjIsIDB4OUI1OCwgMHg5QzVGLCAweDlERjksIDB4OURGQSwgMHg5RTdDLCAweDlFN0QsIDB4OUYwNywKKyAgICAweDlGNzcsIDB4OUY3MiwgMHg1RUYzLCAweDZCMTYsIDB4NzA2MywgMHg3QzZDLCAweDdDNkUsIDB4ODgzQiwKKyAgICAweDg5QzAsIDB4OEVBMSwgMHg5MUMxLCAweDk0NzIsIDB4OTQ3MCwgMHg5ODcxLCAweDk5NUUsIDB4OUFENiwKKyAgICAweDlCMjMsIDB4OUVDQywgMHg3MDY0LCAweDc3REEsIDB4OEI5QSwgMHg5NDc3LCAweDk3QzksIDB4OUE2MiwKKyAgICAweDlBNjUsIDB4N0U5QywgMHg4QjlDLCAweDhFQUEsIDB4OTFDNSwgMHg5NDdELCAweDk0N0UsIDB4OTQ3QywKKyAgICAweDlDNzcsIDB4OUM3OCwgMHg5RUY3LCAweDhDNTQsIDB4OTQ3RiwgMHg5RTFBLCAweDcyMjgsIDB4OUE2QSwKKyAgICAweDlCMzEsIDB4OUUxQiwgMHg5RTFFLCAweDdDNzIsIDB4NEU0MiwgMHg0RTVDLCAweDUxRjUsIDB4NTMxQSwKKyAgICAweDUzODIsIDB4NEUwNywgMHg0RTBDLCAweDRFNDcsIDB4NEU4RCwgMHg1NkQ3LCAweDVDNkUsIDB4NUY3MywKKyAgICAweDRFMEYsIDB4NTE4NywgMHg0RTBFLCAweDRFMkUsIDB4NEU5MywgMHg0RUMyLCAweDRFQzksIDB4NEVDOCwKKyAgICAweDUxOTgsIDB4NTJGQywgMHg1MzZDLCAweDUzQjksIDB4NTcyMCwgMHg1OTAzLCAweDU5MkMsIDB4NUMxMCwKKyAgICAweDVERkYsIDB4NjVFMSwgMHg2QkIzLCAweDZCQ0MsIDB4NkMxNCwgMHg3MjNGLCAweDRFMzEsIDB4NEUzQywKKyAgICAweDRFRTgsIDB4NEVEQywgMHg0RUU5LCAweDRFRTEsIDB4NEVERCwgMHg0RURBLCAweDUyMEMsIDB4NTIwOSwKKyAgICAweDUzMUMsIDB4NTM0QywgMHg1NzIyLCAweDU3MjMsIDB4NTkxNywgMHg1OTJGLCAweDVCODEsIDB4NUI4NCwKKyAgICAweDVDMTIsIDB4NUMzQiwgMHg1Qzc0LCAweDVDNzMsIDB4NUUwNCwgMHg1RTgwLCAweDVFODIsIDB4NUZDOSwKKyAgICAweDYyMDksIDB4NjI1MCwgMHg2QzE1LCAweDZDMzYsIDB4NkM0MywgMHg2QzNGLCAweDZDM0IsIDB4NzJBRSwKKyAgICAweDcyQjAsIDB4NzM4QSwgMHg3OUI4LCAweDgwOEEsIDB4OTYxRSwgMHg0RjBFLCAweDRGMTgsIDB4NEYyQywKKyAgICAweDRFRjUsIDB4NEYxNCwgMHg0RUYxLCAweDRGMDAsIDB4NEVGNywgMHg0RjA4LCAweDRGMUQsIDB4NEYwMiwKKyAgICAweDRGMDUsIDB4NEYyMiwgMHg0RjEzLCAweDRGMDQsIDB4NEVGNCwgMHg0RjEyLCAweDUxQjEsIDB4NTIxMywKKyAgICAweDUyMTAsIDB4NTJBNiwgMHg1MzIyLCAweDUzMUYsIDB4NTM0RCwgMHg1MzhBLCAweDU0MDcsIDB4NTZFMSwKKyAgICAweDU2REYsIDB4NTcyRSwgMHg1NzJBLCAweDU3MzQsIDB4NTkzQywgMHg1OTgwLCAweDU5N0MsIDB4NTk4NSwKKyAgICAweDU5N0IsIDB4NTk3RSwgMHg1OTc3LCAweDU5N0YsIDB4NUI1NiwgMHg1QzE1LCAweDVDMjUsIDB4NUM3QywKKyAgICAweDVDN0EsIDB4NUM3QiwgMHg1QzdFLCAweDVEREYsIDB4NUU3NSwgMHg1RTg0LCAweDVGMDIsIDB4NUYxQSwKKyAgICAweDVGNzQsIDB4NUZENSwgMHg1RkQ0LCAweDVGQ0YsIDB4NjI1QywgMHg2MjVFLCAweDYyNjQsIDB4NjI2MSwKKyAgICAweDYyNjYsIDB4NjI2MiwgMHg2MjU5LCAweDYyNjAsIDB4NjI1QSwgMHg2MjY1LCAweDY1MzcsIDB4NjVFRiwKKyAgICAweDY1RUUsIDB4NjczRSwgMHg2NzM5LCAweDY3MzgsIDB4NjczQiwgMHg2NzNBLCAweDY3M0YsIDB4NjczQywKKyAgICAweDY3MzMsIDB4NkMxOCwgMHg2QzQ2LCAweDZDNTIsIDB4NkM1QywgMHg2QzRGLCAweDZDNEEsIDB4NkM1NCwKKyAgICAweDZDNEIsIDB4NkM0QywgMHg3MDcxLCAweDcyNUUsIDB4NzJCNCwgMHg3MkI1LCAweDczOEUsIDB4NzUyQSwKKyAgICAweDc2N0YsIDB4N0E3NSwgMHg3RjUxLCAweDgyNzgsIDB4ODI3QywgMHg4MjgwLCAweDgyN0QsIDB4ODI3RiwKKyAgICAweDg2NEQsIDB4ODk3RSwgMHg5MDk5LCAweDkwOTcsIDB4OTA5OCwgMHg5MDlCLCAweDkwOTQsIDB4OTYyMiwKKyAgICAweDk2MjQsIDB4OTYyMCwgMHg5NjIzLCAweDRGNTYsIDB4NEYzQiwgMHg0RjYyLCAweDRGNDksIDB4NEY1MywKKyAgICAweDRGNjQsIDB4NEYzRSwgMHg0RjY3LCAweDRGNTIsIDB4NEY1RiwgMHg0RjQxLCAweDRGNTgsIDB4NEYyRCwKKyAgICAweDRGMzMsIDB4NEYzRiwgMHg0RjYxLCAweDUxOEYsIDB4NTFCOSwgMHg1MjFDLCAweDUyMUUsIDB4NTIyMSwKKyAgICAweDUyQUQsIDB4NTJBRSwgMHg1MzA5LCAweDUzNjMsIDB4NTM3MiwgMHg1MzhFLCAweDUzOEYsIDB4NTQzMCwKKyAgICAweDU0MzcsIDB4NTQyQSwgMHg1NDU0LCAweDU0NDUsIDB4NTQxOSwgMHg1NDFDLCAweDU0MjUsIDB4NTQxOCwKKyAgICAweDU0M0QsIDB4NTQ0RiwgMHg1NDQxLCAweDU0MjgsIDB4NTQyNCwgMHg1NDQ3LCAweDU2RUUsIDB4NTZFNywKKyAgICAweDU2RTUsIDB4NTc0MSwgMHg1NzQ1LCAweDU3NEMsIDB4NTc0OSwgMHg1NzRCLCAweDU3NTIsIDB4NTkwNiwKKyAgICAweDU5NDAsIDB4NTlBNiwgMHg1OTk4LCAweDU5QTAsIDB4NTk5NywgMHg1OThFLCAweDU5QTIsIDB4NTk5MCwKKyAgICAweDU5OEYsIDB4NTlBNywgMHg1OUExLCAweDVCOEUsIDB4NUI5MiwgMHg1QzI4LCAweDVDMkEsIDB4NUM4RCwKKyAgICAweDVDOEYsIDB4NUM4OCwgMHg1QzhCLCAweDVDODksIDB4NUM5MiwgMHg1QzhBLCAweDVDODYsIDB4NUM5MywKKyAgICAweDVDOTUsIDB4NURFMCwgMHg1RTBBLCAweDVFMEUsIDB4NUU4QiwgMHg1RTg5LCAweDVFOEMsIDB4NUU4OCwKKyAgICAweDVFOEQsIDB4NUYwNSwgMHg1RjFELCAweDVGNzgsIDB4NUY3NiwgMHg1RkQyLCAweDVGRDEsIDB4NUZEMCwKKyAgICAweDVGRUQsIDB4NUZFOCwgMHg1RkVFLCAweDVGRjMsIDB4NUZFMSwgMHg1RkU0LCAweDVGRTMsIDB4NUZGQSwKKyAgICAweDVGRUYsIDB4NUZGNywgMHg1RkZCLCAweDYwMDAsIDB4NUZGNCwgMHg2MjNBLCAweDYyODMsIDB4NjI4QywKKyAgICAweDYyOEUsIDB4NjI4RiwgMHg2Mjk0LCAweDYyODcsIDB4NjI3MSwgMHg2MjdCLCAweDYyN0EsIDB4NjI3MCwKKyAgICAweDYyODEsIDB4NjI4OCwgMHg2Mjc3LCAweDYyN0QsIDB4NjI3MiwgMHg2Mjc0LCAweDY1RjAsIDB4NjVGNCwKKyAgICAweDY1RjMsIDB4NjVGMiwgMHg2NUY1LCAweDY3NDUsIDB4Njc0NywgMHg2NzU5LCAweDY3NTUsIDB4Njc0QywKKyAgICAweDY3NDgsIDB4Njc1RCwgMHg2NzRELCAweDY3NUEsIDB4Njc0QiwgMHg2QkQwLCAweDZDMTksIDB4NkMxQSwKKyAgICAweDZDNzgsIDB4NkM2NywgMHg2QzZCLCAweDZDODQsIDB4NkM4QiwgMHg2QzhGLCAweDZDNzEsIDB4NkM2RiwKKyAgICAweDZDNjksIDB4NkM5QSwgMHg2QzZELCAweDZDODcsIDB4NkM5NSwgMHg2QzlDLCAweDZDNjYsIDB4NkM3MywKKyAgICAweDZDNjUsIDB4NkM3QiwgMHg2QzhFLCAweDcwNzQsIDB4NzA3QSwgMHg3MjYzLCAweDcyQkYsIDB4NzJCRCwKKyAgICAweDcyQzMsIDB4NzJDNiwgMHg3MkMxLCAweDcyQkEsIDB4NzJDNSwgMHg3Mzk1LCAweDczOTcsIDB4NzM5MywKKyAgICAweDczOTQsIDB4NzM5MiwgMHg3NTNBLCAweDc1MzksIDB4NzU5NCwgMHg3NTk1LCAweDc2ODEsIDB4NzkzRCwKKyAgICAweDgwMzQsIDB4ODA5NSwgMHg4MDk5LCAweDgwOTAsIDB4ODA5MiwgMHg4MDlDLCAweDgyOTAsIDB4ODI4RiwKKyAgICAweDgyODUsIDB4ODI4RSwgMHg4MjkxLCAweDgyOTMsIDB4ODI4QSwgMHg4MjgzLCAweDgyODQsIDB4OEM3OCwKKyAgICAweDhGQzksIDB4OEZCRiwgMHg5MDlGLCAweDkwQTEsIDB4OTBBNSwgMHg5MDlFLCAweDkwQTcsIDB4OTBBMCwKKyAgICAweDk2MzAsIDB4OTYyOCwgMHg5NjJGLCAweDk2MkQsIDB4NEUzMywgMHg0Rjk4LCAweDRGN0MsIDB4NEY4NSwKKyAgICAweDRGN0QsIDB4NEY4MCwgMHg0Rjg3LCAweDRGNzYsIDB4NEY3NCwgMHg0Rjg5LCAweDRGODQsIDB4NEY3NywKKyAgICAweDRGNEMsIDB4NEY5NywgMHg0RjZBLCAweDRGOUEsIDB4NEY3OSwgMHg0RjgxLCAweDRGNzgsIDB4NEY5MCwKKyAgICAweDRGOUMsIDB4NEY5NCwgMHg0RjlFLCAweDRGOTIsIDB4NEY4MiwgMHg0Rjk1LCAweDRGNkIsIDB4NEY2RSwKKyAgICAweDUxOUUsIDB4NTFCQywgMHg1MUJFLCAweDUyMzUsIDB4NTIzMiwgMHg1MjMzLCAweDUyNDYsIDB4NTIzMSwKKyAgICAweDUyQkMsIDB4NTMwQSwgMHg1MzBCLCAweDUzM0MsIDB4NTM5MiwgMHg1Mzk0LCAweDU0ODcsIDB4NTQ3RiwKKyAgICAweDU0ODEsIDB4NTQ5MSwgMHg1NDgyLCAweDU0ODgsIDB4NTQ2QiwgMHg1NDdBLCAweDU0N0UsIDB4NTQ2NSwKKyAgICAweDU0NkMsIDB4NTQ3NCwgMHg1NDY2LCAweDU0OEQsIDB4NTQ2RiwgMHg1NDYxLCAweDU0NjAsIDB4NTQ5OCwKKyAgICAweDU0NjMsIDB4NTQ2NywgMHg1NDY0LCAweDU2RjcsIDB4NTZGOSwgMHg1NzZGLCAweDU3NzIsIDB4NTc2RCwKKyAgICAweDU3NkIsIDB4NTc3MSwgMHg1NzcwLCAweDU3NzYsIDB4NTc4MCwgMHg1Nzc1LCAweDU3N0IsIDB4NTc3MywKKyAgICAweDU3NzQsIDB4NTc2MiwgMHg1NzY4LCAweDU3N0QsIDB4NTkwQywgMHg1OTQ1LCAweDU5QjUsIDB4NTlCQSwKKyAgICAweDU5Q0YsIDB4NTlDRSwgMHg1OUIyLCAweDU5Q0MsIDB4NTlDMSwgMHg1OUI2LCAweDU5QkMsIDB4NTlDMywKKyAgICAweDU5RDYsIDB4NTlCMSwgMHg1OUJELCAweDU5QzAsIDB4NTlDOCwgMHg1OUI0LCAweDU5QzcsIDB4NUI2MiwKKyAgICAweDVCNjUsIDB4NUI5MywgMHg1Qjk1LCAweDVDNDQsIDB4NUM0NywgMHg1Q0FFLCAweDVDQTQsIDB4NUNBMCwKKyAgICAweDVDQjUsIDB4NUNBRiwgMHg1Q0E4LCAweDVDQUMsIDB4NUM5RiwgMHg1Q0EzLCAweDVDQUQsIDB4NUNBMiwKKyAgICAweDVDQUEsIDB4NUNBNywgMHg1QzlELCAweDVDQTUsIDB4NUNCNiwgMHg1Q0IwLCAweDVDQTYsIDB4NUUxNywKKyAgICAweDVFMTQsIDB4NUUxOSwgMHg1RjI4LCAweDVGMjIsIDB4NUYyMywgMHg1RjI0LCAweDVGNTQsIDB4NUY4MiwKKyAgICAweDVGN0UsIDB4NUY3RCwgMHg1RkRFLCAweDVGRTUsIDB4NjAyRCwgMHg2MDI2LCAweDYwMTksIDB4NjAzMiwKKyAgICAweDYwMEIsIDB4NjAzNCwgMHg2MDBBLCAweDYwMTcsIDB4NjAzMywgMHg2MDFBLCAweDYwMUUsIDB4NjAyQywKKyAgICAweDYwMjIsIDB4NjAwRCwgMHg2MDEwLCAweDYwMkUsIDB4NjAxMywgMHg2MDExLCAweDYwMEMsIDB4NjAwOSwKKyAgICAweDYwMUMsIDB4NjIxNCwgMHg2MjNELCAweDYyQUQsIDB4NjJCNCwgMHg2MkQxLCAweDYyQkUsIDB4NjJBQSwKKyAgICAweDYyQjYsIDB4NjJDQSwgMHg2MkFFLCAweDYyQjMsIDB4NjJBRiwgMHg2MkJCLCAweDYyQTksIDB4NjJCMCwKKyAgICAweDYyQjgsIDB4NjUzRCwgMHg2NUE4LCAweDY1QkIsIDB4NjYwOSwgMHg2NUZDLCAweDY2MDQsIDB4NjYxMiwKKyAgICAweDY2MDgsIDB4NjVGQiwgMHg2NjAzLCAweDY2MEIsIDB4NjYwRCwgMHg2NjA1LCAweDY1RkQsIDB4NjYxMSwKKyAgICAweDY2MTAsIDB4NjZGNiwgMHg2NzBBLCAweDY3ODUsIDB4Njc2QywgMHg2NzhFLCAweDY3OTIsIDB4Njc3NiwKKyAgICAweDY3N0IsIDB4Njc5OCwgMHg2Nzg2LCAweDY3ODQsIDB4Njc3NCwgMHg2NzhELCAweDY3OEMsIDB4Njc3QSwKKyAgICAweDY3OUYsIDB4Njc5MSwgMHg2Nzk5LCAweDY3ODMsIDB4Njc3RCwgMHg2NzgxLCAweDY3NzgsIDB4Njc3OSwKKyAgICAweDY3OTQsIDB4NkIyNSwgMHg2QjgwLCAweDZCN0UsIDB4NkJERSwgMHg2QzFELCAweDZDOTMsIDB4NkNFQywKKyAgICAweDZDRUIsIDB4NkNFRSwgMHg2Q0Q5LCAweDZDQjYsIDB4NkNENCwgMHg2Q0FELCAweDZDRTcsIDB4NkNCNywKKyAgICAweDZDRDAsIDB4NkNDMiwgMHg2Q0JBLCAweDZDQzMsIDB4NkNDNiwgMHg2Q0VELCAweDZDRjIsIDB4NkNEMiwKKyAgICAweDZDREQsIDB4NkNCNCwgMHg2QzhBLCAweDZDOUQsIDB4NkM4MCwgMHg2Q0RFLCAweDZDQzAsIDB4NkQzMCwKKyAgICAweDZDQ0QsIDB4NkNDNywgMHg2Q0IwLCAweDZDRjksIDB4NkNDRiwgMHg2Q0U5LCAweDZDRDEsIDB4NzA5NCwKKyAgICAweDcwOTgsIDB4NzA4NSwgMHg3MDkzLCAweDcwODYsIDB4NzA4NCwgMHg3MDkxLCAweDcwOTYsIDB4NzA4MiwKKyAgICAweDcwOUEsIDB4NzA4MywgMHg3MjZBLCAweDcyRDYsIDB4NzJDQiwgMHg3MkQ4LCAweDcyQzksIDB4NzJEQywKKyAgICAweDcyRDIsIDB4NzJENCwgMHg3MkRBLCAweDcyQ0MsIDB4NzJEMSwgMHg3M0E0LCAweDczQTEsIDB4NzNBRCwKKyAgICAweDczQTYsIDB4NzNBMiwgMHg3M0EwLCAweDczQUMsIDB4NzM5RCwgMHg3NERELCAweDc0RTgsIDB4NzUzRiwKKyAgICAweDc1NDAsIDB4NzUzRSwgMHg3NThDLCAweDc1OTgsIDB4NzZBRiwgMHg3NkYzLCAweDc2RjEsIDB4NzZGMCwKKyAgICAweDc2RjUsIDB4NzdGOCwgMHg3N0ZDLCAweDc3RjksIDB4NzdGQiwgMHg3N0ZBLCAweDc3RjcsIDB4Nzk0MiwKKyAgICAweDc5M0YsIDB4NzlDNSwgMHg3QTc4LCAweDdBN0IsIDB4N0FGQiwgMHg3Qzc1LCAweDdDRkQsIDB4ODAzNSwKKyAgICAweDgwOEYsIDB4ODBBRSwgMHg4MEEzLCAweDgwQjgsIDB4ODBCNSwgMHg4MEFELCAweDgyMjAsIDB4ODJBMCwKKyAgICAweDgyQzAsIDB4ODJBQiwgMHg4MjlBLCAweDgyOTgsIDB4ODI5QiwgMHg4MkI1LCAweDgyQTcsIDB4ODJBRSwKKyAgICAweDgyQkMsIDB4ODI5RSwgMHg4MkJBLCAweDgyQjQsIDB4ODJBOCwgMHg4MkExLCAweDgyQTksIDB4ODJDMiwKKyAgICAweDgyQTQsIDB4ODJDMywgMHg4MkI2LCAweDgyQTIsIDB4ODY3MCwgMHg4NjZGLCAweDg2NkQsIDB4ODY2RSwKKyAgICAweDhDNTYsIDB4OEZEMiwgMHg4RkNCLCAweDhGRDMsIDB4OEZDRCwgMHg4RkQ2LCAweDhGRDUsIDB4OEZENywKKyAgICAweDkwQjIsIDB4OTBCNCwgMHg5MEFGLCAweDkwQjMsIDB4OTBCMCwgMHg5NjM5LCAweDk2M0QsIDB4OTYzQywKKyAgICAweDk2M0EsIDB4OTY0MywgMHg0RkNELCAweDRGQzUsIDB4NEZEMywgMHg0RkIyLCAweDRGQzksIDB4NEZDQiwKKyAgICAweDRGQzEsIDB4NEZENCwgMHg0RkRDLCAweDRGRDksIDB4NEZCQiwgMHg0RkIzLCAweDRGREIsIDB4NEZDNywKKyAgICAweDRGRDYsIDB4NEZCQSwgMHg0RkMwLCAweDRGQjksIDB4NEZFQywgMHg1MjQ0LCAweDUyNDksIDB4NTJDMCwKKyAgICAweDUyQzIsIDB4NTMzRCwgMHg1MzdDLCAweDUzOTcsIDB4NTM5NiwgMHg1Mzk5LCAweDUzOTgsIDB4NTRCQSwKKyAgICAweDU0QTEsIDB4NTRBRCwgMHg1NEE1LCAweDU0Q0YsIDB4NTRDMywgMHg4MzBELCAweDU0QjcsIDB4NTRBRSwKKyAgICAweDU0RDYsIDB4NTRCNiwgMHg1NEM1LCAweDU0QzYsIDB4NTRBMCwgMHg1NDcwLCAweDU0QkMsIDB4NTRBMiwKKyAgICAweDU0QkUsIDB4NTQ3MiwgMHg1NERFLCAweDU0QjAsIDB4NTdCNSwgMHg1NzlFLCAweDU3OUYsIDB4NTdBNCwKKyAgICAweDU3OEMsIDB4NTc5NywgMHg1NzlELCAweDU3OUIsIDB4NTc5NCwgMHg1Nzk4LCAweDU3OEYsIDB4NTc5OSwKKyAgICAweDU3QTUsIDB4NTc5QSwgMHg1Nzk1LCAweDU4RjQsIDB4NTkwRCwgMHg1OTUzLCAweDU5RTEsIDB4NTlERSwKKyAgICAweDU5RUUsIDB4NUEwMCwgMHg1OUYxLCAweDU5REQsIDB4NTlGQSwgMHg1OUZELCAweDU5RkMsIDB4NTlGNiwKKyAgICAweDU5RTQsIDB4NTlGMiwgMHg1OUY3LCAweDU5REIsIDB4NTlFOSwgMHg1OUYzLCAweDU5RjUsIDB4NTlFMCwKKyAgICAweDU5RkUsIDB4NTlGNCwgMHg1OUVELCAweDVCQTgsIDB4NUM0QywgMHg1Q0QwLCAweDVDRDgsIDB4NUNDQywKKyAgICAweDVDRDcsIDB4NUNDQiwgMHg1Q0RCLCAweDVDREUsIDB4NUNEQSwgMHg1Q0M5LCAweDVDQzcsIDB4NUNDQSwKKyAgICAweDVDRDYsIDB4NUNEMywgMHg1Q0Q0LCAweDVDQ0YsIDB4NUNDOCwgMHg1Q0M2LCAweDVDQ0UsIDB4NUNERiwKKyAgICAweDVDRjgsIDB4NURGOSwgMHg1RTIxLCAweDVFMjIsIDB4NUUyMywgMHg1RTIwLCAweDVFMjQsIDB4NUVCMCwKKyAgICAweDVFQTQsIDB4NUVBMiwgMHg1RTlCLCAweDVFQTMsIDB4NUVBNSwgMHg1RjA3LCAweDVGMkUsIDB4NUY1NiwKKyAgICAweDVGODYsIDB4NjAzNywgMHg2MDM5LCAweDYwNTQsIDB4NjA3MiwgMHg2MDVFLCAweDYwNDUsIDB4NjA1MywKKyAgICAweDYwNDcsIDB4NjA0OSwgMHg2MDVCLCAweDYwNEMsIDB4NjA0MCwgMHg2MDQyLCAweDYwNUYsIDB4NjAyNCwKKyAgICAweDYwNDQsIDB4NjA1OCwgMHg2MDY2LCAweDYwNkUsIDB4NjI0MiwgMHg2MjQzLCAweDYyQ0YsIDB4NjMwRCwKKyAgICAweDYzMEIsIDB4NjJGNSwgMHg2MzBFLCAweDYzMDMsIDB4NjJFQiwgMHg2MkY5LCAweDYzMEYsIDB4NjMwQywKKyAgICAweDYyRjgsIDB4NjJGNiwgMHg2MzAwLCAweDYzMTMsIDB4NjMxNCwgMHg2MkZBLCAweDYzMTUsIDB4NjJGQiwKKyAgICAweDYyRjAsIDB4NjU0MSwgMHg2NTQzLCAweDY1QUEsIDB4NjVCRiwgMHg2NjM2LCAweDY2MjEsIDB4NjYzMiwKKyAgICAweDY2MzUsIDB4NjYxQywgMHg2NjI2LCAweDY2MjIsIDB4NjYzMywgMHg2NjJCLCAweDY2M0EsIDB4NjYxRCwKKyAgICAweDY2MzQsIDB4NjYzOSwgMHg2NjJFLCAweDY3MEYsIDB4NjcxMCwgMHg2N0MxLCAweDY3RjIsIDB4NjdDOCwKKyAgICAweDY3QkEsIDB4NjdEQywgMHg2N0JCLCAweDY3RjgsIDB4NjdEOCwgMHg2N0MwLCAweDY3QjcsIDB4NjdDNSwKKyAgICAweDY3RUIsIDB4NjdFNCwgMHg2N0RGLCAweDY3QjUsIDB4NjdDRCwgMHg2N0IzLCAweDY3RjcsIDB4NjdGNiwKKyAgICAweDY3RUUsIDB4NjdFMywgMHg2N0MyLCAweDY3QjksIDB4NjdDRSwgMHg2N0U3LCAweDY3RjAsIDB4NjdCMiwKKyAgICAweDY3RkMsIDB4NjdDNiwgMHg2N0VELCAweDY3Q0MsIDB4NjdBRSwgMHg2N0U2LCAweDY3REIsIDB4NjdGQSwKKyAgICAweDY3QzksIDB4NjdDQSwgMHg2N0MzLCAweDY3RUEsIDB4NjdDQiwgMHg2QjI4LCAweDZCODIsIDB4NkI4NCwKKyAgICAweDZCQjYsIDB4NkJENiwgMHg2QkQ4LCAweDZCRTAsIDB4NkMyMCwgMHg2QzIxLCAweDZEMjgsIDB4NkQzNCwKKyAgICAweDZEMkQsIDB4NkQxRiwgMHg2RDNDLCAweDZEM0YsIDB4NkQxMiwgMHg2RDBBLCAweDZDREEsIDB4NkQzMywKKyAgICAweDZEMDQsIDB4NkQxOSwgMHg2RDNBLCAweDZEMUEsIDB4NkQxMSwgMHg2RDAwLCAweDZEMUQsIDB4NkQ0MiwKKyAgICAweDZEMDEsIDB4NkQxOCwgMHg2RDM3LCAweDZEMDMsIDB4NkQwRiwgMHg2RDQwLCAweDZEMDcsIDB4NkQyMCwKKyAgICAweDZEMkMsIDB4NkQwOCwgMHg2RDIyLCAweDZEMDksIDB4NkQxMCwgMHg3MEI3LCAweDcwOUYsIDB4NzBCRSwKKyAgICAweDcwQjEsIDB4NzBCMCwgMHg3MEExLCAweDcwQjQsIDB4NzBCNSwgMHg3MEE5LCAweDcyNDEsIDB4NzI0OSwKKyAgICAweDcyNEEsIDB4NzI2QywgMHg3MjcwLCAweDcyNzMsIDB4NzI2RSwgMHg3MkNBLCAweDcyRTQsIDB4NzJFOCwKKyAgICAweDcyRUIsIDB4NzJERiwgMHg3MkVBLCAweDcyRTYsIDB4NzJFMywgMHg3Mzg1LCAweDczQ0MsIDB4NzNDMiwKKyAgICAweDczQzgsIDB4NzNDNSwgMHg3M0I5LCAweDczQjYsIDB4NzNCNSwgMHg3M0I0LCAweDczRUIsIDB4NzNCRiwKKyAgICAweDczQzcsIDB4NzNCRSwgMHg3M0MzLCAweDczQzYsIDB4NzNCOCwgMHg3M0NCLCAweDc0RUMsIDB4NzRFRSwKKyAgICAweDc1MkUsIDB4NzU0NywgMHg3NTQ4LCAweDc1QTcsIDB4NzVBQSwgMHg3Njc5LCAweDc2QzQsIDB4NzcwOCwKKyAgICAweDc3MDMsIDB4NzcwNCwgMHg3NzA1LCAweDc3MEEsIDB4NzZGNywgMHg3NkZCLCAweDc2RkEsIDB4NzdFNywKKyAgICAweDc3RTgsIDB4NzgwNiwgMHg3ODExLCAweDc4MTIsIDB4NzgwNSwgMHg3ODEwLCAweDc4MEYsIDB4NzgwRSwKKyAgICAweDc4MDksIDB4NzgwMywgMHg3ODEzLCAweDc5NEEsIDB4Nzk0QywgMHg3OTRCLCAweDc5NDUsIDB4Nzk0NCwKKyAgICAweDc5RDUsIDB4NzlDRCwgMHg3OUNGLCAweDc5RDYsIDB4NzlDRSwgMHg3QTgwLCAweDdBN0UsIDB4N0FEMSwKKyAgICAweDdCMDAsIDB4N0IwMSwgMHg3QzdBLCAweDdDNzgsIDB4N0M3OSwgMHg3QzdGLCAweDdDODAsIDB4N0M4MSwKKyAgICAweDdEMDMsIDB4N0QwOCwgMHg3RDAxLCAweDdGNTgsIDB4N0Y5MSwgMHg3RjhELCAweDdGQkUsIDB4ODAwNywKKyAgICAweDgwMEUsIDB4ODAwRiwgMHg4MDE0LCAweDgwMzcsIDB4ODBEOCwgMHg4MEM3LCAweDgwRTAsIDB4ODBEMSwKKyAgICAweDgwQzgsIDB4ODBDMiwgMHg4MEQwLCAweDgwQzUsIDB4ODBFMywgMHg4MEQ5LCAweDgwREMsIDB4ODBDQSwKKyAgICAweDgwRDUsIDB4ODBDOSwgMHg4MENGLCAweDgwRDcsIDB4ODBFNiwgMHg4MENELCAweDgxRkYsIDB4ODIyMSwKKyAgICAweDgyOTQsIDB4ODJEOSwgMHg4MkZFLCAweDgyRjksIDB4ODMwNywgMHg4MkU4LCAweDgzMDAsIDB4ODJENSwKKyAgICAweDgzM0EsIDB4ODJFQiwgMHg4MkQ2LCAweDgyRjQsIDB4ODJFQywgMHg4MkUxLCAweDgyRjIsIDB4ODJGNSwKKyAgICAweDgzMEMsIDB4ODJGQiwgMHg4MkY2LCAweDgyRjAsIDB4ODJFQSwgMHg4MkU0LCAweDgyRTAsIDB4ODJGQSwKKyAgICAweDgyRjMsIDB4ODJFRCwgMHg4Njc3LCAweDg2NzQsIDB4ODY3QywgMHg4NjczLCAweDg4NDEsIDB4ODg0RSwKKyAgICAweDg4NjcsIDB4ODg2QSwgMHg4ODY5LCAweDg5RDMsIDB4OEEwNCwgMHg4QTA3LCAweDhENzIsIDB4OEZFMywKKyAgICAweDhGRTEsIDB4OEZFRSwgMHg4RkUwLCAweDkwRjEsIDB4OTBCRCwgMHg5MEJGLCAweDkwRDUsIDB4OTBDNSwKKyAgICAweDkwQkUsIDB4OTBDNywgMHg5MENCLCAweDkwQzgsIDB4OTFENCwgMHg5MUQzLCAweDk2NTQsIDB4OTY0RiwKKyAgICAweDk2NTEsIDB4OTY1MywgMHg5NjRBLCAweDk2NEUsIDB4NTAxRSwgMHg1MDA1LCAweDUwMDcsIDB4NTAxMywKKyAgICAweDUwMjIsIDB4NTAzMCwgMHg1MDFCLCAweDRGRjUsIDB4NEZGNCwgMHg1MDMzLCAweDUwMzcsIDB4NTAyQywKKyAgICAweDRGRjYsIDB4NEZGNywgMHg1MDE3LCAweDUwMUMsIDB4NTAyMCwgMHg1MDI3LCAweDUwMzUsIDB4NTAyRiwKKyAgICAweDUwMzEsIDB4NTAwRSwgMHg1MTVBLCAweDUxOTQsIDB4NTE5MywgMHg1MUNBLCAweDUxQzQsIDB4NTFDNSwKKyAgICAweDUxQzgsIDB4NTFDRSwgMHg1MjYxLCAweDUyNUEsIDB4NTI1MiwgMHg1MjVFLCAweDUyNUYsIDB4NTI1NSwKKyAgICAweDUyNjIsIDB4NTJDRCwgMHg1MzBFLCAweDUzOUUsIDB4NTUyNiwgMHg1NEUyLCAweDU1MTcsIDB4NTUxMiwKKyAgICAweDU0RTcsIDB4NTRGMywgMHg1NEU0LCAweDU1MUEsIDB4NTRGRiwgMHg1NTA0LCAweDU1MDgsIDB4NTRFQiwKKyAgICAweDU1MTEsIDB4NTUwNSwgMHg1NEYxLCAweDU1MEEsIDB4NTRGQiwgMHg1NEY3LCAweDU0RjgsIDB4NTRFMCwKKyAgICAweDU1MEUsIDB4NTUwMywgMHg1NTBCLCAweDU3MDEsIDB4NTcwMiwgMHg1N0NDLCAweDU4MzIsIDB4NTdENSwKKyAgICAweDU3RDIsIDB4NTdCQSwgMHg1N0M2LCAweDU3QkQsIDB4NTdCQywgMHg1N0I4LCAweDU3QjYsIDB4NTdCRiwKKyAgICAweDU3QzcsIDB4NTdEMCwgMHg1N0I5LCAweDU3QzEsIDB4NTkwRSwgMHg1OTRBLCAweDVBMTksIDB4NUExNiwKKyAgICAweDVBMkQsIDB4NUEyRSwgMHg1QTE1LCAweDVBMEYsIDB4NUExNywgMHg1QTBBLCAweDVBMUUsIDB4NUEzMywKKyAgICAweDVCNkMsIDB4NUJBNywgMHg1QkFELCAweDVCQUMsIDB4NUMwMywgMHg1QzU2LCAweDVDNTQsIDB4NUNFQywKKyAgICAweDVDRkYsIDB4NUNFRSwgMHg1Q0YxLCAweDVDRjcsIDB4NUQwMCwgMHg1Q0Y5LCAweDVFMjksIDB4NUUyOCwKKyAgICAweDVFQTgsIDB4NUVBRSwgMHg1RUFBLCAweDVFQUMsIDB4NUYzMywgMHg1RjMwLCAweDVGNjcsIDB4NjA1RCwKKyAgICAweDYwNUEsIDB4NjA2NywgMHg2MDQxLCAweDYwQTIsIDB4NjA4OCwgMHg2MDgwLCAweDYwOTIsIDB4NjA4MSwKKyAgICAweDYwOUQsIDB4NjA4MywgMHg2MDk1LCAweDYwOUIsIDB4NjA5NywgMHg2MDg3LCAweDYwOUMsIDB4NjA4RSwKKyAgICAweDYyMTksIDB4NjI0NiwgMHg2MkYyLCAweDYzMTAsIDB4NjM1NiwgMHg2MzJDLCAweDYzNDQsIDB4NjM0NSwKKyAgICAweDYzMzYsIDB4NjM0MywgMHg2M0U0LCAweDYzMzksIDB4NjM0QiwgMHg2MzRBLCAweDYzM0MsIDB4NjMyOSwKKyAgICAweDYzNDEsIDB4NjMzNCwgMHg2MzU4LCAweDYzNTQsIDB4NjM1OSwgMHg2MzJELCAweDYzNDcsIDB4NjMzMywKKyAgICAweDYzNUEsIDB4NjM1MSwgMHg2MzM4LCAweDYzNTcsIDB4NjM0MCwgMHg2MzQ4LCAweDY1NEEsIDB4NjU0NiwKKyAgICAweDY1QzYsIDB4NjVDMywgMHg2NUM0LCAweDY1QzIsIDB4NjY0QSwgMHg2NjVGLCAweDY2NDcsIDB4NjY1MSwKKyAgICAweDY3MTIsIDB4NjcxMywgMHg2ODFGLCAweDY4MUEsIDB4Njg0OSwgMHg2ODMyLCAweDY4MzMsIDB4NjgzQiwKKyAgICAweDY4NEIsIDB4Njg0RiwgMHg2ODE2LCAweDY4MzEsIDB4NjgxQywgMHg2ODM1LCAweDY4MkIsIDB4NjgyRCwKKyAgICAweDY4MkYsIDB4Njg0RSwgMHg2ODQ0LCAweDY4MzQsIDB4NjgxRCwgMHg2ODEyLCAweDY4MTQsIDB4NjgyNiwKKyAgICAweDY4MjgsIDB4NjgyRSwgMHg2ODRELCAweDY4M0EsIDB4NjgyNSwgMHg2ODIwLCAweDZCMkMsIDB4NkIyRiwKKyAgICAweDZCMkQsIDB4NkIzMSwgMHg2QjM0LCAweDZCNkQsIDB4ODA4MiwgMHg2Qjg4LCAweDZCRTYsIDB4NkJFNCwKKyAgICAweDZCRTgsIDB4NkJFMywgMHg2QkUyLCAweDZCRTcsIDB4NkMyNSwgMHg2RDdBLCAweDZENjMsIDB4NkQ2NCwKKyAgICAweDZENzYsIDB4NkQwRCwgMHg2RDYxLCAweDZEOTIsIDB4NkQ1OCwgMHg2RDYyLCAweDZENkQsIDB4NkQ2RiwKKyAgICAweDZEOTEsIDB4NkQ4RCwgMHg2REVGLCAweDZEN0YsIDB4NkQ4NiwgMHg2RDVFLCAweDZENjcsIDB4NkQ2MCwKKyAgICAweDZEOTcsIDB4NkQ3MCwgMHg2RDdDLCAweDZENUYsIDB4NkQ4MiwgMHg2RDk4LCAweDZEMkYsIDB4NkQ2OCwKKyAgICAweDZEOEIsIDB4NkQ3RSwgMHg2RDgwLCAweDZEODQsIDB4NkQxNiwgMHg2RDgzLCAweDZEN0IsIDB4NkQ3RCwKKyAgICAweDZENzUsIDB4NkQ5MCwgMHg3MERDLCAweDcwRDMsIDB4NzBEMSwgMHg3MERELCAweDcwQ0IsIDB4N0YzOSwKKyAgICAweDcwRTIsIDB4NzBENywgMHg3MEQyLCAweDcwREUsIDB4NzBFMCwgMHg3MEQ0LCAweDcwQ0QsIDB4NzBDNSwKKyAgICAweDcwQzYsIDB4NzBDNywgMHg3MERBLCAweDcwQ0UsIDB4NzBFMSwgMHg3MjQyLCAweDcyNzgsIDB4NzI3NywKKyAgICAweDcyNzYsIDB4NzMwMCwgMHg3MkZBLCAweDcyRjQsIDB4NzJGRSwgMHg3MkY2LCAweDcyRjMsIDB4NzJGQiwKKyAgICAweDczMDEsIDB4NzNEMywgMHg3M0Q5LCAweDczRTUsIDB4NzNENiwgMHg3M0JDLCAweDczRTcsIDB4NzNFMywKKyAgICAweDczRTksIDB4NzNEQywgMHg3M0QyLCAweDczREIsIDB4NzNENCwgMHg3M0RELCAweDczREEsIDB4NzNENywKKyAgICAweDczRDgsIDB4NzNFOCwgMHg3NERFLCAweDc0REYsIDB4NzRGNCwgMHg3NEY1LCAweDc1MjEsIDB4NzU1QiwKKyAgICAweDc1NUYsIDB4NzVCMCwgMHg3NUMxLCAweDc1QkIsIDB4NzVDNCwgMHg3NUMwLCAweDc1QkYsIDB4NzVCNiwKKyAgICAweDc1QkEsIDB4NzY4QSwgMHg3NkM5LCAweDc3MUQsIDB4NzcxQiwgMHg3NzEwLCAweDc3MTMsIDB4NzcxMiwKKyAgICAweDc3MjMsIDB4NzcxMSwgMHg3NzE1LCAweDc3MTksIDB4NzcxQSwgMHg3NzIyLCAweDc3MjcsIDB4NzgyMywKKyAgICAweDc4MkMsIDB4NzgyMiwgMHg3ODM1LCAweDc4MkYsIDB4NzgyOCwgMHg3ODJFLCAweDc4MkIsIDB4NzgyMSwKKyAgICAweDc4MjksIDB4NzgzMywgMHg3ODJBLCAweDc4MzEsIDB4Nzk1NCwgMHg3OTVCLCAweDc5NEYsIDB4Nzk1QywKKyAgICAweDc5NTMsIDB4Nzk1MiwgMHg3OTUxLCAweDc5RUIsIDB4NzlFQywgMHg3OUUwLCAweDc5RUUsIDB4NzlFRCwKKyAgICAweDc5RUEsIDB4NzlEQywgMHg3OURFLCAweDc5REQsIDB4N0E4NiwgMHg3QTg5LCAweDdBODUsIDB4N0E4QiwKKyAgICAweDdBOEMsIDB4N0E4QSwgMHg3QTg3LCAweDdBRDgsIDB4N0IxMCwgMHg3QjA0LCAweDdCMTMsIDB4N0IwNSwKKyAgICAweDdCMEYsIDB4N0IwOCwgMHg3QjBBLCAweDdCMEUsIDB4N0IwOSwgMHg3QjEyLCAweDdDODQsIDB4N0M5MSwKKyAgICAweDdDOEEsIDB4N0M4QywgMHg3Qzg4LCAweDdDOEQsIDB4N0M4NSwgMHg3RDFFLCAweDdEMUQsIDB4N0QxMSwKKyAgICAweDdEMEUsIDB4N0QxOCwgMHg3RDE2LCAweDdEMTMsIDB4N0QxRiwgMHg3RDEyLCAweDdEMEYsIDB4N0QwQywKKyAgICAweDdGNUMsIDB4N0Y2MSwgMHg3RjVFLCAweDdGNjAsIDB4N0Y1RCwgMHg3RjVCLCAweDdGOTYsIDB4N0Y5MiwKKyAgICAweDdGQzMsIDB4N0ZDMiwgMHg3RkMwLCAweDgwMTYsIDB4ODAzRSwgMHg4MDM5LCAweDgwRkEsIDB4ODBGMiwKKyAgICAweDgwRjksIDB4ODBGNSwgMHg4MTAxLCAweDgwRkIsIDB4ODEwMCwgMHg4MjAxLCAweDgyMkYsIDB4ODIyNSwKKyAgICAweDgzMzMsIDB4ODMyRCwgMHg4MzQ0LCAweDgzMTksIDB4ODM1MSwgMHg4MzI1LCAweDgzNTYsIDB4ODMzRiwKKyAgICAweDgzNDEsIDB4ODMyNiwgMHg4MzFDLCAweDgzMjIsIDB4ODM0MiwgMHg4MzRFLCAweDgzMUIsIDB4ODMyQSwKKyAgICAweDgzMDgsIDB4ODMzQywgMHg4MzRELCAweDgzMTYsIDB4ODMyNCwgMHg4MzIwLCAweDgzMzcsIDB4ODMyRiwKKyAgICAweDgzMjksIDB4ODM0NywgMHg4MzQ1LCAweDgzNEMsIDB4ODM1MywgMHg4MzFFLCAweDgzMkMsIDB4ODM0QiwKKyAgICAweDgzMjcsIDB4ODM0OCwgMHg4NjUzLCAweDg2NTIsIDB4ODZBMiwgMHg4NkE4LCAweDg2OTYsIDB4ODY4RCwKKyAgICAweDg2OTEsIDB4ODY5RSwgMHg4Njg3LCAweDg2OTcsIDB4ODY4NiwgMHg4NjhCLCAweDg2OUEsIDB4ODY4NSwKKyAgICAweDg2QTUsIDB4ODY5OSwgMHg4NkExLCAweDg2QTcsIDB4ODY5NSwgMHg4Njk4LCAweDg2OEUsIDB4ODY5RCwKKyAgICAweDg2OTAsIDB4ODY5NCwgMHg4ODQzLCAweDg4NDQsIDB4ODg2RCwgMHg4ODc1LCAweDg4NzYsIDB4ODg3MiwKKyAgICAweDg4ODAsIDB4ODg3MSwgMHg4ODdGLCAweDg4NkYsIDB4ODg4MywgMHg4ODdFLCAweDg4NzQsIDB4ODg3QywKKyAgICAweDhBMTIsIDB4OEM0NywgMHg4QzU3LCAweDhDN0IsIDB4OENBNCwgMHg4Q0EzLCAweDhENzYsIDB4OEQ3OCwKKyAgICAweDhEQjUsIDB4OERCNywgMHg4REI2LCAweDhFRDEsIDB4OEVEMywgMHg4RkZFLCAweDhGRjUsIDB4OTAwMiwKKyAgICAweDhGRkYsIDB4OEZGQiwgMHg5MDA0LCAweDhGRkMsIDB4OEZGNiwgMHg5MEQ2LCAweDkwRTAsIDB4OTBEOSwKKyAgICAweDkwREEsIDB4OTBFMywgMHg5MERGLCAweDkwRTUsIDB4OTBEOCwgMHg5MERCLCAweDkwRDcsIDB4OTBEQywKKyAgICAweDkwRTQsIDB4OTE1MCwgMHg5MTRFLCAweDkxNEYsIDB4OTFENSwgMHg5MUUyLCAweDkxREEsIDB4OTY1QywKKyAgICAweDk2NUYsIDB4OTZCQywgMHg5OEUzLCAweDlBREYsIDB4OUIyRiwgMHg0RTdGLCAweDUwNzAsIDB4NTA2QSwKKyAgICAweDUwNjEsIDB4NTA1RSwgMHg1MDYwLCAweDUwNTMsIDB4NTA0QiwgMHg1MDVELCAweDUwNzIsIDB4NTA0OCwKKyAgICAweDUwNEQsIDB4NTA0MSwgMHg1MDVCLCAweDUwNEEsIDB4NTA2MiwgMHg1MDE1LCAweDUwNDUsIDB4NTA1RiwKKyAgICAweDUwNjksIDB4NTA2QiwgMHg1MDYzLCAweDUwNjQsIDB4NTA0NiwgMHg1MDQwLCAweDUwNkUsIDB4NTA3MywKKyAgICAweDUwNTcsIDB4NTA1MSwgMHg1MUQwLCAweDUyNkIsIDB4NTI2RCwgMHg1MjZDLCAweDUyNkUsIDB4NTJENiwKKyAgICAweDUyRDMsIDB4NTMyRCwgMHg1MzlDLCAweDU1NzUsIDB4NTU3NiwgMHg1NTNDLCAweDU1NEQsIDB4NTU1MCwKKyAgICAweDU1MzQsIDB4NTUyQSwgMHg1NTUxLCAweDU1NjIsIDB4NTUzNiwgMHg1NTM1LCAweDU1MzAsIDB4NTU1MiwKKyAgICAweDU1NDUsIDB4NTUwQywgMHg1NTMyLCAweDU1NjUsIDB4NTU0RSwgMHg1NTM5LCAweDU1NDgsIDB4NTUyRCwKKyAgICAweDU1M0IsIDB4NTU0MCwgMHg1NTRCLCAweDU3MEEsIDB4NTcwNywgMHg1N0ZCLCAweDU4MTQsIDB4NTdFMiwKKyAgICAweDU3RjYsIDB4NTdEQywgMHg1N0Y0LCAweDU4MDAsIDB4NTdFRCwgMHg1N0ZELCAweDU4MDgsIDB4NTdGOCwKKyAgICAweDU4MEIsIDB4NTdGMywgMHg1N0NGLCAweDU4MDcsIDB4NTdFRSwgMHg1N0UzLCAweDU3RjIsIDB4NTdFNSwKKyAgICAweDU3RUMsIDB4NTdFMSwgMHg1ODBFLCAweDU3RkMsIDB4NTgxMCwgMHg1N0U3LCAweDU4MDEsIDB4NTgwQywKKyAgICAweDU3RjEsIDB4NTdFOSwgMHg1N0YwLCAweDU4MEQsIDB4NTgwNCwgMHg1OTVDLCAweDVBNjAsIDB4NUE1OCwKKyAgICAweDVBNTUsIDB4NUE2NywgMHg1QTVFLCAweDVBMzgsIDB4NUEzNSwgMHg1QTZELCAweDVBNTAsIDB4NUE1RiwKKyAgICAweDVBNjUsIDB4NUE2QywgMHg1QTUzLCAweDVBNjQsIDB4NUE1NywgMHg1QTQzLCAweDVBNUQsIDB4NUE1MiwKKyAgICAweDVBNDQsIDB4NUE1QiwgMHg1QTQ4LCAweDVBOEUsIDB4NUEzRSwgMHg1QTRELCAweDVBMzksIDB4NUE0QywKKyAgICAweDVBNzAsIDB4NUE2OSwgMHg1QTQ3LCAweDVBNTEsIDB4NUE1NiwgMHg1QTQyLCAweDVBNUMsIDB4NUI3MiwKKyAgICAweDVCNkUsIDB4NUJDMSwgMHg1QkMwLCAweDVDNTksIDB4NUQxRSwgMHg1RDBCLCAweDVEMUQsIDB4NUQxQSwKKyAgICAweDVEMjAsIDB4NUQwQywgMHg1RDI4LCAweDVEMEQsIDB4NUQyNiwgMHg1RDI1LCAweDVEMEYsIDB4NUQzMCwKKyAgICAweDVEMTIsIDB4NUQyMywgMHg1RDFGLCAweDVEMkUsIDB4NUUzRSwgMHg1RTM0LCAweDVFQjEsIDB4NUVCNCwKKyAgICAweDVFQjksIDB4NUVCMiwgMHg1RUIzLCAweDVGMzYsIDB4NUYzOCwgMHg1RjlCLCAweDVGOTYsIDB4NUY5RiwKKyAgICAweDYwOEEsIDB4NjA5MCwgMHg2MDg2LCAweDYwQkUsIDB4NjBCMCwgMHg2MEJBLCAweDYwRDMsIDB4NjBENCwKKyAgICAweDYwQ0YsIDB4NjBFNCwgMHg2MEQ5LCAweDYwREQsIDB4NjBDOCwgMHg2MEIxLCAweDYwREIsIDB4NjBCNywKKyAgICAweDYwQ0EsIDB4NjBCRiwgMHg2MEMzLCAweDYwQ0QsIDB4NjBDMCwgMHg2MzMyLCAweDYzNjUsIDB4NjM4QSwKKyAgICAweDYzODIsIDB4NjM3RCwgMHg2M0JELCAweDYzOUUsIDB4NjNBRCwgMHg2MzlELCAweDYzOTcsIDB4NjNBQiwKKyAgICAweDYzOEUsIDB4NjM2RiwgMHg2Mzg3LCAweDYzOTAsIDB4NjM2RSwgMHg2M0FGLCAweDYzNzUsIDB4NjM5QywKKyAgICAweDYzNkQsIDB4NjNBRSwgMHg2MzdDLCAweDYzQTQsIDB4NjMzQiwgMHg2MzlGLCAweDYzNzgsIDB4NjM4NSwKKyAgICAweDYzODEsIDB4NjM5MSwgMHg2MzhELCAweDYzNzAsIDB4NjU1MywgMHg2NUNELCAweDY2NjUsIDB4NjY2MSwKKyAgICAweDY2NUIsIDB4NjY1OSwgMHg2NjVDLCAweDY2NjIsIDB4NjcxOCwgMHg2ODc5LCAweDY4ODcsIDB4Njg5MCwKKyAgICAweDY4OUMsIDB4Njg2RCwgMHg2ODZFLCAweDY4QUUsIDB4NjhBQiwgMHg2OTU2LCAweDY4NkYsIDB4NjhBMywKKyAgICAweDY4QUMsIDB4NjhBOSwgMHg2ODc1LCAweDY4NzQsIDB4NjhCMiwgMHg2ODhGLCAweDY4NzcsIDB4Njg5MiwKKyAgICAweDY4N0MsIDB4Njg2QiwgMHg2ODcyLCAweDY4QUEsIDB4Njg4MCwgMHg2ODcxLCAweDY4N0UsIDB4Njg5QiwKKyAgICAweDY4OTYsIDB4Njg4QiwgMHg2OEEwLCAweDY4ODksIDB4NjhBNCwgMHg2ODc4LCAweDY4N0IsIDB4Njg5MSwKKyAgICAweDY4OEMsIDB4Njg4QSwgMHg2ODdELCAweDZCMzYsIDB4NkIzMywgMHg2QjM3LCAweDZCMzgsIDB4NkI5MSwKKyAgICAweDZCOEYsIDB4NkI4RCwgMHg2QjhFLCAweDZCOEMsIDB4NkMyQSwgMHg2REMwLCAweDZEQUIsIDB4NkRCNCwKKyAgICAweDZEQjMsIDB4NkU3NCwgMHg2REFDLCAweDZERTksIDB4NkRFMiwgMHg2REI3LCAweDZERjYsIDB4NkRENCwKKyAgICAweDZFMDAsIDB4NkRDOCwgMHg2REUwLCAweDZEREYsIDB4NkRENiwgMHg2REJFLCAweDZERTUsIDB4NkREQywKKyAgICAweDZEREQsIDB4NkREQiwgMHg2REY0LCAweDZEQ0EsIDB4NkRCRCwgMHg2REVELCAweDZERjAsIDB4NkRCQSwKKyAgICAweDZERDUsIDB4NkRDMiwgMHg2RENGLCAweDZEQzksIDB4NkREMCwgMHg2REYyLCAweDZERDMsIDB4NkRGRCwKKyAgICAweDZERDcsIDB4NkRDRCwgMHg2REUzLCAweDZEQkIsIDB4NzBGQSwgMHg3MTBELCAweDcwRjcsIDB4NzExNywKKyAgICAweDcwRjQsIDB4NzEwQywgMHg3MEYwLCAweDcxMDQsIDB4NzBGMywgMHg3MTEwLCAweDcwRkMsIDB4NzBGRiwKKyAgICAweDcxMDYsIDB4NzExMywgMHg3MTAwLCAweDcwRjgsIDB4NzBGNiwgMHg3MTBCLCAweDcxMDIsIDB4NzEwRSwKKyAgICAweDcyN0UsIDB4NzI3QiwgMHg3MjdDLCAweDcyN0YsIDB4NzMxRCwgMHg3MzE3LCAweDczMDcsIDB4NzMxMSwKKyAgICAweDczMTgsIDB4NzMwQSwgMHg3MzA4LCAweDcyRkYsIDB4NzMwRiwgMHg3MzFFLCAweDczODgsIDB4NzNGNiwKKyAgICAweDczRjgsIDB4NzNGNSwgMHg3NDA0LCAweDc0MDEsIDB4NzNGRCwgMHg3NDA3LCAweDc0MDAsIDB4NzNGQSwKKyAgICAweDczRkMsIDB4NzNGRiwgMHg3NDBDLCAweDc0MEIsIDB4NzNGNCwgMHg3NDA4LCAweDc1NjQsIDB4NzU2MywKKyAgICAweDc1Q0UsIDB4NzVEMiwgMHg3NUNGLCAweDc1Q0IsIDB4NzVDQywgMHg3NUQxLCAweDc1RDAsIDB4NzY4RiwKKyAgICAweDc2ODksIDB4NzZEMywgMHg3NzM5LCAweDc3MkYsIDB4NzcyRCwgMHg3NzMxLCAweDc3MzIsIDB4NzczNCwKKyAgICAweDc3MzMsIDB4NzczRCwgMHg3NzI1LCAweDc3M0IsIDB4NzczNSwgMHg3ODQ4LCAweDc4NTIsIDB4Nzg0OSwKKyAgICAweDc4NEQsIDB4Nzg0QSwgMHg3ODRDLCAweDc4MjYsIDB4Nzg0NSwgMHg3ODUwLCAweDc5NjQsIDB4Nzk2NywKKyAgICAweDc5NjksIDB4Nzk2QSwgMHg3OTYzLCAweDc5NkIsIDB4Nzk2MSwgMHg3OUJCLCAweDc5RkEsIDB4NzlGOCwKKyAgICAweDc5RjYsIDB4NzlGNywgMHg3QThGLCAweDdBOTQsIDB4N0E5MCwgMHg3QjM1LCAweDdCM0IsIDB4N0IzNCwKKyAgICAweDdCMjUsIDB4N0IzMCwgMHg3QjIyLCAweDdCMjQsIDB4N0IzMywgMHg3QjE4LCAweDdCMkEsIDB4N0IxRCwKKyAgICAweDdCMzEsIDB4N0IyQiwgMHg3QjJELCAweDdCMkYsIDB4N0IzMiwgMHg3QjM4LCAweDdCMUEsIDB4N0IyMywKKyAgICAweDdDOTQsIDB4N0M5OCwgMHg3Qzk2LCAweDdDQTMsIDB4N0QzNSwgMHg3RDNELCAweDdEMzgsIDB4N0QzNiwKKyAgICAweDdEM0EsIDB4N0Q0NSwgMHg3RDJDLCAweDdEMjksIDB4N0Q0MSwgMHg3RDQ3LCAweDdEM0UsIDB4N0QzRiwKKyAgICAweDdENEEsIDB4N0QzQiwgMHg3RDI4LCAweDdGNjMsIDB4N0Y5NSwgMHg3RjlDLCAweDdGOUQsIDB4N0Y5QiwKKyAgICAweDdGQ0EsIDB4N0ZDQiwgMHg3RkNELCAweDdGRDAsIDB4N0ZEMSwgMHg3RkM3LCAweDdGQ0YsIDB4N0ZDOSwKKyAgICAweDgwMUYsIDB4ODAxRSwgMHg4MDFCLCAweDgwNDcsIDB4ODA0MywgMHg4MDQ4LCAweDgxMTgsIDB4ODEyNSwKKyAgICAweDgxMTksIDB4ODExQiwgMHg4MTJELCAweDgxMUYsIDB4ODEyQywgMHg4MTFFLCAweDgxMjEsIDB4ODExNSwKKyAgICAweDgxMjcsIDB4ODExRCwgMHg4MTIyLCAweDgyMTEsIDB4ODIzOCwgMHg4MjMzLCAweDgyM0EsIDB4ODIzNCwKKyAgICAweDgyMzIsIDB4ODI3NCwgMHg4MzkwLCAweDgzQTMsIDB4ODNBOCwgMHg4MzhELCAweDgzN0EsIDB4ODM3MywKKyAgICAweDgzQTQsIDB4ODM3NCwgMHg4MzhGLCAweDgzODEsIDB4ODM5NSwgMHg4Mzk5LCAweDgzNzUsIDB4ODM5NCwKKyAgICAweDgzQTksIDB4ODM3RCwgMHg4MzgzLCAweDgzOEMsIDB4ODM5RCwgMHg4MzlCLCAweDgzQUEsIDB4ODM4QiwKKyAgICAweDgzN0UsIDB4ODNBNSwgMHg4M0FGLCAweDgzODgsIDB4ODM5NywgMHg4M0IwLCAweDgzN0YsIDB4ODNBNiwKKyAgICAweDgzODcsIDB4ODNBRSwgMHg4Mzc2LCAweDg2NTksIDB4ODY1NiwgMHg4NkJGLCAweDg2QjcsIDB4ODZDMiwKKyAgICAweDg2QzEsIDB4ODZDNSwgMHg4NkJBLCAweDg2QjAsIDB4ODZDOCwgMHg4NkI5LCAweDg2QjMsIDB4ODZCOCwKKyAgICAweDg2Q0MsIDB4ODZCNCwgMHg4NkJCLCAweDg2QkMsIDB4ODZDMywgMHg4NkJELCAweDg2QkUsIDB4ODg1MiwKKyAgICAweDg4ODksIDB4ODg5NSwgMHg4OEE4LCAweDg4QTIsIDB4ODhBQSwgMHg4ODlBLCAweDg4OTEsIDB4ODhBMSwKKyAgICAweDg4OUYsIDB4ODg5OCwgMHg4OEE3LCAweDg4OTksIDB4ODg5QiwgMHg4ODk3LCAweDg4QTQsIDB4ODhBQywKKyAgICAweDg4OEMsIDB4ODg5MywgMHg4ODhFLCAweDg5ODIsIDB4ODlENiwgMHg4OUQ5LCAweDg5RDUsIDB4OEEzMCwKKyAgICAweDhBMjcsIDB4OEEyQywgMHg4QTFFLCAweDhDMzksIDB4OEMzQiwgMHg4QzVDLCAweDhDNUQsIDB4OEM3RCwKKyAgICAweDhDQTUsIDB4OEQ3RCwgMHg4RDdCLCAweDhENzksIDB4OERCQywgMHg4REMyLCAweDhEQjksIDB4OERCRiwKKyAgICAweDhEQzEsIDB4OEVEOCwgMHg4RURFLCAweDhFREQsIDB4OEVEQywgMHg4RUQ3LCAweDhFRTAsIDB4OEVFMSwKKyAgICAweDkwMjQsIDB4OTAwQiwgMHg5MDExLCAweDkwMUMsIDB4OTAwQywgMHg5MDIxLCAweDkwRUYsIDB4OTBFQSwKKyAgICAweDkwRjAsIDB4OTBGNCwgMHg5MEYyLCAweDkwRjMsIDB4OTBENCwgMHg5MEVCLCAweDkwRUMsIDB4OTBFOSwKKyAgICAweDkxNTYsIDB4OTE1OCwgMHg5MTVBLCAweDkxNTMsIDB4OTE1NSwgMHg5MUVDLCAweDkxRjQsIDB4OTFGMSwKKyAgICAweDkxRjMsIDB4OTFGOCwgMHg5MUU0LCAweDkxRjksIDB4OTFFQSwgMHg5MUVCLCAweDkxRjcsIDB4OTFFOCwKKyAgICAweDkxRUUsIDB4OTU3QSwgMHg5NTg2LCAweDk1ODgsIDB4OTY3QywgMHg5NjZELCAweDk2NkIsIDB4OTY3MSwKKyAgICAweDk2NkYsIDB4OTZCRiwgMHg5NzZBLCAweDk4MDQsIDB4OThFNSwgMHg5OTk3LCAweDUwOUIsIDB4NTA5NSwKKyAgICAweDUwOTQsIDB4NTA5RSwgMHg1MDhCLCAweDUwQTMsIDB4NTA4MywgMHg1MDhDLCAweDUwOEUsIDB4NTA5RCwKKyAgICAweDUwNjgsIDB4NTA5QywgMHg1MDkyLCAweDUwODIsIDB4NTA4NywgMHg1MTVGLCAweDUxRDQsIDB4NTMxMiwKKyAgICAweDUzMTEsIDB4NTNBNCwgMHg1M0E3LCAweDU1OTEsIDB4NTVBOCwgMHg1NUE1LCAweDU1QUQsIDB4NTU3NywKKyAgICAweDU2NDUsIDB4NTVBMiwgMHg1NTkzLCAweDU1ODgsIDB4NTU4RiwgMHg1NUI1LCAweDU1ODEsIDB4NTVBMywKKyAgICAweDU1OTIsIDB4NTVBNCwgMHg1NTdELCAweDU1OEMsIDB4NTVBNiwgMHg1NTdGLCAweDU1OTUsIDB4NTVBMSwKKyAgICAweDU1OEUsIDB4NTcwQywgMHg1ODI5LCAweDU4MzcsIDB4NTgxOSwgMHg1ODFFLCAweDU4MjcsIDB4NTgyMywKKyAgICAweDU4MjgsIDB4NTdGNSwgMHg1ODQ4LCAweDU4MjUsIDB4NTgxQywgMHg1ODFCLCAweDU4MzMsIDB4NTgzRiwKKyAgICAweDU4MzYsIDB4NTgyRSwgMHg1ODM5LCAweDU4MzgsIDB4NTgyRCwgMHg1ODJDLCAweDU4M0IsIDB4NTk2MSwKKyAgICAweDVBQUYsIDB4NUE5NCwgMHg1QTlGLCAweDVBN0EsIDB4NUFBMiwgMHg1QTlFLCAweDVBNzgsIDB4NUFBNiwKKyAgICAweDVBN0MsIDB4NUFBNSwgMHg1QUFDLCAweDVBOTUsIDB4NUFBRSwgMHg1QTM3LCAweDVBODQsIDB4NUE4QSwKKyAgICAweDVBOTcsIDB4NUE4MywgMHg1QThCLCAweDVBQTksIDB4NUE3QiwgMHg1QTdELCAweDVBOEMsIDB4NUE5QywKKyAgICAweDVBOEYsIDB4NUE5MywgMHg1QTlELCAweDVCRUEsIDB4NUJDRCwgMHg1QkNCLCAweDVCRDQsIDB4NUJEMSwKKyAgICAweDVCQ0EsIDB4NUJDRSwgMHg1QzBDLCAweDVDMzAsIDB4NUQzNywgMHg1RDQzLCAweDVENkIsIDB4NUQ0MSwKKyAgICAweDVENEIsIDB4NUQzRiwgMHg1RDM1LCAweDVENTEsIDB4NUQ0RSwgMHg1RDU1LCAweDVEMzMsIDB4NUQzQSwKKyAgICAweDVENTIsIDB4NUQzRCwgMHg1RDMxLCAweDVENTksIDB4NUQ0MiwgMHg1RDM5LCAweDVENDksIDB4NUQzOCwKKyAgICAweDVEM0MsIDB4NUQzMiwgMHg1RDM2LCAweDVENDAsIDB4NUQ0NSwgMHg1RTQ0LCAweDVFNDEsIDB4NUY1OCwKKyAgICAweDVGQTYsIDB4NUZBNSwgMHg1RkFCLCAweDYwQzksIDB4NjBCOSwgMHg2MENDLCAweDYwRTIsIDB4NjBDRSwKKyAgICAweDYwQzQsIDB4NjExNCwgMHg2MEYyLCAweDYxMEEsIDB4NjExNiwgMHg2MTA1LCAweDYwRjUsIDB4NjExMywKKyAgICAweDYwRjgsIDB4NjBGQywgMHg2MEZFLCAweDYwQzEsIDB4NjEwMywgMHg2MTE4LCAweDYxMUQsIDB4NjExMCwKKyAgICAweDYwRkYsIDB4NjEwNCwgMHg2MTBCLCAweDYyNEEsIDB4NjM5NCwgMHg2M0IxLCAweDYzQjAsIDB4NjNDRSwKKyAgICAweDYzRTUsIDB4NjNFOCwgMHg2M0VGLCAweDYzQzMsIDB4NjQ5RCwgMHg2M0YzLCAweDYzQ0EsIDB4NjNFMCwKKyAgICAweDYzRjYsIDB4NjNENSwgMHg2M0YyLCAweDYzRjUsIDB4NjQ2MSwgMHg2M0RGLCAweDYzQkUsIDB4NjNERCwKKyAgICAweDYzREMsIDB4NjNDNCwgMHg2M0Q4LCAweDYzRDMsIDB4NjNDMiwgMHg2M0M3LCAweDYzQ0MsIDB4NjNDQiwKKyAgICAweDYzQzgsIDB4NjNGMCwgMHg2M0Q3LCAweDYzRDksIDB4NjUzMiwgMHg2NTY3LCAweDY1NkEsIDB4NjU2NCwKKyAgICAweDY1NUMsIDB4NjU2OCwgMHg2NTY1LCAweDY1OEMsIDB4NjU5RCwgMHg2NTlFLCAweDY1QUUsIDB4NjVEMCwKKyAgICAweDY1RDIsIDB4NjY3QywgMHg2NjZDLCAweDY2N0IsIDB4NjY4MCwgMHg2NjcxLCAweDY2NzksIDB4NjY2QSwKKyAgICAweDY2NzIsIDB4NjcwMSwgMHg2OTBDLCAweDY4RDMsIDB4NjkwNCwgMHg2OERDLCAweDY5MkEsIDB4NjhFQywKKyAgICAweDY4RUEsIDB4NjhGMSwgMHg2OTBGLCAweDY4RDYsIDB4NjhGNywgMHg2OEVCLCAweDY4RTQsIDB4NjhGNiwKKyAgICAweDY5MTMsIDB4NjkxMCwgMHg2OEYzLCAweDY4RTEsIDB4NjkwNywgMHg2OENDLCAweDY5MDgsIDB4Njk3MCwKKyAgICAweDY4QjQsIDB4NjkxMSwgMHg2OEVGLCAweDY4QzYsIDB4NjkxNCwgMHg2OEY4LCAweDY4RDAsIDB4NjhGRCwKKyAgICAweDY4RkMsIDB4NjhFOCwgMHg2OTBCLCAweDY5MEEsIDB4NjkxNywgMHg2OENFLCAweDY4QzgsIDB4NjhERCwKKyAgICAweDY4REUsIDB4NjhFNiwgMHg2OEY0LCAweDY4RDEsIDB4NjkwNiwgMHg2OEQ0LCAweDY4RTksIDB4NjkxNSwKKyAgICAweDY5MjUsIDB4NjhDNywgMHg2QjM5LCAweDZCM0IsIDB4NkIzRiwgMHg2QjNDLCAweDZCOTQsIDB4NkI5NywKKyAgICAweDZCOTksIDB4NkI5NSwgMHg2QkJELCAweDZCRjAsIDB4NkJGMiwgMHg2QkYzLCAweDZDMzAsIDB4NkRGQywKKyAgICAweDZFNDYsIDB4NkU0NywgMHg2RTFGLCAweDZFNDksIDB4NkU4OCwgMHg2RTNDLCAweDZFM0QsIDB4NkU0NSwKKyAgICAweDZFNjIsIDB4NkUyQiwgMHg2RTNGLCAweDZFNDEsIDB4NkU1RCwgMHg2RTczLCAweDZFMUMsIDB4NkUzMywKKyAgICAweDZFNEIsIDB4NkU0MCwgMHg2RTUxLCAweDZFM0IsIDB4NkUwMywgMHg2RTJFLCAweDZFNUUsIDB4NkU2OCwKKyAgICAweDZFNUMsIDB4NkU2MSwgMHg2RTMxLCAweDZFMjgsIDB4NkU2MCwgMHg2RTcxLCAweDZFNkIsIDB4NkUzOSwKKyAgICAweDZFMjIsIDB4NkUzMCwgMHg2RTUzLCAweDZFNjUsIDB4NkUyNywgMHg2RTc4LCAweDZFNjQsIDB4NkU3NywKKyAgICAweDZFNTUsIDB4NkU3OSwgMHg2RTUyLCAweDZFNjYsIDB4NkUzNSwgMHg2RTM2LCAweDZFNUEsIDB4NzEyMCwKKyAgICAweDcxMUUsIDB4NzEyRiwgMHg3MEZCLCAweDcxMkUsIDB4NzEzMSwgMHg3MTIzLCAweDcxMjUsIDB4NzEyMiwKKyAgICAweDcxMzIsIDB4NzExRiwgMHg3MTI4LCAweDcxM0EsIDB4NzExQiwgMHg3MjRCLCAweDcyNUEsIDB4NzI4OCwKKyAgICAweDcyODksIDB4NzI4NiwgMHg3Mjg1LCAweDcyOEIsIDB4NzMxMiwgMHg3MzBCLCAweDczMzAsIDB4NzMyMiwKKyAgICAweDczMzEsIDB4NzMzMywgMHg3MzI3LCAweDczMzIsIDB4NzMyRCwgMHg3MzI2LCAweDczMjMsIDB4NzMzNSwKKyAgICAweDczMEMsIDB4NzQyRSwgMHg3NDJDLCAweDc0MzAsIDB4NzQyQiwgMHg3NDE2LCAweDc0MUEsIDB4NzQyMSwKKyAgICAweDc0MkQsIDB4NzQzMSwgMHg3NDI0LCAweDc0MjMsIDB4NzQxRCwgMHg3NDI5LCAweDc0MjAsIDB4NzQzMiwKKyAgICAweDc0RkIsIDB4NzUyRiwgMHg3NTZGLCAweDc1NkMsIDB4NzVFNywgMHg3NURBLCAweDc1RTEsIDB4NzVFNiwKKyAgICAweDc1REQsIDB4NzVERiwgMHg3NUU0LCAweDc1RDcsIDB4NzY5NSwgMHg3NjkyLCAweDc2REEsIDB4Nzc0NiwKKyAgICAweDc3NDcsIDB4Nzc0NCwgMHg3NzRELCAweDc3NDUsIDB4Nzc0QSwgMHg3NzRFLCAweDc3NEIsIDB4Nzc0QywKKyAgICAweDc3REUsIDB4NzdFQywgMHg3ODYwLCAweDc4NjQsIDB4Nzg2NSwgMHg3ODVDLCAweDc4NkQsIDB4Nzg3MSwKKyAgICAweDc4NkEsIDB4Nzg2RSwgMHg3ODcwLCAweDc4NjksIDB4Nzg2OCwgMHg3ODVFLCAweDc4NjIsIDB4Nzk3NCwKKyAgICAweDc5NzMsIDB4Nzk3MiwgMHg3OTcwLCAweDdBMDIsIDB4N0EwQSwgMHg3QTAzLCAweDdBMEMsIDB4N0EwNCwKKyAgICAweDdBOTksIDB4N0FFNiwgMHg3QUU0LCAweDdCNEEsIDB4N0I0NywgMHg3QjQ0LCAweDdCNDgsIDB4N0I0QywKKyAgICAweDdCNEUsIDB4N0I0MCwgMHg3QjU4LCAweDdCNDUsIDB4N0NBMiwgMHg3QzlFLCAweDdDQTgsIDB4N0NBMSwKKyAgICAweDdENTgsIDB4N0Q2RiwgMHg3RDYzLCAweDdENTMsIDB4N0Q1NiwgMHg3RDY3LCAweDdENkEsIDB4N0Q0RiwKKyAgICAweDdENkQsIDB4N0Q1QywgMHg3RDZCLCAweDdENTIsIDB4N0Q1NCwgMHg3RDY5LCAweDdENTEsIDB4N0Q1RiwKKyAgICAweDdENEUsIDB4N0YzRSwgMHg3RjNGLCAweDdGNjUsIDB4N0Y2NiwgMHg3RkEyLCAweDdGQTAsIDB4N0ZBMSwKKyAgICAweDdGRDcsIDB4ODA1MSwgMHg4MDRGLCAweDgwNTAsIDB4ODBGRSwgMHg4MEQ0LCAweDgxNDMsIDB4ODE0QSwKKyAgICAweDgxNTIsIDB4ODE0RiwgMHg4MTQ3LCAweDgxM0QsIDB4ODE0RCwgMHg4MTNBLCAweDgxRTYsIDB4ODFFRSwKKyAgICAweDgxRjcsIDB4ODFGOCwgMHg4MUY5LCAweDgyMDQsIDB4ODIzQywgMHg4MjNELCAweDgyM0YsIDB4ODI3NSwKKyAgICAweDgzM0IsIDB4ODNDRiwgMHg4M0Y5LCAweDg0MjMsIDB4ODNDMCwgMHg4M0U4LCAweDg0MTIsIDB4ODNFNywKKyAgICAweDgzRTQsIDB4ODNGQywgMHg4M0Y2LCAweDg0MTAsIDB4ODNDNiwgMHg4M0M4LCAweDgzRUIsIDB4ODNFMywKKyAgICAweDgzQkYsIDB4ODQwMSwgMHg4M0RELCAweDgzRTUsIDB4ODNEOCwgMHg4M0ZGLCAweDgzRTEsIDB4ODNDQiwKKyAgICAweDgzQ0UsIDB4ODNENiwgMHg4M0Y1LCAweDgzQzksIDB4ODQwOSwgMHg4NDBGLCAweDgzREUsIDB4ODQxMSwKKyAgICAweDg0MDYsIDB4ODNDMiwgMHg4M0YzLCAweDgzRDUsIDB4ODNGQSwgMHg4M0M3LCAweDgzRDEsIDB4ODNFQSwKKyAgICAweDg0MTMsIDB4ODM5QSwgMHg4M0MzLCAweDgzRUMsIDB4ODNFRSwgMHg4M0M0LCAweDgzRkIsIDB4ODNENywKKyAgICAweDgzRTIsIDB4ODQxQiwgMHg4M0RCLCAweDgzRkUsIDB4ODZEOCwgMHg4NkUyLCAweDg2RTYsIDB4ODZEMywKKyAgICAweDg2RTMsIDB4ODZEQSwgMHg4NkVBLCAweDg2REQsIDB4ODZFQiwgMHg4NkRDLCAweDg2RUMsIDB4ODZFOSwKKyAgICAweDg2RDcsIDB4ODZFOCwgMHg4NkQxLCAweDg4NDgsIDB4ODg1NiwgMHg4ODU1LCAweDg4QkEsIDB4ODhENywKKyAgICAweDg4QjksIDB4ODhCOCwgMHg4OEMwLCAweDg4QkUsIDB4ODhCNiwgMHg4OEJDLCAweDg4QjcsIDB4ODhCRCwKKyAgICAweDg4QjIsIDB4ODkwMSwgMHg4OEM5LCAweDg5OTUsIDB4ODk5OCwgMHg4OTk3LCAweDg5REQsIDB4ODlEQSwKKyAgICAweDg5REIsIDB4OEE0RSwgMHg4QTRELCAweDhBMzksIDB4OEE1OSwgMHg4QTQwLCAweDhBNTcsIDB4OEE1OCwKKyAgICAweDhBNDQsIDB4OEE0NSwgMHg4QTUyLCAweDhBNDgsIDB4OEE1MSwgMHg4QTRBLCAweDhBNEMsIDB4OEE0RiwKKyAgICAweDhDNUYsIDB4OEM4MSwgMHg4QzgwLCAweDhDQkEsIDB4OENCRSwgMHg4Q0IwLCAweDhDQjksIDB4OENCNSwKKyAgICAweDhEODQsIDB4OEQ4MCwgMHg4RDg5LCAweDhERDgsIDB4OEREMywgMHg4RENELCAweDhEQzcsIDB4OERENiwKKyAgICAweDhEREMsIDB4OERDRiwgMHg4REQ1LCAweDhERDksIDB4OERDOCwgMHg4REQ3LCAweDhEQzUsIDB4OEVFRiwKKyAgICAweDhFRjcsIDB4OEVGQSwgMHg4RUY5LCAweDhFRTYsIDB4OEVFRSwgMHg4RUU1LCAweDhFRjUsIDB4OEVFNywKKyAgICAweDhFRTgsIDB4OEVGNiwgMHg4RUVCLCAweDhFRjEsIDB4OEVFQywgMHg4RUY0LCAweDhFRTksIDB4OTAyRCwKKyAgICAweDkwMzQsIDB4OTAyRiwgMHg5MTA2LCAweDkxMkMsIDB4OTEwNCwgMHg5MEZGLCAweDkwRkMsIDB4OTEwOCwKKyAgICAweDkwRjksIDB4OTBGQiwgMHg5MTAxLCAweDkxMDAsIDB4OTEwNywgMHg5MTA1LCAweDkxMDMsIDB4OTE2MSwKKyAgICAweDkxNjQsIDB4OTE1RiwgMHg5MTYyLCAweDkxNjAsIDB4OTIwMSwgMHg5MjBBLCAweDkyMjUsIDB4OTIwMywKKyAgICAweDkyMUEsIDB4OTIyNiwgMHg5MjBGLCAweDkyMEMsIDB4OTIwMCwgMHg5MjEyLCAweDkxRkYsIDB4OTFGRCwKKyAgICAweDkyMDYsIDB4OTIwNCwgMHg5MjI3LCAweDkyMDIsIDB4OTIxQywgMHg5MjI0LCAweDkyMTksIDB4OTIxNywKKyAgICAweDkyMDUsIDB4OTIxNiwgMHg5NTdCLCAweDk1OEQsIDB4OTU4QywgMHg5NTkwLCAweDk2ODcsIDB4OTY3RSwKKyAgICAweDk2ODgsIDB4OTY4OSwgMHg5NjgzLCAweDk2ODAsIDB4OTZDMiwgMHg5NkM4LCAweDk2QzMsIDB4OTZGMSwKKyAgICAweDk2RjAsIDB4OTc2QywgMHg5NzcwLCAweDk3NkUsIDB4OTgwNywgMHg5OEE5LCAweDk4RUIsIDB4OUNFNiwKKyAgICAweDlFRjksIDB4NEU4MywgMHg0RTg0LCAweDRFQjYsIDB4NTBCRCwgMHg1MEJGLCAweDUwQzYsIDB4NTBBRSwKKyAgICAweDUwQzQsIDB4NTBDQSwgMHg1MEI0LCAweDUwQzgsIDB4NTBDMiwgMHg1MEIwLCAweDUwQzEsIDB4NTBCQSwKKyAgICAweDUwQjEsIDB4NTBDQiwgMHg1MEM5LCAweDUwQjYsIDB4NTBCOCwgMHg1MUQ3LCAweDUyN0EsIDB4NTI3OCwKKyAgICAweDUyN0IsIDB4NTI3QywgMHg1NUMzLCAweDU1REIsIDB4NTVDQywgMHg1NUQwLCAweDU1Q0IsIDB4NTVDQSwKKyAgICAweDU1REQsIDB4NTVDMCwgMHg1NUQ0LCAweDU1QzQsIDB4NTVFOSwgMHg1NUJGLCAweDU1RDIsIDB4NTU4RCwKKyAgICAweDU1Q0YsIDB4NTVENSwgMHg1NUUyLCAweDU1RDYsIDB4NTVDOCwgMHg1NUYyLCAweDU1Q0QsIDB4NTVEOSwKKyAgICAweDU1QzIsIDB4NTcxNCwgMHg1ODUzLCAweDU4NjgsIDB4NTg2NCwgMHg1ODRGLCAweDU4NEQsIDB4NTg0OSwKKyAgICAweDU4NkYsIDB4NTg1NSwgMHg1ODRFLCAweDU4NUQsIDB4NTg1OSwgMHg1ODY1LCAweDU4NUIsIDB4NTgzRCwKKyAgICAweDU4NjMsIDB4NTg3MSwgMHg1OEZDLCAweDVBQzcsIDB4NUFDNCwgMHg1QUNCLCAweDVBQkEsIDB4NUFCOCwKKyAgICAweDVBQjEsIDB4NUFCNSwgMHg1QUIwLCAweDVBQkYsIDB4NUFDOCwgMHg1QUJCLCAweDVBQzYsIDB4NUFCNywKKyAgICAweDVBQzAsIDB4NUFDQSwgMHg1QUI0LCAweDVBQjYsIDB4NUFDRCwgMHg1QUI5LCAweDVBOTAsIDB4NUJENiwKKyAgICAweDVCRDgsIDB4NUJEOSwgMHg1QzFGLCAweDVDMzMsIDB4NUQ3MSwgMHg1RDYzLCAweDVENEEsIDB4NUQ2NSwKKyAgICAweDVENzIsIDB4NUQ2QywgMHg1RDVFLCAweDVENjgsIDB4NUQ2NywgMHg1RDYyLCAweDVERjAsIDB4NUU0RiwKKyAgICAweDVFNEUsIDB4NUU0QSwgMHg1RTRELCAweDVFNEIsIDB4NUVDNSwgMHg1RUNDLCAweDVFQzYsIDB4NUVDQiwKKyAgICAweDVFQzcsIDB4NUY0MCwgMHg1RkFGLCAweDVGQUQsIDB4NjBGNywgMHg2MTQ5LCAweDYxNEEsIDB4NjEyQiwKKyAgICAweDYxNDUsIDB4NjEzNiwgMHg2MTMyLCAweDYxMkUsIDB4NjE0NiwgMHg2MTJGLCAweDYxNEYsIDB4NjEyOSwKKyAgICAweDYxNDAsIDB4NjIyMCwgMHg5MTY4LCAweDYyMjMsIDB4NjIyNSwgMHg2MjI0LCAweDYzQzUsIDB4NjNGMSwKKyAgICAweDYzRUIsIDB4NjQxMCwgMHg2NDEyLCAweDY0MDksIDB4NjQyMCwgMHg2NDI0LCAweDY0MzMsIDB4NjQ0MywKKyAgICAweDY0MUYsIDB4NjQxNSwgMHg2NDE4LCAweDY0MzksIDB4NjQzNywgMHg2NDIyLCAweDY0MjMsIDB4NjQwQywKKyAgICAweDY0MjYsIDB4NjQzMCwgMHg2NDI4LCAweDY0NDEsIDB4NjQzNSwgMHg2NDJGLCAweDY0MEEsIDB4NjQxQSwKKyAgICAweDY0NDAsIDB4NjQyNSwgMHg2NDI3LCAweDY0MEIsIDB4NjNFNywgMHg2NDFCLCAweDY0MkUsIDB4NjQyMSwKKyAgICAweDY0MEUsIDB4NjU2RiwgMHg2NTkyLCAweDY1RDMsIDB4NjY4NiwgMHg2NjhDLCAweDY2OTUsIDB4NjY5MCwKKyAgICAweDY2OEIsIDB4NjY4QSwgMHg2Njk5LCAweDY2OTQsIDB4NjY3OCwgMHg2NzIwLCAweDY5NjYsIDB4Njk1RiwKKyAgICAweDY5MzgsIDB4Njk0RSwgMHg2OTYyLCAweDY5NzEsIDB4NjkzRiwgMHg2OTQ1LCAweDY5NkEsIDB4NjkzOSwKKyAgICAweDY5NDIsIDB4Njk1NywgMHg2OTU5LCAweDY5N0EsIDB4Njk0OCwgMHg2OTQ5LCAweDY5MzUsIDB4Njk2QywKKyAgICAweDY5MzMsIDB4NjkzRCwgMHg2OTY1LCAweDY4RjAsIDB4Njk3OCwgMHg2OTM0LCAweDY5NjksIDB4Njk0MCwKKyAgICAweDY5NkYsIDB4Njk0NCwgMHg2OTc2LCAweDY5NTgsIDB4Njk0MSwgMHg2OTc0LCAweDY5NEMsIDB4NjkzQiwKKyAgICAweDY5NEIsIDB4NjkzNywgMHg2OTVDLCAweDY5NEYsIDB4Njk1MSwgMHg2OTMyLCAweDY5NTIsIDB4NjkyRiwKKyAgICAweDY5N0IsIDB4NjkzQywgMHg2QjQ2LCAweDZCNDUsIDB4NkI0MywgMHg2QjQyLCAweDZCNDgsIDB4NkI0MSwKKyAgICAweDZCOUIsIDB4NkJGQiwgMHg2QkZDLCAweDZCRjksIDB4NkJGNywgMHg2QkY4LCAweDZFOUIsIDB4NkVENiwKKyAgICAweDZFQzgsIDB4NkU4RiwgMHg2RUMwLCAweDZFOUYsIDB4NkU5MywgMHg2RTk0LCAweDZFQTAsIDB4NkVCMSwKKyAgICAweDZFQjksIDB4NkVDNiwgMHg2RUQyLCAweDZFQkQsIDB4NkVDMSwgMHg2RTlFLCAweDZFQzksIDB4NkVCNywKKyAgICAweDZFQjAsIDB4NkVDRCwgMHg2RUE2LCAweDZFQ0YsIDB4NkVCMiwgMHg2RUJFLCAweDZFQzMsIDB4NkVEQywKKyAgICAweDZFRDgsIDB4NkU5OSwgMHg2RTkyLCAweDZFOEUsIDB4NkU4RCwgMHg2RUE0LCAweDZFQTEsIDB4NkVCRiwKKyAgICAweDZFQjMsIDB4NkVEMCwgMHg2RUNBLCAweDZFOTcsIDB4NkVBRSwgMHg2RUEzLCAweDcxNDcsIDB4NzE1NCwKKyAgICAweDcxNTIsIDB4NzE2MywgMHg3MTYwLCAweDcxNDEsIDB4NzE1RCwgMHg3MTYyLCAweDcxNzIsIDB4NzE3OCwKKyAgICAweDcxNkEsIDB4NzE2MSwgMHg3MTQyLCAweDcxNTgsIDB4NzE0MywgMHg3MTRCLCAweDcxNzAsIDB4NzE1RiwKKyAgICAweDcxNTAsIDB4NzE1MywgMHg3MTQ0LCAweDcxNEQsIDB4NzE1QSwgMHg3MjRGLCAweDcyOEQsIDB4NzI4QywKKyAgICAweDcyOTEsIDB4NzI5MCwgMHg3MjhFLCAweDczM0MsIDB4NzM0MiwgMHg3MzNCLCAweDczM0EsIDB4NzM0MCwKKyAgICAweDczNEEsIDB4NzM0OSwgMHg3NDQ0LCAweDc0NEEsIDB4NzQ0QiwgMHg3NDUyLCAweDc0NTEsIDB4NzQ1NywKKyAgICAweDc0NDAsIDB4NzQ0RiwgMHg3NDUwLCAweDc0NEUsIDB4NzQ0MiwgMHg3NDQ2LCAweDc0NEQsIDB4NzQ1NCwKKyAgICAweDc0RTEsIDB4NzRGRiwgMHg3NEZFLCAweDc0RkQsIDB4NzUxRCwgMHg3NTc5LCAweDc1NzcsIDB4Njk4MywKKyAgICAweDc1RUYsIDB4NzYwRiwgMHg3NjAzLCAweDc1RjcsIDB4NzVGRSwgMHg3NUZDLCAweDc1RjksIDB4NzVGOCwKKyAgICAweDc2MTAsIDB4NzVGQiwgMHg3NUY2LCAweDc1RUQsIDB4NzVGNSwgMHg3NUZELCAweDc2OTksIDB4NzZCNSwKKyAgICAweDc2REQsIDB4Nzc1NSwgMHg3NzVGLCAweDc3NjAsIDB4Nzc1MiwgMHg3NzU2LCAweDc3NUEsIDB4Nzc2OSwKKyAgICAweDc3NjcsIDB4Nzc1NCwgMHg3NzU5LCAweDc3NkQsIDB4NzdFMCwgMHg3ODg3LCAweDc4OUEsIDB4Nzg5NCwKKyAgICAweDc4OEYsIDB4Nzg4NCwgMHg3ODk1LCAweDc4ODUsIDB4Nzg4NiwgMHg3OEExLCAweDc4ODMsIDB4Nzg3OSwKKyAgICAweDc4OTksIDB4Nzg4MCwgMHg3ODk2LCAweDc4N0IsIDB4Nzk3QywgMHg3OTgyLCAweDc5N0QsIDB4Nzk3OSwKKyAgICAweDdBMTEsIDB4N0ExOCwgMHg3QTE5LCAweDdBMTIsIDB4N0ExNywgMHg3QTE1LCAweDdBMjIsIDB4N0ExMywKKyAgICAweDdBMUIsIDB4N0ExMCwgMHg3QUEzLCAweDdBQTIsIDB4N0E5RSwgMHg3QUVCLCAweDdCNjYsIDB4N0I2NCwKKyAgICAweDdCNkQsIDB4N0I3NCwgMHg3QjY5LCAweDdCNzIsIDB4N0I2NSwgMHg3QjczLCAweDdCNzEsIDB4N0I3MCwKKyAgICAweDdCNjEsIDB4N0I3OCwgMHg3Qjc2LCAweDdCNjMsIDB4N0NCMiwgMHg3Q0I0LCAweDdDQUYsIDB4N0Q4OCwKKyAgICAweDdEODYsIDB4N0Q4MCwgMHg3RDhELCAweDdEN0YsIDB4N0Q4NSwgMHg3RDdBLCAweDdEOEUsIDB4N0Q3QiwKKyAgICAweDdEODMsIDB4N0Q3QywgMHg3RDhDLCAweDdEOTQsIDB4N0Q4NCwgMHg3RDdELCAweDdEOTIsIDB4N0Y2RCwKKyAgICAweDdGNkIsIDB4N0Y2NywgMHg3RjY4LCAweDdGNkMsIDB4N0ZBNiwgMHg3RkE1LCAweDdGQTcsIDB4N0ZEQiwKKyAgICAweDdGREMsIDB4ODAyMSwgMHg4MTY0LCAweDgxNjAsIDB4ODE3NywgMHg4MTVDLCAweDgxNjksIDB4ODE1QiwKKyAgICAweDgxNjIsIDB4ODE3MiwgMHg2NzIxLCAweDgxNUUsIDB4ODE3NiwgMHg4MTY3LCAweDgxNkYsIDB4ODE0NCwKKyAgICAweDgxNjEsIDB4ODIxRCwgMHg4MjQ5LCAweDgyNDQsIDB4ODI0MCwgMHg4MjQyLCAweDgyNDUsIDB4ODRGMSwKKyAgICAweDg0M0YsIDB4ODQ1NiwgMHg4NDc2LCAweDg0NzksIDB4ODQ4RiwgMHg4NDhELCAweDg0NjUsIDB4ODQ1MSwKKyAgICAweDg0NDAsIDB4ODQ4NiwgMHg4NDY3LCAweDg0MzAsIDB4ODQ0RCwgMHg4NDdELCAweDg0NUEsIDB4ODQ1OSwKKyAgICAweDg0NzQsIDB4ODQ3MywgMHg4NDVELCAweDg1MDcsIDB4ODQ1RSwgMHg4NDM3LCAweDg0M0EsIDB4ODQzNCwKKyAgICAweDg0N0EsIDB4ODQ0MywgMHg4NDc4LCAweDg0MzIsIDB4ODQ0NSwgMHg4NDI5LCAweDgzRDksIDB4ODQ0QiwKKyAgICAweDg0MkYsIDB4ODQ0MiwgMHg4NDJELCAweDg0NUYsIDB4ODQ3MCwgMHg4NDM5LCAweDg0NEUsIDB4ODQ0QywKKyAgICAweDg0NTIsIDB4ODQ2RiwgMHg4NEM1LCAweDg0OEUsIDB4ODQzQiwgMHg4NDQ3LCAweDg0MzYsIDB4ODQzMywKKyAgICAweDg0NjgsIDB4ODQ3RSwgMHg4NDQ0LCAweDg0MkIsIDB4ODQ2MCwgMHg4NDU0LCAweDg0NkUsIDB4ODQ1MCwKKyAgICAweDg3MEIsIDB4ODcwNCwgMHg4NkY3LCAweDg3MEMsIDB4ODZGQSwgMHg4NkQ2LCAweDg2RjUsIDB4ODc0RCwKKyAgICAweDg2RjgsIDB4ODcwRSwgMHg4NzA5LCAweDg3MDEsIDB4ODZGNiwgMHg4NzBELCAweDg3MDUsIDB4ODhENiwKKyAgICAweDg4Q0IsIDB4ODhDRCwgMHg4OENFLCAweDg4REUsIDB4ODhEQiwgMHg4OERBLCAweDg4Q0MsIDB4ODhEMCwKKyAgICAweDg5ODUsIDB4ODk5QiwgMHg4OURGLCAweDg5RTUsIDB4ODlFNCwgMHg4OUUxLCAweDg5RTAsIDB4ODlFMiwKKyAgICAweDg5REMsIDB4ODlFNiwgMHg4QTc2LCAweDhBODYsIDB4OEE3RiwgMHg4QTYxLCAweDhBM0YsIDB4OEE3NywKKyAgICAweDhBODIsIDB4OEE4NCwgMHg4QTc1LCAweDhBODMsIDB4OEE4MSwgMHg4QTc0LCAweDhBN0EsIDB4OEMzQywKKyAgICAweDhDNEIsIDB4OEM0QSwgMHg4QzY1LCAweDhDNjQsIDB4OEM2NiwgMHg4Qzg2LCAweDhDODQsIDB4OEM4NSwKKyAgICAweDhDQ0MsIDB4OEQ2OCwgMHg4RDY5LCAweDhEOTEsIDB4OEQ4QywgMHg4RDhFLCAweDhEOEYsIDB4OEQ4RCwKKyAgICAweDhEOTMsIDB4OEQ5NCwgMHg4RDkwLCAweDhEOTIsIDB4OERGMCwgMHg4REUwLCAweDhERUMsIDB4OERGMSwKKyAgICAweDhERUUsIDB4OEREMCwgMHg4REU5LCAweDhERTMsIDB4OERFMiwgMHg4REU3LCAweDhERjIsIDB4OERFQiwKKyAgICAweDhERjQsIDB4OEYwNiwgMHg4RUZGLCAweDhGMDEsIDB4OEYwMCwgMHg4RjA1LCAweDhGMDcsIDB4OEYwOCwKKyAgICAweDhGMDIsIDB4OEYwQiwgMHg5MDUyLCAweDkwM0YsIDB4OTA0NCwgMHg5MDQ5LCAweDkwM0QsIDB4OTExMCwKKyAgICAweDkxMEQsIDB4OTEwRiwgMHg5MTExLCAweDkxMTYsIDB4OTExNCwgMHg5MTBCLCAweDkxMEUsIDB4OTE2RSwKKyAgICAweDkxNkYsIDB4OTI0OCwgMHg5MjUyLCAweDkyMzAsIDB4OTIzQSwgMHg5MjY2LCAweDkyMzMsIDB4OTI2NSwKKyAgICAweDkyNUUsIDB4OTI4MywgMHg5MjJFLCAweDkyNEEsIDB4OTI0NiwgMHg5MjZELCAweDkyNkMsIDB4OTI0RiwKKyAgICAweDkyNjAsIDB4OTI2NywgMHg5MjZGLCAweDkyMzYsIDB4OTI2MSwgMHg5MjcwLCAweDkyMzEsIDB4OTI1NCwKKyAgICAweDkyNjMsIDB4OTI1MCwgMHg5MjcyLCAweDkyNEUsIDB4OTI1MywgMHg5MjRDLCAweDkyNTYsIDB4OTIzMiwKKyAgICAweDk1OUYsIDB4OTU5QywgMHg5NTlFLCAweDk1OUIsIDB4OTY5MiwgMHg5NjkzLCAweDk2OTEsIDB4OTY5NywKKyAgICAweDk2Q0UsIDB4OTZGQSwgMHg5NkZELCAweDk2RjgsIDB4OTZGNSwgMHg5NzczLCAweDk3NzcsIDB4OTc3OCwKKyAgICAweDk3NzIsIDB4OTgwRiwgMHg5ODBELCAweDk4MEUsIDB4OThBQywgMHg5OEY2LCAweDk4RjksIDB4OTlBRiwKKyAgICAweDk5QjIsIDB4OTlCMCwgMHg5OUI1LCAweDlBQUQsIDB4OUFBQiwgMHg5QjVCLCAweDlDRUEsIDB4OUNFRCwKKyAgICAweDlDRTcsIDB4OUU4MCwgMHg5RUZELCAweDUwRTYsIDB4NTBENCwgMHg1MEQ3LCAweDUwRTgsIDB4NTBGMywKKyAgICAweDUwREIsIDB4NTBFQSwgMHg1MERELCAweDUwRTQsIDB4NTBEMywgMHg1MEVDLCAweDUwRjAsIDB4NTBFRiwKKyAgICAweDUwRTMsIDB4NTBFMCwgMHg1MUQ4LCAweDUyODAsIDB4NTI4MSwgMHg1MkU5LCAweDUyRUIsIDB4NTMzMCwKKyAgICAweDUzQUMsIDB4NTYyNywgMHg1NjE1LCAweDU2MEMsIDB4NTYxMiwgMHg1NUZDLCAweDU2MEYsIDB4NTYxQywKKyAgICAweDU2MDEsIDB4NTYxMywgMHg1NjAyLCAweDU1RkEsIDB4NTYxRCwgMHg1NjA0LCAweDU1RkYsIDB4NTVGOSwKKyAgICAweDU4ODksIDB4NTg3QywgMHg1ODkwLCAweDU4OTgsIDB4NTg4NiwgMHg1ODgxLCAweDU4N0YsIDB4NTg3NCwKKyAgICAweDU4OEIsIDB4NTg3QSwgMHg1ODg3LCAweDU4OTEsIDB4NTg4RSwgMHg1ODc2LCAweDU4ODIsIDB4NTg4OCwKKyAgICAweDU4N0IsIDB4NTg5NCwgMHg1ODhGLCAweDU4RkUsIDB4NTk2QiwgMHg1QURDLCAweDVBRUUsIDB4NUFFNSwKKyAgICAweDVBRDUsIDB4NUFFQSwgMHg1QURBLCAweDVBRUQsIDB4NUFFQiwgMHg1QUYzLCAweDVBRTIsIDB4NUFFMCwKKyAgICAweDVBREIsIDB4NUFFQywgMHg1QURFLCAweDVBREQsIDB4NUFEOSwgMHg1QUU4LCAweDVBREYsIDB4NUI3NywKKyAgICAweDVCRTAsIDB4NUJFMywgMHg1QzYzLCAweDVEODIsIDB4NUQ4MCwgMHg1RDdELCAweDVEODYsIDB4NUQ3QSwKKyAgICAweDVEODEsIDB4NUQ3NywgMHg1RDhBLCAweDVEODksIDB4NUQ4OCwgMHg1RDdFLCAweDVEN0MsIDB4NUQ4RCwKKyAgICAweDVENzksIDB4NUQ3RiwgMHg1RTU4LCAweDVFNTksIDB4NUU1MywgMHg1RUQ4LCAweDVFRDEsIDB4NUVENywKKyAgICAweDVFQ0UsIDB4NUVEQywgMHg1RUQ1LCAweDVFRDksIDB4NUVEMiwgMHg1RUQ0LCAweDVGNDQsIDB4NUY0MywKKyAgICAweDVGNkYsIDB4NUZCNiwgMHg2MTJDLCAweDYxMjgsIDB4NjE0MSwgMHg2MTVFLCAweDYxNzEsIDB4NjE3MywKKyAgICAweDYxNTIsIDB4NjE1MywgMHg2MTcyLCAweDYxNkMsIDB4NjE4MCwgMHg2MTc0LCAweDYxNTQsIDB4NjE3QSwKKyAgICAweDYxNUIsIDB4NjE2NSwgMHg2MTNCLCAweDYxNkEsIDB4NjE2MSwgMHg2MTU2LCAweDYyMjksIDB4NjIyNywKKyAgICAweDYyMkIsIDB4NjQyQiwgMHg2NDRELCAweDY0NUIsIDB4NjQ1RCwgMHg2NDc0LCAweDY0NzYsIDB4NjQ3MiwKKyAgICAweDY0NzMsIDB4NjQ3RCwgMHg2NDc1LCAweDY0NjYsIDB4NjRBNiwgMHg2NDRFLCAweDY0ODIsIDB4NjQ1RSwKKyAgICAweDY0NUMsIDB4NjQ0QiwgMHg2NDUzLCAweDY0NjAsIDB4NjQ1MCwgMHg2NDdGLCAweDY0M0YsIDB4NjQ2QywKKyAgICAweDY0NkIsIDB4NjQ1OSwgMHg2NDY1LCAweDY0NzcsIDB4NjU3MywgMHg2NUEwLCAweDY2QTEsIDB4NjZBMCwKKyAgICAweDY2OUYsIDB4NjcwNSwgMHg2NzA0LCAweDY3MjIsIDB4NjlCMSwgMHg2OUI2LCAweDY5QzksIDB4NjlBMCwKKyAgICAweDY5Q0UsIDB4Njk5NiwgMHg2OUIwLCAweDY5QUMsIDB4NjlCQywgMHg2OTkxLCAweDY5OTksIDB4Njk4RSwKKyAgICAweDY5QTcsIDB4Njk4RCwgMHg2OUE5LCAweDY5QkUsIDB4NjlBRiwgMHg2OUJGLCAweDY5QzQsIDB4NjlCRCwKKyAgICAweDY5QTQsIDB4NjlENCwgMHg2OUI5LCAweDY5Q0EsIDB4Njk5QSwgMHg2OUNGLCAweDY5QjMsIDB4Njk5MywKKyAgICAweDY5QUEsIDB4NjlBMSwgMHg2OTlFLCAweDY5RDksIDB4Njk5NywgMHg2OTkwLCAweDY5QzIsIDB4NjlCNSwKKyAgICAweDY5QTUsIDB4NjlDNiwgMHg2QjRBLCAweDZCNEQsIDB4NkI0QiwgMHg2QjlFLCAweDZCOUYsIDB4NkJBMCwKKyAgICAweDZCQzMsIDB4NkJDNCwgMHg2QkZFLCAweDZFQ0UsIDB4NkVGNSwgMHg2RUYxLCAweDZGMDMsIDB4NkYyNSwKKyAgICAweDZFRjgsIDB4NkYzNywgMHg2RUZCLCAweDZGMkUsIDB4NkYwOSwgMHg2RjRFLCAweDZGMTksIDB4NkYxQSwKKyAgICAweDZGMjcsIDB4NkYxOCwgMHg2RjNCLCAweDZGMTIsIDB4NkVFRCwgMHg2RjBBLCAweDZGMzYsIDB4NkY3MywKKyAgICAweDZFRjksIDB4NkVFRSwgMHg2RjJELCAweDZGNDAsIDB4NkYzMCwgMHg2RjNDLCAweDZGMzUsIDB4NkVFQiwKKyAgICAweDZGMDcsIDB4NkYwRSwgMHg2RjQzLCAweDZGMDUsIDB4NkVGRCwgMHg2RUY2LCAweDZGMzksIDB4NkYxQywKKyAgICAweDZFRkMsIDB4NkYzQSwgMHg2RjFGLCAweDZGMEQsIDB4NkYxRSwgMHg2RjA4LCAweDZGMjEsIDB4NzE4NywKKyAgICAweDcxOTAsIDB4NzE4OSwgMHg3MTgwLCAweDcxODUsIDB4NzE4MiwgMHg3MThGLCAweDcxN0IsIDB4NzE4NiwKKyAgICAweDcxODEsIDB4NzE5NywgMHg3MjQ0LCAweDcyNTMsIDB4NzI5NywgMHg3Mjk1LCAweDcyOTMsIDB4NzM0MywKKyAgICAweDczNEQsIDB4NzM1MSwgMHg3MzRDLCAweDc0NjIsIDB4NzQ3MywgMHg3NDcxLCAweDc0NzUsIDB4NzQ3MiwKKyAgICAweDc0NjcsIDB4NzQ2RSwgMHg3NTAwLCAweDc1MDIsIDB4NzUwMywgMHg3NTdELCAweDc1OTAsIDB4NzYxNiwKKyAgICAweDc2MDgsIDB4NzYwQywgMHg3NjE1LCAweDc2MTEsIDB4NzYwQSwgMHg3NjE0LCAweDc2QjgsIDB4Nzc4MSwKKyAgICAweDc3N0MsIDB4Nzc4NSwgMHg3NzgyLCAweDc3NkUsIDB4Nzc4MCwgMHg3NzZGLCAweDc3N0UsIDB4Nzc4MywKKyAgICAweDc4QjIsIDB4NzhBQSwgMHg3OEI0LCAweDc4QUQsIDB4NzhBOCwgMHg3ODdFLCAweDc4QUIsIDB4Nzg5RSwKKyAgICAweDc4QTUsIDB4NzhBMCwgMHg3OEFDLCAweDc4QTIsIDB4NzhBNCwgMHg3OTk4LCAweDc5OEEsIDB4Nzk4QiwKKyAgICAweDc5OTYsIDB4Nzk5NSwgMHg3OTk0LCAweDc5OTMsIDB4Nzk5NywgMHg3OTg4LCAweDc5OTIsIDB4Nzk5MCwKKyAgICAweDdBMkIsIDB4N0E0QSwgMHg3QTMwLCAweDdBMkYsIDB4N0EyOCwgMHg3QTI2LCAweDdBQTgsIDB4N0FBQiwKKyAgICAweDdBQUMsIDB4N0FFRSwgMHg3Qjg4LCAweDdCOUMsIDB4N0I4QSwgMHg3QjkxLCAweDdCOTAsIDB4N0I5NiwKKyAgICAweDdCOEQsIDB4N0I4QywgMHg3QjlCLCAweDdCOEUsIDB4N0I4NSwgMHg3Qjk4LCAweDUyODQsIDB4N0I5OSwKKyAgICAweDdCQTQsIDB4N0I4MiwgMHg3Q0JCLCAweDdDQkYsIDB4N0NCQywgMHg3Q0JBLCAweDdEQTcsIDB4N0RCNywKKyAgICAweDdEQzIsIDB4N0RBMywgMHg3REFBLCAweDdEQzEsIDB4N0RDMCwgMHg3REM1LCAweDdEOUQsIDB4N0RDRSwKKyAgICAweDdEQzQsIDB4N0RDNiwgMHg3RENCLCAweDdEQ0MsIDB4N0RBRiwgMHg3REI5LCAweDdEOTYsIDB4N0RCQywKKyAgICAweDdEOUYsIDB4N0RBNiwgMHg3REFFLCAweDdEQTksIDB4N0RBMSwgMHg3REM5LCAweDdGNzMsIDB4N0ZFMiwKKyAgICAweDdGRTMsIDB4N0ZFNSwgMHg3RkRFLCAweDgwMjQsIDB4ODA1RCwgMHg4MDVDLCAweDgxODksIDB4ODE4NiwKKyAgICAweDgxODMsIDB4ODE4NywgMHg4MThELCAweDgxOEMsIDB4ODE4QiwgMHg4MjE1LCAweDg0OTcsIDB4ODRBNCwKKyAgICAweDg0QTEsIDB4ODQ5RiwgMHg4NEJBLCAweDg0Q0UsIDB4ODRDMiwgMHg4NEFDLCAweDg0QUUsIDB4ODRBQiwKKyAgICAweDg0QjksIDB4ODRCNCwgMHg4NEMxLCAweDg0Q0QsIDB4ODRBQSwgMHg4NDlBLCAweDg0QjEsIDB4ODREMCwKKyAgICAweDg0OUQsIDB4ODRBNywgMHg4NEJCLCAweDg0QTIsIDB4ODQ5NCwgMHg4NEM3LCAweDg0Q0MsIDB4ODQ5QiwKKyAgICAweDg0QTksIDB4ODRBRiwgMHg4NEE4LCAweDg0RDYsIDB4ODQ5OCwgMHg4NEI2LCAweDg0Q0YsIDB4ODRBMCwKKyAgICAweDg0RDcsIDB4ODRENCwgMHg4NEQyLCAweDg0REIsIDB4ODRCMCwgMHg4NDkxLCAweDg2NjEsIDB4ODczMywKKyAgICAweDg3MjMsIDB4ODcyOCwgMHg4NzZCLCAweDg3NDAsIDB4ODcyRSwgMHg4NzFFLCAweDg3MjEsIDB4ODcxOSwKKyAgICAweDg3MUIsIDB4ODc0MywgMHg4NzJDLCAweDg3NDEsIDB4ODczRSwgMHg4NzQ2LCAweDg3MjAsIDB4ODczMiwKKyAgICAweDg3MkEsIDB4ODcyRCwgMHg4NzNDLCAweDg3MTIsIDB4ODczQSwgMHg4NzMxLCAweDg3MzUsIDB4ODc0MiwKKyAgICAweDg3MjYsIDB4ODcyNywgMHg4NzM4LCAweDg3MjQsIDB4ODcxQSwgMHg4NzMwLCAweDg3MTEsIDB4ODhGNywKKyAgICAweDg4RTcsIDB4ODhGMSwgMHg4OEYyLCAweDg4RkEsIDB4ODhGRSwgMHg4OEVFLCAweDg4RkMsIDB4ODhGNiwKKyAgICAweDg4RkIsIDB4ODhGMCwgMHg4OEVDLCAweDg4RUIsIDB4ODk5RCwgMHg4OUExLCAweDg5OUYsIDB4ODk5RSwKKyAgICAweDg5RTksIDB4ODlFQiwgMHg4OUU4LCAweDhBQUIsIDB4OEE5OSwgMHg4QThCLCAweDhBOTIsIDB4OEE4RiwKKyAgICAweDhBOTYsIDB4OEMzRCwgMHg4QzY4LCAweDhDNjksIDB4OENENSwgMHg4Q0NGLCAweDhDRDcsIDB4OEQ5NiwKKyAgICAweDhFMDksIDB4OEUwMiwgMHg4REZGLCAweDhFMEQsIDB4OERGRCwgMHg4RTBBLCAweDhFMDMsIDB4OEUwNywKKyAgICAweDhFMDYsIDB4OEUwNSwgMHg4REZFLCAweDhFMDAsIDB4OEUwNCwgMHg4RjEwLCAweDhGMTEsIDB4OEYwRSwKKyAgICAweDhGMEQsIDB4OTEyMywgMHg5MTFDLCAweDkxMjAsIDB4OTEyMiwgMHg5MTFGLCAweDkxMUQsIDB4OTExQSwKKyAgICAweDkxMjQsIDB4OTEyMSwgMHg5MTFCLCAweDkxN0EsIDB4OTE3MiwgMHg5MTc5LCAweDkxNzMsIDB4OTJBNSwKKyAgICAweDkyQTQsIDB4OTI3NiwgMHg5MjlCLCAweDkyN0EsIDB4OTJBMCwgMHg5Mjk0LCAweDkyQUEsIDB4OTI4RCwKKyAgICAweDkyQTYsIDB4OTI5QSwgMHg5MkFCLCAweDkyNzksIDB4OTI5NywgMHg5MjdGLCAweDkyQTMsIDB4OTJFRSwKKyAgICAweDkyOEUsIDB4OTI4MiwgMHg5Mjk1LCAweDkyQTIsIDB4OTI3RCwgMHg5Mjg4LCAweDkyQTEsIDB4OTI4QSwKKyAgICAweDkyODYsIDB4OTI4QywgMHg5Mjk5LCAweDkyQTcsIDB4OTI3RSwgMHg5Mjg3LCAweDkyQTksIDB4OTI5RCwKKyAgICAweDkyOEIsIDB4OTIyRCwgMHg5NjlFLCAweDk2QTEsIDB4OTZGRiwgMHg5NzU4LCAweDk3N0QsIDB4OTc3QSwKKyAgICAweDk3N0UsIDB4OTc4MywgMHg5NzgwLCAweDk3ODIsIDB4OTc3QiwgMHg5Nzg0LCAweDk3ODEsIDB4OTc3RiwKKyAgICAweDk3Q0UsIDB4OTdDRCwgMHg5ODE2LCAweDk4QUQsIDB4OThBRSwgMHg5OTAyLCAweDk5MDAsIDB4OTkwNywKKyAgICAweDk5OUQsIDB4OTk5QywgMHg5OUMzLCAweDk5QjksIDB4OTlCQiwgMHg5OUJBLCAweDk5QzIsIDB4OTlCRCwKKyAgICAweDk5QzcsIDB4OUFCMSwgMHg5QUUzLCAweDlBRTcsIDB4OUIzRSwgMHg5QjNGLCAweDlCNjAsIDB4OUI2MSwKKyAgICAweDlCNUYsIDB4OUNGMSwgMHg5Q0YyLCAweDlDRjUsIDB4OUVBNywgMHg1MEZGLCAweDUxMDMsIDB4NTEzMCwKKyAgICAweDUwRjgsIDB4NTEwNiwgMHg1MTA3LCAweDUwRjYsIDB4NTBGRSwgMHg1MTBCLCAweDUxMEMsIDB4NTBGRCwKKyAgICAweDUxMEEsIDB4NTI4QiwgMHg1MjhDLCAweDUyRjEsIDB4NTJFRiwgMHg1NjQ4LCAweDU2NDIsIDB4NTY0QywKKyAgICAweDU2MzUsIDB4NTY0MSwgMHg1NjRBLCAweDU2NDksIDB4NTY0NiwgMHg1NjU4LCAweDU2NUEsIDB4NTY0MCwKKyAgICAweDU2MzMsIDB4NTYzRCwgMHg1NjJDLCAweDU2M0UsIDB4NTYzOCwgMHg1NjJBLCAweDU2M0EsIDB4NTcxQSwKKyAgICAweDU4QUIsIDB4NTg5RCwgMHg1OEIxLCAweDU4QTAsIDB4NThBMywgMHg1OEFGLCAweDU4QUMsIDB4NThBNSwKKyAgICAweDU4QTEsIDB4NThGRiwgMHg1QUZGLCAweDVBRjQsIDB4NUFGRCwgMHg1QUY3LCAweDVBRjYsIDB4NUIwMywKKyAgICAweDVBRjgsIDB4NUIwMiwgMHg1QUY5LCAweDVCMDEsIDB4NUIwNywgMHg1QjA1LCAweDVCMEYsIDB4NUM2NywKKyAgICAweDVEOTksIDB4NUQ5NywgMHg1RDlGLCAweDVEOTIsIDB4NURBMiwgMHg1RDkzLCAweDVEOTUsIDB4NURBMCwKKyAgICAweDVEOUMsIDB4NURBMSwgMHg1RDlBLCAweDVEOUUsIDB4NUU2OSwgMHg1RTVELCAweDVFNjAsIDB4NUU1QywKKyAgICAweDdERjMsIDB4NUVEQiwgMHg1RURFLCAweDVFRTEsIDB4NUY0OSwgMHg1RkIyLCAweDYxOEIsIDB4NjE4MywKKyAgICAweDYxNzksIDB4NjFCMSwgMHg2MUIwLCAweDYxQTIsIDB4NjE4OSwgMHg2MTlCLCAweDYxOTMsIDB4NjFBRiwKKyAgICAweDYxQUQsIDB4NjE5RiwgMHg2MTkyLCAweDYxQUEsIDB4NjFBMSwgMHg2MThELCAweDYxNjYsIDB4NjFCMywKKyAgICAweDYyMkQsIDB4NjQ2RSwgMHg2NDcwLCAweDY0OTYsIDB4NjRBMCwgMHg2NDg1LCAweDY0OTcsIDB4NjQ5QywKKyAgICAweDY0OEYsIDB4NjQ4QiwgMHg2NDhBLCAweDY0OEMsIDB4NjRBMywgMHg2NDlGLCAweDY0NjgsIDB4NjRCMSwKKyAgICAweDY0OTgsIDB4NjU3NiwgMHg2NTdBLCAweDY1NzksIDB4NjU3QiwgMHg2NUIyLCAweDY1QjMsIDB4NjZCNSwKKyAgICAweDY2QjAsIDB4NjZBOSwgMHg2NkIyLCAweDY2QjcsIDB4NjZBQSwgMHg2NkFGLCAweDZBMDAsIDB4NkEwNiwKKyAgICAweDZBMTcsIDB4NjlFNSwgMHg2OUY4LCAweDZBMTUsIDB4NjlGMSwgMHg2OUU0LCAweDZBMjAsIDB4NjlGRiwKKyAgICAweDY5RUMsIDB4NjlFMiwgMHg2QTFCLCAweDZBMUQsIDB4NjlGRSwgMHg2QTI3LCAweDY5RjIsIDB4NjlFRSwKKyAgICAweDZBMTQsIDB4NjlGNywgMHg2OUU3LCAweDZBNDAsIDB4NkEwOCwgMHg2OUU2LCAweDY5RkIsIDB4NkEwRCwKKyAgICAweDY5RkMsIDB4NjlFQiwgMHg2QTA5LCAweDZBMDQsIDB4NkExOCwgMHg2QTI1LCAweDZBMEYsIDB4NjlGNiwKKyAgICAweDZBMjYsIDB4NkEwNywgMHg2OUY0LCAweDZBMTYsIDB4NkI1MSwgMHg2QkE1LCAweDZCQTMsIDB4NkJBMiwKKyAgICAweDZCQTYsIDB4NkMwMSwgMHg2QzAwLCAweDZCRkYsIDB4NkMwMiwgMHg2RjQxLCAweDZGMjYsIDB4NkY3RSwKKyAgICAweDZGODcsIDB4NkZDNiwgMHg2RjkyLCAweDZGOEQsIDB4NkY4OSwgMHg2RjhDLCAweDZGNjIsIDB4NkY0RiwKKyAgICAweDZGODUsIDB4NkY1QSwgMHg2Rjk2LCAweDZGNzYsIDB4NkY2QywgMHg2RjgyLCAweDZGNTUsIDB4NkY3MiwKKyAgICAweDZGNTIsIDB4NkY1MCwgMHg2RjU3LCAweDZGOTQsIDB4NkY5MywgMHg2RjVELCAweDZGMDAsIDB4NkY2MSwKKyAgICAweDZGNkIsIDB4NkY3RCwgMHg2RjY3LCAweDZGOTAsIDB4NkY1MywgMHg2RjhCLCAweDZGNjksIDB4NkY3RiwKKyAgICAweDZGOTUsIDB4NkY2MywgMHg2Rjc3LCAweDZGNkEsIDB4NkY3QiwgMHg3MUIyLCAweDcxQUYsIDB4NzE5QiwKKyAgICAweDcxQjAsIDB4NzFBMCwgMHg3MTlBLCAweDcxQTksIDB4NzFCNSwgMHg3MTlELCAweDcxQTUsIDB4NzE5RSwKKyAgICAweDcxQTQsIDB4NzFBMSwgMHg3MUFBLCAweDcxOUMsIDB4NzFBNywgMHg3MUIzLCAweDcyOTgsIDB4NzI5QSwKKyAgICAweDczNTgsIDB4NzM1MiwgMHg3MzVFLCAweDczNUYsIDB4NzM2MCwgMHg3MzVELCAweDczNUIsIDB4NzM2MSwKKyAgICAweDczNUEsIDB4NzM1OSwgMHg3MzYyLCAweDc0ODcsIDB4NzQ4OSwgMHg3NDhBLCAweDc0ODYsIDB4NzQ4MSwKKyAgICAweDc0N0QsIDB4NzQ4NSwgMHg3NDg4LCAweDc0N0MsIDB4NzQ3OSwgMHg3NTA4LCAweDc1MDcsIDB4NzU3RSwKKyAgICAweDc2MjUsIDB4NzYxRSwgMHg3NjE5LCAweDc2MUQsIDB4NzYxQywgMHg3NjIzLCAweDc2MUEsIDB4NzYyOCwKKyAgICAweDc2MUIsIDB4NzY5QywgMHg3NjlELCAweDc2OUUsIDB4NzY5QiwgMHg3NzhELCAweDc3OEYsIDB4Nzc4OSwKKyAgICAweDc3ODgsIDB4NzhDRCwgMHg3OEJCLCAweDc4Q0YsIDB4NzhDQywgMHg3OEQxLCAweDc4Q0UsIDB4NzhENCwKKyAgICAweDc4QzgsIDB4NzhDMywgMHg3OEM0LCAweDc4QzksIDB4Nzk5QSwgMHg3OUExLCAweDc5QTAsIDB4Nzk5QywKKyAgICAweDc5QTIsIDB4Nzk5QiwgMHg2Qjc2LCAweDdBMzksIDB4N0FCMiwgMHg3QUI0LCAweDdBQjMsIDB4N0JCNywKKyAgICAweDdCQ0IsIDB4N0JCRSwgMHg3QkFDLCAweDdCQ0UsIDB4N0JBRiwgMHg3QkI5LCAweDdCQ0EsIDB4N0JCNSwKKyAgICAweDdDQzUsIDB4N0NDOCwgMHg3Q0NDLCAweDdDQ0IsIDB4N0RGNywgMHg3RERCLCAweDdERUEsIDB4N0RFNywKKyAgICAweDdERDcsIDB4N0RFMSwgMHg3RTAzLCAweDdERkEsIDB4N0RFNiwgMHg3REY2LCAweDdERjEsIDB4N0RGMCwKKyAgICAweDdERUUsIDB4N0RERiwgMHg3Rjc2LCAweDdGQUMsIDB4N0ZCMCwgMHg3RkFELCAweDdGRUQsIDB4N0ZFQiwKKyAgICAweDdGRUEsIDB4N0ZFQywgMHg3RkU2LCAweDdGRTgsIDB4ODA2NCwgMHg4MDY3LCAweDgxQTMsIDB4ODE5RiwKKyAgICAweDgxOUUsIDB4ODE5NSwgMHg4MUEyLCAweDgxOTksIDB4ODE5NywgMHg4MjE2LCAweDgyNEYsIDB4ODI1MywKKyAgICAweDgyNTIsIDB4ODI1MCwgMHg4MjRFLCAweDgyNTEsIDB4ODUyNCwgMHg4NTNCLCAweDg1MEYsIDB4ODUwMCwKKyAgICAweDg1MjksIDB4ODUwRSwgMHg4NTA5LCAweDg1MEQsIDB4ODUxRiwgMHg4NTBBLCAweDg1MjcsIDB4ODUxQywKKyAgICAweDg0RkIsIDB4ODUyQiwgMHg4NEZBLCAweDg1MDgsIDB4ODUwQywgMHg4NEY0LCAweDg1MkEsIDB4ODRGMiwKKyAgICAweDg1MTUsIDB4ODRGNywgMHg4NEVCLCAweDg0RjMsIDB4ODRGQywgMHg4NTEyLCAweDg0RUEsIDB4ODRFOSwKKyAgICAweDg1MTYsIDB4ODRGRSwgMHg4NTI4LCAweDg1MUQsIDB4ODUyRSwgMHg4NTAyLCAweDg0RkQsIDB4ODUxRSwKKyAgICAweDg0RjYsIDB4ODUzMSwgMHg4NTI2LCAweDg0RTcsIDB4ODRFOCwgMHg4NEYwLCAweDg0RUYsIDB4ODRGOSwKKyAgICAweDg1MTgsIDB4ODUyMCwgMHg4NTMwLCAweDg1MEIsIDB4ODUxOSwgMHg4NTJGLCAweDg2NjIsIDB4ODc1NiwKKyAgICAweDg3NjMsIDB4ODc2NCwgMHg4Nzc3LCAweDg3RTEsIDB4ODc3MywgMHg4NzU4LCAweDg3NTQsIDB4ODc1QiwKKyAgICAweDg3NTIsIDB4ODc2MSwgMHg4NzVBLCAweDg3NTEsIDB4ODc1RSwgMHg4NzZELCAweDg3NkEsIDB4ODc1MCwKKyAgICAweDg3NEUsIDB4ODc1RiwgMHg4NzVELCAweDg3NkYsIDB4ODc2QywgMHg4NzdBLCAweDg3NkUsIDB4ODc1QywKKyAgICAweDg3NjUsIDB4ODc0RiwgMHg4NzdCLCAweDg3NzUsIDB4ODc2MiwgMHg4NzY3LCAweDg3NjksIDB4ODg1QSwKKyAgICAweDg5MDUsIDB4ODkwQywgMHg4OTE0LCAweDg5MEIsIDB4ODkxNywgMHg4OTE4LCAweDg5MTksIDB4ODkwNiwKKyAgICAweDg5MTYsIDB4ODkxMSwgMHg4OTBFLCAweDg5MDksIDB4ODlBMiwgMHg4OUE0LCAweDg5QTMsIDB4ODlFRCwKKyAgICAweDg5RjAsIDB4ODlFQywgMHg4QUNGLCAweDhBQzYsIDB4OEFCOCwgMHg4QUQzLCAweDhBRDEsIDB4OEFENCwKKyAgICAweDhBRDUsIDB4OEFCQiwgMHg4QUQ3LCAweDhBQkUsIDB4OEFDMCwgMHg4QUM1LCAweDhBRDgsIDB4OEFDMywKKyAgICAweDhBQkEsIDB4OEFCRCwgMHg4QUQ5LCAweDhDM0UsIDB4OEM0RCwgMHg4QzhGLCAweDhDRTUsIDB4OENERiwKKyAgICAweDhDRDksIDB4OENFOCwgMHg4Q0RBLCAweDhDREQsIDB4OENFNywgMHg4REEwLCAweDhEOUMsIDB4OERBMSwKKyAgICAweDhEOUIsIDB4OEUyMCwgMHg4RTIzLCAweDhFMjUsIDB4OEUyNCwgMHg4RTJFLCAweDhFMTUsIDB4OEUxQiwKKyAgICAweDhFMTYsIDB4OEUxMSwgMHg4RTE5LCAweDhFMjYsIDB4OEUyNywgMHg4RTE0LCAweDhFMTIsIDB4OEUxOCwKKyAgICAweDhFMTMsIDB4OEUxQywgMHg4RTE3LCAweDhFMUEsIDB4OEYyQywgMHg4RjI0LCAweDhGMTgsIDB4OEYxQSwKKyAgICAweDhGMjAsIDB4OEYyMywgMHg4RjE2LCAweDhGMTcsIDB4OTA3MywgMHg5MDcwLCAweDkwNkYsIDB4OTA2NywKKyAgICAweDkwNkIsIDB4OTEyRiwgMHg5MTJCLCAweDkxMjksIDB4OTEyQSwgMHg5MTMyLCAweDkxMjYsIDB4OTEyRSwKKyAgICAweDkxODUsIDB4OTE4NiwgMHg5MThBLCAweDkxODEsIDB4OTE4MiwgMHg5MTg0LCAweDkxODAsIDB4OTJEMCwKKyAgICAweDkyQzMsIDB4OTJDNCwgMHg5MkMwLCAweDkyRDksIDB4OTJCNiwgMHg5MkNGLCAweDkyRjEsIDB4OTJERiwKKyAgICAweDkyRDgsIDB4OTJFOSwgMHg5MkQ3LCAweDkyREQsIDB4OTJDQywgMHg5MkVGLCAweDkyQzIsIDB4OTJFOCwKKyAgICAweDkyQ0EsIDB4OTJDOCwgMHg5MkNFLCAweDkyRTYsIDB4OTJDRCwgMHg5MkQ1LCAweDkyQzksIDB4OTJFMCwKKyAgICAweDkyREUsIDB4OTJFNywgMHg5MkQxLCAweDkyRDMsIDB4OTJCNSwgMHg5MkUxLCAweDkzMjUsIDB4OTJDNiwKKyAgICAweDkyQjQsIDB4OTU3QywgMHg5NUFDLCAweDk1QUIsIDB4OTVBRSwgMHg5NUIwLCAweDk2QTQsIDB4OTZBMiwKKyAgICAweDk2RDMsIDB4OTcwNSwgMHg5NzA4LCAweDk3MDIsIDB4OTc1QSwgMHg5NzhBLCAweDk3OEUsIDB4OTc4OCwKKyAgICAweDk3RDAsIDB4OTdDRiwgMHg5ODFFLCAweDk4MUQsIDB4OTgyNiwgMHg5ODI5LCAweDk4MjgsIDB4OTgyMCwKKyAgICAweDk4MUIsIDB4OTgyNywgMHg5OEIyLCAweDk5MDgsIDB4OThGQSwgMHg5OTExLCAweDk5MTQsIDB4OTkxNiwKKyAgICAweDk5MTcsIDB4OTkxNSwgMHg5OURDLCAweDk5Q0QsIDB4OTlDRiwgMHg5OUQzLCAweDk5RDQsIDB4OTlDRSwKKyAgICAweDk5QzksIDB4OTlENiwgMHg5OUQ4LCAweDk5Q0IsIDB4OTlENywgMHg5OUNDLCAweDlBQjMsIDB4OUFFQywKKyAgICAweDlBRUIsIDB4OUFGMywgMHg5QUYyLCAweDlBRjEsIDB4OUI0NiwgMHg5QjQzLCAweDlCNjcsIDB4OUI3NCwKKyAgICAweDlCNzEsIDB4OUI2NiwgMHg5Qjc2LCAweDlCNzUsIDB4OUI3MCwgMHg5QjY4LCAweDlCNjQsIDB4OUI2QywKKyAgICAweDlDRkMsIDB4OUNGQSwgMHg5Q0ZELCAweDlDRkYsIDB4OUNGNywgMHg5RDA3LCAweDlEMDAsIDB4OUNGOSwKKyAgICAweDlDRkIsIDB4OUQwOCwgMHg5RDA1LCAweDlEMDQsIDB4OUU4MywgMHg5RUQzLCAweDlGMEYsIDB4OUYxMCwKKyAgICAweDUxMUMsIDB4NTExMywgMHg1MTE3LCAweDUxMUEsIDB4NTExMSwgMHg1MURFLCAweDUzMzQsIDB4NTNFMSwKKyAgICAweDU2NzAsIDB4NTY2MCwgMHg1NjZFLCAweDU2NzMsIDB4NTY2NiwgMHg1NjYzLCAweDU2NkQsIDB4NTY3MiwKKyAgICAweDU2NUUsIDB4NTY3NywgMHg1NzFDLCAweDU3MUIsIDB4NThDOCwgMHg1OEJELCAweDU4QzksIDB4NThCRiwKKyAgICAweDU4QkEsIDB4NThDMiwgMHg1OEJDLCAweDU4QzYsIDB4NUIxNywgMHg1QjE5LCAweDVCMUIsIDB4NUIyMSwKKyAgICAweDVCMTQsIDB4NUIxMywgMHg1QjEwLCAweDVCMTYsIDB4NUIyOCwgMHg1QjFBLCAweDVCMjAsIDB4NUIxRSwKKyAgICAweDVCRUYsIDB4NURBQywgMHg1REIxLCAweDVEQTksIDB4NURBNywgMHg1REI1LCAweDVEQjAsIDB4NURBRSwKKyAgICAweDVEQUEsIDB4NURBOCwgMHg1REIyLCAweDVEQUQsIDB4NURBRiwgMHg1REI0LCAweDVFNjcsIDB4NUU2OCwKKyAgICAweDVFNjYsIDB4NUU2RiwgMHg1RUU5LCAweDVFRTcsIDB4NUVFNiwgMHg1RUU4LCAweDVFRTUsIDB4NUY0QiwKKyAgICAweDVGQkMsIDB4NUZCQiwgMHg2MTlELCAweDYxQTgsIDB4NjE5NiwgMHg2MUM1LCAweDYxQjQsIDB4NjFDNiwKKyAgICAweDYxQzEsIDB4NjFDQywgMHg2MUJBLCAweDYxQkYsIDB4NjFCOCwgMHg2MThDLCAweDY0RDcsIDB4NjRENiwKKyAgICAweDY0RDAsIDB4NjRDRiwgMHg2NEM5LCAweDY0QkQsIDB4NjQ4OSwgMHg2NEMzLCAweDY0REIsIDB4NjRGMywKKyAgICAweDY0RDksIDB4NjUzMywgMHg2NTdGLCAweDY1N0MsIDB4NjVBMiwgMHg2NkM4LCAweDY2QkUsIDB4NjZDMCwKKyAgICAweDY2Q0EsIDB4NjZDQiwgMHg2NkNGLCAweDY2QkQsIDB4NjZCQiwgMHg2NkJBLCAweDY2Q0MsIDB4NjcyMywKKyAgICAweDZBMzQsIDB4NkE2NiwgMHg2QTQ5LCAweDZBNjcsIDB4NkEzMiwgMHg2QTY4LCAweDZBM0UsIDB4NkE1RCwKKyAgICAweDZBNkQsIDB4NkE3NiwgMHg2QTVCLCAweDZBNTEsIDB4NkEyOCwgMHg2QTVBLCAweDZBM0IsIDB4NkEzRiwKKyAgICAweDZBNDEsIDB4NkE2QSwgMHg2QTY0LCAweDZBNTAsIDB4NkE0RiwgMHg2QTU0LCAweDZBNkYsIDB4NkE2OSwKKyAgICAweDZBNjAsIDB4NkEzQywgMHg2QTVFLCAweDZBNTYsIDB4NkE1NSwgMHg2QTRELCAweDZBNEUsIDB4NkE0NiwKKyAgICAweDZCNTUsIDB4NkI1NCwgMHg2QjU2LCAweDZCQTcsIDB4NkJBQSwgMHg2QkFCLCAweDZCQzgsIDB4NkJDNywKKyAgICAweDZDMDQsIDB4NkMwMywgMHg2QzA2LCAweDZGQUQsIDB4NkZDQiwgMHg2RkEzLCAweDZGQzcsIDB4NkZCQywKKyAgICAweDZGQ0UsIDB4NkZDOCwgMHg2RjVFLCAweDZGQzQsIDB4NkZCRCwgMHg2RjlFLCAweDZGQ0EsIDB4NkZBOCwKKyAgICAweDcwMDQsIDB4NkZBNSwgMHg2RkFFLCAweDZGQkEsIDB4NkZBQywgMHg2RkFBLCAweDZGQ0YsIDB4NkZCRiwKKyAgICAweDZGQjgsIDB4NkZBMiwgMHg2RkM5LCAweDZGQUIsIDB4NkZDRCwgMHg2RkFGLCAweDZGQjIsIDB4NkZCMCwKKyAgICAweDcxQzUsIDB4NzFDMiwgMHg3MUJGLCAweDcxQjgsIDB4NzFENiwgMHg3MUMwLCAweDcxQzEsIDB4NzFDQiwKKyAgICAweDcxRDQsIDB4NzFDQSwgMHg3MUM3LCAweDcxQ0YsIDB4NzFCRCwgMHg3MUQ4LCAweDcxQkMsIDB4NzFDNiwKKyAgICAweDcxREEsIDB4NzFEQiwgMHg3MjlELCAweDcyOUUsIDB4NzM2OSwgMHg3MzY2LCAweDczNjcsIDB4NzM2QywKKyAgICAweDczNjUsIDB4NzM2QiwgMHg3MzZBLCAweDc0N0YsIDB4NzQ5QSwgMHg3NEEwLCAweDc0OTQsIDB4NzQ5MiwKKyAgICAweDc0OTUsIDB4NzRBMSwgMHg3NTBCLCAweDc1ODAsIDB4NzYyRiwgMHg3NjJELCAweDc2MzEsIDB4NzYzRCwKKyAgICAweDc2MzMsIDB4NzYzQywgMHg3NjM1LCAweDc2MzIsIDB4NzYzMCwgMHg3NkJCLCAweDc2RTYsIDB4Nzc5QSwKKyAgICAweDc3OUQsIDB4NzdBMSwgMHg3NzlDLCAweDc3OUIsIDB4NzdBMiwgMHg3N0EzLCAweDc3OTUsIDB4Nzc5OSwKKyAgICAweDc3OTcsIDB4NzhERCwgMHg3OEU5LCAweDc4RTUsIDB4NzhFQSwgMHg3OERFLCAweDc4RTMsIDB4NzhEQiwKKyAgICAweDc4RTEsIDB4NzhFMiwgMHg3OEVELCAweDc4REYsIDB4NzhFMCwgMHg3OUE0LCAweDdBNDQsIDB4N0E0OCwKKyAgICAweDdBNDcsIDB4N0FCNiwgMHg3QUI4LCAweDdBQjUsIDB4N0FCMSwgMHg3QUI3LCAweDdCREUsIDB4N0JFMywKKyAgICAweDdCRTcsIDB4N0JERCwgMHg3QkQ1LCAweDdCRTUsIDB4N0JEQSwgMHg3QkU4LCAweDdCRjksIDB4N0JENCwKKyAgICAweDdCRUEsIDB4N0JFMiwgMHg3QkRDLCAweDdCRUIsIDB4N0JEOCwgMHg3QkRGLCAweDdDRDIsIDB4N0NENCwKKyAgICAweDdDRDcsIDB4N0NEMCwgMHg3Q0QxLCAweDdFMTIsIDB4N0UyMSwgMHg3RTE3LCAweDdFMEMsIDB4N0UxRiwKKyAgICAweDdFMjAsIDB4N0UxMywgMHg3RTBFLCAweDdFMUMsIDB4N0UxNSwgMHg3RTFBLCAweDdFMjIsIDB4N0UwQiwKKyAgICAweDdFMEYsIDB4N0UxNiwgMHg3RTBELCAweDdFMTQsIDB4N0UyNSwgMHg3RTI0LCAweDdGNDMsIDB4N0Y3QiwKKyAgICAweDdGN0MsIDB4N0Y3QSwgMHg3RkIxLCAweDdGRUYsIDB4ODAyQSwgMHg4MDI5LCAweDgwNkMsIDB4ODFCMSwKKyAgICAweDgxQTYsIDB4ODFBRSwgMHg4MUI5LCAweDgxQjUsIDB4ODFBQiwgMHg4MUIwLCAweDgxQUMsIDB4ODFCNCwKKyAgICAweDgxQjIsIDB4ODFCNywgMHg4MUE3LCAweDgxRjIsIDB4ODI1NSwgMHg4MjU2LCAweDgyNTcsIDB4ODU1NiwKKyAgICAweDg1NDUsIDB4ODU2QiwgMHg4NTRELCAweDg1NTMsIDB4ODU2MSwgMHg4NTU4LCAweDg1NDAsIDB4ODU0NiwKKyAgICAweDg1NjQsIDB4ODU0MSwgMHg4NTYyLCAweDg1NDQsIDB4ODU1MSwgMHg4NTQ3LCAweDg1NjMsIDB4ODUzRSwKKyAgICAweDg1NUIsIDB4ODU3MSwgMHg4NTRFLCAweDg1NkUsIDB4ODU3NSwgMHg4NTU1LCAweDg1NjcsIDB4ODU2MCwKKyAgICAweDg1OEMsIDB4ODU2NiwgMHg4NTVELCAweDg1NTQsIDB4ODU2NSwgMHg4NTZDLCAweDg2NjMsIDB4ODY2NSwKKyAgICAweDg2NjQsIDB4ODdBNCwgMHg4NzlCLCAweDg3OEYsIDB4ODc5NywgMHg4NzkzLCAweDg3OTIsIDB4ODc4OCwKKyAgICAweDg3ODEsIDB4ODc5NiwgMHg4Nzk4LCAweDg3NzksIDB4ODc4NywgMHg4N0EzLCAweDg3ODUsIDB4ODc5MCwKKyAgICAweDg3OTEsIDB4ODc5RCwgMHg4Nzg0LCAweDg3OTQsIDB4ODc5QywgMHg4NzlBLCAweDg3ODksIDB4ODkxRSwKKyAgICAweDg5MjYsIDB4ODkzMCwgMHg4OTJELCAweDg5MkUsIDB4ODkyNywgMHg4OTMxLCAweDg5MjIsIDB4ODkyOSwKKyAgICAweDg5MjMsIDB4ODkyRiwgMHg4OTJDLCAweDg5MUYsIDB4ODlGMSwgMHg4QUUwLCAweDhBRTIsIDB4OEFGMiwKKyAgICAweDhBRjQsIDB4OEFGNSwgMHg4QURELCAweDhCMTQsIDB4OEFFNCwgMHg4QURGLCAweDhBRjAsIDB4OEFDOCwKKyAgICAweDhBREUsIDB4OEFFMSwgMHg4QUU4LCAweDhBRkYsIDB4OEFFRiwgMHg4QUZCLCAweDhDOTEsIDB4OEM5MiwKKyAgICAweDhDOTAsIDB4OENGNSwgMHg4Q0VFLCAweDhDRjEsIDB4OENGMCwgMHg4Q0YzLCAweDhENkMsIDB4OEQ2RSwKKyAgICAweDhEQTUsIDB4OERBNywgMHg4RTMzLCAweDhFM0UsIDB4OEUzOCwgMHg4RTQwLCAweDhFNDUsIDB4OEUzNiwKKyAgICAweDhFM0MsIDB4OEUzRCwgMHg4RTQxLCAweDhFMzAsIDB4OEUzRiwgMHg4RUJELCAweDhGMzYsIDB4OEYyRSwKKyAgICAweDhGMzUsIDB4OEYzMiwgMHg4RjM5LCAweDhGMzcsIDB4OEYzNCwgMHg5MDc2LCAweDkwNzksIDB4OTA3QiwKKyAgICAweDkwODYsIDB4OTBGQSwgMHg5MTMzLCAweDkxMzUsIDB4OTEzNiwgMHg5MTkzLCAweDkxOTAsIDB4OTE5MSwKKyAgICAweDkxOEQsIDB4OTE4RiwgMHg5MzI3LCAweDkzMUUsIDB4OTMwOCwgMHg5MzFGLCAweDkzMDYsIDB4OTMwRiwKKyAgICAweDkzN0EsIDB4OTMzOCwgMHg5MzNDLCAweDkzMUIsIDB4OTMyMywgMHg5MzEyLCAweDkzMDEsIDB4OTM0NiwKKyAgICAweDkzMkQsIDB4OTMwRSwgMHg5MzBELCAweDkyQ0IsIDB4OTMxRCwgMHg5MkZBLCAweDkzMTMsIDB4OTJGOSwKKyAgICAweDkyRjcsIDB4OTMzNCwgMHg5MzAyLCAweDkzMjQsIDB4OTJGRiwgMHg5MzI5LCAweDkzMzksIDB4OTMzNSwKKyAgICAweDkzMkEsIDB4OTMxNCwgMHg5MzBDLCAweDkzMEIsIDB4OTJGRSwgMHg5MzA5LCAweDkzMDAsIDB4OTJGQiwKKyAgICAweDkzMTYsIDB4OTVCQywgMHg5NUNELCAweDk1QkUsIDB4OTVCOSwgMHg5NUJBLCAweDk1QjYsIDB4OTVCRiwKKyAgICAweDk1QjUsIDB4OTVCRCwgMHg5NkE5LCAweDk2RDQsIDB4OTcwQiwgMHg5NzEyLCAweDk3MTAsIDB4OTc5OSwKKyAgICAweDk3OTcsIDB4OTc5NCwgMHg5N0YwLCAweDk3RjgsIDB4OTgzNSwgMHg5ODJGLCAweDk4MzIsIDB4OTkyNCwKKyAgICAweDk5MUYsIDB4OTkyNywgMHg5OTI5LCAweDk5OUUsIDB4OTlFRSwgMHg5OUVDLCAweDk5RTUsIDB4OTlFNCwKKyAgICAweDk5RjAsIDB4OTlFMywgMHg5OUVBLCAweDk5RTksIDB4OTlFNywgMHg5QUI5LCAweDlBQkYsIDB4OUFCNCwKKyAgICAweDlBQkIsIDB4OUFGNiwgMHg5QUZBLCAweDlBRjksIDB4OUFGNywgMHg5QjMzLCAweDlCODAsIDB4OUI4NSwKKyAgICAweDlCODcsIDB4OUI3QywgMHg5QjdFLCAweDlCN0IsIDB4OUI4MiwgMHg5QjkzLCAweDlCOTIsIDB4OUI5MCwKKyAgICAweDlCN0EsIDB4OUI5NSwgMHg5QjdELCAweDlCODgsIDB4OUQyNSwgMHg5RDE3LCAweDlEMjAsIDB4OUQxRSwKKyAgICAweDlEMTQsIDB4OUQyOSwgMHg5RDFELCAweDlEMTgsIDB4OUQyMiwgMHg5RDEwLCAweDlEMTksIDB4OUQxRiwKKyAgICAweDlFODgsIDB4OUU4NiwgMHg5RTg3LCAweDlFQUUsIDB4OUVBRCwgMHg5RUQ1LCAweDlFRDYsIDB4OUVGQSwKKyAgICAweDlGMTIsIDB4OUYzRCwgMHg1MTI2LCAweDUxMjUsIDB4NTEyMiwgMHg1MTI0LCAweDUxMjAsIDB4NTEyOSwKKyAgICAweDUyRjQsIDB4NTY5MywgMHg1NjhDLCAweDU2OEQsIDB4NTY4NiwgMHg1Njg0LCAweDU2ODMsIDB4NTY3RSwKKyAgICAweDU2ODIsIDB4NTY3RiwgMHg1NjgxLCAweDU4RDYsIDB4NThENCwgMHg1OENGLCAweDU4RDIsIDB4NUIyRCwKKyAgICAweDVCMjUsIDB4NUIzMiwgMHg1QjIzLCAweDVCMkMsIDB4NUIyNywgMHg1QjI2LCAweDVCMkYsIDB4NUIyRSwKKyAgICAweDVCN0IsIDB4NUJGMSwgMHg1QkYyLCAweDVEQjcsIDB4NUU2QywgMHg1RTZBLCAweDVGQkUsIDB4NjFDMywKKyAgICAweDYxQjUsIDB4NjFCQywgMHg2MUU3LCAweDYxRTAsIDB4NjFFNSwgMHg2MUU0LCAweDYxRTgsIDB4NjFERSwKKyAgICAweDY0RUYsIDB4NjRFOSwgMHg2NEUzLCAweDY0RUIsIDB4NjRFNCwgMHg2NEU4LCAweDY1ODEsIDB4NjU4MCwKKyAgICAweDY1QjYsIDB4NjVEQSwgMHg2NkQyLCAweDZBOEQsIDB4NkE5NiwgMHg2QTgxLCAweDZBQTUsIDB4NkE4OSwKKyAgICAweDZBOUYsIDB4NkE5QiwgMHg2QUExLCAweDZBOUUsIDB4NkE4NywgMHg2QTkzLCAweDZBOEUsIDB4NkE5NSwKKyAgICAweDZBODMsIDB4NkFBOCwgMHg2QUE0LCAweDZBOTEsIDB4NkE3RiwgMHg2QUE2LCAweDZBOUEsIDB4NkE4NSwKKyAgICAweDZBOEMsIDB4NkE5MiwgMHg2QjVCLCAweDZCQUQsIDB4NkMwOSwgMHg2RkNDLCAweDZGQTksIDB4NkZGNCwKKyAgICAweDZGRDQsIDB4NkZFMywgMHg2RkRDLCAweDZGRUQsIDB4NkZFNywgMHg2RkU2LCAweDZGREUsIDB4NkZGMiwKKyAgICAweDZGREQsIDB4NkZFMiwgMHg2RkU4LCAweDcxRTEsIDB4NzFGMSwgMHg3MUU4LCAweDcxRjIsIDB4NzFFNCwKKyAgICAweDcxRjAsIDB4NzFFMiwgMHg3MzczLCAweDczNkUsIDB4NzM2RiwgMHg3NDk3LCAweDc0QjIsIDB4NzRBQiwKKyAgICAweDc0OTAsIDB4NzRBQSwgMHg3NEFELCAweDc0QjEsIDB4NzRBNSwgMHg3NEFGLCAweDc1MTAsIDB4NzUxMSwKKyAgICAweDc1MTIsIDB4NzUwRiwgMHg3NTg0LCAweDc2NDMsIDB4NzY0OCwgMHg3NjQ5LCAweDc2NDcsIDB4NzZBNCwKKyAgICAweDc2RTksIDB4NzdCNSwgMHg3N0FCLCAweDc3QjIsIDB4NzdCNywgMHg3N0I2LCAweDc3QjQsIDB4NzdCMSwKKyAgICAweDc3QTgsIDB4NzdGMCwgMHg3OEYzLCAweDc4RkQsIDB4NzkwMiwgMHg3OEZCLCAweDc4RkMsIDB4NzhGRiwKKyAgICAweDc4RjIsIDB4NzkwNSwgMHg3OEY5LCAweDc4RkUsIDB4NzkwNCwgMHg3OUFCLCAweDc5QTgsIDB4N0E1QywKKyAgICAweDdBNUIsIDB4N0E1NiwgMHg3QTU4LCAweDdBNTQsIDB4N0E1QSwgMHg3QUJFLCAweDdBQzAsIDB4N0FDMSwKKyAgICAweDdDMDUsIDB4N0MwRiwgMHg3QkYyLCAweDdDMDAsIDB4N0JGRiwgMHg3QkZCLCAweDdDMEUsIDB4N0JGNCwKKyAgICAweDdDMEIsIDB4N0JGMywgMHg3QzAyLCAweDdDMDksIDB4N0MwMywgMHg3QzAxLCAweDdCRjgsIDB4N0JGRCwKKyAgICAweDdDMDYsIDB4N0JGMCwgMHg3QkYxLCAweDdDMTAsIDB4N0MwQSwgMHg3Q0U4LCAweDdFMkQsIDB4N0UzQywKKyAgICAweDdFNDIsIDB4N0UzMywgMHg5ODQ4LCAweDdFMzgsIDB4N0UyQSwgMHg3RTQ5LCAweDdFNDAsIDB4N0U0NywKKyAgICAweDdFMjksIDB4N0U0QywgMHg3RTMwLCAweDdFM0IsIDB4N0UzNiwgMHg3RTQ0LCAweDdFM0EsIDB4N0Y0NSwKKyAgICAweDdGN0YsIDB4N0Y3RSwgMHg3RjdELCAweDdGRjQsIDB4N0ZGMiwgMHg4MDJDLCAweDgxQkIsIDB4ODFDNCwKKyAgICAweDgxQ0MsIDB4ODFDQSwgMHg4MUM1LCAweDgxQzcsIDB4ODFCQywgMHg4MUU5LCAweDgyNUIsIDB4ODI1QSwKKyAgICAweDgyNUMsIDB4ODU4MywgMHg4NTgwLCAweDg1OEYsIDB4ODVBNywgMHg4NTk1LCAweDg1QTAsIDB4ODU4QiwKKyAgICAweDg1QTMsIDB4ODU3QiwgMHg4NUE0LCAweDg1OUEsIDB4ODU5RSwgMHg4NTc3LCAweDg1N0MsIDB4ODU4OSwKKyAgICAweDg1QTEsIDB4ODU3QSwgMHg4NTc4LCAweDg1NTcsIDB4ODU4RSwgMHg4NTk2LCAweDg1ODYsIDB4ODU4RCwKKyAgICAweDg1OTksIDB4ODU5RCwgMHg4NTgxLCAweDg1QTIsIDB4ODU4MiwgMHg4NTg4LCAweDg1ODUsIDB4ODU3OSwKKyAgICAweDg1NzYsIDB4ODU5OCwgMHg4NTkwLCAweDg1OUYsIDB4ODY2OCwgMHg4N0JFLCAweDg3QUEsIDB4ODdBRCwKKyAgICAweDg3QzUsIDB4ODdCMCwgMHg4N0FDLCAweDg3QjksIDB4ODdCNSwgMHg4N0JDLCAweDg3QUUsIDB4ODdDOSwKKyAgICAweDg3QzMsIDB4ODdDMiwgMHg4N0NDLCAweDg3QjcsIDB4ODdBRiwgMHg4N0M0LCAweDg3Q0EsIDB4ODdCNCwKKyAgICAweDg3QjYsIDB4ODdCRiwgMHg4N0I4LCAweDg3QkQsIDB4ODdERSwgMHg4N0IyLCAweDg5MzUsIDB4ODkzMywKKyAgICAweDg5M0MsIDB4ODkzRSwgMHg4OTQxLCAweDg5NTIsIDB4ODkzNywgMHg4OTQyLCAweDg5QUQsIDB4ODlBRiwKKyAgICAweDg5QUUsIDB4ODlGMiwgMHg4OUYzLCAweDhCMUUsIDB4OEIxOCwgMHg4QjE2LCAweDhCMTEsIDB4OEIwNSwKKyAgICAweDhCMEIsIDB4OEIyMiwgMHg4QjBGLCAweDhCMTIsIDB4OEIxNSwgMHg4QjA3LCAweDhCMEQsIDB4OEIwOCwKKyAgICAweDhCMDYsIDB4OEIxQywgMHg4QjEzLCAweDhCMUEsIDB4OEM0RiwgMHg4QzcwLCAweDhDNzIsIDB4OEM3MSwKKyAgICAweDhDNkYsIDB4OEM5NSwgMHg4Qzk0LCAweDhDRjksIDB4OEQ2RiwgMHg4RTRFLCAweDhFNEQsIDB4OEU1MywKKyAgICAweDhFNTAsIDB4OEU0QywgMHg4RTQ3LCAweDhGNDMsIDB4OEY0MCwgMHg5MDg1LCAweDkwN0UsIDB4OTEzOCwKKyAgICAweDkxOUEsIDB4OTFBMiwgMHg5MTlCLCAweDkxOTksIDB4OTE5RiwgMHg5MUExLCAweDkxOUQsIDB4OTFBMCwKKyAgICAweDkzQTEsIDB4OTM4MywgMHg5M0FGLCAweDkzNjQsIDB4OTM1NiwgMHg5MzQ3LCAweDkzN0MsIDB4OTM1OCwKKyAgICAweDkzNUMsIDB4OTM3NiwgMHg5MzQ5LCAweDkzNTAsIDB4OTM1MSwgMHg5MzYwLCAweDkzNkQsIDB4OTM4RiwKKyAgICAweDkzNEMsIDB4OTM2QSwgMHg5Mzc5LCAweDkzNTcsIDB4OTM1NSwgMHg5MzUyLCAweDkzNEYsIDB4OTM3MSwKKyAgICAweDkzNzcsIDB4OTM3QiwgMHg5MzYxLCAweDkzNUUsIDB4OTM2MywgMHg5MzY3LCAweDkzNEUsIDB4OTM1OSwKKyAgICAweDk1QzcsIDB4OTVDMCwgMHg5NUM5LCAweDk1QzMsIDB4OTVDNSwgMHg5NUI3LCAweDk2QUUsIDB4OTZCMCwKKyAgICAweDk2QUMsIDB4OTcyMCwgMHg5NzFGLCAweDk3MTgsIDB4OTcxRCwgMHg5NzE5LCAweDk3OUEsIDB4OTdBMSwKKyAgICAweDk3OUMsIDB4OTc5RSwgMHg5NzlELCAweDk3RDUsIDB4OTdENCwgMHg5N0YxLCAweDk4NDEsIDB4OTg0NCwKKyAgICAweDk4NEEsIDB4OTg0OSwgMHg5ODQ1LCAweDk4NDMsIDB4OTkyNSwgMHg5OTJCLCAweDk5MkMsIDB4OTkyQSwKKyAgICAweDk5MzMsIDB4OTkzMiwgMHg5OTJGLCAweDk5MkQsIDB4OTkzMSwgMHg5OTMwLCAweDk5OTgsIDB4OTlBMywKKyAgICAweDk5QTEsIDB4OUEwMiwgMHg5OUZBLCAweDk5RjQsIDB4OTlGNywgMHg5OUY5LCAweDk5RjgsIDB4OTlGNiwKKyAgICAweDk5RkIsIDB4OTlGRCwgMHg5OUZFLCAweDk5RkMsIDB4OUEwMywgMHg5QUJFLCAweDlBRkUsIDB4OUFGRCwKKyAgICAweDlCMDEsIDB4OUFGQywgMHg5QjQ4LCAweDlCOUEsIDB4OUJBOCwgMHg5QjlFLCAweDlCOUIsIDB4OUJBNiwKKyAgICAweDlCQTEsIDB4OUJBNSwgMHg5QkE0LCAweDlCODYsIDB4OUJBMiwgMHg5QkEwLCAweDlCQUYsIDB4OUQzMywKKyAgICAweDlENDEsIDB4OUQ2NywgMHg5RDM2LCAweDlEMkUsIDB4OUQyRiwgMHg5RDMxLCAweDlEMzgsIDB4OUQzMCwKKyAgICAweDlENDUsIDB4OUQ0MiwgMHg5RDQzLCAweDlEM0UsIDB4OUQzNywgMHg5RDQwLCAweDlEM0QsIDB4N0ZGNSwKKyAgICAweDlEMkQsIDB4OUU4QSwgMHg5RTg5LCAweDlFOEQsIDB4OUVCMCwgMHg5RUM4LCAweDlFREEsIDB4OUVGQiwKKyAgICAweDlFRkYsIDB4OUYyNCwgMHg5RjIzLCAweDlGMjIsIDB4OUY1NCwgMHg5RkEwLCAweDUxMzEsIDB4NTEyRCwKKyAgICAweDUxMkUsIDB4NTY5OCwgMHg1NjlDLCAweDU2OTcsIDB4NTY5QSwgMHg1NjlELCAweDU2OTksIDB4NTk3MCwKKyAgICAweDVCM0MsIDB4NUM2OSwgMHg1QzZBLCAweDVEQzAsIDB4NUU2RCwgMHg1RTZFLCAweDYxRDgsIDB4NjFERiwKKyAgICAweDYxRUQsIDB4NjFFRSwgMHg2MUYxLCAweDYxRUEsIDB4NjFGMCwgMHg2MUVCLCAweDYxRDYsIDB4NjFFOSwKKyAgICAweDY0RkYsIDB4NjUwNCwgMHg2NEZELCAweDY0RjgsIDB4NjUwMSwgMHg2NTAzLCAweDY0RkMsIDB4NjU5NCwKKyAgICAweDY1REIsIDB4NjZEQSwgMHg2NkRCLCAweDY2RDgsIDB4NkFDNSwgMHg2QUI5LCAweDZBQkQsIDB4NkFFMSwKKyAgICAweDZBQzYsIDB4NkFCQSwgMHg2QUI2LCAweDZBQjcsIDB4NkFDNywgMHg2QUI0LCAweDZBQUQsIDB4NkI1RSwKKyAgICAweDZCQzksIDB4NkMwQiwgMHg3MDA3LCAweDcwMEMsIDB4NzAwRCwgMHg3MDAxLCAweDcwMDUsIDB4NzAxNCwKKyAgICAweDcwMEUsIDB4NkZGRiwgMHg3MDAwLCAweDZGRkIsIDB4NzAyNiwgMHg2RkZDLCAweDZGRjcsIDB4NzAwQSwKKyAgICAweDcyMDEsIDB4NzFGRiwgMHg3MUY5LCAweDcyMDMsIDB4NzFGRCwgMHg3Mzc2LCAweDc0QjgsIDB4NzRDMCwKKyAgICAweDc0QjUsIDB4NzRDMSwgMHg3NEJFLCAweDc0QjYsIDB4NzRCQiwgMHg3NEMyLCAweDc1MTQsIDB4NzUxMywKKyAgICAweDc2NUMsIDB4NzY2NCwgMHg3NjU5LCAweDc2NTAsIDB4NzY1MywgMHg3NjU3LCAweDc2NUEsIDB4NzZBNiwKKyAgICAweDc2QkQsIDB4NzZFQywgMHg3N0MyLCAweDc3QkEsIDB4NzkwQywgMHg3OTEzLCAweDc5MTQsIDB4NzkwOSwKKyAgICAweDc5MTAsIDB4NzkxMiwgMHg3OTExLCAweDc5QUQsIDB4NzlBQywgMHg3QTVGLCAweDdDMUMsIDB4N0MyOSwKKyAgICAweDdDMTksIDB4N0MyMCwgMHg3QzFGLCAweDdDMkQsIDB4N0MxRCwgMHg3QzI2LCAweDdDMjgsIDB4N0MyMiwKKyAgICAweDdDMjUsIDB4N0MzMCwgMHg3RTVDLCAweDdFNTAsIDB4N0U1NiwgMHg3RTYzLCAweDdFNTgsIDB4N0U2MiwKKyAgICAweDdFNUYsIDB4N0U1MSwgMHg3RTYwLCAweDdFNTcsIDB4N0U1MywgMHg3RkI1LCAweDdGQjMsIDB4N0ZGNywKKyAgICAweDdGRjgsIDB4ODA3NSwgMHg4MUQxLCAweDgxRDIsIDB4ODFEMCwgMHg4MjVGLCAweDgyNUUsIDB4ODVCNCwKKyAgICAweDg1QzYsIDB4ODVDMCwgMHg4NUMzLCAweDg1QzIsIDB4ODVCMywgMHg4NUI1LCAweDg1QkQsIDB4ODVDNywKKyAgICAweDg1QzQsIDB4ODVCRiwgMHg4NUNCLCAweDg1Q0UsIDB4ODVDOCwgMHg4NUM1LCAweDg1QjEsIDB4ODVCNiwKKyAgICAweDg1RDIsIDB4ODYyNCwgMHg4NUI4LCAweDg1QjcsIDB4ODVCRSwgMHg4NjY5LCAweDg3RTcsIDB4ODdFNiwKKyAgICAweDg3RTIsIDB4ODdEQiwgMHg4N0VCLCAweDg3RUEsIDB4ODdFNSwgMHg4N0RGLCAweDg3RjMsIDB4ODdFNCwKKyAgICAweDg3RDQsIDB4ODdEQywgMHg4N0QzLCAweDg3RUQsIDB4ODdEOCwgMHg4N0UzLCAweDg3RDcsIDB4ODdEOSwKKyAgICAweDg4MDEsIDB4ODdGNCwgMHg4N0U4LCAweDg3REQsIDB4ODk1MywgMHg4OTRCLCAweDg5NEYsIDB4ODk0QywKKyAgICAweDg5NDYsIDB4ODk1MCwgMHg4OTUxLCAweDg5NDksIDB4OEIyQSwgMHg4QjI3LCAweDhCMjMsIDB4OEIzMywKKyAgICAweDhCMzAsIDB4OEIzNSwgMHg4QjQ3LCAweDhCMkYsIDB4OEIzQywgMHg4QjNFLCAweDhCMzEsIDB4OEIyNSwKKyAgICAweDhCMzcsIDB4OEIyNiwgMHg4QjM2LCAweDhCMkUsIDB4OEIyNCwgMHg4QjNCLCAweDhCM0QsIDB4OEIzQSwKKyAgICAweDhDNDIsIDB4OEM3NSwgMHg4Qzk5LCAweDhDOTgsIDB4OEM5NywgMHg4Q0ZFLCAweDhEMDQsIDB4OEQwMiwKKyAgICAweDhEMDAsIDB4OEU1QywgMHg4RTYyLCAweDhFNjAsIDB4OEU1NywgMHg4RTU2LCAweDhFNUUsIDB4OEU2NSwKKyAgICAweDhFNjcsIDB4OEU1QiwgMHg4RTVBLCAweDhFNjEsIDB4OEU1RCwgMHg4RTY5LCAweDhFNTQsIDB4OEY0NiwKKyAgICAweDhGNDcsIDB4OEY0OCwgMHg4RjRCLCAweDkxMjgsIDB4OTEzQSwgMHg5MTNCLCAweDkxM0UsIDB4OTFBOCwKKyAgICAweDkxQTUsIDB4OTFBNywgMHg5MUFGLCAweDkxQUEsIDB4OTNCNSwgMHg5MzhDLCAweDkzOTIsIDB4OTNCNywKKyAgICAweDkzOUIsIDB4OTM5RCwgMHg5Mzg5LCAweDkzQTcsIDB4OTM4RSwgMHg5M0FBLCAweDkzOUUsIDB4OTNBNiwKKyAgICAweDkzOTUsIDB4OTM4OCwgMHg5Mzk5LCAweDkzOUYsIDB4OTM4MCwgMHg5MzhELCAweDkzQjEsIDB4OTM5MSwKKyAgICAweDkzQjIsIDB4OTNBNCwgMHg5M0E4LCAweDkzQjQsIDB4OTNBMywgMHg5NUQyLCAweDk1RDMsIDB4OTVEMSwKKyAgICAweDk2QjMsIDB4OTZENywgMHg5NkRBLCAweDVEQzIsIDB4OTZERiwgMHg5NkQ4LCAweDk2REQsIDB4OTcyMywKKyAgICAweDk3MjIsIDB4OTcyNSwgMHg5N0FDLCAweDk3QUUsIDB4OTdBOCwgMHg5N0FCLCAweDk3QTQsIDB4OTdBQSwKKyAgICAweDk3QTIsIDB4OTdBNSwgMHg5N0Q3LCAweDk3RDksIDB4OTdENiwgMHg5N0Q4LCAweDk3RkEsIDB4OTg1MCwKKyAgICAweDk4NTEsIDB4OTg1MiwgMHg5OEI4LCAweDk5NDEsIDB4OTkzQywgMHg5OTNBLCAweDlBMEYsIDB4OUEwQiwKKyAgICAweDlBMDksIDB4OUEwRCwgMHg5QTA0LCAweDlBMTEsIDB4OUEwQSwgMHg5QTA1LCAweDlBMDcsIDB4OUEwNiwKKyAgICAweDlBQzAsIDB4OUFEQywgMHg5QjA4LCAweDlCMDQsIDB4OUIwNSwgMHg5QjI5LCAweDlCMzUsIDB4OUI0QSwKKyAgICAweDlCNEMsIDB4OUI0QiwgMHg5QkM3LCAweDlCQzYsIDB4OUJDMywgMHg5QkJGLCAweDlCQzEsIDB4OUJCNSwKKyAgICAweDlCQjgsIDB4OUJEMywgMHg5QkI2LCAweDlCQzQsIDB4OUJCOSwgMHg5QkJELCAweDlENUMsIDB4OUQ1MywKKyAgICAweDlENEYsIDB4OUQ0QSwgMHg5RDVCLCAweDlENEIsIDB4OUQ1OSwgMHg5RDU2LCAweDlENEMsIDB4OUQ1NywKKyAgICAweDlENTIsIDB4OUQ1NCwgMHg5RDVGLCAweDlENTgsIDB4OUQ1QSwgMHg5RThFLCAweDlFOEMsIDB4OUVERiwKKyAgICAweDlGMDEsIDB4OUYwMCwgMHg5RjE2LCAweDlGMjUsIDB4OUYyQiwgMHg5RjJBLCAweDlGMjksIDB4OUYyOCwKKyAgICAweDlGNEMsIDB4OUY1NSwgMHg1MTM0LCAweDUxMzUsIDB4NTI5NiwgMHg1MkY3LCAweDUzQjQsIDB4NTZBQiwKKyAgICAweDU2QUQsIDB4NTZBNiwgMHg1NkE3LCAweDU2QUEsIDB4NTZBQywgMHg1OERBLCAweDU4REQsIDB4NThEQiwKKyAgICAweDU5MTIsIDB4NUIzRCwgMHg1QjNFLCAweDVCM0YsIDB4NURDMywgMHg1RTcwLCAweDVGQkYsIDB4NjFGQiwKKyAgICAweDY1MDcsIDB4NjUxMCwgMHg2NTBELCAweDY1MDksIDB4NjUwQywgMHg2NTBFLCAweDY1ODQsIDB4NjVERSwKKyAgICAweDY1REQsIDB4NjZERSwgMHg2QUU3LCAweDZBRTAsIDB4NkFDQywgMHg2QUQxLCAweDZBRDksIDB4NkFDQiwKKyAgICAweDZBREYsIDB4NkFEQywgMHg2QUQwLCAweDZBRUIsIDB4NkFDRiwgMHg2QUNELCAweDZBREUsIDB4NkI2MCwKKyAgICAweDZCQjAsIDB4NkMwQywgMHg3MDE5LCAweDcwMjcsIDB4NzAyMCwgMHg3MDE2LCAweDcwMkIsIDB4NzAyMSwKKyAgICAweDcwMjIsIDB4NzAyMywgMHg3MDI5LCAweDcwMTcsIDB4NzAyNCwgMHg3MDFDLCAweDcyMEMsIDB4NzIwQSwKKyAgICAweDcyMDcsIDB4NzIwMiwgMHg3MjA1LCAweDcyQTUsIDB4NzJBNiwgMHg3MkE0LCAweDcyQTMsIDB4NzJBMSwKKyAgICAweDc0Q0IsIDB4NzRDNSwgMHg3NEI3LCAweDc0QzMsIDB4NzUxNiwgMHg3NjYwLCAweDc3QzksIDB4NzdDQSwKKyAgICAweDc3QzQsIDB4NzdGMSwgMHg3OTFELCAweDc5MUIsIDB4NzkyMSwgMHg3OTFDLCAweDc5MTcsIDB4NzkxRSwKKyAgICAweDc5QjAsIDB4N0E2NywgMHg3QTY4LCAweDdDMzMsIDB4N0MzQywgMHg3QzM5LCAweDdDMkMsIDB4N0MzQiwKKyAgICAweDdDRUMsIDB4N0NFQSwgMHg3RTc2LCAweDdFNzUsIDB4N0U3OCwgMHg3RTcwLCAweDdFNzcsIDB4N0U2RiwKKyAgICAweDdFN0EsIDB4N0U3MiwgMHg3RTc0LCAweDdFNjgsIDB4N0Y0QiwgMHg3RjRBLCAweDdGODMsIDB4N0Y4NiwKKyAgICAweDdGQjcsIDB4N0ZGRCwgMHg3RkZFLCAweDgwNzgsIDB4ODFENywgMHg4MUQ1LCAweDgyMEIsIDB4ODI2NCwKKyAgICAweDgyNjEsIDB4ODI2MywgMHg4NUVCLCAweDg1RjEsIDB4ODVFRCwgMHg4NUQ5LCAweDg1RTEsIDB4ODVFOCwKKyAgICAweDg1REEsIDB4ODVENywgMHg4NUVDLCAweDg1RjIsIDB4ODVGOCwgMHg4NUQ4LCAweDg1REYsIDB4ODVFMywKKyAgICAweDg1REMsIDB4ODVEMSwgMHg4NUYwLCAweDg1RTYsIDB4ODVFRiwgMHg4NURFLCAweDg1RTIsIDB4ODgwMCwKKyAgICAweDg3RkEsIDB4ODgwMywgMHg4N0Y2LCAweDg3RjcsIDB4ODgwOSwgMHg4ODBDLCAweDg4MEIsIDB4ODgwNiwKKyAgICAweDg3RkMsIDB4ODgwOCwgMHg4N0ZGLCAweDg4MEEsIDB4ODgwMiwgMHg4OTYyLCAweDg5NUEsIDB4ODk1QiwKKyAgICAweDg5NTcsIDB4ODk2MSwgMHg4OTVDLCAweDg5NTgsIDB4ODk1RCwgMHg4OTU5LCAweDg5ODgsIDB4ODlCNywKKyAgICAweDg5QjYsIDB4ODlGNiwgMHg4QjUwLCAweDhCNDgsIDB4OEI0QSwgMHg4QjQwLCAweDhCNTMsIDB4OEI1NiwKKyAgICAweDhCNTQsIDB4OEI0QiwgMHg4QjU1LCAweDhCNTEsIDB4OEI0MiwgMHg4QjUyLCAweDhCNTcsIDB4OEM0MywKKyAgICAweDhDNzcsIDB4OEM3NiwgMHg4QzlBLCAweDhEMDYsIDB4OEQwNywgMHg4RDA5LCAweDhEQUMsIDB4OERBQSwKKyAgICAweDhEQUQsIDB4OERBQiwgMHg4RTZELCAweDhFNzgsIDB4OEU3MywgMHg4RTZBLCAweDhFNkYsIDB4OEU3QiwKKyAgICAweDhFQzIsIDB4OEY1MiwgMHg4RjUxLCAweDhGNEYsIDB4OEY1MCwgMHg4RjUzLCAweDhGQjQsIDB4OTE0MCwKKyAgICAweDkxM0YsIDB4OTFCMCwgMHg5MUFELCAweDkzREUsIDB4OTNDNywgMHg5M0NGLCAweDkzQzIsIDB4OTNEQSwKKyAgICAweDkzRDAsIDB4OTNGOSwgMHg5M0VDLCAweDkzQ0MsIDB4OTNEOSwgMHg5M0E5LCAweDkzRTYsIDB4OTNDQSwKKyAgICAweDkzRDQsIDB4OTNFRSwgMHg5M0UzLCAweDkzRDUsIDB4OTNDNCwgMHg5M0NFLCAweDkzQzAsIDB4OTNEMiwKKyAgICAweDkzQTUsIDB4OTNFNywgMHg5NTdELCAweDk1REEsIDB4OTVEQiwgMHg5NkUxLCAweDk3MjksIDB4OTcyQiwKKyAgICAweDk3MkMsIDB4OTcyOCwgMHg5NzI2LCAweDk3QjMsIDB4OTdCNywgMHg5N0I2LCAweDk3REQsIDB4OTdERSwKKyAgICAweDk3REYsIDB4OTg1QywgMHg5ODU5LCAweDk4NUQsIDB4OTg1NywgMHg5OEJGLCAweDk4QkQsIDB4OThCQiwKKyAgICAweDk4QkUsIDB4OTk0OCwgMHg5OTQ3LCAweDk5NDMsIDB4OTlBNiwgMHg5OUE3LCAweDlBMUEsIDB4OUExNSwKKyAgICAweDlBMjUsIDB4OUExRCwgMHg5QTI0LCAweDlBMUIsIDB4OUEyMiwgMHg5QTIwLCAweDlBMjcsIDB4OUEyMywKKyAgICAweDlBMUUsIDB4OUExQywgMHg5QTE0LCAweDlBQzIsIDB4OUIwQiwgMHg5QjBBLCAweDlCMEUsIDB4OUIwQywKKyAgICAweDlCMzcsIDB4OUJFQSwgMHg5QkVCLCAweDlCRTAsIDB4OUJERSwgMHg5QkU0LCAweDlCRTYsIDB4OUJFMiwKKyAgICAweDlCRjAsIDB4OUJENCwgMHg5QkQ3LCAweDlCRUMsIDB4OUJEQywgMHg5QkQ5LCAweDlCRTUsIDB4OUJENSwKKyAgICAweDlCRTEsIDB4OUJEQSwgMHg5RDc3LCAweDlEODEsIDB4OUQ4QSwgMHg5RDg0LCAweDlEODgsIDB4OUQ3MSwKKyAgICAweDlEODAsIDB4OUQ3OCwgMHg5RDg2LCAweDlEOEIsIDB4OUQ4QywgMHg5RDdELCAweDlENkIsIDB4OUQ3NCwKKyAgICAweDlENzUsIDB4OUQ3MCwgMHg5RDY5LCAweDlEODUsIDB4OUQ3MywgMHg5RDdCLCAweDlEODIsIDB4OUQ2RiwKKyAgICAweDlENzksIDB4OUQ3RiwgMHg5RDg3LCAweDlENjgsIDB4OUU5NCwgMHg5RTkxLCAweDlFQzAsIDB4OUVGQywKKyAgICAweDlGMkQsIDB4OUY0MCwgMHg5RjQxLCAweDlGNEQsIDB4OUY1NiwgMHg5RjU3LCAweDlGNTgsIDB4NTMzNywKKyAgICAweDU2QjIsIDB4NTZCNSwgMHg1NkIzLCAweDU4RTMsIDB4NUI0NSwgMHg1REM2LCAweDVEQzcsIDB4NUVFRSwKKyAgICAweDVFRUYsIDB4NUZDMCwgMHg1RkMxLCAweDYxRjksIDB4NjUxNywgMHg2NTE2LCAweDY1MTUsIDB4NjUxMywKKyAgICAweDY1REYsIDB4NjZFOCwgMHg2NkUzLCAweDY2RTQsIDB4NkFGMywgMHg2QUYwLCAweDZBRUEsIDB4NkFFOCwKKyAgICAweDZBRjksIDB4NkFGMSwgMHg2QUVFLCAweDZBRUYsIDB4NzAzQywgMHg3MDM1LCAweDcwMkYsIDB4NzAzNywKKyAgICAweDcwMzQsIDB4NzAzMSwgMHg3MDQyLCAweDcwMzgsIDB4NzAzRiwgMHg3MDNBLCAweDcwMzksIDB4NzAyQSwKKyAgICAweDcwNDAsIDB4NzAzQiwgMHg3MDMzLCAweDcwNDEsIDB4NzIxMywgMHg3MjE0LCAweDcyQTgsIDB4NzM3RCwKKyAgICAweDczN0MsIDB4NzRCQSwgMHg3NkFCLCAweDc2QUEsIDB4NzZCRSwgMHg3NkVELCAweDc3Q0MsIDB4NzdDRSwKKyAgICAweDc3Q0YsIDB4NzdDRCwgMHg3N0YyLCAweDc5MjUsIDB4NzkyMywgMHg3OTI3LCAweDc5MjgsIDB4NzkyNCwKKyAgICAweDc5MjksIDB4NzlCMiwgMHg3QTZFLCAweDdBNkMsIDB4N0E2RCwgMHg3QUY3LCAweDdDNDksIDB4N0M0OCwKKyAgICAweDdDNEEsIDB4N0M0NywgMHg3QzQ1LCAweDdDRUUsIDB4N0U3QiwgMHg3RTdFLCAweDdFODEsIDB4N0U4MCwKKyAgICAweDdGQkEsIDB4N0ZGRiwgMHg4MDc5LCAweDgxREIsIDB4ODFEOSwgMHg4MjY4LCAweDgyNjksIDB4ODYyMiwKKyAgICAweDg1RkYsIDB4ODYwMSwgMHg4NUZFLCAweDg2MUIsIDB4ODYwMCwgMHg4NUY2LCAweDg2MDQsIDB4ODYwOSwKKyAgICAweDg2MDUsIDB4ODYwQywgMHg4NUZELCAweDg4MTksIDB4ODgxMCwgMHg4ODExLCAweDg4MTcsIDB4ODgxMywKKyAgICAweDg4MTYsIDB4ODk2MywgMHg4OTY2LCAweDg5QjksIDB4ODlGNywgMHg4QjYwLCAweDhCNkEsIDB4OEI1RCwKKyAgICAweDhCNjgsIDB4OEI2MywgMHg4QjY1LCAweDhCNjcsIDB4OEI2RCwgMHg4REFFLCAweDhFODYsIDB4OEU4OCwKKyAgICAweDhFODQsIDB4OEY1OSwgMHg4RjU2LCAweDhGNTcsIDB4OEY1NSwgMHg4RjU4LCAweDhGNUEsIDB4OTA4RCwKKyAgICAweDkxNDMsIDB4OTE0MSwgMHg5MUI3LCAweDkxQjUsIDB4OTFCMiwgMHg5MUIzLCAweDk0MEIsIDB4OTQxMywKKyAgICAweDkzRkIsIDB4OTQyMCwgMHg5NDBGLCAweDk0MTQsIDB4OTNGRSwgMHg5NDE1LCAweDk0MTAsIDB4OTQyOCwKKyAgICAweDk0MTksIDB4OTQwRCwgMHg5M0Y1LCAweDk0MDAsIDB4OTNGNywgMHg5NDA3LCAweDk0MEUsIDB4OTQxNiwKKyAgICAweDk0MTIsIDB4OTNGQSwgMHg5NDA5LCAweDkzRjgsIDB4OTQzQywgMHg5NDBBLCAweDkzRkYsIDB4OTNGQywKKyAgICAweDk0MEMsIDB4OTNGNiwgMHg5NDExLCAweDk0MDYsIDB4OTVERSwgMHg5NUUwLCAweDk1REYsIDB4OTcyRSwKKyAgICAweDk3MkYsIDB4OTdCOSwgMHg5N0JCLCAweDk3RkQsIDB4OTdGRSwgMHg5ODYwLCAweDk4NjIsIDB4OTg2MywKKyAgICAweDk4NUYsIDB4OThDMSwgMHg5OEMyLCAweDk5NTAsIDB4OTk0RSwgMHg5OTU5LCAweDk5NEMsIDB4OTk0QiwKKyAgICAweDk5NTMsIDB4OUEzMiwgMHg5QTM0LCAweDlBMzEsIDB4OUEyQywgMHg5QTJBLCAweDlBMzYsIDB4OUEyOSwKKyAgICAweDlBMkUsIDB4OUEzOCwgMHg5QTJELCAweDlBQzcsIDB4OUFDQSwgMHg5QUM2LCAweDlCMTAsIDB4OUIxMiwKKyAgICAweDlCMTEsIDB4OUMwQiwgMHg5QzA4LCAweDlCRjcsIDB4OUMwNSwgMHg5QzEyLCAweDlCRjgsIDB4OUM0MCwKKyAgICAweDlDMDcsIDB4OUMwRSwgMHg5QzA2LCAweDlDMTcsIDB4OUMxNCwgMHg5QzA5LCAweDlEOUYsIDB4OUQ5OSwKKyAgICAweDlEQTQsIDB4OUQ5RCwgMHg5RDkyLCAweDlEOTgsIDB4OUQ5MCwgMHg5RDlCLCAweDlEQTAsIDB4OUQ5NCwKKyAgICAweDlEOUMsIDB4OURBQSwgMHg5RDk3LCAweDlEQTEsIDB4OUQ5QSwgMHg5REEyLCAweDlEQTgsIDB4OUQ5RSwKKyAgICAweDlEQTMsIDB4OURCRiwgMHg5REE5LCAweDlEOTYsIDB4OURBNiwgMHg5REE3LCAweDlFOTksIDB4OUU5QiwKKyAgICAweDlFOUEsIDB4OUVFNSwgMHg5RUU0LCAweDlFRTcsIDB4OUVFNiwgMHg5RjMwLCAweDlGMkUsIDB4OUY1QiwKKyAgICAweDlGNjAsIDB4OUY1RSwgMHg5RjVELCAweDlGNTksIDB4OUY5MSwgMHg1MTNBLCAweDUxMzksIDB4NTI5OCwKKyAgICAweDUyOTcsIDB4NTZDMywgMHg1NkJELCAweDU2QkUsIDB4NUI0OCwgMHg1QjQ3LCAweDVEQ0IsIDB4NURDRiwKKyAgICAweDVFRjEsIDB4NjFGRCwgMHg2NTFCLCAweDZCMDIsIDB4NkFGQywgMHg2QjAzLCAweDZBRjgsIDB4NkIwMCwKKyAgICAweDcwNDMsIDB4NzA0NCwgMHg3MDRBLCAweDcwNDgsIDB4NzA0OSwgMHg3MDQ1LCAweDcwNDYsIDB4NzIxRCwKKyAgICAweDcyMUEsIDB4NzIxOSwgMHg3MzdFLCAweDc1MTcsIDB4NzY2QSwgMHg3N0QwLCAweDc5MkQsIDB4NzkzMSwKKyAgICAweDc5MkYsIDB4N0M1NCwgMHg3QzUzLCAweDdDRjIsIDB4N0U4QSwgMHg3RTg3LCAweDdFODgsIDB4N0U4QiwKKyAgICAweDdFODYsIDB4N0U4RCwgMHg3RjRELCAweDdGQkIsIDB4ODAzMCwgMHg4MURELCAweDg2MTgsIDB4ODYyQSwKKyAgICAweDg2MjYsIDB4ODYxRiwgMHg4NjIzLCAweDg2MUMsIDB4ODYxOSwgMHg4NjI3LCAweDg2MkUsIDB4ODYyMSwKKyAgICAweDg2MjAsIDB4ODYyOSwgMHg4NjFFLCAweDg2MjUsIDB4ODgyOSwgMHg4ODFELCAweDg4MUIsIDB4ODgyMCwKKyAgICAweDg4MjQsIDB4ODgxQywgMHg4ODJCLCAweDg4NEEsIDB4ODk2RCwgMHg4OTY5LCAweDg5NkUsIDB4ODk2QiwKKyAgICAweDg5RkEsIDB4OEI3OSwgMHg4Qjc4LCAweDhCNDUsIDB4OEI3QSwgMHg4QjdCLCAweDhEMTAsIDB4OEQxNCwKKyAgICAweDhEQUYsIDB4OEU4RSwgMHg4RThDLCAweDhGNUUsIDB4OEY1QiwgMHg4RjVELCAweDkxNDYsIDB4OTE0NCwKKyAgICAweDkxNDUsIDB4OTFCOSwgMHg5NDNGLCAweDk0M0IsIDB4OTQzNiwgMHg5NDI5LCAweDk0M0QsIDB4OTQzMCwKKyAgICAweDk0MzksIDB4OTQyQSwgMHg5NDM3LCAweDk0MkMsIDB4OTQ0MCwgMHg5NDMxLCAweDk1RTUsIDB4OTVFNCwKKyAgICAweDk1RTMsIDB4OTczNSwgMHg5NzNBLCAweDk3QkYsIDB4OTdFMSwgMHg5ODY0LCAweDk4QzksIDB4OThDNiwKKyAgICAweDk4QzAsIDB4OTk1OCwgMHg5OTU2LCAweDlBMzksIDB4OUEzRCwgMHg5QTQ2LCAweDlBNDQsIDB4OUE0MiwKKyAgICAweDlBNDEsIDB4OUEzQSwgMHg5QTNGLCAweDlBQ0QsIDB4OUIxNSwgMHg5QjE3LCAweDlCMTgsIDB4OUIxNiwKKyAgICAweDlCM0EsIDB4OUI1MiwgMHg5QzJCLCAweDlDMUQsIDB4OUMxQywgMHg5QzJDLCAweDlDMjMsIDB4OUMyOCwKKyAgICAweDlDMjksIDB4OUMyNCwgMHg5QzIxLCAweDlEQjcsIDB4OURCNiwgMHg5REJDLCAweDlEQzEsIDB4OURDNywKKyAgICAweDlEQ0EsIDB4OURDRiwgMHg5REJFLCAweDlEQzUsIDB4OURDMywgMHg5REJCLCAweDlEQjUsIDB4OURDRSwKKyAgICAweDlEQjksIDB4OURCQSwgMHg5REFDLCAweDlEQzgsIDB4OURCMSwgMHg5REFELCAweDlEQ0MsIDB4OURCMywKKyAgICAweDlEQ0QsIDB4OURCMiwgMHg5RTdBLCAweDlFOUMsIDB4OUVFQiwgMHg5RUVFLCAweDlFRUQsIDB4OUYxQiwKKyAgICAweDlGMTgsIDB4OUYxQSwgMHg5RjMxLCAweDlGNEUsIDB4OUY2NSwgMHg5RjY0LCAweDlGOTIsIDB4NEVCOSwKKyAgICAweDU2QzYsIDB4NTZDNSwgMHg1NkNCLCAweDU5NzEsIDB4NUI0QiwgMHg1QjRDLCAweDVERDUsIDB4NUREMSwKKyAgICAweDVFRjIsIDB4NjUyMSwgMHg2NTIwLCAweDY1MjYsIDB4NjUyMiwgMHg2QjBCLCAweDZCMDgsIDB4NkIwOSwKKyAgICAweDZDMEQsIDB4NzA1NSwgMHg3MDU2LCAweDcwNTcsIDB4NzA1MiwgMHg3MjFFLCAweDcyMUYsIDB4NzJBOSwKKyAgICAweDczN0YsIDB4NzREOCwgMHg3NEQ1LCAweDc0RDksIDB4NzRENywgMHg3NjZELCAweDc2QUQsIDB4NzkzNSwKKyAgICAweDc5QjQsIDB4N0E3MCwgMHg3QTcxLCAweDdDNTcsIDB4N0M1QywgMHg3QzU5LCAweDdDNUIsIDB4N0M1QSwKKyAgICAweDdDRjQsIDB4N0NGMSwgMHg3RTkxLCAweDdGNEYsIDB4N0Y4NywgMHg4MURFLCAweDgyNkIsIDB4ODYzNCwKKyAgICAweDg2MzUsIDB4ODYzMywgMHg4NjJDLCAweDg2MzIsIDB4ODYzNiwgMHg4ODJDLCAweDg4MjgsIDB4ODgyNiwKKyAgICAweDg4MkEsIDB4ODgyNSwgMHg4OTcxLCAweDg5QkYsIDB4ODlCRSwgMHg4OUZCLCAweDhCN0UsIDB4OEI4NCwKKyAgICAweDhCODIsIDB4OEI4NiwgMHg4Qjg1LCAweDhCN0YsIDB4OEQxNSwgMHg4RTk1LCAweDhFOTQsIDB4OEU5QSwKKyAgICAweDhFOTIsIDB4OEU5MCwgMHg4RTk2LCAweDhFOTcsIDB4OEY2MCwgMHg4RjYyLCAweDkxNDcsIDB4OTQ0QywKKyAgICAweDk0NTAsIDB4OTQ0QSwgMHg5NDRCLCAweDk0NEYsIDB4OTQ0NywgMHg5NDQ1LCAweDk0NDgsIDB4OTQ0OSwKKyAgICAweDk0NDYsIDB4OTczRiwgMHg5N0UzLCAweDk4NkEsIDB4OTg2OSwgMHg5OENCLCAweDk5NTQsIDB4OTk1QiwKKyAgICAweDlBNEUsIDB4OUE1MywgMHg5QTU0LCAweDlBNEMsIDB4OUE0RiwgMHg5QTQ4LCAweDlBNEEsIDB4OUE0OSwKKyAgICAweDlBNTIsIDB4OUE1MCwgMHg5QUQwLCAweDlCMTksIDB4OUIyQiwgMHg5QjNCLCAweDlCNTYsIDB4OUI1NSwKKyAgICAweDlDNDYsIDB4OUM0OCwgMHg5QzNGLCAweDlDNDQsIDB4OUMzOSwgMHg5QzMzLCAweDlDNDEsIDB4OUMzQywKKyAgICAweDlDMzcsIDB4OUMzNCwgMHg5QzMyLCAweDlDM0QsIDB4OUMzNiwgMHg5RERCLCAweDlERDIsIDB4OURERSwKKyAgICAweDlEREEsIDB4OURDQiwgMHg5REQwLCAweDlEREMsIDB4OUREMSwgMHg5RERGLCAweDlERTksIDB4OUREOSwKKyAgICAweDlERDgsIDB4OURENiwgMHg5REY1LCAweDlERDUsIDB4OURERCwgMHg5RUI2LCAweDlFRjAsIDB4OUYzNSwKKyAgICAweDlGMzMsIDB4OUYzMiwgMHg5RjQyLCAweDlGNkIsIDB4OUY5NSwgMHg5RkEyLCAweDUxM0QsIDB4NTI5OSwKKyAgICAweDU4RTgsIDB4NThFNywgMHg1OTcyLCAweDVCNEQsIDB4NUREOCwgMHg4ODJGLCAweDVGNEYsIDB4NjIwMSwKKyAgICAweDYyMDMsIDB4NjIwNCwgMHg2NTI5LCAweDY1MjUsIDB4NjU5NiwgMHg2NkVCLCAweDZCMTEsIDB4NkIxMiwKKyAgICAweDZCMEYsIDB4NkJDQSwgMHg3MDVCLCAweDcwNUEsIDB4NzIyMiwgMHg3MzgyLCAweDczODEsIDB4NzM4MywKKyAgICAweDc2NzAsIDB4NzdENCwgMHg3QzY3LCAweDdDNjYsIDB4N0U5NSwgMHg4MjZDLCAweDg2M0EsIDB4ODY0MCwKKyAgICAweDg2MzksIDB4ODYzQywgMHg4NjMxLCAweDg2M0IsIDB4ODYzRSwgMHg4ODMwLCAweDg4MzIsIDB4ODgyRSwKKyAgICAweDg4MzMsIDB4ODk3NiwgMHg4OTc0LCAweDg5NzMsIDB4ODlGRSwgMHg4QjhDLCAweDhCOEUsIDB4OEI4QiwKKyAgICAweDhCODgsIDB4OEM0NSwgMHg4RDE5LCAweDhFOTgsIDB4OEY2NCwgMHg4RjYzLCAweDkxQkMsIDB4OTQ2MiwKKyAgICAweDk0NTUsIDB4OTQ1RCwgMHg5NDU3LCAweDk0NUUsIDB4OTdDNCwgMHg5N0M1LCAweDk4MDAsIDB4OUE1NiwKKyAgICAweDlBNTksIDB4OUIxRSwgMHg5QjFGLCAweDlCMjAsIDB4OUM1MiwgMHg5QzU4LCAweDlDNTAsIDB4OUM0QSwKKyAgICAweDlDNEQsIDB4OUM0QiwgMHg5QzU1LCAweDlDNTksIDB4OUM0QywgMHg5QzRFLCAweDlERkIsIDB4OURGNywKKyAgICAweDlERUYsIDB4OURFMywgMHg5REVCLCAweDlERjgsIDB4OURFNCwgMHg5REY2LCAweDlERTEsIDB4OURFRSwKKyAgICAweDlERTYsIDB4OURGMiwgMHg5REYwLCAweDlERTIsIDB4OURFQywgMHg5REY0LCAweDlERjMsIDB4OURFOCwKKyAgICAweDlERUQsIDB4OUVDMiwgMHg5RUQwLCAweDlFRjIsIDB4OUVGMywgMHg5RjA2LCAweDlGMUMsIDB4OUYzOCwKKyAgICAweDlGMzcsIDB4OUYzNiwgMHg5RjQzLCAweDlGNEYsIDB4OUY3MSwgMHg5RjcwLCAweDlGNkUsIDB4OUY2RiwKKyAgICAweDU2RDMsIDB4NTZDRCwgMHg1QjRFLCAweDVDNkQsIDB4NjUyRCwgMHg2NkVELCAweDY2RUUsIDB4NkIxMywKKyAgICAweDcwNUYsIDB4NzA2MSwgMHg3MDVELCAweDcwNjAsIDB4NzIyMywgMHg3NERCLCAweDc0RTUsIDB4NzdENSwKKyAgICAweDc5MzgsIDB4NzlCNywgMHg3OUI2LCAweDdDNkEsIDB4N0U5NywgMHg3Rjg5LCAweDgyNkQsIDB4ODY0MywKKyAgICAweDg4MzgsIDB4ODgzNywgMHg4ODM1LCAweDg4NEIsIDB4OEI5NCwgMHg4Qjk1LCAweDhFOUUsIDB4OEU5RiwKKyAgICAweDhFQTAsIDB4OEU5RCwgMHg5MUJFLCAweDkxQkQsIDB4OTFDMiwgMHg5NDZCLCAweDk0NjgsIDB4OTQ2OSwKKyAgICAweDk2RTUsIDB4OTc0NiwgMHg5NzQzLCAweDk3NDcsIDB4OTdDNywgMHg5N0U1LCAweDlBNUUsIDB4OUFENSwKKyAgICAweDlCNTksIDB4OUM2MywgMHg5QzY3LCAweDlDNjYsIDB4OUM2MiwgMHg5QzVFLCAweDlDNjAsIDB4OUUwMiwKKyAgICAweDlERkUsIDB4OUUwNywgMHg5RTAzLCAweDlFMDYsIDB4OUUwNSwgMHg5RTAwLCAweDlFMDEsIDB4OUUwOSwKKyAgICAweDlERkYsIDB4OURGRCwgMHg5RTA0LCAweDlFQTAsIDB4OUYxRSwgMHg5RjQ2LCAweDlGNzQsIDB4OUY3NSwKKyAgICAweDlGNzYsIDB4NTZENCwgMHg2NTJFLCAweDY1QjgsIDB4NkIxOCwgMHg2QjE5LCAweDZCMTcsIDB4NkIxQSwKKyAgICAweDcwNjIsIDB4NzIyNiwgMHg3MkFBLCAweDc3RDgsIDB4NzdEOSwgMHg3OTM5LCAweDdDNjksIDB4N0M2QiwKKyAgICAweDdDRjYsIDB4N0U5QSwgMHg3RTk4LCAweDdFOUIsIDB4N0U5OSwgMHg4MUUwLCAweDgxRTEsIDB4ODY0NiwKKyAgICAweDg2NDcsIDB4ODY0OCwgMHg4OTc5LCAweDg5N0EsIDB4ODk3QywgMHg4OTdCLCAweDg5RkYsIDB4OEI5OCwKKyAgICAweDhCOTksIDB4OEVBNSwgMHg4RUE0LCAweDhFQTMsIDB4OTQ2RSwgMHg5NDZELCAweDk0NkYsIDB4OTQ3MSwKKyAgICAweDk0NzMsIDB4OTc0OSwgMHg5ODcyLCAweDk5NUYsIDB4OUM2OCwgMHg5QzZFLCAweDlDNkQsIDB4OUUwQiwKKyAgICAweDlFMEQsIDB4OUUxMCwgMHg5RTBGLCAweDlFMTIsIDB4OUUxMSwgMHg5RUExLCAweDlFRjUsIDB4OUYwOSwKKyAgICAweDlGNDcsIDB4OUY3OCwgMHg5RjdCLCAweDlGN0EsIDB4OUY3OSwgMHg1NzFFLCAweDcwNjYsIDB4N0M2RiwKKyAgICAweDg4M0MsIDB4OERCMiwgMHg4RUE2LCAweDkxQzMsIDB4OTQ3NCwgMHg5NDc4LCAweDk0NzYsIDB4OTQ3NSwKKyAgICAweDlBNjAsIDB4OUIyRSwgMHg5Qzc0LCAweDlDNzMsIDB4OUM3MSwgMHg5Qzc1LCAweDlFMTQsIDB4OUUxMywKKyAgICAweDlFRjYsIDB4OUYwQSwgMHg5RkE0LCAweDcwNjgsIDB4NzA2NSwgMHg3Q0Y3LCAweDg2NkEsIDB4ODgzRSwKKyAgICAweDg4M0QsIDB4ODgzRiwgMHg4QjlFLCAweDhDOUMsIDB4OEVBOSwgMHg4RUM5LCAweDk3NEIsIDB4OTg3MywKKyAgICAweDk4NzQsIDB4OThDQywgMHg5OTYxLCAweDk5QUIsIDB4OUE2NCwgMHg5QTY2LCAweDlBNjcsIDB4OUIyNCwKKyAgICAweDlFMTUsIDB4OUUxNywgMHg5RjQ4LCAweDYyMDcsIDB4NkIxRSwgMHg3MjI3LCAweDg2NEMsIDB4OEVBOCwKKyAgICAweDk0ODIsIDB4OTQ4MCwgMHg5NDgxLCAweDlBNjksIDB4OUE2OCwgMHg5RTE5LCAweDg2NEIsIDB4OEI5RiwKKyAgICAweDk0ODMsIDB4OUM3OSwgMHg5RUI3LCAweDc2NzUsIDB4OUE2QiwgMHg5QzdBLCAweDlFMUQsIDB4NzA2OSwKKyAgICAweDcwNkEsIDB4NzIyOSwgMHg5RUE0LCAweDlGN0UsIDB4OUY0OSwgMHg5Rjk4LCAweEZFMTksIDB4MjIzQywKKyAgICAweDAwMjAsIDB4MDAyMSwgMHgwMDIyLCAweDAwMjMsIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywKKyAgICAweDAwMjgsIDB4MDAyOSwgMHgwMDJBLCAweDAwMkIsIDB4MDAyQywgMHgwMDJELCAweDAwMkUsIDB4MDAyRiwKKyAgICAweDAwMzAsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzMsIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsIDB4MDAzNywKKyAgICAweDAwMzgsIDB4MDAzOSwgMHgwMDNBLCAweDAwM0IsIDB4MDAzQywgMHgwMDNELCAweDAwM0UsIDB4MDAzRiwKKyAgICAweDAwNDAsIDB4MDA0MSwgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LCAweDAwNDYsIDB4MDA0NywKKyAgICAweDAwNDgsIDB4MDA0OSwgMHgwMDRBLCAweDAwNEIsIDB4MDA0QywgMHgwMDRELCAweDAwNEUsIDB4MDA0RiwKKyAgICAweDAwNTAsIDB4MDA1MSwgMHgwMDUyLCAweDAwNTMsIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywKKyAgICAweDAwNTgsIDB4MDA1OSwgMHgwMDVBLCAweDAwNUIsIDB4MDA1QywgMHgwMDVELCAweDAwNUUsIDB4MDA1RiwKKyAgICAweDAwNjAsIDB4MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDA2NCwgMHgwMDY1LCAweDAwNjYsIDB4MDA2NywKKyAgICAweDAwNjgsIDB4MDA2OSwgMHgwMDZBLCAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwKKyAgICAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywKKyAgICAweDAwNzgsIDB4MDA3OSwgMHgwMDdBLCAweDAwN0IsIDB4MDA3QywgMHgwMDdELCAweDAwN0UsIDB4RkUzMywKKyAgICAweDI1NzQsIDB4RkUzNCwgMHhGRTRGLCAweDAzMDgsIDB4RkYzRSwgMHgzMEZELCAweDMwRkUsIDB4MzA5RCwKKyAgICAweDMwOUUsIDB4RkZGRCwgMHgzMDA1LCAweDMwMDYsIDB4MzAwNywgMHgzMEZDLCAweEZGM0IsIDB4RkYzRCwKKyAgICAweDI3M0QsIDB4MzA0MSwgMHgzMDQyLCAweDMwNDMsIDB4MzA0NCwgMHgzMDQ1LCAweDMwNDYsIDB4MzA0NywKKyAgICAweDMwNDgsIDB4MzA0OSwgMHgzMDRBLCAweDMwNEIsIDB4MzA0QywgMHgzMDRELCAweDMwNEUsIDB4MzA0RiwKKyAgICAweDMwNTAsIDB4MzA1MSwgMHgzMDUyLCAweDMwNTMsIDB4MzA1NCwgMHgzMDU1LCAweDMwNTYsIDB4MzA1NywKKyAgICAweDMwNTgsIDB4MzA1OSwgMHgzMDVBLCAweDMwNUIsIDB4MzA1QywgMHgzMDVELCAweDMwNUUsIDB4MzA1RiwKKyAgICAweDMwNjAsIDB4MzA2MSwgMHgzMDYyLCAweDMwNjMsIDB4MzA2NCwgMHgzMDY1LCAweDMwNjYsIDB4MzA2NywKKyAgICAweDMwNjgsIDB4MzA2OSwgMHgzMDZBLCAweDMwNkIsIDB4MzA2QywgMHgzMDZELCAweDMwNkUsIDB4MzA2RiwKKyAgICAweDMwNzAsIDB4MzA3MSwgMHgzMDcyLCAweDMwNzMsIDB4MzA3NCwgMHgzMDc1LCAweDMwNzYsIDB4MzA3NywKKyAgICAweDMwNzgsIDB4MzA3OSwgMHgzMDdBLCAweDMwN0IsIDB4MzA3QywgMHgzMDdELCAweDMwN0UsIDB4MzA3RiwKKyAgICAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAweDMwODMsIDB4MzA4NCwgMHgzMDg1LCAweDMwODYsIDB4MzA4NywKKyAgICAweDMwODgsIDB4MzA4OSwgMHgzMDhBLCAweDMwOEIsIDB4MzA4QywgMHgzMDhELCAweDMwOEUsIDB4MzA4RiwKKyAgICAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAweDMwOTMsIDB4MzBBMSwgMHgzMEEyLCAweDMwQTMsIDB4MzBBNCwKKyAgICAweDMwQTUsIDB4MzBBNiwgMHgzMEE3LCAweDMwQTgsIDB4MzBBOSwgMHgzMEFBLCAweDMwQUIsIDB4MzBBQywKKyAgICAweDMwQUQsIDB4MzBBRSwgMHgzMEFGLCAweDMwQjAsIDB4MzBCMSwgMHgzMEIyLCAweDMwQjMsIDB4MzBCNCwKKyAgICAweDMwQjUsIDB4MzBCNiwgMHgzMEI3LCAweDMwQjgsIDB4MzBCOSwgMHgzMEJBLCAweDMwQkIsIDB4MzBCQywKKyAgICAweDMwQkQsIDB4MzBCRSwgMHgzMEJGLCAweDMwQzAsIDB4MzBDMSwgMHgzMEMyLCAweDMwQzMsIDB4MzBDNCwKKyAgICAweDMwQzUsIDB4MzBDNiwgMHgzMEM3LCAweDMwQzgsIDB4MzBDOSwgMHgzMENBLCAweDMwQ0IsIDB4MzBDQywKKyAgICAweDMwQ0QsIDB4MzBDRSwgMHgzMENGLCAweDMwRDAsIDB4MzBEMSwgMHgzMEQyLCAweDMwRDMsIDB4MzBENCwKKyAgICAweDMwRDUsIDB4MzBENiwgMHgzMEQ3LCAweDMwRDgsIDB4MzBEOSwgMHgzMERBLCAweDMwREIsIDB4MzBEQywKKyAgICAweDMwREQsIDB4MzBERSwgMHgzMERGLCAweDMwRTAsIDB4MzBFMSwgMHgzMEUyLCAweDMwRTMsIDB4MzBFNCwKKyAgICAweDMwRTUsIDB4MzBFNiwgMHgzMEU3LCAweDMwRTgsIDB4MzBFOSwgMHgzMEVBLCAweDMwRUIsIDB4MzBFQywKKyAgICAweDMwRUQsIDB4MzBFRSwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLCAweDMwRjMsIDB4MzBGNCwKKyAgICAweDMwRjUsIDB4MzBGNiwgMHgwNDEwLCAweDA0MTEsIDB4MDQxMiwgMHgwNDEzLCAweDA0MTQsIDB4MDQxNSwKKyAgICAweDA0MDEsIDB4MDQxNiwgMHgwNDE3LCAweDA0MTgsIDB4MDQxOSwgMHgwNDFBLCAweDA0MUIsIDB4MDQxQywKKyAgICAweDA0MUQsIDB4MDQxRSwgMHgwNDFGLCAweDA0MjAsIDB4MDQyMSwgMHgwNDIyLCAweDA0MjMsIDB4MDQyNCwKKyAgICAweDA0MjUsIDB4MDQyNiwgMHgwNDI3LCAweDA0MjgsIDB4MDQyOSwgMHgwNDJBLCAweDA0MkIsIDB4MDQyQywKKyAgICAweDA0MkQsIDB4MDQyRSwgMHgwNDJGLCAweDA0MzAsIDB4MDQzMSwgMHgwNDMyLCAweDA0MzMsIDB4MDQzNCwKKyAgICAweDA0MzUsIDB4MDQ1MSwgMHgwNDM2LCAweDA0MzcsIDB4MDQzOCwgMHgwNDM5LCAweDA0M0EsIDB4MDQzQiwKKyAgICAweDA0M0MsIDB4MDQzRCwgMHgwNDNFLCAweDA0M0YsIDB4MDQ0MCwgMHgwNDQxLCAweDA0NDIsIDB4MDQ0MywKKyAgICAweDA0NDQsIDB4MDQ0NSwgMHgwNDQ2LCAweDA0NDcsIDB4MDQ0OCwgMHgwNDQ5LCAweDA0NEEsIDB4MDQ0QiwKKyAgICAweDA0NEMsIDB4MDQ0RCwgMHgwNDRFLCAweDA0NEYsIDB4MjFFNywgMHgyMUI4LCAweDIxQjksIDB4NEU0MSwKKyAgICAweDAwMDAsIDB4NEU1QSwgMHgwMDAwLCAweDUyMDIsIDB4NDQ5MSwgMHg5RkIwLCAweDUxODgsIDB4OUZCMSwKKyAgICAweDAwMDAsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwKKyAgICAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwKKyAgICAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwKKyAgICAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwKKyAgICAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwKKyAgICAweEZGRkQsIDB4MDBBQywgMHhGRkU0LCAweEZGMDcsIDB4RkYwMiwgMHgzMjMxLCAweDIxMTYsIDB4MjEyMSwKKyAgICAweDc4ODEsIDB4OTJCOSwgMHg4OENGLCAweDU4QkIsIDB4NjA1MiwgMHg3Q0E3LCAweDVBRkEsIDB4MjU1NCwKKyAgICAweDI1NjYsIDB4MjU1NywgMHgyNTYwLCAweDI1NkMsIDB4MjU2MywgMHgyNTVBLCAweDI1NjksIDB4MjU1RCwKKyAgICAweDI1NTIsIDB4MjU2NCwgMHgyNTU1LCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweDI1NTgsIDB4MjU2NywKKyAgICAweDI1NUIsIDB4MjU1MywgMHgyNTY1LCAweDI1NTYsIDB4MjU1RiwgMHgyNTZCLCAweDI1NjIsIDB4MjU1OSwKKyAgICAweDI1NjgsIDB4MjU1QywgMHgyNTUxLCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwKKyAgICAweDI1OTMsIDB4RkZGRCwgMHhGRkZELCAweEZFMTAsIDB4RkUxMSwgMHhGRTEyLCAweEZGRkQsIDB4RkUxNCwKKyAgICAweEZFMTMsIDB4RkUxNiwgMHhGRTE1LCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwKKyAgICAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweEZGRkQsIDB4RkZGRCwKKyAgICAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweDAwMDAsIDB4NTdCRSwgMHgwMDAwLCAweDcxM0UsIDB4MDAwMCwKKyAgICAweDY5QTIsIDB4MDAwMCwgMHg1Qjc0LCAweDdBNDksIDB4MDAwMCwgMHgwMDAwLCAweDdBNjUsIDB4N0E3RCwKKyAgICAweDAwMDAsIDB4N0FCQiwgMHg3QUIwLCAweDdBQzIsIDB4N0FDMywgMHg3MUQxLCAweDAwMDAsIDB4NDFDQSwKKyAgICAweDdBREEsIDB4N0FERCwgMHg3QUVBLCAweDQxRUYsIDB4NTRCMiwgMHgwMDAwLCAweDdCMEIsIDB4N0I1NSwKKyAgICAweDdCMjksIDB4MDAwMCwgMHgwMDAwLCAweDdCQTIsIDB4N0I2RiwgMHg4MzlDLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDdCRDAsIDB4ODQyMSwgMHg3QjkyLCAweEZGRkQsIDB4MDAwMCwgMHhGRkZELCAweDg0OTIsIDB4N0JGQSwKKyAgICAweEZGRkQsIDB4N0MzNSwgMHgwMDAwLCAweDdDNDQsIDB4N0M4MywgMHgwMDAwLCAweDdDQTYsIDB4MDAwMCwKKyAgICAweDdDQzksIDB4N0NDNywgMHg3Q0U2LCAweEZGRkQsIDB4N0NGMywgMHg3Q0Y1LCAweDdFNjcsIDB4NDUxRCwKKyAgICAweDAwMDAsIDB4N0Q1RCwgMHgwMDAwLCAweDdEODksIDB4N0RBQiwgMHg3MTM1LCAweDdEQjMsIDB4N0RENiwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg3REU0LCAweDNEMTMsIDB4N0RGNSwgMHgwMDAwLCAweDdERTUsIDB4MDAwMCwKKyAgICAweEZGRkQsIDB4MDAwMCwgMHgwMDAwLCAweDdFNkUsIDB4RkZGRCwgMHg0MzJCLCAweDk0NkMsIDB4N0UyNywKKyAgICAweDdGNDAsIDB4N0Y0MSwgMHg3RjQ3LCAweDc5MzYsIDB4MDAwMCwgMHg5OUUxLCAweDdGOTcsIDB4MDAwMCwKKyAgICAweDdGQTMsIDB4MDAwMCwgMHgwMDAwLCAweDQ1NUMsIDB4MDAwMCwgMHgwMDAwLCAweDdGRkEsIDB4MDAwMCwKKyAgICAweEZBNUIsIDB4ODAwOCwgMHg4MDFELCAweEZGRkQsIDB4ODAyRiwgMHgwMDAwLCAweDAwMDAsIDB4ODAzQiwKKyAgICAweDgwM0MsIDB4ODA2MSwgMHgwMDAwLCAweDQ5ODksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NjcyNSwKKyAgICAweDgwQTcsIDB4MDAwMCwgMHg4MTA3LCAweDgxMUEsIDB4NThCMCwgMHgwMDAwLCAweDZDN0YsIDB4MDAwMCwKKyAgICAweDY0RTcsIDB4MDAwMCwgMHg4MjE4LCAweDAwMDAsIDB4NkE1MywgMHgwMDAwLCAweDAwMDAsIDB4NDQ3QSwKKyAgICAweDgyMjksIDB4MDAwMCwgMHgwMDAwLCAweDRGRjksIDB4MDAwMCwgMHg4NEUyLCAweDgzNjIsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODJBQSwgMHg2OTFCLCAweDAwMDAsIDB4NDFEQiwKKyAgICAweDg1NEIsIDB4ODJEMCwgMHg4MzFBLCAweDAwMDAsIDB4MDAwMCwgMHgzNkMxLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDgyN0IsIDB4ODJFMiwgMHg4MzE4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDNEQkYsIDB4ODMxRCwgMHg1NUVDLCAweDgzODUsIDB4NDUwQiwgMHgwMDAwLCAweDgzQUMsIDB4RkZGRCwKKyAgICAweDgzRDMsIDB4MDAwMCwgMHg2QTU3LCAweDg1NUEsIDB4MzQ5NiwgMHgwMDAwLCAweDg0NTgsIDB4MDAwMCwKKyAgICAweDg0NzEsIDB4M0REMywgMHg0NEU0LCAweDZBQTcsIDB4ODQ0QSwgMHg3OTU4LCAweEZGRkQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4NERFLCAweEZGRkQsIDB4ODM5MSwgMHg0NEEwLCAweDg0OTMsIDB4ODRFNCwKKyAgICAweDAwMDAsIDB4NDI0MCwgMHgwMDAwLCAweDQ1NDMsIDB4ODUzNCwgMHg1QUYyLCAweDQ1MjMsIDB4NDUyNywKKyAgICAweDg1NzMsIDB4NDUxNiwgMHg2N0JGLCAweDg2MTYsIDB4MDAwMCwgMHgwMDAwLCAweDg1QzEsIDB4MDAwMCwKKyAgICAweDg2MDIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NDU2QSwgMHg4NjI4LCAweDM2NDgsIDB4MDAwMCwKKyAgICAweDUzRjcsIDB4MDAwMCwgMHg4NjdFLCAweEZGRkQsIDB4MDAwMCwgMHg4N0VFLCAweDAwMDAsIDB4ODdCMSwKKyAgICAweDg3REEsIDB4ODgwRiwgMHg1NjYxLCAweDg2NkMsIDB4Njg1NiwgMHg0NjBGLCAweDg4NDUsIDB4ODg0NiwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NUUsIDB4ODg5QywgMHg0NjVCLCAweDg4QjQsIDB4ODhCNSwKKyAgICAweDg4QzUsIDB4MDAwMCwgMHg4OTg3LCAweEZGRkQsIDB4RkZGRCwgMHhGRkZELCAweDg5QTcsIDB4ODlCQywKKyAgICAweDAwMDAsIDB4ODlFNywgMHgwMDAwLCAweDAwMDAsIDB4OEE5QywgMHg3NzkzLCAweDkxRkUsIDB4OEE5MCwKKyAgICAweDAwMDAsIDB4N0FFOSwgMHgwMDAwLCAweDQ3MTMsIDB4MDAwMCwgMHg3MTdDLCAweDhCMEMsIDB4OEIxRiwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QjNGLCAweEZGRkQsIDB4OEI0RCwgMHg4QUE5LCAweDAwMDAsIDB4OEI5MCwKKyAgICAweDhCOUIsIDB4OEFBRiwgMHgwMDAwLCAweDQ2MTUsIDB4ODg0RiwgMHg4QzlCLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MzcyNSwgMHgwMDAwLCAweDhDRDYsIDB4MDAwMCwgMHgwMDAwLCAweDhEMTIsIDB4OEQwMywKKyAgICAweDAwMDAsIDB4OENEQiwgMHg3MDVDLCAweDhEMTEsIDB4M0VEMCwgMHgwMDAwLCAweDhEQTksIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzQjdDLCAweDAwMDAsIDB4MDAwMCwgMHg3QUU3LCAweDhFQUQsIDB4OEVCNiwKKyAgICAweDhFQzMsIDB4OTJENCwgMHg4RjE5LCAweDhGMkQsIDB4MDAwMCwgMHgwMDAwLCAweDhGQTUsIDB4OTMwMywKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4RkIzLCAweEZGRkQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NUVGOCwKKyAgICAweDAwMDAsIDB4OEZGOSwgMHhGRkZELCAweDAwMDAsIDB4Mzk4MCwgMHgwMDAwLCAweDkwMzcsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4OTA2MSwgMHgwMDAwLCAweDAwMDAsIDB4OTBBOCwgMHgwMDAwLCAweDkwQzQsIDB4MDAwMCwKKyAgICAweDkwQUUsIDB4RkEyNiwgMHg5MTY3LCAweDkxQTksIDB4OTFDNCwgMHg3Q0FDLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDkyMEUsIDB4NkM5RiwgMHg5MjQxLCAweDkyNjIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5MzJDLCAweDkzNkIsIDB4MDAwMCwgMHgwMDAwLCAweDVBQzMsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NDk2NSwgMHg5MjQ0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkzNzMsIDB4OTQ1QiwKKyAgICAweDhFQkMsIDB4OTU4NSwgMHg5NUE2LCAweDk0MjYsIDB4OTVBMCwgMHg2RkY2LCAweDQyQjksIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg0OURGLCAweDZDMUMsIDB4OTY3QiwgMHg5Njk2LCAweDQxNkMsIDB4OTZBMywKKyAgICAweDAwMDAsIDB4NjFEQSwgMHhFNEFELCAweDc4RjUsIDB4MDAwMCwgMHg5NkJELCAweDUzQ0MsIDB4NDlBMSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDk3MzEsIDB4ODY0MiwgMHg5NzM2LCAweDRBMEYsIDB4NDUzRCwgMHg0NTg1LCAweDAwMDAsIDB4NzA3NSwKKyAgICAweDVCNDEsIDB4OTcxQiwgMHhGRkZELCAweDAwMDAsIDB4OTc1NywgMHg1QjRBLCAweDAwMDAsIDB4OTc1RiwKKyAgICAweDk0MjUsIDB4NTBEMCwgMHgwMDAwLCAweDAwMDAsIDB4OTc4OSwgMHg5NzlGLCAweDk3QjEsIDB4OTdCRSwKKyAgICAweDk3QzAsIDB4OTdEMiwgMHg5N0UwLCAweDAwMDAsIDB4OTdFRSwgMHg3NDFDLCAweDAwMDAsIDB4RkZGRCwKKyAgICAweDk3RjUsIDB4MDAwMCwgMHgwMDAwLCAweDRBRDEsIDB4OTgzNCwgMHg5ODMzLCAweDk4NEIsIDB4OTg2NiwKKyAgICAweDNCMEUsIDB4MDAwMCwgMHgzRDUxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDk4Q0EsIDB4OThCNywKKyAgICAweDk4QzgsIDB4OThDNywgMHg0QUZGLCAweDAwMDAsIDB4MDAwMCwgMHg1NUIwLCAweDk4RTEsIDB4OThFNiwKKyAgICAweDk4RUMsIDB4OTM3OCwgMHg5OTM5LCAweDAwMDAsIDB4NEI3MiwgMHgwMDAwLCAweDAwMDAsIDB4OTlGNSwKKyAgICAweDlBMEMsIDB4OUEzQiwgMHg5QTEwLCAweDlBNTgsIDB4MDAwMCwgMHgzNkM0LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDlBRTAsIDB4OUFFMiwgMHgwMDAwLCAweDlBRjQsIDB4NEMwRSwgMHg5QjE0LCAweDlCMkQsIDB4MDAwMCwKKyAgICAweDUwMzQsIDB4OUIzNCwgMHgzOEMzLCAweDAwMDAsIDB4OUI1MCwgMHg5QjQwLCAweDAwMDAsIDB4NUE0NSwKKyAgICAweDAwMDAsIDB4OUI4RSwgMHg5QzAyLCAweDlCRkYsIDB4OUMwQywgMHgwMDAwLCAweDlERDQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5RDdFLCAweDlEODMsIDB4MDAwMCwKKyAgICAweDlFMEUsIDB4OURDNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDlEMzksIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4OUU5MCwgMHg5RTk1LCAweDlFOUUsIDB4OUVBMiwgMHg0RDM0LCAweDlFQUEsIDB4OUVBRiwKKyAgICAweDAwMDAsIDB4OUVDMSwgMHgzQjYwLCAweDM5RTUsIDB4M0QxRCwgMHg0RjMyLCAweDM3QkUsIDB4MDAwMCwKKyAgICAweDlGMDIsIDB4OUYwOCwgMHg0Qjk2LCAweDk0MjQsIDB4MDAwMCwgMHg5RjE3LCAweDAwMDAsIDB4OUYzOSwKKyAgICAweDU2OUYsIDB4NTY4QSwgMHg5RjQ1LCAweDk5QjgsIDB4MDAwMCwgMHg5N0YyLCAweDg0N0YsIDB4RkZGRCwKKyAgICAweDlGNjksIDB4N0FEQywgMHg5RjhFLCAweDcyMTYsIDB4NEJCRSwgMHgwMDAwLCAweDAwMDAsIDB4NzE3NywKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDczOUUsIDB4MDAwMCwgMHgwMDAwLCAweDc5OUYsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4OTM2OSwgMHg5M0YzLCAweDAwMDAsIDB4OTJFQywgMHg5MzgxLCAweDkzQ0IsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NzIxNywgMHgzRUVCLCAweDc3NzIsIDB4N0E0MywgMHg3MEQwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDcxN0UsIDB4MDAwMCwgMHg3MEEzLCAweDAwMDAsIDB4MDAwMCwgMHgzRUM3LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MzcyMiwgMHgwMDAwLCAweDAwMDAsIDB4MzZFMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDM3MjMsIDB4MDAwMCwgMHg1NzVCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDg1MDMsIDB4MDAwMCwgMHhGRkZELCAweDg0NTUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg0NEY0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDY3RjksIDB4MzczMywKKyAgICAweDNDMTUsIDB4M0RFNywgMHg1ODZDLCAweDAwMDAsIDB4NjgxMCwgMHg0MDU3LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDU0Q0IsIDB4NTY5RSwgMHgwMDAwLCAweDU2OTIsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHhGRkZELCAweDAwMDAsIDB4OTM5QywgMHg0RUY4LCAweDUxMkIsIDB4MzgxOSwKKyAgICAweDAwMDAsIDB4NEVCQywgMHgwMDAwLCAweEZGRkQsIDB4NEY0QiwgMHg0RjhBLCAweDAwMDAsIDB4NUE2OCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzOTk5LCAweDAwMDAsIDB4MDAwMCwgMHgzNDM1LCAweDRGMjksIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QURBLCAweDAwMDAsIDB4NEU5OCwgMHg1MENELCAweDUxMEQsIDB4NEZBMiwKKyAgICAweDRGMDMsIDB4MDAwMCwgMHgwMDAwLCAweDRGNDIsIDB4NTAyRSwgMHg1MDZDLCAweDUwODEsIDB4NEZDQywKKyAgICAweDRGRTUsIDB4NTA1OCwgMHg1MEZDLCAweDZFNzYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NkQ3MiwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1MUE4LCAweDUxQzMsIDB4MDAwMCwgMHg0NERELCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4OEQ3QSwgMHgwMDAwLCAweDAwMDAsIDB4NTI1OSwgMHg1MkE0LCAweDAwMDAsIDB4NTJFMSwKKyAgICAweEZGRkQsIDB4NDY3QSwgMHg3MThDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NjlEMSwKKyAgICAweDAwMDAsIDB4RkZGRCwgMHgzRURFLCAweDc0OTksIDB4NzQxNCwgMHg3NDU2LCAweDczOTgsIDB4NEI4RSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1M0QwLCAweDM1ODQsIDB4NzIwRiwgMHgwMDAwLCAweDU1QjQsIDB4MDAwMCwKKyAgICAweDU0Q0QsIDB4MDAwMCwgMHg1NzFELCAweDkyNUQsIDB4OTZGNCwgMHg1N0RELCAweDU3OEQsIDB4NTc3RiwKKyAgICAweDM2M0UsIDB4NThDQiwgMHg1QTk5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NUEyQywKKyAgICAweDU5QjgsIDB4NUE3RSwgMHg1QUNGLCAweDVBMTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDM2RjUsIDB4NkQwNSwgMHg3NDQzLCAweDVBMjEsIDB4MDAwMCwgMHg1QTgxLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDkzRTAsIDB4NzQ4QywgMHgwMDAwLCAweDcxMDUsIDB4NDk3MiwgMHg5NDA4LCAweDAwMDAsIDB4OTNCRCwKKyAgICAweDM3QTAsIDB4NUMxRSwgMHg1QzlFLCAweDVFNUUsIDB4NUU0OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDVFQ0QsIDB4NUI0RiwgMHgwMDAwLCAweDAwMDAsIDB4MzcwMSwgMHgwMDAwLCAweDM2REQsIDB4MDAwMCwKKyAgICAweDM2RDMsIDB4ODEyQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDVGMEMsIDB4NUYwRSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1QTZCLCAweDAwMDAsIDB4NUI0NCwgMHgwMDAwLCAweDg4NjAsIDB4NjA3RSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1RkRCLCAweDNFQjgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDYxQzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NjE5OSwgMHg2MTk4LCAweDYwNzUsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDY0NzEsIDB4MDAwMCwgMHgwMDAwLCAweDNBMjksIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDYzMzcsIDB4NjRCNiwgMHg2MzMxLCAweDYzRDEsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NjJBNCwgMHgwMDAwLCAweDY0M0IsIDB4NjU2QiwgMHg2OTcyLCAweDNCRjQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDU1MEQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NjZDRSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzQUUwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NzhFRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgzNDY0LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NjY4RSwgMHgwMDAwLCAweDY2NkIsIDB4NEI5MywgMHg2NjMwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDY2NjMsIDB4MDAwMCwgMHgwMDAwLCAweDY2MUUsIDB4MDAwMCwgMHgzOEQxLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDNCOTksIDB4MDAwMCwgMHgwMDAwLCAweDc0RDAsIDB4M0I5NiwgMHgwMDAwLCAweDY4QjYsIDB4RkZGRCwKKyAgICAweDNCQzQsIDB4NkFCRSwgMHgwMDAwLCAweDAwMDAsIDB4NkEzMywgMHg2QTUyLCAweDZBQzksIDB4NkIwNSwKKyAgICAweDAwMDAsIDB4NjUxMSwgMHg2ODk4LCAweDZBNEMsIDB4M0JENywgMHg2QTdBLCAweDZCNTcsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4OTNBMCwgMHg5MkYyLCAweDAwMDAsIDB4MDAwMCwgMHg5Mjg5LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDk0NjcsIDB4NkRBNSwgMHg2RjBCLCAweEZGRkQsIDB4MDAwMCwgMHgzRDhGLCAweDZFMDQsIDB4MDAwMCwKKyAgICAweDVBM0QsIDB4NkUwQSwgMHg1ODQ3LCAweDZEMjQsIDB4Nzg0MiwgMHg3MTNCLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDcwRjEsIDB4NzI1MCwgMHg3Mjg3LCAweDcyOTQsIDB4MDAwMCwgMHgwMDAwLCAweDUxNzksIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NzQ3QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4M0YwNiwKKyAgICAweDNFQjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NjBBNywgMHgzRUYzLCAweDc0Q0MsIDB4NzQzQywKKyAgICAweDkzODcsIDB4NzQzNywgMHg0NDlGLCAweDAwMDAsIDB4NDU1MSwgMHg3NTgzLCAweDNGNjMsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4M0Y1OCwgMHg3NTU1LCAweDc2NzMsIDB4MDAwMCwgMHhGRkZELCAweDc0NjgsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzQUZCLCAweDNEQ0QsIDB4MDAwMCwgMHgzRUZGLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDkxRkEsIDB4NTczMiwgMHg5MzQyLCAweDAwMDAsIDB4MDAwMCwgMHg1MERGLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDc3NzgsIDB4MDAwMCwgMHg3NzBFLCAweDc3MEYsIDB4Nzc3QiwgMHgwMDAwLCAweDAwMDAsIDB4M0E1RSwKKyAgICAweDAwMDAsIDB4NzQzOCwgMHg3NDlCLCAweDNFQkYsIDB4MDAwMCwgMHgwMDAwLCAweDQwQzgsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4OTMwNywgMHgwMDAwLCAweDc4MUUsIDB4Nzg4RCwgMHg3ODg4LCAweDc4RDIsIDB4NzNEMCwKKyAgICAweDc5NTksIDB4MDAwMCwgMHgwMDAwLCAweDQxMEUsIDB4RkZGRCwgMHhGRkZELCAweDc5QTUsIDB4NkEyRCwKKyAgICAweDAwMDAsIDB4N0EzQSwgMHg3OUY0LCAweDQxNkUsIDB4MDAwMCwgMHg0MTMyLCAweDkyMzUsIDB4NzlGMSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgzNTk3LCAweDU1NkIsIDB4MzU3MCwKKyAgICAweDM2QUEsIDB4MDAwMCwgMHgwMDAwLCAweDdBRTIsIDB4NUE1OSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDVBMEQsIDB4MDAwMCwgMHg3OEYwLCAweDVBMkEsIDB4MDAwMCwgMHg3QUZFLCAweDQxRjksIDB4N0M1RCwKKyAgICAweDdDNkQsIDB4NDIxMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg3Q0NELCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDdDOEUsIDB4N0M3QywgMHg3Q0FFLCAweDZBQjIsIDB4N0REQywgMHg3RTA3LCAweDdERDMsIDB4N0Y0RSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDdEOTcsIDB4MDAwMCwgMHg0MjZBLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDY3RDYsIDB4MDAwMCwgMHgwMDAwLCAweDU3QzQsIDB4MDAwMCwgMHgwMDAwLCAweDdGREQsIDB4N0IyNywKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDdCMEMsIDB4MDAwMCwgMHg5OUU2LCAweDg2NDUsIDB4OUE2MywKKyAgICAweDZBMUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OUExRiwgMHgwMDAwLCAweDg0OTUsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NDRFQSwgMHg4MTM3LCAweDQ0MDIsIDB4ODBDNiwgMHg4MTA5LCAweDgxNDIsIDB4MDAwMCwKKyAgICAweDk4QzMsIDB4MDAwMCwgMHg4MjYyLCAweDgyNjUsIDB4MDAwMCwgMHg4NDUzLCAweDAwMDAsIDB4ODYxMCwKKyAgICAweDAwMDAsIDB4NUE4NiwgMHg0MTdGLCAweDAwMDAsIDB4NUIyQiwgMHgwMDAwLCAweDVBRTQsIDB4MDAwMCwKKyAgICAweDg2QTAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MkQsIDB4MDAwMCwgMHg1QTAyLCAweDg4NkUsIDB4NEY0NSwKKyAgICAweDg4ODcsIDB4ODhCRiwgMHg4OEU2LCAweDg5NjUsIDB4ODk0RCwgMHgwMDAwLCAweDg5NTQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgzRUFELCAweDg0QTMsIDB4NDZGNSwKKyAgICAweDQ2Q0YsIDB4MzdGMiwgMHg4QTNELCAweDhBMUMsIDB4MDAwMCwgMHg1RjRELCAweDkyMkIsIDB4MDAwMCwKKyAgICAweDY1RDQsIDB4NzEyOSwgMHg3MEM0LCAweDAwMDAsIDB4OUQ2RCwgMHg4QzlGLCAweDhDRTksIDB4MDAwMCwKKyAgICAweDU5OUEsIDB4NzdDMywgMHg1OUYwLCAweDM2RDQsIDB4OEUyQSwgMHg4RUE3LCAweDAwMDAsIDB4OEYzMCwKKyAgICAweDhGNEEsIDB4NDJGNCwgMHg2QzU4LCAweDZGQkIsIDB4MDAwMCwgMHg0ODlCLCAweDZGNzksIDB4NkU4QiwKKyAgICAweDAwMDAsIDB4OUJFOSwgMHgzNkI1LCAweDAwMDAsIDB4OTBCQiwgMHg0OEI0LCAweDU1NzEsIDB4NDkwNiwKKyAgICAweDkxQkIsIDB4OTQwNCwgMHgwMDAwLCAweDQwNjIsIDB4MDAwMCwgMHg5NDI3LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDg0RTUsIDB4OEEyQiwgMHg5NTk5LCAweDk1QTcsIDB4OTU5NywgMHg5NTk2LCAweDAwMDAsIDB4NzQ0NSwKKyAgICAweDNFQzIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4M0VFNywgMHgwMDAwLCAweDk2OEYsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzRUNDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDc0MTIsIDB4NzQ2QiwKKyAgICAweDNFRkMsIDB4OTc0MSwgMHgwMDAwLCAweDY4NDcsIDB4NEExRCwgMHgwMDAwLCAweDAwMDAsIDB4RkZGRCwKKyAgICAweDkzNjgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MkJBLCAweDVCMTEsIDB4OEI2OSwKKyAgICAweDQ5M0MsIDB4NzNGOSwgMHgwMDAwLCAweDk3OUIsIDB4RkZGRCwgMHg5OTM4LCAweDAwMDAsIDB4NURDMSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5ODFGLCAweDAwMDAsIDB4OTJGNiwgMHgwMDAwLCAweDkxRTUsIDB4NDRDMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDk4REMsIDB4MDAwMCwgMHgzRjAwLCAweDkyMkEsIDB4NDkyNSwKKyAgICAweDg0MTQsIDB4OTkzQiwgMHg5OTRELCAweDAwMDAsIDB4M0RGRCwgMHhGRkZELCAweDRCNkYsIDB4OTlBQSwKKyAgICAweDlBNUMsIDB4MDAwMCwgMHgwMDAwLCAweDZBOEYsIDB4OUEyMSwgMHg1QUZFLCAweDlBMkYsIDB4MDAwMCwKKyAgICAweDRCOTAsIDB4MDAwMCwgMHg5OUJDLCAweDRCQkQsIDB4NEI5NywgMHg5MzdELCAweDU4NzIsIDB4MDAwMCwKKyAgICAweDU4MjIsIDB4MDAwMCwgMHgwMDAwLCAweDc4NDQsIDB4MDAwMCwgMHgwMDAwLCAweDY4QzUsIDB4M0Q3RCwKKyAgICAweDk0NTgsIDB4MzkyNywgMHg2MTUwLCAweDAwMDAsIDB4MDAwMCwgMHg2MTA3LCAweDlDNEYsIDB4OUM1MywKKyAgICAweDlDN0IsIDB4OUMzNSwgMHg5QzEwLCAweDlCN0YsIDB4OUJDRiwgMHgwMDAwLCAweDlCOUYsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4OUQyMSwgMHg0Q0FFLCAweDAwMDAsIDB4OUUxOCwgMHg0Q0IwLCAweDlEMEMsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDlEQTUsIDB4ODRCRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDg1RkMsIDB4NDUzMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NDIwLCAweDg1RUUsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg3OUUyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDNENjIsIDB4OTNEQiwKKyAgICAweDkyQkUsIDB4OTM0OCwgMHgwMDAwLCAweDc4QjksIDB4OTI3NywgMHg5NDRELCAweDRGRTQsIDB4MzQ0MCwKKyAgICAweDkwNjQsIDB4MDAwMCwgMHg3ODNELCAweDc4NTQsIDB4NzhCNiwgMHg3ODRCLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MzY5QSwgMHg0RjcyLCAweDZGREEsIDB4NkZEOSwgMHhGRkZELCAweDcwMUUsIDB4NTQxNCwKKyAgICAweDAwMDAsIDB4NTdCQiwgMHg1OEYzLCAweDU3OEEsIDB4OUQxNiwgMHg1N0Q3LCAweDcxMzQsIDB4MzRBRiwKKyAgICAweDAwMDAsIDB4NzFFQiwgMHgwMDAwLCAweDAwMDAsIDB4RkZGRCwgMHgwMDAwLCAweDAwMDAsIDB4NjEwQywKKyAgICAweDVBQ0UsIDB4NUEwQiwgMHg0MkJDLCAweDAwMDAsIDB4MzcyQywgMHg0QjdCLCAweDAwMDAsIDB4OTNCQiwKKyAgICAweDkzQjgsIDB4MDAwMCwgMHgwMDAwLCAweDg0NzIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NTk5NCwgMHgwMDAwLCAweDAwMDAsIDB4N0RBOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5MkU1LCAweDczRTIsIDB4M0VFOSwgMHg3NEI0LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDNFRTEsIDB4MDAwMCwgMHg2QUQ4LCAweDczRjMsIDB4NzNGQiwgMHgzRUQ2LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg3NDQ4LCAweDAwMDAsIDB4NzBBNSwKKyAgICAweDAwMDAsIDB4OTI4NCwgMHg3M0U2LCAweDkzNUYsIDB4MDAwMCwgMHg5MzMxLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDkzODYsIDB4MDAwMCwgMHgwMDAwLCAweDQ5MzUsIDB4MDAwMCwgMHg3MTZCLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDU2QTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NTUwMiwgMHg3OUM0LCAweDAwMDAsIDB4N0RGRSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDQ1MkUsIDB4OTQwMSwgMHgzNzBBLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDU5QjAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NUFBMSwgMHgzNkUyLCAweDAwMDAsIDB4MzZCMCwKKyAgICAweDkyNUYsIDB4NUE3OSwgMHgwMDAwLCAweDAwMDAsIDB4OTM3NCwgMHgzQ0NELCAweDAwMDAsIDB4NEE5NiwKKyAgICAweDM5OEEsIDB4NTBGNCwgMHgzRDY5LCAweDNENEMsIDB4MDAwMCwgMHg3MTc1LCAweDQyRkIsIDB4MDAwMCwKKyAgICAweDZFMEYsIDB4MDAwMCwgMHg0NEVCLCAweDZENTcsIDB4MDAwMCwgMHg3MDY3LCAweDZDQUYsIDB4M0NENiwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg2RTAyLCAweDZGMEMsIDB4M0Q2RiwgMHgwMDAwLCAweDc1NTEsIDB4MzZCQywKKyAgICAweDM0QzgsIDB4NDY4MCwgMHgzRURBLCAweDQ4NzEsIDB4NTlDNCwgMHg5MjZFLCAweDQ5M0UsIDB4OEY0MSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1ODEyLCAweDU3QzgsIDB4MzZENiwgMHgwMDAwLCAweDcwRkUsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NjhCOSwgMHg2OTY3LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDZBMUEsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4ODQzRSwgMHg0NERGLCAweDQ0Q0UsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweEZGRkQsIDB4RkZGRCwgMHg4MzNELCAweDAwMDAsIDB4ODNFRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDU5ODksIDB4NUE4MiwgMHgwMDAwLCAweDVBNjEsIDB4NUE3MSwgMHgwMDAwLCAweDAwMDAsIDB4MzcyRCwKKyAgICAweDU5RUYsIDB4MDAwMCwgMHgzNkM3LCAweDcxOEUsIDB4OTM5MCwgMHg2NjlBLCAweDAwMDAsIDB4NUE2RSwKKyAgICAweDVBMkIsIDB4MDAwMCwgMHg2QTJCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NzExRCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg0RkIwLCAweDAwMDAsIDB4NUNDMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDZBMEMsIDB4MDAwMCwgMHgwMDAwLCAweEZGRkQsIDB4NzEzMywgMHgwMDAwLCAweDNEQTUsIDB4NkNERiwKKyAgICAweDAwMDAsIDB4NTlFQiwgMHg1RjVDLCAweDAwMDAsIDB4N0NEMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDkwNkMsIDB4ODFGNiwgMHg3NzBDLCAweDZDQTIsIDB4NTZGRCwgMHg1ODY5LCAweDY3NjEsIDB4NUM1RSwKKyAgICAweDU4RjIsIDB4NzBCOSwgMHg2ODAzLCAweDhGQkIsIDB4OEZCQywgMHg0RTIxLCAweDdCMzksIDB4M0RDQywKKyAgICAweDczMkEsIDB4NzU2MCwgMHg1ODNBLCAweDgyQTYsIDB4Njk4QSwgMHg2MEUzLCAweDRFRUUsIDB4OTlDNCwKKyAgICAweDlFQkYsIDB4NTMwMSwgMHg2N0EwLCAweDYwRTgsIDB4NTFCNCwgMHg3QTgzLCAweDlDM0EsIDB4N0FDOCwKKyAgICAweDY5MUEsIDB4NTlBQywgMHg1ODQwLCAweDU0NkEsIDB4NjBFNywgMHg1NjdBLCAweDY5NTUsIDB4OUMyRiwKKyAgICAweDg3QTUsIDB4NUMyMCwgMHg1RTBCLCAweDY3MUUsIDB4ODRBRCwgMHg4QjgxLCAweDRFNzgsIDB4NjJDMywKKyAgICAweDY4NTUsIDB4RkZGRCwgMHg4MkZELCAweDg5QTUsIDB4OEZBMCwgMHg5N0I4LCAweDk4NDcsIDB4OUFCRCwKKyAgICAweDVGQjEsIDB4NjY0OCwgMHg2NkJGLCAweDAwMDAsIDB4RkZGRCwgMHgwMDAwLCAweEZGRkQsIDB4RkZGRCwKKyAgICAweDAwMDAsIDB4NjcwRSwgMHg2OTE4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NDhEMCwKKyAgICAweDRBQjgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg1MUQyLCAweDAwMDAsIDB4NTk5RiwKKyAgICAweDAwMDAsIDB4M0JCRSwgMHgwMDAwLCAweDM5OUIsIDB4MDAwMCwgMHgwMDAwLCAweDM3NjIsIDB4MDAwMCwKKyAgICAweDhCNUUsIDB4MDAwMCwgMHhGRkZELCAweDcyMDksIDB4MDAwMCwgMHgwMDAwLCAweDhFREEsIDB4NTI4RiwKKyAgICAweDcxNzEsIDB4MDAwMCwgMHgwMDAwLCAweDU1QkMsIDB4MDAwMCwgMHgzNDczLCAweDAwMDAsIDB4NDcxOCwKKyAgICAweDAwMDAsIDB4NTA2NiwgMHgzNEZCLCAweDAwMDAsIDB4RkZGRCwgMHg0NzdDLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweEZGRkQsIDB4MDAwMCwgMHg5MDU2LCAweDAwMDAsIDB4OEI2MiwgMHg1RDVCLCAweDAwMDAsIDB4RkZGRCwKKyAgICAweDAwMDAsIDB4OEFFQSwgMHgwMDAwLCAweDAwMDAsIDB4NEJDMCwgMHgwMDAwLCAweDk0NjUsIDB4MDAwMCwKKyAgICAweDYxOTUsIDB4NUEyNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg0RTZBLCAweDAwMDAsIDB4OTY1NiwKKyAgICAweDZEOEYsIDB4MDAwMCwgMHg4OTc3LCAweDAwMDAsIDB4RkZGRCwgMHg3QjQyLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweEZGRkQsIDB4N0E0NSwgMHg5QTI2LCAweDM2NUYsIDB4MDAwMCwgMHgwMDAwLCAweDc5ODMsIDB4NUQyQywKKyAgICAweDAwMDAsIDB4RkZGRCwgMHg0NkQwLCAweDc1M0IsIDB4ODg2NSwgMHg1OEI2LCAweDM3MUMsIDB4MDAwMCwKKyAgICAweDNDNTQsIDB4OTI4MSwgMHgwMDAwLCAweDkzMzAsIDB4MDAwMCwgMHg2QzM5LCAweDAwMDAsIDB4ODgyNywKKyAgICAweDg4RjUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NkVCOCwgMHgwMDAwLCAweDAwMDAsIDB4MzlBNCwKKyAgICAweEZGRkQsIDB4RkZGRCwgMHg0NTNGLCAweDY2QjYsIDB4MDAwMCwgMHgwMDAwLCAweDg5NDMsIDB4NDBERiwKKyAgICAweDAwMDAsIDB4MzlBMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg3MUFELCAweDgzNjYsIDB4MDAwMCwKKyAgICAweEZGRkQsIDB4NENCNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg3QjQzLCAweDc5N0UsIDB4NkZCNSwKKyAgICAweDAwMDAsIDB4NkEwMywgMHgwMDAwLCAweDUzQTIsIDB4MDAwMCwgMHg5M0JGLCAweDY4MzYsIDB4OTc1RCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NUQ4NSwgMHgwMDAwLCAweDU3MTUsIDB4OTgyMywKKyAgICAweDAwMDAsIDB4NURBQiwgMHgwMDAwLCAweDY1QkUsIDB4NjlENSwgMHg1M0QyLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDNDMTEsIDB4NjczNiwgMHgwMDAwLCAweDM1Q0EsIDB4NDhGQSwgMHhGRkZELCAweDc4MDgsIDB4OTI1NSwKKyAgICAweDQzRjIsIDB4NDNERiwgMHg1OUY4LCAweEZGRkQsIDB4NTY4QiwgMHgwMDAwLCAweDkwMTIsIDB4NTVDMSwKKyAgICAweDQ1MDksIDB4N0U3RiwgMHg2RjU2LCAweDZBQjEsIDB4MzRFNCwgMHgwMDAwLCAweDM3M0EsIDB4RkZGRCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzREVCLCAweDAwMDAsIDB4MDAwMCwgMHg1NkJGLCAweDhFMEUsIDB4NUI2RCwKKyAgICAweDYzREUsIDB4RkZGRCwgMHg2NTMwLCAweDU2MkQsIDB4NTQxQSwgMHgwMDAwLCAweDRDN0QsIDB4NTYyMiwKKyAgICAweDU2MUUsIDB4N0Y0OSwgMHg1OTc1LCAweDAwMDAsIDB4ODc3MCwgMHg4MTE3LCAweDlENUUsIDB4OEQxOCwKKyAgICAweDc2M0IsIDB4OUM0NSwgMHg3NjRFLCAweDc3QjksIDB4OTM0NSwgMHg1NDMyLCAweDgxNDgsIDB4ODJGNywKKyAgICAweDU2MjUsIDB4ODEzMiwgMHg4NDE4LCAweDgwQkQsIDB4NTVFQSwgMHg3OTYyLCAweDU2NDMsIDB4NTQxNiwKKyAgICAweDAwMDAsIDB4MzVDRSwgMHg1NjA1LCAweDU1RjEsIDB4NjZGMSwgMHgwMDAwLCAweDM2MkQsIDB4NzUzNCwKKyAgICAweDU1RjAsIDB4NTVCQSwgMHg1NDk3LCAweDU1NzIsIDB4MDAwMCwgMHgwMDAwLCAweDVFRDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5RUFCLCAweDdENUEsIDB4RkZGRCwgMHgwMDAwLCAweDYyOUQsIDB4OTc2RCwKKyAgICAweDU0OTQsIDB4OENDRCwgMHg3MUY2LCAweDkxNzYsIDB4NjNGQywgMHg2M0I5LCAweDYzRkUsIDB4NTU2OSwKKyAgICAweDAwMDAsIDB4OUM3MiwgMHgwMDAwLCAweDUxOUEsIDB4MzRERiwgMHgwMDAwLCAweDUxQTcsIDB4NTQ0RCwKKyAgICAweDU1MUUsIDB4NTUxMywgMHg3NjY2LCAweDhFMkQsIDB4MDAwMCwgMHg3NUIxLCAweDgwQjYsIDB4ODgwNCwKKyAgICAweEZGRkQsIDB4ODhDNywgMHg4MUI2LCAweDg0MUMsIDB4NDRFQywgMHg3MzA0LCAweDgzMEIsIDB4NTY3QiwKKyAgICAweDkxNzAsIDB4OTIwOCwgMHgwMDAwLCAweDcyNjYsIDB4NDc0RSwgMHgwMDAwLCAweDQwRkEsIDB4OUM1RCwKKyAgICAweDY1MUYsIDB4NDhGMywgMHgwMDAwLCAweDAwMDAsIDB4RkZGRCwgMHgwMDAwLCAweEVEMkIsIDB4MDAwMCwKKyAgICAweDcxQTMsIDB4N0U4RSwgMHg5RDUwLCAweDM1NzcsIDB4NkNCMiwgMHg1MzY3LCAweDM5REMsIDB4MDAwMCwKKyAgICAweDgyMkQsIDB4NTQ0QiwgMHhFRDQzLCAweDNBNTIsIDB4NzM3NCwgMHgwMDAwLCAweDREMDksIDB4OUJFRCwKKyAgICAweEZGRkQsIDB4NEM1QiwgMHgwMDAwLCAweDg0NUMsIDB4MDAwMCwgMHg2MzJFLCAweDdEMjUsIDB4M0EyQSwKKyAgICAweDkwMDgsIDB4NTJDQywgMHgzRTc0LCAweDM2N0EsIDB4NDVFOSwgMHgwMDAwLCAweDc2NDAsIDB4NUFGMCwKKyAgICAweDAwMDAsIDB4Nzg3QSwgMHgwMDAwLCAweDU4QTcsIDB4NDBCRiwgMHg1NjdDLCAweDlCOEIsIDB4NUQ3NCwKKyAgICAweDc2NTQsIDB4MDAwMCwgMHg5RTg1LCAweDRDRTEsIDB4RkZGRCwgMHgzN0ZCLCAweDYxMTksIDB4MDAwMCwKKyAgICAweEVENzMsIDB4NTY1RCwgMHgwMDAwLCAweDUyMzQsIDB4MzVBRCwgMHhGRkZELCAweDlEN0MsIDB4N0M1NiwKKyAgICAweDlCMzksIDB4NTdERSwgMHg1QzUzLCAweDY0RDMsIDB4MDAwMCwgMHgwMDAwLCAweDg2QUQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4RUQ4QywgMHg1MUZFLCAweDAwMDAsIDB4NUQ4RSwgMHg5NzAzLCAweDAwMDAsIDB4OUU4MSwKKyAgICAweDkwNEMsIDB4N0IxRiwgMHg5QjAyLCAweDVDRDEsIDB4N0JBMywgMHg2MjY4LCAweDYzMzUsIDB4OUFGRiwKKyAgICAweDdCQ0YsIDB4OUIyQSwgMHg3QzdFLCAweEZGRkQsIDB4N0M0MiwgMHg3Qzg2LCAweDlDMTUsIDB4N0JGQywKKyAgICAweDlCMDksIDB4RkZGRCwgMHg5QzJFLCAweDlGNUEsIDB4NTU3MywgMHg1QkMzLCAweDRGRkQsIDB4OUU5OCwKKyAgICAweDRGRjIsIDB4NTI2MCwgMHg1MkQxLCAweDU3NjcsIDB4NTA1NiwgMHg1OUI3LCAweDVFMTIsIDB4OTdDOCwKKyAgICAweDlEQUIsIDB4OEY1QywgMHg1NDY5LCAweDk3QjQsIDB4OTk0MCwgMHg5N0JBLCAweDUzMkMsIDB4NjEzMCwKKyAgICAweDY5MkMsIDB4NTNEQSwgMHg5QzBBLCAweDlEMDIsIDB4NEMzQiwgMHg5NjQxLCAweDY5ODAsIDB4NTBBNiwKKyAgICAweDc1NDYsIDB4MDAwMCwgMHg5OURBLCAweDUyNzMsIDB4RURDOSwgMHg5MTU5LCAweDk2ODEsIDB4OTE1QywKKyAgICAweEVEQ0QsIDB4OTE1MSwgMHgwMDAwLCAweDYzN0YsIDB4NkFDQSwgMHg1NjExLCAweDkxOEUsIDB4NzU3QSwKKyAgICAweDYyODUsIDB4NzM0RiwgMHg3QzcwLCAweDAwMDAsIDB4RUREQywgMHg3NkQ2LCAweDlCOUQsIDB4NEUyQSwKKyAgICAweDAwMDAsIDB4ODNCRSwgMHg4ODQyLCAweEVERTQsIDB4NUM0QSwgMHg2OUMwLCAweEZGRkQsIDB4RkZGRCwKKyAgICAweDUyMUYsIDB4NURGNSwgMHg0RUNFLCAweDZDMzEsIDB4MDAwMCwgMHg0RjM5LCAweDU0OUMsIDB4RkZGRCwKKyAgICAweDUyOUEsIDB4OEQ4MiwgMHgzNUZFLCAweEZGRkQsIDB4MzVGMywgMHhFREY2LCAweDZCNTIsIDB4OTE3QywKKyAgICAweDlGQTUsIDB4OUI5NywgMHg5ODJFLCAweDk4QjQsIDB4OUFCQSwgMHg5RUE4LCAweDlFODQsIDB4N0IxNCwKKyAgICAweEVFMDIsIDB4NkJGQSwgMHg4ODE4LCAweDdGNzgsIDB4RUUwNiwgMHg1NjIwLCAweDAwMDAsIDB4OEU3NywKKyAgICAweDlGNTMsIDB4RUUwQiwgMHg4REQ0LCAweDhFNEYsIDB4OUUxQywgMHg4RTAxLCAweDYyODIsIDB4MDAwMCwKKyAgICAweDhFMjgsIDB4OEU3NSwgMHg3QUQzLCAweDdBM0UsIDB4NzhEOCwgMHg2Q0VBLCAweDhBNjcsIDB4NzYwNywKKyAgICAweDlGMjYsIDB4NkNDRSwgMHg4N0Q2LCAweDc1QzMsIDB4MDAwMCwgMHg3ODUzLCAweDhEMEMsIDB4NzJFMiwKKyAgICAweDczNzEsIDB4OEIyRCwgMHg3MzAyLCAweDc0RjEsIDB4OENFQiwgMHgwMDAwLCAweDg2MkYsIDB4NUZCQSwKKyAgICAweDg4QTAsIDB4NDRCNywgMHhFRTJGLCAweDAwMDAsIDB4RUUzMiwgMHg4QTdFLCAweDAwMDAsIDB4RUUzNSwKKyAgICAweDYwRkQsIDB4NzY2NywgMHg5QUQ3LCAweDlENDQsIDB4OTM2RSwgMHg5QjhGLCAweDg3RjUsIDB4RUUzRCwKKyAgICAweEZGRkQsIDB4OENGNywgMHg3MzJDLCAweDk3MjEsIDB4OUJCMCwgMHgzNUQ2LCAweDcyQjIsIDB4NEMwNywKKyAgICAweDdDNTEsIDB4OTk0QSwgMHg2MTU5LCAweDRDMDQsIDB4OUU5NiwgMHg2MTdELCAweEVFNEQsIDB4NTc1RiwKKyAgICAweDYxNkYsIDB4NjJBNiwgMHg2MjM5LCAweEZGRkQsIDB4M0E1QywgMHg2MUUyLCAweDUzQUEsIDB4NjM2NCwKKyAgICAweDY4MDIsIDB4MzVEMiwgMHg1RDU3LCAweDhGREEsIDB4MDAwMCwgMHhFRTVFLCAweDUwRDksIDB4NzkwNiwKKyAgICAweDUzMzIsIDB4OTYzOCwgMHgwMDAwLCAweDQwNjUsIDB4RUU2NiwgMHg3N0ZFLCAweEVFNjgsIDB4N0NDMiwKKyAgICAweDAwMDAsIDB4N0NEQSwgMHg3QTJELCAweDgwNjYsIDB4ODA2MywgMHg3RDRELCAweDc1MDUsIDB4NzRGMiwKKyAgICAweDg5OTQsIDB4ODIxQSwgMHg2NzBDLCAweDgwNjIsIDB4MDAwMCwgMHg4MDVCLCAweDc0RjAsIDB4ODEwMywKKyAgICAweDc3MjQsIDB4ODk4OSwgMHgwMDAwLCAweDc1NTMsIDB4ODdBOSwgMHg4N0NFLCAweDgxQzgsIDB4ODc4QywKKyAgICAweDhBNDksIDB4OENBRCwgMHg4QjQzLCAweDc3MkIsIDB4NzRGOCwgMHg4NERBLCAweDY5QjIsIDB4OERBNiwKKyAgICAweEVFOEMsIDB4ODlBOSwgMHhGRkZELCAweDZEQjksIDB4ODdDMSwgMHgwMDAwLCAweDc0RTcsIDB4M0REQiwKKyAgICAweDcxNzYsIDB4NjBBNCwgMHg2MTlDLCAweDNDRDEsIDB4RkZGRCwgMHg2MDc3LCAweEVFOUEsIDB4N0Y3MSwKKyAgICAweDAwMDAsIDB4NjBFOSwgMHg0QjdFLCAweDAwMDAsIDB4OTJEQiwgMHgwMDAwLCAweDAwMDAsIDB4ODU0QywKKyAgICAweDQyQjUsIDB4NzNFRiwgMHg1MUI1LCAweDM2NDksIDB4MDAwMCwgMHgwMDAwLCAweDkzNDQsIDB4MDAwMCwKKyAgICAweDgyRUUsIDB4MDAwMCwgMHg3ODNDLCAweDY3NDQsIDB4NjJERiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg0RkFCLCAweDAwMDAsIDB4NTAwOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHhGRkZELCAweDAwMDAsIDB4NUZBNCwgMHgwMDAwLCAweDAwMDAsIDB4NkVEQiwKKyAgICAweDAwMDAsIDB4NTBERSwgMHg1MTAxLCAweDM0N0EsIDB4NTEwRSwgMHg5ODZDLCAweDM3NDMsIDB4ODQxNiwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1MTYwLCAweDAwMDAsIDB4NTE2QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NUI4MiwgMHg4NzdELCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDUxQjIsIDB4NTFCOCwgMHg5RDM0LCAweDUxQzksIDB4NTFDRiwgMHg1MUQxLCAweDNDREMsIDB4NTFEMywKKyAgICAweDAwMDAsIDB4NTFCMywgMHhGRkZELCAweEZGRkQsIDB4NTFFRCwgMHg4M0NELCAweDY5M0UsIDB4MDAwMCwKKyAgICAweDVGN0IsIDB4NTIwQiwgMHg1MjI2LCAweDUyM0MsIDB4NTJCNSwgMHg1MjU3LCAweDUyOTQsIDB4NTJCOSwKKyAgICAweDUyQzUsIDB4N0MxNSwgMHg4NTQyLCAweDUyRTAsIDB4ODYwRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDU1NDksIDB4NkVEOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg1MzMzLCAweEZGRkQsIDB4MDAwMCwKKyAgICAweDZDQ0IsIDB4MDAwMCwgMHg2ODFCLCAweDczRDUsIDB4NjA0QSwgMHgzRUFBLCAweDM4Q0MsIDB4MDAwMCwKKyAgICAweDcxREQsIDB4NDRBMiwgMHg1MzZELCAweDUzNzQsIDB4MDAwMCwgMHg1MzdFLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NzdFNiwgMHg1MzkzLCAweDAwMDAsIDB4NTNBMCwgMHg1M0FCLCAweDUzQUUsIDB4NzNBNywKKyAgICAweDAwMDAsIDB4M0Y1OSwgMHg3MzlDLCAweDUzQzEsIDB4NTNDNSwgMHg2QzQ5LCAweDRFNDksIDB4NTdGRSwKKyAgICAweDUzRDksIDB4M0FBQiwgMHgwMDAwLCAweDUzRTAsIDB4MDAwMCwgMHgwMDAwLCAweDUzRjYsIDB4MDAwMCwKKyAgICAweDU0MTMsIDB4NzA3OSwgMHg1NTJCLCAweDY2NTcsIDB4NkQ1QiwgMHg1NDZELCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDU1NUQsIDB4NTQ4RiwgMHg1NEE0LCAweDQ3QTYsIDB4MDAwMCwgMHgwMDAwLCAweDNEQjQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1NTQ3LCAweDRDRUQsIDB4NTQyRiwgMHg3NDE3LCAweDU1ODYsIDB4NTVBOSwKKyAgICAweEZGRkQsIDB4MDAwMCwgMHgwMDAwLCAweDQ1NTIsIDB4MDAwMCwgMHg2NkIzLCAweDAwMDAsIDB4NTYzNywKKyAgICAweDY2Q0QsIDB4MDAwMCwgMHg2NkE0LCAweEZGRkQsIDB4NTY0RCwgMHg1NjRGLCAweDc4RjEsIDB4NTZGMSwKKyAgICAweDk3ODcsIDB4NTNGRSwgMHg1NzAwLCAweDU2RUYsIDB4NTZFRCwgMHgwMDAwLCAweDM2MjMsIDB4MDAwMCwKKyAgICAweDU3NDYsIDB4MDAwMCwgMHg2QzZFLCAweDcwOEIsIDB4NTc0MiwgMHgzNkIxLCAweDAwMDAsIDB4NTdFNiwKKyAgICAweDAwMDAsIDB4NTgwMywgMHgwMDAwLCAweDAwMDAsIDB4NTgyNiwgMHgwMDAwLCAweDU4MUYsIDB4NThBQSwKKyAgICAweDM1NjEsIDB4NThFMCwgMHg1OERDLCAweDAwMDAsIDB4NThGQiwgMHg1QkZGLCAweDU3NDMsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4OTNEMywgMHgzNUExLCAweDU5MUYsIDB4NjhBNiwgMHgzNkMzLCAweDZFNTksIDB4MDAwMCwKKyAgICAweDVBMjQsIDB4RkZGRCwgMHgwMDAwLCAweDg1MDUsIDB4NTlDOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NTlEOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg2RDcxLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDU5RjksIDB4MDAwMCwgMHg1QUFCLCAweDVBNjMsIDB4MzZFNiwgMHgwMDAwLCAweEZGRkQsIDB4MzcwOCwKKyAgICAweDVBOTYsIDB4NzQ2NSwgMHg1QUQzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDM3MzIsIDB4MDAwMCwKKyAgICAweDVFODMsIDB4NTJEMCwgMHg1Qjc2LCAweDY1ODgsIDB4NUI3QywgMHgwMDAwLCAweDQwMDQsIDB4NDg1RCwKKyAgICAweDAwMDAsIDB4NUJENSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg1QkYzLCAweDVCOUQsIDB4NEQxMCwKKyAgICAweDVDMDUsIDB4MDAwMCwgMHg1QzEzLCAweDczQ0UsIDB4NUMxNCwgMHgwMDAwLCAweDAwMDAsIDB4NUM0OSwKKyAgICAweDQ4REQsIDB4NUM4NSwgMHg1Q0U5LCAweDVDRUYsIDB4NUQ4QiwgMHgwMDAwLCAweDAwMDAsIDB4NUQxMCwKKyAgICAweDVEMTgsIDB4NUQ0NiwgMHgwMDAwLCAweDVDQkEsIDB4NURENywgMHg4MkZDLCAweDM4MkQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4Mjg3LCAweDM4MzYsIDB4M0JDMiwgMHg1RTJFLCAweDZBOEEsIDB4RkZGRCwKKyAgICAweEUxMkYsIDB4MDAwMCwgMHgwMDAwLCAweDUzQTYsIDB4NEVCNywgMHhGRkZELCAweDUzQTgsIDB4MDAwMCwKKyAgICAweDVFMDksIDB4RTEzOCwgMHgwMDAwLCAweDVFRjksIDB4NUVGQiwgMHgzOEEwLCAweDVFRkMsIDB4NjgzRSwKKyAgICAweDk0MUIsIDB4NUYwRCwgMHgwMDAwLCAweDAwMDAsIDB4M0FERSwgMHgwMDAwLCAweDVGM0EsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1RjYzLCAweDAwMDAsIDB4NUY3MiwgMHg5MzQwLCAweDAwMDAsIDB4NUZBNywKKyAgICAweDVEQjYsIDB4M0Q1RiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkxRDYsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NjAzMSwgMHg2Njg1LCAweDM5NjMsIDB4M0RDNywgMHgzNjM5LCAweDU3OTAsIDB4MDAwMCwKKyAgICAweDc5NzEsIDB4M0U0MCwgMHg2MDlFLCAweEZGRkQsIDB4NjBFQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDc0QTQsIDB4NTBFMSwgMHg1QUEwLCAweDYxNjQsIDB4NjE0MiwgMHgwMDAwLCAweDAwMDAsIDB4NjE4MSwKKyAgICAweDUxRjQsIDB4MDAwMCwgMHg2MTg3LCAweDVCQUEsIDB4MDAwMCwgMHgwMDAwLCAweDYxRDMsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NjFEMCwgMHgzOTMyLCAweDAwMDAsIDB4MDAwMCwgMHg2MDIzLCAweDYxNUMsIDB4NjUxRSwKKyAgICAweDYzOEIsIDB4MDAwMCwgMHg2MkM1LCAweDAwMDAsIDB4NjJENSwgMHgwMDAwLCAweDYzNkMsIDB4MDAwMCwKKyAgICAweDNBMTcsIDB4NjQzOCwgMHg2M0Y4LCAweDAwMDAsIDB4MDAwMCwgMHg2RjhBLCAweDAwMDAsIDB4RkZGRCwKKyAgICAweDAwMDAsIDB4NjRFMSwgMHg2NEU1LCAweDk0N0IsIDB4M0E2NiwgMHg2NDNBLCAweDNBNTcsIDB4NjU0RCwKKyAgICAweDZGMTYsIDB4MDAwMCwgMHgwMDAwLCAweDY1ODUsIDB4NjU2RCwgMHg2NTVGLCAweEZGRkQsIDB4NjVCNSwKKyAgICAweDAwMDAsIDB4NEIzNywgMHg2NUQxLCAweDQwRDgsIDB4MDAwMCwgMHhFMUFCLCAweDY1RTMsIDB4NUZERiwKKyAgICAweDAwMDAsIDB4NjYxOCwgMHgwMDAwLCAweDAwMDAsIDB4NjY0NCwgMHgwMDAwLCAweDAwMDAsIDB4NjY0QiwKKyAgICAweDAwMDAsIDB4NjY2NywgMHgwMDAwLCAweDY2NzMsIDB4RkExMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NzdDNSwgMHgwMDAwLCAweDk5QTQsIDB4NjcwMiwgMHgwMDAwLCAweDAwMDAsIDB4NjlGQSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg2NzY3LCAweDY3NjIsIDB4MDAwMCwgMHgwMDAwLCAweDY3RDcsIDB4NDRFOSwKKyAgICAweDY4MjIsIDB4NkU1MCwgMHg5MjNDLCAweDY4MDEsIDB4MDAwMCwgMHgwMDAwLCAweDY4NUQsIDB4MDAwMCwKKyAgICAweDY5RTEsIDB4NkEwQiwgMHgwMDAwLCAweDY5NzMsIDB4NjhDMywgMHgwMDAwLCAweDY5MDEsIDB4NjkwMCwKKyAgICAweDNBMDEsIDB4MDAwMCwgMHgzQjgwLCAweDY3QUMsIDB4Njk2MSwgMHgwMDAwLCAweDQyRkMsIDB4NjkzNiwKKyAgICAweDY5OTgsIDB4M0JBMSwgMHgwMDAwLCAweDgzNjMsIDB4NTA5MCwgMHg2OUY5LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDZBNDUsIDB4MDAwMCwgMHg2QTlELCAweDNCRjMsIDB4NjdCMSwgMHg2QUM4LCAweDAwMDAsIDB4M0MwRCwKKyAgICAweDZCMUQsIDB4MDAwMCwgMHg2MERFLCAweDZCMzUsIDB4NkI3NCwgMHgwMDAwLCAweDZFQjUsIDB4MDAwMCwKKyAgICAweEZGRkQsIDB4MDAwMCwgMHgzNzQwLCAweDU0MjEsIDB4MDAwMCwgMHg2QkUxLCAweDAwMDAsIDB4NkJEQywKKyAgICAweDZDMzcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NkM1QSwgMHg4MjI2LCAweDZDNzksIDB4MDAwMCwKKyAgICAweDQ0QzUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDM2RTUsIDB4M0NFQiwKKyAgICAweDAwMDAsIDB4OUI4MywgMHgwMDAwLCAweDAwMDAsIDB4N0Y4RiwgMHg2ODM3LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NkQ5NiwgMHg2RDVDLCAweDZFN0MsIDB4NkYwNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDg1MzMsIDB4MDAwMCwgMHg1MUM3LCAweEZGRkQsIDB4RkZGRCwgMHg4NDJFLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NzQ1MywgMHgwMDAwLCAweDc5Q0MsIDB4NkU0RiwgMHg1QTkxLCAweDAwMDAsIDB4NkZGOCwKKyAgICAweDM3MEQsIDB4NkY5RCwgMHgwMDAwLCAweDZFRkEsIDB4MDAwMCwgMHgwMDAwLCAweDQ1NTUsIDB4OTNGMCwKKyAgICAweDZGNDQsIDB4NkY1QywgMHgzRDRFLCAweDZGNzQsIDB4MDAwMCwgMHgzRDNCLCAweDZGOUYsIDB4MDAwMCwKKyAgICAweDZGRDMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NTFERiwKKyAgICAweEUyNTEsIDB4RTI1MiwgMHgwMDAwLCAweDAwMDAsIDB4NzA0QiwgMHg3MDdFLCAweDcwQTcsIDB4RkZGRCwKKyAgICAweDcwQ0MsIDB4NzBENSwgMHg3MEQ2LCAweDcwREYsIDB4NDEwNCwgMHgzREU4LCAweDcxQjQsIDB4NzE5NiwKKyAgICAweDAwMDAsIDB4NzEyQiwgMHg3MTQ1LCAweDVBODgsIDB4NzE0QSwgMHhGQTQ4LCAweDAwMDAsIDB4NzE0RiwKKyAgICAweDkzNjIsIDB4MDAwMCwgMHg3MTJDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDcxQkEsIDB4MDAwMCwKKyAgICAweDcwQkQsIDB4NzIwRSwgMHg5NDQyLCAweDcyMTUsIDB4NTkxMSwgMHg5NDQzLCAweDcyMjQsIDB4OTM0MSwKKyAgICAweDAwMDAsIDB4NzIyRSwgMHg3MjQwLCAweDAwMDAsIDB4NjhCRCwgMHg3MjU1LCAweDcyNTcsIDB4M0U1NSwKKyAgICAweDAwMDAsIDB4NjgwRCwgMHg2RjNELCAweDcyODIsIDB4RkZGRCwgMHg3MzJCLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDQ4RUQsIDB4MDAwMCwgMHg3MzI4LCAweDczMkUsIDB4NzNDRiwgMHg3M0FBLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDczQzksIDB4NzQ0OSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg2NjIzLCAweDM2QzUsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg3M0Y3LCAweDc0MTUsIDB4NjkwMywgMHgwMDAwLCAweDc0MzksIDB4M0VENywKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg3NDYwLCAweDAwMDAsIDB4NzQ0NywgMHg3M0U0LCAweDc0NzYsIDB4ODNCOSwKKyAgICAweDc0NkMsIDB4NzQ3NCwgMHg5M0YxLCAweDZBMkMsIDB4NzQ4MiwgMHg0OTUzLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1QjQ2LCAweDAwMDAsIDB4MDAwMCwgMHg3NEM4LCAweDAwMDAsIDB4NzUwRSwKKyAgICAweDc1MUUsIDB4MDAwMCwgMHgwMDAwLCAweDVCRDcsIDB4MDAwMCwgMHg5Mzg1LCAweDc1NEQsIDB4NzU0QSwKKyAgICAweDc1NjcsIDB4NzU2RSwgMHgwMDAwLCAweDNGMDQsIDB4MDAwMCwgMHg3NThFLCAweDc0NUQsIDB4NzU5RSwKKyAgICAweDc1QjQsIDB4NzYwMiwgMHg3NjJDLCAweDc2NTEsIDB4NzY0RiwgMHg3NjZGLCAweEUyRDMsIDB4MDAwMCwKKyAgICAweDc2OTAsIDB4ODFFRiwgMHgzN0Y4LCAweDAwMDAsIDB4MDAwMCwgMHg3NkExLCAweDc2QTUsIDB4NzZCNywKKyAgICAweDc2Q0MsIDB4MDAwMCwgMHg4NDYyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDc3MUUsIDB4NzcyNiwKKyAgICAweDc3NDAsIDB4NjRBRiwgMHgwMDAwLCAweDc3NTgsIDB4MDAwMCwgMHg3N0FGLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NzdGNCwgMHhGRkZELCAweDY4Q0EsIDB4NzhBRiwgMHg3OEM3LCAweDc4RDMsIDB4OTZBNSwKKyAgICAweDc5MkUsIDB4MDAwMCwgMHg3OEQ3LCAweDc5MzQsIDB4NzhCMSwgMHgwMDAwLCAweDhGQjgsIDB4ODg4NCwKKyAgICAweDAwMDAsIDB4Nzk4NiwgMHg4OTAwLCAweDY5MDIsIDB4Nzk4MCwgMHgwMDAwLCAweDc5OUQsIDB4MDAwMCwKKyAgICAweDc5M0MsIDB4NzlBOSwgMHg2RTJBLCAweDAwMDAsIDB4M0VBOCwgMHg3OUM2LCAweDAwMDAsIDB4NzlENCwKKyAgICAweEZGRkQsIDB4NTUyNSwgMHhGRkZELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDU1OTAsIDB4MDAwMCwKKyAgICAweDM5RUMsIDB4MDAwMCwgMHg4RTQ2LCAweDAwMDAsIDB4MDAwMCwgMHhGRkZELCAweDAwMDAsIDB4Nzc3QSwKKyAgICAweDAwMDAsIDB4M0EzNCwgMHg0N0Q1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDY0REQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHhGRkZELCAweDY0OEQsIDB4OEU3RSwgMHgwMDAwLCAweEZGRkQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweEZGRkQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NDdGNCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5QUIyLCAweDNBNjcsIDB4MDAwMCwgMHgzRkVELCAweDM1MDYsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4RkZGRCwgMHgwMDAwLCAweDlENkUsIDB4OTgxNSwgMHhGRkZELCAweDQzRDksIDB4RkZGRCwKKyAgICAweDY0QjQsIDB4NTRFMywgMHhGRkZELCAweDAwMDAsIDB4RkZGRCwgMHgzOUZCLCAweEZGRkQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg2NEVBLCAweDAwMDAsIDB4MDAwMCwgMHg4RTY4LCAweEZGRkQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4RkZGRCwgMHg0ODBCLCAweDAwMDAsIDB4M0ZGQSwgMHg1ODczLCAweDAwMDAsIDB4RkZGRCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4RkZGRCwgMHg1NTc5LCAweEZGRkQsIDB4NDNCQSwKKyAgICAweEZGRkQsIDB4NEFCNCwgMHgwMDAwLCAweDAwMDAsIDB4ODFBQSwgMHg5OEY1LCAweDAwMDAsIDB4NjM3OSwKKyAgICAweDM5RkUsIDB4MDAwMCwgMHg4REMwLCAweDU2QTEsIDB4NjQ3QywgMHgzRTQzLCAweEZGRkQsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHhGRkZELCAweEZGRkQsIDB4MDAwMCwgMHgwMDAwLCAweDM5OTIsIDB4M0EwNiwKKyAgICAweDAwMDAsIDB4MzU3OCwgMHgwMDAwLCAweDAwMDAsIDB4RkZGRCwgMHhGRkZELCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDM0QkMsIDB4NkMzRCwgMHgwMDAwLCAweEZGRkQsIDB4RkZGRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4M0ExOCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5NUFBLCAweEZGRkQsIDB4MDAwMCwKKyAgICAweDcxNDAsIDB4RkZGRCwgMHg1MTU2LCAweDRFRkUsIDB4NTA4OCwgMHhGRkZELCAweDM0OTMsIDB4NTE4NiwKKyAgICAweDVFNDIsIDB4NTIwNSwgMHg1MjI3LCAweDUyNzksIDB4MDAwMCwgMHgzNTUzLCAweDUzQzIsIDB4NTM1RiwKKyAgICAweEZGRkQsIDB4NTUzRiwgMHhGRkZELCAweDU1RDgsIDB4MzVERCwgMHg1NjIxLCAweEZGRkQsIDB4NTY1NCwKKyAgICAweDAwMDAsIDB4RkZGRCwgMHgwMDAwLCAweEZGRkQsIDB4MDAwMCwgMHhGRkZELCAweEZGRkQsIDB4MzdCOSwKKyAgICAweDVDQzEsIDB4NUQxNSwgMHg1RDU2LCAweDM4MzgsIDB4NEU4MSwgMHg1RUJELCAweDM5MTQsIDB4NjFCOSwKKyAgICAweDYyOTAsIDB4NjMxOCwgMHg2NDVBLCAweDY0OTEsIDB4ODE2RCwgMHg4MTg0LCAweDgxOTMsIDB4NjgwMCwKKyAgICAweDNCQkMsIDB4NzI4RiwgMHg3MkNELCAweDAwMDAsIDB4NzMzOSwgMHg3NTQyLCAweDc1REMsIDB4M0ZDMCwKKyAgICAweDAwMDAsIDB4M0ZENywgMHhGRkZELCAweDc2ODAsIDB4NzY4QywgMHg0MEE4LCAweDc4MzksIDB4NDEwMywKKyAgICAweDdBOTEsIDB4N0MxQiwgMHg3Q0VELCAweDdGOTMsIDB4N0ZBRSwgMHhGRkZELCAweDgyRkYsIDB4NTg1RiwKKyAgICAweDg2QjIsIDB4NDVBQywgMHg4NzhCLCAweDg5NDcsIDB4RkZGRCwgMHg4QTI5LCAweEZGRkQsIDB4OEU3MSwKKyAgICAweDAwMDAsIDB4OEVCMCwgMHhGRkZELCAweDkxNUUsIDB4OTE4QywgMHg5OTBFLCAweDk5MUMsIDB4RkZGRCwKKyAgICAweEZGRkQsIDB4OUI4MSwgMHg5REMwLCAweDlEOTMsIDB4OUVBQywgMHg0RDkxLCAweEZGRkQsIDB4OTNCQSwKKyAgICAweDlFN0IsIDB4NzA4OSwgMHg3MzQ4LCAweEZGRkQsIDB4Nzk5OSwgMHg4RkI3LCAweEZGRkQsIDB4OTk0MiwKKyAgICAweDAwMjAsIDB4MDAyMSwgMHgwMDIyLCAweDAwMjMsIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywKKyAgICAweDAwMjgsIDB4MDAyOSwgMHgwMDJBLCAweDAwMkIsIDB4MDAyQywgMHgwMDJELCAweDAwMkUsIDB4MDAyRiwKKyAgICAweDAwMzAsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzMsIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsIDB4MDAzNywKKyAgICAweDAwMzgsIDB4MDAzOSwgMHgwMDNBLCAweDAwM0IsIDB4MDAzQywgMHgwMDNELCAweDAwM0UsIDB4MDAzRiwKKyAgICAweDAwNDAsIDB4MDA0MSwgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LCAweDAwNDYsIDB4MDA0NywKKyAgICAweDAwNDgsIDB4MDA0OSwgMHgwMDRBLCAweDAwNEIsIDB4MDA0QywgMHgwMDRELCAweDAwNEUsIDB4MDA0RiwKKyAgICAweDAwNTAsIDB4MDA1MSwgMHgwMDUyLCAweDAwNTMsIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywKKyAgICAweDAwNTgsIDB4MDA1OSwgMHgwMDVBLCAweDAwNUIsIDB4MDA1QywgMHgwMDVELCAweDAwNUUsIDB4MDA1RiwKKyAgICAweDAwNjAsIDB4MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDA2NCwgMHgwMDY1LCAweDAwNjYsIDB4MDA2NywKKyAgICAweDAwNjgsIDB4MDA2OSwgMHgwMDZBLCAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwKKyAgICAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywKKyAgICAweDAwNzgsIDB4MDA3OSwgMHgwMDdBLCAweDAwN0IsIDB4MDA3QywgMHgwMDdELCAweDAwN0UsIDB4MDBBOSwKKyAgICAweDIxMjIsIDB4MjAyNiwgMHgwMDIwLCAweDAwMjEsIDB4MDAyMiwgMHgwMDIzLCAweDAwMjQsIDB4MDAyNSwKKyAgICAweDAwMjYsIDB4MDAyNywgMHgwMDI4LCAweDAwMjksIDB4MDAyQSwgMHgwMDJCLCAweDAwMkMsIDB4MDAyRCwKKyAgICAweDAwMkUsIDB4MDAyRiwgMHgwMDMwLCAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwKKyAgICAweDAwMzYsIDB4MDAzNywgMHgwMDM4LCAweDAwMzksIDB4MDAzQSwgMHgwMDNCLCAweDAwM0MsIDB4MDAzRCwKKyAgICAweDAwM0UsIDB4MDAzRiwgMHgwMDQwLCAweDAwNDEsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDQsIDB4MDA0NSwKKyAgICAweDAwNDYsIDB4MDA0NywgMHgwMDQ4LCAweDAwNDksIDB4MDA0QSwgMHgwMDRCLCAweDAwNEMsIDB4MDA0RCwKKyAgICAweDAwNEUsIDB4MDA0RiwgMHgwMDUwLCAweDAwNTEsIDB4MDA1MiwgMHgwMDUzLCAweDAwNTQsIDB4MDA1NSwKKyAgICAweDAwNTYsIDB4MDA1NywgMHgwMDU4LCAweDAwNTksIDB4MDA1QSwgMHgwMDVCLCAweDAwNUMsIDB4MDA1RCwKKyAgICAweDAwNUUsIDB4MDA1RiwgMHgwMDYwLCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwKKyAgICAweDAwNjYsIDB4MDA2NywgMHgwMDY4LCAweDAwNjksIDB4MDA2QSwgMHgwMDZCLCAweDAwNkMsIDB4MDA2RCwKKyAgICAweDAwNkUsIDB4MDA2RiwgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwKKyAgICAweDAwNzYsIDB4MDA3NywgMHgwMDc4LCAweDAwNzksIDB4MDA3QSwgMHgwMDdCLCAweDAwN0MsIDB4MDA3RCwKKyAgICAweDAwN0UsIDB4MjBBQywgMHgyMEFDLCAweDIxMTAsIDB4MjBBQywgMHgyMEFDLCAweDMwOUIsIDB4MzA5QywKKyAgICAweDJFODAsIDB4MzFDMCwgMHgzMUMxLCAweDMxQzIsIDB4MzFDMywgMHgzMUM0LCAweDAwMDAsIDB4MzFDNSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzMUM2LCAweDMxQzcsIDB4MDAwMCwgMHgwMDAwLCAweDMxQzgsIDB4MDAwMCwKKyAgICAweDMxQzksIDB4MzFDQSwgMHgzMUNCLCAweDMxQ0MsIDB4MDAwMCwgMHgzMUNELCAweDMxQ0UsIDB4RjUzOCwKKyAgICAweEY1MzksIDB4MDAwMCwgMHgwMDAwLCAweDk3NTEsIDB4MDAwMCwgMHg0RTVCLCAweDRFQkIsIDB4MzUzRSwKKyAgICAweDVDMjMsIDB4NUY1MSwgMHg1RkM0LCAweDM4RkEsIDB4NjI0QywgMHg2NTM1LCAweDZCN0EsIDB4NkMzNSwKKyAgICAweDZDM0EsIDB4NzA2QywgMHg3MjJCLCAweDRFMkMsIDB4NzJBRCwgMHgwMDAwLCAweDdGNTIsIDB4NzkzQiwKKyAgICAweDdDRjksIDB4N0Y1MywgMHgwMDAwLCAweDM0QzEsIDB4MDAwMCwgMHg4MDAyLCAweDgwODAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NTM1RCwgMHg4ODY0LCAweDg5QzEsIDB4MDAwMCwgMHg4QkEwLCAweDhEMUQsIDB4OTQ4NSwKKyAgICAweDk1NzgsIDB4OTU3RiwgMHg5NUU4LCAweDAwMDAsIDB4OTdFNiwgMHg5ODc1LCAweDk4Q0UsIDB4OThERSwKKyAgICAweDk5NjMsIDB4MDAwMCwgMHg5QzdDLCAweDlFMUYsIDB4OUVDNCwgMHg2QjZGLCAweEY5MDcsIDB4NEUzNywKKyAgICAweDAwMDAsIDB4OTYxRCwgMHg2MjM3LCAweDk0QTIsIDB4MkU4NCwgMHgyRTg2LCAweDJFODcsIDB4MkU4OCwKKyAgICAweDJFOEEsIDB4MkU4QywgMHgyRThELCAweDJFOTUsIDB4MkU5QywgMHgyRUE1LCAweDJFQTcsIDB4MkVBQSwKKyAgICAweDJFQUMsIDB4MkVBRSwgMHgyRUI2LCAweDJFQkMsIDB4MkVCRSwgMHgyRUNBLCAweDJFQ0MsIDB4MkVDRCwKKyAgICAweDJFQ0YsIDB4MkVENiwgMHgyRUQ3LCAweDJFREUsIDB4MDAwMCwgMHgwMDAwLCAweDY1MEEsIDB4NEUzRCwKKyAgICAweDZFREQsIDB4OUQ0RSwgMHg5MURGLCAweDAwMDAsIDB4NEYxQSwgMHg0RjI4LCAweDRGQTgsIDB4NTE3NCwKKyAgICAweDUxOUMsIDB4NTFFNCwgMHg1MkExLCAweDUyQTgsIDB4NTMzQiwgMHg1MzRFLCAweDUzRDEsIDB4NTNEOCwKKyAgICAweDU2RTIsIDB4NThGMCwgMHg1OTA0LCAweDU5MDcsIDB4NTkzMiwgMHg1OTM0LCAweDVCNjYsIDB4NUI5RSwKKyAgICAweDVCOUYsIDB4NUM5QSwgMHg1RTg2LCAweDYwM0IsIDB4NjU4OSwgMHg2N0ZFLCAweDY4MDQsIDB4Njg2NSwKKyAgICAweDZENEUsIDB4NzBCQywgMHg3NTM1LCAweDdFQTQsIDB4N0VBQywgMHg3RUJBLCAweDdFQzcsIDB4N0VDRiwKKyAgICAweDdFREYsIDB4N0YwNiwgMHg3RjM3LCAweDgyN0EsIDB4ODJDRiwgMHg4MzZGLCAweDg5QzYsIDB4OEJCRSwKKyAgICAweDhCRTIsIDB4OEY2NiwgMHg4RjY3LCAweDhGNkUsIDB4NzQxMSwgMHg3Q0ZDLCAweDdEQ0QsIDB4Njk0NiwKKyAgICAweDdBQzksIDB4NzhCOCwgMHg4MEJDLCAweDhEMEIsIDB4ODBGNiwgMHgwMDAwLCAweDgwOUYsIDB4OUVDNywKKyAgICAweDRDQ0QsIDB4OURDOSwgMHg5RTBDLCAweDRDM0UsIDB4MDAwMCwgMHgwMDAwLCAweDlFMEEsIDB4MDAwMCwKKyAgICAweDM1QzEsIDB4NkU5QSwgMHg4MjNFLCAweDc1MTksIDB4NDkxMSwgMHg5QTZDLCAweDlBOEYsIDB4OUY5OSwKKyAgICAweDc5ODcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg0RTI0LCAweDRFODAsIDB4NEU4NywKKyAgICAweDRFQkYsIDB4NEVFQiwgMHg0RjM3LCAweDM0NEMsIDB4NEZCRCwgMHgzRTQ4LCAweDUwMDMsIDB4MzQ3RCwKKyAgICAweDM0QTUsIDB4NTkwNSwgMHg1MURCLCAweDUxRkMsIDB4NEU4OSwgMHg1MjkwLCAweDUzMjcsIDB4MzVDNywKKyAgICAweDUzQTksIDB4MzU1MSwgMHg1M0IwLCAweDU0MjMsIDB4MzU2RCwgMHgzNTcyLCAweDM2ODEsIDB4NTQ5MywKKyAgICAweDU0QTMsIDB4NTRCNCwgMHg1NEI5LCAweDU0RDAsIDB4NTRFRiwgMHg1NTE4LCAweDU1MjMsIDB4NTUyOCwKKyAgICAweDM1OTgsIDB4MzVBNSwgMHgzNUJGLCAweDU1RDcsIDB4MzVDNSwgMHgwMDAwLCAweDQwNTMsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDQwQkIsIDB4MDAwMCwgMHg1NjUyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDM1RkIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgzRjkzLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4M0ZGOSwKKyAgICAweDAwMDAsIDB4NjQzMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1NENDLCAweDgyQzQsIDB4NTVCOSwgMHgwMDAwLCAweDlDMjYsIDB4OUFCNiwKKyAgICAweDAwMDAsIDB4ODBFQywgMHg1QzFDLCAweDAwMDAsIDB4ODEzNCwgMHgzNzk3LCAweDAwMDAsIDB4OTFCNiwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgzNjA5LCAweDAwMDAsIDB4NTZBRiwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDVBNTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDU3OUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MzcwMywKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDU4OTksIDB4NTI2OCwgMHgzNjFBLCAweDAwMDAsIDB4N0JCMiwgMHg1QjY4LCAweDQ4MDAsIDB4NEIyQywKKyAgICAweDlGMjcsIDB4NDlFNywgMHg5QzFGLCAweDlCOEQsIDB4MDAwMCwgMHgwMDAwLCAweDU1RkIsIDB4MzVGMiwKKyAgICAweDU2ODksIDB4NUQzRSwgMHg1RDQ4LCAweDNERkMsIDB4MzgwRiwgMHg1REE0LCAweDVEQjksIDB4MzgyMCwKKyAgICAweDVGMjUsIDB4NUY4MywgMHgzOTA4LCAweDM5M0YsIDB4Mzk0RCwgMHg2MEQ3LCAweDYxM0QsIDB4NUNFNSwKKyAgICAweDM5ODksIDB4NjFCNywgMHg2MUNGLCAweDM5QjgsIDB4NjIyQywgMHg2MkU1LCAweDM5RjgsIDB4NTZCMSwKKyAgICAweDNBMDMsIDB4NjNFMiwgMHg2M0ZCLCAweDY0MDcsIDB4M0E0QiwgMHg2NEMwLCAweDlGOUYsIDB4M0E5NywKKyAgICAweDY1ODYsIDB4M0FCRCwgMHg2NUZGLCAweDY2NTMsIDB4M0FGMiwgMHg2NjkyLCAweDNCMjIsIDB4NjcxNiwKKyAgICAweDNCNDIsIDB4NjdBNCwgMHgzQjU4LCAweDY4NEEsIDB4Njg4NCwgMHgzQjcyLCAweDNCNzEsIDB4M0I3QiwKKyAgICAweDY5MDksIDB4Njk0MywgMHg3MjVDLCAweDY5NjQsIDB4Njk5RiwgMHg2OTg1LCAweDY5RDYsIDB4M0JERCwKKyAgICAweDZBNjUsIDB4NkE3NCwgMHg2QTcxLCAweDZBODIsIDB4M0JFQywgMHg2QTk5LCAweDNCRjIsIDB4NkFBQiwKKyAgICAweDZBQjUsIDB4NkFENCwgMHg2QUY2LCAweDZCODEsIDB4NkJDMSwgMHg2QkVBLCAweDZDNzUsIDB4NkNBQSwKKyAgICAweDNDQ0IsIDB4NkQwMiwgMHg2RDA2LCAweDZEMjYsIDB4NkQ4MSwgMHgzQ0VGLCAweDZEQTQsIDB4NkRCMSwKKyAgICAweDZFMTUsIDB4NkUxOCwgMHg2RTI5LCAweDZFODYsIDB4MDAwMCwgMHg2RUJCLCAweDZFRTIsIDB4NkVEQSwKKyAgICAweDlGN0YsIDB4NkVFOCwgMHg2RUU5LCAweDZGMjQsIDB4NkYzNCwgMHgzRDQ2LCAweDAwMDAsIDB4NkY4MSwKKyAgICAweDZGQkUsIDB4M0Q2QSwgMHgzRDc1LCAweDcxQjcsIDB4NUM5OSwgMHgzRDhBLCAweDcwMkMsIDB4M0Q5MSwKKyAgICAweDcwNTAsIDB4NzA1NCwgMHg3MDZGLCAweDcwN0YsIDB4MDAwMCwgMHg0M0MxLCAweDM1RjEsIDB4MDAwMCwKKyAgICAweDM2NEUsIDB4M0RBRCwgMHgwMDAwLCAweDY2N0QsIDB4N0M3NCwgMHg3NDhELCAweDdFOTIsIDB4NDUwMywKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDM0N0UsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODc3MSwKKyAgICAweDYzQzEsIDB4Nzc3NywgMHg4OThBLCAweDAwMDAsIDB4OEI0QywgMHgwMDAwLCAweDQ5MkEsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzQUYwLCAweDcwOEYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4Njg4OCwKKyAgICAweDAwMDAsIDB4OUY2MiwgMHg5M0M2LCAweDAwMDAsIDB4OTM2NiwgMHg5MjhGLCAweDg2MTQsIDB4MDAwMCwKKyAgICAweDQxOTAsIDB4Njc4RiwgMHg2ODFFLCAweDM4NjMsIDB4MDAwMCwgMHgzQjE5LCAweDg0OTYsIDB4MDAwMCwKKyAgICAweDM5RTIsIDB4ODQ4MCwgMHg0MzZFLCAweDk3NzEsIDB4OTk5QiwgMHg0OTJELCAweDZGMTcsIDB4MDAwMCwKKyAgICAweDcwQTYsIDB4MDAwMCwgMHg3RTY1LCAweDVEMkYsIDB4M0RGMywgMHgwMDAwLCAweDAwMDAsIDB4N0RBNCwKKyAgICAweDg0MjYsIDB4NTQ4NSwgMHgwMDAwLCAweDAwMDAsIDB4NTc3RSwgMHgwMDAwLCAweDAwMDAsIDB4M0ZFNSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg3MDAzLCAweDAwMDAsIDB4NUQ3MCwgMHg3MzhGLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDRGQzgsIDB4N0ZFNywgMHg3MzEwLCAweDczMzgsIDB4NzM0MSwgMHgzRUE5LCAweDcxRjUsIDB4MDAwMCwKKyAgICAweDczRTEsIDB4M0VDQSwgMHgzRUQxLCAweDc0MTksIDB4NzQxRSwgMHg3NDFGLCAweDNFRTIsIDB4M0VGMCwKKyAgICAweDNFRjQsIDB4M0VGQSwgMHg3NEQzLCAweDNGMEUsIDB4M0Y1MywgMHg3NTZELCAweDc1NzIsIDB4NzU4RCwKKyAgICAweDNGN0MsIDB4NzVDOCwgMHg3NjRELCAweDc2NzQsIDB4M0ZEQywgMHg3NjdBLCAweDcxODgsIDB4NTYyMywKKyAgICAweDg5ODAsIDB4NDAxRCwgMHg3NzQzLCAweDQwMzksIDB4NDA0NSwgMHgzNURCLCAweDc3OTgsIDB4NDA2QSwKKyAgICAweDQwNkYsIDB4NzdCRSwgMHg3N0NCLCAweDc4MTgsIDB4NzgxQywgMHg3ODQ3LCAweDc4NTEsIDB4Nzg2NiwKKyAgICAweDg0NDgsIDB4MDAwMCwgMHg3OTMzLCAweDc5MzIsIDB4NDEwOSwgMHg3OTkxLCAweDdBMDYsIDB4NDE2NywKKyAgICAweDQxQjIsIDB4N0FCQywgMHg4Mjc5LCAweDQxQzQsIDB4N0FDRiwgMHg3QURCLCAweDQxQ0YsIDB4N0I2MiwKKyAgICAweDdCNkMsIDB4N0I3QiwgMHg3QzEyLCAweDQyNjAsIDB4NDI3QSwgMHg3QzdCLCAweDdDOUMsIDB4NDI4QywKKyAgICAweDdDQjgsIDB4NDI5NCwgMHg4RjkzLCAweDcwQzAsIDB4MDAwMCwgMHg3RENGLCAweDdERDQsIDB4N0REMCwKKyAgICAweDdERkQsIDB4N0ZCNCwgMHg3MjlGLCAweDQzOTcsIDB4ODAyMCwgMHg4MDI1LCAweDgwMkUsIDB4ODAzMSwKKyAgICAweDgwNTQsIDB4NTdCNCwgMHg3MEEwLCAweDgwQjcsIDB4ODBFOSwgMHg0M0VELCAweDgxMEMsIDB4ODEwRSwKKyAgICAweDgxMTIsIDB4ODExNCwgMHg0NDAxLCAweDNCMzksIDB4ODE1NiwgMHg4MTU5LCAweDgxNUEsIDB4NDQxMywKKyAgICAweDgxN0MsIDB4NDQyNSwgMHg0NDJELCAweDgxQTUsIDB4NTdFRiwgMHg4MUMxLCAweDgxRTQsIDB4ODI1NCwKKyAgICAweDQ0OEYsIDB4ODI3NiwgMHg4MkNBLCAweDgyRDgsIDB4NDRCMCwgMHg4MzU3LCAweDk2NjksIDB4ODQwNSwKKyAgICAweDcwRjUsIDB4ODQ2NCwgMHg4NDg4LCAweDQ1MDQsIDB4ODRCRSwgMHg4NEUxLCAweDg0RjgsIDB4ODUxMCwKKyAgICAweDg1MzgsIDB4ODU1MiwgMHg0NTNCLCAweDg1NkYsIDB4ODU3MCwgMHg4NUUwLCAweDQ1NzcsIDB4ODY3MiwKKyAgICAweDg2OTIsIDB4ODZFRiwgMHg5NjQ1LCAweDQ2MDYsIDB4NDYxNywgMHg4OEFFLCAweDg4RkYsIDB4ODkyNCwKKyAgICAweDg5OTEsIDB4MDAwMCwgMHg4QTM4LCAweDhBOTQsIDB4OEFCNCwgMHg4QzUxLCAweDhDRDQsIDB4OENGMiwKKyAgICAweDhEMUMsIDB4NDc5OCwgMHg4REMzLCAweDQ3RUQsIDB4OEUzQSwgMHg1NzU0LCAweDU1RjUsIDB4NDgzNywKKyAgICAweDhFQ0UsIDB4OEVFMiwgMHg4RUU0LCAweDhFRUQsIDB4OEVGMiwgMHg4RkMxLCAweDhGQ0EsIDB4OEZDQywKKyAgICAweDkwMzMsIDB4NDhBRCwgMHg5OEUwLCAweDkyMTMsIDB4NDkxRSwgMHg5MjI4LCAweDkyNTgsIDB4OTI2QiwKKyAgICAweDkyQjEsIDB4OTJBRSwgMHg5MkJGLCAweDkyRTMsIDB4OTJFQiwgMHg5MkYzLCAweDkyRjQsIDB4OTJGRCwKKyAgICAweDkzNDMsIDB4OTM4NCwgMHg5M0FELCAweDQ5NDUsIDB4NDk1MSwgMHg5NDE3LCAweDk0MUQsIDB4OTQyRCwKKyAgICAweDk0M0UsIDB4NDk2QSwgMHg5NDU0LCAweDk0NzksIDB4OTUyRCwgMHg5NUEyLCAweDQ5QTcsIDB4OTVGNCwKKyAgICAweDk2MzMsIDB4NDlFNSwgMHg0QTI0LCAweDk3NDAsIDB4NEEzNSwgMHg5N0IyLCAweDk3QzIsIDB4NEFFNCwKKyAgICAweDk4QjksIDB4NEIxOSwgMHg5OEYxLCAweDU4NDQsIDB4OTkxOSwgMHg5OTM3LCAweDk5NUQsIDB4OTk2MiwKKyAgICAweDRCNzAsIDB4OTlDNSwgMHg0QjlELCAweDlBM0MsIDB4OUIwRiwgMHg5QjY5LCAweDlCREQsIDB4OUJGMSwKKyAgICAweDlCRjQsIDB4NEM2RCwgMHg5QzIwLCAweDM3NkYsIDB4MDAwMCwgMHg5RDQ5LCAweDlFRkUsIDB4NTY1MCwKKyAgICAweDlEQkQsIDB4OURGQywgMHg5NEY2LCAweDhGQjYsIDB4OUVCMSwgMHg5RUJELCAweDlFQzYsIDB4OTREQywKKyAgICAweDlFRTIsIDB4OUVGMSwgMHg5RUY4LCAweDlGNDQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTRDMywKKyAgICAweDAwMDAsIDB4OTRDMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDU3NTcsIDB4NzE3MywKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg1NDlFLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDM2NDcsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1MzY0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg3MEJCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg3MTk4LCAweDAwMDAsIDB4NjlFOSwKKyAgICAweDM2QzgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDU4QjUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDU3ODgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1OTY1LCAweDAwMDAsIDB4MDAwMCwgMHg1NzNGLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NTdBMSwgMHg3MTUxLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NTZCOSwKKyAgICAweDAwMDAsIDB4MzYxOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5NDlGLCAweDAwMDAsIDB4MzZCOSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1NkQ2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NjNFNiwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDNERjcsIDB4MDAwMCwgMHgwMDAwLCAweDhGRDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDdFOUYsIDB4MDAwMCwgMHgwMDAwLCAweDRDQTQsIDB4OTU0NywKKyAgICAweDAwMDAsIDB4NzFBMiwgMHgwMDAwLCAweDAwMDAsIDB4NEQ5QywgMHgwMDAwLCAweDhGQkUsIDB4OEZCQSwKKyAgICAweDAwMDAsIDB4OEZCOSwgMHgwMDAwLCAweDRFRUEsIDB4MDAwMCwgMHg4RTgwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg0RTlBLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDNEQzYsIDB4MDAwMCwKKyAgICAweDRFMUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg1NURFLCAweDg3ODYsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NUI5MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg0RTFBLCAweDRFMDQsIDB4NUIwRCwKKyAgICAweDM2QUMsIDB4NTM3RCwgMHgzNkE1LCAweDU4OUEsIDB4MDAwMCwgMHg1N0FBLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NTdBNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDlDMUIsIDB4MDAwMCwgMHgzRTA2LCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg1NzdBLCAweDU0REEsIDB4NzE3QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDM2MzUsIDB4MDAwMCwKKyAgICAweDUyMjAsIDB4M0MxOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDQ1NjIsIDB4NUIxRiwgMHgwMDAwLCAweDlGNTAsIDB4OUVBNiwgMHgwMDAwLCAweDUxRTIsIDB4NTM0MiwKKyAgICAweDY2QUQsIDB4NTg1QywgMHg1NTUzLCAweDNEODUsIDB4NjE2MCwgMHg0OEFFLCAweDk3QkQsIDB4MDAwMCwKKyAgICAweDYwQjMsIDB4ODQyNCwgMHg5ODE0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDNCMkIsIDB4M0QzMiwKKyAgICAweDAwMDAsIDB4NzA4MSwgMHg1QzlDLCAweDAwMDAsIDB4MzczMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDEwMCwgMHgwMEMxLCAweDAxQ0QsIDB4MDBDMCwgMHgwMTEyLCAweDAwQzksIDB4MDExQSwKKyAgICAweDAwQzgsIDB4MDE0QywgMHgwMEQzLCAweDAxRDEsIDB4MDBEMiwgMHhGMzI1LCAweDFFQkUsIDB4RjMyNywKKyAgICAweDFFQzAsIDB4MDBDQSwgMHgwMTAxLCAweDAwRTEsIDB4MDFDRSwgMHgwMEUwLCAweDAyNTEsIDB4MDExMywKKyAgICAweDAwRTksIDB4MDExQiwgMHgwMEU4LCAweDAxMkIsIDB4MDBFRCwgMHgwMUQwLCAweDAwRUMsIDB4MDE0RCwKKyAgICAweDAwRjMsIDB4MDFEMiwgMHgwMEYyLCAweDAxNkIsIDB4MDBGQSwgMHgwMUQ0LCAweDAwRjksIDB4MDFENiwKKyAgICAweDAxRDgsIDB4MDFEQSwgMHgwMURDLCAweDAwRkMsIDB4RjM0NCwgMHgxRUJGLCAweEYzNDYsIDB4MUVDMSwKKyAgICAweDAwRUEsIDB4MDI2MSwgMHgwMjgzLCAweDAyNTAsIDB4MDI1QiwgMHgwMjU0LCAweDAyNzUsIDB4MDE1MywKKyAgICAweDAwRjgsIDB4MDE0QiwgMHgwMjhBLCAweDAyNkEsIDB4MjNEQSwgMHgyM0RCLCAweDJFOUQsIDB4MkVDNiwKKyAgICAweDJFRTMsIDB4NTAzQiwgMHg2REZFLCAweDAwMDAsIDB4OUZBNiwgMHgzREM5LCAweDg4OEYsIDB4MDAwMCwKKyAgICAweDcwNzcsIDB4NUNGNSwgMHg0QjIwLCAweDAwMDAsIDB4MzU1OSwgMHgwMDAwLCAweDYxMjIsIDB4MDAwMCwKKyAgICAweDhGQTcsIDB4OTFGNiwgMHg3MTkxLCAweDY3MTksIDB4NzNCQSwgMHgwMDAwLCAweDAwMDAsIDB4M0M4QiwKKyAgICAweDAwMDAsIDB4NEIxMCwgMHg3OEU0LCAweDc0MDIsIDB4NTFBRSwgMHgwMDAwLCAweDQwMDksIDB4NkE2MywKKyAgICAweDAwMDAsIDB4NDIyMywgMHg4NjBGLCAweDdBMkEsIDB4MDAwMCwgMHgwMDAwLCAweDk3NTUsIDB4NzA0RCwKKyAgICAweDUzMjQsIDB4MDAwMCwgMHg5M0Y0LCAweDc2RDksIDB4MDAwMCwgMHg5RkE3LCAweDc3REQsIDB4NEVBMywKKyAgICAweDRGRjAsIDB4NTBCQywgMHg0RTJGLCAweDRGMTcsIDB4OUZBOCwgMHg1NDM0LCAweDdEOEIsIDB4NTg5MiwKKyAgICAweDU4RDAsIDB4MDAwMCwgMHg1RTkyLCAweDVFOTksIDB4NUZDMiwgMHgwMDAwLCAweDY1OEIsIDB4MDAwMCwKKyAgICAweDY5MTksIDB4NkE0MywgMHgwMDAwLCAweDZDRkYsIDB4NzIwMCwgMHgwMDAwLCAweDczOEMsIDB4M0VEQiwKKyAgICAweDAwMDAsIDB4NUIxNSwgMHg3NEI5LCAweDhCODMsIDB4MDAwMCwgMHgwMDAwLCAweDdBOTMsIDB4N0JFQywKKyAgICAweDdDQzMsIDB4N0U2QywgMHg4MkY4LCAweDg1OTcsIDB4OUZBOSwgMHg4ODkwLCAweDlGQUEsIDB4OEVCOSwKKyAgICAweDlGQUIsIDB4OEZDRiwgMHg4NTVGLCAweDk5RTAsIDB4OTIyMSwgMHg5RkFDLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDQwNzEsIDB4NDJBMiwgMHg1QTFBLCAweDk4NjgsIDB4Njc2QiwgMHg0Mjc2LCAweDU3M0QsIDB4ODVENiwKKyAgICAweDAwMDAsIDB4ODJCRiwgMHgwMDAwLCAweDRDODEsIDB4MDAwMCwgMHg1RDdCLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDlGQUQsIDB4OUZBRSwgMHg1Qjk2LCAweDlGQUYsIDB4N0U1QiwgMHg0M0YwLCAweDRDMzIsIDB4NDYwMywKKyAgICAweDQ1QTYsIDB4NDU3OCwgMHgwMDAwLCAweDRENzcsIDB4NDVCMywgMHgwMDAwLCAweDRDRTIsIDB4MDAwMCwKKyAgICAweDNCOTUsIDB4NDczNiwgMHg0NzQ0LCAweDRDNDcsIDB4NEM0MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHg0QzU3LCAweDAwMDAsIDB4NDc0RiwgMHg0NURBLCAweDRDODUsIDB4MDAwMCwKKyAgICAweDREMDcsIDB4NEFBNCwgMHg0NkExLCAweDAwMDAsIDB4NzIyNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NjY0RCwgMHg1NkZCLCAweDdEOTUsIDB4NTkxRCwgMHgwMDAwLCAweDNERjQsIDB4OTczNCwKKyAgICAweDAwMDAsIDB4NUJEQiwgMHgwMDAwLCAweDVBQTQsIDB4MzYyNSwgMHgwMDAwLCAweDVBRDEsIDB4NUJCNywKKyAgICAweDVDRkMsIDB4Njc2RSwgMHg4NTkzLCAweDAwMDAsIDB4NzQ2MSwgMHg3NDlELCAweDAwMDAsIDB4NjZFNywKKyAgICAweDZFNTcsIDB4NzlDQSwgMHgzRDg4LCAweDQ0QzMsIDB4MDAwMCwgMHgwMDAwLCAweDQzOUEsIDB4NDUzNiwKKyAgICAweDVDRDUsIDB4MDAwMCwgMHg4QUY5LCAweDVDNzgsIDB4M0QxMiwgMHgwMDAwLCAweDVENzgsIDB4OUZCMiwKKyAgICAweDcxNTcsIDB4NDU1OCwgMHgwMDAwLCAweDAwMDAsIDB4NEM3NywgMHgzOTc4LCAweDM0NEEsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4OEFDQywgMHg0RkI0LCAweDAwMDAsIDB4NTlCRiwgMHg4MTZDLCAweDk4NTYsIDB4MDAwMCwKKyAgICAweDVGM0IsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NDEwMiwgMHg0NkJCLCAweDAwMDAsIDB4M0YwNywKKyAgICAweDlGQjMsIDB4MDAwMCwgMHg0MEY4LCAweDM3RDYsIDB4NDZGNywgMHgwMDAwLCAweDQxN0MsIDB4MDAwMCwKKyAgICAweDAwMDAsIDB4NDU2RCwgMHgzOEQ0LCAweDAwMDAsIDB4NDU2MSwgMHg0NTFCLCAweDREODksIDB4NEM3QiwKKyAgICAweDRENzYsIDB4NDVFQSwgMHgzRkM4LCAweDAwMDAsIDB4MzY2MSwgMHg0NERFLCAweDQ0QkQsIDB4NDFFRCwKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9CNXBjLUhfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9CNXBjLUhfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEyYTg1OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0I1cGMtSF8wLmNwcApAQCAtMCwwICsxLDkxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfQjVwY19IXzBbMjQ3ICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDAwMDEsIDB4MDA4MCwgMHgwMDgwLCAweDAwM0QsIDB4MDBGRCwgMHgwMEZGLCAweDAwNjAsDQorICAgIDB4QTE0MCwgMHhBMTU4LCAweDAwNjMsIDB4QTE1OSwgMHhBMTVDLCAweDM1QUYsIDB4QTE1RCwgMHhBMTdFLCAweDAwODAsDQorICAgIDB4QTFBMSwgMHhBMUY1LCAweDAwQTIsIDB4QTFGNiwgMHhBMUY2LCAweDAwRjgsIDB4QTFGNywgMHhBMUY3LCAweDAwRjcsDQorICAgIDB4QTFGOCwgMHhBMUZFLCAweDAwRjksIDB4QTI0MCwgMHhBMjdFLCAweDAxMDAsIDB4QTJBMSwgMHhBMkZFLCAweDAxM0YsDQorICAgIDB4QTM0MCwgMHhBMzdFLCAweDAxOUQsIDB4QTNBMSwgMHhBM0JCLCAweDAxREMsIDB4QTNCRCwgMHhBM0JGLCAweDAxRjcsDQorICAgIDB4QTNDMCwgMHhBM0UwLCAweDAyMzIsIDB4QTQ0MCwgMHhBNDdFLCAweDAyNTMsIDB4QTRBMSwgMHhBNEZFLCAweDAyOTIsDQorICAgIDB4QTU0MCwgMHhBNTdFLCAweDAyRjAsIDB4QTVBMSwgMHhBNUZFLCAweDAzMkYsIDB4QTY0MCwgMHhBNjdFLCAweDAzOEQsDQorICAgIDB4QTZBMSwgMHhBNkZFLCAweDAzQ0MsIDB4QTc0MCwgMHhBNzdFLCAweDA0MkEsIDB4QTdBMSwgMHhBN0ZFLCAweDA0NjksDQorICAgIDB4QTg0MCwgMHhBODdFLCAweDA0QzcsIDB4QThBMSwgMHhBOEZFLCAweDA1MDYsIDB4QTk0MCwgMHhBOTdFLCAweDA1NjQsDQorICAgIDB4QTlBMSwgMHhBOUZFLCAweDA1QTMsIDB4QUE0MCwgMHhBQTdFLCAweDA2MDEsIDB4QUFBMSwgMHhBQUZFLCAweDA2NDAsDQorICAgIDB4QUI0MCwgMHhBQjdFLCAweDA2OUUsIDB4QUJBMSwgMHhBQkZFLCAweDA2REQsIDB4QUM0MCwgMHhBQzdFLCAweDA3M0IsDQorICAgIDB4QUNBMSwgMHhBQ0ZELCAweDA3N0EsIDB4QUNGRSwgMHhBQ0ZFLCAweDA5N0YsIDB4QUQ0MCwgMHhBRDdFLCAweDA3RDcsDQorICAgIDB4QURBMSwgMHhBREZFLCAweDA4MTYsIDB4QUU0MCwgMHhBRTdFLCAweDA4NzQsIDB4QUVBMSwgMHhBRUZFLCAweDA4QjMsDQorICAgIDB4QUY0MCwgMHhBRjdFLCAweDA5MTEsIDB4QUZBMSwgMHhBRkNGLCAweDA5NTAsIDB4QUZEMCwgMHhBRkZFLCAweDA5ODAsDQorICAgIDB4QjA0MCwgMHhCMDdFLCAweDA5QUYsIDB4QjBBMSwgMHhCMEZFLCAweDA5RUUsIDB4QjE0MCwgMHhCMTdFLCAweDBBNEMsDQorICAgIDB4QjFBMSwgMHhCMUZFLCAweDBBOEIsIDB4QjI0MCwgMHhCMjdFLCAweDBBRTksIDB4QjJBMSwgMHhCMkZFLCAweDBCMjgsDQorICAgIDB4QjM0MCwgMHhCMzdFLCAweDBCODYsIDB4QjNBMSwgMHhCM0ZFLCAweDBCQzUsIDB4QjQ0MCwgMHhCNDdFLCAweDBDMjMsDQorICAgIDB4QjRBMSwgMHhCNEZFLCAweDBDNjIsIDB4QjU0MCwgMHhCNTdFLCAweDBDQzAsIDB4QjVBMSwgMHhCNUZFLCAweDBDRkYsDQorICAgIDB4QjY0MCwgMHhCNjdFLCAweDBENUQsIDB4QjZBMSwgMHhCNkZFLCAweDBEOUMsIDB4Qjc0MCwgMHhCNzdFLCAweDBERkEsDQorICAgIDB4QjdBMSwgMHhCN0ZFLCAweDBFMzksIDB4Qjg0MCwgMHhCODdFLCAweDBFOTcsIDB4QjhBMSwgMHhCOEZFLCAweDBFRDYsDQorICAgIDB4Qjk0MCwgMHhCOTdFLCAweDBGMzQsIDB4QjlBMSwgMHhCOUZFLCAweDBGNzMsIDB4QkE0MCwgMHhCQTdFLCAweDBGRDEsDQorICAgIDB4QkFBMSwgMHhCQUZFLCAweDEwMTAsIDB4QkI0MCwgMHhCQjdFLCAweDEwNkUsIDB4QkJBMSwgMHhCQkM3LCAweDEwQUQsDQorICAgIDB4QkJDOCwgMHhCQkZFLCAweDEwRDUsIDB4QkM0MCwgMHhCQzdFLCAweDExMEMsIDB4QkNBMSwgMHhCQ0ZFLCAweDExNEIsDQorICAgIDB4QkQ0MCwgMHhCRDdFLCAweDExQTksIDB4QkRBMSwgMHhCREZFLCAweDExRTgsIDB4QkU0MCwgMHhCRTUxLCAweDEyNDYsDQorICAgIDB4QkU1MiwgMHhCRTUyLCAweDEwRDQsIDB4QkU1MywgMHhCRTdFLCAweDEyNTgsIDB4QkVBMSwgMHhCRUZFLCAweDEyODQsDQorICAgIDB4QkY0MCwgMHhCRjdFLCAweDEyRTIsIDB4QkZBMSwgMHhCRkZFLCAweDEzMjEsIDB4QzA0MCwgMHhDMDdFLCAweDEzN0YsDQorICAgIDB4QzBBMSwgMHhDMEZFLCAweDEzQkUsIDB4QzE0MCwgMHhDMTdFLCAweDE0MUMsIDB4QzFBMSwgMHhDMUFBLCAweDE0NUIsDQorICAgIDB4QzFBQiwgMHhDMUZFLCAweDE0NjYsIDB4QzI0MCwgMHhDMjdFLCAweDE0QkEsIDB4QzJBMSwgMHhDMkNBLCAweDE0RjksDQorICAgIDB4QzJDQiwgMHhDMkNCLCAweDE0NjUsIDB4QzJDQywgMHhDMkZFLCAweDE1MjMsIDB4QzM0MCwgMHhDMzYwLCAweDE1NTYsDQorICAgIDB4QzM2MSwgMHhDMzdFLCAweDE1NzgsIDB4QzNBMSwgMHhDM0I4LCAweDE1OTYsIDB4QzNCOSwgMHhDM0I5LCAweDE1QUYsDQorICAgIDB4QzNCQSwgMHhDM0JBLCAweDE1QUUsIDB4QzNCQiwgMHhDM0ZFLCAweDE1QjAsIDB4QzQ0MCwgMHhDNDU1LCAweDE1RjQsDQorICAgIDB4QzQ1NiwgMHhDNDU2LCAweDE1NzcsIDB4QzQ1NywgMHhDNDdFLCAweDE2MEEsIDB4QzRBMSwgMHhDNEZFLCAweDE2MzIsDQorICAgIDB4QzU0MCwgMHhDNTdFLCAweDE2OTAsIDB4QzVBMSwgMHhDNUZFLCAweDE2Q0YsIDB4QzY0MCwgMHhDNjdFLCAweDE3MkQsDQorICAgIDB4Qzk0MCwgMHhDOTQ5LCAweDE3NkMsIDB4Qzk0QSwgMHhDOTRBLCAweDAyNzQsIDB4Qzk0QiwgMHhDOTZCLCAweDE3NzYsDQorICAgIDB4Qzk2QywgMHhDOTdFLCAweDE3OTgsIDB4QzlBMSwgMHhDOUJELCAweDE3QUIsIDB4QzlCRSwgMHhDOUJFLCAweDE3OTcsDQorICAgIDB4QzlCRiwgMHhDOUVDLCAweDE3QzgsIDB4QzlFRCwgMHhDOUZFLCAweDE3RjcsIDB4Q0E0MCwgMHhDQTdFLCAweDE4MDksDQorICAgIDB4Q0FBMSwgMHhDQUY2LCAweDE4NDgsIDB4Q0FGNywgMHhDQUY3LCAweDE3RjYsIDB4Q0FGOCwgMHhDQUZFLCAweDE4OUUsDQorICAgIDB4Q0I0MCwgMHhDQjdFLCAweDE4QTUsIDB4Q0JBMSwgMHhDQkZFLCAweDE4RTQsIDB4Q0M0MCwgMHhDQzdFLCAweDE5NDIsDQorICAgIDB4Q0NBMSwgMHhDQ0ZFLCAweDE5ODEsIDB4Q0Q0MCwgMHhDRDdFLCAweDE5REYsIDB4Q0RBMSwgMHhDREZFLCAweDFBMUUsDQorICAgIDB4Q0U0MCwgMHhDRTdFLCAweDFBN0MsIDB4Q0VBMSwgMHhDRUZFLCAweDFBQkIsIDB4Q0Y0MCwgMHhDRjdFLCAweDFCMTksDQorICAgIDB4Q0ZBMSwgMHhDRkZFLCAweDFCNTgsIDB4RDA0MCwgMHhEMDdFLCAweDFCQjYsIDB4RDBBMSwgMHhEMEZFLCAweDFCRjUsDQorICAgIDB4RDE0MCwgMHhEMTdFLCAweDFDNTMsIDB4RDFBMSwgMHhEMUZFLCAweDFDOTIsIDB4RDI0MCwgMHhEMjdFLCAweDFDRjAsDQorICAgIDB4RDJBMSwgMHhEMkZFLCAweDFEMkYsIDB4RDM0MCwgMHhEMzdFLCAweDFEOEQsIDB4RDNBMSwgMHhEM0ZFLCAweDFEQ0MsDQorICAgIDB4RDQ0MCwgMHhENDdFLCAweDFFMkEsIDB4RDRBMSwgMHhENEZFLCAweDFFNjksIDB4RDU0MCwgMHhENTdFLCAweDFFQzcsDQorICAgIDB4RDVBMSwgMHhENUZFLCAweDFGMDYsIDB4RDY0MCwgMHhENjdFLCAweDFGNjQsIDB4RDZBMSwgMHhENkNCLCAweDFGQTMsDQorICAgIDB4RDZDQywgMHhENkNDLCAweDIyNTQsIDB4RDZDRCwgMHhENkZFLCAweDFGQ0YsIDB4RDc0MCwgMHhENzc5LCAweDIwMDEsDQorICAgIDB4RDc3QSwgMHhENzdBLCAweDIyQjksIDB4RDc3QiwgMHhENzdFLCAweDIwM0IsIDB4RDdBMSwgMHhEN0ZFLCAweDIwM0YsDQorICAgIDB4RDg0MCwgMHhEODdFLCAweDIwOUQsIDB4RDhBMSwgMHhEOEZFLCAweDIwREMsIDB4RDk0MCwgMHhEOTdFLCAweDIxM0EsDQorICAgIDB4RDlBMSwgMHhEOUZFLCAweDIxNzksIDB4REE0MCwgMHhEQTdFLCAweDIxRDcsIDB4REFBMSwgMHhEQURFLCAweDIyMTYsDQorICAgIDB4REFERiwgMHhEQURGLCAweDFGQ0UsIDB4REFFMCwgMHhEQUZFLCAweDIyNTUsIDB4REI0MCwgMHhEQjdFLCAweDIyNzQsDQorICAgIDB4REJBMSwgMHhEQkE2LCAweDIyQjMsIDB4REJBNywgMHhEQkZFLCAweDIyQkEsIDB4REM0MCwgMHhEQzdFLCAweDIzMTIsDQorICAgIDB4RENBMSwgMHhEQ0ZFLCAweDIzNTEsIDB4REQ0MCwgMHhERDdFLCAweDIzQUYsIDB4RERBMSwgMHhEREZCLCAweDIzRUUsDQorICAgIDB4RERGQywgMHhEREZDLCAweDIzODEsIDB4RERGRCwgMHhEREZFLCAweDI0NDksIDB4REU0MCwgMHhERTdFLCAweDI0NEIsDQorICAgIDB4REVBMSwgMHhERUZFLCAweDI0OEEsIDB4REY0MCwgMHhERjdFLCAweDI0RTgsIDB4REZBMSwgMHhERkZFLCAweDI1MjcsDQorICAgIDB4RTA0MCwgMHhFMDdFLCAweDI1ODUsIDB4RTBBMSwgMHhFMEZFLCAweDI1QzQsIDB4RTE0MCwgMHhFMTdFLCAweDI2MjIsDQorICAgIDB4RTFBMSwgMHhFMUZFLCAweDI2NjEsIDB4RTI0MCwgMHhFMjdFLCAweDI2QkYsIDB4RTJBMSwgMHhFMkZFLCAweDI2RkUsDQorICAgIDB4RTM0MCwgMHhFMzdFLCAweDI3NUMsIDB4RTNBMSwgMHhFM0ZFLCAweDI3OUIsIDB4RTQ0MCwgMHhFNDdFLCAweDI3RjksDQorICAgIDB4RTRBMSwgMHhFNEZFLCAweDI4MzgsIDB4RTU0MCwgMHhFNTdFLCAweDI4OTYsIDB4RTVBMSwgMHhFNUZFLCAweDI4RDUsDQorICAgIDB4RTY0MCwgMHhFNjdFLCAweDI5MzMsIDB4RTZBMSwgMHhFNkZFLCAweDI5NzIsIDB4RTc0MCwgMHhFNzdFLCAweDI5RDAsDQorICAgIDB4RTdBMSwgMHhFN0ZFLCAweDJBMEYsIDB4RTg0MCwgMHhFODdFLCAweDJBNkQsIDB4RThBMSwgMHhFOEEyLCAweDJBQUMsDQorICAgIDB4RThBMywgMHhFOEZFLCAweDJBQUYsIDB4RTk0MCwgMHhFOTc1LCAweDJCMEIsIDB4RTk3NiwgMHhFOTdFLCAweDJCNDIsDQorICAgIDB4RTlBMSwgMHhFOUZFLCAweDJCNEIsIDB4RUE0MCwgMHhFQTdFLCAweDJCQTksIDB4RUFBMSwgMHhFQUZFLCAweDJCRTgsDQorICAgIDB4RUI0MCwgMHhFQjVBLCAweDJDNDYsIDB4RUI1QiwgMHhFQjdFLCAweDJDNjIsIDB4RUJBMSwgMHhFQkYwLCAweDJDODYsDQorICAgIDB4RUJGMSwgMHhFQkYxLCAweDJBQUUsIDB4RUJGMiwgMHhFQkZFLCAweDJDRDYsIDB4RUM0MCwgMHhFQzdFLCAweDJDRTMsDQorICAgIDB4RUNBMSwgMHhFQ0RELCAweDJEMjIsIDB4RUNERSwgMHhFQ0RFLCAweDJCNDEsIDB4RUNERiwgMHhFQ0ZFLCAweDJENUYsDQorICAgIDB4RUQ0MCwgMHhFRDdFLCAweDJEN0YsIDB4RURBMSwgMHhFREE5LCAweDJEQkUsIDB4RURBQSwgMHhFREZFLCAweDJEQzgsDQorICAgIDB4RUU0MCwgMHhFRTdFLCAweDJFMUQsIDB4RUVBMSwgMHhFRUVBLCAweDJFNUMsIDB4RUVFQiwgMHhFRUVCLCAweDMwMTQsDQorICAgIDB4RUVFQywgMHhFRUZFLCAweDJFQTYsIDB4RUY0MCwgMHhFRjdFLCAweDJFQjksIDB4RUZBMSwgMHhFRkZFLCAweDJFRjgsDQorICAgIDB4RjA0MCwgMHhGMDU1LCAweDJGNTYsIDB4RjA1NiwgMHhGMDU2LCAweDJEQzcsIDB4RjA1NywgMHhGMDdFLCAweDJGNkMsDQorICAgIDB4RjBBMSwgMHhGMENBLCAweDJGOTQsIDB4RjBDQiwgMHhGMENCLCAweDJDNjEsIDB4RjBDQywgMHhGMEZFLCAweDJGQkUsDQorICAgIDB4RjE0MCwgMHhGMTYyLCAweDJGRjEsIDB4RjE2MywgMHhGMTZBLCAweDMwMTUsIDB4RjE2QiwgMHhGMTZCLCAweDMxNjAsDQorICAgIDB4RjE2QywgMHhGMTdFLCAweDMwMUQsIDB4RjFBMSwgMHhGMUZFLCAweDMwMzAsIDB4RjI0MCwgMHhGMjY3LCAweDMwOEUsDQorICAgIDB4RjI2OCwgMHhGMjY4LCAweDMxRUYsIDB4RjI2OSwgMHhGMjdFLCAweDMwQjYsIDB4RjJBMSwgMHhGMkMyLCAweDMwQ0MsDQorICAgIDB4RjJDMywgMHhGMkZFLCAweDMwRUYsIDB4RjM0MCwgMHhGMzc0LCAweDMxMkIsIDB4RjM3NSwgMHhGMzdFLCAweDMxNjEsDQorICAgIDB4RjNBMSwgMHhGM0ZFLCAweDMxNkIsIDB4RjQ0MCwgMHhGNDY1LCAweDMxQzksIDB4RjQ2NiwgMHhGNDdFLCAweDMxRjAsDQorICAgIDB4RjRBMSwgMHhGNEI0LCAweDMyMDksIDB4RjRCNSwgMHhGNEI1LCAweDMwRUUsIDB4RjRCNiwgMHhGNEZDLCAweDMyMUQsDQorICAgIDB4RjRGRCwgMHhGNEZFLCAweDMyNjUsIDB4RjU0MCwgMHhGNTdFLCAweDMyNjcsIDB4RjVBMSwgMHhGNUZFLCAweDMyQTYsDQorICAgIDB4RjY0MCwgMHhGNjYyLCAweDMzMDQsIDB4RjY2MywgMHhGNjYzLCAweDMyNjQsIDB4RjY2NCwgMHhGNjdFLCAweDMzMjcsDQorICAgIDB4RjZBMSwgMHhGNkZFLCAweDMzNDIsIDB4Rjc0MCwgMHhGNzdFLCAweDMzQTAsIDB4RjdBMSwgMHhGN0ZFLCAweDMzREYsDQorICAgIDB4Rjg0MCwgMHhGODdFLCAweDM0M0QsIDB4RjhBMSwgMHhGOEZFLCAweDM0N0MsIDB4Rjk0MCwgMHhGOTc2LCAweDM0REEsDQorICAgIDB4Rjk3NywgMHhGOTdFLCAweDM1MTIsIDB4RjlBMSwgMHhGOUMzLCAweDM1MUEsIDB4RjlDNCwgMHhGOUM0LCAweDM1MTEsDQorICAgIDB4RjlDNSwgMHhGOUM1LCAweDM1M0QsIDB4RjlDNiwgMHhGOUM2LCAweDM1NDksIDB4RjlDNywgMHhGOUQxLCAweDM1M0UsDQorICAgIDB4RjlEMiwgMHhGOUQ1LCAweDM1NEEsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9CNXBjLVZfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9CNXBjLVZfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg4YWVmYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0I1cGMtVl8wLmNwcApAQCAtMCwwICsxLDEyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfQjVwY19WXzBbMTIgKiAzXSA9IHsNCisgICAgMHhBMTRCLCAweEExNEIsIDB4MzU0RSwgMHhBMTVBLCAweEExNUEsIDB4MzVBRiwgMHhBMTVDLCAweEExNUMsIDB4MzVCMSwNCisgICAgMHhBMTVELCAweEExNUUsIDB4MDA4MiwgMHhBMTYxLCAweEExNjIsIDB4MDA4NiwgMHhBMTY1LCAweEExNjYsIDB4MDA4QSwNCisgICAgMHhBMTY5LCAweEExNkEsIDB4MDA4RSwgMHhBMTZELCAweEExNkUsIDB4MDA5MiwgMHhBMTcxLCAweEExNzIsIDB4MDA5NiwNCisgICAgMHhBMTc1LCAweEExNzYsIDB4MDA5QSwgMHhBMTc5LCAweEExN0EsIDB4MDA5RSwgMHhBMUUzLCAweEExRTMsIDB4MzU0RiwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0NOUy1FVUMtSF8wLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0NOUy1FVUMtSF8wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2FlODdjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvQ05TLUVVQy1IXzAuY3BwCkBAIC0wLDAgKzEsMTgyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfQ05TX0VVQ19IXzBbMTU3ICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDM1NTAsIDB4QTFBMSwgMHhBMUZFLCAweDAwNjMsIDB4QTJBMSwgMHhBMkZFLCAweDAwQzEsDQorICAgIDB4QTNBMSwgMHhBM0NFLCAweDAxMUYsIDB4QTRBMSwgMHhBNEZFLCAweDAxNEQsIDB4QTVBMSwgMHhBNUVDLCAweDAxQUIsDQorICAgIDB4QTVFRSwgMHhBNUYwLCAweDAxRjcsIDB4QTZBMSwgMHhBNkJFLCAweDAxRkEsIDB4QTdBMSwgMHhBN0ExLCAweDAyNTMsDQorICAgIDB4QTdBMiwgMHhBN0E0LCAweDAyMTgsIDB4QTdBNSwgMHhBN0E1LCAweDAyNTQsIDB4QTdBNiwgMHhBN0E2LCAweDAyMUIsDQorICAgIDB4QTdBNywgMHhBN0E3LCAweDAyNUEsIDB4QTdBOCwgMHhBN0E4LCAweDAyMUMsIDB4QTdBOSwgMHhBN0FDLCAweDAyNUIsDQorICAgIDB4QTdBRCwgMHhBN0FGLCAweDAyMUQsIDB4QTdCMCwgMHhBN0IwLCAweDAyNUYsIDB4QTdCMSwgMHhBN0IxLCAweDE3NkUsDQorICAgIDB4QTdCMiwgMHhBN0IyLCAweDAyNjAsIDB4QTdCMywgMHhBN0IzLCAweDAyNjIsIDB4QTdCNCwgMHhBN0I0LCAweDAyMjAsDQorICAgIDB4QTdCNSwgMHhBN0I1LCAweDAyNjMsIDB4QTdCNiwgMHhBN0I2LCAweDE3NkYsIDB4QTdCNywgMHhBN0I3LCAweDAyMjEsDQorICAgIDB4QTdCOCwgMHhBN0I5LCAweDAyNjQsIDB4QTdCQSwgMHhBN0JBLCAweDAyMjIsIDB4QTdCQiwgMHhBN0JCLCAweDE3NzAsDQorICAgIDB4QTdCQywgMHhBN0JDLCAweDAyMjMsIDB4QTdCRCwgMHhBN0JELCAweDAyNjYsIDB4QTdCRSwgMHhBN0JFLCAweDAyNzksDQorICAgIDB4QTdCRiwgMHhBN0JGLCAweDE3NzUsIDB4QTdDMCwgMHhBN0MxLCAweDAyN0EsIDB4QTdDMiwgMHhBN0MyLCAweDAyMjQsDQorICAgIDB4QTdDMywgMHhBN0M2LCAweDAyN0MsIDB4QTdDNywgMHhBN0M3LCAweDAyMjUsIDB4QTdDOCwgMHhBN0NCLCAweDAyODIsDQorICAgIDB4QTdDQywgMHhBN0NDLCAweDE3NzYsIDB4QTdDRCwgMHhBN0NELCAweDAyODYsIDB4QTdDRSwgMHhBN0NFLCAweDAyMjYsDQorICAgIDB4QTdDRiwgMHhBN0QwLCAweDAyODgsIDB4QTdEMSwgMHhBN0QyLCAweDAyOEMsIDB4QTdEMywgMHhBN0Q1LCAweDAyMjcsDQorICAgIDB4QTdENiwgMHhBN0Q4LCAweDAyOEUsIDB4QTdEOSwgMHhBN0RBLCAweDAyMkEsIDB4QTdEQiwgMHhBN0RCLCAweDE3NzcsDQorICAgIDB4QTdEQywgMHhBN0RGLCAweDAyRDAsIDB4QTdFMCwgMHhBN0UwLCAweDAyRDUsIDB4QTdFMSwgMHhBN0UxLCAweDAyMkMsDQorICAgIDB4QTdFMiwgMHhBN0U1LCAweDAyRDYsIDB4QTdFNiwgMHhBN0U2LCAweDAyMkQsIDB4QTdFNywgMHhBN0VELCAweDAyREEsDQorICAgIDB4QTdFRSwgMHhBN0VFLCAweDE3OEEsIDB4QTdFRiwgMHhBN0YyLCAweDAyRTEsIDB4QTdGMywgMHhBN0YzLCAweDE3OEMsDQorICAgIDB4QTdGNCwgMHhBN0Y4LCAweDAyRTUsIDB4QTdGOSwgMHhBN0Y5LCAweDE3OEQsIDB4QTdGQSwgMHhBN0ZELCAweDAyRUEsDQorICAgIDB4QTdGRSwgMHhBN0ZFLCAweDAzNTYsIDB4QThBMSwgMHhBOEE2LCAweDAzNTcsIDB4QThBNywgMHhBOEE3LCAweDAzNUUsDQorICAgIDB4QThBOCwgMHhBOEE4LCAweDAzNjIsIDB4QThBOSwgMHhBOEFBLCAweDAyMkUsIDB4QThBQiwgMHhBOEIyLCAweDAzNjMsDQorICAgIDB4QThCMywgMHhBOEIzLCAweDE3QjIsIDB4QThCNCwgMHhBOEI2LCAweDAzNkIsIDB4QThCNywgMHhBOEJBLCAweDAzRjYsDQorICAgIDB4QThCQiwgMHhBOEJCLCAweDE4MTIsIDB4QThCQywgMHhBOEJFLCAweDAzRkEsIDB4QThCRiwgMHhBOEMzLCAweDAzRkUsDQorICAgIDB4QThDNCwgMHhBOENDLCAweDA0MDUsIDB4QThDRCwgMHhBOENELCAweDE4MTMsIDB4QThDRSwgMHhBOENFLCAweDE4MTgsDQorICAgIDB4QThDRiwgMHhBOEQyLCAweDA0MEYsIDB4QThEMywgMHhBOEQzLCAweDE4MTksIDB4QThENCwgMHhBOEQ5LCAweDA1MDgsDQorICAgIDB4QThEQSwgMHhBOERBLCAweDE4RTcsIDB4QThEQiwgMHhBOEUyLCAweDA1MEUsIDB4QThFMywgMHhBOEUzLCAweDAyMzAsDQorICAgIDB4QThFNCwgMHhBOEU0LCAweDA1MUIsIDB4QThFNSwgMHhBOEU3LCAweDA1MjAsIDB4QThFOCwgMHhBOEVCLCAweDA2OTYsDQorICAgIDB4QThFQywgMHhBOEVDLCAweDAyMzEsIDB4QThFRCwgMHhBOEYwLCAweDA2OUYsIDB4QThGMSwgMHhBOEZCLCAweDA4MjYsDQorICAgIDB4QThGQywgMHhBOEZFLCAweDA5RjUsIDB4QTlBMSwgMHhBOUExLCAweDFFMzMsIDB4QTlBMiwgMHhBOUEyLCAweDA5RjgsDQorICAgIDB4QTlBMywgMHhBOUEzLCAweDFFMzQsIDB4QTlBNCwgMHhBOUE1LCAweDA5RjksIDB4QTlBNiwgMHhBOUFCLCAweDBCRTEsDQorICAgIDB4QTlBQywgMHhBOUFFLCAweDBEQkIsIDB4QTlBRiwgMHhBOUFGLCAweDIzNjAsIDB4QTlCMCwgMHhBOUIwLCAweDI2MTIsDQorICAgIDB4QTlCMSwgMHhBOUIzLCAweDBGN0IsIDB4QTlCNCwgMHhBOUI1LCAweDExMDAsIDB4QTlCNiwgMHhBOUI2LCAweDEyODksDQorICAgIDB4QTlCNywgMHhBOUI4LCAweDEzQjIsIDB4QTlCOSwgMHhBOUI5LCAweDJGMEQsIDB4QzJBMSwgMHhDMkMxLCAweDAyMzIsDQorICAgIDB4QzRBMSwgMHhDNEZFLCAweDAyNTMsIDB4QzVBMSwgMHhDNUZFLCAweDAyQjEsIDB4QzZBMSwgMHhDNkZFLCAweDAzMEYsDQorICAgIDB4QzdBMSwgMHhDN0ZFLCAweDAzNkQsIDB4QzhBMSwgMHhDOEZFLCAweDAzQ0IsIDB4QzlBMSwgMHhDOUZFLCAweDA0MjksDQorICAgIDB4Q0FBMSwgMHhDQUZFLCAweDA0ODcsIDB4Q0JBMSwgMHhDQkZFLCAweDA0RTUsIDB4Q0NBMSwgMHhDQ0ZFLCAweDA1NDMsDQorICAgIDB4Q0RBMSwgMHhDREZFLCAweDA1QTEsIDB4Q0VBMSwgMHhDRUZFLCAweDA1RkYsIDB4Q0ZBMSwgMHhDRkZFLCAweDA2NUQsDQorICAgIDB4RDBBMSwgMHhEMEZFLCAweDA2QkIsIDB4RDFBMSwgMHhEMUZFLCAweDA3MTksIDB4RDJBMSwgMHhEMkZFLCAweDA3NzcsDQorICAgIDB4RDNBMSwgMHhEM0ZFLCAweDA3RDUsIDB4RDRBMSwgMHhENEZFLCAweDA4MzMsIDB4RDVBMSwgMHhENUZFLCAweDA4OTEsDQorICAgIDB4RDZBMSwgMHhENkZFLCAweDA4RUYsIDB4RDdBMSwgMHhEN0ZFLCAweDA5NEQsIDB4RDhBMSwgMHhEOEZFLCAweDA5QUIsDQorICAgIDB4RDlBMSwgMHhEOUZFLCAweDBBMDksIDB4REFBMSwgMHhEQUZFLCAweDBBNjcsIDB4REJBMSwgMHhEQkZFLCAweDBBQzUsDQorICAgIDB4RENBMSwgMHhEQ0ZFLCAweDBCMjMsIDB4RERBMSwgMHhEREZFLCAweDBCODEsIDB4REVBMSwgMHhERUZFLCAweDBCREYsDQorICAgIDB4REZBMSwgMHhERkZFLCAweDBDM0QsIDB4RTBBMSwgMHhFMEZFLCAweDBDOUIsIDB4RTFBMSwgMHhFMUZFLCAweDBDRjksDQorICAgIDB4RTJBMSwgMHhFMkZFLCAweDBENTcsIDB4RTNBMSwgMHhFM0ZFLCAweDBEQjUsIDB4RTRBMSwgMHhFNEZFLCAweDBFMTMsDQorICAgIDB4RTVBMSwgMHhFNUZFLCAweDBFNzEsIDB4RTZBMSwgMHhFNkZFLCAweDBFQ0YsIDB4RTdBMSwgMHhFN0ZFLCAweDBGMkQsDQorICAgIDB4RThBMSwgMHhFOEZFLCAweDBGOEIsIDB4RTlBMSwgMHhFOUZFLCAweDBGRTksIDB4RUFBMSwgMHhFQUZFLCAweDEwNDcsDQorICAgIDB4RUJBMSwgMHhFQkZFLCAweDEwQTUsIDB4RUNBMSwgMHhFQ0ZFLCAweDExMDMsIDB4RURBMSwgMHhFREZFLCAweDExNjEsDQorICAgIDB4RUVBMSwgMHhFRUZFLCAweDExQkYsIDB4RUZBMSwgMHhFRkZFLCAweDEyMUQsIDB4RjBBMSwgMHhGMEZFLCAweDEyN0IsDQorICAgIDB4RjFBMSwgMHhGMUZFLCAweDEyRDksIDB4RjJBMSwgMHhGMkZFLCAweDEzMzcsIDB4RjNBMSwgMHhGM0ZFLCAweDEzOTUsDQorICAgIDB4RjRBMSwgMHhGNEZFLCAweDEzRjMsIDB4RjVBMSwgMHhGNUZFLCAweDE0NTEsIDB4RjZBMSwgMHhGNkZFLCAweDE0QUYsDQorICAgIDB4RjdBMSwgMHhGN0ZFLCAweDE1MEQsIDB4RjhBMSwgMHhGOEZFLCAweDE1NkIsIDB4RjlBMSwgMHhGOUZFLCAweDE1QzksDQorICAgIDB4RkFBMSwgMHhGQUZFLCAweDE2MjcsIDB4RkJBMSwgMHhGQkZFLCAweDE2ODUsIDB4RkNBMSwgMHhGQ0ZFLCAweDE2RTMsDQorICAgIDB4RkRBMSwgMHhGRENCLCAweDE3NDEsDQorfTsNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfQ05TX0VVQ19IXzBfRFdvcmRbMjM4ICogNF0gPSB7DQorICAgIDB4OEVBMSwgMHhBMUExLCAweEExRkUsIDB4MDA2MywgMHg4RUExLCAweEEyQTEsIDB4QTJGRSwgMHgwMEMxLA0KKyAgICAweDhFQTEsIDB4QTNBMSwgMHhBM0NFLCAweDAxMUYsIDB4OEVBMSwgMHhBNEExLCAweEE0RkUsIDB4MDE0RCwNCisgICAgMHg4RUExLCAweEE1QTEsIDB4QTVFQywgMHgwMUFCLCAweDhFQTEsIDB4QTVFRSwgMHhBNUYwLCAweDAxRjcsDQorICAgIDB4OEVBMSwgMHhBNkExLCAweEE2QkUsIDB4MDFGQSwgMHg4RUExLCAweEE3QTEsIDB4QTdBMSwgMHgwMjUzLA0KKyAgICAweDhFQTEsIDB4QTdBMiwgMHhBN0E0LCAweDAyMTgsIDB4OEVBMSwgMHhBN0E1LCAweEE3QTUsIDB4MDI1NCwNCisgICAgMHg4RUExLCAweEE3QTYsIDB4QTdBNiwgMHgwMjFCLCAweDhFQTEsIDB4QTdBNywgMHhBN0E3LCAweDAyNUEsDQorICAgIDB4OEVBMSwgMHhBN0E4LCAweEE3QTgsIDB4MDIxQywgMHg4RUExLCAweEE3QTksIDB4QTdBQywgMHgwMjVCLA0KKyAgICAweDhFQTEsIDB4QTdBRCwgMHhBN0FGLCAweDAyMUQsIDB4OEVBMSwgMHhBN0IwLCAweEE3QjAsIDB4MDI1RiwNCisgICAgMHg4RUExLCAweEE3QjEsIDB4QTdCMSwgMHgxNzZFLCAweDhFQTEsIDB4QTdCMiwgMHhBN0IyLCAweDAyNjAsDQorICAgIDB4OEVBMSwgMHhBN0IzLCAweEE3QjMsIDB4MDI2MiwgMHg4RUExLCAweEE3QjQsIDB4QTdCNCwgMHgwMjIwLA0KKyAgICAweDhFQTEsIDB4QTdCNSwgMHhBN0I1LCAweDAyNjMsIDB4OEVBMSwgMHhBN0I2LCAweEE3QjYsIDB4MTc2RiwNCisgICAgMHg4RUExLCAweEE3QjcsIDB4QTdCNywgMHgwMjIxLCAweDhFQTEsIDB4QTdCOCwgMHhBN0I5LCAweDAyNjQsDQorICAgIDB4OEVBMSwgMHhBN0JBLCAweEE3QkEsIDB4MDIyMiwgMHg4RUExLCAweEE3QkIsIDB4QTdCQiwgMHgxNzcwLA0KKyAgICAweDhFQTEsIDB4QTdCQywgMHhBN0JDLCAweDAyMjMsIDB4OEVBMSwgMHhBN0JELCAweEE3QkQsIDB4MDI2NiwNCisgICAgMHg4RUExLCAweEE3QkUsIDB4QTdCRSwgMHgwMjc5LCAweDhFQTEsIDB4QTdCRiwgMHhBN0JGLCAweDE3NzUsDQorICAgIDB4OEVBMSwgMHhBN0MwLCAweEE3QzEsIDB4MDI3QSwgMHg4RUExLCAweEE3QzIsIDB4QTdDMiwgMHgwMjI0LA0KKyAgICAweDhFQTEsIDB4QTdDMywgMHhBN0M2LCAweDAyN0MsIDB4OEVBMSwgMHhBN0M3LCAweEE3QzcsIDB4MDIyNSwNCisgICAgMHg4RUExLCAweEE3QzgsIDB4QTdDQiwgMHgwMjgyLCAweDhFQTEsIDB4QTdDQywgMHhBN0NDLCAweDE3NzYsDQorICAgIDB4OEVBMSwgMHhBN0NELCAweEE3Q0QsIDB4MDI4NiwgMHg4RUExLCAweEE3Q0UsIDB4QTdDRSwgMHgwMjI2LA0KKyAgICAweDhFQTEsIDB4QTdDRiwgMHhBN0QwLCAweDAyODgsIDB4OEVBMSwgMHhBN0QxLCAweEE3RDIsIDB4MDI4QywNCisgICAgMHg4RUExLCAweEE3RDMsIDB4QTdENSwgMHgwMjI3LCAweDhFQTEsIDB4QTdENiwgMHhBN0Q4LCAweDAyOEUsDQorICAgIDB4OEVBMSwgMHhBN0Q5LCAweEE3REEsIDB4MDIyQSwgMHg4RUExLCAweEE3REIsIDB4QTdEQiwgMHgxNzc3LA0KKyAgICAweDhFQTEsIDB4QTdEQywgMHhBN0RGLCAweDAyRDAsIDB4OEVBMSwgMHhBN0UwLCAweEE3RTAsIDB4MDJENSwNCisgICAgMHg4RUExLCAweEE3RTEsIDB4QTdFMSwgMHgwMjJDLCAweDhFQTEsIDB4QTdFMiwgMHhBN0U1LCAweDAyRDYsDQorICAgIDB4OEVBMSwgMHhBN0U2LCAweEE3RTYsIDB4MDIyRCwgMHg4RUExLCAweEE3RTcsIDB4QTdFRCwgMHgwMkRBLA0KKyAgICAweDhFQTEsIDB4QTdFRSwgMHhBN0VFLCAweDE3OEEsIDB4OEVBMSwgMHhBN0VGLCAweEE3RjIsIDB4MDJFMSwNCisgICAgMHg4RUExLCAweEE3RjMsIDB4QTdGMywgMHgxNzhDLCAweDhFQTEsIDB4QTdGNCwgMHhBN0Y4LCAweDAyRTUsDQorICAgIDB4OEVBMSwgMHhBN0Y5LCAweEE3RjksIDB4MTc4RCwgMHg4RUExLCAweEE3RkEsIDB4QTdGRCwgMHgwMkVBLA0KKyAgICAweDhFQTEsIDB4QTdGRSwgMHhBN0ZFLCAweDAzNTYsIDB4OEVBMSwgMHhBOEExLCAweEE4QTYsIDB4MDM1NywNCisgICAgMHg4RUExLCAweEE4QTcsIDB4QThBNywgMHgwMzVFLCAweDhFQTEsIDB4QThBOCwgMHhBOEE4LCAweDAzNjIsDQorICAgIDB4OEVBMSwgMHhBOEE5LCAweEE4QUEsIDB4MDIyRSwgMHg4RUExLCAweEE4QUIsIDB4QThCMiwgMHgwMzYzLA0KKyAgICAweDhFQTEsIDB4QThCMywgMHhBOEIzLCAweDE3QjIsIDB4OEVBMSwgMHhBOEI0LCAweEE4QjYsIDB4MDM2QiwNCisgICAgMHg4RUExLCAweEE4QjcsIDB4QThCQSwgMHgwM0Y2LCAweDhFQTEsIDB4QThCQiwgMHhBOEJCLCAweDE4MTIsDQorICAgIDB4OEVBMSwgMHhBOEJDLCAweEE4QkUsIDB4MDNGQSwgMHg4RUExLCAweEE4QkYsIDB4QThDMywgMHgwM0ZFLA0KKyAgICAweDhFQTEsIDB4QThDNCwgMHhBOENDLCAweDA0MDUsIDB4OEVBMSwgMHhBOENELCAweEE4Q0QsIDB4MTgxMywNCisgICAgMHg4RUExLCAweEE4Q0UsIDB4QThDRSwgMHgxODE4LCAweDhFQTEsIDB4QThDRiwgMHhBOEQyLCAweDA0MEYsDQorICAgIDB4OEVBMSwgMHhBOEQzLCAweEE4RDMsIDB4MTgxOSwgMHg4RUExLCAweEE4RDQsIDB4QThEOSwgMHgwNTA4LA0KKyAgICAweDhFQTEsIDB4QThEQSwgMHhBOERBLCAweDE4RTcsIDB4OEVBMSwgMHhBOERCLCAweEE4RTIsIDB4MDUwRSwNCisgICAgMHg4RUExLCAweEE4RTMsIDB4QThFMywgMHgwMjMwLCAweDhFQTEsIDB4QThFNCwgMHhBOEU0LCAweDA1MUIsDQorICAgIDB4OEVBMSwgMHhBOEU1LCAweEE4RTcsIDB4MDUyMCwgMHg4RUExLCAweEE4RTgsIDB4QThFQiwgMHgwNjk2LA0KKyAgICAweDhFQTEsIDB4QThFQywgMHhBOEVDLCAweDAyMzEsIDB4OEVBMSwgMHhBOEVELCAweEE4RjAsIDB4MDY5RiwNCisgICAgMHg4RUExLCAweEE4RjEsIDB4QThGQiwgMHgwODI2LCAweDhFQTEsIDB4QThGQywgMHhBOEZFLCAweDA5RjUsDQorICAgIDB4OEVBMSwgMHhBOUExLCAweEE5QTEsIDB4MUUzMywgMHg4RUExLCAweEE5QTIsIDB4QTlBMiwgMHgwOUY4LA0KKyAgICAweDhFQTEsIDB4QTlBMywgMHhBOUEzLCAweDFFMzQsIDB4OEVBMSwgMHhBOUE0LCAweEE5QTUsIDB4MDlGOSwNCisgICAgMHg4RUExLCAweEE5QTYsIDB4QTlBQiwgMHgwQkUxLCAweDhFQTEsIDB4QTlBQywgMHhBOUFFLCAweDBEQkIsDQorICAgIDB4OEVBMSwgMHhBOUFGLCAweEE5QUYsIDB4MjM2MCwgMHg4RUExLCAweEE5QjAsIDB4QTlCMCwgMHgyNjEyLA0KKyAgICAweDhFQTEsIDB4QTlCMSwgMHhBOUIzLCAweDBGN0IsIDB4OEVBMSwgMHhBOUI0LCAweEE5QjUsIDB4MTEwMCwNCisgICAgMHg4RUExLCAweEE5QjYsIDB4QTlCNiwgMHgxMjg5LCAweDhFQTEsIDB4QTlCNywgMHhBOUI4LCAweDEzQjIsDQorICAgIDB4OEVBMSwgMHhBOUI5LCAweEE5QjksIDB4MkYwRCwgMHg4RUExLCAweEMyQTEsIDB4QzJDMSwgMHgwMjMyLA0KKyAgICAweDhFQTEsIDB4QzRBMSwgMHhDNEZFLCAweDAyNTMsIDB4OEVBMSwgMHhDNUExLCAweEM1RkUsIDB4MDJCMSwNCisgICAgMHg4RUExLCAweEM2QTEsIDB4QzZGRSwgMHgwMzBGLCAweDhFQTEsIDB4QzdBMSwgMHhDN0ZFLCAweDAzNkQsDQorICAgIDB4OEVBMSwgMHhDOEExLCAweEM4RkUsIDB4MDNDQiwgMHg4RUExLCAweEM5QTEsIDB4QzlGRSwgMHgwNDI5LA0KKyAgICAweDhFQTEsIDB4Q0FBMSwgMHhDQUZFLCAweDA0ODcsIDB4OEVBMSwgMHhDQkExLCAweENCRkUsIDB4MDRFNSwNCisgICAgMHg4RUExLCAweENDQTEsIDB4Q0NGRSwgMHgwNTQzLCAweDhFQTEsIDB4Q0RBMSwgMHhDREZFLCAweDA1QTEsDQorICAgIDB4OEVBMSwgMHhDRUExLCAweENFRkUsIDB4MDVGRiwgMHg4RUExLCAweENGQTEsIDB4Q0ZGRSwgMHgwNjVELA0KKyAgICAweDhFQTEsIDB4RDBBMSwgMHhEMEZFLCAweDA2QkIsIDB4OEVBMSwgMHhEMUExLCAweEQxRkUsIDB4MDcxOSwNCisgICAgMHg4RUExLCAweEQyQTEsIDB4RDJGRSwgMHgwNzc3LCAweDhFQTEsIDB4RDNBMSwgMHhEM0ZFLCAweDA3RDUsDQorICAgIDB4OEVBMSwgMHhENEExLCAweEQ0RkUsIDB4MDgzMywgMHg4RUExLCAweEQ1QTEsIDB4RDVGRSwgMHgwODkxLA0KKyAgICAweDhFQTEsIDB4RDZBMSwgMHhENkZFLCAweDA4RUYsIDB4OEVBMSwgMHhEN0ExLCAweEQ3RkUsIDB4MDk0RCwNCisgICAgMHg4RUExLCAweEQ4QTEsIDB4RDhGRSwgMHgwOUFCLCAweDhFQTEsIDB4RDlBMSwgMHhEOUZFLCAweDBBMDksDQorICAgIDB4OEVBMSwgMHhEQUExLCAweERBRkUsIDB4MEE2NywgMHg4RUExLCAweERCQTEsIDB4REJGRSwgMHgwQUM1LA0KKyAgICAweDhFQTEsIDB4RENBMSwgMHhEQ0ZFLCAweDBCMjMsIDB4OEVBMSwgMHhEREExLCAweERERkUsIDB4MEI4MSwNCisgICAgMHg4RUExLCAweERFQTEsIDB4REVGRSwgMHgwQkRGLCAweDhFQTEsIDB4REZBMSwgMHhERkZFLCAweDBDM0QsDQorICAgIDB4OEVBMSwgMHhFMEExLCAweEUwRkUsIDB4MEM5QiwgMHg4RUExLCAweEUxQTEsIDB4RTFGRSwgMHgwQ0Y5LA0KKyAgICAweDhFQTEsIDB4RTJBMSwgMHhFMkZFLCAweDBENTcsIDB4OEVBMSwgMHhFM0ExLCAweEUzRkUsIDB4MERCNSwNCisgICAgMHg4RUExLCAweEU0QTEsIDB4RTRGRSwgMHgwRTEzLCAweDhFQTEsIDB4RTVBMSwgMHhFNUZFLCAweDBFNzEsDQorICAgIDB4OEVBMSwgMHhFNkExLCAweEU2RkUsIDB4MEVDRiwgMHg4RUExLCAweEU3QTEsIDB4RTdGRSwgMHgwRjJELA0KKyAgICAweDhFQTEsIDB4RThBMSwgMHhFOEZFLCAweDBGOEIsIDB4OEVBMSwgMHhFOUExLCAweEU5RkUsIDB4MEZFOSwNCisgICAgMHg4RUExLCAweEVBQTEsIDB4RUFGRSwgMHgxMDQ3LCAweDhFQTEsIDB4RUJBMSwgMHhFQkZFLCAweDEwQTUsDQorICAgIDB4OEVBMSwgMHhFQ0ExLCAweEVDRkUsIDB4MTEwMywgMHg4RUExLCAweEVEQTEsIDB4RURGRSwgMHgxMTYxLA0KKyAgICAweDhFQTEsIDB4RUVBMSwgMHhFRUZFLCAweDExQkYsIDB4OEVBMSwgMHhFRkExLCAweEVGRkUsIDB4MTIxRCwNCisgICAgMHg4RUExLCAweEYwQTEsIDB4RjBGRSwgMHgxMjdCLCAweDhFQTEsIDB4RjFBMSwgMHhGMUZFLCAweDEyRDksDQorICAgIDB4OEVBMSwgMHhGMkExLCAweEYyRkUsIDB4MTMzNywgMHg4RUExLCAweEYzQTEsIDB4RjNGRSwgMHgxMzk1LA0KKyAgICAweDhFQTEsIDB4RjRBMSwgMHhGNEZFLCAweDEzRjMsIDB4OEVBMSwgMHhGNUExLCAweEY1RkUsIDB4MTQ1MSwNCisgICAgMHg4RUExLCAweEY2QTEsIDB4RjZGRSwgMHgxNEFGLCAweDhFQTEsIDB4RjdBMSwgMHhGN0ZFLCAweDE1MEQsDQorICAgIDB4OEVBMSwgMHhGOEExLCAweEY4RkUsIDB4MTU2QiwgMHg4RUExLCAweEY5QTEsIDB4RjlGRSwgMHgxNUM5LA0KKyAgICAweDhFQTEsIDB4RkFBMSwgMHhGQUZFLCAweDE2MjcsIDB4OEVBMSwgMHhGQkExLCAweEZCRkUsIDB4MTY4NSwNCisgICAgMHg4RUExLCAweEZDQTEsIDB4RkNGRSwgMHgxNkUzLCAweDhFQTEsIDB4RkRBMSwgMHhGRENCLCAweDE3NDEsDQorICAgIDB4OEVBMiwgMHhBMUExLCAweEExRkUsIDB4MTc2QywgMHg4RUEyLCAweEEyQTEsIDB4QTJGRSwgMHgxN0NBLA0KKyAgICAweDhFQTIsIDB4QTNBMSwgMHhBM0ZFLCAweDE4MjgsIDB4OEVBMiwgMHhBNEExLCAweEE0RkUsIDB4MTg4NiwNCisgICAgMHg4RUEyLCAweEE1QTEsIDB4QTVGRSwgMHgxOEU0LCAweDhFQTIsIDB4QTZBMSwgMHhBNkZFLCAweDE5NDIsDQorICAgIDB4OEVBMiwgMHhBN0ExLCAweEE3RkUsIDB4MTlBMCwgMHg4RUEyLCAweEE4QTEsIDB4QThGRSwgMHgxOUZFLA0KKyAgICAweDhFQTIsIDB4QTlBMSwgMHhBOUZFLCAweDFBNUMsIDB4OEVBMiwgMHhBQUExLCAweEFBRkUsIDB4MUFCQSwNCisgICAgMHg4RUEyLCAweEFCQTEsIDB4QUJGRSwgMHgxQjE4LCAweDhFQTIsIDB4QUNBMSwgMHhBQ0ZFLCAweDFCNzYsDQorICAgIDB4OEVBMiwgMHhBREExLCAweEFERkUsIDB4MUJENCwgMHg4RUEyLCAweEFFQTEsIDB4QUVGRSwgMHgxQzMyLA0KKyAgICAweDhFQTIsIDB4QUZBMSwgMHhBRkZFLCAweDFDOTAsIDB4OEVBMiwgMHhCMEExLCAweEIwRkUsIDB4MUNFRSwNCisgICAgMHg4RUEyLCAweEIxQTEsIDB4QjFGRSwgMHgxRDRDLCAweDhFQTIsIDB4QjJBMSwgMHhCMkZFLCAweDFEQUEsDQorICAgIDB4OEVBMiwgMHhCM0ExLCAweEIzRkUsIDB4MUUwOCwgMHg4RUEyLCAweEI0QTEsIDB4QjRGRSwgMHgxRTY2LA0KKyAgICAweDhFQTIsIDB4QjVBMSwgMHhCNUZFLCAweDFFQzQsIDB4OEVBMiwgMHhCNkExLCAweEI2RkUsIDB4MUYyMiwNCisgICAgMHg4RUEyLCAweEI3QTEsIDB4QjdGRSwgMHgxRjgwLCAweDhFQTIsIDB4QjhBMSwgMHhCOEZFLCAweDFGREUsDQorICAgIDB4OEVBMiwgMHhCOUExLCAweEI5RkUsIDB4MjAzQywgMHg4RUEyLCAweEJBQTEsIDB4QkFGRSwgMHgyMDlBLA0KKyAgICAweDhFQTIsIDB4QkJBMSwgMHhCQkZFLCAweDIwRjgsIDB4OEVBMiwgMHhCQ0ExLCAweEJDRkUsIDB4MjE1NiwNCisgICAgMHg4RUEyLCAweEJEQTEsIDB4QkRGRSwgMHgyMUI0LCAweDhFQTIsIDB4QkVBMSwgMHhCRUZFLCAweDIyMTIsDQorICAgIDB4OEVBMiwgMHhCRkExLCAweEJGRkUsIDB4MjI3MCwgMHg4RUEyLCAweEMwQTEsIDB4QzBGRSwgMHgyMkNFLA0KKyAgICAweDhFQTIsIDB4QzFBMSwgMHhDMUZFLCAweDIzMkMsIDB4OEVBMiwgMHhDMkExLCAweEMyRkUsIDB4MjM4QSwNCisgICAgMHg4RUEyLCAweEMzQTEsIDB4QzNGRSwgMHgyM0U4LCAweDhFQTIsIDB4QzRBMSwgMHhDNEZFLCAweDI0NDYsDQorICAgIDB4OEVBMiwgMHhDNUExLCAweEM1RkUsIDB4MjRBNCwgMHg4RUEyLCAweEM2QTEsIDB4QzZGRSwgMHgyNTAyLA0KKyAgICAweDhFQTIsIDB4QzdBMSwgMHhDN0ZFLCAweDI1NjAsIDB4OEVBMiwgMHhDOEExLCAweEM4RkUsIDB4MjVCRSwNCisgICAgMHg4RUEyLCAweEM5QTEsIDB4QzlGRSwgMHgyNjFDLCAweDhFQTIsIDB4Q0FBMSwgMHhDQUZFLCAweDI2N0EsDQorICAgIDB4OEVBMiwgMHhDQkExLCAweENCRkUsIDB4MjZEOCwgMHg4RUEyLCAweENDQTEsIDB4Q0NGRSwgMHgyNzM2LA0KKyAgICAweDhFQTIsIDB4Q0RBMSwgMHhDREZFLCAweDI3OTQsIDB4OEVBMiwgMHhDRUExLCAweENFRkUsIDB4MjdGMiwNCisgICAgMHg4RUEyLCAweENGQTEsIDB4Q0ZGRSwgMHgyODUwLCAweDhFQTIsIDB4RDBBMSwgMHhEMEZFLCAweDI4QUUsDQorICAgIDB4OEVBMiwgMHhEMUExLCAweEQxRkUsIDB4MjkwQywgMHg4RUEyLCAweEQyQTEsIDB4RDJGRSwgMHgyOTZBLA0KKyAgICAweDhFQTIsIDB4RDNBMSwgMHhEM0ZFLCAweDI5QzgsIDB4OEVBMiwgMHhENEExLCAweEQ0RkUsIDB4MkEyNiwNCisgICAgMHg4RUEyLCAweEQ1QTEsIDB4RDVGRSwgMHgyQTg0LCAweDhFQTIsIDB4RDZBMSwgMHhENkZFLCAweDJBRTIsDQorICAgIDB4OEVBMiwgMHhEN0ExLCAweEQ3RkUsIDB4MkI0MCwgMHg4RUEyLCAweEQ4QTEsIDB4RDhGRSwgMHgyQjlFLA0KKyAgICAweDhFQTIsIDB4RDlBMSwgMHhEOUZFLCAweDJCRkMsIDB4OEVBMiwgMHhEQUExLCAweERBRkUsIDB4MkM1QSwNCisgICAgMHg4RUEyLCAweERCQTEsIDB4REJGRSwgMHgyQ0I4LCAweDhFQTIsIDB4RENBMSwgMHhEQ0ZFLCAweDJEMTYsDQorICAgIDB4OEVBMiwgMHhEREExLCAweERERkUsIDB4MkQ3NCwgMHg4RUEyLCAweERFQTEsIDB4REVGRSwgMHgyREQyLA0KKyAgICAweDhFQTIsIDB4REZBMSwgMHhERkZFLCAweDJFMzAsIDB4OEVBMiwgMHhFMEExLCAweEUwRkUsIDB4MkU4RSwNCisgICAgMHg4RUEyLCAweEUxQTEsIDB4RTFGRSwgMHgyRUVDLCAweDhFQTIsIDB4RTJBMSwgMHhFMkZFLCAweDJGNEEsDQorICAgIDB4OEVBMiwgMHhFM0ExLCAweEUzRkUsIDB4MkZBOCwgMHg4RUEyLCAweEU0QTEsIDB4RTRGRSwgMHgzMDA2LA0KKyAgICAweDhFQTIsIDB4RTVBMSwgMHhFNUZFLCAweDMwNjQsIDB4OEVBMiwgMHhFNkExLCAweEU2RkUsIDB4MzBDMiwNCisgICAgMHg4RUEyLCAweEU3QTEsIDB4RTdGRSwgMHgzMTIwLCAweDhFQTIsIDB4RThBMSwgMHhFOEZFLCAweDMxN0UsDQorICAgIDB4OEVBMiwgMHhFOUExLCAweEU5RkUsIDB4MzFEQywgMHg4RUEyLCAweEVBQTEsIDB4RUFGRSwgMHgzMjNBLA0KKyAgICAweDhFQTIsIDB4RUJBMSwgMHhFQkZFLCAweDMyOTgsIDB4OEVBMiwgMHhFQ0ExLCAweEVDRkUsIDB4MzJGNiwNCisgICAgMHg4RUEyLCAweEVEQTEsIDB4RURGRSwgMHgzMzU0LCAweDhFQTIsIDB4RUVBMSwgMHhFRUZFLCAweDMzQjIsDQorICAgIDB4OEVBMiwgMHhFRkExLCAweEVGRkUsIDB4MzQxMCwgMHg4RUEyLCAweEYwQTEsIDB4RjBGRSwgMHgzNDZFLA0KKyAgICAweDhFQTIsIDB4RjFBMSwgMHhGMUZFLCAweDM0Q0MsIDB4OEVBMiwgMHhGMkExLCAweEYyQzQsIDB4MzUyQSwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0NOUy1FVUMtVl8wLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0NOUy1FVUMtVl8wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzM3Y2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvQ05TLUVVQy1WXzAuY3BwCkBAIC0wLDAgKzEsMjAxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfQ05TX0VVQ19WXzBbMTgwICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDM1NTAsIDB4QTFBMSwgMHhBMUFCLCAweDAwNjMsIDB4QTFBQywgMHhBMUFDLCAweDM1NEUsDQorICAgIDB4QTFBRCwgMHhBMUJBLCAweDAwNkYsIDB4QTFCQiwgMHhBMUJCLCAweDAwN0MsIDB4QTFCQywgMHhBMUJDLCAweDAwN0UsDQorICAgIDB4QTFCRCwgMHhBMUJELCAweDAwN0UsIDB4QTFCRSwgMHhBMUJGLCAweDAwODIsIDB4QTFDMCwgMHhBMUMxLCAweDAwODIsDQorICAgIDB4QTFDMiwgMHhBMUMzLCAweDAwODYsIDB4QTFDNCwgMHhBMUM1LCAweDAwODYsIDB4QTFDNiwgMHhBMUM3LCAweDAwOEEsDQorICAgIDB4QTFDOCwgMHhBMUM5LCAweDAwOEEsIDB4QTFDQSwgMHhBMUNCLCAweDAwOEUsIDB4QTFDQywgMHhBMUNELCAweDAwOEUsDQorICAgIDB4QTFDRSwgMHhBMUNGLCAweDAwOTIsIDB4QTFEMCwgMHhBMUQxLCAweDAwOTIsIDB4QTFEMiwgMHhBMUQzLCAweDAwOTYsDQorICAgIDB4QTFENCwgMHhBMUQ1LCAweDAwOTYsIDB4QTFENiwgMHhBMUQ3LCAweDAwOUEsIDB4QTFEOCwgMHhBMUQ5LCAweDAwOUEsDQorICAgIDB4QTFEQSwgMHhBMURCLCAweDAwOUUsIDB4QTFEQywgMHhBMUZFLCAweDAwOUUsIDB4QTJBMSwgMHhBMkMzLCAweDAwQzEsDQorICAgIDB4QTJDNCwgMHhBMkM0LCAweDM1NEYsIDB4QTJDNSwgMHhBMkZFLCAweDAwRTUsIDB4QTNBMSwgMHhBM0NFLCAweDAxMUYsDQorICAgIDB4QTRBMSwgMHhBNEZFLCAweDAxNEQsIDB4QTVBMSwgMHhBNUVDLCAweDAxQUIsIDB4QTVFRSwgMHhBNUYwLCAweDAxRjcsDQorICAgIDB4QTZBMSwgMHhBNkJFLCAweDAxRkEsIDB4QTdBMSwgMHhBN0ExLCAweDAyNTMsIDB4QTdBMiwgMHhBN0E0LCAweDAyMTgsDQorICAgIDB4QTdBNSwgMHhBN0E1LCAweDAyNTQsIDB4QTdBNiwgMHhBN0E2LCAweDAyMUIsIDB4QTdBNywgMHhBN0E3LCAweDAyNUEsDQorICAgIDB4QTdBOCwgMHhBN0E4LCAweDAyMUMsIDB4QTdBOSwgMHhBN0FDLCAweDAyNUIsIDB4QTdBRCwgMHhBN0FGLCAweDAyMUQsDQorICAgIDB4QTdCMCwgMHhBN0IwLCAweDAyNUYsIDB4QTdCMSwgMHhBN0IxLCAweDE3NkUsIDB4QTdCMiwgMHhBN0IyLCAweDAyNjAsDQorICAgIDB4QTdCMywgMHhBN0IzLCAweDAyNjIsIDB4QTdCNCwgMHhBN0I0LCAweDAyMjAsIDB4QTdCNSwgMHhBN0I1LCAweDAyNjMsDQorICAgIDB4QTdCNiwgMHhBN0I2LCAweDE3NkYsIDB4QTdCNywgMHhBN0I3LCAweDAyMjEsIDB4QTdCOCwgMHhBN0I5LCAweDAyNjQsDQorICAgIDB4QTdCQSwgMHhBN0JBLCAweDAyMjIsIDB4QTdCQiwgMHhBN0JCLCAweDE3NzAsIDB4QTdCQywgMHhBN0JDLCAweDAyMjMsDQorICAgIDB4QTdCRCwgMHhBN0JELCAweDAyNjYsIDB4QTdCRSwgMHhBN0JFLCAweDAyNzksIDB4QTdCRiwgMHhBN0JGLCAweDE3NzUsDQorICAgIDB4QTdDMCwgMHhBN0MxLCAweDAyN0EsIDB4QTdDMiwgMHhBN0MyLCAweDAyMjQsIDB4QTdDMywgMHhBN0M2LCAweDAyN0MsDQorICAgIDB4QTdDNywgMHhBN0M3LCAweDAyMjUsIDB4QTdDOCwgMHhBN0NCLCAweDAyODIsIDB4QTdDQywgMHhBN0NDLCAweDE3NzYsDQorICAgIDB4QTdDRCwgMHhBN0NELCAweDAyODYsIDB4QTdDRSwgMHhBN0NFLCAweDAyMjYsIDB4QTdDRiwgMHhBN0QwLCAweDAyODgsDQorICAgIDB4QTdEMSwgMHhBN0QyLCAweDAyOEMsIDB4QTdEMywgMHhBN0Q1LCAweDAyMjcsIDB4QTdENiwgMHhBN0Q4LCAweDAyOEUsDQorICAgIDB4QTdEOSwgMHhBN0RBLCAweDAyMkEsIDB4QTdEQiwgMHhBN0RCLCAweDE3NzcsIDB4QTdEQywgMHhBN0RGLCAweDAyRDAsDQorICAgIDB4QTdFMCwgMHhBN0UwLCAweDAyRDUsIDB4QTdFMSwgMHhBN0UxLCAweDAyMkMsIDB4QTdFMiwgMHhBN0U1LCAweDAyRDYsDQorICAgIDB4QTdFNiwgMHhBN0U2LCAweDAyMkQsIDB4QTdFNywgMHhBN0VELCAweDAyREEsIDB4QTdFRSwgMHhBN0VFLCAweDE3OEEsDQorICAgIDB4QTdFRiwgMHhBN0YyLCAweDAyRTEsIDB4QTdGMywgMHhBN0YzLCAweDE3OEMsIDB4QTdGNCwgMHhBN0Y4LCAweDAyRTUsDQorICAgIDB4QTdGOSwgMHhBN0Y5LCAweDE3OEQsIDB4QTdGQSwgMHhBN0ZELCAweDAyRUEsIDB4QTdGRSwgMHhBN0ZFLCAweDAzNTYsDQorICAgIDB4QThBMSwgMHhBOEE2LCAweDAzNTcsIDB4QThBNywgMHhBOEE3LCAweDAzNUUsIDB4QThBOCwgMHhBOEE4LCAweDAzNjIsDQorICAgIDB4QThBOSwgMHhBOEFBLCAweDAyMkUsIDB4QThBQiwgMHhBOEIyLCAweDAzNjMsIDB4QThCMywgMHhBOEIzLCAweDE3QjIsDQorICAgIDB4QThCNCwgMHhBOEI2LCAweDAzNkIsIDB4QThCNywgMHhBOEJBLCAweDAzRjYsIDB4QThCQiwgMHhBOEJCLCAweDE4MTIsDQorICAgIDB4QThCQywgMHhBOEJFLCAweDAzRkEsIDB4QThCRiwgMHhBOEMzLCAweDAzRkUsIDB4QThDNCwgMHhBOENDLCAweDA0MDUsDQorICAgIDB4QThDRCwgMHhBOENELCAweDE4MTMsIDB4QThDRSwgMHhBOENFLCAweDE4MTgsIDB4QThDRiwgMHhBOEQyLCAweDA0MEYsDQorICAgIDB4QThEMywgMHhBOEQzLCAweDE4MTksIDB4QThENCwgMHhBOEQ5LCAweDA1MDgsIDB4QThEQSwgMHhBOERBLCAweDE4RTcsDQorICAgIDB4QThEQiwgMHhBOEUyLCAweDA1MEUsIDB4QThFMywgMHhBOEUzLCAweDAyMzAsIDB4QThFNCwgMHhBOEU0LCAweDA1MUIsDQorICAgIDB4QThFNSwgMHhBOEU3LCAweDA1MjAsIDB4QThFOCwgMHhBOEVCLCAweDA2OTYsIDB4QThFQywgMHhBOEVDLCAweDAyMzEsDQorICAgIDB4QThFRCwgMHhBOEYwLCAweDA2OUYsIDB4QThGMSwgMHhBOEZCLCAweDA4MjYsIDB4QThGQywgMHhBOEZFLCAweDA5RjUsDQorICAgIDB4QTlBMSwgMHhBOUExLCAweDFFMzMsIDB4QTlBMiwgMHhBOUEyLCAweDA5RjgsIDB4QTlBMywgMHhBOUEzLCAweDFFMzQsDQorICAgIDB4QTlBNCwgMHhBOUE1LCAweDA5RjksIDB4QTlBNiwgMHhBOUFCLCAweDBCRTEsIDB4QTlBQywgMHhBOUFFLCAweDBEQkIsDQorICAgIDB4QTlBRiwgMHhBOUFGLCAweDIzNjAsIDB4QTlCMCwgMHhBOUIwLCAweDI2MTIsIDB4QTlCMSwgMHhBOUIzLCAweDBGN0IsDQorICAgIDB4QTlCNCwgMHhBOUI1LCAweDExMDAsIDB4QTlCNiwgMHhBOUI2LCAweDEyODksIDB4QTlCNywgMHhBOUI4LCAweDEzQjIsDQorICAgIDB4QTlCOSwgMHhBOUI5LCAweDJGMEQsIDB4QzJBMSwgMHhDMkMxLCAweDAyMzIsIDB4QzRBMSwgMHhDNEZFLCAweDAyNTMsDQorICAgIDB4QzVBMSwgMHhDNUZFLCAweDAyQjEsIDB4QzZBMSwgMHhDNkZFLCAweDAzMEYsIDB4QzdBMSwgMHhDN0ZFLCAweDAzNkQsDQorICAgIDB4QzhBMSwgMHhDOEZFLCAweDAzQ0IsIDB4QzlBMSwgMHhDOUZFLCAweDA0MjksIDB4Q0FBMSwgMHhDQUZFLCAweDA0ODcsDQorICAgIDB4Q0JBMSwgMHhDQkZFLCAweDA0RTUsIDB4Q0NBMSwgMHhDQ0ZFLCAweDA1NDMsIDB4Q0RBMSwgMHhDREZFLCAweDA1QTEsDQorICAgIDB4Q0VBMSwgMHhDRUZFLCAweDA1RkYsIDB4Q0ZBMSwgMHhDRkZFLCAweDA2NUQsIDB4RDBBMSwgMHhEMEZFLCAweDA2QkIsDQorICAgIDB4RDFBMSwgMHhEMUZFLCAweDA3MTksIDB4RDJBMSwgMHhEMkZFLCAweDA3NzcsIDB4RDNBMSwgMHhEM0ZFLCAweDA3RDUsDQorICAgIDB4RDRBMSwgMHhENEZFLCAweDA4MzMsIDB4RDVBMSwgMHhENUZFLCAweDA4OTEsIDB4RDZBMSwgMHhENkZFLCAweDA4RUYsDQorICAgIDB4RDdBMSwgMHhEN0ZFLCAweDA5NEQsIDB4RDhBMSwgMHhEOEZFLCAweDA5QUIsIDB4RDlBMSwgMHhEOUZFLCAweDBBMDksDQorICAgIDB4REFBMSwgMHhEQUZFLCAweDBBNjcsIDB4REJBMSwgMHhEQkZFLCAweDBBQzUsIDB4RENBMSwgMHhEQ0ZFLCAweDBCMjMsDQorICAgIDB4RERBMSwgMHhEREZFLCAweDBCODEsIDB4REVBMSwgMHhERUZFLCAweDBCREYsIDB4REZBMSwgMHhERkZFLCAweDBDM0QsDQorICAgIDB4RTBBMSwgMHhFMEZFLCAweDBDOUIsIDB4RTFBMSwgMHhFMUZFLCAweDBDRjksIDB4RTJBMSwgMHhFMkZFLCAweDBENTcsDQorICAgIDB4RTNBMSwgMHhFM0ZFLCAweDBEQjUsIDB4RTRBMSwgMHhFNEZFLCAweDBFMTMsIDB4RTVBMSwgMHhFNUZFLCAweDBFNzEsDQorICAgIDB4RTZBMSwgMHhFNkZFLCAweDBFQ0YsIDB4RTdBMSwgMHhFN0ZFLCAweDBGMkQsIDB4RThBMSwgMHhFOEZFLCAweDBGOEIsDQorICAgIDB4RTlBMSwgMHhFOUZFLCAweDBGRTksIDB4RUFBMSwgMHhFQUZFLCAweDEwNDcsIDB4RUJBMSwgMHhFQkZFLCAweDEwQTUsDQorICAgIDB4RUNBMSwgMHhFQ0ZFLCAweDExMDMsIDB4RURBMSwgMHhFREZFLCAweDExNjEsIDB4RUVBMSwgMHhFRUZFLCAweDExQkYsDQorICAgIDB4RUZBMSwgMHhFRkZFLCAweDEyMUQsIDB4RjBBMSwgMHhGMEZFLCAweDEyN0IsIDB4RjFBMSwgMHhGMUZFLCAweDEyRDksDQorICAgIDB4RjJBMSwgMHhGMkZFLCAweDEzMzcsIDB4RjNBMSwgMHhGM0ZFLCAweDEzOTUsIDB4RjRBMSwgMHhGNEZFLCAweDEzRjMsDQorICAgIDB4RjVBMSwgMHhGNUZFLCAweDE0NTEsIDB4RjZBMSwgMHhGNkZFLCAweDE0QUYsIDB4RjdBMSwgMHhGN0ZFLCAweDE1MEQsDQorICAgIDB4RjhBMSwgMHhGOEZFLCAweDE1NkIsIDB4RjlBMSwgMHhGOUZFLCAweDE1QzksIDB4RkFBMSwgMHhGQUZFLCAweDE2MjcsDQorICAgIDB4RkJBMSwgMHhGQkZFLCAweDE2ODUsIDB4RkNBMSwgMHhGQ0ZFLCAweDE2RTMsIDB4RkRBMSwgMHhGRENCLCAweDE3NDEsDQorfTsNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfQ05TX0VVQ19WXzBfRFdvcmRbMjYxICogNF0gPSB7DQorICAgIDB4OEVBMSwgMHhBMUExLCAweEExQUIsIDB4MDA2MywgMHg4RUExLCAweEExQUMsIDB4QTFBQywgMHgzNTRFLA0KKyAgICAweDhFQTEsIDB4QTFBRCwgMHhBMUJBLCAweDAwNkYsIDB4OEVBMSwgMHhBMUJCLCAweEExQkIsIDB4MDA3QywNCisgICAgMHg4RUExLCAweEExQkMsIDB4QTFCQywgMHgwMDdFLCAweDhFQTEsIDB4QTFCRCwgMHhBMUJELCAweDAwN0UsDQorICAgIDB4OEVBMSwgMHhBMUJFLCAweEExQkYsIDB4MDA4MiwgMHg4RUExLCAweEExQzAsIDB4QTFDMSwgMHgwMDgyLA0KKyAgICAweDhFQTEsIDB4QTFDMiwgMHhBMUMzLCAweDAwODYsIDB4OEVBMSwgMHhBMUM0LCAweEExQzUsIDB4MDA4NiwNCisgICAgMHg4RUExLCAweEExQzYsIDB4QTFDNywgMHgwMDhBLCAweDhFQTEsIDB4QTFDOCwgMHhBMUM5LCAweDAwOEEsDQorICAgIDB4OEVBMSwgMHhBMUNBLCAweEExQ0IsIDB4MDA4RSwgMHg4RUExLCAweEExQ0MsIDB4QTFDRCwgMHgwMDhFLA0KKyAgICAweDhFQTEsIDB4QTFDRSwgMHhBMUNGLCAweDAwOTIsIDB4OEVBMSwgMHhBMUQwLCAweEExRDEsIDB4MDA5MiwNCisgICAgMHg4RUExLCAweEExRDIsIDB4QTFEMywgMHgwMDk2LCAweDhFQTEsIDB4QTFENCwgMHhBMUQ1LCAweDAwOTYsDQorICAgIDB4OEVBMSwgMHhBMUQ2LCAweEExRDcsIDB4MDA5QSwgMHg4RUExLCAweEExRDgsIDB4QTFEOSwgMHgwMDlBLA0KKyAgICAweDhFQTEsIDB4QTFEQSwgMHhBMURCLCAweDAwOUUsIDB4OEVBMSwgMHhBMURDLCAweEExRkUsIDB4MDA5RSwNCisgICAgMHg4RUExLCAweEEyQTEsIDB4QTJDMywgMHgwMEMxLCAweDhFQTEsIDB4QTJDNCwgMHhBMkM0LCAweDM1NEYsDQorICAgIDB4OEVBMSwgMHhBMkM1LCAweEEyRkUsIDB4MDBFNSwgMHg4RUExLCAweEEzQTEsIDB4QTNDRSwgMHgwMTFGLA0KKyAgICAweDhFQTEsIDB4QTRBMSwgMHhBNEZFLCAweDAxNEQsIDB4OEVBMSwgMHhBNUExLCAweEE1RUMsIDB4MDFBQiwNCisgICAgMHg4RUExLCAweEE1RUUsIDB4QTVGMCwgMHgwMUY3LCAweDhFQTEsIDB4QTZBMSwgMHhBNkJFLCAweDAxRkEsDQorICAgIDB4OEVBMSwgMHhBN0ExLCAweEE3QTEsIDB4MDI1MywgMHg4RUExLCAweEE3QTIsIDB4QTdBNCwgMHgwMjE4LA0KKyAgICAweDhFQTEsIDB4QTdBNSwgMHhBN0E1LCAweDAyNTQsIDB4OEVBMSwgMHhBN0E2LCAweEE3QTYsIDB4MDIxQiwNCisgICAgMHg4RUExLCAweEE3QTcsIDB4QTdBNywgMHgwMjVBLCAweDhFQTEsIDB4QTdBOCwgMHhBN0E4LCAweDAyMUMsDQorICAgIDB4OEVBMSwgMHhBN0E5LCAweEE3QUMsIDB4MDI1QiwgMHg4RUExLCAweEE3QUQsIDB4QTdBRiwgMHgwMjFELA0KKyAgICAweDhFQTEsIDB4QTdCMCwgMHhBN0IwLCAweDAyNUYsIDB4OEVBMSwgMHhBN0IxLCAweEE3QjEsIDB4MTc2RSwNCisgICAgMHg4RUExLCAweEE3QjIsIDB4QTdCMiwgMHgwMjYwLCAweDhFQTEsIDB4QTdCMywgMHhBN0IzLCAweDAyNjIsDQorICAgIDB4OEVBMSwgMHhBN0I0LCAweEE3QjQsIDB4MDIyMCwgMHg4RUExLCAweEE3QjUsIDB4QTdCNSwgMHgwMjYzLA0KKyAgICAweDhFQTEsIDB4QTdCNiwgMHhBN0I2LCAweDE3NkYsIDB4OEVBMSwgMHhBN0I3LCAweEE3QjcsIDB4MDIyMSwNCisgICAgMHg4RUExLCAweEE3QjgsIDB4QTdCOSwgMHgwMjY0LCAweDhFQTEsIDB4QTdCQSwgMHhBN0JBLCAweDAyMjIsDQorICAgIDB4OEVBMSwgMHhBN0JCLCAweEE3QkIsIDB4MTc3MCwgMHg4RUExLCAweEE3QkMsIDB4QTdCQywgMHgwMjIzLA0KKyAgICAweDhFQTEsIDB4QTdCRCwgMHhBN0JELCAweDAyNjYsIDB4OEVBMSwgMHhBN0JFLCAweEE3QkUsIDB4MDI3OSwNCisgICAgMHg4RUExLCAweEE3QkYsIDB4QTdCRiwgMHgxNzc1LCAweDhFQTEsIDB4QTdDMCwgMHhBN0MxLCAweDAyN0EsDQorICAgIDB4OEVBMSwgMHhBN0MyLCAweEE3QzIsIDB4MDIyNCwgMHg4RUExLCAweEE3QzMsIDB4QTdDNiwgMHgwMjdDLA0KKyAgICAweDhFQTEsIDB4QTdDNywgMHhBN0M3LCAweDAyMjUsIDB4OEVBMSwgMHhBN0M4LCAweEE3Q0IsIDB4MDI4MiwNCisgICAgMHg4RUExLCAweEE3Q0MsIDB4QTdDQywgMHgxNzc2LCAweDhFQTEsIDB4QTdDRCwgMHhBN0NELCAweDAyODYsDQorICAgIDB4OEVBMSwgMHhBN0NFLCAweEE3Q0UsIDB4MDIyNiwgMHg4RUExLCAweEE3Q0YsIDB4QTdEMCwgMHgwMjg4LA0KKyAgICAweDhFQTEsIDB4QTdEMSwgMHhBN0QyLCAweDAyOEMsIDB4OEVBMSwgMHhBN0QzLCAweEE3RDUsIDB4MDIyNywNCisgICAgMHg4RUExLCAweEE3RDYsIDB4QTdEOCwgMHgwMjhFLCAweDhFQTEsIDB4QTdEOSwgMHhBN0RBLCAweDAyMkEsDQorICAgIDB4OEVBMSwgMHhBN0RCLCAweEE3REIsIDB4MTc3NywgMHg4RUExLCAweEE3REMsIDB4QTdERiwgMHgwMkQwLA0KKyAgICAweDhFQTEsIDB4QTdFMCwgMHhBN0UwLCAweDAyRDUsIDB4OEVBMSwgMHhBN0UxLCAweEE3RTEsIDB4MDIyQywNCisgICAgMHg4RUExLCAweEE3RTIsIDB4QTdFNSwgMHgwMkQ2LCAweDhFQTEsIDB4QTdFNiwgMHhBN0U2LCAweDAyMkQsDQorICAgIDB4OEVBMSwgMHhBN0U3LCAweEE3RUQsIDB4MDJEQSwgMHg4RUExLCAweEE3RUUsIDB4QTdFRSwgMHgxNzhBLA0KKyAgICAweDhFQTEsIDB4QTdFRiwgMHhBN0YyLCAweDAyRTEsIDB4OEVBMSwgMHhBN0YzLCAweEE3RjMsIDB4MTc4QywNCisgICAgMHg4RUExLCAweEE3RjQsIDB4QTdGOCwgMHgwMkU1LCAweDhFQTEsIDB4QTdGOSwgMHhBN0Y5LCAweDE3OEQsDQorICAgIDB4OEVBMSwgMHhBN0ZBLCAweEE3RkQsIDB4MDJFQSwgMHg4RUExLCAweEE3RkUsIDB4QTdGRSwgMHgwMzU2LA0KKyAgICAweDhFQTEsIDB4QThBMSwgMHhBOEE2LCAweDAzNTcsIDB4OEVBMSwgMHhBOEE3LCAweEE4QTcsIDB4MDM1RSwNCisgICAgMHg4RUExLCAweEE4QTgsIDB4QThBOCwgMHgwMzYyLCAweDhFQTEsIDB4QThBOSwgMHhBOEFBLCAweDAyMkUsDQorICAgIDB4OEVBMSwgMHhBOEFCLCAweEE4QjIsIDB4MDM2MywgMHg4RUExLCAweEE4QjMsIDB4QThCMywgMHgxN0IyLA0KKyAgICAweDhFQTEsIDB4QThCNCwgMHhBOEI2LCAweDAzNkIsIDB4OEVBMSwgMHhBOEI3LCAweEE4QkEsIDB4MDNGNiwNCisgICAgMHg4RUExLCAweEE4QkIsIDB4QThCQiwgMHgxODEyLCAweDhFQTEsIDB4QThCQywgMHhBOEJFLCAweDAzRkEsDQorICAgIDB4OEVBMSwgMHhBOEJGLCAweEE4QzMsIDB4MDNGRSwgMHg4RUExLCAweEE4QzQsIDB4QThDQywgMHgwNDA1LA0KKyAgICAweDhFQTEsIDB4QThDRCwgMHhBOENELCAweDE4MTMsIDB4OEVBMSwgMHhBOENFLCAweEE4Q0UsIDB4MTgxOCwNCisgICAgMHg4RUExLCAweEE4Q0YsIDB4QThEMiwgMHgwNDBGLCAweDhFQTEsIDB4QThEMywgMHhBOEQzLCAweDE4MTksDQorICAgIDB4OEVBMSwgMHhBOEQ0LCAweEE4RDksIDB4MDUwOCwgMHg4RUExLCAweEE4REEsIDB4QThEQSwgMHgxOEU3LA0KKyAgICAweDhFQTEsIDB4QThEQiwgMHhBOEUyLCAweDA1MEUsIDB4OEVBMSwgMHhBOEUzLCAweEE4RTMsIDB4MDIzMCwNCisgICAgMHg4RUExLCAweEE4RTQsIDB4QThFNCwgMHgwNTFCLCAweDhFQTEsIDB4QThFNSwgMHhBOEU3LCAweDA1MjAsDQorICAgIDB4OEVBMSwgMHhBOEU4LCAweEE4RUIsIDB4MDY5NiwgMHg4RUExLCAweEE4RUMsIDB4QThFQywgMHgwMjMxLA0KKyAgICAweDhFQTEsIDB4QThFRCwgMHhBOEYwLCAweDA2OUYsIDB4OEVBMSwgMHhBOEYxLCAweEE4RkIsIDB4MDgyNiwNCisgICAgMHg4RUExLCAweEE4RkMsIDB4QThGRSwgMHgwOUY1LCAweDhFQTEsIDB4QTlBMSwgMHhBOUExLCAweDFFMzMsDQorICAgIDB4OEVBMSwgMHhBOUEyLCAweEE5QTIsIDB4MDlGOCwgMHg4RUExLCAweEE5QTMsIDB4QTlBMywgMHgxRTM0LA0KKyAgICAweDhFQTEsIDB4QTlBNCwgMHhBOUE1LCAweDA5RjksIDB4OEVBMSwgMHhBOUE2LCAweEE5QUIsIDB4MEJFMSwNCisgICAgMHg4RUExLCAweEE5QUMsIDB4QTlBRSwgMHgwREJCLCAweDhFQTEsIDB4QTlBRiwgMHhBOUFGLCAweDIzNjAsDQorICAgIDB4OEVBMSwgMHhBOUIwLCAweEE5QjAsIDB4MjYxMiwgMHg4RUExLCAweEE5QjEsIDB4QTlCMywgMHgwRjdCLA0KKyAgICAweDhFQTEsIDB4QTlCNCwgMHhBOUI1LCAweDExMDAsIDB4OEVBMSwgMHhBOUI2LCAweEE5QjYsIDB4MTI4OSwNCisgICAgMHg4RUExLCAweEE5QjcsIDB4QTlCOCwgMHgxM0IyLCAweDhFQTEsIDB4QTlCOSwgMHhBOUI5LCAweDJGMEQsDQorICAgIDB4OEVBMSwgMHhDMkExLCAweEMyQzEsIDB4MDIzMiwgMHg4RUExLCAweEM0QTEsIDB4QzRGRSwgMHgwMjUzLA0KKyAgICAweDhFQTEsIDB4QzVBMSwgMHhDNUZFLCAweDAyQjEsIDB4OEVBMSwgMHhDNkExLCAweEM2RkUsIDB4MDMwRiwNCisgICAgMHg4RUExLCAweEM3QTEsIDB4QzdGRSwgMHgwMzZELCAweDhFQTEsIDB4QzhBMSwgMHhDOEZFLCAweDAzQ0IsDQorICAgIDB4OEVBMSwgMHhDOUExLCAweEM5RkUsIDB4MDQyOSwgMHg4RUExLCAweENBQTEsIDB4Q0FGRSwgMHgwNDg3LA0KKyAgICAweDhFQTEsIDB4Q0JBMSwgMHhDQkZFLCAweDA0RTUsIDB4OEVBMSwgMHhDQ0ExLCAweENDRkUsIDB4MDU0MywNCisgICAgMHg4RUExLCAweENEQTEsIDB4Q0RGRSwgMHgwNUExLCAweDhFQTEsIDB4Q0VBMSwgMHhDRUZFLCAweDA1RkYsDQorICAgIDB4OEVBMSwgMHhDRkExLCAweENGRkUsIDB4MDY1RCwgMHg4RUExLCAweEQwQTEsIDB4RDBGRSwgMHgwNkJCLA0KKyAgICAweDhFQTEsIDB4RDFBMSwgMHhEMUZFLCAweDA3MTksIDB4OEVBMSwgMHhEMkExLCAweEQyRkUsIDB4MDc3NywNCisgICAgMHg4RUExLCAweEQzQTEsIDB4RDNGRSwgMHgwN0Q1LCAweDhFQTEsIDB4RDRBMSwgMHhENEZFLCAweDA4MzMsDQorICAgIDB4OEVBMSwgMHhENUExLCAweEQ1RkUsIDB4MDg5MSwgMHg4RUExLCAweEQ2QTEsIDB4RDZGRSwgMHgwOEVGLA0KKyAgICAweDhFQTEsIDB4RDdBMSwgMHhEN0ZFLCAweDA5NEQsIDB4OEVBMSwgMHhEOEExLCAweEQ4RkUsIDB4MDlBQiwNCisgICAgMHg4RUExLCAweEQ5QTEsIDB4RDlGRSwgMHgwQTA5LCAweDhFQTEsIDB4REFBMSwgMHhEQUZFLCAweDBBNjcsDQorICAgIDB4OEVBMSwgMHhEQkExLCAweERCRkUsIDB4MEFDNSwgMHg4RUExLCAweERDQTEsIDB4RENGRSwgMHgwQjIzLA0KKyAgICAweDhFQTEsIDB4RERBMSwgMHhEREZFLCAweDBCODEsIDB4OEVBMSwgMHhERUExLCAweERFRkUsIDB4MEJERiwNCisgICAgMHg4RUExLCAweERGQTEsIDB4REZGRSwgMHgwQzNELCAweDhFQTEsIDB4RTBBMSwgMHhFMEZFLCAweDBDOUIsDQorICAgIDB4OEVBMSwgMHhFMUExLCAweEUxRkUsIDB4MENGOSwgMHg4RUExLCAweEUyQTEsIDB4RTJGRSwgMHgwRDU3LA0KKyAgICAweDhFQTEsIDB4RTNBMSwgMHhFM0ZFLCAweDBEQjUsIDB4OEVBMSwgMHhFNEExLCAweEU0RkUsIDB4MEUxMywNCisgICAgMHg4RUExLCAweEU1QTEsIDB4RTVGRSwgMHgwRTcxLCAweDhFQTEsIDB4RTZBMSwgMHhFNkZFLCAweDBFQ0YsDQorICAgIDB4OEVBMSwgMHhFN0ExLCAweEU3RkUsIDB4MEYyRCwgMHg4RUExLCAweEU4QTEsIDB4RThGRSwgMHgwRjhCLA0KKyAgICAweDhFQTEsIDB4RTlBMSwgMHhFOUZFLCAweDBGRTksIDB4OEVBMSwgMHhFQUExLCAweEVBRkUsIDB4MTA0NywNCisgICAgMHg4RUExLCAweEVCQTEsIDB4RUJGRSwgMHgxMEE1LCAweDhFQTEsIDB4RUNBMSwgMHhFQ0ZFLCAweDExMDMsDQorICAgIDB4OEVBMSwgMHhFREExLCAweEVERkUsIDB4MTE2MSwgMHg4RUExLCAweEVFQTEsIDB4RUVGRSwgMHgxMUJGLA0KKyAgICAweDhFQTEsIDB4RUZBMSwgMHhFRkZFLCAweDEyMUQsIDB4OEVBMSwgMHhGMEExLCAweEYwRkUsIDB4MTI3QiwNCisgICAgMHg4RUExLCAweEYxQTEsIDB4RjFGRSwgMHgxMkQ5LCAweDhFQTEsIDB4RjJBMSwgMHhGMkZFLCAweDEzMzcsDQorICAgIDB4OEVBMSwgMHhGM0ExLCAweEYzRkUsIDB4MTM5NSwgMHg4RUExLCAweEY0QTEsIDB4RjRGRSwgMHgxM0YzLA0KKyAgICAweDhFQTEsIDB4RjVBMSwgMHhGNUZFLCAweDE0NTEsIDB4OEVBMSwgMHhGNkExLCAweEY2RkUsIDB4MTRBRiwNCisgICAgMHg4RUExLCAweEY3QTEsIDB4RjdGRSwgMHgxNTBELCAweDhFQTEsIDB4RjhBMSwgMHhGOEZFLCAweDE1NkIsDQorICAgIDB4OEVBMSwgMHhGOUExLCAweEY5RkUsIDB4MTVDOSwgMHg4RUExLCAweEZBQTEsIDB4RkFGRSwgMHgxNjI3LA0KKyAgICAweDhFQTEsIDB4RkJBMSwgMHhGQkZFLCAweDE2ODUsIDB4OEVBMSwgMHhGQ0ExLCAweEZDRkUsIDB4MTZFMywNCisgICAgMHg4RUExLCAweEZEQTEsIDB4RkRDQiwgMHgxNzQxLCAweDhFQTIsIDB4QTFBMSwgMHhBMUZFLCAweDE3NkMsDQorICAgIDB4OEVBMiwgMHhBMkExLCAweEEyRkUsIDB4MTdDQSwgMHg4RUEyLCAweEEzQTEsIDB4QTNGRSwgMHgxODI4LA0KKyAgICAweDhFQTIsIDB4QTRBMSwgMHhBNEZFLCAweDE4ODYsIDB4OEVBMiwgMHhBNUExLCAweEE1RkUsIDB4MThFNCwNCisgICAgMHg4RUEyLCAweEE2QTEsIDB4QTZGRSwgMHgxOTQyLCAweDhFQTIsIDB4QTdBMSwgMHhBN0ZFLCAweDE5QTAsDQorICAgIDB4OEVBMiwgMHhBOEExLCAweEE4RkUsIDB4MTlGRSwgMHg4RUEyLCAweEE5QTEsIDB4QTlGRSwgMHgxQTVDLA0KKyAgICAweDhFQTIsIDB4QUFBMSwgMHhBQUZFLCAweDFBQkEsIDB4OEVBMiwgMHhBQkExLCAweEFCRkUsIDB4MUIxOCwNCisgICAgMHg4RUEyLCAweEFDQTEsIDB4QUNGRSwgMHgxQjc2LCAweDhFQTIsIDB4QURBMSwgMHhBREZFLCAweDFCRDQsDQorICAgIDB4OEVBMiwgMHhBRUExLCAweEFFRkUsIDB4MUMzMiwgMHg4RUEyLCAweEFGQTEsIDB4QUZGRSwgMHgxQzkwLA0KKyAgICAweDhFQTIsIDB4QjBBMSwgMHhCMEZFLCAweDFDRUUsIDB4OEVBMiwgMHhCMUExLCAweEIxRkUsIDB4MUQ0QywNCisgICAgMHg4RUEyLCAweEIyQTEsIDB4QjJGRSwgMHgxREFBLCAweDhFQTIsIDB4QjNBMSwgMHhCM0ZFLCAweDFFMDgsDQorICAgIDB4OEVBMiwgMHhCNEExLCAweEI0RkUsIDB4MUU2NiwgMHg4RUEyLCAweEI1QTEsIDB4QjVGRSwgMHgxRUM0LA0KKyAgICAweDhFQTIsIDB4QjZBMSwgMHhCNkZFLCAweDFGMjIsIDB4OEVBMiwgMHhCN0ExLCAweEI3RkUsIDB4MUY4MCwNCisgICAgMHg4RUEyLCAweEI4QTEsIDB4QjhGRSwgMHgxRkRFLCAweDhFQTIsIDB4QjlBMSwgMHhCOUZFLCAweDIwM0MsDQorICAgIDB4OEVBMiwgMHhCQUExLCAweEJBRkUsIDB4MjA5QSwgMHg4RUEyLCAweEJCQTEsIDB4QkJGRSwgMHgyMEY4LA0KKyAgICAweDhFQTIsIDB4QkNBMSwgMHhCQ0ZFLCAweDIxNTYsIDB4OEVBMiwgMHhCREExLCAweEJERkUsIDB4MjFCNCwNCisgICAgMHg4RUEyLCAweEJFQTEsIDB4QkVGRSwgMHgyMjEyLCAweDhFQTIsIDB4QkZBMSwgMHhCRkZFLCAweDIyNzAsDQorICAgIDB4OEVBMiwgMHhDMEExLCAweEMwRkUsIDB4MjJDRSwgMHg4RUEyLCAweEMxQTEsIDB4QzFGRSwgMHgyMzJDLA0KKyAgICAweDhFQTIsIDB4QzJBMSwgMHhDMkZFLCAweDIzOEEsIDB4OEVBMiwgMHhDM0ExLCAweEMzRkUsIDB4MjNFOCwNCisgICAgMHg4RUEyLCAweEM0QTEsIDB4QzRGRSwgMHgyNDQ2LCAweDhFQTIsIDB4QzVBMSwgMHhDNUZFLCAweDI0QTQsDQorICAgIDB4OEVBMiwgMHhDNkExLCAweEM2RkUsIDB4MjUwMiwgMHg4RUEyLCAweEM3QTEsIDB4QzdGRSwgMHgyNTYwLA0KKyAgICAweDhFQTIsIDB4QzhBMSwgMHhDOEZFLCAweDI1QkUsIDB4OEVBMiwgMHhDOUExLCAweEM5RkUsIDB4MjYxQywNCisgICAgMHg4RUEyLCAweENBQTEsIDB4Q0FGRSwgMHgyNjdBLCAweDhFQTIsIDB4Q0JBMSwgMHhDQkZFLCAweDI2RDgsDQorICAgIDB4OEVBMiwgMHhDQ0ExLCAweENDRkUsIDB4MjczNiwgMHg4RUEyLCAweENEQTEsIDB4Q0RGRSwgMHgyNzk0LA0KKyAgICAweDhFQTIsIDB4Q0VBMSwgMHhDRUZFLCAweDI3RjIsIDB4OEVBMiwgMHhDRkExLCAweENGRkUsIDB4Mjg1MCwNCisgICAgMHg4RUEyLCAweEQwQTEsIDB4RDBGRSwgMHgyOEFFLCAweDhFQTIsIDB4RDFBMSwgMHhEMUZFLCAweDI5MEMsDQorICAgIDB4OEVBMiwgMHhEMkExLCAweEQyRkUsIDB4Mjk2QSwgMHg4RUEyLCAweEQzQTEsIDB4RDNGRSwgMHgyOUM4LA0KKyAgICAweDhFQTIsIDB4RDRBMSwgMHhENEZFLCAweDJBMjYsIDB4OEVBMiwgMHhENUExLCAweEQ1RkUsIDB4MkE4NCwNCisgICAgMHg4RUEyLCAweEQ2QTEsIDB4RDZGRSwgMHgyQUUyLCAweDhFQTIsIDB4RDdBMSwgMHhEN0ZFLCAweDJCNDAsDQorICAgIDB4OEVBMiwgMHhEOEExLCAweEQ4RkUsIDB4MkI5RSwgMHg4RUEyLCAweEQ5QTEsIDB4RDlGRSwgMHgyQkZDLA0KKyAgICAweDhFQTIsIDB4REFBMSwgMHhEQUZFLCAweDJDNUEsIDB4OEVBMiwgMHhEQkExLCAweERCRkUsIDB4MkNCOCwNCisgICAgMHg4RUEyLCAweERDQTEsIDB4RENGRSwgMHgyRDE2LCAweDhFQTIsIDB4RERBMSwgMHhEREZFLCAweDJENzQsDQorICAgIDB4OEVBMiwgMHhERUExLCAweERFRkUsIDB4MkREMiwgMHg4RUEyLCAweERGQTEsIDB4REZGRSwgMHgyRTMwLA0KKyAgICAweDhFQTIsIDB4RTBBMSwgMHhFMEZFLCAweDJFOEUsIDB4OEVBMiwgMHhFMUExLCAweEUxRkUsIDB4MkVFQywNCisgICAgMHg4RUEyLCAweEUyQTEsIDB4RTJGRSwgMHgyRjRBLCAweDhFQTIsIDB4RTNBMSwgMHhFM0ZFLCAweDJGQTgsDQorICAgIDB4OEVBMiwgMHhFNEExLCAweEU0RkUsIDB4MzAwNiwgMHg4RUEyLCAweEU1QTEsIDB4RTVGRSwgMHgzMDY0LA0KKyAgICAweDhFQTIsIDB4RTZBMSwgMHhFNkZFLCAweDMwQzIsIDB4OEVBMiwgMHhFN0ExLCAweEU3RkUsIDB4MzEyMCwNCisgICAgMHg4RUEyLCAweEU4QTEsIDB4RThGRSwgMHgzMTdFLCAweDhFQTIsIDB4RTlBMSwgMHhFOUZFLCAweDMxREMsDQorICAgIDB4OEVBMiwgMHhFQUExLCAweEVBRkUsIDB4MzIzQSwgMHg4RUEyLCAweEVCQTEsIDB4RUJGRSwgMHgzMjk4LA0KKyAgICAweDhFQTIsIDB4RUNBMSwgMHhFQ0ZFLCAweDMyRjYsIDB4OEVBMiwgMHhFREExLCAweEVERkUsIDB4MzM1NCwNCisgICAgMHg4RUEyLCAweEVFQTEsIDB4RUVGRSwgMHgzM0IyLCAweDhFQTIsIDB4RUZBMSwgMHhFRkZFLCAweDM0MTAsDQorICAgIDB4OEVBMiwgMHhGMEExLCAweEYwRkUsIDB4MzQ2RSwgMHg4RUEyLCAweEYxQTEsIDB4RjFGRSwgMHgzNENDLA0KKyAgICAweDhFQTIsIDB4RjJBMSwgMHhGMkM0LCAweDM1MkEsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9FVGVuLUI1LUhfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9FVGVuLUI1LUhfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFjOTQ4MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0VUZW4tQjUtSF8wLmNwcApAQCAtMCwwICsxLDkzIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfRVRlbl9CNV9IXzBbMjU0ICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDM1NTAsIDB4QTE0MCwgMHhBMTU4LCAweDAwNjMsIDB4QTE1OSwgMHhBMTVDLCAweDM1QUYsDQorICAgIDB4QTE1RCwgMHhBMTdFLCAweDAwODAsIDB4QTFBMSwgMHhBMUY1LCAweDAwQTIsIDB4QTFGNiwgMHhBMUY2LCAweDAwRjgsDQorICAgIDB4QTFGNywgMHhBMUY3LCAweDAwRjcsIDB4QTFGOCwgMHhBMUZFLCAweDAwRjksIDB4QTI0MCwgMHhBMjdFLCAweDAxMDAsDQorICAgIDB4QTJBMSwgMHhBMkZFLCAweDAxM0YsIDB4QTM0MCwgMHhBMzdFLCAweDAxOUQsIDB4QTNBMSwgMHhBM0JCLCAweDAxREMsDQorICAgIDB4QTNCRCwgMHhBM0JGLCAweDAxRjcsIDB4QTQ0MCwgMHhBNDdFLCAweDAyNTMsIDB4QTRBMSwgMHhBNEZFLCAweDAyOTIsDQorICAgIDB4QTU0MCwgMHhBNTdFLCAweDAyRjAsIDB4QTVBMSwgMHhBNUZFLCAweDAzMkYsIDB4QTY0MCwgMHhBNjdFLCAweDAzOEQsDQorICAgIDB4QTZBMSwgMHhBNkZFLCAweDAzQ0MsIDB4QTc0MCwgMHhBNzdFLCAweDA0MkEsIDB4QTdBMSwgMHhBN0ZFLCAweDA0NjksDQorICAgIDB4QTg0MCwgMHhBODdFLCAweDA0QzcsIDB4QThBMSwgMHhBOEZFLCAweDA1MDYsIDB4QTk0MCwgMHhBOTdFLCAweDA1NjQsDQorICAgIDB4QTlBMSwgMHhBOUZFLCAweDA1QTMsIDB4QUE0MCwgMHhBQTdFLCAweDA2MDEsIDB4QUFBMSwgMHhBQUZFLCAweDA2NDAsDQorICAgIDB4QUI0MCwgMHhBQjdFLCAweDA2OUUsIDB4QUJBMSwgMHhBQkZFLCAweDA2REQsIDB4QUM0MCwgMHhBQzdFLCAweDA3M0IsDQorICAgIDB4QUNBMSwgMHhBQ0ZELCAweDA3N0EsIDB4QUNGRSwgMHhBQ0ZFLCAweDA5N0YsIDB4QUQ0MCwgMHhBRDdFLCAweDA3RDcsDQorICAgIDB4QURBMSwgMHhBREZFLCAweDA4MTYsIDB4QUU0MCwgMHhBRTdFLCAweDA4NzQsIDB4QUVBMSwgMHhBRUZFLCAweDA4QjMsDQorICAgIDB4QUY0MCwgMHhBRjdFLCAweDA5MTEsIDB4QUZBMSwgMHhBRkNGLCAweDA5NTAsIDB4QUZEMCwgMHhBRkZFLCAweDA5ODAsDQorICAgIDB4QjA0MCwgMHhCMDdFLCAweDA5QUYsIDB4QjBBMSwgMHhCMEZFLCAweDA5RUUsIDB4QjE0MCwgMHhCMTdFLCAweDBBNEMsDQorICAgIDB4QjFBMSwgMHhCMUZFLCAweDBBOEIsIDB4QjI0MCwgMHhCMjdFLCAweDBBRTksIDB4QjJBMSwgMHhCMkZFLCAweDBCMjgsDQorICAgIDB4QjM0MCwgMHhCMzdFLCAweDBCODYsIDB4QjNBMSwgMHhCM0ZFLCAweDBCQzUsIDB4QjQ0MCwgMHhCNDdFLCAweDBDMjMsDQorICAgIDB4QjRBMSwgMHhCNEZFLCAweDBDNjIsIDB4QjU0MCwgMHhCNTdFLCAweDBDQzAsIDB4QjVBMSwgMHhCNUZFLCAweDBDRkYsDQorICAgIDB4QjY0MCwgMHhCNjdFLCAweDBENUQsIDB4QjZBMSwgMHhCNkZFLCAweDBEOUMsIDB4Qjc0MCwgMHhCNzdFLCAweDBERkEsDQorICAgIDB4QjdBMSwgMHhCN0ZFLCAweDBFMzksIDB4Qjg0MCwgMHhCODdFLCAweDBFOTcsIDB4QjhBMSwgMHhCOEZFLCAweDBFRDYsDQorICAgIDB4Qjk0MCwgMHhCOTdFLCAweDBGMzQsIDB4QjlBMSwgMHhCOUZFLCAweDBGNzMsIDB4QkE0MCwgMHhCQTdFLCAweDBGRDEsDQorICAgIDB4QkFBMSwgMHhCQUZFLCAweDEwMTAsIDB4QkI0MCwgMHhCQjdFLCAweDEwNkUsIDB4QkJBMSwgMHhCQkM3LCAweDEwQUQsDQorICAgIDB4QkJDOCwgMHhCQkZFLCAweDEwRDUsIDB4QkM0MCwgMHhCQzdFLCAweDExMEMsIDB4QkNBMSwgMHhCQ0ZFLCAweDExNEIsDQorICAgIDB4QkQ0MCwgMHhCRDdFLCAweDExQTksIDB4QkRBMSwgMHhCREZFLCAweDExRTgsIDB4QkU0MCwgMHhCRTUxLCAweDEyNDYsDQorICAgIDB4QkU1MiwgMHhCRTUyLCAweDEwRDQsIDB4QkU1MywgMHhCRTdFLCAweDEyNTgsIDB4QkVBMSwgMHhCRUZFLCAweDEyODQsDQorICAgIDB4QkY0MCwgMHhCRjdFLCAweDEyRTIsIDB4QkZBMSwgMHhCRkZFLCAweDEzMjEsIDB4QzA0MCwgMHhDMDdFLCAweDEzN0YsDQorICAgIDB4QzBBMSwgMHhDMEZFLCAweDEzQkUsIDB4QzE0MCwgMHhDMTdFLCAweDE0MUMsIDB4QzFBMSwgMHhDMUFBLCAweDE0NUIsDQorICAgIDB4QzFBQiwgMHhDMUZFLCAweDE0NjYsIDB4QzI0MCwgMHhDMjdFLCAweDE0QkEsIDB4QzJBMSwgMHhDMkNBLCAweDE0RjksDQorICAgIDB4QzJDQiwgMHhDMkNCLCAweDE0NjUsIDB4QzJDQywgMHhDMkZFLCAweDE1MjMsIDB4QzM0MCwgMHhDMzYwLCAweDE1NTYsDQorICAgIDB4QzM2MSwgMHhDMzdFLCAweDE1NzgsIDB4QzNBMSwgMHhDM0I4LCAweDE1OTYsIDB4QzNCOSwgMHhDM0I5LCAweDE1QUYsDQorICAgIDB4QzNCQSwgMHhDM0JBLCAweDE1QUUsIDB4QzNCQiwgMHhDM0ZFLCAweDE1QjAsIDB4QzQ0MCwgMHhDNDU1LCAweDE1RjQsDQorICAgIDB4QzQ1NiwgMHhDNDU2LCAweDE1NzcsIDB4QzQ1NywgMHhDNDdFLCAweDE2MEEsIDB4QzRBMSwgMHhDNEZFLCAweDE2MzIsDQorICAgIDB4QzU0MCwgMHhDNTdFLCAweDE2OTAsIDB4QzVBMSwgMHhDNUZFLCAweDE2Q0YsIDB4QzY0MCwgMHhDNjdFLCAweDE3MkQsDQorICAgIDB4QzZBMSwgMHhDNkJFLCAweDAxRkEsIDB4QzZCRiwgMHhDNkQ3LCAweDAyMTksIDB4QzZEOCwgMHhDNkRFLCAweDM1QjMsDQorICAgIDB4QzZERiwgMHhDNkRGLCAweDE3OTQsIDB4QzZFMCwgMHhDNkZFLCAweDM1QkEsIDB4Qzc0MCwgMHhDNzdFLCAweDM1RDksDQorICAgIDB4QzdBMSwgMHhDN0ZFLCAweDM2MTgsIDB4Qzg0MCwgMHhDODdFLCAweDM2NzYsIDB4QzhBMSwgMHhDOEQzLCAweDM2QjUsDQorICAgIDB4Qzk0MCwgMHhDOTQ5LCAweDE3NkMsIDB4Qzk0QSwgMHhDOTRBLCAweDAyNzQsIDB4Qzk0QiwgMHhDOTZCLCAweDE3NzYsDQorICAgIDB4Qzk2QywgMHhDOTdFLCAweDE3OTgsIDB4QzlBMSwgMHhDOUJELCAweDE3QUIsIDB4QzlCRSwgMHhDOUJFLCAweDE3OTcsDQorICAgIDB4QzlCRiwgMHhDOUVDLCAweDE3QzgsIDB4QzlFRCwgMHhDOUZFLCAweDE3RjcsIDB4Q0E0MCwgMHhDQTdFLCAweDE4MDksDQorICAgIDB4Q0FBMSwgMHhDQUY2LCAweDE4NDgsIDB4Q0FGNywgMHhDQUY3LCAweDE3RjYsIDB4Q0FGOCwgMHhDQUZFLCAweDE4OUUsDQorICAgIDB4Q0I0MCwgMHhDQjdFLCAweDE4QTUsIDB4Q0JBMSwgMHhDQkZFLCAweDE4RTQsIDB4Q0M0MCwgMHhDQzdFLCAweDE5NDIsDQorICAgIDB4Q0NBMSwgMHhDQ0ZFLCAweDE5ODEsIDB4Q0Q0MCwgMHhDRDdFLCAweDE5REYsIDB4Q0RBMSwgMHhDREZFLCAweDFBMUUsDQorICAgIDB4Q0U0MCwgMHhDRTdFLCAweDFBN0MsIDB4Q0VBMSwgMHhDRUZFLCAweDFBQkIsIDB4Q0Y0MCwgMHhDRjdFLCAweDFCMTksDQorICAgIDB4Q0ZBMSwgMHhDRkZFLCAweDFCNTgsIDB4RDA0MCwgMHhEMDdFLCAweDFCQjYsIDB4RDBBMSwgMHhEMEZFLCAweDFCRjUsDQorICAgIDB4RDE0MCwgMHhEMTdFLCAweDFDNTMsIDB4RDFBMSwgMHhEMUZFLCAweDFDOTIsIDB4RDI0MCwgMHhEMjdFLCAweDFDRjAsDQorICAgIDB4RDJBMSwgMHhEMkZFLCAweDFEMkYsIDB4RDM0MCwgMHhEMzdFLCAweDFEOEQsIDB4RDNBMSwgMHhEM0ZFLCAweDFEQ0MsDQorICAgIDB4RDQ0MCwgMHhENDdFLCAweDFFMkEsIDB4RDRBMSwgMHhENEZFLCAweDFFNjksIDB4RDU0MCwgMHhENTdFLCAweDFFQzcsDQorICAgIDB4RDVBMSwgMHhENUZFLCAweDFGMDYsIDB4RDY0MCwgMHhENjdFLCAweDFGNjQsIDB4RDZBMSwgMHhENkNCLCAweDFGQTMsDQorICAgIDB4RDZDQywgMHhENkNDLCAweDIyNTQsIDB4RDZDRCwgMHhENkZFLCAweDFGQ0YsIDB4RDc0MCwgMHhENzc5LCAweDIwMDEsDQorICAgIDB4RDc3QSwgMHhENzdBLCAweDIyQjksIDB4RDc3QiwgMHhENzdFLCAweDIwM0IsIDB4RDdBMSwgMHhEN0ZFLCAweDIwM0YsDQorICAgIDB4RDg0MCwgMHhEODdFLCAweDIwOUQsIDB4RDhBMSwgMHhEOEZFLCAweDIwREMsIDB4RDk0MCwgMHhEOTdFLCAweDIxM0EsDQorICAgIDB4RDlBMSwgMHhEOUZFLCAweDIxNzksIDB4REE0MCwgMHhEQTdFLCAweDIxRDcsIDB4REFBMSwgMHhEQURFLCAweDIyMTYsDQorICAgIDB4REFERiwgMHhEQURGLCAweDFGQ0UsIDB4REFFMCwgMHhEQUZFLCAweDIyNTUsIDB4REI0MCwgMHhEQjdFLCAweDIyNzQsDQorICAgIDB4REJBMSwgMHhEQkE2LCAweDIyQjMsIDB4REJBNywgMHhEQkZFLCAweDIyQkEsIDB4REM0MCwgMHhEQzdFLCAweDIzMTIsDQorICAgIDB4RENBMSwgMHhEQ0ZFLCAweDIzNTEsIDB4REQ0MCwgMHhERDdFLCAweDIzQUYsIDB4RERBMSwgMHhEREZCLCAweDIzRUUsDQorICAgIDB4RERGQywgMHhEREZDLCAweDIzODEsIDB4RERGRCwgMHhEREZFLCAweDI0NDksIDB4REU0MCwgMHhERTdFLCAweDI0NEIsDQorICAgIDB4REVBMSwgMHhERUZFLCAweDI0OEEsIDB4REY0MCwgMHhERjdFLCAweDI0RTgsIDB4REZBMSwgMHhERkZFLCAweDI1MjcsDQorICAgIDB4RTA0MCwgMHhFMDdFLCAweDI1ODUsIDB4RTBBMSwgMHhFMEZFLCAweDI1QzQsIDB4RTE0MCwgMHhFMTdFLCAweDI2MjIsDQorICAgIDB4RTFBMSwgMHhFMUZFLCAweDI2NjEsIDB4RTI0MCwgMHhFMjdFLCAweDI2QkYsIDB4RTJBMSwgMHhFMkZFLCAweDI2RkUsDQorICAgIDB4RTM0MCwgMHhFMzdFLCAweDI3NUMsIDB4RTNBMSwgMHhFM0ZFLCAweDI3OUIsIDB4RTQ0MCwgMHhFNDdFLCAweDI3RjksDQorICAgIDB4RTRBMSwgMHhFNEZFLCAweDI4MzgsIDB4RTU0MCwgMHhFNTdFLCAweDI4OTYsIDB4RTVBMSwgMHhFNUZFLCAweDI4RDUsDQorICAgIDB4RTY0MCwgMHhFNjdFLCAweDI5MzMsIDB4RTZBMSwgMHhFNkZFLCAweDI5NzIsIDB4RTc0MCwgMHhFNzdFLCAweDI5RDAsDQorICAgIDB4RTdBMSwgMHhFN0ZFLCAweDJBMEYsIDB4RTg0MCwgMHhFODdFLCAweDJBNkQsIDB4RThBMSwgMHhFOEEyLCAweDJBQUMsDQorICAgIDB4RThBMywgMHhFOEZFLCAweDJBQUYsIDB4RTk0MCwgMHhFOTc1LCAweDJCMEIsIDB4RTk3NiwgMHhFOTdFLCAweDJCNDIsDQorICAgIDB4RTlBMSwgMHhFOUZFLCAweDJCNEIsIDB4RUE0MCwgMHhFQTdFLCAweDJCQTksIDB4RUFBMSwgMHhFQUZFLCAweDJCRTgsDQorICAgIDB4RUI0MCwgMHhFQjVBLCAweDJDNDYsIDB4RUI1QiwgMHhFQjdFLCAweDJDNjIsIDB4RUJBMSwgMHhFQkYwLCAweDJDODYsDQorICAgIDB4RUJGMSwgMHhFQkYxLCAweDJBQUUsIDB4RUJGMiwgMHhFQkZFLCAweDJDRDYsIDB4RUM0MCwgMHhFQzdFLCAweDJDRTMsDQorICAgIDB4RUNBMSwgMHhFQ0RELCAweDJEMjIsIDB4RUNERSwgMHhFQ0RFLCAweDJCNDEsIDB4RUNERiwgMHhFQ0ZFLCAweDJENUYsDQorICAgIDB4RUQ0MCwgMHhFRDdFLCAweDJEN0YsIDB4RURBMSwgMHhFREE5LCAweDJEQkUsIDB4RURBQSwgMHhFREZFLCAweDJEQzgsDQorICAgIDB4RUU0MCwgMHhFRTdFLCAweDJFMUQsIDB4RUVBMSwgMHhFRUVBLCAweDJFNUMsIDB4RUVFQiwgMHhFRUVCLCAweDMwMTQsDQorICAgIDB4RUVFQywgMHhFRUZFLCAweDJFQTYsIDB4RUY0MCwgMHhFRjdFLCAweDJFQjksIDB4RUZBMSwgMHhFRkZFLCAweDJFRjgsDQorICAgIDB4RjA0MCwgMHhGMDU1LCAweDJGNTYsIDB4RjA1NiwgMHhGMDU2LCAweDJEQzcsIDB4RjA1NywgMHhGMDdFLCAweDJGNkMsDQorICAgIDB4RjBBMSwgMHhGMENBLCAweDJGOTQsIDB4RjBDQiwgMHhGMENCLCAweDJDNjEsIDB4RjBDQywgMHhGMEZFLCAweDJGQkUsDQorICAgIDB4RjE0MCwgMHhGMTYyLCAweDJGRjEsIDB4RjE2MywgMHhGMTZBLCAweDMwMTUsIDB4RjE2QiwgMHhGMTZCLCAweDMxNjAsDQorICAgIDB4RjE2QywgMHhGMTdFLCAweDMwMUQsIDB4RjFBMSwgMHhGMUZFLCAweDMwMzAsIDB4RjI0MCwgMHhGMjY3LCAweDMwOEUsDQorICAgIDB4RjI2OCwgMHhGMjY4LCAweDMxRUYsIDB4RjI2OSwgMHhGMjdFLCAweDMwQjYsIDB4RjJBMSwgMHhGMkMyLCAweDMwQ0MsDQorICAgIDB4RjJDMywgMHhGMkZFLCAweDMwRUYsIDB4RjM0MCwgMHhGMzc0LCAweDMxMkIsIDB4RjM3NSwgMHhGMzdFLCAweDMxNjEsDQorICAgIDB4RjNBMSwgMHhGM0ZFLCAweDMxNkIsIDB4RjQ0MCwgMHhGNDY1LCAweDMxQzksIDB4RjQ2NiwgMHhGNDdFLCAweDMxRjAsDQorICAgIDB4RjRBMSwgMHhGNEI0LCAweDMyMDksIDB4RjRCNSwgMHhGNEI1LCAweDMwRUUsIDB4RjRCNiwgMHhGNEZDLCAweDMyMUQsDQorICAgIDB4RjRGRCwgMHhGNEZFLCAweDMyNjUsIDB4RjU0MCwgMHhGNTdFLCAweDMyNjcsIDB4RjVBMSwgMHhGNUZFLCAweDMyQTYsDQorICAgIDB4RjY0MCwgMHhGNjYyLCAweDMzMDQsIDB4RjY2MywgMHhGNjYzLCAweDMyNjQsIDB4RjY2NCwgMHhGNjdFLCAweDMzMjcsDQorICAgIDB4RjZBMSwgMHhGNkZFLCAweDMzNDIsIDB4Rjc0MCwgMHhGNzdFLCAweDMzQTAsIDB4RjdBMSwgMHhGN0ZFLCAweDMzREYsDQorICAgIDB4Rjg0MCwgMHhGODdFLCAweDM0M0QsIDB4RjhBMSwgMHhGOEZFLCAweDM0N0MsIDB4Rjk0MCwgMHhGOTc2LCAweDM0REEsDQorICAgIDB4Rjk3NywgMHhGOTdFLCAweDM1MTIsIDB4RjlBMSwgMHhGOUMzLCAweDM1MUEsIDB4RjlDNCwgMHhGOUM0LCAweDM1MTEsDQorICAgIDB4RjlDNSwgMHhGOUM1LCAweDM1M0QsIDB4RjlDNiwgMHhGOUM2LCAweDM1NDksIDB4RjlDNywgMHhGOUQxLCAweDM1M0UsDQorICAgIDB4RjlEMiwgMHhGOUQ1LCAweDM1NEEsIDB4RjlENiwgMHhGOUZFLCAweDM2RTgsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9FVGVuLUI1LVZfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9FVGVuLUI1LVZfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFkOWUyMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0VUZW4tQjUtVl8wLmNwcApAQCAtMCwwICsxLDEzIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfRVRlbl9CNV9WXzBbMTMgKiAzXSA9IHsNCisgICAgMHhBMTRCLCAweEExNEIsIDB4MzU0RSwgMHhBMTVBLCAweEExNUEsIDB4MzVBRiwgMHhBMTVDLCAweEExNUMsIDB4MzVCMSwNCisgICAgMHhBMTVELCAweEExNUUsIDB4MDA4MiwgMHhBMTYxLCAweEExNjIsIDB4MDA4NiwgMHhBMTY1LCAweEExNjYsIDB4MDA4QSwNCisgICAgMHhBMTY5LCAweEExNkEsIDB4MDA4RSwgMHhBMTZELCAweEExNkUsIDB4MDA5MiwgMHhBMTcxLCAweEExNzIsIDB4MDA5NiwNCisgICAgMHhBMTc1LCAweEExNzYsIDB4MDA5QSwgMHhBMTc5LCAweEExN0EsIDB4MDA5RSwgMHhBMUUzLCAweEExRTMsIDB4MzU0RiwNCisgICAgMHhDNkU0LCAweEM2RTUsIDB4MzcxMSwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0VUZW5tcy1CNS1IXzAuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvRVRlbm1zLUI1LUhfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1MTM2ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0VUZW5tcy1CNS1IXzAuY3BwCkBAIC0wLDAgKzEsOSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0VUZW5tc19CNV9IXzBbMSAqIDNdID0gew0KKyAgICAweDAwMjAsIDB4MDA3RSwgMHgwMDAxLA0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvRVRlbm1zLUI1LVZfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9FVGVubXMtQjUtVl8wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjhhZDBlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvRVRlbm1zLUI1LVZfMC5jcHAKQEAgLTAsMCArMSwxNCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0VUZW5tc19CNV9WXzBbMTggKiAzXSA9IHsNCisgICAgMHhBMTRCLCAweEExNEIsIDB4MzU0RSwgMHhBMTRDLCAweEExNEMsIDB4MDA2RCwgMHhBMTU2LCAweEExNTYsIDB4MDEzOCwNCisgICAgMHhBMTU4LCAweEExNTgsIDB4MDA3QSwgMHhBMTVBLCAweEExNUEsIDB4MzVBRiwgMHhBMTVDLCAweEExNUMsIDB4MzVCMSwNCisgICAgMHhBMTVELCAweEExNUUsIDB4MDA4MiwgMHhBMTYxLCAweEExNjIsIDB4MDA4NiwgMHhBMTY1LCAweEExNjYsIDB4MDA4QSwNCisgICAgMHhBMTY5LCAweEExNkEsIDB4MDA4RSwgMHhBMTZELCAweEExNkUsIDB4MDA5MiwgMHhBMTcxLCAweEExNzIsIDB4MDA5NiwNCisgICAgMHhBMTc1LCAweEExNzYsIDB4MDA5QSwgMHhBMTc5LCAweEExN0EsIDB4MDA5RSwgMHhBMTdELCAweEExN0UsIDB4MDA4MiwNCisgICAgMHhBMUExLCAweEExQTIsIDB4MDA4NiwgMHhBMUEzLCAweEExQTQsIDB4MDA4QSwgMHhDNkU0LCAweEM2RTUsIDB4MzcxMSwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0hLc2NzLUI1LUhfNS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9IS3Njcy1CNS1IXzUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4N2MxMGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9IS3Njcy1CNS1IXzUuY3BwCkBAIC0wLDAgKzEsNDEyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfSEtzY3NfQjVfSF81WzEyMTAgKiAzXSA9IHsKKyAgICAweDAwMjAsIDB4MDA3RSwgMHgwMDAxLCAweDg3NDAsIDB4ODc2NSwgMHg0QTE1LCAweDg3NjcsIDB4ODc3OSwgMHg0QTNCLAorICAgIDB4ODg0MCwgMHg4ODU1LCAweDQ0QzksIDB4ODg1NiwgMHg4ODdFLCAweDQ5NjEsIDB4ODhBMSwgMHg4OEE4LCAweDQ5OEEsCisgICAgMHg4OEE5LCAweDg4QUEsIDB4NDk5QywgMHg4OTQwLCAweDg5NDEsIDB4NDUzNCwgMHg4OTQzLCAweDg5NDMsIDB4NDUzNiwKKyAgICAweDg5NDYsIDB4ODk0OSwgMHg0NTM3LCAweDg5NEMsIDB4ODk0QywgMHg0NTNCLCAweDg5NEQsIDB4ODk0RCwgMHg0M0MzLAorICAgIDB4ODk0RSwgMHg4OTUwLCAweDQ1M0MsIDB4ODk1MSwgMHg4OTUxLCAweDQzOUEsIDB4ODk1MiwgMHg4OTdFLCAweDQ1M0YsCisgICAgMHg4OUExLCAweDg5QTUsIDB4NDU2QywgMHg4OUE2LCAweDg5QTYsIDB4NDNBMiwgMHg4OUFCLCAweDg5QUIsIDB4NDNFQywKKyAgICAweDg5QUMsIDB4ODlBQywgMHg0NTcxLCAweDg5QUQsIDB4ODlBRCwgMHg0M0VCLCAweDg5QUUsIDB4ODlBRSwgMHg0NTcyLAorICAgIDB4ODlCMCwgMHg4OUIyLCAweDQ1NzMsIDB4ODlCNSwgMHg4OUJGLCAweDQ1NzYsIDB4ODlDMSwgMHg4OUMzLCAweDQ1ODEsCisgICAgMHg4OUM1LCAweDg5Q0UsIDB4NDU4NCwgMHg4OUNGLCAweDg5Q0YsIDB4NDNCQywgMHg4OUQwLCAweDg5RDgsIDB4NDU4RSwKKyAgICAweDg5RDksIDB4ODlEOSwgMHg0MzlDLCAweDg5REEsIDB4ODlEQSwgMHg0NTk3LCAweDg5REIsIDB4ODlEQiwgMHg0MzlFLAorICAgIDB4ODlEQywgMHg4OURDLCAweDQ1OTgsIDB4ODlERCwgMHg4OURELCAweDQzOUYsIDB4ODlERSwgMHg4OUUwLCAweDQ1OTksCisgICAgMHg4OUUxLCAweDg5RTEsIDB4NDNBMSwgMHg4OUUyLCAweDg5RTIsIDB4NDU5QywgMHg4OUUzLCAweDg5RTMsIDB4NDNBMywKKyAgICAweDg5RTQsIDB4ODlFOSwgMHg0NTlELCAweDg5RUEsIDB4ODlFQiwgMHg0M0E1LCAweDg5RUMsIDB4ODlGOSwgMHg0NUEzLAorICAgIDB4ODlGQSwgMHg4OUZBLCAweDQzQTksIDB4ODlGQiwgMHg4OUZFLCAweDQ1QjEsIDB4OEE0MCwgMHg4QTQwLCAweDQ1QjUsCisgICAgMHg4QTQxLCAweDhBNDEsIDB4NDMwOSwgMHg4QTQzLCAweDhBNEMsIDB4NDMwQiwgMHg4QTRELCAweDhBNEQsIDB4NDVCNiwKKyAgICAweDhBNEUsIDB4OEE1OSwgMHg0MzE2LCAweDhBNUEsIDB4OEE1QSwgMHg0NUI3LCAweDhBNUIsIDB4OEE1RCwgMHg0MzIzLAorICAgIDB4OEE1RSwgMHg4QTVFLCAweDQ1QjgsIDB4OEE1RiwgMHg4QTYyLCAweDQzMjcsIDB4OEE2NCwgMHg4QTcwLCAweDQzMkMsCisgICAgMHg4QTcxLCAweDhBNzEsIDB4NDVCOSwgMHg4QTcyLCAweDhBNzQsIDB4NDMzQSwgMHg4QTc2LCAweDhBNzYsIDB4NDMzRSwKKyAgICAweDhBNzcsIDB4OEE3NywgMHg0NUJBLCAweDhBNzgsIDB4OEE3OSwgMHg0MzQwLCAweDhBN0EsIDB4OEE3QSwgMHg0NUJCLAorICAgIDB4OEE3QiwgMHg4QTdCLCAweDQzNDMsIDB4OEE3QywgMHg4QTdDLCAweDQ1QkMsIDB4OEE3RCwgMHg4QTdELCAweDQzNDUsCisgICAgMHg4QTdFLCAweDhBN0UsIDB4NDVCRCwgMHg4QUExLCAweDhBQTcsIDB4NDM0NywgMHg4QUE4LCAweDhBQTgsIDB4NDVCRSwKKyAgICAweDhBQTksIDB4OEFBQSwgMHg0MzRGLCAweDhBQUMsIDB4OEFCMCwgMHg0MzUyLCAweDhBQjIsIDB4OEFCNSwgMHg0MzU4LAorICAgIDB4OEFCNiwgMHg4QUI2LCAweDQ1QkYsIDB4OEFCNywgMHg4QUI3LCAweDQzNUQsIDB4OEFCOCwgMHg4QUI4LCAweDQ1QzAsCisgICAgMHg4QUI5LCAweDhBQjksIDB4NDM1RiwgMHg4QUJCLCAweDhBQzcsIDB4NDM2MSwgMHg4QUM5LCAweDhBQ0IsIDB4NDM2RiwKKyAgICAweDhBQ0MsIDB4OEFDQywgMHg0NUMxLCAweDhBQ0UsIDB4OEFENSwgMHg0Mzc0LCAweDhBRDYsIDB4OEFENywgMHg0NUMyLAorICAgIDB4OEFEOCwgMHg4QURDLCAweDQzN0UsIDB4OEFERiwgMHg4QUU1LCAweDQzODUsIDB4OEFFNiwgMHg4QUU2LCAweDQ1QzQsCisgICAgMHg4QUU3LCAweDhBRTcsIDB4NDNEQiwgMHg4QUU4LCAweDhBRjQsIDB4NDVDNSwgMHg4QUY2LCAweDhBRkUsIDB4NDVEMiwKKyAgICAweDhCNDAsIDB4OEI0MCwgMHg0NURCLCAweDhCNDEsIDB4OEI0MiwgMHg0MzhDLCAweDhCNDMsIDB4OEI0NCwgMHg0NURDLAorICAgIDB4OEI0NSwgMHg4QjQ1LCAweDQzOEUsIDB4OEI0NiwgMHg4QjQ2LCAweDQ1REUsIDB4OEI0NywgMHg4QjQ3LCAweDQzOEYsCisgICAgMHg4QjQ4LCAweDhCNDgsIDB4NDVERiwgMHg4QjQ5LCAweDhCNDksIDB4NDM5MCwgMHg4QjRBLCAweDhCNEEsIDB4NDVFMCwKKyAgICAweDhCNEIsIDB4OEI0QiwgMHg0MzkxLCAweDhCNEMsIDB4OEI0QywgMHg0NUUxLCAweDhCNEQsIDB4OEI1MCwgMHg0MzkyLAorICAgIDB4OEI1MSwgMHg4QjUzLCAweDQ1RTIsIDB4OEI1NSwgMHg4QjU3LCAweDQ1RTUsIDB4OEI1OCwgMHg4QjU4LCAweDQzOTcsCisgICAgMHg4QjU5LCAweDhCNTksIDB4NDVFOCwgMHg4QjVBLCAweDhCNUEsIDB4NDM5OCwgMHg4QjVCLCAweDhCNUIsIDB4NDNDNCwKKyAgICAweDhCNUMsIDB4OEI2MCwgMHg0NUU5LCAweDhCNjEsIDB4OEI2MSwgMHg0M0E3LCAweDhCNjIsIDB4OEI2NywgMHg0NUVFLAorICAgIDB4OEI2OCwgMHg4QjY4LCAweDQzQUMsIDB4OEI2OSwgMHg4QjdFLCAweDQ1RjQsIDB4OEJBMSwgMHg4QkJGLCAweDQ2MEEsCisgICAgMHg4QkMwLCAweDhCREMsIDB4NDRERiwgMHg4QkRFLCAweDhCRkQsIDB4NDRGQywgMHg4QzQwLCAweDhDNjEsIDB4NDlBMSwKKyAgICAweDhDNjIsIDB4OEM2MiwgMHg0QTRFLCAweDhDNjMsIDB4OEM3RSwgMHg0OUMzLCAweDhDQTEsIDB4OENBNSwgMHg0OURGLAorICAgIDB4OENBNywgMHg4Q0M1LCAweDQ5RTQsIDB4OENDOSwgMHg4Q0NDLCAweDRBMDMsIDB4OENDRSwgMHg4Q0RBLCAweDRBMDcsCisgICAgMHg4Q0RCLCAweDhDREIsIDB4NEE0RiwgMHg4Q0RDLCAweDhDREMsIDB4NEExNCwgMHg4Q0RELCAweDhDRTQsIDB4NEE1MCwKKyAgICAweDhDRTYsIDB4OENGRSwgMHg0QTU4LCAweDhENDAsIDB4OEQ0MCwgMHg0QTcxLCAweDhENDIsIDB4OEQ1RiwgMHg0QTcyLAorICAgIDB4OEQ2MCwgMHg4RDYxLCAweDQ2MjksIDB4OEQ2MiwgMHg4RDYyLCAweDQzQkEsIDB4OEQ2MywgMHg4RDY3LCAweDQ2MkIsCisgICAgMHg4RDY4LCAweDhENjgsIDB4NDNCQiwgMHg4RDY5LCAweDhENjksIDB4NDNBMCwgMHg4RDZBLCAweDhENkEsIDB4NDNCRCwKKyAgICAweDhENkIsIDB4OEQ2RCwgMHg0NjMwLCAweDhENkUsIDB4OEQ2RSwgMHg0M0JFLCAweDhENkYsIDB4OEQ3NSwgMHg0NjMzLAorICAgIDB4OEQ3NiwgMHg4RDc2LCAweDQzQkYsIDB4OEQ3NywgMHg4RDc5LCAweDQ2M0EsIDB4OEQ3QSwgMHg4RDdBLCAweDQzQzAsCisgICAgMHg4RDdCLCAweDhEN0IsIDB4NDYzRCwgMHg4RDdDLCAweDhEN0MsIDB4NDNDMSwgMHg4RDdELCAweDhEN0UsIDB4NDYzRSwKKyAgICAweDhEQTEsIDB4OERBNCwgMHg0NjQwLCAweDhEQTUsIDB4OERBNSwgMHg0M0MyLCAweDhEQTYsIDB4OERBNywgMHg0NjQ0LAorICAgIDB4OERBOCwgMHg4REE4LCAweDQzQjksIDB4OERBOSwgMHg4REE5LCAweDQzQUQsIDB4OERBQSwgMHg4REI1LCAweDQ2NDYsCisgICAgMHg4REI2LCAweDhEQjYsIDB4NDNDNywgMHg4REI3LCAweDhEQzIsIDB4NDY1MiwgMHg4REMzLCAweDhEQzMsIDB4NDNDOCwKKyAgICAweDhEQzQsIDB4OERGOSwgMHg0NjVFLCAweDhERkEsIDB4OERGQSwgMHg0M0Y5LCAweDhERkIsIDB4OERGRSwgMHg0Njk0LAorICAgIDB4OEU0MCwgMHg4RTQ0LCAweDM3MkIsIDB4OEU0NSwgMHg4RTQ1LCAweDQ2OTgsIDB4OEU0NiwgMHg4RTY4LCAweDM3MzAsCisgICAgMHg4RTY5LCAweDhFNjksIDB4MTA1NSwgMHg4RTZBLCAweDhFNkEsIDB4Mzc1NCwgMHg4RTZCLCAweDhFNkMsIDB4NDY5OSwKKyAgICAweDhFNkQsIDB4OEU2RSwgMHgzNzU2LCAweDhFNkYsIDB4OEU2RiwgMHgyREU4LCAweDhFNzAsIDB4OEU3NSwgMHgzNzU5LAorICAgIDB4OEU3NiwgMHg4RTc2LCAweDQ2OUIsIDB4OEU3NywgMHg4RTdBLCAweDM3NUYsIDB4OEU3QiwgMHg4RTdCLCAweDQ2OUMsCisgICAgMHg4RTdDLCAweDhFN0QsIDB4Mzc2NCwgMHg4RTdFLCAweDhFN0UsIDB4MDEyMSwgMHg4RUExLCAweDhFQTUsIDB4Mzc2NiwKKyAgICAweDhFQTYsIDB4OEVBNiwgMHg0NjlELCAweDhFQTcsIDB4OEVBQSwgMHgzNzZCLCAweDhFQUIsIDB4OEVBQiwgMHgxMDZCLAorICAgIDB4OEVBQywgMHg4RUIzLCAweDM3NzAsIDB4OEVCNCwgMHg4RUI0LCAweDEzMjYsIDB4OEVCNSwgMHg4RUI3LCAweDM3NzksCisgICAgMHg4RUI4LCAweDhFQjgsIDB4NDY5RSwgMHg4RUI5LCAweDhFQzgsIDB4Mzc3RCwgMHg4RUM5LCAweDhFQzksIDB4NDY5RiwKKyAgICAweDhFQ0EsIDB4OEVDQywgMHgzNzhELCAweDhFQ0QsIDB4OEVDRCwgMHgwNjZCLCAweDhFQ0UsIDB4OEVDRiwgMHgzNzkxLAorICAgIDB4OEVEMCwgMHg4RUQwLCAweDEzMkUsIDB4OEVEMSwgMHg4RUU0LCAweDM3OTQsIDB4OEVFNSwgMHg4RUU1LCAweDQ2QTAsCisgICAgMHg4RUU2LCAweDhFRUUsIDB4MzdBOCwgMHg4RUVGLCAweDhFRUYsIDB4NDZBMSwgMHg4RUYwLCAweDhFRjUsIDB4MzdCMSwKKyAgICAweDhFRjYsIDB4OEVGNiwgMHg0NkEyLCAweDhFRjcsIDB4OEVGRSwgMHgzN0I4LCAweDhGNDAsIDB4OEY1NiwgMHgzN0MwLAorICAgIDB4OEY1NywgMHg4RjU3LCAweDBEMzUsIDB4OEY1OCwgMHg4RjU4LCAweDM3RDgsIDB4OEY1OSwgMHg4RjU5LCAweDQ2QTMsCisgICAgMHg4RjVBLCAweDhGNUUsIDB4MzdEOSwgMHg4RjVGLCAweDhGNUYsIDB4NDZBNCwgMHg4RjYwLCAweDhGNjYsIDB4MzdERSwKKyAgICAweDhGNjcsIDB4OEY2NywgMHg0NkE1LCAweDhGNjgsIDB4OEY2OCwgMHgzN0U1LCAweDhGNjksIDB4OEY2OSwgMHgyN0MyLAorICAgIDB4OEY2QSwgMHg4RjZELCAweDM3RTcsIDB4OEY2RSwgMHg4RjZFLCAweDIyQUQsIDB4OEY2RiwgMHg4Rjc4LCAweDM3RUMsCisgICAgMHg4Rjc5LCAweDhGNzksIDB4NDZBNiwgMHg4RjdBLCAweDhGN0UsIDB4MzdGNywgMHg4RkExLCAweDhGQUYsIDB4MzdGQywKKyAgICAweDhGQjAsIDB4OEZCMCwgMHg0NkE3LCAweDhGQjEsIDB4OEZDNCwgMHgzODBDLCAweDhGQzUsIDB4OEZDNSwgMHg0NkE4LAorICAgIDB4OEZDNiwgMHg4RkM2LCAweDM4MjAsIDB4OEZDNywgMHg4RkM3LCAweDQ2QTksIDB4OEZDOCwgMHg4RkM5LCAweDM4MjEsCisgICAgMHg4RkNBLCAweDhGQ0EsIDB4NDZBQSwgMHg4RkNCLCAweDhGQ0IsIDB4MTM0QywgMHg4RkNDLCAweDhGQ0MsIDB4M0ZGOSwKKyAgICAweDhGQ0QsIDB4OEZEOSwgMHgzODI2LCAweDhGREEsIDB4OEZEQSwgMHg0NkFCLCAweDhGREIsIDB4OEZFMiwgMHgzODMzLAorICAgIDB4OEZFMywgMHg4RkUzLCAweDQ2QUMsIDB4OEZFNCwgMHg4RkZCLCAweDM4M0MsIDB4OEZGQywgMHg4RkZDLCAweDQ2QUQsCisgICAgMHg4RkZELCAweDhGRkQsIDB4Mzg1NCwgMHg4RkZFLCAweDhGRkUsIDB4MDlDRSwgMHg5MDQwLCAweDkwNTQsIDB4Mzg1NiwKKyAgICAweDkwNTUsIDB4OTA1NSwgMHg0NkFFLCAweDkwNTYsIDB4OTA1QiwgMHgzODZDLCAweDkwNUMsIDB4OTA1RSwgMHg0NkFGLAorICAgIDB4OTA1RiwgMHg5MDZDLCAweDM4NzMsIDB4OTA2RCwgMHg5MDZELCAweDBCQzcsIDB4OTA2RSwgMHg5MDZFLCAweDM4ODIsCisgICAgMHg5MDZGLCAweDkwNkYsIDB4NDZCMiwgMHg5MDcwLCAweDkwNzksIDB4Mzg4MywgMHg5MDdBLCAweDkwN0EsIDB4MzZFOSwKKyAgICAweDkwN0IsIDB4OTA3RSwgMHgzODhELCAweDkwQTEsIDB4OTBBNSwgMHgzODkxLCAweDkwQTYsIDB4OTBBNiwgMHg0NkIzLAorICAgIDB4OTBBNywgMHg5MEI3LCAweDM4OTYsIDB4OTBCOCwgMHg5MEI4LCAweDQ2QjQsIDB4OTBCOSwgMHg5MERCLCAweDM4QTcsCisgICAgMHg5MERDLCAweDkwREMsIDB4MTM5MSwgMHg5MERELCAweDkwRjAsIDB4MzhDQiwgMHg5MEYxLCAweDkwRjEsIDB4MTZBNCwKKyAgICAweDkwRjIsIDB4OTBGRSwgMHgzOEUwLCAweDkxNDAsIDB4OTE2NCwgMHgzOEVELCAweDkxNjUsIDB4OTE2NSwgMHg0NkI1LAorICAgIDB4OTE2NiwgMHg5MTZELCAweDM5MTIsIDB4OTE2RSwgMHg5MTZFLCAweDQ2QjYsIDB4OTE2RiwgMHg5MTdELCAweDM5MUEsCisgICAgMHg5MTdFLCAweDkxN0UsIDB4NDZCNywgMHg5MUExLCAweDkxQTEsIDB4MzkyOSwgMHg5MUEyLCAweDkxQTIsIDB4NDZCOCwKKyAgICAweDkxQTMsIDB4OTFCRSwgMHgzOTJBLCAweDkxQkYsIDB4OTFCRiwgMHgzMDcyLCAweDkxQzAsIDB4OTFDNywgMHgzOTQ3LAorICAgIDB4OTFDOCwgMHg5MUM4LCAweDQ2QjksIDB4OTFDOSwgMHg5MUZFLCAweDM5NTAsIDB4OTI0MCwgMHg5MjQzLCAweDM5ODYsCisgICAgMHg5MjQ0LCAweDkyNDQsIDB4Mzk4OCwgMHg5MjQ1LCAweDkyNjMsIDB4Mzk4QiwgMHg5MjY0LCAweDkyNjQsIDB4NDZCQSwKKyAgICAweDkyNjUsIDB4OTI2QywgMHgzOUFCLCAweDkyNkQsIDB4OTI2RCwgMHg0NkJCLCAweDkyNkUsIDB4OTI3RSwgMHgzOUI0LAorICAgIDB4OTJBMSwgMHg5MkFFLCAweDM5QzUsIDB4OTJBRiwgMHg5MkIwLCAweDAxMTksIDB4OTJCMSwgMHg5MkIxLCAweDAxMUMsCisgICAgMHg5MkIyLCAweDkyQjIsIDB4MDExQiwgMHg5MkIzLCAweDkyQzcsIDB4MzlEMywgMHg5MkM4LCAweDkyQzgsIDB4M0ZBQywKKyAgICAweDkyQzksIDB4OTJEMCwgMHgzOUU5LCAweDkyRDEsIDB4OTJEMSwgMHgyOTdDLCAweDkyRDIsIDB4OTJFNCwgMHgzOUYyLAorICAgIDB4OTJFNSwgMHg5MkU1LCAweDQ2QkMsIDB4OTJFNiwgMHg5MkYxLCAweDNBMDUsIDB4OTJGMiwgMHg5MkYyLCAweDQ2QkQsCisgICAgMHg5MkYzLCAweDkyRkUsIDB4M0ExMSwgMHg5MzQwLCAweDkzNjcsIDB4M0ExRCwgMHg5MzY4LCAweDkzNjgsIDB4NDZCRSwKKyAgICAweDkzNjksIDB4OTM3RSwgMHgzQTQ1LCAweDkzQTEsIDB4OTNBOSwgMHgzQTVCLCAweDkzQUEsIDB4OTNBQSwgMHg0NkJGLAorICAgIDB4OTNBQiwgMHg5M0MxLCAweDNBNjQsIDB4OTNDMiwgMHg5M0MyLCAweDQ2QzAsIDB4OTNDMywgMHg5M0U0LCAweDNBN0IsCisgICAgMHg5M0U1LCAweDkzRTUsIDB4NDZDMSwgMHg5M0U2LCAweDkzRTcsIDB4M0E5RCwgMHg5M0U4LCAweDkzRTgsIDB4NDZDMiwKKyAgICAweDkzRTksIDB4OTNFQSwgMHgzQUEwLCAweDkzRUIsIDB4OTNFQiwgMHg0NkMzLCAweDkzRUMsIDB4OTNGRSwgMHgzQUEyLAorICAgIDB4OTQ0MCwgMHg5NDQ1LCAweDNBQjUsIDB4OTQ0NiwgMHg5NDQ2LCAweDQ2QzQsIDB4OTQ0NywgMHg5NDQ3LCAweDFEMDYsCisgICAgMHg5NDQ4LCAweDk0NzgsIDB4M0FCQywgMHg5NDc5LCAweDk0NzksIDB4NDZDNSwgMHg5NDdBLCAweDk0N0UsIDB4M0FFRSwKKyAgICAweDk0QTEsIDB4OTRDOSwgMHgzQUYzLCAweDk0Q0EsIDB4OTRDQSwgMHgyOUExLCAweDk0Q0IsIDB4OTRDQiwgMHg0NkM2LAorICAgIDB4OTRDQywgMHg5NEZFLCAweDNCMUUsIDB4OTU0MCwgMHg5NTRDLCAweDNCNTEsIDB4OTU0RCwgMHg5NTRELCAweDQ2QzcsCisgICAgMHg5NTRFLCAweDk1NTksIDB4M0I1RSwgMHg5NTVBLCAweDk1NUEsIDB4NDZDOCwgMHg5NTVCLCAweDk1NUUsIDB4M0I2QSwKKyAgICAweDk1NUYsIDB4OTU1RiwgMHg0NkM5LCAweDk1NjAsIDB4OTU3RSwgMHgzQjZGLCAweDk1QTEsIDB4OTVDNSwgMHgzQjhFLAorICAgIDB4OTVDNiwgMHg5NUM2LCAweDQ2Q0EsIDB4OTVDNywgMHg5NUQ4LCAweDNCQjMsIDB4OTVEOSwgMHg5NUQ5LCAweDE4MUIsCisgICAgMHg5NURBLCAweDk1RkUsIDB4M0JDNiwgMHg5NjQwLCAweDk2NDMsIDB4M0JFQiwgMHg5NjQ0LCAweDk2NDQsIDB4M0UyRiwKKyAgICAweDk2NDUsIDB4OTY1MCwgMHgzQkYwLCAweDk2NTEsIDB4OTY1MSwgMHg0NkNCLCAweDk2NTIsIDB4OTY2OSwgMHgzQkZELAorICAgIDB4OTY2QSwgMHg5NjZBLCAweDQ2Q0MsIDB4OTY2QiwgMHg5NjdFLCAweDNDMTYsIDB4OTZBMSwgMHg5NkQzLCAweDNDMkEsCisgICAgMHg5NkQ0LCAweDk2RDQsIDB4NDZDRCwgMHg5NkQ1LCAweDk2RUMsIDB4M0M1RCwgMHg5NkVELCAweDk2RUQsIDB4M0M3NiwKKyAgICAweDk2RUUsIDB4OTZGQiwgMHgzQzc2LCAweDk2RkMsIDB4OTZGQywgMHgyQjI0LCAweDk2RkQsIDB4OTZGRSwgMHgzQzg1LAorICAgIDB4OTc0MCwgMHg5NzdFLCAweDNDODcsIDB4OTdBMSwgMHg5N0ZFLCAweDNDQzYsIDB4OTg0MCwgMHg5ODQzLCAweDNEMjQsCisgICAgMHg5ODQ0LCAweDk4NDUsIDB4NDZDRSwgMHg5ODQ2LCAweDk4NkUsIDB4M0QyQSwgMHg5ODZGLCAweDk4NkYsIDB4NDZEMCwKKyAgICAweDk4NzAsIDB4OTg3NCwgMHgzRDU0LCAweDk4NzUsIDB4OTg3NiwgMHg0NkQxLCAweDk4NzcsIDB4OTg3NywgMHgzRDU5LAorICAgIDB4OTg3OCwgMHg5ODc5LCAweDQ2RDMsIDB4OTg3QSwgMHg5ODdBLCAweDNENUEsIDB4OTg3QiwgMHg5ODdFLCAweDQ2RDUsCisgICAgMHg5OEExLCAweDk4QTIsIDB4NDZEOSwgMHg5OEEzLCAweDk4QTMsIDB4M0Q1QiwgMHg5OEE0LCAweDk4QUUsIDB4NDZEQiwKKyAgICAweDk4QUYsIDB4OThBRiwgMHgzRDVDLCAweDk4QjAsIDB4OThCMywgMHg0NkU2LCAweDk4QjQsIDB4OThCNCwgMHg0M0NBLAorICAgIDB4OThCNSwgMHg5OEI1LCAweDQ2RUEsIDB4OThCNiwgMHg5OEI2LCAweDNENUQsIDB4OThCNywgMHg5OEI3LCAweDQ2RUIsCisgICAgMHg5OEI4LCAweDk4QjgsIDB4NDNDQywgMHg5OEI5LCAweDk4QjksIDB4M0Q1RSwgMHg5OEJBLCAweDk4QkEsIDB4NDZFQywKKyAgICAweDk4QkIsIDB4OThCQiwgMHg0M0ZBLCAweDk4QkMsIDB4OThCQywgMHg0NkVELCAweDk4QkQsIDB4OThCRSwgMHgzRDVGLAorICAgIDB4OThCRiwgMHg5OEMxLCAweDQ2RUUsIDB4OThDMiwgMHg5OEMyLCAweDNENjEsIDB4OThDMywgMHg5OEMzLCAweDQ2RjEsCisgICAgMHg5OEM0LCAweDk4QzQsIDB4M0Q2MiwgMHg5OEM1LCAweDk4QzUsIDB4NDZGMiwgMHg5OEM2LCAweDk4QzcsIDB4M0Q2MywKKyAgICAweDk4QzgsIDB4OThEMSwgMHg0NkYzLCAweDk4RDIsIDB4OThEMiwgMHg0M0NELCAweDk4RDMsIDB4OThENywgMHg0NkZELAorICAgIDB4OThEOCwgMHg5OEQ5LCAweDQzQ0UsIDB4OThEQSwgMHg5OERBLCAweDQ3MDIsIDB4OThEQiwgMHg5OERCLCAweDQzRDEsCisgICAgMHg5OERDLCAweDk4REUsIDB4NDcwMywgMHg5OERGLCAweDk4REYsIDB4NDNENCwgMHg5OEUwLCAweDk4RTIsIDB4NDcwNiwKKyAgICAweDk4RTMsIDB4OThFMywgMHgzRDY1LCAweDk4RTQsIDB4OThFNiwgMHg0NzA5LCAweDk4RTcsIDB4OThFNywgMHgzRDY2LAorICAgIDB4OThFOCwgMHg5OEVDLCAweDQ3MEMsIDB4OThFRCwgMHg5OEVELCAweDNENjcsIDB4OThFRSwgMHg5OEVGLCAweDQ3MTEsCisgICAgMHg5OEYwLCAweDk4RjAsIDB4M0Q2OCwgMHg5OEYxLCAweDk4RjEsIDB4NDcxMywgMHg5OEYyLCAweDk4RjIsIDB4M0Q2OSwKKyAgICAweDk4RjMsIDB4OThGMywgMHg0NzE0LCAweDk4RjQsIDB4OThGNSwgMHg0M0Q1LCAweDk4RjYsIDB4OThGQiwgMHg0NzE1LAorICAgIDB4OThGQywgMHg5OEZDLCAweDNENkEsIDB4OThGRCwgMHg5OEZELCAweDQ3MUIsIDB4OThGRSwgMHg5OEZFLCAweDQzRDcsCisgICAgMHg5OTQwLCAweDk5NDEsIDB4NDcxQywgMHg5OTQyLCAweDk5NDIsIDB4NDNGQywgMHg5OTQzLCAweDk5NDMsIDB4M0Q2QiwKKyAgICAweDk5NDQsIDB4OTk0NCwgMHg0NzFFLCAweDk5NDUsIDB4OTk0NSwgMHgzRDZDLCAweDk5NDYsIDB4OTk0NiwgMHg0NzFGLAorICAgIDB4OTk0NywgMHg5OTQ3LCAweDQzRDgsIDB4OTk0OCwgMHg5OTRFLCAweDQ3MjAsIDB4OTk0RiwgMHg5OTRGLCAweDNENkQsCisgICAgMHg5OTUwLCAweDk5NTMsIDB4NDcyNywgMHg5OTU0LCAweDk5NTQsIDB4NDNEOSwgMHg5OTU1LCAweDk5NUIsIDB4NDcyQiwKKyAgICAweDk5NUMsIDB4OTk1QywgMHg0M0RBLCAweDk5NUQsIDB4OTk2MywgMHg0NzMyLCAweDk5NjQsIDB4OTk2NCwgMHg0M0RDLAorICAgIDB4OTk2NSwgMHg5OTY5LCAweDQ3MzksIDB4OTk2QSwgMHg5OTZBLCAweDNENkUsIDB4OTk2QiwgMHg5OTZELCAweDQ3M0UsCisgICAgMHg5OTZFLCAweDk5NkUsIDB4M0Q2RiwgMHg5OTZGLCAweDk5NzQsIDB4NDc0MSwgMHg5OTc1LCAweDk5NzUsIDB4M0Q3MCwKKyAgICAweDk5NzYsIDB4OTk3NywgMHg0NzQ3LCAweDk5NzgsIDB4OTk3OCwgMHgzRDcxLCAweDk5NzksIDB4OTk3RSwgMHg0NzQ5LAorICAgIDB4OTlBMSwgMHg5OUExLCAweDQ3NEYsIDB4OTlBMiwgMHg5OUEyLCAweDNENzIsIDB4OTlBMywgMHg5OUEzLCAweDQ3NTAsCisgICAgMHg5OUE0LCAweDk5QTQsIDB4NDNDNSwgMHg5OUE1LCAweDk5QTUsIDB4NDc1MSwgMHg5OUE2LCAweDk5QTYsIDB4NDNDNiwKKyAgICAweDk5QTcsIDB4OTlBRCwgMHg0NzUyLCAweDk5QUUsIDB4OTlBRSwgMHgzRDczLCAweDk5QUYsIDB4OTlCMSwgMHg0NzU5LAorICAgIDB4OTlCMiwgMHg5OUIyLCAweDQzREUsIDB4OTlCMywgMHg5OUI1LCAweDQ3NUMsIDB4OTlCNiwgMHg5OUI2LCAweDNENzQsCisgICAgMHg5OUI3LCAweDk5QjksIDB4NDc1RiwgMHg5OUJBLCAweDk5QkEsIDB4M0Q3NSwgMHg5OUJCLCAweDk5QzksIDB4NDc2MiwKKyAgICAweDk5Q0EsIDB4OTlDQSwgMHg0M0UwLCAweDk5Q0IsIDB4OTlDQywgMHg0NzcxLCAweDk5Q0QsIDB4OTlDRCwgMHg0M0UyLAorICAgIDB4OTlDRSwgMHg5OUQyLCAweDQ3NzMsIDB4OTlEMywgMHg5OUQzLCAweDQzRTMsIDB4OTlENCwgMHg5OUQ1LCAweDQ3NzgsCisgICAgMHg5OUQ2LCAweDk5RDYsIDB4NDNFNSwgMHg5OUQ3LCAweDk5REUsIDB4NDc3QSwgMHg5OURGLCAweDk5REYsIDB4NDNERiwKKyAgICAweDk5RTAsIDB4OTlFMSwgMHg0NzgyLCAweDk5RTIsIDB4OTlFMiwgMHgzRDc2LCAweDk5RTMsIDB4OTlFMywgMHg0Nzg0LAorICAgIDB4OTlFNCwgMHg5OUU0LCAweDQzQUIsIDB4OTlFNSwgMHg5OUU1LCAweDQ3ODUsIDB4OTlFNiwgMHg5OUU2LCAweDQzRTcsCisgICAgMHg5OUU3LCAweDk5RTcsIDB4NDc4NiwgMHg5OUU4LCAweDk5RTgsIDB4NDNFOSwgMHg5OUU5LCAweDk5RUUsIDB4NDc4NywKKyAgICAweDk5RUYsIDB4OTlFRiwgMHg0M0ZELCAweDk5RjAsIDB4OTlGMywgMHg0NzhELCAweDk5RjQsIDB4OTlGNCwgMHgzRDc3LAorICAgIDB4OTlGNSwgMHg5OUZFLCAweDQ3OTEsIDB4OUE0MCwgMHg5QTQ5LCAweDQ3OUIsIDB4OUE0QSwgMHg5QTRBLCAweDNENzgsCisgICAgMHg5QTRCLCAweDlBNEIsIDB4NDdBNSwgMHg5QTRDLCAweDlBNEMsIDB4M0Q3OSwgMHg5QTRELCAweDlBNTgsIDB4NDdBNiwKKyAgICAweDlBNTksIDB4OUE1OSwgMHgzRDdBLCAweDlBNUEsIDB4OUE1RSwgMHg0N0IyLCAweDlBNUYsIDB4OUE1RiwgMHg0M0FGLAorICAgIDB4OUE2MCwgMHg5QTYwLCAweDQ3QjcsIDB4OUE2MSwgMHg5QTYxLCAweDNEN0IsIDB4OUE2MiwgMHg5QTY1LCAweDQ3QjgsCisgICAgMHg5QTY2LCAweDlBNjYsIDB4NDNFRCwgMHg5QTY3LCAweDlBNjcsIDB4NDdCQywgMHg5QTY4LCAweDlBNjgsIDB4M0Q3QywKKyAgICAweDlBNjksIDB4OUE2OSwgMHg0M0VFLCAweDlBNkEsIDB4OUE2QSwgMHg0N0JELCAweDlBNkIsIDB4OUE2QiwgMHg0M0ZGLAorICAgIDB4OUE2QywgMHg5QTcyLCAweDQ3QkUsIDB4OUE3MywgMHg5QTczLCAweDNEN0QsIDB4OUE3NCwgMHg5QTc0LCAweDQ3QzUsCisgICAgMHg5QTc1LCAweDlBNzUsIDB4NDNGMSwgMHg5QTc2LCAweDlBN0QsIDB4NDdDNiwgMHg5QTdFLCAweDlBN0UsIDB4M0Q3RSwKKyAgICAweDlBQTEsIDB4OUFBMiwgMHg0N0NFLCAweDlBQTMsIDB4OUFBMywgMHg0M0YzLCAweDlBQTQsIDB4OUFBNCwgMHg0N0QwLAorICAgIDB4OUFBNSwgMHg5QUE1LCAweDQzRjIsIDB4OUFBNiwgMHg5QUE4LCAweDQ3RDEsIDB4OUFBOSwgMHg5QUE5LCAweDQzRjgsCisgICAgMHg5QUFBLCAweDlBQUEsIDB4NDNGNCwgMHg5QUFCLCAweDlBQjEsIDB4NDdENCwgMHg5QUIyLCAweDlBQjIsIDB4M0Q3RiwKKyAgICAweDlBQjMsIDB4OUFCNiwgMHg0N0RCLCAweDlBQjcsIDB4OUFCNywgMHgzRDgwLCAweDlBQjgsIDB4OUFCOCwgMHg0N0RGLAorICAgIDB4OUFCOSwgMHg5QUI5LCAweDNEODEsIDB4OUFCQSwgMHg5QUJBLCAweDQ3RTAsIDB4OUFCQiwgMHg5QUJCLCAweDNEODIsCisgICAgMHg5QUJDLCAweDlBQkMsIDB4NDdFMSwgMHg5QUJELCAweDlBQkQsIDB4NDNCNywgMHg5QUJFLCAweDlBQzYsIDB4NDdFMiwKKyAgICAweDlBQzcsIDB4OUFDNywgMHgzRDgzLCAweDlBQzgsIDB4OUFDRiwgMHg0N0VCLCAweDlBRDAsIDB4OUFEMCwgMHgzRDg0LAorICAgIDB4OUFEMSwgMHg5QUQxLCAweDQ3RjMsIDB4OUFEMiwgMHg5QUQyLCAweDNEODUsIDB4OUFEMywgMHg5QUQ4LCAweDQ3RjQsCisgICAgMHg5QUQ5LCAweDlBREIsIDB4M0Q4NiwgMHg5QURDLCAweDlBRTEsIDB4NDdGQSwgMHg5QUUyLCAweDlBRTIsIDB4M0Q4OSwKKyAgICAweDlBRTMsIDB4OUFFMywgMHg0ODAwLCAweDlBRTQsIDB4OUFFNCwgMHgzRDhBLCAweDlBRTUsIDB4OUFFNywgMHg0ODAxLAorICAgIDB4OUFFOCwgMHg5QUU4LCAweDNEOEIsIDB4OUFFOSwgMHg5QUU5LCAweDQzQjAsIDB4OUFFQSwgMHg5QUVELCAweDQ4MDQsCisgICAgMHg5QUVFLCAweDlBRUUsIDB4NDNCMiwgMHg5QUVGLCAweDlBRjEsIDB4NDgwOCwgMHg5QUYyLCAweDlBRjIsIDB4M0Q4QywKKyAgICAweDlBRjMsIDB4OUFGNSwgMHg0ODBCLCAweDlBRjYsIDB4OUFGNiwgMHgzRDhELCAweDlBRjcsIDB4OUFGQSwgMHg0ODBFLAorICAgIDB4OUFGQiwgMHg5QUZCLCAweDNEOEUsIDB4OUFGQywgMHg5QUZFLCAweDQ4MTIsIDB4OUI0MCwgMHg5QjQ1LCAweDQ4MTUsCisgICAgMHg5QjQ2LCAweDlCNDYsIDB4M0Q4RiwgMHg5QjQ3LCAweDlCNDksIDB4NDgxQiwgMHg5QjRBLCAweDlCNEEsIDB4M0Q5MCwKKyAgICAweDlCNEIsIDB4OUI1MywgMHg0ODFFLCAweDlCNTQsIDB4OUI1NCwgMHgzRDkyLCAweDlCNTUsIDB4OUI1NywgMHg0ODI3LAorICAgIDB4OUI1OCwgMHg5QjU4LCAweDNEOTMsIDB4OUI1OSwgMHg5QjU5LCAweDQ4MkEsIDB4OUI1QSwgMHg5QjVBLCAweDNEOTQsCisgICAgMHg5QjVCLCAweDlCNUIsIDB4NDgyQiwgMHg5QjVDLCAweDlCNUMsIDB4M0Q5NSwgMHg5QjVELCAweDlCNUQsIDB4NDgyQywKKyAgICAweDlCNUUsIDB4OUI1RiwgMHgzRDk2LCAweDlCNjAsIDB4OUI2MCwgMHg0ODJELCAweDlCNjIsIDB4OUI2RiwgMHg0ODJFLAorICAgIDB4OUI3MCwgMHg5QjczLCAweDNEOTgsIDB4OUI3NCwgMHg5Qjc1LCAweDQ4M0MsIDB4OUI3NiwgMHg5Qjc2LCAweDJGNTAsCisgICAgMHg5Qjc3LCAweDlCNzcsIDB4M0Q5RCwgMHg5Qjc4LCAweDlCNzgsIDB4MTcyNSwgMHg5Qjc5LCAweDlCN0EsIDB4NDgzRSwKKyAgICAweDlCN0IsIDB4OUI3QiwgMHgzMkVELCAweDlCN0MsIDB4OUI3QywgMHgzREEwLCAweDlCN0QsIDB4OUI3RCwgMHg0ODQwLAorICAgIDB4OUI3RSwgMHg5QjdFLCAweDNEQTEsIDB4OUJBMSwgMHg5QkExLCAweDNEQTIsIDB4OUJBMiwgMHg5QkEyLCAweDQ4NDEsCisgICAgMHg5QkEzLCAweDlCQTQsIDB4M0RBMywgMHg5QkE1LCAweDlCQTYsIDB4NDg0MiwgMHg5QkE3LCAweDlCQUEsIDB4M0RBNSwKKyAgICAweDlCQUIsIDB4OUJBQiwgMHg0ODQ0LCAweDlCQUMsIDB4OUJBQywgMHgzREE5LCAweDlCQUQsIDB4OUJBRSwgMHg0ODQ1LAorICAgIDB4OUJBRiwgMHg5QkFGLCAweDNEQUEsIDB4OUJCMCwgMHg5QkIxLCAweDQ4NDcsIDB4OUJCMiwgMHg5QkI5LCAweDNEQUIsCisgICAgMHg5QkJBLCAweDlCQkQsIDB4NDg0OSwgMHg5QkJFLCAweDlCQkUsIDB4M0RCMywgMHg5QkJGLCAweDlCQkYsIDB4NDg0RCwKKyAgICAweDlCQzAsIDB4OUJDNSwgMHgzREI0LCAweDlCQzYsIDB4OUJDNiwgMHgyQUQ5LCAweDlCQzcsIDB4OUJDOSwgMHg0ODRFLAorICAgIDB4OUJDQSwgMHg5QkNBLCAweDNEQkIsIDB4OUJDQiwgMHg5QkNCLCAweDQ4NTEsIDB4OUJDQywgMHg5QkNDLCAweDNEQkMsCisgICAgMHg5QkNELCAweDlCQ0QsIDB4NDg1MiwgMHg5QkNFLCAweDlCQ0UsIDB4NDNEMCwgMHg5QkNGLCAweDlCQ0YsIDB4NDg1MywKKyAgICAweDlCRDAsIDB4OUJEMSwgMHgzREJELCAweDlCRDIsIDB4OUJEMiwgMHg0ODU0LCAweDlCRDMsIDB4OUJEMywgMHgzREJGLAorICAgIDB4OUJENCwgMHg5QkQ0LCAweDQ4NTUsIDB4OUJENSwgMHg5QkQ1LCAweDNEQzAsIDB4OUJENiwgMHg5QkQ3LCAweDQ4NTYsCisgICAgMHg5QkQ4LCAweDlCREEsIDB4M0RDMSwgMHg5QkRCLCAweDlCREMsIDB4NDg1OCwgMHg5QkRELCAweDlCREQsIDB4M0RDNCwKKyAgICAweDlCREUsIDB4OUJERSwgMHgxQzE0LCAweDlCREYsIDB4OUJERiwgMHgzREM1LCAweDlCRTAsIDB4OUJFMCwgMHg0ODVBLAorICAgIDB4OUJFMSwgMHg5QkUxLCAweDNEQzYsIDB4OUJFMiwgMHg5QkUyLCAweDQ4NUIsIDB4OUJFMywgMHg5QkUzLCAweDNEQzcsCisgICAgMHg5QkU0LCAweDlCRTYsIDB4NDg1QywgMHg5QkU3LCAweDlCRTcsIDB4M0RDOCwgMHg5QkU4LCAweDlCRTgsIDB4NDg1RiwKKyAgICAweDlCRTksIDB4OUJFQiwgMHgzREM5LCAweDlCRUMsIDB4OUJFQywgMHg0MUZBLCAweDlCRUQsIDB4OUJFRCwgMHg0ODYwLAorICAgIDB4OUJFRSwgMHg5QkVGLCAweDNEQ0QsIDB4OUJGMCwgMHg5QkYyLCAweDQ4NjEsIDB4OUJGMywgMHg5QkYzLCAweDNEQ0YsCisgICAgMHg5QkY0LCAweDlCRjUsIDB4NDg2NCwgMHg5QkY2LCAweDlCRjYsIDB4MTJFOSwgMHg5QkY3LCAweDlCRjcsIDB4NDg2NiwKKyAgICAweDlCRjgsIDB4OUJGOSwgMHgzREQxLCAweDlCRkEsIDB4OUJGQSwgMHg0ODY3LCAweDlCRkIsIDB4OUJGQywgMHgzREQzLAorICAgIDB4OUJGRCwgMHg5QkZFLCAweDQ4NjgsIDB4OUM0MCwgMHg5QzQxLCAweDNERDUsIDB4OUM0MiwgMHg5QzQyLCAweDJDQUUsCisgICAgMHg5QzQzLCAweDlDNDMsIDB4NDg2QSwgMHg5QzQ0LCAweDlDNDYsIDB4M0REOCwgMHg5QzQ3LCAweDlDNDcsIDB4NDg2QiwKKyAgICAweDlDNDgsIDB4OUM0OCwgMHgzRERCLCAweDlDNDksIDB4OUM0OSwgMHg0ODZDLCAweDlDNEEsIDB4OUM0QSwgMHgzRERDLAorICAgIDB4OUM0QiwgMHg5QzRDLCAweDQ4NkQsIDB4OUM0RCwgMHg5QzUyLCAweDNEREQsIDB4OUM1MywgMHg5QzUzLCAweDFBNjQsCisgICAgMHg5QzU0LCAweDlDNTQsIDB4NDg2RiwgMHg5QzU1LCAweDlDNTUsIDB4M0RFNCwgMHg5QzU2LCAweDlDNTYsIDB4NDg3MCwKKyAgICAweDlDNTcsIDB4OUM1QiwgMHgzREU1LCAweDlDNUMsIDB4OUM1QywgMHg0ODcxLCAweDlDNUQsIDB4OUM1RCwgMHgzREVBLAorICAgIDB4OUM1RSwgMHg5QzVGLCAweDQ4NzIsIDB4OUM2MCwgMHg5QzYwLCAweDNERUIsIDB4OUM2MSwgMHg5QzYxLCAweDQ4NzQsCisgICAgMHg5QzYyLCAweDlDNjIsIDB4MTQwNCwgMHg5QzYzLCAweDlDNjMsIDB4NDg3NSwgMHg5QzY0LCAweDlDNjYsIDB4M0RFRCwKKyAgICAweDlDNjcsIDB4OUM2NywgMHg0ODc2LCAweDlDNjgsIDB4OUM2OCwgMHgyMzI0LCAweDlDNjksIDB4OUM2OSwgMHg0ODc3LAorICAgIDB4OUM2QSwgMHg5QzZBLCAweDNERjEsIDB4OUM2QiwgMHg5QzZCLCAweDM0NkEsIDB4OUM2QywgMHg5QzZDLCAweDQ4NzgsCisgICAgMHg5QzZELCAweDlDNkQsIDB4M0RGMiwgMHg5QzZFLCAweDlDNkUsIDB4NDg3OSwgMHg5QzZGLCAweDlDNzIsIDB4M0RGMywKKyAgICAweDlDNzMsIDB4OUM3NCwgMHg0ODdBLCAweDlDNzUsIDB4OUM3NiwgMHgzREY3LCAweDlDNzcsIDB4OUM3NywgMHgyMjkxLAorICAgIDB4OUM3OCwgMHg5Qzc4LCAweDQ4N0MsIDB4OUM3OSwgMHg5Qzc5LCAweDNERkEsIDB4OUM3QSwgMHg5QzdBLCAweDQ4N0QsCisgICAgMHg5QzdCLCAweDlDN0MsIDB4M0RGQiwgMHg5QzdELCAweDlDN0QsIDB4NDg3RSwgMHg5QzdFLCAweDlDN0UsIDB4M0RGRCwKKyAgICAweDlDQTEsIDB4OUNBMiwgMHgzREZFLCAweDlDQTMsIDB4OUNBNCwgMHg0ODdGLCAweDlDQTUsIDB4OUNBNSwgMHgzRTAwLAorICAgIDB4OUNBNiwgMHg5Q0E3LCAweDQ4ODEsIDB4OUNBOCwgMHg5Q0E5LCAweDNFMDEsIDB4OUNBQSwgMHg5Q0FBLCAweDQ4ODMsCisgICAgMHg5Q0FCLCAweDlDQUIsIDB4M0UwMywgMHg5Q0FDLCAweDlDQUMsIDB4NDg4NCwgMHg5Q0FELCAweDlDQUUsIDB4M0UwNCwKKyAgICAweDlDQUYsIDB4OUNCMCwgMHg0ODg1LCAweDlDQjEsIDB4OUNCQSwgMHgzRTA2LCAweDlDQkIsIDB4OUNCQiwgMHg0ODg3LAorICAgIDB4OUNCQywgMHg5Q0JDLCAweDE3ODcsIDB4OUNCRCwgMHg5Q0JELCAweDA5NUYsIDB4OUNCRSwgMHg5Q0MyLCAweDNFMTIsCisgICAgMHg5Q0MzLCAweDlDQzUsIDB4NDg4OCwgMHg5Q0M2LCAweDlDQ0QsIDB4M0UxNywgMHg5Q0NFLCAweDlDQ0UsIDB4NDg4QiwKKyAgICAweDlDQ0YsIDB4OUNDRiwgMHgzRTFGLCAweDlDRDAsIDB4OUNEMCwgMHgxRTk5LCAweDlDRDEsIDB4OUNEMywgMHgzRTIxLAorICAgIDB4OUNENCwgMHg5Q0Q3LCAweDQ4OEMsIDB4OUNEOCwgMHg5Q0RBLCAweDNFMjQsIDB4OUNEQiwgMHg5Q0RCLCAweDQ4OTAsCisgICAgMHg5Q0RDLCAweDlDRTUsIDB4M0UyNywgMHg5Q0U2LCAweDlDRTYsIDB4NDg5MSwgMHg5Q0U3LCAweDlDRTksIDB4M0UzMSwKKyAgICAweDlDRUEsIDB4OUNFQSwgMHg0ODkyLCAweDlDRUIsIDB4OUNFQywgMHgzRTM0LCAweDlDRUQsIDB4OUNFRCwgMHg0ODkzLAorICAgIDB4OUNFRSwgMHg5Q0Y5LCAweDNFMzYsIDB4OUNGQSwgMHg5Q0ZDLCAweDQ4OTQsIDB4OUNGRCwgMHg5Q0ZELCAweDNFNDIsCisgICAgMHg5Q0ZFLCAweDlDRkUsIDB4NDg5NywgMHg5RDQwLCAweDlENDAsIDB4NDNFOCwgMHg5RDQxLCAweDlENDUsIDB4NDg5OCwKKyAgICAweDlENDYsIDB4OUQ0NiwgMHgzRTQzLCAweDlENDcsIDB4OUQ0OCwgMHg0ODlELCAweDlENDksIDB4OUQ0OSwgMHgzRTQ0LAorICAgIDB4OUQ0QSwgMHg5RDRCLCAweDQ4OUYsIDB4OUQ0QywgMHg5RDRELCAweDNFNDYsIDB4OUQ0RSwgMHg5RDRFLCAweDQ4QTEsCisgICAgMHg5RDRGLCAweDlENEYsIDB4M0U0OCwgMHg5RDUwLCAweDlENTAsIDB4NDhBMiwgMHg5RDUxLCAweDlENTEsIDB4M0U0OSwKKyAgICAweDlENTIsIDB4OUQ1NCwgMHg0OEEzLCAweDlENTUsIDB4OUQ1NSwgMHgzRTRBLCAweDlENTYsIDB4OUQ1NiwgMHg0OEE2LAorICAgIDB4OUQ1NywgMHg5RDU3LCAweDI1QzEsIDB4OUQ1OCwgMHg5RDU5LCAweDQ4QTcsIDB4OUQ1QSwgMHg5RDVBLCAweDBEMEMsCisgICAgMHg5RDVCLCAweDlENjAsIDB4NDhBOSwgMHg5RDYxLCAweDlENjEsIDB4NDNDOSwgMHg5RDYyLCAweDlENjIsIDB4M0U0QywKKyAgICAweDlENjMsIDB4OUQ2MywgMHg0OEFGLCAweDlENjQsIDB4OUQ2NCwgMHgzRTRELCAweDlENjUsIDB4OUQ3NywgMHg0OEIwLAorICAgIDB4OUQ3OCwgMHg5RDc4LCAweDQzRjUsIDB4OUQ3OSwgMHg5RDc5LCAweDNFNEUsIDB4OUQ3QSwgMHg5RDdELCAweDQ4QzMsCisgICAgMHg5RDdFLCAweDlEN0UsIDB4M0U0RiwgMHg5REExLCAweDlEQTQsIDB4NDhDNywgMHg5REE1LCAweDlEQTgsIDB4M0U1MCwKKyAgICAweDlEQTksIDB4OURBOSwgMHg0OENCLCAweDlEQUEsIDB4OURBQSwgMHgzRTU0LCAweDlEQUIsIDB4OURBQiwgMHg0OENDLAorICAgIDB4OURBQywgMHg5REFELCAweDNFNTUsIDB4OURBRSwgMHg5REFGLCAweDQ4Q0QsIDB4OURCMCwgMHg5REIwLCAweDNFNTgsCisgICAgMHg5REIxLCAweDlEQjIsIDB4NDhDRiwgMHg5REIzLCAweDlEQjMsIDB4M0U1OSwgMHg5REI0LCAweDlEQjQsIDB4NDhEMSwKKyAgICAweDlEQjUsIDB4OURCNSwgMHgzRTVBLCAweDlEQjYsIDB4OURCNiwgMHg0OEQyLCAweDlEQjcsIDB4OURCNywgMHgzRTVCLAorICAgIDB4OURCOCwgMHg5REJCLCAweDQ4RDMsIDB4OURCQywgMHg5REJELCAweDNFNUMsIDB4OURCRSwgMHg5REJFLCAweDQ4RDcsCisgICAgMHg5REJGLCAweDlEQzAsIDB4M0U1RSwgMHg5REMxLCAweDlEQzIsIDB4NDhEOCwgMHg5REMzLCAweDlEQzMsIDB4M0U2MCwKKyAgICAweDlEQzQsIDB4OURDNCwgMHgwNUU2LCAweDlEQzUsIDB4OURDNiwgMHg0OERBLCAweDlEQzcsIDB4OURDOCwgMHgzRTYyLAorICAgIDB4OURDOSwgMHg5REM5LCAweDQ4REMsIDB4OURDQSwgMHg5RENBLCAweDNFNjQsIDB4OURDQiwgMHg5RENDLCAweDQ4REQsCisgICAgMHg5RENELCAweDlERDEsIDB4M0U2NSwgMHg5REQyLCAweDlERDIsIDB4NDhERiwgMHg5REQzLCAweDlERDUsIDB4M0U2QSwKKyAgICAweDlERDYsIDB4OUREOSwgMHg0OEUwLCAweDlEREEsIDB4OURGQiwgMHgzRTZELCAweDlERkMsIDB4OURGQywgMHg0OEU0LAorICAgIDB4OURGRCwgMHg5REZFLCAweDNFOEYsIDB4OUU0MCwgMHg5RTQyLCAweDNFOTEsIDB4OUU0MywgMHg5RTQzLCAweDQ4RTUsCisgICAgMHg5RTQ0LCAweDlFNUUsIDB4M0U5NSwgMHg5RTVGLCAweDlFNUYsIDB4NDhFNiwgMHg5RTYwLCAweDlFNjIsIDB4M0VCMSwKKyAgICAweDlFNjMsIDB4OUU2MywgMHg0OEU3LCAweDlFNjQsIDB4OUU2NSwgMHgzRUI0LCAweDlFNjYsIDB4OUU2NywgMHg0OEU4LAorICAgIDB4OUU2OCwgMHg5RTY4LCAweDNFQjYsIDB4OUU2OSwgMHg5RTY5LCAweDQ4RUEsIDB4OUU2QSwgMHg5RTZBLCAweDNFQjcsCisgICAgMHg5RTZCLCAweDlFNzAsIDB4NDhFQiwgMHg5RTcxLCAweDlFNzEsIDB4M0VCOCwgMHg5RTcyLCAweDlFNzIsIDB4NDhGMSwKKyAgICAweDlFNzMsIDB4OUU3MywgMHgzRUI5LCAweDlFNzQsIDB4OUU3NiwgMHg0OEYyLCAweDlFNzcsIDB4OUU3OCwgMHgzRUJBLAorICAgIDB4OUU3OSwgMHg5RTc5LCAweDQ4RjUsIDB4OUU3QSwgMHg5RTdBLCAweDNFQkMsIDB4OUU3QiwgMHg5RTdCLCAweDQ4RjYsCisgICAgMHg5RTdDLCAweDlFN0MsIDB4M0VCRCwgMHg5RTdELCAweDlFN0QsIDB4NDhGNywgMHg5RTdFLCAweDlFN0UsIDB4M0VCRSwKKyAgICAweDlFQTEsIDB4OUVBMiwgMHgzRUJGLCAweDlFQTMsIDB4OUVBMywgMHg0OEY4LCAweDlFQTQsIDB4OUVBNiwgMHgzRUMxLAorICAgIDB4OUVBNywgMHg5RUE4LCAweDQ4RjksIDB4OUVBOSwgMHg5RUE5LCAweDA3MjgsIDB4OUVBQSwgMHg5RUFBLCAweDNFQzUsCisgICAgMHg5RUFCLCAweDlFQUIsIDB4NDhGQiwgMHg5RUFDLCAweDlFQUQsIDB4M0VDNiwgMHg5RUFFLCAweDlFQUUsIDB4NDhGQywKKyAgICAweDlFQUYsIDB4OUVCMSwgMHgzRUM4LCAweDlFQjIsIDB4OUVCMywgMHg0OEZELCAweDlFQjQsIDB4OUVCNCwgMHgzRUNCLAorICAgIDB4OUVCNSwgMHg5RUI1LCAweDQ4RkYsIDB4OUVCNiwgMHg5RUI3LCAweDNFQ0MsIDB4OUVCOCwgMHg5RUI4LCAweDQ5MDAsCisgICAgMHg5RUI5LCAweDlFQjksIDB4M0VDRSwgMHg5RUJBLCAweDlFQkIsIDB4NDkwMSwgMHg5RUJDLCAweDlFQkMsIDB4M0VDRiwKKyAgICAweDlFQkQsIDB4OUVCRSwgMHg0OTAzLCAweDlFQkYsIDB4OUVDMCwgMHgzRUQwLCAweDlFQzEsIDB4OUVDMywgMHg0OTA1LAorICAgIDB4OUVDNCwgMHg5RUM1LCAweDNFRDIsIDB4OUVDNiwgMHg5RUM2LCAweDQ5MDgsIDB4OUVDNywgMHg5RUNBLCAweDNFRDQsCisgICAgMHg5RUNCLCAweDlFQ0MsIDB4NDkwOSwgMHg5RUNELCAweDlFQ0QsIDB4M0VEOSwgMHg5RUNFLCAweDlFQ0YsIDB4NDkwQiwKKyAgICAweDlFRDAsIDB4OUVEMSwgMHgzRURBLCAweDlFRDIsIDB4OUVEMiwgMHg0OTBELCAweDlFRDMsIDB4OUVEMywgMHgzRURDLAorICAgIDB4OUVENCwgMHg5RUQ1LCAweDQ5MEUsIDB4OUVENiwgMHg5RUQ3LCAweDNFREQsIDB4OUVEOCwgMHg5RUQ5LCAweDQ5MTAsCisgICAgMHg5RURBLCAweDlFRUUsIDB4M0VERiwgMHg5RUVGLCAweDlFRUYsIDB4MjRCNiwgMHg5RUYwLCAweDlFRjEsIDB4M0VGNSwKKyAgICAweDlFRjIsIDB4OUVGMiwgMHg0OTEyLCAweDlFRjMsIDB4OUVGNSwgMHgzRUY3LCAweDlFRjYsIDB4OUVGOCwgMHg0OTEzLAorICAgIDB4OUVGOSwgMHg5RUZBLCAweDNFRkEsIDB4OUVGQiwgMHg5RUZCLCAweDQ5MTYsIDB4OUVGQywgMHg5RUZDLCAweDNFRkMsCisgICAgMHg5RUZELCAweDlFRkQsIDB4MTgwNiwgMHg5RUZFLCAweDlFRkUsIDB4M0VGRSwgMHg5RjQwLCAweDlGNDIsIDB4M0VGRiwKKyAgICAweDlGNDMsIDB4OUY0MywgMHg0OTE3LCAweDlGNDQsIDB4OUY0NywgMHgzRjAyLCAweDlGNDgsIDB4OUY0OCwgMHg0OTE4LAorICAgIDB4OUY0OSwgMHg5RjRBLCAweDNGMDYsIDB4OUY0QiwgMHg5RjRDLCAweDQ5MTksIDB4OUY0RCwgMHg5RjVGLCAweDNGMDgsCisgICAgMHg5RjYwLCAweDlGNjAsIDB4MzUxMSwgMHg5RjYxLCAweDlGNjUsIDB4M0YxQywgMHg5RjY2LCAweDlGNjYsIDB4Mzk0NSwKKyAgICAweDlGNjcsIDB4OUY2OCwgMHg0OTFCLCAweDlGNjksIDB4OUY2RiwgMHgzRjIzLCAweDlGNzAsIDB4OUY3MCwgMHg0OTFELAorICAgIDB4OUY3MSwgMHg5RjdFLCAweDNGMkEsIDB4OUZBMSwgMHg5RkI0LCAweDNGMzgsIDB4OUZCNSwgMHg5RkI1LCAweDQ5MUUsCisgICAgMHg5RkI2LCAweDlGQkEsIDB4M0Y0QywgMHg5RkJCLCAweDlGQkIsIDB4NDkxRiwgMHg5RkJDLCAweDlGQkUsIDB4M0Y1MSwKKyAgICAweDlGQkYsIDB4OUZCRiwgMHg0OTIwLCAweDlGQzAsIDB4OUZDMCwgMHgzRjU0LCAweDlGQzEsIDB4OUZDMSwgMHg0OTIxLAorICAgIDB4OUZDMiwgMHg5RkNBLCAweDNGNTUsIDB4OUZDQiwgMHg5RkNCLCAweDBGODIsIDB4OUZDQywgMHg5RkNDLCAweDQ5MjIsCisgICAgMHg5RkNELCAweDlGRDMsIDB4M0Y2MCwgMHg5RkQ0LCAweDlGRDQsIDB4NDkyMywgMHg5RkQ1LCAweDlGRDcsIDB4M0Y2OCwKKyAgICAweDlGRDgsIDB4OUZEOCwgMHgzQTNFLCAweDlGRDksIDB4OUZFMywgMHgzRjZDLCAweDlGRTQsIDB4OUZFNCwgMHg0OTI0LAorICAgIDB4OUZFNSwgMHg5RkY4LCAweDNGNzcsIDB4OUZGOSwgMHg5RkY5LCAweDQ5MjUsIDB4OUZGQSwgMHg5RkZFLCAweDNGOEIsCisgICAgMHhBMDQwLCAweEEwNDAsIDB4NDkyNiwgMHhBMDQxLCAweEEwNDYsIDB4M0Y5MCwgMHhBMDQ3LCAweEEwNDcsIDB4NDkyNywKKyAgICAweEEwNDgsIDB4QTA1NCwgMHgzRjk2LCAweEEwNTUsIDB4QTA1NSwgMHg0OTI4LCAweEEwNTYsIDB4QTA2MiwgMHgzRkEzLAorICAgIDB4QTA2MywgMHhBMDYzLCAweDM4MTEsIDB4QTA2NCwgMHhBMDZDLCAweDNGQjEsIDB4QTA2RCwgMHhBMDZELCAweDQ5MjksCisgICAgMHhBMDZFLCAweEEwNzYsIDB4M0ZCQSwgMHhBMDc3LCAweEEwNzcsIDB4MDVGMiwgMHhBMDc4LCAweEEwN0EsIDB4M0ZDNCwKKyAgICAweEEwN0IsIDB4QTA3QiwgMHg0OTJBLCAweEEwN0MsIDB4QTA3RSwgMHgzRkM3LCAweEEwQTEsIDB4QTBBMSwgMHgzRkNBLAorICAgIDB4QTBBMiwgMHhBMEEyLCAweDQ5MkIsIDB4QTBBMywgMHhBMEE2LCAweDNGQ0IsIDB4QTBBNywgMHhBMEE3LCAweDQ5MkMsCisgICAgMHhBMEE4LCAweEEwQzQsIDB4M0ZDRiwgMHhBMEM1LCAweEEwQzUsIDB4NDkyRCwgMHhBMEM2LCAweEEwQ0YsIDB4M0ZFQywKKyAgICAweEEwRDAsIDB4QTBEMCwgMHg0OTJFLCAweEEwRDEsIDB4QTBENCwgMHgzRkY2LCAweEEwRDUsIDB4QTBENSwgMHgzQUVFLAorICAgIDB4QTBENiwgMHhBMERFLCAweDNGRkIsIDB4QTBERiwgMHhBMERGLCAweDI0N0QsIDB4QTBFMCwgMHhBMEUyLCAweDQwMDUsCisgICAgMHhBMEUzLCAweEEwRTMsIDB4NDkyRiwgMHhBMEU0LCAweEEwRTQsIDB4M0FDOSwgMHhBMEU1LCAweEEwRTYsIDB4NDAwOSwKKyAgICAweEEwRTcsIDB4QTBFRCwgMHg0OTMwLCAweEEwRUUsIDB4QTBFRSwgMHg0M0I0LCAweEEwRUYsIDB4QTBGMSwgMHg0OTM3LAorICAgIDB4QTBGMiwgMHhBMEYyLCAweDQzQjgsIDB4QTBGMywgMHhBMEZFLCAweDQ5M0EsIDB4QTE0MCwgMHhBMTU4LCAweDAwNjMsCisgICAgMHhBMTU5LCAweEExNUMsIDB4MzVBRiwgMHhBMTVELCAweEExN0UsIDB4MDA4MCwgMHhBMUExLCAweEExRjUsIDB4MDBBMiwKKyAgICAweEExRjYsIDB4QTFGNiwgMHgwMEY4LCAweEExRjcsIDB4QTFGNywgMHgwMEY3LCAweEExRjgsIDB4QTFGRSwgMHgwMEY5LAorICAgIDB4QTI0MCwgMHhBMjdFLCAweDAxMDAsIDB4QTJBMSwgMHhBMkZFLCAweDAxM0YsIDB4QTM0MCwgMHhBMzdFLCAweDAxOUQsCisgICAgMHhBM0ExLCAweEEzQkIsIDB4MDFEQywgMHhBM0JELCAweEEzQkYsIDB4MDFGNywgMHhBNDQwLCAweEE0N0UsIDB4MDI1MywKKyAgICAweEE0QTEsIDB4QTRGRSwgMHgwMjkyLCAweEE1NDAsIDB4QTU3RSwgMHgwMkYwLCAweEE1QTEsIDB4QTVGRSwgMHgwMzJGLAorICAgIDB4QTY0MCwgMHhBNjdFLCAweDAzOEQsIDB4QTZBMSwgMHhBNkZFLCAweDAzQ0MsIDB4QTc0MCwgMHhBNzdFLCAweDA0MkEsCisgICAgMHhBN0ExLCAweEE3RkUsIDB4MDQ2OSwgMHhBODQwLCAweEE4N0UsIDB4MDRDNywgMHhBOEExLCAweEE4RkUsIDB4MDUwNiwKKyAgICAweEE5NDAsIDB4QTk3RSwgMHgwNTY0LCAweEE5QTEsIDB4QTlGRSwgMHgwNUEzLCAweEFBNDAsIDB4QUE3RSwgMHgwNjAxLAorICAgIDB4QUFBMSwgMHhBQUZFLCAweDA2NDAsIDB4QUI0MCwgMHhBQjdFLCAweDA2OUUsIDB4QUJBMSwgMHhBQkZFLCAweDA2REQsCisgICAgMHhBQzQwLCAweEFDN0UsIDB4MDczQiwgMHhBQ0ExLCAweEFDRkQsIDB4MDc3QSwgMHhBQ0ZFLCAweEFDRkUsIDB4MDk3RiwKKyAgICAweEFENDAsIDB4QUQ3RSwgMHgwN0Q3LCAweEFEQTEsIDB4QURGRSwgMHgwODE2LCAweEFFNDAsIDB4QUU3RSwgMHgwODc0LAorICAgIDB4QUVBMSwgMHhBRUZFLCAweDA4QjMsIDB4QUY0MCwgMHhBRjdFLCAweDA5MTEsIDB4QUZBMSwgMHhBRkNGLCAweDA5NTAsCisgICAgMHhBRkQwLCAweEFGRkUsIDB4MDk4MCwgMHhCMDQwLCAweEIwN0UsIDB4MDlBRiwgMHhCMEExLCAweEIwRkUsIDB4MDlFRSwKKyAgICAweEIxNDAsIDB4QjE3RSwgMHgwQTRDLCAweEIxQTEsIDB4QjFGRSwgMHgwQThCLCAweEIyNDAsIDB4QjI3RSwgMHgwQUU5LAorICAgIDB4QjJBMSwgMHhCMkZFLCAweDBCMjgsIDB4QjM0MCwgMHhCMzdFLCAweDBCODYsIDB4QjNBMSwgMHhCM0ZFLCAweDBCQzUsCisgICAgMHhCNDQwLCAweEI0N0UsIDB4MEMyMywgMHhCNEExLCAweEI0RkUsIDB4MEM2MiwgMHhCNTQwLCAweEI1N0UsIDB4MENDMCwKKyAgICAweEI1QTEsIDB4QjVGRSwgMHgwQ0ZGLCAweEI2NDAsIDB4QjY3RSwgMHgwRDVELCAweEI2QTEsIDB4QjZGRSwgMHgwRDlDLAorICAgIDB4Qjc0MCwgMHhCNzdFLCAweDBERkEsIDB4QjdBMSwgMHhCN0ZFLCAweDBFMzksIDB4Qjg0MCwgMHhCODdFLCAweDBFOTcsCisgICAgMHhCOEExLCAweEI4RkUsIDB4MEVENiwgMHhCOTQwLCAweEI5N0UsIDB4MEYzNCwgMHhCOUExLCAweEI5RkUsIDB4MEY3MywKKyAgICAweEJBNDAsIDB4QkE3RSwgMHgwRkQxLCAweEJBQTEsIDB4QkFGRSwgMHgxMDEwLCAweEJCNDAsIDB4QkI3RSwgMHgxMDZFLAorICAgIDB4QkJBMSwgMHhCQkM3LCAweDEwQUQsIDB4QkJDOCwgMHhCQkZFLCAweDEwRDUsIDB4QkM0MCwgMHhCQzdFLCAweDExMEMsCisgICAgMHhCQ0ExLCAweEJDRkUsIDB4MTE0QiwgMHhCRDQwLCAweEJEN0UsIDB4MTFBOSwgMHhCREExLCAweEJERkUsIDB4MTFFOCwKKyAgICAweEJFNDAsIDB4QkU1MSwgMHgxMjQ2LCAweEJFNTIsIDB4QkU1MiwgMHgxMEQ0LCAweEJFNTMsIDB4QkU3RSwgMHgxMjU4LAorICAgIDB4QkVBMSwgMHhCRUZFLCAweDEyODQsIDB4QkY0MCwgMHhCRjdFLCAweDEyRTIsIDB4QkZBMSwgMHhCRkZFLCAweDEzMjEsCisgICAgMHhDMDQwLCAweEMwN0UsIDB4MTM3RiwgMHhDMEExLCAweEMwRkUsIDB4MTNCRSwgMHhDMTQwLCAweEMxN0UsIDB4MTQxQywKKyAgICAweEMxQTEsIDB4QzFBQSwgMHgxNDVCLCAweEMxQUIsIDB4QzFGRSwgMHgxNDY2LCAweEMyNDAsIDB4QzI3RSwgMHgxNEJBLAorICAgIDB4QzJBMSwgMHhDMkNBLCAweDE0RjksIDB4QzJDQiwgMHhDMkNCLCAweDE0NjUsIDB4QzJDQywgMHhDMkZFLCAweDE1MjMsCisgICAgMHhDMzQwLCAweEMzNjAsIDB4MTU1NiwgMHhDMzYxLCAweEMzN0UsIDB4MTU3OCwgMHhDM0ExLCAweEMzQjgsIDB4MTU5NiwKKyAgICAweEMzQjksIDB4QzNCOSwgMHgxNUFGLCAweEMzQkEsIDB4QzNCQSwgMHgxNUFFLCAweEMzQkIsIDB4QzNGRSwgMHgxNUIwLAorICAgIDB4QzQ0MCwgMHhDNDU1LCAweDE1RjQsIDB4QzQ1NiwgMHhDNDU2LCAweDE1NzcsIDB4QzQ1NywgMHhDNDdFLCAweDE2MEEsCisgICAgMHhDNEExLCAweEM0RkUsIDB4MTYzMiwgMHhDNTQwLCAweEM1N0UsIDB4MTY5MCwgMHhDNUExLCAweEM1RkUsIDB4MTZDRiwKKyAgICAweEM2NDAsIDB4QzY3RSwgMHgxNzJELCAweEM2QTEsIDB4QzZCRSwgMHgwMUZBLCAweEM2QkYsIDB4QzZDRSwgMHgwMjE5LAorICAgIDB4QzZEMCwgMHhDNkQyLCAweDAyMkEsIDB4QzZENCwgMHhDNkQ0LCAweDAyMkUsIDB4QzZENiwgMHhDNkQ2LCAweDAyMzAsCisgICAgMHhDNkQ4LCAweEM2REQsIDB4MzVCMywgMHhDNkUwLCAweEM2RkUsIDB4MzVCQSwgMHhDNzQwLCAweEM3N0UsIDB4MzVEOSwKKyAgICAweEM3QTEsIDB4QzdGRSwgMHgzNjE4LCAweEM4NDAsIDB4Qzg3RSwgMHgzNjc2LCAweEM4QTEsIDB4QzhBNCwgMHgzNkI1LAorICAgIDB4QzhDRCwgMHhDOEQzLCAweDM2RTEsIDB4QzhENCwgMHhDOEQ2LCAweDQ0QzYsIDB4QzhENywgMHhDOERGLCAweDQ1MUMsCisgICAgMHhDOEUwLCAweEM4RTAsIDB4NDk5RSwgMHhDOEUxLCAweEM4RTgsIDB4NDUyNSwgMHhDOEU5LCAweEM4RTksIDB4NDk5RiwKKyAgICAweEM4RUEsIDB4QzhGMCwgMHg0NTJELCAweEM4RjEsIDB4QzhGMSwgMHg0OUEwLCAweEM4RjUsIDB4QzhGRSwgMHg0OTkyLAorICAgIDB4Qzk0MCwgMHhDOTQ5LCAweDE3NkMsIDB4Qzk0QSwgMHhDOTRBLCAweDAyNzQsIDB4Qzk0QiwgMHhDOTZCLCAweDE3NzYsCisgICAgMHhDOTZDLCAweEM5N0UsIDB4MTc5OCwgMHhDOUExLCAweEM5QkQsIDB4MTdBQiwgMHhDOUJFLCAweEM5QkUsIDB4MTc5NywKKyAgICAweEM5QkYsIDB4QzlFQywgMHgxN0M4LCAweEM5RUQsIDB4QzlGRSwgMHgxN0Y3LCAweENBNDAsIDB4Q0E3RSwgMHgxODA5LAorICAgIDB4Q0FBMSwgMHhDQUY2LCAweDE4NDgsIDB4Q0FGNywgMHhDQUY3LCAweDE3RjYsIDB4Q0FGOCwgMHhDQUZFLCAweDE4OUUsCisgICAgMHhDQjQwLCAweENCN0UsIDB4MThBNSwgMHhDQkExLCAweENCRkUsIDB4MThFNCwgMHhDQzQwLCAweENDN0UsIDB4MTk0MiwKKyAgICAweENDQTEsIDB4Q0NGRSwgMHgxOTgxLCAweENENDAsIDB4Q0Q3RSwgMHgxOURGLCAweENEQTEsIDB4Q0RGRSwgMHgxQTFFLAorICAgIDB4Q0U0MCwgMHhDRTdFLCAweDFBN0MsIDB4Q0VBMSwgMHhDRUZFLCAweDFBQkIsIDB4Q0Y0MCwgMHhDRjdFLCAweDFCMTksCisgICAgMHhDRkExLCAweENGRkUsIDB4MUI1OCwgMHhEMDQwLCAweEQwN0UsIDB4MUJCNiwgMHhEMEExLCAweEQwRkUsIDB4MUJGNSwKKyAgICAweEQxNDAsIDB4RDE3RSwgMHgxQzUzLCAweEQxQTEsIDB4RDFGRSwgMHgxQzkyLCAweEQyNDAsIDB4RDI3RSwgMHgxQ0YwLAorICAgIDB4RDJBMSwgMHhEMkZFLCAweDFEMkYsIDB4RDM0MCwgMHhEMzdFLCAweDFEOEQsIDB4RDNBMSwgMHhEM0ZFLCAweDFEQ0MsCisgICAgMHhENDQwLCAweEQ0N0UsIDB4MUUyQSwgMHhENEExLCAweEQ0RkUsIDB4MUU2OSwgMHhENTQwLCAweEQ1N0UsIDB4MUVDNywKKyAgICAweEQ1QTEsIDB4RDVGRSwgMHgxRjA2LCAweEQ2NDAsIDB4RDY3RSwgMHgxRjY0LCAweEQ2QTEsIDB4RDZDQiwgMHgxRkEzLAorICAgIDB4RDZDQywgMHhENkNDLCAweDIyNTQsIDB4RDZDRCwgMHhENkZFLCAweDFGQ0YsIDB4RDc0MCwgMHhENzc5LCAweDIwMDEsCisgICAgMHhENzdBLCAweEQ3N0EsIDB4MjJCOSwgMHhENzdCLCAweEQ3N0UsIDB4MjAzQiwgMHhEN0ExLCAweEQ3RkUsIDB4MjAzRiwKKyAgICAweEQ4NDAsIDB4RDg3RSwgMHgyMDlELCAweEQ4QTEsIDB4RDhGRSwgMHgyMERDLCAweEQ5NDAsIDB4RDk3RSwgMHgyMTNBLAorICAgIDB4RDlBMSwgMHhEOUZFLCAweDIxNzksIDB4REE0MCwgMHhEQTdFLCAweDIxRDcsIDB4REFBMSwgMHhEQURFLCAweDIyMTYsCisgICAgMHhEQURGLCAweERBREYsIDB4MUZDRSwgMHhEQUUwLCAweERBRkUsIDB4MjI1NSwgMHhEQjQwLCAweERCN0UsIDB4MjI3NCwKKyAgICAweERCQTEsIDB4REJBNiwgMHgyMkIzLCAweERCQTcsIDB4REJGRSwgMHgyMkJBLCAweERDNDAsIDB4REM3RSwgMHgyMzEyLAorICAgIDB4RENBMSwgMHhEQ0ZFLCAweDIzNTEsIDB4REQ0MCwgMHhERDdFLCAweDIzQUYsIDB4RERBMSwgMHhEREZCLCAweDIzRUUsCisgICAgMHhEREZDLCAweERERkMsIDB4MjM4MSwgMHhEREZELCAweERERkUsIDB4MjQ0OSwgMHhERTQwLCAweERFN0UsIDB4MjQ0QiwKKyAgICAweERFQTEsIDB4REVGRSwgMHgyNDhBLCAweERGNDAsIDB4REY3RSwgMHgyNEU4LCAweERGQTEsIDB4REZGRSwgMHgyNTI3LAorICAgIDB4RTA0MCwgMHhFMDdFLCAweDI1ODUsIDB4RTBBMSwgMHhFMEZFLCAweDI1QzQsIDB4RTE0MCwgMHhFMTdFLCAweDI2MjIsCisgICAgMHhFMUExLCAweEUxRkUsIDB4MjY2MSwgMHhFMjQwLCAweEUyN0UsIDB4MjZCRiwgMHhFMkExLCAweEUyRkUsIDB4MjZGRSwKKyAgICAweEUzNDAsIDB4RTM3RSwgMHgyNzVDLCAweEUzQTEsIDB4RTNGRSwgMHgyNzlCLCAweEU0NDAsIDB4RTQ3RSwgMHgyN0Y5LAorICAgIDB4RTRBMSwgMHhFNEZFLCAweDI4MzgsIDB4RTU0MCwgMHhFNTdFLCAweDI4OTYsIDB4RTVBMSwgMHhFNUZFLCAweDI4RDUsCisgICAgMHhFNjQwLCAweEU2N0UsIDB4MjkzMywgMHhFNkExLCAweEU2RkUsIDB4Mjk3MiwgMHhFNzQwLCAweEU3N0UsIDB4MjlEMCwKKyAgICAweEU3QTEsIDB4RTdGRSwgMHgyQTBGLCAweEU4NDAsIDB4RTg3RSwgMHgyQTZELCAweEU4QTEsIDB4RThBMiwgMHgyQUFDLAorICAgIDB4RThBMywgMHhFOEZFLCAweDJBQUYsIDB4RTk0MCwgMHhFOTc1LCAweDJCMEIsIDB4RTk3NiwgMHhFOTdFLCAweDJCNDIsCisgICAgMHhFOUExLCAweEU5RkUsIDB4MkI0QiwgMHhFQTQwLCAweEVBN0UsIDB4MkJBOSwgMHhFQUExLCAweEVBRkUsIDB4MkJFOCwKKyAgICAweEVCNDAsIDB4RUI1QSwgMHgyQzQ2LCAweEVCNUIsIDB4RUI3RSwgMHgyQzYyLCAweEVCQTEsIDB4RUJGMCwgMHgyQzg2LAorICAgIDB4RUJGMSwgMHhFQkYxLCAweDJBQUUsIDB4RUJGMiwgMHhFQkZFLCAweDJDRDYsIDB4RUM0MCwgMHhFQzdFLCAweDJDRTMsCisgICAgMHhFQ0ExLCAweEVDREQsIDB4MkQyMiwgMHhFQ0RFLCAweEVDREUsIDB4MkI0MSwgMHhFQ0RGLCAweEVDRkUsIDB4MkQ1RiwKKyAgICAweEVENDAsIDB4RUQ3RSwgMHgyRDdGLCAweEVEQTEsIDB4RURBOSwgMHgyREJFLCAweEVEQUEsIDB4RURGRSwgMHgyREM4LAorICAgIDB4RUU0MCwgMHhFRTdFLCAweDJFMUQsIDB4RUVBMSwgMHhFRUVBLCAweDJFNUMsIDB4RUVFQiwgMHhFRUVCLCAweDMwMTQsCisgICAgMHhFRUVDLCAweEVFRkUsIDB4MkVBNiwgMHhFRjQwLCAweEVGN0UsIDB4MkVCOSwgMHhFRkExLCAweEVGRkUsIDB4MkVGOCwKKyAgICAweEYwNDAsIDB4RjA1NSwgMHgyRjU2LCAweEYwNTYsIDB4RjA1NiwgMHgyREM3LCAweEYwNTcsIDB4RjA3RSwgMHgyRjZDLAorICAgIDB4RjBBMSwgMHhGMENBLCAweDJGOTQsIDB4RjBDQiwgMHhGMENCLCAweDJDNjEsIDB4RjBDQywgMHhGMEZFLCAweDJGQkUsCisgICAgMHhGMTQwLCAweEYxNjIsIDB4MkZGMSwgMHhGMTYzLCAweEYxNkEsIDB4MzAxNSwgMHhGMTZCLCAweEYxNkIsIDB4MzE2MCwKKyAgICAweEYxNkMsIDB4RjE3RSwgMHgzMDFELCAweEYxQTEsIDB4RjFGRSwgMHgzMDMwLCAweEYyNDAsIDB4RjI2NywgMHgzMDhFLAorICAgIDB4RjI2OCwgMHhGMjY4LCAweDMxRUYsIDB4RjI2OSwgMHhGMjdFLCAweDMwQjYsIDB4RjJBMSwgMHhGMkMyLCAweDMwQ0MsCisgICAgMHhGMkMzLCAweEYyRkUsIDB4MzBFRiwgMHhGMzQwLCAweEYzNzQsIDB4MzEyQiwgMHhGMzc1LCAweEYzN0UsIDB4MzE2MSwKKyAgICAweEYzQTEsIDB4RjNGRSwgMHgzMTZCLCAweEY0NDAsIDB4RjQ2NSwgMHgzMUM5LCAweEY0NjYsIDB4RjQ3RSwgMHgzMUYwLAorICAgIDB4RjRBMSwgMHhGNEI0LCAweDMyMDksIDB4RjRCNSwgMHhGNEI1LCAweDMwRUUsIDB4RjRCNiwgMHhGNEZDLCAweDMyMUQsCisgICAgMHhGNEZELCAweEY0RkUsIDB4MzI2NSwgMHhGNTQwLCAweEY1N0UsIDB4MzI2NywgMHhGNUExLCAweEY1RkUsIDB4MzJBNiwKKyAgICAweEY2NDAsIDB4RjY2MiwgMHgzMzA0LCAweEY2NjMsIDB4RjY2MywgMHgzMjY0LCAweEY2NjQsIDB4RjY3RSwgMHgzMzI3LAorICAgIDB4RjZBMSwgMHhGNkZFLCAweDMzNDIsIDB4Rjc0MCwgMHhGNzdFLCAweDMzQTAsIDB4RjdBMSwgMHhGN0ZFLCAweDMzREYsCisgICAgMHhGODQwLCAweEY4N0UsIDB4MzQzRCwgMHhGOEExLCAweEY4RkUsIDB4MzQ3QywgMHhGOTQwLCAweEY5NzYsIDB4MzREQSwKKyAgICAweEY5NzcsIDB4Rjk3RSwgMHgzNTEyLCAweEY5QTEsIDB4RjlDMywgMHgzNTFBLCAweEY5QzQsIDB4RjlDNCwgMHgzNTExLAorICAgIDB4RjlDNSwgMHhGOUM1LCAweDM1M0QsIDB4RjlDNiwgMHhGOUM2LCAweDM1NDksIDB4RjlDNywgMHhGOUQxLCAweDM1M0UsCisgICAgMHhGOUQyLCAweEY5RDUsIDB4MzU0QSwgMHhGOUQ2LCAweEY5RkUsIDB4MzZFOCwgMHhGQTQwLCAweEZBNUUsIDB4NDAwQiwKKyAgICAweEZBNUYsIDB4RkE1RiwgMHgwODNBLCAweEZBNjAsIDB4RkE2NSwgMHg0MDJCLCAweEZBNjYsIDB4RkE2NiwgMHgwOUZELAorICAgIDB4RkE2NywgMHhGQTdFLCAweDQwMzIsIDB4RkFBMSwgMHhGQUE4LCAweDQwNEEsIDB4RkFBOSwgMHhGQUFBLCAweDQ5NDYsCisgICAgMHhGQUFCLCAweEZBQkMsIDB4NDA1NCwgMHhGQUJELCAweEZBQkQsIDB4MDMwRCwgMHhGQUJFLCAweEZBQzQsIDB4NDA2NywKKyAgICAweEZBQzUsIDB4RkFDNSwgMHgwMTZCLCAweEZBQzYsIDB4RkFENCwgMHg0MDZGLCAweEZBRDUsIDB4RkFENSwgMHgwODYwLAorICAgIDB4RkFENiwgMHhGQUZFLCAweDQwN0YsIDB4RkI0MCwgMHhGQjQ3LCAweDQwQTgsIDB4RkI0OCwgMHhGQjQ4LCAweDNFODIsCisgICAgMHhGQjQ5LCAweEZCNTIsIDB4NDBCMSwgMHhGQjUzLCAweEZCNTMsIDB4NDk0OCwgMHhGQjU0LCAweEZCNkQsIDB4NDBCQywKKyAgICAweEZCNkUsIDB4RkI2RSwgMHg0OTQ5LCAweEZCNkYsIDB4RkI3RSwgMHg0MEQ3LCAweEZCQTEsIDB4RkJBMiwgMHg0MEU3LAorICAgIDB4RkJBMywgMHhGQkEzLCAweDQ5NEEsIDB4RkJBNCwgMHhGQkI3LCAweDQwRUEsIDB4RkJCOCwgMHhGQkI4LCAweDBDMjMsCisgICAgMHhGQkI5LCAweEZCQkUsIDB4NDBGRiwgMHhGQkJGLCAweEZCQkYsIDB4NDk0QiwgMHhGQkMwLCAweEZCQ0MsIDB4NDEwNSwKKyAgICAweEZCQ0QsIDB4RkJDRCwgMHg0OTRDLCAweEZCQ0UsIDB4RkJGMiwgMHg0MTEyLCAweEZCRjMsIDB4RkJGMywgMHgxN0U0LAorICAgIDB4RkJGNCwgMHhGQkY4LCAweDQxMzgsIDB4RkJGOSwgMHhGQkY5LCAweDNFOEUsIDB4RkJGQSwgMHhGQkZFLCAweDQxM0UsCisgICAgMHhGQzQwLCAweEZDNDksIDB4NDE0MywgMHhGQzRBLCAweEZDNEEsIDB4NDk0RCwgMHhGQzRCLCAweEZDNEUsIDB4NDE0RCwKKyAgICAweEZDNEYsIDB4RkM0RiwgMHgyMTJGLCAweEZDNTAsIDB4RkM1MSwgMHg0MTUxLCAweEZDNTIsIDB4RkM1MiwgMHg0OTRFLAorICAgIDB4RkM1MywgMHhGQzYyLCAweDQxNTMsIDB4RkM2MywgMHhGQzYzLCAweDQ5NEYsIDB4RkM2NCwgMHhGQzZCLCAweDQxNjMsCisgICAgMHhGQzZDLCAweEZDNkMsIDB4NDAwMSwgMHhGQzZELCAweEZDNkQsIDB4NDk1MCwgMHhGQzZFLCAweEZDNzQsIDB4NDE2RCwKKyAgICAweEZDNzUsIDB4RkM3NSwgMHg0OTUxLCAweEZDNzYsIDB4RkM3RSwgMHg0MTc0LCAweEZDQTEsIDB4RkNCOCwgMHg0MTdELAorICAgIDB4RkNCOSwgMHhGQ0I5LCAweDExNUYsIDB4RkNCQSwgMHhGQ0JCLCAweDQxOTUsIDB4RkNCQywgMHhGQ0JELCAweDQ5NTIsCisgICAgMHhGQ0JFLCAweEZDQ0IsIDB4NDE5OCwgMHhGQ0NDLCAweEZDQ0MsIDB4NDk1NCwgMHhGQ0NELCAweEZDRTEsIDB4NDFBNywKKyAgICAweEZDRTIsIDB4RkNFMiwgMHgwQzc5LCAweEZDRTMsIDB4RkNFMywgMHg0OTU1LCAweEZDRTQsIDB4RkNFRCwgMHg0MUJELAorICAgIDB4RkNFRSwgMHhGQ0VFLCAweDQ5NTYsIDB4RkNFRiwgMHhGQ0YwLCAweDQxQzcsIDB4RkNGMSwgMHhGQ0YxLCAweDA0QzMsCisgICAgMHhGQ0YyLCAweEZDRkUsIDB4NDFDQSwgMHhGRDQwLCAweEZENDgsIDB4NDFENywgMHhGRDQ5LCAweEZENDksIDB4NDk1NywKKyAgICAweEZENEEsIDB4RkQ2OSwgMHg0MUUwLCAweEZENkEsIDB4RkQ2QSwgMHg0OTU4LCAweEZENkIsIDB4RkQ3RSwgMHg0MjAxLAorICAgIDB4RkRBMSwgMHhGREI2LCAweDQyMTUsIDB4RkRCNywgMHhGREI3LCAweDE4QkQsIDB4RkRCOCwgMHhGREI4LCAweDBDQkQsCisgICAgMHhGREI5LCAweEZEQkEsIDB4NDIyRCwgMHhGREJCLCAweEZEQkIsIDB4MENBNSwgMHhGREJDLCAweEZERTIsIDB4NDIzMCwKKyAgICAweEZERTMsIDB4RkRFMywgMHg0OTU5LCAweEZERTQsIDB4RkRGMCwgMHg0MjU4LCAweEZERjEsIDB4RkRGMSwgMHgwQ0NFLAorICAgIDB4RkRGMiwgMHhGREYyLCAweDQ5NUEsIDB4RkRGMywgMHhGREZFLCAweDQyNjYsIDB4RkU0MCwgMHhGRTUxLCAweDQyNzIsCisgICAgMHhGRTUyLCAweEZFNTIsIDB4M0Q3MCwgMHhGRTUzLCAweEZFNkMsIDB4NDI4NSwgMHhGRTZELCAweEZFNkQsIDB4NDk1QiwKKyAgICAweEZFNkUsIDB4RkU2RSwgMHg0MjlGLCAweEZFNkYsIDB4RkU2RiwgMHgwRTg0LCAweEZFNzAsIDB4RkU3NywgMHg0MkExLAorICAgIDB4RkU3OCwgMHhGRTc4LCAweDQ5NUMsIDB4RkU3OSwgMHhGRTdFLCAweDQyQTksIDB4RkVBMSwgMHhGRUE5LCAweDQyQUYsCisgICAgMHhGRUFBLCAweEZFQUEsIDB4MDEyMCwgMHhGRUFCLCAweEZFREMsIDB4NDJCOCwgMHhGRURELCAweEZFREQsIDB4MUJBOCwKKyAgICAweEZFREUsIDB4RkVERiwgMHg0OTVELCAweEZFRTAsIDB4RkVFQywgMHg0MkVCLCAweEZFRUQsIDB4RkVFRSwgMHg0OTVGLAorICAgIDB4RkVFRiwgMHhGRUZFLCAweDQyRjgsCit9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvSEtzY3MtQjUtVl81LmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0hLc2NzLUI1LVZfNS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjNTJlNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL0hLc2NzLUI1LVZfNS5jcHAKQEAgLTAsMCArMSwxMyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0hLc2NzX0I1X1ZfNVsxMyAqIDNdID0geworICAgIDB4QTE0QiwgMHhBMTRCLCAweDM1NEUsIDB4QTE1QSwgMHhBMTVBLCAweDM1QUYsIDB4QTE1QywgMHhBMTVDLCAweDM1QjEsCisgICAgMHhBMTVELCAweEExNUUsIDB4MDA4MiwgMHhBMTYxLCAweEExNjIsIDB4MDA4NiwgMHhBMTY1LCAweEExNjYsIDB4MDA4QSwKKyAgICAweEExNjksIDB4QTE2QSwgMHgwMDhFLCAweEExNkQsIDB4QTE2RSwgMHgwMDkyLCAweEExNzEsIDB4QTE3MiwgMHgwMDk2LAorICAgIDB4QTE3NSwgMHhBMTc2LCAweDAwOUEsIDB4QTE3OSwgMHhBMTdBLCAweDAwOUUsIDB4QTFFMywgMHhBMUUzLCAweDM1NEYsCisgICAgMHhDNkU0LCAweEM2RTUsIDB4MzcxMSwKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9VbmlDTlMtVUNTMi1IXzMuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvVW5pQ05TLVVDUzItSF8zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNThiNWEzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvVW5pQ05TLVVDUzItSF8zLmNwcApAQCAtMCwwICsxLDU0ODEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9VbmlDTlNfVUNTMl9IXzNbMTY0MTggKiAzXSA9IHsKKyAgICAweDAwMjAsIDB4MDA3RSwgMHgwMDAxLCAweDAwQTIsIDB4MDBBMywgMHgwMTA2LCAweDAwQTUsIDB4MDBBNSwgMHgwMTA0LAorICAgIDB4MDBBNywgMHgwMEE3LCAweDAwQjIsIDB4MDBBOCwgMHgwMEE4LCAweDM1QjMsIDB4MDBBQywgMHgwMEFDLCAweDM2RTEsCisgICAgMHgwMEIwLCAweDAwQjAsIDB4MDExOCwgMHgwMEIxLCAweDAwQjEsIDB4MDBENCwgMHgwMEI3LCAweDAwQjcsIDB4MDA3MywKKyAgICAweDAwQzAsIDB4MDBDMCwgMHg0OTY0LCAweDAwQzEsIDB4MDBDMSwgMHg0OTYyLCAweDAwQzgsIDB4MDBDOCwgMHg0OTY4LAorICAgIDB4MDBDOSwgMHgwMEM5LCAweDQ5NjYsIDB4MDBDQSwgMHgwMENBLCAweDQ5NzEsIDB4MDBEMiwgMHgwMEQyLCAweDQ5NkMsCisgICAgMHgwMEQzLCAweDAwRDMsIDB4NDk2QSwgMHgwMEQ3LCAweDAwRDcsIDB4MDBEMiwgMHgwMEUwLCAweDAwRTAsIDB4NDk3NSwKKyAgICAweDAwRTEsIDB4MDBFMSwgMHg0OTczLCAweDAwRTgsIDB4MDBFOCwgMHg0OTdBLCAweDAwRTksIDB4MDBFOSwgMHg0OTc4LAorICAgIDB4MDBFQSwgMHgwMEVBLCAweDQ5OTAsIDB4MDBFQywgMHgwMEVDLCAweDQ5N0UsIDB4MDBFRCwgMHgwMEVELCAweDQ5N0MsCisgICAgMHgwMEYyLCAweDAwRjIsIDB4NDk4MiwgMHgwMEYzLCAweDAwRjMsIDB4NDk4MCwgMHgwMEY3LCAweDAwRjcsIDB4MDBEMywKKyAgICAweDAwRjgsIDB4MDBGOCwgMHg0OTk4LCAweDAwRjksIDB4MDBGOSwgMHg0OTg2LCAweDAwRkEsIDB4MDBGQSwgMHg0OTg0LAorICAgIDB4MDBGQywgMHgwMEZDLCAweDQ5OEIsIDB4MDEwMCwgMHgwMTAwLCAweDQ5NjEsIDB4MDEwMSwgMHgwMTAxLCAweDQ5NzIsCisgICAgMHgwMTEyLCAweDAxMTIsIDB4NDk2NSwgMHgwMTEzLCAweDAxMTMsIDB4NDk3NywgMHgwMTFBLCAweDAxMUEsIDB4NDk2NywKKyAgICAweDAxMUIsIDB4MDExQiwgMHg0OTc5LCAweDAxMkIsIDB4MDEyQiwgMHg0OTdCLCAweDAxNEIsIDB4MDE0QiwgMHg0OTk5LAorICAgIDB4MDE0QywgMHgwMTRDLCAweDQ5NjksIDB4MDE0RCwgMHgwMTRELCAweDQ5N0YsIDB4MDE1MywgMHgwMTUzLCAweDQ5OTcsCisgICAgMHgwMTZCLCAweDAxNkIsIDB4NDk4MywgMHgwMUNELCAweDAxQ0QsIDB4NDk2MywgMHgwMUNFLCAweDAxQ0UsIDB4NDk3NCwKKyAgICAweDAxRDAsIDB4MDFEMCwgMHg0OTdELCAweDAxRDEsIDB4MDFEMSwgMHg0OTZCLCAweDAxRDIsIDB4MDFEMiwgMHg0OTgxLAorICAgIDB4MDFENCwgMHgwMUQ0LCAweDQ5ODUsIDB4MDFENiwgMHgwMUQ2LCAweDQ5ODcsIDB4MDFEOCwgMHgwMUQ4LCAweDQ5ODgsCisgICAgMHgwMURBLCAweDAxREEsIDB4NDk4OSwgMHgwMURDLCAweDAxREMsIDB4NDk4QSwgMHgwMjUwLCAweDAyNTAsIDB4NDk5MywKKyAgICAweDAyNTEsIDB4MDI1MSwgMHg0OTc2LCAweDAyNTQsIDB4MDI1NCwgMHg0OTk1LCAweDAyNUIsIDB4MDI1QiwgMHg0OTk0LAorICAgIDB4MDI2MSwgMHgwMjYxLCAweDQ5OTEsIDB4MDI2QSwgMHgwMjZBLCAweDQ5OUIsIDB4MDI3NSwgMHgwMjc1LCAweDQ5OTYsCisgICAgMHgwMjgzLCAweDAyODMsIDB4NDk5MiwgMHgwMjhBLCAweDAyOEEsIDB4NDk5QSwgMHgwMkM2LCAweDAyQzYsIDB4MzVCNCwKKyAgICAweDAyQzcsIDB4MDJDNywgMHgwMUY4LCAweDAyQ0EsIDB4MDJDQSwgMHgwMUY3LCAweDAyQ0IsIDB4MDJDQiwgMHgwMUY5LAorICAgIDB4MDJEOSwgMHgwMkQ5LCAweDAxRjYsIDB4MDMwOCwgMHgwMzA4LCAweDM1QjMsIDB4MDM5MSwgMHgwM0ExLCAweDAxQTEsCisgICAgMHgwM0EzLCAweDAzQTksIDB4MDFCMiwgMHgwM0IxLCAweDAzQzEsIDB4MDFCOSwgMHgwM0MzLCAweDAzQzksIDB4MDFDQSwKKyAgICAweDA0MDEsIDB4MDQwMSwgMHgzNjcwLCAweDA0MTAsIDB4MDQxNSwgMHgzNjZBLCAweDA0MTYsIDB4MDQzNSwgMHgzNjcxLAorICAgIDB4MDQzNiwgMHgwNDRGLCAweDM2OTIsIDB4MDQ1MSwgMHgwNDUxLCAweDM2OTEsIDB4MUVCRSwgMHgxRUJFLCAweDQ5NkUsCisgICAgMHgxRUJGLCAweDFFQkYsIDB4NDk4RCwgMHgxRUMwLCAweDFFQzAsIDB4NDk3MCwgMHgxRUMxLCAweDFFQzEsIDB4NDk4RiwKKyAgICAweDIwMTMsIDB4MjAxMywgMHgwMDc5LCAweDIwMTQsIDB4MjAxNCwgMHgwMDdCLCAweDIwMTgsIDB4MjAxOSwgMHgwMEE2LAorICAgIDB4MjAxQywgMHgyMDFELCAweDAwQTgsIDB4MjAyMiwgMHgyMDIyLCAweDAwNjgsIDB4MjAyNSwgMHgyMDI1LCAweDAwNkYsCisgICAgMHgyMDI2LCAweDIwMjYsIDB4MDA2RSwgMHgyMDMyLCAweDIwMzIsIDB4MDBBRCwgMHgyMDM1LCAweDIwMzUsIDB4MDBBQywKKyAgICAweDIwM0IsIDB4MjAzQiwgMHgwMEIxLCAweDIwM0UsIDB4MjAzRSwgMHgwMEMzLCAweDIwQUMsIDB4MjBBQywgMHg0NEMxLAorICAgIDB4MjEwMywgMHgyMTAzLCAweDAxMEEsIDB4MjEwNSwgMHgyMTA1LCAweDAwQzIsIDB4MjEwOSwgMHgyMTA5LCAweDAxMEIsCisgICAgMHgyMTE2LCAweDIxMTYsIDB4MzZFNiwgMHgyMTIxLCAweDIxMjEsIDB4MzZFNywgMHgyMTYwLCAweDIxNjksIDB4MDE1NywKKyAgICAweDIxNzAsIDB4MjE3OSwgMHgwMjBFLCAweDIxOTAsIDB4MjE5MCwgMHgwMEY4LCAweDIxOTEsIDB4MjE5MSwgMHgwMEY1LAorICAgIDB4MjE5MiwgMHgyMTkyLCAweDAwRjcsIDB4MjE5MywgMHgyMTkzLCAweDAwRjYsIDB4MjE5NiwgMHgyMTk3LCAweDAwRjksCisgICAgMHgyMTk4LCAweDIxOTgsIDB4MDBGQywgMHgyMTk5LCAweDIxOTksIDB4MDBGQiwgMHgyMUI4LCAweDIxQjksIDB4MzZBRCwKKyAgICAweDIxRTcsIDB4MjFFNywgMHgzNkFDLCAweDIyMUEsIDB4MjIxQSwgMHgwMEQ1LCAweDIyMUUsIDB4MjIxRSwgMHgwMERDLAorICAgIDB4MjIxRiwgMHgyMjFGLCAweDAwRTksIDB4MjIyMCwgMHgyMjIwLCAweDAwRTgsIDB4MjIyMywgMHgyMjIzLCAweDAwRkUsCisgICAgMHgyMjI1LCAweDIyMjUsIDB4MDBGRCwgMHgyMjI5LCAweDIyMkEsIDB4MDBFNSwgMHgyMjJCLCAweDIyMkIsIDB4MDBFRCwKKyAgICAweDIyMkUsIDB4MjIyRSwgMHgwMEVFLCAweDIyMzQsIDB4MjIzNCwgMHgwMEYwLCAweDIyMzUsIDB4MjIzNSwgMHgwMEVGLAorICAgIDB4MjIzQywgMHgyMjNDLCAweDAwRTQsIDB4MjI1MiwgMHgyMjUyLCAweDAwREQsIDB4MjI2MCwgMHgyMjYwLCAweDAwREIsCisgICAgMHgyMjYxLCAweDIyNjEsIDB4MDBERSwgMHgyMjY2LCAweDIyNjcsIDB4MDBEOSwgMHgyMkE1LCAweDIyQTUsIDB4MDBFNywKKyAgICAweDIyQkYsIDB4MjJCRiwgMHgwMEVBLCAweDI0MDAsIDB4MjQxRiwgMHgwMjMyLCAweDI0MjEsIDB4MjQyMSwgMHgwMjUyLAorICAgIDB4MjQ2MCwgMHgyNDY5LCAweDAxRkEsIDB4MjQ3NCwgMHgyNDdELCAweDAyMDQsIDB4MjUwMCwgMHgyNTAwLCAweDAxMzcsCisgICAgMHgyNTAyLCAweDI1MDIsIDB4MDEzOCwgMHgyNTBDLCAweDI1MEMsIDB4MDEzQSwgMHgyNTEwLCAweDI1MTAsIDB4MDEzQiwKKyAgICAweDI1MTQsIDB4MjUxNCwgMHgwMTNDLCAweDI1MTgsIDB4MjUxOCwgMHgwMTNELCAweDI1MUMsIDB4MjUxQywgMHgwMTM1LAorICAgIDB4MjUyNCwgMHgyNTI0LCAweDAxMzQsIDB4MjUyQywgMHgyNTJDLCAweDAxMzMsIDB4MjUzNCwgMHgyNTM0LCAweDAxMzIsCisgICAgMHgyNTNDLCAweDI1M0MsIDB4MDEzMSwgMHgyNTUwLCAweDI1NTAsIDB4MDE0MiwgMHgyNTUxLCAweDI1NTEsIDB4MzcwQSwKKyAgICAweDI1NTIsIDB4MjU1MiwgMHgzNkY4LCAweDI1NTMsIDB4MjU1MywgMHgzNzAxLCAweDI1NTQsIDB4MjU1NCwgMHgzNkVGLAorICAgIDB4MjU1NSwgMHgyNTU1LCAweDM2RkEsIDB4MjU1NiwgMHgyNTU2LCAweDM3MDMsIDB4MjU1NywgMHgyNTU3LCAweDM2RjEsCisgICAgMHgyNTU4LCAweDI1NTgsIDB4MzZGRSwgMHgyNTU5LCAweDI1NTksIDB4MzcwNywgMHgyNTVBLCAweDI1NUEsIDB4MzZGNSwKKyAgICAweDI1NUIsIDB4MjU1QiwgMHgzNzAwLCAweDI1NUMsIDB4MjU1QywgMHgzNzA5LCAweDI1NUQsIDB4MjU1RCwgMHgzNkY3LAorICAgIDB4MjU1RSwgMHgyNTVFLCAweDAxNDMsIDB4MjU1RiwgMHgyNTVGLCAweDM3MDQsIDB4MjU2MCwgMHgyNTYwLCAweDM2RjIsCisgICAgMHgyNTYxLCAweDI1NjEsIDB4MDE0NSwgMHgyNTYyLCAweDI1NjIsIDB4MzcwNiwgMHgyNTYzLCAweDI1NjMsIDB4MzZGNCwKKyAgICAweDI1NjQsIDB4MjU2NCwgMHgzNkY5LCAweDI1NjUsIDB4MjU2NSwgMHgzNzAyLCAweDI1NjYsIDB4MjU2NiwgMHgzNkYwLAorICAgIDB4MjU2NywgMHgyNTY3LCAweDM2RkYsIDB4MjU2OCwgMHgyNTY4LCAweDM3MDgsIDB4MjU2OSwgMHgyNTY5LCAweDM2RjYsCisgICAgMHgyNTZBLCAweDI1NkEsIDB4MDE0NCwgMHgyNTZCLCAweDI1NkIsIDB4MzcwNSwgMHgyNTZDLCAweDI1NkMsIDB4MzZGMywKKyAgICAweDI1NkQsIDB4MjU2RSwgMHgwMTNFLCAweDI1NkYsIDB4MjU2RiwgMHgwMTQxLCAweDI1NzAsIDB4MjU3MCwgMHgwMTQwLAorICAgIDB4MjU3MSwgMHgyNTczLCAweDAxNEEsIDB4MjU4MSwgMHgyNTg4LCAweDAxMjIsIDB4MjU4OSwgMHgyNTg5LCAweDAxMzAsCisgICAgMHgyNThBLCAweDI1OEEsIDB4MDEyRiwgMHgyNThCLCAweDI1OEIsIDB4MDEyRSwgMHgyNThDLCAweDI1OEMsIDB4MDEyRCwKKyAgICAweDI1OEQsIDB4MjU4RCwgMHgwMTJDLCAweDI1OEUsIDB4MjU4RSwgMHgwMTJCLCAweDI1OEYsIDB4MjU4RiwgMHgwMTJBLAorICAgIDB4MjU5MywgMHgyNTkzLCAweDM3MTAsIDB4MjU5NCwgMHgyNTk0LCAweDAxMzYsIDB4MjU5NSwgMHgyNTk1LCAweDAxMzksCisgICAgMHgyNUEwLCAweDI1QTAsIDB4MDBCRSwgMHgyNUExLCAweDI1QTEsIDB4MDBCRCwgMHgyNUIyLCAweDI1QjIsIDB4MDBCNywKKyAgICAweDI1QjMsIDB4MjVCMywgMHgwMEI2LCAweDI1QkMsIDB4MjVCQywgMHgwMEMwLCAweDI1QkQsIDB4MjVCRCwgMHgwMEJGLAorICAgIDB4MjVDNiwgMHgyNUM2LCAweDAwQkMsIDB4MjVDNywgMHgyNUM3LCAweDAwQkIsIDB4MjVDQiwgMHgyNUNCLCAweDAwQjQsCisgICAgMHgyNUNFLCAweDI1Q0UsIDB4MDBCOCwgMHgyNUNGLCAweDI1Q0YsIDB4MDBCNSwgMHgyNUUyLCAweDI1RTMsIDB4MDE0NiwKKyAgICAweDI1RTQsIDB4MjVFNCwgMHgwMTQ5LCAweDI1RTUsIDB4MjVFNSwgMHgwMTQ4LCAweDI2MDUsIDB4MjYwNSwgMHgwMEJBLAorICAgIDB4MjYwNiwgMHgyNjA2LCAweDAwQjksIDB4MjYwOSwgMHgyNjA5LCAweDAwRjQsIDB4MjY0MCwgMHgyNjQwLCAweDAwRjEsCisgICAgMHgyNjQxLCAweDI2NDEsIDB4MDBGMywgMHgyNjQyLCAweDI2NDIsIDB4MDBGMiwgMHgyNzNELCAweDI3M0QsIDB4MzVDMCwKKyAgICAweDJFODAsIDB4MkU4MCwgMHg0NEM4LCAweDJFODQsIDB4MkU4NCwgMHg0NTFDLCAweDJFODYsIDB4MkU4OCwgMHg0NTFELAorICAgIDB4MkU4QSwgMHgyRThBLCAweDQ1MjAsIDB4MkU4QywgMHgyRThELCAweDQ1MjEsIDB4MkU5NSwgMHgyRTk1LCAweDQ1MjMsCisgICAgMHgyRTlDLCAweDJFOUMsIDB4NDUyNCwgMHgyRTlELCAweDJFOUQsIDB4MDJEQywgMHgyRUE1LCAweDJFQTUsIDB4NDUyNSwKKyAgICAweDJFQTcsIDB4MkVBNywgMHg0NTI2LCAweDJFQUEsIDB4MkVBQSwgMHg0NTI3LCAweDJFQUMsIDB4MkVBQywgMHg0NTI4LAorICAgIDB4MkVBRSwgMHgyRUFFLCAweDQ1MjksIDB4MkVCNiwgMHgyRUI2LCAweDQ1MkEsIDB4MkVCQywgMHgyRUJDLCAweDQ1MkIsCisgICAgMHgyRUJFLCAweDJFQkUsIDB4NDUyQywgMHgyRUM2LCAweDJFQzYsIDB4MDUwOSwgMHgyRUNBLCAweDJFQ0EsIDB4NDUyRCwKKyAgICAweDJFQ0MsIDB4MkVDRCwgMHg0NTJFLCAweDJFQ0YsIDB4MkVDRiwgMHg0NTMwLCAweDJFRDYsIDB4MkVENywgMHg0NTMxLAorICAgIDB4MkVERSwgMHgyRURFLCAweDQ1MzMsIDB4MkVFMywgMHgyRUUzLCAweDA5RjYsIDB4MkYzMywgMHgyRjMzLCAweDAyMjcsCisgICAgMHgzMDAwLCAweDMwMDAsIDB4MDA2MywgMHgzMDAxLCAweDMwMDIsIDB4MDA2NSwgMHgzMDAzLCAweDMwMDMsIDB4MDBCMywKKyAgICAweDMwMDUsIDB4MzAwNywgMHgzNUJBLCAweDMwMDgsIDB4MzAwOSwgMHgwMDk0LCAweDMwMEEsIDB4MzAwQiwgMHgwMDkwLAorICAgIDB4MzAwQywgMHgzMDBELCAweDAwOTgsIDB4MzAwRSwgMHgzMDBGLCAweDAwOUMsIDB4MzAxMCwgMHgzMDExLCAweDAwOEMsCisgICAgMHgzMDEyLCAweDMwMTIsIDB4MDEwNSwgMHgzMDE0LCAweDMwMTUsIDB4MDA4OCwgMHgzMDFELCAweDMwMUUsIDB4MDBBQSwKKyAgICAweDMwMjEsIDB4MzAyOSwgMHgwMTYxLCAweDMwNDEsIDB4MzA5MywgMHgzNUMxLCAweDMwOUIsIDB4MzA5QywgMHg0NEM2LAorICAgIDB4MzA5RCwgMHgzMDlFLCAweDM1QjcsIDB4MzBBMSwgMHgzMEY2LCAweDM2MTQsIDB4MzBGQywgMHgzMEZDLCAweDM1QkQsCisgICAgMHgzMEZELCAweDMwRkUsIDB4MzVCNSwgMHgzMTA1LCAweDMxMjksIDB4MDFEMSwgMHgzMjMxLCAweDMyMzEsIDB4MzZFNSwKKyAgICAweDMyQTMsIDB4MzJBMywgMHgwMEMxLCAweDMzOEUsIDB4MzM4RiwgMHgwMTE1LCAweDMzOUMsIDB4MzM5RSwgMHgwMTEwLAorICAgIDB4MzNBMSwgMHgzM0ExLCAweDAxMTQsIDB4MzNDNCwgMHgzM0M0LCAweDAxMTcsIDB4MzNDRSwgMHgzM0NFLCAweDAxMTMsCisgICAgMHgzM0QxLCAweDMzRDEsIDB4MDBFQywgMHgzM0QyLCAweDMzRDIsIDB4MDBFQiwgMHgzM0Q1LCAweDMzRDUsIDB4MDEwRiwKKyAgICAweDM0MzUsIDB4MzQzNSwgMHgzOUJELCAweDM0NDAsIDB4MzQ0MCwgMHgzQzY3LCAweDM0NEMsIDB4MzQ0QywgMHg0NTkzLAorICAgIDB4MzQ2NCwgMHgzNDY0LCAweDNBODUsIDB4MzQ3MywgMHgzNDczLCAweDNEQzUsIDB4MzQ3QSwgMHgzNDdBLCAweDQwMzMsCisgICAgMHgzNDdELCAweDM0N0QsIDB4NDU5NywgMHgzNDdFLCAweDM0N0UsIDB4NDZBMywgMHgzNDkzLCAweDM0OTMsIDB4NDM5RSwKKyAgICAweDM0OTYsIDB4MzQ5NiwgMHgzN0RDLCAweDM0QTUsIDB4MzRBNSwgMHg0NTk4LCAweDM0QUYsIDB4MzRBRiwgMHgzQzdGLAorICAgIDB4MzRCQywgMHgzNEJDLCAweDQzODAsIDB4MzRDMSwgMHgzNEMxLCAweDQ0RkIsIDB4MzRDOCwgMHgzNEM4LCAweDNEMDAsCisgICAgMHgzNERGLCAweDM0REYsIDB4M0VBNCwgMHgzNEU0LCAweDM0RTQsIDB4M0U1NCwgMHgzNEZCLCAweDM0RkIsIDB4M0RDQSwKKyAgICAweDM1MDYsIDB4MzUwNiwgMHg0MzM2LCAweDM1M0UsIDB4MzUzRSwgMHg0NEU3LCAweDM1NTEsIDB4MzU1MSwgMHg0NUExLAorICAgIDB4MzU1MywgMHgzNTUzLCAweDQzQTUsIDB4MzU2MSwgMHgzNTYxLCAweDQwRDgsIDB4MzU2RCwgMHgzNTZELCAweDQ1QTQsCisgICAgMHgzNTcwLCAweDM1NzAsIDB4M0IyRiwgMHgzNTcyLCAweDM1NzIsIDB4NDVBNSwgMHgzNTc3LCAweDM1NzcsIDB4M0VDQiwKKyAgICAweDM1NzgsIDB4MzU3OCwgMHg0Mzc5LCAweDM1ODQsIDB4MzU4NCwgMHgzOUZCLCAweDM1OTcsIDB4MzU5NywgMHgzQjJELAorICAgIDB4MzU5OCwgMHgzNTk4LCAweDQ1QjAsIDB4MzVBMSwgMHgzNUExLCAweDQwRTIsIDB4MzVBNSwgMHgzNUE1LCAweDQ1QjEsCisgICAgMHgzNUFELCAweDM1QUQsIDB4M0VGQywgMHgzNUJGLCAweDM1QkYsIDB4NDVCMiwgMHgzNUMxLCAweDM1QzEsIDB4NDU4MCwKKyAgICAweDM1QzUsIDB4MzVDNSwgMHg0NUI0LCAweDM1QzcsIDB4MzVDNywgMHg0NTlGLCAweDM1Q0EsIDB4MzVDQSwgMHgzRTQzLAorICAgIDB4MzVDRSwgMHgzNUNFLCAweDNFODEsIDB4MzVEMiwgMHgzNUQyLCAweDNGQzksIDB4MzVENiwgMHgzNUQ2LCAweDNGQjUsCisgICAgMHgzNURCLCAweDM1REIsIDB4NDcwRCwgMHgzNURELCAweDM1REQsIDB4NDNBQywgMHgzNUYxLCAweDM1RjEsIDB4NDY5NiwKKyAgICAweDM1RjIsIDB4MzVGMiwgMHg0NjI3LCAweDM1RjMsIDB4MzVGMywgMHgzRjZDLCAweDM1RkIsIDB4MzVGQiwgMHg0NUM4LAorICAgIDB4MzVGRSwgMHgzNUZFLCAweDNGNkEsIDB4MzYwOSwgMHgzNjA5LCAweDQ1RjUsIDB4MzYxOCwgMHgzNjE4LCAweDQ4NzEsCisgICAgMHgzNjFBLCAweDM2MUEsIDB4NDYxQSwgMHgzNjIzLCAweDM2MjMsIDB4NDBDNiwgMHgzNjJELCAweDM2MkQsIDB4M0U4NiwKKyAgICAweDM2MzUsIDB4MzYzNSwgMHg0OTJFLCAweDM2MzksIDB4MzYzOSwgMHg0MTY1LCAweDM2M0UsIDB4MzYzRSwgMHgzQTA4LAorICAgIDB4MzY0NywgMHgzNjQ3LCAweDQ4MDYsIDB4MzY0OCwgMHgzNjQ4LCAweDM4MDYsIDB4MzY0OSwgMHgzNjQ5LCAweDQwMTMsCisgICAgMHgzNjRFLCAweDM2NEUsIDB4NDY5OCwgMHgzNjVGLCAweDM2NUYsIDB4M0RGMywgMHgzNjdBLCAweDM2N0EsIDB4M0VFMywKKyAgICAweDM2ODEsIDB4MzY4MSwgMHg0NUE2LCAweDM2OUEsIDB4MzY5QSwgMHgzQzcxLCAweDM2QTUsIDB4MzZBNSwgMHg0OTAyLAorICAgIDB4MzZBQSwgMHgzNkFBLCAweDNCMzAsIDB4MzZBQywgMHgzNkFDLCAweDQ5MDAsIDB4MzZCMCwgMHgzNkIwLCAweDNDREYsCisgICAgMHgzNkIxLCAweDM2QjEsIDB4NDBDRCwgMHgzNkI1LCAweDM2QjUsIDB4M0JDMiwgMHgzNkI5LCAweDM2QjksIDB4NDg4NywKKyAgICAweDM2QkMsIDB4MzZCQywgMHgzQ0ZGLCAweDM2QzEsIDB4MzZDMSwgMHgzN0M1LCAweDM2QzMsIDB4MzZDMywgMHg0MEU1LAorICAgIDB4MzZDNCwgMHgzNkM0LCAweDM5MDUsIDB4MzZDNSwgMHgzNkM1LCAweDQyOTYsIDB4MzZDNywgMHgzNkM3LCAweDNEM0EsCisgICAgMHgzNkM4LCAweDM2QzgsIDB4NDgyMCwgMHgzNkQzLCAweDM2RDMsIDB4M0EzOCwgMHgzNkQ0LCAweDM2RDQsIDB4M0JCMywKKyAgICAweDM2RDYsIDB4MzZENiwgMHgzRDBDLCAweDM2REQsIDB4MzZERCwgMHgzQTM2LCAweDM2RTEsIDB4MzZFMSwgMHgzOTdDLAorICAgIDB4MzZFMiwgMHgzNkUyLCAweDNDREQsIDB4MzZFNSwgMHgzNkU1LCAweDQyMTYsIDB4MzZFNiwgMHgzNkU2LCAweDQwRkMsCisgICAgMHgzNkY1LCAweDM2RjUsIDB4M0ExOCwgMHgzNzAxLCAweDM3MDEsIDB4M0EzNCwgMHgzNzAzLCAweDM3MDMsIDB4NDYwRiwKKyAgICAweDM3MDgsIDB4MzcwOCwgMHg0MEZGLCAweDM3MEEsIDB4MzcwQSwgMHgzQ0Q1LCAweDM3MEQsIDB4MzcwRCwgMHg0MjM4LAorICAgIDB4MzcxQywgMHgzNzFDLCAweDNERkUsIDB4MzcyMiwgMHgzNzIyLCAweDM5NzksIDB4MzcyMywgMHgzNzIzLCAweDM5ODAsCisgICAgMHgzNzI1LCAweDM3MjUsIDB4Mzg0OSwgMHgzNzJDLCAweDM3MkMsIDB4M0M4QywgMHgzNzJELCAweDM3MkQsIDB4M0QzNywKKyAgICAweDM3MzAsIDB4MzczMCwgMHg0OTVDLCAweDM3MzIsIDB4MzczMiwgMHg0MTA2LCAweDM3MzMsIDB4MzczMywgMHgzOTk3LAorICAgIDB4MzczQSwgMHgzNzNBLCAweDNFNTYsIDB4Mzc0MCwgMHgzNzQwLCAweDQyMDIsIDB4Mzc0MywgMHgzNzQzLCAweDQwMzYsCisgICAgMHgzNzYyLCAweDM3NjIsIDB4M0RCNiwgMHgzNzZGLCAweDM3NkYsIDB4NDdDQiwgMHgzNzk3LCAweDM3OTcsIDB4NDVFRCwKKyAgICAweDM3QTAsIDB4MzdBMCwgMHgzQTI4LCAweDM3QjksIDB4MzdCOSwgMHg0M0I3LCAweDM3QkUsIDB4MzdCRSwgMHgzOTNFLAorICAgIDB4MzdGMiwgMHgzN0YyLCAweDNCQTEsIDB4MzdGOCwgMHgzN0Y4LCAweDQyRDIsIDB4MzdGQiwgMHgzN0ZCLCAweDNFRjUsCisgICAgMHgzODBGLCAweDM4MEYsIDB4NDYyQywgMHgzODE5LCAweDM4MTksIDB4MzlBRiwgMHgzODIwLCAweDM4MjAsIDB4NDYyRiwKKyAgICAweDM4MkQsIDB4MzgyRCwgMHg0MTJFLCAweDM4MzYsIDB4MzgzNiwgMHg0MTMzLCAweDM4MzgsIDB4MzgzOCwgMHg0M0JCLAorICAgIDB4Mzg2MywgMHgzODYzLCAweDQ2QzMsIDB4MzhBMCwgMHgzOEEwLCAweDQxNDUsIDB4MzhDMywgMHgzOEMzLCAweDM5MTIsCisgICAgMHgzOENDLCAweDM4Q0MsIDB4NDA3NiwgMHgzOEQxLCAweDM4RDEsIDB4M0E5NSwgMHgzOEZBLCAweDM4RkEsIDB4NDRFQiwKKyAgICAweDM5MDgsIDB4MzkwOCwgMHg0NjMyLCAweDM5MTQsIDB4MzkxNCwgMHg0M0JFLCAweDM5MjcsIDB4MzkyNywgMHgzQzMxLAorICAgIDB4MzkzMiwgMHgzOTMyLCAweDQxODIsIDB4MzkzRiwgMHgzOTNGLCAweDQ2MzMsIDB4Mzk0RCwgMHgzOTRELCAweDQ2MzQsCisgICAgMHgzOTYzLCAweDM5NjMsIDB4NDE2MywgMHgzOTgwLCAweDM5ODAsIDB4Mzg3NCwgMHgzOTg5LCAweDM5ODksIDB4NDYzOCwKKyAgICAweDM5OEEsIDB4Mzk4QSwgMHgzQ0U4LCAweDM5OTIsIDB4Mzk5MiwgMHg0Mzc2LCAweDM5OTksIDB4Mzk5OSwgMHgzOUJBLAorICAgIDB4Mzk5QiwgMHgzOTlCLCAweDNEQjMsIDB4MzlBMSwgMHgzOUExLCAweDNFMTksIDB4MzlBNCwgMHgzOUE0LCAweDNFMEYsCisgICAgMHgzOUI4LCAweDM5QjgsIDB4NDYzQiwgMHgzOURDLCAweDM5REMsIDB4M0VDRSwgMHgzOUUyLCAweDM5RTIsIDB4NDZDOCwKKyAgICAweDM5RTUsIDB4MzlFNSwgMHgzOTNCLCAweDM5RUMsIDB4MzlFQywgMHg0MzEwLCAweDM5RjgsIDB4MzlGOCwgMHg0NjNFLAorICAgIDB4MzlGQiwgMHgzOUZCLCAweDQzNDUsIDB4MzlGRSwgMHgzOUZFLCAweDQzNjgsIDB4M0EwMSwgMHgzQTAxLCAweDQxRTAsCisgICAgMHgzQTAzLCAweDNBMDMsIDB4NDY0MCwgMHgzQTA2LCAweDNBMDYsIDB4NDM3NywgMHgzQTE3LCAweDNBMTcsIDB4NDE5MCwKKyAgICAweDNBMTgsIDB4M0ExOCwgMHg0MzhGLCAweDNBMjksIDB4M0EyOSwgMHgzQTVFLCAweDNBMkEsIDB4M0EyQSwgMHgzRURGLAorICAgIDB4M0EzNCwgMHgzQTM0LCAweDQzMTksIDB4M0E0QiwgMHgzQTRCLCAweDQ2NDQsIDB4M0E1MiwgMHgzQTUyLCAweDNFRDMsCisgICAgMHgzQTU3LCAweDNBNTcsIDB4NDE5RSwgMHgzQTVDLCAweDNBNUMsIDB4M0ZDNCwgMHgzQTVFLCAweDNBNUUsIDB4M0IwNywKKyAgICAweDNBNjYsIDB4M0E2NiwgMHg0MTlDLCAweDNBNjcsIDB4M0E2NywgMHg0MzMzLCAweDNBOTcsIDB4M0E5NywgMHg0NjQ3LAorICAgIDB4M0FBQiwgMHgzQUFCLCAweDQwOTEsIDB4M0FCRCwgMHgzQUJELCAweDQ2NDksIDB4M0FERSwgMHgzQURFLCAweDQxNEMsCisgICAgMHgzQUUwLCAweDNBRTAsIDB4M0E3QSwgMHgzQUYwLCAweDNBRjAsIDB4NDZCMiwgMHgzQUYyLCAweDNBRjIsIDB4NDY0QywKKyAgICAweDNBRkIsIDB4M0FGQiwgMHgzQUYyLCAweDNCMEUsIDB4M0IwRSwgMHgzOEU4LCAweDNCMTksIDB4M0IxOSwgMHg0NkM1LAorICAgIDB4M0IyMiwgMHgzQjIyLCAweDQ2NEUsIDB4M0IyQiwgMHgzQjJCLCAweDQ5NTYsIDB4M0IzOSwgMHgzQjM5LCAweDQ3NEIsCisgICAgMHgzQjQyLCAweDNCNDIsIDB4NDY1MCwgMHgzQjU4LCAweDNCNTgsIDB4NDY1MiwgMHgzQjYwLCAweDNCNjAsIDB4MzkzQSwKKyAgICAweDNCNzEsIDB4M0I3MSwgMHg0NjU2LCAweDNCNzIsIDB4M0I3MiwgMHg0NjU1LCAweDNCN0IsIDB4M0I3QiwgMHg0NjU3LAorICAgIDB4M0I3QywgMHgzQjdDLCAweDM4NUEsIDB4M0I4MCwgMHgzQjgwLCAweDQxRTIsIDB4M0I5NiwgMHgzQjk2LCAweDNBOUMsCisgICAgMHgzQjk5LCAweDNCOTksIDB4M0E5OCwgMHgzQkExLCAweDNCQTEsIDB4NDFFOSwgMHgzQkJDLCAweDNCQkMsIDB4NDNDOCwKKyAgICAweDNCQkUsIDB4M0JCRSwgMHgzREIxLCAweDNCQzIsIDB4M0JDMiwgMHg0MTM0LCAweDNCQzQsIDB4M0JDNCwgMHgzQUEwLAorICAgIDB4M0JENywgMHgzQkQ3LCAweDNBQUMsIDB4M0JERCwgMHgzQkRELCAweDQ2NUYsIDB4M0JFQywgMHgzQkVDLCAweDQ2NjQsCisgICAgMHgzQkYyLCAweDNCRjIsIDB4NDY2NiwgMHgzQkYzLCAweDNCRjMsIDB4NDFGMywgMHgzQkY0LCAweDNCRjQsIDB4M0E2RSwKKyAgICAweDNDMEQsIDB4M0MwRCwgMHg0MUY3LCAweDNDMTEsIDB4M0MxMSwgMHgzRTQwLCAweDNDMTUsIDB4M0MxNSwgMHgzOTk4LAorICAgIDB4M0M1NCwgMHgzQzU0LCAweDNFMDAsIDB4M0NDQiwgMHgzQ0NCLCAweDQ2NzAsIDB4M0NDRCwgMHgzQ0NELCAweDNDRTUsCisgICAgMHgzQ0QxLCAweDNDRDEsIDB4NDAwMywgMHgzQ0Q2LCAweDNDRDYsIDB4M0NGNywgMHgzQ0RDLCAweDNDREMsIDB4NDA0RSwKKyAgICAweDNDRUIsIDB4M0NFQiwgMHg0MjE3LCAweDNDRUYsIDB4M0NFRiwgMHg0Njc1LCAweDNEMTMsIDB4M0QxMywgMHgzNzczLAorICAgIDB4M0QxRCwgMHgzRDFELCAweDM5M0MsIDB4M0QzMiwgMHgzRDMyLCAweDQ5NTcsIDB4M0QzQiwgMHgzRDNCLCAweDQyNDUsCisgICAgMHgzRDQ2LCAweDNENDYsIDB4NDY4NSwgMHgzRDRDLCAweDNENEMsIDB4M0NFQiwgMHgzRDRFLCAweDNENEUsIDB4NDI0MiwKKyAgICAweDNENTEsIDB4M0Q1MSwgMHgzOEVBLCAweDNENUYsIDB4M0Q1RiwgMHg0MTU5LCAweDNENjIsIDB4M0Q2MiwgMHgzQzVFLAorICAgIDB4M0Q2OSwgMHgzRDY5LCAweDNDRUEsIDB4M0Q2QSwgMHgzRDZBLCAweDQ2ODksIDB4M0Q2RiwgMHgzRDZGLCAweDNDRkMsCisgICAgMHgzRDc1LCAweDNENzUsIDB4NDY4QSwgMHgzRDdELCAweDNEN0QsIDB4M0MyRiwgMHgzRDg1LCAweDNEODUsIDB4NDk0QiwKKyAgICAweDNEOEEsIDB4M0Q4QSwgMHg0NjhELCAweDNEOEYsIDB4M0Q4RiwgMHgzQUJELCAweDNEOTEsIDB4M0Q5MSwgMHg0NjhGLAorICAgIDB4M0RBNSwgMHgzREE1LCAweDNENTYsIDB4M0RBRCwgMHgzREFELCAweDQ2OTksIDB4M0RCNCwgMHgzREI0LCAweDQwQTYsCisgICAgMHgzREJGLCAweDNEQkYsIDB4MzdEMCwgMHgzREM2LCAweDNEQzYsIDB4NDhERSwgMHgzREM3LCAweDNEQzcsIDB4NDE2NCwKKyAgICAweDNEQ0MsIDB4M0RDQywgMHgzRDZGLCAweDNEQ0QsIDB4M0RDRCwgMHgzQUYzLCAweDNERDMsIDB4M0REMywgMHgzN0UxLAorICAgIDB4M0REQiwgMHgzRERCLCAweDNGRkYsIDB4M0RFNywgMHgzREU3LCAweDM5OTksIDB4M0RFOCwgMHgzREU4LCAweDQyNUQsCisgICAgMHgzREVCLCAweDNERUIsIDB4M0U1QSwgMHgzREYzLCAweDNERjMsIDB4NDZENCwgMHgzREY3LCAweDNERjcsIDB4NDhBQiwKKyAgICAweDNERkMsIDB4M0RGQywgMHg0NjJCLCAweDNERkQsIDB4M0RGRCwgMHgzQzE0LCAweDNFMDYsIDB4M0UwNiwgMHg0OTFELAorICAgIDB4M0U0MCwgMHgzRTQwLCAweDQxNjksIDB4M0U0MywgMHgzRTQzLCAweDQzNkQsIDB4M0U0OCwgMHgzRTQ4LCAweDQ1OTUsCisgICAgMHgzRTU1LCAweDNFNTUsIDB4NDI3RiwgMHgzRTc0LCAweDNFNzQsIDB4M0VFMiwgMHgzRUE4LCAweDNFQTgsIDB4NDMwNCwKKyAgICAweDNFQTksIDB4M0VBOSwgMHg0NkVELCAweDNFQUEsIDB4M0VBQSwgMHg0MDc1LCAweDNFQUQsIDB4M0VBRCwgMHgzQjlELAorICAgIDB4M0VCMSwgMHgzRUIxLCAweDNBRDgsIDB4M0VCOCwgMHgzRUI4LCAweDNBNEIsIDB4M0VCRiwgMHgzRUJGLCAweDNCMEIsCisgICAgMHgzRUMyLCAweDNFQzIsIDB4M0JEOCwgMHgzRUM3LCAweDNFQzcsIDB4Mzk3NSwgMHgzRUNBLCAweDNFQ0EsIDB4NDZGMSwKKyAgICAweDNFQ0MsIDB4M0VDQywgMHgzQkUyLCAweDNFRDAsIDB4M0VEMCwgMHgzODU0LCAweDNFRDEsIDB4M0VEMSwgMHg0NkYyLAorICAgIDB4M0VENiwgMHgzRUQ2LCAweDNDQUQsIDB4M0VENywgMHgzRUQ3LCAweDQyOUYsIDB4M0VEQSwgMHgzRURBLCAweDNEMDIsCisgICAgMHgzRURFLCAweDNFREUsIDB4MzlGMiwgMHgzRUUxLCAweDNFRTEsIDB4M0NBOCwgMHgzRUUyLCAweDNFRTIsIDB4NDZGNiwKKyAgICAweDNFRTcsIDB4M0VFNywgMHgzQkRDLCAweDNFRTksIDB4M0VFOSwgMHgzQ0E0LCAweDNFRUIsIDB4M0VFQiwgMHgzOTZBLAorICAgIDB4M0VGMCwgMHgzRUYwLCAweDQ2RjcsIDB4M0VGMywgMHgzRUYzLCAweDNBREQsIDB4M0VGNCwgMHgzRUY0LCAweDQ2RjgsCisgICAgMHgzRUZBLCAweDNFRkEsIDB4NDZGOSwgMHgzRUZDLCAweDNFRkMsIDB4M0JFOCwgMHgzRUZGLCAweDNFRkYsIDB4M0FGNSwKKyAgICAweDNGMDAsIDB4M0YwMCwgMHgzQzBELCAweDNGMDQsIDB4M0YwNCwgMHg0MkMzLCAweDNGMDYsIDB4M0YwNiwgMHgzQUQ3LAorICAgIDB4M0YwRSwgMHgzRjBFLCAweDQ2RkIsIDB4M0Y1MywgMHgzRjUzLCAweDQ2RkMsIDB4M0Y1OCwgMHgzRjU4LCAweDNBRTksCisgICAgMHgzRjU5LCAweDNGNTksIDB4NDA4OSwgMHgzRjYzLCAweDNGNjMsIDB4M0FFNiwgMHgzRjdDLCAweDNGN0MsIDB4NDcwMCwKKyAgICAweDNGOTMsIDB4M0Y5MywgMHg0NUNELCAweDNGQzAsIDB4M0ZDMCwgMHg0M0NGLCAweDNGRDcsIDB4M0ZENywgMHg0M0QxLAorICAgIDB4M0ZEQywgMHgzRkRDLCAweDQ3MDQsIDB4M0ZFNSwgMHgzRkU1LCAweDQ2REYsIDB4M0ZFRCwgMHgzRkVELCAweDQzMzUsCisgICAgMHgzRkY5LCAweDNGRjksIDB4NDVENywgMHgzRkZBLCAweDNGRkEsIDB4NDM1NCwgMHg0MDA0LCAweDQwMDQsIDB4NDEwRSwKKyAgICAweDQwMUQsIDB4NDAxRCwgMHg0NzA5LCAweDQwMzksIDB4NDAzOSwgMHg0NzBCLCAweDQwNDUsIDB4NDA0NSwgMHg0NzBDLAorICAgIDB4NDA1MywgMHg0MDUzLCAweDQ1QjYsIDB4NDA1NywgMHg0MDU3LCAweDM5OUQsIDB4NDA2MiwgMHg0MDYyLCAweDNCQ0IsCisgICAgMHg0MDY1LCAweDQwNjUsIDB4M0ZEMywgMHg0MDZBLCAweDQwNkEsIDB4NDcwRiwgMHg0MDZGLCAweDQwNkYsIDB4NDcxMCwKKyAgICAweDQwQTgsIDB4NDBBOCwgMHg0M0Q1LCAweDQwQkIsIDB4NDBCQiwgMHg0NUMwLCAweDQwQkYsIDB4NDBCRiwgMHgzRUVDLAorICAgIDB4NDBDOCwgMHg0MEM4LCAweDNCMEUsIDB4NDBEOCwgMHg0MEQ4LCAweDQxQUIsIDB4NDBERiwgMHg0MERGLCAweDNFMTcsCisgICAgMHg0MEZBLCAweDQwRkEsIDB4M0VCRSwgMHg0MTAzLCAweDQxMDMsIDB4NDNENywgMHg0MTA0LCAweDQxMDQsIDB4NDI1QywKKyAgICAweDQxMDksIDB4NDEwOSwgMHg0NzFDLCAweDQxMEUsIDB4NDEwRSwgMHgzQjFCLCAweDQxMzIsIDB4NDEzMiwgMHgzQjI1LAorICAgIDB4NDE2NywgMHg0MTY3LCAweDQ3MUYsIDB4NDE2QywgMHg0MTZDLCAweDM4QUUsIDB4NDE2RSwgMHg0MTZFLCAweDNCMjMsCisgICAgMHg0MTdGLCAweDQxN0YsIDB4M0I4MiwgMHg0MTkwLCAweDQxOTAsIDB4NDZDMCwgMHg0MUIyLCAweDQxQjIsIDB4NDcyMCwKKyAgICAweDQxQzQsIDB4NDFDNCwgMHg0NzIzLCAweDQxQ0EsIDB4NDFDQSwgMHgzNzNGLCAweDQxQ0YsIDB4NDFDRiwgMHg0NzI2LAorICAgIDB4NDFEQiwgMHg0MURCLCAweDM3QkYsIDB4NDFFRiwgMHg0MUVGLCAweDM3NDMsIDB4NDFGOSwgMHg0MUY5LCAweDNCM0UsCisgICAgMHg0MjExLCAweDQyMTEsIDB4M0I0MSwgMHg0MjQwLCAweDQyNDAsIDB4MzdGMSwgMHg0MjYwLCAweDQyNjAsIDB4NDcyQiwKKyAgICAweDQyNkEsIDB4NDI2QSwgMHgzQjU1LCAweDQyN0EsIDB4NDI3QSwgMHg0NzJDLCAweDQyOEMsIDB4NDI4QywgMHg0NzJGLAorICAgIDB4NDI5NCwgMHg0Mjk0LCAweDQ3MzEsIDB4NDJCNSwgMHg0MkI1LCAweDQwMTAsIDB4NDJCOSwgMHg0MkI5LCAweDM4QTYsCisgICAgMHg0MkJDLCAweDQyQkMsIDB4M0M4QSwgMHg0MkY0LCAweDQyRjQsIDB4M0JCOSwgMHg0MkZCLCAweDQyRkIsIDB4M0NFRSwKKyAgICAweDQyRkMsIDB4NDJGQywgMHg0MUU2LCAweDQzMkIsIDB4NDMyQiwgMHgzNzdELCAweDQzNkUsIDB4NDM2RSwgMHg0NkNBLAorICAgIDB4NDM5NywgMHg0Mzk3LCAweDQ3M0IsIDB4NDNCQSwgMHg0M0JBLCAweDQzNUYsIDB4NDNDMSwgMHg0M0MxLCAweDQ2OTUsCisgICAgMHg0M0Q5LCAweDQzRDksIDB4NDMzRSwgMHg0M0RGLCAweDQzREYsIDB4M0U0OSwgMHg0M0VELCAweDQzRUQsIDB4NDc0NSwKKyAgICAweDQzRjIsIDB4NDNGMiwgMHgzRTQ4LCAweDQ0MDEsIDB4NDQwMSwgMHg0NzRBLCAweDQ0MDIsIDB4NDQwMiwgMHgzQjczLAorICAgIDB4NDQxMywgMHg0NDEzLCAweDQ3NEYsIDB4NDQyNSwgMHg0NDI1LCAweDQ3NTEsIDB4NDQyRCwgMHg0NDJELCAweDQ3NTIsCisgICAgMHg0NDdBLCAweDQ0N0EsIDB4MzdBRiwgMHg0NDhGLCAweDQ0OEYsIDB4NDc1OCwgMHg0NDlGLCAweDQ0OUYsIDB4M0FFMiwKKyAgICAweDQ0QTAsIDB4NDRBMCwgMHgzN0VELCAweDQ0QTIsIDB4NDRBMiwgMHg0MDc5LCAweDQ0QjAsIDB4NDRCMCwgMHg0NzVDLAorICAgIDB4NDRCNywgMHg0NEI3LCAweDNGQTEsIDB4NDRDMCwgMHg0NEMwLCAweDNDMDcsIDB4NDRDNSwgMHg0NEM1LCAweDQyMTAsCisgICAgMHg0NENFLCAweDQ0Q0UsIDB4M0QyMywgMHg0NERELCAweDQ0REQsIDB4MzlERCwgMHg0NERGLCAweDQ0REYsIDB4M0QyMiwKKyAgICAweDQ0RTQsIDB4NDRFNCwgMHgzN0UyLCAweDQ0RTksIDB4NDRFOSwgMHg0MUNGLCAweDQ0RUEsIDB4NDRFQSwgMHgzQjcxLAorICAgIDB4NDRFQiwgMHg0NEVCLCAweDNDRjIsIDB4NDRFQywgMHg0NEVDLCAweDNFQjQsIDB4NDRGNCwgMHg0NEY0LCAweDM5OTIsCisgICAgMHg0NTAzLCAweDQ1MDMsIDB4NDY5RiwgMHg0NTA0LCAweDQ1MDQsIDB4NDc2MywgMHg0NTA5LCAweDQ1MDksIDB4M0U1MCwKKyAgICAweDQ1MEIsIDB4NDUwQiwgMHgzN0Q0LCAweDQ1MTYsIDB4NDUxNiwgMHgzN0Y5LCAweDQ1MUQsIDB4NDUxRCwgMHgzNzY3LAorICAgIDB4NDUyNywgMHg0NTI3LCAweDM3RjcsIDB4NDUyRSwgMHg0NTJFLCAweDNDRDMsIDB4NDUzMywgMHg0NTMzLCAweDNDNTEsCisgICAgMHg0NTNCLCAweDQ1M0IsIDB4NDc2QSwgMHg0NTNELCAweDQ1M0QsIDB4MzhDNCwgMHg0NTNGLCAweDQ1M0YsIDB4M0UxMiwKKyAgICAweDQ1NDMsIDB4NDU0MywgMHgzN0YzLCAweDQ1NTEsIDB4NDU1MSwgMHgzQUU0LCAweDQ1NTIsIDB4NDU1MiwgMHg0MEIzLAorICAgIDB4NDU1NSwgMHg0NTU1LCAweDQyM0UsIDB4NDU1QywgMHg0NTVDLCAweDM3OEIsIDB4NDU2MiwgMHg0NTYyLCAweDQ5NDAsCisgICAgMHg0NTZBLCAweDQ1NkEsIDB4MzgwNCwgMHg0NTc3LCAweDQ1NzcsIDB4NDc2RSwgMHg0NTg1LCAweDQ1ODUsIDB4MzhDNSwKKyAgICAweDQ1RTksIDB4NDVFOSwgMHgzRUU0LCAweDQ2MDYsIDB4NDYwNiwgMHg0NzczLCAweDQ2MEYsIDB4NDYwRiwgMHgzODE1LAorICAgIDB4NDYxNSwgMHg0NjE1LCAweDM4NDMsIDB4NDYxNywgMHg0NjE3LCAweDQ3NzQsIDB4NDY1QiwgMHg0NjVCLCAweDM4MUQsCisgICAgMHg0NjdBLCAweDQ2N0EsIDB4MzlFOSwgMHg0NjgwLCAweDQ2ODAsIDB4M0QwMSwgMHg0NkNGLCAweDQ2Q0YsIDB4M0JBMCwKKyAgICAweDQ2RDAsIDB4NDZEMCwgMHgzREZBLCAweDQ2RjUsIDB4NDZGNSwgMHgzQjlGLCAweDQ3MTMsIDB4NDcxMywgMHgzODMzLAorICAgIDB4NDcxOCwgMHg0NzE4LCAweDNEQzcsIDB4NDc0RSwgMHg0NzRFLCAweDNFQkMsIDB4NDc3QywgMHg0NzdDLCAweDNEQ0QsCisgICAgMHg0Nzk4LCAweDQ3OTgsIDB4NDc4MSwgMHg0N0E2LCAweDQ3QTYsIDB4NDBBMywgMHg0N0I2LCAweDQ3QjYsIDB4M0VFQSwKKyAgICAweDQ3RDUsIDB4NDdENSwgMHg0MzFBLCAweDQ3RUQsIDB4NDdFRCwgMHg0NzgzLCAweDQ3RjQsIDB4NDdGNCwgMHg0MzJGLAorICAgIDB4NDgwMCwgMHg0ODAwLCAweDQ2MUUsIDB4NDgwQiwgMHg0ODBCLCAweDQzNTIsIDB4NDgzNywgMHg0ODM3LCAweDQ3ODcsCisgICAgMHg0ODVELCAweDQ4NUQsIDB4NDEwRiwgMHg0ODcxLCAweDQ4NzEsIDB4M0QwMywgMHg0ODlCLCAweDQ4OUIsIDB4M0JCRCwKKyAgICAweDQ4QUQsIDB4NDhBRCwgMHg0NzkxLCAweDQ4QUUsIDB4NDhBRSwgMHg0OTRELCAweDQ4RDAsIDB4NDhEMCwgMHgzREE3LAorICAgIDB4NDhERCwgMHg0OERELCAweDQxMjAsIDB4NDhFRCwgMHg0OEVELCAweDQyODgsIDB4NDhGMywgMHg0OEYzLCAweDNFQzEsCisgICAgMHg0OEZBLCAweDQ4RkEsIDB4M0U0NCwgMHg0OTA2LCAweDQ5MDYsIDB4M0JDNywgMHg0OTExLCAweDQ5MTEsIDB4NDU4NCwKKyAgICAweDQ5MUUsIDB4NDkxRSwgMHg0Nzk0LCAweDQ5MjUsIDB4NDkyNSwgMHgzQzBGLCAweDQ5MkEsIDB4NDkyQSwgMHg0NkFFLAorICAgIDB4NDkyRCwgMHg0OTJELCAweDQ2Q0QsIDB4NDkzNSwgMHg0OTM1LCAweDNDQzMsIDB4NDkzQywgMHg0OTNDLCAweDNCRjgsCisgICAgMHg0OTNFLCAweDQ5M0UsIDB4M0QwNiwgMHg0OTQ1LCAweDQ5NDUsIDB4NDdBMywgMHg0OTUxLCAweDQ5NTEsIDB4NDdBNCwKKyAgICAweDQ5NTMsIDB4NDk1MywgMHg0MkFELCAweDQ5NjUsIDB4NDk2NSwgMHgzODk5LCAweDQ5NkEsIDB4NDk2QSwgMHg0N0E5LAorICAgIDB4NDk3MiwgMHg0OTcyLCAweDNBMjQsIDB4NDk4OSwgMHg0OTg5LCAweDM3OUIsIDB4NDlBMSwgMHg0OUExLCAweDM4QjcsCisgICAgMHg0OUE3LCAweDQ5QTcsIDB4NDdBRSwgMHg0OURGLCAweDQ5REYsIDB4MzhBQSwgMHg0OUU1LCAweDQ5RTUsIDB4NDdCMSwKKyAgICAweDQ5RTcsIDB4NDlFNywgMHg0NjIxLCAweDRBMEYsIDB4NEEwRiwgMHgzOEMzLCAweDRBMUQsIDB4NEExRCwgMHgzQkVDLAorICAgIDB4NEEyNCwgMHg0QTI0LCAweDQ3QjIsIDB4NEEzNSwgMHg0QTM1LCAweDQ3QjQsIDB4NEE5NiwgMHg0QTk2LCAweDNDRTcsCisgICAgMHg0QUI0LCAweDRBQjQsIDB4NDM2MSwgMHg0QUI4LCAweDRBQjgsIDB4M0RBOCwgMHg0QUQxLCAweDRBRDEsIDB4MzhFMywKKyAgICAweDRBRTQsIDB4NEFFNCwgMHg0N0I3LCAweDRBRkYsIDB4NEFGRiwgMHgzOEYyLCAweDRCMTksIDB4NEIxOSwgMHg0N0I5LAorICAgIDB4NEIyQywgMHg0QjJDLCAweDQ2MUYsIDB4NEIzNywgMHg0QjM3LCAweDQxQTksIDB4NEI2RiwgMHg0QjZGLCAweDNDMTYsCisgICAgMHg0QjcwLCAweDRCNzAsIDB4NDdDMCwgMHg0QjcyLCAweDRCNzIsIDB4MzhGQywgMHg0QjdCLCAweDRCN0IsIDB4M0M4RCwKKyAgICAweDRCN0UsIDB4NEI3RSwgMHg0MDBBLCAweDRCOEUsIDB4NEI4RSwgMHgzOUY3LCAweDRCOTAsIDB4NEI5MCwgMHgzQzIwLAorICAgIDB4NEI5MywgMHg0QjkzLCAweDNBOEMsIDB4NEI5NiwgMHg0Qjk2LCAweDM5NDIsIDB4NEI5NywgMHg0Qjk3LCAweDNDMjQsCisgICAgMHg0QjlELCAweDRCOUQsIDB4NDdDMiwgMHg0QkJELCAweDRCQkQsIDB4M0MyMywgMHg0QkJFLCAweDRCQkUsIDB4Mzk1NCwKKyAgICAweDRCQzAsIDB4NEJDMCwgMHgzRERDLCAweDRDMDQsIDB4NEMwNCwgMHgzRkJCLCAweDRDMDcsIDB4NEMwNywgMHgzRkI3LAorICAgIDB4NEMwRSwgMHg0QzBFLCAweDM5MEMsIDB4NEMzQiwgMHg0QzNCLCAweDNGM0MsIDB4NEMzRSwgMHg0QzNFLCAweDQ1N0IsCisgICAgMHg0QzVCLCAweDRDNUIsIDB4M0VEOSwgMHg0QzZELCAweDRDNkQsIDB4NDdDOSwgMHg0QzdELCAweDRDN0QsIDB4M0U2NiwKKyAgICAweDRDQTQsIDB4NENBNCwgMHg0OEJFLCAweDRDQUUsIDB4NENBRSwgMHgzQzQyLCAweDRDQjAsIDB4NENCMCwgMHgzQzQ1LAorICAgIDB4NENCNywgMHg0Q0I3LCAweDNFMjEsIDB4NENDRCwgMHg0Q0NELCAweDQ1NzgsIDB4NENFMSwgMHg0Q0UxLCAweDNFRjMsCisgICAgMHg0Q0VELCAweDRDRUQsIDB4NDBBQiwgMHg0RDA5LCAweDREMDksIDB4M0VENiwgMHg0RDEwLCAweDREMTAsIDB4NDExNywKKyAgICAweDREMzQsIDB4NEQzNCwgMHgzOTM1LCAweDREOTEsIDB4NEQ5MSwgMHg0M0Y1LCAweDREOUMsIDB4NEQ5QywgMHg0OEM0LAorICAgIDB4NEUwMCwgMHg0RTAwLCAweDAyNTMsIDB4NEUwMSwgMHg0RTAxLCAweDAyNTUsIDB4NEUwMywgMHg0RTAzLCAweDAyNTYsCisgICAgMHg0RTA0LCAweDRFMDQsIDB4NDhGRSwgMHg0RTA3LCAweDRFMDcsIDB4MTc3MSwgMHg0RTA4LCAweDRFMDgsIDB4MDI2OSwKKyAgICAweDRFMDksIDB4NEUwOSwgMHgwMjY3LCAweDRFMEEsIDB4NEUwQSwgMHgwMjZBLCAweDRFMEIsIDB4NEUwQiwgMHgwMjY4LAorICAgIDB4NEUwQywgMHg0RTBDLCAweDE3NzIsIDB4NEUwRCwgMHg0RTBELCAweDAyOTQsIDB4NEUwRSwgMHg0RTBFLCAweDE3N0EsCisgICAgMHg0RTBGLCAweDRFMEYsIDB4MTc3OCwgMHg0RTEwLCAweDRFMTAsIDB4MDI5MywgMHg0RTExLCAweDRFMTEsIDB4MDI5MiwKKyAgICAweDRFMTQsIDB4NEUxNCwgMHgwMkYyLCAweDRFMTUsIDB4NEUxNSwgMHgwMkYxLCAweDRFMTYsIDB4NEUxNiwgMHgwMkYwLAorICAgIDB4NEUxOCwgMHg0RTE4LCAweDAyRjMsIDB4NEUxOSwgMHg0RTE5LCAweDAyRUYsIDB4NEUxQSwgMHg0RTFBLCAweDQ4RkQsCisgICAgMHg0RTFDLCAweDRFMUMsIDB4NDhFMCwgMHg0RTFFLCAweDRFMUYsIDB4MDM2RSwgMHg0RTIxLCAweDRFMjEsIDB4M0Q2RCwKKyAgICAweDRFMjQsIDB4NEUyNCwgMHg0NThELCAweDRFMjYsIDB4NEUyNiwgMHgwNTI4LCAweDRFMjgsIDB4NEUyOCwgMHgwMjE4LAorICAgIDB4NEUyQSwgMHg0RTJBLCAweDNGNTcsIDB4NEUyQiwgMHg0RTJCLCAweDAyNkIsIDB4NEUyQywgMHg0RTJDLCAweDQ0RjMsCisgICAgMHg0RTJELCAweDRFMkQsIDB4MDI5NSwgMHg0RTJFLCAweDRFMkUsIDB4MTc3QiwgMHg0RTMwLCAweDRFMzAsIDB4MDI5NiwKKyAgICAweDRFMzEsIDB4NEUzMSwgMHgxNzhFLCAweDRFMzIsIDB4NEUzMiwgMHgwNDE1LCAweDRFMzMsIDB4NEUzMywgMHgxOEY0LAorICAgIDB4NEUzNiwgMHg0RTM2LCAweDAyMTksIDB4NEUzNywgMHg0RTM3LCAweDQ1MTcsIDB4NEUzOCwgMHg0RTM4LCAweDAyNkMsCisgICAgMHg0RTM5LCAweDRFMzksIDB4MDI5NywgMHg0RTNCLCAweDRFM0IsIDB4MDJGNCwgMHg0RTNDLCAweDRFM0MsIDB4MTc4RiwKKyAgICAweDRFM0QsIDB4NEUzRCwgMHg0NTM3LCAweDRFM0YsIDB4NEUzRiwgMHgwMjFBLCAweDRFNDEsIDB4NEU0MSwgMHgzNkFGLAorICAgIDB4NEU0MiwgMHg0RTQyLCAweDE3NkMsIDB4NEU0MywgMHg0RTQzLCAweDAyNTcsIDB4NEU0NSwgMHg0RTQ1LCAweDAyNkUsCisgICAgMHg0RTQ3LCAweDRFNDcsIDB4MTc3MywgMHg0RTQ4LCAweDRFNDgsIDB4MDI2RiwgMHg0RTQ5LCAweDRFNDksIDB4NDA4RSwKKyAgICAweDRFNEIsIDB4NEU0QiwgMHgwMjk4LCAweDRFNEQsIDB4NEU0RCwgMHgwMkY1LCAweDRFNEUsIDB4NEU0RSwgMHgwMkY3LAorICAgIDB4NEU0RiwgMHg0RTRGLCAweDAyRjYsIDB4NEU1MiwgMHg0RTUzLCAweDAzNzAsIDB4NEU1NiwgMHg0RTU2LCAweDA1MjksCisgICAgMHg0RTU4LCAweDRFNTgsIDB4MDgzMSwgMHg0RTU5LCAweDRFNTksIDB4MDI1NCwgMHg0RTVBLCAweDRFNUEsIDB4MzZCMSwKKyAgICAweDRFNUIsIDB4NEU1QiwgMHg0NEU1LCAweDRFNUMsIDB4NEU1QywgMHgxNzZELCAweDRFNUQsIDB4NEU1RCwgMHgwMjU4LAorICAgIDB4NEU1RSwgMHg0RTVFLCAweDAyNzEsIDB4NEU1RiwgMHg0RTVGLCAweDAyNzAsIDB4NEU2OSwgMHg0RTY5LCAweDAzNzIsCisgICAgMHg0RTZBLCAweDRFNkEsIDB4M0RFNSwgMHg0RTczLCAweDRFNzMsIDB4MDUyQSwgMHg0RTc4LCAweDRFNzgsIDB4M0Q4RSwKKyAgICAweDRFN0UsIDB4NEU3RSwgMHgwOUZCLCAweDRFN0YsIDB4NEU3RiwgMHgxRTM1LCAweDRFODAsIDB4NEU4MCwgMHg0NThFLAorICAgIDB4NEU4MSwgMHg0RTgxLCAweDQzQkMsIDB4NEU4MiwgMHg0RTgyLCAweDBEQkUsIDB4NEU4MywgMHg0RTg0LCAweDIzNjEsCisgICAgMHg0RTg1LCAweDRFODUsIDB4MDIxQiwgMHg0RTg2LCAweDRFODYsIDB4MDI1OSwgMHg0RTg3LCAweDRFODcsIDB4NDU4RiwKKyAgICAweDRFODgsIDB4NEU4OCwgMHgwMjlBLCAweDRFODksIDB4NEU4OSwgMHg0NTlDLCAweDRFOEIsIDB4NEU4QiwgMHgwNTJCLAorICAgIDB4NEU4QywgMHg0RThDLCAweDAyNUEsIDB4NEU4RCwgMHg0RThELCAweDE3NzQsIDB4NEU4RSwgMHg0RThFLCAweDAyNzIsCisgICAgMHg0RTkxLCAweDRFOTEsIDB4MDI5QiwgMHg0RTkyLCAweDRFOTIsIDB4MDI5RCwgMHg0RTkzLCAweDRFOTMsIDB4MTc3QywKKyAgICAweDRFOTQsIDB4NEU5NCwgMHgwMjlFLCAweDRFOTUsIDB4NEU5NSwgMHgwMjlDLCAweDRFOTgsIDB4NEU5OCwgMHgzOUM0LAorICAgIDB4NEU5OSwgMHg0RTk5LCAweDAzNzMsIDB4NEU5QSwgMHg0RTlBLCAweDQ4RDUsIDB4NEU5QiwgMHg0RTlCLCAweDA1MkMsCisgICAgMHg0RTlFLCAweDRFOUUsIDB4MDUyRCwgMHg0RTlGLCAweDRFOUYsIDB4MDZBMywgMHg0RUEwLCAweDRFQTAsIDB4MDIxQywKKyAgICAweDRFQTEsIDB4NEVBMSwgMHgwMjczLCAweDRFQTIsIDB4NEVBMiwgMHgwMjlGLCAweDRFQTQsIDB4NEVBNCwgMHgwMzc0LAorICAgIDB4NEVBNSwgMHg0RUE1LCAweDAzNzYsIDB4NEVBNiwgMHg0RUE2LCAweDAzNzUsIDB4NEVBOCwgMHg0RUE4LCAweDA0MTYsCisgICAgMHg0RUFCLCAweDRFQUMsIDB4MDUyRSwgMHg0RUFELCAweDRFQUUsIDB4MDZBNCwgMHg0RUIzLCAweDRFQjMsIDB4MDgzMiwKKyAgICAweDRFQjYsIDB4NEVCNiwgMHgyMzYzLCAweDRFQjcsIDB4NEVCNywgMHg0MTNDLCAweDRFQjksIDB4NEVCOSwgMHgzMzc3LAorICAgIDB4NEVCQSwgMHg0RUJBLCAweDAyNUIsIDB4NEVCQiwgMHg0RUJCLCAweDQ0RTYsIDB4NEVCQywgMHg0RUJDLCAweDM5QjEsCisgICAgMHg0RUJGLCAweDRFQkYsIDB4NDU5MCwgMHg0RUMwLCAweDRFQzAsIDB4MDJBMSwgMHg0RUMxLCAweDRFQzEsIDB4MDJBMCwKKyAgICAweDRFQzIsIDB4NEVDMiwgMHgxNzdELCAweDRFQzMsIDB4NEVDMywgMHgwMkEyLCAweDRFQzQsIDB4NEVDNCwgMHgwMkE4LAorICAgIDB4NEVDNiwgMHg0RUM3LCAweDAyQTMsIDB4NEVDOCwgMHg0RUM4LCAweDE3N0YsIDB4NEVDOSwgMHg0RUM5LCAweDE3N0UsCisgICAgMHg0RUNBLCAweDRFQ0IsIDB4MDJBNiwgMHg0RUNELCAweDRFQ0QsIDB4MDJBNSwgMHg0RUNFLCAweDRFQ0UsIDB4M0Y2MiwKKyAgICAweDRFRDQsIDB4NEVENywgMHgwMkZBLCAweDRFRDgsIDB4NEVEOCwgMHgwMkY5LCAweDRFRDksIDB4NEVEOSwgMHgwMzAwLAorICAgIDB4NEVEQSwgMHg0RURBLCAweDE3OTUsIDB4NEVEQywgMHg0RURDLCAweDE3OTEsIDB4NEVERCwgMHg0RURELCAweDE3OTQsCisgICAgMHg0RURFLCAweDRFREUsIDB4MDMwMSwgMHg0RURGLCAweDRFREYsIDB4MDMxMSwgMHg0RUUxLCAweDRFRTEsIDB4MTc5MywKKyAgICAweDRFRTMsIDB4NEVFNCwgMHgwMkZFLCAweDRFRTUsIDB4NEVFNSwgMHgwMkY4LCAweDRFRTgsIDB4NEVFOCwgMHgxNzkwLAorICAgIDB4NEVFOSwgMHg0RUU5LCAweDE3OTIsIDB4NEVFQSwgMHg0RUVBLCAweDQ4Q0IsIDB4NEVFQiwgMHg0RUVCLCAweDQ1OTEsCisgICAgMHg0RUVFLCAweDRFRUUsIDB4M0Q3NiwgMHg0RUYwLCAweDRFRjAsIDB4MDM4MywgMHg0RUYxLCAweDRFRjEsIDB4MTdCQSwKKyAgICAweDRFRjIsIDB4NEVGMiwgMHgwMzgwLCAweDRFRjMsIDB4NEVGMywgMHgwMzg0LCAweDRFRjQsIDB4NEVGNCwgMHgxN0M0LAorICAgIDB4NEVGNSwgMHg0RUY1LCAweDE3QjgsIDB4NEVGNiwgMHg0RUY2LCAweDAzODEsIDB4NEVGNywgMHg0RUY3LCAweDE3QkMsCisgICAgMHg0RUY4LCAweDRFRjgsIDB4MzlBRCwgMHg0RUZCLCAweDRFRkIsIDB4MDM4MiwgMHg0RUZELCAweDRFRkQsIDB4MDM4NSwKKyAgICAweDRFRkYsIDB4NEVGRiwgMHgwMzc3LCAweDRGMDAsIDB4NEYwMCwgMHgxN0JCLCAweDRGMDEsIDB4NEYwMSwgMHgwMzg2LAorICAgIDB4NEYwMiwgMHg0RjAyLCAweDE3QkYsIDB4NEYwMywgMHg0RjAzLCAweDM5QzgsIDB4NEYwNCwgMHg0RjA0LCAweDE3QzMsCisgICAgMHg0RjA1LCAweDRGMDUsIDB4MTdDMCwgMHg0RjA4LCAweDRGMDgsIDB4MTdCRCwgMHg0RjA5LCAweDRGMDksIDB4MDM3OCwKKyAgICAweDRGMEEsIDB4NEYwQSwgMHgwMzdBLCAweDRGMEIsIDB4NEYwQiwgMHgwMzg3LCAweDRGMEQsIDB4NEYwRCwgMHgwMzdDLAorICAgIDB4NEYwRSwgMHg0RjBFLCAweDE3QjUsIDB4NEYwRiwgMHg0RjBGLCAweDAzN0YsIDB4NEYxMCwgMHg0RjExLCAweDAzN0QsCisgICAgMHg0RjEyLCAweDRGMTIsIDB4MTdDNSwgMHg0RjEzLCAweDRGMTMsIDB4MTdDMiwgMHg0RjE0LCAweDRGMTQsIDB4MTdCOSwKKyAgICAweDRGMTUsIDB4NEYxNSwgMHgwMzdCLCAweDRGMTgsIDB4NEYxOCwgMHgxN0I2LCAweDRGMTksIDB4NEYxOSwgMHgwMzc5LAorICAgIDB4NEYxQSwgMHg0RjFBLCAweDQ1M0MsIDB4NEYxRCwgMHg0RjFELCAweDE3QkUsIDB4NEYyMiwgMHg0RjIyLCAweDE3QzEsCisgICAgMHg0RjI4LCAweDRGMjgsIDB4NDUzRCwgMHg0RjI5LCAweDRGMjksIDB4MzlCRSwgMHg0RjJDLCAweDRGMkMsIDB4MTdCNywKKyAgICAweDRGMkQsIDB4NEYyRCwgMHgxODJGLCAweDRGMkYsIDB4NEYyRiwgMHgwNDJDLCAweDRGMzAsIDB4NEYzMCwgMHgwNDFGLAorICAgIDB4NEYzMiwgMHg0RjMyLCAweDM5M0QsIDB4NEYzMywgMHg0RjMzLCAweDE4MzAsIDB4NEYzNCwgMHg0RjM0LCAweDA0MUMsCisgICAgMHg0RjM2LCAweDRGMzYsIDB4MDQyRSwgMHg0RjM3LCAweDRGMzcsIDB4NDU5MiwgMHg0RjM4LCAweDRGMzgsIDB4MDQyNCwKKyAgICAweDRGMzksIDB4NEYzOSwgMHgzRjY1LCAweDRGM0EsIDB4NEYzQSwgMHgwNDIzLCAweDRGM0IsIDB4NEYzQiwgMHgxODI0LAorICAgIDB4NEYzQywgMHg0RjNDLCAweDA0MjcsIDB4NEYzRCwgMHg0RjNELCAweDA0MjIsIDB4NEYzRSwgMHg0RjNFLCAweDE4MjksCisgICAgMHg0RjNGLCAweDRGM0YsIDB4MTgzMSwgMHg0RjQxLCAweDRGNDEsIDB4MTgyRCwgMHg0RjQyLCAweDRGNDIsIDB4MzlDQiwKKyAgICAweDRGNDMsIDB4NEY0MywgMHgwNDI1LCAweDRGNDUsIDB4NEY0NSwgMHgzQjhGLCAweDRGNDYsIDB4NEY0NiwgMHgwNDI4LAorICAgIDB4NEY0NywgMHg0RjQ3LCAweDA0MTksIDB4NEY0OCwgMHg0RjQ4LCAweDA0MzEsIDB4NEY0OSwgMHg0RjQ5LCAweDE4MjYsCisgICAgMHg0RjRCLCAweDRGNEIsIDB4MzlCNCwgMHg0RjRDLCAweDRGNEMsIDB4MTkwMCwgMHg0RjRELCAweDRGNEQsIDB4MDQxNywKKyAgICAweDRGNEUsIDB4NEY0RSwgMHgwNDJELCAweDRGNEYsIDB4NEY0RiwgMHgwNDE4LCAweDRGNTAsIDB4NEY1MSwgMHgwNDIwLAorICAgIDB4NEY1MiwgMHg0RjUyLCAweDE4MkIsIDB4NEY1MywgMHg0RjUzLCAweDE4MjcsIDB4NEY1NCwgMHg0RjU0LCAweDA0MjYsCisgICAgMHg0RjU1LCAweDRGNTUsIDB4MDQxRSwgMHg0RjU2LCAweDRGNTYsIDB4MTgyMywgMHg0RjU3LCAweDRGNTcsIDB4MDQxQSwKKyAgICAweDRGNTgsIDB4NEY1OCwgMHgxODJFLCAweDRGNTksIDB4NEY1OSwgMHgwNDJGLCAweDRGNUEsIDB4NEY1QSwgMHgwNDMyLAorICAgIDB4NEY1QiwgMHg0RjVCLCAweDA0MUQsIDB4NEY1QywgMHg0RjVDLCAweDA0MkEsIDB4NEY1RCwgMHg0RjVELCAweDA0MzAsCisgICAgMHg0RjVFLCAweDRGNUUsIDB4MDQxQiwgMHg0RjVGLCAweDRGNUYsIDB4MTgyQywgMHg0RjYwLCAweDRGNjAsIDB4MDQyQiwKKyAgICAweDRGNjEsIDB4NEY2MSwgMHgxODMyLCAweDRGNjIsIDB4NEY2MiwgMHgxODI1LCAweDRGNjMsIDB4NEY2MywgMHgwNDI5LAorICAgIDB4NEY2NCwgMHg0RjY0LCAweDE4MjgsIDB4NEY2NywgMHg0RjY3LCAweDE4MkEsIDB4NEY2OSwgMHg0RjY5LCAweDA1M0QsCisgICAgMHg0RjZBLCAweDRGNkEsIDB4MTkwMiwgMHg0RjZCLCAweDRGNkIsIDB4MTkwRSwgMHg0RjZDLCAweDRGNkMsIDB4MDUzNSwKKyAgICAweDRGNkUsIDB4NEY2RSwgMHgxOTBGLCAweDRGNkYsIDB4NEY2RiwgMHgwNTMwLCAweDRGNzAsIDB4NEY3MCwgMHgwNTNBLAorICAgIDB4NEY3MiwgMHg0RjcyLCAweDNDNzIsIDB4NEY3MywgMHg0RjczLCAweDA1MzMsIDB4NEY3NCwgMHg0Rjc0LCAweDE4RkMsCisgICAgMHg0Rjc1LCAweDRGNzUsIDB4MDUzQiwgMHg0Rjc2LCAweDRGNzYsIDB4MThGQiwgMHg0Rjc3LCAweDRGNzcsIDB4MThGRiwKKyAgICAweDRGNzgsIDB4NEY3OCwgMHgxOTA2LCAweDRGNzksIDB4NEY3OSwgMHgxOTA0LCAweDRGN0EsIDB4NEY3QSwgMHgwNTQzLAorICAgIDB4NEY3QiwgMHg0RjdCLCAweDA1M0UsIDB4NEY3QywgMHg0RjdDLCAweDE4RjYsIDB4NEY3RCwgMHg0RjdELCAweDE4RjgsCisgICAgMHg0RjdFLCAweDRGN0UsIDB4MDU0MCwgMHg0RjdGLCAweDRGN0YsIDB4MDUzNCwgMHg0RjgwLCAweDRGODAsIDB4MThGOSwKKyAgICAweDRGODEsIDB4NEY4MSwgMHgxOTA1LCAweDRGODIsIDB4NEY4MiwgMHgxOTBDLCAweDRGODMsIDB4NEY4MywgMHgwNTM5LAorICAgIDB4NEY4NCwgMHg0Rjg0LCAweDE4RkUsIDB4NEY4NSwgMHg0Rjg1LCAweDE4RjcsIDB4NEY4NiwgMHg0Rjg2LCAweDA1MzgsCisgICAgMHg0Rjg3LCAweDRGODcsIDB4MThGQSwgMHg0Rjg4LCAweDRGODgsIDB4MDUzQywgMHg0Rjg5LCAweDRGODksIDB4MThGRCwKKyAgICAweDRGOEEsIDB4NEY4QSwgMHgzOUI1LCAweDRGOEIsIDB4NEY4QiwgMHgwNTM3LCAweDRGOEQsIDB4NEY4RCwgMHgwNTMyLAorICAgIDB4NEY4RiwgMHg0RjhGLCAweDA1NDEsIDB4NEY5MCwgMHg0RjkwLCAweDE5MDcsIDB4NEY5MSwgMHg0RjkxLCAweDA1NDIsCisgICAgMHg0RjkyLCAweDRGOTIsIDB4MTkwQiwgMHg0Rjk0LCAweDRGOTQsIDB4MTkwOSwgMHg0Rjk1LCAweDRGOTUsIDB4MTkwRCwKKyAgICAweDRGOTYsIDB4NEY5NiwgMHgwNTNGLCAweDRGOTcsIDB4NEY5NywgMHgxOTAxLCAweDRGOTgsIDB4NEY5OCwgMHgxOEY1LAorICAgIDB4NEY5QSwgMHg0RjlBLCAweDE5MDMsIDB4NEY5QiwgMHg0RjlCLCAweDA1MzYsIDB4NEY5QywgMHg0RjlDLCAweDE5MDgsCisgICAgMHg0RjlELCAweDRGOUQsIDB4MDUzMSwgMHg0RjlFLCAweDRGOUUsIDB4MTkwQSwgMHg0RkEyLCAweDRGQTIsIDB4MzlDNywKKyAgICAweDRGQTgsIDB4NEZBOCwgMHg0NTNFLCAweDRGQUIsIDB4NEZBQiwgMHg0MDIyLCAweDRGQUUsIDB4NEZBRSwgMHgwNkI0LAorICAgIDB4NEZBRiwgMHg0RkFGLCAweDA2QTgsIDB4NEZCMCwgMHg0RkIwLCAweDNENEEsIDB4NEZCMiwgMHg0RkIyLCAweDFBNUQsCisgICAgMHg0RkIzLCAweDRGQjMsIDB4MUE2NSwgMHg0RkI1LCAweDRGQjUsIDB4MDZBNywgMHg0RkI2LCAweDRGQjYsIDB4MDZBRiwKKyAgICAweDRGQjcsIDB4NEZCNywgMHgwNkJCLCAweDRGQjksIDB4NEZCOSwgMHgxQTZCLCAweDRGQkEsIDB4NEZCQSwgMHgxQTY5LAorICAgIDB4NEZCQiwgMHg0RkJCLCAweDFBNjQsIDB4NEZCRCwgMHg0RkJELCAweDQ1OTQsIDB4NEZCRiwgMHg0RkJGLCAweDA2QTksCisgICAgMHg0RkMwLCAweDRGQzAsIDB4MUE2QSwgMHg0RkMxLCAweDRGQzEsIDB4MUE2MCwgMHg0RkMyLCAweDRGQzIsIDB4MDZCNywKKyAgICAweDRGQzMsIDB4NEZDMywgMHgwNkFFLCAweDRGQzQsIDB4NEZDNCwgMHgwNkI2LCAweDRGQzUsIDB4NEZDNSwgMHgxQTVCLAorICAgIDB4NEZDNywgMHg0RkM3LCAweDFBNjcsIDB4NEZDOCwgMHg0RkM4LCAweDQ2RTgsIDB4NEZDOSwgMHg0RkM5LCAweDFBNUUsCisgICAgMHg0RkNBLCAweDRGQ0EsIDB4MDZCMiwgMHg0RkNCLCAweDRGQ0IsIDB4MUE1RiwgMHg0RkNDLCAweDRGQ0MsIDB4MzlDRiwKKyAgICAweDRGQ0QsIDB4NEZDRCwgMHgxQTVBLCAweDRGQ0UsIDB4NEZDRSwgMHgwNkI5LCAweDRGQ0YsIDB4NEZDRiwgMHgwNkFDLAorICAgIDB4NEZEMCwgMHg0RkQwLCAweDA2QjUsIDB4NEZEMSwgMHg0RkQxLCAweDA2QUIsIDB4NEZEMywgMHg0RkQzLCAweDFBNUMsCisgICAgMHg0RkQ0LCAweDRGRDQsIDB4MUE2MSwgMHg0RkQ2LCAweDRGRDYsIDB4MUE2OCwgMHg0RkQ3LCAweDRGRDcsIDB4MDZCMywKKyAgICAweDRGRDgsIDB4NEZEOCwgMHgwNkIwLCAweDRGRDksIDB4NEZEOSwgMHgxQTYzLCAweDRGREEsIDB4NEZEQSwgMHgwNkI4LAorICAgIDB4NEZEQiwgMHg0RkRCLCAweDFBNjYsIDB4NEZEQywgMHg0RkRDLCAweDFBNjIsIDB4NEZERCwgMHg0RkRELCAweDA2QUQsCisgICAgMHg0RkRFLCAweDRGREUsIDB4MDZCQSwgMHg0RkRGLCAweDRGREYsIDB4MDZCMSwgMHg0RkUwLCAweDRGRTAsIDB4MDZBQSwKKyAgICAweDRGRTEsIDB4NEZFMSwgMHgwNkE2LCAweDRGRTQsIDB4NEZFNCwgMHgzQzY2LCAweDRGRTUsIDB4NEZFNSwgMHgzOUQwLAorICAgIDB4NEZFQywgMHg0RkVDLCAweDFBNkMsIDB4NEZFRSwgMHg0RkVFLCAweDA4NEMsIDB4NEZFRiwgMHg0RkVGLCAweDA4MzYsCisgICAgMHg0RkYxLCAweDRGRjEsIDB4MDg0NiwgMHg0RkYyLCAweDRGRjIsIDB4M0YyOCwgMHg0RkYzLCAweDRGRjMsIDB4MDg0QiwKKyAgICAweDRGRjQsIDB4NEZGNCwgMHgxQzI0LCAweDRGRjUsIDB4NEZGNSwgMHgxQzIzLCAweDRGRjYsIDB4NEZGNywgMHgxQzI4LAorICAgIDB4NEZGOCwgMHg0RkY4LCAweDA4MzksIDB4NEZGOSwgMHg0RkY5LCAweDM3QjMsIDB4NEZGQSwgMHg0RkZBLCAweDA4NDIsCisgICAgMHg0RkZELCAweDRGRkQsIDB4M0YyNiwgMHg0RkZFLCAweDRGRkUsIDB4MDg0RiwgMHg1MDAwLCAweDUwMDAsIDB4MDg0MywKKyAgICAweDUwMDMsIDB4NTAwMywgMHg0NTk2LCAweDUwMDUsIDB4NTAwNSwgMHgxQzFELCAweDUwMDYsIDB4NTAwNiwgMHgwODNDLAorICAgIDB4NTAwNywgMHg1MDA3LCAweDFDMUUsIDB4NTAwOCwgMHg1MDA4LCAweDQwMjQsIDB4NTAwOSwgMHg1MDA5LCAweDA4NTEsCisgICAgMHg1MDBCLCAweDUwMEIsIDB4MDg0OCwgMHg1MDBDLCAweDUwMEQsIDB4MDgzMywgMHg1MDBFLCAweDUwMEUsIDB4MUMzMSwKKyAgICAweDUwMEYsIDB4NTAwRiwgMHgwQTBDLCAweDUwMTEsIDB4NTAxMSwgMHgwODQxLCAweDUwMTIsIDB4NTAxMiwgMHgwODQwLAorICAgIDB4NTAxMywgMHg1MDEzLCAweDFDMUYsIDB4NTAxNCwgMHg1MDE0LCAweDA4NDQsIDB4NTAxNSwgMHg1MDE1LCAweDFFNDUsCisgICAgMHg1MDE2LCAweDUwMTYsIDB4MDgzQiwgMHg1MDE3LCAweDUwMTcsIDB4MUMyQSwgMHg1MDE4LCAweDUwMTgsIDB4MDg0QSwKKyAgICAweDUwMTksIDB4NTAxOSwgMHgwODQ5LCAweDUwMUEsIDB4NTAxQSwgMHgwODNGLCAweDUwMUIsIDB4NTAxQiwgMHgxQzIyLAorICAgIDB4NTAxQywgMHg1MDFDLCAweDFDMkIsIDB4NTAxRSwgMHg1MDFFLCAweDFDMUMsIDB4NTAxRiwgMHg1MDFGLCAweDA4M0UsCisgICAgMHg1MDIwLCAweDUwMjAsIDB4MUMyQywgMHg1MDIxLCAweDUwMjEsIDB4MDg0NywgMHg1MDIyLCAweDUwMjIsIDB4MUMyMCwKKyAgICAweDUwMjMsIDB4NTAyMywgMHgwODM1LCAweDUwMjUsIDB4NTAyNSwgMHgwODM4LCAweDUwMjYsIDB4NTAyNiwgMHgwODM3LAorICAgIDB4NTAyNywgMHg1MDI3LCAweDFDMkQsIDB4NTAyOCwgMHg1MDI4LCAweDA4NDUsIDB4NTAyOSwgMHg1MDI5LCAweDA4M0EsCisgICAgMHg1MDJBLCAweDUwMkEsIDB4MDg0RSwgMHg1MDJCLCAweDUwMkIsIDB4MDg1MCwgMHg1MDJDLCAweDUwMkMsIDB4MUMyNywKKyAgICAweDUwMkQsIDB4NTAyRCwgMHgwODRELCAweDUwMkUsIDB4NTAyRSwgMHgzOUNDLCAweDUwMkYsIDB4NTAyRiwgMHgxQzJGLAorICAgIDB4NTAzMCwgMHg1MDMwLCAweDFDMjEsIDB4NTAzMSwgMHg1MDMxLCAweDFDMzAsIDB4NTAzMywgMHg1MDMzLCAweDFDMjUsCisgICAgMHg1MDM0LCAweDUwMzQsIDB4MzkxMCwgMHg1MDM1LCAweDUwMzUsIDB4MUMyRSwgMHg1MDM3LCAweDUwMzcsIDB4MUMyNiwKKyAgICAweDUwM0MsIDB4NTAzQywgMHgwODNELCAweDUwNDAsIDB4NTA0MCwgMHgxRTRELCAweDUwNDEsIDB4NTA0MSwgMHgxRTQxLAorICAgIDB4NTA0MywgMHg1MDQzLCAweDBBMDAsIDB4NTA0NSwgMHg1MDQ1LCAweDFFNDYsIDB4NTA0NiwgMHg1MDQ2LCAweDFFNEMsCisgICAgMHg1MDQ3LCAweDUwNDcsIDB4MDlGRiwgMHg1MDQ4LCAweDUwNDgsIDB4MUUzRiwgMHg1MDQ5LCAweDUwNDksIDB4MEEwMywKKyAgICAweDUwNEEsIDB4NTA0QSwgMHgxRTQzLCAweDUwNEIsIDB4NTA0QiwgMHgxRTNDLCAweDUwNEMsIDB4NTA0QywgMHgwQTAxLAorICAgIDB4NTA0RCwgMHg1MDRELCAweDFFNDAsIDB4NTA0RSwgMHg1MDRFLCAweDBBMDYsIDB4NTA0RiwgMHg1MDRGLCAweDBBMEIsCisgICAgMHg1MDUxLCAweDUwNTEsIDB4MUU1MSwgMHg1MDUzLCAweDUwNTMsIDB4MUUzQiwgMHg1MDU1LCAweDUwNTUsIDB4MEEwNywKKyAgICAweDUwNTYsIDB4NTA1NiwgMHgzRjJDLCAweDUwNTcsIDB4NTA1NywgMHgxRTUwLCAweDUwNTgsIDB4NTA1OCwgMHgzOUQxLAorICAgIDB4NTA1QSwgMHg1MDVBLCAweDBBMDIsIDB4NTA1QiwgMHg1MDVCLCAweDFFNDIsIDB4NTA1QywgMHg1MDVDLCAweDA5RkUsCisgICAgMHg1MDVELCAweDUwNUQsIDB4MUUzRCwgMHg1MDVFLCAweDUwNUUsIDB4MUUzOSwgMHg1MDVGLCAweDUwNUYsIDB4MUU0NywKKyAgICAweDUwNjAsIDB4NTA2MCwgMHgxRTNBLCAweDUwNjEsIDB4NTA2MSwgMHgxRTM4LCAweDUwNjIsIDB4NTA2MiwgMHgxRTQ0LAorICAgIDB4NTA2MywgMHg1MDY0LCAweDFFNEEsIDB4NTA2NSwgMHg1MDY1LCAweDBBMDQsIDB4NTA2NiwgMHg1MDY2LCAweDNEQzksCisgICAgMHg1MDY4LCAweDUwNjgsIDB4MjBCOCwgMHg1MDY5LCAweDUwNjksIDB4MUU0OCwgMHg1MDZBLCAweDUwNkEsIDB4MUUzNywKKyAgICAweDUwNkIsIDB4NTA2QiwgMHgxRTQ5LCAweDUwNkMsIDB4NTA2QywgMHgzOUNELCAweDUwNkQsIDB4NTA2RCwgMHgwQTBFLAorICAgIDB4NTA2RSwgMHg1MDZFLCAweDFFNEUsIDB4NTA2RiwgMHg1MDZGLCAweDBBMEQsIDB4NTA3MCwgMHg1MDcwLCAweDFFMzYsCisgICAgMHg1MDcyLCAweDUwNzIsIDB4MUUzRSwgMHg1MDczLCAweDUwNzMsIDB4MUU0RiwgMHg1MDc0LCAweDUwNzQsIDB4MEEwOSwKKyAgICAweDUwNzUsIDB4NTA3NSwgMHgwQTA4LCAweDUwNzYsIDB4NTA3NiwgMHgwQTA1LCAweDUwNzcsIDB4NTA3NywgMHgwQTBBLAorICAgIDB4NTA3QSwgMHg1MDdBLCAweDA5RkMsIDB4NTA3RCwgMHg1MDdELCAweDA5RkQsIDB4NTA4MCwgMHg1MDgwLCAweDBCRUMsCisgICAgMHg1MDgxLCAweDUwODEsIDB4MzlDRSwgMHg1MDgyLCAweDUwODIsIDB4MjBCQiwgMHg1MDgzLCAweDUwODMsIDB4MjBCNCwKKyAgICAweDUwODUsIDB4NTA4NSwgMHgwQkU5LCAweDUwODcsIDB4NTA4NywgMHgyMEJDLCAweDUwODgsIDB4NTA4OCwgMHg0MzlDLAorICAgIDB4NTA4QiwgMHg1MDhCLCAweDIwQjIsIDB4NTA4QywgMHg1MDhDLCAweDIwQjUsIDB4NTA4RCwgMHg1MDhELCAweDBCRTgsCisgICAgMHg1MDhFLCAweDUwOEUsIDB4MjBCNiwgMHg1MDkwLCAweDUwOTAsIDB4NDFFQywgMHg1MDkxLCAweDUwOTEsIDB4MEJFQiwKKyAgICAweDUwOTIsIDB4NTA5MiwgMHgyMEJBLCAweDUwOTQsIDB4NTA5NCwgMHgyMEIwLCAweDUwOTUsIDB4NTA5NSwgMHgyMEFGLAorICAgIDB4NTA5NiwgMHg1MDk2LCAweDBCRUQsIDB4NTA5OCwgMHg1MDk4LCAweDBCRUUsIDB4NTA5OSwgMHg1MDk5LCAweDBCRUEsCisgICAgMHg1MDlBLCAweDUwOUEsIDB4MEJFRiwgMHg1MDlCLCAweDUwOUIsIDB4MjBBRSwgMHg1MDlDLCAweDUwOUMsIDB4MjBCOSwKKyAgICAweDUwOUQsIDB4NTA5RCwgMHgyMEI3LCAweDUwOUUsIDB4NTA5RSwgMHgyMEIxLCAweDUwQTIsIDB4NTBBMiwgMHgwQkU3LAorICAgIDB4NTBBMywgMHg1MEEzLCAweDIwQjMsIDB4NTBBNiwgMHg1MEE2LCAweDNGM0YsIDB4NTBBQywgMHg1MEFDLCAweDBEQzUsCisgICAgMHg1MEFELCAweDUwQUQsIDB4MERCRiwgMHg1MEFFLCAweDUwQUUsIDB4MjM2NywgMHg1MEFGLCAweDUwQUYsIDB4MERDOCwKKyAgICAweDUwQjAsIDB4NTBCMCwgMHgyMzZELCAweDUwQjEsIDB4NTBCMSwgMHgyMzcwLCAweDUwQjIsIDB4NTBCMywgMHgwREMxLAorICAgIDB4NTBCNCwgMHg1MEI0LCAweDIzNkEsIDB4NTBCNSwgMHg1MEI1LCAweDBEQzAsIDB4NTBCNiwgMHg1MEI2LCAweDIzNzMsCisgICAgMHg1MEI3LCAweDUwQjcsIDB4MERDNiwgMHg1MEI4LCAweDUwQjgsIDB4MjM3NCwgMHg1MEJBLCAweDUwQkEsIDB4MjM2RiwKKyAgICAweDUwQkIsIDB4NTBCQiwgMHgwREM3LCAweDUwQkQsIDB4NTBCRCwgMHgyMzY0LCAweDUwQkUsIDB4NTBCRSwgMHgwREM0LAorICAgIDB4NTBCRiwgMHg1MEJGLCAweDIzNjUsIDB4NTBDMSwgMHg1MEMxLCAweDIzNkUsIDB4NTBDMiwgMHg1MEMyLCAweDIzNkMsCisgICAgMHg1MEM0LCAweDUwQzQsIDB4MjM2OCwgMHg1MEM1LCAweDUwQzUsIDB4MERDMywgMHg1MEM2LCAweDUwQzYsIDB4MjM2NiwKKyAgICAweDUwQzcsIDB4NTBDNywgMHgwREM5LCAweDUwQzgsIDB4NTBDOCwgMHgyMzZCLCAweDUwQzksIDB4NTBDOSwgMHgyMzcyLAorICAgIDB4NTBDQSwgMHg1MENBLCAweDIzNjksIDB4NTBDQiwgMHg1MENCLCAweDIzNzEsIDB4NTBDRCwgMHg1MENELCAweDM5QzUsCisgICAgMHg1MENFLCAweDUwQ0UsIDB4MEY4OCwgMHg1MENGLCAweDUwQ0YsIDB4MEY4NSwgMHg1MEQwLCAweDUwRDAsIDB4MzhEMSwKKyAgICAweDUwRDEsIDB4NTBEMSwgMHgwRjg2LCAweDUwRDMsIDB4NTBEMywgMHgyNjFDLCAweDUwRDQsIDB4NTBENCwgMHgyNjE0LAorICAgIDB4NTBENSwgMHg1MEQ1LCAweDBGODQsIDB4NTBENiwgMHg1MEQ2LCAweDBGODEsIDB4NTBENywgMHg1MEQ3LCAweDI2MTUsCisgICAgMHg1MEQ5LCAweDUwRDksIDB4M0ZDRSwgMHg1MERBLCAweDUwREEsIDB4MEY4MywgMHg1MERCLCAweDUwREIsIDB4MjYxOCwKKyAgICAweDUwREQsIDB4NTBERCwgMHgyNjFBLCAweDUwREUsIDB4NTBERSwgMHg0MDMxLCAweDUwREYsIDB4NTBERiwgMHgzQUZELAorICAgIDB4NTBFMCwgMHg1MEUwLCAweDI2MjEsIDB4NTBFMSwgMHg1MEUxLCAweDQxNzEsIDB4NTBFMywgMHg1MEUzLCAweDI2MjAsCisgICAgMHg1MEU0LCAweDUwRTQsIDB4MjYxQiwgMHg1MEU1LCAweDUwRTUsIDB4MEY4MCwgMHg1MEU2LCAweDUwRTYsIDB4MjYxMywKKyAgICAweDUwRTcsIDB4NTBFNywgMHgwRjdFLCAweDUwRTgsIDB4NTBFOCwgMHgyNjE2LCAweDUwRTksIDB4NTBFOSwgMHgwRjg5LAorICAgIDB4NTBFQSwgMHg1MEVBLCAweDI2MTksIDB4NTBFQywgMHg1MEVDLCAweDI2MUQsIDB4NTBFRCwgMHg1MEVELCAweDBGODIsCisgICAgMHg1MEVFLCAweDUwRUUsIDB4MEY3RiwgMHg1MEVGLCAweDUwRUYsIDB4MjYxRiwgMHg1MEYwLCAweDUwRjAsIDB4MjYxRSwKKyAgICAweDUwRjEsIDB4NTBGMSwgMHgwRjg3LCAweDUwRjMsIDB4NTBGMywgMHgyNjE3LCAweDUwRjQsIDB4NTBGNCwgMHgzQ0U5LAorICAgIDB4NTBGNSwgMHg1MEY1LCAweDExMDUsIDB4NTBGNiwgMHg1MEY2LCAweDI4ODMsIDB4NTBGOCwgMHg1MEY4LCAweDI4ODAsCisgICAgMHg1MEY5LCAweDUwRjksIDB4MTEwNiwgMHg1MEZCLCAweDUwRkIsIDB4MTEwNCwgMHg1MEZDLCAweDUwRkMsIDB4MzlEMiwKKyAgICAweDUwRkQsIDB4NTBGRCwgMHgyODg3LCAweDUwRkUsIDB4NTBGRSwgMHgyODg0LCAweDUwRkYsIDB4NTBGRiwgMHgyODdELAorICAgIDB4NTEwMCwgMHg1MTAwLCAweDExMDMsIDB4NTEwMSwgMHg1MTAxLCAweDQwMzIsIDB4NTEwMiwgMHg1MTAyLCAweDExMDcsCisgICAgMHg1MTAzLCAweDUxMDMsIDB4Mjg3RSwgMHg1MTA0LCAweDUxMDQsIDB4MTEwMiwgMHg1MTA1LCAweDUxMDUsIDB4MTEwQSwKKyAgICAweDUxMDYsIDB4NTEwNywgMHgyODgxLCAweDUxMDgsIDB4NTEwOSwgMHgxMTA4LCAweDUxMEEsIDB4NTEwQSwgMHgyODg4LAorICAgIDB4NTEwQiwgMHg1MTBDLCAweDI4ODUsIDB4NTEwRCwgMHg1MTBELCAweDM5QzYsIDB4NTEwRSwgMHg1MTBFLCAweDQwMzQsCisgICAgMHg1MTEwLCAweDUxMTAsIDB4MTI4RCwgMHg1MTExLCAweDUxMTEsIDB4MkIwNCwgMHg1MTEyLCAweDUxMTIsIDB4MTI4QSwKKyAgICAweDUxMTMsIDB4NTExMywgMHgyQjAxLCAweDUxMTQsIDB4NTExNCwgMHgxMjhDLCAweDUxMTUsIDB4NTExNSwgMHgxMjhFLAorICAgIDB4NTExNywgMHg1MTE3LCAweDJCMDIsIDB4NTExOCwgMHg1MTE4LCAweDEyOEIsIDB4NTExQSwgMHg1MTFBLCAweDJCMDMsCisgICAgMHg1MTFDLCAweDUxMUMsIDB4MkIwMCwgMHg1MTFGLCAweDUxMUYsIDB4MTNCNSwgMHg1MTIwLCAweDUxMjAsIDB4MkQzRSwKKyAgICAweDUxMjEsIDB4NTEyMSwgMHgxM0I2LCAweDUxMjIsIDB4NTEyMiwgMHgyRDNDLCAweDUxMjQsIDB4NTEyNCwgMHgyRDNELAorICAgIDB4NTEyNSwgMHg1MTI1LCAweDJEM0IsIDB4NTEyNiwgMHg1MTI2LCAweDJEM0EsIDB4NTEyOSwgMHg1MTI5LCAweDJEM0YsCisgICAgMHg1MTJBLCAweDUxMkEsIDB4MTNCNCwgMHg1MTJCLCAweDUxMkIsIDB4MzlBRSwgMHg1MTJELCAweDUxMkUsIDB4MkYwRiwKKyAgICAweDUxMzAsIDB4NTEzMCwgMHgyODdGLCAweDUxMzEsIDB4NTEzMSwgMHgyRjBFLCAweDUxMzIsIDB4NTEzMiwgMHgxM0I3LAorICAgIDB4NTEzMywgMHg1MTMzLCAweDE1NzUsIDB4NTEzNCwgMHg1MTM1LCAweDMwN0EsIDB4NTEzNywgMHg1MTM4LCAweDE2NjgsCisgICAgMHg1MTM5LCAweDUxMzksIDB4MzJDNiwgMHg1MTNBLCAweDUxM0EsIDB4MzJDNSwgMHg1MTNCLCAweDUxM0IsIDB4MTZCQywKKyAgICAweDUxM0MsIDB4NTEzQywgMHgxNkJCLCAweDUxM0QsIDB4NTEzRCwgMHgzNDBFLCAweDUxM0YsIDB4NTEzRiwgMHgwMjVDLAorICAgIDB4NTE0MCwgMHg1MTQwLCAweDAyNzQsIDB4NTE0MSwgMHg1MTQxLCAweDAyQUEsIDB4NTE0MywgMHg1MTQzLCAweDAyQTksCisgICAgMHg1MTQ0LCAweDUxNDQsIDB4MDMwMywgMHg1MTQ1LCAweDUxNDUsIDB4MDMwMiwgMHg1MTQ2LCAweDUxNDYsIDB4MDM4QSwKKyAgICAweDUxNDcsIDB4NTE0NywgMHgwMzg5LCAweDUxNDgsIDB4NTE0OCwgMHgwMzhCLCAweDUxNDksIDB4NTE0OSwgMHgwMzg4LAorICAgIDB4NTE0QiwgMHg1MTRCLCAweDA0MzQsIDB4NTE0QywgMHg1MTRDLCAweDA0MzMsIDB4NTE0RCwgMHg1MTRELCAweDA0MzUsCisgICAgMHg1MTUyLCAweDUxNTIsIDB4MDU0NSwgMHg1MTU0LCAweDUxNTQsIDB4MDU0NCwgMHg1MTU1LCAweDUxNTUsIDB4MDU0NiwKKyAgICAweDUxNTYsIDB4NTE1NiwgMHg0MzlBLCAweDUxNTcsIDB4NTE1NywgMHgwNkJDLCAweDUxNTksIDB4NTE1OSwgMHgwMTE5LAorICAgIDB4NTE1QSwgMHg1MTVBLCAweDFDMzIsIDB4NTE1QiwgMHg1MTVCLCAweDAxMUEsIDB4NTE1QywgMHg1MTVDLCAweDBBMEYsCisgICAgMHg1MTVELCAweDUxNUQsIDB4MDExQywgMHg1MTVFLCAweDUxNUUsIDB4MDExQiwgMHg1MTVGLCAweDUxNUYsIDB4MjBCRCwKKyAgICAweDUxNjAsIDB4NTE2MCwgMHg0MDNBLCAweDUxNjEsIDB4NTE2MSwgMHgwMTFELCAweDUxNjIsIDB4NTE2MiwgMHgwRjhBLAorICAgIDB4NTE2MywgMHg1MTYzLCAweDAxMUUsIDB4NTE2NSwgMHg1MTY1LCAweDAyNUQsIDB4NTE2NywgMHg1MTY3LCAweDAyQUIsCisgICAgMHg1MTY4LCAweDUxNjgsIDB4MDM4QywgMHg1MTY5LCAweDUxNjksIDB4MDU0NywgMHg1MTZBLCAweDUxNkEsIDB4NDAzQywKKyAgICAweDUxNkIsIDB4NTE2QiwgMHgwMjVFLCAweDUxNkMsIDB4NTE2QywgMHgwMkFFLCAweDUxNkQsIDB4NTE2RSwgMHgwMkFDLAorICAgIDB4NTE3MSwgMHg1MTcxLCAweDAzOEQsIDB4NTE3NCwgMHg1MTc0LCAweDQ1M0YsIDB4NTE3NSwgMHg1MTc1LCAweDA0MzYsCisgICAgMHg1MTc2LCAweDUxNzYsIDB4MDU0OSwgMHg1MTc3LCAweDUxNzcsIDB4MDU0OCwgMHg1MTc4LCAweDUxNzgsIDB4MDU0QSwKKyAgICAweDUxNzksIDB4NTE3OSwgMHgzQUNFLCAweDUxN0MsIDB4NTE3QywgMHgwODUyLCAweDUxODAsIDB4NTE4MCwgMHgxMjhGLAorICAgIDB4NTE4MiwgMHg1MTgyLCAweDAyMUQsIDB4NTE4NiwgMHg1MTg2LCAweDQzOUYsIDB4NTE4NywgMHg1MTg3LCAweDE3NzksCisgICAgMHg1MTg4LCAweDUxODgsIDB4MzZCNiwgMHg1MTg5LCAweDUxOEEsIDB4MDMwNCwgMHg1MThELCAweDUxOEQsIDB4MDM4RSwKKyAgICAweDUxOEYsIDB4NTE4RiwgMHgxODMzLCAweDUxOTEsIDB4NTE5MSwgMHgwNkJFLCAweDUxOTIsIDB4NTE5MiwgMHgwNkJELAorICAgIDB4NTE5MywgMHg1MTkzLCAweDFDMzQsIDB4NTE5NCwgMHg1MTk0LCAweDFDMzMsIDB4NTE5NSwgMHg1MTk1LCAweDBBMTAsCisgICAgMHg1MTk2LCAweDUxOTYsIDB4MDIxRSwgMHg1MTk3LCAweDUxOTcsIDB4MDJBRiwgMHg1MTk4LCAweDUxOTgsIDB4MTc4MCwKKyAgICAweDUxOUEsIDB4NTE5QSwgMHgzRUEzLCAweDUxOUMsIDB4NTE5QywgMHg0NTQwLCAweDUxOUUsIDB4NTE5RSwgMHgxOTEwLAorICAgIDB4NTFBMCwgMHg1MUEwLCAweDA2QkYsIDB4NTFBMiwgMHg1MUEyLCAweDA4NTUsIDB4NTFBNCwgMHg1MUE1LCAweDA4NTMsCisgICAgMHg1MUE3LCAweDUxQTcsIDB4M0VBNiwgMHg1MUE4LCAweDUxQTgsIDB4MzlEQSwgMHg1MUFBLCAweDUxQUEsIDB4MTI5MCwKKyAgICAweDUxQUIsIDB4NTFBQiwgMHgwMjFGLCAweDUxQUMsIDB4NTFBQywgMHgwMzA2LCAweDUxQjAsIDB4NTFCMCwgMHgwMzhGLAorICAgIDB4NTFCMSwgMHg1MUIxLCAweDE3QzYsIDB4NTFCMiwgMHg1MUIyLCAweDQwNDgsIDB4NTFCMywgMHg1MUIzLCAweDQwNTEsCisgICAgMHg1MUI0LCAweDUxQjQsIDB4M0Q3QywgMHg1MUI1LCAweDUxQjUsIDB4NDAxMiwgMHg1MUI2LCAweDUxQjcsIDB4MDQzNywKKyAgICAweDUxQjgsIDB4NTFCOCwgMHg0MDQ5LCAweDUxQjksIDB4NTFCOSwgMHgxODM0LCAweDUxQkMsIDB4NTFCQywgMHgxOTExLAorICAgIDB4NTFCRCwgMHg1MUJELCAweDA1NEIsIDB4NTFCRSwgMHg1MUJFLCAweDE5MTIsIDB4NTFDMywgMHg1MUMzLCAweDM5REIsCisgICAgMHg1MUM0LCAweDUxQzUsIDB4MUMzNiwgMHg1MUM2LCAweDUxQzYsIDB4MDg1OCwgMHg1MUM3LCAweDUxQzcsIDB4NDIyQSwKKyAgICAweDUxQzgsIDB4NTFDOCwgMHgxQzM4LCAweDUxQzksIDB4NTFDOSwgMHg0MDRCLCAweDUxQ0EsIDB4NTFDQSwgMHgxQzM1LAorICAgIDB4NTFDQiwgMHg1MUNCLCAweDA4NTksIDB4NTFDQywgMHg1MUNDLCAweDA4NTcsIDB4NTFDRCwgMHg1MUNELCAweDA4NTYsCisgICAgMHg1MUNFLCAweDUxQ0UsIDB4MUMzOSwgMHg1MUNGLCAweDUxQ0YsIDB4NDA0QywgMHg1MUQwLCAweDUxRDAsIDB4MUU1MiwKKyAgICAweDUxRDEsIDB4NTFEMSwgMHg0MDRELCAweDUxRDIsIDB4NTFEMiwgMHgzREFELCAweDUxRDMsIDB4NTFEMywgMHg0MDRGLAorICAgIDB4NTFENCwgMHg1MUQ0LCAweDIwQkUsIDB4NTFENywgMHg1MUQ3LCAweDIzNzUsIDB4NTFEOCwgMHg1MUQ4LCAweDI2MjIsCisgICAgMHg1MURCLCAweDUxREIsIDB4NDU5QSwgMHg1MURDLCAweDUxREMsIDB4MTEwQiwgMHg1MURELCAweDUxREQsIDB4MTI5MSwKKyAgICAweDUxREUsIDB4NTFERSwgMHgyQjA1LCAweDUxREYsIDB4NTFERiwgMHg0MjRGLCAweDUxRTAsIDB4NTFFMCwgMHgwMjVGLAorICAgIDB4NTFFMSwgMHg1MUUxLCAweDAyNkQsIDB4NTFFMiwgMHg1MUUyLCAweDQwNTIsIDB4NTFFNCwgMHg1MUU0LCAweDQ1NDEsCisgICAgMHg1MUVELCAweDUxRUQsIDB4NDA1NCwgMHg1MUYwLCAweDUxRjAsIDB4MEExMSwgMHg1MUYxLCAweDUxRjEsIDB4MEJGMSwKKyAgICAweDUxRjMsIDB4NTFGMywgMHgwRjhCLCAweDUxRjQsIDB4NTFGNCwgMHg0MTc4LCAweDUxRjUsIDB4NTFGNSwgMHgxNzZFLAorICAgIDB4NTFGNiwgMHg1MUY2LCAweDAyQjAsIDB4NTFGOCwgMHg1MUY4LCAweDAzMDksIDB4NTFGOSwgMHg1MUZBLCAweDAzMDcsCisgICAgMHg1MUZDLCAweDUxRkMsIDB4NDU5QiwgMHg1MUZELCAweDUxRkQsIDB4MDU0QywgMHg1MUZFLCAweDUxRkUsIDB4M0YwQSwKKyAgICAweDUyMDAsIDB4NTIwMSwgMHgwMjYwLCAweDUyMDIsIDB4NTIwMiwgMHgzNkIzLCAweDUyMDMsIDB4NTIwMywgMHgwMjc1LAorICAgIDB4NTIwNSwgMHg1MjA1LCAweDQzQTEsIDB4NTIwNiwgMHg1MjA4LCAweDAyQjEsIDB4NTIwOSwgMHg1MjA5LCAweDE3OTcsCisgICAgMHg1MjBBLCAweDUyMEEsIDB4MDMwQSwgMHg1MjBCLCAweDUyMEIsIDB4NDA1OSwgMHg1MjBDLCAweDUyMEMsIDB4MTc5NiwKKyAgICAweDUyMEUsIDB4NTIwRSwgMHgwMzkzLCAweDUyMTAsIDB4NTIxMCwgMHgxN0M4LCAweDUyMTEsIDB4NTIxMiwgMHgwMzkxLAorICAgIDB4NTIxMywgMHg1MjEzLCAweDE3QzcsIDB4NTIxNiwgMHg1MjE2LCAweDAzOTQsIDB4NTIxNywgMHg1MjE3LCAweDAzOTAsCisgICAgMHg1MjFDLCAweDUyMUMsIDB4MTgzNSwgMHg1MjFELCAweDUyMUQsIDB4MDY4QiwgMHg1MjFFLCAweDUyMUUsIDB4MTgzNiwKKyAgICAweDUyMUYsIDB4NTIxRiwgMHgzRjYwLCAweDUyMjAsIDB4NTIyMCwgMHg0OTMwLCAweDUyMjEsIDB4NTIyMSwgMHgxODM3LAorICAgIDB4NTIyNCwgMHg1MjI0LCAweDA0M0EsIDB4NTIyNSwgMHg1MjI1LCAweDA0MzksIDB4NTIyNiwgMHg1MjI2LCAweDQwNUEsCisgICAgMHg1MjI3LCAweDUyMjcsIDB4NDNBMiwgMHg1MjI4LCAweDUyMjgsIDB4MDQzRCwgMHg1MjI5LCAweDUyMkEsIDB4MDQzQiwKKyAgICAweDUyMkUsIDB4NTIyRSwgMHgwNTUyLCAweDUyMzAsIDB4NTIzMCwgMHgwNTUxLCAweDUyMzEsIDB4NTIzMSwgMHgxOTE3LAorICAgIDB4NTIzMiwgMHg1MjMzLCAweDE5MTQsIDB4NTIzNCwgMHg1MjM0LCAweDNFRkIsIDB4NTIzNSwgMHg1MjM1LCAweDE5MTMsCisgICAgMHg1MjM2LCAweDUyMzYsIDB4MDU1MywgMHg1MjM3LCAweDUyMzcsIDB4MDU0RiwgMHg1MjM4LCAweDUyMzgsIDB4MDU0RSwKKyAgICAweDUyM0EsIDB4NTIzQSwgMHgwNTUwLCAweDUyM0IsIDB4NTIzQiwgMHgwNTRELCAweDUyM0MsIDB4NTIzQywgMHg0MDVCLAorICAgIDB4NTI0MSwgMHg1MjQxLCAweDA1NTQsIDB4NTI0MywgMHg1MjQzLCAweDA2QzEsIDB4NTI0NCwgMHg1MjQ0LCAweDFBNkQsCisgICAgMHg1MjQ2LCAweDUyNDYsIDB4MTkxNiwgMHg1MjQ3LCAweDUyNDcsIDB4MDZDNiwgMHg1MjQ5LCAweDUyNDksIDB4MUE2RSwKKyAgICAweDUyNEEsIDB4NTI0QSwgMHgwNkMyLCAweDUyNEIsIDB4NTI0QiwgMHgwNkM1LCAweDUyNEMsIDB4NTI0QywgMHgwNkM0LAorICAgIDB4NTI0RCwgMHg1MjRELCAweDA2QzMsIDB4NTI0RSwgMHg1MjRFLCAweDA2QzAsIDB4NTI1MiwgMHg1MjUyLCAweDFDM0MsCisgICAgMHg1MjU0LCAweDUyNTQsIDB4MDg1QywgMHg1MjU1LCAweDUyNTUsIDB4MUMzRiwgMHg1MjU2LCAweDUyNTYsIDB4MDg1QSwKKyAgICAweDUyNTcsIDB4NTI1NywgMHg0MDVELCAweDUyNTksIDB4NTI1OSwgMHgzOUU0LCAweDUyNUEsIDB4NTI1QSwgMHgxQzNCLAorICAgIDB4NTI1QiwgMHg1MjVCLCAweDA4NUQsIDB4NTI1QywgMHg1MjVDLCAweDA4NUIsIDB4NTI1RCwgMHg1MjVELCAweDA4NUUsCisgICAgMHg1MjVFLCAweDUyNUYsIDB4MUMzRCwgMHg1MjYwLCAweDUyNjAsIDB4M0YyOSwgMHg1MjYxLCAweDUyNjEsIDB4MUMzQSwKKyAgICAweDUyNjIsIDB4NTI2MiwgMHgxQzQwLCAweDUyNjgsIDB4NTI2OCwgMHg0NjE5LCAweDUyNjksIDB4NTI2OSwgMHgwQkY1LAorICAgIDB4NTI2QSwgMHg1MjZBLCAweDBBMTIsIDB4NTI2QiwgMHg1MjZCLCAweDFFNTMsIDB4NTI2QywgMHg1MjZDLCAweDFFNTUsCisgICAgMHg1MjZELCAweDUyNkQsIDB4MUU1NCwgMHg1MjZFLCAweDUyNkUsIDB4MUU1NiwgMHg1MjZGLCAweDUyNkYsIDB4MEExMywKKyAgICAweDUyNzIsIDB4NTI3MiwgMHgwQkYyLCAweDUyNzMsIDB4NTI3MywgMHgzRjQzLCAweDUyNzQsIDB4NTI3NSwgMHgwQkYzLAorICAgIDB4NTI3NywgMHg1Mjc3LCAweDBEQ0IsIDB4NTI3OCwgMHg1Mjc4LCAweDIzNzcsIDB4NTI3OSwgMHg1Mjc5LCAweDQzQTMsCisgICAgMHg1MjdBLCAweDUyN0EsIDB4MjM3NiwgMHg1MjdCLCAweDUyN0MsIDB4MjM3OCwgMHg1MjdELCAweDUyN0QsIDB4MERDQywKKyAgICAweDUyN0YsIDB4NTI3RiwgMHgwRENBLCAweDUyODAsIDB4NTI4MSwgMHgyNjIzLCAweDUyODIsIDB4NTI4MiwgMHgwRjhELAorICAgIDB4NTI4MywgMHg1MjgzLCAweDBGOEMsIDB4NTI4NCwgMHg1Mjg0LCAweDI3NzYsIDB4NTI4NywgMHg1Mjg5LCAweDExMEMsCisgICAgMHg1MjhBLCAweDUyOEEsIDB4MTExMCwgMHg1MjhCLCAweDUyOEMsIDB4Mjg4OSwgMHg1MjhELCAweDUyOEQsIDB4MTEwRiwKKyAgICAweDUyOEYsIDB4NTI4RiwgMHgzREJGLCAweDUyOTAsIDB4NTI5MCwgMHg0NTlELCAweDUyOTEsIDB4NTI5MSwgMHgxMjkyLAorICAgIDB4NTI5MywgMHg1MjkzLCAweDEyOTMsIDB4NTI5NCwgMHg1Mjk0LCAweDQwNUUsIDB4NTI5NiwgMHg1Mjk2LCAweDMwN0MsCisgICAgMHg1Mjk3LCAweDUyOTcsIDB4MzJDOCwgMHg1Mjk4LCAweDUyOTgsIDB4MzJDNywgMHg1Mjk5LCAweDUyOTksIDB4MzQwRiwKKyAgICAweDUyOUEsIDB4NTI5QSwgMHgzRjY4LCAweDUyOUIsIDB4NTI5QiwgMHgwMjYyLCAweDUyOUYsIDB4NTI5RiwgMHgwMzBDLAorICAgIDB4NTJBMCwgMHg1MkEwLCAweDAzMEIsIDB4NTJBMSwgMHg1MkExLCAweDQ1NDIsIDB4NTJBMywgMHg1MkEzLCAweDAzOTUsCisgICAgMHg1MkE0LCAweDUyQTQsIDB4MzlFNSwgMHg1MkE2LCAweDUyQTYsIDB4MTdDOSwgMHg1MkE4LCAweDUyQTgsIDB4NDU0MywKKyAgICAweDUyQTksIDB4NTJBQSwgMHgwNDNGLCAweDUyQUIsIDB4NTJBQiwgMHgwNDNFLCAweDUyQUMsIDB4NTJBQywgMHgwNDQxLAorICAgIDB4NTJBRCwgMHg1MkFFLCAweDE4MzgsIDB4NTJCNSwgMHg1MkI1LCAweDQwNUMsIDB4NTJCOSwgMHg1MkI5LCAweDQwNUYsCisgICAgMHg1MkJCLCAweDUyQkIsIDB4MDU1NiwgMHg1MkJDLCAweDUyQkMsIDB4MTkxOCwgMHg1MkJFLCAweDUyQkUsIDB4MDU1NSwKKyAgICAweDUyQzAsIDB4NTJDMCwgMHgxQTZGLCAweDUyQzEsIDB4NTJDMSwgMHgwNkNBLCAweDUyQzIsIDB4NTJDMiwgMHgxQTcwLAorICAgIDB4NTJDMywgMHg1MkMzLCAweDA2QzksIDB4NTJDNSwgMHg1MkM1LCAweDQwNjAsIDB4NTJDNywgMHg1MkM3LCAweDA2QzcsCisgICAgMHg1MkM5LCAweDUyQzksIDB4MDZDOCwgMHg1MkNDLCAweDUyQ0MsIDB4M0VFMSwgMHg1MkNELCAweDUyQ0QsIDB4MUM0MSwKKyAgICAweDUyRDAsIDB4NTJEMCwgMHg0MTA5LCAweDUyRDEsIDB4NTJEMSwgMHgzRjJBLCAweDUyRDIsIDB4NTJEMiwgMHgwQTE0LAorICAgIDB4NTJEMywgMHg1MkQzLCAweDFFNTgsIDB4NTJENSwgMHg1MkQ1LCAweDBBMTcsIDB4NTJENiwgMHg1MkQ2LCAweDFFNTcsCisgICAgMHg1MkQ3LCAweDUyRDcsIDB4MEFDRiwgMHg1MkQ4LCAweDUyRDgsIDB4MEExNiwgMHg1MkQ5LCAweDUyRDksIDB4MEExNSwKKyAgICAweDUyREIsIDB4NTJEQiwgMHgwQkY4LCAweDUyREQsIDB4NTJERCwgMHgwQkY3LCAweDUyREUsIDB4NTJERSwgMHgwQkY2LAorICAgIDB4NTJERiwgMHg1MkRGLCAweDBEQ0QsIDB4NTJFMCwgMHg1MkUwLCAweDQwNjMsIDB4NTJFMSwgMHg1MkUxLCAweDM5RTcsCisgICAgMHg1MkUyLCAweDUyRTMsIDB4MEREMCwgMHg1MkU0LCAweDUyRTQsIDB4MERDRiwgMHg1MkU2LCAweDUyRTYsIDB4MERDRSwKKyAgICAweDUyRTksIDB4NTJFOSwgMHgyNjI1LCAweDUyRUIsIDB4NTJFQiwgMHgyNjI2LCAweDUyRUYsIDB4NTJFRiwgMHgyODhDLAorICAgIDB4NTJGMCwgMHg1MkYwLCAweDExMTEsIDB4NTJGMSwgMHg1MkYxLCAweDI4OEIsIDB4NTJGMywgMHg1MkYzLCAweDEyOTQsCisgICAgMHg1MkY0LCAweDUyRjQsIDB4MkQ0MCwgMHg1MkY1LCAweDUyRjUsIDB4MTNCOCwgMHg1MkY3LCAweDUyRjcsIDB4MzA3RCwKKyAgICAweDUyRjgsIDB4NTJGOCwgMHgxNjA5LCAweDUyRjksIDB4NTJGOSwgMHgwMjIwLCAweDUyRkEsIDB4NTJGQSwgMHgwMjc2LAorICAgIDB4NTJGQiwgMHg1MkZCLCAweDAyQjQsIDB4NTJGQywgMHg1MkZDLCAweDE3ODEsIDB4NTJGRSwgMHg1MkZGLCAweDAyQjUsCisgICAgMHg1MzAxLCAweDUzMDEsIDB4M0Q3OSwgMHg1MzA1LCAweDUzMDYsIDB4MDMwRCwgMHg1MzA4LCAweDUzMDgsIDB4MDM5NiwKKyAgICAweDUzMDksIDB4NTMwOSwgMHgxODNBLCAweDUzMEEsIDB4NTMwQiwgMHgxOTE5LCAweDUzMEQsIDB4NTMwRCwgMHgwNkNCLAorICAgIDB4NTMwRSwgMHg1MzBFLCAweDFDNDIsIDB4NTMwRiwgMHg1MzBGLCAweDBBMTksIDB4NTMxMCwgMHg1MzEwLCAweDBBMTgsCisgICAgMHg1MzExLCAweDUzMTEsIDB4MjBDMCwgMHg1MzEyLCAweDUzMTIsIDB4MjBCRiwgMHg1MzE1LCAweDUzMTUsIDB4MDI2MywKKyAgICAweDUzMTYsIDB4NTMxNiwgMHgwMkI3LCAweDUzMTcsIDB4NTMxNywgMHgwMzBGLCAweDUzMTksIDB4NTMxOSwgMHgwQTFBLAorICAgIDB4NTMxQSwgMHg1MzFBLCAweDE3NkYsIDB4NTMxQywgMHg1MzFDLCAweDE3OTgsIDB4NTMxRCwgMHg1MzFELCAweDAzMTAsCisgICAgMHg1MzFGLCAweDUzMUYsIDB4MTdDQiwgMHg1MzIwLCAweDUzMjAsIDB4MDM5OCwgMHg1MzIxLCAweDUzMjEsIDB4MDM5NywKKyAgICAweDUzMjIsIDB4NTMyMiwgMHgxN0NBLCAweDUzMjMsIDB4NTMyMywgMHgwNDQyLCAweDUzMjcsIDB4NTMyNywgMHg0NTlFLAorICAgIDB4NTMyQSwgMHg1MzJBLCAweDA4NUYsIDB4NTMyQywgMHg1MzJDLCAweDNGMzYsIDB4NTMyRCwgMHg1MzJELCAweDFFNTksCisgICAgMHg1MzJGLCAweDUzMkYsIDB4MEREMiwgMHg1MzMwLCAweDUzMzAsIDB4MjYyNywgMHg1MzMxLCAweDUzMzEsIDB4MEY4RSwKKyAgICAweDUzMzIsIDB4NTMzMiwgMHgzRkQwLCAweDUzMzMsIDB4NTMzMywgMHg0MDZELCAweDUzMzQsIDB4NTMzNCwgMHgyQjA2LAorICAgIDB4NTMzNywgMHg1MzM3LCAweDMxQzcsIDB4NTMzOCwgMHg1MzM4LCAweDAyMjEsIDB4NTMzOSwgMHg1MzM5LCAweDAyQjgsCisgICAgMHg1MzNCLCAweDUzM0IsIDB4NDU0NCwgMHg1MzNDLCAweDUzM0MsIDB4MTkxQiwgMHg1MzNELCAweDUzM0QsIDB4MUE3MSwKKyAgICAweDUzM0UsIDB4NTMzRSwgMHgwQTFELCAweDUzM0YsIDB4NTM0MCwgMHgwQTFCLCAweDUzNDEsIDB4NTM0MSwgMHgwMjY0LAorICAgIDB4NTM0MiwgMHg1MzQyLCAweDQ5NDcsIDB4NTM0MywgMHg1MzQzLCAweDAyNzcsIDB4NTM0NCwgMHg1MzQ0LCAweDAxNkIsCisgICAgMHg1MzQ1LCAweDUzNDUsIDB4MDJCQiwgMHg1MzQ3LCAweDUzNDcsIDB4MDJCQSwgMHg1MzQ4LCAweDUzNDgsIDB4MDJCOSwKKyAgICAweDUzNDksIDB4NTM0OSwgMHgwMzEzLCAweDUzNEEsIDB4NTM0QSwgMHgwMzEyLCAweDUzNEMsIDB4NTM0QywgMHgxNzk5LAorICAgIDB4NTM0RCwgMHg1MzRELCAweDE3Q0MsIDB4NTM0RSwgMHg1MzRFLCAweDQ1NDUsIDB4NTM1MSwgMHg1MzUxLCAweDA1NUEsCisgICAgMHg1MzUyLCAweDUzNTIsIDB4MDU1NywgMHg1MzUzLCAweDUzNTMsIDB4MDU1OSwgMHg1MzU0LCAweDUzNTQsIDB4MDU1OCwKKyAgICAweDUzNTcsIDB4NTM1NywgMHgwNkNDLCAweDUzNUEsIDB4NTM1QSwgMHgwQkY5LCAweDUzNUMsIDB4NTM1QywgMHgwMjY1LAorICAgIDB4NTM1RCwgMHg1MzVELCAweDQ1MDEsIDB4NTM1RSwgMHg1MzVFLCAweDAyQkMsIDB4NTM1RiwgMHg1MzVGLCAweDQzQTcsCisgICAgMHg1MzYwLCAweDUzNjAsIDB4MDMxNSwgMHg1MzYxLCAweDUzNjEsIDB4MDMxNCwgMHg1MzYzLCAweDUzNjMsIDB4MTgzQiwKKyAgICAweDUzNjQsIDB4NTM2NCwgMHg0ODBBLCAweDUzNjYsIDB4NTM2NiwgMHgwNTVCLCAweDUzNjcsIDB4NTM2NywgMHgzRUNELAorICAgIDB4NTM2OSwgMHg1MzY5LCAweDAyMjIsIDB4NTM2QywgMHg1MzZDLCAweDE3ODIsIDB4NTM2RCwgMHg1MzZELCAweDQwN0EsCisgICAgMHg1MzZFLCAweDUzNkUsIDB4MDMxNywgMHg1MzZGLCAweDUzNkYsIDB4MDMxNiwgMHg1MzcwLCAweDUzNzEsIDB4MDM5OSwKKyAgICAweDUzNzIsIDB4NTM3MiwgMHgxODNDLCAweDUzNzMsIDB4NTM3MywgMHgwNDQzLCAweDUzNzQsIDB4NTM3NCwgMHg0MDdCLAorICAgIDB4NTM3NSwgMHg1Mzc1LCAweDA0NDQsIDB4NTM3NywgMHg1Mzc5LCAweDA1NUMsIDB4NTM3QiwgMHg1MzdCLCAweDA2Q0QsCisgICAgMHg1MzdDLCAweDUzN0MsIDB4MUE3MiwgMHg1MzdELCAweDUzN0QsIDB4NDkwMSwgMHg1MzdFLCAweDUzN0UsIDB4NDA3RCwKKyAgICAweDUzN0YsIDB4NTM3RiwgMHgwODYwLCAweDUzODIsIDB4NTM4MiwgMHgxNzcwLCAweDUzODQsIDB4NTM4NCwgMHgwMkJELAorICAgIDB4NTM4QSwgMHg1MzhBLCAweDE3Q0QsIDB4NTM4RSwgMHg1MzhGLCAweDE4M0QsIDB4NTM5MiwgMHg1MzkyLCAweDE5MUMsCisgICAgMHg1MzkzLCAweDUzOTMsIDB4NDA4MiwgMHg1Mzk0LCAweDUzOTQsIDB4MTkxRCwgMHg1Mzk2LCAweDUzOTYsIDB4MUE3NCwKKyAgICAweDUzOTcsIDB4NTM5NywgMHgxQTczLCAweDUzOTgsIDB4NTM5OCwgMHgxQTc2LCAweDUzOTksIDB4NTM5OSwgMHgxQTc1LAorICAgIDB4NTM5QSwgMHg1MzlBLCAweDA2Q0UsIDB4NTM5QywgMHg1MzlDLCAweDFFNUEsIDB4NTM5RCwgMHg1MzlELCAweDA4NjIsCisgICAgMHg1MzlFLCAweDUzOUUsIDB4MUM0MywgMHg1MzlGLCAweDUzOUYsIDB4MDg2MSwgMHg1M0EwLCAweDUzQTAsIDB4NDA4NCwKKyAgICAweDUzQTIsIDB4NTNBMiwgMHgzRTJCLCAweDUzQTQsIDB4NTNBNCwgMHgyMEMxLCAweDUzQTUsIDB4NTNBNSwgMHgwQkZBLAorICAgIDB4NTNBNiwgMHg1M0E2LCAweDQxM0IsIDB4NTNBNywgMHg1M0E3LCAweDIwQzIsIDB4NTNBOCwgMHg1M0E4LCAweDQxM0UsCisgICAgMHg1M0E5LCAweDUzQTksIDB4NDVBMCwgMHg1M0FBLCAweDUzQUEsIDB4M0ZDNiwgMHg1M0FCLCAweDUzQUIsIDB4NDA4NSwKKyAgICAweDUzQUMsIDB4NTNBQywgMHgyNjI4LCAweDUzQUQsIDB4NTNBRCwgMHgwRjhGLCAweDUzQUUsIDB4NTNBRSwgMHg0MDg2LAorICAgIDB4NTNCMCwgMHg1M0IwLCAweDQ1QTIsIDB4NTNCMiwgMHg1M0IyLCAweDExMTIsIDB4NTNCNCwgMHg1M0I0LCAweDMwN0UsCisgICAgMHg1M0I2LCAweDUzQjYsIDB4MDIyMywgMHg1M0I5LCAweDUzQjksIDB4MTc4MywgMHg1M0JCLCAweDUzQkIsIDB4MDMxOCwKKyAgICAweDUzQzEsIDB4NTNDMSwgMHg0MDhCLCAweDUzQzIsIDB4NTNDMiwgMHg0M0E2LCAweDUzQzMsIDB4NTNDMywgMHgwQTFFLAorICAgIDB4NTNDNSwgMHg1M0M1LCAweDQwOEMsIDB4NTNDOCwgMHg1M0M4LCAweDAyNjYsIDB4NTNDOSwgMHg1M0M5LCAweDAyNzgsCisgICAgMHg1M0NBLCAweDUzQ0EsIDB4MDJCRiwgMHg1M0NCLCAweDUzQ0IsIDB4MDJCRSwgMHg1M0NDLCAweDUzQ0MsIDB4MzhCNiwKKyAgICAweDUzQ0QsIDB4NTNDRCwgMHgwMkMwLCAweDUzRDAsIDB4NTNEMCwgMHgzOUZBLCAweDUzRDEsIDB4NTNEMSwgMHg0NTQ2LAorICAgIDB4NTNEMiwgMHg1M0QyLCAweDNFM0QsIDB4NTNENCwgMHg1M0Q0LCAweDA1NjAsIDB4NTNENiwgMHg1M0Q2LCAweDA1NUYsCisgICAgMHg1M0Q3LCAweDUzRDcsIDB4MDU2MSwgMHg1M0Q4LCAweDUzRDgsIDB4NDU0NywgMHg1M0Q5LCAweDUzRDksIDB4NDA5MCwKKyAgICAweDUzREEsIDB4NTNEQSwgMHgzRjM5LCAweDUzREIsIDB4NTNEQiwgMHgwNkNGLCAweDUzREYsIDB4NTNERiwgMHgwODYzLAorICAgIDB4NTNFMCwgMHg1M0UwLCAweDQwOTMsIDB4NTNFMSwgMHg1M0UxLCAweDJCMDcsIDB4NTNFMiwgMHg1M0UyLCAweDE0QzksCisgICAgMHg1M0UzLCAweDUzRTMsIDB4MDI3OSwgMHg1M0U0LCAweDUzRTQsIDB4MDMxQSwgMHg1M0U1LCAweDUzRTUsIDB4MDMyOSwKKyAgICAweDUzRTYsIDB4NTNFNiwgMHgwMzI0LCAweDUzRTgsIDB4NTNFOCwgMHgwMzFGLCAweDUzRTksIDB4NTNFOSwgMHgwMzFFLAorICAgIDB4NTNFQSwgMHg1M0VBLCAweDAzMjUsIDB4NTNFQiwgMHg1M0VCLCAweDAzMjMsIDB4NTNFQywgMHg1M0VDLCAweDAzMUMsCisgICAgMHg1M0VELCAweDUzRUQsIDB4MDMyQSwgMHg1M0VFLCAweDUzRUUsIDB4MDMxRCwgMHg1M0VGLCAweDUzRUYsIDB4MDMxOSwKKyAgICAweDUzRjAsIDB4NTNGMCwgMHgwMzI4LCAweDUzRjEsIDB4NTNGMSwgMHgwMzI3LCAweDUzRjIsIDB4NTNGMiwgMHgwMzI2LAorICAgIDB4NTNGMywgMHg1M0YzLCAweDAzMUIsIDB4NTNGNSwgMHg1M0Y1LCAweDAzMjIsIDB4NTNGNiwgMHg1M0Y2LCAweDQwOTYsCisgICAgMHg1M0Y3LCAweDUzRjcsIDB4MzgwOCwgMHg1M0Y4LCAweDUzRjgsIDB4MDMyMSwgMHg1M0ZCLCAweDUzRkIsIDB4MDMyQiwKKyAgICAweDUzRkMsIDB4NTNGQywgMHgwMzIwLCAweDUzRkUsIDB4NTNGRSwgMHg0MEMxLCAweDU0MDEsIDB4NTQwMSwgMHgwM0EwLAorICAgIDB4NTQwMywgMHg1NDAzLCAweDAzQTYsIDB4NTQwNCwgMHg1NDA0LCAweDAzQTIsIDB4NTQwNiwgMHg1NDA2LCAweDAzQTgsCisgICAgMHg1NDA3LCAweDU0MDcsIDB4MTdDRSwgMHg1NDA4LCAweDU0MDgsIDB4MDNBNSwgMHg1NDA5LCAweDU0MDksIDB4MDM5QiwKKyAgICAweDU0MEEsIDB4NTQwQSwgMHgwMzlFLCAweDU0MEIsIDB4NTQwQiwgMHgwM0ExLCAweDU0MEMsIDB4NTQwQywgMHgwMzlELAorICAgIDB4NTQwRCwgMHg1NDBELCAweDAzQTQsIDB4NTQwRSwgMHg1NDBFLCAweDAzQTcsIDB4NTQwRiwgMHg1NDBGLCAweDAzOUMsCisgICAgMHg1NDEwLCAweDU0MTAsIDB4MDM5RiwgMHg1NDExLCAweDU0MTEsIDB4MDNBMywgMHg1NDEyLCAweDU0MTIsIDB4MDNBOSwKKyAgICAweDU0MTMsIDB4NTQxMywgMHg0MDk4LCAweDU0MTQsIDB4NTQxNCwgMHgzQzc3LCAweDU0MTYsIDB4NTQxNiwgMHgzRTdGLAorICAgIDB4NTQxOCwgMHg1NDE4LCAweDE4NDcsIDB4NTQxOSwgMHg1NDE5LCAweDE4NDQsIDB4NTQxQSwgMHg1NDFBLCAweDNFNjQsCisgICAgMHg1NDFCLCAweDU0MUIsIDB4MDQ1MSwgMHg1NDFDLCAweDU0MUMsIDB4MTg0NSwgMHg1NDFELCAweDU0MUQsIDB4MDQ0NSwKKyAgICAweDU0MUUsIDB4NTQxRSwgMHgwNDQ3LCAweDU0MUYsIDB4NTQxRiwgMHgwNDVGLCAweDU0MjAsIDB4NTQyMCwgMHgwNDVBLAorICAgIDB4NTQyMSwgMHg1NDIxLCAweDQyMDMsIDB4NTQyMywgMHg1NDIzLCAweDQ1QTMsIDB4NTQyNCwgMHg1NDI0LCAweDE4NEMsCisgICAgMHg1NDI1LCAweDU0MjUsIDB4MTg0NiwgMHg1NDI2LCAweDU0MjYsIDB4MDQ0OSwgMHg1NDI3LCAweDU0MjcsIDB4MDQ0QiwKKyAgICAweDU0MjgsIDB4NTQyOCwgMHgxODRCLCAweDU0MjksIDB4NTQyOSwgMHgwNDUyLCAweDU0MkEsIDB4NTQyQSwgMHgxODQxLAorICAgIDB4NTQyQiwgMHg1NDJCLCAweDA0NUUsIDB4NTQyQywgMHg1NDJDLCAweDA0NjAsIDB4NTQyRCwgMHg1NDJELCAweDA0NDYsCisgICAgMHg1NDJFLCAweDU0MkUsIDB4MDQ1NywgMHg1NDJGLCAweDU0MkYsIDB4NDBBQywgMHg1NDMwLCAweDU0MzAsIDB4MTgzRiwKKyAgICAweDU0MzEsIDB4NTQzMSwgMHgwNDVELCAweDU0MzIsIDB4NTQzMiwgMHgzRTc1LCAweDU0MzMsIDB4NTQzMywgMHgwNDRFLAorICAgIDB4NTQzNSwgMHg1NDM2LCAweDA0NTgsIDB4NTQzNywgMHg1NDM3LCAweDE4NDAsIDB4NTQzOCwgMHg1NDM4LCAweDA0NTYsCisgICAgMHg1NDM5LCAweDU0MzksIDB4MDQ1NCwgMHg1NDNCLCAweDU0M0IsIDB4MDQ1NSwgMHg1NDNDLCAweDU0M0MsIDB4MDQ1QiwKKyAgICAweDU0M0QsIDB4NTQzRCwgMHgxODQ4LCAweDU0M0UsIDB4NTQzRSwgMHgwNDQ4LCAweDU0NDAsIDB4NTQ0MCwgMHgwNDVDLAorICAgIDB4NTQ0MSwgMHg1NDQxLCAweDE4NEEsIDB4NTQ0MiwgMHg1NDQyLCAweDA0NTAsIDB4NTQ0MywgMHg1NDQzLCAweDA0NEQsCisgICAgMHg1NDQ1LCAweDU0NDUsIDB4MTg0MywgMHg1NDQ2LCAweDU0NDYsIDB4MDQ0QywgMHg1NDQ3LCAweDU0NDcsIDB4MTg0RCwKKyAgICAweDU0NDgsIDB4NTQ0OCwgMHgwNDRGLCAweDU0NEEsIDB4NTQ0QSwgMHgwNDUzLCAweDU0NEIsIDB4NTQ0QiwgMHgzRUQxLAorICAgIDB4NTQ0RCwgMHg1NDRELCAweDNFQTcsIDB4NTQ0RSwgMHg1NDRFLCAweDA0NEEsIDB4NTQ0RiwgMHg1NDRGLCAweDE4NDksCisgICAgMHg1NDU0LCAweDU0NTQsIDB4MTg0MiwgMHg1NDYwLCAweDU0NjAsIDB4MTkyRSwgMHg1NDYxLCAweDU0NjEsIDB4MTkyRCwKKyAgICAweDU0NjIsIDB4NTQ2MiwgMHgwNTczLCAweDU0NjMsIDB4NTQ2MywgMHgxOTMwLCAweDU0NjQsIDB4NTQ2NCwgMHgxOTMyLAorICAgIDB4NTQ2NSwgMHg1NDY1LCAweDE5MjcsIDB4NTQ2NiwgMHg1NDY2LCAweDE5MkEsIDB4NTQ2NywgMHg1NDY3LCAweDE5MzEsCisgICAgMHg1NDY4LCAweDU0NjgsIDB4MDU3NCwgMHg1NDY5LCAweDU0NjksIDB4M0YzMiwgMHg1NDZBLCAweDU0NkEsIDB4M0Q4MywKKyAgICAweDU0NkIsIDB4NTQ2QiwgMHgxOTI0LCAweDU0NkMsIDB4NTQ2QywgMHgxOTI4LCAweDU0NkQsIDB4NTQ2RCwgMHg0MDlELAorICAgIDB4NTQ2RiwgMHg1NDZGLCAweDE5MkMsIDB4NTQ3MCwgMHg1NDcwLCAweDFBODUsIDB4NTQ3MSwgMHg1NDcxLCAweDA1NkYsCisgICAgMHg1NDcyLCAweDU0NzIsIDB4MUE4OSwgMHg1NDczLCAweDU0NzMsIDB4MDU2MiwgMHg1NDc0LCAweDU0NzQsIDB4MTkyOSwKKyAgICAweDU0NzUsIDB4NTQ3NSwgMHgwNTYzLCAweDU0NzYsIDB4NTQ3NiwgMHgwNTcwLCAweDU0NzcsIDB4NTQ3NywgMHgwNTY5LAorICAgIDB4NTQ3OCwgMHg1NDc4LCAweDA1NjUsIDB4NTQ3QSwgMHg1NDdBLCAweDE5MjUsIDB4NTQ3QiwgMHg1NDdCLCAweDA1NjgsCisgICAgMHg1NDdDLCAweDU0N0MsIDB4MDU2RCwgMHg1NDdELCAweDU0N0QsIDB4MDU3NiwgMHg1NDdFLCAweDU0N0UsIDB4MTkyNiwKKyAgICAweDU0N0YsIDB4NTQ3RiwgMHgxOTFGLCAweDU0ODAsIDB4NTQ4MCwgMHgwNTY3LCAweDU0ODEsIDB4NTQ4MSwgMHgxOTIwLAorICAgIDB4NTQ4MiwgMHg1NDgyLCAweDE5MjIsIDB4NTQ4NCwgMHg1NDg0LCAweDA1NkEsIDB4NTQ4NSwgMHg1NDg1LCAweDQ2RDksCisgICAgMHg1NDg2LCAweDU0ODYsIDB4MDU2QywgMHg1NDg3LCAweDU0ODcsIDB4MTkxRSwgMHg1NDg4LCAweDU0ODgsIDB4MTkyMywKKyAgICAweDU0OEIsIDB4NTQ4QiwgMHgwNTc1LCAweDU0OEMsIDB4NTQ4QywgMHgwNTcxLCAweDU0OEQsIDB4NTQ4RCwgMHgxOTJCLAorICAgIDB4NTQ4RSwgMHg1NDhFLCAweDA1NzcsIDB4NTQ4RiwgMHg1NDhGLCAweDQwQTEsIDB4NTQ5MCwgMHg1NDkwLCAweDA1NkUsCisgICAgMHg1NDkxLCAweDU0OTEsIDB4MTkyMSwgMHg1NDkyLCAweDU0OTIsIDB4MDU2QiwgMHg1NDkzLCAweDU0OTMsIDB4NDVBNywKKyAgICAweDU0OTQsIDB4NTQ5NCwgMHgzRTk4LCAweDU0OTUsIDB4NTQ5NSwgMHgwNTY2LCAweDU0OTYsIDB4NTQ5NiwgMHgwNTY0LAorICAgIDB4NTQ5NywgMHg1NDk3LCAweDNFOEEsIDB4NTQ5OCwgMHg1NDk4LCAweDE5MkYsIDB4NTQ5QSwgMHg1NDlBLCAweDA1NzIsCisgICAgMHg1NDlDLCAweDU0OUMsIDB4M0Y2NiwgMHg1NDlFLCAweDU0OUUsIDB4NDdFRCwgMHg1NEEwLCAweDU0QTAsIDB4MUE4NCwKKyAgICAweDU0QTEsIDB4NTRBMSwgMHgxQTc4LCAweDU0QTIsIDB4NTRBMiwgMHgxQTg3LCAweDU0QTMsIDB4NTRBMywgMHg0NUE4LAorICAgIDB4NTRBNCwgMHg1NEE0LCAweDQwQTIsIDB4NTRBNSwgMHg1NEE1LCAweDFBN0EsIDB4NTRBNiwgMHg1NEE2LCAweDA2RDYsCisgICAgMHg1NEE3LCAweDU0QTcsIDB4MDZFNCwgMHg1NEE4LCAweDU0QTgsIDB4MDZEMiwgMHg1NEE5LCAweDU0QTksIDB4MDZFMywKKyAgICAweDU0QUEsIDB4NTRBQSwgMHgwNkRCLCAweDU0QUIsIDB4NTRBQiwgMHgwNkUwLCAweDU0QUMsIDB4NTRBQywgMHgwNkQwLAorICAgIDB4NTRBRCwgMHg1NEFELCAweDFBNzksIDB4NTRBRSwgMHg1NEFFLCAweDFBN0YsIDB4NTRBRiwgMHg1NEFGLCAweDA2REYsCisgICAgMHg1NEIwLCAweDU0QjAsIDB4MUE4QiwgMHg1NEIxLCAweDU0QjEsIDB4MDZFMSwgMHg1NEIyLCAweDU0QjIsIDB4Mzc0NCwKKyAgICAweDU0QjMsIDB4NTRCMywgMHgwNkQ3LCAweDU0QjQsIDB4NTRCNCwgMHg0NUE5LCAweDU0QjYsIDB4NTRCNiwgMHgxQTgxLAorICAgIDB4NTRCNywgMHg1NEI3LCAweDFBN0UsIDB4NTRCOCwgMHg1NEI4LCAweDA2RDUsIDB4NTRCOSwgMHg1NEI5LCAweDQ1QUEsCisgICAgMHg1NEJBLCAweDU0QkEsIDB4MUE3NywgMHg1NEJCLCAweDU0QkIsIDB4MDZFMiwgMHg1NEJDLCAweDU0QkMsIDB4MUE4NiwKKyAgICAweDU0QkQsIDB4NTRCRCwgMHgwNkRBLCAweDU0QkUsIDB4NTRCRSwgMHgxQTg4LCAweDU0QkYsIDB4NTRCRiwgMHgwNkU1LAorICAgIDB4NTRDMCwgMHg1NEMwLCAweDA2RDEsIDB4NTRDMSwgMHg1NEMxLCAweDA2REMsIDB4NTRDMiwgMHg1NEMyLCAweDA2RDksCisgICAgMHg1NEMzLCAweDU0QzMsIDB4MUE3QywgMHg1NEM0LCAweDU0QzQsIDB4MDZERCwgMHg1NEM1LCAweDU0QzYsIDB4MUE4MiwKKyAgICAweDU0QzcsIDB4NTRDNywgMHgwNkQ4LCAweDU0QzgsIDB4NTRDOCwgMHgwNkRFLCAweDU0QzksIDB4NTRDOSwgMHgwNkQ0LAorICAgIDB4NTRDQiwgMHg1NENCLCAweDM5QTMsIDB4NTRDQywgMHg1NENDLCAweDQzQTgsIDB4NTRDRCwgMHg1NENELCAweDNBMDAsCisgICAgMHg1NENFLCAweDU0Q0UsIDB4MDZEMywgMHg1NENGLCAweDU0Q0YsIDB4MUE3QiwgMHg1NEQwLCAweDU0RDAsIDB4NDVBQiwKKyAgICAweDU0RDYsIDB4NTRENiwgMHgxQTgwLCAweDU0REEsIDB4NTREQSwgMHg0OTIzLCAweDU0REUsIDB4NTRERSwgMHgxQThBLAorICAgIDB4NTRFMCwgMHg1NEUwLCAweDFDNTcsIDB4NTRFMSwgMHg1NEUxLCAweDA4NzAsIDB4NTRFMiwgMHg1NEUyLCAweDFDNDUsCisgICAgMHg1NEUzLCAweDU0RTMsIDB4NDM0MSwgMHg1NEU0LCAweDU0RTQsIDB4MUM0QSwgMHg1NEU1LCAweDU0RTUsIDB4MDg2OSwKKyAgICAweDU0RTYsIDB4NTRFNiwgMHgwODc0LCAweDU0RTcsIDB4NTRFNywgMHgxQzQ4LCAweDU0RTgsIDB4NTRFOCwgMHgwODY0LAorICAgIDB4NTRFOSwgMHg1NEU5LCAweDA4NkUsIDB4NTRFQSwgMHg1NEVBLCAweDA4NzMsIDB4NTRFQiwgMHg1NEVCLCAweDFDNEYsCisgICAgMHg1NEVELCAweDU0RUQsIDB4MDg2RiwgMHg1NEVFLCAweDU0RUUsIDB4MDg3MiwgMHg1NEVGLCAweDU0RUYsIDB4NDVBQywKKyAgICAweDU0RjEsIDB4NTRGMSwgMHgxQzUyLCAweDU0RjIsIDB4NTRGMiwgMHgwODZBLCAweDU0RjMsIDB4NTRGMywgMHgxQzQ5LAorICAgIDB4NTRGNywgMHg1NEY4LCAweDFDNTUsIDB4NTRGQSwgMHg1NEZBLCAweDA4NkMsIDB4NTRGQiwgMHg1NEZCLCAweDFDNTQsCisgICAgMHg1NEZDLCAweDU0RkMsIDB4MDg2OCwgMHg1NEZELCAweDU0RkQsIDB4MDg3NywgMHg1NEZGLCAweDU0RkYsIDB4MUM0QywKKyAgICAweDU1MDEsIDB4NTUwMSwgMHgwODY2LCAweDU1MDIsIDB4NTUwMiwgMHgzQ0NDLCAweDU1MDMsIDB4NTUwMywgMHgxQzU5LAorICAgIDB4NTUwNCwgMHg1NTA0LCAweDFDNEQsIDB4NTUwNSwgMHg1NTA1LCAweDFDNTEsIDB4NTUwNiwgMHg1NTA2LCAweDA4NkIsCisgICAgMHg1NTA3LCAweDU1MDcsIDB4MDg3NiwgMHg1NTA4LCAweDU1MDgsIDB4MUM0RSwgMHg1NTA5LCAweDU1MDksIDB4MDg3MSwKKyAgICAweDU1MEEsIDB4NTUwQSwgMHgxQzUzLCAweDU1MEIsIDB4NTUwQiwgMHgxQzVBLCAweDU1MEMsIDB4NTUwQywgMHgxRTY5LAorICAgIDB4NTUwRCwgMHg1NTBELCAweDNBNzMsIDB4NTUwRSwgMHg1NTBFLCAweDFDNTgsIDB4NTUwRiwgMHg1NTBGLCAweDA4NzgsCisgICAgMHg1NTEwLCAweDU1MTAsIDB4MDg2NSwgMHg1NTExLCAweDU1MTEsIDB4MUM1MCwgMHg1NTEyLCAweDU1MTIsIDB4MUM0NywKKyAgICAweDU1MTMsIDB4NTUxMywgMHgzRUE5LCAweDU1MTQsIDB4NTUxNCwgMHgwODZELCAweDU1MTcsIDB4NTUxNywgMHgxQzQ2LAorICAgIDB4NTUxOCwgMHg1NTE4LCAweDQ1QUQsIDB4NTUxQSwgMHg1NTFBLCAweDFDNEIsIDB4NTUxRSwgMHg1NTFFLCAweDNFQTgsCisgICAgMHg1NTIzLCAweDU1MjMsIDB4NDVBRSwgMHg1NTI1LCAweDU1MjUsIDB4NDMwOSwgMHg1NTI2LCAweDU1MjYsIDB4MUM0NCwKKyAgICAweDU1MjcsIDB4NTUyNywgMHgwODc1LCAweDU1MjgsIDB4NTUyOCwgMHg0NUFGLCAweDU1MkEsIDB4NTUyQSwgMHgxRTYxLAorICAgIDB4NTUyQiwgMHg1NTJCLCAweDQwOUEsIDB4NTUyQywgMHg1NTJDLCAweDBBMzEsIDB4NTUyRCwgMHg1NTJELCAweDFFNkYsCisgICAgMHg1NTJFLCAweDU1MkUsIDB4MEEyRiwgMHg1NTJGLCAweDU1MkYsIDB4MEEyQywgMHg1NTMwLCAweDU1MzAsIDB4MUU2NiwKKyAgICAweDU1MzEsIDB4NTUzMSwgMHgwQTI4LCAweDU1MzIsIDB4NTUzMiwgMHgxRTZBLCAweDU1MzMsIDB4NTUzMywgMHgwQTMzLAorICAgIDB4NTUzNCwgMHg1NTM0LCAweDFFNjAsIDB4NTUzNSwgMHg1NTM1LCAweDFFNjUsIDB4NTUzNiwgMHg1NTM2LCAweDFFNjQsCisgICAgMHg1NTM3LCAweDU1MzcsIDB4MDg2NywgMHg1NTM4LCAweDU1MzgsIDB4MEEyRSwgMHg1NTM5LCAweDU1MzksIDB4MUU2RCwKKyAgICAweDU1M0IsIDB4NTUzQiwgMHgxRTcwLCAweDU1M0MsIDB4NTUzQywgMHgxRTVELCAweDU1M0UsIDB4NTUzRSwgMHgwQzBDLAorICAgIDB4NTUzRiwgMHg1NTNGLCAweDQzQTksIDB4NTU0MCwgMHg1NTQwLCAweDFFNzEsIDB4NTU0MSwgMHg1NTQxLCAweDBBMzQsCisgICAgMHg1NTQzLCAweDU1NDMsIDB4MEEyNiwgMHg1NTQ0LCAweDU1NDQsIDB4MEEyMywgMHg1NTQ1LCAweDU1NDUsIDB4MUU2OCwKKyAgICAweDU1NDYsIDB4NTU0NiwgMHgwQTIwLCAweDU1NDcsIDB4NTU0NywgMHg0MEFBLCAweDU1NDgsIDB4NTU0OCwgMHgxRTZFLAorICAgIDB4NTU0OSwgMHg1NTQ5LCAweDQwNjgsIDB4NTU0QSwgMHg1NTRBLCAweDBBMjcsIDB4NTU0QiwgMHg1NTRCLCAweDFFNzIsCisgICAgMHg1NTRELCAweDU1NEQsIDB4MUU1RSwgMHg1NTRFLCAweDU1NEUsIDB4MUU2QywgMHg1NTRGLCAweDU1NEYsIDB4MEEyQSwKKyAgICAweDU1NTAsIDB4NTU1MCwgMHgxRTVGLCAweDU1NTEsIDB4NTU1MSwgMHgxRTYyLCAweDU1NTIsIDB4NTU1MiwgMHgxRTY3LAorICAgIDB4NTU1MywgMHg1NTUzLCAweDQzQUUsIDB4NTU1NSwgMHg1NTU1LCAweDBBMkIsIDB4NTU1NiwgMHg1NTU2LCAweDBBMjksCisgICAgMHg1NTU3LCAweDU1NTcsIDB4MEEzNSwgMHg1NTVDLCAweDU1NUMsIDB4MEEzMCwgMHg1NTVELCAweDU1NUQsIDB4NDBBMCwKKyAgICAweDU1NUUsIDB4NTU1RSwgMHgwQTI0LCAweDU1NUYsIDB4NTU1RiwgMHgwQUJDLCAweDU1NjEsIDB4NTU2MSwgMHgwQTI1LAorICAgIDB4NTU2MiwgMHg1NTYyLCAweDFFNjMsIDB4NTU2MywgMHg1NTYzLCAweDBBMzIsIDB4NTU2NCwgMHg1NTY0LCAweDBBMkQsCisgICAgMHg1NTY1LCAweDU1NjUsIDB4MUU2QiwgMHg1NTY2LCAweDU1NjYsIDB4MEEyMiwgMHg1NTY5LCAweDU1NjksIDB4M0U5RiwKKyAgICAweDU1NkEsIDB4NTU2QSwgMHgwQTIxLCAweDU1NkIsIDB4NTU2QiwgMHgzQjJFLCAweDU1NzEsIDB4NTU3MSwgMHgzQkM2LAorICAgIDB4NTU3MiwgMHg1NTcyLCAweDNFOEIsIDB4NTU3MywgMHg1NTczLCAweDNGMjQsIDB4NTU3NSwgMHg1NTc2LCAweDFFNUIsCisgICAgMHg1NTc3LCAweDU1NzcsIDB4MjBDNywgMHg1NTc5LCAweDU1NzksIDB4NDM1RCwgMHg1NTdCLCAweDU1N0IsIDB4MEJGQiwKKyAgICAweDU1N0MsIDB4NTU3QywgMHgwQkZFLCAweDU1N0QsIDB4NTU3RCwgMHgyMEQyLCAweDU1N0UsIDB4NTU3RSwgMHgwQzEyLAorICAgIDB4NTU3RiwgMHg1NTdGLCAweDIwRDUsIDB4NTU4MCwgMHg1NTgwLCAweDBCRkMsIDB4NTU4MSwgMHg1NTgxLCAweDIwQ0UsCisgICAgMHg1NTgyLCAweDU1ODIsIDB4MEMwMiwgMHg1NTgzLCAweDU1ODMsIDB4MEMwOCwgMHg1NTg0LCAweDU1ODQsIDB4MEQxQiwKKyAgICAweDU1ODYsIDB4NTU4NiwgMHg0MEFFLCAweDU1ODcsIDB4NTU4NywgMHgwQzA2LCAweDU1ODgsIDB4NTU4OCwgMHgyMENCLAorICAgIDB4NTU4OSwgMHg1NTg5LCAweDBDMTMsIDB4NTU4QSwgMHg1NThBLCAweDBCRkYsIDB4NTU4QiwgMHg1NThCLCAweDBDMDcsCisgICAgMHg1NThDLCAweDU1OEMsIDB4MjBEMywgMHg1NThELCAweDU1OEQsIDB4MjM4NywgMHg1NThFLCAweDU1OEUsIDB4MjBEOCwKKyAgICAweDU1OEYsIDB4NTU4RiwgMHgyMENDLCAweDU1OTAsIDB4NTU5MCwgMHg0MzBFLCAweDU1OTEsIDB4NTU5MSwgMHgyMEMzLAorICAgIDB4NTU5MiwgMHg1NTkyLCAweDIwRDAsIDB4NTU5MywgMHg1NTkzLCAweDIwQ0EsIDB4NTU5NCwgMHg1NTk0LCAweDBDMDUsCisgICAgMHg1NTk1LCAweDU1OTUsIDB4MjBENiwgMHg1NTk4LCAweDU1OTgsIDB4MEMwMSwgMHg1NTk5LCAweDU1OTksIDB4MEMxNSwKKyAgICAweDU1OUEsIDB4NTU5QSwgMHgwQzBFLCAweDU1OUMsIDB4NTU5QywgMHgwQzAzLCAweDU1OUQsIDB4NTU5RCwgMHgwQzAwLAorICAgIDB4NTU5RiwgMHg1NTlGLCAweDBDMEIsIDB4NTVBMSwgMHg1NUExLCAweDIwRDcsIDB4NTVBMiwgMHg1NUEyLCAweDIwQzksCisgICAgMHg1NUEzLCAweDU1QTMsIDB4MjBDRiwgMHg1NUE0LCAweDU1QTQsIDB4MjBEMSwgMHg1NUE1LCAweDU1QTUsIDB4MjBDNSwKKyAgICAweDU1QTYsIDB4NTVBNiwgMHgyMEQ0LCAweDU1QTcsIDB4NTVBNywgMHgwQkZELCAweDU1QTgsIDB4NTVBOCwgMHgyMEM0LAorICAgIDB4NTVBOSwgMHg1NUE5LCAweDQwQUYsIDB4NTVBQSwgMHg1NUFBLCAweDBDMDQsIDB4NTVBQiwgMHg1NUFCLCAweDBDMTQsCisgICAgMHg1NUFDLCAweDU1QUMsIDB4MEMxMCwgMHg1NUFELCAweDU1QUQsIDB4MjBDNiwgMHg1NUFFLCAweDU1QUUsIDB4MEMwQSwKKyAgICAweDU1QjAsIDB4NTVCMCwgMHgzOEY1LCAweDU1QjEsIDB4NTVCMSwgMHgwQzExLCAweDU1QjIsIDB4NTVCMiwgMHgwQzBELAorICAgIDB4NTVCMywgMHg1NUIzLCAweDBDMDksIDB4NTVCNCwgMHg1NUI0LCAweDM5RkUsIDB4NTVCNSwgMHg1NUI1LCAweDIwQ0QsCisgICAgMHg1NUI5LCAweDU1QjksIDB4NDNBQSwgMHg1NUJBLCAweDU1QkEsIDB4M0U4OSwgMHg1NUJCLCAweDU1QkIsIDB4MEMwRiwKKyAgICAweDU1QkMsIDB4NTVCQywgMHgzREMzLCAweDU1QkYsIDB4NTVCRiwgMHgyMzg1LCAweDU1QzAsIDB4NTVDMCwgMHgyMzgxLAorICAgIDB4NTVDMSwgMHg1NUMxLCAweDNFNEYsIDB4NTVDMiwgMHg1NUMyLCAweDIzOTAsIDB4NTVDMywgMHg1NUMzLCAweDIzN0EsCisgICAgMHg1NUM0LCAweDU1QzQsIDB4MjM4MywgMHg1NUM1LCAweDU1QzYsIDB4MERFMCwgMHg1NUM3LCAweDU1QzcsIDB4MEREOSwKKyAgICAweDU1QzgsIDB4NTVDOCwgMHgyMzhDLCAweDU1QzksIDB4NTVDOSwgMHgwREUzLCAweDU1Q0EsIDB4NTVDQSwgMHgyMzdGLAorICAgIDB4NTVDQiwgMHg1NUNCLCAweDIzN0UsIDB4NTVDQywgMHg1NUNDLCAweDIzN0MsIDB4NTVDRCwgMHg1NUNELCAweDIzOEUsCisgICAgMHg1NUNFLCAweDU1Q0UsIDB4MERENywgMHg1NUNGLCAweDU1Q0YsIDB4MjM4OCwgMHg1NUQwLCAweDU1RDAsIDB4MjM3RCwKKyAgICAweDU1RDEsIDB4NTVEMSwgMHgwRERBLCAweDU1RDIsIDB4NTVEMiwgMHgyMzg2LCAweDU1RDMsIDB4NTVEMywgMHgwREQ1LAorICAgIDB4NTVENCwgMHg1NUQ0LCAweDIzODIsIDB4NTVENSwgMHg1NUQ1LCAweDIzODksIDB4NTVENiwgMHg1NUQ2LCAweDIzOEIsCisgICAgMHg1NUQ3LCAweDU1RDcsIDB4NDVCMywgMHg1NUQ4LCAweDU1RDgsIDB4NDNBQiwgMHg1NUQ5LCAweDU1RDksIDB4MjM4RiwKKyAgICAweDU1REEsIDB4NTVEQSwgMHgwRERFLCAweDU1REIsIDB4NTVEQiwgMHgyMzdCLCAweDU1REMsIDB4NTVEQywgMHgwREQ4LAorICAgIDB4NTVERCwgMHg1NURELCAweDIzODAsIDB4NTVERSwgMHg1NURFLCAweDNFOTQsIDB4NTVERiwgMHg1NURGLCAweDBERDMsCisgICAgMHg1NUUxLCAweDU1RTEsIDB4MERERiwgMHg1NUUyLCAweDU1RTIsIDB4MjM4QSwgMHg1NUUzLCAweDU1RTQsIDB4MEREQiwKKyAgICAweDU1RTUsIDB4NTVFNSwgMHgwREUyLCAweDU1RTYsIDB4NTVFNiwgMHgwREQ2LCAweDU1RTcsIDB4NTVFNywgMHgwMTFGLAorICAgIDB4NTVFOCwgMHg1NUU4LCAweDBERDQsIDB4NTVFOSwgMHg1NUU5LCAweDIzODQsIDB4NTVFQSwgMHg1NUVBLCAweDNFN0MsCisgICAgMHg1NUVDLCAweDU1RUMsIDB4MzdEMiwgMHg1NUVGLCAweDU1RUYsIDB4MERERCwgMHg1NUYwLCAweDU1RjAsIDB4M0U4OCwKKyAgICAweDU1RjEsIDB4NTVGMSwgMHgzRTgzLCAweDU1RjIsIDB4NTVGMiwgMHgyMzhELCAweDU1RjUsIDB4NTVGNSwgMHg0Nzg2LAorICAgIDB4NTVGNiwgMHg1NUY2LCAweDBGOUYsIDB4NTVGNywgMHg1NUY3LCAweDBGOUEsIDB4NTVGOSwgMHg1NUY5LCAweDI2MzcsCisgICAgMHg1NUZBLCAweDU1RkEsIDB4MjYzMywgMHg1NUZCLCAweDU1RkIsIDB4NDYyNiwgMHg1NUZDLCAweDU1RkMsIDB4MjYyRCwKKyAgICAweDU1RkQsIDB4NTVGRCwgMHgwRjk0LCAweDU1RkUsIDB4NTVGRSwgMHgwRjkwLCAweDU1RkYsIDB4NTVGRiwgMHgyNjM2LAorICAgIDB4NTYwMCwgMHg1NjAwLCAweDBGOTEsIDB4NTYwMSwgMHg1NjAxLCAweDI2MzAsIDB4NTYwMiwgMHg1NjAyLCAweDI2MzIsCisgICAgMHg1NjA0LCAweDU2MDQsIDB4MjYzNSwgMHg1NjA1LCAweDU2MDUsIDB4M0U4MiwgMHg1NjA2LCAweDU2MDYsIDB4MEY5NiwKKyAgICAweDU2MDgsIDB4NTYwOCwgMHgwRjlELCAweDU2MDksIDB4NTYwOSwgMHgwRjk3LCAweDU2MEMsIDB4NTYwQywgMHgyNjJCLAorICAgIDB4NTYwRCwgMHg1NjBFLCAweDBGOTgsIDB4NTYwRiwgMHg1NjBGLCAweDI2MkUsIDB4NTYxMCwgMHg1NjEwLCAweDBGOUUsCisgICAgMHg1NjExLCAweDU2MTEsIDB4M0Y0RCwgMHg1NjEyLCAweDU2MTIsIDB4MjYyQywgMHg1NjEzLCAweDU2MTMsIDB4MjYzMSwKKyAgICAweDU2MTQsIDB4NTYxNCwgMHgwRjk1LCAweDU2MTUsIDB4NTYxNSwgMHgyNjJBLCAweDU2MTYsIDB4NTYxNiwgMHgwRjlCLAorICAgIDB4NTYxNywgMHg1NjE3LCAweDBGOTMsIDB4NTYxQiwgMHg1NjFCLCAweDBGOTIsIDB4NTYxQywgMHg1NjFDLCAweDI2MkYsCisgICAgMHg1NjFELCAweDU2MUQsIDB4MjYzNCwgMHg1NjFFLCAweDU2MUUsIDB4M0U2OCwgMHg1NjFGLCAweDU2MUYsIDB4MEY5QywKKyAgICAweDU2MjAsIDB4NTYyMCwgMHgzRjdELCAweDU2MjEsIDB4NTYyMSwgMHg0M0FELCAweDU2MjIsIDB4NTYyMiwgMHgzRTY3LAorICAgIDB4NTYyMywgMHg1NjIzLCAweDQ3MDcsIDB4NTYyNSwgMHg1NjI1LCAweDNFNzgsIDB4NTYyNywgMHg1NjI3LCAweDI2MjksCisgICAgMHg1NjI5LCAweDU2MjksIDB4MTExOSwgMHg1NjJBLCAweDU2MkEsIDB4Mjg5RCwgMHg1NjJDLCAweDU2MkMsIDB4Mjg5QSwKKyAgICAweDU2MkQsIDB4NTYyRCwgMHgzRTYzLCAweDU2MkUsIDB4NTYyRSwgMHgxMTEzLCAweDU2MkYsIDB4NTYzMCwgMHgxMTFGLAorICAgIDB4NTYzMiwgMHg1NjMyLCAweDExMTYsIDB4NTYzMywgMHg1NjMzLCAweDI4OTgsIDB4NTYzNCwgMHg1NjM0LCAweDExMTgsCisgICAgMHg1NjM1LCAweDU2MzUsIDB4Mjg5MCwgMHg1NjM2LCAweDU2MzYsIDB4MTExRSwgMHg1NjM3LCAweDU2MzcsIDB4NDBCNywKKyAgICAweDU2MzgsIDB4NTYzOCwgMHgyODlDLCAweDU2MzksIDB4NTYzOSwgMHgxMTE1LCAweDU2M0EsIDB4NTYzQSwgMHgyODlFLAorICAgIDB4NTYzQiwgMHg1NjNCLCAweDExMTQsIDB4NTYzRCwgMHg1NjNELCAweDI4OTksIDB4NTYzRSwgMHg1NjNFLCAweDI4OUIsCisgICAgMHg1NjNGLCAweDU2M0YsIDB4MTExNywgMHg1NjQwLCAweDU2NDAsIDB4Mjg5NywgMHg1NjQxLCAweDU2NDEsIDB4Mjg5MSwKKyAgICAweDU2NDIsIDB4NTY0MiwgMHgyODhFLCAweDU2NDMsIDB4NTY0MywgMHgzRTdFLCAweDU2NDUsIDB4NTY0NSwgMHgyMEM4LAorICAgIDB4NTY0NiwgMHg1NjQ2LCAweDI4OTQsIDB4NTY0OCwgMHg1NjQ4LCAweDI4OEQsIDB4NTY0OSwgMHg1NjQ5LCAweDI4OTMsCisgICAgMHg1NjRBLCAweDU2NEEsIDB4Mjg5MiwgMHg1NjRDLCAweDU2NEMsIDB4Mjg4RiwgMHg1NjRELCAweDU2NEQsIDB4NDBCQywKKyAgICAweDU2NEUsIDB4NTY0RSwgMHgxMTFCLCAweDU2NEYsIDB4NTY0RiwgMHg0MEJELCAweDU2NTAsIDB4NTY1MCwgMHg0N0NGLAorICAgIDB4NTY1MiwgMHg1NjUyLCAweDQ1QzIsIDB4NTY1MywgMHg1NjUzLCAweDExMUEsIDB4NTY1NCwgMHg1NjU0LCAweDQzQUYsCisgICAgMHg1NjU3LCAweDU2NTcsIDB4MTExQywgMHg1NjU4LCAweDU2NTgsIDB4Mjg5NSwgMHg1NjU5LCAweDU2NTksIDB4MTI5NSwKKyAgICAweDU2NUEsIDB4NTY1QSwgMHgyODk2LCAweDU2NUQsIDB4NTY1RCwgMHgzRUY5LCAweDU2NUUsIDB4NTY1RSwgMHgyQjEwLAorICAgIDB4NTY2MCwgMHg1NjYwLCAweDJCMDksIDB4NTY2MSwgMHg1NjYxLCAweDM4MTIsIDB4NTY2MiwgMHg1NjYyLCAweDEyQTEsCisgICAgMHg1NjYzLCAweDU2NjMsIDB4MkIwRCwgMHg1NjY0LCAweDU2NjQsIDB4MTI5OSwgMHg1NjY1LCAweDU2NjUsIDB4MTI5RCwKKyAgICAweDU2NjYsIDB4NTY2NiwgMHgyQjBDLCAweDU2NjgsIDB4NTY2OCwgMHgxMjlDLCAweDU2NjksIDB4NTY2OSwgMHgxMjk4LAorICAgIDB4NTY2QSwgMHg1NjZBLCAweDEyOUIsIDB4NTY2QiwgMHg1NjZCLCAweDEyOTYsIDB4NTY2QywgMHg1NjZDLCAweDEyQTAsCisgICAgMHg1NjZELCAweDU2NkQsIDB4MkIwRSwgMHg1NjZFLCAweDU2NkUsIDB4MkIwQSwgMHg1NjZGLCAweDU2NkYsIDB4MTI5RiwKKyAgICAweDU2NzAsIDB4NTY3MCwgMHgyQjA4LCAweDU2NzEsIDB4NTY3MSwgMHgxMjlFLCAweDU2NzIsIDB4NTY3MiwgMHgyQjBGLAorICAgIDB4NTY3MywgMHg1NjczLCAweDJCMEIsIDB4NTY3NCwgMHg1Njc0LCAweDExMUQsIDB4NTY3NiwgMHg1Njc2LCAweDEyQTIsCisgICAgMHg1Njc3LCAweDU2NzcsIDB4MkIxMSwgMHg1Njc4LCAweDU2NzgsIDB4MTI5QSwgMHg1Njc5LCAweDU2NzksIDB4MTI5NywKKyAgICAweDU2N0EsIDB4NTY3QSwgMHgzRDg1LCAweDU2N0IsIDB4NTY3QiwgMHgzRUI3LCAweDU2N0MsIDB4NTY3QywgMHgzRUVELAorICAgIDB4NTY3RSwgMHg1NjdFLCAweDJENDcsIDB4NTY3RiwgMHg1NjdGLCAweDJENDksIDB4NTY4MCwgMHg1NjgwLCAweDEzQkEsCisgICAgMHg1NjgxLCAweDU2ODEsIDB4MkQ0QSwgMHg1NjgyLCAweDU2ODIsIDB4MkQ0OCwgMHg1NjgzLCAweDU2ODMsIDB4MkQ0NiwKKyAgICAweDU2ODQsIDB4NTY4NCwgMHgyRDQ1LCAweDU2ODUsIDB4NTY4NSwgMHgxM0JDLCAweDU2ODYsIDB4NTY4NiwgMHgyRDQ0LAorICAgIDB4NTY4NywgMHg1Njg3LCAweDEzQkQsIDB4NTY4OSwgMHg1Njg5LCAweDQ2MjgsIDB4NTY4QSwgMHg1NjhBLCAweDM5NDksCisgICAgMHg1NjhCLCAweDU2OEIsIDB4M0U0QywgMHg1NjhDLCAweDU2OEQsIDB4MkQ0MiwgMHg1NjhFLCAweDU2OEUsIDB4MTNCOSwKKyAgICAweDU2OEYsIDB4NTY4RiwgMHgxM0JFLCAweDU2OTAsIDB4NTY5MCwgMHgxM0JCLCAweDU2OTIsIDB4NTY5MiwgMHgzOUE2LAorICAgIDB4NTY5MywgMHg1NjkzLCAweDJENDEsIDB4NTY5NSwgMHg1Njk1LCAweDE0Q0EsIDB4NTY5NywgMHg1Njk3LCAweDJGMTMsCisgICAgMHg1Njk4LCAweDU2OTgsIDB4MkYxMSwgMHg1Njk5LCAweDU2OTksIDB4MkYxNiwgMHg1NjlBLCAweDU2OUEsIDB4MkYxNCwKKyAgICAweDU2OUMsIDB4NTY5QywgMHgyRjEyLCAweDU2OUQsIDB4NTY5RCwgMHgyRjE1LCAweDU2OUUsIDB4NTY5RSwgMHgzOUE0LAorICAgIDB4NTY5RiwgMHg1NjlGLCAweDM5NDgsIDB4NTZBMSwgMHg1NkExLCAweDQzNkIsIDB4NTZBNCwgMHg1NkE0LCAweDNDQzgsCisgICAgMHg1NkE1LCAweDU2QTUsIDB4MTU3NiwgMHg1NkE2LCAweDU2QTcsIDB4MzA4MSwgMHg1NkE4LCAweDU2QTgsIDB4MTU3NywKKyAgICAweDU2QUEsIDB4NTZBQSwgMHgzMDgzLCAweDU2QUIsIDB4NTZBQiwgMHgzMDdGLCAweDU2QUMsIDB4NTZBQywgMHgzMDg0LAorICAgIDB4NTZBRCwgMHg1NkFELCAweDMwODAsIDB4NTZBRSwgMHg1NkFFLCAweDE0Q0IsIDB4NTZBRiwgMHg1NkFGLCAweDQ1RjcsCisgICAgMHg1NkIxLCAweDU2QjEsIDB4NDYzRiwgMHg1NkIyLCAweDU2QjIsIDB4MzFDOCwgMHg1NkIzLCAweDU2QjMsIDB4MzFDQSwKKyAgICAweDU2QjQsIDB4NTZCNCwgMHgxNjBDLCAweDU2QjUsIDB4NTZCNSwgMHgzMUM5LCAweDU2QjYsIDB4NTZCNiwgMHgxNjBCLAorICAgIDB4NTZCNywgMHg1NkI3LCAweDE2MEEsIDB4NTZCOSwgMHg1NkI5LCAweDQ4NkYsIDB4NTZCQywgMHg1NkJDLCAweDE2MEQsCisgICAgMHg1NkJELCAweDU2QkUsIDB4MzJDQSwgMHg1NkJGLCAweDU2QkYsIDB4M0U1RCwgMHg1NkMwLCAweDU2QzAsIDB4MTY2QiwKKyAgICAweDU2QzEsIDB4NTZDMSwgMHgxNjZBLCAweDU2QzIsIDB4NTZDMiwgMHgxNjZDLCAweDU2QzMsIDB4NTZDMywgMHgzMkM5LAorICAgIDB4NTZDNSwgMHg1NkM1LCAweDMzNzksIDB4NTZDNiwgMHg1NkM2LCAweDMzNzgsIDB4NTZDOCwgMHg1NkM4LCAweDE2QkQsCisgICAgMHg1NkM5LCAweDU2QzksIDB4MTZCRiwgMHg1NkNBLCAweDU2Q0EsIDB4MTZCRSwgMHg1NkNCLCAweDU2Q0IsIDB4MzM3QSwKKyAgICAweDU2Q0MsIDB4NTZDQywgMHgxNkY2LCAweDU2Q0QsIDB4NTZDRCwgMHgzNDgxLCAweDU2RDEsIDB4NTZEMSwgMHgxNzFGLAorICAgIDB4NTZEMywgMHg1NkQzLCAweDM0ODAsIDB4NTZENCwgMHg1NkQ0LCAweDM0QzksIDB4NTZENiwgMHg1NkQ2LCAweDQ4OEEsCisgICAgMHg1NkQ3LCAweDU2RDcsIDB4MTc3NSwgMHg1NkRBLCAweDU2REEsIDB4MDMyRCwgMHg1NkRCLCAweDU2REIsIDB4MDMyQywKKyAgICAweDU2REQsIDB4NTZERCwgMHgwM0FDLCAweDU2REUsIDB4NTZERSwgMHgwM0FCLCAweDU2REYsIDB4NTZERiwgMHgxN0QwLAorICAgIDB4NTZFMCwgMHg1NkUwLCAweDAzQUEsIDB4NTZFMSwgMHg1NkUxLCAweDE3Q0YsIDB4NTZFMiwgMHg1NkUyLCAweDQ1NDgsCisgICAgMHg1NkU0LCAweDU2RTQsIDB4MDQ2MywgMHg1NkU1LCAweDU2RTUsIDB4MTg1MCwgMHg1NkU3LCAweDU2RTcsIDB4MTg0RiwKKyAgICAweDU2RUEsIDB4NTZFQSwgMHgwNDYxLCAweDU2RUIsIDB4NTZFQiwgMHgwNDY0LCAweDU2RUQsIDB4NTZFRCwgMHg0MEM0LAorICAgIDB4NTZFRSwgMHg1NkVFLCAweDE4NEUsIDB4NTZFRiwgMHg1NkVGLCAweDQwQzMsIDB4NTZGMCwgMHg1NkYwLCAweDA0NjIsCisgICAgMHg1NkYxLCAweDU2RjEsIDB4NDBCRiwgMHg1NkY3LCAweDU2RjcsIDB4MTkzMywgMHg1NkY5LCAweDU2RjksIDB4MTkzNCwKKyAgICAweDU2RkEsIDB4NTZGQSwgMHgwNTc4LCAweDU2RkQsIDB4NTZGRCwgMHgzRDY0LCAweDU2RkYsIDB4NTZGRiwgMHgwNkU2LAorICAgIDB4NTcwMCwgMHg1NzAwLCAweDQwQzIsIDB4NTcwMSwgMHg1NzAyLCAweDFDNUIsIDB4NTcwMywgMHg1NzA0LCAweDA4NzksCisgICAgMHg1NzA3LCAweDU3MDcsIDB4MUU3NCwgMHg1NzA4LCAweDU3MDgsIDB4MEEzNiwgMHg1NzA5LCAweDU3MDksIDB4MEEzOCwKKyAgICAweDU3MEEsIDB4NTcwQSwgMHgxRTczLCAweDU3MEIsIDB4NTcwQiwgMHgwQTM3LCAweDU3MEMsIDB4NTcwQywgMHgyMEQ5LAorICAgIDB4NTcwRCwgMHg1NzBELCAweDBDMTYsIDB4NTcxMiwgMHg1NzEzLCAweDBERTQsIDB4NTcxNCwgMHg1NzE0LCAweDIzOTEsCisgICAgMHg1NzE1LCAweDU3MTUsIDB4M0UzNiwgMHg1NzE2LCAweDU3MTYsIDB4MEZBMSwgMHg1NzE4LCAweDU3MTgsIDB4MEZBMCwKKyAgICAweDU3MUEsIDB4NTcxQSwgMHgyODlGLCAweDU3MUIsIDB4NTcxQiwgMHgyQjEzLCAweDU3MUMsIDB4NTcxQywgMHgyQjEyLAorICAgIDB4NTcxRCwgMHg1NzFELCAweDNBMDIsIDB4NTcxRSwgMHg1NzFFLCAweDM1MDUsIDB4NTcxRiwgMHg1NzFGLCAweDAyN0EsCisgICAgMHg1NzIwLCAweDU3MjAsIDB4MTc4NCwgMHg1NzIyLCAweDU3MjMsIDB4MTc5QSwgMHg1NzI4LCAweDU3MjgsIDB4MDNBRiwKKyAgICAweDU3MjksIDB4NTcyOSwgMHgwM0IzLCAweDU3MkEsIDB4NTcyQSwgMHgxN0QyLCAweDU3MkMsIDB4NTcyQywgMHgwM0IxLAorICAgIDB4NTcyRCwgMHg1NzJELCAweDAzQjAsIDB4NTcyRSwgMHg1NzJFLCAweDE3RDEsIDB4NTcyRiwgMHg1NzJGLCAweDAzQjIsCisgICAgMHg1NzMwLCAweDU3MzAsIDB4MDNBRSwgMHg1NzMyLCAweDU3MzIsIDB4M0FGOSwgMHg1NzMzLCAweDU3MzMsIDB4MDNBRCwKKyAgICAweDU3MzQsIDB4NTczNCwgMHgxN0QzLCAweDU3M0IsIDB4NTczQiwgMHgwNDZFLCAweDU3M0UsIDB4NTczRSwgMHgwNDZCLAorICAgIDB4NTczRiwgMHg1NzNGLCAweDQ4NTUsIDB4NTc0MCwgMHg1NzQwLCAweDA0NjcsIDB4NTc0MSwgMHg1NzQxLCAweDE4NTEsCisgICAgMHg1NzQyLCAweDU3NDIsIDB4NDBDQywgMHg1NzQzLCAweDU3NDMsIDB4NDBERSwgMHg1NzQ1LCAweDU3NDUsIDB4MTg1MiwKKyAgICAweDU3NDYsIDB4NTc0NiwgMHg0MEM4LCAweDU3NDcsIDB4NTc0NywgMHgwNDY5LCAweDU3NDksIDB4NTc0OSwgMHgxODU0LAorICAgIDB4NTc0QSwgMHg1NzRBLCAweDA0NjUsIDB4NTc0QiwgMHg1NzRCLCAweDE4NTUsIDB4NTc0QywgMHg1NzRDLCAweDE4NTMsCisgICAgMHg1NzRELCAweDU3NEQsIDB4MDQ2OCwgMHg1NzRFLCAweDU3NEUsIDB4MDQ2QSwgMHg1NzRGLCAweDU3NEYsIDB4MDQ2RCwKKyAgICAweDU3NTAsIDB4NTc1MCwgMHgwNDZDLCAweDU3NTEsIDB4NTc1MSwgMHgwNDY2LCAweDU3NTIsIDB4NTc1MiwgMHgxODU2LAorICAgIDB4NTc1NCwgMHg1NzU0LCAweDQ3ODUsIDB4NTc1NywgMHg1NzU3LCAweDQ3RTYsIDB4NTc1QiwgMHg1NzVCLCAweDM5ODIsCisgICAgMHg1NzVGLCAweDU3NUYsIDB4M0ZCRiwgMHg1NzYxLCAweDU3NjEsIDB4MDU3RCwgMHg1NzYyLCAweDU3NjIsIDB4MTk0MSwKKyAgICAweDU3NjQsIDB4NTc2NCwgMHgwNTdGLCAweDU3NjYsIDB4NTc2NiwgMHgwNTdFLCAweDU3NjcsIDB4NTc2NywgMHgzRjJCLAorICAgIDB4NTc2OCwgMHg1NzY4LCAweDE5NDIsIDB4NTc2OSwgMHg1NzY5LCAweDA1N0MsIDB4NTc2QSwgMHg1NzZBLCAweDA1N0IsCisgICAgMHg1NzZCLCAweDU3NkIsIDB4MTkzOCwgMHg1NzZELCAweDU3NkQsIDB4MTkzNywgMHg1NzZGLCAweDU3NkYsIDB4MTkzNSwKKyAgICAweDU3NzAsIDB4NTc3MCwgMHgxOTNBLCAweDU3NzEsIDB4NTc3MSwgMHgxOTM5LCAweDU3NzIsIDB4NTc3MiwgMHgxOTM2LAorICAgIDB4NTc3MywgMHg1Nzc0LCAweDE5M0YsIDB4NTc3NSwgMHg1Nzc1LCAweDE5M0QsIDB4NTc3NiwgMHg1Nzc2LCAweDE5M0IsCisgICAgMHg1Nzc3LCAweDU3NzcsIDB4MDU3QSwgMHg1NzdBLCAweDU3N0EsIDB4M0Y1RiwgMHg1NzdCLCAweDU3N0IsIDB4MTkzRSwKKyAgICAweDU3N0MsIDB4NTc3QywgMHgwNTgwLCAweDU3N0QsIDB4NTc3RCwgMHgxOTQzLCAweDU3N0UsIDB4NTc3RSwgMHg0NkRDLAorICAgIDB4NTc3RiwgMHg1NzdGLCAweDNBMDcsIDB4NTc4MCwgMHg1NzgwLCAweDE5M0MsIDB4NTc4MiwgMHg1NzgyLCAweDA2RTcsCisgICAgMHg1NzgzLCAweDU3ODMsIDB4MDU3OSwgMHg1Nzg4LCAweDU3ODgsIDB4NDg0QiwgMHg1NzhBLCAweDU3OEEsIDB4M0M3QiwKKyAgICAweDU3OEIsIDB4NTc4QiwgMHgwNkU4LCAweDU3OEMsIDB4NTc4QywgMHgxQTkwLCAweDU3OEQsIDB4NTc4RCwgMHgzQTA2LAorICAgIDB4NTc4RiwgMHg1NzhGLCAweDFBOTYsIDB4NTc5MCwgMHg1NzkwLCAweDQxNjYsIDB4NTc5MywgMHg1NzkzLCAweDA2RUUsCisgICAgMHg1Nzk0LCAweDU3OTQsIDB4MUE5NCwgMHg1Nzk1LCAweDU3OTUsIDB4MUE5QSwgMHg1Nzk3LCAweDU3OTcsIDB4MUE5MSwKKyAgICAweDU3OTgsIDB4NTc5OCwgMHgxQTk1LCAweDU3OTksIDB4NTc5OSwgMHgxQTk3LCAweDU3OUEsIDB4NTc5QSwgMHgxQTk5LAorICAgIDB4NTc5QiwgMHg1NzlCLCAweDFBOTMsIDB4NTc5QywgMHg1NzlDLCAweDQ2MDgsIDB4NTc5RCwgMHg1NzlELCAweDFBOTIsCisgICAgMHg1NzlFLCAweDU3OUYsIDB4MUE4RCwgMHg1N0EwLCAweDU3QTAsIDB4MDZFOSwgMHg1N0ExLCAweDU3QTEsIDB4NDg2NCwKKyAgICAweDU3QTIsIDB4NTdBMiwgMHgwNkVCLCAweDU3QTMsIDB4NTdBMywgMHgwNkVBLCAweDU3QTQsIDB4NTdBNCwgMHgxQThGLAorICAgIDB4NTdBNSwgMHg1N0E1LCAweDFBOTgsIDB4NTdBNywgMHg1N0E3LCAweDQ5MTQsIDB4NTdBQSwgMHg1N0FBLCAweDQ5MDUsCisgICAgMHg1N0FFLCAweDU3QUUsIDB4MDZFRCwgMHg1N0I0LCAweDU3QjQsIDB4NDc0MSwgMHg1N0I1LCAweDU3QjUsIDB4MUE4QywKKyAgICAweDU3QjYsIDB4NTdCNiwgMHgxQzY2LCAweDU3QjgsIDB4NTdCOCwgMHgxQzY1LCAweDU3QjksIDB4NTdCOSwgMHgxQzZBLAorICAgIDB4NTdCQSwgMHg1N0JBLCAweDFDNjEsIDB4NTdCQiwgMHg1N0JCLCAweDNDNzksIDB4NTdCQywgMHg1N0JDLCAweDFDNjQsCisgICAgMHg1N0JELCAweDU3QkQsIDB4MUM2MywgMHg1N0JFLCAweDU3QkUsIDB4MzcyQywgMHg1N0JGLCAweDU3QkYsIDB4MUM2NywKKyAgICAweDU3QzEsIDB4NTdDMSwgMHgxQzZCLCAweDU3QzIsIDB4NTdDMiwgMHgwODdCLCAweDU3QzMsIDB4NTdDMywgMHgwODdFLAorICAgIDB4NTdDNCwgMHg1N0M0LCAweDNCNUIsIDB4NTdDNiwgMHg1N0M2LCAweDFDNjIsIDB4NTdDNywgMHg1N0M3LCAweDFDNjgsCisgICAgMHg1N0M4LCAweDU3QzgsIDB4M0QwQiwgMHg1N0NCLCAweDU3Q0IsIDB4MDg3RCwgMHg1N0NDLCAweDU3Q0MsIDB4MUM1RCwKKyAgICAweDU3Q0UsIDB4NTdDRSwgMHgwNkVDLCAweDU3Q0YsIDB4NTdDRiwgMHgxRTgyLCAweDU3RDAsIDB4NTdEMCwgMHgxQzY5LAorICAgIDB4NTdEMiwgMHg1N0QyLCAweDFDNjAsIDB4NTdENCwgMHg1N0Q0LCAweDA4N0MsIDB4NTdENSwgMHg1N0Q1LCAweDFDNUYsCisgICAgMHg1N0Q3LCAweDU3RDcsIDB4M0M3RCwgMHg1N0RDLCAweDU3REMsIDB4MUU3OSwgMHg1N0RELCAweDU3REQsIDB4M0EwNSwKKyAgICAweDU3REUsIDB4NTdERSwgMHgzRjAxLCAweDU3REYsIDB4NTdERiwgMHgwQTM5LCAweDU3RTAsIDB4NTdFMCwgMHgwQTNELAorICAgIDB4NTdFMSwgMHg1N0UxLCAweDFFODksIDB4NTdFMiwgMHg1N0UyLCAweDFFNzcsIDB4NTdFMywgMHg1N0UzLCAweDFFODUsCisgICAgMHg1N0U0LCAweDU3RTQsIDB4MEEzRSwgMHg1N0U1LCAweDU3RTUsIDB4MUU4NywgMHg1N0U2LCAweDU3RTYsIDB4NDBDRiwKKyAgICAweDU3RTcsIDB4NTdFNywgMHgxRThELCAweDU3RTksIDB4NTdFOSwgMHgxRTkxLCAweDU3RUMsIDB4NTdFQywgMHgxRTg4LAorICAgIDB4NTdFRCwgMHg1N0VELCAweDFFN0MsIDB4NTdFRSwgMHg1N0VFLCAweDFFODQsIDB4NTdFRiwgMHg1N0VGLCAweDQ3NTQsCisgICAgMHg1N0YwLCAweDU3RjAsIDB4MUU5MiwgMHg1N0YxLCAweDU3RjEsIDB4MUU5MCwgMHg1N0YyLCAweDU3RjIsIDB4MUU4NiwKKyAgICAweDU3RjMsIDB4NTdGMywgMHgxRTgxLCAweDU3RjQsIDB4NTdGNCwgMHgxRTdBLCAweDU3RjUsIDB4NTdGNSwgMHgyMEUxLAorICAgIDB4NTdGNiwgMHg1N0Y2LCAweDFFNzgsIDB4NTdGNywgMHg1N0Y3LCAweDBBNDIsIDB4NTdGOCwgMHg1N0Y4LCAweDFFN0YsCisgICAgMHg1N0Y5LCAweDU3RjksIDB4MEE0MywgMHg1N0ZBLCAweDU3RkEsIDB4MEEzRiwgMHg1N0ZCLCAweDU3RkIsIDB4MUU3NSwKKyAgICAweDU3RkMsIDB4NTdGQywgMHgxRThCLCAweDU3RkQsIDB4NTdGRCwgMHgxRTdELCAweDU3RkUsIDB4NTdGRSwgMHg0MDhGLAorICAgIDB4NTgwMCwgMHg1ODAwLCAweDFFN0IsIDB4NTgwMSwgMHg1ODAxLCAweDFFOEUsIDB4NTgwMiwgMHg1ODAyLCAweDBBNDAsCisgICAgMHg1ODAzLCAweDU4MDMsIDB4NDBEMSwgMHg1ODA0LCAweDU4MDQsIDB4MUU5NCwgMHg1ODA1LCAweDU4MDUsIDB4MEEzQSwKKyAgICAweDU4MDYsIDB4NTgwNiwgMHgwQTNDLCAweDU4MDcsIDB4NTgwNywgMHgxRTgzLCAweDU4MDgsIDB4NTgwOCwgMHgxRTdFLAorICAgIDB4NTgwOSwgMHg1ODA5LCAweDA4N0YsIDB4NTgwQSwgMHg1ODBBLCAweDBBM0IsIDB4NTgwQiwgMHg1ODBCLCAweDFFODAsCisgICAgMHg1ODBDLCAweDU4MEMsIDB4MUU4RiwgMHg1ODBELCAweDU4MEQsIDB4MUU5MywgMHg1ODBFLCAweDU4MEUsIDB4MUU4QSwKKyAgICAweDU4MTAsIDB4NTgxMCwgMHgxRThDLCAweDU4MTIsIDB4NTgxMiwgMHgzRDBBLCAweDU4MTQsIDB4NTgxNCwgMHgxRTc2LAorICAgIDB4NTgxOSwgMHg1ODE5LCAweDIwREMsIDB4NTgxQiwgMHg1ODFCLCAweDIwRTUsIDB4NTgxQywgMHg1ODFDLCAweDIwRTQsCisgICAgMHg1ODFELCAweDU4MUQsIDB4MEMxRSwgMHg1ODFFLCAweDU4MUUsIDB4MjBERCwgMHg1ODIwLCAweDU4MjAsIDB4MEMxRiwKKyAgICAweDU4MjEsIDB4NTgyMSwgMHgwQzFELCAweDU4MjIsIDB4NTgyMiwgMHgzQzI4LCAweDU4MjMsIDB4NTgyMywgMHgyMERGLAorICAgIDB4NTgyNCwgMHg1ODI0LCAweDBDMUEsIDB4NTgyNSwgMHg1ODI1LCAweDIwRTMsIDB4NTgyNiwgMHg1ODI2LCAweDQwRDQsCisgICAgMHg1ODI3LCAweDU4MjcsIDB4MjBERSwgMHg1ODI4LCAweDU4MjgsIDB4MjBFMCwgMHg1ODI5LCAweDU4MjksIDB4MjBEQSwKKyAgICAweDU4MkEsIDB4NTgyQSwgMHgwQzE4LCAweDU4MkMsIDB4NTgyQywgMHgyMEVELCAweDU4MkQsIDB4NTgyRCwgMHgyMEVDLAorICAgIDB4NTgyRSwgMHg1ODJFLCAweDIwRTksIDB4NTgyRiwgMHg1ODJGLCAweDBDMTcsIDB4NTgzMCwgMHg1ODMxLCAweDBDMUIsCisgICAgMHg1ODMyLCAweDU4MzIsIDB4MUM1RSwgMHg1ODMzLCAweDU4MzMsIDB4MjBFNiwgMHg1ODM0LCAweDU4MzQsIDB4MEMxOSwKKyAgICAweDU4MzUsIDB4NTgzNSwgMHgwQTQxLCAweDU4MzYsIDB4NTgzNiwgMHgyMEU4LCAweDU4MzcsIDB4NTgzNywgMHgyMERCLAorICAgIDB4NTgzOCwgMHg1ODM4LCAweDIwRUIsIDB4NTgzOSwgMHg1ODM5LCAweDIwRUEsIDB4NTgzQSwgMHg1ODNBLCAweDNENzIsCisgICAgMHg1ODNCLCAweDU4M0IsIDB4MjBFRSwgMHg1ODNELCAweDU4M0QsIDB4MjM5RiwgMHg1ODNGLCAweDU4M0YsIDB4MjBFNywKKyAgICAweDU4NDAsIDB4NTg0MCwgMHgzRDgyLCAweDU4NDQsIDB4NTg0NCwgMHg0N0JCLCAweDU4NDcsIDB4NTg0NywgMHgzQUMyLAorICAgIDB4NTg0OCwgMHg1ODQ4LCAweDIwRTIsIDB4NTg0OSwgMHg1ODQ5LCAweDIzOTcsIDB4NTg0QSwgMHg1ODRBLCAweDBERUYsCisgICAgMHg1ODRCLCAweDU4NEIsIDB4MERGMiwgMHg1ODRDLCAweDU4NEMsIDB4MERFRCwgMHg1ODRELCAweDU4NEQsIDB4MjM5NiwKKyAgICAweDU4NEUsIDB4NTg0RSwgMHgyMzlBLCAweDU4NEYsIDB4NTg0RiwgMHgyMzk1LCAweDU4NTEsIDB4NTg1MSwgMHgwREU3LAorICAgIDB4NTg1MiwgMHg1ODUyLCAweDBERjEsIDB4NTg1MywgMHg1ODUzLCAweDIzOTIsIDB4NTg1NCwgMHg1ODU0LCAweDBERUIsCisgICAgMHg1ODU1LCAweDU4NTUsIDB4MjM5OSwgMHg1ODU3LCAweDU4NTcsIDB4MERFOSwgMHg1ODU4LCAweDU4NTgsIDB4MERFOCwKKyAgICAweDU4NTksIDB4NTg1OSwgMHgyMzlDLCAweDU4NUEsIDB4NTg1QSwgMHgwREVBLCAweDU4NUIsIDB4NTg1QiwgMHgyMzlFLAorICAgIDB4NTg1QywgMHg1ODVDLCAweDQ5NDksIDB4NTg1RCwgMHg1ODVELCAweDIzOUIsIDB4NTg1RSwgMHg1ODVFLCAweDBERTYsCisgICAgMHg1ODVGLCAweDU4NUYsIDB4NDNERiwgMHg1ODYyLCAweDU4NjIsIDB4MERGMCwgMHg1ODYzLCAweDU4NjMsIDB4MjNBMCwKKyAgICAweDU4NjQsIDB4NTg2NCwgMHgyMzk0LCAweDU4NjUsIDB4NTg2NSwgMHgyMzlELCAweDU4NjgsIDB4NTg2OCwgMHgyMzkzLAorICAgIDB4NTg2OSwgMHg1ODY5LCAweDNENjUsIDB4NTg2QiwgMHg1ODZCLCAweDBERUMsIDB4NTg2QywgMHg1ODZDLCAweDM5OUEsCisgICAgMHg1ODZELCAweDU4NkQsIDB4MERFRSwgMHg1ODZGLCAweDU4NkYsIDB4MjM5OCwgMHg1ODcxLCAweDU4NzEsIDB4MjNBMSwKKyAgICAweDU4NzIsIDB4NTg3MiwgMHgzQzI2LCAweDU4NzMsIDB4NTg3MywgMHg0MzU1LCAweDU4NzQsIDB4NTg3NCwgMHgyNjNGLAorICAgIDB4NTg3NSwgMHg1ODc1LCAweDBGQTIsIDB4NTg3NiwgMHg1ODc2LCAweDI2NDUsIDB4NTg3OSwgMHg1ODc5LCAweDBGQTcsCisgICAgMHg1ODdBLCAweDU4N0EsIDB4MjY0MSwgMHg1ODdCLCAweDU4N0IsIDB4MjY0OCwgMHg1ODdDLCAweDU4N0MsIDB4MjYzOSwKKyAgICAweDU4N0QsIDB4NTg3RCwgMHgwRkE5LCAweDU4N0UsIDB4NTg3RSwgMHgwRkEzLCAweDU4N0YsIDB4NTg3RiwgMHgyNjNFLAorICAgIDB4NTg4MCwgMHg1ODgwLCAweDExMjEsIDB4NTg4MSwgMHg1ODgxLCAweDI2M0QsIDB4NTg4MiwgMHg1ODgyLCAweDI2NDYsCisgICAgMHg1ODgzLCAweDU4ODMsIDB4MEZBNCwgMHg1ODg1LCAweDU4ODUsIDB4MEZBOCwgMHg1ODg2LCAweDU4ODYsIDB4MjYzQywKKyAgICAweDU4ODcsIDB4NTg4NywgMHgyNjQyLCAweDU4ODgsIDB4NTg4OCwgMHgyNjQ3LCAweDU4ODksIDB4NTg4OSwgMHgyNjM4LAorICAgIDB4NTg4QSwgMHg1ODhBLCAweDBGQTYsIDB4NTg4QiwgMHg1ODhCLCAweDI2NDAsIDB4NTg4RSwgMHg1ODhFLCAweDI2NDQsCisgICAgMHg1ODhGLCAweDU4OEYsIDB4MjY0QSwgMHg1ODkwLCAweDU4OTAsIDB4MjYzQSwgMHg1ODkxLCAweDU4OTEsIDB4MjY0MywKKyAgICAweDU4OTMsIDB4NTg5MywgMHgwRkE1LCAweDU4OTQsIDB4NTg5NCwgMHgyNjQ5LCAweDU4OTgsIDB4NTg5OCwgMHgyNjNCLAorICAgIDB4NTg5OSwgMHg1ODk5LCAweDQ2MTgsIDB4NTg5QSwgMHg1ODlBLCAweDQ5MDMsIDB4NTg5QywgMHg1ODlDLCAweDExMjUsCisgICAgMHg1ODlELCAweDU4OUQsIDB4MjhBMSwgMHg1ODlFLCAweDU4OUUsIDB4MTEyMywgMHg1ODlGLCAweDU4OUYsIDB4MTEyMiwKKyAgICAweDU4QTAsIDB4NThBMCwgMHgyOEEzLCAweDU4QTEsIDB4NThBMSwgMHgyOEE4LCAweDU4QTMsIDB4NThBMywgMHgyOEE0LAorICAgIDB4NThBNSwgMHg1OEE1LCAweDI4QTcsIDB4NThBNiwgMHg1OEE2LCAweDExMjgsIDB4NThBNywgMHg1OEE3LCAweDNFRUIsCisgICAgMHg1OEE4LCAweDU4QTgsIDB4MTI4OCwgMHg1OEE5LCAweDU4QTksIDB4MTEyNywgMHg1OEFBLCAweDU4QUEsIDB4NDBENywKKyAgICAweDU4QUIsIDB4NThBQiwgMHgyOEEwLCAweDU4QUMsIDB4NThBQywgMHgyOEE2LCAweDU4QUUsIDB4NThBRSwgMHgxMTI2LAorICAgIDB4NThBRiwgMHg1OEFGLCAweDI4QTUsIDB4NThCMCwgMHg1OEIwLCAweDM3QTQsIDB4NThCMSwgMHg1OEIxLCAweDI4QTIsCisgICAgMHg1OEIzLCAweDU4QjMsIDB4MTEyNCwgMHg1OEI1LCAweDU4QjUsIDB4NDg0MCwgMHg1OEI2LCAweDU4QjYsIDB4M0RGRCwKKyAgICAweDU4QkEsIDB4NThCQSwgMHgyQjE4LCAweDU4QkIsIDB4NThCQiwgMHgzNkVCLCAweDU4QkMsIDB4NThCQywgMHgyQjFBLAorICAgIDB4NThCRCwgMHg1OEJELCAweDJCMTUsIDB4NThCRSwgMHg1OEJFLCAweDEyQTQsIDB4NThCRiwgMHg1OEJGLCAweDJCMTcsCisgICAgMHg1OEMxLCAweDU4QzEsIDB4MTJBMywgMHg1OEMyLCAweDU4QzIsIDB4MkIxOSwgMHg1OEM1LCAweDU4QzUsIDB4MTJBNiwKKyAgICAweDU4QzYsIDB4NThDNiwgMHgyQjFCLCAweDU4QzcsIDB4NThDNywgMHgxMkE1LCAweDU4QzgsIDB4NThDOCwgMHgyQjE0LAorICAgIDB4NThDOSwgMHg1OEM5LCAweDJCMTYsIDB4NThDQiwgMHg1OENCLCAweDNBMDksIDB4NThDRSwgMHg1OENFLCAweDEzQzIsCisgICAgMHg1OENGLCAweDU4Q0YsIDB4MkQ0RCwgMHg1OEQxLCAweDU4RDEsIDB4MTNDMSwgMHg1OEQyLCAweDU4RDIsIDB4MkQ0RSwKKyAgICAweDU4RDMsIDB4NThEMywgMHgxM0MwLCAweDU4RDQsIDB4NThENCwgMHgyRDRDLCAweDU4RDUsIDB4NThENSwgMHgxM0JGLAorICAgIDB4NThENiwgMHg1OEQ2LCAweDJENEIsIDB4NThEOCwgMHg1OEQ4LCAweDE0Q0QsIDB4NThEOSwgMHg1OEQ5LCAweDE0Q0MsCisgICAgMHg1OERBLCAweDU4REEsIDB4MzA4NSwgMHg1OERCLCAweDU4REIsIDB4MzA4NywgMHg1OERDLCAweDU4REMsIDB4NDBEQSwKKyAgICAweDU4REQsIDB4NThERCwgMHgzMDg2LCAweDU4REUsIDB4NThERiwgMHgxNTc4LCAweDU4RTAsIDB4NThFMCwgMHg0MEQ5LAorICAgIDB4NThFMiwgMHg1OEUyLCAweDE1N0EsIDB4NThFMywgMHg1OEUzLCAweDMxQ0IsIDB4NThFNCwgMHg1OEU0LCAweDE2MEUsCisgICAgMHg1OEU3LCAweDU4RTcsIDB4MzQxMSwgMHg1OEU4LCAweDU4RTgsIDB4MzQxMCwgMHg1OEU5LCAweDU4RTksIDB4MTcyMCwKKyAgICAweDU4RUIsIDB4NThFQiwgMHgwMjdCLCAweDU4RUMsIDB4NThFQywgMHgwMkMxLCAweDU4RUYsIDB4NThFRiwgMHgwNDZGLAorICAgIDB4NThGMCwgMHg1OEYwLCAweDQ1NDksIDB4NThGMiwgMHg1OEYyLCAweDNENjgsIDB4NThGMywgMHg1OEYzLCAweDNDN0EsCisgICAgMHg1OEY0LCAweDU4RjQsIDB4MUE5QiwgMHg1OEY5LCAweDU4RkEsIDB4MEMyMCwgMHg1OEZCLCAweDU4RkIsIDB4NDBEQywKKyAgICAweDU4RkMsIDB4NThGQywgMHgyM0EyLCAweDU4RkQsIDB4NThGRCwgMHgwRkFBLCAweDU4RkUsIDB4NThGRSwgMHgyNjRCLAorICAgIDB4NThGRiwgMHg1OEZGLCAweDI4QTksIDB4NTkwMiwgMHg1OTAyLCAweDAyMjQsIDB4NTkwMywgMHg1OTAzLCAweDE3ODUsCisgICAgMHg1OTA0LCAweDU5MDQsIDB4NDU0QSwgMHg1OTA1LCAweDU5MDUsIDB4NDU5OSwgMHg1OTA2LCAweDU5MDYsIDB4MTg1NywKKyAgICAweDU5MDcsIDB4NTkwNywgMHg0NTRCLCAweDU5MEEsIDB4NTkwQSwgMHgwMjI0LCAweDU5MEMsIDB4NTkwQywgMHgxOTQ0LAorICAgIDB4NTkwRCwgMHg1OTBELCAweDFBOUMsIDB4NTkwRSwgMHg1OTBFLCAweDFDNkMsIDB4NTkwRiwgMHg1OTBGLCAweDA4ODAsCisgICAgMHg1OTExLCAweDU5MTEsIDB4NDI3NCwgMHg1OTEyLCAweDU5MTIsIDB4MzA4OCwgMHg1OTE0LCAweDU5MTQsIDB4MTY2RCwKKyAgICAweDU5MTUsIDB4NTkxNSwgMHgwMjdDLCAweDU5MTYsIDB4NTkxNiwgMHgwMzJFLCAweDU5MTcsIDB4NTkxNywgMHgxNzlDLAorICAgIDB4NTkxOSwgMHg1OTFBLCAweDAzQjQsIDB4NTkxQywgMHg1OTFDLCAweDA1ODEsIDB4NTkxRiwgMHg1OTFGLCAweDQwRTMsCisgICAgMHg1OTIwLCAweDU5MjAsIDB4MEE0NCwgMHg1OTIyLCAweDU5MjIsIDB4MEZBQywgMHg1OTI0LCAweDU5MjQsIDB4MEZBRCwKKyAgICAweDU5MjUsIDB4NTkyNSwgMHgwRkFCLCAweDU5MjcsIDB4NTkyNywgMHgwMjdELCAweDU5MjksIDB4NTkyOSwgMHgwMkMyLAorICAgIDB4NTkyQSwgMHg1OTJBLCAweDAyQzQsIDB4NTkyQiwgMHg1OTJCLCAweDAyQzMsIDB4NTkyQywgMHg1OTJDLCAweDE3ODYsCisgICAgMHg1OTJELCAweDU5MkQsIDB4MDJDNSwgMHg1OTJFLCAweDU5MkUsIDB4MDMyRiwgMHg1OTJGLCAweDU5MkYsIDB4MTc5RCwKKyAgICAweDU5MzEsIDB4NTkzMSwgMHgwMzMwLCAweDU5MzIsIDB4NTkzMiwgMHg0NTRDLCAweDU5MzQsIDB4NTkzNCwgMHg0NTRELAorICAgIDB4NTkzNywgMHg1OTM4LCAweDAzQjYsIDB4NTkzQywgMHg1OTNDLCAweDE3RDQsIDB4NTkzRSwgMHg1OTNFLCAweDA0NzAsCisgICAgMHg1OTQwLCAweDU5NDAsIDB4MTg1OCwgMHg1OTQ0LCAweDU5NDQsIDB4MDU4NSwgMHg1OTQ1LCAweDU5NDUsIDB4MTk0NSwKKyAgICAweDU5NDcsIDB4NTk0OCwgMHgwNTgzLCAweDU5NDksIDB4NTk0OSwgMHgwNTgyLCAweDU5NEEsIDB4NTk0QSwgMHgxQzZELAorICAgIDB4NTk0RSwgMHg1OTRFLCAweDA2RjIsIDB4NTk0RiwgMHg1OTRGLCAweDA2RjEsIDB4NTk1MCwgMHg1OTUwLCAweDA2RjMsCisgICAgMHg1OTUxLCAweDU5NTEsIDB4MDZGMCwgMHg1OTUzLCAweDU5NTMsIDB4MUE5RCwgMHg1OTU0LCAweDU5NTQsIDB4MDU4NiwKKyAgICAweDU5NTUsIDB4NTk1NSwgMHgwNkVGLCAweDU5NTcsIDB4NTk1OCwgMHgwODgxLCAweDU5NUEsIDB4NTk1QSwgMHgwODgzLAorICAgIDB4NTk1QywgMHg1OTVDLCAweDFFOTUsIDB4NTk2MCwgMHg1OTYwLCAweDBDMjIsIDB4NTk2MSwgMHg1OTYxLCAweDIwRUYsCisgICAgMHg1OTYyLCAweDU5NjIsIDB4MEE0NSwgMHg1OTY1LCAweDU5NjUsIDB4NDg1MiwgMHg1OTY3LCAweDU5NjcsIDB4MERGMywKKyAgICAweDU5NjksIDB4NTk2OSwgMHgwRkFGLCAweDU5NkEsIDB4NTk2QSwgMHgwRkFFLCAweDU5NkIsIDB4NTk2QiwgMHgyNjRDLAorICAgIDB4NTk2RCwgMHg1OTZELCAweDExMjksIDB4NTk2RSwgMHg1OTZFLCAweDEyQTcsIDB4NTk3MCwgMHg1OTcwLCAweDJGMTcsCisgICAgMHg1OTcxLCAweDU5NzEsIDB4MzM3QiwgMHg1OTcyLCAweDU5NzIsIDB4MzQxMiwgMHg1OTczLCAweDU5NzMsIDB4MDI3RSwKKyAgICAweDU5NzQsIDB4NTk3NCwgMHgwMzMxLCAweDU5NzUsIDB4NTk3NSwgMHgzRTZBLCAweDU5NzYsIDB4NTk3NiwgMHgwMzMyLAorICAgIDB4NTk3NywgMHg1OTc3LCAweDE3REEsIDB4NTk3OCwgMHg1OTc4LCAweDAzQjksIDB4NTk3OSwgMHg1OTc5LCAweDAzQkMsCisgICAgMHg1OTdCLCAweDU5N0IsIDB4MTdEOCwgMHg1OTdDLCAweDU5N0MsIDB4MTdENiwgMHg1OTdELCAweDU5N0QsIDB4MDNCQiwKKyAgICAweDU5N0UsIDB4NTk3RSwgMHgxN0Q5LCAweDU5N0YsIDB4NTk3RiwgMHgxN0RCLCAweDU5ODAsIDB4NTk4MCwgMHgxN0Q1LAorICAgIDB4NTk4MSwgMHg1OTgxLCAweDAzQkUsIDB4NTk4MiwgMHg1OTgyLCAweDAzQkQsIDB4NTk4MywgMHg1OTgzLCAweDAzQkEsCisgICAgMHg1OTg0LCAweDU5ODQsIDB4MDNCOCwgMHg1OTg1LCAweDU5ODUsIDB4MTdENywgMHg1OTg5LCAweDU5ODksIDB4M0QzMCwKKyAgICAweDU5OEEsIDB4NTk4QSwgMHgwNDdCLCAweDU5OEQsIDB4NTk4RCwgMHgwNDc4LCAweDU5OEUsIDB4NTk4RSwgMHgxODVELAorICAgIDB4NTk4RiwgMHg1OThGLCAweDE4NjAsIDB4NTk5MCwgMHg1OTkwLCAweDE4NUYsIDB4NTk5MiwgMHg1OTkyLCAweDA0NzIsCisgICAgMHg1OTkzLCAweDU5OTMsIDB4MDQ3QSwgMHg1OTk0LCAweDU5OTQsIDB4M0M5OSwgMHg1OTk2LCAweDU5OTYsIDB4MDQ3NywKKyAgICAweDU5OTcsIDB4NTk5NywgMHgxODVDLCAweDU5OTgsIDB4NTk5OCwgMHgxODVBLCAweDU5OTksIDB4NTk5OSwgMHgwNDc2LAorICAgIDB4NTk5QSwgMHg1OTlBLCAweDNCQjAsIDB4NTk5RCwgMHg1OTlELCAweDA0NzEsIDB4NTk5RSwgMHg1OTlFLCAweDA0NzQsCisgICAgMHg1OTlGLCAweDU5OUYsIDB4M0RBRiwgMHg1OUEwLCAweDU5QTAsIDB4MTg1QiwgMHg1OUExLCAweDU5QTEsIDB4MTg2MiwKKyAgICAweDU5QTIsIDB4NTlBMiwgMHgxODVFLCAweDU5QTMsIDB4NTlBMywgMHgwNDc1LCAweDU5QTQsIDB4NTlBNCwgMHgwNDc5LAorICAgIDB4NTlBNSwgMHg1OUE1LCAweDA0N0MsIDB4NTlBNiwgMHg1OUE2LCAweDE4NTksIDB4NTlBNywgMHg1OUE3LCAweDE4NjEsCisgICAgMHg1OUE4LCAweDU5QTgsIDB4MDQ3MywgMHg1OUFDLCAweDU5QUMsIDB4M0Q4MSwgMHg1OUFFLCAweDU5QUUsIDB4MDU4QiwKKyAgICAweDU5QUYsIDB4NTlBRiwgMHgwNTkzLCAweDU5QjAsIDB4NTlCMCwgMHgzQ0Q4LCAweDU5QjEsIDB4NTlCMSwgMHgxOTUxLAorICAgIDB4NTlCMiwgMHg1OUIyLCAweDE5NEEsIDB4NTlCMywgMHg1OUIzLCAweDA1OTQsIDB4NTlCNCwgMHg1OUI0LCAweDE5NTUsCisgICAgMHg1OUI1LCAweDU5QjUsIDB4MTk0NiwgMHg1OUI2LCAweDU5QjYsIDB4MTk0RCwgMHg1OUI3LCAweDU5QjcsIDB4M0YyRCwKKyAgICAweDU5QjgsIDB4NTlCOCwgMHgzQTEwLCAweDU5QjksIDB4NTlCOSwgMHgwNThBLCAweDU5QkEsIDB4NTlCQSwgMHgxOTQ3LAorICAgIDB4NTlCQiwgMHg1OUJCLCAweDA1ODgsIDB4NTlCQywgMHg1OUJDLCAweDE5NEUsIDB4NTlCRCwgMHg1OUJELCAweDE5NTIsCisgICAgMHg1OUJFLCAweDU5QkUsIDB4MDU4NywgMHg1OUMwLCAweDU5QzAsIDB4MTk1MywgMHg1OUMxLCAweDU5QzEsIDB4MTk0QywKKyAgICAweDU5QzMsIDB4NTlDMywgMHgxOTRGLCAweDU5QzQsIDB4NTlDNCwgMHgzRDA0LCAweDU5QzUsIDB4NTlDNSwgMHgwNTk2LAorICAgIDB4NTlDNiwgMHg1OUM2LCAweDA1OEQsIDB4NTlDNywgMHg1OUM3LCAweDE5NTYsIDB4NTlDOCwgMHg1OUM4LCAweDE5NTQsCisgICAgMHg1OUM5LCAweDU5QzksIDB4NDBFQywgMHg1OUNBLCAweDU5Q0EsIDB4MDU5MiwgMHg1OUNCLCAweDU5Q0IsIDB4MDU5MCwKKyAgICAweDU5Q0MsIDB4NTlDQywgMHgxOTRCLCAweDU5Q0QsIDB4NTlDRCwgMHgwNThGLCAweDU5Q0UsIDB4NTlDRSwgMHgxOTQ5LAorICAgIDB4NTlDRiwgMHg1OUNGLCAweDE5NDgsIDB4NTlEMCwgMHg1OUQwLCAweDA1OEUsIDB4NTlEMSwgMHg1OUQxLCAweDA1OEMsCisgICAgMHg1OUQyLCAweDU5RDIsIDB4MDU5NSwgMHg1OUQzLCAweDU5RDMsIDB4MDU5MSwgMHg1OUQ0LCAweDU5RDQsIDB4MDU4OSwKKyAgICAweDU5RDYsIDB4NTlENiwgMHgxOTUwLCAweDU5RDgsIDB4NTlEOCwgMHgwNkY1LCAweDU5RDksIDB4NTlEOSwgMHg0MEYxLAorICAgIDB4NTlEQSwgMHg1OURBLCAweDA2RkMsIDB4NTlEQiwgMHg1OURCLCAweDFBQUIsIDB4NTlEQywgMHg1OURDLCAweDA2RjQsCisgICAgMHg1OURELCAweDU5REQsIDB4MUFBMywgMHg1OURFLCAweDU5REUsIDB4MUE5RiwgMHg1OUUwLCAweDU5RTAsIDB4MUFBRiwKKyAgICAweDU5RTEsIDB4NTlFMSwgMHgxQTlFLCAweDU5RTMsIDB4NTlFMywgMHgwNkY3LCAweDU5RTQsIDB4NTlFNCwgMHgxQUE4LAorICAgIDB4NTlFNSwgMHg1OUU1LCAweDA2RkEsIDB4NTlFNiwgMHg1OUU2LCAweDA2RkQsIDB4NTlFOCwgMHg1OUU4LCAweDA2RjgsCisgICAgMHg1OUU5LCAweDU5RTksIDB4MUFBQywgMHg1OUVBLCAweDU5RUEsIDB4MDZGQiwgMHg1OUVCLCAweDU5RUIsIDB4M0Q1OSwKKyAgICAweDU5RUMsIDB4NTlFQywgMHgwODhBLCAweDU5RUQsIDB4NTlFRCwgMHgxQUIyLCAweDU5RUUsIDB4NTlFRSwgMHgxQUEwLAorICAgIDB4NTlFRiwgMHg1OUVGLCAweDNEMzgsIDB4NTlGMCwgMHg1OUYwLCAweDNCQjIsIDB4NTlGMSwgMHg1OUYxLCAweDFBQTIsCisgICAgMHg1OUYyLCAweDU5RjIsIDB4MUFBOSwgMHg1OUYzLCAweDU5RjMsIDB4MUFBRCwgMHg1OUY0LCAweDU5RjQsIDB4MUFCMSwKKyAgICAweDU5RjUsIDB4NTlGNSwgMHgxQUFFLCAweDU5RjYsIDB4NTlGNiwgMHgxQUE3LCAweDU5RjcsIDB4NTlGNywgMHgxQUFBLAorICAgIDB4NTlGOCwgMHg1OUY4LCAweDNFNEEsIDB4NTlGOSwgMHg1OUY5LCAweDQwRjgsIDB4NTlGQSwgMHg1OUZBLCAweDFBQTQsCisgICAgMHg1OUZCLCAweDU5RkIsIDB4MDZGRiwgMHg1OUZDLCAweDU5RkMsIDB4MUFBNiwgMHg1OUZELCAweDU5RkQsIDB4MUFBNSwKKyAgICAweDU5RkUsIDB4NTlGRSwgMHgxQUIwLCAweDU5RkYsIDB4NTlGRiwgMHgwNkY2LCAweDVBMDAsIDB4NUEwMCwgMHgxQUExLAorICAgIDB4NUEwMSwgMHg1QTAxLCAweDA2RkUsIDB4NUEwMiwgMHg1QTAyLCAweDNCOEQsIDB4NUEwMywgMHg1QTAzLCAweDA2RjksCisgICAgMHg1QTA5LCAweDVBMDksIDB4MDg5MCwgMHg1QTBBLCAweDVBMEEsIDB4MUM3NSwgMHg1QTBCLCAweDVBMEIsIDB4M0M4OSwKKyAgICAweDVBMEMsIDB4NUEwQywgMHgwODhGLCAweDVBMEQsIDB4NUEwRCwgMHgzQjM4LCAweDVBMEYsIDB4NUEwRiwgMHgxQzczLAorICAgIDB4NUExMSwgMHg1QTExLCAweDA4ODQsIDB4NUExMiwgMHg1QTEyLCAweDNBMTMsIDB4NUExMywgMHg1QTEzLCAweDA4ODksCisgICAgMHg1QTE1LCAweDVBMTUsIDB4MUM3MiwgMHg1QTE2LCAweDVBMTYsIDB4MUM2RiwgMHg1QTE3LCAweDVBMTcsIDB4MUM3NCwKKyAgICAweDVBMTgsIDB4NUExOCwgMHgwODg1LCAweDVBMTksIDB4NUExOSwgMHgxQzZFLCAweDVBMUIsIDB4NUExQiwgMHgwODg4LAorICAgIDB4NUExQywgMHg1QTFDLCAweDA4ODYsIDB4NUExRSwgMHg1QTFFLCAweDFDNzYsIDB4NUExRiwgMHg1QTFGLCAweDA4ODcsCisgICAgMHg1QTIwLCAweDVBMjAsIDB4MDg4QiwgMHg1QTIxLCAweDVBMjEsIDB4M0ExQiwgMHg1QTIzLCAweDVBMjMsIDB4MDg4QywKKyAgICAweDVBMjQsIDB4NUEyNCwgMHg0MEU4LCAweDVBMjUsIDB4NUEyNSwgMHgwODhFLCAweDVBMjcsIDB4NUEyNywgMHgzREUxLAorICAgIDB4NUEyOSwgMHg1QTI5LCAweDA4OEQsIDB4NUEyQSwgMHg1QTJBLCAweDNCM0IsIDB4NUEyQiwgMHg1QTJCLCAweDNENDAsCisgICAgMHg1QTJDLCAweDVBMkMsIDB4M0EwRiwgMHg1QTJELCAweDVBMkUsIDB4MUM3MCwgMHg1QTMzLCAweDVBMzMsIDB4MUM3NywKKyAgICAweDVBMzUsIDB4NUEzNSwgMHgxRTlDLCAweDVBMzYsIDB4NUEzNiwgMHgwQTQ2LCAweDVBMzcsIDB4NUEzNywgMHgyMEZELAorICAgIDB4NUEzOCwgMHg1QTM4LCAweDFFOUIsIDB4NUEzOSwgMHg1QTM5LCAweDFFQUUsIDB4NUEzQywgMHg1QTNDLCAweDBBNEMsCisgICAgMHg1QTNELCAweDVBM0QsIDB4M0FDMCwgMHg1QTNFLCAweDVBM0UsIDB4MUVBQywgMHg1QTQwLCAweDVBNDAsIDB4MEE0QiwKKyAgICAweDVBNDEsIDB4NUE0MSwgMHgwQTQ3LCAweDVBNDIsIDB4NUE0MiwgMHgxRUI1LCAweDVBNDMsIDB4NUE0MywgMHgxRUE1LAorICAgIDB4NUE0NCwgMHg1QTQ0LCAweDFFQTgsIDB4NUE0NSwgMHg1QTQ1LCAweDM5MTcsIDB4NUE0NiwgMHg1QTQ2LCAweDBBNEYsCisgICAgMHg1QTQ3LCAweDVBNDcsIDB4MUVCMiwgMHg1QTQ4LCAweDVBNDgsIDB4MUVBQSwgMHg1QTQ5LCAweDVBNDksIDB4MEE0OCwKKyAgICAweDVBNEEsIDB4NUE0QSwgMHgwQTUwLCAweDVBNEMsIDB4NUE0QywgMHgxRUFGLCAweDVBNEQsIDB4NUE0RCwgMHgxRUFELAorICAgIDB4NUE1MCwgMHg1QTUwLCAweDFFOUUsIDB4NUE1MSwgMHg1QTUxLCAweDFFQjMsIDB4NUE1MiwgMHg1QTUyLCAweDFFQTcsCisgICAgMHg1QTUzLCAweDVBNTMsIDB4MUVBMiwgMHg1QTU0LCAweDVBNTQsIDB4NDYwMywgMHg1QTU1LCAweDVBNTUsIDB4MUU5OCwKKyAgICAweDVBNTYsIDB4NUE1NiwgMHgxRUI0LCAweDVBNTcsIDB4NUE1NywgMHgxRUE0LCAweDVBNTgsIDB4NUE1OCwgMHgxRTk3LAorICAgIDB4NUE1OSwgMHg1QTU5LCAweDNCMzQsIDB4NUE1QSwgMHg1QTVBLCAweDBBNEUsIDB4NUE1QiwgMHg1QTVCLCAweDFFQTksCisgICAgMHg1QTVDLCAweDVBNUMsIDB4MUVCNiwgMHg1QTVELCAweDVBNUQsIDB4MUVBNiwgMHg1QTVFLCAweDVBNUUsIDB4MUU5QSwKKyAgICAweDVBNUYsIDB4NUE1RiwgMHgxRTlGLCAweDVBNjAsIDB4NUE2MCwgMHgxRTk2LCAweDVBNjEsIDB4NUE2MSwgMHgzRDMzLAorICAgIDB4NUE2MiwgMHg1QTYyLCAweDBBNEQsIDB4NUE2MywgMHg1QTYzLCAweDQwRkIsIDB4NUE2NCwgMHg1QTY0LCAweDFFQTMsCisgICAgMHg1QTY1LCAweDVBNjUsIDB4MUVBMCwgMHg1QTY2LCAweDVBNjYsIDB4MEE0OSwgMHg1QTY3LCAweDVBNjcsIDB4MUU5OSwKKyAgICAweDVBNjgsIDB4NUE2OCwgMHgzOUI3LCAweDVBNjksIDB4NUE2OSwgMHgxRUIxLCAweDVBNkEsIDB4NUE2QSwgMHgwQTRBLAorICAgIDB4NUE2QiwgMHg1QTZCLCAweDNBNDIsIDB4NUE2QywgMHg1QTZDLCAweDFFQTEsIDB4NUE2RCwgMHg1QTZELCAweDFFOUQsCisgICAgMHg1QTZFLCAweDVBNkUsIDB4M0QzRiwgMHg1QTcwLCAweDVBNzAsIDB4MUVCMCwgMHg1QTcxLCAweDVBNzEsIDB4M0QzNCwKKyAgICAweDVBNzcsIDB4NUE3NywgMHgwQzIzLCAweDVBNzgsIDB4NUE3OCwgMHgyMEY2LCAweDVBNzksIDB4NUE3OSwgMHgzQ0UxLAorICAgIDB4NUE3QSwgMHg1QTdBLCAweDIwRjMsIDB4NUE3QiwgMHg1QTdCLCAweDIxMDQsIDB4NUE3QywgMHg1QTdDLCAweDIwRjgsCisgICAgMHg1QTdELCAweDVBN0QsIDB4MjEwNSwgMHg1QTdFLCAweDVBN0UsIDB4M0ExMSwgMHg1QTdGLCAweDVBN0YsIDB4MEMyNSwKKyAgICAweDVBODEsIDB4NUE4MSwgMHgzQTFELCAweDVBODIsIDB4NUE4MiwgMHgzRDMxLCAweDVBODMsIDB4NUE4MywgMHgyMTAxLAorICAgIDB4NUE4NCwgMHg1QTg0LCAweDIwRkUsIDB4NUE4NiwgMHg1QTg2LCAweDNCODEsIDB4NUE4OCwgMHg1QTg4LCAweDQyNjMsCisgICAgMHg1QThBLCAweDVBOEEsIDB4MjBGRiwgMHg1QThCLCAweDVBOEIsIDB4MjEwMiwgMHg1QThDLCAweDVBOEMsIDB4MjEwNiwKKyAgICAweDVBOEUsIDB4NUE4RSwgMHgxRUFCLCAweDVBOEYsIDB4NUE4RiwgMHgyMTA4LCAweDVBOTAsIDB4NUE5MCwgMHgyM0I2LAorICAgIDB4NUE5MSwgMHg1QTkxLCAweDQyMzUsIDB4NUE5MiwgMHg1QTkyLCAweDBDMjYsIDB4NUE5MywgMHg1QTkzLCAweDIxMDksCisgICAgMHg1QTk0LCAweDVBOTQsIDB4MjBGMSwgMHg1QTk1LCAweDVBOTUsIDB4MjBGQiwgMHg1QTk2LCAweDVBOTYsIDB4NDEwMCwKKyAgICAweDVBOTcsIDB4NUE5NywgMHgyMTAwLCAweDVBOTksIDB4NUE5OSwgMHgzQTBBLCAweDVBOUEsIDB4NUE5QSwgMHgwQzI0LAorICAgIDB4NUE5QiwgMHg1QTlCLCAweDBDMjcsIDB4NUE5QywgMHg1QTlDLCAweDIxMDcsIDB4NUE5RCwgMHg1QTlELCAweDIxMEEsCisgICAgMHg1QTlFLCAweDVBOUUsIDB4MjBGNSwgMHg1QTlGLCAweDVBOUYsIDB4MjBGMiwgMHg1QUEwLCAweDVBQTAsIDB4NDE3MiwKKyAgICAweDVBQTEsIDB4NUFBMSwgMHgzQ0RDLCAweDVBQTIsIDB4NUFBMiwgMHgyMEY0LCAweDVBQTUsIDB4NUFBNSwgMHgyMEY5LAorICAgIDB4NUFBNiwgMHg1QUE2LCAweDIwRjcsIDB4NUFBNywgMHg1QUE3LCAweDBDMjgsIDB4NUFBOSwgMHg1QUE5LCAweDIxMDMsCisgICAgMHg1QUFCLCAweDVBQUIsIDB4NDBGQSwgMHg1QUFDLCAweDVBQUMsIDB4MjBGQSwgMHg1QUFFLCAweDVBQUUsIDB4MjBGQywKKyAgICAweDVBQUYsIDB4NUFBRiwgMHgyMEYwLCAweDVBQjAsIDB4NUFCMCwgMHgyM0FBLCAweDVBQjEsIDB4NUFCMSwgMHgyM0E4LAorICAgIDB4NUFCMiwgMHg1QUIyLCAweDBERkMsIDB4NUFCMywgMHg1QUIzLCAweDBERkEsIDB4NUFCNCwgMHg1QUI0LCAweDIzQjIsCisgICAgMHg1QUI1LCAweDVBQjUsIDB4MjNBOSwgMHg1QUI2LCAweDVBQjYsIDB4MjNCMywgMHg1QUI3LCAweDVBQjcsIDB4MjNBRiwKKyAgICAweDVBQjgsIDB4NUFCOCwgMHgyM0E3LCAweDVBQjksIDB4NUFCOSwgMHgyM0I1LCAweDVBQkEsIDB4NUFCQSwgMHgyM0E2LAorICAgIDB4NUFCQiwgMHg1QUJCLCAweDIzQUQsIDB4NUFCQywgMHg1QUJDLCAweDBERjksIDB4NUFCRCwgMHg1QUJELCAweDBERjgsCisgICAgMHg1QUJFLCAweDVBQkUsIDB4MERGNywgMHg1QUJGLCAweDVBQkYsIDB4MjNBQiwgMHg1QUMwLCAweDVBQzAsIDB4MjNCMCwKKyAgICAweDVBQzEsIDB4NUFDMSwgMHgwREY0LCAweDVBQzIsIDB4NUFDMiwgMHgwREZCLCAweDVBQzMsIDB4NUFDMywgMHgzODk2LAorICAgIDB4NUFDNCwgMHg1QUM0LCAweDIzQTQsIDB4NUFDNiwgMHg1QUM2LCAweDIzQUUsIDB4NUFDNywgMHg1QUM3LCAweDIzQTMsCisgICAgMHg1QUM4LCAweDVBQzgsIDB4MjNBQywgMHg1QUM5LCAweDVBQzksIDB4MERGNSwgMHg1QUNBLCAweDVBQ0EsIDB4MjNCMSwKKyAgICAweDVBQ0IsIDB4NUFDQiwgMHgyM0E1LCAweDVBQ0MsIDB4NUFDQywgMHgwREY2LCAweDVBQ0QsIDB4NUFDRCwgMHgyM0I0LAorICAgIDB4NUFDRSwgMHg1QUNFLCAweDNDODgsIDB4NUFDRiwgMHg1QUNGLCAweDQzQjUsIDB4NUFEMywgMHg1QUQzLCAweDQxMDIsCisgICAgMHg1QUQ1LCAweDVBRDUsIDB4MjY1MCwgMHg1QUQ2LCAweDVBRDYsIDB4MEZCNCwgMHg1QUQ3LCAweDVBRDcsIDB4MEZCMywKKyAgICAweDVBRDgsIDB4NUFEOCwgMHgwRkI1LCAweDVBRDksIDB4NUFEOSwgMHgyNjVDLCAweDVBREEsIDB4NUFEQSwgMHgyNjUyLAorICAgIDB4NUFEQiwgMHg1QURCLCAweDI2NTgsIDB4NUFEQywgMHg1QURDLCAweDI2NEQsIDB4NUFERCwgMHg1QURELCAweDI2NUIsCisgICAgMHg1QURFLCAweDVBREUsIDB4MjY1QSwgMHg1QURGLCAweDVBREYsIDB4MjY1RSwgMHg1QUUwLCAweDVBRTAsIDB4MjY1NywKKyAgICAweDVBRTEsIDB4NUFFMSwgMHgwRkIwLCAweDVBRTIsIDB4NUFFMiwgMHgyNjU2LCAweDVBRTMsIDB4NUFFMywgMHgwRkI2LAorICAgIDB4NUFFNCwgMHg1QUU0LCAweDNCODYsIDB4NUFFNSwgMHg1QUU1LCAweDI2NEYsIDB4NUFFNiwgMHg1QUU2LCAweDBGQjEsCisgICAgMHg1QUU4LCAweDVBRTgsIDB4MjY1RCwgMHg1QUU5LCAweDVBRTksIDB4MEZCMiwgMHg1QUVBLCAweDVBRUEsIDB4MjY1MSwKKyAgICAweDVBRUIsIDB4NUFFQiwgMHgyNjU0LCAweDVBRUMsIDB4NUFFQywgMHgyNjU5LCAweDVBRUQsIDB4NUFFRCwgMHgyNjUzLAorICAgIDB4NUFFRSwgMHg1QUVFLCAweDI2NEUsIDB4NUFGMCwgMHg1QUYwLCAweDNFRTcsIDB4NUFGMiwgMHg1QUYyLCAweDM3RjUsCisgICAgMHg1QUYzLCAweDVBRjMsIDB4MjY1NSwgMHg1QUY0LCAweDVBRjQsIDB4MjhBQiwgMHg1QUY1LCAweDVBRjUsIDB4MTEyRCwKKyAgICAweDVBRjYsIDB4NUFGNiwgMHgyOEFFLCAweDVBRjcsIDB4NUFGNywgMHgyOEFELCAweDVBRjgsIDB4NUFGOCwgMHgyOEIwLAorICAgIDB4NUFGOSwgMHg1QUY5LCAweDI4QjIsIDB4NUFGQSwgMHg1QUZBLCAweDM2RUUsIDB4NUFGQiwgMHg1QUZCLCAweDExMkIsCisgICAgMHg1QUZELCAweDVBRkQsIDB4MjhBQywgMHg1QUZFLCAweDVBRkUsIDB4M0MxRCwgMHg1QUZGLCAweDVBRkYsIDB4MjhBQSwKKyAgICAweDVCMDEsIDB4NUIwMSwgMHgyOEIzLCAweDVCMDIsIDB4NUIwMiwgMHgyOEIxLCAweDVCMDMsIDB4NUIwMywgMHgyOEFGLAorICAgIDB4NUIwNSwgMHg1QjA1LCAweDI4QjUsIDB4NUIwNywgMHg1QjA3LCAweDI4QjQsIDB4NUIwOCwgMHg1QjA4LCAweDExMkYsCisgICAgMHg1QjA5LCAweDVCMDksIDB4MTEyQSwgMHg1QjBCLCAweDVCMEIsIDB4MTEyQywgMHg1QjBDLCAweDVCMEMsIDB4MTEyRSwKKyAgICAweDVCMEQsIDB4NUIwRCwgMHg0OEZGLCAweDVCMEYsIDB4NUIwRiwgMHgyOEI2LCAweDVCMTAsIDB4NUIxMCwgMHgyQjIyLAorICAgIDB4NUIxMSwgMHg1QjExLCAweDNCRjYsIDB4NUIxMywgMHg1QjEzLCAweDJCMjEsIDB4NUIxNCwgMHg1QjE0LCAweDJCMjAsCisgICAgMHg1QjE2LCAweDVCMTYsIDB4MkIyMywgMHg1QjE3LCAweDVCMTcsIDB4MkIxQywgMHg1QjE5LCAweDVCMTksIDB4MkIxRCwKKyAgICAweDVCMUEsIDB4NUIxQSwgMHgyQjI1LCAweDVCMUIsIDB4NUIxQiwgMHgyQjFFLCAweDVCMUQsIDB4NUIxRCwgMHgxMkE4LAorICAgIDB4NUIxRSwgMHg1QjFFLCAweDJCMjcsIDB4NUIxRiwgMHg1QjFGLCAweDQ5NDEsIDB4NUIyMCwgMHg1QjIwLCAweDJCMjYsCisgICAgMHg1QjIxLCAweDVCMjEsIDB4MkIxRiwgMHg1QjIzLCAweDVCMjMsIDB4MkQ1MiwgMHg1QjI0LCAweDVCMjQsIDB4MTNDNSwKKyAgICAweDVCMjUsIDB4NUIyNSwgMHgyRDUwLCAweDVCMjYsIDB4NUIyNiwgMHgyRDU1LCAweDVCMjcsIDB4NUIyNywgMHgyRDU0LAorICAgIDB4NUIyOCwgMHg1QjI4LCAweDJCMjQsIDB4NUIyQSwgMHg1QjJBLCAweDEzQzQsIDB4NUIyQiwgMHg1QjJCLCAweDNCODQsCisgICAgMHg1QjJDLCAweDVCMkMsIDB4MkQ1MywgMHg1QjJELCAweDVCMkQsIDB4MkQ0RiwgMHg1QjJFLCAweDVCMkUsIDB4MkQ1NywKKyAgICAweDVCMkYsIDB4NUIyRiwgMHgyRDU2LCAweDVCMzAsIDB4NUIzMCwgMHgxM0MzLCAweDVCMzIsIDB4NUIzMiwgMHgyRDUxLAorICAgIDB4NUIzNCwgMHg1QjM0LCAweDEyQTksIDB4NUIzOCwgMHg1QjM4LCAweDE0Q0UsIDB4NUIzQywgMHg1QjNDLCAweDJGMTgsCisgICAgMHg1QjNELCAweDVCM0YsIDB4MzA4OSwgMHg1QjQwLCAweDVCNDAsIDB4MTYwRiwgMHg1QjQxLCAweDVCNDEsIDB4MzhDOCwKKyAgICAweDVCNDMsIDB4NUI0MywgMHgxNjEwLCAweDVCNDQsIDB4NUI0NCwgMHgzQTQ0LCAweDVCNDUsIDB4NUI0NSwgMHgzMUNDLAorICAgIDB4NUI0NiwgMHg1QjQ2LCAweDQyQjIsIDB4NUI0NywgMHg1QjQ3LCAweDMyQ0QsIDB4NUI0OCwgMHg1QjQ4LCAweDMyQ0MsCisgICAgMHg1QjRBLCAweDVCNEEsIDB4MzhDRCwgMHg1QjRCLCAweDVCNEMsIDB4MzM3QywgMHg1QjRELCAweDVCNEQsIDB4MzQxMywKKyAgICAweDVCNEUsIDB4NUI0RSwgMHgzNDgyLCAweDVCNEYsIDB4NUI0RiwgMHgzQTMxLCAweDVCNTAsIDB4NUI1MSwgMHgwMjdGLAorICAgIDB4NUI1MywgMHg1QjUzLCAweDAyODEsIDB4NUI1NCwgMHg1QjU0LCAweDAyQzYsIDB4NUI1NSwgMHg1QjU1LCAweDAzMzMsCisgICAgMHg1QjU2LCAweDVCNTYsIDB4MTdEQywgMHg1QjU3LCAweDVCNTgsIDB4MDNCRiwgMHg1QjVBLCAweDVCNUIsIDB4MDQ3RiwKKyAgICAweDVCNUMsIDB4NUI1QywgMHgwNDdFLCAweDVCNUQsIDB4NUI1RCwgMHgwNDdELCAweDVCNUYsIDB4NUI1RiwgMHgwNTk3LAorICAgIDB4NUI2MiwgMHg1QjYyLCAweDE5NTcsIDB4NUI2MywgMHg1QjYzLCAweDA1OTksIDB4NUI2NCwgMHg1QjY0LCAweDA1OTgsCisgICAgMHg1QjY1LCAweDVCNjUsIDB4MTk1OCwgMHg1QjY2LCAweDVCNjYsIDB4NDU0RSwgMHg1QjY4LCAweDVCNjgsIDB4NDYxRCwKKyAgICAweDVCNjksIDB4NUI2OSwgMHgwNzAwLCAweDVCNkIsIDB4NUI2QiwgMHgwODkxLCAweDVCNkMsIDB4NUI2QywgMHgxQzc4LAorICAgIDB4NUI2RCwgMHg1QjZELCAweDNFNUYsIDB4NUI2RSwgMHg1QjZFLCAweDFFQjgsIDB4NUI3MCwgMHg1QjcwLCAweDBBNTEsCisgICAgMHg1QjcxLCAweDVCNzEsIDB4MEMyQSwgMHg1QjcyLCAweDVCNzIsIDB4MUVCNywgMHg1QjczLCAweDVCNzMsIDB4MEMyOSwKKyAgICAweDVCNzQsIDB4NUI3NCwgMHgzNzMyLCAweDVCNzUsIDB4NUI3NSwgMHgwRkI3LCAweDVCNzYsIDB4NUI3NiwgMHg0MTBBLAorICAgIDB4NUI3NywgMHg1Qjc3LCAweDI2NUYsIDB4NUI3OCwgMHg1Qjc4LCAweDEyQUEsIDB4NUI3QSwgMHg1QjdBLCAweDEzQzYsCisgICAgMHg1QjdCLCAweDVCN0IsIDB4MkQ1OCwgMHg1QjdDLCAweDVCN0MsIDB4NDEwQywgMHg1QjdELCAweDVCN0QsIDB4MTYxMSwKKyAgICAweDVCN0YsIDB4NUI3RiwgMHgxNkMwLCAweDVCODAsIDB4NUI4MCwgMHgwMjI1LCAweDVCODEsIDB4NUI4MSwgMHgxNzlFLAorICAgIDB4NUI4MiwgMHg1QjgyLCAweDQwNDQsIDB4NUI4MywgMHg1QjgzLCAweDAzMzQsIDB4NUI4NCwgMHg1Qjg0LCAweDE3OUYsCisgICAgMHg1Qjg1LCAweDVCODUsIDB4MDNDMywgMHg1Qjg3LCAweDVCODgsIDB4MDNDMSwgMHg1Qjg5LCAweDVCODksIDB4MDNDNCwKKyAgICAweDVCOEIsIDB4NUI4QiwgMHgwNDgyLCAweDVCOEMsIDB4NUI4QywgMHgwNDgxLCAweDVCOEUsIDB4NUI4RSwgMHgxODYzLAorICAgIDB4NUI4RiwgMHg1QjhGLCAweDA0ODMsIDB4NUI5MCwgMHg1QjkwLCAweDQ4RTksIDB4NUI5MiwgMHg1QjkyLCAweDE4NjQsCisgICAgMHg1QjkzLCAweDVCOTMsIDB4MTk1OSwgMHg1Qjk1LCAweDVCOTUsIDB4MTk1QSwgMHg1Qjk3LCAweDVCOTcsIDB4MDU5QSwKKyAgICAweDVCOTgsIDB4NUI5OCwgMHgwNTlDLCAweDVCOTksIDB4NUI5OSwgMHgwNTlFLCAweDVCOUEsIDB4NUI5QSwgMHgwNTlCLAorICAgIDB4NUI5QiwgMHg1QjlCLCAweDA1OUYsIDB4NUI5QywgMHg1QjlDLCAweDA1OUQsIDB4NUI5RCwgMHg1QjlELCAweDQxMTYsCisgICAgMHg1QjlFLCAweDVCOUYsIDB4NDU0RiwgMHg1QkEyLCAweDVCQTIsIDB4MDcwNCwgMHg1QkEzLCAweDVCQTMsIDB4MDcwMSwKKyAgICAweDVCQTQsIDB4NUJBNCwgMHgwNzAzLCAweDVCQTUsIDB4NUJBNSwgMHgwNzA1LCAweDVCQTYsIDB4NUJBNiwgMHgwNzAyLAorICAgIDB4NUJBNywgMHg1QkE3LCAweDFDNzksIDB4NUJBOCwgMHg1QkE4LCAweDFBQjMsIDB4NUJBQSwgMHg1QkFBLCAweDQxN0IsCisgICAgMHg1QkFDLCAweDVCQUMsIDB4MUM3QiwgMHg1QkFELCAweDVCQUQsIDB4MUM3QSwgMHg1QkFFLCAweDVCQUUsIDB4MDg5NywKKyAgICAweDVCQjAsIDB4NUJCMCwgMHgwODkzLCAweDVCQjMsIDB4NUJCMywgMHgwODk0LCAweDVCQjQsIDB4NUJCNCwgMHgwODk2LAorICAgIDB4NUJCNSwgMHg1QkI1LCAweDA4OTgsIDB4NUJCNiwgMHg1QkI2LCAweDA4OTUsIDB4NUJCOCwgMHg1QkI4LCAweDA4OUEsCisgICAgMHg1QkI5LCAweDVCQjksIDB4MDg5OSwgMHg1QkJGLCAweDVCQkYsIDB4MEE1NiwgMHg1QkMwLCAweDVCQzAsIDB4MUVCQSwKKyAgICAweDVCQzEsIDB4NUJDMSwgMHgxRUI5LCAweDVCQzIsIDB4NUJDMiwgMHgwQTU1LCAweDVCQzMsIDB4NUJDMywgMHgzRjI1LAorICAgIDB4NUJDNCwgMHg1QkM0LCAweDBBNTQsIDB4NUJDNSwgMHg1QkM1LCAweDBBNTMsIDB4NUJDNiwgMHg1QkM2LCAweDBBNTcsCisgICAgMHg1QkM3LCAweDVCQzcsIDB4MEE1MiwgMHg1QkNBLCAweDVCQ0EsIDB4MjExMCwgMHg1QkNCLCAweDVCQ0IsIDB4MjEwRCwKKyAgICAweDVCQ0MsIDB4NUJDQywgMHgwQzJDLCAweDVCQ0QsIDB4NUJDRCwgMHgyMTBDLCAweDVCQ0UsIDB4NUJDRSwgMHgyMTExLAorICAgIDB4NUJEMCwgMHg1QkQwLCAweDBDMkUsIDB4NUJEMSwgMHg1QkQxLCAweDIxMEYsIDB4NUJEMiwgMHg1QkQyLCAweDBDMkIsCisgICAgMHg1QkQzLCAweDVCRDMsIDB4MEMyRCwgMHg1QkQ0LCAweDVCRDQsIDB4MjEwRSwgMHg1QkQ1LCAweDVCRDUsIDB4NDExMSwKKyAgICAweDVCRDYsIDB4NUJENiwgMHgyM0I3LCAweDVCRDcsIDB4NUJENywgMHg0MkJCLCAweDVCRDgsIDB4NUJEOSwgMHgyM0I4LAorICAgIDB4NUJERSwgMHg1QkRFLCAweDBGQjgsIDB4NUJERiwgMHg1QkRGLCAweDBGQzAsIDB4NUJFMCwgMHg1QkUwLCAweDI2NjAsCisgICAgMHg1QkUxLCAweDVCRTEsIDB4MEZCQSwgMHg1QkUyLCAweDVCRTIsIDB4MEZCRSwgMHg1QkUzLCAweDVCRTMsIDB4MjY2MSwKKyAgICAweDVCRTQsIDB4NUJFNCwgMHgwRkJGLCAweDVCRTUsIDB4NUJFNiwgMHgwRkJCLCAweDVCRTcsIDB4NUJFNywgMHgwRkI5LAorICAgIDB4NUJFOCwgMHg1QkU4LCAweDBGQkQsIDB4NUJFOSwgMHg1QkU5LCAweDExMzIsIDB4NUJFQSwgMHg1QkVBLCAweDIxMEIsCisgICAgMHg1QkVCLCAweDVCRUIsIDB4MTEzMywgMHg1QkVDLCAweDVCRUMsIDB4MTEzMSwgMHg1QkVFLCAweDVCRUUsIDB4MTEzMCwKKyAgICAweDVCRUYsIDB4NUJFRiwgMHgyQjI4LCAweDVCRjAsIDB4NUJGMCwgMHgxMkFCLCAweDVCRjEsIDB4NUJGMiwgMHgyRDU5LAorICAgIDB4NUJGMywgMHg1QkYzLCAweDQxMTUsIDB4NUJGNSwgMHg1QkY1LCAweDE1N0IsIDB4NUJGNiwgMHg1QkY2LCAweDE2MTIsCisgICAgMHg1QkY4LCAweDVCRjgsIDB4MDI4MiwgMHg1QkZBLCAweDVCRkEsIDB4MDNDNSwgMHg1QkZGLCAweDVCRkYsIDB4NDBERCwKKyAgICAweDVDMDEsIDB4NUMwMSwgMHgwNzA2LCAweDVDMDMsIDB4NUMwMywgMHgxQzdDLCAweDVDMDQsIDB4NUMwNCwgMHgwODlCLAorICAgIDB4NUMwNSwgMHg1QzA1LCAweDQxMTgsIDB4NUMwNywgMHg1QzA3LCAweDBBNUEsIDB4NUMwOCwgMHg1QzA4LCAweDBBNTksCisgICAgMHg1QzA5LCAweDVDMDksIDB4MEE1OCwgMHg1QzBBLCAweDVDMEIsIDB4MEMyRiwgMHg1QzBDLCAweDVDMEMsIDB4MjExMiwKKyAgICAweDVDMEQsIDB4NUMwRCwgMHgwRkMxLCAweDVDMEUsIDB4NUMwRSwgMHgxMkFDLCAweDVDMEYsIDB4NUMwRiwgMHgwMjgzLAorICAgIDB4NUMxMCwgMHg1QzEwLCAweDE3ODcsIDB4NUMxMSwgMHg1QzExLCAweDAyQzcsIDB4NUMxMiwgMHg1QzEyLCAweDE3QTAsCisgICAgMHg1QzEzLCAweDVDMTMsIDB4NDExQSwgMHg1QzE0LCAweDVDMTQsIDB4NDExQywgMHg1QzE1LCAweDVDMTUsIDB4MTdERCwKKyAgICAweDVDMTYsIDB4NUMxNiwgMHgwM0M2LCAweDVDMUEsIDB4NUMxQSwgMHgwNUEwLCAweDVDMUMsIDB4NUMxQywgMHg0NUVBLAorICAgIDB4NUMxRSwgMHg1QzFFLCAweDNBMjksIDB4NUMxRiwgMHg1QzFGLCAweDIzQkEsIDB4NUMyMCwgMHg1QzIwLCAweDNEODksCisgICAgMHg1QzIyLCAweDVDMjIsIDB4MDI4NCwgMHg1QzIzLCAweDVDMjMsIDB4NDRFOCwgMHg1QzI0LCAweDVDMjQsIDB4MDJDOCwKKyAgICAweDVDMjUsIDB4NUMyNSwgMHgxN0RFLCAweDVDMjgsIDB4NUMyOCwgMHgxODY1LCAweDVDMkEsIDB4NUMyQSwgMHgxODY2LAorICAgIDB4NUMyQywgMHg1QzJDLCAweDA0ODQsIDB4NUMzMCwgMHg1QzMwLCAweDIxMTMsIDB4NUMzMSwgMHg1QzMxLCAweDBDMzEsCisgICAgMHg1QzMzLCAweDVDMzMsIDB4MjNCQiwgMHg1QzM3LCAweDVDMzcsIDB4MTNDNywgMHg1QzM4LCAweDVDMzgsIDB4MDI4NSwKKyAgICAweDVDMzksIDB4NUMzOSwgMHgwMjk5LCAweDVDM0EsIDB4NUMzQSwgMHgwMkM5LCAweDVDM0IsIDB4NUMzQiwgMHgxN0ExLAorICAgIDB4NUMzQywgMHg1QzNDLCAweDAzMzUsIDB4NUMzRSwgMHg1QzNFLCAweDA0ODgsIDB4NUMzRiwgMHg1QzNGLCAweDA0ODcsCisgICAgMHg1QzQwLCAweDVDNDEsIDB4MDQ4NSwgMHg1QzQ0LCAweDVDNDQsIDB4MTk1QiwgMHg1QzQ1LCAweDVDNDYsIDB4MDVBMiwKKyAgICAweDVDNDcsIDB4NUM0NywgMHgxOTVDLCAweDVDNDgsIDB4NUM0OCwgMHgwNUExLCAweDVDNDksIDB4NUM0OSwgMHg0MTFGLAorICAgIDB4NUM0QSwgMHg1QzRBLCAweDNGNUMsIDB4NUM0QiwgMHg1QzRCLCAweDA3MEEsIDB4NUM0QywgMHg1QzRDLCAweDFBQjQsCisgICAgMHg1QzRELCAweDVDNEQsIDB4MDcwOSwgMHg1QzRFLCAweDVDNEYsIDB4MDcwNywgMHg1QzUwLCAweDVDNTAsIDB4MDg5RSwKKyAgICAweDVDNTEsIDB4NUM1MSwgMHgwODlDLCAweDVDNTMsIDB4NUM1MywgMHgzRjAyLCAweDVDNTQsIDB4NUM1NCwgMHgxQzdFLAorICAgIDB4NUM1NSwgMHg1QzU1LCAweDA4OUQsIDB4NUM1NiwgMHg1QzU2LCAweDFDN0QsIDB4NUM1OCwgMHg1QzU4LCAweDA4OTIsCisgICAgMHg1QzU5LCAweDVDNTksIDB4MUVCQiwgMHg1QzVDLCAweDVDNUQsIDB4MEE1QywgMHg1QzVFLCAweDVDNUUsIDB4M0Q2NywKKyAgICAweDVDNjAsIDB4NUM2MCwgMHgwQTVCLCAweDVDNjIsIDB4NUM2MiwgMHgwRkMyLCAweDVDNjMsIDB4NUM2MywgMHgyNjYyLAorICAgIDB4NUM2NCwgMHg1QzY1LCAweDExMzQsIDB4NUM2NywgMHg1QzY3LCAweDI4QjcsIDB4NUM2OCwgMHg1QzY4LCAweDEzQzgsCisgICAgMHg1QzY5LCAweDVDNkEsIDB4MkYxOSwgMHg1QzZDLCAweDVDNkMsIDB4MTY2RSwgMHg1QzZELCAweDVDNkQsIDB4MzQ4MywKKyAgICAweDVDNkUsIDB4NUM2RSwgMHgxNzc2LCAweDVDNkYsIDB4NUM2RiwgMHgwMkNBLCAweDVDNzEsIDB4NUM3MSwgMHgwMjg2LAorICAgIDB4NUM3MywgMHg1QzczLCAweDE3QTMsIDB4NUM3NCwgMHg1Qzc0LCAweDE3QTIsIDB4NUM3OSwgMHg1Qzc5LCAweDAzQzcsCisgICAgMHg1QzdBLCAweDVDN0IsIDB4MTdFMCwgMHg1QzdDLCAweDVDN0MsIDB4MTdERiwgMHg1QzdFLCAweDVDN0UsIDB4MTdFMiwKKyAgICAweDVDODUsIDB4NUM4NSwgMHg0MTIxLCAweDVDODYsIDB4NUM4NiwgMHgxODZFLCAweDVDODgsIDB4NUM4OCwgMHgxODY5LAorICAgIDB4NUM4OSwgMHg1Qzg5LCAweDE4NkIsIDB4NUM4QSwgMHg1QzhBLCAweDE4NkQsIDB4NUM4QiwgMHg1QzhCLCAweDE4NkEsCisgICAgMHg1QzhDLCAweDVDOEMsIDB4MDQ4QywgMHg1QzhELCAweDVDOEQsIDB4MTg2NywgMHg1QzhGLCAweDVDOEYsIDB4MTg2OCwKKyAgICAweDVDOTAsIDB4NUM5MSwgMHgwNDg5LCAweDVDOTIsIDB4NUM5MiwgMHgxODZDLCAweDVDOTMsIDB4NUM5MywgMHgxODZGLAorICAgIDB4NUM5NCwgMHg1Qzk0LCAweDA0OEIsIDB4NUM5NSwgMHg1Qzk1LCAweDE4NzAsIDB4NUM5OSwgMHg1Qzk5LCAweDQ2OEMsCisgICAgMHg1QzlBLCAweDVDOUEsIDB4NDU1MSwgMHg1QzlDLCAweDVDOUMsIDB4NDk1QSwgMHg1QzlELCAweDVDOUQsIDB4MTk2QSwKKyAgICAweDVDOUUsIDB4NUM5RSwgMHgzQTJBLCAweDVDOUYsIDB4NUM5RiwgMHgxOTY0LCAweDVDQTAsIDB4NUNBMCwgMHgxOTVGLAorICAgIDB4NUNBMSwgMHg1Q0ExLCAweDA1QTUsIDB4NUNBMiwgMHg1Q0EyLCAweDE5NjcsIDB4NUNBMywgMHg1Q0EzLCAweDE5NjUsCisgICAgMHg1Q0E0LCAweDVDQTQsIDB4MTk1RSwgMHg1Q0E1LCAweDVDQTUsIDB4MTk2QiwgMHg1Q0E2LCAweDVDQTYsIDB4MTk2RSwKKyAgICAweDVDQTcsIDB4NUNBNywgMHgxOTY5LCAweDVDQTgsIDB4NUNBOCwgMHgxOTYyLCAweDVDQTksIDB4NUNBOSwgMHgwNUE3LAorICAgIDB4NUNBQSwgMHg1Q0FBLCAweDE5NjgsIDB4NUNBQiwgMHg1Q0FCLCAweDA1QTgsIDB4NUNBQywgMHg1Q0FDLCAweDE5NjMsCisgICAgMHg1Q0FELCAweDVDQUQsIDB4MTk2NiwgMHg1Q0FFLCAweDVDQUUsIDB4MTk1RCwgMHg1Q0FGLCAweDVDQUYsIDB4MTk2MSwKKyAgICAweDVDQjAsIDB4NUNCMCwgMHgxOTZELCAweDVDQjEsIDB4NUNCMSwgMHgwNUE5LCAweDVDQjMsIDB4NUNCMywgMHgwNUFBLAorICAgIDB4NUNCNSwgMHg1Q0I1LCAweDE5NjAsIDB4NUNCNiwgMHg1Q0I2LCAweDE5NkMsIDB4NUNCNywgMHg1Q0I3LCAweDA1QTQsCisgICAgMHg1Q0I4LCAweDVDQjgsIDB4MDVBNiwgMHg1Q0JBLCAweDVDQkEsIDB4NDEyQiwgMHg1Q0MxLCAweDVDQzEsIDB4NDNCOCwKKyAgICAweDVDQzIsIDB4NUNDMiwgMHgzRDRDLCAweDVDQzYsIDB4NUNDNiwgMHgxQUM1LCAweDVDQzcsIDB4NUNDNywgMHgxQUJFLAorICAgIDB4NUNDOCwgMHg1Q0M4LCAweDFBQzQsIDB4NUNDOSwgMHg1Q0M5LCAweDFBQkQsIDB4NUNDQSwgMHg1Q0NBLCAweDFBQkYsCisgICAgMHg1Q0NCLCAweDVDQ0IsIDB4MUFCOSwgMHg1Q0NDLCAweDVDQ0MsIDB4MUFCNywgMHg1Q0NFLCAweDVDQ0UsIDB4MUFDNiwKKyAgICAweDVDQ0YsIDB4NUNDRiwgMHgxQUMzLCAweDVDRDAsIDB4NUNEMCwgMHgxQUI1LCAweDVDRDEsIDB4NUNEMSwgMHgzRjEzLAorICAgIDB4NUNEMiwgMHg1Q0QyLCAweDA3MEMsIDB4NUNEMywgMHg1Q0Q0LCAweDFBQzEsIDB4NUNENiwgMHg1Q0Q2LCAweDFBQzAsCisgICAgMHg1Q0Q3LCAweDVDRDcsIDB4MUFCOCwgMHg1Q0Q4LCAweDVDRDgsIDB4MUFCNiwgMHg1Q0Q5LCAweDVDRDksIDB4MDcwQiwKKyAgICAweDVDREEsIDB4NUNEQSwgMHgxQUJDLCAweDVDREIsIDB4NUNEQiwgMHgxQUJBLCAweDVDREUsIDB4NUNERSwgMHgxQUJCLAorICAgIDB4NUNERiwgMHg1Q0RGLCAweDFBQzcsIDB4NUNFNSwgMHg1Q0U1LCAweDQ2MzcsIDB4NUNFOCwgMHg1Q0U4LCAweDA4QTMsCisgICAgMHg1Q0U5LCAweDVDRTksIDB4NDEyMiwgMHg1Q0VBLCAweDVDRUEsIDB4MDhBMiwgMHg1Q0VDLCAweDVDRUMsIDB4MUM3RiwKKyAgICAweDVDRUQsIDB4NUNFRCwgMHgwODlGLCAweDVDRUUsIDB4NUNFRSwgMHgxQzgxLCAweDVDRUYsIDB4NUNFRiwgMHg0MTIzLAorICAgIDB4NUNGMCwgMHg1Q0YwLCAweDA4QTQsIDB4NUNGMSwgMHg1Q0YxLCAweDFDODIsIDB4NUNGNCwgMHg1Q0Y0LCAweDA4QTcsCisgICAgMHg1Q0Y2LCAweDVDRjYsIDB4MDhBNSwgMHg1Q0Y3LCAweDVDRjcsIDB4MUM4MywgMHg1Q0Y4LCAweDVDRjgsIDB4MUFDOCwKKyAgICAweDVDRjksIDB4NUNGOSwgMHgxQzg1LCAweDVDRkIsIDB4NUNGQiwgMHgwOEExLCAweDVDRkQsIDB4NUNGRCwgMHgwOEEwLAorICAgIDB4NUNGRiwgMHg1Q0ZGLCAweDFDODAsIDB4NUQwMCwgMHg1RDAwLCAweDFDODQsIDB4NUQwMSwgMHg1RDAxLCAweDA4QTYsCisgICAgMHg1RDA2LCAweDVEMDYsIDB4MEE1RiwgMHg1RDA3LCAweDVEMDcsIDB4MEE1RSwgMHg1RDBCLCAweDVEMEIsIDB4MUVCRCwKKyAgICAweDVEMEMsIDB4NUQwQywgMHgxRUMxLCAweDVEMEQsIDB4NUQwRCwgMHgxRUMzLCAweDVEMEUsIDB4NUQwRSwgMHgwQTYwLAorICAgIDB4NUQwRiwgMHg1RDBGLCAweDFFQzYsIDB4NUQxMCwgMHg1RDEwLCAweDQxMjcsIDB4NUQxMSwgMHg1RDExLCAweDBBNjQsCisgICAgMHg1RDEyLCAweDVEMTIsIDB4MUVDOCwgMHg1RDE0LCAweDVEMTQsIDB4MEE2NiwgMHg1RDE1LCAweDVEMTUsIDB4NDNCOSwKKyAgICAweDVEMTYsIDB4NUQxNiwgMHgwQTYyLCAweDVEMTcsIDB4NUQxNywgMHgwQTZBLCAweDVEMTgsIDB4NUQxOCwgMHg0MTI4LAorICAgIDB4NUQxOSwgMHg1RDE5LCAweDBBNjcsIDB4NUQxQSwgMHg1RDFBLCAweDFFQkYsIDB4NUQxQiwgMHg1RDFCLCAweDBBNjEsCisgICAgMHg1RDFELCAweDVEMUQsIDB4MUVCRSwgMHg1RDFFLCAweDVEMUUsIDB4MUVCQywgMHg1RDFGLCAweDVEMUYsIDB4MUVDQSwKKyAgICAweDVEMjAsIDB4NUQyMCwgMHgxRUMwLCAweDVEMjIsIDB4NUQyMiwgMHgwQTYzLCAweDVEMjMsIDB4NUQyMywgMHgxRUM5LAorICAgIDB4NUQyNCwgMHg1RDI0LCAweDBBNjgsIDB4NUQyNSwgMHg1RDI1LCAweDFFQzUsIDB4NUQyNiwgMHg1RDI2LCAweDFFQzQsCisgICAgMHg1RDI3LCAweDVEMjcsIDB4MEE2OSwgMHg1RDI4LCAweDVEMjgsIDB4MUVDMiwgMHg1RDI5LCAweDVEMjksIDB4MEE2NSwKKyAgICAweDVEMkMsIDB4NUQyQywgMHgzREY3LCAweDVEMkUsIDB4NUQyRSwgMHgxRUNCLCAweDVEMkYsIDB4NUQyRiwgMHg0NkQzLAorICAgIDB4NUQzMCwgMHg1RDMwLCAweDFFQzcsIDB4NUQzMSwgMHg1RDMxLCAweDIxMjIsIDB4NUQzMiwgMHg1RDMyLCAweDIxMjksCisgICAgMHg1RDMzLCAweDVEMzMsIDB4MjExRSwgMHg1RDM0LCAweDVEMzQsIDB4MEMzNCwgMHg1RDM1LCAweDVEMzUsIDB4MjExQSwKKyAgICAweDVEMzYsIDB4NUQzNiwgMHgyMTJBLCAweDVEMzcsIDB4NUQzNywgMHgyMTE0LCAweDVEMzgsIDB4NUQzOCwgMHgyMTI3LAorICAgIDB4NUQzOSwgMHg1RDM5LCAweDIxMjUsIDB4NUQzQSwgMHg1RDNBLCAweDIxMUYsIDB4NUQzQywgMHg1RDNDLCAweDIxMjgsCisgICAgMHg1RDNELCAweDVEM0QsIDB4MjEyMSwgMHg1RDNFLCAweDVEM0UsIDB4NDYyOSwgMHg1RDNGLCAweDVEM0YsIDB4MjExOSwKKyAgICAweDVENDAsIDB4NUQ0MCwgMHgyMTJCLCAweDVENDEsIDB4NUQ0MSwgMHgyMTE3LCAweDVENDIsIDB4NUQ0MiwgMHgyMTI0LAorICAgIDB4NUQ0MywgMHg1RDQzLCAweDIxMTUsIDB4NUQ0NSwgMHg1RDQ1LCAweDIxMkMsIDB4NUQ0NiwgMHg1RDQ2LCAweDQxMjksCisgICAgMHg1RDQ3LCAweDVENDcsIDB4MEMzNSwgMHg1RDQ4LCAweDVENDgsIDB4NDYyQSwgMHg1RDQ5LCAweDVENDksIDB4MjEyNiwKKyAgICAweDVENEEsIDB4NUQ0QSwgMHgyM0JFLCAweDVENEIsIDB4NUQ0QiwgMHgyMTE4LCAweDVENEMsIDB4NUQ0QywgMHgwQzMyLAorICAgIDB4NUQ0RSwgMHg1RDRFLCAweDIxMUMsIDB4NUQ1MCwgMHg1RDUwLCAweDBDMzMsIDB4NUQ1MSwgMHg1RDUxLCAweDIxMUIsCisgICAgMHg1RDUyLCAweDVENTIsIDB4MjEyMCwgMHg1RDU1LCAweDVENTUsIDB4MjExRCwgMHg1RDU2LCAweDVENTYsIDB4NDNCQSwKKyAgICAweDVENTcsIDB4NUQ1NywgMHgzRkNBLCAweDVENTksIDB4NUQ1OSwgMHgyMTIzLCAweDVENUIsIDB4NUQ1QiwgMHgzREQ1LAorICAgIDB4NUQ1RSwgMHg1RDVFLCAweDIzQzIsIDB4NUQ2MiwgMHg1RDYyLCAweDIzQzUsIDB4NUQ2MywgMHg1RDYzLCAweDIzQkQsCisgICAgMHg1RDY1LCAweDVENjUsIDB4MjNCRiwgMHg1RDY3LCAweDVENjcsIDB4MjNDNCwgMHg1RDY4LCAweDVENjgsIDB4MjNDMywKKyAgICAweDVENjksIDB4NUQ2OSwgMHgwREZELCAweDVENkIsIDB4NUQ2QiwgMHgyMTE2LCAweDVENkMsIDB4NUQ2QywgMHgyM0MxLAorICAgIDB4NUQ2RiwgMHg1RDZGLCAweDBERkUsIDB4NUQ3MCwgMHg1RDcwLCAweDQ2RTQsIDB4NUQ3MSwgMHg1RDcxLCAweDIzQkMsCisgICAgMHg1RDcyLCAweDVENzIsIDB4MjNDMCwgMHg1RDc0LCAweDVENzQsIDB4M0VFRiwgMHg1RDc3LCAweDVENzcsIDB4MjY2OSwKKyAgICAweDVENzksIDB4NUQ3OSwgMHgyNjcwLCAweDVEN0EsIDB4NUQ3QSwgMHgyNjY3LCAweDVEN0MsIDB4NUQ3QywgMHgyNjZFLAorICAgIDB4NUQ3RCwgMHg1RDdELCAweDI2NjUsIDB4NUQ3RSwgMHg1RDdFLCAweDI2NkQsIDB4NUQ3RiwgMHg1RDdGLCAweDI2NzEsCisgICAgMHg1RDgwLCAweDVEODAsIDB4MjY2NCwgMHg1RDgxLCAweDVEODEsIDB4MjY2OCwgMHg1RDgyLCAweDVEODIsIDB4MjY2MywKKyAgICAweDVEODQsIDB4NUQ4NCwgMHgwRkMzLCAweDVEODUsIDB4NUQ4NSwgMHgzRTM0LCAweDVEODYsIDB4NUQ4NiwgMHgyNjY2LAorICAgIDB4NUQ4NywgMHg1RDg3LCAweDBGQzQsIDB4NUQ4OCwgMHg1RDg4LCAweDI2NkMsIDB4NUQ4OSwgMHg1RDg5LCAweDI2NkIsCisgICAgMHg1RDhBLCAweDVEOEEsIDB4MjY2QSwgMHg1RDhCLCAweDVEOEIsIDB4NDEyNCwgMHg1RDhELCAweDVEOEQsIDB4MjY2RiwKKyAgICAweDVEOEUsIDB4NUQ4RSwgMHgzRjBDLCAweDVEOTIsIDB4NUQ5MiwgMHgyOEJCLCAweDVEOTMsIDB4NUQ5MywgMHgyOEJELAorICAgIDB4NUQ5NCwgMHg1RDk0LCAweDExMzcsIDB4NUQ5NSwgMHg1RDk1LCAweDI4QkUsIDB4NUQ5NywgMHg1RDk3LCAweDI4QjksCisgICAgMHg1RDk5LCAweDVEOTksIDB4MjhCOCwgMHg1RDlBLCAweDVEOUEsIDB4MjhDMiwgMHg1RDlDLCAweDVEOUMsIDB4MjhDMCwKKyAgICAweDVEOUQsIDB4NUQ5RCwgMHgxMTM2LCAweDVEOUUsIDB4NUQ5RSwgMHgyOEMzLCAweDVEOUYsIDB4NUQ5RiwgMHgyOEJBLAorICAgIDB4NURBMCwgMHg1REEwLCAweDI4QkYsIDB4NURBMSwgMHg1REExLCAweDI4QzEsIDB4NURBMiwgMHg1REEyLCAweDI4QkMsCisgICAgMHg1REE0LCAweDVEQTQsIDB4NDYyRCwgMHg1REE3LCAweDVEQTcsIDB4MkIyQywgMHg1REE4LCAweDVEQTgsIDB4MkIzMSwKKyAgICAweDVEQTksIDB4NURBOSwgMHgyQjJCLCAweDVEQUEsIDB4NURBQSwgMHgyQjMwLCAweDVEQUIsIDB4NURBQiwgMHgzRTM5LAorICAgIDB4NURBQywgMHg1REFDLCAweDJCMjksIDB4NURBRCwgMHg1REFELCAweDJCMzMsIDB4NURBRSwgMHg1REFFLCAweDJCMkYsCisgICAgMHg1REFGLCAweDVEQUYsIDB4MkIzNCwgMHg1REIwLCAweDVEQjAsIDB4MkIyRSwgMHg1REIxLCAweDVEQjEsIDB4MkIyQSwKKyAgICAweDVEQjIsIDB4NURCMiwgMHgyQjMyLCAweDVEQjQsIDB4NURCNCwgMHgyQjM1LCAweDVEQjUsIDB4NURCNSwgMHgyQjJELAorICAgIDB4NURCNiwgMHg1REI2LCAweDQxNTgsIDB4NURCNywgMHg1REI3LCAweDJENUIsIDB4NURCOCwgMHg1REI4LCAweDEzQ0MsCisgICAgMHg1REI5LCAweDVEQjksIDB4NDYyRSwgMHg1REJBLCAweDVEQkEsIDB4MTNDQSwgMHg1REJDLCAweDVEQkMsIDB4MTNDOSwKKyAgICAweDVEQkQsIDB4NURCRCwgMHgxM0NCLCAweDVEQzAsIDB4NURDMCwgMHgyRjFCLCAweDVEQzEsIDB4NURDMSwgMHgzQkZGLAorICAgIDB4NURDMiwgMHg1REMyLCAweDMwMjMsIDB4NURDMywgMHg1REMzLCAweDMwOEMsIDB4NURDNiwgMHg1REM3LCAweDMxQ0QsCisgICAgMHg1REM5LCAweDVEQzksIDB4MTYxMywgMHg1RENCLCAweDVEQ0IsIDB4MzJDRSwgMHg1RENELCAweDVEQ0QsIDB4MTY2RiwKKyAgICAweDVEQ0YsIDB4NURDRiwgMHgzMkNGLCAweDVERDEsIDB4NUREMSwgMHgzMzdGLCAweDVERDIsIDB4NUREMiwgMHgxNkMyLAorICAgIDB4NURENCwgMHg1REQ0LCAweDE2QzEsIDB4NURENSwgMHg1REQ1LCAweDMzN0UsIDB4NURENiwgMHg1REQ2LCAweDE2RjcsCisgICAgMHg1REQ3LCAweDVERDcsIDB4NDEyQywgMHg1REQ4LCAweDVERDgsIDB4MzQxNCwgMHg1RERCLCAweDVEREIsIDB4MDIyNiwKKyAgICAweDVEREQsIDB4NURERCwgMHgwMjg3LCAweDVEREUsIDB4NURERSwgMHgwM0M4LCAweDVEREYsIDB4NURERiwgMHgxN0UzLAorICAgIDB4NURFMCwgMHg1REUwLCAweDE4NzEsIDB4NURFMSwgMHg1REUxLCAweDA1MUEsIDB4NURFMiwgMHg1REUyLCAweDBBNkIsCisgICAgMHg1REU1LCAweDVERTUsIDB4MDI4OCwgMHg1REU2LCAweDVERTYsIDB4MDMzOCwgMHg1REU3LCAweDVERTcsIDB4MDMzNywKKyAgICAweDVERTgsIDB4NURFOCwgMHgwMzM2LCAweDVERUIsIDB4NURFQiwgMHgwNDhELCAweDVERUUsIDB4NURFRSwgMHgwOEE4LAorICAgIDB4NURGMCwgMHg1REYwLCAweDIzQzYsIDB4NURGMSwgMHg1REYzLCAweDAyODksIDB4NURGNCwgMHg1REY0LCAweDAyQ0IsCisgICAgMHg1REY1LCAweDVERjUsIDB4M0Y2MSwgMHg1REY3LCAweDVERjcsIDB4MDcwRCwgMHg1REY5LCAweDVERjksIDB4MUFDOSwKKyAgICAweDVERkQsIDB4NURGRCwgMHgwQzM2LCAweDVERkUsIDB4NURGRSwgMHgwMjhDLCAweDVERkYsIDB4NURGRiwgMHgxNzg4LAorICAgIDB4NUUwMiwgMHg1RTAzLCAweDAzMzksIDB4NUUwNCwgMHg1RTA0LCAweDE3QTQsIDB4NUUwNiwgMHg1RTA2LCAweDAzQzksCisgICAgMHg1RTA5LCAweDVFMDksIDB4NDE0MCwgMHg1RTBBLCAweDVFMEEsIDB4MTg3MiwgMHg1RTBCLCAweDVFMEIsIDB4M0Q4QSwKKyAgICAweDVFMEMsIDB4NUUwQywgMHgwNDhFLCAweDVFMEUsIDB4NUUwRSwgMHgxODczLCAweDVFMTEsIDB4NUUxMSwgMHgwNUIwLAorICAgIDB4NUUxMiwgMHg1RTEyLCAweDNGMkUsIDB4NUUxNCwgMHg1RTE0LCAweDE5NzAsIDB4NUUxNSwgMHg1RTE1LCAweDA1QUUsCisgICAgMHg1RTE2LCAweDVFMTYsIDB4MDVBRCwgMHg1RTE3LCAweDVFMTcsIDB4MTk2RiwgMHg1RTE4LCAweDVFMTgsIDB4MDVBQiwKKyAgICAweDVFMTksIDB4NUUxOSwgMHgxOTcxLCAweDVFMUEsIDB4NUUxQSwgMHgwNUFDLCAweDVFMUIsIDB4NUUxQiwgMHgwNUFGLAorICAgIDB4NUUxRCwgMHg1RTFELCAweDA3MEUsIDB4NUUxRiwgMHg1RTFGLCAweDA3MTAsIDB4NUUyMCwgMHg1RTIwLCAweDFBQ0QsCisgICAgMHg1RTIxLCAweDVFMjMsIDB4MUFDQSwgMHg1RTI0LCAweDVFMjQsIDB4MUFDRSwgMHg1RTI1LCAweDVFMjUsIDB4MDcwRiwKKyAgICAweDVFMjgsIDB4NUUyOCwgMHgxQzg3LCAweDVFMjksIDB4NUUyOSwgMHgxQzg2LCAweDVFMkIsIDB4NUUyQiwgMHgwOEFBLAorICAgIDB4NUUyRCwgMHg1RTJELCAweDA4QTksIDB4NUUyRSwgMHg1RTJFLCAweDQxMzUsIDB4NUUzMywgMHg1RTMzLCAweDBBNkUsCisgICAgMHg1RTM0LCAweDVFMzQsIDB4MUVDRCwgMHg1RTM2LCAweDVFMzYsIDB4MEE2RCwgMHg1RTM3LCAweDVFMzcsIDB4MEE2RiwKKyAgICAweDVFMzgsIDB4NUUzOCwgMHgwQTZDLCAweDVFM0QsIDB4NUUzRCwgMHgwQzM4LCAweDVFM0UsIDB4NUUzRSwgMHgxRUNDLAorICAgIDB4NUU0MCwgMHg1RTQwLCAweDBDMzksIDB4NUU0MSwgMHg1RTQxLCAweDIxMkUsIDB4NUU0MiwgMHg1RTQyLCAweDQzQTAsCisgICAgMHg1RTQzLCAweDVFNDMsIDB4MEMzQSwgMHg1RTQ0LCAweDVFNDQsIDB4MjEyRCwgMHg1RTQ1LCAweDVFNDUsIDB4MEMzNywKKyAgICAweDVFNDgsIDB4NUU0OCwgMHgzQTJDLCAweDVFNEEsIDB4NUU0QSwgMHgyM0M5LCAweDVFNEIsIDB4NUU0QiwgMHgyM0NCLAorICAgIDB4NUU0QywgMHg1RTRDLCAweDBERkYsIDB4NUU0RCwgMHg1RTRELCAweDIzQ0EsIDB4NUU0RSwgMHg1RTRFLCAweDIzQzgsCisgICAgMHg1RTRGLCAweDVFNEYsIDB4MjNDNywgMHg1RTUzLCAweDVFNTMsIDB4MjY3NCwgMHg1RTU0LCAweDVFNTQsIDB4MEZDOSwKKyAgICAweDVFNTUsIDB4NUU1NSwgMHgwRkM3LCAweDVFNTcsIDB4NUU1NywgMHgwRkM4LCAweDVFNTgsIDB4NUU1OSwgMHgyNjcyLAorICAgIDB4NUU1QiwgMHg1RTVCLCAweDBGQzUsIDB4NUU1QywgMHg1RTVDLCAweDI4QzcsIDB4NUU1RCwgMHg1RTVELCAweDI4QzUsCisgICAgMHg1RTVFLCAweDVFNUUsIDB4M0EyQiwgMHg1RTVGLCAweDVFNUYsIDB4MTEzOSwgMHg1RTYwLCAweDVFNjAsIDB4MjhDNiwKKyAgICAweDVFNjEsIDB4NUU2MSwgMHgxMTNBLCAweDVFNjIsIDB4NUU2MiwgMHgxMTM4LCAweDVFNjMsIDB4NUU2MywgMHgwRkM2LAorICAgIDB4NUU2NiwgMHg1RTY2LCAweDJCMzgsIDB4NUU2NywgMHg1RTY4LCAweDJCMzYsIDB4NUU2OSwgMHg1RTY5LCAweDI4QzQsCisgICAgMHg1RTZBLCAweDVFNkEsIDB4MkQ1RCwgMHg1RTZCLCAweDVFNkIsIDB4MTNDRCwgMHg1RTZDLCAweDVFNkMsIDB4MkQ1QywKKyAgICAweDVFNkQsIDB4NUU2RSwgMHgyRjFDLCAweDVFNkYsIDB4NUU2RiwgMHgyQjM5LCAweDVFNzAsIDB4NUU3MCwgMHgzMDhELAorICAgIDB4NUU3MiwgMHg1RTcyLCAweDAyOEQsIDB4NUU3MywgMHg1RTczLCAweDAzM0IsIDB4NUU3NCwgMHg1RTc0LCAweDAzQ0IsCisgICAgMHg1RTc1LCAweDVFNzUsIDB4MTdFNCwgMHg1RTc2LCAweDVFNzYsIDB4MDNDQSwgMHg1RTc4LCAweDVFNzgsIDB4MDVCMSwKKyAgICAweDVFNzksIDB4NUU3OSwgMHgwRTAwLCAweDVFN0EsIDB4NUU3QSwgMHgwMjI3LCAweDVFN0IsIDB4NUU3QiwgMHgwMkNDLAorICAgIDB4NUU3QywgMHg1RTdDLCAweDAzM0MsIDB4NUU3RCwgMHg1RTdELCAweDA3MTEsIDB4NUU3RSwgMHg1RTdFLCAweDBDM0IsCisgICAgMHg1RTdGLCAweDVFN0YsIDB4MDIyOCwgMHg1RTgwLCAweDVFODAsIDB4MTdBNSwgMHg1RTgyLCAweDVFODIsIDB4MTdBNiwKKyAgICAweDVFODMsIDB4NUU4MywgMHg0MTA4LCAweDVFODQsIDB4NUU4NCwgMHgxN0U1LCAweDVFODYsIDB4NUU4NiwgMHg0NTUyLAorICAgIDB4NUU4NywgMHg1RTg3LCAweDA0OTAsIDB4NUU4OCwgMHg1RTg4LCAweDE4NzcsIDB4NUU4OSwgMHg1RTg5LCAweDE4NzUsCisgICAgMHg1RThBLCAweDVFOEEsIDB4MDQ5MSwgMHg1RThCLCAweDVFOEIsIDB4MTg3NCwgMHg1RThDLCAweDVFOEMsIDB4MTg3NiwKKyAgICAweDVFOEQsIDB4NUU4RCwgMHgxODc4LCAweDVFOEYsIDB4NUU4RiwgMHgwNDhGLCAweDVFOTUsIDB4NUU5NiwgMHgwNUI1LAorICAgIDB4NUU5NywgMHg1RTk3LCAweDA1QjMsIDB4NUU5QSwgMHg1RTlBLCAweDA1QjIsIDB4NUU5QiwgMHg1RTlCLCAweDFBRDIsCisgICAgMHg1RTlDLCAweDVFOUMsIDB4MDVCNCwgMHg1RUEwLCAweDVFQTAsIDB4MDcxMiwgMHg1RUEyLCAweDVFQTIsIDB4MUFEMSwKKyAgICAweDVFQTMsIDB4NUVBMywgMHgxQUQzLCAweDVFQTQsIDB4NUVBNCwgMHgxQUQwLCAweDVFQTUsIDB4NUVBNSwgMHgxQUQ0LAorICAgIDB4NUVBNiwgMHg1RUE2LCAweDA3MTMsIDB4NUVBNywgMHg1RUE3LCAweDA4QUQsIDB4NUVBOCwgMHg1RUE4LCAweDFDODgsCisgICAgMHg1RUFBLCAweDVFQUEsIDB4MUM4QSwgMHg1RUFCLCAweDVFQUIsIDB4MDhBQiwgMHg1RUFDLCAweDVFQUMsIDB4MUM4QiwKKyAgICAweDVFQUQsIDB4NUVBRCwgMHgwOEFDLCAweDVFQUUsIDB4NUVBRSwgMHgxQzg5LCAweDVFQjAsIDB4NUVCMCwgMHgxQUNGLAorICAgIDB4NUVCMSwgMHg1RUIxLCAweDFFQ0UsIDB4NUVCMiwgMHg1RUIzLCAweDFFRDEsIDB4NUVCNCwgMHg1RUI0LCAweDFFQ0YsCisgICAgMHg1RUI1LCAweDVFQjUsIDB4MEE3MywgMHg1RUI2LCAweDVFQjYsIDB4MEE3MiwgMHg1RUI3LCAweDVFQjgsIDB4MEE3MCwKKyAgICAweDVFQjksIDB4NUVCOSwgMHgxRUQwLCAweDVFQkQsIDB4NUVCRCwgMHg0M0JELCAweDVFQkUsIDB4NUVCRSwgMHgwQTc0LAorICAgIDB4NUVDMSwgMHg1RUMyLCAweDBDM0QsIDB4NUVDNCwgMHg1RUM0LCAweDBDM0YsIDB4NUVDNSwgMHg1RUM1LCAweDIzQ0MsCisgICAgMHg1RUM2LCAweDVFQzYsIDB4MjNDRSwgMHg1RUM3LCAweDVFQzcsIDB4MjNEMCwgMHg1RUM4LCAweDVFQzgsIDB4MEUwMiwKKyAgICAweDVFQzksIDB4NUVDOSwgMHgwRTAxLCAweDVFQ0EsIDB4NUVDQSwgMHgwQzNDLCAweDVFQ0IsIDB4NUVDQiwgMHgyM0NGLAorICAgIDB4NUVDQywgMHg1RUNDLCAweDIzQ0QsIDB4NUVDRCwgMHg1RUNELCAweDNBMzAsIDB4NUVDRSwgMHg1RUNFLCAweDI2NzgsCisgICAgMHg1RUQwLCAweDVFRDAsIDB4NDEzRCwgMHg1RUQxLCAweDVFRDEsIDB4MjY3NiwgMHg1RUQyLCAweDVFRDIsIDB4MjY3QywKKyAgICAweDVFRDMsIDB4NUVEMywgMHgwRkNBLCAweDVFRDQsIDB4NUVENCwgMHgyNjdELCAweDVFRDUsIDB4NUVENSwgMHgyNjdBLAorICAgIDB4NUVENiwgMHg1RUQ2LCAweDBGQ0IsIDB4NUVENywgMHg1RUQ3LCAweDI2NzcsIDB4NUVEOCwgMHg1RUQ4LCAweDI2NzUsCisgICAgMHg1RUQ5LCAweDVFRDksIDB4MjY3QiwgMHg1RURBLCAweDVFREEsIDB4MTEzQywgMHg1RURCLCAweDVFREIsIDB4MjhDOSwKKyAgICAweDVFREMsIDB4NUVEQywgMHgyNjc5LCAweDVFREQsIDB4NUVERCwgMHgxMTNFLCAweDVFREUsIDB4NUVERSwgMHgyOENBLAorICAgIDB4NUVERiwgMHg1RURGLCAweDExM0QsIDB4NUVFMCwgMHg1RUUwLCAweDExNDAsIDB4NUVFMSwgMHg1RUUxLCAweDI4Q0IsCisgICAgMHg1RUUyLCAweDVFRTIsIDB4MTEzQiwgMHg1RUUzLCAweDVFRTMsIDB4MTEzRiwgMHg1RUU1LCAweDVFRTUsIDB4MkIzRSwKKyAgICAweDVFRTYsIDB4NUVFNiwgMHgyQjNDLCAweDVFRTcsIDB4NUVFNywgMHgyQjNCLCAweDVFRTgsIDB4NUVFOCwgMHgyQjNELAorICAgIDB4NUVFOSwgMHg1RUU5LCAweDJCM0EsIDB4NUVFQywgMHg1RUVDLCAweDE1N0QsIDB4NUVFRSwgMHg1RUVGLCAweDMxQ0YsCisgICAgMHg1RUYxLCAweDVFRjEsIDB4MzJEMCwgMHg1RUYyLCAweDVFRjIsIDB4MzM4MCwgMHg1RUYzLCAweDVFRjMsIDB4MTc0MiwKKyAgICAweDVFRjQsIDB4NUVGNCwgMHgwMjI5LCAweDVFRjYsIDB4NUVGNiwgMHgwNUI3LCAweDVFRjcsIDB4NUVGNywgMHgwNDkyLAorICAgIDB4NUVGOCwgMHg1RUY4LCAweDM4NkYsIDB4NUVGOSwgMHg1RUY5LCAweDQxNDMsIDB4NUVGQSwgMHg1RUZBLCAweDA3MTQsCisgICAgMHg1RUZCLCAweDVFRkIsIDB4NDE0NCwgMHg1RUZDLCAweDVFRkMsIDB4NDE0NiwgMHg1RUZFLCAweDVFRkUsIDB4MDI4RSwKKyAgICAweDVFRkYsIDB4NUVGRiwgMHgwMkNELCAweDVGMDEsIDB4NUYwMSwgMHgwMzNELCAweDVGMDIsIDB4NUYwMiwgMHgxN0U2LAorICAgIDB4NUYwNCwgMHg1RjA0LCAweDA0OTMsIDB4NUYwNSwgMHg1RjA1LCAweDE4NzksIDB4NUYwNywgMHg1RjA3LCAweDFBRDUsCisgICAgMHg1RjA4LCAweDVGMDgsIDB4MDcxNSwgMHg1RjBBLCAweDVGMEEsIDB4MEZDQywgMHg1RjBCLCAweDVGMEIsIDB4MDI4RiwKKyAgICAweDVGMEMsIDB4NUYwQywgMHgzQTNFLCAweDVGMEQsIDB4NUYwRCwgMHg0MTQ5LCAweDVGMEUsIDB4NUYwRSwgMHgzQTNGLAorICAgIDB4NUYwRiwgMHg1RjBGLCAweDAzQ0MsIDB4NUYxMiwgMHg1RjEyLCAweDBFMDMsIDB4NUYxMywgMHg1RjEzLCAweDAyOTAsCisgICAgMHg1RjE0LCAweDVGMTUsIDB4MDJDRSwgMHg1RjE3LCAweDVGMTcsIDB4MDMzRiwgMHg1RjE4LCAweDVGMTgsIDB4MDMzRSwKKyAgICAweDVGMUEsIDB4NUYxQSwgMHgxN0U3LCAweDVGMUIsIDB4NUYxQiwgMHgwM0NELCAweDVGMUQsIDB4NUYxRCwgMHgxODdBLAorICAgIDB4NUYxRiwgMHg1RjFGLCAweDA0OTQsIDB4NUYyMiwgMHg1RjI0LCAweDE5NzMsIDB4NUYyNSwgMHg1RjI1LCAweDQ2MzAsCisgICAgMHg1RjI2LCAweDVGMjcsIDB4MDVCOCwgMHg1RjI4LCAweDVGMjgsIDB4MTk3MiwgMHg1RjI5LCAweDVGMjksIDB4MDVCQSwKKyAgICAweDVGMkQsIDB4NUYyRCwgMHgwNzE2LCAweDVGMkUsIDB4NUYyRSwgMHgxQUQ2LCAweDVGMzAsIDB4NUYzMCwgMHgxQzhELAorICAgIDB4NUYzMSwgMHg1RjMxLCAweDA4QUUsIDB4NUYzMywgMHg1RjMzLCAweDFDOEMsIDB4NUYzNSwgMHg1RjM1LCAweDBBNzUsCisgICAgMHg1RjM2LCAweDVGMzYsIDB4MUVEMywgMHg1RjM3LCAweDVGMzcsIDB4MEE3NiwgMHg1RjM4LCAweDVGMzgsIDB4MUVENCwKKyAgICAweDVGM0EsIDB4NUYzQSwgMHg0MTRFLCAweDVGM0MsIDB4NUYzQywgMHgwQzQwLCAweDVGNDAsIDB4NUY0MCwgMHgyM0QxLAorICAgIDB4NUY0MywgMHg1RjQzLCAweDI2N0YsIDB4NUY0NCwgMHg1RjQ0LCAweDI2N0UsIDB4NUY0NiwgMHg1RjQ2LCAweDBGQ0QsCisgICAgMHg1RjQ4LCAweDVGNDgsIDB4MTE0MSwgMHg1RjQ5LCAweDVGNDksIDB4MjhDQywgMHg1RjRBLCAweDVGNEEsIDB4MTJBRCwKKyAgICAweDVGNEIsIDB4NUY0QiwgMHgyQjNGLCAweDVGNEMsIDB4NUY0QywgMHgxM0NFLCAweDVGNEQsIDB4NUY0RCwgMHgzQkE1LAorICAgIDB4NUY0RSwgMHg1RjRFLCAweDE2QzMsIDB4NUY0RiwgMHg1RjRGLCAweDM0MTYsIDB4NUY1MCwgMHg1RjUwLCAweDAyMkEsCisgICAgMHg1RjUxLCAweDVGNTEsIDB4NDRFOSwgMHg1RjU0LCAweDVGNTQsIDB4MTk3NiwgMHg1RjU2LCAweDVGNTYsIDB4MUFENywKKyAgICAweDVGNTcsIDB4NUY1NywgMHgwQTc3LCAweDVGNTgsIDB4NUY1OCwgMHgyMTJGLCAweDVGNTksIDB4NUY1OSwgMHgwRTA0LAorICAgIDB4NUY1QywgMHg1RjVDLCAweDNENUEsIDB4NUY1RCwgMHg1RjVELCAweDE0Q0YsIDB4NUY2MSwgMHg1RjYxLCAweDAyMkIsCisgICAgMHg1RjYyLCAweDVGNjIsIDB4MDQ5NiwgMHg1RjYzLCAweDVGNjMsIDB4NDE1MiwgMHg1RjY0LCAweDVGNjQsIDB4MDQ5NSwKKyAgICAweDVGNjUsIDB4NUY2NSwgMHgwNzE3LCAweDVGNjcsIDB4NUY2NywgMHgxQzhFLCAweDVGNjksIDB4NUY2OSwgMHgwQTc5LAorICAgIDB4NUY2QSwgMHg1RjZBLCAweDBCODksIDB4NUY2QiwgMHg1RjZCLCAweDBBN0EsIDB4NUY2QywgMHg1RjZDLCAweDBBNzgsCisgICAgMHg1RjZELCAweDVGNkQsIDB4MEM0MSwgMHg1RjZGLCAweDVGNkYsIDB4MjY4MCwgMHg1RjcwLCAweDVGNzAsIDB4MEZDRSwKKyAgICAweDVGNzEsIDB4NUY3MSwgMHgxMTQyLCAweDVGNzIsIDB4NUY3MiwgMHg0MTU0LCAweDVGNzMsIDB4NUY3MywgMHgxNzc3LAorICAgIDB4NUY3NCwgMHg1Rjc0LCAweDE3RTgsIDB4NUY3NiwgMHg1Rjc2LCAweDE4N0MsIDB4NUY3NywgMHg1Rjc3LCAweDA0OTcsCisgICAgMHg1Rjc4LCAweDVGNzgsIDB4MTg3QiwgMHg1Rjc5LCAweDVGNzksIDB4MDQ5OCwgMHg1RjdCLCAweDVGN0IsIDB4NDA1OCwKKyAgICAweDVGN0MsIDB4NUY3QywgMHgwNUJFLCAweDVGN0QsIDB4NUY3RCwgMHgxOTc5LCAweDVGN0UsIDB4NUY3RSwgMHgxOTc4LAorICAgIDB4NUY3RiwgMHg1RjdGLCAweDA1QkQsIDB4NUY4MCwgMHg1RjgxLCAweDA1QkIsIDB4NUY4MiwgMHg1RjgyLCAweDE5NzcsCisgICAgMHg1RjgzLCAweDVGODMsIDB4NDYzMSwgMHg1Rjg1LCAweDVGODUsIDB4MDcxOSwgMHg1Rjg2LCAweDVGODYsIDB4MUFEOCwKKyAgICAweDVGODcsIDB4NUY4NywgMHgwNzFDLCAweDVGODgsIDB4NUY4OCwgMHgwNzE4LCAweDVGODksIDB4NUY4OSwgMHgwNzFFLAorICAgIDB4NUY4QSwgMHg1RjhCLCAweDA3MUEsIDB4NUY4QywgMHg1RjhDLCAweDA3MUQsIDB4NUY5MCwgMHg1RjkwLCAweDA4QjEsCisgICAgMHg1RjkxLCAweDVGOTEsIDB4MDhCMCwgMHg1RjkyLCAweDVGOTIsIDB4MDhBRiwgMHg1Rjk2LCAweDVGOTYsIDB4MUVENiwKKyAgICAweDVGOTcsIDB4NUY5NywgMHgwQTdCLCAweDVGOTgsIDB4NUY5OCwgMHgwQTdFLCAweDVGOTksIDB4NUY5OSwgMHgwQTdDLAorICAgIDB4NUY5QiwgMHg1RjlCLCAweDFFRDUsIDB4NUY5QywgMHg1RjlDLCAweDBBODEsIDB4NUY5RSwgMHg1RjlFLCAweDBBN0QsCisgICAgMHg1RjlGLCAweDVGOUYsIDB4MUVENywgMHg1RkEwLCAweDVGQTAsIDB4MEE4MCwgMHg1RkExLCAweDVGQTEsIDB4MEE3RiwKKyAgICAweDVGQTQsIDB4NUZBNCwgMHg0MDJDLCAweDVGQTUsIDB4NUZBNSwgMHgyMTMxLCAweDVGQTYsIDB4NUZBNiwgMHgyMTMwLAorICAgIDB4NUZBNywgMHg1RkE3LCAweDQxNTcsIDB4NUZBOCwgMHg1RkE4LCAweDBDNDQsIDB4NUZBOSwgMHg1RkFBLCAweDBDNDIsCisgICAgMHg1RkFCLCAweDVGQUIsIDB4MjEzMiwgMHg1RkFDLCAweDVGQUMsIDB4MEUwNSwgMHg1RkFELCAweDVGQUQsIDB4MjNEMywKKyAgICAweDVGQUUsIDB4NUZBRSwgMHgwRTA2LCAweDVGQUYsIDB4NUZBRiwgMHgyM0QyLCAweDVGQjEsIDB4NUZCMSwgMHgzRDk4LAorICAgIDB4NUZCMiwgMHg1RkIyLCAweDI4Q0QsIDB4NUZCNSwgMHg1RkI1LCAweDExNDQsIDB4NUZCNiwgMHg1RkI2LCAweDI2ODEsCisgICAgMHg1RkI3LCAweDVGQjcsIDB4MTE0MywgMHg1RkI5LCAweDVGQjksIDB4MEZDRiwgMHg1RkJBLCAweDVGQkEsIDB4M0Y5RiwKKyAgICAweDVGQkIsIDB4NUZCQiwgMHgyQjQxLCAweDVGQkMsIDB4NUZCQywgMHgyQjQwLCAweDVGQkQsIDB4NUZCRCwgMHgxM0NGLAorICAgIDB4NUZCRSwgMHg1RkJFLCAweDJENUUsIDB4NUZCRiwgMHg1RkJGLCAweDMwOEUsIDB4NUZDMCwgMHg1RkMxLCAweDMxRDEsCisgICAgMHg1RkMzLCAweDVGQzMsIDB4MDJEMCwgMHg1RkM0LCAweDVGQzQsIDB4NDRFQSwgMHg1RkM1LCAweDVGQzUsIDB4MDM0MCwKKyAgICAweDVGQzksIDB4NUZDOSwgMHgxN0E3LCAweDVGQ0MsIDB4NUZDQywgMHgwNDlBLCAweDVGQ0QsIDB4NUZDRCwgMHgwNDlDLAorICAgIDB4NUZDRiwgMHg1RkNGLCAweDE3RUIsIDB4NUZEMCwgMHg1RkQwLCAweDE4N0YsIDB4NUZEMSwgMHg1RkQxLCAweDE4N0UsCisgICAgMHg1RkQyLCAweDVGRDIsIDB4MTg3RCwgMHg1RkQ0LCAweDVGRDQsIDB4MTdFQSwgMHg1RkQ1LCAweDVGRDUsIDB4MTdFOSwKKyAgICAweDVGRDYsIDB4NUZENiwgMHgwM0NGLCAweDVGRDcsIDB4NUZENywgMHgwNDlCLCAweDVGRDgsIDB4NUZEOCwgMHgwNDk5LAorICAgIDB4NUZEOSwgMHg1RkQ5LCAweDAzQ0UsIDB4NUZEQiwgMHg1RkRCLCAweDNBNEEsIDB4NUZERCwgMHg1RkRELCAweDA1QkYsCisgICAgMHg1RkRFLCAweDVGREUsIDB4MTk3QSwgMHg1RkRGLCAweDVGREYsIDB4NDFBRiwgMHg1RkUwLCAweDVGRTAsIDB4MDVDMCwKKyAgICAweDVGRTEsIDB4NUZFMSwgMHgxODg0LCAweDVGRTMsIDB4NUZFMywgMHgxODg2LCAweDVGRTQsIDB4NUZFNCwgMHgxODg1LAorICAgIDB4NUZFNSwgMHg1RkU1LCAweDE5N0IsIDB4NUZFOCwgMHg1RkU4LCAweDE4ODEsIDB4NUZFQSwgMHg1RkVBLCAweDA0QTAsCisgICAgMHg1RkVCLCAweDVGRUIsIDB4MDQ5RSwgMHg1RkVELCAweDVGRUQsIDB4MTg4MCwgMHg1RkVFLCAweDVGRUUsIDB4MTg4MiwKKyAgICAweDVGRUYsIDB4NUZFRiwgMHgxODg4LCAweDVGRjEsIDB4NUZGMSwgMHgwNDlELCAweDVGRjMsIDB4NUZGMywgMHgxODgzLAorICAgIDB4NUZGNCwgMHg1RkY0LCAweDE4OEMsIDB4NUZGNSwgMHg1RkY1LCAweDA1QzIsIDB4NUZGNywgMHg1RkY3LCAweDE4ODksCisgICAgMHg1RkY4LCAweDVGRjgsIDB4MDQ5RiwgMHg1RkZBLCAweDVGRkEsIDB4MTg4NywgMHg1RkZCLCAweDVGRkIsIDB4MTg4QSwKKyAgICAweDVGRkQsIDB4NUZGRCwgMHgwNUMxLCAweDVGRkYsIDB4NUZGRiwgMHgwNUMzLCAweDYwMDAsIDB4NjAwMCwgMHgxODhCLAorICAgIDB4NjAwOSwgMHg2MDA5LCAweDE5OEYsIDB4NjAwQSwgMHg2MDBBLCAweDE5ODIsIDB4NjAwQiwgMHg2MDBCLCAweDE5ODAsCisgICAgMHg2MDBDLCAweDYwMEMsIDB4MTk4RSwgMHg2MDBELCAweDYwMEQsIDB4MTk4OSwgMHg2MDBFLCAweDYwMEUsIDB4MDcyMywKKyAgICAweDYwMEYsIDB4NjAwRiwgMHgwNUM0LCAweDYwMTAsIDB4NjAxMCwgMHgxOThBLCAweDYwMTEsIDB4NjAxMSwgMHgxOThELAorICAgIDB4NjAxMiwgMHg2MDEyLCAweDA3MUYsIDB4NjAxMywgMHg2MDEzLCAweDE5OEMsIDB4NjAxNCwgMHg2MDE0LCAweDA1QzUsCisgICAgMHg2MDE1LCAweDYwMTUsIDB4MDVDQSwgMHg2MDE2LCAweDYwMTYsIDB4MDVDOCwgMHg2MDE3LCAweDYwMTcsIDB4MTk4MywKKyAgICAweDYwMTksIDB4NjAxOSwgMHgxOTdFLCAweDYwMUEsIDB4NjAxQSwgMHgxOTg1LCAweDYwMUIsIDB4NjAxQiwgMHgwNUNGLAorICAgIDB4NjAxQywgMHg2MDFDLCAweDE5OTAsIDB4NjAxRCwgMHg2MDFELCAweDA3MjAsIDB4NjAxRSwgMHg2MDFFLCAweDE5ODYsCisgICAgMHg2MDIwLCAweDYwMjAsIDB4MDcyMSwgMHg2MDIxLCAweDYwMjEsIDB4MDVDQiwgMHg2MDIyLCAweDYwMjIsIDB4MTk4OCwKKyAgICAweDYwMjMsIDB4NjAyMywgMHg0MTg1LCAweDYwMjQsIDB4NjAyNCwgMHgxQUU3LCAweDYwMjUsIDB4NjAyNSwgMHgwNzIyLAorICAgIDB4NjAyNiwgMHg2MDI2LCAweDE5N0QsIDB4NjAyNywgMHg2MDI3LCAweDA1Q0MsIDB4NjAyOCwgMHg2MDI4LCAweDA3MjQsCisgICAgMHg2MDI5LCAweDYwMjksIDB4MDVDRCwgMHg2MDJBLCAweDYwMkEsIDB4MDVDOSwgMHg2MDJCLCAweDYwMkIsIDB4MDVDRSwKKyAgICAweDYwMkMsIDB4NjAyQywgMHgxOTg3LCAweDYwMkQsIDB4NjAyRCwgMHgxOTdDLCAweDYwMkUsIDB4NjAyRSwgMHgxOThCLAorICAgIDB4NjAyRiwgMHg2MDJGLCAweDA1QzYsIDB4NjAzMSwgMHg2MDMxLCAweDQxNjEsIDB4NjAzMiwgMHg2MDMyLCAweDE5N0YsCisgICAgMHg2MDMzLCAweDYwMzMsIDB4MTk4NCwgMHg2MDM0LCAweDYwMzQsIDB4MTk4MSwgMHg2MDM1LCAweDYwMzUsIDB4MDVDNywKKyAgICAweDYwMzcsIDB4NjAzNywgMHgxQUQ5LCAweDYwMzksIDB4NjAzOSwgMHgxQURBLCAweDYwM0IsIDB4NjAzQiwgMHg0NTUzLAorICAgIDB4NjA0MCwgMHg2MDQwLCAweDFBRTQsIDB4NjA0MSwgMHg2MDQxLCAweDFDOTIsIDB4NjA0MiwgMHg2MDQyLCAweDFBRTUsCisgICAgMHg2MDQzLCAweDYwNDMsIDB4MDcyQSwgMHg2MDQ0LCAweDYwNDQsIDB4MUFFOCwgMHg2MDQ1LCAweDYwNDUsIDB4MUFERSwKKyAgICAweDYwNDYsIDB4NjA0NiwgMHgwNzI5LCAweDYwNDcsIDB4NjA0NywgMHgxQUUwLCAweDYwNDksIDB4NjA0OSwgMHgxQUUxLAorICAgIDB4NjA0QSwgMHg2MDRBLCAweDQwNzQsIDB4NjA0QywgMHg2MDRDLCAweDFBRTMsIDB4NjA0RCwgMHg2MDRELCAweDA3MjUsCisgICAgMHg2MDUwLCAweDYwNTAsIDB4MDhCNSwgMHg2MDUyLCAweDYwNTIsIDB4MzZFQywgMHg2MDUzLCAweDYwNTMsIDB4MUFERiwKKyAgICAweDYwNTQsIDB4NjA1NCwgMHgxQURCLCAweDYwNTUsIDB4NjA1NSwgMHgwOEI2LCAweDYwNTgsIDB4NjA1OCwgMHgxQUU5LAorICAgIDB4NjA1OSwgMHg2MDU5LCAweDA4QjIsIDB4NjA1QSwgMHg2MDVBLCAweDFDOTAsIDB4NjA1QiwgMHg2MDVCLCAweDFBRTIsCisgICAgMHg2MDVELCAweDYwNUQsIDB4MUM4RiwgMHg2MDVFLCAweDYwNUUsIDB4MUFERCwgMHg2MDVGLCAweDYwNUYsIDB4MUFFNiwKKyAgICAweDYwNjIsIDB4NjA2MiwgMHgwNzI4LCAweDYwNjMsIDB4NjA2MywgMHgwOEIzLCAweDYwNjQsIDB4NjA2NCwgMHgwNzJFLAorICAgIDB4NjA2NSwgMHg2MDY1LCAweDA4QjQsIDB4NjA2NiwgMHg2MDY2LCAweDFBRUEsIDB4NjA2NywgMHg2MDY3LCAweDFDOTEsCisgICAgMHg2MDY4LCAweDYwNjgsIDB4MDcyNywgMHg2MDY5LCAweDYwNjksIDB4MDhCOCwgMHg2MDZBLCAweDYwNkEsIDB4MDcyRCwKKyAgICAweDYwNkIsIDB4NjA2QiwgMHgwNzJDLCAweDYwNkMsIDB4NjA2QywgMHgwNzJCLCAweDYwNkQsIDB4NjA2RCwgMHgwOEI3LAorICAgIDB4NjA2RSwgMHg2MDZFLCAweDFBRUIsIDB4NjA2RiwgMHg2MDZGLCAweDA4QjksIDB4NjA3MCwgMHg2MDcwLCAweDA3MjYsCisgICAgMHg2MDcyLCAweDYwNzIsIDB4MUFEQywgMHg2MDc1LCAweDYwNzUsIDB4M0E1NiwgMHg2MDc3LCAweDYwNzcsIDB4NDAwNSwKKyAgICAweDYwN0UsIDB4NjA3RSwgMHgzQTQ3LCAweDYwN0YsIDB4NjA3RiwgMHgwQTgyLCAweDYwODAsIDB4NjA4MCwgMHgxQzk1LAorICAgIDB4NjA4MSwgMHg2MDgxLCAweDFDOTcsIDB4NjA4MywgMHg2MDgzLCAweDFDOTksIDB4NjA4NCwgMHg2MDg0LCAweDA4QkEsCisgICAgMHg2MDg1LCAweDYwODUsIDB4MDhDMCwgMHg2MDg2LCAweDYwODYsIDB4MUVEQSwgMHg2MDg3LCAweDYwODcsIDB4MUM5RCwKKyAgICAweDYwODgsIDB4NjA4OCwgMHgxQzk0LCAweDYwODksIDB4NjA4OSwgMHgwQTg0LCAweDYwOEEsIDB4NjA4QSwgMHgxRUQ4LAorICAgIDB4NjA4QywgMHg2MDhDLCAweDA4QkYsIDB4NjA4RCwgMHg2MDhELCAweDA4QkQsIDB4NjA4RSwgMHg2MDhFLCAweDFDOUYsCisgICAgMHg2MDkwLCAweDYwOTAsIDB4MUVEOSwgMHg2MDkyLCAweDYwOTIsIDB4MUM5NiwgMHg2MDk0LCAweDYwOTQsIDB4MDhCRSwKKyAgICAweDYwOTUsIDB4NjA5NSwgMHgxQzlBLCAweDYwOTYsIDB4NjA5NiwgMHgwOEMxLCAweDYwOTcsIDB4NjA5NywgMHgxQzlDLAorICAgIDB4NjA5QSwgMHg2MDlBLCAweDA4QkMsIDB4NjA5QiwgMHg2MDlCLCAweDFDOUIsIDB4NjA5QywgMHg2MDlDLCAweDFDOUUsCisgICAgMHg2MDlELCAweDYwOUQsIDB4MUM5OCwgMHg2MDlFLCAweDYwOUUsIDB4NDE2QSwgMHg2MDlGLCAweDYwOUYsIDB4MDhCQiwKKyAgICAweDYwQTAsIDB4NjBBMCwgMHgwQTg1LCAweDYwQTIsIDB4NjBBMiwgMHgxQzkzLCAweDYwQTMsIDB4NjBBMywgMHgwQTgzLAorICAgIDB4NjBBNCwgMHg2MEE0LCAweDQwMDEsIDB4NjBBNywgMHg2MEE3LCAweDNBREMsIDB4NjBBOCwgMHg2MEE4LCAweDBBODYsCisgICAgMHg2MEIwLCAweDYwQjAsIDB4MUVEQywgMHg2MEIxLCAweDYwQjEsIDB4MUVFNSwgMHg2MEIyLCAweDYwQjIsIDB4MEM0NywKKyAgICAweDYwQjMsIDB4NjBCMywgMHg0MTZDLCAweDYwQjQsIDB4NjBCNCwgMHgwQTg4LCAweDYwQjUsIDB4NjBCNSwgMHgwQThELAorICAgIDB4NjBCNiwgMHg2MEI2LCAweDBDNDgsIDB4NjBCNywgMHg2MEI3LCAweDFFRTcsIDB4NjBCOCwgMHg2MEI4LCAweDBBOTQsCisgICAgMHg2MEI5LCAweDYwQjksIDB4MjEzNCwgMHg2MEJBLCAweDYwQkEsIDB4MUVERCwgMHg2MEJCLCAweDYwQkIsIDB4MEE4QywKKyAgICAweDYwQkMsIDB4NjBCQywgMHgwQThGLCAweDYwQkQsIDB4NjBCRCwgMHgwQThBLCAweDYwQkUsIDB4NjBCRSwgMHgxRURCLAorICAgIDB4NjBCRiwgMHg2MEJGLCAweDFFRTksIDB4NjBDMCwgMHg2MEMwLCAweDFFRUMsIDB4NjBDMSwgMHg2MEMxLCAweDIxNDMsCisgICAgMHg2MEMzLCAweDYwQzMsIDB4MUVFQSwgMHg2MEM0LCAweDYwQzQsIDB4MjEzOCwgMHg2MEM1LCAweDYwQzUsIDB4MEE4QiwKKyAgICAweDYwQzYsIDB4NjBDNiwgMHgwQTkyLCAweDYwQzcsIDB4NjBDNywgMHgwQTk2LCAweDYwQzgsIDB4NjBDOCwgMHgxRUU0LAorICAgIDB4NjBDOSwgMHg2MEM5LCAweDIxMzMsIDB4NjBDQSwgMHg2MENBLCAweDFFRTgsIDB4NjBDQiwgMHg2MENCLCAweDBBODcsCisgICAgMHg2MENDLCAweDYwQ0MsIDB4MjEzNSwgMHg2MENELCAweDYwQ0QsIDB4MUVFQiwgMHg2MENFLCAweDYwQ0UsIDB4MjEzNywKKyAgICAweDYwQ0YsIDB4NjBDRiwgMHgxRUUwLCAweDYwRDEsIDB4NjBEMSwgMHgwQzQ1LCAweDYwRDMsIDB4NjBENCwgMHgxRURFLAorICAgIDB4NjBENSwgMHg2MEQ1LCAweDBBOTEsIDB4NjBENywgMHg2MEQ3LCAweDQ2MzUsIDB4NjBEOCwgMHg2MEQ4LCAweDBBOTAsCisgICAgMHg2MEQ5LCAweDYwRDksIDB4MUVFMiwgMHg2MERBLCAweDYwREEsIDB4MEE5NSwgMHg2MERCLCAweDYwREIsIDB4MUVFNiwKKyAgICAweDYwREMsIDB4NjBEQywgMHgwQThFLCAweDYwREQsIDB4NjBERCwgMHgxRUUzLCAweDYwREUsIDB4NjBERSwgMHgzRENDLAorICAgIDB4NjBERiwgMHg2MERGLCAweDBBOTMsIDB4NjBFMCwgMHg2MEUwLCAweDBDNDksIDB4NjBFMSwgMHg2MEUxLCAweDBDNDYsCisgICAgMHg2MEUyLCAweDYwRTIsIDB4MjEzNiwgMHg2MEUzLCAweDYwRTMsIDB4M0Q3NSwgMHg2MEU0LCAweDYwRTQsIDB4MUVFMSwKKyAgICAweDYwRTYsIDB4NjBFNiwgMHgwQTg5LCAweDYwRTcsIDB4NjBFNywgMHgzRDg0LCAweDYwRTgsIDB4NjBFOCwgMHgzRDdCLAorICAgIDB4NjBFOSwgMHg2MEU5LCAweDQwMDksIDB4NjBGMCwgMHg2MEYwLCAweDBDNEUsIDB4NjBGMSwgMHg2MEYxLCAweDBDNTIsCisgICAgMHg2MEYyLCAweDYwRjIsIDB4MjEzQSwgMHg2MEYzLCAweDYwRjMsIDB4MEUwQiwgMHg2MEY0LCAweDYwRjQsIDB4MEM1MCwKKyAgICAweDYwRjUsIDB4NjBGNSwgMHgyMTNFLCAweDYwRjYsIDB4NjBGNiwgMHgwQzU0LCAweDYwRjcsIDB4NjBGNywgMHgyM0Q0LAorICAgIDB4NjBGOCwgMHg2MEY4LCAweDIxNDAsIDB4NjBGOSwgMHg2MEY5LCAweDBFMEQsIDB4NjBGQSwgMHg2MEZBLCAweDBDNEMsCisgICAgMHg2MEZCLCAweDYwRkIsIDB4MEM0RiwgMHg2MEZDLCAweDYwRkMsIDB4MjE0MSwgMHg2MEZELCAweDYwRkQsIDB4M0ZBOCwKKyAgICAweDYwRkUsIDB4NjBGRSwgMHgyMTQyLCAweDYwRkYsIDB4NjBGRiwgMHgyMTQ4LCAweDYxMDAsIDB4NjEwMCwgMHgwQzU2LAorICAgIDB4NjEwMSwgMHg2MTAxLCAweDBFMEUsIDB4NjEwMywgMHg2MTAzLCAweDIxNDQsIDB4NjEwNCwgMHg2MTA0LCAweDIxNDksCisgICAgMHg2MTA1LCAweDYxMDUsIDB4MjEzRCwgMHg2MTA2LCAweDYxMDYsIDB4MEUxOCwgMHg2MTA3LCAweDYxMDcsIDB4M0MzNSwKKyAgICAweDYxMDgsIDB4NjEwOCwgMHgwRTBGLCAweDYxMDksIDB4NjEwOSwgMHgwQzU1LCAweDYxMEEsIDB4NjEwQSwgMHgyMTNCLAorICAgIDB4NjEwQiwgMHg2MTBCLCAweDIxNEEsIDB4NjEwQywgMHg2MTBDLCAweDNDODcsIDB4NjEwRCwgMHg2MTBELCAweDBFMTcsCisgICAgMHg2MTBFLCAweDYxMEUsIDB4MEM1MywgMHg2MTBGLCAweDYxMEYsIDB4MEUwOCwgMHg2MTEwLCAweDYxMTAsIDB4MjE0NywKKyAgICAweDYxMTIsIDB4NjExMiwgMHgwQzU3LCAweDYxMTMsIDB4NjExMywgMHgyMTNGLCAweDYxMTQsIDB4NjExNCwgMHgyMTM5LAorICAgIDB4NjExNSwgMHg2MTE1LCAweDBDNEQsIDB4NjExNiwgMHg2MTE2LCAweDIxM0MsIDB4NjExOCwgMHg2MTE4LCAweDIxNDUsCisgICAgMHg2MTE5LCAweDYxMTksIDB4M0VGNiwgMHg2MTFBLCAweDYxMUEsIDB4MEUwNywgMHg2MTFCLCAweDYxMUIsIDB4MEUwQywKKyAgICAweDYxMUMsIDB4NjExQywgMHgwQzRBLCAweDYxMUQsIDB4NjExRCwgMHgyMTQ2LCAweDYxMUYsIDB4NjExRiwgMHgwRTBBLAorICAgIDB4NjEyMywgMHg2MTIzLCAweDBDNEIsIDB4NjEyNywgMHg2MTI3LCAweDBFMTYsIDB4NjEyOCwgMHg2MTI4LCAweDI2ODMsCisgICAgMHg2MTI5LCAweDYxMjksIDB4MjNERiwgMHg2MTJCLCAweDYxMkIsIDB4MjNENywgMHg2MTJDLCAweDYxMkMsIDB4MjY4MiwKKyAgICAweDYxMkUsIDB4NjEyRSwgMHgyM0RCLCAweDYxMkYsIDB4NjEyRiwgMHgyM0RELCAweDYxMzAsIDB4NjEzMCwgMHgzRjM3LAorICAgIDB4NjEzMiwgMHg2MTMyLCAweDIzREEsIDB4NjEzNCwgMHg2MTM0LCAweDBFMTUsIDB4NjEzNiwgMHg2MTM2LCAweDIzRDksCisgICAgMHg2MTM3LCAweDYxMzcsIDB4MEUxOSwgMHg2MTNCLCAweDYxM0IsIDB4MjY5MiwgMHg2MTNELCAweDYxM0QsIDB4NDYzNiwKKyAgICAweDYxM0UsIDB4NjEzRSwgMHgwRTE0LCAweDYxM0YsIDB4NjEzRiwgMHgwRkQxLCAweDYxNDAsIDB4NjE0MCwgMHgyM0UwLAorICAgIDB4NjE0MSwgMHg2MTQxLCAweDI2ODQsIDB4NjE0MiwgMHg2MTQyLCAweDQxNzQsIDB4NjE0NCwgMHg2MTQ0LCAweDBFMTIsCisgICAgMHg2MTQ1LCAweDYxNDUsIDB4MjNEOCwgMHg2MTQ2LCAweDYxNDYsIDB4MjNEQywgMHg2MTQ3LCAweDYxNDcsIDB4MEZEMCwKKyAgICAweDYxNDgsIDB4NjE0OCwgMHgwRTA5LCAweDYxNDksIDB4NjE0QSwgMHgyM0Q1LCAweDYxNEIsIDB4NjE0QiwgMHgwRkQyLAorICAgIDB4NjE0QywgMHg2MTRDLCAweDBFMTEsIDB4NjE0RCwgMHg2MTRELCAweDBFMTMsIDB4NjE0RSwgMHg2MTRFLCAweDBFMTAsCisgICAgMHg2MTRGLCAweDYxNEYsIDB4MjNERSwgMHg2MTUwLCAweDYxNTAsIDB4M0MzMiwgMHg2MTUyLCAweDYxNTMsIDB4MjY4OCwKKyAgICAweDYxNTQsIDB4NjE1NCwgMHgyNjhFLCAweDYxNTUsIDB4NjE1NSwgMHgxMTQ5LCAweDYxNTYsIDB4NjE1NiwgMHgyNjk1LAorICAgIDB4NjE1OCwgMHg2MTU4LCAweDBGRDgsIDB4NjE1OSwgMHg2MTU5LCAweDNGQkEsIDB4NjE1QSwgMHg2MTVBLCAweDBGRDcsCisgICAgMHg2MTVCLCAweDYxNUIsIDB4MjY5MCwgMHg2MTVDLCAweDYxNUMsIDB4NDE4NiwgMHg2MTVELCAweDYxNUQsIDB4MTE0OCwKKyAgICAweDYxNUUsIDB4NjE1RSwgMHgyNjg1LCAweDYxNUYsIDB4NjE1RiwgMHgwRkQ2LCAweDYxNjAsIDB4NjE2MCwgMHg0OTRDLAorICAgIDB4NjE2MSwgMHg2MTYxLCAweDI2OTQsIDB4NjE2MiwgMHg2MTYzLCAweDBGRDQsIDB4NjE2NCwgMHg2MTY0LCAweDQxNzMsCisgICAgMHg2MTY1LCAweDYxNjUsIDB4MjY5MSwgMHg2MTY2LCAweDYxNjYsIDB4MjhERSwgMHg2MTY3LCAweDYxNjcsIDB4MTE0NiwKKyAgICAweDYxNjgsIDB4NjE2OCwgMHgwQzUxLCAweDYxNkEsIDB4NjE2QSwgMHgyNjkzLCAweDYxNkIsIDB4NjE2QiwgMHgxMTRELAorICAgIDB4NjE2QywgMHg2MTZDLCAweDI2OEIsIDB4NjE2RSwgMHg2MTZFLCAweDExNDcsIDB4NjE2RiwgMHg2MTZGLCAweDNGQzAsCisgICAgMHg2MTcwLCAweDYxNzAsIDB4MTE0QywgMHg2MTcxLCAweDYxNzEsIDB4MjY4NiwgMHg2MTcyLCAweDYxNzIsIDB4MjY4QSwKKyAgICAweDYxNzMsIDB4NjE3MywgMHgyNjg3LCAweDYxNzQsIDB4NjE3NCwgMHgyNjhELCAweDYxNzUsIDB4NjE3NSwgMHgwRkQ5LAorICAgIDB4NjE3NiwgMHg2MTc2LCAweDExNDUsIDB4NjE3NywgMHg2MTc3LCAweDBGRDMsIDB4NjE3OSwgMHg2MTc5LCAweDI4RDAsCisgICAgMHg2MTdBLCAweDYxN0EsIDB4MjY4RiwgMHg2MTdDLCAweDYxN0MsIDB4MTE0QiwgMHg2MTdELCAweDYxN0QsIDB4M0ZCRCwKKyAgICAweDYxN0UsIDB4NjE3RSwgMHgxMTRFLCAweDYxODAsIDB4NjE4MCwgMHgyNjhDLCAweDYxODEsIDB4NjE4MSwgMHg0MTc3LAorICAgIDB4NjE4MiwgMHg2MTgyLCAweDExNEEsIDB4NjE4MywgMHg2MTgzLCAweDI4Q0YsIDB4NjE4NywgMHg2MTg3LCAweDQxN0EsCisgICAgMHg2MTg5LCAweDYxODksIDB4MjhENCwgMHg2MThBLCAweDYxOEEsIDB4MTJCMSwgMHg2MThCLCAweDYxOEIsIDB4MjhDRSwKKyAgICAweDYxOEMsIDB4NjE4QywgMHgyQjRELCAweDYxOEQsIDB4NjE4RCwgMHgyOERELCAweDYxOEUsIDB4NjE4RSwgMHgxMTUyLAorICAgIDB4NjE5MCwgMHg2MTkwLCAweDExNTAsIDB4NjE5MSwgMHg2MTkxLCAweDEyQUYsIDB4NjE5MiwgMHg2MTkyLCAweDI4REEsCisgICAgMHg2MTkzLCAweDYxOTMsIDB4MjhENiwgMHg2MTk0LCAweDYxOTQsIDB4MTE1NiwgMHg2MTk1LCAweDYxOTUsIDB4M0RFMCwKKyAgICAweDYxOTYsIDB4NjE5NiwgMHgyQjQ0LCAweDYxOTgsIDB4NjE5OCwgMHgzQTU1LCAweDYxOTksIDB4NjE5OSwgMHgzQTU0LAorICAgIDB4NjE5QSwgMHg2MTlBLCAweDExNTQsIDB4NjE5QiwgMHg2MTlCLCAweDI4RDUsIDB4NjE5QywgMHg2MTlDLCAweDQwMDIsCisgICAgMHg2MTlELCAweDYxOUQsIDB4MkI0MiwgMHg2MTlGLCAweDYxOUYsIDB4MjhEOSwgMHg2MUExLCAweDYxQTEsIDB4MjhEQywKKyAgICAweDYxQTIsIDB4NjFBMiwgMHgyOEQzLCAweDYxQTQsIDB4NjFBNCwgMHgxMTU1LCAweDYxQTcsIDB4NjFBNywgMHgxMTRGLAorICAgIDB4NjFBOCwgMHg2MUE4LCAweDJCNDMsIDB4NjFBOSwgMHg2MUE5LCAweDEyQjAsIDB4NjFBQSwgMHg2MUFBLCAweDI4REIsCisgICAgMHg2MUFCLCAweDYxQUIsIDB4MTE1MSwgMHg2MUFDLCAweDYxQUMsIDB4MTE1MywgMHg2MUFELCAweDYxQUQsIDB4MjhEOCwKKyAgICAweDYxQUUsIDB4NjFBRSwgMHgxMTU3LCAweDYxQUYsIDB4NjFBRiwgMHgyOEQ3LCAweDYxQjAsIDB4NjFCMCwgMHgyOEQyLAorICAgIDB4NjFCMSwgMHg2MUIxLCAweDI4RDEsIDB4NjFCMiwgMHg2MUIyLCAweDEyQUUsIDB4NjFCMywgMHg2MUIzLCAweDI4REYsCisgICAgMHg2MUI0LCAweDYxQjQsIDB4MkI0NiwgMHg2MUI1LCAweDYxQjUsIDB4MkQ2MCwgMHg2MUI2LCAweDYxQjYsIDB4MTJCMywKKyAgICAweDYxQjcsIDB4NjFCNywgMHg0NjM5LCAweDYxQjgsIDB4NjFCOCwgMHgyQjRDLCAweDYxQjksIDB4NjFCOSwgMHg0M0JGLAorICAgIDB4NjFCQSwgMHg2MUJBLCAweDJCNEEsIDB4NjFCQywgMHg2MUJDLCAweDJENjEsIDB4NjFCRSwgMHg2MUJFLCAweDEyQjQsCisgICAgMHg2MUJGLCAweDYxQkYsIDB4MkI0QiwgMHg2MUMwLCAweDYxQzAsIDB4M0E1MCwgMHg2MUMxLCAweDYxQzEsIDB4MkI0OCwKKyAgICAweDYxQzIsIDB4NjFDMiwgMHgxM0QxLCAweDYxQzMsIDB4NjFDMywgMHgyRDVGLCAweDYxQzUsIDB4NjFDNSwgMHgyQjQ1LAorICAgIDB4NjFDNiwgMHg2MUM2LCAweDJCNDcsIDB4NjFDNywgMHg2MUM3LCAweDEzRDIsIDB4NjFDOCwgMHg2MUM4LCAweDEyQjYsCisgICAgMHg2MUM5LCAweDYxQzksIDB4MTNEMCwgMHg2MUNBLCAweDYxQ0EsIDB4MTJCNSwgMHg2MUNCLCAweDYxQ0IsIDB4MTNENCwKKyAgICAweDYxQ0MsIDB4NjFDQywgMHgyQjQ5LCAweDYxQ0QsIDB4NjFDRCwgMHgxMkIyLCAweDYxQ0YsIDB4NjFDRiwgMHg0NjNBLAorICAgIDB4NjFEMCwgMHg2MUQwLCAweDQxODEsIDB4NjFEMywgMHg2MUQzLCAweDQxN0UsIDB4NjFENiwgMHg2MUQ2LCAweDJGMjYsCisgICAgMHg2MUQ4LCAweDYxRDgsIDB4MkYxRSwgMHg2MURBLCAweDYxREEsIDB4MzhCMSwgMHg2MURFLCAweDYxREUsIDB4MkQ2NywKKyAgICAweDYxREYsIDB4NjFERiwgMHgyRjFGLCAweDYxRTAsIDB4NjFFMCwgMHgyRDYzLCAweDYxRTIsIDB4NjFFMiwgMHgzRkM1LAorICAgIDB4NjFFMywgMHg2MUUzLCAweDE0RDAsIDB4NjFFNCwgMHg2MUU0LCAweDJENjUsIDB4NjFFNSwgMHg2MUU1LCAweDJENjQsCisgICAgMHg2MUU2LCAweDYxRTYsIDB4MTNEMywgMHg2MUU3LCAweDYxRTcsIDB4MkQ2MiwgMHg2MUU4LCAweDYxRTgsIDB4MkQ2NiwKKyAgICAweDYxRTksIDB4NjFFOSwgMHgyRjI3LCAweDYxRUEsIDB4NjFFQSwgMHgyRjIzLCAweDYxRUIsIDB4NjFFQiwgMHgyRjI1LAorICAgIDB4NjFFRCwgMHg2MUVFLCAweDJGMjAsIDB4NjFGMCwgMHg2MUYwLCAweDJGMjQsIDB4NjFGMSwgMHg2MUYxLCAweDJGMjIsCisgICAgMHg2MUYyLCAweDYxRjIsIDB4MTU3RSwgMHg2MUY1LCAweDYxRjUsIDB4MTU4MSwgMHg2MUY2LCAweDYxRjYsIDB4MTU4MCwKKyAgICAweDYxRjcsIDB4NjFGNywgMHgxNTdGLCAweDYxRjgsIDB4NjFGOCwgMHgxNjE0LCAweDYxRjksIDB4NjFGOSwgMHgzMUQzLAorICAgIDB4NjFGQSwgMHg2MUZBLCAweDE2MTUsIDB4NjFGQiwgMHg2MUZCLCAweDMwOEYsIDB4NjFGQywgMHg2MUZDLCAweDE2NzAsCisgICAgMHg2MUZELCAweDYxRkQsIDB4MzJEMSwgMHg2MUZFLCAweDYxRkUsIDB4MTY3MSwgMHg2MUZGLCAweDYxRkYsIDB4MTZDNCwKKyAgICAweDYyMDAsIDB4NjIwMCwgMHgxNkY4LCAweDYyMDEsIDB4NjIwMSwgMHgzNDE3LCAweDYyMDMsIDB4NjIwNCwgMHgzNDE4LAorICAgIDB4NjIwNywgMHg2MjA3LCAweDM1MzMsIDB4NjIwOCwgMHg2MjA4LCAweDAyRDEsIDB4NjIwOSwgMHg2MjA5LCAweDE3QTgsCisgICAgMHg2MjBBLCAweDYyMEEsIDB4MDM0MSwgMHg2MjBDLCAweDYyMEQsIDB4MDNEMSwgMHg2MjBFLCAweDYyMEUsIDB4MDNEMCwKKyAgICAweDYyMTAsIDB4NjIxMCwgMHgwM0QzLCAweDYyMTEsIDB4NjIxMSwgMHgwNEEyLCAweDYyMTIsIDB4NjIxMiwgMHgwNEExLAorICAgIDB4NjIxNCwgMHg2MjE0LCAweDE5OTEsIDB4NjIxNSwgMHg2MjE1LCAweDA1RDEsIDB4NjIxNiwgMHg2MjE2LCAweDA1RDAsCisgICAgMHg2MjE5LCAweDYyMTksIDB4MUNBMCwgMHg2MjFBLCAweDYyMUIsIDB4MEE5NywgMHg2MjFGLCAweDYyMUYsIDB4MEM1OCwKKyAgICAweDYyMjAsIDB4NjIyMCwgMHgyM0UxLCAweDYyMjEsIDB4NjIyMiwgMHgwRTFBLCAweDYyMjMsIDB4NjIyMywgMHgyM0UzLAorICAgIDB4NjIyNCwgMHg2MjI0LCAweDIzRTUsIDB4NjIyNSwgMHg2MjI1LCAweDIzRTQsIDB4NjIyNywgMHg2MjI3LCAweDI2OTcsCisgICAgMHg2MjI5LCAweDYyMjksIDB4MjY5NiwgMHg2MjJBLCAweDYyMkEsIDB4MEZEQSwgMHg2MjJCLCAweDYyMkIsIDB4MjY5OCwKKyAgICAweDYyMkMsIDB4NjIyQywgMHg0NjNDLCAweDYyMkQsIDB4NjIyRCwgMHgyOEUwLCAweDYyMkUsIDB4NjIyRSwgMHgxMTU4LAorICAgIDB4NjIzMCwgMHg2MjMwLCAweDEyQjcsIDB4NjIzMiwgMHg2MjMyLCAweDEzRDUsIDB4NjIzMywgMHg2MjMzLCAweDE0RDEsCisgICAgMHg2MjM0LCAweDYyMzQsIDB4MTNENiwgMHg2MjM2LCAweDYyMzYsIDB4MDJEMiwgMHg2MjM3LCAweDYyMzcsIDB4NDUxQSwKKyAgICAweDYyMzksIDB4NjIzOSwgMHgzRkMyLCAweDYyM0EsIDB4NjIzQSwgMHgxODhELCAweDYyM0QsIDB4NjIzRCwgMHgxOTkyLAorICAgIDB4NjIzRSwgMHg2MjNFLCAweDA1RDMsIDB4NjIzRiwgMHg2MjNGLCAweDA1RDIsIDB4NjI0MCwgMHg2MjQwLCAweDA1RDQsCisgICAgMHg2MjQxLCAweDYyNDEsIDB4MDcyRiwgMHg2MjQyLCAweDYyNDMsIDB4MUFFQywgMHg2MjQ2LCAweDYyNDYsIDB4MUNBMSwKKyAgICAweDYyNDcsIDB4NjI0NywgMHgwOEMyLCAweDYyNDgsIDB4NjI0OCwgMHgwQTk5LCAweDYyNDksIDB4NjI0OSwgMHgwQzU5LAorICAgIDB4NjI0QSwgMHg2MjRBLCAweDIxNEIsIDB4NjI0QiwgMHg2MjRCLCAweDAyRDMsIDB4NjI0QywgMHg2MjRDLCAweDQ0RUMsCisgICAgMHg2MjRELCAweDYyNEQsIDB4MDI5MSwgMHg2MjRFLCAweDYyNEUsIDB4MDJENCwgMHg2MjUwLCAweDYyNTAsIDB4MTdBOSwKKyAgICAweDYyNTEsIDB4NjI1MSwgMHgwMzQ1LCAweDYyNTIsIDB4NjI1MiwgMHgwMzQ0LCAweDYyNTMsIDB4NjI1NCwgMHgwMzQyLAorICAgIDB4NjI1OCwgMHg2MjU4LCAweDAzRDYsIDB4NjI1OSwgMHg2MjU5LCAweDE3RjIsIDB4NjI1QSwgMHg2MjVBLCAweDE3RjQsCisgICAgMHg2MjVCLCAweDYyNUIsIDB4MDNENSwgMHg2MjVDLCAweDYyNUMsIDB4MTdFQywgMHg2MjVFLCAweDYyNUUsIDB4MTdFRCwKKyAgICAweDYyNjAsIDB4NjI2MCwgMHgxN0YzLCAweDYyNjEsIDB4NjI2MSwgMHgxN0VGLCAweDYyNjIsIDB4NjI2MiwgMHgxN0YxLAorICAgIDB4NjI2MywgMHg2MjYzLCAweDAzRDQsIDB4NjI2NCwgMHg2MjY0LCAweDE3RUUsIDB4NjI2NSwgMHg2MjY1LCAweDE3RjUsCisgICAgMHg2MjY2LCAweDYyNjYsIDB4MTdGMCwgMHg2MjY4LCAweDYyNjgsIDB4M0YxNSwgMHg2MjZELCAweDYyNkQsIDB4MDRBOSwKKyAgICAweDYyNkUsIDB4NjI2RSwgMHgwNEIyLCAweDYyNkYsIDB4NjI2RiwgMHgwNEIwLCAweDYyNzAsIDB4NjI3MCwgMHgxODk3LAorICAgIDB4NjI3MSwgMHg2MjcxLCAweDE4OTQsIDB4NjI3MiwgMHg2MjcyLCAweDE4OUMsIDB4NjI3MywgMHg2MjczLCAweDA0QUUsCisgICAgMHg2Mjc0LCAweDYyNzQsIDB4MTg5RCwgMHg2Mjc2LCAweDYyNzYsIDB4MDRBNywgMHg2Mjc3LCAweDYyNzcsIDB4MTg5QSwKKyAgICAweDYyNzksIDB4NjI3OSwgMHgwNEFELCAweDYyN0EsIDB4NjI3QSwgMHgxODk2LCAweDYyN0IsIDB4NjI3QiwgMHgxODk1LAorICAgIDB4NjI3QywgMHg2MjdDLCAweDA0QUIsIDB4NjI3RCwgMHg2MjdELCAweDE4OUIsIDB4NjI3RSwgMHg2MjdFLCAweDA0QUMsCisgICAgMHg2MjdGLCAweDYyN0YsIDB4MDVENSwgMHg2MjgwLCAweDYyODAsIDB4MDRBNiwgMHg2MjgxLCAweDYyODEsIDB4MTg5OCwKKyAgICAweDYyODIsIDB4NjI4MiwgMHgzRjg2LCAweDYyODMsIDB4NjI4MywgMHgxODhFLCAweDYyODQsIDB4NjI4NCwgMHgwNEEzLAorICAgIDB4NjI4NSwgMHg2Mjg1LCAweDNGNTAsIDB4NjI4NiwgMHg2Mjg2LCAweDA0QjYsIDB4NjI4NywgMHg2Mjg3LCAweDE4OTMsCisgICAgMHg2Mjg4LCAweDYyODgsIDB4MTg5OSwgMHg2Mjg5LCAweDYyODksIDB4MDRBOCwgMHg2MjhBLCAweDYyOEEsIDB4MDRBQSwKKyAgICAweDYyOEMsIDB4NjI4QywgMHgxODhGLCAweDYyOEUsIDB4NjI4RiwgMHgxODkwLCAweDYyOTAsIDB4NjI5MCwgMHg0M0MwLAorICAgIDB4NjI5MSwgMHg2MjkxLCAweDA0QjUsIDB4NjI5MiwgMHg2MjkyLCAweDA0QUYsIDB4NjI5MywgMHg2MjkzLCAweDA0QjQsCisgICAgMHg2Mjk0LCAweDYyOTQsIDB4MTg5MiwgMHg2Mjk1LCAweDYyOTUsIDB4MDRCMywgMHg2Mjk2LCAweDYyOTYsIDB4MDRBNSwKKyAgICAweDYyOTcsIDB4NjI5NywgMHgwNEE0LCAweDYyOTgsIDB4NjI5OCwgMHgwNEIxLCAweDYyOUQsIDB4NjI5RCwgMHgzRTk2LAorICAgIDB4NjJBNCwgMHg2MkE0LCAweDNBNjksIDB4NjJBNiwgMHg2MkE2LCAweDNGQzEsIDB4NjJBOCwgMHg2MkE4LCAweDA1RTMsCisgICAgMHg2MkE5LCAweDYyQTksIDB4MTk5RSwgMHg2MkFBLCAweDYyQUEsIDB4MTk5NywgMHg2MkFCLCAweDYyQUIsIDB4MDVERSwKKyAgICAweDYyQUMsIDB4NjJBQywgMHgwNUYxLCAweDYyQUQsIDB4NjJBRCwgMHgxOTkzLCAweDYyQUUsIDB4NjJBRSwgMHgxOTlBLAorICAgIDB4NjJBRiwgMHg2MkFGLCAweDE5OUMsIDB4NjJCMCwgMHg2MkIwLCAweDE5OUYsIDB4NjJCMSwgMHg2MkIxLCAweDA1RUMsCisgICAgMHg2MkIzLCAweDYyQjMsIDB4MTk5QiwgMHg2MkI0LCAweDYyQjQsIDB4MTk5NCwgMHg2MkI1LCAweDYyQjUsIDB4MDVFQSwKKyAgICAweDYyQjYsIDB4NjJCNiwgMHgxOTk4LCAweDYyQjgsIDB4NjJCOCwgMHgxOUEwLCAweDYyQjksIDB4NjJCOSwgMHgwNURCLAorICAgIDB4NjJCQiwgMHg2MkJCLCAweDE5OUQsIDB4NjJCQywgMHg2MkJDLCAweDA1RTUsIDB4NjJCRCwgMHg2MkJELCAweDA1RTQsCisgICAgMHg2MkJFLCAweDYyQkUsIDB4MTk5NiwgMHg2MkJGLCAweDYyQkYsIDB4MDVEOSwgMHg2MkMyLCAweDYyQzIsIDB4MDVEQSwKKyAgICAweDYyQzMsIDB4NjJDMywgMHgzRDhGLCAweDYyQzQsIDB4NjJDNCwgMHgwNUQ4LCAweDYyQzUsIDB4NjJDNSwgMHg0MThBLAorICAgIDB4NjJDNiwgMHg2MkM2LCAweDA1RjAsIDB4NjJDNywgMHg2MkM3LCAweDA1RTgsIDB4NjJDOCwgMHg2MkM4LCAweDA1RTIsCisgICAgMHg2MkM5LCAweDYyQzksIDB4MDVENiwgMHg2MkNBLCAweDYyQ0EsIDB4MTk5OSwgMHg2MkNCLCAweDYyQ0IsIDB4MDVFMSwKKyAgICAweDYyQ0MsIDB4NjJDQywgMHgwNUQ3LCAweDYyQ0QsIDB4NjJDRCwgMHgwNUU5LCAweDYyQ0UsIDB4NjJDRSwgMHgwNUYyLAorICAgIDB4NjJDRiwgMHg2MkNGLCAweDFBRUUsIDB4NjJEMCwgMHg2MkQwLCAweDA1RTYsIDB4NjJEMSwgMHg2MkQxLCAweDE5OTUsCisgICAgMHg2MkQyLCAweDYyRDIsIDB4MDVEQywgMHg2MkQzLCAweDYyRDQsIDB4MDVERiwgMHg2MkQ1LCAweDYyRDUsIDB4NDE4QywKKyAgICAweDYyRDYsIDB4NjJENywgMHgwNUVFLCAweDYyRDgsIDB4NjJEOCwgMHgwNUVELCAweDYyRDksIDB4NjJEOSwgMHgwNUU3LAorICAgIDB4NjJEQSwgMHg2MkRBLCAweDA1RUIsIDB4NjJEQiwgMHg2MkRCLCAweDA1REQsIDB4NjJEQywgMHg2MkRDLCAweDA3MzAsCisgICAgMHg2MkRGLCAweDYyREYsIDB4NDAxQywgMHg2MkU1LCAweDYyRTUsIDB4NDYzRCwgMHg2MkVCLCAweDYyRUIsIDB4MUFGNCwKKyAgICAweDYyRUMsIDB4NjJFQywgMHgwNzNDLCAweDYyRUQsIDB4NjJFRCwgMHgwNzM0LCAweDYyRUUsIDB4NjJFRSwgMHgwNzM2LAorICAgIDB4NjJFRiwgMHg2MkVGLCAweDA3M0IsIDB4NjJGMCwgMHg2MkYwLCAweDFCMDAsIDB4NjJGMSwgMHg2MkYxLCAweDA3MzksCisgICAgMHg2MkYyLCAweDYyRjIsIDB4MUNBMiwgMHg2MkYzLCAweDYyRjMsIDB4MDhDMywgMHg2MkY0LCAweDYyRjQsIDB4MDczRSwKKyAgICAweDYyRjUsIDB4NjJGNSwgMHgxQUYxLCAweDYyRjYsIDB4NjJGNiwgMHgxQUY5LCAweDYyRjcsIDB4NjJGNywgMHgwNzNBLAorICAgIDB4NjJGOCwgMHg2MkY4LCAweDFBRjgsIDB4NjJGOSwgMHg2MkY5LCAweDFBRjUsIDB4NjJGQSwgMHg2MkZBLCAweDFBRkQsCisgICAgMHg2MkZCLCAweDYyRkIsIDB4MUFGRiwgMHg2MkZDLCAweDYyRkMsIDB4MDczMywgMHg2MkZELCAweDYyRkQsIDB4MDczNywKKyAgICAweDYyRkUsIDB4NjJGRSwgMHgwNzNELCAweDYyRkYsIDB4NjJGRiwgMHgwOEM1LCAweDYzMDAsIDB4NjMwMCwgMHgxQUZBLAorICAgIDB4NjMwMSwgMHg2MzAxLCAweDA3MzUsIDB4NjMwMiwgMHg2MzAyLCAweDA3NDAsIDB4NjMwMywgMHg2MzAzLCAweDFBRjMsCisgICAgMHg2MzA3LCAweDYzMDcsIDB4MDczOCwgMHg2MzA4LCAweDYzMDgsIDB4MDhDNCwgMHg2MzA5LCAweDYzMDksIDB4MDczMiwKKyAgICAweDYzMEIsIDB4NjMwQiwgMHgxQUYwLCAweDYzMEMsIDB4NjMwQywgMHgxQUY3LCAweDYzMEQsIDB4NjMwRCwgMHgxQUVGLAorICAgIDB4NjMwRSwgMHg2MzBFLCAweDFBRjIsIDB4NjMwRiwgMHg2MzBGLCAweDFBRjYsIDB4NjMxMCwgMHg2MzEwLCAweDFDQTMsCisgICAgMHg2MzExLCAweDYzMTEsIDB4MDczRiwgMHg2MzEzLCAweDYzMTQsIDB4MUFGQiwgMHg2MzE1LCAweDYzMTUsIDB4MUFGRSwKKyAgICAweDYzMTYsIDB4NjMxNiwgMHgwNzMxLCAweDYzMTgsIDB4NjMxOCwgMHg0M0MxLCAweDYzMjgsIDB4NjMyOCwgMHgwOEQzLAorICAgIDB4NjMyOSwgMHg2MzI5LCAweDFDQUYsIDB4NjMyQSwgMHg2MzJCLCAweDA4RDEsIDB4NjMyQywgMHg2MzJDLCAweDFDQTUsCisgICAgMHg2MzJELCAweDYzMkQsIDB4MUNCNSwgMHg2MzJFLCAweDYzMkUsIDB4M0VERCwgMHg2MzJGLCAweDYzMkYsIDB4MDhDOCwKKyAgICAweDYzMzEsIDB4NjMzMSwgMHgzQTY1LCAweDYzMzIsIDB4NjMzMiwgMHgxRUVELCAweDYzMzMsIDB4NjMzMywgMHgxQ0I3LAorICAgIDB4NjMzNCwgMHg2MzM0LCAweDFDQjEsIDB4NjMzNSwgMHg2MzM1LCAweDNGMTYsIDB4NjMzNiwgMHg2MzM2LCAweDFDQTgsCisgICAgMHg2MzM3LCAweDYzMzcsIDB4M0E2MywgMHg2MzM4LCAweDYzMzgsIDB4MUNCQSwgMHg2MzM5LCAweDYzMzksIDB4MUNBQiwKKyAgICAweDYzM0EsIDB4NjMzQSwgMHgwOENFLCAweDYzM0IsIDB4NjMzQiwgMHgxRjA0LCAweDYzM0MsIDB4NjMzQywgMHgxQ0FFLAorICAgIDB4NjMzRCwgMHg2MzNELCAweDA4RDAsIDB4NjMzRSwgMHg2MzNFLCAweDA4QzcsIDB4NjM0MCwgMHg2MzQwLCAweDFDQkMsCisgICAgMHg2MzQxLCAweDYzNDEsIDB4MUNCMCwgMHg2MzQyLCAweDYzNDIsIDB4MDhDQSwgMHg2MzQzLCAweDYzNDMsIDB4MUNBOSwKKyAgICAweDYzNDQsIDB4NjM0NSwgMHgxQ0E2LCAweDYzNDYsIDB4NjM0NiwgMHgwOENCLCAweDYzNDcsIDB4NjM0NywgMHgxQ0I2LAorICAgIDB4NjM0OCwgMHg2MzQ4LCAweDFDQkQsIDB4NjM0OSwgMHg2MzQ5LCAweDA4Q0QsIDB4NjM0QSwgMHg2MzRBLCAweDFDQUQsCisgICAgMHg2MzRCLCAweDYzNEIsIDB4MUNBQywgMHg2MzRDLCAweDYzNEMsIDB4MDhENSwgMHg2MzRELCAweDYzNEQsIDB4MDhENCwKKyAgICAweDYzNEUsIDB4NjM0RSwgMHgwOEM2LCAweDYzNEYsIDB4NjM0RiwgMHgwOENDLCAweDYzNTAsIDB4NjM1MCwgMHgwOENGLAorICAgIDB4NjM1MSwgMHg2MzUxLCAweDFDQjksIDB4NjM1NCwgMHg2MzU0LCAweDFDQjMsIDB4NjM1NSwgMHg2MzU1LCAweDA4QzksCisgICAgMHg2MzU2LCAweDYzNTYsIDB4MUNBNCwgMHg2MzU3LCAweDYzNTcsIDB4MUNCQiwgMHg2MzU4LCAweDYzNTgsIDB4MUNCMiwKKyAgICAweDYzNTksIDB4NjM1OSwgMHgxQ0I0LCAweDYzNUEsIDB4NjM1QSwgMHgxQ0I4LCAweDYzNjQsIDB4NjM2NCwgMHgzRkM3LAorICAgIDB4NjM2NSwgMHg2MzY1LCAweDFFRUUsIDB4NjM2NywgMHg2MzY3LCAweDBBQTEsIDB4NjM2OCwgMHg2MzY4LCAweDBBQjUsCisgICAgMHg2MzY5LCAweDYzNjksIDB4MEFCNCwgMHg2MzZCLCAweDYzNkIsIDB4MEFBOSwgMHg2MzZDLCAweDYzNkMsIDB4NDE4RSwKKyAgICAweDYzNkQsIDB4NjM2RCwgMHgxRjAwLCAweDYzNkUsIDB4NjM2RSwgMHgxRUZDLCAweDYzNkYsIDB4NjM2RiwgMHgxRUY5LAorICAgIDB4NjM3MCwgMHg2MzcwLCAweDFGMEIsIDB4NjM3MSwgMHg2MzcxLCAweDBBQTQsIDB4NjM3MiwgMHg2MzcyLCAweDBBOUMsCisgICAgMHg2Mzc1LCAweDYzNzUsIDB4MUVGRSwgMHg2Mzc2LCAweDYzNzYsIDB4MEM2OSwgMHg2Mzc3LCAweDYzNzcsIDB4MEFBMCwKKyAgICAweDYzNzgsIDB4NjM3OCwgMHgxRjA2LCAweDYzNzksIDB4NjM3OSwgMHg0MzY3LCAweDYzN0EsIDB4NjM3QSwgMHgwQUI2LAorICAgIDB4NjM3QiwgMHg2MzdCLCAweDBBQjMsIDB4NjM3QywgMHg2MzdDLCAweDFGMDIsIDB4NjM3RCwgMHg2MzdELCAweDFFRjEsCisgICAgMHg2MzdGLCAweDYzN0YsIDB4M0Y0QiwgMHg2MzgwLCAweDYzODAsIDB4MEFCMiwgMHg2MzgxLCAweDYzODEsIDB4MUYwOCwKKyAgICAweDYzODIsIDB4NjM4MiwgMHgxRUYwLCAweDYzODMsIDB4NjM4MywgMHgwQUE3LCAweDYzODQsIDB4NjM4NCwgMHgwQUFCLAorICAgIDB4NjM4NSwgMHg2Mzg1LCAweDFGMDcsIDB4NjM4NywgMHg2Mzg3LCAweDFFRkEsIDB4NjM4OCwgMHg2Mzg4LCAweDBBQUMsCisgICAgMHg2Mzg5LCAweDYzODksIDB4MEFBNiwgMHg2MzhBLCAweDYzOEEsIDB4MUVFRiwgMHg2MzhCLCAweDYzOEIsIDB4NDE4OCwKKyAgICAweDYzOEMsIDB4NjM4QywgMHgwQzVCLCAweDYzOEQsIDB4NjM4RCwgMHgxRjBBLCAweDYzOEUsIDB4NjM4RSwgMHgxRUY4LAorICAgIDB4NjM4RiwgMHg2MzhGLCAweDBBQjEsIDB4NjM5MCwgMHg2MzkwLCAweDFFRkIsIDB4NjM5MSwgMHg2MzkxLCAweDFGMDksCisgICAgMHg2MzkyLCAweDYzOTIsIDB4MEFCMCwgMHg2Mzk0LCAweDYzOTQsIDB4MjE0QywgMHg2Mzk2LCAweDYzOTYsIDB4MEE5RCwKKyAgICAweDYzOTcsIDB4NjM5NywgMHgxRUY2LCAweDYzOTgsIDB4NjM5OCwgMHgwQUEyLCAweDYzOTksIDB4NjM5OSwgMHgwQUFELAorICAgIDB4NjM5QiwgMHg2MzlCLCAweDBBQTgsIDB4NjM5QywgMHg2MzlDLCAweDFFRkYsIDB4NjM5RCwgMHg2MzlELCAweDFFRjUsCisgICAgMHg2MzlFLCAweDYzOUUsIDB4MUVGMywgMHg2MzlGLCAweDYzOUYsIDB4MUYwNSwgMHg2M0EwLCAweDYzQTAsIDB4MEE5QSwKKyAgICAweDYzQTEsIDB4NjNBMSwgMHgwQUFFLCAweDYzQTIsIDB4NjNBMiwgMHgwQTlFLCAweDYzQTMsIDB4NjNBMywgMHgwQzVBLAorICAgIDB4NjNBNCwgMHg2M0E0LCAweDFGMDMsIDB4NjNBNSwgMHg2M0E1LCAweDBBOUYsIDB4NjNBNywgMHg2M0E3LCAweDBBOUIsCisgICAgMHg2M0E4LCAweDYzQTgsIDB4MEFBQSwgMHg2M0E5LCAweDYzQTksIDB4MEFBNSwgMHg2M0FBLCAweDYzQUEsIDB4MEFBMywKKyAgICAweDYzQUIsIDB4NjNBQiwgMHgxRUY3LCAweDYzQUMsIDB4NjNBQywgMHgwQUFGLCAweDYzQUQsIDB4NjNBRCwgMHgxRUY0LAorICAgIDB4NjNBRSwgMHg2M0FFLCAweDFGMDEsIDB4NjNBRiwgMHg2M0FGLCAweDFFRkQsIDB4NjNCMCwgMHg2M0IwLCAweDIxNEUsCisgICAgMHg2M0IxLCAweDYzQjEsIDB4MjE0RCwgMHg2M0I5LCAweDYzQjksIDB4M0U5RCwgMHg2M0JELCAweDYzQkQsIDB4MUVGMiwKKyAgICAweDYzQkUsIDB4NjNCRSwgMHgyMTVFLCAweDYzQzAsIDB4NjNDMCwgMHgwQzVELCAweDYzQzEsIDB4NjNDMSwgMHg0NkE4LAorICAgIDB4NjNDMiwgMHg2M0MyLCAweDIxNjQsIDB4NjNDMywgMHg2M0MzLCAweDIxNTMsIDB4NjNDNCwgMHg2M0M0LCAweDIxNjEsCisgICAgMHg2M0M1LCAweDYzQzUsIDB4MjNFNiwgMHg2M0M2LCAweDYzQzYsIDB4MEM2MCwgMHg2M0M3LCAweDYzQzcsIDB4MjE2NSwKKyAgICAweDYzQzgsIDB4NjNDOCwgMHgyMTY4LCAweDYzQzksIDB4NjNDOSwgMHgwQzVGLCAweDYzQ0EsIDB4NjNDQSwgMHgyMTU2LAorICAgIDB4NjNDQiwgMHg2M0NCLCAweDIxNjcsIDB4NjNDQywgMHg2M0NDLCAweDIxNjYsIDB4NjNDRCwgMHg2M0NELCAweDBDNjEsCisgICAgMHg2M0NFLCAweDYzQ0UsIDB4MjE0RiwgMHg2M0NGLCAweDYzQ0YsIDB4MEM1QywgMHg2M0QwLCAweDYzRDAsIDB4MEM2NCwKKyAgICAweDYzRDEsIDB4NjNEMSwgMHgzQTY2LCAweDYzRDIsIDB4NjNEMiwgMHgwQzYyLCAweDYzRDMsIDB4NjNEMywgMHgyMTYzLAorICAgIDB4NjNENSwgMHg2M0Q1LCAweDIxNTksIDB4NjNENiwgMHg2M0Q2LCAweDBDNjYsIDB4NjNENywgMHg2M0Q3LCAweDIxNkEsCisgICAgMHg2M0Q4LCAweDYzRDgsIDB4MjE2MiwgMHg2M0Q5LCAweDYzRDksIDB4MjE2QiwgMHg2M0RBLCAweDYzREEsIDB4MEM2RSwKKyAgICAweDYzREIsIDB4NjNEQiwgMHgwQzZDLCAweDYzREMsIDB4NjNEQywgMHgyMTYwLCAweDYzREQsIDB4NjNERCwgMHgyMTVGLAorICAgIDB4NjNERSwgMHg2M0RFLCAweDNFNjAsIDB4NjNERiwgMHg2M0RGLCAweDIxNUQsIDB4NjNFMCwgMHg2M0UwLCAweDIxNTcsCisgICAgMHg2M0UxLCAweDYzRTEsIDB4MEM2NSwgMHg2M0UyLCAweDYzRTIsIDB4NDY0MSwgMHg2M0UzLCAweDYzRTMsIDB4MEM2MywKKyAgICAweDYzRTQsIDB4NjNFNCwgMHgxQ0FBLCAweDYzRTUsIDB4NjNFNSwgMHgyMTUwLCAweDYzRTYsIDB4NjNFNiwgMHg0ODlGLAorICAgIDB4NjNFNywgMHg2M0U3LCAweDI0MDQsIDB4NjNFOCwgMHg2M0U4LCAweDIxNTEsIDB4NjNFOSwgMHg2M0U5LCAweDBDNUUsCisgICAgMHg2M0VBLCAweDYzRUEsIDB4MEM2QiwgMHg2M0VCLCAweDYzRUIsIDB4MjNFOCwgMHg2M0VELCAweDYzRUUsIDB4MEM2NywKKyAgICAweDYzRUYsIDB4NjNFRiwgMHgyMTUyLCAweDYzRjAsIDB4NjNGMCwgMHgyMTY5LCAweDYzRjEsIDB4NjNGMSwgMHgyM0U3LAorICAgIDB4NjNGMiwgMHg2M0YyLCAweDIxNUEsIDB4NjNGMywgMHg2M0YzLCAweDIxNTUsIDB4NjNGNCwgMHg2M0Y0LCAweDBDNkEsCisgICAgMHg2M0Y1LCAweDYzRjUsIDB4MjE1QiwgMHg2M0Y2LCAweDYzRjYsIDB4MjE1OCwgMHg2M0Y4LCAweDYzRjgsIDB4NDE5MiwKKyAgICAweDYzRjksIDB4NjNGOSwgMHgwQzZGLCAweDYzRkIsIDB4NjNGQiwgMHg0NjQyLCAweDYzRkMsIDB4NjNGQywgMHgzRTlDLAorICAgIDB4NjNGRSwgMHg2M0ZFLCAweDNFOUUsIDB4NjQwNiwgMHg2NDA2LCAweDBFMkEsIDB4NjQwNywgMHg2NDA3LCAweDQ2NDMsCisgICAgMHg2NDA5LCAweDY0MDksIDB4MjNFQiwgMHg2NDBBLCAweDY0MEEsIDB4MjNGRSwgMHg2NDBCLCAweDY0MEIsIDB4MjQwMywKKyAgICAweDY0MEMsIDB4NjQwQywgMHgyM0Y3LCAweDY0MEQsIDB4NjQwRCwgMHgwRTI2LCAweDY0MEUsIDB4NjQwRSwgMHgyNDA4LAorICAgIDB4NjQwRiwgMHg2NDBGLCAweDBFMjMsIDB4NjQxMCwgMHg2NDEwLCAweDIzRTksIDB4NjQxMiwgMHg2NDEyLCAweDIzRUEsCisgICAgMHg2NDEzLCAweDY0MTMsIDB4MEUxQywgMHg2NDE0LCAweDY0MTQsIDB4MEUyNSwgMHg2NDE1LCAweDY0MTUsIDB4MjNGMSwKKyAgICAweDY0MTYsIDB4NjQxNywgMHgwRTI4LCAweDY0MTgsIDB4NjQxOCwgMHgyM0YyLCAweDY0MUEsIDB4NjQxQSwgMHgyM0ZGLAorICAgIDB4NjQxQiwgMHg2NDFCLCAweDI0MDUsIDB4NjQxQywgMHg2NDFDLCAweDBFMjQsIDB4NjQxRSwgMHg2NDFFLCAweDBFMUUsCisgICAgMHg2NDFGLCAweDY0MUYsIDB4MjNGMCwgMHg2NDIwLCAweDY0MjAsIDB4MjNFQywgMHg2NDIxLCAweDY0MjEsIDB4MjQwNywKKyAgICAweDY0MjIsIDB4NjQyMywgMHgyM0Y1LCAweDY0MjQsIDB4NjQyNCwgMHgyM0VELCAweDY0MjUsIDB4NjQyNSwgMHgyNDAxLAorICAgIDB4NjQyNiwgMHg2NDI2LCAweDIzRjgsIDB4NjQyNywgMHg2NDI3LCAweDI0MDIsIDB4NjQyOCwgMHg2NDI4LCAweDIzRkEsCisgICAgMHg2NDJBLCAweDY0MkEsIDB4MEUxRiwgMHg2NDJCLCAweDY0MkIsIDB4MjY5OSwgMHg2NDJDLCAweDY0MkMsIDB4MEUyMiwKKyAgICAweDY0MkQsIDB4NjQyRCwgMHgwRTIwLCAweDY0MkUsIDB4NjQyRSwgMHgyNDA2LCAweDY0MkYsIDB4NjQyRiwgMHgyM0ZELAorICAgIDB4NjQzMCwgMHg2NDMwLCAweDIzRjksIDB4NjQzMiwgMHg2NDMyLCAweDQ1RDksIDB4NjQzMywgMHg2NDMzLCAweDIzRUUsCisgICAgMHg2NDM0LCAweDY0MzQsIDB4MEZFNCwgMHg2NDM1LCAweDY0MzUsIDB4MjNGQywgMHg2NDM2LCAweDY0MzYsIDB4MEUyNywKKyAgICAweDY0MzcsIDB4NjQzNywgMHgyM0Y0LCAweDY0MzgsIDB4NjQzOCwgMHg0MTkxLCAweDY0MzksIDB4NjQzOSwgMHgyM0YzLAorICAgIDB4NjQzQSwgMHg2NDNBLCAweDQxOUQsIDB4NjQzQiwgMHg2NDNCLCAweDNBNkIsIDB4NjQzRCwgMHg2NDNELCAweDBFMjEsCisgICAgMHg2NDNFLCAweDY0M0UsIDB4MEUxRCwgMHg2NDNGLCAweDY0M0YsIDB4MjZBRSwgMHg2NDQwLCAweDY0NDAsIDB4MjQwMCwKKyAgICAweDY0NDEsIDB4NjQ0MSwgMHgyM0ZCLCAweDY0NDMsIDB4NjQ0MywgMHgyM0VGLCAweDY0NEIsIDB4NjQ0QiwgMHgyNkE5LAorICAgIDB4NjQ0RCwgMHg2NDRELCAweDI2OUEsIDB4NjQ0RSwgMHg2NDRFLCAweDI2QTUsIDB4NjQ1MCwgMHg2NDUwLCAweDI2QUMsCisgICAgMHg2NDUxLCAweDY0NTEsIDB4MEZFMiwgMHg2NDUyLCAweDY0NTIsIDB4MEM2RCwgMHg2NDUzLCAweDY0NTMsIDB4MjZBQSwKKyAgICAweDY0NTQsIDB4NjQ1NCwgMHgwRkRELCAweDY0NTgsIDB4NjQ1OCwgMHgwRkRDLCAweDY0NTksIDB4NjQ1OSwgMHgyNkIxLAorICAgIDB4NjQ1QSwgMHg2NDVBLCAweDQzQzIsIDB4NjQ1QiwgMHg2NDVCLCAweDI2OUIsIDB4NjQ1QywgMHg2NDVDLCAweDI2QTgsCisgICAgMHg2NDVELCAweDY0NUQsIDB4MjY5QywgMHg2NDVFLCAweDY0NUUsIDB4MjZBNywgMHg2NDVGLCAweDY0NUYsIDB4MEZFMCwKKyAgICAweDY0NjAsIDB4NjQ2MCwgMHgyNkFCLCAweDY0NjEsIDB4NjQ2MSwgMHgyMTVDLCAweDY0NjUsIDB4NjQ2NSwgMHgyNkIyLAorICAgIDB4NjQ2NiwgMHg2NDY2LCAweDI2QTMsIDB4NjQ2NywgMHg2NDY3LCAweDBGRTMsIDB4NjQ2OCwgMHg2NDY4LCAweDI4RUUsCisgICAgMHg2NDY5LCAweDY0NjksIDB4MTE1OSwgMHg2NDZCLCAweDY0NkIsIDB4MjZCMCwgMHg2NDZDLCAweDY0NkMsIDB4MjZBRiwKKyAgICAweDY0NkQsIDB4NjQ2RCwgMHgwRkU1LCAweDY0NkUsIDB4NjQ2RSwgMHgyOEUxLCAweDY0NkYsIDB4NjQ2RiwgMHgxMTVBLAorICAgIDB4NjQ3MCwgMHg2NDcwLCAweDI4RTIsIDB4NjQ3MSwgMHg2NDcxLCAweDNBNUIsIDB4NjQ3MiwgMHg2NDczLCAweDI2OUYsCisgICAgMHg2NDc0LCAweDY0NzQsIDB4MjY5RCwgMHg2NDc1LCAweDY0NzUsIDB4MjZBMiwgMHg2NDc2LCAweDY0NzYsIDB4MjY5RSwKKyAgICAweDY0NzcsIDB4NjQ3NywgMHgyNkIzLCAweDY0NzgsIDB4NjQ3OCwgMHgwRkRGLCAweDY0NzksIDB4NjQ3OSwgMHgxMTVCLAorICAgIDB4NjQ3QSwgMHg2NDdBLCAweDBGRTEsIDB4NjQ3QiwgMHg2NDdCLCAweDBGRTYsIDB4NjQ3QywgMHg2NDdDLCAweDQzNkMsCisgICAgMHg2NDdELCAweDY0N0QsIDB4MjZBMSwgMHg2NDdGLCAweDY0N0YsIDB4MjZBRCwgMHg2NDgyLCAweDY0ODIsIDB4MjZBNiwKKyAgICAweDY0ODUsIDB4NjQ4NSwgMHgyOEU1LCAweDY0ODcsIDB4NjQ4NywgMHgwRkRCLCAweDY0ODgsIDB4NjQ4OCwgMHgxMTVFLAorICAgIDB4NjQ4OSwgMHg2NDg5LCAweDJCNTQsIDB4NjQ4QSwgMHg2NDhBLCAweDI4RUEsIDB4NjQ4QiwgMHg2NDhCLCAweDI4RTksCisgICAgMHg2NDhDLCAweDY0OEMsIDB4MjhFQiwgMHg2NDhELCAweDY0OEQsIDB4NDMyMywgMHg2NDhGLCAweDY0OEYsIDB4MjhFOCwKKyAgICAweDY0OTAsIDB4NjQ5MCwgMHgxMTVGLCAweDY0OTEsIDB4NjQ5MSwgMHg0M0MzLCAweDY0OTIsIDB4NjQ5MiwgMHgxMTY1LAorICAgIDB4NjQ5MywgMHg2NDkzLCAweDExNjIsIDB4NjQ5NSwgMHg2NDk1LCAweDExNjMsIDB4NjQ5NiwgMHg2NDk2LCAweDI4RTMsCisgICAgMHg2NDk3LCAweDY0OTcsIDB4MjhFNiwgMHg2NDk4LCAweDY0OTgsIDB4MjhGMCwgMHg2NDk5LCAweDY0OTksIDB4MTE2QiwKKyAgICAweDY0OUEsIDB4NjQ5QSwgMHgxMTY5LCAweDY0OUMsIDB4NjQ5QywgMHgyOEU3LCAweDY0OUQsIDB4NjQ5RCwgMHgyMTU0LAorICAgIDB4NjQ5RSwgMHg2NDlFLCAweDExNUMsIDB4NjQ5RiwgMHg2NDlGLCAweDI4RUQsIDB4NjRBMCwgMHg2NEEwLCAweDI4RTQsCisgICAgMHg2NEEyLCAweDY0QTIsIDB4MTE2QywgMHg2NEEzLCAweDY0QTMsIDB4MjhFQywgMHg2NEE0LCAweDY0QTQsIDB4MEZERSwKKyAgICAweDY0QTUsIDB4NjRBNSwgMHgxMTYxLCAweDY0QTYsIDB4NjRBNiwgMHgyNkE0LCAweDY0QTksIDB4NjRBOSwgMHgxMTY0LAorICAgIDB4NjRBQiwgMHg2NEFCLCAweDExNjgsIDB4NjRBQywgMHg2NEFDLCAweDExNkEsIDB4NjRBRCwgMHg2NEFELCAweDExNjcsCisgICAgMHg2NEFFLCAweDY0QUUsIDB4MTE2NiwgMHg2NEFGLCAweDY0QUYsIDB4NDJFMSwgMHg2NEIwLCAweDY0QjAsIDB4MTE2MCwKKyAgICAweDY0QjEsIDB4NjRCMSwgMHgyOEVGLCAweDY0QjIsIDB4NjRCMiwgMHgxMTVELCAweDY0QjMsIDB4NjRCMywgMHgxMTZELAorICAgIDB4NjRCNCwgMHg2NEI0LCAweDQzNDAsIDB4NjRCNiwgMHg2NEI2LCAweDNBNjQsIDB4NjRCQiwgMHg2NEJDLCAweDEyQkIsCisgICAgMHg2NEJELCAweDY0QkQsIDB4MkI1MywgMHg2NEJFLCAweDY0QkUsIDB4MTJDNSwgMHg2NEJGLCAweDY0QkYsIDB4MTJDMiwKKyAgICAweDY0QzAsIDB4NjRDMCwgMHg0NjQ1LCAweDY0QzEsIDB4NjRDMSwgMHgxMkI5LCAweDY0QzIsIDB4NjRDMiwgMHgxMkMwLAorICAgIDB4NjRDMywgMHg2NEMzLCAweDJCNTUsIDB4NjRDNCwgMHg2NEM0LCAweDEyQkUsIDB4NjRDNSwgMHg2NEM1LCAweDEyQjgsCisgICAgMHg2NEM3LCAweDY0QzcsIDB4MTJCRiwgMHg2NEM5LCAweDY0QzksIDB4MkI1MiwgMHg2NENBLCAweDY0Q0EsIDB4MTNEOCwKKyAgICAweDY0Q0IsIDB4NjRDQiwgMHgxMkJBLCAweDY0Q0QsIDB4NjRDRCwgMHgxMkMxLCAweDY0Q0UsIDB4NjRDRSwgMHgxM0Q3LAorICAgIDB4NjRDRiwgMHg2NENGLCAweDJCNTEsIDB4NjREMCwgMHg2NEQwLCAweDJCNTAsIDB4NjREMiwgMHg2NEQyLCAweDEyQzMsCisgICAgMHg2NEQzLCAweDY0RDMsIDB4M0YwMywgMHg2NEQ0LCAweDY0RDQsIDB4MTJDNCwgMHg2NEQ2LCAweDY0RDYsIDB4MkI0RiwKKyAgICAweDY0RDcsIDB4NjRENywgMHgyQjRFLCAweDY0RDgsIDB4NjREOCwgMHgxM0Q5LCAweDY0RDksIDB4NjREOSwgMHgyQjU4LAorICAgIDB4NjREQSwgMHg2NERBLCAweDEyQkQsIDB4NjREQiwgMHg2NERCLCAweDJCNTYsIDB4NjRERCwgMHg2NERELCAweDQzMUUsCisgICAgMHg2NEUwLCAweDY0RTAsIDB4MTNEQSwgMHg2NEUxLCAweDY0RTEsIDB4NDE5OSwgMHg2NEUyLCAweDY0RTIsIDB4MTNERiwKKyAgICAweDY0RTMsIDB4NjRFMywgMHgyRDZBLCAweDY0RTQsIDB4NjRFNCwgMHgyRDZDLCAweDY0RTUsIDB4NjRFNSwgMHg0MTlBLAorICAgIDB4NjRFNiwgMHg2NEU2LCAweDEzREMsIDB4NjRFNywgMHg2NEU3LCAweDM3QTgsIDB4NjRFOCwgMHg2NEU4LCAweDJENkQsCisgICAgMHg2NEU5LCAweDY0RTksIDB4MkQ2OSwgMHg2NEVBLCAweDY0RUEsIDB4NDM0QSwgMHg2NEVCLCAweDY0RUIsIDB4MkQ2QiwKKyAgICAweDY0RUMsIDB4NjRFQywgMHgxM0RELCAweDY0RUQsIDB4NjRFRCwgMHgxM0UwLCAweDY0RUYsIDB4NjRFRiwgMHgyRDY4LAorICAgIDB4NjRGMCwgMHg2NEYwLCAweDEzREIsIDB4NjRGMSwgMHg2NEYxLCAweDEzREUsIDB4NjRGMiwgMHg2NEYyLCAweDE0RDMsCisgICAgMHg2NEYzLCAweDY0RjMsIDB4MkI1NywgMHg2NEY0LCAweDY0RjQsIDB4MTREMiwgMHg2NEY3LCAweDY0RjcsIDB4MTREOCwKKyAgICAweDY0RjgsIDB4NjRGOCwgMHgyRjJCLCAweDY0RkEsIDB4NjRGQiwgMHgxNEQ2LCAweDY0RkMsIDB4NjRGQywgMHgyRjJFLAorICAgIDB4NjRGRCwgMHg2NEZELCAweDJGMkEsIDB4NjRGRSwgMHg2NEZFLCAweDE0RDQsIDB4NjRGRiwgMHg2NEZGLCAweDJGMjgsCisgICAgMHg2NTAwLCAweDY1MDAsIDB4MTU4MiwgMHg2NTAxLCAweDY1MDEsIDB4MkYyQywgMHg2NTAzLCAweDY1MDMsIDB4MkYyRCwKKyAgICAweDY1MDQsIDB4NjUwNCwgMHgyRjI5LCAweDY1MDYsIDB4NjUwNiwgMHgxNEQ1LCAweDY1MDcsIDB4NjUwNywgMHgzMDkwLAorICAgIDB4NjUwOSwgMHg2NTA5LCAweDMwOTMsIDB4NjUwQSwgMHg2NTBBLCAweDQ1MzYsIDB4NjUwQywgMHg2NTBDLCAweDMwOTQsCisgICAgMHg2NTBELCAweDY1MEQsIDB4MzA5MiwgMHg2NTBFLCAweDY1MEUsIDB4MzA5NSwgMHg2NTBGLCAweDY1MEYsIDB4MTU4MywKKyAgICAweDY1MTAsIDB4NjUxMCwgMHgzMDkxLCAweDY1MTEsIDB4NjUxMSwgMHgzQUE5LCAweDY1MTMsIDB4NjUxMywgMHgzMUQ3LAorICAgIDB4NjUxNCwgMHg2NTE0LCAweDE2MTcsIDB4NjUxNSwgMHg2NTE1LCAweDMxRDYsIDB4NjUxNiwgMHg2NTE2LCAweDMxRDUsCisgICAgMHg2NTE3LCAweDY1MTcsIDB4MzFENCwgMHg2NTE4LCAweDY1MTgsIDB4MTYxNiwgMHg2NTE5LCAweDY1MTksIDB4MTYxOCwKKyAgICAweDY1MUIsIDB4NjUxQiwgMHgzMkQyLCAweDY1MUMsIDB4NjUxQywgMHgxNjczLCAweDY1MUQsIDB4NjUxRCwgMHgxNjcyLAorICAgIDB4NjUxRSwgMHg2NTFFLCAweDQxODcsIDB4NjUxRiwgMHg2NTFGLCAweDNFQzAsIDB4NjUyMCwgMHg2NTIwLCAweDMzODIsCisgICAgMHg2NTIxLCAweDY1MjEsIDB4MzM4MSwgMHg2NTIyLCAweDY1MjIsIDB4MzM4NCwgMHg2NTIzLCAweDY1MjMsIDB4MTZGOSwKKyAgICAweDY1MjQsIDB4NjUyNCwgMHgxNkM1LCAweDY1MjUsIDB4NjUyNSwgMHgzNDFCLCAweDY1MjYsIDB4NjUyNiwgMHgzMzgzLAorICAgIDB4NjUyOSwgMHg2NTI5LCAweDM0MUEsIDB4NjUyQSwgMHg2NTJBLCAweDE2RkIsIDB4NjUyQiwgMHg2NTJCLCAweDE2RkEsCisgICAgMHg2NTJDLCAweDY1MkMsIDB4MTcyMSwgMHg2NTJELCAweDY1MkQsIDB4MzQ4NCwgMHg2NTJFLCAweDY1MkUsIDB4MzRDQSwKKyAgICAweDY1MkYsIDB4NjUyRiwgMHgwMkQ1LCAweDY1MzAsIDB4NjUzMCwgMHgzRTYyLCAweDY1MzIsIDB4NjUzMiwgMHgyMTZDLAorICAgIDB4NjUzMywgMHg2NTMzLCAweDJCNTksIDB4NjUzNCwgMHg2NTM0LCAweDAyMkMsIDB4NjUzNSwgMHg2NTM1LCAweDQ0RUQsCisgICAgMHg2NTM2LCAweDY1MzYsIDB4MDNENywgMHg2NTM3LCAweDY1MzcsIDB4MTdGNiwgMHg2NTM4LCAweDY1MzgsIDB4MDRCOSwKKyAgICAweDY1MzksIDB4NjUzOSwgMHgwNEI3LCAweDY1M0IsIDB4NjUzQiwgMHgwNEI4LCAweDY1M0QsIDB4NjUzRCwgMHgxOUExLAorICAgIDB4NjUzRSwgMHg2NTNFLCAweDA1RjMsIDB4NjUzRiwgMHg2NTNGLCAweDA3NDEsIDB4NjU0MSwgMHg2NTQxLCAweDFCMDEsCisgICAgMHg2NTQzLCAweDY1NDMsIDB4MUIwMiwgMHg2NTQ1LCAweDY1NDUsIDB4MDc0MiwgMHg2NTQ2LCAweDY1NDYsIDB4MUNCRiwKKyAgICAweDY1NDgsIDB4NjU0OSwgMHgwOEQ2LCAweDY1NEEsIDB4NjU0QSwgMHgxQ0JFLCAweDY1NEQsIDB4NjU0RCwgMHg0MTlGLAorICAgIDB4NjU0RiwgMHg2NTRGLCAweDBBQkQsIDB4NjU1MSwgMHg2NTUxLCAweDBBQjksIDB4NjU1MywgMHg2NTUzLCAweDFGMEMsCisgICAgMHg2NTU0LCAweDY1NTQsIDB4MEFDMCwgMHg2NTU1LCAweDY1NTUsIDB4MEFCRiwgMHg2NTU2LCAweDY1NTYsIDB4MEFCOCwKKyAgICAweDY1NTcsIDB4NjU1NywgMHgwQUJCLCAweDY1NTgsIDB4NjU1OCwgMHgwQUJFLCAweDY1NTksIDB4NjU1OSwgMHgwQUJBLAorICAgIDB4NjU1QywgMHg2NTVDLCAweDIxNzAsIDB4NjU1RCwgMHg2NTVELCAweDBBQjcsIDB4NjU1RSwgMHg2NTVFLCAweDBDNzAsCisgICAgMHg2NTVGLCAweDY1NUYsIDB4NDFBNSwgMHg2NTYyLCAweDY1NjMsIDB4MEM3MiwgMHg2NTY0LCAweDY1NjQsIDB4MjE2RiwKKyAgICAweDY1NjUsIDB4NjU2NSwgMHgyMTcyLCAweDY1NjYsIDB4NjU2NiwgMHgwQzcxLCAweDY1NjcsIDB4NjU2NywgMHgyMTZELAorICAgIDB4NjU2OCwgMHg2NTY4LCAweDIxNzEsIDB4NjU2QSwgMHg2NTZBLCAweDIxNkUsIDB4NjU2QiwgMHg2NTZCLCAweDNBNkMsCisgICAgMHg2NTZDLCAweDY1NkMsIDB4MEUyQiwgMHg2NTZELCAweDY1NkQsIDB4NDFBNCwgMHg2NTZGLCAweDY1NkYsIDB4MjQwOSwKKyAgICAweDY1NzIsIDB4NjU3MiwgMHgwRkU3LCAweDY1NzMsIDB4NjU3MywgMHgyNkI0LCAweDY1NzQsIDB4NjU3NCwgMHgxMkM2LAorICAgIDB4NjU3NSwgMHg2NTc1LCAweDExNkUsIDB4NjU3NiwgMHg2NTc2LCAweDI4RjEsIDB4NjU3NywgMHg2NTc4LCAweDExNkYsCisgICAgMHg2NTc5LCAweDY1NzksIDB4MjhGMywgMHg2NTdBLCAweDY1N0EsIDB4MjhGMiwgMHg2NTdCLCAweDY1N0IsIDB4MjhGNCwKKyAgICAweDY1N0MsIDB4NjU3QywgMHgyQjVCLCAweDY1N0YsIDB4NjU3RiwgMHgyQjVBLCAweDY1ODAsIDB4NjU4MCwgMHgyRDZGLAorICAgIDB4NjU4MSwgMHg2NTgxLCAweDJENkUsIDB4NjU4MiwgMHg2NTgzLCAweDEzRTEsIDB4NjU4NCwgMHg2NTg0LCAweDMwOTYsCisgICAgMHg2NTg1LCAweDY1ODUsIDB4NDFBMywgMHg2NTg2LCAweDY1ODYsIDB4NDY0OCwgMHg2NTg3LCAweDY1ODcsIDB4MDJENiwKKyAgICAweDY1ODgsIDB4NjU4OCwgMHg0MTBCLCAweDY1ODksIDB4NjU4OSwgMHg0NTU0LCAweDY1OEMsIDB4NjU4QywgMHgyMTczLAorICAgIDB4NjU5MCwgMHg2NTkwLCAweDBDNzUsIDB4NjU5MSwgMHg2NTkxLCAweDBDNzQsIDB4NjU5MiwgMHg2NTkyLCAweDI0MEEsCisgICAgMHg2NTk0LCAweDY1OTQsIDB4MkYyRiwgMHg2NTk1LCAweDY1OTUsIDB4MTY3NCwgMHg2NTk2LCAweDY1OTYsIDB4MzQxQywKKyAgICAweDY1OTcsIDB4NjU5NywgMHgwMkQ3LCAweDY1OTksIDB4NjU5OSwgMHgwOEQ4LCAweDY1OUIsIDB4NjU5QiwgMHgwQUMyLAorICAgIDB4NjU5QywgMHg2NTlDLCAweDBBQzEsIDB4NjU5RCwgMHg2NTlFLCAweDIxNzQsIDB4NjU5RiwgMHg2NTlGLCAweDBFMkMsCisgICAgMHg2NUEwLCAweDY1QTAsIDB4MjZCNSwgMHg2NUExLCAweDY1QTEsIDB4MEZFOCwgMHg2NUEyLCAweDY1QTIsIDB4MkI1QywKKyAgICAweDY1QTQsIDB4NjVBNCwgMHgwMkQ4LCAweDY1QTUsIDB4NjVBNSwgMHgwMzQ2LCAweDY1QTcsIDB4NjVBNywgMHgwNUY0LAorICAgIDB4NjVBOCwgMHg2NUE4LCAweDE5QTIsIDB4NjVBQSwgMHg2NUFBLCAweDFCMDMsIDB4NjVBQiwgMHg2NUFCLCAweDA3NDMsCisgICAgMHg2NUFDLCAweDY1QUMsIDB4MEFDMywgMHg2NUFFLCAweDY1QUUsIDB4MjE3NiwgMHg2NUFGLCAweDY1QUYsIDB4MEM3NiwKKyAgICAweDY1QjAsIDB4NjVCMCwgMHgwRTJELCAweDY1QjIsIDB4NjVCMywgMHgyOEY1LCAweDY1QjUsIDB4NjVCNSwgMHg0MUE3LAorICAgIDB4NjVCNiwgMHg2NUI2LCAweDJENzAsIDB4NjVCNywgMHg2NUI3LCAweDE0RDksIDB4NjVCOCwgMHg2NUI4LCAweDM0Q0IsCisgICAgMHg2NUI5LCAweDY1QjksIDB4MDJEOSwgMHg2NUJCLCAweDY1QkIsIDB4MTlBMywgMHg2NUJDLCAweDY1QkMsIDB4MDVGNSwKKyAgICAweDY1QkQsIDB4NjVCRCwgMHgwNzQ0LCAweDY1QkUsIDB4NjVCRSwgMHgzRTNCLCAweDY1QkYsIDB4NjVCRiwgMHgxQjA0LAorICAgIDB4NjVDMSwgMHg2NUMxLCAweDA4RDksIDB4NjVDMiwgMHg2NUMyLCAweDFDQzMsIDB4NjVDMywgMHg2NUM0LCAweDFDQzEsCisgICAgMHg2NUM1LCAweDY1QzUsIDB4MDhEQSwgMHg2NUM2LCAweDY1QzYsIDB4MUNDMCwgMHg2NUNCLCAweDY1Q0MsIDB4MEFDNSwKKyAgICAweDY1Q0QsIDB4NjVDRCwgMHgxRjBELCAweDY1Q0UsIDB4NjVDRSwgMHgwQUM3LCAweDY1Q0YsIDB4NjVDRiwgMHgwQUM0LAorICAgIDB4NjVEMCwgMHg2NUQwLCAweDIxNzcsIDB4NjVEMSwgMHg2NUQxLCAweDQxQUEsIDB4NjVEMiwgMHg2NUQyLCAweDIxNzgsCisgICAgMHg2NUQzLCAweDY1RDMsIDB4MjQwQiwgMHg2NUQ0LCAweDY1RDQsIDB4M0JBOCwgMHg2NUQ2LCAweDY1RDYsIDB4MEZFQSwKKyAgICAweDY1RDcsIDB4NjVENywgMHgwRkU5LCAweDY1REEsIDB4NjVEQSwgMHgyRDcxLCAweDY1REIsIDB4NjVEQiwgMHgyRjMwLAorICAgIDB4NjVERCwgMHg2NURELCAweDMwOTgsIDB4NjVERSwgMHg2NURFLCAweDMwOTcsIDB4NjVERiwgMHg2NURGLCAweDMxRDgsCisgICAgMHg2NUUwLCAweDY1RTAsIDB4MDIyRCwgMHg2NUUxLCAweDY1RTEsIDB4MTc4OSwgMHg2NUUyLCAweDY1RTIsIDB4MDc0NSwKKyAgICAweDY1RTMsIDB4NjVFMywgMHg0MUFFLCAweDY1RTUsIDB4NjVFNSwgMHgwMkRBLCAweDY1RTYsIDB4NjVFNiwgMHgwMzQ3LAorICAgIDB4NjVFOCwgMHg2NUU4LCAweDAzRDksIDB4NjVFOSwgMHg2NUU5LCAweDAzRDgsIDB4NjVFQywgMHg2NUVELCAweDAzREEsCisgICAgMHg2NUVFLCAweDY1RUUsIDB4MTdGOCwgMHg2NUVGLCAweDY1RUYsIDB4MTdGNywgMHg2NUYwLCAweDY1RjAsIDB4MTg5RSwKKyAgICAweDY1RjEsIDB4NjVGMSwgMHgwNEJBLCAweDY1RjIsIDB4NjVGMiwgMHgxOEExLCAweDY1RjMsIDB4NjVGMywgMHgxOEEwLAorICAgIDB4NjVGNCwgMHg2NUY0LCAweDE4OUYsIDB4NjVGNSwgMHg2NUY1LCAweDE4QTIsIDB4NjVGQSwgMHg2NUZBLCAweDA1RjYsCisgICAgMHg2NUZCLCAweDY1RkIsIDB4MTlBOSwgMHg2NUZDLCAweDY1RkMsIDB4MTlBNSwgMHg2NUZELCAweDY1RkQsIDB4MTlBRSwKKyAgICAweDY1RkYsIDB4NjVGRiwgMHg0NjRBLCAweDY2MDAsIDB4NjYwMCwgMHgwNUZELCAweDY2MDIsIDB4NjYwMiwgMHgwNUZCLAorICAgIDB4NjYwMywgMHg2NjAzLCAweDE5QUEsIDB4NjYwNCwgMHg2NjA0LCAweDE5QTYsIDB4NjYwNSwgMHg2NjA1LCAweDE5QUQsCisgICAgMHg2NjA2LCAweDY2MDYsIDB4MDVGQSwgMHg2NjA3LCAweDY2MDcsIDB4MDYwMSwgMHg2NjA4LCAweDY2MDgsIDB4MTlBOCwKKyAgICAweDY2MDksIDB4NjYwOSwgMHgxOUE0LCAweDY2MEEsIDB4NjYwQSwgMHgwNjAwLCAweDY2MEIsIDB4NjYwQiwgMHgxOUFCLAorICAgIDB4NjYwQywgMHg2NjBDLCAweDA1RjksIDB4NjYwRCwgMHg2NjBELCAweDE5QUMsIDB4NjYwRSwgMHg2NjBFLCAweDA1RkMsCisgICAgMHg2NjBGLCAweDY2MEYsIDB4MDVGRSwgMHg2NjEwLCAweDY2MTAsIDB4MTlCMCwgMHg2NjExLCAweDY2MTEsIDB4MTlBRiwKKyAgICAweDY2MTIsIDB4NjYxMiwgMHgxOUE3LCAweDY2MTMsIDB4NjYxMywgMHgwNUY4LCAweDY2MTQsIDB4NjYxNCwgMHgwNUY3LAorICAgIDB4NjYxNSwgMHg2NjE1LCAweDA1RkYsIDB4NjYxOCwgMHg2NjE4LCAweDQxQjEsIDB4NjYxQywgMHg2NjFDLCAweDFCMDksCisgICAgMHg2NjFELCAweDY2MUQsIDB4MUIwRiwgMHg2NjFFLCAweDY2MUUsIDB4M0E5MywgMHg2NjFGLCAweDY2MUYsIDB4MDc0QiwKKyAgICAweDY2MjAsIDB4NjYyMCwgMHgwNzQ4LCAweDY2MjEsIDB4NjYyMSwgMHgxQjA2LCAweDY2MjIsIDB4NjYyMiwgMHgxQjBCLAorICAgIDB4NjYyMywgMHg2NjIzLCAweDQyOTUsIDB4NjYyNCwgMHg2NjI0LCAweDA3NEUsIDB4NjYyNSwgMHg2NjI1LCAweDA3NDYsCisgICAgMHg2NjI2LCAweDY2MjYsIDB4MUIwQSwgMHg2NjI3LCAweDY2MjcsIDB4MDc0OSwgMHg2NjI4LCAweDY2MjgsIDB4MDc0QywKKyAgICAweDY2MkIsIDB4NjYyQiwgMHgxQjBELCAweDY2MkQsIDB4NjYyRCwgMHgwNzQ3LCAweDY2MkUsIDB4NjYyRSwgMHgxQjEyLAorICAgIDB4NjYyRiwgMHg2NjJGLCAweDA3NEEsIDB4NjYzMCwgMHg2NjMwLCAweDNBOEQsIDB4NjYzMSwgMHg2NjMxLCAweDA3NEQsCisgICAgMHg2NjMyLCAweDY2MzIsIDB4MUIwNywgMHg2NjMzLCAweDY2MzMsIDB4MUIwQywgMHg2NjM0LCAweDY2MzQsIDB4MUIxMCwKKyAgICAweDY2MzUsIDB4NjYzNSwgMHgxQjA4LCAweDY2MzYsIDB4NjYzNiwgMHgxQjA1LCAweDY2MzksIDB4NjYzOSwgMHgxQjExLAorICAgIDB4NjYzQSwgMHg2NjNBLCAweDFCMEUsIDB4NjY0MSwgMHg2NjQxLCAweDA4RTIsIDB4NjY0MiwgMHg2NjQyLCAweDA4REIsCisgICAgMHg2NjQzLCAweDY2NDMsIDB4MDhERSwgMHg2NjQ0LCAweDY2NDQsIDB4NDFCNCwgMHg2NjQ1LCAweDY2NDUsIDB4MDhFMSwKKyAgICAweDY2NDcsIDB4NjY0NywgMHgxQ0M2LCAweDY2NDgsIDB4NjY0OCwgMHgzRDk5LCAweDY2NDksIDB4NjY0OSwgMHgwOERDLAorICAgIDB4NjY0QSwgMHg2NjRBLCAweDFDQzQsIDB4NjY0QiwgMHg2NjRCLCAweDQxQjcsIDB4NjY0QywgMHg2NjRDLCAweDA4RTAsCisgICAgMHg2NjRGLCAweDY2NEYsIDB4MDhERCwgMHg2NjUxLCAweDY2NTEsIDB4MUNDNywgMHg2NjUyLCAweDY2NTIsIDB4MDhERiwKKyAgICAweDY2NTMsIDB4NjY1MywgMHg0NjRCLCAweDY2NTcsIDB4NjY1NywgMHg0MDlCLCAweDY2NTksIDB4NjY1OSwgMHgxRjExLAorICAgIDB4NjY1QSwgMHg2NjVBLCAweDBBQzksIDB4NjY1QiwgMHg2NjVCLCAweDFGMTAsIDB4NjY1QywgMHg2NjVDLCAweDFGMTIsCisgICAgMHg2NjVELCAweDY2NUQsIDB4MEFDOCwgMHg2NjVFLCAweDY2NUUsIDB4MEFDRCwgMHg2NjVGLCAweDY2NUYsIDB4MUNDNSwKKyAgICAweDY2NjEsIDB4NjY2MSwgMHgxRjBGLCAweDY2NjIsIDB4NjY2MiwgMHgxRjEzLCAweDY2NjMsIDB4NjY2MywgMHgzQTkwLAorICAgIDB4NjY2NCwgMHg2NjY0LCAweDBBQ0EsIDB4NjY2NSwgMHg2NjY1LCAweDFGMEUsIDB4NjY2NiwgMHg2NjY2LCAweDBBQ0MsCisgICAgMHg2NjY3LCAweDY2NjcsIDB4NDFCOSwgMHg2NjY4LCAweDY2NjgsIDB4MEFDQiwgMHg2NjZBLCAweDY2NkEsIDB4MjE3RiwKKyAgICAweDY2NkIsIDB4NjY2QiwgMHgzQThCLCAweDY2NkMsIDB4NjY2QywgMHgyMTdBLCAweDY2NkUsIDB4NjY2RSwgMHgwQzc3LAorICAgIDB4NjY2RiwgMHg2NjZGLCAweDBDN0IsIDB4NjY3MCwgMHg2NjcwLCAweDBDNzgsIDB4NjY3MSwgMHg2NjcxLCAweDIxN0QsCisgICAgMHg2NjcyLCAweDY2NzIsIDB4MjE4MCwgMHg2NjczLCAweDY2NzMsIDB4NDFCQiwgMHg2Njc0LCAweDY2NzQsIDB4MEM3OSwKKyAgICAweDY2NzYsIDB4NjY3NiwgMHgwQzdBLCAweDY2NzcsIDB4NjY3NywgMHgwQzdGLCAweDY2NzgsIDB4NjY3OCwgMHgyNDE0LAorICAgIDB4NjY3OSwgMHg2Njc5LCAweDIxN0UsIDB4NjY3QSwgMHg2NjdBLCAweDBDN0QsIDB4NjY3QiwgMHg2NjdCLCAweDIxN0IsCisgICAgMHg2NjdDLCAweDY2N0MsIDB4MjE3OSwgMHg2NjdELCAweDY2N0QsIDB4NDY5QiwgMHg2NjdFLCAweDY2N0UsIDB4MEM3RSwKKyAgICAweDY2ODAsIDB4NjY4MCwgMHgyMTdDLCAweDY2ODQsIDB4NjY4NCwgMHgwRTMzLCAweDY2ODUsIDB4NjY4NSwgMHg0MTYyLAorICAgIDB4NjY4NiwgMHg2Njg2LCAweDI0MEMsIDB4NjY4NywgMHg2Njg4LCAweDBFMzAsIDB4NjY4OSwgMHg2Njg5LCAweDBFMkYsCisgICAgMHg2NjhBLCAweDY2OEEsIDB4MjQxMSwgMHg2NjhCLCAweDY2OEIsIDB4MjQxMCwgMHg2NjhDLCAweDY2OEMsIDB4MjQwRCwKKyAgICAweDY2OEQsIDB4NjY4RCwgMHgwRTM1LCAweDY2OEUsIDB4NjY4RSwgMHgzQTg5LCAweDY2OTAsIDB4NjY5MCwgMHgyNDBGLAorICAgIDB4NjY5MSwgMHg2NjkxLCAweDBDN0MsIDB4NjY5MiwgMHg2NjkyLCAweDQ2NEQsIDB4NjY5NCwgMHg2Njk0LCAweDI0MTMsCisgICAgMHg2Njk1LCAweDY2OTUsIDB4MjQwRSwgMHg2Njk2LCAweDY2OTYsIDB4MEUzMiwgMHg2Njk3LCAweDY2OTcsIDB4MEUyRSwKKyAgICAweDY2OTgsIDB4NjY5OCwgMHgwRTM0LCAweDY2OTksIDB4NjY5OSwgMHgyNDEyLCAweDY2OUEsIDB4NjY5QSwgMHgzRDNELAorICAgIDB4NjY5RCwgMHg2NjlELCAweDBGRUQsIDB4NjY5RiwgMHg2NjlGLCAweDI2QjgsIDB4NjZBMCwgMHg2NkEwLCAweDI2QjcsCisgICAgMHg2NkExLCAweDY2QTEsIDB4MjZCNiwgMHg2NkEyLCAweDY2QTIsIDB4MEZFQiwgMHg2NkE0LCAweDY2QTQsIDB4NDBCQSwKKyAgICAweDY2QTgsIDB4NjZBOCwgMHgwRkVDLCAweDY2QTksIDB4NjZBOSwgMHgyOEY5LCAweDY2QUEsIDB4NjZBQSwgMHgyOEZDLAorICAgIDB4NjZBQiwgMHg2NkFCLCAweDExNzIsIDB4NjZBRCwgMHg2NkFELCAweDQ5NDgsIDB4NjZBRSwgMHg2NkFFLCAweDExNzEsCisgICAgMHg2NkFGLCAweDY2QUYsIDB4MjhGRCwgMHg2NkIwLCAweDY2QjAsIDB4MjhGOCwgMHg2NkIxLCAweDY2QjEsIDB4MTE3NCwKKyAgICAweDY2QjIsIDB4NjZCMiwgMHgyOEZBLCAweDY2QjMsIDB4NjZCMywgMHg0MEI1LCAweDY2QjQsIDB4NjZCNCwgMHgxMTczLAorICAgIDB4NjZCNSwgMHg2NkI1LCAweDI4RjcsIDB4NjZCNiwgMHg2NkI2LCAweDNFMTMsIDB4NjZCNywgMHg2NkI3LCAweDI4RkIsCisgICAgMHg2NkI4LCAweDY2QjgsIDB4MTJDQywgMHg2NkI5LCAweDY2QjksIDB4MTJDOSwgMHg2NkJBLCAweDY2QkEsIDB4MkI2NSwKKyAgICAweDY2QkIsIDB4NjZCQiwgMHgyQjY0LCAweDY2QkQsIDB4NjZCRCwgMHgyQjYzLCAweDY2QkUsIDB4NjZCRSwgMHgyQjVFLAorICAgIDB4NjZCRiwgMHg2NkJGLCAweDNEOUEsIDB4NjZDMCwgMHg2NkMwLCAweDJCNUYsIDB4NjZDNCwgMHg2NkM0LCAweDEyQ0EsCisgICAgMHg2NkM2LCAweDY2QzYsIDB4MTJDNywgMHg2NkM3LCAweDY2QzcsIDB4MTJDQiwgMHg2NkM4LCAweDY2QzgsIDB4MkI1RCwKKyAgICAweDY2QzksIDB4NjZDOSwgMHgxMkM4LCAweDY2Q0EsIDB4NjZDQiwgMHgyQjYwLCAweDY2Q0MsIDB4NjZDQywgMHgyQjY2LAorICAgIDB4NjZDRCwgMHg2NkNELCAweDQwQjgsIDB4NjZDRSwgMHg2NkNFLCAweDNBNzcsIDB4NjZDRiwgMHg2NkNGLCAweDJCNjIsCisgICAgMHg2NkQyLCAweDY2RDIsIDB4MkQ3MiwgMHg2NkQ2LCAweDY2RDYsIDB4MTNFNCwgMHg2NkQ4LCAweDY2RDgsIDB4MkYzMywKKyAgICAweDY2RDksIDB4NjZEOSwgMHgxM0UzLCAweDY2REEsIDB4NjZEQiwgMHgyRjMxLCAweDY2REMsIDB4NjZEQywgMHgxNERBLAorICAgIDB4NjZERCwgMHg2NkRELCAweDE1ODUsIDB4NjZERSwgMHg2NkRFLCAweDMwOTksIDB4NjZFMCwgMHg2NkUwLCAweDE1ODQsCisgICAgMHg2NkUzLCAweDY2RTQsIDB4MzFEQSwgMHg2NkU2LCAweDY2RTYsIDB4MTYxOSwgMHg2NkU4LCAweDY2RTgsIDB4MzFEOSwKKyAgICAweDY2RTksIDB4NjZFOSwgMHgxNjc1LCAweDY2RUIsIDB4NjZFQiwgMHgzNDFELCAweDY2RUMsIDB4NjZFQywgMHgxNkZDLAorICAgIDB4NjZFRCwgMHg2NkVFLCAweDM0ODUsIDB4NjZGMCwgMHg2NkYwLCAweDAyREIsIDB4NjZGMSwgMHg2NkYxLCAweDNFODQsCisgICAgMHg2NkYyLCAweDY2RjMsIDB4MDNEQywgMHg2NkY0LCAweDY2RjQsIDB4MDRCQiwgMHg2NkY2LCAweDY2RjYsIDB4MTlCMSwKKyAgICAweDY2RjcsIDB4NjZGNywgMHgwNzRGLCAweDY2RjgsIDB4NjZGOCwgMHgwOEUzLCAweDY2RjksIDB4NjZGOSwgMHgwQUNFLAorICAgIDB4NjZGQywgMHg2NkZDLCAweDBBMUYsIDB4NjZGRSwgMHg2NkZGLCAweDBDODAsIDB4NjcwMCwgMHg2NzAwLCAweDBCRjAsCisgICAgMHg2NzAxLCAweDY3MDEsIDB4MjE4MSwgMHg2NzAyLCAweDY3MDIsIDB4NDFDNCwgMHg2NzAzLCAweDY3MDMsIDB4MEUzNiwKKyAgICAweDY3MDQsIDB4NjcwNCwgMHgyNkJBLCAweDY3MDUsIDB4NjcwNSwgMHgyNkI5LCAweDY3MDgsIDB4NjcwOCwgMHgwMkRDLAorICAgIDB4NjcwOSwgMHg2NzA5LCAweDAzREUsIDB4NjcwQSwgMHg2NzBBLCAweDE5QjIsIDB4NjcwQiwgMHg2NzBCLCAweDA2MDMsCisgICAgMHg2NzBDLCAweDY3MEMsIDB4M0ZFMiwgMHg2NzBELCAweDY3MEQsIDB4MDYwMiwgMHg2NzBFLCAweDY3MEUsIDB4M0RBMSwKKyAgICAweDY3MEYsIDB4NjcxMCwgMHgxQjEzLCAweDY3MTIsIDB4NjcxMywgMHgxQ0M4LCAweDY3MTQsIDB4NjcxNSwgMHgwOEU0LAorICAgIDB4NjcxNiwgMHg2NzE2LCAweDQ2NEYsIDB4NjcxNywgMHg2NzE3LCAweDA4RTYsIDB4NjcxOCwgMHg2NzE4LCAweDFGMTQsCisgICAgMHg2NzFCLCAweDY3MUIsIDB4MEFEMCwgMHg2NzFELCAweDY3MUQsIDB4MEM4MywgMHg2NzFFLCAweDY3MUUsIDB4M0Q4QiwKKyAgICAweDY3MUYsIDB4NjcxRiwgMHgwQzgyLCAweDY3MjAsIDB4NjcyMCwgMHgyNDE1LCAweDY3MjEsIDB4NjcyMSwgMHgyNTIyLAorICAgIDB4NjcyMiwgMHg2NzIyLCAweDI2QkIsIDB4NjcyMywgMHg2NzIzLCAweDJCNjcsIDB4NjcyNSwgMHg2NzI1LCAweDM3OUYsCisgICAgMHg2NzI2LCAweDY3MjYsIDB4MTREQiwgMHg2NzI3LCAweDY3MjcsIDB4MTYxQSwgMHg2NzI4LCAweDY3MjgsIDB4MDJERCwKKyAgICAweDY3MkEsIDB4NjcyQiwgMHgwMzRBLCAweDY3MkMsIDB4NjcyQywgMHgwMzQ5LCAweDY3MkQsIDB4NjcyRCwgMHgwMzRDLAorICAgIDB4NjcyRSwgMHg2NzJFLCAweDAzNDgsIDB4NjczMSwgMHg2NzMxLCAweDAzRTEsIDB4NjczMywgMHg2NzMzLCAweDE4MDAsCisgICAgMHg2NzM0LCAweDY3MzQsIDB4MDNFMCwgMHg2NzM1LCAweDY3MzUsIDB4MDNFMiwgMHg2NzM2LCAweDY3MzYsIDB4M0U0MSwKKyAgICAweDY3MzgsIDB4NjczOCwgMHgxN0ZCLCAweDY3MzksIDB4NjczOSwgMHgxN0ZBLCAweDY3M0EsIDB4NjczQSwgMHgxN0ZELAorICAgIDB4NjczQiwgMHg2NzNCLCAweDE3RkMsIDB4NjczQywgMHg2NzNDLCAweDE3RkYsIDB4NjczRCwgMHg2NzNELCAweDAzREYsCisgICAgMHg2NzNFLCAweDY3M0UsIDB4MTdGOSwgMHg2NzNGLCAweDY3M0YsIDB4MTdGRSwgMHg2NzQ0LCAweDY3NDQsIDB4NDAxQiwKKyAgICAweDY3NDUsIDB4Njc0NSwgMHgxOEEzLCAweDY3NDYsIDB4Njc0NiwgMHgwNEM1LCAweDY3NDcsIDB4Njc0NywgMHgxOEE0LAorICAgIDB4Njc0OCwgMHg2NzQ4LCAweDE4QTgsIDB4Njc0OSwgMHg2NzQ5LCAweDA0QzQsIDB4Njc0QiwgMHg2NzRCLCAweDE4QUMsCisgICAgMHg2NzRDLCAweDY3NEMsIDB4MThBNywgMHg2NzRELCAweDY3NEQsIDB4MThBQSwgMHg2NzRFLCAweDY3NTEsIDB4MDRCRCwKKyAgICAweDY3NTMsIDB4Njc1MywgMHgwNEM3LCAweDY3NTUsIDB4Njc1NSwgMHgxOEE2LCAweDY3NTYsIDB4Njc1NiwgMHgwNEMyLAorICAgIDB4Njc1NywgMHg2NzU3LCAweDA0QzgsIDB4Njc1OSwgMHg2NzU5LCAweDE4QTUsIDB4Njc1QSwgMHg2NzVBLCAweDE4QUIsCisgICAgMHg2NzVDLCAweDY3NUMsIDB4MDRDMSwgMHg2NzVELCAweDY3NUQsIDB4MThBOSwgMHg2NzVFLCAweDY3NUUsIDB4MDRDMywKKyAgICAweDY3NUYsIDB4Njc1RiwgMHgwNEJDLCAweDY3NjAsIDB4Njc2MCwgMHgwNEM2LCAweDY3NjEsIDB4Njc2MSwgMHgzRDY2LAorICAgIDB4Njc2MiwgMHg2NzYyLCAweDQxQ0IsIDB4Njc2NywgMHg2NzY3LCAweDQxQ0EsIDB4Njc2QSwgMHg2NzZBLCAweDA2MTgsCisgICAgMHg2NzZDLCAweDY3NkMsIDB4MTlCNCwgMHg2NzZELCAweDY3NkQsIDB4MDYwNCwgMHg2NzZGLCAweDY3NzAsIDB4MDYwRSwKKyAgICAweDY3NzEsIDB4Njc3MSwgMHgwNjA3LCAweDY3NzIsIDB4Njc3MiwgMHgwNjE5LCAweDY3NzMsIDB4Njc3MywgMHgwNjA5LAorICAgIDB4Njc3NCwgMHg2Nzc0LCAweDE5QkMsIDB4Njc3NSwgMHg2Nzc1LCAweDA2MTQsIDB4Njc3NiwgMHg2Nzc2LCAweDE5QjcsCisgICAgMHg2Nzc3LCAweDY3NzcsIDB4MDYwQSwgMHg2Nzc4LCAweDY3NzksIDB4MTlDNiwgMHg2NzdBLCAweDY3N0EsIDB4MTlCRiwKKyAgICAweDY3N0IsIDB4Njc3QiwgMHgxOUI4LCAweDY3N0MsIDB4Njc3QywgMHgwNjE3LCAweDY3N0QsIDB4Njc3RCwgMHgxOUM0LAorICAgIDB4Njc3RSwgMHg2NzdFLCAweDA2MTIsIDB4Njc3RiwgMHg2NzdGLCAweDA2MTAsIDB4Njc4MSwgMHg2NzgxLCAweDE5QzUsCisgICAgMHg2NzgzLCAweDY3ODMsIDB4MTlDMywgMHg2Nzg0LCAweDY3ODQsIDB4MTlCQiwgMHg2Nzg1LCAweDY3ODUsIDB4MTlCMywKKyAgICAweDY3ODYsIDB4Njc4NiwgMHgxOUJBLCAweDY3ODcsIDB4Njc4NywgMHgwNjBCLCAweDY3ODksIDB4Njc4OSwgMHgwNjExLAorICAgIDB4Njc4QiwgMHg2NzhCLCAweDA2MDUsIDB4Njc4QywgMHg2NzhDLCAweDE5QkUsIDB4Njc4RCwgMHg2NzhELCAweDE5QkQsCisgICAgMHg2NzhFLCAweDY3OEUsIDB4MTlCNSwgMHg2NzhGLCAweDY3OEYsIDB4NDZDMSwgMHg2NzkwLCAweDY3OTAsIDB4MDYxMywKKyAgICAweDY3OTEsIDB4Njc5MSwgMHgxOUMxLCAweDY3OTIsIDB4Njc5MiwgMHgxOUI2LCAweDY3OTMsIDB4Njc5MywgMHgwNjE2LAorICAgIDB4Njc5NCwgMHg2Nzk0LCAweDE5QzgsIDB4Njc5NSwgMHg2Nzk1LCAweDA2MDYsIDB4Njc5NywgMHg2Nzk3LCAweDA2MEQsCisgICAgMHg2Nzk4LCAweDY3OTgsIDB4MTlCOSwgMHg2Nzk5LCAweDY3OTksIDB4MTlDMiwgMHg2NzlBLCAweDY3OUEsIDB4MDYxNSwKKyAgICAweDY3OUMsIDB4Njc5QywgMHgwNjA4LCAweDY3OUQsIDB4Njc5RCwgMHgwNjBDLCAweDY3OUYsIDB4Njc5RiwgMHgxOUMwLAorICAgIDB4NjdBMCwgMHg2N0EwLCAweDNEN0EsIDB4NjdBNCwgMHg2N0E0LCAweDQ2NTEsIDB4NjdBQywgMHg2N0FDLCAweDQxRTMsCisgICAgMHg2N0FFLCAweDY3QUUsIDB4MUIzNCwgMHg2N0FGLCAweDY3QUYsIDB4MDc1NywgMHg2N0IwLCAweDY3QjAsIDB4MDc2NCwKKyAgICAweDY3QjEsIDB4NjdCMSwgMHg0MUY0LCAweDY3QjIsIDB4NjdCMiwgMHgxQjJGLCAweDY3QjMsIDB4NjdCMywgMHgxQjI1LAorICAgIDB4NjdCNCwgMHg2N0I0LCAweDA3NUQsIDB4NjdCNSwgMHg2N0I1LCAweDFCMjMsIDB4NjdCNiwgMHg2N0I2LCAweDA3NTYsCisgICAgMHg2N0I3LCAweDY3QjcsIDB4MUIxRSwgMHg2N0I4LCAweDY3QjgsIDB4MDc2MCwgMHg2N0I5LCAweDY3QjksIDB4MUIyQiwKKyAgICAweDY3QkEsIDB4NjdCQSwgMHgxQjE4LCAweDY3QkIsIDB4NjdCQiwgMHgxQjFBLCAweDY3QkYsIDB4NjdCRiwgMHgzN0ZBLAorICAgIDB4NjdDMCwgMHg2N0MwLCAweDFCMUQsIDB4NjdDMSwgMHg2N0MxLCAweDFCMTUsIDB4NjdDMiwgMHg2N0MyLCAweDFCMkEsCisgICAgMHg2N0MzLCAweDY3QzMsIDB4MUIzQSwgMHg2N0M0LCAweDY3QzQsIDB4MDc1QiwgMHg2N0M1LCAweDY3QzUsIDB4MUIxRiwKKyAgICAweDY3QzYsIDB4NjdDNiwgMHgxQjMxLCAweDY3QzgsIDB4NjdDOCwgMHgxQjE3LCAweDY3QzksIDB4NjdDQSwgMHgxQjM4LAorICAgIDB4NjdDQiwgMHg2N0NCLCAweDFCM0MsIDB4NjdDQywgMHg2N0NDLCAweDFCMzMsIDB4NjdDRCwgMHg2N0NELCAweDFCMjQsCisgICAgMHg2N0NFLCAweDY3Q0UsIDB4MUIyQywgMHg2N0NGLCAweDY3Q0YsIDB4MDc2MSwgMHg2N0QwLCAweDY3RDAsIDB4MDc1NCwKKyAgICAweDY3RDEsIDB4NjdEMSwgMHgwNzVDLCAweDY3RDIsIDB4NjdEMiwgMHgwNzY4LCAweDY3RDMsIDB4NjdEMywgMHgwNzUxLAorICAgIDB4NjdENCwgMHg2N0Q0LCAweDA3NTMsIDB4NjdENiwgMHg2N0Q2LCAweDNCNTgsIDB4NjdENywgMHg2N0Q3LCAweDQxQ0UsCisgICAgMHg2N0Q4LCAweDY3RDgsIDB4MUIxQywgMHg2N0Q5LCAweDY3RDksIDB4MDc2NSwgMHg2N0RBLCAweDY3REEsIDB4MDc1RSwKKyAgICAweDY3REIsIDB4NjdEQiwgMHgxQjM2LCAweDY3REMsIDB4NjdEQywgMHgxQjE5LCAweDY3REQsIDB4NjdERCwgMHgwNzY3LAorICAgIDB4NjdERSwgMHg2N0RFLCAweDA3NjIsIDB4NjdERiwgMHg2N0RGLCAweDFCMjIsIDB4NjdFMiwgMHg2N0UyLCAweDA3NjYsCisgICAgMHg2N0UzLCAweDY3RTMsIDB4MUIyOSwgMHg2N0U0LCAweDY3RTQsIDB4MUIyMSwgMHg2N0U1LCAweDY3RTUsIDB4MDc1RiwKKyAgICAweDY3RTYsIDB4NjdFNiwgMHgxQjM1LCAweDY3RTcsIDB4NjdFNywgMHgxQjJELCAweDY3RTksIDB4NjdFOSwgMHgwNzU5LAorICAgIDB4NjdFQSwgMHg2N0VBLCAweDFCM0IsIDB4NjdFQiwgMHg2N0VCLCAweDFCMjAsIDB4NjdFQywgMHg2N0VDLCAweDA3NTUsCisgICAgMHg2N0VELCAweDY3RUQsIDB4MUIzMiwgMHg2N0VFLCAweDY3RUUsIDB4MUIyOCwgMHg2N0VGLCAweDY3RUYsIDB4MDc1QSwKKyAgICAweDY3RjAsIDB4NjdGMCwgMHgxQjJFLCAweDY3RjEsIDB4NjdGMSwgMHgwNzUyLCAweDY3RjIsIDB4NjdGMiwgMHgxQjE2LAorICAgIDB4NjdGMywgMHg2N0YzLCAweDA3NjMsIDB4NjdGNCwgMHg2N0Y0LCAweDA4RjUsIDB4NjdGNSwgMHg2N0Y1LCAweDA3NTgsCisgICAgMHg2N0Y2LCAweDY3RjYsIDB4MUIyNywgMHg2N0Y3LCAweDY3RjcsIDB4MUIyNiwgMHg2N0Y4LCAweDY3RjgsIDB4MUIxQiwKKyAgICAweDY3RjksIDB4NjdGOSwgMHgzOTk2LCAweDY3RkEsIDB4NjdGQSwgMHgxQjM3LCAweDY3RkMsIDB4NjdGQywgMHgxQjMwLAorICAgIDB4NjdGRSwgMHg2N0ZFLCAweDQ1NTUsIDB4NjdGRiwgMHg2N0ZGLCAweDA3NTAsIDB4NjgwMCwgMHg2ODAwLCAweDQzQzcsCisgICAgMHg2ODAxLCAweDY4MDEsIDB4NDFEMywgMHg2ODAyLCAweDY4MDIsIDB4M0ZDOCwgMHg2ODAzLCAweDY4MDMsIDB4M0Q2QSwKKyAgICAweDY4MDQsIDB4NjgwNCwgMHg0NTU2LCAweDY4MEQsIDB4NjgwRCwgMHg0MjgxLCAweDY4MTAsIDB4NjgxMCwgMHgzOTlDLAorICAgIDB4NjgxMiwgMHg2ODEyLCAweDFDREQsIDB4NjgxMywgMHg2ODEzLCAweDA4RkMsIDB4NjgxNCwgMHg2ODE0LCAweDFDREUsCisgICAgMHg2ODE2LCAweDY4MTYsIDB4MUNEMiwgMHg2ODE3LCAweDY4MTcsIDB4MDhGMSwgMHg2ODE4LCAweDY4MTgsIDB4MDhGRCwKKyAgICAweDY4MUEsIDB4NjgxQSwgMHgxQ0NCLCAweDY4MUIsIDB4NjgxQiwgMHg0MDcyLCAweDY4MUMsIDB4NjgxQywgMHgxQ0Q0LAorICAgIDB4NjgxRCwgMHg2ODFELCAweDFDREMsIDB4NjgxRSwgMHg2ODFFLCAweDQ2QzIsIDB4NjgxRiwgMHg2ODFGLCAweDFDQ0EsCisgICAgMHg2ODIwLCAweDY4MjAsIDB4MUNFNSwgMHg2ODIxLCAweDY4MjEsIDB4MDhFNywgMHg2ODIyLCAweDY4MjIsIDB4NDFEMCwKKyAgICAweDY4MjUsIDB4NjgyNSwgMHgxQ0U0LCAweDY4MjYsIDB4NjgyNiwgMHgxQ0RGLCAweDY4MjgsIDB4NjgyOCwgMHgxQ0UwLAorICAgIDB4NjgyOSwgMHg2ODI5LCAweDA4RUYsIDB4NjgyQSwgMHg2ODJBLCAweDA4RkEsIDB4NjgyQiwgMHg2ODJCLCAweDFDRDYsCisgICAgMHg2ODJELCAweDY4MkQsIDB4MUNENywgMHg2ODJFLCAweDY4MkUsIDB4MUNFMSwgMHg2ODJGLCAweDY4MkYsIDB4MUNEOCwKKyAgICAweDY4MzEsIDB4NjgzMSwgMHgxQ0QzLCAweDY4MzIsIDB4NjgzMywgMHgxQ0NELCAweDY4MzQsIDB4NjgzNCwgMHgxQ0RCLAorICAgIDB4NjgzNSwgMHg2ODM1LCAweDFDRDUsIDB4NjgzNiwgMHg2ODM2LCAweDNFMkUsIDB4NjgzNywgMHg2ODM3LCAweDQyMUQsCisgICAgMHg2ODM4LCAweDY4MzgsIDB4MDhFOCwgMHg2ODM5LCAweDY4MzksIDB4MDhFQywgMHg2ODNBLCAweDY4M0EsIDB4MUNFMywKKyAgICAweDY4M0IsIDB4NjgzQiwgMHgxQ0NGLCAweDY4M0MsIDB4NjgzQywgMHgwOEY4LCAweDY4M0QsIDB4NjgzRCwgMHgwOEY0LAorICAgIDB4NjgzRSwgMHg2ODNFLCAweDQxNDcsIDB4Njg0MCwgMHg2ODQwLCAweDA4RjcsIDB4Njg0MSwgMHg2ODQxLCAweDA4RkUsCisgICAgMHg2ODQyLCAweDY4NDIsIDB4MDhFRCwgMHg2ODQzLCAweDY4NDMsIDB4MDhGOSwgMHg2ODQ0LCAweDY4NDQsIDB4MUNEQSwKKyAgICAweDY4NDUsIDB4Njg0NSwgMHgwOEZCLCAweDY4NDYsIDB4Njg0NiwgMHgwOEVBLCAweDY4NDcsIDB4Njg0NywgMHgzQkVCLAorICAgIDB4Njg0OCwgMHg2ODQ4LCAweDA4RTksIDB4Njg0OSwgMHg2ODQ5LCAweDFDQ0MsIDB4Njg0QSwgMHg2ODRBLCAweDQ2NTMsCisgICAgMHg2ODRCLCAweDY4NEIsIDB4MUNEMCwgMHg2ODRDLCAweDY4NEMsIDB4MDhGMiwgMHg2ODRELCAweDY4NEQsIDB4MUNFMiwKKyAgICAweDY4NEUsIDB4Njg0RSwgMHgxQ0Q5LCAweDY4NEYsIDB4Njg0RiwgMHgxQ0QxLCAweDY4NTAsIDB4Njg1MCwgMHgwOEY2LAorICAgIDB4Njg1MSwgMHg2ODUxLCAweDA4RjMsIDB4Njg1MywgMHg2ODUzLCAweDA4RUIsIDB4Njg1NCwgMHg2ODU0LCAweDA4RUUsCisgICAgMHg2ODU1LCAweDY4NTUsIDB4M0Q5MCwgMHg2ODU2LCAweDY4NTYsIDB4MzgxNCwgMHg2ODVELCAweDY4NUQsIDB4NDFENiwKKyAgICAweDY4NjUsIDB4Njg2NSwgMHg0NTU3LCAweDY4NkIsIDB4Njg2QiwgMHgxRjI5LCAweDY4NkQsIDB4Njg2RSwgMHgxRjE5LAorICAgIDB4Njg2RiwgMHg2ODZGLCAweDFGMUUsIDB4Njg3MSwgMHg2ODcxLCAweDFGMkQsIDB4Njg3MiwgMHg2ODcyLCAweDFGMkEsCisgICAgMHg2ODc0LCAweDY4NzQsIDB4MUYyMywgMHg2ODc1LCAweDY4NzUsIDB4MUYyMiwgMHg2ODc2LCAweDY4NzYsIDB4MEFENywKKyAgICAweDY4NzcsIDB4Njg3NywgMHgxRjI2LCAweDY4NzgsIDB4Njg3OCwgMHgxRjM1LCAweDY4NzksIDB4Njg3OSwgMHgxRjE1LAorICAgIDB4Njg3QiwgMHg2ODdCLCAweDFGMzYsIDB4Njg3QywgMHg2ODdDLCAweDFGMjgsIDB4Njg3RCwgMHg2ODdELCAweDFGM0EsCisgICAgMHg2ODdFLCAweDY4N0UsIDB4MUYyRSwgMHg2ODdGLCAweDY4N0YsIDB4MEFENiwgMHg2ODgwLCAweDY4ODAsIDB4MUYyQywKKyAgICAweDY4ODEsIDB4Njg4MSwgMHgwQUQxLCAweDY4ODIsIDB4Njg4MiwgMHgwQUU2LCAweDY4ODMsIDB4Njg4MywgMHgwQURDLAorICAgIDB4Njg4NCwgMHg2ODg0LCAweDQ2NTQsIDB4Njg4NSwgMHg2ODg1LCAweDBBRTAsIDB4Njg4NiwgMHg2ODg2LCAweDBBREYsCisgICAgMHg2ODg3LCAweDY4ODcsIDB4MUYxNiwgMHg2ODg4LCAweDY4ODgsIDB4NDZCNywgMHg2ODg5LCAweDY4ODksIDB4MUYzMywKKyAgICAweDY4OEEsIDB4Njg4QSwgMHgxRjM5LCAweDY4OEIsIDB4Njg4QiwgMHgxRjMxLCAweDY4OEMsIDB4Njg4QywgMHgxRjM4LAorICAgIDB4Njg4RiwgMHg2ODhGLCAweDFGMjUsIDB4Njg5MCwgMHg2ODkwLCAweDFGMTcsIDB4Njg5MSwgMHg2ODkxLCAweDFGMzcsCisgICAgMHg2ODkyLCAweDY4OTIsIDB4MUYyNywgMHg2ODkzLCAweDY4OTMsIDB4MEFENCwgMHg2ODk0LCAweDY4OTQsIDB4MEFFMSwKKyAgICAweDY4OTYsIDB4Njg5NiwgMHgxRjMwLCAweDY4OTcsIDB4Njg5NywgMHgwQURBLCAweDY4OTgsIDB4Njg5OCwgMHgzQUFBLAorICAgIDB4Njg5QiwgMHg2ODlCLCAweDFGMkYsIDB4Njg5QywgMHg2ODlDLCAweDFGMTgsIDB4Njg5RCwgMHg2ODlELCAweDBBRTIsCisgICAgMHg2ODlGLCAweDY4OUYsIDB4MEFFNCwgMHg2OEEwLCAweDY4QTAsIDB4MUYzMiwgMHg2OEExLCAweDY4QTEsIDB4MEFFNSwKKyAgICAweDY4QTIsIDB4NjhBMiwgMHgwQUQzLCAweDY4QTMsIDB4NjhBMywgMHgxRjFGLCAweDY4QTQsIDB4NjhBNCwgMHgxRjM0LAorICAgIDB4NjhBNiwgMHg2OEE2LCAweDQwRTQsIDB4NjhBNywgMHg2OEE3LCAweDBBRDksIDB4NjhBOCwgMHg2OEE4LCAweDBBRTMsCisgICAgMHg2OEE5LCAweDY4QTksIDB4MUYyMSwgMHg2OEFBLCAweDY4QUEsIDB4MUYyQiwgMHg2OEFCLCAweDY4QUIsIDB4MUYxQywKKyAgICAweDY4QUMsIDB4NjhBQywgMHgxRjIwLCAweDY4QUQsIDB4NjhBRCwgMHgwQURFLCAweDY4QUUsIDB4NjhBRSwgMHgxRjFCLAorICAgIDB4NjhBRiwgMHg2OEFGLCAweDBBRDIsIDB4NjhCMCwgMHg2OEIwLCAweDBBREIsIDB4NjhCMSwgMHg2OEIxLCAweDBBRDgsCisgICAgMHg2OEIyLCAweDY4QjIsIDB4MUYyNCwgMHg2OEIzLCAweDY4QjMsIDB4MDhGMCwgMHg2OEI0LCAweDY4QjQsIDB4MjE5OCwKKyAgICAweDY4QjUsIDB4NjhCNSwgMHgwQUQ1LCAweDY4QjYsIDB4NjhCNiwgMHgzQTlFLCAweDY4QjksIDB4NjhCOSwgMHgzRDE0LAorICAgIDB4NjhCRCwgMHg2OEJELCAweDQyN0MsIDB4NjhDMywgMHg2OEMzLCAweDQxREMsIDB4NjhDNCwgMHg2OEM0LCAweDBBREQsCisgICAgMHg2OEM1LCAweDY4QzUsIDB4M0MyRSwgMHg2OEM2LCAweDY4QzYsIDB4MjE5QiwgMHg2OEM3LCAweDY4QzcsIDB4MjFCMSwKKyAgICAweDY4QzgsIDB4NjhDOCwgMHgyMUE2LCAweDY4QzksIDB4NjhDOSwgMHgwQzk3LCAweDY4Q0EsIDB4NjhDQSwgMHg0MkVCLAorICAgIDB4NjhDQiwgMHg2OENCLCAweDBDOTIsIDB4NjhDQywgMHg2OENDLCAweDIxOTUsIDB4NjhDRCwgMHg2OENELCAweDBDOTMsCisgICAgMHg2OENFLCAweDY4Q0UsIDB4MjFBNSwgMHg2OEQwLCAweDY4RDAsIDB4MjE5RSwgMHg2OEQxLCAweDY4RDEsIDB4MjFBQiwKKyAgICAweDY4RDIsIDB4NjhEMiwgMHgwQzhGLCAweDY4RDMsIDB4NjhEMywgMHgyMTgzLCAweDY4RDQsIDB4NjhENCwgMHgyMUFELAorICAgIDB4NjhENSwgMHg2OEQ1LCAweDBDODUsIDB4NjhENiwgMHg2OEQ2LCAweDIxOEIsIDB4NjhENywgMHg2OEQ3LCAweDBDODgsCisgICAgMHg2OEQ4LCAweDY4RDgsIDB4MEM4NywgMHg2OERBLCAweDY4REEsIDB4MEM5OCwgMHg2OERDLCAweDY4REMsIDB4MjE4NSwKKyAgICAweDY4REQsIDB4NjhERSwgMHgyMUE3LCAweDY4REYsIDB4NjhERiwgMHgwQzhBLCAweDY4RTAsIDB4NjhFMCwgMHgwQzg2LAorICAgIDB4NjhFMSwgMHg2OEUxLCAweDIxOTMsIDB4NjhFMywgMHg2OEUzLCAweDBDOTEsIDB4NjhFNCwgMHg2OEU0LCAweDIxOEUsCisgICAgMHg2OEU2LCAweDY4RTYsIDB4MjFBOSwgMHg2OEU3LCAweDY4RTcsIDB4MEM4RCwgMHg2OEU4LCAweDY4RTgsIDB4MjFBMSwKKyAgICAweDY4RTksIDB4NjhFOSwgMHgyMUFFLCAweDY4RUEsIDB4NjhFQSwgMHgyMTg4LCAweDY4RUIsIDB4NjhFQiwgMHgyMThELAorICAgIDB4NjhFQywgMHg2OEVDLCAweDIxODcsIDB4NjhFRSwgMHg2OEVFLCAweDBDOEMsIDB4NjhFRiwgMHg2OEVGLCAweDIxOUEsCisgICAgMHg2OEYwLCAweDY4RjAsIDB4MjQyQiwgMHg2OEYxLCAweDY4RjEsIDB4MjE4OSwgMHg2OEYyLCAweDY4RjIsIDB4MEM5MCwKKyAgICAweDY4RjMsIDB4NjhGMywgMHgyMTkyLCAweDY4RjQsIDB4NjhGNCwgMHgyMUFBLCAweDY4RjUsIDB4NjhGNSwgMHgwQzhCLAorICAgIDB4NjhGNiwgMHg2OEY2LCAweDIxOEYsIDB4NjhGNywgMHg2OEY3LCAweDIxOEMsIDB4NjhGOCwgMHg2OEY4LCAweDIxOUQsCisgICAgMHg2OEY5LCAweDY4RjksIDB4MEM4RSwgMHg2OEZBLCAweDY4RkEsIDB4MEM4NCwgMHg2OEZCLCAweDY4RkIsIDB4MEM5QSwKKyAgICAweDY4RkMsIDB4NjhGQywgMHgyMUEwLCAweDY4RkQsIDB4NjhGRCwgMHgyMTlGLCAweDY5MDAsIDB4NjkwMCwgMHg0MURGLAorICAgIDB4NjkwMSwgMHg2OTAxLCAweDQxREUsIDB4NjkwMiwgMHg2OTAyLCAweDQyRkIsIDB4NjkwMywgMHg2OTAzLCAweDQyOUMsCisgICAgMHg2OTA0LCAweDY5MDQsIDB4MjE4NCwgMHg2OTA1LCAweDY5MDUsIDB4MEM4OSwgMHg2OTA2LCAweDY5MDYsIDB4MjFBQywKKyAgICAweDY5MDcsIDB4NjkwNywgMHgyMTk0LCAweDY5MDgsIDB4NjkwOCwgMHgyMTk2LCAweDY5MDksIDB4NjkwOSwgMHg0NjU4LAorICAgIDB4NjkwQSwgMHg2OTBBLCAweDIxQTMsIDB4NjkwQiwgMHg2OTBCLCAweDIxQTIsIDB4NjkwQywgMHg2OTBDLCAweDIxODIsCisgICAgMHg2OTBELCAweDY5MEQsIDB4MEM5NCwgMHg2OTBFLCAweDY5MEUsIDB4MEM5NiwgMHg2OTBGLCAweDY5MEYsIDB4MjE4QSwKKyAgICAweDY5MTAsIDB4NjkxMCwgMHgyMTkxLCAweDY5MTEsIDB4NjkxMSwgMHgyMTk5LCAweDY5MTIsIDB4NjkxMiwgMHgwQzk1LAorICAgIDB4NjkxMywgMHg2OTEzLCAweDIxOTAsIDB4NjkxNCwgMHg2OTE0LCAweDIxOUMsIDB4NjkxNSwgMHg2OTE1LCAweDIxQUYsCisgICAgMHg2OTE3LCAweDY5MTcsIDB4MjFBNCwgMHg2OTE4LCAweDY5MTgsIDB4M0RBMiwgMHg2OTFBLCAweDY5MUEsIDB4M0Q4MCwKKyAgICAweDY5MUIsIDB4NjkxQiwgMHgzN0JELCAweDY5MjUsIDB4NjkyNSwgMHgyMUIwLCAweDY5MkEsIDB4NjkyQSwgMHgyMTg2LAorICAgIDB4NjkyQywgMHg2OTJDLCAweDNGMzgsIDB4NjkyRiwgMHg2OTJGLCAweDI0M0YsIDB4NjkzMCwgMHg2OTMwLCAweDBFM0UsCisgICAgMHg2OTMyLCAweDY5MzIsIDB4MjQzRCwgMHg2OTMzLCAweDY5MzMsIDB4MjQyOCwgMHg2OTM0LCAweDY5MzQsIDB4MjQyRCwKKyAgICAweDY5MzUsIDB4NjkzNSwgMHgyNDI2LCAweDY5MzYsIDB4NjkzNiwgMHg0MUU3LCAweDY5MzcsIDB4NjkzNywgMHgyNDM5LAorICAgIDB4NjkzOCwgMHg2OTM4LCAweDI0MTgsIDB4NjkzOSwgMHg2OTM5LCAweDI0MUYsIDB4NjkzQiwgMHg2OTNCLCAweDI0MzcsCisgICAgMHg2OTNDLCAweDY5M0MsIDB4MjQ0MSwgMHg2OTNELCAweDY5M0QsIDB4MjQyOSwgMHg2OTNFLCAweDY5M0UsIDB4NDA1NiwKKyAgICAweDY5M0YsIDB4NjkzRiwgMHgyNDFDLCAweDY5NDAsIDB4Njk0MCwgMHgyNDJGLCAweDY5NDEsIDB4Njk0MSwgMHgyNDM0LAorICAgIDB4Njk0MiwgMHg2OTQyLCAweDI0MjAsIDB4Njk0MywgMHg2OTQzLCAweDQ2NTksIDB4Njk0NCwgMHg2OTQ0LCAweDI0MzEsCisgICAgMHg2OTQ1LCAweDY5NDUsIDB4MjQxRCwgMHg2OTQ2LCAweDY5NDYsIDB4NDU2RiwgMHg2OTQ4LCAweDY5NDksIDB4MjQyNCwKKyAgICAweDY5NEEsIDB4Njk0QSwgMHgwRTQwLCAweDY5NEIsIDB4Njk0QiwgMHgyNDM4LCAweDY5NEMsIDB4Njk0QywgMHgyNDM2LAorICAgIDB4Njk0RSwgMHg2OTRFLCAweDI0MTksIDB4Njk0RiwgMHg2OTRGLCAweDI0M0IsIDB4Njk1MSwgMHg2OTUxLCAweDI0M0MsCisgICAgMHg2OTUyLCAweDY5NTIsIDB4MjQzRSwgMHg2OTUzLCAweDY5NTMsIDB4MEU0NCwgMHg2OTU0LCAweDY5NTQsIDB4MEUzQywKKyAgICAweDY5NTUsIDB4Njk1NSwgMHgzRDg2LCAweDY5NTYsIDB4Njk1NiwgMHgxRjFELCAweDY5NTcsIDB4Njk1NywgMHgyNDIxLAorICAgIDB4Njk1OCwgMHg2OTU4LCAweDI0MzMsIDB4Njk1OSwgMHg2OTU5LCAweDI0MjIsIDB4Njk1QSwgMHg2OTVBLCAweDBFMzksCisgICAgMHg2OTVCLCAweDY5NUIsIDB4MEU0OSwgMHg2OTVDLCAweDY5NUMsIDB4MjQzQSwgMHg2OTVELCAweDY5NUQsIDB4MEU0NywKKyAgICAweDY5NUUsIDB4Njk1RSwgMHgwRTQzLCAweDY5NUYsIDB4Njk1RiwgMHgyNDE3LCAweDY5NjAsIDB4Njk2MCwgMHgwRTNCLAorICAgIDB4Njk2MSwgMHg2OTYxLCAweDQxRTQsIDB4Njk2MiwgMHg2OTYyLCAweDI0MUEsIDB4Njk2MywgMHg2OTYzLCAweDBFNDgsCisgICAgMHg2OTY0LCAweDY5NjQsIDB4NDY1QiwgMHg2OTY1LCAweDY5NjUsIDB4MjQyQSwgMHg2OTY2LCAweDY5NjYsIDB4MjQxNiwKKyAgICAweDY5NjcsIDB4Njk2NywgMHgzRDE1LCAweDY5NjgsIDB4Njk2OCwgMHgwRTQxLCAweDY5NjksIDB4Njk2OSwgMHgyNDJFLAorICAgIDB4Njk2QSwgMHg2OTZBLCAweDI0MUUsIDB4Njk2QiwgMHg2OTZCLCAweDBFNDIsIDB4Njk2QywgMHg2OTZDLCAweDI0MjcsCisgICAgMHg2OTZELCAweDY5NkQsIDB4MEUzOCwgMHg2OTZFLCAweDY5NkUsIDB4MEM5OSwgMHg2OTZGLCAweDY5NkYsIDB4MjQzMCwKKyAgICAweDY5NzAsIDB4Njk3MCwgMHgyMTk3LCAweDY5NzEsIDB4Njk3MSwgMHgyNDFCLCAweDY5NzIsIDB4Njk3MiwgMHgzQTZELAorICAgIDB4Njk3MywgMHg2OTczLCAweDQxREIsIDB4Njk3NCwgMHg2OTc0LCAweDI0MzUsIDB4Njk3NSwgMHg2OTc1LCAweDBFM0QsCisgICAgMHg2OTc2LCAweDY5NzYsIDB4MjQzMiwgMHg2OTc3LCAweDY5NzcsIDB4MEUzQSwgMHg2OTc4LCAweDY5NzgsIDB4MjQyQywKKyAgICAweDY5NzksIDB4Njk3OSwgMHgwRTQ1LCAweDY5N0EsIDB4Njk3QSwgMHgyNDIzLCAweDY5N0IsIDB4Njk3QiwgMHgyNDQwLAorICAgIDB4Njk4MCwgMHg2OTgwLCAweDNGM0UsIDB4Njk4MiwgMHg2OTgyLCAweDBFM0YsIDB4Njk4MywgMHg2OTgzLCAweDI0QUYsCisgICAgMHg2OTg1LCAweDY5ODUsIDB4NDY1RCwgMHg2OTg2LCAweDY5ODYsIDB4MEU0NiwgMHg2OThBLCAweDY5OEEsIDB4M0Q3NCwKKyAgICAweDY5OEQsIDB4Njk4RCwgMHgyNkM5LCAweDY5OEUsIDB4Njk4RSwgMHgyNkM3LCAweDY5OTAsIDB4Njk5MCwgMHgyNkRELAorICAgIDB4Njk5MSwgMHg2OTkxLCAweDI2QzUsIDB4Njk5MywgMHg2OTkzLCAweDI2RDcsIDB4Njk5NCwgMHg2OTk0LCAweDBFMzcsCisgICAgMHg2OTk1LCAweDY5OTUsIDB4MEZGMCwgMHg2OTk2LCAweDY5OTYsIDB4MjZDMSwgMHg2OTk3LCAweDY5OTcsIDB4MjZEQywKKyAgICAweDY5OTgsIDB4Njk5OCwgMHg0MUU4LCAweDY5OTksIDB4Njk5OSwgMHgyNkM2LCAweDY5OUEsIDB4Njk5QSwgMHgyNkQ0LAorICAgIDB4Njk5QiwgMHg2OTlCLCAweDBGRjUsIDB4Njk5QywgMHg2OTlDLCAweDBGRUUsIDB4Njk5RSwgMHg2OTlFLCAweDI2REEsCisgICAgMHg2OTlGLCAweDY5OUYsIDB4NDY1QywgMHg2OUEwLCAweDY5QTAsIDB4MjZCRiwgMHg2OUExLCAweDY5QTEsIDB4MjZEOSwKKyAgICAweDY5QTIsIDB4NjlBMiwgMHgzNzMwLCAweDY5QTMsIDB4NjlBMywgMHgxMDAwLCAweDY5QTQsIDB4NjlBNCwgMHgyNkQwLAorICAgIDB4NjlBNSwgMHg2OUE1LCAweDI2RTAsIDB4NjlBNiwgMHg2OUE2LCAweDBGRkUsIDB4NjlBNywgMHg2OUE3LCAweDI2QzgsCisgICAgMHg2OUE4LCAweDY5QTgsIDB4MEZFRiwgMHg2OUE5LCAweDY5QTksIDB4MjZDQSwgMHg2OUFBLCAweDY5QUEsIDB4MjZEOCwKKyAgICAweDY5QUIsIDB4NjlBQiwgMHgwRkY4LCAweDY5QUMsIDB4NjlBQywgMHgyNkMzLCAweDY5QUQsIDB4NjlBRCwgMHgwRkZDLAorICAgIDB4NjlBRSwgMHg2OUFFLCAweDBGRjIsIDB4NjlBRiwgMHg2OUFGLCAweDI2Q0MsIDB4NjlCMCwgMHg2OUIwLCAweDI2QzIsCisgICAgMHg2OUIxLCAweDY5QjEsIDB4MjZCQywgMHg2OUIyLCAweDY5QjIsIDB4M0ZGNiwgMHg2OUIzLCAweDY5QjMsIDB4MjZENiwKKyAgICAweDY5QjQsIDB4NjlCNCwgMHgwRkY5LCAweDY5QjUsIDB4NjlCNSwgMHgyNkRGLCAweDY5QjYsIDB4NjlCNiwgMHgyNkJELAorICAgIDB4NjlCNywgMHg2OUI3LCAweDBGRjYsIDB4NjlCOSwgMHg2OUI5LCAweDI2RDIsIDB4NjlCQiwgMHg2OUJCLCAweDBGRjcsCisgICAgMHg2OUJDLCAweDY5QkMsIDB4MjZDNCwgMHg2OUJELCAweDY5QkQsIDB4MjZDRiwgMHg2OUJFLCAweDY5QkUsIDB4MjZDQiwKKyAgICAweDY5QkYsIDB4NjlCRiwgMHgyNkNELCAweDY5QzAsIDB4NjlDMCwgMHgzRjVELCAweDY5QzEsIDB4NjlDMSwgMHgwRkYxLAorICAgIDB4NjlDMiwgMHg2OUMyLCAweDI2REUsIDB4NjlDMywgMHg2OUMzLCAweDBGRkYsIDB4NjlDNCwgMHg2OUM0LCAweDI2Q0UsCisgICAgMHg2OUM2LCAweDY5QzYsIDB4MjZFMSwgMHg2OUM5LCAweDY5QzksIDB4MjZCRSwgMHg2OUNBLCAweDY5Q0EsIDB4MjZEMywKKyAgICAweDY5Q0IsIDB4NjlDQiwgMHgwRkY0LCAweDY5Q0MsIDB4NjlDQywgMHgwRkZELCAweDY5Q0QsIDB4NjlDRCwgMHgwRkZCLAorICAgIDB4NjlDRSwgMHg2OUNFLCAweDI2QzAsIDB4NjlDRiwgMHg2OUNGLCAweDI2RDUsIDB4NjlEMCwgMHg2OUQwLCAweDBGRkEsCisgICAgMHg2OUQxLCAweDY5RDEsIDB4MzlFRiwgMHg2OUQzLCAweDY5RDMsIDB4MEZGMywgMHg2OUQ0LCAweDY5RDQsIDB4MjZEMSwKKyAgICAweDY5RDUsIDB4NjlENSwgMHgzRTNDLCAweDY5RDYsIDB4NjlENiwgMHg0NjVFLCAweDY5RDksIDB4NjlEOSwgMHgyNkRCLAorICAgIDB4NjlFMSwgMHg2OUUxLCAweDQxRDgsIDB4NjlFMiwgMHg2OUUyLCAweDI5MDksIDB4NjlFNCwgMHg2OUU0LCAweDI5MDUsCisgICAgMHg2OUU1LCAweDY5RTUsIDB4MjkwMSwgMHg2OUU2LCAweDY5RTYsIDB4MjkxNSwgMHg2OUU3LCAweDY5RTcsIDB4MjkxMiwKKyAgICAweDY5RTgsIDB4NjlFOCwgMHgxMTc3LCAweDY5RTksIDB4NjlFOSwgMHgzRDkxLCAweDY5RUIsIDB4NjlFQiwgMHgyOTE5LAorICAgIDB4NjlFQywgMHg2OUVDLCAweDI5MDgsIDB4NjlFRCwgMHg2OUVELCAweDExODIsIDB4NjlFRSwgMHg2OUVFLCAweDI5MEYsCisgICAgMHg2OUYxLCAweDY5RjEsIDB4MjkwNCwgMHg2OUYyLCAweDY5RjIsIDB4MjkwRSwgMHg2OUYzLCAweDY5RjMsIDB4MTE3RiwKKyAgICAweDY5RjQsIDB4NjlGNCwgMHgyOTIyLCAweDY5RjYsIDB4NjlGNiwgMHgyOTFGLCAweDY5RjcsIDB4NjlGNywgMHgyOTExLAorICAgIDB4NjlGOCwgMHg2OUY4LCAweDI5MDIsIDB4NjlGOSwgMHg2OUY5LCAweDQxRUQsIDB4NjlGQSwgMHg2OUZBLCAweDQxQzcsCisgICAgMHg2OUZCLCAweDY5RkIsIDB4MjkxNiwgMHg2OUZDLCAweDY5RkMsIDB4MjkxOCwgMHg2OUZELCAweDY5RkQsIDB4MTE3QiwKKyAgICAweDY5RkUsIDB4NjlGRSwgMHgyOTBDLCAweDY5RkYsIDB4NjlGRiwgMHgyOTA3LCAweDZBMDAsIDB4NkEwMCwgMHgyOEZFLAorICAgIDB4NkEwMSwgMHg2QTAxLCAweDExNzgsIDB4NkEwMiwgMHg2QTAyLCAweDExODAsIDB4NkEwMywgMHg2QTAzLCAweDNFMjksCisgICAgMHg2QTA0LCAweDZBMDQsIDB4MjkxQiwgMHg2QTA1LCAweDZBMDUsIDB4MTE4MSwgMHg2QTA2LCAweDZBMDYsIDB4MjhGRiwKKyAgICAweDZBMDcsIDB4NkEwNywgMHgyOTIxLCAweDZBMDgsIDB4NkEwOCwgMHgyOTE0LCAweDZBMDksIDB4NkEwOSwgMHgyOTFBLAorICAgIDB4NkEwQSwgMHg2QTBBLCAweDExN0UsIDB4NkEwQiwgMHg2QTBCLCAweDQxRDksIDB4NkEwQywgMHg2QTBDLCAweDNENTAsCisgICAgMHg2QTBELCAweDZBMEQsIDB4MjkxNywgMHg2QTBGLCAweDZBMEYsIDB4MjkxRSwgMHg2QTExLCAweDZBMTEsIDB4MTE4MywKKyAgICAweDZBMTMsIDB4NkExMywgMHgxMTdELCAweDZBMTQsIDB4NkExNCwgMHgyOTEwLCAweDZBMTUsIDB4NkExNSwgMHgyOTAzLAorICAgIDB4NkExNiwgMHg2QTE2LCAweDI5MjMsIDB4NkExNywgMHg2QTE3LCAweDI5MDAsIDB4NkExOCwgMHg2QTE4LCAweDI5MUMsCisgICAgMHg2QTE5LCAweDZBMTksIDB4MTE3QSwgMHg2QTFBLCAweDZBMUEsIDB4M0QxRSwgMHg2QTFCLCAweDZBMUIsIDB4MjkwQSwKKyAgICAweDZBMUMsIDB4NkExQywgMHgzQjY4LCAweDZBMUQsIDB4NkExRCwgMHgyOTBCLCAweDZBMUUsIDB4NkExRSwgMHgxMTc5LAorICAgIDB4NkExRiwgMHg2QTFGLCAweDExNzYsIDB4NkEyMCwgMHg2QTIwLCAweDI5MDYsIDB4NkEyMSwgMHg2QTIxLCAweDExN0MsCisgICAgMHg2QTIzLCAweDZBMjMsIDB4MTE3NSwgMHg2QTI1LCAweDZBMjUsIDB4MjkxRCwgMHg2QTI2LCAweDZBMjYsIDB4MjkyMCwKKyAgICAweDZBMjcsIDB4NkEyNywgMHgyOTBELCAweDZBMjgsIDB4NkEyOCwgMHgyQjc0LCAweDZBMkIsIDB4NkEyQiwgMHgzRDQyLAorICAgIDB4NkEyQywgMHg2QTJDLCAweDQyQUIsIDB4NkEyRCwgMHg2QTJELCAweDNCMUYsIDB4NkEzMiwgMHg2QTMyLCAweDJCNkMsCisgICAgMHg2QTMzLCAweDZBMzMsIDB4M0FBNCwgMHg2QTM0LCAweDZBMzQsIDB4MkI2OCwgMHg2QTM1LCAweDZBMzUsIDB4MTJEOSwKKyAgICAweDZBMzgsIDB4NkEzOCwgMHgxMkNFLCAweDZBMzksIDB4NkEzOSwgMHgxMkQzLCAweDZBM0EsIDB4NkEzQSwgMHgxMkNGLAorICAgIDB4NkEzQiwgMHg2QTNCLCAweDJCNzYsIDB4NkEzQywgMHg2QTNDLCAweDJCODEsIDB4NkEzRCwgMHg2QTNELCAweDEyQ0QsCisgICAgMHg2QTNFLCAweDZBM0UsIDB4MkI2RSwgMHg2QTNGLCAweDZBM0YsIDB4MkI3NywgMHg2QTQwLCAweDZBNDAsIDB4MjkxMywKKyAgICAweDZBNDEsIDB4NkE0MSwgMHgyQjc4LCAweDZBNDQsIDB4NkE0NCwgMHgxMkQ0LCAweDZBNDUsIDB4NkE0NSwgMHg0MUYwLAorICAgIDB4NkE0NiwgMHg2QTQ2LCAweDJCODcsIDB4NkE0NywgMHg2QTQ3LCAweDEyRDgsIDB4NkE0OCwgMHg2QTQ4LCAweDEyREIsCisgICAgMHg2QTQ5LCAweDZBNDksIDB4MkI2QSwgMHg2QTRCLCAweDZBNEIsIDB4MTJENywgMHg2QTRDLCAweDZBNEMsIDB4M0FBQiwKKyAgICAweDZBNEQsIDB4NkE0RSwgMHgyQjg1LCAweDZBNEYsIDB4NkE0RiwgMHgyQjdDLCAweDZBNTAsIDB4NkE1MCwgMHgyQjdCLAorICAgIDB4NkE1MSwgMHg2QTUxLCAweDJCNzMsIDB4NkE1MiwgMHg2QTUyLCAweDNBQTUsIDB4NkE1MywgMHg2QTUzLCAweDM3QUMsCisgICAgMHg2QTU0LCAweDZBNTQsIDB4MkI3RCwgMHg2QTU1LCAweDZBNTUsIDB4MkI4NCwgMHg2QTU2LCAweDZBNTYsIDB4MkI4MywKKyAgICAweDZBNTcsIDB4NkE1NywgMHgzN0RBLCAweDZBNTgsIDB4NkE1OCwgMHgxMkQyLCAweDZBNTksIDB4NkE1OSwgMHgxMkQwLAorICAgIDB4NkE1QSwgMHg2QTVBLCAweDJCNzUsIDB4NkE1QiwgMHg2QTVCLCAweDJCNzIsIDB4NkE1RCwgMHg2QTVELCAweDJCNkYsCisgICAgMHg2QTVFLCAweDZBNUUsIDB4MkI4MiwgMHg2QTVGLCAweDZBNUYsIDB4MTJEQSwgMHg2QTYwLCAweDZBNjAsIDB4MkI4MCwKKyAgICAweDZBNjEsIDB4NkE2MSwgMHgxMkQ2LCAweDZBNjIsIDB4NkE2MiwgMHgxMkQ1LCAweDZBNjQsIDB4NkE2NCwgMHgyQjdBLAorICAgIDB4NkE2NSwgMHg2QTY1LCAweDQ2NjAsIDB4NkE2NiwgMHg2QTY2LCAweDJCNjksIDB4NkE2NywgMHg2QTY3LCAweDJCNkIsCisgICAgMHg2QTY4LCAweDZBNjgsIDB4MkI2RCwgMHg2QTY5LCAweDZBNjksIDB4MkI3RiwgMHg2QTZBLCAweDZBNkEsIDB4MkI3OSwKKyAgICAweDZBNkIsIDB4NkE2QiwgMHgxMkQxLCAweDZBNkQsIDB4NkE2RCwgMHgyQjcwLCAweDZBNkYsIDB4NkE2RiwgMHgyQjdFLAorICAgIDB4NkE3MSwgMHg2QTcxLCAweDQ2NjIsIDB4NkE3NCwgMHg2QTc0LCAweDQ2NjEsIDB4NkE3NiwgMHg2QTc2LCAweDJCNzEsCisgICAgMHg2QTdBLCAweDZBN0EsIDB4M0FBRCwgMHg2QTdFLCAweDZBN0UsIDB4MTNFQywgMHg2QTdGLCAweDZBN0YsIDB4MkQ4NCwKKyAgICAweDZBODAsIDB4NkE4MCwgMHgxM0U1LCAweDZBODEsIDB4NkE4MSwgMHgyRDc1LCAweDZBODIsIDB4NkE4MiwgMHg0NjYzLAorICAgIDB4NkE4MywgMHg2QTgzLCAweDJEODAsIDB4NkE4NCwgMHg2QTg0LCAweDEzRTcsIDB4NkE4NSwgMHg2QTg1LCAweDJEODcsCisgICAgMHg2QTg3LCAweDZBODcsIDB4MkQ3QywgMHg2QTg5LCAweDZBODksIDB4MkQ3NywgMHg2QThBLCAweDZBOEEsIDB4NDEzNiwKKyAgICAweDZBOEMsIDB4NkE4QywgMHgyRDg4LCAweDZBOEQsIDB4NkE4RCwgMHgyRDczLCAweDZBOEUsIDB4NkE4RSwgMHgyRDdFLAorICAgIDB4NkE4RiwgMHg2QThGLCAweDNDMUIsIDB4NkE5MCwgMHg2QTkwLCAweDEzRUUsIDB4NkE5MSwgMHg2QTkxLCAweDJEODMsCisgICAgMHg2QTkyLCAweDZBOTIsIDB4MkQ4OSwgMHg2QTkzLCAweDZBOTMsIDB4MkQ3RCwgMHg2QTk0LCAweDZBOTQsIDB4MTNFNiwKKyAgICAweDZBOTUsIDB4NkE5NSwgMHgyRDdGLCAweDZBOTYsIDB4NkE5NiwgMHgyRDc0LCAweDZBOTcsIDB4NkE5NywgMHgxM0VELAorICAgIDB4NkE5OSwgMHg2QTk5LCAweDQ2NjUsIDB4NkE5QSwgMHg2QTlBLCAweDJEODYsIDB4NkE5QiwgMHg2QTlCLCAweDJENzksCisgICAgMHg2QTlDLCAweDZBOUMsIDB4MTNFOSwgMHg2QTlELCAweDZBOUQsIDB4NDFGMiwgMHg2QTlFLCAweDZBOUUsIDB4MkQ3QiwKKyAgICAweDZBOUYsIDB4NkE5RiwgMHgyRDc4LCAweDZBQTAsIDB4NkFBMCwgMHgxM0VGLCAweDZBQTEsIDB4NkFBMSwgMHgyRDdBLAorICAgIDB4NkFBMiwgMHg2QUEyLCAweDEzRTgsIDB4NkFBMywgMHg2QUEzLCAweDEzRUIsIDB4NkFBNCwgMHg2QUE0LCAweDJEODIsCisgICAgMHg2QUE1LCAweDZBQTUsIDB4MkQ3NiwgMHg2QUE2LCAweDZBQTYsIDB4MkQ4NSwgMHg2QUE3LCAweDZBQTcsIDB4MzdFMywKKyAgICAweDZBQTgsIDB4NkFBOCwgMHgyRDgxLCAweDZBQUIsIDB4NkFBQiwgMHg0NjY3LCAweDZBQUMsIDB4NkFBQywgMHgxNERELAorICAgIDB4NkFBRCwgMHg2QUFELCAweDJGM0UsIDB4NkFBRSwgMHg2QUFGLCAweDE0RTIsIDB4NkFCMSwgMHg2QUIxLCAweDNFNTMsCisgICAgMHg2QUIyLCAweDZBQjIsIDB4M0I0QiwgMHg2QUIzLCAweDZBQjMsIDB4MTREQywgMHg2QUI0LCAweDZBQjQsIDB4MkYzRCwKKyAgICAweDZBQjUsIDB4NkFCNSwgMHg0NjY4LCAweDZBQjYsIDB4NkFCNywgMHgyRjNBLCAweDZBQjgsIDB4NkFCOCwgMHgxNEUwLAorICAgIDB4NkFCOSwgMHg2QUI5LCAweDJGMzUsIDB4NkFCQSwgMHg2QUJBLCAweDJGMzksIDB4NkFCQiwgMHg2QUJCLCAweDE0REYsCisgICAgMHg2QUJELCAweDZBQkQsIDB4MkYzNiwgMHg2QUJFLCAweDZBQkUsIDB4M0FBMSwgMHg2QUMyLCAweDZBQzIsIDB4MTRFMSwKKyAgICAweDZBQzMsIDB4NkFDMywgMHgxNERFLCAweDZBQzUsIDB4NkFDNSwgMHgyRjM0LCAweDZBQzYsIDB4NkFDNiwgMHgyRjM4LAorICAgIDB4NkFDNywgMHg2QUM3LCAweDJGM0MsIDB4NkFDOCwgMHg2QUM4LCAweDQxRjUsIDB4NkFDOSwgMHg2QUM5LCAweDNBQTYsCisgICAgMHg2QUNBLCAweDZBQ0EsIDB4M0Y0QywgMHg2QUNCLCAweDZBQ0IsIDB4MzA5RiwgMHg2QUNDLCAweDZBQ0MsIDB4MzA5QywKKyAgICAweDZBQ0QsIDB4NkFDRCwgMHgzMEE1LCAweDZBQ0YsIDB4NkFDRiwgMHgzMEE0LCAweDZBRDAsIDB4NkFEMCwgMHgzMEEyLAorICAgIDB4NkFEMSwgMHg2QUQxLCAweDMwOUQsIDB4NkFEMywgMHg2QUQzLCAweDE1ODksIDB4NkFENCwgMHg2QUQ0LCAweDQ2NjksCisgICAgMHg2QUQ4LCAweDZBRDgsIDB4M0NBQSwgMHg2QUQ5LCAweDZBRDksIDB4MzA5RSwgMHg2QURBLCAweDZBREEsIDB4MTU4OCwKKyAgICAweDZBREIsIDB4NkFEQiwgMHgxM0VBLCAweDZBREMsIDB4NkFEQywgMHgzMEExLCAweDZBREQsIDB4NkFERCwgMHgxNTg3LAorICAgIDB4NkFERSwgMHg2QURFLCAweDMwQTYsIDB4NkFERiwgMHg2QURGLCAweDMwQTAsIDB4NkFFMCwgMHg2QUUwLCAweDMwOUIsCisgICAgMHg2QUUxLCAweDZBRTEsIDB4MkYzNywgMHg2QUU1LCAweDZBRTUsIDB4MTU4NiwgMHg2QUU3LCAweDZBRTcsIDB4MzA5QSwKKyAgICAweDZBRTgsIDB4NkFFOCwgMHgzMURGLCAweDZBRUEsIDB4NkFFQSwgMHgzMURFLCAweDZBRUIsIDB4NkFFQiwgMHgzMEEzLAorICAgIDB4NkFFQywgMHg2QUVDLCAweDE2MUIsIDB4NkFFRSwgMHg2QUVGLCAweDMxRTIsIDB4NkFGMCwgMHg2QUYwLCAweDMxREQsCisgICAgMHg2QUYxLCAweDZBRjEsIDB4MzFFMSwgMHg2QUYzLCAweDZBRjMsIDB4MzFEQywgMHg2QUY2LCAweDZBRjYsIDB4NDY2QSwKKyAgICAweDZBRjgsIDB4NkFGOCwgMHgzMkQ2LCAweDZBRjksIDB4NkFGOSwgMHgzMUUwLCAweDZBRkEsIDB4NkFGQSwgMHgxNjc4LAorICAgIDB4NkFGQiwgMHg2QUZCLCAweDE2NzYsIDB4NkFGQywgMHg2QUZDLCAweDMyRDQsIDB4NkIwMCwgMHg2QjAwLCAweDMyRDcsCisgICAgMHg2QjAyLCAweDZCMDIsIDB4MzJEMywgMHg2QjAzLCAweDZCMDMsIDB4MzJENSwgMHg2QjA0LCAweDZCMDQsIDB4MTY3NywKKyAgICAweDZCMDUsIDB4NkIwNSwgMHgzQUE3LCAweDZCMDgsIDB4NkIwOSwgMHgzMzg2LCAweDZCMEEsIDB4NkIwQSwgMHgxNkM2LAorICAgIDB4NkIwQiwgMHg2QjBCLCAweDMzODUsIDB4NkIwRiwgMHg2QjBGLCAweDM0MjAsIDB4NkIxMCwgMHg2QjEwLCAweDE2RkQsCisgICAgMHg2QjExLCAweDZCMTIsIDB4MzQxRSwgMHg2QjEzLCAweDZCMTMsIDB4MzQ4NywgMHg2QjE2LCAweDZCMTYsIDB4MTc0MywKKyAgICAweDZCMTcsIDB4NkIxNywgMHgzNENFLCAweDZCMTgsIDB4NkIxOSwgMHgzNENDLCAweDZCMUEsIDB4NkIxQSwgMHgzNENGLAorICAgIDB4NkIxRCwgMHg2QjFELCAweDQxRjgsIDB4NkIxRSwgMHg2QjFFLCAweDM1MzQsIDB4NkIyMCwgMHg2QjIwLCAweDAyREUsCisgICAgMHg2QjIxLCAweDZCMjEsIDB4MDNFMywgMHg2QjIzLCAweDZCMjMsIDB4MDYxQSwgMHg2QjI1LCAweDZCMjUsIDB4MTlDOSwKKyAgICAweDZCMjgsIDB4NkIyOCwgMHgxQjNELCAweDZCMkMsIDB4NkIyQywgMHgxQ0U2LCAweDZCMkQsIDB4NkIyRCwgMHgxQ0U4LAorICAgIDB4NkIyRiwgMHg2QjJGLCAweDFDRTcsIDB4NkIzMSwgMHg2QjMxLCAweDFDRTksIDB4NkIzMiwgMHg2QjMyLCAweDBBRTcsCisgICAgMHg2QjMzLCAweDZCMzMsIDB4MUYzQywgMHg2QjM0LCAweDZCMzQsIDB4MUNFQSwgMHg2QjM1LCAweDZCMzUsIDB4NDFGQiwKKyAgICAweDZCMzYsIDB4NkIzNiwgMHgxRjNCLCAweDZCMzcsIDB4NkIzOCwgMHgxRjNELCAweDZCMzksIDB4NkIzOSwgMHgyMUIyLAorICAgIDB4NkIzQSwgMHg2QjNBLCAweDBDOUMsIDB4NkIzQiwgMHg2QjNCLCAweDIxQjMsIDB4NkIzQywgMHg2QjNDLCAweDIxQjUsCisgICAgMHg2QjNELCAweDZCM0QsIDB4MEM5RCwgMHg2QjNFLCAweDZCM0UsIDB4MEM5QiwgMHg2QjNGLCAweDZCM0YsIDB4MjFCNCwKKyAgICAweDZCNDEsIDB4NkI0MSwgMHgyNDQ3LCAweDZCNDIsIDB4NkI0MiwgMHgyNDQ1LCAweDZCNDMsIDB4NkI0MywgMHgyNDQ0LAorICAgIDB4NkI0NSwgMHg2QjQ1LCAweDI0NDMsIDB4NkI0NiwgMHg2QjQ2LCAweDI0NDIsIDB4NkI0NywgMHg2QjQ3LCAweDBFNEEsCisgICAgMHg2QjQ4LCAweDZCNDgsIDB4MjQ0NiwgMHg2QjQ5LCAweDZCNDksIDB4MTAwMSwgMHg2QjRBLCAweDZCNEEsIDB4MjZFMiwKKyAgICAweDZCNEIsIDB4NkI0QiwgMHgyNkU0LCAweDZCNEMsIDB4NkI0QywgMHgxMDAyLCAweDZCNEQsIDB4NkI0RCwgMHgyNkUzLAorICAgIDB4NkI0RSwgMHg2QjRFLCAweDExODUsIDB4NkI1MCwgMHg2QjUwLCAweDExODQsIDB4NkI1MSwgMHg2QjUxLCAweDI5MjQsCisgICAgMHg2QjUyLCAweDZCNTIsIDB4M0Y2RSwgMHg2QjU0LCAweDZCNTQsIDB4MkI4OSwgMHg2QjU1LCAweDZCNTUsIDB4MkI4OCwKKyAgICAweDZCNTYsIDB4NkI1NiwgMHgyQjhBLCAweDZCNTcsIDB4NkI1NywgMHgzQUFFLCAweDZCNTksIDB4NkI1OSwgMHgxMkRDLAorICAgIDB4NkI1QiwgMHg2QjVCLCAweDJEOEEsIDB4NkI1QywgMHg2QjVDLCAweDEzRjAsIDB4NkI1RSwgMHg2QjVFLCAweDJGM0YsCisgICAgMHg2QjVGLCAweDZCNUYsIDB4MTRFNCwgMHg2QjYwLCAweDZCNjAsIDB4MzBBNywgMHg2QjYxLCAweDZCNjEsIDB4MTZDNywKKyAgICAweDZCNjIsIDB4NkI2MiwgMHgwMkRGLCAweDZCNjMsIDB4NkI2MywgMHgwMzRELCAweDZCNjQsIDB4NkI2NCwgMHgwM0U0LAorICAgIDB4NkI2NSwgMHg2QjY1LCAweDA0QzksIDB4NkI2NiwgMHg2QjY3LCAweDA2MUIsIDB4NkI2QSwgMHg2QjZBLCAweDA3NjksCisgICAgMHg2QjZELCAweDZCNkQsIDB4MUNFQiwgMHg2QjZGLCAweDZCNkYsIDB4NDUxNSwgMHg2QjcyLCAweDZCNzIsIDB4MEU0QiwKKyAgICAweDZCNzQsIDB4NkI3NCwgMHg0MUZDLCAweDZCNzYsIDB4NkI3NiwgMHgyOUEyLCAweDZCNzcsIDB4NkI3NywgMHgxMkRELAorICAgIDB4NkI3OCwgMHg2Qjc4LCAweDE0RTUsIDB4NkI3OSwgMHg2Qjc5LCAweDAyRTAsIDB4NkI3QSwgMHg2QjdBLCAweDQ0RUUsCisgICAgMHg2QjdCLCAweDZCN0IsIDB4MDNFNSwgMHg2QjdFLCAweDZCN0UsIDB4MTlDQiwgMHg2QjdGLCAweDZCN0YsIDB4MDYxRCwKKyAgICAweDZCODAsIDB4NkI4MCwgMHgxOUNBLCAweDZCODEsIDB4NkI4MSwgMHg0NjZCLCAweDZCODIsIDB4NkI4MiwgMHgxQjNFLAorICAgIDB4NkI4MywgMHg2QjgzLCAweDA3NkEsIDB4NkI4NCwgMHg2Qjg0LCAweDFCM0YsIDB4NkI4NiwgMHg2Qjg2LCAweDA3NkIsCisgICAgMHg2Qjg4LCAweDZCODgsIDB4MUNFRCwgMHg2Qjg5LCAweDZCODksIDB4MDkwMCwgMHg2QjhBLCAweDZCOEEsIDB4MDhGRiwKKyAgICAweDZCOEMsIDB4NkI4QywgMHgxRjQzLCAweDZCOEQsIDB4NkI4RSwgMHgxRjQxLCAweDZCOEYsIDB4NkI4RiwgMHgxRjQwLAorICAgIDB4NkI5MSwgMHg2QjkxLCAweDFGM0YsIDB4NkI5NCwgMHg2Qjk0LCAweDIxQjYsIDB4NkI5NSwgMHg2Qjk1LCAweDIxQjksCisgICAgMHg2Qjk2LCAweDZCOTYsIDB4MEM5RiwgMHg2Qjk3LCAweDZCOTcsIDB4MjFCNywgMHg2Qjk4LCAweDZCOTgsIDB4MEM5RSwKKyAgICAweDZCOTksIDB4NkI5OSwgMHgyMUI4LCAweDZCOUIsIDB4NkI5QiwgMHgyNDQ4LCAweDZCOUUsIDB4NkJBMCwgMHgyNkU1LAorICAgIDB4NkJBMiwgMHg2QkEyLCAweDI5MjcsIDB4NkJBMywgMHg2QkEzLCAweDI5MjYsIDB4NkJBNCwgMHg2QkE0LCAweDExODYsCisgICAgMHg2QkE1LCAweDZCQTUsIDB4MjkyNSwgMHg2QkE2LCAweDZCQTYsIDB4MjkyOCwgMHg2QkE3LCAweDZCQTcsIDB4MkI4QiwKKyAgICAweDZCQUEsIDB4NkJBQiwgMHgyQjhDLCAweDZCQUQsIDB4NkJBRCwgMHgyRDhCLCAweDZCQUUsIDB4NkJBRSwgMHgxM0YxLAorICAgIDB4NkJBRiwgMHg2QkFGLCAweDE0RTYsIDB4NkJCMCwgMHg2QkIwLCAweDMwQTgsIDB4NkJCMiwgMHg2QkIyLCAweDE2NzksCisgICAgMHg2QkIzLCAweDZCQjMsIDB4MTc4QSwgMHg2QkI1LCAweDZCQjUsIDB4MDc2QywgMHg2QkI2LCAweDZCQjYsIDB4MUI0MCwKKyAgICAweDZCQjcsIDB4NkJCNywgMHgwOTAxLCAweDZCQkEsIDB4NkJCQSwgMHgwQUU4LCAweDZCQkMsIDB4NkJCQywgMHgwQ0EwLAorICAgIDB4NkJCRCwgMHg2QkJELCAweDIxQkEsIDB4NkJCRiwgMHg2QkJGLCAweDBFNEQsIDB4NkJDMCwgMHg2QkMwLCAweDBFNEMsCisgICAgMHg2QkMxLCAweDZCQzEsIDB4NDY2QywgMHg2QkMzLCAweDZCQzQsIDB4MjZFOCwgMHg2QkM1LCAweDZCQzYsIDB4MTE4NywKKyAgICAweDZCQzcsIDB4NkJDNywgMHgyQjhGLCAweDZCQzgsIDB4NkJDOCwgMHgyQjhFLCAweDZCQzksIDB4NkJDOSwgMHgyRjQwLAorICAgIDB4NkJDQSwgMHg2QkNBLCAweDM0MjEsIDB4NkJDQiwgMHg2QkNCLCAweDAyRTEsIDB4NkJDQywgMHg2QkNDLCAweDE3OEIsCisgICAgMHg2QkNELCAweDZCQ0QsIDB4MDM0RSwgMHg2QkNGLCAweDZCQ0YsIDB4MDRDQSwgMHg2QkQwLCAweDZCRDAsIDB4MThBRCwKKyAgICAweDZCRDIsIDB4NkJEMiwgMHgwNzZELCAweDZCRDMsIDB4NkJEMywgMHgwRTRFLCAweDZCRDQsIDB4NkJENCwgMHgwMkUyLAorICAgIDB4NkJENiwgMHg2QkQ2LCAweDFCNDEsIDB4NkJENywgMHg2QkQ3LCAweDA3NkUsIDB4NkJEOCwgMHg2QkQ4LCAweDFCNDIsCisgICAgMHg2QkRBLCAweDZCREEsIDB4MTNGMiwgMHg2QkRCLCAweDZCREIsIDB4MDJFMywgMHg2QkRDLCAweDZCREMsIDB4NDIwNywKKyAgICAweDZCREUsIDB4NkJERSwgMHgxOUNDLCAweDZCRTAsIDB4NkJFMCwgMHgxQjQzLCAweDZCRTEsIDB4NkJFMSwgMHg0MjA1LAorICAgIDB4NkJFMiwgMHg2QkUyLCAweDFDRjIsIDB4NkJFMywgMHg2QkUzLCAweDFDRjEsIDB4NkJFNCwgMHg2QkU0LCAweDFDRUYsCisgICAgMHg2QkU2LCAweDZCRTYsIDB4MUNFRSwgMHg2QkU3LCAweDZCRTcsIDB4MUNGMywgMHg2QkU4LCAweDZCRTgsIDB4MUNGMCwKKyAgICAweDZCRUEsIDB4NkJFQSwgMHg0NjZELCAweDZCRUIsIDB4NkJFQywgMHgwQUU5LCAweDZCRUYsIDB4NkJFRiwgMHgwQ0ExLAorICAgIDB4NkJGMCwgMHg2QkYwLCAweDIxQkIsIDB4NkJGMiwgMHg2QkYzLCAweDIxQkMsIDB4NkJGNywgMHg2QkY4LCAweDI0NEMsCisgICAgMHg2QkY5LCAweDZCRjksIDB4MjQ0QiwgMHg2QkZBLCAweDZCRkEsIDB4M0Y3OSwgMHg2QkZCLCAweDZCRkMsIDB4MjQ0OSwKKyAgICAweDZCRkQsIDB4NkJGRCwgMHgwRTRGLCAweDZCRkUsIDB4NkJGRSwgMHgyNkVBLCAweDZCRkYsIDB4NkJGRiwgMHgyOTJCLAorICAgIDB4NkMwMCwgMHg2QzAwLCAweDI5MkEsIDB4NkMwMSwgMHg2QzAxLCAweDI5MjksIDB4NkMwMiwgMHg2QzAyLCAweDI5MkMsCisgICAgMHg2QzAzLCAweDZDMDMsIDB4MkI5MSwgMHg2QzA0LCAweDZDMDQsIDB4MkI5MCwgMHg2QzA1LCAweDZDMDUsIDB4MTJERSwKKyAgICAweDZDMDYsIDB4NkMwNiwgMHgyQjkyLCAweDZDMDgsIDB4NkMwOCwgMHgxM0YzLCAweDZDMDksIDB4NkMwOSwgMHgyRDhDLAorICAgIDB4NkMwQiwgMHg2QzBCLCAweDJGNDEsIDB4NkMwQywgMHg2QzBDLCAweDMwQTksIDB4NkMwRCwgMHg2QzBELCAweDMzODgsCisgICAgMHg2QzBGLCAweDZDMEYsIDB4MDJFNCwgMHg2QzEwLCAweDZDMTAsIDB4MDM1MCwgMHg2QzExLCAweDZDMTEsIDB4MDM0RiwKKyAgICAweDZDMTMsIDB4NkMxMywgMHgwNjFFLCAweDZDMTQsIDB4NkMxNCwgMHgxNzhDLCAweDZDMTUsIDB4NkMxNSwgMHgxN0FBLAorICAgIDB4NkMxNiwgMHg2QzE2LCAweDAzRTYsIDB4NkMxOCwgMHg2QzE4LCAweDE4MDEsIDB4NkMxOSwgMHg2QzFBLCAweDE4QUUsCisgICAgMHg2QzFCLCAweDZDMUIsIDB4MDYxRiwgMHg2QzFDLCAweDZDMUMsIDB4MzhBQiwgMHg2QzFELCAweDZDMUQsIDB4MTlDRCwKKyAgICAweDZDMUYsIDB4NkMxRiwgMHgwNzZGLCAweDZDMjAsIDB4NkMyMSwgMHgxQjQ0LCAweDZDMjMsIDB4NkMyMywgMHgwOTAyLAorICAgIDB4NkMyNCwgMHg2QzI0LCAweDA5MDYsIDB4NkMyNSwgMHg2QzI1LCAweDFDRjQsIDB4NkMyNiwgMHg2QzI2LCAweDA5MDUsCisgICAgMHg2QzI3LCAweDZDMjgsIDB4MDkwMywgMHg2QzJBLCAweDZDMkEsIDB4MUY0NCwgMHg2QzJCLCAweDZDMkIsIDB4MEFFQiwKKyAgICAweDZDMkMsIDB4NkMyQywgMHgwQ0E0LCAweDZDMkUsIDB4NkMyRiwgMHgwQ0EyLCAweDZDMzAsIDB4NkMzMCwgMHgyMUJFLAorICAgIDB4NkMzMSwgMHg2QzMxLCAweDNGNjMsIDB4NkMzMywgMHg2QzMzLCAweDEwMDMsIDB4NkMzNCwgMHg2QzM0LCAweDAyRTUsCisgICAgMHg2QzM1LCAweDZDMzUsIDB4NDRFRiwgMHg2QzM2LCAweDZDMzYsIDB4MTdBQiwgMHg2QzM3LCAweDZDMzcsIDB4NDIwOCwKKyAgICAweDZDMzgsIDB4NkMzOCwgMHgwMzUxLCAweDZDMzksIDB4NkMzOSwgMHgzRTA1LCAweDZDM0EsIDB4NkMzQSwgMHg0NEYwLAorICAgIDB4NkMzQiwgMHg2QzNCLCAweDE3QUUsIDB4NkMzRCwgMHg2QzNELCAweDQzODEsIDB4NkMzRSwgMHg2QzNFLCAweDAzNTQsCisgICAgMHg2QzNGLCAweDZDM0YsIDB4MTdBRCwgMHg2QzQwLCAweDZDNDAsIDB4MDM1MywgMHg2QzQxLCAweDZDNDEsIDB4MDM1MiwKKyAgICAweDZDNDIsIDB4NkM0MiwgMHgwNENCLCAweDZDNDMsIDB4NkM0MywgMHgxN0FDLCAweDZDNDYsIDB4NkM0NiwgMHgxODAyLAorICAgIDB4NkM0OSwgMHg2QzQ5LCAweDQwOEQsIDB4NkM0QSwgMHg2QzRBLCAweDE4MDYsIDB4NkM0QiwgMHg2QzRDLCAweDE4MDgsCisgICAgMHg2QzRELCAweDZDNEUsIDB4MDNGMCwgMHg2QzRGLCAweDZDNEYsIDB4MTgwNSwgMHg2QzUwLCAweDZDNTAsIDB4MDNFQywKKyAgICAweDZDNTIsIDB4NkM1MiwgMHgxODAzLCAweDZDNTQsIDB4NkM1NCwgMHgxODA3LCAweDZDNTUsIDB4NkM1NSwgMHgwM0VELAorICAgIDB4NkM1NywgMHg2QzU3LCAweDAzRTgsIDB4NkM1OCwgMHg2QzU4LCAweDNCQkEsIDB4NkM1OSwgMHg2QzU5LCAweDAzRTksCisgICAgMHg2QzVBLCAweDZDNUEsIDB4NDIwQywgMHg2QzVCLCAweDZDNUIsIDB4MDNFRiwgMHg2QzVDLCAweDZDNUMsIDB4MTgwNCwKKyAgICAweDZDNUQsIDB4NkM1RCwgMHgwM0U3LCAweDZDNUUsIDB4NkM1RSwgMHgwNENDLCAweDZDNUYsIDB4NkM2MCwgMHgwM0VBLAorICAgIDB4NkM2MSwgMHg2QzYxLCAweDAzRUUsIDB4NkM2NSwgMHg2QzY1LCAweDE4QzAsIDB4NkM2NiwgMHg2QzY2LCAweDE4QkUsCisgICAgMHg2QzY3LCAweDZDNjcsIDB4MThCMSwgMHg2QzY4LCAweDZDNjgsIDB4MDREOCwgMHg2QzY5LCAweDZDNjksIDB4MThCOCwKKyAgICAweDZDNkEsIDB4NkM2QSwgMHgwNEQzLCAweDZDNkIsIDB4NkM2QiwgMHgxOEIyLCAweDZDNkQsIDB4NkM2RCwgMHgxOEJBLAorICAgIDB4NkM2RSwgMHg2QzZFLCAweDQwQ0EsIDB4NkM2RiwgMHg2QzZGLCAweDE4QjcsIDB4NkM3MCwgMHg2QzcwLCAweDA0RDYsCisgICAgMHg2QzcxLCAweDZDNzEsIDB4MThCNiwgMHg2QzcyLCAweDZDNzIsIDB4MDRERCwgMHg2QzczLCAweDZDNzMsIDB4MThCRiwKKyAgICAweDZDNzQsIDB4NkM3NCwgMHgwNERGLCAweDZDNzUsIDB4NkM3NSwgMHg0NjZFLCAweDZDNzYsIDB4NkM3NiwgMHgwNEUxLAorICAgIDB4NkM3OCwgMHg2Qzc4LCAweDE4QjAsIDB4NkM3OSwgMHg2Qzc5LCAweDQyMEUsIDB4NkM3QSwgMHg2QzdBLCAweDA0RDQsCisgICAgMHg2QzdCLCAweDZDN0IsIDB4MThDMSwgMHg2QzdELCAweDZDN0QsIDB4MDREQiwgMHg2QzdFLCAweDZDN0UsIDB4MDRERSwKKyAgICAweDZDN0YsIDB4NkM3RiwgMHgzN0E2LCAweDZDODAsIDB4NkM4MCwgMHgxOUU0LCAweDZDODEsIDB4NkM4MSwgMHgwNENFLAorICAgIDB4NkM4MiwgMHg2QzgyLCAweDA0RTUsIDB4NkM4MywgMHg2QzgzLCAweDA0REMsIDB4NkM4NCwgMHg2Qzg0LCAweDE4QjMsCisgICAgMHg2Qzg1LCAweDZDODUsIDB4MDREMSwgMHg2Qzg2LCAweDZDODYsIDB4MDRFMCwgMHg2Qzg3LCAweDZDODcsIDB4MThCQiwKKyAgICAweDZDODgsIDB4NkM4OSwgMHgwNENGLCAweDZDOEEsIDB4NkM4QSwgMHgxOUUyLCAweDZDOEIsIDB4NkM4QiwgMHgxOEI0LAorICAgIDB4NkM4QywgMHg2QzhDLCAweDA0RDcsIDB4NkM4RCwgMHg2QzhELCAweDA0RTIsIDB4NkM4RSwgMHg2QzhFLCAweDE4QzIsCisgICAgMHg2QzhGLCAweDZDOEYsIDB4MThCNSwgMHg2QzkwLCAweDZDOTAsIDB4MDRENSwgMHg2QzkyLCAweDZDOTIsIDB4MDREQSwKKyAgICAweDZDOTMsIDB4NkM5MywgMHgxOUNFLCAweDZDOTQsIDB4NkM5NCwgMHgwNEUzLCAweDZDOTUsIDB4NkM5NSwgMHgxOEJDLAorICAgIDB4NkM5NiwgMHg2Qzk2LCAweDA0RDksIDB4NkM5OCwgMHg2Qzk4LCAweDA0RTQsIDB4NkM5OSwgMHg2Qzk5LCAweDA0Q0QsCisgICAgMHg2QzlBLCAweDZDOUEsIDB4MThCOSwgMHg2QzlCLCAweDZDOUIsIDB4MDREMiwgMHg2QzlDLCAweDZDOUMsIDB4MThCRCwKKyAgICAweDZDOUQsIDB4NkM5RCwgMHgxOUUzLCAweDZDOUYsIDB4NkM5RiwgMHgzODg5LCAweDZDQTIsIDB4NkNBMiwgMHgzRDYzLAorICAgIDB4NkNBQSwgMHg2Q0FBLCAweDQ2NkYsIDB4NkNBQiwgMHg2Q0FCLCAweDA2MkIsIDB4NkNBQywgMHg2Q0FDLCAweDA2M0IsCisgICAgMHg2Q0FELCAweDZDQUQsIDB4MTlENSwgMHg2Q0FFLCAweDZDQUUsIDB4MDYzMiwgMHg2Q0FGLCAweDZDQUYsIDB4M0NGNiwKKyAgICAweDZDQjAsIDB4NkNCMCwgMHgxOUVBLCAweDZDQjEsIDB4NkNCMSwgMHgwNjIzLCAweDZDQjIsIDB4NkNCMiwgMHgzRUNDLAorICAgIDB4NkNCMywgMHg2Q0IzLCAweDA2MjYsIDB4NkNCNCwgMHg2Q0I0LCAweDE5RTEsIDB4NkNCNiwgMHg2Q0I2LCAweDE5RDMsCisgICAgMHg2Q0I3LCAweDZDQjcsIDB4MTlENywgMHg2Q0I4LCAweDZDQjgsIDB4MDYyRSwgMHg2Q0I5LCAweDZDQjksIDB4MDYzMCwKKyAgICAweDZDQkEsIDB4NkNCQSwgMHgxOURBLCAweDZDQkIsIDB4NkNCQiwgMHgwNjM3LCAweDZDQkMsIDB4NkNCQywgMHgwNjI5LAorICAgIDB4NkNCRCwgMHg2Q0JFLCAweDA2MjcsIDB4NkNCRiwgMHg2Q0JGLCAweDA2MzYsIDB4NkNDMCwgMHg2Q0MwLCAweDE5RTYsCisgICAgMHg2Q0MxLCAweDZDQzEsIDB4MDYzMSwgMHg2Q0MyLCAweDZDQzIsIDB4MTlEOSwgMHg2Q0MzLCAweDZDQzMsIDB4MTlEQiwKKyAgICAweDZDQzQsIDB4NkNDNCwgMHgwNjJGLCAweDZDQzUsIDB4NkNDNSwgMHgwNjM0LCAweDZDQzYsIDB4NkNDNiwgMHgxOURDLAorICAgIDB4NkNDNywgMHg2Q0M3LCAweDE5RTksIDB4NkNDOSwgMHg2Q0M5LCAweDA3NzAsIDB4NkNDQSwgMHg2Q0NBLCAweDA2M0EsCisgICAgMHg2Q0NCLCAweDZDQ0IsIDB4NDA3MCwgMHg2Q0NDLCAweDZDQ0MsIDB4MDYyNCwgMHg2Q0NELCAweDZDQ0QsIDB4MTlFOCwKKyAgICAweDZDQ0UsIDB4NkNDRSwgMHgzRjkxLCAweDZDQ0YsIDB4NkNDRiwgMHgxOUVDLCAweDZDRDAsIDB4NkNEMCwgMHgxOUQ4LAorICAgIDB4NkNEMSwgMHg2Q0QxLCAweDE5RUUsIDB4NkNEMiwgMHg2Q0QyLCAweDE5REYsIDB4NkNEMywgMHg2Q0QzLCAweDA2MkQsCisgICAgMHg2Q0Q0LCAweDZDRDQsIDB4MTlENCwgMHg2Q0Q1LCAweDZDRDUsIDB4MDYyQywgMHg2Q0Q2LCAweDZDRDYsIDB4MDYzRSwKKyAgICAweDZDRDcsIDB4NkNENywgMHgwNjMzLCAweDZDRDksIDB4NkNEOSwgMHgxOUQyLCAweDZDREEsIDB4NkNEQSwgMHgxQjRFLAorICAgIDB4NkNEQiwgMHg2Q0RCLCAweDA2MzksIDB4NkNEQywgMHg2Q0RDLCAweDA2M0QsIDB4NkNERCwgMHg2Q0RELCAweDE5RTAsCisgICAgMHg2Q0RFLCAweDZDREUsIDB4MTlFNSwgMHg2Q0RGLCAweDZDREYsIDB4M0Q1NywgMHg2Q0UwLCAweDZDRTAsIDB4MDYzRiwKKyAgICAweDZDRTEsIDB4NkNFMSwgMHgwNjM4LCAweDZDRTIsIDB4NkNFMiwgMHgwNjJBLCAweDZDRTMsIDB4NkNFMywgMHgwNjIwLAorICAgIDB4NkNFNSwgMHg2Q0U1LCAweDA2MjUsIDB4NkNFNywgMHg2Q0U3LCAweDE5RDYsIDB4NkNFOCwgMHg2Q0U4LCAweDA2MjEsCisgICAgMHg2Q0U5LCAweDZDRTksIDB4MTlFRCwgMHg2Q0VBLCAweDZDRUEsIDB4M0Y4RCwgMHg2Q0VCLCAweDZDRUIsIDB4MTlEMCwKKyAgICAweDZDRUMsIDB4NkNFQywgMHgxOUNGLCAweDZDRUQsIDB4NkNFRCwgMHgxOURELCAweDZDRUUsIDB4NkNFRSwgMHgxOUQxLAorICAgIDB4NkNFRiwgMHg2Q0VGLCAweDA2M0MsIDB4NkNGMCwgMHg2Q0YwLCAweDA5MDcsIDB4NkNGMSwgMHg2Q0YxLCAweDA2MzUsCisgICAgMHg2Q0YyLCAweDZDRjIsIDB4MTlERSwgMHg2Q0YzLCAweDZDRjMsIDB4MDYyMiwgMHg2Q0Y1LCAweDZDRjUsIDB4MDc3RiwKKyAgICAweDZDRjksIDB4NkNGOSwgMHgxOUVCLCAweDZEMDAsIDB4NkQwMCwgMHgxQjU1LCAweDZEMDEsIDB4NkQwMSwgMHgxQjU4LAorICAgIDB4NkQwMiwgMHg2RDAyLCAweDQ2NzEsIDB4NkQwMywgMHg2RDAzLCAweDFCNUIsIDB4NkQwNCwgMHg2RDA0LCAweDFCNTAsCisgICAgMHg2RDA1LCAweDZEMDUsIDB4M0ExOSwgMHg2RDA2LCAweDZEMDYsIDB4NDY3MiwgMHg2RDA3LCAweDZEMDcsIDB4MUI1RSwKKyAgICAweDZEMDgsIDB4NkQwOCwgMHgxQjYxLCAweDZEMDksIDB4NkQwOSwgMHgxQjYzLCAweDZEMEEsIDB4NkQwQSwgMHgxQjRELAorICAgIDB4NkQwQiwgMHg2RDBCLCAweDA3NzEsIDB4NkQwQywgMHg2RDBDLCAweDA3NzYsIDB4NkQwRCwgMHg2RDBELCAweDFDRjksCisgICAgMHg2RDBFLCAweDZEMEUsIDB4MDc4NiwgMHg2RDBGLCAweDZEMEYsIDB4MUI1QywgMHg2RDEwLCAweDZEMTAsIDB4MUI2NCwKKyAgICAweDZEMTEsIDB4NkQxMSwgMHgxQjU0LCAweDZEMTIsIDB4NkQxMiwgMHgxQjRDLCAweDZEMTYsIDB4NkQxNiwgMHgxRDE0LAorICAgIDB4NkQxNywgMHg2RDE3LCAweDA3NzksIDB4NkQxOCwgMHg2RDE4LCAweDFCNTksIDB4NkQxOSwgMHg2RDE5LCAweDFCNTEsCisgICAgMHg2RDFBLCAweDZEMUEsIDB4MUI1MywgMHg2RDFCLCAweDZEMUIsIDB4MDc3RSwgMHg2RDFELCAweDZEMUQsIDB4MUI1NiwKKyAgICAweDZEMUUsIDB4NkQxRSwgMHgwNzc4LCAweDZEMUYsIDB4NkQxRiwgMHgxQjQ5LCAweDZEMjAsIDB4NkQyMCwgMHgxQjVGLAorICAgIDB4NkQyMiwgMHg2RDIyLCAweDFCNjIsIDB4NkQyNCwgMHg2RDI0LCAweDNBQzMsIDB4NkQyNSwgMHg2RDI1LCAweDA3NzUsCisgICAgMHg2RDI2LCAweDZEMjYsIDB4NDY3MywgMHg2RDI3LCAweDZEMjcsIDB4MDc4MSwgMHg2RDI4LCAweDZEMjgsIDB4MUI0NiwKKyAgICAweDZEMjksIDB4NkQyOSwgMHgwNzgzLCAweDZEMkEsIDB4NkQyQSwgMHgwNzczLCAweDZEMkIsIDB4NkQyQiwgMHgwNzg3LAorICAgIDB4NkQyQywgMHg2RDJDLCAweDFCNjAsIDB4NkQyRCwgMHg2RDJELCAweDFCNDgsIDB4NkQyRSwgMHg2RDJFLCAweDA3ODQsCisgICAgMHg2RDJGLCAweDZEMkYsIDB4MUQwRSwgMHg2RDMwLCAweDZEMzAsIDB4MTlFNywgMHg2RDMxLCAweDZEMzEsIDB4MDc3NywKKyAgICAweDZEMzIsIDB4NkQzMiwgMHgwNzcyLCAweDZEMzMsIDB4NkQzMywgMHgxQjRGLCAweDZEMzQsIDB4NkQzNCwgMHgxQjQ3LAorICAgIDB4NkQzNSwgMHg2RDM1LCAweDA3ODUsIDB4NkQzNiwgMHg2RDM2LCAweDA3N0QsIDB4NkQzNywgMHg2RDM3LCAweDFCNUEsCisgICAgMHg2RDM4LCAweDZEMzgsIDB4MDc4MiwgMHg2RDM5LCAweDZEMzksIDB4MDc4MCwgMHg2RDNBLCAweDZEM0EsIDB4MUI1MiwKKyAgICAweDZEM0IsIDB4NkQzQiwgMHgwNzdBLCAweDZEM0MsIDB4NkQzQywgMHgxQjRBLCAweDZEM0QsIDB4NkQzRSwgMHgwNzdCLAorICAgIDB4NkQzRiwgMHg2RDNGLCAweDFCNEIsIDB4NkQ0MCwgMHg2RDQwLCAweDFCNUQsIDB4NkQ0MSwgMHg2RDQxLCAweDA3NzQsCisgICAgMHg2RDQyLCAweDZENDIsIDB4MUI1NywgMHg2RDRFLCAweDZENEUsIDB4NDU1OCwgMHg2RDU3LCAweDZENTcsIDB4M0NGMywKKyAgICAweDZENTgsIDB4NkQ1OCwgMHgxQ0ZDLCAweDZENTksIDB4NkQ1OSwgMHgwOTBGLCAweDZENUEsIDB4NkQ1QSwgMHgwOTE0LAorICAgIDB4NkQ1QiwgMHg2RDVCLCAweDQwOUMsIDB4NkQ1QywgMHg2RDVDLCAweDQyMjIsIDB4NkQ1RSwgMHg2RDVFLCAweDFEMDUsCisgICAgMHg2RDVGLCAweDZENUYsIDB4MUQwQiwgMHg2RDYwLCAweDZENjAsIDB4MUQwNywgMHg2RDYxLCAweDZENjEsIDB4MUNGQSwKKyAgICAweDZENjIsIDB4NkQ2MiwgMHgxQ0ZELCAweDZENjMsIDB4NkQ2NCwgMHgxQ0Y2LCAweDZENjUsIDB4NkQ2NSwgMHgwOTFCLAorICAgIDB4NkQ2NiwgMHg2RDY2LCAweDA5MEMsIDB4NkQ2NywgMHg2RDY3LCAweDFEMDYsIDB4NkQ2OCwgMHg2RDY4LCAweDFEMEYsCisgICAgMHg2RDY5LCAweDZENjksIDB4MDkxNiwgMHg2RDZBLCAweDZENkEsIDB4MDkwOCwgMHg2RDZDLCAweDZENkMsIDB4MDkxMSwKKyAgICAweDZENkQsIDB4NkQ2RCwgMHgxQ0ZFLCAweDZENkUsIDB4NkQ2RSwgMHgwOTEzLCAweDZENkYsIDB4NkQ2RiwgMHgxQ0ZGLAorICAgIDB4NkQ3MCwgMHg2RDcwLCAweDFEMDksIDB4NkQ3MSwgMHg2RDcxLCAweDQwRjUsIDB4NkQ3MiwgMHg2RDcyLCAweDM5RDcsCisgICAgMHg2RDc0LCAweDZENzQsIDB4MDkxNSwgMHg2RDc1LCAweDZENzUsIDB4MUQxOCwgMHg2RDc2LCAweDZENzYsIDB4MUNGOCwKKyAgICAweDZENzcsIDB4NkQ3NywgMHgwOTBFLCAweDZENzgsIDB4NkQ3OCwgMHgwOTBELCAweDZENzksIDB4NkQ3OSwgMHgwOTE5LAorICAgIDB4NkQ3QSwgMHg2RDdBLCAweDFDRjUsIDB4NkQ3QiwgMHg2RDdCLCAweDFEMTYsIDB4NkQ3QywgMHg2RDdDLCAweDFEMEEsCisgICAgMHg2RDdELCAweDZEN0QsIDB4MUQxNywgMHg2RDdFLCAweDZEN0UsIDB4MUQxMSwgMHg2RDdGLCAweDZEN0YsIDB4MUQwMywKKyAgICAweDZEODAsIDB4NkQ4MCwgMHgxRDEyLCAweDZEODEsIDB4NkQ4MSwgMHg0Njc0LCAweDZEODIsIDB4NkQ4MiwgMHgxRDBDLAorICAgIDB4NkQ4MywgMHg2RDgzLCAweDFEMTUsIDB4NkQ4NCwgMHg2RDg0LCAweDFEMTMsIDB4NkQ4NSwgMHg2RDg1LCAweDA5MUEsCisgICAgMHg2RDg2LCAweDZEODYsIDB4MUQwNCwgMHg2RDg3LCAweDZEODcsIDB4MDkwQiwgMHg2RDg4LCAweDZEODgsIDB4MDkwQSwKKyAgICAweDZEODksIDB4NkQ4OSwgMHgwOTEyLCAweDZEOEEsIDB4NkQ4QSwgMHgwOTE4LCAweDZEOEIsIDB4NkQ4QiwgMHgxRDEwLAorICAgIDB4NkQ4QywgMHg2RDhDLCAweDA5MTcsIDB4NkQ4RCwgMHg2RDhELCAweDFEMDEsIDB4NkQ4RSwgMHg2RDhFLCAweDBBRUMsCisgICAgMHg2RDhGLCAweDZEOEYsIDB4M0RFOCwgMHg2RDkwLCAweDZEOTAsIDB4MUQxOSwgMHg2RDkxLCAweDZEOTEsIDB4MUQwMCwKKyAgICAweDZEOTIsIDB4NkQ5MiwgMHgxQ0ZCLCAweDZEOTMsIDB4NkQ5MywgMHgwOTEwLCAweDZEOTQsIDB4NkQ5NCwgMHgwOTFDLAorICAgIDB4NkQ5NSwgMHg2RDk1LCAweDA5MDksIDB4NkQ5NiwgMHg2RDk2LCAweDQyMjEsIDB4NkQ5NywgMHg2RDk3LCAweDFEMDgsCisgICAgMHg2RDk4LCAweDZEOTgsIDB4MUQwRCwgMHg2REE0LCAweDZEQTQsIDB4NDY3NiwgMHg2REE1LCAweDZEQTUsIDB4M0FCOSwKKyAgICAweDZEQUEsIDB4NkRBQSwgMHgwQjBFLCAweDZEQUIsIDB4NkRBQiwgMHgxRjQ2LCAweDZEQUMsIDB4NkRBQywgMHgxRjRBLAorICAgIDB4NkRBRSwgMHg2REFFLCAweDBBRkIsIDB4NkRBRiwgMHg2REFGLCAweDBBRjksIDB4NkRCMSwgMHg2REIxLCAweDQ2NzcsCisgICAgMHg2REIyLCAweDZEQjIsIDB4MEFGMCwgMHg2REIzLCAweDZEQjMsIDB4MUY0OCwgMHg2REI0LCAweDZEQjQsIDB4MUY0NywKKyAgICAweDZEQjUsIDB4NkRCNSwgMHgwQjA0LCAweDZEQjcsIDB4NkRCNywgMHgxRjRELCAweDZEQjgsIDB4NkRCOCwgMHgwQUZFLAorICAgIDB4NkRCOSwgMHg2REI5LCAweDNGRkIsIDB4NkRCQSwgMHg2REJBLCAweDFGNUYsIDB4NkRCQiwgMHg2REJCLCAweDFGNkIsCisgICAgMHg2REJDLCAweDZEQkMsIDB4MEFFRCwgMHg2REJELCAweDZEQkQsIDB4MUY1QywgMHg2REJFLCAweDZEQkUsIDB4MUY1NSwKKyAgICAweDZEQkYsIDB4NkRCRiwgMHgwQjEwLCAweDZEQzAsIDB4NkRDMCwgMHgxRjQ1LCAweDZEQzIsIDB4NkRDMiwgMHgxRjYxLAorICAgIDB4NkRDNCwgMHg2REM0LCAweDBCMEQsIDB4NkRDNSwgMHg2REM1LCAweDBCMDEsIDB4NkRDNiwgMHg2REM2LCAweDBCMEMsCisgICAgMHg2REM3LCAweDZEQzcsIDB4MEFGNywgMHg2REM4LCAweDZEQzgsIDB4MUY1MSwgMHg2REM5LCAweDZEQzksIDB4MUY2MywKKyAgICAweDZEQ0EsIDB4NkRDQSwgMHgxRjVCLCAweDZEQ0IsIDB4NkRDQiwgMHgwQUY4LCAweDZEQ0MsIDB4NkRDQywgMHgwQUYyLAorICAgIDB4NkRDRCwgMHg2RENELCAweDFGNjksIDB4NkRDRiwgMHg2RENGLCAweDFGNjIsIDB4NkREMCwgMHg2REQwLCAweDFGNjQsCisgICAgMHg2REQxLCAweDZERDEsIDB4MEFGQSwgMHg2REQyLCAweDZERDIsIDB4MEIwMiwgMHg2REQzLCAweDZERDMsIDB4MUY2NiwKKyAgICAweDZERDQsIDB4NkRENCwgMHgxRjRGLCAweDZERDUsIDB4NkRENSwgMHgxRjYwLCAweDZERDYsIDB4NkRENiwgMHgxRjU0LAorICAgIDB4NkRENywgMHg2REQ3LCAweDFGNjgsIDB4NkREOCwgMHg2REQ4LCAweDBCMDcsIDB4NkREOSwgMHg2REQ5LCAweDBBRUYsCisgICAgMHg2RERBLCAweDZEREEsIDB4MEIwNSwgMHg2RERCLCAweDZEREIsIDB4MUY1OSwgMHg2RERDLCAweDZEREQsIDB4MUY1NywKKyAgICAweDZEREUsIDB4NkRERSwgMHgwQUZDLCAweDZEREYsIDB4NkRERiwgMHgxRjUzLCAweDZERTAsIDB4NkRFMCwgMHgxRjUyLAorICAgIDB4NkRFMSwgMHg2REUxLCAweDBBRjEsIDB4NkRFMiwgMHg2REUyLCAweDFGNEMsIDB4NkRFMywgMHg2REUzLCAweDFGNkEsCisgICAgMHg2REU0LCAweDZERTQsIDB4MEFGMywgMHg2REU1LCAweDZERTUsIDB4MUY1NiwgMHg2REU2LCAweDZERTYsIDB4MEIxMSwKKyAgICAweDZERTgsIDB4NkRFOCwgMHgwQjBCLCAweDZERTksIDB4NkRFOSwgMHgxRjRCLCAweDZERUEsIDB4NkRFQSwgMHgwQjA4LAorICAgIDB4NkRFQiwgMHg2REVCLCAweDBCMDYsIDB4NkRFQywgMHg2REVDLCAweDBCMEYsIDB4NkRFRCwgMHg2REVELCAweDFGNUQsCisgICAgMHg2REVFLCAweDZERUUsIDB4MEIwQSwgMHg2REVGLCAweDZERUYsIDB4MUQwMiwgMHg2REYwLCAweDZERjAsIDB4MUY1RSwKKyAgICAweDZERjEsIDB4NkRGMSwgMHgwQjA5LCAweDZERjIsIDB4NkRGMiwgMHgxRjY1LCAweDZERjMsIDB4NkRGMywgMHgwQUVFLAorICAgIDB4NkRGNCwgMHg2REY0LCAweDFGNUEsIDB4NkRGNSwgMHg2REY1LCAweDBCMDAsIDB4NkRGNiwgMHg2REY2LCAweDFGNEUsCisgICAgMHg2REY3LCAweDZERjcsIDB4MEFGRiwgMHg2REY5LCAweDZERjksIDB4MEFGRCwgMHg2REZBLCAweDZERkEsIDB4MEFGNSwKKyAgICAweDZERkIsIDB4NkRGQiwgMHgwQUY0LCAweDZERkMsIDB4NkRGQywgMHgyMUJGLCAweDZERkQsIDB4NkRGRCwgMHgxRjY3LAorICAgIDB4NkUwMCwgMHg2RTAwLCAweDFGNTAsIDB4NkUwMiwgMHg2RTAyLCAweDNDRkEsIDB4NkUwMywgMHg2RTAzLCAweDIxRDQsCisgICAgMHg2RTA0LCAweDZFMDQsIDB4M0FCRSwgMHg2RTA1LCAweDZFMDUsIDB4MEFGNiwgMHg2RTBBLCAweDZFMEEsIDB4M0FDMSwKKyAgICAweDZFMEYsIDB4NkUwRiwgMHgzQ0YwLCAweDZFMTUsIDB4NkUxNSwgMHg0Njc4LCAweDZFMTgsIDB4NkUxOCwgMHg0Njc5LAorICAgIDB4NkUxOSwgMHg2RTE5LCAweDBDQzEsIDB4NkUxQSwgMHg2RTFBLCAweDBCMDMsIDB4NkUxQiwgMHg2RTFCLCAweDBDQUYsCisgICAgMHg2RTFDLCAweDZFMUMsIDB4MjFDRSwgMHg2RTFELCAweDZFMUQsIDB4MENCRCwgMHg2RTFGLCAweDZFMUYsIDB4MjFDMiwKKyAgICAweDZFMjAsIDB4NkUyMCwgMHgwQ0FDLCAweDZFMjEsIDB4NkUyMSwgMHgwQ0E4LCAweDZFMjIsIDB4NkUyMiwgMHgyMUUwLAorICAgIDB4NkUyMywgMHg2RTIzLCAweDBDQUUsIDB4NkUyNCwgMHg2RTI0LCAweDBDQjIsIDB4NkUyNSwgMHg2RTI1LCAweDBDQUQsCisgICAgMHg2RTI2LCAweDZFMjYsIDB4MENCNiwgMHg2RTI3LCAweDZFMjcsIDB4MjFFNCwgMHg2RTI4LCAweDZFMjgsIDB4MjFEQiwKKyAgICAweDZFMjksIDB4NkUyOSwgMHg0NjdBLCAweDZFMkEsIDB4NkUyQSwgMHg0MzAyLCAweDZFMkIsIDB4NkUyQiwgMHgyMUM5LAorICAgIDB4NkUyQywgMHg2RTJDLCAweDBDQkIsIDB4NkUyRCwgMHg2RTJELCAweDBDQjUsIDB4NkUyRSwgMHg2RTJFLCAweDIxRDUsCisgICAgMHg2RTJGLCAweDZFMkYsIDB4MENBNSwgMHg2RTMwLCAweDZFMzAsIDB4MjFFMSwgMHg2RTMxLCAweDZFMzEsIDB4MjFEQSwKKyAgICAweDZFMzIsIDB4NkUzMiwgMHgwQ0E5LCAweDZFMzMsIDB4NkUzMywgMHgyMUNGLCAweDZFMzQsIDB4NkUzNCwgMHgwQ0I4LAorICAgIDB4NkUzNSwgMHg2RTM2LCAweDIxRUMsIDB4NkUzOCwgMHg2RTM4LCAweDBDQTYsIDB4NkUzOSwgMHg2RTM5LCAweDIxREYsCisgICAgMHg2RTNBLCAweDZFM0EsIDB4MENCQSwgMHg2RTNCLCAweDZFM0IsIDB4MjFEMywgMHg2RTNDLCAweDZFM0QsIDB4MjFDNSwKKyAgICAweDZFM0UsIDB4NkUzRSwgMHgwQ0JFLCAweDZFM0YsIDB4NkUzRiwgMHgyMUNBLCAweDZFNDAsIDB4NkU0MCwgMHgyMUQxLAorICAgIDB4NkU0MSwgMHg2RTQxLCAweDIxQ0IsIDB4NkU0MywgMHg2RTQzLCAweDBDQkMsIDB4NkU0NCwgMHg2RTQ0LCAweDBDQzQsCisgICAgMHg2RTQ1LCAweDZFNDUsIDB4MjFDNywgMHg2RTQ2LCAweDZFNDcsIDB4MjFDMCwgMHg2RTQ5LCAweDZFNDksIDB4MjFDMywKKyAgICAweDZFNEEsIDB4NkU0QSwgMHgwQ0FCLCAweDZFNEIsIDB4NkU0QiwgMHgyMUQwLCAweDZFNEQsIDB4NkU0RCwgMHgwQ0I5LAorICAgIDB4NkU0RSwgMHg2RTRFLCAweDBDQzIsIDB4NkU0RiwgMHg2RTRGLCAweDQyMzQsIDB4NkU1MCwgMHg2RTUwLCAweDQxRDEsCisgICAgMHg2RTUxLCAweDZFNTEsIDB4MjFEMiwgMHg2RTUyLCAweDZFNTIsIDB4MjFFQSwgMHg2RTUzLCAweDZFNTMsIDB4MjFFMiwKKyAgICAweDZFNTQsIDB4NkU1NCwgMHgwQ0E3LCAweDZFNTUsIDB4NkU1NSwgMHgyMUU4LCAweDZFNTYsIDB4NkU1NiwgMHgwQ0IzLAorICAgIDB4NkU1OCwgMHg2RTU4LCAweDBDQjEsIDB4NkU1OSwgMHg2RTU5LCAweDQwRTYsIDB4NkU1QSwgMHg2RTVBLCAweDIxRUUsCisgICAgMHg2RTVCLCAweDZFNUIsIDB4MENCMCwgMHg2RTVDLCAweDZFNUMsIDB4MjFEOCwgMHg2RTVELCAweDZFNUQsIDB4MjFDQywKKyAgICAweDZFNUUsIDB4NkU1RSwgMHgyMUQ2LCAweDZFNUYsIDB4NkU1RiwgMHgwQ0M3LCAweDZFNjAsIDB4NkU2MCwgMHgyMURDLAorICAgIDB4NkU2MSwgMHg2RTYxLCAweDIxRDksIDB4NkU2MiwgMHg2RTYyLCAweDIxQzgsIDB4NkU2MywgMHg2RTYzLCAweDBDQzMsCisgICAgMHg2RTY0LCAweDZFNjQsIDB4MjFFNiwgMHg2RTY1LCAweDZFNjUsIDB4MjFFMywgMHg2RTY2LCAweDZFNjYsIDB4MjFFQiwKKyAgICAweDZFNjcsIDB4NkU2NywgMHgwQ0FBLCAweDZFNjgsIDB4NkU2OCwgMHgyMUQ3LCAweDZFNjksIDB4NkU2OSwgMHgwQ0M2LAorICAgIDB4NkU2QiwgMHg2RTZCLCAweDIxREUsIDB4NkU2RSwgMHg2RTZFLCAweDBDQjQsIDB4NkU2RiwgMHg2RTZGLCAweDBDQjcsCisgICAgMHg2RTcxLCAweDZFNzEsIDB4MjFERCwgMHg2RTcyLCAweDZFNzIsIDB4MENDNSwgMHg2RTczLCAweDZFNzMsIDB4MjFDRCwKKyAgICAweDZFNzQsIDB4NkU3NCwgMHgxRjQ5LCAweDZFNzYsIDB4NkU3NiwgMHgzOUQzLCAweDZFNzcsIDB4NkU3NywgMHgyMUU3LAorICAgIDB4NkU3OCwgMHg2RTc4LCAweDIxRTUsIDB4NkU3OSwgMHg2RTc5LCAweDIxRTksIDB4NkU3QywgMHg2RTdDLCAweDQyMjMsCisgICAgMHg2RTg2LCAweDZFODYsIDB4NDY3QiwgMHg2RTg4LCAweDZFODgsIDB4MjFDNCwgMHg2RTg5LCAweDZFODksIDB4MENDMCwKKyAgICAweDZFOEIsIDB4NkU4QiwgMHgzQkJGLCAweDZFOEQsIDB4NkU4RCwgMHgyNDZDLCAweDZFOEUsIDB4NkU4RSwgMHgyNDZCLAorICAgIDB4NkU4RiwgMHg2RThGLCAweDI0NTEsIDB4NkU5MCwgMHg2RTkwLCAweDBFNTUsIDB4NkU5MiwgMHg2RTkyLCAweDI0NkEsCisgICAgMHg2RTkzLCAweDZFOTQsIDB4MjQ1NCwgMHg2RTk2LCAweDZFOTYsIDB4MEU1RiwgMHg2RTk3LCAweDZFOTcsIDB4MjQ3MywKKyAgICAweDZFOTgsIDB4NkU5OCwgMHgwRTVBLCAweDZFOTksIDB4NkU5OSwgMHgyNDY5LCAweDZFOUEsIDB4NkU5QSwgMHg0NTgxLAorICAgIDB4NkU5QiwgMHg2RTlCLCAweDI0NEUsIDB4NkU5QywgMHg2RTlDLCAweDBFNjAsIDB4NkU5RCwgMHg2RTlELCAweDBFNTYsCisgICAgMHg2RTlFLCAweDZFOUUsIDB4MjQ1RCwgMHg2RTlGLCAweDZFOUYsIDB4MjQ1MywgMHg2RUEwLCAweDZFQTAsIDB4MjQ1NiwKKyAgICAweDZFQTEsIDB4NkVBMSwgMHgyNDZFLCAweDZFQTIsIDB4NkVBMiwgMHgwRTUwLCAweDZFQTMsIDB4NkVBMywgMHgyNDc1LAorICAgIDB4NkVBNCwgMHg2RUE0LCAweDI0NkQsIDB4NkVBNSwgMHg2RUE1LCAweDBFNTksIDB4NkVBNiwgMHg2RUE2LCAweDI0NjIsCisgICAgMHg2RUE3LCAweDZFQTcsIDB4MEU2NCwgMHg2RUFBLCAweDZFQUEsIDB4MEU2MywgMHg2RUFCLCAweDZFQUIsIDB4MEU1RCwKKyAgICAweDZFQUUsIDB4NkVBRSwgMHgyNDc0LCAweDZFQUYsIDB4NkVBRiwgMHgwRTUxLCAweDZFQjAsIDB4NkVCMCwgMHgyNDYwLAorICAgIDB4NkVCMSwgMHg2RUIxLCAweDI0NTcsIDB4NkVCMiwgMHg2RUIyLCAweDI0NjQsIDB4NkVCMywgMHg2RUIzLCAweDI0NzAsCisgICAgMHg2RUI0LCAweDZFQjQsIDB4MEU2NSwgMHg2RUI1LCAweDZFQjUsIDB4NDFGRSwgMHg2RUI2LCAweDZFQjYsIDB4MEU1MywKKyAgICAweDZFQjcsIDB4NkVCNywgMHgyNDVGLCAweDZFQjgsIDB4NkVCOCwgMHgzRTBDLCAweDZFQjksIDB4NkVCOSwgMHgyNDU4LAorICAgIDB4NkVCQSwgMHg2RUJBLCAweDBFNUMsIDB4NkVCQiwgMHg2RUJCLCAweDQ2N0QsIDB4NkVCQywgMHg2RUJDLCAweDBFNUIsCisgICAgMHg2RUJELCAweDZFQkQsIDB4MjQ1QiwgMHg2RUJFLCAweDZFQkUsIDB4MjQ2NSwgMHg2RUJGLCAweDZFQkYsIDB4MjQ2RiwKKyAgICAweDZFQzAsIDB4NkVDMCwgMHgyNDUyLCAweDZFQzEsIDB4NkVDMSwgMHgyNDVDLCAweDZFQzIsIDB4NkVDMiwgMHgwRTU0LAorICAgIDB4NkVDMywgMHg2RUMzLCAweDI0NjYsIDB4NkVDNCwgMHg2RUM0LCAweDBFNjEsIDB4NkVDNSwgMHg2RUM1LCAweDBFNTgsCisgICAgMHg2RUM2LCAweDZFQzYsIDB4MjQ1OSwgMHg2RUM3LCAweDZFQzcsIDB4MEU1NywgMHg2RUM4LCAweDZFQzgsIDB4MjQ1MCwKKyAgICAweDZFQzksIDB4NkVDOSwgMHgyNDVFLCAweDZFQ0EsIDB4NkVDQSwgMHgyNDcyLCAweDZFQ0IsIDB4NkVDQiwgMHgwQ0JGLAorICAgIDB4NkVDQywgMHg2RUNDLCAweDEwMUYsIDB4NkVDRCwgMHg2RUNELCAweDI0NjEsIDB4NkVDRSwgMHg2RUNFLCAweDI2RUIsCisgICAgMHg2RUNGLCAweDZFQ0YsIDB4MjQ2MywgMHg2RUQwLCAweDZFRDAsIDB4MjQ3MSwgMHg2RUQxLCAweDZFRDEsIDB4MEU1RSwKKyAgICAweDZFRDIsIDB4NkVEMiwgMHgyNDVBLCAweDZFRDMsIDB4NkVEMywgMHgwRTUyLCAweDZFRDQsIDB4NkVENCwgMHgwRTYyLAorICAgIDB4NkVENSwgMHg2RUQ1LCAweDExOUEsIDB4NkVENiwgMHg2RUQ2LCAweDI0NEYsIDB4NkVEOCwgMHg2RUQ4LCAweDI0NjgsCisgICAgMHg2RUQ5LCAweDZFRDksIDB4NDA2OSwgMHg2RURBLCAweDZFREEsIDB4NDY3RiwgMHg2RURCLCAweDZFREIsIDB4NDAyRiwKKyAgICAweDZFREMsIDB4NkVEQywgMHgyNDY3LCAweDZFREQsIDB4NkVERCwgMHg0NTM4LCAweDZFRTIsIDB4NkVFMiwgMHg0NjdFLAorICAgIDB4NkVFOCwgMHg2RUU5LCAweDQ2ODEsIDB4NkVFQiwgMHg2RUVCLCAweDI3MDcsIDB4NkVFQywgMHg2RUVDLCAweDEwMUMsCisgICAgMHg2RUVELCAweDZFRUQsIDB4MjZGQywgMHg2RUVFLCAweDZFRUUsIDB4MjcwMSwgMHg2RUVGLCAweDZFRUYsIDB4MTAxMSwKKyAgICAweDZFRjEsIDB4NkVGMSwgMHgyNkVELCAweDZFRjIsIDB4NkVGMiwgMHgxMDFFLCAweDZFRjQsIDB4NkVGNCwgMHgxMDA4LAorICAgIDB4NkVGNSwgMHg2RUY1LCAweDI2RUMsIDB4NkVGNiwgMHg2RUY2LCAweDI3MEQsIDB4NkVGNywgMHg2RUY3LCAweDEwMjAsCisgICAgMHg2RUY4LCAweDZFRjgsIDB4MjZGMCwgMHg2RUY5LCAweDZFRjksIDB4MjcwMCwgMHg2RUZBLCAweDZFRkEsIDB4NDIzQiwKKyAgICAweDZFRkIsIDB4NkVGQiwgMHgyNkYyLCAweDZFRkMsIDB4NkVGQywgMHgyNzEwLCAweDZFRkQsIDB4NkVGRCwgMHgyNzBDLAorICAgIDB4NkVGRSwgMHg2RUZFLCAweDEwMDYsIDB4NkVGRiwgMHg2RUZGLCAweDEwMTAsIDB4NkYwMCwgMHg2RjAwLCAweDI5NDYsCisgICAgMHg2RjAxLCAweDZGMDEsIDB4MTAxRCwgMHg2RjAyLCAweDZGMDIsIDB4MTAwRSwgMHg2RjAzLCAweDZGMDMsIDB4MjZFRSwKKyAgICAweDZGMDQsIDB4NkYwNCwgMHg0MjI0LCAweDZGMDUsIDB4NkYwNSwgMHgyNzBCLCAweDZGMDYsIDB4NkYwNiwgMHgxMDEyLAorICAgIDB4NkYwNywgMHg2RjA3LCAweDI3MDgsIDB4NkYwOCwgMHg2RjA4LCAweDI3MTUsIDB4NkYwOSwgMHg2RjA5LCAweDI2RjQsCisgICAgMHg2RjBBLCAweDZGMEEsIDB4MjZGRCwgMHg2RjBCLCAweDZGMEIsIDB4M0FCQSwgMHg2RjBDLCAweDZGMEMsIDB4M0NGQiwKKyAgICAweDZGMEQsIDB4NkYwRCwgMHgyNzEzLCAweDZGMEUsIDB4NkYwRSwgMHgyNzA5LCAweDZGMEYsIDB4NkYwRiwgMHgxMDBELAorICAgIDB4NkYxMiwgMHg2RjEyLCAweDI2RkIsIDB4NkYxMywgMHg2RjEzLCAweDEwMDcsIDB4NkYxNCwgMHg2RjE0LCAweDEwMDUsCisgICAgMHg2RjE1LCAweDZGMTUsIDB4MTAxNywgMHg2RjE2LCAweDZGMTYsIDB4NDFBMCwgMHg2RjE3LCAweDZGMTcsIDB4NDZDRSwKKyAgICAweDZGMTgsIDB4NkYxOCwgMHgyNkY5LCAweDZGMTksIDB4NkYxQSwgMHgyNkY2LCAweDZGMUMsIDB4NkYxQywgMHgyNzBGLAorICAgIDB4NkYxRSwgMHg2RjFFLCAweDI3MTQsIDB4NkYxRiwgMHg2RjFGLCAweDI3MTIsIDB4NkYyMCwgMHg2RjIwLCAweDEwMEIsCisgICAgMHg2RjIxLCAweDZGMjEsIDB4MjcxNiwgMHg2RjIyLCAweDZGMjIsIDB4MTAwRiwgMHg2RjIzLCAweDZGMjMsIDB4MTAxNiwKKyAgICAweDZGMjQsIDB4NkYyNCwgMHg0NjgzLCAweDZGMjUsIDB4NkYyNSwgMHgyNkVGLCAweDZGMjYsIDB4NkYyNiwgMHgyOTJFLAorICAgIDB4NkYyNywgMHg2RjI3LCAweDI2RjgsIDB4NkYyOSwgMHg2RjI5LCAweDEwMDksIDB4NkYyQSwgMHg2RjJBLCAweDEwMUIsCisgICAgMHg2RjJCLCAweDZGMkIsIDB4MTAxOCwgMHg2RjJDLCAweDZGMkMsIDB4MTAwQywgMHg2RjJELCAweDZGMkQsIDB4MjcwMiwKKyAgICAweDZGMkUsIDB4NkYyRSwgMHgyNkYzLCAweDZGMkYsIDB4NkYyRiwgMHgxMDE5LCAweDZGMzAsIDB4NkYzMCwgMHgyNzA0LAorICAgIDB4NkYzMSwgMHg2RjMxLCAweDEwMTMsIDB4NkYzMiwgMHg2RjMyLCAweDEwMTUsIDB4NkYzMywgMHg2RjMzLCAweDEwMDQsCisgICAgMHg2RjM0LCAweDZGMzQsIDB4NDY4NCwgMHg2RjM1LCAweDZGMzUsIDB4MjcwNiwgMHg2RjM2LCAweDZGMzYsIDB4MjZGRSwKKyAgICAweDZGMzcsIDB4NkYzNywgMHgyNkYxLCAweDZGMzgsIDB4NkYzOCwgMHgxMDE0LCAweDZGMzksIDB4NkYzOSwgMHgyNzBFLAorICAgIDB4NkYzQSwgMHg2RjNBLCAweDI3MTEsIDB4NkYzQiwgMHg2RjNCLCAweDI2RkEsIDB4NkYzQywgMHg2RjNDLCAweDI3MDUsCisgICAgMHg2RjNELCAweDZGM0QsIDB4NDI4MiwgMHg2RjNFLCAweDZGM0UsIDB4MTAwQSwgMHg2RjNGLCAweDZGM0YsIDB4MTE4OSwKKyAgICAweDZGNDAsIDB4NkY0MCwgMHgyNzAzLCAweDZGNDEsIDB4NkY0MSwgMHgyOTJELCAweDZGNDMsIDB4NkY0MywgMHgyNzBBLAorICAgIDB4NkY0NCwgMHg2RjQ0LCAweDQyNDAsIDB4NkY0RSwgMHg2RjRFLCAweDI2RjUsIDB4NkY0RiwgMHg2RjRGLCAweDI5MzcsCisgICAgMHg2RjUwLCAweDZGNTAsIDB4Mjk0MSwgMHg2RjUxLCAweDZGNTEsIDB4MTE4QywgMHg2RjUyLCAweDZGNTIsIDB4Mjk0MCwKKyAgICAweDZGNTMsIDB4NkY1MywgMHgyOTRDLCAweDZGNTQsIDB4NkY1NCwgMHgxMThFLCAweDZGNTUsIDB4NkY1NSwgMHgyOTNFLAorICAgIDB4NkY1NiwgMHg2RjU2LCAweDNFNTIsIDB4NkY1NywgMHg2RjU3LCAweDI5NDIsIDB4NkY1OCwgMHg2RjU4LCAweDExOTksCisgICAgMHg2RjVBLCAweDZGNUEsIDB4MjkzOSwgMHg2RjVCLCAweDZGNUIsIDB4MTE5MSwgMHg2RjVDLCAweDZGNUMsIDB4NDI0MSwKKyAgICAweDZGNUQsIDB4NkY1RCwgMHgyOTQ1LCAweDZGNUUsIDB4NkY1RSwgMHgyQjlBLCAweDZGNUYsIDB4NkY1RiwgMHgxMTlELAorICAgIDB4NkY2MCwgMHg2RjYwLCAweDExOUMsIDB4NkY2MSwgMHg2RjYxLCAweDI5NDcsIDB4NkY2MiwgMHg2RjYyLCAweDI5MzYsCisgICAgMHg2RjYzLCAweDZGNjMsIDB4Mjk1MSwgMHg2RjY0LCAweDZGNjQsIDB4MTE5NywgMHg2RjY2LCAweDZGNjYsIDB4MTE4RCwKKyAgICAweDZGNjcsIDB4NkY2NywgMHgyOTRBLCAweDZGNjksIDB4NkY2OSwgMHgyOTRFLCAweDZGNkEsIDB4NkY2QSwgMHgyOTUzLAorICAgIDB4NkY2QiwgMHg2RjZCLCAweDI5NDgsIDB4NkY2QywgMHg2RjZDLCAweDI5M0MsIDB4NkY2RCwgMHg2RjZELCAweDExOTAsCisgICAgMHg2RjZFLCAweDZGNkUsIDB4MTE5MywgMHg2RjZGLCAweDZGNkYsIDB4MTE5QiwgMHg2RjcwLCAweDZGNzAsIDB4MTE5NiwKKyAgICAweDZGNzIsIDB4NkY3MiwgMHgyOTNGLCAweDZGNzMsIDB4NkY3MywgMHgyNkZGLCAweDZGNzQsIDB4NkY3NCwgMHg0MjQzLAorICAgIDB4NkY3NiwgMHg2Rjc2LCAweDI5M0IsIDB4NkY3NywgMHg2Rjc3LCAweDI5NTIsIDB4NkY3OCwgMHg2Rjc4LCAweDExOTIsCisgICAgMHg2Rjc5LCAweDZGNzksIDB4M0JCRSwgMHg2RjdBLCAweDZGN0EsIDB4MTE5NSwgMHg2RjdCLCAweDZGN0IsIDB4Mjk1NCwKKyAgICAweDZGN0MsIDB4NkY3QywgMHgxMThBLCAweDZGN0QsIDB4NkY3RCwgMHgyOTQ5LCAweDZGN0UsIDB4NkY3RSwgMHgyOTJGLAorICAgIDB4NkY3RiwgMHg2RjdGLCAweDI5NEYsIDB4NkY4MCwgMHg2RjgwLCAweDEzRkMsIDB4NkY4MSwgMHg2RjgxLCAweDQ2ODcsCisgICAgMHg2RjgyLCAweDZGODIsIDB4MjkzRCwgMHg2Rjg0LCAweDZGODQsIDB4MTE4QiwgMHg2Rjg1LCAweDZGODUsIDB4MjkzOCwKKyAgICAweDZGODYsIDB4NkY4NiwgMHgxMThGLCAweDZGODcsIDB4NkY4NywgMHgyOTMwLCAweDZGODgsIDB4NkY4OCwgMHgxMDFBLAorICAgIDB4NkY4OSwgMHg2Rjg5LCAweDI5MzQsIDB4NkY4QSwgMHg2RjhBLCAweDQxOTUsIDB4NkY4QiwgMHg2RjhCLCAweDI5NEQsCisgICAgMHg2RjhDLCAweDZGOEMsIDB4MjkzNSwgMHg2RjhELCAweDZGOEQsIDB4MjkzMywgMHg2RjhFLCAweDZGOEUsIDB4MTE5NCwKKyAgICAweDZGOTAsIDB4NkY5MCwgMHgyOTRCLCAweDZGOTIsIDB4NkY5MiwgMHgyOTMyLCAweDZGOTMsIDB4NkY5MywgMHgyOTQ0LAorICAgIDB4NkY5NCwgMHg2Rjk0LCAweDI5NDMsIDB4NkY5NSwgMHg2Rjk1LCAweDI5NTAsIDB4NkY5NiwgMHg2Rjk2LCAweDI5M0EsCisgICAgMHg2Rjk3LCAweDZGOTcsIDB4MTE5OCwgMHg2RjlELCAweDZGOUQsIDB4NDIzOSwgMHg2RjlFLCAweDZGOUUsIDB4MkI5RCwKKyAgICAweDZGOUYsIDB4NkY5RiwgMHg0MjQ2LCAweDZGQTAsIDB4NkZBMCwgMHgxMkVCLCAweDZGQTEsIDB4NkZBMSwgMHgxMkUxLAorICAgIDB4NkZBMiwgMHg2RkEyLCAweDJCQTksIDB4NkZBMywgMHg2RkEzLCAweDJCOTUsIDB4NkZBNCwgMHg2RkE0LCAweDEyRTMsCisgICAgMHg2RkE1LCAweDZGQTUsIDB4MkJBMSwgMHg2RkE2LCAweDZGQTYsIDB4MTJFQSwgMHg2RkE3LCAweDZGQTcsIDB4MTJFNSwKKyAgICAweDZGQTgsIDB4NkZBOCwgMHgyQjlGLCAweDZGQTksIDB4NkZBOSwgMHgyRDhFLCAweDZGQUEsIDB4NkZBQSwgMHgyQkE1LAorICAgIDB4NkZBQiwgMHg2RkFCLCAweDJCQUIsIDB4NkZBQywgMHg2RkFDLCAweDJCQTQsIDB4NkZBRCwgMHg2RkFELCAweDJCOTMsCisgICAgMHg2RkFFLCAweDZGQUUsIDB4MkJBMiwgMHg2RkFGLCAweDZGQUYsIDB4MkJBRCwgMHg2RkIwLCAweDZGQjAsIDB4MkJBRiwKKyAgICAweDZGQjEsIDB4NkZCMSwgMHgxMkUwLCAweDZGQjIsIDB4NkZCMiwgMHgyQkFFLCAweDZGQjMsIDB4NkZCMywgMHgxMkU2LAorICAgIDB4NkZCNCwgMHg2RkI0LCAweDEyRUMsIDB4NkZCNSwgMHg2RkI1LCAweDNFMjcsIDB4NkZCNiwgMHg2RkI2LCAweDEyRTksCisgICAgMHg2RkI4LCAweDZGQjgsIDB4MkJBOCwgMHg2RkI5LCAweDZGQjksIDB4MTJFOCwgMHg2RkJBLCAweDZGQkEsIDB4MkJBMywKKyAgICAweDZGQkIsIDB4NkZCQiwgMHgzQkJCLCAweDZGQkMsIDB4NkZCQywgMHgyQjk3LCAweDZGQkQsIDB4NkZCRCwgMHgyQjlDLAorICAgIDB4NkZCRSwgMHg2RkJFLCAweDQ2ODgsIDB4NkZCRiwgMHg2RkJGLCAweDJCQTcsIDB4NkZDMCwgMHg2RkMwLCAweDEyRTcsCisgICAgMHg2RkMxLCAweDZGQzEsIDB4MTJFNCwgMHg2RkMyLCAweDZGQzIsIDB4MTJERiwgMHg2RkMzLCAweDZGQzMsIDB4MTJFMiwKKyAgICAweDZGQzQsIDB4NkZDNCwgMHgyQjlCLCAweDZGQzYsIDB4NkZDNiwgMHgyOTMxLCAweDZGQzcsIDB4NkZDNywgMHgyQjk2LAorICAgIDB4NkZDOCwgMHg2RkM4LCAweDJCOTksIDB4NkZDOSwgMHg2RkM5LCAweDJCQUEsIDB4NkZDQSwgMHg2RkNBLCAweDJCOUUsCisgICAgMHg2RkNCLCAweDZGQ0IsIDB4MkI5NCwgMHg2RkNDLCAweDZGQ0MsIDB4MkQ4RCwgMHg2RkNELCAweDZGQ0QsIDB4MkJBQywKKyAgICAweDZGQ0UsIDB4NkZDRSwgMHgyQjk4LCAweDZGQ0YsIDB4NkZDRiwgMHgyQkE2LCAweDZGRDMsIDB4NkZEMywgMHg0MjQ4LAorICAgIDB4NkZENCwgMHg2RkQ0LCAweDJEOTAsIDB4NkZENSwgMHg2RkQ1LCAweDE0MDAsIDB4NkZEOCwgMHg2RkQ4LCAweDEzRjQsCisgICAgMHg2RkQ5LCAweDZGRDksIDB4M0M3NCwgMHg2RkRBLCAweDZGREEsIDB4M0M3MywgMHg2RkRCLCAweDZGREIsIDB4MTNGOCwKKyAgICAweDZGREMsIDB4NkZEQywgMHgyRDkyLCAweDZGREQsIDB4NkZERCwgMHgyRDk4LCAweDZGREUsIDB4NkZERSwgMHgyRDk2LAorICAgIDB4NkZERiwgMHg2RkUwLCAweDEzRjYsIDB4NkZFMSwgMHg2RkUxLCAweDEzRkUsIDB4NkZFMiwgMHg2RkUyLCAweDJEOTksCisgICAgMHg2RkUzLCAweDZGRTMsIDB4MkQ5MSwgMHg2RkU0LCAweDZGRTQsIDB4MTNGOSwgMHg2RkU2LCAweDZGRTYsIDB4MkQ5NSwKKyAgICAweDZGRTcsIDB4NkZFNywgMHgyRDk0LCAweDZGRTgsIDB4NkZFOCwgMHgyRDlBLCAweDZGRTksIDB4NkZFOSwgMHgxM0ZGLAorICAgIDB4NkZFQiwgMHg2RkVCLCAweDEzRkEsIDB4NkZFQywgMHg2RkVDLCAweDEzRkQsIDB4NkZFRCwgMHg2RkVELCAweDJEOTMsCisgICAgMHg2RkVFLCAweDZGRUUsIDB4MTQwMSwgMHg2RkVGLCAweDZGRUYsIDB4MTNGQiwgMHg2RkYwLCAweDZGRjAsIDB4MTQwMiwKKyAgICAweDZGRjEsIDB4NkZGMSwgMHgxM0Y1LCAweDZGRjIsIDB4NkZGMiwgMHgyRDk3LCAweDZGRjQsIDB4NkZGNCwgMHgyRDhGLAorICAgIDB4NkZGNiwgMHg2RkY2LCAweDM4QTUsIDB4NkZGNywgMHg2RkY3LCAweDJGNEUsIDB4NkZGOCwgMHg2RkY4LCAweDQyMzcsCisgICAgMHg2RkZBLCAweDZGRkEsIDB4MTRFQiwgMHg2RkZCLCAweDZGRkIsIDB4MkY0QiwgMHg2RkZDLCAweDZGRkMsIDB4MkY0RCwKKyAgICAweDZGRkUsIDB4NkZGRSwgMHgxNEU5LCAweDZGRkYsIDB4NkZGRiwgMHgyRjQ5LCAweDcwMDAsIDB4NzAwMCwgMHgyRjRBLAorICAgIDB4NzAwMSwgMHg3MDAxLCAweDJGNDUsIDB4NzAwMywgMHg3MDAzLCAweDQ2RTIsIDB4NzAwNCwgMHg3MDA0LCAweDJCQTAsCisgICAgMHg3MDA1LCAweDcwMDUsIDB4MkY0NiwgMHg3MDA2LCAweDcwMDYsIDB4MTRFQSwgMHg3MDA3LCAweDcwMDcsIDB4MkY0MiwKKyAgICAweDcwMDksIDB4NzAwOSwgMHgxNEU3LCAweDcwMEEsIDB4NzAwQSwgMHgyRjRGLCAweDcwMEIsIDB4NzAwQiwgMHgxNEU4LAorICAgIDB4NzAwQywgMHg3MDBELCAweDJGNDMsIDB4NzAwRSwgMHg3MDBFLCAweDJGNDgsIDB4NzAwRiwgMHg3MDBGLCAweDE0RUQsCisgICAgMHg3MDExLCAweDcwMTEsIDB4MTRFQywgMHg3MDE0LCAweDcwMTQsIDB4MkY0NywgMHg3MDE1LCAweDcwMTUsIDB4MTU4RiwKKyAgICAweDcwMTYsIDB4NzAxNiwgMHgzMEFELCAweDcwMTcsIDB4NzAxNywgMHgzMEIzLCAweDcwMTgsIDB4NzAxOCwgMHgxNTkwLAorICAgIDB4NzAxOSwgMHg3MDE5LCAweDMwQUEsIDB4NzAxQSwgMHg3MDFBLCAweDE1OEQsIDB4NzAxQiwgMHg3MDFCLCAweDE1OEEsCisgICAgMHg3MDFDLCAweDcwMUMsIDB4MzBCNSwgMHg3MDFELCAweDcwMUQsIDB4MTU4RSwgMHg3MDFFLCAweDcwMUUsIDB4M0M3NiwKKyAgICAweDcwMUYsIDB4NzAxRiwgMHgxNThCLCAweDcwMjAsIDB4NzAyMCwgMHgzMEFDLCAweDcwMjEsIDB4NzAyMywgMHgzMEFGLAorICAgIDB4NzAyNCwgMHg3MDI0LCAweDMwQjQsIDB4NzAyNiwgMHg3MDI2LCAweDJGNEMsIDB4NzAyNywgMHg3MDI3LCAweDMwQUIsCisgICAgMHg3MDI4LCAweDcwMjgsIDB4MTU4QywgMHg3MDI5LCAweDcwMjksIDB4MzBCMiwgMHg3MDJBLCAweDcwMkEsIDB4MzFFRiwKKyAgICAweDcwMkIsIDB4NzAyQiwgMHgzMEFFLCAweDcwMkMsIDB4NzAyQywgMHg0NjhFLCAweDcwMkYsIDB4NzAyRiwgMHgzMUU2LAorICAgIDB4NzAzMCwgMHg3MDMwLCAweDE2MUQsIDB4NzAzMSwgMHg3MDMxLCAweDMxRTksIDB4NzAzMiwgMHg3MDMyLCAweDE2MUUsCisgICAgMHg3MDMzLCAweDcwMzMsIDB4MzFGMiwgMHg3MDM0LCAweDcwMzQsIDB4MzFFOCwgMHg3MDM1LCAweDcwMzUsIDB4MzFFNSwKKyAgICAweDcwMzcsIDB4NzAzNywgMHgzMUU3LCAweDcwMzgsIDB4NzAzOCwgMHgzMUVCLCAweDcwMzksIDB4NzAzOSwgMHgzMUVFLAorICAgIDB4NzAzQSwgMHg3MDNBLCAweDMxRUQsIDB4NzAzQiwgMHg3MDNCLCAweDMxRjEsIDB4NzAzQywgMHg3MDNDLCAweDMxRTQsCisgICAgMHg3MDNFLCAweDcwM0UsIDB4MTYxQywgMHg3MDNGLCAweDcwM0YsIDB4MzFFQywgMHg3MDQwLCAweDcwNDAsIDB4MzFGMCwKKyAgICAweDcwNDEsIDB4NzA0MSwgMHgzMUYzLCAweDcwNDIsIDB4NzA0MiwgMHgzMUVBLCAweDcwNDMsIDB4NzA0NCwgMHgzMkQ4LAorICAgIDB4NzA0NSwgMHg3MDQ2LCAweDMyREQsIDB4NzA0OCwgMHg3MDQ5LCAweDMyREIsIDB4NzA0QSwgMHg3MDRBLCAweDMyREEsCisgICAgMHg3MDRCLCAweDcwNEIsIDB4NDI1NCwgMHg3MDRDLCAweDcwNEMsIDB4MTY3QSwgMHg3MDUwLCAweDcwNTAsIDB4NDY5MCwKKyAgICAweDcwNTEsIDB4NzA1MSwgMHgxNkM4LCAweDcwNTIsIDB4NzA1MiwgMHgzMzhDLCAweDcwNTQsIDB4NzA1NCwgMHg0NjkxLAorICAgIDB4NzA1NSwgMHg3MDU3LCAweDMzODksIDB4NzA1OCwgMHg3MDU4LCAweDE2QzksIDB4NzA1QSwgMHg3MDVBLCAweDM0MjMsCisgICAgMHg3MDVCLCAweDcwNUIsIDB4MzQyMiwgMHg3MDVDLCAweDcwNUMsIDB4Mzg1MiwgMHg3MDVELCAweDcwNUQsIDB4MzQ4QSwKKyAgICAweDcwNUUsIDB4NzA1RSwgMHgxNzIyLCAweDcwNUYsIDB4NzA1RiwgMHgzNDg4LCAweDcwNjAsIDB4NzA2MCwgMHgzNDhCLAorICAgIDB4NzA2MSwgMHg3MDYxLCAweDM0ODksIDB4NzA2MiwgMHg3MDYyLCAweDM0RDAsIDB4NzA2MywgMHg3MDYzLCAweDE3NDQsCisgICAgMHg3MDY0LCAweDcwNjQsIDB4MTc1MiwgMHg3MDY1LCAweDcwNjUsIDB4MzUxQywgMHg3MDY2LCAweDcwNjYsIDB4MzUwNiwKKyAgICAweDcwNjcsIDB4NzA2NywgMHgzQ0Y1LCAweDcwNjgsIDB4NzA2OCwgMHgzNTFCLCAweDcwNjksIDB4NzA2QSwgMHgzNTQ3LAorICAgIDB4NzA2QiwgMHg3MDZCLCAweDAyRTYsIDB4NzA2QywgMHg3MDZDLCAweDQ0RjEsIDB4NzA2RiwgMHg3MDZGLCAweDQ2OTIsCisgICAgMHg3MDcwLCAweDcwNzAsIDB4MDNGMiwgMHg3MDcxLCAweDcwNzEsIDB4MTgwQSwgMHg3MDc0LCAweDcwNzQsIDB4MThDMywKKyAgICAweDcwNzUsIDB4NzA3NSwgMHgzOEM3LCAweDcwNzYsIDB4NzA3NiwgMHgwNEU2LCAweDcwNzgsIDB4NzA3OCwgMHgwNEU5LAorICAgIDB4NzA3OSwgMHg3MDc5LCAweDQwOTksIDB4NzA3QSwgMHg3MDdBLCAweDE4QzQsIDB4NzA3QywgMHg3MDdELCAweDA0RTcsCisgICAgMHg3MDdFLCAweDcwN0UsIDB4NDI1NSwgMHg3MDdGLCAweDcwN0YsIDB4NDY5MywgMHg3MDgxLCAweDcwODEsIDB4NDk1OSwKKyAgICAweDcwODIsIDB4NzA4MiwgMHgxOUY3LCAweDcwODMsIDB4NzA4MywgMHgxOUY5LCAweDcwODQsIDB4NzA4NCwgMHgxOUY0LAorICAgIDB4NzA4NSwgMHg3MDg1LCAweDE5RjEsIDB4NzA4NiwgMHg3MDg2LCAweDE5RjMsIDB4NzA4OSwgMHg3MDg5LCAweDQzRjksCisgICAgMHg3MDhBLCAweDcwOEEsIDB4MDY0MywgMHg3MDhCLCAweDcwOEIsIDB4NDBDQiwgMHg3MDhFLCAweDcwOEUsIDB4MDY0MSwKKyAgICAweDcwOEYsIDB4NzA4RiwgMHg0NkIzLCAweDcwOTEsIDB4NzA5MSwgMHgxOUY1LCAweDcwOTIsIDB4NzA5MiwgMHgwNjQyLAorICAgIDB4NzA5MywgMHg3MDkzLCAweDE5RjIsIDB4NzA5NCwgMHg3MDk0LCAweDE5RUYsIDB4NzA5NSwgMHg3MDk1LCAweDA2NDAsCisgICAgMHg3MDk2LCAweDcwOTYsIDB4MTlGNiwgMHg3MDk4LCAweDcwOTgsIDB4MTlGMCwgMHg3MDk5LCAweDcwOTksIDB4MDY0NCwKKyAgICAweDcwOUEsIDB4NzA5QSwgMHgxOUY4LCAweDcwOUYsIDB4NzA5RiwgMHgxQjY2LCAweDcwQTAsIDB4NzBBMCwgMHg0NzQyLAorICAgIDB4NzBBMSwgMHg3MEExLCAweDFCNkEsIDB4NzBBMywgMHg3MEEzLCAweDM5NzIsIDB4NzBBNCwgMHg3MEE0LCAweDA3OTAsCisgICAgMHg3MEE1LCAweDcwQTUsIDB4M0NCNywgMHg3MEE2LCAweDcwQTYsIDB4M0Q1MywgMHg3MEE3LCAweDcwQTcsIDB4NDI1NiwKKyAgICAweDcwQTksIDB4NzBBOSwgMHgxQjZELCAweDcwQUIsIDB4NzBBQiwgMHgwNzg4LCAweDcwQUMsIDB4NzBBQywgMHgwNzhCLAorICAgIDB4NzBBRCwgMHg3MEFELCAweDA3OEQsIDB4NzBBRSwgMHg3MEFFLCAweDA3OEYsIDB4NzBBRiwgMHg3MEFGLCAweDA3OEMsCisgICAgMHg3MEIwLCAweDcwQjAsIDB4MUI2OSwgMHg3MEIxLCAweDcwQjEsIDB4MUI2OCwgMHg3MEIzLCAweDcwQjMsIDB4MDc4QSwKKyAgICAweDcwQjQsIDB4NzBCNSwgMHgxQjZCLCAweDcwQjcsIDB4NzBCNywgMHgxQjY1LCAweDcwQjgsIDB4NzBCOCwgMHgwNzhFLAorICAgIDB4NzBCOSwgMHg3MEI5LCAweDNENjksIDB4NzBCQSwgMHg3MEJBLCAweDA3ODksIDB4NzBCQiwgMHg3MEJCLCAweDQ4MTIsCisgICAgMHg3MEJDLCAweDcwQkMsIDB4NDU1OSwgMHg3MEJELCAweDcwQkQsIDB4NDI3MCwgMHg3MEJFLCAweDcwQkUsIDB4MUI2NywKKyAgICAweDcwQzAsIDB4NzBDMCwgMHg0NzMzLCAweDcwQzQsIDB4NzBDNCwgMHgzQkFBLCAweDcwQzUsIDB4NzBDNywgMHgxRDI3LAorICAgIDB4NzBDOCwgMHg3MEM4LCAweDA5MjEsIDB4NzBDQSwgMHg3MENBLCAweDA5MUQsIDB4NzBDQiwgMHg3MENCLCAweDFEMUUsCisgICAgMHg3MENDLCAweDcwQ0MsIDB4NDI1OCwgMHg3MENELCAweDcwQ0QsIDB4MUQyNiwgMHg3MENFLCAweDcwQ0UsIDB4MUQyQiwKKyAgICAweDcwQ0YsIDB4NzBDRiwgMHgwOTIyLCAweDcwRDAsIDB4NzBEMCwgMHgzOTZELCAweDcwRDEsIDB4NzBEMSwgMHgxRDFDLAorICAgIDB4NzBEMiwgMHg3MEQyLCAweDFEMjIsIDB4NzBEMywgMHg3MEQzLCAweDFEMUIsIDB4NzBENCwgMHg3MEQ0LCAweDFEMjUsCisgICAgMHg3MEQ1LCAweDcwRDYsIDB4NDI1OSwgMHg3MEQ3LCAweDcwRDcsIDB4MUQyMSwgMHg3MEQ4LCAweDcwRDgsIDB4MDkxRSwKKyAgICAweDcwRDksIDB4NzBEOSwgMHgwOTIwLCAweDcwREEsIDB4NzBEQSwgMHgxRDJBLCAweDcwREMsIDB4NzBEQywgMHgxRDFBLAorICAgIDB4NzBERCwgMHg3MERELCAweDFEMUQsIDB4NzBERSwgMHg3MERFLCAweDFEMjMsIDB4NzBERiwgMHg3MERGLCAweDQyNUIsCisgICAgMHg3MEUwLCAweDcwRTAsIDB4MUQyNCwgMHg3MEUxLCAweDcwRTEsIDB4MUQyQywgMHg3MEUyLCAweDcwRTIsIDB4MUQyMCwKKyAgICAweDcwRTQsIDB4NzBFNCwgMHgwOTFGLCAweDcwRUYsIDB4NzBFRiwgMHgwQjE2LCAweDcwRjAsIDB4NzBGMCwgMHgxRjcyLAorICAgIDB4NzBGMSwgMHg3MEYxLCAweDNBQzgsIDB4NzBGMywgMHg3MEYzLCAweDFGNzQsIDB4NzBGNCwgMHg3MEY0LCAweDFGNzAsCisgICAgMHg3MEY1LCAweDcwRjUsIDB4NDc2MCwgMHg3MEY2LCAweDcwRjYsIDB4MUY3QywgMHg3MEY3LCAweDcwRjcsIDB4MUY2RSwKKyAgICAweDcwRjgsIDB4NzBGOCwgMHgxRjdCLCAweDcwRjksIDB4NzBGOSwgMHgwQjEyLCAweDcwRkEsIDB4NzBGQSwgMHgxRjZDLAorICAgIDB4NzBGQiwgMHg3MEZCLCAweDIxRjIsIDB4NzBGQywgMHg3MEZDLCAweDFGNzYsIDB4NzBGRCwgMHg3MEZELCAweDBCMTUsCisgICAgMHg3MEZFLCAweDcwRkUsIDB4M0QwRSwgMHg3MEZGLCAweDcwRkYsIDB4MUY3NywgMHg3MTAwLCAweDcxMDAsIDB4MUY3QSwKKyAgICAweDcxMDIsIDB4NzEwMiwgMHgxRjdFLCAweDcxMDQsIDB4NzEwNCwgMHgxRjczLCAweDcxMDUsIDB4NzEwNSwgMHgzQTIzLAorICAgIDB4NzEwNiwgMHg3MTA2LCAweDFGNzgsIDB4NzEwOSwgMHg3MTBBLCAweDBCMTMsIDB4NzEwQiwgMHg3MTBCLCAweDFGN0QsCisgICAgMHg3MTBDLCAweDcxMEMsIDB4MUY3MSwgMHg3MTBELCAweDcxMEQsIDB4MUY2RCwgMHg3MTBFLCAweDcxMEUsIDB4MUY3RiwKKyAgICAweDcxMTAsIDB4NzExMCwgMHgxRjc1LCAweDcxMTMsIDB4NzExMywgMHgxRjc5LCAweDcxMTcsIDB4NzExNywgMHgxRjZGLAorICAgIDB4NzExOSwgMHg3MTFBLCAweDBDQzgsIDB4NzExQiwgMHg3MTFCLCAweDIxRkMsIDB4NzExQywgMHg3MTFDLCAweDBDQ0YsCisgICAgMHg3MTFELCAweDcxMUQsIDB4M0Q0NywgMHg3MTFFLCAweDcxMUUsIDB4MjFGMCwgMHg3MTFGLCAweDcxMUYsIDB4MjFGOSwKKyAgICAweDcxMjAsIDB4NzEyMCwgMHgyMUVGLCAweDcxMjEsIDB4NzEyMSwgMHgwQ0NDLCAweDcxMjIsIDB4NzEyMiwgMHgyMUY3LAorICAgIDB4NzEyMywgMHg3MTIzLCAweDIxRjUsIDB4NzEyNSwgMHg3MTI1LCAweDIxRjYsIDB4NzEyNiwgMHg3MTI2LCAweDBDQ0EsCisgICAgMHg3MTI4LCAweDcxMjgsIDB4MjFGQSwgMHg3MTI5LCAweDcxMjksIDB4M0JBOSwgMHg3MTJCLCAweDcxMkIsIDB4NDI2MSwKKyAgICAweDcxMkMsIDB4NzEyQywgMHg0MjZBLCAweDcxMkUsIDB4NzEyRSwgMHgyMUYzLCAweDcxMkYsIDB4NzEyRiwgMHgyMUYxLAorICAgIDB4NzEzMCwgMHg3MTMwLCAweDBDQ0IsIDB4NzEzMSwgMHg3MTMxLCAweDIxRjQsIDB4NzEzMiwgMHg3MTMyLCAweDIxRjgsCisgICAgMHg3MTMzLCAweDcxMzMsIDB4M0Q1NCwgMHg3MTM0LCAweDcxMzQsIDB4M0M3RSwgMHg3MTM1LCAweDcxMzUsIDB4Mzc2RCwKKyAgICAweDcxMzYsIDB4NzEzNiwgMHgwQ0NELCAweDcxM0EsIDB4NzEzQSwgMHgyMUZCLCAweDcxM0IsIDB4NzEzQiwgMHgzQUM1LAorICAgIDB4NzEzRSwgMHg3MTNFLCAweDM3MkUsIDB4NzE0MCwgMHg3MTQwLCAweDQzOTgsIDB4NzE0MSwgMHg3MTQxLCAweDI0N0IsCisgICAgMHg3MTQyLCAweDcxNDIsIDB4MjQ4MiwgMHg3MTQzLCAweDcxNDMsIDB4MjQ4NCwgMHg3MTQ0LCAweDcxNDQsIDB4MjQ4QSwKKyAgICAweDcxNDUsIDB4NzE0NSwgMHg0MjYyLCAweDcxNDYsIDB4NzE0NiwgMHgwRTcyLCAweDcxNDcsIDB4NzE0NywgMHgyNDc2LAorICAgIDB4NzE0OSwgMHg3MTQ5LCAweDBFNkEsIDB4NzE0QSwgMHg3MTRBLCAweDQyNjQsIDB4NzE0QiwgMHg3MTRCLCAweDI0ODUsCisgICAgMHg3MTRDLCAweDcxNEMsIDB4MEU2RiwgMHg3MTRELCAweDcxNEQsIDB4MjQ4QiwgMHg3MTRFLCAweDcxNEUsIDB4MEU2NiwKKyAgICAweDcxNEYsIDB4NzE0RiwgMHg0MjY3LCAweDcxNTAsIDB4NzE1MCwgMHgyNDg4LCAweDcxNTEsIDB4NzE1MSwgMHg0ODY1LAorICAgIDB4NzE1MiwgMHg3MTUyLCAweDI0NzgsIDB4NzE1MywgMHg3MTUzLCAweDI0ODksIDB4NzE1NCwgMHg3MTU0LCAweDI0NzcsCisgICAgMHg3MTU2LCAweDcxNTYsIDB4MEU3NCwgMHg3MTU4LCAweDcxNTgsIDB4MjQ4MywgMHg3MTU5LCAweDcxNTksIDB4MEU2NywKKyAgICAweDcxNUEsIDB4NzE1QSwgMHgyNDhDLCAweDcxNUMsIDB4NzE1QywgMHgwRTZDLCAweDcxNUQsIDB4NzE1RCwgMHgyNDdDLAorICAgIDB4NzE1RSwgMHg3MTVFLCAweDBFNzEsIDB4NzE1RiwgMHg3MTVGLCAweDI0ODcsIDB4NzE2MCwgMHg3MTYwLCAweDI0N0EsCisgICAgMHg3MTYxLCAweDcxNjEsIDB4MjQ4MSwgMHg3MTYyLCAweDcxNjIsIDB4MjQ3RCwgMHg3MTYzLCAweDcxNjMsIDB4MjQ3OSwKKyAgICAweDcxNjQsIDB4NzE2NCwgMHgwRTY5LCAweDcxNjUsIDB4NzE2NSwgMHgwRTcwLCAweDcxNjYsIDB4NzE2NiwgMHgwRTZFLAorICAgIDB4NzE2NywgMHg3MTY3LCAweDBFNkIsIDB4NzE2OCwgMHg3MTY4LCAweDBFNzMsIDB4NzE2OSwgMHg3MTY5LCAweDBFNjgsCisgICAgMHg3MTZBLCAweDcxNkEsIDB4MjQ4MCwgMHg3MTZCLCAweDcxNkIsIDB4M0NDNSwgMHg3MTZDLCAweDcxNkMsIDB4MEU2RCwKKyAgICAweDcxNkUsIDB4NzE2RSwgMHgwQ0NFLCAweDcxNzAsIDB4NzE3MCwgMHgyNDg2LCAweDcxNzEsIDB4NzE3MSwgMHgzREMwLAorICAgIDB4NzE3MiwgMHg3MTcyLCAweDI0N0UsIDB4NzE3MywgMHg3MTczLCAweDQ3RTcsIDB4NzE3NSwgMHg3MTc1LCAweDNDRUQsCisgICAgMHg3MTc2LCAweDcxNzYsIDB4NDAwMCwgMHg3MTc3LCAweDcxNzcsIDB4Mzk1NywgMHg3MTc4LCAweDcxNzgsIDB4MjQ3RiwKKyAgICAweDcxN0EsIDB4NzE3QSwgMHg0OTI0LCAweDcxN0IsIDB4NzE3QiwgMHgyNzFFLCAweDcxN0MsIDB4NzE3QywgMHgzODM1LAorICAgIDB4NzE3RCwgMHg3MTdELCAweDEwMjMsIDB4NzE3RSwgMHg3MTdFLCAweDM5NzAsIDB4NzE4MCwgMHg3MTgwLCAweDI3MUEsCisgICAgMHg3MTgxLCAweDcxODEsIDB4MjcyMCwgMHg3MTgyLCAweDcxODIsIDB4MjcxQywgMHg3MTg0LCAweDcxODQsIDB4MTAyNSwKKyAgICAweDcxODUsIDB4NzE4NSwgMHgyNzFCLCAweDcxODYsIDB4NzE4NiwgMHgyNzFGLCAweDcxODcsIDB4NzE4NywgMHgyNzE3LAorICAgIDB4NzE4OCwgMHg3MTg4LCAweDQ3MDYsIDB4NzE4OSwgMHg3MTg5LCAweDI3MTksIDB4NzE4QSwgMHg3MThBLCAweDEwMjQsCisgICAgMHg3MThDLCAweDcxOEMsIDB4MzlFQSwgMHg3MThFLCAweDcxOEUsIDB4M0QzQiwgMHg3MThGLCAweDcxOEYsIDB4MjcxRCwKKyAgICAweDcxOTAsIDB4NzE5MCwgMHgyNzE4LCAweDcxOTIsIDB4NzE5MiwgMHgxMDI2LCAweDcxOTQsIDB4NzE5NCwgMHgxMDIxLAorICAgIDB4NzE5NiwgMHg3MTk2LCAweDQyNUYsIDB4NzE5NywgMHg3MTk3LCAweDI3MjEsIDB4NzE5OCwgMHg3MTk4LCAweDQ4MUQsCisgICAgMHg3MTk5LCAweDcxOTksIDB4MTAyMiwgMHg3MTlBLCAweDcxOUEsIDB4Mjk1QSwgMHg3MTlCLCAweDcxOUIsIDB4Mjk1NywKKyAgICAweDcxOUMsIDB4NzE5QywgMHgyOTYzLCAweDcxOUQsIDB4NzE5RCwgMHgyOTVELCAweDcxOUUsIDB4NzE5RSwgMHgyOTVGLAorICAgIDB4NzE5RiwgMHg3MTlGLCAweDExOUUsIDB4NzFBMCwgMHg3MUEwLCAweDI5NTksIDB4NzFBMSwgMHg3MUExLCAweDI5NjEsCisgICAgMHg3MUEyLCAweDcxQTIsIDB4NDhDMSwgMHg3MUEzLCAweDcxQTMsIDB4M0VDOCwgMHg3MUE0LCAweDcxQTQsIDB4Mjk2MCwKKyAgICAweDcxQTUsIDB4NzFBNSwgMHgyOTVFLCAweDcxQTcsIDB4NzFBNywgMHgyOTY0LCAweDcxQTgsIDB4NzFBOCwgMHgxMUExLAorICAgIDB4NzFBOSwgMHg3MUE5LCAweDI5NUIsIDB4NzFBQSwgMHg3MUFBLCAweDI5NjIsIDB4NzFBQywgMHg3MUFDLCAweDExOUYsCisgICAgMHg3MUFELCAweDcxQUQsIDB4M0UxRCwgMHg3MUFGLCAweDcxQUYsIDB4Mjk1NiwgMHg3MUIwLCAweDcxQjAsIDB4Mjk1OCwKKyAgICAweDcxQjEsIDB4NzFCMSwgMHgxMUEwLCAweDcxQjIsIDB4NzFCMiwgMHgyOTU1LCAweDcxQjMsIDB4NzFCMywgMHgyOTY1LAorICAgIDB4NzFCNCwgMHg3MUI0LCAweDQyNUUsIDB4NzFCNSwgMHg3MUI1LCAweDI5NUMsIDB4NzFCNywgMHg3MUI3LCAweDQ2OEIsCisgICAgMHg3MUI4LCAweDcxQjgsIDB4MkJCMywgMHg3MUI5LCAweDcxQjksIDB4MTJGMywgMHg3MUJBLCAweDcxQkEsIDB4NDI2RSwKKyAgICAweDcxQkMsIDB4NzFCQywgMHgyQkJFLCAweDcxQkQsIDB4NzFCRCwgMHgyQkJDLCAweDcxQkUsIDB4NzFCRSwgMHgxMkVELAorICAgIDB4NzFCRiwgMHg3MUJGLCAweDJCQjIsIDB4NzFDMCwgMHg3MUMxLCAweDJCQjUsIDB4NzFDMiwgMHg3MUMyLCAweDJCQjEsCisgICAgMHg3MUMzLCAweDcxQzQsIDB4MTJGNywgMHg3MUM1LCAweDcxQzUsIDB4MkJCMCwgMHg3MUM2LCAweDcxQzYsIDB4MkJCRiwKKyAgICAweDcxQzcsIDB4NzFDNywgMHgyQkJBLCAweDcxQzgsIDB4NzFDOCwgMHgxMkYxLCAweDcxQzksIDB4NzFDOSwgMHgxMkVFLAorICAgIDB4NzFDQSwgMHg3MUNBLCAweDJCQjksIDB4NzFDQiwgMHg3MUNCLCAweDJCQjcsIDB4NzFDRSwgMHg3MUNFLCAweDEyRjQsCisgICAgMHg3MUNGLCAweDcxQ0YsIDB4MkJCQiwgMHg3MUQwLCAweDcxRDAsIDB4MTJFRiwgMHg3MUQxLCAweDcxRDEsIDB4MzczRCwKKyAgICAweDcxRDIsIDB4NzFEMiwgMHgxMkYwLCAweDcxRDQsIDB4NzFENCwgMHgyQkI4LCAweDcxRDUsIDB4NzFENSwgMHgxMkYyLAorICAgIDB4NzFENiwgMHg3MUQ2LCAweDJCQjQsIDB4NzFEOCwgMHg3MUQ4LCAweDJCQkQsIDB4NzFEOSwgMHg3MUQ5LCAweDEyRjUsCisgICAgMHg3MURBLCAweDcxREIsIDB4MkJDMCwgMHg3MURDLCAweDcxREMsIDB4MTJGNiwgMHg3MURELCAweDcxREQsIDB4NDA3OCwKKyAgICAweDcxREYsIDB4NzFERiwgMHgxNDA0LCAweDcxRTAsIDB4NzFFMCwgMHgxNDBCLCAweDcxRTEsIDB4NzFFMSwgMHgyRDlCLAorICAgIDB4NzFFMiwgMHg3MUUyLCAweDJEQTEsIDB4NzFFNCwgMHg3MUU0LCAweDJEOUYsIDB4NzFFNSwgMHg3MUU1LCAweDE0MDcsCisgICAgMHg3MUU2LCAweDcxRTYsIDB4MTQwNiwgMHg3MUU3LCAweDcxRTcsIDB4MTQwMywgMHg3MUU4LCAweDcxRTgsIDB4MkQ5RCwKKyAgICAweDcxRUIsIDB4NzFFQiwgMHgzQzgxLCAweDcxRUMsIDB4NzFFQywgMHgxNDA5LCAweDcxRUQsIDB4NzFFRCwgMHgxNDA4LAorICAgIDB4NzFFRSwgMHg3MUVFLCAweDE0MDUsIDB4NzFGMCwgMHg3MUYwLCAweDJEQTAsIDB4NzFGMSwgMHg3MUYxLCAweDJEOUMsCisgICAgMHg3MUYyLCAweDcxRjIsIDB4MkQ5RSwgMHg3MUY0LCAweDcxRjQsIDB4MTQwQSwgMHg3MUY1LCAweDcxRjUsIDB4NDZFRSwKKyAgICAweDcxRjYsIDB4NzFGNiwgMHgzRTlBLCAweDcxRjgsIDB4NzFGOCwgMHgxNEYxLCAweDcxRjksIDB4NzFGOSwgMHgyRjUyLAorICAgIDB4NzFGQiwgMHg3MUZDLCAweDE0RUUsIDB4NzFGRCwgMHg3MUZELCAweDJGNTQsIDB4NzFGRSwgMHg3MUZFLCAweDE0RjAsCisgICAgMHg3MUZGLCAweDcxRkYsIDB4MkY1MSwgMHg3MjAxLCAweDcyMDEsIDB4MkY1MCwgMHg3MjAyLCAweDcyMDIsIDB4MzBCOSwKKyAgICAweDcyMDMsIDB4NzIwMywgMHgyRjUzLCAweDcyMDUsIDB4NzIwNSwgMHgzMEJBLCAweDcyMDYsIDB4NzIwNiwgMHgxNTkxLAorICAgIDB4NzIwNywgMHg3MjA3LCAweDMwQjgsIDB4NzIwOSwgMHg3MjA5LCAweDNEQkIsIDB4NzIwQSwgMHg3MjBBLCAweDMwQjcsCisgICAgMHg3MjBDLCAweDcyMEMsIDB4MzBCNiwgMHg3MjBELCAweDcyMEQsIDB4MTU5MiwgMHg3MjBFLCAweDcyMEUsIDB4NDI3MSwKKyAgICAweDcyMEYsIDB4NzIwRiwgMHgzOUZDLCAweDcyMTAsIDB4NzIxMCwgMHgxNjFGLCAweDcyMTMsIDB4NzIxNCwgMHgzMUY0LAorICAgIDB4NzIxNSwgMHg3MjE1LCAweDQyNzMsIDB4NzIxNiwgMHg3MjE2LCAweDM5NTMsIDB4NzIxNywgMHg3MjE3LCAweDM5NjksCisgICAgMHg3MjE5LCAweDcyMTksIDB4MzJFMSwgMHg3MjFBLCAweDcyMUEsIDB4MzJFMCwgMHg3MjFCLCAweDcyMUIsIDB4MTY3QiwKKyAgICAweDcyMUQsIDB4NzIxRCwgMHgzMkRGLCAweDcyMUUsIDB4NzIxRiwgMHgzMzhELCAweDcyMjIsIDB4NzIyMiwgMHgzNDI0LAorICAgIDB4NzIyMywgMHg3MjIzLCAweDM0OEMsIDB4NzIyNCwgMHg3MjI0LCAweDQyNzYsIDB4NzIyNiwgMHg3MjI2LCAweDM0RDEsCisgICAgMHg3MjI3LCAweDcyMjcsIDB4MzUzNSwgMHg3MjI4LCAweDcyMjgsIDB4MTc2NiwgMHg3MjI5LCAweDcyMjksIDB4MzU0OSwKKyAgICAweDcyMkEsIDB4NzIyQSwgMHgwMkU3LCAweDcyMkIsIDB4NzIyQiwgMHg0NEYyLCAweDcyMkMsIDB4NzIyRCwgMHgwNjQ1LAorICAgIDB4NzIyRSwgMHg3MjJFLCAweDQyNzksIDB4NzIzMCwgMHg3MjMwLCAweDA3OTEsIDB4NzIzNSwgMHg3MjM1LCAweDE0MEMsCisgICAgMHg3MjM2LCAweDcyMzYsIDB4MDJFOCwgMHg3MjM4LCAweDcyMzgsIDB4MDY0NywgMHg3MjM5LCAweDcyMzksIDB4MDkyMywKKyAgICAweDcyM0EsIDB4NzIzQSwgMHgwRTc1LCAweDcyM0IsIDB4NzIzQiwgMHgwMkU5LCAweDcyM0QsIDB4NzIzRCwgMHgwQjE3LAorICAgIDB4NzIzRSwgMHg3MjNFLCAweDEwMjcsIDB4NzIzRiwgMHg3MjNGLCAweDE3OEQsIDB4NzI0MCwgMHg3MjQwLCAweDQyN0EsCisgICAgMHg3MjQxLCAweDcyNDEsIDB4MUI2RSwgMHg3MjQyLCAweDcyNDIsIDB4MUQyRCwgMHg3MjQ0LCAweDcyNDQsIDB4MjcyMiwKKyAgICAweDcyNDYsIDB4NzI0NiwgMHgxNDBELCAweDcyNDcsIDB4NzI0NywgMHgwMkVBLCAweDcyNDgsIDB4NzI0OCwgMHgwNjQ4LAorICAgIDB4NzI0OSwgMHg3MjRBLCAweDFCNkYsIDB4NzI0QiwgMHg3MjRCLCAweDIxRkQsIDB4NzI0QywgMHg3MjRDLCAweDBDRDAsCisgICAgMHg3MjRGLCAweDcyNEYsIDB4MjQ4RCwgMHg3MjUwLCAweDcyNTAsIDB4M0FDOSwgMHg3MjUyLCAweDcyNTIsIDB4MEU3NiwKKyAgICAweDcyNTMsIDB4NzI1MywgMHgyNzIzLCAweDcyNTUsIDB4NzI1NSwgMHg0MjdELCAweDcyNTYsIDB4NzI1NiwgMHgxMUEyLAorICAgIDB4NzI1NywgMHg3MjU3LCAweDQyN0UsIDB4NzI1OCwgMHg3MjU4LCAweDE1OTMsIDB4NzI1OSwgMHg3MjU5LCAweDAyRUIsCisgICAgMHg3MjVBLCAweDcyNUEsIDB4MjFGRSwgMHg3MjVCLCAweDcyNUIsIDB4MDJFQywgMHg3MjVDLCAweDcyNUMsIDB4NDY1QSwKKyAgICAweDcyNUQsIDB4NzI1RCwgMHgwM0Y0LCAweDcyNUUsIDB4NzI1RSwgMHgxODBCLCAweDcyNUYsIDB4NzI1RiwgMHgwM0YzLAorICAgIDB4NzI2MCwgMHg3MjYwLCAweDA0RUMsIDB4NzI2MSwgMHg3MjYxLCAweDA0RUIsIDB4NzI2MiwgMHg3MjYyLCAweDA0RUEsCisgICAgMHg3MjYzLCAweDcyNjMsIDB4MThDNSwgMHg3MjY2LCAweDcyNjYsIDB4M0VCQiwgMHg3MjY3LCAweDcyNjcsIDB4MDY0OSwKKyAgICAweDcyNjksIDB4NzI2OSwgMHgwNjRBLCAweDcyNkEsIDB4NzI2QSwgMHgxOUZBLCAweDcyNkMsIDB4NzI2QywgMHgxQjcxLAorICAgIDB4NzI2RSwgMHg3MjZFLCAweDFCNzQsIDB4NzI2RiwgMHg3MjZGLCAweDA3OTMsIDB4NzI3MCwgMHg3MjcwLCAweDFCNzIsCisgICAgMHg3MjcyLCAweDcyNzIsIDB4MDc5MiwgMHg3MjczLCAweDcyNzMsIDB4MUI3MywgMHg3Mjc0LCAweDcyNzQsIDB4MDc5NCwKKyAgICAweDcyNzYsIDB4NzI3NiwgMHgxRDMwLCAweDcyNzcsIDB4NzI3NywgMHgxRDJGLCAweDcyNzgsIDB4NzI3OCwgMHgxRDJFLAorICAgIDB4NzI3OSwgMHg3Mjc5LCAweDA5MjQsIDB4NzI3QiwgMHg3MjdDLCAweDFGODEsIDB4NzI3RCwgMHg3MjdELCAweDBCMTgsCisgICAgMHg3MjdFLCAweDcyN0UsIDB4MUY4MCwgMHg3MjdGLCAweDcyN0YsIDB4MUY4MywgMHg3MjgwLCAweDcyODAsIDB4MENEMiwKKyAgICAweDcyODEsIDB4NzI4MSwgMHgwQjE5LCAweDcyODIsIDB4NzI4MiwgMHg0MjgzLCAweDcyODQsIDB4NzI4NCwgMHgwQ0QxLAorICAgIDB4NzI4NSwgMHg3Mjg1LCAweDIyMDIsIDB4NzI4NiwgMHg3Mjg2LCAweDIyMDEsIDB4NzI4NywgMHg3Mjg3LCAweDNBQ0EsCisgICAgMHg3Mjg4LCAweDcyODksIDB4MjFGRiwgMHg3MjhCLCAweDcyOEIsIDB4MjIwMywgMHg3MjhDLCAweDcyOEMsIDB4MjQ4RiwKKyAgICAweDcyOEQsIDB4NzI4RCwgMHgyNDhFLCAweDcyOEUsIDB4NzI4RSwgMHgyNDkyLCAweDcyOEYsIDB4NzI4RiwgMHg0M0M5LAorICAgIDB4NzI5MCwgMHg3MjkwLCAweDI0OTEsIDB4NzI5MSwgMHg3MjkxLCAweDI0OTAsIDB4NzI5MiwgMHg3MjkyLCAweDEwMjgsCisgICAgMHg3MjkzLCAweDcyOTMsIDB4MjcyNiwgMHg3Mjk0LCAweDcyOTQsIDB4M0FDQiwgMHg3Mjk1LCAweDcyOTUsIDB4MjcyNSwKKyAgICAweDcyOTYsIDB4NzI5NiwgMHgxMDI5LCAweDcyOTcsIDB4NzI5NywgMHgyNzI0LCAweDcyOTgsIDB4NzI5OCwgMHgyOTY2LAorICAgIDB4NzI5QSwgMHg3MjlBLCAweDI5NjcsIDB4NzI5QiwgMHg3MjlCLCAweDExQTMsIDB4NzI5RCwgMHg3MjlFLCAweDJCQzIsCisgICAgMHg3MjlGLCAweDcyOUYsIDB4NDczQSwgMHg3MkExLCAweDcyQTEsIDB4MzBCRiwgMHg3MkEyLCAweDcyQTIsIDB4MTU5NCwKKyAgICAweDcyQTMsIDB4NzJBMywgMHgzMEJFLCAweDcyQTQsIDB4NzJBNCwgMHgzMEJELCAweDcyQTUsIDB4NzJBNiwgMHgzMEJCLAorICAgIDB4NzJBNywgMHg3MkE3LCAweDE2N0MsIDB4NzJBOCwgMHg3MkE4LCAweDMxRjYsIDB4NzJBOSwgMHg3MkE5LCAweDMzOEYsCisgICAgMHg3MkFBLCAweDcyQUEsIDB4MzREMiwgMHg3MkFDLCAweDcyQUMsIDB4MDJFRCwgMHg3MkFELCAweDcyQUQsIDB4NDRGNCwKKyAgICAweDcyQUUsIDB4NzJBRSwgMHgxN0FGLCAweDcyQUYsIDB4NzJBRiwgMHgwMzU1LCAweDcyQjAsIDB4NzJCMCwgMHgxN0IwLAorICAgIDB4NzJCMiwgMHg3MkIyLCAweDNGQjYsIDB4NzJCNCwgMHg3MkI1LCAweDE4MEMsIDB4NzJCQSwgMHg3MkJBLCAweDE4Q0IsCisgICAgMHg3MkJELCAweDcyQkQsIDB4MThDNywgMHg3MkJGLCAweDcyQkYsIDB4MThDNiwgMHg3MkMwLCAweDcyQzAsIDB4MDY0QiwKKyAgICAweDcyQzEsIDB4NzJDMSwgMHgxOENBLCAweDcyQzIsIDB4NzJDMiwgMHgwNEVFLCAweDcyQzMsIDB4NzJDMywgMHgxOEM4LAorICAgIDB4NzJDNCwgMHg3MkM0LCAweDA0RUQsIDB4NzJDNSwgMHg3MkM1LCAweDE4Q0MsIDB4NzJDNiwgMHg3MkM2LCAweDE4QzksCisgICAgMHg3MkM5LCAweDcyQzksIDB4MTlGRSwgMHg3MkNBLCAweDcyQ0EsIDB4MUI3NSwgMHg3MkNCLCAweDcyQ0IsIDB4MTlGQywKKyAgICAweDcyQ0MsIDB4NzJDQywgMHgxQTAzLCAweDcyQ0QsIDB4NzJDRCwgMHg0M0NBLCAweDcyQ0UsIDB4NzJDRSwgMHgwNjRDLAorICAgIDB4NzJEMCwgMHg3MkQwLCAweDA2NEYsIDB4NzJEMSwgMHg3MkQxLCAweDFBMDQsIDB4NzJEMiwgMHg3MkQyLCAweDFBMDAsCisgICAgMHg3MkQ0LCAweDcyRDQsIDB4MUEwMSwgMHg3MkQ2LCAweDcyRDYsIDB4MTlGQiwgMHg3MkQ3LCAweDcyRDcsIDB4MDY0RSwKKyAgICAweDcyRDgsIDB4NzJEOCwgMHgxOUZELCAweDcyRDksIDB4NzJEOSwgMHgwNjRELCAweDcyREEsIDB4NzJEQSwgMHgxQTAyLAorICAgIDB4NzJEQywgMHg3MkRDLCAweDE5RkYsIDB4NzJERiwgMHg3MkRGLCAweDFCNzksIDB4NzJFMCwgMHg3MkUxLCAweDA3OTYsCisgICAgMHg3MkUyLCAweDcyRTIsIDB4M0Y5NywgMHg3MkUzLCAweDcyRTMsIDB4MUI3QywgMHg3MkU0LCAweDcyRTQsIDB4MUI3NiwKKyAgICAweDcyRTYsIDB4NzJFNiwgMHgxQjdCLCAweDcyRTgsIDB4NzJFOCwgMHgxQjc3LCAweDcyRTksIDB4NzJFOSwgMHgwNzk1LAorICAgIDB4NzJFQSwgMHg3MkVBLCAweDFCN0EsIDB4NzJFQiwgMHg3MkVCLCAweDFCNzgsIDB4NzJGMywgMHg3MkYzLCAweDFEMzYsCisgICAgMHg3MkY0LCAweDcyRjQsIDB4MUQzMywgMHg3MkY2LCAweDcyRjYsIDB4MUQzNSwgMHg3MkY3LCAweDcyRjcsIDB4MDkyOSwKKyAgICAweDcyRjgsIDB4NzJGOCwgMHgwOTI4LCAweDcyRjksIDB4NzJGOSwgMHgwOTI2LCAweDcyRkEsIDB4NzJGQSwgMHgxRDMyLAorICAgIDB4NzJGQiwgMHg3MkZCLCAweDFEMzcsIDB4NzJGQywgMHg3MkZDLCAweDA5MjUsIDB4NzJGRCwgMHg3MkZELCAweDA5MjcsCisgICAgMHg3MkZFLCAweDcyRkUsIDB4MUQzNCwgMHg3MkZGLCAweDcyRkYsIDB4MUY4QiwgMHg3MzAwLCAweDczMDAsIDB4MUQzMSwKKyAgICAweDczMDEsIDB4NzMwMSwgMHgxRDM4LCAweDczMDIsIDB4NzMwMiwgMHgzRjlBLCAweDczMDQsIDB4NzMwNCwgMHgzRUI1LAorICAgIDB4NzMwNywgMHg3MzA3LCAweDFGODYsIDB4NzMwOCwgMHg3MzA4LCAweDFGOEEsIDB4NzMwQSwgMHg3MzBBLCAweDFGODksCisgICAgMHg3MzBCLCAweDczMEIsIDB4MjIwNSwgMHg3MzBDLCAweDczMEMsIDB4MjIxMCwgMHg3MzBGLCAweDczMEYsIDB4MUY4QywKKyAgICAweDczMTAsIDB4NzMxMCwgMHg0NkVBLCAweDczMTEsIDB4NzMxMSwgMHgxRjg3LCAweDczMTIsIDB4NzMxMiwgMHgyMjA0LAorICAgIDB4NzMxMywgMHg3MzEzLCAweDBCMUQsIDB4NzMxNiwgMHg3MzE2LCAweDBCMUMsIDB4NzMxNywgMHg3MzE3LCAweDFGODUsCisgICAgMHg3MzE4LCAweDczMTgsIDB4MUY4OCwgMHg3MzE5LCAweDczMTksIDB4MEIxRSwgMHg3MzFCLCAweDczMUIsIDB4MEIxQiwKKyAgICAweDczMUMsIDB4NzMxQywgMHgwQjFBLCAweDczMUQsIDB4NzMxRCwgMHgxRjg0LCAweDczMUUsIDB4NzMxRSwgMHgxRjhELAorICAgIDB4NzMyMiwgMHg3MzIyLCAweDIyMDcsIDB4NzMyMywgMHg3MzIzLCAweDIyMEUsIDB4NzMyNSwgMHg3MzI1LCAweDBDRDQsCisgICAgMHg3MzI2LCAweDczMjYsIDB4MjIwRCwgMHg3MzI3LCAweDczMjcsIDB4MjIwQSwgMHg3MzI4LCAweDczMjgsIDB4NDI4QSwKKyAgICAweDczMjksIDB4NzMyOSwgMHgwQ0Q2LCAweDczMkEsIDB4NzMyQSwgMHgzRDcwLCAweDczMkIsIDB4NzMyQiwgMHg0Mjg1LAorICAgIDB4NzMyQywgMHg3MzJDLCAweDNGQjIsIDB4NzMyRCwgMHg3MzJELCAweDIyMEMsIDB4NzMyRSwgMHg3MzJFLCAweDQyOEIsCisgICAgMHg3MzMwLCAweDczMzAsIDB4MjIwNiwgMHg3MzMxLCAweDczMzEsIDB4MjIwOCwgMHg3MzMyLCAweDczMzIsIDB4MjIwQiwKKyAgICAweDczMzMsIDB4NzMzMywgMHgyMjA5LCAweDczMzQsIDB4NzMzNCwgMHgwQ0Q1LCAweDczMzUsIDB4NzMzNSwgMHgyMjBGLAorICAgIDB4NzMzNiwgMHg3MzM2LCAweDBDRDMsIDB4NzMzNywgMHg3MzM3LCAweDBFNzcsIDB4NzMzOCwgMHg3MzM4LCAweDQ2RUIsCisgICAgMHg3MzM5LCAweDczMzksIDB4NDNDQywgMHg3MzNBLCAweDczM0EsIDB4MjQ5NiwgMHg3MzNCLCAweDczM0IsIDB4MjQ5NSwKKyAgICAweDczM0MsIDB4NzMzQywgMHgyNDkzLCAweDczM0UsIDB4NzMzRSwgMHgwRTdBLCAweDczM0YsIDB4NzMzRiwgMHgwRTc5LAorICAgIDB4NzM0MCwgMHg3MzQwLCAweDI0OTcsIDB4NzM0MSwgMHg3MzQxLCAweDQ2RUMsIDB4NzM0MiwgMHg3MzQyLCAweDI0OTQsCisgICAgMHg3MzQzLCAweDczNDMsIDB4MjcyNywgMHg3MzQ0LCAweDczNDQsIDB4MTAyQSwgMHg3MzQ1LCAweDczNDUsIDB4MEU3OCwKKyAgICAweDczNDgsIDB4NzM0OCwgMHg0M0ZBLCAweDczNDksIDB4NzM0OSwgMHgyNDk5LCAweDczNEEsIDB4NzM0QSwgMHgyNDk4LAorICAgIDB4NzM0QywgMHg3MzRDLCAweDI3MkEsIDB4NzM0RCwgMHg3MzRELCAweDI3MjgsIDB4NzM0RSwgMHg3MzRFLCAweDExQTQsCisgICAgMHg3MzRGLCAweDczNEYsIDB4M0Y1MSwgMHg3MzUwLCAweDczNTAsIDB4MTAyQiwgMHg3MzUxLCAweDczNTEsIDB4MjcyOSwKKyAgICAweDczNTIsIDB4NzM1MiwgMHgyOTY5LCAweDczNTcsIDB4NzM1NywgMHgxMUE1LCAweDczNTgsIDB4NzM1OCwgMHgyOTY4LAorICAgIDB4NzM1OSwgMHg3MzU5LCAweDI5NzEsIDB4NzM1QSwgMHg3MzVBLCAweDI5NzAsIDB4NzM1QiwgMHg3MzVCLCAweDI5NkUsCisgICAgMHg3MzVELCAweDczNUQsIDB4Mjk2RCwgMHg3MzVFLCAweDczNjAsIDB4Mjk2QSwgMHg3MzYxLCAweDczNjEsIDB4Mjk2RiwKKyAgICAweDczNjIsIDB4NzM2MiwgMHgyOTcyLCAweDczNjUsIDB4NzM2NSwgMHgyQkM4LCAweDczNjYsIDB4NzM2NywgMHgyQkM1LAorICAgIDB4NzM2OCwgMHg3MzY4LCAweDEyRjksIDB4NzM2OSwgMHg3MzY5LCAweDJCQzQsIDB4NzM2QSwgMHg3MzZBLCAweDJCQ0EsCisgICAgMHg3MzZCLCAweDczNkIsIDB4MkJDOSwgMHg3MzZDLCAweDczNkMsIDB4MkJDNywgMHg3MzZFLCAweDczNkYsIDB4MkRBMywKKyAgICAweDczNzAsIDB4NzM3MCwgMHgxNDBFLCAweDczNzEsIDB4NzM3MSwgMHgzRjk4LCAweDczNzIsIDB4NzM3MiwgMHgxNDBGLAorICAgIDB4NzM3MywgMHg3MzczLCAweDJEQTIsIDB4NzM3NCwgMHg3Mzc0LCAweDNFRDQsIDB4NzM3NSwgMHg3Mzc1LCAweDE0RjMsCisgICAgMHg3Mzc2LCAweDczNzYsIDB4MkY1NSwgMHg3Mzc3LCAweDczNzcsIDB4MTRGMiwgMHg3Mzc4LCAweDczNzgsIDB4MTU5NSwKKyAgICAweDczN0EsIDB4NzM3QSwgMHgxNTk2LCAweDczN0IsIDB4NzM3QiwgMHgxNjIwLCAweDczN0MsIDB4NzM3QywgMHgzMUY4LAorICAgIDB4NzM3RCwgMHg3MzdELCAweDMxRjcsIDB4NzM3RSwgMHg3MzdFLCAweDMyRTIsIDB4NzM3RiwgMHg3MzdGLCAweDMzOTAsCisgICAgMHg3MzgwLCAweDczODAsIDB4MTZDQSwgMHg3MzgxLCAweDczODEsIDB4MzQyNiwgMHg3MzgyLCAweDczODIsIDB4MzQyNSwKKyAgICAweDczODMsIDB4NzM4MywgMHgzNDI3LCAweDczODQsIDB4NzM4NCwgMHgwMzU2LCAweDczODUsIDB4NzM4NSwgMHgxQjdELAorICAgIDB4NzM4NiwgMHg3Mzg2LCAweDA5MkEsIDB4NzM4NywgMHg3Mzg3LCAweDBCMUYsIDB4NzM4OCwgMHg3Mzg4LCAweDFGOEUsCisgICAgMHg3Mzg5LCAweDczODksIDB4MDM1NywgMHg3MzhBLCAweDczOEEsIDB4MTdCMSwgMHg3MzhCLCAweDczOEIsIDB4MDJFRSwKKyAgICAweDczOEUsIDB4NzM4RSwgMHgxODBFLCAweDczOEYsIDB4NzM4RiwgMHg0NkU1LCAweDczOTIsIDB4NzM5MiwgMHgxOEQxLAorICAgIDB4NzM5MywgMHg3Mzk0LCAweDE4Q0YsIDB4NzM5NSwgMHg3Mzk1LCAweDE4Q0QsIDB4NzM5NiwgMHg3Mzk2LCAweDA0RUYsCisgICAgMHg3Mzk3LCAweDczOTcsIDB4MThDRSwgMHg3Mzk4LCAweDczOTgsIDB4MzlGNiwgMHg3MzlDLCAweDczOUMsIDB4NDA4QSwKKyAgICAweDczOUQsIDB4NzM5RCwgMHgxQTBDLCAweDczOUUsIDB4NzM5RSwgMHgzOTVCLCAweDczOUYsIDB4NzM5RiwgMHgwNjUyLAorICAgIDB4NzNBMCwgMHg3M0EwLCAweDFBMEEsIDB4NzNBMSwgMHg3M0ExLCAweDFBMDYsIDB4NzNBMiwgMHg3M0EyLCAweDFBMDksCisgICAgMHg3M0E0LCAweDczQTQsIDB4MUEwNSwgMHg3M0E1LCAweDczQTUsIDB4MDY1NCwgMHg3M0E2LCAweDczQTYsIDB4MUEwOCwKKyAgICAweDczQTcsIDB4NzNBNywgMHg0MDg3LCAweDczQTgsIDB4NzNBOCwgMHgwNjUxLCAweDczQTksIDB4NzNBOSwgMHgwNjUwLAorICAgIDB4NzNBQSwgMHg3M0FBLCAweDQyOEQsIDB4NzNBQiwgMHg3M0FCLCAweDA2NTMsIDB4NzNBQywgMHg3M0FDLCAweDFBMEIsCisgICAgMHg3M0FELCAweDczQUQsIDB4MUEwNywgMHg3M0IyLCAweDczQjIsIDB4MDc5QiwgMHg3M0IzLCAweDczQjMsIDB4MDc5RSwKKyAgICAweDczQjQsIDB4NzNCNCwgMHgxQjg1LCAweDczQjUsIDB4NzNCNSwgMHgxQjg0LCAweDczQjYsIDB4NzNCNiwgMHgxQjgzLAorICAgIDB4NzNCNywgMHg3M0I3LCAweDA3OTgsIDB4NzNCOCwgMHg3M0I4LCAweDFCOEMsIDB4NzNCOSwgMHg3M0I5LCAweDFCODIsCisgICAgMHg3M0JCLCAweDczQkIsIDB4MDc5QSwgMHg3M0JDLCAweDczQkMsIDB4MUQzRCwgMHg3M0JFLCAweDczQkUsIDB4MUI4OSwKKyAgICAweDczQkYsIDB4NzNCRiwgMHgxQjg3LCAweDczQzAsIDB4NzNDMCwgMHgwNzlELCAweDczQzIsIDB4NzNDMiwgMHgxQjdGLAorICAgIDB4NzNDMywgMHg3M0MzLCAweDFCOEEsIDB4NzNDNSwgMHg3M0M1LCAweDFCODEsIDB4NzNDNiwgMHg3M0M2LCAweDFCOEIsCisgICAgMHg3M0M3LCAweDczQzcsIDB4MUI4OCwgMHg3M0M4LCAweDczQzgsIDB4MUI4MCwgMHg3M0M5LCAweDczQzksIDB4NDI5MCwKKyAgICAweDczQ0EsIDB4NzNDQSwgMHgwNzk5LCAweDczQ0IsIDB4NzNDQiwgMHgxQjhELCAweDczQ0MsIDB4NzNDQywgMHgxQjdFLAorICAgIDB4NzNDRCwgMHg3M0NELCAweDA3OUMsIDB4NzNDRSwgMHg3M0NFLCAweDQxMUIsIDB4NzNDRiwgMHg3M0NGLCAweDQyOEMsCisgICAgMHg3M0QwLCAweDczRDAsIDB4M0IxNywgMHg3M0QyLCAweDczRDIsIDB4MUQ0MiwgMHg3M0QzLCAweDczRDMsIDB4MUQzOSwKKyAgICAweDczRDQsIDB4NzNENCwgMHgxRDQ0LCAweDczRDUsIDB4NzNENSwgMHg0MDczLCAweDczRDYsIDB4NzNENiwgMHgxRDNDLAorICAgIDB4NzNENywgMHg3M0Q4LCAweDFENDcsIDB4NzNEOSwgMHg3M0Q5LCAweDFEM0EsIDB4NzNEQSwgMHg3M0RBLCAweDFENDYsCisgICAgMHg3M0RCLCAweDczREIsIDB4MUQ0MywgMHg3M0RDLCAweDczREMsIDB4MUQ0MSwgMHg3M0RELCAweDczREQsIDB4MUQ0NSwKKyAgICAweDczREUsIDB4NzNERSwgMHgwOTMwLCAweDczRTAsIDB4NzNFMCwgMHgwOTJFLCAweDczRTEsIDB4NzNFMSwgMHg0NkYwLAorICAgIDB4NzNFMiwgMHg3M0UyLCAweDNDQTMsIDB4NzNFMywgMHg3M0UzLCAweDFEM0YsIDB4NzNFNCwgMHg3M0U0LCAweDQyQTUsCisgICAgMHg3M0U1LCAweDczRTUsIDB4MUQzQiwgMHg3M0U2LCAweDczRTYsIDB4M0NCQSwgMHg3M0U3LCAweDczRTcsIDB4MUQzRSwKKyAgICAweDczRTgsIDB4NzNFOCwgMHgxRDQ5LCAweDczRTksIDB4NzNFOSwgMHgxRDQwLCAweDczRUEsIDB4NzNFQSwgMHgwOTJGLAorICAgIDB4NzNFQiwgMHg3M0VCLCAweDFCODYsIDB4NzNFRCwgMHg3M0VELCAweDA5MkIsIDB4NzNFRSwgMHg3M0VFLCAweDA5MkQsCisgICAgMHg3M0VGLCAweDczRUYsIDB4NDAxMSwgMHg3M0YzLCAweDczRjMsIDB4M0NBQiwgMHg3M0Y0LCAweDczRjQsIDB4MUY5QywKKyAgICAweDczRjUsIDB4NzNGNSwgMHgxRjkxLCAweDczRjYsIDB4NzNGNiwgMHgxRjhGLCAweDczRjcsIDB4NzNGNywgMHg0MjlBLAorICAgIDB4NzNGOCwgMHg3M0Y4LCAweDFGOTAsIDB4NzNGOSwgMHg3M0Y5LCAweDNCRjksIDB4NzNGQSwgMHg3M0ZBLCAweDFGOTcsCisgICAgMHg3M0ZCLCAweDczRkIsIDB4M0NBQywgMHg3M0ZDLCAweDczRkMsIDB4MUY5OCwgMHg3M0ZELCAweDczRkQsIDB4MUY5NCwKKyAgICAweDczRkUsIDB4NzNGRSwgMHgwQjI0LCAweDczRkYsIDB4NzNGRiwgMHgxRjk5LCAweDc0MDAsIDB4NzQwMCwgMHgxRjk2LAorICAgIDB4NzQwMSwgMHg3NDAxLCAweDFGOTMsIDB4NzQwMywgMHg3NDAzLCAweDBCMjIsIDB4NzQwNCwgMHg3NDA0LCAweDFGOTIsCisgICAgMHg3NDA1LCAweDc0MDUsIDB4MEIyMCwgMHg3NDA2LCAweDc0MDYsIDB4MEIyMywgMHg3NDA3LCAweDc0MDcsIDB4MUY5NSwKKyAgICAweDc0MDgsIDB4NzQwOCwgMHgxRjlELCAweDc0MDksIDB4NzQwOSwgMHgwOTJDLCAweDc0MEEsIDB4NzQwQSwgMHgwQjIxLAorICAgIDB4NzQwQiwgMHg3NDBCLCAweDFGOUIsIDB4NzQwQywgMHg3NDBDLCAweDFGOUEsIDB4NzQwRCwgMHg3NDBELCAweDBCMjUsCisgICAgMHg3NDExLCAweDc0MTEsIDB4NDU2QywgMHg3NDEyLCAweDc0MTIsIDB4M0JFNiwgMHg3NDE0LCAweDc0MTQsIDB4MzlGNCwKKyAgICAweDc0MTUsIDB4NzQxNSwgMHg0MjlCLCAweDc0MTYsIDB4NzQxNiwgMHgyMjE1LCAweDc0MTcsIDB4NzQxNywgMHg0MEFELAorICAgIDB4NzQxOSwgMHg3NDE5LCAweDQ2RjMsIDB4NzQxQSwgMHg3NDFBLCAweDIyMTYsIDB4NzQxQiwgMHg3NDFCLCAweDBDRTAsCisgICAgMHg3NDFDLCAweDc0MUMsIDB4MzhERCwgMHg3NDFELCAweDc0MUQsIDB4MjIxQywgMHg3NDFFLCAweDc0MUYsIDB4NDZGNCwKKyAgICAweDc0MjAsIDB4NzQyMCwgMHgyMjFFLCAweDc0MjEsIDB4NzQyMSwgMHgyMjE3LCAweDc0MjIsIDB4NzQyMiwgMHgwQ0RBLAorICAgIDB4NzQyMywgMHg3NDIzLCAweDIyMUIsIDB4NzQyNCwgMHg3NDI0LCAweDIyMUEsIDB4NzQyNSwgMHg3NDI1LCAweDBDREIsCisgICAgMHg3NDI2LCAweDc0MjYsIDB4MENFMSwgMHg3NDI4LCAweDc0MjgsIDB4MENFMiwgMHg3NDI5LCAweDc0MjksIDB4MjIxRCwKKyAgICAweDc0MkEsIDB4NzQyQSwgMHgwQ0Q4LCAweDc0MkIsIDB4NzQyQiwgMHgyMjE0LCAweDc0MkMsIDB4NzQyQywgMHgyMjEyLAorICAgIDB4NzQyRCwgMHg3NDJELCAweDIyMTgsIDB4NzQyRSwgMHg3NDJFLCAweDIyMTEsIDB4NzQyRiwgMHg3NDJGLCAweDBDREYsCisgICAgMHg3NDMwLCAweDc0MzAsIDB4MjIxMywgMHg3NDMxLCAweDc0MzEsIDB4MjIxOSwgMHg3NDMyLCAweDc0MzIsIDB4MjIxRiwKKyAgICAweDc0MzMsIDB4NzQzMywgMHgwQ0Q5LCAweDc0MzQsIDB4NzQzNCwgMHgwQ0RFLCAweDc0MzUsIDB4NzQzNiwgMHgwQ0RDLAorICAgIDB4NzQzNywgMHg3NDM3LCAweDNBRTEsIDB4NzQzOCwgMHg3NDM4LCAweDNCMDksIDB4NzQzOSwgMHg3NDM5LCAweDQyOUUsCisgICAgMHg3NDNBLCAweDc0M0EsIDB4MENENywgMHg3NDNDLCAweDc0M0MsIDB4M0FERiwgMHg3NDNGLCAweDc0M0YsIDB4MEU4MSwKKyAgICAweDc0NDAsIDB4NzQ0MCwgMHgyNEEwLCAweDc0NDEsIDB4NzQ0MSwgMHgwRTgwLCAweDc0NDIsIDB4NzQ0MiwgMHgyNEE0LAorICAgIDB4NzQ0MywgMHg3NDQzLCAweDNBMUEsIDB4NzQ0NCwgMHg3NDQ0LCAweDI0OUEsIDB4NzQ0NSwgMHg3NDQ1LCAweDNCRDcsCisgICAgMHg3NDQ2LCAweDc0NDYsIDB4MjRBNSwgMHg3NDQ3LCAweDc0NDcsIDB4NDJBNCwgMHg3NDQ4LCAweDc0NDgsIDB4M0NCNSwKKyAgICAweDc0NDksIDB4NzQ0OSwgMHg0MjkxLCAweDc0NEEsIDB4NzQ0QiwgMHgyNDlCLCAweDc0NEQsIDB4NzQ0RCwgMHgyNEE2LAorICAgIDB4NzQ0RSwgMHg3NDRFLCAweDI0QTMsIDB4NzQ0RiwgMHg3NDUwLCAweDI0QTEsIDB4NzQ1MSwgMHg3NDUxLCAweDI0OUUsCisgICAgMHg3NDUyLCAweDc0NTIsIDB4MjQ5RCwgMHg3NDUzLCAweDc0NTMsIDB4NDIzMSwgMHg3NDU0LCAweDc0NTQsIDB4MjRBNywKKyAgICAweDc0NTUsIDB4NzQ1NSwgMHgwRTdELCAweDc0NTYsIDB4NzQ1NiwgMHgzOUY1LCAweDc0NTcsIDB4NzQ1NywgMHgyNDlGLAorICAgIDB4NzQ1OSwgMHg3NDU5LCAweDBFODIsIDB4NzQ1QSwgMHg3NDVBLCAweDBFN0MsIDB4NzQ1QiwgMHg3NDVDLCAweDBFODMsCisgICAgMHg3NDVELCAweDc0NUQsIDB4NDJDNiwgMHg3NDVFLCAweDc0NUUsIDB4MEU3RiwgMHg3NDVGLCAweDc0NUYsIDB4MEU3RSwKKyAgICAweDc0NjAsIDB4NzQ2MCwgMHg0MkEyLCAweDc0NjIsIDB4NzQ2MiwgMHgyNzJCLCAweDc0NjMsIDB4NzQ2MywgMHgxMDJELAorICAgIDB4NzQ2NCwgMHg3NDY0LCAweDEwMkMsIDB4NzQ2NSwgMHg3NDY1LCAweDQxMDEsIDB4NzQ2NywgMHg3NDY3LCAweDI3MzAsCisgICAgMHg3NDY4LCAweDc0NjgsIDB4M0FFRSwgMHg3NDY5LCAweDc0NjksIDB4MTFBNiwgMHg3NDZBLCAweDc0NkEsIDB4MTAyRSwKKyAgICAweDc0NkIsIDB4NzQ2QiwgMHgzQkU3LCAweDc0NkMsIDB4NzQ2QywgMHg0MkE4LCAweDc0NkQsIDB4NzQ2RCwgMHgxMDMwLAorICAgIDB4NzQ2RSwgMHg3NDZFLCAweDI3MzEsIDB4NzQ2RiwgMHg3NDZGLCAweDBFN0IsIDB4NzQ3MCwgMHg3NDcwLCAweDEwMkYsCisgICAgMHg3NDcxLCAweDc0NzEsIDB4MjcyRCwgMHg3NDcyLCAweDc0NzIsIDB4MjcyRiwgMHg3NDczLCAweDc0NzMsIDB4MjcyQywKKyAgICAweDc0NzQsIDB4NzQ3NCwgMHg0MkE5LCAweDc0NzUsIDB4NzQ3NSwgMHgyNzJFLCAweDc0NzYsIDB4NzQ3NiwgMHg0MkE2LAorICAgIDB4NzQ3OSwgMHg3NDc5LCAweDI5N0MsIDB4NzQ3QSwgMHg3NDdBLCAweDNBRDEsIDB4NzQ3QywgMHg3NDdDLCAweDI5N0IsCisgICAgMHg3NDdELCAweDc0N0QsIDB4Mjk3OCwgMHg3NDdFLCAweDc0N0UsIDB4MTFBOSwgMHg3NDdGLCAweDc0N0YsIDB4MkJDQiwKKyAgICAweDc0ODAsIDB4NzQ4MCwgMHgxMUFBLCAweDc0ODEsIDB4NzQ4MSwgMHgyOTc3LCAweDc0ODIsIDB4NzQ4MiwgMHg0MkFDLAorICAgIDB4NzQ4MywgMHg3NDgzLCAweDExQTgsIDB4NzQ4NSwgMHg3NDg1LCAweDI5NzksIDB4NzQ4NiwgMHg3NDg2LCAweDI5NzYsCisgICAgMHg3NDg3LCAweDc0ODcsIDB4Mjk3MywgMHg3NDg4LCAweDc0ODgsIDB4Mjk3QSwgMHg3NDg5LCAweDc0OEEsIDB4Mjk3NCwKKyAgICAweDc0OEIsIDB4NzQ4QiwgMHgxMUE3LCAweDc0OEMsIDB4NzQ4QywgMHgzQTIxLCAweDc0OEQsIDB4NzQ4RCwgMHg0NjlELAorICAgIDB4NzQ5MCwgMHg3NDkwLCAweDJEQTgsIDB4NzQ5MiwgMHg3NDkyLCAweDJCQ0YsIDB4NzQ5NCwgMHg3NDk0LCAweDJCQ0UsCisgICAgMHg3NDk1LCAweDc0OTUsIDB4MkJEMCwgMHg3NDk3LCAweDc0OTcsIDB4MkRBNSwgMHg3NDk4LCAweDc0OTgsIDB4MTJGQywKKyAgICAweDc0OTksIDB4NzQ5OSwgMHgzOUYzLCAweDc0OUEsIDB4NzQ5QSwgMHgyQkNDLCAweDc0OUIsIDB4NzQ5QiwgMHgzQjBBLAorICAgIDB4NzQ5QywgMHg3NDlDLCAweDEyRkEsIDB4NzQ5RSwgMHg3NDlFLCAweDEyRkUsIDB4NzQ5RiwgMHg3NDlGLCAweDEyRkQsCisgICAgMHg3NEEwLCAweDc0QTAsIDB4MkJDRCwgMHg3NEExLCAweDc0QTEsIDB4MkJEMSwgMHg3NEEzLCAweDc0QTMsIDB4MTJGQiwKKyAgICAweDc0QTQsIDB4NzRBNCwgMHg0MTcwLCAweDc0QTUsIDB4NzRBNSwgMHgyREFDLCAweDc0QTYsIDB4NzRBNiwgMHgxNDEyLAorICAgIDB4NzRBNywgMHg3NEE3LCAweDE0RjQsIDB4NzRBOCwgMHg3NEE4LCAweDE0MTMsIDB4NzRBOSwgMHg3NEE5LCAweDE0MTAsCisgICAgMHg3NEFBLCAweDc0QUEsIDB4MkRBOSwgMHg3NEFCLCAweDc0QUIsIDB4MkRBNywgMHg3NEFELCAweDc0QUQsIDB4MkRBQSwKKyAgICAweDc0QUYsIDB4NzRBRiwgMHgyREFELCAweDc0QjAsIDB4NzRCMCwgMHgxNDExLCAweDc0QjEsIDB4NzRCMSwgMHgyREFCLAorICAgIDB4NzRCMiwgMHg3NEIyLCAweDJEQTYsIDB4NzRCNCwgMHg3NEI0LCAweDNDQTUsIDB4NzRCNSwgMHg3NEI1LCAweDJGNTgsCisgICAgMHg3NEI2LCAweDc0QjYsIDB4MkY1QiwgMHg3NEI3LCAweDc0QjcsIDB4MzBDMiwgMHg3NEI4LCAweDc0QjgsIDB4MkY1NiwKKyAgICAweDc0QkEsIDB4NzRCQSwgMHgzMUY5LCAweDc0QkIsIDB4NzRCQiwgMHgyRjVDLCAweDc0QkQsIDB4NzRCRCwgMHgxNTk3LAorICAgIDB4NzRCRSwgMHg3NEJFLCAweDJGNUEsIDB4NzRCRiwgMHg3NEJGLCAweDE0RjUsIDB4NzRDMCwgMHg3NEMwLCAweDJGNTcsCisgICAgMHg3NEMxLCAweDc0QzEsIDB4MkY1OSwgMHg3NEMyLCAweDc0QzIsIDB4MkY1RCwgMHg3NEMzLCAweDc0QzMsIDB4MzBDMywKKyAgICAweDc0QzUsIDB4NzRDNSwgMHgzMEMxLCAweDc0QzgsIDB4NzRDOCwgMHg0MkI1LCAweDc0Q0EsIDB4NzRDQSwgMHgxNTk4LAorICAgIDB4NzRDQiwgMHg3NENCLCAweDMwQzAsIDB4NzRDQywgMHg3NENDLCAweDNBREUsIDB4NzRDRiwgMHg3NENGLCAweDE2MjEsCisgICAgMHg3NEQwLCAweDc0RDAsIDB4M0E5QiwgMHg3NEQzLCAweDc0RDMsIDB4NDZGQSwgMHg3NEQ0LCAweDc0RDQsIDB4MTY3RSwKKyAgICAweDc0RDUsIDB4NzRENSwgMHgzMzkyLCAweDc0RDYsIDB4NzRENiwgMHgxNjdELCAweDc0RDcsIDB4NzRENywgMHgzMzk0LAorICAgIDB4NzREOCwgMHg3NEQ4LCAweDMzOTEsIDB4NzREOSwgMHg3NEQ5LCAweDMzOTMsIDB4NzREQSwgMHg3NERBLCAweDE2RkUsCisgICAgMHg3NERCLCAweDc0REIsIDB4MzQ4RCwgMHg3NERDLCAweDc0REMsIDB4MDM1OCwgMHg3NERELCAweDc0REQsIDB4MUEwRCwKKyAgICAweDc0REUsIDB4NzRERiwgMHgxRDRBLCAweDc0RTAsIDB4NzRFMCwgMHgwQjI2LCAweDc0RTEsIDB4NzRFMSwgMHgyNEE4LAorICAgIDB4NzRFMiwgMHg3NEUyLCAweDEyRkYsIDB4NzRFMywgMHg3NEUzLCAweDE1OTksIDB4NzRFNCwgMHg3NEU0LCAweDE2Q0IsCisgICAgMHg3NEU1LCAweDc0RTUsIDB4MzQ4RSwgMHg3NEU2LCAweDc0RTYsIDB4MDM1OSwgMHg3NEU3LCAweDc0RTcsIDB4M0ZGRSwKKyAgICAweDc0RTgsIDB4NzRFOCwgMHgxQTBFLCAweDc0RTksIDB4NzRFOSwgMHgwMTIwLCAweDc0RUMsIDB4NzRFQywgMHgxQjhFLAorICAgIDB4NzRFRSwgMHg3NEVFLCAweDFCOEYsIDB4NzRGMCwgMHg3NEYwLCAweDNGRTYsIDB4NzRGMSwgMHg3NEYxLCAweDNGOUIsCisgICAgMHg3NEYyLCAweDc0RjIsIDB4M0ZERiwgMHg3NEY0LCAweDc0RjUsIDB4MUQ0QywgMHg3NEY2LCAweDc0RjcsIDB4MEIyNywKKyAgICAweDc0RjgsIDB4NzRGOCwgMHgzRkY0LCAweDc0RkIsIDB4NzRGQiwgMHgyMjIwLCAweDc0RkQsIDB4NzRGRCwgMHgyNEFCLAorICAgIDB4NzRGRSwgMHg3NEZFLCAweDI0QUEsIDB4NzRGRiwgMHg3NEZGLCAweDI0QTksIDB4NzUwMCwgMHg3NTAwLCAweDI3MzIsCisgICAgMHg3NTAyLCAweDc1MDMsIDB4MjczMywgMHg3NTA0LCAweDc1MDQsIDB4MTAzMSwgMHg3NTA1LCAweDc1MDUsIDB4M0ZERSwKKyAgICAweDc1MDcsIDB4NzUwNywgMHgyOTdFLCAweDc1MDgsIDB4NzUwOCwgMHgyOTdELCAweDc1MEIsIDB4NzUwQiwgMHgyQkQyLAorICAgIDB4NzUwQywgMHg3NTBELCAweDEzMDAsIDB4NzUwRSwgMHg3NTBFLCAweDQyQjcsIDB4NzUwRiwgMHg3NTBGLCAweDJEQjEsCisgICAgMHg3NTEwLCAweDc1MTIsIDB4MkRBRSwgMHg3NTEzLCAweDc1MTMsIDB4MkY1RiwgMHg3NTE0LCAweDc1MTQsIDB4MkY1RSwKKyAgICAweDc1MTUsIDB4NzUxNSwgMHgxNEY2LCAweDc1MTYsIDB4NzUxNiwgMHgzMEM0LCAweDc1MTcsIDB4NzUxNywgMHgzMkUzLAorICAgIDB4NzUxOCwgMHg3NTE4LCAweDAzNUEsIDB4NzUxOSwgMHg3NTE5LCAweDQ1ODMsIDB4NzUxQSwgMHg3NTFBLCAweDA3OUYsCisgICAgMHg3NTFDLCAweDc1MUMsIDB4MEIyOSwgMHg3NTFELCAweDc1MUQsIDB4MjRBQywgMHg3NTFFLCAweDc1MUUsIDB4NDJCOCwKKyAgICAweDc1MUYsIDB4NzUxRiwgMHgwMzVCLCAweDc1MjEsIDB4NzUyMSwgMHgxRDRFLCAweDc1MjIsIDB4NzUyMiwgMHgwQjJBLAorICAgIDB4NzUyNSwgMHg3NTI2LCAweDBDRTMsIDB4NzUyOCwgMHg3NTI5LCAweDAzNUMsIDB4NzUyQSwgMHg3NTJBLCAweDE4MEYsCisgICAgMHg3NTJCLCAweDc1MkIsIDB4MDRGMSwgMHg3NTJDLCAweDc1MkMsIDB4MDRGMCwgMHg3NTJELCAweDc1MkQsIDB4MDdBMCwKKyAgICAweDc1MkUsIDB4NzUyRSwgMHgxQjkwLCAweDc1MkYsIDB4NzUyRiwgMHgyMjIxLCAweDc1MzAsIDB4NzUzMywgMHgwMzVFLAorICAgIDB4NzUzNCwgMHg3NTM0LCAweDNFODcsIDB4NzUzNSwgMHg3NTM1LCAweDQ1NUEsIDB4NzUzNywgMHg3NTM4LCAweDA0RjIsCisgICAgMHg3NTM5LCAweDc1MzksIDB4MThEMywgMHg3NTNBLCAweDc1M0EsIDB4MThEMiwgMHg3NTNCLCAweDc1M0IsIDB4M0RGQiwKKyAgICAweDc1M0QsIDB4NzUzRCwgMHgwNjU1LCAweDc1M0UsIDB4NzUzRSwgMHgxQTExLCAweDc1M0YsIDB4NzU0MCwgMHgxQTBGLAorICAgIDB4NzU0MiwgMHg3NTQyLCAweDQzQ0QsIDB4NzU0NiwgMHg3NTQ2LCAweDNGNDAsIDB4NzU0NywgMHg3NTQ4LCAweDFCOTEsCisgICAgMHg3NTRBLCAweDc1NEEsIDB4NDJCRiwgMHg3NTRCLCAweDc1NEIsIDB4MDdBNCwgMHg3NTRDLCAweDc1NEMsIDB4MDdBMiwKKyAgICAweDc1NEQsIDB4NzU0RCwgMHg0MkJFLCAweDc1NEUsIDB4NzU0RSwgMHgwN0EzLCAweDc1NEYsIDB4NzU0RiwgMHgwN0ExLAorICAgIDB4NzU1MSwgMHg3NTUxLCAweDNDRkUsIDB4NzU1MywgMHg3NTUzLCAweDNGRUIsIDB4NzU1NCwgMHg3NTU0LCAweDA5MzEsCisgICAgMHg3NTU1LCAweDc1NTUsIDB4M0FFQSwgMHg3NTU5LCAweDc1NTksIDB4MDkzNSwgMHg3NTVBLCAweDc1NUEsIDB4MDkzNCwKKyAgICAweDc1NUIsIDB4NzU1QiwgMHgxRDRGLCAweDc1NUMsIDB4NzU1QywgMHgwOTMzLCAweDc1NUQsIDB4NzU1RCwgMHgwOTMyLAorICAgIDB4NzU1RiwgMHg3NTVGLCAweDFENTAsIDB4NzU2MCwgMHg3NTYwLCAweDNENzEsIDB4NzU2MiwgMHg3NTYyLCAweDBCMkQsCisgICAgMHg3NTYzLCAweDc1NjMsIDB4MUY5RiwgMHg3NTY0LCAweDc1NjQsIDB4MUY5RSwgMHg3NTY1LCAweDc1NjYsIDB4MEIyQiwKKyAgICAweDc1NjcsIDB4NzU2NywgMHg0MkMwLCAweDc1NkEsIDB4NzU2QSwgMHgwQ0U2LCAweDc1NkIsIDB4NzU2QiwgMHgwQ0U1LAorICAgIDB4NzU2QywgMHg3NTZDLCAweDIyMjMsIDB4NzU2RCwgMHg3NTZELCAweDQ2RkQsIDB4NzU2RSwgMHg3NTZFLCAweDQyQzEsCisgICAgMHg3NTZGLCAweDc1NkYsIDB4MjIyMiwgMHg3NTcwLCAweDc1NzAsIDB4MEIyRSwgMHg3NTcyLCAweDc1NzIsIDB4NDZGRSwKKyAgICAweDc1NzYsIDB4NzU3NiwgMHgwRTg1LCAweDc1NzcsIDB4NzU3NywgMHgyNEFFLCAweDc1NzgsIDB4NzU3OCwgMHgwRTg2LAorICAgIDB4NzU3OSwgMHg3NTc5LCAweDI0QUQsIDB4NzU3QSwgMHg3NTdBLCAweDNGNEYsIDB4NzU3RCwgMHg3NTdELCAweDI3MzUsCisgICAgMHg3NTdFLCAweDc1N0UsIDB4Mjk3RiwgMHg3NTdGLCAweDc1N0YsIDB4MTFBQiwgMHg3NTgwLCAweDc1ODAsIDB4MkJEMywKKyAgICAweDc1ODMsIDB4NzU4MywgMHgzQUU1LCAweDc1ODQsIDB4NzU4NCwgMHgyREIyLCAweDc1ODYsIDB4NzU4NiwgMHgxNTlCLAorICAgIDB4NzU4NywgMHg3NTg3LCAweDE1OUEsIDB4NzU4QSwgMHg3NThBLCAweDE2Q0MsIDB4NzU4QiwgMHg3NThCLCAweDAzNjIsCisgICAgMHg3NThDLCAweDc1OEMsIDB4MUExMiwgMHg3NThELCAweDc1OEQsIDB4NDZGRiwgMHg3NThFLCAweDc1OEUsIDB4NDJDNSwKKyAgICAweDc1OEYsIDB4NzU4RiwgMHgwQjJGLCAweDc1OTAsIDB4NzU5MCwgMHgyNzM2LCAweDc1OTEsIDB4NzU5MSwgMHgxMDMyLAorICAgIDB4NzU5MiwgMHg3NTkyLCAweDAyMkUsIDB4NzU5NCwgMHg3NTk1LCAweDE4RDQsIDB4NzU5OCwgMHg3NTk4LCAweDFBMTMsCisgICAgMHg3NTk5LCAweDc1OUEsIDB4MDY1NywgMHg3NTlELCAweDc1OUQsIDB4MDY1NiwgMHg3NTlFLCAweDc1OUUsIDB4NDJDNywKKyAgICAweDc1QTIsIDB4NzVBMywgMHgwN0E4LCAweDc1QTQsIDB4NzVBNSwgMHgwN0E2LCAweDc1QTcsIDB4NzVBNywgMHgxQjkzLAorICAgIDB4NzVBQSwgMHg3NUFBLCAweDFCOTQsIDB4NzVBQiwgMHg3NUFCLCAweDA3QTUsIDB4NzVCMCwgMHg3NUIwLCAweDFENTEsCisgICAgMHg3NUIxLCAweDc1QjEsIDB4M0VBRCwgMHg3NUIyLCAweDc1QjMsIDB4MDkzOSwgMHg3NUI0LCAweDc1QjQsIDB4NDJDOCwKKyAgICAweDc1QjUsIDB4NzVCNSwgMHgwQjMyLCAweDc1QjYsIDB4NzVCNiwgMHgxRDU3LCAweDc1QjgsIDB4NzVCOCwgMHgwOTNGLAorICAgIDB4NzVCOSwgMHg3NUI5LCAweDA5M0QsIDB4NzVCQSwgMHg3NUJBLCAweDFENTgsIDB4NzVCQiwgMHg3NUJCLCAweDFENTMsCisgICAgMHg3NUJDLCAweDc1QkMsIDB4MDkzQywgMHg3NUJELCAweDc1QkQsIDB4MDkzQiwgMHg3NUJFLCAweDc1QkUsIDB4MDkzNiwKKyAgICAweDc1QkYsIDB4NzVCRiwgMHgxRDU2LCAweDc1QzAsIDB4NzVDMCwgMHgxRDU1LCAweDc1QzEsIDB4NzVDMSwgMHgxRDUyLAorICAgIDB4NzVDMiwgMHg3NUMyLCAweDA5M0UsIDB4NzVDMywgMHg3NUMzLCAweDNGOTMsIDB4NzVDNCwgMHg3NUM0LCAweDFENTQsCisgICAgMHg3NUM1LCAweDc1QzUsIDB4MDkzNywgMHg3NUM3LCAweDc1QzcsIDB4MDkzOCwgMHg3NUM4LCAweDc1QzgsIDB4NDcwMSwKKyAgICAweDc1Q0EsIDB4NzVDQSwgMHgwQjMzLCAweDc1Q0IsIDB4NzVDQywgMHgxRkEzLCAweDc1Q0QsIDB4NzVDRCwgMHgwQjM0LAorICAgIDB4NzVDRSwgMHg3NUNFLCAweDFGQTAsIDB4NzVDRiwgMHg3NUNGLCAweDFGQTIsIDB4NzVEMCwgMHg3NUQwLCAweDFGQTYsCisgICAgMHg3NUQxLCAweDc1RDEsIDB4MUZBNSwgMHg3NUQyLCAweDc1RDIsIDB4MUZBMSwgMHg3NUQ0LCAweDc1RDUsIDB4MEIzMCwKKyAgICAweDc1RDcsIDB4NzVENywgMHgyMjJCLCAweDc1RDgsIDB4NzVEOCwgMHgwQ0VCLCAweDc1RDksIDB4NzVEOSwgMHgwQ0VBLAorICAgIDB4NzVEQSwgMHg3NURBLCAweDIyMjUsIDB4NzVEQiwgMHg3NURCLCAweDBDRTgsIDB4NzVEQywgMHg3NURDLCAweDQzQ0UsCisgICAgMHg3NURELCAweDc1REQsIDB4MjIyOCwgMHg3NURFLCAweDc1REUsIDB4MENFQywgMHg3NURGLCAweDc1REYsIDB4MjIyOSwKKyAgICAweDc1RTAsIDB4NzVFMCwgMHgwQ0VELCAweDc1RTEsIDB4NzVFMSwgMHgyMjI2LCAweDc1RTIsIDB4NzVFMiwgMHgwQ0U3LAorICAgIDB4NzVFMywgMHg3NUUzLCAweDBDRTksIDB4NzVFNCwgMHg3NUU0LCAweDIyMkEsIDB4NzVFNiwgMHg3NUU2LCAweDIyMjcsCisgICAgMHg3NUU3LCAweDc1RTcsIDB4MjIyNCwgMHg3NUVELCAweDc1RUQsIDB4MjRCQiwgMHg3NUVGLCAweDc1RUYsIDB4MjRCMCwKKyAgICAweDc1RjAsIDB4NzVGMCwgMHgwRTg4LCAweDc1RjEsIDB4NzVGMSwgMHgwRThCLCAweDc1RjIsIDB4NzVGMiwgMHgwRThBLAorICAgIDB4NzVGMywgMHg3NUYzLCAweDBFOEYsIDB4NzVGNCwgMHg3NUY0LCAweDBFOEUsIDB4NzVGNSwgMHg3NUY1LCAweDI0QkMsCisgICAgMHg3NUY2LCAweDc1RjYsIDB4MjRCQSwgMHg3NUY3LCAweDc1RjcsIDB4MjRCMywgMHg3NUY4LCAweDc1RjgsIDB4MjRCNywKKyAgICAweDc1RjksIDB4NzVGOSwgMHgyNEI2LCAweDc1RkEsIDB4NzVGQSwgMHgwRThDLCAweDc1RkIsIDB4NzVGQiwgMHgyNEI5LAorICAgIDB4NzVGQywgMHg3NUZDLCAweDI0QjUsIDB4NzVGRCwgMHg3NUZELCAweDI0QkQsIDB4NzVGRSwgMHg3NUZFLCAweDI0QjQsCisgICAgMHg3NUZGLCAweDc1RkYsIDB4MEU4RCwgMHg3NjAwLCAweDc2MDAsIDB4MEU4NywgMHg3NjAxLCAweDc2MDEsIDB4MEU4OSwKKyAgICAweDc2MDIsIDB4NzYwMiwgMHg0MkM5LCAweDc2MDMsIDB4NzYwMywgMHgyNEIyLCAweDc2MDcsIDB4NzYwNywgMHgzRjhGLAorICAgIDB4NzYwOCwgMHg3NjA4LCAweDI3MzgsIDB4NzYwOSwgMHg3NjA5LCAweDEwMzYsIDB4NzYwQSwgMHg3NjBBLCAweDI3M0MsCisgICAgMHg3NjBCLCAweDc2MEIsIDB4MTAzNSwgMHg3NjBDLCAweDc2MEMsIDB4MjczOSwgMHg3NjBELCAweDc2MEQsIDB4MTAzNCwKKyAgICAweDc2MEYsIDB4NzYwRiwgMHgyNEIxLCAweDc2MTAsIDB4NzYxMCwgMHgyNEI4LCAweDc2MTEsIDB4NzYxMSwgMHgyNzNCLAorICAgIDB4NzYxMywgMHg3NjEzLCAweDEwMzcsIDB4NzYxNCwgMHg3NjE0LCAweDI3M0QsIDB4NzYxNSwgMHg3NjE1LCAweDI3M0EsCisgICAgMHg3NjE2LCAweDc2MTYsIDB4MjczNywgMHg3NjE5LCAweDc2MTksIDB4Mjk4MiwgMHg3NjFBLCAweDc2MUEsIDB4Mjk4NiwKKyAgICAweDc2MUIsIDB4NzYxQiwgMHgyOTg4LCAweDc2MUMsIDB4NzYxQywgMHgyOTg0LCAweDc2MUQsIDB4NzYxRCwgMHgyOTgzLAorICAgIDB4NzYxRSwgMHg3NjFFLCAweDI5ODEsIDB4NzYxRiwgMHg3NjFGLCAweDExQUUsIDB4NzYyMCwgMHg3NjIwLCAweDExQUMsCisgICAgMHg3NjIxLCAweDc2MjIsIDB4MTFCMSwgMHg3NjIzLCAweDc2MjMsIDB4Mjk4NSwgMHg3NjI0LCAweDc2MjQsIDB4MTFBRiwKKyAgICAweDc2MjUsIDB4NzYyNSwgMHgyOTgwLCAweDc2MjYsIDB4NzYyNiwgMHgxMUIwLCAweDc2MjcsIDB4NzYyNywgMHgxMDMzLAorICAgIDB4NzYyOCwgMHg3NjI4LCAweDI5ODcsIDB4NzYyOSwgMHg3NjI5LCAweDExQUQsIDB4NzYyQywgMHg3NjJDLCAweDQyQ0EsCisgICAgMHg3NjJELCAweDc2MkQsIDB4MkJENSwgMHg3NjJGLCAweDc2MkYsIDB4MkJENCwgMHg3NjMwLCAweDc2MzAsIDB4MkJEQywKKyAgICAweDc2MzEsIDB4NzYzMSwgMHgyQkQ2LCAweDc2MzIsIDB4NzYzMiwgMHgyQkRCLCAweDc2MzMsIDB4NzYzMywgMHgyQkQ4LAorICAgIDB4NzYzNCwgMHg3NjM0LCAweDEzMDIsIDB4NzYzNSwgMHg3NjM1LCAweDJCREEsIDB4NzYzOCwgMHg3NjM4LCAweDEzMDMsCisgICAgMHg3NjNBLCAweDc2M0EsIDB4MTMwNCwgMHg3NjNCLCAweDc2M0IsIDB4M0U3MCwgMHg3NjNDLCAweDc2M0MsIDB4MkJEOSwKKyAgICAweDc2M0QsIDB4NzYzRCwgMHgyQkQ3LCAweDc2NDAsIDB4NzY0MCwgMHgzRUU2LCAweDc2NDIsIDB4NzY0MiwgMHgxNDE1LAorICAgIDB4NzY0MywgMHg3NjQzLCAweDJEQjMsIDB4NzY0NiwgMHg3NjQ2LCAweDE0MTQsIDB4NzY0NywgMHg3NjQ3LCAweDJEQjYsCisgICAgMHg3NjQ4LCAweDc2NDksIDB4MkRCNCwgMHg3NjRDLCAweDc2NEMsIDB4MTQxNiwgMHg3NjRELCAweDc2NEQsIDB4NDcwMiwKKyAgICAweDc2NEUsIDB4NzY0RSwgMHgzRTcyLCAweDc2NEYsIDB4NzY0RiwgMHg0MkNDLCAweDc2NTAsIDB4NzY1MCwgMHgyRjYzLAorICAgIDB4NzY1MSwgMHg3NjUxLCAweDQyQ0IsIDB4NzY1MiwgMHg3NjUyLCAweDE0RjksIDB4NzY1MywgMHg3NjUzLCAweDJGNjQsCisgICAgMHg3NjU0LCAweDc2NTQsIDB4M0VGMCwgMHg3NjU2LCAweDc2NTYsIDB4MTRGNywgMHg3NjU3LCAweDc2NTcsIDB4MkY2NSwKKyAgICAweDc2NTgsIDB4NzY1OCwgMHgxNEY4LCAweDc2NTksIDB4NzY1OSwgMHgyRjYyLCAweDc2NUEsIDB4NzY1QSwgMHgyRjY2LAorICAgIDB4NzY1QywgMHg3NjVDLCAweDJGNjAsIDB4NzY1RiwgMHg3NjVGLCAweDE1OUMsIDB4NzY2MCwgMHg3NjYwLCAweDMwQzUsCisgICAgMHg3NjYxLCAweDc2NjEsIDB4MTU5RCwgMHg3NjYyLCAweDc2NjIsIDB4MTYyMiwgMHg3NjY0LCAweDc2NjQsIDB4MkY2MSwKKyAgICAweDc2NjUsIDB4NzY2NSwgMHgxNjIzLCAweDc2NjYsIDB4NzY2NiwgMHgzRUFBLCAweDc2NjcsIDB4NzY2NywgMHgzRkE5LAorICAgIDB4NzY2OSwgMHg3NjY5LCAweDE2N0YsIDB4NzY2QSwgMHg3NjZBLCAweDMyRTQsIDB4NzY2QywgMHg3NjZDLCAweDE2Q0UsCisgICAgMHg3NjZELCAweDc2NkQsIDB4MzM5NSwgMHg3NjZFLCAweDc2NkUsIDB4MTZDRCwgMHg3NjZGLCAweDc2NkYsIDB4NDJDRCwKKyAgICAweDc2NzAsIDB4NzY3MCwgMHgzNDI4LCAweDc2NzEsIDB4NzY3MiwgMHgxNzIzLCAweDc2NzMsIDB4NzY3MywgMHgzQUVCLAorICAgIDB4NzY3NCwgMHg3Njc0LCAweDQ3MDMsIDB4NzY3NSwgMHg3Njc1LCAweDM1NDMsIDB4NzY3NiwgMHg3Njc2LCAweDAyMkYsCisgICAgMHg3Njc4LCAweDc2NzgsIDB4MDdBQSwgMHg3Njc5LCAweDc2NzksIDB4MUI5NSwgMHg3NjdBLCAweDc2N0EsIDB4NDcwNSwKKyAgICAweDc2N0IsIDB4NzY3QywgMHgwQ0VFLCAweDc2N0QsIDB4NzY3RCwgMHgwMzYzLCAweDc2N0UsIDB4NzY3RSwgMHgwM0Y1LAorICAgIDB4NzY3RiwgMHg3NjdGLCAweDE4MTAsIDB4NzY4MCwgMHg3NjgwLCAweDQzRDMsIDB4NzY4MSwgMHg3NjgxLCAweDE4RDYsCisgICAgMHg3NjgyLCAweDc2ODIsIDB4MDRGNCwgMHg3Njg0LCAweDc2ODQsIDB4MDY1OSwgMHg3Njg2LCAweDc2ODgsIDB4MDdBQiwKKyAgICAweDc2ODksIDB4NzY4OSwgMHgxRkE4LCAweDc2OEEsIDB4NzY4QSwgMHgxRDU5LCAweDc2OEIsIDB4NzY4QiwgMHgwOTQwLAorICAgIDB4NzY4QywgMHg3NjhDLCAweDQzRDQsIDB4NzY4RSwgMHg3NjhFLCAweDBCMzUsIDB4NzY4RiwgMHg3NjhGLCAweDFGQTcsCisgICAgMHg3NjkwLCAweDc2OTAsIDB4NDJEMCwgMHg3NjkyLCAweDc2OTIsIDB4MjIyRCwgMHg3NjkzLCAweDc2OTMsIDB4MENGMSwKKyAgICAweDc2OTUsIDB4NzY5NSwgMHgyMjJDLCAweDc2OTYsIDB4NzY5NiwgMHgwQ0YwLCAweDc2OTksIDB4NzY5OSwgMHgyNEJFLAorICAgIDB4NzY5QSwgMHg3NjlBLCAweDExQjMsIDB4NzY5QiwgMHg3NjlCLCAweDI5OEMsIDB4NzY5QywgMHg3NjlFLCAweDI5ODksCisgICAgMHg3NkExLCAweDc2QTEsIDB4NDJENSwgMHg3NkE0LCAweDc2QTQsIDB4MkRCNywgMHg3NkE1LCAweDc2QTUsIDB4NDJENiwKKyAgICAweDc2QTYsIDB4NzZBNiwgMHgyRjY3LCAweDc2QUEsIDB4NzZBQSwgMHgzMUZCLCAweDc2QUIsIDB4NzZBQiwgMHgzMUZBLAorICAgIDB4NzZBRCwgMHg3NkFELCAweDMzOTYsIDB4NzZBRSwgMHg3NkFFLCAweDAzNjQsIDB4NzZBRiwgMHg3NkFGLCAweDFBMTQsCisgICAgMHg3NkIwLCAweDc2QjAsIDB4MDk0MSwgMHg3NkI0LCAweDc2QjQsIDB4MENGMiwgMHg3NkI1LCAweDc2QjUsIDB4MjRCRiwKKyAgICAweDc2QjcsIDB4NzZCNywgMHg0MkQ3LCAweDc2QjgsIDB4NzZCOCwgMHgyNzNFLCAweDc2QkEsIDB4NzZCQSwgMHgxMUI0LAorICAgIDB4NzZCQiwgMHg3NkJCLCAweDJCREQsIDB4NzZCRCwgMHg3NkJELCAweDJGNjgsIDB4NzZCRSwgMHg3NkJFLCAweDMxRkMsCisgICAgMHg3NkJGLCAweDc2QkYsIDB4MDM2NSwgMHg3NkMyLCAweDc2QzIsIDB4MDY1QSwgMHg3NkMzLCAweDc2QzMsIDB4MDdCMCwKKyAgICAweDc2QzQsIDB4NzZDNCwgMHgxQjk2LCAweDc2QzUsIDB4NzZDNSwgMHgwN0IxLCAweDc2QzYsIDB4NzZDNiwgMHgwN0FGLAorICAgIDB4NzZDOCwgMHg3NkM4LCAweDA3QUUsIDB4NzZDOSwgMHg3NkM5LCAweDFENUEsIDB4NzZDQSwgMHg3NkNBLCAweDA5NDIsCisgICAgMHg3NkNDLCAweDc2Q0MsIDB4NDJEOCwgMHg3NkNELCAweDc2Q0UsIDB4MDk0MywgMHg3NkQyLCAweDc2RDIsIDB4MEIzNywKKyAgICAweDc2RDMsIDB4NzZEMywgMHgxRkE5LCAweDc2RDQsIDB4NzZENCwgMHgwQjM2LCAweDc2RDYsIDB4NzZENiwgMHgzRjU1LAorICAgIDB4NzZEQSwgMHg3NkRBLCAweDIyMkUsIDB4NzZEQiwgMHg3NkRCLCAweDBCMzgsIDB4NzZEQywgMHg3NkRDLCAweDBDRjMsCisgICAgMHg3NkRELCAweDc2REQsIDB4MjRDMCwgMHg3NkRFLCAweDc2REYsIDB4MEU5MCwgMHg3NkUxLCAweDc2RTEsIDB4MTAzOCwKKyAgICAweDc2RTMsIDB4NzZFMywgMHgxMDM5LCAweDc2RTQsIDB4NzZFNCwgMHgxMUI1LCAweDc2RTUsIDB4NzZFNSwgMHgxMzA2LAorICAgIDB4NzZFNiwgMHg3NkU2LCAweDJCREUsIDB4NzZFNywgMHg3NkU3LCAweDEzMDUsIDB4NzZFOSwgMHg3NkU5LCAweDJEQjgsCisgICAgMHg3NkVBLCAweDc2RUEsIDB4MTQxNywgMHg3NkVDLCAweDc2RUMsIDB4MkY2OSwgMHg3NkVELCAweDc2RUQsIDB4MzFGRCwKKyAgICAweDc2RUUsIDB4NzZFRSwgMHgwMzY2LCAweDc2RUYsIDB4NzZFRiwgMHgwNEY1LCAweDc2RjAsIDB4NzZGMCwgMHgxQTE3LAorICAgIDB4NzZGMSwgMHg3NkYxLCAweDFBMTYsIDB4NzZGMiwgMHg3NkYyLCAweDA2NUIsIDB4NzZGMywgMHg3NkYzLCAweDFBMTUsCisgICAgMHg3NkY0LCAweDc2RjQsIDB4MDY1QywgMHg3NkY1LCAweDc2RjUsIDB4MUExOCwgMHg3NkY3LCAweDc2RjcsIDB4MUI5QywKKyAgICAweDc2RjgsIDB4NzZGOCwgMHgwN0I0LCAweDc2RjksIDB4NzZGOSwgMHgwN0IzLCAweDc2RkEsIDB4NzZGQSwgMHgxQjlFLAorICAgIDB4NzZGQiwgMHg3NkZCLCAweDFCOUQsIDB4NzZGQywgMHg3NkZDLCAweDA3QjgsIDB4NzZGRSwgMHg3NkZFLCAweDA3QjcsCisgICAgMHg3NzAxLCAweDc3MDEsIDB4MDdCMiwgMHg3NzAzLCAweDc3MDUsIDB4MUI5OCwgMHg3NzA3LCAweDc3MDcsIDB4MDdCOSwKKyAgICAweDc3MDgsIDB4NzcwOCwgMHgxQjk3LCAweDc3MDksIDB4NzcwOSwgMHgwN0I1LCAweDc3MEEsIDB4NzcwQSwgMHgxQjlCLAorICAgIDB4NzcwQiwgMHg3NzBCLCAweDA3QjYsIDB4NzcwQywgMHg3NzBDLCAweDNENjIsIDB4NzcwRSwgMHg3NzBGLCAweDNCMDIsCisgICAgMHg3NzEwLCAweDc3MTAsIDB4MUQ1RCwgMHg3NzExLCAweDc3MTEsIDB4MUQ2MSwgMHg3NzEyLCAweDc3MTIsIDB4MUQ1RiwKKyAgICAweDc3MTMsIDB4NzcxMywgMHgxRDVFLCAweDc3MTUsIDB4NzcxNSwgMHgxRDYyLCAweDc3MTksIDB4NzcxQSwgMHgxRDYzLAorICAgIDB4NzcxQiwgMHg3NzFCLCAweDFENUMsIDB4NzcxRCwgMHg3NzFELCAweDFENUIsIDB4NzcxRSwgMHg3NzFFLCAweDQyREUsCisgICAgMHg3NzFGLCAweDc3MjAsIDB4MDk0NiwgMHg3NzIyLCAweDc3MjIsIDB4MUQ2NSwgMHg3NzIzLCAweDc3MjMsIDB4MUQ2MCwKKyAgICAweDc3MjQsIDB4NzcyNCwgMHgzRkU4LCAweDc3MjUsIDB4NzcyNSwgMHgxRkIyLCAweDc3MjYsIDB4NzcyNiwgMHg0MkRGLAorICAgIDB4NzcyNywgMHg3NzI3LCAweDFENjYsIDB4NzcyOCwgMHg3NzI4LCAweDA5NDgsIDB4NzcyOSwgMHg3NzI5LCAweDA5NDUsCisgICAgMHg3NzJCLCAweDc3MkIsIDB4M0ZGMywgMHg3NzJELCAweDc3MkQsIDB4MUZBQywgMHg3NzJGLCAweDc3MkYsIDB4MUZBQiwKKyAgICAweDc3MzEsIDB4NzczMiwgMHgxRkFELCAweDc3MzMsIDB4NzczMywgMHgxRkIwLCAweDc3MzQsIDB4NzczNCwgMHgxRkFGLAorICAgIDB4NzczNSwgMHg3NzM1LCAweDFGQjQsIDB4NzczNiwgMHg3NzM2LCAweDBCM0MsIDB4NzczNywgMHg3NzM3LCAweDBCMzksCisgICAgMHg3NzM4LCAweDc3MzgsIDB4MEIzRCwgMHg3NzM5LCAweDc3MzksIDB4MUZBQSwgMHg3NzNBLCAweDc3M0EsIDB4MEIzRSwKKyAgICAweDc3M0IsIDB4NzczQiwgMHgxRkIzLCAweDc3M0MsIDB4NzczQywgMHgwQjNCLCAweDc3M0QsIDB4NzczRCwgMHgxRkIxLAorICAgIDB4NzczRSwgMHg3NzNFLCAweDBCM0EsIDB4Nzc0MCwgMHg3NzQwLCAweDQyRTAsIDB4Nzc0MywgMHg3NzQzLCAweDQ3MEEsCisgICAgMHg3NzQ0LCAweDc3NDQsIDB4MjIzMSwgMHg3NzQ1LCAweDc3NDUsIDB4MjIzMywgMHg3NzQ2LCAweDc3NDcsIDB4MjIyRiwKKyAgICAweDc3NEEsIDB4Nzc0QSwgMHgyMjM0LCAweDc3NEIsIDB4Nzc0QywgMHgyMjM2LCAweDc3NEQsIDB4Nzc0RCwgMHgyMjMyLAorICAgIDB4Nzc0RSwgMHg3NzRFLCAweDIyMzUsIDB4Nzc0RiwgMHg3NzRGLCAweDBDRjQsIDB4Nzc1MiwgMHg3NzUyLCAweDI0QzQsCisgICAgMHg3NzU0LCAweDc3NTQsIDB4MjRDOSwgMHg3NzU1LCAweDc3NTUsIDB4MjRDMSwgMHg3NzU2LCAweDc3NTYsIDB4MjRDNSwKKyAgICAweDc3NTgsIDB4Nzc1OCwgMHg0MkUzLCAweDc3NTksIDB4Nzc1OSwgMHgyNENBLCAweDc3NUEsIDB4Nzc1QSwgMHgyNEM2LAorICAgIDB4Nzc1QiwgMHg3NzVCLCAweDBFOTIsIDB4Nzc1QywgMHg3NzVDLCAweDBFOUEsIDB4Nzc1RSwgMHg3NzVFLCAweDBFOTUsCisgICAgMHg3NzVGLCAweDc3NjAsIDB4MjRDMiwgMHg3NzYxLCAweDc3NjEsIDB4MTAzRCwgMHg3NzYyLCAweDc3NjIsIDB4MEU5RCwKKyAgICAweDc3NjMsIDB4Nzc2MywgMHgwRTk2LCAweDc3NjUsIDB4Nzc2NSwgMHgwRTlCLCAweDc3NjYsIDB4Nzc2NiwgMHgwRTk0LAorICAgIDB4Nzc2NywgMHg3NzY3LCAweDI0QzgsIDB4Nzc2OCwgMHg3NzY4LCAweDBFOUMsIDB4Nzc2OSwgMHg3NzY5LCAweDI0QzcsCisgICAgMHg3NzZBLCAweDc3NkEsIDB4MEU5OCwgMHg3NzZCLCAweDc3NkIsIDB4MEU5MywgMHg3NzZDLCAweDc3NkMsIDB4MEU5OSwKKyAgICAweDc3NkQsIDB4Nzc2RCwgMHgyNENCLCAweDc3NkUsIDB4Nzc2RSwgMHgyNzQzLCAweDc3NkYsIDB4Nzc2RiwgMHgyNzQ1LAorICAgIDB4Nzc3MiwgMHg3NzcyLCAweDM5NkIsIDB4Nzc3NywgMHg3Nzc3LCAweDQ2QTksIDB4Nzc3OCwgMHg3Nzc4LCAweDNCMDAsCisgICAgMHg3Nzc5LCAweDc3NzksIDB4MEU5NywgMHg3NzdBLCAweDc3N0EsIDB4NDMxNywgMHg3NzdCLCAweDc3N0IsIDB4M0IwNCwKKyAgICAweDc3N0MsIDB4Nzc3QywgMHgyNzQwLCAweDc3N0QsIDB4Nzc3RCwgMHgxMDNCLCAweDc3N0UsIDB4Nzc3RSwgMHgyNzQ2LAorICAgIDB4Nzc3RiwgMHg3NzdGLCAweDEwM0MsIDB4Nzc4MCwgMHg3NzgwLCAweDI3NDQsIDB4Nzc4MSwgMHg3NzgxLCAweDI3M0YsCisgICAgMHg3NzgyLCAweDc3ODIsIDB4Mjc0MiwgMHg3NzgzLCAweDc3ODMsIDB4Mjc0NywgMHg3Nzg0LCAweDc3ODQsIDB4MTAzQSwKKyAgICAweDc3ODUsIDB4Nzc4NSwgMHgyNzQxLCAweDc3ODcsIDB4Nzc4NywgMHgxMUI3LCAweDc3ODgsIDB4Nzc4OCwgMHgyOTkwLAorICAgIDB4Nzc4OSwgMHg3Nzg5LCAweDI5OEYsIDB4Nzc4QiwgMHg3NzhCLCAweDExQkEsIDB4Nzc4QywgMHg3NzhDLCAweDExQjgsCisgICAgMHg3NzhELCAweDc3OEQsIDB4Mjk4RCwgMHg3NzhFLCAweDc3OEUsIDB4MTFCNiwgMHg3NzhGLCAweDc3OEYsIDB4Mjk4RSwKKyAgICAweDc3OTEsIDB4Nzc5MSwgMHgxMUI5LCAweDc3OTMsIDB4Nzc5MywgMHgzODJELCAweDc3OTUsIDB4Nzc5NSwgMHgyQkU2LAorICAgIDB4Nzc5NywgMHg3Nzk3LCAweDJCRTgsIDB4Nzc5OCwgMHg3Nzk4LCAweDQ3MEUsIDB4Nzc5OSwgMHg3Nzk5LCAweDJCRTcsCisgICAgMHg3NzlBLCAweDc3OUEsIDB4MkJERiwgMHg3NzlCLCAweDc3OUIsIDB4MkJFMywgMHg3NzlDLCAweDc3OUMsIDB4MkJFMiwKKyAgICAweDc3OUQsIDB4Nzc5RCwgMHgyQkUwLCAweDc3OUUsIDB4Nzc5RiwgMHgxMzA4LCAweDc3QTAsIDB4NzdBMCwgMHgxMzA3LAorICAgIDB4NzdBMSwgMHg3N0ExLCAweDJCRTEsIDB4NzdBMiwgMHg3N0EzLCAweDJCRTQsIDB4NzdBNSwgMHg3N0E1LCAweDEzMEEsCisgICAgMHg3N0E3LCAweDc3QTcsIDB4MTQxQywgMHg3N0E4LCAweDc3QTgsIDB4MkRDMCwgMHg3N0FBLCAweDc3QUEsIDB4MTQxOSwKKyAgICAweDc3QUIsIDB4NzdBQiwgMHgyREJBLCAweDc3QUMsIDB4NzdBQywgMHgxNDFCLCAweDc3QUQsIDB4NzdBRCwgMHgxNDFELAorICAgIDB4NzdBRiwgMHg3N0FGLCAweDQyRTUsIDB4NzdCMCwgMHg3N0IwLCAweDE0MUEsIDB4NzdCMSwgMHg3N0IxLCAweDJEQkYsCisgICAgMHg3N0IyLCAweDc3QjIsIDB4MkRCQiwgMHg3N0IzLCAweDc3QjMsIDB4MTQxOCwgMHg3N0I0LCAweDc3QjQsIDB4MkRCRSwKKyAgICAweDc3QjUsIDB4NzdCNSwgMHgyREI5LCAweDc3QjYsIDB4NzdCNiwgMHgyREJELCAweDc3QjcsIDB4NzdCNywgMHgyREJDLAorICAgIDB4NzdCOSwgMHg3N0I5LCAweDNFNzMsIDB4NzdCQSwgMHg3N0JBLCAweDJGNkIsIDB4NzdCQiwgMHg3N0JDLCAweDE0RkMsCisgICAgMHg3N0JELCAweDc3QkQsIDB4MTRGQSwgMHg3N0JFLCAweDc3QkUsIDB4NDcxMSwgMHg3N0JGLCAweDc3QkYsIDB4MTRGQiwKKyAgICAweDc3QzIsIDB4NzdDMiwgMHgyRjZBLCAweDc3QzMsIDB4NzdDMywgMHgzQkIxLCAweDc3QzQsIDB4NzdDNCwgMHgzMEM4LAorICAgIDB4NzdDNSwgMHg3N0M1LCAweDQxQzEsIDB4NzdDNywgMHg3N0M3LCAweDE1OUUsIDB4NzdDOSwgMHg3N0NBLCAweDMwQzYsCisgICAgMHg3N0NCLCAweDc3Q0IsIDB4NDcxMiwgMHg3N0NDLCAweDc3Q0MsIDB4MzFGRSwgMHg3N0NELCAweDc3Q0QsIDB4MzIwMSwKKyAgICAweDc3Q0UsIDB4NzdDRiwgMHgzMUZGLCAweDc3RDAsIDB4NzdEMCwgMHgzMkU1LCAweDc3RDMsIDB4NzdEMywgMHgxNjgwLAorICAgIDB4NzdENCwgMHg3N0Q0LCAweDM0MjksIDB4NzdENSwgMHg3N0Q1LCAweDM0OEYsIDB4NzdENywgMHg3N0Q3LCAweDE3MjUsCisgICAgMHg3N0Q4LCAweDc3RDksIDB4MzREMywgMHg3N0RBLCAweDc3REEsIDB4MTc1MywgMHg3N0RCLCAweDc3REIsIDB4MDM2NywKKyAgICAweDc3REMsIDB4NzdEQywgMHgwN0JBLCAweDc3REUsIDB4NzdERSwgMHgyMjM4LCAweDc3RTAsIDB4NzdFMCwgMHgyNENDLAorICAgIDB4NzdFMiwgMHg3N0UyLCAweDAzNjgsIDB4NzdFMywgMHg3N0UzLCAweDA0RjYsIDB4NzdFNSwgMHg3N0U1LCAweDA2NUQsCisgICAgMHg3N0U2LCAweDc3RTYsIDB4NDA4MSwgMHg3N0U3LCAweDc3RTgsIDB4MUI5RiwgMHg3N0U5LCAweDc3RTksIDB4MDk0OSwKKyAgICAweDc3RUMsIDB4NzdFQywgMHgyMjM5LCAweDc3RUQsIDB4NzdFRCwgMHgwQ0Y1LCAweDc3RUUsIDB4NzdFRSwgMHgwRTlFLAorICAgIDB4NzdFRiwgMHg3N0VGLCAweDE0MUUsIDB4NzdGMCwgMHg3N0YwLCAweDJEQzEsIDB4NzdGMSwgMHg3N0YxLCAweDMwQzksCisgICAgMHg3N0YyLCAweDc3RjIsIDB4MzIwMiwgMHg3N0YzLCAweDc3RjMsIDB4MDM2OSwgMHg3N0Y0LCAweDc3RjQsIDB4NDJFOSwKKyAgICAweDc3RjcsIDB4NzdGNywgMHgxQTFFLCAweDc3RjgsIDB4NzdGOCwgMHgxQTE5LCAweDc3RjksIDB4NzdGOSwgMHgxQTFCLAorICAgIDB4NzdGQSwgMHg3N0ZBLCAweDFBMUQsIDB4NzdGQiwgMHg3N0ZCLCAweDFBMUMsIDB4NzdGQywgMHg3N0ZDLCAweDFBMUEsCisgICAgMHg3N0ZELCAweDc3RkQsIDB4MDY1RSwgMHg3N0ZFLCAweDc3RkUsIDB4M0ZENSwgMHg3ODAyLCAweDc4MDIsIDB4MDdCQiwKKyAgICAweDc4MDMsIDB4NzgwMywgMHgxQkE5LCAweDc4MDUsIDB4NzgwNSwgMHgxQkE0LCAweDc4MDYsIDB4NzgwNiwgMHgxQkExLAorICAgIDB4NzgwOCwgMHg3ODA4LCAweDNFNDYsIDB4NzgwOSwgMHg3ODA5LCAweDFCQTgsIDB4NzgwQywgMHg3ODBELCAweDA3QkQsCisgICAgMHg3ODBFLCAweDc4MEUsIDB4MUJBNywgMHg3ODBGLCAweDc4MEYsIDB4MUJBNiwgMHg3ODEwLCAweDc4MTAsIDB4MUJBNSwKKyAgICAweDc4MTEsIDB4NzgxMiwgMHgxQkEyLCAweDc4MTMsIDB4NzgxMywgMHgxQkFBLCAweDc4MTQsIDB4NzgxNCwgMHgwN0JDLAorICAgIDB4NzgxOCwgMHg3ODE4LCAweDQ3MTMsIDB4NzgxQywgMHg3ODFDLCAweDQ3MTQsIDB4NzgxRCwgMHg3ODFELCAweDA5NEQsCisgICAgMHg3ODFFLCAweDc4MUUsIDB4M0IxMywgMHg3ODFGLCAweDc4MUYsIDB4MDk1MywgMHg3ODIwLCAweDc4MjAsIDB4MDk1MiwKKyAgICAweDc4MjEsIDB4NzgyMSwgMHgxRDZGLCAweDc4MjIsIDB4NzgyMiwgMHgxRDY5LCAweDc4MjMsIDB4NzgyMywgMHgxRDY3LAorICAgIDB4NzgyNSwgMHg3ODI1LCAweDA5NTAsIDB4NzgyNiwgMHg3ODI2LCAweDFGQkIsIDB4NzgyNywgMHg3ODI3LCAweDA5NEIsCisgICAgMHg3ODI4LCAweDc4MjgsIDB4MUQ2QywgMHg3ODI5LCAweDc4MjksIDB4MUQ3MCwgMHg3ODJBLCAweDc4MkEsIDB4MUQ3MiwKKyAgICAweDc4MkIsIDB4NzgyQiwgMHgxRDZFLCAweDc4MkMsIDB4NzgyQywgMHgxRDY4LCAweDc4MkQsIDB4NzgyRCwgMHgwOTUxLAorICAgIDB4NzgyRSwgMHg3ODJFLCAweDFENkQsIDB4NzgyRiwgMHg3ODJGLCAweDFENkIsIDB4NzgzMCwgMHg3ODMwLCAweDA5NEEsCisgICAgMHg3ODMxLCAweDc4MzEsIDB4MUQ3MywgMHg3ODMyLCAweDc4MzIsIDB4MDk1NCwgMHg3ODMzLCAweDc4MzMsIDB4MUQ3MSwKKyAgICAweDc4MzQsIDB4NzgzNCwgMHgwOTRFLCAweDc4MzUsIDB4NzgzNSwgMHgxRDZBLCAweDc4MzcsIDB4NzgzNywgMHgwOTRGLAorICAgIDB4NzgzOCwgMHg3ODM4LCAweDA5NEMsIDB4NzgzOSwgMHg3ODM5LCAweDQzRDYsIDB4NzgzQywgMHg3ODNDLCAweDQwMUEsCisgICAgMHg3ODNELCAweDc4M0QsIDB4M0M2QSwgMHg3ODQyLCAweDc4NDIsIDB4M0FDNCwgMHg3ODQzLCAweDc4NDMsIDB4MEI0MCwKKyAgICAweDc4NDQsIDB4Nzg0NCwgMHgzQzJCLCAweDc4NDUsIDB4Nzg0NSwgMHgxRkJDLCAweDc4NDcsIDB4Nzg0NywgMHg0NzE1LAorICAgIDB4Nzg0OCwgMHg3ODQ4LCAweDFGQjUsIDB4Nzg0OSwgMHg3ODQ5LCAweDFGQjcsIDB4Nzg0QSwgMHg3ODRBLCAweDFGQjksCisgICAgMHg3ODRCLCAweDc4NEIsIDB4M0M2RCwgMHg3ODRDLCAweDc4NEMsIDB4MUZCQSwgMHg3ODRELCAweDc4NEQsIDB4MUZCOCwKKyAgICAweDc4NEUsIDB4Nzg0RSwgMHgwQjQxLCAweDc4NTAsIDB4Nzg1MCwgMHgxRkJELCAweDc4NTEsIDB4Nzg1MSwgMHg0NzE2LAorICAgIDB4Nzg1MiwgMHg3ODUyLCAweDFGQjYsIDB4Nzg1MywgMHg3ODUzLCAweDNGOTUsIDB4Nzg1NCwgMHg3ODU0LCAweDNDNkIsCisgICAgMHg3ODVDLCAweDc4NUMsIDB4MjIzRCwgMHg3ODVELCAweDc4NUQsIDB4MENGNiwgMHg3ODVFLCAweDc4NUUsIDB4MjI0NSwKKyAgICAweDc4NjAsIDB4Nzg2MCwgMHgyMjNBLCAweDc4NjIsIDB4Nzg2MiwgMHgyMjQ2LCAweDc4NjQsIDB4Nzg2NSwgMHgyMjNCLAorICAgIDB4Nzg2NiwgMHg3ODY2LCAweDQ3MTcsIDB4Nzg2OCwgMHg3ODY4LCAweDIyNDQsIDB4Nzg2OSwgMHg3ODY5LCAweDIyNDMsCisgICAgMHg3ODZBLCAweDc4NkEsIDB4MjI0MCwgMHg3ODZCLCAweDc4NkIsIDB4MEIzRiwgMHg3ODZDLCAweDc4NkMsIDB4MENGNywKKyAgICAweDc4NkQsIDB4Nzg2RCwgMHgyMjNFLCAweDc4NkUsIDB4Nzg2RSwgMHgyMjQxLCAweDc4NkYsIDB4Nzg2RiwgMHgwQ0Y4LAorICAgIDB4Nzg3MCwgMHg3ODcwLCAweDIyNDIsIDB4Nzg3MSwgMHg3ODcxLCAweDIyM0YsIDB4Nzg3OSwgMHg3ODc5LCAweDI0RDcsCisgICAgMHg3ODdBLCAweDc4N0EsIDB4M0VFOSwgMHg3ODdCLCAweDc4N0IsIDB4MjREQiwgMHg3ODdDLCAweDc4N0MsIDB4MEVBNSwKKyAgICAweDc4N0UsIDB4Nzg3RSwgMHgyNzRELCAweDc4N0YsIDB4Nzg3RiwgMHgwRUE4LCAweDc4ODAsIDB4Nzg4MCwgMHgyNEQ5LAorICAgIDB4Nzg4MSwgMHg3ODgxLCAweDM2RTgsIDB4Nzg4MywgMHg3ODgzLCAweDI0RDYsIDB4Nzg4NCwgMHg3ODg0LCAweDI0RDEsCisgICAgMHg3ODg1LCAweDc4ODYsIDB4MjREMywgMHg3ODg3LCAweDc4ODcsIDB4MjRDRCwgMHg3ODg4LCAweDc4ODgsIDB4M0IxNSwKKyAgICAweDc4ODksIDB4Nzg4OSwgMHgwRUE0LCAweDc4OEMsIDB4Nzg4QywgMHgwRUEzLCAweDc4OEQsIDB4Nzg4RCwgMHgzQjE0LAorICAgIDB4Nzg4RSwgMHg3ODhFLCAweDBFOUYsIDB4Nzg4RiwgMHg3ODhGLCAweDI0RDAsIDB4Nzg5MSwgMHg3ODkxLCAweDBFQTYsCisgICAgMHg3ODkzLCAweDc4OTMsIDB4MEVBNywgMHg3ODk0LCAweDc4OTQsIDB4MjRDRiwgMHg3ODk1LCAweDc4OTUsIDB4MjREMiwKKyAgICAweDc4OTYsIDB4Nzg5NiwgMHgyNERBLCAweDc4OTcsIDB4Nzg5OCwgMHgwRUExLCAweDc4OTksIDB4Nzg5OSwgMHgyNEQ4LAorICAgIDB4Nzg5QSwgMHg3ODlBLCAweDI0Q0UsIDB4Nzg5RSwgMHg3ODlFLCAweDI3NEYsIDB4Nzg5RiwgMHg3ODlGLCAweDEwM0YsCisgICAgMHg3OEEwLCAweDc4QTAsIDB4Mjc1MSwgMHg3OEExLCAweDc4QTEsIDB4MjRENSwgMHg3OEEyLCAweDc4QTIsIDB4Mjc1MywKKyAgICAweDc4QTMsIDB4NzhBMywgMHgxMDQzLCAweDc4QTQsIDB4NzhBNCwgMHgyNzU0LCAweDc4QTUsIDB4NzhBNSwgMHgyNzUwLAorICAgIDB4NzhBNywgMHg3OEE3LCAweDEwNDAsIDB4NzhBOCwgMHg3OEE4LCAweDI3NEMsIDB4NzhBOSwgMHg3OEE5LCAweDEwNDIsCisgICAgMHg3OEFBLCAweDc4QUEsIDB4Mjc0OSwgMHg3OEFCLCAweDc4QUIsIDB4Mjc0RSwgMHg3OEFDLCAweDc4QUMsIDB4Mjc1MiwKKyAgICAweDc4QUQsIDB4NzhBRCwgMHgyNzRCLCAweDc4QUYsIDB4NzhBRiwgMHg0MkVDLCAweDc4QjAsIDB4NzhCMCwgMHgwRUEwLAorICAgIDB4NzhCMSwgMHg3OEIxLCAweDQyRjQsIDB4NzhCMiwgMHg3OEIyLCAweDI3NDgsIDB4NzhCMywgMHg3OEIzLCAweDEwNDEsCisgICAgMHg3OEI0LCAweDc4QjQsIDB4Mjc0QSwgMHg3OEI2LCAweDc4QjYsIDB4M0M2QywgMHg3OEI4LCAweDc4QjgsIDB4NDU3MSwKKyAgICAweDc4QjksIDB4NzhCOSwgMHgzQzYzLCAweDc4QkEsIDB4NzhCQSwgMHgxMUJELCAweDc4QkIsIDB4NzhCQiwgMHgyOTkyLAorICAgIDB4NzhCQywgMHg3OEJDLCAweDExQzEsIDB4NzhCRSwgMHg3OEJFLCAweDExQkYsIDB4NzhDMSwgMHg3OEMxLCAweDEwM0UsCisgICAgMHg3OEMzLCAweDc4QzQsIDB4Mjk5OSwgMHg3OEM1LCAweDc4QzUsIDB4MTFCQywgMHg3OEM3LCAweDc4QzcsIDB4NDJFRCwKKyAgICAweDc4QzgsIDB4NzhDOCwgMHgyOTk4LCAweDc4QzksIDB4NzhDOSwgMHgyOTlCLCAweDc4Q0EsIDB4NzhDQSwgMHgxMUJFLAorICAgIDB4NzhDQiwgMHg3OENCLCAweDExQkIsIDB4NzhDQywgMHg3OENDLCAweDI5OTQsIDB4NzhDRCwgMHg3OENELCAweDI5OTEsCisgICAgMHg3OENFLCAweDc4Q0UsIDB4Mjk5NiwgMHg3OENGLCAweDc4Q0YsIDB4Mjk5MywgMHg3OEQwLCAweDc4RDAsIDB4MTFDMiwKKyAgICAweDc4RDEsIDB4NzhEMSwgMHgyOTk1LCAweDc4RDIsIDB4NzhEMiwgMHgzQjE2LCAweDc4RDMsIDB4NzhEMywgMHg0MkVFLAorICAgIDB4NzhENCwgMHg3OEQ0LCAweDI5OTcsIDB4NzhENSwgMHg3OEQ1LCAweDExQzAsIDB4NzhENywgMHg3OEQ3LCAweDQyRjIsCisgICAgMHg3OEQ4LCAweDc4RDgsIDB4M0Y4QywgMHg3OERBLCAweDc4REEsIDB4MTMwQywgMHg3OERCLCAweDc4REIsIDB4MkJFRiwKKyAgICAweDc4REQsIDB4NzhERCwgMHgyQkU5LCAweDc4REUsIDB4NzhERSwgMHgyQkVELCAweDc4REYsIDB4NzhFMCwgMHgyQkYzLAorICAgIDB4NzhFMSwgMHg3OEUyLCAweDJCRjAsIDB4NzhFMywgMHg3OEUzLCAweDJCRUUsIDB4NzhFNSwgMHg3OEU1LCAweDJCRUIsCisgICAgMHg3OEU3LCAweDc4RTcsIDB4MTMwRSwgMHg3OEU4LCAweDc4RTgsIDB4MTMwQiwgMHg3OEU5LCAweDc4RTksIDB4MkJFQSwKKyAgICAweDc4RUEsIDB4NzhFQSwgMHgyQkVDLCAweDc4RUMsIDB4NzhFQywgMHgxMzBELCAweDc4RUQsIDB4NzhFRCwgMHgyQkYyLAorICAgIDB4NzhFRSwgMHg3OEVFLCAweDNBODEsIDB4NzhFRiwgMHg3OEVGLCAweDE0MjIsIDB4NzhGMCwgMHg3OEYwLCAweDNCM0EsCisgICAgMHg3OEYxLCAweDc4RjEsIDB4NDBCRSwgMHg3OEYyLCAweDc4RjIsIDB4MkRDOCwgMHg3OEYzLCAweDc4RjMsIDB4MkRDMiwKKyAgICAweDc4RjQsIDB4NzhGNCwgMHgxNDIxLCAweDc4RjUsIDB4NzhGNSwgMHgzOEIzLCAweDc4RjcsIDB4NzhGNywgMHgxNDFGLAorICAgIDB4NzhGOSwgMHg3OEY5LCAweDJEQ0EsIDB4NzhGQSwgMHg3OEZBLCAweDE0MjAsIDB4NzhGQiwgMHg3OEZDLCAweDJEQzUsCisgICAgMHg3OEZELCAweDc4RkQsIDB4MkRDMywgMHg3OEZFLCAweDc4RkUsIDB4MkRDQiwgMHg3OEZGLCAweDc4RkYsIDB4MkRDNywKKyAgICAweDc5MDEsIDB4NzkwMSwgMHgxNDIzLCAweDc5MDIsIDB4NzkwMiwgMHgyREM0LCAweDc5MDQsIDB4NzkwNCwgMHgyRENDLAorICAgIDB4NzkwNSwgMHg3OTA1LCAweDJEQzksIDB4NzkwNiwgMHg3OTA2LCAweDNGQ0YsIDB4NzkwOSwgMHg3OTA5LCAweDJGNkYsCisgICAgMHg3OTBDLCAweDc5MEMsIDB4MkY2QywgMHg3OTBFLCAweDc5MEUsIDB4MTRGRSwgMHg3OTEwLCAweDc5MTAsIDB4MkY3MCwKKyAgICAweDc5MTEsIDB4NzkxMSwgMHgyRjcyLCAweDc5MTIsIDB4NzkxMiwgMHgyRjcxLCAweDc5MTMsIDB4NzkxNCwgMHgyRjZELAorICAgIDB4NzkxNywgMHg3OTE3LCAweDMwQ0UsIDB4NzkxOSwgMHg3OTE5LCAweDE1OUYsIDB4NzkxQiwgMHg3OTFCLCAweDMwQ0IsCisgICAgMHg3OTFDLCAweDc5MUMsIDB4MzBDRCwgMHg3OTFELCAweDc5MUQsIDB4MzBDQSwgMHg3OTFFLCAweDc5MUUsIDB4MzBDRiwKKyAgICAweDc5MjEsIDB4NzkyMSwgMHgzMENDLCAweDc5MjMsIDB4NzkyMywgMHgzMjA0LCAweDc5MjQsIDB4NzkyNCwgMHgzMjA3LAorICAgIDB4NzkyNSwgMHg3OTI1LCAweDMyMDMsIDB4NzkyNiwgMHg3OTI2LCAweDE2MjQsIDB4NzkyNywgMHg3OTI4LCAweDMyMDUsCisgICAgMHg3OTI5LCAweDc5MjksIDB4MzIwOCwgMHg3OTJBLCAweDc5MkEsIDB4MTYyNSwgMHg3OTJCLCAweDc5MkIsIDB4MTYyNywKKyAgICAweDc5MkMsIDB4NzkyQywgMHgxNjI2LCAweDc5MkQsIDB4NzkyRCwgMHgzMkU2LCAweDc5MkUsIDB4NzkyRSwgMHg0MkYwLAorICAgIDB4NzkyRiwgMHg3OTJGLCAweDMyRTgsIDB4NzkzMSwgMHg3OTMxLCAweDMyRTcsIDB4NzkzMiwgMHg3OTMyLCAweDQ3MUIsCisgICAgMHg3OTMzLCAweDc5MzMsIDB4NDcxQSwgMHg3OTM0LCAweDc5MzQsIDB4NDJGMywgMHg3OTM1LCAweDc5MzUsIDB4MzM5NywKKyAgICAweDc5MzYsIDB4NzkzNiwgMHgzNzgzLCAweDc5MzgsIDB4NzkzOCwgMHgzNDkwLCAweDc5MzksIDB4NzkzOSwgMHgzNEQ1LAorICAgIDB4NzkzQSwgMHg3OTNBLCAweDAzNkEsIDB4NzkzQiwgMHg3OTNCLCAweDQ0RjcsIDB4NzkzQywgMHg3OTNDLCAweDQzMDAsCisgICAgMHg3OTNELCAweDc5M0QsIDB4MThENywgMHg3OTNFLCAweDc5M0UsIDB4MDY1RiwgMHg3OTNGLCAweDc5M0YsIDB4MUEyMCwKKyAgICAweDc5NDAsIDB4Nzk0MSwgMHgwNjYwLCAweDc5NDIsIDB4Nzk0MiwgMHgxQTFGLCAweDc5NDQsIDB4Nzk0NCwgMHgxQkFGLAorICAgIDB4Nzk0NSwgMHg3OTQ1LCAweDFCQUUsIDB4Nzk0NiwgMHg3OTQ2LCAweDA3QkYsIDB4Nzk0NywgMHg3OTQ3LCAweDA3QzIsCisgICAgMHg3OTQ4LCAweDc5NDgsIDB4MDdDMSwgMHg3OTQ5LCAweDc5NDksIDB4MDdDMCwgMHg3OTRBLCAweDc5NEEsIDB4MUJBQiwKKyAgICAweDc5NEIsIDB4Nzk0QiwgMHgxQkFELCAweDc5NEMsIDB4Nzk0QywgMHgxQkFDLCAweDc5NEYsIDB4Nzk0RiwgMHgxRDc2LAorICAgIDB4Nzk1MCwgMHg3OTUwLCAweDA5NTYsIDB4Nzk1MSwgMHg3OTUxLCAweDFEN0EsIDB4Nzk1MiwgMHg3OTUyLCAweDFENzksCisgICAgMHg3OTUzLCAweDc5NTMsIDB4MUQ3OCwgMHg3OTU0LCAweDc5NTQsIDB4MUQ3NCwgMHg3OTU1LCAweDc5NTUsIDB4MDk1NSwKKyAgICAweDc5NTYsIDB4Nzk1NiwgMHgwOTU5LCAweDc5NTcsIDB4Nzk1NywgMHgwOTVDLCAweDc5NTgsIDB4Nzk1OCwgMHgzN0U1LAorICAgIDB4Nzk1OSwgMHg3OTU5LCAweDNCMTgsIDB4Nzk1QSwgMHg3OTVBLCAweDA5NUQsIDB4Nzk1QiwgMHg3OTVCLCAweDFENzUsCisgICAgMHg3OTVDLCAweDc5NUMsIDB4MUQ3NywgMHg3OTVELCAweDc5NUQsIDB4MDk1QiwgMHg3OTVFLCAweDc5NUUsIDB4MDk1QSwKKyAgICAweDc5NUYsIDB4Nzk1RiwgMHgwOTU4LCAweDc5NjAsIDB4Nzk2MCwgMHgwOTU3LCAweDc5NjEsIDB4Nzk2MSwgMHgxRkM0LAorICAgIDB4Nzk2MiwgMHg3OTYyLCAweDNFN0QsIDB4Nzk2MywgMHg3OTYzLCAweDFGQzIsIDB4Nzk2NCwgMHg3OTY0LCAweDFGQkUsCisgICAgMHg3OTY1LCAweDc5NjUsIDB4MEI0MiwgMHg3OTY3LCAweDc5NjcsIDB4MUZCRiwgMHg3OTY4LCAweDc5NjgsIDB4MEI0MywKKyAgICAweDc5NjksIDB4Nzk2QSwgMHgxRkMwLCAweDc5NkIsIDB4Nzk2QiwgMHgxRkMzLCAweDc5NkQsIDB4Nzk2RCwgMHgwQjQ0LAorICAgIDB4Nzk3MCwgMHg3OTcwLCAweDIyNEEsIDB4Nzk3MSwgMHg3OTcxLCAweDQxNjgsIDB4Nzk3MiwgMHg3OTcyLCAweDIyNDksCisgICAgMHg3OTczLCAweDc5NzMsIDB4MjI0OCwgMHg3OTc0LCAweDc5NzQsIDB4MjI0NywgMHg3OTc5LCAweDc5NzksIDB4MjRERiwKKyAgICAweDc5N0EsIDB4Nzk3QSwgMHgwRUE5LCAweDc5N0MsIDB4Nzk3QywgMHgyNERDLCAweDc5N0QsIDB4Nzk3RCwgMHgyNERFLAorICAgIDB4Nzk3RSwgMHg3OTdFLCAweDNFMjYsIDB4Nzk3RiwgMHg3OTdGLCAweDBFQUEsIDB4Nzk4MCwgMHg3OTgwLCAweDQyRkMsCisgICAgMHg3OTgxLCAweDc5ODEsIDB4MEVBQiwgMHg3OTgyLCAweDc5ODIsIDB4MjRERCwgMHg3OTgzLCAweDc5ODMsIDB4M0RGNiwKKyAgICAweDc5ODYsIDB4Nzk4NiwgMHg0MkY5LCAweDc5ODcsIDB4Nzk4NywgMHg0NTg4LCAweDc5ODgsIDB4Nzk4OCwgMHgyNzVELAorICAgIDB4Nzk4QSwgMHg3OThCLCAweDI3NTYsIDB4Nzk4RCwgMHg3OThELCAweDEwNDYsIDB4Nzk4RSwgMHg3OThGLCAweDEwNDQsCisgICAgMHg3OTkwLCAweDc5OTAsIDB4Mjc1RiwgMHg3OTkxLCAweDc5OTEsIDB4NDcxRCwgMHg3OTkyLCAweDc5OTIsIDB4Mjc1RSwKKyAgICAweDc5OTMsIDB4Nzk5MywgMHgyNzVCLCAweDc5OTQsIDB4Nzk5NCwgMHgyNzVBLCAweDc5OTUsIDB4Nzk5NSwgMHgyNzU5LAorICAgIDB4Nzk5NiwgMHg3OTk2LCAweDI3NTgsIDB4Nzk5NywgMHg3OTk3LCAweDI3NUMsIDB4Nzk5OCwgMHg3OTk4LCAweDI3NTUsCisgICAgMHg3OTk5LCAweDc5OTksIDB4NDNGQywgMHg3OTlBLCAweDc5OUEsIDB4Mjk5QywgMHg3OTlCLCAweDc5OUIsIDB4MjlBMSwKKyAgICAweDc5OUMsIDB4Nzk5QywgMHgyOTlGLCAweDc5OUQsIDB4Nzk5RCwgMHg0MkZFLCAweDc5OUYsIDB4Nzk5RiwgMHgzOTVFLAorICAgIDB4NzlBMCwgMHg3OUEwLCAweDI5OUUsIDB4NzlBMSwgMHg3OUExLCAweDI5OUQsIDB4NzlBMiwgMHg3OUEyLCAweDI5QTAsCisgICAgMHg3OUE0LCAweDc5QTQsIDB4MkJGNSwgMHg3OUE1LCAweDc5QTUsIDB4M0IxRSwgMHg3OUE2LCAweDc5QTYsIDB4MTMwRiwKKyAgICAweDc5QTcsIDB4NzlBNywgMHgxNDI0LCAweDc5QTgsIDB4NzlBOCwgMHgyRENFLCAweDc5QTksIDB4NzlBOSwgMHg0MzAxLAorICAgIDB4NzlBQSwgMHg3OUFBLCAweDE0MjUsIDB4NzlBQiwgMHg3OUFCLCAweDJEQ0QsIDB4NzlBQywgMHg3OUFDLCAweDJGNzQsCisgICAgMHg3OUFELCAweDc5QUQsIDB4MkY3MywgMHg3OUFFLCAweDc5QUUsIDB4MTRGRiwgMHg3OUIwLCAweDc5QjAsIDB4MzBEMCwKKyAgICAweDc5QjEsIDB4NzlCMSwgMHgxNUEwLCAweDc5QjIsIDB4NzlCMiwgMHgzMjA5LCAweDc5QjMsIDB4NzlCMywgMHgxNkNGLAorICAgIDB4NzlCNCwgMHg3OUI0LCAweDMzOTgsIDB4NzlCNiwgMHg3OUI2LCAweDM0OTIsIDB4NzlCNywgMHg3OUI3LCAweDM0OTEsCisgICAgMHg3OUI4LCAweDc5QjgsIDB4MTdCMiwgMHg3OUI5LCAweDc5QkEsIDB4MDdDMywgMHg3OUJCLCAweDc5QkIsIDB4MUZDNSwKKyAgICAweDc5QkQsIDB4NzlCRCwgMHgwRUFELCAweDc5QkUsIDB4NzlCRSwgMHgwMzZCLCAweDc5QkYsIDB4NzlCRiwgMHgwNEY5LAorICAgIDB4NzlDMCwgMHg3OUMwLCAweDA0RjgsIDB4NzlDMSwgMHg3OUMxLCAweDA0RjcsIDB4NzlDNCwgMHg3OUM0LCAweDNDQ0QsCisgICAgMHg3OUM1LCAweDc5QzUsIDB4MUEyMSwgMHg3OUM2LCAweDc5QzYsIDB4NDMwNSwgMHg3OUM4LCAweDc5QzgsIDB4MDY2MywKKyAgICAweDc5QzksIDB4NzlDOSwgMHgwNjYyLCAweDc5Q0IsIDB4NzlDQiwgMHgwN0M3LCAweDc5Q0MsIDB4NzlDQywgMHg0MjMzLAorICAgIDB4NzlDRCwgMHg3OUNELCAweDFCQjEsIDB4NzlDRSwgMHg3OUNFLCAweDFCQjQsIDB4NzlDRiwgMHg3OUNGLCAweDFCQjIsCisgICAgMHg3OUQxLCAweDc5RDIsIDB4MDdDNSwgMHg3OUQ0LCAweDc5RDQsIDB4NDMwNywgMHg3OUQ1LCAweDc5RDUsIDB4MUJCMCwKKyAgICAweDc5RDYsIDB4NzlENiwgMHgxQkIzLCAweDc5RDgsIDB4NzlEOCwgMHgwOTY0LCAweDc5REMsIDB4NzlEQywgMHgxRDgxLAorICAgIDB4NzlERCwgMHg3OURELCAweDFEODMsIDB4NzlERSwgMHg3OURFLCAweDFEODIsIDB4NzlERiwgMHg3OURGLCAweDA5NjEsCisgICAgMHg3OUUwLCAweDc5RTAsIDB4MUQ3RCwgMHg3OUUyLCAweDc5RTIsIDB4M0M1QSwgMHg3OUUzLCAweDc5RTMsIDB4MDk1RiwKKyAgICAweDc5RTQsIDB4NzlFNCwgMHgwOTVFLCAweDc5RTYsIDB4NzlFNiwgMHgwOTYyLCAweDc5RTcsIDB4NzlFNywgMHgwOTYwLAorICAgIDB4NzlFOSwgMHg3OUU5LCAweDA5NjMsIDB4NzlFQSwgMHg3OUVBLCAweDFEODAsIDB4NzlFQiwgMHg3OUVDLCAweDFEN0IsCisgICAgMHg3OUVELCAweDc5RUQsIDB4MUQ3RiwgMHg3OUVFLCAweDc5RUUsIDB4MUQ3RSwgMHg3OUYxLCAweDc5RjEsIDB4M0IyNywKKyAgICAweDc5RjQsIDB4NzlGNCwgMHgzQjIyLCAweDc5RjYsIDB4NzlGNywgMHgxRkM4LCAweDc5RjgsIDB4NzlGOCwgMHgxRkM3LAorICAgIDB4NzlGQSwgMHg3OUZBLCAweDFGQzYsIDB4NzlGQiwgMHg3OUZCLCAweDBCNDUsIDB4N0EwMCwgMHg3QTAwLCAweDBDRkQsCisgICAgMHg3QTAyLCAweDdBMDIsIDB4MjI0QiwgMHg3QTAzLCAweDdBMDMsIDB4MjI0RCwgMHg3QTA0LCAweDdBMDQsIDB4MjI0RiwKKyAgICAweDdBMDUsIDB4N0EwNSwgMHgwQ0ZDLCAweDdBMDYsIDB4N0EwNiwgMHg0NzFFLCAweDdBMDgsIDB4N0EwOCwgMHgwQ0ZBLAorICAgIDB4N0EwQSwgMHg3QTBBLCAweDIyNEMsIDB4N0EwQiwgMHg3QTBCLCAweDBDRkIsIDB4N0EwQywgMHg3QTBDLCAweDIyNEUsCisgICAgMHg3QTBELCAweDdBMEQsIDB4MENGOSwgMHg3QTEwLCAweDdBMTAsIDB4MjRFOSwgMHg3QTExLCAweDdBMTEsIDB4MjRFMCwKKyAgICAweDdBMTIsIDB4N0ExMiwgMHgyNEUzLCAweDdBMTMsIDB4N0ExMywgMHgyNEU3LCAweDdBMTQsIDB4N0ExNCwgMHgwRUIxLAorICAgIDB4N0ExNSwgMHg3QTE1LCAweDI0RTUsIDB4N0ExNywgMHg3QTE3LCAweDI0RTQsIDB4N0ExOCwgMHg3QTE5LCAweDI0RTEsCisgICAgMHg3QTFBLCAweDdBMUEsIDB4MEVBRiwgMHg3QTFCLCAweDdBMUIsIDB4MjRFOCwgMHg3QTFDLCAweDdBMUMsIDB4MEVBRSwKKyAgICAweDdBMUUsIDB4N0ExRSwgMHgwRUIzLCAweDdBMUYsIDB4N0ExRiwgMHgwRUIyLCAweDdBMjAsIDB4N0EyMCwgMHgwRUIwLAorICAgIDB4N0EyMiwgMHg3QTIyLCAweDI0RTYsIDB4N0EyNiwgMHg3QTI2LCAweDI3NjUsIDB4N0EyOCwgMHg3QTI4LCAweDI3NjQsCisgICAgMHg3QTJCLCAweDdBMkIsIDB4Mjc2MCwgMHg3QTJELCAweDdBMkQsIDB4M0ZEQSwgMHg3QTJFLCAweDdBMkUsIDB4MTA0NywKKyAgICAweDdBMkYsIDB4N0EyRiwgMHgyNzYzLCAweDdBMzAsIDB4N0EzMCwgMHgyNzYyLCAweDdBMzEsIDB4N0EzMSwgMHgxMDQ4LAorICAgIDB4N0EzNywgMHg3QTM3LCAweDExQzcsIDB4N0EzOSwgMHg3QTM5LCAweDI5QTMsIDB4N0EzQSwgMHg3QTNBLCAweDNCMjEsCisgICAgMHg3QTNCLCAweDdBM0IsIDB4MTFDOCwgMHg3QTNDLCAweDdBM0MsIDB4MTFDNCwgMHg3QTNELCAweDdBM0QsIDB4MTFDNiwKKyAgICAweDdBM0UsIDB4N0EzRSwgMHgzRjhCLCAweDdBM0YsIDB4N0EzRiwgMHgxMUMzLCAweDdBNDAsIDB4N0E0MCwgMHgxMUM1LAorICAgIDB4N0E0MywgMHg3QTQzLCAweDM5NkMsIDB4N0E0NCwgMHg3QTQ0LCAweDJCRjYsIDB4N0E0NSwgMHg3QTQ1LCAweDNERjEsCisgICAgMHg3QTQ2LCAweDdBNDYsIDB4MTMxMiwgMHg3QTQ3LCAweDdBNDcsIDB4MkJGOCwgMHg3QTQ4LCAweDdBNDgsIDB4MkJGNywKKyAgICAweDdBNDksIDB4N0E0OSwgMHgzNzMzLCAweDdBNEEsIDB4N0E0QSwgMHgyNzYxLCAweDdBNEIsIDB4N0E0QiwgMHgxMzE0LAorICAgIDB4N0E0QywgMHg3QTRDLCAweDEzMTMsIDB4N0E0RCwgMHg3QTRFLCAweDEzMTAsIDB4N0E1NCwgMHg3QTU0LCAweDJERDMsCisgICAgMHg3QTU2LCAweDdBNTYsIDB4MkREMSwgMHg3QTU3LCAweDdBNTcsIDB4MTQyNiwgMHg3QTU4LCAweDdBNTgsIDB4MkREMiwKKyAgICAweDdBNUEsIDB4N0E1QSwgMHgyREQ0LCAweDdBNUIsIDB4N0E1QiwgMHgyREQwLCAweDdBNUMsIDB4N0E1QywgMHgyRENGLAorICAgIDB4N0E1RiwgMHg3QTVGLCAweDJGNzUsIDB4N0E2MCwgMHg3QTYwLCAweDE1MDIsIDB4N0E2MSwgMHg3QTYyLCAweDE1MDAsCisgICAgMHg3QTY1LCAweDdBNjUsIDB4MzczNiwgMHg3QTY3LCAweDdBNjgsIDB4MzBEMSwgMHg3QTY5LCAweDdBNjksIDB4MTVBMiwKKyAgICAweDdBNkIsIDB4N0E2QiwgMHgxNUExLCAweDdBNkMsIDB4N0E2RCwgMHgzMjBCLCAweDdBNkUsIDB4N0E2RSwgMHgzMjBBLAorICAgIDB4N0E3MCwgMHg3QTcxLCAweDMzOTksIDB4N0E3NCwgMHg3QTc0LCAweDAzNkMsIDB4N0E3NSwgMHg3QTc1LCAweDE4MTEsCisgICAgMHg3QTc2LCAweDdBNzYsIDB4MDRGQSwgMHg3QTc4LCAweDdBNzgsIDB4MUEyMiwgMHg3QTc5LCAweDdBNzksIDB4MDY2NSwKKyAgICAweDdBN0EsIDB4N0E3QSwgMHgwNjY0LCAweDdBN0IsIDB4N0E3QiwgMHgxQTIzLCAweDdBN0QsIDB4N0E3RCwgMHgzNzM3LAorICAgIDB4N0E3RSwgMHg3QTdFLCAweDFCQjYsIDB4N0E3RiwgMHg3QTdGLCAweDA3QzgsIDB4N0E4MCwgMHg3QTgwLCAweDFCQjUsCisgICAgMHg3QTgxLCAweDdBODEsIDB4MDdDOSwgMHg3QTgzLCAweDdBODMsIDB4M0Q3RCwgMHg3QTg0LCAweDdBODQsIDB4MDk2NSwKKyAgICAweDdBODUsIDB4N0E4NSwgMHgxRDg2LCAweDdBODYsIDB4N0E4NiwgMHgxRDg0LCAweDdBODcsIDB4N0E4NywgMHgxRDhBLAorICAgIDB4N0E4OCwgMHg3QTg4LCAweDA5NjYsIDB4N0E4OSwgMHg3QTg5LCAweDFEODUsIDB4N0E4QSwgMHg3QThBLCAweDFEODksCisgICAgMHg3QThCLCAweDdBOEMsIDB4MUQ4NywgMHg3QThGLCAweDdBOEYsIDB4MUZDQSwgMHg3QTkwLCAweDdBOTAsIDB4MUZDQywKKyAgICAweDdBOTEsIDB4N0E5MSwgMHg0M0Q4LCAweDdBOTIsIDB4N0E5MiwgMHgwQjQ2LCAweDdBOTQsIDB4N0E5NCwgMHgxRkNCLAorICAgIDB4N0E5NSwgMHg3QTk1LCAweDBCNDcsIDB4N0E5NiwgMHg3QTk2LCAweDBEMDAsIDB4N0E5NywgMHg3QTk3LCAweDBDRkYsCisgICAgMHg3QTk4LCAweDdBOTgsIDB4MENGRSwgMHg3QTk5LCAweDdBOTksIDB4MjI1MCwgMHg3QTlFLCAweDdBOUUsIDB4MjRFQywKKyAgICAweDdBOUYsIDB4N0FBMCwgMHgwRUI0LCAweDdBQTIsIDB4N0FBMiwgMHgyNEVCLCAweDdBQTMsIDB4N0FBMywgMHgyNEVBLAorICAgIDB4N0FBOCwgMHg3QUE4LCAweDI3NjYsIDB4N0FBOSwgMHg3QUE5LCAweDEwNEEsIDB4N0FBQSwgMHg3QUFBLCAweDEwNDksCisgICAgMHg3QUFCLCAweDdBQUMsIDB4Mjc2NywgMHg3QUFFLCAweDdBQUUsIDB4MTFDQSwgMHg3QUFGLCAweDdBQUYsIDB4MTFDOSwKKyAgICAweDdBQjAsIDB4N0FCMCwgMHgzNzNBLCAweDdBQjEsIDB4N0FCMSwgMHgyQkZDLCAweDdBQjIsIDB4N0FCMiwgMHgyOUE0LAorICAgIDB4N0FCMywgMHg3QUIzLCAweDI5QTYsIDB4N0FCNCwgMHg3QUI0LCAweDI5QTUsIDB4N0FCNSwgMHg3QUI1LCAweDJCRkIsCisgICAgMHg3QUI2LCAweDdBQjYsIDB4MkJGOSwgMHg3QUI3LCAweDdBQjcsIDB4MkJGRCwgMHg3QUI4LCAweDdBQjgsIDB4MkJGQSwKKyAgICAweDdBQkEsIDB4N0FCQSwgMHgxMzE1LCAweDdBQkIsIDB4N0FCQiwgMHgzNzM5LCAweDdBQkMsIDB4N0FCQywgMHg0NzIxLAorICAgIDB4N0FCRSwgMHg3QUJFLCAweDJERDUsIDB4N0FCRiwgMHg3QUJGLCAweDE0MjcsIDB4N0FDMCwgMHg3QUMxLCAweDJERDYsCisgICAgMHg3QUMyLCAweDdBQzMsIDB4MzczQiwgMHg3QUM0LCAweDdBQzUsIDB4MTUwMywgMHg3QUM3LCAweDdBQzcsIDB4MTYyOCwKKyAgICAweDdBQzgsIDB4N0FDOCwgMHgzRDdGLCAweDdBQzksIDB4N0FDOSwgMHg0NTcwLCAweDdBQ0EsIDB4N0FDQSwgMHgxNkZGLAorICAgIDB4N0FDQiwgMHg3QUNCLCAweDAzNkQsIDB4N0FDRiwgMHg3QUNGLCAweDQ3MjQsIDB4N0FEMSwgMHg3QUQxLCAweDFCQjcsCisgICAgMHg3QUQzLCAweDdBRDMsIDB4M0Y4QSwgMHg3QUQ4LCAweDdBRDgsIDB4MUQ4QiwgMHg3QUQ5LCAweDdBRDksIDB4MDk2NywKKyAgICAweDdBREEsIDB4N0FEQSwgMHgzNzQwLCAweDdBREIsIDB4N0FEQiwgMHg0NzI1LCAweDdBREMsIDB4N0FEQywgMHgzOTUxLAorICAgIDB4N0FERCwgMHg3QURELCAweDM3NDEsIDB4N0FERiwgMHg3QURGLCAweDBCREUsIDB4N0FFMCwgMHg3QUUwLCAweDBCREQsCisgICAgMHg3QUUyLCAweDdBRTIsIDB4M0IzMywgMHg3QUUzLCAweDdBRTMsIDB4MEQwMiwgMHg3QUU0LCAweDdBRTQsIDB4MjI1MiwKKyAgICAweDdBRTUsIDB4N0FFNSwgMHgwRDAxLCAweDdBRTYsIDB4N0FFNiwgMHgyMjUxLCAweDdBRTcsIDB4N0FFNywgMHgzODVELAorICAgIDB4N0FFOSwgMHg3QUU5LCAweDM4MzEsIDB4N0FFQSwgMHg3QUVBLCAweDM3NDIsIDB4N0FFQiwgMHg3QUVCLCAweDI0RUQsCisgICAgMHg3QUVELCAweDdBRUQsIDB4MTA0QiwgMHg3QUVFLCAweDdBRUUsIDB4Mjc2OSwgMHg3QUVGLCAweDdBRUYsIDB4MTA0QywKKyAgICAweDdBRjYsIDB4N0FGNiwgMHgxNjI5LCAweDdBRjcsIDB4N0FGNywgMHgzMjBELCAweDdBRjksIDB4N0FGOSwgMHgwM0Y2LAorICAgIDB4N0FGQSwgMHg3QUZBLCAweDA2NjYsIDB4N0FGQiwgMHg3QUZCLCAweDFBMjQsIDB4N0FGRCwgMHg3QUZELCAweDA3Q0IsCisgICAgMHg3QUZFLCAweDdBRkUsIDB4M0IzRCwgMHg3QUZGLCAweDdBRkYsIDB4MDdDQSwgMHg3QjAwLCAweDdCMDEsIDB4MUJCOCwKKyAgICAweDdCMDQsIDB4N0IwNCwgMHgxRDhELCAweDdCMDUsIDB4N0IwNSwgMHgxRDhGLCAweDdCMDYsIDB4N0IwNiwgMHgwOTY4LAorICAgIDB4N0IwOCwgMHg3QjA4LCAweDFEOTEsIDB4N0IwOSwgMHg3QjA5LCAweDFEOTQsIDB4N0IwQSwgMHg3QjBBLCAweDFEOTIsCisgICAgMHg3QjBCLCAweDdCMEIsIDB4Mzc0NiwgMHg3QjBDLCAweDdCMEMsIDB4M0I2MywgMHg3QjBFLCAweDdCMEUsIDB4MUQ5MywKKyAgICAweDdCMEYsIDB4N0IwRiwgMHgxRDkwLCAweDdCMTAsIDB4N0IxMCwgMHgxRDhDLCAweDdCMTEsIDB4N0IxMSwgMHgwOTY5LAorICAgIDB4N0IxMiwgMHg3QjEyLCAweDFEOTUsIDB4N0IxMywgMHg3QjEzLCAweDFEOEUsIDB4N0IxNCwgMHg3QjE0LCAweDNGNzcsCisgICAgMHg3QjE4LCAweDdCMTgsIDB4MUZENSwgMHg3QjE5LCAweDdCMTksIDB4MEI0RCwgMHg3QjFBLCAweDdCMUEsIDB4MUZERSwKKyAgICAweDdCMUIsIDB4N0IxQiwgMHgwQjRBLCAweDdCMUQsIDB4N0IxRCwgMHgxRkQ3LCAweDdCMUUsIDB4N0IxRSwgMHgwQjRFLAorICAgIDB4N0IxRiwgMHg3QjFGLCAweDNGMTEsIDB4N0IyMCwgMHg3QjIwLCAweDBCNDgsIDB4N0IyMiwgMHg3QjIyLCAweDFGRDIsCisgICAgMHg3QjIzLCAweDdCMjMsIDB4MUZERiwgMHg3QjI0LCAweDdCMjQsIDB4MUZEMywgMHg3QjI1LCAweDdCMjUsIDB4MUZEMCwKKyAgICAweDdCMjYsIDB4N0IyNiwgMHgwQjRDLCAweDdCMjcsIDB4N0IyNywgMHgzQjVGLCAweDdCMjgsIDB4N0IyOCwgMHgwQjQ5LAorICAgIDB4N0IyOSwgMHg3QjI5LCAweDM3NDgsIDB4N0IyQSwgMHg3QjJBLCAweDFGRDYsIDB4N0IyQiwgMHg3QjJCLCAweDFGRDksCisgICAgMHg3QjJDLCAweDdCMkMsIDB4MEI0QiwgMHg3QjJELCAweDdCMkQsIDB4MUZEQSwgMHg3QjJFLCAweDdCMkUsIDB4MEI0RiwKKyAgICAweDdCMkYsIDB4N0IyRiwgMHgxRkRCLCAweDdCMzAsIDB4N0IzMCwgMHgxRkQxLCAweDdCMzEsIDB4N0IzMSwgMHgxRkQ4LAorICAgIDB4N0IzMiwgMHg3QjMyLCAweDFGREMsIDB4N0IzMywgMHg3QjMzLCAweDFGRDQsIDB4N0IzNCwgMHg3QjM0LCAweDFGQ0YsCisgICAgMHg3QjM1LCAweDdCMzUsIDB4MUZDRCwgMHg3QjM4LCAweDdCMzgsIDB4MUZERCwgMHg3QjM5LCAweDdCMzksIDB4M0Q2RSwKKyAgICAweDdCM0IsIDB4N0IzQiwgMHgxRkNFLCAweDdCNDAsIDB4N0I0MCwgMHgyMjU5LCAweDdCNDIsIDB4N0I0MiwgMHgzREVELAorICAgIDB4N0I0MywgMHg3QjQzLCAweDNFMjUsIDB4N0I0NCwgMHg3QjQ0LCAweDIyNTUsIDB4N0I0NSwgMHg3QjQ1LCAweDIyNUIsCisgICAgMHg3QjQ2LCAweDdCNDYsIDB4MEQwNSwgMHg3QjQ3LCAweDdCNDcsIDB4MjI1NCwgMHg3QjQ4LCAweDdCNDgsIDB4MjI1NiwKKyAgICAweDdCNDksIDB4N0I0OSwgMHgwRDAzLCAweDdCNEEsIDB4N0I0QSwgMHgyMjUzLCAweDdCNEIsIDB4N0I0QiwgMHgwRDBBLAorICAgIDB4N0I0QywgMHg3QjRDLCAweDIyNTcsIDB4N0I0RCwgMHg3QjRELCAweDBEMDksIDB4N0I0RSwgMHg3QjRFLCAweDIyNTgsCisgICAgMHg3QjRGLCAweDdCNEYsIDB4MEQwQiwgMHg3QjUwLCAweDdCNTAsIDB4MEQwNiwgMHg3QjUxLCAweDdCNTEsIDB4MEQwQywKKyAgICAweDdCNTIsIDB4N0I1MiwgMHgwRDA3LCAweDdCNTQsIDB4N0I1NCwgMHgwRDA4LCAweDdCNTUsIDB4N0I1NSwgMHgzNzQ3LAorICAgIDB4N0I1NiwgMHg3QjU2LCAweDBEMDQsIDB4N0I1OCwgMHg3QjU4LCAweDIyNUEsIDB4N0I2MCwgMHg3QjYwLCAweDBFQjgsCisgICAgMHg3QjYxLCAweDdCNjEsIDB4MjRGOCwgMHg3QjYyLCAweDdCNjIsIDB4NDcyNywgMHg3QjYzLCAweDdCNjMsIDB4MjRGQiwKKyAgICAweDdCNjQsIDB4N0I2NCwgMHgyNEVGLCAweDdCNjUsIDB4N0I2NSwgMHgyNEY0LCAweDdCNjYsIDB4N0I2NiwgMHgyNEVFLAorICAgIDB4N0I2NywgMHg3QjY3LCAweDBFQkEsIDB4N0I2OSwgMHg3QjY5LCAweDI0RjIsIDB4N0I2QywgMHg3QjZDLCAweDQ3MjgsCisgICAgMHg3QjZELCAweDdCNkQsIDB4MjRGMCwgMHg3QjZFLCAweDdCNkUsIDB4MEVCOSwgMHg3QjZGLCAweDdCNkYsIDB4Mzc0QywKKyAgICAweDdCNzAsIDB4N0I3MCwgMHgyNEY3LCAweDdCNzEsIDB4N0I3MSwgMHgyNEY2LCAweDdCNzIsIDB4N0I3MiwgMHgyNEYzLAorICAgIDB4N0I3MywgMHg3QjczLCAweDI0RjUsIDB4N0I3NCwgMHg3Qjc0LCAweDI0RjEsIDB4N0I3NSwgMHg3Qjc1LCAweDEwNTAsCisgICAgMHg3Qjc2LCAweDdCNzYsIDB4MjRGQSwgMHg3Qjc3LCAweDdCNzcsIDB4MEVCNiwgMHg3Qjc4LCAweDdCNzgsIDB4MjRGOSwKKyAgICAweDdCN0IsIDB4N0I3QiwgMHg0NzI5LCAweDdCODIsIDB4N0I4MiwgMHgyNzc5LCAweDdCODQsIDB4N0I4NCwgMHgxMDU3LAorICAgIDB4N0I4NSwgMHg3Qjg1LCAweDI3NzQsIDB4N0I4NywgMHg3Qjg3LCAweDEwNTYsIDB4N0I4OCwgMHg3Qjg4LCAweDI3NkEsCisgICAgMHg3QjhBLCAweDdCOEEsIDB4Mjc2QywgMHg3QjhCLCAweDdCOEIsIDB4MTA0RiwgMHg3QjhDLCAweDdCOEMsIDB4Mjc3MSwKKyAgICAweDdCOEQsIDB4N0I4RCwgMHgyNzcwLCAweDdCOEUsIDB4N0I4RSwgMHgyNzczLCAweDdCOEYsIDB4N0I4RiwgMHgxMDU0LAorICAgIDB4N0I5MCwgMHg3QjkwLCAweDI3NkUsIDB4N0I5MSwgMHg3QjkxLCAweDI3NkQsIDB4N0I5MiwgMHg3QjkyLCAweDM3NTIsCisgICAgMHg3Qjk0LCAweDdCOTQsIDB4MTA1MywgMHg3Qjk1LCAweDdCOTUsIDB4MTA0RSwgMHg3Qjk2LCAweDdCOTYsIDB4Mjc2RiwKKyAgICAweDdCOTcsIDB4N0I5NywgMHgxMDUxLCAweDdCOTgsIDB4N0I5OCwgMHgyNzc1LCAweDdCOTksIDB4N0I5OSwgMHgyNzc3LAorICAgIDB4N0I5QiwgMHg3QjlCLCAweDI3NzIsIDB4N0I5QywgMHg3QjlDLCAweDI3NkIsIDB4N0I5RCwgMHg3QjlELCAweDEwNTIsCisgICAgMHg3QkEwLCAweDdCQTAsIDB4MTFEMiwgMHg3QkExLCAweDdCQTEsIDB4MTA0RCwgMHg3QkEyLCAweDdCQTIsIDB4Mzc0QiwKKyAgICAweDdCQTMsIDB4N0JBMywgMHgzRjE0LCAweDdCQTQsIDB4N0JBNCwgMHgyNzc4LCAweDdCQUMsIDB4N0JBQywgMHgyOUFBLAorICAgIDB4N0JBRCwgMHg3QkFELCAweDExQ0IsIDB4N0JBRiwgMHg3QkFGLCAweDI5QUMsIDB4N0JCMSwgMHg3QkIxLCAweDExQ0MsCisgICAgMHg3QkIyLCAweDdCQjIsIDB4NDYxQywgMHg3QkI0LCAweDdCQjQsIDB4MTFDRSwgMHg3QkI1LCAweDdCQjUsIDB4MjlBRiwKKyAgICAweDdCQjcsIDB4N0JCNywgMHgyOUE3LCAweDdCQjgsIDB4N0JCOCwgMHgxMDU1LCAweDdCQjksIDB4N0JCOSwgMHgyOUFELAorICAgIDB4N0JCRSwgMHg3QkJFLCAweDI5QTksIDB4N0JDMCwgMHg3QkMwLCAweDBFQjcsIDB4N0JDMSwgMHg3QkMxLCAweDExRDEsCisgICAgMHg3QkM0LCAweDdCQzQsIDB4MTFDRCwgMHg3QkM2LCAweDdCQzcsIDB4MTFDRiwgMHg3QkM5LCAweDdCQzksIDB4MTMxOCwKKyAgICAweDdCQ0EsIDB4N0JDQSwgMHgyOUFFLCAweDdCQ0IsIDB4N0JDQiwgMHgyOUE4LCAweDdCQ0MsIDB4N0JDQywgMHgxMUQzLAorICAgIDB4N0JDRSwgMHg3QkNFLCAweDI5QUIsIDB4N0JDRiwgMHg3QkNGLCAweDNGMTgsIDB4N0JEMCwgMHg3QkQwLCAweDM3NTAsCisgICAgMHg3QkQ0LCAweDdCRDQsIDB4MkMwNywgMHg3QkQ1LCAweDdCRDUsIDB4MkMwMiwgMHg3QkQ4LCAweDdCRDgsIDB4MkMwQywKKyAgICAweDdCRDksIDB4N0JEOSwgMHgxMzE2LCAweDdCREEsIDB4N0JEQSwgMHgyQzA0LCAweDdCREIsIDB4N0JEQiwgMHgxMzFBLAorICAgIDB4N0JEQywgMHg3QkRDLCAweDJDMEEsIDB4N0JERCwgMHg3QkRELCAweDJDMDEsIDB4N0JERSwgMHg3QkRFLCAweDJCRkUsCisgICAgMHg3QkRGLCAweDdCREYsIDB4MkMwRCwgMHg3QkUwLCAweDdCRTAsIDB4MTQyRCwgMHg3QkUxLCAweDdCRTEsIDB4MTMxQiwKKyAgICAweDdCRTIsIDB4N0JFMiwgMHgyQzA5LCAweDdCRTMsIDB4N0JFMywgMHgyQkZGLCAweDdCRTQsIDB4N0JFNCwgMHgxMzE5LAorICAgIDB4N0JFNSwgMHg3QkU1LCAweDJDMDMsIDB4N0JFNiwgMHg3QkU2LCAweDEzMUQsIDB4N0JFNywgMHg3QkU3LCAweDJDMDAsCisgICAgMHg3QkU4LCAweDdCRTgsIDB4MkMwNSwgMHg3QkU5LCAweDdCRTksIDB4MTMxQywgMHg3QkVBLCAweDdCRUEsIDB4MkMwOCwKKyAgICAweDdCRUIsIDB4N0JFQiwgMHgyQzBCLCAweDdCRjAsIDB4N0JGMSwgMHgyREU5LCAweDdCRjIsIDB4N0JGMiwgMHgyRERBLAorICAgIDB4N0JGMywgMHg3QkYzLCAweDJERTEsIDB4N0JGNCwgMHg3QkY0LCAweDJEREYsIDB4N0JGNywgMHg3QkY3LCAweDE0MkIsCisgICAgMHg3QkY4LCAweDdCRjgsIDB4MkRFNiwgMHg3QkY5LCAweDdCRjksIDB4MkMwNiwgMHg3QkZBLCAweDdCRkEsIDB4Mzc1NywKKyAgICAweDdCRkIsIDB4N0JGQiwgMHgyRERELCAweDdCRkMsIDB4N0JGQywgMHgzRjFGLCAweDdCRkQsIDB4N0JGRCwgMHgyREU3LAorICAgIDB4N0JGRSwgMHg3QkZFLCAweDE0MkEsIDB4N0JGRiwgMHg3QkZGLCAweDJEREMsIDB4N0MwMCwgMHg3QzAwLCAweDJEREIsCisgICAgMHg3QzAxLCAweDdDMDEsIDB4MkRFNSwgMHg3QzAyLCAweDdDMDIsIDB4MkRFMiwgMHg3QzAzLCAweDdDMDMsIDB4MkRFNCwKKyAgICAweDdDMDUsIDB4N0MwNSwgMHgyREQ4LCAweDdDMDYsIDB4N0MwNiwgMHgyREU4LCAweDdDMDcsIDB4N0MwNywgMHgxNDI4LAorICAgIDB4N0MwOSwgMHg3QzA5LCAweDJERTMsIDB4N0MwQSwgMHg3QzBBLCAweDJERUMsIDB4N0MwQiwgMHg3QzBCLCAweDJERTAsCisgICAgMHg3QzBDLCAweDdDMEMsIDB4MTQyQywgMHg3QzBELCAweDdDMEQsIDB4MTQyOSwgMHg3QzBFLCAweDdDMEUsIDB4MkRERSwKKyAgICAweDdDMEYsIDB4N0MwRiwgMHgyREQ5LCAweDdDMTAsIDB4N0MxMCwgMHgyREVCLCAweDdDMTEsIDB4N0MxMSwgMHgxMzE3LAorICAgIDB4N0MxMiwgMHg3QzEyLCAweDQ3MkEsIDB4N0MxNSwgMHg3QzE1LCAweDQwNjEsIDB4N0MxOSwgMHg3QzE5LCAweDJGNzgsCisgICAgMHg3QzFCLCAweDdDMUIsIDB4NDNEOSwgMHg3QzFDLCAweDdDMUMsIDB4MkY3NiwgMHg3QzFELCAweDdDMUQsIDB4MkY3QywKKyAgICAweDdDMUUsIDB4N0MxRSwgMHgxNTA4LCAweDdDMUYsIDB4N0MxRiwgMHgyRjdBLCAweDdDMjAsIDB4N0MyMCwgMHgyRjc5LAorICAgIDB4N0MyMSwgMHg3QzIxLCAweDE1MEEsIDB4N0MyMiwgMHg3QzIyLCAweDJGN0YsIDB4N0MyMywgMHg3QzIzLCAweDE1MDksCisgICAgMHg3QzI1LCAweDdDMjUsIDB4MkY4MCwgMHg3QzI2LCAweDdDMjYsIDB4MkY3RCwgMHg3QzI3LCAweDdDMjcsIDB4MTUwNiwKKyAgICAweDdDMjgsIDB4N0MyOCwgMHgyRjdFLCAweDdDMjksIDB4N0MyOSwgMHgyRjc3LCAweDdDMkEsIDB4N0MyQSwgMHgxNTA3LAorICAgIDB4N0MyQiwgMHg3QzJCLCAweDE1MDUsIDB4N0MyQywgMHg3QzJDLCAweDMwRDYsIDB4N0MyRCwgMHg3QzJELCAweDJGN0IsCisgICAgMHg3QzMwLCAweDdDMzAsIDB4MkY4MSwgMHg3QzMzLCAweDdDMzMsIDB4MzBEMywgMHg3QzM1LCAweDdDMzUsIDB4Mzc1OSwKKyAgICAweDdDMzcsIDB4N0MzNywgMHgxNUE3LCAweDdDMzgsIDB4N0MzOCwgMHgxNUE1LCAweDdDMzksIDB4N0MzOSwgMHgzMEQ1LAorICAgIDB4N0MzQiwgMHg3QzNCLCAweDMwRDcsIDB4N0MzQywgMHg3QzNDLCAweDMwRDQsIDB4N0MzRCwgMHg3QzNELCAweDE1QTYsCisgICAgMHg3QzNFLCAweDdDM0YsIDB4MTVBMywgMHg3QzQwLCAweDdDNDAsIDB4MTVBOCwgMHg3QzQyLCAweDdDNDIsIDB4M0YxQywKKyAgICAweDdDNDMsIDB4N0M0MywgMHgxNjJCLCAweDdDNDQsIDB4N0M0NCwgMHgzNzVCLCAweDdDNDUsIDB4N0M0NSwgMHgzMjEyLAorICAgIDB4N0M0NywgMHg3QzQ3LCAweDMyMTEsIDB4N0M0OCwgMHg3QzQ4LCAweDMyMEYsIDB4N0M0OSwgMHg3QzQ5LCAweDMyMEUsCisgICAgMHg3QzRBLCAweDdDNEEsIDB4MzIxMCwgMHg3QzRDLCAweDdDNEMsIDB4MTYyQSwgMHg3QzRELCAweDdDNEQsIDB4MTYyQywKKyAgICAweDdDNTAsIDB4N0M1MCwgMHgxNjgxLCAweDdDNTEsIDB4N0M1MSwgMHgzRkI4LCAweDdDNTMsIDB4N0M1MywgMHgzMkVBLAorICAgIDB4N0M1NCwgMHg3QzU0LCAweDMyRTksIDB4N0M1NiwgMHg3QzU2LCAweDNFRkYsIDB4N0M1NywgMHg3QzU3LCAweDMzOUIsCisgICAgMHg3QzU5LCAweDdDNTksIDB4MzM5RCwgMHg3QzVBLCAweDdDNUEsIDB4MzM5RiwgMHg3QzVCLCAweDdDNUIsIDB4MzM5RSwKKyAgICAweDdDNUMsIDB4N0M1QywgMHgzMzlDLCAweDdDNUQsIDB4N0M1RCwgMHgzQjNGLCAweDdDNUYsIDB4N0M1RiwgMHgxNkQxLAorICAgIDB4N0M2MCwgMHg3QzYwLCAweDE2RDAsIDB4N0M2MywgMHg3QzYzLCAweDE3MDEsIDB4N0M2NCwgMHg3QzY0LCAweDE3MDAsCisgICAgMHg3QzY1LCAweDdDNjUsIDB4MTcwMiwgMHg3QzY2LCAweDdDNjYsIDB4MzQyQiwgMHg3QzY3LCAweDdDNjcsIDB4MzQyQSwKKyAgICAweDdDNjksIDB4N0M2OSwgMHgzNEQ2LCAweDdDNkEsIDB4N0M2QSwgMHgzNDkzLCAweDdDNkIsIDB4N0M2QiwgMHgzNEQ3LAorICAgIDB4N0M2QywgMHg3QzZDLCAweDE3NDUsIDB4N0M2RCwgMHg3QzZELCAweDNCNDAsIDB4N0M2RSwgMHg3QzZFLCAweDE3NDYsCisgICAgMHg3QzZGLCAweDdDNkYsIDB4MzUwNywgMHg3QzcwLCAweDdDNzAsIDB4M0Y1MiwgMHg3QzcyLCAweDdDNzIsIDB4MTc2QiwKKyAgICAweDdDNzMsIDB4N0M3MywgMHgwM0Y3LCAweDdDNzQsIDB4N0M3NCwgMHg0NjlDLCAweDdDNzUsIDB4N0M3NSwgMHgxQTI1LAorICAgIDB4N0M3OCwgMHg3Qzc5LCAweDFCQkIsIDB4N0M3QSwgMHg3QzdBLCAweDFCQkEsIDB4N0M3QiwgMHg3QzdCLCAweDQ3MkQsCisgICAgMHg3QzdDLCAweDdDN0MsIDB4M0I0OSwgMHg3QzdELCAweDdDN0QsIDB4MDdDQywgMHg3QzdFLCAweDdDN0UsIDB4M0YxQSwKKyAgICAweDdDN0YsIDB4N0M4MSwgMHgxQkJELCAweDdDODMsIDB4N0M4MywgMHgzNzVDLCAweDdDODQsIDB4N0M4NCwgMHgxRDk2LAorICAgIDB4N0M4NSwgMHg3Qzg1LCAweDFEOUMsIDB4N0M4NiwgMHg3Qzg2LCAweDNGMUQsIDB4N0M4OCwgMHg3Qzg4LCAweDFEOUEsCisgICAgMHg3Qzg5LCAweDdDODksIDB4MDk2QSwgMHg3QzhBLCAweDdDOEEsIDB4MUQ5OCwgMHg3QzhDLCAweDdDOEMsIDB4MUQ5OSwKKyAgICAweDdDOEQsIDB4N0M4RCwgMHgxRDlCLCAweDdDOEUsIDB4N0M4RSwgMHgzQjQ4LCAweDdDOTEsIDB4N0M5MSwgMHgxRDk3LAorICAgIDB4N0M5MiwgMHg3QzkyLCAweDBCNTAsIDB4N0M5NCwgMHg3Qzk0LCAweDFGRTAsIDB4N0M5NSwgMHg3Qzk1LCAweDBCNTIsCisgICAgMHg3Qzk2LCAweDdDOTYsIDB4MUZFMiwgMHg3Qzk3LCAweDdDOTcsIDB4MEI1MSwgMHg3Qzk4LCAweDdDOTgsIDB4MUZFMSwKKyAgICAweDdDOUMsIDB4N0M5QywgMHg0NzJFLCAweDdDOUUsIDB4N0M5RSwgMHgyMjVELCAweDdDOUYsIDB4N0M5RiwgMHgwRDBELAorICAgIDB4N0NBMSwgMHg3Q0ExLCAweDIyNUYsIDB4N0NBMiwgMHg3Q0EyLCAweDIyNUMsIDB4N0NBMywgMHg3Q0EzLCAweDFGRTMsCisgICAgMHg3Q0E1LCAweDdDQTUsIDB4MEQwRSwgMHg3Q0E2LCAweDdDQTYsIDB4Mzc1RSwgMHg3Q0E3LCAweDdDQTcsIDB4MzZFRCwKKyAgICAweDdDQTgsIDB4N0NBOCwgMHgyMjVFLCAweDdDQUMsIDB4N0NBQywgMHgzODg1LCAweDdDQUUsIDB4N0NBRSwgMHgzQjRBLAorICAgIDB4N0NBRiwgMHg3Q0FGLCAweDI0RkUsIDB4N0NCMSwgMHg3Q0IxLCAweDBFQkIsIDB4N0NCMiwgMHg3Q0IyLCAweDI0RkMsCisgICAgMHg3Q0IzLCAweDdDQjMsIDB4MEVCQywgMHg3Q0I0LCAweDdDQjQsIDB4MjRGRCwgMHg3Q0I1LCAweDdDQjUsIDB4MEVCRCwKKyAgICAweDdDQjgsIDB4N0NCOCwgMHg0NzMwLCAweDdDQjksIDB4N0NCOSwgMHgxMDU4LCAweDdDQkEsIDB4N0NCQSwgMHgyNzdELAorICAgIDB4N0NCQiwgMHg3Q0JCLCAweDI3N0EsIDB4N0NCQywgMHg3Q0JDLCAweDI3N0MsIDB4N0NCRCwgMHg3Q0JFLCAweDEwNTksCisgICAgMHg3Q0JGLCAweDdDQkYsIDB4Mjc3QiwgMHg3Q0MyLCAweDdDQzIsIDB4M0ZENywgMHg3Q0M1LCAweDdDQzUsIDB4MjlCMCwKKyAgICAweDdDQzcsIDB4N0NDNywgMHgzNzYxLCAweDdDQzgsIDB4N0NDOCwgMHgyOUIxLCAweDdDQzksIDB4N0NDOSwgMHgzNzYwLAorICAgIDB4N0NDQSwgMHg3Q0NBLCAweDExRDQsIDB4N0NDQiwgMHg3Q0NCLCAweDI5QjMsIDB4N0NDQywgMHg3Q0NDLCAweDI5QjIsCisgICAgMHg3Q0NELCAweDdDQ0QsIDB4M0I0NSwgMHg3Q0NFLCAweDdDQ0UsIDB4MDEyMSwgMHg3Q0QwLCAweDdDRDEsIDB4MkMxMSwKKyAgICAweDdDRDIsIDB4N0NEMiwgMHgyQzBFLCAweDdDRDMsIDB4N0NEMywgMHgzRDVDLCAweDdDRDQsIDB4N0NENCwgMHgyQzBGLAorICAgIDB4N0NENSwgMHg3Q0Q2LCAweDEzMUUsIDB4N0NENywgMHg3Q0Q3LCAweDJDMTAsIDB4N0NEOSwgMHg3Q0Q5LCAweDE0MzMsCisgICAgMHg3Q0RBLCAweDdDREEsIDB4M0ZEOSwgMHg3Q0RDLCAweDdDREMsIDB4MTQyRiwgMHg3Q0RELCAweDdDREQsIDB4MTQzNCwKKyAgICAweDdDREUsIDB4N0NERSwgMHgxNDMwLCAweDdDREYsIDB4N0NERiwgMHgxNDMyLCAweDdDRTAsIDB4N0NFMCwgMHgxNDJFLAorICAgIDB4N0NFMiwgMHg3Q0UyLCAweDE0MzEsIDB4N0NFNiwgMHg3Q0U2LCAweDM3NjIsIDB4N0NFNywgMHg3Q0U3LCAweDE1MEIsCisgICAgMHg3Q0U4LCAweDdDRTgsIDB4MkRFRCwgMHg3Q0VBLCAweDdDRUEsIDB4MzBEOSwgMHg3Q0VDLCAweDdDRUMsIDB4MzBEOCwKKyAgICAweDdDRUQsIDB4N0NFRCwgMHg0M0RBLCAweDdDRUUsIDB4N0NFRSwgMHgzMjEzLCAweDdDRUYsIDB4N0NGMCwgMHgxNjJELAorICAgIDB4N0NGMSwgMHg3Q0YxLCAweDMzQTEsIDB4N0NGMiwgMHg3Q0YyLCAweDMyRUIsIDB4N0NGMywgMHg3Q0YzLCAweDM3NjQsCisgICAgMHg3Q0Y0LCAweDdDRjQsIDB4MzNBMCwgMHg3Q0Y1LCAweDdDRjUsIDB4Mzc2NSwgMHg3Q0Y2LCAweDdDRjYsIDB4MzREOCwKKyAgICAweDdDRjcsIDB4N0NGNywgMHgzNTFELCAweDdDRjgsIDB4N0NGOCwgMHgwM0Y4LCAweDdDRjksIDB4N0NGOSwgMHg0NEY4LAorICAgIDB4N0NGQiwgMHg3Q0ZCLCAweDA0RkIsIDB4N0NGQywgMHg3Q0ZDLCAweDQ1NkQsIDB4N0NGRCwgMHg3Q0ZELCAweDFBMjYsCisgICAgMHg3Q0ZFLCAweDdDRkUsIDB4MDY2NywgMHg3RDAwLCAweDdEMDAsIDB4MDdDRiwgMHg3RDAxLCAweDdEMDEsIDB4MUJDMiwKKyAgICAweDdEMDIsIDB4N0QwMiwgMHgwN0NELCAweDdEMDMsIDB4N0QwMywgMHgxQkMwLCAweDdEMDQsIDB4N0QwNCwgMHgwN0QyLAorICAgIDB4N0QwNSwgMHg3RDA1LCAweDA3Q0UsIDB4N0QwNiwgMHg3RDA2LCAweDA3RDMsIDB4N0QwNywgMHg3RDA3LCAweDA3RDEsCisgICAgMHg3RDA4LCAweDdEMDgsIDB4MUJDMSwgMHg3RDA5LCAweDdEMDksIDB4MDdEMCwgMHg3RDBBLCAweDdEMEEsIDB4MDk2RSwKKyAgICAweDdEMEIsIDB4N0QwQiwgMHgwOTZELCAweDdEMEMsIDB4N0QwQywgMHgxREE3LCAweDdEMEQsIDB4N0QwRCwgMHgwOTc2LAorICAgIDB4N0QwRSwgMHg3RDBFLCAweDFEQTAsIDB4N0QwRiwgMHg3RDBGLCAweDFEQTYsIDB4N0QxMCwgMHg3RDEwLCAweDA5NzIsCisgICAgMHg3RDExLCAweDdEMTEsIDB4MUQ5RiwgMHg3RDEyLCAweDdEMTIsIDB4MURBNSwgMHg3RDEzLCAweDdEMTMsIDB4MURBMywKKyAgICAweDdEMTQsIDB4N0QxNCwgMHgwOTcxLCAweDdEMTUsIDB4N0QxNSwgMHgwOTczLCAweDdEMTYsIDB4N0QxNiwgMHgxREEyLAorICAgIDB4N0QxNywgMHg3RDE3LCAweDA5NkMsIDB4N0QxOCwgMHg3RDE4LCAweDFEQTEsIDB4N0QxOSwgMHg3RDE5LCAweDA5NzcsCisgICAgMHg3RDFBLCAweDdEMUEsIDB4MDk3NCwgMHg3RDFCLCAweDdEMUIsIDB4MDk3OCwgMHg3RDFDLCAweDdEMUMsIDB4MDk3NSwKKyAgICAweDdEMUQsIDB4N0QxRCwgMHgxRDlFLCAweDdEMUUsIDB4N0QxRSwgMHgxRDlELCAweDdEMUYsIDB4N0QxRiwgMHgxREE0LAorICAgIDB4N0QyMCwgMHg3RDIwLCAweDA5NkYsIDB4N0QyMSwgMHg3RDIxLCAweDA5NkIsIDB4N0QyMiwgMHg3RDIyLCAweDA5NzAsCisgICAgMHg3RDI1LCAweDdEMjUsIDB4M0VERSwgMHg3RDI4LCAweDdEMjgsIDB4MUZGMiwgMHg3RDI5LCAweDdEMjksIDB4MUZFQiwKKyAgICAweDdEMkIsIDB4N0QyQiwgMHgwRDEzLCAweDdEMkMsIDB4N0QyQywgMHgxRkVBLCAweDdEMkUsIDB4N0QyRSwgMHgwQjU2LAorICAgIDB4N0QyRiwgMHg3RDJGLCAweDBCNUQsIDB4N0QzMCwgMHg3RDMwLCAweDBCNUEsIDB4N0QzMSwgMHg3RDMxLCAweDBCNjAsCisgICAgMHg3RDMyLCAweDdEMzIsIDB4MEI1RiwgMHg3RDMzLCAweDdEMzMsIDB4MEI1QiwgMHg3RDM1LCAweDdEMzUsIDB4MUZFNCwKKyAgICAweDdEMzYsIDB4N0QzNiwgMHgxRkU3LCAweDdEMzgsIDB4N0QzOCwgMHgxRkU2LCAweDdEMzksIDB4N0QzOSwgMHgwQjU3LAorICAgIDB4N0QzQSwgMHg3RDNBLCAweDFGRTgsIDB4N0QzQiwgMHg3RDNCLCAweDFGRjEsIDB4N0QzQywgMHg3RDNDLCAweDBCNTgsCisgICAgMHg3RDNELCAweDdEM0QsIDB4MUZFNSwgMHg3RDNFLCAweDdEM0YsIDB4MUZFRSwgMHg3RDQwLCAweDdENDAsIDB4MEI1OSwKKyAgICAweDdENDEsIDB4N0Q0MSwgMHgxRkVDLCAweDdENDIsIDB4N0Q0MiwgMHgwQjVFLCAweDdENDMsIDB4N0Q0MywgMHgwQjU0LAorICAgIDB4N0Q0NCwgMHg3RDQ0LCAweDBCNUMsIDB4N0Q0NSwgMHg3RDQ1LCAweDFGRTksIDB4N0Q0NiwgMHg3RDQ2LCAweDBCNTMsCisgICAgMHg3RDQ3LCAweDdENDcsIDB4MUZFRCwgMHg3RDRBLCAweDdENEEsIDB4MUZGMCwgMHg3RDRELCAweDdENEQsIDB4M0ZERCwKKyAgICAweDdENEUsIDB4N0Q0RSwgMHgyMjcwLCAweDdENEYsIDB4N0Q0RiwgMHgyMjY3LCAweDdENTAsIDB4N0Q1MCwgMHgwRDEwLAorICAgIDB4N0Q1MSwgMHg3RDUxLCAweDIyNkUsIDB4N0Q1MiwgMHg3RDUyLCAweDIyNkIsIDB4N0Q1MywgMHg3RDUzLCAweDIyNjMsCisgICAgMHg3RDU0LCAweDdENTQsIDB4MjI2QywgMHg3RDU1LCAweDdENTUsIDB4MEQxMiwgMHg3RDU2LCAweDdENTYsIDB4MjI2NCwKKyAgICAweDdENTgsIDB4N0Q1OCwgMHgyMjYwLCAweDdENUEsIDB4N0Q1QSwgMHgzRTkzLCAweDdENUIsIDB4N0Q1QiwgMHgwRUMzLAorICAgIDB4N0Q1QywgMHg3RDVDLCAweDIyNjksIDB4N0Q1RCwgMHg3RDVELCAweDM3NjksIDB4N0Q1RSwgMHg3RDVFLCAweDBEMEYsCisgICAgMHg3RDVGLCAweDdENUYsIDB4MjI2RiwgMHg3RDYxLCAweDdENjEsIDB4MEQxNiwgMHg3RDYyLCAweDdENjIsIDB4MEQxOCwKKyAgICAweDdENjMsIDB4N0Q2MywgMHgyMjYyLCAweDdENjYsIDB4N0Q2NiwgMHgwRDE3LCAweDdENjcsIDB4N0Q2NywgMHgyMjY1LAorICAgIDB4N0Q2OCwgMHg3RDY4LCAweDBEMTEsIDB4N0Q2OSwgMHg3RDY5LCAweDIyNkQsIDB4N0Q2QSwgMHg3RDZBLCAweDIyNjYsCisgICAgMHg3RDZCLCAweDdENkIsIDB4MjI2QSwgMHg3RDZELCAweDdENkQsIDB4MjI2OCwgMHg3RDZFLCAweDdENkUsIDB4MEQxNCwKKyAgICAweDdENkYsIDB4N0Q2RiwgMHgyMjYxLCAweDdENzAsIDB4N0Q3MCwgMHgwRDE5LCAweDdENzEsIDB4N0Q3MSwgMHgwQjU1LAorICAgIDB4N0Q3MiwgMHg3RDcyLCAweDBEMTUsIDB4N0Q3MywgMHg3RDczLCAweDBEMUEsIDB4N0Q3OSwgMHg3RDc5LCAweDBFQkYsCisgICAgMHg3RDdBLCAweDdEN0EsIDB4MjUwNSwgMHg3RDdCLCAweDdEN0IsIDB4MjUwNywgMHg3RDdDLCAweDdEN0MsIDB4MjUwOSwKKyAgICAweDdEN0QsIDB4N0Q3RCwgMHgyNTBELCAweDdEN0YsIDB4N0Q3RiwgMHgyNTAzLCAweDdEODAsIDB4N0Q4MCwgMHgyNTAxLAorICAgIDB4N0Q4MSwgMHg3RDgxLCAweDBFQzEsIDB4N0Q4MywgMHg3RDgzLCAweDI1MDgsIDB4N0Q4NCwgMHg3RDg0LCAweDI1MEMsCisgICAgMHg3RDg1LCAweDdEODUsIDB4MjUwNCwgMHg3RDg2LCAweDdEODYsIDB4MjUwMCwgMHg3RDg4LCAweDdEODgsIDB4MjRGRiwKKyAgICAweDdEODksIDB4N0Q4OSwgMHgzNzZCLCAweDdEOEMsIDB4N0Q4QywgMHgyNTBBLCAweDdEOEQsIDB4N0Q4RCwgMHgyNTAyLAorICAgIDB4N0Q4RSwgMHg3RDhFLCAweDI1MDYsIDB4N0Q4RiwgMHg3RDhGLCAweDBFQzIsIDB4N0Q5MSwgMHg3RDkxLCAweDBFQzAsCisgICAgMHg3RDkyLCAweDdEOTIsIDB4MjUwRSwgMHg3RDkzLCAweDdEOTMsIDB4MEVCRSwgMHg3RDk0LCAweDdEOTQsIDB4MjUwQiwKKyAgICAweDdEOTYsIDB4N0Q5NiwgMHgyNzhFLCAweDdEOTcsIDB4N0Q5NywgMHgzQjUzLCAweDdEOUMsIDB4N0Q5QywgMHgxMDVELAorICAgIDB4N0Q5RCwgMHg3RDlELCAweDI3ODYsIDB4N0Q5RSwgMHg3RDlFLCAweDExRTEsIDB4N0Q5RiwgMHg3RDlGLCAweDI3OTAsCisgICAgMHg3REEwLCAweDdEQTAsIDB4MTA2MCwgMHg3REExLCAweDdEQTEsIDB4Mjc5NCwgMHg3REEyLCAweDdEQTIsIDB4MTA2NiwKKyAgICAweDdEQTMsIDB4N0RBMywgMHgyNzgxLCAweDdEQTQsIDB4N0RBNCwgMHg0NkQ3LCAweDdEQTYsIDB4N0RBNiwgMHgyNzkxLAorICAgIDB4N0RBNywgMHg3REE3LCAweDI3N0UsIDB4N0RBOCwgMHg3REE4LCAweDNDOUMsIDB4N0RBOSwgMHg3REE5LCAweDI3OTMsCisgICAgMHg3REFBLCAweDdEQUEsIDB4Mjc4MiwgMHg3REFCLCAweDdEQUIsIDB4Mzc2QywgMHg3REFDLCAweDdEQUMsIDB4MTA2RCwKKyAgICAweDdEQUQsIDB4N0RBRCwgMHgxMDZBLCAweDdEQUUsIDB4N0RBRSwgMHgyNzkyLCAweDdEQUYsIDB4N0RBRiwgMHgyNzhDLAorICAgIDB4N0RCMCwgMHg3REIwLCAweDEwNUMsIDB4N0RCMSwgMHg3REIxLCAweDEwNjQsIDB4N0RCMiwgMHg3REIyLCAweDEwNjMsCisgICAgMHg3REIzLCAweDdEQjMsIDB4Mzc2RSwgMHg3REI0LCAweDdEQjQsIDB4MTA2MiwgMHg3REI1LCAweDdEQjUsIDB4MTA2OCwKKyAgICAweDdEQjcsIDB4N0RCNywgMHgyNzdGLCAweDdEQjgsIDB4N0RCOCwgMHgxMDY5LCAweDdEQjksIDB4N0RCOSwgMHgyNzhELAorICAgIDB4N0RCQSwgMHg3REJBLCAweDEwNjUsIDB4N0RCQiwgMHg3REJCLCAweDEwNUIsIDB4N0RCQywgMHg3REJDLCAweDI3OEYsCisgICAgMHg3REJELCAweDdEQkUsIDB4MTA1RSwgMHg3REJGLCAweDdEQkYsIDB4MTA2NywgMHg3REMwLCAweDdEQzAsIDB4Mjc4NCwKKyAgICAweDdEQzEsIDB4N0RDMSwgMHgyNzgzLCAweDdEQzIsIDB4N0RDMiwgMHgyNzgwLCAweDdEQzQsIDB4N0RDNCwgMHgyNzg4LAorICAgIDB4N0RDNSwgMHg3REM1LCAweDI3ODUsIDB4N0RDNiwgMHg3REM2LCAweDI3ODksIDB4N0RDNywgMHg3REM3LCAweDEwNkMsCisgICAgMHg3REM5LCAweDdEQzksIDB4Mjc5NSwgMHg3RENBLCAweDdEQ0EsIDB4MTA2MSwgMHg3RENCLCAweDdEQ0MsIDB4Mjc4QSwKKyAgICAweDdEQ0QsIDB4N0RDRCwgMHg0NTZFLCAweDdEQ0UsIDB4N0RDRSwgMHgyNzg3LCAweDdEQ0YsIDB4N0RDRiwgMHg0NzM1LAorICAgIDB4N0REMCwgMHg3REQwLCAweDQ3MzcsIDB4N0REMiwgMHg3REQyLCAweDEwNkIsIDB4N0REMywgMHg3REQzLCAweDNCNEUsCisgICAgMHg3REQ0LCAweDdERDQsIDB4NDczNiwgMHg3REQ2LCAweDdERDYsIDB4Mzc2RiwgMHg3REQ3LCAweDdERDcsIDB4MjlCOCwKKyAgICAweDdERDgsIDB4N0REOCwgMHgxMUQ5LCAweDdERDksIDB4N0REOSwgMHgxMUUyLCAweDdEREEsIDB4N0REQSwgMHgxMURFLAorICAgIDB4N0REQiwgMHg3RERCLCAweDI5QjUsIDB4N0REQywgMHg3RERDLCAweDNCNEMsIDB4N0RERCwgMHg3RERELCAweDExREIsCisgICAgMHg3RERFLCAweDdEREUsIDB4MTFERiwgMHg3RERGLCAweDdEREYsIDB4MjlDMSwgMHg3REUwLCAweDdERTAsIDB4MTFENSwKKyAgICAweDdERTEsIDB4N0RFMSwgMHgyOUI5LCAweDdERTMsIDB4N0RFMywgMHgxMURELCAweDdERTQsIDB4N0RFNCwgMHgzNzcyLAorICAgIDB4N0RFNSwgMHg3REU1LCAweDM3NzYsIDB4N0RFNiwgMHg3REU2LCAweDI5QkMsIDB4N0RFNywgMHg3REU3LCAweDI5QjcsCisgICAgMHg3REU4LCAweDdERTgsIDB4MTFEQywgMHg3REU5LCAweDdERTksIDB4MTFFMCwgMHg3REVBLCAweDdERUEsIDB4MjlCNiwKKyAgICAweDdERUMsIDB4N0RFQywgMHgxMURBLCAweDdERUUsIDB4N0RFRSwgMHgyOUMwLCAweDdERUYsIDB4N0RFRiwgMHgxMUQ3LAorICAgIDB4N0RGMCwgMHg3REYwLCAweDI5QkYsIDB4N0RGMSwgMHg3REYxLCAweDI5QkUsIDB4N0RGMiwgMHg3REYyLCAweDExRTMsCisgICAgMHg3REYzLCAweDdERjMsIDB4MjhDOCwgMHg3REY0LCAweDdERjQsIDB4MTFENiwgMHg3REY1LCAweDdERjUsIDB4Mzc3NCwKKyAgICAweDdERjYsIDB4N0RGNiwgMHgyOUJELCAweDdERjcsIDB4N0RGNywgMHgyOUI0LCAweDdERjksIDB4N0RGOSwgMHgxMUU0LAorICAgIDB4N0RGQSwgMHg3REZBLCAweDI5QkIsIDB4N0RGQiwgMHg3REZCLCAweDExRDgsIDB4N0RGRCwgMHg3REZELCAweDQ3MzgsCisgICAgMHg3REZFLCAweDdERkUsIDB4M0NDRiwgMHg3RTAzLCAweDdFMDMsIDB4MjlCQSwgMHg3RTA3LCAweDdFMDcsIDB4M0I0RCwKKyAgICAweDdFMDgsIDB4N0UwOCwgMHgxMzIyLCAweDdFMDksIDB4N0UwOSwgMHgxMzI3LCAweDdFMEEsIDB4N0UwQSwgMHgxMzIwLAorICAgIDB4N0UwQiwgMHg3RTBCLCAweDJDMUYsIDB4N0UwQywgMHg3RTBDLCAweDJDMTYsIDB4N0UwRCwgMHg3RTBELCAweDJDMjIsCisgICAgMHg3RTBFLCAweDdFMEUsIDB4MkMxQSwgMHg3RTBGLCAweDdFMEYsIDB4MkMyMCwgMHg3RTEwLCAweDdFMTAsIDB4MTMyOCwKKyAgICAweDdFMTEsIDB4N0UxMSwgMHgxMzIxLCAweDdFMTIsIDB4N0UxMiwgMHgyQzEzLCAweDdFMTMsIDB4N0UxMywgMHgyQzE5LAorICAgIDB4N0UxNCwgMHg3RTE0LCAweDJDMjMsIDB4N0UxNSwgMHg3RTE1LCAweDJDMUMsIDB4N0UxNiwgMHg3RTE2LCAweDJDMjEsCisgICAgMHg3RTE3LCAweDdFMTcsIDB4MkMxNSwgMHg3RTFBLCAweDdFMUEsIDB4MkMxRCwgMHg3RTFCLCAweDdFMUIsIDB4MTMyMywKKyAgICAweDdFMUMsIDB4N0UxQywgMHgyQzFCLCAweDdFMUQsIDB4N0UxRCwgMHgxMzI2LCAweDdFMUUsIDB4N0UxRSwgMHgxMzI1LAorICAgIDB4N0UxRiwgMHg3RTIwLCAweDJDMTcsIDB4N0UyMSwgMHg3RTIxLCAweDJDMTQsIDB4N0UyMiwgMHg3RTIyLCAweDJDMUUsCisgICAgMHg3RTIzLCAweDdFMjMsIDB4MTMyNCwgMHg3RTI0LCAweDdFMjQsIDB4MkMyNSwgMHg3RTI1LCAweDdFMjUsIDB4MkMyNCwKKyAgICAweDdFMjcsIDB4N0UyNywgMHgzNzdGLCAweDdFMjksIDB4N0UyOSwgMHgyREY4LCAweDdFMkEsIDB4N0UyQSwgMHgyREY0LAorICAgIDB4N0UyQiwgMHg3RTJCLCAweDE0M0IsIDB4N0UyRCwgMHg3RTJELCAweDJERUUsIDB4N0UyRSwgMHg3RTJFLCAweDE0MzUsCisgICAgMHg3RTJGLCAweDdFMkYsIDB4MTQ0NSwgMHg3RTMwLCAweDdFMzAsIDB4MkRGQSwgMHg3RTMxLCAweDdFMzEsIDB4MTQzRCwKKyAgICAweDdFMzIsIDB4N0UzMiwgMHgxNDM5LCAweDdFMzMsIDB4N0UzMywgMHgyREYxLCAweDdFMzQsIDB4N0UzNCwgMHgxNDQwLAorICAgIDB4N0UzNSwgMHg3RTM1LCAweDE0NDMsIDB4N0UzNiwgMHg3RTM2LCAweDJERkMsIDB4N0UzNywgMHg3RTM3LCAweDE0MzgsCisgICAgMHg3RTM4LCAweDdFMzgsIDB4MkRGMywgMHg3RTM5LCAweDdFMzksIDB4MTQ0MSwgMHg3RTNBLCAweDdFM0EsIDB4MkRGRSwKKyAgICAweDdFM0IsIDB4N0UzQiwgMHgyREZCLCAweDdFM0MsIDB4N0UzQywgMHgyREVGLCAweDdFM0QsIDB4N0UzRCwgMHgxNDNDLAorICAgIDB4N0UzRSwgMHg3RTNFLCAweDE0MzYsIDB4N0UzRiwgMHg3RTNGLCAweDE0NDQsIDB4N0U0MCwgMHg3RTQwLCAweDJERjYsCisgICAgMHg3RTQxLCAweDdFNDEsIDB4MTQzRiwgMHg3RTQyLCAweDdFNDIsIDB4MkRGMCwgMHg3RTQzLCAweDdFNDMsIDB4MTQzQSwKKyAgICAweDdFNDQsIDB4N0U0NCwgMHgyREZELCAweDdFNDUsIDB4N0U0NSwgMHgxNDNFLCAweDdFNDYsIDB4N0U0NiwgMHgxNDM3LAorICAgIDB4N0U0NywgMHg3RTQ3LCAweDJERjcsIDB4N0U0OCwgMHg3RTQ4LCAweDE0NDIsIDB4N0U0OSwgMHg3RTQ5LCAweDJERjUsCisgICAgMHg3RTRDLCAweDdFNEMsIDB4MkRGOSwgMHg3RTUwLCAweDdFNTAsIDB4MkY4MywgMHg3RTUxLCAweDdFNTEsIDB4MkY4OSwKKyAgICAweDdFNTIsIDB4N0U1MiwgMHgxNTExLCAweDdFNTMsIDB4N0U1MywgMHgyRjhDLCAweDdFNTQsIDB4N0U1NSwgMHgxNTBDLAorICAgIDB4N0U1NiwgMHg3RTU2LCAweDJGODQsIDB4N0U1NywgMHg3RTU3LCAweDJGOEIsIDB4N0U1OCwgMHg3RTU4LCAweDJGODYsCisgICAgMHg3RTU5LCAweDdFNTksIDB4MTUxMiwgMHg3RTVBLCAweDdFNUEsIDB4MTUwRiwgMHg3RTVDLCAweDdFNUMsIDB4MkY4MiwKKyAgICAweDdFNUUsIDB4N0U1RSwgMHgxNTBFLCAweDdFNUYsIDB4N0U1RiwgMHgyRjg4LCAweDdFNjAsIDB4N0U2MCwgMHgyRjhBLAorICAgIDB4N0U2MSwgMHg3RTYxLCAweDE1MTAsIDB4N0U2MiwgMHg3RTYyLCAweDJGODcsIDB4N0U2MywgMHg3RTYzLCAweDJGODUsCisgICAgMHg3RTY1LCAweDdFNjUsIDB4NDZEMiwgMHg3RTY3LCAweDdFNjcsIDB4Mzc2NiwgMHg3RTY4LCAweDdFNjgsIDB4MzBFMywKKyAgICAweDdFNjksIDB4N0U2QSwgMHgxNUFDLCAweDdFNkIsIDB4N0U2QiwgMHgxNUE5LCAweDdFNkQsIDB4N0U2RCwgMHgxNUFBLAorICAgIDB4N0U2RSwgMHg3RTZFLCAweDM3N0IsIDB4N0U2RiwgMHg3RTZGLCAweDMwREYsIDB4N0U3MCwgMHg3RTcwLCAweDMwREQsCisgICAgMHg3RTcyLCAweDdFNzIsIDB4MzBFMSwgMHg3RTczLCAweDdFNzMsIDB4MTVBRSwgMHg3RTc0LCAweDdFNzQsIDB4MzBFMiwKKyAgICAweDdFNzUsIDB4N0U3NSwgMHgzMERCLCAweDdFNzYsIDB4N0U3NiwgMHgzMERBLCAweDdFNzcsIDB4N0U3NywgMHgzMERFLAorICAgIDB4N0U3OCwgMHg3RTc4LCAweDMwREMsIDB4N0U3OSwgMHg3RTc5LCAweDE1QUIsIDB4N0U3QSwgMHg3RTdBLCAweDMwRTAsCisgICAgMHg3RTdCLCAweDdFN0IsIDB4MzIxNCwgMHg3RTdDLCAweDdFN0MsIDB4MTYzMSwgMHg3RTdELCAweDdFN0QsIDB4MTYzMCwKKyAgICAweDdFN0UsIDB4N0U3RSwgMHgzMjE1LCAweDdFN0YsIDB4N0U3RiwgMHgzRTUxLCAweDdFODAsIDB4N0U4MCwgMHgzMjE3LAorICAgIDB4N0U4MSwgMHg3RTgxLCAweDMyMTYsIDB4N0U4MiwgMHg3RTgyLCAweDE2MzIsIDB4N0U4NiwgMHg3RTg2LCAweDMyRjAsCisgICAgMHg3RTg3LCAweDdFODgsIDB4MzJFRCwgMHg3RThBLCAweDdFOEEsIDB4MzJFQywgMHg3RThCLCAweDdFOEIsIDB4MzJFRiwKKyAgICAweDdFOEMsIDB4N0U4QywgMHgxNjgzLCAweDdFOEQsIDB4N0U4RCwgMHgzMkYxLCAweDdFOEUsIDB4N0U4RSwgMHgzRUM5LAorICAgIDB4N0U4RiwgMHg3RThGLCAweDE2ODIsIDB4N0U5MSwgMHg3RTkxLCAweDMzQTIsIDB4N0U5MiwgMHg3RTkyLCAweDQ2OUUsCisgICAgMHg3RTkzLCAweDdFOTMsIDB4MTcwMywgMHg3RTk0LCAweDdFOTQsIDB4MTcwNSwgMHg3RTk1LCAweDdFOTUsIDB4MzQyQywKKyAgICAweDdFOTYsIDB4N0U5NiwgMHgxNzA0LCAweDdFOTcsIDB4N0U5NywgMHgzNDk0LCAweDdFOTgsIDB4N0U5OCwgMHgzNERBLAorICAgIDB4N0U5OSwgMHg3RTk5LCAweDM0REMsIDB4N0U5QSwgMHg3RTlBLCAweDM0RDksIDB4N0U5QiwgMHg3RTlCLCAweDM0REIsCisgICAgMHg3RTlDLCAweDdFOUMsIDB4MTc1OSwgMHg3RTlGLCAweDdFOUYsIDB4NDhCQiwgMHg3RUE0LCAweDdFQTQsIDB4NDU1QiwKKyAgICAweDdFQUMsIDB4N0VBQywgMHg0NTVDLCAweDdFQkEsIDB4N0VCQSwgMHg0NTVELCAweDdFQzcsIDB4N0VDNywgMHg0NTVFLAorICAgIDB4N0VDRiwgMHg3RUNGLCAweDQ1NUYsIDB4N0VERiwgMHg3RURGLCAweDQ1NjAsIDB4N0YwNiwgMHg3RjA2LCAweDQ1NjEsCisgICAgMHg3RjM2LCAweDdGMzYsIDB4MDNGOSwgMHg3RjM3LCAweDdGMzcsIDB4NDU2MiwgMHg3RjM4LCAweDdGMzgsIDB4MDdENCwKKyAgICAweDdGMzksIDB4N0YzOSwgMHgxRDFGLCAweDdGM0EsIDB4N0YzQSwgMHgwOTc5LCAweDdGM0QsIDB4N0YzRCwgMHgwQjYxLAorICAgIDB4N0YzRSwgMHg3RjNGLCAweDIyNzEsIDB4N0Y0MCwgMHg3RjQxLCAweDM3ODAsIDB4N0Y0MywgMHg3RjQzLCAweDJDMjYsCisgICAgMHg3RjQ0LCAweDdGNDQsIDB4MTQ0NiwgMHg3RjQ1LCAweDdGNDUsIDB4MkRGRiwgMHg3RjQ3LCAweDdGNDcsIDB4Mzc4MiwKKyAgICAweDdGNDgsIDB4N0Y0OCwgMHgxNTEzLCAweDdGNDksIDB4N0Y0OSwgMHgzRTY5LCAweDdGNEEsIDB4N0Y0QSwgMHgzMEU1LAorICAgIDB4N0Y0QiwgMHg3RjRCLCAweDMwRTQsIDB4N0Y0QywgMHg3RjRDLCAweDE2MzMsIDB4N0Y0RCwgMHg3RjRELCAweDMyRjIsCisgICAgMHg3RjRFLCAweDdGNEUsIDB4M0I0RiwgMHg3RjRGLCAweDdGNEYsIDB4MzNBMywgMHg3RjUwLCAweDdGNTAsIDB4MTcyNiwKKyAgICAweDdGNTEsIDB4N0Y1MSwgMHgxODEyLCAweDdGNTIsIDB4N0Y1MiwgMHg0NEY2LCAweDdGNTMsIDB4N0Y1MywgMHg0NEY5LAorICAgIDB4N0Y1NCwgMHg3RjU0LCAweDA2NjgsIDB4N0Y1NSwgMHg3RjU1LCAweDA0RkMsIDB4N0Y1OCwgMHg3RjU4LCAweDFCQzMsCisgICAgMHg3RjVCLCAweDdGNUIsIDB4MURBRCwgMHg3RjVDLCAweDdGNUMsIDB4MURBOCwgMHg3RjVELCAweDdGNUQsIDB4MURBQywKKyAgICAweDdGNUUsIDB4N0Y1RSwgMHgxREFBLCAweDdGNUYsIDB4N0Y1RiwgMHgwOTdBLCAweDdGNjAsIDB4N0Y2MCwgMHgxREFCLAorICAgIDB4N0Y2MSwgMHg3RjYxLCAweDFEQTksIDB4N0Y2MywgMHg3RjYzLCAweDFGRjMsIDB4N0Y2NSwgMHg3RjY2LCAweDIyNzMsCisgICAgMHg3RjY3LCAweDdGNjgsIDB4MjUxMSwgMHg3RjY5LCAweDdGNkEsIDB4MEVDNSwgMHg3RjZCLCAweDdGNkIsIDB4MjUxMCwKKyAgICAweDdGNkMsIDB4N0Y2QywgMHgyNTEzLCAweDdGNkQsIDB4N0Y2RCwgMHgyNTBGLCAweDdGNkUsIDB4N0Y2RSwgMHgwRUM0LAorICAgIDB4N0Y3MCwgMHg3RjcwLCAweDEwNkUsIDB4N0Y3MSwgMHg3RjcxLCAweDQwMDcsIDB4N0Y3MiwgMHg3RjcyLCAweDBFQzcsCisgICAgMHg3RjczLCAweDdGNzMsIDB4Mjc5NiwgMHg3Rjc1LCAweDdGNzUsIDB4MTFFNSwgMHg3Rjc2LCAweDdGNzYsIDB4MjlDMiwKKyAgICAweDdGNzcsIDB4N0Y3NywgMHgxMUU2LCAweDdGNzgsIDB4N0Y3OCwgMHgzRjdCLCAweDdGNzksIDB4N0Y3OSwgMHgxMzI5LAorICAgIDB4N0Y3QSwgMHg3RjdBLCAweDJDMjksIDB4N0Y3QiwgMHg3RjdDLCAweDJDMjcsIDB4N0Y3RCwgMHg3RjdELCAweDJFMDIsCisgICAgMHg3RjdFLCAweDdGN0UsIDB4MkUwMSwgMHg3RjdGLCAweDdGN0YsIDB4MkUwMCwgMHg3RjgzLCAweDdGODMsIDB4MzBFNiwKKyAgICAweDdGODUsIDB4N0Y4NSwgMHgxNUFGLCAweDdGODYsIDB4N0Y4NiwgMHgzMEU3LCAweDdGODcsIDB4N0Y4NywgMHgzM0E0LAorICAgIDB4N0Y4OCwgMHg3Rjg4LCAweDE3MjcsIDB4N0Y4OSwgMHg3Rjg5LCAweDM0OTUsIDB4N0Y4QSwgMHg3RjhBLCAweDAzRkEsCisgICAgMHg3RjhCLCAweDdGOEIsIDB4MDY2QSwgMHg3RjhDLCAweDdGOEMsIDB4MDY2OSwgMHg3RjhELCAweDdGOEQsIDB4MUJDNSwKKyAgICAweDdGOEUsIDB4N0Y4RSwgMHgwN0Q1LCAweDdGOEYsIDB4N0Y4RiwgMHg0MjFDLCAweDdGOTEsIDB4N0Y5MSwgMHgxQkM0LAorICAgIDB4N0Y5MiwgMHg3RjkyLCAweDFEQUYsIDB4N0Y5MywgMHg3RjkzLCAweDQzREIsIDB4N0Y5NCwgMHg3Rjk0LCAweDA5N0IsCisgICAgMHg3Rjk1LCAweDdGOTUsIDB4MUZGNCwgMHg3Rjk2LCAweDdGOTYsIDB4MURBRSwgMHg3Rjk3LCAweDdGOTcsIDB4Mzc4NiwKKyAgICAweDdGOUEsIDB4N0Y5QSwgMHgwQjYzLCAweDdGOUIsIDB4N0Y5QiwgMHgxRkY3LCAweDdGOUMsIDB4N0Y5RCwgMHgxRkY1LAorICAgIDB4N0Y5RSwgMHg3RjlFLCAweDBCNjIsIDB4N0ZBMCwgMHg3RkExLCAweDIyNzYsIDB4N0ZBMiwgMHg3RkEyLCAweDIyNzUsCisgICAgMHg3RkEzLCAweDdGQTMsIDB4Mzc4OCwgMHg3RkE0LCAweDdGQTQsIDB4MEVDQSwgMHg3RkE1LCAweDdGQTUsIDB4MjUxNSwKKyAgICAweDdGQTYsIDB4N0ZBNiwgMHgyNTE0LCAweDdGQTcsIDB4N0ZBNywgMHgyNTE2LCAweDdGQTgsIDB4N0ZBOCwgMHgwRUM5LAorICAgIDB4N0ZBOSwgMHg3RkE5LCAweDBFQzgsIDB4N0ZBQywgMHg3RkFDLCAweDI5QzMsIDB4N0ZBRCwgMHg3RkFELCAweDI5QzUsCisgICAgMHg3RkFFLCAweDdGQUUsIDB4NDNEQywgMHg3RkFGLCAweDdGQUYsIDB4MTFFNywgMHg3RkIwLCAweDdGQjAsIDB4MjlDNCwKKyAgICAweDdGQjEsIDB4N0ZCMSwgMHgyQzJBLCAweDdGQjIsIDB4N0ZCMiwgMHgxMzJBLCAweDdGQjMsIDB4N0ZCMywgMHgyRjhFLAorICAgIDB4N0ZCNCwgMHg3RkI0LCAweDQ3MzksIDB4N0ZCNSwgMHg3RkI1LCAweDJGOEQsIDB4N0ZCNiwgMHg3RkI2LCAweDE1QjAsCisgICAgMHg3RkI3LCAweDdGQjcsIDB4MzBFOCwgMHg3RkI4LCAweDdGQjgsIDB4MTVCMiwgMHg3RkI5LCAweDdGQjksIDB4MTVCMSwKKyAgICAweDdGQkEsIDB4N0ZCQSwgMHgzMjE4LCAweDdGQkIsIDB4N0ZCQiwgMHgzMkYzLCAweDdGQkMsIDB4N0ZCQywgMHgxNjg0LAorICAgIDB4N0ZCRCwgMHg3RkJELCAweDAzRkIsIDB4N0ZCRSwgMHg3RkJFLCAweDFCQzYsIDB4N0ZCRiwgMHg3RkJGLCAweDA3RDYsCisgICAgMHg3RkMwLCAweDdGQzAsIDB4MURCMiwgMHg3RkMxLCAweDdGQzEsIDB4MDk3RCwgMHg3RkMyLCAweDdGQzIsIDB4MURCMSwKKyAgICAweDdGQzMsIDB4N0ZDMywgMHgxREIwLCAweDdGQzUsIDB4N0ZDNSwgMHgwOTdDLCAweDdGQzcsIDB4N0ZDNywgMHgxRkZELAorICAgIDB4N0ZDOSwgMHg3RkM5LCAweDFGRkYsIDB4N0ZDQSwgMHg3RkNCLCAweDFGRjgsIDB4N0ZDQywgMHg3RkNDLCAweDBCNjQsCisgICAgMHg3RkNELCAweDdGQ0QsIDB4MUZGQSwgMHg3RkNFLCAweDdGQ0UsIDB4MEI2NSwgMHg3RkNGLCAweDdGQ0YsIDB4MUZGRSwKKyAgICAweDdGRDAsIDB4N0ZEMSwgMHgxRkZCLCAweDdGRDIsIDB4N0ZEMiwgMHgwQjY2LCAweDdGRDQsIDB4N0ZENSwgMHgwRDFDLAorICAgIDB4N0ZENywgMHg3RkQ3LCAweDIyNzgsIDB4N0ZEQiwgMHg3RkRDLCAweDI1MTcsIDB4N0ZERCwgMHg3RkRELCAweDNCNUUsCisgICAgMHg3RkRFLCAweDdGREUsIDB4Mjc5QSwgMHg3RkRGLCAweDdGREYsIDB4MTA3MSwgMHg3RkUwLCAweDdGRTEsIDB4MTA2RiwKKyAgICAweDdGRTIsIDB4N0ZFMywgMHgyNzk3LCAweDdGRTUsIDB4N0ZFNSwgMHgyNzk5LCAweDdGRTYsIDB4N0ZFNiwgMHgyOUNBLAorICAgIDB4N0ZFNywgMHg3RkU3LCAweDQ2RTksIDB4N0ZFOCwgMHg3RkU4LCAweDI5Q0IsIDB4N0ZFOSwgMHg3RkU5LCAweDExRTgsCisgICAgMHg3RkVBLCAweDdGRUEsIDB4MjlDOCwgMHg3RkVCLCAweDdGRUIsIDB4MjlDNywgMHg3RkVDLCAweDdGRUMsIDB4MjlDOSwKKyAgICAweDdGRUQsIDB4N0ZFRCwgMHgyOUM2LCAweDdGRUUsIDB4N0ZFRSwgMHgxMzJELCAweDdGRUYsIDB4N0ZFRiwgMHgyQzJCLAorICAgIDB4N0ZGMCwgMHg3RkYxLCAweDEzMkIsIDB4N0ZGMiwgMHg3RkYyLCAweDJFMDQsIDB4N0ZGMywgMHg3RkYzLCAweDE0NDcsCisgICAgMHg3RkY0LCAweDdGRjQsIDB4MkUwMywgMHg3RkY1LCAweDdGRjUsIDB4MkVGRiwgMHg3RkY3LCAweDdGRjgsIDB4MkY4RiwKKyAgICAweDdGRjksIDB4N0ZGOSwgMHgxNTE0LCAweDdGRkEsIDB4N0ZGQSwgMHgzNzhFLCAweDdGRkIsIDB4N0ZGQiwgMHgxNTE1LAorICAgIDB4N0ZGQywgMHg3RkZDLCAweDE0NDgsIDB4N0ZGRCwgMHg3RkZFLCAweDMwRTksIDB4N0ZGRiwgMHg3RkZGLCAweDMyMTksCisgICAgMHg4MDAwLCAweDgwMDAsIDB4MTYzNCwgMHg4MDAxLCAweDgwMDEsIDB4MDNGQywgMHg4MDAyLCAweDgwMDIsIDB4NDRGRCwKKyAgICAweDgwMDMsIDB4ODAwMywgMHgwM0ZELCAweDgwMDQsIDB4ODAwNCwgMHgwOTdGLCAweDgwMDUsIDB4ODAwNSwgMHgwNjZCLAorICAgIDB4ODAwNiwgMHg4MDA2LCAweDA5N0UsIDB4ODAwNywgMHg4MDA3LCAweDFCQzcsIDB4ODAwOCwgMHg4MDA4LCAweDM3OTEsCisgICAgMHg4MDBCLCAweDgwMEIsIDB4MEQxRSwgMHg4MDBDLCAweDgwMEMsIDB4MDNGRSwgMHg4MDBELCAweDgwMEQsIDB4MDdEOCwKKyAgICAweDgwMEUsIDB4ODAwRiwgMHgxQkM4LCAweDgwMTAsIDB4ODAxMCwgMHgwN0Q3LCAweDgwMTEsIDB4ODAxMSwgMHgwN0Q5LAorICAgIDB4ODAxMiwgMHg4MDEyLCAweDAzRkYsIDB4ODAxNCwgMHg4MDE0LCAweDFCQ0EsIDB4ODAxNSwgMHg4MDE1LCAweDA5ODEsCisgICAgMHg4MDE2LCAweDgwMTYsIDB4MURCMywgMHg4MDE3LCAweDgwMTcsIDB4MDk4MywgMHg4MDE4LCAweDgwMTgsIDB4MDk4MCwKKyAgICAweDgwMTksIDB4ODAxOSwgMHgwOTgyLCAweDgwMUIsIDB4ODAxQiwgMHgyMDAyLCAweDgwMUMsIDB4ODAxQywgMHgwQjY3LAorICAgIDB4ODAxRCwgMHg4MDFELCAweDM3OTIsIDB4ODAxRSwgMHg4MDFFLCAweDIwMDEsIDB4ODAxRiwgMHg4MDFGLCAweDIwMDAsCisgICAgMHg4MDIwLCAweDgwMjAsIDB4NDczQywgMHg4MDIxLCAweDgwMjEsIDB4MjUxOSwgMHg4MDI0LCAweDgwMjQsIDB4Mjc5QiwKKyAgICAweDgwMjUsIDB4ODAyNSwgMHg0NzNELCAweDgwMjYsIDB4ODAyNiwgMHgxMUU5LCAweDgwMjgsIDB4ODAyOCwgMHgxMzJFLAorICAgIDB4ODAyOSwgMHg4MDI5LCAweDJDMkQsIDB4ODAyQSwgMHg4MDJBLCAweDJDMkMsIDB4ODAyQywgMHg4MDJDLCAweDJFMDUsCisgICAgMHg4MDJFLCAweDgwMkUsIDB4NDczRSwgMHg4MDJGLCAweDgwMkYsIDB4Mzc5NCwgMHg4MDMwLCAweDgwMzAsIDB4MzJGNCwKKyAgICAweDgwMzEsIDB4ODAzMSwgMHg0NzNGLCAweDgwMzMsIDB4ODAzMywgMHgwNDAwLCAweDgwMzQsIDB4ODAzNCwgMHgxOEQ4LAorICAgIDB4ODAzNSwgMHg4MDM1LCAweDFBMjcsIDB4ODAzNiwgMHg4MDM2LCAweDA3REEsIDB4ODAzNywgMHg4MDM3LCAweDFCQ0IsCisgICAgMHg4MDM5LCAweDgwMzksIDB4MURCNSwgMHg4MDNCLCAweDgwM0MsIDB4Mzc5NywgMHg4MDNELCAweDgwM0QsIDB4MDk4NCwKKyAgICAweDgwM0UsIDB4ODAzRSwgMHgxREI0LCAweDgwM0YsIDB4ODAzRiwgMHgwOTg1LCAweDgwNDMsIDB4ODA0MywgMHgyMDA0LAorICAgIDB4ODA0NiwgMHg4MDQ2LCAweDBCNjksIDB4ODA0NywgMHg4MDQ3LCAweDIwMDMsIDB4ODA0OCwgMHg4MDQ4LCAweDIwMDUsCisgICAgMHg4MDRBLCAweDgwNEEsIDB4MEI2OCwgMHg4MDRGLCAweDgwNTAsIDB4MjI3QSwgMHg4MDUxLCAweDgwNTEsIDB4MjI3OSwKKyAgICAweDgwNTIsIDB4ODA1MiwgMHgwRDFGLCAweDgwNTQsIDB4ODA1NCwgMHg0NzQwLCAweDgwNTYsIDB4ODA1NiwgMHgwRUNCLAorICAgIDB4ODA1OCwgMHg4MDU4LCAweDBFQ0MsIDB4ODA1QSwgMHg4MDVBLCAweDEwNzMsIDB4ODA1QiwgMHg4MDVCLCAweDNGRTUsCisgICAgMHg4MDVDLCAweDgwNUMsIDB4Mjc5RCwgMHg4MDVELCAweDgwNUQsIDB4Mjc5QywgMHg4MDVFLCAweDgwNUUsIDB4MTA3MiwKKyAgICAweDgwNjEsIDB4ODA2MSwgMHgzNzk5LCAweDgwNjIsIDB4ODA2MiwgMHgzRkUzLCAweDgwNjMsIDB4ODA2MywgMHgzRkRDLAorICAgIDB4ODA2NCwgMHg4MDY0LCAweDI5Q0MsIDB4ODA2NiwgMHg4MDY2LCAweDNGREIsIDB4ODA2NywgMHg4MDY3LCAweDI5Q0QsCisgICAgMHg4MDZDLCAweDgwNkMsIDB4MkMyRSwgMHg4MDZGLCAweDgwNkYsIDB4MTQ0QywgMHg4MDcwLCAweDgwNzAsIDB4MTQ0QiwKKyAgICAweDgwNzEsIDB4ODA3MiwgMHgxNDQ5LCAweDgwNzMsIDB4ODA3MywgMHgxNDRELCAweDgwNzUsIDB4ODA3NSwgMHgyRjkxLAorICAgIDB4ODA3NiwgMHg4MDc2LCAweDE1MTcsIDB4ODA3NywgMHg4MDc3LCAweDE1MTYsIDB4ODA3OCwgMHg4MDc4LCAweDMwRUIsCisgICAgMHg4MDc5LCAweDgwNzksIDB4MzIxQSwgMHg4MDdELCAweDgwN0QsIDB4MTZEMywgMHg4MDdFLCAweDgwN0UsIDB4MTZEMiwKKyAgICAweDgwN0YsIDB4ODA3RiwgMHgwNDAxLCAweDgwODAsIDB4ODA4MCwgMHg0NEZFLCAweDgwODIsIDB4ODA4MiwgMHgxQ0VDLAorICAgIDB4ODA4NCwgMHg4MDg0LCAweDBFQ0UsIDB4ODA4NSwgMHg4MDg1LCAweDBEMjAsIDB4ODA4NiwgMHg4MDg2LCAweDBFQ0QsCisgICAgMHg4MDg3LCAweDgwODcsIDB4MTA3NCwgMHg4MDg5LCAweDgwODksIDB4MDQwMiwgMHg4MDhBLCAweDgwOEEsIDB4MTdCMywKKyAgICAweDgwOEIsIDB4ODA4QywgMHgwNDAzLCAweDgwOEYsIDB4ODA4RiwgMHgxQTI4LCAweDgwOTAsIDB4ODA5MCwgMHgxOERCLAorICAgIDB4ODA5MiwgMHg4MDkyLCAweDE4REMsIDB4ODA5MywgMHg4MDkzLCAweDA0RkUsIDB4ODA5NSwgMHg4MDk1LCAweDE4RDksCisgICAgMHg4MDk2LCAweDgwOTYsIDB4MDRGRCwgMHg4MDk4LCAweDgwOTgsIDB4MDUwMCwgMHg4MDk5LCAweDgwOTksIDB4MThEQSwKKyAgICAweDgwOUEsIDB4ODA5QSwgMHgwNTAyLCAweDgwOUIsIDB4ODA5QiwgMHgwNTAxLCAweDgwOUMsIDB4ODA5QywgMHgxOERELAorICAgIDB4ODA5RCwgMHg4MDlELCAweDA0RkYsIDB4ODA5RiwgMHg4MDlGLCAweDQ1NzYsIDB4ODBBMSwgMHg4MEExLCAweDA2NzAsCisgICAgMHg4MEEyLCAweDgwQTIsIDB4MDY2RSwgMHg4MEEzLCAweDgwQTMsIDB4MUEyQSwgMHg4MEE1LCAweDgwQTUsIDB4MDY2RCwKKyAgICAweDgwQTcsIDB4ODBBNywgMHgzN0EwLCAweDgwQTksIDB4ODBBOSwgMHgwNjcyLCAweDgwQUEsIDB4ODBBQSwgMHgwNjc0LAorICAgIDB4ODBBQiwgMHg4MEFCLCAweDA2NzEsIDB4ODBBRCwgMHg4MEFELCAweDFBMkQsIDB4ODBBRSwgMHg4MEFFLCAweDFBMjksCisgICAgMHg4MEFGLCAweDgwQUYsIDB4MDY3NSwgMHg4MEIxLCAweDgwQjEsIDB4MDY2RiwgMHg4MEIyLCAweDgwQjIsIDB4MDUwMywKKyAgICAweDgwQjQsIDB4ODBCNCwgMHgwNjczLCAweDgwQjUsIDB4ODBCNSwgMHgxQTJDLCAweDgwQjYsIDB4ODBCNiwgMHgzRUFFLAorICAgIDB4ODBCNywgMHg4MEI3LCAweDQ3NDMsIDB4ODBCOCwgMHg4MEI4LCAweDFBMkIsIDB4ODBCQSwgMHg4MEJBLCAweDA2NkMsCisgICAgMHg4MEJDLCAweDgwQkMsIDB4NDU3MiwgMHg4MEJELCAweDgwQkQsIDB4M0U3QiwgMHg4MEMyLCAweDgwQzIsIDB4MUJEMSwKKyAgICAweDgwQzMsIDB4ODBDNCwgMHgwN0RFLCAweDgwQzUsIDB4ODBDNSwgMHgxQkQzLCAweDgwQzYsIDB4ODBDNiwgMHgzQjc0LAorICAgIDB4ODBDNywgMHg4MEM3LCAweDFCQ0QsIDB4ODBDOCwgMHg4MEM4LCAweDFCRDAsIDB4ODBDOSwgMHg4MEM5LCAweDFCRDksCisgICAgMHg4MENBLCAweDgwQ0EsIDB4MUJENywgMHg4MENDLCAweDgwQ0MsIDB4MDdFMCwgMHg4MENELCAweDgwQ0QsIDB4MUJERCwKKyAgICAweDgwQ0UsIDB4ODBDRSwgMHgwN0UzLCAweDgwQ0YsIDB4ODBDRiwgMHgxQkRBLCAweDgwRDAsIDB4ODBEMCwgMHgxQkQyLAorICAgIDB4ODBEMSwgMHg4MEQxLCAweDFCQ0YsIDB4ODBENCwgMHg4MEQ0LCAweDIyN0QsIDB4ODBENSwgMHg4MEQ1LCAweDFCRDgsCisgICAgMHg4MEQ2LCAweDgwRDYsIDB4MDdEQiwgMHg4MEQ3LCAweDgwRDcsIDB4MUJEQiwgMHg4MEQ4LCAweDgwRDgsIDB4MUJDQywKKyAgICAweDgwRDksIDB4ODBEOSwgMHgxQkQ1LCAweDgwREEsIDB4ODBEQSwgMHgwN0RELCAweDgwREIsIDB4ODBEQiwgMHgwN0UyLAorICAgIDB4ODBEQywgMHg4MERDLCAweDFCRDYsIDB4ODBERCwgMHg4MERELCAweDA3RTYsIDB4ODBERSwgMHg4MERFLCAweDA3RTQsCisgICAgMHg4MEUwLCAweDgwRTAsIDB4MUJDRSwgMHg4MEUxLCAweDgwRTEsIDB4MDdFMSwgMHg4MEUzLCAweDgwRTMsIDB4MUJENCwKKyAgICAweDgwRTQsIDB4ODBFNCwgMHgwN0U1LCAweDgwRTUsIDB4ODBFNSwgMHgwN0RDLCAweDgwRTYsIDB4ODBFNiwgMHgxQkRDLAorICAgIDB4ODBFOSwgMHg4MEU5LCAweDQ3NDQsIDB4ODBFQywgMHg4MEVDLCAweDQ1RTksIDB4ODBFRCwgMHg4MEVELCAweDA5OEEsCisgICAgMHg4MEVGLCAweDgwRUYsIDB4MDk5MywgMHg4MEYwLCAweDgwRjAsIDB4MDk4OCwgMHg4MEYxLCAweDgwRjEsIDB4MDk4NiwKKyAgICAweDgwRjIsIDB4ODBGMiwgMHgxREI3LCAweDgwRjMsIDB4ODBGMywgMHgwOThFLCAweDgwRjQsIDB4ODBGNCwgMHgwOThCLAorICAgIDB4ODBGNSwgMHg4MEY1LCAweDFEQjksIDB4ODBGNiwgMHg4MEY2LCAweDQ1NzQsIDB4ODBGOCwgMHg4MEY4LCAweDA5OEQsCisgICAgMHg4MEY5LCAweDgwRjksIDB4MURCOCwgMHg4MEZBLCAweDgwRkEsIDB4MURCNiwgMHg4MEZCLCAweDgwRkIsIDB4MURCQiwKKyAgICAweDgwRkMsIDB4ODBGQywgMHgwOTkyLCAweDgwRkQsIDB4ODBGRCwgMHgwOTkwLCAweDgwRkUsIDB4ODBGRSwgMHgyMjdDLAorICAgIDB4ODEwMCwgMHg4MTAwLCAweDFEQkMsIDB4ODEwMSwgMHg4MTAxLCAweDFEQkEsIDB4ODEwMiwgMHg4MTAyLCAweDA5ODcsCisgICAgMHg4MTAzLCAweDgxMDMsIDB4M0ZFNywgMHg4MTA1LCAweDgxMDUsIDB4MDk4OSwgMHg4MTA2LCAweDgxMDYsIDB4MDk4QywKKyAgICAweDgxMDcsIDB4ODEwNywgMHgzN0EyLCAweDgxMDgsIDB4ODEwOCwgMHgwOThGLCAweDgxMDksIDB4ODEwOSwgMHgzQjc1LAorICAgIDB4ODEwQSwgMHg4MTBBLCAweDA5OTEsIDB4ODEwQywgMHg4MTBDLCAweDQ3NDYsIDB4ODEwRSwgMHg4MTBFLCAweDQ3NDcsCisgICAgMHg4MTEyLCAweDgxMTIsIDB4NDc0OCwgMHg4MTE0LCAweDgxMTQsIDB4NDc0OSwgMHg4MTE1LCAweDgxMTUsIDB4MjAwRiwKKyAgICAweDgxMTYsIDB4ODExNiwgMHgwQjZCLCAweDgxMTcsIDB4ODExNywgMHgzRTZELCAweDgxMTgsIDB4ODExOCwgMHgyMDA2LAorICAgIDB4ODExOSwgMHg4MTE5LCAweDIwMDgsIDB4ODExQSwgMHg4MTFBLCAweDM3QTMsIDB4ODExQiwgMHg4MTFCLCAweDIwMDksCisgICAgMHg4MTFELCAweDgxMUQsIDB4MjAxMSwgMHg4MTFFLCAweDgxMUUsIDB4MjAwRCwgMHg4MTFGLCAweDgxMUYsIDB4MjAwQiwKKyAgICAweDgxMjEsIDB4ODEyMSwgMHgyMDBFLCAweDgxMjIsIDB4ODEyMiwgMHgyMDEyLCAweDgxMjMsIDB4ODEyMywgMHgwQjZDLAorICAgIDB4ODEyNCwgMHg4MTI0LCAweDBCNzAsIDB4ODEyNSwgMHg4MTI1LCAweDIwMDcsIDB4ODEyNywgMHg4MTI3LCAweDIwMTAsCisgICAgMHg4MTI5LCAweDgxMjksIDB4MEI2RSwgMHg4MTJBLCAweDgxMkEsIDB4M0EzOSwgMHg4MTJCLCAweDgxMkIsIDB4MEI2RCwKKyAgICAweDgxMkMsIDB4ODEyQywgMHgyMDBDLCAweDgxMkQsIDB4ODEyRCwgMHgyMDBBLCAweDgxMkYsIDB4ODEyRiwgMHgwQjZBLAorICAgIDB4ODEzMCwgMHg4MTMwLCAweDBCNkYsIDB4ODEzMiwgMHg4MTMyLCAweDNFNzksIDB4ODEzNCwgMHg4MTM0LCAweDQ1RUMsCisgICAgMHg4MTM3LCAweDgxMzcsIDB4M0I3MiwgMHg4MTM5LCAweDgxMzksIDB4MEQyNiwgMHg4MTNBLCAweDgxM0EsIDB4MjI4NSwKKyAgICAweDgxM0QsIDB4ODEzRCwgMHgyMjgzLCAweDgxM0UsIDB4ODEzRSwgMHgwRDI4LCAweDgxNDIsIDB4ODE0MiwgMHgzQjc2LAorICAgIDB4ODE0MywgMHg4MTQzLCAweDIyN0UsIDB4ODE0NCwgMHg4MTQ0LCAweDI1MjcsIDB4ODE0NiwgMHg4MTQ2LCAweDBEMjcsCisgICAgMHg4MTQ3LCAweDgxNDcsIDB4MjI4MiwgMHg4MTQ4LCAweDgxNDgsIDB4M0U3NiwgMHg4MTRBLCAweDgxNEEsIDB4MjI3RiwKKyAgICAweDgxNEIsIDB4ODE0QiwgMHgwRDIzLCAweDgxNEMsIDB4ODE0QywgMHgwRDI5LCAweDgxNEQsIDB4ODE0RCwgMHgyMjg0LAorICAgIDB4ODE0RSwgMHg4MTRFLCAweDBEMjUsIDB4ODE0RiwgMHg4MTRGLCAweDIyODEsIDB4ODE1MCwgMHg4MTUwLCAweDEwNzUsCisgICAgMHg4MTUxLCAweDgxNTEsIDB4MEQyNCwgMHg4MTUyLCAweDgxNTIsIDB4MjI4MCwgMHg4MTUzLCAweDgxNTMsIDB4MEQyQSwKKyAgICAweDgxNTQsIDB4ODE1NCwgMHgwRDIyLCAweDgxNTUsIDB4ODE1NSwgMHgwRDIxLCAweDgxNTYsIDB4ODE1NiwgMHg0NzRDLAorICAgIDB4ODE1OSwgMHg4MTVBLCAweDQ3NEQsIDB4ODE1QiwgMHg4MTVCLCAweDI1MUYsIDB4ODE1QywgMHg4MTVDLCAweDI1MUQsCisgICAgMHg4MTVFLCAweDgxNUUsIDB4MjUyMywgMHg4MTYwLCAweDgxNjAsIDB4MjUxQiwgMHg4MTYxLCAweDgxNjEsIDB4MjUyOCwKKyAgICAweDgxNjIsIDB4ODE2MiwgMHgyNTIwLCAweDgxNjQsIDB4ODE2NCwgMHgyNTFBLCAweDgxNjUsIDB4ODE2NSwgMHgwRUQyLAorICAgIDB4ODE2NiwgMHg4MTY2LCAweDBFRDgsIDB4ODE2NywgMHg4MTY3LCAweDI1MjUsIDB4ODE2OSwgMHg4MTY5LCAweDI1MUUsCisgICAgMHg4MTZCLCAweDgxNkIsIDB4MEVENSwgMHg4MTZELCAweDgxNkQsIDB4NDNDNCwgMHg4MTZFLCAweDgxNkUsIDB4MEVEMywKKyAgICAweDgxNkYsIDB4ODE2RiwgMHgyNTI2LCAweDgxNzAsIDB4ODE3MCwgMHgwRUQwLCAweDgxNzEsIDB4ODE3MSwgMHgwRUNGLAorICAgIDB4ODE3MiwgMHg4MTcyLCAweDI1MjEsIDB4ODE3MywgMHg4MTczLCAweDBFRDQsIDB4ODE3NCwgMHg4MTc0LCAweDBEMkIsCisgICAgMHg4MTc2LCAweDgxNzYsIDB4MjUyNCwgMHg4MTc3LCAweDgxNzcsIDB4MjUxQywgMHg4MTc4LCAweDgxNzgsIDB4MEVEMSwKKyAgICAweDgxNzksIDB4ODE3QSwgMHgwRUQ2LCAweDgxN0MsIDB4ODE3QywgMHg0NzUwLCAweDgxN0YsIDB4ODE3RiwgMHgxMDdBLAorICAgIDB4ODE4MCwgMHg4MTgwLCAweDEwNzYsIDB4ODE4MiwgMHg4MTgyLCAweDEwN0IsIDB4ODE4MywgMHg4MTgzLCAweDI3QTAsCisgICAgMHg4MTg0LCAweDgxODQsIDB4NDNDNSwgMHg4MTg2LCAweDgxODYsIDB4Mjc5RiwgMHg4MTg3LCAweDgxODcsIDB4MjdBMSwKKyAgICAweDgxODgsIDB4ODE4OCwgMHgxMDc4LCAweDgxODksIDB4ODE4OSwgMHgyNzlFLCAweDgxOEEsIDB4ODE4QSwgMHgxMDc5LAorICAgIDB4ODE4QiwgMHg4MThCLCAweDI3QTQsIDB4ODE4QywgMHg4MThDLCAweDI3QTMsIDB4ODE4RCwgMHg4MThELCAweDI3QTIsCisgICAgMHg4MThGLCAweDgxOEYsIDB4MTA3NywgMHg4MTkzLCAweDgxOTMsIDB4NDNDNiwgMHg4MTk1LCAweDgxOTUsIDB4MjlEMSwKKyAgICAweDgxOTcsIDB4ODE5NywgMHgyOUQ0LCAweDgxOTgsIDB4ODE5OCwgMHgxMUVGLCAweDgxOTksIDB4ODE5OSwgMHgyOUQzLAorICAgIDB4ODE5QSwgMHg4MTlBLCAweDExRUUsIDB4ODE5QiwgMHg4MTlELCAweDExRUEsIDB4ODE5RSwgMHg4MTlFLCAweDI5RDAsCisgICAgMHg4MTlGLCAweDgxOUYsIDB4MjlDRiwgMHg4MUEwLCAweDgxQTAsIDB4MTFFRCwgMHg4MUEyLCAweDgxQTIsIDB4MjlEMiwKKyAgICAweDgxQTMsIDB4ODFBMywgMHgyOUNFLCAweDgxQTUsIDB4ODFBNSwgMHg0NzUzLCAweDgxQTYsIDB4ODFBNiwgMHgyQzMwLAorICAgIDB4ODFBNywgMHg4MUE3LCAweDJDM0EsIDB4ODFBOCwgMHg4MUE4LCAweDEzMzEsIDB4ODFBOSwgMHg4MUE5LCAweDEzMzAsCisgICAgMHg4MUFBLCAweDgxQUEsIDB4NDM2NCwgMHg4MUFCLCAweDgxQUIsIDB4MkMzNCwgMHg4MUFDLCAweDgxQUMsIDB4MkMzNiwKKyAgICAweDgxQUUsIDB4ODFBRSwgMHgyQzMxLCAweDgxQjAsIDB4ODFCMCwgMHgyQzM1LCAweDgxQjEsIDB4ODFCMSwgMHgyQzJGLAorICAgIDB4ODFCMiwgMHg4MUIyLCAweDJDMzgsIDB4ODFCMywgMHg4MUIzLCAweDEzMkYsIDB4ODFCNCwgMHg4MUI0LCAweDJDMzcsCisgICAgMHg4MUI1LCAweDgxQjUsIDB4MkMzMywgMHg4MUI2LCAweDgxQjYsIDB4M0VCMiwgMHg4MUI3LCAweDgxQjcsIDB4MkMzOSwKKyAgICAweDgxQjksIDB4ODFCOSwgMHgyQzMyLCAweDgxQkEsIDB4ODFCQSwgMHgxNDUwLCAweDgxQkIsIDB4ODFCQiwgMHgyRTA2LAorICAgIDB4ODFCQywgMHg4MUJDLCAweDJFMEMsIDB4ODFCRCwgMHg4MUJELCAweDE0NTQsIDB4ODFCRSwgMHg4MUJFLCAweDE0NTYsCisgICAgMHg4MUJGLCAweDgxQkYsIDB4MTQ1MywgMHg4MUMwLCAweDgxQzAsIDB4MTQ1MiwgMHg4MUMxLCAweDgxQzEsIDB4NDc1NSwKKyAgICAweDgxQzIsIDB4ODFDMiwgMHgxNDUxLCAweDgxQzMsIDB4ODFDMywgMHgxNDRGLCAweDgxQzQsIDB4ODFDNCwgMHgyRTA3LAorICAgIDB4ODFDNSwgMHg4MUM1LCAweDJFMEEsIDB4ODFDNiwgMHg4MUM2LCAweDE0NEUsIDB4ODFDNywgMHg4MUM3LCAweDJFMEIsCisgICAgMHg4MUM4LCAweDgxQzgsIDB4M0ZFRSwgMHg4MUM5LCAweDgxQzksIDB4MTQ1NSwgMHg4MUNBLCAweDgxQ0EsIDB4MkUwOSwKKyAgICAweDgxQ0MsIDB4ODFDQywgMHgyRTA4LCAweDgxQ0QsIDB4ODFDRCwgMHgxNTE4LCAweDgxQ0YsIDB4ODFDRiwgMHgxNTE5LAorICAgIDB4ODFEMCwgMHg4MUQwLCAweDJGOTQsIDB4ODFEMSwgMHg4MUQyLCAweDJGOTIsIDB4ODFENSwgMHg4MUQ1LCAweDMwRUQsCisgICAgMHg4MUQ3LCAweDgxRDcsIDB4MzBFQywgMHg4MUQ4LCAweDgxRDgsIDB4MTVCMywgMHg4MUQ5LCAweDgxRDksIDB4MzIxQywKKyAgICAweDgxREEsIDB4ODFEQSwgMHgxNjM1LCAweDgxREIsIDB4ODFEQiwgMHgzMjFCLCAweDgxREQsIDB4ODFERCwgMHgzMkY1LAorICAgIDB4ODFERSwgMHg4MURFLCAweDMzQTUsIDB4ODFERiwgMHg4MURGLCAweDE2RDQsIDB4ODFFMCwgMHg4MUUxLCAweDM0REQsCisgICAgMHg4MUUyLCAweDgxRTIsIDB4MTcwNiwgMHg4MUUzLCAweDgxRTMsIDB4MDQwNSwgMHg4MUU0LCAweDgxRTQsIDB4NDc1NiwKKyAgICAweDgxRTUsIDB4ODFFNSwgMHgwNjc2LCAweDgxRTYsIDB4ODFFNiwgMHgyMjg2LCAweDgxRTcsIDB4ODFFNywgMHgxMDdDLAorICAgIDB4ODFFOCwgMHg4MUU4LCAweDE0NTcsIDB4ODFFOSwgMHg4MUU5LCAweDJFMEQsIDB4ODFFQSwgMHg4MUVBLCAweDA0MDYsCisgICAgMHg4MUVDLCAweDgxRUMsIDB4MDk5NSwgMHg4MUVELCAweDgxRUQsIDB4MDk5NCwgMHg4MUVFLCAweDgxRUUsIDB4MjI4NywKKyAgICAweDgxRUYsIDB4ODFFRiwgMHg0MkQxLCAweDgxRjIsIDB4ODFGMiwgMHgyQzNCLCAweDgxRjMsIDB4ODFGMywgMHgwNDA3LAorICAgIDB4ODFGNCwgMHg4MUY0LCAweDA3RTcsIDB4ODFGNiwgMHg4MUY2LCAweDNENjEsIDB4ODFGNywgMHg4MUY5LCAweDIyODgsCisgICAgMHg4MUZBLCAweDgxRkEsIDB4MTA3RCwgMHg4MUZCLCAweDgxRkIsIDB4MTMzMiwgMHg4MUZDLCAweDgxRkMsIDB4MDQwOCwKKyAgICAweDgxRkUsIDB4ODFGRSwgMHgwNjc3LCAweDgxRkYsIDB4ODFGRiwgMHgxQkRFLCAweDgyMDAsIDB4ODIwMCwgMHgwOTk2LAorICAgIDB4ODIwMSwgMHg4MjAxLCAweDFEQkQsIDB4ODIwMiwgMHg4MjAyLCAweDBCNzEsIDB4ODIwNCwgMHg4MjA0LCAweDIyOEIsCisgICAgMHg4MjA1LCAweDgyMDUsIDB4MEVEOSwgMHg4MjA3LCAweDgyMDcsIDB4MTA3RSwgMHg4MjA4LCAweDgyMDgsIDB4MTMzMywKKyAgICAweDgyMDksIDB4ODIwOSwgMHgxNDU4LCAweDgyMEEsIDB4ODIwQSwgMHgxNTFBLCAweDgyMEIsIDB4ODIwQiwgMHgzMEVFLAorICAgIDB4ODIwQywgMHg4MjBDLCAweDA0MDksIDB4ODIwRCwgMHg4MjBELCAweDA2NzgsIDB4ODIxMCwgMHg4MjEwLCAweDA5OTcsCisgICAgMHg4MjExLCAweDgyMTEsIDB4MjAxMywgMHg4MjEyLCAweDgyMTIsIDB4MEQyQywgMHg4MjE0LCAweDgyMTQsIDB4MTA3RiwKKyAgICAweDgyMTUsIDB4ODIxNSwgMHgyN0E1LCAweDgyMTYsIDB4ODIxNiwgMHgyOUQ1LCAweDgyMTgsIDB4ODIxOCwgMHgzN0FBLAorICAgIDB4ODIxQSwgMHg4MjFBLCAweDNGRTEsIDB4ODIxQiwgMHg4MjFCLCAweDA0MEEsIDB4ODIxQywgMHg4MjFDLCAweDBEMkQsCisgICAgMHg4MjFELCAweDgyMUQsIDB4MjUyOSwgMHg4MjFFLCAweDgyMUUsIDB4MTA4MCwgMHg4MjFGLCAweDgyMUYsIDB4MDQwQiwKKyAgICAweDgyMjAsIDB4ODIyMCwgMHgxQTJFLCAweDgyMjEsIDB4ODIyMSwgMHgxQkRGLCAweDgyMjIsIDB4ODIyMiwgMHgwN0U4LAorICAgIDB4ODIyNSwgMHg4MjI1LCAweDFEQkYsIDB4ODIyNiwgMHg4MjI2LCAweDQyMEQsIDB4ODIyOCwgMHg4MjI4LCAweDA5OUEsCisgICAgMHg4MjI5LCAweDgyMjksIDB4MzdCMCwgMHg4MjJBLCAweDgyMkIsIDB4MDk5OCwgMHg4MjJDLCAweDgyMkMsIDB4MDk5QiwKKyAgICAweDgyMkQsIDB4ODIyRCwgMHgzRUQwLCAweDgyMkYsIDB4ODIyRiwgMHgxREJFLCAweDgyMzIsIDB4ODIzMiwgMHgyMDE4LAorICAgIDB4ODIzMywgMHg4MjMzLCAweDIwMTUsIDB4ODIzNCwgMHg4MjM0LCAweDIwMTcsIDB4ODIzNSwgMHg4MjM1LCAweDBCNzIsCisgICAgMHg4MjM2LCAweDgyMzYsIDB4MEI3NCwgMHg4MjM3LCAweDgyMzcsIDB4MEI3MywgMHg4MjM4LCAweDgyMzgsIDB4MjAxNCwKKyAgICAweDgyMzksIDB4ODIzOSwgMHgwQjc1LCAweDgyM0EsIDB4ODIzQSwgMHgyMDE2LCAweDgyM0MsIDB4ODIzRCwgMHgyMjhDLAorICAgIDB4ODIzRSwgMHg4MjNFLCAweDQ1ODIsIDB4ODIzRiwgMHg4MjNGLCAweDIyOEUsIDB4ODI0MCwgMHg4MjQwLCAweDI1MkMsCisgICAgMHg4MjQyLCAweDgyNDIsIDB4MjUyRCwgMHg4MjQ0LCAweDgyNDQsIDB4MjUyQiwgMHg4MjQ1LCAweDgyNDUsIDB4MjUyRSwKKyAgICAweDgyNDcsIDB4ODI0NywgMHgwRURBLCAweDgyNDksIDB4ODI0OSwgMHgyNTJBLCAweDgyNEIsIDB4ODI0QiwgMHgxMDgxLAorICAgIDB4ODI0RSwgMHg4MjRFLCAweDI5REEsIDB4ODI0RiwgMHg4MjRGLCAweDI5RDYsIDB4ODI1MCwgMHg4MjUwLCAweDI5RDksCisgICAgMHg4MjUxLCAweDgyNTEsIDB4MjlEQiwgMHg4MjUyLCAweDgyNTIsIDB4MjlEOCwgMHg4MjUzLCAweDgyNTMsIDB4MjlENywKKyAgICAweDgyNTQsIDB4ODI1NCwgMHg0NzU3LCAweDgyNTUsIDB4ODI1NywgMHgyQzNDLCAweDgyNTgsIDB4ODI1OSwgMHgxMzM0LAorICAgIDB4ODI1QSwgMHg4MjVBLCAweDJFMEYsIDB4ODI1QiwgMHg4MjVCLCAweDJFMEUsIDB4ODI1QywgMHg4MjVDLCAweDJFMTAsCisgICAgMHg4MjVFLCAweDgyNUUsIDB4MkY5NiwgMHg4MjVGLCAweDgyNUYsIDB4MkY5NSwgMHg4MjYxLCAweDgyNjEsIDB4MzBGMCwKKyAgICAweDgyNjIsIDB4ODI2MiwgMHgzQjdBLCAweDgyNjMsIDB4ODI2MywgMHgzMEYxLCAweDgyNjQsIDB4ODI2NCwgMHgzMEVGLAorICAgIDB4ODI2NSwgMHg4MjY1LCAweDNCN0IsIDB4ODI2NiwgMHg4MjY2LCAweDE2MzYsIDB4ODI2OCwgMHg4MjY5LCAweDMyMUQsCisgICAgMHg4MjZCLCAweDgyNkIsIDB4MzNBNiwgMHg4MjZDLCAweDgyNkMsIDB4MzQyRCwgMHg4MjZELCAweDgyNkQsIDB4MzQ5NiwKKyAgICAweDgyNkUsIDB4ODI2RSwgMHgwNDBDLCAweDgyNkYsIDB4ODI2RiwgMHgwNTA0LCAweDgyNzEsIDB4ODI3MSwgMHgxNDU5LAorICAgIDB4ODI3MiwgMHg4MjcyLCAweDA0MEQsIDB4ODI3NCwgMHg4Mjc0LCAweDIwMTksIDB4ODI3NSwgMHg4Mjc1LCAweDIyOEYsCisgICAgMHg4Mjc2LCAweDgyNzYsIDB4NDc1OSwgMHg4Mjc3LCAweDgyNzcsIDB4MTcyRSwgMHg4Mjc4LCAweDgyNzgsIDB4MTgxMywKKyAgICAweDgyNzksIDB4ODI3OSwgMHg0NzIyLCAweDgyN0EsIDB4ODI3QSwgMHg0NTYzLCAweDgyN0IsIDB4ODI3QiwgMHgzN0M4LAorICAgIDB4ODI3QywgMHg4MjdDLCAweDE4MTQsIDB4ODI3RCwgMHg4MjdELCAweDE4MTYsIDB4ODI3RSwgMHg4MjdFLCAweDA0MEUsCisgICAgMHg4MjdGLCAweDgyN0YsIDB4MTgxNywgMHg4MjgwLCAweDgyODAsIDB4MTgxNSwgMHg4MjgzLCAweDgyODQsIDB4MThFNSwKKyAgICAweDgyODUsIDB4ODI4NSwgMHgxOEUwLCAweDgyODcsIDB4ODI4NywgMHg0MTMyLCAweDgyOEEsIDB4ODI4QSwgMHgxOEU0LAorICAgIDB4ODI4QiwgMHg4MjhCLCAweDA1MDYsIDB4ODI4RCwgMHg4MjhELCAweDA1MDcsIDB4ODI4RSwgMHg4MjhFLCAweDE4RTEsCisgICAgMHg4MjhGLCAweDgyOEYsIDB4MThERiwgMHg4MjkwLCAweDgyOTAsIDB4MThERSwgMHg4MjkxLCAweDgyOTEsIDB4MThFMiwKKyAgICAweDgyOTIsIDB4ODI5MiwgMHgwNTA1LCAweDgyOTMsIDB4ODI5MywgMHgxOEUzLCAweDgyOTQsIDB4ODI5NCwgMHgxQkUwLAorICAgIDB4ODI5OCwgMHg4Mjk4LCAweDFBMzMsIDB4ODI5OSwgMHg4Mjk5LCAweDA2N0IsIDB4ODI5QSwgMHg4MjlBLCAweDFBMzIsCisgICAgMHg4MjlCLCAweDgyOUIsIDB4MUEzNCwgMHg4MjlELCAweDgyOUQsIDB4MDY3QSwgMHg4MjlFLCAweDgyOUUsIDB4MUEzOSwKKyAgICAweDgyOUYsIDB4ODI5RiwgMHgwNjdFLCAweDgyQTAsIDB4ODJBMCwgMHgxQTJGLCAweDgyQTEsIDB4ODJBMSwgMHgxQTNELAorICAgIDB4ODJBMiwgMHg4MkEyLCAweDFBNDMsIDB4ODJBMywgMHg4MkEzLCAweDA2ODUsIDB4ODJBNCwgMHg4MkE0LCAweDFBNDAsCisgICAgMHg4MkE1LCAweDgyQTUsIDB4MDY4MiwgMHg4MkE2LCAweDgyQTYsIDB4M0Q3MywgMHg4MkE3LCAweDgyQTcsIDB4MUEzNiwKKyAgICAweDgyQTgsIDB4ODJBOCwgMHgxQTNDLCAweDgyQTksIDB4ODJBOSwgMHgxQTNFLCAweDgyQUEsIDB4ODJBQSwgMHgzN0JDLAorICAgIDB4ODJBQiwgMHg4MkFCLCAweDFBMzEsIDB4ODJBQywgMHg4MkFDLCAweDA2ODEsIDB4ODJBRCwgMHg4MkFELCAweDA2N0MsCisgICAgMHg4MkFFLCAweDgyQUUsIDB4MUEzNywgMHg4MkFGLCAweDgyQUYsIDB4MDY4MywgMHg4MkIwLCAweDgyQjAsIDB4MDY4NiwKKyAgICAweDgyQjEsIDB4ODJCMSwgMHgwNjgwLCAweDgyQjMsIDB4ODJCMywgMHgwNjc5LCAweDgyQjQsIDB4ODJCNCwgMHgxQTNCLAorICAgIDB4ODJCNSwgMHg4MkI1LCAweDFBMzUsIDB4ODJCNiwgMHg4MkI2LCAweDFBNDIsIDB4ODJCNywgMHg4MkI3LCAweDA2ODgsCisgICAgMHg4MkI4LCAweDgyQjgsIDB4MDY4NCwgMHg4MkI5LCAweDgyQjksIDB4MDY3RiwgMHg4MkJBLCAweDgyQkEsIDB4MUEzQSwKKyAgICAweDgyQkIsIDB4ODJCQiwgMHgwOTlDLCAweDgyQkMsIDB4ODJCQywgMHgxQTM4LCAweDgyQkQsIDB4ODJCRCwgMHgwNjdELAorICAgIDB4ODJCRSwgMHg4MkJFLCAweDA2ODcsIDB4ODJDMCwgMHg4MkMwLCAweDFBMzAsIDB4ODJDMiwgMHg4MkMyLCAweDFBM0YsCisgICAgMHg4MkMzLCAweDgyQzMsIDB4MUE0MSwgMHg4MkM0LCAweDgyQzQsIDB4NDVFMywgMHg4MkNBLCAweDgyQ0EsIDB4NDc1QSwKKyAgICAweDgyQ0YsIDB4ODJDRiwgMHg0NTY0LCAweDgyRDAsIDB4ODJEMCwgMHgzN0MxLCAweDgyRDEsIDB4ODJEMSwgMHgwN0Y5LAorICAgIDB4ODJEMiwgMHg4MkQyLCAweDA3RjMsIDB4ODJEMywgMHg4MkQzLCAweDA3RkIsIDB4ODJENCwgMHg4MkQ0LCAweDA3RjgsCisgICAgMHg4MkQ1LCAweDgyRDUsIDB4MUJFNywgMHg4MkQ2LCAweDgyRDYsIDB4MUJFQSwgMHg4MkQ3LCAweDgyRDcsIDB4MDdGNCwKKyAgICAweDgyRDgsIDB4ODJEOCwgMHg0NzVCLCAweDgyRDksIDB4ODJEOSwgMHgxQkUxLCAweDgyREIsIDB4ODJEQiwgMHgwN0VELAorICAgIDB4ODJEQywgMHg4MkRDLCAweDA3RjcsIDB4ODJERSwgMHg4MkRFLCAweDA3RkEsIDB4ODJERiwgMHg4MkRGLCAweDA3RkMsCisgICAgMHg4MkUwLCAweDgyRTAsIDB4MUJGNiwgMHg4MkUxLCAweDgyRTEsIDB4MUJFRCwgMHg4MkUyLCAweDgyRTIsIDB4MzdDOSwKKyAgICAweDgyRTMsIDB4ODJFMywgMHgwN0VDLCAweDgyRTQsIDB4ODJFNCwgMHgxQkY1LCAweDgyRTUsIDB4ODJFNSwgMHgwN0YwLAorICAgIDB4ODJFNiwgMHg4MkU2LCAweDA3RUUsIDB4ODJFNywgMHg4MkU3LCAweDA3RTksIDB4ODJFOCwgMHg4MkU4LCAweDFCRTUsCisgICAgMHg4MkVBLCAweDgyRUEsIDB4MUJGNCwgMHg4MkVCLCAweDgyRUIsIDB4MUJFOSwgMHg4MkVDLCAweDgyRUMsIDB4MUJFQywKKyAgICAweDgyRUQsIDB4ODJFRCwgMHgxQkY5LCAweDgyRUUsIDB4ODJFRSwgMHg0MDE4LCAweDgyRUYsIDB4ODJFRiwgMHgwN0ZELAorICAgIDB4ODJGMCwgMHg4MkYwLCAweDFCRjMsIDB4ODJGMSwgMHg4MkYxLCAweDA3RjUsIDB4ODJGMiwgMHg4MkYyLCAweDFCRUUsCisgICAgMHg4MkYzLCAweDgyRjMsIDB4MUJGOCwgMHg4MkY0LCAweDgyRjQsIDB4MUJFQiwgMHg4MkY1LCAweDgyRjUsIDB4MUJFRiwKKyAgICAweDgyRjYsIDB4ODJGNiwgMHgxQkYyLCAweDgyRjcsIDB4ODJGNywgMHgzRTc3LCAweDgyRjksIDB4ODJGOSwgMHgxQkUzLAorICAgIDB4ODJGQSwgMHg4MkZBLCAweDFCRjcsIDB4ODJGQiwgMHg4MkZCLCAweDFCRjEsIDB4ODJGQywgMHg4MkZDLCAweDQxMkQsCisgICAgMHg4MkZELCAweDgyRkQsIDB4M0Q5MiwgMHg4MkZFLCAweDgyRkUsIDB4MUJFMiwgMHg4MkZGLCAweDgyRkYsIDB4NDNERSwKKyAgICAweDgzMDAsIDB4ODMwMCwgMHgxQkU2LCAweDgzMDEsIDB4ODMwMSwgMHgwN0Y2LCAweDgzMDIsIDB4ODMwMiwgMHgwN0YxLAorICAgIDB4ODMwMywgMHg4MzAzLCAweDA3RUEsIDB4ODMwNCwgMHg4MzA0LCAweDA3RUYsIDB4ODMwNSwgMHg4MzA1LCAweDA3RUIsCisgICAgMHg4MzA2LCAweDgzMDYsIDB4MDdGRSwgMHg4MzA3LCAweDgzMDcsIDB4MUJFNCwgMHg4MzA4LCAweDgzMDgsIDB4MUREMCwKKyAgICAweDgzMDksIDB4ODMwOSwgMHgwN0YyLCAweDgzMEIsIDB4ODMwQiwgMHgzRUI2LCAweDgzMEMsIDB4ODMwQywgMHgxQkYwLAorICAgIDB4ODMwRCwgMHg4MzBELCAweDFBN0QsIDB4ODMxNiwgMHg4MzE2LCAweDFERDMsIDB4ODMxNywgMHg4MzE3LCAweDA5QUEsCisgICAgMHg4MzE4LCAweDgzMTgsIDB4MzdDQSwgMHg4MzE5LCAweDgzMTksIDB4MURDMywgMHg4MzFBLCAweDgzMUEsIDB4MzdDMiwKKyAgICAweDgzMUIsIDB4ODMxQiwgMHgxRENFLCAweDgzMUMsIDB4ODMxQywgMHgxRENBLCAweDgzMUQsIDB4ODMxRCwgMHgzN0QxLAorICAgIDB4ODMxRSwgMHg4MzFFLCAweDFEREQsIDB4ODMyMCwgMHg4MzIwLCAweDFERDUsIDB4ODMyMiwgMHg4MzIyLCAweDFEQ0IsCisgICAgMHg4MzI0LCAweDgzMjQsIDB4MURENCwgMHg4MzI1LCAweDgzMjUsIDB4MURDNSwgMHg4MzI2LCAweDgzMjYsIDB4MURDOSwKKyAgICAweDgzMjcsIDB4ODMyNywgMHgxREUwLCAweDgzMjgsIDB4ODMyOCwgMHgwOUFELCAweDgzMjksIDB4ODMyOSwgMHgxREQ4LAorICAgIDB4ODMyQSwgMHg4MzJBLCAweDFEQ0YsIDB4ODMyQiwgMHg4MzJCLCAweDA5OUQsIDB4ODMyQywgMHg4MzJDLCAweDFEREUsCisgICAgMHg4MzJELCAweDgzMkQsIDB4MURDMSwgMHg4MzJGLCAweDgzMkYsIDB4MURENywgMHg4MzMxLCAweDgzMzEsIDB4MDlBQywKKyAgICAweDgzMzIsIDB4ODMzMiwgMHgwOUE3LCAweDgzMzMsIDB4ODMzMywgMHgxREMwLCAweDgzMzQsIDB4ODMzNCwgMHgwOUE1LAorICAgIDB4ODMzNSwgMHg4MzM1LCAweDA5QTQsIDB4ODMzNiwgMHg4MzM2LCAweDA5QTksIDB4ODMzNywgMHg4MzM3LCAweDFERDYsCisgICAgMHg4MzM4LCAweDgzMzgsIDB4MDlBMSwgMHg4MzM5LCAweDgzMzksIDB4MDlBOCwgMHg4MzNBLCAweDgzM0EsIDB4MUJFOCwKKyAgICAweDgzM0IsIDB4ODMzQiwgMHgyMjkwLCAweDgzM0MsIDB4ODMzQywgMHgxREQxLCAweDgzM0QsIDB4ODMzRCwgMHgzRDJBLAorICAgIDB4ODMzRiwgMHg4MzNGLCAweDFEQzcsIDB4ODM0MCwgMHg4MzQwLCAweDA5QUIsIDB4ODM0MSwgMHg4MzQxLCAweDFEQzgsCisgICAgMHg4MzQyLCAweDgzNDIsIDB4MURDQywgMHg4MzQzLCAweDgzNDMsIDB4MDlBRSwgMHg4MzQ0LCAweDgzNDQsIDB4MURDMiwKKyAgICAweDgzNDUsIDB4ODM0NSwgMHgxRERBLCAweDgzNDcsIDB4ODM0NywgMHgxREQ5LCAweDgzNDgsIDB4ODM0OCwgMHgxREUxLAorICAgIDB4ODM0OSwgMHg4MzQ5LCAweDA5QTMsIDB4ODM0QSwgMHg4MzRBLCAweDA5QTAsIDB4ODM0QiwgMHg4MzRCLCAweDFEREYsCisgICAgMHg4MzRDLCAweDgzNEMsIDB4MUREQiwgMHg4MzRELCAweDgzNEQsIDB4MUREMiwgMHg4MzRFLCAweDgzNEUsIDB4MURDRCwKKyAgICAweDgzNEYsIDB4ODM0RiwgMHgwOUE2LCAweDgzNTAsIDB4ODM1MCwgMHgwOUEyLCAweDgzNTEsIDB4ODM1MSwgMHgxREM0LAorICAgIDB4ODM1MiwgMHg4MzUyLCAweDA5OUUsIDB4ODM1MywgMHg4MzUzLCAweDFEREMsIDB4ODM1NCwgMHg4MzU0LCAweDA5OUYsCisgICAgMHg4MzU2LCAweDgzNTYsIDB4MURDNiwgMHg4MzU3LCAweDgzNTcsIDB4NDc1RCwgMHg4MzYyLCAweDgzNjIsIDB4MzdCNiwKKyAgICAweDgzNjMsIDB4ODM2MywgMHg0MUVCLCAweDgzNjYsIDB4ODM2NiwgMHgzRTFFLCAweDgzNkYsIDB4ODM2RiwgMHg0NTY1LAorICAgIDB4ODM3MywgMHg4MzczLCAweDIwMUYsIDB4ODM3NCwgMHg4Mzc0LCAweDIwMjEsIDB4ODM3NSwgMHg4Mzc1LCAweDIwMjYsCisgICAgMHg4Mzc2LCAweDgzNzYsIDB4MjAzQSwgMHg4Mzc3LCAweDgzNzcsIDB4MEI4MywgMHg4Mzc4LCAweDgzNzgsIDB4MEI3OSwKKyAgICAweDgzN0EsIDB4ODM3QSwgMHgyMDFFLCAweDgzN0IsIDB4ODM3QywgMHgwQjg0LCAweDgzN0QsIDB4ODM3RCwgMHgyMDI5LAorICAgIDB4ODM3RSwgMHg4MzdFLCAweDIwMzAsIDB4ODM3RiwgMHg4MzdGLCAweDIwMzYsIDB4ODM4MSwgMHg4MzgxLCAweDIwMjMsCisgICAgMHg4MzgzLCAweDgzODMsIDB4MjAyQSwgMHg4Mzg1LCAweDgzODUsIDB4MzdEMywgMHg4Mzg2LCAweDgzODYsIDB4MEI4NiwKKyAgICAweDgzODcsIDB4ODM4NywgMHgyMDM4LCAweDgzODgsIDB4ODM4OCwgMHgyMDMzLCAweDgzODksIDB4ODM4OSwgMHgwQjgxLAorICAgIDB4ODM4QSwgMHg4MzhBLCAweDBCN0YsIDB4ODM4QiwgMHg4MzhCLCAweDIwMkYsIDB4ODM4QywgMHg4MzhDLCAweDIwMkIsCisgICAgMHg4MzhELCAweDgzOEQsIDB4MjAxRCwgMHg4MzhFLCAweDgzOEUsIDB4MEI3NiwgMHg4MzhGLCAweDgzOEYsIDB4MjAyMiwKKyAgICAweDgzOTAsIDB4ODM5MCwgMHgyMDFBLCAweDgzOTEsIDB4ODM5MSwgMHgzN0VDLCAweDgzOTIsIDB4ODM5MiwgMHgwQjdFLAorICAgIDB4ODM5MywgMHg4MzkzLCAweDBCODAsIDB4ODM5NCwgMHg4Mzk0LCAweDIwMjcsIDB4ODM5NSwgMHg4Mzk1LCAweDIwMjQsCisgICAgMHg4Mzk2LCAweDgzOTYsIDB4MEI3QiwgMHg4Mzk3LCAweDgzOTcsIDB4MjAzNCwgMHg4Mzk4LCAweDgzOTgsIDB4MEI3OCwKKyAgICAweDgzOTksIDB4ODM5OSwgMHgyMDI1LCAweDgzOUEsIDB4ODM5QSwgMHgyMkI5LCAweDgzOUIsIDB4ODM5QiwgMHgyMDJELAorICAgIDB4ODM5QywgMHg4MzlDLCAweDM3NEQsIDB4ODM5RCwgMHg4MzlELCAweDIwMkMsIDB4ODM5RSwgMHg4MzlFLCAweDBCNzcsCisgICAgMHg4M0EwLCAweDgzQTAsIDB4MEI4MiwgMHg4M0EyLCAweDgzQTIsIDB4MEI3QSwgMHg4M0EzLCAweDgzQTMsIDB4MjAxQiwKKyAgICAweDgzQTQsIDB4ODNBNCwgMHgyMDIwLCAweDgzQTUsIDB4ODNBNSwgMHgyMDMxLCAweDgzQTYsIDB4ODNBNiwgMHgyMDM3LAorICAgIDB4ODNBNywgMHg4M0E3LCAweDBCODcsIDB4ODNBOCwgMHg4M0E4LCAweDIwMUMsIDB4ODNBOSwgMHg4M0E5LCAweDIwMjgsCisgICAgMHg4M0FBLCAweDgzQUEsIDB4MjAyRSwgMHg4M0FCLCAweDgzQUIsIDB4MEI3RCwgMHg4M0FDLCAweDgzQUMsIDB4MzdENiwKKyAgICAweDgzQUUsIDB4ODNBRSwgMHgyMDM5LCAweDgzQUYsIDB4ODNBRiwgMHgyMDMyLCAweDgzQjAsIDB4ODNCMCwgMHgyMDM1LAorICAgIDB4ODNCOSwgMHg4M0I5LCAweDQyQTcsIDB4ODNCRCwgMHg4M0JELCAweDBCN0MsIDB4ODNCRSwgMHg4M0JFLCAweDNGNTksCisgICAgMHg4M0JGLCAweDgzQkYsIDB4MjJBMCwgMHg4M0MwLCAweDgzQzAsIDB4MjI5NCwgMHg4M0MxLCAweDgzQzEsIDB4MEQzNSwKKyAgICAweDgzQzIsIDB4ODNDMiwgMHgyMkIxLCAweDgzQzMsIDB4ODNDMywgMHgyMkJBLCAweDgzQzQsIDB4ODNDNCwgMHgyMkJELAorICAgIDB4ODNDNSwgMHg4M0M1LCAweDBEMzMsIDB4ODNDNiwgMHg4M0M2LCAweDIyOUMsIDB4ODNDNywgMHg4M0M3LCAweDIyQjUsCisgICAgMHg4M0M4LCAweDgzQzgsIDB4MjI5RCwgMHg4M0M5LCAweDgzQzksIDB4MjJBQiwgMHg4M0NBLCAweDgzQ0EsIDB4MEQ0MCwKKyAgICAweDgzQ0IsIDB4ODNDQiwgMHgyMkE3LCAweDgzQ0MsIDB4ODNDQywgMHgwRDNELCAweDgzQ0QsIDB4ODNDRCwgMHg0MDU1LAorICAgIDB4ODNDRSwgMHg4M0NFLCAweDIyQTgsIDB4ODNDRiwgMHg4M0NGLCAweDIyOTEsIDB4ODNEMSwgMHg4M0QxLCAweDIyQjYsCisgICAgMHg4M0QzLCAweDgzRDMsIDB4MzdEOCwgMHg4M0Q0LCAweDgzRDQsIDB4MEQ0NiwgMHg4M0Q1LCAweDgzRDUsIDB4MjJCMywKKyAgICAweDgzRDYsIDB4ODNENiwgMHgyMkE5LCAweDgzRDcsIDB4ODNENywgMHgyMkJGLCAweDgzRDgsIDB4ODNEOCwgMHgyMkE0LAorICAgIDB4ODNEOSwgMHg4M0Q5LCAweDI1NEUsIDB4ODNEQiwgMHg4M0RCLCAweDIyQzIsIDB4ODNEQywgMHg4M0RDLCAweDBENDQsCisgICAgMHg4M0RELCAweDgzREQsIDB4MjJBMiwgMHg4M0RFLCAweDgzREUsIDB4MjJBRSwgMHg4M0RGLCAweDgzREYsIDB4MEQ0NywKKyAgICAweDgzRTAsIDB4ODNFMCwgMHgwRDMyLCAweDgzRTEsIDB4ODNFMSwgMHgyMkE2LCAweDgzRTIsIDB4ODNFMiwgMHgyMkMwLAorICAgIDB4ODNFMywgMHg4M0UzLCAweDIyOUYsIDB4ODNFNCwgMHg4M0U0LCAweDIyOTgsIDB4ODNFNSwgMHg4M0U1LCAweDIyQTMsCisgICAgMHg4M0U3LCAweDgzRTcsIDB4MjI5NywgMHg4M0U4LCAweDgzRTgsIDB4MjI5NSwgMHg4M0U5LCAweDgzRTksIDB4MEQyRSwKKyAgICAweDgzRUEsIDB4ODNFQSwgMHgyMkI3LCAweDgzRUIsIDB4ODNFQiwgMHgyMjlFLCAweDgzRUMsIDB4ODNFQywgMHgyMkJCLAorICAgIDB4ODNFRCwgMHg4M0VELCAweDNEMkMsIDB4ODNFRSwgMHg4M0VFLCAweDIyQkMsIDB4ODNFRiwgMHg4M0VGLCAweDBEMzYsCisgICAgMHg4M0YwLCAweDgzRjAsIDB4MEQzQiwgMHg4M0YxLCAweDgzRjEsIDB4MEQzNywgMHg4M0YyLCAweDgzRjIsIDB4MEQzRiwKKyAgICAweDgzRjMsIDB4ODNGMywgMHgyMkIyLCAweDgzRjQsIDB4ODNGNCwgMHgwRDM4LCAweDgzRjUsIDB4ODNGNSwgMHgyMkFBLAorICAgIDB4ODNGNiwgMHg4M0Y2LCAweDIyOUEsIDB4ODNGOCwgMHg4M0Y4LCAweDBEMzAsIDB4ODNGOSwgMHg4M0Y5LCAweDIyOTIsCisgICAgMHg4M0ZBLCAweDgzRkEsIDB4MjJCNCwgMHg4M0ZCLCAweDgzRkIsIDB4MjJCRSwgMHg4M0ZDLCAweDgzRkMsIDB4MjI5OSwKKyAgICAweDgzRkQsIDB4ODNGRCwgMHgwRDNFLCAweDgzRkUsIDB4ODNGRSwgMHgyMkMzLCAweDgzRkYsIDB4ODNGRiwgMHgyMkE1LAorICAgIDB4ODQwMSwgMHg4NDAxLCAweDIyQTEsIDB4ODQwMywgMHg4NDAzLCAweDBEMkYsIDB4ODQwNCwgMHg4NDA0LCAweDBENDMsCisgICAgMHg4NDA1LCAweDg0MDUsIDB4NDc1RiwgMHg4NDA2LCAweDg0MDYsIDB4MjJCMCwgMHg4NDA3LCAweDg0MDcsIDB4MEQ0NSwKKyAgICAweDg0MDksIDB4ODQwOSwgMHgyMkFDLCAweDg0MEEsIDB4ODQwQSwgMHgwRDNBLCAweDg0MEIsIDB4ODQwQiwgMHgwRDM0LAorICAgIDB4ODQwQywgMHg4NDBDLCAweDBEM0MsIDB4ODQwRCwgMHg4NDBELCAweDBEMzEsIDB4ODQwRSwgMHg4NDBFLCAweDBENDIsCisgICAgMHg4NDBGLCAweDg0MEYsIDB4MjJBRCwgMHg4NDEwLCAweDg0MTAsIDB4MjI5QiwgMHg4NDExLCAweDg0MTEsIDB4MjJBRiwKKyAgICAweDg0MTIsIDB4ODQxMiwgMHgyMjk2LCAweDg0MTMsIDB4ODQxMywgMHgyMkI4LCAweDg0MTQsIDB4ODQxNCwgMHgzQzEwLAorICAgIDB4ODQxNiwgMHg4NDE2LCAweDQwMzcsIDB4ODQxOCwgMHg4NDE4LCAweDNFN0EsIDB4ODQxQiwgMHg4NDFCLCAweDIyQzEsCisgICAgMHg4NDFDLCAweDg0MUMsIDB4M0VCMywgMHg4NDIwLCAweDg0MjAsIDB4M0M1NSwgMHg4NDIxLCAweDg0MjEsIDB4Mzc1MSwKKyAgICAweDg0MjMsIDB4ODQyMywgMHgyMjkzLCAweDg0MjQsIDB4ODQyNCwgMHg0OTUxLCAweDg0MjYsIDB4ODQyNiwgMHg0NkQ4LAorICAgIDB4ODQyOSwgMHg4NDI5LCAweDI1NEQsIDB4ODQyQiwgMHg4NDJCLCAweDI1NjMsIDB4ODQyQywgMHg4NDJDLCAweDBFQUMsCisgICAgMHg4NDJELCAweDg0MkQsIDB4MjU1MiwgMHg4NDJFLCAweDg0MkUsIDB4NDIyRCwgMHg4NDJGLCAweDg0MkYsIDB4MjU1MCwKKyAgICAweDg0MzAsIDB4ODQzMCwgMHgyNTNCLCAweDg0MzEsIDB4ODQzMSwgMHgwRURFLCAweDg0MzIsIDB4ODQzMiwgMHgyNTRCLAorICAgIDB4ODQzMywgMHg4NDMzLCAweDI1NUYsIDB4ODQzNCwgMHg4NDM0LCAweDI1NDcsIDB4ODQzNSwgMHg4NDM1LCAweDBFRTYsCisgICAgMHg4NDM2LCAweDg0MzYsIDB4MjU1RSwgMHg4NDM3LCAweDg0MzcsIDB4MjU0NSwgMHg4NDM4LCAweDg0MzgsIDB4MEQ0MSwKKyAgICAweDg0MzksIDB4ODQzOSwgMHgyNTU1LCAweDg0M0EsIDB4ODQzQSwgMHgyNTQ2LCAweDg0M0IsIDB4ODQzQiwgMHgyNTVDLAorICAgIDB4ODQzQywgMHg4NDNDLCAweDBFRTUsIDB4ODQzRCwgMHg4NDNELCAweDBFREQsIDB4ODQzRSwgMHg4NDNFLCAweDNEMjEsCisgICAgMHg4NDNGLCAweDg0M0YsIDB4MjUzMCwgMHg4NDQwLCAweDg0NDAsIDB4MjUzOCwgMHg4NDQyLCAweDg0NDIsIDB4MjU1MSwKKyAgICAweDg0NDMsIDB4ODQ0MywgMHgyNTQ5LCAweDg0NDQsIDB4ODQ0NCwgMHgyNTYyLCAweDg0NDUsIDB4ODQ0NSwgMHgyNTRDLAorICAgIDB4ODQ0NiwgMHg4NDQ2LCAweDBFRUIsIDB4ODQ0NywgMHg4NDQ3LCAweDI1NUQsIDB4ODQ0OCwgMHg4NDQ4LCAweDQ3MTgsCisgICAgMHg4NDQ5LCAweDg0NDksIDB4MEVFMiwgMHg4NDRBLCAweDg0NEEsIDB4MzdFNCwgMHg4NDRCLCAweDg0NEIsIDB4MjU0RiwKKyAgICAweDg0NEMsIDB4ODQ0QywgMHgyNTU3LCAweDg0NEQsIDB4ODQ0RCwgMHgyNTNDLCAweDg0NEUsIDB4ODQ0RSwgMHgyNTU2LAorICAgIDB4ODQ1MCwgMHg4NDUwLCAweDI1NjcsIDB4ODQ1MSwgMHg4NDUxLCAweDI1MzcsIDB4ODQ1MiwgMHg4NDUyLCAweDI1NTgsCisgICAgMHg4NDUzLCAweDg0NTMsIDB4M0I3RCwgMHg4NDU0LCAweDg0NTQsIDB4MjU2NSwgMHg4NDU1LCAweDg0NTUsIDB4Mzk4QiwKKyAgICAweDg0NTYsIDB4ODQ1NiwgMHgyNTMxLCAweDg0NTcsIDB4ODQ1NywgMHgwRDM5LCAweDg0NTgsIDB4ODQ1OCwgMHgzN0RFLAorICAgIDB4ODQ1OSwgMHg4NDU5LCAweDI1M0YsIDB4ODQ1QSwgMHg4NDVBLCAweDI1M0UsIDB4ODQ1QiwgMHg4NDVCLCAweDBFRTQsCisgICAgMHg4NDVDLCAweDg0NUMsIDB4M0VEQiwgMHg4NDVELCAweDg0NUQsIDB4MjU0MiwgMHg4NDVFLCAweDg0NUUsIDB4MjU0NCwKKyAgICAweDg0NUYsIDB4ODQ1RiwgMHgyNTUzLCAweDg0NjAsIDB4ODQ2MCwgMHgyNTY0LCAweDg0NjEsIDB4ODQ2MSwgMHgwRUU3LAorICAgIDB4ODQ2MiwgMHg4NDYyLCAweDQyREEsIDB4ODQ2MywgMHg4NDYzLCAweDBFRTgsIDB4ODQ2NCwgMHg4NDY0LCAweDQ3NjEsCisgICAgMHg4NDY1LCAweDg0NjUsIDB4MjUzNiwgMHg4NDY2LCAweDg0NjYsIDB4MEVFMCwgMHg4NDY3LCAweDg0NjcsIDB4MjUzQSwKKyAgICAweDg0NjgsIDB4ODQ2OCwgMHgyNTYwLCAweDg0NjksIDB4ODQ2OSwgMHgwRUU5LCAweDg0NkIsIDB4ODQ2QiwgMHgwRUUxLAorICAgIDB4ODQ2QywgMHg4NDZDLCAweDBFRTMsIDB4ODQ2RCwgMHg4NDZELCAweDBFRUEsIDB4ODQ2RSwgMHg4NDZFLCAweDI1NjYsCisgICAgMHg4NDZGLCAweDg0NkYsIDB4MjU1OSwgMHg4NDcwLCAweDg0NzAsIDB4MjU1NCwgMHg4NDcxLCAweDg0NzEsIDB4MzdFMCwKKyAgICAweDg0NzIsIDB4ODQ3MiwgMHgzQzkzLCAweDg0NzMsIDB4ODQ3MywgMHgyNTQxLCAweDg0NzQsIDB4ODQ3NCwgMHgyNTQwLAorICAgIDB4ODQ3NSwgMHg4NDc1LCAweDBFREYsIDB4ODQ3NiwgMHg4NDc2LCAweDI1MzIsIDB4ODQ3NywgMHg4NDc3LCAweDBFREMsCisgICAgMHg4NDc4LCAweDg0NzgsIDB4MjU0QSwgMHg4NDc5LCAweDg0NzksIDB4MjUzMywgMHg4NDdBLCAweDg0N0EsIDB4MjU0OCwKKyAgICAweDg0N0QsIDB4ODQ3RCwgMHgyNTNELCAweDg0N0UsIDB4ODQ3RSwgMHgyNTYxLCAweDg0N0YsIDB4ODQ3RiwgMHgzOTRFLAorICAgIDB4ODQ4MCwgMHg4NDgwLCAweDNCNkUsIDB4ODQ4MiwgMHg4NDgyLCAweDBFREIsIDB4ODQ4NiwgMHg4NDg2LCAweDI1MzksCisgICAgMHg4NDg4LCAweDg0ODgsIDB4NDc2MiwgMHg4NDhELCAweDg0OEQsIDB4MjUzNSwgMHg4NDhFLCAweDg0OEUsIDB4MjU1QiwKKyAgICAweDg0OEYsIDB4ODQ4RiwgMHgyNTM0LCAweDg0OTAsIDB4ODQ5MCwgMHgxMDhFLCAweDg0OTEsIDB4ODQ5MSwgMHgyN0NELAorICAgIDB4ODQ5MiwgMHg4NDkyLCAweDM3NTYsIDB4ODQ5MywgMHg4NDkzLCAweDM3RUUsIDB4ODQ5NCwgMHg4NDk0LCAweDI3QkMsCisgICAgMHg4NDk2LCAweDg0OTYsIDB4M0IxRCwgMHg4NDk3LCAweDg0OTcsIDB4MjdBNiwgMHg4NDk4LCAweDg0OTgsIDB4MjdDNCwKKyAgICAweDg0OTksIDB4ODQ5OSwgMHgxMDg2LCAweDg0OUEsIDB4ODQ5QSwgMHgyN0I1LCAweDg0OUIsIDB4ODQ5QiwgMHgyN0JGLAorICAgIDB4ODQ5QywgMHg4NDlDLCAweDEwODksIDB4ODQ5RCwgMHg4NDlELCAweDI3QjgsIDB4ODQ5RSwgMHg4NDlFLCAweDEwODcsCisgICAgMHg4NDlGLCAweDg0OUYsIDB4MjdBOSwgMHg4NEEwLCAweDg0QTAsIDB4MjdDNywgMHg4NEExLCAweDg0QTEsIDB4MjdBOCwKKyAgICAweDg0QTIsIDB4ODRBMiwgMHgyN0JCLCAweDg0QTMsIDB4ODRBMywgMHgzQjlFLCAweDg0QTQsIDB4ODRBNCwgMHgyN0E3LAorICAgIDB4ODRBNywgMHg4NEE3LCAweDI3QjksIDB4ODRBOCwgMHg4NEE4LCAweDI3QzIsIDB4ODRBOSwgMHg4NEE5LCAweDI3QzAsCisgICAgMHg4NEFBLCAweDg0QUEsIDB4MjdCNCwgMHg4NEFCLCAweDg0QUIsIDB4MjdBRiwgMHg4NEFDLCAweDg0QUMsIDB4MjdBRCwKKyAgICAweDg0QUQsIDB4ODRBRCwgMHgzRDhDLCAweDg0QUUsIDB4ODRBRSwgMHgyN0FFLCAweDg0QUYsIDB4ODRBRiwgMHgyN0MxLAorICAgIDB4ODRCMCwgMHg4NEIwLCAweDI3Q0MsIDB4ODRCMSwgMHg4NEIxLCAweDI3QjYsIDB4ODRCMiwgMHg4NEIyLCAweDEwODgsCisgICAgMHg4NEI0LCAweDg0QjQsIDB4MjdCMSwgMHg4NEI2LCAweDg0QjYsIDB4MjdDNSwgMHg4NEI4LCAweDg0QjgsIDB4MTA4QiwKKyAgICAweDg0QjksIDB4ODRCOSwgMHgyN0IwLCAweDg0QkEsIDB4ODRCQSwgMHgyN0FBLCAweDg0QkIsIDB4ODRCQiwgMHgyN0JBLAorICAgIDB4ODRCQywgMHg4NEJDLCAweDEwOEYsIDB4ODRCRCwgMHg4NEJELCAweDNDNEMsIDB4ODRCRSwgMHg4NEJFLCAweDQ3NjQsCisgICAgMHg4NEJGLCAweDg0QkYsIDB4MTA4MywgMHg4NEMwLCAweDg0QzAsIDB4MTA4QywgMHg4NEMxLCAweDg0QzEsIDB4MjdCMiwKKyAgICAweDg0QzIsIDB4ODRDMiwgMHgyN0FDLCAweDg0QzQsIDB4ODRDNCwgMHgxMDg1LCAweDg0QzUsIDB4ODRDNSwgMHgyNTVBLAorICAgIDB4ODRDNiwgMHg4NEM2LCAweDEwODQsIDB4ODRDNywgMHg4NEM3LCAweDI3QkQsIDB4ODRDOSwgMHg4NEM5LCAweDEwODIsCisgICAgMHg4NENBLCAweDg0Q0EsIDB4MTA5MSwgMHg4NENCLCAweDg0Q0IsIDB4MTA4QSwgMHg4NENDLCAweDg0Q0MsIDB4MjdCRSwKKyAgICAweDg0Q0QsIDB4ODRDRCwgMHgyN0IzLCAweDg0Q0UsIDB4ODRDRSwgMHgyN0FCLCAweDg0Q0YsIDB4ODRDRiwgMHgyN0M2LAorICAgIDB4ODREMCwgMHg4NEQwLCAweDI3QjcsIDB4ODREMSwgMHg4NEQxLCAweDEwOTAsIDB4ODREMiwgMHg4NEQyLCAweDI3Q0EsCisgICAgMHg4NEQzLCAweDg0RDMsIDB4MTA4RCwgMHg4NEQ0LCAweDg0RDQsIDB4MjdDOSwgMHg4NEQ2LCAweDg0RDYsIDB4MjdDMywKKyAgICAweDg0RDcsIDB4ODRENywgMHgyN0M4LCAweDg0REEsIDB4ODREQSwgMHgzRkY1LCAweDg0REIsIDB4ODREQiwgMHgyN0NCLAorICAgIDB4ODRERSwgMHg4NERFLCAweDM3RUEsIDB4ODRFMSwgMHg4NEUxLCAweDQ3NjUsIDB4ODRFMiwgMHg4NEUyLCAweDM3QjUsCisgICAgMHg4NEU0LCAweDg0RTQsIDB4MzdFRiwgMHg4NEU1LCAweDg0RTUsIDB4M0JEMCwgMHg4NEU3LCAweDg0RTgsIDB4MkEwMywKKyAgICAweDg0RTksIDB4ODRFOSwgMHgyOUY3LCAweDg0RUEsIDB4ODRFQSwgMHgyOUY2LCAweDg0RUIsIDB4ODRFQiwgMHgyOUYyLAorICAgIDB4ODRFQywgMHg4NEVDLCAweDExRkIsIDB4ODRFRSwgMHg4NEVFLCAweDExRjMsIDB4ODRFRiwgMHg4NEVGLCAweDJBMDYsCisgICAgMHg4NEYwLCAweDg0RjAsIDB4MkEwNSwgMHg4NEYxLCAweDg0RjEsIDB4MjUyRiwgMHg4NEYyLCAweDg0RjIsIDB4MjlFRiwKKyAgICAweDg0RjMsIDB4ODRGMywgMHgyOUYzLCAweDg0RjQsIDB4ODRGNCwgMHgyOUVELCAweDg0RjYsIDB4ODRGNiwgMHgyQTAwLAorICAgIDB4ODRGNywgMHg4NEY3LCAweDI5RjEsIDB4ODRGOCwgMHg4NEY4LCAweDQ3NjYsIDB4ODRGOSwgMHg4NEY5LCAweDJBMDcsCisgICAgMHg4NEZBLCAweDg0RkEsIDB4MjlFQSwgMHg4NEZCLCAweDg0RkIsIDB4MjlFOCwgMHg4NEZDLCAweDg0RkMsIDB4MjlGNCwKKyAgICAweDg0RkQsIDB4ODRGRCwgMHgyOUZFLCAweDg0RkUsIDB4ODRGRSwgMHgyOUY5LCAweDg0RkYsIDB4ODRGRiwgMHgxMUZELAorICAgIDB4ODUwMCwgMHg4NTAwLCAweDI5REYsIDB4ODUwMiwgMHg4NTAyLCAweDI5RkQsIDB4ODUwMywgMHg4NTAzLCAweDM5OEEsCisgICAgMHg4NTA1LCAweDg1MDUsIDB4NDBFQiwgMHg4NTA2LCAweDg1MDYsIDB4MTFGRSwgMHg4NTA3LCAweDg1MDcsIDB4MjU0MywKKyAgICAweDg1MDgsIDB4ODUwOCwgMHgyOUVCLCAweDg1MDksIDB4ODUwOSwgMHgyOUUyLCAweDg1MEEsIDB4ODUwQSwgMHgyOUU1LAorICAgIDB4ODUwQiwgMHg4NTBCLCAweDJBMEIsIDB4ODUwQywgMHg4NTBDLCAweDI5RUMsIDB4ODUwRCwgMHg4NTBELCAweDI5RTMsCisgICAgMHg4NTBFLCAweDg1MEUsIDB4MjlFMSwgMHg4NTBGLCAweDg1MEYsIDB4MjlERSwgMHg4NTEwLCAweDg1MTAsIDB4NDc2NywKKyAgICAweDg1MTEsIDB4ODUxMSwgMHgxMUY3LCAweDg1MTIsIDB4ODUxMiwgMHgyOUY1LCAweDg1MTMsIDB4ODUxMywgMHgxMUY2LAorICAgIDB4ODUxNCwgMHg4NTE0LCAweDExRkEsIDB4ODUxNSwgMHg4NTE1LCAweDI5RjAsIDB4ODUxNiwgMHg4NTE2LCAweDI5RjgsCisgICAgMHg4NTE3LCAweDg1MTcsIDB4MTFGMCwgMHg4NTE4LCAweDg1MTgsIDB4MkEwOCwgMHg4NTE5LCAweDg1MTksIDB4MkEwQywKKyAgICAweDg1MUEsIDB4ODUxQSwgMHgxMUYyLCAweDg1MUMsIDB4ODUxQywgMHgyOUU3LCAweDg1MUQsIDB4ODUxRCwgMHgyOUZCLAorICAgIDB4ODUxRSwgMHg4NTFFLCAweDI5RkYsIDB4ODUxRiwgMHg4NTFGLCAweDI5RTQsIDB4ODUyMCwgMHg4NTIwLCAweDJBMDksCisgICAgMHg4NTIxLCAweDg1MjEsIDB4MTFGOSwgMHg4NTIzLCAweDg1MjMsIDB4MTFGOCwgMHg4NTI0LCAweDg1MjQsIDB4MjlEQywKKyAgICAweDg1MjUsIDB4ODUyNSwgMHgxMUZDLCAweDg1MjYsIDB4ODUyNiwgMHgyQTAyLCAweDg1MjcsIDB4ODUyNywgMHgyOUU2LAorICAgIDB4ODUyOCwgMHg4NTI4LCAweDI5RkEsIDB4ODUyOSwgMHg4NTI5LCAweDI5RTAsIDB4ODUyQSwgMHg4NTJBLCAweDI5RUUsCisgICAgMHg4NTJCLCAweDg1MkIsIDB4MjlFOSwgMHg4NTJDLCAweDg1MkQsIDB4MTFGNCwgMHg4NTJFLCAweDg1MkUsIDB4MjlGQywKKyAgICAweDg1MkYsIDB4ODUyRiwgMHgyQTBELCAweDg1MzAsIDB4ODUzMCwgMHgyQTBBLCAweDg1MzEsIDB4ODUzMSwgMHgyQTAxLAorICAgIDB4ODUzMywgMHg4NTMzLCAweDQyMjgsIDB4ODUzNCwgMHg4NTM0LCAweDM3RjQsIDB4ODUzOCwgMHg4NTM4LCAweDQ3NjgsCisgICAgMHg4NTNCLCAweDg1M0IsIDB4MjlERCwgMHg4NTNELCAweDg1M0QsIDB4MTFGMSwgMHg4NTNFLCAweDg1M0UsIDB4MkM0RiwKKyAgICAweDg1NDAsIDB4ODU0MCwgMHgyQzQ2LCAweDg1NDEsIDB4ODU0MSwgMHgyQzQ5LCAweDg1NDIsIDB4ODU0MiwgMHg0MDYyLAorICAgIDB4ODU0MywgMHg4NTQzLCAweDEzM0IsIDB4ODU0NCwgMHg4NTQ0LCAweDJDNEIsIDB4ODU0NSwgMHg4NTQ1LCAweDJDNDAsCisgICAgMHg4NTQ2LCAweDg1NDYsIDB4MkM0NywgMHg4NTQ3LCAweDg1NDcsIDB4MkM0RCwgMHg4NTQ4LCAweDg1NDgsIDB4MTMzOCwKKyAgICAweDg1NDksIDB4ODU0OSwgMHgxMzNDLCAweDg1NEEsIDB4ODU0QSwgMHgxMzM2LCAweDg1NEIsIDB4ODU0QiwgMHgzN0MwLAorICAgIDB4ODU0QywgMHg4NTRDLCAweDQwMEYsIDB4ODU0RCwgMHg4NTRELCAweDJDNDIsIDB4ODU0RSwgMHg4NTRFLCAweDJDNTIsCisgICAgMHg4NTUxLCAweDg1NTEsIDB4MkM0QywgMHg4NTUyLCAweDg1NTIsIDB4NDc2OSwgMHg4NTUzLCAweDg1NTMsIDB4MkM0MywKKyAgICAweDg1NTQsIDB4ODU1NCwgMHgyQzVCLCAweDg1NTUsIDB4ODU1NSwgMHgyQzU1LCAweDg1NTYsIDB4ODU1NiwgMHgyQzNGLAorICAgIDB4ODU1NywgMHg4NTU3LCAweDJFMjMsIDB4ODU1OCwgMHg4NTU4LCAweDJDNDUsIDB4ODU1OSwgMHg4NTU5LCAweDEzMzcsCisgICAgMHg4NTVBLCAweDg1NUEsIDB4MzdEQiwgMHg4NTVCLCAweDg1NUIsIDB4MkM1MCwgMHg4NTVELCAweDg1NUQsIDB4MkM1QSwKKyAgICAweDg1NUUsIDB4ODU1RSwgMHgxMzNGLCAweDg1NjAsIDB4ODU2MCwgMHgyQzU3LCAweDg1NjEsIDB4ODU2MSwgMHgyQzQ0LAorICAgIDB4ODU2MiwgMHg4NTYyLCAweDJDNEEsIDB4ODU2MywgMHg4NTYzLCAweDJDNEUsIDB4ODU2NCwgMHg4NTY0LCAweDJDNDgsCisgICAgMHg4NTY1LCAweDg1NjUsIDB4MkM1QywgMHg4NTY2LCAweDg1NjYsIDB4MkM1OSwgMHg4NTY3LCAweDg1NjcsIDB4MkM1NiwKKyAgICAweDg1NjgsIDB4ODU2OSwgMHgxMzM5LCAweDg1NkEsIDB4ODU2QSwgMHgxMzNFLCAweDg1NkIsIDB4ODU2QiwgMHgyQzQxLAorICAgIDB4ODU2QywgMHg4NTZDLCAweDJDNUQsIDB4ODU2RCwgMHg4NTZELCAweDEzM0QsIDB4ODU2RSwgMHg4NTZFLCAweDJDNTMsCisgICAgMHg4NTZGLCAweDg1NzAsIDB4NDc2QiwgMHg4NTcxLCAweDg1NzEsIDB4MkM1MSwgMHg4NTczLCAweDg1NzMsIDB4MzdGOCwKKyAgICAweDg1NzUsIDB4ODU3NSwgMHgyQzU0LCAweDg1NzYsIDB4ODU3NiwgMHgyRTMwLCAweDg1NzcsIDB4ODU3NywgMHgyRTFELAorICAgIDB4ODU3OCwgMHg4NTc4LCAweDJFMjIsIDB4ODU3OSwgMHg4NTc5LCAweDJFMkYsIDB4ODU3QSwgMHg4NTdBLCAweDJFMjEsCisgICAgMHg4NTdCLCAweDg1N0IsIDB4MkUxOSwgMHg4NTdDLCAweDg1N0MsIDB4MkUxRSwgMHg4NTdFLCAweDg1N0UsIDB4MTQ1QywKKyAgICAweDg1ODAsIDB4ODU4MCwgMHgyRTEyLCAweDg1ODEsIDB4ODU4MSwgMHgyRTJBLCAweDg1ODIsIDB4ODU4MiwgMHgyRTJDLAorICAgIDB4ODU4MywgMHg4NTgzLCAweDJFMTEsIDB4ODU4NCwgMHg4NTg0LCAweDE0NUIsIDB4ODU4NSwgMHg4NTg1LCAweDJFMkUsCisgICAgMHg4NTg2LCAweDg1ODYsIDB4MkUyNiwgMHg4NTg3LCAweDg1ODcsIDB4MTQ2MiwgMHg4NTg4LCAweDg1ODgsIDB4MkUyRCwKKyAgICAweDg1ODksIDB4ODU4OSwgMHgyRTFGLCAweDg1OEEsIDB4ODU4QSwgMHgxNDY0LCAweDg1OEIsIDB4ODU4QiwgMHgyRTE3LAorICAgIDB4ODU4QywgMHg4NThDLCAweDJDNTgsIDB4ODU4RCwgMHg4NThELCAweDJFMjcsIDB4ODU4RSwgMHg4NThFLCAweDJFMjQsCisgICAgMHg4NThGLCAweDg1OEYsIDB4MkUxMywgMHg4NTkwLCAweDg1OTAsIDB4MkUzMiwgMHg4NTkxLCAweDg1OTEsIDB4MTQ1RSwKKyAgICAweDg1OTQsIDB4ODU5NCwgMHgxNDVGLCAweDg1OTUsIDB4ODU5NSwgMHgyRTE1LCAweDg1OTYsIDB4ODU5NiwgMHgyRTI1LAorICAgIDB4ODU5OCwgMHg4NTk4LCAweDJFMzEsIDB4ODU5OSwgMHg4NTk5LCAweDJFMjgsIDB4ODU5QSwgMHg4NTlBLCAweDJFMUIsCisgICAgMHg4NTlCLCAweDg1OUIsIDB4MTQ2MSwgMHg4NTlDLCAweDg1OUMsIDB4MTQ1RCwgMHg4NTlELCAweDg1OUQsIDB4MkUyOSwKKyAgICAweDg1OUUsIDB4ODU5RSwgMHgyRTFDLCAweDg1OUYsIDB4ODU5RiwgMHgyRTMzLCAweDg1QTAsIDB4ODVBMCwgMHgyRTE2LAorICAgIDB4ODVBMSwgMHg4NUExLCAweDJFMjAsIDB4ODVBMiwgMHg4NUEyLCAweDJFMkIsIDB4ODVBMywgMHg4NUEzLCAweDJFMTgsCisgICAgMHg4NUE0LCAweDg1QTQsIDB4MkUxQSwgMHg4NUE2LCAweDg1QTYsIDB4MTQ2NSwgMHg4NUE3LCAweDg1QTcsIDB4MkUxNCwKKyAgICAweDg1QTgsIDB4ODVBOCwgMHgxNDYzLCAweDg1QTksIDB4ODVBOSwgMHgxNTFDLCAweDg1QUEsIDB4ODVBQSwgMHgxNDVBLAorICAgIDB4ODVBRiwgMHg4NUFGLCAweDE0NjAsIDB4ODVCMCwgMHg4NUIwLCAweDE1MjAsIDB4ODVCMSwgMHg4NUIxLCAweDJGQTYsCisgICAgMHg4NUIzLCAweDg1QjMsIDB4MkY5QywgMHg4NUI0LCAweDg1QjQsIDB4MkY5NywgMHg4NUI1LCAweDg1QjUsIDB4MkY5RCwKKyAgICAweDg1QjYsIDB4ODVCNiwgMHgyRkE3LCAweDg1QjcsIDB4ODVCNywgMHgyRkFCLCAweDg1QjgsIDB4ODVCOCwgMHgyRkFBLAorICAgIDB4ODVCOSwgMHg4NUI5LCAweDE1MjIsIDB4ODVCQSwgMHg4NUJBLCAweDE1MjEsIDB4ODVCRCwgMHg4NUJELCAweDJGOUUsCisgICAgMHg4NUJFLCAweDg1QkUsIDB4MkZBQywgMHg4NUJGLCAweDg1QkYsIDB4MkZBMSwgMHg4NUMwLCAweDg1QzAsIDB4MkY5OSwKKyAgICAweDg1QzEsIDB4ODVDMSwgMHgzN0ZFLCAweDg1QzIsIDB4ODVDMiwgMHgyRjlCLCAweDg1QzMsIDB4ODVDMywgMHgyRjlBLAorICAgIDB4ODVDNCwgMHg4NUM0LCAweDJGQTAsIDB4ODVDNSwgMHg4NUM1LCAweDJGQTUsIDB4ODVDNiwgMHg4NUM2LCAweDJGOTgsCisgICAgMHg4NUM3LCAweDg1QzcsIDB4MkY5RiwgMHg4NUM4LCAweDg1QzgsIDB4MkZBNCwgMHg4NUM5LCAweDg1QzksIDB4MTUxRiwKKyAgICAweDg1Q0IsIDB4ODVDQiwgMHgyRkEyLCAweDg1Q0QsIDB4ODVDRCwgMHgxNTFELCAweDg1Q0UsIDB4ODVDRSwgMHgyRkEzLAorICAgIDB4ODVDRiwgMHg4NUNGLCAweDE1MUIsIDB4ODVEMCwgMHg4NUQwLCAweDE1MUUsIDB4ODVEMSwgMHg4NUQxLCAweDMxMDEsCisgICAgMHg4NUQyLCAweDg1RDIsIDB4MkZBOCwgMHg4NUQ1LCAweDg1RDUsIDB4MTVCNywgMHg4NUQ3LCAweDg1RDcsIDB4MzBGOSwKKyAgICAweDg1RDgsIDB4ODVEOCwgMHgzMEZELCAweDg1RDksIDB4ODVEOSwgMHgzMEY1LCAweDg1REEsIDB4ODVEQSwgMHgzMEY4LAorICAgIDB4ODVEQywgMHg4NURDLCAweDMxMDAsIDB4ODVERCwgMHg4NURELCAweDE1QjUsIDB4ODVERSwgMHg4NURFLCAweDMxMDUsCisgICAgMHg4NURGLCAweDg1REYsIDB4MzBGRSwgMHg4NUUwLCAweDg1RTAsIDB4NDc2RCwgMHg4NUUxLCAweDg1RTEsIDB4MzBGNiwKKyAgICAweDg1RTIsIDB4ODVFMiwgMHgzMTA2LCAweDg1RTMsIDB4ODVFMywgMHgzMEZGLCAweDg1RTQsIDB4ODVFNSwgMHgxNUI4LAorICAgIDB4ODVFNiwgMHg4NUU2LCAweDMxMDMsIDB4ODVFOCwgMHg4NUU4LCAweDMwRjcsIDB4ODVFOSwgMHg4NUU5LCAweDE1QjQsCisgICAgMHg4NUVBLCAweDg1RUEsIDB4MTVCNiwgMHg4NUVCLCAweDg1RUIsIDB4MzBGMiwgMHg4NUVDLCAweDg1RUMsIDB4MzBGQSwKKyAgICAweDg1RUQsIDB4ODVFRCwgMHgzMEY0LCAweDg1RUUsIDB4ODVFRSwgMHgzQzU2LCAweDg1RUYsIDB4ODVFRiwgMHgzMTA0LAorICAgIDB4ODVGMCwgMHg4NUYwLCAweDMxMDIsIDB4ODVGMSwgMHg4NUYxLCAweDMwRjMsIDB4ODVGMiwgMHg4NUYyLCAweDMwRkIsCisgICAgMHg4NUY2LCAweDg1RjYsIDB4MzIyNSwgMHg4NUY3LCAweDg1RjcsIDB4MTVCQSwgMHg4NUY4LCAweDg1RjgsIDB4MzBGQywKKyAgICAweDg1RjksIDB4ODVGOSwgMHgxNjM4LCAweDg1RkEsIDB4ODVGQSwgMHgxNjNBLCAweDg1RkIsIDB4ODVGQiwgMHgxNjM3LAorICAgIDB4ODVGQywgMHg4NUZDLCAweDNDNTAsIDB4ODVGRCwgMHg4NUZELCAweDMyMkEsIDB4ODVGRSwgMHg4NUZFLCAweDMyMjIsCisgICAgMHg4NUZGLCAweDg1RkYsIDB4MzIyMCwgMHg4NjAwLCAweDg2MDAsIDB4MzIyNCwgMHg4NjAxLCAweDg2MDEsIDB4MzIyMSwKKyAgICAweDg2MDIsIDB4ODYwMiwgMHgzODAwLCAweDg2MDQsIDB4ODYwNCwgMHgzMjI2LCAweDg2MDUsIDB4ODYwNSwgMHgzMjI4LAorICAgIDB4ODYwNiwgMHg4NjA2LCAweDE2M0IsIDB4ODYwNywgMHg4NjA3LCAweDE2M0QsIDB4ODYwOSwgMHg4NjA5LCAweDMyMjcsCisgICAgMHg4NjBBLCAweDg2MEEsIDB4MTYzRSwgMHg4NjBCLCAweDg2MEIsIDB4MTYzQywgMHg4NjBDLCAweDg2MEMsIDB4MzIyOSwKKyAgICAweDg2MEQsIDB4ODYwRCwgMHg0MDY0LCAweDg2MTAsIDB4ODYxMCwgMHgzQjdGLCAweDg2MTEsIDB4ODYxMSwgMHgxNjM5LAorICAgIDB4ODYxNCwgMHg4NjE0LCAweDQ2QkUsIDB4ODYxNiwgMHg4NjE2LCAweDM3RkIsIDB4ODYxNywgMHg4NjE3LCAweDE2ODUsCisgICAgMHg4NjE4LCAweDg2MTgsIDB4MzJGNiwgMHg4NjE5LCAweDg2MTksIDB4MzJGQywgMHg4NjFBLCAweDg2MUEsIDB4MTY4NywKKyAgICAweDg2MUIsIDB4ODYxQiwgMHgzMjIzLCAweDg2MUMsIDB4ODYxQywgMHgzMkZCLCAweDg2MUUsIDB4ODYxRSwgMHgzMzAyLAorICAgIDB4ODYxRiwgMHg4NjFGLCAweDMyRjksIDB4ODYyMCwgMHg4NjIwLCAweDMzMDAsIDB4ODYyMSwgMHg4NjIxLCAweDMyRkYsCisgICAgMHg4NjIyLCAweDg2MjIsIDB4MzIxRiwgMHg4NjIzLCAweDg2MjMsIDB4MzJGQSwgMHg4NjI0LCAweDg2MjQsIDB4MkZBOSwKKyAgICAweDg2MjUsIDB4ODYyNSwgMHgzMzAzLCAweDg2MjYsIDB4ODYyNiwgMHgzMkY4LCAweDg2MjcsIDB4ODYyNywgMHgzMkZELAorICAgIDB4ODYyOCwgMHg4NjI4LCAweDM4MDUsIDB4ODYyOSwgMHg4NjI5LCAweDMzMDEsIDB4ODYyQSwgMHg4NjJBLCAweDMyRjcsCisgICAgMHg4NjJDLCAweDg2MkMsIDB4MzNBQSwgMHg4NjJELCAweDg2MkQsIDB4MTY4NiwgMHg4NjJFLCAweDg2MkUsIDB4MzJGRSwKKyAgICAweDg2MkYsIDB4ODYyRiwgMHgzRjlFLCAweDg2MzEsIDB4ODYzMSwgMHgzNDMyLCAweDg2MzIsIDB4ODYzMiwgMHgzM0FCLAorICAgIDB4ODYzMywgMHg4NjMzLCAweDMzQTksIDB4ODYzNCwgMHg4NjM1LCAweDMzQTcsIDB4ODYzNiwgMHg4NjM2LCAweDMzQUMsCisgICAgMHg4NjM4LCAweDg2MzgsIDB4MTcwNywgMHg4NjM5LCAweDg2MzksIDB4MzQzMCwgMHg4NjNBLCAweDg2M0EsIDB4MzQyRSwKKyAgICAweDg2M0IsIDB4ODYzQiwgMHgzNDMzLCAweDg2M0MsIDB4ODYzQywgMHgzNDMxLCAweDg2M0UsIDB4ODYzRSwgMHgzNDM0LAorICAgIDB4ODYzRiwgMHg4NjNGLCAweDE3MDgsIDB4ODY0MCwgMHg4NjQwLCAweDM0MkYsIDB4ODY0MiwgMHg4NjQyLCAweDM4QzEsCisgICAgMHg4NjQzLCAweDg2NDMsIDB4MzQ5NywgMHg4NjQ1LCAweDg2NDUsIDB4M0I2NiwgMHg4NjQ2LCAweDg2NDgsIDB4MzRERiwKKyAgICAweDg2NEIsIDB4ODY0QiwgMHgzNTNFLCAweDg2NEMsIDB4ODY0QywgMHgzNTM2LCAweDg2NEQsIDB4ODY0RCwgMHgxODE4LAorICAgIDB4ODY0RSwgMHg4NjRFLCAweDA2ODksIDB4ODY1MCwgMHg4NjUwLCAweDA3RkYsIDB4ODY1MiwgMHg4NjUyLCAweDFERTMsCisgICAgMHg4NjUzLCAweDg2NTMsIDB4MURFMiwgMHg4NjU0LCAweDg2NTQsIDB4MDlBRiwgMHg4NjU1LCAweDg2NTUsIDB4MEI4OCwKKyAgICAweDg2NTYsIDB4ODY1NiwgMHgyMDNDLCAweDg2NTksIDB4ODY1OSwgMHgyMDNCLCAweDg2NUIsIDB4ODY1QiwgMHgwRDQ4LAorICAgIDB4ODY1QywgMHg4NjVDLCAweDBFRUQsIDB4ODY1RSwgMHg4NjVFLCAweDBFRUMsIDB4ODY1RiwgMHg4NjVGLCAweDBFRUUsCisgICAgMHg4NjYxLCAweDg2NjEsIDB4MjdDRSwgMHg4NjYyLCAweDg2NjIsIDB4MkEwRSwgMHg4NjYzLCAweDg2NjMsIDB4MkM1RSwKKyAgICAweDg2NjQsIDB4ODY2NCwgMHgyQzYwLCAweDg2NjUsIDB4ODY2NSwgMHgyQzVGLCAweDg2NjcsIDB4ODY2NywgMHgxNDY2LAorICAgIDB4ODY2OCwgMHg4NjY4LCAweDJFMzQsIDB4ODY2OSwgMHg4NjY5LCAweDJGQUQsIDB4ODY2QSwgMHg4NjZBLCAweDM1MUUsCisgICAgMHg4NjZCLCAweDg2NkIsIDB4MDQwRiwgMHg4NjZDLCAweDg2NkMsIDB4MzgxMywgMHg4NjZELCAweDg2NkUsIDB4MUE0NiwKKyAgICAweDg2NkYsIDB4ODY2RiwgMHgxQTQ1LCAweDg2NzAsIDB4ODY3MCwgMHgxQTQ0LCAweDg2NzEsIDB4ODY3MSwgMHgwNjhBLAorICAgIDB4ODY3MiwgMHg4NjcyLCAweDQ3NkYsIDB4ODY3MywgMHg4NjczLCAweDFCRkQsIDB4ODY3NCwgMHg4Njc0LCAweDFCRkIsCisgICAgMHg4Njc3LCAweDg2NzcsIDB4MUJGQSwgMHg4Njc5LCAweDg2NzksIDB4MDgwMCwgMHg4NjdBLCAweDg2N0EsIDB4MDgwMiwKKyAgICAweDg2N0IsIDB4ODY3QiwgMHgwODAxLCAweDg2N0MsIDB4ODY3QywgMHgxQkZDLCAweDg2N0UsIDB4ODY3RSwgMHgzODBBLAorICAgIDB4ODY4NSwgMHg4Njg1LCAweDFERUYsIDB4ODY4NiwgMHg4Njg2LCAweDFERUMsIDB4ODY4NywgMHg4Njg3LCAweDFERUEsCisgICAgMHg4NjhBLCAweDg2OEEsIDB4MDlCMCwgMHg4NjhCLCAweDg2OEIsIDB4MURFRCwgMHg4NjhDLCAweDg2OEMsIDB4MDlCNSwKKyAgICAweDg2OEQsIDB4ODY4RCwgMHgxREU3LCAweDg2OEUsIDB4ODY4RSwgMHgxREY2LCAweDg2OTAsIDB4ODY5MCwgMHgxREY4LAorICAgIDB4ODY5MSwgMHg4NjkxLCAweDFERTgsIDB4ODY5MiwgMHg4NjkyLCAweDQ3NzAsIDB4ODY5MywgMHg4NjkzLCAweDA5QjIsCisgICAgMHg4Njk0LCAweDg2OTQsIDB4MURGOSwgMHg4Njk1LCAweDg2OTUsIDB4MURGNCwgMHg4Njk2LCAweDg2OTYsIDB4MURFNiwKKyAgICAweDg2OTcsIDB4ODY5NywgMHgxREVCLCAweDg2OTgsIDB4ODY5OCwgMHgxREY1LCAweDg2OTksIDB4ODY5OSwgMHgxREYxLAorICAgIDB4ODY5QSwgMHg4NjlBLCAweDFERUUsIDB4ODY5QywgMHg4NjlDLCAweDA5QjcsIDB4ODY5RCwgMHg4NjlELCAweDFERjcsCisgICAgMHg4NjlFLCAweDg2OUUsIDB4MURFOSwgMHg4NkEwLCAweDg2QTAsIDB4M0I4OCwgMHg4NkExLCAweDg2QTEsIDB4MURGMiwKKyAgICAweDg2QTIsIDB4ODZBMiwgMHgxREU0LCAweDg2QTMsIDB4ODZBMywgMHgwOUI2LCAweDg2QTQsIDB4ODZBNCwgMHgwOUIzLAorICAgIDB4ODZBNSwgMHg4NkE1LCAweDFERjAsIDB4ODZBNywgMHg4NkE3LCAweDFERjMsIDB4ODZBOCwgMHg4NkE4LCAweDFERTUsCisgICAgMHg4NkE5LCAweDg2QTksIDB4MDlCNCwgMHg4NkFBLCAweDg2QUEsIDB4MDlCMSwgMHg4NkFELCAweDg2QUQsIDB4M0YwNiwKKyAgICAweDg2QUYsIDB4ODZBRiwgMHgwQjkyLCAweDg2QjAsIDB4ODZCMCwgMHgyMDQzLCAweDg2QjEsIDB4ODZCMSwgMHgwQjkxLAorICAgIDB4ODZCMiwgMHg4NkIyLCAweDQzRTAsIDB4ODZCMywgMHg4NkIzLCAweDIwNDYsIDB4ODZCNCwgMHg4NkI0LCAweDIwNDksCisgICAgMHg4NkI1LCAweDg2QjUsIDB4MEI4RSwgMHg4NkI2LCAweDg2QjYsIDB4MEI4QywgMHg4NkI3LCAweDg2QjcsIDB4MjAzRSwKKyAgICAweDg2QjgsIDB4ODZCOCwgMHgyMDQ3LCAweDg2QjksIDB4ODZCOSwgMHgyMDQ1LCAweDg2QkEsIDB4ODZCQSwgMHgyMDQyLAorICAgIDB4ODZCQiwgMHg4NkJDLCAweDIwNEEsIDB4ODZCRCwgMHg4NkJFLCAweDIwNEQsIDB4ODZCRiwgMHg4NkJGLCAweDIwM0QsCisgICAgMHg4NkMwLCAweDg2QzAsIDB4MEI4QiwgMHg4NkMxLCAweDg2QzEsIDB4MjA0MCwgMHg4NkMyLCAweDg2QzIsIDB4MjAzRiwKKyAgICAweDg2QzMsIDB4ODZDMywgMHgyMDRDLCAweDg2QzQsIDB4ODZDNCwgMHgwQjhELCAweDg2QzUsIDB4ODZDNSwgMHgyMDQxLAorICAgIDB4ODZDNiwgMHg4NkM2LCAweDBCOEYsIDB4ODZDNywgMHg4NkM3LCAweDBCOEEsIDB4ODZDOCwgMHg4NkM4LCAweDIwNDQsCisgICAgMHg4NkM5LCAweDg2QzksIDB4MEI5MywgMHg4NkNCLCAweDg2Q0IsIDB4MEI5MCwgMHg4NkNDLCAweDg2Q0MsIDB4MjA0OCwKKyAgICAweDg2RDAsIDB4ODZEMCwgMHgwRDRGLCAweDg2RDEsIDB4ODZEMSwgMHgyMkQyLCAweDg2RDMsIDB4ODZEMywgMHgyMkM3LAorICAgIDB4ODZENCwgMHg4NkQ0LCAweDBENEMsIDB4ODZENiwgMHg4NkQ2LCAweDI1NkQsIDB4ODZENywgMHg4NkQ3LCAweDIyRDAsCisgICAgMHg4NkQ4LCAweDg2RDgsIDB4MjJDNCwgMHg4NkQ5LCAweDg2RDksIDB4MEQ0QSwgMHg4NkRBLCAweDg2REEsIDB4MjJDOSwKKyAgICAweDg2REIsIDB4ODZEQiwgMHgwRDRELCAweDg2REMsIDB4ODZEQywgMHgyMkNELCAweDg2REQsIDB4ODZERCwgMHgyMkNCLAorICAgIDB4ODZERSwgMHg4NkRFLCAweDBENTAsIDB4ODZERiwgMHg4NkRGLCAweDBENDksIDB4ODZFMiwgMHg4NkUyLCAweDIyQzUsCisgICAgMHg4NkUzLCAweDg2RTMsIDB4MjJDOCwgMHg4NkU0LCAweDg2RTQsIDB4MEQ0RSwgMHg4NkU2LCAweDg2RTYsIDB4MjJDNiwKKyAgICAweDg2RTgsIDB4ODZFOCwgMHgyMkQxLCAweDg2RTksIDB4ODZFOSwgMHgyMkNGLCAweDg2RUEsIDB4ODZFQSwgMHgyMkNBLAorICAgIDB4ODZFQiwgMHg4NkVCLCAweDIyQ0MsIDB4ODZFQywgMHg4NkVDLCAweDIyQ0UsIDB4ODZFRCwgMHg4NkVELCAweDBENEIsCisgICAgMHg4NkVGLCAweDg2RUYsIDB4NDc3MSwgMHg4NkY1LCAweDg2RjUsIDB4MjU2RSwgMHg4NkY2LCAweDg2RjYsIDB4MjU3NCwKKyAgICAweDg2RjcsIDB4ODZGNywgMHgyNTZBLCAweDg2RjgsIDB4ODZGOCwgMHgyNTcwLCAweDg2RjksIDB4ODZGOSwgMHgwRUVGLAorICAgIDB4ODZGQSwgMHg4NkZBLCAweDI1NkMsIDB4ODZGQiwgMHg4NkZCLCAweDBFRjUsIDB4ODZGRSwgMHg4NkZFLCAweDBFRjQsCisgICAgMHg4NzAwLCAweDg3MDAsIDB4MEVGMywgMHg4NzAxLCAweDg3MDEsIDB4MjU3MywgMHg4NzAyLCAweDg3MDMsIDB4MEVGNiwKKyAgICAweDg3MDQsIDB4ODcwNCwgMHgyNTY5LCAweDg3MDUsIDB4ODcwNSwgMHgyNTc2LCAweDg3MDYsIDB4ODcwNiwgMHgwRUY4LAorICAgIDB4ODcwNywgMHg4NzA3LCAweDBFRjIsIDB4ODcwOCwgMHg4NzA4LCAweDBFRjEsIDB4ODcwOSwgMHg4NzA5LCAweDI1NzIsCisgICAgMHg4NzBBLCAweDg3MEEsIDB4MEVGOSwgMHg4NzBCLCAweDg3MEIsIDB4MjU2OCwgMHg4NzBDLCAweDg3MEMsIDB4MjU2QiwKKyAgICAweDg3MEQsIDB4ODcwRCwgMHgyNTc1LCAweDg3MEUsIDB4ODcwRSwgMHgyNTcxLCAweDg3MTEsIDB4ODcxMSwgMHgyN0VFLAorICAgIDB4ODcxMiwgMHg4NzEyLCAweDI3RTMsIDB4ODcxMywgMHg4NzEzLCAweDBFRjAsIDB4ODcxOCwgMHg4NzE4LCAweDEwOTgsCisgICAgMHg4NzE5LCAweDg3MTksIDB4MjdENywgMHg4NzFBLCAweDg3MUEsIDB4MjdFQywgMHg4NzFCLCAweDg3MUIsIDB4MjdEOCwKKyAgICAweDg3MUMsIDB4ODcxQywgMHgxMDkzLCAweDg3MUUsIDB4ODcxRSwgMHgyN0Q1LCAweDg3MjAsIDB4ODcyMCwgMHgyN0RFLAorICAgIDB4ODcyMSwgMHg4NzIxLCAweDI3RDYsIDB4ODcyMiwgMHg4NzIyLCAweDEwOTUsIDB4ODcyMywgMHg4NzIzLCAweDI3RDAsCisgICAgMHg4NzI0LCAweDg3MjQsIDB4MjdFQiwgMHg4NzI1LCAweDg3MjUsIDB4MTA5NiwgMHg4NzI2LCAweDg3MjcsIDB4MjdFOCwKKyAgICAweDg3MjgsIDB4ODcyOCwgMHgyN0QxLCAweDg3MjksIDB4ODcyOSwgMHgxMDlCLCAweDg3MkEsIDB4ODcyQSwgMHgyN0UwLAorICAgIDB4ODcyQywgMHg4NzJDLCAweDI3REEsIDB4ODcyRCwgMHg4NzJELCAweDI3RTEsIDB4ODcyRSwgMHg4NzJFLCAweDI3RDQsCisgICAgMHg4NzMwLCAweDg3MzAsIDB4MjdFRCwgMHg4NzMxLCAweDg3MzEsIDB4MjdFNSwgMHg4NzMyLCAweDg3MzIsIDB4MjdERiwKKyAgICAweDg3MzMsIDB4ODczMywgMHgyN0NGLCAweDg3MzQsIDB4ODczNCwgMHgxMDk3LCAweDg3MzUsIDB4ODczNSwgMHgyN0U2LAorICAgIDB4ODczNywgMHg4NzM3LCAweDEwOUEsIDB4ODczOCwgMHg4NzM4LCAweDI3RUEsIDB4ODczQSwgMHg4NzNBLCAweDI3RTQsCisgICAgMHg4NzNCLCAweDg3M0IsIDB4MTA5NCwgMHg4NzNDLCAweDg3M0MsIDB4MjdFMiwgMHg4NzNFLCAweDg3M0UsIDB4MjdEQywKKyAgICAweDg3M0YsIDB4ODczRiwgMHgxMDkyLCAweDg3NDAsIDB4ODc0MCwgMHgyN0QzLCAweDg3NDEsIDB4ODc0MSwgMHgyN0RCLAorICAgIDB4ODc0MiwgMHg4NzQyLCAweDI3RTcsIDB4ODc0MywgMHg4NzQzLCAweDI3RDksIDB4ODc0NiwgMHg4NzQ2LCAweDI3REQsCisgICAgMHg4NzRDLCAweDg3NEMsIDB4MTIwOCwgMHg4NzRELCAweDg3NEQsIDB4MjU2RiwgMHg4NzRFLCAweDg3NEUsIDB4MkEyMCwKKyAgICAweDg3NEYsIDB4ODc0RiwgMHgyQTI5LCAweDg3NTAsIDB4ODc1MCwgMHgyQTFGLCAweDg3NTEsIDB4ODc1MSwgMHgyQTFCLAorICAgIDB4ODc1MiwgMHg4NzUyLCAweDJBMTgsIDB4ODc1MywgMHg4NzUzLCAweDEyMDksIDB4ODc1NCwgMHg4NzU0LCAweDJBMTYsCisgICAgMHg4NzU1LCAweDg3NTUsIDB4MTA5OSwgMHg4NzU2LCAweDg3NTYsIDB4MkEwRiwgMHg4NzU3LCAweDg3NTcsIDB4MTIwNywKKyAgICAweDg3NTgsIDB4ODc1OCwgMHgyQTE1LCAweDg3NTksIDB4ODc1OSwgMHgxMjA2LCAweDg3NUEsIDB4ODc1QSwgMHgyQTFBLAorICAgIDB4ODc1QiwgMHg4NzVCLCAweDJBMTcsIDB4ODc1QywgMHg4NzVDLCAweDJBMjcsIDB4ODc1RCwgMHg4NzVELCAweDJBMjIsCisgICAgMHg4NzVFLCAweDg3NUUsIDB4MkExQywgMHg4NzVGLCAweDg3NUYsIDB4MkEyMSwgMHg4NzYwLCAweDg3NjAsIDB4MTIwMiwKKyAgICAweDg3NjEsIDB4ODc2MSwgMHgyQTE5LCAweDg3NjIsIDB4ODc2MiwgMHgyQTJDLCAweDg3NjMsIDB4ODc2NCwgMHgyQTEwLAorICAgIDB4ODc2NSwgMHg4NzY1LCAweDJBMjgsIDB4ODc2NiwgMHg4NzY2LCAweDEyMDMsIDB4ODc2NywgMHg4NzY3LCAweDJBMkQsCisgICAgMHg4NzY4LCAweDg3NjgsIDB4MTIwNSwgMHg4NzY5LCAweDg3NjksIDB4MkEyRSwgMHg4NzZBLCAweDg3NkEsIDB4MkExRSwKKyAgICAweDg3NkIsIDB4ODc2QiwgMHgyN0QyLCAweDg3NkMsIDB4ODc2QywgMHgyQTI0LCAweDg3NkQsIDB4ODc2RCwgMHgyQTFELAorICAgIDB4ODc2RSwgMHg4NzZFLCAweDJBMjYsIDB4ODc2RiwgMHg4NzZGLCAweDJBMjMsIDB4ODc3MCwgMHg4NzcwLCAweDNFNkMsCisgICAgMHg4NzcxLCAweDg3NzEsIDB4MzgwQiwgMHg4NzczLCAweDg3NzMsIDB4MkExNCwgMHg4Nzc0LCAweDg3NzQsIDB4MTIwMCwKKyAgICAweDg3NzUsIDB4ODc3NSwgMHgyQTJCLCAweDg3NzYsIDB4ODc3NiwgMHgxMjAxLCAweDg3NzcsIDB4ODc3NywgMHgyQTEyLAorICAgIDB4ODc3OCwgMHg4Nzc4LCAweDEyMDQsIDB4ODc3OSwgMHg4Nzc5LCAweDJDNkIsIDB4ODc3QSwgMHg4NzdBLCAweDJBMjUsCisgICAgMHg4NzdCLCAweDg3N0IsIDB4MkEyQSwgMHg4NzdELCAweDg3N0QsIDB4NDA0NSwgMHg4NzgxLCAweDg3ODEsIDB4MkM2OCwKKyAgICAweDg3ODIsIDB4ODc4MiwgMHgxMUZGLCAweDg3ODMsIDB4ODc4MywgMHgxMzQwLCAweDg3ODQsIDB4ODc4NCwgMHgyQzcyLAorICAgIDB4ODc4NSwgMHg4Nzg1LCAweDJDNkUsIDB4ODc4NiwgMHg4Nzg2LCAweDNFQjAsIDB4ODc4NywgMHg4Nzg3LCAweDJDNkMsCisgICAgMHg4Nzg4LCAweDg3ODgsIDB4MkM2NywgMHg4Nzg5LCAweDg3ODksIDB4MkM3NiwgMHg4NzhCLCAweDg3OEIsIDB4NDNFMiwKKyAgICAweDg3OEMsIDB4ODc4QywgMHgzRkVGLCAweDg3OEQsIDB4ODc4RCwgMHgxMzQ0LCAweDg3OEYsIDB4ODc4RiwgMHgyQzYzLAorICAgIDB4ODc5MCwgMHg4NzkxLCAweDJDNkYsIDB4ODc5MiwgMHg4NzkyLCAweDJDNjYsIDB4ODc5MywgMHg4NzkzLCAweDJDNjUsCisgICAgMHg4Nzk0LCAweDg3OTQsIDB4MkM3MywgMHg4Nzk2LCAweDg3OTYsIDB4MkM2OSwgMHg4Nzk3LCAweDg3OTcsIDB4MkM2NCwKKyAgICAweDg3OTgsIDB4ODc5OCwgMHgyQzZBLCAweDg3OUEsIDB4ODc5QSwgMHgyQzc1LCAweDg3OUIsIDB4ODc5QiwgMHgyQzYyLAorICAgIDB4ODc5QywgMHg4NzlDLCAweDJDNzQsIDB4ODc5RCwgMHg4NzlELCAweDJDNzEsIDB4ODc5RSwgMHg4NzlFLCAweDEzNDIsCisgICAgMHg4NzlGLCAweDg3OUYsIDB4MTM0MSwgMHg4N0EyLCAweDg3QTIsIDB4MTM0MywgMHg4N0EzLCAweDg3QTMsIDB4MkM2RCwKKyAgICAweDg3QTQsIDB4ODdBNCwgMHgyQzYxLCAweDg3QTUsIDB4ODdBNSwgMHgzRDg4LCAweDg3QTksIDB4ODdBOSwgMHgzRkVDLAorICAgIDB4ODdBQSwgMHg4N0FBLCAweDJFMzYsIDB4ODdBQiwgMHg4N0FCLCAweDE0NkMsIDB4ODdBQywgMHg4N0FDLCAweDJFM0EsCisgICAgMHg4N0FELCAweDg3QUQsIDB4MkUzNywgMHg4N0FFLCAweDg3QUUsIDB4MkUzRSwgMHg4N0FGLCAweDg3QUYsIDB4MkU0NCwKKyAgICAweDg3QjAsIDB4ODdCMCwgMHgyRTM5LCAweDg3QjEsIDB4ODdCMSwgMHgzODBGLCAweDg3QjIsIDB4ODdCMiwgMHgyRTRELAorICAgIDB4ODdCMywgMHg4N0IzLCAweDE0NjksIDB4ODdCNCwgMHg4N0I0LCAweDJFNDcsIDB4ODdCNSwgMHg4N0I1LCAweDJFM0MsCisgICAgMHg4N0I2LCAweDg3QjYsIDB4MkU0OCwgMHg4N0I3LCAweDg3QjcsIDB4MkU0MywgMHg4N0I4LCAweDg3QjgsIDB4MkU0QSwKKyAgICAweDg3QjksIDB4ODdCOSwgMHgyRTNCLCAweDg3QkEsIDB4ODdCQSwgMHgxNDZFLCAweDg3QkIsIDB4ODdCQiwgMHgxNDZELAorICAgIDB4ODdCQywgMHg4N0JDLCAweDJFM0QsIDB4ODdCRCwgMHg4N0JELCAweDJFNEIsIDB4ODdCRSwgMHg4N0JFLCAweDJFMzUsCisgICAgMHg4N0JGLCAweDg3QkYsIDB4MkU0OSwgMHg4N0MwLCAweDg3QzAsIDB4MTQ2NywgMHg4N0MxLCAweDg3QzEsIDB4M0ZGQywKKyAgICAweDg3QzIsIDB4ODdDMiwgMHgyRTQxLCAweDg3QzMsIDB4ODdDMywgMHgyRTQwLCAweDg3QzQsIDB4ODdDNCwgMHgyRTQ1LAorICAgIDB4ODdDNSwgMHg4N0M1LCAweDJFMzgsIDB4ODdDNiwgMHg4N0M2LCAweDE0NkIsIDB4ODdDOCwgMHg4N0M4LCAweDE0NkYsCisgICAgMHg4N0M5LCAweDg3QzksIDB4MkUzRiwgMHg4N0NBLCAweDg3Q0EsIDB4MkU0NiwgMHg4N0NCLCAweDg3Q0IsIDB4MTQ3MCwKKyAgICAweDg3Q0MsIDB4ODdDQywgMHgyRTQyLCAweDg3Q0UsIDB4ODdDRSwgMHgzRkVELCAweDg3RDEsIDB4ODdEMSwgMHgxNDY4LAorICAgIDB4ODdEMiwgMHg4N0QyLCAweDE0NkEsIDB4ODdEMywgMHg4N0QzLCAweDJGQkEsIDB4ODdENCwgMHg4N0Q0LCAweDJGQjgsCisgICAgMHg4N0Q2LCAweDg3RDYsIDB4M0Y5MiwgMHg4N0Q3LCAweDg3RDcsIDB4MkZCRSwgMHg4N0Q4LCAweDg3RDgsIDB4MkZCQywKKyAgICAweDg3RDksIDB4ODdEOSwgMHgyRkJGLCAweDg3REEsIDB4ODdEQSwgMHgzODEwLCAweDg3REIsIDB4ODdEQiwgMHgyRkIxLAorICAgIDB4ODdEQywgMHg4N0RDLCAweDJGQjksIDB4ODdERCwgMHg4N0RELCAweDJGQzMsIDB4ODdERSwgMHg4N0RFLCAweDJFNEMsCisgICAgMHg4N0RGLCAweDg3REYsIDB4MkZCNSwgMHg4N0UwLCAweDg3RTAsIDB4MTUyNiwgMHg4N0UxLCAweDg3RTEsIDB4MkExMywKKyAgICAweDg3RTIsIDB4ODdFMiwgMHgyRkIwLCAweDg3RTMsIDB4ODdFMywgMHgyRkJELCAweDg3RTQsIDB4ODdFNCwgMHgyRkI3LAorICAgIDB4ODdFNSwgMHg4N0U1LCAweDJGQjQsIDB4ODdFNiwgMHg4N0U2LCAweDJGQUYsIDB4ODdFNywgMHg4N0U3LCAweDJGQUUsCisgICAgMHg4N0U4LCAweDg3RTgsIDB4MkZDMiwgMHg4N0VBLCAweDg3RUEsIDB4MkZCMywgMHg4N0VCLCAweDg3RUIsIDB4MkZCMiwKKyAgICAweDg3RUMsIDB4ODdFQywgMHgxNTI0LCAweDg3RUQsIDB4ODdFRCwgMHgyRkJCLCAweDg3RUUsIDB4ODdFRSwgMHgzODBELAorICAgIDB4ODdFRiwgMHg4N0VGLCAweDE1MjMsIDB4ODdGMiwgMHg4N0YyLCAweDE1MjUsIDB4ODdGMywgMHg4N0YzLCAweDJGQjYsCisgICAgMHg4N0Y0LCAweDg3RjQsIDB4MkZDMSwgMHg4N0Y1LCAweDg3RjUsIDB4M0ZBRSwgMHg4N0Y2LCAweDg3RjcsIDB4MzEwQSwKKyAgICAweDg3RjksIDB4ODdGOSwgMHgxNUJFLCAweDg3RkEsIDB4ODdGQSwgMHgzMTA4LCAweDg3RkIsIDB4ODdGQiwgMHgxNUJCLAorICAgIDB4ODdGQywgMHg4N0ZDLCAweDMxMTAsIDB4ODdGRSwgMHg4N0ZFLCAweDE1QkYsIDB4ODdGRiwgMHg4N0ZGLCAweDMxMTIsCisgICAgMHg4ODAwLCAweDg4MDAsIDB4MzEwNywgMHg4ODAxLCAweDg4MDEsIDB4MkZDMCwgMHg4ODAyLCAweDg4MDIsIDB4MzExNCwKKyAgICAweDg4MDMsIDB4ODgwMywgMHgzMTA5LCAweDg4MDQsIDB4ODgwNCwgMHgzRUFGLCAweDg4MDUsIDB4ODgwNSwgMHgxNUJDLAorICAgIDB4ODgwNiwgMHg4ODA2LCAweDMxMEYsIDB4ODgwOCwgMHg4ODA4LCAweDMxMTEsIDB4ODgwOSwgMHg4ODA5LCAweDMxMEMsCisgICAgMHg4ODBBLCAweDg4MEEsIDB4MzExMywgMHg4ODBCLCAweDg4MEIsIDB4MzEwRSwgMHg4ODBDLCAweDg4MEMsIDB4MzEwRCwKKyAgICAweDg4MEQsIDB4ODgwRCwgMHgxNUJELCAweDg4MEYsIDB4ODgwRiwgMHgzODExLCAweDg4MTAsIDB4ODgxMSwgMHgzMjJDLAorICAgIDB4ODgxMywgMHg4ODEzLCAweDMyMkYsIDB4ODgxNCwgMHg4ODE1LCAweDE2M0YsIDB4ODgxNiwgMHg4ODE2LCAweDMyMzAsCisgICAgMHg4ODE3LCAweDg4MTcsIDB4MzIyRSwgMHg4ODE4LCAweDg4MTgsIDB4M0Y3QSwgMHg4ODE5LCAweDg4MTksIDB4MzIyQiwKKyAgICAweDg4MUIsIDB4ODgxQiwgMHgzMzA2LCAweDg4MUMsIDB4ODgxQywgMHgzMzA5LCAweDg4MUQsIDB4ODgxRCwgMHgzMzA1LAorICAgIDB4ODgxRiwgMHg4ODFGLCAweDE2OEIsIDB4ODgyMCwgMHg4ODIwLCAweDMzMDcsIDB4ODgyMSwgMHg4ODIxLCAweDE2OEEsCisgICAgMHg4ODIyLCAweDg4MjIsIDB4MTY4OSwgMHg4ODIzLCAweDg4MjMsIDB4MTY4OCwgMHg4ODI0LCAweDg4MjQsIDB4MzMwOCwKKyAgICAweDg4MjUsIDB4ODgyNSwgMHgzM0IxLCAweDg4MjYsIDB4ODgyNiwgMHgzM0FGLCAweDg4MjcsIDB4ODgyNywgMHgzRTA3LAorICAgIDB4ODgyOCwgMHg4ODI4LCAweDMzQUUsIDB4ODgyOSwgMHg4ODI5LCAweDMzMDQsIDB4ODgyQSwgMHg4ODJBLCAweDMzQjAsCisgICAgMHg4ODJCLCAweDg4MkIsIDB4MzMwQSwgMHg4ODJDLCAweDg4MkMsIDB4MzNBRCwgMHg4ODJELCAweDg4MkQsIDB4M0I4QiwKKyAgICAweDg4MkUsIDB4ODgyRSwgMHgzNDM3LCAweDg4MkYsIDB4ODgyRiwgMHgzNDE1LCAweDg4MzAsIDB4ODgzMCwgMHgzNDM1LAorICAgIDB4ODgzMSwgMHg4ODMxLCAweDE3MDksIDB4ODgzMiwgMHg4ODMyLCAweDM0MzYsIDB4ODgzMywgMHg4ODMzLCAweDM0MzgsCisgICAgMHg4ODM1LCAweDg4MzUsIDB4MzQ5QSwgMHg4ODM2LCAweDg4MzYsIDB4MTcyOCwgMHg4ODM3LCAweDg4MzcsIDB4MzQ5OSwKKyAgICAweDg4MzgsIDB4ODgzOCwgMHgzNDk4LCAweDg4MzksIDB4ODgzOSwgMHgxNzI5LCAweDg4M0IsIDB4ODgzQiwgMHgxNzQ3LAorICAgIDB4ODgzQywgMHg4ODNDLCAweDM1MDgsIDB4ODgzRCwgMHg4ODNELCAweDM1MjAsIDB4ODgzRSwgMHg4ODNFLCAweDM1MUYsCisgICAgMHg4ODNGLCAweDg4M0YsIDB4MzUyMSwgMHg4ODQwLCAweDg4NDAsIDB4MDQxMCwgMHg4ODQxLCAweDg4NDEsIDB4MUJGRSwKKyAgICAweDg4NDIsIDB4ODg0MiwgMHgzRjVBLCAweDg4NDMsIDB4ODg0NCwgMHgxREZBLCAweDg4NDUsIDB4ODg0NiwgMHgzODE2LAorICAgIDB4ODg0OCwgMHg4ODQ4LCAweDIyRDMsIDB4ODg0QSwgMHg4ODRBLCAweDMzMEIsIDB4ODg0QiwgMHg4ODRCLCAweDM0OUIsCisgICAgMHg4ODRDLCAweDg4NEMsIDB4MDQxMSwgMHg4ODRELCAweDg4NEQsIDB4MDgwMywgMHg4ODRFLCAweDg4NEUsIDB4MUJGRiwKKyAgICAweDg4NEYsIDB4ODg0RiwgMHgzODQ0LCAweDg4NTIsIDB4ODg1MiwgMHgyMDRGLCAweDg4NTMsIDB4ODg1MywgMHgwQjk0LAorICAgIDB4ODg1NSwgMHg4ODU1LCAweDIyRDUsIDB4ODg1NiwgMHg4ODU2LCAweDIyRDQsIDB4ODg1NywgMHg4ODU3LCAweDBENTEsCisgICAgMHg4ODU5LCAweDg4NTksIDB4MEVGQSwgMHg4ODVBLCAweDg4NUEsIDB4MkEyRiwgMHg4ODVCLCAweDg4NUIsIDB4MTIwQSwKKyAgICAweDg4NUQsIDB4ODg1RCwgMHgxMjBCLCAweDg4NUUsIDB4ODg1RSwgMHgzODFCLCAweDg4NjAsIDB4ODg2MCwgMHgzQTQ2LAorICAgIDB4ODg2MSwgMHg4ODYxLCAweDEzNDUsIDB4ODg2MiwgMHg4ODYyLCAweDE3MkEsIDB4ODg2MywgMHg4ODYzLCAweDA0MTIsCisgICAgMHg4ODY0LCAweDg4NjQsIDB4NDUwMiwgMHg4ODY1LCAweDg4NjUsIDB4M0RGQywgMHg4ODY3LCAweDg4NjcsIDB4MUMwMCwKKyAgICAweDg4NjgsIDB4ODg2OCwgMHgwNjhDLCAweDg4NjksIDB4ODg2OSwgMHgxQzAyLCAweDg4NkEsIDB4ODg2QSwgMHgxQzAxLAorICAgIDB4ODg2QiwgMHg4ODZCLCAweDA4MDQsIDB4ODg2RCwgMHg4ODZELCAweDFERkMsIDB4ODg2RSwgMHg4ODZFLCAweDNCOEUsCisgICAgMHg4ODZGLCAweDg4NkYsIDB4MUUwMywgMHg4ODcwLCAweDg4NzAsIDB4MDlCOCwgMHg4ODcxLCAweDg4NzEsIDB4MUUwMSwKKyAgICAweDg4NzIsIDB4ODg3MiwgMHgxREZGLCAweDg4NzQsIDB4ODg3NCwgMHgxRTA2LCAweDg4NzUsIDB4ODg3NiwgMHgxREZELAorICAgIDB4ODg3NywgMHg4ODc3LCAweDA5QjksIDB4ODg3OSwgMHg4ODc5LCAweDA5QkQsIDB4ODg3QywgMHg4ODdDLCAweDFFMDcsCisgICAgMHg4ODdELCAweDg4N0QsIDB4MDlCQywgMHg4ODdFLCAweDg4N0UsIDB4MUUwNSwgMHg4ODdGLCAweDg4N0YsIDB4MUUwMiwKKyAgICAweDg4ODAsIDB4ODg4MCwgMHgxRTAwLCAweDg4ODEsIDB4ODg4MiwgMHgwOUJBLCAweDg4ODMsIDB4ODg4MywgMHgxRTA0LAorICAgIDB4ODg4NCwgMHg4ODg0LCAweDQyRjcsIDB4ODg4NywgMHg4ODg3LCAweDNCOTAsIDB4ODg4OCwgMHg4ODg4LCAweDBCOTYsCisgICAgMHg4ODg5LCAweDg4ODksIDB4MjA1MCwgMHg4ODhCLCAweDg4OEIsIDB4MEI5QiwgMHg4ODhDLCAweDg4OEMsIDB4MjA2MCwKKyAgICAweDg4OEQsIDB4ODg4RCwgMHgwQjlBLCAweDg4OEUsIDB4ODg4RSwgMHgyMDYyLCAweDg4OTEsIDB4ODg5MSwgMHgyMDU2LAorICAgIDB4ODg5MiwgMHg4ODkyLCAweDBCOTgsIDB4ODg5MywgMHg4ODkzLCAweDIwNjEsIDB4ODg5NSwgMHg4ODk1LCAweDIwNTEsCisgICAgMHg4ODk2LCAweDg4OTYsIDB4MEI5OSwgMHg4ODk3LCAweDg4OTcsIDB4MjA1RCwgMHg4ODk4LCAweDg4OTgsIDB4MjA1OSwKKyAgICAweDg4OTksIDB4ODg5OSwgMHgyMDVCLCAweDg4OUEsIDB4ODg5QSwgMHgyMDU1LCAweDg4OUIsIDB4ODg5QiwgMHgyMDVDLAorICAgIDB4ODg5QywgMHg4ODlDLCAweDM4MUMsIDB4ODg5RSwgMHg4ODlFLCAweDBCOTUsIDB4ODg5RiwgMHg4ODlGLCAweDIwNTgsCisgICAgMHg4OEEwLCAweDg4QTAsIDB4M0ZBMCwgMHg4OEExLCAweDg4QTEsIDB4MjA1NywgMHg4OEEyLCAweDg4QTIsIDB4MjA1MywKKyAgICAweDg4QTQsIDB4ODhBNCwgMHgyMDVFLCAweDg4QTcsIDB4ODhBNywgMHgyMDVBLCAweDg4QTgsIDB4ODhBOCwgMHgyMDUyLAorICAgIDB4ODhBQSwgMHg4OEFBLCAweDIwNTQsIDB4ODhBQiwgMHg4OEFCLCAweDBCOTcsIDB4ODhBQywgMHg4OEFDLCAweDIwNUYsCisgICAgMHg4OEFFLCAweDg4QUUsIDB4NDc3NSwgMHg4OEIxLCAweDg4QjEsIDB4MEQ1NCwgMHg4OEIyLCAweDg4QjIsIDB4MjJFMCwKKyAgICAweDg4QjQsIDB4ODhCNSwgMHgzODFFLCAweDg4QjYsIDB4ODhCNiwgMHgyMkRDLCAweDg4QjcsIDB4ODhCNywgMHgyMkRFLAorICAgIDB4ODhCOCwgMHg4OEI4LCAweDIyRDksIDB4ODhCOSwgMHg4OEI5LCAweDIyRDgsIDB4ODhCQSwgMHg4OEJBLCAweDIyRDYsCisgICAgMHg4OEJDLCAweDg4QkMsIDB4MjJERCwgMHg4OEJELCAweDg4QkQsIDB4MjJERiwgMHg4OEJFLCAweDg4QkUsIDB4MjJEQiwKKyAgICAweDg4QkYsIDB4ODhCRiwgMHgzQjkxLCAweDg4QzAsIDB4ODhDMCwgMHgyMkRBLCAweDg4QzEsIDB4ODhDMiwgMHgwRDUyLAorICAgIDB4ODhDNSwgMHg4OEM1LCAweDM4MjAsIDB4ODhDNywgMHg4OEM3LCAweDNFQjEsIDB4ODhDOSwgMHg4OEM5LCAweDIyRTIsCisgICAgMHg4OENBLCAweDg4Q0EsIDB4MEYwMiwgMHg4OENCLCAweDg4Q0IsIDB4MjU3OCwgMHg4OENDLCAweDg4Q0MsIDB4MjU3RSwKKyAgICAweDg4Q0QsIDB4ODhDRSwgMHgyNTc5LCAweDg4Q0YsIDB4ODhDRiwgMHgzNkVBLCAweDg4RDAsIDB4ODhEMCwgMHgyNTdGLAorICAgIDB4ODhEMiwgMHg4OEQyLCAweDBGMDQsIDB4ODhENCwgMHg4OEQ0LCAweDBFRkMsIDB4ODhENSwgMHg4OEQ1LCAweDBGMDMsCisgICAgMHg4OEQ2LCAweDg4RDYsIDB4MjU3NywgMHg4OEQ3LCAweDg4RDcsIDB4MjJENywgMHg4OEQ4LCAweDg4RDgsIDB4MEVGRiwKKyAgICAweDg4RDksIDB4ODhEOSwgMHgwRUZELCAweDg4REEsIDB4ODhEQSwgMHgyNTdELCAweDg4REIsIDB4ODhEQiwgMHgyNTdDLAorICAgIDB4ODhEQywgMHg4OERDLCAweDBFRkUsIDB4ODhERCwgMHg4OERELCAweDBGMDAsIDB4ODhERSwgMHg4OERFLCAweDI1N0IsCisgICAgMHg4OERGLCAweDg4REYsIDB4MEVGQiwgMHg4OEUxLCAweDg4RTEsIDB4MEYwMSwgMHg4OEU2LCAweDg4RTYsIDB4M0I5MiwKKyAgICAweDg4RTcsIDB4ODhFNywgMHgyN0YwLCAweDg4RTgsIDB4ODhFOCwgMHgxMEEyLCAweDg4RUIsIDB4ODhFQiwgMHgyN0ZCLAorICAgIDB4ODhFQywgMHg4OEVDLCAweDI3RkEsIDB4ODhFRSwgMHg4OEVFLCAweDI3RjUsIDB4ODhFRiwgMHg4OEVGLCAweDEwQTQsCisgICAgMHg4OEYwLCAweDg4RjAsIDB4MjdGOSwgMHg4OEYxLCAweDg4RjIsIDB4MjdGMSwgMHg4OEYzLCAweDg4RjMsIDB4MTA5QywKKyAgICAweDg4RjQsIDB4ODhGNCwgMHgxMDlFLCAweDg4RjUsIDB4ODhGNSwgMHgzRTA4LCAweDg4RjYsIDB4ODhGNiwgMHgyN0Y3LAorICAgIDB4ODhGNywgMHg4OEY3LCAweDI3RUYsIDB4ODhGOCwgMHg4OEY4LCAweDEwQTAsIDB4ODhGOSwgMHg4OEY5LCAweDEwOUYsCisgICAgMHg4OEZBLCAweDg4RkEsIDB4MjdGMywgMHg4OEZCLCAweDg4RkIsIDB4MjdGOCwgMHg4OEZDLCAweDg4RkMsIDB4MjdGNiwKKyAgICAweDg4RkQsIDB4ODhGRCwgMHgxMEExLCAweDg4RkUsIDB4ODhGRSwgMHgyN0Y0LCAweDg4RkYsIDB4ODhGRiwgMHg0Nzc2LAorICAgIDB4ODkwMCwgMHg4OTAwLCAweDQyRkEsIDB4ODkwMSwgMHg4OTAxLCAweDIyRTEsIDB4ODkwMiwgMHg4OTAyLCAweDEwOUQsCisgICAgMHg4OTA1LCAweDg5MDUsIDB4MkEzMCwgMHg4OTA2LCAweDg5MDYsIDB4MkEzNywgMHg4OTA3LCAweDg5MDcsIDB4MTIwRCwKKyAgICAweDg5MDksIDB4ODkwOSwgMHgyQTNCLCAweDg5MEEsIDB4ODkwQSwgMHgxMjExLCAweDg5MEIsIDB4ODkwQiwgMHgyQTMzLAorICAgIDB4ODkwQywgMHg4OTBDLCAweDJBMzEsIDB4ODkwRSwgMHg4OTBFLCAweDJBM0EsIDB4ODkxMCwgMHg4OTEwLCAweDEyMEMsCisgICAgMHg4OTExLCAweDg5MTEsIDB4MkEzOSwgMHg4OTEyLCAweDg5MTMsIDB4MTIwRSwgMHg4OTE0LCAweDg5MTQsIDB4MkEzMiwKKyAgICAweDg5MTUsIDB4ODkxNSwgMHgxMjEwLCAweDg5MTYsIDB4ODkxNiwgMHgyQTM4LCAweDg5MTcsIDB4ODkxOSwgMHgyQTM0LAorICAgIDB4ODkxQSwgMHg4OTFBLCAweDEwQTMsIDB4ODkxRSwgMHg4OTFFLCAweDJDNzcsIDB4ODkxRiwgMHg4OTFGLCAweDJDODMsCisgICAgMHg4OTIxLCAweDg5MjEsIDB4MTM0QSwgMHg4OTIyLCAweDg5MjIsIDB4MkM3RSwgMHg4OTIzLCAweDg5MjMsIDB4MkM4MCwKKyAgICAweDg5MjQsIDB4ODkyNCwgMHg0Nzc3LCAweDg5MjUsIDB4ODkyNSwgMHgxMzQ4LCAweDg5MjYsIDB4ODkyNiwgMHgyQzc4LAorICAgIDB4ODkyNywgMHg4OTI3LCAweDJDN0MsIDB4ODkyOSwgMHg4OTI5LCAweDJDN0YsIDB4ODkyQSwgMHg4OTJBLCAweDEzNDYsCisgICAgMHg4OTJCLCAweDg5MkIsIDB4MTM0OSwgMHg4OTJDLCAweDg5MkMsIDB4MkM4MiwgMHg4OTJELCAweDg5MkUsIDB4MkM3QSwKKyAgICAweDg5MkYsIDB4ODkyRiwgMHgyQzgxLCAweDg5MzAsIDB4ODkzMCwgMHgyQzc5LCAweDg5MzEsIDB4ODkzMSwgMHgyQzdELAorICAgIDB4ODkzMiwgMHg4OTMyLCAweDEzNDcsIDB4ODkzMywgMHg4OTMzLCAweDJFNEYsIDB4ODkzNSwgMHg4OTM1LCAweDJFNEUsCisgICAgMHg4OTM2LCAweDg5MzYsIDB4MTQ3MiwgMHg4OTM3LCAweDg5MzcsIDB4MkU1NCwgMHg4OTM4LCAweDg5MzgsIDB4MTQ3NCwKKyAgICAweDg5M0IsIDB4ODkzQiwgMHgxNDcxLCAweDg5M0MsIDB4ODkzQywgMHgyRTUwLCAweDg5M0QsIDB4ODkzRCwgMHgxNDc1LAorICAgIDB4ODkzRSwgMHg4OTNFLCAweDJFNTEsIDB4ODk0MSwgMHg4OTQxLCAweDJFNTIsIDB4ODk0MiwgMHg4OTQyLCAweDJFNTUsCisgICAgMHg4OTQzLCAweDg5NDMsIDB4M0UxNiwgMHg4OTQ0LCAweDg5NDQsIDB4MTQ3MywgMHg4OTQ2LCAweDg5NDYsIDB4MkZDOCwKKyAgICAweDg5NDcsIDB4ODk0NywgMHg0M0UzLCAweDg5NDksIDB4ODk0OSwgMHgyRkNCLCAweDg5NEIsIDB4ODk0QiwgMHgyRkM1LAorICAgIDB4ODk0QywgMHg4OTRDLCAweDJGQzcsIDB4ODk0RCwgMHg4OTRELCAweDNCOTQsIDB4ODk0RiwgMHg4OTRGLCAweDJGQzYsCisgICAgMHg4OTUwLCAweDg5NTEsIDB4MkZDOSwgMHg4OTUyLCAweDg5NTIsIDB4MkU1MywgMHg4OTUzLCAweDg5NTMsIDB4MkZDNCwKKyAgICAweDg5NTQsIDB4ODk1NCwgMHgzQjk2LCAweDg5NTYsIDB4ODk1NiwgMHgxNUMyLCAweDg5NTcsIDB4ODk1NywgMHgzMTE4LAorICAgIDB4ODk1OCwgMHg4OTU4LCAweDMxMUIsIDB4ODk1OSwgMHg4OTU5LCAweDMxMUQsIDB4ODk1QSwgMHg4OTVCLCAweDMxMTYsCisgICAgMHg4OTVDLCAweDg5NUMsIDB4MzExQSwgMHg4OTVELCAweDg5NUQsIDB4MzExQywgMHg4OTVFLCAweDg5NUUsIDB4MTVDMywKKyAgICAweDg5NUYsIDB4ODk1RiwgMHgxNUMxLCAweDg5NjAsIDB4ODk2MCwgMHgxNUMwLCAweDg5NjEsIDB4ODk2MSwgMHgzMTE5LAorICAgIDB4ODk2MiwgMHg4OTYyLCAweDMxMTUsIDB4ODk2MywgMHg4OTYzLCAweDMyMzEsIDB4ODk2NCwgMHg4OTY0LCAweDE2NDEsCisgICAgMHg4OTY1LCAweDg5NjUsIDB4M0I5MywgMHg4OTY2LCAweDg5NjYsIDB4MzIzMiwgMHg4OTY5LCAweDg5NjksIDB4MzMwRCwKKyAgICAweDg5NkEsIDB4ODk2QSwgMHgxNjhDLCAweDg5NkIsIDB4ODk2QiwgMHgzMzBGLCAweDg5NkMsIDB4ODk2QywgMHgxNjhELAorICAgIDB4ODk2RCwgMHg4OTZELCAweDMzMEMsIDB4ODk2RSwgMHg4OTZFLCAweDMzMEUsIDB4ODk2RiwgMHg4OTZGLCAweDE2RDYsCisgICAgMHg4OTcxLCAweDg5NzEsIDB4MzNCMiwgMHg4OTcyLCAweDg5NzIsIDB4MTZENSwgMHg4OTczLCAweDg5NzMsIDB4MzQzQiwKKyAgICAweDg5NzQsIDB4ODk3NCwgMHgzNDNBLCAweDg5NzYsIDB4ODk3NiwgMHgzNDM5LCAweDg5NzcsIDB4ODk3NywgMHgzREVBLAorICAgIDB4ODk3OSwgMHg4OTdBLCAweDM0RTIsIDB4ODk3QiwgMHg4OTdCLCAweDM0RTUsIDB4ODk3QywgMHg4OTdDLCAweDM0RTQsCisgICAgMHg4OTdFLCAweDg5N0UsIDB4MTgxOSwgMHg4OTdGLCAweDg5N0YsIDB4MDQxMywgMHg4OTgwLCAweDg5ODAsIDB4NDcwOCwKKyAgICAweDg5ODEsIDB4ODk4MSwgMHgwODA1LCAweDg5ODIsIDB4ODk4MiwgMHgyMDYzLCAweDg5ODMsIDB4ODk4MywgMHgwRDU1LAorICAgIDB4ODk4NSwgMHg4OTg1LCAweDI1ODAsIDB4ODk4NiwgMHg4OTg2LCAweDE1MjcsIDB4ODk4NywgMHg4OTg3LCAweDM4MjIsCisgICAgMHg4OTg4LCAweDg5ODgsIDB4MzExRSwgMHg4OTg5LCAweDg5ODksIDB4M0ZFOSwgMHg4OThBLCAweDg5OEEsIDB4MzgyMywKKyAgICAweDg5OEIsIDB4ODk4QiwgMHgwNTA4LCAweDg5OEYsIDB4ODk4RiwgMHgwQjlELCAweDg5OTEsIDB4ODk5MSwgMHg0Nzc4LAorICAgIDB4ODk5MywgMHg4OTkzLCAweDBCOUMsIDB4ODk5NCwgMHg4OTk0LCAweDNGRTAsIDB4ODk5NSwgMHg4OTk1LCAweDIyRTMsCisgICAgMHg4OTk2LCAweDg5OTYsIDB4MEQ1NiwgMHg4OTk3LCAweDg5OTcsIDB4MjJFNSwgMHg4OTk4LCAweDg5OTgsIDB4MjJFNCwKKyAgICAweDg5OUIsIDB4ODk5QiwgMHgyNTgxLCAweDg5OUMsIDB4ODk5QywgMHgwRjA1LCAweDg5OUQsIDB4ODk5RCwgMHgyN0ZDLAorICAgIDB4ODk5RSwgMHg4OTlFLCAweDI3RkYsIDB4ODk5RiwgMHg4OTlGLCAweDI3RkUsIDB4ODlBMSwgMHg4OUExLCAweDI3RkQsCisgICAgMHg4OUEyLCAweDg5QTIsIDB4MkEzQywgMHg4OUEzLCAweDg5QTMsIDB4MkEzRSwgMHg4OUE0LCAweDg5QTQsIDB4MkEzRCwKKyAgICAweDg5QTUsIDB4ODlBNSwgMHgzRDkzLCAweDg5QTYsIDB4ODlBNiwgMHgxMzRDLCAweDg5QTcsIDB4ODlBNywgMHgzODI2LAorICAgIDB4ODlBOSwgMHg4OUE5LCAweDM4MjUsIDB4ODlBQSwgMHg4OUFBLCAweDEzNEIsIDB4ODlBQywgMHg4OUFDLCAweDE0NzYsCisgICAgMHg4OUFELCAweDg5QUQsIDB4MkU1NiwgMHg4OUFFLCAweDg5QUUsIDB4MkU1OCwgMHg4OUFGLCAweDg5QUYsIDB4MkU1NywKKyAgICAweDg5QjIsIDB4ODlCMiwgMHgxNTI4LCAweDg5QjYsIDB4ODlCNiwgMHgzMTIwLCAweDg5QjcsIDB4ODlCNywgMHgzMTFGLAorICAgIDB4ODlCOSwgMHg4OUI5LCAweDMyMzMsIDB4ODlCQSwgMHg4OUJBLCAweDE2NDIsIDB4ODlCQywgMHg4OUJDLCAweDM4MjcsCisgICAgMHg4OUJELCAweDg5QkQsIDB4MTY4RSwgMHg4OUJFLCAweDg5QkUsIDB4MzNCNCwgMHg4OUJGLCAweDg5QkYsIDB4MzNCMywKKyAgICAweDg5QzAsIDB4ODlDMCwgMHgxNzQ4LCAweDg5QzEsIDB4ODlDMSwgMHg0NTAzLCAweDg5QzYsIDB4ODlDNiwgMHg0NTY2LAorICAgIDB4ODlEMiwgMHg4OUQyLCAweDA1MDksIDB4ODlEMywgMHg4OUQzLCAweDFDMDMsIDB4ODlENCwgMHg4OUQ0LCAweDA4MDYsCisgICAgMHg4OUQ1LCAweDg5RDUsIDB4MjA2NiwgMHg4OUQ2LCAweDg5RDYsIDB4MjA2NCwgMHg4OUQ5LCAweDg5RDksIDB4MjA2NSwKKyAgICAweDg5REEsIDB4ODlEQiwgMHgyMkU3LCAweDg5REMsIDB4ODlEQywgMHgyNTg4LCAweDg5REQsIDB4ODlERCwgMHgyMkU2LAorICAgIDB4ODlERiwgMHg4OURGLCAweDI1ODIsIDB4ODlFMCwgMHg4OUUwLCAweDI1ODYsIDB4ODlFMSwgMHg4OUUxLCAweDI1ODUsCisgICAgMHg4OUUyLCAweDg5RTIsIDB4MjU4NywgMHg4OUUzLCAweDg5RTMsIDB4MEYwNiwgMHg4OUU0LCAweDg5RTQsIDB4MjU4NCwKKyAgICAweDg5RTUsIDB4ODlFNSwgMHgyNTgzLCAweDg5RTYsIDB4ODlFNiwgMHgyNTg5LCAweDg5RTcsIDB4ODlFNywgMHgzODI5LAorICAgIDB4ODlFOCwgMHg4OUU4LCAweDI4MDIsIDB4ODlFOSwgMHg4OUU5LCAweDI4MDAsIDB4ODlFQiwgMHg4OUVCLCAweDI4MDEsCisgICAgMHg4OUVDLCAweDg5RUMsIDB4MkE0MSwgMHg4OUVELCAweDg5RUQsIDB4MkEzRiwgMHg4OUYwLCAweDg5RjAsIDB4MkE0MCwKKyAgICAweDg5RjEsIDB4ODlGMSwgMHgyQzg0LCAweDg5RjIsIDB4ODlGMywgMHgyRTU5LCAweDg5RjQsIDB4ODlGNCwgMHgxNTI5LAorICAgIDB4ODlGNiwgMHg4OUY2LCAweDMxMjEsIDB4ODlGNywgMHg4OUY3LCAweDMyMzQsIDB4ODlGOCwgMHg4OUY4LCAweDE2NDMsCisgICAgMHg4OUZBLCAweDg5RkEsIDB4MzMxMCwgMHg4OUZCLCAweDg5RkIsIDB4MzNCNSwgMHg4OUZDLCAweDg5RkMsIDB4MTZENywKKyAgICAweDg5RkUsIDB4ODlGRSwgMHgzNDNDLCAweDg5RkYsIDB4ODlGRiwgMHgzNEU2LCAweDhBMDAsIDB4OEEwMCwgMHgwNTBBLAorICAgIDB4OEEwMiwgMHg4QTAzLCAweDA4MDgsIDB4OEEwNCwgMHg4QTA0LCAweDFDMDQsIDB4OEEwNywgMHg4QTA3LCAweDFDMDUsCisgICAgMHg4QTA4LCAweDhBMDgsIDB4MDgwNywgMHg4QTBBLCAweDhBMEEsIDB4MDlDMywgMHg4QTBDLCAweDhBMEMsIDB4MDlDMSwKKyAgICAweDhBMEUsIDB4OEEwRSwgMHgwOUMwLCAweDhBMEYsIDB4OEEwRiwgMHgwOUM3LCAweDhBMTAsIDB4OEExMCwgMHgwOUJGLAorICAgIDB4OEExMSwgMHg4QTExLCAweDA5QzgsIDB4OEExMiwgMHg4QTEyLCAweDFFMDgsIDB4OEExMywgMHg4QTEzLCAweDA5QzUsCisgICAgMHg4QTE1LCAweDhBMTUsIDB4MDlDMiwgMHg4QTE2LCAweDhBMTYsIDB4MDlDNiwgMHg4QTE3LCAweDhBMTcsIDB4MDlDNCwKKyAgICAweDhBMTgsIDB4OEExOCwgMHgwOUJFLCAweDhBMUIsIDB4OEExQiwgMHgwQkE1LCAweDhBMUMsIDB4OEExQywgMHgzQkEzLAorICAgIDB4OEExRCwgMHg4QTFELCAweDBCOUYsIDB4OEExRSwgMHg4QTFFLCAweDIwNkEsIDB4OEExRiwgMHg4QTFGLCAweDBCQTQsCisgICAgMHg4QTIyLCAweDhBMjIsIDB4MEJBNiwgMHg4QTIzLCAweDhBMjMsIDB4MEJBMCwgMHg4QTI1LCAweDhBMjUsIDB4MEJBMSwKKyAgICAweDhBMjcsIDB4OEEyNywgMHgyMDY4LCAweDhBMjksIDB4OEEyOSwgMHg0M0U1LCAweDhBMkEsIDB4OEEyQSwgMHgwQjlFLAorICAgIDB4OEEyQiwgMHg4QTJCLCAweDNCRDEsIDB4OEEyQywgMHg4QTJDLCAweDIwNjksIDB4OEEyRCwgMHg4QTJELCAweDBCQTMsCisgICAgMHg4QTMwLCAweDhBMzAsIDB4MjA2NywgMHg4QTMxLCAweDhBMzEsIDB4MEJBMiwgMHg4QTM0LCAweDhBMzQsIDB4MEQ2MSwKKyAgICAweDhBMzYsIDB4OEEzNiwgMHgwRDYzLCAweDhBMzgsIDB4OEEzOCwgMHg0NzdBLCAweDhBMzksIDB4OEEzOSwgMHgyMkVCLAorICAgIDB4OEEzQSwgMHg4QTNBLCAweDBENjIsIDB4OEEzQiwgMHg4QTNCLCAweDBENTcsIDB4OEEzQywgMHg4QTNDLCAweDBENUIsCisgICAgMHg4QTNELCAweDhBM0QsIDB4M0JBMiwgMHg4QTNFLCAweDhBM0UsIDB4MEYxOSwgMHg4QTNGLCAweDhBM0YsIDB4MjU4RSwKKyAgICAweDhBNDAsIDB4OEE0MCwgMHgyMkVELCAweDhBNDEsIDB4OEE0MSwgMHgwRDVDLCAweDhBNDQsIDB4OEE0NSwgMHgyMkYwLAorICAgIDB4OEE0NiwgMHg4QTQ2LCAweDBENjAsIDB4OEE0OCwgMHg4QTQ4LCAweDIyRjMsIDB4OEE0OSwgMHg4QTQ5LCAweDNGRjAsCisgICAgMHg4QTRBLCAweDhBNEEsIDB4MjJGNSwgMHg4QTRDLCAweDhBNEMsIDB4MjJGNiwgMHg4QTRELCAweDhBNEQsIDB4MjJFQSwKKyAgICAweDhBNEUsIDB4OEE0RSwgMHgyMkU5LCAweDhBNEYsIDB4OEE0RiwgMHgyMkY3LCAweDhBNTAsIDB4OEE1MCwgMHgwRDVGLAorICAgIDB4OEE1MSwgMHg4QTUxLCAweDIyRjQsIDB4OEE1MiwgMHg4QTUyLCAweDIyRjIsIDB4OEE1NCwgMHg4QTU0LCAweDBENUQsCisgICAgMHg4QTU1LCAweDhBNTUsIDB4MEQ1OSwgMHg4QTU2LCAweDhBNTYsIDB4MEQ2NCwgMHg4QTU3LCAweDhBNTgsIDB4MjJFRSwKKyAgICAweDhBNTksIDB4OEE1OSwgMHgyMkVDLCAweDhBNUIsIDB4OEE1QiwgMHgwRDVFLCAweDhBNUUsIDB4OEE1RSwgMHgwRDVBLAorICAgIDB4OEE2MCwgMHg4QTYwLCAweDBENTgsIDB4OEE2MSwgMHg4QTYxLCAweDI1OEQsIDB4OEE2MiwgMHg4QTYyLCAweDBGMTQsCisgICAgMHg4QTYzLCAweDhBNjMsIDB4MEYwRiwgMHg4QTY2LCAweDhBNjYsIDB4MEYwQSwgMHg4QTY3LCAweDhBNjcsIDB4M0Y4RSwKKyAgICAweDhBNjgsIDB4OEE2OCwgMHgwRjFBLCAweDhBNjksIDB4OEE2OSwgMHgwRjBCLCAweDhBNkIsIDB4OEE2QiwgMHgwRjA3LAorICAgIDB4OEE2QywgMHg4QTZDLCAweDBGMTYsIDB4OEE2RCwgMHg4QTZELCAweDBGMTMsIDB4OEE2RSwgMHg4QTZFLCAweDBGMTUsCisgICAgMHg4QTcwLCAweDhBNzAsIDB4MEYwQywgMHg4QTcxLCAweDhBNzEsIDB4MEYxMSwgMHg4QTcyLCAweDhBNzMsIDB4MEYwOCwKKyAgICAweDhBNzQsIDB4OEE3NCwgMHgyNTk1LCAweDhBNzUsIDB4OEE3NSwgMHgyNTkyLCAweDhBNzYsIDB4OEE3NiwgMHgyNThBLAorICAgIDB4OEE3NywgMHg4QTc3LCAweDI1OEYsIDB4OEE3OSwgMHg4QTc5LCAweDBGMTcsIDB4OEE3QSwgMHg4QTdBLCAweDI1OTYsCisgICAgMHg4QTdCLCAweDhBN0IsIDB4MEYxOCwgMHg4QTdDLCAweDhBN0MsIDB4MEYwRSwgMHg4QTdFLCAweDhBN0UsIDB4M0ZBNSwKKyAgICAweDhBN0YsIDB4OEE3RiwgMHgyNThDLCAweDhBODEsIDB4OEE4MSwgMHgyNTk0LCAweDhBODIsIDB4OEE4MiwgMHgyNTkwLAorICAgIDB4OEE4MywgMHg4QTgzLCAweDI1OTMsIDB4OEE4NCwgMHg4QTg0LCAweDI1OTEsIDB4OEE4NSwgMHg4QTg1LCAweDBGMTIsCisgICAgMHg4QTg2LCAweDhBODYsIDB4MjU4QiwgMHg4QTg3LCAweDhBODcsIDB4MEYwRCwgMHg4QThCLCAweDhBOEIsIDB4MjgwNSwKKyAgICAweDhBOEMsIDB4OEE4QywgMHgxMEE2LCAweDhBOEQsIDB4OEE4RCwgMHgxMEE5LCAweDhBOEYsIDB4OEE4RiwgMHgyODA3LAorICAgIDB4OEE5MCwgMHg4QTkwLCAweDM4MkYsIDB4OEE5MSwgMHg4QTkxLCAweDEwQjEsIDB4OEE5MiwgMHg4QTkyLCAweDI4MDYsCisgICAgMHg4QTkzLCAweDhBOTMsIDB4MTBBQiwgMHg4QTk0LCAweDhBOTQsIDB4NDc3QiwgMHg4QTk1LCAweDhBOTUsIDB4MTIxNiwKKyAgICAweDhBOTYsIDB4OEE5NiwgMHgyODA4LCAweDhBOTgsIDB4OEE5OCwgMHgxMEIwLCAweDhBOTksIDB4OEE5OSwgMHgyODA0LAorICAgIDB4OEE5QSwgMHg4QTlBLCAweDEwQjIsIDB4OEE5QywgMHg4QTlDLCAweDM4MkMsIDB4OEE5RSwgMHg4QTlFLCAweDEwQTcsCisgICAgMHg4QUEwLCAweDhBQTAsIDB4MEYxMCwgMHg4QUExLCAweDhBQTEsIDB4MTBBQSwgMHg4QUEzLCAweDhBQTMsIDB4MTBBOCwKKyAgICAweDhBQTQsIDB4OEFBNCwgMHgxMEFDLCAweDhBQTUsIDB4OEFBNSwgMHgxMEFFLCAweDhBQTYsIDB4OEFBNiwgMHgxMEE1LAorICAgIDB4OEFBNywgMHg4QUE3LCAweDEwQjMsIDB4OEFBOCwgMHg4QUE4LCAweDEwQUYsIDB4OEFBOSwgMHg4QUE5LCAweDM4M0QsCisgICAgMHg4QUFBLCAweDhBQUEsIDB4MTBBRCwgMHg4QUFCLCAweDhBQUIsIDB4MjgwMywgMHg4QUFGLCAweDhBQUYsIDB4Mzg0MSwKKyAgICAweDhBQjAsIDB4OEFCMCwgMHgxMjFELCAweDhBQjIsIDB4OEFCMiwgMHgxMjE5LCAweDhBQjQsIDB4OEFCNCwgMHg0NzdDLAorICAgIDB4OEFCNiwgMHg4QUI2LCAweDEyMjAsIDB4OEFCOCwgMHg4QUI4LCAweDJBNDQsIDB4OEFCOSwgMHg4QUI5LCAweDEyMjEsCisgICAgMHg4QUJBLCAweDhBQkEsIDB4MkE1MCwgMHg4QUJCLCAweDhBQkIsIDB4MkE0OSwgMHg4QUJDLCAweDhBQkMsIDB4MTIxMiwKKyAgICAweDhBQkQsIDB4OEFCRCwgMHgyQTUxLCAweDhBQkUsIDB4OEFCRSwgMHgyQTRCLCAweDhBQkYsIDB4OEFCRiwgMHgxMjFDLAorICAgIDB4OEFDMCwgMHg4QUMwLCAweDJBNEMsIDB4OEFDMiwgMHg4QUMyLCAweDEyMUIsIDB4OEFDMywgMHg4QUMzLCAweDJBNEYsCisgICAgMHg4QUM0LCAweDhBQzQsIDB4MTIxNSwgMHg4QUM1LCAweDhBQzUsIDB4MkE0RCwgMHg4QUM2LCAweDhBQzYsIDB4MkE0MywKKyAgICAweDhBQzcsIDB4OEFDNywgMHgxMjE0LCAweDhBQzgsIDB4OEFDOCwgMHgyQzhGLCAweDhBQzksIDB4OEFDOSwgMHgxMjFBLAorICAgIDB4OEFDQiwgMHg4QUNCLCAweDEyMTcsIDB4OEFDRCwgMHg4QUNELCAweDEyMUYsIDB4OEFDRiwgMHg4QUNGLCAweDJBNDIsCisgICAgMHg4QUQxLCAweDhBRDEsIDB4MkE0NiwgMHg4QUQyLCAweDhBRDIsIDB4MTIxMywgMHg4QUQzLCAweDhBRDMsIDB4MkE0NSwKKyAgICAweDhBRDQsIDB4OEFENSwgMHgyQTQ3LCAweDhBRDYsIDB4OEFENiwgMHgxMjFFLCAweDhBRDcsIDB4OEFENywgMHgyQTRBLAorICAgIDB4OEFEOCwgMHg4QUQ4LCAweDJBNEUsIDB4OEFEOSwgMHg4QUQ5LCAweDJBNTIsIDB4OEFEQSwgMHg4QURBLCAweDM5QzIsCisgICAgMHg4QURCLCAweDhBREIsIDB4MTIyMiwgMHg4QURDLCAweDhBREMsIDB4MTM1MiwgMHg4QURELCAweDhBREQsIDB4MkM4QSwKKyAgICAweDhBREUsIDB4OEFERSwgMHgyQzkwLCAweDhBREYsIDB4OEFERiwgMHgyQzhELCAweDhBRTAsIDB4OEFFMCwgMHgyQzg1LAorICAgIDB4OEFFMSwgMHg4QUUxLCAweDJDOTEsIDB4OEFFMiwgMHg4QUUyLCAweDJDODYsIDB4OEFFNCwgMHg4QUU0LCAweDJDOEMsCisgICAgMHg4QUU2LCAweDhBRTYsIDB4MTM0RCwgMHg4QUU3LCAweDhBRTcsIDB4MTM1MywgMHg4QUU4LCAweDhBRTgsIDB4MkM5MiwKKyAgICAweDhBRUEsIDB4OEFFQSwgMHgzREQ5LCAweDhBRUIsIDB4OEFFQiwgMHgxMzRGLCAweDhBRUQsIDB4OEFFRCwgMHgxMzU5LAorICAgIDB4OEFFRSwgMHg4QUVFLCAweDEzNTQsIDB4OEFFRiwgMHg4QUVGLCAweDJDOTQsIDB4OEFGMCwgMHg4QUYwLCAweDJDOEUsCisgICAgMHg4QUYxLCAweDhBRjEsIDB4MTM1MCwgMHg4QUYyLCAweDhBRjIsIDB4MkM4NywgMHg4QUYzLCAweDhBRjMsIDB4MTM1QSwKKyAgICAweDhBRjQsIDB4OEFGNSwgMHgyQzg4LCAweDhBRjYsIDB4OEFGNiwgMHgxMzVCLCAweDhBRjcsIDB4OEFGNywgMHgxMzU4LAorICAgIDB4OEFGOCwgMHg4QUY4LCAweDEyMTgsIDB4OEFGQSwgMHg4QUZBLCAweDEzNEUsIDB4OEFGQiwgMHg4QUZCLCAweDJDOTUsCisgICAgMHg4QUZDLCAweDhBRkMsIDB4MTM1QywgMHg4QUZFLCAweDhBRkUsIDB4MTM1NSwgMHg4QUZGLCAweDhBRkYsIDB4MkM5MywKKyAgICAweDhCMDAsIDB4OEIwMCwgMHgxMzUxLCAweDhCMDEsIDB4OEIwMiwgMHgxMzU2LCAweDhCMDQsIDB4OEIwNCwgMHgxNDdFLAorICAgIDB4OEIwNSwgMHg4QjA1LCAweDJFNUYsIDB4OEIwNiwgMHg4QjA2LCAweDJFNjgsIDB4OEIwNywgMHg4QjA3LCAweDJFNjUsCisgICAgMHg4QjA4LCAweDhCMDgsIDB4MkU2NywgMHg4QjBBLCAweDhCMEEsIDB4MTQ3QiwgMHg4QjBCLCAweDhCMEIsIDB4MkU2MCwKKyAgICAweDhCMEMsIDB4OEIwQywgMHgzODM2LCAweDhCMEQsIDB4OEIwRCwgMHgyRTY2LCAweDhCMEUsIDB4OEIwRSwgMHgxNDc3LAorICAgIDB4OEIwRiwgMHg4QjBGLCAweDJFNjIsIDB4OEIxMCwgMHg4QjEwLCAweDE0N0YsIDB4OEIxMSwgMHg4QjExLCAweDJFNUUsCisgICAgMHg4QjEyLCAweDhCMTIsIDB4MkU2MywgMHg4QjEzLCAweDhCMTMsIDB4MkU2QSwgMHg4QjE0LCAweDhCMTQsIDB4MkM4QiwKKyAgICAweDhCMTUsIDB4OEIxNSwgMHgyRTY0LCAweDhCMTYsIDB4OEIxNiwgMHgyRTVELCAweDhCMTcsIDB4OEIxNywgMHgxNDc4LAorICAgIDB4OEIxOCwgMHg4QjE4LCAweDJFNUMsIDB4OEIxOSwgMHg4QjE5LCAweDE0NzksIDB4OEIxQSwgMHg4QjFBLCAweDJFNkIsCisgICAgMHg4QjFCLCAweDhCMUIsIDB4MTQ3QSwgMHg4QjFDLCAweDhCMUMsIDB4MkU2OSwgMHg4QjFELCAweDhCMUQsIDB4MTQ3RCwKKyAgICAweDhCMUUsIDB4OEIxRSwgMHgyRTVCLCAweDhCMUYsIDB4OEIxRiwgMHgzODM3LCAweDhCMjAsIDB4OEIyMCwgMHgxNDdDLAorICAgIDB4OEIyMiwgMHg4QjIyLCAweDJFNjEsIDB4OEIyMywgMHg4QjIzLCAweDJGQ0UsIDB4OEIyNCwgMHg4QjI0LCAweDJGREMsCisgICAgMHg4QjI1LCAweDhCMjUsIDB4MkZENywgMHg4QjI2LCAweDhCMjYsIDB4MkZEOSwgMHg4QjI3LCAweDhCMjcsIDB4MkZDRCwKKyAgICAweDhCMjgsIDB4OEIyOCwgMHgxNTJBLCAweDhCMkEsIDB4OEIyQSwgMHgyRkNDLCAweDhCMkIsIDB4OEIyQiwgMHgxNTJELAorICAgIDB4OEIyQywgMHg4QjJDLCAweDE1MkMsIDB4OEIyRCwgMHg4QjJELCAweDNGOTksIDB4OEIyRSwgMHg4QjJFLCAweDJGREIsCisgICAgMHg4QjJGLCAweDhCMkYsIDB4MkZEMywgMHg4QjMwLCAweDhCMzAsIDB4MkZEMCwgMHg4QjMxLCAweDhCMzEsIDB4MkZENiwKKyAgICAweDhCMzMsIDB4OEIzMywgMHgyRkNGLCAweDhCMzUsIDB4OEIzNSwgMHgyRkQxLCAweDhCMzYsIDB4OEIzNiwgMHgyRkRBLAorICAgIDB4OEIzNywgMHg4QjM3LCAweDJGRDgsIDB4OEIzOSwgMHg4QjM5LCAweDE1MkIsIDB4OEIzQSwgMHg4QjNBLCAweDJGREYsCisgICAgMHg4QjNCLCAweDhCM0IsIDB4MkZERCwgMHg4QjNDLCAweDhCM0MsIDB4MkZENCwgMHg4QjNELCAweDhCM0QsIDB4MkZERSwKKyAgICAweDhCM0UsIDB4OEIzRSwgMHgyRkQ1LCAweDhCM0YsIDB4OEIzRiwgMHgzODNBLCAweDhCNDAsIDB4OEI0MCwgMHgzMTI1LAorICAgIDB4OEI0MSwgMHg4QjQxLCAweDE1QzQsIDB4OEI0MiwgMHg4QjQyLCAweDMxMkMsIDB4OEI0MywgMHg4QjQzLCAweDNGRjIsCisgICAgMHg4QjQ1LCAweDhCNDUsIDB4MzMxMywgMHg4QjQ2LCAweDhCNDYsIDB4MTVDQiwgMHg4QjQ3LCAweDhCNDcsIDB4MkZEMiwKKyAgICAweDhCNDgsIDB4OEI0OCwgMHgzMTIzLCAweDhCNDksIDB4OEI0OSwgMHgxNUM3LCAweDhCNEEsIDB4OEI0QSwgMHgzMTI0LAorICAgIDB4OEI0QiwgMHg4QjRCLCAweDMxMjksIDB4OEI0QywgMHg4QjRELCAweDM4M0IsIDB4OEI0RSwgMHg4QjRGLCAweDE1QzksCisgICAgMHg4QjUwLCAweDhCNTAsIDB4MzEyMiwgMHg4QjUxLCAweDhCNTEsIDB4MzEyQiwgMHg4QjUyLCAweDhCNTIsIDB4MzEyRCwKKyAgICAweDhCNTMsIDB4OEI1MywgMHgzMTI2LCAweDhCNTQsIDB4OEI1NCwgMHgzMTI4LCAweDhCNTUsIDB4OEI1NSwgMHgzMTJBLAorICAgIDB4OEI1NiwgMHg4QjU2LCAweDMxMjcsIDB4OEI1NywgMHg4QjU3LCAweDMxMkUsIDB4OEI1OCwgMHg4QjU4LCAweDE1QzYsCisgICAgMHg4QjU5LCAweDhCNTksIDB4MTVDQywgMHg4QjVBLCAweDhCNUEsIDB4MTVDOCwgMHg4QjVDLCAweDhCNUMsIDB4MTVDNSwKKyAgICAweDhCNUQsIDB4OEI1RCwgMHgzMjM3LCAweDhCNUUsIDB4OEI1RSwgMHgzREI4LCAweDhCNUYsIDB4OEI1RiwgMHgxNjQ4LAorICAgIDB4OEI2MCwgMHg4QjYwLCAweDMyMzUsIDB4OEI2MiwgMHg4QjYyLCAweDNERDQsIDB4OEI2MywgMHg4QjYzLCAweDMyMzksCisgICAgMHg4QjY1LCAweDhCNjUsIDB4MzIzQSwgMHg4QjY2LCAweDhCNjYsIDB4MTY0NiwgMHg4QjY3LCAweDhCNjcsIDB4MzIzQiwKKyAgICAweDhCNjgsIDB4OEI2OCwgMHgzMjM4LCAweDhCNjksIDB4OEI2OSwgMHgzQkY3LCAweDhCNkEsIDB4OEI2QSwgMHgzMjM2LAorICAgIDB4OEI2QiwgMHg4QjZCLCAweDE2NDksIDB4OEI2QywgMHg4QjZDLCAweDE2NDUsIDB4OEI2RCwgMHg4QjZELCAweDMyM0MsCisgICAgMHg4QjZGLCAweDhCNkYsIDB4MTY0NywgMHg4QjcwLCAweDhCNzAsIDB4MTY0NCwgMHg4Qjc0LCAweDhCNzQsIDB4MTY4RiwKKyAgICAweDhCNzcsIDB4OEI3NywgMHgxNjkwLCAweDhCNzgsIDB4OEI3OCwgMHgzMzEyLCAweDhCNzksIDB4OEI3OSwgMHgzMzExLAorICAgIDB4OEI3QSwgMHg4QjdCLCAweDMzMTQsIDB4OEI3RCwgMHg4QjdELCAweDE2OTEsIDB4OEI3RSwgMHg4QjdFLCAweDMzQjYsCisgICAgMHg4QjdGLCAweDhCN0YsIDB4MzNCQiwgMHg4QjgwLCAweDhCODAsIDB4MTZEOCwgMHg4QjgxLCAweDhCODEsIDB4M0Q4RCwKKyAgICAweDhCODIsIDB4OEI4MiwgMHgzM0I4LCAweDhCODQsIDB4OEI4NCwgMHgzM0I3LCAweDhCODUsIDB4OEI4NSwgMHgzM0JBLAorICAgIDB4OEI4NiwgMHg4Qjg2LCAweDMzQjksIDB4OEI4OCwgMHg4Qjg4LCAweDM0NDAsIDB4OEI4QSwgMHg4QjhBLCAweDE3MEEsCisgICAgMHg4QjhCLCAweDhCOEIsIDB4MzQzRiwgMHg4QjhDLCAweDhCOEMsIDB4MzQzRCwgMHg4QjhFLCAweDhCOEUsIDB4MzQzRSwKKyAgICAweDhCOTAsIDB4OEI5MCwgMHgzODNGLCAweDhCOTIsIDB4OEI5MiwgMHgxNzJDLCAweDhCOTMsIDB4OEI5MywgMHgxNzJCLAorICAgIDB4OEI5NCwgMHg4Qjk1LCAweDM0OUMsIDB4OEI5NiwgMHg4Qjk2LCAweDE3MkQsIDB4OEI5OCwgMHg4Qjk5LCAweDM0RTcsCisgICAgMHg4QjlBLCAweDhCOUEsIDB4MTc1NCwgMHg4QjlCLCAweDhCOUIsIDB4Mzg0MCwgMHg4QjlDLCAweDhCOUMsIDB4MTc1QSwKKyAgICAweDhCOUUsIDB4OEI5RSwgMHgzNTIyLCAweDhCOUYsIDB4OEI5RiwgMHgzNTNGLCAweDhCQTAsIDB4OEJBMCwgMHg0NTA1LAorICAgIDB4OEJCRSwgMHg4QkJFLCAweDQ1NjcsIDB4OEJFMiwgMHg4QkUyLCAweDQ1NjgsIDB4OEMzNywgMHg4QzM3LCAweDA1MEIsCisgICAgMHg4QzM5LCAweDhDMzksIDB4MjA2QiwgMHg4QzNCLCAweDhDM0IsIDB4MjA2QywgMHg4QzNDLCAweDhDM0MsIDB4MjU5NywKKyAgICAweDhDM0QsIDB4OEMzRCwgMHgyODA5LCAweDhDM0UsIDB4OEMzRSwgMHgyQTUzLCAweDhDM0YsIDB4OEMzRiwgMHgxNDgxLAorICAgIDB4OEM0MSwgMHg4QzQxLCAweDE0ODAsIDB4OEM0MiwgMHg4QzQyLCAweDJGRTAsIDB4OEM0MywgMHg4QzQzLCAweDMxMkYsCisgICAgMHg4QzQ1LCAweDhDNDUsIDB4MzQ0MSwgMHg4QzQ2LCAweDhDNDYsIDB4MDUwQywgMHg4QzQ3LCAweDhDNDcsIDB4MUUwOSwKKyAgICAweDhDNDgsIDB4OEM0OCwgMHgwOUM5LCAweDhDNDksIDB4OEM0OSwgMHgwQkE3LCAweDhDNEEsIDB4OEM0QSwgMHgyNTk5LAorICAgIDB4OEM0QiwgMHg4QzRCLCAweDI1OTgsIDB4OEM0QywgMHg4QzRDLCAweDEyMjMsIDB4OEM0RCwgMHg4QzRELCAweDJBNTQsCisgICAgMHg4QzRFLCAweDhDNEUsIDB4MTIyNCwgMHg4QzRGLCAweDhDNEYsIDB4MkU2QywgMHg4QzUwLCAweDhDNTAsIDB4MTUyRSwKKyAgICAweDhDNTEsIDB4OEM1MSwgMHg0NzdELCAweDhDNTQsIDB4OEM1NCwgMHgxNzYzLCAweDhDNTUsIDB4OEM1NSwgMHgwNTBELAorICAgIDB4OEM1NiwgMHg4QzU2LCAweDFBNDgsIDB4OEM1NywgMHg4QzU3LCAweDFFMEEsIDB4OEM1QSwgMHg4QzVBLCAweDBCQTgsCisgICAgMHg4QzVDLCAweDhDNUQsIDB4MjA2RCwgMHg4QzVGLCAweDhDNUYsIDB4MjJGOCwgMHg4QzYxLCAweDhDNjEsIDB4MEQ2NSwKKyAgICAweDhDNjIsIDB4OEM2MiwgMHgwRjFCLCAweDhDNjQsIDB4OEM2NCwgMHgyNTlCLCAweDhDNjUsIDB4OEM2NSwgMHgyNTlBLAorICAgIDB4OEM2NiwgMHg4QzY2LCAweDI1OUMsIDB4OEM2OCwgMHg4QzY5LCAweDI4MEEsIDB4OEM2QSwgMHg4QzZBLCAweDEwQjQsCisgICAgMHg4QzZCLCAweDhDNkIsIDB4MTM1RCwgMHg4QzZDLCAweDhDNkMsIDB4MTIyNSwgMHg4QzZELCAweDhDNkQsIDB4MTM1RSwKKyAgICAweDhDNkYsIDB4OEM2RiwgMHgyRTcwLCAweDhDNzAsIDB4OEM3MCwgMHgyRTZELCAweDhDNzEsIDB4OEM3MSwgMHgyRTZGLAorICAgIDB4OEM3MiwgMHg4QzcyLCAweDJFNkUsIDB4OEM3MywgMHg4QzczLCAweDE0ODIsIDB4OEM3NSwgMHg4Qzc1LCAweDJGRTEsCisgICAgMHg4Qzc2LCAweDhDNzYsIDB4MzEzMSwgMHg4Qzc3LCAweDhDNzcsIDB4MzEzMCwgMHg4Qzc4LCAweDhDNzgsIDB4MThFNywKKyAgICAweDhDNzksIDB4OEM3OSwgMHgwOUNCLCAweDhDN0EsIDB4OEM3QSwgMHgwOUNBLCAweDhDN0IsIDB4OEM3QiwgMHgxRTBCLAorICAgIDB4OEM3RCwgMHg4QzdELCAweDIwNkYsIDB4OEM4MCwgMHg4QzgwLCAweDIyRkEsIDB4OEM4MSwgMHg4QzgxLCAweDIyRjksCisgICAgMHg4QzgyLCAweDhDODIsIDB4MEQ2NiwgMHg4Qzg0LCAweDhDODUsIDB4MjU5RSwgMHg4Qzg2LCAweDhDODYsIDB4MjU5RCwKKyAgICAweDhDODksIDB4OEM4OSwgMHgwRjFELCAweDhDOEEsIDB4OEM4QSwgMHgwRjFDLCAweDhDOEMsIDB4OEM4QywgMHgxMEI2LAorICAgIDB4OEM4RCwgMHg4QzhELCAweDEwQjUsIDB4OEM4RiwgMHg4QzhGLCAweDJBNTUsIDB4OEM5MCwgMHg4QzkwLCAweDJDOTgsCisgICAgMHg4QzkxLCAweDhDOTIsIDB4MkM5NiwgMHg4QzkzLCAweDhDOTMsIDB4MTM1RiwgMHg4Qzk0LCAweDhDOTQsIDB4MkU3MiwKKyAgICAweDhDOTUsIDB4OEM5NSwgMHgyRTcxLCAweDhDOTcsIDB4OEM5NywgMHgyRkU0LCAweDhDOTgsIDB4OEM5OCwgMHgyRkUzLAorICAgIDB4OEM5OSwgMHg4Qzk5LCAweDJGRTIsIDB4OEM5QSwgMHg4QzlBLCAweDMxMzIsIDB4OEM5QiwgMHg4QzlCLCAweDM4NDUsCisgICAgMHg4QzlDLCAweDhDOUMsIDB4MzUyMywgMHg4QzlELCAweDhDOUQsIDB4MDUwRSwgMHg4QzlFLCAweDhDOUUsIDB4MDgwQSwKKyAgICAweDhDOUYsIDB4OEM5RiwgMHgzQkFELCAweDhDQTAsIDB4OENBMCwgMHgwODBCLCAweDhDQTEsIDB4OENBMiwgMHgwOUNDLAorICAgIDB4OENBMywgMHg4Q0EzLCAweDFFMEQsIDB4OENBNCwgMHg4Q0E0LCAweDFFMEMsIDB4OENBNSwgMHg4Q0E1LCAweDIwNzAsCisgICAgMHg4Q0E3LCAweDhDQTcsIDB4MEJBRSwgMHg4Q0E4LCAweDhDQTgsIDB4MEJBQywgMHg4Q0E5LCAweDhDQTksIDB4MEJBOSwKKyAgICAweDhDQUEsIDB4OENBQSwgMHgwQkFELCAweDhDQUIsIDB4OENBQiwgMHgwQkFCLCAweDhDQUMsIDB4OENBQywgMHgwQkFBLAorICAgIDB4OENBRCwgMHg4Q0FELCAweDNGRjEsIDB4OENBRiwgMHg4Q0FGLCAweDBENjcsIDB4OENCMCwgMHg4Q0IwLCAweDIyRkQsCisgICAgMHg4Q0IyLCAweDhDQjIsIDB4MEYyMiwgMHg4Q0IzLCAweDhDQjMsIDB4MEQ2OSwgMHg4Q0I0LCAweDhDQjQsIDB4MEQ2RSwKKyAgICAweDhDQjUsIDB4OENCNSwgMHgyMkZGLCAweDhDQjYsIDB4OENCNiwgMHgwRDcwLCAweDhDQjcsIDB4OENCNywgMHgwRDZGLAorICAgIDB4OENCOCwgMHg4Q0I4LCAweDBENzIsIDB4OENCOSwgMHg4Q0I5LCAweDIyRkUsIDB4OENCQSwgMHg4Q0JBLCAweDIyRkIsCisgICAgMHg4Q0JCLCAweDhDQkIsIDB4MEQ2QywgMHg4Q0JDLCAweDhDQkMsIDB4MEQ2OCwgMHg4Q0JELCAweDhDQkQsIDB4MEQ2QSwKKyAgICAweDhDQkUsIDB4OENCRSwgMHgyMkZDLCAweDhDQkYsIDB4OENCRiwgMHgwRDcxLCAweDhDQzAsIDB4OENDMCwgMHgwRDZELAorICAgIDB4OENDMSwgMHg4Q0MxLCAweDBENkIsIDB4OENDMiwgMHg4Q0MyLCAweDBGMjQsIDB4OENDMywgMHg4Q0MzLCAweDBGMjMsCisgICAgMHg4Q0M0LCAweDhDQzQsIDB4MEYyMSwgMHg4Q0M1LCAweDhDQzUsIDB4MEYyNSwgMHg4Q0M3LCAweDhDQzgsIDB4MEYxRiwKKyAgICAweDhDQ0EsIDB4OENDQSwgMHgwRjFFLCAweDhDQ0MsIDB4OENDQywgMHgyNUEwLCAweDhDQ0QsIDB4OENDRCwgMHgzRTk5LAorICAgIDB4OENDRiwgMHg4Q0NGLCAweDI4MEQsIDB4OENEMSwgMHg4Q0QyLCAweDEwQjgsIDB4OENEMywgMHg4Q0QzLCAweDEwQjcsCisgICAgMHg4Q0Q0LCAweDhDRDQsIDB4NDc3RSwgMHg4Q0Q1LCAweDhDRDUsIDB4MjgwQywgMHg4Q0Q2LCAweDhDRDYsIDB4Mzg0QiwKKyAgICAweDhDRDcsIDB4OENENywgMHgyODBFLCAweDhDRDksIDB4OENEOSwgMHgyQTU4LCAweDhDREEsIDB4OENEQSwgMHgyQTVBLAorICAgIDB4OENEQiwgMHg4Q0RCLCAweDM4NTEsIDB4OENEQywgMHg4Q0RDLCAweDEyMkUsIDB4OENERCwgMHg4Q0RELCAweDJBNUIsCisgICAgMHg4Q0RFLCAweDhDREUsIDB4MTIyNywgMHg4Q0RGLCAweDhDREYsIDB4MkE1NywgMHg4Q0UwLCAweDhDRTAsIDB4MTIyNiwKKyAgICAweDhDRTEsIDB4OENFMSwgMHgxMjMwLCAweDhDRTIsIDB4OENFMywgMHgxMjJDLCAweDhDRTQsIDB4OENFNCwgMHgxMjI5LAorICAgIDB4OENFNSwgMHg4Q0U1LCAweDJBNTYsIDB4OENFNiwgMHg4Q0U2LCAweDEyMjgsIDB4OENFNywgMHg4Q0U3LCAweDJBNUMsCisgICAgMHg4Q0U4LCAweDhDRTgsIDB4MkE1OSwgMHg4Q0U5LCAweDhDRTksIDB4M0JBRSwgMHg4Q0VBLCAweDhDRUEsIDB4MTIyRiwKKyAgICAweDhDRUIsIDB4OENFQiwgMHgzRjlDLCAweDhDRUMsIDB4OENFRCwgMHgxMjJBLCAweDhDRUUsIDB4OENFRSwgMHgyQzlBLAorICAgIDB4OENGMCwgMHg4Q0YwLCAweDJDOUMsIDB4OENGMSwgMHg4Q0YxLCAweDJDOUIsIDB4OENGMiwgMHg4Q0YyLCAweDQ3N0YsCisgICAgMHg4Q0YzLCAweDhDRjMsIDB4MkM5RCwgMHg4Q0Y0LCAweDhDRjQsIDB4MTM2MCwgMHg4Q0Y1LCAweDhDRjUsIDB4MkM5OSwKKyAgICAweDhDRjcsIDB4OENGNywgMHgzRkIxLCAweDhDRjgsIDB4OENGOCwgMHgxNDg2LCAweDhDRjksIDB4OENGOSwgMHgyRTczLAorICAgIDB4OENGQSwgMHg4Q0ZBLCAweDE0ODMsIDB4OENGQiwgMHg4Q0ZCLCAweDE0ODcsIDB4OENGQywgMHg4Q0ZDLCAweDE0ODUsCisgICAgMHg4Q0ZELCAweDhDRkQsIDB4MTQ4NCwgMHg4Q0ZFLCAweDhDRkUsIDB4MkZFNSwgMHg4RDAwLCAweDhEMDAsIDB4MkZFOCwKKyAgICAweDhEMDIsIDB4OEQwMiwgMHgyRkU3LCAweDhEMDMsIDB4OEQwMywgMHgzODRGLCAweDhEMDQsIDB4OEQwNCwgMHgyRkU2LAorICAgIDB4OEQwNSwgMHg4RDA1LCAweDE1MkYsIDB4OEQwNiwgMHg4RDA3LCAweDMxMzMsIDB4OEQwOCwgMHg4RDA4LCAweDE1Q0QsCisgICAgMHg4RDA5LCAweDhEMDksIDB4MzEzNSwgMHg4RDBBLCAweDhEMEEsIDB4MTVDRSwgMHg4RDBCLCAweDhEMEIsIDB4NDU3MywKKyAgICAweDhEMEMsIDB4OEQwQywgMHgzRjk2LCAweDhEMEQsIDB4OEQwRCwgMHgxNjRCLCAweDhEMEYsIDB4OEQwRiwgMHgxNjRBLAorICAgIDB4OEQxMCwgMHg4RDEwLCAweDMzMTYsIDB4OEQxMSwgMHg4RDExLCAweDM4NTMsIDB4OEQxMiwgMHg4RDEyLCAweDM4NEUsCisgICAgMHg4RDEzLCAweDhEMTMsIDB4MTY5MiwgMHg4RDE0LCAweDhEMTQsIDB4MzMxNywgMHg4RDE1LCAweDhEMTUsIDB4MzNCQywKKyAgICAweDhEMTYsIDB4OEQxNywgMHgxNkQ5LCAweDhEMTgsIDB4OEQxOCwgMHgzRTZGLCAweDhEMTksIDB4OEQxOSwgMHgzNDQyLAorICAgIDB4OEQxQiwgMHg4RDFCLCAweDE3MkYsIDB4OEQxQywgMHg4RDFDLCAweDQ3ODAsIDB4OEQxRCwgMHg4RDFELCAweDQ1MDYsCisgICAgMHg4RDY0LCAweDhENjQsIDB4MDUwRiwgMHg4RDY2LCAweDhENjYsIDB4MEJCMCwgMHg4RDY3LCAweDhENjcsIDB4MEJBRiwKKyAgICAweDhENjgsIDB4OEQ2OSwgMHgyNUExLCAweDhENkIsIDB4OEQ2QiwgMHgxMEJBLCAweDhENkMsIDB4OEQ2QywgMHgyQzlFLAorICAgIDB4OEQ2RCwgMHg4RDZELCAweDEyMzEsIDB4OEQ2RSwgMHg4RDZFLCAweDJDOUYsIDB4OEQ2RiwgMHg4RDZGLCAweDJFNzQsCisgICAgMHg4RDcwLCAweDhENzAsIDB4MDUxMCwgMHg4RDcyLCAweDhENzIsIDB4MUMwNiwgMHg4RDczLCAweDhENzMsIDB4MDgwRCwKKyAgICAweDhENzQsIDB4OEQ3NCwgMHgwODBDLCAweDhENzYsIDB4OEQ3NiwgMHgxRTBFLCAweDhENzcsIDB4OEQ3NywgMHgwOUNFLAorICAgIDB4OEQ3OCwgMHg4RDc4LCAweDFFMEYsIDB4OEQ3OSwgMHg4RDc5LCAweDIwNzMsIDB4OEQ3QSwgMHg4RDdBLCAweDM5RTEsCisgICAgMHg4RDdCLCAweDhEN0IsIDB4MjA3MiwgMHg4RDdELCAweDhEN0QsIDB4MjA3MSwgMHg4RDgwLCAweDhEODAsIDB4MjMwMSwKKyAgICAweDhEODEsIDB4OEQ4MSwgMHgwRDc1LCAweDhEODIsIDB4OEQ4MiwgMHgzRjY5LCAweDhEODQsIDB4OEQ4NCwgMHgyMzAwLAorICAgIDB4OEQ4NSwgMHg4RDg1LCAweDBENzQsIDB4OEQ4OSwgMHg4RDg5LCAweDIzMDIsIDB4OEQ4QSwgMHg4RDhBLCAweDBENzMsCisgICAgMHg4RDhDLCAweDhEOEMsIDB4MjVBNCwgMHg4RDhELCAweDhEOEQsIDB4MjVBNywgMHg4RDhFLCAweDhEOEYsIDB4MjVBNSwKKyAgICAweDhEOTAsIDB4OEQ5MCwgMHgyNUFBLCAweDhEOTEsIDB4OEQ5MSwgMHgyNUEzLCAweDhEOTIsIDB4OEQ5MiwgMHgyNUFCLAorICAgIDB4OEQ5MywgMHg4RDk0LCAweDI1QTgsIDB4OEQ5NSwgMHg4RDk1LCAweDEwQkMsIDB4OEQ5NiwgMHg4RDk2LCAweDI4MEYsCisgICAgMHg4RDk5LCAweDhEOTksIDB4MTBCQiwgMHg4RDlCLCAweDhEOUIsIDB4MkE2MCwgMHg4RDlDLCAweDhEOUMsIDB4MkE1RSwKKyAgICAweDhEOUYsIDB4OEQ5RiwgMHgxMjMyLCAweDhEQTAsIDB4OERBMCwgMHgyQTVELCAweDhEQTEsIDB4OERBMSwgMHgyQTVGLAorICAgIDB4OERBMywgMHg4REEzLCAweDEyMzMsIDB4OERBNSwgMHg4REE1LCAweDJDQTAsIDB4OERBNiwgMHg4REE2LCAweDNGRjcsCisgICAgMHg4REE3LCAweDhEQTcsIDB4MkNBMSwgMHg4REE4LCAweDhEQTgsIDB4MTQ4OCwgMHg4REE5LCAweDhEQTksIDB4Mzg1NiwKKyAgICAweDhEQUEsIDB4OERBQSwgMHgzMTM3LCAweDhEQUIsIDB4OERBQiwgMHgzMTM5LCAweDhEQUMsIDB4OERBQywgMHgzMTM2LAorICAgIDB4OERBRCwgMHg4REFELCAweDMxMzgsIDB4OERBRSwgMHg4REFFLCAweDMyM0QsIDB4OERBRiwgMHg4REFGLCAweDMzMTgsCisgICAgMHg4REIyLCAweDhEQjIsIDB4MzUwOSwgMHg4REIzLCAweDhEQjMsIDB4MDUxMSwgMHg4REI0LCAweDhEQjQsIDB4MDgwRSwKKyAgICAweDhEQjUsIDB4OERCNSwgMHgxRTEwLCAweDhEQjYsIDB4OERCNiwgMHgxRTEyLCAweDhEQjcsIDB4OERCNywgMHgxRTExLAorICAgIDB4OERCOSwgMHg4REI5LCAweDIwNzYsIDB4OERCQSwgMHg4REJBLCAweDBCQjIsIDB4OERCQywgMHg4REJDLCAweDIwNzQsCisgICAgMHg4REJFLCAweDhEQkUsIDB4MEJCMSwgMHg4REJGLCAweDhEQkYsIDB4MjA3NywgMHg4REMwLCAweDhEQzAsIDB4NDM2QSwKKyAgICAweDhEQzEsIDB4OERDMSwgMHgyMDc4LCAweDhEQzIsIDB4OERDMiwgMHgyMDc1LCAweDhEQzMsIDB4OERDMywgMHg0NzgyLAorICAgIDB4OERDNSwgMHg4REM1LCAweDIzMEUsIDB4OERDNiwgMHg4REM2LCAweDBEN0QsIDB4OERDNywgMHg4REM3LCAweDIzMDYsCisgICAgMHg4REM4LCAweDhEQzgsIDB4MjMwQywgMHg4RENCLCAweDhEQ0IsIDB4MEQ3OCwgMHg4RENDLCAweDhEQ0MsIDB4MEQ3QiwKKyAgICAweDhEQ0QsIDB4OERDRCwgMHgyMzA1LCAweDhEQ0UsIDB4OERDRSwgMHgwRDc2LCAweDhEQ0YsIDB4OERDRiwgMHgyMzA5LAorICAgIDB4OEREMCwgMHg4REQwLCAweDI1QjEsIDB4OEREMSwgMHg4REQxLCAweDBEN0EsIDB4OEREMywgMHg4REQzLCAweDIzMDQsCisgICAgMHg4REQ0LCAweDhERDQsIDB4M0Y4MiwgMHg4REQ1LCAweDhERDUsIDB4MjMwQSwgMHg4REQ2LCAweDhERDYsIDB4MjMwNywKKyAgICAweDhERDcsIDB4OERENywgMHgyMzBELCAweDhERDgsIDB4OEREOCwgMHgyMzAzLCAweDhERDksIDB4OEREOSwgMHgyMzBCLAorICAgIDB4OEREQSwgMHg4RERBLCAweDBENzksIDB4OEREQiwgMHg4RERCLCAweDBEN0MsIDB4OEREQywgMHg4RERDLCAweDIzMDgsCisgICAgMHg4RERELCAweDhEREQsIDB4MEQ3NywgMHg4RERGLCAweDhEREYsIDB4MEYyNywgMHg4REUwLCAweDhERTAsIDB4MjVBRCwKKyAgICAweDhERTEsIDB4OERFMSwgMHgwRjI2LCAweDhERTIsIDB4OERFMiwgMHgyNUI0LCAweDhERTMsIDB4OERFMywgMHgyNUIzLAorICAgIDB4OERFNCwgMHg4REU0LCAweDBGMkQsIDB4OERFNiwgMHg4REU2LCAweDBGMkUsIDB4OERFNywgMHg4REU3LCAweDI1QjUsCisgICAgMHg4REU4LCAweDhERTgsIDB4MEYyOCwgMHg4REU5LCAweDhERTksIDB4MjVCMiwgMHg4REVBLCAweDhERUEsIDB4MEYyQywKKyAgICAweDhERUIsIDB4OERFQiwgMHgyNUI3LCAweDhERUMsIDB4OERFQywgMHgyNUFFLCAweDhERUUsIDB4OERFRSwgMHgyNUIwLAorICAgIDB4OERFRiwgMHg4REVGLCAweDBGMjksIDB4OERGMCwgMHg4REYwLCAweDI1QUMsIDB4OERGMSwgMHg4REYxLCAweDI1QUYsCisgICAgMHg4REYyLCAweDhERjIsIDB4MjVCNiwgMHg4REYzLCAweDhERjMsIDB4MEYyQSwgMHg4REY0LCAweDhERjQsIDB4MjVCOCwKKyAgICAweDhERkEsIDB4OERGQSwgMHgwRjJCLCAweDhERkMsIDB4OERGQywgMHgxMEJELCAweDhERkQsIDB4OERGRCwgMHgyODE0LAorICAgIDB4OERGRSwgMHg4REZFLCAweDI4MUEsIDB4OERGRiwgMHg4REZGLCAweDI4MTIsIDB4OEUwMCwgMHg4RTAwLCAweDI4MUIsCisgICAgMHg4RTAxLCAweDhFMDEsIDB4M0Y4NSwgMHg4RTAyLCAweDhFMDIsIDB4MjgxMSwgMHg4RTAzLCAweDhFMDMsIDB4MjgxNiwKKyAgICAweDhFMDQsIDB4OEUwNCwgMHgyODFDLCAweDhFMDUsIDB4OEUwNSwgMHgyODE5LCAweDhFMDYsIDB4OEUwNiwgMHgyODE4LAorICAgIDB4OEUwNywgMHg4RTA3LCAweDI4MTcsIDB4OEUwOSwgMHg4RTA5LCAweDI4MTAsIDB4OEUwQSwgMHg4RTBBLCAweDI4MTUsCisgICAgMHg4RTBELCAweDhFMEQsIDB4MjgxMywgMHg4RTBFLCAweDhFMEUsIDB4M0U1RSwgMHg4RTBGLCAweDhFMEYsIDB4MTIzOCwKKyAgICAweDhFMTAsIDB4OEUxMCwgMHgxMjM1LCAweDhFMTEsIDB4OEUxMSwgMHgyQTY5LCAweDhFMTIsIDB4OEUxMiwgMHgyQTZFLAorICAgIDB4OEUxMywgMHg4RTEzLCAweDJBNzAsIDB4OEUxNCwgMHg4RTE0LCAweDJBNkQsIDB4OEUxNSwgMHg4RTE1LCAweDJBNjYsCisgICAgMHg4RTE2LCAweDhFMTYsIDB4MkE2OCwgMHg4RTE3LCAweDhFMTcsIDB4MkE3MiwgMHg4RTE4LCAweDhFMTgsIDB4MkE2RiwKKyAgICAweDhFMTksIDB4OEUxOSwgMHgyQTZBLCAweDhFMUEsIDB4OEUxQSwgMHgyQTczLCAweDhFMUIsIDB4OEUxQiwgMHgyQTY3LAorICAgIDB4OEUxQywgMHg4RTFDLCAweDJBNzEsIDB4OEUxRCwgMHg4RTFELCAweDEyMzYsIDB4OEUxRSwgMHg4RTFFLCAweDEyM0MsCisgICAgMHg4RTFGLCAweDhFMUYsIDB4MTIzQSwgMHg4RTIwLCAweDhFMjAsIDB4MkE2MSwgMHg4RTIxLCAweDhFMjEsIDB4MTIzQiwKKyAgICAweDhFMjIsIDB4OEUyMiwgMHgxMjM3LCAweDhFMjMsIDB4OEUyMywgMHgyQTYyLCAweDhFMjQsIDB4OEUyNCwgMHgyQTY0LAorICAgIDB4OEUyNSwgMHg4RTI1LCAweDJBNjMsIDB4OEUyNiwgMHg4RTI3LCAweDJBNkIsIDB4OEUyOCwgMHg4RTI4LCAweDNGODgsCisgICAgMHg4RTI5LCAweDhFMjksIDB4MTIzOSwgMHg4RTJBLCAweDhFMkEsIDB4M0JCNCwgMHg4RTJCLCAweDhFMkIsIDB4MTIzNCwKKyAgICAweDhFMkQsIDB4OEUyRCwgMHgzRUFCLCAweDhFMkUsIDB4OEUyRSwgMHgyQTY1LCAweDhFMzAsIDB4OEUzMCwgMHgyQ0FCLAorICAgIDB4OEUzMSwgMHg4RTMxLCAweDEzNjIsIDB4OEUzMywgMHg4RTMzLCAweDJDQTIsIDB4OEUzNCwgMHg4RTM0LCAweDEzNjMsCisgICAgMHg4RTM1LCAweDhFMzUsIDB4MTM2NiwgMHg4RTM2LCAweDhFMzYsIDB4MkNBNywgMHg4RTM4LCAweDhFMzgsIDB4MkNBNCwKKyAgICAweDhFMzksIDB4OEUzOSwgMHgxMzY1LCAweDhFM0EsIDB4OEUzQSwgMHg0Nzg0LCAweDhFM0MsIDB4OEUzRCwgMHgyQ0E4LAorICAgIDB4OEUzRSwgMHg4RTNFLCAweDJDQTMsIDB4OEUzRiwgMHg4RTNGLCAweDJDQUMsIDB4OEU0MCwgMHg4RTQwLCAweDJDQTUsCisgICAgMHg4RTQxLCAweDhFNDEsIDB4MkNBQSwgMHg4RTQyLCAweDhFNDIsIDB4MTM2NCwgMHg4RTQ0LCAweDhFNDQsIDB4MTM2MSwKKyAgICAweDhFNDUsIDB4OEU0NSwgMHgyQ0E2LCAweDhFNDYsIDB4OEU0NiwgMHg0MzEyLCAweDhFNDcsIDB4OEU0NywgMHgyRTdBLAorICAgIDB4OEU0OCwgMHg4RTQ4LCAweDE0OEIsIDB4OEU0OSwgMHg4RTQ5LCAweDE0ODksIDB4OEU0QSwgMHg4RTRBLCAweDE0OEMsCisgICAgMHg4RTRCLCAweDhFNEIsIDB4MTQ4QSwgMHg4RTRDLCAweDhFNEMsIDB4MkU3OSwgMHg4RTRELCAweDhFNEQsIDB4MkU3NiwKKyAgICAweDhFNEUsIDB4OEU0RSwgMHgyRTc1LCAweDhFNEYsIDB4OEU0RiwgMHgzRjgzLCAweDhFNTAsIDB4OEU1MCwgMHgyRTc4LAorICAgIDB4OEU1MywgMHg4RTUzLCAweDJFNzcsIDB4OEU1NCwgMHg4RTU0LCAweDJGRjYsIDB4OEU1NSwgMHg4RTU1LCAweDE1MzUsCisgICAgMHg4RTU2LCAweDhFNTYsIDB4MkZFRCwgMHg4RTU3LCAweDhFNTcsIDB4MkZFQywgMHg4RTU5LCAweDhFNTksIDB4MTUzMCwKKyAgICAweDhFNUEsIDB4OEU1QSwgMHgyRkYyLCAweDhFNUIsIDB4OEU1QiwgMHgyRkYxLCAweDhFNUMsIDB4OEU1QywgMHgyRkU5LAorICAgIDB4OEU1RCwgMHg4RTVELCAweDJGRjQsIDB4OEU1RSwgMHg4RTVFLCAweDJGRUUsIDB4OEU1RiwgMHg4RTVGLCAweDE1MzQsCisgICAgMHg4RTYwLCAweDhFNjAsIDB4MkZFQiwgMHg4RTYxLCAweDhFNjEsIDB4MkZGMywgMHg4RTYyLCAweDhFNjIsIDB4MkZFQSwKKyAgICAweDhFNjMsIDB4OEU2MywgMHgxNTMxLCAweDhFNjQsIDB4OEU2NCwgMHgxNTMzLCAweDhFNjUsIDB4OEU2NSwgMHgyRkVGLAorICAgIDB4OEU2NiwgMHg4RTY2LCAweDE1MzIsIDB4OEU2NywgMHg4RTY3LCAweDJGRjAsIDB4OEU2OCwgMHg4RTY4LCAweDQzNEQsCisgICAgMHg4RTY5LCAweDhFNjksIDB4MkZGNSwgMHg4RTZBLCAweDhFNkEsIDB4MzEzRCwgMHg4RTZDLCAweDhFNkMsIDB4MTVEMywKKyAgICAweDhFNkQsIDB4OEU2RCwgMHgzMTNBLCAweDhFNkYsIDB4OEU2RiwgMHgzMTNFLCAweDhFNzEsIDB4OEU3MSwgMHg0M0U3LAorICAgIDB4OEU3MiwgMHg4RTcyLCAweDE1RDAsIDB4OEU3MywgMHg4RTczLCAweDMxM0MsIDB4OEU3NCwgMHg4RTc0LCAweDE1RDUsCisgICAgMHg4RTc1LCAweDhFNzUsIDB4M0Y4OSwgMHg4RTc2LCAweDhFNzYsIDB4MTVEMiwgMHg4RTc3LCAweDhFNzcsIDB4M0Y3RiwKKyAgICAweDhFNzgsIDB4OEU3OCwgMHgzMTNCLCAweDhFN0EsIDB4OEU3QSwgMHgxNUQ0LCAweDhFN0IsIDB4OEU3QiwgMHgzMTNGLAorICAgIDB4OEU3QywgMHg4RTdDLCAweDE1Q0YsIDB4OEU3RSwgMHg4RTdFLCAweDQzMjQsIDB4OEU4MCwgMHg4RTgwLCAweDNFNTcsCisgICAgMHg4RTgxLCAweDhFODEsIDB4MTY0RCwgMHg4RTgyLCAweDhFODIsIDB4MTY0RiwgMHg4RTg0LCAweDhFODQsIDB4MzI0MCwKKyAgICAweDhFODUsIDB4OEU4NSwgMHgxNjRFLCAweDhFODYsIDB4OEU4NiwgMHgzMjNFLCAweDhFODcsIDB4OEU4NywgMHgxNUQxLAorICAgIDB4OEU4OCwgMHg4RTg4LCAweDMyM0YsIDB4OEU4OSwgMHg4RTg5LCAweDE2NEMsIDB4OEU4QSwgMHg4RThBLCAweDE2OTMsCisgICAgMHg4RThCLCAweDhFOEIsIDB4MTY5NSwgMHg4RThDLCAweDhFOEMsIDB4MzMxQSwgMHg4RThELCAweDhFOEQsIDB4MTY5NCwKKyAgICAweDhFOEUsIDB4OEU4RSwgMHgzMzE5LCAweDhFOTAsIDB4OEU5MCwgMHgzM0MxLCAweDhFOTEsIDB4OEU5MSwgMHgxNkRCLAorICAgIDB4OEU5MiwgMHg4RTkyLCAweDMzQzAsIDB4OEU5MywgMHg4RTkzLCAweDE2REMsIDB4OEU5NCwgMHg4RTk0LCAweDMzQkUsCisgICAgMHg4RTk1LCAweDhFOTUsIDB4MzNCRCwgMHg4RTk2LCAweDhFOTcsIDB4MzNDMiwgMHg4RTk4LCAweDhFOTgsIDB4MzQ0MywKKyAgICAweDhFOUEsIDB4OEU5QSwgMHgzM0JGLCAweDhFOUQsIDB4OEU5RCwgMHgzNEExLCAweDhFOUUsIDB4OEVBMCwgMHgzNDlFLAorICAgIDB4OEVBMSwgMHg4RUExLCAweDE3NDksIDB4OEVBMywgMHg4RUEzLCAweDM0RUIsIDB4OEVBNCwgMHg4RUE0LCAweDM0RUEsCisgICAgMHg4RUE1LCAweDhFQTUsIDB4MzRFOSwgMHg4RUE2LCAweDhFQTYsIDB4MzUwQSwgMHg4RUE3LCAweDhFQTcsIDB4M0JCNSwKKyAgICAweDhFQTgsIDB4OEVBOCwgMHgzNTM3LCAweDhFQTksIDB4OEVBOSwgMHgzNTI0LCAweDhFQUEsIDB4OEVBQSwgMHgxNzVCLAorICAgIDB4OEVBQiwgMHg4RUFCLCAweDA1MTIsIDB4OEVBQywgMHg4RUFDLCAweDA5Q0YsIDB4OEVBRCwgMHg4RUFELCAweDM4NUUsCisgICAgMHg4RUIwLCAweDhFQjAsIDB4NDNFOSwgMHg4RUIyLCAweDhFQjIsIDB4MEYyRiwgMHg4RUI2LCAweDhFQjYsIDB4Mzg1RiwKKyAgICAweDhFQkEsIDB4OEVCQSwgMHgxMjNELCAweDhFQkMsIDB4OEVCQywgMHgzOEEwLCAweDhFQkQsIDB4OEVCRCwgMHgyQ0FELAorICAgIDB4OEVDMCwgMHg4RUMwLCAweDE1MzYsIDB4OEVDMiwgMHg4RUMyLCAweDMxNDAsIDB4OEVDMywgMHg4RUMzLCAweDM4NjAsCisgICAgMHg4RUM5LCAweDhFQzksIDB4MzUyNSwgMHg4RUNBLCAweDhFQ0EsIDB4MDUxMywgMHg4RUNCLCAweDhFQ0IsIDB4MDY4RCwKKyAgICAweDhFQ0MsIDB4OEVDQywgMHgwODEwLCAweDhFQ0QsIDB4OEVDRCwgMHgwODBGLCAweDhFQ0UsIDB4OEVDRSwgMHg0Nzg4LAorICAgIDB4OEVDRiwgMHg4RUNGLCAweDA5RDIsIDB4OEVEMSwgMHg4RUQxLCAweDFFMTMsIDB4OEVEMiwgMHg4RUQyLCAweDA5RDAsCisgICAgMHg4RUQzLCAweDhFRDMsIDB4MUUxNCwgMHg4RUQ0LCAweDhFRDQsIDB4MDlEMSwgMHg4RUQ3LCAweDhFRDcsIDB4MjA3RCwKKyAgICAweDhFRDgsIDB4OEVEOCwgMHgyMDc5LCAweDhFREEsIDB4OEVEQSwgMHgzREJFLCAweDhFREIsIDB4OEVEQiwgMHgwQkIzLAorICAgIDB4OEVEQywgMHg4RURDLCAweDIwN0MsIDB4OEVERCwgMHg4RURELCAweDIwN0IsIDB4OEVERSwgMHg4RURFLCAweDIwN0EsCisgICAgMHg4RURGLCAweDhFREYsIDB4MEJCNCwgMHg4RUUwLCAweDhFRTEsIDB4MjA3RSwgMHg4RUUyLCAweDhFRTIsIDB4NDc4OSwKKyAgICAweDhFRTQsIDB4OEVFNCwgMHg0NzhBLCAweDhFRTUsIDB4OEVFNSwgMHgyMzE1LCAweDhFRTYsIDB4OEVFNiwgMHgyMzEzLAorICAgIDB4OEVFNywgMHg4RUU4LCAweDIzMTcsIDB4OEVFOSwgMHg4RUU5LCAweDIzMUUsIDB4OEVFQiwgMHg4RUVCLCAweDIzMUEsCisgICAgMHg4RUVDLCAweDhFRUMsIDB4MjMxQywgMHg4RUVELCAweDhFRUQsIDB4NDc4QiwgMHg4RUVFLCAweDhFRUUsIDB4MjMxNCwKKyAgICAweDhFRUYsIDB4OEVFRiwgMHgyMzBGLCAweDhFRjEsIDB4OEVGMSwgMHgyMzFCLCAweDhFRjIsIDB4OEVGMiwgMHg0NzhDLAorICAgIDB4OEVGNCwgMHg4RUY0LCAweDIzMUQsIDB4OEVGNSwgMHg4RUY1LCAweDIzMTYsIDB4OEVGNiwgMHg4RUY2LCAweDIzMTksCisgICAgMHg4RUY3LCAweDhFRjcsIDB4MjMxMCwgMHg4RUY4LCAweDhFRjgsIDB4MEQ3RiwgMHg4RUY5LCAweDhFRjksIDB4MjMxMiwKKyAgICAweDhFRkEsIDB4OEVGQSwgMHgyMzExLCAweDhFRkIsIDB4OEVGQiwgMHgwRDdFLCAweDhFRkMsIDB4OEVGQywgMHgwRDgwLAorICAgIDB4OEVGRSwgMHg4RUZFLCAweDBGMzIsIDB4OEVGRiwgMHg4RUZGLCAweDI1QkEsIDB4OEYwMCwgMHg4RjAwLCAweDI1QkMsCisgICAgMHg4RjAxLCAweDhGMDEsIDB4MjVCQiwgMHg4RjAyLCAweDhGMDIsIDB4MjVDMCwgMHg4RjAzLCAweDhGMDMsIDB4MEYzMCwKKyAgICAweDhGMDUsIDB4OEYwNSwgMHgyNUJELCAweDhGMDYsIDB4OEYwNiwgMHgyNUI5LCAweDhGMDcsIDB4OEYwOCwgMHgyNUJFLAorICAgIDB4OEYwOSwgMHg4RjA5LCAweDBGMzEsIDB4OEYwQSwgMHg4RjBBLCAweDBGMzMsIDB4OEYwQiwgMHg4RjBCLCAweDI1QzEsCisgICAgMHg4RjBELCAweDhGMEQsIDB4MjgyMCwgMHg4RjBFLCAweDhGMEUsIDB4MjgxRiwgMHg4RjEwLCAweDhGMTEsIDB4MjgxRCwKKyAgICAweDhGMTIsIDB4OEYxMiwgMHgxMEJGLCAweDhGMTMsIDB4OEYxMywgMHgxMEMxLCAweDhGMTQsIDB4OEYxNCwgMHgxMEJFLAorICAgIDB4OEYxNSwgMHg4RjE1LCAweDEwQzAsIDB4OEYxNiwgMHg4RjE3LCAweDJBN0EsIDB4OEYxOCwgMHg4RjE4LCAweDJBNzYsCisgICAgMHg4RjE5LCAweDhGMTksIDB4Mzg2MiwgMHg4RjFBLCAweDhGMUEsIDB4MkE3NywgMHg4RjFCLCAweDhGMUIsIDB4MTIzRiwKKyAgICAweDhGMUMsIDB4OEYxQywgMHgxMjQ0LCAweDhGMUQsIDB4OEYxRCwgMHgxMjNFLCAweDhGMUUsIDB4OEYxRSwgMHgxMjQ1LAorICAgIDB4OEYxRiwgMHg4RjFGLCAweDEyNDAsIDB4OEYyMCwgMHg4RjIwLCAweDJBNzgsIDB4OEYyMywgMHg4RjIzLCAweDJBNzksCisgICAgMHg4RjI0LCAweDhGMjQsIDB4MkE3NSwgMHg4RjI1LCAweDhGMjUsIDB4MTI0NiwgMHg4RjI2LCAweDhGMjYsIDB4MTI0MiwKKyAgICAweDhGMjksIDB4OEYyOSwgMHgxMjQxLCAweDhGMkEsIDB4OEYyQSwgMHgxMjQzLCAweDhGMkMsIDB4OEYyQywgMHgyQTc0LAorICAgIDB4OEYyRCwgMHg4RjJELCAweDM4NjMsIDB4OEYyRSwgMHg4RjJFLCAweDJDQUYsIDB4OEYyRiwgMHg4RjJGLCAweDEzNjgsCisgICAgMHg4RjMwLCAweDhGMzAsIDB4M0JCNywgMHg4RjMyLCAweDhGMzIsIDB4MkNCMSwgMHg4RjMzLCAweDhGMzMsIDB4MTM2QSwKKyAgICAweDhGMzQsIDB4OEYzNCwgMHgyQ0I0LCAweDhGMzUsIDB4OEYzNSwgMHgyQ0IwLCAweDhGMzYsIDB4OEYzNiwgMHgyQ0FFLAorICAgIDB4OEYzNywgMHg4RjM3LCAweDJDQjMsIDB4OEYzOCwgMHg4RjM4LCAweDEzNjksIDB4OEYzOSwgMHg4RjM5LCAweDJDQjIsCisgICAgMHg4RjNCLCAweDhGM0IsIDB4MTM2NywgMHg4RjNFLCAweDhGM0UsIDB4MTQ4RSwgMHg4RjNGLCAweDhGM0YsIDB4MTQ5MSwKKyAgICAweDhGNDAsIDB4OEY0MCwgMHgyRTdDLCAweDhGNDEsIDB4OEY0MSwgMHgzRDA3LCAweDhGNDIsIDB4OEY0MiwgMHgxNDhGLAorICAgIDB4OEY0MywgMHg4RjQzLCAweDJFN0IsIDB4OEY0NCwgMHg4RjQ0LCAweDE0OEQsIDB4OEY0NSwgMHg4RjQ1LCAweDE0OTAsCisgICAgMHg4RjQ2LCAweDhGNDgsIDB4MkZGNywgMHg4RjQ5LCAweDhGNDksIDB4MTUzNywgMHg4RjRBLCAweDhGNEEsIDB4M0JCOCwKKyAgICAweDhGNEIsIDB4OEY0QiwgMHgyRkZBLCAweDhGNEQsIDB4OEY0RCwgMHgxNTM4LCAweDhGNEUsIDB4OEY0RSwgMHgxNUQ3LAorICAgIDB4OEY0RiwgMHg4RjUwLCAweDMxNDMsIDB4OEY1MSwgMHg4RjUxLCAweDMxNDIsIDB4OEY1MiwgMHg4RjUyLCAweDMxNDEsCisgICAgMHg4RjUzLCAweDhGNTMsIDB4MzE0NSwgMHg4RjU0LCAweDhGNTQsIDB4MTVENiwgMHg4RjU1LCAweDhGNTUsIDB4MzI0NCwKKyAgICAweDhGNTYsIDB4OEY1NywgMHgzMjQyLCAweDhGNTgsIDB4OEY1OCwgMHgzMjQ1LCAweDhGNTksIDB4OEY1OSwgMHgzMjQxLAorICAgIDB4OEY1QSwgMHg4RjVBLCAweDMyNDYsIDB4OEY1QiwgMHg4RjVCLCAweDMzMUMsIDB4OEY1QywgMHg4RjVDLCAweDNGMzEsCisgICAgMHg4RjVELCAweDhGNUQsIDB4MzMxRCwgMHg4RjVFLCAweDhGNUUsIDB4MzMxQiwgMHg4RjVGLCAweDhGNUYsIDB4MTY5NiwKKyAgICAweDhGNjAsIDB4OEY2MCwgMHgzM0M0LCAweDhGNjEsIDB4OEY2MSwgMHgxNkRELCAweDhGNjIsIDB4OEY2MiwgMHgzM0M1LAorICAgIDB4OEY2MywgMHg4RjYzLCAweDM0NDUsIDB4OEY2NCwgMHg4RjY0LCAweDM0NDQsIDB4OEY2NiwgMHg4RjY3LCAweDQ1NjksCisgICAgMHg4RjZFLCAweDhGNkUsIDB4NDU2QiwgMHg4RjkzLCAweDhGOTMsIDB4NDczMiwgMHg4RjlCLCAweDhGOUIsIDB4MDUxNCwKKyAgICAweDhGOUMsIDB4OEY5QywgMHgwRDgxLCAweDhGOUYsIDB4OEY5RiwgMHgwRjM0LCAweDhGQTAsIDB4OEZBMCwgMHgzRDk0LAorICAgIDB4OEZBMywgMHg4RkEzLCAweDEwQzIsIDB4OEZBNSwgMHg4RkE1LCAweDM4NjYsIDB4OEZBNiwgMHg4RkE2LCAweDEzNkMsCisgICAgMHg4RkE4LCAweDhGQTgsIDB4MTM2QiwgMHg4RkFELCAweDhGQUQsIDB4MTVEOCwgMHg4RkFFLCAweDhGQUUsIDB4MTYyRiwKKyAgICAweDhGQUYsIDB4OEZBRiwgMHgxNjk3LCAweDhGQjAsIDB4OEZCMCwgMHgwNTE1LCAweDhGQjEsIDB4OEZCMSwgMHgwOUQzLAorICAgIDB4OEZCMiwgMHg4RkIyLCAweDBGMzUsIDB4OEZCMywgMHg4RkIzLCAweDM4NkEsIDB4OEZCNCwgMHg4RkI0LCAweDMxNDYsCisgICAgMHg4RkI1LCAweDhGQjUsIDB4MDIzMCwgMHg4RkI2LCAweDhGQjYsIDB4NDdEMywgMHg4RkI3LCAweDhGQjcsIDB4NDNGRCwKKyAgICAweDhGQjgsIDB4OEZCOCwgMHg0MkY2LCAweDhGQjksIDB4OEZCOSwgMHg0OEM5LCAweDhGQkEsIDB4OEZCQSwgMHg0OEM3LAorICAgIDB4OEZCQiwgMHg4RkJDLCAweDNENkIsIDB4OEZCRSwgMHg4RkJFLCAweDQ4QzYsIDB4OEZCRiwgMHg4RkJGLCAweDE4RTksCisgICAgMHg4RkMxLCAweDhGQzEsIDB4NDc4RCwgMHg4RkMyLCAweDhGQzIsIDB4MDUxNiwgMHg4RkM0LCAweDhGQzQsIDB4MDUxOSwKKyAgICAweDhGQzUsIDB4OEZDNSwgMHgwNTE4LCAweDhGQzYsIDB4OEZDNiwgMHgwNTE3LCAweDhGQzksIDB4OEZDOSwgMHgxOEU4LAorICAgIDB4OEZDQSwgMHg4RkNBLCAweDQ3OEUsIDB4OEZDQiwgMHg4RkNCLCAweDFBNEEsIDB4OEZDQywgMHg4RkNDLCAweDQ3OEYsCisgICAgMHg4RkNELCAweDhGQ0QsIDB4MUE0QywgMHg4RkNFLCAweDhGQ0UsIDB4MDY4RSwgMHg4RkQwLCAweDhGRDAsIDB4NDhBRSwKKyAgICAweDhGRDEsIDB4OEZEMSwgMHgwNjkwLCAweDhGRDIsIDB4OEZEMiwgMHgxQTQ5LCAweDhGRDMsIDB4OEZEMywgMHgxQTRCLAorICAgIDB4OEZENCwgMHg4RkQ0LCAweDA2OEYsIDB4OEZENSwgMHg4RkQ1LCAweDFBNEUsIDB4OEZENiwgMHg4RkQ2LCAweDFBNEQsCisgICAgMHg4RkQ3LCAweDhGRDcsIDB4MUE0RiwgMHg4RkRBLCAweDhGREEsIDB4M0ZDQiwgMHg4RkUwLCAweDhGRTAsIDB4MUMwQSwKKyAgICAweDhGRTEsIDB4OEZFMSwgMHgxQzA4LCAweDhGRTIsIDB4OEZFMiwgMHgwODEzLCAweDhGRTMsIDB4OEZFMywgMHgxQzA3LAorICAgIDB4OEZFNCwgMHg4RkU0LCAweDA4MTgsIDB4OEZFNSwgMHg4RkU1LCAweDA4MTUsIDB4OEZFNiwgMHg4RkU2LCAweDA4MTIsCisgICAgMHg4RkU4LCAweDhGRTgsIDB4MDgxOSwgMHg4RkVBLCAweDhGRUEsIDB4MDgxNCwgMHg4RkVCLCAweDhGRUIsIDB4MDgxNywKKyAgICAweDhGRUQsIDB4OEZFRCwgMHgwODE2LCAweDhGRUUsIDB4OEZFRSwgMHgxQzA5LCAweDhGRjAsIDB4OEZGMCwgMHgwODExLAorICAgIDB4OEZGNCwgMHg4RkY0LCAweDA5RDksIDB4OEZGNSwgMHg4RkY1LCAweDFFMTYsIDB4OEZGNiwgMHg4RkY2LCAweDFFMUMsCisgICAgMHg4RkY3LCAweDhGRjcsIDB4MDlENiwgMHg4RkY4LCAweDhGRjgsIDB4MDlERCwgMHg4RkY5LCAweDhGRjksIDB4Mzg3MSwKKyAgICAweDhGRkEsIDB4OEZGQSwgMHgwOUQ4LCAweDhGRkIsIDB4OEZGQiwgMHgxRTE5LCAweDhGRkMsIDB4OEZGQywgMHgxRTFCLAorICAgIDB4OEZGRCwgMHg4RkZELCAweDA5REIsIDB4OEZGRSwgMHg4RkZFLCAweDFFMTUsIDB4OEZGRiwgMHg4RkZGLCAweDFFMTgsCisgICAgMHg5MDAwLCAweDkwMDAsIDB4MDlENywgMHg5MDAxLCAweDkwMDEsIDB4MDlENCwgMHg5MDAyLCAweDkwMDIsIDB4MUUxNywKKyAgICAweDkwMDMsIDB4OTAwMywgMHgwOURBLCAweDkwMDQsIDB4OTAwNCwgMHgxRTFBLCAweDkwMDUsIDB4OTAwNSwgMHgwOURDLAorICAgIDB4OTAwNiwgMHg5MDA2LCAweDA5RDUsIDB4OTAwOCwgMHg5MDA4LCAweDNFRTAsIDB4OTAwQiwgMHg5MDBCLCAweDIwODEsCisgICAgMHg5MDBDLCAweDkwMEMsIDB4MjA4NCwgMHg5MDBELCAweDkwMEQsIDB4MEJCNiwgMHg5MDBGLCAweDkwMEYsIDB4MEJDMCwKKyAgICAweDkwMTAsIDB4OTAxMCwgMHgwQkJDLCAweDkwMTEsIDB4OTAxMSwgMHgyMDgyLCAweDkwMTIsIDB4OTAxMiwgMHgzRTRFLAorICAgIDB4OTAxNCwgMHg5MDE0LCAweDBCQzQsIDB4OTAxNSwgMHg5MDE1LCAweDBCQkQsIDB4OTAxNiwgMHg5MDE2LCAweDBCQzIsCisgICAgMHg5MDE3LCAweDkwMTcsIDB4MEJCOCwgMHg5MDE5LCAweDkwMTksIDB4MEJCNSwgMHg5MDFBLCAweDkwMUEsIDB4MEJCNywKKyAgICAweDkwMUIsIDB4OTAxQiwgMHgwQkMzLCAweDkwMUMsIDB4OTAxQywgMHgyMDgzLCAweDkwMUQsIDB4OTAxRCwgMHgwQkJCLAorICAgIDB4OTAxRSwgMHg5MDFFLCAweDBCQkUsIDB4OTAxRiwgMHg5MDFGLCAweDBCQkEsIDB4OTAyMCwgMHg5MDIwLCAweDBCQkYsCisgICAgMHg5MDIxLCAweDkwMjEsIDB4MjA4NSwgMHg5MDIyLCAweDkwMjIsIDB4MEJDMSwgMHg5MDIzLCAweDkwMjMsIDB4MEJCOSwKKyAgICAweDkwMjQsIDB4OTAyNCwgMHgyMDgwLCAweDkwMkQsIDB4OTAyRCwgMHgyMzFGLCAweDkwMkUsIDB4OTAyRSwgMHgwRDgyLAorICAgIDB4OTAyRiwgMHg5MDJGLCAweDIzMjEsIDB4OTAzMSwgMHg5MDMxLCAweDBEODQsIDB4OTAzMiwgMHg5MDMyLCAweDBEODYsCisgICAgMHg5MDMzLCAweDkwMzMsIDB4NDc5MCwgMHg5MDM0LCAweDkwMzQsIDB4MjMyMCwgMHg5MDM1LCAweDkwMzUsIDB4MEQ4MywKKyAgICAweDkwMzYsIDB4OTAzNiwgMHgwRDg3LCAweDkwMzcsIDB4OTAzNywgMHgzODc2LCAweDkwMzgsIDB4OTAzOCwgMHgwRDg1LAorICAgIDB4OTAzQywgMHg5MDNDLCAweDBGM0IsIDB4OTAzRCwgMHg5MDNELCAweDI1QzYsIDB4OTAzRSwgMHg5MDNFLCAweDBGNDMsCisgICAgMHg5MDNGLCAweDkwM0YsIDB4MjVDMywgMHg5MDQxLCAweDkwNDEsIDB4MEY0NCwgMHg5MDQyLCAweDkwNDIsIDB4MEYzOSwKKyAgICAweDkwNDQsIDB4OTA0NCwgMHgyNUM0LCAweDkwNDcsIDB4OTA0NywgMHgwRjNFLCAweDkwNDksIDB4OTA0OSwgMHgyNUM1LAorICAgIDB4OTA0QSwgMHg5MDRBLCAweDBGMzcsIDB4OTA0QiwgMHg5MDRCLCAweDBGMzYsIDB4OTA0QywgMHg5MDRDLCAweDNGMTAsCisgICAgMHg5MDRELCAweDkwNEQsIDB4MEY0MSwgMHg5MDRFLCAweDkwNEUsIDB4MEY0MCwgMHg5MDRGLCAweDkwNEYsIDB4MEYzRiwKKyAgICAweDkwNTAsIDB4OTA1MCwgMHgwRjNELCAweDkwNTEsIDB4OTA1MSwgMHgwRjQyLCAweDkwNTIsIDB4OTA1MiwgMHgyNUMyLAorICAgIDB4OTA1MywgMHg5MDUzLCAweDBGMzgsIDB4OTA1NCwgMHg5MDU0LCAweDBGM0EsIDB4OTA1NSwgMHg5MDU1LCAweDBGM0MsCisgICAgMHg5MDU2LCAweDkwNTYsIDB4M0REMiwgMHg5MDU4LCAweDkwNTgsIDB4MTBDNCwgMHg5MDU5LCAweDkwNTksIDB4MTBDNywKKyAgICAweDkwNUIsIDB4OTA1QiwgMHgxMENCLCAweDkwNUMsIDB4OTA1QywgMHgxMEM1LCAweDkwNUQsIDB4OTA1RCwgMHgxMENBLAorICAgIDB4OTA1RSwgMHg5MDVFLCAweDEwQzgsIDB4OTA2MCwgMHg5MDYwLCAweDEwQzMsIDB4OTA2MSwgMHg5MDYxLCAweDM4NzksCisgICAgMHg5MDYyLCAweDkwNjIsIDB4MTBDOSwgMHg5MDYzLCAweDkwNjMsIDB4MTBDNiwgMHg5MDY0LCAweDkwNjQsIDB4M0M2OCwKKyAgICAweDkwNjcsIDB4OTA2NywgMHgyQTdGLCAweDkwNjgsIDB4OTA2OCwgMHgxMjQ5LCAweDkwNjksIDB4OTA2OSwgMHgxMjQ3LAorICAgIDB4OTA2QiwgMHg5MDZCLCAweDJBODAsIDB4OTA2QywgMHg5MDZDLCAweDNENjAsIDB4OTA2RCwgMHg5MDZELCAweDEyNEEsCisgICAgMHg5MDZFLCAweDkwNkUsIDB4MTI0OCwgMHg5MDZGLCAweDkwNkYsIDB4MkE3RSwgMHg5MDcwLCAweDkwNzAsIDB4MkE3RCwKKyAgICAweDkwNzIsIDB4OTA3MiwgMHgxMzcwLCAweDkwNzMsIDB4OTA3MywgMHgyQTdDLCAweDkwNzQsIDB4OTA3NCwgMHgxMzZFLAorICAgIDB4OTA3NSwgMHg5MDc1LCAweDEzNkQsIDB4OTA3NiwgMHg5MDc2LCAweDJDQjUsIDB4OTA3NywgMHg5MDc3LCAweDEyNEIsCisgICAgMHg5MDc4LCAweDkwNzgsIDB4MTM2RiwgMHg5MDc5LCAweDkwNzksIDB4MkNCNiwgMHg5MDdBLCAweDkwN0EsIDB4MTM3MiwKKyAgICAweDkwN0IsIDB4OTA3QiwgMHgyQ0I3LCAweDkwN0MsIDB4OTA3QywgMHgxMzcxLCAweDkwN0QsIDB4OTA3RCwgMHgxNDkzLAorICAgIDB4OTA3RSwgMHg5MDdFLCAweDJFN0UsIDB4OTA3RiwgMHg5MDdGLCAweDE0OTIsIDB4OTA4MCwgMHg5MDgwLCAweDE0OTcsCisgICAgMHg5MDgxLCAweDkwODIsIDB4MTQ5NSwgMHg5MDgzLCAweDkwODMsIDB4MTUzQSwgMHg5MDg0LCAweDkwODQsIDB4MTQ5NCwKKyAgICAweDkwODUsIDB4OTA4NSwgMHgyRTdELCAweDkwODYsIDB4OTA4NiwgMHgyQ0I4LCAweDkwODcsIDB4OTA4NywgMHgxNTM5LAorICAgIDB4OTA4OCwgMHg5MDg4LCAweDE1M0IsIDB4OTA4QSwgMHg5MDhCLCAweDE1RDksIDB4OTA4RCwgMHg5MDhELCAweDMyNDcsCisgICAgMHg5MDhGLCAweDkwOEYsIDB4MTcwQywgMHg5MDkwLCAweDkwOTAsIDB4MTcwQiwgMHg5MDkxLCAweDkwOTEsIDB4MDUxQiwKKyAgICAweDkwOTQsIDB4OTA5NCwgMHgxODFFLCAweDkwOTUsIDB4OTA5NSwgMHgwOURFLCAweDkwOTcsIDB4OTA5OCwgMHgxODFCLAorICAgIDB4OTA5OSwgMHg5MDk5LCAweDE4MUEsIDB4OTA5QiwgMHg5MDlCLCAweDE4MUQsIDB4OTA5RSwgMHg5MDlFLCAweDE4RUQsCisgICAgMHg5MDlGLCAweDkwOUYsIDB4MThFQSwgMHg5MEEwLCAweDkwQTAsIDB4MThFRiwgMHg5MEExLCAweDkwQTEsIDB4MThFQiwKKyAgICAweDkwQTIsIDB4OTBBMiwgMHgwNTFDLCAweDkwQTMsIDB4OTBBMywgMHgwNTFGLCAweDkwQTUsIDB4OTBBNSwgMHgxOEVDLAorICAgIDB4OTBBNiwgMHg5MEE2LCAweDA1MUUsIDB4OTBBNywgMHg5MEE3LCAweDE4RUUsIDB4OTBBOCwgMHg5MEE4LCAweDM4N0MsCisgICAgMHg5MEFBLCAweDkwQUEsIDB4MDUxRCwgMHg5MEFFLCAweDkwQUUsIDB4Mzg4MCwgMHg5MEFGLCAweDkwQUYsIDB4MUE1MiwKKyAgICAweDkwQjAsIDB4OTBCMCwgMHgxQTU0LCAweDkwQjEsIDB4OTBCMSwgMHgwNjkzLCAweDkwQjIsIDB4OTBCMiwgMHgxQTUwLAorICAgIDB4OTBCMywgMHg5MEIzLCAweDFBNTMsIDB4OTBCNCwgMHg5MEI0LCAweDFBNTEsIDB4OTBCNSwgMHg5MEI1LCAweDA2OTEsCisgICAgMHg5MEI2LCAweDkwQjYsIDB4MDY5NCwgMHg5MEI4LCAweDkwQjgsIDB4MDY5MiwgMHg5MEJCLCAweDkwQkIsIDB4M0JDNCwKKyAgICAweDkwQkQsIDB4OTBCRCwgMHgxQzBDLCAweDkwQkUsIDB4OTBCRSwgMHgxQzEwLCAweDkwQkYsIDB4OTBCRiwgMHgxQzBELAorICAgIDB4OTBDMSwgMHg5MEMxLCAweDA4MUMsIDB4OTBDMywgMHg5MEMzLCAweDA4MUQsIDB4OTBDNCwgMHg5MEM0LCAweDM4N0UsCisgICAgMHg5MEM1LCAweDkwQzUsIDB4MUMwRiwgMHg5MEM3LCAweDkwQzcsIDB4MUMxMSwgMHg5MEM4LCAweDkwQzgsIDB4MUMxMywKKyAgICAweDkwQ0EsIDB4OTBDQSwgMHgwODFBLCAweDkwQ0IsIDB4OTBDQiwgMHgxQzEyLCAweDkwQ0UsIDB4OTBDRSwgMHgwODFCLAorICAgIDB4OTBENCwgMHg5MEQ0LCAweDIwOEMsIDB4OTBENSwgMHg5MEQ1LCAweDFDMEUsIDB4OTBENiwgMHg5MEQ2LCAweDFFMUQsCisgICAgMHg5MEQ3LCAweDkwRDcsIDB4MUUyNiwgMHg5MEQ4LCAweDkwRDgsIDB4MUUyNCwgMHg5MEQ5LCAweDkwREEsIDB4MUUxRiwKKyAgICAweDkwREIsIDB4OTBEQiwgMHgxRTI1LCAweDkwREMsIDB4OTBEQywgMHgxRTI3LCAweDkwREQsIDB4OTBERCwgMHgwOUUwLAorICAgIDB4OTBERiwgMHg5MERGLCAweDFFMjIsIDB4OTBFMCwgMHg5MEUwLCAweDFFMUUsIDB4OTBFMSwgMHg5MEUxLCAweDA5REYsCisgICAgMHg5MEUyLCAweDkwRTIsIDB4MDlFMSwgMHg5MEUzLCAweDkwRTMsIDB4MUUyMSwgMHg5MEU0LCAweDkwRTQsIDB4MUUyOCwKKyAgICAweDkwRTUsIDB4OTBFNSwgMHgxRTIzLCAweDkwRTgsIDB4OTBFOCwgMHgwQkM1LCAweDkwRTksIDB4OTBFOSwgMHgyMDhGLAorICAgIDB4OTBFQSwgMHg5MEVBLCAweDIwODcsIDB4OTBFQiwgMHg5MEVDLCAweDIwOEQsIDB4OTBFRCwgMHg5MEVELCAweDBCQzYsCisgICAgMHg5MEVGLCAweDkwRUYsIDB4MjA4NiwgMHg5MEYwLCAweDkwRjAsIDB4MjA4OCwgMHg5MEYxLCAweDkwRjEsIDB4MUMwQiwKKyAgICAweDkwRjIsIDB4OTBGMywgMHgyMDhBLCAweDkwRjQsIDB4OTBGNCwgMHgyMDg5LCAweDkwRjUsIDB4OTBGNSwgMHgwRDg5LAorICAgIDB4OTBGOSwgMHg5MEY5LCAweDIzMjgsIDB4OTBGQSwgMHg5MEZBLCAweDJDQjksIDB4OTBGQiwgMHg5MEZCLCAweDIzMjksCisgICAgMHg5MEZDLCAweDkwRkMsIDB4MjMyNiwgMHg5MEZELCAweDkwRkQsIDB4MEJDNywgMHg5MEZFLCAweDkwRkUsIDB4MEQ4QiwKKyAgICAweDkwRkYsIDB4OTBGRiwgMHgyMzI1LCAweDkxMDAsIDB4OTEwMCwgMHgyMzJCLCAweDkxMDEsIDB4OTEwMSwgMHgyMzJBLAorICAgIDB4OTEwMiwgMHg5MTAyLCAweDBEODgsIDB4OTEwMywgMHg5MTAzLCAweDIzMkUsIDB4OTEwNCwgMHg5MTA0LCAweDIzMjQsCisgICAgMHg5MTA1LCAweDkxMDUsIDB4MjMyRCwgMHg5MTA2LCAweDkxMDYsIDB4MjMyMiwgMHg5MTA3LCAweDkxMDcsIDB4MjMyQywKKyAgICAweDkxMDgsIDB4OTEwOCwgMHgyMzI3LCAweDkxMDksIDB4OTEwOSwgMHgwRDhBLCAweDkxMEIsIDB4OTEwQiwgMHgyNUNELAorICAgIDB4OTEwRCwgMHg5MTBELCAweDI1QzgsIDB4OTEwRSwgMHg5MTBFLCAweDI1Q0UsIDB4OTEwRiwgMHg5MTBGLCAweDI1QzksCisgICAgMHg5MTEwLCAweDkxMTAsIDB4MjVDNywgMHg5MTExLCAweDkxMTEsIDB4MjVDQSwgMHg5MTEyLCAweDkxMTIsIDB4MEY0NSwKKyAgICAweDkxMTQsIDB4OTExNCwgMHgyNUNDLCAweDkxMTYsIDB4OTExNiwgMHgyNUNCLCAweDkxMTcsIDB4OTExNywgMHgwRjQ2LAorICAgIDB4OTExOCwgMHg5MTE4LCAweDEwQ0QsIDB4OTExOSwgMHg5MTE5LCAweDEwQ0MsIDB4OTExQSwgMHg5MTFBLCAweDI4MjcsCisgICAgMHg5MTFCLCAweDkxMUIsIDB4MjgyQSwgMHg5MTFDLCAweDkxMUMsIDB4MjgyMiwgMHg5MTFELCAweDkxMUQsIDB4MjgyNiwKKyAgICAweDkxMUUsIDB4OTExRSwgMHgxMENFLCAweDkxMUYsIDB4OTExRiwgMHgyODI1LCAweDkxMjAsIDB4OTEyMCwgMHgyODIzLAorICAgIDB4OTEyMSwgMHg5MTIxLCAweDI4MjksIDB4OTEyMiwgMHg5MTIyLCAweDI4MjQsIDB4OTEyMywgMHg5MTIzLCAweDI4MjEsCisgICAgMHg5MTI0LCAweDkxMjQsIDB4MjgyOCwgMHg5MTI2LCAweDkxMjYsIDB4MkE4NiwgMHg5MTI3LCAweDkxMjcsIDB4MTI0RSwKKyAgICAweDkxMjgsIDB4OTEyOCwgMHgyRkZCLCAweDkxMjksIDB4OTEyQSwgMHgyQTgzLCAweDkxMkIsIDB4OTEyQiwgMHgyQTgyLAorICAgIDB4OTEyQywgMHg5MTJDLCAweDIzMjMsIDB4OTEyRCwgMHg5MTJELCAweDEyNEQsIDB4OTEyRSwgMHg5MTJFLCAweDJBODcsCisgICAgMHg5MTJGLCAweDkxMkYsIDB4MkE4MSwgMHg5MTMwLCAweDkxMzAsIDB4MTI0QywgMHg5MTMxLCAweDkxMzEsIDB4MTI0RiwKKyAgICAweDkxMzIsIDB4OTEzMiwgMHgyQTg1LCAweDkxMzMsIDB4OTEzMywgMHgyQ0JBLCAweDkxMzQsIDB4OTEzNCwgMHgxMzczLAorICAgIDB4OTEzNSwgMHg5MTM2LCAweDJDQkIsIDB4OTEzOCwgMHg5MTM4LCAweDJFN0YsIDB4OTEzOSwgMHg5MTM5LCAweDE0OTgsCisgICAgMHg5MTNBLCAweDkxM0IsIDB4MkZGQywgMHg5MTNFLCAweDkxM0UsIDB4MkZGRSwgMHg5MTNGLCAweDkxM0YsIDB4MzE0OCwKKyAgICAweDkxNDAsIDB4OTE0MCwgMHgzMTQ3LCAweDkxNDEsIDB4OTE0MSwgMHgzMjQ5LCAweDkxNDMsIDB4OTE0MywgMHgzMjQ4LAorICAgIDB4OTE0NCwgMHg5MTQ1LCAweDMzMUYsIDB4OTE0NiwgMHg5MTQ2LCAweDMzMUUsIDB4OTE0NywgMHg5MTQ3LCAweDMzQzYsCisgICAgMHg5MTQ4LCAweDkxNDgsIDB4MTZERSwgMHg5MTQ5LCAweDkxNDksIDB4MDUyMCwgMHg5MTRBLCAweDkxNEEsIDB4MDgxRiwKKyAgICAweDkxNEIsIDB4OTE0QiwgMHgwODFFLCAweDkxNEMsIDB4OTE0QywgMHgwOUU0LCAweDkxNEQsIDB4OTE0RCwgMHgwOUUzLAorICAgIDB4OTE0RSwgMHg5MTRGLCAweDFFMkEsIDB4OTE1MCwgMHg5MTUwLCAweDFFMjksIDB4OTE1MSwgMHg5MTUxLCAweDNGNDksCisgICAgMHg5MTUyLCAweDkxNTIsIDB4MDlFMiwgMHg5MTUzLCAweDkxNTMsIDB4MjA5MywgMHg5MTU1LCAweDkxNTUsIDB4MjA5NCwKKyAgICAweDkxNTYsIDB4OTE1NiwgMHgyMDkwLCAweDkxNTcsIDB4OTE1NywgMHgwQkM4LCAweDkxNTgsIDB4OTE1OCwgMHgyMDkxLAorICAgIDB4OTE1OSwgMHg5MTU5LCAweDNGNDUsIDB4OTE1QSwgMHg5MTVBLCAweDIwOTIsIDB4OTE1QywgMHg5MTVDLCAweDNGNDcsCisgICAgMHg5MTVFLCAweDkxNUUsIDB4NDNFQiwgMHg5MTVGLCAweDkxNUYsIDB4MjMzMSwgMHg5MTYwLCAweDkxNjAsIDB4MjMzMywKKyAgICAweDkxNjEsIDB4OTE2MSwgMHgyMzJGLCAweDkxNjIsIDB4OTE2MiwgMHgyMzMyLCAweDkxNjMsIDB4OTE2MywgMHgwRDhDLAorICAgIDB4OTE2NCwgMHg5MTY0LCAweDIzMzAsIDB4OTE2NSwgMHg5MTY1LCAweDBEOEQsIDB4OTE2NywgMHg5MTY3LCAweDM4ODIsCisgICAgMHg5MTY4LCAweDkxNjgsIDB4MjNFMiwgMHg5MTY5LCAweDkxNjksIDB4MEY0OSwgMHg5MTZBLCAweDkxNkEsIDB4MEY0OCwKKyAgICAweDkxNkMsIDB4OTE2QywgMHgwRjQ3LCAweDkxNkUsIDB4OTE2RiwgMHgyNUNGLCAweDkxNzAsIDB4OTE3MCwgMHgzRUI4LAorICAgIDB4OTE3MiwgMHg5MTcyLCAweDI4MkMsIDB4OTE3MywgMHg5MTczLCAweDI4MkUsIDB4OTE3NCwgMHg5MTc0LCAweDEwRDIsCisgICAgMHg5MTc1LCAweDkxNzUsIDB4MTBDRiwgMHg5MTc2LCAweDkxNzYsIDB4M0U5QiwgMHg5MTc3LCAweDkxNzcsIDB4MTBEMSwKKyAgICAweDkxNzgsIDB4OTE3OCwgMHgxMEQwLCAweDkxNzksIDB4OTE3OSwgMHgyODJELCAweDkxN0EsIDB4OTE3QSwgMHgyODJCLAorICAgIDB4OTE3QywgMHg5MTdDLCAweDNGNkYsIDB4OTE4MCwgMHg5MTgwLCAweDJBOEUsIDB4OTE4MSwgMHg5MTgyLCAweDJBOEIsCisgICAgMHg5MTgzLCAweDkxODMsIDB4MTI1MywgMHg5MTg0LCAweDkxODQsIDB4MkE4RCwgMHg5MTg1LCAweDkxODYsIDB4MkE4OCwKKyAgICAweDkxODcsIDB4OTE4NywgMHgxMjUwLCAweDkxODksIDB4OTE4OSwgMHgxMjUxLCAweDkxOEEsIDB4OTE4QSwgMHgyQThBLAorICAgIDB4OTE4QiwgMHg5MThCLCAweDEyNTIsIDB4OTE4QywgMHg5MThDLCAweDQzRUMsIDB4OTE4RCwgMHg5MThELCAweDJDQzAsCisgICAgMHg5MThFLCAweDkxOEUsIDB4M0Y0RSwgMHg5MThGLCAweDkxOEYsIDB4MkNDMSwgMHg5MTkwLCAweDkxOTEsIDB4MkNCRSwKKyAgICAweDkxOTIsIDB4OTE5MiwgMHgxMzc0LCAweDkxOTMsIDB4OTE5MywgMHgyQ0JELCAweDkxOTksIDB4OTE5OSwgMHgyRTgzLAorICAgIDB4OTE5QSwgMHg5MTlBLCAweDJFODAsIDB4OTE5QiwgMHg5MTlCLCAweDJFODIsIDB4OTE5QywgMHg5MTlDLCAweDE0OUIsCisgICAgMHg5MTlELCAweDkxOUQsIDB4MkU4NiwgMHg5MTlFLCAweDkxOUUsIDB4MTQ5QSwgMHg5MTlGLCAweDkxOUYsIDB4MkU4NCwKKyAgICAweDkxQTAsIDB4OTFBMCwgMHgyRTg3LCAweDkxQTEsIDB4OTFBMSwgMHgyRTg1LCAweDkxQTIsIDB4OTFBMiwgMHgyRTgxLAorICAgIDB4OTFBMywgMHg5MUEzLCAweDE0OTksIDB4OTFBNSwgMHg5MUE1LCAweDMwMDAsIDB4OTFBNywgMHg5MUE3LCAweDMwMDEsCisgICAgMHg5MUE4LCAweDkxQTgsIDB4MkZGRiwgMHg5MUE5LCAweDkxQTksIDB4Mzg4MywgMHg5MUFBLCAweDkxQUEsIDB4MzAwMywKKyAgICAweDkxQUIsIDB4OTFBQywgMHgxNTNDLCAweDkxQUQsIDB4OTFBRCwgMHgzMTRBLCAweDkxQUUsIDB4OTFBRSwgMHgxNURDLAorICAgIDB4OTFBRiwgMHg5MUFGLCAweDMwMDIsIDB4OTFCMCwgMHg5MUIwLCAweDMxNDksIDB4OTFCMSwgMHg5MUIxLCAweDE1REIsCisgICAgMHg5MUIyLCAweDkxQjMsIDB4MzI0QywgMHg5MUI0LCAweDkxQjQsIDB4MTY1MCwgMHg5MUI1LCAweDkxQjUsIDB4MzI0QiwKKyAgICAweDkxQjYsIDB4OTFCNiwgMHg0NUVGLCAweDkxQjcsIDB4OTFCNywgMHgzMjRBLCAweDkxQjksIDB4OTFCOSwgMHgzMzIxLAorICAgIDB4OTFCQSwgMHg5MUJBLCAweDE2OTgsIDB4OTFCQiwgMHg5MUJCLCAweDNCQzgsIDB4OTFCQywgMHg5MUJDLCAweDM0NDYsCisgICAgMHg5MUJELCAweDkxQkQsIDB4MzRBMywgMHg5MUJFLCAweDkxQkUsIDB4MzRBMiwgMHg5MUMwLCAweDkxQzAsIDB4MTczMCwKKyAgICAweDkxQzEsIDB4OTFDMSwgMHgxNzRBLCAweDkxQzIsIDB4OTFDMiwgMHgzNEE0LCAweDkxQzMsIDB4OTFDMywgMHgzNTBCLAorICAgIDB4OTFDNCwgMHg5MUM0LCAweDM4ODQsIDB4OTFDNSwgMHg5MUM1LCAweDE3NUMsIDB4OTFDNiwgMHg5MUM2LCAweDA1MjEsCisgICAgMHg5MUM3LCAweDkxQzcsIDB4MDY5NSwgMHg5MUM5LCAweDkxQzksIDB4MEY0QSwgMHg5MUNCLCAweDkxQ0IsIDB4MTY1MSwKKyAgICAweDkxQ0MsIDB4OTFDQywgMHgwNTIyLCAweDkxQ0QsIDB4OTFDRCwgMHgwODIwLCAweDkxQ0UsIDB4OTFDRSwgMHgwQkM5LAorICAgIDB4OTFDRiwgMHg5MUNGLCAweDBEOEUsIDB4OTFEMCwgMHg5MUQwLCAweDE1M0UsIDB4OTFEMSwgMHg5MUQxLCAweDA2OTYsCisgICAgMHg5MUQzLCAweDkxRDMsIDB4MUMxNSwgMHg5MUQ0LCAweDkxRDQsIDB4MUMxNCwgMHg5MUQ1LCAweDkxRDUsIDB4MUUyQywKKyAgICAweDkxRDYsIDB4OTFENiwgMHg0MTVFLCAweDkxRDcsIDB4OTFENywgMHgwOUU3LCAweDkxRDgsIDB4OTFEOCwgMHgwOUU1LAorICAgIDB4OTFEOSwgMHg5MUQ5LCAweDA5RTksIDB4OTFEQSwgMHg5MURBLCAweDFFMkUsIDB4OTFEQywgMHg5MURDLCAweDA5RTgsCisgICAgMHg5MURELCAweDkxREQsIDB4MDlFNiwgMHg5MURGLCAweDkxREYsIDB4NDUzQSwgMHg5MUUyLCAweDkxRTIsIDB4MUUyRCwKKyAgICAweDkxRTMsIDB4OTFFMywgMHgwQkNDLCAweDkxRTQsIDB4OTFFNCwgMHgyMDlBLCAweDkxRTUsIDB4OTFFNSwgMHgzQzA2LAorICAgIDB4OTFFNiwgMHg5MUU2LCAweDBCQ0IsIDB4OTFFNywgMHg5MUU3LCAweDBCQ0QsIDB4OTFFOCwgMHg5MUU4LCAweDIwOUYsCisgICAgMHg5MUU5LCAweDkxRTksIDB4MEJDRiwgMHg5MUVBLCAweDkxRUIsIDB4MjA5QywgMHg5MUVDLCAweDkxRUMsIDB4MjA5NSwKKyAgICAweDkxRUQsIDB4OTFFRCwgMHgwQkNFLCAweDkxRUUsIDB4OTFFRSwgMHgyMEEwLCAweDkxRjEsIDB4OTFGMSwgMHgyMDk3LAorICAgIDB4OTFGMywgMHg5MUYzLCAweDIwOTgsIDB4OTFGNCwgMHg5MUY0LCAweDIwOTYsIDB4OTFGNSwgMHg5MUY1LCAweDBCQ0EsCisgICAgMHg5MUY3LCAweDkxRjcsIDB4MjA5RSwgMHg5MUY4LCAweDkxRjgsIDB4MjA5OSwgMHg5MUY5LCAweDkxRjksIDB4MjA5QiwKKyAgICAweDkxRkEsIDB4OTFGQSwgMHgzQUY4LCAweDkxRkQsIDB4OTFGRCwgMHgyMzNGLCAweDkxRkUsIDB4OTFGRSwgMHgzODJFLAorICAgIDB4OTFGRiwgMHg5MUZGLCAweDIzM0UsIDB4OTIwMCwgMHg5MjAwLCAweDIzM0MsIDB4OTIwMSwgMHg5MjAxLCAweDIzMzQsCisgICAgMHg5MjAyLCAweDkyMDIsIDB4MjM0MywgMHg5MjAzLCAweDkyMDMsIDB4MjMzNywgMHg5MjA0LCAweDkyMDQsIDB4MjM0MSwKKyAgICAweDkyMDUsIDB4OTIwNSwgMHgyMzQ4LCAweDkyMDYsIDB4OTIwNiwgMHgyMzQwLCAweDkyMDcsIDB4OTIwNywgMHgwRDk2LAorICAgIDB4OTIwOCwgMHg5MjA4LCAweDNFQjksIDB4OTIwOSwgMHg5MjA5LCAweDBEOTIsIDB4OTIwQSwgMHg5MjBBLCAweDIzMzUsCisgICAgMHg5MjBDLCAweDkyMEMsIDB4MjMzQiwgMHg5MjBELCAweDkyMEQsIDB4MEQ5NCwgMHg5MjBFLCAweDkyMEUsIDB4Mzg4OCwKKyAgICAweDkyMEYsIDB4OTIwRiwgMHgyMzNBLCAweDkyMTAsIDB4OTIxMCwgMHgwRDk1LCAweDkyMTEsIDB4OTIxMSwgMHgwRDk3LAorICAgIDB4OTIxMiwgMHg5MjEyLCAweDIzM0QsIDB4OTIxMywgMHg5MjEzLCAweDQ3OTMsIDB4OTIxNCwgMHg5MjE1LCAweDBEOEYsCisgICAgMHg5MjE2LCAweDkyMTYsIDB4MjM0OSwgMHg5MjE3LCAweDkyMTcsIDB4MjM0NywgMHg5MjE5LCAweDkyMTksIDB4MjM0NiwKKyAgICAweDkyMUEsIDB4OTIxQSwgMHgyMzM4LCAweDkyMUMsIDB4OTIxQywgMHgyMzQ0LCAweDkyMUUsIDB4OTIxRSwgMHgwRDkzLAorICAgIDB4OTIyMywgMHg5MjIzLCAweDBEOTEsIDB4OTIyNCwgMHg5MjI0LCAweDIzNDUsIDB4OTIyNSwgMHg5MjI1LCAweDIzMzYsCisgICAgMHg5MjI2LCAweDkyMjYsIDB4MjMzOSwgMHg5MjI3LCAweDkyMjcsIDB4MjM0MiwgMHg5MjI4LCAweDkyMjgsIDB4NDc5NSwKKyAgICAweDkyMkEsIDB4OTIyQSwgMHgzQzBFLCAweDkyMkIsIDB4OTIyQiwgMHgzQkE2LCAweDkyMkQsIDB4OTIyRCwgMHgyODUxLAorICAgIDB4OTIyRSwgMHg5MjJFLCAweDI1REEsIDB4OTIzMCwgMHg5MjMwLCAweDI1RDMsIDB4OTIzMSwgMHg5MjMxLCAweDI1RTYsCisgICAgMHg5MjMyLCAweDkyMzIsIDB4MjVFRiwgMHg5MjMzLCAweDkyMzMsIDB4MjVENiwgMHg5MjM0LCAweDkyMzQsIDB4MEY1NSwKKyAgICAweDkyMzUsIDB4OTIzNSwgMHgzQjI2LCAweDkyMzYsIDB4OTIzNiwgMHgyNUUzLCAweDkyMzcsIDB4OTIzNywgMHgwRjRCLAorICAgIDB4OTIzOCwgMHg5MjM4LCAweDBGNEQsIDB4OTIzOSwgMHg5MjM5LCAweDBGNTksIDB4OTIzQSwgMHg5MjNBLCAweDI1RDQsCisgICAgMHg5MjNDLCAweDkyM0MsIDB4NDFEMiwgMHg5MjNELCAweDkyM0QsIDB4MEY0RSwgMHg5MjNFLCAweDkyM0UsIDB4MEY1MCwKKyAgICAweDkyM0YsIDB4OTIzRiwgMHgwRjVBLCAweDkyNDAsIDB4OTI0MCwgMHgwRjRGLCAweDkyNDEsIDB4OTI0MSwgMHgzODhBLAorICAgIDB4OTI0NCwgMHg5MjQ0LCAweDM4OUEsIDB4OTI0NSwgMHg5MjQ1LCAweDBGNTgsIDB4OTI0NiwgMHg5MjQ2LCAweDI1REMsCisgICAgMHg5MjQ4LCAweDkyNDgsIDB4MjVEMSwgMHg5MjQ5LCAweDkyNDksIDB4MEY1NiwgMHg5MjRBLCAweDkyNEEsIDB4MjVEQiwKKyAgICAweDkyNEIsIDB4OTI0QiwgMHgwRjUyLCAweDkyNEMsIDB4OTI0QywgMHgyNUVELCAweDkyNEQsIDB4OTI0RCwgMHgwRjU3LAorICAgIDB4OTI0RSwgMHg5MjRFLCAweDI1RUIsIDB4OTI0RiwgMHg5MjRGLCAweDI1REYsIDB4OTI1MCwgMHg5MjUwLCAweDI1RTksCisgICAgMHg5MjUxLCAweDkyNTEsIDB4MEY1NCwgMHg5MjUyLCAweDkyNTIsIDB4MjVEMiwgMHg5MjUzLCAweDkyNTMsIDB4MjVFQywKKyAgICAweDkyNTQsIDB4OTI1NCwgMHgyNUU3LCAweDkyNTUsIDB4OTI1NSwgMHgzRTQ3LCAweDkyNTYsIDB4OTI1NiwgMHgyNUVFLAorICAgIDB4OTI1NywgMHg5MjU3LCAweDBGNEMsIDB4OTI1OCwgMHg5MjU4LCAweDQ3OTYsIDB4OTI1QSwgMHg5MjVBLCAweDBGNUIsCisgICAgMHg5MjVCLCAweDkyNUIsIDB4MEY1MSwgMHg5MjVELCAweDkyNUQsIDB4M0EwMywgMHg5MjVFLCAweDkyNUUsIDB4MjVEOCwKKyAgICAweDkyNUYsIDB4OTI1RiwgMHgzQ0UwLCAweDkyNjAsIDB4OTI2MCwgMHgyNUUwLCAweDkyNjEsIDB4OTI2MSwgMHgyNUU0LAorICAgIDB4OTI2MiwgMHg5MjYyLCAweDM4OEIsIDB4OTI2MywgMHg5MjYzLCAweDI1RTgsIDB4OTI2NCwgMHg5MjY0LCAweDBGNTMsCisgICAgMHg5MjY1LCAweDkyNjUsIDB4MjVENywgMHg5MjY2LCAweDkyNjYsIDB4MjVENSwgMHg5MjY3LCAweDkyNjcsIDB4MjVFMSwKKyAgICAweDkyNkIsIDB4OTI2QiwgMHg0Nzk3LCAweDkyNkMsIDB4OTI2QywgMHgyNURFLCAweDkyNkQsIDB4OTI2RCwgMHgyNURELAorICAgIDB4OTI2RSwgMHg5MjZFLCAweDNEMDUsIDB4OTI2RiwgMHg5MjZGLCAweDI1RTIsIDB4OTI3MCwgMHg5MjcwLCAweDI1RTUsCisgICAgMHg5MjcyLCAweDkyNzIsIDB4MjVFQSwgMHg5Mjc2LCAweDkyNzYsIDB4MjgzMSwgMHg5Mjc3LCAweDkyNzcsIDB4M0M2NCwKKyAgICAweDkyNzgsIDB4OTI3OCwgMHgxMEQzLCAweDkyNzksIDB4OTI3OSwgMHgyODNCLCAweDkyN0EsIDB4OTI3QSwgMHgyODMzLAorICAgIDB4OTI3QiwgMHg5MjdCLCAweDEwRDksIDB4OTI3QywgMHg5MjdDLCAweDEwREQsIDB4OTI3RCwgMHg5MjdELCAweDI4NDQsCisgICAgMHg5MjdFLCAweDkyN0UsIDB4Mjg0QywgMHg5MjdGLCAweDkyN0YsIDB4MjgzRCwgMHg5MjgwLCAweDkyODAsIDB4MTBENSwKKyAgICAweDkyODEsIDB4OTI4MSwgMHgzRTAxLCAweDkyODIsIDB4OTI4MiwgMHgyODQxLCAweDkyODMsIDB4OTI4MywgMHgyNUQ5LAorICAgIDB4OTI4NCwgMHg5Mjg0LCAweDNDQjksIDB4OTI4NSwgMHg5Mjg1LCAweDEwRDYsIDB4OTI4NiwgMHg5Mjg2LCAweDI4NDgsCisgICAgMHg5Mjg3LCAweDkyODcsIDB4Mjg0RCwgMHg5Mjg4LCAweDkyODgsIDB4Mjg0NSwgMHg5Mjg5LCAweDkyODksIDB4M0FCNSwKKyAgICAweDkyOEEsIDB4OTI4QSwgMHgyODQ3LCAweDkyOEIsIDB4OTI4QiwgMHgyODUwLCAweDkyOEMsIDB4OTI4QywgMHgyODQ5LAorICAgIDB4OTI4RCwgMHg5MjhELCAweDI4MzcsIDB4OTI4RSwgMHg5MjhFLCAweDI4NDAsIDB4OTI4RiwgMHg5MjhGLCAweDQ2QkQsCisgICAgMHg5MjkxLCAweDkyOTEsIDB4MTBERSwgMHg5MjkzLCAweDkyOTMsIDB4MTBEQSwgMHg5Mjk0LCAweDkyOTQsIDB4MjgzNSwKKyAgICAweDkyOTUsIDB4OTI5NSwgMHgyODQyLCAweDkyOTYsIDB4OTI5NiwgMHgxMEQ4LCAweDkyOTcsIDB4OTI5NywgMHgyODNDLAorICAgIDB4OTI5OCwgMHg5Mjk4LCAweDEwRDcsIDB4OTI5OSwgMHg5Mjk5LCAweDI4NEEsIDB4OTI5QSwgMHg5MjlBLCAweDI4MzksCisgICAgMHg5MjlCLCAweDkyOUIsIDB4MjgzMiwgMHg5MjlDLCAweDkyOUMsIDB4MTBEQiwgMHg5MjlELCAweDkyOUQsIDB4Mjg0RiwKKyAgICAweDkyQTAsIDB4OTJBMCwgMHgyODM0LCAweDkyQTEsIDB4OTJBMSwgMHgyODQ2LCAweDkyQTIsIDB4OTJBMiwgMHgyODQzLAorICAgIDB4OTJBMywgMHg5MkEzLCAweDI4M0UsIDB4OTJBNCwgMHg5MkE0LCAweDI4MzAsIDB4OTJBNSwgMHg5MkE1LCAweDI4MkYsCisgICAgMHg5MkE2LCAweDkyQTYsIDB4MjgzOCwgMHg5MkE3LCAweDkyQTcsIDB4Mjg0QiwgMHg5MkE4LCAweDkyQTgsIDB4MTBEQywKKyAgICAweDkyQTksIDB4OTJBOSwgMHgyODRFLCAweDkyQUEsIDB4OTJBQSwgMHgyODM2LCAweDkyQUIsIDB4OTJBQiwgMHgyODNBLAorICAgIDB4OTJBQywgMHg5MkFDLCAweDEwRDQsIDB4OTJBRSwgMHg5MkFFLCAweDQ3OTksIDB4OTJCMSwgMHg5MkIxLCAweDQ3OTgsCisgICAgMHg5MkIyLCAweDkyQjIsIDB4MTI1RiwgMHg5MkIzLCAweDkyQjMsIDB4MTI1QSwgMHg5MkI0LCAweDkyQjQsIDB4MkFCMCwKKyAgICAweDkyQjUsIDB4OTJCNSwgMHgyQUFDLCAweDkyQjYsIDB4OTJCNiwgMHgyQTk0LCAweDkyQjcsIDB4OTJCNywgMHgxMjU2LAorICAgIDB4OTJCOSwgMHg5MkI5LCAweDM2RTksIDB4OTJCQSwgMHg5MkJBLCAweDNCRjUsIDB4OTJCQiwgMHg5MkJCLCAweDEyNTUsCisgICAgMHg5MkJDLCAweDkyQkMsIDB4MTI1QiwgMHg5MkJFLCAweDkyQkUsIDB4M0M2MCwgMHg5MkJGLCAweDkyQkYsIDB4NDc5QSwKKyAgICAweDkyQzAsIDB4OTJDMCwgMHgyQTkyLCAweDkyQzEsIDB4OTJDMSwgMHgxMjU5LCAweDkyQzIsIDB4OTJDMiwgMHgyQTlFLAorICAgIDB4OTJDMywgMHg5MkM0LCAweDJBOTAsIDB4OTJDNSwgMHg5MkM1LCAweDEyNTQsIDB4OTJDNiwgMHg5MkM2LCAweDJBQUYsCisgICAgMHg5MkM3LCAweDkyQzcsIDB4MTI1RCwgMHg5MkM4LCAweDkyQzgsIDB4MkFBMSwgMHg5MkM5LCAweDkyQzksIDB4MkFBNiwKKyAgICAweDkyQ0EsIDB4OTJDQSwgMHgyQUEwLCAweDkyQ0IsIDB4OTJDQiwgMHgyQ0QzLCAweDkyQ0MsIDB4OTJDQywgMHgyQTlDLAorICAgIDB4OTJDRCwgMHg5MkNELCAweDJBQTQsIDB4OTJDRSwgMHg5MkNFLCAweDJBQTIsIDB4OTJDRiwgMHg5MkNGLCAweDJBOTUsCisgICAgMHg5MkQwLCAweDkyRDAsIDB4MkE4RiwgMHg5MkQxLCAweDkyRDEsIDB4MkFBQSwgMHg5MkQyLCAweDkyRDIsIDB4MTI1QywKKyAgICAweDkyRDMsIDB4OTJEMywgMHgyQUFCLCAweDkyRDQsIDB4OTJENCwgMHgzODYxLCAweDkyRDUsIDB4OTJENSwgMHgyQUE1LAorICAgIDB4OTJENywgMHg5MkQ3LCAweDJBOUEsIDB4OTJEOCwgMHg5MkQ4LCAweDJBOTgsIDB4OTJEOSwgMHg5MkQ5LCAweDJBOTMsCisgICAgMHg5MkRCLCAweDkyREIsIDB4NDAwQywgMHg5MkRELCAweDkyREQsIDB4MkE5QiwgMHg5MkRFLCAweDkyREUsIDB4MkFBOCwKKyAgICAweDkyREYsIDB4OTJERiwgMHgyQTk3LCAweDkyRTAsIDB4OTJFMCwgMHgyQUE3LCAweDkyRTEsIDB4OTJFMSwgMHgyQUFELAorICAgIDB4OTJFMywgMHg5MkUzLCAweDQ3OUIsIDB4OTJFNCwgMHg5MkU0LCAweDEyNTgsIDB4OTJFNSwgMHg5MkU1LCAweDNDQTIsCisgICAgMHg5MkU2LCAweDkyRTYsIDB4MkFBMywgMHg5MkU3LCAweDkyRTcsIDB4MkFBOSwgMHg5MkU4LCAweDkyRTgsIDB4MkE5RiwKKyAgICAweDkyRTksIDB4OTJFOSwgMHgyQTk5LCAweDkyRUEsIDB4OTJFQSwgMHgxMjU3LCAweDkyRUIsIDB4OTJFQiwgMHg0NzlDLAorICAgIDB4OTJFQywgMHg5MkVDLCAweDM5NjQsIDB4OTJFRSwgMHg5MkVFLCAweDI4M0YsIDB4OTJFRiwgMHg5MkVGLCAweDJBOUQsCisgICAgMHg5MkYwLCAweDkyRjAsIDB4MTI1RSwgMHg5MkYxLCAweDkyRjEsIDB4MkE5NiwgMHg5MkYyLCAweDkyRjIsIDB4M0FCMiwKKyAgICAweDkyRjMsIDB4OTJGNCwgMHg0NzlELCAweDkyRjYsIDB4OTJGNiwgMHgzQzA0LCAweDkyRjcsIDB4OTJGNywgMHgyQ0Q4LAorICAgIDB4OTJGOCwgMHg5MkY4LCAweDEzNzcsIDB4OTJGOSwgMHg5MkY5LCAweDJDRDcsIDB4OTJGQSwgMHg5MkZBLCAweDJDRDUsCisgICAgMHg5MkZCLCAweDkyRkIsIDB4MkNFNywgMHg5MkZDLCAweDkyRkMsIDB4MTM3QiwgMHg5MkZELCAweDkyRkQsIDB4NDc5RiwKKyAgICAweDkyRkUsIDB4OTJGRSwgMHgyQ0U0LCAweDkyRkYsIDB4OTJGRiwgMHgyQ0RDLCAweDkzMDAsIDB4OTMwMCwgMHgyQ0U2LAorICAgIDB4OTMwMSwgMHg5MzAxLCAweDJDQ0UsIDB4OTMwMiwgMHg5MzAyLCAweDJDREEsIDB4OTMwMywgMHg5MzAzLCAweDM4NjcsCisgICAgMHg5MzA0LCAweDkzMDQsIDB4MTM3RCwgMHg5MzA2LCAweDkzMDYsIDB4MkNDNiwgMHg5MzA3LCAweDkzMDcsIDB4M0IxMSwKKyAgICAweDkzMDgsIDB4OTMwOCwgMHgyQ0M0LCAweDkzMDksIDB4OTMwOSwgMHgyQ0U1LCAweDkzMEIsIDB4OTMwQiwgMHgyQ0UzLAorICAgIDB4OTMwQywgMHg5MzBDLCAweDJDRTIsIDB4OTMwRCwgMHg5MzBELCAweDJDRDIsIDB4OTMwRSwgMHg5MzBFLCAweDJDRDEsCisgICAgMHg5MzBGLCAweDkzMEYsIDB4MkNDNywgMHg5MzEwLCAweDkzMTAsIDB4MTM3RiwgMHg5MzEyLCAweDkzMTIsIDB4MkNDRCwKKyAgICAweDkzMTMsIDB4OTMxMywgMHgyQ0Q2LCAweDkzMTQsIDB4OTMxNCwgMHgyQ0UxLCAweDkzMTUsIDB4OTMxNSwgMHgxMzgyLAorICAgIDB4OTMxNiwgMHg5MzE2LCAweDJDRTgsIDB4OTMxOCwgMHg5MzE4LCAweDE0QTMsIDB4OTMxOSwgMHg5MzE5LCAweDEzODQsCisgICAgMHg5MzFBLCAweDkzMUEsIDB4MTM3RSwgMHg5MzFCLCAweDkzMUIsIDB4MkNDQiwgMHg5MzFELCAweDkzMUQsIDB4MkNENCwKKyAgICAweDkzMUUsIDB4OTMxRSwgMHgyQ0MzLCAweDkzMUYsIDB4OTMxRiwgMHgyQ0M1LCAweDkzMjAsIDB4OTMyMCwgMHgxMzc1LAorICAgIDB4OTMyMSwgMHg5MzIxLCAweDEzODEsIDB4OTMyMiwgMHg5MzIyLCAweDEzN0EsIDB4OTMyMywgMHg5MzIzLCAweDJDQ0MsCisgICAgMHg5MzI0LCAweDkzMjQsIDB4MkNEQiwgMHg5MzI1LCAweDkzMjUsIDB4MkFBRSwgMHg5MzI2LCAweDkzMjYsIDB4MTM4MCwKKyAgICAweDkzMjcsIDB4OTMyNywgMHgyQ0MyLCAweDkzMjgsIDB4OTMyOCwgMHgxNDlFLCAweDkzMjksIDB4OTMyOSwgMHgyQ0RELAorICAgIDB4OTMyQSwgMHg5MzJBLCAweDJDRTAsIDB4OTMyQiwgMHg5MzJCLCAweDEzN0MsIDB4OTMyQywgMHg5MzJDLCAweDM4OTIsCisgICAgMHg5MzJELCAweDkzMkQsIDB4MkNEMCwgMHg5MzJFLCAweDkzMkUsIDB4MTM4MywgMHg5MzJGLCAweDkzMkYsIDB4MTM3OSwKKyAgICAweDkzMzAsIDB4OTMzMCwgMHgzRTAzLCAweDkzMzEsIDB4OTMzMSwgMHgzQ0JELCAweDkzMzMsIDB4OTMzMywgMHgxMzc4LAorICAgIDB4OTMzNCwgMHg5MzM0LCAweDJDRDksIDB4OTMzNSwgMHg5MzM1LCAweDJDREYsIDB4OTMzNiwgMHg5MzM2LCAweDEzNzYsCisgICAgMHg5MzM4LCAweDkzMzgsIDB4MkNDOSwgMHg5MzM5LCAweDkzMzksIDB4MkNERSwgMHg5MzNDLCAweDkzM0MsIDB4MkNDQSwKKyAgICAweDkzNDAsIDB4OTM0MCwgMHg0MTU1LCAweDkzNDEsIDB4OTM0MSwgMHg0Mjc3LCAweDkzNDIsIDB4OTM0MiwgMHgzQUZBLAorICAgIDB4OTM0MywgMHg5MzQzLCAweDQ3QTAsIDB4OTM0NCwgMHg5MzQ0LCAweDQwMTYsIDB4OTM0NSwgMHg5MzQ1LCAweDNFNzQsCisgICAgMHg5MzQ2LCAweDkzNDYsIDB4MkNDRiwgMHg5MzQ3LCAweDkzNDcsIDB4MkU4RCwgMHg5MzQ4LCAweDkzNDgsIDB4M0M2MSwKKyAgICAweDkzNDksIDB4OTM0OSwgMHgyRTkyLCAweDkzNEEsIDB4OTM0QSwgMHgxNEEwLCAweDkzNEIsIDB4OTM0QiwgMHgxNEEyLAorICAgIDB4OTM0QywgMHg5MzRDLCAweDJFOTgsIDB4OTM0RCwgMHg5MzRELCAweDE0OUMsIDB4OTM0RSwgMHg5MzRFLCAweDJFQTYsCisgICAgMHg5MzRGLCAweDkzNEYsIDB4MkU5RSwgMHg5MzUwLCAweDkzNTEsIDB4MkU5MywgMHg5MzUyLCAweDkzNTIsIDB4MkU5RCwKKyAgICAweDkzNTQsIDB4OTM1NCwgMHgxNEE5LCAweDkzNTUsIDB4OTM1NSwgMHgyRTlDLCAweDkzNTYsIDB4OTM1NiwgMHgyRThDLAorICAgIDB4OTM1NywgMHg5MzU3LCAweDJFOUIsIDB4OTM1OCwgMHg5MzU4LCAweDJFOEYsIDB4OTM1OSwgMHg5MzU5LCAweDJFQTcsCisgICAgMHg5MzVBLCAweDkzNUEsIDB4MTRBOCwgMHg5MzVCLCAweDkzNUIsIDB4MTRBNiwgMHg5MzVDLCAweDkzNUMsIDB4MkU5MCwKKyAgICAweDkzNUUsIDB4OTM1RSwgMHgyRUEzLCAweDkzNUYsIDB4OTM1RiwgMHgzQ0JCLCAweDkzNjAsIDB4OTM2MCwgMHgyRTk1LAorICAgIDB4OTM2MSwgMHg5MzYxLCAweDJFQTIsIDB4OTM2MiwgMHg5MzYyLCAweDQyNjgsIDB4OTM2MywgMHg5MzYzLCAweDJFQTQsCisgICAgMHg5MzY0LCAweDkzNjQsIDB4MkU4QiwgMHg5MzY1LCAweDkzNjUsIDB4MTRBMSwgMHg5MzY2LCAweDkzNjYsIDB4NDZCQywKKyAgICAweDkzNjcsIDB4OTM2NywgMHgyRUE1LCAweDkzNjgsIDB4OTM2OCwgMHgzQkYwLCAweDkzNjksIDB4OTM2OSwgMHgzOTYxLAorICAgIDB4OTM2QSwgMHg5MzZBLCAweDJFOTksIDB4OTM2QiwgMHg5MzZCLCAweDM4OTMsIDB4OTM2QywgMHg5MzZDLCAweDE0QTUsCisgICAgMHg5MzZELCAweDkzNkQsIDB4MkU5NiwgMHg5MzZFLCAweDkzNkUsIDB4MzlFOCwgMHg5MzcwLCAweDkzNzAsIDB4MTRBNywKKyAgICAweDkzNzEsIDB4OTM3MSwgMHgyRTlGLCAweDkzNzMsIDB4OTM3MywgMHgzODlFLCAweDkzNzQsIDB4OTM3NCwgMHgzQ0U0LAorICAgIDB4OTM3NSwgMHg5Mzc1LCAweDE0OUYsIDB4OTM3NiwgMHg5Mzc2LCAweDJFOTEsIDB4OTM3NywgMHg5Mzc3LCAweDJFQTAsCisgICAgMHg5Mzc4LCAweDkzNzgsIDB4MzhGOSwgMHg5Mzc5LCAweDkzNzksIDB4MkU5QSwgMHg5MzdBLCAweDkzN0EsIDB4MkNDOCwKKyAgICAweDkzN0IsIDB4OTM3QiwgMHgyRUExLCAweDkzN0MsIDB4OTM3QywgMHgyRThFLCAweDkzN0QsIDB4OTM3RCwgMHgzQzI1LAorICAgIDB4OTM3RSwgMHg5MzdFLCAweDE0QTQsIDB4OTM4MCwgMHg5MzgwLCAweDMwMTQsIDB4OTM4MSwgMHg5MzgxLCAweDM5NjUsCisgICAgMHg5MzgyLCAweDkzODIsIDB4MTQ5RCwgMHg5MzgzLCAweDkzODMsIDB4MkU4OSwgMHg5Mzg0LCAweDkzODQsIDB4NDdBMSwKKyAgICAweDkzODUsIDB4OTM4NSwgMHg0MkJELCAweDkzODYsIDB4OTM4NiwgMHgzQ0MwLCAweDkzODcsIDB4OTM4NywgMHgzQUUwLAorICAgIDB4OTM4OCwgMHg5Mzg4LCAweDMwMTEsIDB4OTM4OSwgMHg5Mzg5LCAweDMwMEEsIDB4OTM4QSwgMHg5MzhBLCAweDE1NDAsCisgICAgMHg5MzhDLCAweDkzOEMsIDB4MzAwNSwgMHg5MzhELCAweDkzOEQsIDB4MzAxNSwgMHg5MzhFLCAweDkzOEUsIDB4MzAwQywKKyAgICAweDkzOEYsIDB4OTM4RiwgMHgyRTk3LCAweDkzOTAsIDB4OTM5MCwgMHgzRDNDLCAweDkzOTEsIDB4OTM5MSwgMHgzMDE3LAorICAgIDB4OTM5MiwgMHg5MzkyLCAweDMwMDYsIDB4OTM5NCwgMHg5Mzk0LCAweDE1M0YsIDB4OTM5NSwgMHg5Mzk1LCAweDMwMTAsCisgICAgMHg5Mzk2LCAweDkzOTYsIDB4MTU0MSwgMHg5Mzk3LCAweDkzOTcsIDB4MTU0OSwgMHg5Mzk4LCAweDkzOTgsIDB4MTU0NywKKyAgICAweDkzOTksIDB4OTM5OSwgMHgzMDEyLCAweDkzOUEsIDB4OTM5QSwgMHgxNTQ4LCAweDkzOUIsIDB4OTM5QiwgMHgzMDA4LAorICAgIDB4OTM5QywgMHg5MzlDLCAweDM5QUMsIDB4OTM5RCwgMHg5MzlELCAweDMwMDksIDB4OTM5RSwgMHg5MzlFLCAweDMwMEUsCisgICAgMHg5MzlGLCAweDkzOUYsIDB4MzAxMywgMHg5M0EwLCAweDkzQTAsIDB4M0FCMSwgMHg5M0ExLCAweDkzQTEsIDB4MkU4OCwKKyAgICAweDkzQTIsIDB4OTNBMiwgMHgxNTQyLCAweDkzQTMsIDB4OTNBMywgMHgzMDFDLCAweDkzQTQsIDB4OTNBNCwgMHgzMDE5LAorICAgIDB4OTNBNSwgMHg5M0E1LCAweDMxNjAsIDB4OTNBNiwgMHg5M0E2LCAweDMwMEYsIDB4OTNBNywgMHg5M0E3LCAweDMwMEIsCisgICAgMHg5M0E4LCAweDkzQTgsIDB4MzAxQSwgMHg5M0E5LCAweDkzQTksIDB4MzE1NSwgMHg5M0FBLCAweDkzQUEsIDB4MzAwRCwKKyAgICAweDkzQUMsIDB4OTNBQywgMHgxNTQ1LCAweDkzQUQsIDB4OTNBRCwgMHg0N0EyLCAweDkzQUUsIDB4OTNBRSwgMHgxNTQ0LAorICAgIDB4OTNBRiwgMHg5M0FGLCAweDJFOEEsIDB4OTNCMCwgMHg5M0IwLCAweDE1NDYsIDB4OTNCMSwgMHg5M0IxLCAweDMwMTYsCisgICAgMHg5M0IyLCAweDkzQjIsIDB4MzAxOCwgMHg5M0IzLCAweDkzQjMsIDB4MTU0MywgMHg5M0I0LCAweDkzQjQsIDB4MzAxQiwKKyAgICAweDkzQjUsIDB4OTNCNSwgMHgzMDA0LCAweDkzQjcsIDB4OTNCNywgMHgzMDA3LCAweDkzQjgsIDB4OTNCOCwgMHgzQzkwLAorICAgIDB4OTNCQSwgMHg5M0JBLCAweDQzRjcsIDB4OTNCQiwgMHg5M0JCLCAweDNDOEYsIDB4OTNCRCwgMHg5M0JELCAweDNBMjcsCisgICAgMHg5M0JGLCAweDkzQkYsIDB4M0UyRCwgMHg5M0MwLCAweDkzQzAsIDB4MzE1RSwgMHg5M0MyLCAweDkzQzIsIDB4MzE0RSwKKyAgICAweDkzQzMsIDB4OTNDMywgMHgxNUUwLCAweDkzQzQsIDB4OTNDNCwgMHgzMTVDLCAweDkzQzYsIDB4OTNDNiwgMHgzOUFBLAorICAgIDB4OTNDNywgMHg5M0M3LCAweDMxNEMsIDB4OTNDOCwgMHg5M0M4LCAweDE1RTEsIDB4OTNDQSwgMHg5M0NBLCAweDMxNTcsCisgICAgMHg5M0NCLCAweDkzQ0IsIDB4Mzk2NiwgMHg5M0NDLCAweDkzQ0MsIDB4MzE1MywgMHg5M0NELCAweDkzQ0QsIDB4MTVFNiwKKyAgICAweDkzQ0UsIDB4OTNDRSwgMHgzMTVELCAweDkzQ0YsIDB4OTNDRiwgMHgzMTRELCAweDkzRDAsIDB4OTNEMCwgMHgzMTUwLAorICAgIDB4OTNEMSwgMHg5M0QxLCAweDE1REUsIDB4OTNEMiwgMHg5M0QyLCAweDMxNUYsIDB4OTNEMywgMHg5M0QzLCAweDQwRTEsCisgICAgMHg5M0Q0LCAweDkzRDQsIDB4MzE1OCwgMHg5M0Q1LCAweDkzRDUsIDB4MzE1QiwgMHg5M0Q2LCAweDkzRDYsIDB4MTVFNCwKKyAgICAweDkzRDcsIDB4OTNENywgMHgxNUU5LCAweDkzRDgsIDB4OTNEOCwgMHgxNUU3LCAweDkzRDksIDB4OTNEOSwgMHgzMTU0LAorICAgIDB4OTNEQSwgMHg5M0RBLCAweDMxNEYsIDB4OTNEQiwgMHg5M0RCLCAweDNDNUYsIDB4OTNEQywgMHg5M0RELCAweDE1RTIsCisgICAgMHg5M0RFLCAweDkzREUsIDB4MzE0QiwgMHg5M0RGLCAweDkzREYsIDB4MTVERiwgMHg5M0UwLCAweDkzRTAsIDB4M0EyMCwKKyAgICAweDkzRTEsIDB4OTNFMSwgMHgxNURELCAweDkzRTIsIDB4OTNFMiwgMHgxNUU1LCAweDkzRTMsIDB4OTNFMywgMHgzMTVBLAorICAgIDB4OTNFNCwgMHg5M0U0LCAweDE1RTgsIDB4OTNFNiwgMHg5M0U2LCAweDMxNTYsIDB4OTNFNywgMHg5M0U3LCAweDMxNjEsCisgICAgMHg5M0U4LCAweDkzRTgsIDB4MTVFQSwgMHg5M0VDLCAweDkzRUMsIDB4MzE1MiwgMHg5M0VFLCAweDkzRUUsIDB4MzE1OSwKKyAgICAweDkzRjAsIDB4OTNGMCwgMHg0MjNGLCAweDkzRjEsIDB4OTNGMSwgMHg0MkFBLCAweDkzRjMsIDB4OTNGMywgMHgzOTYyLAorICAgIDB4OTNGNSwgMHg5M0Y1LCAweDMyNUEsIDB4OTNGNiwgMHg5M0Y2LCAweDMyNjksIDB4OTNGNywgMHg5M0Y3LCAweDMyNUMsCisgICAgMHg5M0Y4LCAweDkzRjgsIDB4MzI2MywgMHg5M0Y5LCAweDkzRjksIDB4MzE1MSwgMHg5M0ZBLCAweDkzRkEsIDB4MzI2MSwKKyAgICAweDkzRkIsIDB4OTNGQiwgMHgzMjUwLCAweDkzRkMsIDB4OTNGQywgMHgzMjY3LCAweDkzRkQsIDB4OTNGRCwgMHgxNjU0LAorICAgIDB4OTNGRSwgMHg5M0ZFLCAweDMyNTQsIDB4OTNGRiwgMHg5M0ZGLCAweDMyNjYsIDB4OTQwMCwgMHg5NDAwLCAweDMyNUIsCisgICAgMHg5NDAxLCAweDk0MDEsIDB4M0NENCwgMHg5NDAzLCAweDk0MDMsIDB4MTY1MywgMHg5NDA0LCAweDk0MDQsIDB4M0JDOSwKKyAgICAweDk0MDYsIDB4OTQwNiwgMHgzMjZCLCAweDk0MDcsIDB4OTQwNywgMHgzMjVELCAweDk0MDgsIDB4OTQwOCwgMHgzQTI1LAorICAgIDB4OTQwOSwgMHg5NDA5LCAweDMyNjIsIDB4OTQwQSwgMHg5NDBBLCAweDMyNjUsIDB4OTQwQiwgMHg5NDBCLCAweDMyNEUsCisgICAgMHg5NDBDLCAweDk0MEMsIDB4MzI2OCwgMHg5NDBELCAweDk0MEQsIDB4MzI1OSwgMHg5NDBFLCAweDk0MEUsIDB4MzI1RSwKKyAgICAweDk0MEYsIDB4OTQwRiwgMHgzMjUyLCAweDk0MTAsIDB4OTQxMCwgMHgzMjU2LCAweDk0MTEsIDB4OTQxMSwgMHgzMjZBLAorICAgIDB4OTQxMiwgMHg5NDEyLCAweDMyNjAsIDB4OTQxMywgMHg5NDEzLCAweDMyNEYsIDB4OTQxNCwgMHg5NDE0LCAweDMyNTMsCisgICAgMHg5NDE1LCAweDk0MTUsIDB4MzI1NSwgMHg5NDE2LCAweDk0MTYsIDB4MzI1RiwgMHg5NDE3LCAweDk0MTcsIDB4NDdBNSwKKyAgICAweDk0MTgsIDB4OTQxOCwgMHgxNjUyLCAweDk0MTksIDB4OTQxOSwgMHgzMjU4LCAweDk0MUIsIDB4OTQxQiwgMHg0MTQ4LAorICAgIDB4OTQxRCwgMHg5NDFELCAweDQ3QTYsIDB4OTQyMCwgMHg5NDIwLCAweDMyNTEsIDB4OTQyNCwgMHg5NDI0LCAweDM5NDMsCisgICAgMHg5NDI1LCAweDk0MjUsIDB4MzhEMCwgMHg5NDI2LCAweDk0MjYsIDB4MzhBMywgMHg5NDI3LCAweDk0MjcsIDB4M0JDRCwKKyAgICAweDk0MjgsIDB4OTQyOCwgMHgzMjU3LCAweDk0MjksIDB4OTQyOSwgMHgzMzI1LCAweDk0MkEsIDB4OTQyQSwgMHgzMzI5LAorICAgIDB4OTQyQiwgMHg5NDJCLCAweDE2OUYsIDB4OTQyQywgMHg5NDJDLCAweDMzMkIsIDB4OTQyRCwgMHg5NDJELCAweDQ3QTcsCisgICAgMHg5NDJFLCAweDk0MkUsIDB4MTY5OSwgMHg5NDMwLCAweDk0MzAsIDB4MzMyNywgMHg5NDMxLCAweDk0MzEsIDB4MzMyRCwKKyAgICAweDk0MzIsIDB4OTQzMiwgMHgxNjlFLCAweDk0MzMsIDB4OTQzMywgMHgxNjlBLCAweDk0MzUsIDB4OTQzNSwgMHgxNjlCLAorICAgIDB4OTQzNiwgMHg5NDM2LCAweDMzMjQsIDB4OTQzNywgMHg5NDM3LCAweDMzMkEsIDB4OTQzOCwgMHg5NDM4LCAweDE2OUQsCisgICAgMHg5NDM5LCAweDk0MzksIDB4MzMyOCwgMHg5NDNBLCAweDk0M0EsIDB4MTY5QywgMHg5NDNCLCAweDk0M0IsIDB4MzMyMywKKyAgICAweDk0M0MsIDB4OTQzQywgMHgzMjY0LCAweDk0M0QsIDB4OTQzRCwgMHgzMzI2LCAweDk0M0UsIDB4OTQzRSwgMHg0N0E4LAorICAgIDB4OTQzRiwgMHg5NDNGLCAweDMzMjIsIDB4OTQ0MCwgMHg5NDQwLCAweDMzMkMsIDB4OTQ0MiwgMHg5NDQyLCAweDQyNzIsCisgICAgMHg5NDQzLCAweDk0NDMsIDB4NDI3NSwgMHg5NDQ0LCAweDk0NDQsIDB4MTZERiwgMHg5NDQ1LCAweDk0NDUsIDB4MzNDRCwKKyAgICAweDk0NDYsIDB4OTQ0NiwgMHgzM0QwLCAweDk0NDcsIDB4OTQ0NywgMHgzM0NDLCAweDk0NDgsIDB4OTQ0OSwgMHgzM0NFLAorICAgIDB4OTQ0QSwgMHg5NDRCLCAweDMzQzksIDB4OTQ0QywgMHg5NDRDLCAweDMzQzcsIDB4OTQ0RCwgMHg5NDRELCAweDNDNjUsCisgICAgMHg5NDRGLCAweDk0NEYsIDB4MzNDQiwgMHg5NDUwLCAweDk0NTAsIDB4MzNDOCwgMHg5NDUxLCAweDk0NTIsIDB4MTZFMCwKKyAgICAweDk0NTQsIDB4OTQ1NCwgMHg0N0FBLCAweDk0NTUsIDB4OTQ1NSwgMHgzNDQ4LCAweDk0NTcsIDB4OTQ1NywgMHgzNDRBLAorICAgIDB4OTQ1OCwgMHg5NDU4LCAweDNDMzAsIDB4OTQ1QiwgMHg5NDVCLCAweDM4OUYsIDB4OTQ1RCwgMHg5NDVELCAweDM0NDksCisgICAgMHg5NDVFLCAweDk0NUUsIDB4MzQ0QiwgMHg5NDYwLCAweDk0NjAsIDB4MTcwRSwgMHg5NDYyLCAweDk0NjIsIDB4MzQ0NywKKyAgICAweDk0NjMsIDB4OTQ2MywgMHgxNzBELCAweDk0NjQsIDB4OTQ2NCwgMHgxNzBGLCAweDk0NjUsIDB4OTQ2NSwgMHgzRERFLAorICAgIDB4OTQ2NywgMHg5NDY3LCAweDNBQjgsIDB4OTQ2OCwgMHg5NDY5LCAweDM0QTYsIDB4OTQ2QSwgMHg5NDZBLCAweDE3MzEsCisgICAgMHg5NDZCLCAweDk0NkIsIDB4MzRBNSwgMHg5NDZDLCAweDk0NkMsIDB4Mzc3RSwgMHg5NDZELCAweDk0NkQsIDB4MzRFRCwKKyAgICAweDk0NkUsIDB4OTQ2RSwgMHgzNEVDLCAweDk0NkYsIDB4OTQ2RiwgMHgzNEVFLCAweDk0NzAsIDB4OTQ3MCwgMHgxNzRDLAorICAgIDB4OTQ3MSwgMHg5NDcxLCAweDM0RUYsIDB4OTQ3MiwgMHg5NDcyLCAweDE3NEIsIDB4OTQ3MywgMHg5NDczLCAweDM0RjAsCisgICAgMHg5NDc0LCAweDk0NzQsIDB4MzUwQywgMHg5NDc1LCAweDk0NzUsIDB4MzUwRiwgMHg5NDc2LCAweDk0NzYsIDB4MzUwRSwKKyAgICAweDk0NzcsIDB4OTQ3NywgMHgxNzU1LCAweDk0NzgsIDB4OTQ3OCwgMHgzNTBELCAweDk0NzksIDB4OTQ3OSwgMHg0N0FCLAorICAgIDB4OTQ3QiwgMHg5NDdCLCAweDQxOUIsIDB4OTQ3QywgMHg5NDdDLCAweDE3NUYsIDB4OTQ3RCwgMHg5NDdFLCAweDE3NUQsCisgICAgMHg5NDdGLCAweDk0N0YsIDB4MTc2NCwgMHg5NDgwLCAweDk0ODEsIDB4MzUzOSwgMHg5NDgyLCAweDk0ODIsIDB4MzUzOCwKKyAgICAweDk0ODMsIDB4OTQ4MywgMHgzNTQwLCAweDk0ODUsIDB4OTQ4NSwgMHg0NTA3LCAweDk0OUYsIDB4OTQ5RiwgMHg0ODg1LAorICAgIDB4OTRBMiwgMHg5NEEyLCAweDQ1MUIsIDB4OTRDMSwgMHg5NEMxLCAweDQ3RTEsIDB4OTRDMywgMHg5NEMzLCAweDQ3REYsCisgICAgMHg5NERDLCAweDk0REMsIDB4NDdENywgMHg5NEY2LCAweDk0RjYsIDB4NDdEMiwgMHg5NTJELCAweDk1MkQsIDB4NDdBQywKKyAgICAweDk1NDcsIDB4OTU0NywgMHg0OEJGLCAweDk1NzcsIDB4OTU3NywgMHgwNjk3LCAweDk1NzgsIDB4OTU3OCwgMHg0NTA4LAorICAgIDB4OTU3QSwgMHg5NTdBLCAweDIwQTEsIDB4OTU3QiwgMHg5NTdCLCAweDIzNEEsIDB4OTU3QywgMHg5NTdDLCAweDJBQjEsCisgICAgMHg5NTdELCAweDk1N0QsIDB4MzE2MiwgMHg5NTdGLCAweDk1N0YsIDB4NDUwOSwgMHg5NTgwLCAweDk1ODAsIDB4MDY5OCwKKyAgICAweDk1ODIsIDB4OTU4MiwgMHgwODIxLCAweDk1ODMsIDB4OTU4MywgMHgwOUVBLCAweDk1ODUsIDB4OTU4NSwgMHgzOEExLAorICAgIDB4OTU4NiwgMHg5NTg2LCAweDIwQTIsIDB4OTU4OCwgMHg5NTg4LCAweDIwQTMsIDB4OTU4OSwgMHg5NTg5LCAweDBCRDAsCisgICAgMHg5NThCLCAweDk1OEIsIDB4MEQ5QSwgMHg5NThDLCAweDk1OEMsIDB4MjM0QywgMHg5NThELCAweDk1OEQsIDB4MjM0QiwKKyAgICAweDk1OEUsIDB4OTU4RSwgMHgwRDlFLCAweDk1OEYsIDB4OTU4RiwgMHgwRDk5LCAweDk1OTAsIDB4OTU5MCwgMHgyMzRELAorICAgIDB4OTU5MSwgMHg5NTkxLCAweDBEOUIsIDB4OTU5MiwgMHg5NTkyLCAweDBEOUQsIDB4OTU5MywgMHg5NTkzLCAweDBEOUMsCisgICAgMHg5NTk0LCAweDk1OTQsIDB4MEQ5OCwgMHg5NTk2LCAweDk1OTYsIDB4M0JENSwgMHg5NTk3LCAweDk1OTcsIDB4M0JENCwKKyAgICAweDk1OTgsIDB4OTU5OCwgMHgwRjVDLCAweDk1OTksIDB4OTU5OSwgMHgzQkQyLCAweDk1OUIsIDB4OTU5QiwgMHgyNUYzLAorICAgIDB4OTU5QywgMHg5NTlDLCAweDI1RjEsIDB4OTU5RSwgMHg5NTlFLCAweDI1RjIsIDB4OTU5RiwgMHg5NTlGLCAweDI1RjAsCisgICAgMHg5NUEwLCAweDk1QTAsIDB4MzhBNCwgMHg5NUExLCAweDk1QTEsIDB4MTBERiwgMHg5NUEyLCAweDk1QTIsIDB4NDdBRCwKKyAgICAweDk1QTMsIDB4OTVBMywgMHgxMEUyLCAweDk1QTQsIDB4OTVBNCwgMHgxMEU0LCAweDk1QTUsIDB4OTVBNSwgMHgxMEUzLAorICAgIDB4OTVBNiwgMHg5NUE2LCAweDM4QTIsIDB4OTVBNywgMHg5NUE3LCAweDNCRDMsIDB4OTVBOCwgMHg5NUE5LCAweDEwRTAsCisgICAgMHg5NUFBLCAweDk1QUEsIDB4NDM5NSwgMHg5NUFCLCAweDk1QUIsIDB4MkFCMywgMHg5NUFDLCAweDk1QUMsIDB4MkFCMiwKKyAgICAweDk1QUQsIDB4OTVBRCwgMHgxMjYwLCAweDk1QUUsIDB4OTVBRSwgMHgyQUI0LCAweDk1QjAsIDB4OTVCMCwgMHgyQUI1LAorICAgIDB4OTVCMSwgMHg5NUIxLCAweDEyNjEsIDB4OTVCNSwgMHg5NUI1LCAweDJDRjAsIDB4OTVCNiwgMHg5NUI2LCAweDJDRUUsCisgICAgMHg5NUI3LCAweDk1QjcsIDB4MkVBRCwgMHg5NUI5LCAweDk1QkEsIDB4MkNFQywgMHg5NUJCLCAweDk1QkIsIDB4MTM4NSwKKyAgICAweDk1QkMsIDB4OTVCQywgMHgyQ0U5LCAweDk1QkQsIDB4OTVCRCwgMHgyQ0YxLCAweDk1QkUsIDB4OTVCRSwgMHgyQ0VCLAorICAgIDB4OTVCRiwgMHg5NUJGLCAweDJDRUYsIDB4OTVDMCwgMHg5NUMwLCAweDJFQTksIDB4OTVDMywgMHg5NUMzLCAweDJFQUIsCisgICAgMHg5NUM1LCAweDk1QzUsIDB4MkVBQywgMHg5NUM2LCAweDk1QzYsIDB4MTRBRSwgMHg5NUM3LCAweDk1QzcsIDB4MkVBOCwKKyAgICAweDk1QzgsIDB4OTVDOCwgMHgxNEFELCAweDk1QzksIDB4OTVDOSwgMHgyRUFBLCAweDk1Q0EsIDB4OTVDQywgMHgxNEFBLAorICAgIDB4OTVDRCwgMHg5NUNELCAweDJDRUEsIDB4OTVEMCwgMHg5NUQwLCAweDE1NEMsIDB4OTVEMSwgMHg5NUQxLCAweDMwMUYsCisgICAgMHg5NUQyLCAweDk1RDMsIDB4MzAxRCwgMHg5NUQ0LCAweDk1RDQsIDB4MTU0QSwgMHg5NUQ1LCAweDk1RDUsIDB4MTU0RCwKKyAgICAweDk1RDYsIDB4OTVENiwgMHgxNTRCLCAweDk1REEsIDB4OTVEQiwgMHgzMTYzLCAweDk1REMsIDB4OTVEQywgMHgxNUVCLAorICAgIDB4OTVERSwgMHg5NURFLCAweDMyNkMsIDB4OTVERiwgMHg5NURGLCAweDMyNkUsIDB4OTVFMCwgMHg5NUUwLCAweDMyNkQsCisgICAgMHg5NUUxLCAweDk1RTEsIDB4MTY1NSwgMHg5NUUyLCAweDk1RTIsIDB4MTZBMCwgMHg5NUUzLCAweDk1RTMsIDB4MzMzMCwKKyAgICAweDk1RTQsIDB4OTVFNCwgMHgzMzJGLCAweDk1RTUsIDB4OTVFNSwgMHgzMzJFLCAweDk1RTgsIDB4OTVFOCwgMHg0NTBBLAorICAgIDB4OTVGNCwgMHg5NUY0LCAweDQ3QUYsIDB4OTYxQywgMHg5NjFDLCAweDA2OTksIDB4OTYxRCwgMHg5NjFELCAweDQ1MTksCisgICAgMHg5NjFFLCAweDk2MUUsIDB4MTdCNCwgMHg5NjIwLCAweDk2MjAsIDB4MTgyMSwgMHg5NjIxLCAweDk2MjEsIDB4MDQxNCwKKyAgICAweDk2MjIsIDB4OTYyMiwgMHgxODFGLCAweDk2MjMsIDB4OTYyMywgMHgxODIyLCAweDk2MjQsIDB4OTYyNCwgMHgxODIwLAorICAgIDB4OTYyOCwgMHg5NjI4LCAweDE4RjEsIDB4OTYyQSwgMHg5NjJBLCAweDA1MjYsIDB4OTYyQywgMHg5NjJDLCAweDA1MjcsCisgICAgMHg5NjJELCAweDk2MkQsIDB4MThGMywgMHg5NjJFLCAweDk2MkUsIDB4MDUyNCwgMHg5NjJGLCAweDk2MkYsIDB4MThGMiwKKyAgICAweDk2MzAsIDB4OTYzMCwgMHgxOEYwLCAweDk2MzEsIDB4OTYzMSwgMHgwNTI1LCAweDk2MzIsIDB4OTYzMiwgMHgwNTIzLAorICAgIDB4OTYzMywgMHg5NjMzLCAweDQ3QjAsIDB4OTYzOCwgMHg5NjM4LCAweDNGRDEsIDB4OTYzOSwgMHg5NjM5LCAweDFBNTUsCisgICAgMHg5NjNBLCAweDk2M0EsIDB4MUE1OCwgMHg5NjNCLCAweDk2M0IsIDB4MDY5QywgMHg5NjNDLCAweDk2M0MsIDB4MUE1NywKKyAgICAweDk2M0QsIDB4OTYzRCwgMHgxQTU2LCAweDk2M0YsIDB4OTYzRiwgMHgwNjlCLCAweDk2NDAsIDB4OTY0MCwgMHgwNjlBLAorICAgIDB4OTY0MSwgMHg5NjQxLCAweDNGM0QsIDB4OTY0MiwgMHg5NjQyLCAweDA2OUUsIDB4OTY0MywgMHg5NjQzLCAweDFBNTksCisgICAgMHg5NjQ0LCAweDk2NDQsIDB4MDY5RCwgMHg5NjQ1LCAweDk2NDUsIDB4NDc3MiwgMHg5NjRBLCAweDk2NEEsIDB4MUMxQSwKKyAgICAweDk2NEIsIDB4OTY0RCwgMHgwODIzLCAweDk2NEUsIDB4OTY0RSwgMHgxQzFCLCAweDk2NEYsIDB4OTY0RiwgMHgxQzE3LAorICAgIDB4OTY1MCwgMHg5NjUwLCAweDA4MjIsIDB4OTY1MSwgMHg5NjUxLCAweDFDMTgsIDB4OTY1MywgMHg5NjUzLCAweDFDMTksCisgICAgMHg5NjU0LCAweDk2NTQsIDB4MUMxNiwgMHg5NjU2LCAweDk2NTYsIDB4M0RFNywgMHg5NjU4LCAweDk2NTgsIDB4MDlGMSwKKyAgICAweDk2NUIsIDB4OTY1QiwgMHgwOUVFLCAweDk2NUMsIDB4OTY1QywgMHgxRTJGLCAweDk2NUQsIDB4OTY1RCwgMHgwOUVGLAorICAgIDB4OTY1RSwgMHg5NjVFLCAweDA5RjIsIDB4OTY1RiwgMHg5NjVGLCAweDFFMzAsIDB4OTY2MSwgMHg5NjYxLCAweDA5RUQsCisgICAgMHg5NjYyLCAweDk2NjMsIDB4MDlFQiwgMHg5NjY0LCAweDk2NjQsIDB4MDlGMCwgMHg5NjY5LCAweDk2NjksIDB4NDc1RSwKKyAgICAweDk2NkEsIDB4OTY2QSwgMHgwQkQxLCAweDk2NkIsIDB4OTY2QiwgMHgyMEE2LCAweDk2NkMsIDB4OTY2QywgMHgwQkQ5LAorICAgIDB4OTY2RCwgMHg5NjZELCAweDIwQTUsIDB4OTY2RiwgMHg5NjZGLCAweDIwQTgsIDB4OTY3MCwgMHg5NjcwLCAweDBCRDUsCisgICAgMHg5NjcxLCAweDk2NzEsIDB4MjBBNywgMHg5NjcyLCAweDk2NzIsIDB4MERBNiwgMHg5NjczLCAweDk2NzMsIDB4MEJEMywKKyAgICAweDk2NzQsIDB4OTY3NCwgMHgwQkQ2LCAweDk2NzUsIDB4OTY3NSwgMHgwQkQyLCAweDk2NzYsIDB4OTY3NywgMHgwQkQ3LAorICAgIDB4OTY3OCwgMHg5Njc4LCAweDBCRDQsIDB4OTY3QiwgMHg5NjdCLCAweDM4QUMsIDB4OTY3QywgMHg5NjdDLCAweDIwQTQsCisgICAgMHg5NjdELCAweDk2N0QsIDB4MERBMiwgMHg5NjdFLCAweDk2N0UsIDB4MjM0RiwgMHg5NjgwLCAweDk2ODAsIDB4MjM1MywKKyAgICAweDk2ODEsIDB4OTY4MSwgMHgzRjQ2LCAweDk2ODMsIDB4OTY4MywgMHgyMzUyLCAweDk2ODQsIDB4OTY4NCwgMHgwREE3LAorICAgIDB4OTY4NSwgMHg5Njg2LCAweDBEQTMsIDB4OTY4NywgMHg5Njg3LCAweDIzNEUsIDB4OTY4OCwgMHg5Njg5LCAweDIzNTAsCisgICAgMHg5NjhBLCAweDk2OEEsIDB4MEQ5RiwgMHg5NjhCLCAweDk2OEIsIDB4MERBMSwgMHg5NjhELCAweDk2OEQsIDB4MERBNSwKKyAgICAweDk2OEUsIDB4OTY4RSwgMHgwREEwLCAweDk2OEYsIDB4OTY4RiwgMHgzQkRFLCAweDk2OTEsIDB4OTY5MSwgMHgyNUY2LAorICAgIDB4OTY5MiwgMHg5NjkzLCAweDI1RjQsIDB4OTY5NCwgMHg5Njk1LCAweDBGNUUsIDB4OTY5NiwgMHg5Njk2LCAweDM4QUQsCisgICAgMHg5Njk3LCAweDk2OTcsIDB4MjVGNywgMHg5Njk4LCAweDk2OTgsIDB4MEY1RCwgMHg5Njk5LCAweDk2OTksIDB4MTBFNSwKKyAgICAweDk2OUIsIDB4OTY5QiwgMHgxMEU3LCAweDk2OUMsIDB4OTY5QywgMHgxMEU2LCAweDk2OUUsIDB4OTY5RSwgMHgyODUyLAorICAgIDB4OTZBMSwgMHg5NkExLCAweDI4NTMsIDB4OTZBMiwgMHg5NkEyLCAweDJBQjcsIDB4OTZBMywgMHg5NkEzLCAweDM4QUYsCisgICAgMHg5NkE0LCAweDk2QTQsIDB4MkFCNiwgMHg5NkE1LCAweDk2QTUsIDB4NDJFRiwgMHg5NkE3LCAweDk2QTgsIDB4MTM4NiwKKyAgICAweDk2QTksIDB4OTZBOSwgMHgyQ0YyLCAweDk2QUEsIDB4OTZBQSwgMHgxMzg4LCAweDk2QUMsIDB4OTZBQywgMHgyRUIwLAorICAgIDB4OTZBRSwgMHg5NkFFLCAweDJFQUUsIDB4OTZCMCwgMHg5NkIwLCAweDJFQUYsIDB4OTZCMSwgMHg5NkIxLCAweDE0QUYsCisgICAgMHg5NkIzLCAweDk2QjMsIDB4MzAyMCwgMHg5NkI0LCAweDk2QjQsIDB4MTVFQywgMHg5NkI2LCAweDk2QjYsIDB4MDIzMSwKKyAgICAweDk2QjgsIDB4OTZCOCwgMHgxNEIwLCAweDk2QjksIDB4OTZCOSwgMHgwNjlGLCAweDk2QkIsIDB4OTZCQiwgMHgwOUYzLAorICAgIDB4OTZCQywgMHg5NkJDLCAweDFFMzEsIDB4OTZCRCwgMHg5NkJELCAweDM4QjUsIDB4OTZCRiwgMHg5NkJGLCAweDIwQTksCisgICAgMHg5NkMwLCAweDk2QzAsIDB4MEJEQSwgMHg5NkMxLCAweDk2QzEsIDB4MERBOCwgMHg5NkMyLCAweDk2QzIsIDB4MjM1NCwKKyAgICAweDk2QzMsIDB4OTZDMywgMHgyMzU2LCAweDk2QzQsIDB4OTZDNCwgMHgwREFBLCAweDk2QzUsIDB4OTZDNSwgMHgwREE5LAorICAgIDB4OTZDNiwgMHg5NkM3LCAweDBEQUIsIDB4OTZDOCwgMHg5NkM4LCAweDIzNTUsIDB4OTZDOSwgMHg5NkNBLCAweDBGNjIsCisgICAgMHg5NkNCLCAweDk2Q0IsIDB4MEY2MSwgMHg5NkNDLCAweDk2Q0MsIDB4MTBFOCwgMHg5NkNELCAweDk2Q0QsIDB4MEY2MCwKKyAgICAweDk2Q0UsIDB4OTZDRSwgMHgyNUY4LCAweDk2RDIsIDB4OTZEMiwgMHgxMEU5LCAweDk2RDMsIDB4OTZEMywgMHgyQUI4LAorICAgIDB4OTZENCwgMHg5NkQ0LCAweDJDRjMsIDB4OTZENSwgMHg5NkQ1LCAweDEzODksIDB4OTZENiwgMHg5NkQ2LCAweDE0QjEsCisgICAgMHg5NkQ3LCAweDk2RDcsIDB4MzAyMSwgMHg5NkQ4LCAweDk2RDgsIDB4MzAyNSwgMHg5NkQ5LCAweDk2RDksIDB4MTU1MCwKKyAgICAweDk2REEsIDB4OTZEQSwgMHgzMDIyLCAweDk2REIsIDB4OTZEQiwgMHgxNTUxLCAweDk2REMsIDB4OTZEQywgMHgxNTRGLAorICAgIDB4OTZERCwgMHg5NkRELCAweDMwMjYsIDB4OTZERSwgMHg5NkRFLCAweDE1NTIsIDB4OTZERiwgMHg5NkRGLCAweDMwMjQsCisgICAgMHg5NkUxLCAweDk2RTEsIDB4MzE2NSwgMHg5NkUyLCAweDk2RTIsIDB4MTU0RSwgMHg5NkUzLCAweDk2RTMsIDB4MTVFRCwKKyAgICAweDk2RTUsIDB4OTZFNSwgMHgzNEE4LCAweDk2RTgsIDB4OTZFOCwgMHgwNkEwLCAweDk2RTksIDB4OTZFOSwgMHgwQkRDLAorICAgIDB4OTZFQSwgMHg5NkVBLCAweDBCREIsIDB4OTZFRiwgMHg5NkVGLCAweDBEQUQsIDB4OTZGMCwgMHg5NkYwLCAweDIzNTgsCisgICAgMHg5NkYxLCAweDk2RjEsIDB4MjM1NywgMHg5NkYyLCAweDk2RjIsIDB4MERBRSwgMHg5NkY0LCAweDk2RjQsIDB4M0EwNCwKKyAgICAweDk2RjUsIDB4OTZGNSwgMHgyNUZDLCAweDk2RjYsIDB4OTZGNiwgMHgwRjY3LCAweDk2RjcsIDB4OTZGNywgMHgwRjY0LAorICAgIDB4OTZGOCwgMHg5NkY4LCAweDI1RkIsIDB4OTZGOSwgMHg5NkY5LCAweDBGNjYsIDB4OTZGQSwgMHg5NkZBLCAweDI1RjksCisgICAgMHg5NkZCLCAweDk2RkIsIDB4MEY2NSwgMHg5NkZELCAweDk2RkQsIDB4MjVGQSwgMHg5NkZGLCAweDk2RkYsIDB4Mjg1NCwKKyAgICAweDk3MDAsIDB4OTcwMCwgMHgxMEVBLCAweDk3MDIsIDB4OTcwMiwgMHgyQUJCLCAweDk3MDMsIDB4OTcwMywgMHgzRjBELAorICAgIDB4OTcwNCwgMHg5NzA0LCAweDEyNjIsIDB4OTcwNSwgMHg5NzA1LCAweDJBQjksIDB4OTcwNiwgMHg5NzA3LCAweDEyNjMsCisgICAgMHg5NzA4LCAweDk3MDgsIDB4MkFCQSwgMHg5NzA5LCAweDk3MDksIDB4MTI2NSwgMHg5NzBCLCAweDk3MEIsIDB4MkNGNCwKKyAgICAweDk3MEQsIDB4OTcwRCwgMHgxMzhELCAweDk3MEUsIDB4OTcwRSwgMHgxMzhBLCAweDk3MEYsIDB4OTcwRiwgMHgxMzhGLAorICAgIDB4OTcxMCwgMHg5NzEwLCAweDJDRjYsIDB4OTcxMSwgMHg5NzExLCAweDEzOEIsIDB4OTcxMiwgMHg5NzEyLCAweDJDRjUsCisgICAgMHg5NzEzLCAweDk3MTMsIDB4MTM4RSwgMHg5NzE2LCAweDk3MTYsIDB4MTM4QywgMHg5NzE4LCAweDk3MTgsIDB4MkVCMywKKyAgICAweDk3MTksIDB4OTcxOSwgMHgyRUI1LCAweDk3MUIsIDB4OTcxQiwgMHgzOEM5LCAweDk3MUMsIDB4OTcxQywgMHgxNEIyLAorICAgIDB4OTcxRCwgMHg5NzFELCAweDJFQjQsIDB4OTcxRSwgMHg5NzFFLCAweDE0QjMsIDB4OTcxRiwgMHg5NzFGLCAweDJFQjIsCisgICAgMHg5NzIwLCAweDk3MjAsIDB4MkVCMSwgMHg5NzIxLCAweDk3MjEsIDB4M0ZCMywgMHg5NzIyLCAweDk3MjIsIDB4MzAyOCwKKyAgICAweDk3MjMsIDB4OTcyMywgMHgzMDI3LCAweDk3MjQsIDB4OTcyNCwgMHgxNTUzLCAweDk3MjUsIDB4OTcyNSwgMHgzMDI5LAorICAgIDB4OTcyNiwgMHg5NzI2LCAweDMxNkEsIDB4OTcyNywgMHg5NzI3LCAweDE1RUYsIDB4OTcyOCwgMHg5NzI4LCAweDMxNjksCisgICAgMHg5NzI5LCAweDk3MjksIDB4MzE2NiwgMHg5NzJBLCAweDk3MkEsIDB4MTVFRSwgMHg5NzJCLCAweDk3MkMsIDB4MzE2NywKKyAgICAweDk3MkUsIDB4OTcyRiwgMHgzMjZGLCAweDk3MzAsIDB4OTczMCwgMHgxNjU2LCAweDk3MzEsIDB4OTczMSwgMHgzOEMwLAorICAgIDB4OTczMiwgMHg5NzMyLCAweDE2QTMsIDB4OTczNSwgMHg5NzM1LCAweDMzMzEsIDB4OTczNiwgMHg5NzM2LCAweDM4QzIsCisgICAgMHg5NzM4LCAweDk3MzksIDB4MTZBMSwgMHg5NzNBLCAweDk3M0EsIDB4MzMzMiwgMHg5NzNELCAweDk3M0UsIDB4MTZFMiwKKyAgICAweDk3M0YsIDB4OTczRiwgMHgzM0QxLCAweDk3NDAsIDB4OTc0MCwgMHg0N0IzLCAweDk3NDEsIDB4OTc0MSwgMHgzQkU5LAorICAgIDB4OTc0MiwgMHg5NzQyLCAweDE3MzIsIDB4OTc0MywgMHg5NzQzLCAweDM0QUEsIDB4OTc0NCwgMHg5NzQ0LCAweDE3MzQsCisgICAgMHg5NzQ2LCAweDk3NDYsIDB4MzRBOSwgMHg5NzQ3LCAweDk3NDcsIDB4MzRBQiwgMHg5NzQ4LCAweDk3NDgsIDB4MTczMywKKyAgICAweDk3NDksIDB4OTc0OSwgMHgzNEYxLCAweDk3NEIsIDB4OTc0QiwgMHgzNTI2LCAweDk3NTEsIDB4OTc1MSwgMHg0NEUzLAorICAgIDB4OTc1MiwgMHg5NzUyLCAweDA2QTEsIDB4OTc1NiwgMHg5NzU2LCAweDBGNjgsIDB4OTc1NywgMHg5NzU3LCAweDM4Q0MsCisgICAgMHg5NzU4LCAweDk3NTgsIDB4Mjg1NSwgMHg5NzVBLCAweDk3NUEsIDB4MkFCQywgMHg5NzVCLCAweDk3NUMsIDB4MTM5MCwKKyAgICAweDk3NUQsIDB4OTc1RCwgMHgzQkVGLCAweDk3NUUsIDB4OTc1RSwgMHgwNkEyLCAweDk3NUYsIDB4OTc1RiwgMHgzOENGLAorICAgIDB4OTc2MCwgMHg5NzYwLCAweDEyNjYsIDB4OTc2MSwgMHg5NzYxLCAweDE1RjAsIDB4OTc2MiwgMHg5NzYyLCAweDA4MjYsCisgICAgMHg5NzY2LCAweDk3NjYsIDB4MTM5MiwgMHg5NzY4LCAweDk3NjgsIDB4MTcxMCwgMHg5NzY5LCAweDk3NjksIDB4MDgyNywKKyAgICAweDk3NkEsIDB4OTc2QSwgMHgyMEFBLCAweDk3NkMsIDB4OTc2QywgMHgyMzU5LCAweDk3NkQsIDB4OTc2RCwgMHgzRTk3LAorICAgIDB4OTc2RSwgMHg5NzZFLCAweDIzNUIsIDB4OTc3MCwgMHg5NzcwLCAweDIzNUEsIDB4OTc3MSwgMHg5NzcxLCAweDNCRkMsCisgICAgMHg5NzcyLCAweDk3NzIsIDB4MjYwMCwgMHg5NzczLCAweDk3NzMsIDB4MjVGRCwgMHg5Nzc0LCAweDk3NzQsIDB4MEY2OSwKKyAgICAweDk3NzYsIDB4OTc3NiwgMHgwRjZBLCAweDk3NzcsIDB4OTc3OCwgMHgyNUZFLCAweDk3N0EsIDB4OTc3QSwgMHgyODU3LAorICAgIDB4OTc3QiwgMHg5NzdCLCAweDI4NUMsIDB4OTc3QywgMHg5NzdDLCAweDEwRUIsIDB4OTc3RCwgMHg5NzdELCAweDI4NTYsCisgICAgMHg5NzdFLCAweDk3N0UsIDB4Mjg1OCwgMHg5NzdGLCAweDk3N0YsIDB4Mjg1RiwgMHg5NzgwLCAweDk3ODAsIDB4Mjg1QSwKKyAgICAweDk3ODEsIDB4OTc4MSwgMHgyODVFLCAweDk3ODIsIDB4OTc4MiwgMHgyODVCLCAweDk3ODMsIDB4OTc4MywgMHgyODU5LAorICAgIDB4OTc4NCwgMHg5Nzg0LCAweDI4NUQsIDB4OTc4NSwgMHg5Nzg1LCAweDEwRUMsIDB4OTc4NywgMHg5Nzg3LCAweDQwQzAsCisgICAgMHg5Nzg4LCAweDk3ODgsIDB4MkFCRiwgMHg5Nzg5LCAweDk3ODksIDB4MzhENCwgMHg5NzhBLCAweDk3OEEsIDB4MkFCRCwKKyAgICAweDk3OEIsIDB4OTc4QiwgMHgxMjY4LCAweDk3OEQsIDB4OTc4RCwgMHgxMjY3LCAweDk3OEUsIDB4OTc4RSwgMHgyQUJFLAorICAgIDB4OTc4RiwgMHg5NzhGLCAweDEyNjksIDB4OTc5NCwgMHg5Nzk0LCAweDJDRjksIDB4OTc5NywgMHg5Nzk3LCAweDJDRjgsCisgICAgMHg5Nzk4LCAweDk3OTgsIDB4MTM5MywgMHg5Nzk5LCAweDk3OTksIDB4MkNGNywgMHg5NzlBLCAweDk3OUEsIDB4MkVCNiwKKyAgICAweDk3OUIsIDB4OTc5QiwgMHgzQkZCLCAweDk3OUMsIDB4OTc5QywgMHgyRUI4LCAweDk3OUQsIDB4OTc5RCwgMHgyRUJBLAorICAgIDB4OTc5RSwgMHg5NzlFLCAweDJFQjksIDB4OTc5RiwgMHg5NzlGLCAweDM4RDUsIDB4OTdBMCwgMHg5N0EwLCAweDE0QjQsCisgICAgMHg5N0ExLCAweDk3QTEsIDB4MkVCNywgMHg5N0EyLCAweDk3QTIsIDB4MzAzMCwgMHg5N0EzLCAweDk3QTMsIDB4MTU1NCwKKyAgICAweDk3QTQsIDB4OTdBNCwgMHgzMDJFLCAweDk3QTUsIDB4OTdBNSwgMHgzMDMxLCAweDk3QTYsIDB4OTdBNiwgMHgxNTU1LAorICAgIDB4OTdBOCwgMHg5N0E4LCAweDMwMkMsIDB4OTdBQSwgMHg5N0FBLCAweDMwMkYsIDB4OTdBQiwgMHg5N0FCLCAweDMwMkQsCisgICAgMHg5N0FDLCAweDk3QUMsIDB4MzAyQSwgMHg5N0FELCAweDk3QUQsIDB4MTU1NiwgMHg5N0FFLCAweDk3QUUsIDB4MzAyQiwKKyAgICAweDk3QjEsIDB4OTdCMSwgMHgzOEQ2LCAweDk3QjIsIDB4OTdCMiwgMHg0N0I1LCAweDk3QjMsIDB4OTdCMywgMHgzMTZCLAorICAgIDB4OTdCNCwgMHg5N0I0LCAweDNGMzMsIDB4OTdCNiwgMHg5N0I2LCAweDMxNkQsIDB4OTdCNywgMHg5N0I3LCAweDMxNkMsCisgICAgMHg5N0I4LCAweDk3QjgsIDB4M0Q5NSwgMHg5N0I5LCAweDk3QjksIDB4MzI3MSwgMHg5N0JBLCAweDk3QkEsIDB4M0YzNSwKKyAgICAweDk3QkIsIDB4OTdCQiwgMHgzMjcyLCAweDk3QkQsIDB4OTdCRCwgMHg0OTRFLCAweDk3QkUsIDB4OTdCRSwgMHgzOEQ3LAorICAgIDB4OTdCRiwgMHg5N0JGLCAweDMzMzMsIDB4OTdDMCwgMHg5N0MwLCAweDM4RDgsIDB4OTdDMSwgMHg5N0MxLCAweDE2RTUsCisgICAgMHg5N0MyLCAweDk3QzIsIDB4NDdCNiwgMHg5N0MzLCAweDk3QzMsIDB4MTZFNCwgMHg5N0M0LCAweDk3QzUsIDB4MzQ0QywKKyAgICAweDk3QzYsIDB4OTdDNiwgMHgxNzM1LCAweDk3QzcsIDB4OTdDNywgMHgzNEFDLCAweDk3QzgsIDB4OTdDOCwgMHgzRjJGLAorICAgIDB4OTdDOSwgMHg5N0M5LCAweDE3NTYsIDB4OTdDQiwgMHg5N0NCLCAweDA4MjgsIDB4OTdDQywgMHg5N0NDLCAweDBEQUYsCisgICAgMHg5N0NELCAweDk3Q0QsIDB4Mjg2MSwgMHg5N0NFLCAweDk3Q0UsIDB4Mjg2MCwgMHg5N0NGLCAweDk3Q0YsIDB4MkFDMSwKKyAgICAweDk3RDAsIDB4OTdEMCwgMHgyQUMwLCAweDk3RDIsIDB4OTdEMiwgMHgzOEQ5LCAweDk3RDMsIDB4OTdEMywgMHgxNEI1LAorICAgIDB4OTdENCwgMHg5N0Q0LCAweDJFQkMsIDB4OTdENSwgMHg5N0Q1LCAweDJFQkIsIDB4OTdENiwgMHg5N0Q2LCAweDMwMzQsCisgICAgMHg5N0Q3LCAweDk3RDcsIDB4MzAzMiwgMHg5N0Q4LCAweDk3RDgsIDB4MzAzNSwgMHg5N0Q5LCAweDk3RDksIDB4MzAzMywKKyAgICAweDk3REMsIDB4OTdEQywgMHgxNUYxLCAweDk3REQsIDB4OTdERiwgMHgzMTZFLCAweDk3RTAsIDB4OTdFMCwgMHgzOERBLAorICAgIDB4OTdFMSwgMHg5N0UxLCAweDMzMzQsIDB4OTdFMywgMHg5N0UzLCAweDMzRDIsIDB4OTdFNSwgMHg5N0U1LCAweDM0QUQsCisgICAgMHg5N0U2LCAweDk3RTYsIDB4NDUwQywgMHg5N0VELCAweDk3RUQsIDB4MDgyOSwgMHg5N0VFLCAweDk3RUUsIDB4MzhEQywKKyAgICAweDk3RjAsIDB4OTdGMCwgMHgyQ0ZBLCAweDk3RjEsIDB4OTdGMSwgMHgyRUJELCAweDk3RjIsIDB4OTdGMiwgMHgzOTRELAorICAgIDB4OTdGMywgMHg5N0YzLCAweDA4MkEsIDB4OTdGNSwgMHg5N0Y1LCAweDM4RTAsIDB4OTdGNiwgMHg5N0Y2LCAweDEwRUQsCisgICAgMHg5N0Y4LCAweDk3RjgsIDB4MkNGQiwgMHg5N0Y5LCAweDk3RjksIDB4MTU1NywgMHg5N0ZBLCAweDk3RkEsIDB4MzAzNiwKKyAgICAweDk3RkIsIDB4OTdGQiwgMHgxNUYyLCAweDk3RkQsIDB4OTdGRSwgMHgzMjczLCAweDk3RkYsIDB4OTdGRiwgMHgxNkE0LAorICAgIDB4OTgwMCwgMHg5ODAwLCAweDM0NEUsIDB4OTgwMSwgMHg5ODAxLCAweDA4MkIsIDB4OTgwMiwgMHg5ODAzLCAweDBCREYsCisgICAgMHg5ODA0LCAweDk4MDQsIDB4MjBBQiwgMHg5ODA1LCAweDk4MDYsIDB4MERCMCwgMHg5ODA3LCAweDk4MDcsIDB4MjM1QywKKyAgICAweDk4MDgsIDB4OTgwOCwgMHgwREIyLCAweDk4MEEsIDB4OTgwQSwgMHgwRjZFLCAweDk4MEMsIDB4OTgwQywgMHgwRjcwLAorICAgIDB4OTgwRCwgMHg5ODBFLCAweDI2MDIsIDB4OTgwRiwgMHg5ODBGLCAweDI2MDEsIDB4OTgxMCwgMHg5ODExLCAweDBGNkIsCisgICAgMHg5ODEyLCAweDk4MTIsIDB4MEY2RiwgMHg5ODEzLCAweDk4MTMsIDB4MEY2RCwgMHg5ODE0LCAweDk4MTQsIDB4NDk1MiwKKyAgICAweDk4MTUsIDB4OTgxNSwgMHg0MzNDLCAweDk4MTYsIDB4OTgxNiwgMHgyODYyLCAweDk4MTcsIDB4OTgxOCwgMHgxMEVFLAorICAgIDB4OTgxQiwgMHg5ODFCLCAweDJBQzgsIDB4OTgxQywgMHg5ODFDLCAweDEyNkMsIDB4OTgxRCwgMHg5ODFELCAweDJBQzMsCisgICAgMHg5ODFFLCAweDk4MUUsIDB4MkFDMiwgMHg5ODFGLCAweDk4MUYsIDB4M0MwMiwgMHg5ODIwLCAweDk4MjAsIDB4MkFDNywKKyAgICAweDk4MjEsIDB4OTgyMSwgMHgxMjZBLCAweDk4MjMsIDB4OTgyMywgMHgzRTM3LCAweDk4MjQsIDB4OTgyNCwgMHgxMzlBLAorICAgIDB4OTgyNiwgMHg5ODI2LCAweDJBQzQsIDB4OTgyNywgMHg5ODI3LCAweDJBQzksIDB4OTgyOCwgMHg5ODI4LCAweDJBQzYsCisgICAgMHg5ODI5LCAweDk4MjksIDB4MkFDNSwgMHg5ODJCLCAweDk4MkIsIDB4MTI2QiwgMHg5ODJELCAweDk4MkQsIDB4MTM5OCwKKyAgICAweDk4MkUsIDB4OTgyRSwgMHgzRjcyLCAweDk4MkYsIDB4OTgyRiwgMHgyQ0ZELCAweDk4MzAsIDB4OTgzMCwgMHgxMzk0LAorICAgIDB4OTgzMiwgMHg5ODMyLCAweDJDRkUsIDB4OTgzMywgMHg5ODMzLCAweDM4RTUsIDB4OTgzNCwgMHg5ODM0LCAweDM4RTQsCisgICAgMHg5ODM1LCAweDk4MzUsIDB4MkNGQywgMHg5ODM3LCAweDk4MzcsIDB4MTM5NywgMHg5ODM4LCAweDk4MzgsIDB4MTM5NSwKKyAgICAweDk4MzksIDB4OTgzOSwgMHgxMzk5LCAweDk4M0IsIDB4OTgzQiwgMHgxMzk2LCAweDk4NDEsIDB4OTg0MSwgMHgyRUJFLAorICAgIDB4OTg0MywgMHg5ODQzLCAweDJFQzMsIDB4OTg0NCwgMHg5ODQ0LCAweDJFQkYsIDB4OTg0NSwgMHg5ODQ1LCAweDJFQzIsCisgICAgMHg5ODQ2LCAweDk4NDYsIDB4MTRCNiwgMHg5ODQ3LCAweDk4NDcsIDB4M0Q5NiwgMHg5ODQ4LCAweDk4NDgsIDB4MkRGMiwKKyAgICAweDk4NDksIDB4OTg0OSwgMHgyRUMxLCAweDk4NEEsIDB4OTg0QSwgMHgyRUMwLCAweDk4NEIsIDB4OTg0QiwgMHgzOEU2LAorICAgIDB4OTg0QywgMHg5ODRDLCAweDE1NUEsIDB4OTg0RCwgMHg5ODRELCAweDE1NTgsIDB4OTg0RSwgMHg5ODRFLCAweDE1NUIsCisgICAgMHg5ODRGLCAweDk4NEYsIDB4MTU1OSwgMHg5ODUwLCAweDk4NTIsIDB4MzAzNywgMHg5ODUzLCAweDk4NTMsIDB4MTU1QywKKyAgICAweDk4NTcsIDB4OTg1NywgMHgzMTc0LCAweDk4NTgsIDB4OTg1OCwgMHgxNUY0LCAweDk4NTksIDB4OTg1OSwgMHgzMTcyLAorICAgIDB4OTg1QiwgMHg5ODVCLCAweDE1RjUsIDB4OTg1QywgMHg5ODVDLCAweDMxNzEsIDB4OTg1RCwgMHg5ODVELCAweDMxNzMsCisgICAgMHg5ODVFLCAweDk4NUUsIDB4MTVGMywgMHg5ODVGLCAweDk4NUYsIDB4MzI3OCwgMHg5ODYwLCAweDk4NjAsIDB4MzI3NSwKKyAgICAweDk4NjIsIDB4OTg2MywgMHgzMjc2LCAweDk4NjQsIDB4OTg2NCwgMHgzMzM1LCAweDk4NjUsIDB4OTg2NSwgMHgxNkE2LAorICAgIDB4OTg2NiwgMHg5ODY2LCAweDM4RTcsIDB4OTg2NywgMHg5ODY3LCAweDE2QTUsIDB4OTg2OSwgMHg5ODY5LCAweDMzRDQsCisgICAgMHg5ODZBLCAweDk4NkEsIDB4MzNEMywgMHg5ODZCLCAweDk4NkIsIDB4MTZFNiwgMHg5ODZDLCAweDk4NkMsIDB4NDAzNSwKKyAgICAweDk4NkYsIDB4OTg2RiwgMHgxNzExLCAweDk4NzAsIDB4OTg3MCwgMHgxNzM2LCAweDk4NzEsIDB4OTg3MSwgMHgxNzRELAorICAgIDB4OTg3MiwgMHg5ODcyLCAweDM0RjIsIDB4OTg3MywgMHg5ODc0LCAweDM1MjcsIDB4OTg3NSwgMHg5ODc1LCAweDQ1MEQsCisgICAgMHg5OEE4LCAweDk4QTgsIDB4MDgyQywgMHg5OEE5LCAweDk4QTksIDB4MjM1RCwgMHg5OEFDLCAweDk4QUMsIDB4MjYwNCwKKyAgICAweDk4QUQsIDB4OThBRSwgMHgyODYzLCAweDk4QUYsIDB4OThBRiwgMHgxMEYwLCAweDk4QjEsIDB4OThCMSwgMHgxMEYxLAorICAgIDB4OThCMiwgMHg5OEIyLCAweDJBQ0EsIDB4OThCMywgMHg5OEIzLCAweDEyNkQsIDB4OThCNCwgMHg5OEI0LCAweDNGNzMsCisgICAgMHg5OEI2LCAweDk4QjYsIDB4MTRCNywgMHg5OEI3LCAweDk4QjcsIDB4MzhFRiwgMHg5OEI4LCAweDk4QjgsIDB4MzAzQSwKKyAgICAweDk4QjksIDB4OThCOSwgMHg0N0I4LCAweDk4QkEsIDB4OThCQSwgMHgxNTVELCAweDk4QkIsIDB4OThCQiwgMHgzMTc3LAorICAgIDB4OThCQywgMHg5OEJDLCAweDE1RjYsIDB4OThCRCwgMHg5OEJELCAweDMxNzYsIDB4OThCRSwgMHg5OEJFLCAweDMxNzgsCisgICAgMHg5OEJGLCAweDk4QkYsIDB4MzE3NSwgMHg5OEMwLCAweDk4QzAsIDB4MzMzOCwgMHg5OEMxLCAweDk4QzIsIDB4MzI3OSwKKyAgICAweDk4QzMsIDB4OThDMywgMHgzQjc4LCAweDk4QzQsIDB4OThDNCwgMHgxNjU3LCAweDk4QzYsIDB4OThDNiwgMHgzMzM3LAorICAgIDB4OThDNywgMHg5OEM3LCAweDM4RjEsIDB4OThDOCwgMHg5OEM4LCAweDM4RjAsIDB4OThDOSwgMHg5OEM5LCAweDMzMzYsCisgICAgMHg5OENBLCAweDk4Q0EsIDB4MzhFRSwgMHg5OENCLCAweDk4Q0IsIDB4MzNENSwgMHg5OENDLCAweDk4Q0MsIDB4MzUyOSwKKyAgICAweDk4Q0UsIDB4OThDRSwgMHg0NTBFLCAweDk4REIsIDB4OThEQiwgMHgwODJELCAweDk4REMsIDB4OThEQywgMHgzQzBCLAorICAgIDB4OThERSwgMHg5OERFLCAweDQ1MEYsIDB4OThERiwgMHg5OERGLCAweDA4MkUsIDB4OThFMCwgMHg5OEUwLCAweDQ3OTIsCisgICAgMHg5OEUxLCAweDk4RTEsIDB4MzhGNiwgMHg5OEUyLCAweDk4RTIsIDB4MDlGNCwgMHg5OEUzLCAweDk4RTMsIDB4MUUzMiwKKyAgICAweDk4RTUsIDB4OThFNSwgMHgyMEFDLCAweDk4RTYsIDB4OThFNiwgMHgzOEY3LCAweDk4RTcsIDB4OThFNywgMHgwREIzLAorICAgIDB4OThFOSwgMHg5OEU5LCAweDBEQjYsIDB4OThFQSwgMHg5OEVBLCAweDBEQjQsIDB4OThFQiwgMHg5OEVCLCAweDIzNUUsCisgICAgMHg5OEVDLCAweDk4RUMsIDB4MzhGOCwgMHg5OEVELCAweDk4RUQsIDB4MERCOCwgMHg5OEVGLCAweDk4RUYsIDB4MERCNSwKKyAgICAweDk4RjEsIDB4OThGMSwgMHg0N0JBLCAweDk4RjIsIDB4OThGMiwgMHgwREI3LCAweDk4RjQsIDB4OThGNCwgMHgwRjcyLAorICAgIDB4OThGNSwgMHg5OEY1LCAweDQzNjUsIDB4OThGNiwgMHg5OEY2LCAweDI2MDUsIDB4OThGOSwgMHg5OEY5LCAweDI2MDYsCisgICAgMHg5OEZBLCAweDk4RkEsIDB4MkFDQywgMHg5OEZDLCAweDk4RkMsIDB4MEY3MSwgMHg5OEZELCAweDk4RkUsIDB4MEY3MywKKyAgICAweDk5MDAsIDB4OTkwMCwgMHgyODY2LCAweDk5MDIsIDB4OTkwMiwgMHgyODY1LCAweDk5MDMsIDB4OTkwMywgMHgxMEYyLAorICAgIDB4OTkwNSwgMHg5OTA1LCAweDEwRjMsIDB4OTkwNywgMHg5OTA3LCAweDI4NjcsIDB4OTkwOCwgMHg5OTA4LCAweDJBQ0IsCisgICAgMHg5OTA5LCAweDk5MDksIDB4MTBGNSwgMHg5OTBBLCAweDk5MEEsIDB4MTI2RSwgMHg5OTBDLCAweDk5MEMsIDB4MTBGNCwKKyAgICAweDk5MEUsIDB4OTkwRSwgMHg0M0VELCAweDk5MTAsIDB4OTkxMCwgMHgxMzlCLCAweDk5MTEsIDB4OTkxMSwgMHgyQUNELAorICAgIDB4OTkxMiwgMHg5OTEyLCAweDEyNzAsIDB4OTkxMywgMHg5OTEzLCAweDEyNkYsIDB4OTkxNCwgMHg5OTE0LCAweDJBQ0UsCisgICAgMHg5OTE1LCAweDk5MTUsIDB4MkFEMSwgMHg5OTE2LCAweDk5MTcsIDB4MkFDRiwgMHg5OTE4LCAweDk5MTgsIDB4MTI3MSwKKyAgICAweDk5MTksIDB4OTkxOSwgMHg0N0JDLCAweDk5MUEsIDB4OTkxQSwgMHgxM0EwLCAweDk5MUIsIDB4OTkxQiwgMHgxMzlFLAorICAgIDB4OTkxQywgMHg5OTFDLCAweDQzRUUsIDB4OTkxRSwgMHg5OTFFLCAweDEzOUQsIDB4OTkxRiwgMHg5OTFGLCAweDJEMDAsCisgICAgMHg5OTIxLCAweDk5MjEsIDB4MTM5RiwgMHg5OTI0LCAweDk5MjQsIDB4MkNGRiwgMHg5OTI1LCAweDk5MjUsIDB4MkVDNCwKKyAgICAweDk5MjcsIDB4OTkyNywgMHgyRDAxLCAweDk5MjgsIDB4OTkyOCwgMHgxMzlDLCAweDk5MjksIDB4OTkyOSwgMHgyRDAyLAorICAgIDB4OTkyQSwgMHg5OTJBLCAweDJFQzcsIDB4OTkyQiwgMHg5OTJDLCAweDJFQzUsIDB4OTkyRCwgMHg5OTJELCAweDJFQ0IsCisgICAgMHg5OTJFLCAweDk5MkUsIDB4MTU2MSwgMHg5OTJGLCAweDk5MkYsIDB4MkVDQSwgMHg5OTMwLCAweDk5MzAsIDB4MkVDRCwKKyAgICAweDk5MzEsIDB4OTkzMSwgMHgyRUNDLCAweDk5MzIsIDB4OTkzMiwgMHgyRUM5LCAweDk5MzMsIDB4OTkzMywgMHgyRUM4LAorICAgIDB4OTkzNSwgMHg5OTM1LCAweDE0QjgsIDB4OTkzNywgMHg5OTM3LCAweDQ3QkQsIDB4OTkzOCwgMHg5OTM4LCAweDNCRkQsCisgICAgMHg5OTM5LCAweDk5MzksIDB4MzhGQSwgMHg5OTNBLCAweDk5M0EsIDB4MzAzRCwgMHg5OTNCLCAweDk5M0IsIDB4M0MxMSwKKyAgICAweDk5M0MsIDB4OTkzQywgMHgzMDNDLCAweDk5M0QsIDB4OTkzRCwgMHgxNTYwLCAweDk5M0UsIDB4OTkzRiwgMHgxNTVFLAorICAgIDB4OTk0MCwgMHg5OTQwLCAweDNGMzQsIDB4OTk0MSwgMHg5OTQxLCAweDMwM0IsIDB4OTk0MiwgMHg5OTQyLCAweDQzRkYsCisgICAgMHg5OTQzLCAweDk5NDMsIDB4MzE3QiwgMHg5OTQ1LCAweDk5NDUsIDB4MTVGNywgMHg5OTQ3LCAweDk5NDcsIDB4MzE3QSwKKyAgICAweDk5NDgsIDB4OTk0OCwgMHgzMTc5LCAweDk5NDksIDB4OTk0OSwgMHgxNUY4LCAweDk5NEEsIDB4OTk0QSwgMHgzRkI5LAorICAgIDB4OTk0QiwgMHg5OTRCLCAweDMyN0YsIDB4OTk0QywgMHg5OTRDLCAweDMyN0UsIDB4OTk0RCwgMHg5OTRELCAweDNDMTIsCisgICAgMHg5OTRFLCAweDk5NEUsIDB4MzI3QywgMHg5OTUwLCAweDk5NTAsIDB4MzI3QiwgMHg5OTUxLCAweDk5NTEsIDB4MTY1OSwKKyAgICAweDk5NTIsIDB4OTk1MiwgMHgxNjU4LCAweDk5NTMsIDB4OTk1MywgMHgzMjgwLCAweDk5NTQsIDB4OTk1NCwgMHgzM0Q2LAorICAgIDB4OTk1NSwgMHg5OTU1LCAweDE2RTcsIDB4OTk1NiwgMHg5OTU2LCAweDMzM0EsIDB4OTk1NywgMHg5OTU3LCAweDE2QTcsCisgICAgMHg5OTU4LCAweDk5NTgsIDB4MzMzOSwgMHg5OTU5LCAweDk5NTksIDB4MzI3RCwgMHg5OTVCLCAweDk5NUIsIDB4MzNENywKKyAgICAweDk5NUMsIDB4OTk1QywgMHgxNzEyLCAweDk5NUQsIDB4OTk1RCwgMHg0N0JFLCAweDk5NUUsIDB4OTk1RSwgMHgxNzRFLAorICAgIDB4OTk1RiwgMHg5OTVGLCAweDM0RjMsIDB4OTk2MSwgMHg5OTYxLCAweDM1MkEsIDB4OTk2MiwgMHg5OTYyLCAweDQzRUYsCisgICAgMHg5OTYzLCAweDk5NjMsIDB4NDUxMCwgMHg5OTk2LCAweDk5OTYsIDB4MDgyRiwgMHg5OTk3LCAweDk5OTcsIDB4MjBBRCwKKyAgICAweDk5OTgsIDB4OTk5OCwgMHgyRUNFLCAweDk5OTksIDB4OTk5OSwgMHgwODMwLCAweDk5OUIsIDB4OTk5QiwgMHgzQzE1LAorICAgIDB4OTk5QywgMHg5OTlDLCAweDI4NjksIDB4OTk5RCwgMHg5OTlELCAweDI4NjgsIDB4OTk5RSwgMHg5OTlFLCAweDJEMDMsCisgICAgMHg5OUExLCAweDk5QTEsIDB4MkVEMCwgMHg5OUEzLCAweDk5QTMsIDB4MkVDRiwgMHg5OUE0LCAweDk5QTQsIDB4NDFDMywKKyAgICAweDk5QTUsIDB4OTlBNSwgMHgxNTYyLCAweDk5QTYsIDB4OTlBNywgMHgzMTdDLCAweDk5QTgsIDB4OTlBOCwgMHgxNjVBLAorICAgIDB4OTlBQSwgMHg5OUFBLCAweDNDMTcsIDB4OTlBQiwgMHg5OUFCLCAweDM1MkIsIDB4OTlBQywgMHg5OUFDLCAweDA5RjUsCisgICAgMHg5OUFELCAweDk5QUQsIDB4MERCQSwgMHg5OUFFLCAweDk5QUUsIDB4MERCOSwgMHg5OUFGLCAweDk5QUYsIDB4MjYwNywKKyAgICAweDk5QjAsIDB4OTlCMCwgMHgyNjA5LCAweDk5QjEsIDB4OTlCMSwgMHgwRjc2LCAweDk5QjIsIDB4OTlCMiwgMHgyNjA4LAorICAgIDB4OTlCMywgMHg5OUIzLCAweDBGNzUsIDB4OTlCNCwgMHg5OUI0LCAweDBGNzcsIDB4OTlCNSwgMHg5OUI1LCAweDI2MEEsCisgICAgMHg5OUI4LCAweDk5QjgsIDB4Mzk0QiwgMHg5OUI5LCAweDk5QjksIDB4Mjg2QiwgMHg5OUJBLCAweDk5QkEsIDB4Mjg2RCwKKyAgICAweDk5QkIsIDB4OTlCQiwgMHgyODZDLCAweDk5QkMsIDB4OTlCQywgMHgzQzIyLCAweDk5QkQsIDB4OTlCRCwgMHgyODZGLAorICAgIDB4OTlDMSwgMHg5OUMxLCAweDEwRjYsIDB4OTlDMiwgMHg5OUMyLCAweDI4NkUsIDB4OTlDMywgMHg5OUMzLCAweDI4NkEsCisgICAgMHg5OUM0LCAweDk5QzQsIDB4M0Q3NywgMHg5OUM1LCAweDk5QzUsIDB4NDdDMSwgMHg5OUM3LCAweDk5QzcsIDB4Mjg3MCwKKyAgICAweDk5QzksIDB4OTlDOSwgMHgyQUQ4LCAweDk5Q0IsIDB4OTlDQiwgMHgyQURCLCAweDk5Q0MsIDB4OTlDQywgMHgyQURELAorICAgIDB4OTlDRCwgMHg5OUNELCAweDJBRDMsIDB4OTlDRSwgMHg5OUNFLCAweDJBRDcsIDB4OTlDRiwgMHg5OUNGLCAweDJBRDQsCisgICAgMHg5OUQwLCAweDk5RDAsIDB4MTI3MywgMHg5OUQxLCAweDk5RDEsIDB4MTI3NiwgMHg5OUQyLCAweDk5RDIsIDB4MTI3OCwKKyAgICAweDk5RDMsIDB4OTlENCwgMHgyQUQ1LCAweDk5RDUsIDB4OTlENSwgMHgxMjc3LCAweDk5RDYsIDB4OTlENiwgMHgyQUQ5LAorICAgIDB4OTlENywgMHg5OUQ3LCAweDJBREMsIDB4OTlEOCwgMHg5OUQ4LCAweDJBREEsIDB4OTlEOSwgMHg5OUQ5LCAweDEyNzksCisgICAgMHg5OURBLCAweDk5REEsIDB4M0Y0MiwgMHg5OURCLCAweDk5REIsIDB4MTI3NSwgMHg5OURDLCAweDk5REMsIDB4MkFEMiwKKyAgICAweDk5REQsIDB4OTlERCwgMHgxMjcyLCAweDk5REYsIDB4OTlERiwgMHgxMjc0LCAweDk5RTEsIDB4OTlFMSwgMHgzNzg1LAorICAgIDB4OTlFMiwgMHg5OUUyLCAweDEzQTIsIDB4OTlFMywgMHg5OUUzLCAweDJEMDksIDB4OTlFNCwgMHg5OUU0LCAweDJEMDcsCisgICAgMHg5OUU1LCAweDk5RTUsIDB4MkQwNiwgMHg5OUU2LCAweDk5RTYsIDB4M0I2NSwgMHg5OUU3LCAweDk5RTcsIDB4MkQwQywKKyAgICAweDk5RTksIDB4OTlFOSwgMHgyRDBCLCAweDk5RUEsIDB4OTlFQSwgMHgyRDBBLCAweDk5RUMsIDB4OTlFQywgMHgyRDA1LAorICAgIDB4OTlFRCwgMHg5OUVELCAweDEzQTEsIDB4OTlFRSwgMHg5OUVFLCAweDJEMDQsIDB4OTlGMCwgMHg5OUYwLCAweDJEMDgsCisgICAgMHg5OUYxLCAweDk5RjEsIDB4MTNBMywgMHg5OUY0LCAweDk5RjQsIDB4MkVEMywgMHg5OUY1LCAweDk5RjUsIDB4MzhGRiwKKyAgICAweDk5RjYsIDB4OTlGNiwgMHgyRUQ3LCAweDk5RjcsIDB4OTlGNywgMHgyRUQ0LCAweDk5RjgsIDB4OTlGOCwgMHgyRUQ2LAorICAgIDB4OTlGOSwgMHg5OUY5LCAweDJFRDUsIDB4OTlGQSwgMHg5OUZBLCAweDJFRDIsIDB4OTlGQiwgMHg5OUZCLCAweDJFRDgsCisgICAgMHg5OUZDLCAweDk5RkMsIDB4MkVEQiwgMHg5OUZELCAweDk5RkUsIDB4MkVEOSwgMHg5OUZGLCAweDk5RkYsIDB4MTRCQSwKKyAgICAweDlBMDEsIDB4OUEwMSwgMHgxNEI5LCAweDlBMDIsIDB4OUEwMiwgMHgyRUQxLCAweDlBMDMsIDB4OUEwMywgMHgyRURDLAorICAgIDB4OUEwNCwgMHg5QTA0LCAweDMwNDIsIDB4OUEwNSwgMHg5QTA1LCAweDMwNDUsIDB4OUEwNiwgMHg5QTA2LCAweDMwNDcsCisgICAgMHg5QTA3LCAweDlBMDcsIDB4MzA0NiwgMHg5QTA5LCAweDlBMDksIDB4MzA0MCwgMHg5QTBBLCAweDlBMEEsIDB4MzA0NCwKKyAgICAweDlBMEIsIDB4OUEwQiwgMHgzMDNGLCAweDlBMEMsIDB4OUEwQywgMHgzOTAwLCAweDlBMEQsIDB4OUEwRCwgMHgzMDQxLAorICAgIDB4OUEwRSwgMHg5QTBFLCAweDE1NjMsIDB4OUEwRiwgMHg5QTBGLCAweDMwM0UsIDB4OUExMCwgMHg5QTEwLCAweDM5MDIsCisgICAgMHg5QTExLCAweDlBMTEsIDB4MzA0MywgMHg5QTE0LCAweDlBMTQsIDB4MzE4QSwgMHg5QTE1LCAweDlBMTUsIDB4MzE3RiwKKyAgICAweDlBMTYsIDB4OUExNiwgMHgxNUY5LCAweDlBMTksIDB4OUExOSwgMHgxNUZBLCAweDlBMUEsIDB4OUExQSwgMHgzMTdFLAorICAgIDB4OUExQiwgMHg5QTFCLCAweDMxODMsIDB4OUExQywgMHg5QTFDLCAweDMxODksIDB4OUExRCwgMHg5QTFELCAweDMxODEsCisgICAgMHg5QTFFLCAweDlBMUUsIDB4MzE4OCwgMHg5QTFGLCAweDlBMUYsIDB4M0I2QywgMHg5QTIwLCAweDlBMjAsIDB4MzE4NSwKKyAgICAweDlBMjEsIDB4OUEyMSwgMHgzQzFDLCAweDlBMjIsIDB4OUEyMiwgMHgzMTg0LCAweDlBMjMsIDB4OUEyMywgMHgzMTg3LAorICAgIDB4OUEyNCwgMHg5QTI0LCAweDMxODIsIDB4OUEyNSwgMHg5QTI1LCAweDMxODAsIDB4OUEyNiwgMHg5QTI2LCAweDNERjIsCisgICAgMHg5QTI3LCAweDlBMjcsIDB4MzE4NiwgMHg5QTI5LCAweDlBMjksIDB4MzI4NywgMHg5QTJBLCAweDlBMkEsIDB4MzI4NSwKKyAgICAweDlBMkIsIDB4OUEyQiwgMHgxNjVCLCAweDlBMkMsIDB4OUEyQywgMHgzMjg0LCAweDlBMkQsIDB4OUEyRCwgMHgzMjhBLAorICAgIDB4OUEyRSwgMHg5QTJFLCAweDMyODgsIDB4OUEyRiwgMHg5QTJGLCAweDNDMUUsIDB4OUEzMCwgMHg5QTMwLCAweDE2NUMsCisgICAgMHg5QTMxLCAweDlBMzEsIDB4MzI4MywgMHg5QTMyLCAweDlBMzIsIDB4MzI4MSwgMHg5QTM0LCAweDlBMzQsIDB4MzI4MiwKKyAgICAweDlBMzUsIDB4OUEzNSwgMHgxNjVFLCAweDlBMzYsIDB4OUEzNiwgMHgzMjg2LCAweDlBMzcsIDB4OUEzNywgMHgxNjVELAorICAgIDB4OUEzOCwgMHg5QTM4LCAweDMyODksIDB4OUEzOSwgMHg5QTM5LCAweDMzM0IsIDB4OUEzQSwgMHg5QTNBLCAweDMzNDEsCisgICAgMHg5QTNCLCAweDlBM0IsIDB4MzkwMSwgMHg5QTNDLCAweDlBM0MsIDB4NDdDMywgMHg5QTNELCAweDlBM0QsIDB4MzMzQywKKyAgICAweDlBM0UsIDB4OUEzRSwgMHgxNkFCLCAweDlBM0YsIDB4OUEzRiwgMHgzMzQyLCAweDlBNDAsIDB4OUE0MCwgMHgxNkFBLAorICAgIDB4OUE0MSwgMHg5QTQxLCAweDMzNDAsIDB4OUE0MiwgMHg5QTQyLCAweDMzM0YsIDB4OUE0MywgMHg5QTQzLCAweDE2QTksCisgICAgMHg5QTQ0LCAweDlBNDQsIDB4MzMzRSwgMHg5QTQ1LCAweDlBNDUsIDB4MTZBOCwgMHg5QTQ2LCAweDlBNDYsIDB4MzMzRCwKKyAgICAweDlBNDgsIDB4OUE0OCwgMHgzM0RELCAweDlBNDksIDB4OUE0OSwgMHgzM0RGLCAweDlBNEEsIDB4OUE0QSwgMHgzM0RFLAorICAgIDB4OUE0QywgMHg5QTRDLCAweDMzREIsIDB4OUE0RCwgMHg5QTRELCAweDE2RTksIDB4OUE0RSwgMHg5QTRFLCAweDMzRDgsCisgICAgMHg5QTRGLCAweDlBNEYsIDB4MzNEQywgMHg5QTUwLCAweDlBNTAsIDB4MzNFMSwgMHg5QTUyLCAweDlBNTIsIDB4MzNFMCwKKyAgICAweDlBNTMsIDB4OUE1NCwgMHgzM0Q5LCAweDlBNTUsIDB4OUE1NSwgMHgxNkU4LCAweDlBNTYsIDB4OUE1NiwgMHgzNDRGLAorICAgIDB4OUE1NywgMHg5QTU3LCAweDE3MTUsIDB4OUE1OCwgMHg5QTU4LCAweDM5MDMsIDB4OUE1OSwgMHg5QTU5LCAweDM0NTAsCisgICAgMHg5QTVBLCAweDlBNUIsIDB4MTcxMywgMHg5QTVDLCAweDlBNUMsIDB4M0MxOCwgMHg5QTVFLCAweDlBNUUsIDB4MzRBRSwKKyAgICAweDlBNUYsIDB4OUE1RiwgMHgxNzM3LCAweDlBNjAsIDB4OUE2MCwgMHgzNTEwLCAweDlBNjIsIDB4OUE2MiwgMHgxNzU3LAorICAgIDB4OUE2MywgMHg5QTYzLCAweDNCNjcsIDB4OUE2NCwgMHg5QTY0LCAweDM1MkMsIDB4OUE2NSwgMHg5QTY1LCAweDE3NTgsCisgICAgMHg5QTY2LCAweDlBNjcsIDB4MzUyRCwgMHg5QTY4LCAweDlBNjgsIDB4MzUzQywgMHg5QTY5LCAweDlBNjksIDB4MzUzQiwKKyAgICAweDlBNkEsIDB4OUE2QSwgMHgxNzY3LCAweDlBNkIsIDB4OUE2QiwgMHgzNTQ0LCAweDlBNkMsIDB4OUE2QywgMHg0NTg1LAorICAgIDB4OUE4RiwgMHg5QThGLCAweDQ1ODYsIDB4OUFBOCwgMHg5QUE4LCAweDA5RjYsIDB4OUFBQiwgMHg5QUFCLCAweDI2MEMsCisgICAgMHg5QUFELCAweDlBQUQsIDB4MjYwQiwgMHg5QUFGLCAweDlBQjAsIDB4MTBGNywgMHg5QUIxLCAweDlBQjEsIDB4Mjg3MSwKKyAgICAweDlBQjIsIDB4OUFCMiwgMHg0MzMyLCAweDlBQjMsIDB4OUFCMywgMHgyQURFLCAweDlBQjQsIDB4OUFCNCwgMHgyRDBGLAorICAgIDB4OUFCNiwgMHg5QUI2LCAweDQzRjAsIDB4OUFCNywgMHg5QUI3LCAweDEyN0EsIDB4OUFCOCwgMHg5QUI4LCAweDEzQTQsCisgICAgMHg5QUI5LCAweDlBQjksIDB4MkQwRCwgMHg5QUJBLCAweDlBQkEsIDB4M0Y3NCwgMHg5QUJCLCAweDlBQkIsIDB4MkQxMCwKKyAgICAweDlBQkMsIDB4OUFCQywgMHgxM0E1LCAweDlBQkQsIDB4OUFCRCwgMHgzRDk3LCAweDlBQkUsIDB4OUFCRSwgMHgyRURELAorICAgIDB4OUFCRiwgMHg5QUJGLCAweDJEMEUsIDB4OUFDMCwgMHg5QUMwLCAweDMwNDgsIDB4OUFDMSwgMHg5QUMxLCAweDE1NjQsCisgICAgMHg5QUMyLCAweDlBQzIsIDB4MzE4QiwgMHg5QUM2LCAweDlBQzYsIDB4MzI4RCwgMHg5QUM3LCAweDlBQzcsIDB4MzI4QiwKKyAgICAweDlBQ0EsIDB4OUFDQSwgMHgzMjhDLCAweDlBQ0QsIDB4OUFDRCwgMHgzMzQzLCAweDlBQ0YsIDB4OUFDRiwgMHgxNkFDLAorICAgIDB4OUFEMCwgMHg5QUQwLCAweDMzRTIsIDB4OUFEMSwgMHg5QUQxLCAweDE3MTgsIDB4OUFEMiwgMHg5QUQyLCAweDE2RUEsCisgICAgMHg5QUQzLCAweDlBRDQsIDB4MTcxNiwgMHg5QUQ1LCAweDlBRDUsIDB4MzRBRiwgMHg5QUQ2LCAweDlBRDYsIDB4MTc0RiwKKyAgICAweDlBRDcsIDB4OUFENywgMHgzRkFBLCAweDlBRDgsIDB4OUFEOCwgMHgwOUY3LCAweDlBREMsIDB4OUFEQywgMHgzMDQ5LAorICAgIDB4OUFERiwgMHg5QURGLCAweDFFMzMsIDB4OUFFMCwgMHg5QUUwLCAweDM5MDgsIDB4OUFFMSwgMHg5QUUxLCAweDBGNzgsCisgICAgMHg5QUUyLCAweDlBRTIsIDB4MzkwOSwgMHg5QUUzLCAweDlBRTMsIDB4Mjg3MiwgMHg5QUU2LCAweDlBRTYsIDB4MTBGOSwKKyAgICAweDlBRTcsIDB4OUFFNywgMHgyODczLCAweDlBRUIsIDB4OUFFQiwgMHgyQUUwLCAweDlBRUMsIDB4OUFFQywgMHgyQURGLAorICAgIDB4OUFFRCwgMHg5QUVELCAweDEzQTcsIDB4OUFFRSwgMHg5QUVGLCAweDEyN0IsIDB4OUFGMSwgMHg5QUYxLCAweDJBRTMsCisgICAgMHg5QUYyLCAweDlBRjIsIDB4MkFFMiwgMHg5QUYzLCAweDlBRjMsIDB4MkFFMSwgMHg5QUY0LCAweDlBRjQsIDB4MzkwQiwKKyAgICAweDlBRjYsIDB4OUFGNiwgMHgyRDExLCAweDlBRjcsIDB4OUFGNywgMHgyRDE0LCAweDlBRjksIDB4OUFGOSwgMHgyRDEzLAorICAgIDB4OUFGQSwgMHg5QUZBLCAweDJEMTIsIDB4OUFGQiwgMHg5QUZCLCAweDEzQTYsIDB4OUFGQywgMHg5QUZDLCAweDJFRTEsCisgICAgMHg5QUZELCAweDlBRkQsIDB4MkVERiwgMHg5QUZFLCAweDlBRkUsIDB4MkVERSwgMHg5QUZGLCAweDlBRkYsIDB4M0YxNywKKyAgICAweDlCMDEsIDB4OUIwMSwgMHgyRUUwLCAweDlCMDIsIDB4OUIwMiwgMHgzRjEyLCAweDlCMDMsIDB4OUIwMywgMHgxNTY1LAorICAgIDB4OUIwNCwgMHg5QjA1LCAweDMwNEIsIDB4OUIwNiwgMHg5QjA2LCAweDE1NjYsIDB4OUIwOCwgMHg5QjA4LCAweDMwNEEsCisgICAgMHg5QjA5LCAweDlCMDksIDB4M0YyMCwgMHg5QjBBLCAweDlCMEEsIDB4MzE4RCwgMHg5QjBCLCAweDlCMEIsIDB4MzE4QywKKyAgICAweDlCMEMsIDB4OUIwQywgMHgzMThGLCAweDlCMEQsIDB4OUIwRCwgMHgxNUZCLCAweDlCMEUsIDB4OUIwRSwgMHgzMThFLAorICAgIDB4OUIwRiwgMHg5QjBGLCAweDQ3QzQsIDB4OUIxMCwgMHg5QjEwLCAweDMyOEUsIDB4OUIxMSwgMHg5QjExLCAweDMyOTAsCisgICAgMHg5QjEyLCAweDlCMTIsIDB4MzI4RiwgMHg5QjE0LCAweDlCMTQsIDB4MzkwRCwgMHg5QjE1LCAweDlCMTUsIDB4MzM0NCwKKyAgICAweDlCMTYsIDB4OUIxNiwgMHgzMzQ3LCAweDlCMTcsIDB4OUIxOCwgMHgzMzQ1LCAweDlCMTksIDB4OUIxOSwgMHgzM0UzLAorICAgIDB4OUIxQSwgMHg5QjFBLCAweDE2RUIsIDB4OUIxRSwgMHg5QjIwLCAweDM0NTEsIDB4OUIyMiwgMHg5QjIyLCAweDE3MzgsCisgICAgMHg5QjIzLCAweDlCMjMsIDB4MTc1MCwgMHg5QjI0LCAweDlCMjQsIDB4MzUyRiwgMHg5QjI1LCAweDlCMjUsIDB4MDlGOCwKKyAgICAweDlCMjcsIDB4OUIyNywgMHgxMjdELCAweDlCMjgsIDB4OUIyOCwgMHgxM0E4LCAweDlCMjksIDB4OUIyOSwgMHgzMDRELAorICAgIDB4OUIyQSwgMHg5QjJBLCAweDNGMTksIDB4OUIyQiwgMHg5QjJCLCAweDMzRTQsIDB4OUIyRCwgMHg5QjJELCAweDM5MEUsCisgICAgMHg5QjJFLCAweDlCMkUsIDB4MzUxMSwgMHg5QjJGLCAweDlCMkYsIDB4MUUzNCwgMHg5QjMxLCAweDlCMzEsIDB4MTc2OCwKKyAgICAweDlCMzIsIDB4OUIzMiwgMHgwOUY5LCAweDlCMzMsIDB4OUIzMywgMHgyRDE1LCAweDlCMzQsIDB4OUIzNCwgMHgzOTExLAorICAgIDB4OUIzNSwgMHg5QjM1LCAweDMwNEUsIDB4OUIzNywgMHg5QjM3LCAweDMxOTAsIDB4OUIzOSwgMHg5QjM5LCAweDNGMDAsCisgICAgMHg5QjNBLCAweDlCM0EsIDB4MzM0OCwgMHg5QjNCLCAweDlCM0IsIDB4MzNFNSwgMHg5QjNDLCAweDlCM0MsIDB4MDlGQSwKKyAgICAweDlCM0UsIDB4OUIzRiwgMHgyODc0LCAweDlCNDAsIDB4OUI0MCwgMHgzOTE1LCAweDlCNDEsIDB4OUI0MiwgMHgxMEZBLAorICAgIDB4OUI0MywgMHg5QjQzLCAweDJBRTUsIDB4OUI0NCwgMHg5QjQ0LCAweDEyN0YsIDB4OUI0NSwgMHg5QjQ1LCAweDEyN0UsCisgICAgMHg5QjQ2LCAweDlCNDYsIDB4MkFFNCwgMHg5QjQ4LCAweDlCNDgsIDB4MkVFMiwgMHg5QjRBLCAweDlCNEEsIDB4MzA0RiwKKyAgICAweDlCNEIsIDB4OUI0QiwgMHgzMDUxLCAweDlCNEMsIDB4OUI0QywgMHgzMDUwLCAweDlCNEQsIDB4OUI0RCwgMHgxNTY5LAorICAgIDB4OUI0RSwgMHg5QjRFLCAweDE1NjgsIDB4OUI0RiwgMHg5QjRGLCAweDE1NjcsIDB4OUI1MCwgMHg5QjUwLCAweDM5MTQsCisgICAgMHg5QjUxLCAweDlCNTEsIDB4MTZBRSwgMHg5QjUyLCAweDlCNTIsIDB4MzM0OSwgMHg5QjU0LCAweDlCNTQsIDB4MTZBRCwKKyAgICAweDlCNTUsIDB4OUI1NSwgMHgzM0U3LCAweDlCNTYsIDB4OUI1NiwgMHgzM0U2LCAweDlCNTgsIDB4OUI1OCwgMHgxNzM5LAorICAgIDB4OUI1OSwgMHg5QjU5LCAweDM0QjAsIDB4OUI1QSwgMHg5QjVBLCAweDBCRTEsIDB4OUI1QiwgMHg5QjVCLCAweDI2MEQsCisgICAgMHg5QjVGLCAweDlCNUYsIDB4Mjg3OCwgMHg5QjYwLCAweDlCNjEsIDB4Mjg3NiwgMHg5QjY0LCAweDlCNjQsIDB4MkFFRSwKKyAgICAweDlCNjYsIDB4OUI2NiwgMHgyQUU5LCAweDlCNjcsIDB4OUI2NywgMHgyQUU2LCAweDlCNjgsIDB4OUI2OCwgMHgyQUVELAorICAgIDB4OUI2OSwgMHg5QjY5LCAweDQ3QzUsIDB4OUI2QywgMHg5QjZDLCAweDJBRUYsIDB4OUI2RiwgMHg5QjZGLCAweDEyODEsCisgICAgMHg5QjcwLCAweDlCNzAsIDB4MkFFQywgMHg5QjcxLCAweDlCNzEsIDB4MkFFOCwgMHg5Qjc0LCAweDlCNzQsIDB4MkFFNywKKyAgICAweDlCNzUsIDB4OUI3NSwgMHgyQUVCLCAweDlCNzYsIDB4OUI3NiwgMHgyQUVBLCAweDlCNzcsIDB4OUI3NywgMHgxMjgwLAorICAgIDB4OUI3QSwgMHg5QjdBLCAweDJEMjAsIDB4OUI3QiwgMHg5QjdCLCAweDJEMUIsIDB4OUI3QywgMHg5QjdDLCAweDJEMTksCisgICAgMHg5QjdELCAweDlCN0QsIDB4MkQyMiwgMHg5QjdFLCAweDlCN0UsIDB4MkQxQSwgMHg5QjdGLCAweDlCN0YsIDB4M0MzQiwKKyAgICAweDlCODAsIDB4OUI4MCwgMHgyRDE2LCAweDlCODEsIDB4OUI4MSwgMHg0M0YxLCAweDlCODIsIDB4OUI4MiwgMHgyRDFDLAorICAgIDB4OUI4MywgMHg5QjgzLCAweDQyMTksIDB4OUI4NSwgMHg5Qjg1LCAweDJEMTcsIDB4OUI4NiwgMHg5Qjg2LCAweDJFRUIsCisgICAgMHg5Qjg3LCAweDlCODcsIDB4MkQxOCwgMHg5Qjg4LCAweDlCODgsIDB4MkQyMywgMHg5QjhCLCAweDlCOEIsIDB4M0VFRSwKKyAgICAweDlCOEQsIDB4OUI4RCwgMHg0NjIzLCAweDlCOEUsIDB4OUI4RSwgMHgzOTE5LCAweDlCOEYsIDB4OUI4RiwgMHgzRkFELAorICAgIDB4OUI5MCwgMHg5QjkwLCAweDJEMUYsIDB4OUI5MSwgMHg5QjkxLCAweDEzQTksIDB4OUI5MiwgMHg5QjkyLCAweDJEMUUsCisgICAgMHg5QjkzLCAweDlCOTMsIDB4MkQxRCwgMHg5Qjk1LCAweDlCOTUsIDB4MkQyMSwgMHg5Qjk3LCAweDlCOTcsIDB4M0Y3MSwKKyAgICAweDlCOUEsIDB4OUI5QSwgMHgyRUUzLCAweDlCOUIsIDB4OUI5QiwgMHgyRUU2LCAweDlCOUQsIDB4OUI5RCwgMHgzRjU2LAorICAgIDB4OUI5RSwgMHg5QjlFLCAweDJFRTUsIDB4OUI5RiwgMHg5QjlGLCAweDNDM0UsIDB4OUJBMCwgMHg5QkEwLCAweDJFRUQsCisgICAgMHg5QkExLCAweDlCQTEsIDB4MkVFOCwgMHg5QkEyLCAweDlCQTIsIDB4MkVFQywgMHg5QkE0LCAweDlCQTQsIDB4MkVFQSwKKyAgICAweDlCQTUsIDB4OUJBNSwgMHgyRUU5LCAweDlCQTYsIDB4OUJBNiwgMHgyRUU3LCAweDlCQTgsIDB4OUJBOCwgMHgyRUU0LAorICAgIDB4OUJBQSwgMHg5QkFBLCAweDE0QkQsIDB4OUJBQiwgMHg5QkFCLCAweDE0QkMsIDB4OUJBRCwgMHg5QkFELCAweDE0QkUsCisgICAgMHg5QkFFLCAweDlCQUUsIDB4MTRCQiwgMHg5QkFGLCAweDlCQUYsIDB4MkVFRSwgMHg5QkIwLCAweDlCQjAsIDB4M0ZCNCwKKyAgICAweDlCQjUsIDB4OUJCNSwgMHgzMDU3LCAweDlCQjYsIDB4OUJCNiwgMHgzMDVBLCAweDlCQjgsIDB4OUJCOCwgMHgzMDU4LAorICAgIDB4OUJCOSwgMHg5QkI5LCAweDMwNUMsIDB4OUJCRCwgMHg5QkJELCAweDMwNUQsIDB4OUJCRiwgMHg5QkJGLCAweDMwNTUsCisgICAgMHg5QkMwLCAweDlCQzAsIDB4MTU2RSwgMHg5QkMxLCAweDlCQzEsIDB4MzA1NiwgMHg5QkMzLCAweDlCQzMsIDB4MzA1NCwKKyAgICAweDlCQzQsIDB4OUJDNCwgMHgzMDVCLCAweDlCQzYsIDB4OUJDNiwgMHgzMDUzLCAweDlCQzcsIDB4OUJDNywgMHgzMDUyLAorICAgIDB4OUJDOCwgMHg5QkM4LCAweDE1NkQsIDB4OUJDOSwgMHg5QkM5LCAweDE1NkIsIDB4OUJDQSwgMHg5QkNBLCAweDE1NkEsCisgICAgMHg5QkNGLCAweDlCQ0YsIDB4M0MzQywgMHg5QkQzLCAweDlCRDMsIDB4MzA1OSwgMHg5QkQ0LCAweDlCRDQsIDB4MzE5OSwKKyAgICAweDlCRDUsIDB4OUJENSwgMHgzMTlGLCAweDlCRDYsIDB4OUJENiwgMHgxNUZFLCAweDlCRDcsIDB4OUJENywgMHgzMTlBLAorICAgIDB4OUJEOSwgMHg5QkQ5LCAweDMxOUQsIDB4OUJEQSwgMHg5QkRBLCAweDMxQTEsIDB4OUJEQiwgMHg5QkRCLCAweDE1RkYsCisgICAgMHg5QkRDLCAweDlCREMsIDB4MzE5QywgMHg5QkRELCAweDlCREQsIDB4NDdDNiwgMHg5QkRFLCAweDlCREUsIDB4MzE5NCwKKyAgICAweDlCRTAsIDB4OUJFMCwgMHgzMTkzLCAweDlCRTEsIDB4OUJFMSwgMHgzMUEwLCAweDlCRTIsIDB4OUJFMiwgMHgzMTk3LAorICAgIDB4OUJFNCwgMHg5QkU0LCAweDMxOTUsIDB4OUJFNSwgMHg5QkU1LCAweDMxOUUsIDB4OUJFNiwgMHg5QkU2LCAweDMxOTYsCisgICAgMHg5QkU3LCAweDlCRTcsIDB4MTVGRCwgMHg5QkU4LCAweDlCRTgsIDB4MTVGQywgMHg5QkU5LCAweDlCRTksIDB4M0JDMSwKKyAgICAweDlCRUEsIDB4OUJFQiwgMHgzMTkxLCAweDlCRUMsIDB4OUJFQywgMHgzMTlCLCAweDlCRUQsIDB4OUJFRCwgMHgzRUQ3LAorICAgIDB4OUJGMCwgMHg5QkYwLCAweDMxOTgsIDB4OUJGMSwgMHg5QkYxLCAweDQ3QzcsIDB4OUJGNCwgMHg5QkY0LCAweDQ3QzgsCisgICAgMHg5QkY3LCAweDlCRjcsIDB4MzI5MywgMHg5QkY4LCAweDlCRjgsIDB4MzI5NiwgMHg5QkZELCAweDlCRkQsIDB4MTU2QywKKyAgICAweDlCRkYsIDB4OUJGRiwgMHgzOTFCLCAweDlDMDIsIDB4OUMwMiwgMHgzOTFBLCAweDlDMDUsIDB4OUMwNSwgMHgzMjk0LAorICAgIDB4OUMwNiwgMHg5QzA2LCAweDMyOUEsIDB4OUMwNywgMHg5QzA3LCAweDMyOTgsIDB4OUMwOCwgMHg5QzA4LCAweDMyOTIsCisgICAgMHg5QzA5LCAweDlDMDksIDB4MzI5RCwgMHg5QzBBLCAweDlDMEEsIDB4M0YzQSwgMHg5QzBCLCAweDlDMEIsIDB4MzI5MSwKKyAgICAweDlDMEMsIDB4OUMwQywgMHgzOTFDLCAweDlDMEQsIDB4OUMwRCwgMHgxNjYwLCAweDlDMEUsIDB4OUMwRSwgMHgzMjk5LAorICAgIDB4OUMxMCwgMHg5QzEwLCAweDNDM0EsIDB4OUMxMiwgMHg5QzEyLCAweDMyOTUsIDB4OUMxMywgMHg5QzEzLCAweDE2NUYsCisgICAgMHg5QzE0LCAweDlDMTQsIDB4MzI5QywgMHg5QzE1LCAweDlDMTUsIDB4M0YxRSwgMHg5QzE3LCAweDlDMTcsIDB4MzI5QiwKKyAgICAweDlDMUIsIDB4OUMxQiwgMHg0OTFCLCAweDlDMUMsIDB4OUMxQywgMHgzMzRDLCAweDlDMUQsIDB4OUMxRCwgMHgzMzRCLAorICAgIDB4OUMxRiwgMHg5QzFGLCAweDQ2MjIsIDB4OUMyMCwgMHg5QzIwLCAweDQ3Q0EsIDB4OUMyMSwgMHg5QzIxLCAweDMzNTIsCisgICAgMHg5QzIzLCAweDlDMjMsIDB4MzM0RSwgMHg5QzI0LCAweDlDMjQsIDB4MzM1MSwgMHg5QzI1LCAweDlDMjUsIDB4MTZCMCwKKyAgICAweDlDMjYsIDB4OUMyNiwgMHg0NUU2LCAweDlDMjgsIDB4OUMyOSwgMHgzMzRGLCAweDlDMkIsIDB4OUMyQiwgMHgzMzRBLAorICAgIDB4OUMyQywgMHg5QzJDLCAweDMzNEQsIDB4OUMyRCwgMHg5QzJELCAweDE2QUYsIDB4OUMyRSwgMHg5QzJFLCAweDNGMjIsCisgICAgMHg5QzJGLCAweDlDMkYsIDB4M0Q4NywgMHg5QzMxLCAweDlDMzEsIDB4MTZFRCwgMHg5QzMyLCAweDlDMzIsIDB4MzNGMiwKKyAgICAweDlDMzMsIDB4OUMzMywgMHgzM0VELCAweDlDMzQsIDB4OUMzNCwgMHgzM0YxLCAweDlDMzUsIDB4OUMzNSwgMHgzQzM5LAorICAgIDB4OUMzNiwgMHg5QzM2LCAweDMzRjQsIDB4OUMzNywgMHg5QzM3LCAweDMzRjAsIDB4OUMzOSwgMHg5QzM5LCAweDMzRUMsCisgICAgMHg5QzNBLCAweDlDM0EsIDB4M0Q3RSwgMHg5QzNCLCAweDlDM0IsIDB4MTZFRiwgMHg5QzNDLCAweDlDM0MsIDB4MzNFRiwKKyAgICAweDlDM0QsIDB4OUMzRCwgMHgzM0YzLCAweDlDM0UsIDB4OUMzRSwgMHgxNkVFLCAweDlDM0YsIDB4OUMzRiwgMHgzM0VBLAorICAgIDB4OUM0MCwgMHg5QzQwLCAweDMyOTcsIDB4OUM0MSwgMHg5QzQxLCAweDMzRUUsIDB4OUM0NCwgMHg5QzQ0LCAweDMzRUIsCisgICAgMHg5QzQ1LCAweDlDNDUsIDB4M0U3MSwgMHg5QzQ2LCAweDlDNDYsIDB4MzNFOCwgMHg5QzQ4LCAweDlDNDgsIDB4MzNFOSwKKyAgICAweDlDNDksIDB4OUM0OSwgMHgxNkVDLCAweDlDNEEsIDB4OUM0QSwgMHgzNDU3LCAweDlDNEIsIDB4OUM0QiwgMHgzNDU5LAorICAgIDB4OUM0QywgMHg5QzRDLCAweDM0NUMsIDB4OUM0RCwgMHg5QzRELCAweDM0NTgsIDB4OUM0RSwgMHg5QzRFLCAweDM0NUQsCisgICAgMHg5QzRGLCAweDlDNEYsIDB4M0MzNiwgMHg5QzUwLCAweDlDNTAsIDB4MzQ1NiwgMHg5QzUyLCAweDlDNTIsIDB4MzQ1NCwKKyAgICAweDlDNTMsIDB4OUM1MywgMHgzQzM3LCAweDlDNTQsIDB4OUM1NCwgMHgxNzE5LCAweDlDNTUsIDB4OUM1NSwgMHgzNDVBLAorICAgIDB4OUM1NiwgMHg5QzU2LCAweDE3MUIsIDB4OUM1NywgMHg5QzU3LCAweDE3MUEsIDB4OUM1OCwgMHg5QzU4LCAweDM0NTUsCisgICAgMHg5QzU5LCAweDlDNTksIDB4MzQ1QiwgMHg5QzVELCAweDlDNUQsIDB4M0VCRiwgMHg5QzVFLCAweDlDNUUsIDB4MzRCNSwKKyAgICAweDlDNUYsIDB4OUM1RiwgMHgxNzNBLCAweDlDNjAsIDB4OUM2MCwgMHgzNEI2LCAweDlDNjIsIDB4OUM2MiwgMHgzNEI0LAorICAgIDB4OUM2MywgMHg5QzYzLCAweDM0QjEsIDB4OUM2NiwgMHg5QzY2LCAweDM0QjMsIDB4OUM2NywgMHg5QzY3LCAweDM0QjIsCisgICAgMHg5QzY4LCAweDlDNjgsIDB4MzRGNCwgMHg5QzZELCAweDlDNkQsIDB4MzRGNiwgMHg5QzZFLCAweDlDNkUsIDB4MzRGNSwKKyAgICAweDlDNzEsIDB4OUM3MSwgMHgzNTE0LCAweDlDNzIsIDB4OUM3MiwgMHgzRUExLCAweDlDNzMsIDB4OUM3MywgMHgzNTEzLAorICAgIDB4OUM3NCwgMHg5Qzc0LCAweDM1MTIsIDB4OUM3NSwgMHg5Qzc1LCAweDM1MTUsIDB4OUM3NywgMHg5Qzc4LCAweDE3NjAsCisgICAgMHg5Qzc5LCAweDlDNzksIDB4MzU0MSwgMHg5QzdBLCAweDlDN0EsIDB4MzU0NSwgMHg5QzdCLCAweDlDN0IsIDB4M0MzOCwKKyAgICAweDlDN0MsIDB4OUM3QywgMHg0NTEyLCAweDlDRTUsIDB4OUNFNSwgMHgwQkUyLCAweDlDRTYsIDB4OUNFNiwgMHgyMzVGLAorICAgIDB4OUNFNywgMHg5Q0U3LCAweDI2MTAsIDB4OUNFOSwgMHg5Q0U5LCAweDBGNzksIDB4OUNFQSwgMHg5Q0VBLCAweDI2MEUsCisgICAgMHg5Q0VELCAweDlDRUQsIDB4MjYwRiwgMHg5Q0YxLCAweDlDRjIsIDB4Mjg3OSwgMHg5Q0YzLCAweDlDRjMsIDB4MTBGRSwKKyAgICAweDlDRjQsIDB4OUNGNCwgMHgxMEZDLCAweDlDRjUsIDB4OUNGNSwgMHgyODdCLCAweDlDRjYsIDB4OUNGNiwgMHgxMEZELAorICAgIDB4OUNGNywgMHg5Q0Y3LCAweDJBRjQsIDB4OUNGOSwgMHg5Q0Y5LCAweDJBRjcsIDB4OUNGQSwgMHg5Q0ZBLCAweDJBRjEsCisgICAgMHg5Q0ZCLCAweDlDRkIsIDB4MkFGOCwgMHg5Q0ZDLCAweDlDRkMsIDB4MkFGMCwgMHg5Q0ZELCAweDlDRkQsIDB4MkFGMiwKKyAgICAweDlDRkYsIDB4OUNGRiwgMHgyQUYzLCAweDlEMDAsIDB4OUQwMCwgMHgyQUY2LCAweDlEMDIsIDB4OUQwMiwgMHgzRjNCLAorICAgIDB4OUQwMywgMHg5RDAzLCAweDEyODQsIDB4OUQwNCwgMHg5RDA0LCAweDJBRkIsIDB4OUQwNSwgMHg5RDA1LCAweDJBRkEsCisgICAgMHg5RDA2LCAweDlEMDYsIDB4MTI4MiwgMHg5RDA3LCAweDlEMDcsIDB4MkFGNSwgMHg5RDA4LCAweDlEMDgsIDB4MkFGOSwKKyAgICAweDlEMDksIDB4OUQwOSwgMHgxMjgzLCAweDlEMEMsIDB4OUQwQywgMHgzQzQ2LCAweDlEMTAsIDB4OUQxMCwgMHgyRDJELAorICAgIDB4OUQxMiwgMHg5RDEyLCAweDEzQUUsIDB4OUQxNCwgMHg5RDE0LCAweDJEMjgsIDB4OUQxNSwgMHg5RDE1LCAweDEzQUEsCisgICAgMHg5RDE2LCAweDlEMTYsIDB4M0M3QywgMHg5RDE3LCAweDlEMTcsIDB4MkQyNSwgMHg5RDE4LCAweDlEMTgsIDB4MkQyQiwKKyAgICAweDlEMTksIDB4OUQxOSwgMHgyRDJFLCAweDlEMUIsIDB4OUQxQiwgMHgxM0FGLCAweDlEMUQsIDB4OUQxRCwgMHgyRDJBLAorICAgIDB4OUQxRSwgMHg5RDFFLCAweDJEMjcsIDB4OUQxRiwgMHg5RDFGLCAweDJEMkYsIDB4OUQyMCwgMHg5RDIwLCAweDJEMjYsCisgICAgMHg5RDIxLCAweDlEMjEsIDB4M0M0MSwgMHg5RDIyLCAweDlEMjIsIDB4MkQyQywgMHg5RDIzLCAweDlEMjMsIDB4MTNBQiwKKyAgICAweDlEMjUsIDB4OUQyNSwgMHgyRDI0LCAweDlEMjYsIDB4OUQyNiwgMHgxM0FDLCAweDlEMjgsIDB4OUQyOCwgMHgxM0FELAorICAgIDB4OUQyOSwgMHg5RDI5LCAweDJEMjksIDB4OUQyRCwgMHg5RDJELCAweDJGMDAsIDB4OUQyRSwgMHg5RDJGLCAweDJFRjMsCisgICAgMHg5RDMwLCAweDlEMzAsIDB4MkVGNywgMHg5RDMxLCAweDlEMzEsIDB4MkVGNSwgMHg5RDMzLCAweDlEMzMsIDB4MkVFRiwKKyAgICAweDlEMzQsIDB4OUQzNCwgMHg0MDRBLCAweDlEMzYsIDB4OUQzNiwgMHgyRUYyLCAweDlEMzcsIDB4OUQzNywgMHgyRUZDLAorICAgIDB4OUQzOCwgMHg5RDM4LCAweDJFRjYsIDB4OUQzOSwgMHg5RDM5LCAweDM5MkUsIDB4OUQzQiwgMHg5RDNCLCAweDE0QkYsCisgICAgMHg5RDNELCAweDlEM0QsIDB4MkVGRSwgMHg5RDNFLCAweDlEM0UsIDB4MkVGQiwgMHg5RDNGLCAweDlEM0YsIDB4MTRDMCwKKyAgICAweDlENDAsIDB4OUQ0MCwgMHgyRUZELCAweDlENDEsIDB4OUQ0MSwgMHgyRUYwLCAweDlENDIsIDB4OUQ0MywgMHgyRUY5LAorICAgIDB4OUQ0NCwgMHg5RDQ0LCAweDNGQUIsIDB4OUQ0NSwgMHg5RDQ1LCAweDJFRjgsIDB4OUQ0OSwgMHg5RDQ5LCAweDQ3Q0QsCisgICAgMHg5RDRBLCAweDlENEEsIDB4MzA2MSwgMHg5RDRCLCAweDlENEIsIDB4MzA2MywgMHg5RDRDLCAweDlENEMsIDB4MzA2NiwKKyAgICAweDlENEUsIDB4OUQ0RSwgMHg0NTM5LCAweDlENEYsIDB4OUQ0RiwgMHgzMDYwLCAweDlENTAsIDB4OUQ1MCwgMHgzRUNBLAorICAgIDB4OUQ1MSwgMHg5RDUxLCAweDE1NkYsIDB4OUQ1MiwgMHg5RDUyLCAweDMwNjgsIDB4OUQ1MywgMHg5RDUzLCAweDMwNUYsCisgICAgMHg5RDU0LCAweDlENTQsIDB4MzA2OSwgMHg5RDU2LCAweDlENTYsIDB4MzA2NSwgMHg5RDU3LCAweDlENTcsIDB4MzA2NywKKyAgICAweDlENTgsIDB4OUQ1OCwgMHgzMDZCLCAweDlENTksIDB4OUQ1OSwgMHgzMDY0LCAweDlENUEsIDB4OUQ1QSwgMHgzMDZDLAorICAgIDB4OUQ1QiwgMHg5RDVCLCAweDMwNjIsIDB4OUQ1QywgMHg5RDVDLCAweDMwNUUsIDB4OUQ1RCwgMHg5RDVELCAweDE1NzAsCisgICAgMHg5RDVFLCAweDlENUUsIDB4M0U2RSwgMHg5RDVGLCAweDlENUYsIDB4MzA2QSwgMHg5RDYwLCAweDlENjAsIDB4MTU3MSwKKyAgICAweDlENjEsIDB4OUQ2MSwgMHgxNjAxLCAweDlENjcsIDB4OUQ2NywgMHgyRUYxLCAweDlENjgsIDB4OUQ2OCwgMHgzMUJCLAorICAgIDB4OUQ2OSwgMHg5RDY5LCAweDMxQjIsIDB4OUQ2QSwgMHg5RDZBLCAweDE2MDMsIDB4OUQ2QiwgMHg5RDZCLCAweDMxQUUsCisgICAgMHg5RDZDLCAweDlENkMsIDB4MTYwNCwgMHg5RDZELCAweDlENkQsIDB4M0JBQywgMHg5RDZFLCAweDlENkUsIDB4NDMzQiwKKyAgICAweDlENkYsIDB4OUQ2RiwgMHgzMUI3LCAweDlENzAsIDB4OUQ3MCwgMHgzMUIxLCAweDlENzEsIDB4OUQ3MSwgMHgzMUE3LAorICAgIDB4OUQ3MiwgMHg5RDcyLCAweDE2MDIsIDB4OUQ3MywgMHg5RDczLCAweDMxQjQsIDB4OUQ3NCwgMHg5RDc1LCAweDMxQUYsCisgICAgMHg5RDc3LCAweDlENzcsIDB4MzFBMiwgMHg5RDc4LCAweDlENzgsIDB4MzFBOSwgMHg5RDc5LCAweDlENzksIDB4MzFCOCwKKyAgICAweDlEN0IsIDB4OUQ3QiwgMHgzMUI1LCAweDlEN0MsIDB4OUQ3QywgMHgzRUZFLCAweDlEN0QsIDB4OUQ3RCwgMHgzMUFELAorICAgIDB4OUQ3RSwgMHg5RDdFLCAweDM5MjUsIDB4OUQ3RiwgMHg5RDdGLCAweDMxQjksIDB4OUQ4MCwgMHg5RDgwLCAweDMxQTgsCisgICAgMHg5RDgxLCAweDlEODEsIDB4MzFBMywgMHg5RDgyLCAweDlEODIsIDB4MzFCNiwgMHg5RDgzLCAweDlEODMsIDB4MzkyNiwKKyAgICAweDlEODQsIDB4OUQ4NCwgMHgzMUE1LCAweDlEODUsIDB4OUQ4NSwgMHgzMUIzLCAweDlEODYsIDB4OUQ4NiwgMHgzMUFBLAorICAgIDB4OUQ4NywgMHg5RDg3LCAweDMxQkEsIDB4OUQ4OCwgMHg5RDg4LCAweDMxQTYsIDB4OUQ4OSwgMHg5RDg5LCAweDE2MDAsCisgICAgMHg5RDhBLCAweDlEOEEsIDB4MzFBNCwgMHg5RDhCLCAweDlEOEMsIDB4MzFBQiwgMHg5RDkwLCAweDlEOTAsIDB4MzJBNCwKKyAgICAweDlEOTIsIDB4OUQ5MiwgMHgzMkEyLCAweDlEOTMsIDB4OUQ5MywgMHg0M0YzLCAweDlEOTQsIDB4OUQ5NCwgMHgzMkE3LAorICAgIDB4OUQ5NiwgMHg5RDk2LCAweDMyQjMsIDB4OUQ5NywgMHg5RDk3LCAweDMyQUEsIDB4OUQ5OCwgMHg5RDk4LCAweDMyQTMsCisgICAgMHg5RDk5LCAweDlEOTksIDB4MzI5RiwgMHg5RDlBLCAweDlEOUEsIDB4MzJBQywgMHg5RDlCLCAweDlEOUIsIDB4MzJBNSwKKyAgICAweDlEOUMsIDB4OUQ5QywgMHgzMkE4LCAweDlEOUQsIDB4OUQ5RCwgMHgzMkExLCAweDlEOUUsIDB4OUQ5RSwgMHgzMkFGLAorICAgIDB4OUQ5RiwgMHg5RDlGLCAweDMyOUUsIDB4OURBMCwgMHg5REEwLCAweDMyQTYsIDB4OURBMSwgMHg5REExLCAweDMyQUIsCisgICAgMHg5REEyLCAweDlEQTIsIDB4MzJBRCwgMHg5REEzLCAweDlEQTMsIDB4MzJCMCwgMHg5REE0LCAweDlEQTQsIDB4MzJBMCwKKyAgICAweDlEQTUsIDB4OURBNSwgMHgzQzRCLCAweDlEQTYsIDB4OURBNywgMHgzMkI0LCAweDlEQTgsIDB4OURBOCwgMHgzMkFFLAorICAgIDB4OURBOSwgMHg5REE5LCAweDMyQjIsIDB4OURBQSwgMHg5REFBLCAweDMyQTksIDB4OURBQiwgMHg5REFCLCAweDNGMzAsCisgICAgMHg5REFDLCAweDlEQUMsIDB4MzM2MiwgMHg5REFELCAweDlEQUQsIDB4MzM2NSwgMHg5REFGLCAweDlEQUYsIDB4MTZCMSwKKyAgICAweDlEQjEsIDB4OURCMSwgMHgzMzY0LCAweDlEQjIsIDB4OURCMiwgMHgzMzY5LCAweDlEQjMsIDB4OURCMywgMHgzMzY3LAorICAgIDB4OURCNCwgMHg5REI0LCAweDE2QjIsIDB4OURCNSwgMHg5REI1LCAweDMzNUUsIDB4OURCNiwgMHg5REI2LCAweDMzNTQsCisgICAgMHg5REI3LCAweDlEQjcsIDB4MzM1MywgMHg5REI4LCAweDlEQjgsIDB4MTZCNCwgMHg5REI5LCAweDlEQkEsIDB4MzM2MCwKKyAgICAweDlEQkIsIDB4OURCQiwgMHgzMzVELCAweDlEQkMsIDB4OURCQywgMHgzMzU1LCAweDlEQkQsIDB4OURCRCwgMHg0N0QwLAorICAgIDB4OURCRSwgMHg5REJFLCAweDMzNUEsIDB4OURCRiwgMHg5REJGLCAweDMyQjEsIDB4OURDMCwgMHg5REMwLCAweDQzRjIsCisgICAgMHg5REMxLCAweDlEQzEsIDB4MzM1NiwgMHg5REMyLCAweDlEQzIsIDB4MTZCMywgMHg5REMzLCAweDlEQzMsIDB4MzM1QywKKyAgICAweDlEQzQsIDB4OURDNCwgMHgzOTI5LCAweDlEQzUsIDB4OURDNSwgMHgzMzVCLCAweDlEQzcsIDB4OURDNywgMHgzMzU3LAorICAgIDB4OURDOCwgMHg5REM4LCAweDMzNjMsIDB4OURDOSwgMHg5REM5LCAweDQ1NzksIDB4OURDQSwgMHg5RENBLCAweDMzNTgsCisgICAgMHg5RENCLCAweDlEQ0IsIDB4MzNGOSwgMHg5RENDLCAweDlEQ0MsIDB4MzM2NiwgMHg5RENELCAweDlEQ0QsIDB4MzM2OCwKKyAgICAweDlEQ0UsIDB4OURDRSwgMHgzMzVGLCAweDlEQ0YsIDB4OURDRiwgMHgzMzU5LCAweDlERDAsIDB4OUREMCwgMHgzM0ZBLAorICAgIDB4OUREMSwgMHg5REQxLCAweDMzRkMsIDB4OUREMiwgMHg5REQyLCAweDMzRjYsIDB4OUREMywgMHg5REQzLCAweDE2RjAsCisgICAgMHg5REQ0LCAweDlERDQsIDB4MzkxRSwgMHg5REQ1LCAweDlERDUsIDB4MzQwMywgMHg5REQ2LCAweDlERDYsIDB4MzQwMSwKKyAgICAweDlERDcsIDB4OURENywgMHgxNkYxLCAweDlERDgsIDB4OUREOCwgMHgzNDAwLCAweDlERDksIDB4OUREOSwgMHgzM0ZGLAorICAgIDB4OUREQSwgMHg5RERBLCAweDMzRjgsIDB4OUREQiwgMHg5RERCLCAweDMzRjUsIDB4OUREQywgMHg5RERDLCAweDMzRkIsCisgICAgMHg5RERELCAweDlEREQsIDB4MzQwNCwgMHg5RERFLCAweDlEREUsIDB4MzNGNywgMHg5RERGLCAweDlEREYsIDB4MzNGRCwKKyAgICAweDlERTEsIDB4OURFMSwgMHgzNDY2LCAweDlERTIsIDB4OURFMiwgMHgzNDZCLCAweDlERTMsIDB4OURFMywgMHgzNDYxLAorICAgIDB4OURFNCwgMHg5REU0LCAweDM0NjQsIDB4OURFNSwgMHg5REU1LCAweDE3MUMsIDB4OURFNiwgMHg5REU2LCAweDM0NjgsCisgICAgMHg5REU4LCAweDlERTgsIDB4MzQ2RiwgMHg5REU5LCAweDlERTksIDB4MzNGRSwgMHg5REVCLCAweDlERUIsIDB4MzQ2MiwKKyAgICAweDlERUMsIDB4OURFQywgMHgzNDZDLCAweDlERUQsIDB4OURFRCwgMHgzNDcwLCAweDlERUUsIDB4OURFRSwgMHgzNDY3LAorICAgIDB4OURFRiwgMHg5REVGLCAweDM0NjAsIDB4OURGMCwgMHg5REYwLCAweDM0NkEsIDB4OURGMiwgMHg5REYyLCAweDM0NjksCisgICAgMHg5REYzLCAweDlERjMsIDB4MzQ2RSwgMHg5REY0LCAweDlERjQsIDB4MzQ2RCwgMHg5REY1LCAweDlERjUsIDB4MzQwMiwKKyAgICAweDlERjYsIDB4OURGNiwgMHgzNDY1LCAweDlERjcsIDB4OURGNywgMHgzNDVGLCAweDlERjgsIDB4OURGOCwgMHgzNDYzLAorICAgIDB4OURGOSwgMHg5REZBLCAweDE3M0IsIDB4OURGQiwgMHg5REZCLCAweDM0NUUsIDB4OURGQywgMHg5REZDLCAweDQ3RDEsCisgICAgMHg5REZELCAweDlERkQsIDB4MzRDMSwgMHg5REZFLCAweDlERkUsIDB4MzRCOCwgMHg5REZGLCAweDlERkYsIDB4MzRDMCwKKyAgICAweDlFMDAsIDB4OUUwMSwgMHgzNEJELCAweDlFMDIsIDB4OUUwMiwgMHgzNEI3LCAweDlFMDMsIDB4OUUwMywgMHgzNEJBLAorICAgIDB4OUUwNCwgMHg5RTA0LCAweDM0QzIsIDB4OUUwNSwgMHg5RTA1LCAweDM0QkMsIDB4OUUwNiwgMHg5RTA2LCAweDM0QkIsCisgICAgMHg5RTA3LCAweDlFMDcsIDB4MzRCOSwgMHg5RTA5LCAweDlFMDksIDB4MzRCRiwgMHg5RTBBLCAweDlFMEEsIDB4NDU3RSwKKyAgICAweDlFMEIsIDB4OUUwQiwgMHgzNEY3LCAweDlFMEMsIDB4OUUwQywgMHg0NTdBLCAweDlFMEQsIDB4OUUwRCwgMHgzNEY4LAorICAgIDB4OUUwRSwgMHg5RTBFLCAweDM5MjgsIDB4OUUwRiwgMHg5RTBGLCAweDM0RkEsIDB4OUUxMCwgMHg5RTEwLCAweDM0RjksCisgICAgMHg5RTExLCAweDlFMTEsIDB4MzRGQywgMHg5RTEyLCAweDlFMTIsIDB4MzRGQiwgMHg5RTEzLCAweDlFMTMsIDB4MzUxNywKKyAgICAweDlFMTQsIDB4OUUxNCwgMHgzNTE2LCAweDlFMTUsIDB4OUUxNSwgMHgzNTMwLCAweDlFMTcsIDB4OUUxNywgMHgzNTMxLAorICAgIDB4OUUxOCwgMHg5RTE4LCAweDNDNDQsIDB4OUUxOSwgMHg5RTE5LCAweDM1M0QsIDB4OUUxQSwgMHg5RTFBLCAweDE3NjUsCisgICAgMHg5RTFCLCAweDlFMUIsIDB4MTc2OSwgMHg5RTFDLCAweDlFMUMsIDB4M0Y4NCwgMHg5RTFELCAweDlFMUQsIDB4MzU0NiwKKyAgICAweDlFMUUsIDB4OUUxRSwgMHgxNzZBLCAweDlFMUYsIDB4OUUxRiwgMHg0NTEzLCAweDlFNzUsIDB4OUU3NSwgMHgwQkUzLAorICAgIDB4OUU3OSwgMHg5RTc5LCAweDE2NjEsIDB4OUU3QSwgMHg5RTdBLCAweDMzNkEsIDB4OUU3QiwgMHg5RTdCLCAweDQzRjgsCisgICAgMHg5RTdDLCAweDlFN0QsIDB4MTczRCwgMHg5RTdGLCAweDlFN0YsIDB4MEJFNCwgMHg5RTgwLCAweDlFODAsIDB4MjYxMSwKKyAgICAweDlFODEsIDB4OUU4MSwgMHgzRjBGLCAweDlFODIsIDB4OUU4MiwgMHgwRjdBLCAweDlFODMsIDB4OUU4MywgMHgyQUZDLAorICAgIDB4OUU4NCwgMHg5RTg0LCAweDNGNzYsIDB4OUU4NSwgMHg5RTg1LCAweDNFRjIsIDB4OUU4NiwgMHg5RTg3LCAweDJEMzEsCisgICAgMHg5RTg4LCAweDlFODgsIDB4MkQzMCwgMHg5RTg5LCAweDlFODksIDB4MkYwMiwgMHg5RThBLCAweDlFOEEsIDB4MkYwMSwKKyAgICAweDlFOEIsIDB4OUU4QiwgMHgxNEMxLCAweDlFOEMsIDB4OUU4QywgMHgzMDZFLCAweDlFOEQsIDB4OUU4RCwgMHgyRjAzLAorICAgIDB4OUU4RSwgMHg5RThFLCAweDMwNkQsIDB4OUU5MCwgMHg5RTkwLCAweDM5MzEsIDB4OUU5MSwgMHg5RTkxLCAweDMxQkQsCisgICAgMHg5RTkyLCAweDlFOTIsIDB4MTYwNSwgMHg5RTkzLCAweDlFOTMsIDB4MTYwNywgMHg5RTk0LCAweDlFOTQsIDB4MzFCQywKKyAgICAweDlFOTUsIDB4OUU5NSwgMHgzOTMyLCAweDlFOTYsIDB4OUU5NiwgMHgzRkJDLCAweDlFOTcsIDB4OUU5NywgMHgxNjA2LAorICAgIDB4OUU5OCwgMHg5RTk4LCAweDNGMjcsIDB4OUU5OSwgMHg5RTk5LCAweDMyQjYsIDB4OUU5QSwgMHg5RTlBLCAweDMyQjgsCisgICAgMHg5RTlCLCAweDlFOUIsIDB4MzJCNywgMHg5RTlDLCAweDlFOUMsIDB4MzM2QiwgMHg5RTlELCAweDlFOUQsIDB4MTZCNSwKKyAgICAweDlFOUUsIDB4OUU5RSwgMHgzOTMzLCAweDlFOUYsIDB4OUU5RiwgMHgxNzFELCAweDlFQTAsIDB4OUVBMCwgMHgzNEMzLAorICAgIDB4OUVBMSwgMHg5RUExLCAweDM0RkQsIDB4OUVBMiwgMHg5RUEyLCAweDM5MzQsIDB4OUVBNCwgMHg5RUE0LCAweDM1NEEsCisgICAgMHg5RUE1LCAweDlFQTUsIDB4MEJFNSwgMHg5RUE2LCAweDlFQTYsIDB4NDk0NCwgMHg5RUE3LCAweDlFQTcsIDB4Mjg3QywKKyAgICAweDlFQTgsIDB4OUVBOCwgMHgzRjc1LCAweDlFQTksIDB4OUVBOSwgMHgxMjg1LCAweDlFQUEsIDB4OUVBQSwgMHgzOTM2LAorICAgIDB4OUVBQiwgMHg5RUFCLCAweDNFOTIsIDB4OUVBQywgMHg5RUFDLCAweDQzRjQsIDB4OUVBRCwgMHg5RUFELCAweDJEMzQsCisgICAgMHg5RUFFLCAweDlFQUUsIDB4MkQzMywgMHg5RUFGLCAweDlFQUYsIDB4MzkzNywgMHg5RUIwLCAweDlFQjAsIDB4MkYwNCwKKyAgICAweDlFQjEsIDB4OUVCMSwgMHg0N0Q0LCAweDlFQjQsIDB4OUVCNCwgMHgxNjA4LCAweDlFQjUsIDB4OUVCNSwgMHgxNjYyLAorICAgIDB4OUVCNiwgMHg5RUI2LCAweDM0MDUsIDB4OUVCNywgMHg5RUI3LCAweDM1NDIsIDB4OUVCQiwgMHg5RUJCLCAweDBCRTYsCisgICAgMHg5RUJDLCAweDlFQkMsIDB4MTBGRiwgMHg5RUJELCAweDlFQkQsIDB4NDdENSwgMHg5RUJFLCAweDlFQkUsIDB4MTI4NiwKKyAgICAweDlFQkYsIDB4OUVCRiwgMHgzRDc4LCAweDlFQzAsIDB4OUVDMCwgMHgzMUJFLCAweDlFQzEsIDB4OUVDMSwgMHgzOTM5LAorICAgIDB4OUVDMiwgMHg5RUMyLCAweDM0NzEsIDB4OUVDMywgMHg5RUMzLCAweDBEQkIsIDB4OUVDNCwgMHg5RUM0LCAweDQ1MTQsCisgICAgMHg5RUM2LCAweDlFQzYsIDB4NDdENiwgMHg5RUM3LCAweDlFQzcsIDB4NDU3NywgMHg5RUM4LCAweDlFQzgsIDB4MkYwNSwKKyAgICAweDlFQ0MsIDB4OUVDQywgMHgxNzUxLCAweDlFQ0QsIDB4OUVDRCwgMHgwREJDLCAweDlFQ0UsIDB4OUVDRSwgMHgxMjg3LAorICAgIDB4OUVDRiwgMHg5RUNGLCAweDE0QzIsIDB4OUVEMCwgMHg5RUQwLCAweDM0NzIsIDB4OUVEMSwgMHg5RUQxLCAweDBEQkQsCisgICAgMHg5RUQzLCAweDlFRDMsIDB4MkFGRCwgMHg5RUQ0LCAweDlFRDQsIDB4MTNCMSwgMHg5RUQ1LCAweDlFRDYsIDB4MkQzNSwKKyAgICAweDlFRDgsIDB4OUVEOCwgMHgxM0IwLCAweDlFREEsIDB4OUVEQSwgMHgyRjA2LCAweDlFREIsIDB4OUVEQiwgMHgxNEM2LAorICAgIDB4OUVEQywgMHg5RURELCAweDE0QzQsIDB4OUVERSwgMHg5RURFLCAweDE0QzMsIDB4OUVERiwgMHg5RURGLCAweDMwNkYsCisgICAgMHg5RUUwLCAweDlFRTAsIDB4MTU3MiwgMHg5RUUyLCAweDlFRTIsIDB4NDdEOCwgMHg5RUU0LCAweDlFRTQsIDB4MzJCQSwKKyAgICAweDlFRTUsIDB4OUVFNSwgMHgzMkI5LCAweDlFRTYsIDB4OUVFNiwgMHgzMkJDLCAweDlFRTcsIDB4OUVFNywgMHgzMkJCLAorICAgIDB4OUVFOCwgMHg5RUU4LCAweDE2NjMsIDB4OUVFQiwgMHg5RUVCLCAweDMzNkMsIDB4OUVFRCwgMHg5RUVELCAweDMzNkUsCisgICAgMHg5RUVFLCAweDlFRUUsIDB4MzM2RCwgMHg5RUVGLCAweDlFRUYsIDB4MTZCNiwgMHg5RUYwLCAweDlFRjAsIDB4MzQwNiwKKyAgICAweDlFRjEsIDB4OUVGMSwgMHg0N0Q5LCAweDlFRjIsIDB4OUVGMywgMHgzNDczLCAweDlFRjQsIDB4OUVGNCwgMHgxNzFFLAorICAgIDB4OUVGNSwgMHg5RUY1LCAweDM0RkUsIDB4OUVGNiwgMHg5RUY2LCAweDM1MTgsIDB4OUVGNywgMHg5RUY3LCAweDE3NjIsCisgICAgMHg5RUY4LCAweDlFRjgsIDB4NDdEQSwgMHg5RUY5LCAweDlFRjksIDB4MjM2MCwgMHg5RUZBLCAweDlFRkEsIDB4MkQzNywKKyAgICAweDlFRkIsIDB4OUVGQiwgMHgyRjA3LCAweDlFRkMsIDB4OUVGQywgMHgzMUJGLCAweDlFRkQsIDB4OUVGRCwgMHgyNjEyLAorICAgIDB4OUVGRSwgMHg5RUZFLCAweDQ3Q0UsIDB4OUVGRiwgMHg5RUZGLCAweDJGMDgsIDB4OUYwMCwgMHg5RjAwLCAweDMwNzEsCisgICAgMHg5RjAxLCAweDlGMDEsIDB4MzA3MCwgMHg5RjAyLCAweDlGMDIsIDB4Mzk0MCwgMHg5RjA2LCAweDlGMDYsIDB4MzQ3NSwKKyAgICAweDlGMDcsIDB4OUYwNywgMHgxNzNGLCAweDlGMDgsIDB4OUYwOCwgMHgzOTQxLCAweDlGMDksIDB4OUYwOSwgMHgzNEZGLAorICAgIDB4OUYwQSwgMHg5RjBBLCAweDM1MTksIDB4OUYwRSwgMHg5RjBFLCAweDBGN0IsIDB4OUYwRiwgMHg5RjEwLCAweDJBRkUsCisgICAgMHg5RjEyLCAweDlGMTIsIDB4MkQzOCwgMHg5RjEzLCAweDlGMTMsIDB4MEY3QywgMHg5RjE1LCAweDlGMTUsIDB4MTU3MywKKyAgICAweDlGMTYsIDB4OUYxNiwgMHgzMDcyLCAweDlGMTcsIDB4OUYxNywgMHgzOTQ1LCAweDlGMTgsIDB4OUYxOCwgMHgzMzcwLAorICAgIDB4OUYxOSwgMHg5RjE5LCAweDE2QjcsIDB4OUYxQSwgMHg5RjFBLCAweDMzNzEsIDB4OUYxQiwgMHg5RjFCLCAweDMzNkYsCisgICAgMHg5RjFDLCAweDlGMUMsIDB4MzQ3NiwgMHg5RjFFLCAweDlGMUUsIDB4MzRDNCwgMHg5RjIwLCAweDlGMjAsIDB4MEY3RCwKKyAgICAweDlGMjIsIDB4OUYyMiwgMHgyRjBCLCAweDlGMjMsIDB4OUYyMywgMHgyRjBBLCAweDlGMjQsIDB4OUYyNCwgMHgyRjA5LAorICAgIDB4OUYyNSwgMHg5RjI1LCAweDMwNzMsIDB4OUYyNiwgMHg5RjI2LCAweDNGOTAsIDB4OUYyNywgMHg5RjI3LCAweDQ2MjAsCisgICAgMHg5RjI4LCAweDlGMjgsIDB4MzA3NywgMHg5RjI5LCAweDlGMjksIDB4MzA3NiwgMHg5RjJBLCAweDlGMkEsIDB4MzA3NSwKKyAgICAweDlGMkIsIDB4OUYyQiwgMHgzMDc0LCAweDlGMkMsIDB4OUYyQywgMHgxNTc0LCAweDlGMkQsIDB4OUYyRCwgMHgzMUMwLAorICAgIDB4OUYyRSwgMHg5RjJFLCAweDMyQkUsIDB4OUYyRiwgMHg5RjJGLCAweDE2NjQsIDB4OUYzMCwgMHg5RjMwLCAweDMyQkQsCisgICAgMHg5RjMxLCAweDlGMzEsIDB4MzM3MiwgMHg5RjMyLCAweDlGMzIsIDB4MzQwOSwgMHg5RjMzLCAweDlGMzMsIDB4MzQwOCwKKyAgICAweDlGMzQsIDB4OUYzNCwgMHgxNkYyLCAweDlGMzUsIDB4OUYzNSwgMHgzNDA3LCAweDlGMzYsIDB4OUYzNiwgMHgzNDc5LAorICAgIDB4OUYzNywgMHg5RjM3LCAweDM0NzgsIDB4OUYzOCwgMHg5RjM4LCAweDM0NzcsIDB4OUYzOSwgMHg5RjM5LCAweDM5NDcsCisgICAgMHg5RjNCLCAweDlGM0IsIDB4MTEwMCwgMHg5RjNELCAweDlGM0QsIDB4MkQzOSwgMHg5RjNFLCAweDlGM0UsIDB4MTRDNywKKyAgICAweDlGNDAsIDB4OUY0MSwgMHgzMUMxLCAweDlGNDIsIDB4OUY0MiwgMHgzNDBBLCAweDlGNDMsIDB4OUY0MywgMHgzNDdBLAorICAgIDB4OUY0NCwgMHg5RjQ0LCAweDQ3REIsIDB4OUY0NSwgMHg5RjQ1LCAweDM5NEEsIDB4OUY0NiwgMHg5RjQ2LCAweDM0QzUsCisgICAgMHg5RjQ3LCAweDlGNDcsIDB4MzUwMCwgMHg5RjQ4LCAweDlGNDgsIDB4MzUzMiwgMHg5RjQ5LCAweDlGNDksIDB4MzU0QywKKyAgICAweDlGNEEsIDB4OUY0QSwgMHgxMTAxLCAweDlGNEIsIDB4OUY0QiwgMHgxNEM4LCAweDlGNEMsIDB4OUY0QywgMHgzMDc4LAorICAgIDB4OUY0RCwgMHg5RjRELCAweDMxQzMsIDB4OUY0RSwgMHg5RjRFLCAweDMzNzMsIDB4OUY0RiwgMHg5RjRGLCAweDM0N0IsCisgICAgMHg5RjUwLCAweDlGNTAsIDB4NDk0MywgMHg5RjUyLCAweDlGNTIsIDB4MTI4OSwgMHg5RjUzLCAweDlGNTMsIDB4M0Y4MCwKKyAgICAweDlGNTQsIDB4OUY1NCwgMHgyRjBDLCAweDlGNTUsIDB4OUY1NSwgMHgzMDc5LCAweDlGNTYsIDB4OUY1OCwgMHgzMUM0LAorICAgIDB4OUY1OSwgMHg5RjU5LCAweDMyQzMsIDB4OUY1QSwgMHg5RjVBLCAweDNGMjMsIDB4OUY1QiwgMHg5RjVCLCAweDMyQkYsCisgICAgMHg5RjVDLCAweDlGNUMsIDB4MTZCOCwgMHg5RjVELCAweDlGNUQsIDB4MzJDMiwgMHg5RjVFLCAweDlGNUUsIDB4MzJDMSwKKyAgICAweDlGNUYsIDB4OUY1RiwgMHgxNjY1LCAweDlGNjAsIDB4OUY2MCwgMHgzMkMwLCAweDlGNjEsIDB4OUY2MSwgMHgxNjY3LAorICAgIDB4OUY2MiwgMHg5RjYyLCAweDM5NEYsIDB4OUY2MywgMHg5RjYzLCAweDE2NjYsIDB4OUY2NCwgMHg5RjY0LCAweDMzNzUsCisgICAgMHg5RjY1LCAweDlGNjUsIDB4MzM3NCwgMHg5RjY2LCAweDlGNjcsIDB4MTZCOSwgMHg5RjY5LCAweDlGNjksIDB4Mzk1MCwKKyAgICAweDlGNkEsIDB4OUY2QSwgMHgxNkY0LCAweDlGNkIsIDB4OUY2QiwgMHgzNDBCLCAweDlGNkMsIDB4OUY2QywgMHgxNkYzLAorICAgIDB4OUY2RSwgMHg5RjZGLCAweDM0N0UsIDB4OUY3MCwgMHg5RjcwLCAweDM0N0QsIDB4OUY3MSwgMHg5RjcxLCAweDM0N0MsCisgICAgMHg5RjcyLCAweDlGNzIsIDB4MTc0MSwgMHg5Rjc0LCAweDlGNzYsIDB4MzRDNiwgMHg5Rjc3LCAweDlGNzcsIDB4MTc0MCwKKyAgICAweDlGNzgsIDB4OUY3OCwgMHgzNTAxLCAweDlGNzksIDB4OUY3OSwgMHgzNTA0LCAweDlGN0EsIDB4OUY3QSwgMHgzNTAzLAorICAgIDB4OUY3QiwgMHg5RjdCLCAweDM1MDIsIDB4OUY3RSwgMHg5RjdFLCAweDM1NEIsIDB4OUY3RiwgMHg5RjdGLCAweDQ2ODAsCisgICAgMHg5RjhELCAweDlGOEQsIDB4MTNCMiwgMHg5RjhFLCAweDlGOEUsIDB4Mzk1MiwgMHg5RjkwLCAweDlGOTAsIDB4MTU3QywKKyAgICAweDlGOTEsIDB4OUY5MSwgMHgzMkM0LCAweDlGOTIsIDB4OUY5MiwgMHgzMzc2LCAweDlGOTQsIDB4OUY5NCwgMHgxNkY1LAorICAgIDB4OUY5NSwgMHg5Rjk1LCAweDM0MEMsIDB4OUY5OCwgMHg5Rjk4LCAweDM1NEQsIDB4OUY5OSwgMHg5Rjk5LCAweDQ1ODcsCisgICAgMHg5RjlDLCAweDlGOUMsIDB4MTNCMywgMHg5RjlGLCAweDlGOUYsIDB4NDY0NiwgMHg5RkEwLCAweDlGQTAsIDB4MkYwRCwKKyAgICAweDlGQTIsIDB4OUZBMiwgMHgzNDBELCAweDlGQTQsIDB4OUZBNCwgMHgzNTFBLCAweDlGQTUsIDB4OUZBNSwgMHgzRjcwLAorICAgIDB4RTAwMCwgMHhFMDAwLCAweDQwMEIsIDB4RTAwMiwgMHhFMDAzLCAweDQwMEQsIDB4RTAwOSwgMHhFMDBBLCAweDQwMTQsCisgICAgMHhFMDBDLCAweEUwMEMsIDB4NDAxNywgMHhFMDBFLCAweEUwMEUsIDB4NDAxOSwgMHhFMDEyLCAweEUwMTYsIDB4NDAxRCwKKyAgICAweEUwMTgsIDB4RTAxOCwgMHg0MDIzLCAweEUwMUEsIDB4RTAxRSwgMHg0MDI1LCAweEUwMjAsIDB4RTAyMCwgMHg0MDJCLAorICAgIDB4RTAyMiwgMHhFMDIzLCAweDQwMkQsIDB4RTAyNSwgMHhFMDI1LCAweDQwMzAsIDB4RTAyRCwgMHhFMDJFLCAweDQwMzgsCisgICAgMHhFMDMwLCAweEUwMzAsIDB4NDAzQiwgMHhFMDMyLCAweEUwMzgsIDB4NDAzRCwgMHhFMDNCLCAweEUwM0MsIDB4NDA0NiwKKyAgICAweEUwNDUsIDB4RTA0NSwgMHg0MDUwLCAweEUwNEMsIDB4RTA0QywgMHg0MDU3LCAweEUwNUEsIDB4RTA1QSwgMHg0MDY1LAorICAgIDB4RTA1QywgMHhFMDVDLCAweDQwNjcsIDB4RTA1RiwgMHhFMDYxLCAweDQwNkEsIDB4RTA2NCwgMHhFMDY0LCAweDQwNkYsCisgICAgMHhFMDY2LCAweEUwNjYsIDB4NDA3MSwgMHhFMDZDLCAweEUwNkMsIDB4NDA3NywgMHhFMDcxLCAweEUwNzEsIDB4NDA3QywKKyAgICAweEUwNzQsIDB4RTA3NSwgMHg0MDdGLCAweEUwNzgsIDB4RTA3OCwgMHg0MDgzLCAweEUwN0QsIDB4RTA3RCwgMHg0MDg4LAorICAgIDB4RTA4NywgMHhFMDg3LCAweDQwOTIsIDB4RTA4OSwgMHhFMDhBLCAweDQwOTQsIDB4RTA4QywgMHhFMDhDLCAweDQwOTcsCisgICAgMHhFMDkzLCAweEUwOTQsIDB4NDA5RSwgMHhFMDk5LCAweEUwOUEsIDB4NDBBNCwgMHhFMDlDLCAweEUwOUUsIDB4NDBBNywKKyAgICAweEUwQTYsIDB4RTBBNywgMHg0MEIxLCAweEUwQTksIDB4RTBBOSwgMHg0MEI0LCAweEUwQUIsIDB4RTBBQiwgMHg0MEI2LAorICAgIDB4RTBBRSwgMHhFMEFFLCAweDQwQjksIDB4RTBCQSwgMHhFMEJBLCAweDQwQzUsIDB4RTBCQywgMHhFMEJDLCAweDQwQzcsCisgICAgMHhFMEJFLCAweEUwQkUsIDB4NDBDOSwgMHhFMEMzLCAweEUwQzMsIDB4NDBDRSwgMHhFMEM1LCAweEUwQzUsIDB4NDBEMCwKKyAgICAweEUwQzcsIDB4RTBDOCwgMHg0MEQyLCAweEUwQ0EsIDB4RTBDQSwgMHg0MEQ1LCAweEUwRDAsIDB4RTBEMCwgMHg0MERCLAorICAgIDB4RTBENCwgMHhFMEQ1LCAweDQwREYsIDB4RTBEQywgMHhFMERDLCAweDQwRTcsIDB4RTBERiwgMHhFMERGLCAweDQwRUEsCisgICAgMHhFMEUyLCAweEUwRTUsIDB4NDBFRCwgMHhFMEU3LCAweEUwRTksIDB4NDBGMiwgMHhFMEVCLCAweEUwRUMsIDB4NDBGNiwKKyAgICAweEUwRUUsIDB4RTBFRSwgMHg0MEY5LCAweEUwRjIsIDB4RTBGMiwgMHg0MEZELCAweEUwRjgsIDB4RTBGOSwgMHg0MTAzLAorICAgIDB4RTBGQiwgMHhFMEZCLCAweDQxMDUsIDB4RTBGRCwgMHhFMEZELCAweDQxMDcsIDB4RTEwMywgMHhFMTAzLCAweDQxMEQsCisgICAgMHhFMTA2LCAweEUxMDYsIDB4NDExMCwgMHhFMTA5LCAweEUxMEIsIDB4NDExMiwgMHhFMTEwLCAweEUxMTAsIDB4NDExOSwKKyAgICAweEUxMTQsIDB4RTExNSwgMHg0MTFELCAweEUxMUMsIDB4RTExRCwgMHg0MTI1LCAweEUxMjEsIDB4RTEyMSwgMHg0MTJBLAorICAgIDB4RTEyNiwgMHhFMTI4LCAweDQxMkYsIDB4RTEzMCwgMHhFMTMxLCAweDQxMzksIDB4RTEzNiwgMHhFMTM2LCAweDQxM0YsCisgICAgMHhFMTM5LCAweEUxMzksIDB4NDE0MiwgMHhFMTQxLCAweEUxNDIsIDB4NDE0QSwgMHhFMTQ1LCAweEUxNDUsIDB4NDE0RCwKKyAgICAweEUxNDcsIDB4RTE0OCwgMHg0MTRGLCAweEUxNEEsIDB4RTE0QSwgMHg0MTUxLCAweEUxNEQsIDB4RTE0RCwgMHg0MTUzLAorICAgIDB4RTE1MCwgMHhFMTUwLCAweDQxNTYsIDB4RTE1NCwgMHhFMTU3LCAweDQxNUEsIDB4RTE1OSwgMHhFMTVBLCAweDQxNUYsCisgICAgMHhFMTVELCAweEUxNUQsIDB4NDk0RiwgMHhFMTYyLCAweEUxNjIsIDB4NDE2NywgMHhFMTY4LCAweEUxNkEsIDB4NDE2RCwKKyAgICAweEUxNzEsIDB4RTE3MiwgMHg0MTc1LCAweEUxNzUsIDB4RTE3NSwgMHg0MTc5LCAweEUxNzgsIDB4RTE3OSwgMHg0MTdDLAorICAgIDB4RTE3QiwgMHhFMTdDLCAweDQxN0YsIDB4RTE3RiwgMHhFMTgwLCAweDQxODMsIDB4RTE4NSwgMHhFMTg1LCAweDQxODksCisgICAgMHhFMTg3LCAweEUxODcsIDB4NDE4QiwgMHhFMTg5LCAweEUxODksIDB4NDE4RCwgMHhFMThCLCAweEUxOEIsIDB4NDE4RiwKKyAgICAweEUxOEYsIDB4RTE5MCwgMHg0MTkzLCAweEUxOTMsIDB4RTE5MywgMHg0MTk2LCAweEUxOTUsIDB4RTE5NSwgMHg0OTUzLAorICAgIDB4RTE5NiwgMHhFMTk2LCAweDQxOTgsIDB4RTE5RiwgMHhFMUEwLCAweDQxQTEsIDB4RTFBNCwgMHhFMUE0LCAweDQ5NTQsCisgICAgMHhFMUE2LCAweEUxQTYsIDB4NDFBOCwgMHhFMUFBLCAweEUxQUEsIDB4NDFBQywgMHhFMUFFLCAweEUxQUUsIDB4NDFCMCwKKyAgICAweEUxQjAsIDB4RTFCMSwgMHg0MUIyLCAweEUxQjMsIDB4RTFCNCwgMHg0MUI1LCAweEUxQjYsIDB4RTFCNiwgMHg0MUI4LAorICAgIDB4RTFCOCwgMHhFMUI4LCAweDQxQkEsIDB4RTFCQiwgMHhFMUJCLCAweDQ5NTUsIDB4RTFCQywgMHhFMUJGLCAweDQxQkQsCisgICAgMHhFMUMxLCAweEUxQzEsIDB4NDFDMiwgMHhFMUM0LCAweEUxQzUsIDB4NDFDNSwgMHhFMUM4LCAweEUxQzgsIDB4NDFDOCwKKyAgICAweEUxQ0MsIDB4RTFDRCwgMHg0MUNDLCAweEUxRDQsIDB4RTFENSwgMHg0MUQ0LCAweEUxRDcsIDB4RTFENywgMHg0MUQ3LAorICAgIDB4RTFEQSwgMHhFMURBLCAweDQxREEsIDB4RTFERCwgMHhFMURELCAweDQxREQsIDB4RTFFMiwgMHhFMUUyLCAweDQxRTEsCisgICAgMHhFMUU2LCAweEUxRTYsIDB4NDFFNSwgMHhFMUVCLCAweEUxRUIsIDB4NDFFQSwgMHhFMUVGLCAweEUxRjAsIDB4NDFFRSwKKyAgICAweEUxRjIsIDB4RTFGMiwgMHg0MUYxLCAweEUxRjcsIDB4RTFGNywgMHg0MUY2LCAweEUxRkEsIDB4RTFGQSwgMHg0MUY5LAorICAgIDB4RTFGRSwgMHhFMUZFLCAweDQxRkQsIDB4RTIwMCwgMHhFMjAwLCAweDQxRkYsIDB4RTIwMSwgMHhFMjAxLCAweDQ5NTgsCisgICAgMHhFMjAyLCAweEUyMDIsIDB4NDIwMSwgMHhFMjA1LCAweEUyMDUsIDB4NDIwNCwgMHhFMjA3LCAweEUyMDcsIDB4NDIwNiwKKyAgICAweEUyMEEsIDB4RTIwQywgMHg0MjA5LCAweEUyMTAsIDB4RTIxMCwgMHg0MjBGLCAweEUyMTIsIDB4RTIxNiwgMHg0MjExLAorICAgIDB4RTIxOSwgMHhFMjE5LCAweDQyMTgsIDB4RTIxQiwgMHhFMjFDLCAweDQyMUEsIDB4RTIxRiwgMHhFMjIxLCAweDQyMUUsCisgICAgMHhFMjI2LCAweEUyMjgsIDB4NDIyNSwgMHhFMjJBLCAweEUyMkEsIDB4NDIyOSwgMHhFMjJGLCAweEUyMkYsIDB4NDIyRSwKKyAgICAweEUyMzEsIDB4RTIzMSwgMHg0MjMwLCAweEUyMzMsIDB4RTIzMywgMHg0MjMyLCAweEUyMzcsIDB4RTIzNywgMHg0MjM2LAorICAgIDB4RTIzQiwgMHhFMjNCLCAweDQyM0EsIDB4RTIzRCwgMHhFMjNFLCAweDQyM0MsIDB4RTI0NSwgMHhFMjQ1LCAweDQyNDQsCisgICAgMHhFMjQ4LCAweEUyNDgsIDB4NDI0NywgMHhFMjRBLCAweEUyNEYsIDB4NDI0OSwgMHhFMjUxLCAweEUyNTQsIDB4NDI1MCwKKyAgICAweEUyNjEsIDB4RTI2MSwgMHg0MjYwLCAweEUyNjgsIDB4RTI2OCwgMHg0MjY2LCAweEUyNkIsIDB4RTI2QiwgMHg0MjY5LAorICAgIDB4RTI2RCwgMHhFMjZGLCAweDQyNkIsIDB4RTI3MSwgMHhFMjcxLCAweDQyNkYsIDB4RTI3QSwgMHhFMjdBLCAweDQyNzgsCisgICAgMHhFMjdELCAweEUyN0QsIDB4NDI3QiwgMHhFMjgyLCAweEUyODIsIDB4NDI4MCwgMHhFMjg4LCAweEUyODksIDB4NDI4NiwKKyAgICAweEUyOEIsIDB4RTI4QiwgMHg0Mjg5LCAweEUyOTAsIDB4RTI5MSwgMHg0MjhFLCAweEUyOTQsIDB4RTI5NiwgMHg0MjkyLAorICAgIDB4RTI5OSwgMHhFMjlCLCAweDQyOTcsIDB4RTI5RiwgMHhFMjlGLCAweDQyOUQsIDB4RTJBMSwgMHhFMkExLCAweDQ5NUIsCisgICAgMHhFMkE0LCAweEUyQTQsIDB4NDJBMSwgMHhFMkE2LCAweEUyQTYsIDB4NDJBMywgMHhFMkIyLCAweEUyQjUsIDB4NDJBRSwKKyAgICAweEUyQjcsIDB4RTJCOCwgMHg0MkIzLCAweEUyQkEsIDB4RTJCQSwgMHg0MkI2LCAweEUyQkUsIDB4RTJCRiwgMHg0MkI5LAorICAgIDB4RTJDMSwgMHhFMkMxLCAweDQyQkMsIDB4RTJDNywgMHhFMkM3LCAweDQyQzIsIDB4RTJDOSwgMHhFMkM5LCAweDQyQzQsCisgICAgMHhFMkQ0LCAweEUyRDQsIDB4NDJDRiwgMHhFMkQ4LCAweEUyRDksIDB4NDJEMywgMHhFMkRFLCAweEUyREUsIDB4NDJEOSwKKyAgICAweEUyRTAsIDB4RTJFMiwgMHg0MkRCLCAweEUyRTcsIDB4RTJFNywgMHg0MkUyLCAweEUyRTksIDB4RTJFOSwgMHg0MkU0LAorICAgIDB4RTJFQiwgMHhFMkVELCAweDQyRTYsIDB4RTJGMCwgMHhFMkYxLCAweDQ5NUQsIDB4RTJGOCwgMHhFMkY4LCAweDQyRjEsCisgICAgMHhFMkZDLCAweEUyRkMsIDB4NDJGNSwgMHhFMkZGLCAweEUyRkYsIDB4NDk1RiwgMHhFMzAwLCAweEUzMDAsIDB4NDk2MCwKKyAgICAweEUzMDEsIDB4RTMwMSwgMHg0MkY4LCAweEUzMDYsIDB4RTMwNiwgMHg0MkZELCAweEUzMDgsIDB4RTMwOCwgMHg0MkZGLAorICAgIDB4RTMwQywgMHhFMzBDLCAweDQzMDMsIDB4RTMwRiwgMHhFMzBGLCAweDQzMDYsIDB4RTMxMSwgMHhFMzExLCAweDM3MkIsCisgICAgMHhFMzEzLCAweEUzMTMsIDB4MzcyRCwgMHhFMzE1LCAweEUzMTUsIDB4MzcyRiwgMHhFMzE4LCAweEUzMTgsIDB4MzczMSwKKyAgICAweEUzMUIsIDB4RTMxQywgMHgzNzM0LCAweEUzMUYsIDB4RTMxRiwgMHgzNzM4LCAweEUzMjUsIDB4RTMyNSwgMHgzNzNFLAorICAgIDB4RTMyQywgMHhFMzJDLCAweDM3NDUsIDB4RTMzMCwgMHhFMzMxLCAweDM3NDksIDB4RTMzNSwgMHhFMzM2LCAweDM3NEUsCisgICAgMHhFMzNCLCAweEUzM0IsIDB4Mzc1NCwgMHhFMzNELCAweEUzM0QsIDB4NDY5QSwgMHhFMzQyLCAweEUzNDIsIDB4Mzc1QSwKKyAgICAweEUzNDUsIDB4RTM0NSwgMHgzNzVELCAweEUzNDgsIDB4RTM0OCwgMHgzNzVGLCAweEUzNTIsIDB4RTM1MiwgMHgzNzY4LAorICAgIDB4RTM1NCwgMHhFMzU0LCAweDM3NkEsIDB4RTM1QiwgMHhFMzVDLCAweDM3NzAsIDB4RTM2MCwgMHhFMzYwLCAweDM3NzUsCisgICAgMHhFMzYyLCAweEUzNjIsIDB4Mzc3NywgMHhFMzY0LCAweEUzNjUsIDB4Mzc3OSwgMHhFMzZGLCAweEUzNkYsIDB4Mzc4NCwKKyAgICAweEUzNzIsIDB4RTM3MiwgMHgzNzg3LCAweEUzNzQsIDB4RTM3NSwgMHgzNzg5LCAweEUzNzcsIDB4RTM3NywgMHgzNzhDLAorICAgIDB4RTM3OSwgMHhFMzc5LCAweDM3OEQsIDB4RTM3QiwgMHhFMzdCLCAweDM3OEYsIDB4RTM4MSwgMHhFMzgyLCAweDM3OTUsCisgICAgMHhFMzg2LCAweEUzODYsIDB4Mzc5QSwgMHhFMzg4LCAweEUzOEEsIDB4Mzc5QywgMHhFMzhELCAweEUzOEQsIDB4MzdBMSwKKyAgICAweEUzOTEsIDB4RTM5MSwgMHgzN0E1LCAweEUzOTMsIDB4RTM5MywgMHgzN0E3LCAweEUzOTQsIDB4RTM5NCwgMHg0NkEwLAorICAgIDB4RTM5NiwgMHhFMzk2LCAweDM3QTksIDB4RTM5OCwgMHhFMzk4LCAweDM3QUIsIDB4RTM5QSwgMHhFMzlCLCAweDM3QUQsCisgICAgMHhFMzlFLCAweEUzOUUsIDB4NDZBMSwgMHhFMzlGLCAweEUzQTAsIDB4MzdCMSwgMHhFM0EyLCAweEUzQTIsIDB4MzdCNCwKKyAgICAweEUzQTUsIDB4RTNBNSwgMHg0NkEyLCAweEUzQTYsIDB4RTNBOSwgMHgzN0I4LCAweEUzQUMsIDB4RTNBQywgMHgzN0JFLAorICAgIDB4RTNCMSwgMHhFM0IyLCAweDM3QzMsIDB4RTNCNCwgMHhFM0I1LCAweDM3QzYsIDB4RTNCOSwgMHhFM0JELCAweDM3Q0IsCisgICAgMHhFM0MzLCAweEUzQzMsIDB4MzdENSwgMHhFM0M4LCAweEUzQzgsIDB4MzdEOSwgMHhFM0NDLCAweEUzQ0MsIDB4MzdERCwKKyAgICAweEUzQ0QsIDB4RTNDRCwgMHg0NkE0LCAweEUzQ0YsIDB4RTNDRiwgMHgzN0RGLCAweEUzRDUsIDB4RTNENSwgMHg0NkE1LAorICAgIDB4RTNEOCwgMHhFM0RBLCAweDM3RTcsIDB4RTNFMSwgMHhFM0UxLCAweDM3RjAsIDB4RTNFMywgMHhFM0UzLCAweDM3RjIsCisgICAgMHhFM0U3LCAweEUzRTcsIDB4NDZBNiwgMHhFM0VELCAweEUzRUUsIDB4MzdGQywgMHhFM0YwLCAweEUzRjAsIDB4MzdGRiwKKyAgICAweEUzRjIsIDB4RTNGNCwgMHgzODAxLCAweEUzRjgsIDB4RTNGOCwgMHgzODA3LCAweEUzRkEsIDB4RTNGQSwgMHgzODA5LAorICAgIDB4RTNGRCwgMHhFM0ZELCAweDM4MEMsIDB4RTNGRiwgMHhFM0ZGLCAweDM4MEUsIDB4RTQwOSwgMHhFNDBCLCAweDM4MTgsCisgICAgMHhFNDE0LCAweEU0MTQsIDB4MzgyMSwgMHhFNDFCLCAweEU0MUIsIDB4MzgyOCwgMHhFNDFELCAweEU0MUUsIDB4MzgyQSwKKyAgICAweEU0MjMsIDB4RTQyMywgMHgzODMwLCAweEU0MjUsIDB4RTQyNSwgMHgzODMyLCAweEU0MjYsIDB4RTQyNiwgMHg0NkFCLAorICAgIDB4RTQyOCwgMHhFNDI4LCAweDM4MzQsIDB4RTQyQywgMHhFNDJELCAweDM4MzgsIDB4RTQzMiwgMHhFNDMyLCAweDM4M0UsCisgICAgMHhFNDM2LCAweEU0MzYsIDB4Mzg0MiwgMHhFNDNBLCAweEU0M0MsIDB4Mzg0NiwgMHhFNDNFLCAweEU0M0UsIDB4Mzg0QSwKKyAgICAweEU0NDAsIDB4RTQ0MSwgMHgzODRDLCAweEU0NDQsIDB4RTQ0NCwgMHgzODUwLCAweEU0NDgsIDB4RTQ0OCwgMHg0NkFELAorICAgIDB4RTQ0QywgMHhFNDRFLCAweDM4NTcsIDB4RTQ1MCwgMHhFNDUxLCAweDM4NUIsIDB4RTQ1OSwgMHhFNDVBLCAweDM4NjQsCisgICAgMHhFNDVELCAweEU0NUUsIDB4Mzg2OCwgMHhFNDYxLCAweEU0NjMsIDB4Mzg2QywgMHhFNDY1LCAweEU0NjUsIDB4Mzg3MCwKKyAgICAweEU0NjcsIDB4RTQ2OSwgMHg0NkFGLCAweEU0NkEsIDB4RTQ2QSwgMHgzODczLCAweEU0NkMsIDB4RTQ2QywgMHgzODc1LAorICAgIDB4RTQ2RSwgMHhFNDZGLCAweDM4NzcsIDB4RTQ3MSwgMHhFNDcyLCAweDM4N0EsIDB4RTQ3NCwgMHhFNDc0LCAweDM4N0QsCisgICAgMHhFNDc2LCAweEU0NzYsIDB4Mzg3RiwgMHhFNDdFLCAweEU0N0YsIDB4Mzg4NiwgMHhFNDg0LCAweEU0ODQsIDB4Mzg4QywKKyAgICAweEU0ODYsIDB4RTQ4QSwgMHgzODhELCAweEU0OEQsIDB4RTQ4RSwgMHgzODk0LCAweEU0OTEsIDB4RTQ5MiwgMHgzODk3LAorICAgIDB4RTQ5NSwgMHhFNDk3LCAweDM4OUIsIDB4RTRBMSwgMHhFNEExLCAweDQ2QjQsIDB4RTRBMiwgMHhFNEE0LCAweDM4QTcsCisgICAgMHhFNEFCLCAweEU0QUIsIDB4MzhCMCwgMHhFNEFGLCAweEU0QUYsIDB4MzhCNCwgMHhFNEIzLCAweEU0QkEsIDB4MzhCOCwKKyAgICAweEU0QzEsIDB4RTRDMSwgMHgzOEM2LCAweEU0QzYsIDB4RTRDNiwgMHgzOENCLCAweEU0QzksIDB4RTRDOSwgMHgzOENFLAorICAgIDB4RTRDRCwgMHhFNENFLCAweDM4RDIsIDB4RTRENiwgMHhFNEQ2LCAweDM4REIsIDB4RTREOSwgMHhFNEQ5LCAweDM4REUsCisgICAgMHhFNERDLCAweEU0REQsIDB4MzhFMSwgMHhFNEU0LCAweEU0RTQsIDB4MzhFOSwgMHhFNEU2LCAweEU0RTgsIDB4MzhFQiwKKyAgICAweEU0RUUsIDB4RTRFRiwgMHgzOEYzLCAweEU0RjYsIDB4RTRGNiwgMHgzOEZCLCAweEU0RjgsIDB4RTRGOSwgMHgzOEZELAorICAgIDB4RTRGRiwgMHhFNEZGLCAweDM5MDQsIDB4RTUwMSwgMHhFNTAyLCAweDM5MDYsIDB4RTUwNSwgMHhFNTA1LCAweDM5MEEsCisgICAgMHhFNTBBLCAweEU1MEEsIDB4MzkwRiwgMHhFNTBELCAweEU1MEQsIDB4NDZCNSwgMHhFNTBGLCAweEU1MEYsIDB4MzkxMywKKyAgICAweEU1MTIsIDB4RTUxMiwgMHgzOTE2LCAweEU1MTQsIDB4RTUxNCwgMHgzOTE4LCAweEU1MTYsIDB4RTUxNiwgMHg0NkI2LAorICAgIDB4RTUxQSwgMHhFNTFBLCAweDM5MUQsIDB4RTUxQywgMHhFNTIxLCAweDM5MUYsIDB4RTUyNCwgMHhFNTI0LCAweDM5MjcsCisgICAgMHhFNTI4LCAweEU1MjgsIDB4NDZCOCwgMHhFNTI5LCAweEU1MkMsIDB4MzkyQSwgMHhFNTJFLCAweEU1MkYsIDB4MzkyRiwKKyAgICAweEU1MzcsIDB4RTUzNywgMHgzOTM4LCAweEU1M0UsIDB4RTUzRSwgMHgzOTNGLCAweEU1NDMsIDB4RTU0MywgMHgzOTQ0LAorICAgIDB4RTU0QiwgMHhFNTRCLCAweDM5NEMsIDB4RTU1NCwgMHhFNTU1LCAweDM5NTUsIDB4RTU1NywgMHhFNTU5LCAweDM5NTgsCisgICAgMHhFNTVCLCAweEU1NUMsIDB4Mzk1QywgMHhFNTVFLCAweEU1NUYsIDB4Mzk1RiwgMHhFNTYyLCAweEU1NjIsIDB4Mzk2MywKKyAgICAweEU1NjYsIDB4RTU2NywgMHgzOTY3LCAweEU1NkQsIDB4RTU2RSwgMHgzOTZFLCAweEU1NzAsIDB4RTU3MCwgMHgzOTcxLAorICAgIDB4RTU3MiwgMHhFNTczLCAweDM5NzMsIDB4RTU3NSwgMHhFNTc3LCAweDM5NzYsIDB4RTU3OSwgMHhFNTdBLCAweDM5N0EsCisgICAgMHhFNTdDLCAweEU1N0UsIDB4Mzk3RCwgMHhFNTgwLCAweEU1ODAsIDB4Mzk4MSwgMHhFNTgyLCAweEU1ODYsIDB4Mzk4MywKKyAgICAweEU1ODgsIDB4RTU4OCwgMHgzOTg5LCAweEU1OEIsIDB4RTU5MCwgMHgzOThDLCAweEU1OTIsIDB4RTU5NCwgMHgzOTkzLAorICAgIDB4RTU5QSwgMHhFNTlBLCAweDM5OUIsIDB4RTU5RCwgMHhFNUExLCAweDM5OUUsIDB4RTVBNCwgMHhFNUE0LCAweDM5QTUsCisgICAgMHhFNUE2LCAweEU1QTgsIDB4MzlBNywgMHhFNUFBLCAweEU1QUEsIDB4MzlBQiwgMHhFNUFGLCAweEU1QUYsIDB4MzlCMCwKKyAgICAweEU1QjEsIDB4RTVCMSwgMHgzOUIyLCAweEU1QjIsIDB4RTVCMiwgMHg0NkJCLCAweEU1QjUsIDB4RTVCNSwgMHgzOUI2LAorICAgIDB4RTVCNywgMHhFNUI4LCAweDM5QjgsIDB4RTVCQSwgMHhFNUJCLCAweDM5QkIsIDB4RTVCRSwgMHhFNUMwLCAweDM5QkYsCisgICAgMHhFNUMyLCAweEU1QzIsIDB4MzlDMywgMHhFNUM4LCAweEU1QzksIDB4MzlDOSwgMHhFNUQ3LCAweEU1RDksIDB4MzlENCwKKyAgICAweEU1REIsIDB4RTVEQywgMHgzOUQ4LCAweEU1REYsIDB4RTVERiwgMHgzOURDLCAweEU1RTEsIDB4RTVFMywgMHgzOURFLAorICAgIDB4RTVFNSwgMHhFNUU2LCAweDM5RTIsIDB4RTVFOSwgMHhFNUU5LCAweDM5RTYsIDB4RTVFRSwgMHhFNUYxLCAweDM5RUIsCisgICAgMHhFNUYzLCAweEU1RjMsIDB4MzlGMCwgMHhFNUZCLCAweEU1RkMsIDB4MzlGOCwgMHhFNjAwLCAweEU2MDAsIDB4MzlGRCwKKyAgICAweEU2MDIsIDB4RTYwMiwgMHgzOUZGLCAweEU2MDQsIDB4RTYwNCwgMHgzQTAxLCAweEU2MEYsIDB4RTYxMiwgMHgzQTBCLAorICAgIDB4RTYxOSwgMHhFNjFDLCAweDNBMTQsIDB4RTYyMSwgMHhFNjIxLCAweDNBMUMsIDB4RTYyMywgMHhFNjI0LCAweDNBMUUsCisgICAgMHhFNjI3LCAweEU2MjcsIDB4M0EyMiwgMHhFNjJCLCAweEU2MkIsIDB4M0EyNiwgMHhFNjMyLCAweEU2MzQsIDB4M0EyRCwKKyAgICAweEU2MzcsIDB4RTYzOCwgMHgzQTMyLCAweEU2M0EsIDB4RTYzQSwgMHgzQTM1LCAweEU2M0MsIDB4RTYzQywgMHgzQTM3LAorICAgIDB4RTYzRiwgMHhFNjQyLCAweDNBM0EsIDB4RTY0NSwgMHhFNjQ2LCAweDNBNDAsIDB4RTY0OCwgMHhFNjQ4LCAweDNBNDMsCisgICAgMHhFNjRCLCAweEU2NEIsIDB4M0E0NSwgMHhFNjRFLCAweEU2NEYsIDB4M0E0OCwgMHhFNjUyLCAweEU2NTUsIDB4M0E0QywKKyAgICAweEU2NTcsIDB4RTY1OSwgMHgzQTUxLCAweEU2NUQsIDB4RTY2MCwgMHgzQTU3LCAweEU2NjIsIDB4RTY2MywgMHgzQTVDLAorICAgIDB4RTY2NSwgMHhFNjY4LCAweDNBNUYsIDB4RTY2QSwgMHhFNjZBLCAweDQ2QkYsIDB4RTY2RSwgMHhFNjZGLCAweDNBNjcsCisgICAgMHhFNjcxLCAweEU2NzEsIDB4M0E2QSwgMHhFNjc2LCAweEU2NzksIDB4M0E2RiwgMHhFNjdCLCAweEU2N0QsIDB4M0E3NCwKKyAgICAweEU2N0YsIDB4RTY4MCwgMHgzQTc4LCAweEU2ODMsIDB4RTY4OCwgMHgzQTdCLCAweEU2OEEsIDB4RTY4QywgMHgzQTgyLAorICAgIDB4RTY4RSwgMHhFNjkwLCAweDNBODYsIDB4RTY5MiwgMHhFNjkyLCAweDNBOEEsIDB4RTY5NiwgMHhFNjk3LCAweDNBOEUsCisgICAgMHhFNjk5LCAweEU2OUEsIDB4M0E5MSwgMHhFNjlDLCAweEU2OUMsIDB4M0E5NCwgMHhFNjlFLCAweEU2OUYsIDB4M0E5NiwKKyAgICAweEU2QTEsIDB4RTZBMiwgMHgzQTk5LCAweEU2QTYsIDB4RTZBNiwgMHgzQTlELCAweEU2QUMsIDB4RTZBRCwgMHgzQUEyLAorICAgIDB4RTZCMiwgMHhFNkIyLCAweDNBQTgsIDB4RTZCOSwgMHhFNkJBLCAweDNBQUYsIDB4RTZCRCwgMHhFNkJFLCAweDNBQjMsCisgICAgMHhFNkMwLCAweEU2QzEsIDB4M0FCNiwgMHhFNkM1LCAweEU2QzUsIDB4NDZDNCwgMHhFNkM3LCAweEU2QzcsIDB4M0FCQywKKyAgICAweEU2Q0EsIDB4RTZDQSwgMHgzQUJGLCAweEU2RDEsIDB4RTZEMiwgMHgzQUM2LCAweEU2RDcsIDB4RTZEOCwgMHgzQUNDLAorICAgIDB4RTZEQSwgMHhFNkRCLCAweDNBQ0YsIDB4RTZERCwgMHhFNkUxLCAweDNBRDIsIDB4RTZFNCwgMHhFNkU2LCAweDNBRDksCisgICAgMHhFNkVFLCAweEU2RUUsIDB4M0FFMywgMHhFNkYyLCAweEU2RjMsIDB4M0FFNywgMHhFNkY3LCAweEU2RjcsIDB4M0FFQywKKyAgICAweEU2RkEsIDB4RTZGQywgMHgzQUVGLCAweEU2RkYsIDB4RTZGRiwgMHgzQUY0LCAweEU3MDEsIDB4RTcwMiwgMHgzQUY2LAorICAgIDB4RTcwNiwgMHhFNzA3LCAweDNBRkIsIDB4RTcwOSwgMHhFNzBBLCAweDNBRkUsIDB4RTcwQywgMHhFNzBDLCAweDNCMDEsCisgICAgMHhFNzEwLCAweEU3MTEsIDB4M0IwNSwgMHhFNzEzLCAweEU3MTMsIDB4M0IwOCwgMHhFNzE3LCAweEU3MTgsIDB4M0IwQywKKyAgICAweEU3MUEsIDB4RTcxQiwgMHgzQjBGLCAweEU3MUQsIDB4RTcxRCwgMHgzQjEyLCAweEU3MjQsIDB4RTcyNSwgMHgzQjE5LAorICAgIDB4RTcyQiwgMHhFNzJCLCAweDNCMjAsIDB4RTcyRiwgMHhFNzJGLCAweDNCMjQsIDB4RTczMywgMHhFNzM3LCAweDNCMjgsCisgICAgMHhFNzNDLCAweEU3M0QsIDB4M0IzMSwgMHhFNzQwLCAweEU3NDIsIDB4M0IzNSwgMHhFNzQ0LCAweEU3NDQsIDB4M0IzOSwKKyAgICAweEU3NDcsIDB4RTc0NywgMHgzQjNDLCAweEU3NEQsIDB4RTc0RiwgMHgzQjQyLCAweEU3NTEsIDB4RTc1MiwgMHgzQjQ2LAorICAgIDB4RTc1QiwgMHhFNzVELCAweDNCNTAsIDB4RTc1RiwgMHhFNzVGLCAweDNCNTQsIDB4RTc2MSwgMHhFNzYyLCAweDNCNTYsCisgICAgMHhFNzY0LCAweEU3NjUsIDB4M0I1OSwgMHhFNzY3LCAweEU3NjgsIDB4M0I1QywgMHhFNzY5LCAweEU3NjksIDB4NDZDNywKKyAgICAweEU3NkMsIDB4RTc2RSwgMHgzQjYwLCAweEU3NzAsIDB4RTc3MCwgMHgzQjY0LCAweEU3NzUsIDB4RTc3NSwgMHgzQjY5LAorICAgIDB4RTc3NywgMHhFNzc4LCAweDNCNkEsIDB4RTc3QSwgMHhFNzdBLCAweDNCNkQsIDB4RTc3QywgMHhFNzdELCAweDNCNkYsCisgICAgMHhFNzg0LCAweEU3ODQsIDB4M0I3NywgMHhFNzg2LCAweEU3ODYsIDB4M0I3OSwgMHhFNzg5LCAweEU3ODksIDB4M0I3QywKKyAgICAweEU3OEIsIDB4RTc4QiwgMHgzQjdFLCAweEU3OEQsIDB4RTc4RCwgMHgzQjgwLCAweEU3OTAsIDB4RTc5MCwgMHgzQjgzLAorICAgIDB4RTc5MiwgMHhFNzkyLCAweDNCODUsIDB4RTc5NCwgMHhFNzk0LCAweDNCODcsIDB4RTc5NiwgMHhFNzk3LCAweDNCODksCisgICAgMHhFNzk5LCAweEU3OTksIDB4M0I4QywgMHhFN0EyLCAweEU3QTIsIDB4M0I5NSwgMHhFN0E0LCAweEU3QTksIDB4M0I5NywKKyAgICAweEU3QjEsIDB4RTdCMSwgMHgzQkE0LCAweEU3QjQsIDB4RTdCNCwgMHgzQkE3LCAweEU3QjgsIDB4RTdCOCwgMHgzQkFCLAorICAgIDB4RTdCQywgMHhFN0JDLCAweDNCQUYsIDB4RTdDNCwgMHhFN0M0LCAweDNCQjYsIDB4RTdDQSwgMHhFN0NBLCAweDNCQkMsCisgICAgMHhFN0NFLCAweEU3Q0UsIDB4M0JDMCwgMHhFN0QxLCAweEU3RDEsIDB4M0JDMywgMHhFN0Q4LCAweEU3RDgsIDB4M0JDQSwKKyAgICAweEU3REEsIDB4RTdEQSwgMHgzQkNDLCAweEU3REMsIDB4RTdERCwgMHgzQkNFLCAweEU3RTQsIDB4RTdFNCwgMHgzQkQ2LAorICAgIDB4RTdFNywgMHhFN0U5LCAweDNCRDksIDB4RTdFQiwgMHhFN0VCLCAweDNCREQsIDB4RTdFRCwgMHhFN0VGLCAweDNCREYsCisgICAgMHhFN0YxLCAweEU3RjMsIDB4M0JFMywgMHhFN0Y4LCAweEU3RjgsIDB4M0JFQSwgMHhFN0ZCLCAweEU3RkMsIDB4M0JFRCwKKyAgICAweEU3RkYsIDB4RTdGRiwgMHgzQkYxLCAweEU4MDAsIDB4RTgwMiwgMHgzQkYyLCAweEU4MDgsIDB4RTgwOCwgMHgzQkZBLAorICAgIDB4RTgwQywgMHhFODBDLCAweDNCRkUsIDB4RTgwRSwgMHhFODBGLCAweDNDMDAsIDB4RTgxMSwgMHhFODExLCAweDNDMDMsCisgICAgMHhFODEzLCAweEU4MTMsIDB4M0MwNSwgMHhFODE2LCAweEU4MTgsIDB4M0MwOCwgMHhFODFBLCAweEU4MUEsIDB4M0MwQywKKyAgICAweEU4MjEsIDB4RTgyMSwgMHgzQzEzLCAweEU4MjcsIDB4RTgyOCwgMHgzQzE5LCAweEU4MkQsIDB4RTgyRCwgMHgzQzFGLAorICAgIDB4RTgyRiwgMHhFODJGLCAweDNDMjEsIDB4RTgzNSwgMHhFODM1LCAweDNDMjcsIDB4RTgzNywgMHhFODM4LCAweDNDMjksCisgICAgMHhFODNBLCAweEU4M0IsIDB4M0MyQywgMHhFODQxLCAweEU4NDIsIDB4M0MzMywgMHhFODRCLCAweEU4NEIsIDB4M0MzRCwKKyAgICAweEU4NEQsIDB4RTg0RSwgMHgzQzNGLCAweEU4NTEsIDB4RTg1MSwgMHgzQzQzLCAweEU4NTUsIDB4RTg1OCwgMHgzQzQ3LAorICAgIDB4RTg1QiwgMHhFODVELCAweDNDNEQsIDB4RTg2MCwgMHhFODYyLCAweDNDNTIsIDB4RTg2NSwgMHhFODY3LCAweDNDNTcsCisgICAgMHhFODY5LCAweEU4NkEsIDB4M0M1QiwgMHhFODZDLCAweEU4NkMsIDB4M0M1RCwgMHhFODcxLCAweEU4NzEsIDB4M0M2MiwKKyAgICAweEU4NzgsIDB4RTg3OCwgMHgzQzY5LCAweEU4N0QsIDB4RTg3RiwgMHgzQzZFLCAweEU4ODcsIDB4RTg4NywgMHgzQzc4LAorICAgIDB4RTg4RiwgMHhFODhGLCAweDNDODAsIDB4RTg5MSwgMHhFODkyLCAweDNDODIsIDB4RTg5NCwgMHhFODk1LCAweDNDODUsCisgICAgMHhFODlBLCAweEU4OUEsIDB4M0M4QiwgMHhFODlELCAweEU4OUQsIDB4M0M4RSwgMHhFOEEwLCAweEU4QTEsIDB4M0M5MSwKKyAgICAweEU4QTMsIDB4RThBNywgMHgzQzk0LCAweEU4QTksIDB4RThBQSwgMHgzQzlBLCAweEU4QUMsIDB4RThCMCwgMHgzQzlELAorICAgIDB4RThCNSwgMHhFOEI2LCAweDNDQTYsIDB4RThCOCwgMHhFOEI4LCAweDNDQTksIDB4RThCRCwgMHhFOEMzLCAweDNDQUUsCisgICAgMHhFOEM1LCAweEU4QzUsIDB4M0NCNiwgMHhFOEM3LCAweEU4QzcsIDB4M0NCOCwgMHhFOENCLCAweEU4Q0IsIDB4M0NCQywKKyAgICAweEU4Q0QsIDB4RThDRSwgMHgzQ0JFLCAweEU4RDAsIDB4RThEMSwgMHgzQ0MxLCAweEU4RDMsIDB4RThEMywgMHgzQ0M0LAorICAgIDB4RThENSwgMHhFOEQ2LCAweDNDQzYsIDB4RThEOCwgMHhFOERBLCAweDNDQzksIDB4RThERCwgMHhFOERELCAweDNDQ0UsCisgICAgMHhFOERGLCAweEU4RTEsIDB4M0NEMCwgMHhFOEU1LCAweEU4RTYsIDB4M0NENiwgMHhFOEU4LCAweEU4RUEsIDB4M0NEOSwKKyAgICAweEU4RUQsIDB4RThFRCwgMHgzQ0RFLCAweEU4RjEsIDB4RThGMiwgMHgzQ0UyLCAweEU4RjUsIDB4RThGNSwgMHgzQ0U2LAorICAgIDB4RThGQiwgMHhFOEZCLCAweDNDRUMsIDB4RThGRSwgMHhFOEZFLCAweDNDRUYsIDB4RTkwMCwgMHhFOTAwLCAweDNDRjEsCisgICAgMHhFOTAzLCAweEU5MDMsIDB4M0NGNCwgMHhFOTA3LCAweEU5MDgsIDB4M0NGOCwgMHhFOTBDLCAweEU5MEMsIDB4M0NGRCwKKyAgICAweEU5MTcsIDB4RTkxOCwgMHgzRDA4LCAweEU5MUMsIDB4RTkxQywgMHgzRDBELCAweEU5MUUsIDB4RTkyMiwgMHgzRDBGLAorICAgIDB4RTkyNSwgMHhFOTJDLCAweDNEMTYsIDB4RTkyRSwgMHhFOTJGLCAweDNEMUYsIDB4RTkzMywgMHhFOTM2LCAweDNEMjQsCisgICAgMHhFOTM4LCAweEU5MzgsIDB4NDZDRiwgMHhFOTNBLCAweEU5M0EsIDB4M0QyQiwgMHhFOTNDLCAweEU5M0UsIDB4M0QyRCwKKyAgICAweEU5NDEsIDB4RTk0MSwgMHgzRDMyLCAweEU5NDQsIDB4RTk0NSwgMHgzRDM1LCAweEU5NDgsIDB4RTk0OCwgMHgzRDM5LAorICAgIDB4RTk0RCwgMHhFOTRELCAweDNEM0UsIDB4RTk1MCwgMHhFOTUwLCAweDNENDEsIDB4RTk1MiwgMHhFOTU1LCAweDNENDMsCisgICAgMHhFOTU3LCAweEU5NTgsIDB4M0Q0OCwgMHhFOTVBLCAweEU5NUEsIDB4M0Q0QiwgMHhFOTVDLCAweEU5NUUsIDB4M0Q0RCwKKyAgICAweEU5NjAsIDB4RTk2MSwgMHgzRDUxLCAweEU5NjQsIDB4RTk2NCwgMHgzRDU1LCAweEU5NjcsIDB4RTk2NywgMHgzRDU4LAorICAgIDB4RTk2OCwgMHhFOTY4LCAweDQ2RDEsIDB4RTk2RSwgMHhFOTZGLCAweDQ2RDUsIDB4RTk3MywgMHhFOTczLCAweDQ2REEsCisgICAgMHhFOTc0LCAweEU5NzQsIDB4M0Q1QiwgMHhFOTc1LCAweEU5NzUsIDB4NDZEQiwgMHhFOTc3LCAweEU5NzgsIDB4NDZERCwKKyAgICAweEU5N0EsIDB4RTk3QiwgMHg0NkUwLCAweEU5N0QsIDB4RTk3RCwgMHg0NkUzLCAweEU5ODEsIDB4RTk4MiwgMHg0NkU2LAorICAgIDB4RTk4NywgMHhFOTg3LCAweDNENUQsIDB4RTk4QSwgMHhFOThBLCAweDNENUUsIDB4RTk4RSwgMHhFOThFLCAweDNENUYsCisgICAgMHhFOTkxLCAweEU5OTEsIDB4NDZFRiwgMHhFOUIwLCAweEU5QjAsIDB4NDNENCwgMHhFOUNCLCAweEU5Q0IsIDB4NDcxOSwKKyAgICAweEU5RUYsIDB4RTlFRiwgMHg0NzM0LCAweEVBNDMsIDB4RUE0MywgMHg0Nzc5LCAweEVBQTksIDB4RUFBOSwgMHg0N0NDLAorICAgIDB4RUFCRiwgMHhFQUMxLCAweDQ3REMsIDB4RUFDNSwgMHhFQUM1LCAweDQ3RTAsIDB4RUFDOSwgMHhFQUNDLCAweDQ3RTIsCisgICAgMHhFQUNGLCAweEVBRDEsIDB4NDdFOCwgMHhFQUQzLCAweEVBRDQsIDB4NDdFQiwgMHhFQUQ2LCAweEVBREEsIDB4NDdFRSwKKyAgICAweEVBREMsIDB4RUFEQywgMHg0N0YzLCAweEVBREUsIDB4RUFFMywgMHg0N0Y0LCAweEVBRTcsIDB4RUFFQywgMHg0N0ZBLAorICAgIDB4RUFFRSwgMHhFQUVFLCAweDQ4MDAsIDB4RUFGMCwgMHhFQUYyLCAweDQ4MDEsIDB4RUFGNCwgMHhFQUY0LCAweDQzQjAsCisgICAgMHhFQUY1LCAweEVBRjYsIDB4NDgwNCwgMHhFQUY4LCAweEVBRjgsIDB4NDgwNywgMHhFQUY5LCAweEVBRjksIDB4NDNCMiwKKyAgICAweEVBRkEsIDB4RUFGQiwgMHg0ODA4LCAweEVBRkUsIDB4RUFGRiwgMHg0ODBCLCAweEVCMDAsIDB4RUIwMCwgMHg0ODBELAorICAgIDB4RUIwMiwgMHhFQjA1LCAweDQ4MEUsIDB4RUIwOCwgMHhFQjBGLCAweDQ4MTMsIDB4RUIxMSwgMHhFQjEyLCAweDQ4MUIsCisgICAgMHhFQjE1LCAweEVCMTUsIDB4NDgxRSwgMHhFQjE4LCAweEVCMUQsIDB4NDgyMSwgMHhFQjFGLCAweEVCMjEsIDB4NDgyNywKKyAgICAweEVCMjMsIDB4RUIyMywgMHg0ODJBLCAweEVCMjUsIDB4RUIyNSwgMHg0ODJCLCAweEVCMjcsIDB4RUIyNywgMHg0ODJDLAorICAgIDB4RUIyQSwgMHhFQjJBLCAweDQ4MkQsIDB4RUIyQywgMHhFQjM5LCAweDQ4MkUsIDB4RUIzRCwgMHhFQjNELCAweDNEOUIsCisgICAgMHhFQjNFLCAweEVCM0YsIDB4NDgzQywgMHhFQjQxLCAweEVCNDEsIDB4M0Q5RCwgMHhFQjQzLCAweEVCNDQsIDB4NDgzRSwKKyAgICAweEVCNDYsIDB4RUI0NiwgMHgzREEwLCAweEVCNEEsIDB4RUI0QSwgMHg0ODQxLCAweEVCNEIsIDB4RUI0QywgMHgzREEzLAorICAgIDB4RUI0RCwgMHhFQjRFLCAweDQ4NDIsIDB4RUI0RiwgMHhFQjUwLCAweDNEQTUsIDB4RUI1MywgMHhFQjUzLCAweDQ4NDQsCisgICAgMHhFQjU0LCAweEVCNTQsIDB4M0RBOSwgMHhFQjU1LCAweEVCNTYsIDB4NDg0NSwgMHhFQjU3LCAweEVCNTcsIDB4M0RBQSwKKyAgICAweEVCNTgsIDB4RUI1OSwgMHg0ODQ3LCAweEVCNUEsIDB4RUI1QiwgMHgzREFCLCAweEVCNUQsIDB4RUI1RCwgMHgzREFFLAorICAgIDB4RUI1RiwgMHhFQjVGLCAweDNEQjAsIDB4RUI2MSwgMHhFQjYxLCAweDNEQjIsIDB4RUI2MiwgMHhFQjYzLCAweDQ4NDksCisgICAgMHhFQjY1LCAweEVCNjUsIDB4NDg0QywgMHhFQjY3LCAweEVCNjcsIDB4NDg0RCwgMHhFQjY4LCAweEVCNjksIDB4M0RCNCwKKyAgICAweEVCNkIsIDB4RUI2QiwgMHgzREI3LCAweEVCNkQsIDB4RUI2RCwgMHgzREI5LCAweEVCNkYsIDB4RUI3MSwgMHg0ODRFLAorICAgIDB4RUI3MywgMHhFQjczLCAweDQ4NTEsIDB4RUI3NCwgMHhFQjc0LCAweDNEQkMsIDB4RUI3NiwgMHhFQjc2LCAweDQzRDAsCisgICAgMHhFQjc3LCAweEVCNzcsIDB4NDg1MywgMHhFQjc4LCAweEVCNzgsIDB4M0RCRCwgMHhFQjdBLCAweEVCN0EsIDB4NDg1NCwKKyAgICAweEVCN0UsIDB4RUI3RiwgMHg0ODU2LCAweEVCODAsIDB4RUI4MSwgMHgzREMxLCAweEVCODMsIDB4RUI4NCwgMHg0ODU4LAorICAgIDB4RUI4NSwgMHhFQjg1LCAweDNEQzQsIDB4RUI4OCwgMHhFQjg4LCAweDQ4NUEsIDB4RUI4OSwgMHhFQjg5LCAweDNEQzYsCisgICAgMHhFQjhBLCAweEVCOEEsIDB4NDg1QiwgMHhFQjhDLCAweEVCOEUsIDB4NDg1QywgMHhFQjhGLCAweEVCOEYsIDB4M0RDOCwKKyAgICAweEVCOTAsIDB4RUI5MCwgMHg0ODVGLCAweEVCOTMsIDB4RUI5MywgMHgzRENCLCAweEVCOTUsIDB4RUI5NSwgMHg0ODYwLAorICAgIDB4RUI5NywgMHhFQjk3LCAweDNEQ0UsIDB4RUI5OCwgMHhFQjlBLCAweDQ4NjEsIDB4RUI5QiwgMHhFQjlCLCAweDNEQ0YsCisgICAgMHhFQjlGLCAweEVCOUYsIDB4NDg2NiwgMHhFQkEwLCAweEVCQTAsIDB4M0REMSwgMHhFQkEyLCAweEVCQTIsIDB4NDg2NywKKyAgICAweEVCQTMsIDB4RUJBMywgMHgzREQzLCAweEVCQTUsIDB4RUJBNiwgMHg0ODY4LCAweEVCQTgsIDB4RUJBOCwgMHgzREQ2LAorICAgIDB4RUJBQSwgMHhFQkFBLCAweDQ4NkEsIDB4RUJBQiwgMHhFQkFCLCAweDNERDgsIDB4RUJBRCwgMHhFQkFELCAweDNEREEsCisgICAgMHhFQkFFLCAweEVCQUUsIDB4NDg2QiwgMHhFQkFGLCAweEVCQUYsIDB4M0REQiwgMHhFQkIwLCAweEVCQjAsIDB4NDg2QywKKyAgICAweEVCQjIsIDB4RUJCMywgMHg0ODZELCAweEVCQjQsIDB4RUJCNCwgMHgzRERELCAweEVCQjYsIDB4RUJCNiwgMHgzRERGLAorICAgIDB4RUJCOSwgMHhFQkI5LCAweDNERTIsIDB4RUJCQywgMHhFQkJDLCAweDNERTQsIDB4RUJCRCwgMHhFQkJELCAweDQ4NzAsCisgICAgMHhFQkJGLCAweEVCQkYsIDB4M0RFNiwgMHhFQkMyLCAweEVCQzIsIDB4M0RFOSwgMHhFQkM1LCAweEVCQzYsIDB4NDg3MiwKKyAgICAweEVCQzcsIDB4RUJDNywgMHgzREVCLCAweEVCQzgsIDB4RUJDOCwgMHg0ODc0LCAweEVCQ0EsIDB4RUJDQSwgMHg0ODc1LAorICAgIDB4RUJDQywgMHhFQkNELCAweDNERUUsIDB4RUJDRSwgMHhFQkNFLCAweDQ4NzYsIDB4RUJEMCwgMHhFQkQwLCAweDQ4NzcsCisgICAgMHhFQkQzLCAweEVCRDMsIDB4NDg3OCwgMHhFQkQ1LCAweEVCRDUsIDB4NDg3OSwgMHhFQkQ3LCAweEVCRDgsIDB4M0RGNCwKKyAgICAweEVCREEsIDB4RUJEQiwgMHg0ODdBLCAweEVCREQsIDB4RUJERCwgMHgzREY4LCAweEVCREYsIDB4RUJERiwgMHg0ODdDLAorICAgIDB4RUJFMSwgMHhFQkUxLCAweDQ4N0QsIDB4RUJFNCwgMHhFQkU0LCAweDQ4N0UsIDB4RUJFNywgMHhFQkU3LCAweDNERkYsCisgICAgMHhFQkU4LCAweEVCRTksIDB4NDg3RiwgMHhFQkVCLCAweEVCRUMsIDB4NDg4MSwgMHhFQkVFLCAweEVCRUUsIDB4M0UwMiwKKyAgICAweEVCRUYsIDB4RUJFRiwgMHg0ODgzLCAweEVCRjEsIDB4RUJGMSwgMHg0ODg0LCAweEVCRjIsIDB4RUJGMiwgMHgzRTA0LAorICAgIDB4RUJGNSwgMHhFQkY1LCAweDQ4ODYsIDB4RUJGNiwgMHhFQkY2LCAweDNFMDYsIDB4RUJGOSwgMHhFQkZCLCAweDNFMDksCisgICAgMHhFQkZELCAweEVCRkUsIDB4M0UwRCwgMHhFQzA1LCAweEVDMDYsIDB4M0UxNCwgMHhFQzA4LCAweEVDMDksIDB4NDg4OCwKKyAgICAweEVDMEMsIDB4RUMwQywgMHgzRTE4LCAweEVDMEUsIDB4RUMxMCwgMHgzRTFBLCAweEVDMTMsIDB4RUMxMywgMHg0ODhCLAorICAgIDB4RUMxNCwgMHhFQzE0LCAweDNFMUYsIDB4RUMxNywgMHhFQzE4LCAweDNFMjIsIDB4RUMxOSwgMHhFQzFDLCAweDQ4OEMsCisgICAgMHhFQzFELCAweEVDMUQsIDB4M0UyNCwgMHhFQzIwLCAweEVDMjAsIDB4NDg5MCwgMHhFQzIyLCAweEVDMjIsIDB4M0UyOCwKKyAgICAweEVDMjQsIDB4RUMyNCwgMHgzRTJBLCAweEVDMjYsIDB4RUMyNiwgMHgzRTJDLCAweEVDMkEsIDB4RUMyQSwgMHgzRTMwLAorICAgIDB4RUMyQiwgMHhFQzJCLCAweDQ4OTEsIDB4RUMyQywgMHhFQzJFLCAweDNFMzEsIDB4RUMyRiwgMHhFQzJGLCAweDQ4OTIsCisgICAgMHhFQzMxLCAweEVDMzEsIDB4M0UzNSwgMHhFQzMyLCAweEVDMzIsIDB4NDg5MywgMHhFQzM1LCAweEVDMzUsIDB4M0UzOCwKKyAgICAweEVDMzcsIDB4RUMzNywgMHgzRTNBLCAweEVDM0IsIDB4RUMzQywgMHgzRTNFLCAweEVDM0YsIDB4RUM0MSwgMHg0ODk0LAorICAgIDB4RUM0MiwgMHhFQzQyLCAweDNFNDIsIDB4RUM0MywgMHhFQzQzLCAweDQ4OTcsIDB4RUM0NCwgMHhFQzQ0LCAweDQzRTgsCisgICAgMHhFQzQ1LCAweEVDNDksIDB4NDg5OCwgMHhFQzRCLCAweEVDNEMsIDB4NDg5RCwgMHhFQzRGLCAweEVDNEYsIDB4NDhBMCwKKyAgICAweEVDNTIsIDB4RUM1MiwgMHg0OEExLCAweEVDNTQsIDB4RUM1NCwgMHg0OEEyLCAweEVDNTYsIDB4RUM1OCwgMHg0OEEzLAorICAgIDB4RUM1QSwgMHhFQzVBLCAweDQ4QTYsIDB4RUM1QywgMHhFQzVELCAweDQ4QTcsIDB4RUM1RiwgMHhFQzYwLCAweDQ4QTksCisgICAgMHhFQzYyLCAweEVDNjMsIDB4NDhBQywgMHhFQzY3LCAweEVDNjcsIDB4NDhBRiwgMHhFQzY4LCAweEVDNjgsIDB4M0U0RCwKKyAgICAweEVDNjksIDB4RUM3MywgMHg0OEIwLCAweEVDNzUsIDB4RUM3NiwgMHg0OEJDLCAweEVDNzksIDB4RUM3OSwgMHg0OEMwLAorICAgIDB4RUM3QiwgMHhFQzdCLCAweDQ4QzIsIDB4RUM3RSwgMHhFQzdFLCAweDQ4QzMsIDB4RUM4MCwgMHhFQzgwLCAweDQ4QzUsCisgICAgMHhFQzg0LCAweEVDODQsIDB4NDhDOCwgMHhFQzg2LCAweEVDODYsIDB4NDhDQSwgMHhFQzhELCAweEVDOEQsIDB4NDhDQywKKyAgICAweEVDOEUsIDB4RUM4RSwgMHgzRTU1LCAweEVDOTEsIDB4RUM5MSwgMHg0OENFLCAweEVDOTIsIDB4RUM5MiwgMHgzRTU4LAorICAgIDB4RUM5MywgMHhFQzk0LCAweDQ4Q0YsIDB4RUM5NSwgMHhFQzk1LCAweDNFNTksIDB4RUM5NiwgMHhFQzk2LCAweDQ4RDEsCisgICAgMHhFQzk4LCAweEVDOTgsIDB4NDhEMiwgMHhFQzk5LCAweEVDOTksIDB4M0U1QiwgMHhFQzlBLCAweEVDOUIsIDB4NDhEMywKKyAgICAweEVDOUQsIDB4RUM5RCwgMHg0OEQ2LCAweEVDOUUsIDB4RUM5RSwgMHgzRTVDLCAweEVDQTAsIDB4RUNBMCwgMHg0OEQ3LAorICAgIDB4RUNBMywgMHhFQ0E0LCAweDQ4RDgsIDB4RUNBNywgMHhFQ0E4LCAweDQ4REEsIDB4RUNBQiwgMHhFQ0FCLCAweDQ4REMsCisgICAgMHhFQ0FELCAweEVDQUQsIDB4NDhERCwgMHhFQ0FGLCAweEVDQUYsIDB4M0U2NSwgMHhFQ0I0LCAweEVDQjQsIDB4NDhERiwKKyAgICAweEVDQjYsIDB4RUNCNiwgMHgzRTZCLCAweEVDQjksIDB4RUNCQiwgMHg0OEUxLCAweEVDQ0YsIDB4RUNDRiwgMHgzRTgwLAorICAgIDB4RUNENCwgMHhFQ0Q0LCAweDNFODUsIDB4RUNEQiwgMHhFQ0RDLCAweDNFOEMsIDB4RUNERSwgMHhFQ0RFLCAweDQ4RTQsCisgICAgMHhFQ0RGLCAweEVDRTEsIDB4M0U4RiwgMHhFQ0U1LCAweEVDRTUsIDB4M0U5NSwgMHhFQ0YwLCAweEVDRjAsIDB4M0VBMCwKKyAgICAweEVDRjIsIDB4RUNGMiwgMHgzRUEyLCAweEVDRjUsIDB4RUNGNSwgMHgzRUE1LCAweEVDRkMsIDB4RUNGQywgMHgzRUFDLAorICAgIDB4RUQwNCwgMHhFRDA0LCAweDQ4RTcsIDB4RUQwNywgMHhFRDA3LCAweDQ4RTgsIDB4RUQwQSwgMHhFRDBBLCAweDQ4RUEsCisgICAgMHhFRDBDLCAweEVEMTEsIDB4NDhFQiwgMHhFRDEzLCAweEVEMTMsIDB4NDhGMSwgMHhFRDE1LCAweEVEMTcsIDB4NDhGMiwKKyAgICAweEVEMTgsIDB4RUQxOCwgMHgzRUJBLCAweEVEMUEsIDB4RUQxQSwgMHg0OEY1LCAweEVEMUMsIDB4RUQxQywgMHg0OEY2LAorICAgIDB4RUQxRCwgMHhFRDFELCAweDNFQkQsIDB4RUQxRSwgMHhFRDFFLCAweDQ4RjcsIDB4RUQyMiwgMHhFRDIyLCAweDQ4RjgsCisgICAgMHhFRDI0LCAweEVEMjUsIDB4M0VDMiwgMHhFRDI2LCAweEVEMjcsIDB4NDhGOSwgMHhFRDI5LCAweEVEMjksIDB4M0VDNSwKKyAgICAweEVEMkEsIDB4RUQyQSwgMHg0OEZCLCAweEVEMkMsIDB4RUQyQywgMHgzRUM3LCAweEVEMkQsIDB4RUQyRCwgMHg0OEZDLAorICAgIDB4RUQzQiwgMHhFRDNCLCAweDNFQ0YsIDB4RUQzRCwgMHhFRDNELCAweDQ5MDQsIDB4RUQ0MSwgMHhFRDQyLCAweDQ5MDYsCisgICAgMHhFRDQ1LCAweEVENDUsIDB4NDkwOCwgMHhFRDQ3LCAweEVENDcsIDB4M0VENSwgMHhFRDRBLCAweEVENEIsIDB4NDkwOSwKKyAgICAweEVENEQsIDB4RUQ0RSwgMHg0OTBCLCAweEVENEYsIDB4RUQ0RiwgMHgzRURBLCAweEVENTEsIDB4RUQ1MSwgMHg0OTBELAorICAgIDB4RUQ1MiwgMHhFRDUyLCAweDNFREMsIDB4RUQ1MywgMHhFRDU0LCAweDQ5MEUsIDB4RUQ1NywgMHhFRDU4LCAweDQ5MTAsCisgICAgMHhFRDVGLCAweEVENUYsIDB4M0VFNSwgMHhFRDYyLCAweEVENjIsIDB4M0VFOCwgMHhFRDZCLCAweEVENkIsIDB4M0VGMSwKKyAgICAweEVENzEsIDB4RUQ3MSwgMHg0OTEyLCAweEVENzIsIDB4RUQ3MiwgMHgzRUY3LCAweEVENzUsIDB4RUQ3NSwgMHg0OTEzLAorICAgIDB4RUQ3NywgMHhFRDc3LCAweDQ5MTUsIDB4RUQ3OCwgMHhFRDc4LCAweDNFRkEsIDB4RUQ3QSwgMHhFRDdBLCAweDQ5MTYsCisgICAgMHhFRDgxLCAweEVEODEsIDB4NDkxNywgMHhFRDg0LCAweEVEODUsIDB4M0YwNCwgMHhFRDg2LCAweEVEODYsIDB4NDkxOCwKKyAgICAweEVEODgsIDB4RUQ4OCwgMHgzRjA3LCAweEVEODksIDB4RUQ4QSwgMHg0OTE5LCAweEVEOEIsIDB4RUQ4QiwgMHgzRjA4LAorICAgIDB4RUQ4RSwgMHhFRDhFLCAweDNGMEIsIDB4RUQ5MSwgMHhFRDkxLCAweDNGMEUsIDB4RURBNiwgMHhFREE2LCAweDQ5MUMsCisgICAgMHhFREM2LCAweEVEQzYsIDB4M0Y0MSwgMHhFRENGLCAweEVEQ0YsIDB4M0Y0QSwgMHhFREQxLCAweEVERDEsIDB4NDkxRSwKKyAgICAweEVERDcsIDB4RURENywgMHg0OTFGLCAweEVEREEsIDB4RUREQSwgMHgzRjUzLCAweEVEREIsIDB4RUREQiwgMHg0OTIwLAorICAgIDB4RURERCwgMHhFRERELCAweDQ5MjEsIDB4RURFMSwgMHhFREUxLCAweDNGNTgsIDB4RURFRCwgMHhFREVELCAweDNGNjQsCisgICAgMHhFRTA4LCAweEVFMDgsIDB4M0Y3RSwgMHhFRTExLCAweEVFMTEsIDB4M0Y4NywgMHhFRTE1LCAweEVFMTUsIDB4NDkyNSwKKyAgICAweEVFMUIsIDB4RUUxQiwgMHg0OTI2LCAweEVFMjAsIDB4RUUyMCwgMHgzRjk0LCAweEVFMjIsIDB4RUUyMiwgMHg0OTI3LAorICAgIDB4RUUyQSwgMHhFRTJBLCAweDNGOUQsIDB4RUUzMCwgMHhFRTMwLCAweDQ5MjgsIDB4RUUzMSwgMHhFRTMxLCAweDNGQTMsCisgICAgMHhFRTM0LCAweEVFMzQsIDB4M0ZBNiwgMHhFRTQ4LCAweEVFNDgsIDB4NDkyOSwgMHhFRTU2LCAweEVFNTYsIDB4NDkyQSwKKyAgICAweEVFNUIsIDB4RUU1QiwgMHg0OTJCLCAweEVFNUQsIDB4RUU1RCwgMHgzRkNDLCAweEVFNjAsIDB4RUU2MCwgMHg0OTJDLAorICAgIDB4RUU2NCwgMHhFRTY0LCAweDNGRDIsIDB4RUU2QSwgMHhFRTZBLCAweDNGRDgsIDB4RUU3NiwgMHhFRTc2LCAweDNGRTQsCisgICAgMHhFRTdDLCAweEVFN0MsIDB4M0ZFQSwgMHhFRTdFLCAweEVFN0UsIDB4NDkyRCwgMHhFRTkxLCAweEVFOTEsIDB4M0ZGRCwKKyAgICAweEVFOUMsIDB4RUU5QywgMHg0OTJGLCAweEVFQTEsIDB4RUVBNiwgMHg0OTMxLCAweEVFQTcsIDB4RUVBNywgMHg0M0I0LAorICAgIDB4RUVBOCwgMHhFRUFBLCAweDQ5MzcsIDB4RUVBQywgMHhFRUIxLCAweDQ5M0EsIDB4RUVCNCwgMHhFRUI0LCAweDQ5NDIsCisgICAgMHhFRUI3LCAweEVFQjcsIDB4NDk0NSwgMHhGMzAzLCAweEYzMTgsIDB4NDRDOSwgMHhGMzI1LCAweEYzMjUsIDB4NDk2RCwKKyAgICAweEYzMjcsIDB4RjMyNywgMHg0OTZGLCAweEYzNDQsIDB4RjM0NCwgMHg0OThDLCAweEYzNDYsIDB4RjM0NiwgMHg0OThFLAorICAgIDB4RjM0QSwgMHhGMzRCLCAweDQ5OUMsIDB4RjNBMCwgMHhGM0ExLCAweDQ1MzQsIDB4RjNBQywgMHhGM0FDLCAweDQ1M0IsCisgICAgMHhGM0YwLCAweEYzRjAsIDB4NDU3NSwgMHhGM0Y5LCAweEYzRkEsIDB4NDU3QywgMHhGM0ZDLCAweEYzRkMsIDB4NDU3RiwKKyAgICAweEY0MDgsIDB4RjQwQiwgMHg0NTg5LCAweEY0M0QsIDB4RjQzRCwgMHg0NUI1LCAweEY0NDAsIDB4RjQ0MiwgMHg0MzBCLAorICAgIDB4RjQ0NCwgMHhGNDQ0LCAweDQzMEYsIDB4RjQ0NiwgMHhGNDQ2LCAweDQzMTEsIDB4RjQ0OCwgMHhGNDQ5LCAweDQzMTMsCisgICAgMHhGNDRCLCAweEY0NEIsIDB4NDMxNiwgMHhGNDRELCAweEY0NEQsIDB4NDMxOCwgMHhGNDUwLCAweEY0NTIsIDB4NDMxQiwKKyAgICAweEY0NTQsIDB4RjQ1NiwgMHg0MzFGLCAweEY0NTcsIDB4RjQ1NywgMHg0NUI3LCAweEY0NUEsIDB4RjQ1QSwgMHg0MzI1LAorICAgIDB4RjQ1QiwgMHhGNDVCLCAweDQ1QjgsIDB4RjQ1QywgMHhGNDVGLCAweDQzMjcsIDB4RjQ2MSwgMHhGNDYzLCAweDQzMkMsCisgICAgMHhGNDY1LCAweEY0NjYsIDB4NDMzMCwgMHhGNDY5LCAweEY0NjksIDB4NDMzNCwgMHhGNDZDLCAweEY0NkQsIDB4NDMzNywKKyAgICAweEY0NkUsIDB4RjQ2RSwgMHg0NUI5LCAweEY0NkYsIDB4RjQ2RiwgMHg0MzNBLCAweEY0NzQsIDB4RjQ3NCwgMHg0NUJBLAorICAgIDB4RjQ3NywgMHhGNDc3LCAweDQ1QkIsIDB4RjQ3OCwgMHhGNDc4LCAweDQzNDMsIDB4RjQ3OSwgMHhGNDc5LCAweDQ1QkMsCisgICAgMHhGNDdCLCAweEY0N0IsIDB4NDVCRCwgMHhGNDdDLCAweEY0N0UsIDB4NDM0NywgMHhGNDgwLCAweEY0ODEsIDB4NDM0QiwKKyAgICAweEY0ODMsIDB4RjQ4MywgMHg0NUJFLCAweEY0ODQsIDB4RjQ4NSwgMHg0MzRGLCAweEY0ODgsIDB4RjQ4OCwgMHg0MzUzLAorICAgIDB4RjQ4QiwgMHhGNDhCLCAweDQzNTYsIDB4RjQ4RCwgMHhGNDkwLCAweDQzNTgsIDB4RjQ5MSwgMHhGNDkxLCAweDQ1QkYsCisgICAgMHhGNDk3LCAweEY0OTgsIDB4NDM2MiwgMHhGNDlCLCAweEY0OUIsIDB4NDM2NiwgMHhGNDlFLCAweEY0OUUsIDB4NDM2OSwKKyAgICAweEY0QTQsIDB4RjRBNiwgMHg0MzZGLCAweEY0QTcsIDB4RjRBNywgMHg0NUMxLCAweEY0QTksIDB4RjRBQSwgMHg0Mzc0LAorICAgIDB4RjRBRCwgMHhGNEFELCAweDQzNzgsIDB4RjRBRiwgMHhGNEIwLCAweDQzN0EsIDB4RjRCMiwgMHhGNEIyLCAweDQ1QzMsCisgICAgMHhGNEIzLCAweEY0QjQsIDB4NDM3RSwgMHhGNEI3LCAweEY0QjcsIDB4NDM4MiwgMHhGNEJBLCAweEY0QzAsIDB4NDM4NSwKKyAgICAweEY0QzEsIDB4RjRDMSwgMHg0NUM0LCAweEY0QzMsIDB4RjRDNSwgMHg0NUM1LCAweEY0QzcsIDB4RjRDQSwgMHg0NUM5LAorICAgIDB4RjRDQywgMHhGNENGLCAweDQ1Q0UsIDB4RjREMSwgMHhGNEQ1LCAweDQ1RDIsIDB4RjRENywgMHhGNEQ3LCAweDQ1RDgsCisgICAgMHhGNEQ5LCAweEY0REEsIDB4NDVEQSwgMHhGNERCLCAweEY0REMsIDB4NDM4QywgMHhGNERELCAweEY0REUsIDB4NDVEQywKKyAgICAweEY0REYsIDB4RjRERiwgMHg0MzhFLCAweEY0RTAsIDB4RjRFMCwgMHg0NURFLCAweEY0RTIsIDB4RjRFMiwgMHg0NURGLAorICAgIDB4RjRFMywgMHhGNEUzLCAweDQzOTAsIDB4RjRFNCwgMHhGNEU0LCAweDQ1RTAsIDB4RjRFNSwgMHhGNEU1LCAweDQzOTEsCisgICAgMHhGNEU2LCAweEY0RTYsIDB4NDVFMSwgMHhGNEU3LCAweEY0RTksIDB4NDM5MiwgMHhGNEVGLCAweEY0RUYsIDB4NDVFNSwKKyAgICAweEY0RjIsIDB4RjRGMiwgMHg0Mzk3LCAweEY0RjMsIDB4RjRGMywgMHg0NUU4LCAweEY0RjgsIDB4RjRGOCwgMHg0NUVCLAorICAgIDB4RjRGQywgMHhGNEZDLCAweDQ1RUUsIDB4RjRGRSwgMHhGNEZGLCAweDQ1RjAsIDB4RjUwMCwgMHhGNTAxLCAweDQ1RjIsCisgICAgMHhGNTAzLCAweEY1MDMsIDB4NDVGNCwgMHhGNTA1LCAweEY1MDUsIDB4NDVGNiwgMHhGNTA3LCAweEY1MTEsIDB4NDVGOCwKKyAgICAweEY1MTMsIDB4RjUxNiwgMHg0NjA0LCAweEY1MTgsIDB4RjUxRCwgMHg0NjA5LCAweEY1MUYsIDB4RjUyNiwgMHg0NjEwLAorICAgIDB4RjUyQSwgMHhGNTJBLCAweDQ2MUIsIDB4RjUzMywgMHhGNTM0LCAweDQ2MjQsIDB4RjUzQSwgMHhGNTNCLCAweDQ0RTEsCisgICAgMHhGNTNELCAweEY1M0QsIDB4NDRFNCwgMHhGNTRFLCAweEY1NEUsIDB4NDRGNSwgMHhGNTUzLCAweEY1NTMsIDB4NDRGQSwKKyAgICAweEY1NTYsIDB4RjU1NiwgMHg0NEZDLCAweEY1NTksIDB4RjU1QSwgMHg0NEZGLCAweEY1NUUsIDB4RjU1RSwgMHg0NTA0LAorICAgIDB4RjU2NSwgMHhGNTY1LCAweDQ1MEIsIDB4RjU2QiwgMHhGNTZCLCAweDQ1MTEsIDB4RjU3MiwgMHhGNTcyLCAweDQ1MTgsCisgICAgMHhGNjk0LCAweEY2OTQsIDB4NDY3QywgMHhGNjlFLCAweEY2OUUsIDB4NDY4NiwgMHhGNkFELCAweEY2QUQsIDB4NDY5NCwKKyAgICAweEY2QjAsIDB4RjZCMCwgMHg0Njk3LCAweEY3RTUsIDB4RjdFNiwgMHgzNkFGLCAweEY3RTgsIDB4RjdFOCwgMHgzNkIyLAorICAgIDB4RjdFQSwgMHhGN0VCLCAweDM2QjQsIDB4RjdFRCwgMHhGN0VFLCAweDM2QjcsIDB4RkEwQywgMHhGQTBDLCAweDAyNzQsCisgICAgMHhGQTBELCAweEZBMEQsIDB4MjM4MSwgMHhGRTMwLCAweEZFMzAsIDB4MDA2RCwgMHhGRTMxLCAweEZFMzEsIDB4MDA3QSwKKyAgICAweEZFMzMsIDB4RkUzMywgMHgzNUFGLCAweEZFMzQsIDB4RkUzNCwgMHgzNUIxLCAweEZFMzUsIDB4RkUzNiwgMHgwMDgyLAorICAgIDB4RkUzNywgMHhGRTM4LCAweDAwODYsIDB4RkUzOSwgMHhGRTNBLCAweDAwOEEsIDB4RkUzQiwgMHhGRTNDLCAweDAwOEUsCisgICAgMHhGRTNELCAweEZFM0UsIDB4MDA5MiwgMHhGRTNGLCAweEZFNDAsIDB4MDA5NiwgMHhGRTQxLCAweEZFNDIsIDB4MDA5QSwKKyAgICAweEZFNDMsIDB4RkU0NCwgMHgwMDlFLCAweEZFNDksIDB4RkU0QSwgMHgwMEM3LCAweEZFNEIsIDB4RkU0QywgMHgwMENCLAorICAgIDB4RkU0RCwgMHhGRTRFLCAweDAwQzksIDB4RkU0RiwgMHhGRTRGLCAweDM1QjIsIDB4RkU1MCwgMHhGRTUwLCAweDAwNzAsCisgICAgMHhGRTUyLCAweEZFNTIsIDB4MDA3MiwgMHhGRTU0LCAweEZFNTcsIDB4MDA3NCwgMHhGRTU5LCAweEZFNUUsIDB4MDBBMCwKKyAgICAweEZFNUYsIDB4RkU2MSwgMHgwMENELCAweEZFNjIsIDB4RkU2NiwgMHgwMERGLCAweEZFNjksIDB4RkU2QiwgMHgwMTBDLAorICAgIDB4RkYwMSwgMHhGRjAxLCAweDAwNkMsIDB4RkYwMiwgMHhGRjAyLCAweDM2RTQsIDB4RkYwMywgMHhGRjAzLCAweDAwQUUsCisgICAgMHhGRjA0LCAweEZGMDQsIDB4MDEwMywgMHhGRjA1LCAweEZGMDUsIDB4MDEwOCwgMHhGRjA2LCAweEZGMDYsIDB4MDBBRiwKKyAgICAweEZGMDcsIDB4RkYwNywgMHgzNkUzLCAweEZGMDgsIDB4RkYwOSwgMHgwMDgwLCAweEZGMEEsIDB4RkYwQSwgMHgwMEIwLAorICAgIDB4RkYwQiwgMHhGRjBCLCAweDAwRDAsIDB4RkYwQywgMHhGRjBDLCAweDAwNjQsIDB4RkYwRCwgMHhGRjBELCAweDAwRDEsCisgICAgMHhGRjBFLCAweEZGMEUsIDB4MDA2NywgMHhGRjBGLCAweEZGMEYsIDB4MDEwMSwgMHhGRjEwLCAweEZGMTksIDB4MDE0RCwKKyAgICAweEZGMUEsIDB4RkYxQSwgMHgwMDZBLCAweEZGMUIsIDB4RkYxQiwgMHgwMDY5LCAweEZGMUMsIDB4RkYxQywgMHgwMEQ2LAorICAgIDB4RkYxRCwgMHhGRjFELCAweDAwRDgsIDB4RkYxRSwgMHhGRjFFLCAweDAwRDcsIDB4RkYxRiwgMHhGRjFGLCAweDAwNkIsCisgICAgMHhGRjIwLCAweEZGMjAsIDB4MDEwOSwgMHhGRjIxLCAweEZGM0EsIDB4MDE2RCwgMHhGRjNCLCAweEZGM0IsIDB4MzVCRSwKKyAgICAweEZGM0MsIDB4RkYzQywgMHgwMTAyLCAweEZGM0QsIDB4RkYzRCwgMHgzNUJGLCAweEZGM0UsIDB4RkYzRSwgMHgzNUI0LAorICAgIDB4RkYzRiwgMHhGRjNGLCAweDAwQzUsIDB4RkY0MSwgMHhGRjVBLCAweDAxODcsIDB4RkY1QiwgMHhGRjVCLCAweDAwODQsCisgICAgMHhGRjVDLCAweEZGNUMsIDB4MDA3OCwgMHhGRjVELCAweEZGNUQsIDB4MDA4NSwgMHhGRjY0LCAweEZGNjQsIDB4MDA3MSwKKyAgICAweEZGRTIsIDB4RkZFMiwgMHgzNkUxLCAweEZGRTQsIDB4RkZFNCwgMHgzNkUyLAorfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL1VuaUNOUy1VQ1MyLVZfMy5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9VbmlDTlMtVUNTMi1WXzMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZDVlMWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9VbmlDTlMtVUNTMi1WXzMuY3BwCkBAIC0wLDAgKzEsMTMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9VbmlDTlNfVUNTMl9WXzNbMTMgKiAzXSA9IHsKKyAgICAweDIwMTMsIDB4MjAxMywgMHgwMDc4LCAweDIwMTQsIDB4MjAxNCwgMHgwMDdBLCAweDIwMjUsIDB4MjAyNSwgMHgwMDZELAorICAgIDB4MzAwOCwgMHgzMDA5LCAweDAwOTYsIDB4MzAwQSwgMHgzMDBCLCAweDAwOTIsIDB4MzAwQywgMHgzMDBELCAweDAwOUEsCisgICAgMHgzMDBFLCAweDMwMEYsIDB4MDA5RSwgMHgzMDEwLCAweDMwMTEsIDB4MDA4RSwgMHgzMDE0LCAweDMwMTUsIDB4MDA4QSwKKyAgICAweEZFNEYsIDB4RkU0RiwgMHgzNUIxLCAweEZGMDgsIDB4RkYwOSwgMHgwMDgyLCAweEZGNUIsIDB4RkY1QiwgMHgwMDg2LAorICAgIDB4RkY1RCwgMHhGRjVELCAweDAwODcsCit9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvVW5pQ05TLVVURjE2LUhfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvQ05TMS9VbmlDTlMtVVRGMTYtSF8wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjlhNzI1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvVW5pQ05TLVVURjE2LUhfMC5jcHAKQEAgLTAsMCArMSwzNjUxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfVW5pQ05TX1VURjE2X0hfMFsxNDU1NyAqIDJdID0gew0KKyAgICAweDAwMjAsIDB4MDAwMSwgMHgwMDIxLCAweDAwMDIsIDB4MDAyMiwgMHgwMDAzLCAweDAwMjMsIDB4MDAwNCwNCisgICAgMHgwMDI0LCAweDAwMDUsIDB4MDAyNSwgMHgwMDA2LCAweDAwMjYsIDB4MDAwNywgMHgwMDI3LCAweDAwMDgsDQorICAgIDB4MDAyOCwgMHgwMDA5LCAweDAwMjksIDB4MDAwQSwgMHgwMDJBLCAweDAwMEIsIDB4MDAyQiwgMHgwMDBDLA0KKyAgICAweDAwMkMsIDB4MDAwRCwgMHgwMDJELCAweDAwMEUsIDB4MDAyRSwgMHgwMDBGLCAweDAwMkYsIDB4MDAxMCwNCisgICAgMHgwMDMwLCAweDAwMTEsIDB4MDAzMSwgMHgwMDEyLCAweDAwMzIsIDB4MDAxMywgMHgwMDMzLCAweDAwMTQsDQorICAgIDB4MDAzNCwgMHgwMDE1LCAweDAwMzUsIDB4MDAxNiwgMHgwMDM2LCAweDAwMTcsIDB4MDAzNywgMHgwMDE4LA0KKyAgICAweDAwMzgsIDB4MDAxOSwgMHgwMDM5LCAweDAwMUEsIDB4MDAzQSwgMHgwMDFCLCAweDAwM0IsIDB4MDAxQywNCisgICAgMHgwMDNDLCAweDAwMUQsIDB4MDAzRCwgMHgwMDFFLCAweDAwM0UsIDB4MDAxRiwgMHgwMDNGLCAweDAwMjAsDQorICAgIDB4MDA0MCwgMHgwMDIxLCAweDAwNDEsIDB4MDAyMiwgMHgwMDQyLCAweDAwMjMsIDB4MDA0MywgMHgwMDI0LA0KKyAgICAweDAwNDQsIDB4MDAyNSwgMHgwMDQ1LCAweDAwMjYsIDB4MDA0NiwgMHgwMDI3LCAweDAwNDcsIDB4MDAyOCwNCisgICAgMHgwMDQ4LCAweDAwMjksIDB4MDA0OSwgMHgwMDJBLCAweDAwNEEsIDB4MDAyQiwgMHgwMDRCLCAweDAwMkMsDQorICAgIDB4MDA0QywgMHgwMDJELCAweDAwNEQsIDB4MDAyRSwgMHgwMDRFLCAweDAwMkYsIDB4MDA0RiwgMHgwMDMwLA0KKyAgICAweDAwNTAsIDB4MDAzMSwgMHgwMDUxLCAweDAwMzIsIDB4MDA1MiwgMHgwMDMzLCAweDAwNTMsIDB4MDAzNCwNCisgICAgMHgwMDU0LCAweDAwMzUsIDB4MDA1NSwgMHgwMDM2LCAweDAwNTYsIDB4MDAzNywgMHgwMDU3LCAweDAwMzgsDQorICAgIDB4MDA1OCwgMHgwMDM5LCAweDAwNTksIDB4MDAzQSwgMHgwMDVBLCAweDAwM0IsIDB4MDA1QiwgMHgwMDNDLA0KKyAgICAweDAwNUMsIDB4MDAzRCwgMHgwMDVELCAweDAwM0UsIDB4MDA1RSwgMHgwMDNGLCAweDAwNUYsIDB4MDA0MCwNCisgICAgMHgwMDYwLCAweDAwNDEsIDB4MDA2MSwgMHgwMDQyLCAweDAwNjIsIDB4MDA0MywgMHgwMDYzLCAweDAwNDQsDQorICAgIDB4MDA2NCwgMHgwMDQ1LCAweDAwNjUsIDB4MDA0NiwgMHgwMDY2LCAweDAwNDcsIDB4MDA2NywgMHgwMDQ4LA0KKyAgICAweDAwNjgsIDB4MDA0OSwgMHgwMDY5LCAweDAwNEEsIDB4MDA2QSwgMHgwMDRCLCAweDAwNkIsIDB4MDA0QywNCisgICAgMHgwMDZDLCAweDAwNEQsIDB4MDA2RCwgMHgwMDRFLCAweDAwNkUsIDB4MDA0RiwgMHgwMDZGLCAweDAwNTAsDQorICAgIDB4MDA3MCwgMHgwMDUxLCAweDAwNzEsIDB4MDA1MiwgMHgwMDcyLCAweDAwNTMsIDB4MDA3MywgMHgwMDU0LA0KKyAgICAweDAwNzQsIDB4MDA1NSwgMHgwMDc1LCAweDAwNTYsIDB4MDA3NiwgMHgwMDU3LCAweDAwNzcsIDB4MDA1OCwNCisgICAgMHgwMDc4LCAweDAwNTksIDB4MDA3OSwgMHgwMDVBLCAweDAwN0EsIDB4MDA1QiwgMHgwMDdCLCAweDAwNUMsDQorICAgIDB4MDA3QywgMHgwMDVELCAweDAwN0QsIDB4MDA1RSwgMHgwMDdFLCAweDAwNUYsIDB4MDBBMiwgMHgwMTA2LA0KKyAgICAweDAwQTMsIDB4MDEwNywgMHgwMEE1LCAweDAxMDQsIDB4MDBBNywgMHgwMEIyLCAweDAwQTgsIDB4MzVCMywNCisgICAgMHgwMEFDLCAweDM2RTEsIDB4MDBBRiwgMHgwMEMzLCAweDAwQjAsIDB4MDExOCwgMHgwMEIxLCAweDAwRDQsDQorICAgIDB4MDBCNywgMHgwMDczLCAweDAwRDcsIDB4MDBEMiwgMHgwMEY3LCAweDAwRDMsIDB4MDJDNiwgMHgzNUI0LA0KKyAgICAweDAyQzcsIDB4MDFGOCwgMHgwMkNBLCAweDAxRjcsIDB4MDJDQiwgMHgwMUY5LCAweDAyQ0QsIDB4MDBDNiwNCisgICAgMHgwMkQ5LCAweDAxRjYsIDB4MDMwOCwgMHgzNUIzLCAweDAzOTEsIDB4MDFBMSwgMHgwMzkyLCAweDAxQTIsDQorICAgIDB4MDM5MywgMHgwMUEzLCAweDAzOTQsIDB4MDFBNCwgMHgwMzk1LCAweDAxQTUsIDB4MDM5NiwgMHgwMUE2LA0KKyAgICAweDAzOTcsIDB4MDFBNywgMHgwMzk4LCAweDAxQTgsIDB4MDM5OSwgMHgwMUE5LCAweDAzOUEsIDB4MDFBQSwNCisgICAgMHgwMzlCLCAweDAxQUIsIDB4MDM5QywgMHgwMUFDLCAweDAzOUQsIDB4MDFBRCwgMHgwMzlFLCAweDAxQUUsDQorICAgIDB4MDM5RiwgMHgwMUFGLCAweDAzQTAsIDB4MDFCMCwgMHgwM0ExLCAweDAxQjEsIDB4MDNBMywgMHgwMUIyLA0KKyAgICAweDAzQTQsIDB4MDFCMywgMHgwM0E1LCAweDAxQjQsIDB4MDNBNiwgMHgwMUI1LCAweDAzQTcsIDB4MDFCNiwNCisgICAgMHgwM0E4LCAweDAxQjcsIDB4MDNBOSwgMHgwMUI4LCAweDAzQjEsIDB4MDFCOSwgMHgwM0IyLCAweDAxQkEsDQorICAgIDB4MDNCMywgMHgwMUJCLCAweDAzQjQsIDB4MDFCQywgMHgwM0I1LCAweDAxQkQsIDB4MDNCNiwgMHgwMUJFLA0KKyAgICAweDAzQjcsIDB4MDFCRiwgMHgwM0I4LCAweDAxQzAsIDB4MDNCOSwgMHgwMUMxLCAweDAzQkEsIDB4MDFDMiwNCisgICAgMHgwM0JCLCAweDAxQzMsIDB4MDNCQywgMHgwMUM0LCAweDAzQkQsIDB4MDFDNSwgMHgwM0JFLCAweDAxQzYsDQorICAgIDB4MDNCRiwgMHgwMUM3LCAweDAzQzAsIDB4MDFDOCwgMHgwM0MxLCAweDAxQzksIDB4MDNDMywgMHgwMUNBLA0KKyAgICAweDAzQzQsIDB4MDFDQiwgMHgwM0M1LCAweDAxQ0MsIDB4MDNDNiwgMHgwMUNELCAweDAzQzcsIDB4MDFDRSwNCisgICAgMHgwM0M4LCAweDAxQ0YsIDB4MDNDOSwgMHgwMUQwLCAweDA0MDEsIDB4MzY3MCwgMHgwNDEwLCAweDM2NkEsDQorICAgIDB4MDQxMSwgMHgzNjZCLCAweDA0MTIsIDB4MzY2QywgMHgwNDEzLCAweDM2NkQsIDB4MDQxNCwgMHgzNjZFLA0KKyAgICAweDA0MTUsIDB4MzY2RiwgMHgwNDE2LCAweDM2NzEsIDB4MDQxNywgMHgzNjcyLCAweDA0MTgsIDB4MzY3MywNCisgICAgMHgwNDE5LCAweDM2NzQsIDB4MDQxQSwgMHgzNjc1LCAweDA0MUIsIDB4MzY3NiwgMHgwNDFDLCAweDM2NzcsDQorICAgIDB4MDQxRCwgMHgzNjc4LCAweDA0MUUsIDB4MzY3OSwgMHgwNDFGLCAweDM2N0EsIDB4MDQyMCwgMHgzNjdCLA0KKyAgICAweDA0MjEsIDB4MzY3QywgMHgwNDIyLCAweDM2N0QsIDB4MDQyMywgMHgzNjdFLCAweDA0MjQsIDB4MzY3RiwNCisgICAgMHgwNDI1LCAweDM2ODAsIDB4MDQyNiwgMHgzNjgxLCAweDA0MjcsIDB4MzY4MiwgMHgwNDI4LCAweDM2ODMsDQorICAgIDB4MDQyOSwgMHgzNjg0LCAweDA0MkEsIDB4MzY4NSwgMHgwNDJCLCAweDM2ODYsIDB4MDQyQywgMHgzNjg3LA0KKyAgICAweDA0MkQsIDB4MzY4OCwgMHgwNDJFLCAweDM2ODksIDB4MDQyRiwgMHgzNjhBLCAweDA0MzAsIDB4MzY4QiwNCisgICAgMHgwNDMxLCAweDM2OEMsIDB4MDQzMiwgMHgzNjhELCAweDA0MzMsIDB4MzY4RSwgMHgwNDM0LCAweDM2OEYsDQorICAgIDB4MDQzNSwgMHgzNjkwLCAweDA0MzYsIDB4MzY5MiwgMHgwNDM3LCAweDM2OTMsIDB4MDQzOCwgMHgzNjk0LA0KKyAgICAweDA0MzksIDB4MzY5NSwgMHgwNDNBLCAweDM2OTYsIDB4MDQzQiwgMHgzNjk3LCAweDA0M0MsIDB4MzY5OCwNCisgICAgMHgwNDNELCAweDM2OTksIDB4MDQzRSwgMHgzNjlBLCAweDA0M0YsIDB4MzY5QiwgMHgwNDQwLCAweDM2OUMsDQorICAgIDB4MDQ0MSwgMHgzNjlELCAweDA0NDIsIDB4MzY5RSwgMHgwNDQzLCAweDM2OUYsIDB4MDQ0NCwgMHgzNkEwLA0KKyAgICAweDA0NDUsIDB4MzZBMSwgMHgwNDQ2LCAweDM2QTIsIDB4MDQ0NywgMHgzNkEzLCAweDA0NDgsIDB4MzZBNCwNCisgICAgMHgwNDQ5LCAweDM2QTUsIDB4MDQ0QSwgMHgzNkE2LCAweDA0NEIsIDB4MzZBNywgMHgwNDRDLCAweDM2QTgsDQorICAgIDB4MDQ0RCwgMHgzNkE5LCAweDA0NEUsIDB4MzZBQSwgMHgwNDRGLCAweDM2QUIsIDB4MDQ1MSwgMHgzNjkxLA0KKyAgICAweDIwMTMsIDB4MDA3OSwgMHgyMDE0LCAweDAwN0IsIDB4MjAxOCwgMHgwMEE2LCAweDIwMTksIDB4MDBBNywNCisgICAgMHgyMDFDLCAweDAwQTgsIDB4MjAxRCwgMHgwMEE5LCAweDIwMjIsIDB4MDA2OCwgMHgyMDI1LCAweDAwNkYsDQorICAgIDB4MjAyNiwgMHgwMDZFLCAweDIwMjcsIDB4MDA2OCwgMHgyMDMyLCAweDAwQUQsIDB4MjAzNSwgMHgwMEFDLA0KKyAgICAweDIwM0IsIDB4MDBCMSwgMHgyMDNFLCAweDAwQzMsIDB4MjEwMywgMHgwMTBBLCAweDIxMDUsIDB4MDBDMiwNCisgICAgMHgyMTA5LCAweDAxMEIsIDB4MjExNiwgMHgzNkU2LCAweDIxMjEsIDB4MzZFNywgMHgyMTYwLCAweDAxNTcsDQorICAgIDB4MjE2MSwgMHgwMTU4LCAweDIxNjIsIDB4MDE1OSwgMHgyMTYzLCAweDAxNUEsIDB4MjE2NCwgMHgwMTVCLA0KKyAgICAweDIxNjUsIDB4MDE1QywgMHgyMTY2LCAweDAxNUQsIDB4MjE2NywgMHgwMTVFLCAweDIxNjgsIDB4MDE1RiwNCisgICAgMHgyMTY5LCAweDAxNjAsIDB4MjE3MCwgMHgwMjBFLCAweDIxNzEsIDB4MDIwRiwgMHgyMTcyLCAweDAyMTAsDQorICAgIDB4MjE3MywgMHgwMjExLCAweDIxNzQsIDB4MDIxMiwgMHgyMTc1LCAweDAyMTMsIDB4MjE3NiwgMHgwMjE0LA0KKyAgICAweDIxNzcsIDB4MDIxNSwgMHgyMTc4LCAweDAyMTYsIDB4MjE3OSwgMHgwMjE3LCAweDIxOTAsIDB4MDBGOCwNCisgICAgMHgyMTkxLCAweDAwRjUsIDB4MjE5MiwgMHgwMEY3LCAweDIxOTMsIDB4MDBGNiwgMHgyMTk2LCAweDAwRjksDQorICAgIDB4MjE5NywgMHgwMEZBLCAweDIxOTgsIDB4MDBGQywgMHgyMTk5LCAweDAwRkIsIDB4MjFCOCwgMHgzNkFELA0KKyAgICAweDIxQjksIDB4MzZBRSwgMHgyMUU3LCAweDM2QUMsIDB4MjIxNSwgMHgwMTAxLCAweDIyMUEsIDB4MDBENSwNCisgICAgMHgyMjFFLCAweDAwREMsIDB4MjIxRiwgMHgwMEU5LCAweDIyMjAsIDB4MDBFOCwgMHgyMjIzLCAweDAwRkUsDQorICAgIDB4MjIyNSwgMHgwMEZELCAweDIyMjksIDB4MDBFNSwgMHgyMjJBLCAweDAwRTYsIDB4MjIyQiwgMHgwMEVELA0KKyAgICAweDIyMkUsIDB4MDBFRSwgMHgyMjM0LCAweDAwRjAsIDB4MjIzNSwgMHgwMEVGLCAweDIyM0MsIDB4MDBFNCwNCisgICAgMHgyMjUyLCAweDAwREQsIDB4MjI2MCwgMHgwMERCLCAweDIyNjEsIDB4MDBERSwgMHgyMjY2LCAweDAwRDksDQorICAgIDB4MjI2NywgMHgwMERBLCAweDIyOTUsIDB4MDBGMywgMHgyMjk5LCAweDAwRjQsIDB4MjJBNSwgMHgwMEU3LA0KKyAgICAweDIyQkYsIDB4MDBFQSwgMHgyMkVGLCAweDAwNkUsIDB4MjQwMCwgMHgwMjMyLCAweDI0MDEsIDB4MDIzMywNCisgICAgMHgyNDAyLCAweDAyMzQsIDB4MjQwMywgMHgwMjM1LCAweDI0MDQsIDB4MDIzNiwgMHgyNDA1LCAweDAyMzcsDQorICAgIDB4MjQwNiwgMHgwMjM4LCAweDI0MDcsIDB4MDIzOSwgMHgyNDA4LCAweDAyM0EsIDB4MjQwOSwgMHgwMjNCLA0KKyAgICAweDI0MEEsIDB4MDIzQywgMHgyNDBCLCAweDAyM0QsIDB4MjQwQywgMHgwMjNFLCAweDI0MEQsIDB4MDIzRiwNCisgICAgMHgyNDBFLCAweDAyNDAsIDB4MjQwRiwgMHgwMjQxLCAweDI0MTAsIDB4MDI0MiwgMHgyNDExLCAweDAyNDMsDQorICAgIDB4MjQxMiwgMHgwMjQ0LCAweDI0MTMsIDB4MDI0NSwgMHgyNDE0LCAweDAyNDYsIDB4MjQxNSwgMHgwMjQ3LA0KKyAgICAweDI0MTYsIDB4MDI0OCwgMHgyNDE3LCAweDAyNDksIDB4MjQxOCwgMHgwMjRBLCAweDI0MTksIDB4MDI0QiwNCisgICAgMHgyNDFBLCAweDAyNEMsIDB4MjQxQiwgMHgwMjRELCAweDI0MUMsIDB4MDI0RSwgMHgyNDFELCAweDAyNEYsDQorICAgIDB4MjQxRSwgMHgwMjUwLCAweDI0MUYsIDB4MDI1MSwgMHgyNDIxLCAweDAyNTIsIDB4MjQ2MCwgMHgwMUZBLA0KKyAgICAweDI0NjEsIDB4MDFGQiwgMHgyNDYyLCAweDAxRkMsIDB4MjQ2MywgMHgwMUZELCAweDI0NjQsIDB4MDFGRSwNCisgICAgMHgyNDY1LCAweDAxRkYsIDB4MjQ2NiwgMHgwMjAwLCAweDI0NjcsIDB4MDIwMSwgMHgyNDY4LCAweDAyMDIsDQorICAgIDB4MjQ2OSwgMHgwMjAzLCAweDI0NzQsIDB4MDIwNCwgMHgyNDc1LCAweDAyMDUsIDB4MjQ3NiwgMHgwMjA2LA0KKyAgICAweDI0NzcsIDB4MDIwNywgMHgyNDc4LCAweDAyMDgsIDB4MjQ3OSwgMHgwMjA5LCAweDI0N0EsIDB4MDIwQSwNCisgICAgMHgyNDdCLCAweDAyMEIsIDB4MjQ3QywgMHgwMjBDLCAweDI0N0QsIDB4MDIwRCwgMHgyNTAwLCAweDAxMzcsDQorICAgIDB4MjUwMiwgMHgwMTM4LCAweDI1MEMsIDB4MDEzQSwgMHgyNTEwLCAweDAxM0IsIDB4MjUxNCwgMHgwMTNDLA0KKyAgICAweDI1MTgsIDB4MDEzRCwgMHgyNTFDLCAweDAxMzUsIDB4MjUyNCwgMHgwMTM0LCAweDI1MkMsIDB4MDEzMywNCisgICAgMHgyNTM0LCAweDAxMzIsIDB4MjUzQywgMHgwMTMxLCAweDI1NTAsIDB4MDE0MiwgMHgyNTUxLCAweDM3MEEsDQorICAgIDB4MjU1MiwgMHgzNkY4LCAweDI1NTMsIDB4MzcwMSwgMHgyNTU0LCAweDM2RUYsIDB4MjU1NSwgMHgzNkZBLA0KKyAgICAweDI1NTYsIDB4MzcwMywgMHgyNTU3LCAweDM2RjEsIDB4MjU1OCwgMHgzNkZFLCAweDI1NTksIDB4MzcwNywNCisgICAgMHgyNTVBLCAweDM2RjUsIDB4MjU1QiwgMHgzNzAwLCAweDI1NUMsIDB4MzcwOSwgMHgyNTVELCAweDM2RjcsDQorICAgIDB4MjU1RSwgMHgwMTQzLCAweDI1NUYsIDB4MzcwNCwgMHgyNTYwLCAweDM2RjIsIDB4MjU2MSwgMHgwMTQ1LA0KKyAgICAweDI1NjIsIDB4MzcwNiwgMHgyNTYzLCAweDM2RjQsIDB4MjU2NCwgMHgzNkY5LCAweDI1NjUsIDB4MzcwMiwNCisgICAgMHgyNTY2LCAweDM2RjAsIDB4MjU2NywgMHgzNkZGLCAweDI1NjgsIDB4MzcwOCwgMHgyNTY5LCAweDM2RjYsDQorICAgIDB4MjU2QSwgMHgwMTQ0LCAweDI1NkIsIDB4MzcwNSwgMHgyNTZDLCAweDM2RjMsIDB4MjU2RCwgMHgwMTNFLA0KKyAgICAweDI1NkUsIDB4MDEzRiwgMHgyNTZGLCAweDAxNDEsIDB4MjU3MCwgMHgwMTQwLCAweDI1NzEsIDB4MDE0QSwNCisgICAgMHgyNTcyLCAweDAxNEIsIDB4MjU3MywgMHgwMTRDLCAweDI1NzQsIDB4MzVCMCwgMHgyNTgxLCAweDAxMjIsDQorICAgIDB4MjU4MiwgMHgwMTIzLCAweDI1ODMsIDB4MDEyNCwgMHgyNTg0LCAweDAxMjUsIDB4MjU4NSwgMHgwMTI2LA0KKyAgICAweDI1ODYsIDB4MDEyNywgMHgyNTg3LCAweDAxMjgsIDB4MjU4OCwgMHgwMTI5LCAweDI1ODksIDB4MDEzMCwNCisgICAgMHgyNThBLCAweDAxMkYsIDB4MjU4QiwgMHgwMTJFLCAweDI1OEMsIDB4MDEyRCwgMHgyNThELCAweDAxMkMsDQorICAgIDB4MjU4RSwgMHgwMTJCLCAweDI1OEYsIDB4MDEyQSwgMHgyNTkzLCAweDM3MTAsIDB4MjU5NCwgMHgwMTM2LA0KKyAgICAweDI1OTUsIDB4MDEzOSwgMHgyNUEwLCAweDAwQkUsIDB4MjVBMSwgMHgwMEJELCAweDI1QjIsIDB4MDBCNywNCisgICAgMHgyNUIzLCAweDAwQjYsIDB4MjVCQywgMHgwMEMwLCAweDI1QkQsIDB4MDBCRiwgMHgyNUM2LCAweDAwQkMsDQorICAgIDB4MjVDNywgMHgwMEJCLCAweDI1Q0IsIDB4MDBCNCwgMHgyNUNFLCAweDAwQjgsIDB4MjVDRiwgMHgwMEI1LA0KKyAgICAweDI1RTIsIDB4MDE0NiwgMHgyNUUzLCAweDAxNDcsIDB4MjVFNCwgMHgwMTQ5LCAweDI1RTUsIDB4MDE0OCwNCisgICAgMHgyNjA1LCAweDAwQkEsIDB4MjYwNiwgMHgwMEI5LCAweDI2MDksIDB4MDBGNCwgMHgyNjQwLCAweDAwRjEsDQorICAgIDB4MjY0MSwgMHgwMEYzLCAweDI2NDIsIDB4MDBGMiwgMHgyNzNELCAweDM1QzAsIDB4MkYwMCwgMHgwMjUzLA0KKyAgICAweDJGMDEsIDB4MDIxOCwgMHgyRjAyLCAweDAyMTksIDB4MkYwMywgMHgwMjFBLCAweDJGMDQsIDB4MDI1NCwNCisgICAgMHgyRjA1LCAweDAyMUIsIDB4MkYwNiwgMHgwMjVBLCAweDJGMDcsIDB4MDIxQywgMHgyRjA4LCAweDAyNUIsDQorICAgIDB4MkYwOSwgMHgwMjVDLCAweDJGMEEsIDB4MDI1RCwgMHgyRjBCLCAweDAyNUUsIDB4MkYwQywgMHgwMjFELA0KKyAgICAweDJGMEQsIDB4MDIxRSwgMHgyRjBFLCAweDAyMUYsIDB4MkYwRiwgMHgwMjVGLCAweDJGMTAsIDB4MTc2RSwNCisgICAgMHgyRjExLCAweDAyNjAsIDB4MkYxMiwgMHgwMjYyLCAweDJGMTMsIDB4MDIyMCwgMHgyRjE0LCAweDAyNjMsDQorICAgIDB4MkYxNSwgMHgxNzZGLCAweDJGMTYsIDB4MDIyMSwgMHgyRjE3LCAweDAyNjQsIDB4MkYxOCwgMHgwMjY1LA0KKyAgICAweDJGMTksIDB4MDIyMiwgMHgyRjFBLCAweDE3NzAsIDB4MkYxQiwgMHgwMjIzLCAweDJGMUMsIDB4MDI2NiwNCisgICAgMHgyRjFELCAweDAyNzksIDB4MkYxRSwgMHgxNzc1LCAweDJGMUYsIDB4MDI3QSwgMHgyRjIwLCAweDAyN0IsDQorICAgIDB4MkYyMSwgMHgwMjI0LCAweDJGMjIsIDB4MDIyNCwgMHgyRjIzLCAweDAyN0MsIDB4MkYyNCwgMHgwMjdELA0KKyAgICAweDJGMjUsIDB4MDI3RSwgMHgyRjI2LCAweDAyN0YsIDB4MkYyNywgMHgwMjI1LCAweDJGMjgsIDB4MDI4MiwNCisgICAgMHgyRjI5LCAweDAyODMsIDB4MkYyQSwgMHgwMjg0LCAweDJGMkIsIDB4MDI4NSwgMHgyRjJDLCAweDE3NzYsDQorICAgIDB4MkYyRCwgMHgwMjg2LCAweDJGMkUsIDB4MDIyNiwgMHgyRjJGLCAweDAyODgsIDB4MkYzMCwgMHgwMjg5LA0KKyAgICAweDJGMzEsIDB4MDI4QywgMHgyRjMyLCAweDAyOEQsIDB4MkYzMywgMHgwMjI3LCAweDJGMzQsIDB4MDIyOCwNCisgICAgMHgyRjM1LCAweDAyMjksIDB4MkYzNiwgMHgwMjhFLCAweDJGMzcsIDB4MDI4RiwgMHgyRjM4LCAweDAyOTAsDQorICAgIDB4MkYzOSwgMHgwMjJBLCAweDJGM0EsIDB4MDIyQiwgMHgyRjNCLCAweDE3NzcsIDB4MkYzQywgMHgwMkQwLA0KKyAgICAweDJGM0QsIDB4MDJEMSwgMHgyRjNFLCAweDAyRDIsIDB4MkYzRiwgMHgwMkQzLCAweDJGNDAsIDB4MDJENSwNCisgICAgMHgyRjQxLCAweDAyMkMsIDB4MkY0MiwgMHgwMkQ2LCAweDJGNDMsIDB4MDJENywgMHgyRjQ0LCAweDAyRDgsDQorICAgIDB4MkY0NSwgMHgwMkQ5LCAweDJGNDYsIDB4MDIyRCwgMHgyRjQ3LCAweDAyREEsIDB4MkY0OCwgMHgwMkRCLA0KKyAgICAweDJGNDksIDB4MDJEQywgMHgyRjRBLCAweDAyREQsIDB4MkY0QiwgMHgwMkRFLCAweDJGNEMsIDB4MDJERiwNCisgICAgMHgyRjRELCAweDAyRTAsIDB4MkY0RSwgMHgxNzhBLCAweDJGNEYsIDB4MDJFMSwgMHgyRjUwLCAweDAyRTIsDQorICAgIDB4MkY1MSwgMHgwMkUzLCAweDJGNTIsIDB4MDJFNCwgMHgyRjUzLCAweDE3OEMsIDB4MkY1NCwgMHgwMkU1LA0KKyAgICAweDJGNTUsIDB4MDJFNiwgMHgyRjU2LCAweDAyRTcsIDB4MkY1NywgMHgwMkU4LCAweDJGNTgsIDB4MDJFOSwNCisgICAgMHgyRjU5LCAweDE3OEQsIDB4MkY1QSwgMHgwMkVBLCAweDJGNUIsIDB4MDJFQiwgMHgyRjVDLCAweDAyRUMsDQorICAgIDB4MkY1RCwgMHgwMkVELCAweDJGNUUsIDB4MDM1NiwgMHgyRjVGLCAweDAzNTcsIDB4MkY2MCwgMHgwMzU4LA0KKyAgICAweDJGNjEsIDB4MDM1OSwgMHgyRjYyLCAweDAzNUEsIDB4MkY2MywgMHgwMzVCLCAweDJGNjQsIDB4MDM1QywNCisgICAgMHgyRjY1LCAweDAzNUUsIDB4MkY2NiwgMHgwMzYyLCAweDJGNjcsIDB4MDIyRSwgMHgyRjY4LCAweDAyMkYsDQorICAgIDB4MkY2OSwgMHgwMzYzLCAweDJGNkEsIDB4MDM2NCwgMHgyRjZCLCAweDAzNjUsIDB4MkY2QywgMHgwMzY2LA0KKyAgICAweDJGNkQsIDB4MDM2NywgMHgyRjZFLCAweDAzNjgsIDB4MkY2RiwgMHgwMzY5LCAweDJGNzAsIDB4MDM2QSwNCisgICAgMHgyRjcxLCAweDE3QjIsIDB4MkY3MiwgMHgwMzZCLCAweDJGNzMsIDB4MDM2QywgMHgyRjc0LCAweDAzNkQsDQorICAgIDB4MkY3NSwgMHgwM0Y2LCAweDJGNzYsIDB4MDNGNywgMHgyRjc3LCAweDAzRjgsIDB4MkY3OCwgMHgwM0Y5LA0KKyAgICAweDJGNzksIDB4MTgxMiwgMHgyRjdBLCAweDAzRkEsIDB4MkY3QiwgMHgwM0ZCLCAweDJGN0MsIDB4MDNGQywNCisgICAgMHgyRjdELCAweDAzRkUsIDB4MkY3RSwgMHgwM0ZGLCAweDJGN0YsIDB4MDQwMCwgMHgyRjgwLCAweDA0MDEsDQorICAgIDB4MkY4MSwgMHgwNDAyLCAweDJGODIsIDB4MDQwNSwgMHgyRjgzLCAweDA0MDYsIDB4MkY4NCwgMHgwNDA3LA0KKyAgICAweDJGODUsIDB4MDQwOCwgMHgyRjg2LCAweDA0MDksIDB4MkY4NywgMHgwNDBBLCAweDJGODgsIDB4MDQwQiwNCisgICAgMHgyRjg5LCAweDA0MEMsIDB4MkY4QSwgMHgwNDBELCAweDJGOEIsIDB4MTgxMywgMHgyRjhDLCAweDE4MTgsDQorICAgIDB4MkY4RCwgMHgwNDBGLCAweDJGOEUsIDB4MDQxMCwgMHgyRjhGLCAweDA0MTEsIDB4MkY5MCwgMHgwNDEyLA0KKyAgICAweDJGOTEsIDB4MTgxOSwgMHgyRjkyLCAweDA1MDgsIDB4MkY5MywgMHgwNTA5LCAweDJGOTQsIDB4MDUwQSwNCisgICAgMHgyRjk1LCAweDA1MEIsIDB4MkY5NiwgMHgwNTBDLCAweDJGOTcsIDB4MDUwRCwgMHgyRjk4LCAweDE4RTcsDQorICAgIDB4MkY5OSwgMHgwNTBFLCAweDJGOUEsIDB4MDUwRiwgMHgyRjlCLCAweDA1MTAsIDB4MkY5QywgMHgwNTExLA0KKyAgICAweDJGOUQsIDB4MDUxMiwgMHgyRjlFLCAweDA1MTMsIDB4MkY5RiwgMHgwNTE0LCAweDJGQTAsIDB4MDUxNSwNCisgICAgMHgyRkExLCAweDAyMzAsIDB4MkZBMiwgMHgwNTFCLCAweDJGQTMsIDB4MDUyMCwgMHgyRkE0LCAweDA1MjEsDQorICAgIDB4MkZBNSwgMHgwNTIyLCAweDJGQTYsIDB4MDY5NiwgMHgyRkE3LCAweDA2OTcsIDB4MkZBOCwgMHgwNjk4LA0KKyAgICAweDJGQTksIDB4MDY5OSwgMHgyRkFBLCAweDAyMzEsIDB4MkZBQiwgMHgwNjlGLCAweDJGQUMsIDB4MDZBMCwNCisgICAgMHgyRkFFLCAweDA2QTIsIDB4MkZBRiwgMHgwODI2LCAweDJGQjAsIDB4MDgyNywgMHgyRkIxLCAweDA4MjgsDQorICAgIDB4MkZCMiwgMHgwODI5LCAweDJGQjMsIDB4MDgyQSwgMHgyRkI0LCAweDA4MkIsIDB4MkZCNSwgMHgwODJDLA0KKyAgICAweDJGQjYsIDB4MDgyRCwgMHgyRkI3LCAweDA4MkUsIDB4MkZCOCwgMHgwODJGLCAweDJGQjksIDB4MDgzMCwNCisgICAgMHgyRkJBLCAweDA5RjUsIDB4MkZCQiwgMHgwOUY2LCAweDJGQkMsIDB4MDlGNywgMHgyRkJELCAweDFFMzMsDQorICAgIDB4MkZCRSwgMHgwOUY4LCAweDJGQkYsIDB4MUUzNCwgMHgyRkMwLCAweDA5RjksIDB4MkZDMSwgMHgwOUZBLA0KKyAgICAweDJGQzIsIDB4MEJFMSwgMHgyRkMzLCAweDBCRTIsIDB4MkZDNCwgMHgwQkUzLCAweDJGQzUsIDB4MEJFNCwNCisgICAgMHgyRkM2LCAweDBCRTUsIDB4MkZDNywgMHgwQkU2LCAweDJGQzgsIDB4MERCQiwgMHgyRkM5LCAweDBEQkMsDQorICAgIDB4MkZDQSwgMHgwREJELCAweDJGQ0IsIDB4MjM2MCwgMHgyRkNDLCAweDI2MTIsIDB4MkZDRCwgMHgwRjdCLA0KKyAgICAweDJGQ0UsIDB4MEY3QywgMHgyRkNGLCAweDBGN0QsIDB4MkZEMCwgMHgxMTAwLCAweDJGRDEsIDB4MTEwMSwNCisgICAgMHgyRkQyLCAweDEyODksIDB4MkZEMywgMHgxM0IyLCAweDJGRDQsIDB4MTNCMywgMHgyRkQ1LCAweDJGMEQsDQorICAgIDB4MzAwMCwgMHgwMDYzLCAweDMwMDEsIDB4MDA2NSwgMHgzMDAyLCAweDAwNjYsIDB4MzAwMywgMHgwMEIzLA0KKyAgICAweDMwMDUsIDB4MzVCQSwgMHgzMDA2LCAweDM1QkIsIDB4MzAwNywgMHgzNUJDLCAweDMwMDgsIDB4MDA5NCwNCisgICAgMHgzMDA5LCAweDAwOTUsIDB4MzAwQSwgMHgwMDkwLCAweDMwMEIsIDB4MDA5MSwgMHgzMDBDLCAweDAwOTgsDQorICAgIDB4MzAwRCwgMHgwMDk5LCAweDMwMEUsIDB4MDA5QywgMHgzMDBGLCAweDAwOUQsIDB4MzAxMCwgMHgwMDhDLA0KKyAgICAweDMwMTEsIDB4MDA4RCwgMHgzMDEyLCAweDAxMDUsIDB4MzAxNCwgMHgwMDg4LCAweDMwMTUsIDB4MDA4OSwNCisgICAgMHgzMDFELCAweDAwQUEsIDB4MzAxRSwgMHgwMEFCLCAweDMwMjEsIDB4MDE2MSwgMHgzMDIyLCAweDAxNjIsDQorICAgIDB4MzAyMywgMHgwMTYzLCAweDMwMjQsIDB4MDE2NCwgMHgzMDI1LCAweDAxNjUsIDB4MzAyNiwgMHgwMTY2LA0KKyAgICAweDMwMjcsIDB4MDE2NywgMHgzMDI4LCAweDAxNjgsIDB4MzAyOSwgMHgwMTY5LCAweDMwMzgsIDB4MDE2QSwNCisgICAgMHgzMDM5LCAweDAxNkIsIDB4MzAzQSwgMHgwMTZDLCAweDMwNDEsIDB4MzVDMSwgMHgzMDQyLCAweDM1QzIsDQorICAgIDB4MzA0MywgMHgzNUMzLCAweDMwNDQsIDB4MzVDNCwgMHgzMDQ1LCAweDM1QzUsIDB4MzA0NiwgMHgzNUM2LA0KKyAgICAweDMwNDcsIDB4MzVDNywgMHgzMDQ4LCAweDM1QzgsIDB4MzA0OSwgMHgzNUM5LCAweDMwNEEsIDB4MzVDQSwNCisgICAgMHgzMDRCLCAweDM1Q0IsIDB4MzA0QywgMHgzNUNDLCAweDMwNEQsIDB4MzVDRCwgMHgzMDRFLCAweDM1Q0UsDQorICAgIDB4MzA0RiwgMHgzNUNGLCAweDMwNTAsIDB4MzVEMCwgMHgzMDUxLCAweDM1RDEsIDB4MzA1MiwgMHgzNUQyLA0KKyAgICAweDMwNTMsIDB4MzVEMywgMHgzMDU0LCAweDM1RDQsIDB4MzA1NSwgMHgzNUQ1LCAweDMwNTYsIDB4MzVENiwNCisgICAgMHgzMDU3LCAweDM1RDcsIDB4MzA1OCwgMHgzNUQ4LCAweDMwNTksIDB4MzVEOSwgMHgzMDVBLCAweDM1REEsDQorICAgIDB4MzA1QiwgMHgzNURCLCAweDMwNUMsIDB4MzVEQywgMHgzMDVELCAweDM1REQsIDB4MzA1RSwgMHgzNURFLA0KKyAgICAweDMwNUYsIDB4MzVERiwgMHgzMDYwLCAweDM1RTAsIDB4MzA2MSwgMHgzNUUxLCAweDMwNjIsIDB4MzVFMiwNCisgICAgMHgzMDYzLCAweDM1RTMsIDB4MzA2NCwgMHgzNUU0LCAweDMwNjUsIDB4MzVFNSwgMHgzMDY2LCAweDM1RTYsDQorICAgIDB4MzA2NywgMHgzNUU3LCAweDMwNjgsIDB4MzVFOCwgMHgzMDY5LCAweDM1RTksIDB4MzA2QSwgMHgzNUVBLA0KKyAgICAweDMwNkIsIDB4MzVFQiwgMHgzMDZDLCAweDM1RUMsIDB4MzA2RCwgMHgzNUVELCAweDMwNkUsIDB4MzVFRSwNCisgICAgMHgzMDZGLCAweDM1RUYsIDB4MzA3MCwgMHgzNUYwLCAweDMwNzEsIDB4MzVGMSwgMHgzMDcyLCAweDM1RjIsDQorICAgIDB4MzA3MywgMHgzNUYzLCAweDMwNzQsIDB4MzVGNCwgMHgzMDc1LCAweDM1RjUsIDB4MzA3NiwgMHgzNUY2LA0KKyAgICAweDMwNzcsIDB4MzVGNywgMHgzMDc4LCAweDM1RjgsIDB4MzA3OSwgMHgzNUY5LCAweDMwN0EsIDB4MzVGQSwNCisgICAgMHgzMDdCLCAweDM1RkIsIDB4MzA3QywgMHgzNUZDLCAweDMwN0QsIDB4MzVGRCwgMHgzMDdFLCAweDM1RkUsDQorICAgIDB4MzA3RiwgMHgzNUZGLCAweDMwODAsIDB4MzYwMCwgMHgzMDgxLCAweDM2MDEsIDB4MzA4MiwgMHgzNjAyLA0KKyAgICAweDMwODMsIDB4MzYwMywgMHgzMDg0LCAweDM2MDQsIDB4MzA4NSwgMHgzNjA1LCAweDMwODYsIDB4MzYwNiwNCisgICAgMHgzMDg3LCAweDM2MDcsIDB4MzA4OCwgMHgzNjA4LCAweDMwODksIDB4MzYwOSwgMHgzMDhBLCAweDM2MEEsDQorICAgIDB4MzA4QiwgMHgzNjBCLCAweDMwOEMsIDB4MzYwQywgMHgzMDhELCAweDM2MEQsIDB4MzA4RSwgMHgzNjBFLA0KKyAgICAweDMwOEYsIDB4MzYwRiwgMHgzMDkwLCAweDM2MTAsIDB4MzA5MSwgMHgzNjExLCAweDMwOTIsIDB4MzYxMiwNCisgICAgMHgzMDkzLCAweDM2MTMsIDB4MzA5RCwgMHgzNUI3LCAweDMwOUUsIDB4MzVCOCwgMHgzMEExLCAweDM2MTQsDQorICAgIDB4MzBBMiwgMHgzNjE1LCAweDMwQTMsIDB4MzYxNiwgMHgzMEE0LCAweDM2MTcsIDB4MzBBNSwgMHgzNjE4LA0KKyAgICAweDMwQTYsIDB4MzYxOSwgMHgzMEE3LCAweDM2MUEsIDB4MzBBOCwgMHgzNjFCLCAweDMwQTksIDB4MzYxQywNCisgICAgMHgzMEFBLCAweDM2MUQsIDB4MzBBQiwgMHgzNjFFLCAweDMwQUMsIDB4MzYxRiwgMHgzMEFELCAweDM2MjAsDQorICAgIDB4MzBBRSwgMHgzNjIxLCAweDMwQUYsIDB4MzYyMiwgMHgzMEIwLCAweDM2MjMsIDB4MzBCMSwgMHgzNjI0LA0KKyAgICAweDMwQjIsIDB4MzYyNSwgMHgzMEIzLCAweDM2MjYsIDB4MzBCNCwgMHgzNjI3LCAweDMwQjUsIDB4MzYyOCwNCisgICAgMHgzMEI2LCAweDM2MjksIDB4MzBCNywgMHgzNjJBLCAweDMwQjgsIDB4MzYyQiwgMHgzMEI5LCAweDM2MkMsDQorICAgIDB4MzBCQSwgMHgzNjJELCAweDMwQkIsIDB4MzYyRSwgMHgzMEJDLCAweDM2MkYsIDB4MzBCRCwgMHgzNjMwLA0KKyAgICAweDMwQkUsIDB4MzYzMSwgMHgzMEJGLCAweDM2MzIsIDB4MzBDMCwgMHgzNjMzLCAweDMwQzEsIDB4MzYzNCwNCisgICAgMHgzMEMyLCAweDM2MzUsIDB4MzBDMywgMHgzNjM2LCAweDMwQzQsIDB4MzYzNywgMHgzMEM1LCAweDM2MzgsDQorICAgIDB4MzBDNiwgMHgzNjM5LCAweDMwQzcsIDB4MzYzQSwgMHgzMEM4LCAweDM2M0IsIDB4MzBDOSwgMHgzNjNDLA0KKyAgICAweDMwQ0EsIDB4MzYzRCwgMHgzMENCLCAweDM2M0UsIDB4MzBDQywgMHgzNjNGLCAweDMwQ0QsIDB4MzY0MCwNCisgICAgMHgzMENFLCAweDM2NDEsIDB4MzBDRiwgMHgzNjQyLCAweDMwRDAsIDB4MzY0MywgMHgzMEQxLCAweDM2NDQsDQorICAgIDB4MzBEMiwgMHgzNjQ1LCAweDMwRDMsIDB4MzY0NiwgMHgzMEQ0LCAweDM2NDcsIDB4MzBENSwgMHgzNjQ4LA0KKyAgICAweDMwRDYsIDB4MzY0OSwgMHgzMEQ3LCAweDM2NEEsIDB4MzBEOCwgMHgzNjRCLCAweDMwRDksIDB4MzY0QywNCisgICAgMHgzMERBLCAweDM2NEQsIDB4MzBEQiwgMHgzNjRFLCAweDMwREMsIDB4MzY0RiwgMHgzMERELCAweDM2NTAsDQorICAgIDB4MzBERSwgMHgzNjUxLCAweDMwREYsIDB4MzY1MiwgMHgzMEUwLCAweDM2NTMsIDB4MzBFMSwgMHgzNjU0LA0KKyAgICAweDMwRTIsIDB4MzY1NSwgMHgzMEUzLCAweDM2NTYsIDB4MzBFNCwgMHgzNjU3LCAweDMwRTUsIDB4MzY1OCwNCisgICAgMHgzMEU2LCAweDM2NTksIDB4MzBFNywgMHgzNjVBLCAweDMwRTgsIDB4MzY1QiwgMHgzMEU5LCAweDM2NUMsDQorICAgIDB4MzBFQSwgMHgzNjVELCAweDMwRUIsIDB4MzY1RSwgMHgzMEVDLCAweDM2NUYsIDB4MzBFRCwgMHgzNjYwLA0KKyAgICAweDMwRUUsIDB4MzY2MSwgMHgzMEVGLCAweDM2NjIsIDB4MzBGMCwgMHgzNjYzLCAweDMwRjEsIDB4MzY2NCwNCisgICAgMHgzMEYyLCAweDM2NjUsIDB4MzBGMywgMHgzNjY2LCAweDMwRjQsIDB4MzY2NywgMHgzMEY1LCAweDM2NjgsDQorICAgIDB4MzBGNiwgMHgzNjY5LCAweDMwRkMsIDB4MzVCRCwgMHgzMEZELCAweDM1QjUsIDB4MzBGRSwgMHgzNUI2LA0KKyAgICAweDMxMDUsIDB4MDFEMSwgMHgzMTA2LCAweDAxRDIsIDB4MzEwNywgMHgwMUQzLCAweDMxMDgsIDB4MDFENCwNCisgICAgMHgzMTA5LCAweDAxRDUsIDB4MzEwQSwgMHgwMUQ2LCAweDMxMEIsIDB4MDFENywgMHgzMTBDLCAweDAxRDgsDQorICAgIDB4MzEwRCwgMHgwMUQ5LCAweDMxMEUsIDB4MDFEQSwgMHgzMTBGLCAweDAxREIsIDB4MzExMCwgMHgwMURDLA0KKyAgICAweDMxMTEsIDB4MDFERCwgMHgzMTEyLCAweDAxREUsIDB4MzExMywgMHgwMURGLCAweDMxMTQsIDB4MDFFMCwNCisgICAgMHgzMTE1LCAweDAxRTEsIDB4MzExNiwgMHgwMUUyLCAweDMxMTcsIDB4MDFFMywgMHgzMTE4LCAweDAxRTQsDQorICAgIDB4MzExOSwgMHgwMUU1LCAweDMxMUEsIDB4MDFFNiwgMHgzMTFCLCAweDAxRTcsIDB4MzExQywgMHgwMUU4LA0KKyAgICAweDMxMUQsIDB4MDFFOSwgMHgzMTFFLCAweDAxRUEsIDB4MzExRiwgMHgwMUVCLCAweDMxMjAsIDB4MDFFQywNCisgICAgMHgzMTIxLCAweDAxRUQsIDB4MzEyMiwgMHgwMUVFLCAweDMxMjMsIDB4MDFFRiwgMHgzMTI0LCAweDAxRjAsDQorICAgIDB4MzEyNSwgMHgwMUYxLCAweDMxMjYsIDB4MDFGMiwgMHgzMTI3LCAweDAxRjMsIDB4MzEyOCwgMHgwMUY0LA0KKyAgICAweDMxMjksIDB4MDFGNSwgMHgzMjMxLCAweDM2RTUsIDB4MzJBMywgMHgwMEMxLCAweDMzOEUsIDB4MDExNSwNCisgICAgMHgzMzhGLCAweDAxMTYsIDB4MzM5QywgMHgwMTEwLCAweDMzOUQsIDB4MDExMSwgMHgzMzlFLCAweDAxMTIsDQorICAgIDB4MzNBMSwgMHgwMTE0LCAweDMzQzQsIDB4MDExNywgMHgzM0NFLCAweDAxMTMsIDB4MzNEMSwgMHgwMEVDLA0KKyAgICAweDMzRDIsIDB4MDBFQiwgMHgzM0Q1LCAweDAxMEYsIDB4MzYxRCwgMHgzNkI3LCAweDQ0OTEsIDB4MzZCNCwNCisgICAgMHg0RTAwLCAweDAyNTMsIDB4NEUwMSwgMHgwMjU1LCAweDRFMDMsIDB4MDI1NiwgMHg0RTA3LCAweDE3NzEsDQorICAgIDB4NEUwOCwgMHgwMjY5LCAweDRFMDksIDB4MDI2NywgMHg0RTBBLCAweDAyNkEsIDB4NEUwQiwgMHgwMjY4LA0KKyAgICAweDRFMEMsIDB4MTc3MiwgMHg0RTBELCAweDAyOTQsIDB4NEUwRSwgMHgxNzdBLCAweDRFMEYsIDB4MTc3OCwNCisgICAgMHg0RTEwLCAweDAyOTMsIDB4NEUxMSwgMHgwMjkyLCAweDRFMTQsIDB4MDJGMiwgMHg0RTE1LCAweDAyRjEsDQorICAgIDB4NEUxNiwgMHgwMkYwLCAweDRFMTgsIDB4MDJGMywgMHg0RTE5LCAweDAyRUYsIDB4NEUxRSwgMHgwMzZFLA0KKyAgICAweDRFMUYsIDB4MDM2RiwgMHg0RTI2LCAweDA1MjgsIDB4NEUyOCwgMHgwMjE4LCAweDRFMkIsIDB4MDI2QiwNCisgICAgMHg0RTJELCAweDAyOTUsIDB4NEUyRSwgMHgxNzdCLCAweDRFMzAsIDB4MDI5NiwgMHg0RTMxLCAweDE3OEUsDQorICAgIDB4NEUzMiwgMHgwNDE1LCAweDRFMzMsIDB4MThGNCwgMHg0RTM2LCAweDAyMTksIDB4NEUzOCwgMHgwMjZDLA0KKyAgICAweDRFMzksIDB4MDI5NywgMHg0RTNCLCAweDAyRjQsIDB4NEUzQywgMHgxNzhGLCAweDRFM0YsIDB4MDIxQSwNCisgICAgMHg0RTQxLCAweDM2QUYsIDB4NEU0MiwgMHgxNzZDLCAweDRFNDMsIDB4MDI1NywgMHg0RTQ1LCAweDAyNkUsDQorICAgIDB4NEU0NywgMHgxNzczLCAweDRFNDgsIDB4MDI2RiwgMHg0RTRCLCAweDAyOTgsIDB4NEU0RCwgMHgwMkY1LA0KKyAgICAweDRFNEUsIDB4MDJGNywgMHg0RTRGLCAweDAyRjYsIDB4NEU1MiwgMHgwMzcwLCAweDRFNTMsIDB4MDM3MSwNCisgICAgMHg0RTU2LCAweDA1MjksIDB4NEU1OCwgMHgwODMxLCAweDRFNTksIDB4MDI1NCwgMHg0RTVBLCAweDM2QjEsDQorICAgIDB4NEU1QywgMHgxNzZELCAweDRFNUQsIDB4MDI1OCwgMHg0RTVFLCAweDAyNzEsIDB4NEU1RiwgMHgwMjcwLA0KKyAgICAweDRFNjksIDB4MDM3MiwgMHg0RTczLCAweDA1MkEsIDB4NEU3RSwgMHgwOUZCLCAweDRFN0YsIDB4MUUzNSwNCisgICAgMHg0RTgyLCAweDBEQkUsIDB4NEU4MywgMHgyMzYxLCAweDRFODQsIDB4MjM2MiwgMHg0RTg1LCAweDAyMUIsDQorICAgIDB4NEU4NiwgMHgwMjU5LCAweDRFODgsIDB4MDI5QSwgMHg0RThCLCAweDA1MkIsIDB4NEU4QywgMHgwMjVBLA0KKyAgICAweDRFOEQsIDB4MTc3NCwgMHg0RThFLCAweDAyNzIsIDB4NEU5MSwgMHgwMjlCLCAweDRFOTIsIDB4MDI5RCwNCisgICAgMHg0RTkzLCAweDE3N0MsIDB4NEU5NCwgMHgwMjlFLCAweDRFOTUsIDB4MDI5QywgMHg0RTk5LCAweDAzNzMsDQorICAgIDB4NEU5QiwgMHgwNTJDLCAweDRFOUUsIDB4MDUyRCwgMHg0RTlGLCAweDA2QTMsIDB4NEVBMCwgMHgwMjFDLA0KKyAgICAweDRFQTEsIDB4MDI3MywgMHg0RUEyLCAweDAyOUYsIDB4NEVBNCwgMHgwMzc0LCAweDRFQTUsIDB4MDM3NiwNCisgICAgMHg0RUE2LCAweDAzNzUsIDB4NEVBOCwgMHgwNDE2LCAweDRFQUIsIDB4MDUyRSwgMHg0RUFDLCAweDA1MkYsDQorICAgIDB4NEVBRCwgMHgwNkE0LCAweDRFQUUsIDB4MDZBNSwgMHg0RUIzLCAweDA4MzIsIDB4NEVCNiwgMHgyMzYzLA0KKyAgICAweDRFQjksIDB4MzM3NywgMHg0RUJBLCAweDAyNUIsIDB4NEVDMCwgMHgwMkExLCAweDRFQzEsIDB4MDJBMCwNCisgICAgMHg0RUMyLCAweDE3N0QsIDB4NEVDMywgMHgwMkEyLCAweDRFQzQsIDB4MDJBOCwgMHg0RUM2LCAweDAyQTMsDQorICAgIDB4NEVDNywgMHgwMkE0LCAweDRFQzgsIDB4MTc3RiwgMHg0RUM5LCAweDE3N0UsIDB4NEVDQSwgMHgwMkE2LA0KKyAgICAweDRFQ0IsIDB4MDJBNywgMHg0RUNELCAweDAyQTUsIDB4NEVENCwgMHgwMkZBLCAweDRFRDUsIDB4MDJGQiwNCisgICAgMHg0RUQ2LCAweDAyRkMsIDB4NEVENywgMHgwMkZELCAweDRFRDgsIDB4MDJGOSwgMHg0RUQ5LCAweDAzMDAsDQorICAgIDB4NEVEQSwgMHgxNzk1LCAweDRFREMsIDB4MTc5MSwgMHg0RURELCAweDE3OTQsIDB4NEVERSwgMHgwMzAxLA0KKyAgICAweDRFREYsIDB4MDMxMSwgMHg0RUUxLCAweDE3OTMsIDB4NEVFMywgMHgwMkZFLCAweDRFRTQsIDB4MDJGRiwNCisgICAgMHg0RUU1LCAweDAyRjgsIDB4NEVFOCwgMHgxNzkwLCAweDRFRTksIDB4MTc5MiwgMHg0RUYwLCAweDAzODMsDQorICAgIDB4NEVGMSwgMHgxN0JBLCAweDRFRjIsIDB4MDM4MCwgMHg0RUYzLCAweDAzODQsIDB4NEVGNCwgMHgxN0M0LA0KKyAgICAweDRFRjUsIDB4MTdCOCwgMHg0RUY2LCAweDAzODEsIDB4NEVGNywgMHgxN0JDLCAweDRFRkIsIDB4MDM4MiwNCisgICAgMHg0RUZELCAweDAzODUsIDB4NEVGRiwgMHgwMzc3LCAweDRGMDAsIDB4MTdCQiwgMHg0RjAxLCAweDAzODYsDQorICAgIDB4NEYwMiwgMHgxN0JGLCAweDRGMDQsIDB4MTdDMywgMHg0RjA1LCAweDE3QzAsIDB4NEYwOCwgMHgxN0JELA0KKyAgICAweDRGMDksIDB4MDM3OCwgMHg0RjBBLCAweDAzN0EsIDB4NEYwQiwgMHgwMzg3LCAweDRGMEQsIDB4MDM3QywNCisgICAgMHg0RjBFLCAweDE3QjUsIDB4NEYwRiwgMHgwMzdGLCAweDRGMTAsIDB4MDM3RCwgMHg0RjExLCAweDAzN0UsDQorICAgIDB4NEYxMiwgMHgxN0M1LCAweDRGMTMsIDB4MTdDMiwgMHg0RjE0LCAweDE3QjksIDB4NEYxNSwgMHgwMzdCLA0KKyAgICAweDRGMTgsIDB4MTdCNiwgMHg0RjE5LCAweDAzNzksIDB4NEYxRCwgMHgxN0JFLCAweDRGMjIsIDB4MTdDMSwNCisgICAgMHg0RjJDLCAweDE3QjcsIDB4NEYyRCwgMHgxODJGLCAweDRGMkYsIDB4MDQyQywgMHg0RjMwLCAweDA0MUYsDQorICAgIDB4NEYzMywgMHgxODMwLCAweDRGMzQsIDB4MDQxQywgMHg0RjM2LCAweDA0MkUsIDB4NEYzOCwgMHgwNDI0LA0KKyAgICAweDRGM0EsIDB4MDQyMywgMHg0RjNCLCAweDE4MjQsIDB4NEYzQywgMHgwNDI3LCAweDRGM0QsIDB4MDQyMiwNCisgICAgMHg0RjNFLCAweDE4MjksIDB4NEYzRiwgMHgxODMxLCAweDRGNDEsIDB4MTgyRCwgMHg0RjQzLCAweDA0MjUsDQorICAgIDB4NEY0NiwgMHgwNDI4LCAweDRGNDcsIDB4MDQxOSwgMHg0RjQ4LCAweDA0MzEsIDB4NEY0OSwgMHgxODI2LA0KKyAgICAweDRGNEMsIDB4MTkwMCwgMHg0RjRELCAweDA0MTcsIDB4NEY0RSwgMHgwNDJELCAweDRGNEYsIDB4MDQxOCwNCisgICAgMHg0RjUwLCAweDA0MjAsIDB4NEY1MSwgMHgwNDIxLCAweDRGNTIsIDB4MTgyQiwgMHg0RjUzLCAweDE4MjcsDQorICAgIDB4NEY1NCwgMHgwNDI2LCAweDRGNTUsIDB4MDQxRSwgMHg0RjU2LCAweDE4MjMsIDB4NEY1NywgMHgwNDFBLA0KKyAgICAweDRGNTgsIDB4MTgyRSwgMHg0RjU5LCAweDA0MkYsIDB4NEY1QSwgMHgwNDMyLCAweDRGNUIsIDB4MDQxRCwNCisgICAgMHg0RjVDLCAweDA0MkEsIDB4NEY1RCwgMHgwNDMwLCAweDRGNUUsIDB4MDQxQiwgMHg0RjVGLCAweDE4MkMsDQorICAgIDB4NEY2MCwgMHgwNDJCLCAweDRGNjEsIDB4MTgzMiwgMHg0RjYyLCAweDE4MjUsIDB4NEY2MywgMHgwNDI5LA0KKyAgICAweDRGNjQsIDB4MTgyOCwgMHg0RjY3LCAweDE4MkEsIDB4NEY2OSwgMHgwNTNELCAweDRGNkEsIDB4MTkwMiwNCisgICAgMHg0RjZCLCAweDE5MEUsIDB4NEY2QywgMHgwNTM1LCAweDRGNkUsIDB4MTkwRiwgMHg0RjZGLCAweDA1MzAsDQorICAgIDB4NEY3MCwgMHgwNTNBLCAweDRGNzMsIDB4MDUzMywgMHg0Rjc0LCAweDE4RkMsIDB4NEY3NSwgMHgwNTNCLA0KKyAgICAweDRGNzYsIDB4MThGQiwgMHg0Rjc3LCAweDE4RkYsIDB4NEY3OCwgMHgxOTA2LCAweDRGNzksIDB4MTkwNCwNCisgICAgMHg0RjdBLCAweDA1NDMsIDB4NEY3QiwgMHgwNTNFLCAweDRGN0MsIDB4MThGNiwgMHg0RjdELCAweDE4RjgsDQorICAgIDB4NEY3RSwgMHgwNTQwLCAweDRGN0YsIDB4MDUzNCwgMHg0RjgwLCAweDE4RjksIDB4NEY4MSwgMHgxOTA1LA0KKyAgICAweDRGODIsIDB4MTkwQywgMHg0RjgzLCAweDA1MzksIDB4NEY4NCwgMHgxOEZFLCAweDRGODUsIDB4MThGNywNCisgICAgMHg0Rjg2LCAweDA1MzgsIDB4NEY4NywgMHgxOEZBLCAweDRGODgsIDB4MDUzQywgMHg0Rjg5LCAweDE4RkQsDQorICAgIDB4NEY4QiwgMHgwNTM3LCAweDRGOEQsIDB4MDUzMiwgMHg0RjhGLCAweDA1NDEsIDB4NEY5MCwgMHgxOTA3LA0KKyAgICAweDRGOTEsIDB4MDU0MiwgMHg0RjkyLCAweDE5MEIsIDB4NEY5NCwgMHgxOTA5LCAweDRGOTUsIDB4MTkwRCwNCisgICAgMHg0Rjk2LCAweDA1M0YsIDB4NEY5NywgMHgxOTAxLCAweDRGOTgsIDB4MThGNSwgMHg0RjlBLCAweDE5MDMsDQorICAgIDB4NEY5QiwgMHgwNTM2LCAweDRGOUMsIDB4MTkwOCwgMHg0RjlELCAweDA1MzEsIDB4NEY5RSwgMHgxOTBBLA0KKyAgICAweDRGQUUsIDB4MDZCNCwgMHg0RkFGLCAweDA2QTgsIDB4NEZCMiwgMHgxQTVELCAweDRGQjMsIDB4MUE2NSwNCisgICAgMHg0RkI1LCAweDA2QTcsIDB4NEZCNiwgMHgwNkFGLCAweDRGQjcsIDB4MDZCQiwgMHg0RkI5LCAweDFBNkIsDQorICAgIDB4NEZCQSwgMHgxQTY5LCAweDRGQkIsIDB4MUE2NCwgMHg0RkJGLCAweDA2QTksIDB4NEZDMCwgMHgxQTZBLA0KKyAgICAweDRGQzEsIDB4MUE2MCwgMHg0RkMyLCAweDA2QjcsIDB4NEZDMywgMHgwNkFFLCAweDRGQzQsIDB4MDZCNiwNCisgICAgMHg0RkM1LCAweDFBNUIsIDB4NEZDNywgMHgxQTY3LCAweDRGQzksIDB4MUE1RSwgMHg0RkNBLCAweDA2QjIsDQorICAgIDB4NEZDQiwgMHgxQTVGLCAweDRGQ0QsIDB4MUE1QSwgMHg0RkNFLCAweDA2QjksIDB4NEZDRiwgMHgwNkFDLA0KKyAgICAweDRGRDAsIDB4MDZCNSwgMHg0RkQxLCAweDA2QUIsIDB4NEZEMywgMHgxQTVDLCAweDRGRDQsIDB4MUE2MSwNCisgICAgMHg0RkQ2LCAweDFBNjgsIDB4NEZENywgMHgwNkIzLCAweDRGRDgsIDB4MDZCMCwgMHg0RkQ5LCAweDFBNjMsDQorICAgIDB4NEZEQSwgMHgwNkI4LCAweDRGREIsIDB4MUE2NiwgMHg0RkRDLCAweDFBNjIsIDB4NEZERCwgMHgwNkFELA0KKyAgICAweDRGREUsIDB4MDZCQSwgMHg0RkRGLCAweDA2QjEsIDB4NEZFMCwgMHgwNkFBLCAweDRGRTEsIDB4MDZBNiwNCisgICAgMHg0RkVDLCAweDFBNkMsIDB4NEZFRSwgMHgwODRDLCAweDRGRUYsIDB4MDgzNiwgMHg0RkYxLCAweDA4NDYsDQorICAgIDB4NEZGMywgMHgwODRCLCAweDRGRjQsIDB4MUMyNCwgMHg0RkY1LCAweDFDMjMsIDB4NEZGNiwgMHgxQzI4LA0KKyAgICAweDRGRjcsIDB4MUMyOSwgMHg0RkY4LCAweDA4MzksIDB4NEZGQSwgMHgwODQyLCAweDRGRkUsIDB4MDg0RiwNCisgICAgMHg1MDAwLCAweDA4NDMsIDB4NTAwNSwgMHgxQzFELCAweDUwMDYsIDB4MDgzQywgMHg1MDA3LCAweDFDMUUsDQorICAgIDB4NTAwOSwgMHgwODUxLCAweDUwMEIsIDB4MDg0OCwgMHg1MDBDLCAweDA4MzMsIDB4NTAwRCwgMHgwODM0LA0KKyAgICAweDUwMEUsIDB4MUMzMSwgMHg1MDBGLCAweDBBMEMsIDB4NTAxMSwgMHgwODQxLCAweDUwMTIsIDB4MDg0MCwNCisgICAgMHg1MDEzLCAweDFDMUYsIDB4NTAxNCwgMHgwODQ0LCAweDUwMTUsIDB4MUU0NSwgMHg1MDE2LCAweDA4M0IsDQorICAgIDB4NTAxNywgMHgxQzJBLCAweDUwMTgsIDB4MDg0QSwgMHg1MDE5LCAweDA4NDksIDB4NTAxQSwgMHgwODNGLA0KKyAgICAweDUwMUIsIDB4MUMyMiwgMHg1MDFDLCAweDFDMkIsIDB4NTAxRSwgMHgxQzFDLCAweDUwMUYsIDB4MDgzRSwNCisgICAgMHg1MDIwLCAweDFDMkMsIDB4NTAyMSwgMHgwODQ3LCAweDUwMjIsIDB4MUMyMCwgMHg1MDIzLCAweDA4MzUsDQorICAgIDB4NTAyNSwgMHgwODM4LCAweDUwMjYsIDB4MDgzNywgMHg1MDI3LCAweDFDMkQsIDB4NTAyOCwgMHgwODQ1LA0KKyAgICAweDUwMjksIDB4MDgzQSwgMHg1MDJBLCAweDA4NEUsIDB4NTAyQiwgMHgwODUwLCAweDUwMkMsIDB4MUMyNywNCisgICAgMHg1MDJELCAweDA4NEQsIDB4NTAyRiwgMHgxQzJGLCAweDUwMzAsIDB4MUMyMSwgMHg1MDMxLCAweDFDMzAsDQorICAgIDB4NTAzMywgMHgxQzI1LCAweDUwMzUsIDB4MUMyRSwgMHg1MDM3LCAweDFDMjYsIDB4NTAzQywgMHgwODNELA0KKyAgICAweDUwNDAsIDB4MUU0RCwgMHg1MDQxLCAweDFFNDEsIDB4NTA0MywgMHgwQTAwLCAweDUwNDUsIDB4MUU0NiwNCisgICAgMHg1MDQ2LCAweDFFNEMsIDB4NTA0NywgMHgwOUZGLCAweDUwNDgsIDB4MUUzRiwgMHg1MDQ5LCAweDBBMDMsDQorICAgIDB4NTA0QSwgMHgxRTQzLCAweDUwNEIsIDB4MUUzQywgMHg1MDRDLCAweDBBMDEsIDB4NTA0RCwgMHgxRTQwLA0KKyAgICAweDUwNEUsIDB4MEEwNiwgMHg1MDRGLCAweDBBMEIsIDB4NTA1MSwgMHgxRTUxLCAweDUwNTMsIDB4MUUzQiwNCisgICAgMHg1MDU1LCAweDBBMDcsIDB4NTA1NywgMHgxRTUwLCAweDUwNUEsIDB4MEEwMiwgMHg1MDVCLCAweDFFNDIsDQorICAgIDB4NTA1QywgMHgwOUZFLCAweDUwNUQsIDB4MUUzRCwgMHg1MDVFLCAweDFFMzksIDB4NTA1RiwgMHgxRTQ3LA0KKyAgICAweDUwNjAsIDB4MUUzQSwgMHg1MDYxLCAweDFFMzgsIDB4NTA2MiwgMHgxRTQ0LCAweDUwNjMsIDB4MUU0QSwNCisgICAgMHg1MDY0LCAweDFFNEIsIDB4NTA2NSwgMHgwQTA0LCAweDUwNjgsIDB4MjBCOCwgMHg1MDY5LCAweDFFNDgsDQorICAgIDB4NTA2QSwgMHgxRTM3LCAweDUwNkIsIDB4MUU0OSwgMHg1MDZELCAweDBBMEUsIDB4NTA2RSwgMHgxRTRFLA0KKyAgICAweDUwNkYsIDB4MEEwRCwgMHg1MDcwLCAweDFFMzYsIDB4NTA3MiwgMHgxRTNFLCAweDUwNzMsIDB4MUU0RiwNCisgICAgMHg1MDc0LCAweDBBMDksIDB4NTA3NSwgMHgwQTA4LCAweDUwNzYsIDB4MEEwNSwgMHg1MDc3LCAweDBBMEEsDQorICAgIDB4NTA3QSwgMHgwOUZDLCAweDUwN0QsIDB4MDlGRCwgMHg1MDgwLCAweDBCRUMsIDB4NTA4MiwgMHgyMEJCLA0KKyAgICAweDUwODMsIDB4MjBCNCwgMHg1MDg1LCAweDBCRTksIDB4NTA4NywgMHgyMEJDLCAweDUwOEIsIDB4MjBCMiwNCisgICAgMHg1MDhDLCAweDIwQjUsIDB4NTA4RCwgMHgwQkU4LCAweDUwOEUsIDB4MjBCNiwgMHg1MDkxLCAweDBCRUIsDQorICAgIDB4NTA5MiwgMHgyMEJBLCAweDUwOTQsIDB4MjBCMCwgMHg1MDk1LCAweDIwQUYsIDB4NTA5NiwgMHgwQkVELA0KKyAgICAweDUwOTgsIDB4MEJFRSwgMHg1MDk5LCAweDBCRUEsIDB4NTA5QSwgMHgwQkVGLCAweDUwOUIsIDB4MjBBRSwNCisgICAgMHg1MDlDLCAweDIwQjksIDB4NTA5RCwgMHgyMEI3LCAweDUwOUUsIDB4MjBCMSwgMHg1MEEyLCAweDBCRTcsDQorICAgIDB4NTBBMywgMHgyMEIzLCAweDUwQUMsIDB4MERDNSwgMHg1MEFELCAweDBEQkYsIDB4NTBBRSwgMHgyMzY3LA0KKyAgICAweDUwQUYsIDB4MERDOCwgMHg1MEIwLCAweDIzNkQsIDB4NTBCMSwgMHgyMzcwLCAweDUwQjIsIDB4MERDMSwNCisgICAgMHg1MEIzLCAweDBEQzIsIDB4NTBCNCwgMHgyMzZBLCAweDUwQjUsIDB4MERDMCwgMHg1MEI2LCAweDIzNzMsDQorICAgIDB4NTBCNywgMHgwREM2LCAweDUwQjgsIDB4MjM3NCwgMHg1MEJBLCAweDIzNkYsIDB4NTBCQiwgMHgwREM3LA0KKyAgICAweDUwQkQsIDB4MjM2NCwgMHg1MEJFLCAweDBEQzQsIDB4NTBCRiwgMHgyMzY1LCAweDUwQzEsIDB4MjM2RSwNCisgICAgMHg1MEMyLCAweDIzNkMsIDB4NTBDNCwgMHgyMzY4LCAweDUwQzUsIDB4MERDMywgMHg1MEM2LCAweDIzNjYsDQorICAgIDB4NTBDNywgMHgwREM5LCAweDUwQzgsIDB4MjM2QiwgMHg1MEM5LCAweDIzNzIsIDB4NTBDQSwgMHgyMzY5LA0KKyAgICAweDUwQ0IsIDB4MjM3MSwgMHg1MENFLCAweDBGODgsIDB4NTBDRiwgMHgwRjg1LCAweDUwRDEsIDB4MEY4NiwNCisgICAgMHg1MEQzLCAweDI2MUMsIDB4NTBENCwgMHgyNjE0LCAweDUwRDUsIDB4MEY4NCwgMHg1MEQ2LCAweDBGODEsDQorICAgIDB4NTBENywgMHgyNjE1LCAweDUwREEsIDB4MEY4MywgMHg1MERCLCAweDI2MTgsIDB4NTBERCwgMHgyNjFBLA0KKyAgICAweDUwRTAsIDB4MjYyMSwgMHg1MEUzLCAweDI2MjAsIDB4NTBFNCwgMHgyNjFCLCAweDUwRTUsIDB4MEY4MCwNCisgICAgMHg1MEU2LCAweDI2MTMsIDB4NTBFNywgMHgwRjdFLCAweDUwRTgsIDB4MjYxNiwgMHg1MEU5LCAweDBGODksDQorICAgIDB4NTBFQSwgMHgyNjE5LCAweDUwRUMsIDB4MjYxRCwgMHg1MEVELCAweDBGODIsIDB4NTBFRSwgMHgwRjdGLA0KKyAgICAweDUwRUYsIDB4MjYxRiwgMHg1MEYwLCAweDI2MUUsIDB4NTBGMSwgMHgwRjg3LCAweDUwRjMsIDB4MjYxNywNCisgICAgMHg1MEY1LCAweDExMDUsIDB4NTBGNiwgMHgyODgzLCAweDUwRjgsIDB4Mjg4MCwgMHg1MEY5LCAweDExMDYsDQorICAgIDB4NTBGQiwgMHgxMTA0LCAweDUwRkQsIDB4Mjg4NywgMHg1MEZFLCAweDI4ODQsIDB4NTBGRiwgMHgyODdELA0KKyAgICAweDUxMDAsIDB4MTEwMywgMHg1MTAyLCAweDExMDcsIDB4NTEwMywgMHgyODdFLCAweDUxMDQsIDB4MTEwMiwNCisgICAgMHg1MTA1LCAweDExMEEsIDB4NTEwNiwgMHgyODgxLCAweDUxMDcsIDB4Mjg4MiwgMHg1MTA4LCAweDExMDgsDQorICAgIDB4NTEwOSwgMHgxMTA5LCAweDUxMEEsIDB4Mjg4OCwgMHg1MTBCLCAweDI4ODUsIDB4NTEwQywgMHgyODg2LA0KKyAgICAweDUxMTAsIDB4MTI4RCwgMHg1MTExLCAweDJCMDQsIDB4NTExMiwgMHgxMjhBLCAweDUxMTMsIDB4MkIwMSwNCisgICAgMHg1MTE0LCAweDEyOEMsIDB4NTExNSwgMHgxMjhFLCAweDUxMTcsIDB4MkIwMiwgMHg1MTE4LCAweDEyOEIsDQorICAgIDB4NTExQSwgMHgyQjAzLCAweDUxMUMsIDB4MkIwMCwgMHg1MTFGLCAweDEzQjUsIDB4NTEyMCwgMHgyRDNFLA0KKyAgICAweDUxMjEsIDB4MTNCNiwgMHg1MTIyLCAweDJEM0MsIDB4NTEyNCwgMHgyRDNELCAweDUxMjUsIDB4MkQzQiwNCisgICAgMHg1MTI2LCAweDJEM0EsIDB4NTEyOSwgMHgyRDNGLCAweDUxMkEsIDB4MTNCNCwgMHg1MTJELCAweDJGMEYsDQorICAgIDB4NTEyRSwgMHgyRjEwLCAweDUxMzAsIDB4Mjg3RiwgMHg1MTMxLCAweDJGMEUsIDB4NTEzMiwgMHgxM0I3LA0KKyAgICAweDUxMzMsIDB4MTU3NSwgMHg1MTM0LCAweDMwN0EsIDB4NTEzNSwgMHgzMDdCLCAweDUxMzcsIDB4MTY2OCwNCisgICAgMHg1MTM4LCAweDE2NjksIDB4NTEzOSwgMHgzMkM2LCAweDUxM0EsIDB4MzJDNSwgMHg1MTNCLCAweDE2QkMsDQorICAgIDB4NTEzQywgMHgxNkJCLCAweDUxM0QsIDB4MzQwRSwgMHg1MTNGLCAweDAyNUMsIDB4NTE0MCwgMHgwMjc0LA0KKyAgICAweDUxNDEsIDB4MDJBQSwgMHg1MTQzLCAweDAyQTksIDB4NTE0NCwgMHgwMzAzLCAweDUxNDUsIDB4MDMwMiwNCisgICAgMHg1MTQ2LCAweDAzOEEsIDB4NTE0NywgMHgwMzg5LCAweDUxNDgsIDB4MDM4QiwgMHg1MTQ5LCAweDAzODgsDQorICAgIDB4NTE0QiwgMHgwNDM0LCAweDUxNEMsIDB4MDQzMywgMHg1MTRELCAweDA0MzUsIDB4NTE1MiwgMHgwNTQ1LA0KKyAgICAweDUxNTQsIDB4MDU0NCwgMHg1MTU1LCAweDA1NDYsIDB4NTE1NywgMHgwNkJDLCAweDUxNTksIDB4MDExOSwNCisgICAgMHg1MTVBLCAweDFDMzIsIDB4NTE1QiwgMHgwMTFBLCAweDUxNUMsIDB4MEEwRiwgMHg1MTVELCAweDAxMUMsDQorICAgIDB4NTE1RSwgMHgwMTFCLCAweDUxNUYsIDB4MjBCRCwgMHg1MTYxLCAweDAxMUQsIDB4NTE2MiwgMHgwRjhBLA0KKyAgICAweDUxNjMsIDB4MDExRSwgMHg1MTY1LCAweDAyNUQsIDB4NTE2NywgMHgwMkFCLCAweDUxNjgsIDB4MDM4QywNCisgICAgMHg1MTY5LCAweDA1NDcsIDB4NTE2QiwgMHgwMjVFLCAweDUxNkMsIDB4MDJBRSwgMHg1MTZELCAweDAyQUMsDQorICAgIDB4NTE2RSwgMHgwMkFELCAweDUxNzEsIDB4MDM4RCwgMHg1MTc1LCAweDA0MzYsIDB4NTE3NiwgMHgwNTQ5LA0KKyAgICAweDUxNzcsIDB4MDU0OCwgMHg1MTc4LCAweDA1NEEsIDB4NTE3QywgMHgwODUyLCAweDUxODAsIDB4MTI4RiwNCisgICAgMHg1MTgyLCAweDAyMUQsIDB4NTE4NywgMHgxNzc5LCAweDUxODgsIDB4MzZCNiwgMHg1MTg5LCAweDAzMDQsDQorICAgIDB4NTE4QSwgMHgwMzA1LCAweDUxOEQsIDB4MDM4RSwgMHg1MThGLCAweDE4MzMsIDB4NTE5MSwgMHgwNkJFLA0KKyAgICAweDUxOTIsIDB4MDZCRCwgMHg1MTkzLCAweDFDMzQsIDB4NTE5NCwgMHgxQzMzLCAweDUxOTUsIDB4MEExMCwNCisgICAgMHg1MTk2LCAweDAyMUUsIDB4NTE5NywgMHgwMkFGLCAweDUxOTgsIDB4MTc4MCwgMHg1MTlFLCAweDE5MTAsDQorICAgIDB4NTFBMCwgMHgwNkJGLCAweDUxQTIsIDB4MDg1NSwgMHg1MUE0LCAweDA4NTMsIDB4NTFBNSwgMHgwODU0LA0KKyAgICAweDUxQUEsIDB4MTI5MCwgMHg1MUFCLCAweDAyMUYsIDB4NTFBQywgMHgwMzA2LCAweDUxQjAsIDB4MDM4RiwNCisgICAgMHg1MUIxLCAweDE3QzYsIDB4NTFCNiwgMHgwNDM3LCAweDUxQjcsIDB4MDQzOCwgMHg1MUI5LCAweDE4MzQsDQorICAgIDB4NTFCQywgMHgxOTExLCAweDUxQkQsIDB4MDU0QiwgMHg1MUJFLCAweDE5MTIsIDB4NTFDNCwgMHgxQzM2LA0KKyAgICAweDUxQzUsIDB4MUMzNywgMHg1MUM2LCAweDA4NTgsIDB4NTFDOCwgMHgxQzM4LCAweDUxQ0EsIDB4MUMzNSwNCisgICAgMHg1MUNCLCAweDA4NTksIDB4NTFDQywgMHgwODU3LCAweDUxQ0QsIDB4MDg1NiwgMHg1MUNFLCAweDFDMzksDQorICAgIDB4NTFEMCwgMHgxRTUyLCAweDUxRDQsIDB4MjBCRSwgMHg1MUQ3LCAweDIzNzUsIDB4NTFEOCwgMHgyNjIyLA0KKyAgICAweDUxREMsIDB4MTEwQiwgMHg1MURELCAweDEyOTEsIDB4NTFERSwgMHgyQjA1LCAweDUxRTAsIDB4MDI1RiwNCisgICAgMHg1MUUxLCAweDAyNkQsIDB4NTFGMCwgMHgwQTExLCAweDUxRjEsIDB4MEJGMSwgMHg1MUYzLCAweDBGOEIsDQorICAgIDB4NTFGNSwgMHgxNzZFLCAweDUxRjYsIDB4MDJCMCwgMHg1MUY4LCAweDAzMDksIDB4NTFGOSwgMHgwMzA3LA0KKyAgICAweDUxRkEsIDB4MDMwOCwgMHg1MUZELCAweDA1NEMsIDB4NTIwMCwgMHgwMjYwLCAweDUyMDEsIDB4MDI2MSwNCisgICAgMHg1MjAyLCAweDM2QjMsIDB4NTIwMywgMHgwMjc1LCAweDUyMDYsIDB4MDJCMSwgMHg1MjA3LCAweDAyQjIsDQorICAgIDB4NTIwOCwgMHgwMkIzLCAweDUyMDksIDB4MTc5NywgMHg1MjBBLCAweDAzMEEsIDB4NTIwQywgMHgxNzk2LA0KKyAgICAweDUyMEUsIDB4MDM5MywgMHg1MjEwLCAweDE3QzgsIDB4NTIxMSwgMHgwMzkxLCAweDUyMTIsIDB4MDM5MiwNCisgICAgMHg1MjEzLCAweDE3QzcsIDB4NTIxNiwgMHgwMzk0LCAweDUyMTcsIDB4MDM5MCwgMHg1MjFDLCAweDE4MzUsDQorICAgIDB4NTIxRCwgMHgwNjhCLCAweDUyMUUsIDB4MTgzNiwgMHg1MjIxLCAweDE4MzcsIDB4NTIyNCwgMHgwNDNBLA0KKyAgICAweDUyMjUsIDB4MDQzOSwgMHg1MjI4LCAweDA0M0QsIDB4NTIyOSwgMHgwNDNCLCAweDUyMkEsIDB4MDQzQywNCisgICAgMHg1MjJFLCAweDA1NTIsIDB4NTIzMCwgMHgwNTUxLCAweDUyMzEsIDB4MTkxNywgMHg1MjMyLCAweDE5MTQsDQorICAgIDB4NTIzMywgMHgxOTE1LCAweDUyMzUsIDB4MTkxMywgMHg1MjM2LCAweDA1NTMsIDB4NTIzNywgMHgwNTRGLA0KKyAgICAweDUyMzgsIDB4MDU0RSwgMHg1MjNBLCAweDA1NTAsIDB4NTIzQiwgMHgwNTRELCAweDUyNDEsIDB4MDU1NCwNCisgICAgMHg1MjQzLCAweDA2QzEsIDB4NTI0NCwgMHgxQTZELCAweDUyNDYsIDB4MTkxNiwgMHg1MjQ3LCAweDA2QzYsDQorICAgIDB4NTI0OSwgMHgxQTZFLCAweDUyNEEsIDB4MDZDMiwgMHg1MjRCLCAweDA2QzUsIDB4NTI0QywgMHgwNkM0LA0KKyAgICAweDUyNEQsIDB4MDZDMywgMHg1MjRFLCAweDA2QzAsIDB4NTI1MiwgMHgxQzNDLCAweDUyNTQsIDB4MDg1QywNCisgICAgMHg1MjU1LCAweDFDM0YsIDB4NTI1NiwgMHgwODVBLCAweDUyNUEsIDB4MUMzQiwgMHg1MjVCLCAweDA4NUQsDQorICAgIDB4NTI1QywgMHgwODVCLCAweDUyNUQsIDB4MDg1RSwgMHg1MjVFLCAweDFDM0QsIDB4NTI1RiwgMHgxQzNFLA0KKyAgICAweDUyNjEsIDB4MUMzQSwgMHg1MjYyLCAweDFDNDAsIDB4NTI2OSwgMHgwQkY1LCAweDUyNkEsIDB4MEExMiwNCisgICAgMHg1MjZCLCAweDFFNTMsIDB4NTI2QywgMHgxRTU1LCAweDUyNkQsIDB4MUU1NCwgMHg1MjZFLCAweDFFNTYsDQorICAgIDB4NTI2RiwgMHgwQTEzLCAweDUyNzIsIDB4MEJGMiwgMHg1Mjc0LCAweDBCRjMsIDB4NTI3NSwgMHgwQkY0LA0KKyAgICAweDUyNzcsIDB4MERDQiwgMHg1Mjc4LCAweDIzNzcsIDB4NTI3QSwgMHgyMzc2LCAweDUyN0IsIDB4MjM3OCwNCisgICAgMHg1MjdDLCAweDIzNzksIDB4NTI3RCwgMHgwRENDLCAweDUyN0YsIDB4MERDQSwgMHg1MjgwLCAweDI2MjMsDQorICAgIDB4NTI4MSwgMHgyNjI0LCAweDUyODIsIDB4MEY4RCwgMHg1MjgzLCAweDBGOEMsIDB4NTI4NCwgMHgyNzc2LA0KKyAgICAweDUyODcsIDB4MTEwQywgMHg1Mjg4LCAweDExMEQsIDB4NTI4OSwgMHgxMTBFLCAweDUyOEEsIDB4MTExMCwNCisgICAgMHg1MjhCLCAweDI4ODksIDB4NTI4QywgMHgyODhBLCAweDUyOEQsIDB4MTEwRiwgMHg1MjkxLCAweDEyOTIsDQorICAgIDB4NTI5MywgMHgxMjkzLCAweDUyOTYsIDB4MzA3QywgMHg1Mjk3LCAweDMyQzgsIDB4NTI5OCwgMHgzMkM3LA0KKyAgICAweDUyOTksIDB4MzQwRiwgMHg1MjlCLCAweDAyNjIsIDB4NTI5RiwgMHgwMzBDLCAweDUyQTAsIDB4MDMwQiwNCisgICAgMHg1MkEzLCAweDAzOTUsIDB4NTJBNiwgMHgxN0M5LCAweDUyQTksIDB4MDQzRiwgMHg1MkFBLCAweDA0NDAsDQorICAgIDB4NTJBQiwgMHgwNDNFLCAweDUyQUMsIDB4MDQ0MSwgMHg1MkFELCAweDE4MzgsIDB4NTJBRSwgMHgxODM5LA0KKyAgICAweDUyQkIsIDB4MDU1NiwgMHg1MkJDLCAweDE5MTgsIDB4NTJCRSwgMHgwNTU1LCAweDUyQzAsIDB4MUE2RiwNCisgICAgMHg1MkMxLCAweDA2Q0EsIDB4NTJDMiwgMHgxQTcwLCAweDUyQzMsIDB4MDZDOSwgMHg1MkM3LCAweDA2QzcsDQorICAgIDB4NTJDOSwgMHgwNkM4LCAweDUyQ0QsIDB4MUM0MSwgMHg1MkQyLCAweDBBMTQsIDB4NTJEMywgMHgxRTU4LA0KKyAgICAweDUyRDUsIDB4MEExNywgMHg1MkQ2LCAweDFFNTcsIDB4NTJENywgMHgwQUNGLCAweDUyRDgsIDB4MEExNiwNCisgICAgMHg1MkQ5LCAweDBBMTUsIDB4NTJEQiwgMHgwQkY4LCAweDUyREQsIDB4MEJGNywgMHg1MkRFLCAweDBCRjYsDQorICAgIDB4NTJERiwgMHgwRENELCAweDUyRTIsIDB4MEREMCwgMHg1MkUzLCAweDBERDEsIDB4NTJFNCwgMHgwRENGLA0KKyAgICAweDUyRTYsIDB4MERDRSwgMHg1MkU5LCAweDI2MjUsIDB4NTJFQiwgMHgyNjI2LCAweDUyRUYsIDB4Mjg4QywNCisgICAgMHg1MkYwLCAweDExMTEsIDB4NTJGMSwgMHgyODhCLCAweDUyRjMsIDB4MTI5NCwgMHg1MkY0LCAweDJENDAsDQorICAgIDB4NTJGNSwgMHgxM0I4LCAweDUyRjcsIDB4MzA3RCwgMHg1MkY4LCAweDE2MDksIDB4NTJGOSwgMHgwMjIwLA0KKyAgICAweDUyRkEsIDB4MDI3NiwgMHg1MkZCLCAweDAyQjQsIDB4NTJGQywgMHgxNzgxLCAweDUyRkUsIDB4MDJCNSwNCisgICAgMHg1MkZGLCAweDAyQjYsIDB4NTMwNSwgMHgwMzBELCAweDUzMDYsIDB4MDMwRSwgMHg1MzA4LCAweDAzOTYsDQorICAgIDB4NTMwOSwgMHgxODNBLCAweDUzMEEsIDB4MTkxOSwgMHg1MzBCLCAweDE5MUEsIDB4NTMwRCwgMHgwNkNCLA0KKyAgICAweDUzMEUsIDB4MUM0MiwgMHg1MzBGLCAweDBBMTksIDB4NTMxMCwgMHgwQTE4LCAweDUzMTEsIDB4MjBDMCwNCisgICAgMHg1MzEyLCAweDIwQkYsIDB4NTMxNSwgMHgwMjYzLCAweDUzMTYsIDB4MDJCNywgMHg1MzE3LCAweDAzMEYsDQorICAgIDB4NTMxOSwgMHgwQTFBLCAweDUzMUEsIDB4MTc2RiwgMHg1MzFDLCAweDE3OTgsIDB4NTMxRCwgMHgwMzEwLA0KKyAgICAweDUzMUYsIDB4MTdDQiwgMHg1MzIwLCAweDAzOTgsIDB4NTMyMSwgMHgwMzk3LCAweDUzMjIsIDB4MTdDQSwNCisgICAgMHg1MzIzLCAweDA0NDIsIDB4NTMyQSwgMHgwODVGLCAweDUzMkQsIDB4MUU1OSwgMHg1MzJGLCAweDBERDIsDQorICAgIDB4NTMzMCwgMHgyNjI3LCAweDUzMzEsIDB4MEY4RSwgMHg1MzM0LCAweDJCMDYsIDB4NTMzNywgMHgzMUM3LA0KKyAgICAweDUzMzgsIDB4MDIyMSwgMHg1MzM5LCAweDAyQjgsIDB4NTMzQywgMHgxOTFCLCAweDUzM0QsIDB4MUE3MSwNCisgICAgMHg1MzNFLCAweDBBMUQsIDB4NTMzRiwgMHgwQTFCLCAweDUzNDAsIDB4MEExQywgMHg1MzQxLCAweDAyNjQsDQorICAgIDB4NTM0MywgMHgwMjc3LCAweDUzNDQsIDB4MDE2QiwgMHg1MzQ1LCAweDAyQkIsIDB4NTM0NywgMHgwMkJBLA0KKyAgICAweDUzNDgsIDB4MDJCOSwgMHg1MzQ5LCAweDAzMTMsIDB4NTM0QSwgMHgwMzEyLCAweDUzNEMsIDB4MTc5OSwNCisgICAgMHg1MzRELCAweDE3Q0MsIDB4NTM1MSwgMHgwNTVBLCAweDUzNTIsIDB4MDU1NywgMHg1MzUzLCAweDA1NTksDQorICAgIDB4NTM1NCwgMHgwNTU4LCAweDUzNTcsIDB4MDZDQywgMHg1MzVBLCAweDBCRjksIDB4NTM1QywgMHgwMjY1LA0KKyAgICAweDUzNUUsIDB4MDJCQywgMHg1MzYwLCAweDAzMTUsIDB4NTM2MSwgMHgwMzE0LCAweDUzNjMsIDB4MTgzQiwNCisgICAgMHg1MzY2LCAweDA1NUIsIDB4NTM2OSwgMHgwMjIyLCAweDUzNkMsIDB4MTc4MiwgMHg1MzZFLCAweDAzMTcsDQorICAgIDB4NTM2RiwgMHgwMzE2LCAweDUzNzAsIDB4MDM5OSwgMHg1MzcxLCAweDAzOUEsIDB4NTM3MiwgMHgxODNDLA0KKyAgICAweDUzNzMsIDB4MDQ0MywgMHg1Mzc1LCAweDA0NDQsIDB4NTM3NywgMHgwNTVDLCAweDUzNzgsIDB4MDU1RCwNCisgICAgMHg1Mzc5LCAweDA1NUUsIDB4NTM3QiwgMHgwNkNELCAweDUzN0MsIDB4MUE3MiwgMHg1MzdGLCAweDA4NjAsDQorICAgIDB4NTM4MiwgMHgxNzcwLCAweDUzODQsIDB4MDJCRCwgMHg1MzhBLCAweDE3Q0QsIDB4NTM4RSwgMHgxODNELA0KKyAgICAweDUzOEYsIDB4MTgzRSwgMHg1MzkyLCAweDE5MUMsIDB4NTM5NCwgMHgxOTFELCAweDUzOTYsIDB4MUE3NCwNCisgICAgMHg1Mzk3LCAweDFBNzMsIDB4NTM5OCwgMHgxQTc2LCAweDUzOTksIDB4MUE3NSwgMHg1MzlBLCAweDA2Q0UsDQorICAgIDB4NTM5QywgMHgxRTVBLCAweDUzOUQsIDB4MDg2MiwgMHg1MzlFLCAweDFDNDMsIDB4NTM5RiwgMHgwODYxLA0KKyAgICAweDUzQTQsIDB4MjBDMSwgMHg1M0E1LCAweDBCRkEsIDB4NTNBNywgMHgyMEMyLCAweDUzQUMsIDB4MjYyOCwNCisgICAgMHg1M0FELCAweDBGOEYsIDB4NTNCMiwgMHgxMTEyLCAweDUzQjQsIDB4MzA3RSwgMHg1M0I2LCAweDAyMjMsDQorICAgIDB4NTNCOSwgMHgxNzgzLCAweDUzQkIsIDB4MDMxOCwgMHg1M0MzLCAweDBBMUUsIDB4NTNDOCwgMHgwMjY2LA0KKyAgICAweDUzQzksIDB4MDI3OCwgMHg1M0NBLCAweDAyQkYsIDB4NTNDQiwgMHgwMkJFLCAweDUzQ0QsIDB4MDJDMCwNCisgICAgMHg1M0Q0LCAweDA1NjAsIDB4NTNENiwgMHgwNTVGLCAweDUzRDcsIDB4MDU2MSwgMHg1M0RCLCAweDA2Q0YsDQorICAgIDB4NTNERiwgMHgwODYzLCAweDUzRTEsIDB4MkIwNywgMHg1M0UyLCAweDE0QzksIDB4NTNFMywgMHgwMjc5LA0KKyAgICAweDUzRTQsIDB4MDMxQSwgMHg1M0U1LCAweDAzMjksIDB4NTNFNiwgMHgwMzI0LCAweDUzRTgsIDB4MDMxRiwNCisgICAgMHg1M0U5LCAweDAzMUUsIDB4NTNFQSwgMHgwMzI1LCAweDUzRUIsIDB4MDMyMywgMHg1M0VDLCAweDAzMUMsDQorICAgIDB4NTNFRCwgMHgwMzJBLCAweDUzRUUsIDB4MDMxRCwgMHg1M0VGLCAweDAzMTksIDB4NTNGMCwgMHgwMzI4LA0KKyAgICAweDUzRjEsIDB4MDMyNywgMHg1M0YyLCAweDAzMjYsIDB4NTNGMywgMHgwMzFCLCAweDUzRjUsIDB4MDMyMiwNCisgICAgMHg1M0Y4LCAweDAzMjEsIDB4NTNGQiwgMHgwMzJCLCAweDUzRkMsIDB4MDMyMCwgMHg1NDAxLCAweDAzQTAsDQorICAgIDB4NTQwMywgMHgwM0E2LCAweDU0MDQsIDB4MDNBMiwgMHg1NDA2LCAweDAzQTgsIDB4NTQwNywgMHgxN0NFLA0KKyAgICAweDU0MDgsIDB4MDNBNSwgMHg1NDA5LCAweDAzOUIsIDB4NTQwQSwgMHgwMzlFLCAweDU0MEIsIDB4MDNBMSwNCisgICAgMHg1NDBDLCAweDAzOUQsIDB4NTQwRCwgMHgwM0E0LCAweDU0MEUsIDB4MDNBNywgMHg1NDBGLCAweDAzOUMsDQorICAgIDB4NTQxMCwgMHgwMzlGLCAweDU0MTEsIDB4MDNBMywgMHg1NDEyLCAweDAzQTksIDB4NTQxOCwgMHgxODQ3LA0KKyAgICAweDU0MTksIDB4MTg0NCwgMHg1NDFCLCAweDA0NTEsIDB4NTQxQywgMHgxODQ1LCAweDU0MUQsIDB4MDQ0NSwNCisgICAgMHg1NDFFLCAweDA0NDcsIDB4NTQxRiwgMHgwNDVGLCAweDU0MjAsIDB4MDQ1QSwgMHg1NDI0LCAweDE4NEMsDQorICAgIDB4NTQyNSwgMHgxODQ2LCAweDU0MjYsIDB4MDQ0OSwgMHg1NDI3LCAweDA0NEIsIDB4NTQyOCwgMHgxODRCLA0KKyAgICAweDU0MjksIDB4MDQ1MiwgMHg1NDJBLCAweDE4NDEsIDB4NTQyQiwgMHgwNDVFLCAweDU0MkMsIDB4MDQ2MCwNCisgICAgMHg1NDJELCAweDA0NDYsIDB4NTQyRSwgMHgwNDU3LCAweDU0MzAsIDB4MTgzRiwgMHg1NDMxLCAweDA0NUQsDQorICAgIDB4NTQzMywgMHgwNDRFLCAweDU0MzUsIDB4MDQ1OCwgMHg1NDM2LCAweDA0NTksIDB4NTQzNywgMHgxODQwLA0KKyAgICAweDU0MzgsIDB4MDQ1NiwgMHg1NDM5LCAweDA0NTQsIDB4NTQzQiwgMHgwNDU1LCAweDU0M0MsIDB4MDQ1QiwNCisgICAgMHg1NDNELCAweDE4NDgsIDB4NTQzRSwgMHgwNDQ4LCAweDU0NDAsIDB4MDQ1QywgMHg1NDQxLCAweDE4NEEsDQorICAgIDB4NTQ0MiwgMHgwNDUwLCAweDU0NDMsIDB4MDQ0RCwgMHg1NDQ1LCAweDE4NDMsIDB4NTQ0NiwgMHgwNDRDLA0KKyAgICAweDU0NDcsIDB4MTg0RCwgMHg1NDQ4LCAweDA0NEYsIDB4NTQ0QSwgMHgwNDUzLCAweDU0NEUsIDB4MDQ0QSwNCisgICAgMHg1NDRGLCAweDE4NDksIDB4NTQ1NCwgMHgxODQyLCAweDU0NjAsIDB4MTkyRSwgMHg1NDYxLCAweDE5MkQsDQorICAgIDB4NTQ2MiwgMHgwNTczLCAweDU0NjMsIDB4MTkzMCwgMHg1NDY0LCAweDE5MzIsIDB4NTQ2NSwgMHgxOTI3LA0KKyAgICAweDU0NjYsIDB4MTkyQSwgMHg1NDY3LCAweDE5MzEsIDB4NTQ2OCwgMHgwNTc0LCAweDU0NkIsIDB4MTkyNCwNCisgICAgMHg1NDZDLCAweDE5MjgsIDB4NTQ2RiwgMHgxOTJDLCAweDU0NzAsIDB4MUE4NSwgMHg1NDcxLCAweDA1NkYsDQorICAgIDB4NTQ3MiwgMHgxQTg5LCAweDU0NzMsIDB4MDU2MiwgMHg1NDc0LCAweDE5MjksIDB4NTQ3NSwgMHgwNTYzLA0KKyAgICAweDU0NzYsIDB4MDU3MCwgMHg1NDc3LCAweDA1NjksIDB4NTQ3OCwgMHgwNTY1LCAweDU0N0EsIDB4MTkyNSwNCisgICAgMHg1NDdCLCAweDA1NjgsIDB4NTQ3QywgMHgwNTZELCAweDU0N0QsIDB4MDU3NiwgMHg1NDdFLCAweDE5MjYsDQorICAgIDB4NTQ3RiwgMHgxOTFGLCAweDU0ODAsIDB4MDU2NywgMHg1NDgxLCAweDE5MjAsIDB4NTQ4MiwgMHgxOTIyLA0KKyAgICAweDU0ODQsIDB4MDU2QSwgMHg1NDg2LCAweDA1NkMsIDB4NTQ4NywgMHgxOTFFLCAweDU0ODgsIDB4MTkyMywNCisgICAgMHg1NDhCLCAweDA1NzUsIDB4NTQ4QywgMHgwNTcxLCAweDU0OEQsIDB4MTkyQiwgMHg1NDhFLCAweDA1NzcsDQorICAgIDB4NTQ5MCwgMHgwNTZFLCAweDU0OTEsIDB4MTkyMSwgMHg1NDkyLCAweDA1NkIsIDB4NTQ5NSwgMHgwNTY2LA0KKyAgICAweDU0OTYsIDB4MDU2NCwgMHg1NDk4LCAweDE5MkYsIDB4NTQ5QSwgMHgwNTcyLCAweDU0QTAsIDB4MUE4NCwNCisgICAgMHg1NEExLCAweDFBNzgsIDB4NTRBMiwgMHgxQTg3LCAweDU0QTUsIDB4MUE3QSwgMHg1NEE2LCAweDA2RDYsDQorICAgIDB4NTRBNywgMHgwNkU0LCAweDU0QTgsIDB4MDZEMiwgMHg1NEE5LCAweDA2RTMsIDB4NTRBQSwgMHgwNkRCLA0KKyAgICAweDU0QUIsIDB4MDZFMCwgMHg1NEFDLCAweDA2RDAsIDB4NTRBRCwgMHgxQTc5LCAweDU0QUUsIDB4MUE3RiwNCisgICAgMHg1NEFGLCAweDA2REYsIDB4NTRCMCwgMHgxQThCLCAweDU0QjEsIDB4MDZFMSwgMHg1NEIzLCAweDA2RDcsDQorICAgIDB4NTRCNiwgMHgxQTgxLCAweDU0QjcsIDB4MUE3RSwgMHg1NEI4LCAweDA2RDUsIDB4NTRCQSwgMHgxQTc3LA0KKyAgICAweDU0QkIsIDB4MDZFMiwgMHg1NEJDLCAweDFBODYsIDB4NTRCRCwgMHgwNkRBLCAweDU0QkUsIDB4MUE4OCwNCisgICAgMHg1NEJGLCAweDA2RTUsIDB4NTRDMCwgMHgwNkQxLCAweDU0QzEsIDB4MDZEQywgMHg1NEMyLCAweDA2RDksDQorICAgIDB4NTRDMywgMHgxQTdDLCAweDU0QzQsIDB4MDZERCwgMHg1NEM1LCAweDFBODIsIDB4NTRDNiwgMHgxQTgzLA0KKyAgICAweDU0QzcsIDB4MDZEOCwgMHg1NEM4LCAweDA2REUsIDB4NTRDOSwgMHgwNkQ0LCAweDU0Q0UsIDB4MDZEMywNCisgICAgMHg1NENGLCAweDFBN0IsIDB4NTRENiwgMHgxQTgwLCAweDU0REUsIDB4MUE4QSwgMHg1NEUwLCAweDFDNTcsDQorICAgIDB4NTRFMSwgMHgwODcwLCAweDU0RTIsIDB4MUM0NSwgMHg1NEU0LCAweDFDNEEsIDB4NTRFNSwgMHgwODY5LA0KKyAgICAweDU0RTYsIDB4MDg3NCwgMHg1NEU3LCAweDFDNDgsIDB4NTRFOCwgMHgwODY0LCAweDU0RTksIDB4MDg2RSwNCisgICAgMHg1NEVBLCAweDA4NzMsIDB4NTRFQiwgMHgxQzRGLCAweDU0RUQsIDB4MDg2RiwgMHg1NEVFLCAweDA4NzIsDQorICAgIDB4NTRGMSwgMHgxQzUyLCAweDU0RjIsIDB4MDg2QSwgMHg1NEYzLCAweDFDNDksIDB4NTRGNywgMHgxQzU1LA0KKyAgICAweDU0RjgsIDB4MUM1NiwgMHg1NEZBLCAweDA4NkMsIDB4NTRGQiwgMHgxQzU0LCAweDU0RkMsIDB4MDg2OCwNCisgICAgMHg1NEZELCAweDA4NzcsIDB4NTRGRiwgMHgxQzRDLCAweDU1MDEsIDB4MDg2NiwgMHg1NTAzLCAweDFDNTksDQorICAgIDB4NTUwNCwgMHgxQzRELCAweDU1MDUsIDB4MUM1MSwgMHg1NTA2LCAweDA4NkIsIDB4NTUwNywgMHgwODc2LA0KKyAgICAweDU1MDgsIDB4MUM0RSwgMHg1NTA5LCAweDA4NzEsIDB4NTUwQSwgMHgxQzUzLCAweDU1MEIsIDB4MUM1QSwNCisgICAgMHg1NTBDLCAweDFFNjksIDB4NTUwRSwgMHgxQzU4LCAweDU1MEYsIDB4MDg3OCwgMHg1NTEwLCAweDA4NjUsDQorICAgIDB4NTUxMSwgMHgxQzUwLCAweDU1MTIsIDB4MUM0NywgMHg1NTE0LCAweDA4NkQsIDB4NTUxNywgMHgxQzQ2LA0KKyAgICAweDU1MUEsIDB4MUM0QiwgMHg1NTI2LCAweDFDNDQsIDB4NTUyNywgMHgwODc1LCAweDU1MkEsIDB4MUU2MSwNCisgICAgMHg1NTJDLCAweDBBMzEsIDB4NTUyRCwgMHgxRTZGLCAweDU1MkUsIDB4MEEyRiwgMHg1NTJGLCAweDBBMkMsDQorICAgIDB4NTUzMCwgMHgxRTY2LCAweDU1MzEsIDB4MEEyOCwgMHg1NTMyLCAweDFFNkEsIDB4NTUzMywgMHgwQTMzLA0KKyAgICAweDU1MzQsIDB4MUU2MCwgMHg1NTM1LCAweDFFNjUsIDB4NTUzNiwgMHgxRTY0LCAweDU1MzcsIDB4MDg2NywNCisgICAgMHg1NTM4LCAweDBBMkUsIDB4NTUzOSwgMHgxRTZELCAweDU1M0IsIDB4MUU3MCwgMHg1NTNDLCAweDFFNUQsDQorICAgIDB4NTUzRSwgMHgwQzBDLCAweDU1NDAsIDB4MUU3MSwgMHg1NTQxLCAweDBBMzQsIDB4NTU0MywgMHgwQTI2LA0KKyAgICAweDU1NDQsIDB4MEEyMywgMHg1NTQ1LCAweDFFNjgsIDB4NTU0NiwgMHgwQTIwLCAweDU1NDgsIDB4MUU2RSwNCisgICAgMHg1NTRBLCAweDBBMjcsIDB4NTU0QiwgMHgxRTcyLCAweDU1NEQsIDB4MUU1RSwgMHg1NTRFLCAweDFFNkMsDQorICAgIDB4NTU0RiwgMHgwQTJBLCAweDU1NTAsIDB4MUU1RiwgMHg1NTUxLCAweDFFNjIsIDB4NTU1MiwgMHgxRTY3LA0KKyAgICAweDU1NTUsIDB4MEEyQiwgMHg1NTU2LCAweDBBMjksIDB4NTU1NywgMHgwQTM1LCAweDU1NUMsIDB4MEEzMCwNCisgICAgMHg1NTVFLCAweDBBMjQsIDB4NTU1RiwgMHgwQUJDLCAweDU1NjEsIDB4MEEyNSwgMHg1NTYyLCAweDFFNjMsDQorICAgIDB4NTU2MywgMHgwQTMyLCAweDU1NjQsIDB4MEEyRCwgMHg1NTY1LCAweDFFNkIsIDB4NTU2NiwgMHgwQTIyLA0KKyAgICAweDU1NkEsIDB4MEEyMSwgMHg1NTc1LCAweDFFNUIsIDB4NTU3NiwgMHgxRTVDLCAweDU1NzcsIDB4MjBDNywNCisgICAgMHg1NTdCLCAweDBCRkIsIDB4NTU3QywgMHgwQkZFLCAweDU1N0QsIDB4MjBEMiwgMHg1NTdFLCAweDBDMTIsDQorICAgIDB4NTU3RiwgMHgyMEQ1LCAweDU1ODAsIDB4MEJGQywgMHg1NTgxLCAweDIwQ0UsIDB4NTU4MiwgMHgwQzAyLA0KKyAgICAweDU1ODMsIDB4MEMwOCwgMHg1NTg0LCAweDBEMUIsIDB4NTU4NywgMHgwQzA2LCAweDU1ODgsIDB4MjBDQiwNCisgICAgMHg1NTg5LCAweDBDMTMsIDB4NTU4QSwgMHgwQkZGLCAweDU1OEIsIDB4MEMwNywgMHg1NThDLCAweDIwRDMsDQorICAgIDB4NTU4RCwgMHgyMzg3LCAweDU1OEUsIDB4MjBEOCwgMHg1NThGLCAweDIwQ0MsIDB4NTU5MSwgMHgyMEMzLA0KKyAgICAweDU1OTIsIDB4MjBEMCwgMHg1NTkzLCAweDIwQ0EsIDB4NTU5NCwgMHgwQzA1LCAweDU1OTUsIDB4MjBENiwNCisgICAgMHg1NTk4LCAweDBDMDEsIDB4NTU5OSwgMHgwQzE1LCAweDU1OUEsIDB4MEMwRSwgMHg1NTlDLCAweDBDMDMsDQorICAgIDB4NTU5RCwgMHgwQzAwLCAweDU1OUYsIDB4MEMwQiwgMHg1NUExLCAweDIwRDcsIDB4NTVBMiwgMHgyMEM5LA0KKyAgICAweDU1QTMsIDB4MjBDRiwgMHg1NUE0LCAweDIwRDEsIDB4NTVBNSwgMHgyMEM1LCAweDU1QTYsIDB4MjBENCwNCisgICAgMHg1NUE3LCAweDBCRkQsIDB4NTVBOCwgMHgyMEM0LCAweDU1QUEsIDB4MEMwNCwgMHg1NUFCLCAweDBDMTQsDQorICAgIDB4NTVBQywgMHgwQzEwLCAweDU1QUQsIDB4MjBDNiwgMHg1NUFFLCAweDBDMEEsIDB4NTVCMSwgMHgwQzExLA0KKyAgICAweDU1QjIsIDB4MEMwRCwgMHg1NUIzLCAweDBDMDksIDB4NTVCNSwgMHgyMENELCAweDU1QkIsIDB4MEMwRiwNCisgICAgMHg1NUJGLCAweDIzODUsIDB4NTVDMCwgMHgyMzgxLCAweDU1QzIsIDB4MjM5MCwgMHg1NUMzLCAweDIzN0EsDQorICAgIDB4NTVDNCwgMHgyMzgzLCAweDU1QzUsIDB4MERFMCwgMHg1NUM2LCAweDBERTEsIDB4NTVDNywgMHgwREQ5LA0KKyAgICAweDU1QzgsIDB4MjM4QywgMHg1NUM5LCAweDBERTMsIDB4NTVDQSwgMHgyMzdGLCAweDU1Q0IsIDB4MjM3RSwNCisgICAgMHg1NUNDLCAweDIzN0MsIDB4NTVDRCwgMHgyMzhFLCAweDU1Q0UsIDB4MERENywgMHg1NUNGLCAweDIzODgsDQorICAgIDB4NTVEMCwgMHgyMzdELCAweDU1RDEsIDB4MEREQSwgMHg1NUQyLCAweDIzODYsIDB4NTVEMywgMHgwREQ1LA0KKyAgICAweDU1RDQsIDB4MjM4MiwgMHg1NUQ1LCAweDIzODksIDB4NTVENiwgMHgyMzhCLCAweDU1RDksIDB4MjM4RiwNCisgICAgMHg1NURBLCAweDBEREUsIDB4NTVEQiwgMHgyMzdCLCAweDU1REMsIDB4MEREOCwgMHg1NURELCAweDIzODAsDQorICAgIDB4NTVERiwgMHgwREQzLCAweDU1RTEsIDB4MERERiwgMHg1NUUyLCAweDIzOEEsIDB4NTVFMywgMHgwRERCLA0KKyAgICAweDU1RTQsIDB4MEREQywgMHg1NUU1LCAweDBERTIsIDB4NTVFNiwgMHgwREQ2LCAweDU1RTcsIDB4MDExRiwNCisgICAgMHg1NUU4LCAweDBERDQsIDB4NTVFOSwgMHgyMzg0LCAweDU1RUYsIDB4MERERCwgMHg1NUYyLCAweDIzOEQsDQorICAgIDB4NTVGNiwgMHgwRjlGLCAweDU1RjcsIDB4MEY5QSwgMHg1NUY5LCAweDI2MzcsIDB4NTVGQSwgMHgyNjMzLA0KKyAgICAweDU1RkMsIDB4MjYyRCwgMHg1NUZELCAweDBGOTQsIDB4NTVGRSwgMHgwRjkwLCAweDU1RkYsIDB4MjYzNiwNCisgICAgMHg1NjAwLCAweDBGOTEsIDB4NTYwMSwgMHgyNjMwLCAweDU2MDIsIDB4MjYzMiwgMHg1NjA0LCAweDI2MzUsDQorICAgIDB4NTYwNiwgMHgwRjk2LCAweDU2MDgsIDB4MEY5RCwgMHg1NjA5LCAweDBGOTcsIDB4NTYwQywgMHgyNjJCLA0KKyAgICAweDU2MEQsIDB4MEY5OCwgMHg1NjBFLCAweDBGOTksIDB4NTYwRiwgMHgyNjJFLCAweDU2MTAsIDB4MEY5RSwNCisgICAgMHg1NjEyLCAweDI2MkMsIDB4NTYxMywgMHgyNjMxLCAweDU2MTQsIDB4MEY5NSwgMHg1NjE1LCAweDI2MkEsDQorICAgIDB4NTYxNiwgMHgwRjlCLCAweDU2MTcsIDB4MEY5MywgMHg1NjFCLCAweDBGOTIsIDB4NTYxQywgMHgyNjJGLA0KKyAgICAweDU2MUQsIDB4MjYzNCwgMHg1NjFGLCAweDBGOUMsIDB4NTYyNywgMHgyNjI5LCAweDU2MjksIDB4MTExOSwNCisgICAgMHg1NjJBLCAweDI4OUQsIDB4NTYyQywgMHgyODlBLCAweDU2MkUsIDB4MTExMywgMHg1NjJGLCAweDExMUYsDQorICAgIDB4NTYzMCwgMHgxMTIwLCAweDU2MzIsIDB4MTExNiwgMHg1NjMzLCAweDI4OTgsIDB4NTYzNCwgMHgxMTE4LA0KKyAgICAweDU2MzUsIDB4Mjg5MCwgMHg1NjM2LCAweDExMUUsIDB4NTYzOCwgMHgyODlDLCAweDU2MzksIDB4MTExNSwNCisgICAgMHg1NjNBLCAweDI4OUUsIDB4NTYzQiwgMHgxMTE0LCAweDU2M0QsIDB4Mjg5OSwgMHg1NjNFLCAweDI4OUIsDQorICAgIDB4NTYzRiwgMHgxMTE3LCAweDU2NDAsIDB4Mjg5NywgMHg1NjQxLCAweDI4OTEsIDB4NTY0MiwgMHgyODhFLA0KKyAgICAweDU2NDUsIDB4MjBDOCwgMHg1NjQ2LCAweDI4OTQsIDB4NTY0OCwgMHgyODhELCAweDU2NDksIDB4Mjg5MywNCisgICAgMHg1NjRBLCAweDI4OTIsIDB4NTY0QywgMHgyODhGLCAweDU2NEUsIDB4MTExQiwgMHg1NjUzLCAweDExMUEsDQorICAgIDB4NTY1NywgMHgxMTFDLCAweDU2NTgsIDB4Mjg5NSwgMHg1NjU5LCAweDEyOTUsIDB4NTY1QSwgMHgyODk2LA0KKyAgICAweDU2NUUsIDB4MkIxMCwgMHg1NjYwLCAweDJCMDksIDB4NTY2MiwgMHgxMkExLCAweDU2NjMsIDB4MkIwRCwNCisgICAgMHg1NjY0LCAweDEyOTksIDB4NTY2NSwgMHgxMjlELCAweDU2NjYsIDB4MkIwQywgMHg1NjY4LCAweDEyOUMsDQorICAgIDB4NTY2OSwgMHgxMjk4LCAweDU2NkEsIDB4MTI5QiwgMHg1NjZCLCAweDEyOTYsIDB4NTY2QywgMHgxMkEwLA0KKyAgICAweDU2NkQsIDB4MkIwRSwgMHg1NjZFLCAweDJCMEEsIDB4NTY2RiwgMHgxMjlGLCAweDU2NzAsIDB4MkIwOCwNCisgICAgMHg1NjcxLCAweDEyOUUsIDB4NTY3MiwgMHgyQjBGLCAweDU2NzMsIDB4MkIwQiwgMHg1Njc0LCAweDExMUQsDQorICAgIDB4NTY3NiwgMHgxMkEyLCAweDU2NzcsIDB4MkIxMSwgMHg1Njc4LCAweDEyOUEsIDB4NTY3OSwgMHgxMjk3LA0KKyAgICAweDU2N0UsIDB4MkQ0NywgMHg1NjdGLCAweDJENDksIDB4NTY4MCwgMHgxM0JBLCAweDU2ODEsIDB4MkQ0QSwNCisgICAgMHg1NjgyLCAweDJENDgsIDB4NTY4MywgMHgyRDQ2LCAweDU2ODQsIDB4MkQ0NSwgMHg1Njg1LCAweDEzQkMsDQorICAgIDB4NTY4NiwgMHgyRDQ0LCAweDU2ODcsIDB4MTNCRCwgMHg1NjhDLCAweDJENDIsIDB4NTY4RCwgMHgyRDQzLA0KKyAgICAweDU2OEUsIDB4MTNCOSwgMHg1NjhGLCAweDEzQkUsIDB4NTY5MCwgMHgxM0JCLCAweDU2OTMsIDB4MkQ0MSwNCisgICAgMHg1Njk1LCAweDE0Q0EsIDB4NTY5NywgMHgyRjEzLCAweDU2OTgsIDB4MkYxMSwgMHg1Njk5LCAweDJGMTYsDQorICAgIDB4NTY5QSwgMHgyRjE0LCAweDU2OUMsIDB4MkYxMiwgMHg1NjlELCAweDJGMTUsIDB4NTZBNSwgMHgxNTc2LA0KKyAgICAweDU2QTYsIDB4MzA4MSwgMHg1NkE3LCAweDMwODIsIDB4NTZBOCwgMHgxNTc3LCAweDU2QUEsIDB4MzA4MywNCisgICAgMHg1NkFCLCAweDMwN0YsIDB4NTZBQywgMHgzMDg0LCAweDU2QUQsIDB4MzA4MCwgMHg1NkFFLCAweDE0Q0IsDQorICAgIDB4NTZCMiwgMHgzMUM4LCAweDU2QjMsIDB4MzFDQSwgMHg1NkI0LCAweDE2MEMsIDB4NTZCNSwgMHgzMUM5LA0KKyAgICAweDU2QjYsIDB4MTYwQiwgMHg1NkI3LCAweDE2MEEsIDB4NTZCQywgMHgxNjBELCAweDU2QkQsIDB4MzJDQSwNCisgICAgMHg1NkJFLCAweDMyQ0IsIDB4NTZDMCwgMHgxNjZCLCAweDU2QzEsIDB4MTY2QSwgMHg1NkMyLCAweDE2NkMsDQorICAgIDB4NTZDMywgMHgzMkM5LCAweDU2QzUsIDB4MzM3OSwgMHg1NkM2LCAweDMzNzgsIDB4NTZDOCwgMHgxNkJELA0KKyAgICAweDU2QzksIDB4MTZCRiwgMHg1NkNBLCAweDE2QkUsIDB4NTZDQiwgMHgzMzdBLCAweDU2Q0MsIDB4MTZGNiwNCisgICAgMHg1NkNELCAweDM0ODEsIDB4NTZEMSwgMHgxNzFGLCAweDU2RDMsIDB4MzQ4MCwgMHg1NkQ0LCAweDM0QzksDQorICAgIDB4NTZENywgMHgxNzc1LCAweDU2REEsIDB4MDMyRCwgMHg1NkRCLCAweDAzMkMsIDB4NTZERCwgMHgwM0FDLA0KKyAgICAweDU2REUsIDB4MDNBQiwgMHg1NkRGLCAweDE3RDAsIDB4NTZFMCwgMHgwM0FBLCAweDU2RTEsIDB4MTdDRiwNCisgICAgMHg1NkU0LCAweDA0NjMsIDB4NTZFNSwgMHgxODUwLCAweDU2RTcsIDB4MTg0RiwgMHg1NkVBLCAweDA0NjEsDQorICAgIDB4NTZFQiwgMHgwNDY0LCAweDU2RUUsIDB4MTg0RSwgMHg1NkYwLCAweDA0NjIsIDB4NTZGNywgMHgxOTMzLA0KKyAgICAweDU2RjksIDB4MTkzNCwgMHg1NkZBLCAweDA1NzgsIDB4NTZGRiwgMHgwNkU2LCAweDU3MDEsIDB4MUM1QiwNCisgICAgMHg1NzAyLCAweDFDNUMsIDB4NTcwMywgMHgwODc5LCAweDU3MDQsIDB4MDg3QSwgMHg1NzA3LCAweDFFNzQsDQorICAgIDB4NTcwOCwgMHgwQTM2LCAweDU3MDksIDB4MEEzOCwgMHg1NzBBLCAweDFFNzMsIDB4NTcwQiwgMHgwQTM3LA0KKyAgICAweDU3MEMsIDB4MjBEOSwgMHg1NzBELCAweDBDMTYsIDB4NTcxMiwgMHgwREU0LCAweDU3MTMsIDB4MERFNSwNCisgICAgMHg1NzE0LCAweDIzOTEsIDB4NTcxNiwgMHgwRkExLCAweDU3MTgsIDB4MEZBMCwgMHg1NzFBLCAweDI4OUYsDQorICAgIDB4NTcxQiwgMHgyQjEzLCAweDU3MUMsIDB4MkIxMiwgMHg1NzFFLCAweDM1MDUsIDB4NTcxRiwgMHgwMjdBLA0KKyAgICAweDU3MjAsIDB4MTc4NCwgMHg1NzIyLCAweDE3OUEsIDB4NTcyMywgMHgxNzlCLCAweDU3MjgsIDB4MDNBRiwNCisgICAgMHg1NzI5LCAweDAzQjMsIDB4NTcyQSwgMHgxN0QyLCAweDU3MkMsIDB4MDNCMSwgMHg1NzJELCAweDAzQjAsDQorICAgIDB4NTcyRSwgMHgxN0QxLCAweDU3MkYsIDB4MDNCMiwgMHg1NzMwLCAweDAzQUUsIDB4NTczMywgMHgwM0FELA0KKyAgICAweDU3MzQsIDB4MTdEMywgMHg1NzNCLCAweDA0NkUsIDB4NTczRSwgMHgwNDZCLCAweDU3NDAsIDB4MDQ2NywNCisgICAgMHg1NzQxLCAweDE4NTEsIDB4NTc0NSwgMHgxODUyLCAweDU3NDcsIDB4MDQ2OSwgMHg1NzQ5LCAweDE4NTQsDQorICAgIDB4NTc0QSwgMHgwNDY1LCAweDU3NEIsIDB4MTg1NSwgMHg1NzRDLCAweDE4NTMsIDB4NTc0RCwgMHgwNDY4LA0KKyAgICAweDU3NEUsIDB4MDQ2QSwgMHg1NzRGLCAweDA0NkQsIDB4NTc1MCwgMHgwNDZDLCAweDU3NTEsIDB4MDQ2NiwNCisgICAgMHg1NzUyLCAweDE4NTYsIDB4NTc2MSwgMHgwNTdELCAweDU3NjIsIDB4MTk0MSwgMHg1NzY0LCAweDA1N0YsDQorICAgIDB4NTc2NiwgMHgwNTdFLCAweDU3NjgsIDB4MTk0MiwgMHg1NzY5LCAweDA1N0MsIDB4NTc2QSwgMHgwNTdCLA0KKyAgICAweDU3NkIsIDB4MTkzOCwgMHg1NzZELCAweDE5MzcsIDB4NTc2RiwgMHgxOTM1LCAweDU3NzAsIDB4MTkzQSwNCisgICAgMHg1NzcxLCAweDE5MzksIDB4NTc3MiwgMHgxOTM2LCAweDU3NzMsIDB4MTkzRiwgMHg1Nzc0LCAweDE5NDAsDQorICAgIDB4NTc3NSwgMHgxOTNELCAweDU3NzYsIDB4MTkzQiwgMHg1Nzc3LCAweDA1N0EsIDB4NTc3QiwgMHgxOTNFLA0KKyAgICAweDU3N0MsIDB4MDU4MCwgMHg1NzdELCAweDE5NDMsIDB4NTc4MCwgMHgxOTNDLCAweDU3ODIsIDB4MDZFNywNCisgICAgMHg1NzgzLCAweDA1NzksIDB4NTc4QiwgMHgwNkU4LCAweDU3OEMsIDB4MUE5MCwgMHg1NzhGLCAweDFBOTYsDQorICAgIDB4NTc5MywgMHgwNkVFLCAweDU3OTQsIDB4MUE5NCwgMHg1Nzk1LCAweDFBOUEsIDB4NTc5NywgMHgxQTkxLA0KKyAgICAweDU3OTgsIDB4MUE5NSwgMHg1Nzk5LCAweDFBOTcsIDB4NTc5QSwgMHgxQTk5LCAweDU3OUIsIDB4MUE5MywNCisgICAgMHg1NzlELCAweDFBOTIsIDB4NTc5RSwgMHgxQThELCAweDU3OUYsIDB4MUE4RSwgMHg1N0EwLCAweDA2RTksDQorICAgIDB4NTdBMiwgMHgwNkVCLCAweDU3QTMsIDB4MDZFQSwgMHg1N0E0LCAweDFBOEYsIDB4NTdBNSwgMHgxQTk4LA0KKyAgICAweDU3QUUsIDB4MDZFRCwgMHg1N0I1LCAweDFBOEMsIDB4NTdCNiwgMHgxQzY2LCAweDU3QjgsIDB4MUM2NSwNCisgICAgMHg1N0I5LCAweDFDNkEsIDB4NTdCQSwgMHgxQzYxLCAweDU3QkMsIDB4MUM2NCwgMHg1N0JELCAweDFDNjMsDQorICAgIDB4NTdCRiwgMHgxQzY3LCAweDU3QzEsIDB4MUM2QiwgMHg1N0MyLCAweDA4N0IsIDB4NTdDMywgMHgwODdFLA0KKyAgICAweDU3QzYsIDB4MUM2MiwgMHg1N0M3LCAweDFDNjgsIDB4NTdDQiwgMHgwODdELCAweDU3Q0MsIDB4MUM1RCwNCisgICAgMHg1N0NFLCAweDA2RUMsIDB4NTdDRiwgMHgxRTgyLCAweDU3RDAsIDB4MUM2OSwgMHg1N0QyLCAweDFDNjAsDQorICAgIDB4NTdENCwgMHgwODdDLCAweDU3RDUsIDB4MUM1RiwgMHg1N0RDLCAweDFFNzksIDB4NTdERiwgMHgwQTM5LA0KKyAgICAweDU3RTAsIDB4MEEzRCwgMHg1N0UxLCAweDFFODksIDB4NTdFMiwgMHgxRTc3LCAweDU3RTMsIDB4MUU4NSwNCisgICAgMHg1N0U0LCAweDBBM0UsIDB4NTdFNSwgMHgxRTg3LCAweDU3RTcsIDB4MUU4RCwgMHg1N0U5LCAweDFFOTEsDQorICAgIDB4NTdFQywgMHgxRTg4LCAweDU3RUQsIDB4MUU3QywgMHg1N0VFLCAweDFFODQsIDB4NTdGMCwgMHgxRTkyLA0KKyAgICAweDU3RjEsIDB4MUU5MCwgMHg1N0YyLCAweDFFODYsIDB4NTdGMywgMHgxRTgxLCAweDU3RjQsIDB4MUU3QSwNCisgICAgMHg1N0Y1LCAweDIwRTEsIDB4NTdGNiwgMHgxRTc4LCAweDU3RjcsIDB4MEE0MiwgMHg1N0Y4LCAweDFFN0YsDQorICAgIDB4NTdGOSwgMHgwQTQzLCAweDU3RkEsIDB4MEEzRiwgMHg1N0ZCLCAweDFFNzUsIDB4NTdGQywgMHgxRThCLA0KKyAgICAweDU3RkQsIDB4MUU3RCwgMHg1ODAwLCAweDFFN0IsIDB4NTgwMSwgMHgxRThFLCAweDU4MDIsIDB4MEE0MCwNCisgICAgMHg1ODA0LCAweDFFOTQsIDB4NTgwNSwgMHgwQTNBLCAweDU4MDYsIDB4MEEzQywgMHg1ODA3LCAweDFFODMsDQorICAgIDB4NTgwOCwgMHgxRTdFLCAweDU4MDksIDB4MDg3RiwgMHg1ODBBLCAweDBBM0IsIDB4NTgwQiwgMHgxRTgwLA0KKyAgICAweDU4MEMsIDB4MUU4RiwgMHg1ODBELCAweDFFOTMsIDB4NTgwRSwgMHgxRThBLCAweDU4MTAsIDB4MUU4QywNCisgICAgMHg1ODE0LCAweDFFNzYsIDB4NTgxOSwgMHgyMERDLCAweDU4MUIsIDB4MjBFNSwgMHg1ODFDLCAweDIwRTQsDQorICAgIDB4NTgxRCwgMHgwQzFFLCAweDU4MUUsIDB4MjBERCwgMHg1ODIwLCAweDBDMUYsIDB4NTgyMSwgMHgwQzFELA0KKyAgICAweDU4MjMsIDB4MjBERiwgMHg1ODI0LCAweDBDMUEsIDB4NTgyNSwgMHgyMEUzLCAweDU4MjcsIDB4MjBERSwNCisgICAgMHg1ODI4LCAweDIwRTAsIDB4NTgyOSwgMHgyMERBLCAweDU4MkEsIDB4MEMxOCwgMHg1ODJDLCAweDIwRUQsDQorICAgIDB4NTgyRCwgMHgyMEVDLCAweDU4MkUsIDB4MjBFOSwgMHg1ODJGLCAweDBDMTcsIDB4NTgzMCwgMHgwQzFCLA0KKyAgICAweDU4MzEsIDB4MEMxQywgMHg1ODMyLCAweDFDNUUsIDB4NTgzMywgMHgyMEU2LCAweDU4MzQsIDB4MEMxOSwNCisgICAgMHg1ODM1LCAweDBBNDEsIDB4NTgzNiwgMHgyMEU4LCAweDU4MzcsIDB4MjBEQiwgMHg1ODM4LCAweDIwRUIsDQorICAgIDB4NTgzOSwgMHgyMEVBLCAweDU4M0IsIDB4MjBFRSwgMHg1ODNELCAweDIzOUYsIDB4NTgzRiwgMHgyMEU3LA0KKyAgICAweDU4NDgsIDB4MjBFMiwgMHg1ODQ5LCAweDIzOTcsIDB4NTg0QSwgMHgwREVGLCAweDU4NEIsIDB4MERGMiwNCisgICAgMHg1ODRDLCAweDBERUQsIDB4NTg0RCwgMHgyMzk2LCAweDU4NEUsIDB4MjM5QSwgMHg1ODRGLCAweDIzOTUsDQorICAgIDB4NTg1MSwgMHgwREU3LCAweDU4NTIsIDB4MERGMSwgMHg1ODUzLCAweDIzOTIsIDB4NTg1NCwgMHgwREVCLA0KKyAgICAweDU4NTUsIDB4MjM5OSwgMHg1ODU3LCAweDBERTksIDB4NTg1OCwgMHgwREU4LCAweDU4NTksIDB4MjM5QywNCisgICAgMHg1ODVBLCAweDBERUEsIDB4NTg1QiwgMHgyMzlFLCAweDU4NUQsIDB4MjM5QiwgMHg1ODVFLCAweDBERTYsDQorICAgIDB4NTg2MiwgMHgwREYwLCAweDU4NjMsIDB4MjNBMCwgMHg1ODY0LCAweDIzOTQsIDB4NTg2NSwgMHgyMzlELA0KKyAgICAweDU4NjgsIDB4MjM5MywgMHg1ODZCLCAweDBERUMsIDB4NTg2RCwgMHgwREVFLCAweDU4NkYsIDB4MjM5OCwNCisgICAgMHg1ODcxLCAweDIzQTEsIDB4NTg3NCwgMHgyNjNGLCAweDU4NzUsIDB4MEZBMiwgMHg1ODc2LCAweDI2NDUsDQorICAgIDB4NTg3OSwgMHgwRkE3LCAweDU4N0EsIDB4MjY0MSwgMHg1ODdCLCAweDI2NDgsIDB4NTg3QywgMHgyNjM5LA0KKyAgICAweDU4N0QsIDB4MEZBOSwgMHg1ODdFLCAweDBGQTMsIDB4NTg3RiwgMHgyNjNFLCAweDU4ODAsIDB4MTEyMSwNCisgICAgMHg1ODgxLCAweDI2M0QsIDB4NTg4MiwgMHgyNjQ2LCAweDU4ODMsIDB4MEZBNCwgMHg1ODg1LCAweDBGQTgsDQorICAgIDB4NTg4NiwgMHgyNjNDLCAweDU4ODcsIDB4MjY0MiwgMHg1ODg4LCAweDI2NDcsIDB4NTg4OSwgMHgyNjM4LA0KKyAgICAweDU4OEEsIDB4MEZBNiwgMHg1ODhCLCAweDI2NDAsIDB4NTg4RSwgMHgyNjQ0LCAweDU4OEYsIDB4MjY0QSwNCisgICAgMHg1ODkwLCAweDI2M0EsIDB4NTg5MSwgMHgyNjQzLCAweDU4OTMsIDB4MEZBNSwgMHg1ODk0LCAweDI2NDksDQorICAgIDB4NTg5OCwgMHgyNjNCLCAweDU4OUMsIDB4MTEyNSwgMHg1ODlELCAweDI4QTEsIDB4NTg5RSwgMHgxMTIzLA0KKyAgICAweDU4OUYsIDB4MTEyMiwgMHg1OEEwLCAweDI4QTMsIDB4NThBMSwgMHgyOEE4LCAweDU4QTMsIDB4MjhBNCwNCisgICAgMHg1OEE1LCAweDI4QTcsIDB4NThBNiwgMHgxMTI4LCAweDU4QTgsIDB4MTI4OCwgMHg1OEE5LCAweDExMjcsDQorICAgIDB4NThBQiwgMHgyOEEwLCAweDU4QUMsIDB4MjhBNiwgMHg1OEFFLCAweDExMjYsIDB4NThBRiwgMHgyOEE1LA0KKyAgICAweDU4QjEsIDB4MjhBMiwgMHg1OEIzLCAweDExMjQsIDB4NThCQSwgMHgyQjE4LCAweDU4QkIsIDB4MzZFQiwNCisgICAgMHg1OEJDLCAweDJCMUEsIDB4NThCRCwgMHgyQjE1LCAweDU4QkUsIDB4MTJBNCwgMHg1OEJGLCAweDJCMTcsDQorICAgIDB4NThDMSwgMHgxMkEzLCAweDU4QzIsIDB4MkIxOSwgMHg1OEM1LCAweDEyQTYsIDB4NThDNiwgMHgyQjFCLA0KKyAgICAweDU4QzcsIDB4MTJBNSwgMHg1OEM4LCAweDJCMTQsIDB4NThDOSwgMHgyQjE2LCAweDU4Q0UsIDB4MTNDMiwNCisgICAgMHg1OENGLCAweDJENEQsIDB4NThEMSwgMHgxM0MxLCAweDU4RDIsIDB4MkQ0RSwgMHg1OEQzLCAweDEzQzAsDQorICAgIDB4NThENCwgMHgyRDRDLCAweDU4RDUsIDB4MTNCRiwgMHg1OEQ2LCAweDJENEIsIDB4NThEOCwgMHgxNENELA0KKyAgICAweDU4RDksIDB4MTRDQywgMHg1OERBLCAweDMwODUsIDB4NThEQiwgMHgzMDg3LCAweDU4REQsIDB4MzA4NiwNCisgICAgMHg1OERFLCAweDE1NzgsIDB4NThERiwgMHgxNTc5LCAweDU4RTIsIDB4MTU3QSwgMHg1OEUzLCAweDMxQ0IsDQorICAgIDB4NThFNCwgMHgxNjBFLCAweDU4RTcsIDB4MzQxMSwgMHg1OEU4LCAweDM0MTAsIDB4NThFOSwgMHgxNzIwLA0KKyAgICAweDU4RUIsIDB4MDI3QiwgMHg1OEVDLCAweDAyQzEsIDB4NThFRiwgMHgwNDZGLCAweDU4RjQsIDB4MUE5QiwNCisgICAgMHg1OEY5LCAweDBDMjAsIDB4NThGQSwgMHgwQzIxLCAweDU4RkMsIDB4MjNBMiwgMHg1OEZELCAweDBGQUEsDQorICAgIDB4NThGRSwgMHgyNjRCLCAweDU4RkYsIDB4MjhBOSwgMHg1OTAyLCAweDAyMjQsIDB4NTkwMywgMHgxNzg1LA0KKyAgICAweDU5MDYsIDB4MTg1NywgMHg1OTBBLCAweDAyMjQsIDB4NTkwQywgMHgxOTQ0LCAweDU5MEQsIDB4MUE5QywNCisgICAgMHg1OTBFLCAweDFDNkMsIDB4NTkwRiwgMHgwODgwLCAweDU5MTIsIDB4MzA4OCwgMHg1OTE0LCAweDE2NkQsDQorICAgIDB4NTkxNSwgMHgwMjdDLCAweDU5MTYsIDB4MDMyRSwgMHg1OTE3LCAweDE3OUMsIDB4NTkxOSwgMHgwM0I0LA0KKyAgICAweDU5MUEsIDB4MDNCNSwgMHg1OTFDLCAweDA1ODEsIDB4NTkyMCwgMHgwQTQ0LCAweDU5MjIsIDB4MEZBQywNCisgICAgMHg1OTI0LCAweDBGQUQsIDB4NTkyNSwgMHgwRkFCLCAweDU5MjcsIDB4MDI3RCwgMHg1OTI5LCAweDAyQzIsDQorICAgIDB4NTkyQSwgMHgwMkM0LCAweDU5MkIsIDB4MDJDMywgMHg1OTJDLCAweDE3ODYsIDB4NTkyRCwgMHgwMkM1LA0KKyAgICAweDU5MkUsIDB4MDMyRiwgMHg1OTJGLCAweDE3OUQsIDB4NTkzMSwgMHgwMzMwLCAweDU5MzcsIDB4MDNCNiwNCisgICAgMHg1OTM4LCAweDAzQjcsIDB4NTkzQywgMHgxN0Q0LCAweDU5M0UsIDB4MDQ3MCwgMHg1OTQwLCAweDE4NTgsDQorICAgIDB4NTk0NCwgMHgwNTg1LCAweDU5NDUsIDB4MTk0NSwgMHg1OTQ3LCAweDA1ODMsIDB4NTk0OCwgMHgwNTg0LA0KKyAgICAweDU5NDksIDB4MDU4MiwgMHg1OTRBLCAweDFDNkQsIDB4NTk0RSwgMHgwNkYyLCAweDU5NEYsIDB4MDZGMSwNCisgICAgMHg1OTUwLCAweDA2RjMsIDB4NTk1MSwgMHgwNkYwLCAweDU5NTMsIDB4MUE5RCwgMHg1OTU0LCAweDA1ODYsDQorICAgIDB4NTk1NSwgMHgwNkVGLCAweDU5NTcsIDB4MDg4MSwgMHg1OTU4LCAweDA4ODIsIDB4NTk1QSwgMHgwODgzLA0KKyAgICAweDU5NUMsIDB4MUU5NSwgMHg1OTYwLCAweDBDMjIsIDB4NTk2MSwgMHgyMEVGLCAweDU5NjIsIDB4MEE0NSwNCisgICAgMHg1OTY3LCAweDBERjMsIDB4NTk2OSwgMHgwRkFGLCAweDU5NkEsIDB4MEZBRSwgMHg1OTZCLCAweDI2NEMsDQorICAgIDB4NTk2RCwgMHgxMTI5LCAweDU5NkUsIDB4MTJBNywgMHg1OTcwLCAweDJGMTcsIDB4NTk3MSwgMHgzMzdCLA0KKyAgICAweDU5NzIsIDB4MzQxMiwgMHg1OTczLCAweDAyN0UsIDB4NTk3NCwgMHgwMzMxLCAweDU5NzYsIDB4MDMzMiwNCisgICAgMHg1OTc3LCAweDE3REEsIDB4NTk3OCwgMHgwM0I5LCAweDU5NzksIDB4MDNCQywgMHg1OTdCLCAweDE3RDgsDQorICAgIDB4NTk3QywgMHgxN0Q2LCAweDU5N0QsIDB4MDNCQiwgMHg1OTdFLCAweDE3RDksIDB4NTk3RiwgMHgxN0RCLA0KKyAgICAweDU5ODAsIDB4MTdENSwgMHg1OTgxLCAweDAzQkUsIDB4NTk4MiwgMHgwM0JELCAweDU5ODMsIDB4MDNCQSwNCisgICAgMHg1OTg0LCAweDAzQjgsIDB4NTk4NSwgMHgxN0Q3LCAweDU5OEEsIDB4MDQ3QiwgMHg1OThELCAweDA0NzgsDQorICAgIDB4NTk4RSwgMHgxODVELCAweDU5OEYsIDB4MTg2MCwgMHg1OTkwLCAweDE4NUYsIDB4NTk5MiwgMHgwNDcyLA0KKyAgICAweDU5OTMsIDB4MDQ3QSwgMHg1OTk2LCAweDA0NzcsIDB4NTk5NywgMHgxODVDLCAweDU5OTgsIDB4MTg1QSwNCisgICAgMHg1OTk5LCAweDA0NzYsIDB4NTk5RCwgMHgwNDcxLCAweDU5OUUsIDB4MDQ3NCwgMHg1OUEwLCAweDE4NUIsDQorICAgIDB4NTlBMSwgMHgxODYyLCAweDU5QTIsIDB4MTg1RSwgMHg1OUEzLCAweDA0NzUsIDB4NTlBNCwgMHgwNDc5LA0KKyAgICAweDU5QTUsIDB4MDQ3QywgMHg1OUE2LCAweDE4NTksIDB4NTlBNywgMHgxODYxLCAweDU5QTgsIDB4MDQ3MywNCisgICAgMHg1OUFFLCAweDA1OEIsIDB4NTlBRiwgMHgwNTkzLCAweDU5QjEsIDB4MTk1MSwgMHg1OUIyLCAweDE5NEEsDQorICAgIDB4NTlCMywgMHgwNTk0LCAweDU5QjQsIDB4MTk1NSwgMHg1OUI1LCAweDE5NDYsIDB4NTlCNiwgMHgxOTRELA0KKyAgICAweDU5QjksIDB4MDU4QSwgMHg1OUJBLCAweDE5NDcsIDB4NTlCQiwgMHgwNTg4LCAweDU5QkMsIDB4MTk0RSwNCisgICAgMHg1OUJELCAweDE5NTIsIDB4NTlCRSwgMHgwNTg3LCAweDU5QzAsIDB4MTk1MywgMHg1OUMxLCAweDE5NEMsDQorICAgIDB4NTlDMywgMHgxOTRGLCAweDU5QzUsIDB4MDU5NiwgMHg1OUM2LCAweDA1OEQsIDB4NTlDNywgMHgxOTU2LA0KKyAgICAweDU5QzgsIDB4MTk1NCwgMHg1OUNBLCAweDA1OTIsIDB4NTlDQiwgMHgwNTkwLCAweDU5Q0MsIDB4MTk0QiwNCisgICAgMHg1OUNELCAweDA1OEYsIDB4NTlDRSwgMHgxOTQ5LCAweDU5Q0YsIDB4MTk0OCwgMHg1OUQwLCAweDA1OEUsDQorICAgIDB4NTlEMSwgMHgwNThDLCAweDU5RDIsIDB4MDU5NSwgMHg1OUQzLCAweDA1OTEsIDB4NTlENCwgMHgwNTg5LA0KKyAgICAweDU5RDYsIDB4MTk1MCwgMHg1OUQ4LCAweDA2RjUsIDB4NTlEQSwgMHgwNkZDLCAweDU5REIsIDB4MUFBQiwNCisgICAgMHg1OURDLCAweDA2RjQsIDB4NTlERCwgMHgxQUEzLCAweDU5REUsIDB4MUE5RiwgMHg1OUUwLCAweDFBQUYsDQorICAgIDB4NTlFMSwgMHgxQTlFLCAweDU5RTMsIDB4MDZGNywgMHg1OUU0LCAweDFBQTgsIDB4NTlFNSwgMHgwNkZBLA0KKyAgICAweDU5RTYsIDB4MDZGRCwgMHg1OUU4LCAweDA2RjgsIDB4NTlFOSwgMHgxQUFDLCAweDU5RUEsIDB4MDZGQiwNCisgICAgMHg1OUVDLCAweDA4OEEsIDB4NTlFRCwgMHgxQUIyLCAweDU5RUUsIDB4MUFBMCwgMHg1OUYxLCAweDFBQTIsDQorICAgIDB4NTlGMiwgMHgxQUE5LCAweDU5RjMsIDB4MUFBRCwgMHg1OUY0LCAweDFBQjEsIDB4NTlGNSwgMHgxQUFFLA0KKyAgICAweDU5RjYsIDB4MUFBNywgMHg1OUY3LCAweDFBQUEsIDB4NTlGQSwgMHgxQUE0LCAweDU5RkIsIDB4MDZGRiwNCisgICAgMHg1OUZDLCAweDFBQTYsIDB4NTlGRCwgMHgxQUE1LCAweDU5RkUsIDB4MUFCMCwgMHg1OUZGLCAweDA2RjYsDQorICAgIDB4NUEwMCwgMHgxQUExLCAweDVBMDEsIDB4MDZGRSwgMHg1QTAzLCAweDA2RjksIDB4NUEwOSwgMHgwODkwLA0KKyAgICAweDVBMEEsIDB4MUM3NSwgMHg1QTBDLCAweDA4OEYsIDB4NUEwRiwgMHgxQzczLCAweDVBMTEsIDB4MDg4NCwNCisgICAgMHg1QTEzLCAweDA4ODksIDB4NUExNSwgMHgxQzcyLCAweDVBMTYsIDB4MUM2RiwgMHg1QTE3LCAweDFDNzQsDQorICAgIDB4NUExOCwgMHgwODg1LCAweDVBMTksIDB4MUM2RSwgMHg1QTFCLCAweDA4ODgsIDB4NUExQywgMHgwODg2LA0KKyAgICAweDVBMUUsIDB4MUM3NiwgMHg1QTFGLCAweDA4ODcsIDB4NUEyMCwgMHgwODhCLCAweDVBMjMsIDB4MDg4QywNCisgICAgMHg1QTI1LCAweDA4OEUsIDB4NUEyOSwgMHgwODhELCAweDVBMkQsIDB4MUM3MCwgMHg1QTJFLCAweDFDNzEsDQorICAgIDB4NUEzMywgMHgxQzc3LCAweDVBMzUsIDB4MUU5QywgMHg1QTM2LCAweDBBNDYsIDB4NUEzNywgMHgyMEZELA0KKyAgICAweDVBMzgsIDB4MUU5QiwgMHg1QTM5LCAweDFFQUUsIDB4NUEzQywgMHgwQTRDLCAweDVBM0UsIDB4MUVBQywNCisgICAgMHg1QTQwLCAweDBBNEIsIDB4NUE0MSwgMHgwQTQ3LCAweDVBNDIsIDB4MUVCNSwgMHg1QTQzLCAweDFFQTUsDQorICAgIDB4NUE0NCwgMHgxRUE4LCAweDVBNDYsIDB4MEE0RiwgMHg1QTQ3LCAweDFFQjIsIDB4NUE0OCwgMHgxRUFBLA0KKyAgICAweDVBNDksIDB4MEE0OCwgMHg1QTRBLCAweDBBNTAsIDB4NUE0QywgMHgxRUFGLCAweDVBNEQsIDB4MUVBRCwNCisgICAgMHg1QTUwLCAweDFFOUUsIDB4NUE1MSwgMHgxRUIzLCAweDVBNTIsIDB4MUVBNywgMHg1QTUzLCAweDFFQTIsDQorICAgIDB4NUE1NSwgMHgxRTk4LCAweDVBNTYsIDB4MUVCNCwgMHg1QTU3LCAweDFFQTQsIDB4NUE1OCwgMHgxRTk3LA0KKyAgICAweDVBNUEsIDB4MEE0RSwgMHg1QTVCLCAweDFFQTksIDB4NUE1QywgMHgxRUI2LCAweDVBNUQsIDB4MUVBNiwNCisgICAgMHg1QTVFLCAweDFFOUEsIDB4NUE1RiwgMHgxRTlGLCAweDVBNjAsIDB4MUU5NiwgMHg1QTYyLCAweDBBNEQsDQorICAgIDB4NUE2NCwgMHgxRUEzLCAweDVBNjUsIDB4MUVBMCwgMHg1QTY2LCAweDBBNDksIDB4NUE2NywgMHgxRTk5LA0KKyAgICAweDVBNjksIDB4MUVCMSwgMHg1QTZBLCAweDBBNEEsIDB4NUE2QywgMHgxRUExLCAweDVBNkQsIDB4MUU5RCwNCisgICAgMHg1QTcwLCAweDFFQjAsIDB4NUE3NywgMHgwQzIzLCAweDVBNzgsIDB4MjBGNiwgMHg1QTdBLCAweDIwRjMsDQorICAgIDB4NUE3QiwgMHgyMTA0LCAweDVBN0MsIDB4MjBGOCwgMHg1QTdELCAweDIxMDUsIDB4NUE3RiwgMHgwQzI1LA0KKyAgICAweDVBODMsIDB4MjEwMSwgMHg1QTg0LCAweDIwRkUsIDB4NUE4QSwgMHgyMEZGLCAweDVBOEIsIDB4MjEwMiwNCisgICAgMHg1QThDLCAweDIxMDYsIDB4NUE4RSwgMHgxRUFCLCAweDVBOEYsIDB4MjEwOCwgMHg1QTkwLCAweDIzQjYsDQorICAgIDB4NUE5MiwgMHgwQzI2LCAweDVBOTMsIDB4MjEwOSwgMHg1QTk0LCAweDIwRjEsIDB4NUE5NSwgMHgyMEZCLA0KKyAgICAweDVBOTcsIDB4MjEwMCwgMHg1QTlBLCAweDBDMjQsIDB4NUE5QiwgMHgwQzI3LCAweDVBOUMsIDB4MjEwNywNCisgICAgMHg1QTlELCAweDIxMEEsIDB4NUE5RSwgMHgyMEY1LCAweDVBOUYsIDB4MjBGMiwgMHg1QUEyLCAweDIwRjQsDQorICAgIDB4NUFBNSwgMHgyMEY5LCAweDVBQTYsIDB4MjBGNywgMHg1QUE3LCAweDBDMjgsIDB4NUFBOSwgMHgyMTAzLA0KKyAgICAweDVBQUMsIDB4MjBGQSwgMHg1QUFFLCAweDIwRkMsIDB4NUFBRiwgMHgyMEYwLCAweDVBQjAsIDB4MjNBQSwNCisgICAgMHg1QUIxLCAweDIzQTgsIDB4NUFCMiwgMHgwREZDLCAweDVBQjMsIDB4MERGQSwgMHg1QUI0LCAweDIzQjIsDQorICAgIDB4NUFCNSwgMHgyM0E5LCAweDVBQjYsIDB4MjNCMywgMHg1QUI3LCAweDIzQUYsIDB4NUFCOCwgMHgyM0E3LA0KKyAgICAweDVBQjksIDB4MjNCNSwgMHg1QUJBLCAweDIzQTYsIDB4NUFCQiwgMHgyM0FELCAweDVBQkMsIDB4MERGOSwNCisgICAgMHg1QUJELCAweDBERjgsIDB4NUFCRSwgMHgwREY3LCAweDVBQkYsIDB4MjNBQiwgMHg1QUMwLCAweDIzQjAsDQorICAgIDB4NUFDMSwgMHgwREY0LCAweDVBQzIsIDB4MERGQiwgMHg1QUM0LCAweDIzQTQsIDB4NUFDNiwgMHgyM0FFLA0KKyAgICAweDVBQzcsIDB4MjNBMywgMHg1QUM4LCAweDIzQUMsIDB4NUFDOSwgMHgwREY1LCAweDVBQ0EsIDB4MjNCMSwNCisgICAgMHg1QUNCLCAweDIzQTUsIDB4NUFDQywgMHgwREY2LCAweDVBQ0QsIDB4MjNCNCwgMHg1QUQ1LCAweDI2NTAsDQorICAgIDB4NUFENiwgMHgwRkI0LCAweDVBRDcsIDB4MEZCMywgMHg1QUQ4LCAweDBGQjUsIDB4NUFEOSwgMHgyNjVDLA0KKyAgICAweDVBREEsIDB4MjY1MiwgMHg1QURCLCAweDI2NTgsIDB4NUFEQywgMHgyNjRELCAweDVBREQsIDB4MjY1QiwNCisgICAgMHg1QURFLCAweDI2NUEsIDB4NUFERiwgMHgyNjVFLCAweDVBRTAsIDB4MjY1NywgMHg1QUUxLCAweDBGQjAsDQorICAgIDB4NUFFMiwgMHgyNjU2LCAweDVBRTMsIDB4MEZCNiwgMHg1QUU1LCAweDI2NEYsIDB4NUFFNiwgMHgwRkIxLA0KKyAgICAweDVBRTgsIDB4MjY1RCwgMHg1QUU5LCAweDBGQjIsIDB4NUFFQSwgMHgyNjUxLCAweDVBRUIsIDB4MjY1NCwNCisgICAgMHg1QUVDLCAweDI2NTksIDB4NUFFRCwgMHgyNjUzLCAweDVBRUUsIDB4MjY0RSwgMHg1QUYzLCAweDI2NTUsDQorICAgIDB4NUFGNCwgMHgyOEFCLCAweDVBRjUsIDB4MTEyRCwgMHg1QUY2LCAweDI4QUUsIDB4NUFGNywgMHgyOEFELA0KKyAgICAweDVBRjgsIDB4MjhCMCwgMHg1QUY5LCAweDI4QjIsIDB4NUFGQSwgMHgzNkVFLCAweDVBRkIsIDB4MTEyQiwNCisgICAgMHg1QUZELCAweDI4QUMsIDB4NUFGRiwgMHgyOEFBLCAweDVCMDEsIDB4MjhCMywgMHg1QjAyLCAweDI4QjEsDQorICAgIDB4NUIwMywgMHgyOEFGLCAweDVCMDUsIDB4MjhCNSwgMHg1QjA3LCAweDI4QjQsIDB4NUIwOCwgMHgxMTJGLA0KKyAgICAweDVCMDksIDB4MTEyQSwgMHg1QjBCLCAweDExMkMsIDB4NUIwQywgMHgxMTJFLCAweDVCMEYsIDB4MjhCNiwNCisgICAgMHg1QjEwLCAweDJCMjIsIDB4NUIxMywgMHgyQjIxLCAweDVCMTQsIDB4MkIyMCwgMHg1QjE2LCAweDJCMjMsDQorICAgIDB4NUIxNywgMHgyQjFDLCAweDVCMTksIDB4MkIxRCwgMHg1QjFBLCAweDJCMjUsIDB4NUIxQiwgMHgyQjFFLA0KKyAgICAweDVCMUQsIDB4MTJBOCwgMHg1QjFFLCAweDJCMjcsIDB4NUIyMCwgMHgyQjI2LCAweDVCMjEsIDB4MkIxRiwNCisgICAgMHg1QjIzLCAweDJENTIsIDB4NUIyNCwgMHgxM0M1LCAweDVCMjUsIDB4MkQ1MCwgMHg1QjI2LCAweDJENTUsDQorICAgIDB4NUIyNywgMHgyRDU0LCAweDVCMjgsIDB4MkIyNCwgMHg1QjJBLCAweDEzQzQsIDB4NUIyQywgMHgyRDUzLA0KKyAgICAweDVCMkQsIDB4MkQ0RiwgMHg1QjJFLCAweDJENTcsIDB4NUIyRiwgMHgyRDU2LCAweDVCMzAsIDB4MTNDMywNCisgICAgMHg1QjMyLCAweDJENTEsIDB4NUIzNCwgMHgxMkE5LCAweDVCMzgsIDB4MTRDRSwgMHg1QjNDLCAweDJGMTgsDQorICAgIDB4NUIzRCwgMHgzMDg5LCAweDVCM0UsIDB4MzA4QSwgMHg1QjNGLCAweDMwOEIsIDB4NUI0MCwgMHgxNjBGLA0KKyAgICAweDVCNDMsIDB4MTYxMCwgMHg1QjQ1LCAweDMxQ0MsIDB4NUI0NywgMHgzMkNELCAweDVCNDgsIDB4MzJDQywNCisgICAgMHg1QjRCLCAweDMzN0MsIDB4NUI0QywgMHgzMzdELCAweDVCNEQsIDB4MzQxMywgMHg1QjRFLCAweDM0ODIsDQorICAgIDB4NUI1MCwgMHgwMjdGLCAweDVCNTEsIDB4MDI4MCwgMHg1QjUzLCAweDAyODEsIDB4NUI1NCwgMHgwMkM2LA0KKyAgICAweDVCNTUsIDB4MDMzMywgMHg1QjU2LCAweDE3REMsIDB4NUI1NywgMHgwM0JGLCAweDVCNTgsIDB4MDNDMCwNCisgICAgMHg1QjVBLCAweDA0N0YsIDB4NUI1QiwgMHgwNDgwLCAweDVCNUMsIDB4MDQ3RSwgMHg1QjVELCAweDA0N0QsDQorICAgIDB4NUI1RiwgMHgwNTk3LCAweDVCNjIsIDB4MTk1NywgMHg1QjYzLCAweDA1OTksIDB4NUI2NCwgMHgwNTk4LA0KKyAgICAweDVCNjUsIDB4MTk1OCwgMHg1QjY5LCAweDA3MDAsIDB4NUI2QiwgMHgwODkxLCAweDVCNkMsIDB4MUM3OCwNCisgICAgMHg1QjZFLCAweDFFQjgsIDB4NUI3MCwgMHgwQTUxLCAweDVCNzEsIDB4MEMyQSwgMHg1QjcyLCAweDFFQjcsDQorICAgIDB4NUI3MywgMHgwQzI5LCAweDVCNzUsIDB4MEZCNywgMHg1Qjc3LCAweDI2NUYsIDB4NUI3OCwgMHgxMkFBLA0KKyAgICAweDVCN0EsIDB4MTNDNiwgMHg1QjdCLCAweDJENTgsIDB4NUI3RCwgMHgxNjExLCAweDVCN0YsIDB4MTZDMCwNCisgICAgMHg1QjgwLCAweDAyMjUsIDB4NUI4MSwgMHgxNzlFLCAweDVCODMsIDB4MDMzNCwgMHg1Qjg0LCAweDE3OUYsDQorICAgIDB4NUI4NSwgMHgwM0MzLCAweDVCODcsIDB4MDNDMSwgMHg1Qjg4LCAweDAzQzIsIDB4NUI4OSwgMHgwM0M0LA0KKyAgICAweDVCOEIsIDB4MDQ4MiwgMHg1QjhDLCAweDA0ODEsIDB4NUI4RSwgMHgxODYzLCAweDVCOEYsIDB4MDQ4MywNCisgICAgMHg1QjkyLCAweDE4NjQsIDB4NUI5MywgMHgxOTU5LCAweDVCOTUsIDB4MTk1QSwgMHg1Qjk3LCAweDA1OUEsDQorICAgIDB4NUI5OCwgMHgwNTlDLCAweDVCOTksIDB4MDU5RSwgMHg1QjlBLCAweDA1OUIsIDB4NUI5QiwgMHgwNTlGLA0KKyAgICAweDVCOUMsIDB4MDU5RCwgMHg1QkEyLCAweDA3MDQsIDB4NUJBMywgMHgwNzAxLCAweDVCQTQsIDB4MDcwMywNCisgICAgMHg1QkE1LCAweDA3MDUsIDB4NUJBNiwgMHgwNzAyLCAweDVCQTcsIDB4MUM3OSwgMHg1QkE4LCAweDFBQjMsDQorICAgIDB4NUJBQywgMHgxQzdCLCAweDVCQUQsIDB4MUM3QSwgMHg1QkFFLCAweDA4OTcsIDB4NUJCMCwgMHgwODkzLA0KKyAgICAweDVCQjMsIDB4MDg5NCwgMHg1QkI0LCAweDA4OTYsIDB4NUJCNSwgMHgwODk4LCAweDVCQjYsIDB4MDg5NSwNCisgICAgMHg1QkI4LCAweDA4OUEsIDB4NUJCOSwgMHgwODk5LCAweDVCQkYsIDB4MEE1NiwgMHg1QkMwLCAweDFFQkEsDQorICAgIDB4NUJDMSwgMHgxRUI5LCAweDVCQzIsIDB4MEE1NSwgMHg1QkM0LCAweDBBNTQsIDB4NUJDNSwgMHgwQTUzLA0KKyAgICAweDVCQzYsIDB4MEE1NywgMHg1QkM3LCAweDBBNTIsIDB4NUJDQSwgMHgyMTEwLCAweDVCQ0IsIDB4MjEwRCwNCisgICAgMHg1QkNDLCAweDBDMkMsIDB4NUJDRCwgMHgyMTBDLCAweDVCQ0UsIDB4MjExMSwgMHg1QkQwLCAweDBDMkUsDQorICAgIDB4NUJEMSwgMHgyMTBGLCAweDVCRDIsIDB4MEMyQiwgMHg1QkQzLCAweDBDMkQsIDB4NUJENCwgMHgyMTBFLA0KKyAgICAweDVCRDYsIDB4MjNCNywgMHg1QkQ4LCAweDIzQjgsIDB4NUJEOSwgMHgyM0I5LCAweDVCREUsIDB4MEZCOCwNCisgICAgMHg1QkRGLCAweDBGQzAsIDB4NUJFMCwgMHgyNjYwLCAweDVCRTEsIDB4MEZCQSwgMHg1QkUyLCAweDBGQkUsDQorICAgIDB4NUJFMywgMHgyNjYxLCAweDVCRTQsIDB4MEZCRiwgMHg1QkU1LCAweDBGQkIsIDB4NUJFNiwgMHgwRkJDLA0KKyAgICAweDVCRTcsIDB4MEZCOSwgMHg1QkU4LCAweDBGQkQsIDB4NUJFOSwgMHgxMTMyLCAweDVCRUEsIDB4MjEwQiwNCisgICAgMHg1QkVCLCAweDExMzMsIDB4NUJFQywgMHgxMTMxLCAweDVCRUUsIDB4MTEzMCwgMHg1QkVGLCAweDJCMjgsDQorICAgIDB4NUJGMCwgMHgxMkFCLCAweDVCRjEsIDB4MkQ1OSwgMHg1QkYyLCAweDJENUEsIDB4NUJGNSwgMHgxNTdCLA0KKyAgICAweDVCRjYsIDB4MTYxMiwgMHg1QkY4LCAweDAyODIsIDB4NUJGQSwgMHgwM0M1LCAweDVDMDEsIDB4MDcwNiwNCisgICAgMHg1QzAzLCAweDFDN0MsIDB4NUMwNCwgMHgwODlCLCAweDVDMDcsIDB4MEE1QSwgMHg1QzA4LCAweDBBNTksDQorICAgIDB4NUMwOSwgMHgwQTU4LCAweDVDMEEsIDB4MEMyRiwgMHg1QzBCLCAweDBDMzAsIDB4NUMwQywgMHgyMTEyLA0KKyAgICAweDVDMEQsIDB4MEZDMSwgMHg1QzBFLCAweDEyQUMsIDB4NUMwRiwgMHgwMjgzLCAweDVDMTAsIDB4MTc4NywNCisgICAgMHg1QzExLCAweDAyQzcsIDB4NUMxMiwgMHgxN0EwLCAweDVDMTUsIDB4MTdERCwgMHg1QzE2LCAweDAzQzYsDQorICAgIDB4NUMxQSwgMHgwNUEwLCAweDVDMUYsIDB4MjNCQSwgMHg1QzIyLCAweDAyODQsIDB4NUMyNCwgMHgwMkM4LA0KKyAgICAweDVDMjUsIDB4MTdERSwgMHg1QzI4LCAweDE4NjUsIDB4NUMyQSwgMHgxODY2LCAweDVDMkMsIDB4MDQ4NCwNCisgICAgMHg1QzMwLCAweDIxMTMsIDB4NUMzMSwgMHgwQzMxLCAweDVDMzMsIDB4MjNCQiwgMHg1QzM3LCAweDEzQzcsDQorICAgIDB4NUMzOCwgMHgwMjg1LCAweDVDMzksIDB4MDI5OSwgMHg1QzNBLCAweDAyQzksIDB4NUMzQiwgMHgxN0ExLA0KKyAgICAweDVDM0MsIDB4MDMzNSwgMHg1QzNFLCAweDA0ODgsIDB4NUMzRiwgMHgwNDg3LCAweDVDNDAsIDB4MDQ4NSwNCisgICAgMHg1QzQxLCAweDA0ODYsIDB4NUM0NCwgMHgxOTVCLCAweDVDNDUsIDB4MDVBMiwgMHg1QzQ2LCAweDA1QTMsDQorICAgIDB4NUM0NywgMHgxOTVDLCAweDVDNDgsIDB4MDVBMSwgMHg1QzRCLCAweDA3MEEsIDB4NUM0QywgMHgxQUI0LA0KKyAgICAweDVDNEQsIDB4MDcwOSwgMHg1QzRFLCAweDA3MDcsIDB4NUM0RiwgMHgwNzA4LCAweDVDNTAsIDB4MDg5RSwNCisgICAgMHg1QzUxLCAweDA4OUMsIDB4NUM1NCwgMHgxQzdFLCAweDVDNTUsIDB4MDg5RCwgMHg1QzU2LCAweDFDN0QsDQorICAgIDB4NUM1OCwgMHgwODkyLCAweDVDNTksIDB4MUVCQiwgMHg1QzVDLCAweDBBNUMsIDB4NUM1RCwgMHgwQTVELA0KKyAgICAweDVDNjAsIDB4MEE1QiwgMHg1QzYyLCAweDBGQzIsIDB4NUM2MywgMHgyNjYyLCAweDVDNjQsIDB4MTEzNCwNCisgICAgMHg1QzY1LCAweDExMzUsIDB4NUM2NywgMHgyOEI3LCAweDVDNjgsIDB4MTNDOCwgMHg1QzY5LCAweDJGMTksDQorICAgIDB4NUM2QSwgMHgyRjFBLCAweDVDNkMsIDB4MTY2RSwgMHg1QzZELCAweDM0ODMsIDB4NUM2RSwgMHgxNzc2LA0KKyAgICAweDVDNkYsIDB4MDJDQSwgMHg1QzcxLCAweDAyODYsIDB4NUM3MywgMHgxN0EzLCAweDVDNzQsIDB4MTdBMiwNCisgICAgMHg1Qzc5LCAweDAzQzcsIDB4NUM3QSwgMHgxN0UwLCAweDVDN0IsIDB4MTdFMSwgMHg1QzdDLCAweDE3REYsDQorICAgIDB4NUM3RSwgMHgxN0UyLCAweDVDODYsIDB4MTg2RSwgMHg1Qzg4LCAweDE4NjksIDB4NUM4OSwgMHgxODZCLA0KKyAgICAweDVDOEEsIDB4MTg2RCwgMHg1QzhCLCAweDE4NkEsIDB4NUM4QywgMHgwNDhDLCAweDVDOEQsIDB4MTg2NywNCisgICAgMHg1QzhGLCAweDE4NjgsIDB4NUM5MCwgMHgwNDg5LCAweDVDOTEsIDB4MDQ4QSwgMHg1QzkyLCAweDE4NkMsDQorICAgIDB4NUM5MywgMHgxODZGLCAweDVDOTQsIDB4MDQ4QiwgMHg1Qzk1LCAweDE4NzAsIDB4NUM5RCwgMHgxOTZBLA0KKyAgICAweDVDOUYsIDB4MTk2NCwgMHg1Q0EwLCAweDE5NUYsIDB4NUNBMSwgMHgwNUE1LCAweDVDQTIsIDB4MTk2NywNCisgICAgMHg1Q0EzLCAweDE5NjUsIDB4NUNBNCwgMHgxOTVFLCAweDVDQTUsIDB4MTk2QiwgMHg1Q0E2LCAweDE5NkUsDQorICAgIDB4NUNBNywgMHgxOTY5LCAweDVDQTgsIDB4MTk2MiwgMHg1Q0E5LCAweDA1QTcsIDB4NUNBQSwgMHgxOTY4LA0KKyAgICAweDVDQUIsIDB4MDVBOCwgMHg1Q0FDLCAweDE5NjMsIDB4NUNBRCwgMHgxOTY2LCAweDVDQUUsIDB4MTk1RCwNCisgICAgMHg1Q0FGLCAweDE5NjEsIDB4NUNCMCwgMHgxOTZELCAweDVDQjEsIDB4MDVBOSwgMHg1Q0IzLCAweDA1QUEsDQorICAgIDB4NUNCNSwgMHgxOTYwLCAweDVDQjYsIDB4MTk2QywgMHg1Q0I3LCAweDA1QTQsIDB4NUNCOCwgMHgwNUE2LA0KKyAgICAweDVDQzYsIDB4MUFDNSwgMHg1Q0M3LCAweDFBQkUsIDB4NUNDOCwgMHgxQUM0LCAweDVDQzksIDB4MUFCRCwNCisgICAgMHg1Q0NBLCAweDFBQkYsIDB4NUNDQiwgMHgxQUI5LCAweDVDQ0MsIDB4MUFCNywgMHg1Q0NFLCAweDFBQzYsDQorICAgIDB4NUNDRiwgMHgxQUMzLCAweDVDRDAsIDB4MUFCNSwgMHg1Q0QyLCAweDA3MEMsIDB4NUNEMywgMHgxQUMxLA0KKyAgICAweDVDRDQsIDB4MUFDMiwgMHg1Q0Q2LCAweDFBQzAsIDB4NUNENywgMHgxQUI4LCAweDVDRDgsIDB4MUFCNiwNCisgICAgMHg1Q0Q5LCAweDA3MEIsIDB4NUNEQSwgMHgxQUJDLCAweDVDREIsIDB4MUFCQSwgMHg1Q0RFLCAweDFBQkIsDQorICAgIDB4NUNERiwgMHgxQUM3LCAweDVDRTgsIDB4MDhBMywgMHg1Q0VBLCAweDA4QTIsIDB4NUNFQywgMHgxQzdGLA0KKyAgICAweDVDRUQsIDB4MDg5RiwgMHg1Q0VFLCAweDFDODEsIDB4NUNGMCwgMHgwOEE0LCAweDVDRjEsIDB4MUM4MiwNCisgICAgMHg1Q0Y0LCAweDA4QTcsIDB4NUNGNiwgMHgwOEE1LCAweDVDRjcsIDB4MUM4MywgMHg1Q0Y4LCAweDFBQzgsDQorICAgIDB4NUNGOSwgMHgxQzg1LCAweDVDRkIsIDB4MDhBMSwgMHg1Q0ZELCAweDA4QTAsIDB4NUNGRiwgMHgxQzgwLA0KKyAgICAweDVEMDAsIDB4MUM4NCwgMHg1RDAxLCAweDA4QTYsIDB4NUQwNiwgMHgwQTVGLCAweDVEMDcsIDB4MEE1RSwNCisgICAgMHg1RDBCLCAweDFFQkQsIDB4NUQwQywgMHgxRUMxLCAweDVEMEQsIDB4MUVDMywgMHg1RDBFLCAweDBBNjAsDQorICAgIDB4NUQwRiwgMHgxRUM2LCAweDVEMTEsIDB4MEE2NCwgMHg1RDEyLCAweDFFQzgsIDB4NUQxNCwgMHgwQTY2LA0KKyAgICAweDVEMTYsIDB4MEE2MiwgMHg1RDE3LCAweDBBNkEsIDB4NUQxOSwgMHgwQTY3LCAweDVEMUEsIDB4MUVCRiwNCisgICAgMHg1RDFCLCAweDBBNjEsIDB4NUQxRCwgMHgxRUJFLCAweDVEMUUsIDB4MUVCQywgMHg1RDFGLCAweDFFQ0EsDQorICAgIDB4NUQyMCwgMHgxRUMwLCAweDVEMjIsIDB4MEE2MywgMHg1RDIzLCAweDFFQzksIDB4NUQyNCwgMHgwQTY4LA0KKyAgICAweDVEMjUsIDB4MUVDNSwgMHg1RDI2LCAweDFFQzQsIDB4NUQyNywgMHgwQTY5LCAweDVEMjgsIDB4MUVDMiwNCisgICAgMHg1RDI5LCAweDBBNjUsIDB4NUQyRSwgMHgxRUNCLCAweDVEMzAsIDB4MUVDNywgMHg1RDMxLCAweDIxMjIsDQorICAgIDB4NUQzMiwgMHgyMTI5LCAweDVEMzMsIDB4MjExRSwgMHg1RDM0LCAweDBDMzQsIDB4NUQzNSwgMHgyMTFBLA0KKyAgICAweDVEMzYsIDB4MjEyQSwgMHg1RDM3LCAweDIxMTQsIDB4NUQzOCwgMHgyMTI3LCAweDVEMzksIDB4MjEyNSwNCisgICAgMHg1RDNBLCAweDIxMUYsIDB4NUQzQywgMHgyMTI4LCAweDVEM0QsIDB4MjEyMSwgMHg1RDNGLCAweDIxMTksDQorICAgIDB4NUQ0MCwgMHgyMTJCLCAweDVENDEsIDB4MjExNywgMHg1RDQyLCAweDIxMjQsIDB4NUQ0MywgMHgyMTE1LA0KKyAgICAweDVENDUsIDB4MjEyQywgMHg1RDQ3LCAweDBDMzUsIDB4NUQ0OSwgMHgyMTI2LCAweDVENEEsIDB4MjNCRSwNCisgICAgMHg1RDRCLCAweDIxMTgsIDB4NUQ0QywgMHgwQzMyLCAweDVENEUsIDB4MjExQywgMHg1RDUwLCAweDBDMzMsDQorICAgIDB4NUQ1MSwgMHgyMTFCLCAweDVENTIsIDB4MjEyMCwgMHg1RDU1LCAweDIxMUQsIDB4NUQ1OSwgMHgyMTIzLA0KKyAgICAweDVENUUsIDB4MjNDMiwgMHg1RDYyLCAweDIzQzUsIDB4NUQ2MywgMHgyM0JELCAweDVENjUsIDB4MjNCRiwNCisgICAgMHg1RDY3LCAweDIzQzQsIDB4NUQ2OCwgMHgyM0MzLCAweDVENjksIDB4MERGRCwgMHg1RDZCLCAweDIxMTYsDQorICAgIDB4NUQ2QywgMHgyM0MxLCAweDVENkYsIDB4MERGRSwgMHg1RDcxLCAweDIzQkMsIDB4NUQ3MiwgMHgyM0MwLA0KKyAgICAweDVENzcsIDB4MjY2OSwgMHg1RDc5LCAweDI2NzAsIDB4NUQ3QSwgMHgyNjY3LCAweDVEN0MsIDB4MjY2RSwNCisgICAgMHg1RDdELCAweDI2NjUsIDB4NUQ3RSwgMHgyNjZELCAweDVEN0YsIDB4MjY3MSwgMHg1RDgwLCAweDI2NjQsDQorICAgIDB4NUQ4MSwgMHgyNjY4LCAweDVEODIsIDB4MjY2MywgMHg1RDg0LCAweDBGQzMsIDB4NUQ4NiwgMHgyNjY2LA0KKyAgICAweDVEODcsIDB4MEZDNCwgMHg1RDg4LCAweDI2NkMsIDB4NUQ4OSwgMHgyNjZCLCAweDVEOEEsIDB4MjY2QSwNCisgICAgMHg1RDhELCAweDI2NkYsIDB4NUQ5MiwgMHgyOEJCLCAweDVEOTMsIDB4MjhCRCwgMHg1RDk0LCAweDExMzcsDQorICAgIDB4NUQ5NSwgMHgyOEJFLCAweDVEOTcsIDB4MjhCOSwgMHg1RDk5LCAweDI4QjgsIDB4NUQ5QSwgMHgyOEMyLA0KKyAgICAweDVEOUMsIDB4MjhDMCwgMHg1RDlELCAweDExMzYsIDB4NUQ5RSwgMHgyOEMzLCAweDVEOUYsIDB4MjhCQSwNCisgICAgMHg1REEwLCAweDI4QkYsIDB4NURBMSwgMHgyOEMxLCAweDVEQTIsIDB4MjhCQywgMHg1REE3LCAweDJCMkMsDQorICAgIDB4NURBOCwgMHgyQjMxLCAweDVEQTksIDB4MkIyQiwgMHg1REFBLCAweDJCMzAsIDB4NURBQywgMHgyQjI5LA0KKyAgICAweDVEQUQsIDB4MkIzMywgMHg1REFFLCAweDJCMkYsIDB4NURBRiwgMHgyQjM0LCAweDVEQjAsIDB4MkIyRSwNCisgICAgMHg1REIxLCAweDJCMkEsIDB4NURCMiwgMHgyQjMyLCAweDVEQjQsIDB4MkIzNSwgMHg1REI1LCAweDJCMkQsDQorICAgIDB4NURCNywgMHgyRDVCLCAweDVEQjgsIDB4MTNDQywgMHg1REJBLCAweDEzQ0EsIDB4NURCQywgMHgxM0M5LA0KKyAgICAweDVEQkQsIDB4MTNDQiwgMHg1REMwLCAweDJGMUIsIDB4NURDMiwgMHgzMDIzLCAweDVEQzMsIDB4MzA4QywNCisgICAgMHg1REM2LCAweDMxQ0QsIDB4NURDNywgMHgzMUNFLCAweDVEQzksIDB4MTYxMywgMHg1RENCLCAweDMyQ0UsDQorICAgIDB4NURDRCwgMHgxNjZGLCAweDVEQ0YsIDB4MzJDRiwgMHg1REQxLCAweDMzN0YsIDB4NUREMiwgMHgxNkMyLA0KKyAgICAweDVERDQsIDB4MTZDMSwgMHg1REQ1LCAweDMzN0UsIDB4NURENiwgMHgxNkY3LCAweDVERDgsIDB4MzQxNCwNCisgICAgMHg1RERCLCAweDAyMjYsIDB4NURERCwgMHgwMjg3LCAweDVEREUsIDB4MDNDOCwgMHg1RERGLCAweDE3RTMsDQorICAgIDB4NURFMCwgMHgxODcxLCAweDVERTEsIDB4MDUxQSwgMHg1REUyLCAweDBBNkIsIDB4NURFNSwgMHgwMjg4LA0KKyAgICAweDVERTYsIDB4MDMzOCwgMHg1REU3LCAweDAzMzcsIDB4NURFOCwgMHgwMzM2LCAweDVERUIsIDB4MDQ4RCwNCisgICAgMHg1REVFLCAweDA4QTgsIDB4NURGMCwgMHgyM0M2LCAweDVERjEsIDB4MDI4OSwgMHg1REYyLCAweDAyOEEsDQorICAgIDB4NURGMywgMHgwMjhCLCAweDVERjQsIDB4MDJDQiwgMHg1REY3LCAweDA3MEQsIDB4NURGOSwgMHgxQUM5LA0KKyAgICAweDVERkQsIDB4MEMzNiwgMHg1REZFLCAweDAyOEMsIDB4NURGRiwgMHgxNzg4LCAweDVFMDIsIDB4MDMzOSwNCisgICAgMHg1RTAzLCAweDAzM0EsIDB4NUUwNCwgMHgxN0E0LCAweDVFMDYsIDB4MDNDOSwgMHg1RTBBLCAweDE4NzIsDQorICAgIDB4NUUwQywgMHgwNDhFLCAweDVFMEUsIDB4MTg3MywgMHg1RTExLCAweDA1QjAsIDB4NUUxNCwgMHgxOTcwLA0KKyAgICAweDVFMTUsIDB4MDVBRSwgMHg1RTE2LCAweDA1QUQsIDB4NUUxNywgMHgxOTZGLCAweDVFMTgsIDB4MDVBQiwNCisgICAgMHg1RTE5LCAweDE5NzEsIDB4NUUxQSwgMHgwNUFDLCAweDVFMUIsIDB4MDVBRiwgMHg1RTFELCAweDA3MEUsDQorICAgIDB4NUUxRiwgMHgwNzEwLCAweDVFMjAsIDB4MUFDRCwgMHg1RTIxLCAweDFBQ0EsIDB4NUUyMiwgMHgxQUNCLA0KKyAgICAweDVFMjMsIDB4MUFDQywgMHg1RTI0LCAweDFBQ0UsIDB4NUUyNSwgMHgwNzBGLCAweDVFMjgsIDB4MUM4NywNCisgICAgMHg1RTI5LCAweDFDODYsIDB4NUUyQiwgMHgwOEFBLCAweDVFMkQsIDB4MDhBOSwgMHg1RTMzLCAweDBBNkUsDQorICAgIDB4NUUzNCwgMHgxRUNELCAweDVFMzYsIDB4MEE2RCwgMHg1RTM3LCAweDBBNkYsIDB4NUUzOCwgMHgwQTZDLA0KKyAgICAweDVFM0QsIDB4MEMzOCwgMHg1RTNFLCAweDFFQ0MsIDB4NUU0MCwgMHgwQzM5LCAweDVFNDEsIDB4MjEyRSwNCisgICAgMHg1RTQzLCAweDBDM0EsIDB4NUU0NCwgMHgyMTJELCAweDVFNDUsIDB4MEMzNywgMHg1RTRBLCAweDIzQzksDQorICAgIDB4NUU0QiwgMHgyM0NCLCAweDVFNEMsIDB4MERGRiwgMHg1RTRELCAweDIzQ0EsIDB4NUU0RSwgMHgyM0M4LA0KKyAgICAweDVFNEYsIDB4MjNDNywgMHg1RTUzLCAweDI2NzQsIDB4NUU1NCwgMHgwRkM5LCAweDVFNTUsIDB4MEZDNywNCisgICAgMHg1RTU3LCAweDBGQzgsIDB4NUU1OCwgMHgyNjcyLCAweDVFNTksIDB4MjY3MywgMHg1RTVCLCAweDBGQzUsDQorICAgIDB4NUU1QywgMHgyOEM3LCAweDVFNUQsIDB4MjhDNSwgMHg1RTVGLCAweDExMzksIDB4NUU2MCwgMHgyOEM2LA0KKyAgICAweDVFNjEsIDB4MTEzQSwgMHg1RTYyLCAweDExMzgsIDB4NUU2MywgMHgwRkM2LCAweDVFNjYsIDB4MkIzOCwNCisgICAgMHg1RTY3LCAweDJCMzYsIDB4NUU2OCwgMHgyQjM3LCAweDVFNjksIDB4MjhDNCwgMHg1RTZBLCAweDJENUQsDQorICAgIDB4NUU2QiwgMHgxM0NELCAweDVFNkMsIDB4MkQ1QywgMHg1RTZELCAweDJGMUMsIDB4NUU2RSwgMHgyRjFELA0KKyAgICAweDVFNkYsIDB4MkIzOSwgMHg1RTcwLCAweDMwOEQsIDB4NUU3MiwgMHgwMjhELCAweDVFNzMsIDB4MDMzQiwNCisgICAgMHg1RTc0LCAweDAzQ0IsIDB4NUU3NSwgMHgxN0U0LCAweDVFNzYsIDB4MDNDQSwgMHg1RTc4LCAweDA1QjEsDQorICAgIDB4NUU3OSwgMHgwRTAwLCAweDVFN0EsIDB4MDIyNywgMHg1RTdCLCAweDAyQ0MsIDB4NUU3QywgMHgwMzNDLA0KKyAgICAweDVFN0QsIDB4MDcxMSwgMHg1RTdFLCAweDBDM0IsIDB4NUU3RiwgMHgwMjI4LCAweDVFODAsIDB4MTdBNSwNCisgICAgMHg1RTgyLCAweDE3QTYsIDB4NUU4NCwgMHgxN0U1LCAweDVFODcsIDB4MDQ5MCwgMHg1RTg4LCAweDE4NzcsDQorICAgIDB4NUU4OSwgMHgxODc1LCAweDVFOEEsIDB4MDQ5MSwgMHg1RThCLCAweDE4NzQsIDB4NUU4QywgMHgxODc2LA0KKyAgICAweDVFOEQsIDB4MTg3OCwgMHg1RThGLCAweDA0OEYsIDB4NUU5NSwgMHgwNUI1LCAweDVFOTYsIDB4MDVCNiwNCisgICAgMHg1RTk3LCAweDA1QjMsIDB4NUU5QSwgMHgwNUIyLCAweDVFOUIsIDB4MUFEMiwgMHg1RTlDLCAweDA1QjQsDQorICAgIDB4NUVBMCwgMHgwNzEyLCAweDVFQTIsIDB4MUFEMSwgMHg1RUEzLCAweDFBRDMsIDB4NUVBNCwgMHgxQUQwLA0KKyAgICAweDVFQTUsIDB4MUFENCwgMHg1RUE2LCAweDA3MTMsIDB4NUVBNywgMHgwOEFELCAweDVFQTgsIDB4MUM4OCwNCisgICAgMHg1RUFBLCAweDFDOEEsIDB4NUVBQiwgMHgwOEFCLCAweDVFQUMsIDB4MUM4QiwgMHg1RUFELCAweDA4QUMsDQorICAgIDB4NUVBRSwgMHgxQzg5LCAweDVFQjAsIDB4MUFDRiwgMHg1RUIxLCAweDFFQ0UsIDB4NUVCMiwgMHgxRUQxLA0KKyAgICAweDVFQjMsIDB4MUVEMiwgMHg1RUI0LCAweDFFQ0YsIDB4NUVCNSwgMHgwQTczLCAweDVFQjYsIDB4MEE3MiwNCisgICAgMHg1RUI3LCAweDBBNzAsIDB4NUVCOCwgMHgwQTcxLCAweDVFQjksIDB4MUVEMCwgMHg1RUJFLCAweDBBNzQsDQorICAgIDB4NUVDMSwgMHgwQzNELCAweDVFQzIsIDB4MEMzRSwgMHg1RUM0LCAweDBDM0YsIDB4NUVDNSwgMHgyM0NDLA0KKyAgICAweDVFQzYsIDB4MjNDRSwgMHg1RUM3LCAweDIzRDAsIDB4NUVDOCwgMHgwRTAyLCAweDVFQzksIDB4MEUwMSwNCisgICAgMHg1RUNBLCAweDBDM0MsIDB4NUVDQiwgMHgyM0NGLCAweDVFQ0MsIDB4MjNDRCwgMHg1RUNFLCAweDI2NzgsDQorICAgIDB4NUVEMSwgMHgyNjc2LCAweDVFRDIsIDB4MjY3QywgMHg1RUQzLCAweDBGQ0EsIDB4NUVENCwgMHgyNjdELA0KKyAgICAweDVFRDUsIDB4MjY3QSwgMHg1RUQ2LCAweDBGQ0IsIDB4NUVENywgMHgyNjc3LCAweDVFRDgsIDB4MjY3NSwNCisgICAgMHg1RUQ5LCAweDI2N0IsIDB4NUVEQSwgMHgxMTNDLCAweDVFREIsIDB4MjhDOSwgMHg1RURDLCAweDI2NzksDQorICAgIDB4NUVERCwgMHgxMTNFLCAweDVFREUsIDB4MjhDQSwgMHg1RURGLCAweDExM0QsIDB4NUVFMCwgMHgxMTQwLA0KKyAgICAweDVFRTEsIDB4MjhDQiwgMHg1RUUyLCAweDExM0IsIDB4NUVFMywgMHgxMTNGLCAweDVFRTUsIDB4MkIzRSwNCisgICAgMHg1RUU2LCAweDJCM0MsIDB4NUVFNywgMHgyQjNCLCAweDVFRTgsIDB4MkIzRCwgMHg1RUU5LCAweDJCM0EsDQorICAgIDB4NUVFQywgMHgxNTdELCAweDVFRUUsIDB4MzFDRiwgMHg1RUVGLCAweDMxRDAsIDB4NUVGMSwgMHgzMkQwLA0KKyAgICAweDVFRjIsIDB4MzM4MCwgMHg1RUYzLCAweDE3NDIsIDB4NUVGNCwgMHgwMjI5LCAweDVFRjYsIDB4MDVCNywNCisgICAgMHg1RUY3LCAweDA0OTIsIDB4NUVGQSwgMHgwNzE0LCAweDVFRkUsIDB4MDI4RSwgMHg1RUZGLCAweDAyQ0QsDQorICAgIDB4NUYwMSwgMHgwMzNELCAweDVGMDIsIDB4MTdFNiwgMHg1RjA0LCAweDA0OTMsIDB4NUYwNSwgMHgxODc5LA0KKyAgICAweDVGMDcsIDB4MUFENSwgMHg1RjA4LCAweDA3MTUsIDB4NUYwQSwgMHgwRkNDLCAweDVGMEIsIDB4MDI4RiwNCisgICAgMHg1RjBGLCAweDAzQ0MsIDB4NUYxMiwgMHgwRTAzLCAweDVGMTMsIDB4MDI5MCwgMHg1RjE0LCAweDAyQ0UsDQorICAgIDB4NUYxNSwgMHgwMkNGLCAweDVGMTcsIDB4MDMzRiwgMHg1RjE4LCAweDAzM0UsIDB4NUYxQSwgMHgxN0U3LA0KKyAgICAweDVGMUIsIDB4MDNDRCwgMHg1RjFELCAweDE4N0EsIDB4NUYxRiwgMHgwNDk0LCAweDVGMjIsIDB4MTk3MywNCisgICAgMHg1RjIzLCAweDE5NzQsIDB4NUYyNCwgMHgxOTc1LCAweDVGMjYsIDB4MDVCOCwgMHg1RjI3LCAweDA1QjksDQorICAgIDB4NUYyOCwgMHgxOTcyLCAweDVGMjksIDB4MDVCQSwgMHg1RjJELCAweDA3MTYsIDB4NUYyRSwgMHgxQUQ2LA0KKyAgICAweDVGMzAsIDB4MUM4RCwgMHg1RjMxLCAweDA4QUUsIDB4NUYzMywgMHgxQzhDLCAweDVGMzUsIDB4MEE3NSwNCisgICAgMHg1RjM2LCAweDFFRDMsIDB4NUYzNywgMHgwQTc2LCAweDVGMzgsIDB4MUVENCwgMHg1RjNDLCAweDBDNDAsDQorICAgIDB4NUY0MCwgMHgyM0QxLCAweDVGNDMsIDB4MjY3RiwgMHg1RjQ0LCAweDI2N0UsIDB4NUY0NiwgMHgwRkNELA0KKyAgICAweDVGNDgsIDB4MTE0MSwgMHg1RjQ5LCAweDI4Q0MsIDB4NUY0QSwgMHgxMkFELCAweDVGNEIsIDB4MkIzRiwNCisgICAgMHg1RjRDLCAweDEzQ0UsIDB4NUY0RSwgMHgxNkMzLCAweDVGNEYsIDB4MzQxNiwgMHg1RjUwLCAweDAyMkEsDQorICAgIDB4NUY1NCwgMHgxOTc2LCAweDVGNTYsIDB4MUFENywgMHg1RjU3LCAweDBBNzcsIDB4NUY1OCwgMHgyMTJGLA0KKyAgICAweDVGNTksIDB4MEUwNCwgMHg1RjVELCAweDE0Q0YsIDB4NUY2MSwgMHgwMjJCLCAweDVGNjIsIDB4MDQ5NiwNCisgICAgMHg1RjY0LCAweDA0OTUsIDB4NUY2NSwgMHgwNzE3LCAweDVGNjcsIDB4MUM4RSwgMHg1RjY5LCAweDBBNzksDQorICAgIDB4NUY2QSwgMHgwQjg5LCAweDVGNkIsIDB4MEE3QSwgMHg1RjZDLCAweDBBNzgsIDB4NUY2RCwgMHgwQzQxLA0KKyAgICAweDVGNkYsIDB4MjY4MCwgMHg1RjcwLCAweDBGQ0UsIDB4NUY3MSwgMHgxMTQyLCAweDVGNzMsIDB4MTc3NywNCisgICAgMHg1Rjc0LCAweDE3RTgsIDB4NUY3NiwgMHgxODdDLCAweDVGNzcsIDB4MDQ5NywgMHg1Rjc4LCAweDE4N0IsDQorICAgIDB4NUY3OSwgMHgwNDk4LCAweDVGN0MsIDB4MDVCRSwgMHg1RjdELCAweDE5NzksIDB4NUY3RSwgMHgxOTc4LA0KKyAgICAweDVGN0YsIDB4MDVCRCwgMHg1RjgwLCAweDA1QkIsIDB4NUY4MSwgMHgwNUJDLCAweDVGODIsIDB4MTk3NywNCisgICAgMHg1Rjg1LCAweDA3MTksIDB4NUY4NiwgMHgxQUQ4LCAweDVGODcsIDB4MDcxQywgMHg1Rjg4LCAweDA3MTgsDQorICAgIDB4NUY4OSwgMHgwNzFFLCAweDVGOEEsIDB4MDcxQSwgMHg1RjhCLCAweDA3MUIsIDB4NUY4QywgMHgwNzFELA0KKyAgICAweDVGOTAsIDB4MDhCMSwgMHg1RjkxLCAweDA4QjAsIDB4NUY5MiwgMHgwOEFGLCAweDVGOTYsIDB4MUVENiwNCisgICAgMHg1Rjk3LCAweDBBN0IsIDB4NUY5OCwgMHgwQTdFLCAweDVGOTksIDB4MEE3QywgMHg1RjlCLCAweDFFRDUsDQorICAgIDB4NUY5QywgMHgwQTgxLCAweDVGOUUsIDB4MEE3RCwgMHg1RjlGLCAweDFFRDcsIDB4NUZBMCwgMHgwQTgwLA0KKyAgICAweDVGQTEsIDB4MEE3RiwgMHg1RkE1LCAweDIxMzEsIDB4NUZBNiwgMHgyMTMwLCAweDVGQTgsIDB4MEM0NCwNCisgICAgMHg1RkE5LCAweDBDNDIsIDB4NUZBQSwgMHgwQzQzLCAweDVGQUIsIDB4MjEzMiwgMHg1RkFDLCAweDBFMDUsDQorICAgIDB4NUZBRCwgMHgyM0QzLCAweDVGQUUsIDB4MEUwNiwgMHg1RkFGLCAweDIzRDIsIDB4NUZCMiwgMHgyOENELA0KKyAgICAweDVGQjUsIDB4MTE0NCwgMHg1RkI2LCAweDI2ODEsIDB4NUZCNywgMHgxMTQzLCAweDVGQjksIDB4MEZDRiwNCisgICAgMHg1RkJCLCAweDJCNDEsIDB4NUZCQywgMHgyQjQwLCAweDVGQkQsIDB4MTNDRiwgMHg1RkJFLCAweDJENUUsDQorICAgIDB4NUZCRiwgMHgzMDhFLCAweDVGQzAsIDB4MzFEMSwgMHg1RkMxLCAweDMxRDIsIDB4NUZDMywgMHgwMkQwLA0KKyAgICAweDVGQzUsIDB4MDM0MCwgMHg1RkM5LCAweDE3QTcsIDB4NUZDQywgMHgwNDlBLCAweDVGQ0QsIDB4MDQ5QywNCisgICAgMHg1RkNGLCAweDE3RUIsIDB4NUZEMCwgMHgxODdGLCAweDVGRDEsIDB4MTg3RSwgMHg1RkQyLCAweDE4N0QsDQorICAgIDB4NUZENCwgMHgxN0VBLCAweDVGRDUsIDB4MTdFOSwgMHg1RkQ2LCAweDAzQ0YsIDB4NUZENywgMHgwNDlCLA0KKyAgICAweDVGRDgsIDB4MDQ5OSwgMHg1RkQ5LCAweDAzQ0UsIDB4NUZERCwgMHgwNUJGLCAweDVGREUsIDB4MTk3QSwNCisgICAgMHg1RkUwLCAweDA1QzAsIDB4NUZFMSwgMHgxODg0LCAweDVGRTMsIDB4MTg4NiwgMHg1RkU0LCAweDE4ODUsDQorICAgIDB4NUZFNSwgMHgxOTdCLCAweDVGRTgsIDB4MTg4MSwgMHg1RkVBLCAweDA0QTAsIDB4NUZFQiwgMHgwNDlFLA0KKyAgICAweDVGRUQsIDB4MTg4MCwgMHg1RkVFLCAweDE4ODIsIDB4NUZFRiwgMHgxODg4LCAweDVGRjEsIDB4MDQ5RCwNCisgICAgMHg1RkYzLCAweDE4ODMsIDB4NUZGNCwgMHgxODhDLCAweDVGRjUsIDB4MDVDMiwgMHg1RkY3LCAweDE4ODksDQorICAgIDB4NUZGOCwgMHgwNDlGLCAweDVGRkEsIDB4MTg4NywgMHg1RkZCLCAweDE4OEEsIDB4NUZGRCwgMHgwNUMxLA0KKyAgICAweDVGRkYsIDB4MDVDMywgMHg2MDAwLCAweDE4OEIsIDB4NjAwOSwgMHgxOThGLCAweDYwMEEsIDB4MTk4MiwNCisgICAgMHg2MDBCLCAweDE5ODAsIDB4NjAwQywgMHgxOThFLCAweDYwMEQsIDB4MTk4OSwgMHg2MDBFLCAweDA3MjMsDQorICAgIDB4NjAwRiwgMHgwNUM0LCAweDYwMTAsIDB4MTk4QSwgMHg2MDExLCAweDE5OEQsIDB4NjAxMiwgMHgwNzFGLA0KKyAgICAweDYwMTMsIDB4MTk4QywgMHg2MDE0LCAweDA1QzUsIDB4NjAxNSwgMHgwNUNBLCAweDYwMTYsIDB4MDVDOCwNCisgICAgMHg2MDE3LCAweDE5ODMsIDB4NjAxOSwgMHgxOTdFLCAweDYwMUEsIDB4MTk4NSwgMHg2MDFCLCAweDA1Q0YsDQorICAgIDB4NjAxQywgMHgxOTkwLCAweDYwMUQsIDB4MDcyMCwgMHg2MDFFLCAweDE5ODYsIDB4NjAyMCwgMHgwNzIxLA0KKyAgICAweDYwMjEsIDB4MDVDQiwgMHg2MDIyLCAweDE5ODgsIDB4NjAyNCwgMHgxQUU3LCAweDYwMjUsIDB4MDcyMiwNCisgICAgMHg2MDI2LCAweDE5N0QsIDB4NjAyNywgMHgwNUNDLCAweDYwMjgsIDB4MDcyNCwgMHg2MDI5LCAweDA1Q0QsDQorICAgIDB4NjAyQSwgMHgwNUM5LCAweDYwMkIsIDB4MDVDRSwgMHg2MDJDLCAweDE5ODcsIDB4NjAyRCwgMHgxOTdDLA0KKyAgICAweDYwMkUsIDB4MTk4QiwgMHg2MDJGLCAweDA1QzYsIDB4NjAzMiwgMHgxOTdGLCAweDYwMzMsIDB4MTk4NCwNCisgICAgMHg2MDM0LCAweDE5ODEsIDB4NjAzNSwgMHgwNUM3LCAweDYwMzcsIDB4MUFEOSwgMHg2MDM5LCAweDFBREEsDQorICAgIDB4NjA0MCwgMHgxQUU0LCAweDYwNDEsIDB4MUM5MiwgMHg2MDQyLCAweDFBRTUsIDB4NjA0MywgMHgwNzJBLA0KKyAgICAweDYwNDQsIDB4MUFFOCwgMHg2MDQ1LCAweDFBREUsIDB4NjA0NiwgMHgwNzI5LCAweDYwNDcsIDB4MUFFMCwNCisgICAgMHg2MDQ5LCAweDFBRTEsIDB4NjA0QywgMHgxQUUzLCAweDYwNEQsIDB4MDcyNSwgMHg2MDUwLCAweDA4QjUsDQorICAgIDB4NjA1MiwgMHgzNkVDLCAweDYwNTMsIDB4MUFERiwgMHg2MDU0LCAweDFBREIsIDB4NjA1NSwgMHgwOEI2LA0KKyAgICAweDYwNTgsIDB4MUFFOSwgMHg2MDU5LCAweDA4QjIsIDB4NjA1QSwgMHgxQzkwLCAweDYwNUIsIDB4MUFFMiwNCisgICAgMHg2MDVELCAweDFDOEYsIDB4NjA1RSwgMHgxQURELCAweDYwNUYsIDB4MUFFNiwgMHg2MDYyLCAweDA3MjgsDQorICAgIDB4NjA2MywgMHgwOEIzLCAweDYwNjQsIDB4MDcyRSwgMHg2MDY1LCAweDA4QjQsIDB4NjA2NiwgMHgxQUVBLA0KKyAgICAweDYwNjcsIDB4MUM5MSwgMHg2MDY4LCAweDA3MjcsIDB4NjA2OSwgMHgwOEI4LCAweDYwNkEsIDB4MDcyRCwNCisgICAgMHg2MDZCLCAweDA3MkMsIDB4NjA2QywgMHgwNzJCLCAweDYwNkQsIDB4MDhCNywgMHg2MDZFLCAweDFBRUIsDQorICAgIDB4NjA2RiwgMHgwOEI5LCAweDYwNzAsIDB4MDcyNiwgMHg2MDcyLCAweDFBREMsIDB4NjA3RiwgMHgwQTgyLA0KKyAgICAweDYwODAsIDB4MUM5NSwgMHg2MDgxLCAweDFDOTcsIDB4NjA4MywgMHgxQzk5LCAweDYwODQsIDB4MDhCQSwNCisgICAgMHg2MDg1LCAweDA4QzAsIDB4NjA4NiwgMHgxRURBLCAweDYwODcsIDB4MUM5RCwgMHg2MDg4LCAweDFDOTQsDQorICAgIDB4NjA4OSwgMHgwQTg0LCAweDYwOEEsIDB4MUVEOCwgMHg2MDhDLCAweDA4QkYsIDB4NjA4RCwgMHgwOEJELA0KKyAgICAweDYwOEUsIDB4MUM5RiwgMHg2MDkwLCAweDFFRDksIDB4NjA5MiwgMHgxQzk2LCAweDYwOTQsIDB4MDhCRSwNCisgICAgMHg2MDk1LCAweDFDOUEsIDB4NjA5NiwgMHgwOEMxLCAweDYwOTcsIDB4MUM5QywgMHg2MDlBLCAweDA4QkMsDQorICAgIDB4NjA5QiwgMHgxQzlCLCAweDYwOUMsIDB4MUM5RSwgMHg2MDlELCAweDFDOTgsIDB4NjA5RiwgMHgwOEJCLA0KKyAgICAweDYwQTAsIDB4MEE4NSwgMHg2MEEyLCAweDFDOTMsIDB4NjBBMywgMHgwQTgzLCAweDYwQTgsIDB4MEE4NiwNCisgICAgMHg2MEIwLCAweDFFREMsIDB4NjBCMSwgMHgxRUU1LCAweDYwQjIsIDB4MEM0NywgMHg2MEI0LCAweDBBODgsDQorICAgIDB4NjBCNSwgMHgwQThELCAweDYwQjYsIDB4MEM0OCwgMHg2MEI3LCAweDFFRTcsIDB4NjBCOCwgMHgwQTk0LA0KKyAgICAweDYwQjksIDB4MjEzNCwgMHg2MEJBLCAweDFFREQsIDB4NjBCQiwgMHgwQThDLCAweDYwQkMsIDB4MEE4RiwNCisgICAgMHg2MEJELCAweDBBOEEsIDB4NjBCRSwgMHgxRURCLCAweDYwQkYsIDB4MUVFOSwgMHg2MEMwLCAweDFFRUMsDQorICAgIDB4NjBDMSwgMHgyMTQzLCAweDYwQzMsIDB4MUVFQSwgMHg2MEM0LCAweDIxMzgsIDB4NjBDNSwgMHgwQThCLA0KKyAgICAweDYwQzYsIDB4MEE5MiwgMHg2MEM3LCAweDBBOTYsIDB4NjBDOCwgMHgxRUU0LCAweDYwQzksIDB4MjEzMywNCisgICAgMHg2MENBLCAweDFFRTgsIDB4NjBDQiwgMHgwQTg3LCAweDYwQ0MsIDB4MjEzNSwgMHg2MENELCAweDFFRUIsDQorICAgIDB4NjBDRSwgMHgyMTM3LCAweDYwQ0YsIDB4MUVFMCwgMHg2MEQxLCAweDBDNDUsIDB4NjBEMywgMHgxRURFLA0KKyAgICAweDYwRDQsIDB4MUVERiwgMHg2MEQ1LCAweDBBOTEsIDB4NjBEOCwgMHgwQTkwLCAweDYwRDksIDB4MUVFMiwNCisgICAgMHg2MERBLCAweDBBOTUsIDB4NjBEQiwgMHgxRUU2LCAweDYwREMsIDB4MEE4RSwgMHg2MERELCAweDFFRTMsDQorICAgIDB4NjBERiwgMHgwQTkzLCAweDYwRTAsIDB4MEM0OSwgMHg2MEUxLCAweDBDNDYsIDB4NjBFMiwgMHgyMTM2LA0KKyAgICAweDYwRTQsIDB4MUVFMSwgMHg2MEU2LCAweDBBODksIDB4NjBGMCwgMHgwQzRFLCAweDYwRjEsIDB4MEM1MiwNCisgICAgMHg2MEYyLCAweDIxM0EsIDB4NjBGMywgMHgwRTBCLCAweDYwRjQsIDB4MEM1MCwgMHg2MEY1LCAweDIxM0UsDQorICAgIDB4NjBGNiwgMHgwQzU0LCAweDYwRjcsIDB4MjNENCwgMHg2MEY4LCAweDIxNDAsIDB4NjBGOSwgMHgwRTBELA0KKyAgICAweDYwRkEsIDB4MEM0QywgMHg2MEZCLCAweDBDNEYsIDB4NjBGQywgMHgyMTQxLCAweDYwRkUsIDB4MjE0MiwNCisgICAgMHg2MEZGLCAweDIxNDgsIDB4NjEwMCwgMHgwQzU2LCAweDYxMDEsIDB4MEUwRSwgMHg2MTAzLCAweDIxNDQsDQorICAgIDB4NjEwNCwgMHgyMTQ5LCAweDYxMDUsIDB4MjEzRCwgMHg2MTA2LCAweDBFMTgsIDB4NjEwOCwgMHgwRTBGLA0KKyAgICAweDYxMDksIDB4MEM1NSwgMHg2MTBBLCAweDIxM0IsIDB4NjEwQiwgMHgyMTRBLCAweDYxMEQsIDB4MEUxNywNCisgICAgMHg2MTBFLCAweDBDNTMsIDB4NjEwRiwgMHgwRTA4LCAweDYxMTAsIDB4MjE0NywgMHg2MTEyLCAweDBDNTcsDQorICAgIDB4NjExMywgMHgyMTNGLCAweDYxMTQsIDB4MjEzOSwgMHg2MTE1LCAweDBDNEQsIDB4NjExNiwgMHgyMTNDLA0KKyAgICAweDYxMTgsIDB4MjE0NSwgMHg2MTFBLCAweDBFMDcsIDB4NjExQiwgMHgwRTBDLCAweDYxMUMsIDB4MEM0QSwNCisgICAgMHg2MTFELCAweDIxNDYsIDB4NjExRiwgMHgwRTBBLCAweDYxMjMsIDB4MEM0QiwgMHg2MTI3LCAweDBFMTYsDQorICAgIDB4NjEyOCwgMHgyNjgzLCAweDYxMjksIDB4MjNERiwgMHg2MTJCLCAweDIzRDcsIDB4NjEyQywgMHgyNjgyLA0KKyAgICAweDYxMkUsIDB4MjNEQiwgMHg2MTJGLCAweDIzREQsIDB4NjEzMiwgMHgyM0RBLCAweDYxMzQsIDB4MEUxNSwNCisgICAgMHg2MTM2LCAweDIzRDksIDB4NjEzNywgMHgwRTE5LCAweDYxM0IsIDB4MjY5MiwgMHg2MTNFLCAweDBFMTQsDQorICAgIDB4NjEzRiwgMHgwRkQxLCAweDYxNDAsIDB4MjNFMCwgMHg2MTQxLCAweDI2ODQsIDB4NjE0NCwgMHgwRTEyLA0KKyAgICAweDYxNDUsIDB4MjNEOCwgMHg2MTQ2LCAweDIzREMsIDB4NjE0NywgMHgwRkQwLCAweDYxNDgsIDB4MEUwOSwNCisgICAgMHg2MTQ5LCAweDIzRDUsIDB4NjE0QSwgMHgyM0Q2LCAweDYxNEIsIDB4MEZEMiwgMHg2MTRDLCAweDBFMTEsDQorICAgIDB4NjE0RCwgMHgwRTEzLCAweDYxNEUsIDB4MEUxMCwgMHg2MTRGLCAweDIzREUsIDB4NjE1MiwgMHgyNjg4LA0KKyAgICAweDYxNTMsIDB4MjY4OSwgMHg2MTU0LCAweDI2OEUsIDB4NjE1NSwgMHgxMTQ5LCAweDYxNTYsIDB4MjY5NSwNCisgICAgMHg2MTU4LCAweDBGRDgsIDB4NjE1QSwgMHgwRkQ3LCAweDYxNUIsIDB4MjY5MCwgMHg2MTVELCAweDExNDgsDQorICAgIDB4NjE1RSwgMHgyNjg1LCAweDYxNUYsIDB4MEZENiwgMHg2MTYxLCAweDI2OTQsIDB4NjE2MiwgMHgwRkQ0LA0KKyAgICAweDYxNjMsIDB4MEZENSwgMHg2MTY1LCAweDI2OTEsIDB4NjE2NiwgMHgyOERFLCAweDYxNjcsIDB4MTE0NiwNCisgICAgMHg2MTY4LCAweDBDNTEsIDB4NjE2QSwgMHgyNjkzLCAweDYxNkIsIDB4MTE0RCwgMHg2MTZDLCAweDI2OEIsDQorICAgIDB4NjE2RSwgMHgxMTQ3LCAweDYxNzAsIDB4MTE0QywgMHg2MTcxLCAweDI2ODYsIDB4NjE3MiwgMHgyNjhBLA0KKyAgICAweDYxNzMsIDB4MjY4NywgMHg2MTc0LCAweDI2OEQsIDB4NjE3NSwgMHgwRkQ5LCAweDYxNzYsIDB4MTE0NSwNCisgICAgMHg2MTc3LCAweDBGRDMsIDB4NjE3OSwgMHgyOEQwLCAweDYxN0EsIDB4MjY4RiwgMHg2MTdDLCAweDExNEIsDQorICAgIDB4NjE3RSwgMHgxMTRFLCAweDYxODAsIDB4MjY4QywgMHg2MTgyLCAweDExNEEsIDB4NjE4MywgMHgyOENGLA0KKyAgICAweDYxODksIDB4MjhENCwgMHg2MThBLCAweDEyQjEsIDB4NjE4QiwgMHgyOENFLCAweDYxOEMsIDB4MkI0RCwNCisgICAgMHg2MThELCAweDI4REQsIDB4NjE4RSwgMHgxMTUyLCAweDYxOTAsIDB4MTE1MCwgMHg2MTkxLCAweDEyQUYsDQorICAgIDB4NjE5MiwgMHgyOERBLCAweDYxOTMsIDB4MjhENiwgMHg2MTk0LCAweDExNTYsIDB4NjE5NiwgMHgyQjQ0LA0KKyAgICAweDYxOUEsIDB4MTE1NCwgMHg2MTlCLCAweDI4RDUsIDB4NjE5RCwgMHgyQjQyLCAweDYxOUYsIDB4MjhEOSwNCisgICAgMHg2MUExLCAweDI4REMsIDB4NjFBMiwgMHgyOEQzLCAweDYxQTQsIDB4MTE1NSwgMHg2MUE3LCAweDExNEYsDQorICAgIDB4NjFBOCwgMHgyQjQzLCAweDYxQTksIDB4MTJCMCwgMHg2MUFBLCAweDI4REIsIDB4NjFBQiwgMHgxMTUxLA0KKyAgICAweDYxQUMsIDB4MTE1MywgMHg2MUFELCAweDI4RDgsIDB4NjFBRSwgMHgxMTU3LCAweDYxQUYsIDB4MjhENywNCisgICAgMHg2MUIwLCAweDI4RDIsIDB4NjFCMSwgMHgyOEQxLCAweDYxQjIsIDB4MTJBRSwgMHg2MUIzLCAweDI4REYsDQorICAgIDB4NjFCNCwgMHgyQjQ2LCAweDYxQjUsIDB4MkQ2MCwgMHg2MUI2LCAweDEyQjMsIDB4NjFCOCwgMHgyQjRDLA0KKyAgICAweDYxQkEsIDB4MkI0QSwgMHg2MUJDLCAweDJENjEsIDB4NjFCRSwgMHgxMkI0LCAweDYxQkYsIDB4MkI0QiwNCisgICAgMHg2MUMxLCAweDJCNDgsIDB4NjFDMiwgMHgxM0QxLCAweDYxQzMsIDB4MkQ1RiwgMHg2MUM1LCAweDJCNDUsDQorICAgIDB4NjFDNiwgMHgyQjQ3LCAweDYxQzcsIDB4MTNEMiwgMHg2MUM4LCAweDEyQjYsIDB4NjFDOSwgMHgxM0QwLA0KKyAgICAweDYxQ0EsIDB4MTJCNSwgMHg2MUNCLCAweDEzRDQsIDB4NjFDQywgMHgyQjQ5LCAweDYxQ0QsIDB4MTJCMiwNCisgICAgMHg2MUQ2LCAweDJGMjYsIDB4NjFEOCwgMHgyRjFFLCAweDYxREUsIDB4MkQ2NywgMHg2MURGLCAweDJGMUYsDQorICAgIDB4NjFFMCwgMHgyRDYzLCAweDYxRTMsIDB4MTREMCwgMHg2MUU0LCAweDJENjUsIDB4NjFFNSwgMHgyRDY0LA0KKyAgICAweDYxRTYsIDB4MTNEMywgMHg2MUU3LCAweDJENjIsIDB4NjFFOCwgMHgyRDY2LCAweDYxRTksIDB4MkYyNywNCisgICAgMHg2MUVBLCAweDJGMjMsIDB4NjFFQiwgMHgyRjI1LCAweDYxRUQsIDB4MkYyMCwgMHg2MUVFLCAweDJGMjEsDQorICAgIDB4NjFGMCwgMHgyRjI0LCAweDYxRjEsIDB4MkYyMiwgMHg2MUYyLCAweDE1N0UsIDB4NjFGNSwgMHgxNTgxLA0KKyAgICAweDYxRjYsIDB4MTU4MCwgMHg2MUY3LCAweDE1N0YsIDB4NjFGOCwgMHgxNjE0LCAweDYxRjksIDB4MzFEMywNCisgICAgMHg2MUZBLCAweDE2MTUsIDB4NjFGQiwgMHgzMDhGLCAweDYxRkMsIDB4MTY3MCwgMHg2MUZELCAweDMyRDEsDQorICAgIDB4NjFGRSwgMHgxNjcxLCAweDYxRkYsIDB4MTZDNCwgMHg2MjAwLCAweDE2RjgsIDB4NjIwMSwgMHgzNDE3LA0KKyAgICAweDYyMDMsIDB4MzQxOCwgMHg2MjA0LCAweDM0MTksIDB4NjIwNywgMHgzNTMzLCAweDYyMDgsIDB4MDJEMSwNCisgICAgMHg2MjA5LCAweDE3QTgsIDB4NjIwQSwgMHgwMzQxLCAweDYyMEMsIDB4MDNEMSwgMHg2MjBELCAweDAzRDIsDQorICAgIDB4NjIwRSwgMHgwM0QwLCAweDYyMTAsIDB4MDNEMywgMHg2MjExLCAweDA0QTIsIDB4NjIxMiwgMHgwNEExLA0KKyAgICAweDYyMTQsIDB4MTk5MSwgMHg2MjE1LCAweDA1RDEsIDB4NjIxNiwgMHgwNUQwLCAweDYyMTksIDB4MUNBMCwNCisgICAgMHg2MjFBLCAweDBBOTcsIDB4NjIxQiwgMHgwQTk4LCAweDYyMUYsIDB4MEM1OCwgMHg2MjIwLCAweDIzRTEsDQorICAgIDB4NjIyMSwgMHgwRTFBLCAweDYyMjIsIDB4MEUxQiwgMHg2MjIzLCAweDIzRTMsIDB4NjIyNCwgMHgyM0U1LA0KKyAgICAweDYyMjUsIDB4MjNFNCwgMHg2MjI3LCAweDI2OTcsIDB4NjIyOSwgMHgyNjk2LCAweDYyMkEsIDB4MEZEQSwNCisgICAgMHg2MjJCLCAweDI2OTgsIDB4NjIyRCwgMHgyOEUwLCAweDYyMkUsIDB4MTE1OCwgMHg2MjMwLCAweDEyQjcsDQorICAgIDB4NjIzMiwgMHgxM0Q1LCAweDYyMzMsIDB4MTREMSwgMHg2MjM0LCAweDEzRDYsIDB4NjIzNiwgMHgwMkQyLA0KKyAgICAweDYyM0EsIDB4MTg4RCwgMHg2MjNELCAweDE5OTIsIDB4NjIzRSwgMHgwNUQzLCAweDYyM0YsIDB4MDVEMiwNCisgICAgMHg2MjQwLCAweDA1RDQsIDB4NjI0MSwgMHgwNzJGLCAweDYyNDIsIDB4MUFFQywgMHg2MjQzLCAweDFBRUQsDQorICAgIDB4NjI0NiwgMHgxQ0ExLCAweDYyNDcsIDB4MDhDMiwgMHg2MjQ4LCAweDBBOTksIDB4NjI0OSwgMHgwQzU5LA0KKyAgICAweDYyNEEsIDB4MjE0QiwgMHg2MjRCLCAweDAyRDMsIDB4NjI0RCwgMHgwMjkxLCAweDYyNEUsIDB4MDJENCwNCisgICAgMHg2MjUwLCAweDE3QTksIDB4NjI1MSwgMHgwMzQ1LCAweDYyNTIsIDB4MDM0NCwgMHg2MjUzLCAweDAzNDIsDQorICAgIDB4NjI1NCwgMHgwMzQzLCAweDYyNTgsIDB4MDNENiwgMHg2MjU5LCAweDE3RjIsIDB4NjI1QSwgMHgxN0Y0LA0KKyAgICAweDYyNUIsIDB4MDNENSwgMHg2MjVDLCAweDE3RUMsIDB4NjI1RSwgMHgxN0VELCAweDYyNjAsIDB4MTdGMywNCisgICAgMHg2MjYxLCAweDE3RUYsIDB4NjI2MiwgMHgxN0YxLCAweDYyNjMsIDB4MDNENCwgMHg2MjY0LCAweDE3RUUsDQorICAgIDB4NjI2NSwgMHgxN0Y1LCAweDYyNjYsIDB4MTdGMCwgMHg2MjZELCAweDA0QTksIDB4NjI2RSwgMHgwNEIyLA0KKyAgICAweDYyNkYsIDB4MDRCMCwgMHg2MjcwLCAweDE4OTcsIDB4NjI3MSwgMHgxODk0LCAweDYyNzIsIDB4MTg5QywNCisgICAgMHg2MjczLCAweDA0QUUsIDB4NjI3NCwgMHgxODlELCAweDYyNzYsIDB4MDRBNywgMHg2Mjc3LCAweDE4OUEsDQorICAgIDB4NjI3OSwgMHgwNEFELCAweDYyN0EsIDB4MTg5NiwgMHg2MjdCLCAweDE4OTUsIDB4NjI3QywgMHgwNEFCLA0KKyAgICAweDYyN0QsIDB4MTg5QiwgMHg2MjdFLCAweDA0QUMsIDB4NjI3RiwgMHgwNUQ1LCAweDYyODAsIDB4MDRBNiwNCisgICAgMHg2MjgxLCAweDE4OTgsIDB4NjI4MywgMHgxODhFLCAweDYyODQsIDB4MDRBMywgMHg2Mjg2LCAweDA0QjYsDQorICAgIDB4NjI4NywgMHgxODkzLCAweDYyODgsIDB4MTg5OSwgMHg2Mjg5LCAweDA0QTgsIDB4NjI4QSwgMHgwNEFBLA0KKyAgICAweDYyOEMsIDB4MTg4RiwgMHg2MjhFLCAweDE4OTAsIDB4NjI4RiwgMHgxODkxLCAweDYyOTEsIDB4MDRCNSwNCisgICAgMHg2MjkyLCAweDA0QUYsIDB4NjI5MywgMHgwNEI0LCAweDYyOTQsIDB4MTg5MiwgMHg2Mjk1LCAweDA0QjMsDQorICAgIDB4NjI5NiwgMHgwNEE1LCAweDYyOTcsIDB4MDRBNCwgMHg2Mjk4LCAweDA0QjEsIDB4NjJBOCwgMHgwNUUzLA0KKyAgICAweDYyQTksIDB4MTk5RSwgMHg2MkFBLCAweDE5OTcsIDB4NjJBQiwgMHgwNURFLCAweDYyQUMsIDB4MDVGMSwNCisgICAgMHg2MkFELCAweDE5OTMsIDB4NjJBRSwgMHgxOTlBLCAweDYyQUYsIDB4MTk5QywgMHg2MkIwLCAweDE5OUYsDQorICAgIDB4NjJCMSwgMHgwNUVDLCAweDYyQjMsIDB4MTk5QiwgMHg2MkI0LCAweDE5OTQsIDB4NjJCNSwgMHgwNUVBLA0KKyAgICAweDYyQjYsIDB4MTk5OCwgMHg2MkI4LCAweDE5QTAsIDB4NjJCOSwgMHgwNURCLCAweDYyQkIsIDB4MTk5RCwNCisgICAgMHg2MkJDLCAweDA1RTUsIDB4NjJCRCwgMHgwNUU0LCAweDYyQkUsIDB4MTk5NiwgMHg2MkJGLCAweDA1RDksDQorICAgIDB4NjJDMiwgMHgwNURBLCAweDYyQzQsIDB4MDVEOCwgMHg2MkM2LCAweDA1RjAsIDB4NjJDNywgMHgwNUU4LA0KKyAgICAweDYyQzgsIDB4MDVFMiwgMHg2MkM5LCAweDA1RDYsIDB4NjJDQSwgMHgxOTk5LCAweDYyQ0IsIDB4MDVFMSwNCisgICAgMHg2MkNDLCAweDA1RDcsIDB4NjJDRCwgMHgwNUU5LCAweDYyQ0UsIDB4MDVGMiwgMHg2MkNGLCAweDFBRUUsDQorICAgIDB4NjJEMCwgMHgwNUU2LCAweDYyRDEsIDB4MTk5NSwgMHg2MkQyLCAweDA1REMsIDB4NjJEMywgMHgwNURGLA0KKyAgICAweDYyRDQsIDB4MDVFMCwgMHg2MkQ2LCAweDA1RUUsIDB4NjJENywgMHgwNUVGLCAweDYyRDgsIDB4MDVFRCwNCisgICAgMHg2MkQ5LCAweDA1RTcsIDB4NjJEQSwgMHgwNUVCLCAweDYyREIsIDB4MDVERCwgMHg2MkRDLCAweDA3MzAsDQorICAgIDB4NjJFQiwgMHgxQUY0LCAweDYyRUMsIDB4MDczQywgMHg2MkVELCAweDA3MzQsIDB4NjJFRSwgMHgwNzM2LA0KKyAgICAweDYyRUYsIDB4MDczQiwgMHg2MkYwLCAweDFCMDAsIDB4NjJGMSwgMHgwNzM5LCAweDYyRjIsIDB4MUNBMiwNCisgICAgMHg2MkYzLCAweDA4QzMsIDB4NjJGNCwgMHgwNzNFLCAweDYyRjUsIDB4MUFGMSwgMHg2MkY2LCAweDFBRjksDQorICAgIDB4NjJGNywgMHgwNzNBLCAweDYyRjgsIDB4MUFGOCwgMHg2MkY5LCAweDFBRjUsIDB4NjJGQSwgMHgxQUZELA0KKyAgICAweDYyRkIsIDB4MUFGRiwgMHg2MkZDLCAweDA3MzMsIDB4NjJGRCwgMHgwNzM3LCAweDYyRkUsIDB4MDczRCwNCisgICAgMHg2MkZGLCAweDA4QzUsIDB4NjMwMCwgMHgxQUZBLCAweDYzMDEsIDB4MDczNSwgMHg2MzAyLCAweDA3NDAsDQorICAgIDB4NjMwMywgMHgxQUYzLCAweDYzMDcsIDB4MDczOCwgMHg2MzA4LCAweDA4QzQsIDB4NjMwOSwgMHgwNzMyLA0KKyAgICAweDYzMEIsIDB4MUFGMCwgMHg2MzBDLCAweDFBRjcsIDB4NjMwRCwgMHgxQUVGLCAweDYzMEUsIDB4MUFGMiwNCisgICAgMHg2MzBGLCAweDFBRjYsIDB4NjMxMCwgMHgxQ0EzLCAweDYzMTEsIDB4MDczRiwgMHg2MzEzLCAweDFBRkIsDQorICAgIDB4NjMxNCwgMHgxQUZDLCAweDYzMTUsIDB4MUFGRSwgMHg2MzE2LCAweDA3MzEsIDB4NjMyOCwgMHgwOEQzLA0KKyAgICAweDYzMjksIDB4MUNBRiwgMHg2MzJBLCAweDA4RDEsIDB4NjMyQiwgMHgwOEQyLCAweDYzMkMsIDB4MUNBNSwNCisgICAgMHg2MzJELCAweDFDQjUsIDB4NjMyRiwgMHgwOEM4LCAweDYzMzIsIDB4MUVFRCwgMHg2MzMzLCAweDFDQjcsDQorICAgIDB4NjMzNCwgMHgxQ0IxLCAweDYzMzYsIDB4MUNBOCwgMHg2MzM4LCAweDFDQkEsIDB4NjMzOSwgMHgxQ0FCLA0KKyAgICAweDYzM0EsIDB4MDhDRSwgMHg2MzNCLCAweDFGMDQsIDB4NjMzQywgMHgxQ0FFLCAweDYzM0QsIDB4MDhEMCwNCisgICAgMHg2MzNFLCAweDA4QzcsIDB4NjM0MCwgMHgxQ0JDLCAweDYzNDEsIDB4MUNCMCwgMHg2MzQyLCAweDA4Q0EsDQorICAgIDB4NjM0MywgMHgxQ0E5LCAweDYzNDQsIDB4MUNBNiwgMHg2MzQ1LCAweDFDQTcsIDB4NjM0NiwgMHgwOENCLA0KKyAgICAweDYzNDcsIDB4MUNCNiwgMHg2MzQ4LCAweDFDQkQsIDB4NjM0OSwgMHgwOENELCAweDYzNEEsIDB4MUNBRCwNCisgICAgMHg2MzRCLCAweDFDQUMsIDB4NjM0QywgMHgwOEQ1LCAweDYzNEQsIDB4MDhENCwgMHg2MzRFLCAweDA4QzYsDQorICAgIDB4NjM0RiwgMHgwOENDLCAweDYzNTAsIDB4MDhDRiwgMHg2MzUxLCAweDFDQjksIDB4NjM1NCwgMHgxQ0IzLA0KKyAgICAweDYzNTUsIDB4MDhDOSwgMHg2MzU2LCAweDFDQTQsIDB4NjM1NywgMHgxQ0JCLCAweDYzNTgsIDB4MUNCMiwNCisgICAgMHg2MzU5LCAweDFDQjQsIDB4NjM1QSwgMHgxQ0I4LCAweDYzNjUsIDB4MUVFRSwgMHg2MzY3LCAweDBBQTEsDQorICAgIDB4NjM2OCwgMHgwQUI1LCAweDYzNjksIDB4MEFCNCwgMHg2MzZCLCAweDBBQTksIDB4NjM2RCwgMHgxRjAwLA0KKyAgICAweDYzNkUsIDB4MUVGQywgMHg2MzZGLCAweDFFRjksIDB4NjM3MCwgMHgxRjBCLCAweDYzNzEsIDB4MEFBNCwNCisgICAgMHg2MzcyLCAweDBBOUMsIDB4NjM3NSwgMHgxRUZFLCAweDYzNzYsIDB4MEM2OSwgMHg2Mzc3LCAweDBBQTAsDQorICAgIDB4NjM3OCwgMHgxRjA2LCAweDYzN0EsIDB4MEFCNiwgMHg2MzdCLCAweDBBQjMsIDB4NjM3QywgMHgxRjAyLA0KKyAgICAweDYzN0QsIDB4MUVGMSwgMHg2MzgwLCAweDBBQjIsIDB4NjM4MSwgMHgxRjA4LCAweDYzODIsIDB4MUVGMCwNCisgICAgMHg2MzgzLCAweDBBQTcsIDB4NjM4NCwgMHgwQUFCLCAweDYzODUsIDB4MUYwNywgMHg2Mzg3LCAweDFFRkEsDQorICAgIDB4NjM4OCwgMHgwQUFDLCAweDYzODksIDB4MEFBNiwgMHg2MzhBLCAweDFFRUYsIDB4NjM4QywgMHgwQzVCLA0KKyAgICAweDYzOEQsIDB4MUYwQSwgMHg2MzhFLCAweDFFRjgsIDB4NjM4RiwgMHgwQUIxLCAweDYzOTAsIDB4MUVGQiwNCisgICAgMHg2MzkxLCAweDFGMDksIDB4NjM5MiwgMHgwQUIwLCAweDYzOTQsIDB4MjE0QywgMHg2Mzk2LCAweDBBOUQsDQorICAgIDB4NjM5NywgMHgxRUY2LCAweDYzOTgsIDB4MEFBMiwgMHg2Mzk5LCAweDBBQUQsIDB4NjM5QiwgMHgwQUE4LA0KKyAgICAweDYzOUMsIDB4MUVGRiwgMHg2MzlELCAweDFFRjUsIDB4NjM5RSwgMHgxRUYzLCAweDYzOUYsIDB4MUYwNSwNCisgICAgMHg2M0EwLCAweDBBOUEsIDB4NjNBMSwgMHgwQUFFLCAweDYzQTIsIDB4MEE5RSwgMHg2M0EzLCAweDBDNUEsDQorICAgIDB4NjNBNCwgMHgxRjAzLCAweDYzQTUsIDB4MEE5RiwgMHg2M0E3LCAweDBBOUIsIDB4NjNBOCwgMHgwQUFBLA0KKyAgICAweDYzQTksIDB4MEFBNSwgMHg2M0FBLCAweDBBQTMsIDB4NjNBQiwgMHgxRUY3LCAweDYzQUMsIDB4MEFBRiwNCisgICAgMHg2M0FELCAweDFFRjQsIDB4NjNBRSwgMHgxRjAxLCAweDYzQUYsIDB4MUVGRCwgMHg2M0IwLCAweDIxNEUsDQorICAgIDB4NjNCMSwgMHgyMTRELCAweDYzQkQsIDB4MUVGMiwgMHg2M0JFLCAweDIxNUUsIDB4NjNDMCwgMHgwQzVELA0KKyAgICAweDYzQzIsIDB4MjE2NCwgMHg2M0MzLCAweDIxNTMsIDB4NjNDNCwgMHgyMTYxLCAweDYzQzUsIDB4MjNFNiwNCisgICAgMHg2M0M2LCAweDBDNjAsIDB4NjNDNywgMHgyMTY1LCAweDYzQzgsIDB4MjE2OCwgMHg2M0M5LCAweDBDNUYsDQorICAgIDB4NjNDQSwgMHgyMTU2LCAweDYzQ0IsIDB4MjE2NywgMHg2M0NDLCAweDIxNjYsIDB4NjNDRCwgMHgwQzYxLA0KKyAgICAweDYzQ0UsIDB4MjE0RiwgMHg2M0NGLCAweDBDNUMsIDB4NjNEMCwgMHgwQzY0LCAweDYzRDIsIDB4MEM2MiwNCisgICAgMHg2M0QzLCAweDIxNjMsIDB4NjNENSwgMHgyMTU5LCAweDYzRDYsIDB4MEM2NiwgMHg2M0Q3LCAweDIxNkEsDQorICAgIDB4NjNEOCwgMHgyMTYyLCAweDYzRDksIDB4MjE2QiwgMHg2M0RBLCAweDBDNkUsIDB4NjNEQiwgMHgwQzZDLA0KKyAgICAweDYzREMsIDB4MjE2MCwgMHg2M0RELCAweDIxNUYsIDB4NjNERiwgMHgyMTVELCAweDYzRTAsIDB4MjE1NywNCisgICAgMHg2M0UxLCAweDBDNjUsIDB4NjNFMywgMHgwQzYzLCAweDYzRTQsIDB4MUNBQSwgMHg2M0U1LCAweDIxNTAsDQorICAgIDB4NjNFNywgMHgyNDA0LCAweDYzRTgsIDB4MjE1MSwgMHg2M0U5LCAweDBDNUUsIDB4NjNFQSwgMHgwQzZCLA0KKyAgICAweDYzRUIsIDB4MjNFOCwgMHg2M0VELCAweDBDNjcsIDB4NjNFRSwgMHgwQzY4LCAweDYzRUYsIDB4MjE1MiwNCisgICAgMHg2M0YwLCAweDIxNjksIDB4NjNGMSwgMHgyM0U3LCAweDYzRjIsIDB4MjE1QSwgMHg2M0YzLCAweDIxNTUsDQorICAgIDB4NjNGNCwgMHgwQzZBLCAweDYzRjUsIDB4MjE1QiwgMHg2M0Y2LCAweDIxNTgsIDB4NjNGOSwgMHgwQzZGLA0KKyAgICAweDY0MDYsIDB4MEUyQSwgMHg2NDA5LCAweDIzRUIsIDB4NjQwQSwgMHgyM0ZFLCAweDY0MEIsIDB4MjQwMywNCisgICAgMHg2NDBDLCAweDIzRjcsIDB4NjQwRCwgMHgwRTI2LCAweDY0MEUsIDB4MjQwOCwgMHg2NDBGLCAweDBFMjMsDQorICAgIDB4NjQxMCwgMHgyM0U5LCAweDY0MTIsIDB4MjNFQSwgMHg2NDEzLCAweDBFMUMsIDB4NjQxNCwgMHgwRTI1LA0KKyAgICAweDY0MTUsIDB4MjNGMSwgMHg2NDE2LCAweDBFMjgsIDB4NjQxNywgMHgwRTI5LCAweDY0MTgsIDB4MjNGMiwNCisgICAgMHg2NDFBLCAweDIzRkYsIDB4NjQxQiwgMHgyNDA1LCAweDY0MUMsIDB4MEUyNCwgMHg2NDFFLCAweDBFMUUsDQorICAgIDB4NjQxRiwgMHgyM0YwLCAweDY0MjAsIDB4MjNFQywgMHg2NDIxLCAweDI0MDcsIDB4NjQyMiwgMHgyM0Y1LA0KKyAgICAweDY0MjMsIDB4MjNGNiwgMHg2NDI0LCAweDIzRUQsIDB4NjQyNSwgMHgyNDAxLCAweDY0MjYsIDB4MjNGOCwNCisgICAgMHg2NDI3LCAweDI0MDIsIDB4NjQyOCwgMHgyM0ZBLCAweDY0MkEsIDB4MEUxRiwgMHg2NDJCLCAweDI2OTksDQorICAgIDB4NjQyQywgMHgwRTIyLCAweDY0MkQsIDB4MEUyMCwgMHg2NDJFLCAweDI0MDYsIDB4NjQyRiwgMHgyM0ZELA0KKyAgICAweDY0MzAsIDB4MjNGOSwgMHg2NDMzLCAweDIzRUUsIDB4NjQzNCwgMHgwRkU0LCAweDY0MzUsIDB4MjNGQywNCisgICAgMHg2NDM2LCAweDBFMjcsIDB4NjQzNywgMHgyM0Y0LCAweDY0MzksIDB4MjNGMywgMHg2NDNELCAweDBFMjEsDQorICAgIDB4NjQzRSwgMHgwRTFELCAweDY0M0YsIDB4MjZBRSwgMHg2NDQwLCAweDI0MDAsIDB4NjQ0MSwgMHgyM0ZCLA0KKyAgICAweDY0NDMsIDB4MjNFRiwgMHg2NDRCLCAweDI2QTksIDB4NjQ0RCwgMHgyNjlBLCAweDY0NEUsIDB4MjZBNSwNCisgICAgMHg2NDUwLCAweDI2QUMsIDB4NjQ1MSwgMHgwRkUyLCAweDY0NTIsIDB4MEM2RCwgMHg2NDUzLCAweDI2QUEsDQorICAgIDB4NjQ1NCwgMHgwRkRELCAweDY0NTgsIDB4MEZEQywgMHg2NDU5LCAweDI2QjEsIDB4NjQ1QiwgMHgyNjlCLA0KKyAgICAweDY0NUMsIDB4MjZBOCwgMHg2NDVELCAweDI2OUMsIDB4NjQ1RSwgMHgyNkE3LCAweDY0NUYsIDB4MEZFMCwNCisgICAgMHg2NDYwLCAweDI2QUIsIDB4NjQ2MSwgMHgyMTVDLCAweDY0NjUsIDB4MjZCMiwgMHg2NDY2LCAweDI2QTMsDQorICAgIDB4NjQ2NywgMHgwRkUzLCAweDY0NjgsIDB4MjhFRSwgMHg2NDY5LCAweDExNTksIDB4NjQ2QiwgMHgyNkIwLA0KKyAgICAweDY0NkMsIDB4MjZBRiwgMHg2NDZELCAweDBGRTUsIDB4NjQ2RSwgMHgyOEUxLCAweDY0NkYsIDB4MTE1QSwNCisgICAgMHg2NDcwLCAweDI4RTIsIDB4NjQ3MiwgMHgyNjlGLCAweDY0NzMsIDB4MjZBMCwgMHg2NDc0LCAweDI2OUQsDQorICAgIDB4NjQ3NSwgMHgyNkEyLCAweDY0NzYsIDB4MjY5RSwgMHg2NDc3LCAweDI2QjMsIDB4NjQ3OCwgMHgwRkRGLA0KKyAgICAweDY0NzksIDB4MTE1QiwgMHg2NDdBLCAweDBGRTEsIDB4NjQ3QiwgMHgwRkU2LCAweDY0N0QsIDB4MjZBMSwNCisgICAgMHg2NDdGLCAweDI2QUQsIDB4NjQ4MiwgMHgyNkE2LCAweDY0ODUsIDB4MjhFNSwgMHg2NDg3LCAweDBGREIsDQorICAgIDB4NjQ4OCwgMHgxMTVFLCAweDY0ODksIDB4MkI1NCwgMHg2NDhBLCAweDI4RUEsIDB4NjQ4QiwgMHgyOEU5LA0KKyAgICAweDY0OEMsIDB4MjhFQiwgMHg2NDhGLCAweDI4RTgsIDB4NjQ5MCwgMHgxMTVGLCAweDY0OTIsIDB4MTE2NSwNCisgICAgMHg2NDkzLCAweDExNjIsIDB4NjQ5NSwgMHgxMTYzLCAweDY0OTYsIDB4MjhFMywgMHg2NDk3LCAweDI4RTYsDQorICAgIDB4NjQ5OCwgMHgyOEYwLCAweDY0OTksIDB4MTE2QiwgMHg2NDlBLCAweDExNjksIDB4NjQ5QywgMHgyOEU3LA0KKyAgICAweDY0OUQsIDB4MjE1NCwgMHg2NDlFLCAweDExNUMsIDB4NjQ5RiwgMHgyOEVELCAweDY0QTAsIDB4MjhFNCwNCisgICAgMHg2NEEyLCAweDExNkMsIDB4NjRBMywgMHgyOEVDLCAweDY0QTQsIDB4MEZERSwgMHg2NEE1LCAweDExNjEsDQorICAgIDB4NjRBNiwgMHgyNkE0LCAweDY0QTksIDB4MTE2NCwgMHg2NEFCLCAweDExNjgsIDB4NjRBQywgMHgxMTZBLA0KKyAgICAweDY0QUQsIDB4MTE2NywgMHg2NEFFLCAweDExNjYsIDB4NjRCMCwgMHgxMTYwLCAweDY0QjEsIDB4MjhFRiwNCisgICAgMHg2NEIyLCAweDExNUQsIDB4NjRCMywgMHgxMTZELCAweDY0QkIsIDB4MTJCQiwgMHg2NEJDLCAweDEyQkMsDQorICAgIDB4NjRCRCwgMHgyQjUzLCAweDY0QkUsIDB4MTJDNSwgMHg2NEJGLCAweDEyQzIsIDB4NjRDMSwgMHgxMkI5LA0KKyAgICAweDY0QzIsIDB4MTJDMCwgMHg2NEMzLCAweDJCNTUsIDB4NjRDNCwgMHgxMkJFLCAweDY0QzUsIDB4MTJCOCwNCisgICAgMHg2NEM3LCAweDEyQkYsIDB4NjRDOSwgMHgyQjUyLCAweDY0Q0EsIDB4MTNEOCwgMHg2NENCLCAweDEyQkEsDQorICAgIDB4NjRDRCwgMHgxMkMxLCAweDY0Q0UsIDB4MTNENywgMHg2NENGLCAweDJCNTEsIDB4NjREMCwgMHgyQjUwLA0KKyAgICAweDY0RDIsIDB4MTJDMywgMHg2NEQ0LCAweDEyQzQsIDB4NjRENiwgMHgyQjRGLCAweDY0RDcsIDB4MkI0RSwNCisgICAgMHg2NEQ4LCAweDEzRDksIDB4NjREOSwgMHgyQjU4LCAweDY0REEsIDB4MTJCRCwgMHg2NERCLCAweDJCNTYsDQorICAgIDB4NjRFMCwgMHgxM0RBLCAweDY0RTIsIDB4MTNERiwgMHg2NEUzLCAweDJENkEsIDB4NjRFNCwgMHgyRDZDLA0KKyAgICAweDY0RTYsIDB4MTNEQywgMHg2NEU4LCAweDJENkQsIDB4NjRFOSwgMHgyRDY5LCAweDY0RUIsIDB4MkQ2QiwNCisgICAgMHg2NEVDLCAweDEzREQsIDB4NjRFRCwgMHgxM0UwLCAweDY0RUYsIDB4MkQ2OCwgMHg2NEYwLCAweDEzREIsDQorICAgIDB4NjRGMSwgMHgxM0RFLCAweDY0RjIsIDB4MTREMywgMHg2NEYzLCAweDJCNTcsIDB4NjRGNCwgMHgxNEQyLA0KKyAgICAweDY0RjcsIDB4MTREOCwgMHg2NEY4LCAweDJGMkIsIDB4NjRGQSwgMHgxNEQ2LCAweDY0RkIsIDB4MTRENywNCisgICAgMHg2NEZDLCAweDJGMkUsIDB4NjRGRCwgMHgyRjJBLCAweDY0RkUsIDB4MTRENCwgMHg2NEZGLCAweDJGMjgsDQorICAgIDB4NjUwMCwgMHgxNTgyLCAweDY1MDEsIDB4MkYyQywgMHg2NTAzLCAweDJGMkQsIDB4NjUwNCwgMHgyRjI5LA0KKyAgICAweDY1MDYsIDB4MTRENSwgMHg2NTA3LCAweDMwOTAsIDB4NjUwOSwgMHgzMDkzLCAweDY1MEMsIDB4MzA5NCwNCisgICAgMHg2NTBELCAweDMwOTIsIDB4NjUwRSwgMHgzMDk1LCAweDY1MEYsIDB4MTU4MywgMHg2NTEwLCAweDMwOTEsDQorICAgIDB4NjUxMywgMHgzMUQ3LCAweDY1MTQsIDB4MTYxNywgMHg2NTE1LCAweDMxRDYsIDB4NjUxNiwgMHgzMUQ1LA0KKyAgICAweDY1MTcsIDB4MzFENCwgMHg2NTE4LCAweDE2MTYsIDB4NjUxOSwgMHgxNjE4LCAweDY1MUIsIDB4MzJEMiwNCisgICAgMHg2NTFDLCAweDE2NzMsIDB4NjUxRCwgMHgxNjcyLCAweDY1MjAsIDB4MzM4MiwgMHg2NTIxLCAweDMzODEsDQorICAgIDB4NjUyMiwgMHgzMzg0LCAweDY1MjMsIDB4MTZGOSwgMHg2NTI0LCAweDE2QzUsIDB4NjUyNSwgMHgzNDFCLA0KKyAgICAweDY1MjYsIDB4MzM4MywgMHg2NTI5LCAweDM0MUEsIDB4NjUyQSwgMHgxNkZCLCAweDY1MkIsIDB4MTZGQSwNCisgICAgMHg2NTJDLCAweDE3MjEsIDB4NjUyRCwgMHgzNDg0LCAweDY1MkUsIDB4MzRDQSwgMHg2NTJGLCAweDAyRDUsDQorICAgIDB4NjUzMiwgMHgyMTZDLCAweDY1MzMsIDB4MkI1OSwgMHg2NTM0LCAweDAyMkMsIDB4NjUzNiwgMHgwM0Q3LA0KKyAgICAweDY1MzcsIDB4MTdGNiwgMHg2NTM4LCAweDA0QjksIDB4NjUzOSwgMHgwNEI3LCAweDY1M0IsIDB4MDRCOCwNCisgICAgMHg2NTNELCAweDE5QTEsIDB4NjUzRSwgMHgwNUYzLCAweDY1M0YsIDB4MDc0MSwgMHg2NTQxLCAweDFCMDEsDQorICAgIDB4NjU0MywgMHgxQjAyLCAweDY1NDUsIDB4MDc0MiwgMHg2NTQ2LCAweDFDQkYsIDB4NjU0OCwgMHgwOEQ2LA0KKyAgICAweDY1NDksIDB4MDhENywgMHg2NTRBLCAweDFDQkUsIDB4NjU0RiwgMHgwQUJELCAweDY1NTEsIDB4MEFCOSwNCisgICAgMHg2NTUzLCAweDFGMEMsIDB4NjU1NCwgMHgwQUMwLCAweDY1NTUsIDB4MEFCRiwgMHg2NTU2LCAweDBBQjgsDQorICAgIDB4NjU1NywgMHgwQUJCLCAweDY1NTgsIDB4MEFCRSwgMHg2NTU5LCAweDBBQkEsIDB4NjU1QywgMHgyMTcwLA0KKyAgICAweDY1NUQsIDB4MEFCNywgMHg2NTVFLCAweDBDNzAsIDB4NjU2MiwgMHgwQzcyLCAweDY1NjMsIDB4MEM3MywNCisgICAgMHg2NTY0LCAweDIxNkYsIDB4NjU2NSwgMHgyMTcyLCAweDY1NjYsIDB4MEM3MSwgMHg2NTY3LCAweDIxNkQsDQorICAgIDB4NjU2OCwgMHgyMTcxLCAweDY1NkEsIDB4MjE2RSwgMHg2NTZDLCAweDBFMkIsIDB4NjU2RiwgMHgyNDA5LA0KKyAgICAweDY1NzIsIDB4MEZFNywgMHg2NTczLCAweDI2QjQsIDB4NjU3NCwgMHgxMkM2LCAweDY1NzUsIDB4MTE2RSwNCisgICAgMHg2NTc2LCAweDI4RjEsIDB4NjU3NywgMHgxMTZGLCAweDY1NzgsIDB4MTE3MCwgMHg2NTc5LCAweDI4RjMsDQorICAgIDB4NjU3QSwgMHgyOEYyLCAweDY1N0IsIDB4MjhGNCwgMHg2NTdDLCAweDJCNUIsIDB4NjU3RiwgMHgyQjVBLA0KKyAgICAweDY1ODAsIDB4MkQ2RiwgMHg2NTgxLCAweDJENkUsIDB4NjU4MiwgMHgxM0UxLCAweDY1ODMsIDB4MTNFMiwNCisgICAgMHg2NTg0LCAweDMwOTYsIDB4NjU4NywgMHgwMkQ2LCAweDY1OEMsIDB4MjE3MywgMHg2NTkwLCAweDBDNzUsDQorICAgIDB4NjU5MSwgMHgwQzc0LCAweDY1OTIsIDB4MjQwQSwgMHg2NTk0LCAweDJGMkYsIDB4NjU5NSwgMHgxNjc0LA0KKyAgICAweDY1OTYsIDB4MzQxQywgMHg2NTk3LCAweDAyRDcsIDB4NjU5OSwgMHgwOEQ4LCAweDY1OUIsIDB4MEFDMiwNCisgICAgMHg2NTlDLCAweDBBQzEsIDB4NjU5RCwgMHgyMTc0LCAweDY1OUUsIDB4MjE3NSwgMHg2NTlGLCAweDBFMkMsDQorICAgIDB4NjVBMCwgMHgyNkI1LCAweDY1QTEsIDB4MEZFOCwgMHg2NUEyLCAweDJCNUMsIDB4NjVBNCwgMHgwMkQ4LA0KKyAgICAweDY1QTUsIDB4MDM0NiwgMHg2NUE3LCAweDA1RjQsIDB4NjVBOCwgMHgxOUEyLCAweDY1QUEsIDB4MUIwMywNCisgICAgMHg2NUFCLCAweDA3NDMsIDB4NjVBQywgMHgwQUMzLCAweDY1QUUsIDB4MjE3NiwgMHg2NUFGLCAweDBDNzYsDQorICAgIDB4NjVCMCwgMHgwRTJELCAweDY1QjIsIDB4MjhGNSwgMHg2NUIzLCAweDI4RjYsIDB4NjVCNiwgMHgyRDcwLA0KKyAgICAweDY1QjcsIDB4MTREOSwgMHg2NUI4LCAweDM0Q0IsIDB4NjVCOSwgMHgwMkQ5LCAweDY1QkIsIDB4MTlBMywNCisgICAgMHg2NUJDLCAweDA1RjUsIDB4NjVCRCwgMHgwNzQ0LCAweDY1QkYsIDB4MUIwNCwgMHg2NUMxLCAweDA4RDksDQorICAgIDB4NjVDMiwgMHgxQ0MzLCAweDY1QzMsIDB4MUNDMSwgMHg2NUM0LCAweDFDQzIsIDB4NjVDNSwgMHgwOERBLA0KKyAgICAweDY1QzYsIDB4MUNDMCwgMHg2NUNCLCAweDBBQzUsIDB4NjVDQywgMHgwQUM2LCAweDY1Q0QsIDB4MUYwRCwNCisgICAgMHg2NUNFLCAweDBBQzcsIDB4NjVDRiwgMHgwQUM0LCAweDY1RDAsIDB4MjE3NywgMHg2NUQyLCAweDIxNzgsDQorICAgIDB4NjVEMywgMHgyNDBCLCAweDY1RDYsIDB4MEZFQSwgMHg2NUQ3LCAweDBGRTksIDB4NjVEQSwgMHgyRDcxLA0KKyAgICAweDY1REIsIDB4MkYzMCwgMHg2NURELCAweDMwOTgsIDB4NjVERSwgMHgzMDk3LCAweDY1REYsIDB4MzFEOCwNCisgICAgMHg2NUUwLCAweDAyMkQsIDB4NjVFMSwgMHgxNzg5LCAweDY1RTIsIDB4MDc0NSwgMHg2NUU1LCAweDAyREEsDQorICAgIDB4NjVFNiwgMHgwMzQ3LCAweDY1RTgsIDB4MDNEOSwgMHg2NUU5LCAweDAzRDgsIDB4NjVFQywgMHgwM0RBLA0KKyAgICAweDY1RUQsIDB4MDNEQiwgMHg2NUVFLCAweDE3RjgsIDB4NjVFRiwgMHgxN0Y3LCAweDY1RjAsIDB4MTg5RSwNCisgICAgMHg2NUYxLCAweDA0QkEsIDB4NjVGMiwgMHgxOEExLCAweDY1RjMsIDB4MThBMCwgMHg2NUY0LCAweDE4OUYsDQorICAgIDB4NjVGNSwgMHgxOEEyLCAweDY1RkEsIDB4MDVGNiwgMHg2NUZCLCAweDE5QTksIDB4NjVGQywgMHgxOUE1LA0KKyAgICAweDY1RkQsIDB4MTlBRSwgMHg2NjAwLCAweDA1RkQsIDB4NjYwMiwgMHgwNUZCLCAweDY2MDMsIDB4MTlBQSwNCisgICAgMHg2NjA0LCAweDE5QTYsIDB4NjYwNSwgMHgxOUFELCAweDY2MDYsIDB4MDVGQSwgMHg2NjA3LCAweDA2MDEsDQorICAgIDB4NjYwOCwgMHgxOUE4LCAweDY2MDksIDB4MTlBNCwgMHg2NjBBLCAweDA2MDAsIDB4NjYwQiwgMHgxOUFCLA0KKyAgICAweDY2MEMsIDB4MDVGOSwgMHg2NjBELCAweDE5QUMsIDB4NjYwRSwgMHgwNUZDLCAweDY2MEYsIDB4MDVGRSwNCisgICAgMHg2NjEwLCAweDE5QjAsIDB4NjYxMSwgMHgxOUFGLCAweDY2MTIsIDB4MTlBNywgMHg2NjEzLCAweDA1RjgsDQorICAgIDB4NjYxNCwgMHgwNUY3LCAweDY2MTUsIDB4MDVGRiwgMHg2NjFDLCAweDFCMDksIDB4NjYxRCwgMHgxQjBGLA0KKyAgICAweDY2MUYsIDB4MDc0QiwgMHg2NjIwLCAweDA3NDgsIDB4NjYyMSwgMHgxQjA2LCAweDY2MjIsIDB4MUIwQiwNCisgICAgMHg2NjI0LCAweDA3NEUsIDB4NjYyNSwgMHgwNzQ2LCAweDY2MjYsIDB4MUIwQSwgMHg2NjI3LCAweDA3NDksDQorICAgIDB4NjYyOCwgMHgwNzRDLCAweDY2MkIsIDB4MUIwRCwgMHg2NjJELCAweDA3NDcsIDB4NjYyRSwgMHgxQjEyLA0KKyAgICAweDY2MkYsIDB4MDc0QSwgMHg2NjMxLCAweDA3NEQsIDB4NjYzMiwgMHgxQjA3LCAweDY2MzMsIDB4MUIwQywNCisgICAgMHg2NjM0LCAweDFCMTAsIDB4NjYzNSwgMHgxQjA4LCAweDY2MzYsIDB4MUIwNSwgMHg2NjM5LCAweDFCMTEsDQorICAgIDB4NjYzQSwgMHgxQjBFLCAweDY2NDEsIDB4MDhFMiwgMHg2NjQyLCAweDA4REIsIDB4NjY0MywgMHgwOERFLA0KKyAgICAweDY2NDUsIDB4MDhFMSwgMHg2NjQ3LCAweDFDQzYsIDB4NjY0OSwgMHgwOERDLCAweDY2NEEsIDB4MUNDNCwNCisgICAgMHg2NjRDLCAweDA4RTAsIDB4NjY0RiwgMHgwOERELCAweDY2NTEsIDB4MUNDNywgMHg2NjUyLCAweDA4REYsDQorICAgIDB4NjY1OSwgMHgxRjExLCAweDY2NUEsIDB4MEFDOSwgMHg2NjVCLCAweDFGMTAsIDB4NjY1QywgMHgxRjEyLA0KKyAgICAweDY2NUQsIDB4MEFDOCwgMHg2NjVFLCAweDBBQ0QsIDB4NjY1RiwgMHgxQ0M1LCAweDY2NjEsIDB4MUYwRiwNCisgICAgMHg2NjYyLCAweDFGMTMsIDB4NjY2NCwgMHgwQUNBLCAweDY2NjUsIDB4MUYwRSwgMHg2NjY2LCAweDBBQ0MsDQorICAgIDB4NjY2OCwgMHgwQUNCLCAweDY2NkEsIDB4MjE3RiwgMHg2NjZDLCAweDIxN0EsIDB4NjY2RSwgMHgwQzc3LA0KKyAgICAweDY2NkYsIDB4MEM3QiwgMHg2NjcwLCAweDBDNzgsIDB4NjY3MSwgMHgyMTdELCAweDY2NzIsIDB4MjE4MCwNCisgICAgMHg2Njc0LCAweDBDNzksIDB4NjY3NiwgMHgwQzdBLCAweDY2NzcsIDB4MEM3RiwgMHg2Njc4LCAweDI0MTQsDQorICAgIDB4NjY3OSwgMHgyMTdFLCAweDY2N0EsIDB4MEM3RCwgMHg2NjdCLCAweDIxN0IsIDB4NjY3QywgMHgyMTc5LA0KKyAgICAweDY2N0UsIDB4MEM3RSwgMHg2NjgwLCAweDIxN0MsIDB4NjY4NCwgMHgwRTMzLCAweDY2ODYsIDB4MjQwQywNCisgICAgMHg2Njg3LCAweDBFMzAsIDB4NjY4OCwgMHgwRTMxLCAweDY2ODksIDB4MEUyRiwgMHg2NjhBLCAweDI0MTEsDQorICAgIDB4NjY4QiwgMHgyNDEwLCAweDY2OEMsIDB4MjQwRCwgMHg2NjhELCAweDBFMzUsIDB4NjY5MCwgMHgyNDBGLA0KKyAgICAweDY2OTEsIDB4MEM3QywgMHg2Njk0LCAweDI0MTMsIDB4NjY5NSwgMHgyNDBFLCAweDY2OTYsIDB4MEUzMiwNCisgICAgMHg2Njk3LCAweDBFMkUsIDB4NjY5OCwgMHgwRTM0LCAweDY2OTksIDB4MjQxMiwgMHg2NjlELCAweDBGRUQsDQorICAgIDB4NjY5RiwgMHgyNkI4LCAweDY2QTAsIDB4MjZCNywgMHg2NkExLCAweDI2QjYsIDB4NjZBMiwgMHgwRkVCLA0KKyAgICAweDY2QTgsIDB4MEZFQywgMHg2NkE5LCAweDI4RjksIDB4NjZBQSwgMHgyOEZDLCAweDY2QUIsIDB4MTE3MiwNCisgICAgMHg2NkFFLCAweDExNzEsIDB4NjZBRiwgMHgyOEZELCAweDY2QjAsIDB4MjhGOCwgMHg2NkIxLCAweDExNzQsDQorICAgIDB4NjZCMiwgMHgyOEZBLCAweDY2QjQsIDB4MTE3MywgMHg2NkI1LCAweDI4RjcsIDB4NjZCNywgMHgyOEZCLA0KKyAgICAweDY2QjgsIDB4MTJDQywgMHg2NkI5LCAweDEyQzksIDB4NjZCQSwgMHgyQjY1LCAweDY2QkIsIDB4MkI2NCwNCisgICAgMHg2NkJELCAweDJCNjMsIDB4NjZCRSwgMHgyQjVFLCAweDY2QzAsIDB4MkI1RiwgMHg2NkM0LCAweDEyQ0EsDQorICAgIDB4NjZDNiwgMHgxMkM3LCAweDY2QzcsIDB4MTJDQiwgMHg2NkM4LCAweDJCNUQsIDB4NjZDOSwgMHgxMkM4LA0KKyAgICAweDY2Q0EsIDB4MkI2MCwgMHg2NkNCLCAweDJCNjEsIDB4NjZDQywgMHgyQjY2LCAweDY2Q0YsIDB4MkI2MiwNCisgICAgMHg2NkQyLCAweDJENzIsIDB4NjZENiwgMHgxM0U0LCAweDY2RDgsIDB4MkYzMywgMHg2NkQ5LCAweDEzRTMsDQorICAgIDB4NjZEQSwgMHgyRjMxLCAweDY2REIsIDB4MkYzMiwgMHg2NkRDLCAweDE0REEsIDB4NjZERCwgMHgxNTg1LA0KKyAgICAweDY2REUsIDB4MzA5OSwgMHg2NkUwLCAweDE1ODQsIDB4NjZFMywgMHgzMURBLCAweDY2RTQsIDB4MzFEQiwNCisgICAgMHg2NkU2LCAweDE2MTksIDB4NjZFOCwgMHgzMUQ5LCAweDY2RTksIDB4MTY3NSwgMHg2NkVCLCAweDM0MUQsDQorICAgIDB4NjZFQywgMHgxNkZDLCAweDY2RUQsIDB4MzQ4NSwgMHg2NkVFLCAweDM0ODYsIDB4NjZGMCwgMHgwMkRCLA0KKyAgICAweDY2RjIsIDB4MDNEQywgMHg2NkYzLCAweDAzREQsIDB4NjZGNCwgMHgwNEJCLCAweDY2RjYsIDB4MTlCMSwNCisgICAgMHg2NkY3LCAweDA3NEYsIDB4NjZGOCwgMHgwOEUzLCAweDY2RjksIDB4MEFDRSwgMHg2NkZDLCAweDBBMUYsDQorICAgIDB4NjZGRSwgMHgwQzgwLCAweDY2RkYsIDB4MEM4MSwgMHg2NzAwLCAweDBCRjAsIDB4NjcwMSwgMHgyMTgxLA0KKyAgICAweDY3MDMsIDB4MEUzNiwgMHg2NzA0LCAweDI2QkEsIDB4NjcwNSwgMHgyNkI5LCAweDY3MDgsIDB4MDJEQywNCisgICAgMHg2NzA5LCAweDAzREUsIDB4NjcwQSwgMHgxOUIyLCAweDY3MEIsIDB4MDYwMywgMHg2NzBELCAweDA2MDIsDQorICAgIDB4NjcwRiwgMHgxQjEzLCAweDY3MTAsIDB4MUIxNCwgMHg2NzEyLCAweDFDQzgsIDB4NjcxMywgMHgxQ0M5LA0KKyAgICAweDY3MTQsIDB4MDhFNCwgMHg2NzE1LCAweDA4RTUsIDB4NjcxNywgMHgwOEU2LCAweDY3MTgsIDB4MUYxNCwNCisgICAgMHg2NzFCLCAweDBBRDAsIDB4NjcxRCwgMHgwQzgzLCAweDY3MUYsIDB4MEM4MiwgMHg2NzIwLCAweDI0MTUsDQorICAgIDB4NjcyMSwgMHgyNTIyLCAweDY3MjIsIDB4MjZCQiwgMHg2NzIzLCAweDJCNjcsIDB4NjcyNiwgMHgxNERCLA0KKyAgICAweDY3MjcsIDB4MTYxQSwgMHg2NzI4LCAweDAyREQsIDB4NjcyQSwgMHgwMzRBLCAweDY3MkIsIDB4MDM0QiwNCisgICAgMHg2NzJDLCAweDAzNDksIDB4NjcyRCwgMHgwMzRDLCAweDY3MkUsIDB4MDM0OCwgMHg2NzMxLCAweDAzRTEsDQorICAgIDB4NjczMywgMHgxODAwLCAweDY3MzQsIDB4MDNFMCwgMHg2NzM1LCAweDAzRTIsIDB4NjczOCwgMHgxN0ZCLA0KKyAgICAweDY3MzksIDB4MTdGQSwgMHg2NzNBLCAweDE3RkQsIDB4NjczQiwgMHgxN0ZDLCAweDY3M0MsIDB4MTdGRiwNCisgICAgMHg2NzNELCAweDAzREYsIDB4NjczRSwgMHgxN0Y5LCAweDY3M0YsIDB4MTdGRSwgMHg2NzQ1LCAweDE4QTMsDQorICAgIDB4Njc0NiwgMHgwNEM1LCAweDY3NDcsIDB4MThBNCwgMHg2NzQ4LCAweDE4QTgsIDB4Njc0OSwgMHgwNEM0LA0KKyAgICAweDY3NEIsIDB4MThBQywgMHg2NzRDLCAweDE4QTcsIDB4Njc0RCwgMHgxOEFBLCAweDY3NEUsIDB4MDRCRCwNCisgICAgMHg2NzRGLCAweDA0QkUsIDB4Njc1MCwgMHgwNEJGLCAweDY3NTEsIDB4MDRDMCwgMHg2NzUzLCAweDA0QzcsDQorICAgIDB4Njc1NSwgMHgxOEE2LCAweDY3NTYsIDB4MDRDMiwgMHg2NzU3LCAweDA0QzgsIDB4Njc1OSwgMHgxOEE1LA0KKyAgICAweDY3NUEsIDB4MThBQiwgMHg2NzVDLCAweDA0QzEsIDB4Njc1RCwgMHgxOEE5LCAweDY3NUUsIDB4MDRDMywNCisgICAgMHg2NzVGLCAweDA0QkMsIDB4Njc2MCwgMHgwNEM2LCAweDY3NkEsIDB4MDYxOCwgMHg2NzZDLCAweDE5QjQsDQorICAgIDB4Njc2RCwgMHgwNjA0LCAweDY3NkYsIDB4MDYwRSwgMHg2NzcwLCAweDA2MEYsIDB4Njc3MSwgMHgwNjA3LA0KKyAgICAweDY3NzIsIDB4MDYxOSwgMHg2NzczLCAweDA2MDksIDB4Njc3NCwgMHgxOUJDLCAweDY3NzUsIDB4MDYxNCwNCisgICAgMHg2Nzc2LCAweDE5QjcsIDB4Njc3NywgMHgwNjBBLCAweDY3NzgsIDB4MTlDNiwgMHg2Nzc5LCAweDE5QzcsDQorICAgIDB4Njc3QSwgMHgxOUJGLCAweDY3N0IsIDB4MTlCOCwgMHg2NzdDLCAweDA2MTcsIDB4Njc3RCwgMHgxOUM0LA0KKyAgICAweDY3N0UsIDB4MDYxMiwgMHg2NzdGLCAweDA2MTAsIDB4Njc4MSwgMHgxOUM1LCAweDY3ODMsIDB4MTlDMywNCisgICAgMHg2Nzg0LCAweDE5QkIsIDB4Njc4NSwgMHgxOUIzLCAweDY3ODYsIDB4MTlCQSwgMHg2Nzg3LCAweDA2MEIsDQorICAgIDB4Njc4OSwgMHgwNjExLCAweDY3OEIsIDB4MDYwNSwgMHg2NzhDLCAweDE5QkUsIDB4Njc4RCwgMHgxOUJELA0KKyAgICAweDY3OEUsIDB4MTlCNSwgMHg2NzkwLCAweDA2MTMsIDB4Njc5MSwgMHgxOUMxLCAweDY3OTIsIDB4MTlCNiwNCisgICAgMHg2NzkzLCAweDA2MTYsIDB4Njc5NCwgMHgxOUM4LCAweDY3OTUsIDB4MDYwNiwgMHg2Nzk3LCAweDA2MEQsDQorICAgIDB4Njc5OCwgMHgxOUI5LCAweDY3OTksIDB4MTlDMiwgMHg2NzlBLCAweDA2MTUsIDB4Njc5QywgMHgwNjA4LA0KKyAgICAweDY3OUQsIDB4MDYwQywgMHg2NzlGLCAweDE5QzAsIDB4NjdBRSwgMHgxQjM0LCAweDY3QUYsIDB4MDc1NywNCisgICAgMHg2N0IwLCAweDA3NjQsIDB4NjdCMiwgMHgxQjJGLCAweDY3QjMsIDB4MUIyNSwgMHg2N0I0LCAweDA3NUQsDQorICAgIDB4NjdCNSwgMHgxQjIzLCAweDY3QjYsIDB4MDc1NiwgMHg2N0I3LCAweDFCMUUsIDB4NjdCOCwgMHgwNzYwLA0KKyAgICAweDY3QjksIDB4MUIyQiwgMHg2N0JBLCAweDFCMTgsIDB4NjdCQiwgMHgxQjFBLCAweDY3QzAsIDB4MUIxRCwNCisgICAgMHg2N0MxLCAweDFCMTUsIDB4NjdDMiwgMHgxQjJBLCAweDY3QzMsIDB4MUIzQSwgMHg2N0M0LCAweDA3NUIsDQorICAgIDB4NjdDNSwgMHgxQjFGLCAweDY3QzYsIDB4MUIzMSwgMHg2N0M4LCAweDFCMTcsIDB4NjdDOSwgMHgxQjM4LA0KKyAgICAweDY3Q0EsIDB4MUIzOSwgMHg2N0NCLCAweDFCM0MsIDB4NjdDQywgMHgxQjMzLCAweDY3Q0QsIDB4MUIyNCwNCisgICAgMHg2N0NFLCAweDFCMkMsIDB4NjdDRiwgMHgwNzYxLCAweDY3RDAsIDB4MDc1NCwgMHg2N0QxLCAweDA3NUMsDQorICAgIDB4NjdEMiwgMHgwNzY4LCAweDY3RDMsIDB4MDc1MSwgMHg2N0Q0LCAweDA3NTMsIDB4NjdEOCwgMHgxQjFDLA0KKyAgICAweDY3RDksIDB4MDc2NSwgMHg2N0RBLCAweDA3NUUsIDB4NjdEQiwgMHgxQjM2LCAweDY3REMsIDB4MUIxOSwNCisgICAgMHg2N0RELCAweDA3NjcsIDB4NjdERSwgMHgwNzYyLCAweDY3REYsIDB4MUIyMiwgMHg2N0UyLCAweDA3NjYsDQorICAgIDB4NjdFMywgMHgxQjI5LCAweDY3RTQsIDB4MUIyMSwgMHg2N0U1LCAweDA3NUYsIDB4NjdFNiwgMHgxQjM1LA0KKyAgICAweDY3RTcsIDB4MUIyRCwgMHg2N0U5LCAweDA3NTksIDB4NjdFQSwgMHgxQjNCLCAweDY3RUIsIDB4MUIyMCwNCisgICAgMHg2N0VDLCAweDA3NTUsIDB4NjdFRCwgMHgxQjMyLCAweDY3RUUsIDB4MUIyOCwgMHg2N0VGLCAweDA3NUEsDQorICAgIDB4NjdGMCwgMHgxQjJFLCAweDY3RjEsIDB4MDc1MiwgMHg2N0YyLCAweDFCMTYsIDB4NjdGMywgMHgwNzYzLA0KKyAgICAweDY3RjQsIDB4MDhGNSwgMHg2N0Y1LCAweDA3NTgsIDB4NjdGNiwgMHgxQjI3LCAweDY3RjcsIDB4MUIyNiwNCisgICAgMHg2N0Y4LCAweDFCMUIsIDB4NjdGQSwgMHgxQjM3LCAweDY3RkMsIDB4MUIzMCwgMHg2N0ZGLCAweDA3NTAsDQorICAgIDB4NjgxMiwgMHgxQ0RELCAweDY4MTMsIDB4MDhGQywgMHg2ODE0LCAweDFDREUsIDB4NjgxNiwgMHgxQ0QyLA0KKyAgICAweDY4MTcsIDB4MDhGMSwgMHg2ODE4LCAweDA4RkQsIDB4NjgxQSwgMHgxQ0NCLCAweDY4MUMsIDB4MUNENCwNCisgICAgMHg2ODFELCAweDFDREMsIDB4NjgxRiwgMHgxQ0NBLCAweDY4MjAsIDB4MUNFNSwgMHg2ODIxLCAweDA4RTcsDQorICAgIDB4NjgyNSwgMHgxQ0U0LCAweDY4MjYsIDB4MUNERiwgMHg2ODI4LCAweDFDRTAsIDB4NjgyOSwgMHgwOEVGLA0KKyAgICAweDY4MkEsIDB4MDhGQSwgMHg2ODJCLCAweDFDRDYsIDB4NjgyRCwgMHgxQ0Q3LCAweDY4MkUsIDB4MUNFMSwNCisgICAgMHg2ODJGLCAweDFDRDgsIDB4NjgzMSwgMHgxQ0QzLCAweDY4MzIsIDB4MUNDRCwgMHg2ODMzLCAweDFDQ0UsDQorICAgIDB4NjgzNCwgMHgxQ0RCLCAweDY4MzUsIDB4MUNENSwgMHg2ODM4LCAweDA4RTgsIDB4NjgzOSwgMHgwOEVDLA0KKyAgICAweDY4M0EsIDB4MUNFMywgMHg2ODNCLCAweDFDQ0YsIDB4NjgzQywgMHgwOEY4LCAweDY4M0QsIDB4MDhGNCwNCisgICAgMHg2ODQwLCAweDA4RjcsIDB4Njg0MSwgMHgwOEZFLCAweDY4NDIsIDB4MDhFRCwgMHg2ODQzLCAweDA4RjksDQorICAgIDB4Njg0NCwgMHgxQ0RBLCAweDY4NDUsIDB4MDhGQiwgMHg2ODQ2LCAweDA4RUEsIDB4Njg0OCwgMHgwOEU5LA0KKyAgICAweDY4NDksIDB4MUNDQywgMHg2ODRCLCAweDFDRDAsIDB4Njg0QywgMHgwOEYyLCAweDY4NEQsIDB4MUNFMiwNCisgICAgMHg2ODRFLCAweDFDRDksIDB4Njg0RiwgMHgxQ0QxLCAweDY4NTAsIDB4MDhGNiwgMHg2ODUxLCAweDA4RjMsDQorICAgIDB4Njg1MywgMHgwOEVCLCAweDY4NTQsIDB4MDhFRSwgMHg2ODZCLCAweDFGMjksIDB4Njg2RCwgMHgxRjE5LA0KKyAgICAweDY4NkUsIDB4MUYxQSwgMHg2ODZGLCAweDFGMUUsIDB4Njg3MSwgMHgxRjJELCAweDY4NzIsIDB4MUYyQSwNCisgICAgMHg2ODc0LCAweDFGMjMsIDB4Njg3NSwgMHgxRjIyLCAweDY4NzYsIDB4MEFENywgMHg2ODc3LCAweDFGMjYsDQorICAgIDB4Njg3OCwgMHgxRjM1LCAweDY4NzksIDB4MUYxNSwgMHg2ODdCLCAweDFGMzYsIDB4Njg3QywgMHgxRjI4LA0KKyAgICAweDY4N0QsIDB4MUYzQSwgMHg2ODdFLCAweDFGMkUsIDB4Njg3RiwgMHgwQUQ2LCAweDY4ODAsIDB4MUYyQywNCisgICAgMHg2ODgxLCAweDBBRDEsIDB4Njg4MiwgMHgwQUU2LCAweDY4ODMsIDB4MEFEQywgMHg2ODg1LCAweDBBRTAsDQorICAgIDB4Njg4NiwgMHgwQURGLCAweDY4ODcsIDB4MUYxNiwgMHg2ODg5LCAweDFGMzMsIDB4Njg4QSwgMHgxRjM5LA0KKyAgICAweDY4OEIsIDB4MUYzMSwgMHg2ODhDLCAweDFGMzgsIDB4Njg4RiwgMHgxRjI1LCAweDY4OTAsIDB4MUYxNywNCisgICAgMHg2ODkxLCAweDFGMzcsIDB4Njg5MiwgMHgxRjI3LCAweDY4OTMsIDB4MEFENCwgMHg2ODk0LCAweDBBRTEsDQorICAgIDB4Njg5NiwgMHgxRjMwLCAweDY4OTcsIDB4MEFEQSwgMHg2ODlCLCAweDFGMkYsIDB4Njg5QywgMHgxRjE4LA0KKyAgICAweDY4OUQsIDB4MEFFMiwgMHg2ODlGLCAweDBBRTQsIDB4NjhBMCwgMHgxRjMyLCAweDY4QTEsIDB4MEFFNSwNCisgICAgMHg2OEEyLCAweDBBRDMsIDB4NjhBMywgMHgxRjFGLCAweDY4QTQsIDB4MUYzNCwgMHg2OEE3LCAweDBBRDksDQorICAgIDB4NjhBOCwgMHgwQUUzLCAweDY4QTksIDB4MUYyMSwgMHg2OEFBLCAweDFGMkIsIDB4NjhBQiwgMHgxRjFDLA0KKyAgICAweDY4QUMsIDB4MUYyMCwgMHg2OEFELCAweDBBREUsIDB4NjhBRSwgMHgxRjFCLCAweDY4QUYsIDB4MEFEMiwNCisgICAgMHg2OEIwLCAweDBBREIsIDB4NjhCMSwgMHgwQUQ4LCAweDY4QjIsIDB4MUYyNCwgMHg2OEIzLCAweDA4RjAsDQorICAgIDB4NjhCNCwgMHgyMTk4LCAweDY4QjUsIDB4MEFENSwgMHg2OEM0LCAweDBBREQsIDB4NjhDNiwgMHgyMTlCLA0KKyAgICAweDY4QzcsIDB4MjFCMSwgMHg2OEM4LCAweDIxQTYsIDB4NjhDOSwgMHgwQzk3LCAweDY4Q0IsIDB4MEM5MiwNCisgICAgMHg2OENDLCAweDIxOTUsIDB4NjhDRCwgMHgwQzkzLCAweDY4Q0UsIDB4MjFBNSwgMHg2OEQwLCAweDIxOUUsDQorICAgIDB4NjhEMSwgMHgyMUFCLCAweDY4RDIsIDB4MEM4RiwgMHg2OEQzLCAweDIxODMsIDB4NjhENCwgMHgyMUFELA0KKyAgICAweDY4RDUsIDB4MEM4NSwgMHg2OEQ2LCAweDIxOEIsIDB4NjhENywgMHgwQzg4LCAweDY4RDgsIDB4MEM4NywNCisgICAgMHg2OERBLCAweDBDOTgsIDB4NjhEQywgMHgyMTg1LCAweDY4REQsIDB4MjFBNywgMHg2OERFLCAweDIxQTgsDQorICAgIDB4NjhERiwgMHgwQzhBLCAweDY4RTAsIDB4MEM4NiwgMHg2OEUxLCAweDIxOTMsIDB4NjhFMywgMHgwQzkxLA0KKyAgICAweDY4RTQsIDB4MjE4RSwgMHg2OEU2LCAweDIxQTksIDB4NjhFNywgMHgwQzhELCAweDY4RTgsIDB4MjFBMSwNCisgICAgMHg2OEU5LCAweDIxQUUsIDB4NjhFQSwgMHgyMTg4LCAweDY4RUIsIDB4MjE4RCwgMHg2OEVDLCAweDIxODcsDQorICAgIDB4NjhFRSwgMHgwQzhDLCAweDY4RUYsIDB4MjE5QSwgMHg2OEYwLCAweDI0MkIsIDB4NjhGMSwgMHgyMTg5LA0KKyAgICAweDY4RjIsIDB4MEM5MCwgMHg2OEYzLCAweDIxOTIsIDB4NjhGNCwgMHgyMUFBLCAweDY4RjUsIDB4MEM4QiwNCisgICAgMHg2OEY2LCAweDIxOEYsIDB4NjhGNywgMHgyMThDLCAweDY4RjgsIDB4MjE5RCwgMHg2OEY5LCAweDBDOEUsDQorICAgIDB4NjhGQSwgMHgwQzg0LCAweDY4RkIsIDB4MEM5QSwgMHg2OEZDLCAweDIxQTAsIDB4NjhGRCwgMHgyMTlGLA0KKyAgICAweDY5MDQsIDB4MjE4NCwgMHg2OTA1LCAweDBDODksIDB4NjkwNiwgMHgyMUFDLCAweDY5MDcsIDB4MjE5NCwNCisgICAgMHg2OTA4LCAweDIxOTYsIDB4NjkwQSwgMHgyMUEzLCAweDY5MEIsIDB4MjFBMiwgMHg2OTBDLCAweDIxODIsDQorICAgIDB4NjkwRCwgMHgwQzk0LCAweDY5MEUsIDB4MEM5NiwgMHg2OTBGLCAweDIxOEEsIDB4NjkxMCwgMHgyMTkxLA0KKyAgICAweDY5MTEsIDB4MjE5OSwgMHg2OTEyLCAweDBDOTUsIDB4NjkxMywgMHgyMTkwLCAweDY5MTQsIDB4MjE5QywNCisgICAgMHg2OTE1LCAweDIxQUYsIDB4NjkxNywgMHgyMUE0LCAweDY5MjUsIDB4MjFCMCwgMHg2OTJBLCAweDIxODYsDQorICAgIDB4NjkyRiwgMHgyNDNGLCAweDY5MzAsIDB4MEUzRSwgMHg2OTMyLCAweDI0M0QsIDB4NjkzMywgMHgyNDI4LA0KKyAgICAweDY5MzQsIDB4MjQyRCwgMHg2OTM1LCAweDI0MjYsIDB4NjkzNywgMHgyNDM5LCAweDY5MzgsIDB4MjQxOCwNCisgICAgMHg2OTM5LCAweDI0MUYsIDB4NjkzQiwgMHgyNDM3LCAweDY5M0MsIDB4MjQ0MSwgMHg2OTNELCAweDI0MjksDQorICAgIDB4NjkzRiwgMHgyNDFDLCAweDY5NDAsIDB4MjQyRiwgMHg2OTQxLCAweDI0MzQsIDB4Njk0MiwgMHgyNDIwLA0KKyAgICAweDY5NDQsIDB4MjQzMSwgMHg2OTQ1LCAweDI0MUQsIDB4Njk0OCwgMHgyNDI0LCAweDY5NDksIDB4MjQyNSwNCisgICAgMHg2OTRBLCAweDBFNDAsIDB4Njk0QiwgMHgyNDM4LCAweDY5NEMsIDB4MjQzNiwgMHg2OTRFLCAweDI0MTksDQorICAgIDB4Njk0RiwgMHgyNDNCLCAweDY5NTEsIDB4MjQzQywgMHg2OTUyLCAweDI0M0UsIDB4Njk1MywgMHgwRTQ0LA0KKyAgICAweDY5NTQsIDB4MEUzQywgMHg2OTU2LCAweDFGMUQsIDB4Njk1NywgMHgyNDIxLCAweDY5NTgsIDB4MjQzMywNCisgICAgMHg2OTU5LCAweDI0MjIsIDB4Njk1QSwgMHgwRTM5LCAweDY5NUIsIDB4MEU0OSwgMHg2OTVDLCAweDI0M0EsDQorICAgIDB4Njk1RCwgMHgwRTQ3LCAweDY5NUUsIDB4MEU0MywgMHg2OTVGLCAweDI0MTcsIDB4Njk2MCwgMHgwRTNCLA0KKyAgICAweDY5NjIsIDB4MjQxQSwgMHg2OTYzLCAweDBFNDgsIDB4Njk2NSwgMHgyNDJBLCAweDY5NjYsIDB4MjQxNiwNCisgICAgMHg2OTY4LCAweDBFNDEsIDB4Njk2OSwgMHgyNDJFLCAweDY5NkEsIDB4MjQxRSwgMHg2OTZCLCAweDBFNDIsDQorICAgIDB4Njk2QywgMHgyNDI3LCAweDY5NkQsIDB4MEUzOCwgMHg2OTZFLCAweDBDOTksIDB4Njk2RiwgMHgyNDMwLA0KKyAgICAweDY5NzAsIDB4MjE5NywgMHg2OTcxLCAweDI0MUIsIDB4Njk3NCwgMHgyNDM1LCAweDY5NzUsIDB4MEUzRCwNCisgICAgMHg2OTc2LCAweDI0MzIsIDB4Njk3NywgMHgwRTNBLCAweDY5NzgsIDB4MjQyQywgMHg2OTc5LCAweDBFNDUsDQorICAgIDB4Njk3QSwgMHgyNDIzLCAweDY5N0IsIDB4MjQ0MCwgMHg2OTgyLCAweDBFM0YsIDB4Njk4MywgMHgyNEFGLA0KKyAgICAweDY5ODYsIDB4MEU0NiwgMHg2OThELCAweDI2QzksIDB4Njk4RSwgMHgyNkM3LCAweDY5OTAsIDB4MjZERCwNCisgICAgMHg2OTkxLCAweDI2QzUsIDB4Njk5MywgMHgyNkQ3LCAweDY5OTQsIDB4MEUzNywgMHg2OTk1LCAweDBGRjAsDQorICAgIDB4Njk5NiwgMHgyNkMxLCAweDY5OTcsIDB4MjZEQywgMHg2OTk5LCAweDI2QzYsIDB4Njk5QSwgMHgyNkQ0LA0KKyAgICAweDY5OUIsIDB4MEZGNSwgMHg2OTlDLCAweDBGRUUsIDB4Njk5RSwgMHgyNkRBLCAweDY5QTAsIDB4MjZCRiwNCisgICAgMHg2OUExLCAweDI2RDksIDB4NjlBMywgMHgxMDAwLCAweDY5QTQsIDB4MjZEMCwgMHg2OUE1LCAweDI2RTAsDQorICAgIDB4NjlBNiwgMHgwRkZFLCAweDY5QTcsIDB4MjZDOCwgMHg2OUE4LCAweDBGRUYsIDB4NjlBOSwgMHgyNkNBLA0KKyAgICAweDY5QUEsIDB4MjZEOCwgMHg2OUFCLCAweDBGRjgsIDB4NjlBQywgMHgyNkMzLCAweDY5QUQsIDB4MEZGQywNCisgICAgMHg2OUFFLCAweDBGRjIsIDB4NjlBRiwgMHgyNkNDLCAweDY5QjAsIDB4MjZDMiwgMHg2OUIxLCAweDI2QkMsDQorICAgIDB4NjlCMywgMHgyNkQ2LCAweDY5QjQsIDB4MEZGOSwgMHg2OUI1LCAweDI2REYsIDB4NjlCNiwgMHgyNkJELA0KKyAgICAweDY5QjcsIDB4MEZGNiwgMHg2OUI5LCAweDI2RDIsIDB4NjlCQiwgMHgwRkY3LCAweDY5QkMsIDB4MjZDNCwNCisgICAgMHg2OUJELCAweDI2Q0YsIDB4NjlCRSwgMHgyNkNCLCAweDY5QkYsIDB4MjZDRCwgMHg2OUMxLCAweDBGRjEsDQorICAgIDB4NjlDMiwgMHgyNkRFLCAweDY5QzMsIDB4MEZGRiwgMHg2OUM0LCAweDI2Q0UsIDB4NjlDNiwgMHgyNkUxLA0KKyAgICAweDY5QzksIDB4MjZCRSwgMHg2OUNBLCAweDI2RDMsIDB4NjlDQiwgMHgwRkY0LCAweDY5Q0MsIDB4MEZGRCwNCisgICAgMHg2OUNELCAweDBGRkIsIDB4NjlDRSwgMHgyNkMwLCAweDY5Q0YsIDB4MjZENSwgMHg2OUQwLCAweDBGRkEsDQorICAgIDB4NjlEMywgMHgwRkYzLCAweDY5RDQsIDB4MjZEMSwgMHg2OUQ5LCAweDI2REIsIDB4NjlFMiwgMHgyOTA5LA0KKyAgICAweDY5RTQsIDB4MjkwNSwgMHg2OUU1LCAweDI5MDEsIDB4NjlFNiwgMHgyOTE1LCAweDY5RTcsIDB4MjkxMiwNCisgICAgMHg2OUU4LCAweDExNzcsIDB4NjlFQiwgMHgyOTE5LCAweDY5RUMsIDB4MjkwOCwgMHg2OUVELCAweDExODIsDQorICAgIDB4NjlFRSwgMHgyOTBGLCAweDY5RjEsIDB4MjkwNCwgMHg2OUYyLCAweDI5MEUsIDB4NjlGMywgMHgxMTdGLA0KKyAgICAweDY5RjQsIDB4MjkyMiwgMHg2OUY2LCAweDI5MUYsIDB4NjlGNywgMHgyOTExLCAweDY5RjgsIDB4MjkwMiwNCisgICAgMHg2OUZCLCAweDI5MTYsIDB4NjlGQywgMHgyOTE4LCAweDY5RkQsIDB4MTE3QiwgMHg2OUZFLCAweDI5MEMsDQorICAgIDB4NjlGRiwgMHgyOTA3LCAweDZBMDAsIDB4MjhGRSwgMHg2QTAxLCAweDExNzgsIDB4NkEwMiwgMHgxMTgwLA0KKyAgICAweDZBMDQsIDB4MjkxQiwgMHg2QTA1LCAweDExODEsIDB4NkEwNiwgMHgyOEZGLCAweDZBMDcsIDB4MjkyMSwNCisgICAgMHg2QTA4LCAweDI5MTQsIDB4NkEwOSwgMHgyOTFBLCAweDZBMEEsIDB4MTE3RSwgMHg2QTBELCAweDI5MTcsDQorICAgIDB4NkEwRiwgMHgyOTFFLCAweDZBMTEsIDB4MTE4MywgMHg2QTEzLCAweDExN0QsIDB4NkExNCwgMHgyOTEwLA0KKyAgICAweDZBMTUsIDB4MjkwMywgMHg2QTE2LCAweDI5MjMsIDB4NkExNywgMHgyOTAwLCAweDZBMTgsIDB4MjkxQywNCisgICAgMHg2QTE5LCAweDExN0EsIDB4NkExQiwgMHgyOTBBLCAweDZBMUQsIDB4MjkwQiwgMHg2QTFFLCAweDExNzksDQorICAgIDB4NkExRiwgMHgxMTc2LCAweDZBMjAsIDB4MjkwNiwgMHg2QTIxLCAweDExN0MsIDB4NkEyMywgMHgxMTc1LA0KKyAgICAweDZBMjUsIDB4MjkxRCwgMHg2QTI2LCAweDI5MjAsIDB4NkEyNywgMHgyOTBELCAweDZBMjgsIDB4MkI3NCwNCisgICAgMHg2QTMyLCAweDJCNkMsIDB4NkEzNCwgMHgyQjY4LCAweDZBMzUsIDB4MTJEOSwgMHg2QTM4LCAweDEyQ0UsDQorICAgIDB4NkEzOSwgMHgxMkQzLCAweDZBM0EsIDB4MTJDRiwgMHg2QTNCLCAweDJCNzYsIDB4NkEzQywgMHgyQjgxLA0KKyAgICAweDZBM0QsIDB4MTJDRCwgMHg2QTNFLCAweDJCNkUsIDB4NkEzRiwgMHgyQjc3LCAweDZBNDAsIDB4MjkxMywNCisgICAgMHg2QTQxLCAweDJCNzgsIDB4NkE0NCwgMHgxMkQ0LCAweDZBNDYsIDB4MkI4NywgMHg2QTQ3LCAweDEyRDgsDQorICAgIDB4NkE0OCwgMHgxMkRCLCAweDZBNDksIDB4MkI2QSwgMHg2QTRCLCAweDEyRDcsIDB4NkE0RCwgMHgyQjg1LA0KKyAgICAweDZBNEUsIDB4MkI4NiwgMHg2QTRGLCAweDJCN0MsIDB4NkE1MCwgMHgyQjdCLCAweDZBNTEsIDB4MkI3MywNCisgICAgMHg2QTU0LCAweDJCN0QsIDB4NkE1NSwgMHgyQjg0LCAweDZBNTYsIDB4MkI4MywgMHg2QTU4LCAweDEyRDIsDQorICAgIDB4NkE1OSwgMHgxMkQwLCAweDZBNUEsIDB4MkI3NSwgMHg2QTVCLCAweDJCNzIsIDB4NkE1RCwgMHgyQjZGLA0KKyAgICAweDZBNUUsIDB4MkI4MiwgMHg2QTVGLCAweDEyREEsIDB4NkE2MCwgMHgyQjgwLCAweDZBNjEsIDB4MTJENiwNCisgICAgMHg2QTYyLCAweDEyRDUsIDB4NkE2NCwgMHgyQjdBLCAweDZBNjYsIDB4MkI2OSwgMHg2QTY3LCAweDJCNkIsDQorICAgIDB4NkE2OCwgMHgyQjZELCAweDZBNjksIDB4MkI3RiwgMHg2QTZBLCAweDJCNzksIDB4NkE2QiwgMHgxMkQxLA0KKyAgICAweDZBNkQsIDB4MkI3MCwgMHg2QTZGLCAweDJCN0UsIDB4NkE3NiwgMHgyQjcxLCAweDZBN0UsIDB4MTNFQywNCisgICAgMHg2QTdGLCAweDJEODQsIDB4NkE4MCwgMHgxM0U1LCAweDZBODEsIDB4MkQ3NSwgMHg2QTgzLCAweDJEODAsDQorICAgIDB4NkE4NCwgMHgxM0U3LCAweDZBODUsIDB4MkQ4NywgMHg2QTg3LCAweDJEN0MsIDB4NkE4OSwgMHgyRDc3LA0KKyAgICAweDZBOEMsIDB4MkQ4OCwgMHg2QThELCAweDJENzMsIDB4NkE4RSwgMHgyRDdFLCAweDZBOTAsIDB4MTNFRSwNCisgICAgMHg2QTkxLCAweDJEODMsIDB4NkE5MiwgMHgyRDg5LCAweDZBOTMsIDB4MkQ3RCwgMHg2QTk0LCAweDEzRTYsDQorICAgIDB4NkE5NSwgMHgyRDdGLCAweDZBOTYsIDB4MkQ3NCwgMHg2QTk3LCAweDEzRUQsIDB4NkE5QSwgMHgyRDg2LA0KKyAgICAweDZBOUIsIDB4MkQ3OSwgMHg2QTlDLCAweDEzRTksIDB4NkE5RSwgMHgyRDdCLCAweDZBOUYsIDB4MkQ3OCwNCisgICAgMHg2QUEwLCAweDEzRUYsIDB4NkFBMSwgMHgyRDdBLCAweDZBQTIsIDB4MTNFOCwgMHg2QUEzLCAweDEzRUIsDQorICAgIDB4NkFBNCwgMHgyRDgyLCAweDZBQTUsIDB4MkQ3NiwgMHg2QUE2LCAweDJEODUsIDB4NkFBOCwgMHgyRDgxLA0KKyAgICAweDZBQUMsIDB4MTRERCwgMHg2QUFELCAweDJGM0UsIDB4NkFBRSwgMHgxNEUyLCAweDZBQUYsIDB4MTRFMywNCisgICAgMHg2QUIzLCAweDE0REMsIDB4NkFCNCwgMHgyRjNELCAweDZBQjYsIDB4MkYzQSwgMHg2QUI3LCAweDJGM0IsDQorICAgIDB4NkFCOCwgMHgxNEUwLCAweDZBQjksIDB4MkYzNSwgMHg2QUJBLCAweDJGMzksIDB4NkFCQiwgMHgxNERGLA0KKyAgICAweDZBQkQsIDB4MkYzNiwgMHg2QUMyLCAweDE0RTEsIDB4NkFDMywgMHgxNERFLCAweDZBQzUsIDB4MkYzNCwNCisgICAgMHg2QUM2LCAweDJGMzgsIDB4NkFDNywgMHgyRjNDLCAweDZBQ0IsIDB4MzA5RiwgMHg2QUNDLCAweDMwOUMsDQorICAgIDB4NkFDRCwgMHgzMEE1LCAweDZBQ0YsIDB4MzBBNCwgMHg2QUQwLCAweDMwQTIsIDB4NkFEMSwgMHgzMDlELA0KKyAgICAweDZBRDMsIDB4MTU4OSwgMHg2QUQ5LCAweDMwOUUsIDB4NkFEQSwgMHgxNTg4LCAweDZBREIsIDB4MTNFQSwNCisgICAgMHg2QURDLCAweDMwQTEsIDB4NkFERCwgMHgxNTg3LCAweDZBREUsIDB4MzBBNiwgMHg2QURGLCAweDMwQTAsDQorICAgIDB4NkFFMCwgMHgzMDlCLCAweDZBRTEsIDB4MkYzNywgMHg2QUU1LCAweDE1ODYsIDB4NkFFNywgMHgzMDlBLA0KKyAgICAweDZBRTgsIDB4MzFERiwgMHg2QUVBLCAweDMxREUsIDB4NkFFQiwgMHgzMEEzLCAweDZBRUMsIDB4MTYxQiwNCisgICAgMHg2QUVFLCAweDMxRTIsIDB4NkFFRiwgMHgzMUUzLCAweDZBRjAsIDB4MzFERCwgMHg2QUYxLCAweDMxRTEsDQorICAgIDB4NkFGMywgMHgzMURDLCAweDZBRjgsIDB4MzJENiwgMHg2QUY5LCAweDMxRTAsIDB4NkFGQSwgMHgxNjc4LA0KKyAgICAweDZBRkIsIDB4MTY3NiwgMHg2QUZDLCAweDMyRDQsIDB4NkIwMCwgMHgzMkQ3LCAweDZCMDIsIDB4MzJEMywNCisgICAgMHg2QjAzLCAweDMyRDUsIDB4NkIwNCwgMHgxNjc3LCAweDZCMDgsIDB4MzM4NiwgMHg2QjA5LCAweDMzODcsDQorICAgIDB4NkIwQSwgMHgxNkM2LCAweDZCMEIsIDB4MzM4NSwgMHg2QjBGLCAweDM0MjAsIDB4NkIxMCwgMHgxNkZELA0KKyAgICAweDZCMTEsIDB4MzQxRSwgMHg2QjEyLCAweDM0MUYsIDB4NkIxMywgMHgzNDg3LCAweDZCMTYsIDB4MTc0MywNCisgICAgMHg2QjE3LCAweDM0Q0UsIDB4NkIxOCwgMHgzNENDLCAweDZCMTksIDB4MzRDRCwgMHg2QjFBLCAweDM0Q0YsDQorICAgIDB4NkIxRSwgMHgzNTM0LCAweDZCMjAsIDB4MDJERSwgMHg2QjIxLCAweDAzRTMsIDB4NkIyMywgMHgwNjFBLA0KKyAgICAweDZCMjUsIDB4MTlDOSwgMHg2QjI4LCAweDFCM0QsIDB4NkIyQywgMHgxQ0U2LCAweDZCMkQsIDB4MUNFOCwNCisgICAgMHg2QjJGLCAweDFDRTcsIDB4NkIzMSwgMHgxQ0U5LCAweDZCMzIsIDB4MEFFNywgMHg2QjMzLCAweDFGM0MsDQorICAgIDB4NkIzNCwgMHgxQ0VBLCAweDZCMzYsIDB4MUYzQiwgMHg2QjM3LCAweDFGM0QsIDB4NkIzOCwgMHgxRjNFLA0KKyAgICAweDZCMzksIDB4MjFCMiwgMHg2QjNBLCAweDBDOUMsIDB4NkIzQiwgMHgyMUIzLCAweDZCM0MsIDB4MjFCNSwNCisgICAgMHg2QjNELCAweDBDOUQsIDB4NkIzRSwgMHgwQzlCLCAweDZCM0YsIDB4MjFCNCwgMHg2QjQxLCAweDI0NDcsDQorICAgIDB4NkI0MiwgMHgyNDQ1LCAweDZCNDMsIDB4MjQ0NCwgMHg2QjQ1LCAweDI0NDMsIDB4NkI0NiwgMHgyNDQyLA0KKyAgICAweDZCNDcsIDB4MEU0QSwgMHg2QjQ4LCAweDI0NDYsIDB4NkI0OSwgMHgxMDAxLCAweDZCNEEsIDB4MjZFMiwNCisgICAgMHg2QjRCLCAweDI2RTQsIDB4NkI0QywgMHgxMDAyLCAweDZCNEQsIDB4MjZFMywgMHg2QjRFLCAweDExODUsDQorICAgIDB4NkI1MCwgMHgxMTg0LCAweDZCNTEsIDB4MjkyNCwgMHg2QjU0LCAweDJCODksIDB4NkI1NSwgMHgyQjg4LA0KKyAgICAweDZCNTYsIDB4MkI4QSwgMHg2QjU5LCAweDEyREMsIDB4NkI1QiwgMHgyRDhBLCAweDZCNUMsIDB4MTNGMCwNCisgICAgMHg2QjVFLCAweDJGM0YsIDB4NkI1RiwgMHgxNEU0LCAweDZCNjAsIDB4MzBBNywgMHg2QjYxLCAweDE2QzcsDQorICAgIDB4NkI2MiwgMHgwMkRGLCAweDZCNjMsIDB4MDM0RCwgMHg2QjY0LCAweDAzRTQsIDB4NkI2NSwgMHgwNEM5LA0KKyAgICAweDZCNjYsIDB4MDYxQiwgMHg2QjY3LCAweDA2MUMsIDB4NkI2QSwgMHgwNzY5LCAweDZCNkQsIDB4MUNFQiwNCisgICAgMHg2QjcyLCAweDBFNEIsIDB4NkI3NiwgMHgyOUEyLCAweDZCNzcsIDB4MTJERCwgMHg2Qjc4LCAweDE0RTUsDQorICAgIDB4NkI3OSwgMHgwMkUwLCAweDZCN0IsIDB4MDNFNSwgMHg2QjdFLCAweDE5Q0IsIDB4NkI3RiwgMHgwNjFELA0KKyAgICAweDZCODAsIDB4MTlDQSwgMHg2QjgyLCAweDFCM0UsIDB4NkI4MywgMHgwNzZBLCAweDZCODQsIDB4MUIzRiwNCisgICAgMHg2Qjg2LCAweDA3NkIsIDB4NkI4OCwgMHgxQ0VELCAweDZCODksIDB4MDkwMCwgMHg2QjhBLCAweDA4RkYsDQorICAgIDB4NkI4QywgMHgxRjQzLCAweDZCOEQsIDB4MUY0MSwgMHg2QjhFLCAweDFGNDIsIDB4NkI4RiwgMHgxRjQwLA0KKyAgICAweDZCOTEsIDB4MUYzRiwgMHg2Qjk0LCAweDIxQjYsIDB4NkI5NSwgMHgyMUI5LCAweDZCOTYsIDB4MEM5RiwNCisgICAgMHg2Qjk3LCAweDIxQjcsIDB4NkI5OCwgMHgwQzlFLCAweDZCOTksIDB4MjFCOCwgMHg2QjlCLCAweDI0NDgsDQorICAgIDB4NkI5RSwgMHgyNkU1LCAweDZCOUYsIDB4MjZFNiwgMHg2QkEwLCAweDI2RTcsIDB4NkJBMiwgMHgyOTI3LA0KKyAgICAweDZCQTMsIDB4MjkyNiwgMHg2QkE0LCAweDExODYsIDB4NkJBNSwgMHgyOTI1LCAweDZCQTYsIDB4MjkyOCwNCisgICAgMHg2QkE3LCAweDJCOEIsIDB4NkJBQSwgMHgyQjhDLCAweDZCQUIsIDB4MkI4RCwgMHg2QkFELCAweDJEOEIsDQorICAgIDB4NkJBRSwgMHgxM0YxLCAweDZCQUYsIDB4MTRFNiwgMHg2QkIwLCAweDMwQTgsIDB4NkJCMiwgMHgxNjc5LA0KKyAgICAweDZCQjMsIDB4MTc4QSwgMHg2QkI1LCAweDA3NkMsIDB4NkJCNiwgMHgxQjQwLCAweDZCQjcsIDB4MDkwMSwNCisgICAgMHg2QkJBLCAweDBBRTgsIDB4NkJCQywgMHgwQ0EwLCAweDZCQkQsIDB4MjFCQSwgMHg2QkJGLCAweDBFNEQsDQorICAgIDB4NkJDMCwgMHgwRTRDLCAweDZCQzMsIDB4MjZFOCwgMHg2QkM0LCAweDI2RTksIDB4NkJDNSwgMHgxMTg3LA0KKyAgICAweDZCQzYsIDB4MTE4OCwgMHg2QkM3LCAweDJCOEYsIDB4NkJDOCwgMHgyQjhFLCAweDZCQzksIDB4MkY0MCwNCisgICAgMHg2QkNBLCAweDM0MjEsIDB4NkJDQiwgMHgwMkUxLCAweDZCQ0MsIDB4MTc4QiwgMHg2QkNELCAweDAzNEUsDQorICAgIDB4NkJDRiwgMHgwNENBLCAweDZCRDAsIDB4MThBRCwgMHg2QkQyLCAweDA3NkQsIDB4NkJEMywgMHgwRTRFLA0KKyAgICAweDZCRDQsIDB4MDJFMiwgMHg2QkQ2LCAweDFCNDEsIDB4NkJENywgMHgwNzZFLCAweDZCRDgsIDB4MUI0MiwNCisgICAgMHg2QkRBLCAweDEzRjIsIDB4NkJEQiwgMHgwMkUzLCAweDZCREUsIDB4MTlDQywgMHg2QkUwLCAweDFCNDMsDQorICAgIDB4NkJFMiwgMHgxQ0YyLCAweDZCRTMsIDB4MUNGMSwgMHg2QkU0LCAweDFDRUYsIDB4NkJFNiwgMHgxQ0VFLA0KKyAgICAweDZCRTcsIDB4MUNGMywgMHg2QkU4LCAweDFDRjAsIDB4NkJFQiwgMHgwQUU5LCAweDZCRUMsIDB4MEFFQSwNCisgICAgMHg2QkVGLCAweDBDQTEsIDB4NkJGMCwgMHgyMUJCLCAweDZCRjIsIDB4MjFCQywgMHg2QkYzLCAweDIxQkQsDQorICAgIDB4NkJGNywgMHgyNDRDLCAweDZCRjgsIDB4MjQ0RCwgMHg2QkY5LCAweDI0NEIsIDB4NkJGQiwgMHgyNDQ5LA0KKyAgICAweDZCRkMsIDB4MjQ0QSwgMHg2QkZELCAweDBFNEYsIDB4NkJGRSwgMHgyNkVBLCAweDZCRkYsIDB4MjkyQiwNCisgICAgMHg2QzAwLCAweDI5MkEsIDB4NkMwMSwgMHgyOTI5LCAweDZDMDIsIDB4MjkyQywgMHg2QzAzLCAweDJCOTEsDQorICAgIDB4NkMwNCwgMHgyQjkwLCAweDZDMDUsIDB4MTJERSwgMHg2QzA2LCAweDJCOTIsIDB4NkMwOCwgMHgxM0YzLA0KKyAgICAweDZDMDksIDB4MkQ4QywgMHg2QzBCLCAweDJGNDEsIDB4NkMwQywgMHgzMEE5LCAweDZDMEQsIDB4MzM4OCwNCisgICAgMHg2QzBGLCAweDAyRTQsIDB4NkMxMCwgMHgwMzUwLCAweDZDMTEsIDB4MDM0RiwgMHg2QzEzLCAweDA2MUUsDQorICAgIDB4NkMxNCwgMHgxNzhDLCAweDZDMTUsIDB4MTdBQSwgMHg2QzE2LCAweDAzRTYsIDB4NkMxOCwgMHgxODAxLA0KKyAgICAweDZDMTksIDB4MThBRSwgMHg2QzFBLCAweDE4QUYsIDB4NkMxQiwgMHgwNjFGLCAweDZDMUQsIDB4MTlDRCwNCisgICAgMHg2QzFGLCAweDA3NkYsIDB4NkMyMCwgMHgxQjQ0LCAweDZDMjEsIDB4MUI0NSwgMHg2QzIzLCAweDA5MDIsDQorICAgIDB4NkMyNCwgMHgwOTA2LCAweDZDMjUsIDB4MUNGNCwgMHg2QzI2LCAweDA5MDUsIDB4NkMyNywgMHgwOTAzLA0KKyAgICAweDZDMjgsIDB4MDkwNCwgMHg2QzJBLCAweDFGNDQsIDB4NkMyQiwgMHgwQUVCLCAweDZDMkMsIDB4MENBNCwNCisgICAgMHg2QzJFLCAweDBDQTIsIDB4NkMyRiwgMHgwQ0EzLCAweDZDMzAsIDB4MjFCRSwgMHg2QzMzLCAweDEwMDMsDQorICAgIDB4NkMzNCwgMHgwMkU1LCAweDZDMzYsIDB4MTdBQiwgMHg2QzM4LCAweDAzNTEsIDB4NkMzQiwgMHgxN0FFLA0KKyAgICAweDZDM0UsIDB4MDM1NCwgMHg2QzNGLCAweDE3QUQsIDB4NkM0MCwgMHgwMzUzLCAweDZDNDEsIDB4MDM1MiwNCisgICAgMHg2QzQyLCAweDA0Q0IsIDB4NkM0MywgMHgxN0FDLCAweDZDNDYsIDB4MTgwMiwgMHg2QzRBLCAweDE4MDYsDQorICAgIDB4NkM0QiwgMHgxODA4LCAweDZDNEMsIDB4MTgwOSwgMHg2QzRELCAweDAzRjAsIDB4NkM0RSwgMHgwM0YxLA0KKyAgICAweDZDNEYsIDB4MTgwNSwgMHg2QzUwLCAweDAzRUMsIDB4NkM1MiwgMHgxODAzLCAweDZDNTQsIDB4MTgwNywNCisgICAgMHg2QzU1LCAweDAzRUQsIDB4NkM1NywgMHgwM0U4LCAweDZDNTksIDB4MDNFOSwgMHg2QzVCLCAweDAzRUYsDQorICAgIDB4NkM1QywgMHgxODA0LCAweDZDNUQsIDB4MDNFNywgMHg2QzVFLCAweDA0Q0MsIDB4NkM1RiwgMHgwM0VBLA0KKyAgICAweDZDNjAsIDB4MDNFQiwgMHg2QzYxLCAweDAzRUUsIDB4NkM2NSwgMHgxOEMwLCAweDZDNjYsIDB4MThCRSwNCisgICAgMHg2QzY3LCAweDE4QjEsIDB4NkM2OCwgMHgwNEQ4LCAweDZDNjksIDB4MThCOCwgMHg2QzZBLCAweDA0RDMsDQorICAgIDB4NkM2QiwgMHgxOEIyLCAweDZDNkQsIDB4MThCQSwgMHg2QzZGLCAweDE4QjcsIDB4NkM3MCwgMHgwNEQ2LA0KKyAgICAweDZDNzEsIDB4MThCNiwgMHg2QzcyLCAweDA0REQsIDB4NkM3MywgMHgxOEJGLCAweDZDNzQsIDB4MDRERiwNCisgICAgMHg2Qzc2LCAweDA0RTEsIDB4NkM3OCwgMHgxOEIwLCAweDZDN0EsIDB4MDRENCwgMHg2QzdCLCAweDE4QzEsDQorICAgIDB4NkM3RCwgMHgwNERCLCAweDZDN0UsIDB4MDRERSwgMHg2QzgwLCAweDE5RTQsIDB4NkM4MSwgMHgwNENFLA0KKyAgICAweDZDODIsIDB4MDRFNSwgMHg2QzgzLCAweDA0REMsIDB4NkM4NCwgMHgxOEIzLCAweDZDODUsIDB4MDREMSwNCisgICAgMHg2Qzg2LCAweDA0RTAsIDB4NkM4NywgMHgxOEJCLCAweDZDODgsIDB4MDRDRiwgMHg2Qzg5LCAweDA0RDAsDQorICAgIDB4NkM4QSwgMHgxOUUyLCAweDZDOEIsIDB4MThCNCwgMHg2QzhDLCAweDA0RDcsIDB4NkM4RCwgMHgwNEUyLA0KKyAgICAweDZDOEUsIDB4MThDMiwgMHg2QzhGLCAweDE4QjUsIDB4NkM5MCwgMHgwNEQ1LCAweDZDOTIsIDB4MDREQSwNCisgICAgMHg2QzkzLCAweDE5Q0UsIDB4NkM5NCwgMHgwNEUzLCAweDZDOTUsIDB4MThCQywgMHg2Qzk2LCAweDA0RDksDQorICAgIDB4NkM5OCwgMHgwNEU0LCAweDZDOTksIDB4MDRDRCwgMHg2QzlBLCAweDE4QjksIDB4NkM5QiwgMHgwNEQyLA0KKyAgICAweDZDOUMsIDB4MThCRCwgMHg2QzlELCAweDE5RTMsIDB4NkNBQiwgMHgwNjJCLCAweDZDQUMsIDB4MDYzQiwNCisgICAgMHg2Q0FELCAweDE5RDUsIDB4NkNBRSwgMHgwNjMyLCAweDZDQjAsIDB4MTlFQSwgMHg2Q0IxLCAweDA2MjMsDQorICAgIDB4NkNCMywgMHgwNjI2LCAweDZDQjQsIDB4MTlFMSwgMHg2Q0I2LCAweDE5RDMsIDB4NkNCNywgMHgxOUQ3LA0KKyAgICAweDZDQjgsIDB4MDYyRSwgMHg2Q0I5LCAweDA2MzAsIDB4NkNCQSwgMHgxOURBLCAweDZDQkIsIDB4MDYzNywNCisgICAgMHg2Q0JDLCAweDA2MjksIDB4NkNCRCwgMHgwNjI3LCAweDZDQkUsIDB4MDYyOCwgMHg2Q0JGLCAweDA2MzYsDQorICAgIDB4NkNDMCwgMHgxOUU2LCAweDZDQzEsIDB4MDYzMSwgMHg2Q0MyLCAweDE5RDksIDB4NkNDMywgMHgxOURCLA0KKyAgICAweDZDQzQsIDB4MDYyRiwgMHg2Q0M1LCAweDA2MzQsIDB4NkNDNiwgMHgxOURDLCAweDZDQzcsIDB4MTlFOSwNCisgICAgMHg2Q0M5LCAweDA3NzAsIDB4NkNDQSwgMHgwNjNBLCAweDZDQ0MsIDB4MDYyNCwgMHg2Q0NELCAweDE5RTgsDQorICAgIDB4NkNDRiwgMHgxOUVDLCAweDZDRDAsIDB4MTlEOCwgMHg2Q0QxLCAweDE5RUUsIDB4NkNEMiwgMHgxOURGLA0KKyAgICAweDZDRDMsIDB4MDYyRCwgMHg2Q0Q0LCAweDE5RDQsIDB4NkNENSwgMHgwNjJDLCAweDZDRDYsIDB4MDYzRSwNCisgICAgMHg2Q0Q3LCAweDA2MzMsIDB4NkNEOSwgMHgxOUQyLCAweDZDREEsIDB4MUI0RSwgMHg2Q0RCLCAweDA2MzksDQorICAgIDB4NkNEQywgMHgwNjNELCAweDZDREQsIDB4MTlFMCwgMHg2Q0RFLCAweDE5RTUsIDB4NkNFMCwgMHgwNjNGLA0KKyAgICAweDZDRTEsIDB4MDYzOCwgMHg2Q0UyLCAweDA2MkEsIDB4NkNFMywgMHgwNjIwLCAweDZDRTUsIDB4MDYyNSwNCisgICAgMHg2Q0U3LCAweDE5RDYsIDB4NkNFOCwgMHgwNjIxLCAweDZDRTksIDB4MTlFRCwgMHg2Q0VCLCAweDE5RDAsDQorICAgIDB4NkNFQywgMHgxOUNGLCAweDZDRUQsIDB4MTlERCwgMHg2Q0VFLCAweDE5RDEsIDB4NkNFRiwgMHgwNjNDLA0KKyAgICAweDZDRjAsIDB4MDkwNywgMHg2Q0YxLCAweDA2MzUsIDB4NkNGMiwgMHgxOURFLCAweDZDRjMsIDB4MDYyMiwNCisgICAgMHg2Q0Y1LCAweDA3N0YsIDB4NkNGOSwgMHgxOUVCLCAweDZEMDAsIDB4MUI1NSwgMHg2RDAxLCAweDFCNTgsDQorICAgIDB4NkQwMywgMHgxQjVCLCAweDZEMDQsIDB4MUI1MCwgMHg2RDA3LCAweDFCNUUsIDB4NkQwOCwgMHgxQjYxLA0KKyAgICAweDZEMDksIDB4MUI2MywgMHg2RDBBLCAweDFCNEQsIDB4NkQwQiwgMHgwNzcxLCAweDZEMEMsIDB4MDc3NiwNCisgICAgMHg2RDBELCAweDFDRjksIDB4NkQwRSwgMHgwNzg2LCAweDZEMEYsIDB4MUI1QywgMHg2RDEwLCAweDFCNjQsDQorICAgIDB4NkQxMSwgMHgxQjU0LCAweDZEMTIsIDB4MUI0QywgMHg2RDE2LCAweDFEMTQsIDB4NkQxNywgMHgwNzc5LA0KKyAgICAweDZEMTgsIDB4MUI1OSwgMHg2RDE5LCAweDFCNTEsIDB4NkQxQSwgMHgxQjUzLCAweDZEMUIsIDB4MDc3RSwNCisgICAgMHg2RDFELCAweDFCNTYsIDB4NkQxRSwgMHgwNzc4LCAweDZEMUYsIDB4MUI0OSwgMHg2RDIwLCAweDFCNUYsDQorICAgIDB4NkQyMiwgMHgxQjYyLCAweDZEMjUsIDB4MDc3NSwgMHg2RDI3LCAweDA3ODEsIDB4NkQyOCwgMHgxQjQ2LA0KKyAgICAweDZEMjksIDB4MDc4MywgMHg2RDJBLCAweDA3NzMsIDB4NkQyQiwgMHgwNzg3LCAweDZEMkMsIDB4MUI2MCwNCisgICAgMHg2RDJELCAweDFCNDgsIDB4NkQyRSwgMHgwNzg0LCAweDZEMkYsIDB4MUQwRSwgMHg2RDMwLCAweDE5RTcsDQorICAgIDB4NkQzMSwgMHgwNzc3LCAweDZEMzIsIDB4MDc3MiwgMHg2RDMzLCAweDFCNEYsIDB4NkQzNCwgMHgxQjQ3LA0KKyAgICAweDZEMzUsIDB4MDc4NSwgMHg2RDM2LCAweDA3N0QsIDB4NkQzNywgMHgxQjVBLCAweDZEMzgsIDB4MDc4MiwNCisgICAgMHg2RDM5LCAweDA3ODAsIDB4NkQzQSwgMHgxQjUyLCAweDZEM0IsIDB4MDc3QSwgMHg2RDNDLCAweDFCNEEsDQorICAgIDB4NkQzRCwgMHgwNzdCLCAweDZEM0UsIDB4MDc3QywgMHg2RDNGLCAweDFCNEIsIDB4NkQ0MCwgMHgxQjVELA0KKyAgICAweDZENDEsIDB4MDc3NCwgMHg2RDQyLCAweDFCNTcsIDB4NkQ1OCwgMHgxQ0ZDLCAweDZENTksIDB4MDkwRiwNCisgICAgMHg2RDVBLCAweDA5MTQsIDB4NkQ1RSwgMHgxRDA1LCAweDZENUYsIDB4MUQwQiwgMHg2RDYwLCAweDFEMDcsDQorICAgIDB4NkQ2MSwgMHgxQ0ZBLCAweDZENjIsIDB4MUNGRCwgMHg2RDYzLCAweDFDRjYsIDB4NkQ2NCwgMHgxQ0Y3LA0KKyAgICAweDZENjUsIDB4MDkxQiwgMHg2RDY2LCAweDA5MEMsIDB4NkQ2NywgMHgxRDA2LCAweDZENjgsIDB4MUQwRiwNCisgICAgMHg2RDY5LCAweDA5MTYsIDB4NkQ2QSwgMHgwOTA4LCAweDZENkMsIDB4MDkxMSwgMHg2RDZELCAweDFDRkUsDQorICAgIDB4NkQ2RSwgMHgwOTEzLCAweDZENkYsIDB4MUNGRiwgMHg2RDcwLCAweDFEMDksIDB4NkQ3NCwgMHgwOTE1LA0KKyAgICAweDZENzUsIDB4MUQxOCwgMHg2RDc2LCAweDFDRjgsIDB4NkQ3NywgMHgwOTBFLCAweDZENzgsIDB4MDkwRCwNCisgICAgMHg2RDc5LCAweDA5MTksIDB4NkQ3QSwgMHgxQ0Y1LCAweDZEN0IsIDB4MUQxNiwgMHg2RDdDLCAweDFEMEEsDQorICAgIDB4NkQ3RCwgMHgxRDE3LCAweDZEN0UsIDB4MUQxMSwgMHg2RDdGLCAweDFEMDMsIDB4NkQ4MCwgMHgxRDEyLA0KKyAgICAweDZEODIsIDB4MUQwQywgMHg2RDgzLCAweDFEMTUsIDB4NkQ4NCwgMHgxRDEzLCAweDZEODUsIDB4MDkxQSwNCisgICAgMHg2RDg2LCAweDFEMDQsIDB4NkQ4NywgMHgwOTBCLCAweDZEODgsIDB4MDkwQSwgMHg2RDg5LCAweDA5MTIsDQorICAgIDB4NkQ4QSwgMHgwOTE4LCAweDZEOEIsIDB4MUQxMCwgMHg2RDhDLCAweDA5MTcsIDB4NkQ4RCwgMHgxRDAxLA0KKyAgICAweDZEOEUsIDB4MEFFQywgMHg2RDkwLCAweDFEMTksIDB4NkQ5MSwgMHgxRDAwLCAweDZEOTIsIDB4MUNGQiwNCisgICAgMHg2RDkzLCAweDA5MTAsIDB4NkQ5NCwgMHgwOTFDLCAweDZEOTUsIDB4MDkwOSwgMHg2RDk3LCAweDFEMDgsDQorICAgIDB4NkQ5OCwgMHgxRDBELCAweDZEQUEsIDB4MEIwRSwgMHg2REFCLCAweDFGNDYsIDB4NkRBQywgMHgxRjRBLA0KKyAgICAweDZEQUUsIDB4MEFGQiwgMHg2REFGLCAweDBBRjksIDB4NkRCMiwgMHgwQUYwLCAweDZEQjMsIDB4MUY0OCwNCisgICAgMHg2REI0LCAweDFGNDcsIDB4NkRCNSwgMHgwQjA0LCAweDZEQjcsIDB4MUY0RCwgMHg2REI4LCAweDBBRkUsDQorICAgIDB4NkRCQSwgMHgxRjVGLCAweDZEQkIsIDB4MUY2QiwgMHg2REJDLCAweDBBRUQsIDB4NkRCRCwgMHgxRjVDLA0KKyAgICAweDZEQkUsIDB4MUY1NSwgMHg2REJGLCAweDBCMTAsIDB4NkRDMCwgMHgxRjQ1LCAweDZEQzIsIDB4MUY2MSwNCisgICAgMHg2REM0LCAweDBCMEQsIDB4NkRDNSwgMHgwQjAxLCAweDZEQzYsIDB4MEIwQywgMHg2REM3LCAweDBBRjcsDQorICAgIDB4NkRDOCwgMHgxRjUxLCAweDZEQzksIDB4MUY2MywgMHg2RENBLCAweDFGNUIsIDB4NkRDQiwgMHgwQUY4LA0KKyAgICAweDZEQ0MsIDB4MEFGMiwgMHg2RENELCAweDFGNjksIDB4NkRDRiwgMHgxRjYyLCAweDZERDAsIDB4MUY2NCwNCisgICAgMHg2REQxLCAweDBBRkEsIDB4NkREMiwgMHgwQjAyLCAweDZERDMsIDB4MUY2NiwgMHg2REQ0LCAweDFGNEYsDQorICAgIDB4NkRENSwgMHgxRjYwLCAweDZERDYsIDB4MUY1NCwgMHg2REQ3LCAweDFGNjgsIDB4NkREOCwgMHgwQjA3LA0KKyAgICAweDZERDksIDB4MEFFRiwgMHg2RERBLCAweDBCMDUsIDB4NkREQiwgMHgxRjU5LCAweDZEREMsIDB4MUY1NywNCisgICAgMHg2RERELCAweDFGNTgsIDB4NkRERSwgMHgwQUZDLCAweDZEREYsIDB4MUY1MywgMHg2REUwLCAweDFGNTIsDQorICAgIDB4NkRFMSwgMHgwQUYxLCAweDZERTIsIDB4MUY0QywgMHg2REUzLCAweDFGNkEsIDB4NkRFNCwgMHgwQUYzLA0KKyAgICAweDZERTUsIDB4MUY1NiwgMHg2REU2LCAweDBCMTEsIDB4NkRFOCwgMHgwQjBCLCAweDZERTksIDB4MUY0QiwNCisgICAgMHg2REVBLCAweDBCMDgsIDB4NkRFQiwgMHgwQjA2LCAweDZERUMsIDB4MEIwRiwgMHg2REVELCAweDFGNUQsDQorICAgIDB4NkRFRSwgMHgwQjBBLCAweDZERUYsIDB4MUQwMiwgMHg2REYwLCAweDFGNUUsIDB4NkRGMSwgMHgwQjA5LA0KKyAgICAweDZERjIsIDB4MUY2NSwgMHg2REYzLCAweDBBRUUsIDB4NkRGNCwgMHgxRjVBLCAweDZERjUsIDB4MEIwMCwNCisgICAgMHg2REY2LCAweDFGNEUsIDB4NkRGNywgMHgwQUZGLCAweDZERjksIDB4MEFGRCwgMHg2REZBLCAweDBBRjUsDQorICAgIDB4NkRGQiwgMHgwQUY0LCAweDZERkMsIDB4MjFCRiwgMHg2REZELCAweDFGNjcsIDB4NkUwMCwgMHgxRjUwLA0KKyAgICAweDZFMDMsIDB4MjFENCwgMHg2RTA1LCAweDBBRjYsIDB4NkUxOSwgMHgwQ0MxLCAweDZFMUEsIDB4MEIwMywNCisgICAgMHg2RTFCLCAweDBDQUYsIDB4NkUxQywgMHgyMUNFLCAweDZFMUQsIDB4MENCRCwgMHg2RTFGLCAweDIxQzIsDQorICAgIDB4NkUyMCwgMHgwQ0FDLCAweDZFMjEsIDB4MENBOCwgMHg2RTIyLCAweDIxRTAsIDB4NkUyMywgMHgwQ0FFLA0KKyAgICAweDZFMjQsIDB4MENCMiwgMHg2RTI1LCAweDBDQUQsIDB4NkUyNiwgMHgwQ0I2LCAweDZFMjcsIDB4MjFFNCwNCisgICAgMHg2RTI4LCAweDIxREIsIDB4NkUyQiwgMHgyMUM5LCAweDZFMkMsIDB4MENCQiwgMHg2RTJELCAweDBDQjUsDQorICAgIDB4NkUyRSwgMHgyMUQ1LCAweDZFMkYsIDB4MENBNSwgMHg2RTMwLCAweDIxRTEsIDB4NkUzMSwgMHgyMURBLA0KKyAgICAweDZFMzIsIDB4MENBOSwgMHg2RTMzLCAweDIxQ0YsIDB4NkUzNCwgMHgwQ0I4LCAweDZFMzUsIDB4MjFFQywNCisgICAgMHg2RTM2LCAweDIxRUQsIDB4NkUzOCwgMHgwQ0E2LCAweDZFMzksIDB4MjFERiwgMHg2RTNBLCAweDBDQkEsDQorICAgIDB4NkUzQiwgMHgyMUQzLCAweDZFM0MsIDB4MjFDNSwgMHg2RTNELCAweDIxQzYsIDB4NkUzRSwgMHgwQ0JFLA0KKyAgICAweDZFM0YsIDB4MjFDQSwgMHg2RTQwLCAweDIxRDEsIDB4NkU0MSwgMHgyMUNCLCAweDZFNDMsIDB4MENCQywNCisgICAgMHg2RTQ0LCAweDBDQzQsIDB4NkU0NSwgMHgyMUM3LCAweDZFNDYsIDB4MjFDMCwgMHg2RTQ3LCAweDIxQzEsDQorICAgIDB4NkU0OSwgMHgyMUMzLCAweDZFNEEsIDB4MENBQiwgMHg2RTRCLCAweDIxRDAsIDB4NkU0RCwgMHgwQ0I5LA0KKyAgICAweDZFNEUsIDB4MENDMiwgMHg2RTUxLCAweDIxRDIsIDB4NkU1MiwgMHgyMUVBLCAweDZFNTMsIDB4MjFFMiwNCisgICAgMHg2RTU0LCAweDBDQTcsIDB4NkU1NSwgMHgyMUU4LCAweDZFNTYsIDB4MENCMywgMHg2RTU4LCAweDBDQjEsDQorICAgIDB4NkU1QSwgMHgyMUVFLCAweDZFNUIsIDB4MENCMCwgMHg2RTVDLCAweDIxRDgsIDB4NkU1RCwgMHgyMUNDLA0KKyAgICAweDZFNUUsIDB4MjFENiwgMHg2RTVGLCAweDBDQzcsIDB4NkU2MCwgMHgyMURDLCAweDZFNjEsIDB4MjFEOSwNCisgICAgMHg2RTYyLCAweDIxQzgsIDB4NkU2MywgMHgwQ0MzLCAweDZFNjQsIDB4MjFFNiwgMHg2RTY1LCAweDIxRTMsDQorICAgIDB4NkU2NiwgMHgyMUVCLCAweDZFNjcsIDB4MENBQSwgMHg2RTY4LCAweDIxRDcsIDB4NkU2OSwgMHgwQ0M2LA0KKyAgICAweDZFNkIsIDB4MjFERSwgMHg2RTZFLCAweDBDQjQsIDB4NkU2RiwgMHgwQ0I3LCAweDZFNzEsIDB4MjFERCwNCisgICAgMHg2RTcyLCAweDBDQzUsIDB4NkU3MywgMHgyMUNELCAweDZFNzQsIDB4MUY0OSwgMHg2RTc3LCAweDIxRTcsDQorICAgIDB4NkU3OCwgMHgyMUU1LCAweDZFNzksIDB4MjFFOSwgMHg2RTg4LCAweDIxQzQsIDB4NkU4OSwgMHgwQ0MwLA0KKyAgICAweDZFOEQsIDB4MjQ2QywgMHg2RThFLCAweDI0NkIsIDB4NkU4RiwgMHgyNDUxLCAweDZFOTAsIDB4MEU1NSwNCisgICAgMHg2RTkyLCAweDI0NkEsIDB4NkU5MywgMHgyNDU0LCAweDZFOTQsIDB4MjQ1NSwgMHg2RTk2LCAweDBFNUYsDQorICAgIDB4NkU5NywgMHgyNDczLCAweDZFOTgsIDB4MEU1QSwgMHg2RTk5LCAweDI0NjksIDB4NkU5QiwgMHgyNDRFLA0KKyAgICAweDZFOUMsIDB4MEU2MCwgMHg2RTlELCAweDBFNTYsIDB4NkU5RSwgMHgyNDVELCAweDZFOUYsIDB4MjQ1MywNCisgICAgMHg2RUEwLCAweDI0NTYsIDB4NkVBMSwgMHgyNDZFLCAweDZFQTIsIDB4MEU1MCwgMHg2RUEzLCAweDI0NzUsDQorICAgIDB4NkVBNCwgMHgyNDZELCAweDZFQTUsIDB4MEU1OSwgMHg2RUE2LCAweDI0NjIsIDB4NkVBNywgMHgwRTY0LA0KKyAgICAweDZFQUEsIDB4MEU2MywgMHg2RUFCLCAweDBFNUQsIDB4NkVBRSwgMHgyNDc0LCAweDZFQUYsIDB4MEU1MSwNCisgICAgMHg2RUIwLCAweDI0NjAsIDB4NkVCMSwgMHgyNDU3LCAweDZFQjIsIDB4MjQ2NCwgMHg2RUIzLCAweDI0NzAsDQorICAgIDB4NkVCNCwgMHgwRTY1LCAweDZFQjYsIDB4MEU1MywgMHg2RUI3LCAweDI0NUYsIDB4NkVCOSwgMHgyNDU4LA0KKyAgICAweDZFQkEsIDB4MEU1QywgMHg2RUJDLCAweDBFNUIsIDB4NkVCRCwgMHgyNDVCLCAweDZFQkUsIDB4MjQ2NSwNCisgICAgMHg2RUJGLCAweDI0NkYsIDB4NkVDMCwgMHgyNDUyLCAweDZFQzEsIDB4MjQ1QywgMHg2RUMyLCAweDBFNTQsDQorICAgIDB4NkVDMywgMHgyNDY2LCAweDZFQzQsIDB4MEU2MSwgMHg2RUM1LCAweDBFNTgsIDB4NkVDNiwgMHgyNDU5LA0KKyAgICAweDZFQzcsIDB4MEU1NywgMHg2RUM4LCAweDI0NTAsIDB4NkVDOSwgMHgyNDVFLCAweDZFQ0EsIDB4MjQ3MiwNCisgICAgMHg2RUNCLCAweDBDQkYsIDB4NkVDQywgMHgxMDFGLCAweDZFQ0QsIDB4MjQ2MSwgMHg2RUNFLCAweDI2RUIsDQorICAgIDB4NkVDRiwgMHgyNDYzLCAweDZFRDAsIDB4MjQ3MSwgMHg2RUQxLCAweDBFNUUsIDB4NkVEMiwgMHgyNDVBLA0KKyAgICAweDZFRDMsIDB4MEU1MiwgMHg2RUQ0LCAweDBFNjIsIDB4NkVENSwgMHgxMTlBLCAweDZFRDYsIDB4MjQ0RiwNCisgICAgMHg2RUQ4LCAweDI0NjgsIDB4NkVEQywgMHgyNDY3LCAweDZFRUIsIDB4MjcwNywgMHg2RUVDLCAweDEwMUMsDQorICAgIDB4NkVFRCwgMHgyNkZDLCAweDZFRUUsIDB4MjcwMSwgMHg2RUVGLCAweDEwMTEsIDB4NkVGMSwgMHgyNkVELA0KKyAgICAweDZFRjIsIDB4MTAxRSwgMHg2RUY0LCAweDEwMDgsIDB4NkVGNSwgMHgyNkVDLCAweDZFRjYsIDB4MjcwRCwNCisgICAgMHg2RUY3LCAweDEwMjAsIDB4NkVGOCwgMHgyNkYwLCAweDZFRjksIDB4MjcwMCwgMHg2RUZCLCAweDI2RjIsDQorICAgIDB4NkVGQywgMHgyNzEwLCAweDZFRkQsIDB4MjcwQywgMHg2RUZFLCAweDEwMDYsIDB4NkVGRiwgMHgxMDEwLA0KKyAgICAweDZGMDAsIDB4Mjk0NiwgMHg2RjAxLCAweDEwMUQsIDB4NkYwMiwgMHgxMDBFLCAweDZGMDMsIDB4MjZFRSwNCisgICAgMHg2RjA1LCAweDI3MEIsIDB4NkYwNiwgMHgxMDEyLCAweDZGMDcsIDB4MjcwOCwgMHg2RjA4LCAweDI3MTUsDQorICAgIDB4NkYwOSwgMHgyNkY0LCAweDZGMEEsIDB4MjZGRCwgMHg2RjBELCAweDI3MTMsIDB4NkYwRSwgMHgyNzA5LA0KKyAgICAweDZGMEYsIDB4MTAwRCwgMHg2RjEyLCAweDI2RkIsIDB4NkYxMywgMHgxMDA3LCAweDZGMTQsIDB4MTAwNSwNCisgICAgMHg2RjE1LCAweDEwMTcsIDB4NkYxOCwgMHgyNkY5LCAweDZGMTksIDB4MjZGNiwgMHg2RjFBLCAweDI2RjcsDQorICAgIDB4NkYxQywgMHgyNzBGLCAweDZGMUUsIDB4MjcxNCwgMHg2RjFGLCAweDI3MTIsIDB4NkYyMCwgMHgxMDBCLA0KKyAgICAweDZGMjEsIDB4MjcxNiwgMHg2RjIyLCAweDEwMEYsIDB4NkYyMywgMHgxMDE2LCAweDZGMjUsIDB4MjZFRiwNCisgICAgMHg2RjI2LCAweDI5MkUsIDB4NkYyNywgMHgyNkY4LCAweDZGMjksIDB4MTAwOSwgMHg2RjJBLCAweDEwMUIsDQorICAgIDB4NkYyQiwgMHgxMDE4LCAweDZGMkMsIDB4MTAwQywgMHg2RjJELCAweDI3MDIsIDB4NkYyRSwgMHgyNkYzLA0KKyAgICAweDZGMkYsIDB4MTAxOSwgMHg2RjMwLCAweDI3MDQsIDB4NkYzMSwgMHgxMDEzLCAweDZGMzIsIDB4MTAxNSwNCisgICAgMHg2RjMzLCAweDEwMDQsIDB4NkYzNSwgMHgyNzA2LCAweDZGMzYsIDB4MjZGRSwgMHg2RjM3LCAweDI2RjEsDQorICAgIDB4NkYzOCwgMHgxMDE0LCAweDZGMzksIDB4MjcwRSwgMHg2RjNBLCAweDI3MTEsIDB4NkYzQiwgMHgyNkZBLA0KKyAgICAweDZGM0MsIDB4MjcwNSwgMHg2RjNFLCAweDEwMEEsIDB4NkYzRiwgMHgxMTg5LCAweDZGNDAsIDB4MjcwMywNCisgICAgMHg2RjQxLCAweDI5MkQsIDB4NkY0MywgMHgyNzBBLCAweDZGNEUsIDB4MjZGNSwgMHg2RjRGLCAweDI5MzcsDQorICAgIDB4NkY1MCwgMHgyOTQxLCAweDZGNTEsIDB4MTE4QywgMHg2RjUyLCAweDI5NDAsIDB4NkY1MywgMHgyOTRDLA0KKyAgICAweDZGNTQsIDB4MTE4RSwgMHg2RjU1LCAweDI5M0UsIDB4NkY1NywgMHgyOTQyLCAweDZGNTgsIDB4MTE5OSwNCisgICAgMHg2RjVBLCAweDI5MzksIDB4NkY1QiwgMHgxMTkxLCAweDZGNUQsIDB4Mjk0NSwgMHg2RjVFLCAweDJCOUEsDQorICAgIDB4NkY1RiwgMHgxMTlELCAweDZGNjAsIDB4MTE5QywgMHg2RjYxLCAweDI5NDcsIDB4NkY2MiwgMHgyOTM2LA0KKyAgICAweDZGNjMsIDB4Mjk1MSwgMHg2RjY0LCAweDExOTcsIDB4NkY2NiwgMHgxMThELCAweDZGNjcsIDB4Mjk0QSwNCisgICAgMHg2RjY5LCAweDI5NEUsIDB4NkY2QSwgMHgyOTUzLCAweDZGNkIsIDB4Mjk0OCwgMHg2RjZDLCAweDI5M0MsDQorICAgIDB4NkY2RCwgMHgxMTkwLCAweDZGNkUsIDB4MTE5MywgMHg2RjZGLCAweDExOUIsIDB4NkY3MCwgMHgxMTk2LA0KKyAgICAweDZGNzIsIDB4MjkzRiwgMHg2RjczLCAweDI2RkYsIDB4NkY3NiwgMHgyOTNCLCAweDZGNzcsIDB4Mjk1MiwNCisgICAgMHg2Rjc4LCAweDExOTIsIDB4NkY3QSwgMHgxMTk1LCAweDZGN0IsIDB4Mjk1NCwgMHg2RjdDLCAweDExOEEsDQorICAgIDB4NkY3RCwgMHgyOTQ5LCAweDZGN0UsIDB4MjkyRiwgMHg2RjdGLCAweDI5NEYsIDB4NkY4MCwgMHgxM0ZDLA0KKyAgICAweDZGODIsIDB4MjkzRCwgMHg2Rjg0LCAweDExOEIsIDB4NkY4NSwgMHgyOTM4LCAweDZGODYsIDB4MTE4RiwNCisgICAgMHg2Rjg3LCAweDI5MzAsIDB4NkY4OCwgMHgxMDFBLCAweDZGODksIDB4MjkzNCwgMHg2RjhCLCAweDI5NEQsDQorICAgIDB4NkY4QywgMHgyOTM1LCAweDZGOEQsIDB4MjkzMywgMHg2RjhFLCAweDExOTQsIDB4NkY5MCwgMHgyOTRCLA0KKyAgICAweDZGOTIsIDB4MjkzMiwgMHg2RjkzLCAweDI5NDQsIDB4NkY5NCwgMHgyOTQzLCAweDZGOTUsIDB4Mjk1MCwNCisgICAgMHg2Rjk2LCAweDI5M0EsIDB4NkY5NywgMHgxMTk4LCAweDZGOUUsIDB4MkI5RCwgMHg2RkEwLCAweDEyRUIsDQorICAgIDB4NkZBMSwgMHgxMkUxLCAweDZGQTIsIDB4MkJBOSwgMHg2RkEzLCAweDJCOTUsIDB4NkZBNCwgMHgxMkUzLA0KKyAgICAweDZGQTUsIDB4MkJBMSwgMHg2RkE2LCAweDEyRUEsIDB4NkZBNywgMHgxMkU1LCAweDZGQTgsIDB4MkI5RiwNCisgICAgMHg2RkE5LCAweDJEOEUsIDB4NkZBQSwgMHgyQkE1LCAweDZGQUIsIDB4MkJBQiwgMHg2RkFDLCAweDJCQTQsDQorICAgIDB4NkZBRCwgMHgyQjkzLCAweDZGQUUsIDB4MkJBMiwgMHg2RkFGLCAweDJCQUQsIDB4NkZCMCwgMHgyQkFGLA0KKyAgICAweDZGQjEsIDB4MTJFMCwgMHg2RkIyLCAweDJCQUUsIDB4NkZCMywgMHgxMkU2LCAweDZGQjQsIDB4MTJFQywNCisgICAgMHg2RkI2LCAweDEyRTksIDB4NkZCOCwgMHgyQkE4LCAweDZGQjksIDB4MTJFOCwgMHg2RkJBLCAweDJCQTMsDQorICAgIDB4NkZCQywgMHgyQjk3LCAweDZGQkQsIDB4MkI5QywgMHg2RkJGLCAweDJCQTcsIDB4NkZDMCwgMHgxMkU3LA0KKyAgICAweDZGQzEsIDB4MTJFNCwgMHg2RkMyLCAweDEyREYsIDB4NkZDMywgMHgxMkUyLCAweDZGQzQsIDB4MkI5QiwNCisgICAgMHg2RkM2LCAweDI5MzEsIDB4NkZDNywgMHgyQjk2LCAweDZGQzgsIDB4MkI5OSwgMHg2RkM5LCAweDJCQUEsDQorICAgIDB4NkZDQSwgMHgyQjlFLCAweDZGQ0IsIDB4MkI5NCwgMHg2RkNDLCAweDJEOEQsIDB4NkZDRCwgMHgyQkFDLA0KKyAgICAweDZGQ0UsIDB4MkI5OCwgMHg2RkNGLCAweDJCQTYsIDB4NkZENCwgMHgyRDkwLCAweDZGRDUsIDB4MTQwMCwNCisgICAgMHg2RkQ4LCAweDEzRjQsIDB4NkZEQiwgMHgxM0Y4LCAweDZGREMsIDB4MkQ5MiwgMHg2RkRELCAweDJEOTgsDQorICAgIDB4NkZERSwgMHgyRDk2LCAweDZGREYsIDB4MTNGNiwgMHg2RkUwLCAweDEzRjcsIDB4NkZFMSwgMHgxM0ZFLA0KKyAgICAweDZGRTIsIDB4MkQ5OSwgMHg2RkUzLCAweDJEOTEsIDB4NkZFNCwgMHgxM0Y5LCAweDZGRTYsIDB4MkQ5NSwNCisgICAgMHg2RkU3LCAweDJEOTQsIDB4NkZFOCwgMHgyRDlBLCAweDZGRTksIDB4MTNGRiwgMHg2RkVCLCAweDEzRkEsDQorICAgIDB4NkZFQywgMHgxM0ZELCAweDZGRUQsIDB4MkQ5MywgMHg2RkVFLCAweDE0MDEsIDB4NkZFRiwgMHgxM0ZCLA0KKyAgICAweDZGRjAsIDB4MTQwMiwgMHg2RkYxLCAweDEzRjUsIDB4NkZGMiwgMHgyRDk3LCAweDZGRjQsIDB4MkQ4RiwNCisgICAgMHg2RkY3LCAweDJGNEUsIDB4NkZGQSwgMHgxNEVCLCAweDZGRkIsIDB4MkY0QiwgMHg2RkZDLCAweDJGNEQsDQorICAgIDB4NkZGRSwgMHgxNEU5LCAweDZGRkYsIDB4MkY0OSwgMHg3MDAwLCAweDJGNEEsIDB4NzAwMSwgMHgyRjQ1LA0KKyAgICAweDcwMDQsIDB4MkJBMCwgMHg3MDA1LCAweDJGNDYsIDB4NzAwNiwgMHgxNEVBLCAweDcwMDcsIDB4MkY0MiwNCisgICAgMHg3MDA5LCAweDE0RTcsIDB4NzAwQSwgMHgyRjRGLCAweDcwMEIsIDB4MTRFOCwgMHg3MDBDLCAweDJGNDMsDQorICAgIDB4NzAwRCwgMHgyRjQ0LCAweDcwMEUsIDB4MkY0OCwgMHg3MDBGLCAweDE0RUQsIDB4NzAxMSwgMHgxNEVDLA0KKyAgICAweDcwMTQsIDB4MkY0NywgMHg3MDE1LCAweDE1OEYsIDB4NzAxNiwgMHgzMEFELCAweDcwMTcsIDB4MzBCMywNCisgICAgMHg3MDE4LCAweDE1OTAsIDB4NzAxOSwgMHgzMEFBLCAweDcwMUEsIDB4MTU4RCwgMHg3MDFCLCAweDE1OEEsDQorICAgIDB4NzAxQywgMHgzMEI1LCAweDcwMUQsIDB4MTU4RSwgMHg3MDFGLCAweDE1OEIsIDB4NzAyMCwgMHgzMEFDLA0KKyAgICAweDcwMjEsIDB4MzBBRiwgMHg3MDIyLCAweDMwQjAsIDB4NzAyMywgMHgzMEIxLCAweDcwMjQsIDB4MzBCNCwNCisgICAgMHg3MDI2LCAweDJGNEMsIDB4NzAyNywgMHgzMEFCLCAweDcwMjgsIDB4MTU4QywgMHg3MDI5LCAweDMwQjIsDQorICAgIDB4NzAyQSwgMHgzMUVGLCAweDcwMkIsIDB4MzBBRSwgMHg3MDJGLCAweDMxRTYsIDB4NzAzMCwgMHgxNjFELA0KKyAgICAweDcwMzEsIDB4MzFFOSwgMHg3MDMyLCAweDE2MUUsIDB4NzAzMywgMHgzMUYyLCAweDcwMzQsIDB4MzFFOCwNCisgICAgMHg3MDM1LCAweDMxRTUsIDB4NzAzNywgMHgzMUU3LCAweDcwMzgsIDB4MzFFQiwgMHg3MDM5LCAweDMxRUUsDQorICAgIDB4NzAzQSwgMHgzMUVELCAweDcwM0IsIDB4MzFGMSwgMHg3MDNDLCAweDMxRTQsIDB4NzAzRSwgMHgxNjFDLA0KKyAgICAweDcwM0YsIDB4MzFFQywgMHg3MDQwLCAweDMxRjAsIDB4NzA0MSwgMHgzMUYzLCAweDcwNDIsIDB4MzFFQSwNCisgICAgMHg3MDQzLCAweDMyRDgsIDB4NzA0NCwgMHgzMkQ5LCAweDcwNDUsIDB4MzJERCwgMHg3MDQ2LCAweDMyREUsDQorICAgIDB4NzA0OCwgMHgzMkRCLCAweDcwNDksIDB4MzJEQywgMHg3MDRBLCAweDMyREEsIDB4NzA0QywgMHgxNjdBLA0KKyAgICAweDcwNTEsIDB4MTZDOCwgMHg3MDUyLCAweDMzOEMsIDB4NzA1NSwgMHgzMzg5LCAweDcwNTYsIDB4MzM4QSwNCisgICAgMHg3MDU3LCAweDMzOEIsIDB4NzA1OCwgMHgxNkM5LCAweDcwNUEsIDB4MzQyMywgMHg3MDVCLCAweDM0MjIsDQorICAgIDB4NzA1RCwgMHgzNDhBLCAweDcwNUUsIDB4MTcyMiwgMHg3MDVGLCAweDM0ODgsIDB4NzA2MCwgMHgzNDhCLA0KKyAgICAweDcwNjEsIDB4MzQ4OSwgMHg3MDYyLCAweDM0RDAsIDB4NzA2MywgMHgxNzQ0LCAweDcwNjQsIDB4MTc1MiwNCisgICAgMHg3MDY1LCAweDM1MUMsIDB4NzA2NiwgMHgzNTA2LCAweDcwNjgsIDB4MzUxQiwgMHg3MDY5LCAweDM1NDcsDQorICAgIDB4NzA2QSwgMHgzNTQ4LCAweDcwNkIsIDB4MDJFNiwgMHg3MDcwLCAweDAzRjIsIDB4NzA3MSwgMHgxODBBLA0KKyAgICAweDcwNzQsIDB4MThDMywgMHg3MDc2LCAweDA0RTYsIDB4NzA3OCwgMHgwNEU5LCAweDcwN0EsIDB4MThDNCwNCisgICAgMHg3MDdDLCAweDA0RTcsIDB4NzA3RCwgMHgwNEU4LCAweDcwODIsIDB4MTlGNywgMHg3MDgzLCAweDE5RjksDQorICAgIDB4NzA4NCwgMHgxOUY0LCAweDcwODUsIDB4MTlGMSwgMHg3MDg2LCAweDE5RjMsIDB4NzA4QSwgMHgwNjQzLA0KKyAgICAweDcwOEUsIDB4MDY0MSwgMHg3MDkxLCAweDE5RjUsIDB4NzA5MiwgMHgwNjQyLCAweDcwOTMsIDB4MTlGMiwNCisgICAgMHg3MDk0LCAweDE5RUYsIDB4NzA5NSwgMHgwNjQwLCAweDcwOTYsIDB4MTlGNiwgMHg3MDk4LCAweDE5RjAsDQorICAgIDB4NzA5OSwgMHgwNjQ0LCAweDcwOUEsIDB4MTlGOCwgMHg3MDlGLCAweDFCNjYsIDB4NzBBMSwgMHgxQjZBLA0KKyAgICAweDcwQTQsIDB4MDc5MCwgMHg3MEE5LCAweDFCNkQsIDB4NzBBQiwgMHgwNzg4LCAweDcwQUMsIDB4MDc4QiwNCisgICAgMHg3MEFELCAweDA3OEQsIDB4NzBBRSwgMHgwNzhGLCAweDcwQUYsIDB4MDc4QywgMHg3MEIwLCAweDFCNjksDQorICAgIDB4NzBCMSwgMHgxQjY4LCAweDcwQjMsIDB4MDc4QSwgMHg3MEI0LCAweDFCNkIsIDB4NzBCNSwgMHgxQjZDLA0KKyAgICAweDcwQjcsIDB4MUI2NSwgMHg3MEI4LCAweDA3OEUsIDB4NzBCQSwgMHgwNzg5LCAweDcwQkUsIDB4MUI2NywNCisgICAgMHg3MEM1LCAweDFEMjcsIDB4NzBDNiwgMHgxRDI4LCAweDcwQzcsIDB4MUQyOSwgMHg3MEM4LCAweDA5MjEsDQorICAgIDB4NzBDQSwgMHgwOTFELCAweDcwQ0IsIDB4MUQxRSwgMHg3MENELCAweDFEMjYsIDB4NzBDRSwgMHgxRDJCLA0KKyAgICAweDcwQ0YsIDB4MDkyMiwgMHg3MEQxLCAweDFEMUMsIDB4NzBEMiwgMHgxRDIyLCAweDcwRDMsIDB4MUQxQiwNCisgICAgMHg3MEQ0LCAweDFEMjUsIDB4NzBENywgMHgxRDIxLCAweDcwRDgsIDB4MDkxRSwgMHg3MEQ5LCAweDA5MjAsDQorICAgIDB4NzBEQSwgMHgxRDJBLCAweDcwREMsIDB4MUQxQSwgMHg3MERELCAweDFEMUQsIDB4NzBERSwgMHgxRDIzLA0KKyAgICAweDcwRTAsIDB4MUQyNCwgMHg3MEUxLCAweDFEMkMsIDB4NzBFMiwgMHgxRDIwLCAweDcwRTQsIDB4MDkxRiwNCisgICAgMHg3MEVGLCAweDBCMTYsIDB4NzBGMCwgMHgxRjcyLCAweDcwRjMsIDB4MUY3NCwgMHg3MEY0LCAweDFGNzAsDQorICAgIDB4NzBGNiwgMHgxRjdDLCAweDcwRjcsIDB4MUY2RSwgMHg3MEY4LCAweDFGN0IsIDB4NzBGOSwgMHgwQjEyLA0KKyAgICAweDcwRkEsIDB4MUY2QywgMHg3MEZCLCAweDIxRjIsIDB4NzBGQywgMHgxRjc2LCAweDcwRkQsIDB4MEIxNSwNCisgICAgMHg3MEZGLCAweDFGNzcsIDB4NzEwMCwgMHgxRjdBLCAweDcxMDIsIDB4MUY3RSwgMHg3MTA0LCAweDFGNzMsDQorICAgIDB4NzEwNiwgMHgxRjc4LCAweDcxMDksIDB4MEIxMywgMHg3MTBBLCAweDBCMTQsIDB4NzEwQiwgMHgxRjdELA0KKyAgICAweDcxMEMsIDB4MUY3MSwgMHg3MTBELCAweDFGNkQsIDB4NzEwRSwgMHgxRjdGLCAweDcxMTAsIDB4MUY3NSwNCisgICAgMHg3MTEzLCAweDFGNzksIDB4NzExNywgMHgxRjZGLCAweDcxMTksIDB4MENDOCwgMHg3MTFBLCAweDBDQzksDQorICAgIDB4NzExQiwgMHgyMUZDLCAweDcxMUMsIDB4MENDRiwgMHg3MTFFLCAweDIxRjAsIDB4NzExRiwgMHgyMUY5LA0KKyAgICAweDcxMjAsIDB4MjFFRiwgMHg3MTIxLCAweDBDQ0MsIDB4NzEyMiwgMHgyMUY3LCAweDcxMjMsIDB4MjFGNSwNCisgICAgMHg3MTI1LCAweDIxRjYsIDB4NzEyNiwgMHgwQ0NBLCAweDcxMjgsIDB4MjFGQSwgMHg3MTJFLCAweDIxRjMsDQorICAgIDB4NzEyRiwgMHgyMUYxLCAweDcxMzAsIDB4MENDQiwgMHg3MTMxLCAweDIxRjQsIDB4NzEzMiwgMHgyMUY4LA0KKyAgICAweDcxMzYsIDB4MENDRCwgMHg3MTNBLCAweDIxRkIsIDB4NzE0MSwgMHgyNDdCLCAweDcxNDIsIDB4MjQ4MiwNCisgICAgMHg3MTQzLCAweDI0ODQsIDB4NzE0NCwgMHgyNDhBLCAweDcxNDYsIDB4MEU3MiwgMHg3MTQ3LCAweDI0NzYsDQorICAgIDB4NzE0OSwgMHgwRTZBLCAweDcxNEIsIDB4MjQ4NSwgMHg3MTRDLCAweDBFNkYsIDB4NzE0RCwgMHgyNDhCLA0KKyAgICAweDcxNEUsIDB4MEU2NiwgMHg3MTUwLCAweDI0ODgsIDB4NzE1MiwgMHgyNDc4LCAweDcxNTMsIDB4MjQ4OSwNCisgICAgMHg3MTU0LCAweDI0NzcsIDB4NzE1NiwgMHgwRTc0LCAweDcxNTgsIDB4MjQ4MywgMHg3MTU5LCAweDBFNjcsDQorICAgIDB4NzE1QSwgMHgyNDhDLCAweDcxNUMsIDB4MEU2QywgMHg3MTVELCAweDI0N0MsIDB4NzE1RSwgMHgwRTcxLA0KKyAgICAweDcxNUYsIDB4MjQ4NywgMHg3MTYwLCAweDI0N0EsIDB4NzE2MSwgMHgyNDgxLCAweDcxNjIsIDB4MjQ3RCwNCisgICAgMHg3MTYzLCAweDI0NzksIDB4NzE2NCwgMHgwRTY5LCAweDcxNjUsIDB4MEU3MCwgMHg3MTY2LCAweDBFNkUsDQorICAgIDB4NzE2NywgMHgwRTZCLCAweDcxNjgsIDB4MEU3MywgMHg3MTY5LCAweDBFNjgsIDB4NzE2QSwgMHgyNDgwLA0KKyAgICAweDcxNkMsIDB4MEU2RCwgMHg3MTZFLCAweDBDQ0UsIDB4NzE3MCwgMHgyNDg2LCAweDcxNzIsIDB4MjQ3RSwNCisgICAgMHg3MTc4LCAweDI0N0YsIDB4NzE3QiwgMHgyNzFFLCAweDcxN0QsIDB4MTAyMywgMHg3MTgwLCAweDI3MUEsDQorICAgIDB4NzE4MSwgMHgyNzIwLCAweDcxODIsIDB4MjcxQywgMHg3MTg0LCAweDEwMjUsIDB4NzE4NSwgMHgyNzFCLA0KKyAgICAweDcxODYsIDB4MjcxRiwgMHg3MTg3LCAweDI3MTcsIDB4NzE4OSwgMHgyNzE5LCAweDcxOEEsIDB4MTAyNCwNCisgICAgMHg3MThGLCAweDI3MUQsIDB4NzE5MCwgMHgyNzE4LCAweDcxOTIsIDB4MTAyNiwgMHg3MTk0LCAweDEwMjEsDQorICAgIDB4NzE5NywgMHgyNzIxLCAweDcxOTksIDB4MTAyMiwgMHg3MTlBLCAweDI5NUEsIDB4NzE5QiwgMHgyOTU3LA0KKyAgICAweDcxOUMsIDB4Mjk2MywgMHg3MTlELCAweDI5NUQsIDB4NzE5RSwgMHgyOTVGLCAweDcxOUYsIDB4MTE5RSwNCisgICAgMHg3MUEwLCAweDI5NTksIDB4NzFBMSwgMHgyOTYxLCAweDcxQTQsIDB4Mjk2MCwgMHg3MUE1LCAweDI5NUUsDQorICAgIDB4NzFBNywgMHgyOTY0LCAweDcxQTgsIDB4MTFBMSwgMHg3MUE5LCAweDI5NUIsIDB4NzFBQSwgMHgyOTYyLA0KKyAgICAweDcxQUMsIDB4MTE5RiwgMHg3MUFGLCAweDI5NTYsIDB4NzFCMCwgMHgyOTU4LCAweDcxQjEsIDB4MTFBMCwNCisgICAgMHg3MUIyLCAweDI5NTUsIDB4NzFCMywgMHgyOTY1LCAweDcxQjUsIDB4Mjk1QywgMHg3MUI4LCAweDJCQjMsDQorICAgIDB4NzFCOSwgMHgxMkYzLCAweDcxQkMsIDB4MkJCRSwgMHg3MUJELCAweDJCQkMsIDB4NzFCRSwgMHgxMkVELA0KKyAgICAweDcxQkYsIDB4MkJCMiwgMHg3MUMwLCAweDJCQjUsIDB4NzFDMSwgMHgyQkI2LCAweDcxQzIsIDB4MkJCMSwNCisgICAgMHg3MUMzLCAweDEyRjcsIDB4NzFDNCwgMHgxMkY4LCAweDcxQzUsIDB4MkJCMCwgMHg3MUM2LCAweDJCQkYsDQorICAgIDB4NzFDNywgMHgyQkJBLCAweDcxQzgsIDB4MTJGMSwgMHg3MUM5LCAweDEyRUUsIDB4NzFDQSwgMHgyQkI5LA0KKyAgICAweDcxQ0IsIDB4MkJCNywgMHg3MUNFLCAweDEyRjQsIDB4NzFDRiwgMHgyQkJCLCAweDcxRDAsIDB4MTJFRiwNCisgICAgMHg3MUQyLCAweDEyRjAsIDB4NzFENCwgMHgyQkI4LCAweDcxRDUsIDB4MTJGMiwgMHg3MUQ2LCAweDJCQjQsDQorICAgIDB4NzFEOCwgMHgyQkJELCAweDcxRDksIDB4MTJGNSwgMHg3MURBLCAweDJCQzAsIDB4NzFEQiwgMHgyQkMxLA0KKyAgICAweDcxREMsIDB4MTJGNiwgMHg3MURGLCAweDE0MDQsIDB4NzFFMCwgMHgxNDBCLCAweDcxRTEsIDB4MkQ5QiwNCisgICAgMHg3MUUyLCAweDJEQTEsIDB4NzFFNCwgMHgyRDlGLCAweDcxRTUsIDB4MTQwNywgMHg3MUU2LCAweDE0MDYsDQorICAgIDB4NzFFNywgMHgxNDAzLCAweDcxRTgsIDB4MkQ5RCwgMHg3MUVDLCAweDE0MDksIDB4NzFFRCwgMHgxNDA4LA0KKyAgICAweDcxRUUsIDB4MTQwNSwgMHg3MUYwLCAweDJEQTAsIDB4NzFGMSwgMHgyRDlDLCAweDcxRjIsIDB4MkQ5RSwNCisgICAgMHg3MUY0LCAweDE0MEEsIDB4NzFGOCwgMHgxNEYxLCAweDcxRjksIDB4MkY1MiwgMHg3MUZCLCAweDE0RUUsDQorICAgIDB4NzFGQywgMHgxNEVGLCAweDcxRkQsIDB4MkY1NCwgMHg3MUZFLCAweDE0RjAsIDB4NzFGRiwgMHgyRjUxLA0KKyAgICAweDcyMDEsIDB4MkY1MCwgMHg3MjAyLCAweDMwQjksIDB4NzIwMywgMHgyRjUzLCAweDcyMDUsIDB4MzBCQSwNCisgICAgMHg3MjA2LCAweDE1OTEsIDB4NzIwNywgMHgzMEI4LCAweDcyMEEsIDB4MzBCNywgMHg3MjBDLCAweDMwQjYsDQorICAgIDB4NzIwRCwgMHgxNTkyLCAweDcyMTAsIDB4MTYxRiwgMHg3MjEzLCAweDMxRjQsIDB4NzIxNCwgMHgzMUY1LA0KKyAgICAweDcyMTksIDB4MzJFMSwgMHg3MjFBLCAweDMyRTAsIDB4NzIxQiwgMHgxNjdCLCAweDcyMUQsIDB4MzJERiwNCisgICAgMHg3MjFFLCAweDMzOEQsIDB4NzIxRiwgMHgzMzhFLCAweDcyMjIsIDB4MzQyNCwgMHg3MjIzLCAweDM0OEMsDQorICAgIDB4NzIyNiwgMHgzNEQxLCAweDcyMjcsIDB4MzUzNSwgMHg3MjI4LCAweDE3NjYsIDB4NzIyOSwgMHgzNTQ5LA0KKyAgICAweDcyMkEsIDB4MDJFNywgMHg3MjJDLCAweDA2NDUsIDB4NzIyRCwgMHgwNjQ2LCAweDcyMzAsIDB4MDc5MSwNCisgICAgMHg3MjM1LCAweDE0MEMsIDB4NzIzNiwgMHgwMkU4LCAweDcyMzgsIDB4MDY0NywgMHg3MjM5LCAweDA5MjMsDQorICAgIDB4NzIzQSwgMHgwRTc1LCAweDcyM0IsIDB4MDJFOSwgMHg3MjNELCAweDBCMTcsIDB4NzIzRSwgMHgxMDI3LA0KKyAgICAweDcyM0YsIDB4MTc4RCwgMHg3MjQxLCAweDFCNkUsIDB4NzI0MiwgMHgxRDJELCAweDcyNDQsIDB4MjcyMiwNCisgICAgMHg3MjQ2LCAweDE0MEQsIDB4NzI0NywgMHgwMkVBLCAweDcyNDgsIDB4MDY0OCwgMHg3MjQ5LCAweDFCNkYsDQorICAgIDB4NzI0QSwgMHgxQjcwLCAweDcyNEIsIDB4MjFGRCwgMHg3MjRDLCAweDBDRDAsIDB4NzI0RiwgMHgyNDhELA0KKyAgICAweDcyNTIsIDB4MEU3NiwgMHg3MjUzLCAweDI3MjMsIDB4NzI1NiwgMHgxMUEyLCAweDcyNTgsIDB4MTU5MywNCisgICAgMHg3MjU5LCAweDAyRUIsIDB4NzI1QSwgMHgyMUZFLCAweDcyNUIsIDB4MDJFQywgMHg3MjVELCAweDAzRjQsDQorICAgIDB4NzI1RSwgMHgxODBCLCAweDcyNUYsIDB4MDNGMywgMHg3MjYwLCAweDA0RUMsIDB4NzI2MSwgMHgwNEVCLA0KKyAgICAweDcyNjIsIDB4MDRFQSwgMHg3MjYzLCAweDE4QzUsIDB4NzI2NywgMHgwNjQ5LCAweDcyNjksIDB4MDY0QSwNCisgICAgMHg3MjZBLCAweDE5RkEsIDB4NzI2QywgMHgxQjcxLCAweDcyNkUsIDB4MUI3NCwgMHg3MjZGLCAweDA3OTMsDQorICAgIDB4NzI3MCwgMHgxQjcyLCAweDcyNzIsIDB4MDc5MiwgMHg3MjczLCAweDFCNzMsIDB4NzI3NCwgMHgwNzk0LA0KKyAgICAweDcyNzYsIDB4MUQzMCwgMHg3Mjc3LCAweDFEMkYsIDB4NzI3OCwgMHgxRDJFLCAweDcyNzksIDB4MDkyNCwNCisgICAgMHg3MjdCLCAweDFGODEsIDB4NzI3QywgMHgxRjgyLCAweDcyN0QsIDB4MEIxOCwgMHg3MjdFLCAweDFGODAsDQorICAgIDB4NzI3RiwgMHgxRjgzLCAweDcyODAsIDB4MENEMiwgMHg3MjgxLCAweDBCMTksIDB4NzI4NCwgMHgwQ0QxLA0KKyAgICAweDcyODUsIDB4MjIwMiwgMHg3Mjg2LCAweDIyMDEsIDB4NzI4OCwgMHgyMUZGLCAweDcyODksIDB4MjIwMCwNCisgICAgMHg3MjhCLCAweDIyMDMsIDB4NzI4QywgMHgyNDhGLCAweDcyOEQsIDB4MjQ4RSwgMHg3MjhFLCAweDI0OTIsDQorICAgIDB4NzI5MCwgMHgyNDkxLCAweDcyOTEsIDB4MjQ5MCwgMHg3MjkyLCAweDEwMjgsIDB4NzI5MywgMHgyNzI2LA0KKyAgICAweDcyOTUsIDB4MjcyNSwgMHg3Mjk2LCAweDEwMjksIDB4NzI5NywgMHgyNzI0LCAweDcyOTgsIDB4Mjk2NiwNCisgICAgMHg3MjlBLCAweDI5NjcsIDB4NzI5QiwgMHgxMUEzLCAweDcyOUQsIDB4MkJDMiwgMHg3MjlFLCAweDJCQzMsDQorICAgIDB4NzJBMSwgMHgzMEJGLCAweDcyQTIsIDB4MTU5NCwgMHg3MkEzLCAweDMwQkUsIDB4NzJBNCwgMHgzMEJELA0KKyAgICAweDcyQTUsIDB4MzBCQiwgMHg3MkE2LCAweDMwQkMsIDB4NzJBNywgMHgxNjdDLCAweDcyQTgsIDB4MzFGNiwNCisgICAgMHg3MkE5LCAweDMzOEYsIDB4NzJBQSwgMHgzNEQyLCAweDcyQUMsIDB4MDJFRCwgMHg3MkFFLCAweDE3QUYsDQorICAgIDB4NzJBRiwgMHgwMzU1LCAweDcyQjAsIDB4MTdCMCwgMHg3MkI0LCAweDE4MEMsIDB4NzJCNSwgMHgxODBELA0KKyAgICAweDcyQkEsIDB4MThDQiwgMHg3MkJELCAweDE4QzcsIDB4NzJCRiwgMHgxOEM2LCAweDcyQzAsIDB4MDY0QiwNCisgICAgMHg3MkMxLCAweDE4Q0EsIDB4NzJDMiwgMHgwNEVFLCAweDcyQzMsIDB4MThDOCwgMHg3MkM0LCAweDA0RUQsDQorICAgIDB4NzJDNSwgMHgxOENDLCAweDcyQzYsIDB4MThDOSwgMHg3MkM5LCAweDE5RkUsIDB4NzJDQSwgMHgxQjc1LA0KKyAgICAweDcyQ0IsIDB4MTlGQywgMHg3MkNDLCAweDFBMDMsIDB4NzJDRSwgMHgwNjRDLCAweDcyRDAsIDB4MDY0RiwNCisgICAgMHg3MkQxLCAweDFBMDQsIDB4NzJEMiwgMHgxQTAwLCAweDcyRDQsIDB4MUEwMSwgMHg3MkQ2LCAweDE5RkIsDQorICAgIDB4NzJENywgMHgwNjRFLCAweDcyRDgsIDB4MTlGRCwgMHg3MkQ5LCAweDA2NEQsIDB4NzJEQSwgMHgxQTAyLA0KKyAgICAweDcyREMsIDB4MTlGRiwgMHg3MkRGLCAweDFCNzksIDB4NzJFMCwgMHgwNzk2LCAweDcyRTEsIDB4MDc5NywNCisgICAgMHg3MkUzLCAweDFCN0MsIDB4NzJFNCwgMHgxQjc2LCAweDcyRTYsIDB4MUI3QiwgMHg3MkU4LCAweDFCNzcsDQorICAgIDB4NzJFOSwgMHgwNzk1LCAweDcyRUEsIDB4MUI3QSwgMHg3MkVCLCAweDFCNzgsIDB4NzJGMywgMHgxRDM2LA0KKyAgICAweDcyRjQsIDB4MUQzMywgMHg3MkY2LCAweDFEMzUsIDB4NzJGNywgMHgwOTI5LCAweDcyRjgsIDB4MDkyOCwNCisgICAgMHg3MkY5LCAweDA5MjYsIDB4NzJGQSwgMHgxRDMyLCAweDcyRkIsIDB4MUQzNywgMHg3MkZDLCAweDA5MjUsDQorICAgIDB4NzJGRCwgMHgwOTI3LCAweDcyRkUsIDB4MUQzNCwgMHg3MkZGLCAweDFGOEIsIDB4NzMwMCwgMHgxRDMxLA0KKyAgICAweDczMDEsIDB4MUQzOCwgMHg3MzA3LCAweDFGODYsIDB4NzMwOCwgMHgxRjhBLCAweDczMEEsIDB4MUY4OSwNCisgICAgMHg3MzBCLCAweDIyMDUsIDB4NzMwQywgMHgyMjEwLCAweDczMEYsIDB4MUY4QywgMHg3MzExLCAweDFGODcsDQorICAgIDB4NzMxMiwgMHgyMjA0LCAweDczMTMsIDB4MEIxRCwgMHg3MzE2LCAweDBCMUMsIDB4NzMxNywgMHgxRjg1LA0KKyAgICAweDczMTgsIDB4MUY4OCwgMHg3MzE5LCAweDBCMUUsIDB4NzMxQiwgMHgwQjFCLCAweDczMUMsIDB4MEIxQSwNCisgICAgMHg3MzFELCAweDFGODQsIDB4NzMxRSwgMHgxRjhELCAweDczMjIsIDB4MjIwNywgMHg3MzIzLCAweDIyMEUsDQorICAgIDB4NzMyNSwgMHgwQ0Q0LCAweDczMjYsIDB4MjIwRCwgMHg3MzI3LCAweDIyMEEsIDB4NzMyOSwgMHgwQ0Q2LA0KKyAgICAweDczMkQsIDB4MjIwQywgMHg3MzMwLCAweDIyMDYsIDB4NzMzMSwgMHgyMjA4LCAweDczMzIsIDB4MjIwQiwNCisgICAgMHg3MzMzLCAweDIyMDksIDB4NzMzNCwgMHgwQ0Q1LCAweDczMzUsIDB4MjIwRiwgMHg3MzM2LCAweDBDRDMsDQorICAgIDB4NzMzNywgMHgwRTc3LCAweDczM0EsIDB4MjQ5NiwgMHg3MzNCLCAweDI0OTUsIDB4NzMzQywgMHgyNDkzLA0KKyAgICAweDczM0UsIDB4MEU3QSwgMHg3MzNGLCAweDBFNzksIDB4NzM0MCwgMHgyNDk3LCAweDczNDIsIDB4MjQ5NCwNCisgICAgMHg3MzQzLCAweDI3MjcsIDB4NzM0NCwgMHgxMDJBLCAweDczNDUsIDB4MEU3OCwgMHg3MzQ5LCAweDI0OTksDQorICAgIDB4NzM0QSwgMHgyNDk4LCAweDczNEMsIDB4MjcyQSwgMHg3MzRELCAweDI3MjgsIDB4NzM0RSwgMHgxMUE0LA0KKyAgICAweDczNTAsIDB4MTAyQiwgMHg3MzUxLCAweDI3MjksIDB4NzM1MiwgMHgyOTY5LCAweDczNTcsIDB4MTFBNSwNCisgICAgMHg3MzU4LCAweDI5NjgsIDB4NzM1OSwgMHgyOTcxLCAweDczNUEsIDB4Mjk3MCwgMHg3MzVCLCAweDI5NkUsDQorICAgIDB4NzM1RCwgMHgyOTZELCAweDczNUUsIDB4Mjk2QSwgMHg3MzVGLCAweDI5NkIsIDB4NzM2MCwgMHgyOTZDLA0KKyAgICAweDczNjEsIDB4Mjk2RiwgMHg3MzYyLCAweDI5NzIsIDB4NzM2NSwgMHgyQkM4LCAweDczNjYsIDB4MkJDNSwNCisgICAgMHg3MzY3LCAweDJCQzYsIDB4NzM2OCwgMHgxMkY5LCAweDczNjksIDB4MkJDNCwgMHg3MzZBLCAweDJCQ0EsDQorICAgIDB4NzM2QiwgMHgyQkM5LCAweDczNkMsIDB4MkJDNywgMHg3MzZFLCAweDJEQTMsIDB4NzM2RiwgMHgyREE0LA0KKyAgICAweDczNzAsIDB4MTQwRSwgMHg3MzcyLCAweDE0MEYsIDB4NzM3MywgMHgyREEyLCAweDczNzUsIDB4MTRGMywNCisgICAgMHg3Mzc2LCAweDJGNTUsIDB4NzM3NywgMHgxNEYyLCAweDczNzgsIDB4MTU5NSwgMHg3MzdBLCAweDE1OTYsDQorICAgIDB4NzM3QiwgMHgxNjIwLCAweDczN0MsIDB4MzFGOCwgMHg3MzdELCAweDMxRjcsIDB4NzM3RSwgMHgzMkUyLA0KKyAgICAweDczN0YsIDB4MzM5MCwgMHg3MzgwLCAweDE2Q0EsIDB4NzM4MSwgMHgzNDI2LCAweDczODIsIDB4MzQyNSwNCisgICAgMHg3MzgzLCAweDM0MjcsIDB4NzM4NCwgMHgwMzU2LCAweDczODUsIDB4MUI3RCwgMHg3Mzg2LCAweDA5MkEsDQorICAgIDB4NzM4NywgMHgwQjFGLCAweDczODgsIDB4MUY4RSwgMHg3Mzg5LCAweDAzNTcsIDB4NzM4QSwgMHgxN0IxLA0KKyAgICAweDczOEIsIDB4MDJFRSwgMHg3MzhFLCAweDE4MEUsIDB4NzM5MiwgMHgxOEQxLCAweDczOTMsIDB4MThDRiwNCisgICAgMHg3Mzk0LCAweDE4RDAsIDB4NzM5NSwgMHgxOENELCAweDczOTYsIDB4MDRFRiwgMHg3Mzk3LCAweDE4Q0UsDQorICAgIDB4NzM5RCwgMHgxQTBDLCAweDczOUYsIDB4MDY1MiwgMHg3M0EwLCAweDFBMEEsIDB4NzNBMSwgMHgxQTA2LA0KKyAgICAweDczQTIsIDB4MUEwOSwgMHg3M0E0LCAweDFBMDUsIDB4NzNBNSwgMHgwNjU0LCAweDczQTYsIDB4MUEwOCwNCisgICAgMHg3M0E4LCAweDA2NTEsIDB4NzNBOSwgMHgwNjUwLCAweDczQUIsIDB4MDY1MywgMHg3M0FDLCAweDFBMEIsDQorICAgIDB4NzNBRCwgMHgxQTA3LCAweDczQjIsIDB4MDc5QiwgMHg3M0IzLCAweDA3OUUsIDB4NzNCNCwgMHgxQjg1LA0KKyAgICAweDczQjUsIDB4MUI4NCwgMHg3M0I2LCAweDFCODMsIDB4NzNCNywgMHgwNzk4LCAweDczQjgsIDB4MUI4QywNCisgICAgMHg3M0I5LCAweDFCODIsIDB4NzNCQiwgMHgwNzlBLCAweDczQkMsIDB4MUQzRCwgMHg3M0JFLCAweDFCODksDQorICAgIDB4NzNCRiwgMHgxQjg3LCAweDczQzAsIDB4MDc5RCwgMHg3M0MyLCAweDFCN0YsIDB4NzNDMywgMHgxQjhBLA0KKyAgICAweDczQzUsIDB4MUI4MSwgMHg3M0M2LCAweDFCOEIsIDB4NzNDNywgMHgxQjg4LCAweDczQzgsIDB4MUI4MCwNCisgICAgMHg3M0NBLCAweDA3OTksIDB4NzNDQiwgMHgxQjhELCAweDczQ0MsIDB4MUI3RSwgMHg3M0NELCAweDA3OUMsDQorICAgIDB4NzNEMiwgMHgxRDQyLCAweDczRDMsIDB4MUQzOSwgMHg3M0Q0LCAweDFENDQsIDB4NzNENiwgMHgxRDNDLA0KKyAgICAweDczRDcsIDB4MUQ0NywgMHg3M0Q4LCAweDFENDgsIDB4NzNEOSwgMHgxRDNBLCAweDczREEsIDB4MUQ0NiwNCisgICAgMHg3M0RCLCAweDFENDMsIDB4NzNEQywgMHgxRDQxLCAweDczREQsIDB4MUQ0NSwgMHg3M0RFLCAweDA5MzAsDQorICAgIDB4NzNFMCwgMHgwOTJFLCAweDczRTMsIDB4MUQzRiwgMHg3M0U1LCAweDFEM0IsIDB4NzNFNywgMHgxRDNFLA0KKyAgICAweDczRTgsIDB4MUQ0OSwgMHg3M0U5LCAweDFENDAsIDB4NzNFQSwgMHgwOTJGLCAweDczRUIsIDB4MUI4NiwNCisgICAgMHg3M0VELCAweDA5MkIsIDB4NzNFRSwgMHgwOTJELCAweDczRjQsIDB4MUY5QywgMHg3M0Y1LCAweDFGOTEsDQorICAgIDB4NzNGNiwgMHgxRjhGLCAweDczRjgsIDB4MUY5MCwgMHg3M0ZBLCAweDFGOTcsIDB4NzNGQywgMHgxRjk4LA0KKyAgICAweDczRkQsIDB4MUY5NCwgMHg3M0ZFLCAweDBCMjQsIDB4NzNGRiwgMHgxRjk5LCAweDc0MDAsIDB4MUY5NiwNCisgICAgMHg3NDAxLCAweDFGOTMsIDB4NzQwMywgMHgwQjIyLCAweDc0MDQsIDB4MUY5MiwgMHg3NDA1LCAweDBCMjAsDQorICAgIDB4NzQwNiwgMHgwQjIzLCAweDc0MDcsIDB4MUY5NSwgMHg3NDA4LCAweDFGOUQsIDB4NzQwOSwgMHgwOTJDLA0KKyAgICAweDc0MEEsIDB4MEIyMSwgMHg3NDBCLCAweDFGOUIsIDB4NzQwQywgMHgxRjlBLCAweDc0MEQsIDB4MEIyNSwNCisgICAgMHg3NDE2LCAweDIyMTUsIDB4NzQxQSwgMHgyMjE2LCAweDc0MUIsIDB4MENFMCwgMHg3NDFELCAweDIyMUMsDQorICAgIDB4NzQyMCwgMHgyMjFFLCAweDc0MjEsIDB4MjIxNywgMHg3NDIyLCAweDBDREEsIDB4NzQyMywgMHgyMjFCLA0KKyAgICAweDc0MjQsIDB4MjIxQSwgMHg3NDI1LCAweDBDREIsIDB4NzQyNiwgMHgwQ0UxLCAweDc0MjgsIDB4MENFMiwNCisgICAgMHg3NDI5LCAweDIyMUQsIDB4NzQyQSwgMHgwQ0Q4LCAweDc0MkIsIDB4MjIxNCwgMHg3NDJDLCAweDIyMTIsDQorICAgIDB4NzQyRCwgMHgyMjE4LCAweDc0MkUsIDB4MjIxMSwgMHg3NDJGLCAweDBDREYsIDB4NzQzMCwgMHgyMjEzLA0KKyAgICAweDc0MzEsIDB4MjIxOSwgMHg3NDMyLCAweDIyMUYsIDB4NzQzMywgMHgwQ0Q5LCAweDc0MzQsIDB4MENERSwNCisgICAgMHg3NDM1LCAweDBDREMsIDB4NzQzNiwgMHgwQ0RELCAweDc0M0EsIDB4MENENywgMHg3NDNGLCAweDBFODEsDQorICAgIDB4NzQ0MCwgMHgyNEEwLCAweDc0NDEsIDB4MEU4MCwgMHg3NDQyLCAweDI0QTQsIDB4NzQ0NCwgMHgyNDlBLA0KKyAgICAweDc0NDYsIDB4MjRBNSwgMHg3NDRBLCAweDI0OUIsIDB4NzQ0QiwgMHgyNDlDLCAweDc0NEQsIDB4MjRBNiwNCisgICAgMHg3NDRFLCAweDI0QTMsIDB4NzQ0RiwgMHgyNEExLCAweDc0NTAsIDB4MjRBMiwgMHg3NDUxLCAweDI0OUUsDQorICAgIDB4NzQ1MiwgMHgyNDlELCAweDc0NTQsIDB4MjRBNywgMHg3NDU1LCAweDBFN0QsIDB4NzQ1NywgMHgyNDlGLA0KKyAgICAweDc0NTksIDB4MEU4MiwgMHg3NDVBLCAweDBFN0MsIDB4NzQ1QiwgMHgwRTgzLCAweDc0NUMsIDB4MEU4NCwNCisgICAgMHg3NDVFLCAweDBFN0YsIDB4NzQ1RiwgMHgwRTdFLCAweDc0NjIsIDB4MjcyQiwgMHg3NDYzLCAweDEwMkQsDQorICAgIDB4NzQ2NCwgMHgxMDJDLCAweDc0NjcsIDB4MjczMCwgMHg3NDY5LCAweDExQTYsIDB4NzQ2QSwgMHgxMDJFLA0KKyAgICAweDc0NkQsIDB4MTAzMCwgMHg3NDZFLCAweDI3MzEsIDB4NzQ2RiwgMHgwRTdCLCAweDc0NzAsIDB4MTAyRiwNCisgICAgMHg3NDcxLCAweDI3MkQsIDB4NzQ3MiwgMHgyNzJGLCAweDc0NzMsIDB4MjcyQywgMHg3NDc1LCAweDI3MkUsDQorICAgIDB4NzQ3OSwgMHgyOTdDLCAweDc0N0MsIDB4Mjk3QiwgMHg3NDdELCAweDI5NzgsIDB4NzQ3RSwgMHgxMUE5LA0KKyAgICAweDc0N0YsIDB4MkJDQiwgMHg3NDgwLCAweDExQUEsIDB4NzQ4MSwgMHgyOTc3LCAweDc0ODMsIDB4MTFBOCwNCisgICAgMHg3NDg1LCAweDI5NzksIDB4NzQ4NiwgMHgyOTc2LCAweDc0ODcsIDB4Mjk3MywgMHg3NDg4LCAweDI5N0EsDQorICAgIDB4NzQ4OSwgMHgyOTc0LCAweDc0OEEsIDB4Mjk3NSwgMHg3NDhCLCAweDExQTcsIDB4NzQ5MCwgMHgyREE4LA0KKyAgICAweDc0OTIsIDB4MkJDRiwgMHg3NDk0LCAweDJCQ0UsIDB4NzQ5NSwgMHgyQkQwLCAweDc0OTcsIDB4MkRBNSwNCisgICAgMHg3NDk4LCAweDEyRkMsIDB4NzQ5QSwgMHgyQkNDLCAweDc0OUMsIDB4MTJGQSwgMHg3NDlFLCAweDEyRkUsDQorICAgIDB4NzQ5RiwgMHgxMkZELCAweDc0QTAsIDB4MkJDRCwgMHg3NEExLCAweDJCRDEsIDB4NzRBMywgMHgxMkZCLA0KKyAgICAweDc0QTUsIDB4MkRBQywgMHg3NEE2LCAweDE0MTIsIDB4NzRBNywgMHgxNEY0LCAweDc0QTgsIDB4MTQxMywNCisgICAgMHg3NEE5LCAweDE0MTAsIDB4NzRBQSwgMHgyREE5LCAweDc0QUIsIDB4MkRBNywgMHg3NEFELCAweDJEQUEsDQorICAgIDB4NzRBRiwgMHgyREFELCAweDc0QjAsIDB4MTQxMSwgMHg3NEIxLCAweDJEQUIsIDB4NzRCMiwgMHgyREE2LA0KKyAgICAweDc0QjUsIDB4MkY1OCwgMHg3NEI2LCAweDJGNUIsIDB4NzRCNywgMHgzMEMyLCAweDc0QjgsIDB4MkY1NiwNCisgICAgMHg3NEJBLCAweDMxRjksIDB4NzRCQiwgMHgyRjVDLCAweDc0QkQsIDB4MTU5NywgMHg3NEJFLCAweDJGNUEsDQorICAgIDB4NzRCRiwgMHgxNEY1LCAweDc0QzAsIDB4MkY1NywgMHg3NEMxLCAweDJGNTksIDB4NzRDMiwgMHgyRjVELA0KKyAgICAweDc0QzMsIDB4MzBDMywgMHg3NEM1LCAweDMwQzEsIDB4NzRDQSwgMHgxNTk4LCAweDc0Q0IsIDB4MzBDMCwNCisgICAgMHg3NENGLCAweDE2MjEsIDB4NzRENCwgMHgxNjdFLCAweDc0RDUsIDB4MzM5MiwgMHg3NEQ2LCAweDE2N0QsDQorICAgIDB4NzRENywgMHgzMzk0LCAweDc0RDgsIDB4MzM5MSwgMHg3NEQ5LCAweDMzOTMsIDB4NzREQSwgMHgxNkZFLA0KKyAgICAweDc0REIsIDB4MzQ4RCwgMHg3NERDLCAweDAzNTgsIDB4NzRERCwgMHgxQTBELCAweDc0REUsIDB4MUQ0QSwNCisgICAgMHg3NERGLCAweDFENEIsIDB4NzRFMCwgMHgwQjI2LCAweDc0RTEsIDB4MjRBOCwgMHg3NEUyLCAweDEyRkYsDQorICAgIDB4NzRFMywgMHgxNTk5LCAweDc0RTQsIDB4MTZDQiwgMHg3NEU1LCAweDM0OEUsIDB4NzRFNiwgMHgwMzU5LA0KKyAgICAweDc0RTgsIDB4MUEwRSwgMHg3NEU5LCAweDAxMjAsIDB4NzRFQywgMHgxQjhFLCAweDc0RUUsIDB4MUI4RiwNCisgICAgMHg3NEY0LCAweDFENEMsIDB4NzRGNSwgMHgxRDRELCAweDc0RjYsIDB4MEIyNywgMHg3NEY3LCAweDBCMjgsDQorICAgIDB4NzRGQiwgMHgyMjIwLCAweDc0RkQsIDB4MjRBQiwgMHg3NEZFLCAweDI0QUEsIDB4NzRGRiwgMHgyNEE5LA0KKyAgICAweDc1MDAsIDB4MjczMiwgMHg3NTAyLCAweDI3MzMsIDB4NzUwMywgMHgyNzM0LCAweDc1MDQsIDB4MTAzMSwNCisgICAgMHg3NTA3LCAweDI5N0UsIDB4NzUwOCwgMHgyOTdELCAweDc1MEIsIDB4MkJEMiwgMHg3NTBDLCAweDEzMDAsDQorICAgIDB4NzUwRCwgMHgxMzAxLCAweDc1MEYsIDB4MkRCMSwgMHg3NTEwLCAweDJEQUUsIDB4NzUxMSwgMHgyREFGLA0KKyAgICAweDc1MTIsIDB4MkRCMCwgMHg3NTEzLCAweDJGNUYsIDB4NzUxNCwgMHgyRjVFLCAweDc1MTUsIDB4MTRGNiwNCisgICAgMHg3NTE2LCAweDMwQzQsIDB4NzUxNywgMHgzMkUzLCAweDc1MTgsIDB4MDM1QSwgMHg3NTFBLCAweDA3OUYsDQorICAgIDB4NzUxQywgMHgwQjI5LCAweDc1MUQsIDB4MjRBQywgMHg3NTFGLCAweDAzNUIsIDB4NzUyMSwgMHgxRDRFLA0KKyAgICAweDc1MjIsIDB4MEIyQSwgMHg3NTI1LCAweDBDRTMsIDB4NzUyNiwgMHgwQ0U0LCAweDc1MjgsIDB4MDM1QywNCisgICAgMHg3NTI5LCAweDAzNUQsIDB4NzUyQSwgMHgxODBGLCAweDc1MkIsIDB4MDRGMSwgMHg3NTJDLCAweDA0RjAsDQorICAgIDB4NzUyRCwgMHgwN0EwLCAweDc1MkUsIDB4MUI5MCwgMHg3NTJGLCAweDIyMjEsIDB4NzUzMCwgMHgwMzVFLA0KKyAgICAweDc1MzEsIDB4MDM1RiwgMHg3NTMyLCAweDAzNjAsIDB4NzUzMywgMHgwMzYxLCAweDc1MzcsIDB4MDRGMiwNCisgICAgMHg3NTM4LCAweDA0RjMsIDB4NzUzOSwgMHgxOEQzLCAweDc1M0EsIDB4MThEMiwgMHg3NTNELCAweDA2NTUsDQorICAgIDB4NzUzRSwgMHgxQTExLCAweDc1M0YsIDB4MUEwRiwgMHg3NTQwLCAweDFBMTAsIDB4NzU0NywgMHgxQjkxLA0KKyAgICAweDc1NDgsIDB4MUI5MiwgMHg3NTRCLCAweDA3QTQsIDB4NzU0QywgMHgwN0EyLCAweDc1NEUsIDB4MDdBMywNCisgICAgMHg3NTRGLCAweDA3QTEsIDB4NzU1NCwgMHgwOTMxLCAweDc1NTksIDB4MDkzNSwgMHg3NTVBLCAweDA5MzQsDQorICAgIDB4NzU1QiwgMHgxRDRGLCAweDc1NUMsIDB4MDkzMywgMHg3NTVELCAweDA5MzIsIDB4NzU1RiwgMHgxRDUwLA0KKyAgICAweDc1NjIsIDB4MEIyRCwgMHg3NTYzLCAweDFGOUYsIDB4NzU2NCwgMHgxRjlFLCAweDc1NjUsIDB4MEIyQiwNCisgICAgMHg3NTY2LCAweDBCMkMsIDB4NzU2QSwgMHgwQ0U2LCAweDc1NkIsIDB4MENFNSwgMHg3NTZDLCAweDIyMjMsDQorICAgIDB4NzU2RiwgMHgyMjIyLCAweDc1NzAsIDB4MEIyRSwgMHg3NTc2LCAweDBFODUsIDB4NzU3NywgMHgyNEFFLA0KKyAgICAweDc1NzgsIDB4MEU4NiwgMHg3NTc5LCAweDI0QUQsIDB4NzU3RCwgMHgyNzM1LCAweDc1N0UsIDB4Mjk3RiwNCisgICAgMHg3NTdGLCAweDExQUIsIDB4NzU4MCwgMHgyQkQzLCAweDc1ODQsIDB4MkRCMiwgMHg3NTg2LCAweDE1OUIsDQorICAgIDB4NzU4NywgMHgxNTlBLCAweDc1OEEsIDB4MTZDQywgMHg3NThCLCAweDAzNjIsIDB4NzU4QywgMHgxQTEyLA0KKyAgICAweDc1OEYsIDB4MEIyRiwgMHg3NTkwLCAweDI3MzYsIDB4NzU5MSwgMHgxMDMyLCAweDc1OTIsIDB4MDIyRSwNCisgICAgMHg3NTk0LCAweDE4RDQsIDB4NzU5NSwgMHgxOEQ1LCAweDc1OTgsIDB4MUExMywgMHg3NTk5LCAweDA2NTcsDQorICAgIDB4NzU5QSwgMHgwNjU4LCAweDc1OUQsIDB4MDY1NiwgMHg3NUEyLCAweDA3QTgsIDB4NzVBMywgMHgwN0E5LA0KKyAgICAweDc1QTQsIDB4MDdBNiwgMHg3NUE1LCAweDA3QTcsIDB4NzVBNywgMHgxQjkzLCAweDc1QUEsIDB4MUI5NCwNCisgICAgMHg3NUFCLCAweDA3QTUsIDB4NzVCMCwgMHgxRDUxLCAweDc1QjIsIDB4MDkzOSwgMHg3NUIzLCAweDA5M0EsDQorICAgIDB4NzVCNSwgMHgwQjMyLCAweDc1QjYsIDB4MUQ1NywgMHg3NUI4LCAweDA5M0YsIDB4NzVCOSwgMHgwOTNELA0KKyAgICAweDc1QkEsIDB4MUQ1OCwgMHg3NUJCLCAweDFENTMsIDB4NzVCQywgMHgwOTNDLCAweDc1QkQsIDB4MDkzQiwNCisgICAgMHg3NUJFLCAweDA5MzYsIDB4NzVCRiwgMHgxRDU2LCAweDc1QzAsIDB4MUQ1NSwgMHg3NUMxLCAweDFENTIsDQorICAgIDB4NzVDMiwgMHgwOTNFLCAweDc1QzQsIDB4MUQ1NCwgMHg3NUM1LCAweDA5MzcsIDB4NzVDNywgMHgwOTM4LA0KKyAgICAweDc1Q0EsIDB4MEIzMywgMHg3NUNCLCAweDFGQTMsIDB4NzVDQywgMHgxRkE0LCAweDc1Q0QsIDB4MEIzNCwNCisgICAgMHg3NUNFLCAweDFGQTAsIDB4NzVDRiwgMHgxRkEyLCAweDc1RDAsIDB4MUZBNiwgMHg3NUQxLCAweDFGQTUsDQorICAgIDB4NzVEMiwgMHgxRkExLCAweDc1RDQsIDB4MEIzMCwgMHg3NUQ1LCAweDBCMzEsIDB4NzVENywgMHgyMjJCLA0KKyAgICAweDc1RDgsIDB4MENFQiwgMHg3NUQ5LCAweDBDRUEsIDB4NzVEQSwgMHgyMjI1LCAweDc1REIsIDB4MENFOCwNCisgICAgMHg3NURELCAweDIyMjgsIDB4NzVERSwgMHgwQ0VDLCAweDc1REYsIDB4MjIyOSwgMHg3NUUwLCAweDBDRUQsDQorICAgIDB4NzVFMSwgMHgyMjI2LCAweDc1RTIsIDB4MENFNywgMHg3NUUzLCAweDBDRTksIDB4NzVFNCwgMHgyMjJBLA0KKyAgICAweDc1RTYsIDB4MjIyNywgMHg3NUU3LCAweDIyMjQsIDB4NzVFRCwgMHgyNEJCLCAweDc1RUYsIDB4MjRCMCwNCisgICAgMHg3NUYwLCAweDBFODgsIDB4NzVGMSwgMHgwRThCLCAweDc1RjIsIDB4MEU4QSwgMHg3NUYzLCAweDBFOEYsDQorICAgIDB4NzVGNCwgMHgwRThFLCAweDc1RjUsIDB4MjRCQywgMHg3NUY2LCAweDI0QkEsIDB4NzVGNywgMHgyNEIzLA0KKyAgICAweDc1RjgsIDB4MjRCNywgMHg3NUY5LCAweDI0QjYsIDB4NzVGQSwgMHgwRThDLCAweDc1RkIsIDB4MjRCOSwNCisgICAgMHg3NUZDLCAweDI0QjUsIDB4NzVGRCwgMHgyNEJELCAweDc1RkUsIDB4MjRCNCwgMHg3NUZGLCAweDBFOEQsDQorICAgIDB4NzYwMCwgMHgwRTg3LCAweDc2MDEsIDB4MEU4OSwgMHg3NjAzLCAweDI0QjIsIDB4NzYwOCwgMHgyNzM4LA0KKyAgICAweDc2MDksIDB4MTAzNiwgMHg3NjBBLCAweDI3M0MsIDB4NzYwQiwgMHgxMDM1LCAweDc2MEMsIDB4MjczOSwNCisgICAgMHg3NjBELCAweDEwMzQsIDB4NzYwRiwgMHgyNEIxLCAweDc2MTAsIDB4MjRCOCwgMHg3NjExLCAweDI3M0IsDQorICAgIDB4NzYxMywgMHgxMDM3LCAweDc2MTQsIDB4MjczRCwgMHg3NjE1LCAweDI3M0EsIDB4NzYxNiwgMHgyNzM3LA0KKyAgICAweDc2MTksIDB4Mjk4MiwgMHg3NjFBLCAweDI5ODYsIDB4NzYxQiwgMHgyOTg4LCAweDc2MUMsIDB4Mjk4NCwNCisgICAgMHg3NjFELCAweDI5ODMsIDB4NzYxRSwgMHgyOTgxLCAweDc2MUYsIDB4MTFBRSwgMHg3NjIwLCAweDExQUMsDQorICAgIDB4NzYyMSwgMHgxMUIxLCAweDc2MjIsIDB4MTFCMiwgMHg3NjIzLCAweDI5ODUsIDB4NzYyNCwgMHgxMUFGLA0KKyAgICAweDc2MjUsIDB4Mjk4MCwgMHg3NjI2LCAweDExQjAsIDB4NzYyNywgMHgxMDMzLCAweDc2MjgsIDB4Mjk4NywNCisgICAgMHg3NjI5LCAweDExQUQsIDB4NzYyRCwgMHgyQkQ1LCAweDc2MkYsIDB4MkJENCwgMHg3NjMwLCAweDJCREMsDQorICAgIDB4NzYzMSwgMHgyQkQ2LCAweDc2MzIsIDB4MkJEQiwgMHg3NjMzLCAweDJCRDgsIDB4NzYzNCwgMHgxMzAyLA0KKyAgICAweDc2MzUsIDB4MkJEQSwgMHg3NjM4LCAweDEzMDMsIDB4NzYzQSwgMHgxMzA0LCAweDc2M0MsIDB4MkJEOSwNCisgICAgMHg3NjNELCAweDJCRDcsIDB4NzY0MiwgMHgxNDE1LCAweDc2NDMsIDB4MkRCMywgMHg3NjQ2LCAweDE0MTQsDQorICAgIDB4NzY0NywgMHgyREI2LCAweDc2NDgsIDB4MkRCNCwgMHg3NjQ5LCAweDJEQjUsIDB4NzY0QywgMHgxNDE2LA0KKyAgICAweDc2NTAsIDB4MkY2MywgMHg3NjUyLCAweDE0RjksIDB4NzY1MywgMHgyRjY0LCAweDc2NTYsIDB4MTRGNywNCisgICAgMHg3NjU3LCAweDJGNjUsIDB4NzY1OCwgMHgxNEY4LCAweDc2NTksIDB4MkY2MiwgMHg3NjVBLCAweDJGNjYsDQorICAgIDB4NzY1QywgMHgyRjYwLCAweDc2NUYsIDB4MTU5QywgMHg3NjYwLCAweDMwQzUsIDB4NzY2MSwgMHgxNTlELA0KKyAgICAweDc2NjIsIDB4MTYyMiwgMHg3NjY0LCAweDJGNjEsIDB4NzY2NSwgMHgxNjIzLCAweDc2NjksIDB4MTY3RiwNCisgICAgMHg3NjZBLCAweDMyRTQsIDB4NzY2QywgMHgxNkNFLCAweDc2NkQsIDB4MzM5NSwgMHg3NjZFLCAweDE2Q0QsDQorICAgIDB4NzY3MCwgMHgzNDI4LCAweDc2NzEsIDB4MTcyMywgMHg3NjcyLCAweDE3MjQsIDB4NzY3NSwgMHgzNTQzLA0KKyAgICAweDc2NzYsIDB4MDIyRiwgMHg3Njc4LCAweDA3QUEsIDB4NzY3OSwgMHgxQjk1LCAweDc2N0IsIDB4MENFRSwNCisgICAgMHg3NjdDLCAweDBDRUYsIDB4NzY3RCwgMHgwMzYzLCAweDc2N0UsIDB4MDNGNSwgMHg3NjdGLCAweDE4MTAsDQorICAgIDB4NzY4MSwgMHgxOEQ2LCAweDc2ODIsIDB4MDRGNCwgMHg3Njg0LCAweDA2NTksIDB4NzY4NiwgMHgwN0FCLA0KKyAgICAweDc2ODcsIDB4MDdBQywgMHg3Njg4LCAweDA3QUQsIDB4NzY4OSwgMHgxRkE4LCAweDc2OEEsIDB4MUQ1OSwNCisgICAgMHg3NjhCLCAweDA5NDAsIDB4NzY4RSwgMHgwQjM1LCAweDc2OEYsIDB4MUZBNywgMHg3NjkyLCAweDIyMkQsDQorICAgIDB4NzY5MywgMHgwQ0YxLCAweDc2OTUsIDB4MjIyQywgMHg3Njk2LCAweDBDRjAsIDB4NzY5OSwgMHgyNEJFLA0KKyAgICAweDc2OUEsIDB4MTFCMywgMHg3NjlCLCAweDI5OEMsIDB4NzY5QywgMHgyOTg5LCAweDc2OUQsIDB4Mjk4QSwNCisgICAgMHg3NjlFLCAweDI5OEIsIDB4NzZBNCwgMHgyREI3LCAweDc2QTYsIDB4MkY2NywgMHg3NkFBLCAweDMxRkIsDQorICAgIDB4NzZBQiwgMHgzMUZBLCAweDc2QUQsIDB4MzM5NiwgMHg3NkFFLCAweDAzNjQsIDB4NzZBRiwgMHgxQTE0LA0KKyAgICAweDc2QjAsIDB4MDk0MSwgMHg3NkI0LCAweDBDRjIsIDB4NzZCNSwgMHgyNEJGLCAweDc2QjgsIDB4MjczRSwNCisgICAgMHg3NkJBLCAweDExQjQsIDB4NzZCQiwgMHgyQkRELCAweDc2QkQsIDB4MkY2OCwgMHg3NkJFLCAweDMxRkMsDQorICAgIDB4NzZCRiwgMHgwMzY1LCAweDc2QzIsIDB4MDY1QSwgMHg3NkMzLCAweDA3QjAsIDB4NzZDNCwgMHgxQjk2LA0KKyAgICAweDc2QzUsIDB4MDdCMSwgMHg3NkM2LCAweDA3QUYsIDB4NzZDOCwgMHgwN0FFLCAweDc2QzksIDB4MUQ1QSwNCisgICAgMHg3NkNBLCAweDA5NDIsIDB4NzZDRCwgMHgwOTQzLCAweDc2Q0UsIDB4MDk0NCwgMHg3NkQyLCAweDBCMzcsDQorICAgIDB4NzZEMywgMHgxRkE5LCAweDc2RDQsIDB4MEIzNiwgMHg3NkRBLCAweDIyMkUsIDB4NzZEQiwgMHgwQjM4LA0KKyAgICAweDc2REMsIDB4MENGMywgMHg3NkRELCAweDI0QzAsIDB4NzZERSwgMHgwRTkwLCAweDc2REYsIDB4MEU5MSwNCisgICAgMHg3NkUxLCAweDEwMzgsIDB4NzZFMywgMHgxMDM5LCAweDc2RTQsIDB4MTFCNSwgMHg3NkU1LCAweDEzMDYsDQorICAgIDB4NzZFNiwgMHgyQkRFLCAweDc2RTcsIDB4MTMwNSwgMHg3NkU5LCAweDJEQjgsIDB4NzZFQSwgMHgxNDE3LA0KKyAgICAweDc2RUMsIDB4MkY2OSwgMHg3NkVELCAweDMxRkQsIDB4NzZFRSwgMHgwMzY2LCAweDc2RUYsIDB4MDRGNSwNCisgICAgMHg3NkYwLCAweDFBMTcsIDB4NzZGMSwgMHgxQTE2LCAweDc2RjIsIDB4MDY1QiwgMHg3NkYzLCAweDFBMTUsDQorICAgIDB4NzZGNCwgMHgwNjVDLCAweDc2RjUsIDB4MUExOCwgMHg3NkY3LCAweDFCOUMsIDB4NzZGOCwgMHgwN0I0LA0KKyAgICAweDc2RjksIDB4MDdCMywgMHg3NkZBLCAweDFCOUUsIDB4NzZGQiwgMHgxQjlELCAweDc2RkMsIDB4MDdCOCwNCisgICAgMHg3NkZFLCAweDA3QjcsIDB4NzcwMSwgMHgwN0IyLCAweDc3MDMsIDB4MUI5OCwgMHg3NzA0LCAweDFCOTksDQorICAgIDB4NzcwNSwgMHgxQjlBLCAweDc3MDcsIDB4MDdCOSwgMHg3NzA4LCAweDFCOTcsIDB4NzcwOSwgMHgwN0I1LA0KKyAgICAweDc3MEEsIDB4MUI5QiwgMHg3NzBCLCAweDA3QjYsIDB4NzcxMCwgMHgxRDVELCAweDc3MTEsIDB4MUQ2MSwNCisgICAgMHg3NzEyLCAweDFENUYsIDB4NzcxMywgMHgxRDVFLCAweDc3MTUsIDB4MUQ2MiwgMHg3NzE5LCAweDFENjMsDQorICAgIDB4NzcxQSwgMHgxRDY0LCAweDc3MUIsIDB4MUQ1QywgMHg3NzFELCAweDFENUIsIDB4NzcxRiwgMHgwOTQ2LA0KKyAgICAweDc3MjAsIDB4MDk0NywgMHg3NzIyLCAweDFENjUsIDB4NzcyMywgMHgxRDYwLCAweDc3MjUsIDB4MUZCMiwNCisgICAgMHg3NzI3LCAweDFENjYsIDB4NzcyOCwgMHgwOTQ4LCAweDc3MjksIDB4MDk0NSwgMHg3NzJELCAweDFGQUMsDQorICAgIDB4NzcyRiwgMHgxRkFCLCAweDc3MzEsIDB4MUZBRCwgMHg3NzMyLCAweDFGQUUsIDB4NzczMywgMHgxRkIwLA0KKyAgICAweDc3MzQsIDB4MUZBRiwgMHg3NzM1LCAweDFGQjQsIDB4NzczNiwgMHgwQjNDLCAweDc3MzcsIDB4MEIzOSwNCisgICAgMHg3NzM4LCAweDBCM0QsIDB4NzczOSwgMHgxRkFBLCAweDc3M0EsIDB4MEIzRSwgMHg3NzNCLCAweDFGQjMsDQorICAgIDB4NzczQywgMHgwQjNCLCAweDc3M0QsIDB4MUZCMSwgMHg3NzNFLCAweDBCM0EsIDB4Nzc0NCwgMHgyMjMxLA0KKyAgICAweDc3NDUsIDB4MjIzMywgMHg3NzQ2LCAweDIyMkYsIDB4Nzc0NywgMHgyMjMwLCAweDc3NEEsIDB4MjIzNCwNCisgICAgMHg3NzRCLCAweDIyMzYsIDB4Nzc0QywgMHgyMjM3LCAweDc3NEQsIDB4MjIzMiwgMHg3NzRFLCAweDIyMzUsDQorICAgIDB4Nzc0RiwgMHgwQ0Y0LCAweDc3NTIsIDB4MjRDNCwgMHg3NzU0LCAweDI0QzksIDB4Nzc1NSwgMHgyNEMxLA0KKyAgICAweDc3NTYsIDB4MjRDNSwgMHg3NzU5LCAweDI0Q0EsIDB4Nzc1QSwgMHgyNEM2LCAweDc3NUIsIDB4MEU5MiwNCisgICAgMHg3NzVDLCAweDBFOUEsIDB4Nzc1RSwgMHgwRTk1LCAweDc3NUYsIDB4MjRDMiwgMHg3NzYwLCAweDI0QzMsDQorICAgIDB4Nzc2MSwgMHgxMDNELCAweDc3NjIsIDB4MEU5RCwgMHg3NzYzLCAweDBFOTYsIDB4Nzc2NSwgMHgwRTlCLA0KKyAgICAweDc3NjYsIDB4MEU5NCwgMHg3NzY3LCAweDI0QzgsIDB4Nzc2OCwgMHgwRTlDLCAweDc3NjksIDB4MjRDNywNCisgICAgMHg3NzZBLCAweDBFOTgsIDB4Nzc2QiwgMHgwRTkzLCAweDc3NkMsIDB4MEU5OSwgMHg3NzZELCAweDI0Q0IsDQorICAgIDB4Nzc2RSwgMHgyNzQzLCAweDc3NkYsIDB4Mjc0NSwgMHg3Nzc5LCAweDBFOTcsIDB4Nzc3QywgMHgyNzQwLA0KKyAgICAweDc3N0QsIDB4MTAzQiwgMHg3NzdFLCAweDI3NDYsIDB4Nzc3RiwgMHgxMDNDLCAweDc3ODAsIDB4Mjc0NCwNCisgICAgMHg3NzgxLCAweDI3M0YsIDB4Nzc4MiwgMHgyNzQyLCAweDc3ODMsIDB4Mjc0NywgMHg3Nzg0LCAweDEwM0EsDQorICAgIDB4Nzc4NSwgMHgyNzQxLCAweDc3ODcsIDB4MTFCNywgMHg3Nzg4LCAweDI5OTAsIDB4Nzc4OSwgMHgyOThGLA0KKyAgICAweDc3OEIsIDB4MTFCQSwgMHg3NzhDLCAweDExQjgsIDB4Nzc4RCwgMHgyOThELCAweDc3OEUsIDB4MTFCNiwNCisgICAgMHg3NzhGLCAweDI5OEUsIDB4Nzc5MSwgMHgxMUI5LCAweDc3OTUsIDB4MkJFNiwgMHg3Nzk3LCAweDJCRTgsDQorICAgIDB4Nzc5OSwgMHgyQkU3LCAweDc3OUEsIDB4MkJERiwgMHg3NzlCLCAweDJCRTMsIDB4Nzc5QywgMHgyQkUyLA0KKyAgICAweDc3OUQsIDB4MkJFMCwgMHg3NzlFLCAweDEzMDgsIDB4Nzc5RiwgMHgxMzA5LCAweDc3QTAsIDB4MTMwNywNCisgICAgMHg3N0ExLCAweDJCRTEsIDB4NzdBMiwgMHgyQkU0LCAweDc3QTMsIDB4MkJFNSwgMHg3N0E1LCAweDEzMEEsDQorICAgIDB4NzdBNywgMHgxNDFDLCAweDc3QTgsIDB4MkRDMCwgMHg3N0FBLCAweDE0MTksIDB4NzdBQiwgMHgyREJBLA0KKyAgICAweDc3QUMsIDB4MTQxQiwgMHg3N0FELCAweDE0MUQsIDB4NzdCMCwgMHgxNDFBLCAweDc3QjEsIDB4MkRCRiwNCisgICAgMHg3N0IyLCAweDJEQkIsIDB4NzdCMywgMHgxNDE4LCAweDc3QjQsIDB4MkRCRSwgMHg3N0I1LCAweDJEQjksDQorICAgIDB4NzdCNiwgMHgyREJELCAweDc3QjcsIDB4MkRCQywgMHg3N0JBLCAweDJGNkIsIDB4NzdCQiwgMHgxNEZDLA0KKyAgICAweDc3QkMsIDB4MTRGRCwgMHg3N0JELCAweDE0RkEsIDB4NzdCRiwgMHgxNEZCLCAweDc3QzIsIDB4MkY2QSwNCisgICAgMHg3N0M0LCAweDMwQzgsIDB4NzdDNywgMHgxNTlFLCAweDc3QzksIDB4MzBDNiwgMHg3N0NBLCAweDMwQzcsDQorICAgIDB4NzdDQywgMHgzMUZFLCAweDc3Q0QsIDB4MzIwMSwgMHg3N0NFLCAweDMxRkYsIDB4NzdDRiwgMHgzMjAwLA0KKyAgICAweDc3RDAsIDB4MzJFNSwgMHg3N0QzLCAweDE2ODAsIDB4NzdENCwgMHgzNDI5LCAweDc3RDUsIDB4MzQ4RiwNCisgICAgMHg3N0Q3LCAweDE3MjUsIDB4NzdEOCwgMHgzNEQzLCAweDc3RDksIDB4MzRENCwgMHg3N0RBLCAweDE3NTMsDQorICAgIDB4NzdEQiwgMHgwMzY3LCAweDc3REMsIDB4MDdCQSwgMHg3N0RFLCAweDIyMzgsIDB4NzdFMCwgMHgyNENDLA0KKyAgICAweDc3RTIsIDB4MDM2OCwgMHg3N0UzLCAweDA0RjYsIDB4NzdFNSwgMHgwNjVELCAweDc3RTcsIDB4MUI5RiwNCisgICAgMHg3N0U4LCAweDFCQTAsIDB4NzdFOSwgMHgwOTQ5LCAweDc3RUMsIDB4MjIzOSwgMHg3N0VELCAweDBDRjUsDQorICAgIDB4NzdFRSwgMHgwRTlFLCAweDc3RUYsIDB4MTQxRSwgMHg3N0YwLCAweDJEQzEsIDB4NzdGMSwgMHgzMEM5LA0KKyAgICAweDc3RjIsIDB4MzIwMiwgMHg3N0YzLCAweDAzNjksIDB4NzdGNywgMHgxQTFFLCAweDc3RjgsIDB4MUExOSwNCisgICAgMHg3N0Y5LCAweDFBMUIsIDB4NzdGQSwgMHgxQTFELCAweDc3RkIsIDB4MUExQywgMHg3N0ZDLCAweDFBMUEsDQorICAgIDB4NzdGRCwgMHgwNjVFLCAweDc4MDIsIDB4MDdCQiwgMHg3ODAzLCAweDFCQTksIDB4NzgwNSwgMHgxQkE0LA0KKyAgICAweDc4MDYsIDB4MUJBMSwgMHg3ODA5LCAweDFCQTgsIDB4NzgwQywgMHgwN0JELCAweDc4MEQsIDB4MDdCRSwNCisgICAgMHg3ODBFLCAweDFCQTcsIDB4NzgwRiwgMHgxQkE2LCAweDc4MTAsIDB4MUJBNSwgMHg3ODExLCAweDFCQTIsDQorICAgIDB4NzgxMiwgMHgxQkEzLCAweDc4MTMsIDB4MUJBQSwgMHg3ODE0LCAweDA3QkMsIDB4NzgxRCwgMHgwOTRELA0KKyAgICAweDc4MUYsIDB4MDk1MywgMHg3ODIwLCAweDA5NTIsIDB4NzgyMSwgMHgxRDZGLCAweDc4MjIsIDB4MUQ2OSwNCisgICAgMHg3ODIzLCAweDFENjcsIDB4NzgyNSwgMHgwOTUwLCAweDc4MjYsIDB4MUZCQiwgMHg3ODI3LCAweDA5NEIsDQorICAgIDB4NzgyOCwgMHgxRDZDLCAweDc4MjksIDB4MUQ3MCwgMHg3ODJBLCAweDFENzIsIDB4NzgyQiwgMHgxRDZFLA0KKyAgICAweDc4MkMsIDB4MUQ2OCwgMHg3ODJELCAweDA5NTEsIDB4NzgyRSwgMHgxRDZELCAweDc4MkYsIDB4MUQ2QiwNCisgICAgMHg3ODMwLCAweDA5NEEsIDB4NzgzMSwgMHgxRDczLCAweDc4MzIsIDB4MDk1NCwgMHg3ODMzLCAweDFENzEsDQorICAgIDB4NzgzNCwgMHgwOTRFLCAweDc4MzUsIDB4MUQ2QSwgMHg3ODM3LCAweDA5NEYsIDB4NzgzOCwgMHgwOTRDLA0KKyAgICAweDc4NDMsIDB4MEI0MCwgMHg3ODQ1LCAweDFGQkMsIDB4Nzg0OCwgMHgxRkI1LCAweDc4NDksIDB4MUZCNywNCisgICAgMHg3ODRBLCAweDFGQjksIDB4Nzg0QywgMHgxRkJBLCAweDc4NEQsIDB4MUZCOCwgMHg3ODRFLCAweDBCNDEsDQorICAgIDB4Nzg1MCwgMHgxRkJELCAweDc4NTIsIDB4MUZCNiwgMHg3ODVDLCAweDIyM0QsIDB4Nzg1RCwgMHgwQ0Y2LA0KKyAgICAweDc4NUUsIDB4MjI0NSwgMHg3ODYwLCAweDIyM0EsIDB4Nzg2MiwgMHgyMjQ2LCAweDc4NjQsIDB4MjIzQiwNCisgICAgMHg3ODY1LCAweDIyM0MsIDB4Nzg2OCwgMHgyMjQ0LCAweDc4NjksIDB4MjI0MywgMHg3ODZBLCAweDIyNDAsDQorICAgIDB4Nzg2QiwgMHgwQjNGLCAweDc4NkMsIDB4MENGNywgMHg3ODZELCAweDIyM0UsIDB4Nzg2RSwgMHgyMjQxLA0KKyAgICAweDc4NkYsIDB4MENGOCwgMHg3ODcwLCAweDIyNDIsIDB4Nzg3MSwgMHgyMjNGLCAweDc4NzksIDB4MjRENywNCisgICAgMHg3ODdCLCAweDI0REIsIDB4Nzg3QywgMHgwRUE1LCAweDc4N0UsIDB4Mjc0RCwgMHg3ODdGLCAweDBFQTgsDQorICAgIDB4Nzg4MCwgMHgyNEQ5LCAweDc4ODEsIDB4MzZFOCwgMHg3ODgzLCAweDI0RDYsIDB4Nzg4NCwgMHgyNEQxLA0KKyAgICAweDc4ODUsIDB4MjREMywgMHg3ODg2LCAweDI0RDQsIDB4Nzg4NywgMHgyNENELCAweDc4ODksIDB4MEVBNCwNCisgICAgMHg3ODhDLCAweDBFQTMsIDB4Nzg4RSwgMHgwRTlGLCAweDc4OEYsIDB4MjREMCwgMHg3ODkxLCAweDBFQTYsDQorICAgIDB4Nzg5MywgMHgwRUE3LCAweDc4OTQsIDB4MjRDRiwgMHg3ODk1LCAweDI0RDIsIDB4Nzg5NiwgMHgyNERBLA0KKyAgICAweDc4OTcsIDB4MEVBMSwgMHg3ODk4LCAweDBFQTIsIDB4Nzg5OSwgMHgyNEQ4LCAweDc4OUEsIDB4MjRDRSwNCisgICAgMHg3ODlFLCAweDI3NEYsIDB4Nzg5RiwgMHgxMDNGLCAweDc4QTAsIDB4Mjc1MSwgMHg3OEExLCAweDI0RDUsDQorICAgIDB4NzhBMiwgMHgyNzUzLCAweDc4QTMsIDB4MTA0MywgMHg3OEE0LCAweDI3NTQsIDB4NzhBNSwgMHgyNzUwLA0KKyAgICAweDc4QTcsIDB4MTA0MCwgMHg3OEE4LCAweDI3NEMsIDB4NzhBOSwgMHgxMDQyLCAweDc4QUEsIDB4Mjc0OSwNCisgICAgMHg3OEFCLCAweDI3NEUsIDB4NzhBQywgMHgyNzUyLCAweDc4QUQsIDB4Mjc0QiwgMHg3OEIwLCAweDBFQTAsDQorICAgIDB4NzhCMiwgMHgyNzQ4LCAweDc4QjMsIDB4MTA0MSwgMHg3OEI0LCAweDI3NEEsIDB4NzhCQSwgMHgxMUJELA0KKyAgICAweDc4QkIsIDB4Mjk5MiwgMHg3OEJDLCAweDExQzEsIDB4NzhCRSwgMHgxMUJGLCAweDc4QzEsIDB4MTAzRSwNCisgICAgMHg3OEMzLCAweDI5OTksIDB4NzhDNCwgMHgyOTlBLCAweDc4QzUsIDB4MTFCQywgMHg3OEM4LCAweDI5OTgsDQorICAgIDB4NzhDOSwgMHgyOTlCLCAweDc4Q0EsIDB4MTFCRSwgMHg3OENCLCAweDExQkIsIDB4NzhDQywgMHgyOTk0LA0KKyAgICAweDc4Q0QsIDB4Mjk5MSwgMHg3OENFLCAweDI5OTYsIDB4NzhDRiwgMHgyOTkzLCAweDc4RDAsIDB4MTFDMiwNCisgICAgMHg3OEQxLCAweDI5OTUsIDB4NzhENCwgMHgyOTk3LCAweDc4RDUsIDB4MTFDMCwgMHg3OERBLCAweDEzMEMsDQorICAgIDB4NzhEQiwgMHgyQkVGLCAweDc4REQsIDB4MkJFOSwgMHg3OERFLCAweDJCRUQsIDB4NzhERiwgMHgyQkYzLA0KKyAgICAweDc4RTAsIDB4MkJGNCwgMHg3OEUxLCAweDJCRjAsIDB4NzhFMiwgMHgyQkYxLCAweDc4RTMsIDB4MkJFRSwNCisgICAgMHg3OEU1LCAweDJCRUIsIDB4NzhFNywgMHgxMzBFLCAweDc4RTgsIDB4MTMwQiwgMHg3OEU5LCAweDJCRUEsDQorICAgIDB4NzhFQSwgMHgyQkVDLCAweDc4RUMsIDB4MTMwRCwgMHg3OEVELCAweDJCRjIsIDB4NzhFRiwgMHgxNDIyLA0KKyAgICAweDc4RjIsIDB4MkRDOCwgMHg3OEYzLCAweDJEQzIsIDB4NzhGNCwgMHgxNDIxLCAweDc4RjcsIDB4MTQxRiwNCisgICAgMHg3OEY5LCAweDJEQ0EsIDB4NzhGQSwgMHgxNDIwLCAweDc4RkIsIDB4MkRDNSwgMHg3OEZDLCAweDJEQzYsDQorICAgIDB4NzhGRCwgMHgyREMzLCAweDc4RkUsIDB4MkRDQiwgMHg3OEZGLCAweDJEQzcsIDB4NzkwMSwgMHgxNDIzLA0KKyAgICAweDc5MDIsIDB4MkRDNCwgMHg3OTA0LCAweDJEQ0MsIDB4NzkwNSwgMHgyREM5LCAweDc5MDksIDB4MkY2RiwNCisgICAgMHg3OTBDLCAweDJGNkMsIDB4NzkwRSwgMHgxNEZFLCAweDc5MTAsIDB4MkY3MCwgMHg3OTExLCAweDJGNzIsDQorICAgIDB4NzkxMiwgMHgyRjcxLCAweDc5MTMsIDB4MkY2RCwgMHg3OTE0LCAweDJGNkUsIDB4NzkxNywgMHgzMENFLA0KKyAgICAweDc5MTksIDB4MTU5RiwgMHg3OTFCLCAweDMwQ0IsIDB4NzkxQywgMHgzMENELCAweDc5MUQsIDB4MzBDQSwNCisgICAgMHg3OTFFLCAweDMwQ0YsIDB4NzkyMSwgMHgzMENDLCAweDc5MjMsIDB4MzIwNCwgMHg3OTI0LCAweDMyMDcsDQorICAgIDB4NzkyNSwgMHgzMjAzLCAweDc5MjYsIDB4MTYyNCwgMHg3OTI3LCAweDMyMDUsIDB4NzkyOCwgMHgzMjA2LA0KKyAgICAweDc5MjksIDB4MzIwOCwgMHg3OTJBLCAweDE2MjUsIDB4NzkyQiwgMHgxNjI3LCAweDc5MkMsIDB4MTYyNiwNCisgICAgMHg3OTJELCAweDMyRTYsIDB4NzkyRiwgMHgzMkU4LCAweDc5MzEsIDB4MzJFNywgMHg3OTM1LCAweDMzOTcsDQorICAgIDB4NzkzOCwgMHgzNDkwLCAweDc5MzksIDB4MzRENSwgMHg3OTNBLCAweDAzNkEsIDB4NzkzRCwgMHgxOEQ3LA0KKyAgICAweDc5M0UsIDB4MDY1RiwgMHg3OTNGLCAweDFBMjAsIDB4Nzk0MCwgMHgwNjYwLCAweDc5NDEsIDB4MDY2MSwNCisgICAgMHg3OTQyLCAweDFBMUYsIDB4Nzk0NCwgMHgxQkFGLCAweDc5NDUsIDB4MUJBRSwgMHg3OTQ2LCAweDA3QkYsDQorICAgIDB4Nzk0NywgMHgwN0MyLCAweDc5NDgsIDB4MDdDMSwgMHg3OTQ5LCAweDA3QzAsIDB4Nzk0QSwgMHgxQkFCLA0KKyAgICAweDc5NEIsIDB4MUJBRCwgMHg3OTRDLCAweDFCQUMsIDB4Nzk0RiwgMHgxRDc2LCAweDc5NTAsIDB4MDk1NiwNCisgICAgMHg3OTUxLCAweDFEN0EsIDB4Nzk1MiwgMHgxRDc5LCAweDc5NTMsIDB4MUQ3OCwgMHg3OTU0LCAweDFENzQsDQorICAgIDB4Nzk1NSwgMHgwOTU1LCAweDc5NTYsIDB4MDk1OSwgMHg3OTU3LCAweDA5NUMsIDB4Nzk1QSwgMHgwOTVELA0KKyAgICAweDc5NUIsIDB4MUQ3NSwgMHg3OTVDLCAweDFENzcsIDB4Nzk1RCwgMHgwOTVCLCAweDc5NUUsIDB4MDk1QSwNCisgICAgMHg3OTVGLCAweDA5NTgsIDB4Nzk2MCwgMHgwOTU3LCAweDc5NjEsIDB4MUZDNCwgMHg3OTYzLCAweDFGQzIsDQorICAgIDB4Nzk2NCwgMHgxRkJFLCAweDc5NjUsIDB4MEI0MiwgMHg3OTY3LCAweDFGQkYsIDB4Nzk2OCwgMHgwQjQzLA0KKyAgICAweDc5NjksIDB4MUZDMCwgMHg3OTZBLCAweDFGQzEsIDB4Nzk2QiwgMHgxRkMzLCAweDc5NkQsIDB4MEI0NCwNCisgICAgMHg3OTcwLCAweDIyNEEsIDB4Nzk3MiwgMHgyMjQ5LCAweDc5NzMsIDB4MjI0OCwgMHg3OTc0LCAweDIyNDcsDQorICAgIDB4Nzk3OSwgMHgyNERGLCAweDc5N0EsIDB4MEVBOSwgMHg3OTdDLCAweDI0REMsIDB4Nzk3RCwgMHgyNERFLA0KKyAgICAweDc5N0YsIDB4MEVBQSwgMHg3OTgxLCAweDBFQUIsIDB4Nzk4MiwgMHgyNERELCAweDc5ODgsIDB4Mjc1RCwNCisgICAgMHg3OThBLCAweDI3NTYsIDB4Nzk4QiwgMHgyNzU3LCAweDc5OEQsIDB4MTA0NiwgMHg3OThFLCAweDEwNDQsDQorICAgIDB4Nzk4RiwgMHgxMDQ1LCAweDc5OTAsIDB4Mjc1RiwgMHg3OTkyLCAweDI3NUUsIDB4Nzk5MywgMHgyNzVCLA0KKyAgICAweDc5OTQsIDB4Mjc1QSwgMHg3OTk1LCAweDI3NTksIDB4Nzk5NiwgMHgyNzU4LCAweDc5OTcsIDB4Mjc1QywNCisgICAgMHg3OTk4LCAweDI3NTUsIDB4Nzk5QSwgMHgyOTlDLCAweDc5OUIsIDB4MjlBMSwgMHg3OTlDLCAweDI5OUYsDQorICAgIDB4NzlBMCwgMHgyOTlFLCAweDc5QTEsIDB4Mjk5RCwgMHg3OUEyLCAweDI5QTAsIDB4NzlBNCwgMHgyQkY1LA0KKyAgICAweDc5QTYsIDB4MTMwRiwgMHg3OUE3LCAweDE0MjQsIDB4NzlBOCwgMHgyRENFLCAweDc5QUEsIDB4MTQyNSwNCisgICAgMHg3OUFCLCAweDJEQ0QsIDB4NzlBQywgMHgyRjc0LCAweDc5QUQsIDB4MkY3MywgMHg3OUFFLCAweDE0RkYsDQorICAgIDB4NzlCMCwgMHgzMEQwLCAweDc5QjEsIDB4MTVBMCwgMHg3OUIyLCAweDMyMDksIDB4NzlCMywgMHgxNkNGLA0KKyAgICAweDc5QjQsIDB4MzM5OCwgMHg3OUI2LCAweDM0OTIsIDB4NzlCNywgMHgzNDkxLCAweDc5QjgsIDB4MTdCMiwNCisgICAgMHg3OUI5LCAweDA3QzMsIDB4NzlCQSwgMHgwN0M0LCAweDc5QkIsIDB4MUZDNSwgMHg3OUJELCAweDBFQUQsDQorICAgIDB4NzlCRSwgMHgwMzZCLCAweDc5QkYsIDB4MDRGOSwgMHg3OUMwLCAweDA0RjgsIDB4NzlDMSwgMHgwNEY3LA0KKyAgICAweDc5QzUsIDB4MUEyMSwgMHg3OUM4LCAweDA2NjMsIDB4NzlDOSwgMHgwNjYyLCAweDc5Q0IsIDB4MDdDNywNCisgICAgMHg3OUNELCAweDFCQjEsIDB4NzlDRSwgMHgxQkI0LCAweDc5Q0YsIDB4MUJCMiwgMHg3OUQxLCAweDA3QzUsDQorICAgIDB4NzlEMiwgMHgwN0M2LCAweDc5RDUsIDB4MUJCMCwgMHg3OUQ2LCAweDFCQjMsIDB4NzlEOCwgMHgwOTY0LA0KKyAgICAweDc5REMsIDB4MUQ4MSwgMHg3OURELCAweDFEODMsIDB4NzlERSwgMHgxRDgyLCAweDc5REYsIDB4MDk2MSwNCisgICAgMHg3OUUwLCAweDFEN0QsIDB4NzlFMywgMHgwOTVGLCAweDc5RTQsIDB4MDk1RSwgMHg3OUU2LCAweDA5NjIsDQorICAgIDB4NzlFNywgMHgwOTYwLCAweDc5RTksIDB4MDk2MywgMHg3OUVBLCAweDFEODAsIDB4NzlFQiwgMHgxRDdCLA0KKyAgICAweDc5RUMsIDB4MUQ3QywgMHg3OUVELCAweDFEN0YsIDB4NzlFRSwgMHgxRDdFLCAweDc5RjYsIDB4MUZDOCwNCisgICAgMHg3OUY3LCAweDFGQzksIDB4NzlGOCwgMHgxRkM3LCAweDc5RkEsIDB4MUZDNiwgMHg3OUZCLCAweDBCNDUsDQorICAgIDB4N0EwMCwgMHgwQ0ZELCAweDdBMDIsIDB4MjI0QiwgMHg3QTAzLCAweDIyNEQsIDB4N0EwNCwgMHgyMjRGLA0KKyAgICAweDdBMDUsIDB4MENGQywgMHg3QTA4LCAweDBDRkEsIDB4N0EwQSwgMHgyMjRDLCAweDdBMEIsIDB4MENGQiwNCisgICAgMHg3QTBDLCAweDIyNEUsIDB4N0EwRCwgMHgwQ0Y5LCAweDdBMTAsIDB4MjRFOSwgMHg3QTExLCAweDI0RTAsDQorICAgIDB4N0ExMiwgMHgyNEUzLCAweDdBMTMsIDB4MjRFNywgMHg3QTE0LCAweDBFQjEsIDB4N0ExNSwgMHgyNEU1LA0KKyAgICAweDdBMTcsIDB4MjRFNCwgMHg3QTE4LCAweDI0RTEsIDB4N0ExOSwgMHgyNEUyLCAweDdBMUEsIDB4MEVBRiwNCisgICAgMHg3QTFCLCAweDI0RTgsIDB4N0ExQywgMHgwRUFFLCAweDdBMUUsIDB4MEVCMywgMHg3QTFGLCAweDBFQjIsDQorICAgIDB4N0EyMCwgMHgwRUIwLCAweDdBMjIsIDB4MjRFNiwgMHg3QTI2LCAweDI3NjUsIDB4N0EyOCwgMHgyNzY0LA0KKyAgICAweDdBMkIsIDB4Mjc2MCwgMHg3QTJFLCAweDEwNDcsIDB4N0EyRiwgMHgyNzYzLCAweDdBMzAsIDB4Mjc2MiwNCisgICAgMHg3QTMxLCAweDEwNDgsIDB4N0EzNywgMHgxMUM3LCAweDdBMzksIDB4MjlBMywgMHg3QTNCLCAweDExQzgsDQorICAgIDB4N0EzQywgMHgxMUM0LCAweDdBM0QsIDB4MTFDNiwgMHg3QTNGLCAweDExQzMsIDB4N0E0MCwgMHgxMUM1LA0KKyAgICAweDdBNDQsIDB4MkJGNiwgMHg3QTQ2LCAweDEzMTIsIDB4N0E0NywgMHgyQkY4LCAweDdBNDgsIDB4MkJGNywNCisgICAgMHg3QTRBLCAweDI3NjEsIDB4N0E0QiwgMHgxMzE0LCAweDdBNEMsIDB4MTMxMywgMHg3QTRELCAweDEzMTAsDQorICAgIDB4N0E0RSwgMHgxMzExLCAweDdBNTQsIDB4MkREMywgMHg3QTU2LCAweDJERDEsIDB4N0E1NywgMHgxNDI2LA0KKyAgICAweDdBNTgsIDB4MkREMiwgMHg3QTVBLCAweDJERDQsIDB4N0E1QiwgMHgyREQwLCAweDdBNUMsIDB4MkRDRiwNCisgICAgMHg3QTVGLCAweDJGNzUsIDB4N0E2MCwgMHgxNTAyLCAweDdBNjEsIDB4MTUwMCwgMHg3QTYyLCAweDE1MDEsDQorICAgIDB4N0E2NywgMHgzMEQxLCAweDdBNjgsIDB4MzBEMiwgMHg3QTY5LCAweDE1QTIsIDB4N0E2QiwgMHgxNUExLA0KKyAgICAweDdBNkMsIDB4MzIwQiwgMHg3QTZELCAweDMyMEMsIDB4N0E2RSwgMHgzMjBBLCAweDdBNzAsIDB4MzM5OSwNCisgICAgMHg3QTcxLCAweDMzOUEsIDB4N0E3NCwgMHgwMzZDLCAweDdBNzUsIDB4MTgxMSwgMHg3QTc2LCAweDA0RkEsDQorICAgIDB4N0E3OCwgMHgxQTIyLCAweDdBNzksIDB4MDY2NSwgMHg3QTdBLCAweDA2NjQsIDB4N0E3QiwgMHgxQTIzLA0KKyAgICAweDdBN0UsIDB4MUJCNiwgMHg3QTdGLCAweDA3QzgsIDB4N0E4MCwgMHgxQkI1LCAweDdBODEsIDB4MDdDOSwNCisgICAgMHg3QTg0LCAweDA5NjUsIDB4N0E4NSwgMHgxRDg2LCAweDdBODYsIDB4MUQ4NCwgMHg3QTg3LCAweDFEOEEsDQorICAgIDB4N0E4OCwgMHgwOTY2LCAweDdBODksIDB4MUQ4NSwgMHg3QThBLCAweDFEODksIDB4N0E4QiwgMHgxRDg3LA0KKyAgICAweDdBOEMsIDB4MUQ4OCwgMHg3QThGLCAweDFGQ0EsIDB4N0E5MCwgMHgxRkNDLCAweDdBOTIsIDB4MEI0NiwNCisgICAgMHg3QTk0LCAweDFGQ0IsIDB4N0E5NSwgMHgwQjQ3LCAweDdBOTYsIDB4MEQwMCwgMHg3QTk3LCAweDBDRkYsDQorICAgIDB4N0E5OCwgMHgwQ0ZFLCAweDdBOTksIDB4MjI1MCwgMHg3QTlFLCAweDI0RUMsIDB4N0E5RiwgMHgwRUI0LA0KKyAgICAweDdBQTAsIDB4MEVCNSwgMHg3QUEyLCAweDI0RUIsIDB4N0FBMywgMHgyNEVBLCAweDdBQTgsIDB4Mjc2NiwNCisgICAgMHg3QUE5LCAweDEwNEEsIDB4N0FBQSwgMHgxMDQ5LCAweDdBQUIsIDB4Mjc2NywgMHg3QUFDLCAweDI3NjgsDQorICAgIDB4N0FBRSwgMHgxMUNBLCAweDdBQUYsIDB4MTFDOSwgMHg3QUIxLCAweDJCRkMsIDB4N0FCMiwgMHgyOUE0LA0KKyAgICAweDdBQjMsIDB4MjlBNiwgMHg3QUI0LCAweDI5QTUsIDB4N0FCNSwgMHgyQkZCLCAweDdBQjYsIDB4MkJGOSwNCisgICAgMHg3QUI3LCAweDJCRkQsIDB4N0FCOCwgMHgyQkZBLCAweDdBQkEsIDB4MTMxNSwgMHg3QUJFLCAweDJERDUsDQorICAgIDB4N0FCRiwgMHgxNDI3LCAweDdBQzAsIDB4MkRENiwgMHg3QUMxLCAweDJERDcsIDB4N0FDNCwgMHgxNTAzLA0KKyAgICAweDdBQzUsIDB4MTUwNCwgMHg3QUM3LCAweDE2MjgsIDB4N0FDQSwgMHgxNkZGLCAweDdBQ0IsIDB4MDM2RCwNCisgICAgMHg3QUQxLCAweDFCQjcsIDB4N0FEOCwgMHgxRDhCLCAweDdBRDksIDB4MDk2NywgMHg3QURGLCAweDBCREUsDQorICAgIDB4N0FFMCwgMHgwQkRELCAweDdBRTMsIDB4MEQwMiwgMHg3QUU0LCAweDIyNTIsIDB4N0FFNSwgMHgwRDAxLA0KKyAgICAweDdBRTYsIDB4MjI1MSwgMHg3QUVCLCAweDI0RUQsIDB4N0FFRCwgMHgxMDRCLCAweDdBRUUsIDB4Mjc2OSwNCisgICAgMHg3QUVGLCAweDEwNEMsIDB4N0FGNiwgMHgxNjI5LCAweDdBRjcsIDB4MzIwRCwgMHg3QUY5LCAweDAzRjYsDQorICAgIDB4N0FGQSwgMHgwNjY2LCAweDdBRkIsIDB4MUEyNCwgMHg3QUZELCAweDA3Q0IsIDB4N0FGRiwgMHgwN0NBLA0KKyAgICAweDdCMDAsIDB4MUJCOCwgMHg3QjAxLCAweDFCQjksIDB4N0IwNCwgMHgxRDhELCAweDdCMDUsIDB4MUQ4RiwNCisgICAgMHg3QjA2LCAweDA5NjgsIDB4N0IwOCwgMHgxRDkxLCAweDdCMDksIDB4MUQ5NCwgMHg3QjBBLCAweDFEOTIsDQorICAgIDB4N0IwRSwgMHgxRDkzLCAweDdCMEYsIDB4MUQ5MCwgMHg3QjEwLCAweDFEOEMsIDB4N0IxMSwgMHgwOTY5LA0KKyAgICAweDdCMTIsIDB4MUQ5NSwgMHg3QjEzLCAweDFEOEUsIDB4N0IxOCwgMHgxRkQ1LCAweDdCMTksIDB4MEI0RCwNCisgICAgMHg3QjFBLCAweDFGREUsIDB4N0IxQiwgMHgwQjRBLCAweDdCMUQsIDB4MUZENywgMHg3QjFFLCAweDBCNEUsDQorICAgIDB4N0IyMCwgMHgwQjQ4LCAweDdCMjIsIDB4MUZEMiwgMHg3QjIzLCAweDFGREYsIDB4N0IyNCwgMHgxRkQzLA0KKyAgICAweDdCMjUsIDB4MUZEMCwgMHg3QjI2LCAweDBCNEMsIDB4N0IyOCwgMHgwQjQ5LCAweDdCMkEsIDB4MUZENiwNCisgICAgMHg3QjJCLCAweDFGRDksIDB4N0IyQywgMHgwQjRCLCAweDdCMkQsIDB4MUZEQSwgMHg3QjJFLCAweDBCNEYsDQorICAgIDB4N0IyRiwgMHgxRkRCLCAweDdCMzAsIDB4MUZEMSwgMHg3QjMxLCAweDFGRDgsIDB4N0IzMiwgMHgxRkRDLA0KKyAgICAweDdCMzMsIDB4MUZENCwgMHg3QjM0LCAweDFGQ0YsIDB4N0IzNSwgMHgxRkNELCAweDdCMzgsIDB4MUZERCwNCisgICAgMHg3QjNCLCAweDFGQ0UsIDB4N0I0MCwgMHgyMjU5LCAweDdCNDQsIDB4MjI1NSwgMHg3QjQ1LCAweDIyNUIsDQorICAgIDB4N0I0NiwgMHgwRDA1LCAweDdCNDcsIDB4MjI1NCwgMHg3QjQ4LCAweDIyNTYsIDB4N0I0OSwgMHgwRDAzLA0KKyAgICAweDdCNEEsIDB4MjI1MywgMHg3QjRCLCAweDBEMEEsIDB4N0I0QywgMHgyMjU3LCAweDdCNEQsIDB4MEQwOSwNCisgICAgMHg3QjRFLCAweDIyNTgsIDB4N0I0RiwgMHgwRDBCLCAweDdCNTAsIDB4MEQwNiwgMHg3QjUxLCAweDBEMEMsDQorICAgIDB4N0I1MiwgMHgwRDA3LCAweDdCNTQsIDB4MEQwOCwgMHg3QjU2LCAweDBEMDQsIDB4N0I1OCwgMHgyMjVBLA0KKyAgICAweDdCNjAsIDB4MEVCOCwgMHg3QjYxLCAweDI0RjgsIDB4N0I2MywgMHgyNEZCLCAweDdCNjQsIDB4MjRFRiwNCisgICAgMHg3QjY1LCAweDI0RjQsIDB4N0I2NiwgMHgyNEVFLCAweDdCNjcsIDB4MEVCQSwgMHg3QjY5LCAweDI0RjIsDQorICAgIDB4N0I2RCwgMHgyNEYwLCAweDdCNkUsIDB4MEVCOSwgMHg3QjcwLCAweDI0RjcsIDB4N0I3MSwgMHgyNEY2LA0KKyAgICAweDdCNzIsIDB4MjRGMywgMHg3QjczLCAweDI0RjUsIDB4N0I3NCwgMHgyNEYxLCAweDdCNzUsIDB4MTA1MCwNCisgICAgMHg3Qjc2LCAweDI0RkEsIDB4N0I3NywgMHgwRUI2LCAweDdCNzgsIDB4MjRGOSwgMHg3QjgyLCAweDI3NzksDQorICAgIDB4N0I4NCwgMHgxMDU3LCAweDdCODUsIDB4Mjc3NCwgMHg3Qjg3LCAweDEwNTYsIDB4N0I4OCwgMHgyNzZBLA0KKyAgICAweDdCOEEsIDB4Mjc2QywgMHg3QjhCLCAweDEwNEYsIDB4N0I4QywgMHgyNzcxLCAweDdCOEQsIDB4Mjc3MCwNCisgICAgMHg3QjhFLCAweDI3NzMsIDB4N0I4RiwgMHgxMDU0LCAweDdCOTAsIDB4Mjc2RSwgMHg3QjkxLCAweDI3NkQsDQorICAgIDB4N0I5NCwgMHgxMDUzLCAweDdCOTUsIDB4MTA0RSwgMHg3Qjk2LCAweDI3NkYsIDB4N0I5NywgMHgxMDUxLA0KKyAgICAweDdCOTgsIDB4Mjc3NSwgMHg3Qjk5LCAweDI3NzcsIDB4N0I5QiwgMHgyNzcyLCAweDdCOUMsIDB4Mjc2QiwNCisgICAgMHg3QjlELCAweDEwNTIsIDB4N0JBMCwgMHgxMUQyLCAweDdCQTEsIDB4MTA0RCwgMHg3QkE0LCAweDI3NzgsDQorICAgIDB4N0JBQywgMHgyOUFBLCAweDdCQUQsIDB4MTFDQiwgMHg3QkFGLCAweDI5QUMsIDB4N0JCMSwgMHgxMUNDLA0KKyAgICAweDdCQjQsIDB4MTFDRSwgMHg3QkI1LCAweDI5QUYsIDB4N0JCNywgMHgyOUE3LCAweDdCQjgsIDB4MTA1NSwNCisgICAgMHg3QkI5LCAweDI5QUQsIDB4N0JCRSwgMHgyOUE5LCAweDdCQzAsIDB4MEVCNywgMHg3QkMxLCAweDExRDEsDQorICAgIDB4N0JDNCwgMHgxMUNELCAweDdCQzYsIDB4MTFDRiwgMHg3QkM3LCAweDExRDAsIDB4N0JDOSwgMHgxMzE4LA0KKyAgICAweDdCQ0EsIDB4MjlBRSwgMHg3QkNCLCAweDI5QTgsIDB4N0JDQywgMHgxMUQzLCAweDdCQ0UsIDB4MjlBQiwNCisgICAgMHg3QkQ0LCAweDJDMDcsIDB4N0JENSwgMHgyQzAyLCAweDdCRDgsIDB4MkMwQywgMHg3QkQ5LCAweDEzMTYsDQorICAgIDB4N0JEQSwgMHgyQzA0LCAweDdCREIsIDB4MTMxQSwgMHg3QkRDLCAweDJDMEEsIDB4N0JERCwgMHgyQzAxLA0KKyAgICAweDdCREUsIDB4MkJGRSwgMHg3QkRGLCAweDJDMEQsIDB4N0JFMCwgMHgxNDJELCAweDdCRTEsIDB4MTMxQiwNCisgICAgMHg3QkUyLCAweDJDMDksIDB4N0JFMywgMHgyQkZGLCAweDdCRTQsIDB4MTMxOSwgMHg3QkU1LCAweDJDMDMsDQorICAgIDB4N0JFNiwgMHgxMzFELCAweDdCRTcsIDB4MkMwMCwgMHg3QkU4LCAweDJDMDUsIDB4N0JFOSwgMHgxMzFDLA0KKyAgICAweDdCRUEsIDB4MkMwOCwgMHg3QkVCLCAweDJDMEIsIDB4N0JGMCwgMHgyREU5LCAweDdCRjEsIDB4MkRFQSwNCisgICAgMHg3QkYyLCAweDJEREEsIDB4N0JGMywgMHgyREUxLCAweDdCRjQsIDB4MkRERiwgMHg3QkY3LCAweDE0MkIsDQorICAgIDB4N0JGOCwgMHgyREU2LCAweDdCRjksIDB4MkMwNiwgMHg3QkZCLCAweDJEREQsIDB4N0JGRCwgMHgyREU3LA0KKyAgICAweDdCRkUsIDB4MTQyQSwgMHg3QkZGLCAweDJEREMsIDB4N0MwMCwgMHgyRERCLCAweDdDMDEsIDB4MkRFNSwNCisgICAgMHg3QzAyLCAweDJERTIsIDB4N0MwMywgMHgyREU0LCAweDdDMDUsIDB4MkREOCwgMHg3QzA2LCAweDJERTgsDQorICAgIDB4N0MwNywgMHgxNDI4LCAweDdDMDksIDB4MkRFMywgMHg3QzBBLCAweDJERUMsIDB4N0MwQiwgMHgyREUwLA0KKyAgICAweDdDMEMsIDB4MTQyQywgMHg3QzBELCAweDE0MjksIDB4N0MwRSwgMHgyRERFLCAweDdDMEYsIDB4MkREOSwNCisgICAgMHg3QzEwLCAweDJERUIsIDB4N0MxMSwgMHgxMzE3LCAweDdDMTksIDB4MkY3OCwgMHg3QzFDLCAweDJGNzYsDQorICAgIDB4N0MxRCwgMHgyRjdDLCAweDdDMUUsIDB4MTUwOCwgMHg3QzFGLCAweDJGN0EsIDB4N0MyMCwgMHgyRjc5LA0KKyAgICAweDdDMjEsIDB4MTUwQSwgMHg3QzIyLCAweDJGN0YsIDB4N0MyMywgMHgxNTA5LCAweDdDMjUsIDB4MkY4MCwNCisgICAgMHg3QzI2LCAweDJGN0QsIDB4N0MyNywgMHgxNTA2LCAweDdDMjgsIDB4MkY3RSwgMHg3QzI5LCAweDJGNzcsDQorICAgIDB4N0MyQSwgMHgxNTA3LCAweDdDMkIsIDB4MTUwNSwgMHg3QzJDLCAweDMwRDYsIDB4N0MyRCwgMHgyRjdCLA0KKyAgICAweDdDMzAsIDB4MkY4MSwgMHg3QzMzLCAweDMwRDMsIDB4N0MzNywgMHgxNUE3LCAweDdDMzgsIDB4MTVBNSwNCisgICAgMHg3QzM5LCAweDMwRDUsIDB4N0MzQiwgMHgzMEQ3LCAweDdDM0MsIDB4MzBENCwgMHg3QzNELCAweDE1QTYsDQorICAgIDB4N0MzRSwgMHgxNUEzLCAweDdDM0YsIDB4MTVBNCwgMHg3QzQwLCAweDE1QTgsIDB4N0M0MywgMHgxNjJCLA0KKyAgICAweDdDNDUsIDB4MzIxMiwgMHg3QzQ3LCAweDMyMTEsIDB4N0M0OCwgMHgzMjBGLCAweDdDNDksIDB4MzIwRSwNCisgICAgMHg3QzRBLCAweDMyMTAsIDB4N0M0QywgMHgxNjJBLCAweDdDNEQsIDB4MTYyQywgMHg3QzUwLCAweDE2ODEsDQorICAgIDB4N0M1MywgMHgzMkVBLCAweDdDNTQsIDB4MzJFOSwgMHg3QzU3LCAweDMzOUIsIDB4N0M1OSwgMHgzMzlELA0KKyAgICAweDdDNUEsIDB4MzM5RiwgMHg3QzVCLCAweDMzOUUsIDB4N0M1QywgMHgzMzlDLCAweDdDNUYsIDB4MTZEMSwNCisgICAgMHg3QzYwLCAweDE2RDAsIDB4N0M2MywgMHgxNzAxLCAweDdDNjQsIDB4MTcwMCwgMHg3QzY1LCAweDE3MDIsDQorICAgIDB4N0M2NiwgMHgzNDJCLCAweDdDNjcsIDB4MzQyQSwgMHg3QzY5LCAweDM0RDYsIDB4N0M2QSwgMHgzNDkzLA0KKyAgICAweDdDNkIsIDB4MzRENywgMHg3QzZDLCAweDE3NDUsIDB4N0M2RSwgMHgxNzQ2LCAweDdDNkYsIDB4MzUwNywNCisgICAgMHg3QzcyLCAweDE3NkIsIDB4N0M3MywgMHgwM0Y3LCAweDdDNzUsIDB4MUEyNSwgMHg3Qzc4LCAweDFCQkIsDQorICAgIDB4N0M3OSwgMHgxQkJDLCAweDdDN0EsIDB4MUJCQSwgMHg3QzdELCAweDA3Q0MsIDB4N0M3RiwgMHgxQkJELA0KKyAgICAweDdDODAsIDB4MUJCRSwgMHg3QzgxLCAweDFCQkYsIDB4N0M4NCwgMHgxRDk2LCAweDdDODUsIDB4MUQ5QywNCisgICAgMHg3Qzg4LCAweDFEOUEsIDB4N0M4OSwgMHgwOTZBLCAweDdDOEEsIDB4MUQ5OCwgMHg3QzhDLCAweDFEOTksDQorICAgIDB4N0M4RCwgMHgxRDlCLCAweDdDOTEsIDB4MUQ5NywgMHg3QzkyLCAweDBCNTAsIDB4N0M5NCwgMHgxRkUwLA0KKyAgICAweDdDOTUsIDB4MEI1MiwgMHg3Qzk2LCAweDFGRTIsIDB4N0M5NywgMHgwQjUxLCAweDdDOTgsIDB4MUZFMSwNCisgICAgMHg3QzlFLCAweDIyNUQsIDB4N0M5RiwgMHgwRDBELCAweDdDQTEsIDB4MjI1RiwgMHg3Q0EyLCAweDIyNUMsDQorICAgIDB4N0NBMywgMHgxRkUzLCAweDdDQTUsIDB4MEQwRSwgMHg3Q0E3LCAweDM2RUQsIDB4N0NBOCwgMHgyMjVFLA0KKyAgICAweDdDQUYsIDB4MjRGRSwgMHg3Q0IxLCAweDBFQkIsIDB4N0NCMiwgMHgyNEZDLCAweDdDQjMsIDB4MEVCQywNCisgICAgMHg3Q0I0LCAweDI0RkQsIDB4N0NCNSwgMHgwRUJELCAweDdDQjksIDB4MTA1OCwgMHg3Q0JBLCAweDI3N0QsDQorICAgIDB4N0NCQiwgMHgyNzdBLCAweDdDQkMsIDB4Mjc3QywgMHg3Q0JELCAweDEwNTksIDB4N0NCRSwgMHgxMDVBLA0KKyAgICAweDdDQkYsIDB4Mjc3QiwgMHg3Q0M1LCAweDI5QjAsIDB4N0NDOCwgMHgyOUIxLCAweDdDQ0EsIDB4MTFENCwNCisgICAgMHg3Q0NCLCAweDI5QjMsIDB4N0NDQywgMHgyOUIyLCAweDdDQ0UsIDB4MDEyMSwgMHg3Q0QwLCAweDJDMTEsDQorICAgIDB4N0NEMSwgMHgyQzEyLCAweDdDRDIsIDB4MkMwRSwgMHg3Q0Q0LCAweDJDMEYsIDB4N0NENSwgMHgxMzFFLA0KKyAgICAweDdDRDYsIDB4MTMxRiwgMHg3Q0Q3LCAweDJDMTAsIDB4N0NEOSwgMHgxNDMzLCAweDdDREMsIDB4MTQyRiwNCisgICAgMHg3Q0RELCAweDE0MzQsIDB4N0NERSwgMHgxNDMwLCAweDdDREYsIDB4MTQzMiwgMHg3Q0UwLCAweDE0MkUsDQorICAgIDB4N0NFMiwgMHgxNDMxLCAweDdDRTcsIDB4MTUwQiwgMHg3Q0U4LCAweDJERUQsIDB4N0NFQSwgMHgzMEQ5LA0KKyAgICAweDdDRUMsIDB4MzBEOCwgMHg3Q0VFLCAweDMyMTMsIDB4N0NFRiwgMHgxNjJELCAweDdDRjAsIDB4MTYyRSwNCisgICAgMHg3Q0YxLCAweDMzQTEsIDB4N0NGMiwgMHgzMkVCLCAweDdDRjQsIDB4MzNBMCwgMHg3Q0Y2LCAweDM0RDgsDQorICAgIDB4N0NGNywgMHgzNTFELCAweDdDRjgsIDB4MDNGOCwgMHg3Q0ZCLCAweDA0RkIsIDB4N0NGRCwgMHgxQTI2LA0KKyAgICAweDdDRkUsIDB4MDY2NywgMHg3RDAwLCAweDA3Q0YsIDB4N0QwMSwgMHgxQkMyLCAweDdEMDIsIDB4MDdDRCwNCisgICAgMHg3RDAzLCAweDFCQzAsIDB4N0QwNCwgMHgwN0QyLCAweDdEMDUsIDB4MDdDRSwgMHg3RDA2LCAweDA3RDMsDQorICAgIDB4N0QwNywgMHgwN0QxLCAweDdEMDgsIDB4MUJDMSwgMHg3RDA5LCAweDA3RDAsIDB4N0QwQSwgMHgwOTZFLA0KKyAgICAweDdEMEIsIDB4MDk2RCwgMHg3RDBDLCAweDFEQTcsIDB4N0QwRCwgMHgwOTc2LCAweDdEMEUsIDB4MURBMCwNCisgICAgMHg3RDBGLCAweDFEQTYsIDB4N0QxMCwgMHgwOTcyLCAweDdEMTEsIDB4MUQ5RiwgMHg3RDEyLCAweDFEQTUsDQorICAgIDB4N0QxMywgMHgxREEzLCAweDdEMTQsIDB4MDk3MSwgMHg3RDE1LCAweDA5NzMsIDB4N0QxNiwgMHgxREEyLA0KKyAgICAweDdEMTcsIDB4MDk2QywgMHg3RDE4LCAweDFEQTEsIDB4N0QxOSwgMHgwOTc3LCAweDdEMUEsIDB4MDk3NCwNCisgICAgMHg3RDFCLCAweDA5NzgsIDB4N0QxQywgMHgwOTc1LCAweDdEMUQsIDB4MUQ5RSwgMHg3RDFFLCAweDFEOUQsDQorICAgIDB4N0QxRiwgMHgxREE0LCAweDdEMjAsIDB4MDk2RiwgMHg3RDIxLCAweDA5NkIsIDB4N0QyMiwgMHgwOTcwLA0KKyAgICAweDdEMjgsIDB4MUZGMiwgMHg3RDI5LCAweDFGRUIsIDB4N0QyQiwgMHgwRDEzLCAweDdEMkMsIDB4MUZFQSwNCisgICAgMHg3RDJFLCAweDBCNTYsIDB4N0QyRiwgMHgwQjVELCAweDdEMzAsIDB4MEI1QSwgMHg3RDMxLCAweDBCNjAsDQorICAgIDB4N0QzMiwgMHgwQjVGLCAweDdEMzMsIDB4MEI1QiwgMHg3RDM1LCAweDFGRTQsIDB4N0QzNiwgMHgxRkU3LA0KKyAgICAweDdEMzgsIDB4MUZFNiwgMHg3RDM5LCAweDBCNTcsIDB4N0QzQSwgMHgxRkU4LCAweDdEM0IsIDB4MUZGMSwNCisgICAgMHg3RDNDLCAweDBCNTgsIDB4N0QzRCwgMHgxRkU1LCAweDdEM0UsIDB4MUZFRSwgMHg3RDNGLCAweDFGRUYsDQorICAgIDB4N0Q0MCwgMHgwQjU5LCAweDdENDEsIDB4MUZFQywgMHg3RDQyLCAweDBCNUUsIDB4N0Q0MywgMHgwQjU0LA0KKyAgICAweDdENDQsIDB4MEI1QywgMHg3RDQ1LCAweDFGRTksIDB4N0Q0NiwgMHgwQjUzLCAweDdENDcsIDB4MUZFRCwNCisgICAgMHg3RDRBLCAweDFGRjAsIDB4N0Q0RSwgMHgyMjcwLCAweDdENEYsIDB4MjI2NywgMHg3RDUwLCAweDBEMTAsDQorICAgIDB4N0Q1MSwgMHgyMjZFLCAweDdENTIsIDB4MjI2QiwgMHg3RDUzLCAweDIyNjMsIDB4N0Q1NCwgMHgyMjZDLA0KKyAgICAweDdENTUsIDB4MEQxMiwgMHg3RDU2LCAweDIyNjQsIDB4N0Q1OCwgMHgyMjYwLCAweDdENUIsIDB4MEVDMywNCisgICAgMHg3RDVDLCAweDIyNjksIDB4N0Q1RSwgMHgwRDBGLCAweDdENUYsIDB4MjI2RiwgMHg3RDYxLCAweDBEMTYsDQorICAgIDB4N0Q2MiwgMHgwRDE4LCAweDdENjMsIDB4MjI2MiwgMHg3RDY2LCAweDBEMTcsIDB4N0Q2NywgMHgyMjY1LA0KKyAgICAweDdENjgsIDB4MEQxMSwgMHg3RDY5LCAweDIyNkQsIDB4N0Q2QSwgMHgyMjY2LCAweDdENkIsIDB4MjI2QSwNCisgICAgMHg3RDZELCAweDIyNjgsIDB4N0Q2RSwgMHgwRDE0LCAweDdENkYsIDB4MjI2MSwgMHg3RDcwLCAweDBEMTksDQorICAgIDB4N0Q3MSwgMHgwQjU1LCAweDdENzIsIDB4MEQxNSwgMHg3RDczLCAweDBEMUEsIDB4N0Q3OSwgMHgwRUJGLA0KKyAgICAweDdEN0EsIDB4MjUwNSwgMHg3RDdCLCAweDI1MDcsIDB4N0Q3QywgMHgyNTA5LCAweDdEN0QsIDB4MjUwRCwNCisgICAgMHg3RDdGLCAweDI1MDMsIDB4N0Q4MCwgMHgyNTAxLCAweDdEODEsIDB4MEVDMSwgMHg3RDgzLCAweDI1MDgsDQorICAgIDB4N0Q4NCwgMHgyNTBDLCAweDdEODUsIDB4MjUwNCwgMHg3RDg2LCAweDI1MDAsIDB4N0Q4OCwgMHgyNEZGLA0KKyAgICAweDdEOEMsIDB4MjUwQSwgMHg3RDhELCAweDI1MDIsIDB4N0Q4RSwgMHgyNTA2LCAweDdEOEYsIDB4MEVDMiwNCisgICAgMHg3RDkxLCAweDBFQzAsIDB4N0Q5MiwgMHgyNTBFLCAweDdEOTMsIDB4MEVCRSwgMHg3RDk0LCAweDI1MEIsDQorICAgIDB4N0Q5NiwgMHgyNzhFLCAweDdEOUMsIDB4MTA1RCwgMHg3RDlELCAweDI3ODYsIDB4N0Q5RSwgMHgxMUUxLA0KKyAgICAweDdEOUYsIDB4Mjc5MCwgMHg3REEwLCAweDEwNjAsIDB4N0RBMSwgMHgyNzk0LCAweDdEQTIsIDB4MTA2NiwNCisgICAgMHg3REEzLCAweDI3ODEsIDB4N0RBNiwgMHgyNzkxLCAweDdEQTcsIDB4Mjc3RSwgMHg3REE5LCAweDI3OTMsDQorICAgIDB4N0RBQSwgMHgyNzgyLCAweDdEQUMsIDB4MTA2RCwgMHg3REFELCAweDEwNkEsIDB4N0RBRSwgMHgyNzkyLA0KKyAgICAweDdEQUYsIDB4Mjc4QywgMHg3REIwLCAweDEwNUMsIDB4N0RCMSwgMHgxMDY0LCAweDdEQjIsIDB4MTA2MywNCisgICAgMHg3REI0LCAweDEwNjIsIDB4N0RCNSwgMHgxMDY4LCAweDdEQjcsIDB4Mjc3RiwgMHg3REI4LCAweDEwNjksDQorICAgIDB4N0RCOSwgMHgyNzhELCAweDdEQkEsIDB4MTA2NSwgMHg3REJCLCAweDEwNUIsIDB4N0RCQywgMHgyNzhGLA0KKyAgICAweDdEQkQsIDB4MTA1RSwgMHg3REJFLCAweDEwNUYsIDB4N0RCRiwgMHgxMDY3LCAweDdEQzAsIDB4Mjc4NCwNCisgICAgMHg3REMxLCAweDI3ODMsIDB4N0RDMiwgMHgyNzgwLCAweDdEQzQsIDB4Mjc4OCwgMHg3REM1LCAweDI3ODUsDQorICAgIDB4N0RDNiwgMHgyNzg5LCAweDdEQzcsIDB4MTA2QywgMHg3REM5LCAweDI3OTUsIDB4N0RDQSwgMHgxMDYxLA0KKyAgICAweDdEQ0IsIDB4Mjc4QSwgMHg3RENDLCAweDI3OEIsIDB4N0RDRSwgMHgyNzg3LCAweDdERDIsIDB4MTA2QiwNCisgICAgMHg3REQ3LCAweDI5QjgsIDB4N0REOCwgMHgxMUQ5LCAweDdERDksIDB4MTFFMiwgMHg3RERBLCAweDExREUsDQorICAgIDB4N0REQiwgMHgyOUI1LCAweDdEREQsIDB4MTFEQiwgMHg3RERFLCAweDExREYsIDB4N0RERiwgMHgyOUMxLA0KKyAgICAweDdERTAsIDB4MTFENSwgMHg3REUxLCAweDI5QjksIDB4N0RFMywgMHgxMURELCAweDdERTYsIDB4MjlCQywNCisgICAgMHg3REU3LCAweDI5QjcsIDB4N0RFOCwgMHgxMURDLCAweDdERTksIDB4MTFFMCwgMHg3REVBLCAweDI5QjYsDQorICAgIDB4N0RFQywgMHgxMURBLCAweDdERUUsIDB4MjlDMCwgMHg3REVGLCAweDExRDcsIDB4N0RGMCwgMHgyOUJGLA0KKyAgICAweDdERjEsIDB4MjlCRSwgMHg3REYyLCAweDExRTMsIDB4N0RGMywgMHgyOEM4LCAweDdERjQsIDB4MTFENiwNCisgICAgMHg3REY2LCAweDI5QkQsIDB4N0RGNywgMHgyOUI0LCAweDdERjksIDB4MTFFNCwgMHg3REZBLCAweDI5QkIsDQorICAgIDB4N0RGQiwgMHgxMUQ4LCAweDdFMDMsIDB4MjlCQSwgMHg3RTA4LCAweDEzMjIsIDB4N0UwOSwgMHgxMzI3LA0KKyAgICAweDdFMEEsIDB4MTMyMCwgMHg3RTBCLCAweDJDMUYsIDB4N0UwQywgMHgyQzE2LCAweDdFMEQsIDB4MkMyMiwNCisgICAgMHg3RTBFLCAweDJDMUEsIDB4N0UwRiwgMHgyQzIwLCAweDdFMTAsIDB4MTMyOCwgMHg3RTExLCAweDEzMjEsDQorICAgIDB4N0UxMiwgMHgyQzEzLCAweDdFMTMsIDB4MkMxOSwgMHg3RTE0LCAweDJDMjMsIDB4N0UxNSwgMHgyQzFDLA0KKyAgICAweDdFMTYsIDB4MkMyMSwgMHg3RTE3LCAweDJDMTUsIDB4N0UxQSwgMHgyQzFELCAweDdFMUIsIDB4MTMyMywNCisgICAgMHg3RTFDLCAweDJDMUIsIDB4N0UxRCwgMHgxMzI2LCAweDdFMUUsIDB4MTMyNSwgMHg3RTFGLCAweDJDMTcsDQorICAgIDB4N0UyMCwgMHgyQzE4LCAweDdFMjEsIDB4MkMxNCwgMHg3RTIyLCAweDJDMUUsIDB4N0UyMywgMHgxMzI0LA0KKyAgICAweDdFMjQsIDB4MkMyNSwgMHg3RTI1LCAweDJDMjQsIDB4N0UyOSwgMHgyREY4LCAweDdFMkEsIDB4MkRGNCwNCisgICAgMHg3RTJCLCAweDE0M0IsIDB4N0UyRCwgMHgyREVFLCAweDdFMkUsIDB4MTQzNSwgMHg3RTJGLCAweDE0NDUsDQorICAgIDB4N0UzMCwgMHgyREZBLCAweDdFMzEsIDB4MTQzRCwgMHg3RTMyLCAweDE0MzksIDB4N0UzMywgMHgyREYxLA0KKyAgICAweDdFMzQsIDB4MTQ0MCwgMHg3RTM1LCAweDE0NDMsIDB4N0UzNiwgMHgyREZDLCAweDdFMzcsIDB4MTQzOCwNCisgICAgMHg3RTM4LCAweDJERjMsIDB4N0UzOSwgMHgxNDQxLCAweDdFM0EsIDB4MkRGRSwgMHg3RTNCLCAweDJERkIsDQorICAgIDB4N0UzQywgMHgyREVGLCAweDdFM0QsIDB4MTQzQywgMHg3RTNFLCAweDE0MzYsIDB4N0UzRiwgMHgxNDQ0LA0KKyAgICAweDdFNDAsIDB4MkRGNiwgMHg3RTQxLCAweDE0M0YsIDB4N0U0MiwgMHgyREYwLCAweDdFNDMsIDB4MTQzQSwNCisgICAgMHg3RTQ0LCAweDJERkQsIDB4N0U0NSwgMHgxNDNFLCAweDdFNDYsIDB4MTQzNywgMHg3RTQ3LCAweDJERjcsDQorICAgIDB4N0U0OCwgMHgxNDQyLCAweDdFNDksIDB4MkRGNSwgMHg3RTRDLCAweDJERjksIDB4N0U1MCwgMHgyRjgzLA0KKyAgICAweDdFNTEsIDB4MkY4OSwgMHg3RTUyLCAweDE1MTEsIDB4N0U1MywgMHgyRjhDLCAweDdFNTQsIDB4MTUwQywNCisgICAgMHg3RTU1LCAweDE1MEQsIDB4N0U1NiwgMHgyRjg0LCAweDdFNTcsIDB4MkY4QiwgMHg3RTU4LCAweDJGODYsDQorICAgIDB4N0U1OSwgMHgxNTEyLCAweDdFNUEsIDB4MTUwRiwgMHg3RTVDLCAweDJGODIsIDB4N0U1RSwgMHgxNTBFLA0KKyAgICAweDdFNUYsIDB4MkY4OCwgMHg3RTYwLCAweDJGOEEsIDB4N0U2MSwgMHgxNTEwLCAweDdFNjIsIDB4MkY4NywNCisgICAgMHg3RTYzLCAweDJGODUsIDB4N0U2OCwgMHgzMEUzLCAweDdFNjksIDB4MTVBQywgMHg3RTZBLCAweDE1QUQsDQorICAgIDB4N0U2QiwgMHgxNUE5LCAweDdFNkQsIDB4MTVBQSwgMHg3RTZGLCAweDMwREYsIDB4N0U3MCwgMHgzMERELA0KKyAgICAweDdFNzIsIDB4MzBFMSwgMHg3RTczLCAweDE1QUUsIDB4N0U3NCwgMHgzMEUyLCAweDdFNzUsIDB4MzBEQiwNCisgICAgMHg3RTc2LCAweDMwREEsIDB4N0U3NywgMHgzMERFLCAweDdFNzgsIDB4MzBEQywgMHg3RTc5LCAweDE1QUIsDQorICAgIDB4N0U3QSwgMHgzMEUwLCAweDdFN0IsIDB4MzIxNCwgMHg3RTdDLCAweDE2MzEsIDB4N0U3RCwgMHgxNjMwLA0KKyAgICAweDdFN0UsIDB4MzIxNSwgMHg3RTgwLCAweDMyMTcsIDB4N0U4MSwgMHgzMjE2LCAweDdFODIsIDB4MTYzMiwNCisgICAgMHg3RTg2LCAweDMyRjAsIDB4N0U4NywgMHgzMkVELCAweDdFODgsIDB4MzJFRSwgMHg3RThBLCAweDMyRUMsDQorICAgIDB4N0U4QiwgMHgzMkVGLCAweDdFOEMsIDB4MTY4MywgMHg3RThELCAweDMyRjEsIDB4N0U4RiwgMHgxNjgyLA0KKyAgICAweDdFOTEsIDB4MzNBMiwgMHg3RTkzLCAweDE3MDMsIDB4N0U5NCwgMHgxNzA1LCAweDdFOTUsIDB4MzQyQywNCisgICAgMHg3RTk2LCAweDE3MDQsIDB4N0U5NywgMHgzNDk0LCAweDdFOTgsIDB4MzREQSwgMHg3RTk5LCAweDM0REMsDQorICAgIDB4N0U5QSwgMHgzNEQ5LCAweDdFOUIsIDB4MzREQiwgMHg3RTlDLCAweDE3NTksIDB4N0YzNiwgMHgwM0Y5LA0KKyAgICAweDdGMzgsIDB4MDdENCwgMHg3RjM5LCAweDFEMUYsIDB4N0YzQSwgMHgwOTc5LCAweDdGM0QsIDB4MEI2MSwNCisgICAgMHg3RjNFLCAweDIyNzEsIDB4N0YzRiwgMHgyMjcyLCAweDdGNDMsIDB4MkMyNiwgMHg3RjQ0LCAweDE0NDYsDQorICAgIDB4N0Y0NSwgMHgyREZGLCAweDdGNDgsIDB4MTUxMywgMHg3RjRBLCAweDMwRTUsIDB4N0Y0QiwgMHgzMEU0LA0KKyAgICAweDdGNEMsIDB4MTYzMywgMHg3RjRELCAweDMyRjIsIDB4N0Y0RiwgMHgzM0EzLCAweDdGNTAsIDB4MTcyNiwNCisgICAgMHg3RjUxLCAweDE4MTIsIDB4N0Y1NCwgMHgwNjY4LCAweDdGNTUsIDB4MDRGQywgMHg3RjU4LCAweDFCQzMsDQorICAgIDB4N0Y1QiwgMHgxREFELCAweDdGNUMsIDB4MURBOCwgMHg3RjVELCAweDFEQUMsIDB4N0Y1RSwgMHgxREFBLA0KKyAgICAweDdGNUYsIDB4MDk3QSwgMHg3RjYwLCAweDFEQUIsIDB4N0Y2MSwgMHgxREE5LCAweDdGNjMsIDB4MUZGMywNCisgICAgMHg3RjY1LCAweDIyNzMsIDB4N0Y2NiwgMHgyMjc0LCAweDdGNjcsIDB4MjUxMSwgMHg3RjY4LCAweDI1MTIsDQorICAgIDB4N0Y2OSwgMHgwRUM1LCAweDdGNkEsIDB4MEVDNiwgMHg3RjZCLCAweDI1MTAsIDB4N0Y2QywgMHgyNTEzLA0KKyAgICAweDdGNkQsIDB4MjUwRiwgMHg3RjZFLCAweDBFQzQsIDB4N0Y3MCwgMHgxMDZFLCAweDdGNzIsIDB4MEVDNywNCisgICAgMHg3RjczLCAweDI3OTYsIDB4N0Y3NSwgMHgxMUU1LCAweDdGNzYsIDB4MjlDMiwgMHg3Rjc3LCAweDExRTYsDQorICAgIDB4N0Y3OSwgMHgxMzI5LCAweDdGN0EsIDB4MkMyOSwgMHg3RjdCLCAweDJDMjcsIDB4N0Y3QywgMHgyQzI4LA0KKyAgICAweDdGN0QsIDB4MkUwMiwgMHg3RjdFLCAweDJFMDEsIDB4N0Y3RiwgMHgyRTAwLCAweDdGODMsIDB4MzBFNiwNCisgICAgMHg3Rjg1LCAweDE1QUYsIDB4N0Y4NiwgMHgzMEU3LCAweDdGODcsIDB4MzNBNCwgMHg3Rjg4LCAweDE3MjcsDQorICAgIDB4N0Y4OSwgMHgzNDk1LCAweDdGOEEsIDB4MDNGQSwgMHg3RjhCLCAweDA2NkEsIDB4N0Y4QywgMHgwNjY5LA0KKyAgICAweDdGOEQsIDB4MUJDNSwgMHg3RjhFLCAweDA3RDUsIDB4N0Y5MSwgMHgxQkM0LCAweDdGOTIsIDB4MURBRiwNCisgICAgMHg3Rjk0LCAweDA5N0IsIDB4N0Y5NSwgMHgxRkY0LCAweDdGOTYsIDB4MURBRSwgMHg3RjlBLCAweDBCNjMsDQorICAgIDB4N0Y5QiwgMHgxRkY3LCAweDdGOUMsIDB4MUZGNSwgMHg3RjlELCAweDFGRjYsIDB4N0Y5RSwgMHgwQjYyLA0KKyAgICAweDdGQTAsIDB4MjI3NiwgMHg3RkExLCAweDIyNzcsIDB4N0ZBMiwgMHgyMjc1LCAweDdGQTQsIDB4MEVDQSwNCisgICAgMHg3RkE1LCAweDI1MTUsIDB4N0ZBNiwgMHgyNTE0LCAweDdGQTcsIDB4MjUxNiwgMHg3RkE4LCAweDBFQzksDQorICAgIDB4N0ZBOSwgMHgwRUM4LCAweDdGQUMsIDB4MjlDMywgMHg3RkFELCAweDI5QzUsIDB4N0ZBRiwgMHgxMUU3LA0KKyAgICAweDdGQjAsIDB4MjlDNCwgMHg3RkIxLCAweDJDMkEsIDB4N0ZCMiwgMHgxMzJBLCAweDdGQjMsIDB4MkY4RSwNCisgICAgMHg3RkI1LCAweDJGOEQsIDB4N0ZCNiwgMHgxNUIwLCAweDdGQjcsIDB4MzBFOCwgMHg3RkI4LCAweDE1QjIsDQorICAgIDB4N0ZCOSwgMHgxNUIxLCAweDdGQkEsIDB4MzIxOCwgMHg3RkJCLCAweDMyRjMsIDB4N0ZCQywgMHgxNjg0LA0KKyAgICAweDdGQkQsIDB4MDNGQiwgMHg3RkJFLCAweDFCQzYsIDB4N0ZCRiwgMHgwN0Q2LCAweDdGQzAsIDB4MURCMiwNCisgICAgMHg3RkMxLCAweDA5N0QsIDB4N0ZDMiwgMHgxREIxLCAweDdGQzMsIDB4MURCMCwgMHg3RkM1LCAweDA5N0MsDQorICAgIDB4N0ZDNywgMHgxRkZELCAweDdGQzksIDB4MUZGRiwgMHg3RkNBLCAweDFGRjgsIDB4N0ZDQiwgMHgxRkY5LA0KKyAgICAweDdGQ0MsIDB4MEI2NCwgMHg3RkNELCAweDFGRkEsIDB4N0ZDRSwgMHgwQjY1LCAweDdGQ0YsIDB4MUZGRSwNCisgICAgMHg3RkQwLCAweDFGRkIsIDB4N0ZEMSwgMHgxRkZDLCAweDdGRDIsIDB4MEI2NiwgMHg3RkQ0LCAweDBEMUMsDQorICAgIDB4N0ZENSwgMHgwRDFELCAweDdGRDcsIDB4MjI3OCwgMHg3RkRCLCAweDI1MTcsIDB4N0ZEQywgMHgyNTE4LA0KKyAgICAweDdGREUsIDB4Mjc5QSwgMHg3RkRGLCAweDEwNzEsIDB4N0ZFMCwgMHgxMDZGLCAweDdGRTEsIDB4MTA3MCwNCisgICAgMHg3RkUyLCAweDI3OTcsIDB4N0ZFMywgMHgyNzk4LCAweDdGRTUsIDB4Mjc5OSwgMHg3RkU2LCAweDI5Q0EsDQorICAgIDB4N0ZFOCwgMHgyOUNCLCAweDdGRTksIDB4MTFFOCwgMHg3RkVBLCAweDI5QzgsIDB4N0ZFQiwgMHgyOUM3LA0KKyAgICAweDdGRUMsIDB4MjlDOSwgMHg3RkVELCAweDI5QzYsIDB4N0ZFRSwgMHgxMzJELCAweDdGRUYsIDB4MkMyQiwNCisgICAgMHg3RkYwLCAweDEzMkIsIDB4N0ZGMSwgMHgxMzJDLCAweDdGRjIsIDB4MkUwNCwgMHg3RkYzLCAweDE0NDcsDQorICAgIDB4N0ZGNCwgMHgyRTAzLCAweDdGRjUsIDB4MkVGRiwgMHg3RkY3LCAweDJGOEYsIDB4N0ZGOCwgMHgyRjkwLA0KKyAgICAweDdGRjksIDB4MTUxNCwgMHg3RkZCLCAweDE1MTUsIDB4N0ZGQywgMHgxNDQ4LCAweDdGRkQsIDB4MzBFOSwNCisgICAgMHg3RkZFLCAweDMwRUEsIDB4N0ZGRiwgMHgzMjE5LCAweDgwMDAsIDB4MTYzNCwgMHg4MDAxLCAweDAzRkMsDQorICAgIDB4ODAwMywgMHgwM0ZELCAweDgwMDQsIDB4MDk3RiwgMHg4MDA1LCAweDA2NkIsIDB4ODAwNiwgMHgwOTdFLA0KKyAgICAweDgwMDcsIDB4MUJDNywgMHg4MDBCLCAweDBEMUUsIDB4ODAwQywgMHgwM0ZFLCAweDgwMEQsIDB4MDdEOCwNCisgICAgMHg4MDBFLCAweDFCQzgsIDB4ODAwRiwgMHgxQkM5LCAweDgwMTAsIDB4MDdENywgMHg4MDExLCAweDA3RDksDQorICAgIDB4ODAxMiwgMHgwM0ZGLCAweDgwMTQsIDB4MUJDQSwgMHg4MDE1LCAweDA5ODEsIDB4ODAxNiwgMHgxREIzLA0KKyAgICAweDgwMTcsIDB4MDk4MywgMHg4MDE4LCAweDA5ODAsIDB4ODAxOSwgMHgwOTgyLCAweDgwMUIsIDB4MjAwMiwNCisgICAgMHg4MDFDLCAweDBCNjcsIDB4ODAxRSwgMHgyMDAxLCAweDgwMUYsIDB4MjAwMCwgMHg4MDIxLCAweDI1MTksDQorICAgIDB4ODAyNCwgMHgyNzlCLCAweDgwMjYsIDB4MTFFOSwgMHg4MDI4LCAweDEzMkUsIDB4ODAyOSwgMHgyQzJELA0KKyAgICAweDgwMkEsIDB4MkMyQywgMHg4MDJDLCAweDJFMDUsIDB4ODAzMCwgMHgzMkY0LCAweDgwMzMsIDB4MDQwMCwNCisgICAgMHg4MDM0LCAweDE4RDgsIDB4ODAzNSwgMHgxQTI3LCAweDgwMzYsIDB4MDdEQSwgMHg4MDM3LCAweDFCQ0IsDQorICAgIDB4ODAzOSwgMHgxREI1LCAweDgwM0QsIDB4MDk4NCwgMHg4MDNFLCAweDFEQjQsIDB4ODAzRiwgMHgwOTg1LA0KKyAgICAweDgwNDMsIDB4MjAwNCwgMHg4MDQ2LCAweDBCNjksIDB4ODA0NywgMHgyMDAzLCAweDgwNDgsIDB4MjAwNSwNCisgICAgMHg4MDRBLCAweDBCNjgsIDB4ODA0RiwgMHgyMjdBLCAweDgwNTAsIDB4MjI3QiwgMHg4MDUxLCAweDIyNzksDQorICAgIDB4ODA1MiwgMHgwRDFGLCAweDgwNTYsIDB4MEVDQiwgMHg4MDU4LCAweDBFQ0MsIDB4ODA1QSwgMHgxMDczLA0KKyAgICAweDgwNUMsIDB4Mjc5RCwgMHg4MDVELCAweDI3OUMsIDB4ODA1RSwgMHgxMDcyLCAweDgwNjQsIDB4MjlDQywNCisgICAgMHg4MDY3LCAweDI5Q0QsIDB4ODA2QywgMHgyQzJFLCAweDgwNkYsIDB4MTQ0QywgMHg4MDcwLCAweDE0NEIsDQorICAgIDB4ODA3MSwgMHgxNDQ5LCAweDgwNzIsIDB4MTQ0QSwgMHg4MDczLCAweDE0NEQsIDB4ODA3NSwgMHgyRjkxLA0KKyAgICAweDgwNzYsIDB4MTUxNywgMHg4MDc3LCAweDE1MTYsIDB4ODA3OCwgMHgzMEVCLCAweDgwNzksIDB4MzIxQSwNCisgICAgMHg4MDdELCAweDE2RDMsIDB4ODA3RSwgMHgxNkQyLCAweDgwN0YsIDB4MDQwMSwgMHg4MDgyLCAweDFDRUMsDQorICAgIDB4ODA4NCwgMHgwRUNFLCAweDgwODUsIDB4MEQyMCwgMHg4MDg2LCAweDBFQ0QsIDB4ODA4NywgMHgxMDc0LA0KKyAgICAweDgwODksIDB4MDQwMiwgMHg4MDhBLCAweDE3QjMsIDB4ODA4QiwgMHgwNDAzLCAweDgwOEMsIDB4MDQwNCwNCisgICAgMHg4MDhGLCAweDFBMjgsIDB4ODA5MCwgMHgxOERCLCAweDgwOTIsIDB4MThEQywgMHg4MDkzLCAweDA0RkUsDQorICAgIDB4ODA5NSwgMHgxOEQ5LCAweDgwOTYsIDB4MDRGRCwgMHg4MDk4LCAweDA1MDAsIDB4ODA5OSwgMHgxOERBLA0KKyAgICAweDgwOUEsIDB4MDUwMiwgMHg4MDlCLCAweDA1MDEsIDB4ODA5QywgMHgxOERELCAweDgwOUQsIDB4MDRGRiwNCisgICAgMHg4MEExLCAweDA2NzAsIDB4ODBBMiwgMHgwNjZFLCAweDgwQTMsIDB4MUEyQSwgMHg4MEE1LCAweDA2NkQsDQorICAgIDB4ODBBOSwgMHgwNjcyLCAweDgwQUEsIDB4MDY3NCwgMHg4MEFCLCAweDA2NzEsIDB4ODBBRCwgMHgxQTJELA0KKyAgICAweDgwQUUsIDB4MUEyOSwgMHg4MEFGLCAweDA2NzUsIDB4ODBCMSwgMHgwNjZGLCAweDgwQjIsIDB4MDUwMywNCisgICAgMHg4MEI0LCAweDA2NzMsIDB4ODBCNSwgMHgxQTJDLCAweDgwQjgsIDB4MUEyQiwgMHg4MEJBLCAweDA2NkMsDQorICAgIDB4ODBDMiwgMHgxQkQxLCAweDgwQzMsIDB4MDdERSwgMHg4MEM0LCAweDA3REYsIDB4ODBDNSwgMHgxQkQzLA0KKyAgICAweDgwQzcsIDB4MUJDRCwgMHg4MEM4LCAweDFCRDAsIDB4ODBDOSwgMHgxQkQ5LCAweDgwQ0EsIDB4MUJENywNCisgICAgMHg4MENDLCAweDA3RTAsIDB4ODBDRCwgMHgxQkRELCAweDgwQ0UsIDB4MDdFMywgMHg4MENGLCAweDFCREEsDQorICAgIDB4ODBEMCwgMHgxQkQyLCAweDgwRDEsIDB4MUJDRiwgMHg4MEQ0LCAweDIyN0QsIDB4ODBENSwgMHgxQkQ4LA0KKyAgICAweDgwRDYsIDB4MDdEQiwgMHg4MEQ3LCAweDFCREIsIDB4ODBEOCwgMHgxQkNDLCAweDgwRDksIDB4MUJENSwNCisgICAgMHg4MERBLCAweDA3REQsIDB4ODBEQiwgMHgwN0UyLCAweDgwREMsIDB4MUJENiwgMHg4MERELCAweDA3RTYsDQorICAgIDB4ODBERSwgMHgwN0U0LCAweDgwRTAsIDB4MUJDRSwgMHg4MEUxLCAweDA3RTEsIDB4ODBFMywgMHgxQkQ0LA0KKyAgICAweDgwRTQsIDB4MDdFNSwgMHg4MEU1LCAweDA3REMsIDB4ODBFNiwgMHgxQkRDLCAweDgwRUQsIDB4MDk4QSwNCisgICAgMHg4MEVGLCAweDA5OTMsIDB4ODBGMCwgMHgwOTg4LCAweDgwRjEsIDB4MDk4NiwgMHg4MEYyLCAweDFEQjcsDQorICAgIDB4ODBGMywgMHgwOThFLCAweDgwRjQsIDB4MDk4QiwgMHg4MEY1LCAweDFEQjksIDB4ODBGOCwgMHgwOThELA0KKyAgICAweDgwRjksIDB4MURCOCwgMHg4MEZBLCAweDFEQjYsIDB4ODBGQiwgMHgxREJCLCAweDgwRkMsIDB4MDk5MiwNCisgICAgMHg4MEZELCAweDA5OTAsIDB4ODBGRSwgMHgyMjdDLCAweDgxMDAsIDB4MURCQywgMHg4MTAxLCAweDFEQkEsDQorICAgIDB4ODEwMiwgMHgwOTg3LCAweDgxMDUsIDB4MDk4OSwgMHg4MTA2LCAweDA5OEMsIDB4ODEwOCwgMHgwOThGLA0KKyAgICAweDgxMEEsIDB4MDk5MSwgMHg4MTE1LCAweDIwMEYsIDB4ODExNiwgMHgwQjZCLCAweDgxMTgsIDB4MjAwNiwNCisgICAgMHg4MTE5LCAweDIwMDgsIDB4ODExQiwgMHgyMDA5LCAweDgxMUQsIDB4MjAxMSwgMHg4MTFFLCAweDIwMEQsDQorICAgIDB4ODExRiwgMHgyMDBCLCAweDgxMjEsIDB4MjAwRSwgMHg4MTIyLCAweDIwMTIsIDB4ODEyMywgMHgwQjZDLA0KKyAgICAweDgxMjQsIDB4MEI3MCwgMHg4MTI1LCAweDIwMDcsIDB4ODEyNywgMHgyMDEwLCAweDgxMjksIDB4MEI2RSwNCisgICAgMHg4MTJCLCAweDBCNkQsIDB4ODEyQywgMHgyMDBDLCAweDgxMkQsIDB4MjAwQSwgMHg4MTJGLCAweDBCNkEsDQorICAgIDB4ODEzMCwgMHgwQjZGLCAweDgxMzksIDB4MEQyNiwgMHg4MTNBLCAweDIyODUsIDB4ODEzRCwgMHgyMjgzLA0KKyAgICAweDgxM0UsIDB4MEQyOCwgMHg4MTQzLCAweDIyN0UsIDB4ODE0NCwgMHgyNTI3LCAweDgxNDYsIDB4MEQyNywNCisgICAgMHg4MTQ3LCAweDIyODIsIDB4ODE0QSwgMHgyMjdGLCAweDgxNEIsIDB4MEQyMywgMHg4MTRDLCAweDBEMjksDQorICAgIDB4ODE0RCwgMHgyMjg0LCAweDgxNEUsIDB4MEQyNSwgMHg4MTRGLCAweDIyODEsIDB4ODE1MCwgMHgxMDc1LA0KKyAgICAweDgxNTEsIDB4MEQyNCwgMHg4MTUyLCAweDIyODAsIDB4ODE1MywgMHgwRDJBLCAweDgxNTQsIDB4MEQyMiwNCisgICAgMHg4MTU1LCAweDBEMjEsIDB4ODE1QiwgMHgyNTFGLCAweDgxNUMsIDB4MjUxRCwgMHg4MTVFLCAweDI1MjMsDQorICAgIDB4ODE2MCwgMHgyNTFCLCAweDgxNjEsIDB4MjUyOCwgMHg4MTYyLCAweDI1MjAsIDB4ODE2NCwgMHgyNTFBLA0KKyAgICAweDgxNjUsIDB4MEVEMiwgMHg4MTY2LCAweDBFRDgsIDB4ODE2NywgMHgyNTI1LCAweDgxNjksIDB4MjUxRSwNCisgICAgMHg4MTZCLCAweDBFRDUsIDB4ODE2RSwgMHgwRUQzLCAweDgxNkYsIDB4MjUyNiwgMHg4MTcwLCAweDBFRDAsDQorICAgIDB4ODE3MSwgMHgwRUNGLCAweDgxNzIsIDB4MjUyMSwgMHg4MTczLCAweDBFRDQsIDB4ODE3NCwgMHgwRDJCLA0KKyAgICAweDgxNzYsIDB4MjUyNCwgMHg4MTc3LCAweDI1MUMsIDB4ODE3OCwgMHgwRUQxLCAweDgxNzksIDB4MEVENiwNCisgICAgMHg4MTdBLCAweDBFRDcsIDB4ODE3RiwgMHgxMDdBLCAweDgxODAsIDB4MTA3NiwgMHg4MTgyLCAweDEwN0IsDQorICAgIDB4ODE4MywgMHgyN0EwLCAweDgxODYsIDB4Mjc5RiwgMHg4MTg3LCAweDI3QTEsIDB4ODE4OCwgMHgxMDc4LA0KKyAgICAweDgxODksIDB4Mjc5RSwgMHg4MThBLCAweDEwNzksIDB4ODE4QiwgMHgyN0E0LCAweDgxOEMsIDB4MjdBMywNCisgICAgMHg4MThELCAweDI3QTIsIDB4ODE4RiwgMHgxMDc3LCAweDgxOTUsIDB4MjlEMSwgMHg4MTk3LCAweDI5RDQsDQorICAgIDB4ODE5OCwgMHgxMUVGLCAweDgxOTksIDB4MjlEMywgMHg4MTlBLCAweDExRUUsIDB4ODE5QiwgMHgxMUVBLA0KKyAgICAweDgxOUMsIDB4MTFFQiwgMHg4MTlELCAweDExRUMsIDB4ODE5RSwgMHgyOUQwLCAweDgxOUYsIDB4MjlDRiwNCisgICAgMHg4MUEwLCAweDExRUQsIDB4ODFBMiwgMHgyOUQyLCAweDgxQTMsIDB4MjlDRSwgMHg4MUE2LCAweDJDMzAsDQorICAgIDB4ODFBNywgMHgyQzNBLCAweDgxQTgsIDB4MTMzMSwgMHg4MUE5LCAweDEzMzAsIDB4ODFBQiwgMHgyQzM0LA0KKyAgICAweDgxQUMsIDB4MkMzNiwgMHg4MUFFLCAweDJDMzEsIDB4ODFCMCwgMHgyQzM1LCAweDgxQjEsIDB4MkMyRiwNCisgICAgMHg4MUIyLCAweDJDMzgsIDB4ODFCMywgMHgxMzJGLCAweDgxQjQsIDB4MkMzNywgMHg4MUI1LCAweDJDMzMsDQorICAgIDB4ODFCNywgMHgyQzM5LCAweDgxQjksIDB4MkMzMiwgMHg4MUJBLCAweDE0NTAsIDB4ODFCQiwgMHgyRTA2LA0KKyAgICAweDgxQkMsIDB4MkUwQywgMHg4MUJELCAweDE0NTQsIDB4ODFCRSwgMHgxNDU2LCAweDgxQkYsIDB4MTQ1MywNCisgICAgMHg4MUMwLCAweDE0NTIsIDB4ODFDMiwgMHgxNDUxLCAweDgxQzMsIDB4MTQ0RiwgMHg4MUM0LCAweDJFMDcsDQorICAgIDB4ODFDNSwgMHgyRTBBLCAweDgxQzYsIDB4MTQ0RSwgMHg4MUM3LCAweDJFMEIsIDB4ODFDOSwgMHgxNDU1LA0KKyAgICAweDgxQ0EsIDB4MkUwOSwgMHg4MUNDLCAweDJFMDgsIDB4ODFDRCwgMHgxNTE4LCAweDgxQ0YsIDB4MTUxOSwNCisgICAgMHg4MUQwLCAweDJGOTQsIDB4ODFEMSwgMHgyRjkyLCAweDgxRDIsIDB4MkY5MywgMHg4MUQ1LCAweDMwRUQsDQorICAgIDB4ODFENywgMHgzMEVDLCAweDgxRDgsIDB4MTVCMywgMHg4MUQ5LCAweDMyMUMsIDB4ODFEQSwgMHgxNjM1LA0KKyAgICAweDgxREIsIDB4MzIxQiwgMHg4MURELCAweDMyRjUsIDB4ODFERSwgMHgzM0E1LCAweDgxREYsIDB4MTZENCwNCisgICAgMHg4MUUwLCAweDM0REQsIDB4ODFFMSwgMHgzNERFLCAweDgxRTIsIDB4MTcwNiwgMHg4MUUzLCAweDA0MDUsDQorICAgIDB4ODFFNSwgMHgwNjc2LCAweDgxRTYsIDB4MjI4NiwgMHg4MUU3LCAweDEwN0MsIDB4ODFFOCwgMHgxNDU3LA0KKyAgICAweDgxRTksIDB4MkUwRCwgMHg4MUVBLCAweDA0MDYsIDB4ODFFQywgMHgwOTk1LCAweDgxRUQsIDB4MDk5NCwNCisgICAgMHg4MUVFLCAweDIyODcsIDB4ODFGMiwgMHgyQzNCLCAweDgxRjMsIDB4MDQwNywgMHg4MUY0LCAweDA3RTcsDQorICAgIDB4ODFGNywgMHgyMjg4LCAweDgxRjgsIDB4MjI4OSwgMHg4MUY5LCAweDIyOEEsIDB4ODFGQSwgMHgxMDdELA0KKyAgICAweDgxRkIsIDB4MTMzMiwgMHg4MUZDLCAweDA0MDgsIDB4ODFGRSwgMHgwNjc3LCAweDgxRkYsIDB4MUJERSwNCisgICAgMHg4MjAwLCAweDA5OTYsIDB4ODIwMSwgMHgxREJELCAweDgyMDIsIDB4MEI3MSwgMHg4MjA0LCAweDIyOEIsDQorICAgIDB4ODIwNSwgMHgwRUQ5LCAweDgyMDcsIDB4MTA3RSwgMHg4MjA4LCAweDEzMzMsIDB4ODIwOSwgMHgxNDU4LA0KKyAgICAweDgyMEEsIDB4MTUxQSwgMHg4MjBCLCAweDMwRUUsIDB4ODIwQywgMHgwNDA5LCAweDgyMEQsIDB4MDY3OCwNCisgICAgMHg4MjEwLCAweDA5OTcsIDB4ODIxMSwgMHgyMDEzLCAweDgyMTIsIDB4MEQyQywgMHg4MjE0LCAweDEwN0YsDQorICAgIDB4ODIxNSwgMHgyN0E1LCAweDgyMTYsIDB4MjlENSwgMHg4MjFCLCAweDA0MEEsIDB4ODIxQywgMHgwRDJELA0KKyAgICAweDgyMUQsIDB4MjUyOSwgMHg4MjFFLCAweDEwODAsIDB4ODIxRiwgMHgwNDBCLCAweDgyMjAsIDB4MUEyRSwNCisgICAgMHg4MjIxLCAweDFCREYsIDB4ODIyMiwgMHgwN0U4LCAweDgyMjUsIDB4MURCRiwgMHg4MjI4LCAweDA5OUEsDQorICAgIDB4ODIyQSwgMHgwOTk4LCAweDgyMkIsIDB4MDk5OSwgMHg4MjJDLCAweDA5OUIsIDB4ODIyRiwgMHgxREJFLA0KKyAgICAweDgyMzIsIDB4MjAxOCwgMHg4MjMzLCAweDIwMTUsIDB4ODIzNCwgMHgyMDE3LCAweDgyMzUsIDB4MEI3MiwNCisgICAgMHg4MjM2LCAweDBCNzQsIDB4ODIzNywgMHgwQjczLCAweDgyMzgsIDB4MjAxNCwgMHg4MjM5LCAweDBCNzUsDQorICAgIDB4ODIzQSwgMHgyMDE2LCAweDgyM0MsIDB4MjI4QywgMHg4MjNELCAweDIyOEQsIDB4ODIzRiwgMHgyMjhFLA0KKyAgICAweDgyNDAsIDB4MjUyQywgMHg4MjQyLCAweDI1MkQsIDB4ODI0NCwgMHgyNTJCLCAweDgyNDUsIDB4MjUyRSwNCisgICAgMHg4MjQ3LCAweDBFREEsIDB4ODI0OSwgMHgyNTJBLCAweDgyNEIsIDB4MTA4MSwgMHg4MjRFLCAweDI5REEsDQorICAgIDB4ODI0RiwgMHgyOUQ2LCAweDgyNTAsIDB4MjlEOSwgMHg4MjUxLCAweDI5REIsIDB4ODI1MiwgMHgyOUQ4LA0KKyAgICAweDgyNTMsIDB4MjlENywgMHg4MjU1LCAweDJDM0MsIDB4ODI1NiwgMHgyQzNELCAweDgyNTcsIDB4MkMzRSwNCisgICAgMHg4MjU4LCAweDEzMzQsIDB4ODI1OSwgMHgxMzM1LCAweDgyNUEsIDB4MkUwRiwgMHg4MjVCLCAweDJFMEUsDQorICAgIDB4ODI1QywgMHgyRTEwLCAweDgyNUUsIDB4MkY5NiwgMHg4MjVGLCAweDJGOTUsIDB4ODI2MSwgMHgzMEYwLA0KKyAgICAweDgyNjMsIDB4MzBGMSwgMHg4MjY0LCAweDMwRUYsIDB4ODI2NiwgMHgxNjM2LCAweDgyNjgsIDB4MzIxRCwNCisgICAgMHg4MjY5LCAweDMyMUUsIDB4ODI2QiwgMHgzM0E2LCAweDgyNkMsIDB4MzQyRCwgMHg4MjZELCAweDM0OTYsDQorICAgIDB4ODI2RSwgMHgwNDBDLCAweDgyNkYsIDB4MDUwNCwgMHg4MjcxLCAweDE0NTksIDB4ODI3MiwgMHgwNDBELA0KKyAgICAweDgyNzQsIDB4MjAxOSwgMHg4Mjc1LCAweDIyOEYsIDB4ODI3NywgMHgxNzJFLCAweDgyNzgsIDB4MTgxMywNCisgICAgMHg4MjdDLCAweDE4MTQsIDB4ODI3RCwgMHgxODE2LCAweDgyN0UsIDB4MDQwRSwgMHg4MjdGLCAweDE4MTcsDQorICAgIDB4ODI4MCwgMHgxODE1LCAweDgyODMsIDB4MThFNSwgMHg4Mjg0LCAweDE4RTYsIDB4ODI4NSwgMHgxOEUwLA0KKyAgICAweDgyOEEsIDB4MThFNCwgMHg4MjhCLCAweDA1MDYsIDB4ODI4RCwgMHgwNTA3LCAweDgyOEUsIDB4MThFMSwNCisgICAgMHg4MjhGLCAweDE4REYsIDB4ODI5MCwgMHgxOERFLCAweDgyOTEsIDB4MThFMiwgMHg4MjkyLCAweDA1MDUsDQorICAgIDB4ODI5MywgMHgxOEUzLCAweDgyOTQsIDB4MUJFMCwgMHg4Mjk4LCAweDFBMzMsIDB4ODI5OSwgMHgwNjdCLA0KKyAgICAweDgyOUEsIDB4MUEzMiwgMHg4MjlCLCAweDFBMzQsIDB4ODI5RCwgMHgwNjdBLCAweDgyOUUsIDB4MUEzOSwNCisgICAgMHg4MjlGLCAweDA2N0UsIDB4ODJBMCwgMHgxQTJGLCAweDgyQTEsIDB4MUEzRCwgMHg4MkEyLCAweDFBNDMsDQorICAgIDB4ODJBMywgMHgwNjg1LCAweDgyQTQsIDB4MUE0MCwgMHg4MkE1LCAweDA2ODIsIDB4ODJBNywgMHgxQTM2LA0KKyAgICAweDgyQTgsIDB4MUEzQywgMHg4MkE5LCAweDFBM0UsIDB4ODJBQiwgMHgxQTMxLCAweDgyQUMsIDB4MDY4MSwNCisgICAgMHg4MkFELCAweDA2N0MsIDB4ODJBRSwgMHgxQTM3LCAweDgyQUYsIDB4MDY4MywgMHg4MkIwLCAweDA2ODYsDQorICAgIDB4ODJCMSwgMHgwNjgwLCAweDgyQjMsIDB4MDY3OSwgMHg4MkI0LCAweDFBM0IsIDB4ODJCNSwgMHgxQTM1LA0KKyAgICAweDgyQjYsIDB4MUE0MiwgMHg4MkI3LCAweDA2ODgsIDB4ODJCOCwgMHgwNjg0LCAweDgyQjksIDB4MDY3RiwNCisgICAgMHg4MkJBLCAweDFBM0EsIDB4ODJCQiwgMHgwOTlDLCAweDgyQkMsIDB4MUEzOCwgMHg4MkJELCAweDA2N0QsDQorICAgIDB4ODJCRSwgMHgwNjg3LCAweDgyQzAsIDB4MUEzMCwgMHg4MkMyLCAweDFBM0YsIDB4ODJDMywgMHgxQTQxLA0KKyAgICAweDgyRDEsIDB4MDdGOSwgMHg4MkQyLCAweDA3RjMsIDB4ODJEMywgMHgwN0ZCLCAweDgyRDQsIDB4MDdGOCwNCisgICAgMHg4MkQ1LCAweDFCRTcsIDB4ODJENiwgMHgxQkVBLCAweDgyRDcsIDB4MDdGNCwgMHg4MkQ5LCAweDFCRTEsDQorICAgIDB4ODJEQiwgMHgwN0VELCAweDgyREMsIDB4MDdGNywgMHg4MkRFLCAweDA3RkEsIDB4ODJERiwgMHgwN0ZDLA0KKyAgICAweDgyRTAsIDB4MUJGNiwgMHg4MkUxLCAweDFCRUQsIDB4ODJFMywgMHgwN0VDLCAweDgyRTQsIDB4MUJGNSwNCisgICAgMHg4MkU1LCAweDA3RjAsIDB4ODJFNiwgMHgwN0VFLCAweDgyRTcsIDB4MDdFOSwgMHg4MkU4LCAweDFCRTUsDQorICAgIDB4ODJFQSwgMHgxQkY0LCAweDgyRUIsIDB4MUJFOSwgMHg4MkVDLCAweDFCRUMsIDB4ODJFRCwgMHgxQkY5LA0KKyAgICAweDgyRUYsIDB4MDdGRCwgMHg4MkYwLCAweDFCRjMsIDB4ODJGMSwgMHgwN0Y1LCAweDgyRjIsIDB4MUJFRSwNCisgICAgMHg4MkYzLCAweDFCRjgsIDB4ODJGNCwgMHgxQkVCLCAweDgyRjUsIDB4MUJFRiwgMHg4MkY2LCAweDFCRjIsDQorICAgIDB4ODJGOSwgMHgxQkUzLCAweDgyRkEsIDB4MUJGNywgMHg4MkZCLCAweDFCRjEsIDB4ODJGRSwgMHgxQkUyLA0KKyAgICAweDgzMDAsIDB4MUJFNiwgMHg4MzAxLCAweDA3RjYsIDB4ODMwMiwgMHgwN0YxLCAweDgzMDMsIDB4MDdFQSwNCisgICAgMHg4MzA0LCAweDA3RUYsIDB4ODMwNSwgMHgwN0VCLCAweDgzMDYsIDB4MDdGRSwgMHg4MzA3LCAweDFCRTQsDQorICAgIDB4ODMwOCwgMHgxREQwLCAweDgzMDksIDB4MDdGMiwgMHg4MzBDLCAweDFCRjAsIDB4ODMwRCwgMHgxQTdELA0KKyAgICAweDgzMTYsIDB4MUREMywgMHg4MzE3LCAweDA5QUEsIDB4ODMxOSwgMHgxREMzLCAweDgzMUIsIDB4MURDRSwNCisgICAgMHg4MzFDLCAweDFEQ0EsIDB4ODMxRSwgMHgxRERELCAweDgzMjAsIDB4MURENSwgMHg4MzIyLCAweDFEQ0IsDQorICAgIDB4ODMyNCwgMHgxREQ0LCAweDgzMjUsIDB4MURDNSwgMHg4MzI2LCAweDFEQzksIDB4ODMyNywgMHgxREUwLA0KKyAgICAweDgzMjgsIDB4MDlBRCwgMHg4MzI5LCAweDFERDgsIDB4ODMyQSwgMHgxRENGLCAweDgzMkIsIDB4MDk5RCwNCisgICAgMHg4MzJDLCAweDFEREUsIDB4ODMyRCwgMHgxREMxLCAweDgzMkYsIDB4MURENywgMHg4MzMxLCAweDA5QUMsDQorICAgIDB4ODMzMiwgMHgwOUE3LCAweDgzMzMsIDB4MURDMCwgMHg4MzM0LCAweDA5QTUsIDB4ODMzNSwgMHgwOUE0LA0KKyAgICAweDgzMzYsIDB4MDlBOSwgMHg4MzM3LCAweDFERDYsIDB4ODMzOCwgMHgwOUExLCAweDgzMzksIDB4MDlBOCwNCisgICAgMHg4MzNBLCAweDFCRTgsIDB4ODMzQiwgMHgyMjkwLCAweDgzM0MsIDB4MUREMSwgMHg4MzNGLCAweDFEQzcsDQorICAgIDB4ODM0MCwgMHgwOUFCLCAweDgzNDEsIDB4MURDOCwgMHg4MzQyLCAweDFEQ0MsIDB4ODM0MywgMHgwOUFFLA0KKyAgICAweDgzNDQsIDB4MURDMiwgMHg4MzQ1LCAweDFEREEsIDB4ODM0NywgMHgxREQ5LCAweDgzNDgsIDB4MURFMSwNCisgICAgMHg4MzQ5LCAweDA5QTMsIDB4ODM0QSwgMHgwOUEwLCAweDgzNEIsIDB4MURERiwgMHg4MzRDLCAweDFEREIsDQorICAgIDB4ODM0RCwgMHgxREQyLCAweDgzNEUsIDB4MURDRCwgMHg4MzRGLCAweDA5QTYsIDB4ODM1MCwgMHgwOUEyLA0KKyAgICAweDgzNTEsIDB4MURDNCwgMHg4MzUyLCAweDA5OUUsIDB4ODM1MywgMHgxRERDLCAweDgzNTQsIDB4MDk5RiwNCisgICAgMHg4MzU2LCAweDFEQzYsIDB4ODM3MywgMHgyMDFGLCAweDgzNzQsIDB4MjAyMSwgMHg4Mzc1LCAweDIwMjYsDQorICAgIDB4ODM3NiwgMHgyMDNBLCAweDgzNzcsIDB4MEI4MywgMHg4Mzc4LCAweDBCNzksIDB4ODM3QSwgMHgyMDFFLA0KKyAgICAweDgzN0IsIDB4MEI4NCwgMHg4MzdDLCAweDBCODUsIDB4ODM3RCwgMHgyMDI5LCAweDgzN0UsIDB4MjAzMCwNCisgICAgMHg4MzdGLCAweDIwMzYsIDB4ODM4MSwgMHgyMDIzLCAweDgzODMsIDB4MjAyQSwgMHg4Mzg2LCAweDBCODYsDQorICAgIDB4ODM4NywgMHgyMDM4LCAweDgzODgsIDB4MjAzMywgMHg4Mzg5LCAweDBCODEsIDB4ODM4QSwgMHgwQjdGLA0KKyAgICAweDgzOEIsIDB4MjAyRiwgMHg4MzhDLCAweDIwMkIsIDB4ODM4RCwgMHgyMDFELCAweDgzOEUsIDB4MEI3NiwNCisgICAgMHg4MzhGLCAweDIwMjIsIDB4ODM5MCwgMHgyMDFBLCAweDgzOTIsIDB4MEI3RSwgMHg4MzkzLCAweDBCODAsDQorICAgIDB4ODM5NCwgMHgyMDI3LCAweDgzOTUsIDB4MjAyNCwgMHg4Mzk2LCAweDBCN0IsIDB4ODM5NywgMHgyMDM0LA0KKyAgICAweDgzOTgsIDB4MEI3OCwgMHg4Mzk5LCAweDIwMjUsIDB4ODM5QSwgMHgyMkI5LCAweDgzOUIsIDB4MjAyRCwNCisgICAgMHg4MzlELCAweDIwMkMsIDB4ODM5RSwgMHgwQjc3LCAweDgzQTAsIDB4MEI4MiwgMHg4M0EyLCAweDBCN0EsDQorICAgIDB4ODNBMywgMHgyMDFCLCAweDgzQTQsIDB4MjAyMCwgMHg4M0E1LCAweDIwMzEsIDB4ODNBNiwgMHgyMDM3LA0KKyAgICAweDgzQTcsIDB4MEI4NywgMHg4M0E4LCAweDIwMUMsIDB4ODNBOSwgMHgyMDI4LCAweDgzQUEsIDB4MjAyRSwNCisgICAgMHg4M0FCLCAweDBCN0QsIDB4ODNBRSwgMHgyMDM5LCAweDgzQUYsIDB4MjAzMiwgMHg4M0IwLCAweDIwMzUsDQorICAgIDB4ODNCRCwgMHgwQjdDLCAweDgzQkYsIDB4MjJBMCwgMHg4M0MwLCAweDIyOTQsIDB4ODNDMSwgMHgwRDM1LA0KKyAgICAweDgzQzIsIDB4MjJCMSwgMHg4M0MzLCAweDIyQkEsIDB4ODNDNCwgMHgyMkJELCAweDgzQzUsIDB4MEQzMywNCisgICAgMHg4M0M2LCAweDIyOUMsIDB4ODNDNywgMHgyMkI1LCAweDgzQzgsIDB4MjI5RCwgMHg4M0M5LCAweDIyQUIsDQorICAgIDB4ODNDQSwgMHgwRDQwLCAweDgzQ0IsIDB4MjJBNywgMHg4M0NDLCAweDBEM0QsIDB4ODNDRSwgMHgyMkE4LA0KKyAgICAweDgzQ0YsIDB4MjI5MSwgMHg4M0QxLCAweDIyQjYsIDB4ODNENCwgMHgwRDQ2LCAweDgzRDUsIDB4MjJCMywNCisgICAgMHg4M0Q2LCAweDIyQTksIDB4ODNENywgMHgyMkJGLCAweDgzRDgsIDB4MjJBNCwgMHg4M0Q5LCAweDI1NEUsDQorICAgIDB4ODNEQiwgMHgyMkMyLCAweDgzREMsIDB4MEQ0NCwgMHg4M0RELCAweDIyQTIsIDB4ODNERSwgMHgyMkFFLA0KKyAgICAweDgzREYsIDB4MEQ0NywgMHg4M0UwLCAweDBEMzIsIDB4ODNFMSwgMHgyMkE2LCAweDgzRTIsIDB4MjJDMCwNCisgICAgMHg4M0UzLCAweDIyOUYsIDB4ODNFNCwgMHgyMjk4LCAweDgzRTUsIDB4MjJBMywgMHg4M0U3LCAweDIyOTcsDQorICAgIDB4ODNFOCwgMHgyMjk1LCAweDgzRTksIDB4MEQyRSwgMHg4M0VBLCAweDIyQjcsIDB4ODNFQiwgMHgyMjlFLA0KKyAgICAweDgzRUMsIDB4MjJCQiwgMHg4M0VFLCAweDIyQkMsIDB4ODNFRiwgMHgwRDM2LCAweDgzRjAsIDB4MEQzQiwNCisgICAgMHg4M0YxLCAweDBEMzcsIDB4ODNGMiwgMHgwRDNGLCAweDgzRjMsIDB4MjJCMiwgMHg4M0Y0LCAweDBEMzgsDQorICAgIDB4ODNGNSwgMHgyMkFBLCAweDgzRjYsIDB4MjI5QSwgMHg4M0Y4LCAweDBEMzAsIDB4ODNGOSwgMHgyMjkyLA0KKyAgICAweDgzRkEsIDB4MjJCNCwgMHg4M0ZCLCAweDIyQkUsIDB4ODNGQywgMHgyMjk5LCAweDgzRkQsIDB4MEQzRSwNCisgICAgMHg4M0ZFLCAweDIyQzMsIDB4ODNGRiwgMHgyMkE1LCAweDg0MDEsIDB4MjJBMSwgMHg4NDAzLCAweDBEMkYsDQorICAgIDB4ODQwNCwgMHgwRDQzLCAweDg0MDYsIDB4MjJCMCwgMHg4NDA3LCAweDBENDUsIDB4ODQwOSwgMHgyMkFDLA0KKyAgICAweDg0MEEsIDB4MEQzQSwgMHg4NDBCLCAweDBEMzQsIDB4ODQwQywgMHgwRDNDLCAweDg0MEQsIDB4MEQzMSwNCisgICAgMHg4NDBFLCAweDBENDIsIDB4ODQwRiwgMHgyMkFELCAweDg0MTAsIDB4MjI5QiwgMHg4NDExLCAweDIyQUYsDQorICAgIDB4ODQxMiwgMHgyMjk2LCAweDg0MTMsIDB4MjJCOCwgMHg4NDFCLCAweDIyQzEsIDB4ODQyMywgMHgyMjkzLA0KKyAgICAweDg0MjksIDB4MjU0RCwgMHg4NDJCLCAweDI1NjMsIDB4ODQyQywgMHgwRUFDLCAweDg0MkQsIDB4MjU1MiwNCisgICAgMHg4NDJGLCAweDI1NTAsIDB4ODQzMCwgMHgyNTNCLCAweDg0MzEsIDB4MEVERSwgMHg4NDMyLCAweDI1NEIsDQorICAgIDB4ODQzMywgMHgyNTVGLCAweDg0MzQsIDB4MjU0NywgMHg4NDM1LCAweDBFRTYsIDB4ODQzNiwgMHgyNTVFLA0KKyAgICAweDg0MzcsIDB4MjU0NSwgMHg4NDM4LCAweDBENDEsIDB4ODQzOSwgMHgyNTU1LCAweDg0M0EsIDB4MjU0NiwNCisgICAgMHg4NDNCLCAweDI1NUMsIDB4ODQzQywgMHgwRUU1LCAweDg0M0QsIDB4MEVERCwgMHg4NDNGLCAweDI1MzAsDQorICAgIDB4ODQ0MCwgMHgyNTM4LCAweDg0NDIsIDB4MjU1MSwgMHg4NDQzLCAweDI1NDksIDB4ODQ0NCwgMHgyNTYyLA0KKyAgICAweDg0NDUsIDB4MjU0QywgMHg4NDQ2LCAweDBFRUIsIDB4ODQ0NywgMHgyNTVELCAweDg0NDksIDB4MEVFMiwNCisgICAgMHg4NDRCLCAweDI1NEYsIDB4ODQ0QywgMHgyNTU3LCAweDg0NEQsIDB4MjUzQywgMHg4NDRFLCAweDI1NTYsDQorICAgIDB4ODQ1MCwgMHgyNTY3LCAweDg0NTEsIDB4MjUzNywgMHg4NDUyLCAweDI1NTgsIDB4ODQ1NCwgMHgyNTY1LA0KKyAgICAweDg0NTYsIDB4MjUzMSwgMHg4NDU3LCAweDBEMzksIDB4ODQ1OSwgMHgyNTNGLCAweDg0NUEsIDB4MjUzRSwNCisgICAgMHg4NDVCLCAweDBFRTQsIDB4ODQ1RCwgMHgyNTQyLCAweDg0NUUsIDB4MjU0NCwgMHg4NDVGLCAweDI1NTMsDQorICAgIDB4ODQ2MCwgMHgyNTY0LCAweDg0NjEsIDB4MEVFNywgMHg4NDYzLCAweDBFRTgsIDB4ODQ2NSwgMHgyNTM2LA0KKyAgICAweDg0NjYsIDB4MEVFMCwgMHg4NDY3LCAweDI1M0EsIDB4ODQ2OCwgMHgyNTYwLCAweDg0NjksIDB4MEVFOSwNCisgICAgMHg4NDZCLCAweDBFRTEsIDB4ODQ2QywgMHgwRUUzLCAweDg0NkQsIDB4MEVFQSwgMHg4NDZFLCAweDI1NjYsDQorICAgIDB4ODQ2RiwgMHgyNTU5LCAweDg0NzAsIDB4MjU1NCwgMHg4NDczLCAweDI1NDEsIDB4ODQ3NCwgMHgyNTQwLA0KKyAgICAweDg0NzUsIDB4MEVERiwgMHg4NDc2LCAweDI1MzIsIDB4ODQ3NywgMHgwRURDLCAweDg0NzgsIDB4MjU0QSwNCisgICAgMHg4NDc5LCAweDI1MzMsIDB4ODQ3QSwgMHgyNTQ4LCAweDg0N0QsIDB4MjUzRCwgMHg4NDdFLCAweDI1NjEsDQorICAgIDB4ODQ4MiwgMHgwRURCLCAweDg0ODYsIDB4MjUzOSwgMHg4NDhELCAweDI1MzUsIDB4ODQ4RSwgMHgyNTVCLA0KKyAgICAweDg0OEYsIDB4MjUzNCwgMHg4NDkwLCAweDEwOEUsIDB4ODQ5MSwgMHgyN0NELCAweDg0OTQsIDB4MjdCQywNCisgICAgMHg4NDk3LCAweDI3QTYsIDB4ODQ5OCwgMHgyN0M0LCAweDg0OTksIDB4MTA4NiwgMHg4NDlBLCAweDI3QjUsDQorICAgIDB4ODQ5QiwgMHgyN0JGLCAweDg0OUMsIDB4MTA4OSwgMHg4NDlELCAweDI3QjgsIDB4ODQ5RSwgMHgxMDg3LA0KKyAgICAweDg0OUYsIDB4MjdBOSwgMHg4NEEwLCAweDI3QzcsIDB4ODRBMSwgMHgyN0E4LCAweDg0QTIsIDB4MjdCQiwNCisgICAgMHg4NEE0LCAweDI3QTcsIDB4ODRBNywgMHgyN0I5LCAweDg0QTgsIDB4MjdDMiwgMHg4NEE5LCAweDI3QzAsDQorICAgIDB4ODRBQSwgMHgyN0I0LCAweDg0QUIsIDB4MjdBRiwgMHg4NEFDLCAweDI3QUQsIDB4ODRBRSwgMHgyN0FFLA0KKyAgICAweDg0QUYsIDB4MjdDMSwgMHg4NEIwLCAweDI3Q0MsIDB4ODRCMSwgMHgyN0I2LCAweDg0QjIsIDB4MTA4OCwNCisgICAgMHg4NEI0LCAweDI3QjEsIDB4ODRCNiwgMHgyN0M1LCAweDg0QjgsIDB4MTA4QiwgMHg4NEI5LCAweDI3QjAsDQorICAgIDB4ODRCQSwgMHgyN0FBLCAweDg0QkIsIDB4MjdCQSwgMHg4NEJDLCAweDEwOEYsIDB4ODRCRiwgMHgxMDgzLA0KKyAgICAweDg0QzAsIDB4MTA4QywgMHg4NEMxLCAweDI3QjIsIDB4ODRDMiwgMHgyN0FDLCAweDg0QzQsIDB4MTA4NSwNCisgICAgMHg4NEM1LCAweDI1NUEsIDB4ODRDNiwgMHgxMDg0LCAweDg0QzcsIDB4MjdCRCwgMHg4NEM5LCAweDEwODIsDQorICAgIDB4ODRDQSwgMHgxMDkxLCAweDg0Q0IsIDB4MTA4QSwgMHg4NENDLCAweDI3QkUsIDB4ODRDRCwgMHgyN0IzLA0KKyAgICAweDg0Q0UsIDB4MjdBQiwgMHg4NENGLCAweDI3QzYsIDB4ODREMCwgMHgyN0I3LCAweDg0RDEsIDB4MTA5MCwNCisgICAgMHg4NEQyLCAweDI3Q0EsIDB4ODREMywgMHgxMDhELCAweDg0RDQsIDB4MjdDOSwgMHg4NEQ2LCAweDI3QzMsDQorICAgIDB4ODRENywgMHgyN0M4LCAweDg0REIsIDB4MjdDQiwgMHg4NEU3LCAweDJBMDMsIDB4ODRFOCwgMHgyQTA0LA0KKyAgICAweDg0RTksIDB4MjlGNywgMHg4NEVBLCAweDI5RjYsIDB4ODRFQiwgMHgyOUYyLCAweDg0RUMsIDB4MTFGQiwNCisgICAgMHg4NEVFLCAweDExRjMsIDB4ODRFRiwgMHgyQTA2LCAweDg0RjAsIDB4MkEwNSwgMHg4NEYxLCAweDI1MkYsDQorICAgIDB4ODRGMiwgMHgyOUVGLCAweDg0RjMsIDB4MjlGMywgMHg4NEY0LCAweDI5RUQsIDB4ODRGNiwgMHgyQTAwLA0KKyAgICAweDg0RjcsIDB4MjlGMSwgMHg4NEY5LCAweDJBMDcsIDB4ODRGQSwgMHgyOUVBLCAweDg0RkIsIDB4MjlFOCwNCisgICAgMHg4NEZDLCAweDI5RjQsIDB4ODRGRCwgMHgyOUZFLCAweDg0RkUsIDB4MjlGOSwgMHg4NEZGLCAweDExRkQsDQorICAgIDB4ODUwMCwgMHgyOURGLCAweDg1MDIsIDB4MjlGRCwgMHg4NTA2LCAweDExRkUsIDB4ODUwNywgMHgyNTQzLA0KKyAgICAweDg1MDgsIDB4MjlFQiwgMHg4NTA5LCAweDI5RTIsIDB4ODUwQSwgMHgyOUU1LCAweDg1MEIsIDB4MkEwQiwNCisgICAgMHg4NTBDLCAweDI5RUMsIDB4ODUwRCwgMHgyOUUzLCAweDg1MEUsIDB4MjlFMSwgMHg4NTBGLCAweDI5REUsDQorICAgIDB4ODUxMSwgMHgxMUY3LCAweDg1MTIsIDB4MjlGNSwgMHg4NTEzLCAweDExRjYsIDB4ODUxNCwgMHgxMUZBLA0KKyAgICAweDg1MTUsIDB4MjlGMCwgMHg4NTE2LCAweDI5RjgsIDB4ODUxNywgMHgxMUYwLCAweDg1MTgsIDB4MkEwOCwNCisgICAgMHg4NTE5LCAweDJBMEMsIDB4ODUxQSwgMHgxMUYyLCAweDg1MUMsIDB4MjlFNywgMHg4NTFELCAweDI5RkIsDQorICAgIDB4ODUxRSwgMHgyOUZGLCAweDg1MUYsIDB4MjlFNCwgMHg4NTIwLCAweDJBMDksIDB4ODUyMSwgMHgxMUY5LA0KKyAgICAweDg1MjMsIDB4MTFGOCwgMHg4NTI0LCAweDI5REMsIDB4ODUyNSwgMHgxMUZDLCAweDg1MjYsIDB4MkEwMiwNCisgICAgMHg4NTI3LCAweDI5RTYsIDB4ODUyOCwgMHgyOUZBLCAweDg1MjksIDB4MjlFMCwgMHg4NTJBLCAweDI5RUUsDQorICAgIDB4ODUyQiwgMHgyOUU5LCAweDg1MkMsIDB4MTFGNCwgMHg4NTJELCAweDExRjUsIDB4ODUyRSwgMHgyOUZDLA0KKyAgICAweDg1MkYsIDB4MkEwRCwgMHg4NTMwLCAweDJBMEEsIDB4ODUzMSwgMHgyQTAxLCAweDg1M0IsIDB4MjlERCwNCisgICAgMHg4NTNELCAweDExRjEsIDB4ODUzRSwgMHgyQzRGLCAweDg1NDAsIDB4MkM0NiwgMHg4NTQxLCAweDJDNDksDQorICAgIDB4ODU0MywgMHgxMzNCLCAweDg1NDQsIDB4MkM0QiwgMHg4NTQ1LCAweDJDNDAsIDB4ODU0NiwgMHgyQzQ3LA0KKyAgICAweDg1NDcsIDB4MkM0RCwgMHg4NTQ4LCAweDEzMzgsIDB4ODU0OSwgMHgxMzNDLCAweDg1NEEsIDB4MTMzNiwNCisgICAgMHg4NTRELCAweDJDNDIsIDB4ODU0RSwgMHgyQzUyLCAweDg1NTEsIDB4MkM0QywgMHg4NTUzLCAweDJDNDMsDQorICAgIDB4ODU1NCwgMHgyQzVCLCAweDg1NTUsIDB4MkM1NSwgMHg4NTU2LCAweDJDM0YsIDB4ODU1NywgMHgyRTIzLA0KKyAgICAweDg1NTgsIDB4MkM0NSwgMHg4NTU5LCAweDEzMzcsIDB4ODU1QiwgMHgyQzUwLCAweDg1NUQsIDB4MkM1QSwNCisgICAgMHg4NTVFLCAweDEzM0YsIDB4ODU2MCwgMHgyQzU3LCAweDg1NjEsIDB4MkM0NCwgMHg4NTYyLCAweDJDNEEsDQorICAgIDB4ODU2MywgMHgyQzRFLCAweDg1NjQsIDB4MkM0OCwgMHg4NTY1LCAweDJDNUMsIDB4ODU2NiwgMHgyQzU5LA0KKyAgICAweDg1NjcsIDB4MkM1NiwgMHg4NTY4LCAweDEzMzksIDB4ODU2OSwgMHgxMzNBLCAweDg1NkEsIDB4MTMzRSwNCisgICAgMHg4NTZCLCAweDJDNDEsIDB4ODU2QywgMHgyQzVELCAweDg1NkQsIDB4MTMzRCwgMHg4NTZFLCAweDJDNTMsDQorICAgIDB4ODU3MSwgMHgyQzUxLCAweDg1NzUsIDB4MkM1NCwgMHg4NTc2LCAweDJFMzAsIDB4ODU3NywgMHgyRTFELA0KKyAgICAweDg1NzgsIDB4MkUyMiwgMHg4NTc5LCAweDJFMkYsIDB4ODU3QSwgMHgyRTIxLCAweDg1N0IsIDB4MkUxOSwNCisgICAgMHg4NTdDLCAweDJFMUUsIDB4ODU3RSwgMHgxNDVDLCAweDg1ODAsIDB4MkUxMiwgMHg4NTgxLCAweDJFMkEsDQorICAgIDB4ODU4MiwgMHgyRTJDLCAweDg1ODMsIDB4MkUxMSwgMHg4NTg0LCAweDE0NUIsIDB4ODU4NSwgMHgyRTJFLA0KKyAgICAweDg1ODYsIDB4MkUyNiwgMHg4NTg3LCAweDE0NjIsIDB4ODU4OCwgMHgyRTJELCAweDg1ODksIDB4MkUxRiwNCisgICAgMHg4NThBLCAweDE0NjQsIDB4ODU4QiwgMHgyRTE3LCAweDg1OEMsIDB4MkM1OCwgMHg4NThELCAweDJFMjcsDQorICAgIDB4ODU4RSwgMHgyRTI0LCAweDg1OEYsIDB4MkUxMywgMHg4NTkwLCAweDJFMzIsIDB4ODU5MSwgMHgxNDVFLA0KKyAgICAweDg1OTQsIDB4MTQ1RiwgMHg4NTk1LCAweDJFMTUsIDB4ODU5NiwgMHgyRTI1LCAweDg1OTgsIDB4MkUzMSwNCisgICAgMHg4NTk5LCAweDJFMjgsIDB4ODU5QSwgMHgyRTFCLCAweDg1OUIsIDB4MTQ2MSwgMHg4NTlDLCAweDE0NUQsDQorICAgIDB4ODU5RCwgMHgyRTI5LCAweDg1OUUsIDB4MkUxQywgMHg4NTlGLCAweDJFMzMsIDB4ODVBMCwgMHgyRTE2LA0KKyAgICAweDg1QTEsIDB4MkUyMCwgMHg4NUEyLCAweDJFMkIsIDB4ODVBMywgMHgyRTE4LCAweDg1QTQsIDB4MkUxQSwNCisgICAgMHg4NUE2LCAweDE0NjUsIDB4ODVBNywgMHgyRTE0LCAweDg1QTgsIDB4MTQ2MywgMHg4NUE5LCAweDE1MUMsDQorICAgIDB4ODVBQSwgMHgxNDVBLCAweDg1QUYsIDB4MTQ2MCwgMHg4NUIwLCAweDE1MjAsIDB4ODVCMSwgMHgyRkE2LA0KKyAgICAweDg1QjMsIDB4MkY5QywgMHg4NUI0LCAweDJGOTcsIDB4ODVCNSwgMHgyRjlELCAweDg1QjYsIDB4MkZBNywNCisgICAgMHg4NUI3LCAweDJGQUIsIDB4ODVCOCwgMHgyRkFBLCAweDg1QjksIDB4MTUyMiwgMHg4NUJBLCAweDE1MjEsDQorICAgIDB4ODVCRCwgMHgyRjlFLCAweDg1QkUsIDB4MkZBQywgMHg4NUJGLCAweDJGQTEsIDB4ODVDMCwgMHgyRjk5LA0KKyAgICAweDg1QzIsIDB4MkY5QiwgMHg4NUMzLCAweDJGOUEsIDB4ODVDNCwgMHgyRkEwLCAweDg1QzUsIDB4MkZBNSwNCisgICAgMHg4NUM2LCAweDJGOTgsIDB4ODVDNywgMHgyRjlGLCAweDg1QzgsIDB4MkZBNCwgMHg4NUM5LCAweDE1MUYsDQorICAgIDB4ODVDQiwgMHgyRkEyLCAweDg1Q0QsIDB4MTUxRCwgMHg4NUNFLCAweDJGQTMsIDB4ODVDRiwgMHgxNTFCLA0KKyAgICAweDg1RDAsIDB4MTUxRSwgMHg4NUQxLCAweDMxMDEsIDB4ODVEMiwgMHgyRkE4LCAweDg1RDUsIDB4MTVCNywNCisgICAgMHg4NUQ3LCAweDMwRjksIDB4ODVEOCwgMHgzMEZELCAweDg1RDksIDB4MzBGNSwgMHg4NURBLCAweDMwRjgsDQorICAgIDB4ODVEQywgMHgzMTAwLCAweDg1REQsIDB4MTVCNSwgMHg4NURFLCAweDMxMDUsIDB4ODVERiwgMHgzMEZFLA0KKyAgICAweDg1RTEsIDB4MzBGNiwgMHg4NUUyLCAweDMxMDYsIDB4ODVFMywgMHgzMEZGLCAweDg1RTQsIDB4MTVCOCwNCisgICAgMHg4NUU1LCAweDE1QjksIDB4ODVFNiwgMHgzMTAzLCAweDg1RTgsIDB4MzBGNywgMHg4NUU5LCAweDE1QjQsDQorICAgIDB4ODVFQSwgMHgxNUI2LCAweDg1RUIsIDB4MzBGMiwgMHg4NUVDLCAweDMwRkEsIDB4ODVFRCwgMHgzMEY0LA0KKyAgICAweDg1RUYsIDB4MzEwNCwgMHg4NUYwLCAweDMxMDIsIDB4ODVGMSwgMHgzMEYzLCAweDg1RjIsIDB4MzBGQiwNCisgICAgMHg4NUY2LCAweDMyMjUsIDB4ODVGNywgMHgxNUJBLCAweDg1RjgsIDB4MzBGQywgMHg4NUY5LCAweDE2MzgsDQorICAgIDB4ODVGQSwgMHgxNjNBLCAweDg1RkIsIDB4MTYzNywgMHg4NUZELCAweDMyMkEsIDB4ODVGRSwgMHgzMjIyLA0KKyAgICAweDg1RkYsIDB4MzIyMCwgMHg4NjAwLCAweDMyMjQsIDB4ODYwMSwgMHgzMjIxLCAweDg2MDQsIDB4MzIyNiwNCisgICAgMHg4NjA1LCAweDMyMjgsIDB4ODYwNiwgMHgxNjNCLCAweDg2MDcsIDB4MTYzRCwgMHg4NjA5LCAweDMyMjcsDQorICAgIDB4ODYwQSwgMHgxNjNFLCAweDg2MEIsIDB4MTYzQywgMHg4NjBDLCAweDMyMjksIDB4ODYxMSwgMHgxNjM5LA0KKyAgICAweDg2MTcsIDB4MTY4NSwgMHg4NjE4LCAweDMyRjYsIDB4ODYxOSwgMHgzMkZDLCAweDg2MUEsIDB4MTY4NywNCisgICAgMHg4NjFCLCAweDMyMjMsIDB4ODYxQywgMHgzMkZCLCAweDg2MUUsIDB4MzMwMiwgMHg4NjFGLCAweDMyRjksDQorICAgIDB4ODYyMCwgMHgzMzAwLCAweDg2MjEsIDB4MzJGRiwgMHg4NjIyLCAweDMyMUYsIDB4ODYyMywgMHgzMkZBLA0KKyAgICAweDg2MjQsIDB4MkZBOSwgMHg4NjI1LCAweDMzMDMsIDB4ODYyNiwgMHgzMkY4LCAweDg2MjcsIDB4MzJGRCwNCisgICAgMHg4NjI5LCAweDMzMDEsIDB4ODYyQSwgMHgzMkY3LCAweDg2MkMsIDB4MzNBQSwgMHg4NjJELCAweDE2ODYsDQorICAgIDB4ODYyRSwgMHgzMkZFLCAweDg2MzEsIDB4MzQzMiwgMHg4NjMyLCAweDMzQUIsIDB4ODYzMywgMHgzM0E5LA0KKyAgICAweDg2MzQsIDB4MzNBNywgMHg4NjM1LCAweDMzQTgsIDB4ODYzNiwgMHgzM0FDLCAweDg2MzgsIDB4MTcwNywNCisgICAgMHg4NjM5LCAweDM0MzAsIDB4ODYzQSwgMHgzNDJFLCAweDg2M0IsIDB4MzQzMywgMHg4NjNDLCAweDM0MzEsDQorICAgIDB4ODYzRSwgMHgzNDM0LCAweDg2M0YsIDB4MTcwOCwgMHg4NjQwLCAweDM0MkYsIDB4ODY0MywgMHgzNDk3LA0KKyAgICAweDg2NDYsIDB4MzRERiwgMHg4NjQ3LCAweDM0RTAsIDB4ODY0OCwgMHgzNEUxLCAweDg2NEIsIDB4MzUzRSwNCisgICAgMHg4NjRDLCAweDM1MzYsIDB4ODY0RCwgMHgxODE4LCAweDg2NEUsIDB4MDY4OSwgMHg4NjUwLCAweDA3RkYsDQorICAgIDB4ODY1MiwgMHgxREUzLCAweDg2NTMsIDB4MURFMiwgMHg4NjU0LCAweDA5QUYsIDB4ODY1NSwgMHgwQjg4LA0KKyAgICAweDg2NTYsIDB4MjAzQywgMHg4NjU5LCAweDIwM0IsIDB4ODY1QiwgMHgwRDQ4LCAweDg2NUMsIDB4MEVFRCwNCisgICAgMHg4NjVFLCAweDBFRUMsIDB4ODY1RiwgMHgwRUVFLCAweDg2NjEsIDB4MjdDRSwgMHg4NjYyLCAweDJBMEUsDQorICAgIDB4ODY2MywgMHgyQzVFLCAweDg2NjQsIDB4MkM2MCwgMHg4NjY1LCAweDJDNUYsIDB4ODY2NywgMHgxNDY2LA0KKyAgICAweDg2NjgsIDB4MkUzNCwgMHg4NjY5LCAweDJGQUQsIDB4ODY2QSwgMHgzNTFFLCAweDg2NkIsIDB4MDQwRiwNCisgICAgMHg4NjZELCAweDFBNDYsIDB4ODY2RSwgMHgxQTQ3LCAweDg2NkYsIDB4MUE0NSwgMHg4NjcwLCAweDFBNDQsDQorICAgIDB4ODY3MSwgMHgwNjhBLCAweDg2NzMsIDB4MUJGRCwgMHg4Njc0LCAweDFCRkIsIDB4ODY3NywgMHgxQkZBLA0KKyAgICAweDg2NzksIDB4MDgwMCwgMHg4NjdBLCAweDA4MDIsIDB4ODY3QiwgMHgwODAxLCAweDg2N0MsIDB4MUJGQywNCisgICAgMHg4Njg1LCAweDFERUYsIDB4ODY4NiwgMHgxREVDLCAweDg2ODcsIDB4MURFQSwgMHg4NjhBLCAweDA5QjAsDQorICAgIDB4ODY4QiwgMHgxREVELCAweDg2OEMsIDB4MDlCNSwgMHg4NjhELCAweDFERTcsIDB4ODY4RSwgMHgxREY2LA0KKyAgICAweDg2OTAsIDB4MURGOCwgMHg4NjkxLCAweDFERTgsIDB4ODY5MywgMHgwOUIyLCAweDg2OTQsIDB4MURGOSwNCisgICAgMHg4Njk1LCAweDFERjQsIDB4ODY5NiwgMHgxREU2LCAweDg2OTcsIDB4MURFQiwgMHg4Njk4LCAweDFERjUsDQorICAgIDB4ODY5OSwgMHgxREYxLCAweDg2OUEsIDB4MURFRSwgMHg4NjlDLCAweDA5QjcsIDB4ODY5RCwgMHgxREY3LA0KKyAgICAweDg2OUUsIDB4MURFOSwgMHg4NkExLCAweDFERjIsIDB4ODZBMiwgMHgxREU0LCAweDg2QTMsIDB4MDlCNiwNCisgICAgMHg4NkE0LCAweDA5QjMsIDB4ODZBNSwgMHgxREYwLCAweDg2QTcsIDB4MURGMywgMHg4NkE4LCAweDFERTUsDQorICAgIDB4ODZBOSwgMHgwOUI0LCAweDg2QUEsIDB4MDlCMSwgMHg4NkFGLCAweDBCOTIsIDB4ODZCMCwgMHgyMDQzLA0KKyAgICAweDg2QjEsIDB4MEI5MSwgMHg4NkIzLCAweDIwNDYsIDB4ODZCNCwgMHgyMDQ5LCAweDg2QjUsIDB4MEI4RSwNCisgICAgMHg4NkI2LCAweDBCOEMsIDB4ODZCNywgMHgyMDNFLCAweDg2QjgsIDB4MjA0NywgMHg4NkI5LCAweDIwNDUsDQorICAgIDB4ODZCQSwgMHgyMDQyLCAweDg2QkIsIDB4MjA0QSwgMHg4NkJDLCAweDIwNEIsIDB4ODZCRCwgMHgyMDRELA0KKyAgICAweDg2QkUsIDB4MjA0RSwgMHg4NkJGLCAweDIwM0QsIDB4ODZDMCwgMHgwQjhCLCAweDg2QzEsIDB4MjA0MCwNCisgICAgMHg4NkMyLCAweDIwM0YsIDB4ODZDMywgMHgyMDRDLCAweDg2QzQsIDB4MEI4RCwgMHg4NkM1LCAweDIwNDEsDQorICAgIDB4ODZDNiwgMHgwQjhGLCAweDg2QzcsIDB4MEI4QSwgMHg4NkM4LCAweDIwNDQsIDB4ODZDOSwgMHgwQjkzLA0KKyAgICAweDg2Q0IsIDB4MEI5MCwgMHg4NkNDLCAweDIwNDgsIDB4ODZEMCwgMHgwRDRGLCAweDg2RDEsIDB4MjJEMiwNCisgICAgMHg4NkQzLCAweDIyQzcsIDB4ODZENCwgMHgwRDRDLCAweDg2RDYsIDB4MjU2RCwgMHg4NkQ3LCAweDIyRDAsDQorICAgIDB4ODZEOCwgMHgyMkM0LCAweDg2RDksIDB4MEQ0QSwgMHg4NkRBLCAweDIyQzksIDB4ODZEQiwgMHgwRDRELA0KKyAgICAweDg2REMsIDB4MjJDRCwgMHg4NkRELCAweDIyQ0IsIDB4ODZERSwgMHgwRDUwLCAweDg2REYsIDB4MEQ0OSwNCisgICAgMHg4NkUyLCAweDIyQzUsIDB4ODZFMywgMHgyMkM4LCAweDg2RTQsIDB4MEQ0RSwgMHg4NkU2LCAweDIyQzYsDQorICAgIDB4ODZFOCwgMHgyMkQxLCAweDg2RTksIDB4MjJDRiwgMHg4NkVBLCAweDIyQ0EsIDB4ODZFQiwgMHgyMkNDLA0KKyAgICAweDg2RUMsIDB4MjJDRSwgMHg4NkVELCAweDBENEIsIDB4ODZGNSwgMHgyNTZFLCAweDg2RjYsIDB4MjU3NCwNCisgICAgMHg4NkY3LCAweDI1NkEsIDB4ODZGOCwgMHgyNTcwLCAweDg2RjksIDB4MEVFRiwgMHg4NkZBLCAweDI1NkMsDQorICAgIDB4ODZGQiwgMHgwRUY1LCAweDg2RkUsIDB4MEVGNCwgMHg4NzAwLCAweDBFRjMsIDB4ODcwMSwgMHgyNTczLA0KKyAgICAweDg3MDIsIDB4MEVGNiwgMHg4NzAzLCAweDBFRjcsIDB4ODcwNCwgMHgyNTY5LCAweDg3MDUsIDB4MjU3NiwNCisgICAgMHg4NzA2LCAweDBFRjgsIDB4ODcwNywgMHgwRUYyLCAweDg3MDgsIDB4MEVGMSwgMHg4NzA5LCAweDI1NzIsDQorICAgIDB4ODcwQSwgMHgwRUY5LCAweDg3MEIsIDB4MjU2OCwgMHg4NzBDLCAweDI1NkIsIDB4ODcwRCwgMHgyNTc1LA0KKyAgICAweDg3MEUsIDB4MjU3MSwgMHg4NzExLCAweDI3RUUsIDB4ODcxMiwgMHgyN0UzLCAweDg3MTMsIDB4MEVGMCwNCisgICAgMHg4NzE4LCAweDEwOTgsIDB4ODcxOSwgMHgyN0Q3LCAweDg3MUEsIDB4MjdFQywgMHg4NzFCLCAweDI3RDgsDQorICAgIDB4ODcxQywgMHgxMDkzLCAweDg3MUUsIDB4MjdENSwgMHg4NzIwLCAweDI3REUsIDB4ODcyMSwgMHgyN0Q2LA0KKyAgICAweDg3MjIsIDB4MTA5NSwgMHg4NzIzLCAweDI3RDAsIDB4ODcyNCwgMHgyN0VCLCAweDg3MjUsIDB4MTA5NiwNCisgICAgMHg4NzI2LCAweDI3RTgsIDB4ODcyNywgMHgyN0U5LCAweDg3MjgsIDB4MjdEMSwgMHg4NzI5LCAweDEwOUIsDQorICAgIDB4ODcyQSwgMHgyN0UwLCAweDg3MkMsIDB4MjdEQSwgMHg4NzJELCAweDI3RTEsIDB4ODcyRSwgMHgyN0Q0LA0KKyAgICAweDg3MzAsIDB4MjdFRCwgMHg4NzMxLCAweDI3RTUsIDB4ODczMiwgMHgyN0RGLCAweDg3MzMsIDB4MjdDRiwNCisgICAgMHg4NzM0LCAweDEwOTcsIDB4ODczNSwgMHgyN0U2LCAweDg3MzcsIDB4MTA5QSwgMHg4NzM4LCAweDI3RUEsDQorICAgIDB4ODczQSwgMHgyN0U0LCAweDg3M0IsIDB4MTA5NCwgMHg4NzNDLCAweDI3RTIsIDB4ODczRSwgMHgyN0RDLA0KKyAgICAweDg3M0YsIDB4MTA5MiwgMHg4NzQwLCAweDI3RDMsIDB4ODc0MSwgMHgyN0RCLCAweDg3NDIsIDB4MjdFNywNCisgICAgMHg4NzQzLCAweDI3RDksIDB4ODc0NiwgMHgyN0RELCAweDg3NEMsIDB4MTIwOCwgMHg4NzRELCAweDI1NkYsDQorICAgIDB4ODc0RSwgMHgyQTIwLCAweDg3NEYsIDB4MkEyOSwgMHg4NzUwLCAweDJBMUYsIDB4ODc1MSwgMHgyQTFCLA0KKyAgICAweDg3NTIsIDB4MkExOCwgMHg4NzUzLCAweDEyMDksIDB4ODc1NCwgMHgyQTE2LCAweDg3NTUsIDB4MTA5OSwNCisgICAgMHg4NzU2LCAweDJBMEYsIDB4ODc1NywgMHgxMjA3LCAweDg3NTgsIDB4MkExNSwgMHg4NzU5LCAweDEyMDYsDQorICAgIDB4ODc1QSwgMHgyQTFBLCAweDg3NUIsIDB4MkExNywgMHg4NzVDLCAweDJBMjcsIDB4ODc1RCwgMHgyQTIyLA0KKyAgICAweDg3NUUsIDB4MkExQywgMHg4NzVGLCAweDJBMjEsIDB4ODc2MCwgMHgxMjAyLCAweDg3NjEsIDB4MkExOSwNCisgICAgMHg4NzYyLCAweDJBMkMsIDB4ODc2MywgMHgyQTEwLCAweDg3NjQsIDB4MkExMSwgMHg4NzY1LCAweDJBMjgsDQorICAgIDB4ODc2NiwgMHgxMjAzLCAweDg3NjcsIDB4MkEyRCwgMHg4NzY4LCAweDEyMDUsIDB4ODc2OSwgMHgyQTJFLA0KKyAgICAweDg3NkEsIDB4MkExRSwgMHg4NzZCLCAweDI3RDIsIDB4ODc2QywgMHgyQTI0LCAweDg3NkQsIDB4MkExRCwNCisgICAgMHg4NzZFLCAweDJBMjYsIDB4ODc2RiwgMHgyQTIzLCAweDg3NzMsIDB4MkExNCwgMHg4Nzc0LCAweDEyMDAsDQorICAgIDB4ODc3NSwgMHgyQTJCLCAweDg3NzYsIDB4MTIwMSwgMHg4Nzc3LCAweDJBMTIsIDB4ODc3OCwgMHgxMjA0LA0KKyAgICAweDg3NzksIDB4MkM2QiwgMHg4NzdBLCAweDJBMjUsIDB4ODc3QiwgMHgyQTJBLCAweDg3ODEsIDB4MkM2OCwNCisgICAgMHg4NzgyLCAweDExRkYsIDB4ODc4MywgMHgxMzQwLCAweDg3ODQsIDB4MkM3MiwgMHg4Nzg1LCAweDJDNkUsDQorICAgIDB4ODc4NywgMHgyQzZDLCAweDg3ODgsIDB4MkM2NywgMHg4Nzg5LCAweDJDNzYsIDB4ODc4RCwgMHgxMzQ0LA0KKyAgICAweDg3OEYsIDB4MkM2MywgMHg4NzkwLCAweDJDNkYsIDB4ODc5MSwgMHgyQzcwLCAweDg3OTIsIDB4MkM2NiwNCisgICAgMHg4NzkzLCAweDJDNjUsIDB4ODc5NCwgMHgyQzczLCAweDg3OTYsIDB4MkM2OSwgMHg4Nzk3LCAweDJDNjQsDQorICAgIDB4ODc5OCwgMHgyQzZBLCAweDg3OUEsIDB4MkM3NSwgMHg4NzlCLCAweDJDNjIsIDB4ODc5QywgMHgyQzc0LA0KKyAgICAweDg3OUQsIDB4MkM3MSwgMHg4NzlFLCAweDEzNDIsIDB4ODc5RiwgMHgxMzQxLCAweDg3QTIsIDB4MTM0MywNCisgICAgMHg4N0EzLCAweDJDNkQsIDB4ODdBNCwgMHgyQzYxLCAweDg3QUEsIDB4MkUzNiwgMHg4N0FCLCAweDE0NkMsDQorICAgIDB4ODdBQywgMHgyRTNBLCAweDg3QUQsIDB4MkUzNywgMHg4N0FFLCAweDJFM0UsIDB4ODdBRiwgMHgyRTQ0LA0KKyAgICAweDg3QjAsIDB4MkUzOSwgMHg4N0IyLCAweDJFNEQsIDB4ODdCMywgMHgxNDY5LCAweDg3QjQsIDB4MkU0NywNCisgICAgMHg4N0I1LCAweDJFM0MsIDB4ODdCNiwgMHgyRTQ4LCAweDg3QjcsIDB4MkU0MywgMHg4N0I4LCAweDJFNEEsDQorICAgIDB4ODdCOSwgMHgyRTNCLCAweDg3QkEsIDB4MTQ2RSwgMHg4N0JCLCAweDE0NkQsIDB4ODdCQywgMHgyRTNELA0KKyAgICAweDg3QkQsIDB4MkU0QiwgMHg4N0JFLCAweDJFMzUsIDB4ODdCRiwgMHgyRTQ5LCAweDg3QzAsIDB4MTQ2NywNCisgICAgMHg4N0MyLCAweDJFNDEsIDB4ODdDMywgMHgyRTQwLCAweDg3QzQsIDB4MkU0NSwgMHg4N0M1LCAweDJFMzgsDQorICAgIDB4ODdDNiwgMHgxNDZCLCAweDg3QzgsIDB4MTQ2RiwgMHg4N0M5LCAweDJFM0YsIDB4ODdDQSwgMHgyRTQ2LA0KKyAgICAweDg3Q0IsIDB4MTQ3MCwgMHg4N0NDLCAweDJFNDIsIDB4ODdEMSwgMHgxNDY4LCAweDg3RDIsIDB4MTQ2QSwNCisgICAgMHg4N0QzLCAweDJGQkEsIDB4ODdENCwgMHgyRkI4LCAweDg3RDcsIDB4MkZCRSwgMHg4N0Q4LCAweDJGQkMsDQorICAgIDB4ODdEOSwgMHgyRkJGLCAweDg3REIsIDB4MkZCMSwgMHg4N0RDLCAweDJGQjksIDB4ODdERCwgMHgyRkMzLA0KKyAgICAweDg3REUsIDB4MkU0QywgMHg4N0RGLCAweDJGQjUsIDB4ODdFMCwgMHgxNTI2LCAweDg3RTEsIDB4MkExMywNCisgICAgMHg4N0UyLCAweDJGQjAsIDB4ODdFMywgMHgyRkJELCAweDg3RTQsIDB4MkZCNywgMHg4N0U1LCAweDJGQjQsDQorICAgIDB4ODdFNiwgMHgyRkFGLCAweDg3RTcsIDB4MkZBRSwgMHg4N0U4LCAweDJGQzIsIDB4ODdFQSwgMHgyRkIzLA0KKyAgICAweDg3RUIsIDB4MkZCMiwgMHg4N0VDLCAweDE1MjQsIDB4ODdFRCwgMHgyRkJCLCAweDg3RUYsIDB4MTUyMywNCisgICAgMHg4N0YyLCAweDE1MjUsIDB4ODdGMywgMHgyRkI2LCAweDg3RjQsIDB4MkZDMSwgMHg4N0Y2LCAweDMxMEEsDQorICAgIDB4ODdGNywgMHgzMTBCLCAweDg3RjksIDB4MTVCRSwgMHg4N0ZBLCAweDMxMDgsIDB4ODdGQiwgMHgxNUJCLA0KKyAgICAweDg3RkMsIDB4MzExMCwgMHg4N0ZFLCAweDE1QkYsIDB4ODdGRiwgMHgzMTEyLCAweDg4MDAsIDB4MzEwNywNCisgICAgMHg4ODAxLCAweDJGQzAsIDB4ODgwMiwgMHgzMTE0LCAweDg4MDMsIDB4MzEwOSwgMHg4ODA1LCAweDE1QkMsDQorICAgIDB4ODgwNiwgMHgzMTBGLCAweDg4MDgsIDB4MzExMSwgMHg4ODA5LCAweDMxMEMsIDB4ODgwQSwgMHgzMTEzLA0KKyAgICAweDg4MEIsIDB4MzEwRSwgMHg4ODBDLCAweDMxMEQsIDB4ODgwRCwgMHgxNUJELCAweDg4MTAsIDB4MzIyQywNCisgICAgMHg4ODExLCAweDMyMkQsIDB4ODgxMywgMHgzMjJGLCAweDg4MTQsIDB4MTYzRiwgMHg4ODE1LCAweDE2NDAsDQorICAgIDB4ODgxNiwgMHgzMjMwLCAweDg4MTcsIDB4MzIyRSwgMHg4ODE5LCAweDMyMkIsIDB4ODgxQiwgMHgzMzA2LA0KKyAgICAweDg4MUMsIDB4MzMwOSwgMHg4ODFELCAweDMzMDUsIDB4ODgxRiwgMHgxNjhCLCAweDg4MjAsIDB4MzMwNywNCisgICAgMHg4ODIxLCAweDE2OEEsIDB4ODgyMiwgMHgxNjg5LCAweDg4MjMsIDB4MTY4OCwgMHg4ODI0LCAweDMzMDgsDQorICAgIDB4ODgyNSwgMHgzM0IxLCAweDg4MjYsIDB4MzNBRiwgMHg4ODI4LCAweDMzQUUsIDB4ODgyOSwgMHgzMzA0LA0KKyAgICAweDg4MkEsIDB4MzNCMCwgMHg4ODJCLCAweDMzMEEsIDB4ODgyQywgMHgzM0FELCAweDg4MkUsIDB4MzQzNywNCisgICAgMHg4ODJGLCAweDM0MTUsIDB4ODgzMCwgMHgzNDM1LCAweDg4MzEsIDB4MTcwOSwgMHg4ODMyLCAweDM0MzYsDQorICAgIDB4ODgzMywgMHgzNDM4LCAweDg4MzUsIDB4MzQ5QSwgMHg4ODM2LCAweDE3MjgsIDB4ODgzNywgMHgzNDk5LA0KKyAgICAweDg4MzgsIDB4MzQ5OCwgMHg4ODM5LCAweDE3MjksIDB4ODgzQiwgMHgxNzQ3LCAweDg4M0MsIDB4MzUwOCwNCisgICAgMHg4ODNELCAweDM1MjAsIDB4ODgzRSwgMHgzNTFGLCAweDg4M0YsIDB4MzUyMSwgMHg4ODQwLCAweDA0MTAsDQorICAgIDB4ODg0MSwgMHgxQkZFLCAweDg4NDMsIDB4MURGQSwgMHg4ODQ0LCAweDFERkIsIDB4ODg0OCwgMHgyMkQzLA0KKyAgICAweDg4NEEsIDB4MzMwQiwgMHg4ODRCLCAweDM0OUIsIDB4ODg0QywgMHgwNDExLCAweDg4NEQsIDB4MDgwMywNCisgICAgMHg4ODRFLCAweDFCRkYsIDB4ODg1MiwgMHgyMDRGLCAweDg4NTMsIDB4MEI5NCwgMHg4ODU1LCAweDIyRDUsDQorICAgIDB4ODg1NiwgMHgyMkQ0LCAweDg4NTcsIDB4MEQ1MSwgMHg4ODU5LCAweDBFRkEsIDB4ODg1QSwgMHgyQTJGLA0KKyAgICAweDg4NUIsIDB4MTIwQSwgMHg4ODVELCAweDEyMEIsIDB4ODg2MSwgMHgxMzQ1LCAweDg4NjIsIDB4MTcyQSwNCisgICAgMHg4ODYzLCAweDA0MTIsIDB4ODg2NywgMHgxQzAwLCAweDg4NjgsIDB4MDY4QywgMHg4ODY5LCAweDFDMDIsDQorICAgIDB4ODg2QSwgMHgxQzAxLCAweDg4NkIsIDB4MDgwNCwgMHg4ODZELCAweDFERkMsIDB4ODg2RiwgMHgxRTAzLA0KKyAgICAweDg4NzAsIDB4MDlCOCwgMHg4ODcxLCAweDFFMDEsIDB4ODg3MiwgMHgxREZGLCAweDg4NzQsIDB4MUUwNiwNCisgICAgMHg4ODc1LCAweDFERkQsIDB4ODg3NiwgMHgxREZFLCAweDg4NzcsIDB4MDlCOSwgMHg4ODc5LCAweDA5QkQsDQorICAgIDB4ODg3QywgMHgxRTA3LCAweDg4N0QsIDB4MDlCQywgMHg4ODdFLCAweDFFMDUsIDB4ODg3RiwgMHgxRTAyLA0KKyAgICAweDg4ODAsIDB4MUUwMCwgMHg4ODgxLCAweDA5QkEsIDB4ODg4MiwgMHgwOUJCLCAweDg4ODMsIDB4MUUwNCwNCisgICAgMHg4ODg4LCAweDBCOTYsIDB4ODg4OSwgMHgyMDUwLCAweDg4OEIsIDB4MEI5QiwgMHg4ODhDLCAweDIwNjAsDQorICAgIDB4ODg4RCwgMHgwQjlBLCAweDg4OEUsIDB4MjA2MiwgMHg4ODkxLCAweDIwNTYsIDB4ODg5MiwgMHgwQjk4LA0KKyAgICAweDg4OTMsIDB4MjA2MSwgMHg4ODk1LCAweDIwNTEsIDB4ODg5NiwgMHgwQjk5LCAweDg4OTcsIDB4MjA1RCwNCisgICAgMHg4ODk4LCAweDIwNTksIDB4ODg5OSwgMHgyMDVCLCAweDg4OUEsIDB4MjA1NSwgMHg4ODlCLCAweDIwNUMsDQorICAgIDB4ODg5RSwgMHgwQjk1LCAweDg4OUYsIDB4MjA1OCwgMHg4OEExLCAweDIwNTcsIDB4ODhBMiwgMHgyMDUzLA0KKyAgICAweDg4QTQsIDB4MjA1RSwgMHg4OEE3LCAweDIwNUEsIDB4ODhBOCwgMHgyMDUyLCAweDg4QUEsIDB4MjA1NCwNCisgICAgMHg4OEFCLCAweDBCOTcsIDB4ODhBQywgMHgyMDVGLCAweDg4QjEsIDB4MEQ1NCwgMHg4OEIyLCAweDIyRTAsDQorICAgIDB4ODhCNiwgMHgyMkRDLCAweDg4QjcsIDB4MjJERSwgMHg4OEI4LCAweDIyRDksIDB4ODhCOSwgMHgyMkQ4LA0KKyAgICAweDg4QkEsIDB4MjJENiwgMHg4OEJDLCAweDIyREQsIDB4ODhCRCwgMHgyMkRGLCAweDg4QkUsIDB4MjJEQiwNCisgICAgMHg4OEMwLCAweDIyREEsIDB4ODhDMSwgMHgwRDUyLCAweDg4QzIsIDB4MEQ1MywgMHg4OEM5LCAweDIyRTIsDQorICAgIDB4ODhDQSwgMHgwRjAyLCAweDg4Q0IsIDB4MjU3OCwgMHg4OENDLCAweDI1N0UsIDB4ODhDRCwgMHgyNTc5LA0KKyAgICAweDg4Q0UsIDB4MjU3QSwgMHg4OENGLCAweDM2RUEsIDB4ODhEMCwgMHgyNTdGLCAweDg4RDIsIDB4MEYwNCwNCisgICAgMHg4OEQ0LCAweDBFRkMsIDB4ODhENSwgMHgwRjAzLCAweDg4RDYsIDB4MjU3NywgMHg4OEQ3LCAweDIyRDcsDQorICAgIDB4ODhEOCwgMHgwRUZGLCAweDg4RDksIDB4MEVGRCwgMHg4OERBLCAweDI1N0QsIDB4ODhEQiwgMHgyNTdDLA0KKyAgICAweDg4REMsIDB4MEVGRSwgMHg4OERELCAweDBGMDAsIDB4ODhERSwgMHgyNTdCLCAweDg4REYsIDB4MEVGQiwNCisgICAgMHg4OEUxLCAweDBGMDEsIDB4ODhFNywgMHgyN0YwLCAweDg4RTgsIDB4MTBBMiwgMHg4OEVCLCAweDI3RkIsDQorICAgIDB4ODhFQywgMHgyN0ZBLCAweDg4RUUsIDB4MjdGNSwgMHg4OEVGLCAweDEwQTQsIDB4ODhGMCwgMHgyN0Y5LA0KKyAgICAweDg4RjEsIDB4MjdGMSwgMHg4OEYyLCAweDI3RjIsIDB4ODhGMywgMHgxMDlDLCAweDg4RjQsIDB4MTA5RSwNCisgICAgMHg4OEY2LCAweDI3RjcsIDB4ODhGNywgMHgyN0VGLCAweDg4RjgsIDB4MTBBMCwgMHg4OEY5LCAweDEwOUYsDQorICAgIDB4ODhGQSwgMHgyN0YzLCAweDg4RkIsIDB4MjdGOCwgMHg4OEZDLCAweDI3RjYsIDB4ODhGRCwgMHgxMEExLA0KKyAgICAweDg4RkUsIDB4MjdGNCwgMHg4OTAxLCAweDIyRTEsIDB4ODkwMiwgMHgxMDlELCAweDg5MDUsIDB4MkEzMCwNCisgICAgMHg4OTA2LCAweDJBMzcsIDB4ODkwNywgMHgxMjBELCAweDg5MDksIDB4MkEzQiwgMHg4OTBBLCAweDEyMTEsDQorICAgIDB4ODkwQiwgMHgyQTMzLCAweDg5MEMsIDB4MkEzMSwgMHg4OTBFLCAweDJBM0EsIDB4ODkxMCwgMHgxMjBDLA0KKyAgICAweDg5MTEsIDB4MkEzOSwgMHg4OTEyLCAweDEyMEUsIDB4ODkxMywgMHgxMjBGLCAweDg5MTQsIDB4MkEzMiwNCisgICAgMHg4OTE1LCAweDEyMTAsIDB4ODkxNiwgMHgyQTM4LCAweDg5MTcsIDB4MkEzNCwgMHg4OTE4LCAweDJBMzUsDQorICAgIDB4ODkxOSwgMHgyQTM2LCAweDg5MUEsIDB4MTBBMywgMHg4OTFFLCAweDJDNzcsIDB4ODkxRiwgMHgyQzgzLA0KKyAgICAweDg5MjEsIDB4MTM0QSwgMHg4OTIyLCAweDJDN0UsIDB4ODkyMywgMHgyQzgwLCAweDg5MjUsIDB4MTM0OCwNCisgICAgMHg4OTI2LCAweDJDNzgsIDB4ODkyNywgMHgyQzdDLCAweDg5MjksIDB4MkM3RiwgMHg4OTJBLCAweDEzNDYsDQorICAgIDB4ODkyQiwgMHgxMzQ5LCAweDg5MkMsIDB4MkM4MiwgMHg4OTJELCAweDJDN0EsIDB4ODkyRSwgMHgyQzdCLA0KKyAgICAweDg5MkYsIDB4MkM4MSwgMHg4OTMwLCAweDJDNzksIDB4ODkzMSwgMHgyQzdELCAweDg5MzIsIDB4MTM0NywNCisgICAgMHg4OTMzLCAweDJFNEYsIDB4ODkzNSwgMHgyRTRFLCAweDg5MzYsIDB4MTQ3MiwgMHg4OTM3LCAweDJFNTQsDQorICAgIDB4ODkzOCwgMHgxNDc0LCAweDg5M0IsIDB4MTQ3MSwgMHg4OTNDLCAweDJFNTAsIDB4ODkzRCwgMHgxNDc1LA0KKyAgICAweDg5M0UsIDB4MkU1MSwgMHg4OTQxLCAweDJFNTIsIDB4ODk0MiwgMHgyRTU1LCAweDg5NDQsIDB4MTQ3MywNCisgICAgMHg4OTQ2LCAweDJGQzgsIDB4ODk0OSwgMHgyRkNCLCAweDg5NEIsIDB4MkZDNSwgMHg4OTRDLCAweDJGQzcsDQorICAgIDB4ODk0RiwgMHgyRkM2LCAweDg5NTAsIDB4MkZDOSwgMHg4OTUxLCAweDJGQ0EsIDB4ODk1MiwgMHgyRTUzLA0KKyAgICAweDg5NTMsIDB4MkZDNCwgMHg4OTU2LCAweDE1QzIsIDB4ODk1NywgMHgzMTE4LCAweDg5NTgsIDB4MzExQiwNCisgICAgMHg4OTU5LCAweDMxMUQsIDB4ODk1QSwgMHgzMTE2LCAweDg5NUIsIDB4MzExNywgMHg4OTVDLCAweDMxMUEsDQorICAgIDB4ODk1RCwgMHgzMTFDLCAweDg5NUUsIDB4MTVDMywgMHg4OTVGLCAweDE1QzEsIDB4ODk2MCwgMHgxNUMwLA0KKyAgICAweDg5NjEsIDB4MzExOSwgMHg4OTYyLCAweDMxMTUsIDB4ODk2MywgMHgzMjMxLCAweDg5NjQsIDB4MTY0MSwNCisgICAgMHg4OTY2LCAweDMyMzIsIDB4ODk2OSwgMHgzMzBELCAweDg5NkEsIDB4MTY4QywgMHg4OTZCLCAweDMzMEYsDQorICAgIDB4ODk2QywgMHgxNjhELCAweDg5NkQsIDB4MzMwQywgMHg4OTZFLCAweDMzMEUsIDB4ODk2RiwgMHgxNkQ2LA0KKyAgICAweDg5NzEsIDB4MzNCMiwgMHg4OTcyLCAweDE2RDUsIDB4ODk3MywgMHgzNDNCLCAweDg5NzQsIDB4MzQzQSwNCisgICAgMHg4OTc2LCAweDM0MzksIDB4ODk3OSwgMHgzNEUyLCAweDg5N0EsIDB4MzRFMywgMHg4OTdCLCAweDM0RTUsDQorICAgIDB4ODk3QywgMHgzNEU0LCAweDg5N0UsIDB4MTgxOSwgMHg4OTdGLCAweDA0MTMsIDB4ODk4MSwgMHgwODA1LA0KKyAgICAweDg5ODIsIDB4MjA2MywgMHg4OTgzLCAweDBENTUsIDB4ODk4NSwgMHgyNTgwLCAweDg5ODYsIDB4MTUyNywNCisgICAgMHg4OTg4LCAweDMxMUUsIDB4ODk4QiwgMHgwNTA4LCAweDg5OEYsIDB4MEI5RCwgMHg4OTkzLCAweDBCOUMsDQorICAgIDB4ODk5NSwgMHgyMkUzLCAweDg5OTYsIDB4MEQ1NiwgMHg4OTk3LCAweDIyRTUsIDB4ODk5OCwgMHgyMkU0LA0KKyAgICAweDg5OUIsIDB4MjU4MSwgMHg4OTlDLCAweDBGMDUsIDB4ODk5RCwgMHgyN0ZDLCAweDg5OUUsIDB4MjdGRiwNCisgICAgMHg4OTlGLCAweDI3RkUsIDB4ODlBMSwgMHgyN0ZELCAweDg5QTIsIDB4MkEzQywgMHg4OUEzLCAweDJBM0UsDQorICAgIDB4ODlBNCwgMHgyQTNELCAweDg5QTYsIDB4MTM0QywgMHg4OUFBLCAweDEzNEIsIDB4ODlBQywgMHgxNDc2LA0KKyAgICAweDg5QUQsIDB4MkU1NiwgMHg4OUFFLCAweDJFNTgsIDB4ODlBRiwgMHgyRTU3LCAweDg5QjIsIDB4MTUyOCwNCisgICAgMHg4OUI2LCAweDMxMjAsIDB4ODlCNywgMHgzMTFGLCAweDg5QjksIDB4MzIzMywgMHg4OUJBLCAweDE2NDIsDQorICAgIDB4ODlCRCwgMHgxNjhFLCAweDg5QkUsIDB4MzNCNCwgMHg4OUJGLCAweDMzQjMsIDB4ODlDMCwgMHgxNzQ4LA0KKyAgICAweDg5RDIsIDB4MDUwOSwgMHg4OUQzLCAweDFDMDMsIDB4ODlENCwgMHgwODA2LCAweDg5RDUsIDB4MjA2NiwNCisgICAgMHg4OUQ2LCAweDIwNjQsIDB4ODlEOSwgMHgyMDY1LCAweDg5REEsIDB4MjJFNywgMHg4OURCLCAweDIyRTgsDQorICAgIDB4ODlEQywgMHgyNTg4LCAweDg5REQsIDB4MjJFNiwgMHg4OURGLCAweDI1ODIsIDB4ODlFMCwgMHgyNTg2LA0KKyAgICAweDg5RTEsIDB4MjU4NSwgMHg4OUUyLCAweDI1ODcsIDB4ODlFMywgMHgwRjA2LCAweDg5RTQsIDB4MjU4NCwNCisgICAgMHg4OUU1LCAweDI1ODMsIDB4ODlFNiwgMHgyNTg5LCAweDg5RTgsIDB4MjgwMiwgMHg4OUU5LCAweDI4MDAsDQorICAgIDB4ODlFQiwgMHgyODAxLCAweDg5RUMsIDB4MkE0MSwgMHg4OUVELCAweDJBM0YsIDB4ODlGMCwgMHgyQTQwLA0KKyAgICAweDg5RjEsIDB4MkM4NCwgMHg4OUYyLCAweDJFNTksIDB4ODlGMywgMHgyRTVBLCAweDg5RjQsIDB4MTUyOSwNCisgICAgMHg4OUY2LCAweDMxMjEsIDB4ODlGNywgMHgzMjM0LCAweDg5RjgsIDB4MTY0MywgMHg4OUZBLCAweDMzMTAsDQorICAgIDB4ODlGQiwgMHgzM0I1LCAweDg5RkMsIDB4MTZENywgMHg4OUZFLCAweDM0M0MsIDB4ODlGRiwgMHgzNEU2LA0KKyAgICAweDhBMDAsIDB4MDUwQSwgMHg4QTAyLCAweDA4MDgsIDB4OEEwMywgMHgwODA5LCAweDhBMDQsIDB4MUMwNCwNCisgICAgMHg4QTA3LCAweDFDMDUsIDB4OEEwOCwgMHgwODA3LCAweDhBMEEsIDB4MDlDMywgMHg4QTBDLCAweDA5QzEsDQorICAgIDB4OEEwRSwgMHgwOUMwLCAweDhBMEYsIDB4MDlDNywgMHg4QTEwLCAweDA5QkYsIDB4OEExMSwgMHgwOUM4LA0KKyAgICAweDhBMTIsIDB4MUUwOCwgMHg4QTEzLCAweDA5QzUsIDB4OEExNSwgMHgwOUMyLCAweDhBMTYsIDB4MDlDNiwNCisgICAgMHg4QTE3LCAweDA5QzQsIDB4OEExOCwgMHgwOUJFLCAweDhBMUIsIDB4MEJBNSwgMHg4QTFELCAweDBCOUYsDQorICAgIDB4OEExRSwgMHgyMDZBLCAweDhBMUYsIDB4MEJBNCwgMHg4QTIyLCAweDBCQTYsIDB4OEEyMywgMHgwQkEwLA0KKyAgICAweDhBMjUsIDB4MEJBMSwgMHg4QTI3LCAweDIwNjgsIDB4OEEyQSwgMHgwQjlFLCAweDhBMkMsIDB4MjA2OSwNCisgICAgMHg4QTJELCAweDBCQTMsIDB4OEEzMCwgMHgyMDY3LCAweDhBMzEsIDB4MEJBMiwgMHg4QTM0LCAweDBENjEsDQorICAgIDB4OEEzNiwgMHgwRDYzLCAweDhBMzksIDB4MjJFQiwgMHg4QTNBLCAweDBENjIsIDB4OEEzQiwgMHgwRDU3LA0KKyAgICAweDhBM0MsIDB4MEQ1QiwgMHg4QTNFLCAweDBGMTksIDB4OEEzRiwgMHgyNThFLCAweDhBNDAsIDB4MjJFRCwNCisgICAgMHg4QTQxLCAweDBENUMsIDB4OEE0NCwgMHgyMkYwLCAweDhBNDUsIDB4MjJGMSwgMHg4QTQ2LCAweDBENjAsDQorICAgIDB4OEE0OCwgMHgyMkYzLCAweDhBNEEsIDB4MjJGNSwgMHg4QTRDLCAweDIyRjYsIDB4OEE0RCwgMHgyMkVBLA0KKyAgICAweDhBNEUsIDB4MjJFOSwgMHg4QTRGLCAweDIyRjcsIDB4OEE1MCwgMHgwRDVGLCAweDhBNTEsIDB4MjJGNCwNCisgICAgMHg4QTUyLCAweDIyRjIsIDB4OEE1NCwgMHgwRDVELCAweDhBNTUsIDB4MEQ1OSwgMHg4QTU2LCAweDBENjQsDQorICAgIDB4OEE1NywgMHgyMkVFLCAweDhBNTgsIDB4MjJFRiwgMHg4QTU5LCAweDIyRUMsIDB4OEE1QiwgMHgwRDVFLA0KKyAgICAweDhBNUUsIDB4MEQ1QSwgMHg4QTYwLCAweDBENTgsIDB4OEE2MSwgMHgyNThELCAweDhBNjIsIDB4MEYxNCwNCisgICAgMHg4QTYzLCAweDBGMEYsIDB4OEE2NiwgMHgwRjBBLCAweDhBNjgsIDB4MEYxQSwgMHg4QTY5LCAweDBGMEIsDQorICAgIDB4OEE2QiwgMHgwRjA3LCAweDhBNkMsIDB4MEYxNiwgMHg4QTZELCAweDBGMTMsIDB4OEE2RSwgMHgwRjE1LA0KKyAgICAweDhBNzAsIDB4MEYwQywgMHg4QTcxLCAweDBGMTEsIDB4OEE3MiwgMHgwRjA4LCAweDhBNzMsIDB4MEYwOSwNCisgICAgMHg4QTc0LCAweDI1OTUsIDB4OEE3NSwgMHgyNTkyLCAweDhBNzYsIDB4MjU4QSwgMHg4QTc3LCAweDI1OEYsDQorICAgIDB4OEE3OSwgMHgwRjE3LCAweDhBN0EsIDB4MjU5NiwgMHg4QTdCLCAweDBGMTgsIDB4OEE3QywgMHgwRjBFLA0KKyAgICAweDhBN0YsIDB4MjU4QywgMHg4QTgxLCAweDI1OTQsIDB4OEE4MiwgMHgyNTkwLCAweDhBODMsIDB4MjU5MywNCisgICAgMHg4QTg0LCAweDI1OTEsIDB4OEE4NSwgMHgwRjEyLCAweDhBODYsIDB4MjU4QiwgMHg4QTg3LCAweDBGMEQsDQorICAgIDB4OEE4QiwgMHgyODA1LCAweDhBOEMsIDB4MTBBNiwgMHg4QThELCAweDEwQTksIDB4OEE4RiwgMHgyODA3LA0KKyAgICAweDhBOTEsIDB4MTBCMSwgMHg4QTkyLCAweDI4MDYsIDB4OEE5MywgMHgxMEFCLCAweDhBOTUsIDB4MTIxNiwNCisgICAgMHg4QTk2LCAweDI4MDgsIDB4OEE5OCwgMHgxMEIwLCAweDhBOTksIDB4MjgwNCwgMHg4QTlBLCAweDEwQjIsDQorICAgIDB4OEE5RSwgMHgxMEE3LCAweDhBQTAsIDB4MEYxMCwgMHg4QUExLCAweDEwQUEsIDB4OEFBMywgMHgxMEE4LA0KKyAgICAweDhBQTQsIDB4MTBBQywgMHg4QUE1LCAweDEwQUUsIDB4OEFBNiwgMHgxMEE1LCAweDhBQTcsIDB4MTBCMywNCisgICAgMHg4QUE4LCAweDEwQUYsIDB4OEFBQSwgMHgxMEFELCAweDhBQUIsIDB4MjgwMywgMHg4QUIwLCAweDEyMUQsDQorICAgIDB4OEFCMiwgMHgxMjE5LCAweDhBQjYsIDB4MTIyMCwgMHg4QUI4LCAweDJBNDQsIDB4OEFCOSwgMHgxMjIxLA0KKyAgICAweDhBQkEsIDB4MkE1MCwgMHg4QUJCLCAweDJBNDksIDB4OEFCQywgMHgxMjEyLCAweDhBQkQsIDB4MkE1MSwNCisgICAgMHg4QUJFLCAweDJBNEIsIDB4OEFCRiwgMHgxMjFDLCAweDhBQzAsIDB4MkE0QywgMHg4QUMyLCAweDEyMUIsDQorICAgIDB4OEFDMywgMHgyQTRGLCAweDhBQzQsIDB4MTIxNSwgMHg4QUM1LCAweDJBNEQsIDB4OEFDNiwgMHgyQTQzLA0KKyAgICAweDhBQzcsIDB4MTIxNCwgMHg4QUM4LCAweDJDOEYsIDB4OEFDOSwgMHgxMjFBLCAweDhBQ0IsIDB4MTIxNywNCisgICAgMHg4QUNELCAweDEyMUYsIDB4OEFDRiwgMHgyQTQyLCAweDhBRDEsIDB4MkE0NiwgMHg4QUQyLCAweDEyMTMsDQorICAgIDB4OEFEMywgMHgyQTQ1LCAweDhBRDQsIDB4MkE0NywgMHg4QUQ1LCAweDJBNDgsIDB4OEFENiwgMHgxMjFFLA0KKyAgICAweDhBRDcsIDB4MkE0QSwgMHg4QUQ4LCAweDJBNEUsIDB4OEFEOSwgMHgyQTUyLCAweDhBREIsIDB4MTIyMiwNCisgICAgMHg4QURDLCAweDEzNTIsIDB4OEFERCwgMHgyQzhBLCAweDhBREUsIDB4MkM5MCwgMHg4QURGLCAweDJDOEQsDQorICAgIDB4OEFFMCwgMHgyQzg1LCAweDhBRTEsIDB4MkM5MSwgMHg4QUUyLCAweDJDODYsIDB4OEFFNCwgMHgyQzhDLA0KKyAgICAweDhBRTYsIDB4MTM0RCwgMHg4QUU3LCAweDEzNTMsIDB4OEFFOCwgMHgyQzkyLCAweDhBRUIsIDB4MTM0RiwNCisgICAgMHg4QUVELCAweDEzNTksIDB4OEFFRSwgMHgxMzU0LCAweDhBRUYsIDB4MkM5NCwgMHg4QUYwLCAweDJDOEUsDQorICAgIDB4OEFGMSwgMHgxMzUwLCAweDhBRjIsIDB4MkM4NywgMHg4QUYzLCAweDEzNUEsIDB4OEFGNCwgMHgyQzg4LA0KKyAgICAweDhBRjUsIDB4MkM4OSwgMHg4QUY2LCAweDEzNUIsIDB4OEFGNywgMHgxMzU4LCAweDhBRjgsIDB4MTIxOCwNCisgICAgMHg4QUZBLCAweDEzNEUsIDB4OEFGQiwgMHgyQzk1LCAweDhBRkMsIDB4MTM1QywgMHg4QUZFLCAweDEzNTUsDQorICAgIDB4OEFGRiwgMHgyQzkzLCAweDhCMDAsIDB4MTM1MSwgMHg4QjAxLCAweDEzNTYsIDB4OEIwMiwgMHgxMzU3LA0KKyAgICAweDhCMDQsIDB4MTQ3RSwgMHg4QjA1LCAweDJFNUYsIDB4OEIwNiwgMHgyRTY4LCAweDhCMDcsIDB4MkU2NSwNCisgICAgMHg4QjA4LCAweDJFNjcsIDB4OEIwQSwgMHgxNDdCLCAweDhCMEIsIDB4MkU2MCwgMHg4QjBELCAweDJFNjYsDQorICAgIDB4OEIwRSwgMHgxNDc3LCAweDhCMEYsIDB4MkU2MiwgMHg4QjEwLCAweDE0N0YsIDB4OEIxMSwgMHgyRTVFLA0KKyAgICAweDhCMTIsIDB4MkU2MywgMHg4QjEzLCAweDJFNkEsIDB4OEIxNCwgMHgyQzhCLCAweDhCMTUsIDB4MkU2NCwNCisgICAgMHg4QjE2LCAweDJFNUQsIDB4OEIxNywgMHgxNDc4LCAweDhCMTgsIDB4MkU1QywgMHg4QjE5LCAweDE0NzksDQorICAgIDB4OEIxQSwgMHgyRTZCLCAweDhCMUIsIDB4MTQ3QSwgMHg4QjFDLCAweDJFNjksIDB4OEIxRCwgMHgxNDdELA0KKyAgICAweDhCMUUsIDB4MkU1QiwgMHg4QjIwLCAweDE0N0MsIDB4OEIyMiwgMHgyRTYxLCAweDhCMjMsIDB4MkZDRSwNCisgICAgMHg4QjI0LCAweDJGREMsIDB4OEIyNSwgMHgyRkQ3LCAweDhCMjYsIDB4MkZEOSwgMHg4QjI3LCAweDJGQ0QsDQorICAgIDB4OEIyOCwgMHgxNTJBLCAweDhCMkEsIDB4MkZDQywgMHg4QjJCLCAweDE1MkQsIDB4OEIyQywgMHgxNTJDLA0KKyAgICAweDhCMkUsIDB4MkZEQiwgMHg4QjJGLCAweDJGRDMsIDB4OEIzMCwgMHgyRkQwLCAweDhCMzEsIDB4MkZENiwNCisgICAgMHg4QjMzLCAweDJGQ0YsIDB4OEIzNSwgMHgyRkQxLCAweDhCMzYsIDB4MkZEQSwgMHg4QjM3LCAweDJGRDgsDQorICAgIDB4OEIzOSwgMHgxNTJCLCAweDhCM0EsIDB4MkZERiwgMHg4QjNCLCAweDJGREQsIDB4OEIzQywgMHgyRkQ0LA0KKyAgICAweDhCM0QsIDB4MkZERSwgMHg4QjNFLCAweDJGRDUsIDB4OEI0MCwgMHgzMTI1LCAweDhCNDEsIDB4MTVDNCwNCisgICAgMHg4QjQyLCAweDMxMkMsIDB4OEI0NSwgMHgzMzEzLCAweDhCNDYsIDB4MTVDQiwgMHg4QjQ3LCAweDJGRDIsDQorICAgIDB4OEI0OCwgMHgzMTIzLCAweDhCNDksIDB4MTVDNywgMHg4QjRBLCAweDMxMjQsIDB4OEI0QiwgMHgzMTI5LA0KKyAgICAweDhCNEUsIDB4MTVDOSwgMHg4QjRGLCAweDE1Q0EsIDB4OEI1MCwgMHgzMTIyLCAweDhCNTEsIDB4MzEyQiwNCisgICAgMHg4QjUyLCAweDMxMkQsIDB4OEI1MywgMHgzMTI2LCAweDhCNTQsIDB4MzEyOCwgMHg4QjU1LCAweDMxMkEsDQorICAgIDB4OEI1NiwgMHgzMTI3LCAweDhCNTcsIDB4MzEyRSwgMHg4QjU4LCAweDE1QzYsIDB4OEI1OSwgMHgxNUNDLA0KKyAgICAweDhCNUEsIDB4MTVDOCwgMHg4QjVDLCAweDE1QzUsIDB4OEI1RCwgMHgzMjM3LCAweDhCNUYsIDB4MTY0OCwNCisgICAgMHg4QjYwLCAweDMyMzUsIDB4OEI2MywgMHgzMjM5LCAweDhCNjUsIDB4MzIzQSwgMHg4QjY2LCAweDE2NDYsDQorICAgIDB4OEI2NywgMHgzMjNCLCAweDhCNjgsIDB4MzIzOCwgMHg4QjZBLCAweDMyMzYsIDB4OEI2QiwgMHgxNjQ5LA0KKyAgICAweDhCNkMsIDB4MTY0NSwgMHg4QjZELCAweDMyM0MsIDB4OEI2RiwgMHgxNjQ3LCAweDhCNzAsIDB4MTY0NCwNCisgICAgMHg4Qjc0LCAweDE2OEYsIDB4OEI3NywgMHgxNjkwLCAweDhCNzgsIDB4MzMxMiwgMHg4Qjc5LCAweDMzMTEsDQorICAgIDB4OEI3QSwgMHgzMzE0LCAweDhCN0IsIDB4MzMxNSwgMHg4QjdELCAweDE2OTEsIDB4OEI3RSwgMHgzM0I2LA0KKyAgICAweDhCN0YsIDB4MzNCQiwgMHg4QjgwLCAweDE2RDgsIDB4OEI4MiwgMHgzM0I4LCAweDhCODQsIDB4MzNCNywNCisgICAgMHg4Qjg1LCAweDMzQkEsIDB4OEI4NiwgMHgzM0I5LCAweDhCODgsIDB4MzQ0MCwgMHg4QjhBLCAweDE3MEEsDQorICAgIDB4OEI4QiwgMHgzNDNGLCAweDhCOEMsIDB4MzQzRCwgMHg4QjhFLCAweDM0M0UsIDB4OEI5MiwgMHgxNzJDLA0KKyAgICAweDhCOTMsIDB4MTcyQiwgMHg4Qjk0LCAweDM0OUMsIDB4OEI5NSwgMHgzNDlELCAweDhCOTYsIDB4MTcyRCwNCisgICAgMHg4Qjk4LCAweDM0RTcsIDB4OEI5OSwgMHgzNEU4LCAweDhCOUEsIDB4MTc1NCwgMHg4QjlDLCAweDE3NUEsDQorICAgIDB4OEI5RSwgMHgzNTIyLCAweDhCOUYsIDB4MzUzRiwgMHg4QzM3LCAweDA1MEIsIDB4OEMzOSwgMHgyMDZCLA0KKyAgICAweDhDM0IsIDB4MjA2QywgMHg4QzNDLCAweDI1OTcsIDB4OEMzRCwgMHgyODA5LCAweDhDM0UsIDB4MkE1MywNCisgICAgMHg4QzNGLCAweDE0ODEsIDB4OEM0MSwgMHgxNDgwLCAweDhDNDIsIDB4MkZFMCwgMHg4QzQzLCAweDMxMkYsDQorICAgIDB4OEM0NSwgMHgzNDQxLCAweDhDNDYsIDB4MDUwQywgMHg4QzQ3LCAweDFFMDksIDB4OEM0OCwgMHgwOUM5LA0KKyAgICAweDhDNDksIDB4MEJBNywgMHg4QzRBLCAweDI1OTksIDB4OEM0QiwgMHgyNTk4LCAweDhDNEMsIDB4MTIyMywNCisgICAgMHg4QzRELCAweDJBNTQsIDB4OEM0RSwgMHgxMjI0LCAweDhDNEYsIDB4MkU2QywgMHg4QzUwLCAweDE1MkUsDQorICAgIDB4OEM1NCwgMHgxNzYzLCAweDhDNTUsIDB4MDUwRCwgMHg4QzU2LCAweDFBNDgsIDB4OEM1NywgMHgxRTBBLA0KKyAgICAweDhDNUEsIDB4MEJBOCwgMHg4QzVDLCAweDIwNkQsIDB4OEM1RCwgMHgyMDZFLCAweDhDNUYsIDB4MjJGOCwNCisgICAgMHg4QzYxLCAweDBENjUsIDB4OEM2MiwgMHgwRjFCLCAweDhDNjQsIDB4MjU5QiwgMHg4QzY1LCAweDI1OUEsDQorICAgIDB4OEM2NiwgMHgyNTlDLCAweDhDNjgsIDB4MjgwQSwgMHg4QzY5LCAweDI4MEIsIDB4OEM2QSwgMHgxMEI0LA0KKyAgICAweDhDNkIsIDB4MTM1RCwgMHg4QzZDLCAweDEyMjUsIDB4OEM2RCwgMHgxMzVFLCAweDhDNkYsIDB4MkU3MCwNCisgICAgMHg4QzcwLCAweDJFNkQsIDB4OEM3MSwgMHgyRTZGLCAweDhDNzIsIDB4MkU2RSwgMHg4QzczLCAweDE0ODIsDQorICAgIDB4OEM3NSwgMHgyRkUxLCAweDhDNzYsIDB4MzEzMSwgMHg4Qzc3LCAweDMxMzAsIDB4OEM3OCwgMHgxOEU3LA0KKyAgICAweDhDNzksIDB4MDlDQiwgMHg4QzdBLCAweDA5Q0EsIDB4OEM3QiwgMHgxRTBCLCAweDhDN0QsIDB4MjA2RiwNCisgICAgMHg4QzgwLCAweDIyRkEsIDB4OEM4MSwgMHgyMkY5LCAweDhDODIsIDB4MEQ2NiwgMHg4Qzg0LCAweDI1OUUsDQorICAgIDB4OEM4NSwgMHgyNTlGLCAweDhDODYsIDB4MjU5RCwgMHg4Qzg5LCAweDBGMUQsIDB4OEM4QSwgMHgwRjFDLA0KKyAgICAweDhDOEMsIDB4MTBCNiwgMHg4QzhELCAweDEwQjUsIDB4OEM4RiwgMHgyQTU1LCAweDhDOTAsIDB4MkM5OCwNCisgICAgMHg4QzkxLCAweDJDOTYsIDB4OEM5MiwgMHgyQzk3LCAweDhDOTMsIDB4MTM1RiwgMHg4Qzk0LCAweDJFNzIsDQorICAgIDB4OEM5NSwgMHgyRTcxLCAweDhDOTcsIDB4MkZFNCwgMHg4Qzk4LCAweDJGRTMsIDB4OEM5OSwgMHgyRkUyLA0KKyAgICAweDhDOUEsIDB4MzEzMiwgMHg4QzlDLCAweDM1MjMsIDB4OEM5RCwgMHgwNTBFLCAweDhDOUUsIDB4MDgwQSwNCisgICAgMHg4Q0EwLCAweDA4MEIsIDB4OENBMSwgMHgwOUNDLCAweDhDQTIsIDB4MDlDRCwgMHg4Q0EzLCAweDFFMEQsDQorICAgIDB4OENBNCwgMHgxRTBDLCAweDhDQTUsIDB4MjA3MCwgMHg4Q0E3LCAweDBCQUUsIDB4OENBOCwgMHgwQkFDLA0KKyAgICAweDhDQTksIDB4MEJBOSwgMHg4Q0FBLCAweDBCQUQsIDB4OENBQiwgMHgwQkFCLCAweDhDQUMsIDB4MEJBQSwNCisgICAgMHg4Q0FGLCAweDBENjcsIDB4OENCMCwgMHgyMkZELCAweDhDQjIsIDB4MEYyMiwgMHg4Q0IzLCAweDBENjksDQorICAgIDB4OENCNCwgMHgwRDZFLCAweDhDQjUsIDB4MjJGRiwgMHg4Q0I2LCAweDBENzAsIDB4OENCNywgMHgwRDZGLA0KKyAgICAweDhDQjgsIDB4MEQ3MiwgMHg4Q0I5LCAweDIyRkUsIDB4OENCQSwgMHgyMkZCLCAweDhDQkIsIDB4MEQ2QywNCisgICAgMHg4Q0JDLCAweDBENjgsIDB4OENCRCwgMHgwRDZBLCAweDhDQkUsIDB4MjJGQywgMHg4Q0JGLCAweDBENzEsDQorICAgIDB4OENDMCwgMHgwRDZELCAweDhDQzEsIDB4MEQ2QiwgMHg4Q0MyLCAweDBGMjQsIDB4OENDMywgMHgwRjIzLA0KKyAgICAweDhDQzQsIDB4MEYyMSwgMHg4Q0M1LCAweDBGMjUsIDB4OENDNywgMHgwRjFGLCAweDhDQzgsIDB4MEYyMCwNCisgICAgMHg4Q0NBLCAweDBGMUUsIDB4OENDQywgMHgyNUEwLCAweDhDQ0YsIDB4MjgwRCwgMHg4Q0QxLCAweDEwQjgsDQorICAgIDB4OENEMiwgMHgxMEI5LCAweDhDRDMsIDB4MTBCNywgMHg4Q0Q1LCAweDI4MEMsIDB4OENENywgMHgyODBFLA0KKyAgICAweDhDRDksIDB4MkE1OCwgMHg4Q0RBLCAweDJBNUEsIDB4OENEQywgMHgxMjJFLCAweDhDREQsIDB4MkE1QiwNCisgICAgMHg4Q0RFLCAweDEyMjcsIDB4OENERiwgMHgyQTU3LCAweDhDRTAsIDB4MTIyNiwgMHg4Q0UxLCAweDEyMzAsDQorICAgIDB4OENFMiwgMHgxMjJDLCAweDhDRTMsIDB4MTIyRCwgMHg4Q0U0LCAweDEyMjksIDB4OENFNSwgMHgyQTU2LA0KKyAgICAweDhDRTYsIDB4MTIyOCwgMHg4Q0U3LCAweDJBNUMsIDB4OENFOCwgMHgyQTU5LCAweDhDRUEsIDB4MTIyRiwNCisgICAgMHg4Q0VDLCAweDEyMkEsIDB4OENFRCwgMHgxMjJCLCAweDhDRUUsIDB4MkM5QSwgMHg4Q0YwLCAweDJDOUMsDQorICAgIDB4OENGMSwgMHgyQzlCLCAweDhDRjMsIDB4MkM5RCwgMHg4Q0Y0LCAweDEzNjAsIDB4OENGNSwgMHgyQzk5LA0KKyAgICAweDhDRjgsIDB4MTQ4NiwgMHg4Q0Y5LCAweDJFNzMsIDB4OENGQSwgMHgxNDgzLCAweDhDRkIsIDB4MTQ4NywNCisgICAgMHg4Q0ZDLCAweDE0ODUsIDB4OENGRCwgMHgxNDg0LCAweDhDRkUsIDB4MkZFNSwgMHg4RDAwLCAweDJGRTgsDQorICAgIDB4OEQwMiwgMHgyRkU3LCAweDhEMDQsIDB4MkZFNiwgMHg4RDA1LCAweDE1MkYsIDB4OEQwNiwgMHgzMTMzLA0KKyAgICAweDhEMDcsIDB4MzEzNCwgMHg4RDA4LCAweDE1Q0QsIDB4OEQwOSwgMHgzMTM1LCAweDhEMEEsIDB4MTVDRSwNCisgICAgMHg4RDBELCAweDE2NEIsIDB4OEQwRiwgMHgxNjRBLCAweDhEMTAsIDB4MzMxNiwgMHg4RDEzLCAweDE2OTIsDQorICAgIDB4OEQxNCwgMHgzMzE3LCAweDhEMTUsIDB4MzNCQywgMHg4RDE2LCAweDE2RDksIDB4OEQxNywgMHgxNkRBLA0KKyAgICAweDhEMTksIDB4MzQ0MiwgMHg4RDFCLCAweDE3MkYsIDB4OEQ2NCwgMHgwNTBGLCAweDhENjYsIDB4MEJCMCwNCisgICAgMHg4RDY3LCAweDBCQUYsIDB4OEQ2OCwgMHgyNUExLCAweDhENjksIDB4MjVBMiwgMHg4RDZCLCAweDEwQkEsDQorICAgIDB4OEQ2QywgMHgyQzlFLCAweDhENkQsIDB4MTIzMSwgMHg4RDZFLCAweDJDOUYsIDB4OEQ2RiwgMHgyRTc0LA0KKyAgICAweDhENzAsIDB4MDUxMCwgMHg4RDcyLCAweDFDMDYsIDB4OEQ3MywgMHgwODBELCAweDhENzQsIDB4MDgwQywNCisgICAgMHg4RDc2LCAweDFFMEUsIDB4OEQ3NywgMHgwOUNFLCAweDhENzgsIDB4MUUwRiwgMHg4RDc5LCAweDIwNzMsDQorICAgIDB4OEQ3QiwgMHgyMDcyLCAweDhEN0QsIDB4MjA3MSwgMHg4RDgwLCAweDIzMDEsIDB4OEQ4MSwgMHgwRDc1LA0KKyAgICAweDhEODQsIDB4MjMwMCwgMHg4RDg1LCAweDBENzQsIDB4OEQ4OSwgMHgyMzAyLCAweDhEOEEsIDB4MEQ3MywNCisgICAgMHg4RDhDLCAweDI1QTQsIDB4OEQ4RCwgMHgyNUE3LCAweDhEOEUsIDB4MjVBNSwgMHg4RDhGLCAweDI1QTYsDQorICAgIDB4OEQ5MCwgMHgyNUFBLCAweDhEOTEsIDB4MjVBMywgMHg4RDkyLCAweDI1QUIsIDB4OEQ5MywgMHgyNUE4LA0KKyAgICAweDhEOTQsIDB4MjVBOSwgMHg4RDk1LCAweDEwQkMsIDB4OEQ5NiwgMHgyODBGLCAweDhEOTksIDB4MTBCQiwNCisgICAgMHg4RDlCLCAweDJBNjAsIDB4OEQ5QywgMHgyQTVFLCAweDhEOUYsIDB4MTIzMiwgMHg4REEwLCAweDJBNUQsDQorICAgIDB4OERBMSwgMHgyQTVGLCAweDhEQTMsIDB4MTIzMywgMHg4REE1LCAweDJDQTAsIDB4OERBNywgMHgyQ0ExLA0KKyAgICAweDhEQTgsIDB4MTQ4OCwgMHg4REFBLCAweDMxMzcsIDB4OERBQiwgMHgzMTM5LCAweDhEQUMsIDB4MzEzNiwNCisgICAgMHg4REFELCAweDMxMzgsIDB4OERBRSwgMHgzMjNELCAweDhEQUYsIDB4MzMxOCwgMHg4REIyLCAweDM1MDksDQorICAgIDB4OERCMywgMHgwNTExLCAweDhEQjQsIDB4MDgwRSwgMHg4REI1LCAweDFFMTAsIDB4OERCNiwgMHgxRTEyLA0KKyAgICAweDhEQjcsIDB4MUUxMSwgMHg4REI5LCAweDIwNzYsIDB4OERCQSwgMHgwQkIyLCAweDhEQkMsIDB4MjA3NCwNCisgICAgMHg4REJFLCAweDBCQjEsIDB4OERCRiwgMHgyMDc3LCAweDhEQzEsIDB4MjA3OCwgMHg4REMyLCAweDIwNzUsDQorICAgIDB4OERDNSwgMHgyMzBFLCAweDhEQzYsIDB4MEQ3RCwgMHg4REM3LCAweDIzMDYsIDB4OERDOCwgMHgyMzBDLA0KKyAgICAweDhEQ0IsIDB4MEQ3OCwgMHg4RENDLCAweDBEN0IsIDB4OERDRCwgMHgyMzA1LCAweDhEQ0UsIDB4MEQ3NiwNCisgICAgMHg4RENGLCAweDIzMDksIDB4OEREMCwgMHgyNUIxLCAweDhERDEsIDB4MEQ3QSwgMHg4REQzLCAweDIzMDQsDQorICAgIDB4OERENSwgMHgyMzBBLCAweDhERDYsIDB4MjMwNywgMHg4REQ3LCAweDIzMEQsIDB4OEREOCwgMHgyMzAzLA0KKyAgICAweDhERDksIDB4MjMwQiwgMHg4RERBLCAweDBENzksIDB4OEREQiwgMHgwRDdDLCAweDhEREMsIDB4MjMwOCwNCisgICAgMHg4RERELCAweDBENzcsIDB4OERERiwgMHgwRjI3LCAweDhERTAsIDB4MjVBRCwgMHg4REUxLCAweDBGMjYsDQorICAgIDB4OERFMiwgMHgyNUI0LCAweDhERTMsIDB4MjVCMywgMHg4REU0LCAweDBGMkQsIDB4OERFNiwgMHgwRjJFLA0KKyAgICAweDhERTcsIDB4MjVCNSwgMHg4REU4LCAweDBGMjgsIDB4OERFOSwgMHgyNUIyLCAweDhERUEsIDB4MEYyQywNCisgICAgMHg4REVCLCAweDI1QjcsIDB4OERFQywgMHgyNUFFLCAweDhERUUsIDB4MjVCMCwgMHg4REVGLCAweDBGMjksDQorICAgIDB4OERGMCwgMHgyNUFDLCAweDhERjEsIDB4MjVBRiwgMHg4REYyLCAweDI1QjYsIDB4OERGMywgMHgwRjJBLA0KKyAgICAweDhERjQsIDB4MjVCOCwgMHg4REZBLCAweDBGMkIsIDB4OERGQywgMHgxMEJELCAweDhERkQsIDB4MjgxNCwNCisgICAgMHg4REZFLCAweDI4MUEsIDB4OERGRiwgMHgyODEyLCAweDhFMDAsIDB4MjgxQiwgMHg4RTAyLCAweDI4MTEsDQorICAgIDB4OEUwMywgMHgyODE2LCAweDhFMDQsIDB4MjgxQywgMHg4RTA1LCAweDI4MTksIDB4OEUwNiwgMHgyODE4LA0KKyAgICAweDhFMDcsIDB4MjgxNywgMHg4RTA5LCAweDI4MTAsIDB4OEUwQSwgMHgyODE1LCAweDhFMEQsIDB4MjgxMywNCisgICAgMHg4RTBGLCAweDEyMzgsIDB4OEUxMCwgMHgxMjM1LCAweDhFMTEsIDB4MkE2OSwgMHg4RTEyLCAweDJBNkUsDQorICAgIDB4OEUxMywgMHgyQTcwLCAweDhFMTQsIDB4MkE2RCwgMHg4RTE1LCAweDJBNjYsIDB4OEUxNiwgMHgyQTY4LA0KKyAgICAweDhFMTcsIDB4MkE3MiwgMHg4RTE4LCAweDJBNkYsIDB4OEUxOSwgMHgyQTZBLCAweDhFMUEsIDB4MkE3MywNCisgICAgMHg4RTFCLCAweDJBNjcsIDB4OEUxQywgMHgyQTcxLCAweDhFMUQsIDB4MTIzNiwgMHg4RTFFLCAweDEyM0MsDQorICAgIDB4OEUxRiwgMHgxMjNBLCAweDhFMjAsIDB4MkE2MSwgMHg4RTIxLCAweDEyM0IsIDB4OEUyMiwgMHgxMjM3LA0KKyAgICAweDhFMjMsIDB4MkE2MiwgMHg4RTI0LCAweDJBNjQsIDB4OEUyNSwgMHgyQTYzLCAweDhFMjYsIDB4MkE2QiwNCisgICAgMHg4RTI3LCAweDJBNkMsIDB4OEUyOSwgMHgxMjM5LCAweDhFMkIsIDB4MTIzNCwgMHg4RTJFLCAweDJBNjUsDQorICAgIDB4OEUzMCwgMHgyQ0FCLCAweDhFMzEsIDB4MTM2MiwgMHg4RTMzLCAweDJDQTIsIDB4OEUzNCwgMHgxMzYzLA0KKyAgICAweDhFMzUsIDB4MTM2NiwgMHg4RTM2LCAweDJDQTcsIDB4OEUzOCwgMHgyQ0E0LCAweDhFMzksIDB4MTM2NSwNCisgICAgMHg4RTNDLCAweDJDQTgsIDB4OEUzRCwgMHgyQ0E5LCAweDhFM0UsIDB4MkNBMywgMHg4RTNGLCAweDJDQUMsDQorICAgIDB4OEU0MCwgMHgyQ0E1LCAweDhFNDEsIDB4MkNBQSwgMHg4RTQyLCAweDEzNjQsIDB4OEU0NCwgMHgxMzYxLA0KKyAgICAweDhFNDUsIDB4MkNBNiwgMHg4RTQ3LCAweDJFN0EsIDB4OEU0OCwgMHgxNDhCLCAweDhFNDksIDB4MTQ4OSwNCisgICAgMHg4RTRBLCAweDE0OEMsIDB4OEU0QiwgMHgxNDhBLCAweDhFNEMsIDB4MkU3OSwgMHg4RTRELCAweDJFNzYsDQorICAgIDB4OEU0RSwgMHgyRTc1LCAweDhFNTAsIDB4MkU3OCwgMHg4RTUzLCAweDJFNzcsIDB4OEU1NCwgMHgyRkY2LA0KKyAgICAweDhFNTUsIDB4MTUzNSwgMHg4RTU2LCAweDJGRUQsIDB4OEU1NywgMHgyRkVDLCAweDhFNTksIDB4MTUzMCwNCisgICAgMHg4RTVBLCAweDJGRjIsIDB4OEU1QiwgMHgyRkYxLCAweDhFNUMsIDB4MkZFOSwgMHg4RTVELCAweDJGRjQsDQorICAgIDB4OEU1RSwgMHgyRkVFLCAweDhFNUYsIDB4MTUzNCwgMHg4RTYwLCAweDJGRUIsIDB4OEU2MSwgMHgyRkYzLA0KKyAgICAweDhFNjIsIDB4MkZFQSwgMHg4RTYzLCAweDE1MzEsIDB4OEU2NCwgMHgxNTMzLCAweDhFNjUsIDB4MkZFRiwNCisgICAgMHg4RTY2LCAweDE1MzIsIDB4OEU2NywgMHgyRkYwLCAweDhFNjksIDB4MkZGNSwgMHg4RTZBLCAweDMxM0QsDQorICAgIDB4OEU2QywgMHgxNUQzLCAweDhFNkQsIDB4MzEzQSwgMHg4RTZGLCAweDMxM0UsIDB4OEU3MiwgMHgxNUQwLA0KKyAgICAweDhFNzMsIDB4MzEzQywgMHg4RTc0LCAweDE1RDUsIDB4OEU3NiwgMHgxNUQyLCAweDhFNzgsIDB4MzEzQiwNCisgICAgMHg4RTdBLCAweDE1RDQsIDB4OEU3QiwgMHgzMTNGLCAweDhFN0MsIDB4MTVDRiwgMHg4RTgxLCAweDE2NEQsDQorICAgIDB4OEU4MiwgMHgxNjRGLCAweDhFODQsIDB4MzI0MCwgMHg4RTg1LCAweDE2NEUsIDB4OEU4NiwgMHgzMjNFLA0KKyAgICAweDhFODcsIDB4MTVEMSwgMHg4RTg4LCAweDMyM0YsIDB4OEU4OSwgMHgxNjRDLCAweDhFOEEsIDB4MTY5MywNCisgICAgMHg4RThCLCAweDE2OTUsIDB4OEU4QywgMHgzMzFBLCAweDhFOEQsIDB4MTY5NCwgMHg4RThFLCAweDMzMTksDQorICAgIDB4OEU5MCwgMHgzM0MxLCAweDhFOTEsIDB4MTZEQiwgMHg4RTkyLCAweDMzQzAsIDB4OEU5MywgMHgxNkRDLA0KKyAgICAweDhFOTQsIDB4MzNCRSwgMHg4RTk1LCAweDMzQkQsIDB4OEU5NiwgMHgzM0MyLCAweDhFOTcsIDB4MzNDMywNCisgICAgMHg4RTk4LCAweDM0NDMsIDB4OEU5QSwgMHgzM0JGLCAweDhFOUQsIDB4MzRBMSwgMHg4RTlFLCAweDM0OUUsDQorICAgIDB4OEU5RiwgMHgzNDlGLCAweDhFQTAsIDB4MzRBMCwgMHg4RUExLCAweDE3NDksIDB4OEVBMywgMHgzNEVCLA0KKyAgICAweDhFQTQsIDB4MzRFQSwgMHg4RUE1LCAweDM0RTksIDB4OEVBNiwgMHgzNTBBLCAweDhFQTgsIDB4MzUzNywNCisgICAgMHg4RUE5LCAweDM1MjQsIDB4OEVBQSwgMHgxNzVCLCAweDhFQUIsIDB4MDUxMiwgMHg4RUFDLCAweDA5Q0YsDQorICAgIDB4OEVCMiwgMHgwRjJGLCAweDhFQkEsIDB4MTIzRCwgMHg4RUJELCAweDJDQUQsIDB4OEVDMCwgMHgxNTM2LA0KKyAgICAweDhFQzIsIDB4MzE0MCwgMHg4RUM5LCAweDM1MjUsIDB4OEVDQSwgMHgwNTEzLCAweDhFQ0IsIDB4MDY4RCwNCisgICAgMHg4RUNDLCAweDA4MTAsIDB4OEVDRCwgMHgwODBGLCAweDhFQ0YsIDB4MDlEMiwgMHg4RUQxLCAweDFFMTMsDQorICAgIDB4OEVEMiwgMHgwOUQwLCAweDhFRDMsIDB4MUUxNCwgMHg4RUQ0LCAweDA5RDEsIDB4OEVENywgMHgyMDdELA0KKyAgICAweDhFRDgsIDB4MjA3OSwgMHg4RURCLCAweDBCQjMsIDB4OEVEQywgMHgyMDdDLCAweDhFREQsIDB4MjA3QiwNCisgICAgMHg4RURFLCAweDIwN0EsIDB4OEVERiwgMHgwQkI0LCAweDhFRTAsIDB4MjA3RSwgMHg4RUUxLCAweDIwN0YsDQorICAgIDB4OEVFNSwgMHgyMzE1LCAweDhFRTYsIDB4MjMxMywgMHg4RUU3LCAweDIzMTcsIDB4OEVFOCwgMHgyMzE4LA0KKyAgICAweDhFRTksIDB4MjMxRSwgMHg4RUVCLCAweDIzMUEsIDB4OEVFQywgMHgyMzFDLCAweDhFRUUsIDB4MjMxNCwNCisgICAgMHg4RUVGLCAweDIzMEYsIDB4OEVGMSwgMHgyMzFCLCAweDhFRjQsIDB4MjMxRCwgMHg4RUY1LCAweDIzMTYsDQorICAgIDB4OEVGNiwgMHgyMzE5LCAweDhFRjcsIDB4MjMxMCwgMHg4RUY4LCAweDBEN0YsIDB4OEVGOSwgMHgyMzEyLA0KKyAgICAweDhFRkEsIDB4MjMxMSwgMHg4RUZCLCAweDBEN0UsIDB4OEVGQywgMHgwRDgwLCAweDhFRkUsIDB4MEYzMiwNCisgICAgMHg4RUZGLCAweDI1QkEsIDB4OEYwMCwgMHgyNUJDLCAweDhGMDEsIDB4MjVCQiwgMHg4RjAyLCAweDI1QzAsDQorICAgIDB4OEYwMywgMHgwRjMwLCAweDhGMDUsIDB4MjVCRCwgMHg4RjA2LCAweDI1QjksIDB4OEYwNywgMHgyNUJFLA0KKyAgICAweDhGMDgsIDB4MjVCRiwgMHg4RjA5LCAweDBGMzEsIDB4OEYwQSwgMHgwRjMzLCAweDhGMEIsIDB4MjVDMSwNCisgICAgMHg4RjBELCAweDI4MjAsIDB4OEYwRSwgMHgyODFGLCAweDhGMTAsIDB4MjgxRCwgMHg4RjExLCAweDI4MUUsDQorICAgIDB4OEYxMiwgMHgxMEJGLCAweDhGMTMsIDB4MTBDMSwgMHg4RjE0LCAweDEwQkUsIDB4OEYxNSwgMHgxMEMwLA0KKyAgICAweDhGMTYsIDB4MkE3QSwgMHg4RjE3LCAweDJBN0IsIDB4OEYxOCwgMHgyQTc2LCAweDhGMUEsIDB4MkE3NywNCisgICAgMHg4RjFCLCAweDEyM0YsIDB4OEYxQywgMHgxMjQ0LCAweDhGMUQsIDB4MTIzRSwgMHg4RjFFLCAweDEyNDUsDQorICAgIDB4OEYxRiwgMHgxMjQwLCAweDhGMjAsIDB4MkE3OCwgMHg4RjIzLCAweDJBNzksIDB4OEYyNCwgMHgyQTc1LA0KKyAgICAweDhGMjUsIDB4MTI0NiwgMHg4RjI2LCAweDEyNDIsIDB4OEYyOSwgMHgxMjQxLCAweDhGMkEsIDB4MTI0MywNCisgICAgMHg4RjJDLCAweDJBNzQsIDB4OEYyRSwgMHgyQ0FGLCAweDhGMkYsIDB4MTM2OCwgMHg4RjMyLCAweDJDQjEsDQorICAgIDB4OEYzMywgMHgxMzZBLCAweDhGMzQsIDB4MkNCNCwgMHg4RjM1LCAweDJDQjAsIDB4OEYzNiwgMHgyQ0FFLA0KKyAgICAweDhGMzcsIDB4MkNCMywgMHg4RjM4LCAweDEzNjksIDB4OEYzOSwgMHgyQ0IyLCAweDhGM0IsIDB4MTM2NywNCisgICAgMHg4RjNFLCAweDE0OEUsIDB4OEYzRiwgMHgxNDkxLCAweDhGNDAsIDB4MkU3QywgMHg4RjQyLCAweDE0OEYsDQorICAgIDB4OEY0MywgMHgyRTdCLCAweDhGNDQsIDB4MTQ4RCwgMHg4RjQ1LCAweDE0OTAsIDB4OEY0NiwgMHgyRkY3LA0KKyAgICAweDhGNDcsIDB4MkZGOCwgMHg4RjQ4LCAweDJGRjksIDB4OEY0OSwgMHgxNTM3LCAweDhGNEIsIDB4MkZGQSwNCisgICAgMHg4RjRELCAweDE1MzgsIDB4OEY0RSwgMHgxNUQ3LCAweDhGNEYsIDB4MzE0MywgMHg4RjUwLCAweDMxNDQsDQorICAgIDB4OEY1MSwgMHgzMTQyLCAweDhGNTIsIDB4MzE0MSwgMHg4RjUzLCAweDMxNDUsIDB4OEY1NCwgMHgxNUQ2LA0KKyAgICAweDhGNTUsIDB4MzI0NCwgMHg4RjU2LCAweDMyNDIsIDB4OEY1NywgMHgzMjQzLCAweDhGNTgsIDB4MzI0NSwNCisgICAgMHg4RjU5LCAweDMyNDEsIDB4OEY1QSwgMHgzMjQ2LCAweDhGNUIsIDB4MzMxQywgMHg4RjVELCAweDMzMUQsDQorICAgIDB4OEY1RSwgMHgzMzFCLCAweDhGNUYsIDB4MTY5NiwgMHg4RjYwLCAweDMzQzQsIDB4OEY2MSwgMHgxNkRELA0KKyAgICAweDhGNjIsIDB4MzNDNSwgMHg4RjYzLCAweDM0NDUsIDB4OEY2NCwgMHgzNDQ0LCAweDhGOUIsIDB4MDUxNCwNCisgICAgMHg4RjlDLCAweDBEODEsIDB4OEY5RiwgMHgwRjM0LCAweDhGQTMsIDB4MTBDMiwgMHg4RkE2LCAweDEzNkMsDQorICAgIDB4OEZBOCwgMHgxMzZCLCAweDhGQUQsIDB4MTVEOCwgMHg4RkFFLCAweDE2MkYsIDB4OEZBRiwgMHgxNjk3LA0KKyAgICAweDhGQjAsIDB4MDUxNSwgMHg4RkIxLCAweDA5RDMsIDB4OEZCMiwgMHgwRjM1LCAweDhGQjQsIDB4MzE0NiwNCisgICAgMHg4RkI1LCAweDAyMzAsIDB4OEZCRiwgMHgxOEU5LCAweDhGQzIsIDB4MDUxNiwgMHg4RkM0LCAweDA1MTksDQorICAgIDB4OEZDNSwgMHgwNTE4LCAweDhGQzYsIDB4MDUxNywgMHg4RkM5LCAweDE4RTgsIDB4OEZDQiwgMHgxQTRBLA0KKyAgICAweDhGQ0QsIDB4MUE0QywgMHg4RkNFLCAweDA2OEUsIDB4OEZEMSwgMHgwNjkwLCAweDhGRDIsIDB4MUE0OSwNCisgICAgMHg4RkQzLCAweDFBNEIsIDB4OEZENCwgMHgwNjhGLCAweDhGRDUsIDB4MUE0RSwgMHg4RkQ2LCAweDFBNEQsDQorICAgIDB4OEZENywgMHgxQTRGLCAweDhGRTAsIDB4MUMwQSwgMHg4RkUxLCAweDFDMDgsIDB4OEZFMiwgMHgwODEzLA0KKyAgICAweDhGRTMsIDB4MUMwNywgMHg4RkU0LCAweDA4MTgsIDB4OEZFNSwgMHgwODE1LCAweDhGRTYsIDB4MDgxMiwNCisgICAgMHg4RkU4LCAweDA4MTksIDB4OEZFQSwgMHgwODE0LCAweDhGRUIsIDB4MDgxNywgMHg4RkVELCAweDA4MTYsDQorICAgIDB4OEZFRSwgMHgxQzA5LCAweDhGRjAsIDB4MDgxMSwgMHg4RkY0LCAweDA5RDksIDB4OEZGNSwgMHgxRTE2LA0KKyAgICAweDhGRjYsIDB4MUUxQywgMHg4RkY3LCAweDA5RDYsIDB4OEZGOCwgMHgwOURELCAweDhGRkEsIDB4MDlEOCwNCisgICAgMHg4RkZCLCAweDFFMTksIDB4OEZGQywgMHgxRTFCLCAweDhGRkQsIDB4MDlEQiwgMHg4RkZFLCAweDFFMTUsDQorICAgIDB4OEZGRiwgMHgxRTE4LCAweDkwMDAsIDB4MDlENywgMHg5MDAxLCAweDA5RDQsIDB4OTAwMiwgMHgxRTE3LA0KKyAgICAweDkwMDMsIDB4MDlEQSwgMHg5MDA0LCAweDFFMUEsIDB4OTAwNSwgMHgwOURDLCAweDkwMDYsIDB4MDlENSwNCisgICAgMHg5MDBCLCAweDIwODEsIDB4OTAwQywgMHgyMDg0LCAweDkwMEQsIDB4MEJCNiwgMHg5MDBGLCAweDBCQzAsDQorICAgIDB4OTAxMCwgMHgwQkJDLCAweDkwMTEsIDB4MjA4MiwgMHg5MDE0LCAweDBCQzQsIDB4OTAxNSwgMHgwQkJELA0KKyAgICAweDkwMTYsIDB4MEJDMiwgMHg5MDE3LCAweDBCQjgsIDB4OTAxOSwgMHgwQkI1LCAweDkwMUEsIDB4MEJCNywNCisgICAgMHg5MDFCLCAweDBCQzMsIDB4OTAxQywgMHgyMDgzLCAweDkwMUQsIDB4MEJCQiwgMHg5MDFFLCAweDBCQkUsDQorICAgIDB4OTAxRiwgMHgwQkJBLCAweDkwMjAsIDB4MEJCRiwgMHg5MDIxLCAweDIwODUsIDB4OTAyMiwgMHgwQkMxLA0KKyAgICAweDkwMjMsIDB4MEJCOSwgMHg5MDI0LCAweDIwODAsIDB4OTAyRCwgMHgyMzFGLCAweDkwMkUsIDB4MEQ4MiwNCisgICAgMHg5MDJGLCAweDIzMjEsIDB4OTAzMSwgMHgwRDg0LCAweDkwMzIsIDB4MEQ4NiwgMHg5MDM0LCAweDIzMjAsDQorICAgIDB4OTAzNSwgMHgwRDgzLCAweDkwMzYsIDB4MEQ4NywgMHg5MDM4LCAweDBEODUsIDB4OTAzQywgMHgwRjNCLA0KKyAgICAweDkwM0QsIDB4MjVDNiwgMHg5MDNFLCAweDBGNDMsIDB4OTAzRiwgMHgyNUMzLCAweDkwNDEsIDB4MEY0NCwNCisgICAgMHg5MDQyLCAweDBGMzksIDB4OTA0NCwgMHgyNUM0LCAweDkwNDcsIDB4MEYzRSwgMHg5MDQ5LCAweDI1QzUsDQorICAgIDB4OTA0QSwgMHgwRjM3LCAweDkwNEIsIDB4MEYzNiwgMHg5MDRELCAweDBGNDEsIDB4OTA0RSwgMHgwRjQwLA0KKyAgICAweDkwNEYsIDB4MEYzRiwgMHg5MDUwLCAweDBGM0QsIDB4OTA1MSwgMHgwRjQyLCAweDkwNTIsIDB4MjVDMiwNCisgICAgMHg5MDUzLCAweDBGMzgsIDB4OTA1NCwgMHgwRjNBLCAweDkwNTUsIDB4MEYzQywgMHg5MDU4LCAweDEwQzQsDQorICAgIDB4OTA1OSwgMHgxMEM3LCAweDkwNUIsIDB4MTBDQiwgMHg5MDVDLCAweDEwQzUsIDB4OTA1RCwgMHgxMENBLA0KKyAgICAweDkwNUUsIDB4MTBDOCwgMHg5MDYwLCAweDEwQzMsIDB4OTA2MiwgMHgxMEM5LCAweDkwNjMsIDB4MTBDNiwNCisgICAgMHg5MDY3LCAweDJBN0YsIDB4OTA2OCwgMHgxMjQ5LCAweDkwNjksIDB4MTI0NywgMHg5MDZCLCAweDJBODAsDQorICAgIDB4OTA2RCwgMHgxMjRBLCAweDkwNkUsIDB4MTI0OCwgMHg5MDZGLCAweDJBN0UsIDB4OTA3MCwgMHgyQTdELA0KKyAgICAweDkwNzIsIDB4MTM3MCwgMHg5MDczLCAweDJBN0MsIDB4OTA3NCwgMHgxMzZFLCAweDkwNzUsIDB4MTM2RCwNCisgICAgMHg5MDc2LCAweDJDQjUsIDB4OTA3NywgMHgxMjRCLCAweDkwNzgsIDB4MTM2RiwgMHg5MDc5LCAweDJDQjYsDQorICAgIDB4OTA3QSwgMHgxMzcyLCAweDkwN0IsIDB4MkNCNywgMHg5MDdDLCAweDEzNzEsIDB4OTA3RCwgMHgxNDkzLA0KKyAgICAweDkwN0UsIDB4MkU3RSwgMHg5MDdGLCAweDE0OTIsIDB4OTA4MCwgMHgxNDk3LCAweDkwODEsIDB4MTQ5NSwNCisgICAgMHg5MDgyLCAweDE0OTYsIDB4OTA4MywgMHgxNTNBLCAweDkwODQsIDB4MTQ5NCwgMHg5MDg1LCAweDJFN0QsDQorICAgIDB4OTA4NiwgMHgyQ0I4LCAweDkwODcsIDB4MTUzOSwgMHg5MDg4LCAweDE1M0IsIDB4OTA4QSwgMHgxNUQ5LA0KKyAgICAweDkwOEIsIDB4MTVEQSwgMHg5MDhELCAweDMyNDcsIDB4OTA4RiwgMHgxNzBDLCAweDkwOTAsIDB4MTcwQiwNCisgICAgMHg5MDkxLCAweDA1MUIsIDB4OTA5NCwgMHgxODFFLCAweDkwOTUsIDB4MDlERSwgMHg5MDk3LCAweDE4MUIsDQorICAgIDB4OTA5OCwgMHgxODFDLCAweDkwOTksIDB4MTgxQSwgMHg5MDlCLCAweDE4MUQsIDB4OTA5RSwgMHgxOEVELA0KKyAgICAweDkwOUYsIDB4MThFQSwgMHg5MEEwLCAweDE4RUYsIDB4OTBBMSwgMHgxOEVCLCAweDkwQTIsIDB4MDUxQywNCisgICAgMHg5MEEzLCAweDA1MUYsIDB4OTBBNSwgMHgxOEVDLCAweDkwQTYsIDB4MDUxRSwgMHg5MEE3LCAweDE4RUUsDQorICAgIDB4OTBBQSwgMHgwNTFELCAweDkwQUYsIDB4MUE1MiwgMHg5MEIwLCAweDFBNTQsIDB4OTBCMSwgMHgwNjkzLA0KKyAgICAweDkwQjIsIDB4MUE1MCwgMHg5MEIzLCAweDFBNTMsIDB4OTBCNCwgMHgxQTUxLCAweDkwQjUsIDB4MDY5MSwNCisgICAgMHg5MEI2LCAweDA2OTQsIDB4OTBCOCwgMHgwNjkyLCAweDkwQkQsIDB4MUMwQywgMHg5MEJFLCAweDFDMTAsDQorICAgIDB4OTBCRiwgMHgxQzBELCAweDkwQzEsIDB4MDgxQywgMHg5MEMzLCAweDA4MUQsIDB4OTBDNSwgMHgxQzBGLA0KKyAgICAweDkwQzcsIDB4MUMxMSwgMHg5MEM4LCAweDFDMTMsIDB4OTBDQSwgMHgwODFBLCAweDkwQ0IsIDB4MUMxMiwNCisgICAgMHg5MENFLCAweDA4MUIsIDB4OTBENCwgMHgyMDhDLCAweDkwRDUsIDB4MUMwRSwgMHg5MEQ2LCAweDFFMUQsDQorICAgIDB4OTBENywgMHgxRTI2LCAweDkwRDgsIDB4MUUyNCwgMHg5MEQ5LCAweDFFMUYsIDB4OTBEQSwgMHgxRTIwLA0KKyAgICAweDkwREIsIDB4MUUyNSwgMHg5MERDLCAweDFFMjcsIDB4OTBERCwgMHgwOUUwLCAweDkwREYsIDB4MUUyMiwNCisgICAgMHg5MEUwLCAweDFFMUUsIDB4OTBFMSwgMHgwOURGLCAweDkwRTIsIDB4MDlFMSwgMHg5MEUzLCAweDFFMjEsDQorICAgIDB4OTBFNCwgMHgxRTI4LCAweDkwRTUsIDB4MUUyMywgMHg5MEU4LCAweDBCQzUsIDB4OTBFOSwgMHgyMDhGLA0KKyAgICAweDkwRUEsIDB4MjA4NywgMHg5MEVCLCAweDIwOEQsIDB4OTBFQywgMHgyMDhFLCAweDkwRUQsIDB4MEJDNiwNCisgICAgMHg5MEVGLCAweDIwODYsIDB4OTBGMCwgMHgyMDg4LCAweDkwRjEsIDB4MUMwQiwgMHg5MEYyLCAweDIwOEEsDQorICAgIDB4OTBGMywgMHgyMDhCLCAweDkwRjQsIDB4MjA4OSwgMHg5MEY1LCAweDBEODksIDB4OTBGOSwgMHgyMzI4LA0KKyAgICAweDkwRkEsIDB4MkNCOSwgMHg5MEZCLCAweDIzMjksIDB4OTBGQywgMHgyMzI2LCAweDkwRkQsIDB4MEJDNywNCisgICAgMHg5MEZFLCAweDBEOEIsIDB4OTBGRiwgMHgyMzI1LCAweDkxMDAsIDB4MjMyQiwgMHg5MTAxLCAweDIzMkEsDQorICAgIDB4OTEwMiwgMHgwRDg4LCAweDkxMDMsIDB4MjMyRSwgMHg5MTA0LCAweDIzMjQsIDB4OTEwNSwgMHgyMzJELA0KKyAgICAweDkxMDYsIDB4MjMyMiwgMHg5MTA3LCAweDIzMkMsIDB4OTEwOCwgMHgyMzI3LCAweDkxMDksIDB4MEQ4QSwNCisgICAgMHg5MTBCLCAweDI1Q0QsIDB4OTEwRCwgMHgyNUM4LCAweDkxMEUsIDB4MjVDRSwgMHg5MTBGLCAweDI1QzksDQorICAgIDB4OTExMCwgMHgyNUM3LCAweDkxMTEsIDB4MjVDQSwgMHg5MTEyLCAweDBGNDUsIDB4OTExNCwgMHgyNUNDLA0KKyAgICAweDkxMTYsIDB4MjVDQiwgMHg5MTE3LCAweDBGNDYsIDB4OTExOCwgMHgxMENELCAweDkxMTksIDB4MTBDQywNCisgICAgMHg5MTFBLCAweDI4MjcsIDB4OTExQiwgMHgyODJBLCAweDkxMUMsIDB4MjgyMiwgMHg5MTFELCAweDI4MjYsDQorICAgIDB4OTExRSwgMHgxMENFLCAweDkxMUYsIDB4MjgyNSwgMHg5MTIwLCAweDI4MjMsIDB4OTEyMSwgMHgyODI5LA0KKyAgICAweDkxMjIsIDB4MjgyNCwgMHg5MTIzLCAweDI4MjEsIDB4OTEyNCwgMHgyODI4LCAweDkxMjYsIDB4MkE4NiwNCisgICAgMHg5MTI3LCAweDEyNEUsIDB4OTEyOCwgMHgyRkZCLCAweDkxMjksIDB4MkE4MywgMHg5MTJBLCAweDJBODQsDQorICAgIDB4OTEyQiwgMHgyQTgyLCAweDkxMkMsIDB4MjMyMywgMHg5MTJELCAweDEyNEQsIDB4OTEyRSwgMHgyQTg3LA0KKyAgICAweDkxMkYsIDB4MkE4MSwgMHg5MTMwLCAweDEyNEMsIDB4OTEzMSwgMHgxMjRGLCAweDkxMzIsIDB4MkE4NSwNCisgICAgMHg5MTMzLCAweDJDQkEsIDB4OTEzNCwgMHgxMzczLCAweDkxMzUsIDB4MkNCQiwgMHg5MTM2LCAweDJDQkMsDQorICAgIDB4OTEzOCwgMHgyRTdGLCAweDkxMzksIDB4MTQ5OCwgMHg5MTNBLCAweDJGRkMsIDB4OTEzQiwgMHgyRkZELA0KKyAgICAweDkxM0UsIDB4MkZGRSwgMHg5MTNGLCAweDMxNDgsIDB4OTE0MCwgMHgzMTQ3LCAweDkxNDEsIDB4MzI0OSwNCisgICAgMHg5MTQzLCAweDMyNDgsIDB4OTE0NCwgMHgzMzFGLCAweDkxNDUsIDB4MzMyMCwgMHg5MTQ2LCAweDMzMUUsDQorICAgIDB4OTE0NywgMHgzM0M2LCAweDkxNDgsIDB4MTZERSwgMHg5MTQ5LCAweDA1MjAsIDB4OTE0QSwgMHgwODFGLA0KKyAgICAweDkxNEIsIDB4MDgxRSwgMHg5MTRDLCAweDA5RTQsIDB4OTE0RCwgMHgwOUUzLCAweDkxNEUsIDB4MUUyQSwNCisgICAgMHg5MTRGLCAweDFFMkIsIDB4OTE1MCwgMHgxRTI5LCAweDkxNTIsIDB4MDlFMiwgMHg5MTUzLCAweDIwOTMsDQorICAgIDB4OTE1NSwgMHgyMDk0LCAweDkxNTYsIDB4MjA5MCwgMHg5MTU3LCAweDBCQzgsIDB4OTE1OCwgMHgyMDkxLA0KKyAgICAweDkxNUEsIDB4MjA5MiwgMHg5MTVGLCAweDIzMzEsIDB4OTE2MCwgMHgyMzMzLCAweDkxNjEsIDB4MjMyRiwNCisgICAgMHg5MTYyLCAweDIzMzIsIDB4OTE2MywgMHgwRDhDLCAweDkxNjQsIDB4MjMzMCwgMHg5MTY1LCAweDBEOEQsDQorICAgIDB4OTE2OCwgMHgyM0UyLCAweDkxNjksIDB4MEY0OSwgMHg5MTZBLCAweDBGNDgsIDB4OTE2QywgMHgwRjQ3LA0KKyAgICAweDkxNkUsIDB4MjVDRiwgMHg5MTZGLCAweDI1RDAsIDB4OTE3MiwgMHgyODJDLCAweDkxNzMsIDB4MjgyRSwNCisgICAgMHg5MTc0LCAweDEwRDIsIDB4OTE3NSwgMHgxMENGLCAweDkxNzcsIDB4MTBEMSwgMHg5MTc4LCAweDEwRDAsDQorICAgIDB4OTE3OSwgMHgyODJELCAweDkxN0EsIDB4MjgyQiwgMHg5MTgwLCAweDJBOEUsIDB4OTE4MSwgMHgyQThCLA0KKyAgICAweDkxODIsIDB4MkE4QywgMHg5MTgzLCAweDEyNTMsIDB4OTE4NCwgMHgyQThELCAweDkxODUsIDB4MkE4OCwNCisgICAgMHg5MTg2LCAweDJBODksIDB4OTE4NywgMHgxMjUwLCAweDkxODksIDB4MTI1MSwgMHg5MThBLCAweDJBOEEsDQorICAgIDB4OTE4QiwgMHgxMjUyLCAweDkxOEQsIDB4MkNDMCwgMHg5MThGLCAweDJDQzEsIDB4OTE5MCwgMHgyQ0JFLA0KKyAgICAweDkxOTEsIDB4MkNCRiwgMHg5MTkyLCAweDEzNzQsIDB4OTE5MywgMHgyQ0JELCAweDkxOTksIDB4MkU4MywNCisgICAgMHg5MTlBLCAweDJFODAsIDB4OTE5QiwgMHgyRTgyLCAweDkxOUMsIDB4MTQ5QiwgMHg5MTlELCAweDJFODYsDQorICAgIDB4OTE5RSwgMHgxNDlBLCAweDkxOUYsIDB4MkU4NCwgMHg5MUEwLCAweDJFODcsIDB4OTFBMSwgMHgyRTg1LA0KKyAgICAweDkxQTIsIDB4MkU4MSwgMHg5MUEzLCAweDE0OTksIDB4OTFBNSwgMHgzMDAwLCAweDkxQTcsIDB4MzAwMSwNCisgICAgMHg5MUE4LCAweDJGRkYsIDB4OTFBQSwgMHgzMDAzLCAweDkxQUIsIDB4MTUzQywgMHg5MUFDLCAweDE1M0QsDQorICAgIDB4OTFBRCwgMHgzMTRBLCAweDkxQUUsIDB4MTVEQywgMHg5MUFGLCAweDMwMDIsIDB4OTFCMCwgMHgzMTQ5LA0KKyAgICAweDkxQjEsIDB4MTVEQiwgMHg5MUIyLCAweDMyNEMsIDB4OTFCMywgMHgzMjRELCAweDkxQjQsIDB4MTY1MCwNCisgICAgMHg5MUI1LCAweDMyNEIsIDB4OTFCNywgMHgzMjRBLCAweDkxQjksIDB4MzMyMSwgMHg5MUJBLCAweDE2OTgsDQorICAgIDB4OTFCQywgMHgzNDQ2LCAweDkxQkQsIDB4MzRBMywgMHg5MUJFLCAweDM0QTIsIDB4OTFDMCwgMHgxNzMwLA0KKyAgICAweDkxQzEsIDB4MTc0QSwgMHg5MUMyLCAweDM0QTQsIDB4OTFDMywgMHgzNTBCLCAweDkxQzUsIDB4MTc1QywNCisgICAgMHg5MUM2LCAweDA1MjEsIDB4OTFDNywgMHgwNjk1LCAweDkxQzksIDB4MEY0QSwgMHg5MUNCLCAweDE2NTEsDQorICAgIDB4OTFDQywgMHgwNTIyLCAweDkxQ0QsIDB4MDgyMCwgMHg5MUNFLCAweDBCQzksIDB4OTFDRiwgMHgwRDhFLA0KKyAgICAweDkxRDAsIDB4MTUzRSwgMHg5MUQxLCAweDA2OTYsIDB4OTFEMywgMHgxQzE1LCAweDkxRDQsIDB4MUMxNCwNCisgICAgMHg5MUQ1LCAweDFFMkMsIDB4OTFENywgMHgwOUU3LCAweDkxRDgsIDB4MDlFNSwgMHg5MUQ5LCAweDA5RTksDQorICAgIDB4OTFEQSwgMHgxRTJFLCAweDkxREMsIDB4MDlFOCwgMHg5MURELCAweDA5RTYsIDB4OTFFMiwgMHgxRTJELA0KKyAgICAweDkxRTMsIDB4MEJDQywgMHg5MUU0LCAweDIwOUEsIDB4OTFFNiwgMHgwQkNCLCAweDkxRTcsIDB4MEJDRCwNCisgICAgMHg5MUU4LCAweDIwOUYsIDB4OTFFOSwgMHgwQkNGLCAweDkxRUEsIDB4MjA5QywgMHg5MUVCLCAweDIwOUQsDQorICAgIDB4OTFFQywgMHgyMDk1LCAweDkxRUQsIDB4MEJDRSwgMHg5MUVFLCAweDIwQTAsIDB4OTFGMSwgMHgyMDk3LA0KKyAgICAweDkxRjMsIDB4MjA5OCwgMHg5MUY0LCAweDIwOTYsIDB4OTFGNSwgMHgwQkNBLCAweDkxRjcsIDB4MjA5RSwNCisgICAgMHg5MUY4LCAweDIwOTksIDB4OTFGOSwgMHgyMDlCLCAweDkxRkQsIDB4MjMzRiwgMHg5MUZGLCAweDIzM0UsDQorICAgIDB4OTIwMCwgMHgyMzNDLCAweDkyMDEsIDB4MjMzNCwgMHg5MjAyLCAweDIzNDMsIDB4OTIwMywgMHgyMzM3LA0KKyAgICAweDkyMDQsIDB4MjM0MSwgMHg5MjA1LCAweDIzNDgsIDB4OTIwNiwgMHgyMzQwLCAweDkyMDcsIDB4MEQ5NiwNCisgICAgMHg5MjA5LCAweDBEOTIsIDB4OTIwQSwgMHgyMzM1LCAweDkyMEMsIDB4MjMzQiwgMHg5MjBELCAweDBEOTQsDQorICAgIDB4OTIwRiwgMHgyMzNBLCAweDkyMTAsIDB4MEQ5NSwgMHg5MjExLCAweDBEOTcsIDB4OTIxMiwgMHgyMzNELA0KKyAgICAweDkyMTQsIDB4MEQ4RiwgMHg5MjE1LCAweDBEOTAsIDB4OTIxNiwgMHgyMzQ5LCAweDkyMTcsIDB4MjM0NywNCisgICAgMHg5MjE5LCAweDIzNDYsIDB4OTIxQSwgMHgyMzM4LCAweDkyMUMsIDB4MjM0NCwgMHg5MjFFLCAweDBEOTMsDQorICAgIDB4OTIyMywgMHgwRDkxLCAweDkyMjQsIDB4MjM0NSwgMHg5MjI1LCAweDIzMzYsIDB4OTIyNiwgMHgyMzM5LA0KKyAgICAweDkyMjcsIDB4MjM0MiwgMHg5MjJELCAweDI4NTEsIDB4OTIyRSwgMHgyNURBLCAweDkyMzAsIDB4MjVEMywNCisgICAgMHg5MjMxLCAweDI1RTYsIDB4OTIzMiwgMHgyNUVGLCAweDkyMzMsIDB4MjVENiwgMHg5MjM0LCAweDBGNTUsDQorICAgIDB4OTIzNiwgMHgyNUUzLCAweDkyMzcsIDB4MEY0QiwgMHg5MjM4LCAweDBGNEQsIDB4OTIzOSwgMHgwRjU5LA0KKyAgICAweDkyM0EsIDB4MjVENCwgMHg5MjNELCAweDBGNEUsIDB4OTIzRSwgMHgwRjUwLCAweDkyM0YsIDB4MEY1QSwNCisgICAgMHg5MjQwLCAweDBGNEYsIDB4OTI0NSwgMHgwRjU4LCAweDkyNDYsIDB4MjVEQywgMHg5MjQ4LCAweDI1RDEsDQorICAgIDB4OTI0OSwgMHgwRjU2LCAweDkyNEEsIDB4MjVEQiwgMHg5MjRCLCAweDBGNTIsIDB4OTI0QywgMHgyNUVELA0KKyAgICAweDkyNEQsIDB4MEY1NywgMHg5MjRFLCAweDI1RUIsIDB4OTI0RiwgMHgyNURGLCAweDkyNTAsIDB4MjVFOSwNCisgICAgMHg5MjUxLCAweDBGNTQsIDB4OTI1MiwgMHgyNUQyLCAweDkyNTMsIDB4MjVFQywgMHg5MjU0LCAweDI1RTcsDQorICAgIDB4OTI1NiwgMHgyNUVFLCAweDkyNTcsIDB4MEY0QywgMHg5MjVBLCAweDBGNUIsIDB4OTI1QiwgMHgwRjUxLA0KKyAgICAweDkyNUUsIDB4MjVEOCwgMHg5MjYwLCAweDI1RTAsIDB4OTI2MSwgMHgyNUU0LCAweDkyNjMsIDB4MjVFOCwNCisgICAgMHg5MjY0LCAweDBGNTMsIDB4OTI2NSwgMHgyNUQ3LCAweDkyNjYsIDB4MjVENSwgMHg5MjY3LCAweDI1RTEsDQorICAgIDB4OTI2QywgMHgyNURFLCAweDkyNkQsIDB4MjVERCwgMHg5MjZGLCAweDI1RTIsIDB4OTI3MCwgMHgyNUU1LA0KKyAgICAweDkyNzIsIDB4MjVFQSwgMHg5Mjc2LCAweDI4MzEsIDB4OTI3OCwgMHgxMEQzLCAweDkyNzksIDB4MjgzQiwNCisgICAgMHg5MjdBLCAweDI4MzMsIDB4OTI3QiwgMHgxMEQ5LCAweDkyN0MsIDB4MTBERCwgMHg5MjdELCAweDI4NDQsDQorICAgIDB4OTI3RSwgMHgyODRDLCAweDkyN0YsIDB4MjgzRCwgMHg5MjgwLCAweDEwRDUsIDB4OTI4MiwgMHgyODQxLA0KKyAgICAweDkyODMsIDB4MjVEOSwgMHg5Mjg1LCAweDEwRDYsIDB4OTI4NiwgMHgyODQ4LCAweDkyODcsIDB4Mjg0RCwNCisgICAgMHg5Mjg4LCAweDI4NDUsIDB4OTI4QSwgMHgyODQ3LCAweDkyOEIsIDB4Mjg1MCwgMHg5MjhDLCAweDI4NDksDQorICAgIDB4OTI4RCwgMHgyODM3LCAweDkyOEUsIDB4Mjg0MCwgMHg5MjkxLCAweDEwREUsIDB4OTI5MywgMHgxMERBLA0KKyAgICAweDkyOTQsIDB4MjgzNSwgMHg5Mjk1LCAweDI4NDIsIDB4OTI5NiwgMHgxMEQ4LCAweDkyOTcsIDB4MjgzQywNCisgICAgMHg5Mjk4LCAweDEwRDcsIDB4OTI5OSwgMHgyODRBLCAweDkyOUEsIDB4MjgzOSwgMHg5MjlCLCAweDI4MzIsDQorICAgIDB4OTI5QywgMHgxMERCLCAweDkyOUQsIDB4Mjg0RiwgMHg5MkEwLCAweDI4MzQsIDB4OTJBMSwgMHgyODQ2LA0KKyAgICAweDkyQTIsIDB4Mjg0MywgMHg5MkEzLCAweDI4M0UsIDB4OTJBNCwgMHgyODMwLCAweDkyQTUsIDB4MjgyRiwNCisgICAgMHg5MkE2LCAweDI4MzgsIDB4OTJBNywgMHgyODRCLCAweDkyQTgsIDB4MTBEQywgMHg5MkE5LCAweDI4NEUsDQorICAgIDB4OTJBQSwgMHgyODM2LCAweDkyQUIsIDB4MjgzQSwgMHg5MkFDLCAweDEwRDQsIDB4OTJCMiwgMHgxMjVGLA0KKyAgICAweDkyQjMsIDB4MTI1QSwgMHg5MkI0LCAweDJBQjAsIDB4OTJCNSwgMHgyQUFDLCAweDkyQjYsIDB4MkE5NCwNCisgICAgMHg5MkI3LCAweDEyNTYsIDB4OTJCOSwgMHgzNkU5LCAweDkyQkIsIDB4MTI1NSwgMHg5MkJDLCAweDEyNUIsDQorICAgIDB4OTJDMCwgMHgyQTkyLCAweDkyQzEsIDB4MTI1OSwgMHg5MkMyLCAweDJBOUUsIDB4OTJDMywgMHgyQTkwLA0KKyAgICAweDkyQzQsIDB4MkE5MSwgMHg5MkM1LCAweDEyNTQsIDB4OTJDNiwgMHgyQUFGLCAweDkyQzcsIDB4MTI1RCwNCisgICAgMHg5MkM4LCAweDJBQTEsIDB4OTJDOSwgMHgyQUE2LCAweDkyQ0EsIDB4MkFBMCwgMHg5MkNCLCAweDJDRDMsDQorICAgIDB4OTJDQywgMHgyQTlDLCAweDkyQ0QsIDB4MkFBNCwgMHg5MkNFLCAweDJBQTIsIDB4OTJDRiwgMHgyQTk1LA0KKyAgICAweDkyRDAsIDB4MkE4RiwgMHg5MkQxLCAweDJBQUEsIDB4OTJEMiwgMHgxMjVDLCAweDkyRDMsIDB4MkFBQiwNCisgICAgMHg5MkQ1LCAweDJBQTUsIDB4OTJENywgMHgyQTlBLCAweDkyRDgsIDB4MkE5OCwgMHg5MkQ5LCAweDJBOTMsDQorICAgIDB4OTJERCwgMHgyQTlCLCAweDkyREUsIDB4MkFBOCwgMHg5MkRGLCAweDJBOTcsIDB4OTJFMCwgMHgyQUE3LA0KKyAgICAweDkyRTEsIDB4MkFBRCwgMHg5MkU0LCAweDEyNTgsIDB4OTJFNiwgMHgyQUEzLCAweDkyRTcsIDB4MkFBOSwNCisgICAgMHg5MkU4LCAweDJBOUYsIDB4OTJFOSwgMHgyQTk5LCAweDkyRUEsIDB4MTI1NywgMHg5MkVFLCAweDI4M0YsDQorICAgIDB4OTJFRiwgMHgyQTlELCAweDkyRjAsIDB4MTI1RSwgMHg5MkYxLCAweDJBOTYsIDB4OTJGNywgMHgyQ0Q4LA0KKyAgICAweDkyRjgsIDB4MTM3NywgMHg5MkY5LCAweDJDRDcsIDB4OTJGQSwgMHgyQ0Q1LCAweDkyRkIsIDB4MkNFNywNCisgICAgMHg5MkZDLCAweDEzN0IsIDB4OTJGRSwgMHgyQ0U0LCAweDkyRkYsIDB4MkNEQywgMHg5MzAwLCAweDJDRTYsDQorICAgIDB4OTMwMSwgMHgyQ0NFLCAweDkzMDIsIDB4MkNEQSwgMHg5MzA0LCAweDEzN0QsIDB4OTMwNiwgMHgyQ0M2LA0KKyAgICAweDkzMDgsIDB4MkNDNCwgMHg5MzA5LCAweDJDRTUsIDB4OTMwQiwgMHgyQ0UzLCAweDkzMEMsIDB4MkNFMiwNCisgICAgMHg5MzBELCAweDJDRDIsIDB4OTMwRSwgMHgyQ0QxLCAweDkzMEYsIDB4MkNDNywgMHg5MzEwLCAweDEzN0YsDQorICAgIDB4OTMxMiwgMHgyQ0NELCAweDkzMTMsIDB4MkNENiwgMHg5MzE0LCAweDJDRTEsIDB4OTMxNSwgMHgxMzgyLA0KKyAgICAweDkzMTYsIDB4MkNFOCwgMHg5MzE4LCAweDE0QTMsIDB4OTMxOSwgMHgxMzg0LCAweDkzMUEsIDB4MTM3RSwNCisgICAgMHg5MzFCLCAweDJDQ0IsIDB4OTMxRCwgMHgyQ0Q0LCAweDkzMUUsIDB4MkNDMywgMHg5MzFGLCAweDJDQzUsDQorICAgIDB4OTMyMCwgMHgxMzc1LCAweDkzMjEsIDB4MTM4MSwgMHg5MzIyLCAweDEzN0EsIDB4OTMyMywgMHgyQ0NDLA0KKyAgICAweDkzMjQsIDB4MkNEQiwgMHg5MzI1LCAweDJBQUUsIDB4OTMyNiwgMHgxMzgwLCAweDkzMjcsIDB4MkNDMiwNCisgICAgMHg5MzI4LCAweDE0OUUsIDB4OTMyOSwgMHgyQ0RELCAweDkzMkEsIDB4MkNFMCwgMHg5MzJCLCAweDEzN0MsDQorICAgIDB4OTMyRCwgMHgyQ0QwLCAweDkzMkUsIDB4MTM4MywgMHg5MzJGLCAweDEzNzksIDB4OTMzMywgMHgxMzc4LA0KKyAgICAweDkzMzQsIDB4MkNEOSwgMHg5MzM1LCAweDJDREYsIDB4OTMzNiwgMHgxMzc2LCAweDkzMzgsIDB4MkNDOSwNCisgICAgMHg5MzM5LCAweDJDREUsIDB4OTMzQywgMHgyQ0NBLCAweDkzNDYsIDB4MkNDRiwgMHg5MzQ3LCAweDJFOEQsDQorICAgIDB4OTM0OSwgMHgyRTkyLCAweDkzNEEsIDB4MTRBMCwgMHg5MzRCLCAweDE0QTIsIDB4OTM0QywgMHgyRTk4LA0KKyAgICAweDkzNEQsIDB4MTQ5QywgMHg5MzRFLCAweDJFQTYsIDB4OTM0RiwgMHgyRTlFLCAweDkzNTAsIDB4MkU5MywNCisgICAgMHg5MzUxLCAweDJFOTQsIDB4OTM1MiwgMHgyRTlELCAweDkzNTQsIDB4MTRBOSwgMHg5MzU1LCAweDJFOUMsDQorICAgIDB4OTM1NiwgMHgyRThDLCAweDkzNTcsIDB4MkU5QiwgMHg5MzU4LCAweDJFOEYsIDB4OTM1OSwgMHgyRUE3LA0KKyAgICAweDkzNUEsIDB4MTRBOCwgMHg5MzVCLCAweDE0QTYsIDB4OTM1QywgMHgyRTkwLCAweDkzNUUsIDB4MkVBMywNCisgICAgMHg5MzYwLCAweDJFOTUsIDB4OTM2MSwgMHgyRUEyLCAweDkzNjMsIDB4MkVBNCwgMHg5MzY0LCAweDJFOEIsDQorICAgIDB4OTM2NSwgMHgxNEExLCAweDkzNjcsIDB4MkVBNSwgMHg5MzZBLCAweDJFOTksIDB4OTM2QywgMHgxNEE1LA0KKyAgICAweDkzNkQsIDB4MkU5NiwgMHg5MzcwLCAweDE0QTcsIDB4OTM3MSwgMHgyRTlGLCAweDkzNzUsIDB4MTQ5RiwNCisgICAgMHg5Mzc2LCAweDJFOTEsIDB4OTM3NywgMHgyRUEwLCAweDkzNzksIDB4MkU5QSwgMHg5MzdBLCAweDJDQzgsDQorICAgIDB4OTM3QiwgMHgyRUExLCAweDkzN0MsIDB4MkU4RSwgMHg5MzdFLCAweDE0QTQsIDB4OTM4MCwgMHgzMDE0LA0KKyAgICAweDkzODIsIDB4MTQ5RCwgMHg5MzgzLCAweDJFODksIDB4OTM4OCwgMHgzMDExLCAweDkzODksIDB4MzAwQSwNCisgICAgMHg5MzhBLCAweDE1NDAsIDB4OTM4QywgMHgzMDA1LCAweDkzOEQsIDB4MzAxNSwgMHg5MzhFLCAweDMwMEMsDQorICAgIDB4OTM4RiwgMHgyRTk3LCAweDkzOTEsIDB4MzAxNywgMHg5MzkyLCAweDMwMDYsIDB4OTM5NCwgMHgxNTNGLA0KKyAgICAweDkzOTUsIDB4MzAxMCwgMHg5Mzk2LCAweDE1NDEsIDB4OTM5NywgMHgxNTQ5LCAweDkzOTgsIDB4MTU0NywNCisgICAgMHg5Mzk5LCAweDMwMTIsIDB4OTM5QSwgMHgxNTQ4LCAweDkzOUIsIDB4MzAwOCwgMHg5MzlELCAweDMwMDksDQorICAgIDB4OTM5RSwgMHgzMDBFLCAweDkzOUYsIDB4MzAxMywgMHg5M0ExLCAweDJFODgsIDB4OTNBMiwgMHgxNTQyLA0KKyAgICAweDkzQTMsIDB4MzAxQywgMHg5M0E0LCAweDMwMTksIDB4OTNBNSwgMHgzMTYwLCAweDkzQTYsIDB4MzAwRiwNCisgICAgMHg5M0E3LCAweDMwMEIsIDB4OTNBOCwgMHgzMDFBLCAweDkzQTksIDB4MzE1NSwgMHg5M0FBLCAweDMwMEQsDQorICAgIDB4OTNBQywgMHgxNTQ1LCAweDkzQUUsIDB4MTU0NCwgMHg5M0FGLCAweDJFOEEsIDB4OTNCMCwgMHgxNTQ2LA0KKyAgICAweDkzQjEsIDB4MzAxNiwgMHg5M0IyLCAweDMwMTgsIDB4OTNCMywgMHgxNTQzLCAweDkzQjQsIDB4MzAxQiwNCisgICAgMHg5M0I1LCAweDMwMDQsIDB4OTNCNywgMHgzMDA3LCAweDkzQzAsIDB4MzE1RSwgMHg5M0MyLCAweDMxNEUsDQorICAgIDB4OTNDMywgMHgxNUUwLCAweDkzQzQsIDB4MzE1QywgMHg5M0M3LCAweDMxNEMsIDB4OTNDOCwgMHgxNUUxLA0KKyAgICAweDkzQ0EsIDB4MzE1NywgMHg5M0NDLCAweDMxNTMsIDB4OTNDRCwgMHgxNUU2LCAweDkzQ0UsIDB4MzE1RCwNCisgICAgMHg5M0NGLCAweDMxNEQsIDB4OTNEMCwgMHgzMTUwLCAweDkzRDEsIDB4MTVERSwgMHg5M0QyLCAweDMxNUYsDQorICAgIDB4OTNENCwgMHgzMTU4LCAweDkzRDUsIDB4MzE1QiwgMHg5M0Q2LCAweDE1RTQsIDB4OTNENywgMHgxNUU5LA0KKyAgICAweDkzRDgsIDB4MTVFNywgMHg5M0Q5LCAweDMxNTQsIDB4OTNEQSwgMHgzMTRGLCAweDkzREMsIDB4MTVFMiwNCisgICAgMHg5M0RELCAweDE1RTMsIDB4OTNERSwgMHgzMTRCLCAweDkzREYsIDB4MTVERiwgMHg5M0UxLCAweDE1REQsDQorICAgIDB4OTNFMiwgMHgxNUU1LCAweDkzRTMsIDB4MzE1QSwgMHg5M0U0LCAweDE1RTgsIDB4OTNFNiwgMHgzMTU2LA0KKyAgICAweDkzRTcsIDB4MzE2MSwgMHg5M0U4LCAweDE1RUEsIDB4OTNFQywgMHgzMTUyLCAweDkzRUUsIDB4MzE1OSwNCisgICAgMHg5M0Y1LCAweDMyNUEsIDB4OTNGNiwgMHgzMjY5LCAweDkzRjcsIDB4MzI1QywgMHg5M0Y4LCAweDMyNjMsDQorICAgIDB4OTNGOSwgMHgzMTUxLCAweDkzRkEsIDB4MzI2MSwgMHg5M0ZCLCAweDMyNTAsIDB4OTNGQywgMHgzMjY3LA0KKyAgICAweDkzRkQsIDB4MTY1NCwgMHg5M0ZFLCAweDMyNTQsIDB4OTNGRiwgMHgzMjY2LCAweDk0MDAsIDB4MzI1QiwNCisgICAgMHg5NDAzLCAweDE2NTMsIDB4OTQwNiwgMHgzMjZCLCAweDk0MDcsIDB4MzI1RCwgMHg5NDA5LCAweDMyNjIsDQorICAgIDB4OTQwQSwgMHgzMjY1LCAweDk0MEIsIDB4MzI0RSwgMHg5NDBDLCAweDMyNjgsIDB4OTQwRCwgMHgzMjU5LA0KKyAgICAweDk0MEUsIDB4MzI1RSwgMHg5NDBGLCAweDMyNTIsIDB4OTQxMCwgMHgzMjU2LCAweDk0MTEsIDB4MzI2QSwNCisgICAgMHg5NDEyLCAweDMyNjAsIDB4OTQxMywgMHgzMjRGLCAweDk0MTQsIDB4MzI1MywgMHg5NDE1LCAweDMyNTUsDQorICAgIDB4OTQxNiwgMHgzMjVGLCAweDk0MTgsIDB4MTY1MiwgMHg5NDE5LCAweDMyNTgsIDB4OTQyMCwgMHgzMjUxLA0KKyAgICAweDk0MjgsIDB4MzI1NywgMHg5NDI5LCAweDMzMjUsIDB4OTQyQSwgMHgzMzI5LCAweDk0MkIsIDB4MTY5RiwNCisgICAgMHg5NDJDLCAweDMzMkIsIDB4OTQyRSwgMHgxNjk5LCAweDk0MzAsIDB4MzMyNywgMHg5NDMxLCAweDMzMkQsDQorICAgIDB4OTQzMiwgMHgxNjlFLCAweDk0MzMsIDB4MTY5QSwgMHg5NDM1LCAweDE2OUIsIDB4OTQzNiwgMHgzMzI0LA0KKyAgICAweDk0MzcsIDB4MzMyQSwgMHg5NDM4LCAweDE2OUQsIDB4OTQzOSwgMHgzMzI4LCAweDk0M0EsIDB4MTY5QywNCisgICAgMHg5NDNCLCAweDMzMjMsIDB4OTQzQywgMHgzMjY0LCAweDk0M0QsIDB4MzMyNiwgMHg5NDNGLCAweDMzMjIsDQorICAgIDB4OTQ0MCwgMHgzMzJDLCAweDk0NDQsIDB4MTZERiwgMHg5NDQ1LCAweDMzQ0QsIDB4OTQ0NiwgMHgzM0QwLA0KKyAgICAweDk0NDcsIDB4MzNDQywgMHg5NDQ4LCAweDMzQ0UsIDB4OTQ0OSwgMHgzM0NGLCAweDk0NEEsIDB4MzNDOSwNCisgICAgMHg5NDRCLCAweDMzQ0EsIDB4OTQ0QywgMHgzM0M3LCAweDk0NEYsIDB4MzNDQiwgMHg5NDUwLCAweDMzQzgsDQorICAgIDB4OTQ1MSwgMHgxNkUwLCAweDk0NTIsIDB4MTZFMSwgMHg5NDU1LCAweDM0NDgsIDB4OTQ1NywgMHgzNDRBLA0KKyAgICAweDk0NUQsIDB4MzQ0OSwgMHg5NDVFLCAweDM0NEIsIDB4OTQ2MCwgMHgxNzBFLCAweDk0NjIsIDB4MzQ0NywNCisgICAgMHg5NDYzLCAweDE3MEQsIDB4OTQ2NCwgMHgxNzBGLCAweDk0NjgsIDB4MzRBNiwgMHg5NDY5LCAweDM0QTcsDQorICAgIDB4OTQ2QSwgMHgxNzMxLCAweDk0NkIsIDB4MzRBNSwgMHg5NDZELCAweDM0RUQsIDB4OTQ2RSwgMHgzNEVDLA0KKyAgICAweDk0NkYsIDB4MzRFRSwgMHg5NDcwLCAweDE3NEMsIDB4OTQ3MSwgMHgzNEVGLCAweDk0NzIsIDB4MTc0QiwNCisgICAgMHg5NDczLCAweDM0RjAsIDB4OTQ3NCwgMHgzNTBDLCAweDk0NzUsIDB4MzUwRiwgMHg5NDc2LCAweDM1MEUsDQorICAgIDB4OTQ3NywgMHgxNzU1LCAweDk0NzgsIDB4MzUwRCwgMHg5NDdDLCAweDE3NUYsIDB4OTQ3RCwgMHgxNzVELA0KKyAgICAweDk0N0UsIDB4MTc1RSwgMHg5NDdGLCAweDE3NjQsIDB4OTQ4MCwgMHgzNTM5LCAweDk0ODEsIDB4MzUzQSwNCisgICAgMHg5NDgyLCAweDM1MzgsIDB4OTQ4MywgMHgzNTQwLCAweDk1NzcsIDB4MDY5NywgMHg5NTdBLCAweDIwQTEsDQorICAgIDB4OTU3QiwgMHgyMzRBLCAweDk1N0MsIDB4MkFCMSwgMHg5NTdELCAweDMxNjIsIDB4OTU4MCwgMHgwNjk4LA0KKyAgICAweDk1ODIsIDB4MDgyMSwgMHg5NTgzLCAweDA5RUEsIDB4OTU4NiwgMHgyMEEyLCAweDk1ODgsIDB4MjBBMywNCisgICAgMHg5NTg5LCAweDBCRDAsIDB4OTU4QiwgMHgwRDlBLCAweDk1OEMsIDB4MjM0QywgMHg5NThELCAweDIzNEIsDQorICAgIDB4OTU4RSwgMHgwRDlFLCAweDk1OEYsIDB4MEQ5OSwgMHg5NTkwLCAweDIzNEQsIDB4OTU5MSwgMHgwRDlCLA0KKyAgICAweDk1OTIsIDB4MEQ5RCwgMHg5NTkzLCAweDBEOUMsIDB4OTU5NCwgMHgwRDk4LCAweDk1OTgsIDB4MEY1QywNCisgICAgMHg5NTlCLCAweDI1RjMsIDB4OTU5QywgMHgyNUYxLCAweDk1OUUsIDB4MjVGMiwgMHg5NTlGLCAweDI1RjAsDQorICAgIDB4OTVBMSwgMHgxMERGLCAweDk1QTMsIDB4MTBFMiwgMHg5NUE0LCAweDEwRTQsIDB4OTVBNSwgMHgxMEUzLA0KKyAgICAweDk1QTgsIDB4MTBFMCwgMHg5NUE5LCAweDEwRTEsIDB4OTVBQiwgMHgyQUIzLCAweDk1QUMsIDB4MkFCMiwNCisgICAgMHg5NUFELCAweDEyNjAsIDB4OTVBRSwgMHgyQUI0LCAweDk1QjAsIDB4MkFCNSwgMHg5NUIxLCAweDEyNjEsDQorICAgIDB4OTVCNSwgMHgyQ0YwLCAweDk1QjYsIDB4MkNFRSwgMHg5NUI3LCAweDJFQUQsIDB4OTVCOSwgMHgyQ0VDLA0KKyAgICAweDk1QkEsIDB4MkNFRCwgMHg5NUJCLCAweDEzODUsIDB4OTVCQywgMHgyQ0U5LCAweDk1QkQsIDB4MkNGMSwNCisgICAgMHg5NUJFLCAweDJDRUIsIDB4OTVCRiwgMHgyQ0VGLCAweDk1QzAsIDB4MkVBOSwgMHg5NUMzLCAweDJFQUIsDQorICAgIDB4OTVDNSwgMHgyRUFDLCAweDk1QzYsIDB4MTRBRSwgMHg5NUM3LCAweDJFQTgsIDB4OTVDOCwgMHgxNEFELA0KKyAgICAweDk1QzksIDB4MkVBQSwgMHg5NUNBLCAweDE0QUEsIDB4OTVDQiwgMHgxNEFCLCAweDk1Q0MsIDB4MTRBQywNCisgICAgMHg5NUNELCAweDJDRUEsIDB4OTVEMCwgMHgxNTRDLCAweDk1RDEsIDB4MzAxRiwgMHg5NUQyLCAweDMwMUQsDQorICAgIDB4OTVEMywgMHgzMDFFLCAweDk1RDQsIDB4MTU0QSwgMHg5NUQ1LCAweDE1NEQsIDB4OTVENiwgMHgxNTRCLA0KKyAgICAweDk1REEsIDB4MzE2MywgMHg5NURCLCAweDMxNjQsIDB4OTVEQywgMHgxNUVCLCAweDk1REUsIDB4MzI2QywNCisgICAgMHg5NURGLCAweDMyNkUsIDB4OTVFMCwgMHgzMjZELCAweDk1RTEsIDB4MTY1NSwgMHg5NUUyLCAweDE2QTAsDQorICAgIDB4OTVFMywgMHgzMzMwLCAweDk1RTQsIDB4MzMyRiwgMHg5NUU1LCAweDMzMkUsIDB4OTYxQywgMHgwNjk5LA0KKyAgICAweDk2MUUsIDB4MTdCNCwgMHg5NjIwLCAweDE4MjEsIDB4OTYyMSwgMHgwNDE0LCAweDk2MjIsIDB4MTgxRiwNCisgICAgMHg5NjIzLCAweDE4MjIsIDB4OTYyNCwgMHgxODIwLCAweDk2MjgsIDB4MThGMSwgMHg5NjJBLCAweDA1MjYsDQorICAgIDB4OTYyQywgMHgwNTI3LCAweDk2MkQsIDB4MThGMywgMHg5NjJFLCAweDA1MjQsIDB4OTYyRiwgMHgxOEYyLA0KKyAgICAweDk2MzAsIDB4MThGMCwgMHg5NjMxLCAweDA1MjUsIDB4OTYzMiwgMHgwNTIzLCAweDk2MzksIDB4MUE1NSwNCisgICAgMHg5NjNBLCAweDFBNTgsIDB4OTYzQiwgMHgwNjlDLCAweDk2M0MsIDB4MUE1NywgMHg5NjNELCAweDFBNTYsDQorICAgIDB4OTYzRiwgMHgwNjlCLCAweDk2NDAsIDB4MDY5QSwgMHg5NjQyLCAweDA2OUUsIDB4OTY0MywgMHgxQTU5LA0KKyAgICAweDk2NDQsIDB4MDY5RCwgMHg5NjRBLCAweDFDMUEsIDB4OTY0QiwgMHgwODIzLCAweDk2NEMsIDB4MDgyNCwNCisgICAgMHg5NjRELCAweDA4MjUsIDB4OTY0RSwgMHgxQzFCLCAweDk2NEYsIDB4MUMxNywgMHg5NjUwLCAweDA4MjIsDQorICAgIDB4OTY1MSwgMHgxQzE4LCAweDk2NTMsIDB4MUMxOSwgMHg5NjU0LCAweDFDMTYsIDB4OTY1OCwgMHgwOUYxLA0KKyAgICAweDk2NUIsIDB4MDlFRSwgMHg5NjVDLCAweDFFMkYsIDB4OTY1RCwgMHgwOUVGLCAweDk2NUUsIDB4MDlGMiwNCisgICAgMHg5NjVGLCAweDFFMzAsIDB4OTY2MSwgMHgwOUVELCAweDk2NjIsIDB4MDlFQiwgMHg5NjYzLCAweDA5RUMsDQorICAgIDB4OTY2NCwgMHgwOUYwLCAweDk2NkEsIDB4MEJEMSwgMHg5NjZCLCAweDIwQTYsIDB4OTY2QywgMHgwQkQ5LA0KKyAgICAweDk2NkQsIDB4MjBBNSwgMHg5NjZGLCAweDIwQTgsIDB4OTY3MCwgMHgwQkQ1LCAweDk2NzEsIDB4MjBBNywNCisgICAgMHg5NjcyLCAweDBEQTYsIDB4OTY3MywgMHgwQkQzLCAweDk2NzQsIDB4MEJENiwgMHg5Njc1LCAweDBCRDIsDQorICAgIDB4OTY3NiwgMHgwQkQ3LCAweDk2NzcsIDB4MEJEOCwgMHg5Njc4LCAweDBCRDQsIDB4OTY3QywgMHgyMEE0LA0KKyAgICAweDk2N0QsIDB4MERBMiwgMHg5NjdFLCAweDIzNEYsIDB4OTY4MCwgMHgyMzUzLCAweDk2ODMsIDB4MjM1MiwNCisgICAgMHg5Njg0LCAweDBEQTcsIDB4OTY4NSwgMHgwREEzLCAweDk2ODYsIDB4MERBNCwgMHg5Njg3LCAweDIzNEUsDQorICAgIDB4OTY4OCwgMHgyMzUwLCAweDk2ODksIDB4MjM1MSwgMHg5NjhBLCAweDBEOUYsIDB4OTY4QiwgMHgwREExLA0KKyAgICAweDk2OEQsIDB4MERBNSwgMHg5NjhFLCAweDBEQTAsIDB4OTY5MSwgMHgyNUY2LCAweDk2OTIsIDB4MjVGNCwNCisgICAgMHg5NjkzLCAweDI1RjUsIDB4OTY5NCwgMHgwRjVFLCAweDk2OTUsIDB4MEY1RiwgMHg5Njk3LCAweDI1RjcsDQorICAgIDB4OTY5OCwgMHgwRjVELCAweDk2OTksIDB4MTBFNSwgMHg5NjlCLCAweDEwRTcsIDB4OTY5QywgMHgxMEU2LA0KKyAgICAweDk2OUUsIDB4Mjg1MiwgMHg5NkExLCAweDI4NTMsIDB4OTZBMiwgMHgyQUI3LCAweDk2QTQsIDB4MkFCNiwNCisgICAgMHg5NkE3LCAweDEzODYsIDB4OTZBOCwgMHgxMzg3LCAweDk2QTksIDB4MkNGMiwgMHg5NkFBLCAweDEzODgsDQorICAgIDB4OTZBQywgMHgyRUIwLCAweDk2QUUsIDB4MkVBRSwgMHg5NkIwLCAweDJFQUYsIDB4OTZCMSwgMHgxNEFGLA0KKyAgICAweDk2QjMsIDB4MzAyMCwgMHg5NkI0LCAweDE1RUMsIDB4OTZCNiwgMHgwMjMxLCAweDk2QjgsIDB4MTRCMCwNCisgICAgMHg5NkI5LCAweDA2OUYsIDB4OTZCQiwgMHgwOUYzLCAweDk2QkMsIDB4MUUzMSwgMHg5NkJGLCAweDIwQTksDQorICAgIDB4OTZDMCwgMHgwQkRBLCAweDk2QzEsIDB4MERBOCwgMHg5NkMyLCAweDIzNTQsIDB4OTZDMywgMHgyMzU2LA0KKyAgICAweDk2QzQsIDB4MERBQSwgMHg5NkM1LCAweDBEQTksIDB4OTZDNiwgMHgwREFCLCAweDk2QzcsIDB4MERBQywNCisgICAgMHg5NkM4LCAweDIzNTUsIDB4OTZDOSwgMHgwRjYyLCAweDk2Q0EsIDB4MEY2MywgMHg5NkNCLCAweDBGNjEsDQorICAgIDB4OTZDQywgMHgxMEU4LCAweDk2Q0QsIDB4MEY2MCwgMHg5NkNFLCAweDI1RjgsIDB4OTZEMiwgMHgxMEU5LA0KKyAgICAweDk2RDMsIDB4MkFCOCwgMHg5NkQ0LCAweDJDRjMsIDB4OTZENSwgMHgxMzg5LCAweDk2RDYsIDB4MTRCMSwNCisgICAgMHg5NkQ3LCAweDMwMjEsIDB4OTZEOCwgMHgzMDI1LCAweDk2RDksIDB4MTU1MCwgMHg5NkRBLCAweDMwMjIsDQorICAgIDB4OTZEQiwgMHgxNTUxLCAweDk2REMsIDB4MTU0RiwgMHg5NkRELCAweDMwMjYsIDB4OTZERSwgMHgxNTUyLA0KKyAgICAweDk2REYsIDB4MzAyNCwgMHg5NkUxLCAweDMxNjUsIDB4OTZFMiwgMHgxNTRFLCAweDk2RTMsIDB4MTVFRCwNCisgICAgMHg5NkU1LCAweDM0QTgsIDB4OTZFOCwgMHgwNkEwLCAweDk2RTksIDB4MEJEQywgMHg5NkVBLCAweDBCREIsDQorICAgIDB4OTZFRiwgMHgwREFELCAweDk2RjAsIDB4MjM1OCwgMHg5NkYxLCAweDIzNTcsIDB4OTZGMiwgMHgwREFFLA0KKyAgICAweDk2RjUsIDB4MjVGQywgMHg5NkY2LCAweDBGNjcsIDB4OTZGNywgMHgwRjY0LCAweDk2RjgsIDB4MjVGQiwNCisgICAgMHg5NkY5LCAweDBGNjYsIDB4OTZGQSwgMHgyNUY5LCAweDk2RkIsIDB4MEY2NSwgMHg5NkZELCAweDI1RkEsDQorICAgIDB4OTZGRiwgMHgyODU0LCAweDk3MDAsIDB4MTBFQSwgMHg5NzAyLCAweDJBQkIsIDB4OTcwNCwgMHgxMjYyLA0KKyAgICAweDk3MDUsIDB4MkFCOSwgMHg5NzA2LCAweDEyNjMsIDB4OTcwNywgMHgxMjY0LCAweDk3MDgsIDB4MkFCQSwNCisgICAgMHg5NzA5LCAweDEyNjUsIDB4OTcwQiwgMHgyQ0Y0LCAweDk3MEQsIDB4MTM4RCwgMHg5NzBFLCAweDEzOEEsDQorICAgIDB4OTcwRiwgMHgxMzhGLCAweDk3MTAsIDB4MkNGNiwgMHg5NzExLCAweDEzOEIsIDB4OTcxMiwgMHgyQ0Y1LA0KKyAgICAweDk3MTMsIDB4MTM4RSwgMHg5NzE2LCAweDEzOEMsIDB4OTcxOCwgMHgyRUIzLCAweDk3MTksIDB4MkVCNSwNCisgICAgMHg5NzFDLCAweDE0QjIsIDB4OTcxRCwgMHgyRUI0LCAweDk3MUUsIDB4MTRCMywgMHg5NzFGLCAweDJFQjIsDQorICAgIDB4OTcyMCwgMHgyRUIxLCAweDk3MjIsIDB4MzAyOCwgMHg5NzIzLCAweDMwMjcsIDB4OTcyNCwgMHgxNTUzLA0KKyAgICAweDk3MjUsIDB4MzAyOSwgMHg5NzI2LCAweDMxNkEsIDB4OTcyNywgMHgxNUVGLCAweDk3MjgsIDB4MzE2OSwNCisgICAgMHg5NzI5LCAweDMxNjYsIDB4OTcyQSwgMHgxNUVFLCAweDk3MkIsIDB4MzE2NywgMHg5NzJDLCAweDMxNjgsDQorICAgIDB4OTcyRSwgMHgzMjZGLCAweDk3MkYsIDB4MzI3MCwgMHg5NzMwLCAweDE2NTYsIDB4OTczMiwgMHgxNkEzLA0KKyAgICAweDk3MzUsIDB4MzMzMSwgMHg5NzM4LCAweDE2QTEsIDB4OTczOSwgMHgxNkEyLCAweDk3M0EsIDB4MzMzMiwNCisgICAgMHg5NzNELCAweDE2RTIsIDB4OTczRSwgMHgxNkUzLCAweDk3M0YsIDB4MzNEMSwgMHg5NzQyLCAweDE3MzIsDQorICAgIDB4OTc0MywgMHgzNEFBLCAweDk3NDQsIDB4MTczNCwgMHg5NzQ2LCAweDM0QTksIDB4OTc0NywgMHgzNEFCLA0KKyAgICAweDk3NDgsIDB4MTczMywgMHg5NzQ5LCAweDM0RjEsIDB4OTc0QiwgMHgzNTI2LCAweDk3NTIsIDB4MDZBMSwNCisgICAgMHg5NzU2LCAweDBGNjgsIDB4OTc1OCwgMHgyODU1LCAweDk3NUEsIDB4MkFCQywgMHg5NzVCLCAweDEzOTAsDQorICAgIDB4OTc1QywgMHgxMzkxLCAweDk3NUUsIDB4MDZBMiwgMHg5NzYwLCAweDEyNjYsIDB4OTc2MSwgMHgxNUYwLA0KKyAgICAweDk3NjIsIDB4MDgyNiwgMHg5NzY2LCAweDEzOTIsIDB4OTc2OCwgMHgxNzEwLCAweDk3NjksIDB4MDgyNywNCisgICAgMHg5NzZBLCAweDIwQUEsIDB4OTc2QywgMHgyMzU5LCAweDk3NkUsIDB4MjM1QiwgMHg5NzcwLCAweDIzNUEsDQorICAgIDB4OTc3MiwgMHgyNjAwLCAweDk3NzMsIDB4MjVGRCwgMHg5Nzc0LCAweDBGNjksIDB4OTc3NiwgMHgwRjZBLA0KKyAgICAweDk3NzcsIDB4MjVGRSwgMHg5Nzc4LCAweDI1RkYsIDB4OTc3QSwgMHgyODU3LCAweDk3N0IsIDB4Mjg1QywNCisgICAgMHg5NzdDLCAweDEwRUIsIDB4OTc3RCwgMHgyODU2LCAweDk3N0UsIDB4Mjg1OCwgMHg5NzdGLCAweDI4NUYsDQorICAgIDB4OTc4MCwgMHgyODVBLCAweDk3ODEsIDB4Mjg1RSwgMHg5NzgyLCAweDI4NUIsIDB4OTc4MywgMHgyODU5LA0KKyAgICAweDk3ODQsIDB4Mjg1RCwgMHg5Nzg1LCAweDEwRUMsIDB4OTc4OCwgMHgyQUJGLCAweDk3OEEsIDB4MkFCRCwNCisgICAgMHg5NzhCLCAweDEyNjgsIDB4OTc4RCwgMHgxMjY3LCAweDk3OEUsIDB4MkFCRSwgMHg5NzhGLCAweDEyNjksDQorICAgIDB4OTc5NCwgMHgyQ0Y5LCAweDk3OTcsIDB4MkNGOCwgMHg5Nzk4LCAweDEzOTMsIDB4OTc5OSwgMHgyQ0Y3LA0KKyAgICAweDk3OUEsIDB4MkVCNiwgMHg5NzlDLCAweDJFQjgsIDB4OTc5RCwgMHgyRUJBLCAweDk3OUUsIDB4MkVCOSwNCisgICAgMHg5N0EwLCAweDE0QjQsIDB4OTdBMSwgMHgyRUI3LCAweDk3QTIsIDB4MzAzMCwgMHg5N0EzLCAweDE1NTQsDQorICAgIDB4OTdBNCwgMHgzMDJFLCAweDk3QTUsIDB4MzAzMSwgMHg5N0E2LCAweDE1NTUsIDB4OTdBOCwgMHgzMDJDLA0KKyAgICAweDk3QUEsIDB4MzAyRiwgMHg5N0FCLCAweDMwMkQsIDB4OTdBQywgMHgzMDJBLCAweDk3QUQsIDB4MTU1NiwNCisgICAgMHg5N0FFLCAweDMwMkIsIDB4OTdCMywgMHgzMTZCLCAweDk3QjYsIDB4MzE2RCwgMHg5N0I3LCAweDMxNkMsDQorICAgIDB4OTdCOSwgMHgzMjcxLCAweDk3QkIsIDB4MzI3MiwgMHg5N0JGLCAweDMzMzMsIDB4OTdDMSwgMHgxNkU1LA0KKyAgICAweDk3QzMsIDB4MTZFNCwgMHg5N0M0LCAweDM0NEMsIDB4OTdDNSwgMHgzNDRELCAweDk3QzYsIDB4MTczNSwNCisgICAgMHg5N0M3LCAweDM0QUMsIDB4OTdDOSwgMHgxNzU2LCAweDk3Q0IsIDB4MDgyOCwgMHg5N0NDLCAweDBEQUYsDQorICAgIDB4OTdDRCwgMHgyODYxLCAweDk3Q0UsIDB4Mjg2MCwgMHg5N0NGLCAweDJBQzEsIDB4OTdEMCwgMHgyQUMwLA0KKyAgICAweDk3RDMsIDB4MTRCNSwgMHg5N0Q0LCAweDJFQkMsIDB4OTdENSwgMHgyRUJCLCAweDk3RDYsIDB4MzAzNCwNCisgICAgMHg5N0Q3LCAweDMwMzIsIDB4OTdEOCwgMHgzMDM1LCAweDk3RDksIDB4MzAzMywgMHg5N0RDLCAweDE1RjEsDQorICAgIDB4OTdERCwgMHgzMTZFLCAweDk3REUsIDB4MzE2RiwgMHg5N0RGLCAweDMxNzAsIDB4OTdFMSwgMHgzMzM0LA0KKyAgICAweDk3RTMsIDB4MzNEMiwgMHg5N0U1LCAweDM0QUQsIDB4OTdFRCwgMHgwODI5LCAweDk3RjAsIDB4MkNGQSwNCisgICAgMHg5N0YxLCAweDJFQkQsIDB4OTdGMywgMHgwODJBLCAweDk3RjYsIDB4MTBFRCwgMHg5N0Y4LCAweDJDRkIsDQorICAgIDB4OTdGOSwgMHgxNTU3LCAweDk3RkEsIDB4MzAzNiwgMHg5N0ZCLCAweDE1RjIsIDB4OTdGRCwgMHgzMjczLA0KKyAgICAweDk3RkUsIDB4MzI3NCwgMHg5N0ZGLCAweDE2QTQsIDB4OTgwMCwgMHgzNDRFLCAweDk4MDEsIDB4MDgyQiwNCisgICAgMHg5ODAyLCAweDBCREYsIDB4OTgwMywgMHgwQkUwLCAweDk4MDQsIDB4MjBBQiwgMHg5ODA1LCAweDBEQjAsDQorICAgIDB4OTgwNiwgMHgwREIxLCAweDk4MDcsIDB4MjM1QywgMHg5ODA4LCAweDBEQjIsIDB4OTgwQSwgMHgwRjZFLA0KKyAgICAweDk4MEMsIDB4MEY3MCwgMHg5ODBELCAweDI2MDIsIDB4OTgwRSwgMHgyNjAzLCAweDk4MEYsIDB4MjYwMSwNCisgICAgMHg5ODEwLCAweDBGNkIsIDB4OTgxMSwgMHgwRjZDLCAweDk4MTIsIDB4MEY2RiwgMHg5ODEzLCAweDBGNkQsDQorICAgIDB4OTgxNiwgMHgyODYyLCAweDk4MTcsIDB4MTBFRSwgMHg5ODE4LCAweDEwRUYsIDB4OTgxQiwgMHgyQUM4LA0KKyAgICAweDk4MUMsIDB4MTI2QywgMHg5ODFELCAweDJBQzMsIDB4OTgxRSwgMHgyQUMyLCAweDk4MjAsIDB4MkFDNywNCisgICAgMHg5ODIxLCAweDEyNkEsIDB4OTgyNCwgMHgxMzlBLCAweDk4MjYsIDB4MkFDNCwgMHg5ODI3LCAweDJBQzksDQorICAgIDB4OTgyOCwgMHgyQUM2LCAweDk4MjksIDB4MkFDNSwgMHg5ODJCLCAweDEyNkIsIDB4OTgyRCwgMHgxMzk4LA0KKyAgICAweDk4MkYsIDB4MkNGRCwgMHg5ODMwLCAweDEzOTQsIDB4OTgzMiwgMHgyQ0ZFLCAweDk4MzUsIDB4MkNGQywNCisgICAgMHg5ODM3LCAweDEzOTcsIDB4OTgzOCwgMHgxMzk1LCAweDk4MzksIDB4MTM5OSwgMHg5ODNCLCAweDEzOTYsDQorICAgIDB4OTg0MSwgMHgyRUJFLCAweDk4NDMsIDB4MkVDMywgMHg5ODQ0LCAweDJFQkYsIDB4OTg0NSwgMHgyRUMyLA0KKyAgICAweDk4NDYsIDB4MTRCNiwgMHg5ODQ4LCAweDJERjIsIDB4OTg0OSwgMHgyRUMxLCAweDk4NEEsIDB4MkVDMCwNCisgICAgMHg5ODRDLCAweDE1NUEsIDB4OTg0RCwgMHgxNTU4LCAweDk4NEUsIDB4MTU1QiwgMHg5ODRGLCAweDE1NTksDQorICAgIDB4OTg1MCwgMHgzMDM3LCAweDk4NTEsIDB4MzAzOCwgMHg5ODUyLCAweDMwMzksIDB4OTg1MywgMHgxNTVDLA0KKyAgICAweDk4NTcsIDB4MzE3NCwgMHg5ODU4LCAweDE1RjQsIDB4OTg1OSwgMHgzMTcyLCAweDk4NUIsIDB4MTVGNSwNCisgICAgMHg5ODVDLCAweDMxNzEsIDB4OTg1RCwgMHgzMTczLCAweDk4NUUsIDB4MTVGMywgMHg5ODVGLCAweDMyNzgsDQorICAgIDB4OTg2MCwgMHgzMjc1LCAweDk4NjIsIDB4MzI3NiwgMHg5ODYzLCAweDMyNzcsIDB4OTg2NCwgMHgzMzM1LA0KKyAgICAweDk4NjUsIDB4MTZBNiwgMHg5ODY3LCAweDE2QTUsIDB4OTg2OSwgMHgzM0Q0LCAweDk4NkEsIDB4MzNEMywNCisgICAgMHg5ODZCLCAweDE2RTYsIDB4OTg2RiwgMHgxNzExLCAweDk4NzAsIDB4MTczNiwgMHg5ODcxLCAweDE3NEQsDQorICAgIDB4OTg3MiwgMHgzNEYyLCAweDk4NzMsIDB4MzUyNywgMHg5ODc0LCAweDM1MjgsIDB4OThBOCwgMHgwODJDLA0KKyAgICAweDk4QTksIDB4MjM1RCwgMHg5OEFDLCAweDI2MDQsIDB4OThBRCwgMHgyODYzLCAweDk4QUUsIDB4Mjg2NCwNCisgICAgMHg5OEFGLCAweDEwRjAsIDB4OThCMSwgMHgxMEYxLCAweDk4QjIsIDB4MkFDQSwgMHg5OEIzLCAweDEyNkQsDQorICAgIDB4OThCNiwgMHgxNEI3LCAweDk4QjgsIDB4MzAzQSwgMHg5OEJBLCAweDE1NUQsIDB4OThCQiwgMHgzMTc3LA0KKyAgICAweDk4QkMsIDB4MTVGNiwgMHg5OEJELCAweDMxNzYsIDB4OThCRSwgMHgzMTc4LCAweDk4QkYsIDB4MzE3NSwNCisgICAgMHg5OEMwLCAweDMzMzgsIDB4OThDMSwgMHgzMjc5LCAweDk4QzIsIDB4MzI3QSwgMHg5OEM0LCAweDE2NTcsDQorICAgIDB4OThDNiwgMHgzMzM3LCAweDk4QzksIDB4MzMzNiwgMHg5OENCLCAweDMzRDUsIDB4OThDQywgMHgzNTI5LA0KKyAgICAweDk4REIsIDB4MDgyRCwgMHg5OERGLCAweDA4MkUsIDB4OThFMiwgMHgwOUY0LCAweDk4RTMsIDB4MUUzMiwNCisgICAgMHg5OEU1LCAweDIwQUMsIDB4OThFNywgMHgwREIzLCAweDk4RTksIDB4MERCNiwgMHg5OEVBLCAweDBEQjQsDQorICAgIDB4OThFQiwgMHgyMzVFLCAweDk4RUQsIDB4MERCOCwgMHg5OEVGLCAweDBEQjUsIDB4OThGMiwgMHgwREI3LA0KKyAgICAweDk4RjQsIDB4MEY3MiwgMHg5OEY2LCAweDI2MDUsIDB4OThGOSwgMHgyNjA2LCAweDk4RkEsIDB4MkFDQywNCisgICAgMHg5OEZDLCAweDBGNzEsIDB4OThGRCwgMHgwRjczLCAweDk4RkUsIDB4MEY3NCwgMHg5OTAwLCAweDI4NjYsDQorICAgIDB4OTkwMiwgMHgyODY1LCAweDk5MDMsIDB4MTBGMiwgMHg5OTA1LCAweDEwRjMsIDB4OTkwNywgMHgyODY3LA0KKyAgICAweDk5MDgsIDB4MkFDQiwgMHg5OTA5LCAweDEwRjUsIDB4OTkwQSwgMHgxMjZFLCAweDk5MEMsIDB4MTBGNCwNCisgICAgMHg5OTEwLCAweDEzOUIsIDB4OTkxMSwgMHgyQUNELCAweDk5MTIsIDB4MTI3MCwgMHg5OTEzLCAweDEyNkYsDQorICAgIDB4OTkxNCwgMHgyQUNFLCAweDk5MTUsIDB4MkFEMSwgMHg5OTE2LCAweDJBQ0YsIDB4OTkxNywgMHgyQUQwLA0KKyAgICAweDk5MTgsIDB4MTI3MSwgMHg5OTFBLCAweDEzQTAsIDB4OTkxQiwgMHgxMzlFLCAweDk5MUUsIDB4MTM5RCwNCisgICAgMHg5OTFGLCAweDJEMDAsIDB4OTkyMSwgMHgxMzlGLCAweDk5MjQsIDB4MkNGRiwgMHg5OTI1LCAweDJFQzQsDQorICAgIDB4OTkyNywgMHgyRDAxLCAweDk5MjgsIDB4MTM5QywgMHg5OTI5LCAweDJEMDIsIDB4OTkyQSwgMHgyRUM3LA0KKyAgICAweDk5MkIsIDB4MkVDNSwgMHg5OTJDLCAweDJFQzYsIDB4OTkyRCwgMHgyRUNCLCAweDk5MkUsIDB4MTU2MSwNCisgICAgMHg5OTJGLCAweDJFQ0EsIDB4OTkzMCwgMHgyRUNELCAweDk5MzEsIDB4MkVDQywgMHg5OTMyLCAweDJFQzksDQorICAgIDB4OTkzMywgMHgyRUM4LCAweDk5MzUsIDB4MTRCOCwgMHg5OTNBLCAweDMwM0QsIDB4OTkzQywgMHgzMDNDLA0KKyAgICAweDk5M0QsIDB4MTU2MCwgMHg5OTNFLCAweDE1NUUsIDB4OTkzRiwgMHgxNTVGLCAweDk5NDEsIDB4MzAzQiwNCisgICAgMHg5OTQzLCAweDMxN0IsIDB4OTk0NSwgMHgxNUY3LCAweDk5NDcsIDB4MzE3QSwgMHg5OTQ4LCAweDMxNzksDQorICAgIDB4OTk0OSwgMHgxNUY4LCAweDk5NEIsIDB4MzI3RiwgMHg5OTRDLCAweDMyN0UsIDB4OTk0RSwgMHgzMjdDLA0KKyAgICAweDk5NTAsIDB4MzI3QiwgMHg5OTUxLCAweDE2NTksIDB4OTk1MiwgMHgxNjU4LCAweDk5NTMsIDB4MzI4MCwNCisgICAgMHg5OTU0LCAweDMzRDYsIDB4OTk1NSwgMHgxNkU3LCAweDk5NTYsIDB4MzMzQSwgMHg5OTU3LCAweDE2QTcsDQorICAgIDB4OTk1OCwgMHgzMzM5LCAweDk5NTksIDB4MzI3RCwgMHg5OTVCLCAweDMzRDcsIDB4OTk1QywgMHgxNzEyLA0KKyAgICAweDk5NUUsIDB4MTc0RSwgMHg5OTVGLCAweDM0RjMsIDB4OTk2MSwgMHgzNTJBLCAweDk5OTYsIDB4MDgyRiwNCisgICAgMHg5OTk3LCAweDIwQUQsIDB4OTk5OCwgMHgyRUNFLCAweDk5OTksIDB4MDgzMCwgMHg5OTlDLCAweDI4NjksDQorICAgIDB4OTk5RCwgMHgyODY4LCAweDk5OUUsIDB4MkQwMywgMHg5OUExLCAweDJFRDAsIDB4OTlBMywgMHgyRUNGLA0KKyAgICAweDk5QTUsIDB4MTU2MiwgMHg5OUE2LCAweDMxN0MsIDB4OTlBNywgMHgzMTdELCAweDk5QTgsIDB4MTY1QSwNCisgICAgMHg5OUFCLCAweDM1MkIsIDB4OTlBQywgMHgwOUY1LCAweDk5QUQsIDB4MERCQSwgMHg5OUFFLCAweDBEQjksDQorICAgIDB4OTlBRiwgMHgyNjA3LCAweDk5QjAsIDB4MjYwOSwgMHg5OUIxLCAweDBGNzYsIDB4OTlCMiwgMHgyNjA4LA0KKyAgICAweDk5QjMsIDB4MEY3NSwgMHg5OUI0LCAweDBGNzcsIDB4OTlCNSwgMHgyNjBBLCAweDk5QjksIDB4Mjg2QiwNCisgICAgMHg5OUJBLCAweDI4NkQsIDB4OTlCQiwgMHgyODZDLCAweDk5QkQsIDB4Mjg2RiwgMHg5OUMxLCAweDEwRjYsDQorICAgIDB4OTlDMiwgMHgyODZFLCAweDk5QzMsIDB4Mjg2QSwgMHg5OUM3LCAweDI4NzAsIDB4OTlDOSwgMHgyQUQ4LA0KKyAgICAweDk5Q0IsIDB4MkFEQiwgMHg5OUNDLCAweDJBREQsIDB4OTlDRCwgMHgyQUQzLCAweDk5Q0UsIDB4MkFENywNCisgICAgMHg5OUNGLCAweDJBRDQsIDB4OTlEMCwgMHgxMjczLCAweDk5RDEsIDB4MTI3NiwgMHg5OUQyLCAweDEyNzgsDQorICAgIDB4OTlEMywgMHgyQUQ1LCAweDk5RDQsIDB4MkFENiwgMHg5OUQ1LCAweDEyNzcsIDB4OTlENiwgMHgyQUQ5LA0KKyAgICAweDk5RDcsIDB4MkFEQywgMHg5OUQ4LCAweDJBREEsIDB4OTlEOSwgMHgxMjc5LCAweDk5REIsIDB4MTI3NSwNCisgICAgMHg5OURDLCAweDJBRDIsIDB4OTlERCwgMHgxMjcyLCAweDk5REYsIDB4MTI3NCwgMHg5OUUyLCAweDEzQTIsDQorICAgIDB4OTlFMywgMHgyRDA5LCAweDk5RTQsIDB4MkQwNywgMHg5OUU1LCAweDJEMDYsIDB4OTlFNywgMHgyRDBDLA0KKyAgICAweDk5RTksIDB4MkQwQiwgMHg5OUVBLCAweDJEMEEsIDB4OTlFQywgMHgyRDA1LCAweDk5RUQsIDB4MTNBMSwNCisgICAgMHg5OUVFLCAweDJEMDQsIDB4OTlGMCwgMHgyRDA4LCAweDk5RjEsIDB4MTNBMywgMHg5OUY0LCAweDJFRDMsDQorICAgIDB4OTlGNiwgMHgyRUQ3LCAweDk5RjcsIDB4MkVENCwgMHg5OUY4LCAweDJFRDYsIDB4OTlGOSwgMHgyRUQ1LA0KKyAgICAweDk5RkEsIDB4MkVEMiwgMHg5OUZCLCAweDJFRDgsIDB4OTlGQywgMHgyRURCLCAweDk5RkQsIDB4MkVEOSwNCisgICAgMHg5OUZFLCAweDJFREEsIDB4OTlGRiwgMHgxNEJBLCAweDlBMDEsIDB4MTRCOSwgMHg5QTAyLCAweDJFRDEsDQorICAgIDB4OUEwMywgMHgyRURDLCAweDlBMDQsIDB4MzA0MiwgMHg5QTA1LCAweDMwNDUsIDB4OUEwNiwgMHgzMDQ3LA0KKyAgICAweDlBMDcsIDB4MzA0NiwgMHg5QTA5LCAweDMwNDAsIDB4OUEwQSwgMHgzMDQ0LCAweDlBMEIsIDB4MzAzRiwNCisgICAgMHg5QTBELCAweDMwNDEsIDB4OUEwRSwgMHgxNTYzLCAweDlBMEYsIDB4MzAzRSwgMHg5QTExLCAweDMwNDMsDQorICAgIDB4OUExNCwgMHgzMThBLCAweDlBMTUsIDB4MzE3RiwgMHg5QTE2LCAweDE1RjksIDB4OUExOSwgMHgxNUZBLA0KKyAgICAweDlBMUEsIDB4MzE3RSwgMHg5QTFCLCAweDMxODMsIDB4OUExQywgMHgzMTg5LCAweDlBMUQsIDB4MzE4MSwNCisgICAgMHg5QTFFLCAweDMxODgsIDB4OUEyMCwgMHgzMTg1LCAweDlBMjIsIDB4MzE4NCwgMHg5QTIzLCAweDMxODcsDQorICAgIDB4OUEyNCwgMHgzMTgyLCAweDlBMjUsIDB4MzE4MCwgMHg5QTI3LCAweDMxODYsIDB4OUEyOSwgMHgzMjg3LA0KKyAgICAweDlBMkEsIDB4MzI4NSwgMHg5QTJCLCAweDE2NUIsIDB4OUEyQywgMHgzMjg0LCAweDlBMkQsIDB4MzI4QSwNCisgICAgMHg5QTJFLCAweDMyODgsIDB4OUEzMCwgMHgxNjVDLCAweDlBMzEsIDB4MzI4MywgMHg5QTMyLCAweDMyODEsDQorICAgIDB4OUEzNCwgMHgzMjgyLCAweDlBMzUsIDB4MTY1RSwgMHg5QTM2LCAweDMyODYsIDB4OUEzNywgMHgxNjVELA0KKyAgICAweDlBMzgsIDB4MzI4OSwgMHg5QTM5LCAweDMzM0IsIDB4OUEzQSwgMHgzMzQxLCAweDlBM0QsIDB4MzMzQywNCisgICAgMHg5QTNFLCAweDE2QUIsIDB4OUEzRiwgMHgzMzQyLCAweDlBNDAsIDB4MTZBQSwgMHg5QTQxLCAweDMzNDAsDQorICAgIDB4OUE0MiwgMHgzMzNGLCAweDlBNDMsIDB4MTZBOSwgMHg5QTQ0LCAweDMzM0UsIDB4OUE0NSwgMHgxNkE4LA0KKyAgICAweDlBNDYsIDB4MzMzRCwgMHg5QTQ4LCAweDMzREQsIDB4OUE0OSwgMHgzM0RGLCAweDlBNEEsIDB4MzNERSwNCisgICAgMHg5QTRDLCAweDMzREIsIDB4OUE0RCwgMHgxNkU5LCAweDlBNEUsIDB4MzNEOCwgMHg5QTRGLCAweDMzREMsDQorICAgIDB4OUE1MCwgMHgzM0UxLCAweDlBNTIsIDB4MzNFMCwgMHg5QTUzLCAweDMzRDksIDB4OUE1NCwgMHgzM0RBLA0KKyAgICAweDlBNTUsIDB4MTZFOCwgMHg5QTU2LCAweDM0NEYsIDB4OUE1NywgMHgxNzE1LCAweDlBNTksIDB4MzQ1MCwNCisgICAgMHg5QTVBLCAweDE3MTMsIDB4OUE1QiwgMHgxNzE0LCAweDlBNUUsIDB4MzRBRSwgMHg5QTVGLCAweDE3MzcsDQorICAgIDB4OUE2MCwgMHgzNTEwLCAweDlBNjIsIDB4MTc1NywgMHg5QTY0LCAweDM1MkMsIDB4OUE2NSwgMHgxNzU4LA0KKyAgICAweDlBNjYsIDB4MzUyRCwgMHg5QTY3LCAweDM1MkUsIDB4OUE2OCwgMHgzNTNDLCAweDlBNjksIDB4MzUzQiwNCisgICAgMHg5QTZBLCAweDE3NjcsIDB4OUE2QiwgMHgzNTQ0LCAweDlBQTgsIDB4MDlGNiwgMHg5QUFCLCAweDI2MEMsDQorICAgIDB4OUFBRCwgMHgyNjBCLCAweDlBQUYsIDB4MTBGNywgMHg5QUIwLCAweDEwRjgsIDB4OUFCMSwgMHgyODcxLA0KKyAgICAweDlBQjMsIDB4MkFERSwgMHg5QUI0LCAweDJEMEYsIDB4OUFCNywgMHgxMjdBLCAweDlBQjgsIDB4MTNBNCwNCisgICAgMHg5QUI5LCAweDJEMEQsIDB4OUFCQiwgMHgyRDEwLCAweDlBQkMsIDB4MTNBNSwgMHg5QUJFLCAweDJFREQsDQorICAgIDB4OUFCRiwgMHgyRDBFLCAweDlBQzAsIDB4MzA0OCwgMHg5QUMxLCAweDE1NjQsIDB4OUFDMiwgMHgzMThCLA0KKyAgICAweDlBQzYsIDB4MzI4RCwgMHg5QUM3LCAweDMyOEIsIDB4OUFDQSwgMHgzMjhDLCAweDlBQ0QsIDB4MzM0MywNCisgICAgMHg5QUNGLCAweDE2QUMsIDB4OUFEMCwgMHgzM0UyLCAweDlBRDEsIDB4MTcxOCwgMHg5QUQyLCAweDE2RUEsDQorICAgIDB4OUFEMywgMHgxNzE2LCAweDlBRDQsIDB4MTcxNywgMHg5QUQ1LCAweDM0QUYsIDB4OUFENiwgMHgxNzRGLA0KKyAgICAweDlBRDgsIDB4MDlGNywgMHg5QURDLCAweDMwNDksIDB4OUFERiwgMHgxRTMzLCAweDlBRTEsIDB4MEY3OCwNCisgICAgMHg5QUUzLCAweDI4NzIsIDB4OUFFNiwgMHgxMEY5LCAweDlBRTcsIDB4Mjg3MywgMHg5QUVCLCAweDJBRTAsDQorICAgIDB4OUFFQywgMHgyQURGLCAweDlBRUQsIDB4MTNBNywgMHg5QUVFLCAweDEyN0IsIDB4OUFFRiwgMHgxMjdDLA0KKyAgICAweDlBRjEsIDB4MkFFMywgMHg5QUYyLCAweDJBRTIsIDB4OUFGMywgMHgyQUUxLCAweDlBRjYsIDB4MkQxMSwNCisgICAgMHg5QUY3LCAweDJEMTQsIDB4OUFGOSwgMHgyRDEzLCAweDlBRkEsIDB4MkQxMiwgMHg5QUZCLCAweDEzQTYsDQorICAgIDB4OUFGQywgMHgyRUUxLCAweDlBRkQsIDB4MkVERiwgMHg5QUZFLCAweDJFREUsIDB4OUIwMSwgMHgyRUUwLA0KKyAgICAweDlCMDMsIDB4MTU2NSwgMHg5QjA0LCAweDMwNEIsIDB4OUIwNSwgMHgzMDRDLCAweDlCMDYsIDB4MTU2NiwNCisgICAgMHg5QjA4LCAweDMwNEEsIDB4OUIwQSwgMHgzMThELCAweDlCMEIsIDB4MzE4QywgMHg5QjBDLCAweDMxOEYsDQorICAgIDB4OUIwRCwgMHgxNUZCLCAweDlCMEUsIDB4MzE4RSwgMHg5QjEwLCAweDMyOEUsIDB4OUIxMSwgMHgzMjkwLA0KKyAgICAweDlCMTIsIDB4MzI4RiwgMHg5QjE1LCAweDMzNDQsIDB4OUIxNiwgMHgzMzQ3LCAweDlCMTcsIDB4MzM0NSwNCisgICAgMHg5QjE4LCAweDMzNDYsIDB4OUIxOSwgMHgzM0UzLCAweDlCMUEsIDB4MTZFQiwgMHg5QjFFLCAweDM0NTEsDQorICAgIDB4OUIxRiwgMHgzNDUyLCAweDlCMjAsIDB4MzQ1MywgMHg5QjIyLCAweDE3MzgsIDB4OUIyMywgMHgxNzUwLA0KKyAgICAweDlCMjQsIDB4MzUyRiwgMHg5QjI1LCAweDA5RjgsIDB4OUIyNywgMHgxMjdELCAweDlCMjgsIDB4MTNBOCwNCisgICAgMHg5QjI5LCAweDMwNEQsIDB4OUIyQiwgMHgzM0U0LCAweDlCMkUsIDB4MzUxMSwgMHg5QjJGLCAweDFFMzQsDQorICAgIDB4OUIzMSwgMHgxNzY4LCAweDlCMzIsIDB4MDlGOSwgMHg5QjMzLCAweDJEMTUsIDB4OUIzNSwgMHgzMDRFLA0KKyAgICAweDlCMzcsIDB4MzE5MCwgMHg5QjNBLCAweDMzNDgsIDB4OUIzQiwgMHgzM0U1LCAweDlCM0MsIDB4MDlGQSwNCisgICAgMHg5QjNFLCAweDI4NzQsIDB4OUIzRiwgMHgyODc1LCAweDlCNDEsIDB4MTBGQSwgMHg5QjQyLCAweDEwRkIsDQorICAgIDB4OUI0MywgMHgyQUU1LCAweDlCNDQsIDB4MTI3RiwgMHg5QjQ1LCAweDEyN0UsIDB4OUI0NiwgMHgyQUU0LA0KKyAgICAweDlCNDgsIDB4MkVFMiwgMHg5QjRBLCAweDMwNEYsIDB4OUI0QiwgMHgzMDUxLCAweDlCNEMsIDB4MzA1MCwNCisgICAgMHg5QjRELCAweDE1NjksIDB4OUI0RSwgMHgxNTY4LCAweDlCNEYsIDB4MTU2NywgMHg5QjUxLCAweDE2QUUsDQorICAgIDB4OUI1MiwgMHgzMzQ5LCAweDlCNTQsIDB4MTZBRCwgMHg5QjU1LCAweDMzRTcsIDB4OUI1NiwgMHgzM0U2LA0KKyAgICAweDlCNTgsIDB4MTczOSwgMHg5QjU5LCAweDM0QjAsIDB4OUI1QSwgMHgwQkUxLCAweDlCNUIsIDB4MjYwRCwNCisgICAgMHg5QjVGLCAweDI4NzgsIDB4OUI2MCwgMHgyODc2LCAweDlCNjEsIDB4Mjg3NywgMHg5QjY0LCAweDJBRUUsDQorICAgIDB4OUI2NiwgMHgyQUU5LCAweDlCNjcsIDB4MkFFNiwgMHg5QjY4LCAweDJBRUQsIDB4OUI2QywgMHgyQUVGLA0KKyAgICAweDlCNkYsIDB4MTI4MSwgMHg5QjcwLCAweDJBRUMsIDB4OUI3MSwgMHgyQUU4LCAweDlCNzQsIDB4MkFFNywNCisgICAgMHg5Qjc1LCAweDJBRUIsIDB4OUI3NiwgMHgyQUVBLCAweDlCNzcsIDB4MTI4MCwgMHg5QjdBLCAweDJEMjAsDQorICAgIDB4OUI3QiwgMHgyRDFCLCAweDlCN0MsIDB4MkQxOSwgMHg5QjdELCAweDJEMjIsIDB4OUI3RSwgMHgyRDFBLA0KKyAgICAweDlCODAsIDB4MkQxNiwgMHg5QjgyLCAweDJEMUMsIDB4OUI4NSwgMHgyRDE3LCAweDlCODYsIDB4MkVFQiwNCisgICAgMHg5Qjg3LCAweDJEMTgsIDB4OUI4OCwgMHgyRDIzLCAweDlCOTAsIDB4MkQxRiwgMHg5QjkxLCAweDEzQTksDQorICAgIDB4OUI5MiwgMHgyRDFFLCAweDlCOTMsIDB4MkQxRCwgMHg5Qjk1LCAweDJEMjEsIDB4OUI5QSwgMHgyRUUzLA0KKyAgICAweDlCOUIsIDB4MkVFNiwgMHg5QjlFLCAweDJFRTUsIDB4OUJBMCwgMHgyRUVELCAweDlCQTEsIDB4MkVFOCwNCisgICAgMHg5QkEyLCAweDJFRUMsIDB4OUJBNCwgMHgyRUVBLCAweDlCQTUsIDB4MkVFOSwgMHg5QkE2LCAweDJFRTcsDQorICAgIDB4OUJBOCwgMHgyRUU0LCAweDlCQUEsIDB4MTRCRCwgMHg5QkFCLCAweDE0QkMsIDB4OUJBRCwgMHgxNEJFLA0KKyAgICAweDlCQUUsIDB4MTRCQiwgMHg5QkFGLCAweDJFRUUsIDB4OUJCNSwgMHgzMDU3LCAweDlCQjYsIDB4MzA1QSwNCisgICAgMHg5QkI4LCAweDMwNTgsIDB4OUJCOSwgMHgzMDVDLCAweDlCQkQsIDB4MzA1RCwgMHg5QkJGLCAweDMwNTUsDQorICAgIDB4OUJDMCwgMHgxNTZFLCAweDlCQzEsIDB4MzA1NiwgMHg5QkMzLCAweDMwNTQsIDB4OUJDNCwgMHgzMDVCLA0KKyAgICAweDlCQzYsIDB4MzA1MywgMHg5QkM3LCAweDMwNTIsIDB4OUJDOCwgMHgxNTZELCAweDlCQzksIDB4MTU2QiwNCisgICAgMHg5QkNBLCAweDE1NkEsIDB4OUJEMywgMHgzMDU5LCAweDlCRDQsIDB4MzE5OSwgMHg5QkQ1LCAweDMxOUYsDQorICAgIDB4OUJENiwgMHgxNUZFLCAweDlCRDcsIDB4MzE5QSwgMHg5QkQ5LCAweDMxOUQsIDB4OUJEQSwgMHgzMUExLA0KKyAgICAweDlCREIsIDB4MTVGRiwgMHg5QkRDLCAweDMxOUMsIDB4OUJERSwgMHgzMTk0LCAweDlCRTAsIDB4MzE5MywNCisgICAgMHg5QkUxLCAweDMxQTAsIDB4OUJFMiwgMHgzMTk3LCAweDlCRTQsIDB4MzE5NSwgMHg5QkU1LCAweDMxOUUsDQorICAgIDB4OUJFNiwgMHgzMTk2LCAweDlCRTcsIDB4MTVGRCwgMHg5QkU4LCAweDE1RkMsIDB4OUJFQSwgMHgzMTkxLA0KKyAgICAweDlCRUIsIDB4MzE5MiwgMHg5QkVDLCAweDMxOUIsIDB4OUJGMCwgMHgzMTk4LCAweDlCRjcsIDB4MzI5MywNCisgICAgMHg5QkY4LCAweDMyOTYsIDB4OUJGRCwgMHgxNTZDLCAweDlDMDUsIDB4MzI5NCwgMHg5QzA2LCAweDMyOUEsDQorICAgIDB4OUMwNywgMHgzMjk4LCAweDlDMDgsIDB4MzI5MiwgMHg5QzA5LCAweDMyOUQsIDB4OUMwQiwgMHgzMjkxLA0KKyAgICAweDlDMEQsIDB4MTY2MCwgMHg5QzBFLCAweDMyOTksIDB4OUMxMiwgMHgzMjk1LCAweDlDMTMsIDB4MTY1RiwNCisgICAgMHg5QzE0LCAweDMyOUMsIDB4OUMxNywgMHgzMjlCLCAweDlDMUMsIDB4MzM0QywgMHg5QzFELCAweDMzNEIsDQorICAgIDB4OUMyMSwgMHgzMzUyLCAweDlDMjMsIDB4MzM0RSwgMHg5QzI0LCAweDMzNTEsIDB4OUMyNSwgMHgxNkIwLA0KKyAgICAweDlDMjgsIDB4MzM0RiwgMHg5QzI5LCAweDMzNTAsIDB4OUMyQiwgMHgzMzRBLCAweDlDMkMsIDB4MzM0RCwNCisgICAgMHg5QzJELCAweDE2QUYsIDB4OUMzMSwgMHgxNkVELCAweDlDMzIsIDB4MzNGMiwgMHg5QzMzLCAweDMzRUQsDQorICAgIDB4OUMzNCwgMHgzM0YxLCAweDlDMzYsIDB4MzNGNCwgMHg5QzM3LCAweDMzRjAsIDB4OUMzOSwgMHgzM0VDLA0KKyAgICAweDlDM0IsIDB4MTZFRiwgMHg5QzNDLCAweDMzRUYsIDB4OUMzRCwgMHgzM0YzLCAweDlDM0UsIDB4MTZFRSwNCisgICAgMHg5QzNGLCAweDMzRUEsIDB4OUM0MCwgMHgzMjk3LCAweDlDNDEsIDB4MzNFRSwgMHg5QzQ0LCAweDMzRUIsDQorICAgIDB4OUM0NiwgMHgzM0U4LCAweDlDNDgsIDB4MzNFOSwgMHg5QzQ5LCAweDE2RUMsIDB4OUM0QSwgMHgzNDU3LA0KKyAgICAweDlDNEIsIDB4MzQ1OSwgMHg5QzRDLCAweDM0NUMsIDB4OUM0RCwgMHgzNDU4LCAweDlDNEUsIDB4MzQ1RCwNCisgICAgMHg5QzUwLCAweDM0NTYsIDB4OUM1MiwgMHgzNDU0LCAweDlDNTQsIDB4MTcxOSwgMHg5QzU1LCAweDM0NUEsDQorICAgIDB4OUM1NiwgMHgxNzFCLCAweDlDNTcsIDB4MTcxQSwgMHg5QzU4LCAweDM0NTUsIDB4OUM1OSwgMHgzNDVCLA0KKyAgICAweDlDNUUsIDB4MzRCNSwgMHg5QzVGLCAweDE3M0EsIDB4OUM2MCwgMHgzNEI2LCAweDlDNjIsIDB4MzRCNCwNCisgICAgMHg5QzYzLCAweDM0QjEsIDB4OUM2NiwgMHgzNEIzLCAweDlDNjcsIDB4MzRCMiwgMHg5QzY4LCAweDM0RjQsDQorICAgIDB4OUM2RCwgMHgzNEY2LCAweDlDNkUsIDB4MzRGNSwgMHg5QzcxLCAweDM1MTQsIDB4OUM3MywgMHgzNTEzLA0KKyAgICAweDlDNzQsIDB4MzUxMiwgMHg5Qzc1LCAweDM1MTUsIDB4OUM3NywgMHgxNzYwLCAweDlDNzgsIDB4MTc2MSwNCisgICAgMHg5Qzc5LCAweDM1NDEsIDB4OUM3QSwgMHgzNTQ1LCAweDlDRTUsIDB4MEJFMiwgMHg5Q0U2LCAweDIzNUYsDQorICAgIDB4OUNFNywgMHgyNjEwLCAweDlDRTksIDB4MEY3OSwgMHg5Q0VBLCAweDI2MEUsIDB4OUNFRCwgMHgyNjBGLA0KKyAgICAweDlDRjEsIDB4Mjg3OSwgMHg5Q0YyLCAweDI4N0EsIDB4OUNGMywgMHgxMEZFLCAweDlDRjQsIDB4MTBGQywNCisgICAgMHg5Q0Y1LCAweDI4N0IsIDB4OUNGNiwgMHgxMEZELCAweDlDRjcsIDB4MkFGNCwgMHg5Q0Y5LCAweDJBRjcsDQorICAgIDB4OUNGQSwgMHgyQUYxLCAweDlDRkIsIDB4MkFGOCwgMHg5Q0ZDLCAweDJBRjAsIDB4OUNGRCwgMHgyQUYyLA0KKyAgICAweDlDRkYsIDB4MkFGMywgMHg5RDAwLCAweDJBRjYsIDB4OUQwMywgMHgxMjg0LCAweDlEMDQsIDB4MkFGQiwNCisgICAgMHg5RDA1LCAweDJBRkEsIDB4OUQwNiwgMHgxMjgyLCAweDlEMDcsIDB4MkFGNSwgMHg5RDA4LCAweDJBRjksDQorICAgIDB4OUQwOSwgMHgxMjgzLCAweDlEMTAsIDB4MkQyRCwgMHg5RDEyLCAweDEzQUUsIDB4OUQxNCwgMHgyRDI4LA0KKyAgICAweDlEMTUsIDB4MTNBQSwgMHg5RDE3LCAweDJEMjUsIDB4OUQxOCwgMHgyRDJCLCAweDlEMTksIDB4MkQyRSwNCisgICAgMHg5RDFCLCAweDEzQUYsIDB4OUQxRCwgMHgyRDJBLCAweDlEMUUsIDB4MkQyNywgMHg5RDFGLCAweDJEMkYsDQorICAgIDB4OUQyMCwgMHgyRDI2LCAweDlEMjIsIDB4MkQyQywgMHg5RDIzLCAweDEzQUIsIDB4OUQyNSwgMHgyRDI0LA0KKyAgICAweDlEMjYsIDB4MTNBQywgMHg5RDI4LCAweDEzQUQsIDB4OUQyOSwgMHgyRDI5LCAweDlEMkQsIDB4MkYwMCwNCisgICAgMHg5RDJFLCAweDJFRjMsIDB4OUQyRiwgMHgyRUY0LCAweDlEMzAsIDB4MkVGNywgMHg5RDMxLCAweDJFRjUsDQorICAgIDB4OUQzMywgMHgyRUVGLCAweDlEMzYsIDB4MkVGMiwgMHg5RDM3LCAweDJFRkMsIDB4OUQzOCwgMHgyRUY2LA0KKyAgICAweDlEM0IsIDB4MTRCRiwgMHg5RDNELCAweDJFRkUsIDB4OUQzRSwgMHgyRUZCLCAweDlEM0YsIDB4MTRDMCwNCisgICAgMHg5RDQwLCAweDJFRkQsIDB4OUQ0MSwgMHgyRUYwLCAweDlENDIsIDB4MkVGOSwgMHg5RDQzLCAweDJFRkEsDQorICAgIDB4OUQ0NSwgMHgyRUY4LCAweDlENEEsIDB4MzA2MSwgMHg5RDRCLCAweDMwNjMsIDB4OUQ0QywgMHgzMDY2LA0KKyAgICAweDlENEYsIDB4MzA2MCwgMHg5RDUxLCAweDE1NkYsIDB4OUQ1MiwgMHgzMDY4LCAweDlENTMsIDB4MzA1RiwNCisgICAgMHg5RDU0LCAweDMwNjksIDB4OUQ1NiwgMHgzMDY1LCAweDlENTcsIDB4MzA2NywgMHg5RDU4LCAweDMwNkIsDQorICAgIDB4OUQ1OSwgMHgzMDY0LCAweDlENUEsIDB4MzA2QywgMHg5RDVCLCAweDMwNjIsIDB4OUQ1QywgMHgzMDVFLA0KKyAgICAweDlENUQsIDB4MTU3MCwgMHg5RDVGLCAweDMwNkEsIDB4OUQ2MCwgMHgxNTcxLCAweDlENjEsIDB4MTYwMSwNCisgICAgMHg5RDY3LCAweDJFRjEsIDB4OUQ2OCwgMHgzMUJCLCAweDlENjksIDB4MzFCMiwgMHg5RDZBLCAweDE2MDMsDQorICAgIDB4OUQ2QiwgMHgzMUFFLCAweDlENkMsIDB4MTYwNCwgMHg5RDZGLCAweDMxQjcsIDB4OUQ3MCwgMHgzMUIxLA0KKyAgICAweDlENzEsIDB4MzFBNywgMHg5RDcyLCAweDE2MDIsIDB4OUQ3MywgMHgzMUI0LCAweDlENzQsIDB4MzFBRiwNCisgICAgMHg5RDc1LCAweDMxQjAsIDB4OUQ3NywgMHgzMUEyLCAweDlENzgsIDB4MzFBOSwgMHg5RDc5LCAweDMxQjgsDQorICAgIDB4OUQ3QiwgMHgzMUI1LCAweDlEN0QsIDB4MzFBRCwgMHg5RDdGLCAweDMxQjksIDB4OUQ4MCwgMHgzMUE4LA0KKyAgICAweDlEODEsIDB4MzFBMywgMHg5RDgyLCAweDMxQjYsIDB4OUQ4NCwgMHgzMUE1LCAweDlEODUsIDB4MzFCMywNCisgICAgMHg5RDg2LCAweDMxQUEsIDB4OUQ4NywgMHgzMUJBLCAweDlEODgsIDB4MzFBNiwgMHg5RDg5LCAweDE2MDAsDQorICAgIDB4OUQ4QSwgMHgzMUE0LCAweDlEOEIsIDB4MzFBQiwgMHg5RDhDLCAweDMxQUMsIDB4OUQ5MCwgMHgzMkE0LA0KKyAgICAweDlEOTIsIDB4MzJBMiwgMHg5RDk0LCAweDMyQTcsIDB4OUQ5NiwgMHgzMkIzLCAweDlEOTcsIDB4MzJBQSwNCisgICAgMHg5RDk4LCAweDMyQTMsIDB4OUQ5OSwgMHgzMjlGLCAweDlEOUEsIDB4MzJBQywgMHg5RDlCLCAweDMyQTUsDQorICAgIDB4OUQ5QywgMHgzMkE4LCAweDlEOUQsIDB4MzJBMSwgMHg5RDlFLCAweDMyQUYsIDB4OUQ5RiwgMHgzMjlFLA0KKyAgICAweDlEQTAsIDB4MzJBNiwgMHg5REExLCAweDMyQUIsIDB4OURBMiwgMHgzMkFELCAweDlEQTMsIDB4MzJCMCwNCisgICAgMHg5REE0LCAweDMyQTAsIDB4OURBNiwgMHgzMkI0LCAweDlEQTcsIDB4MzJCNSwgMHg5REE4LCAweDMyQUUsDQorICAgIDB4OURBOSwgMHgzMkIyLCAweDlEQUEsIDB4MzJBOSwgMHg5REFDLCAweDMzNjIsIDB4OURBRCwgMHgzMzY1LA0KKyAgICAweDlEQUYsIDB4MTZCMSwgMHg5REIxLCAweDMzNjQsIDB4OURCMiwgMHgzMzY5LCAweDlEQjMsIDB4MzM2NywNCisgICAgMHg5REI0LCAweDE2QjIsIDB4OURCNSwgMHgzMzVFLCAweDlEQjYsIDB4MzM1NCwgMHg5REI3LCAweDMzNTMsDQorICAgIDB4OURCOCwgMHgxNkI0LCAweDlEQjksIDB4MzM2MCwgMHg5REJBLCAweDMzNjEsIDB4OURCQiwgMHgzMzVELA0KKyAgICAweDlEQkMsIDB4MzM1NSwgMHg5REJFLCAweDMzNUEsIDB4OURCRiwgMHgzMkIxLCAweDlEQzEsIDB4MzM1NiwNCisgICAgMHg5REMyLCAweDE2QjMsIDB4OURDMywgMHgzMzVDLCAweDlEQzUsIDB4MzM1QiwgMHg5REM3LCAweDMzNTcsDQorICAgIDB4OURDOCwgMHgzMzYzLCAweDlEQ0EsIDB4MzM1OCwgMHg5RENCLCAweDMzRjksIDB4OURDQywgMHgzMzY2LA0KKyAgICAweDlEQ0QsIDB4MzM2OCwgMHg5RENFLCAweDMzNUYsIDB4OURDRiwgMHgzMzU5LCAweDlERDAsIDB4MzNGQSwNCisgICAgMHg5REQxLCAweDMzRkMsIDB4OUREMiwgMHgzM0Y2LCAweDlERDMsIDB4MTZGMCwgMHg5REQ1LCAweDM0MDMsDQorICAgIDB4OURENiwgMHgzNDAxLCAweDlERDcsIDB4MTZGMSwgMHg5REQ4LCAweDM0MDAsIDB4OUREOSwgMHgzM0ZGLA0KKyAgICAweDlEREEsIDB4MzNGOCwgMHg5RERCLCAweDMzRjUsIDB4OUREQywgMHgzM0ZCLCAweDlEREQsIDB4MzQwNCwNCisgICAgMHg5RERFLCAweDMzRjcsIDB4OURERiwgMHgzM0ZELCAweDlERTEsIDB4MzQ2NiwgMHg5REUyLCAweDM0NkIsDQorICAgIDB4OURFMywgMHgzNDYxLCAweDlERTQsIDB4MzQ2NCwgMHg5REU1LCAweDE3MUMsIDB4OURFNiwgMHgzNDY4LA0KKyAgICAweDlERTgsIDB4MzQ2RiwgMHg5REU5LCAweDMzRkUsIDB4OURFQiwgMHgzNDYyLCAweDlERUMsIDB4MzQ2QywNCisgICAgMHg5REVELCAweDM0NzAsIDB4OURFRSwgMHgzNDY3LCAweDlERUYsIDB4MzQ2MCwgMHg5REYwLCAweDM0NkEsDQorICAgIDB4OURGMiwgMHgzNDY5LCAweDlERjMsIDB4MzQ2RSwgMHg5REY0LCAweDM0NkQsIDB4OURGNSwgMHgzNDAyLA0KKyAgICAweDlERjYsIDB4MzQ2NSwgMHg5REY3LCAweDM0NUYsIDB4OURGOCwgMHgzNDYzLCAweDlERjksIDB4MTczQiwNCisgICAgMHg5REZBLCAweDE3M0MsIDB4OURGQiwgMHgzNDVFLCAweDlERkQsIDB4MzRDMSwgMHg5REZFLCAweDM0QjgsDQorICAgIDB4OURGRiwgMHgzNEMwLCAweDlFMDAsIDB4MzRCRCwgMHg5RTAxLCAweDM0QkUsIDB4OUUwMiwgMHgzNEI3LA0KKyAgICAweDlFMDMsIDB4MzRCQSwgMHg5RTA0LCAweDM0QzIsIDB4OUUwNSwgMHgzNEJDLCAweDlFMDYsIDB4MzRCQiwNCisgICAgMHg5RTA3LCAweDM0QjksIDB4OUUwOSwgMHgzNEJGLCAweDlFMEIsIDB4MzRGNywgMHg5RTBELCAweDM0RjgsDQorICAgIDB4OUUwRiwgMHgzNEZBLCAweDlFMTAsIDB4MzRGOSwgMHg5RTExLCAweDM0RkMsIDB4OUUxMiwgMHgzNEZCLA0KKyAgICAweDlFMTMsIDB4MzUxNywgMHg5RTE0LCAweDM1MTYsIDB4OUUxNSwgMHgzNTMwLCAweDlFMTcsIDB4MzUzMSwNCisgICAgMHg5RTE5LCAweDM1M0QsIDB4OUUxQSwgMHgxNzY1LCAweDlFMUIsIDB4MTc2OSwgMHg5RTFELCAweDM1NDYsDQorICAgIDB4OUUxRSwgMHgxNzZBLCAweDlFNzUsIDB4MEJFMywgMHg5RTc5LCAweDE2NjEsIDB4OUU3QSwgMHgzMzZBLA0KKyAgICAweDlFN0MsIDB4MTczRCwgMHg5RTdELCAweDE3M0UsIDB4OUU3RiwgMHgwQkU0LCAweDlFODAsIDB4MjYxMSwNCisgICAgMHg5RTgyLCAweDBGN0EsIDB4OUU4MywgMHgyQUZDLCAweDlFODYsIDB4MkQzMSwgMHg5RTg3LCAweDJEMzIsDQorICAgIDB4OUU4OCwgMHgyRDMwLCAweDlFODksIDB4MkYwMiwgMHg5RThBLCAweDJGMDEsIDB4OUU4QiwgMHgxNEMxLA0KKyAgICAweDlFOEMsIDB4MzA2RSwgMHg5RThELCAweDJGMDMsIDB4OUU4RSwgMHgzMDZELCAweDlFOTEsIDB4MzFCRCwNCisgICAgMHg5RTkyLCAweDE2MDUsIDB4OUU5MywgMHgxNjA3LCAweDlFOTQsIDB4MzFCQywgMHg5RTk3LCAweDE2MDYsDQorICAgIDB4OUU5OSwgMHgzMkI2LCAweDlFOUEsIDB4MzJCOCwgMHg5RTlCLCAweDMyQjcsIDB4OUU5QywgMHgzMzZCLA0KKyAgICAweDlFOUQsIDB4MTZCNSwgMHg5RTlGLCAweDE3MUQsIDB4OUVBMCwgMHgzNEMzLCAweDlFQTEsIDB4MzRGRCwNCisgICAgMHg5RUE0LCAweDM1NEEsIDB4OUVBNSwgMHgwQkU1LCAweDlFQTcsIDB4Mjg3QywgMHg5RUE5LCAweDEyODUsDQorICAgIDB4OUVBRCwgMHgyRDM0LCAweDlFQUUsIDB4MkQzMywgMHg5RUIwLCAweDJGMDQsIDB4OUVCNCwgMHgxNjA4LA0KKyAgICAweDlFQjUsIDB4MTY2MiwgMHg5RUI2LCAweDM0MDUsIDB4OUVCNywgMHgzNTQyLCAweDlFQkIsIDB4MEJFNiwNCisgICAgMHg5RUJDLCAweDEwRkYsIDB4OUVCRSwgMHgxMjg2LCAweDlFQzAsIDB4MzFCRSwgMHg5RUMyLCAweDM0NzEsDQorICAgIDB4OUVDMywgMHgwREJCLCAweDlFQzgsIDB4MkYwNSwgMHg5RUNDLCAweDE3NTEsIDB4OUVDRCwgMHgwREJDLA0KKyAgICAweDlFQ0UsIDB4MTI4NywgMHg5RUNGLCAweDE0QzIsIDB4OUVEMCwgMHgzNDcyLCAweDlFRDEsIDB4MERCRCwNCisgICAgMHg5RUQzLCAweDJBRkQsIDB4OUVENCwgMHgxM0IxLCAweDlFRDUsIDB4MkQzNSwgMHg5RUQ2LCAweDJEMzYsDQorICAgIDB4OUVEOCwgMHgxM0IwLCAweDlFREEsIDB4MkYwNiwgMHg5RURCLCAweDE0QzYsIDB4OUVEQywgMHgxNEM0LA0KKyAgICAweDlFREQsIDB4MTRDNSwgMHg5RURFLCAweDE0QzMsIDB4OUVERiwgMHgzMDZGLCAweDlFRTAsIDB4MTU3MiwNCisgICAgMHg5RUU0LCAweDMyQkEsIDB4OUVFNSwgMHgzMkI5LCAweDlFRTYsIDB4MzJCQywgMHg5RUU3LCAweDMyQkIsDQorICAgIDB4OUVFOCwgMHgxNjYzLCAweDlFRUIsIDB4MzM2QywgMHg5RUVELCAweDMzNkUsIDB4OUVFRSwgMHgzMzZELA0KKyAgICAweDlFRUYsIDB4MTZCNiwgMHg5RUYwLCAweDM0MDYsIDB4OUVGMiwgMHgzNDczLCAweDlFRjMsIDB4MzQ3NCwNCisgICAgMHg5RUY0LCAweDE3MUUsIDB4OUVGNSwgMHgzNEZFLCAweDlFRjYsIDB4MzUxOCwgMHg5RUY3LCAweDE3NjIsDQorICAgIDB4OUVGOSwgMHgyMzYwLCAweDlFRkEsIDB4MkQzNywgMHg5RUZCLCAweDJGMDcsIDB4OUVGQywgMHgzMUJGLA0KKyAgICAweDlFRkQsIDB4MjYxMiwgMHg5RUZGLCAweDJGMDgsIDB4OUYwMCwgMHgzMDcxLCAweDlGMDEsIDB4MzA3MCwNCisgICAgMHg5RjA2LCAweDM0NzUsIDB4OUYwNywgMHgxNzNGLCAweDlGMDksIDB4MzRGRiwgMHg5RjBBLCAweDM1MTksDQorICAgIDB4OUYwRSwgMHgwRjdCLCAweDlGMEYsIDB4MkFGRSwgMHg5RjEwLCAweDJBRkYsIDB4OUYxMiwgMHgyRDM4LA0KKyAgICAweDlGMTMsIDB4MEY3QywgMHg5RjE1LCAweDE1NzMsIDB4OUYxNiwgMHgzMDcyLCAweDlGMTgsIDB4MzM3MCwNCisgICAgMHg5RjE5LCAweDE2QjcsIDB4OUYxQSwgMHgzMzcxLCAweDlGMUIsIDB4MzM2RiwgMHg5RjFDLCAweDM0NzYsDQorICAgIDB4OUYxRSwgMHgzNEM0LCAweDlGMjAsIDB4MEY3RCwgMHg5RjIyLCAweDJGMEIsIDB4OUYyMywgMHgyRjBBLA0KKyAgICAweDlGMjQsIDB4MkYwOSwgMHg5RjI1LCAweDMwNzMsIDB4OUYyOCwgMHgzMDc3LCAweDlGMjksIDB4MzA3NiwNCisgICAgMHg5RjJBLCAweDMwNzUsIDB4OUYyQiwgMHgzMDc0LCAweDlGMkMsIDB4MTU3NCwgMHg5RjJELCAweDMxQzAsDQorICAgIDB4OUYyRSwgMHgzMkJFLCAweDlGMkYsIDB4MTY2NCwgMHg5RjMwLCAweDMyQkQsIDB4OUYzMSwgMHgzMzcyLA0KKyAgICAweDlGMzIsIDB4MzQwOSwgMHg5RjMzLCAweDM0MDgsIDB4OUYzNCwgMHgxNkYyLCAweDlGMzUsIDB4MzQwNywNCisgICAgMHg5RjM2LCAweDM0NzksIDB4OUYzNywgMHgzNDc4LCAweDlGMzgsIDB4MzQ3NywgMHg5RjNCLCAweDExMDAsDQorICAgIDB4OUYzRCwgMHgyRDM5LCAweDlGM0UsIDB4MTRDNywgMHg5RjQwLCAweDMxQzEsIDB4OUY0MSwgMHgzMUMyLA0KKyAgICAweDlGNDIsIDB4MzQwQSwgMHg5RjQzLCAweDM0N0EsIDB4OUY0NiwgMHgzNEM1LCAweDlGNDcsIDB4MzUwMCwNCisgICAgMHg5RjQ4LCAweDM1MzIsIDB4OUY0OSwgMHgzNTRDLCAweDlGNEEsIDB4MTEwMSwgMHg5RjRCLCAweDE0QzgsDQorICAgIDB4OUY0QywgMHgzMDc4LCAweDlGNEQsIDB4MzFDMywgMHg5RjRFLCAweDMzNzMsIDB4OUY0RiwgMHgzNDdCLA0KKyAgICAweDlGNTIsIDB4MTI4OSwgMHg5RjU0LCAweDJGMEMsIDB4OUY1NSwgMHgzMDc5LCAweDlGNTYsIDB4MzFDNCwNCisgICAgMHg5RjU3LCAweDMxQzUsIDB4OUY1OCwgMHgzMUM2LCAweDlGNTksIDB4MzJDMywgMHg5RjVCLCAweDMyQkYsDQorICAgIDB4OUY1QywgMHgxNkI4LCAweDlGNUQsIDB4MzJDMiwgMHg5RjVFLCAweDMyQzEsIDB4OUY1RiwgMHgxNjY1LA0KKyAgICAweDlGNjAsIDB4MzJDMCwgMHg5RjYxLCAweDE2NjcsIDB4OUY2MywgMHgxNjY2LCAweDlGNjQsIDB4MzM3NSwNCisgICAgMHg5RjY1LCAweDMzNzQsIDB4OUY2NiwgMHgxNkI5LCAweDlGNjcsIDB4MTZCQSwgMHg5RjZBLCAweDE2RjQsDQorICAgIDB4OUY2QiwgMHgzNDBCLCAweDlGNkMsIDB4MTZGMywgMHg5RjZFLCAweDM0N0UsIDB4OUY2RiwgMHgzNDdGLA0KKyAgICAweDlGNzAsIDB4MzQ3RCwgMHg5RjcxLCAweDM0N0MsIDB4OUY3MiwgMHgxNzQxLCAweDlGNzQsIDB4MzRDNiwNCisgICAgMHg5Rjc1LCAweDM0QzcsIDB4OUY3NiwgMHgzNEM4LCAweDlGNzcsIDB4MTc0MCwgMHg5Rjc4LCAweDM1MDEsDQorICAgIDB4OUY3OSwgMHgzNTA0LCAweDlGN0EsIDB4MzUwMywgMHg5RjdCLCAweDM1MDIsIDB4OUY3RSwgMHgzNTRCLA0KKyAgICAweDlGOEQsIDB4MTNCMiwgMHg5RjkwLCAweDE1N0MsIDB4OUY5MSwgMHgzMkM0LCAweDlGOTIsIDB4MzM3NiwNCisgICAgMHg5Rjk0LCAweDE2RjUsIDB4OUY5NSwgMHgzNDBDLCAweDlGOTgsIDB4MzU0RCwgMHg5RjlDLCAweDEzQjMsDQorICAgIDB4OUZBMCwgMHgyRjBELCAweDlGQTIsIDB4MzQwRCwgMHg5RkE0LCAweDM1MUEsIDB4RTAxRiwgMHgwODNBLA0KKyAgICAweEUwMjYsIDB4MDlGRCwgMHhFMDVCLCAweDAzMEQsIDB4RTA2MywgMHgwMTZCLCAweEUwNzMsIDB4MDg2MCwNCisgICAgMHhFMEYzLCAweDBDMjMsIDB4RTEyRSwgMHgxN0U0LCAweEUxNDksIDB4MjEyRiwgMHhFMTkxLCAweDExNUYsDQorICAgIDB4RTFCQSwgMHgwQzc5LCAweEUxQzksIDB4MDRDMywgMHhFMjJDLCAweDE4QkQsIDB4RTIyRCwgMHgwQ0JELA0KKyAgICAweEUyMzAsIDB4MENBNSwgMHhFMjY2LCAweDBDQ0UsIDB4RTJBMywgMHgwRTg0LCAweEUyQkMsIDB4MDEyMCwNCisgICAgMHhFMkVGLCAweDFCQTgsIDB4RTMzQSwgMHgxMDU1LCAweEUzNDAsIDB4MkRFOCwgMHhFMzRGLCAweDAxMjEsDQorICAgIDB4RTM1QSwgMHgxMDZCLCAweEUzNjMsIDB4MTMyNiwgMHhFMzdDLCAweDA2NkIsIDB4RTM3RiwgMHgxMzJFLA0KKyAgICAweEUzQzUsIDB4MEQzNSwgMHhFM0Q3LCAweDI3QzIsIDB4RTNEQywgMHgyMkFELCAweEU0MTcsIDB4MTM0QywNCisgICAgMHhFNDRBLCAweDA5Q0UsIDB4RTQ3OCwgMHgwQkM3LCAweEU0ODUsIDB4MzZFOSwgMHhFNEM1LCAweDEzOTEsDQorICAgIDB4RTREQSwgMHgxNkE0LCAweEU1NDUsIDB4MzA3MiwgMHhFNUQyLCAweDAxMTksIDB4RTVEMywgMHgwMTFBLA0KKyAgICAweEU1RDQsIDB4MDExQywgMHhFNUQ1LCAweDAxMUIsIDB4RTVGNCwgMHgyOTdDLCAweEU2QzYsIDB4MUQwNiwNCisgICAgMHhFNzI3LCAweDI5QTEsIDB4RTdEMywgMHgxODFCLCAweEU4OTMsIDB4MkIyNCwgMHhFQjQwLCAweDJGNTAsDQorICAgIDB4RUI0MiwgMHgxNzI1LCAweEVCNDUsIDB4MzJFRCwgMHhFQjZFLCAweDJBRDksIDB4RUI4NiwgMHgxQzE0LA0KKyAgICAweEVCOUUsIDB4MTJFOSwgMHhFQkE5LCAweDJDQUUsIDB4RUJCQSwgMHgxQTY0LCAweEVCQzksIDB4MTQwNCwNCisgICAgMHhFQkNGLCAweDIzMjQsIDB4RUJEMiwgMHgzNDZBLCAweEVCREUsIDB4MjI5MSwgMHhFQzAxLCAweDE3ODcsDQorICAgIDB4RUMwMiwgMHgwOTVGLCAweEVDMTUsIDB4MUU5OSwgMHhFQzVCLCAweDI1QzEsIDB4RUM1RSwgMHgwRDBDLA0KKyAgICAweEVDQTYsIDB4MDVFNiwgMHhFRDI4LCAweDA3MjgsIDB4RUQ2RSwgMHgyNEI2LCAweEVEN0MsIDB4MTgwNiwNCisgICAgMHhFRDlFLCAweDM1MTEsIDB4RURFNywgMHgwRjgyLCAweEVFNTIsIDB4MDVGMiwgMHhFRTk4LCAweDI0N0QsDQorICAgIDB4RjZCMSwgMHgwMUZBLCAweEY2QjIsIDB4MDFGQiwgMHhGNkIzLCAweDAxRkMsIDB4RjZCNCwgMHgwMUZELA0KKyAgICAweEY2QjUsIDB4MDFGRSwgMHhGNkI2LCAweDAxRkYsIDB4RjZCNywgMHgwMjAwLCAweEY2QjgsIDB4MDIwMSwNCisgICAgMHhGNkI5LCAweDAyMDIsIDB4RjZCQSwgMHgwMjAzLCAweEY2QkIsIDB4MDIwNCwgMHhGNkJDLCAweDAyMDUsDQorICAgIDB4RjZCRCwgMHgwMjA2LCAweEY2QkUsIDB4MDIwNywgMHhGNkJGLCAweDAyMDgsIDB4RjZDMCwgMHgwMjA5LA0KKyAgICAweEY2QzEsIDB4MDIwQSwgMHhGNkMyLCAweDAyMEIsIDB4RjZDMywgMHgwMjBDLCAweEY2QzQsIDB4MDIwRCwNCisgICAgMHhGNkM1LCAweDAyMEUsIDB4RjZDNiwgMHgwMjBGLCAweEY2QzcsIDB4MDIxMCwgMHhGNkM4LCAweDAyMTEsDQorICAgIDB4RjZDOSwgMHgwMjEyLCAweEY2Q0EsIDB4MDIxMywgMHhGNkNCLCAweDAyMTQsIDB4RjZDQywgMHgwMjE1LA0KKyAgICAweEY2Q0QsIDB4MDIxNiwgMHhGNkNFLCAweDAyMTcsIDB4RjZDRiwgMHgwMjE5LCAweEY2RDAsIDB4MDIxQSwNCisgICAgMHhGNkQxLCAweDAyMUIsIDB4RjZEMiwgMHgwMjFDLCAweEY2RDMsIDB4MDIxRCwgMHhGNkQ0LCAweDAyMUUsDQorICAgIDB4RjZENSwgMHgwMjFGLCAweEY2RDYsIDB4MDIyMCwgMHhGNkQ3LCAweDAyMjEsIDB4RjZEOCwgMHgwMjIyLA0KKyAgICAweEY2RDksIDB4MDIyMywgMHhGNkRBLCAweDAyMjQsIDB4RjZEQiwgMHgwMjI1LCAweEY2REMsIDB4MDIyNiwNCisgICAgMHhGNkRELCAweDAyMjcsIDB4RjZERSwgMHgwMjI4LCAweEY2RTAsIDB4MDIyQSwgMHhGNkUxLCAweDAyMkIsDQorICAgIDB4RjZFMiwgMHgwMjJDLCAweEY2RTQsIDB4MDIyRSwgMHhGNkU2LCAweDAyMzAsIDB4RjZFOCwgMHgzNUIzLA0KKyAgICAweEY2RTksIDB4MzVCNCwgMHhGNkVBLCAweDM1QjUsIDB4RjZFQiwgMHgzNUI2LCAweEY2RUMsIDB4MzVCNywNCisgICAgMHhGNkVELCAweDM1QjgsIDB4RjZGMCwgMHgzNUJBLCAweEY2RjEsIDB4MzVCQiwgMHhGNkYyLCAweDM1QkMsDQorICAgIDB4RjZGMywgMHgzNUJELCAweEY2RjQsIDB4MzVCRSwgMHhGNkY1LCAweDM1QkYsIDB4RjZGNiwgMHgzNUMwLA0KKyAgICAweEY2RjcsIDB4MzVDMSwgMHhGNkY4LCAweDM1QzIsIDB4RjZGOSwgMHgzNUMzLCAweEY2RkEsIDB4MzVDNCwNCisgICAgMHhGNkZCLCAweDM1QzUsIDB4RjZGQywgMHgzNUM2LCAweEY2RkQsIDB4MzVDNywgMHhGNkZFLCAweDM1QzgsDQorICAgIDB4RjZGRiwgMHgzNUM5LCAweEY3MDAsIDB4MzVDQSwgMHhGNzAxLCAweDM1Q0IsIDB4RjcwMiwgMHgzNUNDLA0KKyAgICAweEY3MDMsIDB4MzVDRCwgMHhGNzA0LCAweDM1Q0UsIDB4RjcwNSwgMHgzNUNGLCAweEY3MDYsIDB4MzVEMCwNCisgICAgMHhGNzA3LCAweDM1RDEsIDB4RjcwOCwgMHgzNUQyLCAweEY3MDksIDB4MzVEMywgMHhGNzBBLCAweDM1RDQsDQorICAgIDB4RjcwQiwgMHgzNUQ1LCAweEY3MEMsIDB4MzVENiwgMHhGNzBELCAweDM1RDcsIDB4RjcwRSwgMHgzNUQ4LA0KKyAgICAweEY3MEYsIDB4MzVEOSwgMHhGNzEwLCAweDM1REEsIDB4RjcxMSwgMHgzNURCLCAweEY3MTIsIDB4MzVEQywNCisgICAgMHhGNzEzLCAweDM1REQsIDB4RjcxNCwgMHgzNURFLCAweEY3MTUsIDB4MzVERiwgMHhGNzE2LCAweDM1RTAsDQorICAgIDB4RjcxNywgMHgzNUUxLCAweEY3MTgsIDB4MzVFMiwgMHhGNzE5LCAweDM1RTMsIDB4RjcxQSwgMHgzNUU0LA0KKyAgICAweEY3MUIsIDB4MzVFNSwgMHhGNzFDLCAweDM1RTYsIDB4RjcxRCwgMHgzNUU3LCAweEY3MUUsIDB4MzVFOCwNCisgICAgMHhGNzFGLCAweDM1RTksIDB4RjcyMCwgMHgzNUVBLCAweEY3MjEsIDB4MzVFQiwgMHhGNzIyLCAweDM1RUMsDQorICAgIDB4RjcyMywgMHgzNUVELCAweEY3MjQsIDB4MzVFRSwgMHhGNzI1LCAweDM1RUYsIDB4RjcyNiwgMHgzNUYwLA0KKyAgICAweEY3MjcsIDB4MzVGMSwgMHhGNzI4LCAweDM1RjIsIDB4RjcyOSwgMHgzNUYzLCAweEY3MkEsIDB4MzVGNCwNCisgICAgMHhGNzJCLCAweDM1RjUsIDB4RjcyQywgMHgzNUY2LCAweEY3MkQsIDB4MzVGNywgMHhGNzJFLCAweDM1RjgsDQorICAgIDB4RjcyRiwgMHgzNUY5LCAweEY3MzAsIDB4MzVGQSwgMHhGNzMxLCAweDM1RkIsIDB4RjczMiwgMHgzNUZDLA0KKyAgICAweEY3MzMsIDB4MzVGRCwgMHhGNzM0LCAweDM1RkUsIDB4RjczNSwgMHgzNUZGLCAweEY3MzYsIDB4MzYwMCwNCisgICAgMHhGNzM3LCAweDM2MDEsIDB4RjczOCwgMHgzNjAyLCAweEY3MzksIDB4MzYwMywgMHhGNzNBLCAweDM2MDQsDQorICAgIDB4RjczQiwgMHgzNjA1LCAweEY3M0MsIDB4MzYwNiwgMHhGNzNELCAweDM2MDcsIDB4RjczRSwgMHgzNjA4LA0KKyAgICAweEY3M0YsIDB4MzYwOSwgMHhGNzQwLCAweDM2MEEsIDB4Rjc0MSwgMHgzNjBCLCAweEY3NDIsIDB4MzYwQywNCisgICAgMHhGNzQzLCAweDM2MEQsIDB4Rjc0NCwgMHgzNjBFLCAweEY3NDUsIDB4MzYwRiwgMHhGNzQ2LCAweDM2MTAsDQorICAgIDB4Rjc0NywgMHgzNjExLCAweEY3NDgsIDB4MzYxMiwgMHhGNzQ5LCAweDM2MTMsIDB4Rjc0QSwgMHgzNjE0LA0KKyAgICAweEY3NEIsIDB4MzYxNSwgMHhGNzRDLCAweDM2MTYsIDB4Rjc0RCwgMHgzNjE3LCAweEY3NEUsIDB4MzYxOCwNCisgICAgMHhGNzRGLCAweDM2MTksIDB4Rjc1MCwgMHgzNjFBLCAweEY3NTEsIDB4MzYxQiwgMHhGNzUyLCAweDM2MUMsDQorICAgIDB4Rjc1MywgMHgzNjFELCAweEY3NTQsIDB4MzYxRSwgMHhGNzU1LCAweDM2MUYsIDB4Rjc1NiwgMHgzNjIwLA0KKyAgICAweEY3NTcsIDB4MzYyMSwgMHhGNzU4LCAweDM2MjIsIDB4Rjc1OSwgMHgzNjIzLCAweEY3NUEsIDB4MzYyNCwNCisgICAgMHhGNzVCLCAweDM2MjUsIDB4Rjc1QywgMHgzNjI2LCAweEY3NUQsIDB4MzYyNywgMHhGNzVFLCAweDM2MjgsDQorICAgIDB4Rjc1RiwgMHgzNjI5LCAweEY3NjAsIDB4MzYyQSwgMHhGNzYxLCAweDM2MkIsIDB4Rjc2MiwgMHgzNjJDLA0KKyAgICAweEY3NjMsIDB4MzYyRCwgMHhGNzY0LCAweDM2MkUsIDB4Rjc2NSwgMHgzNjJGLCAweEY3NjYsIDB4MzYzMCwNCisgICAgMHhGNzY3LCAweDM2MzEsIDB4Rjc2OCwgMHgzNjMyLCAweEY3NjksIDB4MzYzMywgMHhGNzZBLCAweDM2MzQsDQorICAgIDB4Rjc2QiwgMHgzNjM1LCAweEY3NkMsIDB4MzYzNiwgMHhGNzZELCAweDM2MzcsIDB4Rjc2RSwgMHgzNjM4LA0KKyAgICAweEY3NkYsIDB4MzYzOSwgMHhGNzcwLCAweDM2M0EsIDB4Rjc3MSwgMHgzNjNCLCAweEY3NzIsIDB4MzYzQywNCisgICAgMHhGNzczLCAweDM2M0QsIDB4Rjc3NCwgMHgzNjNFLCAweEY3NzUsIDB4MzYzRiwgMHhGNzc2LCAweDM2NDAsDQorICAgIDB4Rjc3NywgMHgzNjQxLCAweEY3NzgsIDB4MzY0MiwgMHhGNzc5LCAweDM2NDMsIDB4Rjc3QSwgMHgzNjQ0LA0KKyAgICAweEY3N0IsIDB4MzY0NSwgMHhGNzdDLCAweDM2NDYsIDB4Rjc3RCwgMHgzNjQ3LCAweEY3N0UsIDB4MzY0OCwNCisgICAgMHhGNzdGLCAweDM2NDksIDB4Rjc4MCwgMHgzNjRBLCAweEY3ODEsIDB4MzY0QiwgMHhGNzgyLCAweDM2NEMsDQorICAgIDB4Rjc4MywgMHgzNjRELCAweEY3ODQsIDB4MzY0RSwgMHhGNzg1LCAweDM2NEYsIDB4Rjc4NiwgMHgzNjUwLA0KKyAgICAweEY3ODcsIDB4MzY1MSwgMHhGNzg4LCAweDM2NTIsIDB4Rjc4OSwgMHgzNjUzLCAweEY3OEEsIDB4MzY1NCwNCisgICAgMHhGNzhCLCAweDM2NTUsIDB4Rjc4QywgMHgzNjU2LCAweEY3OEQsIDB4MzY1NywgMHhGNzhFLCAweDM2NTgsDQorICAgIDB4Rjc4RiwgMHgzNjU5LCAweEY3OTAsIDB4MzY1QSwgMHhGNzkxLCAweDM2NUIsIDB4Rjc5MiwgMHgzNjVDLA0KKyAgICAweEY3OTMsIDB4MzY1RCwgMHhGNzk0LCAweDM2NUUsIDB4Rjc5NSwgMHgzNjVGLCAweEY3OTYsIDB4MzY2MCwNCisgICAgMHhGNzk3LCAweDM2NjEsIDB4Rjc5OCwgMHgzNjYyLCAweEY3OTksIDB4MzY2MywgMHhGNzlBLCAweDM2NjQsDQorICAgIDB4Rjc5QiwgMHgzNjY1LCAweEY3OUMsIDB4MzY2NiwgMHhGNzlELCAweDM2NjcsIDB4Rjc5RSwgMHgzNjY4LA0KKyAgICAweEY3OUYsIDB4MzY2OSwgMHhGN0EwLCAweDM2NkEsIDB4RjdBMSwgMHgzNjZCLCAweEY3QTIsIDB4MzY2QywNCisgICAgMHhGN0EzLCAweDM2NkQsIDB4RjdBNCwgMHgzNjZFLCAweEY3QTUsIDB4MzY2RiwgMHhGN0E2LCAweDM2NzAsDQorICAgIDB4RjdBNywgMHgzNjcxLCAweEY3QTgsIDB4MzY3MiwgMHhGN0E5LCAweDM2NzMsIDB4RjdBQSwgMHgzNjc0LA0KKyAgICAweEY3QUIsIDB4MzY3NSwgMHhGN0FDLCAweDM2NzYsIDB4RjdBRCwgMHgzNjc3LCAweEY3QUUsIDB4MzY3OCwNCisgICAgMHhGN0FGLCAweDM2NzksIDB4RjdCMCwgMHgzNjdBLCAweEY3QjEsIDB4MzY3QiwgMHhGN0IyLCAweDM2N0MsDQorICAgIDB4RjdCMywgMHgzNjdELCAweEY3QjQsIDB4MzY3RSwgMHhGN0I1LCAweDM2N0YsIDB4RjdCNiwgMHgzNjgwLA0KKyAgICAweEY3QjcsIDB4MzY4MSwgMHhGN0I4LCAweDM2ODIsIDB4RjdCOSwgMHgzNjgzLCAweEY3QkEsIDB4MzY4NCwNCisgICAgMHhGN0JCLCAweDM2ODUsIDB4RjdCQywgMHgzNjg2LCAweEY3QkQsIDB4MzY4NywgMHhGN0JFLCAweDM2ODgsDQorICAgIDB4RjdCRiwgMHgzNjg5LCAweEY3QzAsIDB4MzY4QSwgMHhGN0MxLCAweDM2OEIsIDB4RjdDMiwgMHgzNjhDLA0KKyAgICAweEY3QzMsIDB4MzY4RCwgMHhGN0M0LCAweDM2OEUsIDB4RjdDNSwgMHgzNjhGLCAweEY3QzYsIDB4MzY5MCwNCisgICAgMHhGN0M3LCAweDM2OTEsIDB4RjdDOCwgMHgzNjkyLCAweEY3QzksIDB4MzY5MywgMHhGN0NBLCAweDM2OTQsDQorICAgIDB4RjdDQiwgMHgzNjk1LCAweEY3Q0MsIDB4MzY5NiwgMHhGN0NELCAweDM2OTcsIDB4RjdDRSwgMHgzNjk4LA0KKyAgICAweEY3Q0YsIDB4MzY5OSwgMHhGN0QwLCAweDM2OUEsIDB4RjdEMSwgMHgzNjlCLCAweEY3RDIsIDB4MzY5QywNCisgICAgMHhGN0QzLCAweDM2OUQsIDB4RjdENCwgMHgzNjlFLCAweEY3RDUsIDB4MzY5RiwgMHhGN0Q2LCAweDM2QTAsDQorICAgIDB4RjdENywgMHgzNkExLCAweEY3RDgsIDB4MzZBMiwgMHhGN0Q5LCAweDM2QTMsIDB4RjdEQSwgMHgzNkE0LA0KKyAgICAweEY3REIsIDB4MzZBNSwgMHhGN0RDLCAweDM2QTYsIDB4RjdERCwgMHgzNkE3LCAweEY3REUsIDB4MzZBOCwNCisgICAgMHhGN0RGLCAweDM2QTksIDB4RjdFMCwgMHgzNkFBLCAweEY3RTEsIDB4MzZBQiwgMHhGN0UyLCAweDM2QUMsDQorICAgIDB4RjdFMywgMHgzNkFELCAweEY3RTQsIDB4MzZBRSwgMHhGN0U1LCAweDM2QUYsIDB4RjdFNiwgMHgzNkIwLA0KKyAgICAweEY3RTcsIDB4MzZCMSwgMHhGN0U4LCAweDM2QjIsIDB4RjdFOSwgMHgzNkIzLCAweEY3RUEsIDB4MzZCNCwNCisgICAgMHhGN0VCLCAweDM2QjUsIDB4RjdFQywgMHgzNkI2LCAweEY3RUQsIDB4MzZCNywgMHhGN0VFLCAweDM2QjgsDQorICAgIDB4RjgxNywgMHgzNkUxLCAweEY4MTgsIDB4MzZFMiwgMHhGODE5LCAweDM2RTMsIDB4RjgxQSwgMHgzNkU0LA0KKyAgICAweEY4MUIsIDB4MzZFNSwgMHhGODFDLCAweDM2RTYsIDB4RjgxRCwgMHgzNkU3LCAweEZBMEMsIDB4MDI3NCwNCisgICAgMHhGQTBELCAweDIzODEsIDB4RkUzMCwgMHgwMDZELCAweEZFMzEsIDB4MDA3QSwgMHhGRTMzLCAweDM1QUYsDQorICAgIDB4RkUzNCwgMHgzNUIxLCAweEZFMzUsIDB4MDA4MiwgMHhGRTM2LCAweDAwODMsIDB4RkUzNywgMHgwMDg2LA0KKyAgICAweEZFMzgsIDB4MDA4NywgMHhGRTM5LCAweDAwOEEsIDB4RkUzQSwgMHgwMDhCLCAweEZFM0IsIDB4MDA4RSwNCisgICAgMHhGRTNDLCAweDAwOEYsIDB4RkUzRCwgMHgwMDkyLCAweEZFM0UsIDB4MDA5MywgMHhGRTNGLCAweDAwOTYsDQorICAgIDB4RkU0MCwgMHgwMDk3LCAweEZFNDEsIDB4MDA5QSwgMHhGRTQyLCAweDAwOUIsIDB4RkU0MywgMHgwMDlFLA0KKyAgICAweEZFNDQsIDB4MDA5RiwgMHhGRTQ5LCAweDAwQzcsIDB4RkU0QSwgMHgwMEM4LCAweEZFNEIsIDB4MDBDQiwNCisgICAgMHhGRTRDLCAweDAwQ0MsIDB4RkU0RCwgMHgwMEM5LCAweEZFNEUsIDB4MDBDQSwgMHhGRTRGLCAweDM1QjIsDQorICAgIDB4RkU1MCwgMHgwMDcwLCAweEZFNTEsIDB4MDA3MSwgMHhGRTUyLCAweDAwNzIsIDB4RkU1NCwgMHgwMDc0LA0KKyAgICAweEZFNTUsIDB4MDA3NSwgMHhGRTU2LCAweDAwNzYsIDB4RkU1NywgMHgwMDc3LCAweEZFNTksIDB4MDBBMCwNCisgICAgMHhGRTVBLCAweDAwQTEsIDB4RkU1QiwgMHgwMEEyLCAweEZFNUMsIDB4MDBBMywgMHhGRTVELCAweDAwQTQsDQorICAgIDB4RkU1RSwgMHgwMEE1LCAweEZFNUYsIDB4MDBDRCwgMHhGRTYwLCAweDAwQ0UsIDB4RkU2MSwgMHgwMENGLA0KKyAgICAweEZFNjIsIDB4MDBERiwgMHhGRTYzLCAweDAwRTAsIDB4RkU2NCwgMHgwMEUxLCAweEZFNjUsIDB4MDBFMiwNCisgICAgMHhGRTY2LCAweDAwRTMsIDB4RkU2OCwgMHgwMTAyLCAweEZFNjksIDB4MDEwQywgMHhGRTZBLCAweDAxMEQsDQorICAgIDB4RkU2QiwgMHgwMTBFLCAweEZGMDEsIDB4MDA2QywgMHhGRjAyLCAweDM2RTQsIDB4RkYwMywgMHgwMEFFLA0KKyAgICAweEZGMDQsIDB4MDEwMywgMHhGRjA1LCAweDAxMDgsIDB4RkYwNiwgMHgwMEFGLCAweEZGMDcsIDB4MzZFMywNCisgICAgMHhGRjA4LCAweDAwODAsIDB4RkYwOSwgMHgwMDgxLCAweEZGMEEsIDB4MDBCMCwgMHhGRjBCLCAweDAwRDAsDQorICAgIDB4RkYwQywgMHgwMDY0LCAweEZGMEQsIDB4MDBEMSwgMHhGRjBFLCAweDAwNjcsIDB4RkYwRiwgMHgwMTAxLA0KKyAgICAweEZGMTAsIDB4MDE0RCwgMHhGRjExLCAweDAxNEUsIDB4RkYxMiwgMHgwMTRGLCAweEZGMTMsIDB4MDE1MCwNCisgICAgMHhGRjE0LCAweDAxNTEsIDB4RkYxNSwgMHgwMTUyLCAweEZGMTYsIDB4MDE1MywgMHhGRjE3LCAweDAxNTQsDQorICAgIDB4RkYxOCwgMHgwMTU1LCAweEZGMTksIDB4MDE1NiwgMHhGRjFBLCAweDAwNkEsIDB4RkYxQiwgMHgwMDY5LA0KKyAgICAweEZGMUMsIDB4MDBENiwgMHhGRjFELCAweDAwRDgsIDB4RkYxRSwgMHgwMEQ3LCAweEZGMUYsIDB4MDA2QiwNCisgICAgMHhGRjIwLCAweDAxMDksIDB4RkYyMSwgMHgwMTZELCAweEZGMjIsIDB4MDE2RSwgMHhGRjIzLCAweDAxNkYsDQorICAgIDB4RkYyNCwgMHgwMTcwLCAweEZGMjUsIDB4MDE3MSwgMHhGRjI2LCAweDAxNzIsIDB4RkYyNywgMHgwMTczLA0KKyAgICAweEZGMjgsIDB4MDE3NCwgMHhGRjI5LCAweDAxNzUsIDB4RkYyQSwgMHgwMTc2LCAweEZGMkIsIDB4MDE3NywNCisgICAgMHhGRjJDLCAweDAxNzgsIDB4RkYyRCwgMHgwMTc5LCAweEZGMkUsIDB4MDE3QSwgMHhGRjJGLCAweDAxN0IsDQorICAgIDB4RkYzMCwgMHgwMTdDLCAweEZGMzEsIDB4MDE3RCwgMHhGRjMyLCAweDAxN0UsIDB4RkYzMywgMHgwMTdGLA0KKyAgICAweEZGMzQsIDB4MDE4MCwgMHhGRjM1LCAweDAxODEsIDB4RkYzNiwgMHgwMTgyLCAweEZGMzcsIDB4MDE4MywNCisgICAgMHhGRjM4LCAweDAxODQsIDB4RkYzOSwgMHgwMTg1LCAweEZGM0EsIDB4MDE4NiwgMHhGRjNCLCAweDM1QkUsDQorICAgIDB4RkYzQywgMHgwMTAyLCAweEZGM0QsIDB4MzVCRiwgMHhGRjNFLCAweDM1QjQsIDB4RkYzRiwgMHgwMEM1LA0KKyAgICAweEZGNDEsIDB4MDE4NywgMHhGRjQyLCAweDAxODgsIDB4RkY0MywgMHgwMTg5LCAweEZGNDQsIDB4MDE4QSwNCisgICAgMHhGRjQ1LCAweDAxOEIsIDB4RkY0NiwgMHgwMThDLCAweEZGNDcsIDB4MDE4RCwgMHhGRjQ4LCAweDAxOEUsDQorICAgIDB4RkY0OSwgMHgwMThGLCAweEZGNEEsIDB4MDE5MCwgMHhGRjRCLCAweDAxOTEsIDB4RkY0QywgMHgwMTkyLA0KKyAgICAweEZGNEQsIDB4MDE5MywgMHhGRjRFLCAweDAxOTQsIDB4RkY0RiwgMHgwMTk1LCAweEZGNTAsIDB4MDE5NiwNCisgICAgMHhGRjUxLCAweDAxOTcsIDB4RkY1MiwgMHgwMTk4LCAweEZGNTMsIDB4MDE5OSwgMHhGRjU0LCAweDAxOUEsDQorICAgIDB4RkY1NSwgMHgwMTlCLCAweEZGNTYsIDB4MDE5QywgMHhGRjU3LCAweDAxOUQsIDB4RkY1OCwgMHgwMTlFLA0KKyAgICAweEZGNTksIDB4MDE5RiwgMHhGRjVBLCAweDAxQTAsIDB4RkY1QiwgMHgwMDg0LCAweEZGNUMsIDB4MDA3OCwNCisgICAgMHhGRjVELCAweDAwODUsIDB4RkY1RSwgMHgwMEU0LCAweEZGNjQsIDB4MDA3MSwgMHhGRkUwLCAweDAxMDYsDQorICAgIDB4RkZFMSwgMHgwMTA3LCAweEZGRTIsIDB4MzZFMSwgMHhGRkUzLCAweDAwQzQsIDB4RkZFNCwgMHgzNkUyLA0KKyAgICAweEZGRTUsIDB4MDEwNCwNCit9Ow0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9VbmlDTlNfVVRGMTZfSF8wX0RXb3JkWzMgKiAzXSA9IHsNCisgICAgMHhEODQwLCAweERDOEEsIDB4MzZCMiwgMHhEODQwLCAweERDQ0MsIDB4MzZCMCwgMHhEODVELCAweERFMDcsIDB4MzZCOCwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL2NtYXBzX2NuczEuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0NOUzEvY21hcHNfY25zMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZhNWE0YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9DTlMxL2NtYXBzX2NuczEuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9yZXNvdXJjZS5oIgorI2luY2x1ZGUgIi4uLy4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX21vZHVsZS5oIgorI2luY2x1ZGUgIi4uLy4uL2ZwZGZfZm9udC9mb250X2ludC5oIgorI2luY2x1ZGUgIi4uL2NtYXBfaW50LmgiCitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9CNXBjX0hfMFtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfQjVwY19WXzBbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0hLc2NzX0I1X0hfNVtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfSEtzY3NfQjVfVl81W107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9FVGVuX0I1X0hfMFtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfRVRlbl9CNV9WXzBbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0VUZW5tc19CNV9IXzBbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0VUZW5tc19CNV9WXzBbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0NOU19FVUNfSF8wW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9DTlNfRVVDX0hfMF9EV29yZFtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfQ05TX0VVQ19WXzBbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0NOU19FVUNfVl8wX0RXb3JkW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9VbmlDTlNfVUNTMl9IXzNbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX1VuaUNOU19VQ1MyX1ZfM1tdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfVW5pQ05TX1VURjE2X0hfMFtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfQ05TMUNJRDJVbmljb2RlXzVbXTsKK2NvbnN0IEZYQ01BUF9DTWFwIGdfRlhDTUFQX0NOUzFfY21hcHNbXSA9IHsKKyAgICB7ICJCNXBjLUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0I1cGNfSF8wLCAyNDcsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAwIH0sCisgICAgeyAiQjVwYy1WIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9CNXBjX1ZfMCwgMTIsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIkhLc2NzLUI1LUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0hLc2NzX0I1X0hfNSwgMTIxMCwgRlhDTUFQX0NNYXA6Ok5vbmUsIE5VTEwsIDAsIDAgfSwKKyAgICB7ICJIS3Njcy1CNS1WIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9IS3Njc19CNV9WXzUsIDEzLCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICJFVGVuLUI1LUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0VUZW5fQjVfSF8wLCAyNTQsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAwIH0sCisgICAgeyAiRVRlbi1CNS1WIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9FVGVuX0I1X1ZfMCwgMTMsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIkVUZW5tcy1CNS1IIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9FVGVubXNfQjVfSF8wLCAxLCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTIgfSwKKyAgICB7ICJFVGVubXMtQjUtViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfRVRlbm1zX0I1X1ZfMCwgMTgsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIkNOUy1FVUMtSCIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfQ05TX0VVQ19IXzAsIDE1NywgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9DTlNfRVVDX0hfMF9EV29yZCwgMjM4LCAwIH0sCisgICAgeyAiQ05TLUVVQy1WIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9DTlNfRVVDX1ZfMCwgMTgwLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0NOU19FVUNfVl8wX0RXb3JkLCAyNjEsIDAgfSwKKyAgICB7ICJVbmlDTlMtVUNTMi1IIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9VbmlDTlNfVUNTMl9IXzMsIDE2NDE4LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIlVuaUNOUy1VQ1MyLVYiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX1VuaUNOU19VQ1MyX1ZfMywgMTMsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIlVuaUNOUy1VVEYxNi1IIiwgRlhDTUFQX0NNYXA6OlNpbmdsZSwgZ19GWENNQVBfVW5pQ05TX1VURjE2X0hfMCwgMTQ1NTcsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAwIH0sCisgICAgeyAiVW5pQ05TLVVURjE2LVYiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX1VuaUNOU19VQ1MyX1ZfMywgMTMsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorfTsKK3ZvaWQgQ1BERl9Nb2R1bGVNZ3I6OkxvYWRFbWJlZGRlZENOUzFDTWFwcygpCit7CisgICAgQ1BERl9Gb250R2xvYmFscyogcEZvbnRHbG9iYWxzID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRQYWdlTW9kdWxlKCktPkdldEZvbnRHbG9iYWxzKCk7CisgICAgcEZvbnRHbG9iYWxzLT5tX0VtYmVkZGVkQ2hhcnNldHNbQ0lEU0VUX0NOUzFdLm1fcE1hcExpc3QgPSBnX0ZYQ01BUF9DTlMxX2NtYXBzOworICAgIHBGb250R2xvYmFscy0+bV9FbWJlZGRlZENoYXJzZXRzW0NJRFNFVF9DTlMxXS5tX0NvdW50ID0gc2l6ZW9mIGdfRlhDTUFQX0NOUzFfY21hcHMgLyBzaXplb2YgKEZYQ01BUF9DTWFwKTsKKyAgICBwRm9udEdsb2JhbHMtPm1fRW1iZWRkZWRUb1VuaWNvZGVzW0NJRFNFVF9DTlMxXS5tX3BNYXAgPSBnX0ZYQ01BUF9DTlMxQ0lEMlVuaWNvZGVfNTsKKyAgICBwRm9udEdsb2JhbHMtPm1fRW1iZWRkZWRUb1VuaWNvZGVzW0NJRFNFVF9DTlMxXS5tX0NvdW50ID0gMTkwODg7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0Fkb2JlLUdCMS1VQ1MyXzUuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0dCMS9BZG9iZS1HQjEtVUNTMl81LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzVlNjZlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0dCMS9BZG9iZS1HQjEtVUNTMl81LmNwcApAQCAtMCwwICsxLDM3OTQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9HQjFDSUQyVW5pY29kZV81WzMwMjg0XSA9IHsKKyAgICAweEZGRkQsIDB4MDAyMCwgMHgwMDIxLCAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwKKyAgICAweDAwMjcsIDB4MDAyOCwgMHgwMDI5LCAweDAwMkEsIDB4MDAyQiwgMHgwMDJDLCAweDAwMkQsIDB4MDAyRSwKKyAgICAweDAwMkYsIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwKKyAgICAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwM0EsIDB4MDAzQiwgMHgwMDNDLCAweDAwM0QsIDB4MDAzRSwKKyAgICAweDAwM0YsIDB4MDA0MCwgMHgwMDQxLCAweDAwNDIsIDB4MDA0MywgMHgwMDQ0LCAweDAwNDUsIDB4MDA0NiwKKyAgICAweDAwNDcsIDB4MDA0OCwgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwgMHgwMDRDLCAweDAwNEQsIDB4MDA0RSwKKyAgICAweDAwNEYsIDB4MDA1MCwgMHgwMDUxLCAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwKKyAgICAweDAwNTcsIDB4MDA1OCwgMHgwMDU5LCAweDAwNUEsIDB4MDA1QiwgMHgwMDVDLCAweDAwNUQsIDB4MDA1RSwKKyAgICAweDAwNUYsIDB4MDA2MCwgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwKKyAgICAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLCAweDAwNkQsIDB4MDA2RSwKKyAgICAweDAwNkYsIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4MDA3MywgMHgwMDc0LCAweDAwNzUsIDB4MDA3NiwKKyAgICAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LCAweDAwN0EsIDB4MDA3QiwgMHgwMDdDLCAweDAwN0QsIDB4MDA3RSwKKyAgICAweDMwMDAsIDB4MzAwMSwgMHgzMDAyLCAweDAwQjcsIDB4MDJDOSwgMHgwMkM3LCAweDAwQTgsIDB4MzAwMywKKyAgICAweDMwMDUsIDB4MjAxNCwgMHhGRjVFLCAweDIwMTYsIDB4MjAyNiwgMHgyMDE4LCAweDIwMTksIDB4MjAxQywKKyAgICAweDIwMUQsIDB4MzAxNCwgMHgzMDE1LCAweDMwMDgsIDB4MzAwOSwgMHgzMDBBLCAweDMwMEIsIDB4MzAwQywKKyAgICAweDMwMEQsIDB4MzAwRSwgMHgzMDBGLCAweDMwMTYsIDB4MzAxNywgMHgzMDEwLCAweDMwMTEsIDB4MDBCMSwKKyAgICAweDAwRDcsIDB4MDBGNywgMHgyMjM2LCAweDIyMjcsIDB4MjIyOCwgMHgyMjExLCAweDIyMEYsIDB4MjIyQSwKKyAgICAweDIyMjksIDB4MjIwOCwgMHgyMjM3LCAweDIyMUEsIDB4MjJBNSwgMHgyMjI1LCAweDIyMjAsIDB4MjMxMiwKKyAgICAweDIyOTksIDB4MjIyQiwgMHgyMjJFLCAweDIyNjEsIDB4MjI0QywgMHgyMjQ4LCAweDIyM0QsIDB4MjIxRCwKKyAgICAweDIyNjAsIDB4MjI2RSwgMHgyMjZGLCAweDIyNjQsIDB4MjI2NSwgMHgyMjFFLCAweDIyMzUsIDB4MjIzNCwKKyAgICAweDI2NDIsIDB4MjY0MCwgMHgwMEIwLCAweDIwMzIsIDB4MjAzMywgMHgyMTAzLCAweEZGMDQsIDB4MDBBNCwKKyAgICAweEZGRTAsIDB4RkZFMSwgMHgyMDMwLCAweDAwQTcsIDB4MjExNiwgMHgyNjA2LCAweDI2MDUsIDB4MjVDQiwKKyAgICAweDI1Q0YsIDB4MjVDRSwgMHgyNUM3LCAweDI1QzYsIDB4MjVBMSwgMHgyNUEwLCAweDI1QjMsIDB4MjVCMiwKKyAgICAweDIwM0IsIDB4MjE5MiwgMHgyMTkwLCAweDIxOTEsIDB4MjE5MywgMHgzMDEzLCAweDI0ODgsIDB4MjQ4OSwKKyAgICAweDI0OEEsIDB4MjQ4QiwgMHgyNDhDLCAweDI0OEQsIDB4MjQ4RSwgMHgyNDhGLCAweDI0OTAsIDB4MjQ5MSwKKyAgICAweDI0OTIsIDB4MjQ5MywgMHgyNDk0LCAweDI0OTUsIDB4MjQ5NiwgMHgyNDk3LCAweDI0OTgsIDB4MjQ5OSwKKyAgICAweDI0OUEsIDB4MjQ5QiwgMHgyNDc0LCAweDI0NzUsIDB4MjQ3NiwgMHgyNDc3LCAweDI0NzgsIDB4MjQ3OSwKKyAgICAweDI0N0EsIDB4MjQ3QiwgMHgyNDdDLCAweDI0N0QsIDB4MjQ3RSwgMHgyNDdGLCAweDI0ODAsIDB4MjQ4MSwKKyAgICAweDI0ODIsIDB4MjQ4MywgMHgyNDg0LCAweDI0ODUsIDB4MjQ4NiwgMHgyNDg3LCAweDI0NjAsIDB4MjQ2MSwKKyAgICAweDI0NjIsIDB4MjQ2MywgMHgyNDY0LCAweDI0NjUsIDB4MjQ2NiwgMHgyNDY3LCAweDI0NjgsIDB4MjQ2OSwKKyAgICAweDMyMjAsIDB4MzIyMSwgMHgzMjIyLCAweDMyMjMsIDB4MzIyNCwgMHgzMjI1LCAweDMyMjYsIDB4MzIyNywKKyAgICAweDMyMjgsIDB4MzIyOSwgMHgyMTYwLCAweDIxNjEsIDB4MjE2MiwgMHgyMTYzLCAweDIxNjQsIDB4MjE2NSwKKyAgICAweDIxNjYsIDB4MjE2NywgMHgyMTY4LCAweDIxNjksIDB4MjE2QSwgMHgyMTZCLCAweEZGMDEsIDB4RkYwMiwKKyAgICAweEZGMDMsIDB4RkZFNSwgMHhGRjA1LCAweEZGMDYsIDB4RkYwNywgMHhGRjA4LCAweEZGMDksIDB4RkYwQSwKKyAgICAweEZGMEIsIDB4RkYwQywgMHhGRjBELCAweEZGMEUsIDB4RkYwRiwgMHhGRjEwLCAweEZGMTEsIDB4RkYxMiwKKyAgICAweEZGMTMsIDB4RkYxNCwgMHhGRjE1LCAweEZGMTYsIDB4RkYxNywgMHhGRjE4LCAweEZGMTksIDB4RkYxQSwKKyAgICAweEZGMUIsIDB4RkYxQywgMHhGRjFELCAweEZGMUUsIDB4RkYxRiwgMHhGRjIwLCAweEZGMjEsIDB4RkYyMiwKKyAgICAweEZGMjMsIDB4RkYyNCwgMHhGRjI1LCAweEZGMjYsIDB4RkYyNywgMHhGRjI4LCAweEZGMjksIDB4RkYyQSwKKyAgICAweEZGMkIsIDB4RkYyQywgMHhGRjJELCAweEZGMkUsIDB4RkYyRiwgMHhGRjMwLCAweEZGMzEsIDB4RkYzMiwKKyAgICAweEZGMzMsIDB4RkYzNCwgMHhGRjM1LCAweEZGMzYsIDB4RkYzNywgMHhGRjM4LCAweEZGMzksIDB4RkYzQSwKKyAgICAweEZGM0IsIDB4RkYzQywgMHhGRjNELCAweEZGM0UsIDB4RkYzRiwgMHhGRjQwLCAweEZGNDEsIDB4RkY0MiwKKyAgICAweEZGNDMsIDB4RkY0NCwgMHhGRjQ1LCAweEZGNDYsIDB4RkY0NywgMHhGRjQ4LCAweEZGNDksIDB4RkY0QSwKKyAgICAweEZGNEIsIDB4RkY0QywgMHhGRjRELCAweEZGNEUsIDB4RkY0RiwgMHhGRjUwLCAweEZGNTEsIDB4RkY1MiwKKyAgICAweEZGNTMsIDB4RkY1NCwgMHhGRjU1LCAweEZGNTYsIDB4RkY1NywgMHhGRjU4LCAweEZGNTksIDB4RkY1QSwKKyAgICAweEZGNUIsIDB4RkY1QywgMHhGRjVELCAweEZGRTMsIDB4MzA0MSwgMHgzMDQyLCAweDMwNDMsIDB4MzA0NCwKKyAgICAweDMwNDUsIDB4MzA0NiwgMHgzMDQ3LCAweDMwNDgsIDB4MzA0OSwgMHgzMDRBLCAweDMwNEIsIDB4MzA0QywKKyAgICAweDMwNEQsIDB4MzA0RSwgMHgzMDRGLCAweDMwNTAsIDB4MzA1MSwgMHgzMDUyLCAweDMwNTMsIDB4MzA1NCwKKyAgICAweDMwNTUsIDB4MzA1NiwgMHgzMDU3LCAweDMwNTgsIDB4MzA1OSwgMHgzMDVBLCAweDMwNUIsIDB4MzA1QywKKyAgICAweDMwNUQsIDB4MzA1RSwgMHgzMDVGLCAweDMwNjAsIDB4MzA2MSwgMHgzMDYyLCAweDMwNjMsIDB4MzA2NCwKKyAgICAweDMwNjUsIDB4MzA2NiwgMHgzMDY3LCAweDMwNjgsIDB4MzA2OSwgMHgzMDZBLCAweDMwNkIsIDB4MzA2QywKKyAgICAweDMwNkQsIDB4MzA2RSwgMHgzMDZGLCAweDMwNzAsIDB4MzA3MSwgMHgzMDcyLCAweDMwNzMsIDB4MzA3NCwKKyAgICAweDMwNzUsIDB4MzA3NiwgMHgzMDc3LCAweDMwNzgsIDB4MzA3OSwgMHgzMDdBLCAweDMwN0IsIDB4MzA3QywKKyAgICAweDMwN0QsIDB4MzA3RSwgMHgzMDdGLCAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAweDMwODMsIDB4MzA4NCwKKyAgICAweDMwODUsIDB4MzA4NiwgMHgzMDg3LCAweDMwODgsIDB4MzA4OSwgMHgzMDhBLCAweDMwOEIsIDB4MzA4QywKKyAgICAweDMwOEQsIDB4MzA4RSwgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAweDMwOTMsIDB4MzBBMSwKKyAgICAweDMwQTIsIDB4MzBBMywgMHgzMEE0LCAweDMwQTUsIDB4MzBBNiwgMHgzMEE3LCAweDMwQTgsIDB4MzBBOSwKKyAgICAweDMwQUEsIDB4MzBBQiwgMHgzMEFDLCAweDMwQUQsIDB4MzBBRSwgMHgzMEFGLCAweDMwQjAsIDB4MzBCMSwKKyAgICAweDMwQjIsIDB4MzBCMywgMHgzMEI0LCAweDMwQjUsIDB4MzBCNiwgMHgzMEI3LCAweDMwQjgsIDB4MzBCOSwKKyAgICAweDMwQkEsIDB4MzBCQiwgMHgzMEJDLCAweDMwQkQsIDB4MzBCRSwgMHgzMEJGLCAweDMwQzAsIDB4MzBDMSwKKyAgICAweDMwQzIsIDB4MzBDMywgMHgzMEM0LCAweDMwQzUsIDB4MzBDNiwgMHgzMEM3LCAweDMwQzgsIDB4MzBDOSwKKyAgICAweDMwQ0EsIDB4MzBDQiwgMHgzMENDLCAweDMwQ0QsIDB4MzBDRSwgMHgzMENGLCAweDMwRDAsIDB4MzBEMSwKKyAgICAweDMwRDIsIDB4MzBEMywgMHgzMEQ0LCAweDMwRDUsIDB4MzBENiwgMHgzMEQ3LCAweDMwRDgsIDB4MzBEOSwKKyAgICAweDMwREEsIDB4MzBEQiwgMHgzMERDLCAweDMwREQsIDB4MzBERSwgMHgzMERGLCAweDMwRTAsIDB4MzBFMSwKKyAgICAweDMwRTIsIDB4MzBFMywgMHgzMEU0LCAweDMwRTUsIDB4MzBFNiwgMHgzMEU3LCAweDMwRTgsIDB4MzBFOSwKKyAgICAweDMwRUEsIDB4MzBFQiwgMHgzMEVDLCAweDMwRUQsIDB4MzBFRSwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwKKyAgICAweDMwRjIsIDB4MzBGMywgMHgzMEY0LCAweDMwRjUsIDB4MzBGNiwgMHgwMzkxLCAweDAzOTIsIDB4MDM5MywKKyAgICAweDAzOTQsIDB4MDM5NSwgMHgwMzk2LCAweDAzOTcsIDB4MDM5OCwgMHgwMzk5LCAweDAzOUEsIDB4MDM5QiwKKyAgICAweDAzOUMsIDB4MDM5RCwgMHgwMzlFLCAweDAzOUYsIDB4MDNBMCwgMHgwM0ExLCAweDAzQTMsIDB4MDNBNCwKKyAgICAweDAzQTUsIDB4MDNBNiwgMHgwM0E3LCAweDAzQTgsIDB4MDNBOSwgMHgwM0IxLCAweDAzQjIsIDB4MDNCMywKKyAgICAweDAzQjQsIDB4MDNCNSwgMHgwM0I2LCAweDAzQjcsIDB4MDNCOCwgMHgwM0I5LCAweDAzQkEsIDB4MDNCQiwKKyAgICAweDAzQkMsIDB4MDNCRCwgMHgwM0JFLCAweDAzQkYsIDB4MDNDMCwgMHgwM0MxLCAweDAzQzMsIDB4MDNDNCwKKyAgICAweDAzQzUsIDB4MDNDNiwgMHgwM0M3LCAweDAzQzgsIDB4MDNDOSwgMHhGRjBDLCAweDMwMDIsIDB4MzAwMSwKKyAgICAweEZGMUEsIDB4RkYxQiwgMHhGRjAxLCAweEZGMUYsIDB4RkUzNSwgMHhGRTM2LCAweEZFMzksIDB4RkUzQSwKKyAgICAweEZFM0YsIDB4RkU0MCwgMHhGRTNELCAweEZFM0UsIDB4RkU0MSwgMHhGRTQyLCAweEZFNDMsIDB4RkU0NCwKKyAgICAweDMwMTYsIDB4MzAxNywgMHhGRTNCLCAweEZFM0MsIDB4RkUzNywgMHhGRTM4LCAweEZFMzEsIDB4MjAyNiwKKyAgICAweEZFMzMsIDB4RkUzNCwgMHgwNDEwLCAweDA0MTEsIDB4MDQxMiwgMHgwNDEzLCAweDA0MTQsIDB4MDQxNSwKKyAgICAweDA0MDEsIDB4MDQxNiwgMHgwNDE3LCAweDA0MTgsIDB4MDQxOSwgMHgwNDFBLCAweDA0MUIsIDB4MDQxQywKKyAgICAweDA0MUQsIDB4MDQxRSwgMHgwNDFGLCAweDA0MjAsIDB4MDQyMSwgMHgwNDIyLCAweDA0MjMsIDB4MDQyNCwKKyAgICAweDA0MjUsIDB4MDQyNiwgMHgwNDI3LCAweDA0MjgsIDB4MDQyOSwgMHgwNDJBLCAweDA0MkIsIDB4MDQyQywKKyAgICAweDA0MkQsIDB4MDQyRSwgMHgwNDJGLCAweDA0MzAsIDB4MDQzMSwgMHgwNDMyLCAweDA0MzMsIDB4MDQzNCwKKyAgICAweDA0MzUsIDB4MDQ1MSwgMHgwNDM2LCAweDA0MzcsIDB4MDQzOCwgMHgwNDM5LCAweDA0M0EsIDB4MDQzQiwKKyAgICAweDA0M0MsIDB4MDQzRCwgMHgwNDNFLCAweDA0M0YsIDB4MDQ0MCwgMHgwNDQxLCAweDA0NDIsIDB4MDQ0MywKKyAgICAweDA0NDQsIDB4MDQ0NSwgMHgwNDQ2LCAweDA0NDcsIDB4MDQ0OCwgMHgwNDQ5LCAweDA0NEEsIDB4MDQ0QiwKKyAgICAweDA0NEMsIDB4MDQ0RCwgMHgwNDRFLCAweDA0NEYsIDB4MDEwMSwgMHgwMEUxLCAweDAxQ0UsIDB4MDBFMCwKKyAgICAweDAxMTMsIDB4MDBFOSwgMHgwMTFCLCAweDAwRTgsIDB4MDEyQiwgMHgwMEVELCAweDAxRDAsIDB4MDBFQywKKyAgICAweDAxNEQsIDB4MDBGMywgMHgwMUQyLCAweDAwRjIsIDB4MDE2QiwgMHgwMEZBLCAweDAxRDQsIDB4MDBGOSwKKyAgICAweDAxRDYsIDB4MDFEOCwgMHgwMURBLCAweDAxREMsIDB4MDBGQywgMHgwMEVBLCAweDAyNTEsIDB4MUUzRiwKKyAgICAweDAxNDQsIDB4MDE0OCwgMHgwMUY5LCAweDAyNjEsIDB4MzEwNSwgMHgzMTA2LCAweDMxMDcsIDB4MzEwOCwKKyAgICAweDMxMDksIDB4MzEwQSwgMHgzMTBCLCAweDMxMEMsIDB4MzEwRCwgMHgzMTBFLCAweDMxMEYsIDB4MzExMCwKKyAgICAweDMxMTEsIDB4MzExMiwgMHgzMTEzLCAweDMxMTQsIDB4MzExNSwgMHgzMTE2LCAweDMxMTcsIDB4MzExOCwKKyAgICAweDMxMTksIDB4MzExQSwgMHgzMTFCLCAweDMxMUMsIDB4MzExRCwgMHgzMTFFLCAweDMxMUYsIDB4MzEyMCwKKyAgICAweDMxMjEsIDB4MzEyMiwgMHgzMTIzLCAweDMxMjQsIDB4MzEyNSwgMHgzMTI2LCAweDMxMjcsIDB4MzEyOCwKKyAgICAweDMxMjksIDB4RTdDRCwgMHgyNTAwLCAweDI1MDEsIDB4MjUwMiwgMHgyNTAzLCAweDI1MDQsIDB4MjUwNSwKKyAgICAweDI1MDYsIDB4MjUwNywgMHgyNTA4LCAweDI1MDksIDB4MjUwQSwgMHgyNTBCLCAweDI1MEMsIDB4MjUwRCwKKyAgICAweDI1MEUsIDB4MjUwRiwgMHgyNTEwLCAweDI1MTEsIDB4MjUxMiwgMHgyNTEzLCAweDI1MTQsIDB4MjUxNSwKKyAgICAweDI1MTYsIDB4MjUxNywgMHgyNTE4LCAweDI1MTksIDB4MjUxQSwgMHgyNTFCLCAweDI1MUMsIDB4MjUxRCwKKyAgICAweDI1MUUsIDB4MjUxRiwgMHgyNTIwLCAweDI1MjEsIDB4MjUyMiwgMHgyNTIzLCAweDI1MjQsIDB4MjUyNSwKKyAgICAweDI1MjYsIDB4MjUyNywgMHgyNTI4LCAweDI1MjksIDB4MjUyQSwgMHgyNTJCLCAweDI1MkMsIDB4MjUyRCwKKyAgICAweDI1MkUsIDB4MjUyRiwgMHgyNTMwLCAweDI1MzEsIDB4MjUzMiwgMHgyNTMzLCAweDI1MzQsIDB4MjUzNSwKKyAgICAweDI1MzYsIDB4MjUzNywgMHgyNTM4LCAweDI1MzksIDB4MjUzQSwgMHgyNTNCLCAweDI1M0MsIDB4MjUzRCwKKyAgICAweDI1M0UsIDB4MjUzRiwgMHgyNTQwLCAweDI1NDEsIDB4MjU0MiwgMHgyNTQzLCAweDI1NDQsIDB4MjU0NSwKKyAgICAweDI1NDYsIDB4MjU0NywgMHgyNTQ4LCAweDI1NDksIDB4MjU0QSwgMHgyNTRCLCAweDAwMjEsIDB4MDAyMiwKKyAgICAweDAwMjMsIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywgMHgwMDI4LCAweDAwMjksIDB4MDAyQSwKKyAgICAweDAwMkIsIDB4MDAyQywgMHgwMDJELCAweDAwMkUsIDB4MDAyRiwgMHgwMDMwLCAweDAwMzEsIDB4MDAzMiwKKyAgICAweDAwMzMsIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsIDB4MDAzNywgMHgwMDM4LCAweDAwMzksIDB4MDAzQSwKKyAgICAweDAwM0IsIDB4MDAzQywgMHgwMDNELCAweDAwM0UsIDB4MDAzRiwgMHgwMDQwLCAweDAwNDEsIDB4MDA0MiwKKyAgICAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LCAweDAwNDYsIDB4MDA0NywgMHgwMDQ4LCAweDAwNDksIDB4MDA0QSwKKyAgICAweDAwNEIsIDB4MDA0QywgMHgwMDRELCAweDAwNEUsIDB4MDA0RiwgMHgwMDUwLCAweDAwNTEsIDB4MDA1MiwKKyAgICAweDAwNTMsIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywgMHgwMDU4LCAweDAwNTksIDB4MDA1QSwKKyAgICAweDAwNUIsIDB4MDA1QywgMHgwMDVELCAweDAwNUUsIDB4MDA1RiwgMHgwMDYwLCAweDAwNjEsIDB4MDA2MiwKKyAgICAweDAwNjMsIDB4MDA2NCwgMHgwMDY1LCAweDAwNjYsIDB4MDA2NywgMHgwMDY4LCAweDAwNjksIDB4MDA2QSwKKyAgICAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwKKyAgICAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywgMHgwMDc4LCAweDAwNzksIDB4MDA3QSwKKyAgICAweDAwN0IsIDB4MDA3QywgMHgwMDdELCAweDAwN0UsIDB4MDEwMSwgMHgwMEUxLCAweDAxQ0UsIDB4MDBFMCwKKyAgICAweDAxMTMsIDB4MDBFOSwgMHgwMTFCLCAweDAwRTgsIDB4MDEyQiwgMHgwMEVELCAweDAxRDAsIDB4MDBFQywKKyAgICAweDAxNEQsIDB4MDBGMywgMHgwMUQyLCAweDAwRjIsIDB4MDE2QiwgMHgwMEZBLCAweDAxRDQsIDB4MDBGOSwKKyAgICAweDAxRDYsIDB4MDFEOCwgMHgwMURBLCAweDAxREMsIDB4MDBGQywgMHgwMEVBLCAweDAyNTEsIDB4MUUzRiwKKyAgICAweDAxNDQsIDB4MDE0OCwgMHgwMUY5LCAweDAyNjEsIDB4NTU0QSwgMHg5NjNGLCAweDU3QzMsIDB4NjMyOCwKKyAgICAweDU0Q0UsIDB4NTUwOSwgMHg1NEMwLCAweDc2OTEsIDB4NzY0QywgMHg4NTNDLCAweDc3RUUsIDB4ODI3RSwKKyAgICAweDc4OEQsIDB4NzIzMSwgMHg5Njk4LCAweDk3OEQsIDB4NkMyOCwgMHg1Qjg5LCAweDRGRkEsIDB4NjMwOSwKKyAgICAweDY2OTcsIDB4NUNCOCwgMHg4MEZBLCAweDY4NDgsIDB4ODBBRSwgMHg2NjAyLCAweDc2Q0UsIDB4NTFGOSwKKyAgICAweDY1NTYsIDB4NzFBQywgMHg3RkYxLCAweDg4ODQsIDB4NTBCMiwgMHg1OTY1LCAweDYxQ0EsIDB4NkZCMywKKyAgICAweDgyQUQsIDB4NjM0QywgMHg2MjUyLCAweDUzRUQsIDB4NTQyNywgMHg3QjA2LCAweDUxNkIsIDB4NzVBNCwKKyAgICAweDVERjQsIDB4NjJENCwgMHg4RENCLCAweDk3NzYsIDB4NjI4QSwgMHg4MDE5LCAweDU3NUQsIDB4OTczOCwKKyAgICAweDdGNjIsIDB4NzIzOCwgMHg3NjdELCAweDY3Q0YsIDB4NzY3RSwgMHg2NDQ2LCAweDRGNzAsIDB4OEQyNSwKKyAgICAweDYyREMsIDB4N0ExNywgMHg2NTkxLCAweDczRUQsIDB4NjQyQywgMHg2MjczLCAweDgyMkMsIDB4OTg4MSwKKyAgICAweDY3N0YsIDB4NzI0OCwgMHg2MjZFLCAweDYyQ0MsIDB4NEYzNCwgMHg3NEUzLCAweDUzNEEsIDB4NTI5RSwKKyAgICAweDdFQ0EsIDB4OTBBNiwgMHg1RTJFLCAweDY4ODYsIDB4Njk5QywgMHg4MTgwLCAweDdFRDEsIDB4NjhEMiwKKyAgICAweDc4QzUsIDB4ODY4QywgMHg5NTUxLCAweDUwOEQsIDB4OEMyNCwgMHg4MkRFLCAweDgwREUsIDB4NTMwNSwKKyAgICAweDg5MTIsIDB4NTI2NSwgMHg4NTg0LCAweDk2RjksIDB4NEZERCwgMHg1ODIxLCAweDk5NzEsIDB4NUI5RCwKKyAgICAweDYyQjEsIDB4NjJBNSwgMHg2NkI0LCAweDhDNzksIDB4OUM4RCwgMHg3MjA2LCAweDY3NkYsIDB4Nzg5MSwKKyAgICAweDYwQjIsIDB4NTM1MSwgMHg1MzE3LCAweDhGODgsIDB4ODBDQywgMHg4RDFELCAweDk0QTEsIDB4NTAwRCwKKyAgICAweDcyQzgsIDB4NTkwNywgMHg2MEVCLCAweDcxMTksIDB4ODhBQiwgMHg1OTU0LCAweDgyRUYsIDB4NjcyQywKKyAgICAweDdCMjgsIDB4NUQyOSwgMHg3RUY3LCAweDc1MkQsIDB4NkNGNSwgMHg4RTY2LCAweDhGRjgsIDB4OTAzQywKKyAgICAweDlGM0IsIDB4NkJENCwgMHg5MTE5LCAweDdCMTQsIDB4NUY3QywgMHg3OEE3LCAweDg0RDYsIDB4ODUzRCwKKyAgICAweDZCRDUsIDB4NkJEOSwgMHg2QkQ2LCAweDVFMDEsIDB4NUU4NywgMHg3NUY5LCAweDk1RUQsIDB4NjU1RCwKKyAgICAweDVGMEEsIDB4NUZDNSwgMHg4RjlGLCAweDU4QzEsIDB4ODFDMiwgMHg5MDdGLCAweDk2NUIsIDB4OTdBRCwKKyAgICAweDhGQjksIDB4N0YxNiwgMHg4RDJDLCAweDYyNDEsIDB4NEZCRiwgMHg1M0Q4LCAweDUzNUUsIDB4OEZBOCwKKyAgICAweDhGQTksIDB4OEZBQiwgMHg5MDRELCAweDY4MDcsIDB4NUY2QSwgMHg4MTk4LCAweDg4NjgsIDB4OUNENiwKKyAgICAweDYxOEIsIDB4NTIyQiwgMHg3NjJBLCAweDVGNkMsIDB4NjU4QywgMHg2RkQyLCAweDZFRTgsIDB4NUJCRSwKKyAgICAweDY0NDgsIDB4NTE3NSwgMHg1MUIwLCAweDY3QzQsIDB4NEUxOSwgMHg3OUM5LCAweDk5N0MsIDB4NzBCMywKKyAgICAweDc1QzUsIDB4NUU3NiwgMHg3M0JCLCAweDgzRTAsIDB4NjRBRCwgMHg2MkU4LCAweDk0QjUsIDB4NkNFMiwKKyAgICAweDUzNUEsIDB4NTJDMywgMHg2NDBGLCAweDk0QzIsIDB4N0I5NCwgMHg0RjJGLCAweDVFMUIsIDB4ODIzNiwKKyAgICAweDgxMTYsIDB4ODE4QSwgMHg2RTI0LCAweDZDQ0EsIDB4OUE3MywgMHg2MzU1LCAweDUzNUMsIDB4NTRGQSwKKyAgICAweDg4NjUsIDB4NTdFMCwgMHg0RTBELCAweDVFMDMsIDB4NkI2NSwgMHg3QzNGLCAweDkwRTgsIDB4NjAxNiwKKyAgICAweDY0RTYsIDB4NzMxQywgMHg4OEMxLCAweDY3NTAsIDB4NjI0RCwgMHg4RDIyLCAweDc3NkMsIDB4OEUyOSwKKyAgICAweDkxQzcsIDB4NUY2OSwgMHg4M0RDLCAweDg1MjEsIDB4OTkxMCwgMHg1M0MyLCAweDg2OTUsIDB4NkI4QiwKKyAgICAweDYwRUQsIDB4NjBFOCwgMHg3MDdGLCAweDgyQ0QsIDB4ODIzMSwgMHg0RUQzLCAweDZDQTcsIDB4ODVDRiwKKyAgICAweDY0Q0QsIDB4N0NEOSwgMHg2OUZELCAweDY2RjksIDB4ODM0OSwgMHg1Mzk1LCAweDdCNTYsIDB4NEZBNywKKyAgICAweDUxOEMsIDB4NkQ0QiwgMHg1QzQyLCAweDhFNkQsIDB4NjNEMiwgMHg1M0M5LCAweDgzMkMsIDB4ODMzNiwKKyAgICAweDY3RTUsIDB4NzhCNCwgMHg2NDNELCAweDVCREYsIDB4NUM5NCwgMHg1REVFLCAweDhCRTcsIDB4NjJDNiwKKyAgICAweDY3RjQsIDB4OEM3QSwgMHg2NDAwLCAweDYzQkEsIDB4ODc0OSwgMHg5OThCLCAweDhDMTcsIDB4N0YyMCwKKyAgICAweDk0RjIsIDB4NEVBNywgMHg5NjEwLCAweDk4QTQsIDB4NjYwQywgMHg3MzE2LCAweDU3M0EsIDB4NUMxRCwKKyAgICAweDVFMzgsIDB4OTU3RiwgMHg1MDdGLCAweDgwQTAsIDB4NTM4MiwgMHg2NTVFLCAweDc1NDUsIDB4NTUzMSwKKyAgICAweDUwMjEsIDB4OEQ4NSwgMHg2Mjg0LCAweDk0OUUsIDB4NjcxRCwgMHg1NjMyLCAweDZGNkUsIDB4NURFMiwKKyAgICAweDU0MzUsIDB4NzA5MiwgMHg4RjY2LCAweDYyNkYsIDB4NjRBNCwgMHg2M0EzLCAweDVGN0IsIDB4NkY4OCwKKyAgICAweDkwRjQsIDB4ODFFMywgMHg4RkIwLCAweDVDMTgsIDB4NjY2OCwgMHg1RkYxLCAweDZDODksIDB4OTY0OCwKKyAgICAweDhEODEsIDB4ODg2QywgMHg2NDkxLCAweDc5RjAsIDB4NTdDRSwgMHg2QTU5LCAweDYyMTAsIDB4NTQ0OCwKKyAgICAweDRFNTgsIDB4N0EwQiwgMHg2MEU5LCAweDZGODQsIDB4OEJEQSwgMHg2MjdGLCAweDkwMUUsIDB4OUE4QiwKKyAgICAweDc5RTQsIDB4NTQwMywgMHg3NUY0LCAweDYzMDEsIDB4NTMxOSwgMHg2QzYwLCAweDhGREYsIDB4NUYxQiwKKyAgICAweDlBNzAsIDB4ODAzQiwgMHg5RjdGLCAweDRGODgsIDB4NUMzQSwgMHg4RDY0LCAweDdGQzUsIDB4NjVBNSwKKyAgICAweDcwQkQsIDB4NTE0NSwgMHg1MUIyLCAweDg2NkIsIDB4NUQwNywgMHg1QkEwLCAweDYyQkQsIDB4OTE2QywKKyAgICAweDc1NzQsIDB4OEUwQywgMHg3QTIwLCAweDYxMDEsIDB4N0I3OSwgMHg0RUM3LCAweDdFRjgsIDB4Nzc4NSwKKyAgICAweDRFMTEsIDB4ODFFRCwgMHg1MjFELCAweDUxRkEsIDB4NkE3MSwgMHg1M0E4LCAweDhFODcsIDB4OTUwNCwKKyAgICAweDk2Q0YsIDB4NkVDMSwgMHg5NjY0LCAweDY5NUEsIDB4Nzg0MCwgMHg1MEE4LCAweDc3RDcsIDB4NjQxMCwKKyAgICAweDg5RTYsIDB4NTkwNCwgMHg2M0UzLCAweDVEREQsIDB4N0E3RiwgMHg2OTNELCAweDRGMjAsIDB4ODIzOSwKKyAgICAweDU1OTgsIDB4NEUzMiwgMHg3NUFFLCAweDdBOTcsIDB4NUU2MiwgMHg1RThBLCAweDk1RUYsIDB4NTIxQiwKKyAgICAweDU0MzksIDB4NzA4QSwgMHg2Mzc2LCAweDk1MjQsIDB4NTc4MiwgMHg2NjI1LCAweDY5M0YsIDB4OTE4NywKKyAgICAweDU1MDcsIDB4NkRGMywgMHg3RUFGLCAweDg4MjIsIDB4NjIzMywgMHg3RUYwLCAweDc1QjUsIDB4ODMyOCwKKyAgICAweDc4QzEsIDB4OTZDQywgMHg4RjlFLCAweDYxNDgsIDB4NzRGNywgMHg4QkNELCAweDZCNjQsIDB4NTIzQSwKKyAgICAweDhENTAsIDB4NkIyMSwgMHg4MDZBLCAweDg0NzEsIDB4NTZGMSwgMHg1MzA2LCAweDRFQ0UsIDB4NEUxQiwKKyAgICAweDUxRDEsIDB4N0M5NywgMHg5MThCLCAweDdDMDcsIDB4NEZDMywgMHg4RTdGLCAweDdCRTEsIDB4N0E5QywKKyAgICAweDY0NjcsIDB4NUQxNCwgMHg1MEFDLCAweDgxMDYsIDB4NzYwMSwgMHg3Q0I5LCAweDZERUMsIDB4N0ZFMCwKKyAgICAweDY3NTEsIDB4NUI1OCwgMHg1QkY4LCAweDc4Q0IsIDB4NjRBRSwgMHg2NDEzLCAweDYzQUEsIDB4NjMyQiwKKyAgICAweDk1MTksIDB4NjQyRCwgMHg4RkJFLCAweDdCNTQsIDB4NzYyOSwgMHg2MjUzLCAweDU5MjcsIDB4NTQ0NiwKKyAgICAweDZCNzksIDB4NTBBMywgMHg2MjM0LCAweDVFMjYsIDB4NkI4NiwgMHg0RUUzLCAweDhEMzcsIDB4ODg4QiwKKyAgICAweDVGODUsIDB4OTAyRSwgMHg2MDIwLCAweDgwM0QsIDB4NjJDNSwgMHg0RTM5LCAweDUzNTUsIDB4OTBGOCwKKyAgICAweDYzQjgsIDB4ODBDNiwgMHg2NUU2LCAweDZDMkUsIDB4NEY0NiwgMHg2MEVFLCAweDZERTEsIDB4OEJERSwKKyAgICAweDVGMzksIDB4ODZDQiwgMHg1RjUzLCAweDYzMjEsIDB4NTE1QSwgMHg4MzYxLCAweDY4NjMsIDB4NTIwMCwKKyAgICAweDYzNjMsIDB4OEU0OCwgMHg1MDEyLCAweDVDOUIsIDB4Nzk3NywgMHg1QkZDLCAweDUyMzAsIDB4N0EzQiwKKyAgICAweDYwQkMsIDB4OTA1MywgMHg3NkQ3LCAweDVGQjcsIDB4NUY5NywgMHg3Njg0LCAweDhFNkMsIDB4NzA2RiwKKyAgICAweDc2N0IsIDB4N0I0OSwgMHg3N0FBLCAweDUxRjMsIDB4OTA5MywgMHg1ODI0LCAweDRGNEUsIDB4NkVGNCwKKyAgICAweDhGRUEsIDB4NjU0QywgMHg3QjFCLCAweDcyQzQsIDB4NkRBNCwgMHg3RkRGLCAweDVBRTEsIDB4NjJCNSwKKyAgICAweDVFOTUsIDB4NTczMCwgMHg4NDgyLCAweDdCMkMsIDB4NUUxRCwgMHg1RjFGLCAweDkwMTIsIDB4N0YxNCwKKyAgICAweDk4QTAsIDB4NjM4MiwgMHg2RUM3LCAweDc4OTgsIDB4NzBCOSwgMHg1MTc4LCAweDk3NUIsIDB4NTdBQiwKKyAgICAweDc1MzUsIDB4NEY0MywgMHg3NTM4LCAweDVFOTcsIDB4NjBFNiwgMHg1OTYwLCAweDZEQzAsIDB4NkJCRiwKKyAgICAweDc4ODksIDB4NTNGQywgMHg5NkQ1LCAweDUxQ0IsIDB4NTIwMSwgMHg2Mzg5LCAweDU0MEEsIDB4OTQ5MywKKyAgICAweDhDMDMsIDB4OERDQywgMHg3MjM5LCAweDc4OUYsIDB4ODc3NiwgMHg4RkVELCAweDhDMEQsIDB4NTNFMCwKKyAgICAweDRFMDEsIDB4NzZFRiwgMHg1M0VFLCAweDk0ODksIDB4OTg3NiwgMHg5RjBFLCAweDk1MkQsIDB4NUI5QSwKKyAgICAweDhCQTIsIDB4NEUyMiwgMHg0RTFDLCAweDUxQUMsIDB4ODQ2MywgMHg2MUMyLCAweDUyQTgsIDB4NjgwQiwKKyAgICAweDRGOTcsIDB4NjA2QiwgMHg1MUJCLCAweDZEMUUsIDB4NTE1QywgMHg2Mjk2LCAweDY1OTcsIDB4OTY2MSwKKyAgICAweDhDNDYsIDB4OTAxNywgMHg3NUQ4LCAweDkwRkQsIDB4Nzc2MywgMHg2QkQyLCAweDcyOEEsIDB4NzJFQywKKyAgICAweDhCRkIsIDB4NTgzNSwgMHg3Nzc5LCAweDhENEMsIDB4Njc1QywgMHg5NTQwLCAweDgwOUEsIDB4NUVBNiwKKyAgICAweDZFMjEsIDB4NTk5MiwgMHg3QUVGLCAweDc3RUQsIDB4OTUzQiwgMHg2QkI1LCAweDY1QUQsIDB4N0YwRSwKKyAgICAweDU4MDYsIDB4NTE1MSwgMHg5NjFGLCAweDVCRjksIDB4NThBOSwgMHg1NDI4LCAweDhFNzIsIDB4NjU2NiwKKyAgICAweDk4N0YsIDB4NTZFNCwgMHg5NDlELCAweDc2RkUsIDB4OTA0MSwgMHg2Mzg3LCAweDU0QzYsIDB4NTkxQSwKKyAgICAweDU5M0EsIDB4NTc5QiwgMHg4RUIyLCAweDY3MzUsIDB4OERGQSwgMHg4MjM1LCAweDUyNDEsIDB4NjBGMCwKKyAgICAweDU4MTUsIDB4ODZGRSwgMHg1Q0U4LCAweDlFNDUsIDB4NEZDNCwgMHg5ODlELCAweDhCQjksIDB4NUEyNSwKKyAgICAweDYwNzYsIDB4NTM4NCwgMHg2MjdDLCAweDkwNEYsIDB4OTEwMiwgMHg5OTdGLCAweDYwNjksIDB4ODAwQywKKyAgICAweDUxM0YsIDB4ODAzMywgMHg1QzE0LCAweDk5NzUsIDB4NkQzMSwgMHg0RThDLCAweDhEMzAsIDB4NTNEMSwKKyAgICAweDdGNUEsIDB4N0I0RiwgMHg0RjEwLCAweDRFNEYsIDB4OTYwMCwgMHg2Q0Q1LCAweDczRDAsIDB4ODVFOSwKKyAgICAweDVFMDYsIDB4NzU2QSwgMHg3RkZCLCAweDZBMEEsIDB4NzdGRSwgMHg5NDkyLCAweDdFNDEsIDB4NTFFMSwKKyAgICAweDcwRTYsIDB4NTNDRCwgMHg4RkQ0LCAweDgzMDMsIDB4OEQyOSwgMHg3MkFGLCAweDk5NkQsIDB4NkNEQiwKKyAgICAweDU3NEEsIDB4ODJCMywgMHg2NUI5LCAweDgwQUEsIDB4NjIzRiwgMHg5NjMyLCAweDU5QTgsIDB4NEVGRiwKKyAgICAweDhCQkYsIDB4N0VCQSwgMHg2NTNFLCAweDgzRjIsIDB4OTc1RSwgMHg1NTYxLCAweDk4REUsIDB4ODBBNSwKKyAgICAweDUzMkEsIDB4OEJGRCwgMHg1NDIwLCAweDgwQkEsIDB4NUU5RiwgMHg2Q0I4LCAweDhEMzksIDB4ODJBQywKKyAgICAweDkxNUEsIDB4NTQyOSwgMHg2QzFCLCAweDUyMDYsIDB4N0VCNywgMHg1NzVGLCAweDcxMUEsIDB4NkM3RSwKKyAgICAweDdDODksIDB4NTk0QiwgMHg0RUZELCAweDVGRkYsIDB4NjEyNCwgMHg3Q0FBLCAweDRFMzAsIDB4NUMwMSwKKyAgICAweDY3QUIsIDB4ODcwMiwgMHg1Q0YwLCAweDk1MEIsIDB4OThDRSwgMHg3NUFGLCAweDcwRkQsIDB4OTAyMiwKKyAgICAweDUxQUYsIDB4N0YxRCwgMHg4QkJELCAweDU5NDksIDB4NTFFNCwgMHg0RjVCLCAweDU0MjYsIDB4NTkyQiwKKyAgICAweDY1NzcsIDB4ODBBNCwgMHg1Qjc1LCAweDYyNzYsIDB4NjJDMiwgMHg4RjkwLCAweDVFNDUsIDB4NkMxRiwKKyAgICAweDdCMjYsIDB4NEYwRiwgMHg0RkQ4LCAweDY3MEQsIDB4NkQ2RSwgMHg2REFBLCAweDc5OEYsIDB4ODhCMSwKKyAgICAweDVGMTcsIDB4NzUyQiwgMHg2MjlBLCAweDhGODUsIDB4NEZFRiwgMHg5MURDLCAweDY1QTcsIDB4ODEyRiwKKyAgICAweDgxNTEsIDB4NUU5QywgMHg4MTUwLCAweDhENzQsIDB4NTI2RiwgMHg4OTg2LCAweDhENEIsIDB4NTkwRCwKKyAgICAweDUwODUsIDB4NEVEOCwgMHg5NjFDLCAweDcyMzYsIDB4ODE3OSwgMHg4RDFGLCAweDVCQ0MsIDB4OEJBMywKKyAgICAweDk2NDQsIDB4NTk4NywgMHg3RjFBLCAweDU0OTAsIDB4NTY3NiwgMHg1NjBFLCAweDhCRTUsIDB4NjUzOSwKKyAgICAweDY5ODIsIDB4OTQ5OSwgMHg3NkQ2LCAweDZFODksIDB4NUU3MiwgMHg3NTE4LCAweDY3NDYsIDB4NjdEMSwKKyAgICAweDdBRkYsIDB4ODA5RCwgMHg4RDc2LCAweDYxMUYsIDB4NzlDNiwgMHg2NTYyLCAweDhENjMsIDB4NTE4OCwKKyAgICAweDUyMUEsIDB4OTRBMiwgMHg3RjM4LCAweDgwOUIsIDB4N0VCMiwgMHg1Qzk3LCAweDZFMkYsIDB4Njc2MCwKKyAgICAweDdCRDksIDB4NzY4QiwgMHg5QUQ4LCAweDgxOEYsIDB4N0Y5NCwgMHg3Q0Q1LCAweDY0MUUsIDB4OTU1MCwKKyAgICAweDdBM0YsIDB4NTQ0QSwgMHg1NEU1LCAweDZCNEMsIDB4NjQwMSwgMHg2MjA4LCAweDlFM0QsIDB4ODBGMywKKyAgICAweDc1OTksIDB4NTI3MiwgMHg5NzY5LCAweDg0NUIsIDB4NjgzQywgMHg4NkU0LCAweDk2MDEsIDB4OTY5NCwKKyAgICAweDk0RUMsIDB4NEUyQSwgMHg1NDA0LCAweDdFRDksIDB4NjgzOSwgMHg4RERGLCAweDgwMTUsIDB4NjZGNCwKKyAgICAweDVFOUEsIDB4N0ZCOSwgMHg1N0MyLCAweDgwM0YsIDB4Njg5NywgMHg1REU1LCAweDY1M0IsIDB4NTI5RiwKKyAgICAweDYwNkQsIDB4OUY5QSwgMHg0RjlCLCAweDhFQUMsIDB4NTE2QywgMHg1QkFCLCAweDVGMTMsIDB4NURFOSwKKyAgICAweDZDNUUsIDB4NjJGMSwgMHg4RDIxLCAweDUxNzEsIDB4OTRBOSwgMHg1MkZFLCAweDZDOUYsIDB4ODJERiwKKyAgICAweDcyRDcsIDB4NTdBMiwgMHg2Nzg0LCAweDhEMkQsIDB4NTkxRiwgMHg4RjlDLCAweDgzQzcsIDB4NTQ5NSwKKyAgICAweDdCOEQsIDB4NEYzMCwgMHg2Q0JELCAweDVCNjQsIDB4NTlEMSwgMHg5RjEzLCAweDUzRTQsIDB4ODZDQSwKKyAgICAweDlBQTgsIDB4OEMzNywgMHg4MEExLCAweDY1NDUsIDB4OTg3RSwgMHg1NkZBLCAweDk2QzcsIDB4NTIyRSwKKyAgICAweDc0REMsIDB4NTI1MCwgMHg1QkUxLCAweDYzMDIsIDB4ODkwMiwgMHg0RTU2LCAweDYyRDAsIDB4NjAyQSwKKyAgICAweDY4RkEsIDB4NTE3MywgMHg1Qjk4LCAweDUxQTAsIDB4ODlDMiwgMHg3QkExLCAweDk5ODYsIDB4N0Y1MCwKKyAgICAweDYwRUYsIDB4NzA0QywgMHg4RDJGLCAweDUxNDksIDB4NUU3RiwgMHg5MDFCLCAweDc0NzAsIDB4ODlDNCwKKyAgICAweDU3MkQsIDB4Nzg0NSwgMHg1RjUyLCAweDlGOUYsIDB4OTVGQSwgMHg4RjY4LCAweDlCM0MsIDB4OEJFMSwKKyAgICAweDc2NzgsIDB4Njg0MiwgMHg2N0RDLCAweDhERUEsIDB4OEQzNSwgMHg1MjNELCAweDhGOEEsIDB4NkVEQSwKKyAgICAweDY4Q0QsIDB4OTUwNSwgMHg5MEVELCAweDU2RkQsIDB4Njc5QywgMHg4OEY5LCAweDhGQzcsIDB4NTRDOCwKKyAgICAweDlBQjgsIDB4NUI2OSwgMHg2RDc3LCAweDZDMjYsIDB4NEVBNSwgMHg1QkIzLCAweDlBODcsIDB4OTE2MywKKyAgICAweDYxQTgsIDB4OTBBRiwgMHg5N0U5LCAweDU0MkIsIDB4NkRCNSwgMHg1QkQyLCAweDUxRkQsIDB4NTU4QSwKKyAgICAweDdGNTUsIDB4N0ZGMCwgMHg2NEJDLCAweDYzNEQsIDB4NjVGMSwgMHg2MUJFLCAweDYwOEQsIDB4NzEwQSwKKyAgICAweDZDNTcsIDB4NkM0OSwgMHg1OTJGLCAweDY3NkQsIDB4ODIyQSwgMHg1OEQ1LCAweDU2OEUsIDB4OEM2QSwKKyAgICAweDZCRUIsIDB4OTBERCwgMHg1OTdELCAweDgwMTcsIDB4NTNGNywgMHg2RDY5LCAweDU0NzUsIDB4NTU5RCwKKyAgICAweDgzNzcsIDB4ODNDRiwgMHg2ODM4LCAweDc5QkUsIDB4NTQ4QywgMHg0RjU1LCAweDU0MDgsIDB4NzZEMiwKKyAgICAweDhDODksIDB4OTYwMiwgMHg2Q0IzLCAweDZEQjgsIDB4OEQ2QiwgMHg4OTEwLCAweDlFNjQsIDB4OEQzQSwKKyAgICAweDU2M0YsIDB4OUVEMSwgMHg3NUQ1LCAweDVGODgsIDB4NzJFMCwgMHg2MDY4LCAweDU0RkMsIDB4NEVBOCwKKyAgICAweDZBMkEsIDB4ODg2MSwgMHg2MDUyLCAweDhGNzAsIDB4NTRDNCwgMHg3MEQ4LCAweDg2NzksIDB4OUUzRiwKKyAgICAweDZEMkEsIDB4NUI4RiwgMHg1RjE4LCAweDdFQTIsIDB4NTU4OSwgMHg0RkFGLCAweDczMzQsIDB4NTQzQywKKyAgICAweDUzOUEsIDB4NTAxOSwgMHg1NDBFLCAweDU0N0MsIDB4NEU0RSwgMHg1RkZELCAweDc0NUEsIDB4NThGNiwKKyAgICAweDg0NkIsIDB4ODBFMSwgMHg4Nzc0LCAweDcyRDAsIDB4N0NDQSwgMHg2RTU2LCAweDVGMjcsIDB4ODY0RSwKKyAgICAweDU1MkMsIDB4NjJBNCwgMHg0RTkyLCAweDZDQUEsIDB4NjIzNywgMHg4MkIxLCAweDU0RDcsIDB4NTM0RSwKKyAgICAweDczM0UsIDB4NkVEMSwgMHg3NTNCLCAweDUyMTIsIDB4NTMxNiwgMHg4QkRELCAweDY5RDAsIDB4NUY4QSwKKyAgICAweDYwMDAsIDB4NkRFRSwgMHg1NzRGLCAweDZCMjIsIDB4NzNBRiwgMHg2ODUzLCAweDhGRDgsIDB4N0YxMywKKyAgICAweDYzNjIsIDB4NjBBMywgMHg1NTI0LCAweDc1RUEsIDB4OEM2MiwgMHg3MTE1LCAweDZEQTMsIDB4NUJBNiwKKyAgICAweDVFN0IsIDB4ODM1MiwgMHg2MTRDLCAweDlFQzQsIDB4NzhGQSwgMHg4NzU3LCAweDdDMjcsIDB4NzY4NywKKyAgICAweDUxRjAsIDB4NjBGNiwgMHg3MTRDLCAweDY2NDMsIDB4NUU0QywgMHg2MDRELCAweDhDMEUsIDB4NzA3MCwKKyAgICAweDYzMjUsIDB4OEY4OSwgMHg1RkJELCAweDYwNjIsIDB4ODZENCwgMHg1NkRFLCAweDZCQzEsIDB4NjA5NCwKKyAgICAweDYxNjcsIDB4NTM0OSwgMHg2MEUwLCAweDY2NjYsIDB4OEQzRiwgMHg3OUZELCAweDRGMUEsIDB4NzBFOSwKKyAgICAweDZDNDcsIDB4OEJCMywgMHg4QkYyLCAweDdFRDgsIDB4ODM2NCwgMHg2NjBGLCAweDVBNUEsIDB4OUI0MiwKKyAgICAweDZENTEsIDB4NkRGNywgMHg4QzQxLCAweDZEM0IsIDB4NEYxOSwgMHg3MDZCLCAweDgzQjcsIDB4NjIxNiwKKyAgICAweDYwRDEsIDB4OTcwRCwgMHg4RDI3LCAweDc5NzgsIDB4NTFGQiwgMHg1NzNFLCAweDU3RkEsIDB4NjczQSwKKyAgICAweDc1NzgsIDB4N0EzRCwgMHg3OUVGLCAweDdCOTUsIDB4ODA4QywgMHg5OTY1LCAweDhGRjksIDB4NkZDMCwKKyAgICAweDhCQTUsIDB4OUUyMSwgMHg1OUVDLCAweDdFRTksIDB4N0YwOSwgMHg1NDA5LCAweDY3ODEsIDB4NjhEOCwKKyAgICAweDhGOTEsIDB4N0M0RCwgMHg5NkM2LCAweDUzQ0EsIDB4NjAyNSwgMHg3NUJFLCAweDZDNzIsIDB4NTM3MywKKyAgICAweDVBQzksIDB4N0VBNywgMHg2MzI0LCAweDUxRTAsIDB4ODEwQSwgMHg1REYxLCAweDg0REYsIDB4NjI4MCwKKyAgICAweDUxODAsIDB4NUI2MywgMHg0RjBFLCAweDc5NkQsIDB4NTI0MiwgMHg2MEI4LCAweDZENEUsIDB4NUJDNCwKKyAgICAweDVCQzIsIDB4OEJBMSwgMHg4QkIwLCAweDY1RTIsIDB4NUZDQywgMHg5NjQ1LCAweDU5OTMsIDB4N0VFNywKKyAgICAweDdFQUEsIDB4NTYwOSwgMHg2N0I3LCAweDU5MzksIDB4NEY3MywgMHg1QkI2LCAweDUyQTAsIDB4ODM1QSwKKyAgICAweDk4OEEsIDB4OEQzRSwgMHg3NTMyLCAweDk0QkUsIDB4NTA0NywgMHg3QTNDLCAweDRFRjcsIDB4NjdCNiwKKyAgICAweDlBN0UsIDB4NUFDMSwgMHg2QjdDLCAweDc2RDEsIDB4NTc1QSwgMHg1QzE2LCAweDdCM0EsIDB4OTVGNCwKKyAgICAweDcxNEUsIDB4NTE3QywgMHg4MEE5LCAweDgyNzAsIDB4NTk3OCwgMHg3RjA0LCAweDgzMjcsIDB4NjhDMCwKKyAgICAweDY3RUMsIDB4NzhCMSwgMHg3ODc3LCAweDYyRTMsIDB4NjM2MSwgMHg3QjgwLCAweDRGRUQsIDB4NTI2QSwKKyAgICAweDUxQ0YsIDB4ODM1MCwgMHg2OURCLCAweDkyNzQsIDB4OERGNSwgMHg4RDMxLCAweDg5QzEsIDB4OTUyRSwKKyAgICAweDdCQUQsIDB4NEVGNiwgMHg1MDY1LCAweDgyMzAsIDB4NTI1MSwgMHg5OTZGLCAweDZFMTAsIDB4NkU4NSwKKyAgICAweDZEQTcsIDB4NUVGQSwgMHg1MEY1LCAweDU5REMsIDB4NUMwNiwgMHg2RDQ2LCAweDZDNUYsIDB4NzU4NiwKKyAgICAweDg0OEIsIDB4Njg2OCwgMHg1OTU2LCAweDhCQjIsIDB4NTMyMCwgMHg5MTcxLCAweDk2NEQsIDB4ODU0OSwKKyAgICAweDY5MTIsIDB4NzkwMSwgMHg3MTI2LCAweDgwRjYsIDB4NEVBNCwgMHg5MENBLCAweDZENDcsIDB4OUE4NCwKKyAgICAweDVBMDcsIDB4NTZCQywgMHg2NDA1LCAweDk0RjAsIDB4NzdFQiwgMHg0RkE1LCAweDgxMUEsIDB4NzJFMSwKKyAgICAweDg5RDIsIDB4OTk3QSwgMHg3RjM0LCAweDdFREUsIDB4NTI3RiwgMHg2NTU5LCAweDkxNzUsIDB4OEY3RiwKKyAgICAweDhGODMsIDB4NTNFQiwgMHg3QTk2LCAweDYzRUQsIDB4NjNBNSwgMHg3Njg2LCAweDc5RjgsIDB4ODg1NywKKyAgICAweDk2MzYsIDB4NjIyQSwgMHg1MkFCLCAweDgyODIsIDB4Njg1NCwgMHg2NzcwLCAweDYzNzcsIDB4Nzc2QiwKKyAgICAweDdBRUQsIDB4NkQwMSwgMHg3RUQzLCAweDg5RTMsIDB4NTlEMCwgMHg2MjEyLCAweDg1QzksIDB4ODJBNSwKKyAgICAweDc1NEMsIDB4NTAxRiwgMHg0RUNCLCAweDc1QTUsIDB4OEJFQiwgMHg1QzRBLCAweDVERkUsIDB4N0I0QiwKKyAgICAweDY1QTQsIDB4OTFEMSwgMHg0RUNBLCAweDZEMjUsIDB4ODk1RiwgMHg3RDI3LCAweDk1MjYsIDB4NEVDNSwKKyAgICAweDhDMjgsIDB4OEZEQiwgMHg5NzczLCAweDY2NEIsIDB4Nzk4MSwgMHg4RkQxLCAweDcwRUMsIDB4NkQ3OCwKKyAgICAweDVDM0QsIDB4NTJCMiwgMHg4MzQ2LCAweDUxNjIsIDB4ODMwRSwgMHg3NzVCLCAweDY2NzYsIDB4OUNCOCwKKyAgICAweDRFQUMsIDB4NjBDQSwgMHg3Q0JFLCAweDdDQjMsIDB4N0VDRiwgMHg0RTk1LCAweDhCNjYsIDB4NjY2RiwKKyAgICAweDk4ODgsIDB4OTc1OSwgMHg1ODgzLCAweDY1NkMsIDB4OTU1QywgMHg1Rjg0LCAweDc1QzksIDB4OTc1NiwKKyAgICAweDdBREYsIDB4N0FERSwgMHg1MUMwLCAweDcwQUYsIDB4N0E5OCwgMHg2M0VBLCAweDdBNzYsIDB4N0VBMCwKKyAgICAweDczOTYsIDB4OTdFRCwgMHg0RTQ1LCAweDcwNzgsIDB4NEU1RCwgMHg5MTUyLCAweDUzQTksIDB4NjU1MSwKKyAgICAweDY1RTcsIDB4ODFGQywgMHg4MjA1LCAweDU0OEUsIDB4NUMzMSwgMHg3NTlBLCAweDk3QTAsIDB4NjJEOCwKKyAgICAweDcyRDksIDB4NzVCRCwgMHg1QzQ1LCAweDlBNzksIDB4ODNDQSwgMHg1QzQwLCAweDU0ODAsIDB4NzdFOSwKKyAgICAweDRFM0UsIDB4NkNBRSwgMHg4MDVBLCAweDYyRDIsIDB4NjM2RSwgMHg1REU4LCAweDUxNzcsIDB4OERERCwKKyAgICAweDhFMUUsIDB4OTUyRiwgMHg0RkYxLCAweDUzRTUsIDB4NjBFNywgMHg3MEFDLCAweDUyNjcsIDB4NjM1MCwKKyAgICAweDlFNDMsIDB4NUExRiwgMHg1MDI2LCAweDc3MzcsIDB4NTM3NywgMHg3RUUyLCAweDY0ODUsIDB4NjUyQiwKKyAgICAweDYyODksIDB4NjM5OCwgMHg1MDE0LCAweDcyMzUsIDB4ODlDOSwgMHg1MUIzLCAweDhCQzAsIDB4N0VERCwKKyAgICAweDU3NDcsIDB4ODNDQywgMHg5NEE3LCAweDUxOUIsIDB4NTQxQiwgMHg1Q0ZCLCAweDRGQ0EsIDB4N0FFMywKKyAgICAweDZENUEsIDB4OTBFMSwgMHg5QThGLCAweDU1ODAsIDB4NTQ5NiwgMHg1MzYxLCAweDU0QUYsIDB4NUYwMCwKKyAgICAweDYzRTksIDB4Njk3NywgMHg1MUVGLCAweDYxNjgsIDB4NTIwQSwgMHg1ODJBLCAweDUyRDgsIDB4NTc0RSwKKyAgICAweDc4MEQsIDB4NzcwQiwgMHg1RUI3LCAweDYxNzcsIDB4N0NFMCwgMHg2MjVCLCAweDYyOTcsIDB4NEVBMiwKKyAgICAweDcwOTUsIDB4ODAwMywgMHg2MkY3LCAweDcwRTQsIDB4OTc2MCwgMHg1Nzc3LCAweDgyREIsIDB4NjdFRiwKKyAgICAweDY4RjUsIDB4NzhENSwgMHg5ODk3LCAweDc5RDEsIDB4NThGMywgMHg1NEIzLCAweDUzRUYsIDB4NkUzNCwKKyAgICAweDUxNEIsIDB4NTIzQiwgMHg1QkEyLCAweDhCRkUsIDB4ODBBRiwgMHg1NTQzLCAweDU3QTYsIDB4NjA3MywKKyAgICAweDU3NTEsIDB4NTQyRCwgMHg3QTdBLCAweDYwNTAsIDB4NUI1NCwgMHg2M0E3LCAweDYyQTAsIDB4NTNFMywKKyAgICAweDYyNjMsIDB4NUJDNywgMHg2N0FGLCAweDU0RUQsIDB4N0E5RiwgMHg4MkU2LCAweDkxNzcsIDB4NUU5MywKKyAgICAweDg4RTQsIDB4NTkzOCwgMHg1N0FFLCAweDYzMEUsIDB4OERFOCwgMHg4MEVGLCAweDU3NTcsIDB4N0I3NywKKyAgICAweDRGQTksIDB4NUZFQiwgMHg1QkJELCAweDZCM0UsIDB4NTMyMSwgMHg3QjUwLCAweDcyQzIsIDB4Njg0NiwKKyAgICAweDc3RkYsIDB4NzczNiwgMHg2NUY3LCAweDUxQjUsIDB4NEU4RiwgMHg3NkQ0LCAweDVDQkYsIDB4N0FBNSwKKyAgICAweDg0NzUsIDB4NTk0RSwgMHg5QjQxLCAweDUwODAsIDB4OTk4OCwgMHg2MTI3LCAweDZFODMsIDB4NTc2NCwKKyAgICAweDY2MDYsIDB4NjM0NiwgMHg1NkYwLCAweDYyRUMsIDB4NjI2OSwgMHg1RUQzLCAweDk2MTQsIDB4NTc4MywKKyAgICAweDYyQzksIDB4NTU4NywgMHg4NzIxLCAweDgxNEEsIDB4OEZBMywgMHg1NTY2LCAweDgzQjEsIDB4Njc2NSwKKyAgICAweDhENTYsIDB4ODRERCwgMHg1QTZBLCAweDY4MEYsIDB4NjJFNiwgMHg3QkVFLCAweDk2MTEsIDB4NTE3MCwKKyAgICAweDZGOUMsIDB4OEMzMCwgMHg2M0ZELCAweDg5QzgsIDB4NjFEMiwgMHg3RjA2LCAweDcwQzIsIDB4NkVFNSwKKyAgICAweDc0MDUsIDB4Njk5NCwgMHg3MkZDLCAweDVFQ0EsIDB4OTBDRSwgMHg2NzE3LCAweDZENkEsIDB4NjM1RSwKKyAgICAweDUyQjMsIDB4NzI2MiwgMHg4MDAxLCAweDRGNkMsIDB4NTlFNSwgMHg5MTZBLCAweDcwRDksIDB4NkQ5RCwKKyAgICAweDUyRDIsIDB4NEU1MCwgMHg5NkY3LCAweDk1NkQsIDB4ODU3RSwgMHg3OENBLCAweDdEMkYsIDB4NTEyMSwKKyAgICAweDU3OTIsIDB4NjRDMiwgMHg4MDhCLCAweDdDN0IsIDB4NkNFQSwgMHg2OEYxLCAweDY5NUUsIDB4NTFCNywKKyAgICAweDUzOTgsIDB4NjhBOCwgMHg3MjgxLCAweDlFQ0UsIDB4N0JGMSwgMHg3MkY4LCAweDc5QkIsIDB4NkYxMywKKyAgICAweDc0MDYsIDB4Njc0RSwgMHg5MUNDLCAweDlDQTQsIDB4NzkzQywgMHg4Mzg5LCAweDgzNTQsIDB4NTQwRiwKKyAgICAweDY4MTcsIDB4NEUzRCwgMHg1Mzg5LCAweDUyQjEsIDB4NzgzRSwgMHg1Mzg2LCAweDUyMjksIDB4NTA4OCwKKyAgICAweDRGOEIsIDB4NEZEMCwgMHg3NUUyLCAweDdBQ0IsIDB4N0M5MiwgMHg2Q0E1LCAweDk2QjYsIDB4NTI5QiwKKyAgICAweDc0ODMsIDB4NTRFOSwgMHg0RkU5LCAweDgwNTQsIDB4ODNCMiwgMHg4RkRFLCAweDk1NzAsIDB4NUVDOSwKKyAgICAweDYwMUMsIDB4NkQ5RiwgMHg1RTE4LCAweDY1NUIsIDB4ODEzOCwgMHg5NEZFLCAweDYwNEIsIDB4NzBCQywKKyAgICAweDdFQzMsIDB4N0NBRSwgMHg1MUM5LCAweDY4ODEsIDB4N0NCMSwgMHg4MjZGLCAweDRFMjQsIDB4OEY4NiwKKyAgICAweDkxQ0YsIDB4NjY3RSwgMHg0RUFFLCAweDhDMDUsIDB4NjRBOSwgMHg4MDRBLCAweDUwREEsIDB4NzU5NywKKyAgICAweDcxQ0UsIDB4NUJFNSwgMHg4RkJELCAweDZGNjYsIDB4NEU4NiwgMHg2NDgyLCAweDk1NjMsIDB4NUVENiwKKyAgICAweDY1OTksIDB4NTIxNywgMHg4OEMyLCAweDcwQzgsIDB4NTJBMywgMHg3MzBFLCAweDc0MzMsIDB4Njc5NywKKyAgICAweDc4RjcsIDB4OTcxNiwgMHg0RTM0LCAweDkwQkIsIDB4OUNERSwgMHg2RENCLCAweDUxREIsIDB4OEQ0MSwKKyAgICAweDU0MUQsIDB4NjJDRSwgMHg3M0IyLCAweDgzRjEsIDB4OTZGNiwgMHg5Rjg0LCAweDk0QzMsIDB4NEYzNiwKKyAgICAweDdGOUEsIDB4NTFDQywgMHg3MDc1LCAweDk2NzUsIDB4NUNBRCwgMHg5ODg2LCAweDUzRTYsIDB4NEVFNCwKKyAgICAweDZFOUMsIDB4NzQwOSwgMHg2OUI0LCAweDc4NkIsIDB4OTk4RiwgMHg3NTU5LCAweDUyMTgsIDB4NzYyNCwKKyAgICAweDZENDEsIDB4NjdGMywgMHg1MTZELCAweDlGOTksIDB4ODA0QiwgMHg1NDk5LCAweDdCM0MsIDB4N0FCRiwKKyAgICAweDk2ODYsIDB4NTc4NCwgMHg2MkUyLCAweDk2NDcsIDB4Njk3QywgMHg1QTA0LCAweDY0MDIsIDB4N0JEMywKKyAgICAweDZGMEYsIDB4OTY0QiwgMHg4MkE2LCAweDUzNjIsIDB4OTg4NSwgMHg1RTkwLCAweDcwODksIDB4NjNCMywKKyAgICAweDUzNjQsIDB4ODY0RiwgMHg5QzgxLCAweDlFOTMsIDB4Nzg4QywgMHg5NzMyLCAweDhERUYsIDB4OEQ0MiwKKyAgICAweDlFN0YsIDB4NkY1RSwgMHg3OTg0LCAweDVGNTUsIDB4OTY0NiwgMHg2MjJFLCAweDlBNzQsIDB4NTQxNSwKKyAgICAweDk0REQsIDB4NEZBMywgMHg2NUM1LCAweDVDNjUsIDB4NUM2MSwgMHg3RjE1LCAweDg2NTEsIDB4NkMyRiwKKyAgICAweDVGOEIsIDB4NzM4NywgMHg2RUU0LCAweDdFRkYsIDB4NUNFNiwgMHg2MzFCLCAweDVCNkEsIDB4NkVFNiwKKyAgICAweDUzNzUsIDB4NEU3MSwgMHg2M0EwLCAweDc1NjUsIDB4NjJBMSwgMHg4RjZFLCAweDRGMjYsIDB4NEVEMSwKKyAgICAweDZDQTYsIDB4N0VCNiwgMHg4QkJBLCAweDg0MUQsIDB4ODdCQSwgMHg3RjU3LCAweDkwM0IsIDB4OTUyMywKKyAgICAweDdCQTksIDB4OUFBMSwgMHg4OEY4LCAweDg0M0QsIDB4NkQxQiwgMHg5QTg2LCAweDdFREMsIDB4NTk4OCwKKyAgICAweDlFQkIsIDB4NzM5QiwgMHg3ODAxLCAweDg2ODIsIDB4OUE2QywgMHg5QTgyLCAweDU2MUIsIDB4NTQxNywKKyAgICAweDU3Q0IsIDB4NEU3MCwgMHg5RUE2LCAweDUzNTYsIDB4OEZDOCwgMHg4MTA5LCAweDc3OTIsIDB4OTk5MiwKKyAgICAweDg2RUUsIDB4NkVFMSwgMHg4NTEzLCAweDY2RkMsIDB4NjE2MiwgMHg2RjJCLCAweDhDMjksIDB4ODI5MiwKKyAgICAweDgzMkIsIDB4NzZGMiwgMHg2QzEzLCAweDVGRDksIDB4ODNCRCwgMHg3MzJCLCAweDgzMDUsIDB4OTUxQSwKKyAgICAweDZCREIsIDB4NzdEQiwgMHg5NEM2LCAweDUzNkYsIDB4ODMwMiwgMHg1MTkyLCAweDVFM0QsIDB4OEM4QywKKyAgICAweDhEMzgsIDB4NEU0OCwgMHg3M0FCLCAweDY3OUEsIDB4Njg4NSwgMHg5MTc2LCAweDk3MDksIDB4NzE2NCwKKyAgICAweDZDQTEsIDB4NzcwOSwgMHg1QTkyLCAweDk1NDEsIDB4NkJDRiwgMHg3RjhFLCAweDY2MjcsIDB4NUJEMCwKKyAgICAweDU5QjksIDB4NUE5QSwgMHg5NUU4LCAweDk1RjcsIDB4NEVFQywgMHg4NDBDLCAweDg0OTksIDB4NkFBQywKKyAgICAweDc2REYsIDB4OTUzMCwgMHg3MzFCLCAweDY4QTYsIDB4NUI1RiwgMHg3NzJGLCAweDkxOUEsIDB4OTc2MSwKKyAgICAweDdDREMsIDB4OEZGNywgMHg4QzFDLCAweDVGMjUsIDB4N0M3MywgMHg3OUQ4LCAweDg5QzUsIDB4NkNDQywKKyAgICAweDg3MUMsIDB4NUJDNiwgMHg1RTQyLCAweDY4QzksIDB4NzcyMCwgMHg3RUY1LCAweDUxOTUsIDB4NTE0RCwKKyAgICAweDUyQzksIDB4NUEyOSwgMHg3RjA1LCAweDk3NjIsIDB4ODJENywgMHg2M0NGLCAweDc3ODQsIDB4ODVEMCwKKyAgICAweDc5RDIsIDB4NkUzQSwgMHg1RTk5LCAweDU5OTksIDB4ODUxMSwgMHg3MDZELCAweDZDMTEsIDB4NjJCRiwKKyAgICAweDc2QkYsIDB4NjU0RiwgMHg2MEFGLCAweDk1RkQsIDB4NjYwRSwgMHg4NzlGLCAweDlFMjMsIDB4OTRFRCwKKyAgICAweDU0MEQsIDB4NTQ3RCwgMHg4QzJDLCAweDY0NzgsIDB4NjQ3OSwgMHg4NjExLCAweDZBMjEsIDB4ODE5QywKKyAgICAweDc4RTgsIDB4NjQ2OSwgMHg5QjU0LCAweDYyQjksIDB4NjcyQiwgMHg4M0FCLCAweDU4QTgsIDB4OUVEOCwKKyAgICAweDZDQUIsIDB4NkYyMCwgMHg1QkRFLCAweDk2NEMsIDB4OEMwQiwgMHg3MjVGLCAweDY3RDAsIDB4NjJDNywKKyAgICAweDcyNjEsIDB4NEVBOSwgMHg1OUM2LCAweDZCQ0QsIDB4NTg5MywgMHg2NkFFLCAweDVFNTUsIDB4NTJERiwKKyAgICAweDYxNTUsIDB4NjcyOCwgMHg3NkVFLCAweDc3NjYsIDB4NzI2NywgMHg3QTQ2LCAweDYyRkYsIDB4NTRFQSwKKyAgICAweDU0NTAsIDB4OTRBMCwgMHg5MEEzLCAweDVBMUMsIDB4N0VCMywgMHg2QzE2LCAweDRFNDMsIDB4NTk3NiwKKyAgICAweDgwMTAsIDB4NTk0OCwgMHg1MzU3LCAweDc1MzcsIDB4OTZCRSwgMHg1NkNBLCAweDYzMjAsIDB4ODExMSwKKyAgICAweDYwN0MsIDB4OTVGOSwgMHg2REQ2LCAweDU0NjIsIDB4OTk4MSwgMHg1MTg1LCAweDVBRTksIDB4ODBGRCwKKyAgICAweDU5QUUsIDB4OTcxMywgMHg1MDJBLCAweDZDRTUsIDB4NUMzQywgMHg2MkRGLCAweDRGNjAsIDB4NTMzRiwKKyAgICAweDgxN0IsIDB4OTAwNiwgMHg2RUJBLCAweDg1MkIsIDB4NjJDOCwgMHg1RTc0LCAweDc4QkUsIDB4NjRCNSwKKyAgICAweDYzN0IsIDB4NUZGNSwgMHg1QTE4LCAweDkxN0YsIDB4OUUxRiwgMHg1QzNGLCAweDYzNEYsIDB4ODA0MiwKKyAgICAweDVCN0QsIDB4NTU2RSwgMHg5NTRBLCAweDk1NEQsIDB4NkQ4NSwgMHg2MEE4LCAweDY3RTAsIDB4NzJERSwKKyAgICAweDUxREQsIDB4NUI4MSwgMHg2MkU3LCAweDZDREUsIDB4NzI1QiwgMHg2MjZELCAweDk0QUUsIDB4N0VCRCwKKyAgICAweDgxMTMsIDB4NkQ1MywgMHg1MTlDLCAweDVGMDQsIDB4NTk3NCwgMHg1MkFBLCAweDYwMTIsIDB4NTk3MywKKyAgICAweDY2OTYsIDB4ODY1MCwgMHg3NTlGLCAweDYzMkEsIDB4NjFFNiwgMHg3Q0VGLCAweDhCRkEsIDB4NTRFNiwKKyAgICAweDZCMjcsIDB4OUUyNSwgMHg2QkI0LCAweDg1RDUsIDB4NTQ1NSwgMHg1MDc2LCAweDZDQTQsIDB4NTU2QSwKKyAgICAweDhEQjQsIDB4NzIyQywgMHg1RTE1LCAweDYwMTUsIDB4NzQzNiwgMHg2MkNELCAweDYzOTIsIDB4NzI0QywKKyAgICAweDVGOTgsIDB4NkU0MywgMHg2RDNFLCAweDY1MDAsIDB4NkY1OCwgMHg3NkQ4LCAweDc4RDAsIDB4NzZGQywKKyAgICAweDc1NTQsIDB4NTIyNCwgMHg1M0RCLCAweDRFNTMsIDB4NUU5RSwgMHg2NUMxLCAweDgwMkEsIDB4ODBENiwKKyAgICAweDYyOUIsIDB4NTQ4NiwgMHg1MjI4LCAweDcwQUUsIDB4ODg4RCwgMHg4REQxLCAweDZDRTEsIDB4NTQ3OCwKKyAgICAweDgwREEsIDB4NTdGOSwgMHg4OEY0LCAweDhENTQsIDB4OTY2QSwgMHg5MTRELCAweDRGNjksIDB4NkM5QiwKKyAgICAweDU1QjcsIDB4NzZDNiwgMHg3ODMwLCAweDYyQTgsIDB4NzBGOSwgMHg2RjhFLCAweDVGNkQsIDB4ODRFQywKKyAgICAweDY4REEsIDB4Nzg3QywgMHg3QkY3LCAweDgxQTgsIDB4NjcwQiwgMHg5RTRGLCAweDYzNjcsIDB4NzhCMCwKKyAgICAweDU3NkYsIDB4NzgxMiwgMHg5NzM5LCAweDYyNzksIDB4NjJBQiwgMHg1Mjg4LCAweDc0MzUsIDB4NkJENywKKyAgICAweDU1NjQsIDB4ODEzRSwgMHg3NUIyLCAweDc2QUUsIDB4NTMzOSwgMHg3NURFLCAweDUwRkIsIDB4NUM0MSwKKyAgICAweDhCNkMsIDB4N0JDNywgMHg1MDRGLCAweDcyNDcsIDB4OUE5NywgMHg5OEQ4LCAweDZGMDIsIDB4NzRFMiwKKyAgICAweDc5NjgsIDB4NjQ4NywgMHg3N0E1LCAweDYyRkMsIDB4OTg5MSwgMHg4RDJCLCAweDU0QzEsIDB4ODA1OCwKKyAgICAweDRFNTIsIDB4NTc2QSwgMHg4MkY5LCAweDg0MEQsIDB4NUU3MywgMHg1MUVELCAweDc0RjYsIDB4OEJDNCwKKyAgICAweDVDNEYsIDB4NTc2MSwgMHg2Q0ZDLCAweDk4ODcsIDB4NUE0NiwgMHg3ODM0LCAweDlCNDQsIDB4OEZFQiwKKyAgICAweDdDOTUsIDB4NTI1NiwgMHg2MjUxLCAweDk0RkEsIDB4NEVDNiwgMHg4Mzg2LCAweDg0NjEsIDB4ODNFOSwKKyAgICAweDg0QjIsIDB4NTdENCwgMHg2NzM0LCAweDU3MDMsIDB4NjY2RSwgMHg2RDY2LCAweDhDMzEsIDB4NjZERCwKKyAgICAweDcwMTEsIDB4NjcxRiwgMHg2QjNBLCAweDY4MTYsIDB4NjIxQSwgMHg1OUJCLCAweDRFMDMsIDB4NTFDNCwKKyAgICAweDZGMDYsIDB4NjdEMiwgMHg2QzhGLCAweDUxNzYsIDB4NjhDQiwgMHg1OTQ3LCAweDZCNjcsIDB4NzU2NiwKKyAgICAweDVEMEUsIDB4ODExMCwgMHg5RjUwLCAweDY1RDcsIDB4Nzk0OCwgMHg3OTQxLCAweDlBOTEsIDB4OEQ3NywKKyAgICAweDVDODIsIDB4NEU1RSwgMHg0RjAxLCAweDU0MkYsIDB4NTk1MSwgMHg3ODBDLCAweDU2NjgsIDB4NkMxNCwKKyAgICAweDhGQzQsIDB4NUYwMywgMHg2QzdELCAweDZDRTMsIDB4OEJBQiwgMHg2MzkwLCAweDYwNzAsIDB4NkQzRCwKKyAgICAweDcyNzUsIDB4NjI2NiwgMHg5NDhFLCAweDk0QzUsIDB4NTM0MywgMHg4RkMxLCAweDdCN0UsIDB4NEVERiwKKyAgICAweDhDMjYsIDB4NEU3RSwgMHg5RUQ0LCAweDk0QjEsIDB4OTRCMywgMHg1MjRELCAweDZGNUMsIDB4OTA2MywKKyAgICAweDZENDUsIDB4OEMzNCwgMHg1ODExLCAweDVENEMsIDB4NkIyMCwgMHg2QjQ5LCAweDY3QUEsIDB4NTQ1QiwKKyAgICAweDgxNTQsIDB4N0Y4QywgMHg1ODk5LCAweDg1MzcsIDB4NUYzQSwgMHg2MkEyLCAweDZBNDcsIDB4OTUzOSwKKyAgICAweDY1NzIsIDB4NjA4NCwgMHg2ODY1LCAweDc3QTcsIDB4NEU1NCwgMHg0RkE4LCAweDVERTcsIDB4OTc5OCwKKyAgICAweDY0QUMsIDB4N0ZEOCwgMHg1Q0VELCAweDRGQ0YsIDB4N0E4RCwgMHg1MjA3LCAweDgzMDQsIDB4NEUxNCwKKyAgICAweDYwMkYsIDB4N0E4MywgMHg5NEE2LCAweDRGQjUsIDB4NEVCMiwgMHg3OUU2LCAweDc0MzQsIDB4NTJFNCwKKyAgICAweDgyQjksIDB4NjREMiwgMHg3OUJELCAweDVCREQsIDB4NkM4MSwgMHg5NzUyLCAweDhGN0IsIDB4NkMyMiwKKyAgICAweDUwM0UsIDB4NTM3RiwgMHg2RTA1LCAweDY0Q0UsIDB4NjY3NCwgMHg2QzMwLCAweDYwQzUsIDB4OTg3NywKKyAgICAweDhCRjcsIDB4NUU4NiwgMHg3NDNDLCAweDdBNzcsIDB4NzlDQiwgMHg0RTE4LCAweDkwQjEsIDB4NzQwMywKKyAgICAweDZDNDIsIDB4NTZEQSwgMHg5MTRCLCAweDZDQzUsIDB4OEQ4QiwgMHg1MzNBLCAweDg2QzYsIDB4NjZGMiwKKyAgICAweDhFQUYsIDB4NUM0OCwgMHg5QTcxLCAweDZFMjAsIDB4NTNENiwgMHg1QTM2LCAweDlGOEIsIDB4OERBMywKKyAgICAweDUzQkIsIDB4NTcwOCwgMHg5OEE3LCAweDY3NDMsIDB4OTE5QiwgMHg2Q0M5LCAweDUxNjgsIDB4NzVDQSwKKyAgICAweDYyRjMsIDB4NzJBQywgMHg1MjM4LCAweDUyOUQsIDB4N0YzQSwgMHg3MDk0LCAweDc2MzgsIDB4NTM3NCwKKyAgICAweDlFNEEsIDB4NjlCNywgMHg3ODZFLCAweDk2QzAsIDB4ODhEOSwgMHg3RkE0LCAweDcxMzYsIDB4NzFDMywKKyAgICAweDUxODksIDB4NjdEMywgMHg3NEU0LCAweDU4RTQsIDB4NjUxOCwgMHg1NkI3LCAweDhCQTksIDB4OTk3NiwKKyAgICAweDYyNzAsIDB4N0VENSwgMHg2MEY5LCAweDcwRUQsIDB4NThFQywgMHg0RUMxLCAweDRFQkEsIDB4NUZDRCwKKyAgICAweDk3RTcsIDB4NEVGQiwgMHg4QkE0LCAweDUyMDMsIDB4NTk4QSwgMHg3RUFCLCAweDYyNTQsIDB4NEVDRCwKKyAgICAweDY1RTUsIDB4NjIwRSwgMHg4MzM4LCAweDg0QzksIDB4ODM2MywgMHg4NzhELCAweDcxOTQsIDB4NkVCNiwKKyAgICAweDVCQjksIDB4N0VEMiwgMHg1MTk3LCAweDYzQzksIDB4NjdENCwgMHg4MDg5LCAweDgzMzksIDB4ODgxNSwKKyAgICAweDUxMTIsIDB4NUI3QSwgMHg1OTgyLCAweDhGQjEsIDB4NEU3MywgMHg2QzVELCAweDUxNjUsIDB4ODkyNSwKKyAgICAweDhGNkYsIDB4OTYyRSwgMHg4NTRBLCAweDc0NUUsIDB4OTUxMCwgMHg5NUYwLCAweDZEQTYsIDB4ODJFNSwKKyAgICAweDVGMzEsIDB4NjQ5MiwgMHg2RDEyLCAweDg0MjgsIDB4ODE2RSwgMHg5Q0MzLCAweDU4NUUsIDB4OEQ1QiwKKyAgICAweDRFMDksIDB4NTNDMSwgMHg0RjFFLCAweDY1NjMsIDB4Njg1MSwgMHg1NUQzLCAweDRFMjcsIDB4NjQxNCwKKyAgICAweDlBOUEsIDB4NjI2QiwgMHg1QUMyLCAweDc0NUYsIDB4ODI3MiwgMHg2REE5LCAweDY4RUUsIDB4NTBFNywKKyAgICAweDgzOEUsIDB4NzgwMiwgMHg2NzQwLCAweDUyMzksIDB4NkM5OSwgMHg3RUIxLCAweDUwQkIsIDB4NTU2NSwKKyAgICAweDcxNUUsIDB4N0I1QiwgMHg2NjUyLCAweDczQ0EsIDB4ODJFQiwgMHg2NzQ5LCAweDVDNzEsIDB4NTIyMCwKKyAgICAweDcxN0QsIDB4ODg2QiwgMHg5NUVBLCAweDk2NTUsIDB4NjRDNSwgMHg4RDYxLCAweDgxQjMsIDB4NTU4NCwKKyAgICAweDZDNTUsIDB4NjI0NywgMHg3RjJFLCAweDU4OTIsIDB4NEYyNCwgMHg1NTQ2LCAweDhENEYsIDB4NjY0QywKKyAgICAweDRFMEEsIDB4NUMxQSwgMHg4OEYzLCAweDY4QTIsIDB4NjM0RSwgMHg3QTBELCAweDcwRTcsIDB4ODI4RCwKKyAgICAweDUyRkEsIDB4OTdGNiwgMHg1QzExLCAweDU0RTgsIDB4OTBCNSwgMHg3RUNELCAweDU5NjIsIDB4OEQ0QSwKKyAgICAweDg2QzcsIDB4ODIwQywgMHg4MjBELCAweDhENjYsIDB4NjQ0NCwgMHg1QzA0LCAweDYxNTEsIDB4NkQ4OSwKKyAgICAweDc5M0UsIDB4OEJCRSwgMHg3ODM3LCAweDc1MzMsIDB4NTQ3QiwgMHg0RjM4LCAweDhFQUIsIDB4NkRGMSwKKyAgICAweDVBMjAsIDB4N0VDNSwgMHg3OTVFLCAweDZDODgsIDB4NUJBMSwgMHg1QTc2LCAweDc1MUEsIDB4ODBCRSwKKyAgICAweDYxNEUsIDB4NkUxNywgMHg1OEYwLCAweDc1MUYsIDB4NzUyNSwgMHg3MjcyLCAweDUzNDcsIDB4N0VGMywKKyAgICAweDc3MDEsIDB4NzZEQiwgMHg1MjY5LCAweDgwREMsIDB4NTcyMywgMHg1RTA4LCAweDU5MzEsIDB4NzJFRSwKKyAgICAweDY1QkQsIDB4NkU3RiwgMHg4QkQ3LCAweDVDMzgsIDB4ODY3MSwgMHg1MzQxLCAweDc3RjMsIDB4NjJGRSwKKyAgICAweDY1RjYsIDB4NEVDMCwgMHg5OERGLCAweDg2ODAsIDB4NUI5RSwgMHg4QkM2LCAweDUzRjIsIDB4NzdFMiwKKyAgICAweDRGN0YsIDB4NUM0RSwgMHg5QTc2LCAweDU5Q0IsIDB4NUYwRiwgMHg3OTNBLCAweDU4RUIsIDB4NEUxNiwKKyAgICAweDY3RkYsIDB4NEU4QiwgMHg2MkVELCAweDhBOTMsIDB4OTAxRCwgMHg1MkJGLCAweDY2MkYsIDB4NTVEQywKKyAgICAweDU2NkMsIDB4OTAwMiwgMHg0RUQ1LCAweDRGOEQsIDB4OTFDQSwgMHg5OTcwLCAweDZDMEYsIDB4NUUwMiwKKyAgICAweDYwNDMsIDB4NUJBNCwgMHg4OUM2LCAweDhCRDUsIDB4NjUzNiwgMHg2MjRCLCAweDk5OTYsIDB4NUI4OCwKKyAgICAweDVCRkYsIDB4NjM4OCwgMHg1NTJFLCAweDUzRDcsIDB4NzYyNiwgMHg1MTdELCAweDg1MkMsIDB4NjdBMiwKKyAgICAweDY4QjMsIDB4NkI4QSwgMHg2MjkyLCAweDhGOTMsIDB4NTNENCwgMHg4MjEyLCAweDZERDEsIDB4NzU4RiwKKyAgICAweDRFNjYsIDB4OEQ0RSwgMHg1QjcwLCAweDcxOUYsIDB4ODVBRiwgMHg2NjkxLCAweDY2RDksIDB4N0Y3MiwKKyAgICAweDg3MDAsIDB4OUVDRCwgMHg5RjIwLCAweDVDNUUsIDB4NjcyRiwgMHg4RkYwLCAweDY4MTEsIDB4Njc1RiwKKyAgICAweDYyMEQsIDB4N0FENiwgMHg1ODg1LCAweDVFQjYsIDB4NjU3MCwgMHg2RjMxLCAweDYwNTUsIDB4NTIzNywKKyAgICAweDgwMEQsIDB4NjQ1NCwgMHg4ODcwLCAweDc1MjksIDB4NUUwNSwgMHg2ODEzLCAweDYyRjQsIDB4OTcxQywKKyAgICAweDUzQ0MsIDB4NzIzRCwgMHg4QzAxLCAweDZDMzQsIDB4Nzc2MSwgMHg3QTBFLCAweDU0MkUsIDB4NzdBQywKKyAgICAweDk4N0EsIDB4ODIxQywgMHg4QkY0LCAweDc4NTUsIDB4NjcxNCwgMHg3MEMxLCAweDY1QUYsIDB4NjQ5NSwKKyAgICAweDU2MzYsIDB4NjAxRCwgMHg3OUMxLCAweDUzRjgsIDB4NEUxRCwgMHg2QjdCLCAweDgwODYsIDB4NUJGQSwKKyAgICAweDU1RTMsIDB4NTZEQiwgMHg0RjNBLCAweDRGM0MsIDB4OTk3MiwgMHg1REYzLCAweDY3N0UsIDB4ODAzOCwKKyAgICAweDYwMDIsIDB4OTg4MiwgMHg5MDAxLCAweDVCOEIsIDB4OEJCQywgMHg4QkY1LCAweDY0MUMsIDB4ODI1OCwKKyAgICAweDY0REUsIDB4NTVGRCwgMHg4MkNGLCAweDkxNjUsIDB4NEZENywgMHg3RDIwLCAweDkwMUYsIDB4N0M5RiwKKyAgICAweDUwRjMsIDB4NTg1MSwgMHg2RUFGLCAweDVCQkYsIDB4OEJDOSwgMHg4MDgzLCAweDkxNzgsIDB4ODQ5QywKKyAgICAweDdCOTcsIDB4ODY3RCwgMHg5NjhCLCAweDk2OEYsIDB4N0VFNSwgMHg5QUQzLCAweDc4OEUsIDB4NUM4MSwKKyAgICAweDdBNTcsIDB4OTA0MiwgMHg5NkE3LCAweDc5NUYsIDB4NUI1OSwgMHg2MzVGLCAweDdCMEIsIDB4ODREMSwKKyAgICAweDY4QUQsIDB4NTUwNiwgMHg3RjI5LCAweDc0MTAsIDB4N0QyMiwgMHg5NTAxLCAweDYyNDAsIDB4NTg0QywKKyAgICAweDRFRDYsIDB4NUI4MywgMHg1OTc5LCAweDU4NTQsIDB4NzM2RCwgMHg2MzFFLCAweDhFNEIsIDB4OEUwRiwKKyAgICAweDgwQ0UsIDB4ODJENCwgMHg2MkFDLCAweDUzRjAsIDB4NkNGMCwgMHg5MTVFLCAweDU5MkEsIDB4NjAwMSwKKyAgICAweDZDNzAsIDB4NTc0RCwgMHg2NDRBLCAweDhEMkEsIDB4NzYyQiwgMHg2RUU5LCAweDU3NUIsIDB4NkE4MCwKKyAgICAweDc1RjAsIDB4NkY2RCwgMHg4QzJELCAweDhDMDgsIDB4NTc2NiwgMHg2QkVGLCAweDg4OTIsIDB4NzhCMywKKyAgICAweDYzQTIsIDB4NTNGOSwgMHg3MEFELCAweDZDNjQsIDB4NTg1OCwgMHg2NDJBLCAweDU4MDIsIDB4NjhFMCwKKyAgICAweDgxOUIsIDB4NTUxMCwgMHg3Q0Q2LCAweDUwMTgsIDB4OEVCQSwgMHg2RENDLCAweDhEOUYsIDB4NzBFQiwKKyAgICAweDYzOEYsIDB4NkQ5QiwgMHg2RUQ0LCAweDdFRTYsIDB4ODQwNCwgMHg2ODQzLCAweDkwMDMsIDB4NkREOCwKKyAgICAweDk2NzYsIDB4OEJBOCwgMHg1OTU3LCAweDcyNzksIDB4ODVFNCwgMHg4MTdFLCAweDc1QkMsIDB4OEE4QSwKKyAgICAweDY4QUYsIDB4NTI1NCwgMHg4RTIyLCAweDk1MTEsIDB4NjNEMCwgMHg5ODk4LCAweDhFNDQsIDB4NTU3QywKKyAgICAweDRGNTMsIDB4NjZGRiwgMHg1NjhGLCAweDYwRDUsIDB4NkQ5NSwgMHg1MjQzLCAweDVDNDksIDB4NTkyOSwKKyAgICAweDZERkIsIDB4NTg2QiwgMHg3NTMwLCAweDc1MUMsIDB4NjA2QywgMHg4MjE0LCAweDgxNDYsIDB4NjMxMSwKKyAgICAweDY3NjEsIDB4OEZFMiwgMHg3NzNBLCAweDhERjMsIDB4OEQzNCwgMHg5NEMxLCAweDVFMTYsIDB4NTM4NSwKKyAgICAweDU0MkMsIDB4NzBDMywgMHg2QzQwLCAweDVFRjcsIDB4NTA1QywgMHg0RUFELCAweDVFQUQsIDB4NjMzQSwKKyAgICAweDgyNDcsIDB4OTAxQSwgMHg2ODUwLCAweDkxNkUsIDB4NzdCMywgMHg1NDBDLCAweDk0REMsIDB4NUY2NCwKKyAgICAweDdBRTUsIDB4Njg3NiwgMHg2MzQ1LCAweDdCNTIsIDB4N0VERiwgMHg3NURCLCAweDUwNzcsIDB4NjI5NSwKKyAgICAweDU5MzQsIDB4OTAwRiwgMHg1MUY4LCAweDc5QzMsIDB4N0E4MSwgMHg1NkZFLCAweDVGOTIsIDB4OTAxNCwKKyAgICAweDZEODIsIDB4NUM2MCwgMHg1NzFGLCAweDU0MTAsIDB4NTE1NCwgMHg2RTRELCAweDU2RTIsIDB4NjNBOCwKKyAgICAweDk4OTMsIDB4ODE3RiwgMHg4NzE1LCAweDg5MkEsIDB4OTAwMCwgMHg1NDFFLCAweDVDNkYsIDB4ODFDMCwKKyAgICAweDYyRDYsIDB4NjI1OCwgMHg4MTMxLCAweDlFMzUsIDB4OTY0MCwgMHg5QTZFLCAweDlBN0MsIDB4NjkyRCwKKyAgICAweDU5QTUsIDB4NjJEMywgMHg1NTNFLCAweDYzMTYsIDB4NTRDNywgMHg4NkQ5LCAweDZEM0MsIDB4NUEwMywKKyAgICAweDc0RTYsIDB4ODg5QywgMHg2QjZBLCAweDU5MTYsIDB4OEM0QywgMHg1RjJGLCAweDZFN0UsIDB4NzNBOSwKKyAgICAweDk4N0QsIDB4NEUzOCwgMHg3MEY3LCAweDVCOEMsIDB4Nzg5NywgMHg2MzNELCAweDY2NUEsIDB4NzY5NiwKKyAgICAweDYwQ0IsIDB4NUI5QiwgMHg1QTQ5LCAweDRFMDcsIDB4ODE1NSwgMHg2QzZBLCAweDczOEIsIDB4NEVBMSwKKyAgICAweDY3ODksIDB4N0Y1MSwgMHg1RjgwLCAweDY1RkEsIDB4NjcxQiwgMHg1RkQ4LCAweDU5ODQsIDB4NUEwMSwKKyAgICAweDVEQ0QsIDB4NUZBRSwgMHg1MzcxLCAweDk3RTYsIDB4OEZERCwgMHg2ODQ1LCAweDU2RjQsIDB4NTUyRiwKKyAgICAweDYwREYsIDB4NEUzQSwgMHg2RjRELCAweDdFRjQsIDB4ODJDNywgMHg4NDBFLCAweDU5RDQsIDB4NEYxRiwKKyAgICAweDRGMkEsIDB4NUMzRSwgMHg3RUFDLCAweDY3MkEsIDB4ODUxQSwgMHg1NDczLCAweDc1NEYsIDB4ODBDMywKKyAgICAweDU1ODIsIDB4OUI0RiwgMHg0RjRELCAweDZFMkQsIDB4OEMxMywgMHg1QzA5LCAweDYxNzAsIDB4NTM2QiwKKyAgICAweDc2MUYsIDB4NkUyOSwgMHg4NjhBLCAweDY1ODcsIDB4OTVGQiwgMHg3RUI5LCAweDU0M0IsIDB4N0EzMywKKyAgICAweDdEMEEsIDB4OTVFRSwgMHg1NUUxLCAweDdGQzEsIDB4NzRFRSwgMHg2MzFELCAweDg3MTcsIDB4NkRBMSwKKyAgICAweDdBOUQsIDB4NjIxMSwgMHg2NUExLCAweDUzNjcsIDB4NjNFMSwgMHg2QzgzLCAweDVERUIsIDB4NTQ1QywKKyAgICAweDk0QTgsIDB4NEU0QywgMHg2QzYxLCAweDhCRUMsIDB4NUM0QiwgMHg2NUUwLCAweDgyOUMsIDB4NjhBNywKKyAgICAweDU0M0UsIDB4NTQzNCwgMHg2QkNCLCAweDZCNjYsIDB4NEU5NCwgMHg2MzQyLCAweDUzNDgsIDB4ODIxRSwKKyAgICAweDRGMEQsIDB4NEZBRSwgMHg1NzVFLCAweDYyMEEsIDB4OTZGRSwgMHg2NjY0LCAweDcyNjksIDB4NTJGRiwKKyAgICAweDUyQTEsIDB4NjA5RiwgMHg4QkVGLCAweDY2MTQsIDB4NzE5OSwgMHg2NzkwLCAweDg5N0YsIDB4Nzg1MiwKKyAgICAweDc3RkQsIDB4NjY3MCwgMHg1NjNCLCAweDU0MzgsIDB4OTUyMSwgMHg3MjdBLCAweDdBMDAsIDB4NjA2RiwKKyAgICAweDVFMEMsIDB4NjA4OSwgMHg4MTlELCAweDU5MTUsIDB4NjBEQywgMHg3MTg0LCAweDcwRUYsIDB4NkVBQSwKKyAgICAweDZDNTAsIDB4NzI4MCwgMHg2QTg0LCAweDg4QUQsIDB4NUUyRCwgMHg0RTYwLCAweDVBQjMsIDB4NTU5QywKKyAgICAweDk0RTMsIDB4NkQxNywgMHg3Q0ZCLCAweDk2OTksIDB4NjIwRiwgMHg3RUM2LCAweDc3OEUsIDB4ODY3RSwKKyAgICAweDUzMjMsIDB4OTcxRSwgMHg4Rjk2LCAweDY2ODcsIDB4NUNFMSwgMHg0RkEwLCAweDcyRUQsIDB4NEUwQiwKKyAgICAweDUzQTYsIDB4NTkwRiwgMHg1NDEzLCAweDYzODAsIDB4OTUyOCwgMHg1MTQ4LCAweDRFRDksIDB4OUM5QywKKyAgICAweDdFQTQsIDB4NTRCOCwgMHg4RDI0LCAweDg4NTQsIDB4ODIzNywgMHg5NUYyLCAweDZEOEUsIDB4NUYyNiwKKyAgICAweDVBQ0MsIDB4NjYzRSwgMHg5NjY5LCAweDczQjAsIDB4NzMyRSwgMHg1M0JGLCAweDgxN0EsIDB4OTk4NSwKKyAgICAweDdGQTEsIDB4NUJBQSwgMHg5Njc3LCAweDk2NTAsIDB4N0VCRiwgMHg3NkY4LCAweDUzQTIsIDB4OTU3NiwKKyAgICAweDk5OTksIDB4N0JCMSwgMHg4OTQ0LCAweDZFNTgsIDB4NEU2MSwgMHg3RkQ0LCAweDc5NjUsIDB4OEJFNiwKKyAgICAweDYwRjMsIDB4NTRDRCwgMHg0RUFCLCAweDk4NzksIDB4NURGNywgMHg2QTYxLCAweDUwQ0YsIDB4NTQxMSwKKyAgICAweDhDNjEsIDB4ODQyNywgMHg3ODVELCAweDk3MDQsIDB4NTI0QSwgMHg1NEVFLCAweDU2QTMsIDB4OTUwMCwKKyAgICAweDZEODgsIDB4NUJCNSwgMHg2REM2LCAweDY2NTMsIDB4NUMwRiwgMHg1QjVELCAweDY4MjEsIDB4ODA5NiwKKyAgICAweDU1NzgsIDB4N0IxMSwgMHg2NTQ4LCAweDY5NTQsIDB4NEU5QiwgMHg2QjQ3LCAweDg3NEUsIDB4OTc4QiwKKyAgICAweDUzNEYsIDB4NjMxRiwgMHg2NDNBLCAweDkwQUEsIDB4NjU5QywgMHg4MEMxLCAweDhDMTAsIDB4NTE5OSwKKyAgICAweDY4QjAsIDB4NTM3OCwgMHg4N0Y5LCAweDYxQzgsIDB4NkNDNCwgMHg2Q0ZCLCAweDhDMjIsIDB4NUM1MSwKKyAgICAweDg1QUEsIDB4ODJBRiwgMHg5NTBDLCAweDZCMjMsIDB4OEY5QiwgMHg2NUIwLCAweDVGRkIsIDB4NUZDMywKKyAgICAweDRGRTEsIDB4ODg0NSwgMHg2NjFGLCAweDgxNjUsIDB4NzMyOSwgMHg2MEZBLCAweDUxNzQsIDB4NTIxMSwKKyAgICAweDU3OEIsIDB4NUY2MiwgMHg5MEEyLCAweDg4NEMsIDB4OTE5MiwgMHg1RTc4LCAweDY3NEYsIDB4NjAyNywKKyAgICAweDU5RDMsIDB4NTE0NCwgMHg1MUY2LCAweDgwRjgsIDB4NTMwOCwgMHg2Qzc5LCAweDk2QzQsIDB4NzE4QSwKKyAgICAweDRGMTEsIDB4NEZFRSwgMHg3RjlFLCAweDY3M0QsIDB4NTVDNSwgMHg5NTA4LCAweDc5QzAsIDB4ODg5NiwKKyAgICAweDdFRTMsIDB4NTg5RiwgMHg2MjBDLCAweDk3MDAsIDB4ODY1QSwgMHg1NjE4LCAweDk4N0IsIDB4NUY5MCwKKyAgICAweDhCQjgsIDB4ODRDNCwgMHg5MTU3LCAweDUzRDksIDB4NjVFRCwgMHg1RThGLCAweDc1NUMsIDB4NjA2NCwKKyAgICAweDdENkUsIDB4NUE3RiwgMHg3RUVBLCAweDdFRUQsIDB4OEY2OSwgMHg1NUE3LCAweDVCQTMsIDB4NjBBQywKKyAgICAweDY1Q0IsIDB4NzM4NCwgMHg5MDA5LCAweDc2NjMsIDB4NzcyOSwgMHg3RURBLCAweDk3NzQsIDB4ODU5QiwKKyAgICAweDVCNjYsIDB4N0E3NCwgMHg5NkVBLCAweDg4NDAsIDB4NTJDQiwgMHg3MThGLCAweDVGQUEsIDB4NjVFQywKKyAgICAweDhCRTIsIDB4NUJGQiwgMHg5QTZGLCAweDVERTEsIDB4NkI4OSwgMHg2QzVCLCAweDhCQUQsIDB4OEJBRiwKKyAgICAweDkwMEEsIDB4OEZDNSwgMHg1MzhCLCAweDYyQkMsIDB4OUUyNiwgMHg5RTJELCAweDU0NDAsIDB4NEUyQiwKKyAgICAweDgyQkQsIDB4NzI1OSwgMHg4NjlDLCAweDVEMTYsIDB4ODg1OSwgMHg2REFGLCAweDk2QzUsIDB4NTREMSwKKyAgICAweDRFOUEsIDB4OEJCNiwgMHg3MTA5LCAweDU0QkQsIDB4OTYwOSwgMHg3MERGLCAweDZERjksIDB4NzZEMCwKKyAgICAweDRFMjUsIDB4NzgxNCwgMHg4NzEyLCAweDVDQTksIDB4NUVGNiwgMHg4QTAwLCAweDk4OUMsIDB4OTYwRSwKKyAgICAweDcwOEUsIDB4NkNCRiwgMHg1OTQ0LCAweDYzQTksIDB4NzczQywgMHg4ODRELCAweDZGMTQsIDB4ODI3MywKKyAgICAweDU4MzAsIDB4NzFENSwgMHg1MzhDLCAweDc4MUEsIDB4OTZDMSwgMHg1NTAxLCAweDVGNjYsIDB4NzEzMCwKKyAgICAweDVCQjQsIDB4OEMxQSwgMHg5QThDLCAweDZCODMsIDB4NTkyRSwgMHg5RTJGLCAweDc5RTcsIDB4Njc2OCwKKyAgICAweDYyNkMsIDB4NEY2RiwgMHg3NUExLCAweDdGOEEsIDB4NkQwQiwgMHg5NjMzLCAweDZDMjcsIDB4NEVGMCwKKyAgICAweDc1RDIsIDB4NTE3QiwgMHg2ODM3LCAweDZGM0UsIDB4OTA4MCwgMHg4MTcwLCAweDU5OTYsIDB4NzQ3NiwKKyAgICAweDY0NDcsIDB4NUMyNywgMHg5MDY1LCAweDdBOTEsIDB4OEMyMywgMHg1OURBLCAweDU0QUMsIDB4ODIwMCwKKyAgICAweDgzNkYsIDB4ODk4MSwgMHg4MDAwLCAweDY5MzAsIDB4NTY0RSwgMHg4MDM2LCAweDcyMzcsIDB4OTFDRSwKKyAgICAweDUxQjYsIDB4NEU1RiwgMHg5ODc1LCAweDYzOTYsIDB4NEUxQSwgMHg1M0Y2LCAweDY2RjMsIDB4ODE0QiwKKyAgICAweDU5MUMsIDB4NkRCMiwgMHg0RTAwLCAweDU4RjksIDB4NTMzQiwgMHg2M0Q2LCAweDk0RjEsIDB4NEY5RCwKKyAgICAweDRGMEEsIDB4ODg2MywgMHg5ODkwLCAweDU5MzcsIDB4OTA1NywgMHg3OUZCLCAweDRFRUEsIDB4ODBGMCwKKyAgICAweDc1OTEsIDB4NkM4MiwgMHg1QjlDLCAweDU5RTgsIDB4NUY1RCwgMHg2OTA1LCAweDg2ODEsIDB4NTAxQSwKKyAgICAweDVERjIsIDB4NEU1OSwgMHg3N0UzLCAweDRFRTUsIDB4ODI3QSwgMHg2MjkxLCAweDY2MTMsIDB4OTA5MSwKKyAgICAweDVDNzksIDB4NEVCRiwgMHg1Rjc5LCAweDgxQzYsIDB4OTAzOCwgMHg4MDg0LCAweDc1QUIsIDB4NEVBNiwKKyAgICAweDg4RDQsIDB4NjEwRiwgMHg2QkM1LCAweDVGQzYsIDB4NEU0OSwgMHg3NkNBLCAweDZFQTIsIDB4OEJFMywKKyAgICAweDhCQUUsIDB4OEMwQSwgMHg4QkQxLCAweDVGMDIsIDB4N0ZGQywgMHg3RkNDLCAweDdFQ0UsIDB4ODMzNSwKKyAgICAweDgzNkIsIDB4NTZFMCwgMHg2QkI3LCAweDk3RjMsIDB4OTYzNCwgMHg1OUZCLCAweDU0MUYsIDB4OTRGNiwKKyAgICAweDZERUIsIDB4NUJDNSwgMHg5OTZFLCAweDVDMzksIDB4NUYxNSwgMHg5NjkwLCAweDUzNzAsIDB4ODJGMSwKKyAgICAweDZBMzEsIDB4NUE3NCwgMHg5RTcwLCAweDVFOTQsIDB4N0YyOCwgMHg4M0I5LCAweDg0MjQsIDB4ODQyNSwKKyAgICAweDgzNjcsIDB4ODc0NywgMHg4RkNFLCAweDhENjIsIDB4NzZDOCwgMHg1RjcxLCAweDk4OTYsIDB4Nzg2QywKKyAgICAweDY2MjAsIDB4NTRERiwgMHg2MkU1LCAweDRGNjMsIDB4ODFDMywgMHg3NUM4LCAweDVFQjgsIDB4OTZDRCwKKyAgICAweDhFMEEsIDB4ODZGOSwgMHg1NDhGLCAweDZDRjMsIDB4NkQ4QywgMHg2QzM4LCAweDYwN0YsIDB4NTJDNywKKyAgICAweDc1MjgsIDB4NUU3RCwgMHg0RjE4LCAweDYwQTAsIDB4NUZFNywgMHg1QzI0LCAweDc1MzEsIDB4OTBBRSwKKyAgICAweDk0QzAsIDB4NzJCOSwgMHg2Q0I5LCAweDZFMzgsIDB4OTE0OSwgMHg2NzA5LCAweDUzQ0IsIDB4NTNGMywKKyAgICAweDRGNTEsIDB4OTFDOSwgMHg4QkYxLCAweDUzQzgsIDB4NUU3QywgMHg4RkMyLCAweDZERTQsIDB4NEU4RSwKKyAgICAweDc2QzIsIDB4Njk4NiwgMHg4NjVFLCAweDYxMUEsIDB4ODIwNiwgMHg0RjU5LCAweDRGREUsIDB4OTAzRSwKKyAgICAweDlDN0MsIDB4NjEwOSwgMHg2RTFELCAweDZFMTQsIDB4OTY4NSwgMHg0RTg4LCAweDVBMzEsIDB4OTZFOCwKKyAgICAweDRFMEUsIDB4NUM3RiwgMHg3OUI5LCAweDVCODcsIDB4OEJFRCwgMHg3RkJELCAweDczODksIDB4NTdERiwKKyAgICAweDgyOEIsIDB4OTBDMSwgMHg1NDAxLCAweDkwNDcsIDB4NTVCQiwgMHg1Q0VBLCAweDVGQTEsIDB4NjEwOCwKKyAgICAweDZCMzIsIDB4NzJGMSwgMHg4MEIyLCAweDhBODksIDB4NkQ3NCwgMHg1QkQzLCAweDg4RDUsIDB4OTg4NCwKKyAgICAweDhDNkIsIDB4OUE2RCwgMHg5RTMzLCAweDZFMEEsIDB4NTFBNCwgMHg1MTQzLCAweDU3QTMsIDB4ODg4MSwKKyAgICAweDUzOUYsIDB4NjNGNCwgMHg4Rjk1LCAweDU2RUQsIDB4NTQ1OCwgMHg1NzA2LCAweDczM0YsIDB4NkU5MCwKKyAgICAweDdGMTgsIDB4OEZEQywgMHg4MkQxLCAweDYxM0YsIDB4NjAyOCwgMHg5NjYyLCAweDY2RjAsIDB4N0VBNiwKKyAgICAweDhEOEEsIDB4OERDMywgMHg5NEE1LCAweDVDQjMsIDB4N0NBNCwgMHg2NzA4LCAweDYwQTYsIDB4OTYwNSwKKyAgICAweDgwMTgsIDB4NEU5MSwgMHg5MEU3LCAweDUzMDAsIDB4OTY2OCwgMHg1MTQxLCAweDhGRDAsIDB4ODU3NCwKKyAgICAweDkxNUQsIDB4NjY1NSwgMHg5N0Y1LCAweDVCNTUsIDB4NTMxRCwgMHg3ODM4LCAweDY3NDIsIDB4NjgzRCwKKyAgICAweDU0QzksIDB4NzA3RSwgMHg1QkIwLCAweDhGN0QsIDB4NTE4RCwgMHg1NzI4LCAweDU0QjEsIDB4NjUxMiwKKyAgICAweDY2ODIsIDB4OEQ1RSwgMHg4RDQzLCAweDgxMEYsIDB4ODQ2QywgMHg5MDZELCAweDdDREYsIDB4NTFGRiwKKyAgICAweDg1RkIsIDB4NjdBMywgMHg2NUU5LCAweDZGQTEsIDB4ODZBNCwgMHg4RTgxLCAweDU2NkEsIDB4OTAyMCwKKyAgICAweDc2ODIsIDB4NzA3NiwgMHg3MUU1LCAweDhEMjMsIDB4NjJFOSwgMHg1MjE5LCAweDZDRkQsIDB4OEQzQywKKyAgICAweDYwMEUsIDB4NTg5RSwgMHg2MThFLCAweDY2RkUsIDB4OEQ2MCwgMHg2MjRFLCAweDU1QjMsIDB4NkUyMywKKyAgICAweDY3MkQsIDB4OEY2NywgMHg5NEUxLCAweDk1RjgsIDB4NzcyOCwgMHg2ODA1LCAweDY5QTgsIDB4NTQ4QiwKKyAgICAweDRFNEQsIDB4NzBCOCwgMHg4QkM4LCAweDY0NTgsIDB4NjU4QiwgMHg1Qjg1LCAweDdBODQsIDB4NTAzQSwKKyAgICAweDVCRTgsIDB4NzdCQiwgMHg2QkUxLCAweDhBNzksIDB4N0M5OCwgMHg2Q0JFLCAweDc2Q0YsIDB4NjVBOSwKKyAgICAweDhGOTcsIDB4NUQyRCwgMHg1QzU1LCAweDg2MzgsIDB4NjgwOCwgMHg1MzYwLCAweDYyMTgsIDB4N0FEOSwKKyAgICAweDZFNUIsIDB4N0VGRCwgMHg2QTFGLCAweDdBRTAsIDB4NUY3MCwgMHg2RjMzLCAweDVGMjAsIDB4NjM4QywKKyAgICAweDZEQTgsIDB4Njc1NiwgMHg0RTA4LCAweDVFMTAsIDB4OEQyNiwgMHg0RUQ3LCAweDgwQzAsIDB4NzYzNCwKKyAgICAweDk2OUMsIDB4NjJEQiwgMHg2NjJELCAweDYyN0UsIDB4NkNCQywgMHg4RDc1LCAweDcxNjcsIDB4N0Y2OSwKKyAgICAweDUxNDYsIDB4ODA4NywgMHg1M0VDLCAweDkwNkUsIDB4NjI5OCwgMHg1NEYyLCAweDg2RjAsIDB4OEY5OSwKKyAgICAweDgwMDUsIDB4OTUxNywgMHg4NTE3LCAweDhGRDksIDB4NkQ1OSwgMHg3M0NELCAweDY1OUYsIDB4NzcxRiwKKyAgICAweDc1MDQsIDB4NzgyNywgMHg4MUZCLCAweDhEMUUsIDB4OTQ4OCwgMHg0RkE2LCAweDY3OTUsIDB4NzVCOSwKKyAgICAweDhCQ0EsIDB4OTcwNywgMHg2MzJGLCAweDk1NDcsIDB4OTYzNSwgMHg4NEI4LCAweDYzMjMsIDB4Nzc0MSwKKyAgICAweDVGODEsIDB4NzJGMCwgMHg0RTg5LCAweDYwMTQsIDB4NjU3NCwgMHg2MkVGLCAweDZCNjMsIDB4NjUzRiwKKyAgICAweDVFMjcsIDB4NzVDNywgMHg5MEQxLCAweDhCQzEsIDB4ODI5RCwgMHg2NzlELCAweDY1MkYsIDB4NTQzMSwKKyAgICAweDg3MTgsIDB4NzdFNSwgMHg4MEEyLCAweDgxMDIsIDB4NkM0MSwgMHg0RTRCLCAweDdFQzcsIDB4ODA0QywKKyAgICAweDc2RjQsIDB4NjkwRCwgMHg2Qjk2LCAweDYyNjcsIDB4NTAzQywgMHg0Rjg0LCAweDU3NDAsIDB4NjMwNywKKyAgICAweDZCNjIsIDB4OERCRSwgMHg1M0VBLCAweDY1RTgsIDB4N0VCOCwgMHg1RkQ3LCAweDYzMUEsIDB4NjNCNywKKyAgICAweDgxRjMsIDB4ODFGNCwgMHg3RjZFLCAweDVFMUMsIDB4NUNEOSwgMHg1MjM2LCAweDY2N0EsIDB4NzlFOSwKKyAgICAweDdBMUEsIDB4OEQyOCwgMHg3MDk5LCAweDc1RDQsIDB4NkVERSwgMHg2Q0JCLCAweDdBOTIsIDB4NEUyRCwKKyAgICAweDc2QzUsIDB4NUZFMCwgMHg5NDlGLCAweDg4NzcsIDB4N0VDOCwgMHg3OUNELCAweDgwQkYsIDB4OTFDRCwKKyAgICAweDRFRjIsIDB4NEYxNywgMHg4MjFGLCAweDU0NjgsIDB4NURERSwgMHg2RDMyLCAweDhCQ0MsIDB4N0NBNSwKKyAgICAweDhGNzQsIDB4ODA5OCwgMHg1RTFBLCAweDU0OTIsIDB4NzZCMSwgMHg1Qjk5LCAweDY2M0MsIDB4OUFBNCwKKyAgICAweDczRTAsIDB4NjgyQSwgMHg4NkRCLCAweDY3MzEsIDB4NzMyQSwgMHg4QkY4LCAweDhCREIsIDB4OTAxMCwKKyAgICAweDdBRjksIDB4NzBEQiwgMHg3MTZFLCAweDYyQzQsIDB4NzdBOSwgMHg1NjMxLCAweDRFM0IsIDB4ODQ1NywKKyAgICAweDY3RjEsIDB4NTJBOSwgMHg4NkMwLCAweDhEMkUsIDB4OTRGOCwgMHg3QjUxLCAweDRGNEYsIDB4NkNFOCwKKyAgICAweDc5NUQsIDB4OUE3QiwgMHg2MjkzLCAweDcyMkEsIDB4NjJGRCwgMHg0RTEzLCAweDc4MTYsIDB4OEY2QywKKyAgICAweDY0QjAsIDB4OEQ1QSwgMHg3QkM2LCAweDY4NjksIDB4NUU4NCwgMHg4OEM1LCAweDU5ODYsIDB4NjQ5RSwKKyAgICAweDU4RUUsIDB4NzJCNiwgMHg2OTBFLCAweDk1MjUsIDB4OEZGRCwgMHg4RDU4LCAweDU3NjAsIDB4N0YwMCwKKyAgICAweDhDMDYsIDB4NTFDNiwgMHg2MzQ5LCAweDYyRDksIDB4NTM1MywgMHg2ODRDLCAweDc0MjIsIDB4ODMwMSwKKyAgICAweDkxNEMsIDB4NTU0NCwgMHg3NzQwLCAweDcwN0MsIDB4NkQ0QSwgMHg1MTc5LCAweDU0QTgsIDB4OEQ0NCwKKyAgICAweDU5RkYsIDB4NkVDQiwgMHg2REM0LCAweDVCNUMsIDB4N0QyQiwgMHg0RUQ0LCAweDdDN0QsIDB4NkVEMywKKyAgICAweDVCNTAsIDB4ODFFQSwgMHg2RTBELCAweDVCNTcsIDB4OUIwMywgMHg2OEQ1LCAweDhFMkEsIDB4NUI5NywKKyAgICAweDdFRkMsIDB4NjAzQiwgMHg3RUI1LCAweDkwQjksIDB4OEQ3MCwgMHg1OTRGLCAweDYzQ0QsIDB4NzlERiwKKyAgICAweDhEQjMsIDB4NTM1MiwgMHg2NUNGLCAweDc5NTYsIDB4OEJDNSwgMHg5NjNCLCAweDdFQzQsIDB4OTRCQiwKKyAgICAweDdFODIsIDB4NTYzNCwgMHg5MTg5LCAweDY3MDAsIDB4N0Y2QSwgMHg1QzBBLCAweDkwNzUsIDB4NjYyOCwKKyAgICAweDVERTYsIDB4NEY1MCwgMHg2N0RFLCAweDUwNUEsIDB4NEY1QywgMHg1NzUwLCAweDVFQTcsIDB4NEU4RCwKKyAgICAweDRFMEMsIDB4NTE0MCwgMHg0RTEwLCAweDVFRkYsIDB4NTM0NSwgMHg0RTE1LCAweDRFOTgsIDB4NEUxRSwKKyAgICAweDlCMzIsIDB4NUI2QywgMHg1NjY5LCAweDRFMjgsIDB4NzlCQSwgMHg0RTNGLCAweDUzMTUsIDB4NEU0NywKKyAgICAweDU5MkQsIDB4NzIzQiwgMHg1MzZFLCAweDZDMTAsIDB4NTZERiwgMHg4MEU0LCAweDk5OTcsIDB4NkJEMywKKyAgICAweDc3N0UsIDB4OUYxNywgMHg0RTM2LCAweDRFOUYsIDB4OUYxMCwgMHg0RTVDLCAweDRFNjksIDB4NEU5MywKKyAgICAweDgyODgsIDB4NUI1QiwgMHg1NTZDLCAweDU2MEYsIDB4NEVDNCwgMHg1MzhELCAweDUzOUQsIDB4NTNBMywKKyAgICAweDUzQTUsIDB4NTNBRSwgMHg5NzY1LCAweDhENUQsIDB4NTMxQSwgMHg1M0Y1LCAweDUzMjYsIDB4NTMyRSwKKyAgICAweDUzM0UsIDB4OEQ1QywgMHg1MzY2LCAweDUzNjMsIDB4NTIwMiwgMHg1MjA4LCAweDUyMEUsIDB4NTIyRCwKKyAgICAweDUyMzMsIDB4NTIzRiwgMHg1MjQwLCAweDUyNEMsIDB4NTI1RSwgMHg1MjYxLCAweDUyNUMsIDB4ODRBRiwKKyAgICAweDUyN0QsIDB4NTI4MiwgMHg1MjgxLCAweDUyOTAsIDB4NTI5MywgMHg1MTgyLCAweDdGNTQsIDB4NEVCQiwKKyAgICAweDRFQzMsIDB4NEVDOSwgMHg0RUMyLCAweDRFRTgsIDB4NEVFMSwgMHg0RUVCLCAweDRFREUsIDB4NEYxQiwKKyAgICAweDRFRjMsIDB4NEYyMiwgMHg0RjY0LCAweDRFRjUsIDB4NEYyNSwgMHg0RjI3LCAweDRGMDksIDB4NEYyQiwKKyAgICAweDRGNUUsIDB4NEY2NywgMHg2NTM4LCAweDRGNUEsIDB4NEY1RCwgMHg0RjVGLCAweDRGNTcsIDB4NEYzMiwKKyAgICAweDRGM0QsIDB4NEY3NiwgMHg0Rjc0LCAweDRGOTEsIDB4NEY4OSwgMHg0RjgzLCAweDRGOEYsIDB4NEY3RSwKKyAgICAweDRGN0IsIDB4NEZBQSwgMHg0RjdDLCAweDRGQUMsIDB4NEY5NCwgMHg0RkU2LCAweDRGRTgsIDB4NEZFQSwKKyAgICAweDRGQzUsIDB4NEZEQSwgMHg0RkUzLCAweDRGREMsIDB4NEZEMSwgMHg0RkRGLCAweDRGRjgsIDB4NTAyOSwKKyAgICAweDUwNEMsIDB4NEZGMywgMHg1MDJDLCAweDUwMEYsIDB4NTAyRSwgMHg1MDJELCAweDRGRkUsIDB4NTAxQywKKyAgICAweDUwMEMsIDB4NTAyNSwgMHg1MDI4LCAweDUwN0UsIDB4NTA0MywgMHg1MDU1LCAweDUwNDgsIDB4NTA0RSwKKyAgICAweDUwNkMsIDB4NTA3QiwgMHg1MEE1LCAweDUwQTcsIDB4NTBBOSwgMHg1MEJBLCAweDUwRDYsIDB4NTEwNiwKKyAgICAweDUwRUQsIDB4NTBFQywgMHg1MEU2LCAweDUwRUUsIDB4NTEwNywgMHg1MTBCLCAweDRFREQsIDB4NkMzRCwKKyAgICAweDRGNTgsIDB4NEY2NSwgMHg0RkNFLCAweDlGQTAsIDB4NkM0NiwgMHg3Qzc0LCAweDUxNkUsIDB4NURGRCwKKyAgICAweDlFQzksIDB4OTk5OCwgMHg1MTgxLCAweDU5MTQsIDB4NTJGOSwgMHg1MzBELCAweDhBMDcsIDB4NTMxMCwKKyAgICAweDUxRUIsIDB4NTkxOSwgMHg1MTU1LCAweDRFQTAsIDB4NTE1NiwgMHg0RUIzLCAweDg4NkUsIDB4ODhBNCwKKyAgICAweDRFQjUsIDB4ODExNCwgMHg4OEQyLCAweDc5ODAsIDB4NUIzNCwgMHg4ODAzLCAweDdGQjgsIDB4NTFBQiwKKyAgICAweDUxQjEsIDB4NTFCRCwgMHg1MUJDLCAweDUxQzcsIDB4NTE5NiwgMHg1MUEyLCAweDUxQTUsIDB4OEJBMCwKKyAgICAweDhCQTYsIDB4OEJBNywgMHg4QkFBLCAweDhCQjQsIDB4OEJCNSwgMHg4QkI3LCAweDhCQzIsIDB4OEJDMywKKyAgICAweDhCQ0IsIDB4OEJDRiwgMHg4QkNFLCAweDhCRDIsIDB4OEJEMywgMHg4QkQ0LCAweDhCRDYsIDB4OEJEOCwKKyAgICAweDhCRDksIDB4OEJEQywgMHg4QkRGLCAweDhCRTAsIDB4OEJFNCwgMHg4QkU4LCAweDhCRTksIDB4OEJFRSwKKyAgICAweDhCRjAsIDB4OEJGMywgMHg4QkY2LCAweDhCRjksIDB4OEJGQywgMHg4QkZGLCAweDhDMDAsIDB4OEMwMiwKKyAgICAweDhDMDQsIDB4OEMwNywgMHg4QzBDLCAweDhDMEYsIDB4OEMxMSwgMHg4QzEyLCAweDhDMTQsIDB4OEMxNSwKKyAgICAweDhDMTYsIDB4OEMxOSwgMHg4QzFCLCAweDhDMTgsIDB4OEMxRCwgMHg4QzFGLCAweDhDMjAsIDB4OEMyMSwKKyAgICAweDhDMjUsIDB4OEMyNywgMHg4QzJBLCAweDhDMkIsIDB4OEMyRSwgMHg4QzJGLCAweDhDMzIsIDB4OEMzMywKKyAgICAweDhDMzUsIDB4OEMzNiwgMHg1MzY5LCAweDUzN0EsIDB4OTYxRCwgMHg5NjIyLCAweDk2MjEsIDB4OTYzMSwKKyAgICAweDk2MkEsIDB4OTYzRCwgMHg5NjNDLCAweDk2NDIsIDB4OTY0OSwgMHg5NjU0LCAweDk2NUYsIDB4OTY2NywKKyAgICAweDk2NkMsIDB4OTY3MiwgMHg5Njc0LCAweDk2ODgsIDB4OTY4RCwgMHg5Njk3LCAweDk2QjAsIDB4OTA5NywKKyAgICAweDkwOUIsIDB4OTA5RCwgMHg5MDk5LCAweDkwQUMsIDB4OTBBMSwgMHg5MEI0LCAweDkwQjMsIDB4OTBCNiwKKyAgICAweDkwQkEsIDB4OTBCOCwgMHg5MEIwLCAweDkwQ0YsIDB4OTBDNSwgMHg5MEJFLCAweDkwRDAsIDB4OTBDNCwKKyAgICAweDkwQzcsIDB4OTBEMywgMHg5MEU2LCAweDkwRTIsIDB4OTBEQywgMHg5MEQ3LCAweDkwREIsIDB4OTBFQiwKKyAgICAweDkwRUYsIDB4OTBGRSwgMHg5MTA0LCAweDkxMjIsIDB4OTExRSwgMHg5MTIzLCAweDkxMzEsIDB4OTEyRiwKKyAgICAweDkxMzksIDB4OTE0MywgMHg5MTQ2LCAweDUyMEQsIDB4NTk0MiwgMHg1MkEyLCAweDUyQUMsIDB4NTJBRCwKKyAgICAweDUyQkUsIDB4NTRGRiwgMHg1MkQwLCAweDUyRDYsIDB4NTJGMCwgMHg1M0RGLCAweDcxRUUsIDB4NzdDRCwKKyAgICAweDVFRjQsIDB4NTFGNSwgMHg1MUZDLCAweDlCMkYsIDB4NTNCNiwgMHg1RjAxLCAweDc1NUEsIDB4NURFRiwKKyAgICAweDU3NEMsIDB4NTdBOSwgMHg1N0ExLCAweDU4N0UsIDB4NThCQywgMHg1OEM1LCAweDU4RDEsIDB4NTcyOSwKKyAgICAweDU3MkMsIDB4NTcyQSwgMHg1NzMzLCAweDU3MzksIDB4NTcyRSwgMHg1NzJGLCAweDU3NUMsIDB4NTczQiwKKyAgICAweDU3NDIsIDB4NTc2OSwgMHg1Nzg1LCAweDU3NkIsIDB4NTc4NiwgMHg1NzdDLCAweDU3N0IsIDB4NTc2OCwKKyAgICAweDU3NkQsIDB4NTc3NiwgMHg1NzczLCAweDU3QUQsIDB4NTdBNCwgMHg1NzhDLCAweDU3QjIsIDB4NTdDRiwKKyAgICAweDU3QTcsIDB4NTdCNCwgMHg1NzkzLCAweDU3QTAsIDB4NTdENSwgMHg1N0Q4LCAweDU3REEsIDB4NTdEOSwKKyAgICAweDU3RDIsIDB4NTdCOCwgMHg1N0Y0LCAweDU3RUYsIDB4NTdGOCwgMHg1N0U0LCAweDU3REQsIDB4NTgwQiwKKyAgICAweDU4MEQsIDB4NTdGRCwgMHg1N0VELCAweDU4MDAsIDB4NTgxRSwgMHg1ODE5LCAweDU4NDQsIDB4NTgyMCwKKyAgICAweDU4NjUsIDB4NTg2QywgMHg1ODgxLCAweDU4ODksIDB4NTg5QSwgMHg1ODgwLCAweDk5QTgsIDB4OUYxOSwKKyAgICAweDYxRkYsIDB4ODI3OSwgMHg4MjdELCAweDgyN0YsIDB4ODI4RiwgMHg4MjhBLCAweDgyQTgsIDB4ODI4NCwKKyAgICAweDgyOEUsIDB4ODI5MSwgMHg4Mjk3LCAweDgyOTksIDB4ODJBQiwgMHg4MkI4LCAweDgyQkUsIDB4ODJCMCwKKyAgICAweDgyQzgsIDB4ODJDQSwgMHg4MkUzLCAweDgyOTgsIDB4ODJCNywgMHg4MkFFLCAweDgyQ0IsIDB4ODJDQywKKyAgICAweDgyQzEsIDB4ODJBOSwgMHg4MkI0LCAweDgyQTEsIDB4ODJBQSwgMHg4MjlGLCAweDgyQzQsIDB4ODJDRSwKKyAgICAweDgyQTQsIDB4ODJFMSwgMHg4MzA5LCAweDgyRjcsIDB4ODJFNCwgMHg4MzBGLCAweDgzMDcsIDB4ODJEQywKKyAgICAweDgyRjQsIDB4ODJEMiwgMHg4MkQ4LCAweDgzMEMsIDB4ODJGQiwgMHg4MkQzLCAweDgzMTEsIDB4ODMxQSwKKyAgICAweDgzMDYsIDB4ODMxNCwgMHg4MzE1LCAweDgyRTAsIDB4ODJENSwgMHg4MzFDLCAweDgzNTEsIDB4ODM1QiwKKyAgICAweDgzNUMsIDB4ODMwOCwgMHg4MzkyLCAweDgzM0MsIDB4ODMzNCwgMHg4MzMxLCAweDgzOUIsIDB4ODM1RSwKKyAgICAweDgzMkYsIDB4ODM0RiwgMHg4MzQ3LCAweDgzNDMsIDB4ODM1RiwgMHg4MzQwLCAweDgzMTcsIDB4ODM2MCwKKyAgICAweDgzMkQsIDB4ODMzQSwgMHg4MzMzLCAweDgzNjYsIDB4ODM2NSwgMHg4MzY4LCAweDgzMUIsIDB4ODM2OSwKKyAgICAweDgzNkMsIDB4ODM2QSwgMHg4MzZELCAweDgzNkUsIDB4ODNCMCwgMHg4Mzc4LCAweDgzQjMsIDB4ODNCNCwKKyAgICAweDgzQTAsIDB4ODNBQSwgMHg4MzkzLCAweDgzOUMsIDB4ODM4NSwgMHg4MzdDLCAweDgzQjYsIDB4ODNBOSwKKyAgICAweDgzN0QsIDB4ODNCOCwgMHg4MzdCLCAweDgzOTgsIDB4ODM5RSwgMHg4M0E4LCAweDgzQkEsIDB4ODNCQywKKyAgICAweDgzQzEsIDB4ODQwMSwgMHg4M0U1LCAweDgzRDgsIDB4NTgwNywgMHg4NDE4LCAweDg0MEIsIDB4ODNERCwKKyAgICAweDgzRkQsIDB4ODNENiwgMHg4NDFDLCAweDg0MzgsIDB4ODQxMSwgMHg4NDA2LCAweDgzRDQsIDB4ODNERiwKKyAgICAweDg0MEYsIDB4ODQwMywgMHg4M0Y4LCAweDgzRjksIDB4ODNFQSwgMHg4M0M1LCAweDgzQzAsIDB4ODQyNiwKKyAgICAweDgzRjAsIDB4ODNFMSwgMHg4NDVDLCAweDg0NTEsIDB4ODQ1QSwgMHg4NDU5LCAweDg0NzMsIDB4ODQ4NywKKyAgICAweDg0ODgsIDB4ODQ3QSwgMHg4NDg5LCAweDg0NzgsIDB4ODQzQywgMHg4NDQ2LCAweDg0NjksIDB4ODQ3NiwKKyAgICAweDg0OEMsIDB4ODQ4RSwgMHg4NDMxLCAweDg0NkQsIDB4ODRDMSwgMHg4NENELCAweDg0RDAsIDB4ODRFNiwKKyAgICAweDg0QkQsIDB4ODREMywgMHg4NENBLCAweDg0QkYsIDB4ODRCQSwgMHg4NEUwLCAweDg0QTEsIDB4ODRCOSwKKyAgICAweDg0QjQsIDB4ODQ5NywgMHg4NEU1LCAweDg0RTMsIDB4ODUwQywgMHg3NTBELCAweDg1MzgsIDB4ODRGMCwKKyAgICAweDg1MzksIDB4ODUxRiwgMHg4NTNBLCAweDg1NTYsIDB4ODUzQiwgMHg4NEZGLCAweDg0RkMsIDB4ODU1OSwKKyAgICAweDg1NDgsIDB4ODU2OCwgMHg4NTY0LCAweDg1NUUsIDB4ODU3QSwgMHg3N0EyLCAweDg1NDMsIDB4ODU3MiwKKyAgICAweDg1N0IsIDB4ODVBNCwgMHg4NUE4LCAweDg1ODcsIDB4ODU4RiwgMHg4NTc5LCAweDg1QUUsIDB4ODU5QywKKyAgICAweDg1ODUsIDB4ODVCOSwgMHg4NUI3LCAweDg1QjAsIDB4ODVEMywgMHg4NUMxLCAweDg1REMsIDB4ODVGRiwKKyAgICAweDg2MjcsIDB4ODYwNSwgMHg4NjI5LCAweDg2MTYsIDB4ODYzQywgMHg1RUZFLCAweDVGMDgsIDB4NTkzQywKKyAgICAweDU5NDEsIDB4ODAzNywgMHg1OTU1LCAweDU5NUEsIDB4NTk1OCwgMHg1MzBGLCAweDVDMjIsIDB4NUMyNSwKKyAgICAweDVDMkMsIDB4NUMzNCwgMHg2MjRDLCAweDYyNkEsIDB4NjI5RiwgMHg2MkJCLCAweDYyQ0EsIDB4NjJEQSwKKyAgICAweDYyRDcsIDB4NjJFRSwgMHg2MzIyLCAweDYyRjYsIDB4NjMzOSwgMHg2MzRCLCAweDYzNDMsIDB4NjNBRCwKKyAgICAweDYzRjYsIDB4NjM3MSwgMHg2MzdBLCAweDYzOEUsIDB4NjNCNCwgMHg2MzZELCAweDYzQUMsIDB4NjM4QSwKKyAgICAweDYzNjksIDB4NjNBRSwgMHg2M0JDLCAweDYzRjIsIDB4NjNGOCwgMHg2M0UwLCAweDYzRkYsIDB4NjNDNCwKKyAgICAweDYzREUsIDB4NjNDRSwgMHg2NDUyLCAweDYzQzYsIDB4NjNCRSwgMHg2NDQ1LCAweDY0NDEsIDB4NjQwQiwKKyAgICAweDY0MUIsIDB4NjQyMCwgMHg2NDBDLCAweDY0MjYsIDB4NjQyMSwgMHg2NDVFLCAweDY0ODQsIDB4NjQ2RCwKKyAgICAweDY0OTYsIDB4NjQ3QSwgMHg2NEI3LCAweDY0QjgsIDB4NjQ5OSwgMHg2NEJBLCAweDY0QzAsIDB4NjREMCwKKyAgICAweDY0RDcsIDB4NjRFNCwgMHg2NEUyLCAweDY1MDksIDB4NjUyNSwgMHg2NTJFLCAweDVGMEIsIDB4NUZEMiwKKyAgICAweDc1MTksIDB4NUYxMSwgMHg1MzVGLCAweDUzRjEsIDB4NTNGRCwgMHg1M0U5LCAweDUzRTgsIDB4NTNGQiwKKyAgICAweDU0MTIsIDB4NTQxNiwgMHg1NDA2LCAweDU0NEIsIDB4NTQ1MiwgMHg1NDUzLCAweDU0NTQsIDB4NTQ1NiwKKyAgICAweDU0NDMsIDB4NTQyMSwgMHg1NDU3LCAweDU0NTksIDB4NTQyMywgMHg1NDMyLCAweDU0ODIsIDB4NTQ5NCwKKyAgICAweDU0NzcsIDB4NTQ3MSwgMHg1NDY0LCAweDU0OUEsIDB4NTQ5QiwgMHg1NDg0LCAweDU0NzYsIDB4NTQ2NiwKKyAgICAweDU0OUQsIDB4NTREMCwgMHg1NEFELCAweDU0QzIsIDB4NTRCNCwgMHg1NEQyLCAweDU0QTcsIDB4NTRBNiwKKyAgICAweDU0RDMsIDB4NTRENCwgMHg1NDcyLCAweDU0QTMsIDB4NTRENSwgMHg1NEJCLCAweDU0QkYsIDB4NTRDQywKKyAgICAweDU0RDksIDB4NTREQSwgMHg1NERDLCAweDU0QTksIDB4NTRBQSwgMHg1NEE0LCAweDU0REQsIDB4NTRDRiwKKyAgICAweDU0REUsIDB4NTUxQiwgMHg1NEU3LCAweDU1MjAsIDB4NTRGRCwgMHg1NTE0LCAweDU0RjMsIDB4NTUyMiwKKyAgICAweDU1MjMsIDB4NTUwRiwgMHg1NTExLCAweDU1MjcsIDB4NTUyQSwgMHg1NTY3LCAweDU1OEYsIDB4NTVCNSwKKyAgICAweDU1NDksIDB4NTU2RCwgMHg1NTQxLCAweDU1NTUsIDB4NTUzRiwgMHg1NTUwLCAweDU1M0MsIDB4NTUzNywKKyAgICAweDU1NTYsIDB4NTU3NSwgMHg1NTc2LCAweDU1NzcsIDB4NTUzMywgMHg1NTMwLCAweDU1NUMsIDB4NTU4QiwKKyAgICAweDU1RDIsIDB4NTU4MywgMHg1NUIxLCAweDU1QjksIDB4NTU4OCwgMHg1NTgxLCAweDU1OUYsIDB4NTU3RSwKKyAgICAweDU1RDYsIDB4NTU5MSwgMHg1NTdCLCAweDU1REYsIDB4NTVCRCwgMHg1NUJFLCAweDU1OTQsIDB4NTU5OSwKKyAgICAweDU1RUEsIDB4NTVGNywgMHg1NUM5LCAweDU2MUYsIDB4NTVEMSwgMHg1NUVCLCAweDU1RUMsIDB4NTVENCwKKyAgICAweDU1RTYsIDB4NTVERCwgMHg1NUM0LCAweDU1RUYsIDB4NTVFNSwgMHg1NUYyLCAweDU1RjMsIDB4NTVDQywKKyAgICAweDU1Q0QsIDB4NTVFOCwgMHg1NUY1LCAweDU1RTQsIDB4OEY5NCwgMHg1NjFFLCAweDU2MDgsIDB4NTYwQywKKyAgICAweDU2MDEsIDB4NTYyNCwgMHg1NjIzLCAweDU1RkUsIDB4NTYwMCwgMHg1NjI3LCAweDU2MkQsIDB4NTY1OCwKKyAgICAweDU2MzksIDB4NTY1NywgMHg1NjJDLCAweDU2NEQsIDB4NTY2MiwgMHg1NjU5LCAweDU2NUMsIDB4NTY0QywKKyAgICAweDU2NTQsIDB4NTY4NiwgMHg1NjY0LCAweDU2NzEsIDB4NTY2QiwgMHg1NjdCLCAweDU2N0MsIDB4NTY4NSwKKyAgICAweDU2OTMsIDB4NTZBRiwgMHg1NkQ0LCAweDU2RDcsIDB4NTZERCwgMHg1NkUxLCAweDU2RjUsIDB4NTZFQiwKKyAgICAweDU2RjksIDB4NTZGRiwgMHg1NzA0LCAweDU3MEEsIDB4NTcwOSwgMHg1NzFDLCAweDVFMEYsIDB4NUUxOSwKKyAgICAweDVFMTQsIDB4NUUxMSwgMHg1RTMxLCAweDVFM0IsIDB4NUUzQywgMHg1RTM3LCAweDVFNDQsIDB4NUU1NCwKKyAgICAweDVFNUIsIDB4NUU1RSwgMHg1RTYxLCAweDVDOEMsIDB4NUM3QSwgMHg1QzhELCAweDVDOTAsIDB4NUM5NiwKKyAgICAweDVDODgsIDB4NUM5OCwgMHg1Qzk5LCAweDVDOTEsIDB4NUM5QSwgMHg1QzlDLCAweDVDQjUsIDB4NUNBMiwKKyAgICAweDVDQkQsIDB4NUNBQywgMHg1Q0FCLCAweDVDQjEsIDB4NUNBMywgMHg1Q0MxLCAweDVDQjcsIDB4NUNDNCwKKyAgICAweDVDRDIsIDB4NUNFNCwgMHg1Q0NCLCAweDVDRTUsIDB4NUQwMiwgMHg1RDAzLCAweDVEMjcsIDB4NUQyNiwKKyAgICAweDVEMkUsIDB4NUQyNCwgMHg1RDFFLCAweDVEMDYsIDB4NUQxQiwgMHg1RDU4LCAweDVEM0UsIDB4NUQzNCwKKyAgICAweDVEM0QsIDB4NUQ2QywgMHg1RDVCLCAweDVENkYsIDB4NUQ1RCwgMHg1RDZCLCAweDVENEIsIDB4NUQ0QSwKKyAgICAweDVENjksIDB4NUQ3NCwgMHg1RDgyLCAweDVEOTksIDB4NUQ5RCwgMHg4QzczLCAweDVEQjcsIDB4NURDNSwKKyAgICAweDVGNzMsIDB4NUY3NywgMHg1RjgyLCAweDVGODcsIDB4NUY4OSwgMHg1RjhDLCAweDVGOTUsIDB4NUY5OSwKKyAgICAweDVGOUMsIDB4NUZBOCwgMHg1RkFELCAweDVGQjUsIDB4NUZCQywgMHg4ODYyLCAweDVGNjEsIDB4NzJBRCwKKyAgICAweDcyQjAsIDB4NzJCNCwgMHg3MkI3LCAweDcyQjgsIDB4NzJDMywgMHg3MkMxLCAweDcyQ0UsIDB4NzJDRCwKKyAgICAweDcyRDIsIDB4NzJFOCwgMHg3MkVGLCAweDcyRTksIDB4NzJGMiwgMHg3MkY0LCAweDcyRjcsIDB4NzMwMSwKKyAgICAweDcyRjMsIDB4NzMwMywgMHg3MkZBLCAweDcyRkIsIDB4NzMxNywgMHg3MzEzLCAweDczMjEsIDB4NzMwQSwKKyAgICAweDczMUUsIDB4NzMxRCwgMHg3MzE1LCAweDczMjIsIDB4NzMzOSwgMHg3MzI1LCAweDczMkMsIDB4NzMzOCwKKyAgICAweDczMzEsIDB4NzM1MCwgMHg3MzRELCAweDczNTcsIDB4NzM2MCwgMHg3MzZDLCAweDczNkYsIDB4NzM3RSwKKyAgICAweDgyMUIsIDB4NTkyNSwgMHg5OEU3LCAweDU5MjQsIDB4NTkwMiwgMHg5OTYzLCAweDk5NjcsIDB4OTk2OCwKKyAgICAweDk5NjksIDB4OTk2QSwgMHg5OTZCLCAweDk5NkMsIDB4OTk3NCwgMHg5OTc3LCAweDk5N0QsIDB4OTk4MCwKKyAgICAweDk5ODQsIDB4OTk4NywgMHg5OThBLCAweDk5OEQsIDB4OTk5MCwgMHg5OTkxLCAweDk5OTMsIDB4OTk5NCwKKyAgICAweDk5OTUsIDB4NUU4MCwgMHg1RTkxLCAweDVFOEIsIDB4NUU5NiwgMHg1RUE1LCAweDVFQTAsIDB4NUVCOSwKKyAgICAweDVFQjUsIDB4NUVCRSwgMHg1RUIzLCAweDhENTMsIDB4NUVEMiwgMHg1RUQxLCAweDVFREIsIDB4NUVFOCwKKyAgICAweDVFRUEsIDB4ODFCQSwgMHg1RkM0LCAweDVGQzksIDB4NUZENiwgMHg1RkNGLCAweDYwMDMsIDB4NUZFRSwKKyAgICAweDYwMDQsIDB4NUZFMSwgMHg1RkU0LCAweDVGRkUsIDB4NjAwNSwgMHg2MDA2LCAweDVGRUEsIDB4NUZFRCwKKyAgICAweDVGRjgsIDB4NjAxOSwgMHg2MDM1LCAweDYwMjYsIDB4NjAxQiwgMHg2MDBGLCAweDYwMEQsIDB4NjAyOSwKKyAgICAweDYwMkIsIDB4NjAwQSwgMHg2MDNGLCAweDYwMjEsIDB4NjA3OCwgMHg2MDc5LCAweDYwN0IsIDB4NjA3QSwKKyAgICAweDYwNDIsIDB4NjA2QSwgMHg2MDdELCAweDYwOTYsIDB4NjA5QSwgMHg2MEFELCAweDYwOUQsIDB4NjA4MywKKyAgICAweDYwOTIsIDB4NjA4QywgMHg2MDlCLCAweDYwRUMsIDB4NjBCQiwgMHg2MEIxLCAweDYwREQsIDB4NjBEOCwKKyAgICAweDYwQzYsIDB4NjBEQSwgMHg2MEI0LCAweDYxMjAsIDB4NjEyNiwgMHg2MTE1LCAweDYxMjMsIDB4NjBGNCwKKyAgICAweDYxMDAsIDB4NjEwRSwgMHg2MTJCLCAweDYxNEEsIDB4NjE3NSwgMHg2MUFDLCAweDYxOTQsIDB4NjFBNywKKyAgICAweDYxQjcsIDB4NjFENCwgMHg2MUY1LCAweDVGREQsIDB4OTZCMywgMHg5NUU5LCAweDk1RUIsIDB4OTVGMSwKKyAgICAweDk1RjMsIDB4OTVGNSwgMHg5NUY2LCAweDk1RkMsIDB4OTVGRSwgMHg5NjAzLCAweDk2MDQsIDB4OTYwNiwKKyAgICAweDk2MDgsIDB4OTYwQSwgMHg5NjBCLCAweDk2MEMsIDB4OTYwRCwgMHg5NjBGLCAweDk2MTIsIDB4OTYxNSwKKyAgICAweDk2MTYsIDB4OTYxNywgMHg5NjE5LCAweDk2MUEsIDB4NEUyQywgMHg3MjNGLCAweDYyMTUsIDB4NkMzNSwKKyAgICAweDZDNTQsIDB4NkM1QywgMHg2QzRBLCAweDZDQTMsIDB4NkM4NSwgMHg2QzkwLCAweDZDOTQsIDB4NkM4QywKKyAgICAweDZDNjgsIDB4NkM2OSwgMHg2Qzc0LCAweDZDNzYsIDB4NkM4NiwgMHg2Q0E5LCAweDZDRDAsIDB4NkNENCwKKyAgICAweDZDQUQsIDB4NkNGNywgMHg2Q0Y4LCAweDZDRjEsIDB4NkNENywgMHg2Q0IyLCAweDZDRTAsIDB4NkNENiwKKyAgICAweDZDRkEsIDB4NkNFQiwgMHg2Q0VFLCAweDZDQjEsIDB4NkNEMywgMHg2Q0VGLCAweDZDRkUsIDB4NkQzOSwKKyAgICAweDZEMjcsIDB4NkQwQywgMHg2RDQzLCAweDZENDgsIDB4NkQwNywgMHg2RDA0LCAweDZEMTksIDB4NkQwRSwKKyAgICAweDZEMkIsIDB4NkQ0RCwgMHg2RDJFLCAweDZEMzUsIDB4NkQxQSwgMHg2RDRGLCAweDZENTIsIDB4NkQ1NCwKKyAgICAweDZEMzMsIDB4NkQ5MSwgMHg2RDZGLCAweDZEOUUsIDB4NkRBMCwgMHg2RDVFLCAweDZEOTMsIDB4NkQ5NCwKKyAgICAweDZENUMsIDB4NkQ2MCwgMHg2RDdDLCAweDZENjMsIDB4NkUxQSwgMHg2REM3LCAweDZEQzUsIDB4NkRERSwKKyAgICAweDZFMEUsIDB4NkRCRiwgMHg2REUwLCAweDZFMTEsIDB4NkRFNiwgMHg2RERELCAweDZERDksIDB4NkUxNiwKKyAgICAweDZEQUIsIDB4NkUwQywgMHg2REFFLCAweDZFMkIsIDB4NkU2RSwgMHg2RTRFLCAweDZFNkIsIDB4NkVCMiwKKyAgICAweDZFNUYsIDB4NkU4NiwgMHg2RTUzLCAweDZFNTQsIDB4NkUzMiwgMHg2RTI1LCAweDZFNDQsIDB4NkVERiwKKyAgICAweDZFQjEsIDB4NkU5OCwgMHg2RUUwLCAweDZGMkQsIDB4NkVFMiwgMHg2RUE1LCAweDZFQTcsIDB4NkVCRCwKKyAgICAweDZFQkIsIDB4NkVCNywgMHg2RUQ3LCAweDZFQjQsIDB4NkVDRiwgMHg2RThGLCAweDZFQzIsIDB4NkU5RiwKKyAgICAweDZGNjIsIDB4NkY0NiwgMHg2RjQ3LCAweDZGMjQsIDB4NkYxNSwgMHg2RUY5LCAweDZGMkYsIDB4NkYzNiwKKyAgICAweDZGNEIsIDB4NkY3NCwgMHg2RjJBLCAweDZGMDksIDB4NkYyOSwgMHg2Rjg5LCAweDZGOEQsIDB4NkY4QywKKyAgICAweDZGNzgsIDB4NkY3MiwgMHg2RjdDLCAweDZGN0EsIDB4NkZEMSwgMHg2RkM5LCAweDZGQTcsIDB4NkZCOSwKKyAgICAweDZGQjYsIDB4NkZDMiwgMHg2RkUxLCAweDZGRUUsIDB4NkZERSwgMHg2RkUwLCAweDZGRUYsIDB4NzAxQSwKKyAgICAweDcwMjMsIDB4NzAxQiwgMHg3MDM5LCAweDcwMzUsIDB4NzA0RiwgMHg3MDVFLCAweDVCODAsIDB4NUI4NCwKKyAgICAweDVCOTUsIDB4NUI5MywgMHg1QkE1LCAweDVCQjgsIDB4NzUyRiwgMHg5QTlFLCAweDY0MzQsIDB4NUJFNCwKKyAgICAweDVCRUUsIDB4ODkzMCwgMHg1QkYwLCAweDhFNDcsIDB4OEIwNywgMHg4RkI2LCAweDhGRDMsIDB4OEZENSwKKyAgICAweDhGRTUsIDB4OEZFRSwgMHg4RkU0LCAweDhGRTksIDB4OEZFNiwgMHg4RkYzLCAweDhGRTgsIDB4OTAwNSwKKyAgICAweDkwMDQsIDB4OTAwQiwgMHg5MDI2LCAweDkwMTEsIDB4OTAwRCwgMHg5MDE2LCAweDkwMjEsIDB4OTAzNSwKKyAgICAweDkwMzYsIDB4OTAyRCwgMHg5MDJGLCAweDkwNDQsIDB4OTA1MSwgMHg5MDUyLCAweDkwNTAsIDB4OTA2OCwKKyAgICAweDkwNTgsIDB4OTA2MiwgMHg5MDVCLCAweDY2QjksIDB4OTA3NCwgMHg5MDdELCAweDkwODIsIDB4OTA4OCwKKyAgICAweDkwODMsIDB4OTA4QiwgMHg1RjUwLCAweDVGNTcsIDB4NUY1NiwgMHg1RjU4LCAweDVDM0IsIDB4NTRBQiwKKyAgICAweDVDNTAsIDB4NUM1OSwgMHg1QjcxLCAweDVDNjMsIDB4NUM2NiwgMHg3RkJDLCAweDVGMkEsIDB4NUYyOSwKKyAgICAweDVGMkQsIDB4ODI3NCwgMHg1RjNDLCAweDlCM0IsIDB4NUM2RSwgMHg1OTgxLCAweDU5ODMsIDB4NTk4RCwKKyAgICAweDU5QTksIDB4NTlBQSwgMHg1OUEzLCAweDU5OTcsIDB4NTlDQSwgMHg1OUFCLCAweDU5OUUsIDB4NTlBNCwKKyAgICAweDU5RDIsIDB4NTlCMiwgMHg1OUFGLCAweDU5RDcsIDB4NTlCRSwgMHg1QTA1LCAweDVBMDYsIDB4NTlERCwKKyAgICAweDVBMDgsIDB4NTlFMywgMHg1OUQ4LCAweDU5RjksIDB4NUEwQywgMHg1QTA5LCAweDVBMzIsIDB4NUEzNCwKKyAgICAweDVBMTEsIDB4NUEyMywgMHg1QTEzLCAweDVBNDAsIDB4NUE2NywgMHg1QTRBLCAweDVBNTUsIDB4NUEzQywKKyAgICAweDVBNjIsIDB4NUE3NSwgMHg4MEVDLCAweDVBQUEsIDB4NUE5QiwgMHg1QTc3LCAweDVBN0EsIDB4NUFCRSwKKyAgICAweDVBRUIsIDB4NUFCMiwgMHg1QUQyLCAweDVBRDQsIDB4NUFCOCwgMHg1QUUwLCAweDVBRTMsIDB4NUFGMSwKKyAgICAweDVBRDYsIDB4NUFFNiwgMHg1QUQ4LCAweDVBREMsIDB4NUIwOSwgMHg1QjE3LCAweDVCMTYsIDB4NUIzMiwKKyAgICAweDVCMzcsIDB4NUI0MCwgMHg1QzE1LCAweDVDMUMsIDB4NUI1QSwgMHg1QjY1LCAweDVCNzMsIDB4NUI1MSwKKyAgICAweDVCNTMsIDB4NUI2MiwgMHg5QTc1LCAweDlBNzcsIDB4OUE3OCwgMHg5QTdBLCAweDlBN0YsIDB4OUE3RCwKKyAgICAweDlBODAsIDB4OUE4MSwgMHg5QTg1LCAweDlBODgsIDB4OUE4QSwgMHg5QTkwLCAweDlBOTIsIDB4OUE5MywKKyAgICAweDlBOTYsIDB4OUE5OCwgMHg5QTlCLCAweDlBOUMsIDB4OUE5RCwgMHg5QTlGLCAweDlBQTAsIDB4OUFBMiwKKyAgICAweDlBQTMsIDB4OUFBNSwgMHg5QUE3LCAweDdFOUYsIDB4N0VBMSwgMHg3RUEzLCAweDdFQTUsIDB4N0VBOCwKKyAgICAweDdFQTksIDB4N0VBRCwgMHg3RUIwLCAweDdFQkUsIDB4N0VDMCwgMHg3RUMxLCAweDdFQzIsIDB4N0VDOSwKKyAgICAweDdFQ0IsIDB4N0VDQywgMHg3RUQwLCAweDdFRDQsIDB4N0VENywgMHg3RURCLCAweDdFRTAsIDB4N0VFMSwKKyAgICAweDdFRTgsIDB4N0VFQiwgMHg3RUVFLCAweDdFRUYsIDB4N0VGMSwgMHg3RUYyLCAweDdGMEQsIDB4N0VGNiwKKyAgICAweDdFRkEsIDB4N0VGQiwgMHg3RUZFLCAweDdGMDEsIDB4N0YwMiwgMHg3RjAzLCAweDdGMDcsIDB4N0YwOCwKKyAgICAweDdGMEIsIDB4N0YwQywgMHg3RjBGLCAweDdGMTEsIDB4N0YxMiwgMHg3RjE3LCAweDdGMTksIDB4N0YxQywKKyAgICAweDdGMUIsIDB4N0YxRiwgMHg3RjIxLCAweDdGMjIsIDB4N0YyMywgMHg3RjI0LCAweDdGMjUsIDB4N0YyNiwKKyAgICAweDdGMjcsIDB4N0YyQSwgMHg3RjJCLCAweDdGMkMsIDB4N0YyRCwgMHg3RjJGLCAweDdGMzAsIDB4N0YzMSwKKyAgICAweDdGMzIsIDB4N0YzMywgMHg3RjM1LCAweDVFN0EsIDB4NzU3RiwgMHg1RERCLCAweDc1M0UsIDB4OTA5NSwKKyAgICAweDczOEUsIDB4NzM5MSwgMHg3M0FFLCAweDczQTIsIDB4NzM5RiwgMHg3M0NGLCAweDczQzIsIDB4NzNEMSwKKyAgICAweDczQjcsIDB4NzNCMywgMHg3M0MwLCAweDczQzksIDB4NzNDOCwgMHg3M0U1LCAweDczRDksIDB4OTg3QywKKyAgICAweDc0MEEsIDB4NzNFOSwgMHg3M0U3LCAweDczREUsIDB4NzNCQSwgMHg3M0YyLCAweDc0MEYsIDB4NzQyQSwKKyAgICAweDc0NUIsIDB4NzQyNiwgMHg3NDI1LCAweDc0MjgsIDB4NzQzMCwgMHg3NDJFLCAweDc0MkMsIDB4NzQxQiwKKyAgICAweDc0MUEsIDB4NzQ0MSwgMHg3NDVDLCAweDc0NTcsIDB4NzQ1NSwgMHg3NDU5LCAweDc0NzcsIDB4NzQ2RCwKKyAgICAweDc0N0UsIDB4NzQ5QywgMHg3NDhFLCAweDc0ODAsIDB4NzQ4MSwgMHg3NDg3LCAweDc0OEIsIDB4NzQ5RSwKKyAgICAweDc0QTgsIDB4NzRBOSwgMHg3NDkwLCAweDc0QTcsIDB4NzREMiwgMHg3NEJBLCAweDk3RUEsIDB4OTdFQiwKKyAgICAweDk3RUMsIDB4Njc0QywgMHg2NzUzLCAweDY3NUUsIDB4Njc0OCwgMHg2NzY5LCAweDY3QTUsIDB4Njc4NywKKyAgICAweDY3NkEsIDB4Njc3MywgMHg2Nzk4LCAweDY3QTcsIDB4Njc3NSwgMHg2N0E4LCAweDY3OUUsIDB4NjdBRCwKKyAgICAweDY3OEIsIDB4Njc3NywgMHg2NzdDLCAweDY3RjAsIDB4NjgwOSwgMHg2N0Q4LCAweDY4MEEsIDB4NjdFOSwKKyAgICAweDY3QjAsIDB4NjgwQywgMHg2N0Q5LCAweDY3QjUsIDB4NjdEQSwgMHg2N0IzLCAweDY3REQsIDB4NjgwMCwKKyAgICAweDY3QzMsIDB4NjdCOCwgMHg2N0UyLCAweDY4MEUsIDB4NjdDMSwgMHg2N0ZELCAweDY4MzIsIDB4NjgzMywKKyAgICAweDY4NjAsIDB4Njg2MSwgMHg2ODRFLCAweDY4NjIsIDB4Njg0NCwgMHg2ODY0LCAweDY4ODMsIDB4NjgxRCwKKyAgICAweDY4NTUsIDB4Njg2NiwgMHg2ODQxLCAweDY4NjcsIDB4Njg0MCwgMHg2ODNFLCAweDY4NEEsIDB4Njg0OSwKKyAgICAweDY4MjksIDB4NjhCNSwgMHg2ODhGLCAweDY4NzQsIDB4Njg3NywgMHg2ODkzLCAweDY4NkIsIDB4NjhDMiwKKyAgICAweDY5NkUsIDB4NjhGQywgMHg2OTFGLCAweDY5MjAsIDB4NjhGOSwgMHg2OTI0LCAweDY4RjAsIDB4NjkwQiwKKyAgICAweDY5MDEsIDB4Njk1NywgMHg2OEUzLCAweDY5MTAsIDB4Njk3MSwgMHg2OTM5LCAweDY5NjAsIDB4Njk0MiwKKyAgICAweDY5NUQsIDB4Njk4NCwgMHg2OTZCLCAweDY5ODAsIDB4Njk5OCwgMHg2OTc4LCAweDY5MzQsIDB4NjlDQywKKyAgICAweDY5ODcsIDB4Njk4OCwgMHg2OUNFLCAweDY5ODksIDB4Njk2NiwgMHg2OTYzLCAweDY5NzksIDB4Njk5QiwKKyAgICAweDY5QTcsIDB4NjlCQiwgMHg2OUFCLCAweDY5QUQsIDB4NjlENCwgMHg2OUIxLCAweDY5QzEsIDB4NjlDQSwKKyAgICAweDY5REYsIDB4Njk5NSwgMHg2OUUwLCAweDY5OEQsIDB4NjlGRiwgMHg2QTJGLCAweDY5RUQsIDB4NkExNywKKyAgICAweDZBMTgsIDB4NkE2NSwgMHg2OUYyLCAweDZBNDQsIDB4NkEzRSwgMHg2QUEwLCAweDZBNTAsIDB4NkE1QiwKKyAgICAweDZBMzUsIDB4NkE4RSwgMHg2QTc5LCAweDZBM0QsIDB4NkEyOCwgMHg2QTU4LCAweDZBN0MsIDB4NkE5MSwKKyAgICAweDZBOTAsIDB4NkFBOSwgMHg2QTk3LCAweDZBQUIsIDB4NzMzNywgMHg3MzUyLCAweDZCODEsIDB4NkI4MiwKKyAgICAweDZCODcsIDB4NkI4NCwgMHg2QjkyLCAweDZCOTMsIDB4NkI4RCwgMHg2QjlBLCAweDZCOUIsIDB4NkJBMSwKKyAgICAweDZCQUEsIDB4OEY2QiwgMHg4RjZELCAweDhGNzEsIDB4OEY3MiwgMHg4RjczLCAweDhGNzUsIDB4OEY3NiwKKyAgICAweDhGNzgsIDB4OEY3NywgMHg4Rjc5LCAweDhGN0EsIDB4OEY3QywgMHg4RjdFLCAweDhGODEsIDB4OEY4MiwKKyAgICAweDhGODQsIDB4OEY4NywgMHg4RjhCLCAweDhGOEQsIDB4OEY4RSwgMHg4RjhGLCAweDhGOTgsIDB4OEY5QSwKKyAgICAweDhFQ0UsIDB4NjIwQiwgMHg2MjE3LCAweDYyMUIsIDB4NjIxRiwgMHg2MjIyLCAweDYyMjEsIDB4NjIyNSwKKyAgICAweDYyMjQsIDB4NjIyQywgMHg4MUU3LCAweDc0RUYsIDB4NzRGNCwgMHg3NEZGLCAweDc1MEYsIDB4NzUxMSwKKyAgICAweDc1MTMsIDB4NjUzNCwgMHg2NUVFLCAweDY1RUYsIDB4NjVGMCwgMHg2NjBBLCAweDY2MTksIDB4Njc3MiwKKyAgICAweDY2MDMsIDB4NjYxNSwgMHg2NjAwLCAweDcwODUsIDB4NjZGNywgMHg2NjFELCAweDY2MzQsIDB4NjYzMSwKKyAgICAweDY2MzYsIDB4NjYzNSwgMHg4MDA2LCAweDY2NUYsIDB4NjY1NCwgMHg2NjQxLCAweDY2NEYsIDB4NjY1NiwKKyAgICAweDY2NjEsIDB4NjY1NywgMHg2Njc3LCAweDY2ODQsIDB4NjY4QywgMHg2NkE3LCAweDY2OUQsIDB4NjZCRSwKKyAgICAweDY2REIsIDB4NjZEQywgMHg2NkU2LCAweDY2RTksIDB4OEQzMiwgMHg4RDMzLCAweDhEMzYsIDB4OEQzQiwKKyAgICAweDhEM0QsIDB4OEQ0MCwgMHg4RDQ1LCAweDhENDYsIDB4OEQ0OCwgMHg4RDQ5LCAweDhENDcsIDB4OEQ0RCwKKyAgICAweDhENTUsIDB4OEQ1OSwgMHg4OUM3LCAweDg5Q0EsIDB4ODlDQiwgMHg4OUNDLCAweDg5Q0UsIDB4ODlDRiwKKyAgICAweDg5RDAsIDB4ODlEMSwgMHg3MjZFLCAweDcyOUYsIDB4NzI1RCwgMHg3MjY2LCAweDcyNkYsIDB4NzI3RSwKKyAgICAweDcyN0YsIDB4NzI4NCwgMHg3MjhCLCAweDcyOEQsIDB4NzI4RiwgMHg3MjkyLCAweDYzMDgsIDB4NjMzMiwKKyAgICAweDYzQjAsIDB4NjQzRiwgMHg2NEQ4LCAweDgwMDQsIDB4NkJFQSwgMHg2QkYzLCAweDZCRkQsIDB4NkJGNSwKKyAgICAweDZCRjksIDB4NkMwNSwgMHg2QzA3LCAweDZDMDYsIDB4NkMwRCwgMHg2QzE1LCAweDZDMTgsIDB4NkMxOSwKKyAgICAweDZDMUEsIDB4NkMyMSwgMHg2QzI5LCAweDZDMjQsIDB4NkMyQSwgMHg2QzMyLCAweDY1MzUsIDB4NjU1NSwKKyAgICAweDY1NkIsIDB4NzI0RCwgMHg3MjUyLCAweDcyNTYsIDB4NzIzMCwgMHg4NjYyLCAweDUyMTYsIDB4ODA5RiwKKyAgICAweDgwOUMsIDB4ODA5MywgMHg4MEJDLCAweDY3MEEsIDB4ODBCRCwgMHg4MEIxLCAweDgwQUIsIDB4ODBBRCwKKyAgICAweDgwQjQsIDB4ODBCNywgMHg4MEU3LCAweDgwRTgsIDB4ODBFOSwgMHg4MEVBLCAweDgwREIsIDB4ODBDMiwKKyAgICAweDgwQzQsIDB4ODBEOSwgMHg4MENELCAweDgwRDcsIDB4NjcxMCwgMHg4MERELCAweDgwRUIsIDB4ODBGMSwKKyAgICAweDgwRjQsIDB4ODBFRCwgMHg4MTBELCAweDgxMEUsIDB4ODBGMiwgMHg4MEZDLCAweDY3MTUsIDB4ODExMiwKKyAgICAweDhDNUEsIDB4ODEzNiwgMHg4MTFFLCAweDgxMkMsIDB4ODExOCwgMHg4MTMyLCAweDgxNDgsIDB4ODE0QywKKyAgICAweDgxNTMsIDB4ODE3NCwgMHg4MTU5LCAweDgxNUEsIDB4ODE3MSwgMHg4MTYwLCAweDgxNjksIDB4ODE3QywKKyAgICAweDgxN0QsIDB4ODE2RCwgMHg4MTY3LCAweDU4NEQsIDB4NUFCNSwgMHg4MTg4LCAweDgxODIsIDB4ODE5MSwKKyAgICAweDZFRDUsIDB4ODFBMywgMHg4MUFBLCAweDgxQ0MsIDB4NjcyNiwgMHg4MUNBLCAweDgxQkIsIDB4ODFDMSwKKyAgICAweDgxQTYsIDB4NkIyNCwgMHg2QjM3LCAweDZCMzksIDB4NkI0MywgMHg2QjQ2LCAweDZCNTksIDB4OThEMSwKKyAgICAweDk4RDIsIDB4OThEMywgMHg5OEQ1LCAweDk4RDksIDB4OThEQSwgMHg2QkIzLCAweDVGNDAsIDB4NkJDMiwKKyAgICAweDg5RjMsIDB4NjU5MCwgMHg5RjUxLCAweDY1OTMsIDB4NjVCQywgMHg2NUM2LCAweDY1QzQsIDB4NjVDMywKKyAgICAweDY1Q0MsIDB4NjVDRSwgMHg2NUQyLCAweDY1RDYsIDB4NzA4MCwgMHg3MDlDLCAweDcwOTYsIDB4NzA5RCwKKyAgICAweDcwQkIsIDB4NzBDMCwgMHg3MEI3LCAweDcwQUIsIDB4NzBCMSwgMHg3MEU4LCAweDcwQ0EsIDB4NzExMCwKKyAgICAweDcxMTMsIDB4NzExNiwgMHg3MTJGLCAweDcxMzEsIDB4NzE3MywgMHg3MTVDLCAweDcxNjgsIDB4NzE0NSwKKyAgICAweDcxNzIsIDB4NzE0QSwgMHg3MTc4LCAweDcxN0EsIDB4NzE5OCwgMHg3MUIzLCAweDcxQjUsIDB4NzFBOCwKKyAgICAweDcxQTAsIDB4NzFFMCwgMHg3MUQ0LCAweDcxRTcsIDB4NzFGOSwgMHg3MjFELCAweDcyMjgsIDB4NzA2QywKKyAgICAweDcxMTgsIDB4NzE2NiwgMHg3MUI5LCAweDYyM0UsIDB4NjIzRCwgMHg2MjQzLCAweDYyNDgsIDB4NjI0OSwKKyAgICAweDc5M0IsIDB4Nzk0MCwgMHg3OTQ2LCAweDc5NDksIDB4Nzk1QiwgMHg3OTVDLCAweDc5NTMsIDB4Nzk1QSwKKyAgICAweDc5NjIsIDB4Nzk1NywgMHg3OTYwLCAweDc5NkYsIDB4Nzk2NywgMHg3OTdBLCAweDc5ODUsIDB4Nzk4QSwKKyAgICAweDc5OUEsIDB4NzlBNywgMHg3OUIzLCAweDVGRDEsIDB4NUZEMCwgMHg2MDNDLCAweDYwNUQsIDB4NjA1QSwKKyAgICAweDYwNjcsIDB4NjA0MSwgMHg2MDU5LCAweDYwNjMsIDB4NjBBQiwgMHg2MTA2LCAweDYxMEQsIDB4NjE1RCwKKyAgICAweDYxQTksIDB4NjE5RCwgMHg2MUNCLCAweDYxRDEsIDB4NjIwNiwgMHg4MDgwLCAweDgwN0YsIDB4NkM5MywKKyAgICAweDZDRjYsIDB4NkRGQywgMHg3N0Y2LCAweDc3RjgsIDB4NzgwMCwgMHg3ODA5LCAweDc4MTcsIDB4NzgxOCwKKyAgICAweDc4MTEsIDB4NjVBQiwgMHg3ODJELCAweDc4MUMsIDB4NzgxRCwgMHg3ODM5LCAweDc4M0EsIDB4NzgzQiwKKyAgICAweDc4MUYsIDB4NzgzQywgMHg3ODI1LCAweDc4MkMsIDB4NzgyMywgMHg3ODI5LCAweDc4NEUsIDB4Nzg2RCwKKyAgICAweDc4NTYsIDB4Nzg1NywgMHg3ODI2LCAweDc4NTAsIDB4Nzg0NywgMHg3ODRDLCAweDc4NkEsIDB4Nzg5QiwKKyAgICAweDc4OTMsIDB4Nzg5QSwgMHg3ODg3LCAweDc4OUMsIDB4NzhBMSwgMHg3OEEzLCAweDc4QjIsIDB4NzhCOSwKKyAgICAweDc4QTUsIDB4NzhENCwgMHg3OEQ5LCAweDc4QzksIDB4NzhFQywgMHg3OEYyLCAweDc5MDUsIDB4NzhGNCwKKyAgICAweDc5MTMsIDB4NzkyNCwgMHg3OTFFLCAweDc5MzQsIDB4OUY5QiwgMHg5RUY5LCAweDlFRkIsIDB4OUVGQywKKyAgICAweDc2RjEsIDB4NzcwNCwgMHg3NzBELCAweDc2RjksIDB4NzcwNywgMHg3NzA4LCAweDc3MUEsIDB4NzcyMiwKKyAgICAweDc3MTksIDB4NzcyRCwgMHg3NzI2LCAweDc3MzUsIDB4NzczOCwgMHg3NzUwLCAweDc3NTEsIDB4Nzc0NywKKyAgICAweDc3NDMsIDB4Nzc1QSwgMHg3NzY4LCAweDc3NjIsIDB4Nzc2NSwgMHg3NzdGLCAweDc3OEQsIDB4Nzc3RCwKKyAgICAweDc3ODAsIDB4Nzc4QywgMHg3NzkxLCAweDc3OUYsIDB4NzdBMCwgMHg3N0IwLCAweDc3QjUsIDB4NzdCRCwKKyAgICAweDc1M0EsIDB4NzU0MCwgMHg3NTRFLCAweDc1NEIsIDB4NzU0OCwgMHg3NTVCLCAweDc1NzIsIDB4NzU3OSwKKyAgICAweDc1ODMsIDB4N0Y1OCwgMHg3RjYxLCAweDdGNUYsIDB4OEE0OCwgMHg3RjY4LCAweDdGNzQsIDB4N0Y3MSwKKyAgICAweDdGNzksIDB4N0Y4MSwgMHg3RjdFLCAweDc2Q0QsIDB4NzZFNSwgMHg4ODMyLCAweDk0ODUsIDB4OTQ4NiwKKyAgICAweDk0ODcsIDB4OTQ4QiwgMHg5NDhBLCAweDk0OEMsIDB4OTQ4RCwgMHg5NDhGLCAweDk0OTAsIDB4OTQ5NCwKKyAgICAweDk0OTcsIDB4OTQ5NSwgMHg5NDlBLCAweDk0OUIsIDB4OTQ5QywgMHg5NEEzLCAweDk0QTQsIDB4OTRBQiwKKyAgICAweDk0QUEsIDB4OTRBRCwgMHg5NEFDLCAweDk0QUYsIDB4OTRCMCwgMHg5NEIyLCAweDk0QjQsIDB4OTRCNiwKKyAgICAweDk0QjcsIDB4OTRCOCwgMHg5NEI5LCAweDk0QkEsIDB4OTRCQywgMHg5NEJELCAweDk0QkYsIDB4OTRDNCwKKyAgICAweDk0QzgsIDB4OTRDOSwgMHg5NENBLCAweDk0Q0IsIDB4OTRDQywgMHg5NENELCAweDk0Q0UsIDB4OTREMCwKKyAgICAweDk0RDEsIDB4OTREMiwgMHg5NEQ1LCAweDk0RDYsIDB4OTRENywgMHg5NEQ5LCAweDk0RDgsIDB4OTREQiwKKyAgICAweDk0REUsIDB4OTRERiwgMHg5NEUwLCAweDk0RTIsIDB4OTRFNCwgMHg5NEU1LCAweDk0RTcsIDB4OTRFOCwKKyAgICAweDk0RUEsIDB4OTRFOSwgMHg5NEVCLCAweDk0RUUsIDB4OTRFRiwgMHg5NEYzLCAweDk0RjQsIDB4OTRGNSwKKyAgICAweDk0RjcsIDB4OTRGOSwgMHg5NEZDLCAweDk0RkQsIDB4OTRGRiwgMHg5NTAzLCAweDk1MDIsIDB4OTUwNiwKKyAgICAweDk1MDcsIDB4OTUwOSwgMHg5NTBBLCAweDk1MEQsIDB4OTUwRSwgMHg5NTBGLCAweDk1MTIsIDB4OTUxMywKKyAgICAweDk1MTQsIDB4OTUxNSwgMHg5NTE2LCAweDk1MTgsIDB4OTUxQiwgMHg5NTFELCAweDk1MUUsIDB4OTUxRiwKKyAgICAweDk1MjIsIDB4OTUyQSwgMHg5NTJCLCAweDk1MjksIDB4OTUyQywgMHg5NTMxLCAweDk1MzIsIDB4OTUzNCwKKyAgICAweDk1MzYsIDB4OTUzNywgMHg5NTM4LCAweDk1M0MsIDB4OTUzRSwgMHg5NTNGLCAweDk1NDIsIDB4OTUzNSwKKyAgICAweDk1NDQsIDB4OTU0NSwgMHg5NTQ2LCAweDk1NDksIDB4OTU0QywgMHg5NTRFLCAweDk1NEYsIDB4OTU1MiwKKyAgICAweDk1NTMsIDB4OTU1NCwgMHg5NTU2LCAweDk1NTcsIDB4OTU1OCwgMHg5NTU5LCAweDk1NUIsIDB4OTU1RSwKKyAgICAweDk1NUYsIDB4OTU1RCwgMHg5NTYxLCAweDk1NjIsIDB4OTU2NCwgMHg5NTY1LCAweDk1NjYsIDB4OTU2NywKKyAgICAweDk1NjgsIDB4OTU2OSwgMHg5NTZBLCAweDk1NkIsIDB4OTU2QywgMHg5NTZGLCAweDk1NzEsIDB4OTU3MiwKKyAgICAweDk1NzMsIDB4OTUzQSwgMHg3N0U3LCAweDc3RUMsIDB4OTZDOSwgMHg3OUQ1LCAweDc5RUQsIDB4NzlFMywKKyAgICAweDc5RUIsIDB4N0EwNiwgMHg1RDQ3LCAweDdBMDMsIDB4N0EwMiwgMHg3QTFFLCAweDdBMTQsIDB4N0EzOSwKKyAgICAweDdBMzcsIDB4N0E1MSwgMHg5RUNGLCAweDk5QTUsIDB4N0E3MCwgMHg3Njg4LCAweDc2OEUsIDB4NzY5MywKKyAgICAweDc2OTksIDB4NzZBNCwgMHg3NERFLCAweDc0RTAsIDB4NzUyQywgMHg5RTIwLCAweDlFMjIsIDB4OUUyOCwKKyAgICAweDlFMjksIDB4OUUyQSwgMHg5RTJCLCAweDlFMkMsIDB4OUUzMiwgMHg5RTMxLCAweDlFMzYsIDB4OUUzOCwKKyAgICAweDlFMzcsIDB4OUUzOSwgMHg5RTNBLCAweDlFM0UsIDB4OUU0MSwgMHg5RTQyLCAweDlFNDQsIDB4OUU0NiwKKyAgICAweDlFNDcsIDB4OUU0OCwgMHg5RTQ5LCAweDlFNEIsIDB4OUU0QywgMHg5RTRFLCAweDlFNTEsIDB4OUU1NSwKKyAgICAweDlFNTcsIDB4OUU1QSwgMHg5RTVCLCAweDlFNUMsIDB4OUU1RSwgMHg5RTYzLCAweDlFNjYsIDB4OUU2NywKKyAgICAweDlFNjgsIDB4OUU2OSwgMHg5RTZBLCAweDlFNkIsIDB4OUU2QywgMHg5RTcxLCAweDlFNkQsIDB4OUU3MywKKyAgICAweDc1OTIsIDB4NzU5NCwgMHg3NTk2LCAweDc1QTAsIDB4NzU5RCwgMHg3NUFDLCAweDc1QTMsIDB4NzVCMywKKyAgICAweDc1QjQsIDB4NzVCOCwgMHg3NUM0LCAweDc1QjEsIDB4NzVCMCwgMHg3NUMzLCAweDc1QzIsIDB4NzVENiwKKyAgICAweDc1Q0QsIDB4NzVFMywgMHg3NUU4LCAweDc1RTYsIDB4NzVFNCwgMHg3NUVCLCAweDc1RTcsIDB4NzYwMywKKyAgICAweDc1RjEsIDB4NzVGQywgMHg3NUZGLCAweDc2MTAsIDB4NzYwMCwgMHg3NjA1LCAweDc2MEMsIDB4NzYxNywKKyAgICAweDc2MEEsIDB4NzYyNSwgMHg3NjE4LCAweDc2MTUsIDB4NzYxOSwgMHg3NjFCLCAweDc2M0MsIDB4NzYyMiwKKyAgICAweDc2MjAsIDB4NzY0MCwgMHg3NjJELCAweDc2MzAsIDB4NzYzRiwgMHg3NjM1LCAweDc2NDMsIDB4NzYzRSwKKyAgICAweDc2MzMsIDB4NzY0RCwgMHg3NjVFLCAweDc2NTQsIDB4NzY1QywgMHg3NjU2LCAweDc2NkIsIDB4NzY2RiwKKyAgICAweDdGQ0EsIDB4N0FFNiwgMHg3QTc4LCAweDdBNzksIDB4N0E4MCwgMHg3QTg2LCAweDdBODgsIDB4N0E5NSwKKyAgICAweDdBQTYsIDB4N0FBMCwgMHg3QUFDLCAweDdBQTgsIDB4N0FBRCwgMHg3QUIzLCAweDg4NjQsIDB4ODg2OSwKKyAgICAweDg4NzIsIDB4ODg3RCwgMHg4ODdGLCAweDg4ODIsIDB4ODhBMiwgMHg4OEM2LCAweDg4QjcsIDB4ODhCQywKKyAgICAweDg4QzksIDB4ODhFMiwgMHg4OENFLCAweDg4RTMsIDB4ODhFNSwgMHg4OEYxLCAweDg5MUEsIDB4ODhGQywKKyAgICAweDg4RTgsIDB4ODhGRSwgMHg4OEYwLCAweDg5MjEsIDB4ODkxOSwgMHg4OTEzLCAweDg5MUIsIDB4ODkwQSwKKyAgICAweDg5MzQsIDB4ODkyQiwgMHg4OTM2LCAweDg5NDEsIDB4ODk2NiwgMHg4OTdCLCAweDc1OEIsIDB4ODBFNSwKKyAgICAweDc2QjIsIDB4NzZCNCwgMHg3N0RDLCAweDgwMTIsIDB4ODAxNCwgMHg4MDE2LCAweDgwMUMsIDB4ODAyMCwKKyAgICAweDgwMjIsIDB4ODAyNSwgMHg4MDI2LCAweDgwMjcsIDB4ODAyOSwgMHg4MDI4LCAweDgwMzEsIDB4ODAwQiwKKyAgICAweDgwMzUsIDB4ODA0MywgMHg4MDQ2LCAweDgwNEQsIDB4ODA1MiwgMHg4MDY5LCAweDgwNzEsIDB4ODk4MywKKyAgICAweDk4NzgsIDB4OTg4MCwgMHg5ODgzLCAweDk4ODksIDB4OTg4QywgMHg5ODhELCAweDk4OEYsIDB4OTg5NCwKKyAgICAweDk4OUEsIDB4OTg5QiwgMHg5ODlFLCAweDk4OUYsIDB4OThBMSwgMHg5OEEyLCAweDk4QTUsIDB4OThBNiwKKyAgICAweDg2NEQsIDB4ODY1NCwgMHg4NjZDLCAweDg2NkUsIDB4ODY3RiwgMHg4NjdBLCAweDg2N0MsIDB4ODY3QiwKKyAgICAweDg2QTgsIDB4ODY4RCwgMHg4NjhCLCAweDg2QUMsIDB4ODY5RCwgMHg4NkE3LCAweDg2QTMsIDB4ODZBQSwKKyAgICAweDg2OTMsIDB4ODZBOSwgMHg4NkI2LCAweDg2QzQsIDB4ODZCNSwgMHg4NkNFLCAweDg2QjAsIDB4ODZCQSwKKyAgICAweDg2QjEsIDB4ODZBRiwgMHg4NkM5LCAweDg2Q0YsIDB4ODZCNCwgMHg4NkU5LCAweDg2RjEsIDB4ODZGMiwKKyAgICAweDg2RUQsIDB4ODZGMywgMHg4NkQwLCAweDg3MTMsIDB4ODZERSwgMHg4NkY0LCAweDg2REYsIDB4ODZEOCwKKyAgICAweDg2RDEsIDB4ODcwMywgMHg4NzA3LCAweDg2RjgsIDB4ODcwOCwgMHg4NzBBLCAweDg3MEQsIDB4ODcwOSwKKyAgICAweDg3MjMsIDB4ODczQiwgMHg4NzFFLCAweDg3MjUsIDB4ODcyRSwgMHg4NzFBLCAweDg3M0UsIDB4ODc0OCwKKyAgICAweDg3MzQsIDB4ODczMSwgMHg4NzI5LCAweDg3MzcsIDB4ODczRiwgMHg4NzgyLCAweDg3MjIsIDB4ODc3RCwKKyAgICAweDg3N0UsIDB4ODc3QiwgMHg4NzYwLCAweDg3NzAsIDB4ODc0QywgMHg4NzZFLCAweDg3OEIsIDB4ODc1MywKKyAgICAweDg3NjMsIDB4ODc3QywgMHg4NzY0LCAweDg3NTksIDB4ODc2NSwgMHg4NzkzLCAweDg3QUYsIDB4ODdBOCwKKyAgICAweDg3RDIsIDB4ODdDNiwgMHg4Nzg4LCAweDg3ODUsIDB4ODdBRCwgMHg4Nzk3LCAweDg3ODMsIDB4ODdBQiwKKyAgICAweDg3RTUsIDB4ODdBQywgMHg4N0I1LCAweDg3QjMsIDB4ODdDQiwgMHg4N0QzLCAweDg3QkQsIDB4ODdEMSwKKyAgICAweDg3QzAsIDB4ODdDQSwgMHg4N0RCLCAweDg3RUEsIDB4ODdFMCwgMHg4N0VFLCAweDg4MTYsIDB4ODgxMywKKyAgICAweDg3RkUsIDB4ODgwQSwgMHg4ODFCLCAweDg4MjEsIDB4ODgzOSwgMHg4ODNDLCAweDdGMzYsIDB4N0Y0MiwKKyAgICAweDdGNDQsIDB4N0Y0NSwgMHg4MjEwLCAweDdBRkEsIDB4N0FGRCwgMHg3QjA4LCAweDdCMDMsIDB4N0IwNCwKKyAgICAweDdCMTUsIDB4N0IwQSwgMHg3QjJCLCAweDdCMEYsIDB4N0I0NywgMHg3QjM4LCAweDdCMkEsIDB4N0IxOSwKKyAgICAweDdCMkUsIDB4N0IzMSwgMHg3QjIwLCAweDdCMjUsIDB4N0IyNCwgMHg3QjMzLCAweDdCM0UsIDB4N0IxRSwKKyAgICAweDdCNTgsIDB4N0I1QSwgMHg3QjQ1LCAweDdCNzUsIDB4N0I0QywgMHg3QjVELCAweDdCNjAsIDB4N0I2RSwKKyAgICAweDdCN0IsIDB4N0I2MiwgMHg3QjcyLCAweDdCNzEsIDB4N0I5MCwgMHg3QkE2LCAweDdCQTcsIDB4N0JCOCwKKyAgICAweDdCQUMsIDB4N0I5RCwgMHg3QkE4LCAweDdCODUsIDB4N0JBQSwgMHg3QjlDLCAweDdCQTIsIDB4N0JBQiwKKyAgICAweDdCQjQsIDB4N0JEMSwgMHg3QkMxLCAweDdCQ0MsIDB4N0JERCwgMHg3QkRBLCAweDdCRTUsIDB4N0JFNiwKKyAgICAweDdCRUEsIDB4N0MwQywgMHg3QkZFLCAweDdCRkMsIDB4N0MwRiwgMHg3QzE2LCAweDdDMEIsIDB4N0MxRiwKKyAgICAweDdDMkEsIDB4N0MyNiwgMHg3QzM4LCAweDdDNDEsIDB4N0M0MCwgMHg4MUZFLCAweDgyMDEsIDB4ODIwMiwKKyAgICAweDgyMDQsIDB4ODFFQywgMHg4ODQ0LCAweDgyMjEsIDB4ODIyMiwgMHg4MjIzLCAweDgyMkQsIDB4ODIyRiwKKyAgICAweDgyMjgsIDB4ODIyQiwgMHg4MjM4LCAweDgyM0IsIDB4ODIzMywgMHg4MjM0LCAweDgyM0UsIDB4ODI0NCwKKyAgICAweDgyNDksIDB4ODI0QiwgMHg4MjRGLCAweDgyNUEsIDB4ODI1RiwgMHg4MjY4LCAweDg4N0UsIDB4ODg4NSwKKyAgICAweDg4ODgsIDB4ODhEOCwgMHg4OERGLCAweDg5NUUsIDB4N0Y5RCwgMHg3RjlGLCAweDdGQTcsIDB4N0ZBRiwKKyAgICAweDdGQjAsIDB4N0ZCMiwgMHg3QzdDLCAweDY1NDksIDB4N0M5MSwgMHg3QzlELCAweDdDOUMsIDB4N0M5RSwKKyAgICAweDdDQTIsIDB4N0NCMiwgMHg3Q0JDLCAweDdDQkQsIDB4N0NDMSwgMHg3Q0M3LCAweDdDQ0MsIDB4N0NDRCwKKyAgICAweDdDQzgsIDB4N0NDNSwgMHg3Q0Q3LCAweDdDRTgsIDB4ODI2RSwgMHg2NkE4LCAweDdGQkYsIDB4N0ZDRSwKKyAgICAweDdGRDUsIDB4N0ZFNSwgMHg3RkUxLCAweDdGRTYsIDB4N0ZFOSwgMHg3RkVFLCAweDdGRjMsIDB4N0NGOCwKKyAgICAweDdENzcsIDB4N0RBNiwgMHg3REFFLCAweDdFNDcsIDB4N0U5QiwgMHg5RUI4LCAweDlFQjQsIDB4OEQ3MywKKyAgICAweDhEODQsIDB4OEQ5NCwgMHg4RDkxLCAweDhEQjEsIDB4OEQ2NywgMHg4RDZELCAweDhDNDcsIDB4OEM0OSwKKyAgICAweDkxNEEsIDB4OTE1MCwgMHg5MTRFLCAweDkxNEYsIDB4OTE2NCwgMHg5MTYyLCAweDkxNjEsIDB4OTE3MCwKKyAgICAweDkxNjksIDB4OTE2RiwgMHg5MTdELCAweDkxN0UsIDB4OTE3MiwgMHg5MTc0LCAweDkxNzksIDB4OTE4QywKKyAgICAweDkxODUsIDB4OTE5MCwgMHg5MThELCAweDkxOTEsIDB4OTFBMiwgMHg5MUEzLCAweDkxQUEsIDB4OTFBRCwKKyAgICAweDkxQUUsIDB4OTFBRiwgMHg5MUI1LCAweDkxQjQsIDB4OTFCQSwgMHg4QzU1LCAweDlFN0UsIDB4OERCOCwKKyAgICAweDhERUIsIDB4OEUwNSwgMHg4RTU5LCAweDhFNjksIDB4OERCNSwgMHg4REJGLCAweDhEQkMsIDB4OERCQSwKKyAgICAweDhEQzQsIDB4OERENiwgMHg4REQ3LCAweDhEREEsIDB4OERERSwgMHg4RENFLCAweDhEQ0YsIDB4OEREQiwKKyAgICAweDhEQzYsIDB4OERFQywgMHg4REY3LCAweDhERjgsIDB4OERFMywgMHg4REY5LCAweDhERkIsIDB4OERFNCwKKyAgICAweDhFMDksIDB4OERGRCwgMHg4RTE0LCAweDhFMUQsIDB4OEUxRiwgMHg4RTJDLCAweDhFMkUsIDB4OEUyMywKKyAgICAweDhFMkYsIDB4OEUzQSwgMHg4RTQwLCAweDhFMzksIDB4OEUzNSwgMHg4RTNELCAweDhFMzEsIDB4OEU0OSwKKyAgICAweDhFNDEsIDB4OEU0MiwgMHg4RTUxLCAweDhFNTIsIDB4OEU0QSwgMHg4RTcwLCAweDhFNzYsIDB4OEU3QywKKyAgICAweDhFNkYsIDB4OEU3NCwgMHg4RTg1LCAweDhFOEYsIDB4OEU5NCwgMHg4RTkwLCAweDhFOUMsIDB4OEU5RSwKKyAgICAweDhDNzgsIDB4OEM4MiwgMHg4QzhBLCAweDhDODUsIDB4OEM5OCwgMHg4Qzk0LCAweDY1OUIsIDB4ODlENiwKKyAgICAweDg5REUsIDB4ODlEQSwgMHg4OURDLCAweDg5RTUsIDB4ODlFQiwgMHg4OUVGLCAweDhBM0UsIDB4OEIyNiwKKyAgICAweDk3NTMsIDB4OTZFOSwgMHg5NkYzLCAweDk2RUYsIDB4OTcwNiwgMHg5NzAxLCAweDk3MDgsIDB4OTcwRiwKKyAgICAweDk3MEUsIDB4OTcyQSwgMHg5NzJELCAweDk3MzAsIDB4OTczRSwgMHg5RjgwLCAweDlGODMsIDB4OUY4NSwKKyAgICAweDlGODYsIDB4OUY4NywgMHg5Rjg4LCAweDlGODksIDB4OUY4QSwgMHg5RjhDLCAweDlFRkUsIDB4OUYwQiwKKyAgICAweDlGMEQsIDB4OTZCOSwgMHg5NkJDLCAweDk2QkQsIDB4OTZDRSwgMHg5NkQyLCAweDc3QkYsIDB4OTZFMCwKKyAgICAweDkyOEUsIDB4OTJBRSwgMHg5MkM4LCAweDkzM0UsIDB4OTM2QSwgMHg5M0NBLCAweDkzOEYsIDB4OTQzRSwKKyAgICAweDk0NkIsIDB4OUM3RiwgMHg5QzgyLCAweDlDODUsIDB4OUM4NiwgMHg5Qzg3LCAweDlDODgsIDB4N0EyMywKKyAgICAweDlDOEIsIDB4OUM4RSwgMHg5QzkwLCAweDlDOTEsIDB4OUM5MiwgMHg5Qzk0LCAweDlDOTUsIDB4OUM5QSwKKyAgICAweDlDOUIsIDB4OUM5RSwgMHg5QzlGLCAweDlDQTAsIDB4OUNBMSwgMHg5Q0EyLCAweDlDQTMsIDB4OUNBNSwKKyAgICAweDlDQTYsIDB4OUNBNywgMHg5Q0E4LCAweDlDQTksIDB4OUNBQiwgMHg5Q0FELCAweDlDQUUsIDB4OUNCMCwKKyAgICAweDlDQjEsIDB4OUNCMiwgMHg5Q0IzLCAweDlDQjQsIDB4OUNCNSwgMHg5Q0I2LCAweDlDQjcsIDB4OUNCQSwKKyAgICAweDlDQkIsIDB4OUNCQywgMHg5Q0JELCAweDlDQzQsIDB4OUNDNSwgMHg5Q0M2LCAweDlDQzcsIDB4OUNDQSwKKyAgICAweDlDQ0IsIDB4OUNDQywgMHg5Q0NELCAweDlDQ0UsIDB4OUNDRiwgMHg5Q0QwLCAweDlDRDMsIDB4OUNENCwKKyAgICAweDlDRDUsIDB4OUNENywgMHg5Q0Q4LCAweDlDRDksIDB4OUNEQywgMHg5Q0RELCAweDlDREYsIDB4OUNFMiwKKyAgICAweDk3N0MsIDB4OTc4NSwgMHg5NzkxLCAweDk3OTIsIDB4OTc5NCwgMHg5N0FGLCAweDk3QUIsIDB4OTdBMywKKyAgICAweDk3QjIsIDB4OTdCNCwgMHg5QUIxLCAweDlBQjAsIDB4OUFCNywgMHg5RTU4LCAweDlBQjYsIDB4OUFCQSwKKyAgICAweDlBQkMsIDB4OUFDMSwgMHg5QUMwLCAweDlBQzUsIDB4OUFDMiwgMHg5QUNCLCAweDlBQ0MsIDB4OUFEMSwKKyAgICAweDlCNDUsIDB4OUI0MywgMHg5QjQ3LCAweDlCNDksIDB4OUI0OCwgMHg5QjRELCAweDlCNTEsIDB4OThFOCwKKyAgICAweDk5MEQsIDB4OTkyRSwgMHg5OTU1LCAweDk5NTQsIDB4OUFERiwgMHg5QUUxLCAweDlBRTYsIDB4OUFFRiwKKyAgICAweDlBRUIsIDB4OUFGQiwgMHg5QUVELCAweDlBRjksIDB4OUIwOCwgMHg5QjBGLCAweDlCMTMsIDB4OUIxRiwKKyAgICAweDlCMjMsIDB4OUVCRCwgMHg5RUJFLCAweDdFM0IsIDB4OUU4MiwgMHg5RTg3LCAweDlFODgsIDB4OUU4QiwKKyAgICAweDlFOTIsIDB4OTNENiwgMHg5RTlELCAweDlFOUYsIDB4OUVEQiwgMHg5RURDLCAweDlFREQsIDB4OUVFMCwKKyAgICAweDlFREYsIDB4OUVFMiwgMHg5RUU5LCAweDlFRTcsIDB4OUVFNSwgMHg5RUVBLCAweDlFRUYsIDB4OUYyMiwKKyAgICAweDlGMkMsIDB4OUYyRiwgMHg5RjM5LCAweDlGMzcsIDB4OUYzRCwgMHg5RjNFLCAweDlGNDQsIDB4MzAwNywKKyAgICAweEZGNUUsIDB4MjAxNiwgMHgzMDEzLCAweEZGMEUsIDB4RkYxRCwgMHhGRjNCLCAweEZGM0QsIDB4RkZFMywKKyAgICAweDAwRkMsIDB4MDBBOSwgMHgyMTIyLCAweDIwMjYsIDB4MDAyMCwgMHg3NjlBLCAweDg1RjksIDB4NzkxOSwKKyAgICAweDYxMUIsIDB4OUFBRiwgMHg4OTU2LCAweDU4RTksIDB4N0Y3NywgMHg2NEZBLCAweDY1NTcsIDB4OTgxMiwKKyAgICAweDhGQTYsIDB4N0Q0NiwgMHg1RTZCLCAweDdEODEsIDB4OTM4QSwgMHg4QjE3LCAweDk4RkQsIDB4NUJGNiwKKyAgICAweDU4MzEsIDB4OUI5MSwgMHg4RjI5LCAweDhDOUQsIDB4OTJDNywgMHg3MkZELCAweDUwOTksIDB4NjE4QSwKKyAgICAweDdEQjMsIDB4N0I0NiwgMHg3NTYyLCAweDY1ODMsIDB4NUU2MywgMHg5NTg5LCAweDkwOEEsIDB4N0RFOCwKKyAgICAweDhDQjYsIDB4OEI4QSwgMHg4RkFGLCAweDhGQUUsIDB4NkExOSwgMHg5QzQ5LCAweDc2NUYsIDB4NzAxNSwKKyAgICAweDZGRjEsIDB4OENEMywgMHg2NEVGLCAweDk5MDUsIDB4NjRBNSwgMHg5MjYyLCAweDkyNTEsIDB4OTlDMSwKKyAgICAweDg4REMsIDB4OENBMSwgMHg1M0MzLCAweDg4MzYsIDB4NkI5OCwgMHg2MTVBLCAweDYxNTgsIDB4NzFFNiwKKyAgICAweDg0QkMsIDB4ODI1OSwgMHg1MDA5LCAweDZFQzQsIDB4NTNBMCwgMHg1MDc0LCAweDZFMkMsIDB4NUM2NCwKKyAgICAweDhBNkIsIDB4NjUxOSwgMHg2NDdCLCAweDg3RUMsIDB4OTk1RSwgMHg4QjkyLCAweDdFOEYsIDB4OTNERiwKKyAgICAweDc1MjMsIDB4OTVFMSwgMHg5ODZCLCAweDU4MzQsIDB4NTYxNywgMHg5NTc3LCAweDUxMUYsIDB4ODE3OCwKKyAgICAweDVFRTAsIDB4NjZBMiwgMHg5MjE0LCAweDhFQ0EsIDB4NUZCOSwgMHg1ODc1LCAweDk2NzMsIDB4ODk2RiwKKyAgICAweDdBMzEsIDB4NjFGMiwgMHg4QUEwLCAweDlBMDEsIDB4OTA3MiwgMHg5OUIzLCAweDlGNTIsIDB4NzFCRSwKKyAgICAweDg4NUQsIDB4ODdGMiwgMHg1QkY1LCAweDc1ODcsIDB4OEU4QSwgMHg3QzRDLCAweDdEQTIsIDB4OTE5QywKKyAgICAweDkyRTQsIDB4OTZEQiwgMHg3OTBFLCAweDUxMzIsIDB4ODlGOCwgMHg4NjU1LCAweDUwQjMsIDB4NzYyMSwKKyAgICAweDk1RDYsIDB4NTI3NSwgMHg5MzE4LCAweDdEMTQsIDB4N0RCRCwgMHg4RkFELCAweDhBNUUsIDB4OENEQywKKyAgICAweDgwNzAsIDB4NUY5RSwgMHg1M0UyLCAweDhFQTUsIDB4N0FDNCwgMHg5MzJGLCAweDkwNTQsIDB4NUUzNiwKKyAgICAweDhDQjgsIDB4NjRENCwgMHg1NUFFLCAweDkxMzIsIDB4NjRBMywgMHg4MUJELCAweDYxOUEsIDB4OEE5NSwKKyAgICAweDVGNDgsIDB4NzU3NiwgMHg2NENCLCAweDlFRTgsIDB4ODU2OSwgMHg2QTk0LCAweDY0MTcsIDB4NUNGNiwKKyAgICAweDc5QjEsIDB4NUMwRSwgMHg3MUM4LCAweDkxMjcsIDB4NjU3NSwgMHg2RUNDLCAweDkwNUUsIDB4N0RFMCwKKyAgICAweDk4NUIsIDB4OUVERSwgMHg1ODhBLCAweDk2RkIsIDB4NkZCMSwgMHg5MUUzLCAweDhBQkYsIDB4OEFEQywKKyAgICAweDkxRDgsIDB4OTgwMiwgMHg5MzIwLCAweDhBMDIsIDB4Njc3MSwgMHg1MkQ1LCAweDY4REYsIDB4NTFDRCwKKyAgICAweDlCMjUsIDB4NzJBMiwgMHg3MzY4LCAweDhCODAsIDB4OENFRCwgMHg5MzRELCAweDkzNUIsIDB4NjVCNywKKyAgICAweDdEREUsIDB4OTY4QSwgMHg1QzBELCAweDU2NzgsIDB4OTgxMywgMHg5MjBELCAweDU5NkEsIDB4NThBRSwKKyAgICAweDlENUQsIDB4OTg0RCwgMHg4QTFCLCAweDYwRTEsIDB4OTkxMywgMHg1MTUyLCAweDcyM0UsIDB4OTkwQywKKyAgICAweDhDQjMsIDB4NzY3QywgMHg3RjcwLCAweDk1QTUsIDB4NzkyQywgMHg5MUU5LCAweDcxNjksIDB4N0JDNCwKKyAgICAweDhDQTksIDB4OThFRiwgMHg4QTJBLCAweDdEMjEsIDB4OThEQiwgMHg4QUI5LCAweDVFRTIsIDB4OENCQiwKKyAgICAweDdEMUIsIDB4NThCMywgMHg1OTZFLCAweDYxQTQsIDB4N0NERSwgMHg4QzUwLCAweDY5NTMsIDB4OTJEMiwKKyAgICAweDk4QTgsIDB4NzYwQiwgMHg5OUFFLCAweDdFMkIsIDB4OEFGNywgMHg5Q0YzLCAweDgxOUEsIDB4OEYzQiwKKyAgICAweDY0QUIsIDB4OEYxNCwgMHg4Q0U2LCAweDVGQTksIDB4OENBMCwgMHg4QTAzLCAweDVBNjYsIDB4N0UxQiwKKyAgICAweDhBNzIsIDB4OTIyMywgMHg4NENCLCAweDVFNzksIDB4OEQ5NSwgMHg4RDFCLCAweDVDQTEsIDB4NTI1QiwKKyAgICAweDkyRkMsIDB4N0RCMSwgMHg1RDE3LCAweDkzQUMsIDB4NjRGMSwgMHg5RDNGLCAweDk1QTMsIDB4OTI3QiwKKyAgICAweDUwMEIsIDB4N0Q2NiwgMHg5Rjk0LCAweDk3OEYsIDB4OENBMiwgMHg5MjBFLCAweDZFOUQsIDB4NjlDQiwKKyAgICAweDhDRkMsIDB4ODgzMSwgMHg5ODY3LCAweDUyNkUsIDB4OTVEQywgMHg4OUMwLCAweDk5MjgsIDB4NjE2MywKKyAgICAweDhDQUIsIDB4NUVFMywgMHg4OThGLCAweDZCNzgsIDB4OUY5QywgMHg5NUE4LCAweDhFQ0MsIDB4OEE2RCwKKyAgICAweDZBQzMsIDB4OENCNCwgMHg1MjhBLCAweDhGMjUsIDB4OTM0QiwgMHg1NzBCLCAweDkwNEUsIDB4OTlFRCwKKyAgICAweDk3RDMsIDB4NkYyMiwgMHg4NjVGLCAweDk1QTEsIDB4OURCNCwgMHg4Q0MwLCAweDhGNUYsIDB4OUQzQiwKKyAgICAweDdEMDUsIDB4NThGQSwgMHg4Qjc3LCAweDZFRUMsIDB4NTYyOSwgMHg4M0VGLCAweDc1NkIsIDB4NTI4MywKKyAgICAweDhBNzEsIDB4NjFGNywgMHg1OERFLCAweDZCNjEsIDB4NzRCMCwgMHg5MDg0LCAweDdERTksIDB4OEIwQSwKKyAgICAweDYzRUUsIDB4OEYxRCwgMHg4Q0M0LCAweDdBNjIsIDB4NjcwMywgMHg3MUY0LCAweDUzMkYsIDB4OEFGMSwKKyAgICAweDhBQTgsIDB4N0U2QSwgMHg4NDc3LCAweDZFM0UsIDB4NzM3MiwgMHg4Q0E4LCAweDc5OEQsIDB4NjRDQSwKKyAgICAweDZBNUYsIDB4N0E0RCwgMHg5OTUxLCAweDhCNEYsIDB4OURDNCwgMHg3RTNFLCAweDdEREQsIDB4Njk3NSwKKyAgICAweDhGMkYsIDB4N0QxQSwgMHg2NEUwLCAweDVFN0UsIDB4ODU4QSwgMHg1MjkxLCAweDZGREYsIDB4OEEwOCwKKyAgICAweDhBMTgsIDB4OTY5QiwgMHg3RTdDLCAweDdEMDAsIDB4NTkzRSwgMHg4M0EyLCAweDk4MzAsIDB4OENDOCwKKyAgICAweDkyNDAsIDB4NTBGOSwgMHg5OUQ1LCAweDZCQjIsIDB4NzZFMywgMHg1ODA1LCAweDdCOEIsIDB4OTU5MywKKyAgICAweDgyNzEsIDB4N0REOCwgMHg3RTZELCAweDZBQTIsIDB4OUU3QywgMHg2M0MwLCAweDY0QkYsIDB4N0MyMSwKKyAgICAweDUxMDksIDB4ODVBNiwgMHg2QUJCLCAweDk0NTIsIDB4OEUxMCwgMHg4Q0U0LCAweDg5OEIsIDB4OTM3NSwKKyAgICAweDgyNjYsIDB4NTI4RCwgMHg5OTFFLCAweDZGMzgsIDB4NkZGQSwgMHg2Rjk3LCAweDVDMDcsIDB4NkYzRiwKKyAgICAweDg1MjMsIDB4NjlGMywgMHg1OTZDLCAweDhCMUIsIDB4OTFBQywgMHg4MUEwLCAweDZGODYsIDB4OUE1NSwKKyAgICAweDVCMEMsIDB4NjUyQSwgMHg5Mjc4LCAweDc3RUYsIDB4NTBFNSwgMHg5OTAzLCAweDdFNzMsIDB4N0Q1RSwKKyAgICAweDhGNEUsIDB4OEYwMywgMHg5NjhFLCAweDdCQzAsIDB4NkY1NCwgMHg3RDUwLCAweDhBQTEsIDB4N0RDQSwKKyAgICAweDkzMjYsIDB4NTBDNSwgMHg4QjM5LCAweDkwMzIsIDB4NzFGQywgMHg3NkUxLCAweDUyQzEsIDB4ODM5NiwKKyAgICAweDlCRTgsIDB4OUE1QSwgMHg3RDkzLCAweDk4MzgsIDB4OTNFMSwgMHg1RjkxLCAweDc1RDksIDB4N0FGNiwKKyAgICAweDdDRkUsIDB4ODIwQSwgMHg5OUQyLCAweDgyMDksIDB4NjREQSwgMHg5MkY4LCAweDYxRkMsIDB4NTI4NywKKyAgICAweDlENTEsIDB4N0Q3OSwgMHg4OUJBLCAweDhBMjMsIDB4N0Q3NiwgMHg5MjFFLCAweDhFQ0QsIDB4OTlGRiwKKyAgICAweDk1OEIsIDB4NTFGMSwgMHg5ODQ2LCAweDZCQkIsIDB4OEFCMiwgMHg1OEJFLCAweDYxQzcsIDB4NjQ3MywKKyAgICAweDVFQUIsIDB4ODkzMiwgMHg4QTg3LCAweDU4NEEsIDB4NTEwOCwgMHg1QkVDLCAweDc5MjYsIDB4NjZFMCwKKyAgICAweDg2NjcsIDB4NURDQiwgMHg3QUJBLCAweDk5NEIsIDB4NkY3MCwgMHg2NEY0LCAweDk1Q0EsIDB4ODgxRiwKKyAgICAweDgxRDgsIDB4ODQwQSwgMHg0Rjg2LCAweDhDRjQsIDB4ODVDRCwgMHg2QjA0LCAweDY1MTQsIDB4N0M0MywKKyAgICAweDk1Q0MsIDB4ODYyRCwgMHg3MDNFLCAweDhCOTUsIDB4NjUyQywgMHg4OUJELCAweDYxRjYsIDB4N0U5QywKKyAgICAweDcyMUIsIDB4NkZFQiwgMHg2NDg4LCAweDUyREUsIDB4NkY4NywgMHg2QTAyLCAweDk0MzMsIDB4NThEOCwKKyAgICAweDk4NUUsIDB4N0M2QywgMHg5NkUyLCAweDcwNTUsIDB4ODhDRiwgMHg5QkM5LCAweDc5QUUsIDB4OUU5NywKKyAgICAweDUzQjIsIDB4NTJGNSwgMHg3OTJCLCAweDZCNzcsIDB4NzAxRCwgMHg5NkI4LCAweDUwMDYsIDB4ODA2RiwKKyAgICAweDg0RUUsIDB4OTAyMywgMHg5NDJFLCAweDYxOTAsIDB4NkYyMywgMHg3QzNFLCAweDY1ODIsIDB4ODFDOSwKKyAgICAweDkzQzgsIDB4NjIwMCwgMHg3MTQ5LCAweDdERjQsIDB4N0NFNywgMHg1MTY5LCAweDhGMUIsIDB4OEFEMiwKKyAgICAweDc2NDIsIDB4OTA3QywgMHg5NDEwLCAweDczNzUsIDB4ODFFOCwgMHg5MTMwLCAweDlDNTcsIDB4OENDMywKKyAgICAweDlGNjEsIDB4OTIzNCwgMHg5NzQ4LCAweDVEQkEsIDB4OTgxOCwgMHg5OTNFLCAweDUyODksIDB4OUY4RCwKKyAgICAweDgwN0UsIDB4NTZBOCwgMHg3QzYwLCAweDU4REYsIDB4NjUwRiwgMHg5NkI0LCAweDZBMTMsIDB4NUE0MSwKKyAgICAweDY0NUYsIDB4N0MwRCwgMHg4NjA2LCAweDc2RTcsIDB4OTg3MSwgMHg1RUVDLCAweDcyMTAsIDB4NjRDNCwKKyAgICAweDZFRjcsIDB4ODY1QywgMHg5QjZGLCAweDhDQzIsIDB4OTMzMiwgMHg5Njc4LCAweDlBNjIsIDB4OTJDMSwKKyAgICAweDVDNjIsIDB4N0UzNywgMHg2MTZFLCAweDZGRkUsIDB4N0REMSwgMHg1REQyLCAweDY1MjMsIDB4NUI3RiwKKyAgICAweDcwNjQsIDB4NEU4MiwgMHg2Mzg0LCAweDhGMkEsIDB4NTAyQiwgMHg0Rjk2LCAweDZERUEsIDB4N0RCOCwKKyAgICAweDhBRDYsIDB4ODYzRiwgMHg3Rjg1LCAweDkwOEYsIDB4OTQ3QywgMHg3QzZFLCAweDlBM0UsIDB4OTlGMSwKKyAgICAweDdENjEsIDB4NUFCRCwgMHg3NDZBLCAweDc4QkMsIDB4ODc5RSwgMHg5OUFDLCAweDk5RTEsIDB4NTVDRSwKKyAgICAweDhDQjcsIDB4OUVBNSwgMHg4Q0UzLCAweDkwODEsIDB4Nzc5RSwgMHg5OTQ1LCAweDg4M0IsIDB4NkVGRiwKKyAgICAweDhCM0UsIDB4OTMyOCwgMHg5MjVBLCAweDhDQkYsIDB4OTM4MiwgMHg5NTgwLCAweDYwQjYsIDB4NTAxMSwKKyAgICAweDkzMzMsIDB4NTkyMiwgMHg4QjBFLCAweDVGNEMsIDB4ODk5MywgMHg3REJGLCAweDdERUMsIDB4NUVERiwKKyAgICAweDZFQzUsIDB4NjFBQiwgMHg5NUE5LCAweDlDRjQsIDB4OTI5OCwgMHg4QjJDLCAweDhCMDAsIDB4NzU1RCwKKyAgICAweDkyMDksIDB4N0QwRCwgMHg5NkUzLCAweDY0OTMsIDB4ODE2NiwgMHg2MEYxLCAweDlCMjcsIDB4OTkxMiwKKyAgICAweDY0RUMsIDB4ODFBOSwgMHg2NTA2LCAweDkxQzAsIDB4OUNFNSwgMHg4MDc2LCAweDU2OTksIDB4OTQ3NywKKyAgICAweDkzQjMsIDB4NkFCOCwgMHg3MzcwLCAweDVCRTcsIDB4NjRGMCwgMHg2RkQ4LCAweDkyMTUsIDB4N0QxMCwKKyAgICAweDgxQkYsIDB4NkZDMywgMHg4RkIyLCAweDc2MjcsIDB4OEFGRSwgMHg2QjUwLCAweDlERDcsIDB4NkJDNiwKKyAgICAweDU2MTQsIDB4NkYxQSwgMHg3NkU0LCAweDlGOTAsIDB4OENFMCwgMHg1Njc0LCAweDlENkMsIDB4OUExOSwKKyAgICAweDk4QzQsIDB4OTgzQiwgMHg4Q0E3LCAweDg2MEIsIDB4NjE5MSwgMHg4QTU1LCAweDZGNTEsIDB4OTgxNywKKyAgICAweDY0QjIsIDB4OTJFQSwgMHg1MEQ1LCAweDZBMzgsIDB4OEI1QywgMHg4MUNELCAweDlGNEEsIDB4OUEwRSwKKyAgICAweDhDNDgsIDB4NTU1MywgMHg2QzIzLCAweDhBMTYsIDB4NzI3RCwgMHg5MUZBLCAweDkyNUIsIDB4OTA3NywKKyAgICAweDdDM0QsIDB4OEIxOSwgMHg5MzIyLCAweDkyNTcsIDB4NkRGQSwgMHg4Qjc0LCAweDU4NzksIDB4NjlDRCwKKyAgICAweDU1QzYsIDB4NThCQiwgMHg4NTk0LCAweDY0MzYsIDB4OTM2QywgMHg2QTRCLCAweDU1QUMsIDB4NTBEMSwKKyAgICAweDdGRjksIDB4N0FDNSwgMHg3QUNBLCAweDZCM0QsIDB4ODlBQSwgMHg1QkUyLCAweDhGMTUsIDB4NkMyQiwKKyAgICAweDUwQkUsIDB4OTgwMywgMHg4QUNCLCAweDYxNzYsIDB4NzRDQSwgMHg3QUFFLCAweDhEQTgsIDB4NTM0MCwKKyAgICAweDhFQzAsIDB4OUE0NSwgMHg5RjcyLCAweDk4NzQsIDB4NkIwQSwgMHg1MkY4LCAweDlENzIsIDB4NzhCQSwKKyAgICAweDhCOTMsIDB4OTk1MiwgMHg2NEZFLCAweDdFNUUsIDB4NzFCMSwgMHg5N0NDLCAweDhBOEQsIDB4N0QwOSwKKyAgICAweDY5QUUsIDB4N0Q2OCwgMHg4RURGLCAweDkyRUQsIDB4OTU4RiwgMHg2RjY0LCAweDcwNTEsIDB4ODVBOSwKKyAgICAweDlDMTMsIDB4OENGRCwgMHg1MDk4LCAweDU1QUEsIDB4OUEzNywgMHg2MzgzLCAweDZGODAsIDB4NkJCQSwKKyAgICAweDdEMTcsIDB4N0JFOSwgMHg2NkVDLCAweDk1ODMsIDB4OTY1RCwgMHg4RDBELCAweDdFNTUsIDB4NTBCNywKKyAgICAweDhDREUsIDB4NzFEMiwgMHg3RDM5LCAweDhDRDIsIDB4NjM2OCwgMHg2NTFELCAweDYxRkUsIDB4OEEyRCwKKyAgICAweDdEMzMsIDB4NUJFOSwgMHg1QjM4LCAweDgxNEUsIDB4NkVGMiwgMHg4MDcyLCAweDdFNjksIDB4NTJERCwKKyAgICAweDgwNTYsIDB4NUUyQiwgMHg3MzQ1LCAweDZGRDUsIDB4OEE2OSwgMHg2NjQyLCAweDg3NTUsIDB4NUJFNiwKKyAgICAweDhCNTgsIDB4OTlEQiwgMHg1MkUyLCAweDkwNjksIDB4OTFDQiwgMHg5OEZFLCAweDg5OTYsIDB4OEE2NiwKKyAgICAweDU4RkQsIDB4NzM3OCwgMHg2QTFFLCAweDhGMzgsIDB4NjZGOCwgMHg4RDE2LCAweDVDNkMsIDB4ODg1MywKKyAgICAweDZBMzksIDB4N0FFQSwgMHg2NTc4LCAweDVFMjUsIDB4OTZEOSwgMHg4QUIwLCAweDk4MDYsIDB4OEFBQywKKyAgICAweDc4QTksIDB4NzIwRCwgMHg3RDcyLCAweDk4RkMsIDB4OUIwNiwgMHg4MDczLCAweDYxNkIsIDB4OTgwQywKKyAgICAweDhBMUYsIDB4OEFBNiwgMHg2NEZCLCAweDg2MDcsIDB4OEEzNCwgMHg4MDg1LCAweDk2RDYsIDB4OTZBOCwKKyAgICAweDdEOEYsIDB4NkI3MiwgMHg1QjZCLCAweDY0MEQsIDB4N0UyRSwgMHg3NDYzLCAweDkzOTYsIDB4NzM3QSwKKyAgICAweDY0QkIsIDB4ODFGQSwgMHg2MTRCLCAweDY1MjQsIDB4OENBQSwgMHg3NjcxLCAweDcwNTgsIDB4NThDNywKKyAgICAweDhCNUEsIDB4OEFDNywgMHg1NjA2LCAweDZFNkYsIDB4NzFEOSwgMHg2RkU0LCAweDdFMjcsIDB4OEEwRSwKKyAgICAweDlBMzAsIDB4OEIwNCwgMHg5MkJCLCAweDk4NEMsIDB4OUFENCwgMHg2ODlELCAweDhDQkMsIDB4OTQzNSwKKyAgICAweDVFRjMsIDB4ODA3RCwgMHg3MEY0LCAweDkyODUsIDB4N0Q3MSwgMHg5ODJELCAweDU3MTYsIDB4NTg1NywKKyAgICAweDU3MTgsIDB4OTgzRCwgMHg5RDE1LCAweDk5QjEsIDB4OTlERCwgMHg2QTYyLCAweDdBQUEsIDB4ODk2QSwKKyAgICAweDVGNEUsIDB4NzA2MywgMHg5ODExLCAweDg0MkMsIDB4N0RCMiwgMHg5N0NCLCAweDkwNTUsIDB4NTcwRCwKKyAgICAweDcyMzIsIDB4NkZGMCwgMHg3REFELCAweDg0NjYsIDB4NTA0OSwgMHg1MERFLCAweDdERUYsIDB4OEIwMiwKKyAgICAweDg4NUIsIDB4ODA1RSwgMHg3RDBCLCAweDdBNjksIDB4NTU0RiwgMHg2NEJFLCAweDg3NzgsIDB4NkUyNiwKKyAgICAweDdBQTksIDB4NTVEQSwgMHg5M0EyLCAweDcwQ0YsIDB4OEFBMywgMHg3MTIxLCAweDg1NkEsIDB4NTg2MiwKKyAgICAweDk3MjcsIDB4NTJEOSwgMHg4QUE0LCAweDkzMkIsIDB4NzJBNywgMHg4OTcyLCAweDdGRDIsIDB4OTI5MSwKKyAgICAweDYyMzIsIDB4N0QzMCwgMHg4NzY2LCAweDhGNDQsIDB4NUNGRCwgMHg0RkUwLCAweDcyRjksIDB4NTY4NywKKyAgICAweDkzNDEsIDB4OUJBRSwgMHg3RTk2LCAweDhDRTIsIDB4OTI5QywgMHg5NTkxLCAweDk4NkYsIDB4OTZBQSwKKyAgICAweDczRkUsIDB4NzM3QiwgMHg3RTIzLCAweDk5MjEsIDB4NjFCMiwgMHg3REFCLCAweDk0NzIsIDB4OTEwOSwKKyAgICAweDhBNzMsIDB4OTdGRiwgMHg5ODA1LCAweDg1NkQsIDB4NTZDMiwgMHg5MkI3LCAweDY2QzksIDB4NTYyRiwKKyAgICAweDUzNTQsIDB4NjMzRSwgMHg4MTA1LCAweDhBRTcsIDB4NUJFQiwgMHg3MDA5LCAweDhCMUQsIDB4OTJDNSwKKyAgICAweDkxQzEsIDB4ODIwOCwgMHg5MkI5LCAweDdEODksIDB4OTgwOCwgMHg4QTMxLCAweDdERDIsIDB4N0U4QywKKyAgICAweDhFRDIsIDB4NjFGOCwgMHg5MDc4LCAweDc2NkMsIDB4N0Q2MiwgMHg1Qjc4LCAweDUyREIsIDB4OEE2MiwKKyAgICAweDVDMEIsIDB4OTlCNCwgMHg4QTEzLCAweDhBMEEsIDB4OTA1QywgMHg1OEQzLCAweDlEMDksIDB4OUQyOCwKKyAgICAweDU1NUUsIDB4NEU5RSwgMHg4QTFELCAweDk1QjksIDB4OUU3RCwgMHg1NkI0LCAweDk4NTQsIDB4OTVCQiwKKyAgICAweDgyNzcsIDB4NTNBRCwgMHg3ODZGLCAweDhBRkEsIDB4OUE1NywgMHg5RDI2LCAweDY5NEEsIDB4NjNEQSwKKyAgICAweDc2MEQsIDB4OTY3RCwgMHg3NjYyLCAweDk5MEEsIDB4NkEyMywgMHg1ODJGLCAweDhCMjEsIDB4ODVFNSwKKyAgICAweDcyM0EsIDB4OTgwMSwgMHg2OTZELCAweDg0NDksIDB4OTFBQiwgMHg5MkE1LCAweDk4MjQsIDB4OTA3QSwKKyAgICAweDUxMDAsIDB4ODdGQiwgMHg4NURELCAweDUxMDQsIDB4NjFCNiwgMHg3RkE5LCAweDhBNjMsIDB4OEI3MCwKKyAgICAweDhBQkMsIDB4OEI2RiwgMHg3RTc5LCAweDg1MkQsIDB4OTY3MCwgMHg5MjgwLCAweDk4RjIsIDB4OTZCMSwKKyAgICAweDZBRkIsIDB4NUIzMCwgMHg5REY5LCAweDYxQzksIDB4N0U5MywgMHg3NDY5LCAweDg3QTIsIDB4NzFERiwKKyAgICAweDcxOTIsIDB4ODgwNSwgMHg4RDBGLCAweDdBNEUsIDB4NTVCMiwgMHg2NEMxLCAweDUwQUQsIDB4NzY3MCwKKyAgICAweDhFMzQsIDB4NTEyQSwgMHg2MTgyLCAweDkwRjUsIDB4OTIzRSwgMHg3MzM2LCAweDhBOTgsIDB4OEYzRiwKKyAgICAweDk5MTgsIDB4OUI1QSwgMHg2RjAxLCAweDgyMDcsIDB4NURCQywgMHg4QTlFLCAweDlCMzEsIDB4NzM0NCwKKyAgICAweDhCN0QsIDB4OTgxMCwgMHg5OUFELCAweDlEMUIsIDB4NkRGNSwgMHg4RjQ1LCAweDU3MTIsIDB4NTRFMSwKKyAgICAweDU3MTMsIDB4N0RFMywgMHg5MDYwLCAweDk4NTgsIDB4N0QwNCwgMHg4RThELCAweDk0NzAsIDB4OTVCMiwKKyAgICAweDk2RjIsIDB4OTExNiwgMHg5Njk1LCAweDkwNEIsIDB4ODVGNCwgMHg5MTk2LCAweDY2ODgsIDB4OTZEQywKKyAgICAweDhGMDksIDB4NjUyMiwgMHg2NkFCLCAweDhEMEEsIDB4OEQxQywgMHg4MURGLCAweDk0N0YsIDB4NjhENywKKyAgICAweDdBQzgsIDB4OENBQywgMHg2NEM3LCAweDUyNDcsIDB4NkZBNCwgMHg4Q0NBLCAweDhEMDgsIDB4OEVDQiwKKyAgICAweDkzNTgsIDB4OTU5OCwgMHg4QTUwLCAweDlGNEIsIDB4NTBCNSwgMHg2QzA4LCAweDc2REUsIDB4NjVBQywKKyAgICAweDhGM0UsIDB4NUQ4NCwgMHg2OEU3LCAweDYyMzAsIDB4N0RCQiwgMHg1RjM1LCAweDZGMzIsIDB4NUUzMywKKyAgICAweDhDRUMsIDB4ODEzOSwgMHg4RDk5LCAweDg3QzQsIDB4OEY0RCwgMHg5MzdBLCAweDkwMTksIDB4OEM5RSwKKyAgICAweDkxREQsIDB4NTA3NSwgMHg4QTNBLCAweDkzQUUsIDB4OTY2MywgMHg1RTQwLCAweDc2NjUsIDB4OTEyRCwKKyAgICAweDhCNDksIDB4N0U1NCwgMHg4MDc3LCAweDU3RjcsIDB4ODg3OSwgMHg3RDE5LCAweDY0NkYsIDB4NjRGMiwKKyAgICAweDVFNUYsIDB4OENFQSwgMHg2RUVGLCAweDk0MTgsIDB4N0Q0MiwgMHg3QTJFLCAweDgxNkIsIDB4ODg0NiwKKyAgICAweDhCMDUsIDB4OEVGOCwgMHg3NkJBLCAweDY2NUQsIDB4OUE1RiwgMHg4QUY4LCAweDhBODUsIDB4NzFFRCwKKyAgICAweDc3REEsIDB4NTZEMSwgMHg4Q0FGLCAweDk0NDQsIDB4N0JDOSwgMHg5OUQwLCAweDVDMDgsIDB4NzhEQSwKKyAgICAweDhGNDksIDB4OENGQSwgMHg2QTAxLCAweDgzOEEsIDB4ODhERCwgMHg1OTlELCAweDU4RUYsIDB4NzJDMCwKKyAgICAweDkzMTAsIDB4OEQwNSwgMHg1ODlDLCAweDdEQjQsIDB4OEFDNCwgMHg2RTk2LCAweDZGQzEsIDB4OENDNywKKyAgICAweDZGMkMsIDB4N0Q5QywgMHg3RTNELCAweDdFMzEsIDB4OTExMiwgMHg4QTVCLCAweDdENDQsIDB4OTQ3RCwKKyAgICAweDU1QzcsIDB4NTM5OSwgMHg1M0I0LCAweDk3NjgsIDB4OEQwQiwgMHg1MzJELCAweDUzMzEsIDB4OENGRSwKKyAgICAweDUyNDQsIDB4NTI4QywgMHg1Mjc0LCAweDUwQjQsIDB4NTAwMCwgMHg1MDk2LCAweDUxMTUsIDB4NTEwMiwKKyAgICAweDUxMTQsIDB4NTEzQywgMHg1MTM3LCAweDUwRTgsIDB4NTBDMiwgMHg1MTNCLCAweDUxMTAsIDB4NTEzQSwKKyAgICAweDUwQzksIDB4N0NGNCwgMHg5RUNDLCAweDU2QzUsIDB4OUNFQywgMHg4OTNCLCAweDgxRTAsIDB4OEEwMSwKKyAgICAweDhBMTAsIDB4OEEwQywgMHg4QTE1LCAweDhCMzMsIDB4OEE0RSwgMHg4QTI1LCAweDhBNDEsIDB4OEEzNiwKKyAgICAweDhBNDYsIDB4OEE1NCwgMHg4QTU4LCAweDhBNTIsIDB4OEE4NiwgMHg4QTg0LCAweDhBN0YsIDB4OEE3MCwKKyAgICAweDhBN0MsIDB4OEE3NSwgMHg4QTZDLCAweDhBNkUsIDB4OEFDRCwgMHg4QUUyLCAweDhBNjEsIDB4OEE5QSwKKyAgICAweDhBQTUsIDB4OEE5MSwgMHg4QTkyLCAweDhBQ0YsIDB4OEFEMSwgMHg4QUM5LCAweDhBREIsIDB4OEFENywKKyAgICAweDhBQzIsIDB4OEFCNiwgMHg4QUY2LCAweDhBRUIsIDB4OEIxNCwgMHg4QjAxLCAweDhBRTQsIDB4OEFFRCwKKyAgICAweDhBRkMsIDB4OEFGMywgMHg4QUU2LCAweDhBRUUsIDB4OEFERSwgMHg4QjI4LCAweDhCOUMsIDB4OEIxNiwKKyAgICAweDhCMUEsIDB4OEIxMCwgMHg4QjJCLCAweDhCMkQsIDB4OEI1NiwgMHg4QjU5LCAweDhCNEUsIDB4OEI5RSwKKyAgICAweDhCNkIsIDB4OEI5NiwgMHg5NjU4LCAweDkxM0EsIDB4OTExNCwgMHg5MTM0LCAweDkwREYsIDB4OTEzNiwKKyAgICAweDkxMDYsIDB4OTE0OCwgMHg4MkJCLCAweDUyRjEsIDB4NURGMCwgMHg1ODBBLCAweDU4RDksIDB4NThFMiwKKyAgICAweDU4RTAsIDB4NThEQSwgMHg1N0UxLCAweDU4NEYsIDB4NTgxNiwgMHg1ODUyLCAweDU4MUQsIDB4NTg2NCwKKyAgICAweDg1OEMsIDB4ODU1MywgMHg4NUY2LCAweDgzQTcsIDB4ODQwNywgMHg4NEVGLCAweDgyRTcsIDB4ODYyMiwKKyAgICAweDg1MjYsIDB4NTg0QiwgMHg3MTYyLCAweDg1NTgsIDB4ODRGRCwgMHg4NTRFLCAweDg1ODgsIDB4ODVCQSwKKyAgICAweDcyOTYsIDB4NkVDRSwgMHg4NTQxLCAweDg1Q0UsIDB4ODU1MiwgMHg4NEMwLCAweDg0NTIsIDB4ODQ2NCwKKyAgICAweDg0OTQsIDB4ODQzNSwgMHg4NTlGLCAweDg1NTUsIDB4OURBRiwgMHg4NDkzLCAweDdFMDgsIDB4ODU0NiwKKyAgICAweDg1NjIsIDB4ODUxRSwgMHg5QTQwLCAweDg2M0EsIDB4OTNBMywgMHg4NTc3LCAweDg2MUUsIDB4ODVGQSwKKyAgICAweDg2MDQsIDB4ODVFQSwgMHg4NjFBLCAweDU5NjksIDB4NUMzNywgMHg2MzZCLCAweDY0NzYsIDB4NjQ5RiwKKyAgICAweDY0NTEsIDB4NjQ1QywgMHg2NEIzLCAweDY1MDQsIDB4NjUxNiwgMHg2NEY3LCAweDY0RkMsIDB4NjUxQiwKKyAgICAweDU2MzAsIDB4NTYzOCwgMHg1NkM4LCAweDU2QTYsIDB4NTUwNCwgMHg1NEJDLCAweDU2ODAsIDB4NTY1RCwKKyAgICAweDU2NjAsIDB4NTYzNSwgMHg1NUY2LCAweDU2NjYsIDB4NTY3MiwgMHg1NjhDLCAweDU2NjUsIDB4NTYxQywKKyAgICAweDU2MkUsIDB4NTVFOSwgMHg1NjE2LCAweDU2QzAsIDB4NTYwRCwgMHg1NkIzLCAweDU2QzEsIDB4NTY2RiwKKyAgICAweDhGNjEsIDB4NTZCNiwgMHg1Njk1LCAweDU3MDcsIDB4NUU0MywgMHg1RTZDLCAweDVFNTgsIDB4NUU1NywKKyAgICAweDVEODcsIDB4NUNGNCwgMHg1RDUwLCAweDVEMkMsIDB4NURBNywgMHg1REEwLCAweDVEOTcsIDB4NUQwRCwKKyAgICAweDVEQjgsIDB4NUQ4MSwgMHg1REQ0LCAweDVGQTAsIDB4NzM3NywgMHg3MzQxLCAweDczNkEsIDB4NzMzQiwKKyAgICAweDczNkIsIDB4NzM4MCwgMHg3MzdDLCAweDk4RTAsIDB4OTkzMywgMHg5OEU5LCAweDk5M0MsIDB4OThFQSwKKyAgICAweDk4RUIsIDB4OThFRCwgMHg5OEY0LCAweDk5MDksIDB4OTkxMSwgMHg5OTFCLCAweDk5MzcsIDB4OTkzRiwKKyAgICAweDk5NDMsIDB4OTk0OCwgMHg5OTQ5LCAweDk5NEEsIDB4OTk0QywgMHg5OTYyLCAweDVFRTEsIDB4OENFMSwKKyAgICAweDYxRkEsIDB4NjFBRSwgMHg2MTZBLCAweDYxM0UsIDB4NjBCNSwgMHg2MTM0LCAweDYxQ0MsIDB4NjE1RiwKKyAgICAweDYxRTgsIDB4NjBGQiwgMHg2MTM3LCAweDYwRjIsIDB4NjE3MywgMHg2MTFDLCAweDYxOTIsIDB4OTU4MiwKKyAgICAweDk1ODYsIDB4OTVDOCwgMHg5NThFLCAweDk1OTQsIDB4OTU4QywgMHg5NUU1LCAweDk1QUQsIDB4OTVBQiwKKyAgICAweDlCMkUsIDB4OTVBQywgMHg5NUJFLCAweDk1QjYsIDB4OUIyOSwgMHg5NUJGLCAweDk1QkQsIDB4OTVCQywKKyAgICAweDk1QzMsIDB4OTVDQiwgMHg5NUQ0LCAweDk1RDAsIDB4OTVENSwgMHg5NURFLCAweDcwNDMsIDB4NkY1OSwKKyAgICAweDcwMjcsIDB4NzAxOCwgMHg2RkZDLCAweDZEODcsIDB4NkQ3OSwgMHg2RTVFLCAweDZGQUUsIDB4NzAwRiwKKyAgICAweDZFRjgsIDB4NkY2RiwgMHg2REY2LCAweDZGN0YsIDB4NzAwNiwgMHg2RkEwLCAweDcwMEIsIDB4NzA2NywKKyAgICAweDcwNDQsIDB4NzAwNSwgMHg2Rjc3LCAweDcwMjAsIDB4NzAxRiwgMHg3MDMyLCAweDcwMjgsIDB4NzA1RCwKKyAgICAweDlBMkIsIDB4OTA4NywgMHg5MDE1LCAweDkwOTAsIDB4NUM2OCwgMHg1RjMzLCAweDVBRjUsIDB4NUFENywKKyAgICAweDVCMDAsIDB4NUE2RCwgMHg1QjA4LCAweDVCNEMsIDB4NUFBNywgMHg1QUZCLCAweDVCMEIsIDB4NUIyMSwKKyAgICAweDVCMkEsIDB4NUIxOSwgMHg5OUQ0LCAweDk5REYsIDB4OTlEOSwgMHg5QTM2LCAweDlBNUIsIDB4OTlEMSwKKyAgICAweDk5RDgsIDB4OUE0RCwgMHg5QTRBLCAweDk5RTIsIDB4OUE2QSwgMHg5QTBGLCAweDlBMEQsIDB4OUEwNSwKKyAgICAweDlBNDIsIDB4OUEyRCwgMHg5QTE2LCAweDlBNDEsIDB4OUEyRSwgMHg5QTM4LCAweDlBNDMsIDB4OUE0NCwKKyAgICAweDlBNEYsIDB4OUE2NSwgMHg5QTY0LCAweDdDRjksIDB4N0QwNiwgMHg3RDAyLCAweDdEMDcsIDB4N0QwOCwKKyAgICAweDdFOEEsIDB4N0QxQywgMHg3RDE1LCAweDdEMTMsIDB4N0QzQSwgMHg3RDMyLCAweDdEMzEsIDB4N0UxMCwKKyAgICAweDdEM0MsIDB4N0Q0MCwgMHg3RDNGLCAweDdENUQsIDB4N0Q0RSwgMHg3RDczLCAweDdEODYsIDB4N0Q4MywKKyAgICAweDdEODgsIDB4N0RCRSwgMHg3REJBLCAweDdEQ0IsIDB4N0RENCwgMHg3REM0LCAweDdEOUUsIDB4N0RBQywKKyAgICAweDdEQjksIDB4N0RBMywgMHg3REIwLCAweDdEQzcsIDB4N0REOSwgMHg3REQ3LCAweDdERjksIDB4N0RGMiwKKyAgICAweDdFNjIsIDB4N0RFNiwgMHg3REY2LCAweDdERjEsIDB4N0UwQiwgMHg3REUxLCAweDdFMDksIDB4N0UxRCwKKyAgICAweDdFMUYsIDB4N0UxRSwgMHg3RTJELCAweDdFMEEsIDB4N0UxMSwgMHg3RTdELCAweDdFMzksIDB4N0UzNSwKKyAgICAweDdFMzIsIDB4N0U0NiwgMHg3RTQ1LCAweDdFODgsIDB4N0U1QSwgMHg3RTUyLCAweDdFNkUsIDB4N0U3RSwKKyAgICAweDdFNzAsIDB4N0U2RiwgMHg3RTk4LCAweDc0QTMsIDB4NzQ0QiwgMHg3NENGLCAweDk4MEEsIDB4NzRCRCwKKyAgICAweDc0M0YsIDB4NzQ4OSwgMHg3NEE2LCAweDc0RDQsIDB4NzREQSwgMHg5N0Q5LCAweDk3REUsIDB4OTdEQywKKyAgICAweDY5QUEsIDB4NkFFQSwgMHg2ODk4LCAweDY4RDYsIDB4NkEwNSwgMHg2ODlGLCAweDZBREIsIDB4NkFGMywKKyAgICAweDZBRTgsIDB4NkFERiwgMHg2QTg5LCAweDY5MEYsIDB4NkE0OCwgMHg2OTY4LCAweDY5QkYsIDB4NkEzQSwKKyAgICAweDZBOUMsIDB4NkIxMiwgMHg2QjFFLCAweDZBREQsIDB4NjlFNywgMHg2QjBGLCAweDZCMTYsIDB4NkFFQywKKyAgICAweDZBREEsIDB4NkFGOCwgMHg2QUIzLCAweDZBRTcsIDB4NkFBMywgMHg2QUQzLCAweDZBREUsIDB4NkJBNCwKKyAgICAweDZCOUUsIDB4NkJBRSwgMHg2QkFCLCAweDZCQUYsIDB4OEVENCwgMHg4RURCLCAweDhFRjIsIDB4OEVGQiwKKyAgICAweDhGNjQsIDB4OEVGOSwgMHg4RUZDLCAweDhFRUIsIDB4OEVFNCwgMHg4RjYyLCAweDhFRkEsIDB4OEVGRSwKKyAgICAweDhGMEEsIDB4OEYwNywgMHg4RjA1LCAweDhGMTIsIDB4OEYyNiwgMHg4RjFFLCAweDhGMUYsIDB4OEYxQywKKyAgICAweDhGMzMsIDB4OEY0NiwgMHg4RjU0LCAweDYyMTQsIDB4NjIyNywgMHg3NTBDLCAweDY2QzcsIDB4NjZDNCwKKyAgICAweDY2ODksIDB4NjZENiwgMHg4Q0MxLCAweDhDQjAsIDB4OENCQSwgMHg4Q0JELCAweDhEMDQsIDB4OENCMiwKKyAgICAweDhDQzUsIDB4OEQxMCwgMHg4Q0QxLCAweDhDREEsIDB4OENENSwgMHg4Q0VCLCAweDhDRTcsIDB4OENGQiwKKyAgICAweDg5OTgsIDB4ODlBQywgMHg4OUExLCAweDg5QkYsIDB4ODlBNiwgMHg4OUFGLCAweDg5QjIsIDB4ODlCNywKKyAgICAweDZCRkYsIDB4NkMwQywgMHg2QzJDLCAweDcyNTgsIDB4NjcyNywgMHg4MTU2LCAweDgxREEsIDB4ODExQiwKKyAgICAweDgxQkUsIDB4ODE2MSwgMHg4MUNGLCAweDZCNUYsIDB4OThBRSwgMHg5OEFGLCAweDk4QjYsIDB4OThCQywKKyAgICAweDk4QzYsIDB4OThDOCwgMHg4RjQyLCAweDlGNEYsIDB4NjU5NSwgMHg3MTZDLCAweDcxNTIsIDB4NzE5NywKKyAgICAweDcxQzEsIDB4NzFEQywgMHg3MUZFLCAweDc5QjAsIDB4Nzk4RSwgMHg3OUFBLCAweDYxREYsIDB4NjE2NCwKKyAgICAweDYxRTMsIDB4NjIwNywgMHg2RkE5LCAweDc4RUYsIDB4NzhBRCwgMHg3ODY4LCAweDc4QjgsIDB4NzkyQSwKKyAgICAweDc5MzEsIDB4Nzg2NCwgMHg3OEZELCAweDc4RTcsIDB4NzhFMywgMHg5Rjk1LCAweDc3OTgsIDB4Nzc1RSwKKyAgICAweDc3QkMsIDB4N0Y4NiwgMHg3Rjg4LCAweDkxRDIsIDB4OTFEMywgMHg5MUQ0LCAweDkxRDksIDB4OTFENywKKyAgICAweDkxRDUsIDB4OTFGNywgMHg5MUU3LCAweDkxRTQsIDB4OTM0NiwgMHg5MUY1LCAweDkxRjksIDB4OTIwOCwKKyAgICAweDkyMjYsIDB4OTI0NSwgMHg5MjExLCAweDkyMTAsIDB4OTIwMSwgMHg5MjI3LCAweDkyMDQsIDB4OTIyNSwKKyAgICAweDkyMDAsIDB4OTIzQSwgMHg5MjY2LCAweDkyMzcsIDB4OTIzMywgMHg5MjU1LCAweDkyM0QsIDB4OTIzOCwKKyAgICAweDkyNUUsIDB4OTI2QywgMHg5MjZELCAweDkyM0YsIDB4OTQ2MCwgMHg5MjMwLCAweDkyNDksIDB4OTI0OCwKKyAgICAweDkyNEQsIDB4OTIyRSwgMHg5MjM5LCAweDk0MzgsIDB4OTJBQywgMHg5MkEwLCAweDkyN0EsIDB4OTJBQSwKKyAgICAweDkyRUUsIDB4OTJDRiwgMHg5NDAzLCAweDkyRTMsIDB4OTQzQSwgMHg5MkIxLCAweDkyQTYsIDB4OTNBNywKKyAgICAweDkyOTYsIDB4OTJDQywgMHg5MkE5LCAweDkzRjUsIDB4OTI5MywgMHg5MjdGLCAweDkzQTksIDB4OTI5QSwKKyAgICAweDkzMUEsIDB4OTJBQiwgMHg5MjgzLCAweDk0MEIsIDB4OTJBOCwgMHg5MkEzLCAweDk0MTIsIDB4OTMzOCwKKyAgICAweDkyRjEsIDB4OTNENywgMHg5MkU1LCAweDkyRjAsIDB4OTJFRiwgMHg5MkU4LCAweDkyQkMsIDB4OTJERCwKKyAgICAweDkyRjYsIDB4OTQyNiwgMHg5NDI3LCAweDkyQzMsIDB4OTJERiwgMHg5MkU2LCAweDkzMTIsIDB4OTMwNiwKKyAgICAweDkzNjksIDB4OTMxQiwgMHg5MzQwLCAweDkzMDEsIDB4OTMxNSwgMHg5MzJFLCAweDkzNDMsIDB4OTMwNywKKyAgICAweDkzMDgsIDB4OTMxRiwgMHg5MzE5LCAweDkzNjUsIDB4OTM0NywgMHg5Mzc2LCAweDkzNTQsIDB4OTM2NCwKKyAgICAweDkzQUEsIDB4OTM3MCwgMHg5Mzg0LCAweDkzRTQsIDB4OTNEOCwgMHg5NDI4LCAweDkzODcsIDB4OTNDQywKKyAgICAweDkzOTgsIDB4OTNCOCwgMHg5M0JGLCAweDkzQTYsIDB4OTNCMCwgMHg5M0I1LCAweDk0NEMsIDB4OTNFMiwKKyAgICAweDkzREMsIDB4OTNERCwgMHg5M0NELCAweDkzREUsIDB4OTNDMywgMHg5M0M3LCAweDkzRDEsIDB4OTQxNCwKKyAgICAweDk0MUQsIDB4OTNGNywgMHg5NDY1LCAweDk0MTMsIDB4OTQ2RCwgMHg5NDIwLCAweDk0NzksIDB4OTNGOSwKKyAgICAweDk0MTksIDB4OTQ0QSwgMHg5NDMyLCAweDk0M0YsIDB4OTQ1NCwgMHg5NDYzLCAweDkzN0UsIDB4N0E2MSwKKyAgICAweDlDRTksIDB4OUNGNiwgMHg5RDA3LCAweDlEMDYsIDB4OUQyMywgMHg5RDg3LCAweDlFMTUsIDB4OUQxRCwKKyAgICAweDlEMUYsIDB4OURFNSwgMHg5RDJGLCAweDlERDksIDB4OUQzMCwgMHg5RDQyLCAweDlFMUUsIDB4OUQ1MywKKyAgICAweDlFMUQsIDB4OUQ2MCwgMHg5RDUyLCAweDlERjMsIDB4OUQ1QywgMHg5RDYxLCAweDlEOTMsIDB4OUQ2QSwKKyAgICAweDlENkYsIDB4OUQ4OSwgMHg5RDk4LCAweDlEOUEsIDB4OURDMCwgMHg5REE1LCAweDlEQTksIDB4OURDMiwKKyAgICAweDlEQkMsIDB4OUUxQSwgMHg5REQzLCAweDlEREEsIDB4OURFRiwgMHg5REU2LCAweDlERjIsIDB4OURGOCwKKyAgICAweDlFMEMsIDB4OURGQSwgMHg5RTFCLCAweDc2NjQsIDB4NzY1OCwgMHg3NjY3LCAweDc2MDIsIDB4NzY0NiwKKyAgICAweDc2NDcsIDB4NzY0OSwgMHg3NjFFLCAweDc2M0IsIDB4NzY2RCwgMHg3NjZFLCAweDc2NjksIDB4NzY3MiwKKyAgICAweDdBQzcsIDB4N0FCNiwgMHg4OTYwLCAweDg5MzMsIDB4ODk1RCwgMHg4OTQ3LCAweDg5MzgsIDB4ODk2NCwKKyAgICAweDc2QjgsIDB4ODAyRSwgMHg4MDJDLCAweDgwNzksIDB4ODA3NSwgMHg5ODA3LCAweDk4MEUsIDB4OTgwRiwKKyAgICAweDk4MjEsIDB4OTgxQywgMHg2RjQxLCAweDk4MjYsIDB4OTgzNywgMHg5ODRFLCAweDk4NTMsIDB4OTg3MywKKyAgICAweDk4NjIsIDB4OTg1OSwgMHg5ODY1LCAweDk4NkMsIDB4OTg3MCwgMHg4N0UzLCAweDg4MDYsIDB4ODcwNiwKKyAgICAweDg4MjMsIDB4ODdGNiwgMHg4NkZBLCAweDg3RUYsIDB4ODc4NCwgMHg4ODEwLCAweDg3QzgsIDB4ODgxMSwKKyAgICAweDg3QkIsIDB4ODdDRSwgMHg3RjRDLCAweDdCRTQsIDB4N0I2NywgMHg3QzY5LCAweDdCRjMsIDB4N0MwMCwKKyAgICAweDdCQ0IsIDB4N0M1QywgMHg3QzFFLCAweDdDMkIsIDB4N0MyMywgMHg3QzZBLCAweDdDNUYsIDB4ODI2NCwKKyAgICAweDgyNkIsIDB4ODhDQSwgMHg3RkE1LCAweDdDRjIsIDB4N0NGNiwgMHg3Q0RELCAweDdFMzYsIDB4OUVBOSwKKyAgICAweDhEQjIsIDB4OTFDNSwgMHg5MUMzLCAweDlFN0EsIDB4OEU4OSwgMHg4RTRDLCAweDhFOTIsIDB4OEU3QSwKKyAgICAweDhFNTUsIDB4OEU5QSwgMHg4RThCLCAweDhFOTMsIDB4OEU5MSwgMHg4RUExLCAweDhFNjMsIDB4OEVBQSwKKyAgICAweDhFQTYsIDB4ODlGNCwgMHg4OUY2LCAweDk3NUEsIDB4OTc0MiwgMHg5NzNELCAweDk3NDQsIDB4OUY1NCwKKyAgICAweDlGNUYsIDB4OUY1OSwgMHg5RjYwLCAweDlGNUMsIDB4OUY2NiwgMHg5RjZDLCAweDlGNkEsIDB4OUY3NywKKyAgICAweDlFRkQsIDB4OUVGRiwgMHg5RjA5LCAweDhCOEUsIDB4OTQ3RSwgMHg5M0U4LCAweDlCNzcsIDB4OUI3NCwKKyAgICAweDlCODEsIDB4OUI4MywgMHg5QjhFLCAweDlDNzgsIDB4N0E0QywgMHg5QjkyLCAweDlDNUYsIDB4OUI5MCwKKyAgICAweDlCQUQsIDB4OUI5QSwgMHg5QkFBLCAweDlCOUUsIDB4OUM2RCwgMHg5QkFCLCAweDlCOUQsIDB4OUM1OCwKKyAgICAweDlCQzEsIDB4OUM3QSwgMHg5QzMxLCAweDlDMzksIDB4OUMyMywgMHg5QzM3LCAweDlCQzAsIDB4OUJDQSwKKyAgICAweDlCQzcsIDB4OUJGRCwgMHg5QkQ2LCAweDlCRUEsIDB4OUJFQiwgMHg5QkUxLCAweDlCRTQsIDB4OUJFNywKKyAgICAweDlCREQsIDB4OUJFMiwgMHg5QkYwLCAweDlCREIsIDB4OUJGNCwgMHg5QkQ0LCAweDlDNUQsIDB4OUMwOCwKKyAgICAweDlDMTAsIDB4OUMwRCwgMHg5QzEyLCAweDlDMDksIDB4OUJGRiwgMHg5QzIwLCAweDlDMzIsIDB4OUMyRCwKKyAgICAweDlDMjgsIDB4OUMyNSwgMHg5QzI5LCAweDlDMzMsIDB4OUMzRSwgMHg5QzQ4LCAweDlDM0IsIDB4OUMzNSwKKyAgICAweDlDNDUsIDB4OUM1NiwgMHg5QzU0LCAweDlDNTIsIDB4OUM2NywgMHg5N0MzLCAweDk3QkQsIDB4OTdDOSwKKyAgICAweDlEQkIsIDB4OUFDRiwgMHg5QUQ2LCAweDlBRDUsIDB4OUI1OCwgMHg5QjRFLCAweDk5NTcsIDB4OTk1QywKKyAgICAweDlCMjIsIDB4OUVGNywgMHg5RUYyLCAweDg5NkMsIDB4OTVDNiwgMHg5MzM2LCAweDVGNDYsIDB4ODUxNCwKKyAgICAweDdFOTQsIDB4OUY2MywgMHg1Njc5LCAweDlGMTUsIDB4NTY0MSwgMHg5QUVFLCAweDg5MDcsIDB4N0E0MCwKKyAgICAweDk4QjMsIDB4OTVBNCwgMHg5QjBELCAweDhGRjQsIDB4NUY1OSwgMHg3QTZCLCAweDk4RTIsIDB4NTBBMiwKKyAgICAweDg1OTEsIDB4NTExOCwgMHg2MzcyLCAweDUyNEIsIDB4Nzc0RiwgMHg3RThELCAweDY2QzYsIDB4NzdBRCwKKyAgICAweDlFNzUsIDB4NTZDOSwgMHg5RUY0LCAweDZGREIsIDB4NjFERSwgMHg3N0M3LCAweDcwMzAsIDB4OUVCNSwKKyAgICAweDg4NEEsIDB4OTVFMiwgMHg5N0M2LCAweDdDNjQsIDB4N0UzNCwgMHg5N0E2LCAweDlFQUYsIDB4NTZDQywKKyAgICAweDk4QjEsIDB4NkFBRiwgMHg3RjRFLCAweDdDRjAsIDB4NEZDMiwgMHg3RTZCLCAweDlFNzksIDB4NTZBRSwKKyAgICAweDlCMUEsIDB4ODQ2RiwgMHg3OUE2LCAweDdDNzIsIDB4OUFEMiwgMHg5NkJCLCAweDdERkIsIDB4ODhGRCwKKyAgICAweDc4NDMsIDB4MjE3MCwgMHgyMTcxLCAweDIxNzIsIDB4MjE3MywgMHgyMTc0LCAweDIxNzUsIDB4MjE3NiwKKyAgICAweDIxNzcsIDB4MjE3OCwgMHgyMTc5LCAweDAyQ0EsIDB4MDJDQiwgMHgwMkQ5LCAweDIwMTMsIDB4MjAxNSwKKyAgICAweDIwMjUsIDB4MjAzNSwgMHgyMTA1LCAweDIxMDksIDB4MjE5NiwgMHgyMTk3LCAweDIxOTgsIDB4MjE5OSwKKyAgICAweDIyMTUsIDB4MjIxRiwgMHgyMjIzLCAweDIyNTIsIDB4MjI2NiwgMHgyMjY3LCAweDIyQkYsIDB4MjU1MCwKKyAgICAweDI1NTEsIDB4MjU1MiwgMHgyNTUzLCAweDI1NTQsIDB4MjU1NSwgMHgyNTU2LCAweDI1NTcsIDB4MjU1OCwKKyAgICAweDI1NTksIDB4MjU1QSwgMHgyNTVCLCAweDI1NUMsIDB4MjU1RCwgMHgyNTVFLCAweDI1NUYsIDB4MjU2MCwKKyAgICAweDI1NjEsIDB4MjU2MiwgMHgyNTYzLCAweDI1NjQsIDB4MjU2NSwgMHgyNTY2LCAweDI1NjcsIDB4MjU2OCwKKyAgICAweDI1NjksIDB4MjU2QSwgMHgyNTZCLCAweDI1NkMsIDB4MjU2RCwgMHgyNTZFLCAweDI1NkYsIDB4MjU3MCwKKyAgICAweDI1NzEsIDB4MjU3MiwgMHgyNTczLCAweDI1ODEsIDB4MjU4MiwgMHgyNTgzLCAweDI1ODQsIDB4MjU4NSwKKyAgICAweDI1ODYsIDB4MjU4NywgMHgyNTg4LCAweDI1ODksIDB4MjU4QSwgMHgyNThCLCAweDI1OEMsIDB4MjU4RCwKKyAgICAweDI1OEUsIDB4MjU4RiwgMHgyNTkzLCAweDI1OTQsIDB4MjU5NSwgMHgyNUJDLCAweDI1QkQsIDB4MjVFMiwKKyAgICAweDI1RTMsIDB4MjVFNCwgMHgyNUU1LCAweDI2MDksIDB4MjI5NSwgMHgzMDEyLCAweDMwMUQsIDB4MzAxRSwKKyAgICAweDMwMjEsIDB4MzAyMiwgMHgzMDIzLCAweDMwMjQsIDB4MzAyNSwgMHgzMDI2LCAweDMwMjcsIDB4MzAyOCwKKyAgICAweDMwMjksIDB4MzJBMywgMHgzMzhFLCAweDMzOEYsIDB4MzM5QywgMHgzMzlELCAweDMzOUUsIDB4MzNBMSwKKyAgICAweDMzQzQsIDB4MzNDRSwgMHgzM0QxLCAweDMzRDIsIDB4MzNENSwgMHhGRTMwLCAweEZGRTIsIDB4RkZFNCwKKyAgICAweDIxMjEsIDB4MzIzMSwgMHgyMDEwLCAweDMwRkMsIDB4MzA5QiwgMHgzMDlDLCAweDMwRkQsIDB4MzBGRSwKKyAgICAweDMwMDYsIDB4MzA5RCwgMHgzMDlFLCAweEZFNDksIDB4RkU0QSwgMHhGRTRCLCAweEZFNEMsIDB4RkU0RCwKKyAgICAweEZFNEUsIDB4RkU0RiwgMHhGRTUwLCAweEZFNTEsIDB4RkU1MiwgMHhGRTU0LCAweEZFNTUsIDB4RkU1NiwKKyAgICAweEZFNTcsIDB4RkU1OSwgMHhGRTVBLCAweEZFNUIsIDB4RkU1QywgMHhGRTVELCAweEZFNUUsIDB4RkU1RiwKKyAgICAweEZFNjAsIDB4RkU2MSwgMHhGRTYyLCAweEZFNjMsIDB4RkU2NCwgMHhGRTY1LCAweEZFNjYsIDB4RkU2OCwKKyAgICAweEZFNjksIDB4RkU2QSwgMHhGRTZCLCAweDMwM0UsIDB4MkZGMCwgMHgyRkYxLCAweDJGRjIsIDB4MkZGMywKKyAgICAweDJGRjQsIDB4MkZGNSwgMHgyRkY2LCAweDJGRjcsIDB4MkZGOCwgMHgyRkY5LCAweDJGRkEsIDB4MkZGQiwKKyAgICAweDRFMDIsIDB4NEUwNCwgMHg0RTA1LCAweDRFMDYsIDB4NEUwRiwgMHg0RTEyLCAweDRFMTcsIDB4NEUxRiwKKyAgICAweDRFMjAsIDB4NEUyMSwgMHg0RTIzLCAweDRFMjYsIDB4NEUyOSwgMHg0RTJFLCAweDRFMkYsIDB4NEUzMSwKKyAgICAweDRFMzMsIDB4NEUzNSwgMHg0RTM3LCAweDRFM0MsIDB4NEU0MCwgMHg0RTQxLCAweDRFNDIsIDB4NEU0NCwKKyAgICAweDRFNDYsIDB4NEU0QSwgMHg0RTUxLCAweDRFNTUsIDB4NEU1NywgMHg0RTVBLCAweDRFNUIsIDB4NEU2MiwKKyAgICAweDRFNjMsIDB4NEU2NCwgMHg0RTY1LCAweDRFNjcsIDB4NEU2OCwgMHg0RTZBLCAweDRFNkIsIDB4NEU2QywKKyAgICAweDRFNkQsIDB4NEU2RSwgMHg0RTZGLCAweDRFNzIsIDB4NEU3NCwgMHg0RTc1LCAweDRFNzYsIDB4NEU3NywKKyAgICAweDRFNzgsIDB4NEU3OSwgMHg0RTdBLCAweDRFN0IsIDB4NEU3QywgMHg0RTdELCAweDRFN0YsIDB4NEU4MCwKKyAgICAweDRFODEsIDB4NEU4MywgMHg0RTg0LCAweDRFODUsIDB4NEU4NywgMHg0RThBLCAweDRFOTAsIDB4NEU5NiwKKyAgICAweDRFOTcsIDB4NEU5OSwgMHg0RTlDLCAweDRFOUQsIDB4NEVBMywgMHg0RUFBLCAweDRFQUYsIDB4NEVCMCwKKyAgICAweDRFQjEsIDB4NEVCNCwgMHg0RUI2LCAweDRFQjcsIDB4NEVCOCwgMHg0RUI5LCAweDRFQkMsIDB4NEVCRCwKKyAgICAweDRFQkUsIDB4NEVDOCwgMHg0RUNDLCAweDRFQ0YsIDB4NEVEMCwgMHg0RUQyLCAweDRFREEsIDB4NEVEQiwKKyAgICAweDRFREMsIDB4NEVFMCwgMHg0RUUyLCAweDRFRTYsIDB4NEVFNywgMHg0RUU5LCAweDRFRUQsIDB4NEVFRSwKKyAgICAweDRFRUYsIDB4NEVGMSwgMHg0RUY0LCAweDRFRjgsIDB4NEVGOSwgMHg0RUZBLCAweDRFRkMsIDB4NEVGRSwKKyAgICAweDRGMDAsIDB4NEYwMiwgMHg0RjAzLCAweDRGMDQsIDB4NEYwNSwgMHg0RjA2LCAweDRGMDcsIDB4NEYwOCwKKyAgICAweDRGMEIsIDB4NEYwQywgMHg0RjEyLCAweDRGMTMsIDB4NEYxNCwgMHg0RjE1LCAweDRGMTYsIDB4NEYxQywKKyAgICAweDRGMUQsIDB4NEYyMSwgMHg0RjIzLCAweDRGMjgsIDB4NEYyOSwgMHg0RjJDLCAweDRGMkQsIDB4NEYyRSwKKyAgICAweDRGMzEsIDB4NEYzMywgMHg0RjM1LCAweDRGMzcsIDB4NEYzOSwgMHg0RjNCLCAweDRGM0UsIDB4NEYzRiwKKyAgICAweDRGNDAsIDB4NEY0MSwgMHg0RjQyLCAweDRGNDQsIDB4NEY0NSwgMHg0RjQ3LCAweDRGNDgsIDB4NEY0OSwKKyAgICAweDRGNEEsIDB4NEY0QiwgMHg0RjRDLCAweDRGNTIsIDB4NEY1NCwgMHg0RjU2LCAweDRGNjEsIDB4NEY2MiwKKyAgICAweDRGNjYsIDB4NEY2OCwgMHg0RjZBLCAweDRGNkIsIDB4NEY2RCwgMHg0RjZFLCAweDRGNzEsIDB4NEY3MiwKKyAgICAweDRGNzUsIDB4NEY3NywgMHg0Rjc4LCAweDRGNzksIDB4NEY3QSwgMHg0RjdELCAweDRGODAsIDB4NEY4MSwKKyAgICAweDRGODIsIDB4NEY4NSwgMHg0Rjg3LCAweDRGOEEsIDB4NEY4QywgMHg0RjhFLCAweDRGOTAsIDB4NEY5MiwKKyAgICAweDRGOTMsIDB4NEY5NSwgMHg0Rjk4LCAweDRGOTksIDB4NEY5QSwgMHg0RjlDLCAweDRGOUUsIDB4NEY5RiwKKyAgICAweDRGQTEsIDB4NEZBMiwgMHg0RkE0LCAweDRGQUIsIDB4NEZBRCwgMHg0RkIwLCAweDRGQjEsIDB4NEZCMiwKKyAgICAweDRGQjMsIDB4NEZCNCwgMHg0RkI2LCAweDRGQjcsIDB4NEZCOCwgMHg0RkI5LCAweDRGQkEsIDB4NEZCQiwKKyAgICAweDRGQkMsIDB4NEZCRCwgMHg0RkJFLCAweDRGQzAsIDB4NEZDMSwgMHg0RkM2LCAweDRGQzcsIDB4NEZDOCwKKyAgICAweDRGQzksIDB4NEZDQiwgMHg0RkNDLCAweDRGQ0QsIDB4NEZEMiwgMHg0RkQzLCAweDRGRDQsIDB4NEZENSwKKyAgICAweDRGRDYsIDB4NEZEOSwgMHg0RkRCLCAweDRGRTIsIDB4NEZFNCwgMHg0RkU1LCAweDRGRTcsIDB4NEZFQiwKKyAgICAweDRGRUMsIDB4NEZGMCwgMHg0RkYyLCAweDRGRjQsIDB4NEZGNSwgMHg0RkY2LCAweDRGRjcsIDB4NEZGOSwKKyAgICAweDRGRkIsIDB4NEZGQywgMHg0RkZELCAweDRGRkYsIDB4NTAwMSwgMHg1MDAyLCAweDUwMDMsIDB4NTAwNCwKKyAgICAweDUwMDUsIDB4NTAwNywgMHg1MDA4LCAweDUwMEEsIDB4NTAwRSwgMHg1MDEwLCAweDUwMTMsIDB4NTAxNSwKKyAgICAweDUwMTYsIDB4NTAxNywgMHg1MDFCLCAweDUwMUQsIDB4NTAxRSwgMHg1MDIwLCAweDUwMjIsIDB4NTAyMywKKyAgICAweDUwMjQsIDB4NTAyNywgMHg1MDJGLCAweDUwMzAsIDB4NTAzMSwgMHg1MDMyLCAweDUwMzMsIDB4NTAzNCwKKyAgICAweDUwMzUsIDB4NTAzNiwgMHg1MDM3LCAweDUwMzgsIDB4NTAzOSwgMHg1MDNCLCAweDUwM0QsIDB4NTAzRiwKKyAgICAweDUwNDAsIDB4NTA0MSwgMHg1MDQyLCAweDUwNDQsIDB4NTA0NSwgMHg1MDQ2LCAweDUwNEEsIDB4NTA0QiwKKyAgICAweDUwNEQsIDB4NTA1MCwgMHg1MDUxLCAweDUwNTIsIDB4NTA1MywgMHg1MDU0LCAweDUwNTYsIDB4NTA1NywKKyAgICAweDUwNTgsIDB4NTA1OSwgMHg1MDVCLCAweDUwNUQsIDB4NTA1RSwgMHg1MDVGLCAweDUwNjAsIDB4NTA2MSwKKyAgICAweDUwNjIsIDB4NTA2MywgMHg1MDY0LCAweDUwNjYsIDB4NTA2NywgMHg1MDY4LCAweDUwNjksIDB4NTA2QSwKKyAgICAweDUwNkIsIDB4NTA2RCwgMHg1MDZFLCAweDUwNkYsIDB4NTA3MCwgMHg1MDcxLCAweDUwNzIsIDB4NTA3MywKKyAgICAweDUwNzgsIDB4NTA3OSwgMHg1MDdBLCAweDUwN0MsIDB4NTA3RCwgMHg1MDgxLCAweDUwODIsIDB4NTA4MywKKyAgICAweDUwODQsIDB4NTA4NiwgMHg1MDg3LCAweDUwODksIDB4NTA4QSwgMHg1MDhCLCAweDUwOEMsIDB4NTA4RSwKKyAgICAweDUwOEYsIDB4NTA5MCwgMHg1MDkxLCAweDUwOTIsIDB4NTA5MywgMHg1MDk0LCAweDUwOTUsIDB4NTA5NywKKyAgICAweDUwOUEsIDB4NTA5QiwgMHg1MDlDLCAweDUwOUQsIDB4NTA5RSwgMHg1MDlGLCAweDUwQTAsIDB4NTBBMSwKKyAgICAweDUwQTQsIDB4NTBBNiwgMHg1MEFBLCAweDUwQUIsIDB4NTBBRSwgMHg1MEFGLCAweDUwQjAsIDB4NTBCMSwKKyAgICAweDUwQjYsIDB4NTBCOCwgMHg1MEI5LCAweDUwQkMsIDB4NTBCRCwgMHg1MEJGLCAweDUwQzAsIDB4NTBDMSwKKyAgICAweDUwQzMsIDB4NTBDNCwgMHg1MEM2LCAweDUwQzcsIDB4NTBDOCwgMHg1MENBLCAweDUwQ0IsIDB4NTBDQywKKyAgICAweDUwQ0QsIDB4NTBDRSwgMHg1MEQwLCAweDUwRDIsIDB4NTBEMywgMHg1MEQ0LCAweDUwRDcsIDB4NTBEOCwKKyAgICAweDUwRDksIDB4NTBEQiwgMHg1MERDLCAweDUwREQsIDB4NTBERiwgMHg1MEUwLCAweDUwRTEsIDB4NTBFMiwKKyAgICAweDUwRTMsIDB4NTBFNCwgMHg1MEU5LCAweDUwRUEsIDB4NTBFQiwgMHg1MEVGLCAweDUwRjAsIDB4NTBGMSwKKyAgICAweDUwRjIsIDB4NTBGNCwgMHg1MEY2LCAweDUwRjcsIDB4NTBGOCwgMHg1MEZBLCAweDUwRkMsIDB4NTBGRCwKKyAgICAweDUwRkUsIDB4NTBGRiwgMHg1MTAxLCAweDUxMDMsIDB4NTEwNSwgMHg1MTBBLCAweDUxMEMsIDB4NTEwRCwKKyAgICAweDUxMEUsIDB4NTEwRiwgMHg1MTExLCAweDUxMTMsIDB4NTExNiwgMHg1MTE3LCAweDUxMTksIDB4NTExQSwKKyAgICAweDUxMUIsIDB4NTExQywgMHg1MTFELCAweDUxMUUsIDB4NTEyMCwgMHg1MTIyLCAweDUxMjMsIDB4NTEyNCwKKyAgICAweDUxMjUsIDB4NTEyNiwgMHg1MTI3LCAweDUxMjgsIDB4NTEyOSwgMHg1MTJCLCAweDUxMkMsIDB4NTEyRCwKKyAgICAweDUxMkUsIDB4NTEyRiwgMHg1MTMwLCAweDUxMzEsIDB4NTEzMywgMHg1MTM0LCAweDUxMzUsIDB4NTEzNiwKKyAgICAweDUxMzgsIDB4NTEzOSwgMHg1MTNELCAweDUxM0UsIDB4NTE0MiwgMHg1MTQ3LCAweDUxNEEsIDB4NTE0QywKKyAgICAweDUxNEUsIDB4NTE0RiwgMHg1MTUwLCAweDUxNTMsIDB4NTE1NywgMHg1MTU4LCAweDUxNTksIDB4NTE1QiwKKyAgICAweDUxNUQsIDB4NTE1RSwgMHg1MTVGLCAweDUxNjAsIDB4NTE2MSwgMHg1MTYzLCAweDUxNjQsIDB4NTE2NiwKKyAgICAweDUxNjcsIDB4NTE2QSwgMHg1MTZGLCAweDUxNzIsIDB4NTE3QSwgMHg1MTdFLCAweDUxN0YsIDB4NTE4MywKKyAgICAweDUxODQsIDB4NTE4NiwgMHg1MTg3LCAweDUxOEEsIDB4NTE4QiwgMHg1MThFLCAweDUxOEYsIDB4NTE5MCwKKyAgICAweDUxOTEsIDB4NTE5MywgMHg1MTk0LCAweDUxOTgsIDB4NTE5QSwgMHg1MTlELCAweDUxOUUsIDB4NTE5RiwKKyAgICAweDUxQTEsIDB4NTFBMywgMHg1MUE2LCAweDUxQTcsIDB4NTFBOCwgMHg1MUE5LCAweDUxQUEsIDB4NTFBRCwKKyAgICAweDUxQUUsIDB4NTFCNCwgMHg1MUI4LCAweDUxQjksIDB4NTFCQSwgMHg1MUJFLCAweDUxQkYsIDB4NTFDMSwKKyAgICAweDUxQzIsIDB4NTFDMywgMHg1MUM1LCAweDUxQzgsIDB4NTFDQSwgMHg1MUNFLCAweDUxRDAsIDB4NTFEMiwKKyAgICAweDUxRDMsIDB4NTFENCwgMHg1MUQ1LCAweDUxRDYsIDB4NTFENywgMHg1MUQ4LCAweDUxRDksIDB4NTFEQSwKKyAgICAweDUxREMsIDB4NTFERSwgMHg1MURGLCAweDUxRTIsIDB4NTFFMywgMHg1MUU1LCAweDUxRTYsIDB4NTFFNywKKyAgICAweDUxRTgsIDB4NTFFOSwgMHg1MUVBLCAweDUxRUMsIDB4NTFFRSwgMHg1MUYyLCAweDUxRjQsIDB4NTFGNywKKyAgICAweDUxRkUsIDB4NTIwNCwgMHg1MjA1LCAweDUyMDksIDB4NTIwQiwgMHg1MjBDLCAweDUyMEYsIDB4NTIxMCwKKyAgICAweDUyMTMsIDB4NTIxNCwgMHg1MjE1LCAweDUyMUMsIDB4NTIxRSwgMHg1MjFGLCAweDUyMjEsIDB4NTIyMiwKKyAgICAweDUyMjMsIDB4NTIyNSwgMHg1MjI2LCAweDUyMjcsIDB4NTIyQSwgMHg1MjJDLCAweDUyMkYsIDB4NTIzMSwKKyAgICAweDUyMzIsIDB4NTIzNCwgMHg1MjM1LCAweDUyM0MsIDB4NTIzRSwgMHg1MjQ1LCAweDUyNDYsIDB4NTI0OCwKKyAgICAweDUyNDksIDB4NTI0RSwgMHg1MjRGLCAweDUyNTIsIDB4NTI1MywgMHg1MjU1LCAweDUyNTcsIDB4NTI1OCwKKyAgICAweDUyNTksIDB4NTI1QSwgMHg1MjVELCAweDUyNUYsIDB4NTI2MCwgMHg1MjYyLCAweDUyNjMsIDB4NTI2NCwKKyAgICAweDUyNjYsIDB4NTI2OCwgMHg1MjZCLCAweDUyNkMsIDB4NTI2RCwgMHg1MjcwLCAweDUyNzEsIDB4NTI3MywKKyAgICAweDUyNzYsIDB4NTI3NywgMHg1Mjc4LCAweDUyNzksIDB4NTI3QSwgMHg1MjdCLCAweDUyN0MsIDB4NTI3RSwKKyAgICAweDUyODAsIDB4NTI4NCwgMHg1Mjg1LCAweDUyODYsIDB4NTI4QiwgMHg1MjhFLCAweDUyOEYsIDB4NTI5MiwKKyAgICAweDUyOTQsIDB4NTI5NSwgMHg1Mjk2LCAweDUyOTcsIDB4NTI5OCwgMHg1Mjk5LCAweDUyOUEsIDB4NTI5QywKKyAgICAweDUyQTQsIDB4NTJBNSwgMHg1MkE2LCAweDUyQTcsIDB4NTJBRSwgMHg1MkFGLCAweDUyQjAsIDB4NTJCNCwKKyAgICAweDUyQjUsIDB4NTJCNiwgMHg1MkI3LCAweDUyQjgsIDB4NTJCOSwgMHg1MkJBLCAweDUyQkIsIDB4NTJCQywKKyAgICAweDUyQkQsIDB4NTJDMCwgMHg1MkMyLCAweDUyQzQsIDB4NTJDNSwgMHg1MkM2LCAweDUyQzgsIDB4NTJDQSwKKyAgICAweDUyQ0MsIDB4NTJDRCwgMHg1MkNFLCAweDUyQ0YsIDB4NTJEMSwgMHg1MkQzLCAweDUyRDQsIDB4NTJENywKKyAgICAweDUyREEsIDB4NTJEQywgMHg1MkUwLCAweDUyRTEsIDB4NTJFMywgMHg1MkU1LCAweDUyRTYsIDB4NTJFNywKKyAgICAweDUyRTgsIDB4NTJFOSwgMHg1MkVBLCAweDUyRUIsIDB4NTJFQywgMHg1MkVELCAweDUyRUUsIDB4NTJFRiwKKyAgICAweDUyRjIsIDB4NTJGMywgMHg1MkY0LCAweDUyRjYsIDB4NTJGNywgMHg1MkZCLCAweDUyRkMsIDB4NTJGRCwKKyAgICAweDUzMDEsIDB4NTMwMiwgMHg1MzAzLCAweDUzMDQsIDB4NTMwNywgMHg1MzA5LCAweDUzMEEsIDB4NTMwQiwKKyAgICAweDUzMEMsIDB4NTMwRSwgMHg1MzExLCAweDUzMTIsIDB4NTMxMywgMHg1MzE0LCAweDUzMTgsIDB4NTMxQiwKKyAgICAweDUzMUMsIDB4NTMxRSwgMHg1MzFGLCAweDUzMjIsIDB4NTMyNCwgMHg1MzI1LCAweDUzMjcsIDB4NTMyOCwKKyAgICAweDUzMjksIDB4NTMyQiwgMHg1MzJDLCAweDUzMzAsIDB4NTMzMiwgMHg1MzMzLCAweDUzMzQsIDB4NTMzNSwKKyAgICAweDUzMzYsIDB4NTMzNywgMHg1MzM4LCAweDUzM0MsIDB4NTMzRCwgMHg1MzQyLCAweDUzNDQsIDB4NTM0NiwKKyAgICAweDUzNEIsIDB4NTM0QywgMHg1MzRELCAweDUzNTAsIDB4NTM1OCwgMHg1MzU5LCAweDUzNUIsIDB4NTM1RCwKKyAgICAweDUzNjUsIDB4NTM2OCwgMHg1MzZBLCAweDUzNkMsIDB4NTM2RCwgMHg1MzcyLCAweDUzNzYsIDB4NTM3OSwKKyAgICAweDUzN0IsIDB4NTM3QywgMHg1MzdELCAweDUzN0UsIDB4NTM4MCwgMHg1MzgxLCAweDUzODMsIDB4NTM4NywKKyAgICAweDUzODgsIDB4NTM4QSwgMHg1MzhFLCAweDUzOEYsIDB4NTM5MCwgMHg1MzkxLCAweDUzOTIsIDB4NTM5MywKKyAgICAweDUzOTQsIDB4NTM5NiwgMHg1Mzk3LCAweDUzOUIsIDB4NTM5QywgMHg1MzlFLCAweDUzQTEsIDB4NTNBNCwKKyAgICAweDUzQTcsIDB4NTNBQSwgMHg1M0FCLCAweDUzQUMsIDB4NTNBRiwgMHg1M0IwLCAweDUzQjEsIDB4NTNCMywKKyAgICAweDUzQjUsIDB4NTNCNywgMHg1M0I4LCAweDUzQjksIDB4NTNCQSwgMHg1M0JDLCAweDUzQkQsIDB4NTNCRSwKKyAgICAweDUzQzAsIDB4NTNDNCwgMHg1M0M1LCAweDUzQzYsIDB4NTNDNywgMHg1M0NFLCAweDUzQ0YsIDB4NTNEMCwKKyAgICAweDUzRDIsIDB4NTNEMywgMHg1M0Q1LCAweDUzREEsIDB4NTNEQywgMHg1M0RELCAweDUzREUsIDB4NTNFMSwKKyAgICAweDUzRTcsIDB4NTNGNCwgMHg1M0ZBLCAweDUzRkUsIDB4NTNGRiwgMHg1NDAwLCAweDU0MDIsIDB4NTQwNSwKKyAgICAweDU0MDcsIDB4NTQwQiwgMHg1NDE0LCAweDU0MTgsIDB4NTQxOSwgMHg1NDFBLCAweDU0MUMsIDB4NTQyMiwKKyAgICAweDU0MjQsIDB4NTQyNSwgMHg1NDJBLCAweDU0MzAsIDB4NTQzMywgMHg1NDM2LCAweDU0MzcsIDB4NTQzQSwKKyAgICAweDU0M0QsIDB4NTQzRiwgMHg1NDQxLCAweDU0NDIsIDB4NTQ0NCwgMHg1NDQ1LCAweDU0NDcsIDB4NTQ0OSwKKyAgICAweDU0NEMsIDB4NTQ0RCwgMHg1NDRFLCAweDU0NEYsIDB4NTQ1MSwgMHg1NDVBLCAweDU0NUQsIDB4NTQ1RSwKKyAgICAweDU0NUYsIDB4NTQ2MCwgMHg1NDYxLCAweDU0NjMsIDB4NTQ2NSwgMHg1NDY3LCAweDU0NjksIDB4NTQ2QSwKKyAgICAweDU0NkIsIDB4NTQ2QywgMHg1NDZELCAweDU0NkUsIDB4NTQ2RiwgMHg1NDcwLCAweDU0NzQsIDB4NTQ3OSwKKyAgICAweDU0N0EsIDB4NTQ3RSwgMHg1NDdGLCAweDU0ODEsIDB4NTQ4MywgMHg1NDg1LCAweDU0ODcsIDB4NTQ4OCwKKyAgICAweDU0ODksIDB4NTQ4QSwgMHg1NDhELCAweDU0OTEsIDB4NTQ5MywgMHg1NDk3LCAweDU0OTgsIDB4NTQ5QywKKyAgICAweDU0OUUsIDB4NTQ5RiwgMHg1NEEwLCAweDU0QTEsIDB4NTRBMiwgMHg1NEE1LCAweDU0QUUsIDB4NTRCMCwKKyAgICAweDU0QjIsIDB4NTRCNSwgMHg1NEI2LCAweDU0QjcsIDB4NTRCOSwgMHg1NEJBLCAweDU0QkUsIDB4NTRDMywKKyAgICAweDU0QzUsIDB4NTRDQSwgMHg1NENCLCAweDU0RDYsIDB4NTREOCwgMHg1NERCLCAweDU0RTAsIDB4NTRFMiwKKyAgICAweDU0RTMsIDB4NTRFNCwgMHg1NEVCLCAweDU0RUMsIDB4NTRFRiwgMHg1NEYwLCAweDU0RjEsIDB4NTRGNCwKKyAgICAweDU0RjUsIDB4NTRGNiwgMHg1NEY3LCAweDU0RjgsIDB4NTRGOSwgMHg1NEZCLCAweDU0RkUsIDB4NTUwMCwKKyAgICAweDU1MDIsIDB4NTUwMywgMHg1NTA1LCAweDU1MDgsIDB4NTUwQSwgMHg1NTBCLCAweDU1MEMsIDB4NTUwRCwKKyAgICAweDU1MEUsIDB4NTUxMiwgMHg1NTEzLCAweDU1MTUsIDB4NTUxNiwgMHg1NTE3LCAweDU1MTgsIDB4NTUxOSwKKyAgICAweDU1MUEsIDB4NTUxQywgMHg1NTFELCAweDU1MUUsIDB4NTUxRiwgMHg1NTIxLCAweDU1MjUsIDB4NTUyNiwKKyAgICAweDU1MjgsIDB4NTUyOSwgMHg1NTJCLCAweDU1MkQsIDB4NTUzMiwgMHg1NTM0LCAweDU1MzUsIDB4NTUzNiwKKyAgICAweDU1MzgsIDB4NTUzOSwgMHg1NTNBLCAweDU1M0IsIDB4NTUzRCwgMHg1NTQwLCAweDU1NDIsIDB4NTU0NSwKKyAgICAweDU1NDcsIDB4NTU0OCwgMHg1NTRCLCAweDU1NEMsIDB4NTU0RCwgMHg1NTRFLCAweDU1NTEsIDB4NTU1MiwKKyAgICAweDU1NTQsIDB4NTU1NywgMHg1NTU4LCAweDU1NTksIDB4NTU1QSwgMHg1NTVCLCAweDU1NUQsIDB4NTU1RiwKKyAgICAweDU1NjAsIDB4NTU2MiwgMHg1NTYzLCAweDU1NjgsIDB4NTU2OSwgMHg1NTZCLCAweDU1NkYsIDB4NTU3MCwKKyAgICAweDU1NzEsIDB4NTU3MiwgMHg1NTczLCAweDU1NzQsIDB4NTU3OSwgMHg1NTdBLCAweDU1N0QsIDB4NTU3RiwKKyAgICAweDU1ODUsIDB4NTU4NiwgMHg1NThDLCAweDU1OEQsIDB4NTU4RSwgMHg1NTkwLCAweDU1OTIsIDB4NTU5MywKKyAgICAweDU1OTUsIDB4NTU5NiwgMHg1NTk3LCAweDU1OUEsIDB4NTU5QiwgMHg1NTlFLCAweDU1QTAsIDB4NTVBMSwKKyAgICAweDU1QTIsIDB4NTVBMywgMHg1NUE0LCAweDU1QTUsIDB4NTVBNiwgMHg1NUE4LCAweDU1QTksIDB4NTVBQiwKKyAgICAweDU1QUQsIDB4NTVBRiwgMHg1NUIwLCAweDU1QjQsIDB4NTVCNiwgMHg1NUI4LCAweDU1QkEsIDB4NTVCQywKKyAgICAweDU1QkYsIDB4NTVDMCwgMHg1NUMxLCAweDU1QzIsIDB4NTVDMywgMHg1NUM4LCAweDU1Q0EsIDB4NTVDQiwKKyAgICAweDU1Q0YsIDB4NTVEMCwgMHg1NUQ1LCAweDU1RDcsIDB4NTVEOCwgMHg1NUQ5LCAweDU1REIsIDB4NTVERSwKKyAgICAweDU1RTAsIDB4NTVFMiwgMHg1NUU3LCAweDU1RUQsIDB4NTVFRSwgMHg1NUYwLCAweDU1RjEsIDB4NTVGNCwKKyAgICAweDU1RjgsIDB4NTVGOSwgMHg1NUZBLCAweDU1RkIsIDB4NTVGQywgMHg1NUZGLCAweDU2MDIsIDB4NTYwMywKKyAgICAweDU2MDQsIDB4NTYwNSwgMHg1NjA3LCAweDU2MEEsIDB4NTYwQiwgMHg1NjEwLCAweDU2MTEsIDB4NTYxMiwKKyAgICAweDU2MTMsIDB4NTYxNSwgMHg1NjE5LCAweDU2MUEsIDB4NTYxRCwgMHg1NjIwLCAweDU2MjEsIDB4NTYyMiwKKyAgICAweDU2MjUsIDB4NTYyNiwgMHg1NjI4LCAweDU2MkEsIDB4NTYyQiwgMHg1NjMzLCAweDU2MzcsIDB4NTYzQSwKKyAgICAweDU2M0MsIDB4NTYzRCwgMHg1NjNFLCAweDU2NDAsIDB4NTY0MiwgMHg1NjQzLCAweDU2NDQsIDB4NTY0NSwKKyAgICAweDU2NDYsIDB4NTY0NywgMHg1NjQ4LCAweDU2NDksIDB4NTY0QSwgMHg1NjRCLCAweDU2NEYsIDB4NTY1MCwKKyAgICAweDU2NTEsIDB4NTY1MiwgMHg1NjUzLCAweDU2NTUsIDB4NTY1NiwgMHg1NjVBLCAweDU2NUIsIDB4NTY1RSwKKyAgICAweDU2NUYsIDB4NTY2MSwgMHg1NjYzLCAweDU2NjcsIDB4NTY2RCwgMHg1NjZFLCAweDU2NzAsIDB4NTY3MywKKyAgICAweDU2NzUsIDB4NTY3NywgMHg1NjdBLCAweDU2N0QsIDB4NTY3RSwgMHg1NjdGLCAweDU2ODEsIDB4NTY4MiwKKyAgICAweDU2ODMsIDB4NTY4NCwgMHg1Njg4LCAweDU2ODksIDB4NTY4QSwgMHg1NjhCLCAweDU2OEQsIDB4NTY5MCwKKyAgICAweDU2OTEsIDB4NTY5MiwgMHg1Njk0LCAweDU2OTYsIDB4NTY5NywgMHg1Njk4LCAweDU2OUEsIDB4NTY5QiwKKyAgICAweDU2OUMsIDB4NTY5RCwgMHg1NjlFLCAweDU2OUYsIDB4NTZBMCwgMHg1NkExLCAweDU2QTIsIDB4NTZBNCwKKyAgICAweDU2QTUsIDB4NTZBNywgMHg1NkE5LCAweDU2QUEsIDB4NTZBQiwgMHg1NkFDLCAweDU2QUQsIDB4NTZCMCwKKyAgICAweDU2QjEsIDB4NTZCMiwgMHg1NkI1LCAweDU2QjgsIDB4NTZCOSwgMHg1NkJBLCAweDU2QkIsIDB4NTZCRCwKKyAgICAweDU2QkUsIDB4NTZCRiwgMHg1NkMzLCAweDU2QzQsIDB4NTZDNiwgMHg1NkM3LCAweDU2Q0IsIDB4NTZDRCwKKyAgICAweDU2Q0UsIDB4NTZDRiwgMHg1NkQwLCAweDU2RDIsIDB4NTZEMywgMHg1NkQ1LCAweDU2RDYsIDB4NTZEOCwKKyAgICAweDU2RDksIDB4NTZEQywgMHg1NkUzLCAweDU2RTUsIDB4NTZFNiwgMHg1NkU3LCAweDU2RTgsIDB4NTZFOSwKKyAgICAweDU2RUEsIDB4NTZFQywgMHg1NkVFLCAweDU2RUYsIDB4NTZGMiwgMHg1NkYzLCAweDU2RjYsIDB4NTZGNywKKyAgICAweDU2RjgsIDB4NTZGQiwgMHg1NkZDLCAweDU3MDAsIDB4NTcwMSwgMHg1NzAyLCAweDU3MDUsIDB4NTcwQywKKyAgICAweDU3MEUsIDB4NTcwRiwgMHg1NzEwLCAweDU3MTEsIDB4NTcxNCwgMHg1NzE1LCAweDU3MTcsIDB4NTcxOSwKKyAgICAweDU3MUEsIDB4NTcxQiwgMHg1NzFELCAweDU3MUUsIDB4NTcyMCwgMHg1NzIxLCAweDU3MjIsIDB4NTcyNCwKKyAgICAweDU3MjUsIDB4NTcyNiwgMHg1NzI3LCAweDU3MkIsIDB4NTczMSwgMHg1NzMyLCAweDU3MzQsIDB4NTczNSwKKyAgICAweDU3MzYsIDB4NTczNywgMHg1NzM4LCAweDU3M0MsIDB4NTczRCwgMHg1NzNGLCAweDU3NDEsIDB4NTc0MywKKyAgICAweDU3NDQsIDB4NTc0NSwgMHg1NzQ2LCAweDU3NDgsIDB4NTc0OSwgMHg1NzRCLCAweDU3NTIsIDB4NTc1MywKKyAgICAweDU3NTQsIDB4NTc1NSwgMHg1NzU2LCAweDU3NTgsIDB4NTc1OSwgMHg1NzYyLCAweDU3NjMsIDB4NTc2NSwKKyAgICAweDU3NjcsIDB4NTc2QywgMHg1NzZFLCAweDU3NzAsIDB4NTc3MSwgMHg1NzcyLCAweDU3NzQsIDB4NTc3NSwKKyAgICAweDU3NzgsIDB4NTc3OSwgMHg1NzdBLCAweDU3N0QsIDB4NTc3RSwgMHg1NzdGLCAweDU3ODAsIDB4NTc4MSwKKyAgICAweDU3ODcsIDB4NTc4OCwgMHg1Nzg5LCAweDU3OEEsIDB4NTc4RCwgMHg1NzhFLCAweDU3OEYsIDB4NTc5MCwKKyAgICAweDU3OTEsIDB4NTc5NCwgMHg1Nzk1LCAweDU3OTYsIDB4NTc5NywgMHg1Nzk4LCAweDU3OTksIDB4NTc5QSwKKyAgICAweDU3OUMsIDB4NTc5RCwgMHg1NzlFLCAweDU3OUYsIDB4NTdBNSwgMHg1N0E4LCAweDU3QUEsIDB4NTdBQywKKyAgICAweDU3QUYsIDB4NTdCMCwgMHg1N0IxLCAweDU3QjMsIDB4NTdCNSwgMHg1N0I2LCAweDU3QjcsIDB4NTdCOSwKKyAgICAweDU3QkEsIDB4NTdCQiwgMHg1N0JDLCAweDU3QkQsIDB4NTdCRSwgMHg1N0JGLCAweDU3QzAsIDB4NTdDMSwKKyAgICAweDU3QzQsIDB4NTdDNSwgMHg1N0M2LCAweDU3QzcsIDB4NTdDOCwgMHg1N0M5LCAweDU3Q0EsIDB4NTdDQywKKyAgICAweDU3Q0QsIDB4NTdEMCwgMHg1N0QxLCAweDU3RDMsIDB4NTdENiwgMHg1N0Q3LCAweDU3REIsIDB4NTdEQywKKyAgICAweDU3REUsIDB4NTdFMiwgMHg1N0UzLCAweDU3RTUsIDB4NTdFNiwgMHg1N0U3LCAweDU3RTgsIDB4NTdFOSwKKyAgICAweDU3RUEsIDB4NTdFQiwgMHg1N0VDLCAweDU3RUUsIDB4NTdGMCwgMHg1N0YxLCAweDU3RjIsIDB4NTdGMywKKyAgICAweDU3RjUsIDB4NTdGNiwgMHg1N0ZCLCAweDU3RkMsIDB4NTdGRSwgMHg1N0ZGLCAweDU4MDEsIDB4NTgwMywKKyAgICAweDU4MDQsIDB4NTgwOCwgMHg1ODA5LCAweDU4MEMsIDB4NTgwRSwgMHg1ODBGLCAweDU4MTAsIDB4NTgxMiwKKyAgICAweDU4MTMsIDB4NTgxNCwgMHg1ODE3LCAweDU4MTgsIDB4NTgxQSwgMHg1ODFCLCAweDU4MUMsIDB4NTgxRiwKKyAgICAweDU4MjIsIDB4NTgyMywgMHg1ODI1LCAweDU4MjYsIDB4NTgyNywgMHg1ODI4LCAweDU4MjksIDB4NTgyQiwKKyAgICAweDU4MkMsIDB4NTgyRCwgMHg1ODJFLCAweDU4MzIsIDB4NTgzMywgMHg1ODM2LCAweDU4MzcsIDB4NTgzOCwKKyAgICAweDU4MzksIDB4NTgzQSwgMHg1ODNCLCAweDU4M0MsIDB4NTgzRCwgMHg1ODNFLCAweDU4M0YsIDB4NTg0MCwKKyAgICAweDU4NDEsIDB4NTg0MiwgMHg1ODQzLCAweDU4NDUsIDB4NTg0NiwgMHg1ODQ3LCAweDU4NDgsIDB4NTg0OSwKKyAgICAweDU4NEUsIDB4NTg1MCwgMHg1ODUzLCAweDU4NTUsIDB4NTg1NiwgMHg1ODU5LCAweDU4NUEsIDB4NTg1QiwKKyAgICAweDU4NUMsIDB4NTg1RCwgMHg1ODVGLCAweDU4NjAsIDB4NTg2MSwgMHg1ODYzLCAweDU4NjYsIDB4NTg2NywKKyAgICAweDU4NjgsIDB4NTg2OSwgMHg1ODZBLCAweDU4NkQsIDB4NTg2RSwgMHg1ODZGLCAweDU4NzAsIDB4NTg3MSwKKyAgICAweDU4NzIsIDB4NTg3MywgMHg1ODc0LCAweDU4NzYsIDB4NTg3NywgMHg1ODc4LCAweDU4N0EsIDB4NTg3QiwKKyAgICAweDU4N0MsIDB4NTg3RCwgMHg1ODdGLCAweDU4ODIsIDB4NTg4NCwgMHg1ODg2LCAweDU4ODcsIDB4NTg4OCwKKyAgICAweDU4OEIsIDB4NTg4QywgMHg1ODhELCAweDU4OEUsIDB4NTg4RiwgMHg1ODkwLCAweDU4OTEsIDB4NTg5NCwKKyAgICAweDU4OTUsIDB4NTg5NiwgMHg1ODk3LCAweDU4OTgsIDB4NTg5QiwgMHg1ODlELCAweDU4QTAsIDB4NThBMSwKKyAgICAweDU4QTIsIDB4NThBMywgMHg1OEE0LCAweDU4QTUsIDB4NThBNiwgMHg1OEE3LCAweDU4QUEsIDB4NThBQiwKKyAgICAweDU4QUMsIDB4NThBRCwgMHg1OEFGLCAweDU4QjAsIDB4NThCMSwgMHg1OEIyLCAweDU4QjQsIDB4NThCNSwKKyAgICAweDU4QjYsIDB4NThCNywgMHg1OEI4LCAweDU4QjksIDB4NThCQSwgMHg1OEJELCAweDU4QkYsIDB4NThDMCwKKyAgICAweDU4QzIsIDB4NThDMywgMHg1OEM0LCAweDU4QzYsIDB4NThDOCwgMHg1OEM5LCAweDU4Q0EsIDB4NThDQiwKKyAgICAweDU4Q0MsIDB4NThDRCwgMHg1OENFLCAweDU4Q0YsIDB4NThEMCwgMHg1OEQyLCAweDU4RDQsIDB4NThENiwKKyAgICAweDU4RDcsIDB4NThEQiwgMHg1OERDLCAweDU4REQsIDB4NThFMSwgMHg1OEUzLCAweDU4RTUsIDB4NThFNiwKKyAgICAweDU4RTcsIDB4NThFOCwgMHg1OEVBLCAweDU4RUQsIDB4NThGMSwgMHg1OEYyLCAweDU4RjQsIDB4NThGNSwKKyAgICAweDU4RjcsIDB4NThGOCwgMHg1OEZCLCAweDU4RkMsIDB4NThGRSwgMHg1OEZGLCAweDU5MDAsIDB4NTkwMSwKKyAgICAweDU5MDMsIDB4NTkwNSwgMHg1OTA2LCAweDU5MDgsIDB4NTkwOSwgMHg1OTBBLCAweDU5MEIsIDB4NTkwQywKKyAgICAweDU5MEUsIDB4NTkxMCwgMHg1OTExLCAweDU5MTIsIDB4NTkxMywgMHg1OTE3LCAweDU5MTgsIDB4NTkxQiwKKyAgICAweDU5MUQsIDB4NTkxRSwgMHg1OTIwLCAweDU5MjEsIDB4NTkyMywgMHg1OTI2LCAweDU5MjgsIDB4NTkyQywKKyAgICAweDU5MzAsIDB4NTkzMiwgMHg1OTMzLCAweDU5MzUsIDB4NTkzNiwgMHg1OTNCLCAweDU5M0QsIDB4NTkzRiwKKyAgICAweDU5NDAsIDB4NTk0MywgMHg1OTQ1LCAweDU5NDYsIDB4NTk0QSwgMHg1OTRDLCAweDU5NEQsIDB4NTk1MCwKKyAgICAweDU5NTIsIDB4NTk1MywgMHg1OTU5LCAweDU5NUIsIDB4NTk1QywgMHg1OTVELCAweDU5NUUsIDB4NTk1RiwKKyAgICAweDU5NjEsIDB4NTk2MywgMHg1OTY0LCAweDU5NjYsIDB4NTk2NywgMHg1OTY4LCAweDU5NkIsIDB4NTk2RCwKKyAgICAweDU5NkYsIDB4NTk3MCwgMHg1OTcxLCAweDU5NzIsIDB4NTk3NSwgMHg1OTc3LCAweDU5N0EsIDB4NTk3QiwKKyAgICAweDU5N0MsIDB4NTk3RSwgMHg1OTdGLCAweDU5ODAsIDB4NTk4NSwgMHg1OTg5LCAweDU5OEIsIDB4NTk4QywKKyAgICAweDU5OEUsIDB4NTk4RiwgMHg1OTkwLCAweDU5OTEsIDB4NTk5NCwgMHg1OTk1LCAweDU5OTgsIDB4NTk5QSwKKyAgICAweDU5OUIsIDB4NTk5QywgMHg1OTlGLCAweDU5QTAsIDB4NTlBMSwgMHg1OUEyLCAweDU5QTYsIDB4NTlBNywKKyAgICAweDU5QUMsIDB4NTlBRCwgMHg1OUIwLCAweDU5QjEsIDB4NTlCMywgMHg1OUI0LCAweDU5QjUsIDB4NTlCNiwKKyAgICAweDU5QjcsIDB4NTlCOCwgMHg1OUJBLCAweDU5QkMsIDB4NTlCRCwgMHg1OUJGLCAweDU5QzAsIDB4NTlDMSwKKyAgICAweDU5QzIsIDB4NTlDMywgMHg1OUM0LCAweDU5QzUsIDB4NTlDNywgMHg1OUM4LCAweDU5QzksIDB4NTlDQywKKyAgICAweDU5Q0QsIDB4NTlDRSwgMHg1OUNGLCAweDU5RDUsIDB4NTlENiwgMHg1OUQ5LCAweDU5REIsIDB4NTlERSwKKyAgICAweDU5REYsIDB4NTlFMCwgMHg1OUUxLCAweDU5RTIsIDB4NTlFNCwgMHg1OUU2LCAweDU5RTcsIDB4NTlFOSwKKyAgICAweDU5RUEsIDB4NTlFQiwgMHg1OUVELCAweDU5RUUsIDB4NTlFRiwgMHg1OUYwLCAweDU5RjEsIDB4NTlGMiwKKyAgICAweDU5RjMsIDB4NTlGNCwgMHg1OUY1LCAweDU5RjYsIDB4NTlGNywgMHg1OUY4LCAweDU5RkEsIDB4NTlGQywKKyAgICAweDU5RkQsIDB4NTlGRSwgMHg1QTAwLCAweDVBMDIsIDB4NUEwQSwgMHg1QTBCLCAweDVBMEQsIDB4NUEwRSwKKyAgICAweDVBMEYsIDB4NUExMCwgMHg1QTEyLCAweDVBMTQsIDB4NUExNSwgMHg1QTE2LCAweDVBMTcsIDB4NUExOSwKKyAgICAweDVBMUEsIDB4NUExQiwgMHg1QTFELCAweDVBMUUsIDB4NUEyMSwgMHg1QTIyLCAweDVBMjQsIDB4NUEyNiwKKyAgICAweDVBMjcsIDB4NUEyOCwgMHg1QTJBLCAweDVBMkIsIDB4NUEyQywgMHg1QTJELCAweDVBMkUsIDB4NUEyRiwKKyAgICAweDVBMzAsIDB4NUEzMywgMHg1QTM1LCAweDVBMzcsIDB4NUEzOCwgMHg1QTM5LCAweDVBM0EsIDB4NUEzQiwKKyAgICAweDVBM0QsIDB4NUEzRSwgMHg1QTNGLCAweDVBNDIsIDB4NUE0MywgMHg1QTQ0LCAweDVBNDUsIDB4NUE0NywKKyAgICAweDVBNDgsIDB4NUE0QiwgMHg1QTRDLCAweDVBNEQsIDB4NUE0RSwgMHg1QTRGLCAweDVBNTAsIDB4NUE1MSwKKyAgICAweDVBNTIsIDB4NUE1MywgMHg1QTU0LCAweDVBNTYsIDB4NUE1NywgMHg1QTU4LCAweDVBNTksIDB4NUE1QiwKKyAgICAweDVBNUMsIDB4NUE1RCwgMHg1QTVFLCAweDVBNUYsIDB4NUE2MCwgMHg1QTYxLCAweDVBNjMsIDB4NUE2NCwKKyAgICAweDVBNjUsIDB4NUE2OCwgMHg1QTY5LCAweDVBNkIsIDB4NUE2QywgMHg1QTZFLCAweDVBNkYsIDB4NUE3MCwKKyAgICAweDVBNzEsIDB4NUE3MiwgMHg1QTczLCAweDVBNzgsIDB4NUE3OSwgMHg1QTdCLCAweDVBN0MsIDB4NUE3RCwKKyAgICAweDVBN0UsIDB4NUE4MCwgMHg1QTgxLCAweDVBODIsIDB4NUE4MywgMHg1QTg0LCAweDVBODUsIDB4NUE4NiwKKyAgICAweDVBODcsIDB4NUE4OCwgMHg1QTg5LCAweDVBOEEsIDB4NUE4QiwgMHg1QThDLCAweDVBOEQsIDB4NUE4RSwKKyAgICAweDVBOEYsIDB4NUE5MCwgMHg1QTkxLCAweDVBOTMsIDB4NUE5NCwgMHg1QTk1LCAweDVBOTYsIDB4NUE5NywKKyAgICAweDVBOTgsIDB4NUE5OSwgMHg1QTlDLCAweDVBOUQsIDB4NUE5RSwgMHg1QTlGLCAweDVBQTAsIDB4NUFBMSwKKyAgICAweDVBQTIsIDB4NUFBMywgMHg1QUE0LCAweDVBQTUsIDB4NUFBNiwgMHg1QUE4LCAweDVBQTksIDB4NUFBQiwKKyAgICAweDVBQUMsIDB4NUFBRCwgMHg1QUFFLCAweDVBQUYsIDB4NUFCMCwgMHg1QUIxLCAweDVBQjQsIDB4NUFCNiwKKyAgICAweDVBQjcsIDB4NUFCOSwgMHg1QUJBLCAweDVBQkIsIDB4NUFCQywgMHg1QUJGLCAweDVBQzAsIDB4NUFDMywKKyAgICAweDVBQzQsIDB4NUFDNSwgMHg1QUM2LCAweDVBQzcsIDB4NUFDOCwgMHg1QUNBLCAweDVBQ0IsIDB4NUFDRCwKKyAgICAweDVBQ0UsIDB4NUFDRiwgMHg1QUQwLCAweDVBRDEsIDB4NUFEMywgMHg1QUQ1LCAweDVBRDksIDB4NUFEQSwKKyAgICAweDVBREIsIDB4NUFERCwgMHg1QURFLCAweDVBREYsIDB4NUFFMiwgMHg1QUU0LCAweDVBRTUsIDB4NUFFNywKKyAgICAweDVBRTgsIDB4NUFFQSwgMHg1QUVDLCAweDVBRUQsIDB4NUFFRSwgMHg1QUVGLCAweDVBRjAsIDB4NUFGMiwKKyAgICAweDVBRjMsIDB4NUFGNCwgMHg1QUY2LCAweDVBRjcsIDB4NUFGOCwgMHg1QUY5LCAweDVBRkEsIDB4NUFGQywKKyAgICAweDVBRkQsIDB4NUFGRSwgMHg1QUZGLCAweDVCMDEsIDB4NUIwMiwgMHg1QjAzLCAweDVCMDQsIDB4NUIwNSwKKyAgICAweDVCMDYsIDB4NUIwNywgMHg1QjBBLCAweDVCMEQsIDB4NUIwRSwgMHg1QjBGLCAweDVCMTAsIDB4NUIxMSwKKyAgICAweDVCMTIsIDB4NUIxMywgMHg1QjE0LCAweDVCMTUsIDB4NUIxOCwgMHg1QjFBLCAweDVCMUIsIDB4NUIxQywKKyAgICAweDVCMUQsIDB4NUIxRSwgMHg1QjFGLCAweDVCMjAsIDB4NUIyMiwgMHg1QjIzLCAweDVCMjQsIDB4NUIyNSwKKyAgICAweDVCMjYsIDB4NUIyNywgMHg1QjI4LCAweDVCMjksIDB4NUIyQiwgMHg1QjJDLCAweDVCMkQsIDB4NUIyRSwKKyAgICAweDVCMkYsIDB4NUIzMSwgMHg1QjMzLCAweDVCMzUsIDB4NUIzNiwgMHg1QjM5LCAweDVCM0EsIDB4NUIzQiwKKyAgICAweDVCM0MsIDB4NUIzRCwgMHg1QjNFLCAweDVCM0YsIDB4NUI0MSwgMHg1QjQyLCAweDVCNDMsIDB4NUI0NCwKKyAgICAweDVCNDUsIDB4NUI0NiwgMHg1QjQ3LCAweDVCNDgsIDB4NUI0OSwgMHg1QjRBLCAweDVCNEIsIDB4NUI0RCwKKyAgICAweDVCNEUsIDB4NUI0RiwgMHg1QjUyLCAweDVCNTYsIDB4NUI1RSwgMHg1QjYwLCAweDVCNjEsIDB4NUI2NywKKyAgICAweDVCNjgsIDB4NUI2RCwgMHg1QjZFLCAweDVCNkYsIDB4NUI3MiwgMHg1Qjc0LCAweDVCNzYsIDB4NUI3NywKKyAgICAweDVCNzksIDB4NUI3QiwgMHg1QjdDLCAweDVCN0UsIDB4NUI4MiwgMHg1Qjg2LCAweDVCOEEsIDB4NUI4RCwKKyAgICAweDVCOEUsIDB4NUI5MCwgMHg1QjkxLCAweDVCOTIsIDB4NUI5NCwgMHg1Qjk2LCAweDVCOUYsIDB4NUJBNywKKyAgICAweDVCQTgsIDB4NUJBOSwgMHg1QkFDLCAweDVCQUQsIDB4NUJBRSwgMHg1QkFGLCAweDVCQjEsIDB4NUJCMiwKKyAgICAweDVCQjcsIDB4NUJCQSwgMHg1QkJCLCAweDVCQkMsIDB4NUJDMCwgMHg1QkMxLCAweDVCQzMsIDB4NUJDOCwKKyAgICAweDVCQzksIDB4NUJDQSwgMHg1QkNCLCAweDVCQ0QsIDB4NUJDRSwgMHg1QkNGLCAweDVCRDEsIDB4NUJENCwKKyAgICAweDVCRDUsIDB4NUJENiwgMHg1QkQ3LCAweDVCRDgsIDB4NUJEOSwgMHg1QkRBLCAweDVCREIsIDB4NUJEQywKKyAgICAweDVCRTAsIDB4NUJFMywgMHg1QkVBLCAweDVCRUQsIDB4NUJFRiwgMHg1QkYxLCAweDVCRjIsIDB4NUJGMywKKyAgICAweDVCRjQsIDB4NUJGNywgMHg1QkZELCAweDVCRkUsIDB4NUMwMCwgMHg1QzAyLCAweDVDMDMsIDB4NUMwNSwKKyAgICAweDVDMEMsIDB4NUMxMCwgMHg1QzEyLCAweDVDMTMsIDB4NUMxNywgMHg1QzE5LCAweDVDMUIsIDB4NUMxRSwKKyAgICAweDVDMUYsIDB4NUMyMCwgMHg1QzIxLCAweDVDMjMsIDB4NUMyNiwgMHg1QzI4LCAweDVDMjksIDB4NUMyQSwKKyAgICAweDVDMkIsIDB4NUMyRCwgMHg1QzJFLCAweDVDMkYsIDB4NUMzMCwgMHg1QzMyLCAweDVDMzMsIDB4NUMzNSwKKyAgICAweDVDMzYsIDB4NUM0MywgMHg1QzQ0LCAweDVDNDYsIDB4NUM0NywgMHg1QzRDLCAweDVDNEQsIDB4NUM1MiwKKyAgICAweDVDNTMsIDB4NUM1NCwgMHg1QzU2LCAweDVDNTcsIDB4NUM1OCwgMHg1QzVBLCAweDVDNUIsIDB4NUM1QywKKyAgICAweDVDNUQsIDB4NUM1RiwgMHg1QzY3LCAweDVDNjksIDB4NUM2QSwgMHg1QzZCLCAweDVDNkQsIDB4NUM3MCwKKyAgICAweDVDNzIsIDB4NUM3MywgMHg1Qzc0LCAweDVDNzUsIDB4NUM3NiwgMHg1Qzc3LCAweDVDNzgsIDB4NUM3QiwKKyAgICAweDVDN0MsIDB4NUM3RCwgMHg1QzdFLCAweDVDODAsIDB4NUM4MywgMHg1Qzg0LCAweDVDODUsIDB4NUM4NiwKKyAgICAweDVDODcsIDB4NUM4OSwgMHg1QzhBLCAweDVDOEIsIDB4NUM4RSwgMHg1QzhGLCAweDVDOTIsIDB4NUM5MywKKyAgICAweDVDOTUsIDB4NUM5RCwgMHg1QzlFLCAweDVDOUYsIDB4NUNBMCwgMHg1Q0E0LCAweDVDQTUsIDB4NUNBNiwKKyAgICAweDVDQTcsIDB4NUNBOCwgMHg1Q0FBLCAweDVDQUUsIDB4NUNBRiwgMHg1Q0IwLCAweDVDQjIsIDB4NUNCNCwKKyAgICAweDVDQjYsIDB4NUNCOSwgMHg1Q0JBLCAweDVDQkIsIDB4NUNCQywgMHg1Q0JFLCAweDVDQzAsIDB4NUNDMiwKKyAgICAweDVDQzMsIDB4NUNDNSwgMHg1Q0M2LCAweDVDQzcsIDB4NUNDOCwgMHg1Q0M5LCAweDVDQ0EsIDB4NUNDQywKKyAgICAweDVDQ0QsIDB4NUNDRSwgMHg1Q0NGLCAweDVDRDAsIDB4NUNEMSwgMHg1Q0QzLCAweDVDRDQsIDB4NUNENSwKKyAgICAweDVDRDYsIDB4NUNENywgMHg1Q0Q4LCAweDVDREEsIDB4NUNEQiwgMHg1Q0RDLCAweDVDREQsIDB4NUNERSwKKyAgICAweDVDREYsIDB4NUNFMCwgMHg1Q0UyLCAweDVDRTMsIDB4NUNFNywgMHg1Q0U5LCAweDVDRUIsIDB4NUNFQywKKyAgICAweDVDRUUsIDB4NUNFRiwgMHg1Q0YxLCAweDVDRjIsIDB4NUNGMywgMHg1Q0Y1LCAweDVDRjcsIDB4NUNGOCwKKyAgICAweDVDRjksIDB4NUNGQSwgMHg1Q0ZDLCAweDVDRkUsIDB4NUNGRiwgMHg1RDAwLCAweDVEMDEsIDB4NUQwNCwKKyAgICAweDVEMDUsIDB4NUQwOCwgMHg1RDA5LCAweDVEMEEsIDB4NUQwQiwgMHg1RDBDLCAweDVEMEYsIDB4NUQxMCwKKyAgICAweDVEMTEsIDB4NUQxMiwgMHg1RDEzLCAweDVEMTUsIDB4NUQxOCwgMHg1RDE5LCAweDVEMUEsIDB4NUQxQywKKyAgICAweDVEMUQsIDB4NUQxRiwgMHg1RDIwLCAweDVEMjEsIDB4NUQyMiwgMHg1RDIzLCAweDVEMjUsIDB4NUQyOCwKKyAgICAweDVEMkEsIDB4NUQyQiwgMHg1RDJGLCAweDVEMzAsIDB4NUQzMSwgMHg1RDMyLCAweDVEMzMsIDB4NUQzNSwKKyAgICAweDVEMzYsIDB4NUQzNywgMHg1RDM4LCAweDVEMzksIDB4NUQzQSwgMHg1RDNCLCAweDVEM0MsIDB4NUQzRiwKKyAgICAweDVENDAsIDB4NUQ0MSwgMHg1RDQyLCAweDVENDMsIDB4NUQ0NCwgMHg1RDQ1LCAweDVENDYsIDB4NUQ0OCwKKyAgICAweDVENDksIDB4NUQ0RCwgMHg1RDRFLCAweDVENEYsIDB4NUQ1MSwgMHg1RDUyLCAweDVENTMsIDB4NUQ1NCwKKyAgICAweDVENTUsIDB4NUQ1NiwgMHg1RDU3LCAweDVENTksIDB4NUQ1QSwgMHg1RDVDLCAweDVENUUsIDB4NUQ1RiwKKyAgICAweDVENjAsIDB4NUQ2MSwgMHg1RDYyLCAweDVENjMsIDB4NUQ2NCwgMHg1RDY1LCAweDVENjYsIDB4NUQ2NywKKyAgICAweDVENjgsIDB4NUQ2QSwgMHg1RDZELCAweDVENkUsIDB4NUQ3MCwgMHg1RDcxLCAweDVENzIsIDB4NUQ3MywKKyAgICAweDVENzUsIDB4NUQ3NiwgMHg1RDc3LCAweDVENzgsIDB4NUQ3OSwgMHg1RDdBLCAweDVEN0IsIDB4NUQ3QywKKyAgICAweDVEN0QsIDB4NUQ3RSwgMHg1RDdGLCAweDVEODAsIDB4NUQ4MywgMHg1RDg1LCAweDVEODYsIDB4NUQ4OCwKKyAgICAweDVEODksIDB4NUQ4QSwgMHg1RDhCLCAweDVEOEMsIDB4NUQ4RCwgMHg1RDhFLCAweDVEOEYsIDB4NUQ5MCwKKyAgICAweDVEOTEsIDB4NUQ5MiwgMHg1RDkzLCAweDVEOTQsIDB4NUQ5NSwgMHg1RDk2LCAweDVEOTgsIDB4NUQ5QSwKKyAgICAweDVEOUIsIDB4NUQ5QywgMHg1RDlFLCAweDVEOUYsIDB4NURBMSwgMHg1REEyLCAweDVEQTMsIDB4NURBNCwKKyAgICAweDVEQTUsIDB4NURBNiwgMHg1REE4LCAweDVEQTksIDB4NURBQSwgMHg1REFCLCAweDVEQUMsIDB4NURBRCwKKyAgICAweDVEQUUsIDB4NURBRiwgMHg1REIwLCAweDVEQjEsIDB4NURCMiwgMHg1REIzLCAweDVEQjQsIDB4NURCNSwKKyAgICAweDVEQjYsIDB4NURCOSwgMHg1REJCLCAweDVEQkQsIDB4NURCRSwgMHg1REJGLCAweDVEQzAsIDB4NURDMSwKKyAgICAweDVEQzIsIDB4NURDMywgMHg1REM0LCAweDVEQzYsIDB4NURDNywgMHg1REM4LCAweDVEQzksIDB4NURDQSwKKyAgICAweDVEQ0MsIDB4NURDRSwgMHg1RENGLCAweDVERDAsIDB4NUREMSwgMHg1REQzLCAweDVERDUsIDB4NURENiwKKyAgICAweDVERDcsIDB4NUREOCwgMHg1REQ5LCAweDVEREEsIDB4NUREQywgMHg1RERGLCAweDVERTAsIDB4NURFMywKKyAgICAweDVERTQsIDB4NURFQSwgMHg1REVDLCAweDVERUQsIDB4NURGNSwgMHg1REY2LCAweDVERjgsIDB4NURGOSwKKyAgICAweDVERkEsIDB4NURGQiwgMHg1REZDLCAweDVERkYsIDB4NUUwMCwgMHg1RTA0LCAweDVFMDcsIDB4NUUwOSwKKyAgICAweDVFMEEsIDB4NUUwQiwgMHg1RTBELCAweDVFMEUsIDB4NUUxMiwgMHg1RTEzLCAweDVFMTcsIDB4NUUxRSwKKyAgICAweDVFMUYsIDB4NUUyMCwgMHg1RTIxLCAweDVFMjIsIDB4NUUyMywgMHg1RTI0LCAweDVFMjgsIDB4NUUyOSwKKyAgICAweDVFMkEsIDB4NUUyQywgMHg1RTJGLCAweDVFMzAsIDB4NUUzMiwgMHg1RTM0LCAweDVFMzUsIDB4NUUzOSwKKyAgICAweDVFM0EsIDB4NUUzRSwgMHg1RTNGLCAweDVFNDEsIDB4NUU0NiwgMHg1RTQ3LCAweDVFNDgsIDB4NUU0OSwKKyAgICAweDVFNEEsIDB4NUU0QiwgMHg1RTRELCAweDVFNEUsIDB4NUU0RiwgMHg1RTUwLCAweDVFNTEsIDB4NUU1MiwKKyAgICAweDVFNTMsIDB4NUU1NiwgMHg1RTU5LCAweDVFNUEsIDB4NUU1QywgMHg1RTVELCAweDVFNjAsIDB4NUU2NCwKKyAgICAweDVFNjUsIDB4NUU2NiwgMHg1RTY3LCAweDVFNjgsIDB4NUU2OSwgMHg1RTZBLCAweDVFNkQsIDB4NUU2RSwKKyAgICAweDVFNkYsIDB4NUU3MCwgMHg1RTcxLCAweDVFNzUsIDB4NUU3NywgMHg1RTgxLCAweDVFODIsIDB4NUU4MywKKyAgICAweDVFODUsIDB4NUU4OCwgMHg1RTg5LCAweDVFOEMsIDB4NUU4RCwgMHg1RThFLCAweDVFOTIsIDB4NUU5OCwKKyAgICAweDVFOUIsIDB4NUU5RCwgMHg1RUExLCAweDVFQTIsIDB4NUVBMywgMHg1RUE0LCAweDVFQTgsIDB4NUVBOSwKKyAgICAweDVFQUEsIDB4NUVBQywgMHg1RUFFLCAweDVFQUYsIDB4NUVCMCwgMHg1RUIxLCAweDVFQjIsIDB4NUVCNCwKKyAgICAweDVFQkEsIDB4NUVCQiwgMHg1RUJDLCAweDVFQkQsIDB4NUVCRiwgMHg1RUMwLCAweDVFQzEsIDB4NUVDMiwKKyAgICAweDVFQzMsIDB4NUVDNCwgMHg1RUM1LCAweDVFQzYsIDB4NUVDNywgMHg1RUM4LCAweDVFQ0IsIDB4NUVDQywKKyAgICAweDVFQ0QsIDB4NUVDRSwgMHg1RUNGLCAweDVFRDAsIDB4NUVENCwgMHg1RUQ1LCAweDVFRDcsIDB4NUVEOCwKKyAgICAweDVFRDksIDB4NUVEQSwgMHg1RURDLCAweDVFREQsIDB4NUVERSwgMHg1RUU0LCAweDVFRTUsIDB4NUVFNiwKKyAgICAweDVFRTcsIDB4NUVFOSwgMHg1RUVCLCAweDVFRUQsIDB4NUVFRSwgMHg1RUVGLCAweDVFRjAsIDB4NUVGMSwKKyAgICAweDVFRjIsIDB4NUVGNSwgMHg1RUY4LCAweDVFRjksIDB4NUVGQiwgMHg1RUZDLCAweDVFRkQsIDB4NUYwNSwKKyAgICAweDVGMDYsIDB4NUYwNywgMHg1RjA5LCAweDVGMEMsIDB4NUYwRCwgMHg1RjBFLCAweDVGMTAsIDB4NUYxMiwKKyAgICAweDVGMTQsIDB4NUYxNiwgMHg1RjE5LCAweDVGMUEsIDB4NUYxQywgMHg1RjFELCAweDVGMUUsIDB4NUYyMSwKKyAgICAweDVGMjIsIDB4NUYyMywgMHg1RjI0LCAweDVGMjgsIDB4NUYyQiwgMHg1RjJDLCAweDVGMkUsIDB4NUYzMCwKKyAgICAweDVGMzIsIDB4NUYzNCwgMHg1RjM2LCAweDVGMzcsIDB4NUYzOCwgMHg1RjNCLCAweDVGM0QsIDB4NUYzRSwKKyAgICAweDVGM0YsIDB4NUY0MSwgMHg1RjQyLCAweDVGNDMsIDB4NUY0NCwgMHg1RjQ1LCAweDVGNDcsIDB4NUY0OSwKKyAgICAweDVGNEEsIDB4NUY0QiwgMHg1RjRELCAweDVGNEYsIDB4NUY1MSwgMHg1RjU0LCAweDVGNUEsIDB4NUY1QiwKKyAgICAweDVGNUMsIDB4NUY1RSwgMHg1RjVGLCAweDVGNjAsIDB4NUY2MywgMHg1RjY1LCAweDVGNjcsIDB4NUY2OCwKKyAgICAweDVGNkIsIDB4NUY2RSwgMHg1RjZGLCAweDVGNzIsIDB4NUY3NCwgMHg1Rjc1LCAweDVGNzYsIDB4NUY3OCwKKyAgICAweDVGN0EsIDB4NUY3RCwgMHg1RjdFLCAweDVGN0YsIDB4NUY4MywgMHg1Rjg2LCAweDVGOEQsIDB4NUY4RSwKKyAgICAweDVGOEYsIDB4NUY5MywgMHg1Rjk0LCAweDVGOTYsIDB4NUY5QSwgMHg1RjlCLCAweDVGOUQsIDB4NUY5RiwKKyAgICAweDVGQTIsIDB4NUZBMywgMHg1RkE0LCAweDVGQTUsIDB4NUZBNiwgMHg1RkE3LCAweDVGQUIsIDB4NUZBQywKKyAgICAweDVGQUYsIDB4NUZCMCwgMHg1RkIxLCAweDVGQjIsIDB4NUZCMywgMHg1RkI0LCAweDVGQjYsIDB4NUZCOCwKKyAgICAweDVGQkEsIDB4NUZCQiwgMHg1RkJFLCAweDVGQkYsIDB4NUZDMCwgMHg1RkMxLCAweDVGQzIsIDB4NUZDNywKKyAgICAweDVGQzgsIDB4NUZDQSwgMHg1RkNCLCAweDVGQ0UsIDB4NUZEMywgMHg1RkQ0LCAweDVGRDUsIDB4NUZEQSwKKyAgICAweDVGREIsIDB4NUZEQywgMHg1RkRFLCAweDVGREYsIDB4NUZFMiwgMHg1RkUzLCAweDVGRTUsIDB4NUZFNiwKKyAgICAweDVGRTgsIDB4NUZFOSwgMHg1RkVDLCAweDVGRUYsIDB4NUZGMCwgMHg1RkYyLCAweDVGRjMsIDB4NUZGNCwKKyAgICAweDVGRjYsIDB4NUZGNywgMHg1RkY5LCAweDVGRkEsIDB4NUZGQywgMHg2MDA3LCAweDYwMDgsIDB4NjAwOSwKKyAgICAweDYwMEIsIDB4NjAwQywgMHg2MDEwLCAweDYwMTEsIDB4NjAxMywgMHg2MDE3LCAweDYwMTgsIDB4NjAxQSwKKyAgICAweDYwMUUsIDB4NjAxRiwgMHg2MDIyLCAweDYwMjMsIDB4NjAyNCwgMHg2MDJDLCAweDYwMkQsIDB4NjAyRSwKKyAgICAweDYwMzAsIDB4NjAzMSwgMHg2MDMyLCAweDYwMzMsIDB4NjAzNCwgMHg2MDM2LCAweDYwMzcsIDB4NjAzOCwKKyAgICAweDYwMzksIDB4NjAzQSwgMHg2MDNELCAweDYwM0UsIDB4NjA0MCwgMHg2MDQ0LCAweDYwNDUsIDB4NjA0NiwKKyAgICAweDYwNDcsIDB4NjA0OCwgMHg2MDQ5LCAweDYwNEEsIDB4NjA0QywgMHg2MDRFLCAweDYwNEYsIDB4NjA1MSwKKyAgICAweDYwNTMsIDB4NjA1NCwgMHg2MDU2LCAweDYwNTcsIDB4NjA1OCwgMHg2MDVCLCAweDYwNUMsIDB4NjA1RSwKKyAgICAweDYwNUYsIDB4NjA2MCwgMHg2MDYxLCAweDYwNjUsIDB4NjA2NiwgMHg2MDZFLCAweDYwNzEsIDB4NjA3MiwKKyAgICAweDYwNzQsIDB4NjA3NSwgMHg2MDc3LCAweDYwN0UsIDB4NjA4MCwgMHg2MDgxLCAweDYwODIsIDB4NjA4NSwKKyAgICAweDYwODYsIDB4NjA4NywgMHg2MDg4LCAweDYwOEEsIDB4NjA4QiwgMHg2MDhFLCAweDYwOEYsIDB4NjA5MCwKKyAgICAweDYwOTEsIDB4NjA5MywgMHg2MDk1LCAweDYwOTcsIDB4NjA5OCwgMHg2MDk5LCAweDYwOUMsIDB4NjA5RSwKKyAgICAweDYwQTEsIDB4NjBBMiwgMHg2MEE0LCAweDYwQTUsIDB4NjBBNywgMHg2MEE5LCAweDYwQUEsIDB4NjBBRSwKKyAgICAweDYwQjAsIDB4NjBCMywgMHg2MEI3LCAweDYwQjksIDB4NjBCQSwgMHg2MEJELCAweDYwQkUsIDB4NjBCRiwKKyAgICAweDYwQzAsIDB4NjBDMSwgMHg2MEMyLCAweDYwQzMsIDB4NjBDNCwgMHg2MEM3LCAweDYwQzgsIDB4NjBDOSwKKyAgICAweDYwQ0MsIDB4NjBDRCwgMHg2MENFLCAweDYwQ0YsIDB4NjBEMCwgMHg2MEQyLCAweDYwRDMsIDB4NjBENCwKKyAgICAweDYwRDYsIDB4NjBENywgMHg2MEQ5LCAweDYwREIsIDB4NjBERSwgMHg2MEUyLCAweDYwRTMsIDB4NjBFNCwKKyAgICAweDYwRTUsIDB4NjBFQSwgMHg2MEY1LCAweDYwRjcsIDB4NjBGOCwgMHg2MEZDLCAweDYwRkQsIDB4NjBGRSwKKyAgICAweDYwRkYsIDB4NjEwMiwgMHg2MTAzLCAweDYxMDQsIDB4NjEwNSwgMHg2MTA3LCAweDYxMEEsIDB4NjEwQiwKKyAgICAweDYxMEMsIDB4NjExMCwgMHg2MTExLCAweDYxMTIsIDB4NjExMywgMHg2MTE0LCAweDYxMTYsIDB4NjExNywKKyAgICAweDYxMTgsIDB4NjExOSwgMHg2MTFELCAweDYxMUUsIDB4NjEyMSwgMHg2MTIyLCAweDYxMjUsIDB4NjEyOCwKKyAgICAweDYxMjksIDB4NjEyQSwgMHg2MTJDLCAweDYxMkQsIDB4NjEyRSwgMHg2MTJGLCAweDYxMzAsIDB4NjEzMSwKKyAgICAweDYxMzIsIDB4NjEzMywgMHg2MTM1LCAweDYxMzYsIDB4NjEzOCwgMHg2MTM5LCAweDYxM0EsIDB4NjEzQiwKKyAgICAweDYxM0MsIDB4NjEzRCwgMHg2MTQwLCAweDYxNDEsIDB4NjE0MiwgMHg2MTQzLCAweDYxNDQsIDB4NjE0NSwKKyAgICAweDYxNDYsIDB4NjE0NywgMHg2MTQ5LCAweDYxNEQsIDB4NjE0RiwgMHg2MTUwLCAweDYxNTIsIDB4NjE1MywKKyAgICAweDYxNTQsIDB4NjE1NiwgMHg2MTU3LCAweDYxNTksIDB4NjE1QiwgMHg2MTVDLCAweDYxNUUsIDB4NjE2MCwKKyAgICAweDYxNjEsIDB4NjE2NSwgMHg2MTY2LCAweDYxNjksIDB4NjE2QywgMHg2MTZELCAweDYxNkYsIDB4NjE3MSwKKyAgICAweDYxNzIsIDB4NjE3NCwgMHg2MTc4LCAweDYxNzksIDB4NjE3QSwgMHg2MTdCLCAweDYxN0MsIDB4NjE3RCwKKyAgICAweDYxN0UsIDB4NjE3RiwgMHg2MTgwLCAweDYxODEsIDB4NjE4MywgMHg2MTg0LCAweDYxODUsIDB4NjE4NiwKKyAgICAweDYxODcsIDB4NjE4OCwgMHg2MTg5LCAweDYxOEMsIDB4NjE4RCwgMHg2MThGLCAweDYxOTMsIDB4NjE5NSwKKyAgICAweDYxOTYsIDB4NjE5NywgMHg2MTk4LCAweDYxOTksIDB4NjE5QiwgMHg2MTlDLCAweDYxOUUsIDB4NjE5RiwKKyAgICAweDYxQTAsIDB4NjFBMSwgMHg2MUEyLCAweDYxQTMsIDB4NjFBNSwgMHg2MUE2LCAweDYxQUEsIDB4NjFBRCwKKyAgICAweDYxQUYsIDB4NjFCMCwgMHg2MUIxLCAweDYxQjMsIDB4NjFCNCwgMHg2MUI1LCAweDYxQjgsIDB4NjFCOSwKKyAgICAweDYxQkEsIDB4NjFCQiwgMHg2MUJDLCAweDYxQkQsIDB4NjFCRiwgMHg2MUMwLCAweDYxQzEsIDB4NjFDMywKKyAgICAweDYxQzQsIDB4NjFDNSwgMHg2MUM2LCAweDYxQ0QsIDB4NjFDRSwgMHg2MUNGLCAweDYxRDAsIDB4NjFEMywKKyAgICAweDYxRDUsIDB4NjFENiwgMHg2MUQ3LCAweDYxRDgsIDB4NjFEOSwgMHg2MURBLCAweDYxREIsIDB4NjFEQywKKyAgICAweDYxREQsIDB4NjFFMCwgMHg2MUUxLCAweDYxRTIsIDB4NjFFNCwgMHg2MUU1LCAweDYxRTcsIDB4NjFFOSwKKyAgICAweDYxRUEsIDB4NjFFQiwgMHg2MUVDLCAweDYxRUQsIDB4NjFFRSwgMHg2MUVGLCAweDYxRjAsIDB4NjFGMSwKKyAgICAweDYxRjMsIDB4NjFGNCwgMHg2MUY5LCAweDYxRkIsIDB4NjFGRCwgMHg2MjAxLCAweDYyMDIsIDB4NjIwMywKKyAgICAweDYyMDQsIDB4NjIwNSwgMHg2MjA5LCAweDYyMTMsIDB4NjIxOSwgMHg2MjFDLCAweDYyMUQsIDB4NjIxRSwKKyAgICAweDYyMjAsIDB4NjIyMywgMHg2MjI2LCAweDYyMjgsIDB4NjIyOSwgMHg2MjJCLCAweDYyMkQsIDB4NjIyRiwKKyAgICAweDYyMzEsIDB4NjIzNSwgMHg2MjM2LCAweDYyMzgsIDB4NjIzOSwgMHg2MjNBLCAweDYyM0IsIDB4NjIzQywKKyAgICAweDYyNDIsIDB4NjI0NCwgMHg2MjQ1LCAweDYyNDYsIDB4NjI0QSwgMHg2MjRGLCAweDYyNTAsIDB4NjI1NSwKKyAgICAweDYyNTYsIDB4NjI1NywgMHg2MjU5LCAweDYyNUEsIDB4NjI1QywgMHg2MjVELCAweDYyNUUsIDB4NjI1RiwKKyAgICAweDYyNjAsIDB4NjI2MSwgMHg2MjYyLCAweDYyNjQsIDB4NjI2NSwgMHg2MjY4LCAweDYyNzEsIDB4NjI3MiwKKyAgICAweDYyNzQsIDB4NjI3NSwgMHg2Mjc3LCAweDYyNzgsIDB4NjI3QSwgMHg2MjdCLCAweDYyN0QsIDB4NjI4MSwKKyAgICAweDYyODIsIDB4NjI4MywgMHg2Mjg1LCAweDYyODYsIDB4NjI4NywgMHg2Mjg4LCAweDYyOEIsIDB4NjI4QywKKyAgICAweDYyOEQsIDB4NjI4RSwgMHg2MjhGLCAweDYyOTAsIDB4NjI5NCwgMHg2Mjk5LCAweDYyOUMsIDB4NjI5RCwKKyAgICAweDYyOUUsIDB4NjJBMywgMHg2MkE2LCAweDYyQTcsIDB4NjJBOSwgMHg2MkFBLCAweDYyQUQsIDB4NjJBRSwKKyAgICAweDYyQUYsIDB4NjJCMCwgMHg2MkIyLCAweDYyQjMsIDB4NjJCNCwgMHg2MkI2LCAweDYyQjcsIDB4NjJCOCwKKyAgICAweDYyQkEsIDB4NjJCRSwgMHg2MkMwLCAweDYyQzEsIDB4NjJDMywgMHg2MkNCLCAweDYyQ0YsIDB4NjJEMSwKKyAgICAweDYyRDUsIDB4NjJERCwgMHg2MkRFLCAweDYyRTAsIDB4NjJFMSwgMHg2MkU0LCAweDYyRUEsIDB4NjJFQiwKKyAgICAweDYyRjAsIDB4NjJGMiwgMHg2MkY1LCAweDYyRjgsIDB4NjJGOSwgMHg2MkZBLCAweDYyRkIsIDB4NjMwMCwKKyAgICAweDYzMDMsIDB4NjMwNCwgMHg2MzA1LCAweDYzMDYsIDB4NjMwQSwgMHg2MzBCLCAweDYzMEMsIDB4NjMwRCwKKyAgICAweDYzMEYsIDB4NjMxMCwgMHg2MzEyLCAweDYzMTMsIDB4NjMxNCwgMHg2MzE1LCAweDYzMTcsIDB4NjMxOCwKKyAgICAweDYzMTksIDB4NjMxQywgMHg2MzI2LCAweDYzMjcsIDB4NjMyOSwgMHg2MzJDLCAweDYzMkQsIDB4NjMyRSwKKyAgICAweDYzMzAsIDB4NjMzMSwgMHg2MzMzLCAweDYzMzQsIDB4NjMzNSwgMHg2MzM2LCAweDYzMzcsIDB4NjMzOCwKKyAgICAweDYzM0IsIDB4NjMzQywgMHg2MzNGLCAweDYzNDAsIDB4NjM0MSwgMHg2MzQ0LCAweDYzNDcsIDB4NjM0OCwKKyAgICAweDYzNEEsIDB4NjM1MSwgMHg2MzUyLCAweDYzNTMsIDB4NjM1NCwgMHg2MzU2LCAweDYzNTcsIDB4NjM1OCwKKyAgICAweDYzNTksIDB4NjM1QSwgMHg2MzVCLCAweDYzNUMsIDB4NjM1RCwgMHg2MzYwLCAweDYzNjQsIDB4NjM2NSwKKyAgICAweDYzNjYsIDB4NjM2QSwgMHg2MzZDLCAweDYzNkYsIDB4NjM3MCwgMHg2MzczLCAweDYzNzQsIDB4NjM3NSwKKyAgICAweDYzNzgsIDB4NjM3OSwgMHg2MzdDLCAweDYzN0QsIDB4NjM3RSwgMHg2MzdGLCAweDYzODEsIDB4NjM4NSwKKyAgICAweDYzODYsIDB4NjM4QiwgMHg2MzhELCAweDYzOTEsIDB4NjM5MywgMHg2Mzk0LCAweDYzOTUsIDB4NjM5NywKKyAgICAweDYzOTksIDB4NjM5QSwgMHg2MzlCLCAweDYzOUMsIDB4NjM5RCwgMHg2MzlFLCAweDYzOUYsIDB4NjNBMSwKKyAgICAweDYzQTQsIDB4NjNBNiwgMHg2M0FCLCAweDYzQUYsIDB4NjNCMSwgMHg2M0IyLCAweDYzQjUsIDB4NjNCNiwKKyAgICAweDYzQjksIDB4NjNCQiwgMHg2M0JELCAweDYzQkYsIDB4NjNDMSwgMHg2M0MyLCAweDYzQzMsIDB4NjNDNSwKKyAgICAweDYzQzcsIDB4NjNDOCwgMHg2M0NBLCAweDYzQ0IsIDB4NjNDQywgMHg2M0QxLCAweDYzRDMsIDB4NjNENCwKKyAgICAweDYzRDUsIDB4NjNENywgMHg2M0Q4LCAweDYzRDksIDB4NjNEQiwgMHg2M0RDLCAweDYzREQsIDB4NjNERiwKKyAgICAweDYzRTIsIDB4NjNFNCwgMHg2M0U1LCAweDYzRTYsIDB4NjNFNywgMHg2M0U4LCAweDYzRUIsIDB4NjNFQywKKyAgICAweDYzRUYsIDB4NjNGMCwgMHg2M0YxLCAweDYzRjMsIDB4NjNGNSwgMHg2M0Y3LCAweDYzRjksIDB4NjNGQSwKKyAgICAweDYzRkIsIDB4NjNGQywgMHg2M0ZFLCAweDY0MDMsIDB4NjQwNCwgMHg2NDA2LCAweDY0MDcsIDB4NjQwOCwKKyAgICAweDY0MDksIDB4NjQwQSwgMHg2NDBFLCAweDY0MTEsIDB4NjQxMiwgMHg2NDE1LCAweDY0MTYsIDB4NjQxOCwKKyAgICAweDY0MTksIDB4NjQxQSwgMHg2NDFELCAweDY0MUYsIDB4NjQyMiwgMHg2NDIzLCAweDY0MjQsIDB4NjQyNSwKKyAgICAweDY0MjcsIDB4NjQyOCwgMHg2NDI5LCAweDY0MkIsIDB4NjQyRSwgMHg2NDJGLCAweDY0MzAsIDB4NjQzMSwKKyAgICAweDY0MzIsIDB4NjQzMywgMHg2NDM1LCAweDY0MzcsIDB4NjQzOCwgMHg2NDM5LCAweDY0M0IsIDB4NjQzQywKKyAgICAweDY0M0UsIDB4NjQ0MCwgMHg2NDQyLCAweDY0NDMsIDB4NjQ0OSwgMHg2NDRCLCAweDY0NEMsIDB4NjQ0RCwKKyAgICAweDY0NEUsIDB4NjQ0RiwgMHg2NDUwLCAweDY0NTMsIDB4NjQ1NSwgMHg2NDU2LCAweDY0NTcsIDB4NjQ1OSwKKyAgICAweDY0NUEsIDB4NjQ1QiwgMHg2NDVELCAweDY0NjAsIDB4NjQ2MSwgMHg2NDYyLCAweDY0NjMsIDB4NjQ2NCwKKyAgICAweDY0NjUsIDB4NjQ2NiwgMHg2NDY4LCAweDY0NkEsIDB4NjQ2QiwgMHg2NDZDLCAweDY0NkUsIDB4NjQ3MCwKKyAgICAweDY0NzEsIDB4NjQ3MiwgMHg2NDc0LCAweDY0NzUsIDB4NjQ3NywgMHg2NDdDLCAweDY0N0QsIDB4NjQ3RSwKKyAgICAweDY0N0YsIDB4NjQ4MCwgMHg2NDgxLCAweDY0ODMsIDB4NjQ4NiwgMHg2NDg5LCAweDY0OEEsIDB4NjQ4QiwKKyAgICAweDY0OEMsIDB4NjQ4RCwgMHg2NDhFLCAweDY0OEYsIDB4NjQ5MCwgMHg2NDk0LCAweDY0OTcsIDB4NjQ5OCwKKyAgICAweDY0OUEsIDB4NjQ5QiwgMHg2NDlDLCAweDY0OUQsIDB4NjRBMCwgMHg2NEExLCAweDY0QTIsIDB4NjRBNiwKKyAgICAweDY0QTcsIDB4NjRBOCwgMHg2NEFBLCAweDY0QUYsIDB4NjRCMSwgMHg2NEI0LCAweDY0QjYsIDB4NjRCOSwKKyAgICAweDY0QkQsIDB4NjRDMywgMHg2NEM2LCAweDY0QzgsIDB4NjRDOSwgMHg2NENDLCAweDY0Q0YsIDB4NjREMSwKKyAgICAweDY0RDMsIDB4NjRENSwgMHg2NEQ2LCAweDY0RDksIDB4NjREQiwgMHg2NERDLCAweDY0REQsIDB4NjRERiwKKyAgICAweDY0RTEsIDB4NjRFMywgMHg2NEU1LCAweDY0RTcsIDB4NjRFOCwgMHg2NEU5LCAweDY0RUEsIDB4NjRFQiwKKyAgICAweDY0RUQsIDB4NjRFRSwgMHg2NEYzLCAweDY0RjUsIDB4NjRGNiwgMHg2NEY4LCAweDY0RjksIDB4NjRGRCwKKyAgICAweDY0RkYsIDB4NjUwMSwgMHg2NTAyLCAweDY1MDMsIDB4NjUwNSwgMHg2NTA3LCAweDY1MDgsIDB4NjUwQSwKKyAgICAweDY1MEIsIDB4NjUwQywgMHg2NTBELCAweDY1MEUsIDB4NjUxMCwgMHg2NTExLCAweDY1MTMsIDB4NjUxNSwKKyAgICAweDY1MTcsIDB4NjUxQSwgMHg2NTFDLCAweDY1MUUsIDB4NjUxRiwgMHg2NTIwLCAweDY1MjEsIDB4NjUyNiwKKyAgICAweDY1MjcsIDB4NjUyOCwgMHg2NTI5LCAweDY1MkQsIDB4NjUzMCwgMHg2NTMxLCAweDY1MzIsIDB4NjUzMywKKyAgICAweDY1MzcsIDB4NjUzQSwgMHg2NTNDLCAweDY1M0QsIDB4NjU0MCwgMHg2NTQxLCAweDY1NDIsIDB4NjU0MywKKyAgICAweDY1NDQsIDB4NjU0NiwgMHg2NTQ3LCAweDY1NEEsIDB4NjU0QiwgMHg2NTRELCAweDY1NEUsIDB4NjU1MCwKKyAgICAweDY1NTIsIDB4NjU1MywgMHg2NTU0LCAweDY1NTgsIDB4NjU1QSwgMHg2NTVDLCAweDY1NUYsIDB4NjU2MCwKKyAgICAweDY1NjEsIDB4NjU2NCwgMHg2NTY1LCAweDY1NjcsIDB4NjU2OCwgMHg2NTY5LCAweDY1NkEsIDB4NjU2RCwKKyAgICAweDY1NkUsIDB4NjU2RiwgMHg2NTcxLCAweDY1NzMsIDB4NjU3NiwgMHg2NTc5LCAweDY1N0EsIDB4NjU3QiwKKyAgICAweDY1N0MsIDB4NjU3RCwgMHg2NTdFLCAweDY1N0YsIDB4NjU4MCwgMHg2NTgxLCAweDY1ODQsIDB4NjU4NSwKKyAgICAweDY1ODYsIDB4NjU4OCwgMHg2NTg5LCAweDY1OEEsIDB4NjU4RCwgMHg2NThFLCAweDY1OEYsIDB4NjU5MiwKKyAgICAweDY1OTQsIDB4NjU5NiwgMHg2NTk4LCAweDY1OUEsIDB4NjU5RCwgMHg2NTlFLCAweDY1QTAsIDB4NjVBMiwKKyAgICAweDY1QTMsIDB4NjVBNiwgMHg2NUE4LCAweDY1QUEsIDB4NjVBRSwgMHg2NUIxLCAweDY1QjIsIDB4NjVCMywKKyAgICAweDY1QjQsIDB4NjVCNSwgMHg2NUI2LCAweDY1QjgsIDB4NjVCQSwgMHg2NUJCLCAweDY1QkUsIDB4NjVCRiwKKyAgICAweDY1QzAsIDB4NjVDMiwgMHg2NUM3LCAweDY1QzgsIDB4NjVDOSwgMHg2NUNBLCAweDY1Q0QsIDB4NjVEMCwKKyAgICAweDY1RDEsIDB4NjVEMywgMHg2NUQ0LCAweDY1RDUsIDB4NjVEOCwgMHg2NUQ5LCAweDY1REEsIDB4NjVEQiwKKyAgICAweDY1REMsIDB4NjVERCwgMHg2NURFLCAweDY1REYsIDB4NjVFMSwgMHg2NUUzLCAweDY1RTQsIDB4NjVFQSwKKyAgICAweDY1RUIsIDB4NjVGMiwgMHg2NUYzLCAweDY1RjQsIDB4NjVGNSwgMHg2NUY4LCAweDY1RjksIDB4NjVGQiwKKyAgICAweDY1RkMsIDB4NjVGRCwgMHg2NUZFLCAweDY1RkYsIDB4NjYwMSwgMHg2NjA0LCAweDY2MDUsIDB4NjYwNywKKyAgICAweDY2MDgsIDB4NjYwOSwgMHg2NjBCLCAweDY2MEQsIDB4NjYxMCwgMHg2NjExLCAweDY2MTIsIDB4NjYxNiwKKyAgICAweDY2MTcsIDB4NjYxOCwgMHg2NjFBLCAweDY2MUIsIDB4NjYxQywgMHg2NjFFLCAweDY2MjEsIDB4NjYyMiwKKyAgICAweDY2MjMsIDB4NjYyNCwgMHg2NjI2LCAweDY2MjksIDB4NjYyQSwgMHg2NjJCLCAweDY2MkMsIDB4NjYyRSwKKyAgICAweDY2MzAsIDB4NjYzMiwgMHg2NjMzLCAweDY2MzcsIDB4NjYzOCwgMHg2NjM5LCAweDY2M0EsIDB4NjYzQiwKKyAgICAweDY2M0QsIDB4NjYzRiwgMHg2NjQwLCAweDY2NDQsIDB4NjY0NSwgMHg2NjQ2LCAweDY2NDcsIDB4NjY0OCwKKyAgICAweDY2NDksIDB4NjY0QSwgMHg2NjRELCAweDY2NEUsIDB4NjY1MCwgMHg2NjUxLCAweDY2NTgsIDB4NjY1OSwKKyAgICAweDY2NUIsIDB4NjY1QywgMHg2NjVFLCAweDY2NjAsIDB4NjY2MiwgMHg2NjYzLCAweDY2NjUsIDB4NjY2NywKKyAgICAweDY2NjksIDB4NjY2QSwgMHg2NjZCLCAweDY2NkMsIDB4NjY2RCwgMHg2NjcxLCAweDY2NzIsIDB4NjY3MywKKyAgICAweDY2NzUsIDB4NjY3OCwgMHg2Njc5LCAweDY2N0IsIDB4NjY3QywgMHg2NjdELCAweDY2N0YsIDB4NjY4MCwKKyAgICAweDY2ODEsIDB4NjY4MywgMHg2Njg1LCAweDY2ODYsIDB4NjY4QSwgMHg2NjhCLCAweDY2OEQsIDB4NjY4RSwKKyAgICAweDY2OEYsIDB4NjY5MCwgMHg2NjkyLCAweDY2OTMsIDB4NjY5NCwgMHg2Njk1LCAweDY2OTgsIDB4NjY5OSwKKyAgICAweDY2OUEsIDB4NjY5QiwgMHg2NjlDLCAweDY2OUUsIDB4NjY5RiwgMHg2NkEwLCAweDY2QTEsIDB4NjZBMywKKyAgICAweDY2QTQsIDB4NjZBNSwgMHg2NkE2LCAweDY2QTksIDB4NjZBQSwgMHg2NkFDLCAweDY2QUQsIDB4NjZBRiwKKyAgICAweDY2QjAsIDB4NjZCMSwgMHg2NkIyLCAweDY2QjMsIDB4NjZCNSwgMHg2NkI2LCAweDY2QjcsIDB4NjZCOCwKKyAgICAweDY2QkEsIDB4NjZCQiwgMHg2NkJDLCAweDY2QkQsIDB4NjZCRiwgMHg2NkMwLCAweDY2QzEsIDB4NjZDMiwKKyAgICAweDY2QzMsIDB4NjZDNSwgMHg2NkM4LCAweDY2Q0EsIDB4NjZDQiwgMHg2NkNDLCAweDY2Q0QsIDB4NjZDRSwKKyAgICAweDY2Q0YsIDB4NjZEMCwgMHg2NkQxLCAweDY2RDIsIDB4NjZEMywgMHg2NkQ0LCAweDY2RDUsIDB4NjZENywKKyAgICAweDY2RDgsIDB4NjZEQSwgMHg2NkRFLCAweDY2REYsIDB4NjZFMSwgMHg2NkUyLCAweDY2RTMsIDB4NjZFNCwKKyAgICAweDY2RTUsIDB4NjZFNywgMHg2NkU4LCAweDY2RUEsIDB4NjZFQiwgMHg2NkVELCAweDY2RUUsIDB4NjZFRiwKKyAgICAweDY2RjEsIDB4NjZGNSwgMHg2NkY2LCAweDY2RkEsIDB4NjZGQiwgMHg2NkZELCAweDY3MDEsIDB4NjcwMiwKKyAgICAweDY3MDQsIDB4NjcwNSwgMHg2NzA2LCAweDY3MDcsIDB4NjcwQywgMHg2NzBFLCAweDY3MEYsIDB4NjcxMSwKKyAgICAweDY3MTIsIDB4NjcxMywgMHg2NzE2LCAweDY3MTgsIDB4NjcxOSwgMHg2NzFBLCAweDY3MUMsIDB4NjcxRSwKKyAgICAweDY3MjAsIDB4NjcyMSwgMHg2NzIyLCAweDY3MjMsIDB4NjcyNCwgMHg2NzI1LCAweDY3MjksIDB4NjcyRSwKKyAgICAweDY3MzAsIDB4NjczMiwgMHg2NzMzLCAweDY3MzYsIDB4NjczNywgMHg2NzM4LCAweDY3MzksIDB4NjczQiwKKyAgICAweDY3M0MsIDB4NjczRSwgMHg2NzNGLCAweDY3NDEsIDB4Njc0NCwgMHg2NzQ1LCAweDY3NDcsIDB4Njc0QSwKKyAgICAweDY3NEIsIDB4Njc0RCwgMHg2NzUyLCAweDY3NTQsIDB4Njc1NSwgMHg2NzU3LCAweDY3NTgsIDB4Njc1OSwKKyAgICAweDY3NUEsIDB4Njc1QiwgMHg2NzVELCAweDY3NjIsIDB4Njc2MywgMHg2NzY0LCAweDY3NjYsIDB4Njc2NywKKyAgICAweDY3NkIsIDB4Njc2QywgMHg2NzZFLCAweDY3NzQsIDB4Njc3NiwgMHg2Nzc4LCAweDY3NzksIDB4Njc3QSwKKyAgICAweDY3N0IsIDB4Njc3RCwgMHg2NzgwLCAweDY3ODIsIDB4Njc4MywgMHg2Nzg1LCAweDY3ODYsIDB4Njc4OCwKKyAgICAweDY3OEEsIDB4Njc4QywgMHg2NzhELCAweDY3OEUsIDB4Njc4RiwgMHg2NzkxLCAweDY3OTIsIDB4Njc5MywKKyAgICAweDY3OTQsIDB4Njc5NiwgMHg2Nzk5LCAweDY3OUIsIDB4Njc5RiwgMHg2N0EwLCAweDY3QTEsIDB4NjdBNCwKKyAgICAweDY3QTYsIDB4NjdBOSwgMHg2N0FDLCAweDY3QUUsIDB4NjdCMSwgMHg2N0IyLCAweDY3QjQsIDB4NjdCOSwKKyAgICAweDY3QkEsIDB4NjdCQiwgMHg2N0JDLCAweDY3QkQsIDB4NjdCRSwgMHg2N0JGLCAweDY3QzAsIDB4NjdDMiwKKyAgICAweDY3QzUsIDB4NjdDNiwgMHg2N0M3LCAweDY3QzgsIDB4NjdDOSwgMHg2N0NBLCAweDY3Q0IsIDB4NjdDQywKKyAgICAweDY3Q0QsIDB4NjdDRSwgMHg2N0Q1LCAweDY3RDYsIDB4NjdENywgMHg2N0RCLCAweDY3REYsIDB4NjdFMSwKKyAgICAweDY3RTMsIDB4NjdFNCwgMHg2N0U2LCAweDY3RTcsIDB4NjdFOCwgMHg2N0VBLCAweDY3RUIsIDB4NjdFRCwKKyAgICAweDY3RUUsIDB4NjdGMiwgMHg2N0Y1LCAweDY3RjYsIDB4NjdGNywgMHg2N0Y4LCAweDY3RjksIDB4NjdGQSwKKyAgICAweDY3RkIsIDB4NjdGQywgMHg2N0ZFLCAweDY4MDEsIDB4NjgwMiwgMHg2ODAzLCAweDY4MDQsIDB4NjgwNiwKKyAgICAweDY4MEQsIDB4NjgxMCwgMHg2ODEyLCAweDY4MTQsIDB4NjgxNSwgMHg2ODE4LCAweDY4MTksIDB4NjgxQSwKKyAgICAweDY4MUIsIDB4NjgxQywgMHg2ODFFLCAweDY4MUYsIDB4NjgyMCwgMHg2ODIyLCAweDY4MjMsIDB4NjgyNCwKKyAgICAweDY4MjUsIDB4NjgyNiwgMHg2ODI3LCAweDY4MjgsIDB4NjgyQiwgMHg2ODJDLCAweDY4MkQsIDB4NjgyRSwKKyAgICAweDY4MkYsIDB4NjgzMCwgMHg2ODMxLCAweDY4MzQsIDB4NjgzNSwgMHg2ODM2LCAweDY4M0EsIDB4NjgzQiwKKyAgICAweDY4M0YsIDB4Njg0NywgMHg2ODRCLCAweDY4NEQsIDB4Njg0RiwgMHg2ODUyLCAweDY4NTYsIDB4Njg1NywKKyAgICAweDY4NTgsIDB4Njg1OSwgMHg2ODVBLCAweDY4NUIsIDB4Njg1QywgMHg2ODVELCAweDY4NUUsIDB4Njg1RiwKKyAgICAweDY4NkEsIDB4Njg2QywgMHg2ODZELCAweDY4NkUsIDB4Njg2RiwgMHg2ODcwLCAweDY4NzEsIDB4Njg3MiwKKyAgICAweDY4NzMsIDB4Njg3NSwgMHg2ODc4LCAweDY4NzksIDB4Njg3QSwgMHg2ODdCLCAweDY4N0MsIDB4Njg3RCwKKyAgICAweDY4N0UsIDB4Njg3RiwgMHg2ODgwLCAweDY4ODIsIDB4Njg4NCwgMHg2ODg3LCAweDY4ODgsIDB4Njg4OSwKKyAgICAweDY4OEEsIDB4Njg4QiwgMHg2ODhDLCAweDY4OEQsIDB4Njg4RSwgMHg2ODkwLCAweDY4OTEsIDB4Njg5MiwKKyAgICAweDY4OTQsIDB4Njg5NSwgMHg2ODk2LCAweDY4OTksIDB4Njg5QSwgMHg2ODlCLCAweDY4OUMsIDB4Njg5RSwKKyAgICAweDY4QTAsIDB4NjhBMSwgMHg2OEEzLCAweDY4QTQsIDB4NjhBNSwgMHg2OEE5LCAweDY4QUEsIDB4NjhBQiwKKyAgICAweDY4QUMsIDB4NjhBRSwgMHg2OEIxLCAweDY4QjIsIDB4NjhCNCwgMHg2OEI2LCAweDY4QjcsIDB4NjhCOCwKKyAgICAweDY4QjksIDB4NjhCQSwgMHg2OEJCLCAweDY4QkMsIDB4NjhCRCwgMHg2OEJFLCAweDY4QkYsIDB4NjhDMSwKKyAgICAweDY4QzMsIDB4NjhDNCwgMHg2OEM1LCAweDY4QzYsIDB4NjhDNywgMHg2OEM4LCAweDY4Q0EsIDB4NjhDQywKKyAgICAweDY4Q0UsIDB4NjhDRiwgMHg2OEQwLCAweDY4RDEsIDB4NjhEMywgMHg2OEQ0LCAweDY4RDksIDB4NjhEQiwKKyAgICAweDY4REMsIDB4NjhERCwgMHg2OERFLCAweDY4RTEsIDB4NjhFMiwgMHg2OEU0LCAweDY4RTUsIDB4NjhFNiwKKyAgICAweDY4RTgsIDB4NjhFOSwgMHg2OEVBLCAweDY4RUIsIDB4NjhFQywgMHg2OEVELCAweDY4RUYsIDB4NjhGMiwKKyAgICAweDY4RjMsIDB4NjhGNCwgMHg2OEY2LCAweDY4RjcsIDB4NjhGOCwgMHg2OEZCLCAweDY4RkQsIDB4NjhGRSwKKyAgICAweDY4RkYsIDB4NjkwMCwgMHg2OTAyLCAweDY5MDMsIDB4NjkwNCwgMHg2OTA2LCAweDY5MDcsIDB4NjkwOCwKKyAgICAweDY5MDksIDB4NjkwQSwgMHg2OTBDLCAweDY5MTEsIDB4NjkxMywgMHg2OTE0LCAweDY5MTUsIDB4NjkxNiwKKyAgICAweDY5MTcsIDB4NjkxOCwgMHg2OTE5LCAweDY5MUEsIDB4NjkxQiwgMHg2OTFDLCAweDY5MUQsIDB4NjkxRSwKKyAgICAweDY5MjEsIDB4NjkyMiwgMHg2OTIzLCAweDY5MjUsIDB4NjkyNiwgMHg2OTI3LCAweDY5MjgsIDB4NjkyOSwKKyAgICAweDY5MkEsIDB4NjkyQiwgMHg2OTJDLCAweDY5MkUsIDB4NjkyRiwgMHg2OTMxLCAweDY5MzIsIDB4NjkzMywKKyAgICAweDY5MzUsIDB4NjkzNiwgMHg2OTM3LCAweDY5MzgsIDB4NjkzQSwgMHg2OTNCLCAweDY5M0MsIDB4NjkzRSwKKyAgICAweDY5NDAsIDB4Njk0MSwgMHg2OTQzLCAweDY5NDQsIDB4Njk0NSwgMHg2OTQ2LCAweDY5NDcsIDB4Njk0OCwKKyAgICAweDY5NDksIDB4Njk0QiwgMHg2OTRDLCAweDY5NEQsIDB4Njk0RSwgMHg2OTRGLCAweDY5NTAsIDB4Njk1MSwKKyAgICAweDY5NTIsIDB4Njk1NSwgMHg2OTU2LCAweDY5NTgsIDB4Njk1OSwgMHg2OTVCLCAweDY5NUMsIDB4Njk1RiwKKyAgICAweDY5NjEsIDB4Njk2MiwgMHg2OTY0LCAweDY5NjUsIDB4Njk2NywgMHg2OTY5LCAweDY5NkEsIDB4Njk2QywKKyAgICAweDY5NkYsIDB4Njk3MCwgMHg2OTcyLCAweDY5NzMsIDB4Njk3NCwgMHg2OTc2LCAweDY5N0EsIDB4Njk3QiwKKyAgICAweDY5N0QsIDB4Njk3RSwgMHg2OTdGLCAweDY5ODEsIDB4Njk4MywgMHg2OTg1LCAweDY5OEEsIDB4Njk4QiwKKyAgICAweDY5OEMsIDB4Njk4RSwgMHg2OThGLCAweDY5OTAsIDB4Njk5MSwgMHg2OTkyLCAweDY5OTMsIDB4Njk5NiwKKyAgICAweDY5OTcsIDB4Njk5OSwgMHg2OTlBLCAweDY5OUQsIDB4Njk5RSwgMHg2OTlGLCAweDY5QTAsIDB4NjlBMSwKKyAgICAweDY5QTIsIDB4NjlBMywgMHg2OUE0LCAweDY5QTUsIDB4NjlBNiwgMHg2OUE5LCAweDY5QUMsIDB4NjlBRiwKKyAgICAweDY5QjAsIDB4NjlCMiwgMHg2OUIzLCAweDY5QjUsIDB4NjlCNiwgMHg2OUI4LCAweDY5QjksIDB4NjlCQSwKKyAgICAweDY5QkMsIDB4NjlCRCwgMHg2OUJFLCAweDY5QzAsIDB4NjlDMiwgMHg2OUMzLCAweDY5QzQsIDB4NjlDNSwKKyAgICAweDY5QzYsIDB4NjlDNywgMHg2OUM4LCAweDY5QzksIDB4NjlDRiwgMHg2OUQxLCAweDY5RDIsIDB4NjlEMywKKyAgICAweDY5RDUsIDB4NjlENiwgMHg2OUQ3LCAweDY5RDgsIDB4NjlEOSwgMHg2OURBLCAweDY5REMsIDB4NjlERCwKKyAgICAweDY5REUsIDB4NjlFMSwgMHg2OUUyLCAweDY5RTMsIDB4NjlFNCwgMHg2OUU1LCAweDY5RTYsIDB4NjlFOCwKKyAgICAweDY5RTksIDB4NjlFQSwgMHg2OUVCLCAweDY5RUMsIDB4NjlFRSwgMHg2OUVGLCAweDY5RjAsIDB4NjlGMSwKKyAgICAweDY5RjQsIDB4NjlGNSwgMHg2OUY2LCAweDY5RjcsIDB4NjlGOCwgMHg2OUY5LCAweDY5RkEsIDB4NjlGQiwKKyAgICAweDY5RkMsIDB4NjlGRSwgMHg2QTAwLCAweDZBMDMsIDB4NkEwNCwgMHg2QTA2LCAweDZBMDcsIDB4NkEwOCwKKyAgICAweDZBMDksIDB4NkEwQiwgMHg2QTBDLCAweDZBMEQsIDB4NkEwRSwgMHg2QTBGLCAweDZBMTAsIDB4NkExMSwKKyAgICAweDZBMTIsIDB4NkExNCwgMHg2QTE1LCAweDZBMTYsIDB4NkExQSwgMHg2QTFCLCAweDZBMUMsIDB4NkExRCwKKyAgICAweDZBMjAsIDB4NkEyMiwgMHg2QTI0LCAweDZBMjUsIDB4NkEyNiwgMHg2QTI3LCAweDZBMjksIDB4NkEyQiwKKyAgICAweDZBMkMsIDB4NkEyRCwgMHg2QTJFLCAweDZBMzAsIDB4NkEzMiwgMHg2QTMzLCAweDZBMzQsIDB4NkEzNiwKKyAgICAweDZBMzcsIDB4NkEzQiwgMHg2QTNDLCAweDZBM0YsIDB4NkE0MCwgMHg2QTQxLCAweDZBNDIsIDB4NkE0MywKKyAgICAweDZBNDUsIDB4NkE0NiwgMHg2QTQ5LCAweDZBNEEsIDB4NkE0QywgMHg2QTRELCAweDZBNEUsIDB4NkE0RiwKKyAgICAweDZBNTEsIDB4NkE1MiwgMHg2QTUzLCAweDZBNTQsIDB4NkE1NSwgMHg2QTU2LCAweDZBNTcsIDB4NkE1QSwKKyAgICAweDZBNUMsIDB4NkE1RCwgMHg2QTVFLCAweDZBNjAsIDB4NkE2MywgMHg2QTY0LCAweDZBNjYsIDB4NkE2NywKKyAgICAweDZBNjgsIDB4NkE2OSwgMHg2QTZBLCAweDZBNkIsIDB4NkE2QywgMHg2QTZELCAweDZBNkUsIDB4NkE2RiwKKyAgICAweDZBNzAsIDB4NkE3MiwgMHg2QTczLCAweDZBNzQsIDB4NkE3NSwgMHg2QTc2LCAweDZBNzcsIDB4NkE3OCwKKyAgICAweDZBN0EsIDB4NkE3QiwgMHg2QTdELCAweDZBN0UsIDB4NkE3RiwgMHg2QTgxLCAweDZBODIsIDB4NkE4MywKKyAgICAweDZBODUsIDB4NkE4NiwgMHg2QTg3LCAweDZBODgsIDB4NkE4QSwgMHg2QThCLCAweDZBOEMsIDB4NkE4RCwKKyAgICAweDZBOEYsIDB4NkE5MiwgMHg2QTkzLCAweDZBOTUsIDB4NkE5NiwgMHg2QTk4LCAweDZBOTksIDB4NkE5QSwKKyAgICAweDZBOUIsIDB4NkE5RCwgMHg2QTlFLCAweDZBOUYsIDB4NkFBMSwgMHg2QUE0LCAweDZBQTUsIDB4NkFBNiwKKyAgICAweDZBQTcsIDB4NkFBOCwgMHg2QUFBLCAweDZBQUQsIDB4NkFBRSwgMHg2QUIwLCAweDZBQjEsIDB4NkFCMiwKKyAgICAweDZBQjQsIDB4NkFCNSwgMHg2QUI2LCAweDZBQjcsIDB4NkFCOSwgMHg2QUJBLCAweDZBQkMsIDB4NkFCRCwKKyAgICAweDZBQkUsIDB4NkFCRiwgMHg2QUMwLCAweDZBQzEsIDB4NkFDMiwgMHg2QUM0LCAweDZBQzUsIDB4NkFDNiwKKyAgICAweDZBQzcsIDB4NkFDOCwgMHg2QUM5LCAweDZBQ0EsIDB4NkFDQiwgMHg2QUNDLCAweDZBQ0QsIDB4NkFDRSwKKyAgICAweDZBQ0YsIDB4NkFEMCwgMHg2QUQxLCAweDZBRDIsIDB4NkFENCwgMHg2QUQ1LCAweDZBRDYsIDB4NkFENywKKyAgICAweDZBRDgsIDB4NkFEOSwgMHg2QURDLCAweDZBRTAsIDB4NkFFMSwgMHg2QUUyLCAweDZBRTMsIDB4NkFFNCwKKyAgICAweDZBRTUsIDB4NkFFNiwgMHg2QUU5LCAweDZBRUIsIDB4NkFFRCwgMHg2QUVFLCAweDZBRUYsIDB4NkFGMCwKKyAgICAweDZBRjEsIDB4NkFGMiwgMHg2QUY0LCAweDZBRjUsIDB4NkFGNiwgMHg2QUY3LCAweDZBRjksIDB4NkFGQSwKKyAgICAweDZBRkMsIDB4NkFGRCwgMHg2QUZFLCAweDZBRkYsIDB4NkIwMCwgMHg2QjAxLCAweDZCMDIsIDB4NkIwMywKKyAgICAweDZCMDUsIDB4NkIwNiwgMHg2QjA3LCAweDZCMDgsIDB4NkIwOSwgMHg2QjBCLCAweDZCMEMsIDB4NkIwRCwKKyAgICAweDZCMEUsIDB4NkIxMCwgMHg2QjExLCAweDZCMTMsIDB4NkIxNCwgMHg2QjE1LCAweDZCMTcsIDB4NkIxOCwKKyAgICAweDZCMTksIDB4NkIxQSwgMHg2QjFCLCAweDZCMUMsIDB4NkIxRCwgMHg2QjFGLCAweDZCMjUsIDB4NkIyNiwKKyAgICAweDZCMjgsIDB4NkIyOSwgMHg2QjJBLCAweDZCMkIsIDB4NkIyQywgMHg2QjJELCAweDZCMkUsIDB4NkIyRiwKKyAgICAweDZCMzAsIDB4NkIzMSwgMHg2QjMzLCAweDZCMzQsIDB4NkIzNSwgMHg2QjM2LCAweDZCMzgsIDB4NkIzQiwKKyAgICAweDZCM0MsIDB4NkIzRiwgMHg2QjQwLCAweDZCNDEsIDB4NkI0MiwgMHg2QjQ0LCAweDZCNDUsIDB4NkI0OCwKKyAgICAweDZCNEEsIDB4NkI0QiwgMHg2QjRELCAweDZCNEUsIDB4NkI0RiwgMHg2QjUxLCAweDZCNTIsIDB4NkI1MywKKyAgICAweDZCNTQsIDB4NkI1NSwgMHg2QjU2LCAweDZCNTcsIDB4NkI1OCwgMHg2QjVBLCAweDZCNUIsIDB4NkI1QywKKyAgICAweDZCNUQsIDB4NkI1RSwgMHg2QjYwLCAweDZCNjgsIDB4NkI2OSwgMHg2QjZCLCAweDZCNkMsIDB4NkI2RCwKKyAgICAweDZCNkUsIDB4NkI2RiwgMHg2QjcwLCAweDZCNzEsIDB4NkI3MywgMHg2Qjc0LCAweDZCNzUsIDB4NkI3NiwKKyAgICAweDZCN0EsIDB4NkI3RCwgMHg2QjdFLCAweDZCN0YsIDB4NkI4MCwgMHg2Qjg1LCAweDZCODgsIDB4NkI4QywKKyAgICAweDZCOEUsIDB4NkI4RiwgMHg2QjkwLCAweDZCOTEsIDB4NkI5NCwgMHg2Qjk1LCAweDZCOTcsIDB4NkI5OSwKKyAgICAweDZCOUMsIDB4NkI5RCwgMHg2QjlGLCAweDZCQTAsIDB4NkJBMiwgMHg2QkEzLCAweDZCQTUsIDB4NkJBNiwKKyAgICAweDZCQTcsIDB4NkJBOCwgMHg2QkE5LCAweDZCQUMsIDB4NkJBRCwgMHg2QkIwLCAweDZCQjEsIDB4NkJCNiwKKyAgICAweDZCQjgsIDB4NkJCOSwgMHg2QkJDLCAweDZCQkQsIDB4NkJCRSwgMHg2QkMwLCAweDZCQzMsIDB4NkJDNCwKKyAgICAweDZCQzcsIDB4NkJDOCwgMHg2QkM5LCAweDZCQ0EsIDB4NkJDQywgMHg2QkNFLCAweDZCRDAsIDB4NkJEMSwKKyAgICAweDZCRDgsIDB4NkJEQSwgMHg2QkRDLCAweDZCREQsIDB4NkJERSwgMHg2QkRGLCAweDZCRTAsIDB4NkJFMiwKKyAgICAweDZCRTMsIDB4NkJFNCwgMHg2QkU1LCAweDZCRTYsIDB4NkJFNywgMHg2QkU4LCAweDZCRTksIDB4NkJFQywKKyAgICAweDZCRUQsIDB4NkJFRSwgMHg2QkYwLCAweDZCRjEsIDB4NkJGMiwgMHg2QkY0LCAweDZCRjYsIDB4NkJGNywKKyAgICAweDZCRjgsIDB4NkJGQSwgMHg2QkZCLCAweDZCRkMsIDB4NkJGRSwgMHg2QzAwLCAweDZDMDEsIDB4NkMwMiwKKyAgICAweDZDMDMsIDB4NkMwNCwgMHg2QzA5LCAweDZDMEEsIDB4NkMwQiwgMHg2QzBFLCAweDZDMTIsIDB4NkMxNywKKyAgICAweDZDMUMsIDB4NkMxRCwgMHg2QzFFLCAweDZDMjAsIDB4NkMyNSwgMHg2QzJELCAweDZDMzEsIDB4NkMzMywKKyAgICAweDZDMzYsIDB4NkMzNywgMHg2QzM5LCAweDZDM0EsIDB4NkMzQiwgMHg2QzNDLCAweDZDM0UsIDB4NkMzRiwKKyAgICAweDZDNDMsIDB4NkM0NCwgMHg2QzQ1LCAweDZDNDgsIDB4NkM0QiwgMHg2QzRDLCAweDZDNEQsIDB4NkM0RSwKKyAgICAweDZDNEYsIDB4NkM1MSwgMHg2QzUyLCAweDZDNTMsIDB4NkM1NiwgMHg2QzU4LCAweDZDNTksIDB4NkM1QSwKKyAgICAweDZDNjIsIDB4NkM2MywgMHg2QzY1LCAweDZDNjYsIDB4NkM2NywgMHg2QzZCLCAweDZDNkMsIDB4NkM2RCwKKyAgICAweDZDNkUsIDB4NkM2RiwgMHg2QzcxLCAweDZDNzMsIDB4NkM3NSwgMHg2Qzc3LCAweDZDNzgsIDB4NkM3QSwKKyAgICAweDZDN0IsIDB4NkM3QywgMHg2QzdGLCAweDZDODAsIDB4NkM4NCwgMHg2Qzg3LCAweDZDOEEsIDB4NkM4QiwKKyAgICAweDZDOEQsIDB4NkM4RSwgMHg2QzkxLCAweDZDOTIsIDB4NkM5NSwgMHg2Qzk2LCAweDZDOTcsIDB4NkM5OCwKKyAgICAweDZDOUEsIDB4NkM5QywgMHg2QzlELCAweDZDOUUsIDB4NkNBMCwgMHg2Q0EyLCAweDZDQTgsIDB4NkNBQywKKyAgICAweDZDQUYsIDB4NkNCMCwgMHg2Q0I0LCAweDZDQjUsIDB4NkNCNiwgMHg2Q0I3LCAweDZDQkEsIDB4NkNDMCwKKyAgICAweDZDQzEsIDB4NkNDMiwgMHg2Q0MzLCAweDZDQzYsIDB4NkNDNywgMHg2Q0M4LCAweDZDQ0IsIDB4NkNDRCwKKyAgICAweDZDQ0UsIDB4NkNDRiwgMHg2Q0QxLCAweDZDRDIsIDB4NkNEOCwgMHg2Q0Q5LCAweDZDREEsIDB4NkNEQywKKyAgICAweDZDREQsIDB4NkNERiwgMHg2Q0U0LCAweDZDRTYsIDB4NkNFNywgMHg2Q0U5LCAweDZDRUMsIDB4NkNFRCwKKyAgICAweDZDRjIsIDB4NkNGNCwgMHg2Q0Y5LCAweDZDRkYsIDB4NkQwMCwgMHg2RDAyLCAweDZEMDMsIDB4NkQwNSwKKyAgICAweDZEMDYsIDB4NkQwOCwgMHg2RDA5LCAweDZEMEEsIDB4NkQwRCwgMHg2RDBGLCAweDZEMTAsIDB4NkQxMSwKKyAgICAweDZEMTMsIDB4NkQxNCwgMHg2RDE1LCAweDZEMTYsIDB4NkQxOCwgMHg2RDFDLCAweDZEMUQsIDB4NkQxRiwKKyAgICAweDZEMjAsIDB4NkQyMSwgMHg2RDIyLCAweDZEMjMsIDB4NkQyNCwgMHg2RDI2LCAweDZEMjgsIDB4NkQyOSwKKyAgICAweDZEMkMsIDB4NkQyRCwgMHg2RDJGLCAweDZEMzAsIDB4NkQzNCwgMHg2RDM2LCAweDZEMzcsIDB4NkQzOCwKKyAgICAweDZEM0EsIDB4NkQzRiwgMHg2RDQwLCAweDZENDIsIDB4NkQ0NCwgMHg2RDQ5LCAweDZENEMsIDB4NkQ1MCwKKyAgICAweDZENTUsIDB4NkQ1NiwgMHg2RDU3LCAweDZENTgsIDB4NkQ1QiwgMHg2RDVELCAweDZENUYsIDB4NkQ2MSwKKyAgICAweDZENjIsIDB4NkQ2NCwgMHg2RDY1LCAweDZENjcsIDB4NkQ2OCwgMHg2RDZCLCAweDZENkMsIDB4NkQ2RCwKKyAgICAweDZENzAsIDB4NkQ3MSwgMHg2RDcyLCAweDZENzMsIDB4NkQ3NSwgMHg2RDc2LCAweDZEN0EsIDB4NkQ3QiwKKyAgICAweDZEN0QsIDB4NkQ3RSwgMHg2RDdGLCAweDZEODAsIDB4NkQ4MSwgMHg2RDgzLCAweDZEODQsIDB4NkQ4NiwKKyAgICAweDZEOEEsIDB4NkQ4QiwgMHg2RDhELCAweDZEOEYsIDB4NkQ5MCwgMHg2RDkyLCAweDZEOTYsIDB4NkQ5NywKKyAgICAweDZEOTgsIDB4NkQ5OSwgMHg2RDlBLCAweDZEOUMsIDB4NkRBMiwgMHg2REE1LCAweDZEQUMsIDB4NkRBRCwKKyAgICAweDZEQjAsIDB4NkRCMSwgMHg2REIzLCAweDZEQjQsIDB4NkRCNiwgMHg2REI3LCAweDZEQjksIDB4NkRCQSwKKyAgICAweDZEQkIsIDB4NkRCQywgMHg2REJELCAweDZEQkUsIDB4NkRDMSwgMHg2REMyLCAweDZEQzMsIDB4NkRDOCwKKyAgICAweDZEQzksIDB4NkRDQSwgMHg2RENELCAweDZEQ0UsIDB4NkRDRiwgMHg2REQwLCAweDZERDIsIDB4NkREMywKKyAgICAweDZERDQsIDB4NkRENSwgMHg2REQ3LCAweDZEREEsIDB4NkREQiwgMHg2RERDLCAweDZEREYsIDB4NkRFMiwKKyAgICAweDZERTMsIDB4NkRFNSwgMHg2REU3LCAweDZERTgsIDB4NkRFOSwgMHg2REVELCAweDZERUYsIDB4NkRGMCwKKyAgICAweDZERjIsIDB4NkRGNCwgMHg2REY4LCAweDZERkQsIDB4NkRGRSwgMHg2REZGLCAweDZFMDAsIDB4NkUwMSwKKyAgICAweDZFMDIsIDB4NkUwMywgMHg2RTA0LCAweDZFMDYsIDB4NkUwNywgMHg2RTA4LCAweDZFMDksIDB4NkUwQiwKKyAgICAweDZFMEYsIDB4NkUxMiwgMHg2RTEzLCAweDZFMTUsIDB4NkUxOCwgMHg2RTE5LCAweDZFMUIsIDB4NkUxQywKKyAgICAweDZFMUUsIDB4NkUxRiwgMHg2RTIyLCAweDZFMjcsIDB4NkUyOCwgMHg2RTJBLCAweDZFMkUsIDB4NkUzMCwKKyAgICAweDZFMzEsIDB4NkUzMywgMHg2RTM1LCAweDZFMzYsIDB4NkUzNywgMHg2RTM5LCAweDZFM0IsIDB4NkUzQywKKyAgICAweDZFM0QsIDB4NkUzRiwgMHg2RTQwLCAweDZFNDEsIDB4NkU0MiwgMHg2RTQ1LCAweDZFNDYsIDB4NkU0NywKKyAgICAweDZFNDgsIDB4NkU0OSwgMHg2RTRBLCAweDZFNEIsIDB4NkU0QywgMHg2RTRGLCAweDZFNTAsIDB4NkU1MSwKKyAgICAweDZFNTIsIDB4NkU1NSwgMHg2RTU3LCAweDZFNTksIDB4NkU1QSwgMHg2RTVDLCAweDZFNUQsIDB4NkU2MCwKKyAgICAweDZFNjEsIDB4NkU2MiwgMHg2RTYzLCAweDZFNjQsIDB4NkU2NSwgMHg2RTY2LCAweDZFNjcsIDB4NkU2OCwKKyAgICAweDZFNjksIDB4NkU2QSwgMHg2RTZDLCAweDZFNkQsIDB4NkU3MCwgMHg2RTcxLCAweDZFNzIsIDB4NkU3MywKKyAgICAweDZFNzQsIDB4NkU3NSwgMHg2RTc2LCAweDZFNzcsIDB4NkU3OCwgMHg2RTc5LCAweDZFN0EsIDB4NkU3QiwKKyAgICAweDZFN0MsIDB4NkU3RCwgMHg2RTgwLCAweDZFODEsIDB4NkU4MiwgMHg2RTg0LCAweDZFODcsIDB4NkU4OCwKKyAgICAweDZFOEEsIDB4NkU4QiwgMHg2RThDLCAweDZFOEQsIDB4NkU4RSwgMHg2RTkxLCAweDZFOTIsIDB4NkU5MywKKyAgICAweDZFOTQsIDB4NkU5NSwgMHg2RTk3LCAweDZFOTksIDB4NkU5QSwgMHg2RTlCLCAweDZFOUUsIDB4NkVBMCwKKyAgICAweDZFQTEsIDB4NkVBMywgMHg2RUE0LCAweDZFQTYsIDB4NkVBOCwgMHg2RUE5LCAweDZFQUIsIDB4NkVBQywKKyAgICAweDZFQUQsIDB4NkVBRSwgMHg2RUIwLCAweDZFQjMsIDB4NkVCNSwgMHg2RUI4LCAweDZFQjksIDB4NkVCQywKKyAgICAweDZFQkUsIDB4NkVCRiwgMHg2RUMwLCAweDZFQzMsIDB4NkVDNiwgMHg2RUM4LCAweDZFQzksIDB4NkVDQSwKKyAgICAweDZFQ0QsIDB4NkVEMCwgMHg2RUQyLCAweDZFRDYsIDB4NkVEOCwgMHg2RUQ5LCAweDZFREIsIDB4NkVEQywKKyAgICAweDZFREQsIDB4NkVFMywgMHg2RUU3LCAweDZFRUEsIDB4NkVFQiwgMHg2RUVELCAweDZFRUUsIDB4NkVGMCwKKyAgICAweDZFRjEsIDB4NkVGMywgMHg2RUY1LCAweDZFRjYsIDB4NkVGQSwgMHg2RUZCLCAweDZFRkMsIDB4NkVGRCwKKyAgICAweDZFRkUsIDB4NkYwMCwgMHg2RjAzLCAweDZGMDQsIDB4NkYwNSwgMHg2RjA3LCAweDZGMDgsIDB4NkYwQSwKKyAgICAweDZGMEIsIDB4NkYwQywgMHg2RjBELCAweDZGMEUsIDB4NkYxMCwgMHg2RjExLCAweDZGMTIsIDB4NkYxNiwKKyAgICAweDZGMTcsIDB4NkYxOCwgMHg2RjE5LCAweDZGMUIsIDB4NkYxQywgMHg2RjFELCAweDZGMUUsIDB4NkYxRiwKKyAgICAweDZGMjEsIDB4NkYyNSwgMHg2RjI2LCAweDZGMjcsIDB4NkYyOCwgMHg2RjJFLCAweDZGMzAsIDB4NkYzNCwKKyAgICAweDZGMzUsIDB4NkYzNywgMHg2RjM5LCAweDZGM0EsIDB4NkYzQiwgMHg2RjNDLCAweDZGM0QsIDB4NkY0MCwKKyAgICAweDZGNDIsIDB4NkY0MywgMHg2RjQ0LCAweDZGNDUsIDB4NkY0OCwgMHg2RjQ5LCAweDZGNEEsIDB4NkY0QywKKyAgICAweDZGNEUsIDB4NkY0RiwgMHg2RjUwLCAweDZGNTIsIDB4NkY1MywgMHg2RjU1LCAweDZGNTYsIDB4NkY1NywKKyAgICAweDZGNUEsIDB4NkY1QiwgMHg2RjVELCAweDZGNUYsIDB4NkY2MCwgMHg2RjYxLCAweDZGNjMsIDB4NkY2NSwKKyAgICAweDZGNjcsIDB4NkY2OCwgMHg2RjY5LCAweDZGNkEsIDB4NkY2QiwgMHg2RjZDLCAweDZGNzEsIDB4NkY3MywKKyAgICAweDZGNzUsIDB4NkY3NiwgMHg2Rjc5LCAweDZGN0IsIDB4NkY3RCwgMHg2RjdFLCAweDZGODEsIDB4NkY4MiwKKyAgICAweDZGODMsIDB4NkY4NSwgMHg2RjhBLCAweDZGOEIsIDB4NkY4RiwgMHg2RjkwLCAweDZGOTEsIDB4NkY5MiwKKyAgICAweDZGOTMsIDB4NkY5NCwgMHg2Rjk1LCAweDZGOTYsIDB4NkY5OCwgMHg2Rjk5LCAweDZGOUEsIDB4NkY5QiwKKyAgICAweDZGOUQsIDB4NkY5RSwgMHg2RjlGLCAweDZGQTIsIDB4NkZBMywgMHg2RkE1LCAweDZGQTYsIDB4NkZBOCwKKyAgICAweDZGQUEsIDB4NkZBQiwgMHg2RkFDLCAweDZGQUQsIDB4NkZBRiwgMHg2RkIwLCAweDZGQjIsIDB4NkZCNCwKKyAgICAweDZGQjUsIDB4NkZCNywgMHg2RkI4LCAweDZGQkEsIDB4NkZCQiwgMHg2RkJDLCAweDZGQkQsIDB4NkZCRSwKKyAgICAweDZGQkYsIDB4NkZDNCwgMHg2RkM1LCAweDZGQzYsIDB4NkZDNywgMHg2RkM4LCAweDZGQ0EsIDB4NkZDQiwKKyAgICAweDZGQ0MsIDB4NkZDRCwgMHg2RkNFLCAweDZGQ0YsIDB4NkZEMCwgMHg2RkQzLCAweDZGRDQsIDB4NkZENiwKKyAgICAweDZGRDcsIDB4NkZEOSwgMHg2RkRBLCAweDZGREMsIDB4NkZERCwgMHg2RkUyLCAweDZGRTMsIDB4NkZFNSwKKyAgICAweDZGRTYsIDB4NkZFNywgMHg2RkU4LCAweDZGRTksIDB4NkZFQSwgMHg2RkVDLCAweDZGRUQsIDB4NkZGMiwKKyAgICAweDZGRjMsIDB4NkZGNCwgMHg2RkY1LCAweDZGRjYsIDB4NkZGNywgMHg2RkY4LCAweDZGRjksIDB4NkZGQiwKKyAgICAweDZGRkQsIDB4NkZGRiwgMHg3MDAwLCAweDcwMDEsIDB4NzAwMiwgMHg3MDAzLCAweDcwMDQsIDB4NzAwNywKKyAgICAweDcwMDgsIDB4NzAwQSwgMHg3MDBDLCAweDcwMEQsIDB4NzAwRSwgMHg3MDEwLCAweDcwMTIsIDB4NzAxMywKKyAgICAweDcwMTQsIDB4NzAxNiwgMHg3MDE3LCAweDcwMTksIDB4NzAxQywgMHg3MDFFLCAweDcwMjEsIDB4NzAyMiwKKyAgICAweDcwMjQsIDB4NzAyNSwgMHg3MDI2LCAweDcwMjksIDB4NzAyQSwgMHg3MDJCLCAweDcwMkMsIDB4NzAyRCwKKyAgICAweDcwMkUsIDB4NzAyRiwgMHg3MDMxLCAweDcwMzMsIDB4NzAzNCwgMHg3MDM2LCAweDcwMzcsIDB4NzAzOCwKKyAgICAweDcwM0EsIDB4NzAzQiwgMHg3MDNDLCAweDcwM0QsIDB4NzAzRiwgMHg3MDQwLCAweDcwNDEsIDB4NzA0MiwKKyAgICAweDcwNDUsIDB4NzA0NiwgMHg3MDQ3LCAweDcwNDgsIDB4NzA0OSwgMHg3MDRBLCAweDcwNEIsIDB4NzA0RCwKKyAgICAweDcwNEUsIDB4NzA1MCwgMHg3MDUyLCAweDcwNTMsIDB4NzA1NCwgMHg3MDU2LCAweDcwNTcsIDB4NzA1OSwKKyAgICAweDcwNUEsIDB4NzA1QiwgMHg3MDVDLCAweDcwNUYsIDB4NzA2MCwgMHg3MDYxLCAweDcwNjIsIDB4NzA2NSwKKyAgICAweDcwNjYsIDB4NzA2OCwgMHg3MDY5LCAweDcwNkEsIDB4NzA2RSwgMHg3MDcxLCAweDcwNzIsIDB4NzA3MywKKyAgICAweDcwNzQsIDB4NzA3NywgMHg3MDc5LCAweDcwN0EsIDB4NzA3QiwgMHg3MDdELCAweDcwODEsIDB4NzA4MiwKKyAgICAweDcwODMsIDB4NzA4NCwgMHg3MDg2LCAweDcwODcsIDB4NzA4OCwgMHg3MDhCLCAweDcwOEMsIDB4NzA4RCwKKyAgICAweDcwOEYsIDB4NzA5MCwgMHg3MDkxLCAweDcwOTMsIDB4NzA5NywgMHg3MDk4LCAweDcwOUEsIDB4NzA5QiwKKyAgICAweDcwOUUsIDB4NzA5RiwgMHg3MEEwLCAweDcwQTEsIDB4NzBBMiwgMHg3MEEzLCAweDcwQTQsIDB4NzBBNSwKKyAgICAweDcwQTYsIDB4NzBBNywgMHg3MEE4LCAweDcwQTksIDB4NzBBQSwgMHg3MEIwLCAweDcwQjIsIDB4NzBCNCwKKyAgICAweDcwQjUsIDB4NzBCNiwgMHg3MEJBLCAweDcwQkUsIDB4NzBCRiwgMHg3MEM0LCAweDcwQzUsIDB4NzBDNiwKKyAgICAweDcwQzcsIDB4NzBDOSwgMHg3MENCLCAweDcwQ0MsIDB4NzBDRCwgMHg3MENFLCAweDcwRDAsIDB4NzBEMSwKKyAgICAweDcwRDIsIDB4NzBEMywgMHg3MEQ0LCAweDcwRDUsIDB4NzBENiwgMHg3MEQ3LCAweDcwREEsIDB4NzBEQywKKyAgICAweDcwREQsIDB4NzBERSwgMHg3MEUwLCAweDcwRTEsIDB4NzBFMiwgMHg3MEUzLCAweDcwRTUsIDB4NzBFQSwKKyAgICAweDcwRUUsIDB4NzBGMCwgMHg3MEYxLCAweDcwRjIsIDB4NzBGMywgMHg3MEY1LCAweDcwRjYsIDB4NzBGOCwKKyAgICAweDcwRkEsIDB4NzBGQiwgMHg3MEZDLCAweDcwRkUsIDB4NzBGRiwgMHg3MTAwLCAweDcxMDEsIDB4NzEwMiwKKyAgICAweDcxMDMsIDB4NzEwNCwgMHg3MTA1LCAweDcxMDYsIDB4NzEwNywgMHg3MTA4LCAweDcxMEIsIDB4NzEwQywKKyAgICAweDcxMEQsIDB4NzEwRSwgMHg3MTBGLCAweDcxMTEsIDB4NzExMiwgMHg3MTE0LCAweDcxMTcsIDB4NzExQiwKKyAgICAweDcxMUMsIDB4NzExRCwgMHg3MTFFLCAweDcxMUYsIDB4NzEyMCwgMHg3MTIyLCAweDcxMjMsIDB4NzEyNCwKKyAgICAweDcxMjUsIDB4NzEyNywgMHg3MTI4LCAweDcxMjksIDB4NzEyQSwgMHg3MTJCLCAweDcxMkMsIDB4NzEyRCwKKyAgICAweDcxMkUsIDB4NzEzMiwgMHg3MTMzLCAweDcxMzQsIDB4NzEzNSwgMHg3MTM3LCAweDcxMzgsIDB4NzEzOSwKKyAgICAweDcxM0EsIDB4NzEzQiwgMHg3MTNDLCAweDcxM0QsIDB4NzEzRSwgMHg3MTNGLCAweDcxNDAsIDB4NzE0MSwKKyAgICAweDcxNDIsIDB4NzE0MywgMHg3MTQ0LCAweDcxNDYsIDB4NzE0NywgMHg3MTQ4LCAweDcxNEIsIDB4NzE0RCwKKyAgICAweDcxNEYsIDB4NzE1MCwgMHg3MTUxLCAweDcxNTMsIDB4NzE1NCwgMHg3MTU1LCAweDcxNTYsIDB4NzE1NywKKyAgICAweDcxNTgsIDB4NzE1OSwgMHg3MTVBLCAweDcxNUIsIDB4NzE1RCwgMHg3MTVGLCAweDcxNjAsIDB4NzE2MSwKKyAgICAweDcxNjMsIDB4NzE2NSwgMHg3MTZBLCAweDcxNkIsIDB4NzE2RCwgMHg3MTZGLCAweDcxNzAsIDB4NzE3MSwKKyAgICAweDcxNzQsIDB4NzE3NSwgMHg3MTc2LCAweDcxNzcsIDB4NzE3OSwgMHg3MTdCLCAweDcxN0MsIDB4NzE3RSwKKyAgICAweDcxN0YsIDB4NzE4MCwgMHg3MTgxLCAweDcxODIsIDB4NzE4MywgMHg3MTg1LCAweDcxODYsIDB4NzE4NywKKyAgICAweDcxODgsIDB4NzE4OSwgMHg3MThCLCAweDcxOEMsIDB4NzE4RCwgMHg3MThFLCAweDcxOTAsIDB4NzE5MSwKKyAgICAweDcxOTMsIDB4NzE5NSwgMHg3MTk2LCAweDcxOUEsIDB4NzE5QiwgMHg3MTlDLCAweDcxOUQsIDB4NzE5RSwKKyAgICAweDcxQTEsIDB4NzFBMiwgMHg3MUEzLCAweDcxQTQsIDB4NzFBNSwgMHg3MUE2LCAweDcxQTcsIDB4NzFBOSwKKyAgICAweDcxQUEsIDB4NzFBQiwgMHg3MUFELCAweDcxQUUsIDB4NzFBRiwgMHg3MUIwLCAweDcxQjIsIDB4NzFCNCwKKyAgICAweDcxQjYsIDB4NzFCNywgMHg3MUI4LCAweDcxQkEsIDB4NzFCQiwgMHg3MUJDLCAweDcxQkQsIDB4NzFCRiwKKyAgICAweDcxQzAsIDB4NzFDMiwgMHg3MUM0LCAweDcxQzUsIDB4NzFDNiwgMHg3MUM3LCAweDcxQzksIDB4NzFDQSwKKyAgICAweDcxQ0IsIDB4NzFDQywgMHg3MUNELCAweDcxQ0YsIDB4NzFEMCwgMHg3MUQxLCAweDcxRDMsIDB4NzFENiwKKyAgICAweDcxRDcsIDB4NzFEOCwgMHg3MURBLCAweDcxREIsIDB4NzFERCwgMHg3MURFLCAweDcxRTEsIDB4NzFFMiwKKyAgICAweDcxRTMsIDB4NzFFNCwgMHg3MUU4LCAweDcxRTksIDB4NzFFQSwgMHg3MUVCLCAweDcxRUMsIDB4NzFFRiwKKyAgICAweDcxRjAsIDB4NzFGMSwgMHg3MUYyLCAweDcxRjMsIDB4NzFGNSwgMHg3MUY2LCAweDcxRjcsIDB4NzFGOCwKKyAgICAweDcxRkEsIDB4NzFGQiwgMHg3MUZELCAweDcxRkYsIDB4NzIwMCwgMHg3MjAxLCAweDcyMDIsIDB4NzIwMywKKyAgICAweDcyMDQsIDB4NzIwNSwgMHg3MjA3LCAweDcyMDgsIDB4NzIwOSwgMHg3MjBBLCAweDcyMEIsIDB4NzIwQywKKyAgICAweDcyMEUsIDB4NzIwRiwgMHg3MjExLCAweDcyMTIsIDB4NzIxMywgMHg3MjE0LCAweDcyMTUsIDB4NzIxNiwKKyAgICAweDcyMTcsIDB4NzIxOCwgMHg3MjE5LCAweDcyMUEsIDB4NzIxQywgMHg3MjFFLCAweDcyMUYsIDB4NzIyMCwKKyAgICAweDcyMjEsIDB4NzIyMiwgMHg3MjIzLCAweDcyMjQsIDB4NzIyNSwgMHg3MjI2LCAweDcyMjcsIDB4NzIyOSwKKyAgICAweDcyMkIsIDB4NzIyRCwgMHg3MjJFLCAweDcyMkYsIDB4NzIzMywgMHg3MjM0LCAweDcyM0MsIDB4NzI0MCwKKyAgICAweDcyNDEsIDB4NzI0MiwgMHg3MjQzLCAweDcyNDQsIDB4NzI0NSwgMHg3MjQ2LCAweDcyNDksIDB4NzI0QSwKKyAgICAweDcyNEIsIDB4NzI0RSwgMHg3MjRGLCAweDcyNTAsIDB4NzI1MSwgMHg3MjUzLCAweDcyNTQsIDB4NzI1NSwKKyAgICAweDcyNTcsIDB4NzI1QSwgMHg3MjVDLCAweDcyNUUsIDB4NzI2MCwgMHg3MjYzLCAweDcyNjQsIDB4NzI2NSwKKyAgICAweDcyNjgsIDB4NzI2QSwgMHg3MjZCLCAweDcyNkMsIDB4NzI2RCwgMHg3MjcwLCAweDcyNzEsIDB4NzI3MywKKyAgICAweDcyNzQsIDB4NzI3NiwgMHg3Mjc3LCAweDcyNzgsIDB4NzI3QiwgMHg3MjdDLCAweDcyODIsIDB4NzI4MywKKyAgICAweDcyODUsIDB4NzI4NiwgMHg3Mjg3LCAweDcyODgsIDB4NzI4OSwgMHg3MjhDLCAweDcyOEUsIDB4NzI5MCwKKyAgICAweDcyOTEsIDB4NzI5MywgMHg3Mjk0LCAweDcyOTUsIDB4NzI5NywgMHg3Mjk4LCAweDcyOTksIDB4NzI5QSwKKyAgICAweDcyOUIsIDB4NzI5QywgMHg3MjlELCAweDcyOUUsIDB4NzJBMCwgMHg3MkExLCAweDcyQTMsIDB4NzJBNCwKKyAgICAweDcyQTUsIDB4NzJBNiwgMHg3MkE4LCAweDcyQTksIDB4NzJBQSwgMHg3MkFCLCAweDcyQUUsIDB4NzJCMSwKKyAgICAweDcyQjIsIDB4NzJCMywgMHg3MkI1LCAweDcyQkEsIDB4NzJCQiwgMHg3MkJDLCAweDcyQkQsIDB4NzJCRSwKKyAgICAweDcyQkYsIDB4NzJDNSwgMHg3MkM2LCAweDcyQzcsIDB4NzJDOSwgMHg3MkNBLCAweDcyQ0IsIDB4NzJDQywKKyAgICAweDcyQ0YsIDB4NzJEMSwgMHg3MkQzLCAweDcyRDQsIDB4NzJENSwgMHg3MkQ2LCAweDcyRDgsIDB4NzJEQSwKKyAgICAweDcyREIsIDB4NzJEQywgMHg3MkRELCAweDcyREYsIDB4NzJFMiwgMHg3MkUzLCAweDcyRTQsIDB4NzJFNSwKKyAgICAweDcyRTYsIDB4NzJFNywgMHg3MkVBLCAweDcyRUIsIDB4NzJGNSwgMHg3MkY2LCAweDcyRkUsIDB4NzJGRiwKKyAgICAweDczMDAsIDB4NzMwMiwgMHg3MzA0LCAweDczMDUsIDB4NzMwNiwgMHg3MzA3LCAweDczMDgsIDB4NzMwOSwKKyAgICAweDczMEIsIDB4NzMwQywgMHg3MzBELCAweDczMEYsIDB4NzMxMCwgMHg3MzExLCAweDczMTIsIDB4NzMxNCwKKyAgICAweDczMTgsIDB4NzMxOSwgMHg3MzFBLCAweDczMUYsIDB4NzMyMCwgMHg3MzIzLCAweDczMjQsIDB4NzMyNiwKKyAgICAweDczMjcsIDB4NzMyOCwgMHg3MzJELCAweDczMkYsIDB4NzMzMCwgMHg3MzMyLCAweDczMzMsIDB4NzMzNSwKKyAgICAweDczM0EsIDB4NzMzQywgMHg3MzNELCAweDczNDAsIDB4NzM0MiwgMHg3MzQzLCAweDczNDYsIDB4NzM0NywKKyAgICAweDczNDgsIDB4NzM0OSwgMHg3MzRBLCAweDczNEIsIDB4NzM0QywgMHg3MzRFLCAweDczNEYsIDB4NzM1MSwKKyAgICAweDczNTMsIDB4NzM1NCwgMHg3MzU1LCAweDczNTYsIDB4NzM1OCwgMHg3MzU5LCAweDczNUEsIDB4NzM1QiwKKyAgICAweDczNUMsIDB4NzM1RCwgMHg3MzVFLCAweDczNUYsIDB4NzM2MSwgMHg3MzYyLCAweDczNjMsIDB4NzM2NCwKKyAgICAweDczNjUsIDB4NzM2NiwgMHg3MzY3LCAweDczNjksIDB4NzM2RSwgMHg3MzcxLCAweDczNzMsIDB4NzM3NCwKKyAgICAweDczNzYsIDB4NzM3OSwgMHg3MzdELCAweDczN0YsIDB4NzM4MSwgMHg3MzgyLCAweDczODMsIDB4NzM4NSwKKyAgICAweDczODYsIDB4NzM4OCwgMHg3MzhBLCAweDczOEMsIDB4NzM4RCwgMHg3MzhGLCAweDczOTAsIDB4NzM5MiwKKyAgICAweDczOTMsIDB4NzM5NCwgMHg3Mzk1LCAweDczOTcsIDB4NzM5OCwgMHg3Mzk5LCAweDczOUEsIDB4NzM5QywKKyAgICAweDczOUQsIDB4NzM5RSwgMHg3M0EwLCAweDczQTEsIDB4NzNBMywgMHg3M0E0LCAweDczQTUsIDB4NzNBNiwKKyAgICAweDczQTcsIDB4NzNBOCwgMHg3M0FBLCAweDczQUMsIDB4NzNBRCwgMHg3M0IxLCAweDczQjQsIDB4NzNCNSwKKyAgICAweDczQjYsIDB4NzNCOCwgMHg3M0I5LCAweDczQkMsIDB4NzNCRCwgMHg3M0JFLCAweDczQkYsIDB4NzNDMSwKKyAgICAweDczQzMsIDB4NzNDNCwgMHg3M0M1LCAweDczQzYsIDB4NzNDNywgMHg3M0NCLCAweDczQ0MsIDB4NzNDRSwKKyAgICAweDczRDIsIDB4NzNEMywgMHg3M0Q0LCAweDczRDUsIDB4NzNENiwgMHg3M0Q3LCAweDczRDgsIDB4NzNEQSwKKyAgICAweDczREIsIDB4NzNEQywgMHg3M0RELCAweDczREYsIDB4NzNFMSwgMHg3M0UyLCAweDczRTMsIDB4NzNFNCwKKyAgICAweDczRTYsIDB4NzNFOCwgMHg3M0VBLCAweDczRUIsIDB4NzNFQywgMHg3M0VFLCAweDczRUYsIDB4NzNGMCwKKyAgICAweDczRjEsIDB4NzNGMywgMHg3M0Y0LCAweDczRjUsIDB4NzNGNiwgMHg3M0Y3LCAweDczRjgsIDB4NzNGOSwKKyAgICAweDczRkEsIDB4NzNGQiwgMHg3M0ZDLCAweDczRkQsIDB4NzNGRiwgMHg3NDAwLCAweDc0MDEsIDB4NzQwMiwKKyAgICAweDc0MDQsIDB4NzQwNywgMHg3NDA4LCAweDc0MEIsIDB4NzQwQywgMHg3NDBELCAweDc0MEUsIDB4NzQxMSwKKyAgICAweDc0MTIsIDB4NzQxMywgMHg3NDE0LCAweDc0MTUsIDB4NzQxNiwgMHg3NDE3LCAweDc0MTgsIDB4NzQxOSwKKyAgICAweDc0MUMsIDB4NzQxRCwgMHg3NDFFLCAweDc0MUYsIDB4NzQyMCwgMHg3NDIxLCAweDc0MjMsIDB4NzQyNCwKKyAgICAweDc0MjcsIDB4NzQyOSwgMHg3NDJCLCAweDc0MkQsIDB4NzQyRiwgMHg3NDMxLCAweDc0MzIsIDB4NzQzNywKKyAgICAweDc0MzgsIDB4NzQzOSwgMHg3NDNBLCAweDc0M0IsIDB4NzQzRCwgMHg3NDNFLCAweDc0NDAsIDB4NzQ0MiwKKyAgICAweDc0NDMsIDB4NzQ0NCwgMHg3NDQ1LCAweDc0NDYsIDB4NzQ0NywgMHg3NDQ4LCAweDc0NDksIDB4NzQ0QSwKKyAgICAweDc0NEMsIDB4NzQ0RCwgMHg3NDRFLCAweDc0NEYsIDB4NzQ1MCwgMHg3NDUxLCAweDc0NTIsIDB4NzQ1MywKKyAgICAweDc0NTQsIDB4NzQ1NiwgMHg3NDU4LCAweDc0NUQsIDB4NzQ2MCwgMHg3NDYxLCAweDc0NjIsIDB4NzQ2NCwKKyAgICAweDc0NjUsIDB4NzQ2NiwgMHg3NDY3LCAweDc0NjgsIDB4NzQ2QiwgMHg3NDZDLCAweDc0NkUsIDB4NzQ2RiwKKyAgICAweDc0NzEsIDB4NzQ3MiwgMHg3NDczLCAweDc0NzQsIDB4NzQ3NSwgMHg3NDc4LCAweDc0NzksIDB4NzQ3QSwKKyAgICAweDc0N0IsIDB4NzQ3QywgMHg3NDdELCAweDc0N0YsIDB4NzQ4MiwgMHg3NDg0LCAweDc0ODUsIDB4NzQ4NiwKKyAgICAweDc0ODgsIDB4NzQ4QSwgMHg3NDhDLCAweDc0OEQsIDB4NzQ4RiwgMHg3NDkxLCAweDc0OTIsIDB4NzQ5MywKKyAgICAweDc0OTQsIDB4NzQ5NSwgMHg3NDk2LCAweDc0OTcsIDB4NzQ5OCwgMHg3NDk5LCAweDc0OUEsIDB4NzQ5QiwKKyAgICAweDc0OUQsIDB4NzQ5RiwgMHg3NEEwLCAweDc0QTEsIDB4NzRBMiwgMHg3NEE0LCAweDc0QTUsIDB4NzRBQSwKKyAgICAweDc0QUIsIDB4NzRBQywgMHg3NEFELCAweDc0QUUsIDB4NzRBRiwgMHg3NEIxLCAweDc0QjIsIDB4NzRCMywKKyAgICAweDc0QjQsIDB4NzRCNSwgMHg3NEI2LCAweDc0QjcsIDB4NzRCOCwgMHg3NEI5LCAweDc0QkIsIDB4NzRCQywKKyAgICAweDc0QkUsIDB4NzRCRiwgMHg3NEMwLCAweDc0QzEsIDB4NzRDMiwgMHg3NEMzLCAweDc0QzQsIDB4NzRDNSwKKyAgICAweDc0QzYsIDB4NzRDNywgMHg3NEM4LCAweDc0QzksIDB4NzRDQiwgMHg3NENDLCAweDc0Q0QsIDB4NzRDRSwKKyAgICAweDc0RDAsIDB4NzREMSwgMHg3NEQzLCAweDc0RDUsIDB4NzRENiwgMHg3NEQ3LCAweDc0RDgsIDB4NzREOSwKKyAgICAweDc0REIsIDB4NzRERCwgMHg3NERGLCAweDc0RTEsIDB4NzRFNSwgMHg3NEU3LCAweDc0RTgsIDB4NzRFOSwKKyAgICAweDc0RUEsIDB4NzRFQiwgMHg3NEVDLCAweDc0RUQsIDB4NzRGMCwgMHg3NEYxLCAweDc0RjIsIDB4NzRGMywKKyAgICAweDc0RjUsIDB4NzRGOCwgMHg3NEY5LCAweDc0RkEsIDB4NzRGQiwgMHg3NEZDLCAweDc0RkQsIDB4NzRGRSwKKyAgICAweDc1MDAsIDB4NzUwMSwgMHg3NTAyLCAweDc1MDMsIDB4NzUwNSwgMHg3NTA2LCAweDc1MDcsIDB4NzUwOCwKKyAgICAweDc1MDksIDB4NzUwQSwgMHg3NTBCLCAweDc1MEUsIDB4NzUxMCwgMHg3NTEyLCAweDc1MTQsIDB4NzUxNSwKKyAgICAweDc1MTYsIDB4NzUxNywgMHg3NTFCLCAweDc1MUQsIDB4NzUxRSwgMHg3NTIwLCAweDc1MjEsIDB4NzUyMiwKKyAgICAweDc1MjQsIDB4NzUyNiwgMHg3NTI3LCAweDc1MkEsIDB4NzUyRSwgMHg3NTM0LCAweDc1MzYsIDB4NzUzOSwKKyAgICAweDc1M0MsIDB4NzUzRCwgMHg3NTNGLCAweDc1NDEsIDB4NzU0MiwgMHg3NTQzLCAweDc1NDQsIDB4NzU0NiwKKyAgICAweDc1NDcsIDB4NzU0OSwgMHg3NTRBLCAweDc1NEQsIDB4NzU1MCwgMHg3NTUxLCAweDc1NTIsIDB4NzU1MywKKyAgICAweDc1NTUsIDB4NzU1NiwgMHg3NTU3LCAweDc1NTgsIDB4NzU1RSwgMHg3NTVGLCAweDc1NjAsIDB4NzU2MSwKKyAgICAweDc1NjMsIDB4NzU2NCwgMHg3NTY3LCAweDc1NjgsIDB4NzU2OSwgMHg3NTZDLCAweDc1NkQsIDB4NzU2RSwKKyAgICAweDc1NkYsIDB4NzU3MCwgMHg3NTcxLCAweDc1NzMsIDB4NzU3NSwgMHg3NTc3LCAweDc1N0EsIDB4NzU3QiwKKyAgICAweDc1N0MsIDB4NzU3RCwgMHg3NTdFLCAweDc1ODAsIDB4NzU4MSwgMHg3NTgyLCAweDc1ODQsIDB4NzU4NSwKKyAgICAweDc1ODgsIDB4NzU4OSwgMHg3NThBLCAweDc1OEMsIDB4NzU4RCwgMHg3NThFLCAweDc1OTAsIDB4NzU5MywKKyAgICAweDc1OTUsIDB4NzU5OCwgMHg3NTlCLCAweDc1OUMsIDB4NzU5RSwgMHg3NUEyLCAweDc1QTYsIDB4NzVBNywKKyAgICAweDc1QTgsIDB4NzVBOSwgMHg3NUFBLCAweDc1QUQsIDB4NzVCNiwgMHg3NUI3LCAweDc1QkEsIDB4NzVCQiwKKyAgICAweDc1QkYsIDB4NzVDMCwgMHg3NUMxLCAweDc1QzYsIDB4NzVDQiwgMHg3NUNDLCAweDc1Q0UsIDB4NzVDRiwKKyAgICAweDc1RDAsIDB4NzVEMSwgMHg3NUQzLCAweDc1RDcsIDB4NzVEQSwgMHg3NURDLCAweDc1REQsIDB4NzVERiwKKyAgICAweDc1RTAsIDB4NzVFMSwgMHg3NUU1LCAweDc1RTksIDB4NzVFQywgMHg3NUVELCAweDc1RUUsIDB4NzVFRiwKKyAgICAweDc1RjIsIDB4NzVGMywgMHg3NUY1LCAweDc1RjYsIDB4NzVGNywgMHg3NUY4LCAweDc1RkEsIDB4NzVGQiwKKyAgICAweDc1RkQsIDB4NzVGRSwgMHg3NjA0LCAweDc2MDYsIDB4NzYwNywgMHg3NjA4LCAweDc2MDksIDB4NzYwRSwKKyAgICAweDc2MEYsIDB4NzYxMSwgMHg3NjEyLCAweDc2MTMsIDB4NzYxNCwgMHg3NjE2LCAweDc2MUEsIDB4NzYxQywKKyAgICAweDc2MUQsIDB4NzYyMywgMHg3NjI4LCAweDc2MkMsIDB4NzYyRSwgMHg3NjJGLCAweDc2MzEsIDB4NzYzMiwKKyAgICAweDc2MzYsIDB4NzYzNywgMHg3NjM5LCAweDc2M0EsIDB4NzYzRCwgMHg3NjQxLCAweDc2NDQsIDB4NzY0NSwKKyAgICAweDc2NDgsIDB4NzY0QSwgMHg3NjRCLCAweDc2NEUsIDB4NzY0RiwgMHg3NjUwLCAweDc2NTEsIDB4NzY1MiwKKyAgICAweDc2NTMsIDB4NzY1NSwgMHg3NjU3LCAweDc2NTksIDB4NzY1QSwgMHg3NjVCLCAweDc2NUQsIDB4NzY2MCwKKyAgICAweDc2NjEsIDB4NzY2NiwgMHg3NjY4LCAweDc2NkEsIDB4NzY3MywgMHg3Njc0LCAweDc2NzUsIDB4NzY3NiwKKyAgICAweDc2NzcsIDB4NzY3OSwgMHg3NjdBLCAweDc2N0YsIDB4NzY4MCwgMHg3NjgxLCAweDc2ODMsIDB4NzY4NSwKKyAgICAweDc2ODksIDB4NzY4QSwgMHg3NjhDLCAweDc2OEQsIDB4NzY4RiwgMHg3NjkwLCAweDc2OTIsIDB4NzY5NCwKKyAgICAweDc2OTUsIDB4NzY5NywgMHg3Njk4LCAweDc2OUIsIDB4NzY5QywgMHg3NjlELCAweDc2OUUsIDB4NzY5RiwKKyAgICAweDc2QTAsIDB4NzZBMSwgMHg3NkEyLCAweDc2QTMsIDB4NzZBNSwgMHg3NkE2LCAweDc2QTcsIDB4NzZBOCwKKyAgICAweDc2QTksIDB4NzZBQSwgMHg3NkFCLCAweDc2QUMsIDB4NzZBRCwgMHg3NkFGLCAweDc2QjAsIDB4NzZCMywKKyAgICAweDc2QjUsIDB4NzZCNiwgMHg3NkI3LCAweDc2QjksIDB4NzZCQiwgMHg3NkJDLCAweDc2QkQsIDB4NzZCRSwKKyAgICAweDc2QzAsIDB4NzZDMSwgMHg3NkMzLCAweDc2QzQsIDB4NzZDNywgMHg3NkM5LCAweDc2Q0IsIDB4NzZDQywKKyAgICAweDc2RDMsIDB4NzZENSwgMHg3NkQ5LCAweDc2REEsIDB4NzZEQywgMHg3NkRELCAweDc2RTAsIDB4NzZFMiwKKyAgICAweDc2RTYsIDB4NzZFOCwgMHg3NkU5LCAweDc2RUEsIDB4NzZFQiwgMHg3NkVDLCAweDc2RUQsIDB4NzZGMCwKKyAgICAweDc2RjMsIDB4NzZGNSwgMHg3NkY2LCAweDc2RjcsIDB4NzZGQSwgMHg3NkZCLCAweDc2RkQsIDB4NzZGRiwKKyAgICAweDc3MDAsIDB4NzcwMiwgMHg3NzAzLCAweDc3MDUsIDB4NzcwNiwgMHg3NzBBLCAweDc3MEMsIDB4NzcwRSwKKyAgICAweDc3MEYsIDB4NzcxMCwgMHg3NzExLCAweDc3MTIsIDB4NzcxMywgMHg3NzE0LCAweDc3MTUsIDB4NzcxNiwKKyAgICAweDc3MTcsIDB4NzcxOCwgMHg3NzFCLCAweDc3MUMsIDB4NzcxRCwgMHg3NzFFLCAweDc3MjEsIDB4NzcyMywKKyAgICAweDc3MjQsIDB4NzcyNSwgMHg3NzI3LCAweDc3MkEsIDB4NzcyQiwgMHg3NzJDLCAweDc3MkUsIDB4NzczMCwKKyAgICAweDc3MzEsIDB4NzczMiwgMHg3NzMzLCAweDc3MzQsIDB4NzczOSwgMHg3NzNCLCAweDc3M0QsIDB4NzczRSwKKyAgICAweDc3M0YsIDB4Nzc0MiwgMHg3NzQ0LCAweDc3NDUsIDB4Nzc0NiwgMHg3NzQ4LCAweDc3NDksIDB4Nzc0QSwKKyAgICAweDc3NEIsIDB4Nzc0QywgMHg3NzRELCAweDc3NEUsIDB4Nzc1MiwgMHg3NzUzLCAweDc3NTQsIDB4Nzc1NSwKKyAgICAweDc3NTYsIDB4Nzc1NywgMHg3NzU4LCAweDc3NTksIDB4Nzc1QywgMHg3NzVELCAweDc3NUYsIDB4Nzc2MCwKKyAgICAweDc3NjQsIDB4Nzc2NywgMHg3NzY5LCAweDc3NkEsIDB4Nzc2RCwgMHg3NzZFLCAweDc3NkYsIDB4Nzc3MCwKKyAgICAweDc3NzEsIDB4Nzc3MiwgMHg3NzczLCAweDc3NzQsIDB4Nzc3NSwgMHg3Nzc2LCAweDc3NzcsIDB4Nzc3OCwKKyAgICAweDc3N0EsIDB4Nzc3QiwgMHg3NzdDLCAweDc3ODEsIDB4Nzc4MiwgMHg3NzgzLCAweDc3ODYsIDB4Nzc4NywKKyAgICAweDc3ODgsIDB4Nzc4OSwgMHg3NzhBLCAweDc3OEIsIDB4Nzc4RiwgMHg3NzkwLCAweDc3OTMsIDB4Nzc5NCwKKyAgICAweDc3OTUsIDB4Nzc5NiwgMHg3Nzk3LCAweDc3OTksIDB4Nzc5QSwgMHg3NzlCLCAweDc3OUMsIDB4Nzc5RCwKKyAgICAweDc3QTEsIDB4NzdBMywgMHg3N0E0LCAweDc3QTYsIDB4NzdBOCwgMHg3N0FCLCAweDc3QUUsIDB4NzdBRiwKKyAgICAweDc3QjEsIDB4NzdCMiwgMHg3N0I0LCAweDc3QjYsIDB4NzdCNywgMHg3N0I4LCAweDc3QjksIDB4NzdCQSwKKyAgICAweDc3QkUsIDB4NzdDMCwgMHg3N0MxLCAweDc3QzIsIDB4NzdDMywgMHg3N0M0LCAweDc3QzUsIDB4NzdDNiwKKyAgICAweDc3QzgsIDB4NzdDOSwgMHg3N0NBLCAweDc3Q0IsIDB4NzdDQywgMHg3N0NFLCAweDc3Q0YsIDB4NzdEMCwKKyAgICAweDc3RDEsIDB4NzdEMiwgMHg3N0QzLCAweDc3RDQsIDB4NzdENSwgMHg3N0Q2LCAweDc3RDgsIDB4NzdEOSwKKyAgICAweDc3REQsIDB4NzdERSwgMHg3N0RGLCAweDc3RTAsIDB4NzdFMSwgMHg3N0U0LCAweDc3RTYsIDB4NzdFOCwKKyAgICAweDc3RUEsIDB4NzdGMCwgMHg3N0YxLCAweDc3RjIsIDB4NzdGNCwgMHg3N0Y1LCAweDc3RjcsIDB4NzdGOSwKKyAgICAweDc3RkEsIDB4NzdGQiwgMHg3N0ZDLCAweDc4MDMsIDB4NzgwNCwgMHg3ODA1LCAweDc4MDYsIDB4NzgwNywKKyAgICAweDc4MDgsIDB4NzgwQSwgMHg3ODBCLCAweDc4MEUsIDB4NzgwRiwgMHg3ODEwLCAweDc4MTMsIDB4NzgxNSwKKyAgICAweDc4MTksIDB4NzgxQiwgMHg3ODFFLCAweDc4MjAsIDB4NzgyMSwgMHg3ODIyLCAweDc4MjQsIDB4NzgyOCwKKyAgICAweDc4MkEsIDB4NzgyQiwgMHg3ODJFLCAweDc4MkYsIDB4NzgzMSwgMHg3ODMyLCAweDc4MzMsIDB4NzgzNSwKKyAgICAweDc4MzYsIDB4NzgzRCwgMHg3ODNGLCAweDc4NDEsIDB4Nzg0MiwgMHg3ODQ0LCAweDc4NDYsIDB4Nzg0OCwKKyAgICAweDc4NDksIDB4Nzg0QSwgMHg3ODRCLCAweDc4NEQsIDB4Nzg0RiwgMHg3ODUxLCAweDc4NTMsIDB4Nzg1NCwKKyAgICAweDc4NTgsIDB4Nzg1OSwgMHg3ODVBLCAweDc4NUIsIDB4Nzg1QywgMHg3ODVFLCAweDc4NUYsIDB4Nzg2MCwKKyAgICAweDc4NjEsIDB4Nzg2MiwgMHg3ODYzLCAweDc4NjUsIDB4Nzg2NiwgMHg3ODY3LCAweDc4NjksIDB4Nzg3MCwKKyAgICAweDc4NzEsIDB4Nzg3MiwgMHg3ODczLCAweDc4NzQsIDB4Nzg3NSwgMHg3ODc2LCAweDc4NzgsIDB4Nzg3OSwKKyAgICAweDc4N0EsIDB4Nzg3QiwgMHg3ODdELCAweDc4N0UsIDB4Nzg3RiwgMHg3ODgwLCAweDc4ODEsIDB4Nzg4MiwKKyAgICAweDc4ODMsIDB4Nzg4NCwgMHg3ODg1LCAweDc4ODYsIDB4Nzg4OCwgMHg3ODhBLCAweDc4OEIsIDB4Nzg4RiwKKyAgICAweDc4OTAsIDB4Nzg5MiwgMHg3ODk0LCAweDc4OTUsIDB4Nzg5NiwgMHg3ODk5LCAweDc4OUQsIDB4Nzg5RSwKKyAgICAweDc4QTAsIDB4NzhBMiwgMHg3OEE0LCAweDc4QTYsIDB4NzhBOCwgMHg3OEFBLCAweDc4QUIsIDB4NzhBQywKKyAgICAweDc4QUUsIDB4NzhBRiwgMHg3OEI1LCAweDc4QjYsIDB4NzhCNywgMHg3OEJCLCAweDc4QkQsIDB4NzhCRiwKKyAgICAweDc4QzAsIDB4NzhDMiwgMHg3OEMzLCAweDc4QzQsIDB4NzhDNiwgMHg3OEM3LCAweDc4QzgsIDB4NzhDQywKKyAgICAweDc4Q0QsIDB4NzhDRSwgMHg3OENGLCAweDc4RDEsIDB4NzhEMiwgMHg3OEQzLCAweDc4RDYsIDB4NzhENywKKyAgICAweDc4RDgsIDB4NzhEQiwgMHg3OERDLCAweDc4REQsIDB4NzhERSwgMHg3OERGLCAweDc4RTAsIDB4NzhFMSwKKyAgICAweDc4RTIsIDB4NzhFNCwgMHg3OEU1LCAweDc4RTYsIDB4NzhFOSwgMHg3OEVBLCAweDc4RUIsIDB4NzhFRCwKKyAgICAweDc4RUUsIDB4NzhGMCwgMHg3OEYxLCAweDc4RjMsIDB4NzhGNSwgMHg3OEY2LCAweDc4RjgsIDB4NzhGOSwKKyAgICAweDc4RkIsIDB4NzhGQywgMHg3OEZFLCAweDc4RkYsIDB4NzkwMCwgMHg3OTAyLCAweDc5MDMsIDB4NzkwNCwKKyAgICAweDc5MDYsIDB4NzkwNywgMHg3OTA4LCAweDc5MDksIDB4NzkwQSwgMHg3OTBCLCAweDc5MEMsIDB4NzkwRCwKKyAgICAweDc5MEYsIDB4NzkxMCwgMHg3OTExLCAweDc5MTIsIDB4NzkxNCwgMHg3OTE1LCAweDc5MTYsIDB4NzkxNywKKyAgICAweDc5MTgsIDB4NzkxQSwgMHg3OTFCLCAweDc5MUMsIDB4NzkxRCwgMHg3OTFGLCAweDc5MjAsIDB4NzkyMSwKKyAgICAweDc5MjIsIDB4NzkyMywgMHg3OTI1LCAweDc5MjcsIDB4NzkyOCwgMHg3OTI5LCAweDc5MkQsIDB4NzkyRSwKKyAgICAweDc5MkYsIDB4NzkzMCwgMHg3OTMyLCAweDc5MzMsIDB4NzkzNSwgMHg3OTM2LCAweDc5MzcsIDB4NzkzOCwKKyAgICAweDc5MzksIDB4NzkzRCwgMHg3OTNGLCAweDc5NDIsIDB4Nzk0MywgMHg3OTQ0LCAweDc5NDUsIDB4Nzk0NywKKyAgICAweDc5NEEsIDB4Nzk0QiwgMHg3OTRDLCAweDc5NEQsIDB4Nzk0RSwgMHg3OTRGLCAweDc5NTAsIDB4Nzk1MSwKKyAgICAweDc5NTIsIDB4Nzk1NCwgMHg3OTU1LCAweDc5NTgsIDB4Nzk1OSwgMHg3OTYxLCAweDc5NjMsIDB4Nzk2NCwKKyAgICAweDc5NjYsIDB4Nzk2OSwgMHg3OTZBLCAweDc5NkIsIDB4Nzk2QywgMHg3OTZFLCAweDc5NzAsIDB4Nzk3MSwKKyAgICAweDc5NzIsIDB4Nzk3MywgMHg3OTc0LCAweDc5NzUsIDB4Nzk3NiwgMHg3OTc5LCAweDc5N0IsIDB4Nzk3QywKKyAgICAweDc5N0QsIDB4Nzk3RSwgMHg3OTdGLCAweDc5ODIsIDB4Nzk4MywgMHg3OTg2LCAweDc5ODcsIDB4Nzk4OCwKKyAgICAweDc5ODksIDB4Nzk4QiwgMHg3OThDLCAweDc5OTAsIDB4Nzk5MSwgMHg3OTkyLCAweDc5OTMsIDB4Nzk5NCwKKyAgICAweDc5OTUsIDB4Nzk5NiwgMHg3OTk3LCAweDc5OTgsIDB4Nzk5OSwgMHg3OTlCLCAweDc5OUMsIDB4Nzk5RCwKKyAgICAweDc5OUUsIDB4Nzk5RiwgMHg3OUEwLCAweDc5QTEsIDB4NzlBMiwgMHg3OUEzLCAweDc5QTQsIDB4NzlBNSwKKyAgICAweDc5QTgsIDB4NzlBOSwgMHg3OUFCLCAweDc5QUMsIDB4NzlBRCwgMHg3OUFGLCAweDc5QjIsIDB4NzlCNCwKKyAgICAweDc5QjUsIDB4NzlCNiwgMHg3OUI3LCAweDc5QjgsIDB4NzlCQywgMHg3OUJGLCAweDc5QzIsIDB4NzlDNCwKKyAgICAweDc5QzUsIDB4NzlDNywgMHg3OUM4LCAweDc5Q0EsIDB4NzlDQywgMHg3OUNFLCAweDc5Q0YsIDB4NzlEMCwKKyAgICAweDc5RDMsIDB4NzlENCwgMHg3OUQ2LCAweDc5RDcsIDB4NzlEOSwgMHg3OURBLCAweDc5REIsIDB4NzlEQywKKyAgICAweDc5REQsIDB4NzlERSwgMHg3OUUwLCAweDc5RTEsIDB4NzlFMiwgMHg3OUU1LCAweDc5RTgsIDB4NzlFQSwKKyAgICAweDc5RUMsIDB4NzlFRSwgMHg3OUYxLCAweDc5RjIsIDB4NzlGMywgMHg3OUY0LCAweDc5RjUsIDB4NzlGNiwKKyAgICAweDc5RjcsIDB4NzlGOSwgMHg3OUZBLCAweDc5RkMsIDB4NzlGRSwgMHg3OUZGLCAweDdBMDEsIDB4N0EwNCwKKyAgICAweDdBMDUsIDB4N0EwNywgMHg3QTA4LCAweDdBMDksIDB4N0EwQSwgMHg3QTBDLCAweDdBMEYsIDB4N0ExMCwKKyAgICAweDdBMTEsIDB4N0ExMiwgMHg3QTEzLCAweDdBMTUsIDB4N0ExNiwgMHg3QTE4LCAweDdBMTksIDB4N0ExQiwKKyAgICAweDdBMUMsIDB4N0ExRCwgMHg3QTFGLCAweDdBMjEsIDB4N0EyMiwgMHg3QTI0LCAweDdBMjUsIDB4N0EyNiwKKyAgICAweDdBMjcsIDB4N0EyOCwgMHg3QTI5LCAweDdBMkEsIDB4N0EyQiwgMHg3QTJDLCAweDdBMkQsIDB4N0EyRiwKKyAgICAweDdBMzAsIDB4N0EzMiwgMHg3QTM0LCAweDdBMzUsIDB4N0EzNiwgMHg3QTM4LCAweDdBM0EsIDB4N0EzRSwKKyAgICAweDdBNDEsIDB4N0E0MiwgMHg3QTQzLCAweDdBNDQsIDB4N0E0NSwgMHg3QTQ3LCAweDdBNDgsIDB4N0E0OSwKKyAgICAweDdBNEEsIDB4N0E0QiwgMHg3QTRGLCAweDdBNTAsIDB4N0E1MiwgMHg3QTUzLCAweDdBNTQsIDB4N0E1NSwKKyAgICAweDdBNTYsIDB4N0E1OCwgMHg3QTU5LCAweDdBNUEsIDB4N0E1QiwgMHg3QTVDLCAweDdBNUQsIDB4N0E1RSwKKyAgICAweDdBNUYsIDB4N0E2MCwgMHg3QTYzLCAweDdBNjQsIDB4N0E2NSwgMHg3QTY2LCAweDdBNjcsIDB4N0E2OCwKKyAgICAweDdBNkEsIDB4N0E2QywgMHg3QTZELCAweDdBNkUsIDB4N0E2RiwgMHg3QTcxLCAweDdBNzIsIDB4N0E3MywKKyAgICAweDdBNzUsIDB4N0E3QiwgMHg3QTdDLCAweDdBN0QsIDB4N0E3RSwgMHg3QTgyLCAweDdBODUsIDB4N0E4NywKKyAgICAweDdBODksIDB4N0E4QSwgMHg3QThCLCAweDdBOEMsIDB4N0E4RSwgMHg3QThGLCAweDdBOTAsIDB4N0E5MywKKyAgICAweDdBOTQsIDB4N0E5OSwgMHg3QTlBLCAweDdBOUIsIDB4N0E5RSwgMHg3QUExLCAweDdBQTIsIDB4N0FBMywKKyAgICAweDdBQTQsIDB4N0FBNywgMHg3QUFCLCAweDdBQUYsIDB4N0FCMCwgMHg3QUIxLCAweDdBQjIsIDB4N0FCNCwKKyAgICAweDdBQjUsIDB4N0FCNywgMHg3QUI4LCAweDdBQjksIDB4N0FCQiwgMHg3QUJDLCAweDdBQkQsIDB4N0FCRSwKKyAgICAweDdBQzAsIDB4N0FDMSwgMHg3QUMyLCAweDdBQzMsIDB4N0FDNiwgMHg3QUM5LCAweDdBQ0MsIDB4N0FDRCwKKyAgICAweDdBQ0UsIDB4N0FDRiwgMHg3QUQwLCAweDdBRDEsIDB4N0FEMiwgMHg3QUQzLCAweDdBRDQsIDB4N0FENSwKKyAgICAweDdBRDcsIDB4N0FEOCwgMHg3QURBLCAweDdBREIsIDB4N0FEQywgMHg3QURELCAweDdBRTEsIDB4N0FFMiwKKyAgICAweDdBRTQsIDB4N0FFNywgMHg3QUU4LCAweDdBRTksIDB4N0FFQiwgMHg3QUVDLCAweDdBRUUsIDB4N0FGMCwKKyAgICAweDdBRjEsIDB4N0FGMiwgMHg3QUYzLCAweDdBRjQsIDB4N0FGNSwgMHg3QUY3LCAweDdBRjgsIDB4N0FGQiwKKyAgICAweDdBRkMsIDB4N0FGRSwgMHg3QjAwLCAweDdCMDEsIDB4N0IwMiwgMHg3QjA1LCAweDdCMDcsIDB4N0IwOSwKKyAgICAweDdCMEMsIDB4N0IwRCwgMHg3QjBFLCAweDdCMTAsIDB4N0IxMiwgMHg3QjEzLCAweDdCMTYsIDB4N0IxNywKKyAgICAweDdCMTgsIDB4N0IxQSwgMHg3QjFDLCAweDdCMUQsIDB4N0IxRiwgMHg3QjIxLCAweDdCMjIsIDB4N0IyMywKKyAgICAweDdCMjcsIDB4N0IyOSwgMHg3QjJELCAweDdCMkYsIDB4N0IzMCwgMHg3QjMyLCAweDdCMzQsIDB4N0IzNSwKKyAgICAweDdCMzYsIDB4N0IzNywgMHg3QjM5LCAweDdCM0IsIDB4N0IzRCwgMHg3QjNGLCAweDdCNDAsIDB4N0I0MSwKKyAgICAweDdCNDIsIDB4N0I0MywgMHg3QjQ0LCAweDdCNDgsIDB4N0I0QSwgMHg3QjRELCAweDdCNEUsIDB4N0I1MywKKyAgICAweDdCNTUsIDB4N0I1NywgMHg3QjU5LCAweDdCNUMsIDB4N0I1RSwgMHg3QjVGLCAweDdCNjEsIDB4N0I2MywKKyAgICAweDdCNjQsIDB4N0I2NSwgMHg3QjY2LCAweDdCNjgsIDB4N0I2OSwgMHg3QjZBLCAweDdCNkIsIDB4N0I2QywKKyAgICAweDdCNkQsIDB4N0I2RiwgMHg3QjcwLCAweDdCNzMsIDB4N0I3NCwgMHg3Qjc2LCAweDdCNzgsIDB4N0I3QSwKKyAgICAweDdCN0MsIDB4N0I3RCwgMHg3QjdGLCAweDdCODEsIDB4N0I4MiwgMHg3QjgzLCAweDdCODQsIDB4N0I4NiwKKyAgICAweDdCODcsIDB4N0I4OCwgMHg3Qjg5LCAweDdCOEEsIDB4N0I4QywgMHg3QjhFLCAweDdCOEYsIDB4N0I5MSwKKyAgICAweDdCOTIsIDB4N0I5MywgMHg3Qjk2LCAweDdCOTgsIDB4N0I5OSwgMHg3QjlBLCAweDdCOUIsIDB4N0I5RSwKKyAgICAweDdCOUYsIDB4N0JBMCwgMHg3QkEzLCAweDdCQTQsIDB4N0JBNSwgMHg3QkFFLCAweDdCQUYsIDB4N0JCMCwKKyAgICAweDdCQjIsIDB4N0JCMywgMHg3QkI1LCAweDdCQjYsIDB4N0JCNywgMHg3QkI5LCAweDdCQkEsIDB4N0JCQiwKKyAgICAweDdCQkMsIDB4N0JCRCwgMHg3QkJFLCAweDdCQkYsIDB4N0JDMiwgMHg3QkMzLCAweDdCQzUsIDB4N0JDOCwKKyAgICAweDdCQ0EsIDB4N0JDRCwgMHg3QkNFLCAweDdCQ0YsIDB4N0JEMCwgMHg3QkQyLCAweDdCRDQsIDB4N0JENSwKKyAgICAweDdCRDYsIDB4N0JENywgMHg3QkQ4LCAweDdCREIsIDB4N0JEQywgMHg3QkRFLCAweDdCREYsIDB4N0JFMCwKKyAgICAweDdCRTIsIDB4N0JFMywgMHg3QkU3LCAweDdCRTgsIDB4N0JFQiwgMHg3QkVDLCAweDdCRUQsIDB4N0JFRiwKKyAgICAweDdCRjAsIDB4N0JGMiwgMHg3QkY0LCAweDdCRjUsIDB4N0JGNiwgMHg3QkY4LCAweDdCRjksIDB4N0JGQSwKKyAgICAweDdCRkIsIDB4N0JGRCwgMHg3QkZGLCAweDdDMDEsIDB4N0MwMiwgMHg3QzAzLCAweDdDMDQsIDB4N0MwNSwKKyAgICAweDdDMDYsIDB4N0MwOCwgMHg3QzA5LCAweDdDMEEsIDB4N0MwRSwgMHg3QzEwLCAweDdDMTEsIDB4N0MxMiwKKyAgICAweDdDMTMsIDB4N0MxNCwgMHg3QzE1LCAweDdDMTcsIDB4N0MxOCwgMHg3QzE5LCAweDdDMUEsIDB4N0MxQiwKKyAgICAweDdDMUMsIDB4N0MxRCwgMHg3QzIwLCAweDdDMjIsIDB4N0MyNCwgMHg3QzI1LCAweDdDMjgsIDB4N0MyOSwKKyAgICAweDdDMkMsIDB4N0MyRCwgMHg3QzJFLCAweDdDMkYsIDB4N0MzMCwgMHg3QzMxLCAweDdDMzIsIDB4N0MzMywKKyAgICAweDdDMzQsIDB4N0MzNSwgMHg3QzM2LCAweDdDMzcsIDB4N0MzOSwgMHg3QzNBLCAweDdDM0IsIDB4N0MzQywKKyAgICAweDdDNDIsIDB4N0M0NCwgMHg3QzQ1LCAweDdDNDYsIDB4N0M0NywgMHg3QzQ4LCAweDdDNDksIDB4N0M0QSwKKyAgICAweDdDNEIsIDB4N0M0RSwgMHg3QzRGLCAweDdDNTAsIDB4N0M1MSwgMHg3QzUyLCAweDdDNTMsIDB4N0M1NCwKKyAgICAweDdDNTUsIDB4N0M1NiwgMHg3QzU3LCAweDdDNTgsIDB4N0M1OSwgMHg3QzVBLCAweDdDNUIsIDB4N0M1RCwKKyAgICAweDdDNUUsIDB4N0M2MSwgMHg3QzYyLCAweDdDNjMsIDB4N0M2NSwgMHg3QzY2LCAweDdDNjcsIDB4N0M2OCwKKyAgICAweDdDNkIsIDB4N0M2RCwgMHg3QzZGLCAweDdDNzAsIDB4N0M3MSwgMHg3Qzc1LCAweDdDNzYsIDB4N0M3NywKKyAgICAweDdDNzgsIDB4N0M3OSwgMHg3QzdBLCAweDdDN0UsIDB4N0M3RiwgMHg3QzgwLCAweDdDODEsIDB4N0M4MiwKKyAgICAweDdDODMsIDB4N0M4NCwgMHg3Qzg1LCAweDdDODYsIDB4N0M4NywgMHg3Qzg4LCAweDdDOEEsIDB4N0M4QiwKKyAgICAweDdDOEMsIDB4N0M4RCwgMHg3QzhFLCAweDdDOEYsIDB4N0M5MCwgMHg3QzkzLCAweDdDOTQsIDB4N0M5NiwKKyAgICAweDdDOTksIDB4N0M5QSwgMHg3QzlCLCAweDdDQTAsIDB4N0NBMSwgMHg3Q0EzLCAweDdDQTYsIDB4N0NBNywKKyAgICAweDdDQTgsIDB4N0NBOSwgMHg3Q0FCLCAweDdDQUMsIDB4N0NBRCwgMHg3Q0FGLCAweDdDQjAsIDB4N0NCNCwKKyAgICAweDdDQjUsIDB4N0NCNiwgMHg3Q0I3LCAweDdDQjgsIDB4N0NCQSwgMHg3Q0JCLCAweDdDQkYsIDB4N0NDMCwKKyAgICAweDdDQzIsIDB4N0NDMywgMHg3Q0M0LCAweDdDQzYsIDB4N0NDOSwgMHg3Q0NCLCAweDdDQ0UsIDB4N0NDRiwKKyAgICAweDdDRDAsIDB4N0NEMSwgMHg3Q0QyLCAweDdDRDMsIDB4N0NENCwgMHg3Q0Q4LCAweDdDREEsIDB4N0NEQiwKKyAgICAweDdDRTEsIDB4N0NFMiwgMHg3Q0UzLCAweDdDRTQsIDB4N0NFNSwgMHg3Q0U2LCAweDdDRTksIDB4N0NFQSwKKyAgICAweDdDRUIsIDB4N0NFQywgMHg3Q0VELCAweDdDRUUsIDB4N0NGMSwgMHg3Q0YzLCAweDdDRjUsIDB4N0NGNywKKyAgICAweDdDRkEsIDB4N0NGQywgMHg3Q0ZELCAweDdDRkYsIDB4N0QwMSwgMHg3RDAzLCAweDdEMEMsIDB4N0QwRSwKKyAgICAweDdEMEYsIDB4N0QxMSwgMHg3RDEyLCAweDdEMTYsIDB4N0QxOCwgMHg3RDFELCAweDdEMUUsIDB4N0QxRiwKKyAgICAweDdEMjMsIDB4N0QyNCwgMHg3RDI1LCAweDdEMjYsIDB4N0QyOCwgMHg3RDI5LCAweDdEMkEsIDB4N0QyQywKKyAgICAweDdEMkQsIDB4N0QyRSwgMHg3RDM0LCAweDdEMzUsIDB4N0QzNiwgMHg3RDM3LCAweDdEMzgsIDB4N0QzQiwKKyAgICAweDdEM0QsIDB4N0QzRSwgMHg3RDQxLCAweDdENDMsIDB4N0Q0NSwgMHg3RDQ3LCAweDdENDgsIDB4N0Q0OSwKKyAgICAweDdENEEsIDB4N0Q0QiwgMHg3RDRDLCAweDdENEQsIDB4N0Q0RiwgMHg3RDUxLCAweDdENTIsIDB4N0Q1MywKKyAgICAweDdENTQsIDB4N0Q1NSwgMHg3RDU2LCAweDdENTcsIDB4N0Q1OCwgMHg3RDU5LCAweDdENUEsIDB4N0Q1QiwKKyAgICAweDdENUMsIDB4N0Q1RiwgMHg3RDYwLCAweDdENjMsIDB4N0Q2NCwgMHg3RDY1LCAweDdENjcsIDB4N0Q2OSwKKyAgICAweDdENkEsIDB4N0Q2QiwgMHg3RDZDLCAweDdENkQsIDB4N0Q2RiwgMHg3RDcwLCAweDdENzQsIDB4N0Q3NSwKKyAgICAweDdENzgsIDB4N0Q3QSwgMHg3RDdCLCAweDdEN0MsIDB4N0Q3RCwgMHg3RDdFLCAweDdEN0YsIDB4N0Q4MCwKKyAgICAweDdEODIsIDB4N0Q4NCwgMHg3RDg1LCAweDdEODcsIDB4N0Q4QSwgMHg3RDhCLCAweDdEOEMsIDB4N0Q4RCwKKyAgICAweDdEOEUsIDB4N0Q5MCwgMHg3RDkxLCAweDdEOTIsIDB4N0Q5NCwgMHg3RDk1LCAweDdEOTYsIDB4N0Q5NywKKyAgICAweDdEOTgsIDB4N0Q5OSwgMHg3RDlBLCAweDdEOUIsIDB4N0Q5RCwgMHg3RDlGLCAweDdEQTAsIDB4N0RBMSwKKyAgICAweDdEQTQsIDB4N0RBNSwgMHg3REE3LCAweDdEQTgsIDB4N0RBOSwgMHg3REFBLCAweDdEQUYsIDB4N0RCNSwKKyAgICAweDdEQjYsIDB4N0RCNywgMHg3REJDLCAweDdEQzAsIDB4N0RDMSwgMHg3REMyLCAweDdEQzMsIDB4N0RDNSwKKyAgICAweDdEQzYsIDB4N0RDOCwgMHg3REM5LCAweDdEQ0MsIDB4N0RDRCwgMHg3RENFLCAweDdEQ0YsIDB4N0REMCwKKyAgICAweDdERDMsIDB4N0RENSwgMHg3REQ2LCAweDdEREEsIDB4N0REQiwgMHg3RERDLCAweDdEREYsIDB4N0RFMiwKKyAgICAweDdERTQsIDB4N0RFNSwgMHg3REU3LCAweDdERUEsIDB4N0RFQiwgMHg3REVELCAweDdERUUsIDB4N0RGMCwKKyAgICAweDdERjMsIDB4N0RGNSwgMHg3REY3LCAweDdERjgsIDB4N0RGQSwgMHg3REZDLCAweDdERkQsIDB4N0RGRSwKKyAgICAweDdERkYsIDB4N0UwMCwgMHg3RTAxLCAweDdFMDIsIDB4N0UwMywgMHg3RTA0LCAweDdFMDUsIDB4N0UwNiwKKyAgICAweDdFMDcsIDB4N0UwQywgMHg3RTBELCAweDdFMEUsIDB4N0UwRiwgMHg3RTEyLCAweDdFMTMsIDB4N0UxNCwKKyAgICAweDdFMTUsIDB4N0UxNiwgMHg3RTE3LCAweDdFMTgsIDB4N0UxOSwgMHg3RTFBLCAweDdFMUMsIDB4N0UyMCwKKyAgICAweDdFMjEsIDB4N0UyMiwgMHg3RTI0LCAweDdFMjUsIDB4N0UyNiwgMHg3RTI4LCAweDdFMjksIDB4N0UyQSwKKyAgICAweDdFMkMsIDB4N0UyRiwgMHg3RTMwLCAweDdFMzMsIDB4N0UzOCwgMHg3RTNBLCAweDdFM0MsIDB4N0UzRiwKKyAgICAweDdFNDAsIDB4N0U0MiwgMHg3RTQzLCAweDdFNDQsIDB4N0U0OCwgMHg3RTQ5LCAweDdFNEEsIDB4N0U0QiwKKyAgICAweDdFNEMsIDB4N0U0RCwgMHg3RTRFLCAweDdFNEYsIDB4N0U1MCwgMHg3RTUxLCAweDdFNTMsIDB4N0U1NiwKKyAgICAweDdFNTcsIDB4N0U1OCwgMHg3RTU5LCAweDdFNUIsIDB4N0U1QywgMHg3RTVELCAweDdFNUYsIDB4N0U2MCwKKyAgICAweDdFNjEsIDB4N0U2MywgMHg3RTY0LCAweDdFNjUsIDB4N0U2NiwgMHg3RTY3LCAweDdFNjgsIDB4N0U2QywKKyAgICAweDdFNzEsIDB4N0U3MiwgMHg3RTc0LCAweDdFNzUsIDB4N0U3NiwgMHg3RTc3LCAweDdFNzgsIDB4N0U3QSwKKyAgICAweDdFN0IsIDB4N0U3RiwgMHg3RTgwLCAweDdFODEsIDB4N0U4MywgMHg3RTg0LCAweDdFODUsIDB4N0U4NiwKKyAgICAweDdFODcsIDB4N0U4OSwgMHg3RThCLCAweDdFOEUsIDB4N0U5MCwgMHg3RTkxLCAweDdFOTIsIDB4N0U5NSwKKyAgICAweDdFOTcsIDB4N0U5OSwgMHg3RTlBLCAweDdFOUQsIDB4N0U5RSwgMHg3RUFFLCAweDdFQjQsIDB4N0VCQiwKKyAgICAweDdFQkMsIDB4N0VENiwgMHg3RUU0LCAweDdFRUMsIDB4N0VGOSwgMHg3RjBBLCAweDdGMTAsIDB4N0YxRSwKKyAgICAweDdGMzcsIDB4N0YzOSwgMHg3RjNCLCAweDdGM0MsIDB4N0YzRCwgMHg3RjNFLCAweDdGM0YsIDB4N0Y0MCwKKyAgICAweDdGNDEsIDB4N0Y0MywgMHg3RjQ2LCAweDdGNDcsIDB4N0Y0OCwgMHg3RjQ5LCAweDdGNEEsIDB4N0Y0QiwKKyAgICAweDdGNEQsIDB4N0Y0RiwgMHg3RjUyLCAweDdGNTMsIDB4N0Y1NiwgMHg3RjU5LCAweDdGNUIsIDB4N0Y1QywKKyAgICAweDdGNUQsIDB4N0Y1RSwgMHg3RjYwLCAweDdGNjMsIDB4N0Y2NCwgMHg3RjY1LCAweDdGNjYsIDB4N0Y2NywKKyAgICAweDdGNkIsIDB4N0Y2QywgMHg3RjZELCAweDdGNkYsIDB4N0Y3MywgMHg3Rjc1LCAweDdGNzYsIDB4N0Y3OCwKKyAgICAweDdGN0EsIDB4N0Y3QiwgMHg3RjdDLCAweDdGN0QsIDB4N0Y3RiwgMHg3RjgwLCAweDdGODIsIDB4N0Y4MywKKyAgICAweDdGODQsIDB4N0Y4NywgMHg3Rjg5LCAweDdGOEIsIDB4N0Y4RCwgMHg3RjhGLCAweDdGOTAsIDB4N0Y5MSwKKyAgICAweDdGOTIsIDB4N0Y5MywgMHg3Rjk1LCAweDdGOTYsIDB4N0Y5NywgMHg3Rjk4LCAweDdGOTksIDB4N0Y5QiwKKyAgICAweDdGOUMsIDB4N0ZBMCwgMHg3RkEyLCAweDdGQTMsIDB4N0ZBNiwgMHg3RkE4LCAweDdGQUEsIDB4N0ZBQiwKKyAgICAweDdGQUMsIDB4N0ZBRCwgMHg3RkFFLCAweDdGQjEsIDB4N0ZCMywgMHg3RkI0LCAweDdGQjUsIDB4N0ZCNiwKKyAgICAweDdGQjcsIDB4N0ZCQSwgMHg3RkJCLCAweDdGQkUsIDB4N0ZDMCwgMHg3RkMyLCAweDdGQzMsIDB4N0ZDNCwKKyAgICAweDdGQzYsIDB4N0ZDNywgMHg3RkM4LCAweDdGQzksIDB4N0ZDQiwgMHg3RkNELCAweDdGQ0YsIDB4N0ZEMCwKKyAgICAweDdGRDEsIDB4N0ZEMywgMHg3RkQ2LCAweDdGRDcsIDB4N0ZEOSwgMHg3RkRBLCAweDdGREIsIDB4N0ZEQywKKyAgICAweDdGREQsIDB4N0ZERSwgMHg3RkUyLCAweDdGRTMsIDB4N0ZFNCwgMHg3RkU3LCAweDdGRTgsIDB4N0ZFQSwKKyAgICAweDdGRUIsIDB4N0ZFQywgMHg3RkVELCAweDdGRUYsIDB4N0ZGMiwgMHg3RkY0LCAweDdGRjUsIDB4N0ZGNiwKKyAgICAweDdGRjcsIDB4N0ZGOCwgMHg3RkZBLCAweDdGRkQsIDB4N0ZGRSwgMHg3RkZGLCAweDgwMDIsIDB4ODAwNywKKyAgICAweDgwMDgsIDB4ODAwOSwgMHg4MDBBLCAweDgwMEUsIDB4ODAwRiwgMHg4MDExLCAweDgwMTMsIDB4ODAxQSwKKyAgICAweDgwMUIsIDB4ODAxRCwgMHg4MDFFLCAweDgwMUYsIDB4ODAyMSwgMHg4MDIzLCAweDgwMjQsIDB4ODAyQiwKKyAgICAweDgwMkQsIDB4ODAyRiwgMHg4MDMwLCAweDgwMzIsIDB4ODAzNCwgMHg4MDM5LCAweDgwM0EsIDB4ODAzQywKKyAgICAweDgwM0UsIDB4ODA0MCwgMHg4MDQxLCAweDgwNDQsIDB4ODA0NSwgMHg4MDQ3LCAweDgwNDgsIDB4ODA0OSwKKyAgICAweDgwNEUsIDB4ODA0RiwgMHg4MDUwLCAweDgwNTEsIDB4ODA1MywgMHg4MDU1LCAweDgwNTcsIDB4ODA1OSwKKyAgICAweDgwNUIsIDB4ODA1QywgMHg4MDVELCAweDgwNUYsIDB4ODA2MCwgMHg4MDYxLCAweDgwNjIsIDB4ODA2MywKKyAgICAweDgwNjQsIDB4ODA2NSwgMHg4MDY2LCAweDgwNjcsIDB4ODA2OCwgMHg4MDZCLCAweDgwNkMsIDB4ODA2RCwKKyAgICAweDgwNkUsIDB4ODA3NCwgMHg4MDc4LCAweDgwN0EsIDB4ODA3QiwgMHg4MDdDLCAweDgwODEsIDB4ODA4MiwKKyAgICAweDgwODgsIDB4ODA4QSwgMHg4MDhELCAweDgwOEUsIDB4ODA4RiwgMHg4MDkwLCAweDgwOTEsIDB4ODA5MiwKKyAgICAweDgwOTQsIDB4ODA5NSwgMHg4MDk3LCAweDgwOTksIDB4ODA5RSwgMHg4MEEzLCAweDgwQTYsIDB4ODBBNywKKyAgICAweDgwQTgsIDB4ODBBQywgMHg4MEIwLCAweDgwQjMsIDB4ODBCNSwgMHg4MEI2LCAweDgwQjgsIDB4ODBCOSwKKyAgICAweDgwQkIsIDB4ODBDNSwgMHg4MEM3LCAweDgwQzgsIDB4ODBDOSwgMHg4MENBLCAweDgwQ0IsIDB4ODBDRiwKKyAgICAweDgwRDAsIDB4ODBEMSwgMHg4MEQyLCAweDgwRDMsIDB4ODBENCwgMHg4MEQ1LCAweDgwRDgsIDB4ODBERiwKKyAgICAweDgwRTAsIDB4ODBFMiwgMHg4MEUzLCAweDgwRTYsIDB4ODBFRSwgMHg4MEY1LCAweDgwRjcsIDB4ODBGOSwKKyAgICAweDgwRkIsIDB4ODBGRSwgMHg4MEZGLCAweDgxMDAsIDB4ODEwMSwgMHg4MTAzLCAweDgxMDQsIDB4ODEwNywKKyAgICAweDgxMDgsIDB4ODEwQiwgMHg4MTBDLCAweDgxMTUsIDB4ODExNywgMHg4MTE5LCAweDgxMUMsIDB4ODExRCwKKyAgICAweDgxMUYsIDB4ODEyMCwgMHg4MTIxLCAweDgxMjIsIDB4ODEyMywgMHg4MTI0LCAweDgxMjUsIDB4ODEyNiwKKyAgICAweDgxMjcsIDB4ODEyOCwgMHg4MTI5LCAweDgxMkEsIDB4ODEyQiwgMHg4MTJELCAweDgxMkUsIDB4ODEzMCwKKyAgICAweDgxMzMsIDB4ODEzNCwgMHg4MTM1LCAweDgxMzcsIDB4ODEzQSwgMHg4MTNCLCAweDgxM0MsIDB4ODEzRCwKKyAgICAweDgxM0YsIDB4ODE0MCwgMHg4MTQxLCAweDgxNDIsIDB4ODE0MywgMHg4MTQ0LCAweDgxNDUsIDB4ODE0NywKKyAgICAweDgxNDksIDB4ODE0RCwgMHg4MTRGLCAweDgxNTIsIDB4ODE1NywgMHg4MTU4LCAweDgxNUIsIDB4ODE1QywKKyAgICAweDgxNUQsIDB4ODE1RSwgMHg4MTVGLCAweDgxNjIsIDB4ODE2MywgMHg4MTY0LCAweDgxNjgsIDB4ODE2QSwKKyAgICAweDgxNkMsIDB4ODE2RiwgMHg4MTcyLCAweDgxNzMsIDB4ODE3NSwgMHg4MTc2LCAweDgxNzcsIDB4ODE4MSwKKyAgICAweDgxODMsIDB4ODE4NCwgMHg4MTg1LCAweDgxODYsIDB4ODE4NywgMHg4MTg5LCAweDgxOEIsIDB4ODE4QywKKyAgICAweDgxOEQsIDB4ODE4RSwgMHg4MTkwLCAweDgxOTIsIDB4ODE5MywgMHg4MTk0LCAweDgxOTUsIDB4ODE5NiwKKyAgICAweDgxOTcsIDB4ODE5OSwgMHg4MTlFLCAweDgxOUYsIDB4ODFBMSwgMHg4MUEyLCAweDgxQTQsIDB4ODFBNSwKKyAgICAweDgxQTcsIDB4ODFBQiwgMHg4MUFDLCAweDgxQUQsIDB4ODFBRSwgMHg4MUFGLCAweDgxQjAsIDB4ODFCMSwKKyAgICAweDgxQjIsIDB4ODFCNCwgMHg4MUI1LCAweDgxQjYsIDB4ODFCNywgMHg4MUI4LCAweDgxQjksIDB4ODFCQywKKyAgICAweDgxQzQsIDB4ODFDNSwgMHg4MUM3LCAweDgxQzgsIDB4ODFDQiwgMHg4MUNFLCAweDgxRDAsIDB4ODFEMSwKKyAgICAweDgxRDIsIDB4ODFEMywgMHg4MUQ0LCAweDgxRDUsIDB4ODFENiwgMHg4MUQ3LCAweDgxRDksIDB4ODFEQiwKKyAgICAweDgxREMsIDB4ODFERCwgMHg4MURFLCAweDgxRTEsIDB4ODFFMiwgMHg4MUU0LCAweDgxRTUsIDB4ODFFNiwKKyAgICAweDgxRTksIDB4ODFFQiwgMHg4MUVFLCAweDgxRUYsIDB4ODFGMCwgMHg4MUYxLCAweDgxRjIsIDB4ODFGNSwKKyAgICAweDgxRjYsIDB4ODFGNywgMHg4MUY4LCAweDgxRjksIDB4ODFGRCwgMHg4MUZGLCAweDgyMDMsIDB4ODIwQiwKKyAgICAweDgyMEUsIDB4ODIwRiwgMHg4MjExLCAweDgyMTMsIDB4ODIxNSwgMHg4MjE2LCAweDgyMTcsIDB4ODIxOCwKKyAgICAweDgyMTksIDB4ODIxQSwgMHg4MjFELCAweDgyMjAsIDB4ODIyNCwgMHg4MjI1LCAweDgyMjYsIDB4ODIyNywKKyAgICAweDgyMjksIDB4ODIyRSwgMHg4MjMyLCAweDgyM0EsIDB4ODIzQywgMHg4MjNELCAweDgyM0YsIDB4ODI0MCwKKyAgICAweDgyNDEsIDB4ODI0MiwgMHg4MjQzLCAweDgyNDUsIDB4ODI0NiwgMHg4MjQ4LCAweDgyNEEsIDB4ODI0QywKKyAgICAweDgyNEQsIDB4ODI0RSwgMHg4MjUwLCAweDgyNTEsIDB4ODI1MiwgMHg4MjUzLCAweDgyNTQsIDB4ODI1NSwKKyAgICAweDgyNTYsIDB4ODI1NywgMHg4MjVCLCAweDgyNUMsIDB4ODI1RCwgMHg4MjVFLCAweDgyNjAsIDB4ODI2MSwKKyAgICAweDgyNjIsIDB4ODI2MywgMHg4MjY1LCAweDgyNjcsIDB4ODI2OSwgMHg4MjZBLCAweDgyNkMsIDB4ODI2RCwKKyAgICAweDgyNzUsIDB4ODI3NiwgMHg4Mjc4LCAweDgyN0IsIDB4ODI3QywgMHg4MjgwLCAweDgyODEsIDB4ODI4MywKKyAgICAweDgyODUsIDB4ODI4NiwgMHg4Mjg3LCAweDgyODksIDB4ODI4QywgMHg4MjkwLCAweDgyOTMsIDB4ODI5NCwKKyAgICAweDgyOTUsIDB4ODI5NiwgMHg4MjlBLCAweDgyOUIsIDB4ODI5RSwgMHg4MkEwLCAweDgyQTIsIDB4ODJBMywKKyAgICAweDgyQTcsIDB4ODJCMiwgMHg4MkI1LCAweDgyQjYsIDB4ODJCQSwgMHg4MkJDLCAweDgyQkYsIDB4ODJDMCwKKyAgICAweDgyQzIsIDB4ODJDMywgMHg4MkM1LCAweDgyQzYsIDB4ODJDOSwgMHg4MkQwLCAweDgyRDYsIDB4ODJEOSwKKyAgICAweDgyREEsIDB4ODJERCwgMHg4MkUyLCAweDgyRTgsIDB4ODJFOSwgMHg4MkVBLCAweDgyRUMsIDB4ODJFRCwKKyAgICAweDgyRUUsIDB4ODJGMCwgMHg4MkYyLCAweDgyRjMsIDB4ODJGNSwgMHg4MkY2LCAweDgyRjgsIDB4ODJGQSwKKyAgICAweDgyRkMsIDB4ODJGRCwgMHg4MkZFLCAweDgyRkYsIDB4ODMwMCwgMHg4MzBBLCAweDgzMEIsIDB4ODMwRCwKKyAgICAweDgzMTAsIDB4ODMxMiwgMHg4MzEzLCAweDgzMTYsIDB4ODMxOCwgMHg4MzE5LCAweDgzMUQsIDB4ODMxRSwKKyAgICAweDgzMUYsIDB4ODMyMCwgMHg4MzIxLCAweDgzMjIsIDB4ODMyMywgMHg4MzI0LCAweDgzMjUsIDB4ODMyNiwKKyAgICAweDgzMjksIDB4ODMyQSwgMHg4MzJFLCAweDgzMzAsIDB4ODMzMiwgMHg4MzM3LCAweDgzM0IsIDB4ODMzRCwKKyAgICAweDgzM0UsIDB4ODMzRiwgMHg4MzQxLCAweDgzNDIsIDB4ODM0NCwgMHg4MzQ1LCAweDgzNDgsIDB4ODM0QSwKKyAgICAweDgzNEIsIDB4ODM0QywgMHg4MzRELCAweDgzNEUsIDB4ODM1MywgMHg4MzU1LCAweDgzNTYsIDB4ODM1NywKKyAgICAweDgzNTgsIDB4ODM1OSwgMHg4MzVELCAweDgzNjIsIDB4ODM3MCwgMHg4MzcxLCAweDgzNzIsIDB4ODM3MywKKyAgICAweDgzNzQsIDB4ODM3NSwgMHg4Mzc2LCAweDgzNzksIDB4ODM3QSwgMHg4MzdFLCAweDgzN0YsIDB4ODM4MCwKKyAgICAweDgzODEsIDB4ODM4MiwgMHg4MzgzLCAweDgzODQsIDB4ODM4NywgMHg4Mzg4LCAweDgzOEIsIDB4ODM4QywKKyAgICAweDgzOEQsIDB4ODM4RiwgMHg4MzkwLCAweDgzOTEsIDB4ODM5NCwgMHg4Mzk1LCAweDgzOTcsIDB4ODM5OSwKKyAgICAweDgzOUEsIDB4ODM5RCwgMHg4MzlGLCAweDgzQTEsIDB4ODNBMywgMHg4M0E0LCAweDgzQTUsIDB4ODNBNiwKKyAgICAweDgzQUMsIDB4ODNBRCwgMHg4M0FFLCAweDgzQUYsIDB4ODNCNSwgMHg4M0JCLCAweDgzQkUsIDB4ODNCRiwKKyAgICAweDgzQzIsIDB4ODNDMywgMHg4M0M0LCAweDgzQzYsIDB4ODNDOCwgMHg4M0M5LCAweDgzQ0IsIDB4ODNDRCwKKyAgICAweDgzQ0UsIDB4ODNEMCwgMHg4M0QxLCAweDgzRDIsIDB4ODNEMywgMHg4M0Q1LCAweDgzRDcsIDB4ODNEOSwKKyAgICAweDgzREEsIDB4ODNEQiwgMHg4M0RFLCAweDgzRTIsIDB4ODNFMywgMHg4M0U0LCAweDgzRTYsIDB4ODNFNywKKyAgICAweDgzRTgsIDB4ODNFQiwgMHg4M0VDLCAweDgzRUQsIDB4ODNFRSwgMHg4M0YzLCAweDgzRjQsIDB4ODNGNSwKKyAgICAweDgzRjYsIDB4ODNGNywgMHg4M0ZBLCAweDgzRkIsIDB4ODNGQywgMHg4M0ZFLCAweDgzRkYsIDB4ODQwMCwKKyAgICAweDg0MDIsIDB4ODQwNSwgMHg4NDA4LCAweDg0MDksIDB4ODQxMCwgMHg4NDEyLCAweDg0MTMsIDB4ODQxNCwKKyAgICAweDg0MTUsIDB4ODQxNiwgMHg4NDE3LCAweDg0MTksIDB4ODQxQSwgMHg4NDFCLCAweDg0MUUsIDB4ODQxRiwKKyAgICAweDg0MjAsIDB4ODQyMSwgMHg4NDIyLCAweDg0MjMsIDB4ODQyOSwgMHg4NDJBLCAweDg0MkIsIDB4ODQyRCwKKyAgICAweDg0MkUsIDB4ODQyRiwgMHg4NDMwLCAweDg0MzIsIDB4ODQzMywgMHg4NDM0LCAweDg0MzYsIDB4ODQzNywKKyAgICAweDg0MzksIDB4ODQzQSwgMHg4NDNCLCAweDg0M0UsIDB4ODQzRiwgMHg4NDQwLCAweDg0NDEsIDB4ODQ0MiwKKyAgICAweDg0NDMsIDB4ODQ0NCwgMHg4NDQ1LCAweDg0NDcsIDB4ODQ0OCwgMHg4NDRBLCAweDg0NEIsIDB4ODQ0QywKKyAgICAweDg0NEQsIDB4ODQ0RSwgMHg4NDRGLCAweDg0NTAsIDB4ODQ1MywgMHg4NDU0LCAweDg0NTUsIDB4ODQ1NiwKKyAgICAweDg0NTgsIDB4ODQ1RCwgMHg4NDVFLCAweDg0NUYsIDB4ODQ2MCwgMHg4NDYyLCAweDg0NjUsIDB4ODQ2NywKKyAgICAweDg0NjgsIDB4ODQ2QSwgMHg4NDZFLCAweDg0NzAsIDB4ODQ3MiwgMHg4NDc0LCAweDg0NzksIDB4ODQ3QiwKKyAgICAweDg0N0MsIDB4ODQ3RCwgMHg4NDdFLCAweDg0N0YsIDB4ODQ4MCwgMHg4NDgxLCAweDg0ODMsIDB4ODQ4NCwKKyAgICAweDg0ODUsIDB4ODQ4NiwgMHg4NDhBLCAweDg0OEQsIDB4ODQ4RiwgMHg4NDkwLCAweDg0OTEsIDB4ODQ5MiwKKyAgICAweDg0OTUsIDB4ODQ5NiwgMHg4NDk4LCAweDg0OUEsIDB4ODQ5QiwgMHg4NDlELCAweDg0OUUsIDB4ODQ5RiwKKyAgICAweDg0QTAsIDB4ODRBMiwgMHg4NEEzLCAweDg0QTQsIDB4ODRBNSwgMHg4NEE2LCAweDg0QTcsIDB4ODRBOCwKKyAgICAweDg0QTksIDB4ODRBQSwgMHg4NEFCLCAweDg0QUMsIDB4ODRBRCwgMHg4NEFFLCAweDg0QjAsIDB4ODRCMSwKKyAgICAweDg0QjMsIDB4ODRCNSwgMHg4NEI2LCAweDg0QjcsIDB4ODRCQiwgMHg4NEJFLCAweDg0QzIsIDB4ODRDMywKKyAgICAweDg0QzUsIDB4ODRDNiwgMHg4NEM3LCAweDg0QzgsIDB4ODRDQywgMHg4NENFLCAweDg0Q0YsIDB4ODREMiwKKyAgICAweDg0RDQsIDB4ODRENSwgMHg4NEQ3LCAweDg0RDgsIDB4ODREOSwgMHg4NERBLCAweDg0REIsIDB4ODREQywKKyAgICAweDg0REUsIDB4ODRFMSwgMHg4NEUyLCAweDg0RTQsIDB4ODRFNywgMHg4NEU4LCAweDg0RTksIDB4ODRFQSwKKyAgICAweDg0RUIsIDB4ODRFRCwgMHg4NEYxLCAweDg0RjIsIDB4ODRGMywgMHg4NEY0LCAweDg0RjUsIDB4ODRGNiwKKyAgICAweDg0RjcsIDB4ODRGOCwgMHg4NEY5LCAweDg0RkEsIDB4ODRGQiwgMHg4NEZFLCAweDg1MDAsIDB4ODUwMSwKKyAgICAweDg1MDIsIDB4ODUwMywgMHg4NTA0LCAweDg1MDUsIDB4ODUwNiwgMHg4NTA3LCAweDg1MDgsIDB4ODUwOSwKKyAgICAweDg1MEEsIDB4ODUwQiwgMHg4NTBELCAweDg1MEUsIDB4ODUwRiwgMHg4NTEwLCAweDg1MTIsIDB4ODUxNSwKKyAgICAweDg1MTYsIDB4ODUxOCwgMHg4NTE5LCAweDg1MUIsIDB4ODUxQywgMHg4NTFELCAweDg1MjAsIDB4ODUyMiwKKyAgICAweDg1MjQsIDB4ODUyNSwgMHg4NTI3LCAweDg1MjgsIDB4ODUyOSwgMHg4NTJBLCAweDg1MkUsIDB4ODUyRiwKKyAgICAweDg1MzAsIDB4ODUzMSwgMHg4NTMyLCAweDg1MzMsIDB4ODUzNCwgMHg4NTM1LCAweDg1MzYsIDB4ODUzRSwKKyAgICAweDg1M0YsIDB4ODU0MCwgMHg4NTQyLCAweDg1NDQsIDB4ODU0NSwgMHg4NTQ3LCAweDg1NEIsIDB4ODU0QywKKyAgICAweDg1NEQsIDB4ODU0RiwgMHg4NTUwLCAweDg1NTEsIDB4ODU1NCwgMHg4NTU3LCAweDg1NUEsIDB4ODU1QiwKKyAgICAweDg1NUMsIDB4ODU1RCwgMHg4NTVGLCAweDg1NjAsIDB4ODU2MSwgMHg4NTYzLCAweDg1NjUsIDB4ODU2NiwKKyAgICAweDg1NjcsIDB4ODU2QiwgMHg4NTZDLCAweDg1NkUsIDB4ODU2RiwgMHg4NTcwLCAweDg1NzEsIDB4ODU3MywKKyAgICAweDg1NzUsIDB4ODU3NiwgMHg4NTc4LCAweDg1N0MsIDB4ODU3RCwgMHg4NTdGLCAweDg1ODAsIDB4ODU4MSwKKyAgICAweDg1ODIsIDB4ODU4MywgMHg4NTg2LCAweDg1ODksIDB4ODU4QiwgMHg4NThELCAweDg1OEUsIDB4ODU5MCwKKyAgICAweDg1OTIsIDB4ODU5MywgMHg4NTk1LCAweDg1OTYsIDB4ODU5NywgMHg4NTk4LCAweDg1OTksIDB4ODU5QSwKKyAgICAweDg1OUQsIDB4ODU5RSwgMHg4NUEwLCAweDg1QTEsIDB4ODVBMiwgMHg4NUEzLCAweDg1QTUsIDB4ODVBNywKKyAgICAweDg1QUIsIDB4ODVBQywgMHg4NUFELCAweDg1QjEsIDB4ODVCMiwgMHg4NUIzLCAweDg1QjQsIDB4ODVCNSwKKyAgICAweDg1QjYsIDB4ODVCOCwgMHg4NUJCLCAweDg1QkMsIDB4ODVCRCwgMHg4NUJFLCAweDg1QkYsIDB4ODVDMCwKKyAgICAweDg1QzIsIDB4ODVDMywgMHg4NUM0LCAweDg1QzUsIDB4ODVDNiwgMHg4NUM3LCAweDg1QzgsIDB4ODVDQSwKKyAgICAweDg1Q0IsIDB4ODVDQywgMHg4NUQxLCAweDg1RDIsIDB4ODVENCwgMHg4NUQ2LCAweDg1RDcsIDB4ODVEOCwKKyAgICAweDg1RDksIDB4ODVEQSwgMHg4NURCLCAweDg1REUsIDB4ODVERiwgMHg4NUUwLCAweDg1RTEsIDB4ODVFMiwKKyAgICAweDg1RTMsIDB4ODVFNiwgMHg4NUU3LCAweDg1RTgsIDB4ODVFQiwgMHg4NUVDLCAweDg1RUQsIDB4ODVFRSwKKyAgICAweDg1RUYsIDB4ODVGMCwgMHg4NUYxLCAweDg1RjIsIDB4ODVGMywgMHg4NUY1LCAweDg1RjcsIDB4ODVGOCwKKyAgICAweDg1RkMsIDB4ODVGRCwgMHg4NUZFLCAweDg2MDAsIDB4ODYwMSwgMHg4NjAyLCAweDg2MDMsIDB4ODYwOCwKKyAgICAweDg2MDksIDB4ODYwQSwgMHg4NjBDLCAweDg2MEQsIDB4ODYwRSwgMHg4NjBGLCAweDg2MTAsIDB4ODYxMiwKKyAgICAweDg2MTMsIDB4ODYxNCwgMHg4NjE1LCAweDg2MTcsIDB4ODYxOCwgMHg4NjE5LCAweDg2MUIsIDB4ODYxQywKKyAgICAweDg2MUQsIDB4ODYxRiwgMHg4NjIwLCAweDg2MjEsIDB4ODYyMywgMHg4NjI0LCAweDg2MjUsIDB4ODYyNiwKKyAgICAweDg2MjgsIDB4ODYyQSwgMHg4NjJCLCAweDg2MkMsIDB4ODYyRSwgMHg4NjJGLCAweDg2MzAsIDB4ODYzMSwKKyAgICAweDg2MzIsIDB4ODYzMywgMHg4NjM0LCAweDg2MzUsIDB4ODYzNiwgMHg4NjM3LCAweDg2MzksIDB4ODYzQiwKKyAgICAweDg2M0QsIDB4ODYzRSwgMHg4NjQwLCAweDg2NDEsIDB4ODY0MiwgMHg4NjQzLCAweDg2NDQsIDB4ODY0NSwKKyAgICAweDg2NDYsIDB4ODY0NywgMHg4NjQ4LCAweDg2NDksIDB4ODY0QSwgMHg4NjRCLCAweDg2NEMsIDB4ODY1MiwKKyAgICAweDg2NTMsIDB4ODY1NiwgMHg4NjU3LCAweDg2NTgsIDB4ODY1OSwgMHg4NjVCLCAweDg2NUQsIDB4ODY2MCwKKyAgICAweDg2NjEsIDB4ODY2MywgMHg4NjY0LCAweDg2NjUsIDB4ODY2NiwgMHg4NjY4LCAweDg2NjksIDB4ODY2QSwKKyAgICAweDg2NkQsIDB4ODY2RiwgMHg4NjcwLCAweDg2NzIsIDB4ODY3MywgMHg4Njc0LCAweDg2NzUsIDB4ODY3NiwKKyAgICAweDg2NzcsIDB4ODY3OCwgMHg4NjgzLCAweDg2ODQsIDB4ODY4NSwgMHg4Njg2LCAweDg2ODcsIDB4ODY4OCwKKyAgICAweDg2ODksIDB4ODY4RSwgMHg4NjhGLCAweDg2OTAsIDB4ODY5MSwgMHg4NjkyLCAweDg2OTQsIDB4ODY5NiwKKyAgICAweDg2OTcsIDB4ODY5OCwgMHg4Njk5LCAweDg2OUEsIDB4ODY5QiwgMHg4NjlFLCAweDg2OUYsIDB4ODZBMCwKKyAgICAweDg2QTEsIDB4ODZBMiwgMHg4NkE1LCAweDg2QTYsIDB4ODZBQiwgMHg4NkFELCAweDg2QUUsIDB4ODZCMiwKKyAgICAweDg2QjMsIDB4ODZCNywgMHg4NkI4LCAweDg2QjksIDB4ODZCQiwgMHg4NkJDLCAweDg2QkQsIDB4ODZCRSwKKyAgICAweDg2QkYsIDB4ODZDMSwgMHg4NkMyLCAweDg2QzMsIDB4ODZDNSwgMHg4NkM4LCAweDg2Q0MsIDB4ODZDRCwKKyAgICAweDg2RDIsIDB4ODZEMywgMHg4NkQ1LCAweDg2RDYsIDB4ODZENywgMHg4NkRBLCAweDg2REMsIDB4ODZERCwKKyAgICAweDg2RTAsIDB4ODZFMSwgMHg4NkUyLCAweDg2RTMsIDB4ODZFNSwgMHg4NkU2LCAweDg2RTcsIDB4ODZFOCwKKyAgICAweDg2RUEsIDB4ODZFQiwgMHg4NkVDLCAweDg2RUYsIDB4ODZGNSwgMHg4NkY2LCAweDg2RjcsIDB4ODZGQiwKKyAgICAweDg2RkMsIDB4ODZGRCwgMHg4NkZGLCAweDg3MDEsIDB4ODcwNCwgMHg4NzA1LCAweDg3MEIsIDB4ODcwQywKKyAgICAweDg3MEUsIDB4ODcwRiwgMHg4NzEwLCAweDg3MTEsIDB4ODcxNCwgMHg4NzE2LCAweDg3MTksIDB4ODcxQiwKKyAgICAweDg3MUQsIDB4ODcxRiwgMHg4NzIwLCAweDg3MjQsIDB4ODcyNiwgMHg4NzI3LCAweDg3MjgsIDB4ODcyQSwKKyAgICAweDg3MkIsIDB4ODcyQywgMHg4NzJELCAweDg3MkYsIDB4ODczMCwgMHg4NzMyLCAweDg3MzMsIDB4ODczNSwKKyAgICAweDg3MzYsIDB4ODczOCwgMHg4NzM5LCAweDg3M0EsIDB4ODczQywgMHg4NzNELCAweDg3NDAsIDB4ODc0MSwKKyAgICAweDg3NDIsIDB4ODc0MywgMHg4NzQ0LCAweDg3NDUsIDB4ODc0NiwgMHg4NzRBLCAweDg3NEIsIDB4ODc0RCwKKyAgICAweDg3NEYsIDB4ODc1MCwgMHg4NzUxLCAweDg3NTIsIDB4ODc1NCwgMHg4NzU2LCAweDg3NTgsIDB4ODc1QSwKKyAgICAweDg3NUIsIDB4ODc1QywgMHg4NzVELCAweDg3NUUsIDB4ODc1RiwgMHg4NzYxLCAweDg3NjIsIDB4ODc2NywKKyAgICAweDg3NjgsIDB4ODc2OSwgMHg4NzZBLCAweDg3NkIsIDB4ODc2QywgMHg4NzZELCAweDg3NkYsIDB4ODc3MSwKKyAgICAweDg3NzIsIDB4ODc3MywgMHg4Nzc1LCAweDg3NzcsIDB4ODc3OSwgMHg4NzdBLCAweDg3N0YsIDB4ODc4MCwKKyAgICAweDg3ODEsIDB4ODc4NiwgMHg4Nzg3LCAweDg3ODksIDB4ODc4QSwgMHg4NzhDLCAweDg3OEUsIDB4ODc4RiwKKyAgICAweDg3OTAsIDB4ODc5MSwgMHg4NzkyLCAweDg3OTQsIDB4ODc5NSwgMHg4Nzk2LCAweDg3OTgsIDB4ODc5OSwKKyAgICAweDg3OUEsIDB4ODc5QiwgMHg4NzlDLCAweDg3OUQsIDB4ODdBMCwgMHg4N0ExLCAweDg3QTMsIDB4ODdBNCwKKyAgICAweDg3QTUsIDB4ODdBNiwgMHg4N0E3LCAweDg3QTksIDB4ODdBQSwgMHg4N0FFLCAweDg3QjAsIDB4ODdCMSwKKyAgICAweDg3QjIsIDB4ODdCNCwgMHg4N0I2LCAweDg3QjcsIDB4ODdCOCwgMHg4N0I5LCAweDg3QkMsIDB4ODdCRSwKKyAgICAweDg3QkYsIDB4ODdDMSwgMHg4N0MyLCAweDg3QzMsIDB4ODdDNSwgMHg4N0M3LCAweDg3QzksIDB4ODdDQywKKyAgICAweDg3Q0QsIDB4ODdDRiwgMHg4N0QwLCAweDg3RDQsIDB4ODdENSwgMHg4N0Q2LCAweDg3RDcsIDB4ODdEOCwKKyAgICAweDg3RDksIDB4ODdEQSwgMHg4N0RDLCAweDg3REQsIDB4ODdERSwgMHg4N0RGLCAweDg3RTEsIDB4ODdFMiwKKyAgICAweDg3RTQsIDB4ODdFNiwgMHg4N0U3LCAweDg3RTgsIDB4ODdFOSwgMHg4N0VCLCAweDg3RUQsIDB4ODdGMCwKKyAgICAweDg3RjEsIDB4ODdGMywgMHg4N0Y0LCAweDg3RjUsIDB4ODdGNywgMHg4N0Y4LCAweDg3RkEsIDB4ODdGQywKKyAgICAweDg3RkQsIDB4ODdGRiwgMHg4ODAwLCAweDg4MDEsIDB4ODgwMiwgMHg4ODA0LCAweDg4MDcsIDB4ODgwOCwKKyAgICAweDg4MDksIDB4ODgwQiwgMHg4ODBDLCAweDg4MEQsIDB4ODgwRSwgMHg4ODBGLCAweDg4MTIsIDB4ODgxNCwKKyAgICAweDg4MTcsIDB4ODgxOCwgMHg4ODE5LCAweDg4MUEsIDB4ODgxQywgMHg4ODFELCAweDg4MUUsIDB4ODgyMCwKKyAgICAweDg4MjQsIDB4ODgyNSwgMHg4ODI2LCAweDg4MjcsIDB4ODgyOCwgMHg4ODI5LCAweDg4MkEsIDB4ODgyQiwKKyAgICAweDg4MkMsIDB4ODgyRCwgMHg4ODJFLCAweDg4MkYsIDB4ODgzMCwgMHg4ODMzLCAweDg4MzQsIDB4ODgzNSwKKyAgICAweDg4MzcsIDB4ODgzOCwgMHg4ODNBLCAweDg4M0QsIDB4ODgzRSwgMHg4ODNGLCAweDg4NDEsIDB4ODg0MiwKKyAgICAweDg4NDMsIDB4ODg0NywgMHg4ODQ4LCAweDg4NDksIDB4ODg0QiwgMHg4ODRFLCAweDg4NEYsIDB4ODg1MCwKKyAgICAweDg4NTEsIDB4ODg1MiwgMHg4ODU1LCAweDg4NTYsIDB4ODg1OCwgMHg4ODVBLCAweDg4NUMsIDB4ODg1RSwKKyAgICAweDg4NUYsIDB4ODg2MCwgMHg4ODY2LCAweDg4NjcsIDB4ODg2QSwgMHg4ODZELCAweDg4NkYsIDB4ODg3MSwKKyAgICAweDg4NzMsIDB4ODg3NCwgMHg4ODc1LCAweDg4NzYsIDB4ODg3OCwgMHg4ODdBLCAweDg4N0IsIDB4ODg3QywKKyAgICAweDg4ODAsIDB4ODg4MywgMHg4ODg2LCAweDg4ODcsIDB4ODg4OSwgMHg4ODhBLCAweDg4OEMsIDB4ODg4RSwKKyAgICAweDg4OEYsIDB4ODg5MCwgMHg4ODkxLCAweDg4OTMsIDB4ODg5NCwgMHg4ODk1LCAweDg4OTcsIDB4ODg5OCwKKyAgICAweDg4OTksIDB4ODg5QSwgMHg4ODlCLCAweDg4OUQsIDB4ODg5RSwgMHg4ODlGLCAweDg4QTAsIDB4ODhBMSwKKyAgICAweDg4QTMsIDB4ODhBNSwgMHg4OEE2LCAweDg4QTcsIDB4ODhBOCwgMHg4OEE5LCAweDg4QUEsIDB4ODhBQywKKyAgICAweDg4QUUsIDB4ODhBRiwgMHg4OEIwLCAweDg4QjIsIDB4ODhCMywgMHg4OEI0LCAweDg4QjUsIDB4ODhCNiwKKyAgICAweDg4QjgsIDB4ODhCOSwgMHg4OEJBLCAweDg4QkIsIDB4ODhCRCwgMHg4OEJFLCAweDg4QkYsIDB4ODhDMCwKKyAgICAweDg4QzMsIDB4ODhDNCwgMHg4OEM3LCAweDg4QzgsIDB4ODhDQiwgMHg4OENDLCAweDg4Q0QsIDB4ODhEMCwKKyAgICAweDg4RDEsIDB4ODhEMywgMHg4OEQ2LCAweDg4RDcsIDB4ODhEQSwgMHg4OERCLCAweDg4REUsIDB4ODhFMCwKKyAgICAweDg4RTEsIDB4ODhFNiwgMHg4OEU3LCAweDg4RTksIDB4ODhFQSwgMHg4OEVCLCAweDg4RUMsIDB4ODhFRCwKKyAgICAweDg4RUUsIDB4ODhFRiwgMHg4OEYyLCAweDg4RjUsIDB4ODhGNiwgMHg4OEY3LCAweDg4RkEsIDB4ODhGQiwKKyAgICAweDg4RkYsIDB4ODkwMCwgMHg4OTAxLCAweDg5MDMsIDB4ODkwNCwgMHg4OTA1LCAweDg5MDYsIDB4ODkwOCwKKyAgICAweDg5MDksIDB4ODkwQiwgMHg4OTBDLCAweDg5MEQsIDB4ODkwRSwgMHg4OTBGLCAweDg5MTEsIDB4ODkxNCwKKyAgICAweDg5MTUsIDB4ODkxNiwgMHg4OTE3LCAweDg5MTgsIDB4ODkxQywgMHg4OTFELCAweDg5MUUsIDB4ODkxRiwKKyAgICAweDg5MjAsIDB4ODkyMiwgMHg4OTIzLCAweDg5MjQsIDB4ODkyNiwgMHg4OTI3LCAweDg5MjgsIDB4ODkyOSwKKyAgICAweDg5MkMsIDB4ODkyRCwgMHg4OTJFLCAweDg5MkYsIDB4ODkzMSwgMHg4OTM1LCAweDg5MzcsIDB4ODkzOSwKKyAgICAweDg5M0EsIDB4ODkzQywgMHg4OTNELCAweDg5M0UsIDB4ODkzRiwgMHg4OTQwLCAweDg5NDIsIDB4ODk0MywKKyAgICAweDg5NDUsIDB4ODk0NiwgMHg4OTQ4LCAweDg5NDksIDB4ODk0QSwgMHg4OTRCLCAweDg5NEMsIDB4ODk0RCwKKyAgICAweDg5NEUsIDB4ODk0RiwgMHg4OTUwLCAweDg5NTEsIDB4ODk1MiwgMHg4OTUzLCAweDg5NTQsIDB4ODk1NSwKKyAgICAweDg5NTcsIDB4ODk1OCwgMHg4OTU5LCAweDg5NUEsIDB4ODk1QiwgMHg4OTVDLCAweDg5NjEsIDB4ODk2MiwKKyAgICAweDg5NjMsIDB4ODk2NSwgMHg4OTY3LCAweDg5NjgsIDB4ODk2OSwgMHg4OTZCLCAweDg5NkQsIDB4ODk2RSwKKyAgICAweDg5NzAsIDB4ODk3MSwgMHg4OTczLCAweDg5NzQsIDB4ODk3NSwgMHg4OTc2LCAweDg5NzcsIDB4ODk3OCwKKyAgICAweDg5NzksIDB4ODk3QSwgMHg4OTdDLCAweDg5N0QsIDB4ODk3RSwgMHg4OTgwLCAweDg5ODIsIDB4ODk4NCwKKyAgICAweDg5ODUsIDB4ODk4NywgMHg4OTg4LCAweDg5ODksIDB4ODk4QSwgMHg4OThDLCAweDg5OEQsIDB4ODk4RSwKKyAgICAweDg5OTAsIDB4ODk5MSwgMHg4OTkyLCAweDg5OTQsIDB4ODk5NSwgMHg4OTk3LCAweDg5OTksIDB4ODk5QSwKKyAgICAweDg5OUIsIDB4ODk5QywgMHg4OTlELCAweDg5OUUsIDB4ODk5RiwgMHg4OUEwLCAweDg5QTIsIDB4ODlBMywKKyAgICAweDg5QTQsIDB4ODlBNSwgMHg4OUE3LCAweDg5QTgsIDB4ODlBOSwgMHg4OUFCLCAweDg5QUQsIDB4ODlBRSwKKyAgICAweDg5QjAsIDB4ODlCMSwgMHg4OUIzLCAweDg5QjQsIDB4ODlCNSwgMHg4OUI2LCAweDg5QjgsIDB4ODlCOSwKKyAgICAweDg5QkIsIDB4ODlCQywgMHg4OUJFLCAweDg5QzMsIDB4ODlDRCwgMHg4OUQzLCAweDg5RDQsIDB4ODlENSwKKyAgICAweDg5RDcsIDB4ODlEOCwgMHg4OUQ5LCAweDg5REIsIDB4ODlERCwgMHg4OURGLCAweDg5RTAsIDB4ODlFMSwKKyAgICAweDg5RTIsIDB4ODlFNCwgMHg4OUU3LCAweDg5RTgsIDB4ODlFOSwgMHg4OUVBLCAweDg5RUMsIDB4ODlFRCwKKyAgICAweDg5RUUsIDB4ODlGMCwgMHg4OUYxLCAweDg5RjIsIDB4ODlGNSwgMHg4OUY3LCAweDg5RjksIDB4ODlGQSwKKyAgICAweDg5RkIsIDB4ODlGQywgMHg4OUZELCAweDg5RkUsIDB4ODlGRiwgMHg4QTA0LCAweDhBMDUsIDB4OEEwNiwKKyAgICAweDhBMDksIDB4OEEwQiwgMHg4QTBELCAweDhBMEYsIDB4OEExMSwgMHg4QTEyLCAweDhBMTQsIDB4OEExNywKKyAgICAweDhBMTksIDB4OEExQSwgMHg4QTFDLCAweDhBMUUsIDB4OEEyMCwgMHg4QTIxLCAweDhBMjIsIDB4OEEyNCwKKyAgICAweDhBMjYsIDB4OEEyNywgMHg4QTI4LCAweDhBMjksIDB4OEEyQiwgMHg4QTJDLCAweDhBMkUsIDB4OEEyRiwKKyAgICAweDhBMzAsIDB4OEEzMiwgMHg4QTMzLCAweDhBMzUsIDB4OEEzNywgMHg4QTM4LCAweDhBMzksIDB4OEEzQiwKKyAgICAweDhBM0MsIDB4OEEzRCwgMHg4QTNGLCAweDhBNDAsIDB4OEE0MiwgMHg4QTQzLCAweDhBNDQsIDB4OEE0NSwKKyAgICAweDhBNDcsIDB4OEE0OSwgMHg4QTRBLCAweDhBNEIsIDB4OEE0QywgMHg4QTRELCAweDhBNEYsIDB4OEE1MSwKKyAgICAweDhBNTMsIDB4OEE1NiwgMHg4QTU3LCAweDhBNTksIDB4OEE1QSwgMHg4QTVDLCAweDhBNUQsIDB4OEE1RiwKKyAgICAweDhBNjAsIDB4OEE2NCwgMHg4QTY1LCAweDhBNjcsIDB4OEE2OCwgMHg4QTZBLCAweDhBNkYsIDB4OEE3NCwKKyAgICAweDhBNzYsIDB4OEE3NywgMHg4QTc4LCAweDhBN0EsIDB4OEE3QiwgMHg4QTdELCAweDhBN0UsIDB4OEE4MCwKKyAgICAweDhBODEsIDB4OEE4MiwgMHg4QTgzLCAweDhBODgsIDB4OEE4QiwgMHg4QThDLCAweDhBOEUsIDB4OEE4RiwKKyAgICAweDhBOTAsIDB4OEE5NCwgMHg4QTk2LCAweDhBOTcsIDB4OEE5OSwgMHg4QTlCLCAweDhBOUMsIDB4OEE5RCwKKyAgICAweDhBOUYsIDB4OEFBMiwgMHg4QUE3LCAweDhBQTksIDB4OEFBQSwgMHg4QUFCLCAweDhBQUQsIDB4OEFBRSwKKyAgICAweDhBQUYsIDB4OEFCMSwgMHg4QUIzLCAweDhBQjQsIDB4OEFCNSwgMHg4QUI3LCAweDhBQjgsIDB4OEFCQSwKKyAgICAweDhBQkIsIDB4OEFCRCwgMHg4QUJFLCAweDhBQzAsIDB4OEFDMSwgMHg4QUMzLCAweDhBQzUsIDB4OEFDNiwKKyAgICAweDhBQzgsIDB4OEFDQSwgMHg4QUNDLCAweDhBQ0UsIDB4OEFEMCwgMHg4QUQzLCAweDhBRDQsIDB4OEFENSwKKyAgICAweDhBRDgsIDB4OEFEOSwgMHg4QURBLCAweDhBREQsIDB4OEFERiwgMHg4QUUwLCAweDhBRTEsIDB4OEFFMywKKyAgICAweDhBRTUsIDB4OEFFOCwgMHg4QUU5LCAweDhBRUEsIDB4OEFFQywgMHg4QUVGLCAweDhBRjAsIDB4OEFGMiwKKyAgICAweDhBRjQsIDB4OEFGNSwgMHg4QUY5LCAweDhBRkIsIDB4OEFGRCwgMHg4QUZGLCAweDhCMDMsIDB4OEIwNiwKKyAgICAweDhCMDgsIDB4OEIwOSwgMHg4QjBCLCAweDhCMEMsIDB4OEIwRCwgMHg4QjBGLCAweDhCMTEsIDB4OEIxMiwKKyAgICAweDhCMTMsIDB4OEIxNSwgMHg4QjE4LCAweDhCMUMsIDB4OEIxRSwgMHg4QjFGLCAweDhCMjAsIDB4OEIyMiwKKyAgICAweDhCMjMsIDB4OEIyNCwgMHg4QjI1LCAweDhCMjcsIDB4OEIyOSwgMHg4QjJBLCAweDhCMkUsIDB4OEIyRiwKKyAgICAweDhCMzAsIDB4OEIzMSwgMHg4QjMyLCAweDhCMzQsIDB4OEIzNSwgMHg4QjM2LCAweDhCMzcsIDB4OEIzOCwKKyAgICAweDhCM0EsIDB4OEIzQiwgMHg4QjNDLCAweDhCM0QsIDB4OEIzRiwgMHg4QjQwLCAweDhCNDEsIDB4OEI0MiwKKyAgICAweDhCNDMsIDB4OEI0NCwgMHg4QjQ1LCAweDhCNDYsIDB4OEI0NywgMHg4QjQ4LCAweDhCNEEsIDB4OEI0QiwKKyAgICAweDhCNEMsIDB4OEI0RCwgMHg4QjUwLCAweDhCNTEsIDB4OEI1MiwgMHg4QjUzLCAweDhCNTQsIDB4OEI1NSwKKyAgICAweDhCNTcsIDB4OEI1QiwgMHg4QjVELCAweDhCNUUsIDB4OEI1RiwgMHg4QjYwLCAweDhCNjEsIDB4OEI2MiwKKyAgICAweDhCNjMsIDB4OEI2NCwgMHg4QjY1LCAweDhCNjcsIDB4OEI2OCwgMHg4QjY5LCAweDhCNkEsIDB4OEI2RCwKKyAgICAweDhCNkUsIDB4OEI3MSwgMHg4QjcyLCAweDhCNzMsIDB4OEI3NSwgMHg4Qjc2LCAweDhCNzgsIDB4OEI3OSwKKyAgICAweDhCN0EsIDB4OEI3QiwgMHg4QjdDLCAweDhCN0UsIDB4OEI3RiwgMHg4QjgxLCAweDhCODIsIDB4OEI4MywKKyAgICAweDhCODQsIDB4OEI4NSwgMHg4Qjg2LCAweDhCODcsIDB4OEI4OCwgMHg4Qjg5LCAweDhCOEIsIDB4OEI4QywKKyAgICAweDhCOEQsIDB4OEI4RiwgMHg4QjkwLCAweDhCOTEsIDB4OEI5NCwgMHg4Qjk3LCAweDhCOTgsIDB4OEI5OSwKKyAgICAweDhCOUEsIDB4OEI5QiwgMHg4QjlELCAweDhCOUYsIDB4OEJBQywgMHg4QkIxLCAweDhCQkIsIDB4OEJDNywKKyAgICAweDhCRDAsIDB4OEJFQSwgMHg4QzA5LCAweDhDMUUsIDB4OEMzOCwgMHg4QzM5LCAweDhDM0EsIDB4OEMzQiwKKyAgICAweDhDM0MsIDB4OEMzRCwgMHg4QzNFLCAweDhDM0YsIDB4OEM0MCwgMHg4QzQyLCAweDhDNDMsIDB4OEM0NCwKKyAgICAweDhDNDUsIDB4OEM0QSwgMHg4QzRCLCAweDhDNEQsIDB4OEM0RSwgMHg4QzRGLCAweDhDNTEsIDB4OEM1MiwKKyAgICAweDhDNTMsIDB4OEM1NCwgMHg4QzU2LCAweDhDNTcsIDB4OEM1OCwgMHg4QzU5LCAweDhDNUIsIDB4OEM1QywKKyAgICAweDhDNUQsIDB4OEM1RSwgMHg4QzVGLCAweDhDNjAsIDB4OEM2MywgMHg4QzY0LCAweDhDNjUsIDB4OEM2NiwKKyAgICAweDhDNjcsIDB4OEM2OCwgMHg4QzY5LCAweDhDNkMsIDB4OEM2RCwgMHg4QzZFLCAweDhDNkYsIDB4OEM3MCwKKyAgICAweDhDNzEsIDB4OEM3MiwgMHg4Qzc0LCAweDhDNzUsIDB4OEM3NiwgMHg4Qzc3LCAweDhDN0IsIDB4OEM3QywKKyAgICAweDhDN0QsIDB4OEM3RSwgMHg4QzdGLCAweDhDODAsIDB4OEM4MSwgMHg4QzgzLCAweDhDODQsIDB4OEM4NiwKKyAgICAweDhDODcsIDB4OEM4OCwgMHg4QzhCLCAweDhDOEQsIDB4OEM4RSwgMHg4QzhGLCAweDhDOTAsIDB4OEM5MSwKKyAgICAweDhDOTIsIDB4OEM5MywgMHg4Qzk1LCAweDhDOTYsIDB4OEM5NywgMHg4Qzk5LCAweDhDOUEsIDB4OEM5QiwKKyAgICAweDhDOUMsIDB4OEM5RiwgMHg4Q0EzLCAweDhDQTQsIDB4OENBNSwgMHg4Q0E2LCAweDhDQUQsIDB4OENBRSwKKyAgICAweDhDQjEsIDB4OENCNSwgMHg4Q0I5LCAweDhDQkUsIDB4OENDNiwgMHg4Q0M5LCAweDhDQ0IsIDB4OENDQywKKyAgICAweDhDQ0QsIDB4OENDRSwgMHg4Q0NGLCAweDhDRDAsIDB4OENENCwgMHg4Q0Q2LCAweDhDRDcsIDB4OENEOCwKKyAgICAweDhDRDksIDB4OENEQiwgMHg4Q0RELCAweDhDREYsIDB4OENFNSwgMHg4Q0U4LCAweDhDRTksIDB4OENFRSwKKyAgICAweDhDRUYsIDB4OENGMCwgMHg4Q0YxLCAweDhDRjIsIDB4OENGMywgMHg4Q0Y1LCAweDhDRjYsIDB4OENGNywKKyAgICAweDhDRjgsIDB4OENGOSwgMHg4Q0ZGLCAweDhEMDAsIDB4OEQwMSwgMHg4RDAyLCAweDhEMDMsIDB4OEQwNiwKKyAgICAweDhEMDcsIDB4OEQwOSwgMHg4RDBDLCAweDhEMEUsIDB4OEQxMSwgMHg4RDEyLCAweDhEMTMsIDB4OEQxNCwKKyAgICAweDhEMTUsIDB4OEQxNywgMHg4RDE4LCAweDhEMTksIDB4OEQxQSwgMHg4RDIwLCAweDhENTEsIDB4OEQ1MiwKKyAgICAweDhENTcsIDB4OEQ1RiwgMHg4RDY1LCAweDhENjgsIDB4OEQ2OSwgMHg4RDZBLCAweDhENkMsIDB4OEQ2RSwKKyAgICAweDhENkYsIDB4OEQ3MSwgMHg4RDcyLCAweDhENzgsIDB4OEQ3OSwgMHg4RDdBLCAweDhEN0IsIDB4OEQ3QywKKyAgICAweDhEN0QsIDB4OEQ3RSwgMHg4RDdGLCAweDhEODAsIDB4OEQ4MiwgMHg4RDgzLCAweDhEODYsIDB4OEQ4NywKKyAgICAweDhEODgsIDB4OEQ4OSwgMHg4RDhDLCAweDhEOEQsIDB4OEQ4RSwgMHg4RDhGLCAweDhEOTAsIDB4OEQ5MiwKKyAgICAweDhEOTMsIDB4OEQ5NiwgMHg4RDk3LCAweDhEOTgsIDB4OEQ5QSwgMHg4RDlCLCAweDhEOUMsIDB4OEQ5RCwKKyAgICAweDhEOUUsIDB4OERBMCwgMHg4REExLCAweDhEQTIsIDB4OERBNCwgMHg4REE1LCAweDhEQTYsIDB4OERBNywKKyAgICAweDhEQTksIDB4OERBQSwgMHg4REFCLCAweDhEQUMsIDB4OERBRCwgMHg4REFFLCAweDhEQUYsIDB4OERCMCwKKyAgICAweDhEQjYsIDB4OERCNywgMHg4REI5LCAweDhEQkIsIDB4OERCRCwgMHg4REMwLCAweDhEQzEsIDB4OERDMiwKKyAgICAweDhEQzUsIDB4OERDNywgMHg4REM4LCAweDhEQzksIDB4OERDQSwgMHg4RENELCAweDhERDAsIDB4OEREMiwKKyAgICAweDhERDMsIDB4OERENCwgMHg4REQ1LCAweDhERDgsIDB4OEREOSwgMHg4RERDLCAweDhERTAsIDB4OERFMSwKKyAgICAweDhERTIsIDB4OERFNSwgMHg4REU2LCAweDhERTcsIDB4OERFOSwgMHg4REVELCAweDhERUUsIDB4OERGMCwKKyAgICAweDhERjEsIDB4OERGMiwgMHg4REY0LCAweDhERjYsIDB4OERGQywgMHg4REZFLCAweDhERkYsIDB4OEUwMCwKKyAgICAweDhFMDEsIDB4OEUwMiwgMHg4RTAzLCAweDhFMDQsIDB4OEUwNiwgMHg4RTA3LCAweDhFMDgsIDB4OEUwQiwKKyAgICAweDhFMEQsIDB4OEUwRSwgMHg4RTExLCAweDhFMTIsIDB4OEUxMywgMHg4RTE1LCAweDhFMTYsIDB4OEUxNywKKyAgICAweDhFMTgsIDB4OEUxOSwgMHg4RTFBLCAweDhFMUIsIDB4OEUxQywgMHg4RTIwLCAweDhFMjEsIDB4OEUyNCwKKyAgICAweDhFMjUsIDB4OEUyNiwgMHg4RTI3LCAweDhFMjgsIDB4OEUyQiwgMHg4RTJELCAweDhFMzAsIDB4OEUzMiwKKyAgICAweDhFMzMsIDB4OEUzNiwgMHg4RTM3LCAweDhFMzgsIDB4OEUzQiwgMHg4RTNDLCAweDhFM0UsIDB4OEUzRiwKKyAgICAweDhFNDMsIDB4OEU0NSwgMHg4RTQ2LCAweDhFNEQsIDB4OEU0RSwgMHg4RTRGLCAweDhFNTAsIDB4OEU1MywKKyAgICAweDhFNTQsIDB4OEU1NiwgMHg4RTU3LCAweDhFNTgsIDB4OEU1QSwgMHg4RTVCLCAweDhFNUMsIDB4OEU1RCwKKyAgICAweDhFNUUsIDB4OEU1RiwgMHg4RTYwLCAweDhFNjEsIDB4OEU2MiwgMHg4RTY0LCAweDhFNjUsIDB4OEU2NywKKyAgICAweDhFNjgsIDB4OEU2QSwgMHg4RTZCLCAweDhFNkUsIDB4OEU3MSwgMHg4RTczLCAweDhFNzUsIDB4OEU3NywKKyAgICAweDhFNzgsIDB4OEU3OSwgMHg4RTdCLCAweDhFN0QsIDB4OEU3RSwgMHg4RTgwLCAweDhFODIsIDB4OEU4MywKKyAgICAweDhFODQsIDB4OEU4NiwgMHg4RTg4LCAweDhFOEMsIDB4OEU4RSwgMHg4RTk1LCAweDhFOTYsIDB4OEU5NywKKyAgICAweDhFOTgsIDB4OEU5OSwgMHg4RTlCLCAweDhFOUQsIDB4OEU5RiwgMHg4RUEwLCAweDhFQTIsIDB4OEVBMywKKyAgICAweDhFQTQsIDB4OEVBNywgMHg4RUE4LCAweDhFQTksIDB4OEVBRCwgMHg4RUFFLCAweDhFQjAsIDB4OEVCMSwKKyAgICAweDhFQjMsIDB4OEVCNCwgMHg4RUI1LCAweDhFQjYsIDB4OEVCNywgMHg4RUI4LCAweDhFQjksIDB4OEVCQiwKKyAgICAweDhFQkMsIDB4OEVCRCwgMHg4RUJFLCAweDhFQkYsIDB4OEVDMSwgMHg4RUMyLCAweDhFQzMsIDB4OEVDNCwKKyAgICAweDhFQzUsIDB4OEVDNiwgMHg4RUM3LCAweDhFQzgsIDB4OEVDOSwgMHg4RUNGLCAweDhFRDAsIDB4OEVEMSwKKyAgICAweDhFRDMsIDB4OEVENSwgMHg4RUQ2LCAweDhFRDcsIDB4OEVEOCwgMHg4RUQ5LCAweDhFREEsIDB4OEVEQywKKyAgICAweDhFREQsIDB4OEVERSwgMHg4RUUwLCAweDhFRTEsIDB4OEVFMiwgMHg4RUUzLCAweDhFRTUsIDB4OEVFNiwKKyAgICAweDhFRTcsIDB4OEVFOCwgMHg4RUU5LCAweDhFRUEsIDB4OEVFQywgMHg4RUVELCAweDhFRUUsIDB4OEVFRiwKKyAgICAweDhFRjAsIDB4OEVGMSwgMHg4RUYzLCAweDhFRjQsIDB4OEVGNSwgMHg4RUY2LCAweDhFRjcsIDB4OEVGRCwKKyAgICAweDhFRkYsIDB4OEYwMCwgMHg4RjAxLCAweDhGMDIsIDB4OEYwNCwgMHg4RjA2LCAweDhGMDgsIDB4OEYwQiwKKyAgICAweDhGMEMsIDB4OEYwRCwgMHg4RjBFLCAweDhGMEYsIDB4OEYxMCwgMHg4RjExLCAweDhGMTMsIDB4OEYxNiwKKyAgICAweDhGMTcsIDB4OEYxOCwgMHg4RjE5LCAweDhGMUEsIDB4OEYyMCwgMHg4RjIxLCAweDhGMjIsIDB4OEYyMywKKyAgICAweDhGMjQsIDB4OEYyNywgMHg4RjI4LCAweDhGMkIsIDB4OEYyQywgMHg4RjJELCAweDhGMkUsIDB4OEYzMCwKKyAgICAweDhGMzEsIDB4OEYzMiwgMHg4RjM0LCAweDhGMzUsIDB4OEYzNiwgMHg4RjM3LCAweDhGMzksIDB4OEYzQSwKKyAgICAweDhGM0MsIDB4OEYzRCwgMHg4RjQwLCAweDhGNDEsIDB4OEY0MywgMHg4RjQ3LCAweDhGNDgsIDB4OEY0QSwKKyAgICAweDhGNEIsIDB4OEY0QywgMHg4RjRGLCAweDhGNTAsIDB4OEY1MSwgMHg4RjUyLCAweDhGNTMsIDB4OEY1NSwKKyAgICAweDhGNTYsIDB4OEY1NywgMHg4RjU4LCAweDhGNTksIDB4OEY1QSwgMHg4RjVCLCAweDhGNUMsIDB4OEY1RCwKKyAgICAweDhGNUUsIDB4OEY2MCwgMHg4RjYzLCAweDhGNjUsIDB4OEY2QSwgMHg4RjgwLCAweDhGOEMsIDB4OEY5MiwKKyAgICAweDhGOUQsIDB4OEZBMCwgMHg4RkExLCAweDhGQTIsIDB4OEZBNCwgMHg4RkE1LCAweDhGQTcsIDB4OEZBQSwKKyAgICAweDhGQUMsIDB4OEZCMywgMHg4RkI0LCAweDhGQjUsIDB4OEZCNywgMHg4RkI4LCAweDhGQkEsIDB4OEZCQiwKKyAgICAweDhGQkMsIDB4OEZCRiwgMHg4RkMwLCAweDhGQzMsIDB4OEZDNiwgMHg4RkM5LCAweDhGQ0EsIDB4OEZDQiwKKyAgICAweDhGQ0MsIDB4OEZDRCwgMHg4RkNGLCAweDhGRDIsIDB4OEZENiwgMHg4RkQ3LCAweDhGREEsIDB4OEZFMCwKKyAgICAweDhGRTEsIDB4OEZFMywgMHg4RkU3LCAweDhGRUMsIDB4OEZFRiwgMHg4RkYxLCAweDhGRjIsIDB4OEZGNSwKKyAgICAweDhGRjYsIDB4OEZGQSwgMHg4RkZCLCAweDhGRkMsIDB4OEZGRSwgMHg4RkZGLCAweDkwMDcsIDB4OTAwOCwKKyAgICAweDkwMEMsIDB4OTAwRSwgMHg5MDEzLCAweDkwMTgsIDB4OTAxQywgMHg5MDI0LCAweDkwMjUsIDB4OTAyNywKKyAgICAweDkwMjgsIDB4OTAyOSwgMHg5MDJBLCAweDkwMkIsIDB4OTAyQywgMHg5MDMwLCAweDkwMzEsIDB4OTAzMywKKyAgICAweDkwMzQsIDB4OTAzNywgMHg5MDM5LCAweDkwM0EsIDB4OTAzRCwgMHg5MDNGLCAweDkwNDAsIDB4OTA0MywKKyAgICAweDkwNDUsIDB4OTA0NiwgMHg5MDQ4LCAweDkwNDksIDB4OTA0QSwgMHg5MDRDLCAweDkwNTYsIDB4OTA1OSwKKyAgICAweDkwNUEsIDB4OTA1RCwgMHg5MDVGLCAweDkwNjEsIDB4OTA2NCwgMHg5MDY2LCAweDkwNjcsIDB4OTA2QSwKKyAgICAweDkwNkIsIDB4OTA2QywgMHg5MDZGLCAweDkwNzAsIDB4OTA3MSwgMHg5MDczLCAweDkwNzYsIDB4OTA3OSwKKyAgICAweDkwN0IsIDB4OTA3RSwgMHg5MDg1LCAweDkwODYsIDB4OTA4OSwgMHg5MDhDLCAweDkwOEQsIDB4OTA4RSwKKyAgICAweDkwOTIsIDB4OTA5NCwgMHg5MDk2LCAweDkwOTgsIDB4OTA5QSwgMHg5MDlDLCAweDkwOUUsIDB4OTA5RiwKKyAgICAweDkwQTAsIDB4OTBBNCwgMHg5MEE1LCAweDkwQTcsIDB4OTBBOCwgMHg5MEE5LCAweDkwQUIsIDB4OTBBRCwKKyAgICAweDkwQjIsIDB4OTBCNywgMHg5MEJDLCAweDkwQkQsIDB4OTBCRiwgMHg5MEMwLCAweDkwQzIsIDB4OTBDMywKKyAgICAweDkwQzYsIDB4OTBDOCwgMHg5MEM5LCAweDkwQ0IsIDB4OTBDQywgMHg5MENELCAweDkwRDIsIDB4OTBENCwKKyAgICAweDkwRDUsIDB4OTBENiwgMHg5MEQ4LCAweDkwRDksIDB4OTBEQSwgMHg5MERFLCAweDkwRTAsIDB4OTBFMywKKyAgICAweDkwRTQsIDB4OTBFNSwgMHg5MEU5LCAweDkwRUEsIDB4OTBFQywgMHg5MEVFLCAweDkwRjAsIDB4OTBGMSwKKyAgICAweDkwRjIsIDB4OTBGMywgMHg5MEY2LCAweDkwRjcsIDB4OTBGOSwgMHg5MEZBLCAweDkwRkIsIDB4OTBGQywKKyAgICAweDkwRkYsIDB4OTEwMCwgMHg5MTAxLCAweDkxMDMsIDB4OTEwNSwgMHg5MTA3LCAweDkxMDgsIDB4OTEwQSwKKyAgICAweDkxMEIsIDB4OTEwQywgMHg5MTBELCAweDkxMEUsIDB4OTEwRiwgMHg5MTEwLCAweDkxMTEsIDB4OTExMywKKyAgICAweDkxMTUsIDB4OTExNywgMHg5MTE4LCAweDkxMUEsIDB4OTExQiwgMHg5MTFDLCAweDkxMUQsIDB4OTExRiwKKyAgICAweDkxMjAsIDB4OTEyMSwgMHg5MTI0LCAweDkxMjUsIDB4OTEyNiwgMHg5MTI4LCAweDkxMjksIDB4OTEyQSwKKyAgICAweDkxMkIsIDB4OTEyQywgMHg5MTJFLCAweDkxMzMsIDB4OTEzNSwgMHg5MTM3LCAweDkxMzgsIDB4OTEzQiwKKyAgICAweDkxM0MsIDB4OTEzRCwgMHg5MTNFLCAweDkxM0YsIDB4OTE0MCwgMHg5MTQxLCAweDkxNDIsIDB4OTE0NCwKKyAgICAweDkxNDUsIDB4OTE0NywgMHg5MTUxLCAweDkxNTMsIDB4OTE1NCwgMHg5MTU1LCAweDkxNTYsIDB4OTE1OCwKKyAgICAweDkxNTksIDB4OTE1QiwgMHg5MTVDLCAweDkxNUYsIDB4OTE2MCwgMHg5MTY2LCAweDkxNjcsIDB4OTE2OCwKKyAgICAweDkxNkIsIDB4OTE2RCwgMHg5MTczLCAweDkxN0EsIDB4OTE3QiwgMHg5MTdDLCAweDkxODAsIDB4OTE4MSwKKyAgICAweDkxODIsIDB4OTE4MywgMHg5MTg0LCAweDkxODYsIDB4OTE4OCwgMHg5MThBLCAweDkxOEUsIDB4OTE4RiwKKyAgICAweDkxOTMsIDB4OTE5NCwgMHg5MTk1LCAweDkxOTcsIDB4OTE5OCwgMHg5MTk5LCAweDkxOUQsIDB4OTE5RSwKKyAgICAweDkxOUYsIDB4OTFBMCwgMHg5MUExLCAweDkxQTQsIDB4OTFBNSwgMHg5MUE2LCAweDkxQTcsIDB4OTFBOCwKKyAgICAweDkxQTksIDB4OTFCMCwgMHg5MUIxLCAweDkxQjIsIDB4OTFCMywgMHg5MUI2LCAweDkxQjcsIDB4OTFCOCwKKyAgICAweDkxQjksIDB4OTFCQiwgMHg5MUJDLCAweDkxQkQsIDB4OTFCRSwgMHg5MUJGLCAweDkxQzIsIDB4OTFDNCwKKyAgICAweDkxQzYsIDB4OTFDOCwgMHg5MUQwLCAweDkxRDYsIDB4OTFEQSwgMHg5MURCLCAweDkxREUsIDB4OTFERiwKKyAgICAweDkxRTAsIDB4OTFFMSwgMHg5MUUyLCAweDkxRTUsIDB4OTFFNiwgMHg5MUU4LCAweDkxRUEsIDB4OTFFQiwKKyAgICAweDkxRUMsIDB4OTFFRCwgMHg5MUVFLCAweDkxRUYsIDB4OTFGMCwgMHg5MUYxLCAweDkxRjIsIDB4OTFGMywKKyAgICAweDkxRjQsIDB4OTFGNiwgMHg5MUY4LCAweDkxRkIsIDB4OTFGQywgMHg5MUZELCAweDkxRkUsIDB4OTFGRiwKKyAgICAweDkyMDIsIDB4OTIwMywgMHg5MjA1LCAweDkyMDYsIDB4OTIwNywgMHg5MjBBLCAweDkyMEIsIDB4OTIwQywKKyAgICAweDkyMEYsIDB4OTIxMiwgMHg5MjEzLCAweDkyMTYsIDB4OTIxNywgMHg5MjE4LCAweDkyMTksIDB4OTIxQSwKKyAgICAweDkyMUIsIDB4OTIxQywgMHg5MjFELCAweDkyMUYsIDB4OTIyMCwgMHg5MjIxLCAweDkyMjIsIDB4OTIyNCwKKyAgICAweDkyMjgsIDB4OTIyOSwgMHg5MjJBLCAweDkyMkIsIDB4OTIyQywgMHg5MjJELCAweDkyMkYsIDB4OTIzMSwKKyAgICAweDkyMzIsIDB4OTIzNSwgMHg5MjM2LCAweDkyM0IsIDB4OTIzQywgMHg5MjQxLCAweDkyNDIsIDB4OTI0MywKKyAgICAweDkyNDQsIDB4OTI0NiwgMHg5MjQ3LCAweDkyNEEsIDB4OTI0QiwgMHg5MjRDLCAweDkyNEUsIDB4OTI0RiwKKyAgICAweDkyNTAsIDB4OTI1MiwgMHg5MjUzLCAweDkyNTQsIDB4OTI1NiwgMHg5MjU4LCAweDkyNTksIDB4OTI1QywKKyAgICAweDkyNUQsIDB4OTI1RiwgMHg5MjYwLCAweDkyNjEsIDB4OTI2MywgMHg5MjY0LCAweDkyNjUsIDB4OTI2NywKKyAgICAweDkyNjgsIDB4OTI2OSwgMHg5MjZBLCAweDkyNkIsIDB4OTI2RSwgMHg5MjZGLCAweDkyNzAsIDB4OTI3MSwKKyAgICAweDkyNzIsIDB4OTI3MywgMHg5Mjc1LCAweDkyNzYsIDB4OTI3NywgMHg5Mjc5LCAweDkyN0MsIDB4OTI3RCwKKyAgICAweDkyN0UsIDB4OTI4MSwgMHg5MjgyLCAweDkyODQsIDB4OTI4NiwgMHg5Mjg3LCAweDkyODgsIDB4OTI4OSwKKyAgICAweDkyOEEsIDB4OTI4QiwgMHg5MjhDLCAweDkyOEQsIDB4OTI4RiwgMHg5MjkwLCAweDkyOTIsIDB4OTI5NCwKKyAgICAweDkyOTUsIDB4OTI5NywgMHg5Mjk5LCAweDkyOUIsIDB4OTI5RCwgMHg5MjlFLCAweDkyOUYsIDB4OTJBMSwKKyAgICAweDkyQTIsIDB4OTJBNCwgMHg5MkE3LCAweDkyQUQsIDB4OTJBRiwgMHg5MkIwLCAweDkyQjIsIDB4OTJCMywKKyAgICAweDkyQjQsIDB4OTJCNSwgMHg5MkI2LCAweDkyQjgsIDB4OTJCQSwgMHg5MkJELCAweDkyQkUsIDB4OTJCRiwKKyAgICAweDkyQzAsIDB4OTJDMiwgMHg5MkM0LCAweDkyQzYsIDB4OTJDOSwgMHg5MkNBLCAweDkyQ0IsIDB4OTJDRCwKKyAgICAweDkyQ0UsIDB4OTJEMCwgMHg5MkQxLCAweDkyRDMsIDB4OTJENCwgMHg5MkQ1LCAweDkyRDYsIDB4OTJENywKKyAgICAweDkyRDgsIDB4OTJEOSwgMHg5MkRBLCAweDkyREIsIDB4OTJEQywgMHg5MkRFLCAweDkyRTAsIDB4OTJFMSwKKyAgICAweDkyRTIsIDB4OTJFNywgMHg5MkU5LCAweDkyRUIsIDB4OTJFQywgMHg5MkYyLCAweDkyRjMsIDB4OTJGNCwKKyAgICAweDkyRjUsIDB4OTJGNywgMHg5MkY5LCAweDkyRkEsIDB4OTJGQiwgMHg5MkZELCAweDkyRkUsIDB4OTJGRiwKKyAgICAweDkzMDAsIDB4OTMwMiwgMHg5MzAzLCAweDkzMDQsIDB4OTMwNSwgMHg5MzA5LCAweDkzMEEsIDB4OTMwQiwKKyAgICAweDkzMEMsIDB4OTMwRCwgMHg5MzBFLCAweDkzMEYsIDB4OTMxMSwgMHg5MzEzLCAweDkzMTQsIDB4OTMxNiwKKyAgICAweDkzMTcsIDB4OTMxQywgMHg5MzFELCAweDkzMUUsIDB4OTMyMSwgMHg5MzIzLCAweDkzMjQsIDB4OTMyNSwKKyAgICAweDkzMjcsIDB4OTMyOSwgMHg5MzJBLCAweDkzMkMsIDB4OTMyRCwgMHg5MzMwLCAweDkzMzEsIDB4OTMzNCwKKyAgICAweDkzMzUsIDB4OTMzNywgMHg5MzM5LCAweDkzM0EsIDB4OTMzQiwgMHg5MzNDLCAweDkzM0QsIDB4OTMzRiwKKyAgICAweDkzNDIsIDB4OTM0NCwgMHg5MzQ1LCAweDkzNDgsIDB4OTM0OSwgMHg5MzRBLCAweDkzNEMsIDB4OTM0RSwKKyAgICAweDkzNEYsIDB4OTM1MCwgMHg5MzUxLCAweDkzNTIsIDB4OTM1MywgMHg5MzU1LCAweDkzNTYsIDB4OTM1NywKKyAgICAweDkzNTksIDB4OTM1QSwgMHg5MzVDLCAweDkzNUQsIDB4OTM1RSwgMHg5MzVGLCAweDkzNjAsIDB4OTM2MSwKKyAgICAweDkzNjIsIDB4OTM2MywgMHg5MzY2LCAweDkzNjcsIDB4OTM2OCwgMHg5MzZCLCAweDkzNkQsIDB4OTM2RSwKKyAgICAweDkzNkYsIDB4OTM3MSwgMHg5MzcyLCAweDkzNzMsIDB4OTM3NCwgMHg5Mzc3LCAweDkzNzgsIDB4OTM3OSwKKyAgICAweDkzN0IsIDB4OTM3QywgMHg5MzdELCAweDkzN0YsIDB4OTM4MCwgMHg5MzgxLCAweDkzODMsIDB4OTM4NSwKKyAgICAweDkzODYsIDB4OTM4OCwgMHg5Mzg5LCAweDkzOEIsIDB4OTM4QywgMHg5MzhELCAweDkzOEUsIDB4OTM5MCwKKyAgICAweDkzOTEsIDB4OTM5MiwgMHg5MzkzLCAweDkzOTQsIDB4OTM5NSwgMHg5Mzk3LCAweDkzOTksIDB4OTM5QSwKKyAgICAweDkzOUIsIDB4OTM5QywgMHg5MzlELCAweDkzOUUsIDB4OTM5RiwgMHg5M0EwLCAweDkzQTEsIDB4OTNBNCwKKyAgICAweDkzQTUsIDB4OTNBOCwgMHg5M0FCLCAweDkzQUQsIDB4OTNBRiwgMHg5M0IxLCAweDkzQjIsIDB4OTNCNCwKKyAgICAweDkzQjYsIDB4OTNCNywgMHg5M0I5LCAweDkzQkEsIDB4OTNCQiwgMHg5M0JDLCAweDkzQkQsIDB4OTNCRSwKKyAgICAweDkzQzAsIDB4OTNDMSwgMHg5M0MyLCAweDkzQzQsIDB4OTNDNSwgMHg5M0M2LCAweDkzQzksIDB4OTNDQiwKKyAgICAweDkzQ0UsIDB4OTNDRiwgMHg5M0QwLCAweDkzRDIsIDB4OTNEMywgMHg5M0Q0LCAweDkzRDUsIDB4OTNEOSwKKyAgICAweDkzREEsIDB4OTNEQiwgMHg5M0UwLCAweDkzRTMsIDB4OTNFNSwgMHg5M0U2LCAweDkzRTcsIDB4OTNFOSwKKyAgICAweDkzRUEsIDB4OTNFQiwgMHg5M0VDLCAweDkzRUQsIDB4OTNFRSwgMHg5M0VGLCAweDkzRjAsIDB4OTNGMSwKKyAgICAweDkzRjIsIDB4OTNGMywgMHg5M0Y0LCAweDkzRjYsIDB4OTNGOCwgMHg5M0ZBLCAweDkzRkIsIDB4OTNGQywKKyAgICAweDkzRkQsIDB4OTNGRSwgMHg5M0ZGLCAweDk0MDAsIDB4OTQwMSwgMHg5NDAyLCAweDk0MDQsIDB4OTQwNSwKKyAgICAweDk0MDYsIDB4OTQwNywgMHg5NDA4LCAweDk0MDksIDB4OTQwQSwgMHg5NDBDLCAweDk0MEQsIDB4OTQwRSwKKyAgICAweDk0MEYsIDB4OTQxMSwgMHg5NDE1LCAweDk0MTYsIDB4OTQxNywgMHg5NDFBLCAweDk0MUIsIDB4OTQxQywKKyAgICAweDk0MUUsIDB4OTQxRiwgMHg5NDIxLCAweDk0MjIsIDB4OTQyMywgMHg5NDI0LCAweDk0MjUsIDB4OTQyOSwKKyAgICAweDk0MkEsIDB4OTQyQiwgMHg5NDJDLCAweDk0MkQsIDB4OTQyRiwgMHg5NDMwLCAweDk0MzEsIDB4OTQzNCwKKyAgICAweDk0MzYsIDB4OTQzNywgMHg5NDM5LCAweDk0M0IsIDB4OTQzQywgMHg5NDNELCAweDk0NDAsIDB4OTQ0MSwKKyAgICAweDk0NDIsIDB4OTQ0MywgMHg5NDQ1LCAweDk0NDYsIDB4OTQ0NywgMHg5NDQ4LCAweDk0NDksIDB4OTQ0QiwKKyAgICAweDk0NEQsIDB4OTQ0RSwgMHg5NDRGLCAweDk0NTAsIDB4OTQ1MSwgMHg5NDUzLCAweDk0NTUsIDB4OTQ1NiwKKyAgICAweDk0NTcsIDB4OTQ1OCwgMHg5NDU5LCAweDk0NUEsIDB4OTQ1QiwgMHg5NDVDLCAweDk0NUQsIDB4OTQ1RSwKKyAgICAweDk0NUYsIDB4OTQ2MSwgMHg5NDYyLCAweDk0NjQsIDB4OTQ2NiwgMHg5NDY3LCAweDk0NjgsIDB4OTQ2OSwKKyAgICAweDk0NkEsIDB4OTQ2QywgMHg5NDZFLCAweDk0NkYsIDB4OTQ3MSwgMHg5NDczLCAweDk0NzQsIDB4OTQ3NSwKKyAgICAweDk0NzYsIDB4OTQ3OCwgMHg5NDdBLCAweDk0N0IsIDB4OTQ4MCwgMHg5NDgxLCAweDk0ODIsIDB4OTQ4MywKKyAgICAweDk0ODQsIDB4OTQ5MSwgMHg5NDk2LCAweDk0OTgsIDB4OTRDNywgMHg5NENGLCAweDk0RDMsIDB4OTRENCwKKyAgICAweDk0REEsIDB4OTRFNiwgMHg5NEZCLCAweDk1MUMsIDB4OTUyMCwgMHg5NTI3LCAweDk1MzMsIDB4OTUzRCwKKyAgICAweDk1NDMsIDB4OTU0OCwgMHg5NTRCLCAweDk1NTUsIDB4OTU1QSwgMHg5NTYwLCAweDk1NkUsIDB4OTU3NCwKKyAgICAweDk1NzUsIDB4OTU3OCwgMHg5NTc5LCAweDk1N0EsIDB4OTU3QiwgMHg5NTdDLCAweDk1N0QsIDB4OTU3RSwKKyAgICAweDk1ODEsIDB4OTU4NCwgMHg5NTg1LCAweDk1ODcsIDB4OTU4OCwgMHg5NThBLCAweDk1OEQsIDB4OTU5MCwKKyAgICAweDk1OTIsIDB4OTU5NSwgMHg5NTk2LCAweDk1OTcsIDB4OTU5OSwgMHg5NTlBLCAweDk1OUIsIDB4OTU5QywKKyAgICAweDk1OUQsIDB4OTU5RSwgMHg5NTlGLCAweDk1QTAsIDB4OTVBMiwgMHg5NUE2LCAweDk1QTcsIDB4OTVBQSwKKyAgICAweDk1QUUsIDB4OTVBRiwgMHg5NUIwLCAweDk1QjEsIDB4OTVCMywgMHg5NUI0LCAweDk1QjUsIDB4OTVCNywKKyAgICAweDk1QjgsIDB4OTVCQSwgMHg5NUMwLCAweDk1QzEsIDB4OTVDMiwgMHg5NUM0LCAweDk1QzUsIDB4OTVDNywKKyAgICAweDk1QzksIDB4OTVDRCwgMHg5NUNFLCAweDk1Q0YsIDB4OTVEMSwgMHg5NUQyLCAweDk1RDMsIDB4OTVENywKKyAgICAweDk1RDgsIDB4OTVEOSwgMHg5NURBLCAweDk1REIsIDB4OTVERCwgMHg5NURGLCAweDk1RTAsIDB4OTVFMywKKyAgICAweDk1RTQsIDB4OTVFNiwgMHg5NUU3LCAweDk1RUMsIDB4OTVGRiwgMHg5NjA3LCAweDk2MTMsIDB4OTYxOCwKKyAgICAweDk2MUIsIDB4OTYxRSwgMHg5NjIwLCAweDk2MjMsIDB4OTYyNCwgMHg5NjI1LCAweDk2MjYsIDB4OTYyNywKKyAgICAweDk2MjgsIDB4OTYyOSwgMHg5NjJCLCAweDk2MkMsIDB4OTYyRCwgMHg5NjJGLCAweDk2MzAsIDB4OTYzNywKKyAgICAweDk2MzgsIDB4OTYzOSwgMHg5NjNBLCAweDk2M0UsIDB4OTY0MSwgMHg5NjQzLCAweDk2NEEsIDB4OTY0RSwKKyAgICAweDk2NEYsIDB4OTY1MSwgMHg5NjUyLCAweDk2NTMsIDB4OTY1NiwgMHg5NjU3LCAweDk2NTksIDB4OTY1QSwKKyAgICAweDk2NUMsIDB4OTY1RSwgMHg5NjYwLCAweDk2NjUsIDB4OTY2NiwgMHg5NjZCLCAweDk2NkQsIDB4OTY2RSwKKyAgICAweDk2NkYsIDB4OTY3MSwgMHg5Njc5LCAweDk2N0EsIDB4OTY3QiwgMHg5NjdDLCAweDk2N0UsIDB4OTY3RiwKKyAgICAweDk2ODAsIDB4OTY4MSwgMHg5NjgyLCAweDk2ODMsIDB4OTY4NCwgMHg5Njg3LCAweDk2ODksIDB4OTY4QywKKyAgICAweDk2OTEsIDB4OTY5MiwgMHg5NjkzLCAweDk2OTYsIDB4OTY5QSwgMHg5NjlELCAweDk2OUUsIDB4OTY5RiwKKyAgICAweDk2QTAsIDB4OTZBMSwgMHg5NkEyLCAweDk2QTMsIDB4OTZBNCwgMHg5NkE1LCAweDk2QTYsIDB4OTZBOSwKKyAgICAweDk2QUIsIDB4OTZBQywgMHg5NkFELCAweDk2QUUsIDB4OTZBRiwgMHg5NkIyLCAweDk2QjUsIDB4OTZCNywKKyAgICAweDk2QkEsIDB4OTZCRiwgMHg5NkMyLCAweDk2QzMsIDB4OTZDOCwgMHg5NkNBLCAweDk2Q0IsIDB4OTZEMCwKKyAgICAweDk2RDEsIDB4OTZEMywgMHg5NkQ0LCAweDk2RDcsIDB4OTZEOCwgMHg5NkRBLCAweDk2REQsIDB4OTZERSwKKyAgICAweDk2REYsIDB4OTZFMSwgMHg5NkU0LCAweDk2RTUsIDB4OTZFNiwgMHg5NkU3LCAweDk2RUIsIDB4OTZFQywKKyAgICAweDk2RUQsIDB4OTZFRSwgMHg5NkYwLCAweDk2RjEsIDB4OTZGNCwgMHg5NkY1LCAweDk2RjgsIDB4OTZGQSwKKyAgICAweDk2RkMsIDB4OTZGRCwgMHg5NkZGLCAweDk3MDIsIDB4OTcwMywgMHg5NzA1LCAweDk3MEEsIDB4OTcwQiwKKyAgICAweDk3MEMsIDB4OTcxMCwgMHg5NzExLCAweDk3MTIsIDB4OTcxNCwgMHg5NzE1LCAweDk3MTcsIDB4OTcxOCwKKyAgICAweDk3MTksIDB4OTcxQSwgMHg5NzFCLCAweDk3MUQsIDB4OTcxRiwgMHg5NzIwLCAweDk3MjEsIDB4OTcyMiwKKyAgICAweDk3MjMsIDB4OTcyNCwgMHg5NzI1LCAweDk3MjYsIDB4OTcyOCwgMHg5NzI5LCAweDk3MkIsIDB4OTcyQywKKyAgICAweDk3MkUsIDB4OTcyRiwgMHg5NzMxLCAweDk3MzMsIDB4OTczNCwgMHg5NzM1LCAweDk3MzYsIDB4OTczNywKKyAgICAweDk3M0EsIDB4OTczQiwgMHg5NzNDLCAweDk3M0YsIDB4OTc0MCwgMHg5NzQxLCAweDk3NDMsIDB4OTc0NSwKKyAgICAweDk3NDYsIDB4OTc0NywgMHg5NzQ5LCAweDk3NEEsIDB4OTc0QiwgMHg5NzRDLCAweDk3NEQsIDB4OTc0RSwKKyAgICAweDk3NEYsIDB4OTc1MCwgMHg5NzUxLCAweDk3NTQsIDB4OTc1NSwgMHg5NzU3LCAweDk3NTgsIDB4OTc1QywKKyAgICAweDk3NUQsIDB4OTc1RiwgMHg5NzYzLCAweDk3NjQsIDB4OTc2NiwgMHg5NzY3LCAweDk3NkEsIDB4OTc2QiwKKyAgICAweDk3NkMsIDB4OTc2RCwgMHg5NzZFLCAweDk3NkYsIDB4OTc3MCwgMHg5NzcxLCAweDk3NzIsIDB4OTc3NSwKKyAgICAweDk3NzcsIDB4OTc3OCwgMHg5Nzc5LCAweDk3N0EsIDB4OTc3QiwgMHg5NzdELCAweDk3N0UsIDB4OTc3RiwKKyAgICAweDk3ODAsIDB4OTc4MSwgMHg5NzgyLCAweDk3ODMsIDB4OTc4NCwgMHg5Nzg2LCAweDk3ODcsIDB4OTc4OCwKKyAgICAweDk3ODksIDB4OTc4QSwgMHg5NzhDLCAweDk3OEUsIDB4OTc5MCwgMHg5NzkzLCAweDk3OTUsIDB4OTc5NiwKKyAgICAweDk3OTcsIDB4OTc5OSwgMHg5NzlBLCAweDk3OUIsIDB4OTc5QywgMHg5NzlELCAweDk3OUUsIDB4OTc5RiwKKyAgICAweDk3QTEsIDB4OTdBMiwgMHg5N0E0LCAweDk3QTUsIDB4OTdBNywgMHg5N0E4LCAweDk3QTksIDB4OTdBQSwKKyAgICAweDk3QUMsIDB4OTdBRSwgMHg5N0IwLCAweDk3QjEsIDB4OTdCMywgMHg5N0I1LCAweDk3QjYsIDB4OTdCNywKKyAgICAweDk3QjgsIDB4OTdCOSwgMHg5N0JBLCAweDk3QkIsIDB4OTdCQywgMHg5N0JFLCAweDk3QkYsIDB4OTdDMCwKKyAgICAweDk3QzEsIDB4OTdDMiwgMHg5N0M0LCAweDk3QzUsIDB4OTdDNywgMHg5N0M4LCAweDk3Q0EsIDB4OTdDRCwKKyAgICAweDk3Q0UsIDB4OTdDRiwgMHg5N0QwLCAweDk3RDEsIDB4OTdEMiwgMHg5N0Q0LCAweDk3RDUsIDB4OTdENiwKKyAgICAweDk3RDcsIDB4OTdEOCwgMHg5N0RBLCAweDk3REIsIDB4OTdERCwgMHg5N0RGLCAweDk3RTAsIDB4OTdFMSwKKyAgICAweDk3RTIsIDB4OTdFMywgMHg5N0U0LCAweDk3RTUsIDB4OTdFOCwgMHg5N0VFLCAweDk3RUYsIDB4OTdGMCwKKyAgICAweDk3RjEsIDB4OTdGMiwgMHg5N0Y0LCAweDk3RjcsIDB4OTdGOCwgMHg5N0Y5LCAweDk3RkEsIDB4OTdGQiwKKyAgICAweDk3RkMsIDB4OTdGRCwgMHg5N0ZFLCAweDk4MDAsIDB4OTgwNCwgMHg5ODA5LCAweDk4MEIsIDB4OTgwRCwKKyAgICAweDk4MTQsIDB4OTgxNSwgMHg5ODE2LCAweDk4MTksIDB4OTgxQSwgMHg5ODFCLCAweDk4MUQsIDB4OTgxRSwKKyAgICAweDk4MUYsIDB4OTgyMCwgMHg5ODIyLCAweDk4MjMsIDB4OTgyNSwgMHg5ODI3LCAweDk4MjgsIDB4OTgyOSwKKyAgICAweDk4MkEsIDB4OTgyQiwgMHg5ODJDLCAweDk4MkUsIDB4OTgyRiwgMHg5ODMxLCAweDk4MzIsIDB4OTgzMywKKyAgICAweDk4MzQsIDB4OTgzNSwgMHg5ODM2LCAweDk4MzksIDB4OTgzQSwgMHg5ODNDLCAweDk4M0UsIDB4OTgzRiwKKyAgICAweDk4NDAsIDB4OTg0MSwgMHg5ODQyLCAweDk4NDMsIDB4OTg0NCwgMHg5ODQ1LCAweDk4NDcsIDB4OTg0OCwKKyAgICAweDk4NDksIDB4OTg0QSwgMHg5ODRCLCAweDk4NEYsIDB4OTg1MCwgMHg5ODUxLCAweDk4NTIsIDB4OTg1NSwKKyAgICAweDk4NTYsIDB4OTg1NywgMHg5ODVBLCAweDk4NUMsIDB4OTg1RCwgMHg5ODVGLCAweDk4NjAsIDB4OTg2MSwKKyAgICAweDk4NjMsIDB4OTg2NCwgMHg5ODY2LCAweDk4NjgsIDB4OTg2OSwgMHg5ODZBLCAweDk4NkQsIDB4OTg2RSwKKyAgICAweDk4NzIsIDB4OTg4QiwgMHg5ODhFLCAweDk4OTIsIDB4OTg5NSwgMHg5ODk5LCAweDk4QTMsIDB4OThBOSwKKyAgICAweDk4QUEsIDB4OThBQiwgMHg5OEFDLCAweDk4QUQsIDB4OThCMCwgMHg5OEIyLCAweDk4QjQsIDB4OThCNSwKKyAgICAweDk4QjcsIDB4OThCOCwgMHg5OEI5LCAweDk4QkEsIDB4OThCQiwgMHg5OEJELCAweDk4QkUsIDB4OThCRiwKKyAgICAweDk4QzAsIDB4OThDMSwgMHg5OEMyLCAweDk4QzMsIDB4OThDNSwgMHg5OEM3LCAweDk4QzksIDB4OThDQSwKKyAgICAweDk4Q0IsIDB4OThDQywgMHg5OENELCAweDk4Q0YsIDB4OThEMCwgMHg5OEQ0LCAweDk4RDYsIDB4OThENywKKyAgICAweDk4REMsIDB4OThERCwgMHg5OEUxLCAweDk4RTMsIDB4OThFNCwgMHg5OEU1LCAweDk4RTYsIDB4OThFQywKKyAgICAweDk4RUUsIDB4OThGMCwgMHg5OEYxLCAweDk4RjMsIDB4OThGNSwgMHg5OEY2LCAweDk4RjcsIDB4OThGOCwKKyAgICAweDk4RjksIDB4OThGQSwgMHg5OEZCLCAweDk4RkYsIDB4OTkwMCwgMHg5OTAxLCAweDk5MDIsIDB4OTkwNCwKKyAgICAweDk5MDYsIDB4OTkwNywgMHg5OTA4LCAweDk5MEIsIDB4OTkwRSwgMHg5OTBGLCAweDk5MTQsIDB4OTkxNSwKKyAgICAweDk5MTYsIDB4OTkxNywgMHg5OTE5LCAweDk5MUEsIDB4OTkxQywgMHg5OTFELCAweDk5MUYsIDB4OTkyMCwKKyAgICAweDk5MjIsIDB4OTkyMywgMHg5OTI0LCAweDk5MjUsIDB4OTkyNiwgMHg5OTI3LCAweDk5MjksIDB4OTkyQSwKKyAgICAweDk5MkIsIDB4OTkyQywgMHg5OTJELCAweDk5MkYsIDB4OTkzMCwgMHg5OTMxLCAweDk5MzIsIDB4OTkzNCwKKyAgICAweDk5MzUsIDB4OTkzNiwgMHg5OTM4LCAweDk5MzksIDB4OTkzQSwgMHg5OTNCLCAweDk5M0QsIDB4OTk0MCwKKyAgICAweDk5NDEsIDB4OTk0MiwgMHg5OTQ0LCAweDk5NDYsIDB4OTk0NywgMHg5OTRELCAweDk5NEUsIDB4OTk0RiwKKyAgICAweDk5NTAsIDB4OTk1MywgMHg5OTU2LCAweDk5NTgsIDB4OTk1OSwgMHg5OTVBLCAweDk5NUIsIDB4OTk1RCwKKyAgICAweDk5NUYsIDB4OTk2MCwgMHg5OTYxLCAweDk5NjQsIDB4OTk2NiwgMHg5OTczLCAweDk5NzgsIDB4OTk3OSwKKyAgICAweDk5N0IsIDB4OTk3RSwgMHg5OTgyLCAweDk5ODMsIDB4OTk4OSwgMHg5OThDLCAweDk5OEUsIDB4OTk5QSwKKyAgICAweDk5OUIsIDB4OTk5QywgMHg5OTlELCAweDk5OUUsIDB4OTk5RiwgMHg5OUEwLCAweDk5QTEsIDB4OTlBMiwKKyAgICAweDk5QTMsIDB4OTlBNCwgMHg5OUE2LCAweDk5QTcsIDB4OTlBOSwgMHg5OUFBLCAweDk5QUIsIDB4OTlBRiwKKyAgICAweDk5QjAsIDB4OTlCMiwgMHg5OUI1LCAweDk5QjYsIDB4OTlCNywgMHg5OUI4LCAweDk5QjksIDB4OTlCQSwKKyAgICAweDk5QkIsIDB4OTlCQywgMHg5OUJELCAweDk5QkUsIDB4OTlCRiwgMHg5OUMwLCAweDk5QzIsIDB4OTlDMywKKyAgICAweDk5QzQsIDB4OTlDNSwgMHg5OUM2LCAweDk5QzcsIDB4OTlDOCwgMHg5OUM5LCAweDk5Q0EsIDB4OTlDQiwKKyAgICAweDk5Q0MsIDB4OTlDRCwgMHg5OUNFLCAweDk5Q0YsIDB4OTlEMywgMHg5OUQ2LCAweDk5RDcsIDB4OTlEQSwKKyAgICAweDk5REMsIDB4OTlERSwgMHg5OUUwLCAweDk5RTMsIDB4OTlFNCwgMHg5OUU1LCAweDk5RTYsIDB4OTlFNywKKyAgICAweDk5RTgsIDB4OTlFOSwgMHg5OUVBLCAweDk5RUIsIDB4OTlFQywgMHg5OUVFLCAweDk5RUYsIDB4OTlGMCwKKyAgICAweDk5RjIsIDB4OTlGMywgMHg5OUY0LCAweDk5RjUsIDB4OTlGNiwgMHg5OUY3LCAweDk5RjgsIDB4OTlGOSwKKyAgICAweDk5RkEsIDB4OTlGQiwgMHg5OUZDLCAweDk5RkQsIDB4OTlGRSwgMHg5QTAwLCAweDlBMDIsIDB4OUEwMywKKyAgICAweDlBMDQsIDB4OUEwNiwgMHg5QTA3LCAweDlBMDgsIDB4OUEwOSwgMHg5QTBBLCAweDlBMEIsIDB4OUEwQywKKyAgICAweDlBMTAsIDB4OUExMSwgMHg5QTEyLCAweDlBMTMsIDB4OUExNCwgMHg5QTE1LCAweDlBMTcsIDB4OUExOCwKKyAgICAweDlBMUEsIDB4OUExQiwgMHg5QTFDLCAweDlBMUQsIDB4OUExRSwgMHg5QTFGLCAweDlBMjAsIDB4OUEyMSwKKyAgICAweDlBMjIsIDB4OUEyMywgMHg5QTI0LCAweDlBMjUsIDB4OUEyNiwgMHg5QTI3LCAweDlBMjgsIDB4OUEyOSwKKyAgICAweDlBMkEsIDB4OUEyQywgMHg5QTJGLCAweDlBMzEsIDB4OUEzMiwgMHg5QTMzLCAweDlBMzQsIDB4OUEzNSwKKyAgICAweDlBMzksIDB4OUEzQSwgMHg5QTNCLCAweDlBM0MsIDB4OUEzRCwgMHg5QTNGLCAweDlBNDYsIDB4OUE0NywKKyAgICAweDlBNDgsIDB4OUE0OSwgMHg5QTRCLCAweDlBNEMsIDB4OUE0RSwgMHg5QTUwLCAweDlBNTEsIDB4OUE1MiwKKyAgICAweDlBNTMsIDB4OUE1NCwgMHg5QTU2LCAweDlBNTgsIDB4OUE1OSwgMHg5QTVDLCAweDlBNUQsIDB4OUE1RSwKKyAgICAweDlBNjAsIDB4OUE2MSwgMHg5QTYzLCAweDlBNjYsIDB4OUE2NywgMHg5QTY4LCAweDlBNjksIDB4OUE2QiwKKyAgICAweDlBNzIsIDB4OUE4MywgMHg5QTg5LCAweDlBOEQsIDB4OUE4RSwgMHg5QTk0LCAweDlBOTUsIDB4OUE5OSwKKyAgICAweDlBQTYsIDB4OUFBOSwgMHg5QUFBLCAweDlBQUIsIDB4OUFBQywgMHg5QUFELCAweDlBQUUsIDB4OUFCMiwKKyAgICAweDlBQjMsIDB4OUFCNCwgMHg5QUI1LCAweDlBQjksIDB4OUFCQiwgMHg5QUJELCAweDlBQkUsIDB4OUFCRiwKKyAgICAweDlBQzMsIDB4OUFDNCwgMHg5QUM2LCAweDlBQzcsIDB4OUFDOCwgMHg5QUM5LCAweDlBQ0EsIDB4OUFDRCwKKyAgICAweDlBQ0UsIDB4OUFEMCwgMHg5QUQ3LCAweDlBRDksIDB4OUFEQSwgMHg5QURCLCAweDlBREMsIDB4OUFERCwKKyAgICAweDlBREUsIDB4OUFFMCwgMHg5QUUyLCAweDlBRTMsIDB4OUFFNCwgMHg5QUU1LCAweDlBRTcsIDB4OUFFOCwKKyAgICAweDlBRTksIDB4OUFFQSwgMHg5QUVDLCAweDlBRjAsIDB4OUFGMSwgMHg5QUYyLCAweDlBRjMsIDB4OUFGNCwKKyAgICAweDlBRjUsIDB4OUFGNiwgMHg5QUY3LCAweDlBRjgsIDB4OUFGQSwgMHg5QUZDLCAweDlBRkQsIDB4OUFGRSwKKyAgICAweDlBRkYsIDB4OUIwMCwgMHg5QjAxLCAweDlCMDIsIDB4OUIwNCwgMHg5QjA1LCAweDlCMDcsIDB4OUIwOSwKKyAgICAweDlCMEEsIDB4OUIwQiwgMHg5QjBDLCAweDlCMEUsIDB4OUIxMCwgMHg5QjExLCAweDlCMTIsIDB4OUIxNCwKKyAgICAweDlCMTUsIDB4OUIxNiwgMHg5QjE3LCAweDlCMTgsIDB4OUIxOSwgMHg5QjFCLCAweDlCMUMsIDB4OUIxRCwKKyAgICAweDlCMUUsIDB4OUIyMCwgMHg5QjIxLCAweDlCMjQsIDB4OUIyNiwgMHg5QjI4LCAweDlCMkEsIDB4OUIyQiwKKyAgICAweDlCMkMsIDB4OUIyRCwgMHg5QjMwLCAweDlCMzMsIDB4OUIzNCwgMHg5QjM1LCAweDlCMzYsIDB4OUIzNywKKyAgICAweDlCMzgsIDB4OUIzOSwgMHg5QjNBLCAweDlCM0QsIDB4OUIzRSwgMHg5QjNGLCAweDlCNDAsIDB4OUI0NiwKKyAgICAweDlCNEEsIDB4OUI0QiwgMHg5QjRDLCAweDlCNTAsIDB4OUI1MiwgMHg5QjUzLCAweDlCNTUsIDB4OUI1NiwKKyAgICAweDlCNTcsIDB4OUI1OSwgMHg5QjVCLCAweDlCNUMsIDB4OUI1RCwgMHg5QjVFLCAweDlCNUYsIDB4OUI2MCwKKyAgICAweDlCNjEsIDB4OUI2MiwgMHg5QjYzLCAweDlCNjQsIDB4OUI2NSwgMHg5QjY2LCAweDlCNjcsIDB4OUI2OCwKKyAgICAweDlCNjksIDB4OUI2QSwgMHg5QjZCLCAweDlCNkMsIDB4OUI2RCwgMHg5QjZFLCAweDlCNzAsIDB4OUI3MSwKKyAgICAweDlCNzIsIDB4OUI3MywgMHg5Qjc1LCAweDlCNzYsIDB4OUI3OCwgMHg5Qjc5LCAweDlCN0EsIDB4OUI3QiwKKyAgICAweDlCN0MsIDB4OUI3RCwgMHg5QjdFLCAweDlCN0YsIDB4OUI4MCwgMHg5QjgyLCAweDlCODQsIDB4OUI4NSwKKyAgICAweDlCODYsIDB4OUI4NywgMHg5Qjg4LCAweDlCODksIDB4OUI4QSwgMHg5QjhCLCAweDlCOEMsIDB4OUI4RCwKKyAgICAweDlCOEYsIDB4OUI5MywgMHg5Qjk0LCAweDlCOTUsIDB4OUI5NiwgMHg5Qjk3LCAweDlCOTgsIDB4OUI5OSwKKyAgICAweDlCOUIsIDB4OUI5QywgMHg5QjlGLCAweDlCQTAsIDB4OUJBMSwgMHg5QkEyLCAweDlCQTMsIDB4OUJBNCwKKyAgICAweDlCQTUsIDB4OUJBNiwgMHg5QkE3LCAweDlCQTgsIDB4OUJBOSwgMHg5QkFDLCAweDlCQUYsIDB4OUJCMCwKKyAgICAweDlCQjEsIDB4OUJCMiwgMHg5QkIzLCAweDlCQjQsIDB4OUJCNSwgMHg5QkI2LCAweDlCQjcsIDB4OUJCOCwKKyAgICAweDlCQjksIDB4OUJCQSwgMHg5QkJCLCAweDlCQkMsIDB4OUJCRCwgMHg5QkJFLCAweDlCQkYsIDB4OUJDMiwKKyAgICAweDlCQzMsIDB4OUJDNCwgMHg5QkM1LCAweDlCQzYsIDB4OUJDOCwgMHg5QkNCLCAweDlCQ0MsIDB4OUJDRCwKKyAgICAweDlCQ0UsIDB4OUJDRiwgMHg5QkQwLCAweDlCRDEsIDB4OUJEMiwgMHg5QkQzLCAweDlCRDUsIDB4OUJENywKKyAgICAweDlCRDgsIDB4OUJEOSwgMHg5QkRBLCAweDlCREMsIDB4OUJERSwgMHg5QkRGLCAweDlCRTAsIDB4OUJFMywKKyAgICAweDlCRTUsIDB4OUJFNiwgMHg5QkU5LCAweDlCRUMsIDB4OUJFRCwgMHg5QkVFLCAweDlCRUYsIDB4OUJGMSwKKyAgICAweDlCRjIsIDB4OUJGMywgMHg5QkY1LCAweDlCRjYsIDB4OUJGNywgMHg5QkY4LCAweDlCRjksIDB4OUJGQSwKKyAgICAweDlCRkIsIDB4OUJGQywgMHg5QkZFLCAweDlDMDAsIDB4OUMwMSwgMHg5QzAyLCAweDlDMDMsIDB4OUMwNCwKKyAgICAweDlDMDUsIDB4OUMwNiwgMHg5QzA3LCAweDlDMEEsIDB4OUMwQiwgMHg5QzBDLCAweDlDMEUsIDB4OUMwRiwKKyAgICAweDlDMTEsIDB4OUMxNCwgMHg5QzE1LCAweDlDMTYsIDB4OUMxNywgMHg5QzE4LCAweDlDMTksIDB4OUMxQSwKKyAgICAweDlDMUIsIDB4OUMxQywgMHg5QzFELCAweDlDMUUsIDB4OUMxRiwgMHg5QzIxLCAweDlDMjIsIDB4OUMyNCwKKyAgICAweDlDMjYsIDB4OUMyNywgMHg5QzJBLCAweDlDMkIsIDB4OUMyQywgMHg5QzJFLCAweDlDMkYsIDB4OUMzMCwKKyAgICAweDlDMzQsIDB4OUMzNiwgMHg5QzM4LCAweDlDM0EsIDB4OUMzQywgMHg5QzNELCAweDlDM0YsIDB4OUM0MCwKKyAgICAweDlDNDEsIDB4OUM0MiwgMHg5QzQzLCAweDlDNDQsIDB4OUM0NiwgMHg5QzQ3LCAweDlDNEEsIDB4OUM0QiwKKyAgICAweDlDNEMsIDB4OUM0RCwgMHg5QzRFLCAweDlDNEYsIDB4OUM1MCwgMHg5QzUxLCAweDlDNTMsIDB4OUM1NSwKKyAgICAweDlDNTksIDB4OUM1QSwgMHg5QzVCLCAweDlDNUMsIDB4OUM1RSwgMHg5QzYwLCAweDlDNjEsIDB4OUM2MiwKKyAgICAweDlDNjMsIDB4OUM2NCwgMHg5QzY1LCAweDlDNjYsIDB4OUM2OCwgMHg5QzY5LCAweDlDNkEsIDB4OUM2QiwKKyAgICAweDlDNkMsIDB4OUM2RSwgMHg5QzZGLCAweDlDNzAsIDB4OUM3MSwgMHg5QzcyLCAweDlDNzMsIDB4OUM3NCwKKyAgICAweDlDNzUsIDB4OUM3NiwgMHg5Qzc3LCAweDlDNzksIDB4OUM3QiwgMHg5QzdELCAweDlDN0UsIDB4OUM4MCwKKyAgICAweDlDODMsIDB4OUM4NCwgMHg5Qzg5LCAweDlDOEEsIDB4OUM4QywgMHg5QzhGLCAweDlDOTMsIDB4OUM5NiwKKyAgICAweDlDOTcsIDB4OUM5OCwgMHg5Qzk5LCAweDlDOUQsIDB4OUNBQSwgMHg5Q0FDLCAweDlDQUYsIDB4OUNCOSwKKyAgICAweDlDQkUsIDB4OUNCRiwgMHg5Q0MwLCAweDlDQzEsIDB4OUNDMiwgMHg5Q0M4LCAweDlDQzksIDB4OUNEMSwKKyAgICAweDlDRDIsIDB4OUNEQSwgMHg5Q0RCLCAweDlDRTAsIDB4OUNFMSwgMHg5Q0UzLCAweDlDRTQsIDB4OUNFNiwKKyAgICAweDlDRTcsIDB4OUNFOCwgMHg5Q0VBLCAweDlDRUIsIDB4OUNFRCwgMHg5Q0VFLCAweDlDRUYsIDB4OUNGMCwKKyAgICAweDlDRjEsIDB4OUNGMiwgMHg5Q0Y1LCAweDlDRjcsIDB4OUNGOCwgMHg5Q0Y5LCAweDlDRkEsIDB4OUNGQiwKKyAgICAweDlDRkMsIDB4OUNGRCwgMHg5Q0ZFLCAweDlDRkYsIDB4OUQwMCwgMHg5RDAxLCAweDlEMDIsIDB4OUQwMywKKyAgICAweDlEMDQsIDB4OUQwNSwgMHg5RDA4LCAweDlEMEEsIDB4OUQwQiwgMHg5RDBDLCAweDlEMEQsIDB4OUQwRSwKKyAgICAweDlEMEYsIDB4OUQxMCwgMHg5RDExLCAweDlEMTIsIDB4OUQxMywgMHg5RDE0LCAweDlEMTYsIDB4OUQxNywKKyAgICAweDlEMTgsIDB4OUQxOSwgMHg5RDFBLCAweDlEMUMsIDB4OUQxRSwgMHg5RDIwLCAweDlEMjEsIDB4OUQyMiwKKyAgICAweDlEMjQsIDB4OUQyNSwgMHg5RDI3LCAweDlEMjksIDB4OUQyQSwgMHg5RDJCLCAweDlEMkMsIDB4OUQyRCwKKyAgICAweDlEMkUsIDB4OUQzMSwgMHg5RDMyLCAweDlEMzMsIDB4OUQzNCwgMHg5RDM1LCAweDlEMzYsIDB4OUQzNywKKyAgICAweDlEMzgsIDB4OUQzOSwgMHg5RDNBLCAweDlEM0MsIDB4OUQzRCwgMHg5RDNFLCAweDlENDAsIDB4OUQ0MSwKKyAgICAweDlENDMsIDB4OUQ0NCwgMHg5RDQ1LCAweDlENDYsIDB4OUQ0NywgMHg5RDQ4LCAweDlENDksIDB4OUQ0QSwKKyAgICAweDlENEIsIDB4OUQ0QywgMHg5RDRELCAweDlENEUsIDB4OUQ0RiwgMHg5RDUwLCAweDlENTQsIDB4OUQ1NSwKKyAgICAweDlENTYsIDB4OUQ1NywgMHg5RDU4LCAweDlENTksIDB4OUQ1QSwgMHg5RDVCLCAweDlENUUsIDB4OUQ1RiwKKyAgICAweDlENjIsIDB4OUQ2MywgMHg5RDY0LCAweDlENjUsIDB4OUQ2NiwgMHg5RDY3LCAweDlENjgsIDB4OUQ2OSwKKyAgICAweDlENkIsIDB4OUQ2RCwgMHg5RDZFLCAweDlENzAsIDB4OUQ3MSwgMHg5RDczLCAweDlENzQsIDB4OUQ3NSwKKyAgICAweDlENzYsIDB4OUQ3NywgMHg5RDc4LCAweDlENzksIDB4OUQ3QSwgMHg5RDdCLCAweDlEN0MsIDB4OUQ3RCwKKyAgICAweDlEN0UsIDB4OUQ3RiwgMHg5RDgwLCAweDlEODEsIDB4OUQ4MiwgMHg5RDgzLCAweDlEODQsIDB4OUQ4NSwKKyAgICAweDlEODYsIDB4OUQ4OCwgMHg5RDhBLCAweDlEOEIsIDB4OUQ4QywgMHg5RDhELCAweDlEOEUsIDB4OUQ4RiwKKyAgICAweDlEOTAsIDB4OUQ5MSwgMHg5RDkyLCAweDlEOTQsIDB4OUQ5NSwgMHg5RDk2LCAweDlEOTcsIDB4OUQ5OSwKKyAgICAweDlEOUIsIDB4OUQ5QywgMHg5RDlELCAweDlEOUUsIDB4OUQ5RiwgMHg5REEwLCAweDlEQTEsIDB4OURBMiwKKyAgICAweDlEQTMsIDB4OURBNCwgMHg5REE2LCAweDlEQTcsIDB4OURBOCwgMHg5REFBLCAweDlEQUIsIDB4OURBQywKKyAgICAweDlEQUQsIDB4OURBRSwgMHg5REIwLCAweDlEQjEsIDB4OURCMiwgMHg5REIzLCAweDlEQjUsIDB4OURCNiwKKyAgICAweDlEQjcsIDB4OURCOCwgMHg5REI5LCAweDlEQkEsIDB4OURCRCwgMHg5REJFLCAweDlEQkYsIDB4OURDMSwKKyAgICAweDlEQzMsIDB4OURDNSwgMHg5REM2LCAweDlEQzcsIDB4OURDOCwgMHg5REM5LCAweDlEQ0EsIDB4OURDQiwKKyAgICAweDlEQ0MsIDB4OURDRCwgMHg5RENFLCAweDlEQ0YsIDB4OUREMCwgMHg5REQxLCAweDlERDIsIDB4OURENCwKKyAgICAweDlERDUsIDB4OURENiwgMHg5REQ4LCAweDlEREIsIDB4OUREQywgMHg5RERELCAweDlEREUsIDB4OURERiwKKyAgICAweDlERTAsIDB4OURFMSwgMHg5REUyLCAweDlERTMsIDB4OURFNCwgMHg5REU3LCAweDlERTgsIDB4OURFOSwKKyAgICAweDlERUEsIDB4OURFQiwgMHg5REVDLCAweDlERUQsIDB4OURFRSwgMHg5REYwLCAweDlERjEsIDB4OURGNCwKKyAgICAweDlERjUsIDB4OURGNiwgMHg5REY3LCAweDlERkIsIDB4OURGQywgMHg5REZELCAweDlERkUsIDB4OURGRiwKKyAgICAweDlFMDAsIDB4OUUwMSwgMHg5RTAyLCAweDlFMDMsIDB4OUUwNCwgMHg5RTA1LCAweDlFMDYsIDB4OUUwNywKKyAgICAweDlFMDgsIDB4OUUwOSwgMHg5RTBBLCAweDlFMEIsIDB4OUUwRCwgMHg5RTBFLCAweDlFMEYsIDB4OUUxMCwKKyAgICAweDlFMTEsIDB4OUUxMiwgMHg5RTEzLCAweDlFMTQsIDB4OUUxNiwgMHg5RTE3LCAweDlFMTgsIDB4OUUxOSwKKyAgICAweDlFMUMsIDB4OUUyNCwgMHg5RTI3LCAweDlFMkUsIDB4OUUzMCwgMHg5RTM0LCAweDlFM0IsIDB4OUUzQywKKyAgICAweDlFNDAsIDB4OUU0RCwgMHg5RTUwLCAweDlFNTIsIDB4OUU1MywgMHg5RTU0LCAweDlFNTYsIDB4OUU1OSwKKyAgICAweDlFNUQsIDB4OUU1RiwgMHg5RTYwLCAweDlFNjEsIDB4OUU2MiwgMHg5RTY1LCAweDlFNkUsIDB4OUU2RiwKKyAgICAweDlFNzIsIDB4OUU3NCwgMHg5RTc2LCAweDlFNzcsIDB4OUU3OCwgMHg5RTdCLCAweDlFODAsIDB4OUU4MSwKKyAgICAweDlFODMsIDB4OUU4NCwgMHg5RTg1LCAweDlFODYsIDB4OUU4OSwgMHg5RThBLCAweDlFOEMsIDB4OUU4RCwKKyAgICAweDlFOEUsIDB4OUU4RiwgMHg5RTkwLCAweDlFOTEsIDB4OUU5NCwgMHg5RTk1LCAweDlFOTYsIDB4OUU5OCwKKyAgICAweDlFOTksIDB4OUU5QSwgMHg5RTlCLCAweDlFOUMsIDB4OUU5RSwgMHg5RUEwLCAweDlFQTEsIDB4OUVBMiwKKyAgICAweDlFQTMsIDB4OUVBNCwgMHg5RUE3LCAweDlFQTgsIDB4OUVBQSwgMHg5RUFCLCAweDlFQUMsIDB4OUVBRCwKKyAgICAweDlFQUUsIDB4OUVCMCwgMHg5RUIxLCAweDlFQjIsIDB4OUVCMywgMHg5RUI2LCAweDlFQjcsIDB4OUVCOSwKKyAgICAweDlFQkEsIDB4OUVCQywgMHg5RUJGLCAweDlFQzAsIDB4OUVDMSwgMHg5RUMyLCAweDlFQzMsIDB4OUVDNSwKKyAgICAweDlFQzYsIDB4OUVDNywgMHg5RUM4LCAweDlFQ0EsIDB4OUVDQiwgMHg5RUQwLCAweDlFRDIsIDB4OUVEMywKKyAgICAweDlFRDUsIDB4OUVENiwgMHg5RUQ3LCAweDlFRDksIDB4OUVEQSwgMHg5RUUxLCAweDlFRTMsIDB4OUVFNCwKKyAgICAweDlFRTYsIDB4OUVFQiwgMHg5RUVDLCAweDlFRUQsIDB4OUVFRSwgMHg5RUYwLCAweDlFRjEsIDB4OUVGMywKKyAgICAweDlFRjUsIDB4OUVGNiwgMHg5RUY4LCAweDlFRkEsIDB4OUYwMCwgMHg5RjAxLCAweDlGMDIsIDB4OUYwMywKKyAgICAweDlGMDQsIDB4OUYwNSwgMHg5RjA2LCAweDlGMDcsIDB4OUYwOCwgMHg5RjBBLCAweDlGMEMsIDB4OUYwRiwKKyAgICAweDlGMTEsIDB4OUYxMiwgMHg5RjE0LCAweDlGMTYsIDB4OUYxOCwgMHg5RjFBLCAweDlGMUIsIDB4OUYxQywKKyAgICAweDlGMUQsIDB4OUYxRSwgMHg5RjFGLCAweDlGMjEsIDB4OUYyMywgMHg5RjI0LCAweDlGMjUsIDB4OUYyNiwKKyAgICAweDlGMjcsIDB4OUYyOCwgMHg5RjI5LCAweDlGMkEsIDB4OUYyQiwgMHg5RjJELCAweDlGMkUsIDB4OUYzMCwKKyAgICAweDlGMzEsIDB4OUYzMiwgMHg5RjMzLCAweDlGMzQsIDB4OUYzNSwgMHg5RjM2LCAweDlGMzgsIDB4OUYzQSwKKyAgICAweDlGM0MsIDB4OUYzRiwgMHg5RjQwLCAweDlGNDEsIDB4OUY0MiwgMHg5RjQzLCAweDlGNDUsIDB4OUY0NiwKKyAgICAweDlGNDcsIDB4OUY0OCwgMHg5RjQ5LCAweDlGNEMsIDB4OUY0RCwgMHg5RjRFLCAweDlGNTMsIDB4OUY1NSwKKyAgICAweDlGNTYsIDB4OUY1NywgMHg5RjU4LCAweDlGNUEsIDB4OUY1QiwgMHg5RjVELCAweDlGNUUsIDB4OUY2MiwKKyAgICAweDlGNjQsIDB4OUY2NSwgMHg5RjY3LCAweDlGNjgsIDB4OUY2OSwgMHg5RjZCLCAweDlGNkQsIDB4OUY2RSwKKyAgICAweDlGNkYsIDB4OUY3MCwgMHg5RjcxLCAweDlGNzMsIDB4OUY3NCwgMHg5Rjc1LCAweDlGNzYsIDB4OUY3OCwKKyAgICAweDlGNzksIDB4OUY3QSwgMHg5RjdCLCAweDlGN0MsIDB4OUY3RCwgMHg5RjdFLCAweDlGODEsIDB4OUY4MiwKKyAgICAweDlGOEUsIDB4OUY4RiwgMHg5RjkxLCAweDlGOTIsIDB4OUY5MywgMHg5Rjk2LCAweDlGOTcsIDB4OUY5OCwKKyAgICAweDlGOUQsIDB4OUY5RSwgMHg5RkExLCAweDlGQTIsIDB4OUZBMywgMHg5RkE0LCAweDlGQTUsIDB4RjkyQywKKyAgICAweEZBMEQsIDB4RkEwRSwgMHhGQTBGLCAweEZBMTEsIDB4RkExMywgMHhGQTE0LCAweEZBMTgsIDB4RkExRiwKKyAgICAweEZBMjAsIDB4RkEyMSwgMHhGQTIzLCAweEZBMjQsIDB4RkEyNywgMHhGQTI4LCAweEZBMjksIDB4MkU4MSwKKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDJFODQsIDB4MzQ3MywgMHgzNDQ3LCAweDJFODgsIDB4MkU4QiwKKyAgICAweDlGQjQsIDB4MzU5RSwgMHgzNjFBLCAweDM2MEUsIDB4MkU4QywgMHgyRTk3LCAweDM5NkUsIDB4MzkxOCwKKyAgICAweDlGQjUsIDB4MzlDRiwgMHgzOURGLCAweDNBNzMsIDB4MzlEMCwgMHg5RkI2LCAweDlGQjcsIDB4M0I0RSwKKyAgICAweDNDNkUsIDB4M0NFMCwgMHgyRUE3LCAweDAwMDAsIDB4OUZCOCwgMHgyRUFBLCAweDQwNTYsIDB4NDE1RiwKKyAgICAweDJFQUUsIDB4NDMzNywgMHgyRUIzLCAweDJFQjYsIDB4MkVCNywgMHgwMDAwLCAweDQzQjEsIDB4NDNBQywKKyAgICAweDJFQkIsIDB4NDNERCwgMHg0NEQ2LCAweDQ2NjEsIDB4NDY0QywgMHg5RkI5LCAweDQ3MjMsIDB4NDcyOSwKKyAgICAweDQ3N0MsIDB4NDc4RCwgMHgyRUNBLCAweDQ5NDcsIDB4NDk3QSwgMHg0OTdELCAweDQ5ODIsIDB4NDk4MywKKyAgICAweDQ5ODUsIDB4NDk4NiwgMHg0OTlGLCAweDQ5OUIsIDB4NDlCNywgMHg0OUI2LCAweDlGQkEsIDB4MDAwMCwKKyAgICAweDRDQTMsIDB4NEM5RiwgMHg0Q0EwLCAweDRDQTEsIDB4NEM3NywgMHg0Q0EyLCAweDREMTMsIDB4NEQxNCwKKyAgICAweDREMTUsIDB4NEQxNiwgMHg0RDE3LCAweDREMTgsIDB4NEQxOSwgMHg0REFFLCAweDlGQkIsIDB4MDAyMCwKKyAgICAweDAwMjEsIDB4MDAyMiwgMHgwMDIzLCAweDAwMjQsIDB4MDAyNSwgMHgwMDI2LCAweDAwMjcsIDB4MDAyOCwKKyAgICAweDAwMjksIDB4MDAyQSwgMHgwMDJCLCAweDAwMkMsIDB4MDAyRCwgMHgwMDJFLCAweDAwMkYsIDB4MDAzMCwKKyAgICAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwKKyAgICAweDAwMzksIDB4MDAzQSwgMHgwMDNCLCAweDAwM0MsIDB4MDAzRCwgMHgwMDNFLCAweDAwM0YsIDB4MDA0MCwKKyAgICAweDAwNDEsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDQsIDB4MDA0NSwgMHgwMDQ2LCAweDAwNDcsIDB4MDA0OCwKKyAgICAweDAwNDksIDB4MDA0QSwgMHgwMDRCLCAweDAwNEMsIDB4MDA0RCwgMHgwMDRFLCAweDAwNEYsIDB4MDA1MCwKKyAgICAweDAwNTEsIDB4MDA1MiwgMHgwMDUzLCAweDAwNTQsIDB4MDA1NSwgMHgwMDU2LCAweDAwNTcsIDB4MDA1OCwKKyAgICAweDAwNTksIDB4MDA1QSwgMHgwMDVCLCAweDAwNUMsIDB4MDA1RCwgMHgwMDVFLCAweDAwNUYsIDB4MDA2MCwKKyAgICAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwKKyAgICAweDAwNjksIDB4MDA2QSwgMHgwMDZCLCAweDAwNkMsIDB4MDA2RCwgMHgwMDZFLCAweDAwNkYsIDB4MDA3MCwKKyAgICAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwKKyAgICAweDAwNzksIDB4MDA3QSwgMHgwMDdCLCAweDAwN0MsIDB4MDA3RCwgMHgwMDdFLCAweDAwRkMsIDB4MDBBOSwKKyAgICAweDIxMjIsIDB4MjAyNiwgMHgwMDIxLCAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwKKyAgICAweDAwMjcsIDB4MDAyOCwgMHgwMDI5LCAweDAwMkEsIDB4MDAyQiwgMHgwMDJDLCAweDAwMkQsIDB4MDAyRSwKKyAgICAweDAwMkYsIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwKKyAgICAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwM0EsIDB4MDAzQiwgMHgwMDNDLCAweDAwM0QsIDB4MDAzRSwKKyAgICAweDAwM0YsIDB4MDA0MCwgMHgwMDQxLCAweDAwNDIsIDB4MDA0MywgMHgwMDQ0LCAweDAwNDUsIDB4MDA0NiwKKyAgICAweDAwNDcsIDB4MDA0OCwgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwgMHgwMDRDLCAweDAwNEQsIDB4MDA0RSwKKyAgICAweDAwNEYsIDB4MDA1MCwgMHgwMDUxLCAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwKKyAgICAweDAwNTcsIDB4MDA1OCwgMHgwMDU5LCAweDAwNUEsIDB4MDA1QiwgMHgwMDVDLCAweDAwNUQsIDB4MDA1RSwKKyAgICAweDAwNUYsIDB4MDA2MCwgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwKKyAgICAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLCAweDAwNkQsIDB4MDA2RSwKKyAgICAweDAwNkYsIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4MDA3MywgMHgwMDc0LCAweDAwNzUsIDB4MDA3NiwKKyAgICAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LCAweDAwN0EsIDB4MDA3QiwgMHgwMDdDLCAweDAwN0QsIDB4MDA3RSwKKyAgICAweDAxMDEsIDB4MDBFMSwgMHgwMUNFLCAweDAwRTAsIDB4MDExMywgMHgwMEU5LCAweDAxMUIsIDB4MDBFOCwKKyAgICAweDAxMkIsIDB4MDBFRCwgMHgwMUQwLCAweDAwRUMsIDB4MDE0RCwgMHgwMEYzLCAweDAxRDIsIDB4MDBGMiwKKyAgICAweDAxNkIsIDB4MDBGQSwgMHgwMUQ0LCAweDAwRjksIDB4MDFENiwgMHgwMUQ4LCAweDAxREEsIDB4MDFEQywKKyAgICAweDAwRkMsIDB4MDBFQSwgMHgwMjUxLCAweDFFM0YsIDB4MDE0NCwgMHgwMTQ4LCAweDAxRjksIDB4MDI2MSwKKyAgICAweDAwMjAsIDB4MjBBQywgMHgwMEE1LCAweDIwQUMsIDB4MDAyNCwgMHgzMDNGLCAweDIwQUMsIDB4MzA0MSwKKyAgICAweDMwNDcsIDB4MzA0MywgMHgzMDRCLCAweDMwNEIsIDB4MzA1MSwgMHgzMDUxLCAweDMwNTMsIDB4MzA1MywKKyAgICAweDMwNDksIDB4MzA2NCwgMHgzMDQ1LCAweDMwOEUsIDB4MzA4MywgMHgzMDg3LCAweDMwODUsIDB4MzA5NCwKKyAgICAweDMwQTEsIDB4MzBBNywgMHgzMEEzLCAweDMwRjUsIDB4MzBGNiwgMHgzMEIzLCAweDMwQjMsIDB4MzBBOSwKKyAgICAweDMwQzMsIDB4MzBBNSwgMHgzMEVFLCAweDMwRTMsIDB4MzBFNywgMHgzMEU1LCAweDMwRjcsIDB4MzBGOSwKKyAgICAweDMwRjgsIDB4MzBGQSwgMHgzMEZDLCAweDMwMzMsIDB4MzAzNCwgMHgzMDM1LCAweDMwMzgsIDB4MzAzOSwKKyAgICAweDMwM0EsIDB4MzEyQSwgMHgzMTJCLCAweDMxMkMsIDB4MzFBMCwgMHgzMUExLCAweDMxQTIsIDB4MzFBMywKKyAgICAweDMxQTQsIDB4MzFBNSwgMHgzMUE2LCAweDMxQTcsIDB4MzFBOCwgMHgzMUE5LCAweDMxQUEsIDB4MzFBQiwKKyAgICAweDMxQUMsIDB4MzFBRCwgMHgzMUFFLCAweDMxQUYsIDB4MzFCMCwgMHgzMUIxLCAweDMxQjIsIDB4MzFCMywKKyAgICAweDMxQjQsIDB4MzFCNSwgMHgzMUI2LCAweDMxQjcsIDB4MkU4MCwgMHgyRTgyLCAweDJFODMsIDB4MkU4NSwKKyAgICAweDJFODYsIDB4MkU4NywgMHgyRTg5LCAweDJFOEEsIDB4MkU4RCwgMHgyRThFLCAweDJFOEYsIDB4MkU5MCwKKyAgICAweDJFOTEsIDB4MkU5MiwgMHgyRTkzLCAweDJFOTQsIDB4MkU5NSwgMHgyRTk2LCAweDJFOTgsIDB4MkU5OSwKKyAgICAweDJFOUIsIDB4MkU5QywgMHgyRTlELCAweDJFOUUsIDB4MkU5RiwgMHgyRUEwLCAweDJFQTEsIDB4MkVBMiwKKyAgICAweDJFQTMsIDB4MkVBNCwgMHgyRUE1LCAweDJFQTYsIDB4MkVBOCwgMHgyRUE5LCAweDJFQUIsIDB4MkVBQywKKyAgICAweDJFQUQsIDB4MkVBRiwgMHgyRUIwLCAweDJFQjEsIDB4MkVCMiwgMHgyRUI0LCAweDJFQjUsIDB4MkVCOCwKKyAgICAweDJFQjksIDB4MkVCQSwgMHgyRUJDLCAweDJFQkQsIDB4MkVCRSwgMHgyRUJGLCAweDJFQzAsIDB4MkVDMSwKKyAgICAweDJFQzIsIDB4MkVDMywgMHgyRUM0LCAweDJFQzUsIDB4MkVDNiwgMHgyRUM3LCAweDJFQzgsIDB4MkVDOSwKKyAgICAweDJFQ0IsIDB4MkVDQywgMHgyRUNELCAweDJFQ0UsIDB4MkVDRiwgMHgyRUQwLCAweDJFRDEsIDB4MkVEMiwKKyAgICAweDJFRDMsIDB4MkVENCwgMHgyRUQ1LCAweDJFRDYsIDB4MkVENywgMHgyRUQ4LCAweDJFRDksIDB4MkVEQSwKKyAgICAweDJFREIsIDB4MkVEQywgMHgyRURELCAweDJFREUsIDB4MkVERiwgMHgyRUUwLCAweDJFRTEsIDB4MkVFMiwKKyAgICAweDJFRTMsIDB4MkVFNCwgMHgyRUU1LCAweDJFRTYsIDB4MkVFNywgMHgyRUU4LCAweDJFRTksIDB4MkVFQSwKKyAgICAweDJFRUIsIDB4MkVFQywgMHgyRUVELCAweDJFRUUsIDB4MkVFRiwgMHgyRUYwLCAweDJFRjEsIDB4MkVGMiwKKyAgICAweDJFRjMsIDB4MzQwMCwgMHgzNDAxLCAweDM0MDIsIDB4MzQwMywgMHgzNDA0LCAweDM0MDUsIDB4MzQwNiwKKyAgICAweDM0MDcsIDB4MzQwOCwgMHgzNDA5LCAweDM0MEEsIDB4MzQwQiwgMHgzNDBDLCAweDM0MEQsIDB4MzQwRSwKKyAgICAweDM0MEYsIDB4MzQxMCwgMHgzNDExLCAweDM0MTIsIDB4MzQxMywgMHgzNDE0LCAweDM0MTUsIDB4MzQxNiwKKyAgICAweDM0MTcsIDB4MzQxOCwgMHgzNDE5LCAweDM0MUEsIDB4MzQxQiwgMHgzNDFDLCAweDM0MUQsIDB4MzQxRSwKKyAgICAweDM0MUYsIDB4MzQyMCwgMHgzNDIxLCAweDM0MjIsIDB4MzQyMywgMHgzNDI0LCAweDM0MjUsIDB4MzQyNiwKKyAgICAweDM0MjcsIDB4MzQyOCwgMHgzNDI5LCAweDM0MkEsIDB4MzQyQiwgMHgzNDJDLCAweDM0MkQsIDB4MzQyRSwKKyAgICAweDM0MkYsIDB4MzQzMCwgMHgzNDMxLCAweDM0MzIsIDB4MzQzMywgMHgzNDM0LCAweDM0MzUsIDB4MzQzNiwKKyAgICAweDM0MzcsIDB4MzQzOCwgMHgzNDM5LCAweDM0M0EsIDB4MzQzQiwgMHgzNDNDLCAweDM0M0QsIDB4MzQzRSwKKyAgICAweDM0M0YsIDB4MzQ0MCwgMHgzNDQxLCAweDM0NDIsIDB4MzQ0MywgMHgzNDQ0LCAweDM0NDUsIDB4MzQ0NiwKKyAgICAweDM0NDgsIDB4MzQ0OSwgMHgzNDRBLCAweDM0NEIsIDB4MzQ0QywgMHgzNDRELCAweDM0NEUsIDB4MzQ0RiwKKyAgICAweDM0NTAsIDB4MzQ1MSwgMHgzNDUyLCAweDM0NTMsIDB4MzQ1NCwgMHgzNDU1LCAweDM0NTYsIDB4MzQ1NywKKyAgICAweDM0NTgsIDB4MzQ1OSwgMHgzNDVBLCAweDM0NUIsIDB4MzQ1QywgMHgzNDVELCAweDM0NUUsIDB4MzQ1RiwKKyAgICAweDM0NjAsIDB4MzQ2MSwgMHgzNDYyLCAweDM0NjMsIDB4MzQ2NCwgMHgzNDY1LCAweDM0NjYsIDB4MzQ2NywKKyAgICAweDM0NjgsIDB4MzQ2OSwgMHgzNDZBLCAweDM0NkIsIDB4MzQ2QywgMHgzNDZELCAweDM0NkUsIDB4MzQ2RiwKKyAgICAweDM0NzAsIDB4MzQ3MSwgMHgzNDcyLCAweDM0NzQsIDB4MzQ3NSwgMHgzNDc2LCAweDM0NzcsIDB4MzQ3OCwKKyAgICAweDM0NzksIDB4MzQ3QSwgMHgzNDdCLCAweDM0N0MsIDB4MzQ3RCwgMHgzNDdFLCAweDM0N0YsIDB4MzQ4MCwKKyAgICAweDM0ODEsIDB4MzQ4MiwgMHgzNDgzLCAweDM0ODQsIDB4MzQ4NSwgMHgzNDg2LCAweDM0ODcsIDB4MzQ4OCwKKyAgICAweDM0ODksIDB4MzQ4QSwgMHgzNDhCLCAweDM0OEMsIDB4MzQ4RCwgMHgzNDhFLCAweDM0OEYsIDB4MzQ5MCwKKyAgICAweDM0OTEsIDB4MzQ5MiwgMHgzNDkzLCAweDM0OTQsIDB4MzQ5NSwgMHgzNDk2LCAweDM0OTcsIDB4MzQ5OCwKKyAgICAweDM0OTksIDB4MzQ5QSwgMHgzNDlCLCAweDM0OUMsIDB4MzQ5RCwgMHgzNDlFLCAweDM0OUYsIDB4MzRBMCwKKyAgICAweDM0QTEsIDB4MzRBMiwgMHgzNEEzLCAweDM0QTQsIDB4MzRBNSwgMHgzNEE2LCAweDM0QTcsIDB4MzRBOCwKKyAgICAweDM0QTksIDB4MzRBQSwgMHgzNEFCLCAweDM0QUMsIDB4MzRBRCwgMHgzNEFFLCAweDM0QUYsIDB4MzRCMCwKKyAgICAweDM0QjEsIDB4MzRCMiwgMHgzNEIzLCAweDM0QjQsIDB4MzRCNSwgMHgzNEI2LCAweDM0QjcsIDB4MzRCOCwKKyAgICAweDM0QjksIDB4MzRCQSwgMHgzNEJCLCAweDM0QkMsIDB4MzRCRCwgMHgzNEJFLCAweDM0QkYsIDB4MzRDMCwKKyAgICAweDM0QzEsIDB4MzRDMiwgMHgzNEMzLCAweDM0QzQsIDB4MzRDNSwgMHgzNEM2LCAweDM0QzcsIDB4MzRDOCwKKyAgICAweDM0QzksIDB4MzRDQSwgMHgzNENCLCAweDM0Q0MsIDB4MzRDRCwgMHgzNENFLCAweDM0Q0YsIDB4MzREMCwKKyAgICAweDM0RDEsIDB4MzREMiwgMHgzNEQzLCAweDM0RDQsIDB4MzRENSwgMHgzNEQ2LCAweDM0RDcsIDB4MzREOCwKKyAgICAweDM0RDksIDB4MzREQSwgMHgzNERCLCAweDM0REMsIDB4MzRERCwgMHgzNERFLCAweDM0REYsIDB4MzRFMCwKKyAgICAweDM0RTEsIDB4MzRFMiwgMHgzNEUzLCAweDM0RTQsIDB4MzRFNSwgMHgzNEU2LCAweDM0RTcsIDB4MzRFOCwKKyAgICAweDM0RTksIDB4MzRFQSwgMHgzNEVCLCAweDM0RUMsIDB4MzRFRCwgMHgzNEVFLCAweDM0RUYsIDB4MzRGMCwKKyAgICAweDM0RjEsIDB4MzRGMiwgMHgzNEYzLCAweDM0RjQsIDB4MzRGNSwgMHgzNEY2LCAweDM0RjcsIDB4MzRGOCwKKyAgICAweDM0RjksIDB4MzRGQSwgMHgzNEZCLCAweDM0RkMsIDB4MzRGRCwgMHgzNEZFLCAweDM0RkYsIDB4MzUwMCwKKyAgICAweDM1MDEsIDB4MzUwMiwgMHgzNTAzLCAweDM1MDQsIDB4MzUwNSwgMHgzNTA2LCAweDM1MDcsIDB4MzUwOCwKKyAgICAweDM1MDksIDB4MzUwQSwgMHgzNTBCLCAweDM1MEMsIDB4MzUwRCwgMHgzNTBFLCAweDM1MEYsIDB4MzUxMCwKKyAgICAweDM1MTEsIDB4MzUxMiwgMHgzNTEzLCAweDM1MTQsIDB4MzUxNSwgMHgzNTE2LCAweDM1MTcsIDB4MzUxOCwKKyAgICAweDM1MTksIDB4MzUxQSwgMHgzNTFCLCAweDM1MUMsIDB4MzUxRCwgMHgzNTFFLCAweDM1MUYsIDB4MzUyMCwKKyAgICAweDM1MjEsIDB4MzUyMiwgMHgzNTIzLCAweDM1MjQsIDB4MzUyNSwgMHgzNTI2LCAweDM1MjcsIDB4MzUyOCwKKyAgICAweDM1MjksIDB4MzUyQSwgMHgzNTJCLCAweDM1MkMsIDB4MzUyRCwgMHgzNTJFLCAweDM1MkYsIDB4MzUzMCwKKyAgICAweDM1MzEsIDB4MzUzMiwgMHgzNTMzLCAweDM1MzQsIDB4MzUzNSwgMHgzNTM2LCAweDM1MzcsIDB4MzUzOCwKKyAgICAweDM1MzksIDB4MzUzQSwgMHgzNTNCLCAweDM1M0MsIDB4MzUzRCwgMHgzNTNFLCAweDM1M0YsIDB4MzU0MCwKKyAgICAweDM1NDEsIDB4MzU0MiwgMHgzNTQzLCAweDM1NDQsIDB4MzU0NSwgMHgzNTQ2LCAweDM1NDcsIDB4MzU0OCwKKyAgICAweDM1NDksIDB4MzU0QSwgMHgzNTRCLCAweDM1NEMsIDB4MzU0RCwgMHgzNTRFLCAweDM1NEYsIDB4MzU1MCwKKyAgICAweDM1NTEsIDB4MzU1MiwgMHgzNTUzLCAweDM1NTQsIDB4MzU1NSwgMHgzNTU2LCAweDM1NTcsIDB4MzU1OCwKKyAgICAweDM1NTksIDB4MzU1QSwgMHgzNTVCLCAweDM1NUMsIDB4MzU1RCwgMHgzNTVFLCAweDM1NUYsIDB4MzU2MCwKKyAgICAweDM1NjEsIDB4MzU2MiwgMHgzNTYzLCAweDM1NjQsIDB4MzU2NSwgMHgzNTY2LCAweDM1NjcsIDB4MzU2OCwKKyAgICAweDM1NjksIDB4MzU2QSwgMHgzNTZCLCAweDM1NkMsIDB4MzU2RCwgMHgzNTZFLCAweDM1NkYsIDB4MzU3MCwKKyAgICAweDM1NzEsIDB4MzU3MiwgMHgzNTczLCAweDM1NzQsIDB4MzU3NSwgMHgzNTc2LCAweDM1NzcsIDB4MzU3OCwKKyAgICAweDM1NzksIDB4MzU3QSwgMHgzNTdCLCAweDM1N0MsIDB4MzU3RCwgMHgzNTdFLCAweDM1N0YsIDB4MzU4MCwKKyAgICAweDM1ODEsIDB4MzU4MiwgMHgzNTgzLCAweDM1ODQsIDB4MzU4NSwgMHgzNTg2LCAweDM1ODcsIDB4MzU4OCwKKyAgICAweDM1ODksIDB4MzU4QSwgMHgzNThCLCAweDM1OEMsIDB4MzU4RCwgMHgzNThFLCAweDM1OEYsIDB4MzU5MCwKKyAgICAweDM1OTEsIDB4MzU5MiwgMHgzNTkzLCAweDM1OTQsIDB4MzU5NSwgMHgzNTk2LCAweDM1OTcsIDB4MzU5OCwKKyAgICAweDM1OTksIDB4MzU5QSwgMHgzNTlCLCAweDM1OUMsIDB4MzU5RCwgMHgzNTlGLCAweDM1QTAsIDB4MzVBMSwKKyAgICAweDM1QTIsIDB4MzVBMywgMHgzNUE0LCAweDM1QTUsIDB4MzVBNiwgMHgzNUE3LCAweDM1QTgsIDB4MzVBOSwKKyAgICAweDM1QUEsIDB4MzVBQiwgMHgzNUFDLCAweDM1QUQsIDB4MzVBRSwgMHgzNUFGLCAweDM1QjAsIDB4MzVCMSwKKyAgICAweDM1QjIsIDB4MzVCMywgMHgzNUI0LCAweDM1QjUsIDB4MzVCNiwgMHgzNUI3LCAweDM1QjgsIDB4MzVCOSwKKyAgICAweDM1QkEsIDB4MzVCQiwgMHgzNUJDLCAweDM1QkQsIDB4MzVCRSwgMHgzNUJGLCAweDM1QzAsIDB4MzVDMSwKKyAgICAweDM1QzIsIDB4MzVDMywgMHgzNUM0LCAweDM1QzUsIDB4MzVDNiwgMHgzNUM3LCAweDM1QzgsIDB4MzVDOSwKKyAgICAweDM1Q0EsIDB4MzVDQiwgMHgzNUNDLCAweDM1Q0QsIDB4MzVDRSwgMHgzNUNGLCAweDM1RDAsIDB4MzVEMSwKKyAgICAweDM1RDIsIDB4MzVEMywgMHgzNUQ0LCAweDM1RDUsIDB4MzVENiwgMHgzNUQ3LCAweDM1RDgsIDB4MzVEOSwKKyAgICAweDM1REEsIDB4MzVEQiwgMHgzNURDLCAweDM1REQsIDB4MzVERSwgMHgzNURGLCAweDM1RTAsIDB4MzVFMSwKKyAgICAweDM1RTIsIDB4MzVFMywgMHgzNUU0LCAweDM1RTUsIDB4MzVFNiwgMHgzNUU3LCAweDM1RTgsIDB4MzVFOSwKKyAgICAweDM1RUEsIDB4MzVFQiwgMHgzNUVDLCAweDM1RUQsIDB4MzVFRSwgMHgzNUVGLCAweDM1RjAsIDB4MzVGMSwKKyAgICAweDM1RjIsIDB4MzVGMywgMHgzNUY0LCAweDM1RjUsIDB4MzVGNiwgMHgzNUY3LCAweDM1RjgsIDB4MzVGOSwKKyAgICAweDM1RkEsIDB4MzVGQiwgMHgzNUZDLCAweDM1RkQsIDB4MzVGRSwgMHgzNUZGLCAweDM2MDAsIDB4MzYwMSwKKyAgICAweDM2MDIsIDB4MzYwMywgMHgzNjA0LCAweDM2MDUsIDB4MzYwNiwgMHgzNjA3LCAweDM2MDgsIDB4MzYwOSwKKyAgICAweDM2MEEsIDB4MzYwQiwgMHgzNjBDLCAweDM2MEQsIDB4MzYwRiwgMHgzNjEwLCAweDM2MTEsIDB4MzYxMiwKKyAgICAweDM2MTMsIDB4MzYxNCwgMHgzNjE1LCAweDM2MTYsIDB4MzYxNywgMHgzNjE4LCAweDM2MTksIDB4MzYxQiwKKyAgICAweDM2MUMsIDB4MzYxRCwgMHgzNjFFLCAweDM2MUYsIDB4MzYyMCwgMHgzNjIxLCAweDM2MjIsIDB4MzYyMywKKyAgICAweDM2MjQsIDB4MzYyNSwgMHgzNjI2LCAweDM2MjcsIDB4MzYyOCwgMHgzNjI5LCAweDM2MkEsIDB4MzYyQiwKKyAgICAweDM2MkMsIDB4MzYyRCwgMHgzNjJFLCAweDM2MkYsIDB4MzYzMCwgMHgzNjMxLCAweDM2MzIsIDB4MzYzMywKKyAgICAweDM2MzQsIDB4MzYzNSwgMHgzNjM2LCAweDM2MzcsIDB4MzYzOCwgMHgzNjM5LCAweDM2M0EsIDB4MzYzQiwKKyAgICAweDM2M0MsIDB4MzYzRCwgMHgzNjNFLCAweDM2M0YsIDB4MzY0MCwgMHgzNjQxLCAweDM2NDIsIDB4MzY0MywKKyAgICAweDM2NDQsIDB4MzY0NSwgMHgzNjQ2LCAweDM2NDcsIDB4MzY0OCwgMHgzNjQ5LCAweDM2NEEsIDB4MzY0QiwKKyAgICAweDM2NEMsIDB4MzY0RCwgMHgzNjRFLCAweDM2NEYsIDB4MzY1MCwgMHgzNjUxLCAweDM2NTIsIDB4MzY1MywKKyAgICAweDM2NTQsIDB4MzY1NSwgMHgzNjU2LCAweDM2NTcsIDB4MzY1OCwgMHgzNjU5LCAweDM2NUEsIDB4MzY1QiwKKyAgICAweDM2NUMsIDB4MzY1RCwgMHgzNjVFLCAweDM2NUYsIDB4MzY2MCwgMHgzNjYxLCAweDM2NjIsIDB4MzY2MywKKyAgICAweDM2NjQsIDB4MzY2NSwgMHgzNjY2LCAweDM2NjcsIDB4MzY2OCwgMHgzNjY5LCAweDM2NkEsIDB4MzY2QiwKKyAgICAweDM2NkMsIDB4MzY2RCwgMHgzNjZFLCAweDM2NkYsIDB4MzY3MCwgMHgzNjcxLCAweDM2NzIsIDB4MzY3MywKKyAgICAweDM2NzQsIDB4MzY3NSwgMHgzNjc2LCAweDM2NzcsIDB4MzY3OCwgMHgzNjc5LCAweDM2N0EsIDB4MzY3QiwKKyAgICAweDM2N0MsIDB4MzY3RCwgMHgzNjdFLCAweDM2N0YsIDB4MzY4MCwgMHgzNjgxLCAweDM2ODIsIDB4MzY4MywKKyAgICAweDM2ODQsIDB4MzY4NSwgMHgzNjg2LCAweDM2ODcsIDB4MzY4OCwgMHgzNjg5LCAweDM2OEEsIDB4MzY4QiwKKyAgICAweDM2OEMsIDB4MzY4RCwgMHgzNjhFLCAweDM2OEYsIDB4MzY5MCwgMHgzNjkxLCAweDM2OTIsIDB4MzY5MywKKyAgICAweDM2OTQsIDB4MzY5NSwgMHgzNjk2LCAweDM2OTcsIDB4MzY5OCwgMHgzNjk5LCAweDM2OUEsIDB4MzY5QiwKKyAgICAweDM2OUMsIDB4MzY5RCwgMHgzNjlFLCAweDM2OUYsIDB4MzZBMCwgMHgzNkExLCAweDM2QTIsIDB4MzZBMywKKyAgICAweDM2QTQsIDB4MzZBNSwgMHgzNkE2LCAweDM2QTcsIDB4MzZBOCwgMHgzNkE5LCAweDM2QUEsIDB4MzZBQiwKKyAgICAweDM2QUMsIDB4MzZBRCwgMHgzNkFFLCAweDM2QUYsIDB4MzZCMCwgMHgzNkIxLCAweDM2QjIsIDB4MzZCMywKKyAgICAweDM2QjQsIDB4MzZCNSwgMHgzNkI2LCAweDM2QjcsIDB4MzZCOCwgMHgzNkI5LCAweDM2QkEsIDB4MzZCQiwKKyAgICAweDM2QkMsIDB4MzZCRCwgMHgzNkJFLCAweDM2QkYsIDB4MzZDMCwgMHgzNkMxLCAweDM2QzIsIDB4MzZDMywKKyAgICAweDM2QzQsIDB4MzZDNSwgMHgzNkM2LCAweDM2QzcsIDB4MzZDOCwgMHgzNkM5LCAweDM2Q0EsIDB4MzZDQiwKKyAgICAweDM2Q0MsIDB4MzZDRCwgMHgzNkNFLCAweDM2Q0YsIDB4MzZEMCwgMHgzNkQxLCAweDM2RDIsIDB4MzZEMywKKyAgICAweDM2RDQsIDB4MzZENSwgMHgzNkQ2LCAweDM2RDcsIDB4MzZEOCwgMHgzNkQ5LCAweDM2REEsIDB4MzZEQiwKKyAgICAweDM2REMsIDB4MzZERCwgMHgzNkRFLCAweDM2REYsIDB4MzZFMCwgMHgzNkUxLCAweDM2RTIsIDB4MzZFMywKKyAgICAweDM2RTQsIDB4MzZFNSwgMHgzNkU2LCAweDM2RTcsIDB4MzZFOCwgMHgzNkU5LCAweDM2RUEsIDB4MzZFQiwKKyAgICAweDM2RUMsIDB4MzZFRCwgMHgzNkVFLCAweDM2RUYsIDB4MzZGMCwgMHgzNkYxLCAweDM2RjIsIDB4MzZGMywKKyAgICAweDM2RjQsIDB4MzZGNSwgMHgzNkY2LCAweDM2RjcsIDB4MzZGOCwgMHgzNkY5LCAweDM2RkEsIDB4MzZGQiwKKyAgICAweDM2RkMsIDB4MzZGRCwgMHgzNkZFLCAweDM2RkYsIDB4MzcwMCwgMHgzNzAxLCAweDM3MDIsIDB4MzcwMywKKyAgICAweDM3MDQsIDB4MzcwNSwgMHgzNzA2LCAweDM3MDcsIDB4MzcwOCwgMHgzNzA5LCAweDM3MEEsIDB4MzcwQiwKKyAgICAweDM3MEMsIDB4MzcwRCwgMHgzNzBFLCAweDM3MEYsIDB4MzcxMCwgMHgzNzExLCAweDM3MTIsIDB4MzcxMywKKyAgICAweDM3MTQsIDB4MzcxNSwgMHgzNzE2LCAweDM3MTcsIDB4MzcxOCwgMHgzNzE5LCAweDM3MUEsIDB4MzcxQiwKKyAgICAweDM3MUMsIDB4MzcxRCwgMHgzNzFFLCAweDM3MUYsIDB4MzcyMCwgMHgzNzIxLCAweDM3MjIsIDB4MzcyMywKKyAgICAweDM3MjQsIDB4MzcyNSwgMHgzNzI2LCAweDM3MjcsIDB4MzcyOCwgMHgzNzI5LCAweDM3MkEsIDB4MzcyQiwKKyAgICAweDM3MkMsIDB4MzcyRCwgMHgzNzJFLCAweDM3MkYsIDB4MzczMCwgMHgzNzMxLCAweDM3MzIsIDB4MzczMywKKyAgICAweDM3MzQsIDB4MzczNSwgMHgzNzM2LCAweDM3MzcsIDB4MzczOCwgMHgzNzM5LCAweDM3M0EsIDB4MzczQiwKKyAgICAweDM3M0MsIDB4MzczRCwgMHgzNzNFLCAweDM3M0YsIDB4Mzc0MCwgMHgzNzQxLCAweDM3NDIsIDB4Mzc0MywKKyAgICAweDM3NDQsIDB4Mzc0NSwgMHgzNzQ2LCAweDM3NDcsIDB4Mzc0OCwgMHgzNzQ5LCAweDM3NEEsIDB4Mzc0QiwKKyAgICAweDM3NEMsIDB4Mzc0RCwgMHgzNzRFLCAweDM3NEYsIDB4Mzc1MCwgMHgzNzUxLCAweDM3NTIsIDB4Mzc1MywKKyAgICAweDM3NTQsIDB4Mzc1NSwgMHgzNzU2LCAweDM3NTcsIDB4Mzc1OCwgMHgzNzU5LCAweDM3NUEsIDB4Mzc1QiwKKyAgICAweDM3NUMsIDB4Mzc1RCwgMHgzNzVFLCAweDM3NUYsIDB4Mzc2MCwgMHgzNzYxLCAweDM3NjIsIDB4Mzc2MywKKyAgICAweDM3NjQsIDB4Mzc2NSwgMHgzNzY2LCAweDM3NjcsIDB4Mzc2OCwgMHgzNzY5LCAweDM3NkEsIDB4Mzc2QiwKKyAgICAweDM3NkMsIDB4Mzc2RCwgMHgzNzZFLCAweDM3NkYsIDB4Mzc3MCwgMHgzNzcxLCAweDM3NzIsIDB4Mzc3MywKKyAgICAweDM3NzQsIDB4Mzc3NSwgMHgzNzc2LCAweDM3NzcsIDB4Mzc3OCwgMHgzNzc5LCAweDM3N0EsIDB4Mzc3QiwKKyAgICAweDM3N0MsIDB4Mzc3RCwgMHgzNzdFLCAweDM3N0YsIDB4Mzc4MCwgMHgzNzgxLCAweDM3ODIsIDB4Mzc4MywKKyAgICAweDM3ODQsIDB4Mzc4NSwgMHgzNzg2LCAweDM3ODcsIDB4Mzc4OCwgMHgzNzg5LCAweDM3OEEsIDB4Mzc4QiwKKyAgICAweDM3OEMsIDB4Mzc4RCwgMHgzNzhFLCAweDM3OEYsIDB4Mzc5MCwgMHgzNzkxLCAweDM3OTIsIDB4Mzc5MywKKyAgICAweDM3OTQsIDB4Mzc5NSwgMHgzNzk2LCAweDM3OTcsIDB4Mzc5OCwgMHgzNzk5LCAweDM3OUEsIDB4Mzc5QiwKKyAgICAweDM3OUMsIDB4Mzc5RCwgMHgzNzlFLCAweDM3OUYsIDB4MzdBMCwgMHgzN0ExLCAweDM3QTIsIDB4MzdBMywKKyAgICAweDM3QTQsIDB4MzdBNSwgMHgzN0E2LCAweDM3QTcsIDB4MzdBOCwgMHgzN0E5LCAweDM3QUEsIDB4MzdBQiwKKyAgICAweDM3QUMsIDB4MzdBRCwgMHgzN0FFLCAweDM3QUYsIDB4MzdCMCwgMHgzN0IxLCAweDM3QjIsIDB4MzdCMywKKyAgICAweDM3QjQsIDB4MzdCNSwgMHgzN0I2LCAweDM3QjcsIDB4MzdCOCwgMHgzN0I5LCAweDM3QkEsIDB4MzdCQiwKKyAgICAweDM3QkMsIDB4MzdCRCwgMHgzN0JFLCAweDM3QkYsIDB4MzdDMCwgMHgzN0MxLCAweDM3QzIsIDB4MzdDMywKKyAgICAweDM3QzQsIDB4MzdDNSwgMHgzN0M2LCAweDM3QzcsIDB4MzdDOCwgMHgzN0M5LCAweDM3Q0EsIDB4MzdDQiwKKyAgICAweDM3Q0MsIDB4MzdDRCwgMHgzN0NFLCAweDM3Q0YsIDB4MzdEMCwgMHgzN0QxLCAweDM3RDIsIDB4MzdEMywKKyAgICAweDM3RDQsIDB4MzdENSwgMHgzN0Q2LCAweDM3RDcsIDB4MzdEOCwgMHgzN0Q5LCAweDM3REEsIDB4MzdEQiwKKyAgICAweDM3REMsIDB4MzdERCwgMHgzN0RFLCAweDM3REYsIDB4MzdFMCwgMHgzN0UxLCAweDM3RTIsIDB4MzdFMywKKyAgICAweDM3RTQsIDB4MzdFNSwgMHgzN0U2LCAweDM3RTcsIDB4MzdFOCwgMHgzN0U5LCAweDM3RUEsIDB4MzdFQiwKKyAgICAweDM3RUMsIDB4MzdFRCwgMHgzN0VFLCAweDM3RUYsIDB4MzdGMCwgMHgzN0YxLCAweDM3RjIsIDB4MzdGMywKKyAgICAweDM3RjQsIDB4MzdGNSwgMHgzN0Y2LCAweDM3RjcsIDB4MzdGOCwgMHgzN0Y5LCAweDM3RkEsIDB4MzdGQiwKKyAgICAweDM3RkMsIDB4MzdGRCwgMHgzN0ZFLCAweDM3RkYsIDB4MzgwMCwgMHgzODAxLCAweDM4MDIsIDB4MzgwMywKKyAgICAweDM4MDQsIDB4MzgwNSwgMHgzODA2LCAweDM4MDcsIDB4MzgwOCwgMHgzODA5LCAweDM4MEEsIDB4MzgwQiwKKyAgICAweDM4MEMsIDB4MzgwRCwgMHgzODBFLCAweDM4MEYsIDB4MzgxMCwgMHgzODExLCAweDM4MTIsIDB4MzgxMywKKyAgICAweDM4MTQsIDB4MzgxNSwgMHgzODE2LCAweDM4MTcsIDB4MzgxOCwgMHgzODE5LCAweDM4MUEsIDB4MzgxQiwKKyAgICAweDM4MUMsIDB4MzgxRCwgMHgzODFFLCAweDM4MUYsIDB4MzgyMCwgMHgzODIxLCAweDM4MjIsIDB4MzgyMywKKyAgICAweDM4MjQsIDB4MzgyNSwgMHgzODI2LCAweDM4MjcsIDB4MzgyOCwgMHgzODI5LCAweDM4MkEsIDB4MzgyQiwKKyAgICAweDM4MkMsIDB4MzgyRCwgMHgzODJFLCAweDM4MkYsIDB4MzgzMCwgMHgzODMxLCAweDM4MzIsIDB4MzgzMywKKyAgICAweDM4MzQsIDB4MzgzNSwgMHgzODM2LCAweDM4MzcsIDB4MzgzOCwgMHgzODM5LCAweDM4M0EsIDB4MzgzQiwKKyAgICAweDM4M0MsIDB4MzgzRCwgMHgzODNFLCAweDM4M0YsIDB4Mzg0MCwgMHgzODQxLCAweDM4NDIsIDB4Mzg0MywKKyAgICAweDM4NDQsIDB4Mzg0NSwgMHgzODQ2LCAweDM4NDcsIDB4Mzg0OCwgMHgzODQ5LCAweDM4NEEsIDB4Mzg0QiwKKyAgICAweDM4NEMsIDB4Mzg0RCwgMHgzODRFLCAweDM4NEYsIDB4Mzg1MCwgMHgzODUxLCAweDM4NTIsIDB4Mzg1MywKKyAgICAweDM4NTQsIDB4Mzg1NSwgMHgzODU2LCAweDM4NTcsIDB4Mzg1OCwgMHgzODU5LCAweDM4NUEsIDB4Mzg1QiwKKyAgICAweDM4NUMsIDB4Mzg1RCwgMHgzODVFLCAweDM4NUYsIDB4Mzg2MCwgMHgzODYxLCAweDM4NjIsIDB4Mzg2MywKKyAgICAweDM4NjQsIDB4Mzg2NSwgMHgzODY2LCAweDM4NjcsIDB4Mzg2OCwgMHgzODY5LCAweDM4NkEsIDB4Mzg2QiwKKyAgICAweDM4NkMsIDB4Mzg2RCwgMHgzODZFLCAweDM4NkYsIDB4Mzg3MCwgMHgzODcxLCAweDM4NzIsIDB4Mzg3MywKKyAgICAweDM4NzQsIDB4Mzg3NSwgMHgzODc2LCAweDM4NzcsIDB4Mzg3OCwgMHgzODc5LCAweDM4N0EsIDB4Mzg3QiwKKyAgICAweDM4N0MsIDB4Mzg3RCwgMHgzODdFLCAweDM4N0YsIDB4Mzg4MCwgMHgzODgxLCAweDM4ODIsIDB4Mzg4MywKKyAgICAweDM4ODQsIDB4Mzg4NSwgMHgzODg2LCAweDM4ODcsIDB4Mzg4OCwgMHgzODg5LCAweDM4OEEsIDB4Mzg4QiwKKyAgICAweDM4OEMsIDB4Mzg4RCwgMHgzODhFLCAweDM4OEYsIDB4Mzg5MCwgMHgzODkxLCAweDM4OTIsIDB4Mzg5MywKKyAgICAweDM4OTQsIDB4Mzg5NSwgMHgzODk2LCAweDM4OTcsIDB4Mzg5OCwgMHgzODk5LCAweDM4OUEsIDB4Mzg5QiwKKyAgICAweDM4OUMsIDB4Mzg5RCwgMHgzODlFLCAweDM4OUYsIDB4MzhBMCwgMHgzOEExLCAweDM4QTIsIDB4MzhBMywKKyAgICAweDM4QTQsIDB4MzhBNSwgMHgzOEE2LCAweDM4QTcsIDB4MzhBOCwgMHgzOEE5LCAweDM4QUEsIDB4MzhBQiwKKyAgICAweDM4QUMsIDB4MzhBRCwgMHgzOEFFLCAweDM4QUYsIDB4MzhCMCwgMHgzOEIxLCAweDM4QjIsIDB4MzhCMywKKyAgICAweDM4QjQsIDB4MzhCNSwgMHgzOEI2LCAweDM4QjcsIDB4MzhCOCwgMHgzOEI5LCAweDM4QkEsIDB4MzhCQiwKKyAgICAweDM4QkMsIDB4MzhCRCwgMHgzOEJFLCAweDM4QkYsIDB4MzhDMCwgMHgzOEMxLCAweDM4QzIsIDB4MzhDMywKKyAgICAweDM4QzQsIDB4MzhDNSwgMHgzOEM2LCAweDM4QzcsIDB4MzhDOCwgMHgzOEM5LCAweDM4Q0EsIDB4MzhDQiwKKyAgICAweDM4Q0MsIDB4MzhDRCwgMHgzOENFLCAweDM4Q0YsIDB4MzhEMCwgMHgzOEQxLCAweDM4RDIsIDB4MzhEMywKKyAgICAweDM4RDQsIDB4MzhENSwgMHgzOEQ2LCAweDM4RDcsIDB4MzhEOCwgMHgzOEQ5LCAweDM4REEsIDB4MzhEQiwKKyAgICAweDM4REMsIDB4MzhERCwgMHgzOERFLCAweDM4REYsIDB4MzhFMCwgMHgzOEUxLCAweDM4RTIsIDB4MzhFMywKKyAgICAweDM4RTQsIDB4MzhFNSwgMHgzOEU2LCAweDM4RTcsIDB4MzhFOCwgMHgzOEU5LCAweDM4RUEsIDB4MzhFQiwKKyAgICAweDM4RUMsIDB4MzhFRCwgMHgzOEVFLCAweDM4RUYsIDB4MzhGMCwgMHgzOEYxLCAweDM4RjIsIDB4MzhGMywKKyAgICAweDM4RjQsIDB4MzhGNSwgMHgzOEY2LCAweDM4RjcsIDB4MzhGOCwgMHgzOEY5LCAweDM4RkEsIDB4MzhGQiwKKyAgICAweDM4RkMsIDB4MzhGRCwgMHgzOEZFLCAweDM4RkYsIDB4MzkwMCwgMHgzOTAxLCAweDM5MDIsIDB4MzkwMywKKyAgICAweDM5MDQsIDB4MzkwNSwgMHgzOTA2LCAweDM5MDcsIDB4MzkwOCwgMHgzOTA5LCAweDM5MEEsIDB4MzkwQiwKKyAgICAweDM5MEMsIDB4MzkwRCwgMHgzOTBFLCAweDM5MEYsIDB4MzkxMCwgMHgzOTExLCAweDM5MTIsIDB4MzkxMywKKyAgICAweDM5MTQsIDB4MzkxNSwgMHgzOTE2LCAweDM5MTcsIDB4MzkxOSwgMHgzOTFBLCAweDM5MUIsIDB4MzkxQywKKyAgICAweDM5MUQsIDB4MzkxRSwgMHgzOTFGLCAweDM5MjAsIDB4MzkyMSwgMHgzOTIyLCAweDM5MjMsIDB4MzkyNCwKKyAgICAweDM5MjUsIDB4MzkyNiwgMHgzOTI3LCAweDM5MjgsIDB4MzkyOSwgMHgzOTJBLCAweDM5MkIsIDB4MzkyQywKKyAgICAweDM5MkQsIDB4MzkyRSwgMHgzOTJGLCAweDM5MzAsIDB4MzkzMSwgMHgzOTMyLCAweDM5MzMsIDB4MzkzNCwKKyAgICAweDM5MzUsIDB4MzkzNiwgMHgzOTM3LCAweDM5MzgsIDB4MzkzOSwgMHgzOTNBLCAweDM5M0IsIDB4MzkzQywKKyAgICAweDM5M0QsIDB4MzkzRSwgMHgzOTNGLCAweDM5NDAsIDB4Mzk0MSwgMHgzOTQyLCAweDM5NDMsIDB4Mzk0NCwKKyAgICAweDM5NDUsIDB4Mzk0NiwgMHgzOTQ3LCAweDM5NDgsIDB4Mzk0OSwgMHgzOTRBLCAweDM5NEIsIDB4Mzk0QywKKyAgICAweDM5NEQsIDB4Mzk0RSwgMHgzOTRGLCAweDM5NTAsIDB4Mzk1MSwgMHgzOTUyLCAweDM5NTMsIDB4Mzk1NCwKKyAgICAweDM5NTUsIDB4Mzk1NiwgMHgzOTU3LCAweDM5NTgsIDB4Mzk1OSwgMHgzOTVBLCAweDM5NUIsIDB4Mzk1QywKKyAgICAweDM5NUQsIDB4Mzk1RSwgMHgzOTVGLCAweDM5NjAsIDB4Mzk2MSwgMHgzOTYyLCAweDM5NjMsIDB4Mzk2NCwKKyAgICAweDM5NjUsIDB4Mzk2NiwgMHgzOTY3LCAweDM5NjgsIDB4Mzk2OSwgMHgzOTZBLCAweDM5NkIsIDB4Mzk2QywKKyAgICAweDM5NkQsIDB4Mzk2RiwgMHgzOTcwLCAweDM5NzEsIDB4Mzk3MiwgMHgzOTczLCAweDM5NzQsIDB4Mzk3NSwKKyAgICAweDM5NzYsIDB4Mzk3NywgMHgzOTc4LCAweDM5NzksIDB4Mzk3QSwgMHgzOTdCLCAweDM5N0MsIDB4Mzk3RCwKKyAgICAweDM5N0UsIDB4Mzk3RiwgMHgzOTgwLCAweDM5ODEsIDB4Mzk4MiwgMHgzOTgzLCAweDM5ODQsIDB4Mzk4NSwKKyAgICAweDM5ODYsIDB4Mzk4NywgMHgzOTg4LCAweDM5ODksIDB4Mzk4QSwgMHgzOThCLCAweDM5OEMsIDB4Mzk4RCwKKyAgICAweDM5OEUsIDB4Mzk4RiwgMHgzOTkwLCAweDM5OTEsIDB4Mzk5MiwgMHgzOTkzLCAweDM5OTQsIDB4Mzk5NSwKKyAgICAweDM5OTYsIDB4Mzk5NywgMHgzOTk4LCAweDM5OTksIDB4Mzk5QSwgMHgzOTlCLCAweDM5OUMsIDB4Mzk5RCwKKyAgICAweDM5OUUsIDB4Mzk5RiwgMHgzOUEwLCAweDM5QTEsIDB4MzlBMiwgMHgzOUEzLCAweDM5QTQsIDB4MzlBNSwKKyAgICAweDM5QTYsIDB4MzlBNywgMHgzOUE4LCAweDM5QTksIDB4MzlBQSwgMHgzOUFCLCAweDM5QUMsIDB4MzlBRCwKKyAgICAweDM5QUUsIDB4MzlBRiwgMHgzOUIwLCAweDM5QjEsIDB4MzlCMiwgMHgzOUIzLCAweDM5QjQsIDB4MzlCNSwKKyAgICAweDM5QjYsIDB4MzlCNywgMHgzOUI4LCAweDM5QjksIDB4MzlCQSwgMHgzOUJCLCAweDM5QkMsIDB4MzlCRCwKKyAgICAweDM5QkUsIDB4MzlCRiwgMHgzOUMwLCAweDM5QzEsIDB4MzlDMiwgMHgzOUMzLCAweDM5QzQsIDB4MzlDNSwKKyAgICAweDM5QzYsIDB4MzlDNywgMHgzOUM4LCAweDM5QzksIDB4MzlDQSwgMHgzOUNCLCAweDM5Q0MsIDB4MzlDRCwKKyAgICAweDM5Q0UsIDB4MzlEMSwgMHgzOUQyLCAweDM5RDMsIDB4MzlENCwgMHgzOUQ1LCAweDM5RDYsIDB4MzlENywKKyAgICAweDM5RDgsIDB4MzlEOSwgMHgzOURBLCAweDM5REIsIDB4MzlEQywgMHgzOURELCAweDM5REUsIDB4MzlFMCwKKyAgICAweDM5RTEsIDB4MzlFMiwgMHgzOUUzLCAweDM5RTQsIDB4MzlFNSwgMHgzOUU2LCAweDM5RTcsIDB4MzlFOCwKKyAgICAweDM5RTksIDB4MzlFQSwgMHgzOUVCLCAweDM5RUMsIDB4MzlFRCwgMHgzOUVFLCAweDM5RUYsIDB4MzlGMCwKKyAgICAweDM5RjEsIDB4MzlGMiwgMHgzOUYzLCAweDM5RjQsIDB4MzlGNSwgMHgzOUY2LCAweDM5RjcsIDB4MzlGOCwKKyAgICAweDM5RjksIDB4MzlGQSwgMHgzOUZCLCAweDM5RkMsIDB4MzlGRCwgMHgzOUZFLCAweDM5RkYsIDB4M0EwMCwKKyAgICAweDNBMDEsIDB4M0EwMiwgMHgzQTAzLCAweDNBMDQsIDB4M0EwNSwgMHgzQTA2LCAweDNBMDcsIDB4M0EwOCwKKyAgICAweDNBMDksIDB4M0EwQSwgMHgzQTBCLCAweDNBMEMsIDB4M0EwRCwgMHgzQTBFLCAweDNBMEYsIDB4M0ExMCwKKyAgICAweDNBMTEsIDB4M0ExMiwgMHgzQTEzLCAweDNBMTQsIDB4M0ExNSwgMHgzQTE2LCAweDNBMTcsIDB4M0ExOCwKKyAgICAweDNBMTksIDB4M0ExQSwgMHgzQTFCLCAweDNBMUMsIDB4M0ExRCwgMHgzQTFFLCAweDNBMUYsIDB4M0EyMCwKKyAgICAweDNBMjEsIDB4M0EyMiwgMHgzQTIzLCAweDNBMjQsIDB4M0EyNSwgMHgzQTI2LCAweDNBMjcsIDB4M0EyOCwKKyAgICAweDNBMjksIDB4M0EyQSwgMHgzQTJCLCAweDNBMkMsIDB4M0EyRCwgMHgzQTJFLCAweDNBMkYsIDB4M0EzMCwKKyAgICAweDNBMzEsIDB4M0EzMiwgMHgzQTMzLCAweDNBMzQsIDB4M0EzNSwgMHgzQTM2LCAweDNBMzcsIDB4M0EzOCwKKyAgICAweDNBMzksIDB4M0EzQSwgMHgzQTNCLCAweDNBM0MsIDB4M0EzRCwgMHgzQTNFLCAweDNBM0YsIDB4M0E0MCwKKyAgICAweDNBNDEsIDB4M0E0MiwgMHgzQTQzLCAweDNBNDQsIDB4M0E0NSwgMHgzQTQ2LCAweDNBNDcsIDB4M0E0OCwKKyAgICAweDNBNDksIDB4M0E0QSwgMHgzQTRCLCAweDNBNEMsIDB4M0E0RCwgMHgzQTRFLCAweDNBNEYsIDB4M0E1MCwKKyAgICAweDNBNTEsIDB4M0E1MiwgMHgzQTUzLCAweDNBNTQsIDB4M0E1NSwgMHgzQTU2LCAweDNBNTcsIDB4M0E1OCwKKyAgICAweDNBNTksIDB4M0E1QSwgMHgzQTVCLCAweDNBNUMsIDB4M0E1RCwgMHgzQTVFLCAweDNBNUYsIDB4M0E2MCwKKyAgICAweDNBNjEsIDB4M0E2MiwgMHgzQTYzLCAweDNBNjQsIDB4M0E2NSwgMHgzQTY2LCAweDNBNjcsIDB4M0E2OCwKKyAgICAweDNBNjksIDB4M0E2QSwgMHgzQTZCLCAweDNBNkMsIDB4M0E2RCwgMHgzQTZFLCAweDNBNkYsIDB4M0E3MCwKKyAgICAweDNBNzEsIDB4M0E3MiwgMHgzQTc0LCAweDNBNzUsIDB4M0E3NiwgMHgzQTc3LCAweDNBNzgsIDB4M0E3OSwKKyAgICAweDNBN0EsIDB4M0E3QiwgMHgzQTdDLCAweDNBN0QsIDB4M0E3RSwgMHgzQTdGLCAweDNBODAsIDB4M0E4MSwKKyAgICAweDNBODIsIDB4M0E4MywgMHgzQTg0LCAweDNBODUsIDB4M0E4NiwgMHgzQTg3LCAweDNBODgsIDB4M0E4OSwKKyAgICAweDNBOEEsIDB4M0E4QiwgMHgzQThDLCAweDNBOEQsIDB4M0E4RSwgMHgzQThGLCAweDNBOTAsIDB4M0E5MSwKKyAgICAweDNBOTIsIDB4M0E5MywgMHgzQTk0LCAweDNBOTUsIDB4M0E5NiwgMHgzQTk3LCAweDNBOTgsIDB4M0E5OSwKKyAgICAweDNBOUEsIDB4M0E5QiwgMHgzQTlDLCAweDNBOUQsIDB4M0E5RSwgMHgzQTlGLCAweDNBQTAsIDB4M0FBMSwKKyAgICAweDNBQTIsIDB4M0FBMywgMHgzQUE0LCAweDNBQTUsIDB4M0FBNiwgMHgzQUE3LCAweDNBQTgsIDB4M0FBOSwKKyAgICAweDNBQUEsIDB4M0FBQiwgMHgzQUFDLCAweDNBQUQsIDB4M0FBRSwgMHgzQUFGLCAweDNBQjAsIDB4M0FCMSwKKyAgICAweDNBQjIsIDB4M0FCMywgMHgzQUI0LCAweDNBQjUsIDB4M0FCNiwgMHgzQUI3LCAweDNBQjgsIDB4M0FCOSwKKyAgICAweDNBQkEsIDB4M0FCQiwgMHgzQUJDLCAweDNBQkQsIDB4M0FCRSwgMHgzQUJGLCAweDNBQzAsIDB4M0FDMSwKKyAgICAweDNBQzIsIDB4M0FDMywgMHgzQUM0LCAweDNBQzUsIDB4M0FDNiwgMHgzQUM3LCAweDNBQzgsIDB4M0FDOSwKKyAgICAweDNBQ0EsIDB4M0FDQiwgMHgzQUNDLCAweDNBQ0QsIDB4M0FDRSwgMHgzQUNGLCAweDNBRDAsIDB4M0FEMSwKKyAgICAweDNBRDIsIDB4M0FEMywgMHgzQUQ0LCAweDNBRDUsIDB4M0FENiwgMHgzQUQ3LCAweDNBRDgsIDB4M0FEOSwKKyAgICAweDNBREEsIDB4M0FEQiwgMHgzQURDLCAweDNBREQsIDB4M0FERSwgMHgzQURGLCAweDNBRTAsIDB4M0FFMSwKKyAgICAweDNBRTIsIDB4M0FFMywgMHgzQUU0LCAweDNBRTUsIDB4M0FFNiwgMHgzQUU3LCAweDNBRTgsIDB4M0FFOSwKKyAgICAweDNBRUEsIDB4M0FFQiwgMHgzQUVDLCAweDNBRUQsIDB4M0FFRSwgMHgzQUVGLCAweDNBRjAsIDB4M0FGMSwKKyAgICAweDNBRjIsIDB4M0FGMywgMHgzQUY0LCAweDNBRjUsIDB4M0FGNiwgMHgzQUY3LCAweDNBRjgsIDB4M0FGOSwKKyAgICAweDNBRkEsIDB4M0FGQiwgMHgzQUZDLCAweDNBRkQsIDB4M0FGRSwgMHgzQUZGLCAweDNCMDAsIDB4M0IwMSwKKyAgICAweDNCMDIsIDB4M0IwMywgMHgzQjA0LCAweDNCMDUsIDB4M0IwNiwgMHgzQjA3LCAweDNCMDgsIDB4M0IwOSwKKyAgICAweDNCMEEsIDB4M0IwQiwgMHgzQjBDLCAweDNCMEQsIDB4M0IwRSwgMHgzQjBGLCAweDNCMTAsIDB4M0IxMSwKKyAgICAweDNCMTIsIDB4M0IxMywgMHgzQjE0LCAweDNCMTUsIDB4M0IxNiwgMHgzQjE3LCAweDNCMTgsIDB4M0IxOSwKKyAgICAweDNCMUEsIDB4M0IxQiwgMHgzQjFDLCAweDNCMUQsIDB4M0IxRSwgMHgzQjFGLCAweDNCMjAsIDB4M0IyMSwKKyAgICAweDNCMjIsIDB4M0IyMywgMHgzQjI0LCAweDNCMjUsIDB4M0IyNiwgMHgzQjI3LCAweDNCMjgsIDB4M0IyOSwKKyAgICAweDNCMkEsIDB4M0IyQiwgMHgzQjJDLCAweDNCMkQsIDB4M0IyRSwgMHgzQjJGLCAweDNCMzAsIDB4M0IzMSwKKyAgICAweDNCMzIsIDB4M0IzMywgMHgzQjM0LCAweDNCMzUsIDB4M0IzNiwgMHgzQjM3LCAweDNCMzgsIDB4M0IzOSwKKyAgICAweDNCM0EsIDB4M0IzQiwgMHgzQjNDLCAweDNCM0QsIDB4M0IzRSwgMHgzQjNGLCAweDNCNDAsIDB4M0I0MSwKKyAgICAweDNCNDIsIDB4M0I0MywgMHgzQjQ0LCAweDNCNDUsIDB4M0I0NiwgMHgzQjQ3LCAweDNCNDgsIDB4M0I0OSwKKyAgICAweDNCNEEsIDB4M0I0QiwgMHgzQjRDLCAweDNCNEQsIDB4M0I0RiwgMHgzQjUwLCAweDNCNTEsIDB4M0I1MiwKKyAgICAweDNCNTMsIDB4M0I1NCwgMHgzQjU1LCAweDNCNTYsIDB4M0I1NywgMHgzQjU4LCAweDNCNTksIDB4M0I1QSwKKyAgICAweDNCNUIsIDB4M0I1QywgMHgzQjVELCAweDNCNUUsIDB4M0I1RiwgMHgzQjYwLCAweDNCNjEsIDB4M0I2MiwKKyAgICAweDNCNjMsIDB4M0I2NCwgMHgzQjY1LCAweDNCNjYsIDB4M0I2NywgMHgzQjY4LCAweDNCNjksIDB4M0I2QSwKKyAgICAweDNCNkIsIDB4M0I2QywgMHgzQjZELCAweDNCNkUsIDB4M0I2RiwgMHgzQjcwLCAweDNCNzEsIDB4M0I3MiwKKyAgICAweDNCNzMsIDB4M0I3NCwgMHgzQjc1LCAweDNCNzYsIDB4M0I3NywgMHgzQjc4LCAweDNCNzksIDB4M0I3QSwKKyAgICAweDNCN0IsIDB4M0I3QywgMHgzQjdELCAweDNCN0UsIDB4M0I3RiwgMHgzQjgwLCAweDNCODEsIDB4M0I4MiwKKyAgICAweDNCODMsIDB4M0I4NCwgMHgzQjg1LCAweDNCODYsIDB4M0I4NywgMHgzQjg4LCAweDNCODksIDB4M0I4QSwKKyAgICAweDNCOEIsIDB4M0I4QywgMHgzQjhELCAweDNCOEUsIDB4M0I4RiwgMHgzQjkwLCAweDNCOTEsIDB4M0I5MiwKKyAgICAweDNCOTMsIDB4M0I5NCwgMHgzQjk1LCAweDNCOTYsIDB4M0I5NywgMHgzQjk4LCAweDNCOTksIDB4M0I5QSwKKyAgICAweDNCOUIsIDB4M0I5QywgMHgzQjlELCAweDNCOUUsIDB4M0I5RiwgMHgzQkEwLCAweDNCQTEsIDB4M0JBMiwKKyAgICAweDNCQTMsIDB4M0JBNCwgMHgzQkE1LCAweDNCQTYsIDB4M0JBNywgMHgzQkE4LCAweDNCQTksIDB4M0JBQSwKKyAgICAweDNCQUIsIDB4M0JBQywgMHgzQkFELCAweDNCQUUsIDB4M0JBRiwgMHgzQkIwLCAweDNCQjEsIDB4M0JCMiwKKyAgICAweDNCQjMsIDB4M0JCNCwgMHgzQkI1LCAweDNCQjYsIDB4M0JCNywgMHgzQkI4LCAweDNCQjksIDB4M0JCQSwKKyAgICAweDNCQkIsIDB4M0JCQywgMHgzQkJELCAweDNCQkUsIDB4M0JCRiwgMHgzQkMwLCAweDNCQzEsIDB4M0JDMiwKKyAgICAweDNCQzMsIDB4M0JDNCwgMHgzQkM1LCAweDNCQzYsIDB4M0JDNywgMHgzQkM4LCAweDNCQzksIDB4M0JDQSwKKyAgICAweDNCQ0IsIDB4M0JDQywgMHgzQkNELCAweDNCQ0UsIDB4M0JDRiwgMHgzQkQwLCAweDNCRDEsIDB4M0JEMiwKKyAgICAweDNCRDMsIDB4M0JENCwgMHgzQkQ1LCAweDNCRDYsIDB4M0JENywgMHgzQkQ4LCAweDNCRDksIDB4M0JEQSwKKyAgICAweDNCREIsIDB4M0JEQywgMHgzQkRELCAweDNCREUsIDB4M0JERiwgMHgzQkUwLCAweDNCRTEsIDB4M0JFMiwKKyAgICAweDNCRTMsIDB4M0JFNCwgMHgzQkU1LCAweDNCRTYsIDB4M0JFNywgMHgzQkU4LCAweDNCRTksIDB4M0JFQSwKKyAgICAweDNCRUIsIDB4M0JFQywgMHgzQkVELCAweDNCRUUsIDB4M0JFRiwgMHgzQkYwLCAweDNCRjEsIDB4M0JGMiwKKyAgICAweDNCRjMsIDB4M0JGNCwgMHgzQkY1LCAweDNCRjYsIDB4M0JGNywgMHgzQkY4LCAweDNCRjksIDB4M0JGQSwKKyAgICAweDNCRkIsIDB4M0JGQywgMHgzQkZELCAweDNCRkUsIDB4M0JGRiwgMHgzQzAwLCAweDNDMDEsIDB4M0MwMiwKKyAgICAweDNDMDMsIDB4M0MwNCwgMHgzQzA1LCAweDNDMDYsIDB4M0MwNywgMHgzQzA4LCAweDNDMDksIDB4M0MwQSwKKyAgICAweDNDMEIsIDB4M0MwQywgMHgzQzBELCAweDNDMEUsIDB4M0MwRiwgMHgzQzEwLCAweDNDMTEsIDB4M0MxMiwKKyAgICAweDNDMTMsIDB4M0MxNCwgMHgzQzE1LCAweDNDMTYsIDB4M0MxNywgMHgzQzE4LCAweDNDMTksIDB4M0MxQSwKKyAgICAweDNDMUIsIDB4M0MxQywgMHgzQzFELCAweDNDMUUsIDB4M0MxRiwgMHgzQzIwLCAweDNDMjEsIDB4M0MyMiwKKyAgICAweDNDMjMsIDB4M0MyNCwgMHgzQzI1LCAweDNDMjYsIDB4M0MyNywgMHgzQzI4LCAweDNDMjksIDB4M0MyQSwKKyAgICAweDNDMkIsIDB4M0MyQywgMHgzQzJELCAweDNDMkUsIDB4M0MyRiwgMHgzQzMwLCAweDNDMzEsIDB4M0MzMiwKKyAgICAweDNDMzMsIDB4M0MzNCwgMHgzQzM1LCAweDNDMzYsIDB4M0MzNywgMHgzQzM4LCAweDNDMzksIDB4M0MzQSwKKyAgICAweDNDM0IsIDB4M0MzQywgMHgzQzNELCAweDNDM0UsIDB4M0MzRiwgMHgzQzQwLCAweDNDNDEsIDB4M0M0MiwKKyAgICAweDNDNDMsIDB4M0M0NCwgMHgzQzQ1LCAweDNDNDYsIDB4M0M0NywgMHgzQzQ4LCAweDNDNDksIDB4M0M0QSwKKyAgICAweDNDNEIsIDB4M0M0QywgMHgzQzRELCAweDNDNEUsIDB4M0M0RiwgMHgzQzUwLCAweDNDNTEsIDB4M0M1MiwKKyAgICAweDNDNTMsIDB4M0M1NCwgMHgzQzU1LCAweDNDNTYsIDB4M0M1NywgMHgzQzU4LCAweDNDNTksIDB4M0M1QSwKKyAgICAweDNDNUIsIDB4M0M1QywgMHgzQzVELCAweDNDNUUsIDB4M0M1RiwgMHgzQzYwLCAweDNDNjEsIDB4M0M2MiwKKyAgICAweDNDNjMsIDB4M0M2NCwgMHgzQzY1LCAweDNDNjYsIDB4M0M2NywgMHgzQzY4LCAweDNDNjksIDB4M0M2QSwKKyAgICAweDNDNkIsIDB4M0M2QywgMHgzQzZELCAweDNDNkYsIDB4M0M3MCwgMHgzQzcxLCAweDNDNzIsIDB4M0M3MywKKyAgICAweDNDNzQsIDB4M0M3NSwgMHgzQzc2LCAweDNDNzcsIDB4M0M3OCwgMHgzQzc5LCAweDNDN0EsIDB4M0M3QiwKKyAgICAweDNDN0MsIDB4M0M3RCwgMHgzQzdFLCAweDNDN0YsIDB4M0M4MCwgMHgzQzgxLCAweDNDODIsIDB4M0M4MywKKyAgICAweDNDODQsIDB4M0M4NSwgMHgzQzg2LCAweDNDODcsIDB4M0M4OCwgMHgzQzg5LCAweDNDOEEsIDB4M0M4QiwKKyAgICAweDNDOEMsIDB4M0M4RCwgMHgzQzhFLCAweDNDOEYsIDB4M0M5MCwgMHgzQzkxLCAweDNDOTIsIDB4M0M5MywKKyAgICAweDNDOTQsIDB4M0M5NSwgMHgzQzk2LCAweDNDOTcsIDB4M0M5OCwgMHgzQzk5LCAweDNDOUEsIDB4M0M5QiwKKyAgICAweDNDOUMsIDB4M0M5RCwgMHgzQzlFLCAweDNDOUYsIDB4M0NBMCwgMHgzQ0ExLCAweDNDQTIsIDB4M0NBMywKKyAgICAweDNDQTQsIDB4M0NBNSwgMHgzQ0E2LCAweDNDQTcsIDB4M0NBOCwgMHgzQ0E5LCAweDNDQUEsIDB4M0NBQiwKKyAgICAweDNDQUMsIDB4M0NBRCwgMHgzQ0FFLCAweDNDQUYsIDB4M0NCMCwgMHgzQ0IxLCAweDNDQjIsIDB4M0NCMywKKyAgICAweDNDQjQsIDB4M0NCNSwgMHgzQ0I2LCAweDNDQjcsIDB4M0NCOCwgMHgzQ0I5LCAweDNDQkEsIDB4M0NCQiwKKyAgICAweDNDQkMsIDB4M0NCRCwgMHgzQ0JFLCAweDNDQkYsIDB4M0NDMCwgMHgzQ0MxLCAweDNDQzIsIDB4M0NDMywKKyAgICAweDNDQzQsIDB4M0NDNSwgMHgzQ0M2LCAweDNDQzcsIDB4M0NDOCwgMHgzQ0M5LCAweDNDQ0EsIDB4M0NDQiwKKyAgICAweDNDQ0MsIDB4M0NDRCwgMHgzQ0NFLCAweDNDQ0YsIDB4M0NEMCwgMHgzQ0QxLCAweDNDRDIsIDB4M0NEMywKKyAgICAweDNDRDQsIDB4M0NENSwgMHgzQ0Q2LCAweDNDRDcsIDB4M0NEOCwgMHgzQ0Q5LCAweDNDREEsIDB4M0NEQiwKKyAgICAweDNDREMsIDB4M0NERCwgMHgzQ0RFLCAweDNDREYsIDB4M0NFMSwgMHgzQ0UyLCAweDNDRTMsIDB4M0NFNCwKKyAgICAweDNDRTUsIDB4M0NFNiwgMHgzQ0U3LCAweDNDRTgsIDB4M0NFOSwgMHgzQ0VBLCAweDNDRUIsIDB4M0NFQywKKyAgICAweDNDRUQsIDB4M0NFRSwgMHgzQ0VGLCAweDNDRjAsIDB4M0NGMSwgMHgzQ0YyLCAweDNDRjMsIDB4M0NGNCwKKyAgICAweDNDRjUsIDB4M0NGNiwgMHgzQ0Y3LCAweDNDRjgsIDB4M0NGOSwgMHgzQ0ZBLCAweDNDRkIsIDB4M0NGQywKKyAgICAweDNDRkQsIDB4M0NGRSwgMHgzQ0ZGLCAweDNEMDAsIDB4M0QwMSwgMHgzRDAyLCAweDNEMDMsIDB4M0QwNCwKKyAgICAweDNEMDUsIDB4M0QwNiwgMHgzRDA3LCAweDNEMDgsIDB4M0QwOSwgMHgzRDBBLCAweDNEMEIsIDB4M0QwQywKKyAgICAweDNEMEQsIDB4M0QwRSwgMHgzRDBGLCAweDNEMTAsIDB4M0QxMSwgMHgzRDEyLCAweDNEMTMsIDB4M0QxNCwKKyAgICAweDNEMTUsIDB4M0QxNiwgMHgzRDE3LCAweDNEMTgsIDB4M0QxOSwgMHgzRDFBLCAweDNEMUIsIDB4M0QxQywKKyAgICAweDNEMUQsIDB4M0QxRSwgMHgzRDFGLCAweDNEMjAsIDB4M0QyMSwgMHgzRDIyLCAweDNEMjMsIDB4M0QyNCwKKyAgICAweDNEMjUsIDB4M0QyNiwgMHgzRDI3LCAweDNEMjgsIDB4M0QyOSwgMHgzRDJBLCAweDNEMkIsIDB4M0QyQywKKyAgICAweDNEMkQsIDB4M0QyRSwgMHgzRDJGLCAweDNEMzAsIDB4M0QzMSwgMHgzRDMyLCAweDNEMzMsIDB4M0QzNCwKKyAgICAweDNEMzUsIDB4M0QzNiwgMHgzRDM3LCAweDNEMzgsIDB4M0QzOSwgMHgzRDNBLCAweDNEM0IsIDB4M0QzQywKKyAgICAweDNEM0QsIDB4M0QzRSwgMHgzRDNGLCAweDNENDAsIDB4M0Q0MSwgMHgzRDQyLCAweDNENDMsIDB4M0Q0NCwKKyAgICAweDNENDUsIDB4M0Q0NiwgMHgzRDQ3LCAweDNENDgsIDB4M0Q0OSwgMHgzRDRBLCAweDNENEIsIDB4M0Q0QywKKyAgICAweDNENEQsIDB4M0Q0RSwgMHgzRDRGLCAweDNENTAsIDB4M0Q1MSwgMHgzRDUyLCAweDNENTMsIDB4M0Q1NCwKKyAgICAweDNENTUsIDB4M0Q1NiwgMHgzRDU3LCAweDNENTgsIDB4M0Q1OSwgMHgzRDVBLCAweDNENUIsIDB4M0Q1QywKKyAgICAweDNENUQsIDB4M0Q1RSwgMHgzRDVGLCAweDNENjAsIDB4M0Q2MSwgMHgzRDYyLCAweDNENjMsIDB4M0Q2NCwKKyAgICAweDNENjUsIDB4M0Q2NiwgMHgzRDY3LCAweDNENjgsIDB4M0Q2OSwgMHgzRDZBLCAweDNENkIsIDB4M0Q2QywKKyAgICAweDNENkQsIDB4M0Q2RSwgMHgzRDZGLCAweDNENzAsIDB4M0Q3MSwgMHgzRDcyLCAweDNENzMsIDB4M0Q3NCwKKyAgICAweDNENzUsIDB4M0Q3NiwgMHgzRDc3LCAweDNENzgsIDB4M0Q3OSwgMHgzRDdBLCAweDNEN0IsIDB4M0Q3QywKKyAgICAweDNEN0QsIDB4M0Q3RSwgMHgzRDdGLCAweDNEODAsIDB4M0Q4MSwgMHgzRDgyLCAweDNEODMsIDB4M0Q4NCwKKyAgICAweDNEODUsIDB4M0Q4NiwgMHgzRDg3LCAweDNEODgsIDB4M0Q4OSwgMHgzRDhBLCAweDNEOEIsIDB4M0Q4QywKKyAgICAweDNEOEQsIDB4M0Q4RSwgMHgzRDhGLCAweDNEOTAsIDB4M0Q5MSwgMHgzRDkyLCAweDNEOTMsIDB4M0Q5NCwKKyAgICAweDNEOTUsIDB4M0Q5NiwgMHgzRDk3LCAweDNEOTgsIDB4M0Q5OSwgMHgzRDlBLCAweDNEOUIsIDB4M0Q5QywKKyAgICAweDNEOUQsIDB4M0Q5RSwgMHgzRDlGLCAweDNEQTAsIDB4M0RBMSwgMHgzREEyLCAweDNEQTMsIDB4M0RBNCwKKyAgICAweDNEQTUsIDB4M0RBNiwgMHgzREE3LCAweDNEQTgsIDB4M0RBOSwgMHgzREFBLCAweDNEQUIsIDB4M0RBQywKKyAgICAweDNEQUQsIDB4M0RBRSwgMHgzREFGLCAweDNEQjAsIDB4M0RCMSwgMHgzREIyLCAweDNEQjMsIDB4M0RCNCwKKyAgICAweDNEQjUsIDB4M0RCNiwgMHgzREI3LCAweDNEQjgsIDB4M0RCOSwgMHgzREJBLCAweDNEQkIsIDB4M0RCQywKKyAgICAweDNEQkQsIDB4M0RCRSwgMHgzREJGLCAweDNEQzAsIDB4M0RDMSwgMHgzREMyLCAweDNEQzMsIDB4M0RDNCwKKyAgICAweDNEQzUsIDB4M0RDNiwgMHgzREM3LCAweDNEQzgsIDB4M0RDOSwgMHgzRENBLCAweDNEQ0IsIDB4M0RDQywKKyAgICAweDNEQ0QsIDB4M0RDRSwgMHgzRENGLCAweDNERDAsIDB4M0REMSwgMHgzREQyLCAweDNERDMsIDB4M0RENCwKKyAgICAweDNERDUsIDB4M0RENiwgMHgzREQ3LCAweDNERDgsIDB4M0REOSwgMHgzRERBLCAweDNEREIsIDB4M0REQywKKyAgICAweDNEREQsIDB4M0RERSwgMHgzRERGLCAweDNERTAsIDB4M0RFMSwgMHgzREUyLCAweDNERTMsIDB4M0RFNCwKKyAgICAweDNERTUsIDB4M0RFNiwgMHgzREU3LCAweDNERTgsIDB4M0RFOSwgMHgzREVBLCAweDNERUIsIDB4M0RFQywKKyAgICAweDNERUQsIDB4M0RFRSwgMHgzREVGLCAweDNERjAsIDB4M0RGMSwgMHgzREYyLCAweDNERjMsIDB4M0RGNCwKKyAgICAweDNERjUsIDB4M0RGNiwgMHgzREY3LCAweDNERjgsIDB4M0RGOSwgMHgzREZBLCAweDNERkIsIDB4M0RGQywKKyAgICAweDNERkQsIDB4M0RGRSwgMHgzREZGLCAweDNFMDAsIDB4M0UwMSwgMHgzRTAyLCAweDNFMDMsIDB4M0UwNCwKKyAgICAweDNFMDUsIDB4M0UwNiwgMHgzRTA3LCAweDNFMDgsIDB4M0UwOSwgMHgzRTBBLCAweDNFMEIsIDB4M0UwQywKKyAgICAweDNFMEQsIDB4M0UwRSwgMHgzRTBGLCAweDNFMTAsIDB4M0UxMSwgMHgzRTEyLCAweDNFMTMsIDB4M0UxNCwKKyAgICAweDNFMTUsIDB4M0UxNiwgMHgzRTE3LCAweDNFMTgsIDB4M0UxOSwgMHgzRTFBLCAweDNFMUIsIDB4M0UxQywKKyAgICAweDNFMUQsIDB4M0UxRSwgMHgzRTFGLCAweDNFMjAsIDB4M0UyMSwgMHgzRTIyLCAweDNFMjMsIDB4M0UyNCwKKyAgICAweDNFMjUsIDB4M0UyNiwgMHgzRTI3LCAweDNFMjgsIDB4M0UyOSwgMHgzRTJBLCAweDNFMkIsIDB4M0UyQywKKyAgICAweDNFMkQsIDB4M0UyRSwgMHgzRTJGLCAweDNFMzAsIDB4M0UzMSwgMHgzRTMyLCAweDNFMzMsIDB4M0UzNCwKKyAgICAweDNFMzUsIDB4M0UzNiwgMHgzRTM3LCAweDNFMzgsIDB4M0UzOSwgMHgzRTNBLCAweDNFM0IsIDB4M0UzQywKKyAgICAweDNFM0QsIDB4M0UzRSwgMHgzRTNGLCAweDNFNDAsIDB4M0U0MSwgMHgzRTQyLCAweDNFNDMsIDB4M0U0NCwKKyAgICAweDNFNDUsIDB4M0U0NiwgMHgzRTQ3LCAweDNFNDgsIDB4M0U0OSwgMHgzRTRBLCAweDNFNEIsIDB4M0U0QywKKyAgICAweDNFNEQsIDB4M0U0RSwgMHgzRTRGLCAweDNFNTAsIDB4M0U1MSwgMHgzRTUyLCAweDNFNTMsIDB4M0U1NCwKKyAgICAweDNFNTUsIDB4M0U1NiwgMHgzRTU3LCAweDNFNTgsIDB4M0U1OSwgMHgzRTVBLCAweDNFNUIsIDB4M0U1QywKKyAgICAweDNFNUQsIDB4M0U1RSwgMHgzRTVGLCAweDNFNjAsIDB4M0U2MSwgMHgzRTYyLCAweDNFNjMsIDB4M0U2NCwKKyAgICAweDNFNjUsIDB4M0U2NiwgMHgzRTY3LCAweDNFNjgsIDB4M0U2OSwgMHgzRTZBLCAweDNFNkIsIDB4M0U2QywKKyAgICAweDNFNkQsIDB4M0U2RSwgMHgzRTZGLCAweDNFNzAsIDB4M0U3MSwgMHgzRTcyLCAweDNFNzMsIDB4M0U3NCwKKyAgICAweDNFNzUsIDB4M0U3NiwgMHgzRTc3LCAweDNFNzgsIDB4M0U3OSwgMHgzRTdBLCAweDNFN0IsIDB4M0U3QywKKyAgICAweDNFN0QsIDB4M0U3RSwgMHgzRTdGLCAweDNFODAsIDB4M0U4MSwgMHgzRTgyLCAweDNFODMsIDB4M0U4NCwKKyAgICAweDNFODUsIDB4M0U4NiwgMHgzRTg3LCAweDNFODgsIDB4M0U4OSwgMHgzRThBLCAweDNFOEIsIDB4M0U4QywKKyAgICAweDNFOEQsIDB4M0U4RSwgMHgzRThGLCAweDNFOTAsIDB4M0U5MSwgMHgzRTkyLCAweDNFOTMsIDB4M0U5NCwKKyAgICAweDNFOTUsIDB4M0U5NiwgMHgzRTk3LCAweDNFOTgsIDB4M0U5OSwgMHgzRTlBLCAweDNFOUIsIDB4M0U5QywKKyAgICAweDNFOUQsIDB4M0U5RSwgMHgzRTlGLCAweDNFQTAsIDB4M0VBMSwgMHgzRUEyLCAweDNFQTMsIDB4M0VBNCwKKyAgICAweDNFQTUsIDB4M0VBNiwgMHgzRUE3LCAweDNFQTgsIDB4M0VBOSwgMHgzRUFBLCAweDNFQUIsIDB4M0VBQywKKyAgICAweDNFQUQsIDB4M0VBRSwgMHgzRUFGLCAweDNFQjAsIDB4M0VCMSwgMHgzRUIyLCAweDNFQjMsIDB4M0VCNCwKKyAgICAweDNFQjUsIDB4M0VCNiwgMHgzRUI3LCAweDNFQjgsIDB4M0VCOSwgMHgzRUJBLCAweDNFQkIsIDB4M0VCQywKKyAgICAweDNFQkQsIDB4M0VCRSwgMHgzRUJGLCAweDNFQzAsIDB4M0VDMSwgMHgzRUMyLCAweDNFQzMsIDB4M0VDNCwKKyAgICAweDNFQzUsIDB4M0VDNiwgMHgzRUM3LCAweDNFQzgsIDB4M0VDOSwgMHgzRUNBLCAweDNFQ0IsIDB4M0VDQywKKyAgICAweDNFQ0QsIDB4M0VDRSwgMHgzRUNGLCAweDNFRDAsIDB4M0VEMSwgMHgzRUQyLCAweDNFRDMsIDB4M0VENCwKKyAgICAweDNFRDUsIDB4M0VENiwgMHgzRUQ3LCAweDNFRDgsIDB4M0VEOSwgMHgzRURBLCAweDNFREIsIDB4M0VEQywKKyAgICAweDNFREQsIDB4M0VERSwgMHgzRURGLCAweDNFRTAsIDB4M0VFMSwgMHgzRUUyLCAweDNFRTMsIDB4M0VFNCwKKyAgICAweDNFRTUsIDB4M0VFNiwgMHgzRUU3LCAweDNFRTgsIDB4M0VFOSwgMHgzRUVBLCAweDNFRUIsIDB4M0VFQywKKyAgICAweDNFRUQsIDB4M0VFRSwgMHgzRUVGLCAweDNFRjAsIDB4M0VGMSwgMHgzRUYyLCAweDNFRjMsIDB4M0VGNCwKKyAgICAweDNFRjUsIDB4M0VGNiwgMHgzRUY3LCAweDNFRjgsIDB4M0VGOSwgMHgzRUZBLCAweDNFRkIsIDB4M0VGQywKKyAgICAweDNFRkQsIDB4M0VGRSwgMHgzRUZGLCAweDNGMDAsIDB4M0YwMSwgMHgzRjAyLCAweDNGMDMsIDB4M0YwNCwKKyAgICAweDNGMDUsIDB4M0YwNiwgMHgzRjA3LCAweDNGMDgsIDB4M0YwOSwgMHgzRjBBLCAweDNGMEIsIDB4M0YwQywKKyAgICAweDNGMEQsIDB4M0YwRSwgMHgzRjBGLCAweDNGMTAsIDB4M0YxMSwgMHgzRjEyLCAweDNGMTMsIDB4M0YxNCwKKyAgICAweDNGMTUsIDB4M0YxNiwgMHgzRjE3LCAweDNGMTgsIDB4M0YxOSwgMHgzRjFBLCAweDNGMUIsIDB4M0YxQywKKyAgICAweDNGMUQsIDB4M0YxRSwgMHgzRjFGLCAweDNGMjAsIDB4M0YyMSwgMHgzRjIyLCAweDNGMjMsIDB4M0YyNCwKKyAgICAweDNGMjUsIDB4M0YyNiwgMHgzRjI3LCAweDNGMjgsIDB4M0YyOSwgMHgzRjJBLCAweDNGMkIsIDB4M0YyQywKKyAgICAweDNGMkQsIDB4M0YyRSwgMHgzRjJGLCAweDNGMzAsIDB4M0YzMSwgMHgzRjMyLCAweDNGMzMsIDB4M0YzNCwKKyAgICAweDNGMzUsIDB4M0YzNiwgMHgzRjM3LCAweDNGMzgsIDB4M0YzOSwgMHgzRjNBLCAweDNGM0IsIDB4M0YzQywKKyAgICAweDNGM0QsIDB4M0YzRSwgMHgzRjNGLCAweDNGNDAsIDB4M0Y0MSwgMHgzRjQyLCAweDNGNDMsIDB4M0Y0NCwKKyAgICAweDNGNDUsIDB4M0Y0NiwgMHgzRjQ3LCAweDNGNDgsIDB4M0Y0OSwgMHgzRjRBLCAweDNGNEIsIDB4M0Y0QywKKyAgICAweDNGNEQsIDB4M0Y0RSwgMHgzRjRGLCAweDNGNTAsIDB4M0Y1MSwgMHgzRjUyLCAweDNGNTMsIDB4M0Y1NCwKKyAgICAweDNGNTUsIDB4M0Y1NiwgMHgzRjU3LCAweDNGNTgsIDB4M0Y1OSwgMHgzRjVBLCAweDNGNUIsIDB4M0Y1QywKKyAgICAweDNGNUQsIDB4M0Y1RSwgMHgzRjVGLCAweDNGNjAsIDB4M0Y2MSwgMHgzRjYyLCAweDNGNjMsIDB4M0Y2NCwKKyAgICAweDNGNjUsIDB4M0Y2NiwgMHgzRjY3LCAweDNGNjgsIDB4M0Y2OSwgMHgzRjZBLCAweDNGNkIsIDB4M0Y2QywKKyAgICAweDNGNkQsIDB4M0Y2RSwgMHgzRjZGLCAweDNGNzAsIDB4M0Y3MSwgMHgzRjcyLCAweDNGNzMsIDB4M0Y3NCwKKyAgICAweDNGNzUsIDB4M0Y3NiwgMHgzRjc3LCAweDNGNzgsIDB4M0Y3OSwgMHgzRjdBLCAweDNGN0IsIDB4M0Y3QywKKyAgICAweDNGN0QsIDB4M0Y3RSwgMHgzRjdGLCAweDNGODAsIDB4M0Y4MSwgMHgzRjgyLCAweDNGODMsIDB4M0Y4NCwKKyAgICAweDNGODUsIDB4M0Y4NiwgMHgzRjg3LCAweDNGODgsIDB4M0Y4OSwgMHgzRjhBLCAweDNGOEIsIDB4M0Y4QywKKyAgICAweDNGOEQsIDB4M0Y4RSwgMHgzRjhGLCAweDNGOTAsIDB4M0Y5MSwgMHgzRjkyLCAweDNGOTMsIDB4M0Y5NCwKKyAgICAweDNGOTUsIDB4M0Y5NiwgMHgzRjk3LCAweDNGOTgsIDB4M0Y5OSwgMHgzRjlBLCAweDNGOUIsIDB4M0Y5QywKKyAgICAweDNGOUQsIDB4M0Y5RSwgMHgzRjlGLCAweDNGQTAsIDB4M0ZBMSwgMHgzRkEyLCAweDNGQTMsIDB4M0ZBNCwKKyAgICAweDNGQTUsIDB4M0ZBNiwgMHgzRkE3LCAweDNGQTgsIDB4M0ZBOSwgMHgzRkFBLCAweDNGQUIsIDB4M0ZBQywKKyAgICAweDNGQUQsIDB4M0ZBRSwgMHgzRkFGLCAweDNGQjAsIDB4M0ZCMSwgMHgzRkIyLCAweDNGQjMsIDB4M0ZCNCwKKyAgICAweDNGQjUsIDB4M0ZCNiwgMHgzRkI3LCAweDNGQjgsIDB4M0ZCOSwgMHgzRkJBLCAweDNGQkIsIDB4M0ZCQywKKyAgICAweDNGQkQsIDB4M0ZCRSwgMHgzRkJGLCAweDNGQzAsIDB4M0ZDMSwgMHgzRkMyLCAweDNGQzMsIDB4M0ZDNCwKKyAgICAweDNGQzUsIDB4M0ZDNiwgMHgzRkM3LCAweDNGQzgsIDB4M0ZDOSwgMHgzRkNBLCAweDNGQ0IsIDB4M0ZDQywKKyAgICAweDNGQ0QsIDB4M0ZDRSwgMHgzRkNGLCAweDNGRDAsIDB4M0ZEMSwgMHgzRkQyLCAweDNGRDMsIDB4M0ZENCwKKyAgICAweDNGRDUsIDB4M0ZENiwgMHgzRkQ3LCAweDNGRDgsIDB4M0ZEOSwgMHgzRkRBLCAweDNGREIsIDB4M0ZEQywKKyAgICAweDNGREQsIDB4M0ZERSwgMHgzRkRGLCAweDNGRTAsIDB4M0ZFMSwgMHgzRkUyLCAweDNGRTMsIDB4M0ZFNCwKKyAgICAweDNGRTUsIDB4M0ZFNiwgMHgzRkU3LCAweDNGRTgsIDB4M0ZFOSwgMHgzRkVBLCAweDNGRUIsIDB4M0ZFQywKKyAgICAweDNGRUQsIDB4M0ZFRSwgMHgzRkVGLCAweDNGRjAsIDB4M0ZGMSwgMHgzRkYyLCAweDNGRjMsIDB4M0ZGNCwKKyAgICAweDNGRjUsIDB4M0ZGNiwgMHgzRkY3LCAweDNGRjgsIDB4M0ZGOSwgMHgzRkZBLCAweDNGRkIsIDB4M0ZGQywKKyAgICAweDNGRkQsIDB4M0ZGRSwgMHgzRkZGLCAweDQwMDAsIDB4NDAwMSwgMHg0MDAyLCAweDQwMDMsIDB4NDAwNCwKKyAgICAweDQwMDUsIDB4NDAwNiwgMHg0MDA3LCAweDQwMDgsIDB4NDAwOSwgMHg0MDBBLCAweDQwMEIsIDB4NDAwQywKKyAgICAweDQwMEQsIDB4NDAwRSwgMHg0MDBGLCAweDQwMTAsIDB4NDAxMSwgMHg0MDEyLCAweDQwMTMsIDB4NDAxNCwKKyAgICAweDQwMTUsIDB4NDAxNiwgMHg0MDE3LCAweDQwMTgsIDB4NDAxOSwgMHg0MDFBLCAweDQwMUIsIDB4NDAxQywKKyAgICAweDQwMUQsIDB4NDAxRSwgMHg0MDFGLCAweDQwMjAsIDB4NDAyMSwgMHg0MDIyLCAweDQwMjMsIDB4NDAyNCwKKyAgICAweDQwMjUsIDB4NDAyNiwgMHg0MDI3LCAweDQwMjgsIDB4NDAyOSwgMHg0MDJBLCAweDQwMkIsIDB4NDAyQywKKyAgICAweDQwMkQsIDB4NDAyRSwgMHg0MDJGLCAweDQwMzAsIDB4NDAzMSwgMHg0MDMyLCAweDQwMzMsIDB4NDAzNCwKKyAgICAweDQwMzUsIDB4NDAzNiwgMHg0MDM3LCAweDQwMzgsIDB4NDAzOSwgMHg0MDNBLCAweDQwM0IsIDB4NDAzQywKKyAgICAweDQwM0QsIDB4NDAzRSwgMHg0MDNGLCAweDQwNDAsIDB4NDA0MSwgMHg0MDQyLCAweDQwNDMsIDB4NDA0NCwKKyAgICAweDQwNDUsIDB4NDA0NiwgMHg0MDQ3LCAweDQwNDgsIDB4NDA0OSwgMHg0MDRBLCAweDQwNEIsIDB4NDA0QywKKyAgICAweDQwNEQsIDB4NDA0RSwgMHg0MDRGLCAweDQwNTAsIDB4NDA1MSwgMHg0MDUyLCAweDQwNTMsIDB4NDA1NCwKKyAgICAweDQwNTUsIDB4NDA1NywgMHg0MDU4LCAweDQwNTksIDB4NDA1QSwgMHg0MDVCLCAweDQwNUMsIDB4NDA1RCwKKyAgICAweDQwNUUsIDB4NDA1RiwgMHg0MDYwLCAweDQwNjEsIDB4NDA2MiwgMHg0MDYzLCAweDQwNjQsIDB4NDA2NSwKKyAgICAweDQwNjYsIDB4NDA2NywgMHg0MDY4LCAweDQwNjksIDB4NDA2QSwgMHg0MDZCLCAweDQwNkMsIDB4NDA2RCwKKyAgICAweDQwNkUsIDB4NDA2RiwgMHg0MDcwLCAweDQwNzEsIDB4NDA3MiwgMHg0MDczLCAweDQwNzQsIDB4NDA3NSwKKyAgICAweDQwNzYsIDB4NDA3NywgMHg0MDc4LCAweDQwNzksIDB4NDA3QSwgMHg0MDdCLCAweDQwN0MsIDB4NDA3RCwKKyAgICAweDQwN0UsIDB4NDA3RiwgMHg0MDgwLCAweDQwODEsIDB4NDA4MiwgMHg0MDgzLCAweDQwODQsIDB4NDA4NSwKKyAgICAweDQwODYsIDB4NDA4NywgMHg0MDg4LCAweDQwODksIDB4NDA4QSwgMHg0MDhCLCAweDQwOEMsIDB4NDA4RCwKKyAgICAweDQwOEUsIDB4NDA4RiwgMHg0MDkwLCAweDQwOTEsIDB4NDA5MiwgMHg0MDkzLCAweDQwOTQsIDB4NDA5NSwKKyAgICAweDQwOTYsIDB4NDA5NywgMHg0MDk4LCAweDQwOTksIDB4NDA5QSwgMHg0MDlCLCAweDQwOUMsIDB4NDA5RCwKKyAgICAweDQwOUUsIDB4NDA5RiwgMHg0MEEwLCAweDQwQTEsIDB4NDBBMiwgMHg0MEEzLCAweDQwQTQsIDB4NDBBNSwKKyAgICAweDQwQTYsIDB4NDBBNywgMHg0MEE4LCAweDQwQTksIDB4NDBBQSwgMHg0MEFCLCAweDQwQUMsIDB4NDBBRCwKKyAgICAweDQwQUUsIDB4NDBBRiwgMHg0MEIwLCAweDQwQjEsIDB4NDBCMiwgMHg0MEIzLCAweDQwQjQsIDB4NDBCNSwKKyAgICAweDQwQjYsIDB4NDBCNywgMHg0MEI4LCAweDQwQjksIDB4NDBCQSwgMHg0MEJCLCAweDQwQkMsIDB4NDBCRCwKKyAgICAweDQwQkUsIDB4NDBCRiwgMHg0MEMwLCAweDQwQzEsIDB4NDBDMiwgMHg0MEMzLCAweDQwQzQsIDB4NDBDNSwKKyAgICAweDQwQzYsIDB4NDBDNywgMHg0MEM4LCAweDQwQzksIDB4NDBDQSwgMHg0MENCLCAweDQwQ0MsIDB4NDBDRCwKKyAgICAweDQwQ0UsIDB4NDBDRiwgMHg0MEQwLCAweDQwRDEsIDB4NDBEMiwgMHg0MEQzLCAweDQwRDQsIDB4NDBENSwKKyAgICAweDQwRDYsIDB4NDBENywgMHg0MEQ4LCAweDQwRDksIDB4NDBEQSwgMHg0MERCLCAweDQwREMsIDB4NDBERCwKKyAgICAweDQwREUsIDB4NDBERiwgMHg0MEUwLCAweDQwRTEsIDB4NDBFMiwgMHg0MEUzLCAweDQwRTQsIDB4NDBFNSwKKyAgICAweDQwRTYsIDB4NDBFNywgMHg0MEU4LCAweDQwRTksIDB4NDBFQSwgMHg0MEVCLCAweDQwRUMsIDB4NDBFRCwKKyAgICAweDQwRUUsIDB4NDBFRiwgMHg0MEYwLCAweDQwRjEsIDB4NDBGMiwgMHg0MEYzLCAweDQwRjQsIDB4NDBGNSwKKyAgICAweDQwRjYsIDB4NDBGNywgMHg0MEY4LCAweDQwRjksIDB4NDBGQSwgMHg0MEZCLCAweDQwRkMsIDB4NDBGRCwKKyAgICAweDQwRkUsIDB4NDBGRiwgMHg0MTAwLCAweDQxMDEsIDB4NDEwMiwgMHg0MTAzLCAweDQxMDQsIDB4NDEwNSwKKyAgICAweDQxMDYsIDB4NDEwNywgMHg0MTA4LCAweDQxMDksIDB4NDEwQSwgMHg0MTBCLCAweDQxMEMsIDB4NDEwRCwKKyAgICAweDQxMEUsIDB4NDEwRiwgMHg0MTEwLCAweDQxMTEsIDB4NDExMiwgMHg0MTEzLCAweDQxMTQsIDB4NDExNSwKKyAgICAweDQxMTYsIDB4NDExNywgMHg0MTE4LCAweDQxMTksIDB4NDExQSwgMHg0MTFCLCAweDQxMUMsIDB4NDExRCwKKyAgICAweDQxMUUsIDB4NDExRiwgMHg0MTIwLCAweDQxMjEsIDB4NDEyMiwgMHg0MTIzLCAweDQxMjQsIDB4NDEyNSwKKyAgICAweDQxMjYsIDB4NDEyNywgMHg0MTI4LCAweDQxMjksIDB4NDEyQSwgMHg0MTJCLCAweDQxMkMsIDB4NDEyRCwKKyAgICAweDQxMkUsIDB4NDEyRiwgMHg0MTMwLCAweDQxMzEsIDB4NDEzMiwgMHg0MTMzLCAweDQxMzQsIDB4NDEzNSwKKyAgICAweDQxMzYsIDB4NDEzNywgMHg0MTM4LCAweDQxMzksIDB4NDEzQSwgMHg0MTNCLCAweDQxM0MsIDB4NDEzRCwKKyAgICAweDQxM0UsIDB4NDEzRiwgMHg0MTQwLCAweDQxNDEsIDB4NDE0MiwgMHg0MTQzLCAweDQxNDQsIDB4NDE0NSwKKyAgICAweDQxNDYsIDB4NDE0NywgMHg0MTQ4LCAweDQxNDksIDB4NDE0QSwgMHg0MTRCLCAweDQxNEMsIDB4NDE0RCwKKyAgICAweDQxNEUsIDB4NDE0RiwgMHg0MTUwLCAweDQxNTEsIDB4NDE1MiwgMHg0MTUzLCAweDQxNTQsIDB4NDE1NSwKKyAgICAweDQxNTYsIDB4NDE1NywgMHg0MTU4LCAweDQxNTksIDB4NDE1QSwgMHg0MTVCLCAweDQxNUMsIDB4NDE1RCwKKyAgICAweDQxNUUsIDB4NDE2MCwgMHg0MTYxLCAweDQxNjIsIDB4NDE2MywgMHg0MTY0LCAweDQxNjUsIDB4NDE2NiwKKyAgICAweDQxNjcsIDB4NDE2OCwgMHg0MTY5LCAweDQxNkEsIDB4NDE2QiwgMHg0MTZDLCAweDQxNkQsIDB4NDE2RSwKKyAgICAweDQxNkYsIDB4NDE3MCwgMHg0MTcxLCAweDQxNzIsIDB4NDE3MywgMHg0MTc0LCAweDQxNzUsIDB4NDE3NiwKKyAgICAweDQxNzcsIDB4NDE3OCwgMHg0MTc5LCAweDQxN0EsIDB4NDE3QiwgMHg0MTdDLCAweDQxN0QsIDB4NDE3RSwKKyAgICAweDQxN0YsIDB4NDE4MCwgMHg0MTgxLCAweDQxODIsIDB4NDE4MywgMHg0MTg0LCAweDQxODUsIDB4NDE4NiwKKyAgICAweDQxODcsIDB4NDE4OCwgMHg0MTg5LCAweDQxOEEsIDB4NDE4QiwgMHg0MThDLCAweDQxOEQsIDB4NDE4RSwKKyAgICAweDQxOEYsIDB4NDE5MCwgMHg0MTkxLCAweDQxOTIsIDB4NDE5MywgMHg0MTk0LCAweDQxOTUsIDB4NDE5NiwKKyAgICAweDQxOTcsIDB4NDE5OCwgMHg0MTk5LCAweDQxOUEsIDB4NDE5QiwgMHg0MTlDLCAweDQxOUQsIDB4NDE5RSwKKyAgICAweDQxOUYsIDB4NDFBMCwgMHg0MUExLCAweDQxQTIsIDB4NDFBMywgMHg0MUE0LCAweDQxQTUsIDB4NDFBNiwKKyAgICAweDQxQTcsIDB4NDFBOCwgMHg0MUE5LCAweDQxQUEsIDB4NDFBQiwgMHg0MUFDLCAweDQxQUQsIDB4NDFBRSwKKyAgICAweDQxQUYsIDB4NDFCMCwgMHg0MUIxLCAweDQxQjIsIDB4NDFCMywgMHg0MUI0LCAweDQxQjUsIDB4NDFCNiwKKyAgICAweDQxQjcsIDB4NDFCOCwgMHg0MUI5LCAweDQxQkEsIDB4NDFCQiwgMHg0MUJDLCAweDQxQkQsIDB4NDFCRSwKKyAgICAweDQxQkYsIDB4NDFDMCwgMHg0MUMxLCAweDQxQzIsIDB4NDFDMywgMHg0MUM0LCAweDQxQzUsIDB4NDFDNiwKKyAgICAweDQxQzcsIDB4NDFDOCwgMHg0MUM5LCAweDQxQ0EsIDB4NDFDQiwgMHg0MUNDLCAweDQxQ0QsIDB4NDFDRSwKKyAgICAweDQxQ0YsIDB4NDFEMCwgMHg0MUQxLCAweDQxRDIsIDB4NDFEMywgMHg0MUQ0LCAweDQxRDUsIDB4NDFENiwKKyAgICAweDQxRDcsIDB4NDFEOCwgMHg0MUQ5LCAweDQxREEsIDB4NDFEQiwgMHg0MURDLCAweDQxREQsIDB4NDFERSwKKyAgICAweDQxREYsIDB4NDFFMCwgMHg0MUUxLCAweDQxRTIsIDB4NDFFMywgMHg0MUU0LCAweDQxRTUsIDB4NDFFNiwKKyAgICAweDQxRTcsIDB4NDFFOCwgMHg0MUU5LCAweDQxRUEsIDB4NDFFQiwgMHg0MUVDLCAweDQxRUQsIDB4NDFFRSwKKyAgICAweDQxRUYsIDB4NDFGMCwgMHg0MUYxLCAweDQxRjIsIDB4NDFGMywgMHg0MUY0LCAweDQxRjUsIDB4NDFGNiwKKyAgICAweDQxRjcsIDB4NDFGOCwgMHg0MUY5LCAweDQxRkEsIDB4NDFGQiwgMHg0MUZDLCAweDQxRkQsIDB4NDFGRSwKKyAgICAweDQxRkYsIDB4NDIwMCwgMHg0MjAxLCAweDQyMDIsIDB4NDIwMywgMHg0MjA0LCAweDQyMDUsIDB4NDIwNiwKKyAgICAweDQyMDcsIDB4NDIwOCwgMHg0MjA5LCAweDQyMEEsIDB4NDIwQiwgMHg0MjBDLCAweDQyMEQsIDB4NDIwRSwKKyAgICAweDQyMEYsIDB4NDIxMCwgMHg0MjExLCAweDQyMTIsIDB4NDIxMywgMHg0MjE0LCAweDQyMTUsIDB4NDIxNiwKKyAgICAweDQyMTcsIDB4NDIxOCwgMHg0MjE5LCAweDQyMUEsIDB4NDIxQiwgMHg0MjFDLCAweDQyMUQsIDB4NDIxRSwKKyAgICAweDQyMUYsIDB4NDIyMCwgMHg0MjIxLCAweDQyMjIsIDB4NDIyMywgMHg0MjI0LCAweDQyMjUsIDB4NDIyNiwKKyAgICAweDQyMjcsIDB4NDIyOCwgMHg0MjI5LCAweDQyMkEsIDB4NDIyQiwgMHg0MjJDLCAweDQyMkQsIDB4NDIyRSwKKyAgICAweDQyMkYsIDB4NDIzMCwgMHg0MjMxLCAweDQyMzIsIDB4NDIzMywgMHg0MjM0LCAweDQyMzUsIDB4NDIzNiwKKyAgICAweDQyMzcsIDB4NDIzOCwgMHg0MjM5LCAweDQyM0EsIDB4NDIzQiwgMHg0MjNDLCAweDQyM0QsIDB4NDIzRSwKKyAgICAweDQyM0YsIDB4NDI0MCwgMHg0MjQxLCAweDQyNDIsIDB4NDI0MywgMHg0MjQ0LCAweDQyNDUsIDB4NDI0NiwKKyAgICAweDQyNDcsIDB4NDI0OCwgMHg0MjQ5LCAweDQyNEEsIDB4NDI0QiwgMHg0MjRDLCAweDQyNEQsIDB4NDI0RSwKKyAgICAweDQyNEYsIDB4NDI1MCwgMHg0MjUxLCAweDQyNTIsIDB4NDI1MywgMHg0MjU0LCAweDQyNTUsIDB4NDI1NiwKKyAgICAweDQyNTcsIDB4NDI1OCwgMHg0MjU5LCAweDQyNUEsIDB4NDI1QiwgMHg0MjVDLCAweDQyNUQsIDB4NDI1RSwKKyAgICAweDQyNUYsIDB4NDI2MCwgMHg0MjYxLCAweDQyNjIsIDB4NDI2MywgMHg0MjY0LCAweDQyNjUsIDB4NDI2NiwKKyAgICAweDQyNjcsIDB4NDI2OCwgMHg0MjY5LCAweDQyNkEsIDB4NDI2QiwgMHg0MjZDLCAweDQyNkQsIDB4NDI2RSwKKyAgICAweDQyNkYsIDB4NDI3MCwgMHg0MjcxLCAweDQyNzIsIDB4NDI3MywgMHg0Mjc0LCAweDQyNzUsIDB4NDI3NiwKKyAgICAweDQyNzcsIDB4NDI3OCwgMHg0Mjc5LCAweDQyN0EsIDB4NDI3QiwgMHg0MjdDLCAweDQyN0QsIDB4NDI3RSwKKyAgICAweDQyN0YsIDB4NDI4MCwgMHg0MjgxLCAweDQyODIsIDB4NDI4MywgMHg0Mjg0LCAweDQyODUsIDB4NDI4NiwKKyAgICAweDQyODcsIDB4NDI4OCwgMHg0Mjg5LCAweDQyOEEsIDB4NDI4QiwgMHg0MjhDLCAweDQyOEQsIDB4NDI4RSwKKyAgICAweDQyOEYsIDB4NDI5MCwgMHg0MjkxLCAweDQyOTIsIDB4NDI5MywgMHg0Mjk0LCAweDQyOTUsIDB4NDI5NiwKKyAgICAweDQyOTcsIDB4NDI5OCwgMHg0Mjk5LCAweDQyOUEsIDB4NDI5QiwgMHg0MjlDLCAweDQyOUQsIDB4NDI5RSwKKyAgICAweDQyOUYsIDB4NDJBMCwgMHg0MkExLCAweDQyQTIsIDB4NDJBMywgMHg0MkE0LCAweDQyQTUsIDB4NDJBNiwKKyAgICAweDQyQTcsIDB4NDJBOCwgMHg0MkE5LCAweDQyQUEsIDB4NDJBQiwgMHg0MkFDLCAweDQyQUQsIDB4NDJBRSwKKyAgICAweDQyQUYsIDB4NDJCMCwgMHg0MkIxLCAweDQyQjIsIDB4NDJCMywgMHg0MkI0LCAweDQyQjUsIDB4NDJCNiwKKyAgICAweDQyQjcsIDB4NDJCOCwgMHg0MkI5LCAweDQyQkEsIDB4NDJCQiwgMHg0MkJDLCAweDQyQkQsIDB4NDJCRSwKKyAgICAweDQyQkYsIDB4NDJDMCwgMHg0MkMxLCAweDQyQzIsIDB4NDJDMywgMHg0MkM0LCAweDQyQzUsIDB4NDJDNiwKKyAgICAweDQyQzcsIDB4NDJDOCwgMHg0MkM5LCAweDQyQ0EsIDB4NDJDQiwgMHg0MkNDLCAweDQyQ0QsIDB4NDJDRSwKKyAgICAweDQyQ0YsIDB4NDJEMCwgMHg0MkQxLCAweDQyRDIsIDB4NDJEMywgMHg0MkQ0LCAweDQyRDUsIDB4NDJENiwKKyAgICAweDQyRDcsIDB4NDJEOCwgMHg0MkQ5LCAweDQyREEsIDB4NDJEQiwgMHg0MkRDLCAweDQyREQsIDB4NDJERSwKKyAgICAweDQyREYsIDB4NDJFMCwgMHg0MkUxLCAweDQyRTIsIDB4NDJFMywgMHg0MkU0LCAweDQyRTUsIDB4NDJFNiwKKyAgICAweDQyRTcsIDB4NDJFOCwgMHg0MkU5LCAweDQyRUEsIDB4NDJFQiwgMHg0MkVDLCAweDQyRUQsIDB4NDJFRSwKKyAgICAweDQyRUYsIDB4NDJGMCwgMHg0MkYxLCAweDQyRjIsIDB4NDJGMywgMHg0MkY0LCAweDQyRjUsIDB4NDJGNiwKKyAgICAweDQyRjcsIDB4NDJGOCwgMHg0MkY5LCAweDQyRkEsIDB4NDJGQiwgMHg0MkZDLCAweDQyRkQsIDB4NDJGRSwKKyAgICAweDQyRkYsIDB4NDMwMCwgMHg0MzAxLCAweDQzMDIsIDB4NDMwMywgMHg0MzA0LCAweDQzMDUsIDB4NDMwNiwKKyAgICAweDQzMDcsIDB4NDMwOCwgMHg0MzA5LCAweDQzMEEsIDB4NDMwQiwgMHg0MzBDLCAweDQzMEQsIDB4NDMwRSwKKyAgICAweDQzMEYsIDB4NDMxMCwgMHg0MzExLCAweDQzMTIsIDB4NDMxMywgMHg0MzE0LCAweDQzMTUsIDB4NDMxNiwKKyAgICAweDQzMTcsIDB4NDMxOCwgMHg0MzE5LCAweDQzMUEsIDB4NDMxQiwgMHg0MzFDLCAweDQzMUQsIDB4NDMxRSwKKyAgICAweDQzMUYsIDB4NDMyMCwgMHg0MzIxLCAweDQzMjIsIDB4NDMyMywgMHg0MzI0LCAweDQzMjUsIDB4NDMyNiwKKyAgICAweDQzMjcsIDB4NDMyOCwgMHg0MzI5LCAweDQzMkEsIDB4NDMyQiwgMHg0MzJDLCAweDQzMkQsIDB4NDMyRSwKKyAgICAweDQzMkYsIDB4NDMzMCwgMHg0MzMxLCAweDQzMzIsIDB4NDMzMywgMHg0MzM0LCAweDQzMzUsIDB4NDMzNiwKKyAgICAweDQzMzgsIDB4NDMzOSwgMHg0MzNBLCAweDQzM0IsIDB4NDMzQywgMHg0MzNELCAweDQzM0UsIDB4NDMzRiwKKyAgICAweDQzNDAsIDB4NDM0MSwgMHg0MzQyLCAweDQzNDMsIDB4NDM0NCwgMHg0MzQ1LCAweDQzNDYsIDB4NDM0NywKKyAgICAweDQzNDgsIDB4NDM0OSwgMHg0MzRBLCAweDQzNEIsIDB4NDM0QywgMHg0MzRELCAweDQzNEUsIDB4NDM0RiwKKyAgICAweDQzNTAsIDB4NDM1MSwgMHg0MzUyLCAweDQzNTMsIDB4NDM1NCwgMHg0MzU1LCAweDQzNTYsIDB4NDM1NywKKyAgICAweDQzNTgsIDB4NDM1OSwgMHg0MzVBLCAweDQzNUIsIDB4NDM1QywgMHg0MzVELCAweDQzNUUsIDB4NDM1RiwKKyAgICAweDQzNjAsIDB4NDM2MSwgMHg0MzYyLCAweDQzNjMsIDB4NDM2NCwgMHg0MzY1LCAweDQzNjYsIDB4NDM2NywKKyAgICAweDQzNjgsIDB4NDM2OSwgMHg0MzZBLCAweDQzNkIsIDB4NDM2QywgMHg0MzZELCAweDQzNkUsIDB4NDM2RiwKKyAgICAweDQzNzAsIDB4NDM3MSwgMHg0MzcyLCAweDQzNzMsIDB4NDM3NCwgMHg0Mzc1LCAweDQzNzYsIDB4NDM3NywKKyAgICAweDQzNzgsIDB4NDM3OSwgMHg0MzdBLCAweDQzN0IsIDB4NDM3QywgMHg0MzdELCAweDQzN0UsIDB4NDM3RiwKKyAgICAweDQzODAsIDB4NDM4MSwgMHg0MzgyLCAweDQzODMsIDB4NDM4NCwgMHg0Mzg1LCAweDQzODYsIDB4NDM4NywKKyAgICAweDQzODgsIDB4NDM4OSwgMHg0MzhBLCAweDQzOEIsIDB4NDM4QywgMHg0MzhELCAweDQzOEUsIDB4NDM4RiwKKyAgICAweDQzOTAsIDB4NDM5MSwgMHg0MzkyLCAweDQzOTMsIDB4NDM5NCwgMHg0Mzk1LCAweDQzOTYsIDB4NDM5NywKKyAgICAweDQzOTgsIDB4NDM5OSwgMHg0MzlBLCAweDQzOUIsIDB4NDM5QywgMHg0MzlELCAweDQzOUUsIDB4NDM5RiwKKyAgICAweDQzQTAsIDB4NDNBMSwgMHg0M0EyLCAweDQzQTMsIDB4NDNBNCwgMHg0M0E1LCAweDQzQTYsIDB4NDNBNywKKyAgICAweDQzQTgsIDB4NDNBOSwgMHg0M0FBLCAweDQzQUIsIDB4NDNBRCwgMHg0M0FFLCAweDQzQUYsIDB4NDNCMCwKKyAgICAweDQzQjIsIDB4NDNCMywgMHg0M0I0LCAweDQzQjUsIDB4NDNCNiwgMHg0M0I3LCAweDQzQjgsIDB4NDNCOSwKKyAgICAweDQzQkEsIDB4NDNCQiwgMHg0M0JDLCAweDQzQkQsIDB4NDNCRSwgMHg0M0JGLCAweDQzQzAsIDB4NDNDMSwKKyAgICAweDQzQzIsIDB4NDNDMywgMHg0M0M0LCAweDQzQzUsIDB4NDNDNiwgMHg0M0M3LCAweDQzQzgsIDB4NDNDOSwKKyAgICAweDQzQ0EsIDB4NDNDQiwgMHg0M0NDLCAweDQzQ0QsIDB4NDNDRSwgMHg0M0NGLCAweDQzRDAsIDB4NDNEMSwKKyAgICAweDQzRDIsIDB4NDNEMywgMHg0M0Q0LCAweDQzRDUsIDB4NDNENiwgMHg0M0Q3LCAweDQzRDgsIDB4NDNEOSwKKyAgICAweDQzREEsIDB4NDNEQiwgMHg0M0RDLCAweDQzREUsIDB4NDNERiwgMHg0M0UwLCAweDQzRTEsIDB4NDNFMiwKKyAgICAweDQzRTMsIDB4NDNFNCwgMHg0M0U1LCAweDQzRTYsIDB4NDNFNywgMHg0M0U4LCAweDQzRTksIDB4NDNFQSwKKyAgICAweDQzRUIsIDB4NDNFQywgMHg0M0VELCAweDQzRUUsIDB4NDNFRiwgMHg0M0YwLCAweDQzRjEsIDB4NDNGMiwKKyAgICAweDQzRjMsIDB4NDNGNCwgMHg0M0Y1LCAweDQzRjYsIDB4NDNGNywgMHg0M0Y4LCAweDQzRjksIDB4NDNGQSwKKyAgICAweDQzRkIsIDB4NDNGQywgMHg0M0ZELCAweDQzRkUsIDB4NDNGRiwgMHg0NDAwLCAweDQ0MDEsIDB4NDQwMiwKKyAgICAweDQ0MDMsIDB4NDQwNCwgMHg0NDA1LCAweDQ0MDYsIDB4NDQwNywgMHg0NDA4LCAweDQ0MDksIDB4NDQwQSwKKyAgICAweDQ0MEIsIDB4NDQwQywgMHg0NDBELCAweDQ0MEUsIDB4NDQwRiwgMHg0NDEwLCAweDQ0MTEsIDB4NDQxMiwKKyAgICAweDQ0MTMsIDB4NDQxNCwgMHg0NDE1LCAweDQ0MTYsIDB4NDQxNywgMHg0NDE4LCAweDQ0MTksIDB4NDQxQSwKKyAgICAweDQ0MUIsIDB4NDQxQywgMHg0NDFELCAweDQ0MUUsIDB4NDQxRiwgMHg0NDIwLCAweDQ0MjEsIDB4NDQyMiwKKyAgICAweDQ0MjMsIDB4NDQyNCwgMHg0NDI1LCAweDQ0MjYsIDB4NDQyNywgMHg0NDI4LCAweDQ0MjksIDB4NDQyQSwKKyAgICAweDQ0MkIsIDB4NDQyQywgMHg0NDJELCAweDQ0MkUsIDB4NDQyRiwgMHg0NDMwLCAweDQ0MzEsIDB4NDQzMiwKKyAgICAweDQ0MzMsIDB4NDQzNCwgMHg0NDM1LCAweDQ0MzYsIDB4NDQzNywgMHg0NDM4LCAweDQ0MzksIDB4NDQzQSwKKyAgICAweDQ0M0IsIDB4NDQzQywgMHg0NDNELCAweDQ0M0UsIDB4NDQzRiwgMHg0NDQwLCAweDQ0NDEsIDB4NDQ0MiwKKyAgICAweDQ0NDMsIDB4NDQ0NCwgMHg0NDQ1LCAweDQ0NDYsIDB4NDQ0NywgMHg0NDQ4LCAweDQ0NDksIDB4NDQ0QSwKKyAgICAweDQ0NEIsIDB4NDQ0QywgMHg0NDRELCAweDQ0NEUsIDB4NDQ0RiwgMHg0NDUwLCAweDQ0NTEsIDB4NDQ1MiwKKyAgICAweDQ0NTMsIDB4NDQ1NCwgMHg0NDU1LCAweDQ0NTYsIDB4NDQ1NywgMHg0NDU4LCAweDQ0NTksIDB4NDQ1QSwKKyAgICAweDQ0NUIsIDB4NDQ1QywgMHg0NDVELCAweDQ0NUUsIDB4NDQ1RiwgMHg0NDYwLCAweDQ0NjEsIDB4NDQ2MiwKKyAgICAweDQ0NjMsIDB4NDQ2NCwgMHg0NDY1LCAweDQ0NjYsIDB4NDQ2NywgMHg0NDY4LCAweDQ0NjksIDB4NDQ2QSwKKyAgICAweDQ0NkIsIDB4NDQ2QywgMHg0NDZELCAweDQ0NkUsIDB4NDQ2RiwgMHg0NDcwLCAweDQ0NzEsIDB4NDQ3MiwKKyAgICAweDQ0NzMsIDB4NDQ3NCwgMHg0NDc1LCAweDQ0NzYsIDB4NDQ3NywgMHg0NDc4LCAweDQ0NzksIDB4NDQ3QSwKKyAgICAweDQ0N0IsIDB4NDQ3QywgMHg0NDdELCAweDQ0N0UsIDB4NDQ3RiwgMHg0NDgwLCAweDQ0ODEsIDB4NDQ4MiwKKyAgICAweDQ0ODMsIDB4NDQ4NCwgMHg0NDg1LCAweDQ0ODYsIDB4NDQ4NywgMHg0NDg4LCAweDQ0ODksIDB4NDQ4QSwKKyAgICAweDQ0OEIsIDB4NDQ4QywgMHg0NDhELCAweDQ0OEUsIDB4NDQ4RiwgMHg0NDkwLCAweDQ0OTEsIDB4NDQ5MiwKKyAgICAweDQ0OTMsIDB4NDQ5NCwgMHg0NDk1LCAweDQ0OTYsIDB4NDQ5NywgMHg0NDk4LCAweDQ0OTksIDB4NDQ5QSwKKyAgICAweDQ0OUIsIDB4NDQ5QywgMHg0NDlELCAweDQ0OUUsIDB4NDQ5RiwgMHg0NEEwLCAweDQ0QTEsIDB4NDRBMiwKKyAgICAweDQ0QTMsIDB4NDRBNCwgMHg0NEE1LCAweDQ0QTYsIDB4NDRBNywgMHg0NEE4LCAweDQ0QTksIDB4NDRBQSwKKyAgICAweDQ0QUIsIDB4NDRBQywgMHg0NEFELCAweDQ0QUUsIDB4NDRBRiwgMHg0NEIwLCAweDQ0QjEsIDB4NDRCMiwKKyAgICAweDQ0QjMsIDB4NDRCNCwgMHg0NEI1LCAweDQ0QjYsIDB4NDRCNywgMHg0NEI4LCAweDQ0QjksIDB4NDRCQSwKKyAgICAweDQ0QkIsIDB4NDRCQywgMHg0NEJELCAweDQ0QkUsIDB4NDRCRiwgMHg0NEMwLCAweDQ0QzEsIDB4NDRDMiwKKyAgICAweDQ0QzMsIDB4NDRDNCwgMHg0NEM1LCAweDQ0QzYsIDB4NDRDNywgMHg0NEM4LCAweDQ0QzksIDB4NDRDQSwKKyAgICAweDQ0Q0IsIDB4NDRDQywgMHg0NENELCAweDQ0Q0UsIDB4NDRDRiwgMHg0NEQwLCAweDQ0RDEsIDB4NDREMiwKKyAgICAweDQ0RDMsIDB4NDRENCwgMHg0NEQ1LCAweDQ0RDcsIDB4NDREOCwgMHg0NEQ5LCAweDQ0REEsIDB4NDREQiwKKyAgICAweDQ0REMsIDB4NDRERCwgMHg0NERFLCAweDQ0REYsIDB4NDRFMCwgMHg0NEUxLCAweDQ0RTIsIDB4NDRFMywKKyAgICAweDQ0RTQsIDB4NDRFNSwgMHg0NEU2LCAweDQ0RTcsIDB4NDRFOCwgMHg0NEU5LCAweDQ0RUEsIDB4NDRFQiwKKyAgICAweDQ0RUMsIDB4NDRFRCwgMHg0NEVFLCAweDQ0RUYsIDB4NDRGMCwgMHg0NEYxLCAweDQ0RjIsIDB4NDRGMywKKyAgICAweDQ0RjQsIDB4NDRGNSwgMHg0NEY2LCAweDQ0RjcsIDB4NDRGOCwgMHg0NEY5LCAweDQ0RkEsIDB4NDRGQiwKKyAgICAweDQ0RkMsIDB4NDRGRCwgMHg0NEZFLCAweDQ0RkYsIDB4NDUwMCwgMHg0NTAxLCAweDQ1MDIsIDB4NDUwMywKKyAgICAweDQ1MDQsIDB4NDUwNSwgMHg0NTA2LCAweDQ1MDcsIDB4NDUwOCwgMHg0NTA5LCAweDQ1MEEsIDB4NDUwQiwKKyAgICAweDQ1MEMsIDB4NDUwRCwgMHg0NTBFLCAweDQ1MEYsIDB4NDUxMCwgMHg0NTExLCAweDQ1MTIsIDB4NDUxMywKKyAgICAweDQ1MTQsIDB4NDUxNSwgMHg0NTE2LCAweDQ1MTcsIDB4NDUxOCwgMHg0NTE5LCAweDQ1MUEsIDB4NDUxQiwKKyAgICAweDQ1MUMsIDB4NDUxRCwgMHg0NTFFLCAweDQ1MUYsIDB4NDUyMCwgMHg0NTIxLCAweDQ1MjIsIDB4NDUyMywKKyAgICAweDQ1MjQsIDB4NDUyNSwgMHg0NTI2LCAweDQ1MjcsIDB4NDUyOCwgMHg0NTI5LCAweDQ1MkEsIDB4NDUyQiwKKyAgICAweDQ1MkMsIDB4NDUyRCwgMHg0NTJFLCAweDQ1MkYsIDB4NDUzMCwgMHg0NTMxLCAweDQ1MzIsIDB4NDUzMywKKyAgICAweDQ1MzQsIDB4NDUzNSwgMHg0NTM2LCAweDQ1MzcsIDB4NDUzOCwgMHg0NTM5LCAweDQ1M0EsIDB4NDUzQiwKKyAgICAweDQ1M0MsIDB4NDUzRCwgMHg0NTNFLCAweDQ1M0YsIDB4NDU0MCwgMHg0NTQxLCAweDQ1NDIsIDB4NDU0MywKKyAgICAweDQ1NDQsIDB4NDU0NSwgMHg0NTQ2LCAweDQ1NDcsIDB4NDU0OCwgMHg0NTQ5LCAweDQ1NEEsIDB4NDU0QiwKKyAgICAweDQ1NEMsIDB4NDU0RCwgMHg0NTRFLCAweDQ1NEYsIDB4NDU1MCwgMHg0NTUxLCAweDQ1NTIsIDB4NDU1MywKKyAgICAweDQ1NTQsIDB4NDU1NSwgMHg0NTU2LCAweDQ1NTcsIDB4NDU1OCwgMHg0NTU5LCAweDQ1NUEsIDB4NDU1QiwKKyAgICAweDQ1NUMsIDB4NDU1RCwgMHg0NTVFLCAweDQ1NUYsIDB4NDU2MCwgMHg0NTYxLCAweDQ1NjIsIDB4NDU2MywKKyAgICAweDQ1NjQsIDB4NDU2NSwgMHg0NTY2LCAweDQ1NjcsIDB4NDU2OCwgMHg0NTY5LCAweDQ1NkEsIDB4NDU2QiwKKyAgICAweDQ1NkMsIDB4NDU2RCwgMHg0NTZFLCAweDQ1NkYsIDB4NDU3MCwgMHg0NTcxLCAweDQ1NzIsIDB4NDU3MywKKyAgICAweDQ1NzQsIDB4NDU3NSwgMHg0NTc2LCAweDQ1NzcsIDB4NDU3OCwgMHg0NTc5LCAweDQ1N0EsIDB4NDU3QiwKKyAgICAweDQ1N0MsIDB4NDU3RCwgMHg0NTdFLCAweDQ1N0YsIDB4NDU4MCwgMHg0NTgxLCAweDQ1ODIsIDB4NDU4MywKKyAgICAweDQ1ODQsIDB4NDU4NSwgMHg0NTg2LCAweDQ1ODcsIDB4NDU4OCwgMHg0NTg5LCAweDQ1OEEsIDB4NDU4QiwKKyAgICAweDQ1OEMsIDB4NDU4RCwgMHg0NThFLCAweDQ1OEYsIDB4NDU5MCwgMHg0NTkxLCAweDQ1OTIsIDB4NDU5MywKKyAgICAweDQ1OTQsIDB4NDU5NSwgMHg0NTk2LCAweDQ1OTcsIDB4NDU5OCwgMHg0NTk5LCAweDQ1OUEsIDB4NDU5QiwKKyAgICAweDQ1OUMsIDB4NDU5RCwgMHg0NTlFLCAweDQ1OUYsIDB4NDVBMCwgMHg0NUExLCAweDQ1QTIsIDB4NDVBMywKKyAgICAweDQ1QTQsIDB4NDVBNSwgMHg0NUE2LCAweDQ1QTcsIDB4NDVBOCwgMHg0NUE5LCAweDQ1QUEsIDB4NDVBQiwKKyAgICAweDQ1QUMsIDB4NDVBRCwgMHg0NUFFLCAweDQ1QUYsIDB4NDVCMCwgMHg0NUIxLCAweDQ1QjIsIDB4NDVCMywKKyAgICAweDQ1QjQsIDB4NDVCNSwgMHg0NUI2LCAweDQ1QjcsIDB4NDVCOCwgMHg0NUI5LCAweDQ1QkEsIDB4NDVCQiwKKyAgICAweDQ1QkMsIDB4NDVCRCwgMHg0NUJFLCAweDQ1QkYsIDB4NDVDMCwgMHg0NUMxLCAweDQ1QzIsIDB4NDVDMywKKyAgICAweDQ1QzQsIDB4NDVDNSwgMHg0NUM2LCAweDQ1QzcsIDB4NDVDOCwgMHg0NUM5LCAweDQ1Q0EsIDB4NDVDQiwKKyAgICAweDQ1Q0MsIDB4NDVDRCwgMHg0NUNFLCAweDQ1Q0YsIDB4NDVEMCwgMHg0NUQxLCAweDQ1RDIsIDB4NDVEMywKKyAgICAweDQ1RDQsIDB4NDVENSwgMHg0NUQ2LCAweDQ1RDcsIDB4NDVEOCwgMHg0NUQ5LCAweDQ1REEsIDB4NDVEQiwKKyAgICAweDQ1REMsIDB4NDVERCwgMHg0NURFLCAweDQ1REYsIDB4NDVFMCwgMHg0NUUxLCAweDQ1RTIsIDB4NDVFMywKKyAgICAweDQ1RTQsIDB4NDVFNSwgMHg0NUU2LCAweDQ1RTcsIDB4NDVFOCwgMHg0NUU5LCAweDQ1RUEsIDB4NDVFQiwKKyAgICAweDQ1RUMsIDB4NDVFRCwgMHg0NUVFLCAweDQ1RUYsIDB4NDVGMCwgMHg0NUYxLCAweDQ1RjIsIDB4NDVGMywKKyAgICAweDQ1RjQsIDB4NDVGNSwgMHg0NUY2LCAweDQ1RjcsIDB4NDVGOCwgMHg0NUY5LCAweDQ1RkEsIDB4NDVGQiwKKyAgICAweDQ1RkMsIDB4NDVGRCwgMHg0NUZFLCAweDQ1RkYsIDB4NDYwMCwgMHg0NjAxLCAweDQ2MDIsIDB4NDYwMywKKyAgICAweDQ2MDQsIDB4NDYwNSwgMHg0NjA2LCAweDQ2MDcsIDB4NDYwOCwgMHg0NjA5LCAweDQ2MEEsIDB4NDYwQiwKKyAgICAweDQ2MEMsIDB4NDYwRCwgMHg0NjBFLCAweDQ2MEYsIDB4NDYxMCwgMHg0NjExLCAweDQ2MTIsIDB4NDYxMywKKyAgICAweDQ2MTQsIDB4NDYxNSwgMHg0NjE2LCAweDQ2MTcsIDB4NDYxOCwgMHg0NjE5LCAweDQ2MUEsIDB4NDYxQiwKKyAgICAweDQ2MUMsIDB4NDYxRCwgMHg0NjFFLCAweDQ2MUYsIDB4NDYyMCwgMHg0NjIxLCAweDQ2MjIsIDB4NDYyMywKKyAgICAweDQ2MjQsIDB4NDYyNSwgMHg0NjI2LCAweDQ2MjcsIDB4NDYyOCwgMHg0NjI5LCAweDQ2MkEsIDB4NDYyQiwKKyAgICAweDQ2MkMsIDB4NDYyRCwgMHg0NjJFLCAweDQ2MkYsIDB4NDYzMCwgMHg0NjMxLCAweDQ2MzIsIDB4NDYzMywKKyAgICAweDQ2MzQsIDB4NDYzNSwgMHg0NjM2LCAweDQ2MzcsIDB4NDYzOCwgMHg0NjM5LCAweDQ2M0EsIDB4NDYzQiwKKyAgICAweDQ2M0MsIDB4NDYzRCwgMHg0NjNFLCAweDQ2M0YsIDB4NDY0MCwgMHg0NjQxLCAweDQ2NDIsIDB4NDY0MywKKyAgICAweDQ2NDQsIDB4NDY0NSwgMHg0NjQ2LCAweDQ2NDcsIDB4NDY0OCwgMHg0NjQ5LCAweDQ2NEEsIDB4NDY0QiwKKyAgICAweDQ2NEQsIDB4NDY0RSwgMHg0NjRGLCAweDQ2NTAsIDB4NDY1MSwgMHg0NjUyLCAweDQ2NTMsIDB4NDY1NCwKKyAgICAweDQ2NTUsIDB4NDY1NiwgMHg0NjU3LCAweDQ2NTgsIDB4NDY1OSwgMHg0NjVBLCAweDQ2NUIsIDB4NDY1QywKKyAgICAweDQ2NUQsIDB4NDY1RSwgMHg0NjVGLCAweDQ2NjAsIDB4NDY2MiwgMHg0NjYzLCAweDQ2NjQsIDB4NDY2NSwKKyAgICAweDQ2NjYsIDB4NDY2NywgMHg0NjY4LCAweDQ2NjksIDB4NDY2QSwgMHg0NjZCLCAweDQ2NkMsIDB4NDY2RCwKKyAgICAweDQ2NkUsIDB4NDY2RiwgMHg0NjcwLCAweDQ2NzEsIDB4NDY3MiwgMHg0NjczLCAweDQ2NzQsIDB4NDY3NSwKKyAgICAweDQ2NzYsIDB4NDY3NywgMHg0Njc4LCAweDQ2NzksIDB4NDY3QSwgMHg0NjdCLCAweDQ2N0MsIDB4NDY3RCwKKyAgICAweDQ2N0UsIDB4NDY3RiwgMHg0NjgwLCAweDQ2ODEsIDB4NDY4MiwgMHg0NjgzLCAweDQ2ODQsIDB4NDY4NSwKKyAgICAweDQ2ODYsIDB4NDY4NywgMHg0Njg4LCAweDQ2ODksIDB4NDY4QSwgMHg0NjhCLCAweDQ2OEMsIDB4NDY4RCwKKyAgICAweDQ2OEUsIDB4NDY4RiwgMHg0NjkwLCAweDQ2OTEsIDB4NDY5MiwgMHg0NjkzLCAweDQ2OTQsIDB4NDY5NSwKKyAgICAweDQ2OTYsIDB4NDY5NywgMHg0Njk4LCAweDQ2OTksIDB4NDY5QSwgMHg0NjlCLCAweDQ2OUMsIDB4NDY5RCwKKyAgICAweDQ2OUUsIDB4NDY5RiwgMHg0NkEwLCAweDQ2QTEsIDB4NDZBMiwgMHg0NkEzLCAweDQ2QTQsIDB4NDZBNSwKKyAgICAweDQ2QTYsIDB4NDZBNywgMHg0NkE4LCAweDQ2QTksIDB4NDZBQSwgMHg0NkFCLCAweDQ2QUMsIDB4NDZBRCwKKyAgICAweDQ2QUUsIDB4NDZBRiwgMHg0NkIwLCAweDQ2QjEsIDB4NDZCMiwgMHg0NkIzLCAweDQ2QjQsIDB4NDZCNSwKKyAgICAweDQ2QjYsIDB4NDZCNywgMHg0NkI4LCAweDQ2QjksIDB4NDZCQSwgMHg0NkJCLCAweDQ2QkMsIDB4NDZCRCwKKyAgICAweDQ2QkUsIDB4NDZCRiwgMHg0NkMwLCAweDQ2QzEsIDB4NDZDMiwgMHg0NkMzLCAweDQ2QzQsIDB4NDZDNSwKKyAgICAweDQ2QzYsIDB4NDZDNywgMHg0NkM4LCAweDQ2QzksIDB4NDZDQSwgMHg0NkNCLCAweDQ2Q0MsIDB4NDZDRCwKKyAgICAweDQ2Q0UsIDB4NDZDRiwgMHg0NkQwLCAweDQ2RDEsIDB4NDZEMiwgMHg0NkQzLCAweDQ2RDQsIDB4NDZENSwKKyAgICAweDQ2RDYsIDB4NDZENywgMHg0NkQ4LCAweDQ2RDksIDB4NDZEQSwgMHg0NkRCLCAweDQ2REMsIDB4NDZERCwKKyAgICAweDQ2REUsIDB4NDZERiwgMHg0NkUwLCAweDQ2RTEsIDB4NDZFMiwgMHg0NkUzLCAweDQ2RTQsIDB4NDZFNSwKKyAgICAweDQ2RTYsIDB4NDZFNywgMHg0NkU4LCAweDQ2RTksIDB4NDZFQSwgMHg0NkVCLCAweDQ2RUMsIDB4NDZFRCwKKyAgICAweDQ2RUUsIDB4NDZFRiwgMHg0NkYwLCAweDQ2RjEsIDB4NDZGMiwgMHg0NkYzLCAweDQ2RjQsIDB4NDZGNSwKKyAgICAweDQ2RjYsIDB4NDZGNywgMHg0NkY4LCAweDQ2RjksIDB4NDZGQSwgMHg0NkZCLCAweDQ2RkMsIDB4NDZGRCwKKyAgICAweDQ2RkUsIDB4NDZGRiwgMHg0NzAwLCAweDQ3MDEsIDB4NDcwMiwgMHg0NzAzLCAweDQ3MDQsIDB4NDcwNSwKKyAgICAweDQ3MDYsIDB4NDcwNywgMHg0NzA4LCAweDQ3MDksIDB4NDcwQSwgMHg0NzBCLCAweDQ3MEMsIDB4NDcwRCwKKyAgICAweDQ3MEUsIDB4NDcwRiwgMHg0NzEwLCAweDQ3MTEsIDB4NDcxMiwgMHg0NzEzLCAweDQ3MTQsIDB4NDcxNSwKKyAgICAweDQ3MTYsIDB4NDcxNywgMHg0NzE4LCAweDQ3MTksIDB4NDcxQSwgMHg0NzFCLCAweDQ3MUMsIDB4NDcxRCwKKyAgICAweDQ3MUUsIDB4NDcxRiwgMHg0NzIwLCAweDQ3MjEsIDB4NDcyMiwgMHg0NzI0LCAweDQ3MjUsIDB4NDcyNiwKKyAgICAweDQ3MjcsIDB4NDcyOCwgMHg0NzJBLCAweDQ3MkIsIDB4NDcyQywgMHg0NzJELCAweDQ3MkUsIDB4NDcyRiwKKyAgICAweDQ3MzAsIDB4NDczMSwgMHg0NzMyLCAweDQ3MzMsIDB4NDczNCwgMHg0NzM1LCAweDQ3MzYsIDB4NDczNywKKyAgICAweDQ3MzgsIDB4NDczOSwgMHg0NzNBLCAweDQ3M0IsIDB4NDczQywgMHg0NzNELCAweDQ3M0UsIDB4NDczRiwKKyAgICAweDQ3NDAsIDB4NDc0MSwgMHg0NzQyLCAweDQ3NDMsIDB4NDc0NCwgMHg0NzQ1LCAweDQ3NDYsIDB4NDc0NywKKyAgICAweDQ3NDgsIDB4NDc0OSwgMHg0NzRBLCAweDQ3NEIsIDB4NDc0QywgMHg0NzRELCAweDQ3NEUsIDB4NDc0RiwKKyAgICAweDQ3NTAsIDB4NDc1MSwgMHg0NzUyLCAweDQ3NTMsIDB4NDc1NCwgMHg0NzU1LCAweDQ3NTYsIDB4NDc1NywKKyAgICAweDQ3NTgsIDB4NDc1OSwgMHg0NzVBLCAweDQ3NUIsIDB4NDc1QywgMHg0NzVELCAweDQ3NUUsIDB4NDc1RiwKKyAgICAweDQ3NjAsIDB4NDc2MSwgMHg0NzYyLCAweDQ3NjMsIDB4NDc2NCwgMHg0NzY1LCAweDQ3NjYsIDB4NDc2NywKKyAgICAweDQ3NjgsIDB4NDc2OSwgMHg0NzZBLCAweDQ3NkIsIDB4NDc2QywgMHg0NzZELCAweDQ3NkUsIDB4NDc2RiwKKyAgICAweDQ3NzAsIDB4NDc3MSwgMHg0NzcyLCAweDQ3NzMsIDB4NDc3NCwgMHg0Nzc1LCAweDQ3NzYsIDB4NDc3NywKKyAgICAweDQ3NzgsIDB4NDc3OSwgMHg0NzdBLCAweDQ3N0IsIDB4NDc3RCwgMHg0NzdFLCAweDQ3N0YsIDB4NDc4MCwKKyAgICAweDQ3ODEsIDB4NDc4MiwgMHg0NzgzLCAweDQ3ODQsIDB4NDc4NSwgMHg0Nzg2LCAweDQ3ODcsIDB4NDc4OCwKKyAgICAweDQ3ODksIDB4NDc4QSwgMHg0NzhCLCAweDQ3OEMsIDB4NDc4RSwgMHg0NzhGLCAweDQ3OTAsIDB4NDc5MSwKKyAgICAweDQ3OTIsIDB4NDc5MywgMHg0Nzk0LCAweDQ3OTUsIDB4NDc5NiwgMHg0Nzk3LCAweDQ3OTgsIDB4NDc5OSwKKyAgICAweDQ3OUEsIDB4NDc5QiwgMHg0NzlDLCAweDQ3OUQsIDB4NDc5RSwgMHg0NzlGLCAweDQ3QTAsIDB4NDdBMSwKKyAgICAweDQ3QTIsIDB4NDdBMywgMHg0N0E0LCAweDQ3QTUsIDB4NDdBNiwgMHg0N0E3LCAweDQ3QTgsIDB4NDdBOSwKKyAgICAweDQ3QUEsIDB4NDdBQiwgMHg0N0FDLCAweDQ3QUQsIDB4NDdBRSwgMHg0N0FGLCAweDQ3QjAsIDB4NDdCMSwKKyAgICAweDQ3QjIsIDB4NDdCMywgMHg0N0I0LCAweDQ3QjUsIDB4NDdCNiwgMHg0N0I3LCAweDQ3QjgsIDB4NDdCOSwKKyAgICAweDQ3QkEsIDB4NDdCQiwgMHg0N0JDLCAweDQ3QkQsIDB4NDdCRSwgMHg0N0JGLCAweDQ3QzAsIDB4NDdDMSwKKyAgICAweDQ3QzIsIDB4NDdDMywgMHg0N0M0LCAweDQ3QzUsIDB4NDdDNiwgMHg0N0M3LCAweDQ3QzgsIDB4NDdDOSwKKyAgICAweDQ3Q0EsIDB4NDdDQiwgMHg0N0NDLCAweDQ3Q0QsIDB4NDdDRSwgMHg0N0NGLCAweDQ3RDAsIDB4NDdEMSwKKyAgICAweDQ3RDIsIDB4NDdEMywgMHg0N0Q0LCAweDQ3RDUsIDB4NDdENiwgMHg0N0Q3LCAweDQ3RDgsIDB4NDdEOSwKKyAgICAweDQ3REEsIDB4NDdEQiwgMHg0N0RDLCAweDQ3REQsIDB4NDdERSwgMHg0N0RGLCAweDQ3RTAsIDB4NDdFMSwKKyAgICAweDQ3RTIsIDB4NDdFMywgMHg0N0U0LCAweDQ3RTUsIDB4NDdFNiwgMHg0N0U3LCAweDQ3RTgsIDB4NDdFOSwKKyAgICAweDQ3RUEsIDB4NDdFQiwgMHg0N0VDLCAweDQ3RUQsIDB4NDdFRSwgMHg0N0VGLCAweDQ3RjAsIDB4NDdGMSwKKyAgICAweDQ3RjIsIDB4NDdGMywgMHg0N0Y0LCAweDQ3RjUsIDB4NDdGNiwgMHg0N0Y3LCAweDQ3RjgsIDB4NDdGOSwKKyAgICAweDQ3RkEsIDB4NDdGQiwgMHg0N0ZDLCAweDQ3RkQsIDB4NDdGRSwgMHg0N0ZGLCAweDQ4MDAsIDB4NDgwMSwKKyAgICAweDQ4MDIsIDB4NDgwMywgMHg0ODA0LCAweDQ4MDUsIDB4NDgwNiwgMHg0ODA3LCAweDQ4MDgsIDB4NDgwOSwKKyAgICAweDQ4MEEsIDB4NDgwQiwgMHg0ODBDLCAweDQ4MEQsIDB4NDgwRSwgMHg0ODBGLCAweDQ4MTAsIDB4NDgxMSwKKyAgICAweDQ4MTIsIDB4NDgxMywgMHg0ODE0LCAweDQ4MTUsIDB4NDgxNiwgMHg0ODE3LCAweDQ4MTgsIDB4NDgxOSwKKyAgICAweDQ4MUEsIDB4NDgxQiwgMHg0ODFDLCAweDQ4MUQsIDB4NDgxRSwgMHg0ODFGLCAweDQ4MjAsIDB4NDgyMSwKKyAgICAweDQ4MjIsIDB4NDgyMywgMHg0ODI0LCAweDQ4MjUsIDB4NDgyNiwgMHg0ODI3LCAweDQ4MjgsIDB4NDgyOSwKKyAgICAweDQ4MkEsIDB4NDgyQiwgMHg0ODJDLCAweDQ4MkQsIDB4NDgyRSwgMHg0ODJGLCAweDQ4MzAsIDB4NDgzMSwKKyAgICAweDQ4MzIsIDB4NDgzMywgMHg0ODM0LCAweDQ4MzUsIDB4NDgzNiwgMHg0ODM3LCAweDQ4MzgsIDB4NDgzOSwKKyAgICAweDQ4M0EsIDB4NDgzQiwgMHg0ODNDLCAweDQ4M0QsIDB4NDgzRSwgMHg0ODNGLCAweDQ4NDAsIDB4NDg0MSwKKyAgICAweDQ4NDIsIDB4NDg0MywgMHg0ODQ0LCAweDQ4NDUsIDB4NDg0NiwgMHg0ODQ3LCAweDQ4NDgsIDB4NDg0OSwKKyAgICAweDQ4NEEsIDB4NDg0QiwgMHg0ODRDLCAweDQ4NEQsIDB4NDg0RSwgMHg0ODRGLCAweDQ4NTAsIDB4NDg1MSwKKyAgICAweDQ4NTIsIDB4NDg1MywgMHg0ODU0LCAweDQ4NTUsIDB4NDg1NiwgMHg0ODU3LCAweDQ4NTgsIDB4NDg1OSwKKyAgICAweDQ4NUEsIDB4NDg1QiwgMHg0ODVDLCAweDQ4NUQsIDB4NDg1RSwgMHg0ODVGLCAweDQ4NjAsIDB4NDg2MSwKKyAgICAweDQ4NjIsIDB4NDg2MywgMHg0ODY0LCAweDQ4NjUsIDB4NDg2NiwgMHg0ODY3LCAweDQ4NjgsIDB4NDg2OSwKKyAgICAweDQ4NkEsIDB4NDg2QiwgMHg0ODZDLCAweDQ4NkQsIDB4NDg2RSwgMHg0ODZGLCAweDQ4NzAsIDB4NDg3MSwKKyAgICAweDQ4NzIsIDB4NDg3MywgMHg0ODc0LCAweDQ4NzUsIDB4NDg3NiwgMHg0ODc3LCAweDQ4NzgsIDB4NDg3OSwKKyAgICAweDQ4N0EsIDB4NDg3QiwgMHg0ODdDLCAweDQ4N0QsIDB4NDg3RSwgMHg0ODdGLCAweDQ4ODAsIDB4NDg4MSwKKyAgICAweDQ4ODIsIDB4NDg4MywgMHg0ODg0LCAweDQ4ODUsIDB4NDg4NiwgMHg0ODg3LCAweDQ4ODgsIDB4NDg4OSwKKyAgICAweDQ4OEEsIDB4NDg4QiwgMHg0ODhDLCAweDQ4OEQsIDB4NDg4RSwgMHg0ODhGLCAweDQ4OTAsIDB4NDg5MSwKKyAgICAweDQ4OTIsIDB4NDg5MywgMHg0ODk0LCAweDQ4OTUsIDB4NDg5NiwgMHg0ODk3LCAweDQ4OTgsIDB4NDg5OSwKKyAgICAweDQ4OUEsIDB4NDg5QiwgMHg0ODlDLCAweDQ4OUQsIDB4NDg5RSwgMHg0ODlGLCAweDQ4QTAsIDB4NDhBMSwKKyAgICAweDQ4QTIsIDB4NDhBMywgMHg0OEE0LCAweDQ4QTUsIDB4NDhBNiwgMHg0OEE3LCAweDQ4QTgsIDB4NDhBOSwKKyAgICAweDQ4QUEsIDB4NDhBQiwgMHg0OEFDLCAweDQ4QUQsIDB4NDhBRSwgMHg0OEFGLCAweDQ4QjAsIDB4NDhCMSwKKyAgICAweDQ4QjIsIDB4NDhCMywgMHg0OEI0LCAweDQ4QjUsIDB4NDhCNiwgMHg0OEI3LCAweDQ4QjgsIDB4NDhCOSwKKyAgICAweDQ4QkEsIDB4NDhCQiwgMHg0OEJDLCAweDQ4QkQsIDB4NDhCRSwgMHg0OEJGLCAweDQ4QzAsIDB4NDhDMSwKKyAgICAweDQ4QzIsIDB4NDhDMywgMHg0OEM0LCAweDQ4QzUsIDB4NDhDNiwgMHg0OEM3LCAweDQ4QzgsIDB4NDhDOSwKKyAgICAweDQ4Q0EsIDB4NDhDQiwgMHg0OENDLCAweDQ4Q0QsIDB4NDhDRSwgMHg0OENGLCAweDQ4RDAsIDB4NDhEMSwKKyAgICAweDQ4RDIsIDB4NDhEMywgMHg0OEQ0LCAweDQ4RDUsIDB4NDhENiwgMHg0OEQ3LCAweDQ4RDgsIDB4NDhEOSwKKyAgICAweDQ4REEsIDB4NDhEQiwgMHg0OERDLCAweDQ4REQsIDB4NDhERSwgMHg0OERGLCAweDQ4RTAsIDB4NDhFMSwKKyAgICAweDQ4RTIsIDB4NDhFMywgMHg0OEU0LCAweDQ4RTUsIDB4NDhFNiwgMHg0OEU3LCAweDQ4RTgsIDB4NDhFOSwKKyAgICAweDQ4RUEsIDB4NDhFQiwgMHg0OEVDLCAweDQ4RUQsIDB4NDhFRSwgMHg0OEVGLCAweDQ4RjAsIDB4NDhGMSwKKyAgICAweDQ4RjIsIDB4NDhGMywgMHg0OEY0LCAweDQ4RjUsIDB4NDhGNiwgMHg0OEY3LCAweDQ4RjgsIDB4NDhGOSwKKyAgICAweDQ4RkEsIDB4NDhGQiwgMHg0OEZDLCAweDQ4RkQsIDB4NDhGRSwgMHg0OEZGLCAweDQ5MDAsIDB4NDkwMSwKKyAgICAweDQ5MDIsIDB4NDkwMywgMHg0OTA0LCAweDQ5MDUsIDB4NDkwNiwgMHg0OTA3LCAweDQ5MDgsIDB4NDkwOSwKKyAgICAweDQ5MEEsIDB4NDkwQiwgMHg0OTBDLCAweDQ5MEQsIDB4NDkwRSwgMHg0OTBGLCAweDQ5MTAsIDB4NDkxMSwKKyAgICAweDQ5MTIsIDB4NDkxMywgMHg0OTE0LCAweDQ5MTUsIDB4NDkxNiwgMHg0OTE3LCAweDQ5MTgsIDB4NDkxOSwKKyAgICAweDQ5MUEsIDB4NDkxQiwgMHg0OTFDLCAweDQ5MUQsIDB4NDkxRSwgMHg0OTFGLCAweDQ5MjAsIDB4NDkyMSwKKyAgICAweDQ5MjIsIDB4NDkyMywgMHg0OTI0LCAweDQ5MjUsIDB4NDkyNiwgMHg0OTI3LCAweDQ5MjgsIDB4NDkyOSwKKyAgICAweDQ5MkEsIDB4NDkyQiwgMHg0OTJDLCAweDQ5MkQsIDB4NDkyRSwgMHg0OTJGLCAweDQ5MzAsIDB4NDkzMSwKKyAgICAweDQ5MzIsIDB4NDkzMywgMHg0OTM0LCAweDQ5MzUsIDB4NDkzNiwgMHg0OTM3LCAweDQ5MzgsIDB4NDkzOSwKKyAgICAweDQ5M0EsIDB4NDkzQiwgMHg0OTNDLCAweDQ5M0QsIDB4NDkzRSwgMHg0OTNGLCAweDQ5NDAsIDB4NDk0MSwKKyAgICAweDQ5NDIsIDB4NDk0MywgMHg0OTQ0LCAweDQ5NDUsIDB4NDk0NiwgMHg0OTQ4LCAweDQ5NDksIDB4NDk0QSwKKyAgICAweDQ5NEIsIDB4NDk0QywgMHg0OTRELCAweDQ5NEUsIDB4NDk0RiwgMHg0OTUwLCAweDQ5NTEsIDB4NDk1MiwKKyAgICAweDQ5NTMsIDB4NDk1NCwgMHg0OTU1LCAweDQ5NTYsIDB4NDk1NywgMHg0OTU4LCAweDQ5NTksIDB4NDk1QSwKKyAgICAweDQ5NUIsIDB4NDk1QywgMHg0OTVELCAweDQ5NUUsIDB4NDk1RiwgMHg0OTYwLCAweDQ5NjEsIDB4NDk2MiwKKyAgICAweDQ5NjMsIDB4NDk2NCwgMHg0OTY1LCAweDQ5NjYsIDB4NDk2NywgMHg0OTY4LCAweDQ5NjksIDB4NDk2QSwKKyAgICAweDQ5NkIsIDB4NDk2QywgMHg0OTZELCAweDQ5NkUsIDB4NDk2RiwgMHg0OTcwLCAweDQ5NzEsIDB4NDk3MiwKKyAgICAweDQ5NzMsIDB4NDk3NCwgMHg0OTc1LCAweDQ5NzYsIDB4NDk3NywgMHg0OTc4LCAweDQ5NzksIDB4NDk3QiwKKyAgICAweDQ5N0MsIDB4NDk3RSwgMHg0OTdGLCAweDQ5ODAsIDB4NDk4MSwgMHg0OTg0LCAweDQ5ODcsIDB4NDk4OCwKKyAgICAweDQ5ODksIDB4NDk4QSwgMHg0OThCLCAweDQ5OEMsIDB4NDk4RCwgMHg0OThFLCAweDQ5OEYsIDB4NDk5MCwKKyAgICAweDQ5OTEsIDB4NDk5MiwgMHg0OTkzLCAweDQ5OTQsIDB4NDk5NSwgMHg0OTk2LCAweDQ5OTcsIDB4NDk5OCwKKyAgICAweDQ5OTksIDB4NDk5QSwgMHg0OTlDLCAweDQ5OUQsIDB4NDk5RSwgMHg0OUEwLCAweDQ5QTEsIDB4NDlBMiwKKyAgICAweDQ5QTMsIDB4NDlBNCwgMHg0OUE1LCAweDQ5QTYsIDB4NDlBNywgMHg0OUE4LCAweDQ5QTksIDB4NDlBQSwKKyAgICAweDQ5QUIsIDB4NDlBQywgMHg0OUFELCAweDQ5QUUsIDB4NDlBRiwgMHg0OUIwLCAweDQ5QjEsIDB4NDlCMiwKKyAgICAweDQ5QjMsIDB4NDlCNCwgMHg0OUI1LCAweDQ5QjgsIDB4NDlCOSwgMHg0OUJBLCAweDQ5QkIsIDB4NDlCQywKKyAgICAweDQ5QkQsIDB4NDlCRSwgMHg0OUJGLCAweDQ5QzAsIDB4NDlDMSwgMHg0OUMyLCAweDQ5QzMsIDB4NDlDNCwKKyAgICAweDQ5QzUsIDB4NDlDNiwgMHg0OUM3LCAweDQ5QzgsIDB4NDlDOSwgMHg0OUNBLCAweDQ5Q0IsIDB4NDlDQywKKyAgICAweDQ5Q0QsIDB4NDlDRSwgMHg0OUNGLCAweDQ5RDAsIDB4NDlEMSwgMHg0OUQyLCAweDQ5RDMsIDB4NDlENCwKKyAgICAweDQ5RDUsIDB4NDlENiwgMHg0OUQ3LCAweDQ5RDgsIDB4NDlEOSwgMHg0OURBLCAweDQ5REIsIDB4NDlEQywKKyAgICAweDQ5REQsIDB4NDlERSwgMHg0OURGLCAweDQ5RTAsIDB4NDlFMSwgMHg0OUUyLCAweDQ5RTMsIDB4NDlFNCwKKyAgICAweDQ5RTUsIDB4NDlFNiwgMHg0OUU3LCAweDQ5RTgsIDB4NDlFOSwgMHg0OUVBLCAweDQ5RUIsIDB4NDlFQywKKyAgICAweDQ5RUQsIDB4NDlFRSwgMHg0OUVGLCAweDQ5RjAsIDB4NDlGMSwgMHg0OUYyLCAweDQ5RjMsIDB4NDlGNCwKKyAgICAweDQ5RjUsIDB4NDlGNiwgMHg0OUY3LCAweDQ5RjgsIDB4NDlGOSwgMHg0OUZBLCAweDQ5RkIsIDB4NDlGQywKKyAgICAweDQ5RkQsIDB4NDlGRSwgMHg0OUZGLCAweDRBMDAsIDB4NEEwMSwgMHg0QTAyLCAweDRBMDMsIDB4NEEwNCwKKyAgICAweDRBMDUsIDB4NEEwNiwgMHg0QTA3LCAweDRBMDgsIDB4NEEwOSwgMHg0QTBBLCAweDRBMEIsIDB4NEEwQywKKyAgICAweDRBMEQsIDB4NEEwRSwgMHg0QTBGLCAweDRBMTAsIDB4NEExMSwgMHg0QTEyLCAweDRBMTMsIDB4NEExNCwKKyAgICAweDRBMTUsIDB4NEExNiwgMHg0QTE3LCAweDRBMTgsIDB4NEExOSwgMHg0QTFBLCAweDRBMUIsIDB4NEExQywKKyAgICAweDRBMUQsIDB4NEExRSwgMHg0QTFGLCAweDRBMjAsIDB4NEEyMSwgMHg0QTIyLCAweDRBMjMsIDB4NEEyNCwKKyAgICAweDRBMjUsIDB4NEEyNiwgMHg0QTI3LCAweDRBMjgsIDB4NEEyOSwgMHg0QTJBLCAweDRBMkIsIDB4NEEyQywKKyAgICAweDRBMkQsIDB4NEEyRSwgMHg0QTJGLCAweDRBMzAsIDB4NEEzMSwgMHg0QTMyLCAweDRBMzMsIDB4NEEzNCwKKyAgICAweDRBMzUsIDB4NEEzNiwgMHg0QTM3LCAweDRBMzgsIDB4NEEzOSwgMHg0QTNBLCAweDRBM0IsIDB4NEEzQywKKyAgICAweDRBM0QsIDB4NEEzRSwgMHg0QTNGLCAweDRBNDAsIDB4NEE0MSwgMHg0QTQyLCAweDRBNDMsIDB4NEE0NCwKKyAgICAweDRBNDUsIDB4NEE0NiwgMHg0QTQ3LCAweDRBNDgsIDB4NEE0OSwgMHg0QTRBLCAweDRBNEIsIDB4NEE0QywKKyAgICAweDRBNEQsIDB4NEE0RSwgMHg0QTRGLCAweDRBNTAsIDB4NEE1MSwgMHg0QTUyLCAweDRBNTMsIDB4NEE1NCwKKyAgICAweDRBNTUsIDB4NEE1NiwgMHg0QTU3LCAweDRBNTgsIDB4NEE1OSwgMHg0QTVBLCAweDRBNUIsIDB4NEE1QywKKyAgICAweDRBNUQsIDB4NEE1RSwgMHg0QTVGLCAweDRBNjAsIDB4NEE2MSwgMHg0QTYyLCAweDRBNjMsIDB4NEE2NCwKKyAgICAweDRBNjUsIDB4NEE2NiwgMHg0QTY3LCAweDRBNjgsIDB4NEE2OSwgMHg0QTZBLCAweDRBNkIsIDB4NEE2QywKKyAgICAweDRBNkQsIDB4NEE2RSwgMHg0QTZGLCAweDRBNzAsIDB4NEE3MSwgMHg0QTcyLCAweDRBNzMsIDB4NEE3NCwKKyAgICAweDRBNzUsIDB4NEE3NiwgMHg0QTc3LCAweDRBNzgsIDB4NEE3OSwgMHg0QTdBLCAweDRBN0IsIDB4NEE3QywKKyAgICAweDRBN0QsIDB4NEE3RSwgMHg0QTdGLCAweDRBODAsIDB4NEE4MSwgMHg0QTgyLCAweDRBODMsIDB4NEE4NCwKKyAgICAweDRBODUsIDB4NEE4NiwgMHg0QTg3LCAweDRBODgsIDB4NEE4OSwgMHg0QThBLCAweDRBOEIsIDB4NEE4QywKKyAgICAweDRBOEQsIDB4NEE4RSwgMHg0QThGLCAweDRBOTAsIDB4NEE5MSwgMHg0QTkyLCAweDRBOTMsIDB4NEE5NCwKKyAgICAweDRBOTUsIDB4NEE5NiwgMHg0QTk3LCAweDRBOTgsIDB4NEE5OSwgMHg0QTlBLCAweDRBOUIsIDB4NEE5QywKKyAgICAweDRBOUQsIDB4NEE5RSwgMHg0QTlGLCAweDRBQTAsIDB4NEFBMSwgMHg0QUEyLCAweDRBQTMsIDB4NEFBNCwKKyAgICAweDRBQTUsIDB4NEFBNiwgMHg0QUE3LCAweDRBQTgsIDB4NEFBOSwgMHg0QUFBLCAweDRBQUIsIDB4NEFBQywKKyAgICAweDRBQUQsIDB4NEFBRSwgMHg0QUFGLCAweDRBQjAsIDB4NEFCMSwgMHg0QUIyLCAweDRBQjMsIDB4NEFCNCwKKyAgICAweDRBQjUsIDB4NEFCNiwgMHg0QUI3LCAweDRBQjgsIDB4NEFCOSwgMHg0QUJBLCAweDRBQkIsIDB4NEFCQywKKyAgICAweDRBQkQsIDB4NEFCRSwgMHg0QUJGLCAweDRBQzAsIDB4NEFDMSwgMHg0QUMyLCAweDRBQzMsIDB4NEFDNCwKKyAgICAweDRBQzUsIDB4NEFDNiwgMHg0QUM3LCAweDRBQzgsIDB4NEFDOSwgMHg0QUNBLCAweDRBQ0IsIDB4NEFDQywKKyAgICAweDRBQ0QsIDB4NEFDRSwgMHg0QUNGLCAweDRBRDAsIDB4NEFEMSwgMHg0QUQyLCAweDRBRDMsIDB4NEFENCwKKyAgICAweDRBRDUsIDB4NEFENiwgMHg0QUQ3LCAweDRBRDgsIDB4NEFEOSwgMHg0QURBLCAweDRBREIsIDB4NEFEQywKKyAgICAweDRBREQsIDB4NEFERSwgMHg0QURGLCAweDRBRTAsIDB4NEFFMSwgMHg0QUUyLCAweDRBRTMsIDB4NEFFNCwKKyAgICAweDRBRTUsIDB4NEFFNiwgMHg0QUU3LCAweDRBRTgsIDB4NEFFOSwgMHg0QUVBLCAweDRBRUIsIDB4NEFFQywKKyAgICAweDRBRUQsIDB4NEFFRSwgMHg0QUVGLCAweDRBRjAsIDB4NEFGMSwgMHg0QUYyLCAweDRBRjMsIDB4NEFGNCwKKyAgICAweDRBRjUsIDB4NEFGNiwgMHg0QUY3LCAweDRBRjgsIDB4NEFGOSwgMHg0QUZBLCAweDRBRkIsIDB4NEFGQywKKyAgICAweDRBRkQsIDB4NEFGRSwgMHg0QUZGLCAweDRCMDAsIDB4NEIwMSwgMHg0QjAyLCAweDRCMDMsIDB4NEIwNCwKKyAgICAweDRCMDUsIDB4NEIwNiwgMHg0QjA3LCAweDRCMDgsIDB4NEIwOSwgMHg0QjBBLCAweDRCMEIsIDB4NEIwQywKKyAgICAweDRCMEQsIDB4NEIwRSwgMHg0QjBGLCAweDRCMTAsIDB4NEIxMSwgMHg0QjEyLCAweDRCMTMsIDB4NEIxNCwKKyAgICAweDRCMTUsIDB4NEIxNiwgMHg0QjE3LCAweDRCMTgsIDB4NEIxOSwgMHg0QjFBLCAweDRCMUIsIDB4NEIxQywKKyAgICAweDRCMUQsIDB4NEIxRSwgMHg0QjFGLCAweDRCMjAsIDB4NEIyMSwgMHg0QjIyLCAweDRCMjMsIDB4NEIyNCwKKyAgICAweDRCMjUsIDB4NEIyNiwgMHg0QjI3LCAweDRCMjgsIDB4NEIyOSwgMHg0QjJBLCAweDRCMkIsIDB4NEIyQywKKyAgICAweDRCMkQsIDB4NEIyRSwgMHg0QjJGLCAweDRCMzAsIDB4NEIzMSwgMHg0QjMyLCAweDRCMzMsIDB4NEIzNCwKKyAgICAweDRCMzUsIDB4NEIzNiwgMHg0QjM3LCAweDRCMzgsIDB4NEIzOSwgMHg0QjNBLCAweDRCM0IsIDB4NEIzQywKKyAgICAweDRCM0QsIDB4NEIzRSwgMHg0QjNGLCAweDRCNDAsIDB4NEI0MSwgMHg0QjQyLCAweDRCNDMsIDB4NEI0NCwKKyAgICAweDRCNDUsIDB4NEI0NiwgMHg0QjQ3LCAweDRCNDgsIDB4NEI0OSwgMHg0QjRBLCAweDRCNEIsIDB4NEI0QywKKyAgICAweDRCNEQsIDB4NEI0RSwgMHg0QjRGLCAweDRCNTAsIDB4NEI1MSwgMHg0QjUyLCAweDRCNTMsIDB4NEI1NCwKKyAgICAweDRCNTUsIDB4NEI1NiwgMHg0QjU3LCAweDRCNTgsIDB4NEI1OSwgMHg0QjVBLCAweDRCNUIsIDB4NEI1QywKKyAgICAweDRCNUQsIDB4NEI1RSwgMHg0QjVGLCAweDRCNjAsIDB4NEI2MSwgMHg0QjYyLCAweDRCNjMsIDB4NEI2NCwKKyAgICAweDRCNjUsIDB4NEI2NiwgMHg0QjY3LCAweDRCNjgsIDB4NEI2OSwgMHg0QjZBLCAweDRCNkIsIDB4NEI2QywKKyAgICAweDRCNkQsIDB4NEI2RSwgMHg0QjZGLCAweDRCNzAsIDB4NEI3MSwgMHg0QjcyLCAweDRCNzMsIDB4NEI3NCwKKyAgICAweDRCNzUsIDB4NEI3NiwgMHg0Qjc3LCAweDRCNzgsIDB4NEI3OSwgMHg0QjdBLCAweDRCN0IsIDB4NEI3QywKKyAgICAweDRCN0QsIDB4NEI3RSwgMHg0QjdGLCAweDRCODAsIDB4NEI4MSwgMHg0QjgyLCAweDRCODMsIDB4NEI4NCwKKyAgICAweDRCODUsIDB4NEI4NiwgMHg0Qjg3LCAweDRCODgsIDB4NEI4OSwgMHg0QjhBLCAweDRCOEIsIDB4NEI4QywKKyAgICAweDRCOEQsIDB4NEI4RSwgMHg0QjhGLCAweDRCOTAsIDB4NEI5MSwgMHg0QjkyLCAweDRCOTMsIDB4NEI5NCwKKyAgICAweDRCOTUsIDB4NEI5NiwgMHg0Qjk3LCAweDRCOTgsIDB4NEI5OSwgMHg0QjlBLCAweDRCOUIsIDB4NEI5QywKKyAgICAweDRCOUQsIDB4NEI5RSwgMHg0QjlGLCAweDRCQTAsIDB4NEJBMSwgMHg0QkEyLCAweDRCQTMsIDB4NEJBNCwKKyAgICAweDRCQTUsIDB4NEJBNiwgMHg0QkE3LCAweDRCQTgsIDB4NEJBOSwgMHg0QkFBLCAweDRCQUIsIDB4NEJBQywKKyAgICAweDRCQUQsIDB4NEJBRSwgMHg0QkFGLCAweDRCQjAsIDB4NEJCMSwgMHg0QkIyLCAweDRCQjMsIDB4NEJCNCwKKyAgICAweDRCQjUsIDB4NEJCNiwgMHg0QkI3LCAweDRCQjgsIDB4NEJCOSwgMHg0QkJBLCAweDRCQkIsIDB4NEJCQywKKyAgICAweDRCQkQsIDB4NEJCRSwgMHg0QkJGLCAweDRCQzAsIDB4NEJDMSwgMHg0QkMyLCAweDRCQzMsIDB4NEJDNCwKKyAgICAweDRCQzUsIDB4NEJDNiwgMHg0QkM3LCAweDRCQzgsIDB4NEJDOSwgMHg0QkNBLCAweDRCQ0IsIDB4NEJDQywKKyAgICAweDRCQ0QsIDB4NEJDRSwgMHg0QkNGLCAweDRCRDAsIDB4NEJEMSwgMHg0QkQyLCAweDRCRDMsIDB4NEJENCwKKyAgICAweDRCRDUsIDB4NEJENiwgMHg0QkQ3LCAweDRCRDgsIDB4NEJEOSwgMHg0QkRBLCAweDRCREIsIDB4NEJEQywKKyAgICAweDRCREQsIDB4NEJERSwgMHg0QkRGLCAweDRCRTAsIDB4NEJFMSwgMHg0QkUyLCAweDRCRTMsIDB4NEJFNCwKKyAgICAweDRCRTUsIDB4NEJFNiwgMHg0QkU3LCAweDRCRTgsIDB4NEJFOSwgMHg0QkVBLCAweDRCRUIsIDB4NEJFQywKKyAgICAweDRCRUQsIDB4NEJFRSwgMHg0QkVGLCAweDRCRjAsIDB4NEJGMSwgMHg0QkYyLCAweDRCRjMsIDB4NEJGNCwKKyAgICAweDRCRjUsIDB4NEJGNiwgMHg0QkY3LCAweDRCRjgsIDB4NEJGOSwgMHg0QkZBLCAweDRCRkIsIDB4NEJGQywKKyAgICAweDRCRkQsIDB4NEJGRSwgMHg0QkZGLCAweDRDMDAsIDB4NEMwMSwgMHg0QzAyLCAweDRDMDMsIDB4NEMwNCwKKyAgICAweDRDMDUsIDB4NEMwNiwgMHg0QzA3LCAweDRDMDgsIDB4NEMwOSwgMHg0QzBBLCAweDRDMEIsIDB4NEMwQywKKyAgICAweDRDMEQsIDB4NEMwRSwgMHg0QzBGLCAweDRDMTAsIDB4NEMxMSwgMHg0QzEyLCAweDRDMTMsIDB4NEMxNCwKKyAgICAweDRDMTUsIDB4NEMxNiwgMHg0QzE3LCAweDRDMTgsIDB4NEMxOSwgMHg0QzFBLCAweDRDMUIsIDB4NEMxQywKKyAgICAweDRDMUQsIDB4NEMxRSwgMHg0QzFGLCAweDRDMjAsIDB4NEMyMSwgMHg0QzIyLCAweDRDMjMsIDB4NEMyNCwKKyAgICAweDRDMjUsIDB4NEMyNiwgMHg0QzI3LCAweDRDMjgsIDB4NEMyOSwgMHg0QzJBLCAweDRDMkIsIDB4NEMyQywKKyAgICAweDRDMkQsIDB4NEMyRSwgMHg0QzJGLCAweDRDMzAsIDB4NEMzMSwgMHg0QzMyLCAweDRDMzMsIDB4NEMzNCwKKyAgICAweDRDMzUsIDB4NEMzNiwgMHg0QzM3LCAweDRDMzgsIDB4NEMzOSwgMHg0QzNBLCAweDRDM0IsIDB4NEMzQywKKyAgICAweDRDM0QsIDB4NEMzRSwgMHg0QzNGLCAweDRDNDAsIDB4NEM0MSwgMHg0QzQyLCAweDRDNDMsIDB4NEM0NCwKKyAgICAweDRDNDUsIDB4NEM0NiwgMHg0QzQ3LCAweDRDNDgsIDB4NEM0OSwgMHg0QzRBLCAweDRDNEIsIDB4NEM0QywKKyAgICAweDRDNEQsIDB4NEM0RSwgMHg0QzRGLCAweDRDNTAsIDB4NEM1MSwgMHg0QzUyLCAweDRDNTMsIDB4NEM1NCwKKyAgICAweDRDNTUsIDB4NEM1NiwgMHg0QzU3LCAweDRDNTgsIDB4NEM1OSwgMHg0QzVBLCAweDRDNUIsIDB4NEM1QywKKyAgICAweDRDNUQsIDB4NEM1RSwgMHg0QzVGLCAweDRDNjAsIDB4NEM2MSwgMHg0QzYyLCAweDRDNjMsIDB4NEM2NCwKKyAgICAweDRDNjUsIDB4NEM2NiwgMHg0QzY3LCAweDRDNjgsIDB4NEM2OSwgMHg0QzZBLCAweDRDNkIsIDB4NEM2QywKKyAgICAweDRDNkQsIDB4NEM2RSwgMHg0QzZGLCAweDRDNzAsIDB4NEM3MSwgMHg0QzcyLCAweDRDNzMsIDB4NEM3NCwKKyAgICAweDRDNzUsIDB4NEM3NiwgMHg0Qzc4LCAweDRDNzksIDB4NEM3QSwgMHg0QzdCLCAweDRDN0MsIDB4NEM3RCwKKyAgICAweDRDN0UsIDB4NEM3RiwgMHg0QzgwLCAweDRDODEsIDB4NEM4MiwgMHg0QzgzLCAweDRDODQsIDB4NEM4NSwKKyAgICAweDRDODYsIDB4NEM4NywgMHg0Qzg4LCAweDRDODksIDB4NEM4QSwgMHg0QzhCLCAweDRDOEMsIDB4NEM4RCwKKyAgICAweDRDOEUsIDB4NEM4RiwgMHg0QzkwLCAweDRDOTEsIDB4NEM5MiwgMHg0QzkzLCAweDRDOTQsIDB4NEM5NSwKKyAgICAweDRDOTYsIDB4NEM5NywgMHg0Qzk4LCAweDRDOTksIDB4NEM5QSwgMHg0QzlCLCAweDRDOUMsIDB4NEM5RCwKKyAgICAweDRDOUUsIDB4NENBNCwgMHg0Q0E1LCAweDRDQTYsIDB4NENBNywgMHg0Q0E4LCAweDRDQTksIDB4NENBQSwKKyAgICAweDRDQUIsIDB4NENBQywgMHg0Q0FELCAweDRDQUUsIDB4NENBRiwgMHg0Q0IwLCAweDRDQjEsIDB4NENCMiwKKyAgICAweDRDQjMsIDB4NENCNCwgMHg0Q0I1LCAweDRDQjYsIDB4NENCNywgMHg0Q0I4LCAweDRDQjksIDB4NENCQSwKKyAgICAweDRDQkIsIDB4NENCQywgMHg0Q0JELCAweDRDQkUsIDB4NENCRiwgMHg0Q0MwLCAweDRDQzEsIDB4NENDMiwKKyAgICAweDRDQzMsIDB4NENDNCwgMHg0Q0M1LCAweDRDQzYsIDB4NENDNywgMHg0Q0M4LCAweDRDQzksIDB4NENDQSwKKyAgICAweDRDQ0IsIDB4NENDQywgMHg0Q0NELCAweDRDQ0UsIDB4NENDRiwgMHg0Q0QwLCAweDRDRDEsIDB4NENEMiwKKyAgICAweDRDRDMsIDB4NENENCwgMHg0Q0Q1LCAweDRDRDYsIDB4NENENywgMHg0Q0Q4LCAweDRDRDksIDB4NENEQSwKKyAgICAweDRDREIsIDB4NENEQywgMHg0Q0RELCAweDRDREUsIDB4NENERiwgMHg0Q0UwLCAweDRDRTEsIDB4NENFMiwKKyAgICAweDRDRTMsIDB4NENFNCwgMHg0Q0U1LCAweDRDRTYsIDB4NENFNywgMHg0Q0U4LCAweDRDRTksIDB4NENFQSwKKyAgICAweDRDRUIsIDB4NENFQywgMHg0Q0VELCAweDRDRUUsIDB4NENFRiwgMHg0Q0YwLCAweDRDRjEsIDB4NENGMiwKKyAgICAweDRDRjMsIDB4NENGNCwgMHg0Q0Y1LCAweDRDRjYsIDB4NENGNywgMHg0Q0Y4LCAweDRDRjksIDB4NENGQSwKKyAgICAweDRDRkIsIDB4NENGQywgMHg0Q0ZELCAweDRDRkUsIDB4NENGRiwgMHg0RDAwLCAweDREMDEsIDB4NEQwMiwKKyAgICAweDREMDMsIDB4NEQwNCwgMHg0RDA1LCAweDREMDYsIDB4NEQwNywgMHg0RDA4LCAweDREMDksIDB4NEQwQSwKKyAgICAweDREMEIsIDB4NEQwQywgMHg0RDBELCAweDREMEUsIDB4NEQwRiwgMHg0RDEwLCAweDREMTEsIDB4NEQxMiwKKyAgICAweDREMUEsIDB4NEQxQiwgMHg0RDFDLCAweDREMUQsIDB4NEQxRSwgMHg0RDFGLCAweDREMjAsIDB4NEQyMSwKKyAgICAweDREMjIsIDB4NEQyMywgMHg0RDI0LCAweDREMjUsIDB4NEQyNiwgMHg0RDI3LCAweDREMjgsIDB4NEQyOSwKKyAgICAweDREMkEsIDB4NEQyQiwgMHg0RDJDLCAweDREMkQsIDB4NEQyRSwgMHg0RDJGLCAweDREMzAsIDB4NEQzMSwKKyAgICAweDREMzIsIDB4NEQzMywgMHg0RDM0LCAweDREMzUsIDB4NEQzNiwgMHg0RDM3LCAweDREMzgsIDB4NEQzOSwKKyAgICAweDREM0EsIDB4NEQzQiwgMHg0RDNDLCAweDREM0QsIDB4NEQzRSwgMHg0RDNGLCAweDRENDAsIDB4NEQ0MSwKKyAgICAweDRENDIsIDB4NEQ0MywgMHg0RDQ0LCAweDRENDUsIDB4NEQ0NiwgMHg0RDQ3LCAweDRENDgsIDB4NEQ0OSwKKyAgICAweDRENEEsIDB4NEQ0QiwgMHg0RDRDLCAweDRENEQsIDB4NEQ0RSwgMHg0RDRGLCAweDRENTAsIDB4NEQ1MSwKKyAgICAweDRENTIsIDB4NEQ1MywgMHg0RDU0LCAweDRENTUsIDB4NEQ1NiwgMHg0RDU3LCAweDRENTgsIDB4NEQ1OSwKKyAgICAweDRENUEsIDB4NEQ1QiwgMHg0RDVDLCAweDRENUQsIDB4NEQ1RSwgMHg0RDVGLCAweDRENjAsIDB4NEQ2MSwKKyAgICAweDRENjIsIDB4NEQ2MywgMHg0RDY0LCAweDRENjUsIDB4NEQ2NiwgMHg0RDY3LCAweDRENjgsIDB4NEQ2OSwKKyAgICAweDRENkEsIDB4NEQ2QiwgMHg0RDZDLCAweDRENkQsIDB4NEQ2RSwgMHg0RDZGLCAweDRENzAsIDB4NEQ3MSwKKyAgICAweDRENzIsIDB4NEQ3MywgMHg0RDc0LCAweDRENzUsIDB4NEQ3NiwgMHg0RDc3LCAweDRENzgsIDB4NEQ3OSwKKyAgICAweDREN0EsIDB4NEQ3QiwgMHg0RDdDLCAweDREN0QsIDB4NEQ3RSwgMHg0RDdGLCAweDREODAsIDB4NEQ4MSwKKyAgICAweDREODIsIDB4NEQ4MywgMHg0RDg0LCAweDREODUsIDB4NEQ4NiwgMHg0RDg3LCAweDREODgsIDB4NEQ4OSwKKyAgICAweDREOEEsIDB4NEQ4QiwgMHg0RDhDLCAweDREOEQsIDB4NEQ4RSwgMHg0RDhGLCAweDREOTAsIDB4NEQ5MSwKKyAgICAweDREOTIsIDB4NEQ5MywgMHg0RDk0LCAweDREOTUsIDB4NEQ5NiwgMHg0RDk3LCAweDREOTgsIDB4NEQ5OSwKKyAgICAweDREOUEsIDB4NEQ5QiwgMHg0RDlDLCAweDREOUQsIDB4NEQ5RSwgMHg0RDlGLCAweDREQTAsIDB4NERBMSwKKyAgICAweDREQTIsIDB4NERBMywgMHg0REE0LCAweDREQTUsIDB4NERBNiwgMHg0REE3LCAweDREQTgsIDB4NERBOSwKKyAgICAweDREQUEsIDB4NERBQiwgMHg0REFDLCAweDREQUQsIDB4NERBRiwgMHg0REIwLCAweDREQjEsIDB4NERCMiwKKyAgICAweDREQjMsIDB4NERCNCwgMHg0REI1LCAweDIwQUMsIDB4MDBBNSwgMHgyMEFDLCAweDAwMjQsIDB4MzAzRiwKKyAgICAweEEwMDAsIDB4QTAwMSwgMHhBMDAyLCAweEEwMDMsIDB4QTAwNCwgMHhBMDA1LCAweEEwMDYsIDB4QTAwNywKKyAgICAweEEwMDgsIDB4QTAwOSwgMHhBMDBBLCAweEEwMEIsIDB4QTAwQywgMHhBMDBELCAweEEwMEUsIDB4QTAwRiwKKyAgICAweEEwMTAsIDB4QTAxMSwgMHhBMDEyLCAweEEwMTMsIDB4QTAxNCwgMHhBMDE1LCAweEEwMTYsIDB4QTAxNywKKyAgICAweEEwMTgsIDB4QTAxOSwgMHhBMDFBLCAweEEwMUIsIDB4QTAxQywgMHhBMDFELCAweEEwMUUsIDB4QTAxRiwKKyAgICAweEEwMjAsIDB4QTAyMSwgMHhBMDIyLCAweEEwMjMsIDB4QTAyNCwgMHhBMDI1LCAweEEwMjYsIDB4QTAyNywKKyAgICAweEEwMjgsIDB4QTAyOSwgMHhBMDJBLCAweEEwMkIsIDB4QTAyQywgMHhBMDJELCAweEEwMkUsIDB4QTAyRiwKKyAgICAweEEwMzAsIDB4QTAzMSwgMHhBMDMyLCAweEEwMzMsIDB4QTAzNCwgMHhBMDM1LCAweEEwMzYsIDB4QTAzNywKKyAgICAweEEwMzgsIDB4QTAzOSwgMHhBMDNBLCAweEEwM0IsIDB4QTAzQywgMHhBMDNELCAweEEwM0UsIDB4QTAzRiwKKyAgICAweEEwNDAsIDB4QTA0MSwgMHhBMDQyLCAweEEwNDMsIDB4QTA0NCwgMHhBMDQ1LCAweEEwNDYsIDB4QTA0NywKKyAgICAweEEwNDgsIDB4QTA0OSwgMHhBMDRBLCAweEEwNEIsIDB4QTA0QywgMHhBMDRELCAweEEwNEUsIDB4QTA0RiwKKyAgICAweEEwNTAsIDB4QTA1MSwgMHhBMDUyLCAweEEwNTMsIDB4QTA1NCwgMHhBMDU1LCAweEEwNTYsIDB4QTA1NywKKyAgICAweEEwNTgsIDB4QTA1OSwgMHhBMDVBLCAweEEwNUIsIDB4QTA1QywgMHhBMDVELCAweEEwNUUsIDB4QTA1RiwKKyAgICAweEEwNjAsIDB4QTA2MSwgMHhBMDYyLCAweEEwNjMsIDB4QTA2NCwgMHhBMDY1LCAweEEwNjYsIDB4QTA2NywKKyAgICAweEEwNjgsIDB4QTA2OSwgMHhBMDZBLCAweEEwNkIsIDB4QTA2QywgMHhBMDZELCAweEEwNkUsIDB4QTA2RiwKKyAgICAweEEwNzAsIDB4QTA3MSwgMHhBMDcyLCAweEEwNzMsIDB4QTA3NCwgMHhBMDc1LCAweEEwNzYsIDB4QTA3NywKKyAgICAweEEwNzgsIDB4QTA3OSwgMHhBMDdBLCAweEEwN0IsIDB4QTA3QywgMHhBMDdELCAweEEwN0UsIDB4QTA3RiwKKyAgICAweEEwODAsIDB4QTA4MSwgMHhBMDgyLCAweEEwODMsIDB4QTA4NCwgMHhBMDg1LCAweEEwODYsIDB4QTA4NywKKyAgICAweEEwODgsIDB4QTA4OSwgMHhBMDhBLCAweEEwOEIsIDB4QTA4QywgMHhBMDhELCAweEEwOEUsIDB4QTA4RiwKKyAgICAweEEwOTAsIDB4QTA5MSwgMHhBMDkyLCAweEEwOTMsIDB4QTA5NCwgMHhBMDk1LCAweEEwOTYsIDB4QTA5NywKKyAgICAweEEwOTgsIDB4QTA5OSwgMHhBMDlBLCAweEEwOUIsIDB4QTA5QywgMHhBMDlELCAweEEwOUUsIDB4QTA5RiwKKyAgICAweEEwQTAsIDB4QTBBMSwgMHhBMEEyLCAweEEwQTMsIDB4QTBBNCwgMHhBMEE1LCAweEEwQTYsIDB4QTBBNywKKyAgICAweEEwQTgsIDB4QTBBOSwgMHhBMEFBLCAweEEwQUIsIDB4QTBBQywgMHhBMEFELCAweEEwQUUsIDB4QTBBRiwKKyAgICAweEEwQjAsIDB4QTBCMSwgMHhBMEIyLCAweEEwQjMsIDB4QTBCNCwgMHhBMEI1LCAweEEwQjYsIDB4QTBCNywKKyAgICAweEEwQjgsIDB4QTBCOSwgMHhBMEJBLCAweEEwQkIsIDB4QTBCQywgMHhBMEJELCAweEEwQkUsIDB4QTBCRiwKKyAgICAweEEwQzAsIDB4QTBDMSwgMHhBMEMyLCAweEEwQzMsIDB4QTBDNCwgMHhBMEM1LCAweEEwQzYsIDB4QTBDNywKKyAgICAweEEwQzgsIDB4QTBDOSwgMHhBMENBLCAweEEwQ0IsIDB4QTBDQywgMHhBMENELCAweEEwQ0UsIDB4QTBDRiwKKyAgICAweEEwRDAsIDB4QTBEMSwgMHhBMEQyLCAweEEwRDMsIDB4QTBENCwgMHhBMEQ1LCAweEEwRDYsIDB4QTBENywKKyAgICAweEEwRDgsIDB4QTBEOSwgMHhBMERBLCAweEEwREIsIDB4QTBEQywgMHhBMERELCAweEEwREUsIDB4QTBERiwKKyAgICAweEEwRTAsIDB4QTBFMSwgMHhBMEUyLCAweEEwRTMsIDB4QTBFNCwgMHhBMEU1LCAweEEwRTYsIDB4QTBFNywKKyAgICAweEEwRTgsIDB4QTBFOSwgMHhBMEVBLCAweEEwRUIsIDB4QTBFQywgMHhBMEVELCAweEEwRUUsIDB4QTBFRiwKKyAgICAweEEwRjAsIDB4QTBGMSwgMHhBMEYyLCAweEEwRjMsIDB4QTBGNCwgMHhBMEY1LCAweEEwRjYsIDB4QTBGNywKKyAgICAweEEwRjgsIDB4QTBGOSwgMHhBMEZBLCAweEEwRkIsIDB4QTBGQywgMHhBMEZELCAweEEwRkUsIDB4QTBGRiwKKyAgICAweEExMDAsIDB4QTEwMSwgMHhBMTAyLCAweEExMDMsIDB4QTEwNCwgMHhBMTA1LCAweEExMDYsIDB4QTEwNywKKyAgICAweEExMDgsIDB4QTEwOSwgMHhBMTBBLCAweEExMEIsIDB4QTEwQywgMHhBMTBELCAweEExMEUsIDB4QTEwRiwKKyAgICAweEExMTAsIDB4QTExMSwgMHhBMTEyLCAweEExMTMsIDB4QTExNCwgMHhBMTE1LCAweEExMTYsIDB4QTExNywKKyAgICAweEExMTgsIDB4QTExOSwgMHhBMTFBLCAweEExMUIsIDB4QTExQywgMHhBMTFELCAweEExMUUsIDB4QTExRiwKKyAgICAweEExMjAsIDB4QTEyMSwgMHhBMTIyLCAweEExMjMsIDB4QTEyNCwgMHhBMTI1LCAweEExMjYsIDB4QTEyNywKKyAgICAweEExMjgsIDB4QTEyOSwgMHhBMTJBLCAweEExMkIsIDB4QTEyQywgMHhBMTJELCAweEExMkUsIDB4QTEyRiwKKyAgICAweEExMzAsIDB4QTEzMSwgMHhBMTMyLCAweEExMzMsIDB4QTEzNCwgMHhBMTM1LCAweEExMzYsIDB4QTEzNywKKyAgICAweEExMzgsIDB4QTEzOSwgMHhBMTNBLCAweEExM0IsIDB4QTEzQywgMHhBMTNELCAweEExM0UsIDB4QTEzRiwKKyAgICAweEExNDAsIDB4QTE0MSwgMHhBMTQyLCAweEExNDMsIDB4QTE0NCwgMHhBMTQ1LCAweEExNDYsIDB4QTE0NywKKyAgICAweEExNDgsIDB4QTE0OSwgMHhBMTRBLCAweEExNEIsIDB4QTE0QywgMHhBMTRELCAweEExNEUsIDB4QTE0RiwKKyAgICAweEExNTAsIDB4QTE1MSwgMHhBMTUyLCAweEExNTMsIDB4QTE1NCwgMHhBMTU1LCAweEExNTYsIDB4QTE1NywKKyAgICAweEExNTgsIDB4QTE1OSwgMHhBMTVBLCAweEExNUIsIDB4QTE1QywgMHhBMTVELCAweEExNUUsIDB4QTE1RiwKKyAgICAweEExNjAsIDB4QTE2MSwgMHhBMTYyLCAweEExNjMsIDB4QTE2NCwgMHhBMTY1LCAweEExNjYsIDB4QTE2NywKKyAgICAweEExNjgsIDB4QTE2OSwgMHhBMTZBLCAweEExNkIsIDB4QTE2QywgMHhBMTZELCAweEExNkUsIDB4QTE2RiwKKyAgICAweEExNzAsIDB4QTE3MSwgMHhBMTcyLCAweEExNzMsIDB4QTE3NCwgMHhBMTc1LCAweEExNzYsIDB4QTE3NywKKyAgICAweEExNzgsIDB4QTE3OSwgMHhBMTdBLCAweEExN0IsIDB4QTE3QywgMHhBMTdELCAweEExN0UsIDB4QTE3RiwKKyAgICAweEExODAsIDB4QTE4MSwgMHhBMTgyLCAweEExODMsIDB4QTE4NCwgMHhBMTg1LCAweEExODYsIDB4QTE4NywKKyAgICAweEExODgsIDB4QTE4OSwgMHhBMThBLCAweEExOEIsIDB4QTE4QywgMHhBMThELCAweEExOEUsIDB4QTE4RiwKKyAgICAweEExOTAsIDB4QTE5MSwgMHhBMTkyLCAweEExOTMsIDB4QTE5NCwgMHhBMTk1LCAweEExOTYsIDB4QTE5NywKKyAgICAweEExOTgsIDB4QTE5OSwgMHhBMTlBLCAweEExOUIsIDB4QTE5QywgMHhBMTlELCAweEExOUUsIDB4QTE5RiwKKyAgICAweEExQTAsIDB4QTFBMSwgMHhBMUEyLCAweEExQTMsIDB4QTFBNCwgMHhBMUE1LCAweEExQTYsIDB4QTFBNywKKyAgICAweEExQTgsIDB4QTFBOSwgMHhBMUFBLCAweEExQUIsIDB4QTFBQywgMHhBMUFELCAweEExQUUsIDB4QTFBRiwKKyAgICAweEExQjAsIDB4QTFCMSwgMHhBMUIyLCAweEExQjMsIDB4QTFCNCwgMHhBMUI1LCAweEExQjYsIDB4QTFCNywKKyAgICAweEExQjgsIDB4QTFCOSwgMHhBMUJBLCAweEExQkIsIDB4QTFCQywgMHhBMUJELCAweEExQkUsIDB4QTFCRiwKKyAgICAweEExQzAsIDB4QTFDMSwgMHhBMUMyLCAweEExQzMsIDB4QTFDNCwgMHhBMUM1LCAweEExQzYsIDB4QTFDNywKKyAgICAweEExQzgsIDB4QTFDOSwgMHhBMUNBLCAweEExQ0IsIDB4QTFDQywgMHhBMUNELCAweEExQ0UsIDB4QTFDRiwKKyAgICAweEExRDAsIDB4QTFEMSwgMHhBMUQyLCAweEExRDMsIDB4QTFENCwgMHhBMUQ1LCAweEExRDYsIDB4QTFENywKKyAgICAweEExRDgsIDB4QTFEOSwgMHhBMURBLCAweEExREIsIDB4QTFEQywgMHhBMURELCAweEExREUsIDB4QTFERiwKKyAgICAweEExRTAsIDB4QTFFMSwgMHhBMUUyLCAweEExRTMsIDB4QTFFNCwgMHhBMUU1LCAweEExRTYsIDB4QTFFNywKKyAgICAweEExRTgsIDB4QTFFOSwgMHhBMUVBLCAweEExRUIsIDB4QTFFQywgMHhBMUVELCAweEExRUUsIDB4QTFFRiwKKyAgICAweEExRjAsIDB4QTFGMSwgMHhBMUYyLCAweEExRjMsIDB4QTFGNCwgMHhBMUY1LCAweEExRjYsIDB4QTFGNywKKyAgICAweEExRjgsIDB4QTFGOSwgMHhBMUZBLCAweEExRkIsIDB4QTFGQywgMHhBMUZELCAweEExRkUsIDB4QTFGRiwKKyAgICAweEEyMDAsIDB4QTIwMSwgMHhBMjAyLCAweEEyMDMsIDB4QTIwNCwgMHhBMjA1LCAweEEyMDYsIDB4QTIwNywKKyAgICAweEEyMDgsIDB4QTIwOSwgMHhBMjBBLCAweEEyMEIsIDB4QTIwQywgMHhBMjBELCAweEEyMEUsIDB4QTIwRiwKKyAgICAweEEyMTAsIDB4QTIxMSwgMHhBMjEyLCAweEEyMTMsIDB4QTIxNCwgMHhBMjE1LCAweEEyMTYsIDB4QTIxNywKKyAgICAweEEyMTgsIDB4QTIxOSwgMHhBMjFBLCAweEEyMUIsIDB4QTIxQywgMHhBMjFELCAweEEyMUUsIDB4QTIxRiwKKyAgICAweEEyMjAsIDB4QTIyMSwgMHhBMjIyLCAweEEyMjMsIDB4QTIyNCwgMHhBMjI1LCAweEEyMjYsIDB4QTIyNywKKyAgICAweEEyMjgsIDB4QTIyOSwgMHhBMjJBLCAweEEyMkIsIDB4QTIyQywgMHhBMjJELCAweEEyMkUsIDB4QTIyRiwKKyAgICAweEEyMzAsIDB4QTIzMSwgMHhBMjMyLCAweEEyMzMsIDB4QTIzNCwgMHhBMjM1LCAweEEyMzYsIDB4QTIzNywKKyAgICAweEEyMzgsIDB4QTIzOSwgMHhBMjNBLCAweEEyM0IsIDB4QTIzQywgMHhBMjNELCAweEEyM0UsIDB4QTIzRiwKKyAgICAweEEyNDAsIDB4QTI0MSwgMHhBMjQyLCAweEEyNDMsIDB4QTI0NCwgMHhBMjQ1LCAweEEyNDYsIDB4QTI0NywKKyAgICAweEEyNDgsIDB4QTI0OSwgMHhBMjRBLCAweEEyNEIsIDB4QTI0QywgMHhBMjRELCAweEEyNEUsIDB4QTI0RiwKKyAgICAweEEyNTAsIDB4QTI1MSwgMHhBMjUyLCAweEEyNTMsIDB4QTI1NCwgMHhBMjU1LCAweEEyNTYsIDB4QTI1NywKKyAgICAweEEyNTgsIDB4QTI1OSwgMHhBMjVBLCAweEEyNUIsIDB4QTI1QywgMHhBMjVELCAweEEyNUUsIDB4QTI1RiwKKyAgICAweEEyNjAsIDB4QTI2MSwgMHhBMjYyLCAweEEyNjMsIDB4QTI2NCwgMHhBMjY1LCAweEEyNjYsIDB4QTI2NywKKyAgICAweEEyNjgsIDB4QTI2OSwgMHhBMjZBLCAweEEyNkIsIDB4QTI2QywgMHhBMjZELCAweEEyNkUsIDB4QTI2RiwKKyAgICAweEEyNzAsIDB4QTI3MSwgMHhBMjcyLCAweEEyNzMsIDB4QTI3NCwgMHhBMjc1LCAweEEyNzYsIDB4QTI3NywKKyAgICAweEEyNzgsIDB4QTI3OSwgMHhBMjdBLCAweEEyN0IsIDB4QTI3QywgMHhBMjdELCAweEEyN0UsIDB4QTI3RiwKKyAgICAweEEyODAsIDB4QTI4MSwgMHhBMjgyLCAweEEyODMsIDB4QTI4NCwgMHhBMjg1LCAweEEyODYsIDB4QTI4NywKKyAgICAweEEyODgsIDB4QTI4OSwgMHhBMjhBLCAweEEyOEIsIDB4QTI4QywgMHhBMjhELCAweEEyOEUsIDB4QTI4RiwKKyAgICAweEEyOTAsIDB4QTI5MSwgMHhBMjkyLCAweEEyOTMsIDB4QTI5NCwgMHhBMjk1LCAweEEyOTYsIDB4QTI5NywKKyAgICAweEEyOTgsIDB4QTI5OSwgMHhBMjlBLCAweEEyOUIsIDB4QTI5QywgMHhBMjlELCAweEEyOUUsIDB4QTI5RiwKKyAgICAweEEyQTAsIDB4QTJBMSwgMHhBMkEyLCAweEEyQTMsIDB4QTJBNCwgMHhBMkE1LCAweEEyQTYsIDB4QTJBNywKKyAgICAweEEyQTgsIDB4QTJBOSwgMHhBMkFBLCAweEEyQUIsIDB4QTJBQywgMHhBMkFELCAweEEyQUUsIDB4QTJBRiwKKyAgICAweEEyQjAsIDB4QTJCMSwgMHhBMkIyLCAweEEyQjMsIDB4QTJCNCwgMHhBMkI1LCAweEEyQjYsIDB4QTJCNywKKyAgICAweEEyQjgsIDB4QTJCOSwgMHhBMkJBLCAweEEyQkIsIDB4QTJCQywgMHhBMkJELCAweEEyQkUsIDB4QTJCRiwKKyAgICAweEEyQzAsIDB4QTJDMSwgMHhBMkMyLCAweEEyQzMsIDB4QTJDNCwgMHhBMkM1LCAweEEyQzYsIDB4QTJDNywKKyAgICAweEEyQzgsIDB4QTJDOSwgMHhBMkNBLCAweEEyQ0IsIDB4QTJDQywgMHhBMkNELCAweEEyQ0UsIDB4QTJDRiwKKyAgICAweEEyRDAsIDB4QTJEMSwgMHhBMkQyLCAweEEyRDMsIDB4QTJENCwgMHhBMkQ1LCAweEEyRDYsIDB4QTJENywKKyAgICAweEEyRDgsIDB4QTJEOSwgMHhBMkRBLCAweEEyREIsIDB4QTJEQywgMHhBMkRELCAweEEyREUsIDB4QTJERiwKKyAgICAweEEyRTAsIDB4QTJFMSwgMHhBMkUyLCAweEEyRTMsIDB4QTJFNCwgMHhBMkU1LCAweEEyRTYsIDB4QTJFNywKKyAgICAweEEyRTgsIDB4QTJFOSwgMHhBMkVBLCAweEEyRUIsIDB4QTJFQywgMHhBMkVELCAweEEyRUUsIDB4QTJFRiwKKyAgICAweEEyRjAsIDB4QTJGMSwgMHhBMkYyLCAweEEyRjMsIDB4QTJGNCwgMHhBMkY1LCAweEEyRjYsIDB4QTJGNywKKyAgICAweEEyRjgsIDB4QTJGOSwgMHhBMkZBLCAweEEyRkIsIDB4QTJGQywgMHhBMkZELCAweEEyRkUsIDB4QTJGRiwKKyAgICAweEEzMDAsIDB4QTMwMSwgMHhBMzAyLCAweEEzMDMsIDB4QTMwNCwgMHhBMzA1LCAweEEzMDYsIDB4QTMwNywKKyAgICAweEEzMDgsIDB4QTMwOSwgMHhBMzBBLCAweEEzMEIsIDB4QTMwQywgMHhBMzBELCAweEEzMEUsIDB4QTMwRiwKKyAgICAweEEzMTAsIDB4QTMxMSwgMHhBMzEyLCAweEEzMTMsIDB4QTMxNCwgMHhBMzE1LCAweEEzMTYsIDB4QTMxNywKKyAgICAweEEzMTgsIDB4QTMxOSwgMHhBMzFBLCAweEEzMUIsIDB4QTMxQywgMHhBMzFELCAweEEzMUUsIDB4QTMxRiwKKyAgICAweEEzMjAsIDB4QTMyMSwgMHhBMzIyLCAweEEzMjMsIDB4QTMyNCwgMHhBMzI1LCAweEEzMjYsIDB4QTMyNywKKyAgICAweEEzMjgsIDB4QTMyOSwgMHhBMzJBLCAweEEzMkIsIDB4QTMyQywgMHhBMzJELCAweEEzMkUsIDB4QTMyRiwKKyAgICAweEEzMzAsIDB4QTMzMSwgMHhBMzMyLCAweEEzMzMsIDB4QTMzNCwgMHhBMzM1LCAweEEzMzYsIDB4QTMzNywKKyAgICAweEEzMzgsIDB4QTMzOSwgMHhBMzNBLCAweEEzM0IsIDB4QTMzQywgMHhBMzNELCAweEEzM0UsIDB4QTMzRiwKKyAgICAweEEzNDAsIDB4QTM0MSwgMHhBMzQyLCAweEEzNDMsIDB4QTM0NCwgMHhBMzQ1LCAweEEzNDYsIDB4QTM0NywKKyAgICAweEEzNDgsIDB4QTM0OSwgMHhBMzRBLCAweEEzNEIsIDB4QTM0QywgMHhBMzRELCAweEEzNEUsIDB4QTM0RiwKKyAgICAweEEzNTAsIDB4QTM1MSwgMHhBMzUyLCAweEEzNTMsIDB4QTM1NCwgMHhBMzU1LCAweEEzNTYsIDB4QTM1NywKKyAgICAweEEzNTgsIDB4QTM1OSwgMHhBMzVBLCAweEEzNUIsIDB4QTM1QywgMHhBMzVELCAweEEzNUUsIDB4QTM1RiwKKyAgICAweEEzNjAsIDB4QTM2MSwgMHhBMzYyLCAweEEzNjMsIDB4QTM2NCwgMHhBMzY1LCAweEEzNjYsIDB4QTM2NywKKyAgICAweEEzNjgsIDB4QTM2OSwgMHhBMzZBLCAweEEzNkIsIDB4QTM2QywgMHhBMzZELCAweEEzNkUsIDB4QTM2RiwKKyAgICAweEEzNzAsIDB4QTM3MSwgMHhBMzcyLCAweEEzNzMsIDB4QTM3NCwgMHhBMzc1LCAweEEzNzYsIDB4QTM3NywKKyAgICAweEEzNzgsIDB4QTM3OSwgMHhBMzdBLCAweEEzN0IsIDB4QTM3QywgMHhBMzdELCAweEEzN0UsIDB4QTM3RiwKKyAgICAweEEzODAsIDB4QTM4MSwgMHhBMzgyLCAweEEzODMsIDB4QTM4NCwgMHhBMzg1LCAweEEzODYsIDB4QTM4NywKKyAgICAweEEzODgsIDB4QTM4OSwgMHhBMzhBLCAweEEzOEIsIDB4QTM4QywgMHhBMzhELCAweEEzOEUsIDB4QTM4RiwKKyAgICAweEEzOTAsIDB4QTM5MSwgMHhBMzkyLCAweEEzOTMsIDB4QTM5NCwgMHhBMzk1LCAweEEzOTYsIDB4QTM5NywKKyAgICAweEEzOTgsIDB4QTM5OSwgMHhBMzlBLCAweEEzOUIsIDB4QTM5QywgMHhBMzlELCAweEEzOUUsIDB4QTM5RiwKKyAgICAweEEzQTAsIDB4QTNBMSwgMHhBM0EyLCAweEEzQTMsIDB4QTNBNCwgMHhBM0E1LCAweEEzQTYsIDB4QTNBNywKKyAgICAweEEzQTgsIDB4QTNBOSwgMHhBM0FBLCAweEEzQUIsIDB4QTNBQywgMHhBM0FELCAweEEzQUUsIDB4QTNBRiwKKyAgICAweEEzQjAsIDB4QTNCMSwgMHhBM0IyLCAweEEzQjMsIDB4QTNCNCwgMHhBM0I1LCAweEEzQjYsIDB4QTNCNywKKyAgICAweEEzQjgsIDB4QTNCOSwgMHhBM0JBLCAweEEzQkIsIDB4QTNCQywgMHhBM0JELCAweEEzQkUsIDB4QTNCRiwKKyAgICAweEEzQzAsIDB4QTNDMSwgMHhBM0MyLCAweEEzQzMsIDB4QTNDNCwgMHhBM0M1LCAweEEzQzYsIDB4QTNDNywKKyAgICAweEEzQzgsIDB4QTNDOSwgMHhBM0NBLCAweEEzQ0IsIDB4QTNDQywgMHhBM0NELCAweEEzQ0UsIDB4QTNDRiwKKyAgICAweEEzRDAsIDB4QTNEMSwgMHhBM0QyLCAweEEzRDMsIDB4QTNENCwgMHhBM0Q1LCAweEEzRDYsIDB4QTNENywKKyAgICAweEEzRDgsIDB4QTNEOSwgMHhBM0RBLCAweEEzREIsIDB4QTNEQywgMHhBM0RELCAweEEzREUsIDB4QTNERiwKKyAgICAweEEzRTAsIDB4QTNFMSwgMHhBM0UyLCAweEEzRTMsIDB4QTNFNCwgMHhBM0U1LCAweEEzRTYsIDB4QTNFNywKKyAgICAweEEzRTgsIDB4QTNFOSwgMHhBM0VBLCAweEEzRUIsIDB4QTNFQywgMHhBM0VELCAweEEzRUUsIDB4QTNFRiwKKyAgICAweEEzRjAsIDB4QTNGMSwgMHhBM0YyLCAweEEzRjMsIDB4QTNGNCwgMHhBM0Y1LCAweEEzRjYsIDB4QTNGNywKKyAgICAweEEzRjgsIDB4QTNGOSwgMHhBM0ZBLCAweEEzRkIsIDB4QTNGQywgMHhBM0ZELCAweEEzRkUsIDB4QTNGRiwKKyAgICAweEE0MDAsIDB4QTQwMSwgMHhBNDAyLCAweEE0MDMsIDB4QTQwNCwgMHhBNDA1LCAweEE0MDYsIDB4QTQwNywKKyAgICAweEE0MDgsIDB4QTQwOSwgMHhBNDBBLCAweEE0MEIsIDB4QTQwQywgMHhBNDBELCAweEE0MEUsIDB4QTQwRiwKKyAgICAweEE0MTAsIDB4QTQxMSwgMHhBNDEyLCAweEE0MTMsIDB4QTQxNCwgMHhBNDE1LCAweEE0MTYsIDB4QTQxNywKKyAgICAweEE0MTgsIDB4QTQxOSwgMHhBNDFBLCAweEE0MUIsIDB4QTQxQywgMHhBNDFELCAweEE0MUUsIDB4QTQxRiwKKyAgICAweEE0MjAsIDB4QTQyMSwgMHhBNDIyLCAweEE0MjMsIDB4QTQyNCwgMHhBNDI1LCAweEE0MjYsIDB4QTQyNywKKyAgICAweEE0MjgsIDB4QTQyOSwgMHhBNDJBLCAweEE0MkIsIDB4QTQyQywgMHhBNDJELCAweEE0MkUsIDB4QTQyRiwKKyAgICAweEE0MzAsIDB4QTQzMSwgMHhBNDMyLCAweEE0MzMsIDB4QTQzNCwgMHhBNDM1LCAweEE0MzYsIDB4QTQzNywKKyAgICAweEE0MzgsIDB4QTQzOSwgMHhBNDNBLCAweEE0M0IsIDB4QTQzQywgMHhBNDNELCAweEE0M0UsIDB4QTQzRiwKKyAgICAweEE0NDAsIDB4QTQ0MSwgMHhBNDQyLCAweEE0NDMsIDB4QTQ0NCwgMHhBNDQ1LCAweEE0NDYsIDB4QTQ0NywKKyAgICAweEE0NDgsIDB4QTQ0OSwgMHhBNDRBLCAweEE0NEIsIDB4QTQ0QywgMHhBNDRELCAweEE0NEUsIDB4QTQ0RiwKKyAgICAweEE0NTAsIDB4QTQ1MSwgMHhBNDUyLCAweEE0NTMsIDB4QTQ1NCwgMHhBNDU1LCAweEE0NTYsIDB4QTQ1NywKKyAgICAweEE0NTgsIDB4QTQ1OSwgMHhBNDVBLCAweEE0NUIsIDB4QTQ1QywgMHhBNDVELCAweEE0NUUsIDB4QTQ1RiwKKyAgICAweEE0NjAsIDB4QTQ2MSwgMHhBNDYyLCAweEE0NjMsIDB4QTQ2NCwgMHhBNDY1LCAweEE0NjYsIDB4QTQ2NywKKyAgICAweEE0NjgsIDB4QTQ2OSwgMHhBNDZBLCAweEE0NkIsIDB4QTQ2QywgMHhBNDZELCAweEE0NkUsIDB4QTQ2RiwKKyAgICAweEE0NzAsIDB4QTQ3MSwgMHhBNDcyLCAweEE0NzMsIDB4QTQ3NCwgMHhBNDc1LCAweEE0NzYsIDB4QTQ3NywKKyAgICAweEE0NzgsIDB4QTQ3OSwgMHhBNDdBLCAweEE0N0IsIDB4QTQ3QywgMHhBNDdELCAweEE0N0UsIDB4QTQ3RiwKKyAgICAweEE0ODAsIDB4QTQ4MSwgMHhBNDgyLCAweEE0ODMsIDB4QTQ4NCwgMHhBNDg1LCAweEE0ODYsIDB4QTQ4NywKKyAgICAweEE0ODgsIDB4QTQ4OSwgMHhBNDhBLCAweEE0OEIsIDB4QTQ4QywgMHhBNDkwLCAweEE0OTEsIDB4QTQ5MiwKKyAgICAweEE0OTMsIDB4QTQ5NCwgMHhBNDk1LCAweEE0OTYsIDB4QTQ5NywgMHhBNDk4LCAweEE0OTksIDB4QTQ5QSwKKyAgICAweEE0OUIsIDB4QTQ5QywgMHhBNDlELCAweEE0OUUsIDB4QTQ5RiwgMHhBNEEwLCAweEE0QTEsIDB4QTRBMiwKKyAgICAweEE0QTMsIDB4QTRBNCwgMHhBNEE1LCAweEE0QTYsIDB4QTRBNywgMHhBNEE4LCAweEE0QTksIDB4QTRBQSwKKyAgICAweEE0QUIsIDB4QTRBQywgMHhBNEFELCAweEE0QUUsIDB4QTRBRiwgMHhBNEIwLCAweEE0QjEsIDB4QTRCMiwKKyAgICAweEE0QjMsIDB4QTRCNCwgMHhBNEI1LCAweEE0QjYsIDB4QTRCNywgMHhBNEI4LCAweEE0QjksIDB4QTRCQSwKKyAgICAweEE0QkIsIDB4QTRCQywgMHhBNEJELCAweEE0QkUsIDB4QTRCRiwgMHhBNEMwLCAweEE0QzEsIDB4QTRDMiwKKyAgICAweEE0QzMsIDB4QTRDNCwgMHhBNEM1LCAweEE0QzYsCit9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0dCMS9HQi1FVUMtSF8wLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0ItRVVDLUhfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIxNmY4YQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0ItRVVDLUhfMC5jcHAKQEAgLTAsMCArMSwzOCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0dCX0VVQ19IXzBbOTAgKiAzXSA9IHsNCisgICAgMHgwMDIwLCAweDAwMjAsIDB4MUUyNCwgMHgwMDIxLCAweDAwN0UsIDB4MDMyRSwgMHhBMUExLCAweEExRkUsIDB4MDA2MCwNCisgICAgMHhBMkIxLCAweEEyRTIsIDB4MDBCRSwgMHhBMkU1LCAweEEyRUUsIDB4MDBGMCwgMHhBMkYxLCAweEEyRkMsIDB4MDBGQSwNCisgICAgMHhBM0ExLCAweEEzRkUsIDB4MDEwNiwgMHhBNEExLCAweEE0RjMsIDB4MDE2NCwgMHhBNUExLCAweEE1RjYsIDB4MDFCNywNCisgICAgMHhBNkExLCAweEE2QjgsIDB4MDIwRCwgMHhBNkMxLCAweEE2RjUsIDB4MDIyNSwgMHhBN0ExLCAweEE3QzEsIDB4MDI1QSwNCisgICAgMHhBN0QxLCAweEE3RjEsIDB4MDI3QiwgMHhBOEExLCAweEE4QzAsIDB4MDI5QywgMHhBOEM1LCAweEE4RUEsIDB4MDJCQywNCisgICAgMHhBOUE0LCAweEE5RUYsIDB4MDJFMiwgMHhBQUExLCAweEFBRkUsIDB4MDMyRSwgMHhBQkExLCAweEFCQzAsIDB4MDM4QywNCisgICAgMHhCMEExLCAweEIwRkUsIDB4MDNBQywgMHhCMUExLCAweEIxRkUsIDB4MDQwQSwgMHhCMkExLCAweEIyRkUsIDB4MDQ2OCwNCisgICAgMHhCM0ExLCAweEIzRkUsIDB4MDRDNiwgMHhCNEExLCAweEI0RkUsIDB4MDUyNCwgMHhCNUExLCAweEI1RkUsIDB4MDU4MiwNCisgICAgMHhCNkExLCAweEI2RkUsIDB4MDVFMCwgMHhCN0ExLCAweEI3RkUsIDB4MDYzRSwgMHhCOEExLCAweEI4RkUsIDB4MDY5QywNCisgICAgMHhCOUExLCAweEI5RkUsIDB4MDZGQSwgMHhCQUExLCAweEJBRkUsIDB4MDc1OCwgMHhCQkExLCAweEJCRkUsIDB4MDdCNiwNCisgICAgMHhCQ0ExLCAweEJDRkUsIDB4MDgxNCwgMHhCREExLCAweEJERkUsIDB4MDg3MiwgMHhCRUExLCAweEJFRkUsIDB4MDhEMCwNCisgICAgMHhCRkExLCAweEJGRkUsIDB4MDkyRSwgMHhDMEExLCAweEMwRkUsIDB4MDk4QywgMHhDMUExLCAweEMxRkUsIDB4MDlFQSwNCisgICAgMHhDMkExLCAweEMyRkUsIDB4MEE0OCwgMHhDM0ExLCAweEMzRkUsIDB4MEFBNiwgMHhDNEExLCAweEM0RkUsIDB4MEIwNCwNCisgICAgMHhDNUExLCAweEM1RkUsIDB4MEI2MiwgMHhDNkExLCAweEM2RkUsIDB4MEJDMCwgMHhDN0ExLCAweEM3RkUsIDB4MEMxRSwNCisgICAgMHhDOEExLCAweEM4RkUsIDB4MEM3QywgMHhDOUExLCAweEM5RkUsIDB4MENEQSwgMHhDQUExLCAweENBRkUsIDB4MEQzOCwNCisgICAgMHhDQkExLCAweENCRkUsIDB4MEQ5NiwgMHhDQ0ExLCAweENDRkUsIDB4MERGNCwgMHhDREExLCAweENERkUsIDB4MEU1MiwNCisgICAgMHhDRUExLCAweENFRkUsIDB4MEVCMCwgMHhDRkExLCAweENGRkUsIDB4MEYwRSwgMHhEMEExLCAweEQwRkUsIDB4MEY2QywNCisgICAgMHhEMUExLCAweEQxRkUsIDB4MEZDQSwgMHhEMkExLCAweEQyRkUsIDB4MTAyOCwgMHhEM0ExLCAweEQzRkUsIDB4MTA4NiwNCisgICAgMHhENEExLCAweEQ0RkUsIDB4MTBFNCwgMHhENUExLCAweEQ1RkUsIDB4MTE0MiwgMHhENkExLCAweEQ2RkUsIDB4MTFBMCwNCisgICAgMHhEN0ExLCAweEQ3RjksIDB4MTFGRSwgMHhEOEExLCAweEQ4RkUsIDB4MTI1NywgMHhEOUExLCAweEQ5RkUsIDB4MTJCNSwNCisgICAgMHhEQUExLCAweERBRkUsIDB4MTMxMywgMHhEQkExLCAweERCRkUsIDB4MTM3MSwgMHhEQ0ExLCAweERDRkUsIDB4MTNDRiwNCisgICAgMHhEREExLCAweERERkUsIDB4MTQyRCwgMHhERUExLCAweERFRkUsIDB4MTQ4QiwgMHhERkExLCAweERGRkUsIDB4MTRFOSwNCisgICAgMHhFMEExLCAweEUwRkUsIDB4MTU0NywgMHhFMUExLCAweEUxRkUsIDB4MTVBNSwgMHhFMkExLCAweEUyRkUsIDB4MTYwMywNCisgICAgMHhFM0ExLCAweEUzRkUsIDB4MTY2MSwgMHhFNEExLCAweEU0RkUsIDB4MTZCRiwgMHhFNUExLCAweEU1RkUsIDB4MTcxRCwNCisgICAgMHhFNkExLCAweEU2RkUsIDB4MTc3QiwgMHhFN0ExLCAweEU3RkUsIDB4MTdEOSwgMHhFOEExLCAweEU4RkUsIDB4MTgzNywNCisgICAgMHhFOUExLCAweEU5RkUsIDB4MTg5NSwgMHhFQUExLCAweEVBRkUsIDB4MThGMywgMHhFQkExLCAweEVCRkUsIDB4MTk1MSwNCisgICAgMHhFQ0ExLCAweEVDRkUsIDB4MTlBRiwgMHhFREExLCAweEVERkUsIDB4MUEwRCwgMHhFRUExLCAweEVFRkUsIDB4MUE2QiwNCisgICAgMHhFRkExLCAweEVGRkUsIDB4MUFDOSwgMHhGMEExLCAweEYwRkUsIDB4MUIyNywgMHhGMUExLCAweEYxRkUsIDB4MUI4NSwNCisgICAgMHhGMkExLCAweEYyRkUsIDB4MUJFMywgMHhGM0ExLCAweEYzRkUsIDB4MUM0MSwgMHhGNEExLCAweEY0RkUsIDB4MUM5RiwNCisgICAgMHhGNUExLCAweEY1RkUsIDB4MUNGRCwgMHhGNkExLCAweEY2RkUsIDB4MUQ1QiwgMHhGN0ExLCAweEY3RkUsIDB4MURCOSwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0ItRVVDLVZfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCLUVVQy1WXzAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MWNkMzUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCLUVVQy1WXzAuY3BwCkBAIC0wLDAgKzEsMTUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9HQl9FVUNfVl8wWzIwICogM10gPSB7DQorICAgIDB4QTFBMiwgMHhBMUEyLCAweDAyM0YsIDB4QTFBMywgMHhBMUEzLCAweDAyM0UsIDB4QTFBQSwgMHhBMUFBLCAweDAyNTYsDQorICAgIDB4QTFBQiwgMHhBMUFDLCAweDFFMTgsIDB4QTFBRCwgMHhBMUFELCAweDAyNTcsIDB4QTFCMiwgMHhBMUJGLCAweDAyNDYsDQorICAgIDB4QTFGRSwgMHhBMUZFLCAweDFFMUEsIDB4QTNBMSwgMHhBM0ExLCAweDAyNDIsIDB4QTNBOCwgMHhBM0E5LCAweDAyNDQsDQorICAgIDB4QTNBQywgMHhBM0FDLCAweDAyM0QsIDB4QTNBRSwgMHhBM0FFLCAweDFFMUIsIDB4QTNCQSwgMHhBM0JCLCAweDAyNDAsDQorICAgIDB4QTNCRCwgMHhBM0JELCAweDFFMUMsIDB4QTNCRiwgMHhBM0JGLCAweDAyNDMsIDB4QTNEQiwgMHhBM0RCLCAweDFFMUQsDQorICAgIDB4QTNERCwgMHhBM0RELCAweDFFMUUsIDB4QTNERiwgMHhBM0RGLCAweDAyNTgsIDB4QTNGQiwgMHhBM0ZCLCAweDAyNTQsDQorICAgIDB4QTNGRCwgMHhBM0ZELCAweDAyNTUsIDB4QTNGRSwgMHhBM0ZFLCAweDFFMUYsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCSy1FVUMtSF8yLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JLLUVVQy1IXzIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YzQ4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCSy1FVUMtSF8yLmNwcApAQCAtMCwwICsxLDEzNjUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9HQktfRVVDX0hfMls0MDcxICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDIwLCAweDFFMjQsIDB4MDAyMSwgMHgwMDdFLCAweDAzMkUsIDB4ODE0MCwgMHg4MTc4LCAweDI3NTgsDQorICAgIDB4ODE3OSwgMHg4MTc5LCAweDIwNTksIDB4ODE3QSwgMHg4MTdFLCAweDI3OTEsIDB4ODE4MCwgMHg4MTg1LCAweDI3OTYsDQorICAgIDB4ODE4NiwgMHg4MTg2LCAweDIxRjEsIDB4ODE4NywgMHg4MUVDLCAweDI3OUMsIDB4ODFFRCwgMHg4MUVELCAweDFGRjIsDQorICAgIDB4ODFFRSwgMHg4MUY1LCAweDI4MDIsIDB4ODFGNiwgMHg4MUY2LCAweDIwNUQsIDB4ODFGNywgMHg4MUZFLCAweDI4MEEsDQorICAgIDB4ODI0MCwgMHg4MjUyLCAweDI4MTIsIDB4ODI1MywgMHg4MjUzLCAweDI2OUMsIDB4ODI1NCwgMHg4MjYxLCAweDI4MjUsDQorICAgIDB4ODI2MiwgMHg4MjYyLCAweDIxQjUsIDB4ODI2MywgMHg4MjczLCAweDI4MzMsIDB4ODI3NCwgMHg4Mjc0LCAweDIyQ0MsDQorICAgIDB4ODI3NSwgMHg4Mjc5LCAweDI4NDQsIDB4ODI3QSwgMHg4MjdBLCAweDIwMTYsIDB4ODI3QiwgMHg4MjdDLCAweDI4NDksDQorICAgIDB4ODI3RCwgMHg4MjdELCAweDFFNjIsIDB4ODI3RSwgMHg4MjdFLCAweDI4NEIsIDB4ODI4MCwgMHg4MjgwLCAweDFGMjAsDQorICAgIDB4ODI4MSwgMHg4MjgyLCAweDI4NEMsIDB4ODI4MywgMHg4MjgzLCAweDIwN0YsIDB4ODI4NCwgMHg4MjhGLCAweDI4NEUsDQorICAgIDB4ODI5MCwgMHg4MjkwLCAweDIwNUMsIDB4ODI5MSwgMHg4MkE0LCAweDI4NUEsIDB4ODJBNSwgMHg4MkE1LCAweDIxOTQsDQorICAgIDB4ODJBNiwgMHg4MkM3LCAweDI4NkUsIDB4ODJDOCwgMHg4MkM4LCAweDFFNjUsIDB4ODJDOSwgMHg4MkM5LCAweDIyODEsDQorICAgIDB4ODJDQSwgMHg4MkUwLCAweDI4OTAsIDB4ODJFMSwgMHg4MkUxLCAweDIyQ0QsIDB4ODJFMiwgMHg4MkUyLCAweDI4QTcsDQorICAgIDB4ODJFMywgMHg4MkUzLCAweDIxMEEsIDB4ODJFNCwgMHg4MkU0LCAweDFFM0UsIDB4ODJFNSwgMHg4MkVDLCAweDI4QTgsDQorICAgIDB4ODJFRCwgMHg4MkVELCAweDI2N0YsIDB4ODJFRSwgMHg4MkYxLCAweDI4QjAsIDB4ODJGMiwgMHg4MkYyLCAweDIyMkUsDQorICAgIDB4ODJGMywgMHg4MkY2LCAweDI4QjQsIDB4ODJGNywgMHg4MkY3LCAweDFFOTYsIDB4ODJGOCwgMHg4MkY4LCAweDIyQ0IsDQorICAgIDB4ODJGOSwgMHg4MkY5LCAweDIyNkMsIDB4ODJGQSwgMHg4MkZBLCAweDI4QjgsIDB4ODJGQiwgMHg4MkZCLCAweDIxMTcsDQorICAgIDB4ODJGQywgMHg4MkZFLCAweDI4QjksIDB4ODM0MCwgMHg4MzQwLCAweDI4QkMsIDB4ODM0MSwgMHg4MzQxLCAweDIwRTgsDQorICAgIDB4ODM0MiwgMHg4MzQ0LCAweDI4QkQsIDB4ODM0NSwgMHg4MzQ1LCAweDIyRDQsIDB4ODM0NiwgMHg4MzQ3LCAweDI4QzAsDQorICAgIDB4ODM0OCwgMHg4MzQ4LCAweDFGQjksIDB4ODM0OSwgMHg4MzRCLCAweDI4QzIsIDB4ODM0QywgMHg4MzRDLCAweDIyRDgsDQorICAgIDB4ODM0RCwgMHg4MzUyLCAweDI4QzUsIDB4ODM1MywgMHg4MzUzLCAweDIwREYsIDB4ODM1NCwgMHg4MzU2LCAweDI4Q0IsDQorICAgIDB4ODM1NywgMHg4MzU3LCAweDIwQzIsIDB4ODM1OCwgMHg4MzVELCAweDI4Q0UsIDB4ODM1RSwgMHg4MzVFLCAweDIxOTUsDQorICAgIDB4ODM1RiwgMHg4MzY0LCAweDI4RDQsIDB4ODM2NSwgMHg4MzY1LCAweDFGQUMsIDB4ODM2NiwgMHg4MzY2LCAweDIyRDMsDQorICAgIDB4ODM2NywgMHg4MzcxLCAweDI4REEsIDB4ODM3MiwgMHg4MzcyLCAweDFGODEsIDB4ODM3MywgMHg4Mzc3LCAweDI4RTUsDQorICAgIDB4ODM3OCwgMHg4Mzc4LCAweDIyMTAsIDB4ODM3OSwgMHg4Mzc5LCAweDI4RUEsIDB4ODM3QSwgMHg4MzdBLCAweDIyQ0YsDQorICAgIDB4ODM3QiwgMHg4MzdCLCAweDI4RUIsIDB4ODM3QywgMHg4MzdDLCAweDIyMTMsIDB4ODM3RCwgMHg4MzdELCAweDI4RUMsDQorICAgIDB4ODM3RSwgMHg4MzdFLCAweDFGRTQsIDB4ODM4MCwgMHg4MzgwLCAweDFGOTAsIDB4ODM4MSwgMHg4Mzg1LCAweDI4RUQsDQorICAgIDB4ODM4NiwgMHg4Mzg2LCAweDIyRDYsIDB4ODM4NywgMHg4Mzg4LCAweDI4RjIsIDB4ODM4OSwgMHg4Mzg5LCAweDIyRDAsDQorICAgIDB4ODM4QSwgMHg4MzhBLCAweDIyQ0UsIDB4ODM4QiwgMHg4MzhDLCAweDI4RjQsIDB4ODM4RCwgMHg4MzhELCAweDI2ODEsDQorICAgIDB4ODM4RSwgMHg4MzkzLCAweDI4RjYsIDB4ODM5NCwgMHg4Mzk0LCAweDFFNzYsIDB4ODM5NSwgMHg4MzlELCAweDI4RkMsDQorICAgIDB4ODM5RSwgMHg4MzlFLCAweDIyMzEsIDB4ODM5RiwgMHg4M0E1LCAweDI5MDUsIDB4ODNBNiwgMHg4M0E2LCAweDFFOTMsDQorICAgIDB4ODNBNywgMHg4M0FBLCAweDI5MEMsIDB4ODNBQiwgMHg4M0FCLCAweDIyRDIsIDB4ODNBQywgMHg4M0FELCAweDI5MTAsDQorICAgIDB4ODNBRSwgMHg4M0FFLCAweDIyRDcsIDB4ODNBRiwgMHg4M0FGLCAweDIyRDUsIDB4ODNCMCwgMHg4M0IwLCAweDIyRDEsDQorICAgIDB4ODNCMSwgMHg4M0I5LCAweDI5MTIsIDB4ODNCQSwgMHg4M0JBLCAweDFFRTUsIDB4ODNCQiwgMHg4M0M4LCAweDI5MUIsDQorICAgIDB4ODNDOSwgMHg4M0M5LCAweDIwMjUsIDB4ODNDQSwgMHg4M0Y1LCAweDI5MjksIDB4ODNGNiwgMHg4M0Y2LCAweDFFQ0YsDQorICAgIDB4ODNGNywgMHg4M0ZFLCAweDI5NTUsIDB4ODQ0MCwgMHg4NDRGLCAweDI5NUQsIDB4ODQ1MCwgMHg4NDUwLCAweDFGRDksDQorICAgIDB4ODQ1MSwgMHg4NDcwLCAweDI5NkQsIDB4ODQ3MSwgMHg4NDcxLCAweDIyQzgsIDB4ODQ3MiwgMHg4NDczLCAweDI5OEQsDQorICAgIDB4ODQ3NCwgMHg4NDc0LCAweDIyNjMsIDB4ODQ3NSwgMHg4NDc2LCAweDI5OEYsIDB4ODQ3NywgMHg4NDc3LCAweDI2ODMsDQorICAgIDB4ODQ3OCwgMHg4NDdFLCAweDI5OTEsIDB4ODQ4MCwgMHg4NDgxLCAweDI5OTgsIDB4ODQ4MiwgMHg4NDgyLCAweDFGMTcsDQorICAgIDB4ODQ4MywgMHg4NDhELCAweDI5OUEsIDB4ODQ4RSwgMHg4NDhFLCAweDFGMkIsIDB4ODQ4RiwgMHg4NDkxLCAweDI5QTUsDQorICAgIDB4ODQ5MiwgMHg4NDkyLCAweDIyQ0EsIDB4ODQ5MywgMHg4NDkzLCAweDFFOTksIDB4ODQ5NCwgMHg4NDlDLCAweDI5QTgsDQorICAgIDB4ODQ5RCwgMHg4NDlELCAweDFGNEYsIDB4ODQ5RSwgMHg4NEEwLCAweDI5QjEsIDB4ODRBMSwgMHg4NEExLCAweDFGQ0YsDQorICAgIDB4ODRBMiwgMHg4NEEyLCAweDIwMzYsIDB4ODRBMywgMHg4NEEzLCAweDFGM0EsIDB4ODRBNCwgMHg4NEE0LCAweDI5QjQsDQorICAgIDB4ODRBNSwgMHg4NEE1LCAweDIyQzksIDB4ODRBNiwgMHg4NEE2LCAweDFGOTksIDB4ODRBNywgMHg4NEE4LCAweDI5QjUsDQorICAgIDB4ODRBOSwgMHg4NEE5LCAweDFGNzUsIDB4ODRBQSwgMHg4NEM0LCAweDI5QjcsIDB4ODRDNSwgMHg4NEM1LCAweDFGQkUsDQorICAgIDB4ODRDNiwgMHg4NEQyLCAweDI5RDIsIDB4ODREMywgMHg4NEQzLCAweDFFQ0QsIDB4ODRENCwgMHg4NEQ0LCAweDI5REYsDQorICAgIDB4ODRENSwgMHg4NEQ1LCAweDIxQTksIDB4ODRENiwgMHg4NEQ2LCAweDI5RTAsIDB4ODRENywgMHg4NEQ3LCAweDIxRTYsDQorICAgIDB4ODREOCwgMHg4NEQ4LCAweDI5RTEsIDB4ODREOSwgMHg4NEQ5LCAweDIxMjcsIDB4ODREQSwgMHg4NERBLCAweDIwMDMsDQorICAgIDB4ODREQiwgMHg4NERDLCAweDI5RTIsIDB4ODRERCwgMHg4NERELCAweDIxMzIsIDB4ODRERSwgMHg4NEU5LCAweDI5RTQsDQorICAgIDB4ODRFQSwgMHg4NEVBLCAweDIzMjMsIDB4ODRFQiwgMHg4NEVELCAweDI5RjAsIDB4ODRFRSwgMHg4NEVFLCAweDIwMTEsDQorICAgIDB4ODRFRiwgMHg4NEYwLCAweDI5RjMsIDB4ODRGMSwgMHg4NEYxLCAweDIwRjUsIDB4ODRGMiwgMHg4NEZFLCAweDI5RjUsDQorICAgIDB4ODU0MCwgMHg4NTUwLCAweDJBMDIsIDB4ODU1MSwgMHg4NTUxLCAweDIyQzUsIDB4ODU1MiwgMHg4NTUyLCAweDFGNUUsDQorICAgIDB4ODU1MywgMHg4NTUzLCAweDJBMTMsIDB4ODU1NCwgMHg4NTU0LCAweDIyQzYsIDB4ODU1NSwgMHg4NTVELCAweDJBMTQsDQorICAgIDB4ODU1RSwgMHg4NTVFLCAweDIwRUYsIDB4ODU1RiwgMHg4NTY1LCAweDJBMUQsIDB4ODU2NiwgMHg4NTY2LCAweDIxRDAsDQorICAgIDB4ODU2NywgMHg4NTdFLCAweDJBMjQsIDB4ODU4MCwgMHg4NTg2LCAweDJBM0MsIDB4ODU4NywgMHg4NTg3LCAweDIyQzEsDQorICAgIDB4ODU4OCwgMHg4NThBLCAweDJBNDMsIDB4ODU4QiwgMHg4NThCLCAweDFFNjQsIDB4ODU4QywgMHg4NTkxLCAweDJBNDYsDQorICAgIDB4ODU5MiwgMHg4NTkyLCAweDIxRjksIDB4ODU5MywgMHg4NTk1LCAweDJBNEMsIDB4ODU5NiwgMHg4NTk2LCAweDIwMTAsDQorICAgIDB4ODU5NywgMHg4NTk3LCAweDJBNEYsIDB4ODU5OCwgMHg4NTk4LCAweDIyQzIsIDB4ODU5OSwgMHg4NUExLCAweDJBNTAsDQorICAgIDB4ODVBMiwgMHg4NUEyLCAweDFFNUEsIDB4ODVBMywgMHg4NUIxLCAweDJBNTksIDB4ODVCMiwgMHg4NUIyLCAweDFFQTIsDQorICAgIDB4ODVCMywgMHg4NUZFLCAweDJBNjgsIDB4ODY0MCwgMHg4NjQ5LCAweDJBQjQsIDB4ODY0QSwgMHg4NjRBLCAweDIzNkQsDQorICAgIDB4ODY0QiwgMHg4NjUzLCAweDJBQkUsIDB4ODY1NCwgMHg4NjU0LCAweDIyNDcsIDB4ODY1NSwgMHg4NjY3LCAweDJBQzcsDQorICAgIDB4ODY2OCwgMHg4NjY4LCAweDIzNkMsIDB4ODY2OSwgMHg4NjdFLCAweDJBREEsIDB4ODY4MCwgMHg4Njk1LCAweDJBRjAsDQorICAgIDB4ODY5NiwgMHg4Njk2LCAweDIxOUMsIDB4ODY5NywgMHg4Njk4LCAweDJCMDYsIDB4ODY5OSwgMHg4Njk5LCAweDIwQzksDQorICAgIDB4ODY5QSwgMHg4NkEwLCAweDJCMDgsIDB4ODZBMSwgMHg4NkExLCAweDIxRjAsIDB4ODZBMiwgMHg4NkM5LCAweDJCMEYsDQorICAgIDB4ODZDQSwgMHg4NkNBLCAweDIxMEIsIDB4ODZDQiwgMHg4NkNCLCAweDJCMzcsIDB4ODZDQywgMHg4NkNDLCAweDIwREUsDQorICAgIDB4ODZDRCwgMHg4NkNELCAweDJCMzgsIDB4ODZDRSwgMHg4NkNFLCAweDFFQUEsIDB4ODZDRiwgMHg4NkQwLCAweDJCMzksDQorICAgIDB4ODZEMSwgMHg4NkQxLCAweDIyMkMsIDB4ODZEMiwgMHg4NkRCLCAweDJCM0IsIDB4ODZEQywgMHg4NkRDLCAweDIwRDgsDQorICAgIDB4ODZERCwgMHg4NkRELCAweDIyQzAsIDB4ODZERSwgMHg4NkUwLCAweDJCNDUsIDB4ODZFMSwgMHg4NkUxLCAweDIwNkYsDQorICAgIDB4ODZFMiwgMHg4NkU3LCAweDJCNDgsIDB4ODZFOCwgMHg4NkU4LCAweDIxQTEsIDB4ODZFOSwgMHg4NkVELCAweDJCNEUsDQorICAgIDB4ODZFRSwgMHg4NkVFLCAweDIzNzksIDB4ODZFRiwgMHg4NkYzLCAweDJCNTMsIDB4ODZGNCwgMHg4NkY0LCAweDIzNzIsDQorICAgIDB4ODZGNSwgMHg4NkZFLCAweDJCNTgsIDB4ODc0MCwgMHg4NzQwLCAweDIxNkEsIDB4ODc0MSwgMHg4NzQzLCAweDJCNjIsDQorICAgIDB4ODc0NCwgMHg4NzQ0LCAweDIzN0MsIDB4ODc0NSwgMHg4NzQ4LCAweDJCNjUsIDB4ODc0OSwgMHg4NzQ5LCAweDIwQjAsDQorICAgIDB4ODc0QSwgMHg4NzRBLCAweDJCNjksIDB4ODc0QiwgMHg4NzRCLCAweDIzN0EsIDB4ODc0QywgMHg4NzRDLCAweDFFNzQsDQorICAgIDB4ODc0RCwgMHg4NzRFLCAweDJCNkEsIDB4ODc0RiwgMHg4NzRGLCAweDIzNzcsIDB4ODc1MCwgMHg4NzU2LCAweDJCNkMsDQorICAgIDB4ODc1NywgMHg4NzU3LCAweDFGNEMsIDB4ODc1OCwgMHg4NzU5LCAweDJCNzMsIDB4ODc1QSwgMHg4NzVBLCAweDIzNzgsDQorICAgIDB4ODc1QiwgMHg4NzVCLCAweDIxQ0YsIDB4ODc1QywgMHg4NzVDLCAweDIzNjgsIDB4ODc1RCwgMHg4NzVELCAweDJCNzUsDQorICAgIDB4ODc1RSwgMHg4NzVFLCAweDIzNzEsIDB4ODc1RiwgMHg4NzVGLCAweDJCNzYsIDB4ODc2MCwgMHg4NzYwLCAweDIzNjksDQorICAgIDB4ODc2MSwgMHg4NzY1LCAweDJCNzcsIDB4ODc2NiwgMHg4NzY2LCAweDI2NzQsIDB4ODc2NywgMHg4Nzc5LCAweDJCN0MsDQorICAgIDB4ODc3QSwgMHg4NzdBLCAweDIzNkYsIDB4ODc3QiwgMHg4NzdDLCAweDJCOEYsIDB4ODc3RCwgMHg4NzdELCAweDIzNzAsDQorICAgIDB4ODc3RSwgMHg4NzdFLCAweDJCOTEsIDB4ODc4MCwgMHg4NzgwLCAweDJCOTIsIDB4ODc4MSwgMHg4NzgxLCAweDIzNzYsDQorICAgIDB4ODc4MiwgMHg4NzgyLCAweDIzNzMsIDB4ODc4MywgMHg4Nzg1LCAweDJCOTMsIDB4ODc4NiwgMHg4Nzg2LCAweDIzN0YsDQorICAgIDB4ODc4NywgMHg4Nzg3LCAweDJCOTYsIDB4ODc4OCwgMHg4Nzg4LCAweDIzNzQsIDB4ODc4OSwgMHg4Nzg5LCAweDJCOTcsDQorICAgIDB4ODc4QSwgMHg4NzhBLCAweDIwQjUsIDB4ODc4QiwgMHg4NzhDLCAweDJCOTgsIDB4ODc4RCwgMHg4NzhELCAweDFFREIsDQorICAgIDB4ODc4RSwgMHg4NzhFLCAweDI2NzIsIDB4ODc4RiwgMHg4NzkyLCAweDJCOUEsIDB4ODc5MywgMHg4NzkzLCAweDIzNkUsDQorICAgIDB4ODc5NCwgMHg4Nzk3LCAweDJCOUUsIDB4ODc5OCwgMHg4Nzk4LCAweDIxQjcsIDB4ODc5OSwgMHg4NzlDLCAweDJCQTIsDQorICAgIDB4ODc5RCwgMHg4NzlELCAweDIzNzUsIDB4ODc5RSwgMHg4N0EyLCAweDJCQTYsIDB4ODdBMywgMHg4N0EzLCAweDIzODIsDQorICAgIDB4ODdBNCwgMHg4N0E2LCAweDJCQUIsIDB4ODdBNywgMHg4N0E3LCAweDIwOUUsIDB4ODdBOCwgMHg4N0IyLCAweDJCQUUsDQorICAgIDB4ODdCMywgMHg4N0IzLCAweDIzNkIsIDB4ODdCNCwgMHg4N0I0LCAweDJCQjksIDB4ODdCNSwgMHg4N0I1LCAweDIwMzksDQorICAgIDB4ODdCNiwgMHg4N0JBLCAweDJCQkEsIDB4ODdCQiwgMHg4N0JCLCAweDI2OUYsIDB4ODdCQywgMHg4N0JFLCAweDJCQkYsDQorICAgIDB4ODdCRiwgMHg4N0JGLCAweDIzN0QsIDB4ODdDMCwgMHg4N0MwLCAweDIxRjUsIDB4ODdDMSwgMHg4N0MxLCAweDJCQzIsDQorICAgIDB4ODdDMiwgMHg4N0MyLCAweDIzODEsIDB4ODdDMywgMHg4N0M5LCAweDJCQzMsIDB4ODdDQSwgMHg4N0NBLCAweDIzN0IsDQorICAgIDB4ODdDQiwgMHg4N0NCLCAweDIzN0UsIDB4ODdDQywgMHg4N0NDLCAweDIxQ0MsIDB4ODdDRCwgMHg4N0NFLCAweDJCQ0EsDQorICAgIDB4ODdDRiwgMHg4N0NGLCAweDIyREIsIDB4ODdEMCwgMHg4N0QxLCAweDJCQ0MsIDB4ODdEMiwgMHg4N0QyLCAweDIzNkEsDQorICAgIDB4ODdEMywgMHg4N0QzLCAweDI2ODksIDB4ODdENCwgMHg4N0Q0LCAweDJCQ0UsIDB4ODdENSwgMHg4N0Q1LCAweDI2OTcsDQorICAgIDB4ODdENiwgMHg4N0Q5LCAweDJCQ0YsIDB4ODdEQSwgMHg4N0RBLCAweDIyQTEsIDB4ODdEQiwgMHg4N0Y2LCAweDJCRDMsDQorICAgIDB4ODdGNywgMHg4N0Y3LCAweDIzODMsIDB4ODdGOCwgMHg4N0Y4LCAweDFGM0QsIDB4ODdGOSwgMHg4N0Y5LCAweDJCRUYsDQorICAgIDB4ODdGQSwgMHg4N0ZBLCAweDIxOEYsIDB4ODdGQiwgMHg4N0ZFLCAweDJCRjAsIDB4ODg0MCwgMHg4ODQwLCAweDIyNDYsDQorICAgIDB4ODg0MSwgMHg4ODQxLCAweDIyNDgsIDB4ODg0MiwgMHg4ODQzLCAweDJCRjQsIDB4ODg0NCwgMHg4ODQ0LCAweDIxN0UsDQorICAgIDB4ODg0NSwgMHg4ODQ1LCAweDJCRjYsIDB4ODg0NiwgMHg4ODQ2LCAweDIxODAsIDB4ODg0NywgMHg4ODdFLCAweDJCRjcsDQorICAgIDB4ODg4MCwgMHg4OEI5LCAweDJDMkYsIDB4ODhCQSwgMHg4OEJBLCAweDIzMkEsIDB4ODhCQiwgMHg4OENCLCAweDJDNjksDQorICAgIDB4ODhDQywgMHg4OENDLCAweDIyOEIsIDB4ODhDRCwgMHg4OEQzLCAweDJDN0EsIDB4ODhENCwgMHg4OEQ0LCAweDFGODUsDQorICAgIDB4ODhENSwgMHg4OEQ2LCAweDJDODEsIDB4ODhENywgMHg4OEQ3LCAweDIzMjUsIDB4ODhEOCwgMHg4OERFLCAweDJDODMsDQorICAgIDB4ODhERiwgMHg4OERGLCAweDIzMkMsIDB4ODhFMCwgMHg4OEU0LCAweDJDOEEsIDB4ODhFNSwgMHg4OEU1LCAweDIzMkUsDQorICAgIDB4ODhFNiwgMHg4OEYxLCAweDJDOEYsIDB4ODhGMiwgMHg4OEYyLCAweDIyMDUsIDB4ODhGMywgMHg4OEYzLCAweDFFMzgsDQorICAgIDB4ODhGNCwgMHg4OEY1LCAweDJDOUIsIDB4ODhGNiwgMHg4OEY2LCAweDFFNzMsIDB4ODhGNywgMHg4OEZFLCAweDJDOUQsDQorICAgIDB4ODk0MCwgMHg4OTRBLCAweDJDQTUsIDB4ODk0QiwgMHg4OTRCLCAweDFGRTMsIDB4ODk0QywgMHg4OTRDLCAweDIzMzksDQorICAgIDB4ODk0RCwgMHg4OTRELCAweDJDQjAsIDB4ODk0RSwgMHg4OTRFLCAweDIzMkIsIDB4ODk0RiwgMHg4OTRGLCAweDJDQjEsDQorICAgIDB4ODk1MCwgMHg4OTUwLCAweDIzMkQsIDB4ODk1MSwgMHg4OTUzLCAweDJDQjIsIDB4ODk1NCwgMHg4OTU0LCAweDIxN0YsDQorICAgIDB4ODk1NSwgMHg4OTVDLCAweDJDQjUsIDB4ODk1RCwgMHg4OTVELCAweDIxQTcsIDB4ODk1RSwgMHg4OTVFLCAweDJDQkQsDQorICAgIDB4ODk1RiwgMHg4OTVGLCAweDIzMkYsIDB4ODk2MCwgMHg4OTZDLCAweDJDQkUsIDB4ODk2RCwgMHg4OTZELCAweDFFN0QsDQorICAgIDB4ODk2RSwgMHg4OTcwLCAweDJDQ0IsIDB4ODk3MSwgMHg4OTcxLCAweDIwRDYsIDB4ODk3MiwgMHg4OTdCLCAweDJDQ0UsDQorICAgIDB4ODk3QywgMHg4OTdDLCAweDFFQzIsIDB4ODk3RCwgMHg4OTdFLCAweDJDRDgsIDB4ODk4MCwgMHg4OThBLCAweDJDREEsDQorICAgIDB4ODk4QiwgMHg4OThCLCAweDIyQjIsIDB4ODk4QywgMHg4OTk4LCAweDJDRTUsIDB4ODk5OSwgMHg4OTk5LCAweDFFREYsDQorICAgIDB4ODk5QSwgMHg4OTlELCAweDJDRjIsIDB4ODk5RSwgMHg4OTlFLCAweDFFRjksIDB4ODk5RiwgMHg4OUE1LCAweDJDRjYsDQorICAgIDB4ODlBNiwgMHg4OUE2LCAweDIwRDksIDB4ODlBNywgMHg4OUE3LCAweDJDRkQsIDB4ODlBOCwgMHg4OUE4LCAweDFGREQsDQorICAgIDB4ODlBOSwgMHg4OUFFLCAweDJDRkUsIDB4ODlBRiwgMHg4OUFGLCAweDIxNjcsIDB4ODlCMCwgMHg4OUI5LCAweDJEMDQsDQorICAgIDB4ODlCQSwgMHg4OUJBLCAweDIxRUQsIDB4ODlCQiwgMHg4OUJELCAweDJEMEUsIDB4ODlCRSwgMHg4OUJFLCAweDIwMDcsDQorICAgIDB4ODlCRiwgMHg4OUJGLCAweDIzMjYsIDB4ODlDMCwgMHg4OUMwLCAweDIzMjksIDB4ODlDMSwgMHg4OUMzLCAweDJEMTEsDQorICAgIDB4ODlDNCwgMHg4OUM0LCAweDFGNTIsIDB4ODlDNSwgMHg4OUM1LCAweDIwM0IsIDB4ODlDNiwgMHg4OUM2LCAweDIzMjgsDQorICAgIDB4ODlDNywgMHg4OUM3LCAweDJEMTQsIDB4ODlDOCwgMHg4OUM4LCAweDIzMjcsIDB4ODlDOSwgMHg4OUNELCAweDJEMTUsDQorICAgIDB4ODlDRSwgMHg4OUNFLCAweDFFMkIsIDB4ODlDRiwgMHg4OUQwLCAweDJEMUEsIDB4ODlEMSwgMHg4OUQxLCAweDIyQUUsDQorICAgIDB4ODlEMiwgMHg4OUQ3LCAweDJEMUMsIDB4ODlEOCwgMHg4OUQ4LCAweDFGNDksIDB4ODlEOSwgMHg4OURBLCAweDJEMjIsDQorICAgIDB4ODlEQiwgMHg4OURCLCAweDIxMzgsIDB4ODlEQywgMHg4OUYzLCAweDJEMjQsIDB4ODlGNCwgMHg4OUY0LCAweDIwODEsDQorICAgIDB4ODlGNSwgMHg4OUZFLCAweDJEM0MsIDB4OEE0MCwgMHg4QTQwLCAweDJENDYsIDB4OEE0MSwgMHg4QTQxLCAweDFGN0MsDQorICAgIDB4OEE0MiwgMHg4QTU4LCAweDJENDcsIDB4OEE1OSwgMHg4QTU5LCAweDIzNUIsIDB4OEE1QSwgMHg4QTVBLCAweDFFREUsDQorICAgIDB4OEE1QiwgMHg4QTVCLCAweDJENUUsIDB4OEE1QywgMHg4QTVDLCAweDFGQTIsIDB4OEE1RCwgMHg4QTVELCAweDJENUYsDQorICAgIDB4OEE1RSwgMHg4QTVFLCAweDFFRkEsIDB4OEE1RiwgMHg4QTc4LCAweDJENjAsIDB4OEE3OSwgMHg4QTc5LCAweDIyQUQsDQorICAgIDB4OEE3QSwgMHg4QTdFLCAweDJEN0EsIDB4OEE4MCwgMHg4QUUzLCAweDJEN0YsIDB4OEFFNCwgMHg4QUU0LCAweDIwM0YsDQorICAgIDB4OEFFNSwgMHg4QUZFLCAweDJERTMsIDB4OEI0MCwgMHg4QjQzLCAweDJERkQsIDB4OEI0NCwgMHg4QjQ0LCAweDFGMEUsDQorICAgIDB4OEI0NSwgMHg4QjQ4LCAweDJFMDEsIDB4OEI0OSwgMHg4QjQ5LCAweDIzRjksIDB4OEI0QSwgMHg4Qjc5LCAweDJFMDUsDQorICAgIDB4OEI3QSwgMHg4QjdBLCAweDIzRkMsIDB4OEI3QiwgMHg4QjdFLCAweDJFMzUsIDB4OEI4MCwgMHg4QjhCLCAweDJFMzksDQorICAgIDB4OEI4QywgMHg4QjhDLCAweDIwNjksIDB4OEI4RCwgMHg4QjlELCAweDJFNDUsIDB4OEI5RSwgMHg4QjlFLCAweDIzRjcsDQorICAgIDB4OEI5RiwgMHg4QkIyLCAweDJFNTYsIDB4OEJCMywgMHg4QkIzLCAweDIzRjYsIDB4OEJCNCwgMHg4QkI4LCAweDJFNkEsDQorICAgIDB4OEJCOSwgMHg4QkI5LCAweDIzRkQsIDB4OEJCQSwgMHg4QkJELCAweDJFNkYsIDB4OEJCRSwgMHg4QkJFLCAweDIzRjgsDQorICAgIDB4OEJCRiwgMHg4QkM1LCAweDJFNzMsIDB4OEJDNiwgMHg4QkM2LCAweDIzRkEsIDB4OEJDNywgMHg4QkM3LCAweDJFN0EsDQorICAgIDB4OEJDOCwgMHg4QkM4LCAweDIzRkUsIDB4OEJDOSwgMHg4QkM5LCAweDFGQTgsIDB4OEJDQSwgMHg4QkQzLCAweDJFN0IsDQorICAgIDB4OEJENCwgMHg4QkQ0LCAweDI0MDEsIDB4OEJENSwgMHg4QkRCLCAweDJFODUsIDB4OEJEQywgMHg4QkRDLCAweDIzRkYsDQorICAgIDB4OEJERCwgMHg4QkU0LCAweDJFOEMsIDB4OEJFNSwgMHg4QkU1LCAweDI0MDAsIDB4OEJFNiwgMHg4QkVBLCAweDJFOTQsDQorICAgIDB4OEJFQiwgMHg4QkVCLCAweDIyMjEsIDB4OEJFQywgMHg4QkVGLCAweDJFOTksIDB4OEJGMCwgMHg4QkYwLCAweDIxMjIsDQorICAgIDB4OEJGMSwgMHg4QkZFLCAweDJFOUQsIDB4OEM0MCwgMHg4QzQzLCAweDJFQUIsIDB4OEM0NCwgMHg4QzQ0LCAweDIzRkIsDQorICAgIDB4OEM0NSwgMHg4QzRFLCAweDJFQUYsIDB4OEM0RiwgMHg4QzRGLCAweDIxNUEsIDB4OEM1MCwgMHg4QzU2LCAweDJFQjksDQorICAgIDB4OEM1NywgMHg4QzU3LCAweDIxRTUsIDB4OEM1OCwgMHg4QzVCLCAweDJFQzAsIDB4OEM1QywgMHg4QzVDLCAweDIwNTcsDQorICAgIDB4OEM1RCwgMHg4QzdFLCAweDJFQzQsIDB4OEM4MCwgMHg4QzhBLCAweDJFRTYsIDB4OEM4QiwgMHg4QzhCLCAweDIwRTUsDQorICAgIDB4OEM4QywgMHg4QzhDLCAweDJFRjEsIDB4OEM4RCwgMHg4QzhELCAweDIxMkYsIDB4OEM4RSwgMHg4QzhFLCAweDIwQTMsDQorICAgIDB4OEM4RiwgMHg4QzhGLCAweDIxMjEsIDB4OEM5MCwgMHg4QzkwLCAweDJFRjIsIDB4OEM5MSwgMHg4QzkxLCAweDIxRDQsDQorICAgIDB4OEM5MiwgMHg4QzkyLCAweDFGRTUsIDB4OEM5MywgMHg4Qzk4LCAweDJFRjMsIDB4OEM5OSwgMHg4Qzk5LCAweDFFOEEsDQorICAgIDB4OEM5QSwgMHg4QzlBLCAweDFFMzcsIDB4OEM5QiwgMHg4Q0ExLCAweDJFRjksIDB4OENBMiwgMHg4Q0EyLCAweDFGOUUsDQorICAgIDB4OENBMywgMHg4Q0EzLCAweDIyQTYsIDB4OENBNCwgMHg4Q0E0LCAweDIxRTgsIDB4OENBNSwgMHg4Q0E1LCAweDJGMDAsDQorICAgIDB4OENBNiwgMHg4Q0E2LCAweDFFREEsIDB4OENBNywgMHg4Q0E3LCAweDFFQjksIDB4OENBOCwgMHg4Q0JGLCAweDJGMDEsDQorICAgIDB4OENDMCwgMHg4Q0MwLCAweDIzNUMsIDB4OENDMSwgMHg4Q0QxLCAweDJGMTksIDB4OENEMiwgMHg4Q0QyLCAweDIwNTAsDQorICAgIDB4OENEMywgMHg4Q0QzLCAweDFFNjcsIDB4OENENCwgMHg4Q0Q0LCAweDJGMkEsIDB4OENENSwgMHg4Q0Q1LCAweDIzRjQsDQorICAgIDB4OENENiwgMHg4Q0Q4LCAweDJGMkIsIDB4OENEOSwgMHg4Q0Q5LCAweDIxM0UsIDB4OENEQSwgMHg4Q0Y4LCAweDJGMkUsDQorICAgIDB4OENGOSwgMHg4Q0Y5LCAweDFGMTYsIDB4OENGQSwgMHg4Q0ZFLCAweDJGNEQsIDB4OEQ0MCwgMHg4RDcyLCAweDJGNTIsDQorICAgIDB4OEQ3MywgMHg4RDczLCAweDIzODksIDB4OEQ3NCwgMHg4RDc0LCAweDJGODUsIDB4OEQ3NSwgMHg4RDc1LCAweDFFQjcsDQorICAgIDB4OEQ3NiwgMHg4RDdBLCAweDJGODYsIDB4OEQ3QiwgMHg4RDdCLCAweDIxQjQsIDB4OEQ3QywgMHg4RDdFLCAweDJGOEIsDQorICAgIDB4OEQ4MCwgMHg4RDg3LCAweDJGOEUsIDB4OEQ4OCwgMHg4RDg4LCAweDIzOEYsIDB4OEQ4OSwgMHg4RDhFLCAweDJGOTYsDQorICAgIDB4OEQ4RiwgMHg4RDhGLCAweDFGMUEsIDB4OEQ5MCwgMHg4RDlELCAweDJGOUMsIDB4OEQ5RSwgMHg4RDlFLCAweDIzOEIsDQorICAgIDB4OEQ5RiwgMHg4REI4LCAweDJGQUEsIDB4OERCOSwgMHg4REI5LCAweDIzOEEsIDB4OERCQSwgMHg4REUxLCAweDJGQzQsDQorICAgIDB4OERFMiwgMHg4REUyLCAweDIzOTEsIDB4OERFMywgMHg4REUzLCAweDJGRUMsIDB4OERFNCwgMHg4REU0LCAweDIyNzEsDQorICAgIDB4OERFNSwgMHg4REU2LCAweDJGRUQsIDB4OERFNywgMHg4REU3LCAweDIzODgsIDB4OERFOCwgMHg4REY2LCAweDJGRUYsDQorICAgIDB4OERGNywgMHg4REY3LCAweDIzOEUsIDB4OERGOCwgMHg4REZELCAweDJGRkUsIDB4OERGRSwgMHg4REZFLCAweDIzOEQsDQorICAgIDB4OEU0MCwgMHg4RTQ1LCAweDMwMDQsIDB4OEU0NiwgMHg4RTQ2LCAweDIzOEMsIDB4OEU0NywgMHg4RTU1LCAweDMwMEEsDQorICAgIDB4OEU1NiwgMHg4RTU2LCAweDIzOTAsIDB4OEU1NywgMHg4RTU3LCAweDMwMTksIDB4OEU1OCwgMHg4RTU4LCAweDIwMzMsDQorICAgIDB4OEU1OSwgMHg4RTU5LCAweDMwMUEsIDB4OEU1QSwgMHg4RTVBLCAweDIyM0MsIDB4OEU1QiwgMHg4RTY3LCAweDMwMUIsDQorICAgIDB4OEU2OCwgMHg4RTY4LCAweDFGRTksIDB4OEU2OSwgMHg4RTZELCAweDMwMjgsIDB4OEU2RSwgMHg4RTZFLCAweDIwNTUsDQorICAgIDB4OEU2RiwgMHg4RTZGLCAweDMwMkQsIDB4OEU3MCwgMHg4RTcwLCAweDIzOTIsIDB4OEU3MSwgMHg4RTdFLCAweDMwMkUsDQorICAgIDB4OEU4MCwgMHg4RTgwLCAweDIzMjQsIDB4OEU4MSwgMHg4RTlBLCAweDMwM0MsIDB4OEU5QiwgMHg4RTlCLCAweDIxNDMsDQorICAgIDB4OEU5QywgMHg4RTlFLCAweDMwNTYsIDB4OEU5RiwgMHg4RTlGLCAweDIxMjksIDB4OEVBMCwgMHg4RUEzLCAweDMwNTksDQorICAgIDB4OEVBNCwgMHg4RUE0LCAweDIyNzcsIDB4OEVBNSwgMHg4RUE2LCAweDMwNUQsIDB4OEVBNywgMHg4RUE3LCAweDFFQTcsDQorICAgIDB4OEVBOCwgMHg4RUFCLCAweDMwNUYsIDB4OEVBQywgMHg4RUFDLCAweDIyODUsIDB4OEVBRCwgMHg4RUFELCAweDMwNjMsDQorICAgIDB4OEVBRSwgMHg4RUFFLCAweDIzODQsIDB4OEVBRiwgMHg4RUJDLCAweDMwNjQsIDB4OEVCRCwgMHg4RUJELCAweDIzODcsDQorICAgIDB4OEVCRSwgMHg4RUJFLCAweDIzODYsIDB4OEVCRiwgMHg4RUMyLCAweDMwNzIsIDB4OEVDMywgMHg4RUMzLCAweDIyOTAsDQorICAgIDB4OEVDNCwgMHg4RUM0LCAweDMwNzYsIDB4OEVDNSwgMHg4RUM1LCAweDFFNDQsIDB4OEVDNiwgMHg4RUNDLCAweDMwNzcsDQorICAgIDB4OEVDRCwgMHg4RUNELCAweDFFMzIsIDB4OEVDRSwgMHg4RUNFLCAweDIzODUsIDB4OEVDRiwgMHg4RUQ1LCAweDMwN0UsDQorICAgIDB4OEVENiwgMHg4RUQ2LCAweDFGMTMsIDB4OEVENywgMHg4RUQ3LCAweDFGNzMsIDB4OEVEOCwgMHg4RUVCLCAweDMwODUsDQorICAgIDB4OEVFQywgMHg4RUVDLCAweDFGRTAsIDB4OEVFRCwgMHg4RUZFLCAweDMwOTksIDB4OEY0MCwgMHg4RjUxLCAweDMwQUIsDQorICAgIDB4OEY1MiwgMHg4RjUyLCAweDIwODcsIDB4OEY1MywgMHg4RjUzLCAweDFFNzgsIDB4OEY1NCwgMHg4RjU0LCAweDIzQUUsDQorICAgIDB4OEY1NSwgMHg4RjU1LCAweDFFRjYsIDB4OEY1NiwgMHg4RjU2LCAweDFGMzEsIDB4OEY1NywgMHg4RjVDLCAweDMwQkQsDQorICAgIDB4OEY1RCwgMHg4RjVELCAweDIwNDUsIDB4OEY1RSwgMHg4RjYzLCAweDMwQzMsIDB4OEY2NCwgMHg4RjY0LCAweDIxNzgsDQorICAgIDB4OEY2NSwgMHg4RjdFLCAweDMwQzksIDB4OEY4MCwgMHg4Rjg1LCAweDMwRTMsIDB4OEY4NiwgMHg4Rjg2LCAweDIzRjUsDQorICAgIDB4OEY4NywgMHg4Rjg3LCAweDMwRTksIDB4OEY4OCwgMHg4Rjg4LCAweDIyNzUsIDB4OEY4OSwgMHg4Rjk0LCAweDMwRUEsDQorICAgIDB4OEY5NSwgMHg4Rjk1LCAweDI2NkUsIDB4OEY5NiwgMHg4Rjk2LCAweDMwRjYsIDB4OEY5NywgMHg4Rjk3LCAweDFFQjAsDQorICAgIDB4OEY5OCwgMHg4RjlBLCAweDMwRjcsIDB4OEY5QiwgMHg4RjlCLCAweDIwODMsIDB4OEY5QywgMHg4RjlDLCAweDMwRkEsDQorICAgIDB4OEY5RCwgMHg4RjlELCAweDIxODgsIDB4OEY5RSwgMHg4RkEwLCAweDMwRkIsIDB4OEZBMSwgMHg4RkExLCAweDI2N0MsDQorICAgIDB4OEZBMiwgMHg4RkJDLCAweDMwRkUsIDB4OEZCRCwgMHg4RkJELCAweDFGQzUsIDB4OEZCRSwgMHg4RkMzLCAweDMxMTksDQorICAgIDB4OEZDNCwgMHg4RkM0LCAweDFFQTEsIDB4OEZDNSwgMHg4RkM1LCAweDMxMUYsIDB4OEZDNiwgMHg4RkM2LCAweDIzOTMsDQorICAgIDB4OEZDNywgMHg4RkNDLCAweDMxMjAsIDB4OEZDRCwgMHg4RkNELCAweDFGMEIsIDB4OEZDRSwgMHg4RkQ3LCAweDMxMjYsDQorICAgIDB4OEZEOCwgMHg4RkQ4LCAweDFFN0MsIDB4OEZEOSwgMHg4RkZFLCAweDMxMzAsIDB4OTA0MCwgMHg5MDdFLCAweDMxNTYsDQorICAgIDB4OTA4MCwgMHg5MDlDLCAweDMxOTUsIDB4OTA5RCwgMHg5MDlELCAweDIzQjQsIDB4OTA5RSwgMHg5MDlFLCAweDIwN0UsDQorICAgIDB4OTA5RiwgMHg5MEI5LCAweDMxQjIsIDB4OTBCQSwgMHg5MEJBLCAweDFFRTMsIDB4OTBCQiwgMHg5MEJGLCAweDMxQ0QsDQorICAgIDB4OTBDMCwgMHg5MEMwLCAweDIwOTUsIDB4OTBDMSwgMHg5MEMxLCAweDIzQkIsIDB4OTBDMiwgMHg5MEM0LCAweDMxRDIsDQorICAgIDB4OTBDNSwgMHg5MEM1LCAweDIzQjksIDB4OTBDNiwgMHg5MERBLCAweDMxRDUsIDB4OTBEQiwgMHg5MERCLCAweDFFMjgsDQorICAgIDB4OTBEQywgMHg5MERDLCAweDIzQkQsIDB4OTBERCwgMHg5MEVDLCAweDMxRUEsIDB4OTBFRCwgMHg5MEVELCAweDIzQjUsDQorICAgIDB4OTBFRSwgMHg5MEVGLCAweDMxRkEsIDB4OTBGMCwgMHg5MEYwLCAweDIzQkEsIDB4OTBGMSwgMHg5MEY2LCAweDMxRkMsDQorICAgIDB4OTBGNywgMHg5MEY3LCAweDIzQjMsIDB4OTBGOCwgMHg5MEZFLCAweDMyMDIsIDB4OTE0MCwgMHg5MTQxLCAweDMyMDksDQorICAgIDB4OTE0MiwgMHg5MTQyLCAweDIxNjIsIDB4OTE0MywgMHg5MTRBLCAweDMyMEIsIDB4OTE0QiwgMHg5MTRCLCAweDFFNUUsDQorICAgIDB4OTE0QywgMHg5MTRDLCAweDMyMTMsIDB4OTE0RCwgMHg5MTRELCAweDFFNUQsIDB4OTE0RSwgMHg5MTUwLCAweDMyMTQsDQorICAgIDB4OTE1MSwgMHg5MTUxLCAweDIzQjcsIDB4OTE1MiwgMHg5MTUzLCAweDMyMTcsIDB4OTE1NCwgMHg5MTU0LCAweDFGMkYsDQorICAgIDB4OTE1NSwgMHg5MTU1LCAweDI0REYsIDB4OTE1NiwgMHg5MTU4LCAweDMyMTksIDB4OTE1OSwgMHg5MTU5LCAweDIzQjIsDQorICAgIDB4OTE1QSwgMHg5MTVBLCAweDIxNEUsIDB4OTE1QiwgMHg5MTVDLCAweDMyMUMsIDB4OTE1RCwgMHg5MTVELCAweDIwNTIsDQorICAgIDB4OTE1RSwgMHg5MTYwLCAweDMyMUUsIDB4OTE2MSwgMHg5MTYxLCAweDIzQkMsIDB4OTE2MiwgMHg5MTYyLCAweDMyMjEsDQorICAgIDB4OTE2MywgMHg5MTYzLCAweDIwRUIsIDB4OTE2NCwgMHg5MTZELCAweDMyMjIsIDB4OTE2RSwgMHg5MTZFLCAweDIyMzIsDQorICAgIDB4OTE2RiwgMHg5MTc1LCAweDMyMkMsIDB4OTE3NiwgMHg5MTc2LCAweDFFM0YsIDB4OTE3NywgMHg5MTc5LCAweDMyMzMsDQorICAgIDB4OTE3QSwgMHg5MTdBLCAweDIwMUIsIDB4OTE3QiwgMHg5MTdCLCAweDIwQkMsIDB4OTE3QywgMHg5MTdDLCAweDIzQkUsDQorICAgIDB4OTE3RCwgMHg5MTdFLCAweDMyMzYsIDB4OTE4MCwgMHg5MTgzLCAweDMyMzgsIDB4OTE4NCwgMHg5MTg0LCAweDFFQUUsDQorICAgIDB4OTE4NSwgMHg5MThDLCAweDMyM0MsIDB4OTE4RCwgMHg5MThELCAweDFFRkIsIDB4OTE4RSwgMHg5MTkwLCAweDMyNDQsDQorICAgIDB4OTE5MSwgMHg5MTkxLCAweDIwODksIDB4OTE5MiwgMHg5MTkyLCAweDMyNDcsIDB4OTE5MywgMHg5MTkzLCAweDIzQjEsDQorICAgIDB4OTE5NCwgMHg5MTk2LCAweDMyNDgsIDB4OTE5NywgMHg5MTk3LCAweDIxQzQsIDB4OTE5OCwgMHg5MTlBLCAweDMyNEIsDQorICAgIDB4OTE5QiwgMHg5MTlCLCAweDIyMTQsIDB4OTE5QywgMHg5MUE4LCAweDMyNEUsIDB4OTFBOSwgMHg5MUE5LCAweDFGREUsDQorICAgIDB4OTFBQSwgMHg5MUFBLCAweDIyMjMsIDB4OTFBQiwgMHg5MUFCLCAweDIzQjYsIDB4OTFBQywgMHg5MUI5LCAweDMyNUIsDQorICAgIDB4OTFCQSwgMHg5MUJBLCAweDI2OEMsIDB4OTFCQiwgMHg5MUJCLCAweDI0REUsIDB4OTFCQywgMHg5MUJFLCAweDMyNjksDQorICAgIDB4OTFCRiwgMHg5MUJGLCAweDI0RTAsIDB4OTFDMCwgMHg5MUMyLCAweDMyNkMsIDB4OTFDMywgMHg5MUMzLCAweDIzQjgsDQorICAgIDB4OTFDNCwgMHg5MUNDLCAweDMyNkYsIDB4OTFDRCwgMHg5MUNELCAweDFFODEsIDB4OTFDRSwgMHg5MUNGLCAweDMyNzgsDQorICAgIDB4OTFEMCwgMHg5MUQwLCAweDFGRkUsIDB4OTFEMSwgMHg5MUQxLCAweDFGNTEsIDB4OTFEMiwgMHg5MUQyLCAweDIxRTEsDQorICAgIDB4OTFEMywgMHg5MUQzLCAweDMyN0EsIDB4OTFENCwgMHg5MUQ0LCAweDIzQjAsIDB4OTFENSwgMHg5MUQ1LCAweDMyN0IsDQorICAgIDB4OTFENiwgMHg5MUQ2LCAweDFGQ0UsIDB4OTFENywgMHg5MUQ3LCAweDMyN0MsIDB4OTFEOCwgMHg5MUQ4LCAweDIxMUUsDQorICAgIDB4OTFEOSwgMHg5MUQ5LCAweDIwMjEsIDB4OTFEQSwgMHg5MURFLCAweDMyN0QsIDB4OTFERiwgMHg5MURGLCAweDI0RTEsDQorICAgIDB4OTFFMCwgMHg5MUUxLCAweDMyODIsIDB4OTFFMiwgMHg5MUUyLCAweDI0QTMsIDB4OTFFMywgMHg5MUU5LCAweDMyODQsDQorICAgIDB4OTFFQSwgMHg5MUVBLCAweDI0QTQsIDB4OTFFQiwgMHg5MUVGLCAweDMyOEIsIDB4OTFGMCwgMHg5MUYwLCAweDIyNzMsDQorICAgIDB4OTFGMSwgMHg5MUYxLCAweDMyOTAsIDB4OTFGMiwgMHg5MUYyLCAweDIxQjAsIDB4OTFGMywgMHg5MUZFLCAweDMyOTEsDQorICAgIDB4OTI0MCwgMHg5MjdFLCAweDMyOUQsIDB4OTI4MCwgMHg5MkI1LCAweDMyREMsIDB4OTJCNiwgMHg5MkI2LCAweDIxRDEsDQorICAgIDB4OTJCNywgMHg5MkNELCAweDMzMTIsIDB4OTJDRSwgMHg5MkNFLCAweDIxMUMsIDB4OTJDRiwgMHg5MkNGLCAweDMzMjksDQorICAgIDB4OTJEMCwgMHg5MkQwLCAweDIzNUQsIDB4OTJEMSwgMHg5MkQzLCAweDMzMkEsIDB4OTJENCwgMHg5MkQ0LCAweDI2ODIsDQorICAgIDB4OTJENSwgMHg5MkRFLCAweDMzMkQsIDB4OTJERiwgMHg5MkRGLCAweDIxMEQsIDB4OTJFMCwgMHg5MkUwLCAweDIwNUEsDQorICAgIDB4OTJFMSwgMHg5MkZELCAweDMzMzcsIDB4OTJGRSwgMHg5MkZFLCAweDFGOEQsIDB4OTM0MCwgMHg5MzRGLCAweDMzNTQsDQorICAgIDB4OTM1MCwgMHg5MzUwLCAweDIxRkYsIDB4OTM1MSwgMHg5MzVDLCAweDMzNjQsIDB4OTM1RCwgMHg5MzVELCAweDFGNTgsDQorICAgIDB4OTM1RSwgMHg5MzZGLCAweDMzNzAsIDB4OTM3MCwgMHg5MzcwLCAweDIxNUIsIDB4OTM3MSwgMHg5Mzc1LCAweDMzODIsDQorICAgIDB4OTM3NiwgMHg5Mzc2LCAweDFFQjYsIDB4OTM3NywgMHg5MzdFLCAweDMzODcsIDB4OTM4MCwgMHg5MzhCLCAweDMzOEYsDQorICAgIDB4OTM4QywgMHg5MzhDLCAweDIwREIsIDB4OTM4RCwgMHg5MzlDLCAweDMzOUIsIDB4OTM5RCwgMHg5MzlELCAweDIzNjAsDQorICAgIDB4OTM5RSwgMHg5M0E0LCAweDMzQUIsIDB4OTNBNSwgMHg5M0E1LCAweDIzNjEsIDB4OTNBNiwgMHg5M0E2LCAweDMzQjIsDQorICAgIDB4OTNBNywgMHg5M0E3LCAweDIwNDAsIDB4OTNBOCwgMHg5M0IzLCAweDMzQjMsIDB4OTNCNCwgMHg5M0I0LCAweDIyOEUsDQorICAgIDB4OTNCNSwgMHg5M0I3LCAweDMzQkYsIDB4OTNCOCwgMHg5M0I4LCAweDFGREYsIDB4OTNCOSwgMHg5M0JBLCAweDMzQzIsDQorICAgIDB4OTNCQiwgMHg5M0JCLCAweDIzNUUsIDB4OTNCQywgMHg5M0JDLCAweDMzQzQsIDB4OTNCRCwgMHg5M0JELCAweDFFNkEsDQorICAgIDB4OTNCRSwgMHg5M0M1LCAweDMzQzUsIDB4OTNDNiwgMHg5M0M2LCAweDIwMDIsIDB4OTNDNywgMHg5M0NFLCAweDMzQ0QsDQorICAgIDB4OTNDRiwgMHg5M0NGLCAweDIwOTMsIDB4OTNEMCwgMHg5M0Q2LCAweDMzRDUsIDB4OTNENywgMHg5M0Q3LCAweDIzNUYsDQorICAgIDB4OTNEOCwgMHg5M0RBLCAweDMzREMsIDB4OTNEQiwgMHg5M0RCLCAweDFFQUMsIDB4OTNEQywgMHg5M0RDLCAweDFFNTQsDQorICAgIDB4OTNERCwgMHg5M0UwLCAweDMzREYsIDB4OTNFMSwgMHg5M0UxLCAweDFGMDgsIDB4OTNFMiwgMHg5M0UzLCAweDMzRTMsDQorICAgIDB4OTNFNCwgMHg5M0U0LCAweDIwQzAsIDB4OTNFNSwgMHg5M0U1LCAweDIzNjIsIDB4OTNFNiwgMHg5M0U4LCAweDMzRTUsDQorICAgIDB4OTNFOSwgMHg5M0U5LCAweDIxNjAsIDB4OTNFQSwgMHg5M0VBLCAweDMzRTgsIDB4OTNFQiwgMHg5M0VCLCAweDIxOUQsDQorICAgIDB4OTNFQywgMHg5M0VDLCAweDFGOEUsIDB4OTNFRCwgMHg5M0VELCAweDIyMkQsIDB4OTNFRSwgMHg5M0VFLCAweDMzRTksDQorICAgIDB4OTNFRiwgMHg5M0VGLCAweDIwNDcsIDB4OTNGMCwgMHg5M0YwLCAweDMzRUEsIDB4OTNGMSwgMHg5M0YxLCAweDIyNjIsDQorICAgIDB4OTNGMiwgMHg5M0YzLCAweDMzRUIsIDB4OTNGNCwgMHg5M0Y0LCAweDFGNjcsIDB4OTNGNSwgMHg5M0Y1LCAweDFFQjIsDQorICAgIDB4OTNGNiwgMHg5M0Y5LCAweDMzRUQsIDB4OTNGQSwgMHg5M0ZBLCAweDFFQTksIDB4OTNGQiwgMHg5M0ZELCAweDMzRjEsDQorICAgIDB4OTNGRSwgMHg5M0ZFLCAweDFGQ0MsIDB4OTQ0MCwgMHg5NDQzLCAweDMzRjQsIDB4OTQ0NCwgMHg5NDQ0LCAweDFGNzIsDQorICAgIDB4OTQ0NSwgMHg5NDRDLCAweDMzRjgsIDB4OTQ0RCwgMHg5NDRELCAweDIwOTgsIDB4OTQ0RSwgMHg5NDRGLCAweDM0MDAsDQorICAgIDB4OTQ1MCwgMHg5NDUwLCAweDFFNTIsIDB4OTQ1MSwgMHg5NDUxLCAweDIwQTQsIDB4OTQ1MiwgMHg5NDUyLCAweDFGMUMsDQorICAgIDB4OTQ1MywgMHg5NDUzLCAweDIyOEYsIDB4OTQ1NCwgMHg5NDU0LCAweDM0MDIsIDB4OTQ1NSwgMHg5NDU1LCAweDFGRUQsDQorICAgIDB4OTQ1NiwgMHg5NDU3LCAweDM0MDMsIDB4OTQ1OCwgMHg5NDU4LCAweDIzNjUsIDB4OTQ1OSwgMHg5NDVBLCAweDM0MDUsDQorICAgIDB4OTQ1QiwgMHg5NDVCLCAweDFFMkQsIDB4OTQ1QywgMHg5NDVDLCAweDIxNTIsIDB4OTQ1RCwgMHg5NDVELCAweDIzNjYsDQorICAgIDB4OTQ1RSwgMHg5NDVFLCAweDM0MDcsIDB4OTQ1RiwgMHg5NDVGLCAweDIwRkEsIDB4OTQ2MCwgMHg5NDYzLCAweDM0MDgsDQorICAgIDB4OTQ2NCwgMHg5NDY0LCAweDIzNjMsIDB4OTQ2NSwgMHg5NDY1LCAweDM0MEMsIDB4OTQ2NiwgMHg5NDY2LCAweDIwOUEsDQorICAgIDB4OTQ2NywgMHg5NDZELCAweDM0MEQsIDB4OTQ2RSwgMHg5NDZFLCAweDIwM0MsIDB4OTQ2RiwgMHg5NDcxLCAweDM0MTQsDQorICAgIDB4OTQ3MiwgMHg5NDcyLCAweDFGRjYsIDB4OTQ3MywgMHg5NDczLCAweDM0MTcsIDB4OTQ3NCwgMHg5NDc0LCAweDIzNjQsDQorICAgIDB4OTQ3NSwgMHg5NDc1LCAweDM0MTgsIDB4OTQ3NiwgMHg5NDc2LCAweDFFNjksIDB4OTQ3NywgMHg5NDc3LCAweDM0MTksDQorICAgIDB4OTQ3OCwgMHg5NDc4LCAweDIzNjcsIDB4OTQ3OSwgMHg5NDc5LCAweDM0MUEsIDB4OTQ3QSwgMHg5NDdBLCAweDIxMUQsDQorICAgIDB4OTQ3QiwgMHg5NDdFLCAweDM0MUIsIDB4OTQ4MCwgMHg5NDgwLCAweDIyNTksIDB4OTQ4MSwgMHg5NDgxLCAweDIwNTYsDQorICAgIDB4OTQ4MiwgMHg5NDgyLCAweDIxNjMsIDB4OTQ4MywgMHg5NDg2LCAweDM0MUYsIDB4OTQ4NywgMHg5NDg3LCAweDFGQTksDQorICAgIDB4OTQ4OCwgMHg5NDg4LCAweDFGRkMsIDB4OTQ4OSwgMHg5NEEwLCAweDM0MjMsIDB4OTRBMSwgMHg5NEExLCAweDFFMkUsDQorICAgIDB4OTRBMiwgMHg5NEIyLCAweDM0M0IsIDB4OTRCMywgMHg5NEIzLCAweDFFQkMsIDB4OTRCNCwgMHg5NEI0LCAweDM0NEMsDQorICAgIDB4OTRCNSwgMHg5NEI1LCAweDIxNDIsIDB4OTRCNiwgMHg5NEJFLCAweDM0NEQsIDB4OTRCRiwgMHg5NEJGLCAweDIwMUUsDQorICAgIDB4OTRDMCwgMHg5NEMwLCAweDFFNDMsIDB4OTRDMSwgMHg5NENCLCAweDM0NTYsIDB4OTRDQywgMHg5NENDLCAweDI0RDQsDQorICAgIDB4OTRDRCwgMHg5NEQ3LCAweDM0NjEsIDB4OTREOCwgMHg5NEQ4LCAweDIyNkYsIDB4OTREOSwgMHg5NERGLCAweDM0NkMsDQorICAgIDB4OTRFMCwgMHg5NEUwLCAweDFFRDcsIDB4OTRFMSwgMHg5NEZFLCAweDM0NzMsIDB4OTU0MCwgMHg5NTcxLCAweDM0OTEsDQorICAgIDB4OTU3MiwgMHg5NTcyLCAweDIxMkQsIDB4OTU3MywgMHg5NTdFLCAweDM0QzMsIDB4OTU4MCwgMHg5NTgyLCAweDM0Q0YsDQorICAgIDB4OTU4MywgMHg5NTgzLCAweDIyOUIsIDB4OTU4NCwgMHg5NTlELCAweDM0RDIsIDB4OTU5RSwgMHg5NTlFLCAweDIyNTYsDQorICAgIDB4OTU5RiwgMHg5NTlGLCAweDI0QTgsIDB4OTVBMCwgMHg5NUIyLCAweDM0RUMsIDB4OTVCMywgMHg5NUIzLCAweDFFNzksDQorICAgIDB4OTVCNCwgMHg5NUI5LCAweDM0RkYsIDB4OTVCQSwgMHg5NUJBLCAweDIyNUEsIDB4OTVCQiwgMHg5NUNFLCAweDM1MDUsDQorICAgIDB4OTVDRiwgMHg5NUNGLCAweDI0QTcsIDB4OTVEMCwgMHg5NUQwLCAweDM1MTksIDB4OTVEMSwgMHg5NUQxLCAweDI2ODYsDQorICAgIDB4OTVEMiwgMHg5NUQyLCAweDI0QTYsIDB4OTVEMywgMHg5NUQzLCAweDM1MUEsIDB4OTVENCwgMHg5NUQ0LCAweDIxQ0UsDQorICAgIDB4OTVENSwgMHg5NUUwLCAweDM1MUIsIDB4OTVFMSwgMHg5NUUxLCAweDI0QTksIDB4OTVFMiwgMHg5NUU2LCAweDM1MjcsDQorICAgIDB4OTVFNywgMHg5NUU3LCAweDFGRTcsIDB4OTVFOCwgMHg5NUYwLCAweDM1MkMsIDB4OTVGMSwgMHg5NUYxLCAweDIxMTIsDQorICAgIDB4OTVGMiwgMHg5NUY3LCAweDM1MzUsIDB4OTVGOCwgMHg5NUY4LCAweDIxM0MsIDB4OTVGOSwgMHg5NUZELCAweDM1M0IsDQorICAgIDB4OTVGRSwgMHg5NUZFLCAweDFGNUMsIDB4OTY0MCwgMHg5NjU1LCAweDM1NDAsIDB4OTY1NiwgMHg5NjU2LCAweDI0QzQsDQorICAgIDB4OTY1NywgMHg5NjdCLCAweDM1NTYsIDB4OTY3QywgMHg5NjdDLCAweDFFQ0MsIDB4OTY3RCwgMHg5NjdFLCAweDM1N0IsDQorICAgIDB4OTY4MCwgMHg5NkZFLCAweDM1N0QsIDB4OTc0MCwgMHg5NzY2LCAweDM1RkMsIDB4OTc2NywgMHg5NzY3LCAweDI0NkEsDQorICAgIDB4OTc2OCwgMHg5NzZCLCAweDM2MjMsIDB4OTc2QywgMHg5NzZDLCAweDIxNzUsIDB4OTc2RCwgMHg5NzZELCAweDM2MjcsDQorICAgIDB4OTc2RSwgMHg5NzZFLCAweDI0NkQsIDB4OTc2RiwgMHg5NzdFLCAweDM2MjgsIDB4OTc4MCwgMHg5Nzk1LCAweDM2MzgsDQorICAgIDB4OTc5NiwgMHg5Nzk2LCAweDI0NkIsIDB4OTc5NywgMHg5Nzk3LCAweDIyNUYsIDB4OTc5OCwgMHg5NzlDLCAweDM2NEUsDQorICAgIDB4OTc5RCwgMHg5NzlELCAweDFFQ0UsIDB4OTc5RSwgMHg5N0EyLCAweDM2NTMsIDB4OTdBMywgMHg5N0EzLCAweDIyNzIsDQorICAgIDB4OTdBNCwgMHg5N0JFLCAweDM2NTgsIDB4OTdCRiwgMHg5N0JGLCAweDI0NzMsIDB4OTdDMCwgMHg5N0VELCAweDM2NzMsDQorICAgIDB4OTdFRSwgMHg5N0VFLCAweDIxRkUsIDB4OTdFRiwgMHg5N0Y2LCAweDM2QTEsIDB4OTdGNywgMHg5N0Y3LCAweDFFRkUsDQorICAgIDB4OTdGOCwgMHg5N0ZFLCAweDM2QTksIDB4OTg0MCwgMHg5ODQ0LCAweDM2QjAsIDB4OTg0NSwgMHg5ODQ1LCAweDI0NzUsDQorICAgIDB4OTg0NiwgMHg5ODQ4LCAweDM2QjUsIDB4OTg0OSwgMHg5ODQ5LCAweDIyMEEsIDB4OTg0QSwgMHg5ODRFLCAweDM2QjgsDQorICAgIDB4OTg0RiwgMHg5ODRGLCAweDFGNkYsIDB4OTg1MCwgMHg5ODcwLCAweDM2QkQsIDB4OTg3MSwgMHg5ODcxLCAweDI0NjgsDQorICAgIDB4OTg3MiwgMHg5ODcyLCAweDM2REUsIDB4OTg3MywgMHg5ODczLCAweDIxMDAsIDB4OTg3NCwgMHg5ODdFLCAweDM2REYsDQorICAgIDB4OTg4MCwgMHg5ODgwLCAweDM2RUEsIDB4OTg4MSwgMHg5ODgxLCAweDI0NzYsIDB4OTg4MiwgMHg5ODhBLCAweDM2RUIsDQorICAgIDB4OTg4QiwgMHg5ODhCLCAweDFGMjcsIDB4OTg4QywgMHg5ODhDLCAweDIwRDcsIDB4OTg4RCwgMHg5ODlGLCAweDM2RjQsDQorICAgIDB4OThBMCwgMHg5OEEwLCAweDI0N0MsIDB4OThBMSwgMHg5OEE5LCAweDM3MDcsIDB4OThBQSwgMHg5OEFBLCAweDFGQTEsDQorICAgIDB4OThBQiwgMHg5OEI1LCAweDM3MTAsIDB4OThCNiwgMHg5OEI2LCAweDIyQUEsIDB4OThCNywgMHg5OEI3LCAweDIwMDUsDQorICAgIDB4OThCOCwgMHg5OEI5LCAweDM3MUIsIDB4OThCQSwgMHg5OEJBLCAweDI0NkMsIDB4OThCQiwgMHg5OEM2LCAweDM3MUQsDQorICAgIDB4OThDNywgMHg5OEM3LCAweDIwM0UsIDB4OThDOCwgMHg5OENBLCAweDM3MjksIDB4OThDQiwgMHg5OENCLCAweDFFNEMsDQorICAgIDB4OThDQywgMHg5OENGLCAweDM3MkMsIDB4OThEMCwgMHg5OEQwLCAweDIxM0EsIDB4OThEMSwgMHg5OEQyLCAweDM3MzAsDQorICAgIDB4OThEMywgMHg5OEQzLCAweDIyMDQsIDB4OThENCwgMHg5OEUyLCAweDM3MzIsIDB4OThFMywgMHg5OEUzLCAweDIwQzMsDQorICAgIDB4OThFNCwgMHg5OEU0LCAweDIxNDAsIDB4OThFNSwgMHg5OEU1LCAweDI0NzcsIDB4OThFNiwgMHg5OEVFLCAweDM3NDEsDQorICAgIDB4OThFRiwgMHg5OEVGLCAweDI0NzQsIDB4OThGMCwgMHg5OEYxLCAweDM3NEEsIDB4OThGMiwgMHg5OEYyLCAweDIwREQsDQorICAgIDB4OThGMywgMHg5OEZFLCAweDM3NEMsIDB4OTk0MCwgMHg5OTQyLCAweDM3NTgsIDB4OTk0MywgMHg5OTQzLCAweDFGNjgsDQorICAgIDB4OTk0NCwgMHg5OTQ0LCAweDM3NUIsIDB4OTk0NSwgMHg5OTQ1LCAweDIxODUsIDB4OTk0NiwgMHg5OTY1LCAweDM3NUMsDQorICAgIDB4OTk2NiwgMHg5OTY2LCAweDI0NzIsIDB4OTk2NywgMHg5OTZELCAweDM3N0MsIDB4OTk2RSwgMHg5OTZFLCAweDFFQjUsDQorICAgIDB4OTk2RiwgMHg5OTc0LCAweDM3ODMsIDB4OTk3NSwgMHg5OTc1LCAweDI0NzgsIDB4OTk3NiwgMHg5OTc5LCAweDM3ODksDQorICAgIDB4OTk3QSwgMHg5OTdBLCAweDFGOEIsIDB4OTk3QiwgMHg5OTdCLCAweDI0ODQsIDB4OTk3QywgMHg5OTdFLCAweDM3OEQsDQorICAgIDB4OTk4MCwgMHg5OTg0LCAweDM3OTAsIDB4OTk4NSwgMHg5OTg1LCAweDI2OTksIDB4OTk4NiwgMHg5OTg4LCAweDM3OTUsDQorICAgIDB4OTk4OSwgMHg5OTg5LCAweDI0ODIsIDB4OTk4QSwgMHg5OThELCAweDM3OTgsIDB4OTk4RSwgMHg5OThFLCAweDIwQTEsDQorICAgIDB4OTk4RiwgMHg5OTkwLCAweDM3OUMsIDB4OTk5MSwgMHg5OTkxLCAweDFGOTIsIDB4OTk5MiwgMHg5OTk4LCAweDM3OUUsDQorICAgIDB4OTk5OSwgMHg5OTk5LCAweDFGMzgsIDB4OTk5QSwgMHg5OUE4LCAweDM3QTUsIDB4OTlBOSwgMHg5OUE5LCAweDI0ODUsDQorICAgIDB4OTlBQSwgMHg5OUFGLCAweDM3QjQsIDB4OTlCMCwgMHg5OUIwLCAweDI0ODAsIDB4OTlCMSwgMHg5OUIxLCAweDI0NkUsDQorICAgIDB4OTlCMiwgMHg5OUIyLCAweDM3QkEsIDB4OTlCMywgMHg5OUIzLCAweDI0N0IsIDB4OTlCNCwgMHg5OUI0LCAweDI0ODYsDQorICAgIDB4OTlCNSwgMHg5OUI1LCAweDI0NzEsIDB4OTlCNiwgMHg5OUJDLCAweDM3QkIsIDB4OTlCRCwgMHg5OUJELCAweDI0ODMsDQorICAgIDB4OTlCRSwgMHg5OUJFLCAweDI0NzAsIDB4OTlCRiwgMHg5OUJGLCAweDM3QzIsIDB4OTlDMCwgMHg5OUMwLCAweDI0NjksDQorICAgIDB4OTlDMSwgMHg5OUMxLCAweDM3QzMsIDB4OTlDMiwgMHg5OUMyLCAweDI0N0YsIDB4OTlDMywgMHg5OUM4LCAweDM3QzQsDQorICAgIDB4OTlDOSwgMHg5OUM5LCAweDI0NkYsIDB4OTlDQSwgMHg5OUNELCAweDM3Q0EsIDB4OTlDRSwgMHg5OUNFLCAweDI0ODEsDQorICAgIDB4OTlDRiwgMHg5OUQwLCAweDM3Q0UsIDB4OTlEMSwgMHg5OUQxLCAweDIyMjAsIDB4OTlEMiwgMHg5OUQ5LCAweDM3RDAsDQorICAgIDB4OTlEQSwgMHg5OURBLCAweDFGRjUsIDB4OTlEQiwgMHg5OURGLCAweDM3RDgsIDB4OTlFMCwgMHg5OUUwLCAweDIwRjQsDQorICAgIDB4OTlFMSwgMHg5OUU0LCAweDM3REQsIDB4OTlFNSwgMHg5OUU1LCAweDI0N0QsIDB4OTlFNiwgMHg5OUU3LCAweDM3RTEsDQorICAgIDB4OTlFOCwgMHg5OUU4LCAweDI0NzksIDB4OTlFOSwgMHg5OUVCLCAweDM3RTMsIDB4OTlFQywgMHg5OUVDLCAweDI0N0UsDQorICAgIDB4OTlFRCwgMHg5OUYzLCAweDM3RTYsIDB4OTlGNCwgMHg5OUY0LCAweDI0N0EsIDB4OTlGNSwgMHg5OUZFLCAweDM3RUQsDQorICAgIDB4OUE0MCwgMHg5QTQ5LCAweDM3RjcsIDB4OUE0QSwgMHg5QTRBLCAweDIwRTMsIDB4OUE0QiwgMHg5QTU2LCAweDM4MDEsDQorICAgIDB4OUE1NywgMHg5QTU3LCAweDIwQUQsIDB4OUE1OCwgMHg5QTY0LCAweDM4MEQsIDB4OUE2NSwgMHg5QTY1LCAweDI0Q0IsDQorICAgIDB4OUE2NiwgMHg5QTY2LCAweDM4MUEsIDB4OUE2NywgMHg5QTY3LCAweDFGNTMsIDB4OUE2OCwgMHg5QTcwLCAweDM4MUIsDQorICAgIDB4OUE3MSwgMHg5QTcxLCAweDIxNTksIDB4OUE3MiwgMHg5QTc1LCAweDM4MjQsIDB4OUE3NiwgMHg5QTc2LCAweDIwMTMsDQorICAgIDB4OUE3NywgMHg5QTc3LCAweDFGMzMsIDB4OUE3OCwgMHg5QTdFLCAweDM4MjgsIDB4OUE4MCwgMHg5QTg3LCAweDM4MkYsDQorICAgIDB4OUE4OCwgMHg5QTg4LCAweDFFNUMsIDB4OUE4OSwgMHg5QThCLCAweDM4MzcsIDB4OUE4QywgMHg5QThDLCAweDI0ODgsDQorICAgIDB4OUE4RCwgMHg5QTkwLCAweDM4M0EsIDB4OUE5MSwgMHg5QTkxLCAweDI0ODcsIDB4OUE5MiwgMHg5QTk2LCAweDM4M0UsDQorICAgIDB4OUE5NywgMHg5QTk3LCAweDI0OEEsIDB4OUE5OCwgMHg5QTk5LCAweDM4NDMsIDB4OUE5QSwgMHg5QTlBLCAweDI0ODksDQorICAgIDB4OUE5QiwgMHg5QTlCLCAweDI0OEIsIDB4OUE5QywgMHg5QTlELCAweDM4NDUsIDB4OUE5RSwgMHg5QTlFLCAweDFGODMsDQorICAgIDB4OUE5RiwgMHg5QUExLCAweDM4NDcsIDB4OUFBMiwgMHg5QUEyLCAweDIxMEYsIDB4OUFBMywgMHg5QUEzLCAweDFGREIsDQorICAgIDB4OUFBNCwgMHg5QUE5LCAweDM4NEEsIDB4OUFBQSwgMHg5QUFBLCAweDIwQUYsIDB4OUFBQiwgMHg5QUNGLCAweDM4NTAsDQorICAgIDB4OUFEMCwgMHg5QUQwLCAweDI0QzAsIDB4OUFEMSwgMHg5QUQ1LCAweDM4NzUsIDB4OUFENiwgMHg5QUQ2LCAweDIyNkQsDQorICAgIDB4OUFENywgMHg5QUQ5LCAweDM4N0EsIDB4OUFEQSwgMHg5QURBLCAweDI0QzEsIDB4OUFEQiwgMHg5QUUxLCAweDM4N0QsDQorICAgIDB4OUFFMiwgMHg5QUUyLCAweDIwQ0EsIDB4OUFFMywgMHg5QUUzLCAweDM4ODQsIDB4OUFFNCwgMHg5QUU0LCAweDIwRTcsDQorICAgIDB4OUFFNSwgMHg5QUU1LCAweDI0QzIsIDB4OUFFNiwgMHg5QUZFLCAweDM4ODUsIDB4OUI0MCwgMHg5QjdFLCAweDM4OUUsDQorICAgIDB4OUI4MCwgMHg5QkQwLCAweDM4REQsIDB4OUJEMSwgMHg5QkQxLCAweDIzREMsIDB4OUJEMiwgMHg5QkRCLCAweDM5MkUsDQorICAgIDB4OUJEQywgMHg5QkRDLCAweDIzREIsIDB4OUJERCwgMHg5QkZFLCAweDM5MzgsIDB4OUM0MCwgMHg5QzUyLCAweDM5NUEsDQorICAgIDB4OUM1MywgMHg5QzUzLCAweDIwNUUsIDB4OUM1NCwgMHg5QzU4LCAweDM5NkQsIDB4OUM1OSwgMHg5QzU5LCAweDIyNDQsDQorICAgIDB4OUM1QSwgMHg5QzVBLCAweDIzRTIsIDB4OUM1QiwgMHg5QzVCLCAweDM5NzIsIDB4OUM1QywgMHg5QzVDLCAweDIwRDQsDQorICAgIDB4OUM1RCwgMHg5Qzc0LCAweDM5NzMsIDB4OUM3NSwgMHg5Qzc1LCAweDIxOUYsIDB4OUM3NiwgMHg5Qzc4LCAweDM5OEIsDQorICAgIDB4OUM3OSwgMHg5Qzc5LCAweDFFNjYsIDB4OUM3QSwgMHg5QzdFLCAweDM5OEUsIDB4OUM4MCwgMHg5Qzg1LCAweDM5OTMsDQorICAgIDB4OUM4NiwgMHg5Qzg2LCAweDFGNjMsIDB4OUM4NywgMHg5QzlDLCAweDM5OTksIDB4OUM5RCwgMHg5QzlELCAweDIzREQsDQorICAgIDB4OUM5RSwgMHg5Q0FBLCAweDM5QUYsIDB4OUNBQiwgMHg5Q0FCLCAweDIxNkIsIDB4OUNBQywgMHg5Q0M5LCAweDM5QkMsDQorICAgIDB4OUNDQSwgMHg5Q0NBLCAweDIyQjUsIDB4OUNDQiwgMHg5Q0NFLCAweDM5REEsIDB4OUNDRiwgMHg5Q0NGLCAweDFGMjYsDQorICAgIDB4OUNEMCwgMHg5Q0U1LCAweDM5REUsIDB4OUNFNiwgMHg5Q0U2LCAweDFFNjMsIDB4OUNFNywgMHg5Q0U3LCAweDIwODgsDQorICAgIDB4OUNFOCwgMHg5Q0VCLCAweDM5RjQsIDB4OUNFQywgMHg5Q0VDLCAweDFFQkQsIDB4OUNFRCwgMHg5Q0VELCAweDM5RjgsDQorICAgIDB4OUNFRSwgMHg5Q0VFLCAweDIzNDEsIDB4OUNFRiwgMHg5Q0ZBLCAweDM5RjksIDB4OUNGQiwgMHg5Q0ZCLCAweDFGNEIsDQorICAgIDB4OUNGQywgMHg5Q0ZELCAweDNBMDUsIDB4OUNGRSwgMHg5Q0ZFLCAweDIyOTIsIDB4OUQ0MCwgMHg5RDQxLCAweDNBMDcsDQorICAgIDB4OUQ0MiwgMHg5RDQyLCAweDIxMjQsIDB4OUQ0MywgMHg5RDQ1LCAweDNBMDksIDB4OUQ0NiwgMHg5RDQ2LCAweDIwNDgsDQorICAgIDB4OUQ0NywgMHg5RDQ3LCAweDIzRTAsIDB4OUQ0OCwgMHg5RDRDLCAweDNBMEMsIDB4OUQ0RCwgMHg5RDRELCAweDIwNzcsDQorICAgIDB4OUQ0RSwgMHg5RDRFLCAweDNBMTEsIDB4OUQ0RiwgMHg5RDRGLCAweDIyM0EsIDB4OUQ1MCwgMHg5RDYwLCAweDNBMTIsDQorICAgIDB4OUQ2MSwgMHg5RDYxLCAweDIwQjEsIDB4OUQ2MiwgMHg5RDY3LCAweDNBMjMsIDB4OUQ2OCwgMHg5RDY4LCAweDFGNDEsDQorICAgIDB4OUQ2OSwgMHg5RDY5LCAweDIwMUMsIDB4OUQ2QSwgMHg5RDZELCAweDNBMjksIDB4OUQ2RSwgMHg5RDZFLCAweDIyQjgsDQorICAgIDB4OUQ2RiwgMHg5RDcwLCAweDNBMkQsIDB4OUQ3MSwgMHg5RDcxLCAweDIyNzYsIDB4OUQ3MiwgMHg5RDc0LCAweDNBMkYsDQorICAgIDB4OUQ3NSwgMHg5RDc1LCAweDFGOUIsIDB4OUQ3NiwgMHg5RDdBLCAweDNBMzIsIDB4OUQ3QiwgMHg5RDdCLCAweDFGOUYsDQorICAgIDB4OUQ3QywgMHg5RDdDLCAweDNBMzcsIDB4OUQ3RCwgMHg5RDdELCAweDI1Q0EsIDB4OUQ3RSwgMHg5RDdFLCAweDNBMzgsDQorICAgIDB4OUQ4MCwgMHg5RDg5LCAweDNBMzksIDB4OUQ4QSwgMHg5RDhBLCAweDIwQkUsIDB4OUQ4QiwgMHg5RDhDLCAweDNBNDMsDQorICAgIDB4OUQ4RCwgMHg5RDhELCAweDFGQjQsIDB4OUQ4RSwgMHg5RDkwLCAweDNBNDUsIDB4OUQ5MSwgMHg5RDkxLCAweDIzRDcsDQorICAgIDB4OUQ5MiwgMHg5RDk4LCAweDNBNDgsIDB4OUQ5OSwgMHg5RDk5LCAweDIxMDUsIDB4OUQ5QSwgMHg5REEwLCAweDNBNEYsDQorICAgIDB4OURBMSwgMHg5REExLCAweDIzRTEsIDB4OURBMiwgMHg5REEyLCAweDFGRUMsIDB4OURBMywgMHg5REE2LCAweDNBNTYsDQorICAgIDB4OURBNywgMHg5REE3LCAweDIzRUEsIDB4OURBOCwgMHg5REFCLCAweDNBNUEsIDB4OURBQywgMHg5REFDLCAweDIzRTMsDQorICAgIDB4OURBRCwgMHg5REFELCAweDIxMEUsIDB4OURBRSwgMHg5REIxLCAweDNBNUUsIDB4OURCMiwgMHg5REIyLCAweDFGQTYsDQorICAgIDB4OURCMywgMHg5REIzLCAweDIwMDQsIDB4OURCNCwgMHg5REJELCAweDNBNjIsIDB4OURCRSwgMHg5REJFLCAweDFGOUQsDQorICAgIDB4OURCRiwgMHg5REM1LCAweDNBNkMsIDB4OURDNiwgMHg5REM2LCAweDIzRTUsIDB4OURDNywgMHg5REM4LCAweDNBNzMsDQorICAgIDB4OURDOSwgMHg5REM5LCAweDIyNjQsIDB4OURDQSwgMHg5RENDLCAweDNBNzUsIDB4OURDRCwgMHg5RENELCAweDI0RTIsDQorICAgIDB4OURDRSwgMHg5REQxLCAweDNBNzgsIDB4OUREMiwgMHg5REQyLCAweDIzREUsIDB4OUREMywgMHg5REQ0LCAweDNBN0MsDQorICAgIDB4OURENSwgMHg5REQ1LCAweDFFQzQsIDB4OURENiwgMHg5REUwLCAweDNBN0UsIDB4OURFMSwgMHg5REUxLCAweDIyQjYsDQorICAgIDB4OURFMiwgMHg5REUyLCAweDIwQTksIDB4OURFMywgMHg5REYwLCAweDNBODksIDB4OURGMSwgMHg5REYxLCAweDIxMkIsDQorICAgIDB4OURGMiwgMHg5REYzLCAweDNBOTcsIDB4OURGNCwgMHg5REY0LCAweDIwQTUsIDB4OURGNSwgMHg5REY2LCAweDNBOTksDQorICAgIDB4OURGNywgMHg5REY3LCAweDI2OEIsIDB4OURGOCwgMHg5REY5LCAweDNBOUIsIDB4OURGQSwgMHg5REZBLCAweDFGNzYsDQorICAgIDB4OURGQiwgMHg5REZDLCAweDNBOUQsIDB4OURGRCwgMHg5REZELCAweDIxNkQsIDB4OURGRSwgMHg5REZFLCAweDNBOUYsDQorICAgIDB4OUU0MCwgMHg5RTQ0LCAweDNBQTAsIDB4OUU0NSwgMHg5RTQ1LCAweDIwMDEsIDB4OUU0NiwgMHg5RTQ3LCAweDNBQTUsDQorICAgIDB4OUU0OCwgMHg5RTQ4LCAweDIxOTEsIDB4OUU0OSwgMHg5RTQ5LCAweDFFNTAsIDB4OUU0QSwgMHg5RTUxLCAweDNBQTcsDQorICAgIDB4OUU1MiwgMHg5RTUyLCAweDFGOUMsIDB4OUU1MywgMHg5RTUzLCAweDNBQUYsIDB4OUU1NCwgMHg5RTU0LCAweDIzREEsDQorICAgIDB4OUU1NSwgMHg5RTU1LCAweDNBQjAsIDB4OUU1NiwgMHg5RTU2LCAweDIwNTMsIDB4OUU1NywgMHg5RTVDLCAweDNBQjEsDQorICAgIDB4OUU1RCwgMHg5RTVELCAweDIzRTksIDB4OUU1RSwgMHg5RTVFLCAweDIzRTQsIDB4OUU1RiwgMHg5RTYwLCAweDNBQjcsDQorICAgIDB4OUU2MSwgMHg5RTYxLCAweDIxRDUsIDB4OUU2MiwgMHg5RTYyLCAweDNBQjksIDB4OUU2MywgMHg5RTYzLCAweDIzRTYsDQorICAgIDB4OUU2NCwgMHg5RTY2LCAweDNBQkEsIDB4OUU2NywgMHg5RTY3LCAweDIzREYsIDB4OUU2OCwgMHg5RTZCLCAweDNBQkQsDQorICAgIDB4OUU2QywgMHg5RTZDLCAweDFFNEYsIDB4OUU2RCwgMHg5RTZFLCAweDNBQzEsIDB4OUU2RiwgMHg5RTZGLCAweDIzRDksDQorICAgIDB4OUU3MCwgMHg5RTcxLCAweDNBQzMsIDB4OUU3MiwgMHg5RTcyLCAweDIwMTQsIDB4OUU3MywgMHg5RTczLCAweDNBQzUsDQorICAgIDB4OUU3NCwgMHg5RTc0LCAweDIzRUMsIDB4OUU3NSwgMHg5RTc1LCAweDIzRUIsIDB4OUU3NiwgMHg5RTdBLCAweDNBQzYsDQorICAgIDB4OUU3QiwgMHg5RTdCLCAweDIzRDgsIDB4OUU3QywgMHg5RTdDLCAweDIzRUUsIDB4OUU3RCwgMHg5RTdFLCAweDNBQ0IsDQorICAgIDB4OUU4MCwgMHg5RTg0LCAweDNBQ0QsIDB4OUU4NSwgMHg5RTg1LCAweDI2OEUsIDB4OUU4NiwgMHg5RTg2LCAweDNBRDIsDQorICAgIDB4OUU4NywgMHg5RTg3LCAweDIzRUQsIDB4OUU4OCwgMHg5RTkwLCAweDNBRDMsIDB4OUU5MSwgMHg5RTkxLCAweDFGRkEsDQorICAgIDB4OUU5MiwgMHg5RTk1LCAweDNBREMsIDB4OUU5NiwgMHg5RTk2LCAweDIzRDYsIDB4OUU5NywgMHg5RTk3LCAweDIzRTgsDQorICAgIDB4OUU5OCwgMHg5RUExLCAweDNBRTAsIDB4OUVBMiwgMHg5RUEyLCAweDIxMDYsIDB4OUVBMywgMHg5RUE1LCAweDNBRUEsDQorICAgIDB4OUVBNiwgMHg5RUE2LCAweDIwMEIsIDB4OUVBNywgMHg5RUE4LCAweDNBRUQsIDB4OUVBOSwgMHg5RUE5LCAweDIxNjYsDQorICAgIDB4OUVBQSwgMHg5RUFELCAweDNBRUYsIDB4OUVBRSwgMHg5RUFFLCAweDIzRUYsIDB4OUVBRiwgMHg5RUIyLCAweDNBRjMsDQorICAgIDB4OUVCMywgMHg5RUIzLCAweDIxODksIDB4OUVCNCwgMHg5RUI0LCAweDIwNTgsIDB4OUVCNSwgMHg5RUI2LCAweDNBRjcsDQorICAgIDB4OUVCNywgMHg5RUI3LCAweDIzRTcsIDB4OUVCOCwgMHg5RUY0LCAweDNBRjksIDB4OUVGNSwgMHg5RUY1LCAweDIxQTMsDQorICAgIDB4OUVGNiwgMHg5RUZFLCAweDNCMzYsIDB4OUY0MCwgMHg5RjRELCAweDNCM0YsIDB4OUY0RSwgMHg5RjRFLCAweDIxN0EsDQorICAgIDB4OUY0RiwgMHg5RjZFLCAweDNCNEQsIDB4OUY2RiwgMHg5RjZGLCAweDIxQTUsIDB4OUY3MCwgMHg5RjdFLCAweDNCNkQsDQorICAgIDB4OUY4MCwgMHg5RjkxLCAweDNCN0MsIDB4OUY5MiwgMHg5RjkyLCAweDIwMjIsIDB4OUY5MywgMHg5Rjk3LCAweDNCOEUsDQorICAgIDB4OUY5OCwgMHg5Rjk4LCAweDI0RDYsIDB4OUY5OSwgMHg5RkE1LCAweDNCOTMsIDB4OUZBNiwgMHg5RkE2LCAweDIzM0EsDQorICAgIDB4OUZBNywgMHg5RkE4LCAweDNCQTAsIDB4OUZBOSwgMHg5RkE5LCAweDFFRUUsIDB4OUZBQSwgMHg5RkFCLCAweDNCQTIsDQorICAgIDB4OUZBQywgMHg5RkFDLCAweDI0RDUsIDB4OUZBRCwgMHg5RkM4LCAweDNCQTQsIDB4OUZDOSwgMHg5RkM5LCAweDIyMjgsDQorICAgIDB4OUZDQSwgMHg5RkNDLCAweDNCQzAsIDB4OUZDRCwgMHg5RkNELCAweDI0RDcsIDB4OUZDRSwgMHg5RkUwLCAweDNCQzMsDQorICAgIDB4OUZFMSwgMHg5RkUxLCAweDIwRkMsIDB4OUZFMiwgMHg5RkVBLCAweDNCRDYsIDB4OUZFQiwgMHg5RkVCLCAweDFFODcsDQorICAgIDB4OUZFQywgMHg5RkVELCAweDNCREYsIDB4OUZFRSwgMHg5RkVFLCAweDI0RDgsIDB4OUZFRiwgMHg5RkYzLCAweDNCRTEsDQorICAgIDB4OUZGNCwgMHg5RkY0LCAweDFFQkEsIDB4OUZGNSwgMHg5RkZDLCAweDNCRTYsIDB4OUZGRCwgMHg5RkZELCAweDIxMTksDQorICAgIDB4OUZGRSwgMHg5RkZFLCAweDNCRUUsIDB4QTA0MCwgMHhBMDQyLCAweDNCRUYsIDB4QTA0MywgMHhBMDQzLCAweDIxNkMsDQorICAgIDB4QTA0NCwgMHhBMDQ1LCAweDNCRjIsIDB4QTA0NiwgMHhBMDQ2LCAweDI0RDksIDB4QTA0NywgMHhBMDQ4LCAweDNCRjQsDQorICAgIDB4QTA0OSwgMHhBMDQ5LCAweDIyMjcsIDB4QTA0QSwgMHhBMDRELCAweDNCRjYsIDB4QTA0RSwgMHhBMDRFLCAweDFFNUYsDQorICAgIDB4QTA0RiwgMHhBMDUzLCAweDNCRkEsIDB4QTA1NCwgMHhBMDU0LCAweDIyOUYsIDB4QTA1NSwgMHhBMDU5LCAweDNCRkYsDQorICAgIDB4QTA1QSwgMHhBMDVBLCAweDFGNUQsIDB4QTA1QiwgMHhBMDYwLCAweDNDMDQsIDB4QTA2MSwgMHhBMDYxLCAweDFGQkMsDQorICAgIDB4QTA2MiwgMHhBMDYyLCAweDNDMEEsIDB4QTA2MywgMHhBMDYzLCAweDI0REEsIDB4QTA2NCwgMHhBMDcwLCAweDNDMEIsDQorICAgIDB4QTA3MSwgMHhBMDcxLCAweDIxNDksIDB4QTA3MiwgMHhBMDczLCAweDNDMTgsIDB4QTA3NCwgMHhBMDc0LCAweDIwNDYsDQorICAgIDB4QTA3NSwgMHhBMDdFLCAweDNDMUEsIDB4QTA4MCwgMHhBMDgwLCAweDIwMDAsIDB4QTA4MSwgMHhBMDkwLCAweDNDMjQsDQorICAgIDB4QTA5MSwgMHhBMDkxLCAweDIxOTAsIDB4QTA5MiwgMHhBMDkzLCAweDNDMzQsIDB4QTA5NCwgMHhBMDk0LCAweDIyMDgsDQorICAgIDB4QTA5NSwgMHhBMDk1LCAweDNDMzYsIDB4QTA5NiwgMHhBMDk2LCAweDFFRTYsIDB4QTA5NywgMHhBMEE4LCAweDNDMzcsDQorICAgIDB4QTBBOSwgMHhBMEE5LCAweDI0QzMsIDB4QTBBQSwgMHhBMEJFLCAweDNDNDksIDB4QTBCRiwgMHhBMEJGLCAweDIwQ0MsDQorICAgIDB4QTBDMCwgMHhBMENELCAweDNDNUUsIDB4QTBDRSwgMHhBMENFLCAweDIzNDAsIDB4QTBDRiwgMHhBMEQ4LCAweDNDNkMsDQorICAgIDB4QTBEOSwgMHhBMEQ5LCAweDFFRDEsIDB4QTBEQSwgMHhBMERELCAweDNDNzYsIDB4QTBERSwgMHhBMERFLCAweDIxQUMsDQorICAgIDB4QTBERiwgMHhBMEVELCAweDNDN0EsIDB4QTBFRSwgMHhBMEVFLCAweDIyQUYsIDB4QTBFRiwgMHhBMEZFLCAweDNDODksDQorICAgIDB4QTFBMSwgMHhBMUZFLCAweDAwNjAsIDB4QTJBMSwgMHhBMkFBLCAweDI2QTksIDB4QTJCMSwgMHhBMkUyLCAweDAwQkUsDQorICAgIDB4QTJFNSwgMHhBMkVFLCAweDAwRjAsIDB4QTJGMSwgMHhBMkZDLCAweDAwRkEsIDB4QTNBMSwgMHhBM0ZFLCAweDAxMDYsDQorICAgIDB4QTRBMSwgMHhBNEYzLCAweDAxNjQsIDB4QTVBMSwgMHhBNUY2LCAweDAxQjcsIDB4QTZBMSwgMHhBNkI4LCAweDAyMEQsDQorICAgIDB4QTZDMSwgMHhBNkY1LCAweDAyMjUsIDB4QTdBMSwgMHhBN0MxLCAweDAyNUEsIDB4QTdEMSwgMHhBN0YxLCAweDAyN0IsDQorICAgIDB4QTg0MCwgMHhBODdFLCAweDI2QjMsIDB4QTg4MCwgMHhBODk1LCAweDI2RjIsIDB4QThBMSwgMHhBOEMwLCAweDAyOUMsDQorICAgIDB4QThDNSwgMHhBOEVBLCAweDAyQkMsIDB4QTk0MCwgMHhBOTU3LCAweDI3MDgsIDB4QTk1OSwgMHhBOTVBLCAweDI3MjAsDQorICAgIDB4QTk1QywgMHhBOTVDLCAweDI3MjIsIDB4QTk2MCwgMHhBOTdFLCAweDI3MjMsIDB4QTk4MCwgMHhBOTk1LCAweDI3NDIsDQorICAgIDB4QTk5NiwgMHhBOTk2LCAweDFFMTcsIDB4QTlBNCwgMHhBOUVGLCAweDAyRTIsIDB4QUE0MCwgMHhBQTRDLCAweDNDOTksDQorICAgIDB4QUE0RCwgMHhBQTRELCAweDIxQjYsIDB4QUE0RSwgMHhBQTRFLCAweDFFM0QsIDB4QUE0RiwgMHhBQTcwLCAweDNDQTYsDQorICAgIDB4QUE3MSwgMHhBQTcxLCAweDIyMzUsIDB4QUE3MiwgMHhBQTcyLCAweDNDQzgsIDB4QUE3MywgMHhBQTczLCAweDIzOTcsDQorICAgIDB4QUE3NCwgMHhBQTc2LCAweDNDQzksIDB4QUE3NywgMHhBQTc3LCAweDIzOTUsIDB4QUE3OCwgMHhBQTc5LCAweDNDQ0MsDQorICAgIDB4QUE3QSwgMHhBQTdBLCAweDIyM0YsIDB4QUE3QiwgMHhBQTdCLCAweDIxMkEsIDB4QUE3QywgMHhBQTdFLCAweDNDQ0UsDQorICAgIDB4QUE4MCwgMHhBQTk5LCAweDNDRDEsIDB4QUE5QSwgMHhBQTlBLCAweDFFRDIsIDB4QUE5QiwgMHhBQTlCLCAweDNDRUIsDQorICAgIDB4QUE5QywgMHhBQTlDLCAweDIzOTYsIDB4QUE5RCwgMHhBQTlELCAweDIzOTgsIDB4QUE5RSwgMHhBQTlFLCAweDNDRUMsDQorICAgIDB4QUE5RiwgMHhBQTlGLCAweDIwQTIsIDB4QUFBMCwgMHhBQUEwLCAweDNDRUQsIDB4QUFBMSwgMHhBQUZFLCAweDAzMkUsDQorICAgIDB4QUI0MCwgMHhBQjQwLCAweDFGNjQsIDB4QUI0MSwgMHhBQjQyLCAweDNDRUUsIDB4QUI0MywgMHhBQjQzLCAweDIwMkIsDQorICAgIDB4QUI0NCwgMHhBQjQ0LCAweDNDRjAsIDB4QUI0NSwgMHhBQjQ1LCAweDIzOTQsIDB4QUI0NiwgMHhBQjQ2LCAweDIxMzksDQorICAgIDB4QUI0NywgMHhBQjQ3LCAweDNDRjEsIDB4QUI0OCwgMHhBQjQ4LCAweDIxNUYsIDB4QUI0OSwgMHhBQjQ5LCAweDIxQzEsDQorICAgIDB4QUI0QSwgMHhBQjRBLCAweDIzOUEsIDB4QUI0QiwgMHhBQjRDLCAweDNDRjIsIDB4QUI0RCwgMHhBQjRELCAweDIzOTksDQorICAgIDB4QUI0RSwgMHhBQjdFLCAweDNDRjQsIDB4QUI4MCwgMHhBQkEwLCAweDNEMjUsIDB4QUJBMSwgMHhBQkMwLCAweDAzOEMsDQorICAgIDB4QUM0MCwgMHhBQzQ1LCAweDNENDYsIDB4QUM0NiwgMHhBQzQ2LCAweDIxQzAsIDB4QUM0NywgMHhBQzcwLCAweDNENEMsDQorICAgIDB4QUM3MSwgMHhBQzcxLCAweDI0NjAsIDB4QUM3MiwgMHhBQzdCLCAweDNENzYsIDB4QUM3QywgMHhBQzdDLCAweDI0NUMsDQorICAgIDB4QUM3RCwgMHhBQzdFLCAweDNEODAsIDB4QUM4MCwgMHhBQzhDLCAweDNEODIsIDB4QUM4RCwgMHhBQzhELCAweDIxNUQsDQorICAgIDB4QUM4RSwgMHhBQzkyLCAweDNEOEYsIDB4QUM5MywgMHhBQzkzLCAweDIyMjUsIDB4QUM5NCwgMHhBQzk0LCAweDIwNkEsDQorICAgIDB4QUM5NSwgMHhBQ0EwLCAweDNEOTQsIDB4QUQ0MCwgMHhBRDQ4LCAweDNEQTAsIDB4QUQ0OSwgMHhBRDQ5LCAweDI0NjEsDQorICAgIDB4QUQ0QSwgMHhBRDVELCAweDNEQTksIDB4QUQ1RSwgMHhBRDVFLCAweDI0NUIsIDB4QUQ1RiwgMHhBRDYwLCAweDNEQkQsDQorICAgIDB4QUQ2MSwgMHhBRDYxLCAweDI0NjIsIDB4QUQ2MiwgMHhBRDY3LCAweDNEQkYsIDB4QUQ2OCwgMHhBRDY4LCAweDFGNTQsDQorICAgIDB4QUQ2OSwgMHhBRDczLCAweDNEQzUsIDB4QUQ3NCwgMHhBRDc0LCAweDI0NUYsIDB4QUQ3NSwgMHhBRDdFLCAweDNERDAsDQorICAgIDB4QUQ4MCwgMHhBRDgxLCAweDNEREEsIDB4QUQ4MiwgMHhBRDgyLCAweDIwRUMsIDB4QUQ4MywgMHhBRDg2LCAweDNEREMsDQorICAgIDB4QUQ4NywgMHhBRDg3LCAweDI0NUQsIDB4QUQ4OCwgMHhBRDhBLCAweDNERTAsIDB4QUQ4QiwgMHhBRDhCLCAweDI0NjMsDQorICAgIDB4QUQ4QywgMHhBRDkwLCAweDNERTMsIDB4QUQ5MSwgMHhBRDkxLCAweDI0NjQsIDB4QUQ5MiwgMHhBREEwLCAweDNERTgsDQorICAgIDB4QUU0MCwgMHhBRTUzLCAweDNERjcsIDB4QUU1NCwgMHhBRTU0LCAweDI0QTUsIDB4QUU1NSwgMHhBRTYxLCAweDNFMEIsDQorICAgIDB4QUU2MiwgMHhBRTYyLCAweDFFNzAsIDB4QUU2MywgMHhBRTdFLCAweDNFMTgsIDB4QUU4MCwgMHhBRTgwLCAweDIwOEYsDQorICAgIDB4QUU4MSwgMHhBRTg0LCAweDNFMzQsIDB4QUU4NSwgMHhBRTg1LCAweDFFNDIsIDB4QUU4NiwgMHhBRThBLCAweDNFMzgsDQorICAgIDB4QUU4QiwgMHhBRThCLCAweDFGNEUsIDB4QUU4QywgMHhBRTkzLCAweDNFM0QsIDB4QUU5NCwgMHhBRTk0LCAweDFFQjEsDQorICAgIDB4QUU5NSwgMHhBRTlGLCAweDNFNDUsIDB4QUVBMCwgMHhBRUEwLCAweDFFOEIsIDB4QUY0MCwgMHhBRjYzLCAweDNFNTAsDQorICAgIDB4QUY2NCwgMHhBRjY0LCAweDFGQzYsIDB4QUY2NSwgMHhBRjdBLCAweDNFNzQsIDB4QUY3QiwgMHhBRjdCLCAweDI1QUUsDQorICAgIDB4QUY3QywgMHhBRjdFLCAweDNFOEEsIDB4QUY4MCwgMHhBRjgxLCAweDNFOEQsIDB4QUY4MiwgMHhBRjgyLCAweDFGMDEsDQorICAgIDB4QUY4MywgMHhBRjgzLCAweDIyMDAsIDB4QUY4NCwgMHhBRjhELCAweDNFOEYsIDB4QUY4RSwgMHhBRjhFLCAweDI1QjIsDQorICAgIDB4QUY4RiwgMHhBRjhGLCAweDFFOTcsIDB4QUY5MCwgMHhBRjkwLCAweDNFOTksIDB4QUY5MSwgMHhBRjkxLCAweDIwQUIsDQorICAgIDB4QUY5MiwgMHhBRjlCLCAweDNFOUEsIDB4QUY5QywgMHhBRjlDLCAweDI1QjMsIDB4QUY5RCwgMHhBRjlFLCAweDNFQTQsDQorICAgIDB4QUY5RiwgMHhBRjlGLCAweDIwMjgsIDB4QUZBMCwgMHhBRkEwLCAweDNFQTYsIDB4QjA0MCwgMHhCMDQwLCAweDNFQTcsDQorICAgIDB4QjA0MSwgMHhCMDQyLCAweDI1QUYsIDB4QjA0MywgMHhCMDQzLCAweDNFQTgsIDB4QjA0NCwgMHhCMDQ0LCAweDI1QjEsDQorICAgIDB4QjA0NSwgMHhCMDRFLCAweDNFQTksIDB4QjA0RiwgMHhCMDRGLCAweDI1QUMsIDB4QjA1MCwgMHhCMDUzLCAweDNFQjMsDQorICAgIDB4QjA1NCwgMHhCMDU0LCAweDFFNEUsIDB4QjA1NSwgMHhCMDU2LCAweDNFQjcsIDB4QjA1NywgMHhCMDU3LCAweDIyMDIsDQorICAgIDB4QjA1OCwgMHhCMDU4LCAweDI1QUIsIDB4QjA1OSwgMHhCMDU5LCAweDIyODYsIDB4QjA1QSwgMHhCMDVBLCAweDNFQjksDQorICAgIDB4QjA1QiwgMHhCMDVCLCAweDI1QUQsIDB4QjA1QywgMHhCMDVDLCAweDNFQkEsIDB4QjA1RCwgMHhCMDVELCAweDI1QjYsDQorICAgIDB4QjA1RSwgMHhCMDVFLCAweDNFQkIsIDB4QjA1RiwgMHhCMDVGLCAweDIxRTMsIDB4QjA2MCwgMHhCMDYxLCAweDI1QjQsDQorICAgIDB4QjA2MiwgMHhCMDYyLCAweDIyMkYsIDB4QjA2MywgMHhCMDYzLCAweDIxNjUsIDB4QjA2NCwgMHhCMDY0LCAweDI1QjcsDQorICAgIDB4QjA2NSwgMHhCMDZCLCAweDNFQkMsIDB4QjA2QywgMHhCMDZDLCAweDFFRTksIDB4QjA2RCwgMHhCMDdDLCAweDNFQzMsDQorICAgIDB4QjA3RCwgMHhCMDdELCAweDFFMjUsIDB4QjA3RSwgMHhCMDdFLCAweDNFRDMsIDB4QjA4MCwgMHhCMDk2LCAweDNFRDQsDQorICAgIDB4QjA5NywgMHhCMDk3LCAweDI1QzAsIDB4QjA5OCwgMHhCMDk4LCAweDNFRUIsIDB4QjA5OSwgMHhCMDk5LCAweDIyOUEsDQorICAgIDB4QjA5QSwgMHhCMEEwLCAweDNFRUMsIDB4QjBBMSwgMHhCMEZFLCAweDAzQUMsIDB4QjE0MCwgMHhCMTRBLCAweDNFRjMsDQorICAgIDB4QjE0QiwgMHhCMTRCLCAweDIyNkUsIDB4QjE0QywgMHhCMTRDLCAweDNFRkUsIDB4QjE0RCwgMHhCMTRELCAweDFGQkQsDQorICAgIDB4QjE0RSwgMHhCMTRFLCAweDNFRkYsIDB4QjE0RiwgMHhCMTRGLCAweDFGODQsIDB4QjE1MCwgMHhCMTUwLCAweDIwQjIsDQorICAgIDB4QjE1MSwgMHhCMTUxLCAweDNGMDAsIDB4QjE1MiwgMHhCMTUyLCAweDIwNDMsIDB4QjE1MywgMHhCMTdFLCAweDNGMDEsDQorICAgIDB4QjE4MCwgMHhCMTk2LCAweDNGMkQsIDB4QjE5NywgMHhCMTk3LCAweDI2ODQsIDB4QjE5OCwgMHhCMUEwLCAweDNGNDQsDQorICAgIDB4QjFBMSwgMHhCMUZFLCAweDA0MEEsIDB4QjI0MCwgMHhCMjQwLCAweDNGNEQsIDB4QjI0MSwgMHhCMjQxLCAweDI0RUYsDQorICAgIDB4QjI0MiwgMHhCMjY2LCAweDNGNEUsIDB4QjI2NywgMHhCMjY3LCAweDI0RUUsIDB4QjI2OCwgMHhCMjZDLCAweDNGNzMsDQorICAgIDB4QjI2RCwgMHhCMjZELCAweDIwNzQsIDB4QjI2RSwgMHhCMjczLCAweDNGNzgsIDB4QjI3NCwgMHhCMjc0LCAweDI2ODcsDQorICAgIDB4QjI3NSwgMHhCMjdFLCAweDNGN0UsIDB4QjI4MCwgMHhCMjgwLCAweDI0RjAsIDB4QjI4MSwgMHhCMjg4LCAweDNGODgsDQorICAgIDB4QjI4OSwgMHhCMjg5LCAweDI2OEQsIDB4QjI4QSwgMHhCMjk5LCAweDNGOTAsIDB4QjI5QSwgMHhCMjlBLCAweDIyQTAsDQorICAgIDB4QjI5QiwgMHhCMkEwLCAweDNGQTAsIDB4QjJBMSwgMHhCMkZFLCAweDA0NjgsIDB4QjM0MCwgMHhCMzQyLCAweDNGQTYsDQorICAgIDB4QjM0MywgMHhCMzQzLCAweDFGQUIsIDB4QjM0NCwgMHhCMzZGLCAweDNGQTksIDB4QjM3MCwgMHhCMzcwLCAweDI2QTgsDQorICAgIDB4QjM3MSwgMHhCMzdFLCAweDNGRDUsIDB4QjM4MCwgMHhCMzg3LCAweDNGRTMsIDB4QjM4OCwgMHhCMzg4LCAweDI0RTksDQorICAgIDB4QjM4OSwgMHhCMzhCLCAweDNGRUIsIDB4QjM4QywgMHhCMzhDLCAweDI0RTUsIDB4QjM4RCwgMHhCMzhELCAweDNGRUUsDQorICAgIDB4QjM4RSwgMHhCMzhFLCAweDIxRkEsIDB4QjM4RiwgMHhCM0EwLCAweDNGRUYsIDB4QjNBMSwgMHhCM0ZFLCAweDA0QzYsDQorICAgIDB4QjQ0MCwgMHhCNDUzLCAweDQwMDEsIDB4QjQ1NCwgMHhCNDU0LCAweDIxNDgsIDB4QjQ1NSwgMHhCNDU3LCAweDQwMTUsDQorICAgIDB4QjQ1OCwgMHhCNDU4LCAweDI0RTQsIDB4QjQ1OSwgMHhCNDVELCAweDQwMTgsIDB4QjQ1RSwgMHhCNDVFLCAweDI0RTYsDQorICAgIDB4QjQ1RiwgMHhCNDVGLCAweDIwRjcsIDB4QjQ2MCwgMHhCNDYwLCAweDQwMUQsIDB4QjQ2MSwgMHhCNDYxLCAweDIwNkIsDQorICAgIDB4QjQ2MiwgMHhCNDc0LCAweDQwMUUsIDB4QjQ3NSwgMHhCNDc1LCAweDIyQTcsIDB4QjQ3NiwgMHhCNDdELCAweDQwMzEsDQorICAgIDB4QjQ3RSwgMHhCNDdFLCAweDI0RUMsIDB4QjQ4MCwgMHhCNDgyLCAweDQwMzksIDB4QjQ4MywgMHhCNDgzLCAweDI0RUIsDQorICAgIDB4QjQ4NCwgMHhCNDg4LCAweDQwM0MsIDB4QjQ4OSwgMHhCNDg5LCAweDI0RTMsIDB4QjQ4QSwgMHhCNDkyLCAweDQwNDEsDQorICAgIDB4QjQ5MywgMHhCNDkzLCAweDI0RUEsIDB4QjQ5NCwgMHhCNEEwLCAweDQwNEEsIDB4QjRBMSwgMHhCNEZFLCAweDA1MjQsDQorICAgIDB4QjU0MCwgMHhCNTQwLCAweDQwNTcsIDB4QjU0MSwgMHhCNTQxLCAweDFFOTIsIDB4QjU0MiwgMHhCNTRBLCAweDQwNTgsDQorICAgIDB4QjU0QiwgMHhCNTRCLCAweDFFMjcsIDB4QjU0QywgMHhCNTU1LCAweDQwNjEsIDB4QjU1NiwgMHhCNTU2LCAweDFGRTYsDQorICAgIDB4QjU1NywgMHhCNTU5LCAweDQwNkIsIDB4QjU1QSwgMHhCNTVBLCAweDI0RTcsIDB4QjU1QiwgMHhCNTVCLCAweDIwMTIsDQorICAgIDB4QjU1QywgMHhCNTVDLCAweDFFRUMsIDB4QjU1RCwgMHhCNTYwLCAweDQwNkUsIDB4QjU2MSwgMHhCNTYxLCAweDI0RTgsDQorICAgIDB4QjU2MiwgMHhCNTdFLCAweDQwNzIsIDB4QjU4MCwgMHhCNTlCLCAweDQwOEYsIDB4QjU5QywgMHhCNTlDLCAweDFGNjYsDQorICAgIDB4QjU5RCwgMHhCNTlELCAweDI0REMsIDB4QjU5RSwgMHhCNUEwLCAweDQwQUIsIDB4QjVBMSwgMHhCNUZFLCAweDA1ODIsDQorICAgIDB4QjY0MCwgMHhCNjUxLCAweDQwQUUsIDB4QjY1MiwgMHhCNjUyLCAweDI2QTIsIDB4QjY1MywgMHhCNjU0LCAweDQwQzAsDQorICAgIDB4QjY1NSwgMHhCNjU1LCAweDI0REQsIDB4QjY1NiwgMHhCNjU4LCAweDQwQzIsIDB4QjY1OSwgMHhCNjU5LCAweDIwMEUsDQorICAgIDB4QjY1QSwgMHhCNjVBLCAweDQwQzUsIDB4QjY1QiwgMHhCNjVCLCAweDI0REIsIDB4QjY1QywgMHhCNjVDLCAweDFFQjgsDQorICAgIDB4QjY1RCwgMHhCNjdFLCAweDQwQzYsIDB4QjY4MCwgMHhCNkEwLCAweDQwRTgsIDB4QjZBMSwgMHhCNkZFLCAweDA1RTAsDQorICAgIDB4Qjc0MCwgMHhCNzRELCAweDQxMDksIDB4Qjc0RSwgMHhCNzRFLCAweDIyOTUsIDB4Qjc0RiwgMHhCNzUwLCAweDQxMTcsDQorICAgIDB4Qjc1MSwgMHhCNzUxLCAweDFFODAsIDB4Qjc1MiwgMHhCNzU4LCAweDQxMTksIDB4Qjc1OSwgMHhCNzU5LCAweDI2NzcsDQorICAgIDB4Qjc1QSwgMHhCNzYzLCAweDQxMjAsIDB4Qjc2NCwgMHhCNzY0LCAweDI2MjQsIDB4Qjc2NSwgMHhCNzY1LCAweDFGNjksDQorICAgIDB4Qjc2NiwgMHhCNzY2LCAweDIyMkIsIDB4Qjc2NywgMHhCNzc2LCAweDQxMkEsIDB4Qjc3NywgMHhCNzc3LCAweDI1N0YsDQorICAgIDB4Qjc3OCwgMHhCNzc4LCAweDFGNUIsIDB4Qjc3OSwgMHhCNzdFLCAweDQxM0EsIDB4Qjc4MCwgMHhCNzgwLCAweDIxOUIsDQorICAgIDB4Qjc4MSwgMHhCNzgxLCAweDQxNDAsIDB4Qjc4MiwgMHhCNzgyLCAweDI2N0QsIDB4Qjc4MywgMHhCN0EwLCAweDQxNDEsDQorICAgIDB4QjdBMSwgMHhCN0ZFLCAweDA2M0UsIDB4Qjg0MCwgMHhCODQyLCAweDQxNUYsIDB4Qjg0MywgMHhCODQzLCAweDIxQTAsDQorICAgIDB4Qjg0NCwgMHhCODQ0LCAweDIxODYsIDB4Qjg0NSwgMHhCODQ1LCAweDQxNjIsIDB4Qjg0NiwgMHhCODQ2LCAweDIwRUQsDQorICAgIDB4Qjg0NywgMHhCODRDLCAweDQxNjMsIDB4Qjg0RCwgMHhCODRELCAweDI1QjksIDB4Qjg0RSwgMHhCODUwLCAweDQxNjksDQorICAgIDB4Qjg1MSwgMHhCODUxLCAweDFGRUEsIDB4Qjg1MiwgMHhCODU5LCAweDQxNkMsIDB4Qjg1QSwgMHhCODVBLCAweDFFQTQsDQorICAgIDB4Qjg1QiwgMHhCODVCLCAweDIwRTEsIDB4Qjg1QywgMHhCODVDLCAweDQxNzQsIDB4Qjg1RCwgMHhCODVELCAweDI1QjgsDQorICAgIDB4Qjg1RSwgMHhCODVFLCAweDIyNjAsIDB4Qjg1RiwgMHhCODVGLCAweDQxNzUsIDB4Qjg2MCwgMHhCODYwLCAweDIwRTIsDQorICAgIDB4Qjg2MSwgMHhCODc2LCAweDQxNzYsIDB4Qjg3NywgMHhCODc3LCAweDIxNDEsIDB4Qjg3OCwgMHhCODdFLCAweDQxOEMsDQorICAgIDB4Qjg4MCwgMHhCODgxLCAweDQxOTMsIDB4Qjg4MiwgMHhCODgyLCAweDFGQzcsIDB4Qjg4MywgMHhCOEEwLCAweDQxOTUsDQorICAgIDB4QjhBMSwgMHhCOEZFLCAweDA2OUMsIDB4Qjk0MCwgMHhCOTRGLCAweDQxQjMsIDB4Qjk1MCwgMHhCOTUwLCAweDFFNDEsDQorICAgIDB4Qjk1MSwgMHhCOTYwLCAweDQxQzMsIDB4Qjk2MSwgMHhCOTYxLCAweDI1RTQsIDB4Qjk2MiwgMHhCOTdBLCAweDQxRDMsDQorICAgIDB4Qjk3QiwgMHhCOTdCLCAweDFGODYsIDB4Qjk3QywgMHhCOTdFLCAweDQxRUMsIDB4Qjk4MCwgMHhCOTlDLCAweDQxRUYsDQorICAgIDB4Qjk5RCwgMHhCOTlELCAweDFGQjMsIDB4Qjk5RSwgMHhCOTlGLCAweDQyMEMsIDB4QjlBMCwgMHhCOUEwLCAweDFFRUYsDQorICAgIDB4QjlBMSwgMHhCOUZFLCAweDA2RkEsIDB4QkE0MCwgMHhCQTQxLCAweDQyMEUsIDB4QkE0MiwgMHhCQTQyLCAweDIyQTQsDQorICAgIDB4QkE0MywgMHhCQTQzLCAweDQyMTAsIDB4QkE0NCwgMHhCQTQ0LCAweDI1RTgsIDB4QkE0NSwgMHhCQTU1LCAweDQyMTEsDQorICAgIDB4QkE1NiwgMHhCQTU2LCAweDI1RTMsIDB4QkE1NywgMHhCQTU4LCAweDQyMjIsIDB4QkE1OSwgMHhCQTU5LCAweDIxMTEsDQorICAgIDB4QkE1QSwgMHhCQTVGLCAweDQyMjQsIDB4QkE2MCwgMHhCQTYwLCAweDI1RTYsIDB4QkE2MSwgMHhCQTY5LCAweDQyMkEsDQorICAgIDB4QkE2QSwgMHhCQTZBLCAweDI1RTcsIDB4QkE2QiwgMHhCQTczLCAweDQyMzMsIDB4QkE3NCwgMHhCQTc0LCAweDIwNDEsDQorICAgIDB4QkE3NSwgMHhCQTdFLCAweDQyM0MsIDB4QkE4MCwgMHhCQTgzLCAweDQyNDYsIDB4QkE4NCwgMHhCQTg0LCAweDI1RUEsDQorICAgIDB4QkE4NSwgMHhCQTg1LCAweDQyNEEsIDB4QkE4NiwgMHhCQTg2LCAweDFGOEYsIDB4QkE4NywgMHhCQTg3LCAweDQyNEIsDQorICAgIDB4QkE4OCwgMHhCQTg4LCAweDI1RUMsIDB4QkE4OSwgMHhCQThDLCAweDQyNEMsIDB4QkE4RCwgMHhCQThELCAweDI1RUIsDQorICAgIDB4QkE4RSwgMHhCQTlELCAweDQyNTAsIDB4QkE5RSwgMHhCQTlFLCAweDIwRDAsIDB4QkE5RiwgMHhCQTlGLCAweDIwMUQsDQorICAgIDB4QkFBMCwgMHhCQUEwLCAweDQyNjAsIDB4QkFBMSwgMHhCQUZFLCAweDA3NTgsIDB4QkI0MCwgMHhCQjQwLCAweDFGRjcsDQorICAgIDB4QkI0MSwgMHhCQjQ4LCAweDQyNjEsIDB4QkI0OSwgMHhCQjQ5LCAweDFFOEQsIDB4QkI0QSwgMHhCQjU3LCAweDQyNjksDQorICAgIDB4QkI1OCwgMHhCQjU4LCAweDI1RTksIDB4QkI1OSwgMHhCQjVBLCAweDQyNzcsIDB4QkI1QiwgMHhCQjVCLCAweDI1RUUsDQorICAgIDB4QkI1QywgMHhCQjVDLCAweDIwM0EsIDB4QkI1RCwgMHhCQjVGLCAweDQyNzksIDB4QkI2MCwgMHhCQjYwLCAweDI2OTMsDQorICAgIDB4QkI2MSwgMHhCQjY0LCAweDQyN0MsIDB4QkI2NSwgMHhCQjY1LCAweDI1RTUsIDB4QkI2NiwgMHhCQjY2LCAweDI1RUQsDQorICAgIDB4QkI2NywgMHhCQjY3LCAweDQyODAsIDB4QkI2OCwgMHhCQjY4LCAweDIwMDksIDB4QkI2OSwgMHhCQjY5LCAweDQyODEsDQorICAgIDB4QkI2QSwgMHhCQjZBLCAweDIwNjUsIDB4QkI2QiwgMHhCQjZELCAweDQyODIsIDB4QkI2RSwgMHhCQjZFLCAweDI2QTMsDQorICAgIDB4QkI2RiwgMHhCQjdFLCAweDQyODUsIDB4QkI4MCwgMHhCQkEwLCAweDQyOTUsIDB4QkJBMSwgMHhCQkZFLCAweDA3QjYsDQorICAgIDB4QkM0MCwgMHhCQzUxLCAweDQyQjYsIDB4QkM1MiwgMHhCQzUyLCAweDI1RjUsIDB4QkM1MywgMHhCQzUzLCAweDFFRkMsDQorICAgIDB4QkM1NCwgMHhCQzU5LCAweDQyQzgsIDB4QkM1QSwgMHhCQzVBLCAweDIwMjQsIDB4QkM1QiwgMHhCQzYwLCAweDQyQ0UsDQorICAgIDB4QkM2MSwgMHhCQzYxLCAweDI2OUIsIDB4QkM2MiwgMHhCQzYyLCAweDQyRDQsIDB4QkM2MywgMHhCQzYzLCAweDI1RjMsDQorICAgIDB4QkM2NCwgMHhCQzY0LCAweDQyRDUsIDB4QkM2NSwgMHhCQzY1LCAweDIyRDksIDB4QkM2NiwgMHhCQzY2LCAweDQyRDYsDQorICAgIDB4QkM2NywgMHhCQzY3LCAweDI1RjQsIDB4QkM2OCwgMHhCQzY4LCAweDQyRDcsIDB4QkM2OSwgMHhCQzY5LCAweDI0MUIsDQorICAgIDB4QkM2QSwgMHhCQzZDLCAweDQyRDgsIDB4QkM2RCwgMHhCQzZELCAweDFGQzgsIDB4QkM2RSwgMHhCQzZFLCAweDQyREIsDQorICAgIDB4QkM2RiwgMHhCQzZGLCAweDFGN0IsIDB4QkM3MCwgMHhCQzcwLCAweDQyREMsIDB4QkM3MSwgMHhCQzcxLCAweDI0MUQsDQorICAgIDB4QkM3MiwgMHhCQzcyLCAweDQyREQsIDB4QkM3MywgMHhCQzczLCAweDIyNEMsIDB4QkM3NCwgMHhCQzc0LCAweDFGNDgsDQorICAgIDB4QkM3NSwgMHhCQzc1LCAweDI0MUMsIDB4QkM3NiwgMHhCQzc3LCAweDI0MUUsIDB4QkM3OCwgMHhCQzc4LCAweDIwRkYsDQorICAgIDB4QkM3OSwgMHhCQzc5LCAweDIxOUEsIDB4QkM3QSwgMHhCQzdBLCAweDQyREUsIDB4QkM3QiwgMHhCQzdCLCAweDIwOTEsDQorICAgIDB4QkM3QywgMHhCQzdELCAweDQyREYsIDB4QkM3RSwgMHhCQzdFLCAweDIwQTcsIDB4QkM4MCwgMHhCQzgxLCAweDQyRTEsDQorICAgIDB4QkM4MiwgMHhCQzgyLCAweDI0MjMsIDB4QkM4MywgMHhCQzgzLCAweDFFOUIsIDB4QkM4NCwgMHhCQzg0LCAweDI0MjIsDQorICAgIDB4QkM4NSwgMHhCQzg1LCAweDQyRTMsIDB4QkM4NiwgMHhCQzg2LCAweDIxMTAsIDB4QkM4NywgMHhCQzg3LCAweDQyRTQsDQorICAgIDB4QkM4OCwgMHhCQzg4LCAweDIyOEQsIDB4QkM4OSwgMHhCQzg5LCAweDFGNzEsIDB4QkM4QSwgMHhCQzhBLCAweDFFRjgsDQorICAgIDB4QkM4QiwgMHhCQzhCLCAweDI0MjEsIDB4QkM4QywgMHhCQzhFLCAweDQyRTUsIDB4QkM4RiwgMHhCQzhGLCAweDFFRjMsDQorICAgIDB4QkM5MCwgMHhCQzk5LCAweDQyRTgsIDB4QkM5QSwgMHhCQzlBLCAweDIxQjEsIDB4QkM5QiwgMHhCQzlCLCAweDI0MjYsDQorICAgIDB4QkM5QywgMHhCQzlDLCAweDI0MjUsIDB4QkM5RCwgMHhCQzlELCAweDIxMjAsIDB4QkM5RSwgMHhCQ0EwLCAweDQyRjIsDQorICAgIDB4QkNBMSwgMHhCQ0ZFLCAweDA4MTQsIDB4QkQ0MCwgMHhCRDQxLCAweDQyRjUsIDB4QkQ0MiwgMHhCRDQyLCAweDIxMUEsDQorICAgIDB4QkQ0MywgMHhCRDQzLCAweDI0MjQsIDB4QkQ0NCwgMHhCRDQ0LCAweDQyRjcsIDB4QkQ0NSwgMHhCRDQ1LCAweDI0MjgsDQorICAgIDB4QkQ0NiwgMHhCRDQ3LCAweDQyRjgsIDB4QkQ0OCwgMHhCRDQ4LCAweDI0MkEsIDB4QkQ0OSwgMHhCRDQ5LCAweDI0MjksDQorICAgIDB4QkQ0QSwgMHhCRDRBLCAweDQyRkEsIDB4QkQ0QiwgMHhCRDRCLCAweDIyOTQsIDB4QkQ0QywgMHhCRDRDLCAweDQyRkIsDQorICAgIDB4QkQ0RCwgMHhCRDRELCAweDIyQkUsIDB4QkQ0RSwgMHhCRDRFLCAweDQyRkMsIDB4QkQ0RiwgMHhCRDRGLCAweDFFMzEsDQorICAgIDB4QkQ1MCwgMHhCRDU2LCAweDQyRkQsIDB4QkQ1NywgMHhCRDU3LCAweDI0MkMsIDB4QkQ1OCwgMHhCRDU4LCAweDQzMDQsDQorICAgIDB4QkQ1OSwgMHhCRDU5LCAweDFGQjUsIDB4QkQ1QSwgMHhCRDY1LCAweDQzMDUsIDB4QkQ2NiwgMHhCRDY2LCAweDI0MkIsDQorICAgIDB4QkQ2NywgMHhCRDY3LCAweDFGQUYsIDB4QkQ2OCwgMHhCRDY5LCAweDQzMTEsIDB4QkQ2QSwgMHhCRDZBLCAweDIwNjgsDQorICAgIDB4QkQ2QiwgMHhCRDZCLCAweDIxRTQsIDB4QkQ2QywgMHhCRDZFLCAweDQzMTMsIDB4QkQ2RiwgMHhCRDZGLCAweDFGMjEsDQorICAgIDB4QkQ3MCwgMHhCRDcwLCAweDQzMTYsIDB4QkQ3MSwgMHhCRDcxLCAweDIxMDEsIDB4QkQ3MiwgMHhCRDc4LCAweDQzMTcsDQorICAgIDB4QkQ3OSwgMHhCRDc5LCAweDIxN0MsIDB4QkQ3QSwgMHhCRDdBLCAweDIxNEEsIDB4QkQ3QiwgMHhCRDdCLCAweDI0MkQsDQorICAgIDB4QkQ3QywgMHhCRDdELCAweDQzMUUsIDB4QkQ3RSwgMHhCRDdFLCAweDFGRDQsIDB4QkQ4MCwgMHhCRDgwLCAweDQzMjAsDQorICAgIDB4QkQ4MSwgMHhCRDgxLCAweDFGRDEsIDB4QkQ4MiwgMHhCRDg4LCAweDQzMjEsIDB4QkQ4OSwgMHhCRDg5LCAweDFFMzMsDQorICAgIDB4QkQ4QSwgMHhCRDhBLCAweDQzMjgsIDB4QkQ4QiwgMHhCRDhCLCAweDI0MkYsIDB4QkQ4QywgMHhCRDhELCAweDQzMjksDQorICAgIDB4QkQ4RSwgMHhCRDhFLCAweDI0MkUsIDB4QkQ4RiwgMHhCRDhGLCAweDQzMkIsIDB4QkQ5MCwgMHhCRDkwLCAweDI0MzAsDQorICAgIDB4QkQ5MSwgMHhCRDkxLCAweDIxREIsIDB4QkQ5MiwgMHhCRDk2LCAweDQzMkMsIDB4QkQ5NywgMHhCRDk3LCAweDIxNTgsDQorICAgIDB4QkQ5OCwgMHhCRDlBLCAweDQzMzEsIDB4QkQ5QiwgMHhCRDlCLCAweDFGQzIsIDB4QkQ5QywgMHhCREEwLCAweDQzMzQsDQorICAgIDB4QkRBMSwgMHhCREZFLCAweDA4NzIsIDB4QkU0MCwgMHhCRTQyLCAweDQzMzksIDB4QkU0MywgMHhCRTQzLCAweDIyQjksDQorICAgIDB4QkU0NCwgMHhCRTQ0LCAweDQzM0MsIDB4QkU0NSwgMHhCRTQ1LCAweDI0MzYsIDB4QkU0NiwgMHhCRTQ4LCAweDQzM0QsDQorICAgIDB4QkU0OSwgMHhCRTQ5LCAweDFFOEUsIDB4QkU0QSwgMHhCRTRBLCAweDI0MzksIDB4QkU0QiwgMHhCRTUwLCAweDQzNDAsDQorICAgIDB4QkU1MSwgMHhCRTUxLCAweDIxQzUsIDB4QkU1MiwgMHhCRTUyLCAweDI0MzcsIDB4QkU1MywgMHhCRTUzLCAweDIxOTIsDQorICAgIDB4QkU1NCwgMHhCRTU0LCAweDQzNDYsIDB4QkU1NSwgMHhCRTU1LCAweDI0M0EsIDB4QkU1NiwgMHhCRTU2LCAweDFGMTksDQorICAgIDB4QkU1NywgMHhCRTU3LCAweDIxOEMsIDB4QkU1OCwgMHhCRTU4LCAweDFFNDAsIDB4QkU1OSwgMHhCRTU5LCAweDIyQjMsDQorICAgIDB4QkU1QSwgMHhCRTVDLCAweDQzNDcsIDB4QkU1RCwgMHhCRTVELCAweDIwNUYsIDB4QkU1RSwgMHhCRTVFLCAweDI0MzgsDQorICAgIDB4QkU1RiwgMHhCRTVGLCAweDI0MzIsIDB4QkU2MCwgMHhCRTYwLCAweDIyNzQsIDB4QkU2MSwgMHhCRTYxLCAweDQzNEEsDQorICAgIDB4QkU2MiwgMHhCRTYyLCAweDFFOUMsIDB4QkU2MywgMHhCRTYzLCAweDI0MzEsIDB4QkU2NCwgMHhCRTY0LCAweDIwODUsDQorICAgIDB4QkU2NSwgMHhCRTY4LCAweDQzNEIsIDB4QkU2OSwgMHhCRTY5LCAweDI0MzUsIDB4QkU2QSwgMHhCRTZCLCAweDQzNEYsDQorICAgIDB4QkU2QywgMHhCRTZDLCAweDI0M0IsIDB4QkU2RCwgMHhCRTZFLCAweDQzNTEsIDB4QkU2RiwgMHhCRTZGLCAweDFGQjcsDQorICAgIDB4QkU3MCwgMHhCRTcwLCAweDI0MzMsIDB4QkU3MSwgMHhCRTc1LCAweDQzNTMsIDB4QkU3NiwgMHhCRTc2LCAweDIwNTQsDQorICAgIDB4QkU3NywgMHhCRTc3LCAweDIxREUsIDB4QkU3OCwgMHhCRTc4LCAweDQzNTgsIDB4QkU3OSwgMHhCRTc5LCAweDI0MzQsDQorICAgIDB4QkU3QSwgMHhCRTdCLCAweDQzNTksIDB4QkU3QywgMHhCRTdDLCAweDI0M0QsIDB4QkU3RCwgMHhCRTdELCAweDFGODksDQorICAgIDB4QkU3RSwgMHhCRTdFLCAweDI0M0MsIDB4QkU4MCwgMHhCRTgyLCAweDQzNUIsIDB4QkU4MywgMHhCRTgzLCAweDFGNkUsDQorICAgIDB4QkU4NCwgMHhCRTg0LCAweDFFRDgsIDB4QkU4NSwgMHhCRTg1LCAweDQzNUUsIDB4QkU4NiwgMHhCRTg2LCAweDFFQkYsDQorICAgIDB4QkU4NywgMHhCRTg3LCAweDI0NDUsIDB4QkU4OCwgMHhCRTg4LCAweDQzNUYsIDB4QkU4OSwgMHhCRTg5LCAweDIyNDksDQorICAgIDB4QkU4QSwgMHhCRThCLCAweDQzNjAsIDB4QkU4QywgMHhCRThDLCAweDI0NDEsIDB4QkU4RCwgMHhCRThELCAweDQzNjIsDQorICAgIDB4QkU4RSwgMHhCRThFLCAweDFFNDcsIDB4QkU4RiwgMHhCRThGLCAweDFGNTYsIDB4QkU5MCwgMHhCRTkxLCAweDQzNjMsDQorICAgIDB4QkU5MiwgMHhCRTkyLCAweDIwODYsIDB4QkU5MywgMHhCRTk0LCAweDQzNjUsIDB4QkU5NSwgMHhCRTk1LCAweDIxOTYsDQorICAgIDB4QkU5NiwgMHhCRTk2LCAweDQzNjcsIDB4QkU5NywgMHhCRTk3LCAweDI0NDMsIDB4QkU5OCwgMHhCRTk4LCAweDI0M0YsDQorICAgIDB4QkU5OSwgMHhCRTk5LCAweDQzNjgsIDB4QkU5QSwgMHhCRTlBLCAweDIwMjMsIDB4QkU5QiwgMHhCRTlCLCAweDQzNjksDQorICAgIDB4QkU5QywgMHhCRTlDLCAweDI0NDIsIDB4QkU5RCwgMHhCRTlFLCAweDQzNkEsIDB4QkU5RiwgMHhCRTlGLCAweDI0M0UsDQorICAgIDB4QkVBMCwgMHhCRUEwLCAweDQzNkMsIDB4QkVBMSwgMHhCRUZFLCAweDA4RDAsIDB4QkY0MCwgMHhCRjQwLCAweDI2QTYsDQorICAgIDB4QkY0MSwgMHhCRjRDLCAweDQzNkQsIDB4QkY0RCwgMHhCRjRELCAweDIzNEUsIDB4QkY0RSwgMHhCRjRFLCAweDI0NDYsDQorICAgIDB4QkY0RiwgMHhCRjRGLCAweDI0NEIsIDB4QkY1MCwgMHhCRjUwLCAweDI0NDQsIDB4QkY1MSwgMHhCRjU0LCAweDQzNzksDQorICAgIDB4QkY1NSwgMHhCRjU1LCAweDI0MjcsIDB4QkY1NiwgMHhCRjU2LCAweDI0NEMsIDB4QkY1NywgMHhCRjVGLCAweDQzN0QsDQorICAgIDB4QkY2MCwgMHhCRjYwLCAweDFGMEYsIDB4QkY2MSwgMHhCRjYxLCAweDQzODYsIDB4QkY2MiwgMHhCRjYyLCAweDI0NDcsDQorICAgIDB4QkY2MywgMHhCRjYzLCAweDI0NDksIDB4QkY2NCwgMHhCRjY0LCAweDI0NDgsIDB4QkY2NSwgMHhCRjY3LCAweDQzODcsDQorICAgIDB4QkY2OCwgMHhCRjY4LCAweDIxQzIsIDB4QkY2OSwgMHhCRjZCLCAweDQzOEEsIDB4QkY2QywgMHhCRjZDLCAweDIxNkUsDQorICAgIDB4QkY2RCwgMHhCRjZGLCAweDQzOEQsIDB4QkY3MCwgMHhCRjcwLCAweDFGMDMsIDB4QkY3MSwgMHhCRjcxLCAweDQzOTAsDQorICAgIDB4QkY3MiwgMHhCRjcyLCAweDI0NEEsIDB4QkY3MywgMHhCRjczLCAweDIxNUMsIDB4QkY3NCwgMHhCRjc1LCAweDQzOTEsDQorICAgIDB4QkY3NiwgMHhCRjc2LCAweDIyQkIsIDB4QkY3NywgMHhCRjc3LCAweDI0NTAsIDB4QkY3OCwgMHhCRjc4LCAweDQzOTMsDQorICAgIDB4QkY3OSwgMHhCRjc5LCAweDI2OTQsIDB4QkY3QSwgMHhCRjdBLCAweDI0NEYsIDB4QkY3QiwgMHhCRjdCLCAweDI1RjYsDQorICAgIDB4QkY3QywgMHhCRjdDLCAweDIwNTEsIDB4QkY3RCwgMHhCRjdELCAweDQzOTQsIDB4QkY3RSwgMHhCRjdFLCAweDI0NEUsDQorICAgIDB4QkY4MCwgMHhCRjgxLCAweDQzOTUsIDB4QkY4MiwgMHhCRjgyLCAweDIyQkEsIDB4QkY4MywgMHhCRjgzLCAweDFGNkQsDQorICAgIDB4QkY4NCwgMHhCRjg4LCAweDQzOTcsIDB4QkY4OSwgMHhCRjg5LCAweDI0NTIsIDB4QkY4QSwgMHhCRjhBLCAweDI0NTEsDQorICAgIDB4QkY4QiwgMHhCRjk0LCAweDQzOUMsIDB4QkY5NSwgMHhCRjk1LCAweDI0NTUsIDB4QkY5NiwgMHhCRjk2LCAweDQzQTYsDQorICAgIDB4QkY5NywgMHhCRjk3LCAweDIyODksIDB4QkY5OCwgMHhCRjk4LCAweDIxMTYsIDB4QkY5OSwgMHhCRjlDLCAweDQzQTcsDQorICAgIDB4QkY5RCwgMHhCRjlELCAweDI0NTQsIDB4QkY5RSwgMHhCRkEwLCAweDQzQUIsIDB4QkZBMSwgMHhCRkZFLCAweDA5MkUsDQorICAgIDB4QzA0MCwgMHhDMDQwLCAweDIwRkIsIDB4QzA0MSwgMHhDMDQzLCAweDQzQUUsIDB4QzA0NCwgMHhDMDQ0LCAweDI0NDAsDQorICAgIDB4QzA0NSwgMHhDMDRBLCAweDQzQjEsIDB4QzA0QiwgMHhDMDRCLCAweDIxMjYsIDB4QzA0QywgMHhDMDRDLCAweDFGNjEsDQorICAgIDB4QzA0RCwgMHhDMDRELCAweDI2OUQsIDB4QzA0RSwgMHhDMDRFLCAweDQzQjcsIDB4QzA0RiwgMHhDMDRGLCAweDFGOEEsDQorICAgIDB4QzA1MCwgMHhDMDUwLCAweDI0NTYsIDB4QzA1MSwgMHhDMDUxLCAweDI0NTksIDB4QzA1MiwgMHhDMDUyLCAweDI0NTgsDQorICAgIDB4QzA1MywgMHhDMDU0LCAweDQzQjgsIDB4QzA1NSwgMHhDMDU1LCAweDFGQUUsIDB4QzA1NiwgMHhDMDVBLCAweDQzQkEsDQorICAgIDB4QzA1QiwgMHhDMDVCLCAweDIyMUEsIDB4QzA1QywgMHhDMDVELCAweDQzQkYsIDB4QzA1RSwgMHhDMDVFLCAweDFGN0EsDQorICAgIDB4QzA1RiwgMHhDMDVGLCAweDI0NEQsIDB4QzA2MCwgMHhDMDYwLCAweDI0NTcsIDB4QzA2MSwgMHhDMDY4LCAweDQzQzEsDQorICAgIDB4QzA2OSwgMHhDMDY5LCAweDI0NTMsIDB4QzA2QSwgMHhDMDZBLCAweDQzQzksIDB4QzA2QiwgMHhDMDZCLCAweDI0MjAsDQorICAgIDB4QzA2QywgMHhDMDZDLCAweDQzQ0EsIDB4QzA2RCwgMHhDMDZELCAweDIxREYsIDB4QzA2RSwgMHhDMDZFLCAweDI2ODUsDQorICAgIDB4QzA2RiwgMHhDMDZGLCAweDQzQ0IsIDB4QzA3MCwgMHhDMDcwLCAweDFFNkUsIDB4QzA3MSwgMHhDMDczLCAweDQzQ0MsDQorICAgIDB4QzA3NCwgMHhDMDc0LCAweDIyMjQsIDB4QzA3NSwgMHhDMDc1LCAweDI2NzAsIDB4QzA3NiwgMHhDMDc2LCAweDQzQ0YsDQorICAgIDB4QzA3NywgMHhDMDc3LCAweDIxQkEsIDB4QzA3OCwgMHhDMDc4LCAweDQzRDAsIDB4QzA3OSwgMHhDMDc5LCAweDI0NUEsDQorICAgIDB4QzA3QSwgMHhDMDdCLCAweDQzRDEsIDB4QzA3QywgMHhDMDdDLCAweDFGRkYsIDB4QzA3RCwgMHhDMDdFLCAweDQzRDMsDQorICAgIDB4QzA4MCwgMHhDMDlBLCAweDQzRDUsIDB4QzA5QiwgMHhDMDlCLCAweDI1RTIsIDB4QzA5QywgMHhDMDlDLCAweDQzRjAsDQorICAgIDB4QzA5RCwgMHhDMDlELCAweDI2OUEsIDB4QzA5RSwgMHhDMEEwLCAweDQzRjEsIDB4QzBBMSwgMHhDMEZFLCAweDA5OEMsDQorICAgIDB4QzE0MCwgMHhDMTRGLCAweDQzRjQsIDB4QzE1MCwgMHhDMTUwLCAweDFFRUEsIDB4QzE1MSwgMHhDMTUzLCAweDQ0MDQsDQorICAgIDB4QzE1NCwgMHhDMTU0LCAweDFFMkMsIDB4QzE1NSwgMHhDMTVFLCAweDQ0MDcsIDB4QzE1RiwgMHhDMTVGLCAweDIwNjIsDQorICAgIDB4QzE2MCwgMHhDMTYwLCAweDI0RjEsIDB4QzE2MSwgMHhDMTYxLCAweDQ0MTEsIDB4QzE2MiwgMHhDMTYyLCAweDI0RjIsDQorICAgIDB4QzE2MywgMHhDMTc0LCAweDQ0MTIsIDB4QzE3NSwgMHhDMTc1LCAweDI1RjIsIDB4QzE3NiwgMHhDMTc3LCAweDQ0MjQsDQorICAgIDB4QzE3OCwgMHhDMTc4LCAweDIyMTUsIDB4QzE3OSwgMHhDMTdFLCAweDQ0MjYsIDB4QzE4MCwgMHhDMTk0LCAweDQ0MkMsDQorICAgIDB4QzE5NSwgMHhDMTk1LCAweDIxQUUsIDB4QzE5NiwgMHhDMUEwLCAweDQ0NDEsIDB4QzFBMSwgMHhDMUZFLCAweDA5RUEsDQorICAgIDB4QzI0MCwgMHhDMjRELCAweDQ0NEMsIDB4QzI0RSwgMHhDMjRFLCAweDIwRTAsIDB4QzI0RiwgMHhDMjY0LCAweDQ0NUEsDQorICAgIDB4QzI2NSwgMHhDMjY1LCAweDI1QzIsIDB4QzI2NiwgMHhDMjY2LCAweDQ0NzAsIDB4QzI2NywgMHhDMjY3LCAweDI1QzEsDQorICAgIDB4QzI2OCwgMHhDMjdDLCAweDQ0NzEsIDB4QzI3RCwgMHhDMjdELCAweDIxMjgsIDB4QzI3RSwgMHhDMjdFLCAweDQ0ODYsDQorICAgIDB4QzI4MCwgMHhDMjgzLCAweDQ0ODcsIDB4QzI4NCwgMHhDMjg0LCAweDIxOTksIDB4QzI4NSwgMHhDMjkyLCAweDQ0OEIsDQorICAgIDB4QzI5MywgMHhDMjkzLCAweDIwMTcsIDB4QzI5NCwgMHhDMjk0LCAweDFFQTAsIDB4QzI5NSwgMHhDMjk1LCAweDIxMjUsDQorICAgIDB4QzI5NiwgMHhDMjk2LCAweDIxNEQsIDB4QzI5NywgMHhDMjk3LCAweDQ0OTksIDB4QzI5OCwgMHhDMjk4LCAweDI1QzQsDQorICAgIDB4QzI5OSwgMHhDMjk5LCAweDIwOUQsIDB4QzI5QSwgMHhDMjlBLCAweDIyOEEsIDB4QzI5QiwgMHhDMjlCLCAweDQ0OUEsDQorICAgIDB4QzI5QywgMHhDMjlDLCAweDI1QzMsIDB4QzI5RCwgMHhDMjlGLCAweDQ0OUIsIDB4QzJBMCwgMHhDMkEwLCAweDIxNzksDQorICAgIDB4QzJBMSwgMHhDMkZFLCAweDBBNDgsIDB4QzM0MCwgMHhDMzQwLCAweDIwMzgsIDB4QzM0MSwgMHhDMzQyLCAweDQ0OUUsDQorICAgIDB4QzM0MywgMHhDMzQzLCAweDIxNTUsIDB4QzM0NCwgMHhDMzdBLCAweDQ0QTAsIDB4QzM3QiwgMHhDMzdCLCAweDIxRDIsDQorICAgIDB4QzM3QywgMHhDMzdFLCAweDQ0RDcsIDB4QzM4MCwgMHhDMzgzLCAweDQ0REEsIDB4QzM4NCwgMHhDMzg0LCAweDI0QzcsDQorICAgIDB4QzM4NSwgMHhDMzlBLCAweDQ0REUsIDB4QzM5QiwgMHhDMzlCLCAweDIyNzksIDB4QzM5QywgMHhDM0EwLCAweDQ0RjQsDQorICAgIDB4QzNBMSwgMHhDM0ZFLCAweDBBQTYsIDB4QzQ0MCwgMHhDNDQ4LCAweDQ0RjksIDB4QzQ0OSwgMHhDNDQ5LCAweDIxMjMsDQorICAgIDB4QzQ0QSwgMHhDNDRCLCAweDQ1MDIsIDB4QzQ0QywgMHhDNDRDLCAweDI0QzUsIDB4QzQ0RCwgMHhDNDUzLCAweDQ1MDQsDQorICAgIDB4QzQ1NCwgMHhDNDU0LCAweDI0QzksIDB4QzQ1NSwgMHhDNDU3LCAweDQ1MEIsIDB4QzQ1OCwgMHhDNDU4LCAweDIwOTQsDQorICAgIDB4QzQ1OSwgMHhDNDVBLCAweDQ1MEUsIDB4QzQ1QiwgMHhDNDVCLCAweDIyOTYsIDB4QzQ1QywgMHhDNDYyLCAweDQ1MTAsDQorICAgIDB4QzQ2MywgMHhDNDYzLCAweDFFNzcsIDB4QzQ2NCwgMHhDNDc2LCAweDQ1MTcsIDB4QzQ3NywgMHhDNDc3LCAweDFGMDYsDQorICAgIDB4QzQ3OCwgMHhDNDc5LCAweDQ1MkEsIDB4QzQ3QSwgMHhDNDdBLCAweDFGQTUsIDB4QzQ3QiwgMHhDNDdFLCAweDQ1MkMsDQorICAgIDB4QzQ4MCwgMHhDNDgwLCAweDQ1MzAsIDB4QzQ4MSwgMHhDNDgxLCAweDIwOTksIDB4QzQ4MiwgMHhDNDkwLCAweDQ1MzEsDQorICAgIDB4QzQ5MSwgMHhDNDkxLCAweDFFQUQsIDB4QzQ5MiwgMHhDNDkyLCAweDI0QzgsIDB4QzQ5MywgMHhDNDkzLCAweDIwQTgsDQorICAgIDB4QzQ5NCwgMHhDNDk3LCAweDQ1NDAsIDB4QzQ5OCwgMHhDNDk4LCAweDIwMUYsIDB4QzQ5OSwgMHhDNDk5LCAweDQ1NDQsDQorICAgIDB4QzQ5QSwgMHhDNDlBLCAweDIwQzUsIDB4QzQ5QiwgMHhDNDlCLCAweDQ1NDUsIDB4QzQ5QywgMHhDNDlDLCAweDI0Q0EsDQorICAgIDB4QzQ5RCwgMHhDNEEwLCAweDQ1NDYsIDB4QzRBMSwgMHhDNEZFLCAweDBCMDQsIDB4QzU0MCwgMHhDNTQzLCAweDQ1NEEsDQorICAgIDB4QzU0NCwgMHhDNTQ0LCAweDFGRjAsIDB4QzU0NSwgMHhDNTQ1LCAweDQ1NEUsIDB4QzU0NiwgMHhDNTQ2LCAweDI0QzYsDQorICAgIDB4QzU0NywgMHhDNTRBLCAweDQ1NEYsIDB4QzU0QiwgMHhDNTRCLCAweDIyNUQsIDB4QzU0QywgMHhDNTRDLCAweDIyREUsDQorICAgIDB4QzU0RCwgMHhDNTUxLCAweDQ1NTMsIDB4QzU1MiwgMHhDNTUyLCAweDIwMkMsIDB4QzU1MywgMHhDNTVFLCAweDQ1NTgsDQorICAgIDB4QzU1RiwgMHhDNTVGLCAweDIxNjEsIDB4QzU2MCwgMHhDNTYyLCAweDQ1NjQsIDB4QzU2MywgMHhDNTYzLCAweDIyM0IsDQorICAgIDB4QzU2NCwgMHhDNTY0LCAweDIxRDksIDB4QzU2NSwgMHhDNTY1LCAweDFGQ0IsIDB4QzU2NiwgMHhDNTY2LCAweDFGQzksDQorICAgIDB4QzU2NywgMHhDNTdFLCAweDQ1NjcsIDB4QzU4MCwgMHhDNTkyLCAweDQ1N0YsIDB4QzU5MywgMHhDNTkzLCAweDFFNjEsDQorICAgIDB4QzU5NCwgMHhDNTlCLCAweDQ1OTIsIDB4QzU5QywgMHhDNTlDLCAweDI1RUYsIDB4QzU5RCwgMHhDNTlELCAweDQ1OUEsDQorICAgIDB4QzU5RSwgMHhDNTlFLCAweDFGOTgsIDB4QzU5RiwgMHhDNUEwLCAweDQ1OUIsIDB4QzVBMSwgMHhDNUZFLCAweDBCNjIsDQorICAgIDB4QzY0MCwgMHhDNjQwLCAweDQ1OUQsIDB4QzY0MSwgMHhDNjQxLCAweDI1RjAsIDB4QzY0MiwgMHhDNjQzLCAweDQ1OUUsDQorICAgIDB4QzY0NCwgMHhDNjQ0LCAweDFGODgsIDB4QzY0NSwgMHhDNjQ2LCAweDQ1QTAsIDB4QzY0NywgMHhDNjQ3LCAweDIxRjgsDQorICAgIDB4QzY0OCwgMHhDNjYyLCAweDQ1QTIsIDB4QzY2MywgMHhDNjYzLCAweDIzMjIsIDB4QzY2NCwgMHhDNjcxLCAweDQ1QkQsDQorICAgIDB4QzY3MiwgMHhDNjcyLCAweDIzMzYsIDB4QzY3MywgMHhDNjdFLCAweDQ1Q0IsIDB4QzY4MCwgMHhDNkEwLCAweDQ1RDcsDQorICAgIDB4QzZBMSwgMHhDNkZFLCAweDBCQzAsIDB4Qzc0MCwgMHhDNzY1LCAweDQ1RjgsIDB4Qzc2NiwgMHhDNzY2LCAweDIyQUIsDQorICAgIDB4Qzc2NywgMHhDNzZFLCAweDQ2MUUsIDB4Qzc2RiwgMHhDNzZGLCAweDFGQkYsIDB4Qzc3MCwgMHhDNzc1LCAweDQ2MjYsDQorICAgIDB4Qzc3NiwgMHhDNzc2LCAweDFGN0QsIDB4Qzc3NywgMHhDNzdBLCAweDQ2MkMsIDB4Qzc3QiwgMHhDNzdCLCAweDIzMzMsDQorICAgIDB4Qzc3QywgMHhDNzdFLCAweDQ2MzAsIDB4Qzc4MCwgMHhDN0EwLCAweDQ2MzMsIDB4QzdBMSwgMHhDN0ZFLCAweDBDMUUsDQorICAgIDB4Qzg0MCwgMHhDODQwLCAweDQ2NTQsIDB4Qzg0MSwgMHhDODQxLCAweDFGNEQsIDB4Qzg0MiwgMHhDODRFLCAweDQ2NTUsDQorICAgIDB4Qzg0RiwgMHhDODRGLCAweDIzMzQsIDB4Qzg1MCwgMHhDODUxLCAweDQ2NjIsIDB4Qzg1MiwgMHhDODUyLCAweDFGRjEsDQorICAgIDB4Qzg1MywgMHhDODY1LCAweDQ2NjQsIDB4Qzg2NiwgMHhDODY2LCAweDIxOEIsIDB4Qzg2NywgMHhDODZELCAweDQ2NzcsDQorICAgIDB4Qzg2RSwgMHhDODZFLCAweDIzNDksIDB4Qzg2RiwgMHhDODdELCAweDQ2N0UsIDB4Qzg3RSwgMHhDODdFLCAweDIyMEIsDQorICAgIDB4Qzg4MCwgMHhDODg2LCAweDQ2OEQsIDB4Qzg4NywgMHhDODg3LCAweDIzNDYsIDB4Qzg4OCwgMHhDODkxLCAweDQ2OTQsDQorICAgIDB4Qzg5MiwgMHhDODkyLCAweDIzNDcsIDB4Qzg5MywgMHhDODkzLCAweDQ2OUUsIDB4Qzg5NCwgMHhDODk0LCAweDIxOTMsDQorICAgIDB4Qzg5NSwgMHhDODk4LCAweDQ2OUYsIDB4Qzg5OSwgMHhDODk5LCAweDI2QTEsIDB4Qzg5QSwgMHhDODlDLCAweDQ2QTMsDQorICAgIDB4Qzg5RCwgMHhDODlELCAweDFGNjIsIDB4Qzg5RSwgMHhDOEEwLCAweDQ2QTYsIDB4QzhBMSwgMHhDOEZFLCAweDBDN0MsDQorICAgIDB4Qzk0MCwgMHhDOTRFLCAweDQ2QTksIDB4Qzk0RiwgMHhDOTRGLCAweDIzNEQsIDB4Qzk1MCwgMHhDOTUwLCAweDIzNDgsDQorICAgIDB4Qzk1MSwgMHhDOTZELCAweDQ2QjgsIDB4Qzk2RSwgMHhDOTZFLCAweDFFNjAsIDB4Qzk2RiwgMHhDOTZGLCAweDQ2RDUsDQorICAgIDB4Qzk3MCwgMHhDOTcwLCAweDIzNDUsIDB4Qzk3MSwgMHhDOTc2LCAweDQ2RDYsIDB4Qzk3NywgMHhDOTc3LCAweDFGMTIsDQorICAgIDB4Qzk3OCwgMHhDOTdFLCAweDQ2REMsIDB4Qzk4MCwgMHhDOThFLCAweDQ2RTMsIDB4Qzk4RiwgMHhDOThGLCAweDIwMTgsDQorICAgIDB4Qzk5MCwgMHhDOTkwLCAweDIzMzUsIDB4Qzk5MSwgMHhDOTlCLCAweDQ2RjIsIDB4Qzk5QywgMHhDOTlDLCAweDIzM0MsDQorICAgIDB4Qzk5RCwgMHhDOUEwLCAweDQ2RkQsIDB4QzlBMSwgMHhDOUZFLCAweDBDREEsIDB4Q0E0MCwgMHhDQTRELCAweDQ3MDEsDQorICAgIDB4Q0E0RSwgMHhDQTRFLCAweDI2NkYsIDB4Q0E0RiwgMHhDQTU1LCAweDQ3MEYsIDB4Q0E1NiwgMHhDQTU2LCAweDIzNTEsDQorICAgIDB4Q0E1NywgMHhDQTU4LCAweDQ3MTYsIDB4Q0E1OSwgMHhDQTU5LCAweDFGQTAsIDB4Q0E1QSwgMHhDQTVCLCAweDQ3MTgsDQorICAgIDB4Q0E1QywgMHhDQTVDLCAweDIzMzgsIDB4Q0E1RCwgMHhDQTYwLCAweDQ3MUEsIDB4Q0E2MSwgMHhDQTYxLCAweDIyMUIsDQorICAgIDB4Q0E2MiwgMHhDQTZELCAweDQ3MUUsIDB4Q0E2RSwgMHhDQTZFLCAweDIzNDIsIDB4Q0E2RiwgMHhDQTcxLCAweDQ3MkEsDQorICAgIDB4Q0E3MiwgMHhDQTcyLCAweDIzNEYsIDB4Q0E3MywgMHhDQTc2LCAweDQ3MkQsIDB4Q0E3NywgMHhDQTc3LCAweDIzM0QsDQorICAgIDB4Q0E3OCwgMHhDQTdBLCAweDQ3MzEsIDB4Q0E3QiwgMHhDQTdCLCAweDIzNDQsIDB4Q0E3QywgMHhDQTdDLCAweDIzMzEsDQorICAgIDB4Q0E3RCwgMHhDQTdELCAweDQ3MzQsIDB4Q0E3RSwgMHhDQTdFLCAweDIzNEIsIDB4Q0E4MCwgMHhDQTgwLCAweDQ3MzUsDQorICAgIDB4Q0E4MSwgMHhDQTgxLCAweDIzM0IsIDB4Q0E4MiwgMHhDQTg4LCAweDQ3MzYsIDB4Q0E4OSwgMHhDQTg5LCAweDIzNTAsDQorICAgIDB4Q0E4QSwgMHhDQThELCAweDQ3M0QsIDB4Q0E4RSwgMHhDQThFLCAweDFFQjQsIDB4Q0E4RiwgMHhDQThGLCAweDIxQTYsDQorICAgIDB4Q0E5MCwgMHhDQTkxLCAweDQ3NDEsIDB4Q0E5MiwgMHhDQTkyLCAweDIxQ0IsIDB4Q0E5MywgMHhDQTk5LCAweDQ3NDMsDQorICAgIDB4Q0E5QSwgMHhDQTlBLCAweDIzNTUsIDB4Q0E5QiwgMHhDQUEwLCAweDQ3NEEsIDB4Q0FBMSwgMHhDQUZFLCAweDBEMzgsDQorICAgIDB4Q0I0MCwgMHhDQjQyLCAweDQ3NTAsIDB4Q0I0MywgMHhDQjQzLCAweDIzM0UsIDB4Q0I0NCwgMHhDQjQ0LCAweDQ3NTMsDQorICAgIDB4Q0I0NSwgMHhDQjQ1LCAweDFGNzQsIDB4Q0I0NiwgMHhDQjQ2LCAweDQ3NTQsIDB4Q0I0NywgMHhDQjQ3LCAweDIzMzAsDQorICAgIDB4Q0I0OCwgMHhDQjRBLCAweDQ3NTUsIDB4Q0I0QiwgMHhDQjRCLCAweDI2ODAsIDB4Q0I0QywgMHhDQjRELCAweDQ3NTgsDQorICAgIDB4Q0I0RSwgMHhDQjRFLCAweDIwREEsIDB4Q0I0RiwgMHhDQjU2LCAweDQ3NUEsIDB4Q0I1NywgMHhDQjU3LCAweDIzNEEsDQorICAgIDB4Q0I1OCwgMHhDQjVDLCAweDQ3NjIsIDB4Q0I1RCwgMHhDQjVELCAweDFGOTEsIDB4Q0I1RSwgMHhDQjVFLCAweDQ3NjcsDQorICAgIDB4Q0I1RiwgMHhDQjVGLCAweDIxMDcsIDB4Q0I2MCwgMHhDQjY5LCAweDQ3NjgsIDB4Q0I2QSwgMHhDQjZBLCAweDIzM0YsDQorICAgIDB4Q0I2QiwgMHhDQjdBLCAweDQ3NzIsIDB4Q0I3QiwgMHhDQjdCLCAweDFGRjQsIDB4Q0I3QywgMHhDQjdDLCAweDIzNDMsDQorICAgIDB4Q0I3RCwgMHhDQjdFLCAweDQ3ODIsIDB4Q0I4MCwgMHhDQjg2LCAweDQ3ODQsIDB4Q0I4NywgMHhDQjg3LCAweDIyMTIsDQorICAgIDB4Q0I4OCwgMHhDQjhELCAweDQ3OEIsIDB4Q0I4RSwgMHhDQjhFLCAweDIyMDcsIDB4Q0I4RiwgMHhDQjkxLCAweDQ3OTEsDQorICAgIDB4Q0I5MiwgMHhDQjkyLCAweDIzNTksIDB4Q0I5MywgMHhDQjlCLCAweDQ3OTQsIDB4Q0I5QywgMHhDQjlDLCAweDIyNTQsDQorICAgIDB4Q0I5RCwgMHhDQjlELCAweDQ3OUQsIDB4Q0I5RSwgMHhDQjlFLCAweDIzMzIsIDB4Q0I5RiwgMHhDQkEwLCAweDQ3OUUsDQorICAgIDB4Q0JBMSwgMHhDQkZFLCAweDBEOTYsIDB4Q0M0MCwgMHhDQzQwLCAweDFFMjYsIDB4Q0M0MSwgMHhDQzQxLCAweDIzNTcsDQorICAgIDB4Q0M0MiwgMHhDQzQ4LCAweDQ3QTAsIDB4Q0M0OSwgMHhDQzQ5LCAweDIzNTgsIDB4Q0M0QSwgMHhDQzRBLCAweDIwNDIsDQorICAgIDB4Q0M0QiwgMHhDQzRCLCAweDIxNTMsIDB4Q0M0QywgMHhDQzRFLCAweDQ3QTcsIDB4Q0M0RiwgMHhDQzRGLCAweDIwQkIsDQorICAgIDB4Q0M1MCwgMHhDQzVCLCAweDQ3QUEsIDB4Q0M1QywgMHhDQzVDLCAweDIzNUEsIDB4Q0M1RCwgMHhDQzVGLCAweDQ3QjYsDQorICAgIDB4Q0M2MCwgMHhDQzYwLCAweDIzNTYsIDB4Q0M2MSwgMHhDQzYzLCAweDQ3QjksIDB4Q0M2NCwgMHhDQzY0LCAweDIzMzcsDQorICAgIDB4Q0M2NSwgMHhDQzZDLCAweDQ3QkMsIDB4Q0M2RCwgMHhDQzZELCAweDFGRjksIDB4Q0M2RSwgMHhDQzc4LCAweDQ3QzQsDQorICAgIDB4Q0M3OSwgMHhDQzc5LCAweDIzNTMsIDB4Q0M3QSwgMHhDQzdDLCAweDQ3Q0YsIDB4Q0M3RCwgMHhDQzdELCAweDIwNjEsDQorICAgIDB4Q0M3RSwgMHhDQzdFLCAweDQ3RDIsIDB4Q0M4MCwgMHhDQzhELCAweDQ3RDMsIDB4Q0M4RSwgMHhDQzhFLCAweDFFOTUsDQorICAgIDB4Q0M4RiwgMHhDQzkzLCAweDQ3RTEsIDB4Q0M5NCwgMHhDQzk0LCAweDIwNDksIDB4Q0M5NSwgMHhDQzk1LCAweDQ3RTYsDQorICAgIDB4Q0M5NiwgMHhDQzk2LCAweDFGNDIsIDB4Q0M5NywgMHhDQzlDLCAweDQ3RTcsIDB4Q0M5RCwgMHhDQzlELCAweDFGRTgsDQorICAgIDB4Q0M5RSwgMHhDQ0EwLCAweDQ3RUQsIDB4Q0NBMSwgMHhDQ0ZFLCAweDBERjQsIDB4Q0Q0MCwgMHhDRDdFLCAweDQ3RjAsDQorICAgIDB4Q0Q4MCwgMHhDRDhGLCAweDQ4MkYsIDB4Q0Q5MCwgMHhDRDkwLCAweDI1REEsIDB4Q0Q5MSwgMHhDRDk3LCAweDQ4M0YsDQorICAgIDB4Q0Q5OCwgMHhDRDk4LCAweDI1RDcsIDB4Q0Q5OSwgMHhDREEwLCAweDQ4NDYsIDB4Q0RBMSwgMHhDREZFLCAweDBFNTIsDQorICAgIDB4Q0U0MCwgMHhDRTY2LCAweDQ4NEUsIDB4Q0U2NywgMHhDRTY3LCAweDIxMkUsIDB4Q0U2OCwgMHhDRTcxLCAweDQ4NzUsDQorICAgIDB4Q0U3MiwgMHhDRTcyLCAweDIxQjIsIDB4Q0U3MywgMHhDRTdFLCAweDQ4N0YsIDB4Q0U4MCwgMHhDRTgwLCAweDQ4OEIsDQorICAgIDB4Q0U4MSwgMHhDRTgxLCAweDIxOUUsIDB4Q0U4MiwgMHhDRTg2LCAweDQ4OEMsIDB4Q0U4NywgMHhDRTg3LCAweDI1REMsDQorICAgIDB4Q0U4OCwgMHhDRTlBLCAweDQ4OTEsIDB4Q0U5QiwgMHhDRTlCLCAweDIwNkMsIDB4Q0U5QywgMHhDRTlELCAweDQ4QTQsDQorICAgIDB4Q0U5RSwgMHhDRTlFLCAweDIyMjYsIDB4Q0U5RiwgMHhDRUEwLCAweDQ4QTYsIDB4Q0VBMSwgMHhDRUZFLCAweDBFQjAsDQorICAgIDB4Q0Y0MCwgMHhDRjRELCAweDQ4QTgsIDB4Q0Y0RSwgMHhDRjRFLCAweDI1RTAsIDB4Q0Y0RiwgMHhDRjU0LCAweDQ4QjYsDQorICAgIDB4Q0Y1NSwgMHhDRjU1LCAweDIyN0IsIDB4Q0Y1NiwgMHhDRjU3LCAweDQ4QkMsIDB4Q0Y1OCwgMHhDRjU4LCAweDI1REUsDQorICAgIDB4Q0Y1OSwgMHhDRjVCLCAweDQ4QkUsIDB4Q0Y1QywgMHhDRjVDLCAweDI1RTEsIDB4Q0Y1RCwgMHhDRjZCLCAweDQ4QzEsDQorICAgIDB4Q0Y2QywgMHhDRjZDLCAweDI1RDUsIDB4Q0Y2RCwgMHhDRjcyLCAweDQ4RDAsIDB4Q0Y3MywgMHhDRjczLCAweDFFNkIsDQorICAgIDB4Q0Y3NCwgMHhDRjc0LCAweDQ4RDYsIDB4Q0Y3NSwgMHhDRjc1LCAweDI1REIsIDB4Q0Y3NiwgMHhDRjc3LCAweDQ4RDcsDQorICAgIDB4Q0Y3OCwgMHhDRjc4LCAweDFFODksIDB4Q0Y3OSwgMHhDRjdCLCAweDQ4RDksIDB4Q0Y3QywgMHhDRjdDLCAweDI1RDksDQorICAgIDB4Q0Y3RCwgMHhDRjdFLCAweDQ4REMsIDB4Q0Y4MCwgMHhDRjgwLCAweDQ4REUsIDB4Q0Y4MSwgMHhDRjgxLCAweDIyMTEsDQorICAgIDB4Q0Y4MiwgMHhDRjg4LCAweDQ4REYsIDB4Q0Y4OSwgMHhDRjg5LCAweDIyMjksIDB4Q0Y4QSwgMHhDRjhBLCAweDI1RDYsDQorICAgIDB4Q0Y4QiwgMHhDRjkyLCAweDQ4RTYsIDB4Q0Y5MywgMHhDRjkzLCAweDI1REQsIDB4Q0Y5NCwgMHhDRjk0LCAweDI1REYsDQorICAgIDB4Q0Y5NSwgMHhDRjlELCAweDQ4RUUsIDB4Q0Y5RSwgMHhDRjlFLCAweDFGRUYsIDB4Q0Y5RiwgMHhDRjlGLCAweDQ4RjcsDQorICAgIDB4Q0ZBMCwgMHhDRkEwLCAweDI1RDgsIDB4Q0ZBMSwgMHhDRkZFLCAweDBGMEUsIDB4RDA0MCwgMHhEMDRDLCAweDQ4RjgsDQorICAgIDB4RDA0RCwgMHhEMDRELCAweDFGMjksIDB4RDA0RSwgMHhEMDUwLCAweDQ5MDUsIDB4RDA1MSwgMHhEMDUxLCAweDFFNUIsDQorICAgIDB4RDA1MiwgMHhEMDU0LCAweDQ5MDgsIDB4RDA1NSwgMHhEMDU1LCAweDIwNzYsIDB4RDA1NiwgMHhEMDVCLCAweDQ5MEIsDQorICAgIDB4RDA1QywgMHhEMDVDLCAweDIyOTcsIDB4RDA1RCwgMHhEMDVGLCAweDQ5MTEsIDB4RDA2MCwgMHhEMDYwLCAweDI2OTAsDQorICAgIDB4RDA2MSwgMHhEMDY2LCAweDQ5MTQsIDB4RDA2NywgMHhEMDY3LCAweDIxM0YsIDB4RDA2OCwgMHhEMDZCLCAweDQ5MUEsDQorICAgIDB4RDA2QywgMHhEMDZDLCAweDIxOTgsIDB4RDA2RCwgMHhEMDZELCAweDQ5MUUsIDB4RDA2RSwgMHhEMDZFLCAweDFFODgsDQorICAgIDB4RDA2RiwgMHhEMDdDLCAweDQ5MUYsIDB4RDA3RCwgMHhEMDdELCAweDIyOEMsIDB4RDA3RSwgMHhEMDdFLCAweDQ5MkQsDQorICAgIDB4RDA4MCwgMHhEMEEwLCAweDQ5MkUsIDB4RDBBMSwgMHhEMEZFLCAweDBGNkMsIDB4RDE0MCwgMHhEMTU0LCAweDQ5NEYsDQorICAgIDB4RDE1NSwgMHhEMTU1LCAweDI1RjEsIDB4RDE1NiwgMHhEMTU4LCAweDQ5NjQsIDB4RDE1OSwgMHhEMTU5LCAweDIwMEMsDQorICAgIDB4RDE1QSwgMHhEMTYwLCAweDQ5NjcsIDB4RDE2MSwgMHhEMTYxLCAweDFFNTgsIDB4RDE2MiwgMHhEMTYyLCAweDIyQUMsDQorICAgIDB4RDE2MywgMHhEMTc0LCAweDQ5NkUsIDB4RDE3NSwgMHhEMTc1LCAweDI2QTcsIDB4RDE3NiwgMHhEMTdDLCAweDQ5ODAsDQorICAgIDB4RDE3RCwgMHhEMTdELCAweDI2NzYsIDB4RDE3RSwgMHhEMTdFLCAweDQ5ODcsIDB4RDE4MCwgMHhEMTlDLCAweDQ5ODgsDQorICAgIDB4RDE5RCwgMHhEMTlELCAweDFGRTEsIDB4RDE5RSwgMHhEMTlFLCAweDI1QkIsIDB4RDE5RiwgMHhEMUEwLCAweDQ5QTUsDQorICAgIDB4RDFBMSwgMHhEMUZFLCAweDBGQ0EsIDB4RDI0MCwgMHhEMjQwLCAweDI1QkUsIDB4RDI0MSwgMHhEMjQyLCAweDQ5QTcsDQorICAgIDB4RDI0MywgMHhEMjQzLCAweDIyREQsIDB4RDI0NCwgMHhEMjRDLCAweDQ5QTksIDB4RDI0RCwgMHhEMjRELCAweDI1QkQsDQorICAgIDB4RDI0RSwgMHhEMjVCLCAweDQ5QjIsIDB4RDI1QywgMHhEMjVDLCAweDFFMkEsIDB4RDI1RCwgMHhEMjYyLCAweDQ5QzAsDQorICAgIDB4RDI2MywgMHhEMjYzLCAweDI1QkMsIDB4RDI2NCwgMHhEMjY0LCAweDI1QkEsIDB4RDI2NSwgMHhEMjY3LCAweDQ5QzYsDQorICAgIDB4RDI2OCwgMHhEMjY4LCAweDI1QkYsIDB4RDI2OSwgMHhEMjZDLCAweDQ5QzksIDB4RDI2RCwgMHhEMjZELCAweDIxODcsDQorICAgIDB4RDI2RSwgMHhEMjZFLCAweDQ5Q0QsIDB4RDI2RiwgMHhEMjZGLCAweDI2NkIsIDB4RDI3MCwgMHhEMjcxLCAweDQ5Q0UsDQorICAgIDB4RDI3MiwgMHhEMjcyLCAweDFFN0YsIDB4RDI3MywgMHhEMjc0LCAweDQ5RDAsIDB4RDI3NSwgMHhEMjc1LCAweDIxQUQsDQorICAgIDB4RDI3NiwgMHhEMjdFLCAweDQ5RDIsIDB4RDI4MCwgMHhEMjg5LCAweDQ5REIsIDB4RDI4QSwgMHhEMjhBLCAweDFGOTYsDQorICAgIDB4RDI4QiwgMHhEMjhELCAweDQ5RTUsIDB4RDI4RSwgMHhEMjhFLCAweDFGMzIsIDB4RDI4RiwgMHhEMjkxLCAweDQ5RTgsDQorICAgIDB4RDI5MiwgMHhEMjkyLCAweDIwODQsIDB4RDI5MywgMHhEMjk0LCAweDQ5RUIsIDB4RDI5NSwgMHhEMjk1LCAweDIxMzYsDQorICAgIDB4RDI5NiwgMHhEMjk2LCAweDQ5RUQsIDB4RDI5NywgMHhEMjk3LCAweDI0QjgsIDB4RDI5OCwgMHhEMjlGLCAweDQ5RUUsDQorICAgIDB4RDJBMCwgMHhEMkEwLCAweDI0QkEsIDB4RDJBMSwgMHhEMkZFLCAweDEwMjgsIDB4RDM0MCwgMHhEMzQzLCAweDQ5RjYsDQorICAgIDB4RDM0NCwgMHhEMzQ0LCAweDI0QkMsIDB4RDM0NSwgMHhEMzQ3LCAweDQ5RkEsIDB4RDM0OCwgMHhEMzQ4LCAweDIwRTQsDQorICAgIDB4RDM0OSwgMHhEMzQ5LCAweDQ5RkQsIDB4RDM0QSwgMHhEMzRBLCAweDI0QjksIDB4RDM0QiwgMHhEMzRDLCAweDQ5RkUsDQorICAgIDB4RDM0RCwgMHhEMzRELCAweDI0QkQsIDB4RDM0RSwgMHhEMzRGLCAweDRBMDAsIDB4RDM1MCwgMHhEMzUwLCAweDI0QkUsDQorICAgIDB4RDM1MSwgMHhEMzU0LCAweDRBMDIsIDB4RDM1NSwgMHhEMzU1LCAweDI0QkYsIDB4RDM1NiwgMHhEMzU3LCAweDRBMDYsDQorICAgIDB4RDM1OCwgMHhEMzU4LCAweDFGRDIsIDB4RDM1OSwgMHhEMzVBLCAweDRBMDgsIDB4RDM1QiwgMHhEMzVCLCAweDFGRkQsDQorICAgIDB4RDM1QywgMHhEMzVDLCAweDRBMEEsIDB4RDM1RCwgMHhEMzVELCAweDI0QkIsIDB4RDM1RSwgMHhEMzVFLCAweDFGMkQsDQorICAgIDB4RDM1RiwgMHhEMzc3LCAweDRBMEIsIDB4RDM3OCwgMHhEMzc4LCAweDI2MDksIDB4RDM3OSwgMHhEMzc5LCAweDRBMjQsDQorICAgIDB4RDM3QSwgMHhEMzdBLCAweDI2MEEsIDB4RDM3QiwgMHhEMzdCLCAweDRBMjUsIDB4RDM3QywgMHhEMzdDLCAweDFFOTQsDQorICAgIDB4RDM3RCwgMHhEMzdFLCAweDRBMjYsIDB4RDM4MCwgMHhEMzg0LCAweDRBMjgsIDB4RDM4NSwgMHhEMzg1LCAweDIyREYsDQorICAgIDB4RDM4NiwgMHhEMzg2LCAweDFFQ0IsIDB4RDM4NywgMHhEMzg3LCAweDFGMEQsIDB4RDM4OCwgMHhEMzhBLCAweDRBMkQsDQorICAgIDB4RDM4QiwgMHhEMzhCLCAweDFGNzcsIDB4RDM4QywgMHhEMzhDLCAweDRBMzAsIDB4RDM4RCwgMHhEMzhELCAweDIxRUIsDQorICAgIDB4RDM4RSwgMHhEMzhFLCAweDRBMzEsIDB4RDM4RiwgMHhEMzhGLCAweDIyRTEsIDB4RDM5MCwgMHhEMzkwLCAweDRBMzIsDQorICAgIDB4RDM5MSwgMHhEMzkxLCAweDIxNkYsIDB4RDM5MiwgMHhEMzkyLCAweDRBMzMsIDB4RDM5MywgMHhEMzkzLCAweDIyRTAsDQorICAgIDB4RDM5NCwgMHhEMzk1LCAweDRBMzQsIDB4RDM5NiwgMHhEMzk2LCAweDIxRUEsIDB4RDM5NywgMHhEMzk3LCAweDRBMzYsDQorICAgIDB4RDM5OCwgMHhEMzk4LCAweDIyRTIsIDB4RDM5OSwgMHhEMzk5LCAweDIwQ0IsIDB4RDM5QSwgMHhEMzlBLCAweDRBMzcsDQorICAgIDB4RDM5QiwgMHhEMzlCLCAweDFGNzgsIDB4RDM5QywgMHhEMzlELCAweDRBMzgsIDB4RDM5RSwgMHhEMzlFLCAweDFFRTIsDQorICAgIDB4RDM5RiwgMHhEMzlGLCAweDRBM0EsIDB4RDNBMCwgMHhEM0EwLCAweDIxRjIsIDB4RDNBMSwgMHhEM0ZFLCAweDEwODYsDQorICAgIDB4RDQ0MCwgMHhENDQwLCAweDRBM0IsIDB4RDQ0MSwgMHhENDQxLCAweDIxNTAsIDB4RDQ0MiwgMHhENDQ0LCAweDRBM0MsDQorICAgIDB4RDQ0NSwgMHhENDQ1LCAweDFGRDMsIDB4RDQ0NiwgMHhENDQ2LCAweDRBM0YsIDB4RDQ0NywgMHhENDQ3LCAweDIyRTUsDQorICAgIDB4RDQ0OCwgMHhENDRCLCAweDRBNDAsIDB4RDQ0QywgMHhENDRDLCAweDFFRjIsIDB4RDQ0RCwgMHhENDRFLCAweDRBNDQsDQorICAgIDB4RDQ0RiwgMHhENDRGLCAweDIxMUYsIDB4RDQ1MCwgMHhENDUyLCAweDRBNDYsIDB4RDQ1MywgMHhENDUzLCAweDIxREQsDQorICAgIDB4RDQ1NCwgMHhENDU1LCAweDRBNDksIDB4RDQ1NiwgMHhENDU2LCAweDIxNTQsIDB4RDQ1NywgMHhENDU3LCAweDRBNEIsDQorICAgIDB4RDQ1OCwgMHhENDU4LCAweDIyRTcsIDB4RDQ1OSwgMHhENDVCLCAweDRBNEMsIDB4RDQ1QywgMHhENDVDLCAweDIyODIsDQorICAgIDB4RDQ1RCwgMHhENDYxLCAweDRBNEYsIDB4RDQ2MiwgMHhENDYyLCAweDIyRTYsIDB4RDQ2MywgMHhENDY2LCAweDRBNTQsDQorICAgIDB4RDQ2NywgMHhENDY3LCAweDIyRTgsIDB4RDQ2OCwgMHhENDZELCAweDRBNTgsIDB4RDQ2RSwgMHhENDZFLCAweDIyRTQsDQorICAgIDB4RDQ2RiwgMHhENDZGLCAweDRBNUUsIDB4RDQ3MCwgMHhENDcwLCAweDIyNkEsIDB4RDQ3MSwgMHhENDcxLCAweDRBNUYsDQorICAgIDB4RDQ3MiwgMHhENDcyLCAweDIyRUIsIDB4RDQ3MywgMHhENDczLCAweDRBNjAsIDB4RDQ3NCwgMHhENDc0LCAweDIyRTksDQorICAgIDB4RDQ3NSwgMHhENDc1LCAweDIwQkQsIDB4RDQ3NiwgMHhENDc3LCAweDRBNjEsIDB4RDQ3OCwgMHhENDc4LCAweDIyRUEsDQorICAgIDB4RDQ3OSwgMHhENDdBLCAweDRBNjMsIDB4RDQ3QiwgMHhENDdCLCAweDIyQkQsIDB4RDQ3QywgMHhENDdELCAweDRBNjUsDQorICAgIDB4RDQ3RSwgMHhENDdFLCAweDFFOUUsIDB4RDQ4MCwgMHhENDgxLCAweDRBNjcsIDB4RDQ4MiwgMHhENDgyLCAweDIyRjYsDQorICAgIDB4RDQ4MywgMHhENDgzLCAweDIxRTcsIDB4RDQ4NCwgMHhENDg0LCAweDIyMTYsIDB4RDQ4NSwgMHhENDg2LCAweDRBNjksDQorICAgIDB4RDQ4NywgMHhENDg3LCAweDIxMzcsIDB4RDQ4OCwgMHhENDg5LCAweDRBNkIsIDB4RDQ4QSwgMHhENDhBLCAweDIxMkMsDQorICAgIDB4RDQ4QiwgMHhENDhCLCAweDRBNkQsIDB4RDQ4QywgMHhENDhDLCAweDFFNjgsIDB4RDQ4RCwgMHhENDhELCAweDIyRjIsDQorICAgIDB4RDQ4RSwgMHhENDhFLCAweDFGMzcsIDB4RDQ4RiwgMHhENDhGLCAweDIyRjMsIDB4RDQ5MCwgMHhENDkwLCAweDRBNkUsDQorICAgIDB4RDQ5MSwgMHhENDkxLCAweDIyRUYsIDB4RDQ5MiwgMHhENDkyLCAweDFGNTAsIDB4RDQ5MywgMHhENDkzLCAweDFGMTAsDQorICAgIDB4RDQ5NCwgMHhENDk0LCAweDIxQzgsIDB4RDQ5NSwgMHhENDk1LCAweDRBNkYsIDB4RDQ5NiwgMHhENDk2LCAweDIyRjEsDQorICAgIDB4RDQ5NywgMHhENDlCLCAweDRBNzAsIDB4RDQ5QywgMHhENDlDLCAweDIyRjAsIDB4RDQ5RCwgMHhENDlFLCAweDRBNzUsDQorICAgIDB4RDQ5RiwgMHhENDlGLCAweDIyRUUsIDB4RDRBMCwgMHhENEEwLCAweDRBNzcsIDB4RDRBMSwgMHhENEZFLCAweDEwRTQsDQorICAgIDB4RDU0MCwgMHhENTQyLCAweDRBNzgsIDB4RDU0MywgMHhENTQzLCAweDIyRUQsIDB4RDU0NCwgMHhENTQ0LCAweDIyOUUsDQorICAgIDB4RDU0NSwgMHhENTQ1LCAweDIyRUMsIDB4RDU0NiwgMHhENTQ2LCAweDFGRTIsIDB4RDU0NywgMHhENTQ5LCAweDRBN0IsDQorICAgIDB4RDU0QSwgMHhENTRBLCAweDIwRkUsIDB4RDU0QiwgMHhENTRELCAweDRBN0UsIDB4RDU0RSwgMHhENTRGLCAweDIyRjksDQorICAgIDB4RDU1MCwgMHhENTUwLCAweDRBODEsIDB4RDU1MSwgMHhENTUxLCAweDFFQUYsIDB4RDU1MiwgMHhENTUzLCAweDRBODIsDQorICAgIDB4RDU1NCwgMHhENTU0LCAweDIyMzYsIDB4RDU1NSwgMHhENTU1LCAweDRBODQsIDB4RDU1NiwgMHhENTU2LCAweDIyRjcsDQorICAgIDB4RDU1NywgMHhENTU5LCAweDRBODUsIDB4RDU1QSwgMHhENTVBLCAweDIyM0QsIDB4RDU1QiwgMHhENTVCLCAweDRBODgsDQorICAgIDB4RDU1QywgMHhENTVDLCAweDFFODIsIDB4RDU1RCwgMHhENTVELCAweDFGQjYsIDB4RDU1RSwgMHhENTVFLCAweDRBODksDQorICAgIDB4RDU1RiwgMHhENTVGLCAweDIxQTQsIDB4RDU2MCwgMHhENTYwLCAweDIxQUEsIDB4RDU2MSwgMHhENTYxLCAweDIyRjgsDQorICAgIDB4RDU2MiwgMHhENTYyLCAweDIxNTEsIDB4RDU2MywgMHhENTYzLCAweDRBOEEsIDB4RDU2NCwgMHhENTY0LCAweDFGNjAsDQorICAgIDB4RDU2NSwgMHhENTY3LCAweDRBOEIsIDB4RDU2OCwgMHhENTY4LCAweDIxNDcsIDB4RDU2OSwgMHhENTZCLCAweDRBOEUsDQorICAgIDB4RDU2QywgMHhENTZDLCAweDIxNDUsIDB4RDU2RCwgMHhENTZELCAweDRBOTEsIDB4RDU2RSwgMHhENTZFLCAweDFGREMsDQorICAgIDB4RDU2RiwgMHhENTcxLCAweDRBOTIsIDB4RDU3MiwgMHhENTcyLCAweDIzMDEsIDB4RDU3MywgMHhENTc0LCAweDRBOTUsDQorICAgIDB4RDU3NSwgMHhENTc1LCAweDFFRjUsIDB4RDU3NiwgMHhENTc3LCAweDRBOTcsIDB4RDU3OCwgMHhENTc4LCAweDIyMTgsDQorICAgIDB4RDU3OSwgMHhENTdBLCAweDRBOTksIDB4RDU3QiwgMHhENTdCLCAweDFFQzYsIDB4RDU3QywgMHhENTdELCAweDRBOUIsDQorICAgIDB4RDU3RSwgMHhENTdFLCAweDIzMDAsIDB4RDU4MCwgMHhENTgwLCAweDRBOUQsIDB4RDU4MSwgMHhENTgxLCAweDIyQjQsDQorICAgIDB4RDU4MiwgMHhENTgzLCAweDRBOUUsIDB4RDU4NCwgMHhENTg0LCAweDIxNjksIDB4RDU4NSwgMHhENTg1LCAweDRBQTAsDQorICAgIDB4RDU4NiwgMHhENTg2LCAweDIyRkQsIDB4RDU4NywgMHhENTg3LCAweDRBQTEsIDB4RDU4OCwgMHhENTg4LCAweDIwRUEsDQorICAgIDB4RDU4OSwgMHhENTg5LCAweDRBQTIsIDB4RDU4QSwgMHhENThBLCAweDIyRjQsIDB4RDU4QiwgMHhENThCLCAweDRBQTMsDQorICAgIDB4RDU4QywgMHhENThDLCAweDIyRkIsIDB4RDU4RCwgMHhENThELCAweDRBQTQsIDB4RDU4RSwgMHhENThFLCAweDIyRkMsDQorICAgIDB4RDU4RiwgMHhENThGLCAweDIwMjcsIDB4RDU5MCwgMHhENTkyLCAweDRBQTUsIDB4RDU5MywgMHhENTkzLCAweDIwNjAsDQorICAgIDB4RDU5NCwgMHhENTk0LCAweDIyRkYsIDB4RDU5NSwgMHhENTk3LCAweDRBQTgsIDB4RDU5OCwgMHhENTk4LCAweDIyRkUsDQorICAgIDB4RDU5OSwgMHhENTk5LCAweDFFQzcsIDB4RDU5QSwgMHhENTlBLCAweDRBQUIsIDB4RDU5QiwgMHhENTlCLCAweDIzMEMsDQorICAgIDB4RDU5QywgMHhENTlFLCAweDRBQUMsIDB4RDU5RiwgMHhENTlGLCAweDIyRjUsIDB4RDVBMCwgMHhENUEwLCAweDRBQUYsDQorICAgIDB4RDVBMSwgMHhENUZFLCAweDExNDIsIDB4RDY0MCwgMHhENjQwLCAweDIzMDYsIDB4RDY0MSwgMHhENjQxLCAweDRBQjAsDQorICAgIDB4RDY0MiwgMHhENjQyLCAweDIzMEEsIDB4RDY0MywgMHhENjQzLCAweDIxRDMsIDB4RDY0NCwgMHhENjQ2LCAweDRBQjEsDQorICAgIDB4RDY0NywgMHhENjQ3LCAweDIzMDMsIDB4RDY0OCwgMHhENjQ4LCAweDRBQjQsIDB4RDY0OSwgMHhENjQ5LCAweDIzMDcsDQorICAgIDB4RDY0QSwgMHhENjRBLCAweDIzMEIsIDB4RDY0QiwgMHhENjRDLCAweDRBQjUsIDB4RDY0RCwgMHhENjRELCAweDFGNUYsDQorICAgIDB4RDY0RSwgMHhENjRFLCAweDRBQjcsIDB4RDY0RiwgMHhENjRGLCAweDIzMDksIDB4RDY1MCwgMHhENjUxLCAweDRBQjgsDQorICAgIDB4RDY1MiwgMHhENjUyLCAweDIzMDIsIDB4RDY1MywgMHhENjUzLCAweDFGMDQsIDB4RDY1NCwgMHhENjU0LCAweDIyOUQsDQorICAgIDB4RDY1NSwgMHhENjU1LCAweDRBQkEsIDB4RDY1NiwgMHhENjU2LCAweDIxRkIsIDB4RDY1NywgMHhENjU3LCAweDRBQkIsDQorICAgIDB4RDY1OCwgMHhENjU4LCAweDIzMDgsIDB4RDY1OSwgMHhENjU5LCAweDRBQkMsIDB4RDY1QSwgMHhENjVBLCAweDIwQUMsDQorICAgIDB4RDY1QiwgMHhENjVCLCAweDRBQkQsIDB4RDY1QywgMHhENjVDLCAweDIwOEUsIDB4RDY1RCwgMHhENjVELCAweDIzMDUsDQorICAgIDB4RDY1RSwgMHhENjVFLCAweDIxOTcsIDB4RDY1RiwgMHhENjVGLCAweDRBQkUsIDB4RDY2MCwgMHhENjYwLCAweDIxNzEsDQorICAgIDB4RDY2MSwgMHhENjYxLCAweDIyOTgsIDB4RDY2MiwgMHhENjY0LCAweDRBQkYsIDB4RDY2NSwgMHhENjY1LCAweDFGNTcsDQorICAgIDB4RDY2NiwgMHhENjY4LCAweDRBQzIsIDB4RDY2OSwgMHhENjY5LCAweDIwODIsIDB4RDY2QSwgMHhENjZBLCAweDRBQzUsDQorICAgIDB4RDY2QiwgMHhENjZCLCAweDIzMTEsIDB4RDY2QywgMHhENjZFLCAweDRBQzYsIDB4RDY2RiwgMHhENjZGLCAweDIzMDQsDQorICAgIDB4RDY3MCwgMHhENjcwLCAweDRBQzksIDB4RDY3MSwgMHhENjcxLCAweDIzMEYsIDB4RDY3MiwgMHhENjcyLCAweDFFMzUsDQorICAgIDB4RDY3MywgMHhENjczLCAweDRBQ0EsIDB4RDY3NCwgMHhENjc0LCAweDIwRDEsIDB4RDY3NSwgMHhENjc1LCAweDIzMTAsDQorICAgIDB4RDY3NiwgMHhENjc2LCAweDFGQTMsIDB4RDY3NywgMHhENjc3LCAweDRBQ0IsIDB4RDY3OCwgMHhENjc4LCAweDIxRDYsDQorICAgIDB4RDY3OSwgMHhENjdCLCAweDRBQ0MsIDB4RDY3QywgMHhENjdDLCAweDIyMDYsIDB4RDY3RCwgMHhENjdFLCAweDRBQ0YsDQorICAgIDB4RDY4MCwgMHhENjgyLCAweDRBRDEsIDB4RDY4MywgMHhENjgzLCAweDIzMEQsIDB4RDY4NCwgMHhENjg1LCAweDRBRDQsDQorICAgIDB4RDY4NiwgMHhENjg2LCAweDIzMTIsIDB4RDY4NywgMHhENjg3LCAweDIwOEQsIDB4RDY4OCwgMHhENjg4LCAweDIzMTMsDQorICAgIDB4RDY4OSwgMHhENjhELCAweDRBRDYsIDB4RDY4RSwgMHhENjhFLCAweDIyRTMsIDB4RDY4RiwgMHhENjkzLCAweDRBREIsDQorICAgIDB4RDY5NCwgMHhENjk0LCAweDFGQkEsIDB4RDY5NSwgMHhENjk4LCAweDRBRTAsIDB4RDY5OSwgMHhENjk5LCAweDIwNzgsDQorICAgIDB4RDY5QSwgMHhENkEwLCAweDRBRTQsIDB4RDZBMSwgMHhENkZFLCAweDExQTAsIDB4RDc0MCwgMHhENzQyLCAweDRBRUIsDQorICAgIDB4RDc0MywgMHhENzQzLCAweDIyODgsIDB4RDc0NCwgMHhENzQ3LCAweDRBRUUsIDB4RDc0OCwgMHhENzQ4LCAweDIzMTYsDQorICAgIDB4RDc0OSwgMHhENzQ5LCAweDFGNkIsIDB4RDc0QSwgMHhENzRGLCAweDRBRjIsIDB4RDc1MCwgMHhENzUwLCAweDIzMTQsDQorICAgIDB4RDc1MSwgMHhENzUxLCAweDRBRjgsIDB4RDc1MiwgMHhENzUyLCAweDIxMzAsIDB4RDc1MywgMHhENzUzLCAweDIzMTUsDQorICAgIDB4RDc1NCwgMHhENzU0LCAweDIxNjgsIDB4RDc1NSwgMHhENzU1LCAweDRBRjksIDB4RDc1NiwgMHhENzU2LCAweDIwQzQsDQorICAgIDB4RDc1NywgMHhENzYzLCAweDRBRkEsIDB4RDc2NCwgMHhENzY0LCAweDIzMTgsIDB4RDc2NSwgMHhENzY2LCAweDRCMDcsDQorICAgIDB4RDc2NywgMHhENzY3LCAweDIyMTksIDB4RDc2OCwgMHhENzY4LCAweDIyMTcsIDB4RDc2OSwgMHhENzZCLCAweDRCMDksDQorICAgIDB4RDc2QywgMHhENzZDLCAweDIwRDUsIDB4RDc2RCwgMHhENzZFLCAweDRCMEMsIDB4RDc2RiwgMHhENzZGLCAweDFGNEEsDQorICAgIDB4RDc3MCwgMHhENzc0LCAweDRCMEUsIDB4RDc3NSwgMHhENzc1LCAweDIyNDAsIDB4RDc3NiwgMHhENzc3LCAweDRCMTMsDQorICAgIDB4RDc3OCwgMHhENzc4LCAweDFFRDMsIDB4RDc3OSwgMHhENzdFLCAweDRCMTUsIDB4RDc4MCwgMHhENzgyLCAweDRCMUIsDQorICAgIDB4RDc4MywgMHhENzgzLCAweDFFNDksIDB4RDc4NCwgMHhENzg2LCAweDRCMUUsIDB4RDc4NywgMHhENzg3LCAweDI2MUIsDQorICAgIDB4RDc4OCwgMHhENzhBLCAweDRCMjEsIDB4RDc4QiwgMHhENzhCLCAweDFFNkQsIDB4RDc4QywgMHhENzhDLCAweDIwRjgsDQorICAgIDB4RDc4RCwgMHhENzhELCAweDRCMjQsIDB4RDc4RSwgMHhENzhFLCAweDFGRkIsIDB4RDc4RiwgMHhENzhGLCAweDIzMTksDQorICAgIDB4RDc5MCwgMHhENzk0LCAweDRCMjUsIDB4RDc5NSwgMHhENzk1LCAweDIzMEUsIDB4RDc5NiwgMHhENzk2LCAweDRCMkEsDQorICAgIDB4RDc5NywgMHhENzk3LCAweDIzMTcsIDB4RDc5OCwgMHhEN0EwLCAweDRCMkIsIDB4RDdBMSwgMHhEN0Y5LCAweDExRkUsDQorICAgIDB4RDg0MCwgMHhEODRDLCAweDRCMzQsIDB4RDg0RCwgMHhEODRELCAweDIwQzgsIDB4RDg0RSwgMHhEODUyLCAweDRCNDEsDQorICAgIDB4RDg1MywgMHhEODUzLCAweDFFRkQsIDB4RDg1NCwgMHhEODdFLCAweDRCNDYsIDB4RDg4MCwgMHhEODhGLCAweDRCNzEsDQorICAgIDB4RDg5MCwgMHhEODkwLCAweDFFM0IsIDB4RDg5MSwgMHhEODkxLCAweDIyN0YsIDB4RDg5MiwgMHhEODkyLCAweDRCODEsDQorICAgIDB4RDg5MywgMHhEODkzLCAweDFGMEMsIDB4RDg5NCwgMHhEODk0LCAweDFFNTksIDB4RDg5NSwgMHhEODk1LCAweDFGMjQsDQorICAgIDB4RDg5NiwgMHhEODk5LCAweDRCODIsIDB4RDg5QSwgMHhEODlBLCAweDIwQkEsIDB4RDg5QiwgMHhEODlCLCAweDFGNjUsDQorICAgIDB4RDg5QywgMHhEODlDLCAweDFFRjAsIDB4RDg5RCwgMHhEODlELCAweDIxNjQsIDB4RDg5RSwgMHhEODlFLCAweDFGMzAsDQorICAgIDB4RDg5RiwgMHhEODlGLCAweDIyNjEsIDB4RDhBMCwgMHhEOEEwLCAweDRCODYsIDB4RDhBMSwgMHhEOEZFLCAweDEyNTcsDQorICAgIDB4RDk0MCwgMHhEOTQwLCAweDRCODcsIDB4RDk0MSwgMHhEOTQxLCAweDIyQTIsIDB4RDk0MiwgMHhEOTQyLCAweDI0QUIsDQorICAgIDB4RDk0MywgMHhEOTQzLCAweDRCODgsIDB4RDk0NCwgMHhEOTQ0LCAweDI0QUYsIDB4RDk0NSwgMHhEOTQ1LCAweDFFRTgsDQorICAgIDB4RDk0NiwgMHhEOTQ2LCAweDFGMzksIDB4RDk0NywgMHhEOTQ3LCAweDRCODksIDB4RDk0OCwgMHhEOTQ4LCAweDFFNDgsDQorICAgIDB4RDk0OSwgMHhEOTQ5LCAweDIwNzAsIDB4RDk0QSwgMHhEOTRBLCAweDFFQTgsIDB4RDk0QiwgMHhEOTRCLCAweDRCOEEsDQorICAgIDB4RDk0QywgMHhEOTRDLCAweDI0QUMsIDB4RDk0RCwgMHhEOTRELCAweDFFRjcsIDB4RDk0RSwgMHhEOTRFLCAweDIxNzYsDQorICAgIDB4RDk0RiwgMHhEOTRGLCAweDI0QUQsIDB4RDk1MCwgMHhEOTUwLCAweDRCOEIsIDB4RDk1MSwgMHhEOTUxLCAweDIwN0IsDQorICAgIDB4RDk1MiwgMHhEOTUyLCAweDFGNDUsIDB4RDk1MywgMHhEOTUzLCAweDI0QUEsIDB4RDk1NCwgMHhEOTU0LCAweDIwNEIsDQorICAgIDB4RDk1NSwgMHhEOTU1LCAweDIwMkYsIDB4RDk1NiwgMHhEOTU2LCAweDFGNUEsIDB4RDk1NywgMHhEOTU3LCAweDI0QjAsDQorICAgIDB4RDk1OCwgMHhEOTU4LCAweDRCOEMsIDB4RDk1OSwgMHhEOTU5LCAweDIyQjcsIDB4RDk1QSwgMHhEOTVBLCAweDFGN0YsDQorICAgIDB4RDk1QiwgMHhEOTVCLCAweDRCOEQsIDB4RDk1QywgMHhEOTVDLCAweDIyNjUsIDB4RDk1RCwgMHhEOTYyLCAweDRCOEUsDQorICAgIDB4RDk2MywgMHhEOTYzLCAweDI0QjIsIDB4RDk2NCwgMHhEOTY0LCAweDIxMUIsIDB4RDk2NSwgMHhEOTY1LCAweDFFNTEsDQorICAgIDB4RDk2NiwgMHhEOTY2LCAweDRCOTQsIDB4RDk2NywgMHhEOTY3LCAweDI0QjQsIDB4RDk2OCwgMHhEOTZCLCAweDRCOTUsDQorICAgIDB4RDk2QywgMHhEOTZDLCAweDI0QjMsIDB4RDk2RCwgMHhEOTZELCAweDRCOTksIDB4RDk2RSwgMHhEOTZFLCAweDFFOUYsDQorICAgIDB4RDk2RiwgMHhEOTZGLCAweDRCOUEsIDB4RDk3MCwgMHhEOTcwLCAweDIxMTgsIDB4RDk3MSwgMHhEOTcxLCAweDRCOUIsDQorICAgIDB4RDk3MiwgMHhEOTcyLCAweDIwQjQsIDB4RDk3MywgMHhEOTczLCAweDIzQUYsIDB4RDk3NCwgMHhEOTc0LCAweDIxQkIsDQorICAgIDB4RDk3NSwgMHhEOTc1LCAweDIwNzIsIDB4RDk3NiwgMHhEOTc2LCAweDFGOTUsIDB4RDk3NywgMHhEOTc3LCAweDRCOUMsDQorICAgIDB4RDk3OCwgMHhEOTc4LCAweDFGMEEsIDB4RDk3OSwgMHhEOTc5LCAweDI0QjYsIDB4RDk3QSwgMHhEOTdCLCAweDRCOUQsDQorICAgIDB4RDk3QywgMHhEOTdDLCAweDIyOTEsIDB4RDk3RCwgMHhEOTdELCAweDI0QjUsIDB4RDk3RSwgMHhEOTdFLCAweDIyNzgsDQorICAgIDB4RDk4MCwgMHhEOTgwLCAweDFFRDQsIDB4RDk4MSwgMHhEOTg2LCAweDRCOUYsIDB4RDk4NywgMHhEOTg3LCAweDFGRjMsDQorICAgIDB4RDk4OCwgMHhEOThDLCAweDRCQTUsIDB4RDk4RCwgMHhEOThELCAweDIyQTksIDB4RDk4RSwgMHhEOThFLCAweDI0QjcsDQorICAgIDB4RDk4RiwgMHhEOThGLCAweDFGMjgsIDB4RDk5MCwgMHhEOTkwLCAweDIxMDksIDB4RDk5MSwgMHhEOTkxLCAweDIyQzcsDQorICAgIDB4RDk5MiwgMHhEOTk2LCAweDRCQUEsIDB4RDk5NywgMHhEOTk3LCAweDI0QUUsIDB4RDk5OCwgMHhEOTk4LCAweDIyQjEsDQorICAgIDB4RDk5OSwgMHhEOTlBLCAweDRCQUYsIDB4RDk5QiwgMHhEOTlCLCAweDIyNjYsIDB4RDk5QywgMHhEOTlDLCAweDRCQjEsDQorICAgIDB4RDk5RCwgMHhEOTlELCAweDIyNUIsIDB4RDk5RSwgMHhEOTlFLCAweDIyQzQsIDB4RDk5RiwgMHhEOTlGLCAweDRCQjIsDQorICAgIDB4RDlBMCwgMHhEOUEwLCAweDIxMTUsIDB4RDlBMSwgMHhEOUZFLCAweDEyQjUsIDB4REE0MCwgMHhEQTQwLCAweDRCQjMsDQorICAgIDB4REE0MSwgMHhEQTQxLCAweDIyMkEsIDB4REE0MiwgMHhEQTQyLCAweDI0QjEsIDB4REE0MywgMHhEQTQ3LCAweDRCQjQsDQorICAgIDB4REE0OCwgMHhEQTQ4LCAweDIxM0QsIDB4REE0OSwgMHhEQTRDLCAweDRCQjksIDB4REE0RCwgMHhEQTRELCAweDFGMTUsDQorICAgIDB4REE0RSwgMHhEQTRFLCAweDIyNUMsIDB4REE0RiwgMHhEQTcyLCAweDRCQkQsIDB4REE3MywgMHhEQTczLCAweDFGMTQsDQorICAgIDB4REE3NCwgMHhEQTc2LCAweDRCRTEsIDB4REE3NywgMHhEQTc3LCAweDIyN0EsIDB4REE3OCwgMHhEQTdFLCAweDRCRTQsDQorICAgIDB4REE4MCwgMHhEQTg0LCAweDRCRUIsIDB4REE4NSwgMHhEQTg1LCAweDIwRUUsIDB4REE4NiwgMHhEQThELCAweDRCRjAsDQorICAgIDB4REE4RSwgMHhEQThFLCAweDI1RjgsIDB4REE4RiwgMHhEQUEwLCAweDRCRjgsIDB4REFBMSwgMHhEQUZFLCAweDEzMTMsDQorICAgIDB4REI0MCwgMHhEQjVGLCAweDRDMEEsIDB4REI2MCwgMHhEQjYwLCAweDFGOTQsIDB4REI2MSwgMHhEQjc3LCAweDRDMkEsDQorICAgIDB4REI3OCwgMHhEQjc4LCAweDIyMzAsIDB4REI3OSwgMHhEQjdFLCAweDRDNDEsIDB4REI4MCwgMHhEQjgzLCAweDRDNDcsDQorICAgIDB4REI4NCwgMHhEQjg0LCAweDI1RkQsIDB4REI4NSwgMHhEQjhBLCAweDRDNEIsIDB4REI4QiwgMHhEQjhCLCAweDI2MDAsDQorICAgIDB4REI4QywgMHhEQjk3LCAweDRDNTEsIDB4REI5OCwgMHhEQjk4LCAweDI2MDYsIDB4REI5OSwgMHhEQkEwLCAweDRDNUQsDQorICAgIDB4REJBMSwgMHhEQkZFLCAweDEzNzEsIDB4REM0MCwgMHhEQzQ0LCAweDRDNjUsIDB4REM0NSwgMHhEQzQ1LCAweDI1RkYsDQorICAgIDB4REM0NiwgMHhEQzRFLCAweDRDNkEsIDB4REM0RiwgMHhEQzRGLCAweDI1RkMsIDB4REM1MCwgMHhEQzUwLCAweDFFOEMsDQorICAgIDB4REM1MSwgMHhEQzUxLCAweDI2MDIsIDB4REM1MiwgMHhEQzUyLCAweDRDNzMsIDB4REM1MywgMHhEQzUzLCAweDIyNEQsDQorICAgIDB4REM1NCwgMHhEQzU0LCAweDRDNzQsIDB4REM1NSwgMHhEQzU1LCAweDI2MDQsIDB4REM1NiwgMHhEQzU2LCAweDI1RkUsDQorICAgIDB4REM1NywgMHhEQzU3LCAweDI2MDMsIDB4REM1OCwgMHhEQzVDLCAweDRDNzUsIDB4REM1RCwgMHhEQzVELCAweDI2MDEsDQorICAgIDB4REM1RSwgMHhEQzYxLCAweDRDN0EsIDB4REM2MiwgMHhEQzYyLCAweDI2MDUsIDB4REM2MywgMHhEQzY1LCAweDRDN0UsDQorICAgIDB4REM2NiwgMHhEQzY2LCAweDFFQTMsIDB4REM2NywgMHhEQzY3LCAweDI2MDgsIDB4REM2OCwgMHhEQzZBLCAweDRDODEsDQorICAgIDB4REM2QiwgMHhEQzZCLCAweDI2MDcsIDB4REM2QywgMHhEQzdCLCAweDRDODQsIDB4REM3QywgMHhEQzdDLCAweDIwRjAsDQorICAgIDB4REM3RCwgMHhEQzdFLCAweDRDOTQsIDB4REM4MCwgMHhEQzg2LCAweDRDOTYsIDB4REM4NywgMHhEQzg3LCAweDFFN0IsDQorICAgIDB4REM4OCwgMHhEQzg4LCAweDIyNjcsIDB4REM4OSwgMHhEQzg5LCAweDFGMzYsIDB4REM4QSwgMHhEQzhBLCAweDFGRDYsDQorICAgIDB4REM4QiwgMHhEQzhELCAweDRDOUQsIDB4REM4RSwgMHhEQzhFLCAweDIxRTAsIDB4REM4RiwgMHhEQzhGLCAweDRDQTAsDQorICAgIDB4REM5MCwgMHhEQzkwLCAweDI0OEMsIDB4REM5MSwgMHhEQzk2LCAweDRDQTEsIDB4REM5NywgMHhEQzk3LCAweDI0OEQsDQorICAgIDB4REM5OCwgMHhEQzlBLCAweDRDQTcsIDB4REM5QiwgMHhEQzlCLCAweDIxMDIsIDB4REM5QywgMHhEQzlGLCAweDRDQUEsDQorICAgIDB4RENBMCwgMHhEQ0EwLCAweDI0OTQsIDB4RENBMSwgMHhEQ0ZFLCAweDEzQ0YsIDB4REQ0MCwgMHhERDQ1LCAweDRDQUUsDQorICAgIDB4REQ0NiwgMHhERDQ2LCAweDI0OTMsIDB4REQ0NywgMHhERDRDLCAweDRDQjQsIDB4REQ0RCwgMHhERDRELCAweDI0OEUsDQorICAgIDB4REQ0RSwgMHhERDUyLCAweDRDQkEsIDB4REQ1MywgMHhERDUzLCAweDIyOTksIDB4REQ1NCwgMHhERDU0LCAweDI0OTEsDQorICAgIDB4REQ1NSwgMHhERDU1LCAweDI0OTYsIDB4REQ1NiwgMHhERDU2LCAweDI0OEYsIDB4REQ1NywgMHhERDU3LCAweDI0OTIsDQorICAgIDB4REQ1OCwgMHhERDU4LCAweDRDQkYsIDB4REQ1OSwgMHhERDU5LCAweDI0OTcsIDB4REQ1QSwgMHhERDVELCAweDRDQzAsDQorICAgIDB4REQ1RSwgMHhERDVFLCAweDFGQjEsIDB4REQ1RiwgMHhERDVGLCAweDRDQzQsIDB4REQ2MCwgMHhERDYwLCAweDI0OUEsDQorICAgIDB4REQ2MSwgMHhERDYxLCAweDRDQzUsIDB4REQ2MiwgMHhERDYyLCAweDI0OTksIDB4REQ2MywgMHhERDYzLCAweDRDQzYsDQorICAgIDB4REQ2NCwgMHhERDY0LCAweDIyNTgsIDB4REQ2NSwgMHhERDY1LCAweDI0OTgsIDB4REQ2NiwgMHhERDZDLCAweDRDQzcsDQorICAgIDB4REQ2RCwgMHhERDZELCAweDI0OUIsIDB4REQ2RSwgMHhERDZFLCAweDRDQ0UsIDB4REQ2RiwgMHhERDZGLCAweDFGMDksDQorICAgIDB4REQ3MCwgMHhERDcwLCAweDIwRTYsIDB4REQ3MSwgMHhERDc1LCAweDRDQ0YsIDB4REQ3NiwgMHhERDc2LCAweDIwMjYsDQorICAgIDB4REQ3NywgMHhERDc3LCAweDI0OUYsIDB4REQ3OCwgMHhERDc4LCAweDFGNTksIDB4REQ3OSwgMHhERDdBLCAweDI0OUQsDQorICAgIDB4REQ3QiwgMHhERDdFLCAweDRDRDQsIDB4REQ4MCwgMHhERDgwLCAweDRDRDgsIDB4REQ4MSwgMHhERDgxLCAweDFGM0IsDQorICAgIDB4REQ4MiwgMHhERDgyLCAweDI0OUMsIDB4REQ4MywgMHhERDg0LCAweDRDRDksIDB4REQ4NSwgMHhERDg1LCAweDFFM0EsDQorICAgIDB4REQ4NiwgMHhERDg2LCAweDIwNUIsIDB4REQ4NywgMHhERDhBLCAweDRDREIsIDB4REQ4QiwgMHhERDhCLCAweDFGNzAsDQorICAgIDB4REQ4QywgMHhERDhFLCAweDRDREYsIDB4REQ4RiwgMHhERDhGLCAweDI0QTAsIDB4REQ5MCwgMHhERDkzLCAweDRDRTIsDQorICAgIDB4REQ5NCwgMHhERDk0LCAweDIxM0IsIDB4REQ5NSwgMHhERDk2LCAweDRDRTYsIDB4REQ5NywgMHhERDk3LCAweDFGMDcsDQorICAgIDB4REQ5OCwgMHhERDk5LCAweDRDRTgsIDB4REQ5QSwgMHhERDlBLCAweDIyNzAsIDB4REQ5QiwgMHhERDlCLCAweDIyMzcsDQorICAgIDB4REQ5QywgMHhERDlELCAweDRDRUEsIDB4REQ5RSwgMHhERDlFLCAweDI0RDIsIDB4REQ5RiwgMHhERDlGLCAweDRDRUMsDQorICAgIDB4RERBMCwgMHhEREEwLCAweDIxQjMsIDB4RERBMSwgMHhEREZFLCAweDE0MkQsIDB4REU0MCwgMHhERTQwLCAweDIyNDUsDQorICAgIDB4REU0MSwgMHhERTQxLCAweDI0QTEsIDB4REU0MiwgMHhERTQzLCAweDRDRUQsIDB4REU0NCwgMHhERTQ0LCAweDIyQTgsDQorICAgIDB4REU0NSwgMHhERTQ3LCAweDRDRUYsIDB4REU0OCwgMHhERTQ4LCAweDIyN0MsIDB4REU0OSwgMHhERTQ5LCAweDFGQjAsDQorICAgIDB4REU0QSwgMHhERTRFLCAweDRDRjIsIDB4REU0RiwgMHhERTRGLCAweDI0QTIsIDB4REU1MCwgMHhERTU5LCAweDRDRjcsDQorICAgIDB4REU1QSwgMHhERTVBLCAweDFGNDYsIDB4REU1QiwgMHhERTVCLCAweDREMDEsIDB4REU1QywgMHhERTVDLCAweDIzODAsDQorICAgIDB4REU1RCwgMHhERTVELCAweDI0OTUsIDB4REU1RSwgMHhERTVFLCAweDREMDIsIDB4REU1RiwgMHhERTVGLCAweDI0OTAsDQorICAgIDB4REU2MCwgMHhERTZBLCAweDREMDMsIDB4REU2QiwgMHhERTZCLCAweDFFMzAsIDB4REU2QywgMHhERTZFLCAweDREMEUsDQorICAgIDB4REU2RiwgMHhERTZGLCAweDFFOUQsIDB4REU3MCwgMHhERTcwLCAweDFFNEIsIDB4REU3MSwgMHhERTcxLCAweDFFNEEsDQorICAgIDB4REU3MiwgMHhERTcyLCAweDIwQUEsIDB4REU3MywgMHhERTdFLCAweDREMTEsIDB4REU4MCwgMHhERTkxLCAweDREMUQsDQorICAgIDB4REU5MiwgMHhERTkyLCAweDI2N0IsIDB4REU5MywgMHhERTlFLCAweDREMkYsIDB4REU5RiwgMHhERTlGLCAweDIzRjIsDQorICAgIDB4REVBMCwgMHhERUEwLCAweDREM0IsIDB4REVBMSwgMHhERUZFLCAweDE0OEIsIDB4REY0MCwgMHhERjQwLCAweDIyN0UsDQorICAgIDB4REY0MSwgMHhERjQxLCAweDREM0MsIDB4REY0MiwgMHhERjQyLCAweDIwMTksIDB4REY0MywgMHhERjRDLCAweDREM0QsDQorICAgIDB4REY0RCwgMHhERjRELCAweDFGQkIsIDB4REY0RSwgMHhERjVCLCAweDRENDcsIDB4REY1QywgMHhERjVDLCAweDIyNTMsDQorICAgIDB4REY1RCwgMHhERjVELCAweDRENTUsIDB4REY1RSwgMHhERjVFLCAweDFGM0UsIDB4REY1RiwgMHhERjVGLCAweDFFQTYsDQorICAgIDB4REY2MCwgMHhERjYwLCAweDIxOEUsIDB4REY2MSwgMHhERjYzLCAweDRENTYsIDB4REY2NCwgMHhERjY0LCAweDIxRUMsDQorICAgIDB4REY2NSwgMHhERjY1LCAweDRENTksIDB4REY2NiwgMHhERjY2LCAweDFFQkUsIDB4REY2NywgMHhERjY3LCAweDRENUEsDQorICAgIDB4REY2OCwgMHhERjY4LCAweDIyNEEsIDB4REY2OSwgMHhERjZDLCAweDRENUIsIDB4REY2RCwgMHhERjZELCAweDIxMzMsDQorICAgIDB4REY2RSwgMHhERjczLCAweDRENUYsIDB4REY3NCwgMHhERjc0LCAweDFFODQsIDB4REY3NSwgMHhERjc2LCAweDRENjUsDQorICAgIDB4REY3NywgMHhERjc3LCAweDIwQ0YsIDB4REY3OCwgMHhERjc4LCAweDIxRTIsIDB4REY3OSwgMHhERjc5LCAweDRENjcsDQorICAgIDB4REY3QSwgMHhERjdBLCAweDIyMEYsIDB4REY3QiwgMHhERjdCLCAweDRENjgsIDB4REY3QywgMHhERjdDLCAweDIwMjksDQorICAgIDB4REY3RCwgMHhERjdELCAweDRENjksIDB4REY3RSwgMHhERjdFLCAweDIwNzMsIDB4REY4MCwgMHhERjgwLCAweDFGNTUsDQorICAgIDB4REY4MSwgMHhERjgyLCAweDRENkEsIDB4REY4MywgMHhERjgzLCAweDIzRjEsIDB4REY4NCwgMHhERjg0LCAweDRENkMsDQorICAgIDB4REY4NSwgMHhERjg1LCAweDFFNDYsIDB4REY4NiwgMHhERjg4LCAweDRENkQsIDB4REY4OSwgMHhERjg5LCAweDIwNjMsDQorICAgIDB4REY4QSwgMHhERjhBLCAweDIzRjMsIDB4REY4QiwgMHhERkEwLCAweDRENzAsIDB4REZBMSwgMHhERkZFLCAweDE0RTksDQorICAgIDB4RTA0MCwgMHhFMDRGLCAweDREODYsIDB4RTA1MCwgMHhFMDUwLCAweDIzMUUsIDB4RTA1MSwgMHhFMDVDLCAweDREOTYsDQorICAgIDB4RTA1RCwgMHhFMDVELCAweDIyMzMsIDB4RTA1RSwgMHhFMDY4LCAweDREQTIsIDB4RTA2OSwgMHhFMDY5LCAweDIzMjAsDQorICAgIDB4RTA2QSwgMHhFMDZCLCAweDREQUQsIDB4RTA2QywgMHhFMDZDLCAweDIxQzcsIDB4RTA2RCwgMHhFMDc0LCAweDREQUYsDQorICAgIDB4RTA3NSwgMHhFMDc1LCAweDIyQkMsIDB4RTA3NiwgMHhFMDc2LCAweDREQjcsIDB4RTA3NywgMHhFMDc3LCAweDIzMUMsDQorICAgIDB4RTA3OCwgMHhFMDc4LCAweDREQjgsIDB4RTA3OSwgMHhFMDc5LCAweDIyNTEsIDB4RTA3QSwgMHhFMDdFLCAweDREQjksDQorICAgIDB4RTA4MCwgMHhFMDg2LCAweDREQkUsIDB4RTA4NywgMHhFMDg3LCAweDFFQkIsIDB4RTA4OCwgMHhFMDhDLCAweDREQzUsDQorICAgIDB4RTA4RCwgMHhFMDhELCAweDIyODcsIDB4RTA4RSwgMHhFMDhFLCAweDREQ0EsIDB4RTA4RiwgMHhFMDhGLCAweDIwMkQsDQorICAgIDB4RTA5MCwgMHhFMDkwLCAweDFFQUIsIDB4RTA5MSwgMHhFMDkxLCAweDREQ0IsIDB4RTA5MiwgMHhFMDkyLCAweDIzMUQsDQorICAgIDB4RTA5MywgMHhFMDkzLCAweDREQ0MsIDB4RTA5NCwgMHhFMDk0LCAweDIzMUYsIDB4RTA5NSwgMHhFMDk2LCAweDREQ0QsDQorICAgIDB4RTA5NywgMHhFMDk3LCAweDIzMUIsIDB4RTA5OCwgMHhFMEEwLCAweDREQ0YsIDB4RTBBMSwgMHhFMEZFLCAweDE1NDcsDQorICAgIDB4RTE0MCwgMHhFMTQxLCAweDRERDgsIDB4RTE0MiwgMHhFMTQyLCAweDIzMjEsIDB4RTE0MywgMHhFMTYzLCAweDREREEsDQorICAgIDB4RTE2NCwgMHhFMTY0LCAweDIyNTUsIDB4RTE2NSwgMHhFMTY3LCAweDRERkIsIDB4RTE2OCwgMHhFMTY4LCAweDFFOEYsDQorICAgIDB4RTE2OSwgMHhFMTczLCAweDRERkUsIDB4RTE3NCwgMHhFMTc0LCAweDIyMEMsIDB4RTE3NSwgMHhFMTc1LCAweDFGQTQsDQorICAgIDB4RTE3NiwgMHhFMTdFLCAweDRFMDksIDB4RTE4MCwgMHhFMTgzLCAweDRFMTIsIDB4RTE4NCwgMHhFMTg0LCAweDIwOUIsDQorICAgIDB4RTE4NSwgMHhFMTg1LCAweDIxRDgsIDB4RTE4NiwgMHhFMTg2LCAweDRFMTYsIDB4RTE4NywgMHhFMTg3LCAweDI1RkEsDQorICAgIDB4RTE4OCwgMHhFMTg4LCAweDRFMTcsIDB4RTE4OSwgMHhFMTg5LCAweDI1RjksIDB4RTE4QSwgMHhFMThCLCAweDRFMTgsDQorICAgIDB4RTE4QywgMHhFMThDLCAweDIxMzQsIDB4RTE4RCwgMHhFMThELCAweDRFMUEsIDB4RTE4RSwgMHhFMTkwLCAweDI0RjMsDQorICAgIDB4RTE5MSwgMHhFMTkxLCAweDI0RjgsIDB4RTE5MiwgMHhFMTkyLCAweDRFMUIsIDB4RTE5MywgMHhFMTkzLCAweDI0RjcsDQorICAgIDB4RTE5NCwgMHhFMTk0LCAweDFFQzgsIDB4RTE5NSwgMHhFMTk1LCAweDI0RjYsIDB4RTE5NiwgMHhFMTk3LCAweDRFMUMsDQorICAgIDB4RTE5OCwgMHhFMTk4LCAweDIyODAsIDB4RTE5OSwgMHhFMTlELCAweDRFMUUsIDB4RTE5RSwgMHhFMTlFLCAweDFFQzUsDQorICAgIDB4RTE5RiwgMHhFMTlGLCAweDI0RkIsIDB4RTFBMCwgMHhFMUEwLCAweDRFMjMsIDB4RTFBMSwgMHhFMUZFLCAweDE1QTUsDQorICAgIDB4RTI0MCwgMHhFMjQwLCAweDRFMjQsIDB4RTI0MSwgMHhFMjQxLCAweDI0RkEsIDB4RTI0MiwgMHhFMjQyLCAweDRFMjUsDQorICAgIDB4RTI0MywgMHhFMjQzLCAweDFFRUQsIDB4RTI0NCwgMHhFMjRFLCAweDRFMjYsIDB4RTI0RiwgMHhFMjRGLCAweDI0RkQsDQorICAgIDB4RTI1MCwgMHhFMjUwLCAweDRFMzEsIDB4RTI1MSwgMHhFMjUxLCAweDI0RjksIDB4RTI1MiwgMHhFMjUyLCAweDRFMzIsDQorICAgIDB4RTI1MywgMHhFMjUzLCAweDI0RkUsIDB4RTI1NCwgMHhFMjU0LCAweDIwQ0QsIDB4RTI1NSwgMHhFMjU5LCAweDRFMzMsDQorICAgIDB4RTI1QSwgMHhFMjVBLCAweDI1MDgsIDB4RTI1QiwgMHhFMjVCLCAweDI1MDQsIDB4RTI1QywgMHhFMjVELCAweDRFMzgsDQorICAgIDB4RTI1RSwgMHhFMjVFLCAweDI1MDYsIDB4RTI1RiwgMHhFMjYxLCAweDRFM0EsIDB4RTI2MiwgMHhFMjYyLCAweDI0RkYsDQorICAgIDB4RTI2MywgMHhFMjYzLCAweDIwOTAsIDB4RTI2NCwgMHhFMjY2LCAweDRFM0QsIDB4RTI2NywgMHhFMjY3LCAweDFFREQsDQorICAgIDB4RTI2OCwgMHhFMjY4LCAweDFGMjUsIDB4RTI2OSwgMHhFMjY5LCAweDRFNDAsIDB4RTI2QSwgMHhFMjZBLCAweDI1MDMsDQorICAgIDB4RTI2QiwgMHhFMjZCLCAweDI1MDIsIDB4RTI2QywgMHhFMjZELCAweDRFNDEsIDB4RTI2RSwgMHhFMjZFLCAweDFFN0EsDQorICAgIDB4RTI2RiwgMHhFMjZGLCAweDIwQTYsIDB4RTI3MCwgMHhFMjc3LCAweDRFNDMsIDB4RTI3OCwgMHhFMjc4LCAweDFGRDUsDQorICAgIDB4RTI3OSwgMHhFMjdDLCAweDRFNEIsIDB4RTI3RCwgMHhFMjdELCAweDFGMTEsIDB4RTI3RSwgMHhFMjdFLCAweDRFNEYsDQorICAgIDB4RTI4MCwgMHhFMjgwLCAweDI1MDcsIDB4RTI4MSwgMHhFMjgxLCAweDI1MDAsIDB4RTI4MiwgMHhFMjgyLCAweDI1MDUsDQorICAgIDB4RTI4MywgMHhFMjg4LCAweDRFNTAsIDB4RTI4OSwgMHhFMjg5LCAweDI1MTksIDB4RTI4QSwgMHhFMjhBLCAweDRFNTYsDQorICAgIDB4RTI4QiwgMHhFMjhCLCAweDI1MTUsIDB4RTI4QywgMHhFMjhELCAweDRFNTcsIDB4RTI4RSwgMHhFMjhFLCAweDI1MEMsDQorICAgIDB4RTI4RiwgMHhFMjhGLCAweDIwMzEsIDB4RTI5MCwgMHhFMjkxLCAweDRFNTksIDB4RTI5MiwgMHhFMjkyLCAweDI1MEIsDQorICAgIDB4RTI5MywgMHhFMjkzLCAweDI1MEYsIDB4RTI5NCwgMHhFMjk0LCAweDI1MUEsIDB4RTI5NSwgMHhFMjk1LCAweDI1MDksDQorICAgIDB4RTI5NiwgMHhFMjk3LCAweDRFNUIsIDB4RTI5OCwgMHhFMjk4LCAweDI1MEUsIDB4RTI5OSwgMHhFMjk5LCAweDIyMzQsDQorICAgIDB4RTI5QSwgMHhFMjlBLCAweDI1MTMsIDB4RTI5QiwgMHhFMjlCLCAweDFGODAsIDB4RTI5QywgMHhFMjlGLCAweDRFNUQsDQorICAgIDB4RTJBMCwgMHhFMkEwLCAweDI1MDEsIDB4RTJBMSwgMHhFMkZFLCAweDE2MDMsIDB4RTM0MCwgMHhFMzQxLCAweDRFNjEsDQorICAgIDB4RTM0MiwgMHhFMzQyLCAweDI1MTcsIDB4RTM0MywgMHhFMzQzLCAweDI1MTYsIDB4RTM0NCwgMHhFMzQ2LCAweDRFNjMsDQorICAgIDB4RTM0NywgMHhFMzQ3LCAweDI1MTgsIDB4RTM0OCwgMHhFMzRBLCAweDRFNjYsIDB4RTM0QiwgMHhFMzRCLCAweDFFNTYsDQorICAgIDB4RTM0QywgMHhFMzRFLCAweDRFNjksIDB4RTM0RiwgMHhFMzRGLCAweDI1MEQsIDB4RTM1MCwgMHhFMzUwLCAweDRFNkMsDQorICAgIDB4RTM1MSwgMHhFMzUxLCAweDIwRDMsIDB4RTM1MiwgMHhFMzUzLCAweDRFNkQsIDB4RTM1NCwgMHhFMzU0LCAweDIwN0EsDQorICAgIDB4RTM1NSwgMHhFMzU1LCAweDIwQ0UsIDB4RTM1NiwgMHhFMzU3LCAweDRFNkYsIDB4RTM1OCwgMHhFMzU4LCAweDI1MTAsDQorICAgIDB4RTM1OSwgMHhFMzVCLCAweDRFNzEsIDB4RTM1QywgMHhFMzVDLCAweDFFNTUsIDB4RTM1RCwgMHhFMzVGLCAweDRFNzQsDQorICAgIDB4RTM2MCwgMHhFMzYwLCAweDI1MEEsIDB4RTM2MSwgMHhFMzY1LCAweDRFNzcsIDB4RTM2NiwgMHhFMzY3LCAweDI1MTEsDQorICAgIDB4RTM2OCwgMHhFMzcwLCAweDRFN0MsIDB4RTM3MSwgMHhFMzcxLCAweDFGQUEsIDB4RTM3MiwgMHhFMzcyLCAweDRFODUsDQorICAgIDB4RTM3MywgMHhFMzczLCAweDI1MUUsIDB4RTM3NCwgMHhFMzc0LCAweDFGMUYsIDB4RTM3NSwgMHhFMzc3LCAweDRFODYsDQorICAgIDB4RTM3OCwgMHhFMzc4LCAweDI1MkQsIDB4RTM3OSwgMHhFMzc5LCAweDIyMUQsIDB4RTM3QSwgMHhFMzdCLCAweDRFODksDQorICAgIDB4RTM3QywgMHhFMzdDLCAweDI1MzIsIDB4RTM3RCwgMHhFMzdELCAweDRFOEIsIDB4RTM3RSwgMHhFMzdFLCAweDIxN0IsDQorICAgIDB4RTM4MCwgMHhFMzg5LCAweDRFOEMsIDB4RTM4QSwgMHhFMzhBLCAweDIxQUYsIDB4RTM4QiwgMHhFMzhCLCAweDRFOTYsDQorICAgIDB4RTM4QywgMHhFMzhDLCAweDI1MkMsIDB4RTM4RCwgMHhFMzhFLCAweDRFOTcsIDB4RTM4RiwgMHhFMzhGLCAweDI1MjgsDQorICAgIDB4RTM5MCwgMHhFMzkwLCAweDRFOTksIDB4RTM5MSwgMHhFMzkxLCAweDIwOEMsIDB4RTM5MiwgMHhFMzkyLCAweDRFOUEsDQorICAgIDB4RTM5MywgMHhFMzkzLCAweDI1MkYsIDB4RTM5NCwgMHhFMzk0LCAweDRFOUIsIDB4RTM5NSwgMHhFMzk1LCAweDIxQkMsDQorICAgIDB4RTM5NiwgMHhFMzk4LCAweDRFOUMsIDB4RTM5OSwgMHhFMzk5LCAweDI1MUQsIDB4RTM5QSwgMHhFMzlCLCAweDRFOUYsDQorICAgIDB4RTM5QywgMHhFMzlDLCAweDI1MzUsIDB4RTM5RCwgMHhFMzlELCAweDRFQTEsIDB4RTM5RSwgMHhFMzlFLCAweDIyMEQsDQorICAgIDB4RTM5RiwgMHhFMzlGLCAweDI1MjYsIDB4RTNBMCwgMHhFM0EwLCAweDRFQTIsIDB4RTNBMSwgMHhFM0ZFLCAweDE2NjEsDQorICAgIDB4RTQ0MCwgMHhFNDQwLCAweDI1MzQsIDB4RTQ0MSwgMHhFNDQxLCAweDI1MkEsIDB4RTQ0MiwgMHhFNDQyLCAweDI1MUYsDQorICAgIDB4RTQ0MywgMHhFNDQzLCAweDI1MzEsIDB4RTQ0NCwgMHhFNDQ0LCAweDI1MUMsIDB4RTQ0NSwgMHhFNDQ3LCAweDRFQTMsDQorICAgIDB4RTQ0OCwgMHhFNDQ4LCAweDI1MjUsIDB4RTQ0OSwgMHhFNDRELCAweDRFQTYsIDB4RTQ0RSwgMHhFNDRFLCAweDIxQ0QsDQorICAgIDB4RTQ0RiwgMHhFNDRGLCAweDRFQUIsIDB4RTQ1MCwgMHhFNDUwLCAweDIxREEsIDB4RTQ1MSwgMHhFNDUxLCAweDRFQUMsDQorICAgIDB4RTQ1MiwgMHhFNDUyLCAweDIxNzIsIDB4RTQ1MywgMHhFNDUzLCAweDI1M0UsIDB4RTQ1NCwgMHhFNDU3LCAweDRFQUQsDQorICAgIDB4RTQ1OCwgMHhFNDU4LCAweDIwNEYsIDB4RTQ1OSwgMHhFNDU5LCAweDRFQjEsIDB4RTQ1QSwgMHhFNDVBLCAweDI1NDMsDQorICAgIDB4RTQ1QiwgMHhFNDVCLCAweDRFQjIsIDB4RTQ1QywgMHhFNDVDLCAweDIxRDcsIDB4RTQ1RCwgMHhFNDVELCAweDRFQjMsDQorICAgIDB4RTQ1RSwgMHhFNDVFLCAweDFFM0MsIDB4RTQ1RiwgMHhFNDYxLCAweDRFQjQsIDB4RTQ2MiwgMHhFNDYyLCAweDI1MjksDQorICAgIDB4RTQ2MywgMHhFNDY0LCAweDRFQjcsIDB4RTQ2NSwgMHhFNDY1LCAweDI1MjEsIDB4RTQ2NiwgMHhFNDY3LCAweDRFQjksDQorICAgIDB4RTQ2OCwgMHhFNDY4LCAweDFFRkYsIDB4RTQ2OSwgMHhFNDcyLCAweDRFQkIsIDB4RTQ3MywgMHhFNDczLCAweDI1M0YsDQorICAgIDB4RTQ3NCwgMHhFNDc0LCAweDRFQzUsIDB4RTQ3NSwgMHhFNDc1LCAweDI1NDQsIDB4RTQ3NiwgMHhFNDc4LCAweDRFQzYsDQorICAgIDB4RTQ3OSwgMHhFNDc5LCAweDI1MjMsIDB4RTQ3QSwgMHhFNDdBLCAweDFFOTAsIDB4RTQ3QiwgMHhFNDdCLCAweDI1M0EsDQorICAgIDB4RTQ3QywgMHhFNDdDLCAweDI1NDUsIDB4RTQ3RCwgMHhFNDdELCAweDRFQzksIDB4RTQ3RSwgMHhFNDdFLCAweDI1M0QsDQorICAgIDB4RTQ4MCwgMHhFNDgwLCAweDRFQ0EsIDB4RTQ4MSwgMHhFNDgxLCAweDIwQzEsIDB4RTQ4MiwgMHhFNDgzLCAweDRFQ0IsDQorICAgIDB4RTQ4NCwgMHhFNDg0LCAweDIxMDMsIDB4RTQ4NSwgMHhFNDg1LCAweDI1MjAsIDB4RTQ4NiwgMHhFNDg2LCAweDI1M0MsDQorICAgIDB4RTQ4NywgMHhFNDg3LCAweDI1M0IsIDB4RTQ4OCwgMHhFNDg4LCAweDI1MzgsIDB4RTQ4OSwgMHhFNDhDLCAweDRFQ0QsDQorICAgIDB4RTQ4RCwgMHhFNDhELCAweDI1NDAsIDB4RTQ4RSwgMHhFNDhFLCAweDRFRDEsIDB4RTQ4RiwgMHhFNDhGLCAweDFGQ0QsDQorICAgIDB4RTQ5MCwgMHhFNDkyLCAweDRFRDIsIDB4RTQ5MywgMHhFNDkzLCAweDFGMTgsIDB4RTQ5NCwgMHhFNDk3LCAweDRFRDUsDQorICAgIDB4RTQ5OCwgMHhFNDk4LCAweDI1NEIsIDB4RTQ5OSwgMHhFNDlDLCAweDRFRDksIDB4RTQ5RCwgMHhFNDlELCAweDI1NDcsDQorICAgIDB4RTQ5RSwgMHhFNDlGLCAweDI1NEYsIDB4RTRBMCwgMHhFNEEwLCAweDRFREQsIDB4RTRBMSwgMHhFNEZFLCAweDE2QkYsDQorICAgIDB4RTU0MCwgMHhFNTQ1LCAweDRFREUsIDB4RTU0NiwgMHhFNTQ2LCAweDIyQjAsIDB4RTU0NywgMHhFNTQ3LCAweDRFRTQsDQorICAgIDB4RTU0OCwgMHhFNTQ4LCAweDI1NDYsIDB4RTU0OSwgMHhFNTRBLCAweDRFRTUsIDB4RTU0QiwgMHhFNTRCLCAweDI1NEMsDQorICAgIDB4RTU0QywgMHhFNTRELCAweDRFRTcsIDB4RTU0RSwgMHhFNTRFLCAweDFFOUEsIDB4RTU0RiwgMHhFNTRGLCAweDI1NTIsDQorICAgIDB4RTU1MCwgMHhFNTUwLCAweDI1MzAsIDB4RTU1MSwgMHhFNTUxLCAweDI1NDksIDB4RTU1MiwgMHhFNTU0LCAweDRFRTksDQorICAgIDB4RTU1NSwgMHhFNTU1LCAweDI1NTEsIDB4RTU1NiwgMHhFNTU2LCAweDFFQ0EsIDB4RTU1NywgMHhFNTU3LCAweDRFRUMsDQorICAgIDB4RTU1OCwgMHhFNTU4LCAweDIwRDIsIDB4RTU1OSwgMHhFNTVCLCAweDRFRUQsIDB4RTU1QywgMHhFNTVDLCAweDFGQjgsDQorICAgIDB4RTU1RCwgMHhFNTVELCAweDRFRjAsIDB4RTU1RSwgMHhFNTVFLCAweDIwNzksIDB4RTU1RiwgMHhFNTYwLCAweDRFRjEsDQorICAgIDB4RTU2MSwgMHhFNTYxLCAweDIxQUIsIDB4RTU2MiwgMHhFNTYzLCAweDRFRjMsIDB4RTU2NCwgMHhFNTY0LCAweDI1NEQsDQorICAgIDB4RTU2NSwgMHhFNTY1LCAweDFFQTUsIDB4RTU2NiwgMHhFNTY3LCAweDRFRjUsIDB4RTU2OCwgMHhFNTY4LCAweDIwNEMsDQorICAgIDB4RTU2OSwgMHhFNTY5LCAweDIwODAsIDB4RTU2QSwgMHhFNTZCLCAweDRFRjcsIDB4RTU2QywgMHhFNTZDLCAweDI2NkQsDQorICAgIDB4RTU2RCwgMHhFNTZELCAweDRFRjksIDB4RTU2RSwgMHhFNTZFLCAweDI1MzcsIDB4RTU2RiwgMHhFNTc0LCAweDRFRkEsDQorICAgIDB4RTU3NSwgMHhFNTc1LCAweDI1NEEsIDB4RTU3NiwgMHhFNTc2LCAweDIxQjgsIDB4RTU3NywgMHhFNTc3LCAweDRGMDAsDQorICAgIDB4RTU3OCwgMHhFNTc4LCAweDI1NEUsIDB4RTU3OSwgMHhFNTdBLCAweDRGMDEsIDB4RTU3QiwgMHhFNTdCLCAweDI0RkMsDQorICAgIDB4RTU3QywgMHhFNTdDLCAweDI1NTQsIDB4RTU3RCwgMHhFNTdFLCAweDRGMDMsIDB4RTU4MCwgMHhFNTgwLCAweDRGMDUsDQorICAgIDB4RTU4MSwgMHhFNTgxLCAweDFGM0MsIDB4RTU4MiwgMHhFNTgyLCAweDRGMDYsIDB4RTU4MywgMHhFNTgzLCAweDFFRDUsDQorICAgIDB4RTU4NCwgMHhFNTg5LCAweDRGMDcsIDB4RTU4QSwgMHhFNThBLCAweDI1NTYsIDB4RTU4QiwgMHhFNThELCAweDRGMEQsDQorICAgIDB4RTU4RSwgMHhFNThFLCAweDIyNjgsIDB4RTU4RiwgMHhFNTkwLCAweDRGMTAsIDB4RTU5MSwgMHhFNTkxLCAweDFFRDYsDQorICAgIDB4RTU5MiwgMHhFNTk5LCAweDRGMTIsIDB4RTU5QSwgMHhFNTlBLCAweDI1NTcsIDB4RTU5QiwgMHhFNTlCLCAweDI1NTMsDQorICAgIDB4RTU5QywgMHhFNTlFLCAweDRGMUEsIDB4RTU5RiwgMHhFNTlGLCAweDI1NDgsIDB4RTVBMCwgMHhFNUEwLCAweDRGMUQsDQorICAgIDB4RTVBMSwgMHhFNUZFLCAweDE3MUQsIDB4RTY0MCwgMHhFNjQwLCAweDIwREMsIDB4RTY0MSwgMHhFNjQzLCAweDRGMUUsDQorICAgIDB4RTY0NCwgMHhFNjQ0LCAweDI1NTksIDB4RTY0NSwgMHhFNjQ4LCAweDRGMjEsIDB4RTY0OSwgMHhFNjQ5LCAweDFGOTcsDQorICAgIDB4RTY0QSwgMHhFNjRBLCAweDI1NTUsIDB4RTY0QiwgMHhFNjRELCAweDRGMjUsIDB4RTY0RSwgMHhFNjRFLCAweDIyN0QsDQorICAgIDB4RTY0RiwgMHhFNjUxLCAweDRGMjgsIDB4RTY1MiwgMHhFNjUyLCAweDI1N0UsIDB4RTY1MywgMHhFNjU1LCAweDRGMkIsDQorICAgIDB4RTY1NiwgMHhFNjU2LCAweDIwN0MsIDB4RTY1NywgMHhFNjU3LCAweDRGMkUsIDB4RTY1OCwgMHhFNjU4LCAweDI1NUEsDQorICAgIDB4RTY1OSwgMHhFNjVBLCAweDRGMkYsIDB4RTY1QiwgMHhFNjVCLCAweDI1NUUsIDB4RTY1QywgMHhFNjVELCAweDRGMzEsDQorICAgIDB4RTY1RSwgMHhFNjVFLCAweDFFMzQsIDB4RTY1RiwgMHhFNjY4LCAweDRGMzMsIDB4RTY2OSwgMHhFNjY5LCAweDIxNUUsDQorICAgIDB4RTY2QSwgMHhFNjZBLCAweDRGM0QsIDB4RTY2QiwgMHhFNjZCLCAweDI1NjAsIDB4RTY2QywgMHhFNjc0LCAweDRGM0UsDQorICAgIDB4RTY3NSwgMHhFNjc1LCAweDIxQTIsIDB4RTY3NiwgMHhFNjc2LCAweDIzNTQsIDB4RTY3NywgMHhFNjc4LCAweDRGNDcsDQorICAgIDB4RTY3OSwgMHhFNjc5LCAweDI1NjMsIDB4RTY3QSwgMHhFNjdBLCAweDI1MjcsIDB4RTY3QiwgMHhFNjdCLCAweDRGNDksDQorICAgIDB4RTY3QywgMHhFNjdDLCAweDI1MkUsIDB4RTY3RCwgMHhFNjdELCAweDI1NTgsIDB4RTY3RSwgMHhFNjdFLCAweDRGNEEsDQorICAgIDB4RTY4MCwgMHhFNjgwLCAweDFGMUIsIDB4RTY4MSwgMHhFNjgxLCAweDRGNEIsIDB4RTY4MiwgMHhFNjgyLCAweDIyODMsDQorICAgIDB4RTY4MywgMHhFNjgzLCAweDRGNEMsIDB4RTY4NCwgMHhFNjg0LCAweDI1NjQsIDB4RTY4NSwgMHhFNjg2LCAweDRGNEQsDQorICAgIDB4RTY4NywgMHhFNjg3LCAweDIwQTAsIDB4RTY4OCwgMHhFNjg4LCAweDRGNEYsIDB4RTY4OSwgMHhFNjg5LCAweDI1NjUsDQorICAgIDB4RTY4QSwgMHhFNjhCLCAweDRGNTAsIDB4RTY4QywgMHhFNjhDLCAweDI1NjEsIDB4RTY4RCwgMHhFNjkyLCAweDRGNTIsDQorICAgIDB4RTY5MywgMHhFNjkzLCAweDI1NjIsIDB4RTY5NCwgMHhFNjk2LCAweDRGNTgsIDB4RTY5NywgMHhFNjk3LCAweDI1NkMsDQorICAgIDB4RTY5OCwgMHhFNjlBLCAweDRGNUIsIDB4RTY5QiwgMHhFNjlCLCAweDI1NkQsIDB4RTY5QywgMHhFNjlDLCAweDIwMjAsDQorICAgIDB4RTY5RCwgMHhFNjlFLCAweDRGNUUsIDB4RTY5RiwgMHhFNjlGLCAweDI1NUYsIDB4RTZBMCwgMHhFNkEwLCAweDI1NkEsDQorICAgIDB4RTZBMSwgMHhFNkZFLCAweDE3N0IsIDB4RTc0MCwgMHhFNzQyLCAweDRGNjAsIDB4RTc0MywgMHhFNzQzLCAweDI1NkUsDQorICAgIDB4RTc0NCwgMHhFNzQ3LCAweDRGNjMsIDB4RTc0OCwgMHhFNzQ4LCAweDI1MzksIDB4RTc0OSwgMHhFNzQ5LCAweDI1NUMsDQorICAgIDB4RTc0QSwgMHhFNzRDLCAweDRGNjcsIDB4RTc0RCwgMHhFNzRFLCAweDI1NjgsIDB4RTc0RiwgMHhFNzRGLCAweDI1NkIsDQorICAgIDB4RTc1MCwgMHhFNzUwLCAweDFFNkYsIDB4RTc1MSwgMHhFNzUxLCAweDRGNkEsIDB4RTc1MiwgMHhFNzUyLCAweDFGQzQsDQorICAgIDB4RTc1MywgMHhFNzUzLCAweDI1NjcsIDB4RTc1NCwgMHhFNzU0LCAweDRGNkIsIDB4RTc1NSwgMHhFNzU1LCAweDI1NUIsDQorICAgIDB4RTc1NiwgMHhFNzU4LCAweDRGNkMsIDB4RTc1OSwgMHhFNzU5LCAweDI2MUQsIDB4RTc1QSwgMHhFNzY1LCAweDRGNkYsDQorICAgIDB4RTc2NiwgMHhFNzY2LCAweDI1MkIsIDB4RTc2NywgMHhFNzY3LCAweDRGN0IsIDB4RTc2OCwgMHhFNzY4LCAweDI1NzEsDQorICAgIDB4RTc2OSwgMHhFNzY5LCAweDRGN0MsIDB4RTc2QSwgMHhFNzZBLCAweDI1NzcsIDB4RTc2QiwgMHhFNzczLCAweDRGN0QsDQorICAgIDB4RTc3NCwgMHhFNzc0LCAweDI1MjIsIDB4RTc3NSwgMHhFNzdCLCAweDRGODYsIDB4RTc3QywgMHhFNzdDLCAweDI1MzMsDQorICAgIDB4RTc3RCwgMHhFNzdFLCAweDRGOEQsIDB4RTc4MCwgMHhFNzgxLCAweDRGOEYsIDB4RTc4MiwgMHhFNzgyLCAweDIwMkEsDQorICAgIDB4RTc4MywgMHhFNzgzLCAweDRGOTEsIDB4RTc4NCwgMHhFNzg0LCAweDI1MzYsIDB4RTc4NSwgMHhFNzg1LCAweDI1NzMsDQorICAgIDB4RTc4NiwgMHhFNzg2LCAweDI1NkYsIDB4RTc4NywgMHhFNzg5LCAweDRGOTIsIDB4RTc4QSwgMHhFNzhBLCAweDIyOTMsDQorICAgIDB4RTc4QiwgMHhFNzhCLCAweDI1NzgsIDB4RTc4QywgMHhFNzhFLCAweDRGOTUsIDB4RTc4RiwgMHhFNzhGLCAweDI1NzAsDQorICAgIDB4RTc5MCwgMHhFNzkxLCAweDRGOTgsIDB4RTc5MiwgMHhFNzkyLCAweDI1NzUsIDB4RTc5MywgMHhFNzk3LCAweDRGOUEsDQorICAgIDB4RTc5OCwgMHhFNzk5LCAweDI1NDEsIDB4RTc5QSwgMHhFNzlBLCAweDI1NUQsIDB4RTc5QiwgMHhFNzlGLCAweDRGOUYsDQorICAgIDB4RTdBMCwgMHhFN0EwLCAweDIwMUEsIDB4RTdBMSwgMHhFN0ZFLCAweDE3RDksIDB4RTg0MCwgMHhFODQyLCAweDRGQTQsDQorICAgIDB4RTg0MywgMHhFODQzLCAweDI1N0EsIDB4RTg0NCwgMHhFODQ0LCAweDIwMDYsIDB4RTg0NSwgMHhFODQ1LCAweDRGQTcsDQorICAgIDB4RTg0NiwgMHhFODQ2LCAweDIxNzcsIDB4RTg0NywgMHhFODQ4LCAweDRGQTgsIDB4RTg0OSwgMHhFODQ5LCAweDI1MUIsDQorICAgIDB4RTg0QSwgMHhFODRBLCAweDRGQUEsIDB4RTg0QiwgMHhFODRCLCAweDI1MjQsIDB4RTg0QywgMHhFODRFLCAweDRGQUIsDQorICAgIDB4RTg0RiwgMHhFODRGLCAweDI1N0IsIDB4RTg1MCwgMHhFODUzLCAweDRGQUUsIDB4RTg1NCwgMHhFODU0LCAweDIyQTMsDQorICAgIDB4RTg1NSwgMHhFODU5LCAweDRGQjIsIDB4RTg1QSwgMHhFODVBLCAweDI1NzksIDB4RTg1QiwgMHhFODVCLCAweDRGQjcsDQorICAgIDB4RTg1QywgMHhFODVDLCAweDI1NjYsIDB4RTg1RCwgMHhFODYxLCAweDRGQjgsIDB4RTg2MiwgMHhFODYyLCAweDFGOTMsDQorICAgIDB4RTg2MywgMHhFODYzLCAweDRGQkQsIDB4RTg2NCwgMHhFODY0LCAweDI1N0MsIDB4RTg2NSwgMHhFODZGLCAweDRGQkUsDQorICAgIDB4RTg3MCwgMHhFODcwLCAweDI1MTQsIDB4RTg3MSwgMHhFODcyLCAweDRGQzksIDB4RTg3MywgMHhFODczLCAweDI1N0QsDQorICAgIDB4RTg3NCwgMHhFODc0LCAweDRGQ0IsIDB4RTg3NSwgMHhFODc1LCAweDI1NzIsIDB4RTg3NiwgMHhFODdCLCAweDRGQ0MsDQorICAgIDB4RTg3QywgMHhFODdDLCAweDI1NzQsIDB4RTg3RCwgMHhFODdFLCAweDRGRDIsIDB4RTg4MCwgMHhFODgwLCAweDIyNEUsDQorICAgIDB4RTg4MSwgMHhFODgxLCAweDRGRDQsIDB4RTg4MiwgMHhFODgyLCAweDIxQzYsIDB4RTg4MywgMHhFODg2LCAweDRGRDUsDQorICAgIDB4RTg4NywgMHhFODg3LCAweDIwOUYsIDB4RTg4OCwgMHhFODg4LCAweDRGRDksIDB4RTg4OSwgMHhFODg5LCAweDI1NzYsDQorICAgIDB4RTg4QSwgMHhFODhCLCAweDRGREEsIDB4RTg4QywgMHhFODhDLCAweDIwNjQsIDB4RTg4RCwgMHhFODhELCAweDIyQkYsDQorICAgIDB4RTg4RSwgMHhFODhFLCAweDI2MUMsIDB4RTg4RiwgMHhFODhGLCAweDIyNUUsIDB4RTg5MCwgMHhFOEEwLCAweDRGREMsDQorICAgIDB4RThBMSwgMHhFOEZFLCAweDE4MzcsIDB4RTk0MCwgMHhFOTRCLCAweDRGRUQsIDB4RTk0QywgMHhFOTRDLCAweDFFNzUsDQorICAgIDB4RTk0RCwgMHhFOTUzLCAweDRGRjksIDB4RTk1NCwgMHhFOTU0LCAweDIwN0QsIDB4RTk1NSwgMHhFOTU1LCAweDUwMDAsDQorICAgIDB4RTk1NiwgMHhFOTU2LCAweDIzQkYsIDB4RTk1NywgMHhFOTU3LCAweDIxMTMsIDB4RTk1OCwgMHhFOTU5LCAweDUwMDEsDQorICAgIDB4RTk1QSwgMHhFOTVBLCAweDIzQzAsIDB4RTk1QiwgMHhFOTVDLCAweDUwMDMsIDB4RTk1RCwgMHhFOTVELCAweDFFNDUsDQorICAgIDB4RTk1RSwgMHhFOTVFLCAweDUwMDUsIDB4RTk1RiwgMHhFOTVGLCAweDFGRDgsIDB4RTk2MCwgMHhFOTYwLCAweDIzQzQsDQorICAgIDB4RTk2MSwgMHhFOTYxLCAweDUwMDYsIDB4RTk2MiwgMHhFOTYyLCAweDIzQzIsIDB4RTk2MywgMHhFOTYzLCAweDIxMDQsDQorICAgIDB4RTk2NCwgMHhFOTY0LCAweDUwMDcsIDB4RTk2NSwgMHhFOTY1LCAweDIxQkQsIDB4RTk2NiwgMHhFOTY2LCAweDUwMDgsDQorICAgIDB4RTk2NywgMHhFOTY3LCAweDFGODcsIDB4RTk2OCwgMHhFOTY4LCAweDIzQzMsIDB4RTk2OSwgMHhFOTZCLCAweDUwMDksDQorICAgIDB4RTk2QywgMHhFOTZDLCAweDIyNjksIDB4RTk2RCwgMHhFOTc0LCAweDUwMEMsIDB4RTk3NSwgMHhFOTc1LCAweDFGNDMsDQorICAgIDB4RTk3NiwgMHhFOTc2LCAweDUwMTQsIDB4RTk3NywgMHhFOTc3LCAweDFGMUUsIDB4RTk3OCwgMHhFOTc4LCAweDI2NzksDQorICAgIDB4RTk3OSwgMHhFOTc5LCAweDFFRUIsIDB4RTk3QSwgMHhFOTdCLCAweDUwMTUsIDB4RTk3QywgMHhFOTdDLCAweDFGMzUsDQorICAgIDB4RTk3RCwgMHhFOTdELCAweDIwOEEsIDB4RTk3RSwgMHhFOTdFLCAweDUwMTcsIDB4RTk4MCwgMHhFOTgwLCAweDIzQzcsDQorICAgIDB4RTk4MSwgMHhFOTgxLCAweDIzQzksIDB4RTk4MiwgMHhFOTgyLCAweDIzQzYsIDB4RTk4MywgMHhFOTg2LCAweDUwMTgsDQorICAgIDB4RTk4NywgMHhFOTg3LCAweDIyNEYsIDB4RTk4OCwgMHhFOThBLCAweDUwMUMsIDB4RTk4QiwgMHhFOThCLCAweDIzQ0IsDQorICAgIDB4RTk4QywgMHhFOThELCAweDUwMUYsIDB4RTk4RSwgMHhFOThFLCAweDIxRjMsIDB4RTk4RiwgMHhFOThGLCAweDUwMjEsDQorICAgIDB4RTk5MCwgMHhFOTkwLCAweDIxRjcsIDB4RTk5MSwgMHhFOTkxLCAweDIzQ0YsIDB4RTk5MiwgMHhFOTkyLCAweDIzQ0UsDQorICAgIDB4RTk5MywgMHhFOTkzLCAweDIzQ0EsIDB4RTk5NCwgMHhFOTk0LCAweDIzQ0QsIDB4RTk5NSwgMHhFOTk3LCAweDUwMjIsDQorICAgIDB4RTk5OCwgMHhFOTk4LCAweDIzRDAsIDB4RTk5OSwgMHhFOTlBLCAweDUwMjUsIDB4RTk5QiwgMHhFOTlCLCAweDI2NkMsDQorICAgIDB4RTk5QywgMHhFOTlDLCAweDUwMjcsIDB4RTk5RCwgMHhFOTlELCAweDIzQzEsIDB4RTk5RSwgMHhFOTlFLCAweDUwMjgsDQorICAgIDB4RTk5RiwgMHhFOTlGLCAweDFGRUUsIDB4RTlBMCwgMHhFOUEwLCAweDIzRDEsIDB4RTlBMSwgMHhFOUZFLCAweDE4OTUsDQorICAgIDB4RUE0MCwgMHhFQTQwLCAweDFGRjgsIDB4RUE0MSwgMHhFQTQzLCAweDUwMjksIDB4RUE0NCwgMHhFQTQ0LCAweDIzRDMsDQorICAgIDB4RUE0NSwgMHhFQTQ3LCAweDUwMkMsIDB4RUE0OCwgMHhFQTQ4LCAweDIzRDIsIDB4RUE0OSwgMHhFQTQ5LCAweDIzRDQsDQorICAgIDB4RUE0QSwgMHhFQTRBLCAweDFFOTgsIDB4RUE0QiwgMHhFQTRGLCAweDUwMkYsIDB4RUE1MCwgMHhFQTUwLCAweDFGMkMsDQorICAgIDB4RUE1MSwgMHhFQTUxLCAweDUwMzQsIDB4RUE1MiwgMHhFQTUyLCAweDIzRDUsIDB4RUE1MywgMHhFQTU0LCAweDUwMzUsDQorICAgIDB4RUE1NSwgMHhFQTU1LCAweDFFNzEsIDB4RUE1NiwgMHhFQTU2LCAweDI2OTEsIDB4RUE1NywgMHhFQTU4LCAweDUwMzcsDQorICAgIDB4RUE1OSwgMHhFQTU5LCAweDIzQzUsIDB4RUE1QSwgMHhFQTdFLCAweDUwMzksIDB4RUE4MCwgMHhFQTgwLCAweDIzMUEsDQorICAgIDB4RUE4MSwgMHhFQTgzLCAweDUwNUUsIDB4RUE4NCwgMHhFQTg0LCAweDIxMTQsIDB4RUE4NSwgMHhFQTg2LCAweDUwNjEsDQorICAgIDB4RUE4NywgMHhFQTg3LCAweDIyODQsIDB4RUE4OCwgMHhFQThELCAweDUwNjMsIDB4RUE4RSwgMHhFQThFLCAweDIyMUMsDQorICAgIDB4RUE4RiwgMHhFQThGLCAweDUwNjksIDB4RUE5MCwgMHhFQTkwLCAweDFFN0UsIDB4RUE5MSwgMHhFQTkxLCAweDIwNEQsDQorICAgIDB4RUE5MiwgMHhFQTk1LCAweDUwNkEsIDB4RUE5NiwgMHhFQTk2LCAweDIyMDEsIDB4RUE5NywgMHhFQTlGLCAweDUwNkUsDQorICAgIDB4RUFBMCwgMHhFQUEwLCAweDFFRDksIDB4RUFBMSwgMHhFQUZFLCAweDE4RjMsIDB4RUI0MCwgMHhFQjQwLCAweDUwNzcsDQorICAgIDB4RUI0MSwgMHhFQjQxLCAweDFGQjIsIDB4RUI0MiwgMHhFQjQ0LCAweDUwNzgsIDB4RUI0NSwgMHhFQjQ1LCAweDIyNTIsDQorICAgIDB4RUI0NiwgMHhFQjQ3LCAweDUwN0IsIDB4RUI0OCwgMHhFQjQ4LCAweDFGNzksIDB4RUI0OSwgMHhFQjUyLCAweDUwN0QsDQorICAgIDB4RUI1MywgMHhFQjUzLCAweDIxNTcsIDB4RUI1NCwgMHhFQjU0LCAweDUwODcsIDB4RUI1NSwgMHhFQjU1LCAweDIxQkYsDQorICAgIDB4RUI1NiwgMHhFQjVBLCAweDUwODgsIDB4RUI1QiwgMHhFQjVCLCAweDIyMUYsIDB4RUI1QywgMHhFQjVDLCAweDUwOEQsDQorICAgIDB4RUI1RCwgMHhFQjVELCAweDIwM0QsIDB4RUI1RSwgMHhFQjVGLCAweDUwOEUsIDB4RUI2MCwgMHhFQjYwLCAweDIwMTUsDQorICAgIDB4RUI2MSwgMHhFQjYxLCAweDUwOTAsIDB4RUI2MiwgMHhFQjYyLCAweDI2QTUsIDB4RUI2MywgMHhFQjZDLCAweDUwOTEsDQorICAgIDB4RUI2RCwgMHhFQjZELCAweDIxNTYsIDB4RUI2RSwgMHhFQjZGLCAweDUwOUIsIDB4RUI3MCwgMHhFQjcwLCAweDIxNDQsDQorICAgIDB4RUI3MSwgMHhFQjcxLCAweDUwOUQsIDB4RUI3MiwgMHhFQjcyLCAweDFFOTEsIDB4RUI3MywgMHhFQjczLCAweDIyNTcsDQorICAgIDB4RUI3NCwgMHhFQjc3LCAweDUwOUUsIDB4RUI3OCwgMHhFQjc4LCAweDIwMEEsIDB4RUI3OSwgMHhFQjc5LCAweDIwOTIsDQorICAgIDB4RUI3QSwgMHhFQjdFLCAweDUwQTIsIDB4RUI4MCwgMHhFQjg0LCAweDUwQTcsIDB4RUI4NSwgMHhFQjg1LCAweDIyNTAsDQorICAgIDB4RUI4NiwgMHhFQjg5LCAweDUwQUMsIDB4RUI4QSwgMHhFQjhBLCAweDFFQzMsIDB4RUI4QiwgMHhFQkEwLCAweDUwQjAsDQorICAgIDB4RUJBMSwgMHhFQkZFLCAweDE5NTEsIDB4RUM0MCwgMHhFQzQ1LCAweDUwQzYsIDB4RUM0NiwgMHhFQzQ2LCAweDIxQTgsDQorICAgIDB4RUM0NywgMHhFQzU1LCAweDUwQ0MsIDB4RUM1NiwgMHhFQzU2LCAweDI2MEQsIDB4RUM1NywgMHhFQzU5LCAweDUwREIsDQorICAgIDB4RUM1QSwgMHhFQzVBLCAweDI2MEMsIDB4RUM1QiwgMHhFQzVCLCAweDUwREUsIDB4RUM1QywgMHhFQzVDLCAweDI2MEUsDQorICAgIDB4RUM1RCwgMHhFQzVGLCAweDUwREYsIDB4RUM2MCwgMHhFQzYwLCAweDIwMzIsIDB4RUM2MSwgMHhFQzZELCAweDUwRTIsDQorICAgIDB4RUM2RSwgMHhFQzZFLCAweDI2MEIsIDB4RUM2RiwgMHhFQzc1LCAweDUwRUYsIDB4RUM3NiwgMHhFQzc2LCAweDIyQzMsDQorICAgIDB4RUM3NywgMHhFQzdFLCAweDUwRjYsIDB4RUM4MCwgMHhFQzk1LCAweDUwRkUsIDB4RUM5NiwgMHhFQzk2LCAweDFGMjMsDQorICAgIDB4RUM5NywgMHhFQ0EwLCAweDUxMTQsIDB4RUNBMSwgMHhFQ0ZFLCAweDE5QUYsIDB4RUQ0MCwgMHhFRDQ1LCAweDUxMUUsDQorICAgIDB4RUQ0NiwgMHhFRDQ2LCAweDI2OTUsIDB4RUQ0NywgMHhFRDU3LCAweDUxMjQsIDB4RUQ1OCwgMHhFRDU4LCAweDI2NUUsDQorICAgIDB4RUQ1OSwgMHhFRDVELCAweDUxMzUsIDB4RUQ1RSwgMHhFRDVFLCAweDI2NUQsIDB4RUQ1RiwgMHhFRDYwLCAweDUxM0EsDQorICAgIDB4RUQ2MSwgMHhFRDYxLCAweDI2OTIsIDB4RUQ2MiwgMHhFRDYzLCAweDUxM0MsIDB4RUQ2NCwgMHhFRDY0LCAweDI2NUYsDQorICAgIDB4RUQ2NSwgMHhFRDY1LCAweDUxM0UsIDB4RUQ2NiwgMHhFRDY2LCAweDIxOEQsIDB4RUQ2NywgMHhFRDY3LCAweDIwRkQsDQorICAgIDB4RUQ2OCwgMHhFRDZELCAweDUxM0YsIDB4RUQ2RSwgMHhFRDZFLCAweDFGNDAsIDB4RUQ2RiwgMHhFRDczLCAweDUxNDUsDQorICAgIDB4RUQ3NCwgMHhFRDc0LCAweDI0NjUsIDB4RUQ3NSwgMHhFRDc2LCAweDUxNEEsIDB4RUQ3NywgMHhFRDc3LCAweDI0NjcsDQorICAgIDB4RUQ3OCwgMHhFRDc4LCAweDUxNEMsIDB4RUQ3OSwgMHhFRDc5LCAweDI0NjYsIDB4RUQ3QSwgMHhFRDdFLCAweDUxNEQsDQorICAgIDB4RUQ4MCwgMHhFRDkwLCAweDUxNTIsIDB4RUQ5MSwgMHhFRDkxLCAweDIxQzksIDB4RUQ5MiwgMHhFRDkyLCAweDUxNjMsDQorICAgIDB4RUQ5MywgMHhFRDkzLCAweDIyMDksIDB4RUQ5NCwgMHhFRDk0LCAweDFFQzksIDB4RUQ5NSwgMHhFRDk1LCAweDIwRTksDQorICAgIDB4RUQ5NiwgMHhFRDk2LCAweDUxNjQsIDB4RUQ5NywgMHhFRDk3LCAweDIxQ0EsIDB4RUQ5OCwgMHhFRDk4LCAweDIxNDYsDQorICAgIDB4RUQ5OSwgMHhFRDk5LCAweDI1QzUsIDB4RUQ5QSwgMHhFRDlBLCAweDIxREMsIDB4RUQ5QiwgMHhFRDlCLCAweDUxNjUsDQorICAgIDB4RUQ5QywgMHhFRDlDLCAweDI0NUUsIDB4RUQ5RCwgMHhFRDlELCAweDUxNjYsIDB4RUQ5RSwgMHhFRDlFLCAweDIxNEYsDQorICAgIDB4RUQ5RiwgMHhFRDlGLCAweDUxNjcsIDB4RURBMCwgMHhFREEwLCAweDI1QzYsIDB4RURBMSwgMHhFREZFLCAweDFBMEQsDQorICAgIDB4RUU0MCwgMHhFRTQwLCAweDI1QzcsIDB4RUU0MSwgMHhFRTQxLCAweDIyNDEsIDB4RUU0MiwgMHhFRTQyLCAweDIxOEEsDQorICAgIDB4RUU0MywgMHhFRTQzLCAweDFFMkYsIDB4RUU0NCwgMHhFRTQ0LCAweDFFREMsIDB4RUU0NSwgMHhFRTQ3LCAweDUxNjgsDQorICAgIDB4RUU0OCwgMHhFRTQ4LCAweDIwQkYsIDB4RUU0OSwgMHhFRTQ5LCAweDIwMzQsIDB4RUU0QSwgMHhFRTRDLCAweDUxNkIsDQorICAgIDB4RUU0RCwgMHhFRTRELCAweDI1QzksIDB4RUU0RSwgMHhFRTUxLCAweDUxNkUsIDB4RUU1MiwgMHhFRTUyLCAweDI1QzgsDQorICAgIDB4RUU1MywgMHhFRTU0LCAweDUxNzIsIDB4RUU1NSwgMHhFRTU1LCAweDIyMEUsIDB4RUU1NiwgMHhFRTU2LCAweDUxNzQsDQorICAgIDB4RUU1NywgMHhFRTU3LCAweDI1Q0IsIDB4RUU1OCwgMHhFRTVELCAweDUxNzUsIDB4RUU1RSwgMHhFRTVFLCAweDIxN0QsDQorICAgIDB4RUU1RiwgMHhFRTYwLCAweDUxN0IsIDB4RUU2MSwgMHhFRTYxLCAweDFGN0UsIDB4RUU2MiwgMHhFRTY3LCAweDUxN0QsDQorICAgIDB4RUU2OCwgMHhFRTY4LCAweDI1Q0MsIDB4RUU2OSwgMHhFRTY5LCAweDFGQzMsIDB4RUU2QSwgMHhFRTZCLCAweDUxODMsDQorICAgIDB4RUU2QywgMHhFRTZDLCAweDIwQjksIDB4RUU2RCwgMHhFRTZELCAweDUxODUsIDB4RUU2RSwgMHhFRTZFLCAweDIxODEsDQorICAgIDB4RUU2RiwgMHhFRTc2LCAweDUxODYsIDB4RUU3NywgMHhFRTc3LCAweDFGREEsIDB4RUU3OCwgMHhFRTdDLCAweDUxOEUsDQorICAgIDB4RUU3RCwgMHhFRTdELCAweDIxNzMsIDB4RUU3RSwgMHhFRTdFLCAweDFFRTEsIDB4RUU4MCwgMHhFRTgwLCAweDI1Q0QsDQorICAgIDB4RUU4MSwgMHhFRTg0LCAweDUxOTMsIDB4RUU4NSwgMHhFRTg1LCAweDI1Q0UsIDB4RUU4NiwgMHhFRTg2LCAweDIxRjYsDQorICAgIDB4RUU4NywgMHhFRTg5LCAweDUxOTcsIDB4RUU4QSwgMHhFRThBLCAweDIyNEIsIDB4RUU4QiwgMHhFRThCLCAweDI1RDEsDQorICAgIDB4RUU4QywgMHhFRThDLCAweDUxOUEsIDB4RUU4RCwgMHhFRThELCAweDFFQzAsIDB4RUU4RSwgMHhFRThGLCAweDUxOUIsDQorICAgIDB4RUU5MCwgMHhFRTkwLCAweDIwMDgsIDB4RUU5MSwgMHhFRTkzLCAweDUxOUQsIDB4RUU5NCwgMHhFRTk0LCAweDI1RDAsDQorICAgIDB4RUU5NSwgMHhFRTk2LCAweDUxQTAsIDB4RUU5NywgMHhFRTk3LCAweDI1RDIsIDB4RUU5OCwgMHhFRTk4LCAweDUxQTIsDQorICAgIDB4RUU5OSwgMHhFRTk5LCAweDFGMkEsIDB4RUU5QSwgMHhFRTlDLCAweDUxQTMsIDB4RUU5RCwgMHhFRTlELCAweDFFNzIsDQorICAgIDB4RUU5RSwgMHhFRTlFLCAweDI1RDMsIDB4RUU5RiwgMHhFRUEwLCAweDUxQTYsIDB4RUVBMSwgMHhFRUZFLCAweDFBNkIsDQorICAgIDB4RUY0MCwgMHhFRjQwLCAweDIxQkUsIDB4RUY0MSwgMHhFRjQxLCAweDI1RDQsIDB4RUY0MiwgMHhFRjQyLCAweDIwNDQsDQorICAgIDB4RUY0MywgMHhFRjQzLCAweDUxQTgsIDB4RUY0NCwgMHhFRjQ0LCAweDI1Q0YsIDB4RUY0NSwgMHhFRjQ1LCAweDIwRjMsDQorICAgIDB4RUY0NiwgMHhFRjRCLCAweDUxQTksIDB4RUY0QywgMHhFRjRDLCAweDFGMDAsIDB4RUY0RCwgMHhFRjUxLCAweDUxQUYsDQorICAgIDB4RUY1MiwgMHhFRjUzLCAweDI0Q0MsIDB4RUY1NCwgMHhFRjU0LCAweDUxQjQsIDB4RUY1NSwgMHhFRjU1LCAweDI2OTgsDQorICAgIDB4RUY1NiwgMHhFRjU2LCAweDUxQjUsIDB4RUY1NywgMHhFRjU3LCAweDI2NzgsIDB4RUY1OCwgMHhFRjU5LCAweDUxQjYsDQorICAgIDB4RUY1QSwgMHhFRjVBLCAweDI0Q0UsIDB4RUY1QiwgMHhFRjVGLCAweDUxQjgsIDB4RUY2MCwgMHhFRjYwLCAweDI0Q0YsDQorICAgIDB4RUY2MSwgMHhFRjY3LCAweDUxQkQsIDB4RUY2OCwgMHhFRjY4LCAweDIwQjgsIDB4RUY2OSwgMHhFRjY5LCAweDUxQzQsDQorICAgIDB4RUY2QSwgMHhFRjZBLCAweDI0RDAsIDB4RUY2QiwgMHhFRjZCLCAweDUxQzUsIDB4RUY2QywgMHhFRjZDLCAweDI0RDEsDQorICAgIDB4RUY2RCwgMHhFRjc2LCAweDUxQzYsIDB4RUY3NywgMHhFRjc3LCAweDFFRjQsIDB4RUY3OCwgMHhFRjc5LCAweDUxRDAsDQorICAgIDB4RUY3QSwgMHhFRjdBLCAweDIzOUIsIDB4RUY3QiwgMHhFRjdCLCAweDUxRDIsIDB4RUY3QywgMHhFRjdDLCAweDI2N0UsDQorICAgIDB4RUY3RCwgMHhFRjdFLCAweDUxRDMsIDB4RUY4MCwgMHhFRjgxLCAweDUxRDUsIDB4RUY4MiwgMHhFRjgyLCAweDIzOUQsDQorICAgIDB4RUY4MywgMHhFRjg0LCAweDIzOUYsIDB4RUY4NSwgMHhFRjg1LCAweDUxRDcsIDB4RUY4NiwgMHhFRjg2LCAweDIzQTEsDQorICAgIDB4RUY4NywgMHhFRjg3LCAweDUxRDgsIDB4RUY4OCwgMHhFRjg4LCAweDFFRjEsIDB4RUY4OSwgMHhFRjhBLCAweDUxRDksDQorICAgIDB4RUY4QiwgMHhFRjhCLCAweDIyMUUsIDB4RUY4QywgMHhFRjhDLCAweDUxREIsIDB4RUY4RCwgMHhFRjhELCAweDIzQTIsDQorICAgIDB4RUY4RSwgMHhFRjk0LCAweDUxREMsIDB4RUY5NSwgMHhFRjk1LCAweDIxNEIsIDB4RUY5NiwgMHhFRjk2LCAweDFFMzYsDQorICAgIDB4RUY5NywgMHhFRjk3LCAweDIxMzUsIDB4RUY5OCwgMHhFRjlCLCAweDUxRTMsIDB4RUY5QywgMHhFRjlDLCAweDFGQUQsDQorICAgIDB4RUY5RCwgMHhFRjlELCAweDUxRTcsIDB4RUY5RSwgMHhFRjlFLCAweDFFNTMsIDB4RUY5RiwgMHhFRkEwLCAweDUxRTgsDQorICAgIDB4RUZBMSwgMHhFRkZFLCAweDFBQzksIDB4RjA0MCwgMHhGMDQwLCAweDUxRUEsIDB4RjA0MSwgMHhGMDQxLCAweDIzQTMsDQorICAgIDB4RjA0MiwgMHhGMDQyLCAweDIyMDMsIDB4RjA0MywgMHhGMDQzLCAweDUxRUIsIDB4RjA0NCwgMHhGMDQ0LCAweDFFRTcsDQorICAgIDB4RjA0NSwgMHhGMDQ2LCAweDUxRUMsIDB4RjA0NywgMHhGMDQ3LCAweDIzQTQsIDB4RjA0OCwgMHhGMDQ4LCAweDIwOTcsDQorICAgIDB4RjA0OSwgMHhGMDQ5LCAweDFFRTQsIDB4RjA0QSwgMHhGMDRELCAweDUxRUUsIDB4RjA0RSwgMHhGMDRFLCAweDIyMzgsDQorICAgIDB4RjA0RiwgMHhGMDUwLCAweDUxRjIsIDB4RjA1MSwgMHhGMDUxLCAweDIzQTUsIDB4RjA1MiwgMHhGMDUzLCAweDUxRjQsDQorICAgIDB4RjA1NCwgMHhGMDU0LCAweDFGOUEsIDB4RjA1NSwgMHhGMDU2LCAweDUxRjYsIDB4RjA1NywgMHhGMDU3LCAweDIxQzMsDQorICAgIDB4RjA1OCwgMHhGMDVELCAweDUxRjgsIDB4RjA1RSwgMHhGMDVFLCAweDFGMkUsIDB4RjA1RiwgMHhGMDY3LCAweDUxRkUsDQorICAgIDB4RjA2OCwgMHhGMDY4LCAweDIzOUMsIDB4RjA2OSwgMHhGMDZCLCAweDUyMDcsIDB4RjA2QywgMHhGMDZDLCAweDIzQTYsDQorICAgIDB4RjA2RCwgMHhGMDcwLCAweDUyMEEsIDB4RjA3MSwgMHhGMDcxLCAweDIzOUUsIDB4RjA3MiwgMHhGMDcyLCAweDUyMEUsDQorICAgIDB4RjA3MywgMHhGMDczLCAweDIwMzUsIDB4RjA3NCwgMHhGMDc0LCAweDIzQTcsIDB4RjA3NSwgMHhGMDc3LCAweDUyMEYsDQorICAgIDB4RjA3OCwgMHhGMDc4LCAweDIzQTgsIDB4RjA3OSwgMHhGMDc5LCAweDUyMTIsIDB4RjA3QSwgMHhGMDdBLCAweDIwNzUsDQorICAgIDB4RjA3QiwgMHhGMDdDLCAweDUyMTMsIDB4RjA3RCwgMHhGMDdFLCAweDIzQTksIDB4RjA4MCwgMHhGMDgwLCAweDIzQUIsDQorICAgIDB4RjA4MSwgMHhGMDgxLCAweDFGRUIsIDB4RjA4MiwgMHhGMDgyLCAweDIzQUMsIDB4RjA4MywgMHhGMDg2LCAweDUyMTUsDQorICAgIDB4RjA4NywgMHhGMDg3LCAweDFGNkEsIDB4RjA4OCwgMHhGMDg4LCAweDIwRjksIDB4RjA4OSwgMHhGMDhBLCAweDUyMTksDQorICAgIDB4RjA4QiwgMHhGMDhCLCAweDI2NjYsIDB4RjA4QywgMHhGMDhGLCAweDUyMUIsIDB4RjA5MCwgMHhGMDkwLCAweDI2NjcsDQorICAgIDB4RjA5MSwgMHhGMDkxLCAweDUyMUYsIDB4RjA5MiwgMHhGMDkyLCAweDFFNkMsIDB4RjA5MywgMHhGMDk1LCAweDUyMjAsDQorICAgIDB4RjA5NiwgMHhGMDk2LCAweDIzQUQsIDB4RjA5NywgMHhGMEEwLCAweDUyMjMsIDB4RjBBMSwgMHhGMEZFLCAweDFCMjcsDQorICAgIDB4RjE0MCwgMHhGMTUxLCAweDUyMkQsIDB4RjE1MiwgMHhGMTUyLCAweDIwNkQsIDB4RjE1MywgMHhGMTUzLCAweDIyNDIsDQorICAgIDB4RjE1NCwgMHhGMTU0LCAweDFGMDIsIDB4RjE1NSwgMHhGMTU2LCAweDUyM0YsIDB4RjE1NywgMHhGMTU3LCAweDIxODMsDQorICAgIDB4RjE1OCwgMHhGMTU4LCAweDUyNDEsIDB4RjE1OSwgMHhGMTU5LCAweDFFODUsIDB4RjE1QSwgMHhGMTVBLCAweDIxRTksDQorICAgIDB4RjE1QiwgMHhGMTY2LCAweDUyNDIsIDB4RjE2NywgMHhGMTY3LCAweDFFNTcsIDB4RjE2OCwgMHhGMTc1LCAweDUyNEUsDQorICAgIDB4RjE3NiwgMHhGMTc2LCAweDIyQTUsIDB4RjE3NywgMHhGMTc3LCAweDI0MDcsIDB4RjE3OCwgMHhGMTc4LCAweDFGQ0EsDQorICAgIDB4RjE3OSwgMHhGMTc5LCAweDUyNUMsIDB4RjE3QSwgMHhGMTdBLCAweDI0MDIsIDB4RjE3QiwgMHhGMTdCLCAweDFGODIsDQorICAgIDB4RjE3QywgMHhGMTdELCAweDUyNUQsIDB4RjE3RSwgMHhGMTdFLCAweDI0MDgsIDB4RjE4MCwgMHhGMTgwLCAweDI0MDQsDQorICAgIDB4RjE4MSwgMHhGMTgxLCAweDUyNUYsIDB4RjE4MiwgMHhGMTgyLCAweDIxMzEsIDB4RjE4MywgMHhGMTgzLCAweDUyNjAsDQorICAgIDB4RjE4NCwgMHhGMTg0LCAweDIxODQsIDB4RjE4NSwgMHhGMTg1LCAweDUyNjEsIDB4RjE4NiwgMHhGMTg2LCAweDI0MDMsDQorICAgIDB4RjE4NywgMHhGMTg3LCAweDUyNjIsIDB4RjE4OCwgMHhGMTg4LCAweDIwNkUsIDB4RjE4OSwgMHhGMTg5LCAweDI0MEIsDQorICAgIDB4RjE4QSwgMHhGMTkzLCAweDUyNjMsIDB4RjE5NCwgMHhGMTk0LCAweDFGM0YsIDB4RjE5NSwgMHhGMTk3LCAweDUyNkQsDQorICAgIDB4RjE5OCwgMHhGMTk4LCAweDIwNjcsIDB4RjE5OSwgMHhGMUEwLCAweDUyNzAsIDB4RjFBMSwgMHhGMUZFLCAweDFCODUsDQorICAgIDB4RjI0MCwgMHhGMjQ0LCAweDUyNzgsIDB4RjI0NSwgMHhGMjQ1LCAweDFGRDcsIDB4RjI0NiwgMHhGMjQ2LCAweDUyN0QsDQorICAgIDB4RjI0NywgMHhGMjQ3LCAweDFFODMsIDB4RjI0OCwgMHhGMjRBLCAweDUyN0UsIDB4RjI0QiwgMHhGMjRCLCAweDI0MEYsDQorICAgIDB4RjI0QywgMHhGMjUyLCAweDUyODEsIDB4RjI1MywgMHhGMjUzLCAweDI0MEUsIDB4RjI1NCwgMHhGMjU0LCAweDIwQzcsDQorICAgIDB4RjI1NSwgMHhGMjU1LCAweDI0MEQsIDB4RjI1NiwgMHhGMjVCLCAweDUyODgsIDB4RjI1QywgMHhGMjVDLCAweDI0MTIsDQorICAgIDB4RjI1RCwgMHhGMjVFLCAweDUyOEUsIDB4RjI1RiwgMHhGMjVGLCAweDIwQjcsIDB4RjI2MCwgMHhGMjcwLCAweDUyOTAsDQorICAgIDB4RjI3MSwgMHhGMjcxLCAweDIzRjAsIDB4RjI3MiwgMHhGMjcyLCAweDUyQTEsIDB4RjI3MywgMHhGMjczLCAweDI0MTEsDQorICAgIDB4RjI3NCwgMHhGMjc0LCAweDI0MTQsIDB4RjI3NSwgMHhGMjc1LCAweDUyQTIsIDB4RjI3NiwgMHhGMjc2LCAweDIxNzAsDQorICAgIDB4RjI3NywgMHhGMjdCLCAweDUyQTMsIDB4RjI3QywgMHhGMjdDLCAweDI0MDUsIDB4RjI3RCwgMHhGMjdELCAweDIxMEMsDQorICAgIDB4RjI3RSwgMHhGMjdFLCAweDI0MTUsIDB4RjI4MCwgMHhGMjg0LCAweDUyQTgsIDB4RjI4NSwgMHhGMjg1LCAweDIwNjYsDQorICAgIDB4RjI4NiwgMHhGMjg2LCAweDUyQUQsIDB4RjI4NywgMHhGMjg3LCAweDIzNTIsIDB4RjI4OCwgMHhGMjg4LCAweDI0MTMsDQorICAgIDB4RjI4OSwgMHhGMjg5LCAweDI0MTAsIDB4RjI4QSwgMHhGMjhCLCAweDI0MTYsIDB4RjI4QywgMHhGMjhDLCAweDIwRjEsDQorICAgIDB4RjI4RCwgMHhGMjkwLCAweDUyQUUsIDB4RjI5MSwgMHhGMjkxLCAweDI0MEEsIDB4RjI5MiwgMHhGMjkzLCAweDUyQjIsDQorICAgIDB4RjI5NCwgMHhGMjk0LCAweDI0MDksIDB4RjI5NSwgMHhGMjk1LCAweDUyQjQsIDB4RjI5NiwgMHhGMjk2LCAweDI0MTgsDQorICAgIDB4RjI5NywgMHhGMjlCLCAweDUyQjUsIDB4RjI5QywgMHhGMjlDLCAweDFGQTcsIDB4RjI5RCwgMHhGMjlELCAweDUyQkEsDQorICAgIDB4RjI5RSwgMHhGMjlFLCAweDIxRkMsIDB4RjI5RiwgMHhGMkEwLCAweDUyQkIsIDB4RjJBMSwgMHhGMkZFLCAweDFCRTMsDQorICAgIDB4RjM0MCwgMHhGMzQwLCAweDFGQzEsIDB4RjM0MSwgMHhGMzQxLCAweDI0MDYsIDB4RjM0MiwgMHhGMzQ0LCAweDUyQkQsDQorICAgIDB4RjM0NSwgMHhGMzQ1LCAweDIyOUMsIDB4RjM0NiwgMHhGMzQ3LCAweDUyQzAsIDB4RjM0OCwgMHhGMzQ4LCAweDIwNEUsDQorICAgIDB4RjM0OSwgMHhGMzQ5LCAweDUyQzIsIDB4RjM0QSwgMHhGMzRBLCAweDI0MUEsIDB4RjM0QiwgMHhGMzRCLCAweDI0MTksDQorICAgIDB4RjM0QywgMHhGMzRGLCAweDUyQzMsIDB4RjM1MCwgMHhGMzUwLCAweDI0MEMsIDB4RjM1MSwgMHhGMzYwLCAweDUyQzcsDQorICAgIDB4RjM2MSwgMHhGMzYxLCAweDFFMjksIDB4RjM2MiwgMHhGMzczLCAweDUyRDcsIDB4RjM3NCwgMHhGMzc0LCAweDI2NjEsDQorICAgIDB4RjM3NSwgMHhGMzc1LCAweDUyRTksIDB4RjM3NiwgMHhGMzc2LCAweDI2QTQsIDB4RjM3NywgMHhGMzc3LCAweDIxNzQsDQorICAgIDB4RjM3OCwgMHhGMzc4LCAweDI2NjMsIDB4RjM3OSwgMHhGMzc5LCAweDI2NjIsIDB4RjM3QSwgMHhGMzdFLCAweDUyRUEsDQorICAgIDB4RjM4MCwgMHhGMzhCLCAweDUyRUYsIDB4RjM4QywgMHhGMzhDLCAweDI2NzUsIDB4RjM4RCwgMHhGMzlGLCAweDUyRkIsDQorICAgIDB4RjNBMCwgMHhGM0EwLCAweDIxNEMsIDB4RjNBMSwgMHhGM0ZFLCAweDFDNDEsIDB4RjQ0MCwgMHhGNDQ0LCAweDUzMEUsDQorICAgIDB4RjQ0NSwgMHhGNDQ1LCAweDI2N0EsIDB4RjQ0NiwgMHhGNDRGLCAweDUzMTMsIDB4RjQ1MCwgMHhGNDUwLCAweDI2QTAsDQorICAgIDB4RjQ1MSwgMHhGNDU2LCAweDUzMUQsIDB4RjQ1NywgMHhGNDU3LCAweDI2NjgsIDB4RjQ1OCwgMHhGNDU4LCAweDUzMjMsDQorICAgIDB4RjQ1OSwgMHhGNDU5LCAweDFFRDAsIDB4RjQ1QSwgMHhGNDVBLCAweDUzMjQsIDB4RjQ1QiwgMHhGNDVCLCAweDIwOTYsDQorICAgIDB4RjQ1QywgMHhGNDVDLCAweDUzMjUsIDB4RjQ1RCwgMHhGNDVELCAweDIzQ0MsIDB4RjQ1RSwgMHhGNDYxLCAweDUzMjYsDQorICAgIDB4RjQ2MiwgMHhGNDYyLCAweDIzQzgsIDB4RjQ2MywgMHhGNDYzLCAweDUzMkEsIDB4RjQ2NCwgMHhGNDY0LCAweDIyM0UsDQorICAgIDB4RjQ2NSwgMHhGNDc0LCAweDUzMkIsIDB4RjQ3NSwgMHhGNDc1LCAweDI2NjUsIDB4RjQ3NiwgMHhGNDdCLCAweDUzM0IsDQorICAgIDB4RjQ3QywgMHhGNDdDLCAweDI2NjQsIDB4RjQ3RCwgMHhGNDdELCAweDUzNDEsIDB4RjQ3RSwgMHhGNDdFLCAweDIyMzksDQorICAgIDB4RjQ4MCwgMHhGNDkzLCAweDUzNDIsIDB4RjQ5NCwgMHhGNDk0LCAweDIwNEEsIDB4RjQ5NSwgMHhGNDk4LCAweDUzNTYsDQorICAgIDB4RjQ5OSwgMHhGNDk5LCAweDI2MUYsIDB4RjQ5QSwgMHhGNDlCLCAweDUzNUEsIDB4RjQ5QywgMHhGNDlDLCAweDI2MUUsDQorICAgIDB4RjQ5RCwgMHhGNEEwLCAweDUzNUMsIDB4RjRBMSwgMHhGNEZFLCAweDFDOUYsIDB4RjU0MCwgMHhGNTQ0LCAweDUzNjAsDQorICAgIDB4RjU0NSwgMHhGNTQ1LCAweDI2MjAsIDB4RjU0NiwgMHhGNTQ2LCAweDUzNjUsIDB4RjU0NywgMHhGNTQ3LCAweDI2MjEsDQorICAgIDB4RjU0OCwgMHhGNTUxLCAweDUzNjYsIDB4RjU1MiwgMHhGNTUyLCAweDI2MjIsIDB4RjU1MywgMHhGNTUzLCAweDUzNzAsDQorICAgIDB4RjU1NCwgMHhGNTU0LCAweDI2MjcsIDB4RjU1NSwgMHhGNTU1LCAweDFFMzksIDB4RjU1NiwgMHhGNTU2LCAweDI2MjUsDQorICAgIDB4RjU1NywgMHhGNTVELCAweDUzNzEsIDB4RjU1RSwgMHhGNTVFLCAweDI2MjksIDB4RjU1RiwgMHhGNTYwLCAweDUzNzgsDQorICAgIDB4RjU2MSwgMHhGNTYxLCAweDI2MkUsIDB4RjU2MiwgMHhGNTYyLCAweDI2MkIsIDB4RjU2MywgMHhGNTZELCAweDUzN0EsDQorICAgIDB4RjU2RSwgMHhGNTZFLCAweDI2MkEsIDB4RjU2RiwgMHhGNTZGLCAweDI2MkQsIDB4RjU3MCwgMHhGNTcwLCAweDUzODUsDQorICAgIDB4RjU3MSwgMHhGNTcxLCAweDI2MjgsIDB4RjU3MiwgMHhGNTcyLCAweDIxQjksIDB4RjU3MywgMHhGNTdFLCAweDUzODYsDQorICAgIDB4RjU4MCwgMHhGNTg0LCAweDUzOTIsIDB4RjU4NSwgMHhGNTg1LCAweDI2MzYsIDB4RjU4NiwgMHhGNTg2LCAweDI2MzAsDQorICAgIDB4RjU4NywgMHhGNThCLCAweDUzOTcsIDB4RjU4QywgMHhGNThDLCAweDI2MzgsIDB4RjU4RCwgMHhGNThELCAweDUzOUMsDQorICAgIDB4RjU4RSwgMHhGNThFLCAweDIwMEQsIDB4RjU4RiwgMHhGNThGLCAweDI2MzcsIDB4RjU5MCwgMHhGNTk4LCAweDUzOUQsDQorICAgIDB4RjU5OSwgMHhGNTk5LCAweDI2NDUsIDB4RjU5QSwgMHhGNTlBLCAweDUzQTYsIDB4RjU5QiwgMHhGNTlCLCAweDI2M0EsDQorICAgIDB4RjU5QywgMHhGNTlGLCAweDUzQTcsIDB4RjVBMCwgMHhGNUEwLCAweDI2NDMsIDB4RjVBMSwgMHhGNUZFLCAweDFDRkQsDQorICAgIDB4RjY0MCwgMHhGNjQwLCAweDUzQUIsIDB4RjY0MSwgMHhGNjQxLCAweDI2NDAsIDB4RjY0MiwgMHhGNjQ0LCAweDUzQUMsDQorICAgIDB4RjY0NSwgMHhGNjQ1LCAweDI2M0QsIDB4RjY0NiwgMHhGNjQ2LCAweDI2NDEsIDB4RjY0NywgMHhGNjQ3LCAweDUzQUYsDQorICAgIDB4RjY0OCwgMHhGNjQ4LCAweDI2M0UsIDB4RjY0OSwgMHhGNjRBLCAweDUzQjAsIDB4RjY0QiwgMHhGNjRCLCAweDI2M0YsDQorICAgIDB4RjY0QywgMHhGNjRDLCAweDFGQzAsIDB4RjY0RCwgMHhGNjRELCAweDUzQjIsIDB4RjY0RSwgMHhGNjRGLCAweDI2M0IsDQorICAgIDB4RjY1MCwgMHhGNjUzLCAweDUzQjMsIDB4RjY1NCwgMHhGNjU0LCAweDI2NDIsIDB4RjY1NSwgMHhGNjU3LCAweDUzQjcsDQorICAgIDB4RjY1OCwgMHhGNjU4LCAweDI2NDQsIDB4RjY1OSwgMHhGNjYwLCAweDUzQkEsIDB4RjY2MSwgMHhGNjYxLCAweDI2MzksDQorICAgIDB4RjY2MiwgMHhGNjYyLCAweDUzQzIsIDB4RjY2MywgMHhGNjYzLCAweDI2NEMsIDB4RjY2NCwgMHhGNjZCLCAweDUzQzMsDQorICAgIDB4RjY2QywgMHhGNjZDLCAweDI2NDcsIDB4RjY2RCwgMHhGNjZELCAweDI2NEIsIDB4RjY2RSwgMHhGNjcwLCAweDUzQ0IsDQorICAgIDB4RjY3MSwgMHhGNjcxLCAweDI2NDksIDB4RjY3MiwgMHhGNjczLCAweDUzQ0UsIDB4RjY3NCwgMHhGNjc0LCAweDI2NDgsDQorICAgIDB4RjY3NSwgMHhGNjc1LCAweDUzRDAsIDB4RjY3NiwgMHhGNjc2LCAweDI2NEEsIDB4RjY3NywgMHhGNjc3LCAweDIxMDgsDQorICAgIDB4RjY3OCwgMHhGNjdFLCAweDUzRDEsIDB4RjY4MCwgMHhGNjg0LCAweDUzRDgsIDB4RjY4NSwgMHhGNjg1LCAweDI2NEQsDQorICAgIDB4RjY4NiwgMHhGNjg3LCAweDUzREQsIDB4RjY4OCwgMHhGNjg4LCAweDI2MzQsIDB4RjY4OSwgMHhGNjg5LCAweDUzREYsDQorICAgIDB4RjY4QSwgMHhGNjhBLCAweDI2NTEsIDB4RjY4QiwgMHhGNjhDLCAweDUzRTAsIDB4RjY4RCwgMHhGNjhELCAweDI2NTAsDQorICAgIDB4RjY4RSwgMHhGNjhFLCAweDI2NTIsIDB4RjY4RiwgMHhGNjkxLCAweDUzRTIsIDB4RjY5MiwgMHhGNjkyLCAweDI2NEYsDQorICAgIDB4RjY5MywgMHhGNjk1LCAweDUzRTUsIDB4RjY5NiwgMHhGNjk2LCAweDI2MzIsIDB4RjY5NywgMHhGNjk3LCAweDI2NEUsDQorICAgIDB4RjY5OCwgMHhGNjk4LCAweDI2NTMsIDB4RjY5OSwgMHhGNjk5LCAweDUzRTgsIDB4RjY5QSwgMHhGNjlBLCAweDI2NTcsDQorICAgIDB4RjY5QiwgMHhGNjlCLCAweDUzRTksIDB4RjY5QywgMHhGNjlDLCAweDI2MzUsIDB4RjY5RCwgMHhGNjlELCAweDUzRUEsDQorICAgIDB4RjY5RSwgMHhGNjlFLCAweDI2MzMsIDB4RjY5RiwgMHhGNjlGLCAweDUzRUIsIDB4RjZBMCwgMHhGNkEwLCAweDI2NTYsDQorICAgIDB4RjZBMSwgMHhGNkZFLCAweDFENUIsIDB4Rjc0MCwgMHhGNzQxLCAweDUzRUMsIDB4Rjc0MiwgMHhGNzQyLCAweDI2NTQsDQorICAgIDB4Rjc0MywgMHhGNzQ4LCAweDUzRUUsIDB4Rjc0OSwgMHhGNzQ5LCAweDI2NTgsIDB4Rjc0QSwgMHhGNzRCLCAweDUzRjQsDQorICAgIDB4Rjc0QywgMHhGNzRDLCAweDI2NTUsIDB4Rjc0RCwgMHhGNzRELCAweDFFNEQsIDB4Rjc0RSwgMHhGNzU1LCAweDUzRjYsDQorICAgIDB4Rjc1NiwgMHhGNzU2LCAweDI2NUIsIDB4Rjc1NywgMHhGNzU3LCAweDUzRkUsIDB4Rjc1OCwgMHhGNzU4LCAweDI2NUEsDQorICAgIDB4Rjc1OSwgMHhGNzU5LCAweDUzRkYsIDB4Rjc1QSwgMHhGNzVBLCAweDI2NTksIDB4Rjc1QiwgMHhGNzVCLCAweDIwMkUsDQorICAgIDB4Rjc1QywgMHhGNzVDLCAweDI2MkYsIDB4Rjc1RCwgMHhGNzYwLCAweDU0MDAsIDB4Rjc2MSwgMHhGNzYxLCAweDI2NDYsDQorICAgIDB4Rjc2MiwgMHhGNzYyLCAweDU0MDQsIDB4Rjc2MywgMHhGNzYzLCAweDI2MjYsIDB4Rjc2NCwgMHhGNzZBLCAweDU0MDUsDQorICAgIDB4Rjc2QiwgMHhGNzZCLCAweDI2NUMsIDB4Rjc2QywgMHhGNzcwLCAweDU0MEMsIDB4Rjc3MSwgMHhGNzcxLCAweDI2MkMsDQorICAgIDB4Rjc3MiwgMHhGNzdCLCAweDU0MTEsIDB4Rjc3QywgMHhGNzdDLCAweDI2MjMsIDB4Rjc3RCwgMHhGNzdELCAweDU0MUIsDQorICAgIDB4Rjc3RSwgMHhGNzdFLCAweDI2MzEsIDB4Rjc4MCwgMHhGN0EwLCAweDU0MUMsIDB4RjdBMSwgMHhGN0ZFLCAweDFEQjksDQorICAgIDB4Rjg0MCwgMHhGODQxLCAweDU0M0QsIDB4Rjg0MiwgMHhGODQyLCAweDIwOUMsIDB4Rjg0MywgMHhGODQ1LCAweDU0M0YsDQorICAgIDB4Rjg0NiwgMHhGODQ2LCAweDI1ODAsIDB4Rjg0NywgMHhGODQ4LCAweDU0NDIsIDB4Rjg0OSwgMHhGODQ5LCAweDIyREMsDQorICAgIDB4Rjg0QSwgMHhGODRGLCAweDU0NDQsIDB4Rjg1MCwgMHhGODUwLCAweDFGMDUsIDB4Rjg1MSwgMHhGODUxLCAweDIwOEIsDQorICAgIDB4Rjg1MiwgMHhGODUyLCAweDU0NEEsIDB4Rjg1MywgMHhGODUzLCAweDI1ODEsIDB4Rjg1NCwgMHhGODYyLCAweDU0NEIsDQorICAgIDB4Rjg2MywgMHhGODYzLCAweDI1ODMsIDB4Rjg2NCwgMHhGODY0LCAweDI1ODIsIDB4Rjg2NSwgMHhGODY1LCAweDU0NUEsDQorICAgIDB4Rjg2NiwgMHhGODY2LCAweDIxRUUsIDB4Rjg2NywgMHhGODcxLCAweDU0NUIsIDB4Rjg3MiwgMHhGODcyLCAweDIxODIsDQorICAgIDB4Rjg3MywgMHhGODc3LCAweDU0NjYsIDB4Rjg3OCwgMHhGODc4LCAweDIyNDMsIDB4Rjg3OSwgMHhGODc5LCAweDU0NkIsDQorICAgIDB4Rjg3QSwgMHhGODdBLCAweDI1ODcsIDB4Rjg3QiwgMHhGODdCLCAweDU0NkMsIDB4Rjg3QywgMHhGODdDLCAweDI1ODgsDQorICAgIDB4Rjg3RCwgMHhGODdFLCAweDU0NkQsIDB4Rjg4MCwgMHhGODgwLCAweDU0NkYsIDB4Rjg4MSwgMHhGODgxLCAweDI1ODQsDQorICAgIDB4Rjg4MiwgMHhGODgzLCAweDU0NzAsIDB4Rjg4NCwgMHhGODg0LCAweDIxRkQsIDB4Rjg4NSwgMHhGODg1LCAweDU0NzIsDQorICAgIDB4Rjg4NiwgMHhGODg2LCAweDIxRUYsIDB4Rjg4NywgMHhGODhDLCAweDU0NzMsIDB4Rjg4RCwgMHhGODhELCAweDI1OEEsDQorICAgIDB4Rjg4RSwgMHhGODhFLCAweDI1OEMsIDB4Rjg4RiwgMHhGODk4LCAweDU0NzksIDB4Rjg5OSwgMHhGODk5LCAweDFGNDcsDQorICAgIDB4Rjg5QSwgMHhGODlDLCAweDU0ODMsIDB4Rjg5RCwgMHhGODlELCAweDFGMUQsIDB4Rjg5RSwgMHhGODlGLCAweDU0ODYsDQorICAgIDB4RjhBMCwgMHhGOEEwLCAweDI1OEQsIDB4Rjk0MCwgMHhGOTRELCAweDU0ODgsIDB4Rjk0RSwgMHhGOTRFLCAweDFGRDAsDQorICAgIDB4Rjk0RiwgMHhGOTRGLCAweDI1OTIsIDB4Rjk1MCwgMHhGOTUwLCAweDI1OEYsIDB4Rjk1MSwgMHhGOTU4LCAweDU0OTYsDQorICAgIDB4Rjk1OSwgMHhGOTU5LCAweDI1OTQsIDB4Rjk1QSwgMHhGOTVBLCAweDFFRTAsIDB4Rjk1QiwgMHhGOTVDLCAweDU0OUUsDQorICAgIDB4Rjk1RCwgMHhGOTVELCAweDI1OTEsIDB4Rjk1RSwgMHhGOTVFLCAweDI1OTUsIDB4Rjk1RiwgMHhGOTY2LCAweDU0QTAsDQorICAgIDB4Rjk2NywgMHhGOTY3LCAweDI1OTcsIDB4Rjk2OCwgMHhGOTY4LCAweDU0QTgsIDB4Rjk2OSwgMHhGOTY5LCAweDIwQjYsDQorICAgIDB4Rjk2QSwgMHhGOTZCLCAweDU0QTksIDB4Rjk2QywgMHhGOTZDLCAweDI1OTgsIDB4Rjk2RCwgMHhGOTZFLCAweDU0QUIsDQorICAgIDB4Rjk2RiwgMHhGOTZGLCAweDIwRjYsIDB4Rjk3MCwgMHhGOTdFLCAweDU0QUQsIDB4Rjk4MCwgMHhGOTg0LCAweDU0QkMsDQorICAgIDB4Rjk4NSwgMHhGOTg1LCAweDI1ODUsIDB4Rjk4NiwgMHhGOTg2LCAweDU0QzEsIDB4Rjk4NywgMHhGOTg3LCAweDI1OTksDQorICAgIDB4Rjk4OCwgMHhGOTkwLCAweDU0QzIsIDB4Rjk5MSwgMHhGOTkxLCAweDI1OTYsIDB4Rjk5MiwgMHhGOTk1LCAweDU0Q0IsDQorICAgIDB4Rjk5NiwgMHhGOTk2LCAweDI1OUEsIDB4Rjk5NywgMHhGOTk3LCAweDU0Q0YsIDB4Rjk5OCwgMHhGOTk4LCAweDI1OUIsDQorICAgIDB4Rjk5OSwgMHhGOUEwLCAweDU0RDAsIDB4RkE0MCwgMHhGQTQxLCAweDU0RDgsIDB4RkE0MiwgMHhGQTQyLCAweDI1OUQsDQorICAgIDB4RkE0MywgMHhGQTQ1LCAweDU0REEsIDB4RkE0NiwgMHhGQTQ2LCAweDI1OUUsIDB4RkE0NywgMHhGQTRCLCAweDU0REQsDQorICAgIDB4RkE0QywgMHhGQTRDLCAweDIzNEMsIDB4RkE0RCwgMHhGQTUwLCAweDU0RTIsIDB4RkE1MSwgMHhGQTUxLCAweDFGNDQsDQorICAgIDB4RkE1MiwgMHhGQTU3LCAweDU0RTYsIDB4RkE1OCwgMHhGQTU4LCAweDI2NjAsIDB4RkE1OSwgMHhGQTU5LCAweDI1QTAsDQorICAgIDB4RkE1QSwgMHhGQTVDLCAweDU0RUMsIDB4RkE1RCwgMHhGQTVELCAweDI1OUMsIDB4RkE1RSwgMHhGQTVFLCAweDU0RUYsDQorICAgIDB4RkE1RiwgMHhGQTVGLCAweDI1OUYsIDB4RkE2MCwgMHhGQTYwLCAweDU0RjAsIDB4RkE2MSwgMHhGQTYxLCAweDFGNkMsDQorICAgIDB4RkE2MiwgMHhGQTZGLCAweDU0RjEsIDB4RkE3MCwgMHhGQTcwLCAweDI1QTIsIDB4RkE3MSwgMHhGQTczLCAweDU0RkYsDQorICAgIDB4RkE3NCwgMHhGQTc0LCAweDIwQUUsIDB4RkE3NSwgMHhGQTc1LCAweDU1MDIsIDB4RkE3NiwgMHhGQTc2LCAweDI1OEIsDQorICAgIDB4RkE3NywgMHhGQTc3LCAweDI1QTMsIDB4RkE3OCwgMHhGQTdFLCAweDU1MDMsIDB4RkE4MCwgMHhGQTgyLCAweDU1MEEsDQorICAgIDB4RkE4MywgMHhGQTgzLCAweDI1ODksIDB4RkE4NCwgMHhGQTg0LCAweDI1QTUsIDB4RkE4NSwgMHhGQThDLCAweDU1MEQsDQorICAgIDB4RkE4RCwgMHhGQThELCAweDI1QTQsIDB4RkE4RSwgMHhGQThGLCAweDU1MTUsIDB4RkE5MCwgMHhGQTkwLCAweDI1QTYsDQorICAgIDB4RkE5MSwgMHhGQTkxLCAweDI1OTMsIDB4RkE5MiwgMHhGQTk1LCAweDU1MTcsIDB4RkE5NiwgMHhGQTk2LCAweDI1QTcsDQorICAgIDB4RkE5NywgMHhGQTk3LCAweDIyMjIsIDB4RkE5OCwgMHhGQTk4LCAweDI1QTksIDB4RkE5OSwgMHhGQUEwLCAweDU1MUIsDQorICAgIDB4RkI0MCwgMHhGQjQ4LCAweDU1MjMsIDB4RkI0OSwgMHhGQjQ5LCAweDI1QTgsIDB4RkI0QSwgMHhGQjUxLCAweDU1MkMsDQorICAgIDB4RkI1MiwgMHhGQjUyLCAweDI1ODYsIDB4RkI1MywgMHhGQjU2LCAweDU1MzQsIDB4RkI1NywgMHhGQjU3LCAweDI1QTEsDQorICAgIDB4RkI1OCwgMHhGQjU4LCAweDI1QUEsIDB4RkI1OSwgMHhGQjU5LCAweDU1MzgsIDB4RkI1QSwgMHhGQjVBLCAweDI1OTAsDQorICAgIDB4RkI1QiwgMHhGQjVCLCAweDI1OEUsIDB4RkI1QywgMHhGQjc0LCAweDU1MzksIDB4RkI3NSwgMHhGQjc1LCAweDI2ODgsDQorICAgIDB4RkI3NiwgMHhGQjc4LCAweDU1NTIsIDB4RkI3OSwgMHhGQjc5LCAweDI2OUUsIDB4RkI3QSwgMHhGQjdBLCAweDI1RkIsDQorICAgIDB4RkI3QiwgMHhGQjdCLCAweDU1NTUsIDB4RkI3QywgMHhGQjdDLCAweDFGOEMsIDB4RkI3RCwgMHhGQjdELCAweDIxRjQsDQorICAgIDB4RkI3RSwgMHhGQjdFLCAweDU1NTYsIDB4RkI4MCwgMHhGQjhGLCAweDU1NTcsIDB4RkI5MCwgMHhGQjkwLCAweDIwMEYsDQorICAgIDB4RkI5MSwgMHhGQjlCLCAweDU1NjcsIDB4RkI5QywgMHhGQjlDLCAweDIwNzEsIDB4RkI5RCwgMHhGQjlFLCAweDU1NzIsDQorICAgIDB4RkI5RiwgMHhGQjlGLCAweDI1RjcsIDB4RkJBMCwgMHhGQkEwLCAweDU1NzQsIDB4RkM0MCwgMHhGQzQzLCAweDU1NzUsDQorICAgIDB4RkM0NCwgMHhGQzQ0LCAweDI2OTYsIDB4RkM0NSwgMHhGQzQ4LCAweDU1NzksIDB4RkM0OSwgMHhGQzQ5LCAweDI2OEYsDQorICAgIDB4RkM0QSwgMHhGQzU5LCAweDU1N0QsIDB4RkM1QSwgMHhGQzVBLCAweDIyREEsIDB4RkM1QiwgMHhGQzYyLCAweDU1OEQsDQorICAgIDB4RkM2MywgMHhGQzYzLCAweDFFQzEsIDB4RkM2NCwgMHhGQzY3LCAweDU1OTUsIDB4RkM2OCwgMHhGQzY4LCAweDFFQjMsDQorICAgIDB4RkM2OSwgMHhGQzZFLCAweDU1OTksIDB4RkM2RiwgMHhGQzZGLCAweDI2NkEsIDB4RkM3MCwgMHhGQzcwLCAweDU1OUYsDQorICAgIDB4RkM3MSwgMHhGQzcxLCAweDI2OEEsIDB4RkM3MiwgMHhGQzczLCAweDU1QTAsIDB4RkM3NCwgMHhGQzc0LCAweDI2NjksDQorICAgIDB4RkM3NSwgMHhGQzc2LCAweDU1QTIsIDB4RkM3NywgMHhGQzc4LCAweDI2MTgsIDB4RkM3OSwgMHhGQzdFLCAweDU1QTQsDQorICAgIDB4RkM4MCwgMHhGQzgyLCAweDU1QUEsIDB4RkM4MywgMHhGQzgzLCAweDI2MUEsIDB4RkM4NCwgMHhGQzg5LCAweDU1QUQsDQorICAgIDB4RkM4QSwgMHhGQzhBLCAweDI2NzMsIDB4RkM4QiwgMHhGQ0EwLCAweDU1QjMsIDB4RkQ0MCwgMHhGRDUxLCAweDU1QzksDQorICAgIDB4RkQ1MiwgMHhGRDUyLCAweDIwQzYsIDB4RkQ1MywgMHhGRDUzLCAweDIyNkIsIDB4RkQ1NCwgMHhGRDU2LCAweDU1REIsDQorICAgIDB4RkQ1NywgMHhGRDU3LCAweDI0RDMsIDB4RkQ1OCwgMHhGRDU4LCAweDFFODYsIDB4RkQ1OSwgMHhGRDU5LCAweDU1REUsDQorICAgIDB4RkQ1QSwgMHhGRDVBLCAweDI2MEYsIDB4RkQ1QiwgMHhGRDVFLCAweDU1REYsIDB4RkQ1RiwgMHhGRDVGLCAweDI2MTEsDQorICAgIDB4RkQ2MCwgMHhGRDYxLCAweDU1RTMsIDB4RkQ2MiwgMHhGRDYyLCAweDI2MTMsIDB4RkQ2MywgMHhGRDY0LCAweDU1RTUsDQorICAgIDB4RkQ2NSwgMHhGRDY1LCAweDI2MTAsIDB4RkQ2NiwgMHhGRDY2LCAweDI2MTIsIDB4RkQ2NywgMHhGRDY3LCAweDIwMzAsDQorICAgIDB4RkQ2OCwgMHhGRDY4LCAweDU1RTcsIDB4RkQ2OSwgMHhGRDY5LCAweDI2NzEsIDB4RkQ2QSwgMHhGRDZCLCAweDU1RTgsDQorICAgIDB4RkQ2QywgMHhGRDZDLCAweDI2MTQsIDB4RkQ2RCwgMHhGRDZGLCAweDU1RUEsIDB4RkQ3MCwgMHhGRDcwLCAweDI2MTYsDQorICAgIDB4RkQ3MSwgMHhGRDcxLCAweDU1RUQsIDB4RkQ3MiwgMHhGRDcyLCAweDI2MTUsIDB4RkQ3MywgMHhGRDc3LCAweDU1RUUsDQorICAgIDB4RkQ3OCwgMHhGRDc4LCAweDIwRjIsIDB4RkQ3OSwgMHhGRDdDLCAweDU1RjMsIDB4RkQ3RCwgMHhGRDdELCAweDI2MTcsDQorICAgIDB4RkQ3RSwgMHhGRDdFLCAweDU1RjcsIDB4RkQ4MCwgMHhGRDg3LCAweDU1RjgsIDB4RkQ4OCwgMHhGRDg4LCAweDIwMzcsDQorICAgIDB4RkQ4OSwgMHhGRDhBLCAweDU2MDAsIDB4RkQ4QiwgMHhGRDhCLCAweDIwQjMsIDB4RkQ4QywgMHhGRDhFLCAweDU2MDIsDQorICAgIDB4RkQ4RiwgMHhGRDhGLCAweDFGMjIsIDB4RkQ5MCwgMHhGRDkwLCAweDI0RUQsIDB4RkQ5MSwgMHhGRDkzLCAweDU2MDUsDQorICAgIDB4RkQ5NCwgMHhGRDk0LCAweDFGMzQsIDB4RkQ5NSwgMHhGRDlDLCAweDU2MDgsIDB4RkQ5RCwgMHhGRDlELCAweDBBMDIsDQorICAgIDB4RkQ5RSwgMHhGRDlFLCAweDQwRDMsIDB4RkQ5RiwgMHhGRDlGLCAweDIwMEMsIDB4RkRBMCwgMHhGREEwLCAweDUwODMsDQorICAgIDB4RkU0MCwgMHhGRTQwLCAweDEyNTksIDB4RkU0MSwgMHhGRTdFLCAweDU2MTAsIDB4RkU4MCwgMHhGRUEwLCAweDU2NEUsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCSy1FVUMtVl8yLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JLLUVVQy1WXzIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwYWFkZGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCSy1FVUMtVl8yLmNwcApAQCAtMCwwICsxLDE1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfR0JLX0VVQ19WXzJbMjAgKiAzXSA9IHsKKyAgICAweEExQTIsIDB4QTFBMiwgMHgwMjNGLCAweEExQTMsIDB4QTFBMywgMHgwMjNFLCAweEExQUEsIDB4QTFBQSwgMHgwMjU2LAorICAgIDB4QTFBQiwgMHhBMUFDLCAweDFFMTgsIDB4QTFBRCwgMHhBMUFELCAweDAyNTcsIDB4QTFCMiwgMHhBMUJGLCAweDAyNDYsCisgICAgMHhBMUZFLCAweEExRkUsIDB4MUUxQSwgMHhBM0ExLCAweEEzQTEsIDB4MDI0MiwgMHhBM0E4LCAweEEzQTksIDB4MDI0NCwKKyAgICAweEEzQUMsIDB4QTNBQywgMHgwMjNELCAweEEzQUUsIDB4QTNBRSwgMHgxRTFCLCAweEEzQkEsIDB4QTNCQiwgMHgwMjQwLAorICAgIDB4QTNCRCwgMHhBM0JELCAweDFFMUMsIDB4QTNCRiwgMHhBM0JGLCAweDAyNDMsIDB4QTNEQiwgMHhBM0RCLCAweDFFMUQsCisgICAgMHhBM0RELCAweEEzREQsIDB4MUUxRSwgMHhBM0RGLCAweEEzREYsIDB4MDI1OCwgMHhBM0ZCLCAweEEzRkIsIDB4MDI1NCwKKyAgICAweEEzRkQsIDB4QTNGRCwgMHgwMjU1LCAweEEzRkUsIDB4QTNGRSwgMHgxRTFGLAorfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JLMkstSF81LmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JLMkstSF81LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjEzMDFlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0dCMS9HQksySy1IXzUuY3BwCkBAIC0wLDAgKzEsMTcwNiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0dCSzJLX0hfNVs0MDcxICogM10gPSB7CisgICAgMHgwMDIwLCAweDAwN0UsIDB4MDAwMSwgMHg4MTQwLCAweDgxNzgsIDB4Mjc1OCwgMHg4MTc5LCAweDgxNzksIDB4MjA1OSwKKyAgICAweDgxN0EsIDB4ODE3RSwgMHgyNzkxLCAweDgxODAsIDB4ODE4NSwgMHgyNzk2LCAweDgxODYsIDB4ODE4NiwgMHgyMUYxLAorICAgIDB4ODE4NywgMHg4MUVDLCAweDI3OUMsIDB4ODFFRCwgMHg4MUVELCAweDFGRjIsIDB4ODFFRSwgMHg4MUY1LCAweDI4MDIsCisgICAgMHg4MUY2LCAweDgxRjYsIDB4MjA1RCwgMHg4MUY3LCAweDgxRkUsIDB4MjgwQSwgMHg4MjQwLCAweDgyNTIsIDB4MjgxMiwKKyAgICAweDgyNTMsIDB4ODI1MywgMHgyNjlDLCAweDgyNTQsIDB4ODI2MSwgMHgyODI1LCAweDgyNjIsIDB4ODI2MiwgMHgyMUI1LAorICAgIDB4ODI2MywgMHg4MjczLCAweDI4MzMsIDB4ODI3NCwgMHg4Mjc0LCAweDIyQ0MsIDB4ODI3NSwgMHg4Mjc5LCAweDI4NDQsCisgICAgMHg4MjdBLCAweDgyN0EsIDB4MjAxNiwgMHg4MjdCLCAweDgyN0MsIDB4Mjg0OSwgMHg4MjdELCAweDgyN0QsIDB4MUU2MiwKKyAgICAweDgyN0UsIDB4ODI3RSwgMHgyODRCLCAweDgyODAsIDB4ODI4MCwgMHgxRjIwLCAweDgyODEsIDB4ODI4MiwgMHgyODRDLAorICAgIDB4ODI4MywgMHg4MjgzLCAweDIwN0YsIDB4ODI4NCwgMHg4MjhGLCAweDI4NEUsIDB4ODI5MCwgMHg4MjkwLCAweDIwNUMsCisgICAgMHg4MjkxLCAweDgyQTQsIDB4Mjg1QSwgMHg4MkE1LCAweDgyQTUsIDB4MjE5NCwgMHg4MkE2LCAweDgyQzcsIDB4Mjg2RSwKKyAgICAweDgyQzgsIDB4ODJDOCwgMHgxRTY1LCAweDgyQzksIDB4ODJDOSwgMHgyMjgxLCAweDgyQ0EsIDB4ODJFMCwgMHgyODkwLAorICAgIDB4ODJFMSwgMHg4MkUxLCAweDIyQ0QsIDB4ODJFMiwgMHg4MkUyLCAweDI4QTcsIDB4ODJFMywgMHg4MkUzLCAweDIxMEEsCisgICAgMHg4MkU0LCAweDgyRTQsIDB4MUUzRSwgMHg4MkU1LCAweDgyRUMsIDB4MjhBOCwgMHg4MkVELCAweDgyRUQsIDB4MjY3RiwKKyAgICAweDgyRUUsIDB4ODJGMSwgMHgyOEIwLCAweDgyRjIsIDB4ODJGMiwgMHgyMjJFLCAweDgyRjMsIDB4ODJGNiwgMHgyOEI0LAorICAgIDB4ODJGNywgMHg4MkY3LCAweDFFOTYsIDB4ODJGOCwgMHg4MkY4LCAweDIyQ0IsIDB4ODJGOSwgMHg4MkY5LCAweDIyNkMsCisgICAgMHg4MkZBLCAweDgyRkEsIDB4MjhCOCwgMHg4MkZCLCAweDgyRkIsIDB4MjExNywgMHg4MkZDLCAweDgyRkUsIDB4MjhCOSwKKyAgICAweDgzNDAsIDB4ODM0MCwgMHgyOEJDLCAweDgzNDEsIDB4ODM0MSwgMHgyMEU4LCAweDgzNDIsIDB4ODM0NCwgMHgyOEJELAorICAgIDB4ODM0NSwgMHg4MzQ1LCAweDIyRDQsIDB4ODM0NiwgMHg4MzQ3LCAweDI4QzAsIDB4ODM0OCwgMHg4MzQ4LCAweDFGQjksCisgICAgMHg4MzQ5LCAweDgzNEIsIDB4MjhDMiwgMHg4MzRDLCAweDgzNEMsIDB4MjJEOCwgMHg4MzRELCAweDgzNTIsIDB4MjhDNSwKKyAgICAweDgzNTMsIDB4ODM1MywgMHgyMERGLCAweDgzNTQsIDB4ODM1NiwgMHgyOENCLCAweDgzNTcsIDB4ODM1NywgMHgyMEMyLAorICAgIDB4ODM1OCwgMHg4MzVELCAweDI4Q0UsIDB4ODM1RSwgMHg4MzVFLCAweDIxOTUsIDB4ODM1RiwgMHg4MzY0LCAweDI4RDQsCisgICAgMHg4MzY1LCAweDgzNjUsIDB4MUZBQywgMHg4MzY2LCAweDgzNjYsIDB4MjJEMywgMHg4MzY3LCAweDgzNzEsIDB4MjhEQSwKKyAgICAweDgzNzIsIDB4ODM3MiwgMHgxRjgxLCAweDgzNzMsIDB4ODM3NywgMHgyOEU1LCAweDgzNzgsIDB4ODM3OCwgMHgyMjEwLAorICAgIDB4ODM3OSwgMHg4Mzc5LCAweDI4RUEsIDB4ODM3QSwgMHg4MzdBLCAweDIyQ0YsIDB4ODM3QiwgMHg4MzdCLCAweDI4RUIsCisgICAgMHg4MzdDLCAweDgzN0MsIDB4MjIxMywgMHg4MzdELCAweDgzN0QsIDB4MjhFQywgMHg4MzdFLCAweDgzN0UsIDB4MUZFNCwKKyAgICAweDgzODAsIDB4ODM4MCwgMHgxRjkwLCAweDgzODEsIDB4ODM4NSwgMHgyOEVELCAweDgzODYsIDB4ODM4NiwgMHgyMkQ2LAorICAgIDB4ODM4NywgMHg4Mzg4LCAweDI4RjIsIDB4ODM4OSwgMHg4Mzg5LCAweDIyRDAsIDB4ODM4QSwgMHg4MzhBLCAweDIyQ0UsCisgICAgMHg4MzhCLCAweDgzOEMsIDB4MjhGNCwgMHg4MzhELCAweDgzOEQsIDB4MjY4MSwgMHg4MzhFLCAweDgzOTMsIDB4MjhGNiwKKyAgICAweDgzOTQsIDB4ODM5NCwgMHgxRTc2LCAweDgzOTUsIDB4ODM5RCwgMHgyOEZDLCAweDgzOUUsIDB4ODM5RSwgMHgyMjMxLAorICAgIDB4ODM5RiwgMHg4M0E1LCAweDI5MDUsIDB4ODNBNiwgMHg4M0E2LCAweDFFOTMsIDB4ODNBNywgMHg4M0FBLCAweDI5MEMsCisgICAgMHg4M0FCLCAweDgzQUIsIDB4MjJEMiwgMHg4M0FDLCAweDgzQUQsIDB4MjkxMCwgMHg4M0FFLCAweDgzQUUsIDB4MjJENywKKyAgICAweDgzQUYsIDB4ODNBRiwgMHgyMkQ1LCAweDgzQjAsIDB4ODNCMCwgMHgyMkQxLCAweDgzQjEsIDB4ODNCOSwgMHgyOTEyLAorICAgIDB4ODNCQSwgMHg4M0JBLCAweDFFRTUsIDB4ODNCQiwgMHg4M0M4LCAweDI5MUIsIDB4ODNDOSwgMHg4M0M5LCAweDIwMjUsCisgICAgMHg4M0NBLCAweDgzRjUsIDB4MjkyOSwgMHg4M0Y2LCAweDgzRjYsIDB4MUVDRiwgMHg4M0Y3LCAweDgzRkUsIDB4Mjk1NSwKKyAgICAweDg0NDAsIDB4ODQ0RiwgMHgyOTVELCAweDg0NTAsIDB4ODQ1MCwgMHgxRkQ5LCAweDg0NTEsIDB4ODQ3MCwgMHgyOTZELAorICAgIDB4ODQ3MSwgMHg4NDcxLCAweDIyQzgsIDB4ODQ3MiwgMHg4NDczLCAweDI5OEQsIDB4ODQ3NCwgMHg4NDc0LCAweDIyNjMsCisgICAgMHg4NDc1LCAweDg0NzYsIDB4Mjk4RiwgMHg4NDc3LCAweDg0NzcsIDB4MjY4MywgMHg4NDc4LCAweDg0N0UsIDB4Mjk5MSwKKyAgICAweDg0ODAsIDB4ODQ4MSwgMHgyOTk4LCAweDg0ODIsIDB4ODQ4MiwgMHgxRjE3LCAweDg0ODMsIDB4ODQ4RCwgMHgyOTlBLAorICAgIDB4ODQ4RSwgMHg4NDhFLCAweDFGMkIsIDB4ODQ4RiwgMHg4NDkxLCAweDI5QTUsIDB4ODQ5MiwgMHg4NDkyLCAweDIyQ0EsCisgICAgMHg4NDkzLCAweDg0OTMsIDB4MUU5OSwgMHg4NDk0LCAweDg0OUMsIDB4MjlBOCwgMHg4NDlELCAweDg0OUQsIDB4MUY0RiwKKyAgICAweDg0OUUsIDB4ODRBMCwgMHgyOUIxLCAweDg0QTEsIDB4ODRBMSwgMHgxRkNGLCAweDg0QTIsIDB4ODRBMiwgMHgyMDM2LAorICAgIDB4ODRBMywgMHg4NEEzLCAweDFGM0EsIDB4ODRBNCwgMHg4NEE0LCAweDI5QjQsIDB4ODRBNSwgMHg4NEE1LCAweDIyQzksCisgICAgMHg4NEE2LCAweDg0QTYsIDB4MUY5OSwgMHg4NEE3LCAweDg0QTgsIDB4MjlCNSwgMHg4NEE5LCAweDg0QTksIDB4MUY3NSwKKyAgICAweDg0QUEsIDB4ODRDNCwgMHgyOUI3LCAweDg0QzUsIDB4ODRDNSwgMHgxRkJFLCAweDg0QzYsIDB4ODREMiwgMHgyOUQyLAorICAgIDB4ODREMywgMHg4NEQzLCAweDFFQ0QsIDB4ODRENCwgMHg4NEQ0LCAweDI5REYsIDB4ODRENSwgMHg4NEQ1LCAweDIxQTksCisgICAgMHg4NEQ2LCAweDg0RDYsIDB4MjlFMCwgMHg4NEQ3LCAweDg0RDcsIDB4MjFFNiwgMHg4NEQ4LCAweDg0RDgsIDB4MjlFMSwKKyAgICAweDg0RDksIDB4ODREOSwgMHgyMTI3LCAweDg0REEsIDB4ODREQSwgMHgyMDAzLCAweDg0REIsIDB4ODREQywgMHgyOUUyLAorICAgIDB4ODRERCwgMHg4NERELCAweDIxMzIsIDB4ODRERSwgMHg4NEU5LCAweDI5RTQsIDB4ODRFQSwgMHg4NEVBLCAweDIzMjMsCisgICAgMHg4NEVCLCAweDg0RUQsIDB4MjlGMCwgMHg4NEVFLCAweDg0RUUsIDB4MjAxMSwgMHg4NEVGLCAweDg0RjAsIDB4MjlGMywKKyAgICAweDg0RjEsIDB4ODRGMSwgMHgyMEY1LCAweDg0RjIsIDB4ODRGRSwgMHgyOUY1LCAweDg1NDAsIDB4ODU1MCwgMHgyQTAyLAorICAgIDB4ODU1MSwgMHg4NTUxLCAweDIyQzUsIDB4ODU1MiwgMHg4NTUyLCAweDFGNUUsIDB4ODU1MywgMHg4NTUzLCAweDJBMTMsCisgICAgMHg4NTU0LCAweDg1NTQsIDB4MjJDNiwgMHg4NTU1LCAweDg1NUQsIDB4MkExNCwgMHg4NTVFLCAweDg1NUUsIDB4MjBFRiwKKyAgICAweDg1NUYsIDB4ODU2NSwgMHgyQTFELCAweDg1NjYsIDB4ODU2NiwgMHgyMUQwLCAweDg1NjcsIDB4ODU3RSwgMHgyQTI0LAorICAgIDB4ODU4MCwgMHg4NTg2LCAweDJBM0MsIDB4ODU4NywgMHg4NTg3LCAweDIyQzEsIDB4ODU4OCwgMHg4NThBLCAweDJBNDMsCisgICAgMHg4NThCLCAweDg1OEIsIDB4MUU2NCwgMHg4NThDLCAweDg1OTEsIDB4MkE0NiwgMHg4NTkyLCAweDg1OTIsIDB4MjFGOSwKKyAgICAweDg1OTMsIDB4ODU5NSwgMHgyQTRDLCAweDg1OTYsIDB4ODU5NiwgMHgyMDEwLCAweDg1OTcsIDB4ODU5NywgMHgyQTRGLAorICAgIDB4ODU5OCwgMHg4NTk4LCAweDIyQzIsIDB4ODU5OSwgMHg4NUExLCAweDJBNTAsIDB4ODVBMiwgMHg4NUEyLCAweDFFNUEsCisgICAgMHg4NUEzLCAweDg1QjEsIDB4MkE1OSwgMHg4NUIyLCAweDg1QjIsIDB4MUVBMiwgMHg4NUIzLCAweDg1RkUsIDB4MkE2OCwKKyAgICAweDg2NDAsIDB4ODY0OSwgMHgyQUI0LCAweDg2NEEsIDB4ODY0QSwgMHgyMzZELCAweDg2NEIsIDB4ODY1MywgMHgyQUJFLAorICAgIDB4ODY1NCwgMHg4NjU0LCAweDIyNDcsIDB4ODY1NSwgMHg4NjY3LCAweDJBQzcsIDB4ODY2OCwgMHg4NjY4LCAweDIzNkMsCisgICAgMHg4NjY5LCAweDg2N0UsIDB4MkFEQSwgMHg4NjgwLCAweDg2OTUsIDB4MkFGMCwgMHg4Njk2LCAweDg2OTYsIDB4MjE5QywKKyAgICAweDg2OTcsIDB4ODY5OCwgMHgyQjA2LCAweDg2OTksIDB4ODY5OSwgMHgyMEM5LCAweDg2OUEsIDB4ODZBMCwgMHgyQjA4LAorICAgIDB4ODZBMSwgMHg4NkExLCAweDIxRjAsIDB4ODZBMiwgMHg4NkM5LCAweDJCMEYsIDB4ODZDQSwgMHg4NkNBLCAweDIxMEIsCisgICAgMHg4NkNCLCAweDg2Q0IsIDB4MkIzNywgMHg4NkNDLCAweDg2Q0MsIDB4MjBERSwgMHg4NkNELCAweDg2Q0QsIDB4MkIzOCwKKyAgICAweDg2Q0UsIDB4ODZDRSwgMHgxRUFBLCAweDg2Q0YsIDB4ODZEMCwgMHgyQjM5LCAweDg2RDEsIDB4ODZEMSwgMHgyMjJDLAorICAgIDB4ODZEMiwgMHg4NkRCLCAweDJCM0IsIDB4ODZEQywgMHg4NkRDLCAweDIwRDgsIDB4ODZERCwgMHg4NkRELCAweDIyQzAsCisgICAgMHg4NkRFLCAweDg2RTAsIDB4MkI0NSwgMHg4NkUxLCAweDg2RTEsIDB4MjA2RiwgMHg4NkUyLCAweDg2RTcsIDB4MkI0OCwKKyAgICAweDg2RTgsIDB4ODZFOCwgMHgyMUExLCAweDg2RTksIDB4ODZFRCwgMHgyQjRFLCAweDg2RUUsIDB4ODZFRSwgMHgyMzc5LAorICAgIDB4ODZFRiwgMHg4NkYzLCAweDJCNTMsIDB4ODZGNCwgMHg4NkY0LCAweDIzNzIsIDB4ODZGNSwgMHg4NkZFLCAweDJCNTgsCisgICAgMHg4NzQwLCAweDg3NDAsIDB4MjE2QSwgMHg4NzQxLCAweDg3NDMsIDB4MkI2MiwgMHg4NzQ0LCAweDg3NDQsIDB4MjM3QywKKyAgICAweDg3NDUsIDB4ODc0OCwgMHgyQjY1LCAweDg3NDksIDB4ODc0OSwgMHgyMEIwLCAweDg3NEEsIDB4ODc0QSwgMHgyQjY5LAorICAgIDB4ODc0QiwgMHg4NzRCLCAweDIzN0EsIDB4ODc0QywgMHg4NzRDLCAweDFFNzQsIDB4ODc0RCwgMHg4NzRFLCAweDJCNkEsCisgICAgMHg4NzRGLCAweDg3NEYsIDB4MjM3NywgMHg4NzUwLCAweDg3NTYsIDB4MkI2QywgMHg4NzU3LCAweDg3NTcsIDB4MUY0QywKKyAgICAweDg3NTgsIDB4ODc1OSwgMHgyQjczLCAweDg3NUEsIDB4ODc1QSwgMHgyMzc4LCAweDg3NUIsIDB4ODc1QiwgMHgyMUNGLAorICAgIDB4ODc1QywgMHg4NzVDLCAweDIzNjgsIDB4ODc1RCwgMHg4NzVELCAweDJCNzUsIDB4ODc1RSwgMHg4NzVFLCAweDIzNzEsCisgICAgMHg4NzVGLCAweDg3NUYsIDB4MkI3NiwgMHg4NzYwLCAweDg3NjAsIDB4MjM2OSwgMHg4NzYxLCAweDg3NjUsIDB4MkI3NywKKyAgICAweDg3NjYsIDB4ODc2NiwgMHgyNjc0LCAweDg3NjcsIDB4ODc3OSwgMHgyQjdDLCAweDg3N0EsIDB4ODc3QSwgMHgyMzZGLAorICAgIDB4ODc3QiwgMHg4NzdDLCAweDJCOEYsIDB4ODc3RCwgMHg4NzdELCAweDIzNzAsIDB4ODc3RSwgMHg4NzdFLCAweDJCOTEsCisgICAgMHg4NzgwLCAweDg3ODAsIDB4MkI5MiwgMHg4NzgxLCAweDg3ODEsIDB4MjM3NiwgMHg4NzgyLCAweDg3ODIsIDB4MjM3MywKKyAgICAweDg3ODMsIDB4ODc4NSwgMHgyQjkzLCAweDg3ODYsIDB4ODc4NiwgMHgyMzdGLCAweDg3ODcsIDB4ODc4NywgMHgyQjk2LAorICAgIDB4ODc4OCwgMHg4Nzg4LCAweDIzNzQsIDB4ODc4OSwgMHg4Nzg5LCAweDJCOTcsIDB4ODc4QSwgMHg4NzhBLCAweDIwQjUsCisgICAgMHg4NzhCLCAweDg3OEMsIDB4MkI5OCwgMHg4NzhELCAweDg3OEQsIDB4MUVEQiwgMHg4NzhFLCAweDg3OEUsIDB4MjY3MiwKKyAgICAweDg3OEYsIDB4ODc5MiwgMHgyQjlBLCAweDg3OTMsIDB4ODc5MywgMHgyMzZFLCAweDg3OTQsIDB4ODc5NywgMHgyQjlFLAorICAgIDB4ODc5OCwgMHg4Nzk4LCAweDIxQjcsIDB4ODc5OSwgMHg4NzlDLCAweDJCQTIsIDB4ODc5RCwgMHg4NzlELCAweDIzNzUsCisgICAgMHg4NzlFLCAweDg3QTIsIDB4MkJBNiwgMHg4N0EzLCAweDg3QTMsIDB4MjM4MiwgMHg4N0E0LCAweDg3QTYsIDB4MkJBQiwKKyAgICAweDg3QTcsIDB4ODdBNywgMHgyMDlFLCAweDg3QTgsIDB4ODdCMiwgMHgyQkFFLCAweDg3QjMsIDB4ODdCMywgMHgyMzZCLAorICAgIDB4ODdCNCwgMHg4N0I0LCAweDJCQjksIDB4ODdCNSwgMHg4N0I1LCAweDIwMzksIDB4ODdCNiwgMHg4N0JBLCAweDJCQkEsCisgICAgMHg4N0JCLCAweDg3QkIsIDB4MjY5RiwgMHg4N0JDLCAweDg3QkUsIDB4MkJCRiwgMHg4N0JGLCAweDg3QkYsIDB4MjM3RCwKKyAgICAweDg3QzAsIDB4ODdDMCwgMHgyMUY1LCAweDg3QzEsIDB4ODdDMSwgMHgyQkMyLCAweDg3QzIsIDB4ODdDMiwgMHgyMzgxLAorICAgIDB4ODdDMywgMHg4N0M5LCAweDJCQzMsIDB4ODdDQSwgMHg4N0NBLCAweDIzN0IsIDB4ODdDQiwgMHg4N0NCLCAweDIzN0UsCisgICAgMHg4N0NDLCAweDg3Q0MsIDB4MjFDQywgMHg4N0NELCAweDg3Q0UsIDB4MkJDQSwgMHg4N0NGLCAweDg3Q0YsIDB4MjJEQiwKKyAgICAweDg3RDAsIDB4ODdEMSwgMHgyQkNDLCAweDg3RDIsIDB4ODdEMiwgMHgyMzZBLCAweDg3RDMsIDB4ODdEMywgMHgyNjg5LAorICAgIDB4ODdENCwgMHg4N0Q0LCAweDJCQ0UsIDB4ODdENSwgMHg4N0Q1LCAweDI2OTcsIDB4ODdENiwgMHg4N0Q5LCAweDJCQ0YsCisgICAgMHg4N0RBLCAweDg3REEsIDB4MjJBMSwgMHg4N0RCLCAweDg3RjYsIDB4MkJEMywgMHg4N0Y3LCAweDg3RjcsIDB4MjM4MywKKyAgICAweDg3RjgsIDB4ODdGOCwgMHgxRjNELCAweDg3RjksIDB4ODdGOSwgMHgyQkVGLCAweDg3RkEsIDB4ODdGQSwgMHgyMThGLAorICAgIDB4ODdGQiwgMHg4N0ZFLCAweDJCRjAsIDB4ODg0MCwgMHg4ODQwLCAweDIyNDYsIDB4ODg0MSwgMHg4ODQxLCAweDIyNDgsCisgICAgMHg4ODQyLCAweDg4NDMsIDB4MkJGNCwgMHg4ODQ0LCAweDg4NDQsIDB4MjE3RSwgMHg4ODQ1LCAweDg4NDUsIDB4MkJGNiwKKyAgICAweDg4NDYsIDB4ODg0NiwgMHgyMTgwLCAweDg4NDcsIDB4ODg3RSwgMHgyQkY3LCAweDg4ODAsIDB4ODhCOSwgMHgyQzJGLAorICAgIDB4ODhCQSwgMHg4OEJBLCAweDIzMkEsIDB4ODhCQiwgMHg4OENCLCAweDJDNjksIDB4ODhDQywgMHg4OENDLCAweDIyOEIsCisgICAgMHg4OENELCAweDg4RDMsIDB4MkM3QSwgMHg4OEQ0LCAweDg4RDQsIDB4MUY4NSwgMHg4OEQ1LCAweDg4RDYsIDB4MkM4MSwKKyAgICAweDg4RDcsIDB4ODhENywgMHgyMzI1LCAweDg4RDgsIDB4ODhERSwgMHgyQzgzLCAweDg4REYsIDB4ODhERiwgMHgyMzJDLAorICAgIDB4ODhFMCwgMHg4OEU0LCAweDJDOEEsIDB4ODhFNSwgMHg4OEU1LCAweDIzMkUsIDB4ODhFNiwgMHg4OEYxLCAweDJDOEYsCisgICAgMHg4OEYyLCAweDg4RjIsIDB4MjIwNSwgMHg4OEYzLCAweDg4RjMsIDB4MUUzOCwgMHg4OEY0LCAweDg4RjUsIDB4MkM5QiwKKyAgICAweDg4RjYsIDB4ODhGNiwgMHgxRTczLCAweDg4RjcsIDB4ODhGRSwgMHgyQzlELCAweDg5NDAsIDB4ODk0QSwgMHgyQ0E1LAorICAgIDB4ODk0QiwgMHg4OTRCLCAweDFGRTMsIDB4ODk0QywgMHg4OTRDLCAweDIzMzksIDB4ODk0RCwgMHg4OTRELCAweDJDQjAsCisgICAgMHg4OTRFLCAweDg5NEUsIDB4MjMyQiwgMHg4OTRGLCAweDg5NEYsIDB4MkNCMSwgMHg4OTUwLCAweDg5NTAsIDB4MjMyRCwKKyAgICAweDg5NTEsIDB4ODk1MywgMHgyQ0IyLCAweDg5NTQsIDB4ODk1NCwgMHgyMTdGLCAweDg5NTUsIDB4ODk1QywgMHgyQ0I1LAorICAgIDB4ODk1RCwgMHg4OTVELCAweDIxQTcsIDB4ODk1RSwgMHg4OTVFLCAweDJDQkQsIDB4ODk1RiwgMHg4OTVGLCAweDIzMkYsCisgICAgMHg4OTYwLCAweDg5NkMsIDB4MkNCRSwgMHg4OTZELCAweDg5NkQsIDB4MUU3RCwgMHg4OTZFLCAweDg5NzAsIDB4MkNDQiwKKyAgICAweDg5NzEsIDB4ODk3MSwgMHgyMEQ2LCAweDg5NzIsIDB4ODk3QiwgMHgyQ0NFLCAweDg5N0MsIDB4ODk3QywgMHgxRUMyLAorICAgIDB4ODk3RCwgMHg4OTdFLCAweDJDRDgsIDB4ODk4MCwgMHg4OThBLCAweDJDREEsIDB4ODk4QiwgMHg4OThCLCAweDIyQjIsCisgICAgMHg4OThDLCAweDg5OTgsIDB4MkNFNSwgMHg4OTk5LCAweDg5OTksIDB4MUVERiwgMHg4OTlBLCAweDg5OUQsIDB4MkNGMiwKKyAgICAweDg5OUUsIDB4ODk5RSwgMHgxRUY5LCAweDg5OUYsIDB4ODlBNSwgMHgyQ0Y2LCAweDg5QTYsIDB4ODlBNiwgMHgyMEQ5LAorICAgIDB4ODlBNywgMHg4OUE3LCAweDJDRkQsIDB4ODlBOCwgMHg4OUE4LCAweDFGREQsIDB4ODlBOSwgMHg4OUFFLCAweDJDRkUsCisgICAgMHg4OUFGLCAweDg5QUYsIDB4MjE2NywgMHg4OUIwLCAweDg5QjksIDB4MkQwNCwgMHg4OUJBLCAweDg5QkEsIDB4MjFFRCwKKyAgICAweDg5QkIsIDB4ODlCRCwgMHgyRDBFLCAweDg5QkUsIDB4ODlCRSwgMHgyMDA3LCAweDg5QkYsIDB4ODlCRiwgMHgyMzI2LAorICAgIDB4ODlDMCwgMHg4OUMwLCAweDIzMjksIDB4ODlDMSwgMHg4OUMzLCAweDJEMTEsIDB4ODlDNCwgMHg4OUM0LCAweDFGNTIsCisgICAgMHg4OUM1LCAweDg5QzUsIDB4MjAzQiwgMHg4OUM2LCAweDg5QzYsIDB4MjMyOCwgMHg4OUM3LCAweDg5QzcsIDB4MkQxNCwKKyAgICAweDg5QzgsIDB4ODlDOCwgMHgyMzI3LCAweDg5QzksIDB4ODlDRCwgMHgyRDE1LCAweDg5Q0UsIDB4ODlDRSwgMHgxRTJCLAorICAgIDB4ODlDRiwgMHg4OUQwLCAweDJEMUEsIDB4ODlEMSwgMHg4OUQxLCAweDIyQUUsIDB4ODlEMiwgMHg4OUQ3LCAweDJEMUMsCisgICAgMHg4OUQ4LCAweDg5RDgsIDB4MUY0OSwgMHg4OUQ5LCAweDg5REEsIDB4MkQyMiwgMHg4OURCLCAweDg5REIsIDB4MjEzOCwKKyAgICAweDg5REMsIDB4ODlGMywgMHgyRDI0LCAweDg5RjQsIDB4ODlGNCwgMHgyMDgxLCAweDg5RjUsIDB4ODlGRSwgMHgyRDNDLAorICAgIDB4OEE0MCwgMHg4QTQwLCAweDJENDYsIDB4OEE0MSwgMHg4QTQxLCAweDFGN0MsIDB4OEE0MiwgMHg4QTU4LCAweDJENDcsCisgICAgMHg4QTU5LCAweDhBNTksIDB4MjM1QiwgMHg4QTVBLCAweDhBNUEsIDB4MUVERSwgMHg4QTVCLCAweDhBNUIsIDB4MkQ1RSwKKyAgICAweDhBNUMsIDB4OEE1QywgMHgxRkEyLCAweDhBNUQsIDB4OEE1RCwgMHgyRDVGLCAweDhBNUUsIDB4OEE1RSwgMHgxRUZBLAorICAgIDB4OEE1RiwgMHg4QTc4LCAweDJENjAsIDB4OEE3OSwgMHg4QTc5LCAweDIyQUQsIDB4OEE3QSwgMHg4QTdFLCAweDJEN0EsCisgICAgMHg4QTgwLCAweDhBRTMsIDB4MkQ3RiwgMHg4QUU0LCAweDhBRTQsIDB4MjAzRiwgMHg4QUU1LCAweDhBRkUsIDB4MkRFMywKKyAgICAweDhCNDAsIDB4OEI0MywgMHgyREZELCAweDhCNDQsIDB4OEI0NCwgMHgxRjBFLCAweDhCNDUsIDB4OEI0OCwgMHgyRTAxLAorICAgIDB4OEI0OSwgMHg4QjQ5LCAweDIzRjksIDB4OEI0QSwgMHg4Qjc5LCAweDJFMDUsIDB4OEI3QSwgMHg4QjdBLCAweDIzRkMsCisgICAgMHg4QjdCLCAweDhCN0UsIDB4MkUzNSwgMHg4QjgwLCAweDhCOEIsIDB4MkUzOSwgMHg4QjhDLCAweDhCOEMsIDB4MjA2OSwKKyAgICAweDhCOEQsIDB4OEI5RCwgMHgyRTQ1LCAweDhCOUUsIDB4OEI5RSwgMHgyM0Y3LCAweDhCOUYsIDB4OEJCMiwgMHgyRTU2LAorICAgIDB4OEJCMywgMHg4QkIzLCAweDIzRjYsIDB4OEJCNCwgMHg4QkI4LCAweDJFNkEsIDB4OEJCOSwgMHg4QkI5LCAweDIzRkQsCisgICAgMHg4QkJBLCAweDhCQkQsIDB4MkU2RiwgMHg4QkJFLCAweDhCQkUsIDB4MjNGOCwgMHg4QkJGLCAweDhCQzUsIDB4MkU3MywKKyAgICAweDhCQzYsIDB4OEJDNiwgMHgyM0ZBLCAweDhCQzcsIDB4OEJDNywgMHgyRTdBLCAweDhCQzgsIDB4OEJDOCwgMHgyM0ZFLAorICAgIDB4OEJDOSwgMHg4QkM5LCAweDFGQTgsIDB4OEJDQSwgMHg4QkQzLCAweDJFN0IsIDB4OEJENCwgMHg4QkQ0LCAweDI0MDEsCisgICAgMHg4QkQ1LCAweDhCREIsIDB4MkU4NSwgMHg4QkRDLCAweDhCREMsIDB4MjNGRiwgMHg4QkRELCAweDhCRTQsIDB4MkU4QywKKyAgICAweDhCRTUsIDB4OEJFNSwgMHgyNDAwLCAweDhCRTYsIDB4OEJFQSwgMHgyRTk0LCAweDhCRUIsIDB4OEJFQiwgMHgyMjIxLAorICAgIDB4OEJFQywgMHg4QkVGLCAweDJFOTksIDB4OEJGMCwgMHg4QkYwLCAweDIxMjIsIDB4OEJGMSwgMHg4QkZFLCAweDJFOUQsCisgICAgMHg4QzQwLCAweDhDNDMsIDB4MkVBQiwgMHg4QzQ0LCAweDhDNDQsIDB4MjNGQiwgMHg4QzQ1LCAweDhDNEUsIDB4MkVBRiwKKyAgICAweDhDNEYsIDB4OEM0RiwgMHgyMTVBLCAweDhDNTAsIDB4OEM1NiwgMHgyRUI5LCAweDhDNTcsIDB4OEM1NywgMHgyMUU1LAorICAgIDB4OEM1OCwgMHg4QzVCLCAweDJFQzAsIDB4OEM1QywgMHg4QzVDLCAweDIwNTcsIDB4OEM1RCwgMHg4QzdFLCAweDJFQzQsCisgICAgMHg4QzgwLCAweDhDOEEsIDB4MkVFNiwgMHg4QzhCLCAweDhDOEIsIDB4MjBFNSwgMHg4QzhDLCAweDhDOEMsIDB4MkVGMSwKKyAgICAweDhDOEQsIDB4OEM4RCwgMHgyMTJGLCAweDhDOEUsIDB4OEM4RSwgMHgyMEEzLCAweDhDOEYsIDB4OEM4RiwgMHgyMTIxLAorICAgIDB4OEM5MCwgMHg4QzkwLCAweDJFRjIsIDB4OEM5MSwgMHg4QzkxLCAweDIxRDQsIDB4OEM5MiwgMHg4QzkyLCAweDFGRTUsCisgICAgMHg4QzkzLCAweDhDOTgsIDB4MkVGMywgMHg4Qzk5LCAweDhDOTksIDB4MUU4QSwgMHg4QzlBLCAweDhDOUEsIDB4MUUzNywKKyAgICAweDhDOUIsIDB4OENBMSwgMHgyRUY5LCAweDhDQTIsIDB4OENBMiwgMHgxRjlFLCAweDhDQTMsIDB4OENBMywgMHgyMkE2LAorICAgIDB4OENBNCwgMHg4Q0E0LCAweDIxRTgsIDB4OENBNSwgMHg4Q0E1LCAweDJGMDAsIDB4OENBNiwgMHg4Q0E2LCAweDFFREEsCisgICAgMHg4Q0E3LCAweDhDQTcsIDB4MUVCOSwgMHg4Q0E4LCAweDhDQkYsIDB4MkYwMSwgMHg4Q0MwLCAweDhDQzAsIDB4MjM1QywKKyAgICAweDhDQzEsIDB4OENEMSwgMHgyRjE5LCAweDhDRDIsIDB4OENEMiwgMHgyMDUwLCAweDhDRDMsIDB4OENEMywgMHgxRTY3LAorICAgIDB4OENENCwgMHg4Q0Q0LCAweDJGMkEsIDB4OENENSwgMHg4Q0Q1LCAweDIzRjQsIDB4OENENiwgMHg4Q0Q4LCAweDJGMkIsCisgICAgMHg4Q0Q5LCAweDhDRDksIDB4MjEzRSwgMHg4Q0RBLCAweDhDRjgsIDB4MkYyRSwgMHg4Q0Y5LCAweDhDRjksIDB4MUYxNiwKKyAgICAweDhDRkEsIDB4OENGRSwgMHgyRjRELCAweDhENDAsIDB4OEQ3MiwgMHgyRjUyLCAweDhENzMsIDB4OEQ3MywgMHgyMzg5LAorICAgIDB4OEQ3NCwgMHg4RDc0LCAweDJGODUsIDB4OEQ3NSwgMHg4RDc1LCAweDFFQjcsIDB4OEQ3NiwgMHg4RDdBLCAweDJGODYsCisgICAgMHg4RDdCLCAweDhEN0IsIDB4MjFCNCwgMHg4RDdDLCAweDhEN0UsIDB4MkY4QiwgMHg4RDgwLCAweDhEODcsIDB4MkY4RSwKKyAgICAweDhEODgsIDB4OEQ4OCwgMHgyMzhGLCAweDhEODksIDB4OEQ4RSwgMHgyRjk2LCAweDhEOEYsIDB4OEQ4RiwgMHgxRjFBLAorICAgIDB4OEQ5MCwgMHg4RDlELCAweDJGOUMsIDB4OEQ5RSwgMHg4RDlFLCAweDIzOEIsIDB4OEQ5RiwgMHg4REI4LCAweDJGQUEsCisgICAgMHg4REI5LCAweDhEQjksIDB4MjM4QSwgMHg4REJBLCAweDhERTEsIDB4MkZDNCwgMHg4REUyLCAweDhERTIsIDB4MjM5MSwKKyAgICAweDhERTMsIDB4OERFMywgMHgyRkVDLCAweDhERTQsIDB4OERFNCwgMHgyMjcxLCAweDhERTUsIDB4OERFNiwgMHgyRkVELAorICAgIDB4OERFNywgMHg4REU3LCAweDIzODgsIDB4OERFOCwgMHg4REY2LCAweDJGRUYsIDB4OERGNywgMHg4REY3LCAweDIzOEUsCisgICAgMHg4REY4LCAweDhERkQsIDB4MkZGRSwgMHg4REZFLCAweDhERkUsIDB4MjM4RCwgMHg4RTQwLCAweDhFNDUsIDB4MzAwNCwKKyAgICAweDhFNDYsIDB4OEU0NiwgMHgyMzhDLCAweDhFNDcsIDB4OEU1NSwgMHgzMDBBLCAweDhFNTYsIDB4OEU1NiwgMHgyMzkwLAorICAgIDB4OEU1NywgMHg4RTU3LCAweDMwMTksIDB4OEU1OCwgMHg4RTU4LCAweDIwMzMsIDB4OEU1OSwgMHg4RTU5LCAweDMwMUEsCisgICAgMHg4RTVBLCAweDhFNUEsIDB4MjIzQywgMHg4RTVCLCAweDhFNjcsIDB4MzAxQiwgMHg4RTY4LCAweDhFNjgsIDB4MUZFOSwKKyAgICAweDhFNjksIDB4OEU2RCwgMHgzMDI4LCAweDhFNkUsIDB4OEU2RSwgMHgyMDU1LCAweDhFNkYsIDB4OEU2RiwgMHgzMDJELAorICAgIDB4OEU3MCwgMHg4RTcwLCAweDIzOTIsIDB4OEU3MSwgMHg4RTdFLCAweDMwMkUsIDB4OEU4MCwgMHg4RTgwLCAweDIzMjQsCisgICAgMHg4RTgxLCAweDhFOUEsIDB4MzAzQywgMHg4RTlCLCAweDhFOUIsIDB4MjE0MywgMHg4RTlDLCAweDhFOUUsIDB4MzA1NiwKKyAgICAweDhFOUYsIDB4OEU5RiwgMHgyMTI5LCAweDhFQTAsIDB4OEVBMywgMHgzMDU5LCAweDhFQTQsIDB4OEVBNCwgMHgyMjc3LAorICAgIDB4OEVBNSwgMHg4RUE2LCAweDMwNUQsIDB4OEVBNywgMHg4RUE3LCAweDFFQTcsIDB4OEVBOCwgMHg4RUFCLCAweDMwNUYsCisgICAgMHg4RUFDLCAweDhFQUMsIDB4MjI4NSwgMHg4RUFELCAweDhFQUQsIDB4MzA2MywgMHg4RUFFLCAweDhFQUUsIDB4MjM4NCwKKyAgICAweDhFQUYsIDB4OEVCQywgMHgzMDY0LCAweDhFQkQsIDB4OEVCRCwgMHgyMzg3LCAweDhFQkUsIDB4OEVCRSwgMHgyMzg2LAorICAgIDB4OEVCRiwgMHg4RUMyLCAweDMwNzIsIDB4OEVDMywgMHg4RUMzLCAweDIyOTAsIDB4OEVDNCwgMHg4RUM0LCAweDMwNzYsCisgICAgMHg4RUM1LCAweDhFQzUsIDB4MUU0NCwgMHg4RUM2LCAweDhFQ0MsIDB4MzA3NywgMHg4RUNELCAweDhFQ0QsIDB4MUUzMiwKKyAgICAweDhFQ0UsIDB4OEVDRSwgMHgyMzg1LCAweDhFQ0YsIDB4OEVENSwgMHgzMDdFLCAweDhFRDYsIDB4OEVENiwgMHgxRjEzLAorICAgIDB4OEVENywgMHg4RUQ3LCAweDFGNzMsIDB4OEVEOCwgMHg4RUVCLCAweDMwODUsIDB4OEVFQywgMHg4RUVDLCAweDFGRTAsCisgICAgMHg4RUVELCAweDhFRkUsIDB4MzA5OSwgMHg4RjQwLCAweDhGNTEsIDB4MzBBQiwgMHg4RjUyLCAweDhGNTIsIDB4MjA4NywKKyAgICAweDhGNTMsIDB4OEY1MywgMHgxRTc4LCAweDhGNTQsIDB4OEY1NCwgMHgyM0FFLCAweDhGNTUsIDB4OEY1NSwgMHgxRUY2LAorICAgIDB4OEY1NiwgMHg4RjU2LCAweDFGMzEsIDB4OEY1NywgMHg4RjVDLCAweDMwQkQsIDB4OEY1RCwgMHg4RjVELCAweDIwNDUsCisgICAgMHg4RjVFLCAweDhGNjMsIDB4MzBDMywgMHg4RjY0LCAweDhGNjQsIDB4MjE3OCwgMHg4RjY1LCAweDhGN0UsIDB4MzBDOSwKKyAgICAweDhGODAsIDB4OEY4NSwgMHgzMEUzLCAweDhGODYsIDB4OEY4NiwgMHgyM0Y1LCAweDhGODcsIDB4OEY4NywgMHgzMEU5LAorICAgIDB4OEY4OCwgMHg4Rjg4LCAweDIyNzUsIDB4OEY4OSwgMHg4Rjk0LCAweDMwRUEsIDB4OEY5NSwgMHg4Rjk1LCAweDI2NkUsCisgICAgMHg4Rjk2LCAweDhGOTYsIDB4MzBGNiwgMHg4Rjk3LCAweDhGOTcsIDB4MUVCMCwgMHg4Rjk4LCAweDhGOUEsIDB4MzBGNywKKyAgICAweDhGOUIsIDB4OEY5QiwgMHgyMDgzLCAweDhGOUMsIDB4OEY5QywgMHgzMEZBLCAweDhGOUQsIDB4OEY5RCwgMHgyMTg4LAorICAgIDB4OEY5RSwgMHg4RkEwLCAweDMwRkIsIDB4OEZBMSwgMHg4RkExLCAweDI2N0MsIDB4OEZBMiwgMHg4RkJDLCAweDMwRkUsCisgICAgMHg4RkJELCAweDhGQkQsIDB4MUZDNSwgMHg4RkJFLCAweDhGQzMsIDB4MzExOSwgMHg4RkM0LCAweDhGQzQsIDB4MUVBMSwKKyAgICAweDhGQzUsIDB4OEZDNSwgMHgzMTFGLCAweDhGQzYsIDB4OEZDNiwgMHgyMzkzLCAweDhGQzcsIDB4OEZDQywgMHgzMTIwLAorICAgIDB4OEZDRCwgMHg4RkNELCAweDFGMEIsIDB4OEZDRSwgMHg4RkQ3LCAweDMxMjYsIDB4OEZEOCwgMHg4RkQ4LCAweDFFN0MsCisgICAgMHg4RkQ5LCAweDhGRkUsIDB4MzEzMCwgMHg5MDQwLCAweDkwN0UsIDB4MzE1NiwgMHg5MDgwLCAweDkwOUMsIDB4MzE5NSwKKyAgICAweDkwOUQsIDB4OTA5RCwgMHgyM0I0LCAweDkwOUUsIDB4OTA5RSwgMHgyMDdFLCAweDkwOUYsIDB4OTBCOSwgMHgzMUIyLAorICAgIDB4OTBCQSwgMHg5MEJBLCAweDFFRTMsIDB4OTBCQiwgMHg5MEJGLCAweDMxQ0QsIDB4OTBDMCwgMHg5MEMwLCAweDIwOTUsCisgICAgMHg5MEMxLCAweDkwQzEsIDB4MjNCQiwgMHg5MEMyLCAweDkwQzQsIDB4MzFEMiwgMHg5MEM1LCAweDkwQzUsIDB4MjNCOSwKKyAgICAweDkwQzYsIDB4OTBEQSwgMHgzMUQ1LCAweDkwREIsIDB4OTBEQiwgMHgxRTI4LCAweDkwREMsIDB4OTBEQywgMHgyM0JELAorICAgIDB4OTBERCwgMHg5MEVDLCAweDMxRUEsIDB4OTBFRCwgMHg5MEVELCAweDIzQjUsIDB4OTBFRSwgMHg5MEVGLCAweDMxRkEsCisgICAgMHg5MEYwLCAweDkwRjAsIDB4MjNCQSwgMHg5MEYxLCAweDkwRjYsIDB4MzFGQywgMHg5MEY3LCAweDkwRjcsIDB4MjNCMywKKyAgICAweDkwRjgsIDB4OTBGRSwgMHgzMjAyLCAweDkxNDAsIDB4OTE0MSwgMHgzMjA5LCAweDkxNDIsIDB4OTE0MiwgMHgyMTYyLAorICAgIDB4OTE0MywgMHg5MTRBLCAweDMyMEIsIDB4OTE0QiwgMHg5MTRCLCAweDFFNUUsIDB4OTE0QywgMHg5MTRDLCAweDMyMTMsCisgICAgMHg5MTRELCAweDkxNEQsIDB4MUU1RCwgMHg5MTRFLCAweDkxNTAsIDB4MzIxNCwgMHg5MTUxLCAweDkxNTEsIDB4MjNCNywKKyAgICAweDkxNTIsIDB4OTE1MywgMHgzMjE3LCAweDkxNTQsIDB4OTE1NCwgMHgxRjJGLCAweDkxNTUsIDB4OTE1NSwgMHgyNERGLAorICAgIDB4OTE1NiwgMHg5MTU4LCAweDMyMTksIDB4OTE1OSwgMHg5MTU5LCAweDIzQjIsIDB4OTE1QSwgMHg5MTVBLCAweDIxNEUsCisgICAgMHg5MTVCLCAweDkxNUMsIDB4MzIxQywgMHg5MTVELCAweDkxNUQsIDB4MjA1MiwgMHg5MTVFLCAweDkxNjAsIDB4MzIxRSwKKyAgICAweDkxNjEsIDB4OTE2MSwgMHgyM0JDLCAweDkxNjIsIDB4OTE2MiwgMHgzMjIxLCAweDkxNjMsIDB4OTE2MywgMHgyMEVCLAorICAgIDB4OTE2NCwgMHg5MTZELCAweDMyMjIsIDB4OTE2RSwgMHg5MTZFLCAweDIyMzIsIDB4OTE2RiwgMHg5MTc1LCAweDMyMkMsCisgICAgMHg5MTc2LCAweDkxNzYsIDB4MUUzRiwgMHg5MTc3LCAweDkxNzksIDB4MzIzMywgMHg5MTdBLCAweDkxN0EsIDB4MjAxQiwKKyAgICAweDkxN0IsIDB4OTE3QiwgMHgyMEJDLCAweDkxN0MsIDB4OTE3QywgMHgyM0JFLCAweDkxN0QsIDB4OTE3RSwgMHgzMjM2LAorICAgIDB4OTE4MCwgMHg5MTgzLCAweDMyMzgsIDB4OTE4NCwgMHg5MTg0LCAweDFFQUUsIDB4OTE4NSwgMHg5MThDLCAweDMyM0MsCisgICAgMHg5MThELCAweDkxOEQsIDB4MUVGQiwgMHg5MThFLCAweDkxOTAsIDB4MzI0NCwgMHg5MTkxLCAweDkxOTEsIDB4MjA4OSwKKyAgICAweDkxOTIsIDB4OTE5MiwgMHgzMjQ3LCAweDkxOTMsIDB4OTE5MywgMHgyM0IxLCAweDkxOTQsIDB4OTE5NiwgMHgzMjQ4LAorICAgIDB4OTE5NywgMHg5MTk3LCAweDIxQzQsIDB4OTE5OCwgMHg5MTlBLCAweDMyNEIsIDB4OTE5QiwgMHg5MTlCLCAweDIyMTQsCisgICAgMHg5MTlDLCAweDkxQTgsIDB4MzI0RSwgMHg5MUE5LCAweDkxQTksIDB4MUZERSwgMHg5MUFBLCAweDkxQUEsIDB4MjIyMywKKyAgICAweDkxQUIsIDB4OTFBQiwgMHgyM0I2LCAweDkxQUMsIDB4OTFCOSwgMHgzMjVCLCAweDkxQkEsIDB4OTFCQSwgMHgyNjhDLAorICAgIDB4OTFCQiwgMHg5MUJCLCAweDI0REUsIDB4OTFCQywgMHg5MUJFLCAweDMyNjksIDB4OTFCRiwgMHg5MUJGLCAweDI0RTAsCisgICAgMHg5MUMwLCAweDkxQzIsIDB4MzI2QywgMHg5MUMzLCAweDkxQzMsIDB4MjNCOCwgMHg5MUM0LCAweDkxQ0MsIDB4MzI2RiwKKyAgICAweDkxQ0QsIDB4OTFDRCwgMHgxRTgxLCAweDkxQ0UsIDB4OTFDRiwgMHgzMjc4LCAweDkxRDAsIDB4OTFEMCwgMHgxRkZFLAorICAgIDB4OTFEMSwgMHg5MUQxLCAweDFGNTEsIDB4OTFEMiwgMHg5MUQyLCAweDIxRTEsIDB4OTFEMywgMHg5MUQzLCAweDMyN0EsCisgICAgMHg5MUQ0LCAweDkxRDQsIDB4MjNCMCwgMHg5MUQ1LCAweDkxRDUsIDB4MzI3QiwgMHg5MUQ2LCAweDkxRDYsIDB4MUZDRSwKKyAgICAweDkxRDcsIDB4OTFENywgMHgzMjdDLCAweDkxRDgsIDB4OTFEOCwgMHgyMTFFLCAweDkxRDksIDB4OTFEOSwgMHgyMDIxLAorICAgIDB4OTFEQSwgMHg5MURFLCAweDMyN0QsIDB4OTFERiwgMHg5MURGLCAweDI0RTEsIDB4OTFFMCwgMHg5MUUxLCAweDMyODIsCisgICAgMHg5MUUyLCAweDkxRTIsIDB4MjRBMywgMHg5MUUzLCAweDkxRTksIDB4MzI4NCwgMHg5MUVBLCAweDkxRUEsIDB4MjRBNCwKKyAgICAweDkxRUIsIDB4OTFFRiwgMHgzMjhCLCAweDkxRjAsIDB4OTFGMCwgMHgyMjczLCAweDkxRjEsIDB4OTFGMSwgMHgzMjkwLAorICAgIDB4OTFGMiwgMHg5MUYyLCAweDIxQjAsIDB4OTFGMywgMHg5MUZFLCAweDMyOTEsIDB4OTI0MCwgMHg5MjdFLCAweDMyOUQsCisgICAgMHg5MjgwLCAweDkyQjUsIDB4MzJEQywgMHg5MkI2LCAweDkyQjYsIDB4MjFEMSwgMHg5MkI3LCAweDkyQ0QsIDB4MzMxMiwKKyAgICAweDkyQ0UsIDB4OTJDRSwgMHgyMTFDLCAweDkyQ0YsIDB4OTJDRiwgMHgzMzI5LCAweDkyRDAsIDB4OTJEMCwgMHgyMzVELAorICAgIDB4OTJEMSwgMHg5MkQzLCAweDMzMkEsIDB4OTJENCwgMHg5MkQ0LCAweDI2ODIsIDB4OTJENSwgMHg5MkRFLCAweDMzMkQsCisgICAgMHg5MkRGLCAweDkyREYsIDB4MjEwRCwgMHg5MkUwLCAweDkyRTAsIDB4MjA1QSwgMHg5MkUxLCAweDkyRkQsIDB4MzMzNywKKyAgICAweDkyRkUsIDB4OTJGRSwgMHgxRjhELCAweDkzNDAsIDB4OTM0RiwgMHgzMzU0LCAweDkzNTAsIDB4OTM1MCwgMHgyMUZGLAorICAgIDB4OTM1MSwgMHg5MzVDLCAweDMzNjQsIDB4OTM1RCwgMHg5MzVELCAweDFGNTgsIDB4OTM1RSwgMHg5MzZGLCAweDMzNzAsCisgICAgMHg5MzcwLCAweDkzNzAsIDB4MjE1QiwgMHg5MzcxLCAweDkzNzUsIDB4MzM4MiwgMHg5Mzc2LCAweDkzNzYsIDB4MUVCNiwKKyAgICAweDkzNzcsIDB4OTM3RSwgMHgzMzg3LCAweDkzODAsIDB4OTM4QiwgMHgzMzhGLCAweDkzOEMsIDB4OTM4QywgMHgyMERCLAorICAgIDB4OTM4RCwgMHg5MzlDLCAweDMzOUIsIDB4OTM5RCwgMHg5MzlELCAweDIzNjAsIDB4OTM5RSwgMHg5M0E0LCAweDMzQUIsCisgICAgMHg5M0E1LCAweDkzQTUsIDB4MjM2MSwgMHg5M0E2LCAweDkzQTYsIDB4MzNCMiwgMHg5M0E3LCAweDkzQTcsIDB4MjA0MCwKKyAgICAweDkzQTgsIDB4OTNCMywgMHgzM0IzLCAweDkzQjQsIDB4OTNCNCwgMHgyMjhFLCAweDkzQjUsIDB4OTNCNywgMHgzM0JGLAorICAgIDB4OTNCOCwgMHg5M0I4LCAweDFGREYsIDB4OTNCOSwgMHg5M0JBLCAweDMzQzIsIDB4OTNCQiwgMHg5M0JCLCAweDIzNUUsCisgICAgMHg5M0JDLCAweDkzQkMsIDB4MzNDNCwgMHg5M0JELCAweDkzQkQsIDB4MUU2QSwgMHg5M0JFLCAweDkzQzUsIDB4MzNDNSwKKyAgICAweDkzQzYsIDB4OTNDNiwgMHgyMDAyLCAweDkzQzcsIDB4OTNDRSwgMHgzM0NELCAweDkzQ0YsIDB4OTNDRiwgMHgyMDkzLAorICAgIDB4OTNEMCwgMHg5M0Q2LCAweDMzRDUsIDB4OTNENywgMHg5M0Q3LCAweDIzNUYsIDB4OTNEOCwgMHg5M0RBLCAweDMzREMsCisgICAgMHg5M0RCLCAweDkzREIsIDB4MUVBQywgMHg5M0RDLCAweDkzREMsIDB4MUU1NCwgMHg5M0RELCAweDkzRTAsIDB4MzNERiwKKyAgICAweDkzRTEsIDB4OTNFMSwgMHgxRjA4LCAweDkzRTIsIDB4OTNFMywgMHgzM0UzLCAweDkzRTQsIDB4OTNFNCwgMHgyMEMwLAorICAgIDB4OTNFNSwgMHg5M0U1LCAweDIzNjIsIDB4OTNFNiwgMHg5M0U4LCAweDMzRTUsIDB4OTNFOSwgMHg5M0U5LCAweDIxNjAsCisgICAgMHg5M0VBLCAweDkzRUEsIDB4MzNFOCwgMHg5M0VCLCAweDkzRUIsIDB4MjE5RCwgMHg5M0VDLCAweDkzRUMsIDB4MUY4RSwKKyAgICAweDkzRUQsIDB4OTNFRCwgMHgyMjJELCAweDkzRUUsIDB4OTNFRSwgMHgzM0U5LCAweDkzRUYsIDB4OTNFRiwgMHgyMDQ3LAorICAgIDB4OTNGMCwgMHg5M0YwLCAweDMzRUEsIDB4OTNGMSwgMHg5M0YxLCAweDIyNjIsIDB4OTNGMiwgMHg5M0YzLCAweDMzRUIsCisgICAgMHg5M0Y0LCAweDkzRjQsIDB4MUY2NywgMHg5M0Y1LCAweDkzRjUsIDB4MUVCMiwgMHg5M0Y2LCAweDkzRjksIDB4MzNFRCwKKyAgICAweDkzRkEsIDB4OTNGQSwgMHgxRUE5LCAweDkzRkIsIDB4OTNGRCwgMHgzM0YxLCAweDkzRkUsIDB4OTNGRSwgMHgxRkNDLAorICAgIDB4OTQ0MCwgMHg5NDQzLCAweDMzRjQsIDB4OTQ0NCwgMHg5NDQ0LCAweDFGNzIsIDB4OTQ0NSwgMHg5NDRDLCAweDMzRjgsCisgICAgMHg5NDRELCAweDk0NEQsIDB4MjA5OCwgMHg5NDRFLCAweDk0NEYsIDB4MzQwMCwgMHg5NDUwLCAweDk0NTAsIDB4MUU1MiwKKyAgICAweDk0NTEsIDB4OTQ1MSwgMHgyMEE0LCAweDk0NTIsIDB4OTQ1MiwgMHgxRjFDLCAweDk0NTMsIDB4OTQ1MywgMHgyMjhGLAorICAgIDB4OTQ1NCwgMHg5NDU0LCAweDM0MDIsIDB4OTQ1NSwgMHg5NDU1LCAweDFGRUQsIDB4OTQ1NiwgMHg5NDU3LCAweDM0MDMsCisgICAgMHg5NDU4LCAweDk0NTgsIDB4MjM2NSwgMHg5NDU5LCAweDk0NUEsIDB4MzQwNSwgMHg5NDVCLCAweDk0NUIsIDB4MUUyRCwKKyAgICAweDk0NUMsIDB4OTQ1QywgMHgyMTUyLCAweDk0NUQsIDB4OTQ1RCwgMHgyMzY2LCAweDk0NUUsIDB4OTQ1RSwgMHgzNDA3LAorICAgIDB4OTQ1RiwgMHg5NDVGLCAweDIwRkEsIDB4OTQ2MCwgMHg5NDYzLCAweDM0MDgsIDB4OTQ2NCwgMHg5NDY0LCAweDIzNjMsCisgICAgMHg5NDY1LCAweDk0NjUsIDB4MzQwQywgMHg5NDY2LCAweDk0NjYsIDB4MjA5QSwgMHg5NDY3LCAweDk0NkQsIDB4MzQwRCwKKyAgICAweDk0NkUsIDB4OTQ2RSwgMHgyMDNDLCAweDk0NkYsIDB4OTQ3MSwgMHgzNDE0LCAweDk0NzIsIDB4OTQ3MiwgMHgxRkY2LAorICAgIDB4OTQ3MywgMHg5NDczLCAweDM0MTcsIDB4OTQ3NCwgMHg5NDc0LCAweDIzNjQsIDB4OTQ3NSwgMHg5NDc1LCAweDM0MTgsCisgICAgMHg5NDc2LCAweDk0NzYsIDB4MUU2OSwgMHg5NDc3LCAweDk0NzcsIDB4MzQxOSwgMHg5NDc4LCAweDk0NzgsIDB4MjM2NywKKyAgICAweDk0NzksIDB4OTQ3OSwgMHgzNDFBLCAweDk0N0EsIDB4OTQ3QSwgMHgyMTFELCAweDk0N0IsIDB4OTQ3RSwgMHgzNDFCLAorICAgIDB4OTQ4MCwgMHg5NDgwLCAweDIyNTksIDB4OTQ4MSwgMHg5NDgxLCAweDIwNTYsIDB4OTQ4MiwgMHg5NDgyLCAweDIxNjMsCisgICAgMHg5NDgzLCAweDk0ODYsIDB4MzQxRiwgMHg5NDg3LCAweDk0ODcsIDB4MUZBOSwgMHg5NDg4LCAweDk0ODgsIDB4MUZGQywKKyAgICAweDk0ODksIDB4OTRBMCwgMHgzNDIzLCAweDk0QTEsIDB4OTRBMSwgMHgxRTJFLCAweDk0QTIsIDB4OTRCMiwgMHgzNDNCLAorICAgIDB4OTRCMywgMHg5NEIzLCAweDFFQkMsIDB4OTRCNCwgMHg5NEI0LCAweDM0NEMsIDB4OTRCNSwgMHg5NEI1LCAweDIxNDIsCisgICAgMHg5NEI2LCAweDk0QkUsIDB4MzQ0RCwgMHg5NEJGLCAweDk0QkYsIDB4MjAxRSwgMHg5NEMwLCAweDk0QzAsIDB4MUU0MywKKyAgICAweDk0QzEsIDB4OTRDQiwgMHgzNDU2LCAweDk0Q0MsIDB4OTRDQywgMHgyNEQ0LCAweDk0Q0QsIDB4OTRENywgMHgzNDYxLAorICAgIDB4OTREOCwgMHg5NEQ4LCAweDIyNkYsIDB4OTREOSwgMHg5NERGLCAweDM0NkMsIDB4OTRFMCwgMHg5NEUwLCAweDFFRDcsCisgICAgMHg5NEUxLCAweDk0RkUsIDB4MzQ3MywgMHg5NTQwLCAweDk1NzEsIDB4MzQ5MSwgMHg5NTcyLCAweDk1NzIsIDB4MjEyRCwKKyAgICAweDk1NzMsIDB4OTU3RSwgMHgzNEMzLCAweDk1ODAsIDB4OTU4MiwgMHgzNENGLCAweDk1ODMsIDB4OTU4MywgMHgyMjlCLAorICAgIDB4OTU4NCwgMHg5NTlELCAweDM0RDIsIDB4OTU5RSwgMHg5NTlFLCAweDIyNTYsIDB4OTU5RiwgMHg5NTlGLCAweDI0QTgsCisgICAgMHg5NUEwLCAweDk1QjIsIDB4MzRFQywgMHg5NUIzLCAweDk1QjMsIDB4MUU3OSwgMHg5NUI0LCAweDk1QjksIDB4MzRGRiwKKyAgICAweDk1QkEsIDB4OTVCQSwgMHgyMjVBLCAweDk1QkIsIDB4OTVDRSwgMHgzNTA1LCAweDk1Q0YsIDB4OTVDRiwgMHgyNEE3LAorICAgIDB4OTVEMCwgMHg5NUQwLCAweDM1MTksIDB4OTVEMSwgMHg5NUQxLCAweDI2ODYsIDB4OTVEMiwgMHg5NUQyLCAweDI0QTYsCisgICAgMHg5NUQzLCAweDk1RDMsIDB4MzUxQSwgMHg5NUQ0LCAweDk1RDQsIDB4MjFDRSwgMHg5NUQ1LCAweDk1RTAsIDB4MzUxQiwKKyAgICAweDk1RTEsIDB4OTVFMSwgMHgyNEE5LCAweDk1RTIsIDB4OTVFNiwgMHgzNTI3LCAweDk1RTcsIDB4OTVFNywgMHgxRkU3LAorICAgIDB4OTVFOCwgMHg5NUYwLCAweDM1MkMsIDB4OTVGMSwgMHg5NUYxLCAweDIxMTIsIDB4OTVGMiwgMHg5NUY3LCAweDM1MzUsCisgICAgMHg5NUY4LCAweDk1RjgsIDB4MjEzQywgMHg5NUY5LCAweDk1RkQsIDB4MzUzQiwgMHg5NUZFLCAweDk1RkUsIDB4MUY1QywKKyAgICAweDk2NDAsIDB4OTY1NSwgMHgzNTQwLCAweDk2NTYsIDB4OTY1NiwgMHgyNEM0LCAweDk2NTcsIDB4OTY3QiwgMHgzNTU2LAorICAgIDB4OTY3QywgMHg5NjdDLCAweDFFQ0MsIDB4OTY3RCwgMHg5NjdFLCAweDM1N0IsIDB4OTY4MCwgMHg5NkZFLCAweDM1N0QsCisgICAgMHg5NzQwLCAweDk3NjYsIDB4MzVGQywgMHg5NzY3LCAweDk3NjcsIDB4MjQ2QSwgMHg5NzY4LCAweDk3NkIsIDB4MzYyMywKKyAgICAweDk3NkMsIDB4OTc2QywgMHgyMTc1LCAweDk3NkQsIDB4OTc2RCwgMHgzNjI3LCAweDk3NkUsIDB4OTc2RSwgMHgyNDZELAorICAgIDB4OTc2RiwgMHg5NzdFLCAweDM2MjgsIDB4OTc4MCwgMHg5Nzk1LCAweDM2MzgsIDB4OTc5NiwgMHg5Nzk2LCAweDI0NkIsCisgICAgMHg5Nzk3LCAweDk3OTcsIDB4MjI1RiwgMHg5Nzk4LCAweDk3OUMsIDB4MzY0RSwgMHg5NzlELCAweDk3OUQsIDB4MUVDRSwKKyAgICAweDk3OUUsIDB4OTdBMiwgMHgzNjUzLCAweDk3QTMsIDB4OTdBMywgMHgyMjcyLCAweDk3QTQsIDB4OTdCRSwgMHgzNjU4LAorICAgIDB4OTdCRiwgMHg5N0JGLCAweDI0NzMsIDB4OTdDMCwgMHg5N0VELCAweDM2NzMsIDB4OTdFRSwgMHg5N0VFLCAweDIxRkUsCisgICAgMHg5N0VGLCAweDk3RjYsIDB4MzZBMSwgMHg5N0Y3LCAweDk3RjcsIDB4MUVGRSwgMHg5N0Y4LCAweDk3RkUsIDB4MzZBOSwKKyAgICAweDk4NDAsIDB4OTg0NCwgMHgzNkIwLCAweDk4NDUsIDB4OTg0NSwgMHgyNDc1LCAweDk4NDYsIDB4OTg0OCwgMHgzNkI1LAorICAgIDB4OTg0OSwgMHg5ODQ5LCAweDIyMEEsIDB4OTg0QSwgMHg5ODRFLCAweDM2QjgsIDB4OTg0RiwgMHg5ODRGLCAweDFGNkYsCisgICAgMHg5ODUwLCAweDk4NzAsIDB4MzZCRCwgMHg5ODcxLCAweDk4NzEsIDB4MjQ2OCwgMHg5ODcyLCAweDk4NzIsIDB4MzZERSwKKyAgICAweDk4NzMsIDB4OTg3MywgMHgyMTAwLCAweDk4NzQsIDB4OTg3RSwgMHgzNkRGLCAweDk4ODAsIDB4OTg4MCwgMHgzNkVBLAorICAgIDB4OTg4MSwgMHg5ODgxLCAweDI0NzYsIDB4OTg4MiwgMHg5ODhBLCAweDM2RUIsIDB4OTg4QiwgMHg5ODhCLCAweDFGMjcsCisgICAgMHg5ODhDLCAweDk4OEMsIDB4MjBENywgMHg5ODhELCAweDk4OUYsIDB4MzZGNCwgMHg5OEEwLCAweDk4QTAsIDB4MjQ3QywKKyAgICAweDk4QTEsIDB4OThBOSwgMHgzNzA3LCAweDk4QUEsIDB4OThBQSwgMHgxRkExLCAweDk4QUIsIDB4OThCNSwgMHgzNzEwLAorICAgIDB4OThCNiwgMHg5OEI2LCAweDIyQUEsIDB4OThCNywgMHg5OEI3LCAweDIwMDUsIDB4OThCOCwgMHg5OEI5LCAweDM3MUIsCisgICAgMHg5OEJBLCAweDk4QkEsIDB4MjQ2QywgMHg5OEJCLCAweDk4QzYsIDB4MzcxRCwgMHg5OEM3LCAweDk4QzcsIDB4MjAzRSwKKyAgICAweDk4QzgsIDB4OThDQSwgMHgzNzI5LCAweDk4Q0IsIDB4OThDQiwgMHgxRTRDLCAweDk4Q0MsIDB4OThDRiwgMHgzNzJDLAorICAgIDB4OThEMCwgMHg5OEQwLCAweDIxM0EsIDB4OThEMSwgMHg5OEQyLCAweDM3MzAsIDB4OThEMywgMHg5OEQzLCAweDIyMDQsCisgICAgMHg5OEQ0LCAweDk4RTIsIDB4MzczMiwgMHg5OEUzLCAweDk4RTMsIDB4MjBDMywgMHg5OEU0LCAweDk4RTQsIDB4MjE0MCwKKyAgICAweDk4RTUsIDB4OThFNSwgMHgyNDc3LCAweDk4RTYsIDB4OThFRSwgMHgzNzQxLCAweDk4RUYsIDB4OThFRiwgMHgyNDc0LAorICAgIDB4OThGMCwgMHg5OEYxLCAweDM3NEEsIDB4OThGMiwgMHg5OEYyLCAweDIwREQsIDB4OThGMywgMHg5OEZFLCAweDM3NEMsCisgICAgMHg5OTQwLCAweDk5NDIsIDB4Mzc1OCwgMHg5OTQzLCAweDk5NDMsIDB4MUY2OCwgMHg5OTQ0LCAweDk5NDQsIDB4Mzc1QiwKKyAgICAweDk5NDUsIDB4OTk0NSwgMHgyMTg1LCAweDk5NDYsIDB4OTk2NSwgMHgzNzVDLCAweDk5NjYsIDB4OTk2NiwgMHgyNDcyLAorICAgIDB4OTk2NywgMHg5OTZELCAweDM3N0MsIDB4OTk2RSwgMHg5OTZFLCAweDFFQjUsIDB4OTk2RiwgMHg5OTc0LCAweDM3ODMsCisgICAgMHg5OTc1LCAweDk5NzUsIDB4MjQ3OCwgMHg5OTc2LCAweDk5NzksIDB4Mzc4OSwgMHg5OTdBLCAweDk5N0EsIDB4MUY4QiwKKyAgICAweDk5N0IsIDB4OTk3QiwgMHgyNDg0LCAweDk5N0MsIDB4OTk3RSwgMHgzNzhELCAweDk5ODAsIDB4OTk4NCwgMHgzNzkwLAorICAgIDB4OTk4NSwgMHg5OTg1LCAweDI2OTksIDB4OTk4NiwgMHg5OTg4LCAweDM3OTUsIDB4OTk4OSwgMHg5OTg5LCAweDI0ODIsCisgICAgMHg5OThBLCAweDk5OEQsIDB4Mzc5OCwgMHg5OThFLCAweDk5OEUsIDB4MjBBMSwgMHg5OThGLCAweDk5OTAsIDB4Mzc5QywKKyAgICAweDk5OTEsIDB4OTk5MSwgMHgxRjkyLCAweDk5OTIsIDB4OTk5OCwgMHgzNzlFLCAweDk5OTksIDB4OTk5OSwgMHgxRjM4LAorICAgIDB4OTk5QSwgMHg5OUE4LCAweDM3QTUsIDB4OTlBOSwgMHg5OUE5LCAweDI0ODUsIDB4OTlBQSwgMHg5OUFGLCAweDM3QjQsCisgICAgMHg5OUIwLCAweDk5QjAsIDB4MjQ4MCwgMHg5OUIxLCAweDk5QjEsIDB4MjQ2RSwgMHg5OUIyLCAweDk5QjIsIDB4MzdCQSwKKyAgICAweDk5QjMsIDB4OTlCMywgMHgyNDdCLCAweDk5QjQsIDB4OTlCNCwgMHgyNDg2LCAweDk5QjUsIDB4OTlCNSwgMHgyNDcxLAorICAgIDB4OTlCNiwgMHg5OUJDLCAweDM3QkIsIDB4OTlCRCwgMHg5OUJELCAweDI0ODMsIDB4OTlCRSwgMHg5OUJFLCAweDI0NzAsCisgICAgMHg5OUJGLCAweDk5QkYsIDB4MzdDMiwgMHg5OUMwLCAweDk5QzAsIDB4MjQ2OSwgMHg5OUMxLCAweDk5QzEsIDB4MzdDMywKKyAgICAweDk5QzIsIDB4OTlDMiwgMHgyNDdGLCAweDk5QzMsIDB4OTlDOCwgMHgzN0M0LCAweDk5QzksIDB4OTlDOSwgMHgyNDZGLAorICAgIDB4OTlDQSwgMHg5OUNELCAweDM3Q0EsIDB4OTlDRSwgMHg5OUNFLCAweDI0ODEsIDB4OTlDRiwgMHg5OUQwLCAweDM3Q0UsCisgICAgMHg5OUQxLCAweDk5RDEsIDB4MjIyMCwgMHg5OUQyLCAweDk5RDksIDB4MzdEMCwgMHg5OURBLCAweDk5REEsIDB4MUZGNSwKKyAgICAweDk5REIsIDB4OTlERiwgMHgzN0Q4LCAweDk5RTAsIDB4OTlFMCwgMHgyMEY0LCAweDk5RTEsIDB4OTlFNCwgMHgzN0RELAorICAgIDB4OTlFNSwgMHg5OUU1LCAweDI0N0QsIDB4OTlFNiwgMHg5OUU3LCAweDM3RTEsIDB4OTlFOCwgMHg5OUU4LCAweDI0NzksCisgICAgMHg5OUU5LCAweDk5RUIsIDB4MzdFMywgMHg5OUVDLCAweDk5RUMsIDB4MjQ3RSwgMHg5OUVELCAweDk5RjMsIDB4MzdFNiwKKyAgICAweDk5RjQsIDB4OTlGNCwgMHgyNDdBLCAweDk5RjUsIDB4OTlGRSwgMHgzN0VELCAweDlBNDAsIDB4OUE0OSwgMHgzN0Y3LAorICAgIDB4OUE0QSwgMHg5QTRBLCAweDIwRTMsIDB4OUE0QiwgMHg5QTU2LCAweDM4MDEsIDB4OUE1NywgMHg5QTU3LCAweDIwQUQsCisgICAgMHg5QTU4LCAweDlBNjQsIDB4MzgwRCwgMHg5QTY1LCAweDlBNjUsIDB4MjRDQiwgMHg5QTY2LCAweDlBNjYsIDB4MzgxQSwKKyAgICAweDlBNjcsIDB4OUE2NywgMHgxRjUzLCAweDlBNjgsIDB4OUE3MCwgMHgzODFCLCAweDlBNzEsIDB4OUE3MSwgMHgyMTU5LAorICAgIDB4OUE3MiwgMHg5QTc1LCAweDM4MjQsIDB4OUE3NiwgMHg5QTc2LCAweDIwMTMsIDB4OUE3NywgMHg5QTc3LCAweDFGMzMsCisgICAgMHg5QTc4LCAweDlBN0UsIDB4MzgyOCwgMHg5QTgwLCAweDlBODcsIDB4MzgyRiwgMHg5QTg4LCAweDlBODgsIDB4MUU1QywKKyAgICAweDlBODksIDB4OUE4QiwgMHgzODM3LCAweDlBOEMsIDB4OUE4QywgMHgyNDg4LCAweDlBOEQsIDB4OUE5MCwgMHgzODNBLAorICAgIDB4OUE5MSwgMHg5QTkxLCAweDI0ODcsIDB4OUE5MiwgMHg5QTk2LCAweDM4M0UsIDB4OUE5NywgMHg5QTk3LCAweDI0OEEsCisgICAgMHg5QTk4LCAweDlBOTksIDB4Mzg0MywgMHg5QTlBLCAweDlBOUEsIDB4MjQ4OSwgMHg5QTlCLCAweDlBOUIsIDB4MjQ4QiwKKyAgICAweDlBOUMsIDB4OUE5RCwgMHgzODQ1LCAweDlBOUUsIDB4OUE5RSwgMHgxRjgzLCAweDlBOUYsIDB4OUFBMSwgMHgzODQ3LAorICAgIDB4OUFBMiwgMHg5QUEyLCAweDIxMEYsIDB4OUFBMywgMHg5QUEzLCAweDFGREIsIDB4OUFBNCwgMHg5QUE5LCAweDM4NEEsCisgICAgMHg5QUFBLCAweDlBQUEsIDB4MjBBRiwgMHg5QUFCLCAweDlBQ0YsIDB4Mzg1MCwgMHg5QUQwLCAweDlBRDAsIDB4MjRDMCwKKyAgICAweDlBRDEsIDB4OUFENSwgMHgzODc1LCAweDlBRDYsIDB4OUFENiwgMHgyMjZELCAweDlBRDcsIDB4OUFEOSwgMHgzODdBLAorICAgIDB4OUFEQSwgMHg5QURBLCAweDI0QzEsIDB4OUFEQiwgMHg5QUUxLCAweDM4N0QsIDB4OUFFMiwgMHg5QUUyLCAweDIwQ0EsCisgICAgMHg5QUUzLCAweDlBRTMsIDB4Mzg4NCwgMHg5QUU0LCAweDlBRTQsIDB4MjBFNywgMHg5QUU1LCAweDlBRTUsIDB4MjRDMiwKKyAgICAweDlBRTYsIDB4OUFGRSwgMHgzODg1LCAweDlCNDAsIDB4OUI3RSwgMHgzODlFLCAweDlCODAsIDB4OUJEMCwgMHgzOERELAorICAgIDB4OUJEMSwgMHg5QkQxLCAweDIzREMsIDB4OUJEMiwgMHg5QkRCLCAweDM5MkUsIDB4OUJEQywgMHg5QkRDLCAweDIzREIsCisgICAgMHg5QkRELCAweDlCRkUsIDB4MzkzOCwgMHg5QzQwLCAweDlDNTIsIDB4Mzk1QSwgMHg5QzUzLCAweDlDNTMsIDB4MjA1RSwKKyAgICAweDlDNTQsIDB4OUM1OCwgMHgzOTZELCAweDlDNTksIDB4OUM1OSwgMHgyMjQ0LCAweDlDNUEsIDB4OUM1QSwgMHgyM0UyLAorICAgIDB4OUM1QiwgMHg5QzVCLCAweDM5NzIsIDB4OUM1QywgMHg5QzVDLCAweDIwRDQsIDB4OUM1RCwgMHg5Qzc0LCAweDM5NzMsCisgICAgMHg5Qzc1LCAweDlDNzUsIDB4MjE5RiwgMHg5Qzc2LCAweDlDNzgsIDB4Mzk4QiwgMHg5Qzc5LCAweDlDNzksIDB4MUU2NiwKKyAgICAweDlDN0EsIDB4OUM3RSwgMHgzOThFLCAweDlDODAsIDB4OUM4NSwgMHgzOTkzLCAweDlDODYsIDB4OUM4NiwgMHgxRjYzLAorICAgIDB4OUM4NywgMHg5QzlDLCAweDM5OTksIDB4OUM5RCwgMHg5QzlELCAweDIzREQsIDB4OUM5RSwgMHg5Q0FBLCAweDM5QUYsCisgICAgMHg5Q0FCLCAweDlDQUIsIDB4MjE2QiwgMHg5Q0FDLCAweDlDQzksIDB4MzlCQywgMHg5Q0NBLCAweDlDQ0EsIDB4MjJCNSwKKyAgICAweDlDQ0IsIDB4OUNDRSwgMHgzOURBLCAweDlDQ0YsIDB4OUNDRiwgMHgxRjI2LCAweDlDRDAsIDB4OUNFNSwgMHgzOURFLAorICAgIDB4OUNFNiwgMHg5Q0U2LCAweDFFNjMsIDB4OUNFNywgMHg5Q0U3LCAweDIwODgsIDB4OUNFOCwgMHg5Q0VCLCAweDM5RjQsCisgICAgMHg5Q0VDLCAweDlDRUMsIDB4MUVCRCwgMHg5Q0VELCAweDlDRUQsIDB4MzlGOCwgMHg5Q0VFLCAweDlDRUUsIDB4MjM0MSwKKyAgICAweDlDRUYsIDB4OUNGQSwgMHgzOUY5LCAweDlDRkIsIDB4OUNGQiwgMHgxRjRCLCAweDlDRkMsIDB4OUNGRCwgMHgzQTA1LAorICAgIDB4OUNGRSwgMHg5Q0ZFLCAweDIyOTIsIDB4OUQ0MCwgMHg5RDQxLCAweDNBMDcsIDB4OUQ0MiwgMHg5RDQyLCAweDIxMjQsCisgICAgMHg5RDQzLCAweDlENDUsIDB4M0EwOSwgMHg5RDQ2LCAweDlENDYsIDB4MjA0OCwgMHg5RDQ3LCAweDlENDcsIDB4MjNFMCwKKyAgICAweDlENDgsIDB4OUQ0QywgMHgzQTBDLCAweDlENEQsIDB4OUQ0RCwgMHgyMDc3LCAweDlENEUsIDB4OUQ0RSwgMHgzQTExLAorICAgIDB4OUQ0RiwgMHg5RDRGLCAweDIyM0EsIDB4OUQ1MCwgMHg5RDYwLCAweDNBMTIsIDB4OUQ2MSwgMHg5RDYxLCAweDIwQjEsCisgICAgMHg5RDYyLCAweDlENjcsIDB4M0EyMywgMHg5RDY4LCAweDlENjgsIDB4MUY0MSwgMHg5RDY5LCAweDlENjksIDB4MjAxQywKKyAgICAweDlENkEsIDB4OUQ2RCwgMHgzQTI5LCAweDlENkUsIDB4OUQ2RSwgMHgyMkI4LCAweDlENkYsIDB4OUQ3MCwgMHgzQTJELAorICAgIDB4OUQ3MSwgMHg5RDcxLCAweDIyNzYsIDB4OUQ3MiwgMHg5RDc0LCAweDNBMkYsIDB4OUQ3NSwgMHg5RDc1LCAweDFGOUIsCisgICAgMHg5RDc2LCAweDlEN0EsIDB4M0EzMiwgMHg5RDdCLCAweDlEN0IsIDB4MUY5RiwgMHg5RDdDLCAweDlEN0MsIDB4M0EzNywKKyAgICAweDlEN0QsIDB4OUQ3RCwgMHgyNUNBLCAweDlEN0UsIDB4OUQ3RSwgMHgzQTM4LCAweDlEODAsIDB4OUQ4OSwgMHgzQTM5LAorICAgIDB4OUQ4QSwgMHg5RDhBLCAweDIwQkUsIDB4OUQ4QiwgMHg5RDhDLCAweDNBNDMsIDB4OUQ4RCwgMHg5RDhELCAweDFGQjQsCisgICAgMHg5RDhFLCAweDlEOTAsIDB4M0E0NSwgMHg5RDkxLCAweDlEOTEsIDB4MjNENywgMHg5RDkyLCAweDlEOTgsIDB4M0E0OCwKKyAgICAweDlEOTksIDB4OUQ5OSwgMHgyMTA1LCAweDlEOUEsIDB4OURBMCwgMHgzQTRGLCAweDlEQTEsIDB4OURBMSwgMHgyM0UxLAorICAgIDB4OURBMiwgMHg5REEyLCAweDFGRUMsIDB4OURBMywgMHg5REE2LCAweDNBNTYsIDB4OURBNywgMHg5REE3LCAweDIzRUEsCisgICAgMHg5REE4LCAweDlEQUIsIDB4M0E1QSwgMHg5REFDLCAweDlEQUMsIDB4MjNFMywgMHg5REFELCAweDlEQUQsIDB4MjEwRSwKKyAgICAweDlEQUUsIDB4OURCMSwgMHgzQTVFLCAweDlEQjIsIDB4OURCMiwgMHgxRkE2LCAweDlEQjMsIDB4OURCMywgMHgyMDA0LAorICAgIDB4OURCNCwgMHg5REJELCAweDNBNjIsIDB4OURCRSwgMHg5REJFLCAweDFGOUQsIDB4OURCRiwgMHg5REM1LCAweDNBNkMsCisgICAgMHg5REM2LCAweDlEQzYsIDB4MjNFNSwgMHg5REM3LCAweDlEQzgsIDB4M0E3MywgMHg5REM5LCAweDlEQzksIDB4MjI2NCwKKyAgICAweDlEQ0EsIDB4OURDQywgMHgzQTc1LCAweDlEQ0QsIDB4OURDRCwgMHgyNEUyLCAweDlEQ0UsIDB4OUREMSwgMHgzQTc4LAorICAgIDB4OUREMiwgMHg5REQyLCAweDIzREUsIDB4OUREMywgMHg5REQ0LCAweDNBN0MsIDB4OURENSwgMHg5REQ1LCAweDFFQzQsCisgICAgMHg5REQ2LCAweDlERTAsIDB4M0E3RSwgMHg5REUxLCAweDlERTEsIDB4MjJCNiwgMHg5REUyLCAweDlERTIsIDB4MjBBOSwKKyAgICAweDlERTMsIDB4OURGMCwgMHgzQTg5LCAweDlERjEsIDB4OURGMSwgMHgyMTJCLCAweDlERjIsIDB4OURGMywgMHgzQTk3LAorICAgIDB4OURGNCwgMHg5REY0LCAweDIwQTUsIDB4OURGNSwgMHg5REY2LCAweDNBOTksIDB4OURGNywgMHg5REY3LCAweDI2OEIsCisgICAgMHg5REY4LCAweDlERjksIDB4M0E5QiwgMHg5REZBLCAweDlERkEsIDB4MUY3NiwgMHg5REZCLCAweDlERkMsIDB4M0E5RCwKKyAgICAweDlERkQsIDB4OURGRCwgMHgyMTZELCAweDlERkUsIDB4OURGRSwgMHgzQTlGLCAweDlFNDAsIDB4OUU0NCwgMHgzQUEwLAorICAgIDB4OUU0NSwgMHg5RTQ1LCAweDIwMDEsIDB4OUU0NiwgMHg5RTQ3LCAweDNBQTUsIDB4OUU0OCwgMHg5RTQ4LCAweDIxOTEsCisgICAgMHg5RTQ5LCAweDlFNDksIDB4MUU1MCwgMHg5RTRBLCAweDlFNTEsIDB4M0FBNywgMHg5RTUyLCAweDlFNTIsIDB4MUY5QywKKyAgICAweDlFNTMsIDB4OUU1MywgMHgzQUFGLCAweDlFNTQsIDB4OUU1NCwgMHgyM0RBLCAweDlFNTUsIDB4OUU1NSwgMHgzQUIwLAorICAgIDB4OUU1NiwgMHg5RTU2LCAweDIwNTMsIDB4OUU1NywgMHg5RTVDLCAweDNBQjEsIDB4OUU1RCwgMHg5RTVELCAweDIzRTksCisgICAgMHg5RTVFLCAweDlFNUUsIDB4MjNFNCwgMHg5RTVGLCAweDlFNjAsIDB4M0FCNywgMHg5RTYxLCAweDlFNjEsIDB4MjFENSwKKyAgICAweDlFNjIsIDB4OUU2MiwgMHgzQUI5LCAweDlFNjMsIDB4OUU2MywgMHgyM0U2LCAweDlFNjQsIDB4OUU2NiwgMHgzQUJBLAorICAgIDB4OUU2NywgMHg5RTY3LCAweDIzREYsIDB4OUU2OCwgMHg5RTZCLCAweDNBQkQsIDB4OUU2QywgMHg5RTZDLCAweDFFNEYsCisgICAgMHg5RTZELCAweDlFNkUsIDB4M0FDMSwgMHg5RTZGLCAweDlFNkYsIDB4MjNEOSwgMHg5RTcwLCAweDlFNzEsIDB4M0FDMywKKyAgICAweDlFNzIsIDB4OUU3MiwgMHgyMDE0LCAweDlFNzMsIDB4OUU3MywgMHgzQUM1LCAweDlFNzQsIDB4OUU3NCwgMHgyM0VDLAorICAgIDB4OUU3NSwgMHg5RTc1LCAweDIzRUIsIDB4OUU3NiwgMHg5RTdBLCAweDNBQzYsIDB4OUU3QiwgMHg5RTdCLCAweDIzRDgsCisgICAgMHg5RTdDLCAweDlFN0MsIDB4MjNFRSwgMHg5RTdELCAweDlFN0UsIDB4M0FDQiwgMHg5RTgwLCAweDlFODQsIDB4M0FDRCwKKyAgICAweDlFODUsIDB4OUU4NSwgMHgyNjhFLCAweDlFODYsIDB4OUU4NiwgMHgzQUQyLCAweDlFODcsIDB4OUU4NywgMHgyM0VELAorICAgIDB4OUU4OCwgMHg5RTkwLCAweDNBRDMsIDB4OUU5MSwgMHg5RTkxLCAweDFGRkEsIDB4OUU5MiwgMHg5RTk1LCAweDNBREMsCisgICAgMHg5RTk2LCAweDlFOTYsIDB4MjNENiwgMHg5RTk3LCAweDlFOTcsIDB4MjNFOCwgMHg5RTk4LCAweDlFQTEsIDB4M0FFMCwKKyAgICAweDlFQTIsIDB4OUVBMiwgMHgyMTA2LCAweDlFQTMsIDB4OUVBNSwgMHgzQUVBLCAweDlFQTYsIDB4OUVBNiwgMHgyMDBCLAorICAgIDB4OUVBNywgMHg5RUE4LCAweDNBRUQsIDB4OUVBOSwgMHg5RUE5LCAweDIxNjYsIDB4OUVBQSwgMHg5RUFELCAweDNBRUYsCisgICAgMHg5RUFFLCAweDlFQUUsIDB4MjNFRiwgMHg5RUFGLCAweDlFQjIsIDB4M0FGMywgMHg5RUIzLCAweDlFQjMsIDB4MjE4OSwKKyAgICAweDlFQjQsIDB4OUVCNCwgMHgyMDU4LCAweDlFQjUsIDB4OUVCNiwgMHgzQUY3LCAweDlFQjcsIDB4OUVCNywgMHgyM0U3LAorICAgIDB4OUVCOCwgMHg5RUY0LCAweDNBRjksIDB4OUVGNSwgMHg5RUY1LCAweDIxQTMsIDB4OUVGNiwgMHg5RUZFLCAweDNCMzYsCisgICAgMHg5RjQwLCAweDlGNEQsIDB4M0IzRiwgMHg5RjRFLCAweDlGNEUsIDB4MjE3QSwgMHg5RjRGLCAweDlGNkUsIDB4M0I0RCwKKyAgICAweDlGNkYsIDB4OUY2RiwgMHgyMUE1LCAweDlGNzAsIDB4OUY3RSwgMHgzQjZELCAweDlGODAsIDB4OUY5MSwgMHgzQjdDLAorICAgIDB4OUY5MiwgMHg5RjkyLCAweDIwMjIsIDB4OUY5MywgMHg5Rjk3LCAweDNCOEUsIDB4OUY5OCwgMHg5Rjk4LCAweDI0RDYsCisgICAgMHg5Rjk5LCAweDlGQTUsIDB4M0I5MywgMHg5RkE2LCAweDlGQTYsIDB4MjMzQSwgMHg5RkE3LCAweDlGQTgsIDB4M0JBMCwKKyAgICAweDlGQTksIDB4OUZBOSwgMHgxRUVFLCAweDlGQUEsIDB4OUZBQiwgMHgzQkEyLCAweDlGQUMsIDB4OUZBQywgMHgyNEQ1LAorICAgIDB4OUZBRCwgMHg5RkM4LCAweDNCQTQsIDB4OUZDOSwgMHg5RkM5LCAweDIyMjgsIDB4OUZDQSwgMHg5RkNDLCAweDNCQzAsCisgICAgMHg5RkNELCAweDlGQ0QsIDB4MjRENywgMHg5RkNFLCAweDlGRTAsIDB4M0JDMywgMHg5RkUxLCAweDlGRTEsIDB4MjBGQywKKyAgICAweDlGRTIsIDB4OUZFQSwgMHgzQkQ2LCAweDlGRUIsIDB4OUZFQiwgMHgxRTg3LCAweDlGRUMsIDB4OUZFRCwgMHgzQkRGLAorICAgIDB4OUZFRSwgMHg5RkVFLCAweDI0RDgsIDB4OUZFRiwgMHg5RkYzLCAweDNCRTEsIDB4OUZGNCwgMHg5RkY0LCAweDFFQkEsCisgICAgMHg5RkY1LCAweDlGRkMsIDB4M0JFNiwgMHg5RkZELCAweDlGRkQsIDB4MjExOSwgMHg5RkZFLCAweDlGRkUsIDB4M0JFRSwKKyAgICAweEEwNDAsIDB4QTA0MiwgMHgzQkVGLCAweEEwNDMsIDB4QTA0MywgMHgyMTZDLCAweEEwNDQsIDB4QTA0NSwgMHgzQkYyLAorICAgIDB4QTA0NiwgMHhBMDQ2LCAweDI0RDksIDB4QTA0NywgMHhBMDQ4LCAweDNCRjQsIDB4QTA0OSwgMHhBMDQ5LCAweDIyMjcsCisgICAgMHhBMDRBLCAweEEwNEQsIDB4M0JGNiwgMHhBMDRFLCAweEEwNEUsIDB4MUU1RiwgMHhBMDRGLCAweEEwNTMsIDB4M0JGQSwKKyAgICAweEEwNTQsIDB4QTA1NCwgMHgyMjlGLCAweEEwNTUsIDB4QTA1OSwgMHgzQkZGLCAweEEwNUEsIDB4QTA1QSwgMHgxRjVELAorICAgIDB4QTA1QiwgMHhBMDYwLCAweDNDMDQsIDB4QTA2MSwgMHhBMDYxLCAweDFGQkMsIDB4QTA2MiwgMHhBMDYyLCAweDNDMEEsCisgICAgMHhBMDYzLCAweEEwNjMsIDB4MjREQSwgMHhBMDY0LCAweEEwNzAsIDB4M0MwQiwgMHhBMDcxLCAweEEwNzEsIDB4MjE0OSwKKyAgICAweEEwNzIsIDB4QTA3MywgMHgzQzE4LCAweEEwNzQsIDB4QTA3NCwgMHgyMDQ2LCAweEEwNzUsIDB4QTA3RSwgMHgzQzFBLAorICAgIDB4QTA4MCwgMHhBMDgwLCAweDIwMDAsIDB4QTA4MSwgMHhBMDkwLCAweDNDMjQsIDB4QTA5MSwgMHhBMDkxLCAweDIxOTAsCisgICAgMHhBMDkyLCAweEEwOTMsIDB4M0MzNCwgMHhBMDk0LCAweEEwOTQsIDB4MjIwOCwgMHhBMDk1LCAweEEwOTUsIDB4M0MzNiwKKyAgICAweEEwOTYsIDB4QTA5NiwgMHgxRUU2LCAweEEwOTcsIDB4QTBBOCwgMHgzQzM3LCAweEEwQTksIDB4QTBBOSwgMHgyNEMzLAorICAgIDB4QTBBQSwgMHhBMEJFLCAweDNDNDksIDB4QTBCRiwgMHhBMEJGLCAweDIwQ0MsIDB4QTBDMCwgMHhBMENELCAweDNDNUUsCisgICAgMHhBMENFLCAweEEwQ0UsIDB4MjM0MCwgMHhBMENGLCAweEEwRDgsIDB4M0M2QywgMHhBMEQ5LCAweEEwRDksIDB4MUVEMSwKKyAgICAweEEwREEsIDB4QTBERCwgMHgzQzc2LCAweEEwREUsIDB4QTBERSwgMHgyMUFDLCAweEEwREYsIDB4QTBFRCwgMHgzQzdBLAorICAgIDB4QTBFRSwgMHhBMEVFLCAweDIyQUYsIDB4QTBFRiwgMHhBMEZFLCAweDNDODksIDB4QTFBMSwgMHhBMUZFLCAweDAwNjAsCisgICAgMHhBMkExLCAweEEyQUEsIDB4MjZBOSwgMHhBMkIxLCAweEEyRTIsIDB4MDBCRSwgMHhBMkUzLCAweEEyRTMsIDB4NTc1MSwKKyAgICAweEEyRTUsIDB4QTJFRSwgMHgwMEYwLCAweEEyRjEsIDB4QTJGQywgMHgwMEZBLCAweEEzQTEsIDB4QTNGRSwgMHgwMTA2LAorICAgIDB4QTRBMSwgMHhBNEYzLCAweDAxNjQsIDB4QTVBMSwgMHhBNUY2LCAweDAxQjcsIDB4QTZBMSwgMHhBNkI4LCAweDAyMEQsCisgICAgMHhBNkMxLCAweEE2RjUsIDB4MDIyNSwgMHhBN0ExLCAweEE3QzEsIDB4MDI1QSwgMHhBN0QxLCAweEE3RjEsIDB4MDI3QiwKKyAgICAweEE4NDAsIDB4QTg3RSwgMHgyNkIzLCAweEE4ODAsIDB4QTg5NSwgMHgyNkYyLCAweEE4QTEsIDB4QThDMCwgMHgwMjlDLAorICAgIDB4QThDNSwgMHhBOEVBLCAweDAyQkMsIDB4QTk0MCwgMHhBOTU3LCAweDI3MDgsIDB4QTk1OSwgMHhBOTVBLCAweDI3MjAsCisgICAgMHhBOTVDLCAweEE5NUMsIDB4MjcyMiwgMHhBOTYwLCAweEE5N0UsIDB4MjcyMywgMHhBOTgwLCAweEE5OTUsIDB4Mjc0MiwKKyAgICAweEE5OTYsIDB4QTk5NiwgMHgxRTE3LCAweEE5QTQsIDB4QTlFRiwgMHgwMkUyLCAweEFBNDAsIDB4QUE0QywgMHgzQzk5LAorICAgIDB4QUE0RCwgMHhBQTRELCAweDIxQjYsIDB4QUE0RSwgMHhBQTRFLCAweDFFM0QsIDB4QUE0RiwgMHhBQTcwLCAweDNDQTYsCisgICAgMHhBQTcxLCAweEFBNzEsIDB4MjIzNSwgMHhBQTcyLCAweEFBNzIsIDB4M0NDOCwgMHhBQTczLCAweEFBNzMsIDB4MjM5NywKKyAgICAweEFBNzQsIDB4QUE3NiwgMHgzQ0M5LCAweEFBNzcsIDB4QUE3NywgMHgyMzk1LCAweEFBNzgsIDB4QUE3OSwgMHgzQ0NDLAorICAgIDB4QUE3QSwgMHhBQTdBLCAweDIyM0YsIDB4QUE3QiwgMHhBQTdCLCAweDIxMkEsIDB4QUE3QywgMHhBQTdFLCAweDNDQ0UsCisgICAgMHhBQTgwLCAweEFBOTksIDB4M0NEMSwgMHhBQTlBLCAweEFBOUEsIDB4MUVEMiwgMHhBQTlCLCAweEFBOUIsIDB4M0NFQiwKKyAgICAweEFBOUMsIDB4QUE5QywgMHgyMzk2LCAweEFBOUQsIDB4QUE5RCwgMHgyMzk4LCAweEFBOUUsIDB4QUE5RSwgMHgzQ0VDLAorICAgIDB4QUE5RiwgMHhBQTlGLCAweDIwQTIsIDB4QUFBMCwgMHhBQUEwLCAweDNDRUQsIDB4QUFBMSwgMHhBQUZFLCAweDAzMkUsCisgICAgMHhBQjQwLCAweEFCNDAsIDB4MUY2NCwgMHhBQjQxLCAweEFCNDIsIDB4M0NFRSwgMHhBQjQzLCAweEFCNDMsIDB4MjAyQiwKKyAgICAweEFCNDQsIDB4QUI0NCwgMHgzQ0YwLCAweEFCNDUsIDB4QUI0NSwgMHgyMzk0LCAweEFCNDYsIDB4QUI0NiwgMHgyMTM5LAorICAgIDB4QUI0NywgMHhBQjQ3LCAweDNDRjEsIDB4QUI0OCwgMHhBQjQ4LCAweDIxNUYsIDB4QUI0OSwgMHhBQjQ5LCAweDIxQzEsCisgICAgMHhBQjRBLCAweEFCNEEsIDB4MjM5QSwgMHhBQjRCLCAweEFCNEMsIDB4M0NGMiwgMHhBQjRELCAweEFCNEQsIDB4MjM5OSwKKyAgICAweEFCNEUsIDB4QUI3RSwgMHgzQ0Y0LCAweEFCODAsIDB4QUJBMCwgMHgzRDI1LCAweEFCQTEsIDB4QUJDMCwgMHgwMzhDLAorICAgIDB4QUM0MCwgMHhBQzQ1LCAweDNENDYsIDB4QUM0NiwgMHhBQzQ2LCAweDIxQzAsIDB4QUM0NywgMHhBQzcwLCAweDNENEMsCisgICAgMHhBQzcxLCAweEFDNzEsIDB4MjQ2MCwgMHhBQzcyLCAweEFDN0IsIDB4M0Q3NiwgMHhBQzdDLCAweEFDN0MsIDB4MjQ1QywKKyAgICAweEFDN0QsIDB4QUM3RSwgMHgzRDgwLCAweEFDODAsIDB4QUM4QywgMHgzRDgyLCAweEFDOEQsIDB4QUM4RCwgMHgyMTVELAorICAgIDB4QUM4RSwgMHhBQzkyLCAweDNEOEYsIDB4QUM5MywgMHhBQzkzLCAweDIyMjUsIDB4QUM5NCwgMHhBQzk0LCAweDIwNkEsCisgICAgMHhBQzk1LCAweEFDQTAsIDB4M0Q5NCwgMHhBRDQwLCAweEFENDgsIDB4M0RBMCwgMHhBRDQ5LCAweEFENDksIDB4MjQ2MSwKKyAgICAweEFENEEsIDB4QUQ1RCwgMHgzREE5LCAweEFENUUsIDB4QUQ1RSwgMHgyNDVCLCAweEFENUYsIDB4QUQ2MCwgMHgzREJELAorICAgIDB4QUQ2MSwgMHhBRDYxLCAweDI0NjIsIDB4QUQ2MiwgMHhBRDY3LCAweDNEQkYsIDB4QUQ2OCwgMHhBRDY4LCAweDFGNTQsCisgICAgMHhBRDY5LCAweEFENzMsIDB4M0RDNSwgMHhBRDc0LCAweEFENzQsIDB4MjQ1RiwgMHhBRDc1LCAweEFEN0UsIDB4M0REMCwKKyAgICAweEFEODAsIDB4QUQ4MSwgMHgzRERBLCAweEFEODIsIDB4QUQ4MiwgMHgyMEVDLCAweEFEODMsIDB4QUQ4NiwgMHgzRERDLAorICAgIDB4QUQ4NywgMHhBRDg3LCAweDI0NUQsIDB4QUQ4OCwgMHhBRDhBLCAweDNERTAsIDB4QUQ4QiwgMHhBRDhCLCAweDI0NjMsCisgICAgMHhBRDhDLCAweEFEOTAsIDB4M0RFMywgMHhBRDkxLCAweEFEOTEsIDB4MjQ2NCwgMHhBRDkyLCAweEFEQTAsIDB4M0RFOCwKKyAgICAweEFFNDAsIDB4QUU1MywgMHgzREY3LCAweEFFNTQsIDB4QUU1NCwgMHgyNEE1LCAweEFFNTUsIDB4QUU2MSwgMHgzRTBCLAorICAgIDB4QUU2MiwgMHhBRTYyLCAweDFFNzAsIDB4QUU2MywgMHhBRTdFLCAweDNFMTgsIDB4QUU4MCwgMHhBRTgwLCAweDIwOEYsCisgICAgMHhBRTgxLCAweEFFODQsIDB4M0UzNCwgMHhBRTg1LCAweEFFODUsIDB4MUU0MiwgMHhBRTg2LCAweEFFOEEsIDB4M0UzOCwKKyAgICAweEFFOEIsIDB4QUU4QiwgMHgxRjRFLCAweEFFOEMsIDB4QUU5MywgMHgzRTNELCAweEFFOTQsIDB4QUU5NCwgMHgxRUIxLAorICAgIDB4QUU5NSwgMHhBRTlGLCAweDNFNDUsIDB4QUVBMCwgMHhBRUEwLCAweDFFOEIsIDB4QUY0MCwgMHhBRjYzLCAweDNFNTAsCisgICAgMHhBRjY0LCAweEFGNjQsIDB4MUZDNiwgMHhBRjY1LCAweEFGN0EsIDB4M0U3NCwgMHhBRjdCLCAweEFGN0IsIDB4MjVBRSwKKyAgICAweEFGN0MsIDB4QUY3RSwgMHgzRThBLCAweEFGODAsIDB4QUY4MSwgMHgzRThELCAweEFGODIsIDB4QUY4MiwgMHgxRjAxLAorICAgIDB4QUY4MywgMHhBRjgzLCAweDIyMDAsIDB4QUY4NCwgMHhBRjhELCAweDNFOEYsIDB4QUY4RSwgMHhBRjhFLCAweDI1QjIsCisgICAgMHhBRjhGLCAweEFGOEYsIDB4MUU5NywgMHhBRjkwLCAweEFGOTAsIDB4M0U5OSwgMHhBRjkxLCAweEFGOTEsIDB4MjBBQiwKKyAgICAweEFGOTIsIDB4QUY5QiwgMHgzRTlBLCAweEFGOUMsIDB4QUY5QywgMHgyNUIzLCAweEFGOUQsIDB4QUY5RSwgMHgzRUE0LAorICAgIDB4QUY5RiwgMHhBRjlGLCAweDIwMjgsIDB4QUZBMCwgMHhBRkEwLCAweDNFQTYsIDB4QjA0MCwgMHhCMDQwLCAweDNFQTcsCisgICAgMHhCMDQxLCAweEIwNDIsIDB4MjVBRiwgMHhCMDQzLCAweEIwNDMsIDB4M0VBOCwgMHhCMDQ0LCAweEIwNDQsIDB4MjVCMSwKKyAgICAweEIwNDUsIDB4QjA0RSwgMHgzRUE5LCAweEIwNEYsIDB4QjA0RiwgMHgyNUFDLCAweEIwNTAsIDB4QjA1MywgMHgzRUIzLAorICAgIDB4QjA1NCwgMHhCMDU0LCAweDFFNEUsIDB4QjA1NSwgMHhCMDU2LCAweDNFQjcsIDB4QjA1NywgMHhCMDU3LCAweDIyMDIsCisgICAgMHhCMDU4LCAweEIwNTgsIDB4MjVBQiwgMHhCMDU5LCAweEIwNTksIDB4MjI4NiwgMHhCMDVBLCAweEIwNUEsIDB4M0VCOSwKKyAgICAweEIwNUIsIDB4QjA1QiwgMHgyNUFELCAweEIwNUMsIDB4QjA1QywgMHgzRUJBLCAweEIwNUQsIDB4QjA1RCwgMHgyNUI2LAorICAgIDB4QjA1RSwgMHhCMDVFLCAweDNFQkIsIDB4QjA1RiwgMHhCMDVGLCAweDIxRTMsIDB4QjA2MCwgMHhCMDYxLCAweDI1QjQsCisgICAgMHhCMDYyLCAweEIwNjIsIDB4MjIyRiwgMHhCMDYzLCAweEIwNjMsIDB4MjE2NSwgMHhCMDY0LCAweEIwNjQsIDB4MjVCNywKKyAgICAweEIwNjUsIDB4QjA2QiwgMHgzRUJDLCAweEIwNkMsIDB4QjA2QywgMHgxRUU5LCAweEIwNkQsIDB4QjA3QywgMHgzRUMzLAorICAgIDB4QjA3RCwgMHhCMDdELCAweDFFMjUsIDB4QjA3RSwgMHhCMDdFLCAweDNFRDMsIDB4QjA4MCwgMHhCMDk2LCAweDNFRDQsCisgICAgMHhCMDk3LCAweEIwOTcsIDB4MjVDMCwgMHhCMDk4LCAweEIwOTgsIDB4M0VFQiwgMHhCMDk5LCAweEIwOTksIDB4MjI5QSwKKyAgICAweEIwOUEsIDB4QjBBMCwgMHgzRUVDLCAweEIwQTEsIDB4QjBGRSwgMHgwM0FDLCAweEIxNDAsIDB4QjE0QSwgMHgzRUYzLAorICAgIDB4QjE0QiwgMHhCMTRCLCAweDIyNkUsIDB4QjE0QywgMHhCMTRDLCAweDNFRkUsIDB4QjE0RCwgMHhCMTRELCAweDFGQkQsCisgICAgMHhCMTRFLCAweEIxNEUsIDB4M0VGRiwgMHhCMTRGLCAweEIxNEYsIDB4MUY4NCwgMHhCMTUwLCAweEIxNTAsIDB4MjBCMiwKKyAgICAweEIxNTEsIDB4QjE1MSwgMHgzRjAwLCAweEIxNTIsIDB4QjE1MiwgMHgyMDQzLCAweEIxNTMsIDB4QjE3RSwgMHgzRjAxLAorICAgIDB4QjE4MCwgMHhCMTk2LCAweDNGMkQsIDB4QjE5NywgMHhCMTk3LCAweDI2ODQsIDB4QjE5OCwgMHhCMUEwLCAweDNGNDQsCisgICAgMHhCMUExLCAweEIxRkUsIDB4MDQwQSwgMHhCMjQwLCAweEIyNDAsIDB4M0Y0RCwgMHhCMjQxLCAweEIyNDEsIDB4MjRFRiwKKyAgICAweEIyNDIsIDB4QjI2NiwgMHgzRjRFLCAweEIyNjcsIDB4QjI2NywgMHgyNEVFLCAweEIyNjgsIDB4QjI2QywgMHgzRjczLAorICAgIDB4QjI2RCwgMHhCMjZELCAweDIwNzQsIDB4QjI2RSwgMHhCMjczLCAweDNGNzgsIDB4QjI3NCwgMHhCMjc0LCAweDI2ODcsCisgICAgMHhCMjc1LCAweEIyN0UsIDB4M0Y3RSwgMHhCMjgwLCAweEIyODAsIDB4MjRGMCwgMHhCMjgxLCAweEIyODgsIDB4M0Y4OCwKKyAgICAweEIyODksIDB4QjI4OSwgMHgyNjhELCAweEIyOEEsIDB4QjI5OSwgMHgzRjkwLCAweEIyOUEsIDB4QjI5QSwgMHgyMkEwLAorICAgIDB4QjI5QiwgMHhCMkEwLCAweDNGQTAsIDB4QjJBMSwgMHhCMkZFLCAweDA0NjgsIDB4QjM0MCwgMHhCMzQyLCAweDNGQTYsCisgICAgMHhCMzQzLCAweEIzNDMsIDB4MUZBQiwgMHhCMzQ0LCAweEIzNkYsIDB4M0ZBOSwgMHhCMzcwLCAweEIzNzAsIDB4MjZBOCwKKyAgICAweEIzNzEsIDB4QjM3RSwgMHgzRkQ1LCAweEIzODAsIDB4QjM4NywgMHgzRkUzLCAweEIzODgsIDB4QjM4OCwgMHgyNEU5LAorICAgIDB4QjM4OSwgMHhCMzhCLCAweDNGRUIsIDB4QjM4QywgMHhCMzhDLCAweDI0RTUsIDB4QjM4RCwgMHhCMzhELCAweDNGRUUsCisgICAgMHhCMzhFLCAweEIzOEUsIDB4MjFGQSwgMHhCMzhGLCAweEIzQTAsIDB4M0ZFRiwgMHhCM0ExLCAweEIzRkUsIDB4MDRDNiwKKyAgICAweEI0NDAsIDB4QjQ1MywgMHg0MDAxLCAweEI0NTQsIDB4QjQ1NCwgMHgyMTQ4LCAweEI0NTUsIDB4QjQ1NywgMHg0MDE1LAorICAgIDB4QjQ1OCwgMHhCNDU4LCAweDI0RTQsIDB4QjQ1OSwgMHhCNDVELCAweDQwMTgsIDB4QjQ1RSwgMHhCNDVFLCAweDI0RTYsCisgICAgMHhCNDVGLCAweEI0NUYsIDB4MjBGNywgMHhCNDYwLCAweEI0NjAsIDB4NDAxRCwgMHhCNDYxLCAweEI0NjEsIDB4MjA2QiwKKyAgICAweEI0NjIsIDB4QjQ3NCwgMHg0MDFFLCAweEI0NzUsIDB4QjQ3NSwgMHgyMkE3LCAweEI0NzYsIDB4QjQ3RCwgMHg0MDMxLAorICAgIDB4QjQ3RSwgMHhCNDdFLCAweDI0RUMsIDB4QjQ4MCwgMHhCNDgyLCAweDQwMzksIDB4QjQ4MywgMHhCNDgzLCAweDI0RUIsCisgICAgMHhCNDg0LCAweEI0ODgsIDB4NDAzQywgMHhCNDg5LCAweEI0ODksIDB4MjRFMywgMHhCNDhBLCAweEI0OTIsIDB4NDA0MSwKKyAgICAweEI0OTMsIDB4QjQ5MywgMHgyNEVBLCAweEI0OTQsIDB4QjRBMCwgMHg0MDRBLCAweEI0QTEsIDB4QjRGRSwgMHgwNTI0LAorICAgIDB4QjU0MCwgMHhCNTQwLCAweDQwNTcsIDB4QjU0MSwgMHhCNTQxLCAweDFFOTIsIDB4QjU0MiwgMHhCNTRBLCAweDQwNTgsCisgICAgMHhCNTRCLCAweEI1NEIsIDB4MUUyNywgMHhCNTRDLCAweEI1NTUsIDB4NDA2MSwgMHhCNTU2LCAweEI1NTYsIDB4MUZFNiwKKyAgICAweEI1NTcsIDB4QjU1OSwgMHg0MDZCLCAweEI1NUEsIDB4QjU1QSwgMHgyNEU3LCAweEI1NUIsIDB4QjU1QiwgMHgyMDEyLAorICAgIDB4QjU1QywgMHhCNTVDLCAweDFFRUMsIDB4QjU1RCwgMHhCNTYwLCAweDQwNkUsIDB4QjU2MSwgMHhCNTYxLCAweDI0RTgsCisgICAgMHhCNTYyLCAweEI1N0UsIDB4NDA3MiwgMHhCNTgwLCAweEI1OUIsIDB4NDA4RiwgMHhCNTlDLCAweEI1OUMsIDB4MUY2NiwKKyAgICAweEI1OUQsIDB4QjU5RCwgMHgyNERDLCAweEI1OUUsIDB4QjVBMCwgMHg0MEFCLCAweEI1QTEsIDB4QjVGRSwgMHgwNTgyLAorICAgIDB4QjY0MCwgMHhCNjUxLCAweDQwQUUsIDB4QjY1MiwgMHhCNjUyLCAweDI2QTIsIDB4QjY1MywgMHhCNjU0LCAweDQwQzAsCisgICAgMHhCNjU1LCAweEI2NTUsIDB4MjRERCwgMHhCNjU2LCAweEI2NTgsIDB4NDBDMiwgMHhCNjU5LCAweEI2NTksIDB4MjAwRSwKKyAgICAweEI2NUEsIDB4QjY1QSwgMHg0MEM1LCAweEI2NUIsIDB4QjY1QiwgMHgyNERCLCAweEI2NUMsIDB4QjY1QywgMHgxRUI4LAorICAgIDB4QjY1RCwgMHhCNjdFLCAweDQwQzYsIDB4QjY4MCwgMHhCNkEwLCAweDQwRTgsIDB4QjZBMSwgMHhCNkZFLCAweDA1RTAsCisgICAgMHhCNzQwLCAweEI3NEQsIDB4NDEwOSwgMHhCNzRFLCAweEI3NEUsIDB4MjI5NSwgMHhCNzRGLCAweEI3NTAsIDB4NDExNywKKyAgICAweEI3NTEsIDB4Qjc1MSwgMHgxRTgwLCAweEI3NTIsIDB4Qjc1OCwgMHg0MTE5LCAweEI3NTksIDB4Qjc1OSwgMHgyNjc3LAorICAgIDB4Qjc1QSwgMHhCNzYzLCAweDQxMjAsIDB4Qjc2NCwgMHhCNzY0LCAweDI2MjQsIDB4Qjc2NSwgMHhCNzY1LCAweDFGNjksCisgICAgMHhCNzY2LCAweEI3NjYsIDB4MjIyQiwgMHhCNzY3LCAweEI3NzYsIDB4NDEyQSwgMHhCNzc3LCAweEI3NzcsIDB4MjU3RiwKKyAgICAweEI3NzgsIDB4Qjc3OCwgMHgxRjVCLCAweEI3NzksIDB4Qjc3RSwgMHg0MTNBLCAweEI3ODAsIDB4Qjc4MCwgMHgyMTlCLAorICAgIDB4Qjc4MSwgMHhCNzgxLCAweDQxNDAsIDB4Qjc4MiwgMHhCNzgyLCAweDI2N0QsIDB4Qjc4MywgMHhCN0EwLCAweDQxNDEsCisgICAgMHhCN0ExLCAweEI3RkUsIDB4MDYzRSwgMHhCODQwLCAweEI4NDIsIDB4NDE1RiwgMHhCODQzLCAweEI4NDMsIDB4MjFBMCwKKyAgICAweEI4NDQsIDB4Qjg0NCwgMHgyMTg2LCAweEI4NDUsIDB4Qjg0NSwgMHg0MTYyLCAweEI4NDYsIDB4Qjg0NiwgMHgyMEVELAorICAgIDB4Qjg0NywgMHhCODRDLCAweDQxNjMsIDB4Qjg0RCwgMHhCODRELCAweDI1QjksIDB4Qjg0RSwgMHhCODUwLCAweDQxNjksCisgICAgMHhCODUxLCAweEI4NTEsIDB4MUZFQSwgMHhCODUyLCAweEI4NTksIDB4NDE2QywgMHhCODVBLCAweEI4NUEsIDB4MUVBNCwKKyAgICAweEI4NUIsIDB4Qjg1QiwgMHgyMEUxLCAweEI4NUMsIDB4Qjg1QywgMHg0MTc0LCAweEI4NUQsIDB4Qjg1RCwgMHgyNUI4LAorICAgIDB4Qjg1RSwgMHhCODVFLCAweDIyNjAsIDB4Qjg1RiwgMHhCODVGLCAweDQxNzUsIDB4Qjg2MCwgMHhCODYwLCAweDIwRTIsCisgICAgMHhCODYxLCAweEI4NzYsIDB4NDE3NiwgMHhCODc3LCAweEI4NzcsIDB4MjE0MSwgMHhCODc4LCAweEI4N0UsIDB4NDE4QywKKyAgICAweEI4ODAsIDB4Qjg4MSwgMHg0MTkzLCAweEI4ODIsIDB4Qjg4MiwgMHgxRkM3LCAweEI4ODMsIDB4QjhBMCwgMHg0MTk1LAorICAgIDB4QjhBMSwgMHhCOEZFLCAweDA2OUMsIDB4Qjk0MCwgMHhCOTRGLCAweDQxQjMsIDB4Qjk1MCwgMHhCOTUwLCAweDFFNDEsCisgICAgMHhCOTUxLCAweEI5NjAsIDB4NDFDMywgMHhCOTYxLCAweEI5NjEsIDB4MjVFNCwgMHhCOTYyLCAweEI5N0EsIDB4NDFEMywKKyAgICAweEI5N0IsIDB4Qjk3QiwgMHgxRjg2LCAweEI5N0MsIDB4Qjk3RSwgMHg0MUVDLCAweEI5ODAsIDB4Qjk5QywgMHg0MUVGLAorICAgIDB4Qjk5RCwgMHhCOTlELCAweDFGQjMsIDB4Qjk5RSwgMHhCOTlGLCAweDQyMEMsIDB4QjlBMCwgMHhCOUEwLCAweDFFRUYsCisgICAgMHhCOUExLCAweEI5RkUsIDB4MDZGQSwgMHhCQTQwLCAweEJBNDEsIDB4NDIwRSwgMHhCQTQyLCAweEJBNDIsIDB4MjJBNCwKKyAgICAweEJBNDMsIDB4QkE0MywgMHg0MjEwLCAweEJBNDQsIDB4QkE0NCwgMHgyNUU4LCAweEJBNDUsIDB4QkE1NSwgMHg0MjExLAorICAgIDB4QkE1NiwgMHhCQTU2LCAweDI1RTMsIDB4QkE1NywgMHhCQTU4LCAweDQyMjIsIDB4QkE1OSwgMHhCQTU5LCAweDIxMTEsCisgICAgMHhCQTVBLCAweEJBNUYsIDB4NDIyNCwgMHhCQTYwLCAweEJBNjAsIDB4MjVFNiwgMHhCQTYxLCAweEJBNjksIDB4NDIyQSwKKyAgICAweEJBNkEsIDB4QkE2QSwgMHgyNUU3LCAweEJBNkIsIDB4QkE3MywgMHg0MjMzLCAweEJBNzQsIDB4QkE3NCwgMHgyMDQxLAorICAgIDB4QkE3NSwgMHhCQTdFLCAweDQyM0MsIDB4QkE4MCwgMHhCQTgzLCAweDQyNDYsIDB4QkE4NCwgMHhCQTg0LCAweDI1RUEsCisgICAgMHhCQTg1LCAweEJBODUsIDB4NDI0QSwgMHhCQTg2LCAweEJBODYsIDB4MUY4RiwgMHhCQTg3LCAweEJBODcsIDB4NDI0QiwKKyAgICAweEJBODgsIDB4QkE4OCwgMHgyNUVDLCAweEJBODksIDB4QkE4QywgMHg0MjRDLCAweEJBOEQsIDB4QkE4RCwgMHgyNUVCLAorICAgIDB4QkE4RSwgMHhCQTlELCAweDQyNTAsIDB4QkE5RSwgMHhCQTlFLCAweDIwRDAsIDB4QkE5RiwgMHhCQTlGLCAweDIwMUQsCisgICAgMHhCQUEwLCAweEJBQTAsIDB4NDI2MCwgMHhCQUExLCAweEJBRkUsIDB4MDc1OCwgMHhCQjQwLCAweEJCNDAsIDB4MUZGNywKKyAgICAweEJCNDEsIDB4QkI0OCwgMHg0MjYxLCAweEJCNDksIDB4QkI0OSwgMHgxRThELCAweEJCNEEsIDB4QkI1NywgMHg0MjY5LAorICAgIDB4QkI1OCwgMHhCQjU4LCAweDI1RTksIDB4QkI1OSwgMHhCQjVBLCAweDQyNzcsIDB4QkI1QiwgMHhCQjVCLCAweDI1RUUsCisgICAgMHhCQjVDLCAweEJCNUMsIDB4MjAzQSwgMHhCQjVELCAweEJCNUYsIDB4NDI3OSwgMHhCQjYwLCAweEJCNjAsIDB4MjY5MywKKyAgICAweEJCNjEsIDB4QkI2NCwgMHg0MjdDLCAweEJCNjUsIDB4QkI2NSwgMHgyNUU1LCAweEJCNjYsIDB4QkI2NiwgMHgyNUVELAorICAgIDB4QkI2NywgMHhCQjY3LCAweDQyODAsIDB4QkI2OCwgMHhCQjY4LCAweDIwMDksIDB4QkI2OSwgMHhCQjY5LCAweDQyODEsCisgICAgMHhCQjZBLCAweEJCNkEsIDB4MjA2NSwgMHhCQjZCLCAweEJCNkQsIDB4NDI4MiwgMHhCQjZFLCAweEJCNkUsIDB4MjZBMywKKyAgICAweEJCNkYsIDB4QkI3RSwgMHg0Mjg1LCAweEJCODAsIDB4QkJBMCwgMHg0Mjk1LCAweEJCQTEsIDB4QkJGRSwgMHgwN0I2LAorICAgIDB4QkM0MCwgMHhCQzUxLCAweDQyQjYsIDB4QkM1MiwgMHhCQzUyLCAweDI1RjUsIDB4QkM1MywgMHhCQzUzLCAweDFFRkMsCisgICAgMHhCQzU0LCAweEJDNTksIDB4NDJDOCwgMHhCQzVBLCAweEJDNUEsIDB4MjAyNCwgMHhCQzVCLCAweEJDNjAsIDB4NDJDRSwKKyAgICAweEJDNjEsIDB4QkM2MSwgMHgyNjlCLCAweEJDNjIsIDB4QkM2MiwgMHg0MkQ0LCAweEJDNjMsIDB4QkM2MywgMHgyNUYzLAorICAgIDB4QkM2NCwgMHhCQzY0LCAweDQyRDUsIDB4QkM2NSwgMHhCQzY1LCAweDIyRDksIDB4QkM2NiwgMHhCQzY2LCAweDQyRDYsCisgICAgMHhCQzY3LCAweEJDNjcsIDB4MjVGNCwgMHhCQzY4LCAweEJDNjgsIDB4NDJENywgMHhCQzY5LCAweEJDNjksIDB4MjQxQiwKKyAgICAweEJDNkEsIDB4QkM2QywgMHg0MkQ4LCAweEJDNkQsIDB4QkM2RCwgMHgxRkM4LCAweEJDNkUsIDB4QkM2RSwgMHg0MkRCLAorICAgIDB4QkM2RiwgMHhCQzZGLCAweDFGN0IsIDB4QkM3MCwgMHhCQzcwLCAweDQyREMsIDB4QkM3MSwgMHhCQzcxLCAweDI0MUQsCisgICAgMHhCQzcyLCAweEJDNzIsIDB4NDJERCwgMHhCQzczLCAweEJDNzMsIDB4MjI0QywgMHhCQzc0LCAweEJDNzQsIDB4MUY0OCwKKyAgICAweEJDNzUsIDB4QkM3NSwgMHgyNDFDLCAweEJDNzYsIDB4QkM3NywgMHgyNDFFLCAweEJDNzgsIDB4QkM3OCwgMHgyMEZGLAorICAgIDB4QkM3OSwgMHhCQzc5LCAweDIxOUEsIDB4QkM3QSwgMHhCQzdBLCAweDQyREUsIDB4QkM3QiwgMHhCQzdCLCAweDIwOTEsCisgICAgMHhCQzdDLCAweEJDN0QsIDB4NDJERiwgMHhCQzdFLCAweEJDN0UsIDB4MjBBNywgMHhCQzgwLCAweEJDODEsIDB4NDJFMSwKKyAgICAweEJDODIsIDB4QkM4MiwgMHgyNDIzLCAweEJDODMsIDB4QkM4MywgMHgxRTlCLCAweEJDODQsIDB4QkM4NCwgMHgyNDIyLAorICAgIDB4QkM4NSwgMHhCQzg1LCAweDQyRTMsIDB4QkM4NiwgMHhCQzg2LCAweDIxMTAsIDB4QkM4NywgMHhCQzg3LCAweDQyRTQsCisgICAgMHhCQzg4LCAweEJDODgsIDB4MjI4RCwgMHhCQzg5LCAweEJDODksIDB4MUY3MSwgMHhCQzhBLCAweEJDOEEsIDB4MUVGOCwKKyAgICAweEJDOEIsIDB4QkM4QiwgMHgyNDIxLCAweEJDOEMsIDB4QkM4RSwgMHg0MkU1LCAweEJDOEYsIDB4QkM4RiwgMHgxRUYzLAorICAgIDB4QkM5MCwgMHhCQzk5LCAweDQyRTgsIDB4QkM5QSwgMHhCQzlBLCAweDIxQjEsIDB4QkM5QiwgMHhCQzlCLCAweDI0MjYsCisgICAgMHhCQzlDLCAweEJDOUMsIDB4MjQyNSwgMHhCQzlELCAweEJDOUQsIDB4MjEyMCwgMHhCQzlFLCAweEJDQTAsIDB4NDJGMiwKKyAgICAweEJDQTEsIDB4QkNGRSwgMHgwODE0LCAweEJENDAsIDB4QkQ0MSwgMHg0MkY1LCAweEJENDIsIDB4QkQ0MiwgMHgyMTFBLAorICAgIDB4QkQ0MywgMHhCRDQzLCAweDI0MjQsIDB4QkQ0NCwgMHhCRDQ0LCAweDQyRjcsIDB4QkQ0NSwgMHhCRDQ1LCAweDI0MjgsCisgICAgMHhCRDQ2LCAweEJENDcsIDB4NDJGOCwgMHhCRDQ4LCAweEJENDgsIDB4MjQyQSwgMHhCRDQ5LCAweEJENDksIDB4MjQyOSwKKyAgICAweEJENEEsIDB4QkQ0QSwgMHg0MkZBLCAweEJENEIsIDB4QkQ0QiwgMHgyMjk0LCAweEJENEMsIDB4QkQ0QywgMHg0MkZCLAorICAgIDB4QkQ0RCwgMHhCRDRELCAweDIyQkUsIDB4QkQ0RSwgMHhCRDRFLCAweDQyRkMsIDB4QkQ0RiwgMHhCRDRGLCAweDFFMzEsCisgICAgMHhCRDUwLCAweEJENTYsIDB4NDJGRCwgMHhCRDU3LCAweEJENTcsIDB4MjQyQywgMHhCRDU4LCAweEJENTgsIDB4NDMwNCwKKyAgICAweEJENTksIDB4QkQ1OSwgMHgxRkI1LCAweEJENUEsIDB4QkQ2NSwgMHg0MzA1LCAweEJENjYsIDB4QkQ2NiwgMHgyNDJCLAorICAgIDB4QkQ2NywgMHhCRDY3LCAweDFGQUYsIDB4QkQ2OCwgMHhCRDY5LCAweDQzMTEsIDB4QkQ2QSwgMHhCRDZBLCAweDIwNjgsCisgICAgMHhCRDZCLCAweEJENkIsIDB4MjFFNCwgMHhCRDZDLCAweEJENkUsIDB4NDMxMywgMHhCRDZGLCAweEJENkYsIDB4MUYyMSwKKyAgICAweEJENzAsIDB4QkQ3MCwgMHg0MzE2LCAweEJENzEsIDB4QkQ3MSwgMHgyMTAxLCAweEJENzIsIDB4QkQ3OCwgMHg0MzE3LAorICAgIDB4QkQ3OSwgMHhCRDc5LCAweDIxN0MsIDB4QkQ3QSwgMHhCRDdBLCAweDIxNEEsIDB4QkQ3QiwgMHhCRDdCLCAweDI0MkQsCisgICAgMHhCRDdDLCAweEJEN0QsIDB4NDMxRSwgMHhCRDdFLCAweEJEN0UsIDB4MUZENCwgMHhCRDgwLCAweEJEODAsIDB4NDMyMCwKKyAgICAweEJEODEsIDB4QkQ4MSwgMHgxRkQxLCAweEJEODIsIDB4QkQ4OCwgMHg0MzIxLCAweEJEODksIDB4QkQ4OSwgMHgxRTMzLAorICAgIDB4QkQ4QSwgMHhCRDhBLCAweDQzMjgsIDB4QkQ4QiwgMHhCRDhCLCAweDI0MkYsIDB4QkQ4QywgMHhCRDhELCAweDQzMjksCisgICAgMHhCRDhFLCAweEJEOEUsIDB4MjQyRSwgMHhCRDhGLCAweEJEOEYsIDB4NDMyQiwgMHhCRDkwLCAweEJEOTAsIDB4MjQzMCwKKyAgICAweEJEOTEsIDB4QkQ5MSwgMHgyMURCLCAweEJEOTIsIDB4QkQ5NiwgMHg0MzJDLCAweEJEOTcsIDB4QkQ5NywgMHgyMTU4LAorICAgIDB4QkQ5OCwgMHhCRDlBLCAweDQzMzEsIDB4QkQ5QiwgMHhCRDlCLCAweDFGQzIsIDB4QkQ5QywgMHhCREEwLCAweDQzMzQsCisgICAgMHhCREExLCAweEJERkUsIDB4MDg3MiwgMHhCRTQwLCAweEJFNDIsIDB4NDMzOSwgMHhCRTQzLCAweEJFNDMsIDB4MjJCOSwKKyAgICAweEJFNDQsIDB4QkU0NCwgMHg0MzNDLCAweEJFNDUsIDB4QkU0NSwgMHgyNDM2LCAweEJFNDYsIDB4QkU0OCwgMHg0MzNELAorICAgIDB4QkU0OSwgMHhCRTQ5LCAweDFFOEUsIDB4QkU0QSwgMHhCRTRBLCAweDI0MzksIDB4QkU0QiwgMHhCRTUwLCAweDQzNDAsCisgICAgMHhCRTUxLCAweEJFNTEsIDB4MjFDNSwgMHhCRTUyLCAweEJFNTIsIDB4MjQzNywgMHhCRTUzLCAweEJFNTMsIDB4MjE5MiwKKyAgICAweEJFNTQsIDB4QkU1NCwgMHg0MzQ2LCAweEJFNTUsIDB4QkU1NSwgMHgyNDNBLCAweEJFNTYsIDB4QkU1NiwgMHgxRjE5LAorICAgIDB4QkU1NywgMHhCRTU3LCAweDIxOEMsIDB4QkU1OCwgMHhCRTU4LCAweDFFNDAsIDB4QkU1OSwgMHhCRTU5LCAweDIyQjMsCisgICAgMHhCRTVBLCAweEJFNUMsIDB4NDM0NywgMHhCRTVELCAweEJFNUQsIDB4MjA1RiwgMHhCRTVFLCAweEJFNUUsIDB4MjQzOCwKKyAgICAweEJFNUYsIDB4QkU1RiwgMHgyNDMyLCAweEJFNjAsIDB4QkU2MCwgMHgyMjc0LCAweEJFNjEsIDB4QkU2MSwgMHg0MzRBLAorICAgIDB4QkU2MiwgMHhCRTYyLCAweDFFOUMsIDB4QkU2MywgMHhCRTYzLCAweDI0MzEsIDB4QkU2NCwgMHhCRTY0LCAweDIwODUsCisgICAgMHhCRTY1LCAweEJFNjgsIDB4NDM0QiwgMHhCRTY5LCAweEJFNjksIDB4MjQzNSwgMHhCRTZBLCAweEJFNkIsIDB4NDM0RiwKKyAgICAweEJFNkMsIDB4QkU2QywgMHgyNDNCLCAweEJFNkQsIDB4QkU2RSwgMHg0MzUxLCAweEJFNkYsIDB4QkU2RiwgMHgxRkI3LAorICAgIDB4QkU3MCwgMHhCRTcwLCAweDI0MzMsIDB4QkU3MSwgMHhCRTc1LCAweDQzNTMsIDB4QkU3NiwgMHhCRTc2LCAweDIwNTQsCisgICAgMHhCRTc3LCAweEJFNzcsIDB4MjFERSwgMHhCRTc4LCAweEJFNzgsIDB4NDM1OCwgMHhCRTc5LCAweEJFNzksIDB4MjQzNCwKKyAgICAweEJFN0EsIDB4QkU3QiwgMHg0MzU5LCAweEJFN0MsIDB4QkU3QywgMHgyNDNELCAweEJFN0QsIDB4QkU3RCwgMHgxRjg5LAorICAgIDB4QkU3RSwgMHhCRTdFLCAweDI0M0MsIDB4QkU4MCwgMHhCRTgyLCAweDQzNUIsIDB4QkU4MywgMHhCRTgzLCAweDFGNkUsCisgICAgMHhCRTg0LCAweEJFODQsIDB4MUVEOCwgMHhCRTg1LCAweEJFODUsIDB4NDM1RSwgMHhCRTg2LCAweEJFODYsIDB4MUVCRiwKKyAgICAweEJFODcsIDB4QkU4NywgMHgyNDQ1LCAweEJFODgsIDB4QkU4OCwgMHg0MzVGLCAweEJFODksIDB4QkU4OSwgMHgyMjQ5LAorICAgIDB4QkU4QSwgMHhCRThCLCAweDQzNjAsIDB4QkU4QywgMHhCRThDLCAweDI0NDEsIDB4QkU4RCwgMHhCRThELCAweDQzNjIsCisgICAgMHhCRThFLCAweEJFOEUsIDB4MUU0NywgMHhCRThGLCAweEJFOEYsIDB4MUY1NiwgMHhCRTkwLCAweEJFOTEsIDB4NDM2MywKKyAgICAweEJFOTIsIDB4QkU5MiwgMHgyMDg2LCAweEJFOTMsIDB4QkU5NCwgMHg0MzY1LCAweEJFOTUsIDB4QkU5NSwgMHgyMTk2LAorICAgIDB4QkU5NiwgMHhCRTk2LCAweDQzNjcsIDB4QkU5NywgMHhCRTk3LCAweDI0NDMsIDB4QkU5OCwgMHhCRTk4LCAweDI0M0YsCisgICAgMHhCRTk5LCAweEJFOTksIDB4NDM2OCwgMHhCRTlBLCAweEJFOUEsIDB4MjAyMywgMHhCRTlCLCAweEJFOUIsIDB4NDM2OSwKKyAgICAweEJFOUMsIDB4QkU5QywgMHgyNDQyLCAweEJFOUQsIDB4QkU5RSwgMHg0MzZBLCAweEJFOUYsIDB4QkU5RiwgMHgyNDNFLAorICAgIDB4QkVBMCwgMHhCRUEwLCAweDQzNkMsIDB4QkVBMSwgMHhCRUZFLCAweDA4RDAsIDB4QkY0MCwgMHhCRjQwLCAweDI2QTYsCisgICAgMHhCRjQxLCAweEJGNEMsIDB4NDM2RCwgMHhCRjRELCAweEJGNEQsIDB4MjM0RSwgMHhCRjRFLCAweEJGNEUsIDB4MjQ0NiwKKyAgICAweEJGNEYsIDB4QkY0RiwgMHgyNDRCLCAweEJGNTAsIDB4QkY1MCwgMHgyNDQ0LCAweEJGNTEsIDB4QkY1NCwgMHg0Mzc5LAorICAgIDB4QkY1NSwgMHhCRjU1LCAweDI0MjcsIDB4QkY1NiwgMHhCRjU2LCAweDI0NEMsIDB4QkY1NywgMHhCRjVGLCAweDQzN0QsCisgICAgMHhCRjYwLCAweEJGNjAsIDB4MUYwRiwgMHhCRjYxLCAweEJGNjEsIDB4NDM4NiwgMHhCRjYyLCAweEJGNjIsIDB4MjQ0NywKKyAgICAweEJGNjMsIDB4QkY2MywgMHgyNDQ5LCAweEJGNjQsIDB4QkY2NCwgMHgyNDQ4LCAweEJGNjUsIDB4QkY2NywgMHg0Mzg3LAorICAgIDB4QkY2OCwgMHhCRjY4LCAweDIxQzIsIDB4QkY2OSwgMHhCRjZCLCAweDQzOEEsIDB4QkY2QywgMHhCRjZDLCAweDIxNkUsCisgICAgMHhCRjZELCAweEJGNkYsIDB4NDM4RCwgMHhCRjcwLCAweEJGNzAsIDB4MUYwMywgMHhCRjcxLCAweEJGNzEsIDB4NDM5MCwKKyAgICAweEJGNzIsIDB4QkY3MiwgMHgyNDRBLCAweEJGNzMsIDB4QkY3MywgMHgyMTVDLCAweEJGNzQsIDB4QkY3NSwgMHg0MzkxLAorICAgIDB4QkY3NiwgMHhCRjc2LCAweDIyQkIsIDB4QkY3NywgMHhCRjc3LCAweDI0NTAsIDB4QkY3OCwgMHhCRjc4LCAweDQzOTMsCisgICAgMHhCRjc5LCAweEJGNzksIDB4MjY5NCwgMHhCRjdBLCAweEJGN0EsIDB4MjQ0RiwgMHhCRjdCLCAweEJGN0IsIDB4MjVGNiwKKyAgICAweEJGN0MsIDB4QkY3QywgMHgyMDUxLCAweEJGN0QsIDB4QkY3RCwgMHg0Mzk0LCAweEJGN0UsIDB4QkY3RSwgMHgyNDRFLAorICAgIDB4QkY4MCwgMHhCRjgxLCAweDQzOTUsIDB4QkY4MiwgMHhCRjgyLCAweDIyQkEsIDB4QkY4MywgMHhCRjgzLCAweDFGNkQsCisgICAgMHhCRjg0LCAweEJGODgsIDB4NDM5NywgMHhCRjg5LCAweEJGODksIDB4MjQ1MiwgMHhCRjhBLCAweEJGOEEsIDB4MjQ1MSwKKyAgICAweEJGOEIsIDB4QkY5NCwgMHg0MzlDLCAweEJGOTUsIDB4QkY5NSwgMHgyNDU1LCAweEJGOTYsIDB4QkY5NiwgMHg0M0E2LAorICAgIDB4QkY5NywgMHhCRjk3LCAweDIyODksIDB4QkY5OCwgMHhCRjk4LCAweDIxMTYsIDB4QkY5OSwgMHhCRjlDLCAweDQzQTcsCisgICAgMHhCRjlELCAweEJGOUQsIDB4MjQ1NCwgMHhCRjlFLCAweEJGQTAsIDB4NDNBQiwgMHhCRkExLCAweEJGRkUsIDB4MDkyRSwKKyAgICAweEMwNDAsIDB4QzA0MCwgMHgyMEZCLCAweEMwNDEsIDB4QzA0MywgMHg0M0FFLCAweEMwNDQsIDB4QzA0NCwgMHgyNDQwLAorICAgIDB4QzA0NSwgMHhDMDRBLCAweDQzQjEsIDB4QzA0QiwgMHhDMDRCLCAweDIxMjYsIDB4QzA0QywgMHhDMDRDLCAweDFGNjEsCisgICAgMHhDMDRELCAweEMwNEQsIDB4MjY5RCwgMHhDMDRFLCAweEMwNEUsIDB4NDNCNywgMHhDMDRGLCAweEMwNEYsIDB4MUY4QSwKKyAgICAweEMwNTAsIDB4QzA1MCwgMHgyNDU2LCAweEMwNTEsIDB4QzA1MSwgMHgyNDU5LCAweEMwNTIsIDB4QzA1MiwgMHgyNDU4LAorICAgIDB4QzA1MywgMHhDMDU0LCAweDQzQjgsIDB4QzA1NSwgMHhDMDU1LCAweDFGQUUsIDB4QzA1NiwgMHhDMDVBLCAweDQzQkEsCisgICAgMHhDMDVCLCAweEMwNUIsIDB4MjIxQSwgMHhDMDVDLCAweEMwNUQsIDB4NDNCRiwgMHhDMDVFLCAweEMwNUUsIDB4MUY3QSwKKyAgICAweEMwNUYsIDB4QzA1RiwgMHgyNDRELCAweEMwNjAsIDB4QzA2MCwgMHgyNDU3LCAweEMwNjEsIDB4QzA2OCwgMHg0M0MxLAorICAgIDB4QzA2OSwgMHhDMDY5LCAweDI0NTMsIDB4QzA2QSwgMHhDMDZBLCAweDQzQzksIDB4QzA2QiwgMHhDMDZCLCAweDI0MjAsCisgICAgMHhDMDZDLCAweEMwNkMsIDB4NDNDQSwgMHhDMDZELCAweEMwNkQsIDB4MjFERiwgMHhDMDZFLCAweEMwNkUsIDB4MjY4NSwKKyAgICAweEMwNkYsIDB4QzA2RiwgMHg0M0NCLCAweEMwNzAsIDB4QzA3MCwgMHgxRTZFLCAweEMwNzEsIDB4QzA3MywgMHg0M0NDLAorICAgIDB4QzA3NCwgMHhDMDc0LCAweDIyMjQsIDB4QzA3NSwgMHhDMDc1LCAweDI2NzAsIDB4QzA3NiwgMHhDMDc2LCAweDQzQ0YsCisgICAgMHhDMDc3LCAweEMwNzcsIDB4MjFCQSwgMHhDMDc4LCAweEMwNzgsIDB4NDNEMCwgMHhDMDc5LCAweEMwNzksIDB4MjQ1QSwKKyAgICAweEMwN0EsIDB4QzA3QiwgMHg0M0QxLCAweEMwN0MsIDB4QzA3QywgMHgxRkZGLCAweEMwN0QsIDB4QzA3RSwgMHg0M0QzLAorICAgIDB4QzA4MCwgMHhDMDlBLCAweDQzRDUsIDB4QzA5QiwgMHhDMDlCLCAweDI1RTIsIDB4QzA5QywgMHhDMDlDLCAweDQzRjAsCisgICAgMHhDMDlELCAweEMwOUQsIDB4MjY5QSwgMHhDMDlFLCAweEMwQTAsIDB4NDNGMSwgMHhDMEExLCAweEMwRkUsIDB4MDk4QywKKyAgICAweEMxNDAsIDB4QzE0RiwgMHg0M0Y0LCAweEMxNTAsIDB4QzE1MCwgMHgxRUVBLCAweEMxNTEsIDB4QzE1MywgMHg0NDA0LAorICAgIDB4QzE1NCwgMHhDMTU0LCAweDFFMkMsIDB4QzE1NSwgMHhDMTVFLCAweDQ0MDcsIDB4QzE1RiwgMHhDMTVGLCAweDIwNjIsCisgICAgMHhDMTYwLCAweEMxNjAsIDB4MjRGMSwgMHhDMTYxLCAweEMxNjEsIDB4NDQxMSwgMHhDMTYyLCAweEMxNjIsIDB4MjRGMiwKKyAgICAweEMxNjMsIDB4QzE3NCwgMHg0NDEyLCAweEMxNzUsIDB4QzE3NSwgMHgyNUYyLCAweEMxNzYsIDB4QzE3NywgMHg0NDI0LAorICAgIDB4QzE3OCwgMHhDMTc4LCAweDIyMTUsIDB4QzE3OSwgMHhDMTdFLCAweDQ0MjYsIDB4QzE4MCwgMHhDMTk0LCAweDQ0MkMsCisgICAgMHhDMTk1LCAweEMxOTUsIDB4MjFBRSwgMHhDMTk2LCAweEMxQTAsIDB4NDQ0MSwgMHhDMUExLCAweEMxRkUsIDB4MDlFQSwKKyAgICAweEMyNDAsIDB4QzI0RCwgMHg0NDRDLCAweEMyNEUsIDB4QzI0RSwgMHgyMEUwLCAweEMyNEYsIDB4QzI2NCwgMHg0NDVBLAorICAgIDB4QzI2NSwgMHhDMjY1LCAweDI1QzIsIDB4QzI2NiwgMHhDMjY2LCAweDQ0NzAsIDB4QzI2NywgMHhDMjY3LCAweDI1QzEsCisgICAgMHhDMjY4LCAweEMyN0MsIDB4NDQ3MSwgMHhDMjdELCAweEMyN0QsIDB4MjEyOCwgMHhDMjdFLCAweEMyN0UsIDB4NDQ4NiwKKyAgICAweEMyODAsIDB4QzI4MywgMHg0NDg3LCAweEMyODQsIDB4QzI4NCwgMHgyMTk5LCAweEMyODUsIDB4QzI5MiwgMHg0NDhCLAorICAgIDB4QzI5MywgMHhDMjkzLCAweDIwMTcsIDB4QzI5NCwgMHhDMjk0LCAweDFFQTAsIDB4QzI5NSwgMHhDMjk1LCAweDIxMjUsCisgICAgMHhDMjk2LCAweEMyOTYsIDB4MjE0RCwgMHhDMjk3LCAweEMyOTcsIDB4NDQ5OSwgMHhDMjk4LCAweEMyOTgsIDB4MjVDNCwKKyAgICAweEMyOTksIDB4QzI5OSwgMHgyMDlELCAweEMyOUEsIDB4QzI5QSwgMHgyMjhBLCAweEMyOUIsIDB4QzI5QiwgMHg0NDlBLAorICAgIDB4QzI5QywgMHhDMjlDLCAweDI1QzMsIDB4QzI5RCwgMHhDMjlGLCAweDQ0OUIsIDB4QzJBMCwgMHhDMkEwLCAweDIxNzksCisgICAgMHhDMkExLCAweEMyRkUsIDB4MEE0OCwgMHhDMzQwLCAweEMzNDAsIDB4MjAzOCwgMHhDMzQxLCAweEMzNDIsIDB4NDQ5RSwKKyAgICAweEMzNDMsIDB4QzM0MywgMHgyMTU1LCAweEMzNDQsIDB4QzM3QSwgMHg0NEEwLCAweEMzN0IsIDB4QzM3QiwgMHgyMUQyLAorICAgIDB4QzM3QywgMHhDMzdFLCAweDQ0RDcsIDB4QzM4MCwgMHhDMzgzLCAweDQ0REEsIDB4QzM4NCwgMHhDMzg0LCAweDI0QzcsCisgICAgMHhDMzg1LCAweEMzOUEsIDB4NDRERSwgMHhDMzlCLCAweEMzOUIsIDB4MjI3OSwgMHhDMzlDLCAweEMzQTAsIDB4NDRGNCwKKyAgICAweEMzQTEsIDB4QzNGRSwgMHgwQUE2LCAweEM0NDAsIDB4QzQ0OCwgMHg0NEY5LCAweEM0NDksIDB4QzQ0OSwgMHgyMTIzLAorICAgIDB4QzQ0QSwgMHhDNDRCLCAweDQ1MDIsIDB4QzQ0QywgMHhDNDRDLCAweDI0QzUsIDB4QzQ0RCwgMHhDNDUzLCAweDQ1MDQsCisgICAgMHhDNDU0LCAweEM0NTQsIDB4MjRDOSwgMHhDNDU1LCAweEM0NTcsIDB4NDUwQiwgMHhDNDU4LCAweEM0NTgsIDB4MjA5NCwKKyAgICAweEM0NTksIDB4QzQ1QSwgMHg0NTBFLCAweEM0NUIsIDB4QzQ1QiwgMHgyMjk2LCAweEM0NUMsIDB4QzQ2MiwgMHg0NTEwLAorICAgIDB4QzQ2MywgMHhDNDYzLCAweDFFNzcsIDB4QzQ2NCwgMHhDNDc2LCAweDQ1MTcsIDB4QzQ3NywgMHhDNDc3LCAweDFGMDYsCisgICAgMHhDNDc4LCAweEM0NzksIDB4NDUyQSwgMHhDNDdBLCAweEM0N0EsIDB4MUZBNSwgMHhDNDdCLCAweEM0N0UsIDB4NDUyQywKKyAgICAweEM0ODAsIDB4QzQ4MCwgMHg0NTMwLCAweEM0ODEsIDB4QzQ4MSwgMHgyMDk5LCAweEM0ODIsIDB4QzQ5MCwgMHg0NTMxLAorICAgIDB4QzQ5MSwgMHhDNDkxLCAweDFFQUQsIDB4QzQ5MiwgMHhDNDkyLCAweDI0QzgsIDB4QzQ5MywgMHhDNDkzLCAweDIwQTgsCisgICAgMHhDNDk0LCAweEM0OTcsIDB4NDU0MCwgMHhDNDk4LCAweEM0OTgsIDB4MjAxRiwgMHhDNDk5LCAweEM0OTksIDB4NDU0NCwKKyAgICAweEM0OUEsIDB4QzQ5QSwgMHgyMEM1LCAweEM0OUIsIDB4QzQ5QiwgMHg0NTQ1LCAweEM0OUMsIDB4QzQ5QywgMHgyNENBLAorICAgIDB4QzQ5RCwgMHhDNEEwLCAweDQ1NDYsIDB4QzRBMSwgMHhDNEZFLCAweDBCMDQsIDB4QzU0MCwgMHhDNTQzLCAweDQ1NEEsCisgICAgMHhDNTQ0LCAweEM1NDQsIDB4MUZGMCwgMHhDNTQ1LCAweEM1NDUsIDB4NDU0RSwgMHhDNTQ2LCAweEM1NDYsIDB4MjRDNiwKKyAgICAweEM1NDcsIDB4QzU0QSwgMHg0NTRGLCAweEM1NEIsIDB4QzU0QiwgMHgyMjVELCAweEM1NEMsIDB4QzU0QywgMHgyMkRFLAorICAgIDB4QzU0RCwgMHhDNTUxLCAweDQ1NTMsIDB4QzU1MiwgMHhDNTUyLCAweDIwMkMsIDB4QzU1MywgMHhDNTVFLCAweDQ1NTgsCisgICAgMHhDNTVGLCAweEM1NUYsIDB4MjE2MSwgMHhDNTYwLCAweEM1NjIsIDB4NDU2NCwgMHhDNTYzLCAweEM1NjMsIDB4MjIzQiwKKyAgICAweEM1NjQsIDB4QzU2NCwgMHgyMUQ5LCAweEM1NjUsIDB4QzU2NSwgMHgxRkNCLCAweEM1NjYsIDB4QzU2NiwgMHgxRkM5LAorICAgIDB4QzU2NywgMHhDNTdFLCAweDQ1NjcsIDB4QzU4MCwgMHhDNTkyLCAweDQ1N0YsIDB4QzU5MywgMHhDNTkzLCAweDFFNjEsCisgICAgMHhDNTk0LCAweEM1OUIsIDB4NDU5MiwgMHhDNTlDLCAweEM1OUMsIDB4MjVFRiwgMHhDNTlELCAweEM1OUQsIDB4NDU5QSwKKyAgICAweEM1OUUsIDB4QzU5RSwgMHgxRjk4LCAweEM1OUYsIDB4QzVBMCwgMHg0NTlCLCAweEM1QTEsIDB4QzVGRSwgMHgwQjYyLAorICAgIDB4QzY0MCwgMHhDNjQwLCAweDQ1OUQsIDB4QzY0MSwgMHhDNjQxLCAweDI1RjAsIDB4QzY0MiwgMHhDNjQzLCAweDQ1OUUsCisgICAgMHhDNjQ0LCAweEM2NDQsIDB4MUY4OCwgMHhDNjQ1LCAweEM2NDYsIDB4NDVBMCwgMHhDNjQ3LCAweEM2NDcsIDB4MjFGOCwKKyAgICAweEM2NDgsIDB4QzY2MiwgMHg0NUEyLCAweEM2NjMsIDB4QzY2MywgMHgyMzIyLCAweEM2NjQsIDB4QzY3MSwgMHg0NUJELAorICAgIDB4QzY3MiwgMHhDNjcyLCAweDIzMzYsIDB4QzY3MywgMHhDNjdFLCAweDQ1Q0IsIDB4QzY4MCwgMHhDNkEwLCAweDQ1RDcsCisgICAgMHhDNkExLCAweEM2RkUsIDB4MEJDMCwgMHhDNzQwLCAweEM3NjUsIDB4NDVGOCwgMHhDNzY2LCAweEM3NjYsIDB4MjJBQiwKKyAgICAweEM3NjcsIDB4Qzc2RSwgMHg0NjFFLCAweEM3NkYsIDB4Qzc2RiwgMHgxRkJGLCAweEM3NzAsIDB4Qzc3NSwgMHg0NjI2LAorICAgIDB4Qzc3NiwgMHhDNzc2LCAweDFGN0QsIDB4Qzc3NywgMHhDNzdBLCAweDQ2MkMsIDB4Qzc3QiwgMHhDNzdCLCAweDIzMzMsCisgICAgMHhDNzdDLCAweEM3N0UsIDB4NDYzMCwgMHhDNzgwLCAweEM3QTAsIDB4NDYzMywgMHhDN0ExLCAweEM3RkUsIDB4MEMxRSwKKyAgICAweEM4NDAsIDB4Qzg0MCwgMHg0NjU0LCAweEM4NDEsIDB4Qzg0MSwgMHgxRjRELCAweEM4NDIsIDB4Qzg0RSwgMHg0NjU1LAorICAgIDB4Qzg0RiwgMHhDODRGLCAweDIzMzQsIDB4Qzg1MCwgMHhDODUxLCAweDQ2NjIsIDB4Qzg1MiwgMHhDODUyLCAweDFGRjEsCisgICAgMHhDODUzLCAweEM4NjUsIDB4NDY2NCwgMHhDODY2LCAweEM4NjYsIDB4MjE4QiwgMHhDODY3LCAweEM4NkQsIDB4NDY3NywKKyAgICAweEM4NkUsIDB4Qzg2RSwgMHgyMzQ5LCAweEM4NkYsIDB4Qzg3RCwgMHg0NjdFLCAweEM4N0UsIDB4Qzg3RSwgMHgyMjBCLAorICAgIDB4Qzg4MCwgMHhDODg2LCAweDQ2OEQsIDB4Qzg4NywgMHhDODg3LCAweDIzNDYsIDB4Qzg4OCwgMHhDODkxLCAweDQ2OTQsCisgICAgMHhDODkyLCAweEM4OTIsIDB4MjM0NywgMHhDODkzLCAweEM4OTMsIDB4NDY5RSwgMHhDODk0LCAweEM4OTQsIDB4MjE5MywKKyAgICAweEM4OTUsIDB4Qzg5OCwgMHg0NjlGLCAweEM4OTksIDB4Qzg5OSwgMHgyNkExLCAweEM4OUEsIDB4Qzg5QywgMHg0NkEzLAorICAgIDB4Qzg5RCwgMHhDODlELCAweDFGNjIsIDB4Qzg5RSwgMHhDOEEwLCAweDQ2QTYsIDB4QzhBMSwgMHhDOEZFLCAweDBDN0MsCisgICAgMHhDOTQwLCAweEM5NEUsIDB4NDZBOSwgMHhDOTRGLCAweEM5NEYsIDB4MjM0RCwgMHhDOTUwLCAweEM5NTAsIDB4MjM0OCwKKyAgICAweEM5NTEsIDB4Qzk2RCwgMHg0NkI4LCAweEM5NkUsIDB4Qzk2RSwgMHgxRTYwLCAweEM5NkYsIDB4Qzk2RiwgMHg0NkQ1LAorICAgIDB4Qzk3MCwgMHhDOTcwLCAweDIzNDUsIDB4Qzk3MSwgMHhDOTc2LCAweDQ2RDYsIDB4Qzk3NywgMHhDOTc3LCAweDFGMTIsCisgICAgMHhDOTc4LCAweEM5N0UsIDB4NDZEQywgMHhDOTgwLCAweEM5OEUsIDB4NDZFMywgMHhDOThGLCAweEM5OEYsIDB4MjAxOCwKKyAgICAweEM5OTAsIDB4Qzk5MCwgMHgyMzM1LCAweEM5OTEsIDB4Qzk5QiwgMHg0NkYyLCAweEM5OUMsIDB4Qzk5QywgMHgyMzNDLAorICAgIDB4Qzk5RCwgMHhDOUEwLCAweDQ2RkQsIDB4QzlBMSwgMHhDOUZFLCAweDBDREEsIDB4Q0E0MCwgMHhDQTRELCAweDQ3MDEsCisgICAgMHhDQTRFLCAweENBNEUsIDB4MjY2RiwgMHhDQTRGLCAweENBNTUsIDB4NDcwRiwgMHhDQTU2LCAweENBNTYsIDB4MjM1MSwKKyAgICAweENBNTcsIDB4Q0E1OCwgMHg0NzE2LCAweENBNTksIDB4Q0E1OSwgMHgxRkEwLCAweENBNUEsIDB4Q0E1QiwgMHg0NzE4LAorICAgIDB4Q0E1QywgMHhDQTVDLCAweDIzMzgsIDB4Q0E1RCwgMHhDQTYwLCAweDQ3MUEsIDB4Q0E2MSwgMHhDQTYxLCAweDIyMUIsCisgICAgMHhDQTYyLCAweENBNkQsIDB4NDcxRSwgMHhDQTZFLCAweENBNkUsIDB4MjM0MiwgMHhDQTZGLCAweENBNzEsIDB4NDcyQSwKKyAgICAweENBNzIsIDB4Q0E3MiwgMHgyMzRGLCAweENBNzMsIDB4Q0E3NiwgMHg0NzJELCAweENBNzcsIDB4Q0E3NywgMHgyMzNELAorICAgIDB4Q0E3OCwgMHhDQTdBLCAweDQ3MzEsIDB4Q0E3QiwgMHhDQTdCLCAweDIzNDQsIDB4Q0E3QywgMHhDQTdDLCAweDIzMzEsCisgICAgMHhDQTdELCAweENBN0QsIDB4NDczNCwgMHhDQTdFLCAweENBN0UsIDB4MjM0QiwgMHhDQTgwLCAweENBODAsIDB4NDczNSwKKyAgICAweENBODEsIDB4Q0E4MSwgMHgyMzNCLCAweENBODIsIDB4Q0E4OCwgMHg0NzM2LCAweENBODksIDB4Q0E4OSwgMHgyMzUwLAorICAgIDB4Q0E4QSwgMHhDQThELCAweDQ3M0QsIDB4Q0E4RSwgMHhDQThFLCAweDFFQjQsIDB4Q0E4RiwgMHhDQThGLCAweDIxQTYsCisgICAgMHhDQTkwLCAweENBOTEsIDB4NDc0MSwgMHhDQTkyLCAweENBOTIsIDB4MjFDQiwgMHhDQTkzLCAweENBOTksIDB4NDc0MywKKyAgICAweENBOUEsIDB4Q0E5QSwgMHgyMzU1LCAweENBOUIsIDB4Q0FBMCwgMHg0NzRBLCAweENBQTEsIDB4Q0FGRSwgMHgwRDM4LAorICAgIDB4Q0I0MCwgMHhDQjQyLCAweDQ3NTAsIDB4Q0I0MywgMHhDQjQzLCAweDIzM0UsIDB4Q0I0NCwgMHhDQjQ0LCAweDQ3NTMsCisgICAgMHhDQjQ1LCAweENCNDUsIDB4MUY3NCwgMHhDQjQ2LCAweENCNDYsIDB4NDc1NCwgMHhDQjQ3LCAweENCNDcsIDB4MjMzMCwKKyAgICAweENCNDgsIDB4Q0I0QSwgMHg0NzU1LCAweENCNEIsIDB4Q0I0QiwgMHgyNjgwLCAweENCNEMsIDB4Q0I0RCwgMHg0NzU4LAorICAgIDB4Q0I0RSwgMHhDQjRFLCAweDIwREEsIDB4Q0I0RiwgMHhDQjU2LCAweDQ3NUEsIDB4Q0I1NywgMHhDQjU3LCAweDIzNEEsCisgICAgMHhDQjU4LCAweENCNUMsIDB4NDc2MiwgMHhDQjVELCAweENCNUQsIDB4MUY5MSwgMHhDQjVFLCAweENCNUUsIDB4NDc2NywKKyAgICAweENCNUYsIDB4Q0I1RiwgMHgyMTA3LCAweENCNjAsIDB4Q0I2OSwgMHg0NzY4LCAweENCNkEsIDB4Q0I2QSwgMHgyMzNGLAorICAgIDB4Q0I2QiwgMHhDQjdBLCAweDQ3NzIsIDB4Q0I3QiwgMHhDQjdCLCAweDFGRjQsIDB4Q0I3QywgMHhDQjdDLCAweDIzNDMsCisgICAgMHhDQjdELCAweENCN0UsIDB4NDc4MiwgMHhDQjgwLCAweENCODYsIDB4NDc4NCwgMHhDQjg3LCAweENCODcsIDB4MjIxMiwKKyAgICAweENCODgsIDB4Q0I4RCwgMHg0NzhCLCAweENCOEUsIDB4Q0I4RSwgMHgyMjA3LCAweENCOEYsIDB4Q0I5MSwgMHg0NzkxLAorICAgIDB4Q0I5MiwgMHhDQjkyLCAweDIzNTksIDB4Q0I5MywgMHhDQjlCLCAweDQ3OTQsIDB4Q0I5QywgMHhDQjlDLCAweDIyNTQsCisgICAgMHhDQjlELCAweENCOUQsIDB4NDc5RCwgMHhDQjlFLCAweENCOUUsIDB4MjMzMiwgMHhDQjlGLCAweENCQTAsIDB4NDc5RSwKKyAgICAweENCQTEsIDB4Q0JGRSwgMHgwRDk2LCAweENDNDAsIDB4Q0M0MCwgMHgxRTI2LCAweENDNDEsIDB4Q0M0MSwgMHgyMzU3LAorICAgIDB4Q0M0MiwgMHhDQzQ4LCAweDQ3QTAsIDB4Q0M0OSwgMHhDQzQ5LCAweDIzNTgsIDB4Q0M0QSwgMHhDQzRBLCAweDIwNDIsCisgICAgMHhDQzRCLCAweENDNEIsIDB4MjE1MywgMHhDQzRDLCAweENDNEUsIDB4NDdBNywgMHhDQzRGLCAweENDNEYsIDB4MjBCQiwKKyAgICAweENDNTAsIDB4Q0M1QiwgMHg0N0FBLCAweENDNUMsIDB4Q0M1QywgMHgyMzVBLCAweENDNUQsIDB4Q0M1RiwgMHg0N0I2LAorICAgIDB4Q0M2MCwgMHhDQzYwLCAweDIzNTYsIDB4Q0M2MSwgMHhDQzYzLCAweDQ3QjksIDB4Q0M2NCwgMHhDQzY0LCAweDIzMzcsCisgICAgMHhDQzY1LCAweENDNkMsIDB4NDdCQywgMHhDQzZELCAweENDNkQsIDB4MUZGOSwgMHhDQzZFLCAweENDNzgsIDB4NDdDNCwKKyAgICAweENDNzksIDB4Q0M3OSwgMHgyMzUzLCAweENDN0EsIDB4Q0M3QywgMHg0N0NGLCAweENDN0QsIDB4Q0M3RCwgMHgyMDYxLAorICAgIDB4Q0M3RSwgMHhDQzdFLCAweDQ3RDIsIDB4Q0M4MCwgMHhDQzhELCAweDQ3RDMsIDB4Q0M4RSwgMHhDQzhFLCAweDFFOTUsCisgICAgMHhDQzhGLCAweENDOTMsIDB4NDdFMSwgMHhDQzk0LCAweENDOTQsIDB4MjA0OSwgMHhDQzk1LCAweENDOTUsIDB4NDdFNiwKKyAgICAweENDOTYsIDB4Q0M5NiwgMHgxRjQyLCAweENDOTcsIDB4Q0M5QywgMHg0N0U3LCAweENDOUQsIDB4Q0M5RCwgMHgxRkU4LAorICAgIDB4Q0M5RSwgMHhDQ0EwLCAweDQ3RUQsIDB4Q0NBMSwgMHhDQ0ZFLCAweDBERjQsIDB4Q0Q0MCwgMHhDRDdFLCAweDQ3RjAsCisgICAgMHhDRDgwLCAweENEOEYsIDB4NDgyRiwgMHhDRDkwLCAweENEOTAsIDB4MjVEQSwgMHhDRDkxLCAweENEOTcsIDB4NDgzRiwKKyAgICAweENEOTgsIDB4Q0Q5OCwgMHgyNUQ3LCAweENEOTksIDB4Q0RBMCwgMHg0ODQ2LCAweENEQTEsIDB4Q0RGRSwgMHgwRTUyLAorICAgIDB4Q0U0MCwgMHhDRTY2LCAweDQ4NEUsIDB4Q0U2NywgMHhDRTY3LCAweDIxMkUsIDB4Q0U2OCwgMHhDRTcxLCAweDQ4NzUsCisgICAgMHhDRTcyLCAweENFNzIsIDB4MjFCMiwgMHhDRTczLCAweENFN0UsIDB4NDg3RiwgMHhDRTgwLCAweENFODAsIDB4NDg4QiwKKyAgICAweENFODEsIDB4Q0U4MSwgMHgyMTlFLCAweENFODIsIDB4Q0U4NiwgMHg0ODhDLCAweENFODcsIDB4Q0U4NywgMHgyNURDLAorICAgIDB4Q0U4OCwgMHhDRTlBLCAweDQ4OTEsIDB4Q0U5QiwgMHhDRTlCLCAweDIwNkMsIDB4Q0U5QywgMHhDRTlELCAweDQ4QTQsCisgICAgMHhDRTlFLCAweENFOUUsIDB4MjIyNiwgMHhDRTlGLCAweENFQTAsIDB4NDhBNiwgMHhDRUExLCAweENFRkUsIDB4MEVCMCwKKyAgICAweENGNDAsIDB4Q0Y0RCwgMHg0OEE4LCAweENGNEUsIDB4Q0Y0RSwgMHgyNUUwLCAweENGNEYsIDB4Q0Y1NCwgMHg0OEI2LAorICAgIDB4Q0Y1NSwgMHhDRjU1LCAweDIyN0IsIDB4Q0Y1NiwgMHhDRjU3LCAweDQ4QkMsIDB4Q0Y1OCwgMHhDRjU4LCAweDI1REUsCisgICAgMHhDRjU5LCAweENGNUIsIDB4NDhCRSwgMHhDRjVDLCAweENGNUMsIDB4MjVFMSwgMHhDRjVELCAweENGNkIsIDB4NDhDMSwKKyAgICAweENGNkMsIDB4Q0Y2QywgMHgyNUQ1LCAweENGNkQsIDB4Q0Y3MiwgMHg0OEQwLCAweENGNzMsIDB4Q0Y3MywgMHgxRTZCLAorICAgIDB4Q0Y3NCwgMHhDRjc0LCAweDQ4RDYsIDB4Q0Y3NSwgMHhDRjc1LCAweDI1REIsIDB4Q0Y3NiwgMHhDRjc3LCAweDQ4RDcsCisgICAgMHhDRjc4LCAweENGNzgsIDB4MUU4OSwgMHhDRjc5LCAweENGN0IsIDB4NDhEOSwgMHhDRjdDLCAweENGN0MsIDB4MjVEOSwKKyAgICAweENGN0QsIDB4Q0Y3RSwgMHg0OERDLCAweENGODAsIDB4Q0Y4MCwgMHg0OERFLCAweENGODEsIDB4Q0Y4MSwgMHgyMjExLAorICAgIDB4Q0Y4MiwgMHhDRjg4LCAweDQ4REYsIDB4Q0Y4OSwgMHhDRjg5LCAweDIyMjksIDB4Q0Y4QSwgMHhDRjhBLCAweDI1RDYsCisgICAgMHhDRjhCLCAweENGOTIsIDB4NDhFNiwgMHhDRjkzLCAweENGOTMsIDB4MjVERCwgMHhDRjk0LCAweENGOTQsIDB4MjVERiwKKyAgICAweENGOTUsIDB4Q0Y5RCwgMHg0OEVFLCAweENGOUUsIDB4Q0Y5RSwgMHgxRkVGLCAweENGOUYsIDB4Q0Y5RiwgMHg0OEY3LAorICAgIDB4Q0ZBMCwgMHhDRkEwLCAweDI1RDgsIDB4Q0ZBMSwgMHhDRkZFLCAweDBGMEUsIDB4RDA0MCwgMHhEMDRDLCAweDQ4RjgsCisgICAgMHhEMDRELCAweEQwNEQsIDB4MUYyOSwgMHhEMDRFLCAweEQwNTAsIDB4NDkwNSwgMHhEMDUxLCAweEQwNTEsIDB4MUU1QiwKKyAgICAweEQwNTIsIDB4RDA1NCwgMHg0OTA4LCAweEQwNTUsIDB4RDA1NSwgMHgyMDc2LCAweEQwNTYsIDB4RDA1QiwgMHg0OTBCLAorICAgIDB4RDA1QywgMHhEMDVDLCAweDIyOTcsIDB4RDA1RCwgMHhEMDVGLCAweDQ5MTEsIDB4RDA2MCwgMHhEMDYwLCAweDI2OTAsCisgICAgMHhEMDYxLCAweEQwNjYsIDB4NDkxNCwgMHhEMDY3LCAweEQwNjcsIDB4MjEzRiwgMHhEMDY4LCAweEQwNkIsIDB4NDkxQSwKKyAgICAweEQwNkMsIDB4RDA2QywgMHgyMTk4LCAweEQwNkQsIDB4RDA2RCwgMHg0OTFFLCAweEQwNkUsIDB4RDA2RSwgMHgxRTg4LAorICAgIDB4RDA2RiwgMHhEMDdDLCAweDQ5MUYsIDB4RDA3RCwgMHhEMDdELCAweDIyOEMsIDB4RDA3RSwgMHhEMDdFLCAweDQ5MkQsCisgICAgMHhEMDgwLCAweEQwQTAsIDB4NDkyRSwgMHhEMEExLCAweEQwRkUsIDB4MEY2QywgMHhEMTQwLCAweEQxNTQsIDB4NDk0RiwKKyAgICAweEQxNTUsIDB4RDE1NSwgMHgyNUYxLCAweEQxNTYsIDB4RDE1OCwgMHg0OTY0LCAweEQxNTksIDB4RDE1OSwgMHgyMDBDLAorICAgIDB4RDE1QSwgMHhEMTYwLCAweDQ5NjcsIDB4RDE2MSwgMHhEMTYxLCAweDFFNTgsIDB4RDE2MiwgMHhEMTYyLCAweDIyQUMsCisgICAgMHhEMTYzLCAweEQxNzQsIDB4NDk2RSwgMHhEMTc1LCAweEQxNzUsIDB4MjZBNywgMHhEMTc2LCAweEQxN0MsIDB4NDk4MCwKKyAgICAweEQxN0QsIDB4RDE3RCwgMHgyNjc2LCAweEQxN0UsIDB4RDE3RSwgMHg0OTg3LCAweEQxODAsIDB4RDE5QywgMHg0OTg4LAorICAgIDB4RDE5RCwgMHhEMTlELCAweDFGRTEsIDB4RDE5RSwgMHhEMTlFLCAweDI1QkIsIDB4RDE5RiwgMHhEMUEwLCAweDQ5QTUsCisgICAgMHhEMUExLCAweEQxRkUsIDB4MEZDQSwgMHhEMjQwLCAweEQyNDAsIDB4MjVCRSwgMHhEMjQxLCAweEQyNDIsIDB4NDlBNywKKyAgICAweEQyNDMsIDB4RDI0MywgMHgyMkRELCAweEQyNDQsIDB4RDI0QywgMHg0OUE5LCAweEQyNEQsIDB4RDI0RCwgMHgyNUJELAorICAgIDB4RDI0RSwgMHhEMjVCLCAweDQ5QjIsIDB4RDI1QywgMHhEMjVDLCAweDFFMkEsIDB4RDI1RCwgMHhEMjYyLCAweDQ5QzAsCisgICAgMHhEMjYzLCAweEQyNjMsIDB4MjVCQywgMHhEMjY0LCAweEQyNjQsIDB4MjVCQSwgMHhEMjY1LCAweEQyNjcsIDB4NDlDNiwKKyAgICAweEQyNjgsIDB4RDI2OCwgMHgyNUJGLCAweEQyNjksIDB4RDI2QywgMHg0OUM5LCAweEQyNkQsIDB4RDI2RCwgMHgyMTg3LAorICAgIDB4RDI2RSwgMHhEMjZFLCAweDQ5Q0QsIDB4RDI2RiwgMHhEMjZGLCAweDI2NkIsIDB4RDI3MCwgMHhEMjcxLCAweDQ5Q0UsCisgICAgMHhEMjcyLCAweEQyNzIsIDB4MUU3RiwgMHhEMjczLCAweEQyNzQsIDB4NDlEMCwgMHhEMjc1LCAweEQyNzUsIDB4MjFBRCwKKyAgICAweEQyNzYsIDB4RDI3RSwgMHg0OUQyLCAweEQyODAsIDB4RDI4OSwgMHg0OURCLCAweEQyOEEsIDB4RDI4QSwgMHgxRjk2LAorICAgIDB4RDI4QiwgMHhEMjhELCAweDQ5RTUsIDB4RDI4RSwgMHhEMjhFLCAweDFGMzIsIDB4RDI4RiwgMHhEMjkxLCAweDQ5RTgsCisgICAgMHhEMjkyLCAweEQyOTIsIDB4MjA4NCwgMHhEMjkzLCAweEQyOTQsIDB4NDlFQiwgMHhEMjk1LCAweEQyOTUsIDB4MjEzNiwKKyAgICAweEQyOTYsIDB4RDI5NiwgMHg0OUVELCAweEQyOTcsIDB4RDI5NywgMHgyNEI4LCAweEQyOTgsIDB4RDI5RiwgMHg0OUVFLAorICAgIDB4RDJBMCwgMHhEMkEwLCAweDI0QkEsIDB4RDJBMSwgMHhEMkZFLCAweDEwMjgsIDB4RDM0MCwgMHhEMzQzLCAweDQ5RjYsCisgICAgMHhEMzQ0LCAweEQzNDQsIDB4MjRCQywgMHhEMzQ1LCAweEQzNDcsIDB4NDlGQSwgMHhEMzQ4LCAweEQzNDgsIDB4MjBFNCwKKyAgICAweEQzNDksIDB4RDM0OSwgMHg0OUZELCAweEQzNEEsIDB4RDM0QSwgMHgyNEI5LCAweEQzNEIsIDB4RDM0QywgMHg0OUZFLAorICAgIDB4RDM0RCwgMHhEMzRELCAweDI0QkQsIDB4RDM0RSwgMHhEMzRGLCAweDRBMDAsIDB4RDM1MCwgMHhEMzUwLCAweDI0QkUsCisgICAgMHhEMzUxLCAweEQzNTQsIDB4NEEwMiwgMHhEMzU1LCAweEQzNTUsIDB4MjRCRiwgMHhEMzU2LCAweEQzNTcsIDB4NEEwNiwKKyAgICAweEQzNTgsIDB4RDM1OCwgMHgxRkQyLCAweEQzNTksIDB4RDM1QSwgMHg0QTA4LCAweEQzNUIsIDB4RDM1QiwgMHgxRkZELAorICAgIDB4RDM1QywgMHhEMzVDLCAweDRBMEEsIDB4RDM1RCwgMHhEMzVELCAweDI0QkIsIDB4RDM1RSwgMHhEMzVFLCAweDFGMkQsCisgICAgMHhEMzVGLCAweEQzNzcsIDB4NEEwQiwgMHhEMzc4LCAweEQzNzgsIDB4MjYwOSwgMHhEMzc5LCAweEQzNzksIDB4NEEyNCwKKyAgICAweEQzN0EsIDB4RDM3QSwgMHgyNjBBLCAweEQzN0IsIDB4RDM3QiwgMHg0QTI1LCAweEQzN0MsIDB4RDM3QywgMHgxRTk0LAorICAgIDB4RDM3RCwgMHhEMzdFLCAweDRBMjYsIDB4RDM4MCwgMHhEMzg0LCAweDRBMjgsIDB4RDM4NSwgMHhEMzg1LCAweDIyREYsCisgICAgMHhEMzg2LCAweEQzODYsIDB4MUVDQiwgMHhEMzg3LCAweEQzODcsIDB4MUYwRCwgMHhEMzg4LCAweEQzOEEsIDB4NEEyRCwKKyAgICAweEQzOEIsIDB4RDM4QiwgMHgxRjc3LCAweEQzOEMsIDB4RDM4QywgMHg0QTMwLCAweEQzOEQsIDB4RDM4RCwgMHgyMUVCLAorICAgIDB4RDM4RSwgMHhEMzhFLCAweDRBMzEsIDB4RDM4RiwgMHhEMzhGLCAweDIyRTEsIDB4RDM5MCwgMHhEMzkwLCAweDRBMzIsCisgICAgMHhEMzkxLCAweEQzOTEsIDB4MjE2RiwgMHhEMzkyLCAweEQzOTIsIDB4NEEzMywgMHhEMzkzLCAweEQzOTMsIDB4MjJFMCwKKyAgICAweEQzOTQsIDB4RDM5NSwgMHg0QTM0LCAweEQzOTYsIDB4RDM5NiwgMHgyMUVBLCAweEQzOTcsIDB4RDM5NywgMHg0QTM2LAorICAgIDB4RDM5OCwgMHhEMzk4LCAweDIyRTIsIDB4RDM5OSwgMHhEMzk5LCAweDIwQ0IsIDB4RDM5QSwgMHhEMzlBLCAweDRBMzcsCisgICAgMHhEMzlCLCAweEQzOUIsIDB4MUY3OCwgMHhEMzlDLCAweEQzOUQsIDB4NEEzOCwgMHhEMzlFLCAweEQzOUUsIDB4MUVFMiwKKyAgICAweEQzOUYsIDB4RDM5RiwgMHg0QTNBLCAweEQzQTAsIDB4RDNBMCwgMHgyMUYyLCAweEQzQTEsIDB4RDNGRSwgMHgxMDg2LAorICAgIDB4RDQ0MCwgMHhENDQwLCAweDRBM0IsIDB4RDQ0MSwgMHhENDQxLCAweDIxNTAsIDB4RDQ0MiwgMHhENDQ0LCAweDRBM0MsCisgICAgMHhENDQ1LCAweEQ0NDUsIDB4MUZEMywgMHhENDQ2LCAweEQ0NDYsIDB4NEEzRiwgMHhENDQ3LCAweEQ0NDcsIDB4MjJFNSwKKyAgICAweEQ0NDgsIDB4RDQ0QiwgMHg0QTQwLCAweEQ0NEMsIDB4RDQ0QywgMHgxRUYyLCAweEQ0NEQsIDB4RDQ0RSwgMHg0QTQ0LAorICAgIDB4RDQ0RiwgMHhENDRGLCAweDIxMUYsIDB4RDQ1MCwgMHhENDUyLCAweDRBNDYsIDB4RDQ1MywgMHhENDUzLCAweDIxREQsCisgICAgMHhENDU0LCAweEQ0NTUsIDB4NEE0OSwgMHhENDU2LCAweEQ0NTYsIDB4MjE1NCwgMHhENDU3LCAweEQ0NTcsIDB4NEE0QiwKKyAgICAweEQ0NTgsIDB4RDQ1OCwgMHgyMkU3LCAweEQ0NTksIDB4RDQ1QiwgMHg0QTRDLCAweEQ0NUMsIDB4RDQ1QywgMHgyMjgyLAorICAgIDB4RDQ1RCwgMHhENDYxLCAweDRBNEYsIDB4RDQ2MiwgMHhENDYyLCAweDIyRTYsIDB4RDQ2MywgMHhENDY2LCAweDRBNTQsCisgICAgMHhENDY3LCAweEQ0NjcsIDB4MjJFOCwgMHhENDY4LCAweEQ0NkQsIDB4NEE1OCwgMHhENDZFLCAweEQ0NkUsIDB4MjJFNCwKKyAgICAweEQ0NkYsIDB4RDQ2RiwgMHg0QTVFLCAweEQ0NzAsIDB4RDQ3MCwgMHgyMjZBLCAweEQ0NzEsIDB4RDQ3MSwgMHg0QTVGLAorICAgIDB4RDQ3MiwgMHhENDcyLCAweDIyRUIsIDB4RDQ3MywgMHhENDczLCAweDRBNjAsIDB4RDQ3NCwgMHhENDc0LCAweDIyRTksCisgICAgMHhENDc1LCAweEQ0NzUsIDB4MjBCRCwgMHhENDc2LCAweEQ0NzcsIDB4NEE2MSwgMHhENDc4LCAweEQ0NzgsIDB4MjJFQSwKKyAgICAweEQ0NzksIDB4RDQ3QSwgMHg0QTYzLCAweEQ0N0IsIDB4RDQ3QiwgMHgyMkJELCAweEQ0N0MsIDB4RDQ3RCwgMHg0QTY1LAorICAgIDB4RDQ3RSwgMHhENDdFLCAweDFFOUUsIDB4RDQ4MCwgMHhENDgxLCAweDRBNjcsIDB4RDQ4MiwgMHhENDgyLCAweDIyRjYsCisgICAgMHhENDgzLCAweEQ0ODMsIDB4MjFFNywgMHhENDg0LCAweEQ0ODQsIDB4MjIxNiwgMHhENDg1LCAweEQ0ODYsIDB4NEE2OSwKKyAgICAweEQ0ODcsIDB4RDQ4NywgMHgyMTM3LCAweEQ0ODgsIDB4RDQ4OSwgMHg0QTZCLCAweEQ0OEEsIDB4RDQ4QSwgMHgyMTJDLAorICAgIDB4RDQ4QiwgMHhENDhCLCAweDRBNkQsIDB4RDQ4QywgMHhENDhDLCAweDFFNjgsIDB4RDQ4RCwgMHhENDhELCAweDIyRjIsCisgICAgMHhENDhFLCAweEQ0OEUsIDB4MUYzNywgMHhENDhGLCAweEQ0OEYsIDB4MjJGMywgMHhENDkwLCAweEQ0OTAsIDB4NEE2RSwKKyAgICAweEQ0OTEsIDB4RDQ5MSwgMHgyMkVGLCAweEQ0OTIsIDB4RDQ5MiwgMHgxRjUwLCAweEQ0OTMsIDB4RDQ5MywgMHgxRjEwLAorICAgIDB4RDQ5NCwgMHhENDk0LCAweDIxQzgsIDB4RDQ5NSwgMHhENDk1LCAweDRBNkYsIDB4RDQ5NiwgMHhENDk2LCAweDIyRjEsCisgICAgMHhENDk3LCAweEQ0OUIsIDB4NEE3MCwgMHhENDlDLCAweEQ0OUMsIDB4MjJGMCwgMHhENDlELCAweEQ0OUUsIDB4NEE3NSwKKyAgICAweEQ0OUYsIDB4RDQ5RiwgMHgyMkVFLCAweEQ0QTAsIDB4RDRBMCwgMHg0QTc3LCAweEQ0QTEsIDB4RDRGRSwgMHgxMEU0LAorICAgIDB4RDU0MCwgMHhENTQyLCAweDRBNzgsIDB4RDU0MywgMHhENTQzLCAweDIyRUQsIDB4RDU0NCwgMHhENTQ0LCAweDIyOUUsCisgICAgMHhENTQ1LCAweEQ1NDUsIDB4MjJFQywgMHhENTQ2LCAweEQ1NDYsIDB4MUZFMiwgMHhENTQ3LCAweEQ1NDksIDB4NEE3QiwKKyAgICAweEQ1NEEsIDB4RDU0QSwgMHgyMEZFLCAweEQ1NEIsIDB4RDU0RCwgMHg0QTdFLCAweEQ1NEUsIDB4RDU0RiwgMHgyMkY5LAorICAgIDB4RDU1MCwgMHhENTUwLCAweDRBODEsIDB4RDU1MSwgMHhENTUxLCAweDFFQUYsIDB4RDU1MiwgMHhENTUzLCAweDRBODIsCisgICAgMHhENTU0LCAweEQ1NTQsIDB4MjIzNiwgMHhENTU1LCAweEQ1NTUsIDB4NEE4NCwgMHhENTU2LCAweEQ1NTYsIDB4MjJGNywKKyAgICAweEQ1NTcsIDB4RDU1OSwgMHg0QTg1LCAweEQ1NUEsIDB4RDU1QSwgMHgyMjNELCAweEQ1NUIsIDB4RDU1QiwgMHg0QTg4LAorICAgIDB4RDU1QywgMHhENTVDLCAweDFFODIsIDB4RDU1RCwgMHhENTVELCAweDFGQjYsIDB4RDU1RSwgMHhENTVFLCAweDRBODksCisgICAgMHhENTVGLCAweEQ1NUYsIDB4MjFBNCwgMHhENTYwLCAweEQ1NjAsIDB4MjFBQSwgMHhENTYxLCAweEQ1NjEsIDB4MjJGOCwKKyAgICAweEQ1NjIsIDB4RDU2MiwgMHgyMTUxLCAweEQ1NjMsIDB4RDU2MywgMHg0QThBLCAweEQ1NjQsIDB4RDU2NCwgMHgxRjYwLAorICAgIDB4RDU2NSwgMHhENTY3LCAweDRBOEIsIDB4RDU2OCwgMHhENTY4LCAweDIxNDcsIDB4RDU2OSwgMHhENTZCLCAweDRBOEUsCisgICAgMHhENTZDLCAweEQ1NkMsIDB4MjE0NSwgMHhENTZELCAweEQ1NkQsIDB4NEE5MSwgMHhENTZFLCAweEQ1NkUsIDB4MUZEQywKKyAgICAweEQ1NkYsIDB4RDU3MSwgMHg0QTkyLCAweEQ1NzIsIDB4RDU3MiwgMHgyMzAxLCAweEQ1NzMsIDB4RDU3NCwgMHg0QTk1LAorICAgIDB4RDU3NSwgMHhENTc1LCAweDFFRjUsIDB4RDU3NiwgMHhENTc3LCAweDRBOTcsIDB4RDU3OCwgMHhENTc4LCAweDIyMTgsCisgICAgMHhENTc5LCAweEQ1N0EsIDB4NEE5OSwgMHhENTdCLCAweEQ1N0IsIDB4MUVDNiwgMHhENTdDLCAweEQ1N0QsIDB4NEE5QiwKKyAgICAweEQ1N0UsIDB4RDU3RSwgMHgyMzAwLCAweEQ1ODAsIDB4RDU4MCwgMHg0QTlELCAweEQ1ODEsIDB4RDU4MSwgMHgyMkI0LAorICAgIDB4RDU4MiwgMHhENTgzLCAweDRBOUUsIDB4RDU4NCwgMHhENTg0LCAweDIxNjksIDB4RDU4NSwgMHhENTg1LCAweDRBQTAsCisgICAgMHhENTg2LCAweEQ1ODYsIDB4MjJGRCwgMHhENTg3LCAweEQ1ODcsIDB4NEFBMSwgMHhENTg4LCAweEQ1ODgsIDB4MjBFQSwKKyAgICAweEQ1ODksIDB4RDU4OSwgMHg0QUEyLCAweEQ1OEEsIDB4RDU4QSwgMHgyMkY0LCAweEQ1OEIsIDB4RDU4QiwgMHg0QUEzLAorICAgIDB4RDU4QywgMHhENThDLCAweDIyRkIsIDB4RDU4RCwgMHhENThELCAweDRBQTQsIDB4RDU4RSwgMHhENThFLCAweDIyRkMsCisgICAgMHhENThGLCAweEQ1OEYsIDB4MjAyNywgMHhENTkwLCAweEQ1OTIsIDB4NEFBNSwgMHhENTkzLCAweEQ1OTMsIDB4MjA2MCwKKyAgICAweEQ1OTQsIDB4RDU5NCwgMHgyMkZGLCAweEQ1OTUsIDB4RDU5NywgMHg0QUE4LCAweEQ1OTgsIDB4RDU5OCwgMHgyMkZFLAorICAgIDB4RDU5OSwgMHhENTk5LCAweDFFQzcsIDB4RDU5QSwgMHhENTlBLCAweDRBQUIsIDB4RDU5QiwgMHhENTlCLCAweDIzMEMsCisgICAgMHhENTlDLCAweEQ1OUUsIDB4NEFBQywgMHhENTlGLCAweEQ1OUYsIDB4MjJGNSwgMHhENUEwLCAweEQ1QTAsIDB4NEFBRiwKKyAgICAweEQ1QTEsIDB4RDVGRSwgMHgxMTQyLCAweEQ2NDAsIDB4RDY0MCwgMHgyMzA2LCAweEQ2NDEsIDB4RDY0MSwgMHg0QUIwLAorICAgIDB4RDY0MiwgMHhENjQyLCAweDIzMEEsIDB4RDY0MywgMHhENjQzLCAweDIxRDMsIDB4RDY0NCwgMHhENjQ2LCAweDRBQjEsCisgICAgMHhENjQ3LCAweEQ2NDcsIDB4MjMwMywgMHhENjQ4LCAweEQ2NDgsIDB4NEFCNCwgMHhENjQ5LCAweEQ2NDksIDB4MjMwNywKKyAgICAweEQ2NEEsIDB4RDY0QSwgMHgyMzBCLCAweEQ2NEIsIDB4RDY0QywgMHg0QUI1LCAweEQ2NEQsIDB4RDY0RCwgMHgxRjVGLAorICAgIDB4RDY0RSwgMHhENjRFLCAweDRBQjcsIDB4RDY0RiwgMHhENjRGLCAweDIzMDksIDB4RDY1MCwgMHhENjUxLCAweDRBQjgsCisgICAgMHhENjUyLCAweEQ2NTIsIDB4MjMwMiwgMHhENjUzLCAweEQ2NTMsIDB4MUYwNCwgMHhENjU0LCAweEQ2NTQsIDB4MjI5RCwKKyAgICAweEQ2NTUsIDB4RDY1NSwgMHg0QUJBLCAweEQ2NTYsIDB4RDY1NiwgMHgyMUZCLCAweEQ2NTcsIDB4RDY1NywgMHg0QUJCLAorICAgIDB4RDY1OCwgMHhENjU4LCAweDIzMDgsIDB4RDY1OSwgMHhENjU5LCAweDRBQkMsIDB4RDY1QSwgMHhENjVBLCAweDIwQUMsCisgICAgMHhENjVCLCAweEQ2NUIsIDB4NEFCRCwgMHhENjVDLCAweEQ2NUMsIDB4MjA4RSwgMHhENjVELCAweEQ2NUQsIDB4MjMwNSwKKyAgICAweEQ2NUUsIDB4RDY1RSwgMHgyMTk3LCAweEQ2NUYsIDB4RDY1RiwgMHg0QUJFLCAweEQ2NjAsIDB4RDY2MCwgMHgyMTcxLAorICAgIDB4RDY2MSwgMHhENjYxLCAweDIyOTgsIDB4RDY2MiwgMHhENjY0LCAweDRBQkYsIDB4RDY2NSwgMHhENjY1LCAweDFGNTcsCisgICAgMHhENjY2LCAweEQ2NjgsIDB4NEFDMiwgMHhENjY5LCAweEQ2NjksIDB4MjA4MiwgMHhENjZBLCAweEQ2NkEsIDB4NEFDNSwKKyAgICAweEQ2NkIsIDB4RDY2QiwgMHgyMzExLCAweEQ2NkMsIDB4RDY2RSwgMHg0QUM2LCAweEQ2NkYsIDB4RDY2RiwgMHgyMzA0LAorICAgIDB4RDY3MCwgMHhENjcwLCAweDRBQzksIDB4RDY3MSwgMHhENjcxLCAweDIzMEYsIDB4RDY3MiwgMHhENjcyLCAweDFFMzUsCisgICAgMHhENjczLCAweEQ2NzMsIDB4NEFDQSwgMHhENjc0LCAweEQ2NzQsIDB4MjBEMSwgMHhENjc1LCAweEQ2NzUsIDB4MjMxMCwKKyAgICAweEQ2NzYsIDB4RDY3NiwgMHgxRkEzLCAweEQ2NzcsIDB4RDY3NywgMHg0QUNCLCAweEQ2NzgsIDB4RDY3OCwgMHgyMUQ2LAorICAgIDB4RDY3OSwgMHhENjdCLCAweDRBQ0MsIDB4RDY3QywgMHhENjdDLCAweDIyMDYsIDB4RDY3RCwgMHhENjdFLCAweDRBQ0YsCisgICAgMHhENjgwLCAweEQ2ODIsIDB4NEFEMSwgMHhENjgzLCAweEQ2ODMsIDB4MjMwRCwgMHhENjg0LCAweEQ2ODUsIDB4NEFENCwKKyAgICAweEQ2ODYsIDB4RDY4NiwgMHgyMzEyLCAweEQ2ODcsIDB4RDY4NywgMHgyMDhELCAweEQ2ODgsIDB4RDY4OCwgMHgyMzEzLAorICAgIDB4RDY4OSwgMHhENjhELCAweDRBRDYsIDB4RDY4RSwgMHhENjhFLCAweDIyRTMsIDB4RDY4RiwgMHhENjkzLCAweDRBREIsCisgICAgMHhENjk0LCAweEQ2OTQsIDB4MUZCQSwgMHhENjk1LCAweEQ2OTgsIDB4NEFFMCwgMHhENjk5LCAweEQ2OTksIDB4MjA3OCwKKyAgICAweEQ2OUEsIDB4RDZBMCwgMHg0QUU0LCAweEQ2QTEsIDB4RDZGRSwgMHgxMUEwLCAweEQ3NDAsIDB4RDc0MiwgMHg0QUVCLAorICAgIDB4RDc0MywgMHhENzQzLCAweDIyODgsIDB4RDc0NCwgMHhENzQ3LCAweDRBRUUsIDB4RDc0OCwgMHhENzQ4LCAweDIzMTYsCisgICAgMHhENzQ5LCAweEQ3NDksIDB4MUY2QiwgMHhENzRBLCAweEQ3NEYsIDB4NEFGMiwgMHhENzUwLCAweEQ3NTAsIDB4MjMxNCwKKyAgICAweEQ3NTEsIDB4RDc1MSwgMHg0QUY4LCAweEQ3NTIsIDB4RDc1MiwgMHgyMTMwLCAweEQ3NTMsIDB4RDc1MywgMHgyMzE1LAorICAgIDB4RDc1NCwgMHhENzU0LCAweDIxNjgsIDB4RDc1NSwgMHhENzU1LCAweDRBRjksIDB4RDc1NiwgMHhENzU2LCAweDIwQzQsCisgICAgMHhENzU3LCAweEQ3NjMsIDB4NEFGQSwgMHhENzY0LCAweEQ3NjQsIDB4MjMxOCwgMHhENzY1LCAweEQ3NjYsIDB4NEIwNywKKyAgICAweEQ3NjcsIDB4RDc2NywgMHgyMjE5LCAweEQ3NjgsIDB4RDc2OCwgMHgyMjE3LCAweEQ3NjksIDB4RDc2QiwgMHg0QjA5LAorICAgIDB4RDc2QywgMHhENzZDLCAweDIwRDUsIDB4RDc2RCwgMHhENzZFLCAweDRCMEMsIDB4RDc2RiwgMHhENzZGLCAweDFGNEEsCisgICAgMHhENzcwLCAweEQ3NzQsIDB4NEIwRSwgMHhENzc1LCAweEQ3NzUsIDB4MjI0MCwgMHhENzc2LCAweEQ3NzcsIDB4NEIxMywKKyAgICAweEQ3NzgsIDB4RDc3OCwgMHgxRUQzLCAweEQ3NzksIDB4RDc3RSwgMHg0QjE1LCAweEQ3ODAsIDB4RDc4MiwgMHg0QjFCLAorICAgIDB4RDc4MywgMHhENzgzLCAweDFFNDksIDB4RDc4NCwgMHhENzg2LCAweDRCMUUsIDB4RDc4NywgMHhENzg3LCAweDI2MUIsCisgICAgMHhENzg4LCAweEQ3OEEsIDB4NEIyMSwgMHhENzhCLCAweEQ3OEIsIDB4MUU2RCwgMHhENzhDLCAweEQ3OEMsIDB4MjBGOCwKKyAgICAweEQ3OEQsIDB4RDc4RCwgMHg0QjI0LCAweEQ3OEUsIDB4RDc4RSwgMHgxRkZCLCAweEQ3OEYsIDB4RDc4RiwgMHgyMzE5LAorICAgIDB4RDc5MCwgMHhENzk0LCAweDRCMjUsIDB4RDc5NSwgMHhENzk1LCAweDIzMEUsIDB4RDc5NiwgMHhENzk2LCAweDRCMkEsCisgICAgMHhENzk3LCAweEQ3OTcsIDB4MjMxNywgMHhENzk4LCAweEQ3QTAsIDB4NEIyQiwgMHhEN0ExLCAweEQ3RjksIDB4MTFGRSwKKyAgICAweEQ4NDAsIDB4RDg0QywgMHg0QjM0LCAweEQ4NEQsIDB4RDg0RCwgMHgyMEM4LCAweEQ4NEUsIDB4RDg1MiwgMHg0QjQxLAorICAgIDB4RDg1MywgMHhEODUzLCAweDFFRkQsIDB4RDg1NCwgMHhEODdFLCAweDRCNDYsIDB4RDg4MCwgMHhEODhGLCAweDRCNzEsCisgICAgMHhEODkwLCAweEQ4OTAsIDB4MUUzQiwgMHhEODkxLCAweEQ4OTEsIDB4MjI3RiwgMHhEODkyLCAweEQ4OTIsIDB4NEI4MSwKKyAgICAweEQ4OTMsIDB4RDg5MywgMHgxRjBDLCAweEQ4OTQsIDB4RDg5NCwgMHgxRTU5LCAweEQ4OTUsIDB4RDg5NSwgMHgxRjI0LAorICAgIDB4RDg5NiwgMHhEODk5LCAweDRCODIsIDB4RDg5QSwgMHhEODlBLCAweDIwQkEsIDB4RDg5QiwgMHhEODlCLCAweDFGNjUsCisgICAgMHhEODlDLCAweEQ4OUMsIDB4MUVGMCwgMHhEODlELCAweEQ4OUQsIDB4MjE2NCwgMHhEODlFLCAweEQ4OUUsIDB4MUYzMCwKKyAgICAweEQ4OUYsIDB4RDg5RiwgMHgyMjYxLCAweEQ4QTAsIDB4RDhBMCwgMHg0Qjg2LCAweEQ4QTEsIDB4RDhGRSwgMHgxMjU3LAorICAgIDB4RDk0MCwgMHhEOTQwLCAweDRCODcsIDB4RDk0MSwgMHhEOTQxLCAweDIyQTIsIDB4RDk0MiwgMHhEOTQyLCAweDI0QUIsCisgICAgMHhEOTQzLCAweEQ5NDMsIDB4NEI4OCwgMHhEOTQ0LCAweEQ5NDQsIDB4MjRBRiwgMHhEOTQ1LCAweEQ5NDUsIDB4MUVFOCwKKyAgICAweEQ5NDYsIDB4RDk0NiwgMHgxRjM5LCAweEQ5NDcsIDB4RDk0NywgMHg0Qjg5LCAweEQ5NDgsIDB4RDk0OCwgMHgxRTQ4LAorICAgIDB4RDk0OSwgMHhEOTQ5LCAweDIwNzAsIDB4RDk0QSwgMHhEOTRBLCAweDFFQTgsIDB4RDk0QiwgMHhEOTRCLCAweDRCOEEsCisgICAgMHhEOTRDLCAweEQ5NEMsIDB4MjRBQywgMHhEOTRELCAweEQ5NEQsIDB4MUVGNywgMHhEOTRFLCAweEQ5NEUsIDB4MjE3NiwKKyAgICAweEQ5NEYsIDB4RDk0RiwgMHgyNEFELCAweEQ5NTAsIDB4RDk1MCwgMHg0QjhCLCAweEQ5NTEsIDB4RDk1MSwgMHgyMDdCLAorICAgIDB4RDk1MiwgMHhEOTUyLCAweDFGNDUsIDB4RDk1MywgMHhEOTUzLCAweDI0QUEsIDB4RDk1NCwgMHhEOTU0LCAweDIwNEIsCisgICAgMHhEOTU1LCAweEQ5NTUsIDB4MjAyRiwgMHhEOTU2LCAweEQ5NTYsIDB4MUY1QSwgMHhEOTU3LCAweEQ5NTcsIDB4MjRCMCwKKyAgICAweEQ5NTgsIDB4RDk1OCwgMHg0QjhDLCAweEQ5NTksIDB4RDk1OSwgMHgyMkI3LCAweEQ5NUEsIDB4RDk1QSwgMHgxRjdGLAorICAgIDB4RDk1QiwgMHhEOTVCLCAweDRCOEQsIDB4RDk1QywgMHhEOTVDLCAweDIyNjUsIDB4RDk1RCwgMHhEOTYyLCAweDRCOEUsCisgICAgMHhEOTYzLCAweEQ5NjMsIDB4MjRCMiwgMHhEOTY0LCAweEQ5NjQsIDB4MjExQiwgMHhEOTY1LCAweEQ5NjUsIDB4MUU1MSwKKyAgICAweEQ5NjYsIDB4RDk2NiwgMHg0Qjk0LCAweEQ5NjcsIDB4RDk2NywgMHgyNEI0LCAweEQ5NjgsIDB4RDk2QiwgMHg0Qjk1LAorICAgIDB4RDk2QywgMHhEOTZDLCAweDI0QjMsIDB4RDk2RCwgMHhEOTZELCAweDRCOTksIDB4RDk2RSwgMHhEOTZFLCAweDFFOUYsCisgICAgMHhEOTZGLCAweEQ5NkYsIDB4NEI5QSwgMHhEOTcwLCAweEQ5NzAsIDB4MjExOCwgMHhEOTcxLCAweEQ5NzEsIDB4NEI5QiwKKyAgICAweEQ5NzIsIDB4RDk3MiwgMHgyMEI0LCAweEQ5NzMsIDB4RDk3MywgMHgyM0FGLCAweEQ5NzQsIDB4RDk3NCwgMHgyMUJCLAorICAgIDB4RDk3NSwgMHhEOTc1LCAweDIwNzIsIDB4RDk3NiwgMHhEOTc2LCAweDFGOTUsIDB4RDk3NywgMHhEOTc3LCAweDRCOUMsCisgICAgMHhEOTc4LCAweEQ5NzgsIDB4MUYwQSwgMHhEOTc5LCAweEQ5NzksIDB4MjRCNiwgMHhEOTdBLCAweEQ5N0IsIDB4NEI5RCwKKyAgICAweEQ5N0MsIDB4RDk3QywgMHgyMjkxLCAweEQ5N0QsIDB4RDk3RCwgMHgyNEI1LCAweEQ5N0UsIDB4RDk3RSwgMHgyMjc4LAorICAgIDB4RDk4MCwgMHhEOTgwLCAweDFFRDQsIDB4RDk4MSwgMHhEOTg2LCAweDRCOUYsIDB4RDk4NywgMHhEOTg3LCAweDFGRjMsCisgICAgMHhEOTg4LCAweEQ5OEMsIDB4NEJBNSwgMHhEOThELCAweEQ5OEQsIDB4MjJBOSwgMHhEOThFLCAweEQ5OEUsIDB4MjRCNywKKyAgICAweEQ5OEYsIDB4RDk4RiwgMHgxRjI4LCAweEQ5OTAsIDB4RDk5MCwgMHgyMTA5LCAweEQ5OTEsIDB4RDk5MSwgMHgyMkM3LAorICAgIDB4RDk5MiwgMHhEOTk2LCAweDRCQUEsIDB4RDk5NywgMHhEOTk3LCAweDI0QUUsIDB4RDk5OCwgMHhEOTk4LCAweDIyQjEsCisgICAgMHhEOTk5LCAweEQ5OUEsIDB4NEJBRiwgMHhEOTlCLCAweEQ5OUIsIDB4MjI2NiwgMHhEOTlDLCAweEQ5OUMsIDB4NEJCMSwKKyAgICAweEQ5OUQsIDB4RDk5RCwgMHgyMjVCLCAweEQ5OUUsIDB4RDk5RSwgMHgyMkM0LCAweEQ5OUYsIDB4RDk5RiwgMHg0QkIyLAorICAgIDB4RDlBMCwgMHhEOUEwLCAweDIxMTUsIDB4RDlBMSwgMHhEOUZFLCAweDEyQjUsIDB4REE0MCwgMHhEQTQwLCAweDRCQjMsCisgICAgMHhEQTQxLCAweERBNDEsIDB4MjIyQSwgMHhEQTQyLCAweERBNDIsIDB4MjRCMSwgMHhEQTQzLCAweERBNDcsIDB4NEJCNCwKKyAgICAweERBNDgsIDB4REE0OCwgMHgyMTNELCAweERBNDksIDB4REE0QywgMHg0QkI5LCAweERBNEQsIDB4REE0RCwgMHgxRjE1LAorICAgIDB4REE0RSwgMHhEQTRFLCAweDIyNUMsIDB4REE0RiwgMHhEQTcyLCAweDRCQkQsIDB4REE3MywgMHhEQTczLCAweDFGMTQsCisgICAgMHhEQTc0LCAweERBNzYsIDB4NEJFMSwgMHhEQTc3LCAweERBNzcsIDB4MjI3QSwgMHhEQTc4LCAweERBN0UsIDB4NEJFNCwKKyAgICAweERBODAsIDB4REE4NCwgMHg0QkVCLCAweERBODUsIDB4REE4NSwgMHgyMEVFLCAweERBODYsIDB4REE4RCwgMHg0QkYwLAorICAgIDB4REE4RSwgMHhEQThFLCAweDI1RjgsIDB4REE4RiwgMHhEQUEwLCAweDRCRjgsIDB4REFBMSwgMHhEQUZFLCAweDEzMTMsCisgICAgMHhEQjQwLCAweERCNUYsIDB4NEMwQSwgMHhEQjYwLCAweERCNjAsIDB4MUY5NCwgMHhEQjYxLCAweERCNzcsIDB4NEMyQSwKKyAgICAweERCNzgsIDB4REI3OCwgMHgyMjMwLCAweERCNzksIDB4REI3RSwgMHg0QzQxLCAweERCODAsIDB4REI4MywgMHg0QzQ3LAorICAgIDB4REI4NCwgMHhEQjg0LCAweDI1RkQsIDB4REI4NSwgMHhEQjhBLCAweDRDNEIsIDB4REI4QiwgMHhEQjhCLCAweDI2MDAsCisgICAgMHhEQjhDLCAweERCOTcsIDB4NEM1MSwgMHhEQjk4LCAweERCOTgsIDB4MjYwNiwgMHhEQjk5LCAweERCQTAsIDB4NEM1RCwKKyAgICAweERCQTEsIDB4REJGRSwgMHgxMzcxLCAweERDNDAsIDB4REM0NCwgMHg0QzY1LCAweERDNDUsIDB4REM0NSwgMHgyNUZGLAorICAgIDB4REM0NiwgMHhEQzRFLCAweDRDNkEsIDB4REM0RiwgMHhEQzRGLCAweDI1RkMsIDB4REM1MCwgMHhEQzUwLCAweDFFOEMsCisgICAgMHhEQzUxLCAweERDNTEsIDB4MjYwMiwgMHhEQzUyLCAweERDNTIsIDB4NEM3MywgMHhEQzUzLCAweERDNTMsIDB4MjI0RCwKKyAgICAweERDNTQsIDB4REM1NCwgMHg0Qzc0LCAweERDNTUsIDB4REM1NSwgMHgyNjA0LCAweERDNTYsIDB4REM1NiwgMHgyNUZFLAorICAgIDB4REM1NywgMHhEQzU3LCAweDI2MDMsIDB4REM1OCwgMHhEQzVDLCAweDRDNzUsIDB4REM1RCwgMHhEQzVELCAweDI2MDEsCisgICAgMHhEQzVFLCAweERDNjEsIDB4NEM3QSwgMHhEQzYyLCAweERDNjIsIDB4MjYwNSwgMHhEQzYzLCAweERDNjUsIDB4NEM3RSwKKyAgICAweERDNjYsIDB4REM2NiwgMHgxRUEzLCAweERDNjcsIDB4REM2NywgMHgyNjA4LCAweERDNjgsIDB4REM2QSwgMHg0QzgxLAorICAgIDB4REM2QiwgMHhEQzZCLCAweDI2MDcsIDB4REM2QywgMHhEQzdCLCAweDRDODQsIDB4REM3QywgMHhEQzdDLCAweDIwRjAsCisgICAgMHhEQzdELCAweERDN0UsIDB4NEM5NCwgMHhEQzgwLCAweERDODYsIDB4NEM5NiwgMHhEQzg3LCAweERDODcsIDB4MUU3QiwKKyAgICAweERDODgsIDB4REM4OCwgMHgyMjY3LCAweERDODksIDB4REM4OSwgMHgxRjM2LCAweERDOEEsIDB4REM4QSwgMHgxRkQ2LAorICAgIDB4REM4QiwgMHhEQzhELCAweDRDOUQsIDB4REM4RSwgMHhEQzhFLCAweDIxRTAsIDB4REM4RiwgMHhEQzhGLCAweDRDQTAsCisgICAgMHhEQzkwLCAweERDOTAsIDB4MjQ4QywgMHhEQzkxLCAweERDOTYsIDB4NENBMSwgMHhEQzk3LCAweERDOTcsIDB4MjQ4RCwKKyAgICAweERDOTgsIDB4REM5QSwgMHg0Q0E3LCAweERDOUIsIDB4REM5QiwgMHgyMTAyLCAweERDOUMsIDB4REM5RiwgMHg0Q0FBLAorICAgIDB4RENBMCwgMHhEQ0EwLCAweDI0OTQsIDB4RENBMSwgMHhEQ0ZFLCAweDEzQ0YsIDB4REQ0MCwgMHhERDQ1LCAweDRDQUUsCisgICAgMHhERDQ2LCAweERENDYsIDB4MjQ5MywgMHhERDQ3LCAweERENEMsIDB4NENCNCwgMHhERDRELCAweERENEQsIDB4MjQ4RSwKKyAgICAweERENEUsIDB4REQ1MiwgMHg0Q0JBLCAweERENTMsIDB4REQ1MywgMHgyMjk5LCAweERENTQsIDB4REQ1NCwgMHgyNDkxLAorICAgIDB4REQ1NSwgMHhERDU1LCAweDI0OTYsIDB4REQ1NiwgMHhERDU2LCAweDI0OEYsIDB4REQ1NywgMHhERDU3LCAweDI0OTIsCisgICAgMHhERDU4LCAweERENTgsIDB4NENCRiwgMHhERDU5LCAweERENTksIDB4MjQ5NywgMHhERDVBLCAweERENUQsIDB4NENDMCwKKyAgICAweERENUUsIDB4REQ1RSwgMHgxRkIxLCAweERENUYsIDB4REQ1RiwgMHg0Q0M0LCAweERENjAsIDB4REQ2MCwgMHgyNDlBLAorICAgIDB4REQ2MSwgMHhERDYxLCAweDRDQzUsIDB4REQ2MiwgMHhERDYyLCAweDI0OTksIDB4REQ2MywgMHhERDYzLCAweDRDQzYsCisgICAgMHhERDY0LCAweERENjQsIDB4MjI1OCwgMHhERDY1LCAweERENjUsIDB4MjQ5OCwgMHhERDY2LCAweERENkMsIDB4NENDNywKKyAgICAweERENkQsIDB4REQ2RCwgMHgyNDlCLCAweERENkUsIDB4REQ2RSwgMHg0Q0NFLCAweERENkYsIDB4REQ2RiwgMHgxRjA5LAorICAgIDB4REQ3MCwgMHhERDcwLCAweDIwRTYsIDB4REQ3MSwgMHhERDc1LCAweDRDQ0YsIDB4REQ3NiwgMHhERDc2LCAweDIwMjYsCisgICAgMHhERDc3LCAweERENzcsIDB4MjQ5RiwgMHhERDc4LCAweERENzgsIDB4MUY1OSwgMHhERDc5LCAweEREN0EsIDB4MjQ5RCwKKyAgICAweEREN0IsIDB4REQ3RSwgMHg0Q0Q0LCAweEREODAsIDB4REQ4MCwgMHg0Q0Q4LCAweEREODEsIDB4REQ4MSwgMHgxRjNCLAorICAgIDB4REQ4MiwgMHhERDgyLCAweDI0OUMsIDB4REQ4MywgMHhERDg0LCAweDRDRDksIDB4REQ4NSwgMHhERDg1LCAweDFFM0EsCisgICAgMHhERDg2LCAweEREODYsIDB4MjA1QiwgMHhERDg3LCAweEREOEEsIDB4NENEQiwgMHhERDhCLCAweEREOEIsIDB4MUY3MCwKKyAgICAweEREOEMsIDB4REQ4RSwgMHg0Q0RGLCAweEREOEYsIDB4REQ4RiwgMHgyNEEwLCAweEREOTAsIDB4REQ5MywgMHg0Q0UyLAorICAgIDB4REQ5NCwgMHhERDk0LCAweDIxM0IsIDB4REQ5NSwgMHhERDk2LCAweDRDRTYsIDB4REQ5NywgMHhERDk3LCAweDFGMDcsCisgICAgMHhERDk4LCAweEREOTksIDB4NENFOCwgMHhERDlBLCAweEREOUEsIDB4MjI3MCwgMHhERDlCLCAweEREOUIsIDB4MjIzNywKKyAgICAweEREOUMsIDB4REQ5RCwgMHg0Q0VBLCAweEREOUUsIDB4REQ5RSwgMHgyNEQyLCAweEREOUYsIDB4REQ5RiwgMHg0Q0VDLAorICAgIDB4RERBMCwgMHhEREEwLCAweDIxQjMsIDB4RERBMSwgMHhEREZFLCAweDE0MkQsIDB4REU0MCwgMHhERTQwLCAweDIyNDUsCisgICAgMHhERTQxLCAweERFNDEsIDB4MjRBMSwgMHhERTQyLCAweERFNDMsIDB4NENFRCwgMHhERTQ0LCAweERFNDQsIDB4MjJBOCwKKyAgICAweERFNDUsIDB4REU0NywgMHg0Q0VGLCAweERFNDgsIDB4REU0OCwgMHgyMjdDLCAweERFNDksIDB4REU0OSwgMHgxRkIwLAorICAgIDB4REU0QSwgMHhERTRFLCAweDRDRjIsIDB4REU0RiwgMHhERTRGLCAweDI0QTIsIDB4REU1MCwgMHhERTU5LCAweDRDRjcsCisgICAgMHhERTVBLCAweERFNUEsIDB4MUY0NiwgMHhERTVCLCAweERFNUIsIDB4NEQwMSwgMHhERTVDLCAweERFNUMsIDB4MjM4MCwKKyAgICAweERFNUQsIDB4REU1RCwgMHgyNDk1LCAweERFNUUsIDB4REU1RSwgMHg0RDAyLCAweERFNUYsIDB4REU1RiwgMHgyNDkwLAorICAgIDB4REU2MCwgMHhERTZBLCAweDREMDMsIDB4REU2QiwgMHhERTZCLCAweDFFMzAsIDB4REU2QywgMHhERTZFLCAweDREMEUsCisgICAgMHhERTZGLCAweERFNkYsIDB4MUU5RCwgMHhERTcwLCAweERFNzAsIDB4MUU0QiwgMHhERTcxLCAweERFNzEsIDB4MUU0QSwKKyAgICAweERFNzIsIDB4REU3MiwgMHgyMEFBLCAweERFNzMsIDB4REU3RSwgMHg0RDExLCAweERFODAsIDB4REU5MSwgMHg0RDFELAorICAgIDB4REU5MiwgMHhERTkyLCAweDI2N0IsIDB4REU5MywgMHhERTlFLCAweDREMkYsIDB4REU5RiwgMHhERTlGLCAweDIzRjIsCisgICAgMHhERUEwLCAweERFQTAsIDB4NEQzQiwgMHhERUExLCAweERFRkUsIDB4MTQ4QiwgMHhERjQwLCAweERGNDAsIDB4MjI3RSwKKyAgICAweERGNDEsIDB4REY0MSwgMHg0RDNDLCAweERGNDIsIDB4REY0MiwgMHgyMDE5LCAweERGNDMsIDB4REY0QywgMHg0RDNELAorICAgIDB4REY0RCwgMHhERjRELCAweDFGQkIsIDB4REY0RSwgMHhERjVCLCAweDRENDcsIDB4REY1QywgMHhERjVDLCAweDIyNTMsCisgICAgMHhERjVELCAweERGNUQsIDB4NEQ1NSwgMHhERjVFLCAweERGNUUsIDB4MUYzRSwgMHhERjVGLCAweERGNUYsIDB4MUVBNiwKKyAgICAweERGNjAsIDB4REY2MCwgMHgyMThFLCAweERGNjEsIDB4REY2MywgMHg0RDU2LCAweERGNjQsIDB4REY2NCwgMHgyMUVDLAorICAgIDB4REY2NSwgMHhERjY1LCAweDRENTksIDB4REY2NiwgMHhERjY2LCAweDFFQkUsIDB4REY2NywgMHhERjY3LCAweDRENUEsCisgICAgMHhERjY4LCAweERGNjgsIDB4MjI0QSwgMHhERjY5LCAweERGNkMsIDB4NEQ1QiwgMHhERjZELCAweERGNkQsIDB4MjEzMywKKyAgICAweERGNkUsIDB4REY3MywgMHg0RDVGLCAweERGNzQsIDB4REY3NCwgMHgxRTg0LCAweERGNzUsIDB4REY3NiwgMHg0RDY1LAorICAgIDB4REY3NywgMHhERjc3LCAweDIwQ0YsIDB4REY3OCwgMHhERjc4LCAweDIxRTIsIDB4REY3OSwgMHhERjc5LCAweDRENjcsCisgICAgMHhERjdBLCAweERGN0EsIDB4MjIwRiwgMHhERjdCLCAweERGN0IsIDB4NEQ2OCwgMHhERjdDLCAweERGN0MsIDB4MjAyOSwKKyAgICAweERGN0QsIDB4REY3RCwgMHg0RDY5LCAweERGN0UsIDB4REY3RSwgMHgyMDczLCAweERGODAsIDB4REY4MCwgMHgxRjU1LAorICAgIDB4REY4MSwgMHhERjgyLCAweDRENkEsIDB4REY4MywgMHhERjgzLCAweDIzRjEsIDB4REY4NCwgMHhERjg0LCAweDRENkMsCisgICAgMHhERjg1LCAweERGODUsIDB4MUU0NiwgMHhERjg2LCAweERGODgsIDB4NEQ2RCwgMHhERjg5LCAweERGODksIDB4MjA2MywKKyAgICAweERGOEEsIDB4REY4QSwgMHgyM0YzLCAweERGOEIsIDB4REZBMCwgMHg0RDcwLCAweERGQTEsIDB4REZGRSwgMHgxNEU5LAorICAgIDB4RTA0MCwgMHhFMDRGLCAweDREODYsIDB4RTA1MCwgMHhFMDUwLCAweDIzMUUsIDB4RTA1MSwgMHhFMDVDLCAweDREOTYsCisgICAgMHhFMDVELCAweEUwNUQsIDB4MjIzMywgMHhFMDVFLCAweEUwNjgsIDB4NERBMiwgMHhFMDY5LCAweEUwNjksIDB4MjMyMCwKKyAgICAweEUwNkEsIDB4RTA2QiwgMHg0REFELCAweEUwNkMsIDB4RTA2QywgMHgyMUM3LCAweEUwNkQsIDB4RTA3NCwgMHg0REFGLAorICAgIDB4RTA3NSwgMHhFMDc1LCAweDIyQkMsIDB4RTA3NiwgMHhFMDc2LCAweDREQjcsIDB4RTA3NywgMHhFMDc3LCAweDIzMUMsCisgICAgMHhFMDc4LCAweEUwNzgsIDB4NERCOCwgMHhFMDc5LCAweEUwNzksIDB4MjI1MSwgMHhFMDdBLCAweEUwN0UsIDB4NERCOSwKKyAgICAweEUwODAsIDB4RTA4NiwgMHg0REJFLCAweEUwODcsIDB4RTA4NywgMHgxRUJCLCAweEUwODgsIDB4RTA4QywgMHg0REM1LAorICAgIDB4RTA4RCwgMHhFMDhELCAweDIyODcsIDB4RTA4RSwgMHhFMDhFLCAweDREQ0EsIDB4RTA4RiwgMHhFMDhGLCAweDIwMkQsCisgICAgMHhFMDkwLCAweEUwOTAsIDB4MUVBQiwgMHhFMDkxLCAweEUwOTEsIDB4NERDQiwgMHhFMDkyLCAweEUwOTIsIDB4MjMxRCwKKyAgICAweEUwOTMsIDB4RTA5MywgMHg0RENDLCAweEUwOTQsIDB4RTA5NCwgMHgyMzFGLCAweEUwOTUsIDB4RTA5NiwgMHg0RENELAorICAgIDB4RTA5NywgMHhFMDk3LCAweDIzMUIsIDB4RTA5OCwgMHhFMEEwLCAweDREQ0YsIDB4RTBBMSwgMHhFMEZFLCAweDE1NDcsCisgICAgMHhFMTQwLCAweEUxNDEsIDB4NEREOCwgMHhFMTQyLCAweEUxNDIsIDB4MjMyMSwgMHhFMTQzLCAweEUxNjMsIDB4NEREQSwKKyAgICAweEUxNjQsIDB4RTE2NCwgMHgyMjU1LCAweEUxNjUsIDB4RTE2NywgMHg0REZCLCAweEUxNjgsIDB4RTE2OCwgMHgxRThGLAorICAgIDB4RTE2OSwgMHhFMTczLCAweDRERkUsIDB4RTE3NCwgMHhFMTc0LCAweDIyMEMsIDB4RTE3NSwgMHhFMTc1LCAweDFGQTQsCisgICAgMHhFMTc2LCAweEUxN0UsIDB4NEUwOSwgMHhFMTgwLCAweEUxODMsIDB4NEUxMiwgMHhFMTg0LCAweEUxODQsIDB4MjA5QiwKKyAgICAweEUxODUsIDB4RTE4NSwgMHgyMUQ4LCAweEUxODYsIDB4RTE4NiwgMHg0RTE2LCAweEUxODcsIDB4RTE4NywgMHgyNUZBLAorICAgIDB4RTE4OCwgMHhFMTg4LCAweDRFMTcsIDB4RTE4OSwgMHhFMTg5LCAweDI1RjksIDB4RTE4QSwgMHhFMThCLCAweDRFMTgsCisgICAgMHhFMThDLCAweEUxOEMsIDB4MjEzNCwgMHhFMThELCAweEUxOEQsIDB4NEUxQSwgMHhFMThFLCAweEUxOTAsIDB4MjRGMywKKyAgICAweEUxOTEsIDB4RTE5MSwgMHgyNEY4LCAweEUxOTIsIDB4RTE5MiwgMHg0RTFCLCAweEUxOTMsIDB4RTE5MywgMHgyNEY3LAorICAgIDB4RTE5NCwgMHhFMTk0LCAweDFFQzgsIDB4RTE5NSwgMHhFMTk1LCAweDI0RjYsIDB4RTE5NiwgMHhFMTk3LCAweDRFMUMsCisgICAgMHhFMTk4LCAweEUxOTgsIDB4MjI4MCwgMHhFMTk5LCAweEUxOUQsIDB4NEUxRSwgMHhFMTlFLCAweEUxOUUsIDB4MUVDNSwKKyAgICAweEUxOUYsIDB4RTE5RiwgMHgyNEZCLCAweEUxQTAsIDB4RTFBMCwgMHg0RTIzLCAweEUxQTEsIDB4RTFGRSwgMHgxNUE1LAorICAgIDB4RTI0MCwgMHhFMjQwLCAweDRFMjQsIDB4RTI0MSwgMHhFMjQxLCAweDI0RkEsIDB4RTI0MiwgMHhFMjQyLCAweDRFMjUsCisgICAgMHhFMjQzLCAweEUyNDMsIDB4MUVFRCwgMHhFMjQ0LCAweEUyNEUsIDB4NEUyNiwgMHhFMjRGLCAweEUyNEYsIDB4MjRGRCwKKyAgICAweEUyNTAsIDB4RTI1MCwgMHg0RTMxLCAweEUyNTEsIDB4RTI1MSwgMHgyNEY5LCAweEUyNTIsIDB4RTI1MiwgMHg0RTMyLAorICAgIDB4RTI1MywgMHhFMjUzLCAweDI0RkUsIDB4RTI1NCwgMHhFMjU0LCAweDIwQ0QsIDB4RTI1NSwgMHhFMjU5LCAweDRFMzMsCisgICAgMHhFMjVBLCAweEUyNUEsIDB4MjUwOCwgMHhFMjVCLCAweEUyNUIsIDB4MjUwNCwgMHhFMjVDLCAweEUyNUQsIDB4NEUzOCwKKyAgICAweEUyNUUsIDB4RTI1RSwgMHgyNTA2LCAweEUyNUYsIDB4RTI2MSwgMHg0RTNBLCAweEUyNjIsIDB4RTI2MiwgMHgyNEZGLAorICAgIDB4RTI2MywgMHhFMjYzLCAweDIwOTAsIDB4RTI2NCwgMHhFMjY2LCAweDRFM0QsIDB4RTI2NywgMHhFMjY3LCAweDFFREQsCisgICAgMHhFMjY4LCAweEUyNjgsIDB4MUYyNSwgMHhFMjY5LCAweEUyNjksIDB4NEU0MCwgMHhFMjZBLCAweEUyNkEsIDB4MjUwMywKKyAgICAweEUyNkIsIDB4RTI2QiwgMHgyNTAyLCAweEUyNkMsIDB4RTI2RCwgMHg0RTQxLCAweEUyNkUsIDB4RTI2RSwgMHgxRTdBLAorICAgIDB4RTI2RiwgMHhFMjZGLCAweDIwQTYsIDB4RTI3MCwgMHhFMjc3LCAweDRFNDMsIDB4RTI3OCwgMHhFMjc4LCAweDFGRDUsCisgICAgMHhFMjc5LCAweEUyN0MsIDB4NEU0QiwgMHhFMjdELCAweEUyN0QsIDB4MUYxMSwgMHhFMjdFLCAweEUyN0UsIDB4NEU0RiwKKyAgICAweEUyODAsIDB4RTI4MCwgMHgyNTA3LCAweEUyODEsIDB4RTI4MSwgMHgyNTAwLCAweEUyODIsIDB4RTI4MiwgMHgyNTA1LAorICAgIDB4RTI4MywgMHhFMjg4LCAweDRFNTAsIDB4RTI4OSwgMHhFMjg5LCAweDI1MTksIDB4RTI4QSwgMHhFMjhBLCAweDRFNTYsCisgICAgMHhFMjhCLCAweEUyOEIsIDB4MjUxNSwgMHhFMjhDLCAweEUyOEQsIDB4NEU1NywgMHhFMjhFLCAweEUyOEUsIDB4MjUwQywKKyAgICAweEUyOEYsIDB4RTI4RiwgMHgyMDMxLCAweEUyOTAsIDB4RTI5MSwgMHg0RTU5LCAweEUyOTIsIDB4RTI5MiwgMHgyNTBCLAorICAgIDB4RTI5MywgMHhFMjkzLCAweDI1MEYsIDB4RTI5NCwgMHhFMjk0LCAweDI1MUEsIDB4RTI5NSwgMHhFMjk1LCAweDI1MDksCisgICAgMHhFMjk2LCAweEUyOTcsIDB4NEU1QiwgMHhFMjk4LCAweEUyOTgsIDB4MjUwRSwgMHhFMjk5LCAweEUyOTksIDB4MjIzNCwKKyAgICAweEUyOUEsIDB4RTI5QSwgMHgyNTEzLCAweEUyOUIsIDB4RTI5QiwgMHgxRjgwLCAweEUyOUMsIDB4RTI5RiwgMHg0RTVELAorICAgIDB4RTJBMCwgMHhFMkEwLCAweDI1MDEsIDB4RTJBMSwgMHhFMkZFLCAweDE2MDMsIDB4RTM0MCwgMHhFMzQxLCAweDRFNjEsCisgICAgMHhFMzQyLCAweEUzNDIsIDB4MjUxNywgMHhFMzQzLCAweEUzNDMsIDB4MjUxNiwgMHhFMzQ0LCAweEUzNDYsIDB4NEU2MywKKyAgICAweEUzNDcsIDB4RTM0NywgMHgyNTE4LCAweEUzNDgsIDB4RTM0QSwgMHg0RTY2LCAweEUzNEIsIDB4RTM0QiwgMHgxRTU2LAorICAgIDB4RTM0QywgMHhFMzRFLCAweDRFNjksIDB4RTM0RiwgMHhFMzRGLCAweDI1MEQsIDB4RTM1MCwgMHhFMzUwLCAweDRFNkMsCisgICAgMHhFMzUxLCAweEUzNTEsIDB4MjBEMywgMHhFMzUyLCAweEUzNTMsIDB4NEU2RCwgMHhFMzU0LCAweEUzNTQsIDB4MjA3QSwKKyAgICAweEUzNTUsIDB4RTM1NSwgMHgyMENFLCAweEUzNTYsIDB4RTM1NywgMHg0RTZGLCAweEUzNTgsIDB4RTM1OCwgMHgyNTEwLAorICAgIDB4RTM1OSwgMHhFMzVCLCAweDRFNzEsIDB4RTM1QywgMHhFMzVDLCAweDFFNTUsIDB4RTM1RCwgMHhFMzVGLCAweDRFNzQsCisgICAgMHhFMzYwLCAweEUzNjAsIDB4MjUwQSwgMHhFMzYxLCAweEUzNjUsIDB4NEU3NywgMHhFMzY2LCAweEUzNjcsIDB4MjUxMSwKKyAgICAweEUzNjgsIDB4RTM3MCwgMHg0RTdDLCAweEUzNzEsIDB4RTM3MSwgMHgxRkFBLCAweEUzNzIsIDB4RTM3MiwgMHg0RTg1LAorICAgIDB4RTM3MywgMHhFMzczLCAweDI1MUUsIDB4RTM3NCwgMHhFMzc0LCAweDFGMUYsIDB4RTM3NSwgMHhFMzc3LCAweDRFODYsCisgICAgMHhFMzc4LCAweEUzNzgsIDB4MjUyRCwgMHhFMzc5LCAweEUzNzksIDB4MjIxRCwgMHhFMzdBLCAweEUzN0IsIDB4NEU4OSwKKyAgICAweEUzN0MsIDB4RTM3QywgMHgyNTMyLCAweEUzN0QsIDB4RTM3RCwgMHg0RThCLCAweEUzN0UsIDB4RTM3RSwgMHgyMTdCLAorICAgIDB4RTM4MCwgMHhFMzg5LCAweDRFOEMsIDB4RTM4QSwgMHhFMzhBLCAweDIxQUYsIDB4RTM4QiwgMHhFMzhCLCAweDRFOTYsCisgICAgMHhFMzhDLCAweEUzOEMsIDB4MjUyQywgMHhFMzhELCAweEUzOEUsIDB4NEU5NywgMHhFMzhGLCAweEUzOEYsIDB4MjUyOCwKKyAgICAweEUzOTAsIDB4RTM5MCwgMHg0RTk5LCAweEUzOTEsIDB4RTM5MSwgMHgyMDhDLCAweEUzOTIsIDB4RTM5MiwgMHg0RTlBLAorICAgIDB4RTM5MywgMHhFMzkzLCAweDI1MkYsIDB4RTM5NCwgMHhFMzk0LCAweDRFOUIsIDB4RTM5NSwgMHhFMzk1LCAweDIxQkMsCisgICAgMHhFMzk2LCAweEUzOTgsIDB4NEU5QywgMHhFMzk5LCAweEUzOTksIDB4MjUxRCwgMHhFMzlBLCAweEUzOUIsIDB4NEU5RiwKKyAgICAweEUzOUMsIDB4RTM5QywgMHgyNTM1LCAweEUzOUQsIDB4RTM5RCwgMHg0RUExLCAweEUzOUUsIDB4RTM5RSwgMHgyMjBELAorICAgIDB4RTM5RiwgMHhFMzlGLCAweDI1MjYsIDB4RTNBMCwgMHhFM0EwLCAweDRFQTIsIDB4RTNBMSwgMHhFM0ZFLCAweDE2NjEsCisgICAgMHhFNDQwLCAweEU0NDAsIDB4MjUzNCwgMHhFNDQxLCAweEU0NDEsIDB4MjUyQSwgMHhFNDQyLCAweEU0NDIsIDB4MjUxRiwKKyAgICAweEU0NDMsIDB4RTQ0MywgMHgyNTMxLCAweEU0NDQsIDB4RTQ0NCwgMHgyNTFDLCAweEU0NDUsIDB4RTQ0NywgMHg0RUEzLAorICAgIDB4RTQ0OCwgMHhFNDQ4LCAweDI1MjUsIDB4RTQ0OSwgMHhFNDRELCAweDRFQTYsIDB4RTQ0RSwgMHhFNDRFLCAweDIxQ0QsCisgICAgMHhFNDRGLCAweEU0NEYsIDB4NEVBQiwgMHhFNDUwLCAweEU0NTAsIDB4MjFEQSwgMHhFNDUxLCAweEU0NTEsIDB4NEVBQywKKyAgICAweEU0NTIsIDB4RTQ1MiwgMHgyMTcyLCAweEU0NTMsIDB4RTQ1MywgMHgyNTNFLCAweEU0NTQsIDB4RTQ1NywgMHg0RUFELAorICAgIDB4RTQ1OCwgMHhFNDU4LCAweDIwNEYsIDB4RTQ1OSwgMHhFNDU5LCAweDRFQjEsIDB4RTQ1QSwgMHhFNDVBLCAweDI1NDMsCisgICAgMHhFNDVCLCAweEU0NUIsIDB4NEVCMiwgMHhFNDVDLCAweEU0NUMsIDB4MjFENywgMHhFNDVELCAweEU0NUQsIDB4NEVCMywKKyAgICAweEU0NUUsIDB4RTQ1RSwgMHgxRTNDLCAweEU0NUYsIDB4RTQ2MSwgMHg0RUI0LCAweEU0NjIsIDB4RTQ2MiwgMHgyNTI5LAorICAgIDB4RTQ2MywgMHhFNDY0LCAweDRFQjcsIDB4RTQ2NSwgMHhFNDY1LCAweDI1MjEsIDB4RTQ2NiwgMHhFNDY3LCAweDRFQjksCisgICAgMHhFNDY4LCAweEU0NjgsIDB4MUVGRiwgMHhFNDY5LCAweEU0NzIsIDB4NEVCQiwgMHhFNDczLCAweEU0NzMsIDB4MjUzRiwKKyAgICAweEU0NzQsIDB4RTQ3NCwgMHg0RUM1LCAweEU0NzUsIDB4RTQ3NSwgMHgyNTQ0LCAweEU0NzYsIDB4RTQ3OCwgMHg0RUM2LAorICAgIDB4RTQ3OSwgMHhFNDc5LCAweDI1MjMsIDB4RTQ3QSwgMHhFNDdBLCAweDFFOTAsIDB4RTQ3QiwgMHhFNDdCLCAweDI1M0EsCisgICAgMHhFNDdDLCAweEU0N0MsIDB4MjU0NSwgMHhFNDdELCAweEU0N0QsIDB4NEVDOSwgMHhFNDdFLCAweEU0N0UsIDB4MjUzRCwKKyAgICAweEU0ODAsIDB4RTQ4MCwgMHg0RUNBLCAweEU0ODEsIDB4RTQ4MSwgMHgyMEMxLCAweEU0ODIsIDB4RTQ4MywgMHg0RUNCLAorICAgIDB4RTQ4NCwgMHhFNDg0LCAweDIxMDMsIDB4RTQ4NSwgMHhFNDg1LCAweDI1MjAsIDB4RTQ4NiwgMHhFNDg2LCAweDI1M0MsCisgICAgMHhFNDg3LCAweEU0ODcsIDB4MjUzQiwgMHhFNDg4LCAweEU0ODgsIDB4MjUzOCwgMHhFNDg5LCAweEU0OEMsIDB4NEVDRCwKKyAgICAweEU0OEQsIDB4RTQ4RCwgMHgyNTQwLCAweEU0OEUsIDB4RTQ4RSwgMHg0RUQxLCAweEU0OEYsIDB4RTQ4RiwgMHgxRkNELAorICAgIDB4RTQ5MCwgMHhFNDkyLCAweDRFRDIsIDB4RTQ5MywgMHhFNDkzLCAweDFGMTgsIDB4RTQ5NCwgMHhFNDk3LCAweDRFRDUsCisgICAgMHhFNDk4LCAweEU0OTgsIDB4MjU0QiwgMHhFNDk5LCAweEU0OUMsIDB4NEVEOSwgMHhFNDlELCAweEU0OUQsIDB4MjU0NywKKyAgICAweEU0OUUsIDB4RTQ5RiwgMHgyNTRGLCAweEU0QTAsIDB4RTRBMCwgMHg0RURELCAweEU0QTEsIDB4RTRGRSwgMHgxNkJGLAorICAgIDB4RTU0MCwgMHhFNTQ1LCAweDRFREUsIDB4RTU0NiwgMHhFNTQ2LCAweDIyQjAsIDB4RTU0NywgMHhFNTQ3LCAweDRFRTQsCisgICAgMHhFNTQ4LCAweEU1NDgsIDB4MjU0NiwgMHhFNTQ5LCAweEU1NEEsIDB4NEVFNSwgMHhFNTRCLCAweEU1NEIsIDB4MjU0QywKKyAgICAweEU1NEMsIDB4RTU0RCwgMHg0RUU3LCAweEU1NEUsIDB4RTU0RSwgMHgxRTlBLCAweEU1NEYsIDB4RTU0RiwgMHgyNTUyLAorICAgIDB4RTU1MCwgMHhFNTUwLCAweDI1MzAsIDB4RTU1MSwgMHhFNTUxLCAweDI1NDksIDB4RTU1MiwgMHhFNTU0LCAweDRFRTksCisgICAgMHhFNTU1LCAweEU1NTUsIDB4MjU1MSwgMHhFNTU2LCAweEU1NTYsIDB4MUVDQSwgMHhFNTU3LCAweEU1NTcsIDB4NEVFQywKKyAgICAweEU1NTgsIDB4RTU1OCwgMHgyMEQyLCAweEU1NTksIDB4RTU1QiwgMHg0RUVELCAweEU1NUMsIDB4RTU1QywgMHgxRkI4LAorICAgIDB4RTU1RCwgMHhFNTVELCAweDRFRjAsIDB4RTU1RSwgMHhFNTVFLCAweDIwNzksIDB4RTU1RiwgMHhFNTYwLCAweDRFRjEsCisgICAgMHhFNTYxLCAweEU1NjEsIDB4MjFBQiwgMHhFNTYyLCAweEU1NjMsIDB4NEVGMywgMHhFNTY0LCAweEU1NjQsIDB4MjU0RCwKKyAgICAweEU1NjUsIDB4RTU2NSwgMHgxRUE1LCAweEU1NjYsIDB4RTU2NywgMHg0RUY1LCAweEU1NjgsIDB4RTU2OCwgMHgyMDRDLAorICAgIDB4RTU2OSwgMHhFNTY5LCAweDIwODAsIDB4RTU2QSwgMHhFNTZCLCAweDRFRjcsIDB4RTU2QywgMHhFNTZDLCAweDI2NkQsCisgICAgMHhFNTZELCAweEU1NkQsIDB4NEVGOSwgMHhFNTZFLCAweEU1NkUsIDB4MjUzNywgMHhFNTZGLCAweEU1NzQsIDB4NEVGQSwKKyAgICAweEU1NzUsIDB4RTU3NSwgMHgyNTRBLCAweEU1NzYsIDB4RTU3NiwgMHgyMUI4LCAweEU1NzcsIDB4RTU3NywgMHg0RjAwLAorICAgIDB4RTU3OCwgMHhFNTc4LCAweDI1NEUsIDB4RTU3OSwgMHhFNTdBLCAweDRGMDEsIDB4RTU3QiwgMHhFNTdCLCAweDI0RkMsCisgICAgMHhFNTdDLCAweEU1N0MsIDB4MjU1NCwgMHhFNTdELCAweEU1N0UsIDB4NEYwMywgMHhFNTgwLCAweEU1ODAsIDB4NEYwNSwKKyAgICAweEU1ODEsIDB4RTU4MSwgMHgxRjNDLCAweEU1ODIsIDB4RTU4MiwgMHg0RjA2LCAweEU1ODMsIDB4RTU4MywgMHgxRUQ1LAorICAgIDB4RTU4NCwgMHhFNTg5LCAweDRGMDcsIDB4RTU4QSwgMHhFNThBLCAweDI1NTYsIDB4RTU4QiwgMHhFNThELCAweDRGMEQsCisgICAgMHhFNThFLCAweEU1OEUsIDB4MjI2OCwgMHhFNThGLCAweEU1OTAsIDB4NEYxMCwgMHhFNTkxLCAweEU1OTEsIDB4MUVENiwKKyAgICAweEU1OTIsIDB4RTU5OSwgMHg0RjEyLCAweEU1OUEsIDB4RTU5QSwgMHgyNTU3LCAweEU1OUIsIDB4RTU5QiwgMHgyNTUzLAorICAgIDB4RTU5QywgMHhFNTlFLCAweDRGMUEsIDB4RTU5RiwgMHhFNTlGLCAweDI1NDgsIDB4RTVBMCwgMHhFNUEwLCAweDRGMUQsCisgICAgMHhFNUExLCAweEU1RkUsIDB4MTcxRCwgMHhFNjQwLCAweEU2NDAsIDB4MjBEQywgMHhFNjQxLCAweEU2NDMsIDB4NEYxRSwKKyAgICAweEU2NDQsIDB4RTY0NCwgMHgyNTU5LCAweEU2NDUsIDB4RTY0OCwgMHg0RjIxLCAweEU2NDksIDB4RTY0OSwgMHgxRjk3LAorICAgIDB4RTY0QSwgMHhFNjRBLCAweDI1NTUsIDB4RTY0QiwgMHhFNjRELCAweDRGMjUsIDB4RTY0RSwgMHhFNjRFLCAweDIyN0QsCisgICAgMHhFNjRGLCAweEU2NTEsIDB4NEYyOCwgMHhFNjUyLCAweEU2NTIsIDB4MjU3RSwgMHhFNjUzLCAweEU2NTUsIDB4NEYyQiwKKyAgICAweEU2NTYsIDB4RTY1NiwgMHgyMDdDLCAweEU2NTcsIDB4RTY1NywgMHg0RjJFLCAweEU2NTgsIDB4RTY1OCwgMHgyNTVBLAorICAgIDB4RTY1OSwgMHhFNjVBLCAweDRGMkYsIDB4RTY1QiwgMHhFNjVCLCAweDI1NUUsIDB4RTY1QywgMHhFNjVELCAweDRGMzEsCisgICAgMHhFNjVFLCAweEU2NUUsIDB4MUUzNCwgMHhFNjVGLCAweEU2NjgsIDB4NEYzMywgMHhFNjY5LCAweEU2NjksIDB4MjE1RSwKKyAgICAweEU2NkEsIDB4RTY2QSwgMHg0RjNELCAweEU2NkIsIDB4RTY2QiwgMHgyNTYwLCAweEU2NkMsIDB4RTY3NCwgMHg0RjNFLAorICAgIDB4RTY3NSwgMHhFNjc1LCAweDIxQTIsIDB4RTY3NiwgMHhFNjc2LCAweDIzNTQsIDB4RTY3NywgMHhFNjc4LCAweDRGNDcsCisgICAgMHhFNjc5LCAweEU2NzksIDB4MjU2MywgMHhFNjdBLCAweEU2N0EsIDB4MjUyNywgMHhFNjdCLCAweEU2N0IsIDB4NEY0OSwKKyAgICAweEU2N0MsIDB4RTY3QywgMHgyNTJFLCAweEU2N0QsIDB4RTY3RCwgMHgyNTU4LCAweEU2N0UsIDB4RTY3RSwgMHg0RjRBLAorICAgIDB4RTY4MCwgMHhFNjgwLCAweDFGMUIsIDB4RTY4MSwgMHhFNjgxLCAweDRGNEIsIDB4RTY4MiwgMHhFNjgyLCAweDIyODMsCisgICAgMHhFNjgzLCAweEU2ODMsIDB4NEY0QywgMHhFNjg0LCAweEU2ODQsIDB4MjU2NCwgMHhFNjg1LCAweEU2ODYsIDB4NEY0RCwKKyAgICAweEU2ODcsIDB4RTY4NywgMHgyMEEwLCAweEU2ODgsIDB4RTY4OCwgMHg0RjRGLCAweEU2ODksIDB4RTY4OSwgMHgyNTY1LAorICAgIDB4RTY4QSwgMHhFNjhCLCAweDRGNTAsIDB4RTY4QywgMHhFNjhDLCAweDI1NjEsIDB4RTY4RCwgMHhFNjkyLCAweDRGNTIsCisgICAgMHhFNjkzLCAweEU2OTMsIDB4MjU2MiwgMHhFNjk0LCAweEU2OTYsIDB4NEY1OCwgMHhFNjk3LCAweEU2OTcsIDB4MjU2QywKKyAgICAweEU2OTgsIDB4RTY5QSwgMHg0RjVCLCAweEU2OUIsIDB4RTY5QiwgMHgyNTZELCAweEU2OUMsIDB4RTY5QywgMHgyMDIwLAorICAgIDB4RTY5RCwgMHhFNjlFLCAweDRGNUUsIDB4RTY5RiwgMHhFNjlGLCAweDI1NUYsIDB4RTZBMCwgMHhFNkEwLCAweDI1NkEsCisgICAgMHhFNkExLCAweEU2RkUsIDB4MTc3QiwgMHhFNzQwLCAweEU3NDIsIDB4NEY2MCwgMHhFNzQzLCAweEU3NDMsIDB4MjU2RSwKKyAgICAweEU3NDQsIDB4RTc0NywgMHg0RjYzLCAweEU3NDgsIDB4RTc0OCwgMHgyNTM5LCAweEU3NDksIDB4RTc0OSwgMHgyNTVDLAorICAgIDB4RTc0QSwgMHhFNzRDLCAweDRGNjcsIDB4RTc0RCwgMHhFNzRFLCAweDI1NjgsIDB4RTc0RiwgMHhFNzRGLCAweDI1NkIsCisgICAgMHhFNzUwLCAweEU3NTAsIDB4MUU2RiwgMHhFNzUxLCAweEU3NTEsIDB4NEY2QSwgMHhFNzUyLCAweEU3NTIsIDB4MUZDNCwKKyAgICAweEU3NTMsIDB4RTc1MywgMHgyNTY3LCAweEU3NTQsIDB4RTc1NCwgMHg0RjZCLCAweEU3NTUsIDB4RTc1NSwgMHgyNTVCLAorICAgIDB4RTc1NiwgMHhFNzU4LCAweDRGNkMsIDB4RTc1OSwgMHhFNzU5LCAweDI2MUQsIDB4RTc1QSwgMHhFNzY1LCAweDRGNkYsCisgICAgMHhFNzY2LCAweEU3NjYsIDB4MjUyQiwgMHhFNzY3LCAweEU3NjcsIDB4NEY3QiwgMHhFNzY4LCAweEU3NjgsIDB4MjU3MSwKKyAgICAweEU3NjksIDB4RTc2OSwgMHg0RjdDLCAweEU3NkEsIDB4RTc2QSwgMHgyNTc3LCAweEU3NkIsIDB4RTc3MywgMHg0RjdELAorICAgIDB4RTc3NCwgMHhFNzc0LCAweDI1MjIsIDB4RTc3NSwgMHhFNzdCLCAweDRGODYsIDB4RTc3QywgMHhFNzdDLCAweDI1MzMsCisgICAgMHhFNzdELCAweEU3N0UsIDB4NEY4RCwgMHhFNzgwLCAweEU3ODEsIDB4NEY4RiwgMHhFNzgyLCAweEU3ODIsIDB4MjAyQSwKKyAgICAweEU3ODMsIDB4RTc4MywgMHg0RjkxLCAweEU3ODQsIDB4RTc4NCwgMHgyNTM2LCAweEU3ODUsIDB4RTc4NSwgMHgyNTczLAorICAgIDB4RTc4NiwgMHhFNzg2LCAweDI1NkYsIDB4RTc4NywgMHhFNzg5LCAweDRGOTIsIDB4RTc4QSwgMHhFNzhBLCAweDIyOTMsCisgICAgMHhFNzhCLCAweEU3OEIsIDB4MjU3OCwgMHhFNzhDLCAweEU3OEUsIDB4NEY5NSwgMHhFNzhGLCAweEU3OEYsIDB4MjU3MCwKKyAgICAweEU3OTAsIDB4RTc5MSwgMHg0Rjk4LCAweEU3OTIsIDB4RTc5MiwgMHgyNTc1LCAweEU3OTMsIDB4RTc5NywgMHg0RjlBLAorICAgIDB4RTc5OCwgMHhFNzk5LCAweDI1NDEsIDB4RTc5QSwgMHhFNzlBLCAweDI1NUQsIDB4RTc5QiwgMHhFNzlGLCAweDRGOUYsCisgICAgMHhFN0EwLCAweEU3QTAsIDB4MjAxQSwgMHhFN0ExLCAweEU3RkUsIDB4MTdEOSwgMHhFODQwLCAweEU4NDIsIDB4NEZBNCwKKyAgICAweEU4NDMsIDB4RTg0MywgMHgyNTdBLCAweEU4NDQsIDB4RTg0NCwgMHgyMDA2LCAweEU4NDUsIDB4RTg0NSwgMHg0RkE3LAorICAgIDB4RTg0NiwgMHhFODQ2LCAweDIxNzcsIDB4RTg0NywgMHhFODQ4LCAweDRGQTgsIDB4RTg0OSwgMHhFODQ5LCAweDI1MUIsCisgICAgMHhFODRBLCAweEU4NEEsIDB4NEZBQSwgMHhFODRCLCAweEU4NEIsIDB4MjUyNCwgMHhFODRDLCAweEU4NEUsIDB4NEZBQiwKKyAgICAweEU4NEYsIDB4RTg0RiwgMHgyNTdCLCAweEU4NTAsIDB4RTg1MywgMHg0RkFFLCAweEU4NTQsIDB4RTg1NCwgMHgyMkEzLAorICAgIDB4RTg1NSwgMHhFODU5LCAweDRGQjIsIDB4RTg1QSwgMHhFODVBLCAweDI1NzksIDB4RTg1QiwgMHhFODVCLCAweDRGQjcsCisgICAgMHhFODVDLCAweEU4NUMsIDB4MjU2NiwgMHhFODVELCAweEU4NjEsIDB4NEZCOCwgMHhFODYyLCAweEU4NjIsIDB4MUY5MywKKyAgICAweEU4NjMsIDB4RTg2MywgMHg0RkJELCAweEU4NjQsIDB4RTg2NCwgMHgyNTdDLCAweEU4NjUsIDB4RTg2RiwgMHg0RkJFLAorICAgIDB4RTg3MCwgMHhFODcwLCAweDI1MTQsIDB4RTg3MSwgMHhFODcyLCAweDRGQzksIDB4RTg3MywgMHhFODczLCAweDI1N0QsCisgICAgMHhFODc0LCAweEU4NzQsIDB4NEZDQiwgMHhFODc1LCAweEU4NzUsIDB4MjU3MiwgMHhFODc2LCAweEU4N0IsIDB4NEZDQywKKyAgICAweEU4N0MsIDB4RTg3QywgMHgyNTc0LCAweEU4N0QsIDB4RTg3RSwgMHg0RkQyLCAweEU4ODAsIDB4RTg4MCwgMHgyMjRFLAorICAgIDB4RTg4MSwgMHhFODgxLCAweDRGRDQsIDB4RTg4MiwgMHhFODgyLCAweDIxQzYsIDB4RTg4MywgMHhFODg2LCAweDRGRDUsCisgICAgMHhFODg3LCAweEU4ODcsIDB4MjA5RiwgMHhFODg4LCAweEU4ODgsIDB4NEZEOSwgMHhFODg5LCAweEU4ODksIDB4MjU3NiwKKyAgICAweEU4OEEsIDB4RTg4QiwgMHg0RkRBLCAweEU4OEMsIDB4RTg4QywgMHgyMDY0LCAweEU4OEQsIDB4RTg4RCwgMHgyMkJGLAorICAgIDB4RTg4RSwgMHhFODhFLCAweDI2MUMsIDB4RTg4RiwgMHhFODhGLCAweDIyNUUsIDB4RTg5MCwgMHhFOEEwLCAweDRGREMsCisgICAgMHhFOEExLCAweEU4RkUsIDB4MTgzNywgMHhFOTQwLCAweEU5NEIsIDB4NEZFRCwgMHhFOTRDLCAweEU5NEMsIDB4MUU3NSwKKyAgICAweEU5NEQsIDB4RTk1MywgMHg0RkY5LCAweEU5NTQsIDB4RTk1NCwgMHgyMDdELCAweEU5NTUsIDB4RTk1NSwgMHg1MDAwLAorICAgIDB4RTk1NiwgMHhFOTU2LCAweDIzQkYsIDB4RTk1NywgMHhFOTU3LCAweDIxMTMsIDB4RTk1OCwgMHhFOTU5LCAweDUwMDEsCisgICAgMHhFOTVBLCAweEU5NUEsIDB4MjNDMCwgMHhFOTVCLCAweEU5NUMsIDB4NTAwMywgMHhFOTVELCAweEU5NUQsIDB4MUU0NSwKKyAgICAweEU5NUUsIDB4RTk1RSwgMHg1MDA1LCAweEU5NUYsIDB4RTk1RiwgMHgxRkQ4LCAweEU5NjAsIDB4RTk2MCwgMHgyM0M0LAorICAgIDB4RTk2MSwgMHhFOTYxLCAweDUwMDYsIDB4RTk2MiwgMHhFOTYyLCAweDIzQzIsIDB4RTk2MywgMHhFOTYzLCAweDIxMDQsCisgICAgMHhFOTY0LCAweEU5NjQsIDB4NTAwNywgMHhFOTY1LCAweEU5NjUsIDB4MjFCRCwgMHhFOTY2LCAweEU5NjYsIDB4NTAwOCwKKyAgICAweEU5NjcsIDB4RTk2NywgMHgxRjg3LCAweEU5NjgsIDB4RTk2OCwgMHgyM0MzLCAweEU5NjksIDB4RTk2QiwgMHg1MDA5LAorICAgIDB4RTk2QywgMHhFOTZDLCAweDIyNjksIDB4RTk2RCwgMHhFOTc0LCAweDUwMEMsIDB4RTk3NSwgMHhFOTc1LCAweDFGNDMsCisgICAgMHhFOTc2LCAweEU5NzYsIDB4NTAxNCwgMHhFOTc3LCAweEU5NzcsIDB4MUYxRSwgMHhFOTc4LCAweEU5NzgsIDB4MjY3OSwKKyAgICAweEU5NzksIDB4RTk3OSwgMHgxRUVCLCAweEU5N0EsIDB4RTk3QiwgMHg1MDE1LCAweEU5N0MsIDB4RTk3QywgMHgxRjM1LAorICAgIDB4RTk3RCwgMHhFOTdELCAweDIwOEEsIDB4RTk3RSwgMHhFOTdFLCAweDUwMTcsIDB4RTk4MCwgMHhFOTgwLCAweDIzQzcsCisgICAgMHhFOTgxLCAweEU5ODEsIDB4MjNDOSwgMHhFOTgyLCAweEU5ODIsIDB4MjNDNiwgMHhFOTgzLCAweEU5ODYsIDB4NTAxOCwKKyAgICAweEU5ODcsIDB4RTk4NywgMHgyMjRGLCAweEU5ODgsIDB4RTk4QSwgMHg1MDFDLCAweEU5OEIsIDB4RTk4QiwgMHgyM0NCLAorICAgIDB4RTk4QywgMHhFOThELCAweDUwMUYsIDB4RTk4RSwgMHhFOThFLCAweDIxRjMsIDB4RTk4RiwgMHhFOThGLCAweDUwMjEsCisgICAgMHhFOTkwLCAweEU5OTAsIDB4MjFGNywgMHhFOTkxLCAweEU5OTEsIDB4MjNDRiwgMHhFOTkyLCAweEU5OTIsIDB4MjNDRSwKKyAgICAweEU5OTMsIDB4RTk5MywgMHgyM0NBLCAweEU5OTQsIDB4RTk5NCwgMHgyM0NELCAweEU5OTUsIDB4RTk5NywgMHg1MDIyLAorICAgIDB4RTk5OCwgMHhFOTk4LCAweDIzRDAsIDB4RTk5OSwgMHhFOTlBLCAweDUwMjUsIDB4RTk5QiwgMHhFOTlCLCAweDI2NkMsCisgICAgMHhFOTlDLCAweEU5OUMsIDB4NTAyNywgMHhFOTlELCAweEU5OUQsIDB4MjNDMSwgMHhFOTlFLCAweEU5OUUsIDB4NTAyOCwKKyAgICAweEU5OUYsIDB4RTk5RiwgMHgxRkVFLCAweEU5QTAsIDB4RTlBMCwgMHgyM0QxLCAweEU5QTEsIDB4RTlGRSwgMHgxODk1LAorICAgIDB4RUE0MCwgMHhFQTQwLCAweDFGRjgsIDB4RUE0MSwgMHhFQTQzLCAweDUwMjksIDB4RUE0NCwgMHhFQTQ0LCAweDIzRDMsCisgICAgMHhFQTQ1LCAweEVBNDcsIDB4NTAyQywgMHhFQTQ4LCAweEVBNDgsIDB4MjNEMiwgMHhFQTQ5LCAweEVBNDksIDB4MjNENCwKKyAgICAweEVBNEEsIDB4RUE0QSwgMHgxRTk4LCAweEVBNEIsIDB4RUE0RiwgMHg1MDJGLCAweEVBNTAsIDB4RUE1MCwgMHgxRjJDLAorICAgIDB4RUE1MSwgMHhFQTUxLCAweDUwMzQsIDB4RUE1MiwgMHhFQTUyLCAweDIzRDUsIDB4RUE1MywgMHhFQTU0LCAweDUwMzUsCisgICAgMHhFQTU1LCAweEVBNTUsIDB4MUU3MSwgMHhFQTU2LCAweEVBNTYsIDB4MjY5MSwgMHhFQTU3LCAweEVBNTgsIDB4NTAzNywKKyAgICAweEVBNTksIDB4RUE1OSwgMHgyM0M1LCAweEVBNUEsIDB4RUE3RSwgMHg1MDM5LCAweEVBODAsIDB4RUE4MCwgMHgyMzFBLAorICAgIDB4RUE4MSwgMHhFQTgzLCAweDUwNUUsIDB4RUE4NCwgMHhFQTg0LCAweDIxMTQsIDB4RUE4NSwgMHhFQTg2LCAweDUwNjEsCisgICAgMHhFQTg3LCAweEVBODcsIDB4MjI4NCwgMHhFQTg4LCAweEVBOEQsIDB4NTA2MywgMHhFQThFLCAweEVBOEUsIDB4MjIxQywKKyAgICAweEVBOEYsIDB4RUE4RiwgMHg1MDY5LCAweEVBOTAsIDB4RUE5MCwgMHgxRTdFLCAweEVBOTEsIDB4RUE5MSwgMHgyMDRELAorICAgIDB4RUE5MiwgMHhFQTk1LCAweDUwNkEsIDB4RUE5NiwgMHhFQTk2LCAweDIyMDEsIDB4RUE5NywgMHhFQTlGLCAweDUwNkUsCisgICAgMHhFQUEwLCAweEVBQTAsIDB4MUVEOSwgMHhFQUExLCAweEVBRkUsIDB4MThGMywgMHhFQjQwLCAweEVCNDAsIDB4NTA3NywKKyAgICAweEVCNDEsIDB4RUI0MSwgMHgxRkIyLCAweEVCNDIsIDB4RUI0NCwgMHg1MDc4LCAweEVCNDUsIDB4RUI0NSwgMHgyMjUyLAorICAgIDB4RUI0NiwgMHhFQjQ3LCAweDUwN0IsIDB4RUI0OCwgMHhFQjQ4LCAweDFGNzksIDB4RUI0OSwgMHhFQjUyLCAweDUwN0QsCisgICAgMHhFQjUzLCAweEVCNTMsIDB4MjE1NywgMHhFQjU0LCAweEVCNTQsIDB4NTA4NywgMHhFQjU1LCAweEVCNTUsIDB4MjFCRiwKKyAgICAweEVCNTYsIDB4RUI1QSwgMHg1MDg4LCAweEVCNUIsIDB4RUI1QiwgMHgyMjFGLCAweEVCNUMsIDB4RUI1QywgMHg1MDhELAorICAgIDB4RUI1RCwgMHhFQjVELCAweDIwM0QsIDB4RUI1RSwgMHhFQjVGLCAweDUwOEUsIDB4RUI2MCwgMHhFQjYwLCAweDIwMTUsCisgICAgMHhFQjYxLCAweEVCNjEsIDB4NTA5MCwgMHhFQjYyLCAweEVCNjIsIDB4MjZBNSwgMHhFQjYzLCAweEVCNkMsIDB4NTA5MSwKKyAgICAweEVCNkQsIDB4RUI2RCwgMHgyMTU2LCAweEVCNkUsIDB4RUI2RiwgMHg1MDlCLCAweEVCNzAsIDB4RUI3MCwgMHgyMTQ0LAorICAgIDB4RUI3MSwgMHhFQjcxLCAweDUwOUQsIDB4RUI3MiwgMHhFQjcyLCAweDFFOTEsIDB4RUI3MywgMHhFQjczLCAweDIyNTcsCisgICAgMHhFQjc0LCAweEVCNzcsIDB4NTA5RSwgMHhFQjc4LCAweEVCNzgsIDB4MjAwQSwgMHhFQjc5LCAweEVCNzksIDB4MjA5MiwKKyAgICAweEVCN0EsIDB4RUI3RSwgMHg1MEEyLCAweEVCODAsIDB4RUI4NCwgMHg1MEE3LCAweEVCODUsIDB4RUI4NSwgMHgyMjUwLAorICAgIDB4RUI4NiwgMHhFQjg5LCAweDUwQUMsIDB4RUI4QSwgMHhFQjhBLCAweDFFQzMsIDB4RUI4QiwgMHhFQkEwLCAweDUwQjAsCisgICAgMHhFQkExLCAweEVCRkUsIDB4MTk1MSwgMHhFQzQwLCAweEVDNDUsIDB4NTBDNiwgMHhFQzQ2LCAweEVDNDYsIDB4MjFBOCwKKyAgICAweEVDNDcsIDB4RUM1NSwgMHg1MENDLCAweEVDNTYsIDB4RUM1NiwgMHgyNjBELCAweEVDNTcsIDB4RUM1OSwgMHg1MERCLAorICAgIDB4RUM1QSwgMHhFQzVBLCAweDI2MEMsIDB4RUM1QiwgMHhFQzVCLCAweDUwREUsIDB4RUM1QywgMHhFQzVDLCAweDI2MEUsCisgICAgMHhFQzVELCAweEVDNUYsIDB4NTBERiwgMHhFQzYwLCAweEVDNjAsIDB4MjAzMiwgMHhFQzYxLCAweEVDNkQsIDB4NTBFMiwKKyAgICAweEVDNkUsIDB4RUM2RSwgMHgyNjBCLCAweEVDNkYsIDB4RUM3NSwgMHg1MEVGLCAweEVDNzYsIDB4RUM3NiwgMHgyMkMzLAorICAgIDB4RUM3NywgMHhFQzdFLCAweDUwRjYsIDB4RUM4MCwgMHhFQzk1LCAweDUwRkUsIDB4RUM5NiwgMHhFQzk2LCAweDFGMjMsCisgICAgMHhFQzk3LCAweEVDQTAsIDB4NTExNCwgMHhFQ0ExLCAweEVDRkUsIDB4MTlBRiwgMHhFRDQwLCAweEVENDUsIDB4NTExRSwKKyAgICAweEVENDYsIDB4RUQ0NiwgMHgyNjk1LCAweEVENDcsIDB4RUQ1NywgMHg1MTI0LCAweEVENTgsIDB4RUQ1OCwgMHgyNjVFLAorICAgIDB4RUQ1OSwgMHhFRDVELCAweDUxMzUsIDB4RUQ1RSwgMHhFRDVFLCAweDI2NUQsIDB4RUQ1RiwgMHhFRDYwLCAweDUxM0EsCisgICAgMHhFRDYxLCAweEVENjEsIDB4MjY5MiwgMHhFRDYyLCAweEVENjMsIDB4NTEzQywgMHhFRDY0LCAweEVENjQsIDB4MjY1RiwKKyAgICAweEVENjUsIDB4RUQ2NSwgMHg1MTNFLCAweEVENjYsIDB4RUQ2NiwgMHgyMThELCAweEVENjcsIDB4RUQ2NywgMHgyMEZELAorICAgIDB4RUQ2OCwgMHhFRDZELCAweDUxM0YsIDB4RUQ2RSwgMHhFRDZFLCAweDFGNDAsIDB4RUQ2RiwgMHhFRDczLCAweDUxNDUsCisgICAgMHhFRDc0LCAweEVENzQsIDB4MjQ2NSwgMHhFRDc1LCAweEVENzYsIDB4NTE0QSwgMHhFRDc3LCAweEVENzcsIDB4MjQ2NywKKyAgICAweEVENzgsIDB4RUQ3OCwgMHg1MTRDLCAweEVENzksIDB4RUQ3OSwgMHgyNDY2LCAweEVEN0EsIDB4RUQ3RSwgMHg1MTRELAorICAgIDB4RUQ4MCwgMHhFRDkwLCAweDUxNTIsIDB4RUQ5MSwgMHhFRDkxLCAweDIxQzksIDB4RUQ5MiwgMHhFRDkyLCAweDUxNjMsCisgICAgMHhFRDkzLCAweEVEOTMsIDB4MjIwOSwgMHhFRDk0LCAweEVEOTQsIDB4MUVDOSwgMHhFRDk1LCAweEVEOTUsIDB4MjBFOSwKKyAgICAweEVEOTYsIDB4RUQ5NiwgMHg1MTY0LCAweEVEOTcsIDB4RUQ5NywgMHgyMUNBLCAweEVEOTgsIDB4RUQ5OCwgMHgyMTQ2LAorICAgIDB4RUQ5OSwgMHhFRDk5LCAweDI1QzUsIDB4RUQ5QSwgMHhFRDlBLCAweDIxREMsIDB4RUQ5QiwgMHhFRDlCLCAweDUxNjUsCisgICAgMHhFRDlDLCAweEVEOUMsIDB4MjQ1RSwgMHhFRDlELCAweEVEOUQsIDB4NTE2NiwgMHhFRDlFLCAweEVEOUUsIDB4MjE0RiwKKyAgICAweEVEOUYsIDB4RUQ5RiwgMHg1MTY3LCAweEVEQTAsIDB4RURBMCwgMHgyNUM2LCAweEVEQTEsIDB4RURGRSwgMHgxQTBELAorICAgIDB4RUU0MCwgMHhFRTQwLCAweDI1QzcsIDB4RUU0MSwgMHhFRTQxLCAweDIyNDEsIDB4RUU0MiwgMHhFRTQyLCAweDIxOEEsCisgICAgMHhFRTQzLCAweEVFNDMsIDB4MUUyRiwgMHhFRTQ0LCAweEVFNDQsIDB4MUVEQywgMHhFRTQ1LCAweEVFNDcsIDB4NTE2OCwKKyAgICAweEVFNDgsIDB4RUU0OCwgMHgyMEJGLCAweEVFNDksIDB4RUU0OSwgMHgyMDM0LCAweEVFNEEsIDB4RUU0QywgMHg1MTZCLAorICAgIDB4RUU0RCwgMHhFRTRELCAweDI1QzksIDB4RUU0RSwgMHhFRTUxLCAweDUxNkUsIDB4RUU1MiwgMHhFRTUyLCAweDI1QzgsCisgICAgMHhFRTUzLCAweEVFNTQsIDB4NTE3MiwgMHhFRTU1LCAweEVFNTUsIDB4MjIwRSwgMHhFRTU2LCAweEVFNTYsIDB4NTE3NCwKKyAgICAweEVFNTcsIDB4RUU1NywgMHgyNUNCLCAweEVFNTgsIDB4RUU1RCwgMHg1MTc1LCAweEVFNUUsIDB4RUU1RSwgMHgyMTdELAorICAgIDB4RUU1RiwgMHhFRTYwLCAweDUxN0IsIDB4RUU2MSwgMHhFRTYxLCAweDFGN0UsIDB4RUU2MiwgMHhFRTY3LCAweDUxN0QsCisgICAgMHhFRTY4LCAweEVFNjgsIDB4MjVDQywgMHhFRTY5LCAweEVFNjksIDB4MUZDMywgMHhFRTZBLCAweEVFNkIsIDB4NTE4MywKKyAgICAweEVFNkMsIDB4RUU2QywgMHgyMEI5LCAweEVFNkQsIDB4RUU2RCwgMHg1MTg1LCAweEVFNkUsIDB4RUU2RSwgMHgyMTgxLAorICAgIDB4RUU2RiwgMHhFRTc2LCAweDUxODYsIDB4RUU3NywgMHhFRTc3LCAweDFGREEsIDB4RUU3OCwgMHhFRTdDLCAweDUxOEUsCisgICAgMHhFRTdELCAweEVFN0QsIDB4MjE3MywgMHhFRTdFLCAweEVFN0UsIDB4MUVFMSwgMHhFRTgwLCAweEVFODAsIDB4MjVDRCwKKyAgICAweEVFODEsIDB4RUU4NCwgMHg1MTkzLCAweEVFODUsIDB4RUU4NSwgMHgyNUNFLCAweEVFODYsIDB4RUU4NiwgMHgyMUY2LAorICAgIDB4RUU4NywgMHhFRTg5LCAweDUxOTcsIDB4RUU4QSwgMHhFRThBLCAweDIyNEIsIDB4RUU4QiwgMHhFRThCLCAweDI1RDEsCisgICAgMHhFRThDLCAweEVFOEMsIDB4NTE5QSwgMHhFRThELCAweEVFOEQsIDB4MUVDMCwgMHhFRThFLCAweEVFOEYsIDB4NTE5QiwKKyAgICAweEVFOTAsIDB4RUU5MCwgMHgyMDA4LCAweEVFOTEsIDB4RUU5MywgMHg1MTlELCAweEVFOTQsIDB4RUU5NCwgMHgyNUQwLAorICAgIDB4RUU5NSwgMHhFRTk2LCAweDUxQTAsIDB4RUU5NywgMHhFRTk3LCAweDI1RDIsIDB4RUU5OCwgMHhFRTk4LCAweDUxQTIsCisgICAgMHhFRTk5LCAweEVFOTksIDB4MUYyQSwgMHhFRTlBLCAweEVFOUMsIDB4NTFBMywgMHhFRTlELCAweEVFOUQsIDB4MUU3MiwKKyAgICAweEVFOUUsIDB4RUU5RSwgMHgyNUQzLCAweEVFOUYsIDB4RUVBMCwgMHg1MUE2LCAweEVFQTEsIDB4RUVGRSwgMHgxQTZCLAorICAgIDB4RUY0MCwgMHhFRjQwLCAweDIxQkUsIDB4RUY0MSwgMHhFRjQxLCAweDI1RDQsIDB4RUY0MiwgMHhFRjQyLCAweDIwNDQsCisgICAgMHhFRjQzLCAweEVGNDMsIDB4NTFBOCwgMHhFRjQ0LCAweEVGNDQsIDB4MjVDRiwgMHhFRjQ1LCAweEVGNDUsIDB4MjBGMywKKyAgICAweEVGNDYsIDB4RUY0QiwgMHg1MUE5LCAweEVGNEMsIDB4RUY0QywgMHgxRjAwLCAweEVGNEQsIDB4RUY1MSwgMHg1MUFGLAorICAgIDB4RUY1MiwgMHhFRjUzLCAweDI0Q0MsIDB4RUY1NCwgMHhFRjU0LCAweDUxQjQsIDB4RUY1NSwgMHhFRjU1LCAweDI2OTgsCisgICAgMHhFRjU2LCAweEVGNTYsIDB4NTFCNSwgMHhFRjU3LCAweEVGNTcsIDB4MjY3OCwgMHhFRjU4LCAweEVGNTksIDB4NTFCNiwKKyAgICAweEVGNUEsIDB4RUY1QSwgMHgyNENFLCAweEVGNUIsIDB4RUY1RiwgMHg1MUI4LCAweEVGNjAsIDB4RUY2MCwgMHgyNENGLAorICAgIDB4RUY2MSwgMHhFRjY3LCAweDUxQkQsIDB4RUY2OCwgMHhFRjY4LCAweDIwQjgsIDB4RUY2OSwgMHhFRjY5LCAweDUxQzQsCisgICAgMHhFRjZBLCAweEVGNkEsIDB4MjREMCwgMHhFRjZCLCAweEVGNkIsIDB4NTFDNSwgMHhFRjZDLCAweEVGNkMsIDB4MjREMSwKKyAgICAweEVGNkQsIDB4RUY3NiwgMHg1MUM2LCAweEVGNzcsIDB4RUY3NywgMHgxRUY0LCAweEVGNzgsIDB4RUY3OSwgMHg1MUQwLAorICAgIDB4RUY3QSwgMHhFRjdBLCAweDIzOUIsIDB4RUY3QiwgMHhFRjdCLCAweDUxRDIsIDB4RUY3QywgMHhFRjdDLCAweDI2N0UsCisgICAgMHhFRjdELCAweEVGN0UsIDB4NTFEMywgMHhFRjgwLCAweEVGODEsIDB4NTFENSwgMHhFRjgyLCAweEVGODIsIDB4MjM5RCwKKyAgICAweEVGODMsIDB4RUY4NCwgMHgyMzlGLCAweEVGODUsIDB4RUY4NSwgMHg1MUQ3LCAweEVGODYsIDB4RUY4NiwgMHgyM0ExLAorICAgIDB4RUY4NywgMHhFRjg3LCAweDUxRDgsIDB4RUY4OCwgMHhFRjg4LCAweDFFRjEsIDB4RUY4OSwgMHhFRjhBLCAweDUxRDksCisgICAgMHhFRjhCLCAweEVGOEIsIDB4MjIxRSwgMHhFRjhDLCAweEVGOEMsIDB4NTFEQiwgMHhFRjhELCAweEVGOEQsIDB4MjNBMiwKKyAgICAweEVGOEUsIDB4RUY5NCwgMHg1MURDLCAweEVGOTUsIDB4RUY5NSwgMHgyMTRCLCAweEVGOTYsIDB4RUY5NiwgMHgxRTM2LAorICAgIDB4RUY5NywgMHhFRjk3LCAweDIxMzUsIDB4RUY5OCwgMHhFRjlCLCAweDUxRTMsIDB4RUY5QywgMHhFRjlDLCAweDFGQUQsCisgICAgMHhFRjlELCAweEVGOUQsIDB4NTFFNywgMHhFRjlFLCAweEVGOUUsIDB4MUU1MywgMHhFRjlGLCAweEVGQTAsIDB4NTFFOCwKKyAgICAweEVGQTEsIDB4RUZGRSwgMHgxQUM5LCAweEYwNDAsIDB4RjA0MCwgMHg1MUVBLCAweEYwNDEsIDB4RjA0MSwgMHgyM0EzLAorICAgIDB4RjA0MiwgMHhGMDQyLCAweDIyMDMsIDB4RjA0MywgMHhGMDQzLCAweDUxRUIsIDB4RjA0NCwgMHhGMDQ0LCAweDFFRTcsCisgICAgMHhGMDQ1LCAweEYwNDYsIDB4NTFFQywgMHhGMDQ3LCAweEYwNDcsIDB4MjNBNCwgMHhGMDQ4LCAweEYwNDgsIDB4MjA5NywKKyAgICAweEYwNDksIDB4RjA0OSwgMHgxRUU0LCAweEYwNEEsIDB4RjA0RCwgMHg1MUVFLCAweEYwNEUsIDB4RjA0RSwgMHgyMjM4LAorICAgIDB4RjA0RiwgMHhGMDUwLCAweDUxRjIsIDB4RjA1MSwgMHhGMDUxLCAweDIzQTUsIDB4RjA1MiwgMHhGMDUzLCAweDUxRjQsCisgICAgMHhGMDU0LCAweEYwNTQsIDB4MUY5QSwgMHhGMDU1LCAweEYwNTYsIDB4NTFGNiwgMHhGMDU3LCAweEYwNTcsIDB4MjFDMywKKyAgICAweEYwNTgsIDB4RjA1RCwgMHg1MUY4LCAweEYwNUUsIDB4RjA1RSwgMHgxRjJFLCAweEYwNUYsIDB4RjA2NywgMHg1MUZFLAorICAgIDB4RjA2OCwgMHhGMDY4LCAweDIzOUMsIDB4RjA2OSwgMHhGMDZCLCAweDUyMDcsIDB4RjA2QywgMHhGMDZDLCAweDIzQTYsCisgICAgMHhGMDZELCAweEYwNzAsIDB4NTIwQSwgMHhGMDcxLCAweEYwNzEsIDB4MjM5RSwgMHhGMDcyLCAweEYwNzIsIDB4NTIwRSwKKyAgICAweEYwNzMsIDB4RjA3MywgMHgyMDM1LCAweEYwNzQsIDB4RjA3NCwgMHgyM0E3LCAweEYwNzUsIDB4RjA3NywgMHg1MjBGLAorICAgIDB4RjA3OCwgMHhGMDc4LCAweDIzQTgsIDB4RjA3OSwgMHhGMDc5LCAweDUyMTIsIDB4RjA3QSwgMHhGMDdBLCAweDIwNzUsCisgICAgMHhGMDdCLCAweEYwN0MsIDB4NTIxMywgMHhGMDdELCAweEYwN0UsIDB4MjNBOSwgMHhGMDgwLCAweEYwODAsIDB4MjNBQiwKKyAgICAweEYwODEsIDB4RjA4MSwgMHgxRkVCLCAweEYwODIsIDB4RjA4MiwgMHgyM0FDLCAweEYwODMsIDB4RjA4NiwgMHg1MjE1LAorICAgIDB4RjA4NywgMHhGMDg3LCAweDFGNkEsIDB4RjA4OCwgMHhGMDg4LCAweDIwRjksIDB4RjA4OSwgMHhGMDhBLCAweDUyMTksCisgICAgMHhGMDhCLCAweEYwOEIsIDB4MjY2NiwgMHhGMDhDLCAweEYwOEYsIDB4NTIxQiwgMHhGMDkwLCAweEYwOTAsIDB4MjY2NywKKyAgICAweEYwOTEsIDB4RjA5MSwgMHg1MjFGLCAweEYwOTIsIDB4RjA5MiwgMHgxRTZDLCAweEYwOTMsIDB4RjA5NSwgMHg1MjIwLAorICAgIDB4RjA5NiwgMHhGMDk2LCAweDIzQUQsIDB4RjA5NywgMHhGMEEwLCAweDUyMjMsIDB4RjBBMSwgMHhGMEZFLCAweDFCMjcsCisgICAgMHhGMTQwLCAweEYxNTEsIDB4NTIyRCwgMHhGMTUyLCAweEYxNTIsIDB4MjA2RCwgMHhGMTUzLCAweEYxNTMsIDB4MjI0MiwKKyAgICAweEYxNTQsIDB4RjE1NCwgMHgxRjAyLCAweEYxNTUsIDB4RjE1NiwgMHg1MjNGLCAweEYxNTcsIDB4RjE1NywgMHgyMTgzLAorICAgIDB4RjE1OCwgMHhGMTU4LCAweDUyNDEsIDB4RjE1OSwgMHhGMTU5LCAweDFFODUsIDB4RjE1QSwgMHhGMTVBLCAweDIxRTksCisgICAgMHhGMTVCLCAweEYxNjYsIDB4NTI0MiwgMHhGMTY3LCAweEYxNjcsIDB4MUU1NywgMHhGMTY4LCAweEYxNzUsIDB4NTI0RSwKKyAgICAweEYxNzYsIDB4RjE3NiwgMHgyMkE1LCAweEYxNzcsIDB4RjE3NywgMHgyNDA3LCAweEYxNzgsIDB4RjE3OCwgMHgxRkNBLAorICAgIDB4RjE3OSwgMHhGMTc5LCAweDUyNUMsIDB4RjE3QSwgMHhGMTdBLCAweDI0MDIsIDB4RjE3QiwgMHhGMTdCLCAweDFGODIsCisgICAgMHhGMTdDLCAweEYxN0QsIDB4NTI1RCwgMHhGMTdFLCAweEYxN0UsIDB4MjQwOCwgMHhGMTgwLCAweEYxODAsIDB4MjQwNCwKKyAgICAweEYxODEsIDB4RjE4MSwgMHg1MjVGLCAweEYxODIsIDB4RjE4MiwgMHgyMTMxLCAweEYxODMsIDB4RjE4MywgMHg1MjYwLAorICAgIDB4RjE4NCwgMHhGMTg0LCAweDIxODQsIDB4RjE4NSwgMHhGMTg1LCAweDUyNjEsIDB4RjE4NiwgMHhGMTg2LCAweDI0MDMsCisgICAgMHhGMTg3LCAweEYxODcsIDB4NTI2MiwgMHhGMTg4LCAweEYxODgsIDB4MjA2RSwgMHhGMTg5LCAweEYxODksIDB4MjQwQiwKKyAgICAweEYxOEEsIDB4RjE5MywgMHg1MjYzLCAweEYxOTQsIDB4RjE5NCwgMHgxRjNGLCAweEYxOTUsIDB4RjE5NywgMHg1MjZELAorICAgIDB4RjE5OCwgMHhGMTk4LCAweDIwNjcsIDB4RjE5OSwgMHhGMUEwLCAweDUyNzAsIDB4RjFBMSwgMHhGMUZFLCAweDFCODUsCisgICAgMHhGMjQwLCAweEYyNDQsIDB4NTI3OCwgMHhGMjQ1LCAweEYyNDUsIDB4MUZENywgMHhGMjQ2LCAweEYyNDYsIDB4NTI3RCwKKyAgICAweEYyNDcsIDB4RjI0NywgMHgxRTgzLCAweEYyNDgsIDB4RjI0QSwgMHg1MjdFLCAweEYyNEIsIDB4RjI0QiwgMHgyNDBGLAorICAgIDB4RjI0QywgMHhGMjUyLCAweDUyODEsIDB4RjI1MywgMHhGMjUzLCAweDI0MEUsIDB4RjI1NCwgMHhGMjU0LCAweDIwQzcsCisgICAgMHhGMjU1LCAweEYyNTUsIDB4MjQwRCwgMHhGMjU2LCAweEYyNUIsIDB4NTI4OCwgMHhGMjVDLCAweEYyNUMsIDB4MjQxMiwKKyAgICAweEYyNUQsIDB4RjI1RSwgMHg1MjhFLCAweEYyNUYsIDB4RjI1RiwgMHgyMEI3LCAweEYyNjAsIDB4RjI3MCwgMHg1MjkwLAorICAgIDB4RjI3MSwgMHhGMjcxLCAweDIzRjAsIDB4RjI3MiwgMHhGMjcyLCAweDUyQTEsIDB4RjI3MywgMHhGMjczLCAweDI0MTEsCisgICAgMHhGMjc0LCAweEYyNzQsIDB4MjQxNCwgMHhGMjc1LCAweEYyNzUsIDB4NTJBMiwgMHhGMjc2LCAweEYyNzYsIDB4MjE3MCwKKyAgICAweEYyNzcsIDB4RjI3QiwgMHg1MkEzLCAweEYyN0MsIDB4RjI3QywgMHgyNDA1LCAweEYyN0QsIDB4RjI3RCwgMHgyMTBDLAorICAgIDB4RjI3RSwgMHhGMjdFLCAweDI0MTUsIDB4RjI4MCwgMHhGMjg0LCAweDUyQTgsIDB4RjI4NSwgMHhGMjg1LCAweDIwNjYsCisgICAgMHhGMjg2LCAweEYyODYsIDB4NTJBRCwgMHhGMjg3LCAweEYyODcsIDB4MjM1MiwgMHhGMjg4LCAweEYyODgsIDB4MjQxMywKKyAgICAweEYyODksIDB4RjI4OSwgMHgyNDEwLCAweEYyOEEsIDB4RjI4QiwgMHgyNDE2LCAweEYyOEMsIDB4RjI4QywgMHgyMEYxLAorICAgIDB4RjI4RCwgMHhGMjkwLCAweDUyQUUsIDB4RjI5MSwgMHhGMjkxLCAweDI0MEEsIDB4RjI5MiwgMHhGMjkzLCAweDUyQjIsCisgICAgMHhGMjk0LCAweEYyOTQsIDB4MjQwOSwgMHhGMjk1LCAweEYyOTUsIDB4NTJCNCwgMHhGMjk2LCAweEYyOTYsIDB4MjQxOCwKKyAgICAweEYyOTcsIDB4RjI5QiwgMHg1MkI1LCAweEYyOUMsIDB4RjI5QywgMHgxRkE3LCAweEYyOUQsIDB4RjI5RCwgMHg1MkJBLAorICAgIDB4RjI5RSwgMHhGMjlFLCAweDIxRkMsIDB4RjI5RiwgMHhGMkEwLCAweDUyQkIsIDB4RjJBMSwgMHhGMkZFLCAweDFCRTMsCisgICAgMHhGMzQwLCAweEYzNDAsIDB4MUZDMSwgMHhGMzQxLCAweEYzNDEsIDB4MjQwNiwgMHhGMzQyLCAweEYzNDQsIDB4NTJCRCwKKyAgICAweEYzNDUsIDB4RjM0NSwgMHgyMjlDLCAweEYzNDYsIDB4RjM0NywgMHg1MkMwLCAweEYzNDgsIDB4RjM0OCwgMHgyMDRFLAorICAgIDB4RjM0OSwgMHhGMzQ5LCAweDUyQzIsIDB4RjM0QSwgMHhGMzRBLCAweDI0MUEsIDB4RjM0QiwgMHhGMzRCLCAweDI0MTksCisgICAgMHhGMzRDLCAweEYzNEYsIDB4NTJDMywgMHhGMzUwLCAweEYzNTAsIDB4MjQwQywgMHhGMzUxLCAweEYzNjAsIDB4NTJDNywKKyAgICAweEYzNjEsIDB4RjM2MSwgMHgxRTI5LCAweEYzNjIsIDB4RjM3MywgMHg1MkQ3LCAweEYzNzQsIDB4RjM3NCwgMHgyNjYxLAorICAgIDB4RjM3NSwgMHhGMzc1LCAweDUyRTksIDB4RjM3NiwgMHhGMzc2LCAweDI2QTQsIDB4RjM3NywgMHhGMzc3LCAweDIxNzQsCisgICAgMHhGMzc4LCAweEYzNzgsIDB4MjY2MywgMHhGMzc5LCAweEYzNzksIDB4MjY2MiwgMHhGMzdBLCAweEYzN0UsIDB4NTJFQSwKKyAgICAweEYzODAsIDB4RjM4QiwgMHg1MkVGLCAweEYzOEMsIDB4RjM4QywgMHgyNjc1LCAweEYzOEQsIDB4RjM5RiwgMHg1MkZCLAorICAgIDB4RjNBMCwgMHhGM0EwLCAweDIxNEMsIDB4RjNBMSwgMHhGM0ZFLCAweDFDNDEsIDB4RjQ0MCwgMHhGNDQ0LCAweDUzMEUsCisgICAgMHhGNDQ1LCAweEY0NDUsIDB4MjY3QSwgMHhGNDQ2LCAweEY0NEYsIDB4NTMxMywgMHhGNDUwLCAweEY0NTAsIDB4MjZBMCwKKyAgICAweEY0NTEsIDB4RjQ1NiwgMHg1MzFELCAweEY0NTcsIDB4RjQ1NywgMHgyNjY4LCAweEY0NTgsIDB4RjQ1OCwgMHg1MzIzLAorICAgIDB4RjQ1OSwgMHhGNDU5LCAweDFFRDAsIDB4RjQ1QSwgMHhGNDVBLCAweDUzMjQsIDB4RjQ1QiwgMHhGNDVCLCAweDIwOTYsCisgICAgMHhGNDVDLCAweEY0NUMsIDB4NTMyNSwgMHhGNDVELCAweEY0NUQsIDB4MjNDQywgMHhGNDVFLCAweEY0NjEsIDB4NTMyNiwKKyAgICAweEY0NjIsIDB4RjQ2MiwgMHgyM0M4LCAweEY0NjMsIDB4RjQ2MywgMHg1MzJBLCAweEY0NjQsIDB4RjQ2NCwgMHgyMjNFLAorICAgIDB4RjQ2NSwgMHhGNDc0LCAweDUzMkIsIDB4RjQ3NSwgMHhGNDc1LCAweDI2NjUsIDB4RjQ3NiwgMHhGNDdCLCAweDUzM0IsCisgICAgMHhGNDdDLCAweEY0N0MsIDB4MjY2NCwgMHhGNDdELCAweEY0N0QsIDB4NTM0MSwgMHhGNDdFLCAweEY0N0UsIDB4MjIzOSwKKyAgICAweEY0ODAsIDB4RjQ5MywgMHg1MzQyLCAweEY0OTQsIDB4RjQ5NCwgMHgyMDRBLCAweEY0OTUsIDB4RjQ5OCwgMHg1MzU2LAorICAgIDB4RjQ5OSwgMHhGNDk5LCAweDI2MUYsIDB4RjQ5QSwgMHhGNDlCLCAweDUzNUEsIDB4RjQ5QywgMHhGNDlDLCAweDI2MUUsCisgICAgMHhGNDlELCAweEY0QTAsIDB4NTM1QywgMHhGNEExLCAweEY0RkUsIDB4MUM5RiwgMHhGNTQwLCAweEY1NDQsIDB4NTM2MCwKKyAgICAweEY1NDUsIDB4RjU0NSwgMHgyNjIwLCAweEY1NDYsIDB4RjU0NiwgMHg1MzY1LCAweEY1NDcsIDB4RjU0NywgMHgyNjIxLAorICAgIDB4RjU0OCwgMHhGNTUxLCAweDUzNjYsIDB4RjU1MiwgMHhGNTUyLCAweDI2MjIsIDB4RjU1MywgMHhGNTUzLCAweDUzNzAsCisgICAgMHhGNTU0LCAweEY1NTQsIDB4MjYyNywgMHhGNTU1LCAweEY1NTUsIDB4MUUzOSwgMHhGNTU2LCAweEY1NTYsIDB4MjYyNSwKKyAgICAweEY1NTcsIDB4RjU1RCwgMHg1MzcxLCAweEY1NUUsIDB4RjU1RSwgMHgyNjI5LCAweEY1NUYsIDB4RjU2MCwgMHg1Mzc4LAorICAgIDB4RjU2MSwgMHhGNTYxLCAweDI2MkUsIDB4RjU2MiwgMHhGNTYyLCAweDI2MkIsIDB4RjU2MywgMHhGNTZELCAweDUzN0EsCisgICAgMHhGNTZFLCAweEY1NkUsIDB4MjYyQSwgMHhGNTZGLCAweEY1NkYsIDB4MjYyRCwgMHhGNTcwLCAweEY1NzAsIDB4NTM4NSwKKyAgICAweEY1NzEsIDB4RjU3MSwgMHgyNjI4LCAweEY1NzIsIDB4RjU3MiwgMHgyMUI5LCAweEY1NzMsIDB4RjU3RSwgMHg1Mzg2LAorICAgIDB4RjU4MCwgMHhGNTg0LCAweDUzOTIsIDB4RjU4NSwgMHhGNTg1LCAweDI2MzYsIDB4RjU4NiwgMHhGNTg2LCAweDI2MzAsCisgICAgMHhGNTg3LCAweEY1OEIsIDB4NTM5NywgMHhGNThDLCAweEY1OEMsIDB4MjYzOCwgMHhGNThELCAweEY1OEQsIDB4NTM5QywKKyAgICAweEY1OEUsIDB4RjU4RSwgMHgyMDBELCAweEY1OEYsIDB4RjU4RiwgMHgyNjM3LCAweEY1OTAsIDB4RjU5OCwgMHg1MzlELAorICAgIDB4RjU5OSwgMHhGNTk5LCAweDI2NDUsIDB4RjU5QSwgMHhGNTlBLCAweDUzQTYsIDB4RjU5QiwgMHhGNTlCLCAweDI2M0EsCisgICAgMHhGNTlDLCAweEY1OUYsIDB4NTNBNywgMHhGNUEwLCAweEY1QTAsIDB4MjY0MywgMHhGNUExLCAweEY1RkUsIDB4MUNGRCwKKyAgICAweEY2NDAsIDB4RjY0MCwgMHg1M0FCLCAweEY2NDEsIDB4RjY0MSwgMHgyNjQwLCAweEY2NDIsIDB4RjY0NCwgMHg1M0FDLAorICAgIDB4RjY0NSwgMHhGNjQ1LCAweDI2M0QsIDB4RjY0NiwgMHhGNjQ2LCAweDI2NDEsIDB4RjY0NywgMHhGNjQ3LCAweDUzQUYsCisgICAgMHhGNjQ4LCAweEY2NDgsIDB4MjYzRSwgMHhGNjQ5LCAweEY2NEEsIDB4NTNCMCwgMHhGNjRCLCAweEY2NEIsIDB4MjYzRiwKKyAgICAweEY2NEMsIDB4RjY0QywgMHgxRkMwLCAweEY2NEQsIDB4RjY0RCwgMHg1M0IyLCAweEY2NEUsIDB4RjY0RiwgMHgyNjNCLAorICAgIDB4RjY1MCwgMHhGNjUzLCAweDUzQjMsIDB4RjY1NCwgMHhGNjU0LCAweDI2NDIsIDB4RjY1NSwgMHhGNjU3LCAweDUzQjcsCisgICAgMHhGNjU4LCAweEY2NTgsIDB4MjY0NCwgMHhGNjU5LCAweEY2NjAsIDB4NTNCQSwgMHhGNjYxLCAweEY2NjEsIDB4MjYzOSwKKyAgICAweEY2NjIsIDB4RjY2MiwgMHg1M0MyLCAweEY2NjMsIDB4RjY2MywgMHgyNjRDLCAweEY2NjQsIDB4RjY2QiwgMHg1M0MzLAorICAgIDB4RjY2QywgMHhGNjZDLCAweDI2NDcsIDB4RjY2RCwgMHhGNjZELCAweDI2NEIsIDB4RjY2RSwgMHhGNjcwLCAweDUzQ0IsCisgICAgMHhGNjcxLCAweEY2NzEsIDB4MjY0OSwgMHhGNjcyLCAweEY2NzMsIDB4NTNDRSwgMHhGNjc0LCAweEY2NzQsIDB4MjY0OCwKKyAgICAweEY2NzUsIDB4RjY3NSwgMHg1M0QwLCAweEY2NzYsIDB4RjY3NiwgMHgyNjRBLCAweEY2NzcsIDB4RjY3NywgMHgyMTA4LAorICAgIDB4RjY3OCwgMHhGNjdFLCAweDUzRDEsIDB4RjY4MCwgMHhGNjg0LCAweDUzRDgsIDB4RjY4NSwgMHhGNjg1LCAweDI2NEQsCisgICAgMHhGNjg2LCAweEY2ODcsIDB4NTNERCwgMHhGNjg4LCAweEY2ODgsIDB4MjYzNCwgMHhGNjg5LCAweEY2ODksIDB4NTNERiwKKyAgICAweEY2OEEsIDB4RjY4QSwgMHgyNjUxLCAweEY2OEIsIDB4RjY4QywgMHg1M0UwLCAweEY2OEQsIDB4RjY4RCwgMHgyNjUwLAorICAgIDB4RjY4RSwgMHhGNjhFLCAweDI2NTIsIDB4RjY4RiwgMHhGNjkxLCAweDUzRTIsIDB4RjY5MiwgMHhGNjkyLCAweDI2NEYsCisgICAgMHhGNjkzLCAweEY2OTUsIDB4NTNFNSwgMHhGNjk2LCAweEY2OTYsIDB4MjYzMiwgMHhGNjk3LCAweEY2OTcsIDB4MjY0RSwKKyAgICAweEY2OTgsIDB4RjY5OCwgMHgyNjUzLCAweEY2OTksIDB4RjY5OSwgMHg1M0U4LCAweEY2OUEsIDB4RjY5QSwgMHgyNjU3LAorICAgIDB4RjY5QiwgMHhGNjlCLCAweDUzRTksIDB4RjY5QywgMHhGNjlDLCAweDI2MzUsIDB4RjY5RCwgMHhGNjlELCAweDUzRUEsCisgICAgMHhGNjlFLCAweEY2OUUsIDB4MjYzMywgMHhGNjlGLCAweEY2OUYsIDB4NTNFQiwgMHhGNkEwLCAweEY2QTAsIDB4MjY1NiwKKyAgICAweEY2QTEsIDB4RjZGRSwgMHgxRDVCLCAweEY3NDAsIDB4Rjc0MSwgMHg1M0VDLCAweEY3NDIsIDB4Rjc0MiwgMHgyNjU0LAorICAgIDB4Rjc0MywgMHhGNzQ4LCAweDUzRUUsIDB4Rjc0OSwgMHhGNzQ5LCAweDI2NTgsIDB4Rjc0QSwgMHhGNzRCLCAweDUzRjQsCisgICAgMHhGNzRDLCAweEY3NEMsIDB4MjY1NSwgMHhGNzRELCAweEY3NEQsIDB4MUU0RCwgMHhGNzRFLCAweEY3NTUsIDB4NTNGNiwKKyAgICAweEY3NTYsIDB4Rjc1NiwgMHgyNjVCLCAweEY3NTcsIDB4Rjc1NywgMHg1M0ZFLCAweEY3NTgsIDB4Rjc1OCwgMHgyNjVBLAorICAgIDB4Rjc1OSwgMHhGNzU5LCAweDUzRkYsIDB4Rjc1QSwgMHhGNzVBLCAweDI2NTksIDB4Rjc1QiwgMHhGNzVCLCAweDIwMkUsCisgICAgMHhGNzVDLCAweEY3NUMsIDB4MjYyRiwgMHhGNzVELCAweEY3NjAsIDB4NTQwMCwgMHhGNzYxLCAweEY3NjEsIDB4MjY0NiwKKyAgICAweEY3NjIsIDB4Rjc2MiwgMHg1NDA0LCAweEY3NjMsIDB4Rjc2MywgMHgyNjI2LCAweEY3NjQsIDB4Rjc2QSwgMHg1NDA1LAorICAgIDB4Rjc2QiwgMHhGNzZCLCAweDI2NUMsIDB4Rjc2QywgMHhGNzcwLCAweDU0MEMsIDB4Rjc3MSwgMHhGNzcxLCAweDI2MkMsCisgICAgMHhGNzcyLCAweEY3N0IsIDB4NTQxMSwgMHhGNzdDLCAweEY3N0MsIDB4MjYyMywgMHhGNzdELCAweEY3N0QsIDB4NTQxQiwKKyAgICAweEY3N0UsIDB4Rjc3RSwgMHgyNjMxLCAweEY3ODAsIDB4RjdBMCwgMHg1NDFDLCAweEY3QTEsIDB4RjdGRSwgMHgxREI5LAorICAgIDB4Rjg0MCwgMHhGODQxLCAweDU0M0QsIDB4Rjg0MiwgMHhGODQyLCAweDIwOUMsIDB4Rjg0MywgMHhGODQ1LCAweDU0M0YsCisgICAgMHhGODQ2LCAweEY4NDYsIDB4MjU4MCwgMHhGODQ3LCAweEY4NDgsIDB4NTQ0MiwgMHhGODQ5LCAweEY4NDksIDB4MjJEQywKKyAgICAweEY4NEEsIDB4Rjg0RiwgMHg1NDQ0LCAweEY4NTAsIDB4Rjg1MCwgMHgxRjA1LCAweEY4NTEsIDB4Rjg1MSwgMHgyMDhCLAorICAgIDB4Rjg1MiwgMHhGODUyLCAweDU0NEEsIDB4Rjg1MywgMHhGODUzLCAweDI1ODEsIDB4Rjg1NCwgMHhGODYyLCAweDU0NEIsCisgICAgMHhGODYzLCAweEY4NjMsIDB4MjU4MywgMHhGODY0LCAweEY4NjQsIDB4MjU4MiwgMHhGODY1LCAweEY4NjUsIDB4NTQ1QSwKKyAgICAweEY4NjYsIDB4Rjg2NiwgMHgyMUVFLCAweEY4NjcsIDB4Rjg3MSwgMHg1NDVCLCAweEY4NzIsIDB4Rjg3MiwgMHgyMTgyLAorICAgIDB4Rjg3MywgMHhGODc3LCAweDU0NjYsIDB4Rjg3OCwgMHhGODc4LCAweDIyNDMsIDB4Rjg3OSwgMHhGODc5LCAweDU0NkIsCisgICAgMHhGODdBLCAweEY4N0EsIDB4MjU4NywgMHhGODdCLCAweEY4N0IsIDB4NTQ2QywgMHhGODdDLCAweEY4N0MsIDB4MjU4OCwKKyAgICAweEY4N0QsIDB4Rjg3RSwgMHg1NDZELCAweEY4ODAsIDB4Rjg4MCwgMHg1NDZGLCAweEY4ODEsIDB4Rjg4MSwgMHgyNTg0LAorICAgIDB4Rjg4MiwgMHhGODgzLCAweDU0NzAsIDB4Rjg4NCwgMHhGODg0LCAweDIxRkQsIDB4Rjg4NSwgMHhGODg1LCAweDU0NzIsCisgICAgMHhGODg2LCAweEY4ODYsIDB4MjFFRiwgMHhGODg3LCAweEY4OEMsIDB4NTQ3MywgMHhGODhELCAweEY4OEQsIDB4MjU4QSwKKyAgICAweEY4OEUsIDB4Rjg4RSwgMHgyNThDLCAweEY4OEYsIDB4Rjg5OCwgMHg1NDc5LCAweEY4OTksIDB4Rjg5OSwgMHgxRjQ3LAorICAgIDB4Rjg5QSwgMHhGODlDLCAweDU0ODMsIDB4Rjg5RCwgMHhGODlELCAweDFGMUQsIDB4Rjg5RSwgMHhGODlGLCAweDU0ODYsCisgICAgMHhGOEEwLCAweEY4QTAsIDB4MjU4RCwgMHhGOTQwLCAweEY5NEQsIDB4NTQ4OCwgMHhGOTRFLCAweEY5NEUsIDB4MUZEMCwKKyAgICAweEY5NEYsIDB4Rjk0RiwgMHgyNTkyLCAweEY5NTAsIDB4Rjk1MCwgMHgyNThGLCAweEY5NTEsIDB4Rjk1OCwgMHg1NDk2LAorICAgIDB4Rjk1OSwgMHhGOTU5LCAweDI1OTQsIDB4Rjk1QSwgMHhGOTVBLCAweDFFRTAsIDB4Rjk1QiwgMHhGOTVDLCAweDU0OUUsCisgICAgMHhGOTVELCAweEY5NUQsIDB4MjU5MSwgMHhGOTVFLCAweEY5NUUsIDB4MjU5NSwgMHhGOTVGLCAweEY5NjYsIDB4NTRBMCwKKyAgICAweEY5NjcsIDB4Rjk2NywgMHgyNTk3LCAweEY5NjgsIDB4Rjk2OCwgMHg1NEE4LCAweEY5NjksIDB4Rjk2OSwgMHgyMEI2LAorICAgIDB4Rjk2QSwgMHhGOTZCLCAweDU0QTksIDB4Rjk2QywgMHhGOTZDLCAweDI1OTgsIDB4Rjk2RCwgMHhGOTZFLCAweDU0QUIsCisgICAgMHhGOTZGLCAweEY5NkYsIDB4MjBGNiwgMHhGOTcwLCAweEY5N0UsIDB4NTRBRCwgMHhGOTgwLCAweEY5ODQsIDB4NTRCQywKKyAgICAweEY5ODUsIDB4Rjk4NSwgMHgyNTg1LCAweEY5ODYsIDB4Rjk4NiwgMHg1NEMxLCAweEY5ODcsIDB4Rjk4NywgMHgyNTk5LAorICAgIDB4Rjk4OCwgMHhGOTkwLCAweDU0QzIsIDB4Rjk5MSwgMHhGOTkxLCAweDI1OTYsIDB4Rjk5MiwgMHhGOTk1LCAweDU0Q0IsCisgICAgMHhGOTk2LCAweEY5OTYsIDB4MjU5QSwgMHhGOTk3LCAweEY5OTcsIDB4NTRDRiwgMHhGOTk4LCAweEY5OTgsIDB4MjU5QiwKKyAgICAweEY5OTksIDB4RjlBMCwgMHg1NEQwLCAweEZBNDAsIDB4RkE0MSwgMHg1NEQ4LCAweEZBNDIsIDB4RkE0MiwgMHgyNTlELAorICAgIDB4RkE0MywgMHhGQTQ1LCAweDU0REEsIDB4RkE0NiwgMHhGQTQ2LCAweDI1OUUsIDB4RkE0NywgMHhGQTRCLCAweDU0REQsCisgICAgMHhGQTRDLCAweEZBNEMsIDB4MjM0QywgMHhGQTRELCAweEZBNTAsIDB4NTRFMiwgMHhGQTUxLCAweEZBNTEsIDB4MUY0NCwKKyAgICAweEZBNTIsIDB4RkE1NywgMHg1NEU2LCAweEZBNTgsIDB4RkE1OCwgMHgyNjYwLCAweEZBNTksIDB4RkE1OSwgMHgyNUEwLAorICAgIDB4RkE1QSwgMHhGQTVDLCAweDU0RUMsIDB4RkE1RCwgMHhGQTVELCAweDI1OUMsIDB4RkE1RSwgMHhGQTVFLCAweDU0RUYsCisgICAgMHhGQTVGLCAweEZBNUYsIDB4MjU5RiwgMHhGQTYwLCAweEZBNjAsIDB4NTRGMCwgMHhGQTYxLCAweEZBNjEsIDB4MUY2QywKKyAgICAweEZBNjIsIDB4RkE2RiwgMHg1NEYxLCAweEZBNzAsIDB4RkE3MCwgMHgyNUEyLCAweEZBNzEsIDB4RkE3MywgMHg1NEZGLAorICAgIDB4RkE3NCwgMHhGQTc0LCAweDIwQUUsIDB4RkE3NSwgMHhGQTc1LCAweDU1MDIsIDB4RkE3NiwgMHhGQTc2LCAweDI1OEIsCisgICAgMHhGQTc3LCAweEZBNzcsIDB4MjVBMywgMHhGQTc4LCAweEZBN0UsIDB4NTUwMywgMHhGQTgwLCAweEZBODIsIDB4NTUwQSwKKyAgICAweEZBODMsIDB4RkE4MywgMHgyNTg5LCAweEZBODQsIDB4RkE4NCwgMHgyNUE1LCAweEZBODUsIDB4RkE4QywgMHg1NTBELAorICAgIDB4RkE4RCwgMHhGQThELCAweDI1QTQsIDB4RkE4RSwgMHhGQThGLCAweDU1MTUsIDB4RkE5MCwgMHhGQTkwLCAweDI1QTYsCisgICAgMHhGQTkxLCAweEZBOTEsIDB4MjU5MywgMHhGQTkyLCAweEZBOTUsIDB4NTUxNywgMHhGQTk2LCAweEZBOTYsIDB4MjVBNywKKyAgICAweEZBOTcsIDB4RkE5NywgMHgyMjIyLCAweEZBOTgsIDB4RkE5OCwgMHgyNUE5LCAweEZBOTksIDB4RkFBMCwgMHg1NTFCLAorICAgIDB4RkI0MCwgMHhGQjQ4LCAweDU1MjMsIDB4RkI0OSwgMHhGQjQ5LCAweDI1QTgsIDB4RkI0QSwgMHhGQjUxLCAweDU1MkMsCisgICAgMHhGQjUyLCAweEZCNTIsIDB4MjU4NiwgMHhGQjUzLCAweEZCNTYsIDB4NTUzNCwgMHhGQjU3LCAweEZCNTcsIDB4MjVBMSwKKyAgICAweEZCNTgsIDB4RkI1OCwgMHgyNUFBLCAweEZCNTksIDB4RkI1OSwgMHg1NTM4LCAweEZCNUEsIDB4RkI1QSwgMHgyNTkwLAorICAgIDB4RkI1QiwgMHhGQjVCLCAweDI1OEUsIDB4RkI1QywgMHhGQjc0LCAweDU1MzksIDB4RkI3NSwgMHhGQjc1LCAweDI2ODgsCisgICAgMHhGQjc2LCAweEZCNzgsIDB4NTU1MiwgMHhGQjc5LCAweEZCNzksIDB4MjY5RSwgMHhGQjdBLCAweEZCN0EsIDB4MjVGQiwKKyAgICAweEZCN0IsIDB4RkI3QiwgMHg1NTU1LCAweEZCN0MsIDB4RkI3QywgMHgxRjhDLCAweEZCN0QsIDB4RkI3RCwgMHgyMUY0LAorICAgIDB4RkI3RSwgMHhGQjdFLCAweDU1NTYsIDB4RkI4MCwgMHhGQjhGLCAweDU1NTcsIDB4RkI5MCwgMHhGQjkwLCAweDIwMEYsCisgICAgMHhGQjkxLCAweEZCOUIsIDB4NTU2NywgMHhGQjlDLCAweEZCOUMsIDB4MjA3MSwgMHhGQjlELCAweEZCOUUsIDB4NTU3MiwKKyAgICAweEZCOUYsIDB4RkI5RiwgMHgyNUY3LCAweEZCQTAsIDB4RkJBMCwgMHg1NTc0LCAweEZDNDAsIDB4RkM0MywgMHg1NTc1LAorICAgIDB4RkM0NCwgMHhGQzQ0LCAweDI2OTYsIDB4RkM0NSwgMHhGQzQ4LCAweDU1NzksIDB4RkM0OSwgMHhGQzQ5LCAweDI2OEYsCisgICAgMHhGQzRBLCAweEZDNTksIDB4NTU3RCwgMHhGQzVBLCAweEZDNUEsIDB4MjJEQSwgMHhGQzVCLCAweEZDNjIsIDB4NTU4RCwKKyAgICAweEZDNjMsIDB4RkM2MywgMHgxRUMxLCAweEZDNjQsIDB4RkM2NywgMHg1NTk1LCAweEZDNjgsIDB4RkM2OCwgMHgxRUIzLAorICAgIDB4RkM2OSwgMHhGQzZFLCAweDU1OTksIDB4RkM2RiwgMHhGQzZGLCAweDI2NkEsIDB4RkM3MCwgMHhGQzcwLCAweDU1OUYsCisgICAgMHhGQzcxLCAweEZDNzEsIDB4MjY4QSwgMHhGQzcyLCAweEZDNzMsIDB4NTVBMCwgMHhGQzc0LCAweEZDNzQsIDB4MjY2OSwKKyAgICAweEZDNzUsIDB4RkM3NiwgMHg1NUEyLCAweEZDNzcsIDB4RkM3OCwgMHgyNjE4LCAweEZDNzksIDB4RkM3RSwgMHg1NUE0LAorICAgIDB4RkM4MCwgMHhGQzgyLCAweDU1QUEsIDB4RkM4MywgMHhGQzgzLCAweDI2MUEsIDB4RkM4NCwgMHhGQzg5LCAweDU1QUQsCisgICAgMHhGQzhBLCAweEZDOEEsIDB4MjY3MywgMHhGQzhCLCAweEZDQTAsIDB4NTVCMywgMHhGRDQwLCAweEZENTEsIDB4NTVDOSwKKyAgICAweEZENTIsIDB4RkQ1MiwgMHgyMEM2LCAweEZENTMsIDB4RkQ1MywgMHgyMjZCLCAweEZENTQsIDB4RkQ1NiwgMHg1NURCLAorICAgIDB4RkQ1NywgMHhGRDU3LCAweDI0RDMsIDB4RkQ1OCwgMHhGRDU4LCAweDFFODYsIDB4RkQ1OSwgMHhGRDU5LCAweDU1REUsCisgICAgMHhGRDVBLCAweEZENUEsIDB4MjYwRiwgMHhGRDVCLCAweEZENUUsIDB4NTVERiwgMHhGRDVGLCAweEZENUYsIDB4MjYxMSwKKyAgICAweEZENjAsIDB4RkQ2MSwgMHg1NUUzLCAweEZENjIsIDB4RkQ2MiwgMHgyNjEzLCAweEZENjMsIDB4RkQ2NCwgMHg1NUU1LAorICAgIDB4RkQ2NSwgMHhGRDY1LCAweDI2MTAsIDB4RkQ2NiwgMHhGRDY2LCAweDI2MTIsIDB4RkQ2NywgMHhGRDY3LCAweDIwMzAsCisgICAgMHhGRDY4LCAweEZENjgsIDB4NTVFNywgMHhGRDY5LCAweEZENjksIDB4MjY3MSwgMHhGRDZBLCAweEZENkIsIDB4NTVFOCwKKyAgICAweEZENkMsIDB4RkQ2QywgMHgyNjE0LCAweEZENkQsIDB4RkQ2RiwgMHg1NUVBLCAweEZENzAsIDB4RkQ3MCwgMHgyNjE2LAorICAgIDB4RkQ3MSwgMHhGRDcxLCAweDU1RUQsIDB4RkQ3MiwgMHhGRDcyLCAweDI2MTUsIDB4RkQ3MywgMHhGRDc3LCAweDU1RUUsCisgICAgMHhGRDc4LCAweEZENzgsIDB4MjBGMiwgMHhGRDc5LCAweEZEN0MsIDB4NTVGMywgMHhGRDdELCAweEZEN0QsIDB4MjYxNywKKyAgICAweEZEN0UsIDB4RkQ3RSwgMHg1NUY3LCAweEZEODAsIDB4RkQ4NywgMHg1NUY4LCAweEZEODgsIDB4RkQ4OCwgMHgyMDM3LAorICAgIDB4RkQ4OSwgMHhGRDhBLCAweDU2MDAsIDB4RkQ4QiwgMHhGRDhCLCAweDIwQjMsIDB4RkQ4QywgMHhGRDhFLCAweDU2MDIsCisgICAgMHhGRDhGLCAweEZEOEYsIDB4MUYyMiwgMHhGRDkwLCAweEZEOTAsIDB4MjRFRCwgMHhGRDkxLCAweEZEOTMsIDB4NTYwNSwKKyAgICAweEZEOTQsIDB4RkQ5NCwgMHgxRjM0LCAweEZEOTUsIDB4RkQ5QywgMHg1NjA4LCAweEZEOUQsIDB4RkQ5RCwgMHgwQTAyLAorICAgIDB4RkQ5RSwgMHhGRDlFLCAweDQwRDMsIDB4RkQ5RiwgMHhGRDlGLCAweDIwMEMsIDB4RkRBMCwgMHhGREEwLCAweDUwODMsCisgICAgMHhGRTQwLCAweEZFNDAsIDB4MTI1OSwgMHhGRTQxLCAweEZFN0UsIDB4NTYxMCwgMHhGRTgwLCAweEZFQTAsIDB4NTY0RSwKK307CitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfR0JLMktfSF81X0RXb3JkWzEwMTcgKiA0XSA9IHsKKyAgICAweDgxMzAsIDB4ODQzNiwgMHg4NDM2LCAweDU3NTIsIDB4ODEzOCwgMHhGRDM4LCAweEZEMzksIDB4NTc5QywgMHg4MTM4LCAweEZFMzAsIDB4RkUzOSwgMHg1NzlFLAorICAgIDB4ODEzOSwgMHg4MTMwLCAweDgxMzcsIDB4NTdBOCwgMHg4MTM5LCAweDgxMzksIDB4ODEzOSwgMHg1N0IwLCAweDgxMzksIDB4ODIzMCwgMHg4MjM5LCAweDU3QjEsCisgICAgMHg4MTM5LCAweDgzMzAsIDB4ODMzOSwgMHg1N0JCLCAweDgxMzksIDB4ODQzMCwgMHg4NDM5LCAweDU3QzUsIDB4ODEzOSwgMHg4NTMwLCAweDg1MzksIDB4NTdDRiwKKyAgICAweDgxMzksIDB4ODYzMCwgMHg4NjM5LCAweDU3RDksIDB4ODEzOSwgMHg4NzMwLCAweDg3MzksIDB4NTdFMywgMHg4MTM5LCAweDg4MzAsIDB4ODgzOSwgMHg1N0VELAorICAgIDB4ODEzOSwgMHg4OTMwLCAweDg5MzksIDB4NTdGNywgMHg4MTM5LCAweDhCMzIsIDB4OEIzMiwgMHgxMDQyLCAweDgxMzksIDB4OEIzMywgMHg4QjMzLCAweDEyNjMsCisgICAgMHg4MTM5LCAweDhCMzQsIDB4OEIzNCwgMHgxMjcyLCAweDgxMzksIDB4OEIzNSwgMHg4QjM1LCAweDEyNjUsIDB4ODEzOSwgMHg4QjM2LCAweDhCMzYsIDB4MTA1OSwKKyAgICAweDgxMzksIDB4OEIzNywgMHg4QjM3LCAweDI3OTMsIDB4ODEzOSwgMHg4QjM4LCAweDhCMzgsIDB4MDYzRCwgMHg4MTM5LCAweDhCMzksIDB4OEIzOSwgMHgxMzAzLAorICAgIDB4ODEzOSwgMHg4QzMwLCAweDhDMzAsIDB4MENBNiwgMHg4MTM5LCAweDhDMzEsIDB4OEMzMSwgMHgwNjM4LCAweDgxMzksIDB4OEMzMiwgMHg4QzMyLCAweDBDQzYsCisgICAgMHg4MTM5LCAweDhDMzMsIDB4OEMzMywgMHgwM0Q2LCAweDgxMzksIDB4OEMzNCwgMHg4QzM0LCAweDEyOUQsIDB4ODEzOSwgMHg4QzM1LCAweDhDMzUsIDB4MTMxNCwKKyAgICAweDgxMzksIDB4OEMzNiwgMHg4QzM2LCAweDEzMEYsIDB4ODEzOSwgMHg4QzM3LCAweDhDMzcsIDB4MDgyQiwgMHg4MTM5LCAweDhDMzgsIDB4OEMzOCwgMHgxMzk5LAorICAgIDB4ODEzOSwgMHg4QzM5LCAweDhDMzksIDB4MDU5NywgMHg4MTM5LCAweDhEMzAsIDB4OEQzMCwgMHgwOUVGLCAweDgxMzksIDB4OEQzMSwgMHg4RDMxLCAweDEyRkMsCisgICAgMHg4MTM5LCAweDhEMzIsIDB4OEQzMiwgMHgxMjY2LCAweDgxMzksIDB4OEQzMywgMHg4RDMzLCAweDEyODQsIDB4ODEzOSwgMHg4RDM0LCAweDhEMzQsIDB4MkExQSwKKyAgICAweDgxMzksIDB4OEQzNSwgMHg4RDM1LCAweDBENDUsIDB4ODEzOSwgMHg4RDM2LCAweDhEMzYsIDB4MDQ3RSwgMHg4MTM5LCAweDhEMzcsIDB4OEQzNywgMHgxMzUyLAorICAgIDB4ODEzOSwgMHg4RDM4LCAweDhEMzgsIDB4MDRDQywgMHg4MTM5LCAweDhEMzksIDB4OEQzOSwgMHgxMzlDLCAweDgxMzksIDB4OEUzMCwgMHg4RTMwLCAweDEwQkIsCisgICAgMHg4MTM5LCAweDhFMzEsIDB4OEUzMSwgMHgwOTY3LCAweDgxMzksIDB4OEUzMiwgMHg4RTMyLCAweDE1OTMsIDB4ODEzOSwgMHg4RTMzLCAweDhFMzMsIDB4MEU3MiwKKyAgICAweDgxMzksIDB4OEUzNCwgMHg4RTM0LCAweDBENTYsIDB4ODEzOSwgMHg4RTM1LCAweDhFMzUsIDB4MTYxQywgMHg4MTM5LCAweDhFMzYsIDB4OEUzNiwgMHgyRDJELAorICAgIDB4ODEzOSwgMHg4RTM3LCAweDhFMzcsIDB4MEYxMywgMHg4MTM5LCAweDhFMzgsIDB4OEUzOCwgMHgwNTc2LCAweDgxMzksIDB4OEUzOSwgMHg4RTM5LCAweDBCNkYsCisgICAgMHg4MTM5LCAweDhGMzAsIDB4OEYzMCwgMHgxMjMwLCAweDgxMzksIDB4OEYzMSwgMHg4RjMxLCAweDE3MkUsIDB4ODEzOSwgMHg4RjMyLCAweDhGMzIsIDB4MDU2QSwKKyAgICAweDgxMzksIDB4OEYzMywgMHg4RjMzLCAweDBGNkMsIDB4ODEzOSwgMHg4RjM0LCAweDhGMzQsIDB4MTRCNiwgMHg4MTM5LCAweDhGMzUsIDB4OEYzNSwgMHgwRDQzLAorICAgIDB4ODEzOSwgMHg4RjM2LCAweDhGMzYsIDB4MTc3NCwgMHg4MTM5LCAweDhGMzcsIDB4OEYzNywgMHgwQ0Y2LCAweDgxMzksIDB4OEYzOCwgMHg4RjM4LCAweDE4MTUsCisgICAgMHg4MTM5LCAweDhGMzksIDB4OEYzOSwgMHgwNkZELCAweDgxMzksIDB4OTAzMCwgMHg5MDMwLCAweDA4MkQsIDB4ODEzOSwgMHg5MDMxLCAweDkwMzEsIDB4MDhCRSwKKyAgICAweDgxMzksIDB4OTAzMiwgMHg5MDMyLCAweDA2QzQsIDB4ODEzOSwgMHg5MDMzLCAweDkwMzMsIDB4MTgxMywgMHg4MTM5LCAweDkwMzQsIDB4OTAzNCwgMHgwNzNDLAorICAgIDB4ODEzOSwgMHg5MDM1LCAweDkwMzUsIDB4MTM5OCwgMHg4MTM5LCAweDkwMzYsIDB4OTAzNiwgMHgxNEFELCAweDgxMzksIDB4OTAzNywgMHg5MDM3LCAweDE0RjYsCisgICAgMHg4MTM5LCAweDkwMzgsIDB4OTAzOCwgMHgwNzA2LCAweDgxMzksIDB4OTAzOSwgMHg5MDM5LCAweDE3NjIsIDB4ODEzOSwgMHg5MTMwLCAweDkxMzAsIDB4MTVFRSwKKyAgICAweDgxMzksIDB4OTEzMSwgMHg5MTMxLCAweDE1RTAsIDB4ODEzOSwgMHg5MTMyLCAweDkxMzIsIDB4MEY4RiwgMHg4MTM5LCAweDkxMzMsIDB4OTEzMywgMHgwNkU1LAorICAgIDB4ODEzOSwgMHg5MTM0LCAweDkxMzQsIDB4MzI5MiwgMHg4MTM5LCAweDkxMzUsIDB4OTEzNSwgMHgwRDZELCAweDgxMzksIDB4OTEzNiwgMHg5MTM2LCAweDExQTYsCisgICAgMHg4MTM5LCAweDkxMzcsIDB4OTEzNywgMHgxOTA5LCAweDgxMzksIDB4OTEzOCwgMHg5MTM4LCAweDBFRDMsIDB4ODEzOSwgMHg5MTM5LCAweDkxMzksIDB4MDVGNiwKKyAgICAweDgxMzksIDB4OTIzMCwgMHg5MjMwLCAweDA4QzAsIDB4ODEzOSwgMHg5MjMxLCAweDkyMzEsIDB4MDY1QSwgMHg4MTM5LCAweDkyMzIsIDB4OTIzMiwgMHgwRUVELAorICAgIDB4ODEzOSwgMHg5MjMzLCAweDkyMzMsIDB4MENCMCwgMHg4MTM5LCAweDkyMzQsIDB4OTIzNCwgMHgxMEZFLCAweDgxMzksIDB4OTIzNSwgMHg5MjM1LCAweDExMDUsCisgICAgMHg4MTM5LCAweDkyMzYsIDB4OTIzNiwgMHgwQjIxLCAweDgxMzksIDB4OTIzNywgMHg5MjM3LCAweDBDMzQsIDB4ODEzOSwgMHg5MjM4LCAweDkyMzgsIDB4MTFCOCwKKyAgICAweDgxMzksIDB4OTIzOSwgMHg5MjM5LCAweDA1NzgsIDB4ODEzOSwgMHg5MzMwLCAweDkzMzAsIDB4MTlCRCwgMHg4MTM5LCAweDkzMzEsIDB4OTMzMSwgMHgwRUYyLAorICAgIDB4ODEzOSwgMHg5MzMyLCAweDkzMzIsIDB4MDQzMSwgMHg4MTM5LCAweDkzMzMsIDB4OTMzMywgMHgwQUIwLCAweDgxMzksIDB4OTMzNCwgMHg5MzM0LCAweDBENjYsCisgICAgMHg4MTM5LCAweDkzMzUsIDB4OTMzNSwgMHgwQzE3LCAweDgxMzksIDB4OTMzNiwgMHg5MzM2LCAweDBEQTMsIDB4ODEzOSwgMHg5MzM3LCAweDkzMzcsIDB4MDgwNSwKKyAgICAweDgxMzksIDB4OTMzOCwgMHg5MzM4LCAweDEyMDMsIDB4ODEzOSwgMHg5MzM5LCAweDkzMzksIDB4MDZCMywgMHg4MTM5LCAweDk0MzAsIDB4OTQzMCwgMHgxMjY5LAorICAgIDB4ODEzOSwgMHg5NDMxLCAweDk0MzEsIDB4MTY5RCwgMHg4MTM5LCAweDk0MzIsIDB4OTQzMiwgMHgwQkNCLCAweDgxMzksIDB4OTQzMywgMHg5NDMzLCAweDBGRTksCisgICAgMHg4MTM5LCAweDk0MzQsIDB4OTQzNCwgMHgwQjY0LCAweDgxMzksIDB4OTQzNSwgMHg5NDM1LCAweDBDODksIDB4ODEzOSwgMHg5NDM2LCAweDk0MzYsIDB4MEZDOSwKKyAgICAweDgxMzksIDB4OTQzNywgMHg5NDM3LCAweDEwRDYsIDB4ODEzOSwgMHg5NDM4LCAweDk0MzgsIDB4MDcyOCwgMHg4MTM5LCAweDk0MzksIDB4OTQzOSwgMHgwRTkwLAorICAgIDB4ODEzOSwgMHg5NTMwLCAweDk1MzAsIDB4MDZDNSwgMHg4MTM5LCAweDk1MzEsIDB4OTUzMSwgMHgwRDMzLCAweDgxMzksIDB4OTUzMiwgMHg5NTMyLCAweDEwQTgsCisgICAgMHg4MTM5LCAweDk1MzMsIDB4OTUzMywgMHgwRTQyLCAweDgxMzksIDB4OTUzNCwgMHg5NTM0LCAweDFCQzYsIDB4ODEzOSwgMHg5NTM1LCAweDk1MzUsIDB4MUI2MCwKKyAgICAweDgxMzksIDB4OTUzNiwgMHg5NTM2LCAweDNFQkYsIDB4ODEzOSwgMHg5NTM3LCAweDk1MzcsIDB4MDNFMiwgMHg4MTM5LCAweDk1MzgsIDB4OTUzOCwgMHgwQkMzLAorICAgIDB4ODEzOSwgMHg5NTM5LCAweDk1MzksIDB4MEFGOCwgMHg4MTM5LCAweDk2MzAsIDB4OTYzMCwgMHgwQjIyLCAweDgxMzksIDB4OTYzMSwgMHg5NjMxLCAweDBBQjEsCisgICAgMHg4MTM5LCAweDk2MzIsIDB4OTYzMiwgMHgwRDRGLCAweDgxMzksIDB4OTYzMywgMHg5NjMzLCAweDBENDYsIDB4ODEzOSwgMHg5NjM0LCAweDk2MzQsIDB4MEQ1NSwKKyAgICAweDgxMzksIDB4OTYzNSwgMHg5NjM1LCAweDQwQ0IsIDB4ODEzOSwgMHg5NjM2LCAweDk2MzYsIDB4MDc4MywgMHg4MTM5LCAweDk2MzcsIDB4OTYzNywgMHgwRkQxLAorICAgIDB4ODEzOSwgMHg5NjM4LCAweDk2MzgsIDB4MDlFQiwgMHg4MTM5LCAweDk2MzksIDB4OTYzOSwgMHgxMUYwLCAweDgxMzksIDB4OTczMCwgMHg5NzMwLCAweDBBREMsCisgICAgMHg4MTM5LCAweDk3MzEsIDB4OTczMSwgMHgxQ0U3LCAweDgxMzksIDB4OTczMiwgMHg5NzMyLCAweDFDNUUsIDB4ODEzOSwgMHg5NzMzLCAweDk3MzMsIDB4MEVBOSwKKyAgICAweDgxMzksIDB4OTczNCwgMHg5NzM0LCAweDEwMUIsIDB4ODEzOSwgMHg5NzM1LCAweDk3MzUsIDB4MTBENSwgMHg4MTM5LCAweDk3MzYsIDB4OTczNiwgMHgwOUJBLAorICAgIDB4ODEzOSwgMHg5NzM3LCAweDk3MzcsIDB4MDYzNywgMHg4MTM5LCAweDk3MzgsIDB4OTczOCwgMHgxQkNCLCAweDgxMzksIDB4OTczOSwgMHg5NzM5LCAweDA2MzksCisgICAgMHg4MTM5LCAweDk4MzAsIDB4OTgzMCwgMHgxQTFFLCAweDgxMzksIDB4OTgzMSwgMHg5ODMxLCAweDBDQkQsIDB4ODEzOSwgMHg5ODMyLCAweDk4MzIsIDB4MDRFMSwKKyAgICAweDgxMzksIDB4OTgzMywgMHg5ODMzLCAweDEyMzEsIDB4ODEzOSwgMHg5ODM0LCAweDk4MzQsIDB4MTFDMCwgMHg4MTM5LCAweDk4MzUsIDB4OTgzNSwgMHgwOEY5LAorICAgIDB4ODEzOSwgMHg5ODM2LCAweDk4MzYsIDB4MEQxOSwgMHg4MTM5LCAweDk4MzcsIDB4OTgzNywgMHgxNjE4LCAweDgxMzksIDB4OTgzOCwgMHg5ODM4LCAweDExREEsCisgICAgMHg4MTM5LCAweDk4MzksIDB4OTgzOSwgMHgxQ0RDLCAweDgxMzksIDB4OTkzMCwgMHg5OTMwLCAweDBDRTQsIDB4ODEzOSwgMHg5OTMxLCAweDk5MzEsIDB4NDVBMiwKKyAgICAweDgxMzksIDB4OTkzMiwgMHg5OTMyLCAweDFCRjAsIDB4ODEzOSwgMHg5OTMzLCAweDk5MzMsIDB4MDUwQiwgMHg4MTM5LCAweDk5MzQsIDB4OTkzNCwgMHgwRkQzLAorICAgIDB4ODEzOSwgMHg5OTM1LCAweDk5MzUsIDB4MEY5QiwgMHg4MTM5LCAweDk5MzYsIDB4OTkzNiwgMHgxMDQ5LCAweDgxMzksIDB4OTkzNywgMHg5OTM3LCAweDQ5REMsCisgICAgMHg4MTM5LCAweDk5MzgsIDB4OTkzOCwgMHgxRjk2LCAweDgxMzksIDB4OTkzOSwgMHg5OTM5LCAweDA4OTgsIDB4ODEzOSwgMHg5QTMwLCAweDlBMzAsIDB4MEZGRCwKKyAgICAweDgxMzksIDB4OUEzMSwgMHg5QTMxLCAweDA3MjEsIDB4ODEzOSwgMHg5QTMyLCAweDlBMzIsIDB4MDVGOCwgMHg4MTM5LCAweDlBMzMsIDB4OUEzMywgMHgxRDE1LAorICAgIDB4ODEzOSwgMHg5QTM0LCAweDlBMzQsIDB4MUQ1MCwgMHg4MTM5LCAweDlBMzUsIDB4OUEzNSwgMHgxRTNCLCAweDgxMzksIDB4OUEzNiwgMHg5QTM2LCAweDA1MDUsCisgICAgMHg4MTM5LCAweDlBMzcsIDB4OUEzNywgMHgxMjNDLCAweDgxMzksIDB4OUEzOCwgMHg5QTM4LCAweDEyNDAsIDB4ODEzOSwgMHg5QTM5LCAweDlBMzksIDB4MEQyNiwKKyAgICAweDgxMzksIDB4OUIzMCwgMHg5QjMwLCAweDFFN0IsIDB4ODEzOSwgMHg5QjMxLCAweDlCMzEsIDB4MEY4QywgMHg4MTM5LCAweDlCMzIsIDB4OUIzMiwgMHgwNEUyLAorICAgIDB4ODEzOSwgMHg5QjMzLCAweDlCMzMsIDB4NEQxMywgMHg4MTM5LCAweDlCMzQsIDB4OUIzNCwgMHgxMDVGLCAweDgxMzksIDB4OUIzNSwgMHg5QjM1LCAweDEwQjQsCisgICAgMHg4MTM5LCAweDlCMzYsIDB4OUIzNiwgMHg0RTE4LCAweDgxMzksIDB4OUIzNywgMHg5QjM3LCAweDA5REEsIDB4ODEzOSwgMHg5QjM4LCAweDlCMzgsIDB4MDhDMSwKKyAgICAweDgxMzksIDB4OUIzOSwgMHg5QjM5LCAweDFFNzUsIDB4ODEzOSwgMHg5QzMwLCAweDlDMzAsIDB4MjA3RCwgMHg4MTM5LCAweDlDMzEsIDB4OUMzMSwgMHgwNkIyLAorICAgIDB4ODEzOSwgMHg5QzMyLCAweDlDMzIsIDB4MDlFRSwgMHg4MTM5LCAweDlDMzMsIDB4OUMzMywgMHgxRDc5LCAweDgxMzksIDB4OUMzNCwgMHg5QzM0LCAweDEwQ0YsCisgICAgMHg4MTM5LCAweDlDMzUsIDB4OUMzNSwgMHg1MEVBLCAweDgxMzksIDB4OUMzNiwgMHg5QzM2LCAweDA2NjQsIDB4ODEzOSwgMHg5QzM3LCAweDlDMzcsIDB4MEFFQiwKKyAgICAweDgxMzksIDB4OUMzOCwgMHg5QzM4LCAweDA2RUEsIDB4ODEzOSwgMHg5QzM5LCAweDlDMzksIDB4MjE4RCwgMHg4MTM5LCAweDlEMzAsIDB4OUQzMCwgMHgwOEYxLAorICAgIDB4ODEzOSwgMHg5RDMxLCAweDlEMzEsIDB4MTA3QiwgMHg4MTM5LCAweDlEMzIsIDB4OUQzMiwgMHgyMjA5LCAweDgxMzksIDB4OUQzMywgMHg5RDMzLCAweDFGMDAsCisgICAgMHg4MTM5LCAweDlEMzQsIDB4OUQzNCwgMHgxRUY0LCAweDgxMzksIDB4OUQzNSwgMHg5RDM1LCAweDBENEEsIDB4ODEzOSwgMHg5RDM2LCAweDlEMzYsIDB4MEQ2RSwKKyAgICAweDgxMzksIDB4OUQzNywgMHg5RDM3LCAweDBGNTAsIDB4ODEzOSwgMHg5RDM4LCAweDlEMzgsIDB4MjA2RCwgMHg4MTM5LCAweDlEMzksIDB4OUQzOSwgMHgwNzIwLAorICAgIDB4ODEzOSwgMHg5RTMwLCAweDlFMzAsIDB4MDZEQSwgMHg4MTM5LCAweDlFMzEsIDB4OUUzMSwgMHgxREVDLCAweDgxMzksIDB4OUUzMiwgMHg5RTMyLCAweDFFRDAsCisgICAgMHg4MTM5LCAweDlFMzMsIDB4OUUzMywgMHgxMzlCLCAweDgxMzksIDB4OUUzNCwgMHg5RTM0LCAweDEyNjAsIDB4ODEzOSwgMHg5RTM1LCAweDlFMzUsIDB4MDc0NiwKKyAgICAweDgxMzksIDB4OUUzNiwgMHg5RTM2LCAweDIyMzksIDB4ODEzOSwgMHg5RTM3LCAweDlFMzcsIDB4MjA5QywgMHg4MTM5LCAweDlFMzgsIDB4OUUzOCwgMHgyNjg4LAorICAgIDB4ODEzOSwgMHg5RTM5LCAweDlFMzksIDB4MEE2MCwgMHg4MTM5LCAweDlGMzAsIDB4OUYzMCwgMHgyMDcxLCAweDgxMzksIDB4OUYzMSwgMHg5RjMxLCAweDBBOTAsCisgICAgMHg4MTM5LCAweDlGMzIsIDB4OUYzMiwgMHg1NTg2LCAweDgxMzksIDB4OUYzMywgMHg5RjMzLCAweDBEODksIDB4ODEzOSwgMHg5RjM0LCAweDlGMzQsIDB4MDc5MSwKKyAgICAweDgxMzksIDB4OUYzNSwgMHg5RjM1LCAweDFBNTUsIDB4ODEzOSwgMHg5RjM2LCAweDlGMzYsIDB4MjYxOCwgMHg4MTM5LCAweDlGMzcsIDB4OUYzNywgMHgwNUU1LAorICAgIDB4ODEzOSwgMHg5RjM4LCAweDlGMzgsIDB4MDcxRCwgMHg4MTM5LCAweDlGMzksIDB4OUYzOSwgMHgwRDhBLCAweDgxMzksIDB4QTAzMCwgMHhBMDMwLCAweDA0MzAsCisgICAgMHg4MTM5LCAweEEwMzEsIDB4QTAzMSwgMHgyMEM2LCAweDgxMzksIDB4QTAzMiwgMHhBMDMyLCAweDFFODYsIDB4ODEzOSwgMHhBMDMzLCAweEEwMzMsIDB4MjAzNywKKyAgICAweDgxMzksIDB4QTAzNCwgMHhBMDM0LCAweDFGMzQsIDB4ODEzOSwgMHhBMDM1LCAweEEwMzUsIDB4MTJGMywgMHg4MTM5LCAweEE1MzMsIDB4QTUzNSwgMHg1NzdCLAorICAgIDB4ODEzOSwgMHhBNTM4LCAweEE1MzksIDB4NTc3RSwgMHg4MTM5LCAweEE2MzAsIDB4QTYzMCwgMHg1NzgwLCAweDgxMzksIDB4QTYzNCwgMHhBNjM0LCAweDU3NTUsCisgICAgMHg4MTM5LCAweEE2MzYsIDB4QTYzNiwgMHg1NzY3LCAweDgxMzksIDB4QTczNSwgMHhBNzM1LCAweDU3NzYsIDB4ODEzOSwgMHhBNzM2LCAweEE3MzYsIDB4NTc3OCwKKyAgICAweDgxMzksIDB4QTczNywgMHhBNzM3LCAweDU3NzcsIDB4ODEzOSwgMHhBNzM4LCAweEE3MzgsIDB4NTc3OSwgMHg4MTM5LCAweEE4MzYsIDB4QTgzOCwgMHg1NzgxLAorICAgIDB4ODEzOSwgMHhCNDM0LCAweEI0MzksIDB4NTc4NCwgMHg4MTM5LCAweEI1MzAsIDB4QjUzOSwgMHg1NzhBLCAweDgxMzksIDB4QjYzMCwgMHhCNjM3LCAweDU3OTQsCisgICAgMHg4MTM5LCAweEVFMzksIDB4RUUzOSwgMHg1ODAxLCAweDgxMzksIDB4RUYzMCwgMHhFRjM5LCAweDU4MDIsIDB4ODEzOSwgMHhGMDMwLCAweEYwMzksIDB4NTgwQywKKyAgICAweDgxMzksIDB4RjEzMCwgMHhGMTM5LCAweDU4MTYsIDB4ODEzOSwgMHhGMjMwLCAweEYyMzksIDB4NTgyMCwgMHg4MTM5LCAweEYzMzAsIDB4RjMzOSwgMHg1ODJBLAorICAgIDB4ODEzOSwgMHhGNDMwLCAweEY0MzksIDB4NTgzNCwgMHg4MTM5LCAweEY1MzAsIDB4RjUzOSwgMHg1ODNFLCAweDgxMzksIDB4RjYzMCwgMHhGNjM5LCAweDU4NDgsCisgICAgMHg4MTM5LCAweEY3MzAsIDB4RjczOSwgMHg1ODUyLCAweDgxMzksIDB4RjgzMCwgMHhGODM5LCAweDU4NUMsIDB4ODEzOSwgMHhGOTMwLCAweEY5MzksIDB4NTg2NiwKKyAgICAweDgxMzksIDB4RkEzMCwgMHhGQTM5LCAweDU4NzAsIDB4ODEzOSwgMHhGQjMwLCAweEZCMzksIDB4NTg3QSwgMHg4MTM5LCAweEZDMzAsIDB4RkMzOSwgMHg1ODg0LAorICAgIDB4ODEzOSwgMHhGRDMwLCAweEZEMzksIDB4NTg4RSwgMHg4MTM5LCAweEZFMzAsIDB4RkUzOSwgMHg1ODk4LCAweDgyMzAsIDB4ODEzMCwgMHg4MTM5LCAweDU4QTIsCisgICAgMHg4MjMwLCAweDgyMzAsIDB4ODIzOSwgMHg1OEFDLCAweDgyMzAsIDB4ODMzMCwgMHg4MzM5LCAweDU4QjYsIDB4ODIzMCwgMHg4NDMwLCAweDg0MzksIDB4NThDMCwKKyAgICAweDgyMzAsIDB4ODUzMCwgMHg4NTM5LCAweDU4Q0EsIDB4ODIzMCwgMHg4NjMwLCAweDg2MzksIDB4NThENCwgMHg4MjMwLCAweDg3MzAsIDB4ODczOSwgMHg1OERFLAorICAgIDB4ODIzMCwgMHg4ODMwLCAweDg4MzksIDB4NThFOCwgMHg4MjMwLCAweDg5MzAsIDB4ODkzOSwgMHg1OEYyLCAweDgyMzAsIDB4OEEzMCwgMHg4QTM5LCAweDU4RkMsCisgICAgMHg4MjMwLCAweDhCMzAsIDB4OEIzOSwgMHg1OTA2LCAweDgyMzAsIDB4OEMzMCwgMHg4QzM5LCAweDU5MTAsIDB4ODIzMCwgMHg4RDMwLCAweDhEMzksIDB4NTkxQSwKKyAgICAweDgyMzAsIDB4OEUzMCwgMHg4RTM5LCAweDU5MjQsIDB4ODIzMCwgMHg4RjMwLCAweDhGMzksIDB4NTkyRSwgMHg4MjMwLCAweDkwMzAsIDB4OTAzOSwgMHg1OTM4LAorICAgIDB4ODIzMCwgMHg5MTMwLCAweDkxMzksIDB4NTk0MiwgMHg4MjMwLCAweDkyMzAsIDB4OTIzOSwgMHg1OTRDLCAweDgyMzAsIDB4OTMzMCwgMHg5MzM5LCAweDU5NTYsCisgICAgMHg4MjMwLCAweDk0MzAsIDB4OTQzOSwgMHg1OTYwLCAweDgyMzAsIDB4OTUzMCwgMHg5NTM5LCAweDU5NkEsIDB4ODIzMCwgMHg5NjMwLCAweDk2MzksIDB4NTk3NCwKKyAgICAweDgyMzAsIDB4OTczMCwgMHg5NzM5LCAweDU5N0UsIDB4ODIzMCwgMHg5ODMwLCAweDk4MzksIDB4NTk4OCwgMHg4MjMwLCAweDk5MzAsIDB4OTkzOSwgMHg1OTkyLAorICAgIDB4ODIzMCwgMHg5QTMwLCAweDlBMzksIDB4NTk5QywgMHg4MjMwLCAweDlCMzAsIDB4OUIzOSwgMHg1OUE2LCAweDgyMzAsIDB4OUMzMCwgMHg5QzM5LCAweDU5QjAsCisgICAgMHg4MjMwLCAweDlEMzAsIDB4OUQzOSwgMHg1OUJBLCAweDgyMzAsIDB4OUUzMCwgMHg5RTM5LCAweDU5QzQsIDB4ODIzMCwgMHg5RjMwLCAweDlGMzksIDB4NTlDRSwKKyAgICAweDgyMzAsIDB4QTAzMCwgMHhBMDM5LCAweDU5RDgsIDB4ODIzMCwgMHhBMTMwLCAweEExMzksIDB4NTlFMiwgMHg4MjMwLCAweEEyMzAsIDB4QTIzOSwgMHg1OUVDLAorICAgIDB4ODIzMCwgMHhBMzMwLCAweEEzMzksIDB4NTlGNiwgMHg4MjMwLCAweEE0MzAsIDB4QTQzOSwgMHg1QTAwLCAweDgyMzAsIDB4QTUzMCwgMHhBNTM5LCAweDVBMEEsCisgICAgMHg4MjMwLCAweEE2MzAsIDB4QTYzOSwgMHg1QTE0LCAweDgyMzAsIDB4QTczMCwgMHhBNzM5LCAweDVBMUUsIDB4ODIzMCwgMHhBODMwLCAweEE4MzksIDB4NUEyOCwKKyAgICAweDgyMzAsIDB4QTkzMCwgMHhBOTM5LCAweDVBMzIsIDB4ODIzMCwgMHhBQTMwLCAweEFBMzksIDB4NUEzQywgMHg4MjMwLCAweEFCMzAsIDB4QUIzOSwgMHg1QTQ2LAorICAgIDB4ODIzMCwgMHhBQzMwLCAweEFDMzksIDB4NUE1MCwgMHg4MjMwLCAweEFEMzAsIDB4QUQzOSwgMHg1QTVBLCAweDgyMzAsIDB4QUUzMCwgMHhBRTM5LCAweDVBNjQsCisgICAgMHg4MjMwLCAweEFGMzAsIDB4QUYzOSwgMHg1QTZFLCAweDgyMzAsIDB4QjAzMCwgMHhCMDM5LCAweDVBNzgsIDB4ODIzMCwgMHhCMTMwLCAweEIxMzksIDB4NUE4MiwKKyAgICAweDgyMzAsIDB4QjIzMCwgMHhCMjM5LCAweDVBOEMsIDB4ODIzMCwgMHhCMzMwLCAweEIzMzksIDB4NUE5NiwgMHg4MjMwLCAweEI0MzAsIDB4QjQzOSwgMHg1QUEwLAorICAgIDB4ODIzMCwgMHhCNTMwLCAweEI1MzksIDB4NUFBQSwgMHg4MjMwLCAweEI2MzAsIDB4QjYzOSwgMHg1QUI0LCAweDgyMzAsIDB4QjczMCwgMHhCNzM5LCAweDVBQkUsCisgICAgMHg4MjMwLCAweEI4MzAsIDB4QjgzOSwgMHg1QUM4LCAweDgyMzAsIDB4QjkzMCwgMHhCOTM5LCAweDVBRDIsIDB4ODIzMCwgMHhCQTMwLCAweEJBMzksIDB4NUFEQywKKyAgICAweDgyMzAsIDB4QkIzMCwgMHhCQjM5LCAweDVBRTYsIDB4ODIzMCwgMHhCQzMwLCAweEJDMzksIDB4NUFGMCwgMHg4MjMwLCAweEJEMzAsIDB4QkQzOSwgMHg1QUZBLAorICAgIDB4ODIzMCwgMHhCRTMwLCAweEJFMzksIDB4NUIwNCwgMHg4MjMwLCAweEJGMzAsIDB4QkYzOSwgMHg1QjBFLCAweDgyMzAsIDB4QzAzMCwgMHhDMDM5LCAweDVCMTgsCisgICAgMHg4MjMwLCAweEMxMzAsIDB4QzEzOSwgMHg1QjIyLCAweDgyMzAsIDB4QzIzMCwgMHhDMjM5LCAweDVCMkMsIDB4ODIzMCwgMHhDMzMwLCAweEMzMzksIDB4NUIzNiwKKyAgICAweDgyMzAsIDB4QzQzMCwgMHhDNDM5LCAweDVCNDAsIDB4ODIzMCwgMHhDNTMwLCAweEM1MzksIDB4NUI0QSwgMHg4MjMwLCAweEM2MzAsIDB4QzYzOSwgMHg1QjU0LAorICAgIDB4ODIzMCwgMHhDNzMwLCAweEM3MzksIDB4NUI1RSwgMHg4MjMwLCAweEM4MzAsIDB4QzgzOSwgMHg1QjY4LCAweDgyMzAsIDB4QzkzMCwgMHhDOTM5LCAweDVCNzIsCisgICAgMHg4MjMwLCAweENBMzAsIDB4Q0EzOSwgMHg1QjdDLCAweDgyMzAsIDB4Q0IzMCwgMHhDQjM5LCAweDVCODYsIDB4ODIzMCwgMHhDQzMwLCAweENDMzksIDB4NUI5MCwKKyAgICAweDgyMzAsIDB4Q0QzMCwgMHhDRDM5LCAweDVCOUEsIDB4ODIzMCwgMHhDRTMwLCAweENFMzksIDB4NUJBNCwgMHg4MjMwLCAweENGMzAsIDB4Q0YzOSwgMHg1QkFFLAorICAgIDB4ODIzMCwgMHhEMDMwLCAweEQwMzksIDB4NUJCOCwgMHg4MjMwLCAweEQxMzAsIDB4RDEzOSwgMHg1QkMyLCAweDgyMzAsIDB4RDIzMCwgMHhEMjM5LCAweDVCQ0MsCisgICAgMHg4MjMwLCAweEQzMzAsIDB4RDMzOSwgMHg1QkQ2LCAweDgyMzAsIDB4RDQzMCwgMHhENDM5LCAweDVCRTAsIDB4ODIzMCwgMHhENTMwLCAweEQ1MzksIDB4NUJFQSwKKyAgICAweDgyMzAsIDB4RDYzMCwgMHhENjM5LCAweDVCRjQsIDB4ODIzMCwgMHhENzMwLCAweEQ3MzksIDB4NUJGRSwgMHg4MjMwLCAweEQ4MzAsIDB4RDgzOSwgMHg1QzA4LAorICAgIDB4ODIzMCwgMHhEOTMwLCAweEQ5MzksIDB4NUMxMiwgMHg4MjMwLCAweERBMzAsIDB4REEzOSwgMHg1QzFDLCAweDgyMzAsIDB4REIzMCwgMHhEQjM5LCAweDVDMjYsCisgICAgMHg4MjMwLCAweERDMzAsIDB4REMzOSwgMHg1QzMwLCAweDgyMzAsIDB4REQzMCwgMHhERDM5LCAweDVDM0EsIDB4ODIzMCwgMHhERTMwLCAweERFMzksIDB4NUM0NCwKKyAgICAweDgyMzAsIDB4REYzMCwgMHhERjM5LCAweDVDNEUsIDB4ODIzMCwgMHhFMDMwLCAweEUwMzksIDB4NUM1OCwgMHg4MjMwLCAweEUxMzAsIDB4RTEzOSwgMHg1QzYyLAorICAgIDB4ODIzMCwgMHhFMjMwLCAweEUyMzksIDB4NUM2QywgMHg4MjMwLCAweEUzMzAsIDB4RTMzOSwgMHg1Qzc2LCAweDgyMzAsIDB4RTQzMCwgMHhFNDM5LCAweDVDODAsCisgICAgMHg4MjMwLCAweEU1MzAsIDB4RTUzOSwgMHg1QzhBLCAweDgyMzAsIDB4RTYzMCwgMHhFNjM5LCAweDVDOTQsIDB4ODIzMCwgMHhFNzMwLCAweEU3MzksIDB4NUM5RSwKKyAgICAweDgyMzAsIDB4RTgzMCwgMHhFODM5LCAweDVDQTgsIDB4ODIzMCwgMHhFOTMwLCAweEU5MzksIDB4NUNCMiwgMHg4MjMwLCAweEVBMzAsIDB4RUEzOSwgMHg1Q0JDLAorICAgIDB4ODIzMCwgMHhFQjMwLCAweEVCMzksIDB4NUNDNiwgMHg4MjMwLCAweEVDMzAsIDB4RUMzOSwgMHg1Q0QwLCAweDgyMzAsIDB4RUQzMCwgMHhFRDM5LCAweDVDREEsCisgICAgMHg4MjMwLCAweEVFMzAsIDB4RUUzOSwgMHg1Q0U0LCAweDgyMzAsIDB4RUYzMCwgMHhFRjM5LCAweDVDRUUsIDB4ODIzMCwgMHhGMDMwLCAweEYwMzksIDB4NUNGOCwKKyAgICAweDgyMzAsIDB4RjEzMCwgMHhGMTM5LCAweDVEMDIsIDB4ODIzMCwgMHhGMjMwLCAweEYyMzksIDB4NUQwQywgMHg4MjMwLCAweEYzMzAsIDB4RjMzOSwgMHg1RDE2LAorICAgIDB4ODIzMCwgMHhGNDMwLCAweEY0MzksIDB4NUQyMCwgMHg4MjMwLCAweEY1MzAsIDB4RjUzOSwgMHg1RDJBLCAweDgyMzAsIDB4RjYzMCwgMHhGNjM5LCAweDVEMzQsCisgICAgMHg4MjMwLCAweEY3MzAsIDB4RjczOSwgMHg1RDNFLCAweDgyMzAsIDB4RjgzMCwgMHhGODM5LCAweDVENDgsIDB4ODIzMCwgMHhGOTMwLCAweEY5MzksIDB4NUQ1MiwKKyAgICAweDgyMzAsIDB4RkEzMCwgMHhGQTM5LCAweDVENUMsIDB4ODIzMCwgMHhGQjMwLCAweEZCMzksIDB4NUQ2NiwgMHg4MjMwLCAweEZDMzAsIDB4RkMzOSwgMHg1RDcwLAorICAgIDB4ODIzMCwgMHhGRDMwLCAweEZEMzksIDB4NUQ3QSwgMHg4MjMwLCAweEZFMzAsIDB4RkUzOSwgMHg1RDg0LCAweDgyMzEsIDB4ODEzMCwgMHg4MTM5LCAweDVEOEUsCisgICAgMHg4MjMxLCAweDgyMzAsIDB4ODIzOSwgMHg1RDk4LCAweDgyMzEsIDB4ODMzMCwgMHg4MzM5LCAweDVEQTIsIDB4ODIzMSwgMHg4NDMwLCAweDg0MzksIDB4NURBQywKKyAgICAweDgyMzEsIDB4ODUzMCwgMHg4NTM5LCAweDVEQjYsIDB4ODIzMSwgMHg4NjMwLCAweDg2MzksIDB4NURDMCwgMHg4MjMxLCAweDg3MzAsIDB4ODczOSwgMHg1RENBLAorICAgIDB4ODIzMSwgMHg4ODMwLCAweDg4MzksIDB4NURENCwgMHg4MjMxLCAweDg5MzAsIDB4ODkzOSwgMHg1RERFLCAweDgyMzEsIDB4OEEzMCwgMHg4QTM5LCAweDVERTgsCisgICAgMHg4MjMxLCAweDhCMzAsIDB4OEIzOSwgMHg1REYyLCAweDgyMzEsIDB4OEMzMCwgMHg4QzM5LCAweDVERkMsIDB4ODIzMSwgMHg4RDMwLCAweDhEMzksIDB4NUUwNiwKKyAgICAweDgyMzEsIDB4OEUzMCwgMHg4RTM5LCAweDVFMTAsIDB4ODIzMSwgMHg4RjMwLCAweDhGMzksIDB4NUUxQSwgMHg4MjMxLCAweDkwMzAsIDB4OTAzOSwgMHg1RTI0LAorICAgIDB4ODIzMSwgMHg5MTMwLCAweDkxMzksIDB4NUUyRSwgMHg4MjMxLCAweDkyMzAsIDB4OTIzOSwgMHg1RTM4LCAweDgyMzEsIDB4OTMzMCwgMHg5MzM5LCAweDVFNDIsCisgICAgMHg4MjMxLCAweDk0MzAsIDB4OTQzOSwgMHg1RTRDLCAweDgyMzEsIDB4OTUzMCwgMHg5NTM5LCAweDVFNTYsIDB4ODIzMSwgMHg5NjMwLCAweDk2MzksIDB4NUU2MCwKKyAgICAweDgyMzEsIDB4OTczMCwgMHg5NzM5LCAweDVFNkEsIDB4ODIzMSwgMHg5ODMwLCAweDk4MzksIDB4NUU3NCwgMHg4MjMxLCAweDk5MzAsIDB4OTkzOSwgMHg1RTdFLAorICAgIDB4ODIzMSwgMHg5QTMwLCAweDlBMzksIDB4NUU4OCwgMHg4MjMxLCAweDlCMzAsIDB4OUIzOSwgMHg1RTkyLCAweDgyMzEsIDB4OUMzMCwgMHg5QzM5LCAweDVFOUMsCisgICAgMHg4MjMxLCAweDlEMzAsIDB4OUQzOSwgMHg1RUE2LCAweDgyMzEsIDB4OUUzMCwgMHg5RTM5LCAweDVFQjAsIDB4ODIzMSwgMHg5RjMwLCAweDlGMzksIDB4NUVCQSwKKyAgICAweDgyMzEsIDB4QTAzMCwgMHhBMDM5LCAweDVFQzQsIDB4ODIzMSwgMHhBMTMwLCAweEExMzksIDB4NUVDRSwgMHg4MjMxLCAweEEyMzAsIDB4QTIzOSwgMHg1RUQ4LAorICAgIDB4ODIzMSwgMHhBMzMwLCAweEEzMzksIDB4NUVFMiwgMHg4MjMxLCAweEE0MzAsIDB4QTQzOSwgMHg1RUVDLCAweDgyMzEsIDB4QTUzMCwgMHhBNTM5LCAweDVFRjYsCisgICAgMHg4MjMxLCAweEE2MzAsIDB4QTYzOSwgMHg1RjAwLCAweDgyMzEsIDB4QTczMCwgMHhBNzM5LCAweDVGMEEsIDB4ODIzMSwgMHhBODMwLCAweEE4MzksIDB4NUYxNCwKKyAgICAweDgyMzEsIDB4QTkzMCwgMHhBOTM5LCAweDVGMUUsIDB4ODIzMSwgMHhBQTMwLCAweEFBMzksIDB4NUYyOCwgMHg4MjMxLCAweEFCMzAsIDB4QUIzOSwgMHg1RjMyLAorICAgIDB4ODIzMSwgMHhBQzMwLCAweEFDMzksIDB4NUYzQywgMHg4MjMxLCAweEFEMzAsIDB4QUQzOSwgMHg1RjQ2LCAweDgyMzEsIDB4QUUzMCwgMHhBRTM5LCAweDVGNTAsCisgICAgMHg4MjMxLCAweEFGMzAsIDB4QUYzOSwgMHg1RjVBLCAweDgyMzEsIDB4QjAzMCwgMHhCMDM5LCAweDVGNjQsIDB4ODIzMSwgMHhCMTMwLCAweEIxMzksIDB4NUY2RSwKKyAgICAweDgyMzEsIDB4QjIzMCwgMHhCMjM5LCAweDVGNzgsIDB4ODIzMSwgMHhCMzMwLCAweEIzMzksIDB4NUY4MiwgMHg4MjMxLCAweEI0MzAsIDB4QjQzOSwgMHg1RjhDLAorICAgIDB4ODIzMSwgMHhCNTMwLCAweEI1MzksIDB4NUY5NiwgMHg4MjMxLCAweEI2MzAsIDB4QjYzOSwgMHg1RkEwLCAweDgyMzEsIDB4QjczMCwgMHhCNzM5LCAweDVGQUEsCisgICAgMHg4MjMxLCAweEI4MzAsIDB4QjgzOSwgMHg1RkI0LCAweDgyMzEsIDB4QjkzMCwgMHhCOTM5LCAweDVGQkUsIDB4ODIzMSwgMHhCQTMwLCAweEJBMzksIDB4NUZDOCwKKyAgICAweDgyMzEsIDB4QkIzMCwgMHhCQjM5LCAweDVGRDIsIDB4ODIzMSwgMHhCQzMwLCAweEJDMzksIDB4NUZEQywgMHg4MjMxLCAweEJEMzAsIDB4QkQzOSwgMHg1RkU2LAorICAgIDB4ODIzMSwgMHhCRTMwLCAweEJFMzksIDB4NUZGMCwgMHg4MjMxLCAweEJGMzAsIDB4QkYzOSwgMHg1RkZBLCAweDgyMzEsIDB4QzAzMCwgMHhDMDM5LCAweDYwMDQsCisgICAgMHg4MjMxLCAweEMxMzAsIDB4QzEzOSwgMHg2MDBFLCAweDgyMzEsIDB4QzIzMCwgMHhDMjM5LCAweDYwMTgsIDB4ODIzMSwgMHhDMzMwLCAweEMzMzksIDB4NjAyMiwKKyAgICAweDgyMzEsIDB4QzQzMCwgMHhDNDM5LCAweDYwMkMsIDB4ODIzMSwgMHhDNTMwLCAweEM1MzksIDB4NjAzNiwgMHg4MjMxLCAweEM2MzAsIDB4QzYzOSwgMHg2MDQwLAorICAgIDB4ODIzMSwgMHhDNzMwLCAweEM3MzksIDB4NjA0QSwgMHg4MjMxLCAweEM4MzAsIDB4QzgzOSwgMHg2MDU0LCAweDgyMzEsIDB4QzkzMCwgMHhDOTM5LCAweDYwNUUsCisgICAgMHg4MjMxLCAweENBMzAsIDB4Q0EzOSwgMHg2MDY4LCAweDgyMzEsIDB4Q0IzMCwgMHhDQjM5LCAweDYwNzIsIDB4ODIzMSwgMHhDQzMwLCAweENDMzksIDB4NjA3QywKKyAgICAweDgyMzEsIDB4Q0QzMCwgMHhDRDM5LCAweDYwODYsIDB4ODIzMSwgMHhDRTMwLCAweENFMzksIDB4NjA5MCwgMHg4MjMxLCAweENGMzAsIDB4Q0YzOSwgMHg2MDlBLAorICAgIDB4ODIzMSwgMHhEMDMwLCAweEQwMzksIDB4NjBBNCwgMHg4MjMxLCAweEQxMzAsIDB4RDEzOSwgMHg2MEFFLCAweDgyMzEsIDB4RDIzMCwgMHhEMjM5LCAweDYwQjgsCisgICAgMHg4MjMxLCAweEQzMzAsIDB4RDMzOSwgMHg2MEMyLCAweDgyMzEsIDB4RDQzMCwgMHhENDM5LCAweDYwQ0MsIDB4ODIzMSwgMHhENTMwLCAweEQ1MzksIDB4NjBENiwKKyAgICAweDgyMzEsIDB4RDYzMCwgMHhENjM5LCAweDYwRTAsIDB4ODIzMSwgMHhENzMwLCAweEQ3MzksIDB4NjBFQSwgMHg4MjMxLCAweEQ4MzAsIDB4RDgzOSwgMHg2MEY0LAorICAgIDB4ODIzMSwgMHhEOTMwLCAweEQ5MzksIDB4NjBGRSwgMHg4MjMxLCAweERBMzAsIDB4REEzOSwgMHg2MTA4LCAweDgyMzEsIDB4REIzMCwgMHhEQjM5LCAweDYxMTIsCisgICAgMHg4MjMxLCAweERDMzAsIDB4REMzOSwgMHg2MTFDLCAweDgyMzEsIDB4REQzMCwgMHhERDM5LCAweDYxMjYsIDB4ODIzMSwgMHhERTMwLCAweERFMzksIDB4NjEzMCwKKyAgICAweDgyMzEsIDB4REYzMCwgMHhERjM5LCAweDYxM0EsIDB4ODIzMSwgMHhFMDMwLCAweEUwMzksIDB4NjE0NCwgMHg4MjMxLCAweEUxMzAsIDB4RTEzOSwgMHg2MTRFLAorICAgIDB4ODIzMSwgMHhFMjMwLCAweEUyMzksIDB4NjE1OCwgMHg4MjMxLCAweEUzMzAsIDB4RTMzOSwgMHg2MTYyLCAweDgyMzEsIDB4RTQzMCwgMHhFNDM5LCAweDYxNkMsCisgICAgMHg4MjMxLCAweEU1MzAsIDB4RTUzOSwgMHg2MTc2LCAweDgyMzEsIDB4RTYzMCwgMHhFNjM5LCAweDYxODAsIDB4ODIzMSwgMHhFNzMwLCAweEU3MzksIDB4NjE4QSwKKyAgICAweDgyMzEsIDB4RTgzMCwgMHhFODM5LCAweDYxOTQsIDB4ODIzMSwgMHhFOTMwLCAweEU5MzksIDB4NjE5RSwgMHg4MjMxLCAweEVBMzAsIDB4RUEzOSwgMHg2MUE4LAorICAgIDB4ODIzMSwgMHhFQjMwLCAweEVCMzksIDB4NjFCMiwgMHg4MjMxLCAweEVDMzAsIDB4RUMzOSwgMHg2MUJDLCAweDgyMzEsIDB4RUQzMCwgMHhFRDM5LCAweDYxQzYsCisgICAgMHg4MjMxLCAweEVFMzAsIDB4RUUzOSwgMHg2MUQwLCAweDgyMzEsIDB4RUYzMCwgMHhFRjM5LCAweDYxREEsIDB4ODIzMSwgMHhGMDMwLCAweEYwMzksIDB4NjFFNCwKKyAgICAweDgyMzEsIDB4RjEzMCwgMHhGMTM5LCAweDYxRUUsIDB4ODIzMSwgMHhGMjMwLCAweEYyMzksIDB4NjFGOCwgMHg4MjMxLCAweEYzMzAsIDB4RjMzOSwgMHg2MjAyLAorICAgIDB4ODIzMSwgMHhGNDMwLCAweEY0MzksIDB4NjIwQywgMHg4MjMxLCAweEY1MzAsIDB4RjUzOSwgMHg2MjE2LCAweDgyMzEsIDB4RjYzMCwgMHhGNjM5LCAweDYyMjAsCisgICAgMHg4MjMxLCAweEY3MzAsIDB4RjczOSwgMHg2MjJBLCAweDgyMzEsIDB4RjgzMCwgMHhGODM5LCAweDYyMzQsIDB4ODIzMSwgMHhGOTMwLCAweEY5MzksIDB4NjIzRSwKKyAgICAweDgyMzEsIDB4RkEzMCwgMHhGQTM5LCAweDYyNDgsIDB4ODIzMSwgMHhGQjMwLCAweEZCMzksIDB4NjI1MiwgMHg4MjMxLCAweEZDMzAsIDB4RkMzOSwgMHg2MjVDLAorICAgIDB4ODIzMSwgMHhGRDMwLCAweEZEMzksIDB4NjI2NiwgMHg4MjMxLCAweEZFMzAsIDB4RkUzOSwgMHg2MjcwLCAweDgyMzIsIDB4ODEzMCwgMHg4MTM5LCAweDYyN0EsCisgICAgMHg4MjMyLCAweDgyMzAsIDB4ODIzOSwgMHg2Mjg0LCAweDgyMzIsIDB4ODMzMCwgMHg4MzM5LCAweDYyOEUsIDB4ODIzMiwgMHg4NDMwLCAweDg0MzksIDB4NjI5OCwKKyAgICAweDgyMzIsIDB4ODUzMCwgMHg4NTM5LCAweDYyQTIsIDB4ODIzMiwgMHg4NjMwLCAweDg2MzksIDB4NjJBQywgMHg4MjMyLCAweDg3MzAsIDB4ODczOSwgMHg2MkI2LAorICAgIDB4ODIzMiwgMHg4ODMwLCAweDg4MzksIDB4NjJDMCwgMHg4MjMyLCAweDg5MzAsIDB4ODkzOSwgMHg2MkNBLCAweDgyMzIsIDB4OEEzMCwgMHg4QTM5LCAweDYyRDQsCisgICAgMHg4MjMyLCAweDhCMzAsIDB4OEIzOSwgMHg2MkRFLCAweDgyMzIsIDB4OEMzMCwgMHg4QzM5LCAweDYyRTgsIDB4ODIzMiwgMHg4RDMwLCAweDhEMzksIDB4NjJGMiwKKyAgICAweDgyMzIsIDB4OEUzMCwgMHg4RTM5LCAweDYyRkMsIDB4ODIzMiwgMHg4RjMwLCAweDhGMzksIDB4NjMwNiwgMHg4MjMyLCAweDkwMzAsIDB4OTAzOSwgMHg2MzEwLAorICAgIDB4ODIzMiwgMHg5MTMwLCAweDkxMzksIDB4NjMxQSwgMHg4MjMyLCAweDkyMzAsIDB4OTIzOSwgMHg2MzI0LCAweDgyMzIsIDB4OTMzMCwgMHg5MzM5LCAweDYzMkUsCisgICAgMHg4MjMyLCAweDk0MzAsIDB4OTQzOSwgMHg2MzM4LCAweDgyMzIsIDB4OTUzMCwgMHg5NTM5LCAweDYzNDIsIDB4ODIzMiwgMHg5NjMwLCAweDk2MzksIDB4NjM0QywKKyAgICAweDgyMzIsIDB4OTczMCwgMHg5NzM5LCAweDYzNTYsIDB4ODIzMiwgMHg5ODMwLCAweDk4MzksIDB4NjM2MCwgMHg4MjMyLCAweDk5MzAsIDB4OTkzOSwgMHg2MzZBLAorICAgIDB4ODIzMiwgMHg5QTMwLCAweDlBMzksIDB4NjM3NCwgMHg4MjMyLCAweDlCMzAsIDB4OUIzOSwgMHg2MzdFLCAweDgyMzIsIDB4OUMzMCwgMHg5QzM5LCAweDYzODgsCisgICAgMHg4MjMyLCAweDlEMzAsIDB4OUQzOSwgMHg2MzkyLCAweDgyMzIsIDB4OUUzMCwgMHg5RTM5LCAweDYzOUMsIDB4ODIzMiwgMHg5RjMwLCAweDlGMzksIDB4NjNBNiwKKyAgICAweDgyMzIsIDB4QTAzMCwgMHhBMDM5LCAweDYzQjAsIDB4ODIzMiwgMHhBMTMwLCAweEExMzksIDB4NjNCQSwgMHg4MjMyLCAweEEyMzAsIDB4QTIzOSwgMHg2M0M0LAorICAgIDB4ODIzMiwgMHhBMzMwLCAweEEzMzksIDB4NjNDRSwgMHg4MjMyLCAweEE0MzAsIDB4QTQzOSwgMHg2M0Q4LCAweDgyMzIsIDB4QTUzMCwgMHhBNTM5LCAweDYzRTIsCisgICAgMHg4MjMyLCAweEE2MzAsIDB4QTYzOSwgMHg2M0VDLCAweDgyMzIsIDB4QTczMCwgMHhBNzM5LCAweDYzRjYsIDB4ODIzMiwgMHhBODMwLCAweEE4MzksIDB4NjQwMCwKKyAgICAweDgyMzIsIDB4QTkzMCwgMHhBOTM5LCAweDY0MEEsIDB4ODIzMiwgMHhBQTMwLCAweEFBMzksIDB4NjQxNCwgMHg4MjMyLCAweEFCMzAsIDB4QUIzOSwgMHg2NDFFLAorICAgIDB4ODIzMiwgMHhBQzMwLCAweEFDMzksIDB4NjQyOCwgMHg4MjMyLCAweEFEMzAsIDB4QUQzOSwgMHg2NDMyLCAweDgyMzIsIDB4QUUzMCwgMHhBRTM5LCAweDY0M0MsCisgICAgMHg4MjMyLCAweEFGMzAsIDB4QUYzOSwgMHg2NDQ2LCAweDgyMzIsIDB4QjAzMCwgMHhCMDM5LCAweDY0NTAsIDB4ODIzMiwgMHhCMTMwLCAweEIxMzksIDB4NjQ1QSwKKyAgICAweDgyMzIsIDB4QjIzMCwgMHhCMjM5LCAweDY0NjQsIDB4ODIzMiwgMHhCMzMwLCAweEIzMzksIDB4NjQ2RSwgMHg4MjMyLCAweEI0MzAsIDB4QjQzOSwgMHg2NDc4LAorICAgIDB4ODIzMiwgMHhCNTMwLCAweEI1MzksIDB4NjQ4MiwgMHg4MjMyLCAweEI2MzAsIDB4QjYzOSwgMHg2NDhDLCAweDgyMzIsIDB4QjczMCwgMHhCNzM5LCAweDY0OTYsCisgICAgMHg4MjMyLCAweEI4MzAsIDB4QjgzOSwgMHg2NEEwLCAweDgyMzIsIDB4QjkzMCwgMHhCOTM5LCAweDY0QUEsIDB4ODIzMiwgMHhCQTMwLCAweEJBMzksIDB4NjRCNCwKKyAgICAweDgyMzIsIDB4QkIzMCwgMHhCQjM5LCAweDY0QkUsIDB4ODIzMiwgMHhCQzMwLCAweEJDMzksIDB4NjRDOCwgMHg4MjMyLCAweEJEMzAsIDB4QkQzOSwgMHg2NEQyLAorICAgIDB4ODIzMiwgMHhCRTMwLCAweEJFMzksIDB4NjREQywgMHg4MjMyLCAweEJGMzAsIDB4QkYzOSwgMHg2NEU2LCAweDgyMzIsIDB4QzAzMCwgMHhDMDM5LCAweDY0RjAsCisgICAgMHg4MjMyLCAweEMxMzAsIDB4QzEzOSwgMHg2NEZBLCAweDgyMzIsIDB4QzIzMCwgMHhDMjM5LCAweDY1MDQsIDB4ODIzMiwgMHhDMzMwLCAweEMzMzksIDB4NjUwRSwKKyAgICAweDgyMzIsIDB4QzQzMCwgMHhDNDM5LCAweDY1MTgsIDB4ODIzMiwgMHhDNTMwLCAweEM1MzksIDB4NjUyMiwgMHg4MjMyLCAweEM2MzAsIDB4QzYzOSwgMHg2NTJDLAorICAgIDB4ODIzMiwgMHhDNzMwLCAweEM3MzksIDB4NjUzNiwgMHg4MjMyLCAweEM4MzAsIDB4QzgzOSwgMHg2NTQwLCAweDgyMzIsIDB4QzkzMCwgMHhDOTM5LCAweDY1NEEsCisgICAgMHg4MjMyLCAweENBMzAsIDB4Q0EzOSwgMHg2NTU0LCAweDgyMzIsIDB4Q0IzMCwgMHhDQjM5LCAweDY1NUUsIDB4ODIzMiwgMHhDQzMwLCAweENDMzksIDB4NjU2OCwKKyAgICAweDgyMzIsIDB4Q0QzMCwgMHhDRDM5LCAweDY1NzIsIDB4ODIzMiwgMHhDRTMwLCAweENFMzksIDB4NjU3QywgMHg4MjMyLCAweENGMzAsIDB4Q0YzOSwgMHg2NTg2LAorICAgIDB4ODIzMiwgMHhEMDMwLCAweEQwMzksIDB4NjU5MCwgMHg4MjMyLCAweEQxMzAsIDB4RDEzOSwgMHg2NTlBLCAweDgyMzIsIDB4RDIzMCwgMHhEMjM5LCAweDY1QTQsCisgICAgMHg4MjMyLCAweEQzMzAsIDB4RDMzOSwgMHg2NUFFLCAweDgyMzIsIDB4RDQzMCwgMHhENDM5LCAweDY1QjgsIDB4ODIzMiwgMHhENTMwLCAweEQ1MzksIDB4NjVDMiwKKyAgICAweDgyMzIsIDB4RDYzMCwgMHhENjM5LCAweDY1Q0MsIDB4ODIzMiwgMHhENzMwLCAweEQ3MzksIDB4NjVENiwgMHg4MjMyLCAweEQ4MzAsIDB4RDgzOSwgMHg2NUUwLAorICAgIDB4ODIzMiwgMHhEOTMwLCAweEQ5MzksIDB4NjVFQSwgMHg4MjMyLCAweERBMzAsIDB4REEzOSwgMHg2NUY0LCAweDgyMzIsIDB4REIzMCwgMHhEQjM5LCAweDY1RkUsCisgICAgMHg4MjMyLCAweERDMzAsIDB4REMzOSwgMHg2NjA4LCAweDgyMzIsIDB4REQzMCwgMHhERDM5LCAweDY2MTIsIDB4ODIzMiwgMHhERTMwLCAweERFMzksIDB4NjYxQywKKyAgICAweDgyMzIsIDB4REYzMCwgMHhERjM5LCAweDY2MjYsIDB4ODIzMiwgMHhFMDMwLCAweEUwMzksIDB4NjYzMCwgMHg4MjMyLCAweEUxMzAsIDB4RTEzOSwgMHg2NjNBLAorICAgIDB4ODIzMiwgMHhFMjMwLCAweEUyMzksIDB4NjY0NCwgMHg4MjMyLCAweEUzMzAsIDB4RTMzOSwgMHg2NjRFLCAweDgyMzIsIDB4RTQzMCwgMHhFNDM5LCAweDY2NTgsCisgICAgMHg4MjMyLCAweEU1MzAsIDB4RTUzOSwgMHg2NjYyLCAweDgyMzIsIDB4RTYzMCwgMHhFNjM5LCAweDY2NkMsIDB4ODIzMiwgMHhFNzMwLCAweEU3MzksIDB4NjY3NiwKKyAgICAweDgyMzIsIDB4RTgzMCwgMHhFODM5LCAweDY2ODAsIDB4ODIzMiwgMHhFOTMwLCAweEU5MzksIDB4NjY4QSwgMHg4MjMyLCAweEVBMzAsIDB4RUEzOSwgMHg2Njk0LAorICAgIDB4ODIzMiwgMHhFQjMwLCAweEVCMzksIDB4NjY5RSwgMHg4MjMyLCAweEVDMzAsIDB4RUMzOSwgMHg2NkE4LCAweDgyMzIsIDB4RUQzMCwgMHhFRDM5LCAweDY2QjIsCisgICAgMHg4MjMyLCAweEVFMzAsIDB4RUUzOSwgMHg2NkJDLCAweDgyMzIsIDB4RUYzMCwgMHhFRjM5LCAweDY2QzYsIDB4ODIzMiwgMHhGMDMwLCAweEYwMzksIDB4NjZEMCwKKyAgICAweDgyMzIsIDB4RjEzMCwgMHhGMTM5LCAweDY2REEsIDB4ODIzMiwgMHhGMjMwLCAweEYyMzksIDB4NjZFNCwgMHg4MjMyLCAweEYzMzAsIDB4RjMzOSwgMHg2NkVFLAorICAgIDB4ODIzMiwgMHhGNDMwLCAweEY0MzksIDB4NjZGOCwgMHg4MjMyLCAweEY1MzAsIDB4RjUzOSwgMHg2NzAyLCAweDgyMzIsIDB4RjYzMCwgMHhGNjM5LCAweDY3MEMsCisgICAgMHg4MjMyLCAweEY3MzAsIDB4RjczOSwgMHg2NzE2LCAweDgyMzIsIDB4RjgzMCwgMHhGODM5LCAweDY3MjAsIDB4ODIzMiwgMHhGOTMwLCAweEY5MzksIDB4NjcyQSwKKyAgICAweDgyMzIsIDB4RkEzMCwgMHhGQTM5LCAweDY3MzQsIDB4ODIzMiwgMHhGQjMwLCAweEZCMzksIDB4NjczRSwgMHg4MjMyLCAweEZDMzAsIDB4RkMzOSwgMHg2NzQ4LAorICAgIDB4ODIzMiwgMHhGRDMwLCAweEZEMzksIDB4Njc1MiwgMHg4MjMyLCAweEZFMzAsIDB4RkUzOSwgMHg2NzVDLCAweDgyMzMsIDB4ODEzMCwgMHg4MTM5LCAweDY3NjYsCisgICAgMHg4MjMzLCAweDgyMzAsIDB4ODIzOSwgMHg2NzcwLCAweDgyMzMsIDB4ODMzMCwgMHg4MzM5LCAweDY3N0EsIDB4ODIzMywgMHg4NDMwLCAweDg0MzksIDB4Njc4NCwKKyAgICAweDgyMzMsIDB4ODUzMCwgMHg4NTM5LCAweDY3OEUsIDB4ODIzMywgMHg4NjMwLCAweDg2MzksIDB4Njc5OCwgMHg4MjMzLCAweDg3MzAsIDB4ODczOSwgMHg2N0EyLAorICAgIDB4ODIzMywgMHg4ODMwLCAweDg4MzksIDB4NjdBQywgMHg4MjMzLCAweDg5MzAsIDB4ODkzOSwgMHg2N0I2LCAweDgyMzMsIDB4OEEzMCwgMHg4QTM5LCAweDY3QzAsCisgICAgMHg4MjMzLCAweDhCMzAsIDB4OEIzOSwgMHg2N0NBLCAweDgyMzMsIDB4OEMzMCwgMHg4QzM5LCAweDY3RDQsIDB4ODIzMywgMHg4RDMwLCAweDhEMzksIDB4NjdERSwKKyAgICAweDgyMzMsIDB4OEUzMCwgMHg4RTM5LCAweDY3RTgsIDB4ODIzMywgMHg4RjMwLCAweDhGMzksIDB4NjdGMiwgMHg4MjMzLCAweDkwMzAsIDB4OTAzOSwgMHg2N0ZDLAorICAgIDB4ODIzMywgMHg5MTMwLCAweDkxMzksIDB4NjgwNiwgMHg4MjMzLCAweDkyMzAsIDB4OTIzOSwgMHg2ODEwLCAweDgyMzMsIDB4OTMzMCwgMHg5MzM5LCAweDY4MUEsCisgICAgMHg4MjMzLCAweDk0MzAsIDB4OTQzOSwgMHg2ODI0LCAweDgyMzMsIDB4OTUzMCwgMHg5NTM5LCAweDY4MkUsIDB4ODIzMywgMHg5NjMwLCAweDk2MzksIDB4NjgzOCwKKyAgICAweDgyMzMsIDB4OTczMCwgMHg5NzM5LCAweDY4NDIsIDB4ODIzMywgMHg5ODMwLCAweDk4MzksIDB4Njg0QywgMHg4MjMzLCAweDk5MzAsIDB4OTkzOSwgMHg2ODU2LAorICAgIDB4ODIzMywgMHg5QTMwLCAweDlBMzksIDB4Njg2MCwgMHg4MjMzLCAweDlCMzAsIDB4OUIzOSwgMHg2ODZBLCAweDgyMzMsIDB4OUMzMCwgMHg5QzM5LCAweDY4NzQsCisgICAgMHg4MjMzLCAweDlEMzAsIDB4OUQzOSwgMHg2ODdFLCAweDgyMzMsIDB4OUUzMCwgMHg5RTM5LCAweDY4ODgsIDB4ODIzMywgMHg5RjMwLCAweDlGMzksIDB4Njg5MiwKKyAgICAweDgyMzMsIDB4QTAzMCwgMHhBMDM5LCAweDY4OUMsIDB4ODIzMywgMHhBMTMwLCAweEExMzksIDB4NjhBNiwgMHg4MjMzLCAweEEyMzAsIDB4QTIzOSwgMHg2OEIwLAorICAgIDB4ODIzMywgMHhBMzMwLCAweEEzMzksIDB4NjhCQSwgMHg4MjMzLCAweEE0MzAsIDB4QTQzOSwgMHg2OEM0LCAweDgyMzMsIDB4QTUzMCwgMHhBNTM5LCAweDY4Q0UsCisgICAgMHg4MjMzLCAweEE2MzAsIDB4QTYzOSwgMHg2OEQ4LCAweDgyMzMsIDB4QTczMCwgMHhBNzM5LCAweDY4RTIsIDB4ODIzMywgMHhBODMwLCAweEE4MzksIDB4NjhFQywKKyAgICAweDgyMzMsIDB4QTkzMCwgMHhBOTM5LCAweDY4RjYsIDB4ODIzMywgMHhBQTMwLCAweEFBMzksIDB4NjkwMCwgMHg4MjMzLCAweEFCMzAsIDB4QUIzOSwgMHg2OTBBLAorICAgIDB4ODIzMywgMHhBQzMwLCAweEFDMzksIDB4NjkxNCwgMHg4MjMzLCAweEFEMzAsIDB4QUQzOSwgMHg2OTFFLCAweDgyMzMsIDB4QUUzMCwgMHhBRTM5LCAweDY5MjgsCisgICAgMHg4MjMzLCAweEFGMzAsIDB4QUYzOSwgMHg2OTMyLCAweDgyMzMsIDB4QjAzMCwgMHhCMDM5LCAweDY5M0MsIDB4ODIzMywgMHhCMTMwLCAweEIxMzksIDB4Njk0NiwKKyAgICAweDgyMzMsIDB4QjIzMCwgMHhCMjM5LCAweDY5NTAsIDB4ODIzMywgMHhCMzMwLCAweEIzMzksIDB4Njk1QSwgMHg4MjMzLCAweEI0MzAsIDB4QjQzOSwgMHg2OTY0LAorICAgIDB4ODIzMywgMHhCNTMwLCAweEI1MzksIDB4Njk2RSwgMHg4MjMzLCAweEI2MzAsIDB4QjYzOSwgMHg2OTc4LCAweDgyMzMsIDB4QjczMCwgMHhCNzM5LCAweDY5ODIsCisgICAgMHg4MjMzLCAweEI4MzAsIDB4QjgzOSwgMHg2OThDLCAweDgyMzMsIDB4QjkzMCwgMHhCOTM5LCAweDY5OTYsIDB4ODIzMywgMHhCQTMwLCAweEJBMzksIDB4NjlBMCwKKyAgICAweDgyMzMsIDB4QkIzMCwgMHhCQjM5LCAweDY5QUEsIDB4ODIzMywgMHhCQzMwLCAweEJDMzksIDB4NjlCNCwgMHg4MjMzLCAweEJEMzAsIDB4QkQzOSwgMHg2OUJFLAorICAgIDB4ODIzMywgMHhCRTMwLCAweEJFMzksIDB4NjlDOCwgMHg4MjMzLCAweEJGMzAsIDB4QkYzOSwgMHg2OUQyLCAweDgyMzMsIDB4QzAzMCwgMHhDMDM5LCAweDY5REMsCisgICAgMHg4MjMzLCAweEMxMzAsIDB4QzEzOSwgMHg2OUU2LCAweDgyMzMsIDB4QzIzMCwgMHhDMjM5LCAweDY5RjAsIDB4ODIzMywgMHhDMzMwLCAweEMzMzksIDB4NjlGQSwKKyAgICAweDgyMzMsIDB4QzQzMCwgMHhDNDM5LCAweDZBMDQsIDB4ODIzMywgMHhDNTMwLCAweEM1MzksIDB4NkEwRSwgMHg4MjMzLCAweEM2MzAsIDB4QzYzOSwgMHg2QTE4LAorICAgIDB4ODIzMywgMHhDNzMwLCAweEM3MzksIDB4NkEyMiwgMHg4MjMzLCAweEM4MzAsIDB4QzgzOSwgMHg2QTJDLCAweDgyMzMsIDB4QzkzMCwgMHhDOTM5LCAweDZBMzYsCisgICAgMHg4MjMzLCAweENBMzAsIDB4Q0EzOSwgMHg2QTQwLCAweDgyMzMsIDB4Q0IzMCwgMHhDQjM5LCAweDZBNEEsIDB4ODIzMywgMHhDQzMwLCAweENDMzksIDB4NkE1NCwKKyAgICAweDgyMzMsIDB4Q0QzMCwgMHhDRDM5LCAweDZBNUUsIDB4ODIzMywgMHhDRTMwLCAweENFMzksIDB4NkE2OCwgMHg4MjMzLCAweENGMzAsIDB4Q0YzOSwgMHg2QTcyLAorICAgIDB4ODIzMywgMHhEMDMwLCAweEQwMzksIDB4NkE3QywgMHg4MjMzLCAweEQxMzAsIDB4RDEzOSwgMHg2QTg2LCAweDgyMzMsIDB4RDIzMCwgMHhEMjM5LCAweDZBOTAsCisgICAgMHg4MjMzLCAweEQzMzAsIDB4RDMzOSwgMHg2QTlBLCAweDgyMzMsIDB4RDQzMCwgMHhENDM5LCAweDZBQTQsIDB4ODIzMywgMHhENTMwLCAweEQ1MzksIDB4NkFBRSwKKyAgICAweDgyMzMsIDB4RDYzMCwgMHhENjM5LCAweDZBQjgsIDB4ODIzMywgMHhENzMwLCAweEQ3MzksIDB4NkFDMiwgMHg4MjMzLCAweEQ4MzAsIDB4RDgzOSwgMHg2QUNDLAorICAgIDB4ODIzMywgMHhEOTMwLCAweEQ5MzksIDB4NkFENiwgMHg4MjMzLCAweERBMzAsIDB4REEzOSwgMHg2QUUwLCAweDgyMzMsIDB4REIzMCwgMHhEQjM5LCAweDZBRUEsCisgICAgMHg4MjMzLCAweERDMzAsIDB4REMzOSwgMHg2QUY0LCAweDgyMzMsIDB4REQzMCwgMHhERDM5LCAweDZBRkUsIDB4ODIzMywgMHhERTMwLCAweERFMzksIDB4NkIwOCwKKyAgICAweDgyMzMsIDB4REYzMCwgMHhERjM5LCAweDZCMTIsIDB4ODIzMywgMHhFMDMwLCAweEUwMzksIDB4NkIxQywgMHg4MjMzLCAweEUxMzAsIDB4RTEzOSwgMHg2QjI2LAorICAgIDB4ODIzMywgMHhFMjMwLCAweEUyMzksIDB4NkIzMCwgMHg4MjMzLCAweEUzMzAsIDB4RTMzOSwgMHg2QjNBLCAweDgyMzMsIDB4RTQzMCwgMHhFNDM5LCAweDZCNDQsCisgICAgMHg4MjMzLCAweEU1MzAsIDB4RTUzOSwgMHg2QjRFLCAweDgyMzMsIDB4RTYzMCwgMHhFNjM5LCAweDZCNTgsIDB4ODIzMywgMHhFNzMwLCAweEU3MzksIDB4NkI2MiwKKyAgICAweDgyMzMsIDB4RTgzMCwgMHhFODM5LCAweDZCNkMsIDB4ODIzMywgMHhFOTMwLCAweEU5MzksIDB4NkI3NiwgMHg4MjMzLCAweEVBMzAsIDB4RUEzOSwgMHg2QjgwLAorICAgIDB4ODIzMywgMHhFQjMwLCAweEVCMzksIDB4NkI4QSwgMHg4MjMzLCAweEVDMzAsIDB4RUMzOSwgMHg2Qjk0LCAweDgyMzMsIDB4RUQzMCwgMHhFRDM5LCAweDZCOUUsCisgICAgMHg4MjMzLCAweEVFMzAsIDB4RUUzOSwgMHg2QkE4LCAweDgyMzMsIDB4RUYzMCwgMHhFRjM5LCAweDZCQjIsIDB4ODIzMywgMHhGMDMwLCAweEYwMzksIDB4NkJCQywKKyAgICAweDgyMzMsIDB4RjEzMCwgMHhGMTM5LCAweDZCQzYsIDB4ODIzMywgMHhGMjMwLCAweEYyMzksIDB4NkJEMCwgMHg4MjMzLCAweEYzMzAsIDB4RjMzOSwgMHg2QkRBLAorICAgIDB4ODIzMywgMHhGNDMwLCAweEY0MzksIDB4NkJFNCwgMHg4MjMzLCAweEY1MzAsIDB4RjUzOSwgMHg2QkVFLCAweDgyMzMsIDB4RjYzMCwgMHhGNjM5LCAweDZCRjgsCisgICAgMHg4MjMzLCAweEY3MzAsIDB4RjczOSwgMHg2QzAyLCAweDgyMzMsIDB4RjgzMCwgMHhGODM5LCAweDZDMEMsIDB4ODIzMywgMHhGOTMwLCAweEY5MzksIDB4NkMxNiwKKyAgICAweDgyMzMsIDB4RkEzMCwgMHhGQTM5LCAweDZDMjAsIDB4ODIzMywgMHhGQjMwLCAweEZCMzksIDB4NkMyQSwgMHg4MjMzLCAweEZDMzAsIDB4RkMzOSwgMHg2QzM0LAorICAgIDB4ODIzMywgMHhGRDMwLCAweEZEMzksIDB4NkMzRSwgMHg4MjMzLCAweEZFMzAsIDB4RkUzOSwgMHg2QzQ4LCAweDgyMzQsIDB4ODEzMCwgMHg4MTM5LCAweDZDNTIsCisgICAgMHg4MjM0LCAweDgyMzAsIDB4ODIzOSwgMHg2QzVDLCAweDgyMzQsIDB4ODMzMCwgMHg4MzM5LCAweDZDNjYsIDB4ODIzNCwgMHg4NDMwLCAweDg0MzksIDB4NkM3MCwKKyAgICAweDgyMzQsIDB4ODUzMCwgMHg4NTM5LCAweDZDN0EsIDB4ODIzNCwgMHg4NjMwLCAweDg2MzksIDB4NkM4NCwgMHg4MjM0LCAweDg3MzAsIDB4ODczOSwgMHg2QzhFLAorICAgIDB4ODIzNCwgMHg4ODMwLCAweDg4MzksIDB4NkM5OCwgMHg4MjM0LCAweDg5MzAsIDB4ODkzOSwgMHg2Q0EyLCAweDgyMzQsIDB4OEEzMCwgMHg4QTM5LCAweDZDQUMsCisgICAgMHg4MjM0LCAweDhCMzAsIDB4OEIzOSwgMHg2Q0I2LCAweDgyMzQsIDB4OEMzMCwgMHg4QzM5LCAweDZDQzAsIDB4ODIzNCwgMHg4RDMwLCAweDhEMzksIDB4NkNDQSwKKyAgICAweDgyMzQsIDB4OEUzMCwgMHg4RTM5LCAweDZDRDQsIDB4ODIzNCwgMHg4RjMwLCAweDhGMzksIDB4NkNERSwgMHg4MjM0LCAweDkwMzAsIDB4OTAzOSwgMHg2Q0U4LAorICAgIDB4ODIzNCwgMHg5MTMwLCAweDkxMzksIDB4NkNGMiwgMHg4MjM0LCAweDkyMzAsIDB4OTIzOSwgMHg2Q0ZDLCAweDgyMzQsIDB4OTMzMCwgMHg5MzM5LCAweDZEMDYsCisgICAgMHg4MjM0LCAweDk0MzAsIDB4OTQzOSwgMHg2RDEwLCAweDgyMzQsIDB4OTUzMCwgMHg5NTM5LCAweDZEMUEsIDB4ODIzNCwgMHg5NjMwLCAweDk2MzksIDB4NkQyNCwKKyAgICAweDgyMzQsIDB4OTczMCwgMHg5NzM5LCAweDZEMkUsIDB4ODIzNCwgMHg5ODMwLCAweDk4MzksIDB4NkQzOCwgMHg4MjM0LCAweDk5MzAsIDB4OTkzOSwgMHg2RDQyLAorICAgIDB4ODIzNCwgMHg5QTMwLCAweDlBMzksIDB4NkQ0QywgMHg4MjM0LCAweDlCMzAsIDB4OUIzOSwgMHg2RDU2LCAweDgyMzQsIDB4OUMzMCwgMHg5QzM5LCAweDZENjAsCisgICAgMHg4MjM0LCAweDlEMzAsIDB4OUQzOSwgMHg2RDZBLCAweDgyMzQsIDB4OUUzMCwgMHg5RTM5LCAweDZENzQsIDB4ODIzNCwgMHg5RjMwLCAweDlGMzksIDB4NkQ3RSwKKyAgICAweDgyMzQsIDB4QTAzMCwgMHhBMDM5LCAweDZEODgsIDB4ODIzNCwgMHhBMTMwLCAweEExMzksIDB4NkQ5MiwgMHg4MjM0LCAweEEyMzAsIDB4QTIzOSwgMHg2RDlDLAorICAgIDB4ODIzNCwgMHhBMzMwLCAweEEzMzksIDB4NkRBNiwgMHg4MjM0LCAweEE0MzAsIDB4QTQzOSwgMHg2REIwLCAweDgyMzQsIDB4QTUzMCwgMHhBNTM5LCAweDZEQkEsCisgICAgMHg4MjM0LCAweEE2MzAsIDB4QTYzOSwgMHg2REM0LCAweDgyMzQsIDB4QTczMCwgMHhBNzM5LCAweDZEQ0UsIDB4ODIzNCwgMHhBODMwLCAweEE4MzksIDB4NkREOCwKKyAgICAweDgyMzQsIDB4QTkzMCwgMHhBOTM5LCAweDZERTIsIDB4ODIzNCwgMHhBQTMwLCAweEFBMzksIDB4NkRFQywgMHg4MjM0LCAweEFCMzAsIDB4QUIzOSwgMHg2REY2LAorICAgIDB4ODIzNCwgMHhBQzMwLCAweEFDMzksIDB4NkUwMCwgMHg4MjM0LCAweEFEMzAsIDB4QUQzOSwgMHg2RTBBLCAweDgyMzQsIDB4QUUzMCwgMHhBRTM5LCAweDZFMTQsCisgICAgMHg4MjM0LCAweEFGMzAsIDB4QUYzOSwgMHg2RTFFLCAweDgyMzQsIDB4QjAzMCwgMHhCMDM5LCAweDZFMjgsIDB4ODIzNCwgMHhCMTMwLCAweEIxMzksIDB4NkUzMiwKKyAgICAweDgyMzQsIDB4QjIzMCwgMHhCMjM5LCAweDZFM0MsIDB4ODIzNCwgMHhCMzMwLCAweEIzMzksIDB4NkU0NiwgMHg4MjM0LCAweEI0MzAsIDB4QjQzOSwgMHg2RTUwLAorICAgIDB4ODIzNCwgMHhCNTMwLCAweEI1MzksIDB4NkU1QSwgMHg4MjM0LCAweEI2MzAsIDB4QjYzOSwgMHg2RTY0LCAweDgyMzQsIDB4QjczMCwgMHhCNzM5LCAweDZFNkUsCisgICAgMHg4MjM0LCAweEI4MzAsIDB4QjgzOSwgMHg2RTc4LCAweDgyMzQsIDB4QjkzMCwgMHhCOTM5LCAweDZFODIsIDB4ODIzNCwgMHhCQTMwLCAweEJBMzksIDB4NkU4QywKKyAgICAweDgyMzQsIDB4QkIzMCwgMHhCQjM5LCAweDZFOTYsIDB4ODIzNCwgMHhCQzMwLCAweEJDMzksIDB4NkVBMCwgMHg4MjM0LCAweEJEMzAsIDB4QkQzOSwgMHg2RUFBLAorICAgIDB4ODIzNCwgMHhCRTMwLCAweEJFMzksIDB4NkVCNCwgMHg4MjM0LCAweEJGMzAsIDB4QkYzOSwgMHg2RUJFLCAweDgyMzQsIDB4QzAzMCwgMHhDMDM5LCAweDZFQzgsCisgICAgMHg4MjM0LCAweEMxMzAsIDB4QzEzOSwgMHg2RUQyLCAweDgyMzQsIDB4QzIzMCwgMHhDMjM5LCAweDZFREMsIDB4ODIzNCwgMHhDMzMwLCAweEMzMzksIDB4NkVFNiwKKyAgICAweDgyMzQsIDB4QzQzMCwgMHhDNDM5LCAweDZFRjAsIDB4ODIzNCwgMHhDNTMwLCAweEM1MzksIDB4NkVGQSwgMHg4MjM0LCAweEM2MzAsIDB4QzYzOSwgMHg2RjA0LAorICAgIDB4ODIzNCwgMHhDNzMwLCAweEM3MzksIDB4NkYwRSwgMHg4MjM0LCAweEM4MzAsIDB4QzgzOSwgMHg2RjE4LCAweDgyMzQsIDB4QzkzMCwgMHhDOTM5LCAweDZGMjIsCisgICAgMHg4MjM0LCAweENBMzAsIDB4Q0EzOSwgMHg2RjJDLCAweDgyMzQsIDB4Q0IzMCwgMHhDQjM5LCAweDZGMzYsIDB4ODIzNCwgMHhDQzMwLCAweENDMzksIDB4NkY0MCwKKyAgICAweDgyMzQsIDB4Q0QzMCwgMHhDRDM5LCAweDZGNEEsIDB4ODIzNCwgMHhDRTMwLCAweENFMzksIDB4NkY1NCwgMHg4MjM0LCAweENGMzAsIDB4Q0YzOSwgMHg2RjVFLAorICAgIDB4ODIzNCwgMHhEMDMwLCAweEQwMzksIDB4NkY2OCwgMHg4MjM0LCAweEQxMzAsIDB4RDEzOSwgMHg2RjcyLCAweDgyMzQsIDB4RDIzMCwgMHhEMjM5LCAweDZGN0MsCisgICAgMHg4MjM0LCAweEQzMzAsIDB4RDMzOSwgMHg2Rjg2LCAweDgyMzQsIDB4RDQzMCwgMHhENDM5LCAweDZGOTAsIDB4ODIzNCwgMHhENTMwLCAweEQ1MzksIDB4NkY5QSwKKyAgICAweDgyMzQsIDB4RDYzMCwgMHhENjM5LCAweDZGQTQsIDB4ODIzNCwgMHhENzMwLCAweEQ3MzksIDB4NkZBRSwgMHg4MjM0LCAweEQ4MzAsIDB4RDgzOSwgMHg2RkI4LAorICAgIDB4ODIzNCwgMHhEOTMwLCAweEQ5MzksIDB4NkZDMiwgMHg4MjM0LCAweERBMzAsIDB4REEzOSwgMHg2RkNDLCAweDgyMzQsIDB4REIzMCwgMHhEQjM5LCAweDZGRDYsCisgICAgMHg4MjM0LCAweERDMzAsIDB4REMzOSwgMHg2RkUwLCAweDgyMzQsIDB4REQzMCwgMHhERDM5LCAweDZGRUEsIDB4ODIzNCwgMHhERTMwLCAweERFMzksIDB4NkZGNCwKKyAgICAweDgyMzQsIDB4REYzMCwgMHhERjM5LCAweDZGRkUsIDB4ODIzNCwgMHhFMDMwLCAweEUwMzksIDB4NzAwOCwgMHg4MjM0LCAweEUxMzAsIDB4RTEzOSwgMHg3MDEyLAorICAgIDB4ODIzNCwgMHhFMjMwLCAweEUyMzksIDB4NzAxQywgMHg4MjM0LCAweEUzMzAsIDB4RTMzOSwgMHg3MDI2LCAweDgyMzQsIDB4RTQzMCwgMHhFNDM5LCAweDcwMzAsCisgICAgMHg4MjM0LCAweEU1MzAsIDB4RTUzOSwgMHg3MDNBLCAweDgyMzQsIDB4RTYzMCwgMHhFNjM5LCAweDcwNDQsIDB4ODIzNCwgMHhFNzMwLCAweEU3MzksIDB4NzA0RSwKKyAgICAweDgyMzQsIDB4RTgzMCwgMHhFODM5LCAweDcwNTgsIDB4ODIzNCwgMHhFOTMwLCAweEU5MzksIDB4NzA2MiwgMHg4MjM0LCAweEVBMzAsIDB4RUEzOSwgMHg3MDZDLAorICAgIDB4ODIzNCwgMHhFQjMwLCAweEVCMzksIDB4NzA3NiwgMHg4MjM0LCAweEVDMzAsIDB4RUMzOSwgMHg3MDgwLCAweDgyMzQsIDB4RUQzMCwgMHhFRDM5LCAweDcwOEEsCisgICAgMHg4MjM0LCAweEVFMzAsIDB4RUUzOSwgMHg3MDk0LCAweDgyMzQsIDB4RUYzMCwgMHhFRjM5LCAweDcwOUUsIDB4ODIzNCwgMHhGMDMwLCAweEYwMzksIDB4NzBBOCwKKyAgICAweDgyMzQsIDB4RjEzMCwgMHhGMTM5LCAweDcwQjIsIDB4ODIzNCwgMHhGMjMwLCAweEYyMzksIDB4NzBCQywgMHg4MjM0LCAweEYzMzAsIDB4RjMzOSwgMHg3MEM2LAorICAgIDB4ODIzNCwgMHhGNDMwLCAweEY0MzksIDB4NzBEMCwgMHg4MjM0LCAweEY1MzAsIDB4RjUzOSwgMHg3MERBLCAweDgyMzQsIDB4RjYzMCwgMHhGNjM5LCAweDcwRTQsCisgICAgMHg4MjM0LCAweEY3MzAsIDB4RjczOSwgMHg3MEVFLCAweDgyMzQsIDB4RjgzMCwgMHhGODM5LCAweDcwRjgsIDB4ODIzNCwgMHhGOTMwLCAweEY5MzksIDB4NzEwMiwKKyAgICAweDgyMzQsIDB4RkEzMCwgMHhGQTM5LCAweDcxMEMsIDB4ODIzNCwgMHhGQjMwLCAweEZCMzksIDB4NzExNiwgMHg4MjM0LCAweEZDMzAsIDB4RkMzOSwgMHg3MTIwLAorICAgIDB4ODIzNCwgMHhGRDMwLCAweEZEMzksIDB4NzEyQSwgMHg4MjM0LCAweEZFMzAsIDB4RkUzOSwgMHg3MTM0LCAweDgyMzUsIDB4ODEzMCwgMHg4MTM5LCAweDcxM0UsCisgICAgMHg4MjM1LCAweDgyMzAsIDB4ODIzOSwgMHg3MTQ4LCAweDgyMzUsIDB4ODMzMCwgMHg4MzM5LCAweDcxNTIsIDB4ODIzNSwgMHg4NDMwLCAweDg0MzksIDB4NzE1QywKKyAgICAweDgyMzUsIDB4ODUzMCwgMHg4NTM5LCAweDcxNjYsIDB4ODIzNSwgMHg4NjMwLCAweDg2MzksIDB4NzE3MCwgMHg4MjM1LCAweDg3MzAsIDB4ODczOCwgMHg3MTdBLAorICAgIDB4ODIzNSwgMHg5ODMzLCAweDk4MzksIDB4NzE4OCwgMHg4MjM1LCAweDk5MzAsIDB4OTkzOSwgMHg3MThGLCAweDgyMzUsIDB4OUEzMCwgMHg5QTM5LCAweDcxOTksCisgICAgMHg4MjM1LCAweDlCMzAsIDB4OUIzOSwgMHg3MUEzLCAweDgyMzUsIDB4OUMzMCwgMHg5QzM5LCAweDcxQUQsIDB4ODIzNSwgMHg5RDMwLCAweDlEMzksIDB4NzFCNywKKyAgICAweDgyMzUsIDB4OUUzMCwgMHg5RTM5LCAweDcxQzEsIDB4ODIzNSwgMHg5RjMwLCAweDlGMzksIDB4NzFDQiwgMHg4MjM1LCAweEEwMzAsIDB4QTAzOSwgMHg3MUQ1LAorICAgIDB4ODIzNSwgMHhBMTMwLCAweEExMzksIDB4NzFERiwgMHg4MjM1LCAweEEyMzAsIDB4QTIzOSwgMHg3MUU5LCAweDgyMzUsIDB4QTMzMCwgMHhBMzM5LCAweDcxRjMsCisgICAgMHg4MjM1LCAweEE0MzAsIDB4QTQzOSwgMHg3MUZELCAweDgyMzUsIDB4QTUzMCwgMHhBNTM5LCAweDcyMDcsIDB4ODIzNSwgMHhBNjMwLCAweEE2MzksIDB4NzIxMSwKKyAgICAweDgyMzUsIDB4QTczMCwgMHhBNzM5LCAweDcyMUIsIDB4ODIzNSwgMHhBODMwLCAweEE4MzksIDB4NzIyNSwgMHg4MjM1LCAweEE5MzAsIDB4QTkzOSwgMHg3MjJGLAorICAgIDB4ODIzNSwgMHhBQTMwLCAweEFBMzksIDB4NzIzOSwgMHg4MjM1LCAweEFCMzAsIDB4QUIzOSwgMHg3MjQzLCAweDgyMzUsIDB4QUMzMCwgMHhBQzM5LCAweDcyNEQsCisgICAgMHg4MjM1LCAweEFEMzAsIDB4QUQzOSwgMHg3MjU3LCAweDgyMzUsIDB4QUUzMCwgMHhBRTM5LCAweDcyNjEsIDB4ODIzNSwgMHhBRjMwLCAweEFGMzksIDB4NzI2QiwKKyAgICAweDgyMzUsIDB4QjAzMCwgMHhCMDM5LCAweDcyNzUsIDB4ODIzNSwgMHhCMTMwLCAweEIxMzksIDB4NzI3RiwgMHg4MjM1LCAweEIyMzAsIDB4QjIzOSwgMHg3Mjg5LAorICAgIDB4ODIzNSwgMHhCMzMwLCAweEIzMzksIDB4NzI5MywgMHg4MjM1LCAweEI0MzAsIDB4QjQzOSwgMHg3MjlELCAweDgyMzUsIDB4QjUzMCwgMHhCNTM5LCAweDcyQTcsCisgICAgMHg4MjM1LCAweEI2MzAsIDB4QjYzOSwgMHg3MkIxLCAweDgyMzUsIDB4QjczMCwgMHhCNzM5LCAweDcyQkIsIDB4ODIzNSwgMHhCODMwLCAweEI4MzksIDB4NzJDNSwKKyAgICAweDgyMzUsIDB4QjkzMCwgMHhCOTM5LCAweDcyQ0YsIDB4ODIzNSwgMHhCQTMwLCAweEJBMzksIDB4NzJEOSwgMHg4MjM1LCAweEJCMzAsIDB4QkIzOSwgMHg3MkUzLAorICAgIDB4ODIzNSwgMHhCQzMwLCAweEJDMzksIDB4NzJFRCwgMHg4MjM1LCAweEJEMzAsIDB4QkQzOSwgMHg3MkY3LCAweDgyMzUsIDB4QkUzMCwgMHhCRTM5LCAweDczMDEsCisgICAgMHg4MjM1LCAweEJGMzAsIDB4QkYzOSwgMHg3MzBCLCAweDgyMzUsIDB4QzAzMCwgMHhDMDM5LCAweDczMTUsIDB4ODIzNSwgMHhDMTMwLCAweEMxMzksIDB4NzMxRiwKKyAgICAweDgyMzUsIDB4QzIzMCwgMHhDMjM5LCAweDczMjksIDB4ODIzNSwgMHhDMzMwLCAweEMzMzksIDB4NzMzMywgMHg4MjM1LCAweEM0MzAsIDB4QzQzOSwgMHg3MzNELAorICAgIDB4ODIzNSwgMHhDNTMwLCAweEM1MzksIDB4NzM0NywgMHg4MjM1LCAweEM2MzAsIDB4QzYzOSwgMHg3MzUxLCAweDgyMzUsIDB4QzczMCwgMHhDNzM5LCAweDczNUIsCisgICAgMHg4MjM1LCAweEM4MzAsIDB4QzgzOSwgMHg3MzY1LCAweDgyMzUsIDB4QzkzMCwgMHhDOTM5LCAweDczNkYsIDB4ODIzNSwgMHhDQTMwLCAweENBMzksIDB4NzM3OSwKKyAgICAweDgyMzUsIDB4Q0IzMCwgMHhDQjM5LCAweDczODMsIDB4ODIzNSwgMHhDQzMwLCAweENDMzksIDB4NzM4RCwgMHg4MjM1LCAweENEMzAsIDB4Q0QzOSwgMHg3Mzk3LAorICAgIDB4ODIzNSwgMHhDRTMwLCAweENFMzksIDB4NzNBMSwgMHg4MjM1LCAweENGMzAsIDB4Q0YzOSwgMHg3M0FCLCAweDgyMzUsIDB4RDAzMCwgMHhEMDM5LCAweDczQjUsCisgICAgMHg4MjM1LCAweEQxMzAsIDB4RDEzOSwgMHg3M0JGLCAweDgyMzUsIDB4RDIzMCwgMHhEMjM5LCAweDczQzksIDB4ODIzNSwgMHhEMzMwLCAweEQzMzksIDB4NzNEMywKKyAgICAweDgyMzUsIDB4RDQzMCwgMHhENDM5LCAweDczREQsIDB4ODIzNSwgMHhENTMwLCAweEQ1MzksIDB4NzNFNywgMHg4MjM1LCAweEQ2MzAsIDB4RDYzOSwgMHg3M0YxLAorICAgIDB4ODIzNSwgMHhENzMwLCAweEQ3MzksIDB4NzNGQiwgMHg4MjM1LCAweEQ4MzAsIDB4RDgzOSwgMHg3NDA1LCAweDgyMzUsIDB4RDkzMCwgMHhEOTM5LCAweDc0MEYsCisgICAgMHg4MjM1LCAweERBMzAsIDB4REEzOSwgMHg3NDE5LCAweDgyMzUsIDB4REIzMCwgMHhEQjM5LCAweDc0MjMsIDB4ODIzNSwgMHhEQzMwLCAweERDMzksIDB4NzQyRCwKKyAgICAweDgyMzUsIDB4REQzMCwgMHhERDM5LCAweDc0MzcsIDB4ODIzNSwgMHhERTMwLCAweERFMzksIDB4NzQ0MSwgMHg4MjM1LCAweERGMzAsIDB4REYzOSwgMHg3NDRCLAorICAgIDB4ODIzNSwgMHhFMDMwLCAweEUwMzksIDB4NzQ1NSwgMHg4MjM1LCAweEUxMzAsIDB4RTEzOSwgMHg3NDVGLCAweDgyMzUsIDB4RTIzMCwgMHhFMjM5LCAweDc0NjksCisgICAgMHg4MjM1LCAweEUzMzAsIDB4RTMzOSwgMHg3NDczLCAweDgyMzUsIDB4RTQzMCwgMHhFNDM5LCAweDc0N0QsIDB4ODIzNSwgMHhFNTMwLCAweEU1MzksIDB4NzQ4NywKKyAgICAweDgyMzUsIDB4RTYzMCwgMHhFNjM5LCAweDc0OTEsIDB4ODIzNSwgMHhFNzMwLCAweEU3MzksIDB4NzQ5QiwgMHg4MjM1LCAweEU4MzAsIDB4RTgzOSwgMHg3NEE1LAorICAgIDB4ODIzNSwgMHhFOTMwLCAweEU5MzksIDB4NzRBRiwgMHg4MjM1LCAweEVBMzAsIDB4RUEzOSwgMHg3NEI5LCAweDgyMzUsIDB4RUIzMCwgMHhFQjM5LCAweDc0QzMsCisgICAgMHg4MjM1LCAweEVDMzAsIDB4RUMzOSwgMHg3NENELCAweDgyMzUsIDB4RUQzMCwgMHhFRDM5LCAweDc0RDcsIDB4ODIzNSwgMHhFRTMwLCAweEVFMzksIDB4NzRFMSwKKyAgICAweDgyMzUsIDB4RUYzMCwgMHhFRjM5LCAweDc0RUIsIDB4ODIzNSwgMHhGMDMwLCAweEYwMzksIDB4NzRGNSwgMHg4MjM1LCAweEYxMzAsIDB4RjEzOSwgMHg3NEZGLAorICAgIDB4ODIzNSwgMHhGMjMwLCAweEYyMzksIDB4NzUwOSwgMHg4MjM1LCAweEYzMzAsIDB4RjMzOSwgMHg3NTEzLCAweDgyMzUsIDB4RjQzMCwgMHhGNDM5LCAweDc1MUQsCisgICAgMHg4MjM1LCAweEY1MzAsIDB4RjUzOSwgMHg3NTI3LCAweDgyMzUsIDB4RjYzMCwgMHhGNjM5LCAweDc1MzEsIDB4ODIzNSwgMHhGNzMwLCAweEY3MzksIDB4NzUzQiwKKyAgICAweDgyMzUsIDB4RjgzMCwgMHhGODM5LCAweDc1NDUsIDB4ODIzNSwgMHhGOTMwLCAweEY5MzksIDB4NzU0RiwgMHg4MjM1LCAweEZBMzAsIDB4RkEzOSwgMHg3NTU5LAorICAgIDB4ODIzNSwgMHhGQjMwLCAweEZCMzksIDB4NzU2MywgMHg4MjM1LCAweEZDMzAsIDB4RkMzOSwgMHg3NTZELCAweDgyMzUsIDB4RkQzMCwgMHhGRDM5LCAweDc1NzcsCisgICAgMHg4MjM1LCAweEZFMzAsIDB4RkUzOSwgMHg3NTgxLCAweDgyMzYsIDB4ODEzMCwgMHg4MTM5LCAweDc1OEIsIDB4ODIzNiwgMHg4MjMwLCAweDgyMzksIDB4NzU5NSwKKyAgICAweDgyMzYsIDB4ODMzMCwgMHg4MzM5LCAweDc1OUYsIDB4ODIzNiwgMHg4NDMwLCAweDg0MzksIDB4NzVBOSwgMHg4MjM2LCAweDg1MzAsIDB4ODUzOSwgMHg3NUIzLAorICAgIDB4ODIzNiwgMHg4NjMwLCAweDg2MzksIDB4NzVCRCwgMHg4MjM2LCAweDg3MzAsIDB4ODczOSwgMHg3NUM3LCAweDgyMzYsIDB4ODgzMCwgMHg4ODM5LCAweDc1RDEsCisgICAgMHg4MjM2LCAweDg5MzAsIDB4ODkzOSwgMHg3NURCLCAweDgyMzYsIDB4OEEzMCwgMHg4QTM5LCAweDc1RTUsIDB4ODIzNiwgMHg4QjMwLCAweDhCMzksIDB4NzVFRiwKKyAgICAweDgyMzYsIDB4OEMzMCwgMHg4QzM5LCAweDc1RjksIDB4ODIzNiwgMHg4RDMwLCAweDhEMzksIDB4NzYwMywgMHg4MjM2LCAweDhFMzAsIDB4OEUzNywgMHg3NjBELAorICAgIDB4ODIzNiwgMHg4RjMxLCAweDhGMzksIDB4NzYxNSwgMHg4MjM2LCAweDkwMzAsIDB4OTAzOSwgMHg3NjFFLCAweDgyMzYsIDB4OTEzMCwgMHg5MTM5LCAweDc2MjgsCisgICAgMHg4MjM2LCAweDkyMzAsIDB4OTIzOSwgMHg3NjMyLCAweDgyMzYsIDB4OTMzMCwgMHg5MzM5LCAweDc2M0MsIDB4ODIzNiwgMHg5NDMwLCAweDk0MzUsIDB4NzY0NiwKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCSzJLLVZfNS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCSzJLLVZfNS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZjZDg1YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JLMkstVl81LmNwcApAQCAtMCwwICsxLDIyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfR0JLMktfVl81WzQxICogM10gPSB7CisgICAgMHhBMUEyLCAweEExQTIsIDB4MDIzRiwgMHhBMUEzLCAweEExQTMsIDB4MDIzRSwgMHhBMUFBLCAweEExQUEsIDB4MDI1NiwKKyAgICAweEExQUIsIDB4QTFBQywgMHgxRTE4LCAweEExQUQsIDB4QTFBRCwgMHgwMjU3LCAweEExQjIsIDB4QTFCRiwgMHgwMjQ2LAorICAgIDB4QTFGRSwgMHhBMUZFLCAweDFFMUEsIDB4QTNBMSwgMHhBM0ExLCAweDAyNDIsIDB4QTNBOCwgMHhBM0E5LCAweDAyNDQsCisgICAgMHhBM0FDLCAweEEzQUMsIDB4MDIzRCwgMHhBM0FFLCAweEEzQUUsIDB4MUUxQiwgMHhBM0JBLCAweEEzQkIsIDB4MDI0MCwKKyAgICAweEEzQkQsIDB4QTNCRCwgMHgxRTFDLCAweEEzQkYsIDB4QTNCRiwgMHgwMjQzLCAweEEzREIsIDB4QTNEQiwgMHgxRTFELAorICAgIDB4QTNERCwgMHhBM0RELCAweDFFMUUsIDB4QTNERiwgMHhBM0RGLCAweDAyNTgsIDB4QTNGQiwgMHhBM0ZCLCAweDAyNTQsCisgICAgMHhBM0ZELCAweEEzRkQsIDB4MDI1NSwgMHhBM0ZFLCAweEEzRkUsIDB4MUUxRiwgMHhBNEExLCAweEE0QTEsIDB4NTc1NywKKyAgICAweEE0QTMsIDB4QTRBMywgMHg1NzU5LCAweEE0QTUsIDB4QTRBNSwgMHg1NzYyLCAweEE0QTcsIDB4QTRBNywgMHg1NzU4LAorICAgIDB4QTRBOSwgMHhBNEE5LCAweDU3NjAsIDB4QTRDMywgMHhBNEMzLCAweDU3NjEsIDB4QTRFMywgMHhBNEUzLCAweDU3NjQsCisgICAgMHhBNEU1LCAweEE0RTUsIDB4NTc2NiwgMHhBNEU3LCAweEE0RTcsIDB4NTc2NSwgMHhBNEVFLCAweEE0RUUsIDB4NTc2MywKKyAgICAweEE1QTEsIDB4QTVBMSwgMHg1NzY4LCAweEE1QTMsIDB4QTVBMywgMHg1NzZBLCAweEE1QTUsIDB4QTVBNSwgMHg1NzcxLAorICAgIDB4QTVBNywgMHhBNUE3LCAweDU3NjksIDB4QTVBOSwgMHhBNUE5LCAweDU3NkYsIDB4QTVDMywgMHhBNUMzLCAweDU3NzAsCisgICAgMHhBNUUzLCAweEE1RTMsIDB4NTc3MywgMHhBNUU1LCAweEE1RTUsIDB4NTc3NSwgMHhBNUU3LCAweEE1RTcsIDB4NTc3NCwKKyAgICAweEE1RUUsIDB4QTVFRSwgMHg1NzcyLCAweEE5NjAsIDB4QTk2MCwgMHg1NzdBLAorfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JLcC1FVUMtSF8yLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JLcC1FVUMtSF8yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmIxNjU5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0dCMS9HQktwLUVVQy1IXzIuY3BwCkBAIC0wLDAgKzEsMTM2NSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0dCS3BfRVVDX0hfMls0MDcwICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDAwMDEsIDB4ODE0MCwgMHg4MTc4LCAweDI3NTgsIDB4ODE3OSwgMHg4MTc5LCAweDIwNTksDQorICAgIDB4ODE3QSwgMHg4MTdFLCAweDI3OTEsIDB4ODE4MCwgMHg4MTg1LCAweDI3OTYsIDB4ODE4NiwgMHg4MTg2LCAweDIxRjEsDQorICAgIDB4ODE4NywgMHg4MUVDLCAweDI3OUMsIDB4ODFFRCwgMHg4MUVELCAweDFGRjIsIDB4ODFFRSwgMHg4MUY1LCAweDI4MDIsDQorICAgIDB4ODFGNiwgMHg4MUY2LCAweDIwNUQsIDB4ODFGNywgMHg4MUZFLCAweDI4MEEsIDB4ODI0MCwgMHg4MjUyLCAweDI4MTIsDQorICAgIDB4ODI1MywgMHg4MjUzLCAweDI2OUMsIDB4ODI1NCwgMHg4MjYxLCAweDI4MjUsIDB4ODI2MiwgMHg4MjYyLCAweDIxQjUsDQorICAgIDB4ODI2MywgMHg4MjczLCAweDI4MzMsIDB4ODI3NCwgMHg4Mjc0LCAweDIyQ0MsIDB4ODI3NSwgMHg4Mjc5LCAweDI4NDQsDQorICAgIDB4ODI3QSwgMHg4MjdBLCAweDIwMTYsIDB4ODI3QiwgMHg4MjdDLCAweDI4NDksIDB4ODI3RCwgMHg4MjdELCAweDFFNjIsDQorICAgIDB4ODI3RSwgMHg4MjdFLCAweDI4NEIsIDB4ODI4MCwgMHg4MjgwLCAweDFGMjAsIDB4ODI4MSwgMHg4MjgyLCAweDI4NEMsDQorICAgIDB4ODI4MywgMHg4MjgzLCAweDIwN0YsIDB4ODI4NCwgMHg4MjhGLCAweDI4NEUsIDB4ODI5MCwgMHg4MjkwLCAweDIwNUMsDQorICAgIDB4ODI5MSwgMHg4MkE0LCAweDI4NUEsIDB4ODJBNSwgMHg4MkE1LCAweDIxOTQsIDB4ODJBNiwgMHg4MkM3LCAweDI4NkUsDQorICAgIDB4ODJDOCwgMHg4MkM4LCAweDFFNjUsIDB4ODJDOSwgMHg4MkM5LCAweDIyODEsIDB4ODJDQSwgMHg4MkUwLCAweDI4OTAsDQorICAgIDB4ODJFMSwgMHg4MkUxLCAweDIyQ0QsIDB4ODJFMiwgMHg4MkUyLCAweDI4QTcsIDB4ODJFMywgMHg4MkUzLCAweDIxMEEsDQorICAgIDB4ODJFNCwgMHg4MkU0LCAweDFFM0UsIDB4ODJFNSwgMHg4MkVDLCAweDI4QTgsIDB4ODJFRCwgMHg4MkVELCAweDI2N0YsDQorICAgIDB4ODJFRSwgMHg4MkYxLCAweDI4QjAsIDB4ODJGMiwgMHg4MkYyLCAweDIyMkUsIDB4ODJGMywgMHg4MkY2LCAweDI4QjQsDQorICAgIDB4ODJGNywgMHg4MkY3LCAweDFFOTYsIDB4ODJGOCwgMHg4MkY4LCAweDIyQ0IsIDB4ODJGOSwgMHg4MkY5LCAweDIyNkMsDQorICAgIDB4ODJGQSwgMHg4MkZBLCAweDI4QjgsIDB4ODJGQiwgMHg4MkZCLCAweDIxMTcsIDB4ODJGQywgMHg4MkZFLCAweDI4QjksDQorICAgIDB4ODM0MCwgMHg4MzQwLCAweDI4QkMsIDB4ODM0MSwgMHg4MzQxLCAweDIwRTgsIDB4ODM0MiwgMHg4MzQ0LCAweDI4QkQsDQorICAgIDB4ODM0NSwgMHg4MzQ1LCAweDIyRDQsIDB4ODM0NiwgMHg4MzQ3LCAweDI4QzAsIDB4ODM0OCwgMHg4MzQ4LCAweDFGQjksDQorICAgIDB4ODM0OSwgMHg4MzRCLCAweDI4QzIsIDB4ODM0QywgMHg4MzRDLCAweDIyRDgsIDB4ODM0RCwgMHg4MzUyLCAweDI4QzUsDQorICAgIDB4ODM1MywgMHg4MzUzLCAweDIwREYsIDB4ODM1NCwgMHg4MzU2LCAweDI4Q0IsIDB4ODM1NywgMHg4MzU3LCAweDIwQzIsDQorICAgIDB4ODM1OCwgMHg4MzVELCAweDI4Q0UsIDB4ODM1RSwgMHg4MzVFLCAweDIxOTUsIDB4ODM1RiwgMHg4MzY0LCAweDI4RDQsDQorICAgIDB4ODM2NSwgMHg4MzY1LCAweDFGQUMsIDB4ODM2NiwgMHg4MzY2LCAweDIyRDMsIDB4ODM2NywgMHg4MzcxLCAweDI4REEsDQorICAgIDB4ODM3MiwgMHg4MzcyLCAweDFGODEsIDB4ODM3MywgMHg4Mzc3LCAweDI4RTUsIDB4ODM3OCwgMHg4Mzc4LCAweDIyMTAsDQorICAgIDB4ODM3OSwgMHg4Mzc5LCAweDI4RUEsIDB4ODM3QSwgMHg4MzdBLCAweDIyQ0YsIDB4ODM3QiwgMHg4MzdCLCAweDI4RUIsDQorICAgIDB4ODM3QywgMHg4MzdDLCAweDIyMTMsIDB4ODM3RCwgMHg4MzdELCAweDI4RUMsIDB4ODM3RSwgMHg4MzdFLCAweDFGRTQsDQorICAgIDB4ODM4MCwgMHg4MzgwLCAweDFGOTAsIDB4ODM4MSwgMHg4Mzg1LCAweDI4RUQsIDB4ODM4NiwgMHg4Mzg2LCAweDIyRDYsDQorICAgIDB4ODM4NywgMHg4Mzg4LCAweDI4RjIsIDB4ODM4OSwgMHg4Mzg5LCAweDIyRDAsIDB4ODM4QSwgMHg4MzhBLCAweDIyQ0UsDQorICAgIDB4ODM4QiwgMHg4MzhDLCAweDI4RjQsIDB4ODM4RCwgMHg4MzhELCAweDI2ODEsIDB4ODM4RSwgMHg4MzkzLCAweDI4RjYsDQorICAgIDB4ODM5NCwgMHg4Mzk0LCAweDFFNzYsIDB4ODM5NSwgMHg4MzlELCAweDI4RkMsIDB4ODM5RSwgMHg4MzlFLCAweDIyMzEsDQorICAgIDB4ODM5RiwgMHg4M0E1LCAweDI5MDUsIDB4ODNBNiwgMHg4M0E2LCAweDFFOTMsIDB4ODNBNywgMHg4M0FBLCAweDI5MEMsDQorICAgIDB4ODNBQiwgMHg4M0FCLCAweDIyRDIsIDB4ODNBQywgMHg4M0FELCAweDI5MTAsIDB4ODNBRSwgMHg4M0FFLCAweDIyRDcsDQorICAgIDB4ODNBRiwgMHg4M0FGLCAweDIyRDUsIDB4ODNCMCwgMHg4M0IwLCAweDIyRDEsIDB4ODNCMSwgMHg4M0I5LCAweDI5MTIsDQorICAgIDB4ODNCQSwgMHg4M0JBLCAweDFFRTUsIDB4ODNCQiwgMHg4M0M4LCAweDI5MUIsIDB4ODNDOSwgMHg4M0M5LCAweDIwMjUsDQorICAgIDB4ODNDQSwgMHg4M0Y1LCAweDI5MjksIDB4ODNGNiwgMHg4M0Y2LCAweDFFQ0YsIDB4ODNGNywgMHg4M0ZFLCAweDI5NTUsDQorICAgIDB4ODQ0MCwgMHg4NDRGLCAweDI5NUQsIDB4ODQ1MCwgMHg4NDUwLCAweDFGRDksIDB4ODQ1MSwgMHg4NDcwLCAweDI5NkQsDQorICAgIDB4ODQ3MSwgMHg4NDcxLCAweDIyQzgsIDB4ODQ3MiwgMHg4NDczLCAweDI5OEQsIDB4ODQ3NCwgMHg4NDc0LCAweDIyNjMsDQorICAgIDB4ODQ3NSwgMHg4NDc2LCAweDI5OEYsIDB4ODQ3NywgMHg4NDc3LCAweDI2ODMsIDB4ODQ3OCwgMHg4NDdFLCAweDI5OTEsDQorICAgIDB4ODQ4MCwgMHg4NDgxLCAweDI5OTgsIDB4ODQ4MiwgMHg4NDgyLCAweDFGMTcsIDB4ODQ4MywgMHg4NDhELCAweDI5OUEsDQorICAgIDB4ODQ4RSwgMHg4NDhFLCAweDFGMkIsIDB4ODQ4RiwgMHg4NDkxLCAweDI5QTUsIDB4ODQ5MiwgMHg4NDkyLCAweDIyQ0EsDQorICAgIDB4ODQ5MywgMHg4NDkzLCAweDFFOTksIDB4ODQ5NCwgMHg4NDlDLCAweDI5QTgsIDB4ODQ5RCwgMHg4NDlELCAweDFGNEYsDQorICAgIDB4ODQ5RSwgMHg4NEEwLCAweDI5QjEsIDB4ODRBMSwgMHg4NEExLCAweDFGQ0YsIDB4ODRBMiwgMHg4NEEyLCAweDIwMzYsDQorICAgIDB4ODRBMywgMHg4NEEzLCAweDFGM0EsIDB4ODRBNCwgMHg4NEE0LCAweDI5QjQsIDB4ODRBNSwgMHg4NEE1LCAweDIyQzksDQorICAgIDB4ODRBNiwgMHg4NEE2LCAweDFGOTksIDB4ODRBNywgMHg4NEE4LCAweDI5QjUsIDB4ODRBOSwgMHg4NEE5LCAweDFGNzUsDQorICAgIDB4ODRBQSwgMHg4NEM0LCAweDI5QjcsIDB4ODRDNSwgMHg4NEM1LCAweDFGQkUsIDB4ODRDNiwgMHg4NEQyLCAweDI5RDIsDQorICAgIDB4ODREMywgMHg4NEQzLCAweDFFQ0QsIDB4ODRENCwgMHg4NEQ0LCAweDI5REYsIDB4ODRENSwgMHg4NEQ1LCAweDIxQTksDQorICAgIDB4ODRENiwgMHg4NEQ2LCAweDI5RTAsIDB4ODRENywgMHg4NEQ3LCAweDIxRTYsIDB4ODREOCwgMHg4NEQ4LCAweDI5RTEsDQorICAgIDB4ODREOSwgMHg4NEQ5LCAweDIxMjcsIDB4ODREQSwgMHg4NERBLCAweDIwMDMsIDB4ODREQiwgMHg4NERDLCAweDI5RTIsDQorICAgIDB4ODRERCwgMHg4NERELCAweDIxMzIsIDB4ODRERSwgMHg4NEU5LCAweDI5RTQsIDB4ODRFQSwgMHg4NEVBLCAweDIzMjMsDQorICAgIDB4ODRFQiwgMHg4NEVELCAweDI5RjAsIDB4ODRFRSwgMHg4NEVFLCAweDIwMTEsIDB4ODRFRiwgMHg4NEYwLCAweDI5RjMsDQorICAgIDB4ODRGMSwgMHg4NEYxLCAweDIwRjUsIDB4ODRGMiwgMHg4NEZFLCAweDI5RjUsIDB4ODU0MCwgMHg4NTUwLCAweDJBMDIsDQorICAgIDB4ODU1MSwgMHg4NTUxLCAweDIyQzUsIDB4ODU1MiwgMHg4NTUyLCAweDFGNUUsIDB4ODU1MywgMHg4NTUzLCAweDJBMTMsDQorICAgIDB4ODU1NCwgMHg4NTU0LCAweDIyQzYsIDB4ODU1NSwgMHg4NTVELCAweDJBMTQsIDB4ODU1RSwgMHg4NTVFLCAweDIwRUYsDQorICAgIDB4ODU1RiwgMHg4NTY1LCAweDJBMUQsIDB4ODU2NiwgMHg4NTY2LCAweDIxRDAsIDB4ODU2NywgMHg4NTdFLCAweDJBMjQsDQorICAgIDB4ODU4MCwgMHg4NTg2LCAweDJBM0MsIDB4ODU4NywgMHg4NTg3LCAweDIyQzEsIDB4ODU4OCwgMHg4NThBLCAweDJBNDMsDQorICAgIDB4ODU4QiwgMHg4NThCLCAweDFFNjQsIDB4ODU4QywgMHg4NTkxLCAweDJBNDYsIDB4ODU5MiwgMHg4NTkyLCAweDIxRjksDQorICAgIDB4ODU5MywgMHg4NTk1LCAweDJBNEMsIDB4ODU5NiwgMHg4NTk2LCAweDIwMTAsIDB4ODU5NywgMHg4NTk3LCAweDJBNEYsDQorICAgIDB4ODU5OCwgMHg4NTk4LCAweDIyQzIsIDB4ODU5OSwgMHg4NUExLCAweDJBNTAsIDB4ODVBMiwgMHg4NUEyLCAweDFFNUEsDQorICAgIDB4ODVBMywgMHg4NUIxLCAweDJBNTksIDB4ODVCMiwgMHg4NUIyLCAweDFFQTIsIDB4ODVCMywgMHg4NUZFLCAweDJBNjgsDQorICAgIDB4ODY0MCwgMHg4NjQ5LCAweDJBQjQsIDB4ODY0QSwgMHg4NjRBLCAweDIzNkQsIDB4ODY0QiwgMHg4NjUzLCAweDJBQkUsDQorICAgIDB4ODY1NCwgMHg4NjU0LCAweDIyNDcsIDB4ODY1NSwgMHg4NjY3LCAweDJBQzcsIDB4ODY2OCwgMHg4NjY4LCAweDIzNkMsDQorICAgIDB4ODY2OSwgMHg4NjdFLCAweDJBREEsIDB4ODY4MCwgMHg4Njk1LCAweDJBRjAsIDB4ODY5NiwgMHg4Njk2LCAweDIxOUMsDQorICAgIDB4ODY5NywgMHg4Njk4LCAweDJCMDYsIDB4ODY5OSwgMHg4Njk5LCAweDIwQzksIDB4ODY5QSwgMHg4NkEwLCAweDJCMDgsDQorICAgIDB4ODZBMSwgMHg4NkExLCAweDIxRjAsIDB4ODZBMiwgMHg4NkM5LCAweDJCMEYsIDB4ODZDQSwgMHg4NkNBLCAweDIxMEIsDQorICAgIDB4ODZDQiwgMHg4NkNCLCAweDJCMzcsIDB4ODZDQywgMHg4NkNDLCAweDIwREUsIDB4ODZDRCwgMHg4NkNELCAweDJCMzgsDQorICAgIDB4ODZDRSwgMHg4NkNFLCAweDFFQUEsIDB4ODZDRiwgMHg4NkQwLCAweDJCMzksIDB4ODZEMSwgMHg4NkQxLCAweDIyMkMsDQorICAgIDB4ODZEMiwgMHg4NkRCLCAweDJCM0IsIDB4ODZEQywgMHg4NkRDLCAweDIwRDgsIDB4ODZERCwgMHg4NkRELCAweDIyQzAsDQorICAgIDB4ODZERSwgMHg4NkUwLCAweDJCNDUsIDB4ODZFMSwgMHg4NkUxLCAweDIwNkYsIDB4ODZFMiwgMHg4NkU3LCAweDJCNDgsDQorICAgIDB4ODZFOCwgMHg4NkU4LCAweDIxQTEsIDB4ODZFOSwgMHg4NkVELCAweDJCNEUsIDB4ODZFRSwgMHg4NkVFLCAweDIzNzksDQorICAgIDB4ODZFRiwgMHg4NkYzLCAweDJCNTMsIDB4ODZGNCwgMHg4NkY0LCAweDIzNzIsIDB4ODZGNSwgMHg4NkZFLCAweDJCNTgsDQorICAgIDB4ODc0MCwgMHg4NzQwLCAweDIxNkEsIDB4ODc0MSwgMHg4NzQzLCAweDJCNjIsIDB4ODc0NCwgMHg4NzQ0LCAweDIzN0MsDQorICAgIDB4ODc0NSwgMHg4NzQ4LCAweDJCNjUsIDB4ODc0OSwgMHg4NzQ5LCAweDIwQjAsIDB4ODc0QSwgMHg4NzRBLCAweDJCNjksDQorICAgIDB4ODc0QiwgMHg4NzRCLCAweDIzN0EsIDB4ODc0QywgMHg4NzRDLCAweDFFNzQsIDB4ODc0RCwgMHg4NzRFLCAweDJCNkEsDQorICAgIDB4ODc0RiwgMHg4NzRGLCAweDIzNzcsIDB4ODc1MCwgMHg4NzU2LCAweDJCNkMsIDB4ODc1NywgMHg4NzU3LCAweDFGNEMsDQorICAgIDB4ODc1OCwgMHg4NzU5LCAweDJCNzMsIDB4ODc1QSwgMHg4NzVBLCAweDIzNzgsIDB4ODc1QiwgMHg4NzVCLCAweDIxQ0YsDQorICAgIDB4ODc1QywgMHg4NzVDLCAweDIzNjgsIDB4ODc1RCwgMHg4NzVELCAweDJCNzUsIDB4ODc1RSwgMHg4NzVFLCAweDIzNzEsDQorICAgIDB4ODc1RiwgMHg4NzVGLCAweDJCNzYsIDB4ODc2MCwgMHg4NzYwLCAweDIzNjksIDB4ODc2MSwgMHg4NzY1LCAweDJCNzcsDQorICAgIDB4ODc2NiwgMHg4NzY2LCAweDI2NzQsIDB4ODc2NywgMHg4Nzc5LCAweDJCN0MsIDB4ODc3QSwgMHg4NzdBLCAweDIzNkYsDQorICAgIDB4ODc3QiwgMHg4NzdDLCAweDJCOEYsIDB4ODc3RCwgMHg4NzdELCAweDIzNzAsIDB4ODc3RSwgMHg4NzdFLCAweDJCOTEsDQorICAgIDB4ODc4MCwgMHg4NzgwLCAweDJCOTIsIDB4ODc4MSwgMHg4NzgxLCAweDIzNzYsIDB4ODc4MiwgMHg4NzgyLCAweDIzNzMsDQorICAgIDB4ODc4MywgMHg4Nzg1LCAweDJCOTMsIDB4ODc4NiwgMHg4Nzg2LCAweDIzN0YsIDB4ODc4NywgMHg4Nzg3LCAweDJCOTYsDQorICAgIDB4ODc4OCwgMHg4Nzg4LCAweDIzNzQsIDB4ODc4OSwgMHg4Nzg5LCAweDJCOTcsIDB4ODc4QSwgMHg4NzhBLCAweDIwQjUsDQorICAgIDB4ODc4QiwgMHg4NzhDLCAweDJCOTgsIDB4ODc4RCwgMHg4NzhELCAweDFFREIsIDB4ODc4RSwgMHg4NzhFLCAweDI2NzIsDQorICAgIDB4ODc4RiwgMHg4NzkyLCAweDJCOUEsIDB4ODc5MywgMHg4NzkzLCAweDIzNkUsIDB4ODc5NCwgMHg4Nzk3LCAweDJCOUUsDQorICAgIDB4ODc5OCwgMHg4Nzk4LCAweDIxQjcsIDB4ODc5OSwgMHg4NzlDLCAweDJCQTIsIDB4ODc5RCwgMHg4NzlELCAweDIzNzUsDQorICAgIDB4ODc5RSwgMHg4N0EyLCAweDJCQTYsIDB4ODdBMywgMHg4N0EzLCAweDIzODIsIDB4ODdBNCwgMHg4N0E2LCAweDJCQUIsDQorICAgIDB4ODdBNywgMHg4N0E3LCAweDIwOUUsIDB4ODdBOCwgMHg4N0IyLCAweDJCQUUsIDB4ODdCMywgMHg4N0IzLCAweDIzNkIsDQorICAgIDB4ODdCNCwgMHg4N0I0LCAweDJCQjksIDB4ODdCNSwgMHg4N0I1LCAweDIwMzksIDB4ODdCNiwgMHg4N0JBLCAweDJCQkEsDQorICAgIDB4ODdCQiwgMHg4N0JCLCAweDI2OUYsIDB4ODdCQywgMHg4N0JFLCAweDJCQkYsIDB4ODdCRiwgMHg4N0JGLCAweDIzN0QsDQorICAgIDB4ODdDMCwgMHg4N0MwLCAweDIxRjUsIDB4ODdDMSwgMHg4N0MxLCAweDJCQzIsIDB4ODdDMiwgMHg4N0MyLCAweDIzODEsDQorICAgIDB4ODdDMywgMHg4N0M5LCAweDJCQzMsIDB4ODdDQSwgMHg4N0NBLCAweDIzN0IsIDB4ODdDQiwgMHg4N0NCLCAweDIzN0UsDQorICAgIDB4ODdDQywgMHg4N0NDLCAweDIxQ0MsIDB4ODdDRCwgMHg4N0NFLCAweDJCQ0EsIDB4ODdDRiwgMHg4N0NGLCAweDIyREIsDQorICAgIDB4ODdEMCwgMHg4N0QxLCAweDJCQ0MsIDB4ODdEMiwgMHg4N0QyLCAweDIzNkEsIDB4ODdEMywgMHg4N0QzLCAweDI2ODksDQorICAgIDB4ODdENCwgMHg4N0Q0LCAweDJCQ0UsIDB4ODdENSwgMHg4N0Q1LCAweDI2OTcsIDB4ODdENiwgMHg4N0Q5LCAweDJCQ0YsDQorICAgIDB4ODdEQSwgMHg4N0RBLCAweDIyQTEsIDB4ODdEQiwgMHg4N0Y2LCAweDJCRDMsIDB4ODdGNywgMHg4N0Y3LCAweDIzODMsDQorICAgIDB4ODdGOCwgMHg4N0Y4LCAweDFGM0QsIDB4ODdGOSwgMHg4N0Y5LCAweDJCRUYsIDB4ODdGQSwgMHg4N0ZBLCAweDIxOEYsDQorICAgIDB4ODdGQiwgMHg4N0ZFLCAweDJCRjAsIDB4ODg0MCwgMHg4ODQwLCAweDIyNDYsIDB4ODg0MSwgMHg4ODQxLCAweDIyNDgsDQorICAgIDB4ODg0MiwgMHg4ODQzLCAweDJCRjQsIDB4ODg0NCwgMHg4ODQ0LCAweDIxN0UsIDB4ODg0NSwgMHg4ODQ1LCAweDJCRjYsDQorICAgIDB4ODg0NiwgMHg4ODQ2LCAweDIxODAsIDB4ODg0NywgMHg4ODdFLCAweDJCRjcsIDB4ODg4MCwgMHg4OEI5LCAweDJDMkYsDQorICAgIDB4ODhCQSwgMHg4OEJBLCAweDIzMkEsIDB4ODhCQiwgMHg4OENCLCAweDJDNjksIDB4ODhDQywgMHg4OENDLCAweDIyOEIsDQorICAgIDB4ODhDRCwgMHg4OEQzLCAweDJDN0EsIDB4ODhENCwgMHg4OEQ0LCAweDFGODUsIDB4ODhENSwgMHg4OEQ2LCAweDJDODEsDQorICAgIDB4ODhENywgMHg4OEQ3LCAweDIzMjUsIDB4ODhEOCwgMHg4OERFLCAweDJDODMsIDB4ODhERiwgMHg4OERGLCAweDIzMkMsDQorICAgIDB4ODhFMCwgMHg4OEU0LCAweDJDOEEsIDB4ODhFNSwgMHg4OEU1LCAweDIzMkUsIDB4ODhFNiwgMHg4OEYxLCAweDJDOEYsDQorICAgIDB4ODhGMiwgMHg4OEYyLCAweDIyMDUsIDB4ODhGMywgMHg4OEYzLCAweDFFMzgsIDB4ODhGNCwgMHg4OEY1LCAweDJDOUIsDQorICAgIDB4ODhGNiwgMHg4OEY2LCAweDFFNzMsIDB4ODhGNywgMHg4OEZFLCAweDJDOUQsIDB4ODk0MCwgMHg4OTRBLCAweDJDQTUsDQorICAgIDB4ODk0QiwgMHg4OTRCLCAweDFGRTMsIDB4ODk0QywgMHg4OTRDLCAweDIzMzksIDB4ODk0RCwgMHg4OTRELCAweDJDQjAsDQorICAgIDB4ODk0RSwgMHg4OTRFLCAweDIzMkIsIDB4ODk0RiwgMHg4OTRGLCAweDJDQjEsIDB4ODk1MCwgMHg4OTUwLCAweDIzMkQsDQorICAgIDB4ODk1MSwgMHg4OTUzLCAweDJDQjIsIDB4ODk1NCwgMHg4OTU0LCAweDIxN0YsIDB4ODk1NSwgMHg4OTVDLCAweDJDQjUsDQorICAgIDB4ODk1RCwgMHg4OTVELCAweDIxQTcsIDB4ODk1RSwgMHg4OTVFLCAweDJDQkQsIDB4ODk1RiwgMHg4OTVGLCAweDIzMkYsDQorICAgIDB4ODk2MCwgMHg4OTZDLCAweDJDQkUsIDB4ODk2RCwgMHg4OTZELCAweDFFN0QsIDB4ODk2RSwgMHg4OTcwLCAweDJDQ0IsDQorICAgIDB4ODk3MSwgMHg4OTcxLCAweDIwRDYsIDB4ODk3MiwgMHg4OTdCLCAweDJDQ0UsIDB4ODk3QywgMHg4OTdDLCAweDFFQzIsDQorICAgIDB4ODk3RCwgMHg4OTdFLCAweDJDRDgsIDB4ODk4MCwgMHg4OThBLCAweDJDREEsIDB4ODk4QiwgMHg4OThCLCAweDIyQjIsDQorICAgIDB4ODk4QywgMHg4OTk4LCAweDJDRTUsIDB4ODk5OSwgMHg4OTk5LCAweDFFREYsIDB4ODk5QSwgMHg4OTlELCAweDJDRjIsDQorICAgIDB4ODk5RSwgMHg4OTlFLCAweDFFRjksIDB4ODk5RiwgMHg4OUE1LCAweDJDRjYsIDB4ODlBNiwgMHg4OUE2LCAweDIwRDksDQorICAgIDB4ODlBNywgMHg4OUE3LCAweDJDRkQsIDB4ODlBOCwgMHg4OUE4LCAweDFGREQsIDB4ODlBOSwgMHg4OUFFLCAweDJDRkUsDQorICAgIDB4ODlBRiwgMHg4OUFGLCAweDIxNjcsIDB4ODlCMCwgMHg4OUI5LCAweDJEMDQsIDB4ODlCQSwgMHg4OUJBLCAweDIxRUQsDQorICAgIDB4ODlCQiwgMHg4OUJELCAweDJEMEUsIDB4ODlCRSwgMHg4OUJFLCAweDIwMDcsIDB4ODlCRiwgMHg4OUJGLCAweDIzMjYsDQorICAgIDB4ODlDMCwgMHg4OUMwLCAweDIzMjksIDB4ODlDMSwgMHg4OUMzLCAweDJEMTEsIDB4ODlDNCwgMHg4OUM0LCAweDFGNTIsDQorICAgIDB4ODlDNSwgMHg4OUM1LCAweDIwM0IsIDB4ODlDNiwgMHg4OUM2LCAweDIzMjgsIDB4ODlDNywgMHg4OUM3LCAweDJEMTQsDQorICAgIDB4ODlDOCwgMHg4OUM4LCAweDIzMjcsIDB4ODlDOSwgMHg4OUNELCAweDJEMTUsIDB4ODlDRSwgMHg4OUNFLCAweDFFMkIsDQorICAgIDB4ODlDRiwgMHg4OUQwLCAweDJEMUEsIDB4ODlEMSwgMHg4OUQxLCAweDIyQUUsIDB4ODlEMiwgMHg4OUQ3LCAweDJEMUMsDQorICAgIDB4ODlEOCwgMHg4OUQ4LCAweDFGNDksIDB4ODlEOSwgMHg4OURBLCAweDJEMjIsIDB4ODlEQiwgMHg4OURCLCAweDIxMzgsDQorICAgIDB4ODlEQywgMHg4OUYzLCAweDJEMjQsIDB4ODlGNCwgMHg4OUY0LCAweDIwODEsIDB4ODlGNSwgMHg4OUZFLCAweDJEM0MsDQorICAgIDB4OEE0MCwgMHg4QTQwLCAweDJENDYsIDB4OEE0MSwgMHg4QTQxLCAweDFGN0MsIDB4OEE0MiwgMHg4QTU4LCAweDJENDcsDQorICAgIDB4OEE1OSwgMHg4QTU5LCAweDIzNUIsIDB4OEE1QSwgMHg4QTVBLCAweDFFREUsIDB4OEE1QiwgMHg4QTVCLCAweDJENUUsDQorICAgIDB4OEE1QywgMHg4QTVDLCAweDFGQTIsIDB4OEE1RCwgMHg4QTVELCAweDJENUYsIDB4OEE1RSwgMHg4QTVFLCAweDFFRkEsDQorICAgIDB4OEE1RiwgMHg4QTc4LCAweDJENjAsIDB4OEE3OSwgMHg4QTc5LCAweDIyQUQsIDB4OEE3QSwgMHg4QTdFLCAweDJEN0EsDQorICAgIDB4OEE4MCwgMHg4QUUzLCAweDJEN0YsIDB4OEFFNCwgMHg4QUU0LCAweDIwM0YsIDB4OEFFNSwgMHg4QUZFLCAweDJERTMsDQorICAgIDB4OEI0MCwgMHg4QjQzLCAweDJERkQsIDB4OEI0NCwgMHg4QjQ0LCAweDFGMEUsIDB4OEI0NSwgMHg4QjQ4LCAweDJFMDEsDQorICAgIDB4OEI0OSwgMHg4QjQ5LCAweDIzRjksIDB4OEI0QSwgMHg4Qjc5LCAweDJFMDUsIDB4OEI3QSwgMHg4QjdBLCAweDIzRkMsDQorICAgIDB4OEI3QiwgMHg4QjdFLCAweDJFMzUsIDB4OEI4MCwgMHg4QjhCLCAweDJFMzksIDB4OEI4QywgMHg4QjhDLCAweDIwNjksDQorICAgIDB4OEI4RCwgMHg4QjlELCAweDJFNDUsIDB4OEI5RSwgMHg4QjlFLCAweDIzRjcsIDB4OEI5RiwgMHg4QkIyLCAweDJFNTYsDQorICAgIDB4OEJCMywgMHg4QkIzLCAweDIzRjYsIDB4OEJCNCwgMHg4QkI4LCAweDJFNkEsIDB4OEJCOSwgMHg4QkI5LCAweDIzRkQsDQorICAgIDB4OEJCQSwgMHg4QkJELCAweDJFNkYsIDB4OEJCRSwgMHg4QkJFLCAweDIzRjgsIDB4OEJCRiwgMHg4QkM1LCAweDJFNzMsDQorICAgIDB4OEJDNiwgMHg4QkM2LCAweDIzRkEsIDB4OEJDNywgMHg4QkM3LCAweDJFN0EsIDB4OEJDOCwgMHg4QkM4LCAweDIzRkUsDQorICAgIDB4OEJDOSwgMHg4QkM5LCAweDFGQTgsIDB4OEJDQSwgMHg4QkQzLCAweDJFN0IsIDB4OEJENCwgMHg4QkQ0LCAweDI0MDEsDQorICAgIDB4OEJENSwgMHg4QkRCLCAweDJFODUsIDB4OEJEQywgMHg4QkRDLCAweDIzRkYsIDB4OEJERCwgMHg4QkU0LCAweDJFOEMsDQorICAgIDB4OEJFNSwgMHg4QkU1LCAweDI0MDAsIDB4OEJFNiwgMHg4QkVBLCAweDJFOTQsIDB4OEJFQiwgMHg4QkVCLCAweDIyMjEsDQorICAgIDB4OEJFQywgMHg4QkVGLCAweDJFOTksIDB4OEJGMCwgMHg4QkYwLCAweDIxMjIsIDB4OEJGMSwgMHg4QkZFLCAweDJFOUQsDQorICAgIDB4OEM0MCwgMHg4QzQzLCAweDJFQUIsIDB4OEM0NCwgMHg4QzQ0LCAweDIzRkIsIDB4OEM0NSwgMHg4QzRFLCAweDJFQUYsDQorICAgIDB4OEM0RiwgMHg4QzRGLCAweDIxNUEsIDB4OEM1MCwgMHg4QzU2LCAweDJFQjksIDB4OEM1NywgMHg4QzU3LCAweDIxRTUsDQorICAgIDB4OEM1OCwgMHg4QzVCLCAweDJFQzAsIDB4OEM1QywgMHg4QzVDLCAweDIwNTcsIDB4OEM1RCwgMHg4QzdFLCAweDJFQzQsDQorICAgIDB4OEM4MCwgMHg4QzhBLCAweDJFRTYsIDB4OEM4QiwgMHg4QzhCLCAweDIwRTUsIDB4OEM4QywgMHg4QzhDLCAweDJFRjEsDQorICAgIDB4OEM4RCwgMHg4QzhELCAweDIxMkYsIDB4OEM4RSwgMHg4QzhFLCAweDIwQTMsIDB4OEM4RiwgMHg4QzhGLCAweDIxMjEsDQorICAgIDB4OEM5MCwgMHg4QzkwLCAweDJFRjIsIDB4OEM5MSwgMHg4QzkxLCAweDIxRDQsIDB4OEM5MiwgMHg4QzkyLCAweDFGRTUsDQorICAgIDB4OEM5MywgMHg4Qzk4LCAweDJFRjMsIDB4OEM5OSwgMHg4Qzk5LCAweDFFOEEsIDB4OEM5QSwgMHg4QzlBLCAweDFFMzcsDQorICAgIDB4OEM5QiwgMHg4Q0ExLCAweDJFRjksIDB4OENBMiwgMHg4Q0EyLCAweDFGOUUsIDB4OENBMywgMHg4Q0EzLCAweDIyQTYsDQorICAgIDB4OENBNCwgMHg4Q0E0LCAweDIxRTgsIDB4OENBNSwgMHg4Q0E1LCAweDJGMDAsIDB4OENBNiwgMHg4Q0E2LCAweDFFREEsDQorICAgIDB4OENBNywgMHg4Q0E3LCAweDFFQjksIDB4OENBOCwgMHg4Q0JGLCAweDJGMDEsIDB4OENDMCwgMHg4Q0MwLCAweDIzNUMsDQorICAgIDB4OENDMSwgMHg4Q0QxLCAweDJGMTksIDB4OENEMiwgMHg4Q0QyLCAweDIwNTAsIDB4OENEMywgMHg4Q0QzLCAweDFFNjcsDQorICAgIDB4OENENCwgMHg4Q0Q0LCAweDJGMkEsIDB4OENENSwgMHg4Q0Q1LCAweDIzRjQsIDB4OENENiwgMHg4Q0Q4LCAweDJGMkIsDQorICAgIDB4OENEOSwgMHg4Q0Q5LCAweDIxM0UsIDB4OENEQSwgMHg4Q0Y4LCAweDJGMkUsIDB4OENGOSwgMHg4Q0Y5LCAweDFGMTYsDQorICAgIDB4OENGQSwgMHg4Q0ZFLCAweDJGNEQsIDB4OEQ0MCwgMHg4RDcyLCAweDJGNTIsIDB4OEQ3MywgMHg4RDczLCAweDIzODksDQorICAgIDB4OEQ3NCwgMHg4RDc0LCAweDJGODUsIDB4OEQ3NSwgMHg4RDc1LCAweDFFQjcsIDB4OEQ3NiwgMHg4RDdBLCAweDJGODYsDQorICAgIDB4OEQ3QiwgMHg4RDdCLCAweDIxQjQsIDB4OEQ3QywgMHg4RDdFLCAweDJGOEIsIDB4OEQ4MCwgMHg4RDg3LCAweDJGOEUsDQorICAgIDB4OEQ4OCwgMHg4RDg4LCAweDIzOEYsIDB4OEQ4OSwgMHg4RDhFLCAweDJGOTYsIDB4OEQ4RiwgMHg4RDhGLCAweDFGMUEsDQorICAgIDB4OEQ5MCwgMHg4RDlELCAweDJGOUMsIDB4OEQ5RSwgMHg4RDlFLCAweDIzOEIsIDB4OEQ5RiwgMHg4REI4LCAweDJGQUEsDQorICAgIDB4OERCOSwgMHg4REI5LCAweDIzOEEsIDB4OERCQSwgMHg4REUxLCAweDJGQzQsIDB4OERFMiwgMHg4REUyLCAweDIzOTEsDQorICAgIDB4OERFMywgMHg4REUzLCAweDJGRUMsIDB4OERFNCwgMHg4REU0LCAweDIyNzEsIDB4OERFNSwgMHg4REU2LCAweDJGRUQsDQorICAgIDB4OERFNywgMHg4REU3LCAweDIzODgsIDB4OERFOCwgMHg4REY2LCAweDJGRUYsIDB4OERGNywgMHg4REY3LCAweDIzOEUsDQorICAgIDB4OERGOCwgMHg4REZELCAweDJGRkUsIDB4OERGRSwgMHg4REZFLCAweDIzOEQsIDB4OEU0MCwgMHg4RTQ1LCAweDMwMDQsDQorICAgIDB4OEU0NiwgMHg4RTQ2LCAweDIzOEMsIDB4OEU0NywgMHg4RTU1LCAweDMwMEEsIDB4OEU1NiwgMHg4RTU2LCAweDIzOTAsDQorICAgIDB4OEU1NywgMHg4RTU3LCAweDMwMTksIDB4OEU1OCwgMHg4RTU4LCAweDIwMzMsIDB4OEU1OSwgMHg4RTU5LCAweDMwMUEsDQorICAgIDB4OEU1QSwgMHg4RTVBLCAweDIyM0MsIDB4OEU1QiwgMHg4RTY3LCAweDMwMUIsIDB4OEU2OCwgMHg4RTY4LCAweDFGRTksDQorICAgIDB4OEU2OSwgMHg4RTZELCAweDMwMjgsIDB4OEU2RSwgMHg4RTZFLCAweDIwNTUsIDB4OEU2RiwgMHg4RTZGLCAweDMwMkQsDQorICAgIDB4OEU3MCwgMHg4RTcwLCAweDIzOTIsIDB4OEU3MSwgMHg4RTdFLCAweDMwMkUsIDB4OEU4MCwgMHg4RTgwLCAweDIzMjQsDQorICAgIDB4OEU4MSwgMHg4RTlBLCAweDMwM0MsIDB4OEU5QiwgMHg4RTlCLCAweDIxNDMsIDB4OEU5QywgMHg4RTlFLCAweDMwNTYsDQorICAgIDB4OEU5RiwgMHg4RTlGLCAweDIxMjksIDB4OEVBMCwgMHg4RUEzLCAweDMwNTksIDB4OEVBNCwgMHg4RUE0LCAweDIyNzcsDQorICAgIDB4OEVBNSwgMHg4RUE2LCAweDMwNUQsIDB4OEVBNywgMHg4RUE3LCAweDFFQTcsIDB4OEVBOCwgMHg4RUFCLCAweDMwNUYsDQorICAgIDB4OEVBQywgMHg4RUFDLCAweDIyODUsIDB4OEVBRCwgMHg4RUFELCAweDMwNjMsIDB4OEVBRSwgMHg4RUFFLCAweDIzODQsDQorICAgIDB4OEVBRiwgMHg4RUJDLCAweDMwNjQsIDB4OEVCRCwgMHg4RUJELCAweDIzODcsIDB4OEVCRSwgMHg4RUJFLCAweDIzODYsDQorICAgIDB4OEVCRiwgMHg4RUMyLCAweDMwNzIsIDB4OEVDMywgMHg4RUMzLCAweDIyOTAsIDB4OEVDNCwgMHg4RUM0LCAweDMwNzYsDQorICAgIDB4OEVDNSwgMHg4RUM1LCAweDFFNDQsIDB4OEVDNiwgMHg4RUNDLCAweDMwNzcsIDB4OEVDRCwgMHg4RUNELCAweDFFMzIsDQorICAgIDB4OEVDRSwgMHg4RUNFLCAweDIzODUsIDB4OEVDRiwgMHg4RUQ1LCAweDMwN0UsIDB4OEVENiwgMHg4RUQ2LCAweDFGMTMsDQorICAgIDB4OEVENywgMHg4RUQ3LCAweDFGNzMsIDB4OEVEOCwgMHg4RUVCLCAweDMwODUsIDB4OEVFQywgMHg4RUVDLCAweDFGRTAsDQorICAgIDB4OEVFRCwgMHg4RUZFLCAweDMwOTksIDB4OEY0MCwgMHg4RjUxLCAweDMwQUIsIDB4OEY1MiwgMHg4RjUyLCAweDIwODcsDQorICAgIDB4OEY1MywgMHg4RjUzLCAweDFFNzgsIDB4OEY1NCwgMHg4RjU0LCAweDIzQUUsIDB4OEY1NSwgMHg4RjU1LCAweDFFRjYsDQorICAgIDB4OEY1NiwgMHg4RjU2LCAweDFGMzEsIDB4OEY1NywgMHg4RjVDLCAweDMwQkQsIDB4OEY1RCwgMHg4RjVELCAweDIwNDUsDQorICAgIDB4OEY1RSwgMHg4RjYzLCAweDMwQzMsIDB4OEY2NCwgMHg4RjY0LCAweDIxNzgsIDB4OEY2NSwgMHg4RjdFLCAweDMwQzksDQorICAgIDB4OEY4MCwgMHg4Rjg1LCAweDMwRTMsIDB4OEY4NiwgMHg4Rjg2LCAweDIzRjUsIDB4OEY4NywgMHg4Rjg3LCAweDMwRTksDQorICAgIDB4OEY4OCwgMHg4Rjg4LCAweDIyNzUsIDB4OEY4OSwgMHg4Rjk0LCAweDMwRUEsIDB4OEY5NSwgMHg4Rjk1LCAweDI2NkUsDQorICAgIDB4OEY5NiwgMHg4Rjk2LCAweDMwRjYsIDB4OEY5NywgMHg4Rjk3LCAweDFFQjAsIDB4OEY5OCwgMHg4RjlBLCAweDMwRjcsDQorICAgIDB4OEY5QiwgMHg4RjlCLCAweDIwODMsIDB4OEY5QywgMHg4RjlDLCAweDMwRkEsIDB4OEY5RCwgMHg4RjlELCAweDIxODgsDQorICAgIDB4OEY5RSwgMHg4RkEwLCAweDMwRkIsIDB4OEZBMSwgMHg4RkExLCAweDI2N0MsIDB4OEZBMiwgMHg4RkJDLCAweDMwRkUsDQorICAgIDB4OEZCRCwgMHg4RkJELCAweDFGQzUsIDB4OEZCRSwgMHg4RkMzLCAweDMxMTksIDB4OEZDNCwgMHg4RkM0LCAweDFFQTEsDQorICAgIDB4OEZDNSwgMHg4RkM1LCAweDMxMUYsIDB4OEZDNiwgMHg4RkM2LCAweDIzOTMsIDB4OEZDNywgMHg4RkNDLCAweDMxMjAsDQorICAgIDB4OEZDRCwgMHg4RkNELCAweDFGMEIsIDB4OEZDRSwgMHg4RkQ3LCAweDMxMjYsIDB4OEZEOCwgMHg4RkQ4LCAweDFFN0MsDQorICAgIDB4OEZEOSwgMHg4RkZFLCAweDMxMzAsIDB4OTA0MCwgMHg5MDdFLCAweDMxNTYsIDB4OTA4MCwgMHg5MDlDLCAweDMxOTUsDQorICAgIDB4OTA5RCwgMHg5MDlELCAweDIzQjQsIDB4OTA5RSwgMHg5MDlFLCAweDIwN0UsIDB4OTA5RiwgMHg5MEI5LCAweDMxQjIsDQorICAgIDB4OTBCQSwgMHg5MEJBLCAweDFFRTMsIDB4OTBCQiwgMHg5MEJGLCAweDMxQ0QsIDB4OTBDMCwgMHg5MEMwLCAweDIwOTUsDQorICAgIDB4OTBDMSwgMHg5MEMxLCAweDIzQkIsIDB4OTBDMiwgMHg5MEM0LCAweDMxRDIsIDB4OTBDNSwgMHg5MEM1LCAweDIzQjksDQorICAgIDB4OTBDNiwgMHg5MERBLCAweDMxRDUsIDB4OTBEQiwgMHg5MERCLCAweDFFMjgsIDB4OTBEQywgMHg5MERDLCAweDIzQkQsDQorICAgIDB4OTBERCwgMHg5MEVDLCAweDMxRUEsIDB4OTBFRCwgMHg5MEVELCAweDIzQjUsIDB4OTBFRSwgMHg5MEVGLCAweDMxRkEsDQorICAgIDB4OTBGMCwgMHg5MEYwLCAweDIzQkEsIDB4OTBGMSwgMHg5MEY2LCAweDMxRkMsIDB4OTBGNywgMHg5MEY3LCAweDIzQjMsDQorICAgIDB4OTBGOCwgMHg5MEZFLCAweDMyMDIsIDB4OTE0MCwgMHg5MTQxLCAweDMyMDksIDB4OTE0MiwgMHg5MTQyLCAweDIxNjIsDQorICAgIDB4OTE0MywgMHg5MTRBLCAweDMyMEIsIDB4OTE0QiwgMHg5MTRCLCAweDFFNUUsIDB4OTE0QywgMHg5MTRDLCAweDMyMTMsDQorICAgIDB4OTE0RCwgMHg5MTRELCAweDFFNUQsIDB4OTE0RSwgMHg5MTUwLCAweDMyMTQsIDB4OTE1MSwgMHg5MTUxLCAweDIzQjcsDQorICAgIDB4OTE1MiwgMHg5MTUzLCAweDMyMTcsIDB4OTE1NCwgMHg5MTU0LCAweDFGMkYsIDB4OTE1NSwgMHg5MTU1LCAweDI0REYsDQorICAgIDB4OTE1NiwgMHg5MTU4LCAweDMyMTksIDB4OTE1OSwgMHg5MTU5LCAweDIzQjIsIDB4OTE1QSwgMHg5MTVBLCAweDIxNEUsDQorICAgIDB4OTE1QiwgMHg5MTVDLCAweDMyMUMsIDB4OTE1RCwgMHg5MTVELCAweDIwNTIsIDB4OTE1RSwgMHg5MTYwLCAweDMyMUUsDQorICAgIDB4OTE2MSwgMHg5MTYxLCAweDIzQkMsIDB4OTE2MiwgMHg5MTYyLCAweDMyMjEsIDB4OTE2MywgMHg5MTYzLCAweDIwRUIsDQorICAgIDB4OTE2NCwgMHg5MTZELCAweDMyMjIsIDB4OTE2RSwgMHg5MTZFLCAweDIyMzIsIDB4OTE2RiwgMHg5MTc1LCAweDMyMkMsDQorICAgIDB4OTE3NiwgMHg5MTc2LCAweDFFM0YsIDB4OTE3NywgMHg5MTc5LCAweDMyMzMsIDB4OTE3QSwgMHg5MTdBLCAweDIwMUIsDQorICAgIDB4OTE3QiwgMHg5MTdCLCAweDIwQkMsIDB4OTE3QywgMHg5MTdDLCAweDIzQkUsIDB4OTE3RCwgMHg5MTdFLCAweDMyMzYsDQorICAgIDB4OTE4MCwgMHg5MTgzLCAweDMyMzgsIDB4OTE4NCwgMHg5MTg0LCAweDFFQUUsIDB4OTE4NSwgMHg5MThDLCAweDMyM0MsDQorICAgIDB4OTE4RCwgMHg5MThELCAweDFFRkIsIDB4OTE4RSwgMHg5MTkwLCAweDMyNDQsIDB4OTE5MSwgMHg5MTkxLCAweDIwODksDQorICAgIDB4OTE5MiwgMHg5MTkyLCAweDMyNDcsIDB4OTE5MywgMHg5MTkzLCAweDIzQjEsIDB4OTE5NCwgMHg5MTk2LCAweDMyNDgsDQorICAgIDB4OTE5NywgMHg5MTk3LCAweDIxQzQsIDB4OTE5OCwgMHg5MTlBLCAweDMyNEIsIDB4OTE5QiwgMHg5MTlCLCAweDIyMTQsDQorICAgIDB4OTE5QywgMHg5MUE4LCAweDMyNEUsIDB4OTFBOSwgMHg5MUE5LCAweDFGREUsIDB4OTFBQSwgMHg5MUFBLCAweDIyMjMsDQorICAgIDB4OTFBQiwgMHg5MUFCLCAweDIzQjYsIDB4OTFBQywgMHg5MUI5LCAweDMyNUIsIDB4OTFCQSwgMHg5MUJBLCAweDI2OEMsDQorICAgIDB4OTFCQiwgMHg5MUJCLCAweDI0REUsIDB4OTFCQywgMHg5MUJFLCAweDMyNjksIDB4OTFCRiwgMHg5MUJGLCAweDI0RTAsDQorICAgIDB4OTFDMCwgMHg5MUMyLCAweDMyNkMsIDB4OTFDMywgMHg5MUMzLCAweDIzQjgsIDB4OTFDNCwgMHg5MUNDLCAweDMyNkYsDQorICAgIDB4OTFDRCwgMHg5MUNELCAweDFFODEsIDB4OTFDRSwgMHg5MUNGLCAweDMyNzgsIDB4OTFEMCwgMHg5MUQwLCAweDFGRkUsDQorICAgIDB4OTFEMSwgMHg5MUQxLCAweDFGNTEsIDB4OTFEMiwgMHg5MUQyLCAweDIxRTEsIDB4OTFEMywgMHg5MUQzLCAweDMyN0EsDQorICAgIDB4OTFENCwgMHg5MUQ0LCAweDIzQjAsIDB4OTFENSwgMHg5MUQ1LCAweDMyN0IsIDB4OTFENiwgMHg5MUQ2LCAweDFGQ0UsDQorICAgIDB4OTFENywgMHg5MUQ3LCAweDMyN0MsIDB4OTFEOCwgMHg5MUQ4LCAweDIxMUUsIDB4OTFEOSwgMHg5MUQ5LCAweDIwMjEsDQorICAgIDB4OTFEQSwgMHg5MURFLCAweDMyN0QsIDB4OTFERiwgMHg5MURGLCAweDI0RTEsIDB4OTFFMCwgMHg5MUUxLCAweDMyODIsDQorICAgIDB4OTFFMiwgMHg5MUUyLCAweDI0QTMsIDB4OTFFMywgMHg5MUU5LCAweDMyODQsIDB4OTFFQSwgMHg5MUVBLCAweDI0QTQsDQorICAgIDB4OTFFQiwgMHg5MUVGLCAweDMyOEIsIDB4OTFGMCwgMHg5MUYwLCAweDIyNzMsIDB4OTFGMSwgMHg5MUYxLCAweDMyOTAsDQorICAgIDB4OTFGMiwgMHg5MUYyLCAweDIxQjAsIDB4OTFGMywgMHg5MUZFLCAweDMyOTEsIDB4OTI0MCwgMHg5MjdFLCAweDMyOUQsDQorICAgIDB4OTI4MCwgMHg5MkI1LCAweDMyREMsIDB4OTJCNiwgMHg5MkI2LCAweDIxRDEsIDB4OTJCNywgMHg5MkNELCAweDMzMTIsDQorICAgIDB4OTJDRSwgMHg5MkNFLCAweDIxMUMsIDB4OTJDRiwgMHg5MkNGLCAweDMzMjksIDB4OTJEMCwgMHg5MkQwLCAweDIzNUQsDQorICAgIDB4OTJEMSwgMHg5MkQzLCAweDMzMkEsIDB4OTJENCwgMHg5MkQ0LCAweDI2ODIsIDB4OTJENSwgMHg5MkRFLCAweDMzMkQsDQorICAgIDB4OTJERiwgMHg5MkRGLCAweDIxMEQsIDB4OTJFMCwgMHg5MkUwLCAweDIwNUEsIDB4OTJFMSwgMHg5MkZELCAweDMzMzcsDQorICAgIDB4OTJGRSwgMHg5MkZFLCAweDFGOEQsIDB4OTM0MCwgMHg5MzRGLCAweDMzNTQsIDB4OTM1MCwgMHg5MzUwLCAweDIxRkYsDQorICAgIDB4OTM1MSwgMHg5MzVDLCAweDMzNjQsIDB4OTM1RCwgMHg5MzVELCAweDFGNTgsIDB4OTM1RSwgMHg5MzZGLCAweDMzNzAsDQorICAgIDB4OTM3MCwgMHg5MzcwLCAweDIxNUIsIDB4OTM3MSwgMHg5Mzc1LCAweDMzODIsIDB4OTM3NiwgMHg5Mzc2LCAweDFFQjYsDQorICAgIDB4OTM3NywgMHg5MzdFLCAweDMzODcsIDB4OTM4MCwgMHg5MzhCLCAweDMzOEYsIDB4OTM4QywgMHg5MzhDLCAweDIwREIsDQorICAgIDB4OTM4RCwgMHg5MzlDLCAweDMzOUIsIDB4OTM5RCwgMHg5MzlELCAweDIzNjAsIDB4OTM5RSwgMHg5M0E0LCAweDMzQUIsDQorICAgIDB4OTNBNSwgMHg5M0E1LCAweDIzNjEsIDB4OTNBNiwgMHg5M0E2LCAweDMzQjIsIDB4OTNBNywgMHg5M0E3LCAweDIwNDAsDQorICAgIDB4OTNBOCwgMHg5M0IzLCAweDMzQjMsIDB4OTNCNCwgMHg5M0I0LCAweDIyOEUsIDB4OTNCNSwgMHg5M0I3LCAweDMzQkYsDQorICAgIDB4OTNCOCwgMHg5M0I4LCAweDFGREYsIDB4OTNCOSwgMHg5M0JBLCAweDMzQzIsIDB4OTNCQiwgMHg5M0JCLCAweDIzNUUsDQorICAgIDB4OTNCQywgMHg5M0JDLCAweDMzQzQsIDB4OTNCRCwgMHg5M0JELCAweDFFNkEsIDB4OTNCRSwgMHg5M0M1LCAweDMzQzUsDQorICAgIDB4OTNDNiwgMHg5M0M2LCAweDIwMDIsIDB4OTNDNywgMHg5M0NFLCAweDMzQ0QsIDB4OTNDRiwgMHg5M0NGLCAweDIwOTMsDQorICAgIDB4OTNEMCwgMHg5M0Q2LCAweDMzRDUsIDB4OTNENywgMHg5M0Q3LCAweDIzNUYsIDB4OTNEOCwgMHg5M0RBLCAweDMzREMsDQorICAgIDB4OTNEQiwgMHg5M0RCLCAweDFFQUMsIDB4OTNEQywgMHg5M0RDLCAweDFFNTQsIDB4OTNERCwgMHg5M0UwLCAweDMzREYsDQorICAgIDB4OTNFMSwgMHg5M0UxLCAweDFGMDgsIDB4OTNFMiwgMHg5M0UzLCAweDMzRTMsIDB4OTNFNCwgMHg5M0U0LCAweDIwQzAsDQorICAgIDB4OTNFNSwgMHg5M0U1LCAweDIzNjIsIDB4OTNFNiwgMHg5M0U4LCAweDMzRTUsIDB4OTNFOSwgMHg5M0U5LCAweDIxNjAsDQorICAgIDB4OTNFQSwgMHg5M0VBLCAweDMzRTgsIDB4OTNFQiwgMHg5M0VCLCAweDIxOUQsIDB4OTNFQywgMHg5M0VDLCAweDFGOEUsDQorICAgIDB4OTNFRCwgMHg5M0VELCAweDIyMkQsIDB4OTNFRSwgMHg5M0VFLCAweDMzRTksIDB4OTNFRiwgMHg5M0VGLCAweDIwNDcsDQorICAgIDB4OTNGMCwgMHg5M0YwLCAweDMzRUEsIDB4OTNGMSwgMHg5M0YxLCAweDIyNjIsIDB4OTNGMiwgMHg5M0YzLCAweDMzRUIsDQorICAgIDB4OTNGNCwgMHg5M0Y0LCAweDFGNjcsIDB4OTNGNSwgMHg5M0Y1LCAweDFFQjIsIDB4OTNGNiwgMHg5M0Y5LCAweDMzRUQsDQorICAgIDB4OTNGQSwgMHg5M0ZBLCAweDFFQTksIDB4OTNGQiwgMHg5M0ZELCAweDMzRjEsIDB4OTNGRSwgMHg5M0ZFLCAweDFGQ0MsDQorICAgIDB4OTQ0MCwgMHg5NDQzLCAweDMzRjQsIDB4OTQ0NCwgMHg5NDQ0LCAweDFGNzIsIDB4OTQ0NSwgMHg5NDRDLCAweDMzRjgsDQorICAgIDB4OTQ0RCwgMHg5NDRELCAweDIwOTgsIDB4OTQ0RSwgMHg5NDRGLCAweDM0MDAsIDB4OTQ1MCwgMHg5NDUwLCAweDFFNTIsDQorICAgIDB4OTQ1MSwgMHg5NDUxLCAweDIwQTQsIDB4OTQ1MiwgMHg5NDUyLCAweDFGMUMsIDB4OTQ1MywgMHg5NDUzLCAweDIyOEYsDQorICAgIDB4OTQ1NCwgMHg5NDU0LCAweDM0MDIsIDB4OTQ1NSwgMHg5NDU1LCAweDFGRUQsIDB4OTQ1NiwgMHg5NDU3LCAweDM0MDMsDQorICAgIDB4OTQ1OCwgMHg5NDU4LCAweDIzNjUsIDB4OTQ1OSwgMHg5NDVBLCAweDM0MDUsIDB4OTQ1QiwgMHg5NDVCLCAweDFFMkQsDQorICAgIDB4OTQ1QywgMHg5NDVDLCAweDIxNTIsIDB4OTQ1RCwgMHg5NDVELCAweDIzNjYsIDB4OTQ1RSwgMHg5NDVFLCAweDM0MDcsDQorICAgIDB4OTQ1RiwgMHg5NDVGLCAweDIwRkEsIDB4OTQ2MCwgMHg5NDYzLCAweDM0MDgsIDB4OTQ2NCwgMHg5NDY0LCAweDIzNjMsDQorICAgIDB4OTQ2NSwgMHg5NDY1LCAweDM0MEMsIDB4OTQ2NiwgMHg5NDY2LCAweDIwOUEsIDB4OTQ2NywgMHg5NDZELCAweDM0MEQsDQorICAgIDB4OTQ2RSwgMHg5NDZFLCAweDIwM0MsIDB4OTQ2RiwgMHg5NDcxLCAweDM0MTQsIDB4OTQ3MiwgMHg5NDcyLCAweDFGRjYsDQorICAgIDB4OTQ3MywgMHg5NDczLCAweDM0MTcsIDB4OTQ3NCwgMHg5NDc0LCAweDIzNjQsIDB4OTQ3NSwgMHg5NDc1LCAweDM0MTgsDQorICAgIDB4OTQ3NiwgMHg5NDc2LCAweDFFNjksIDB4OTQ3NywgMHg5NDc3LCAweDM0MTksIDB4OTQ3OCwgMHg5NDc4LCAweDIzNjcsDQorICAgIDB4OTQ3OSwgMHg5NDc5LCAweDM0MUEsIDB4OTQ3QSwgMHg5NDdBLCAweDIxMUQsIDB4OTQ3QiwgMHg5NDdFLCAweDM0MUIsDQorICAgIDB4OTQ4MCwgMHg5NDgwLCAweDIyNTksIDB4OTQ4MSwgMHg5NDgxLCAweDIwNTYsIDB4OTQ4MiwgMHg5NDgyLCAweDIxNjMsDQorICAgIDB4OTQ4MywgMHg5NDg2LCAweDM0MUYsIDB4OTQ4NywgMHg5NDg3LCAweDFGQTksIDB4OTQ4OCwgMHg5NDg4LCAweDFGRkMsDQorICAgIDB4OTQ4OSwgMHg5NEEwLCAweDM0MjMsIDB4OTRBMSwgMHg5NEExLCAweDFFMkUsIDB4OTRBMiwgMHg5NEIyLCAweDM0M0IsDQorICAgIDB4OTRCMywgMHg5NEIzLCAweDFFQkMsIDB4OTRCNCwgMHg5NEI0LCAweDM0NEMsIDB4OTRCNSwgMHg5NEI1LCAweDIxNDIsDQorICAgIDB4OTRCNiwgMHg5NEJFLCAweDM0NEQsIDB4OTRCRiwgMHg5NEJGLCAweDIwMUUsIDB4OTRDMCwgMHg5NEMwLCAweDFFNDMsDQorICAgIDB4OTRDMSwgMHg5NENCLCAweDM0NTYsIDB4OTRDQywgMHg5NENDLCAweDI0RDQsIDB4OTRDRCwgMHg5NEQ3LCAweDM0NjEsDQorICAgIDB4OTREOCwgMHg5NEQ4LCAweDIyNkYsIDB4OTREOSwgMHg5NERGLCAweDM0NkMsIDB4OTRFMCwgMHg5NEUwLCAweDFFRDcsDQorICAgIDB4OTRFMSwgMHg5NEZFLCAweDM0NzMsIDB4OTU0MCwgMHg5NTcxLCAweDM0OTEsIDB4OTU3MiwgMHg5NTcyLCAweDIxMkQsDQorICAgIDB4OTU3MywgMHg5NTdFLCAweDM0QzMsIDB4OTU4MCwgMHg5NTgyLCAweDM0Q0YsIDB4OTU4MywgMHg5NTgzLCAweDIyOUIsDQorICAgIDB4OTU4NCwgMHg5NTlELCAweDM0RDIsIDB4OTU5RSwgMHg5NTlFLCAweDIyNTYsIDB4OTU5RiwgMHg5NTlGLCAweDI0QTgsDQorICAgIDB4OTVBMCwgMHg5NUIyLCAweDM0RUMsIDB4OTVCMywgMHg5NUIzLCAweDFFNzksIDB4OTVCNCwgMHg5NUI5LCAweDM0RkYsDQorICAgIDB4OTVCQSwgMHg5NUJBLCAweDIyNUEsIDB4OTVCQiwgMHg5NUNFLCAweDM1MDUsIDB4OTVDRiwgMHg5NUNGLCAweDI0QTcsDQorICAgIDB4OTVEMCwgMHg5NUQwLCAweDM1MTksIDB4OTVEMSwgMHg5NUQxLCAweDI2ODYsIDB4OTVEMiwgMHg5NUQyLCAweDI0QTYsDQorICAgIDB4OTVEMywgMHg5NUQzLCAweDM1MUEsIDB4OTVENCwgMHg5NUQ0LCAweDIxQ0UsIDB4OTVENSwgMHg5NUUwLCAweDM1MUIsDQorICAgIDB4OTVFMSwgMHg5NUUxLCAweDI0QTksIDB4OTVFMiwgMHg5NUU2LCAweDM1MjcsIDB4OTVFNywgMHg5NUU3LCAweDFGRTcsDQorICAgIDB4OTVFOCwgMHg5NUYwLCAweDM1MkMsIDB4OTVGMSwgMHg5NUYxLCAweDIxMTIsIDB4OTVGMiwgMHg5NUY3LCAweDM1MzUsDQorICAgIDB4OTVGOCwgMHg5NUY4LCAweDIxM0MsIDB4OTVGOSwgMHg5NUZELCAweDM1M0IsIDB4OTVGRSwgMHg5NUZFLCAweDFGNUMsDQorICAgIDB4OTY0MCwgMHg5NjU1LCAweDM1NDAsIDB4OTY1NiwgMHg5NjU2LCAweDI0QzQsIDB4OTY1NywgMHg5NjdCLCAweDM1NTYsDQorICAgIDB4OTY3QywgMHg5NjdDLCAweDFFQ0MsIDB4OTY3RCwgMHg5NjdFLCAweDM1N0IsIDB4OTY4MCwgMHg5NkZFLCAweDM1N0QsDQorICAgIDB4OTc0MCwgMHg5NzY2LCAweDM1RkMsIDB4OTc2NywgMHg5NzY3LCAweDI0NkEsIDB4OTc2OCwgMHg5NzZCLCAweDM2MjMsDQorICAgIDB4OTc2QywgMHg5NzZDLCAweDIxNzUsIDB4OTc2RCwgMHg5NzZELCAweDM2MjcsIDB4OTc2RSwgMHg5NzZFLCAweDI0NkQsDQorICAgIDB4OTc2RiwgMHg5NzdFLCAweDM2MjgsIDB4OTc4MCwgMHg5Nzk1LCAweDM2MzgsIDB4OTc5NiwgMHg5Nzk2LCAweDI0NkIsDQorICAgIDB4OTc5NywgMHg5Nzk3LCAweDIyNUYsIDB4OTc5OCwgMHg5NzlDLCAweDM2NEUsIDB4OTc5RCwgMHg5NzlELCAweDFFQ0UsDQorICAgIDB4OTc5RSwgMHg5N0EyLCAweDM2NTMsIDB4OTdBMywgMHg5N0EzLCAweDIyNzIsIDB4OTdBNCwgMHg5N0JFLCAweDM2NTgsDQorICAgIDB4OTdCRiwgMHg5N0JGLCAweDI0NzMsIDB4OTdDMCwgMHg5N0VELCAweDM2NzMsIDB4OTdFRSwgMHg5N0VFLCAweDIxRkUsDQorICAgIDB4OTdFRiwgMHg5N0Y2LCAweDM2QTEsIDB4OTdGNywgMHg5N0Y3LCAweDFFRkUsIDB4OTdGOCwgMHg5N0ZFLCAweDM2QTksDQorICAgIDB4OTg0MCwgMHg5ODQ0LCAweDM2QjAsIDB4OTg0NSwgMHg5ODQ1LCAweDI0NzUsIDB4OTg0NiwgMHg5ODQ4LCAweDM2QjUsDQorICAgIDB4OTg0OSwgMHg5ODQ5LCAweDIyMEEsIDB4OTg0QSwgMHg5ODRFLCAweDM2QjgsIDB4OTg0RiwgMHg5ODRGLCAweDFGNkYsDQorICAgIDB4OTg1MCwgMHg5ODcwLCAweDM2QkQsIDB4OTg3MSwgMHg5ODcxLCAweDI0NjgsIDB4OTg3MiwgMHg5ODcyLCAweDM2REUsDQorICAgIDB4OTg3MywgMHg5ODczLCAweDIxMDAsIDB4OTg3NCwgMHg5ODdFLCAweDM2REYsIDB4OTg4MCwgMHg5ODgwLCAweDM2RUEsDQorICAgIDB4OTg4MSwgMHg5ODgxLCAweDI0NzYsIDB4OTg4MiwgMHg5ODhBLCAweDM2RUIsIDB4OTg4QiwgMHg5ODhCLCAweDFGMjcsDQorICAgIDB4OTg4QywgMHg5ODhDLCAweDIwRDcsIDB4OTg4RCwgMHg5ODlGLCAweDM2RjQsIDB4OThBMCwgMHg5OEEwLCAweDI0N0MsDQorICAgIDB4OThBMSwgMHg5OEE5LCAweDM3MDcsIDB4OThBQSwgMHg5OEFBLCAweDFGQTEsIDB4OThBQiwgMHg5OEI1LCAweDM3MTAsDQorICAgIDB4OThCNiwgMHg5OEI2LCAweDIyQUEsIDB4OThCNywgMHg5OEI3LCAweDIwMDUsIDB4OThCOCwgMHg5OEI5LCAweDM3MUIsDQorICAgIDB4OThCQSwgMHg5OEJBLCAweDI0NkMsIDB4OThCQiwgMHg5OEM2LCAweDM3MUQsIDB4OThDNywgMHg5OEM3LCAweDIwM0UsDQorICAgIDB4OThDOCwgMHg5OENBLCAweDM3MjksIDB4OThDQiwgMHg5OENCLCAweDFFNEMsIDB4OThDQywgMHg5OENGLCAweDM3MkMsDQorICAgIDB4OThEMCwgMHg5OEQwLCAweDIxM0EsIDB4OThEMSwgMHg5OEQyLCAweDM3MzAsIDB4OThEMywgMHg5OEQzLCAweDIyMDQsDQorICAgIDB4OThENCwgMHg5OEUyLCAweDM3MzIsIDB4OThFMywgMHg5OEUzLCAweDIwQzMsIDB4OThFNCwgMHg5OEU0LCAweDIxNDAsDQorICAgIDB4OThFNSwgMHg5OEU1LCAweDI0NzcsIDB4OThFNiwgMHg5OEVFLCAweDM3NDEsIDB4OThFRiwgMHg5OEVGLCAweDI0NzQsDQorICAgIDB4OThGMCwgMHg5OEYxLCAweDM3NEEsIDB4OThGMiwgMHg5OEYyLCAweDIwREQsIDB4OThGMywgMHg5OEZFLCAweDM3NEMsDQorICAgIDB4OTk0MCwgMHg5OTQyLCAweDM3NTgsIDB4OTk0MywgMHg5OTQzLCAweDFGNjgsIDB4OTk0NCwgMHg5OTQ0LCAweDM3NUIsDQorICAgIDB4OTk0NSwgMHg5OTQ1LCAweDIxODUsIDB4OTk0NiwgMHg5OTY1LCAweDM3NUMsIDB4OTk2NiwgMHg5OTY2LCAweDI0NzIsDQorICAgIDB4OTk2NywgMHg5OTZELCAweDM3N0MsIDB4OTk2RSwgMHg5OTZFLCAweDFFQjUsIDB4OTk2RiwgMHg5OTc0LCAweDM3ODMsDQorICAgIDB4OTk3NSwgMHg5OTc1LCAweDI0NzgsIDB4OTk3NiwgMHg5OTc5LCAweDM3ODksIDB4OTk3QSwgMHg5OTdBLCAweDFGOEIsDQorICAgIDB4OTk3QiwgMHg5OTdCLCAweDI0ODQsIDB4OTk3QywgMHg5OTdFLCAweDM3OEQsIDB4OTk4MCwgMHg5OTg0LCAweDM3OTAsDQorICAgIDB4OTk4NSwgMHg5OTg1LCAweDI2OTksIDB4OTk4NiwgMHg5OTg4LCAweDM3OTUsIDB4OTk4OSwgMHg5OTg5LCAweDI0ODIsDQorICAgIDB4OTk4QSwgMHg5OThELCAweDM3OTgsIDB4OTk4RSwgMHg5OThFLCAweDIwQTEsIDB4OTk4RiwgMHg5OTkwLCAweDM3OUMsDQorICAgIDB4OTk5MSwgMHg5OTkxLCAweDFGOTIsIDB4OTk5MiwgMHg5OTk4LCAweDM3OUUsIDB4OTk5OSwgMHg5OTk5LCAweDFGMzgsDQorICAgIDB4OTk5QSwgMHg5OUE4LCAweDM3QTUsIDB4OTlBOSwgMHg5OUE5LCAweDI0ODUsIDB4OTlBQSwgMHg5OUFGLCAweDM3QjQsDQorICAgIDB4OTlCMCwgMHg5OUIwLCAweDI0ODAsIDB4OTlCMSwgMHg5OUIxLCAweDI0NkUsIDB4OTlCMiwgMHg5OUIyLCAweDM3QkEsDQorICAgIDB4OTlCMywgMHg5OUIzLCAweDI0N0IsIDB4OTlCNCwgMHg5OUI0LCAweDI0ODYsIDB4OTlCNSwgMHg5OUI1LCAweDI0NzEsDQorICAgIDB4OTlCNiwgMHg5OUJDLCAweDM3QkIsIDB4OTlCRCwgMHg5OUJELCAweDI0ODMsIDB4OTlCRSwgMHg5OUJFLCAweDI0NzAsDQorICAgIDB4OTlCRiwgMHg5OUJGLCAweDM3QzIsIDB4OTlDMCwgMHg5OUMwLCAweDI0NjksIDB4OTlDMSwgMHg5OUMxLCAweDM3QzMsDQorICAgIDB4OTlDMiwgMHg5OUMyLCAweDI0N0YsIDB4OTlDMywgMHg5OUM4LCAweDM3QzQsIDB4OTlDOSwgMHg5OUM5LCAweDI0NkYsDQorICAgIDB4OTlDQSwgMHg5OUNELCAweDM3Q0EsIDB4OTlDRSwgMHg5OUNFLCAweDI0ODEsIDB4OTlDRiwgMHg5OUQwLCAweDM3Q0UsDQorICAgIDB4OTlEMSwgMHg5OUQxLCAweDIyMjAsIDB4OTlEMiwgMHg5OUQ5LCAweDM3RDAsIDB4OTlEQSwgMHg5OURBLCAweDFGRjUsDQorICAgIDB4OTlEQiwgMHg5OURGLCAweDM3RDgsIDB4OTlFMCwgMHg5OUUwLCAweDIwRjQsIDB4OTlFMSwgMHg5OUU0LCAweDM3REQsDQorICAgIDB4OTlFNSwgMHg5OUU1LCAweDI0N0QsIDB4OTlFNiwgMHg5OUU3LCAweDM3RTEsIDB4OTlFOCwgMHg5OUU4LCAweDI0NzksDQorICAgIDB4OTlFOSwgMHg5OUVCLCAweDM3RTMsIDB4OTlFQywgMHg5OUVDLCAweDI0N0UsIDB4OTlFRCwgMHg5OUYzLCAweDM3RTYsDQorICAgIDB4OTlGNCwgMHg5OUY0LCAweDI0N0EsIDB4OTlGNSwgMHg5OUZFLCAweDM3RUQsIDB4OUE0MCwgMHg5QTQ5LCAweDM3RjcsDQorICAgIDB4OUE0QSwgMHg5QTRBLCAweDIwRTMsIDB4OUE0QiwgMHg5QTU2LCAweDM4MDEsIDB4OUE1NywgMHg5QTU3LCAweDIwQUQsDQorICAgIDB4OUE1OCwgMHg5QTY0LCAweDM4MEQsIDB4OUE2NSwgMHg5QTY1LCAweDI0Q0IsIDB4OUE2NiwgMHg5QTY2LCAweDM4MUEsDQorICAgIDB4OUE2NywgMHg5QTY3LCAweDFGNTMsIDB4OUE2OCwgMHg5QTcwLCAweDM4MUIsIDB4OUE3MSwgMHg5QTcxLCAweDIxNTksDQorICAgIDB4OUE3MiwgMHg5QTc1LCAweDM4MjQsIDB4OUE3NiwgMHg5QTc2LCAweDIwMTMsIDB4OUE3NywgMHg5QTc3LCAweDFGMzMsDQorICAgIDB4OUE3OCwgMHg5QTdFLCAweDM4MjgsIDB4OUE4MCwgMHg5QTg3LCAweDM4MkYsIDB4OUE4OCwgMHg5QTg4LCAweDFFNUMsDQorICAgIDB4OUE4OSwgMHg5QThCLCAweDM4MzcsIDB4OUE4QywgMHg5QThDLCAweDI0ODgsIDB4OUE4RCwgMHg5QTkwLCAweDM4M0EsDQorICAgIDB4OUE5MSwgMHg5QTkxLCAweDI0ODcsIDB4OUE5MiwgMHg5QTk2LCAweDM4M0UsIDB4OUE5NywgMHg5QTk3LCAweDI0OEEsDQorICAgIDB4OUE5OCwgMHg5QTk5LCAweDM4NDMsIDB4OUE5QSwgMHg5QTlBLCAweDI0ODksIDB4OUE5QiwgMHg5QTlCLCAweDI0OEIsDQorICAgIDB4OUE5QywgMHg5QTlELCAweDM4NDUsIDB4OUE5RSwgMHg5QTlFLCAweDFGODMsIDB4OUE5RiwgMHg5QUExLCAweDM4NDcsDQorICAgIDB4OUFBMiwgMHg5QUEyLCAweDIxMEYsIDB4OUFBMywgMHg5QUEzLCAweDFGREIsIDB4OUFBNCwgMHg5QUE5LCAweDM4NEEsDQorICAgIDB4OUFBQSwgMHg5QUFBLCAweDIwQUYsIDB4OUFBQiwgMHg5QUNGLCAweDM4NTAsIDB4OUFEMCwgMHg5QUQwLCAweDI0QzAsDQorICAgIDB4OUFEMSwgMHg5QUQ1LCAweDM4NzUsIDB4OUFENiwgMHg5QUQ2LCAweDIyNkQsIDB4OUFENywgMHg5QUQ5LCAweDM4N0EsDQorICAgIDB4OUFEQSwgMHg5QURBLCAweDI0QzEsIDB4OUFEQiwgMHg5QUUxLCAweDM4N0QsIDB4OUFFMiwgMHg5QUUyLCAweDIwQ0EsDQorICAgIDB4OUFFMywgMHg5QUUzLCAweDM4ODQsIDB4OUFFNCwgMHg5QUU0LCAweDIwRTcsIDB4OUFFNSwgMHg5QUU1LCAweDI0QzIsDQorICAgIDB4OUFFNiwgMHg5QUZFLCAweDM4ODUsIDB4OUI0MCwgMHg5QjdFLCAweDM4OUUsIDB4OUI4MCwgMHg5QkQwLCAweDM4REQsDQorICAgIDB4OUJEMSwgMHg5QkQxLCAweDIzREMsIDB4OUJEMiwgMHg5QkRCLCAweDM5MkUsIDB4OUJEQywgMHg5QkRDLCAweDIzREIsDQorICAgIDB4OUJERCwgMHg5QkZFLCAweDM5MzgsIDB4OUM0MCwgMHg5QzUyLCAweDM5NUEsIDB4OUM1MywgMHg5QzUzLCAweDIwNUUsDQorICAgIDB4OUM1NCwgMHg5QzU4LCAweDM5NkQsIDB4OUM1OSwgMHg5QzU5LCAweDIyNDQsIDB4OUM1QSwgMHg5QzVBLCAweDIzRTIsDQorICAgIDB4OUM1QiwgMHg5QzVCLCAweDM5NzIsIDB4OUM1QywgMHg5QzVDLCAweDIwRDQsIDB4OUM1RCwgMHg5Qzc0LCAweDM5NzMsDQorICAgIDB4OUM3NSwgMHg5Qzc1LCAweDIxOUYsIDB4OUM3NiwgMHg5Qzc4LCAweDM5OEIsIDB4OUM3OSwgMHg5Qzc5LCAweDFFNjYsDQorICAgIDB4OUM3QSwgMHg5QzdFLCAweDM5OEUsIDB4OUM4MCwgMHg5Qzg1LCAweDM5OTMsIDB4OUM4NiwgMHg5Qzg2LCAweDFGNjMsDQorICAgIDB4OUM4NywgMHg5QzlDLCAweDM5OTksIDB4OUM5RCwgMHg5QzlELCAweDIzREQsIDB4OUM5RSwgMHg5Q0FBLCAweDM5QUYsDQorICAgIDB4OUNBQiwgMHg5Q0FCLCAweDIxNkIsIDB4OUNBQywgMHg5Q0M5LCAweDM5QkMsIDB4OUNDQSwgMHg5Q0NBLCAweDIyQjUsDQorICAgIDB4OUNDQiwgMHg5Q0NFLCAweDM5REEsIDB4OUNDRiwgMHg5Q0NGLCAweDFGMjYsIDB4OUNEMCwgMHg5Q0U1LCAweDM5REUsDQorICAgIDB4OUNFNiwgMHg5Q0U2LCAweDFFNjMsIDB4OUNFNywgMHg5Q0U3LCAweDIwODgsIDB4OUNFOCwgMHg5Q0VCLCAweDM5RjQsDQorICAgIDB4OUNFQywgMHg5Q0VDLCAweDFFQkQsIDB4OUNFRCwgMHg5Q0VELCAweDM5RjgsIDB4OUNFRSwgMHg5Q0VFLCAweDIzNDEsDQorICAgIDB4OUNFRiwgMHg5Q0ZBLCAweDM5RjksIDB4OUNGQiwgMHg5Q0ZCLCAweDFGNEIsIDB4OUNGQywgMHg5Q0ZELCAweDNBMDUsDQorICAgIDB4OUNGRSwgMHg5Q0ZFLCAweDIyOTIsIDB4OUQ0MCwgMHg5RDQxLCAweDNBMDcsIDB4OUQ0MiwgMHg5RDQyLCAweDIxMjQsDQorICAgIDB4OUQ0MywgMHg5RDQ1LCAweDNBMDksIDB4OUQ0NiwgMHg5RDQ2LCAweDIwNDgsIDB4OUQ0NywgMHg5RDQ3LCAweDIzRTAsDQorICAgIDB4OUQ0OCwgMHg5RDRDLCAweDNBMEMsIDB4OUQ0RCwgMHg5RDRELCAweDIwNzcsIDB4OUQ0RSwgMHg5RDRFLCAweDNBMTEsDQorICAgIDB4OUQ0RiwgMHg5RDRGLCAweDIyM0EsIDB4OUQ1MCwgMHg5RDYwLCAweDNBMTIsIDB4OUQ2MSwgMHg5RDYxLCAweDIwQjEsDQorICAgIDB4OUQ2MiwgMHg5RDY3LCAweDNBMjMsIDB4OUQ2OCwgMHg5RDY4LCAweDFGNDEsIDB4OUQ2OSwgMHg5RDY5LCAweDIwMUMsDQorICAgIDB4OUQ2QSwgMHg5RDZELCAweDNBMjksIDB4OUQ2RSwgMHg5RDZFLCAweDIyQjgsIDB4OUQ2RiwgMHg5RDcwLCAweDNBMkQsDQorICAgIDB4OUQ3MSwgMHg5RDcxLCAweDIyNzYsIDB4OUQ3MiwgMHg5RDc0LCAweDNBMkYsIDB4OUQ3NSwgMHg5RDc1LCAweDFGOUIsDQorICAgIDB4OUQ3NiwgMHg5RDdBLCAweDNBMzIsIDB4OUQ3QiwgMHg5RDdCLCAweDFGOUYsIDB4OUQ3QywgMHg5RDdDLCAweDNBMzcsDQorICAgIDB4OUQ3RCwgMHg5RDdELCAweDI1Q0EsIDB4OUQ3RSwgMHg5RDdFLCAweDNBMzgsIDB4OUQ4MCwgMHg5RDg5LCAweDNBMzksDQorICAgIDB4OUQ4QSwgMHg5RDhBLCAweDIwQkUsIDB4OUQ4QiwgMHg5RDhDLCAweDNBNDMsIDB4OUQ4RCwgMHg5RDhELCAweDFGQjQsDQorICAgIDB4OUQ4RSwgMHg5RDkwLCAweDNBNDUsIDB4OUQ5MSwgMHg5RDkxLCAweDIzRDcsIDB4OUQ5MiwgMHg5RDk4LCAweDNBNDgsDQorICAgIDB4OUQ5OSwgMHg5RDk5LCAweDIxMDUsIDB4OUQ5QSwgMHg5REEwLCAweDNBNEYsIDB4OURBMSwgMHg5REExLCAweDIzRTEsDQorICAgIDB4OURBMiwgMHg5REEyLCAweDFGRUMsIDB4OURBMywgMHg5REE2LCAweDNBNTYsIDB4OURBNywgMHg5REE3LCAweDIzRUEsDQorICAgIDB4OURBOCwgMHg5REFCLCAweDNBNUEsIDB4OURBQywgMHg5REFDLCAweDIzRTMsIDB4OURBRCwgMHg5REFELCAweDIxMEUsDQorICAgIDB4OURBRSwgMHg5REIxLCAweDNBNUUsIDB4OURCMiwgMHg5REIyLCAweDFGQTYsIDB4OURCMywgMHg5REIzLCAweDIwMDQsDQorICAgIDB4OURCNCwgMHg5REJELCAweDNBNjIsIDB4OURCRSwgMHg5REJFLCAweDFGOUQsIDB4OURCRiwgMHg5REM1LCAweDNBNkMsDQorICAgIDB4OURDNiwgMHg5REM2LCAweDIzRTUsIDB4OURDNywgMHg5REM4LCAweDNBNzMsIDB4OURDOSwgMHg5REM5LCAweDIyNjQsDQorICAgIDB4OURDQSwgMHg5RENDLCAweDNBNzUsIDB4OURDRCwgMHg5RENELCAweDI0RTIsIDB4OURDRSwgMHg5REQxLCAweDNBNzgsDQorICAgIDB4OUREMiwgMHg5REQyLCAweDIzREUsIDB4OUREMywgMHg5REQ0LCAweDNBN0MsIDB4OURENSwgMHg5REQ1LCAweDFFQzQsDQorICAgIDB4OURENiwgMHg5REUwLCAweDNBN0UsIDB4OURFMSwgMHg5REUxLCAweDIyQjYsIDB4OURFMiwgMHg5REUyLCAweDIwQTksDQorICAgIDB4OURFMywgMHg5REYwLCAweDNBODksIDB4OURGMSwgMHg5REYxLCAweDIxMkIsIDB4OURGMiwgMHg5REYzLCAweDNBOTcsDQorICAgIDB4OURGNCwgMHg5REY0LCAweDIwQTUsIDB4OURGNSwgMHg5REY2LCAweDNBOTksIDB4OURGNywgMHg5REY3LCAweDI2OEIsDQorICAgIDB4OURGOCwgMHg5REY5LCAweDNBOUIsIDB4OURGQSwgMHg5REZBLCAweDFGNzYsIDB4OURGQiwgMHg5REZDLCAweDNBOUQsDQorICAgIDB4OURGRCwgMHg5REZELCAweDIxNkQsIDB4OURGRSwgMHg5REZFLCAweDNBOUYsIDB4OUU0MCwgMHg5RTQ0LCAweDNBQTAsDQorICAgIDB4OUU0NSwgMHg5RTQ1LCAweDIwMDEsIDB4OUU0NiwgMHg5RTQ3LCAweDNBQTUsIDB4OUU0OCwgMHg5RTQ4LCAweDIxOTEsDQorICAgIDB4OUU0OSwgMHg5RTQ5LCAweDFFNTAsIDB4OUU0QSwgMHg5RTUxLCAweDNBQTcsIDB4OUU1MiwgMHg5RTUyLCAweDFGOUMsDQorICAgIDB4OUU1MywgMHg5RTUzLCAweDNBQUYsIDB4OUU1NCwgMHg5RTU0LCAweDIzREEsIDB4OUU1NSwgMHg5RTU1LCAweDNBQjAsDQorICAgIDB4OUU1NiwgMHg5RTU2LCAweDIwNTMsIDB4OUU1NywgMHg5RTVDLCAweDNBQjEsIDB4OUU1RCwgMHg5RTVELCAweDIzRTksDQorICAgIDB4OUU1RSwgMHg5RTVFLCAweDIzRTQsIDB4OUU1RiwgMHg5RTYwLCAweDNBQjcsIDB4OUU2MSwgMHg5RTYxLCAweDIxRDUsDQorICAgIDB4OUU2MiwgMHg5RTYyLCAweDNBQjksIDB4OUU2MywgMHg5RTYzLCAweDIzRTYsIDB4OUU2NCwgMHg5RTY2LCAweDNBQkEsDQorICAgIDB4OUU2NywgMHg5RTY3LCAweDIzREYsIDB4OUU2OCwgMHg5RTZCLCAweDNBQkQsIDB4OUU2QywgMHg5RTZDLCAweDFFNEYsDQorICAgIDB4OUU2RCwgMHg5RTZFLCAweDNBQzEsIDB4OUU2RiwgMHg5RTZGLCAweDIzRDksIDB4OUU3MCwgMHg5RTcxLCAweDNBQzMsDQorICAgIDB4OUU3MiwgMHg5RTcyLCAweDIwMTQsIDB4OUU3MywgMHg5RTczLCAweDNBQzUsIDB4OUU3NCwgMHg5RTc0LCAweDIzRUMsDQorICAgIDB4OUU3NSwgMHg5RTc1LCAweDIzRUIsIDB4OUU3NiwgMHg5RTdBLCAweDNBQzYsIDB4OUU3QiwgMHg5RTdCLCAweDIzRDgsDQorICAgIDB4OUU3QywgMHg5RTdDLCAweDIzRUUsIDB4OUU3RCwgMHg5RTdFLCAweDNBQ0IsIDB4OUU4MCwgMHg5RTg0LCAweDNBQ0QsDQorICAgIDB4OUU4NSwgMHg5RTg1LCAweDI2OEUsIDB4OUU4NiwgMHg5RTg2LCAweDNBRDIsIDB4OUU4NywgMHg5RTg3LCAweDIzRUQsDQorICAgIDB4OUU4OCwgMHg5RTkwLCAweDNBRDMsIDB4OUU5MSwgMHg5RTkxLCAweDFGRkEsIDB4OUU5MiwgMHg5RTk1LCAweDNBREMsDQorICAgIDB4OUU5NiwgMHg5RTk2LCAweDIzRDYsIDB4OUU5NywgMHg5RTk3LCAweDIzRTgsIDB4OUU5OCwgMHg5RUExLCAweDNBRTAsDQorICAgIDB4OUVBMiwgMHg5RUEyLCAweDIxMDYsIDB4OUVBMywgMHg5RUE1LCAweDNBRUEsIDB4OUVBNiwgMHg5RUE2LCAweDIwMEIsDQorICAgIDB4OUVBNywgMHg5RUE4LCAweDNBRUQsIDB4OUVBOSwgMHg5RUE5LCAweDIxNjYsIDB4OUVBQSwgMHg5RUFELCAweDNBRUYsDQorICAgIDB4OUVBRSwgMHg5RUFFLCAweDIzRUYsIDB4OUVBRiwgMHg5RUIyLCAweDNBRjMsIDB4OUVCMywgMHg5RUIzLCAweDIxODksDQorICAgIDB4OUVCNCwgMHg5RUI0LCAweDIwNTgsIDB4OUVCNSwgMHg5RUI2LCAweDNBRjcsIDB4OUVCNywgMHg5RUI3LCAweDIzRTcsDQorICAgIDB4OUVCOCwgMHg5RUY0LCAweDNBRjksIDB4OUVGNSwgMHg5RUY1LCAweDIxQTMsIDB4OUVGNiwgMHg5RUZFLCAweDNCMzYsDQorICAgIDB4OUY0MCwgMHg5RjRELCAweDNCM0YsIDB4OUY0RSwgMHg5RjRFLCAweDIxN0EsIDB4OUY0RiwgMHg5RjZFLCAweDNCNEQsDQorICAgIDB4OUY2RiwgMHg5RjZGLCAweDIxQTUsIDB4OUY3MCwgMHg5RjdFLCAweDNCNkQsIDB4OUY4MCwgMHg5RjkxLCAweDNCN0MsDQorICAgIDB4OUY5MiwgMHg5RjkyLCAweDIwMjIsIDB4OUY5MywgMHg5Rjk3LCAweDNCOEUsIDB4OUY5OCwgMHg5Rjk4LCAweDI0RDYsDQorICAgIDB4OUY5OSwgMHg5RkE1LCAweDNCOTMsIDB4OUZBNiwgMHg5RkE2LCAweDIzM0EsIDB4OUZBNywgMHg5RkE4LCAweDNCQTAsDQorICAgIDB4OUZBOSwgMHg5RkE5LCAweDFFRUUsIDB4OUZBQSwgMHg5RkFCLCAweDNCQTIsIDB4OUZBQywgMHg5RkFDLCAweDI0RDUsDQorICAgIDB4OUZBRCwgMHg5RkM4LCAweDNCQTQsIDB4OUZDOSwgMHg5RkM5LCAweDIyMjgsIDB4OUZDQSwgMHg5RkNDLCAweDNCQzAsDQorICAgIDB4OUZDRCwgMHg5RkNELCAweDI0RDcsIDB4OUZDRSwgMHg5RkUwLCAweDNCQzMsIDB4OUZFMSwgMHg5RkUxLCAweDIwRkMsDQorICAgIDB4OUZFMiwgMHg5RkVBLCAweDNCRDYsIDB4OUZFQiwgMHg5RkVCLCAweDFFODcsIDB4OUZFQywgMHg5RkVELCAweDNCREYsDQorICAgIDB4OUZFRSwgMHg5RkVFLCAweDI0RDgsIDB4OUZFRiwgMHg5RkYzLCAweDNCRTEsIDB4OUZGNCwgMHg5RkY0LCAweDFFQkEsDQorICAgIDB4OUZGNSwgMHg5RkZDLCAweDNCRTYsIDB4OUZGRCwgMHg5RkZELCAweDIxMTksIDB4OUZGRSwgMHg5RkZFLCAweDNCRUUsDQorICAgIDB4QTA0MCwgMHhBMDQyLCAweDNCRUYsIDB4QTA0MywgMHhBMDQzLCAweDIxNkMsIDB4QTA0NCwgMHhBMDQ1LCAweDNCRjIsDQorICAgIDB4QTA0NiwgMHhBMDQ2LCAweDI0RDksIDB4QTA0NywgMHhBMDQ4LCAweDNCRjQsIDB4QTA0OSwgMHhBMDQ5LCAweDIyMjcsDQorICAgIDB4QTA0QSwgMHhBMDRELCAweDNCRjYsIDB4QTA0RSwgMHhBMDRFLCAweDFFNUYsIDB4QTA0RiwgMHhBMDUzLCAweDNCRkEsDQorICAgIDB4QTA1NCwgMHhBMDU0LCAweDIyOUYsIDB4QTA1NSwgMHhBMDU5LCAweDNCRkYsIDB4QTA1QSwgMHhBMDVBLCAweDFGNUQsDQorICAgIDB4QTA1QiwgMHhBMDYwLCAweDNDMDQsIDB4QTA2MSwgMHhBMDYxLCAweDFGQkMsIDB4QTA2MiwgMHhBMDYyLCAweDNDMEEsDQorICAgIDB4QTA2MywgMHhBMDYzLCAweDI0REEsIDB4QTA2NCwgMHhBMDcwLCAweDNDMEIsIDB4QTA3MSwgMHhBMDcxLCAweDIxNDksDQorICAgIDB4QTA3MiwgMHhBMDczLCAweDNDMTgsIDB4QTA3NCwgMHhBMDc0LCAweDIwNDYsIDB4QTA3NSwgMHhBMDdFLCAweDNDMUEsDQorICAgIDB4QTA4MCwgMHhBMDgwLCAweDIwMDAsIDB4QTA4MSwgMHhBMDkwLCAweDNDMjQsIDB4QTA5MSwgMHhBMDkxLCAweDIxOTAsDQorICAgIDB4QTA5MiwgMHhBMDkzLCAweDNDMzQsIDB4QTA5NCwgMHhBMDk0LCAweDIyMDgsIDB4QTA5NSwgMHhBMDk1LCAweDNDMzYsDQorICAgIDB4QTA5NiwgMHhBMDk2LCAweDFFRTYsIDB4QTA5NywgMHhBMEE4LCAweDNDMzcsIDB4QTBBOSwgMHhBMEE5LCAweDI0QzMsDQorICAgIDB4QTBBQSwgMHhBMEJFLCAweDNDNDksIDB4QTBCRiwgMHhBMEJGLCAweDIwQ0MsIDB4QTBDMCwgMHhBMENELCAweDNDNUUsDQorICAgIDB4QTBDRSwgMHhBMENFLCAweDIzNDAsIDB4QTBDRiwgMHhBMEQ4LCAweDNDNkMsIDB4QTBEOSwgMHhBMEQ5LCAweDFFRDEsDQorICAgIDB4QTBEQSwgMHhBMERELCAweDNDNzYsIDB4QTBERSwgMHhBMERFLCAweDIxQUMsIDB4QTBERiwgMHhBMEVELCAweDNDN0EsDQorICAgIDB4QTBFRSwgMHhBMEVFLCAweDIyQUYsIDB4QTBFRiwgMHhBMEZFLCAweDNDODksIDB4QTFBMSwgMHhBMUZFLCAweDAwNjAsDQorICAgIDB4QTJBMSwgMHhBMkFBLCAweDI2QTksIDB4QTJCMSwgMHhBMkUyLCAweDAwQkUsIDB4QTJFNSwgMHhBMkVFLCAweDAwRjAsDQorICAgIDB4QTJGMSwgMHhBMkZDLCAweDAwRkEsIDB4QTNBMSwgMHhBM0ZFLCAweDAxMDYsIDB4QTRBMSwgMHhBNEYzLCAweDAxNjQsDQorICAgIDB4QTVBMSwgMHhBNUY2LCAweDAxQjcsIDB4QTZBMSwgMHhBNkI4LCAweDAyMEQsIDB4QTZDMSwgMHhBNkY1LCAweDAyMjUsDQorICAgIDB4QTdBMSwgMHhBN0MxLCAweDAyNUEsIDB4QTdEMSwgMHhBN0YxLCAweDAyN0IsIDB4QTg0MCwgMHhBODdFLCAweDI2QjMsDQorICAgIDB4QTg4MCwgMHhBODk1LCAweDI2RjIsIDB4QThBMSwgMHhBOEMwLCAweDAyOUMsIDB4QThDNSwgMHhBOEVBLCAweDAyQkMsDQorICAgIDB4QTk0MCwgMHhBOTU3LCAweDI3MDgsIDB4QTk1OSwgMHhBOTVBLCAweDI3MjAsIDB4QTk1QywgMHhBOTVDLCAweDI3MjIsDQorICAgIDB4QTk2MCwgMHhBOTdFLCAweDI3MjMsIDB4QTk4MCwgMHhBOTk1LCAweDI3NDIsIDB4QTk5NiwgMHhBOTk2LCAweDFFMTcsDQorICAgIDB4QTlBNCwgMHhBOUVGLCAweDAyRTIsIDB4QUE0MCwgMHhBQTRDLCAweDNDOTksIDB4QUE0RCwgMHhBQTRELCAweDIxQjYsDQorICAgIDB4QUE0RSwgMHhBQTRFLCAweDFFM0QsIDB4QUE0RiwgMHhBQTcwLCAweDNDQTYsIDB4QUE3MSwgMHhBQTcxLCAweDIyMzUsDQorICAgIDB4QUE3MiwgMHhBQTcyLCAweDNDQzgsIDB4QUE3MywgMHhBQTczLCAweDIzOTcsIDB4QUE3NCwgMHhBQTc2LCAweDNDQzksDQorICAgIDB4QUE3NywgMHhBQTc3LCAweDIzOTUsIDB4QUE3OCwgMHhBQTc5LCAweDNDQ0MsIDB4QUE3QSwgMHhBQTdBLCAweDIyM0YsDQorICAgIDB4QUE3QiwgMHhBQTdCLCAweDIxMkEsIDB4QUE3QywgMHhBQTdFLCAweDNDQ0UsIDB4QUE4MCwgMHhBQTk5LCAweDNDRDEsDQorICAgIDB4QUE5QSwgMHhBQTlBLCAweDFFRDIsIDB4QUE5QiwgMHhBQTlCLCAweDNDRUIsIDB4QUE5QywgMHhBQTlDLCAweDIzOTYsDQorICAgIDB4QUE5RCwgMHhBQTlELCAweDIzOTgsIDB4QUE5RSwgMHhBQTlFLCAweDNDRUMsIDB4QUE5RiwgMHhBQTlGLCAweDIwQTIsDQorICAgIDB4QUFBMCwgMHhBQUEwLCAweDNDRUQsIDB4QUFBMSwgMHhBQUZFLCAweDAzMkUsIDB4QUI0MCwgMHhBQjQwLCAweDFGNjQsDQorICAgIDB4QUI0MSwgMHhBQjQyLCAweDNDRUUsIDB4QUI0MywgMHhBQjQzLCAweDIwMkIsIDB4QUI0NCwgMHhBQjQ0LCAweDNDRjAsDQorICAgIDB4QUI0NSwgMHhBQjQ1LCAweDIzOTQsIDB4QUI0NiwgMHhBQjQ2LCAweDIxMzksIDB4QUI0NywgMHhBQjQ3LCAweDNDRjEsDQorICAgIDB4QUI0OCwgMHhBQjQ4LCAweDIxNUYsIDB4QUI0OSwgMHhBQjQ5LCAweDIxQzEsIDB4QUI0QSwgMHhBQjRBLCAweDIzOUEsDQorICAgIDB4QUI0QiwgMHhBQjRDLCAweDNDRjIsIDB4QUI0RCwgMHhBQjRELCAweDIzOTksIDB4QUI0RSwgMHhBQjdFLCAweDNDRjQsDQorICAgIDB4QUI4MCwgMHhBQkEwLCAweDNEMjUsIDB4QUJBMSwgMHhBQkMwLCAweDAzOEMsIDB4QUM0MCwgMHhBQzQ1LCAweDNENDYsDQorICAgIDB4QUM0NiwgMHhBQzQ2LCAweDIxQzAsIDB4QUM0NywgMHhBQzcwLCAweDNENEMsIDB4QUM3MSwgMHhBQzcxLCAweDI0NjAsDQorICAgIDB4QUM3MiwgMHhBQzdCLCAweDNENzYsIDB4QUM3QywgMHhBQzdDLCAweDI0NUMsIDB4QUM3RCwgMHhBQzdFLCAweDNEODAsDQorICAgIDB4QUM4MCwgMHhBQzhDLCAweDNEODIsIDB4QUM4RCwgMHhBQzhELCAweDIxNUQsIDB4QUM4RSwgMHhBQzkyLCAweDNEOEYsDQorICAgIDB4QUM5MywgMHhBQzkzLCAweDIyMjUsIDB4QUM5NCwgMHhBQzk0LCAweDIwNkEsIDB4QUM5NSwgMHhBQ0EwLCAweDNEOTQsDQorICAgIDB4QUQ0MCwgMHhBRDQ4LCAweDNEQTAsIDB4QUQ0OSwgMHhBRDQ5LCAweDI0NjEsIDB4QUQ0QSwgMHhBRDVELCAweDNEQTksDQorICAgIDB4QUQ1RSwgMHhBRDVFLCAweDI0NUIsIDB4QUQ1RiwgMHhBRDYwLCAweDNEQkQsIDB4QUQ2MSwgMHhBRDYxLCAweDI0NjIsDQorICAgIDB4QUQ2MiwgMHhBRDY3LCAweDNEQkYsIDB4QUQ2OCwgMHhBRDY4LCAweDFGNTQsIDB4QUQ2OSwgMHhBRDczLCAweDNEQzUsDQorICAgIDB4QUQ3NCwgMHhBRDc0LCAweDI0NUYsIDB4QUQ3NSwgMHhBRDdFLCAweDNERDAsIDB4QUQ4MCwgMHhBRDgxLCAweDNEREEsDQorICAgIDB4QUQ4MiwgMHhBRDgyLCAweDIwRUMsIDB4QUQ4MywgMHhBRDg2LCAweDNEREMsIDB4QUQ4NywgMHhBRDg3LCAweDI0NUQsDQorICAgIDB4QUQ4OCwgMHhBRDhBLCAweDNERTAsIDB4QUQ4QiwgMHhBRDhCLCAweDI0NjMsIDB4QUQ4QywgMHhBRDkwLCAweDNERTMsDQorICAgIDB4QUQ5MSwgMHhBRDkxLCAweDI0NjQsIDB4QUQ5MiwgMHhBREEwLCAweDNERTgsIDB4QUU0MCwgMHhBRTUzLCAweDNERjcsDQorICAgIDB4QUU1NCwgMHhBRTU0LCAweDI0QTUsIDB4QUU1NSwgMHhBRTYxLCAweDNFMEIsIDB4QUU2MiwgMHhBRTYyLCAweDFFNzAsDQorICAgIDB4QUU2MywgMHhBRTdFLCAweDNFMTgsIDB4QUU4MCwgMHhBRTgwLCAweDIwOEYsIDB4QUU4MSwgMHhBRTg0LCAweDNFMzQsDQorICAgIDB4QUU4NSwgMHhBRTg1LCAweDFFNDIsIDB4QUU4NiwgMHhBRThBLCAweDNFMzgsIDB4QUU4QiwgMHhBRThCLCAweDFGNEUsDQorICAgIDB4QUU4QywgMHhBRTkzLCAweDNFM0QsIDB4QUU5NCwgMHhBRTk0LCAweDFFQjEsIDB4QUU5NSwgMHhBRTlGLCAweDNFNDUsDQorICAgIDB4QUVBMCwgMHhBRUEwLCAweDFFOEIsIDB4QUY0MCwgMHhBRjYzLCAweDNFNTAsIDB4QUY2NCwgMHhBRjY0LCAweDFGQzYsDQorICAgIDB4QUY2NSwgMHhBRjdBLCAweDNFNzQsIDB4QUY3QiwgMHhBRjdCLCAweDI1QUUsIDB4QUY3QywgMHhBRjdFLCAweDNFOEEsDQorICAgIDB4QUY4MCwgMHhBRjgxLCAweDNFOEQsIDB4QUY4MiwgMHhBRjgyLCAweDFGMDEsIDB4QUY4MywgMHhBRjgzLCAweDIyMDAsDQorICAgIDB4QUY4NCwgMHhBRjhELCAweDNFOEYsIDB4QUY4RSwgMHhBRjhFLCAweDI1QjIsIDB4QUY4RiwgMHhBRjhGLCAweDFFOTcsDQorICAgIDB4QUY5MCwgMHhBRjkwLCAweDNFOTksIDB4QUY5MSwgMHhBRjkxLCAweDIwQUIsIDB4QUY5MiwgMHhBRjlCLCAweDNFOUEsDQorICAgIDB4QUY5QywgMHhBRjlDLCAweDI1QjMsIDB4QUY5RCwgMHhBRjlFLCAweDNFQTQsIDB4QUY5RiwgMHhBRjlGLCAweDIwMjgsDQorICAgIDB4QUZBMCwgMHhBRkEwLCAweDNFQTYsIDB4QjA0MCwgMHhCMDQwLCAweDNFQTcsIDB4QjA0MSwgMHhCMDQyLCAweDI1QUYsDQorICAgIDB4QjA0MywgMHhCMDQzLCAweDNFQTgsIDB4QjA0NCwgMHhCMDQ0LCAweDI1QjEsIDB4QjA0NSwgMHhCMDRFLCAweDNFQTksDQorICAgIDB4QjA0RiwgMHhCMDRGLCAweDI1QUMsIDB4QjA1MCwgMHhCMDUzLCAweDNFQjMsIDB4QjA1NCwgMHhCMDU0LCAweDFFNEUsDQorICAgIDB4QjA1NSwgMHhCMDU2LCAweDNFQjcsIDB4QjA1NywgMHhCMDU3LCAweDIyMDIsIDB4QjA1OCwgMHhCMDU4LCAweDI1QUIsDQorICAgIDB4QjA1OSwgMHhCMDU5LCAweDIyODYsIDB4QjA1QSwgMHhCMDVBLCAweDNFQjksIDB4QjA1QiwgMHhCMDVCLCAweDI1QUQsDQorICAgIDB4QjA1QywgMHhCMDVDLCAweDNFQkEsIDB4QjA1RCwgMHhCMDVELCAweDI1QjYsIDB4QjA1RSwgMHhCMDVFLCAweDNFQkIsDQorICAgIDB4QjA1RiwgMHhCMDVGLCAweDIxRTMsIDB4QjA2MCwgMHhCMDYxLCAweDI1QjQsIDB4QjA2MiwgMHhCMDYyLCAweDIyMkYsDQorICAgIDB4QjA2MywgMHhCMDYzLCAweDIxNjUsIDB4QjA2NCwgMHhCMDY0LCAweDI1QjcsIDB4QjA2NSwgMHhCMDZCLCAweDNFQkMsDQorICAgIDB4QjA2QywgMHhCMDZDLCAweDFFRTksIDB4QjA2RCwgMHhCMDdDLCAweDNFQzMsIDB4QjA3RCwgMHhCMDdELCAweDFFMjUsDQorICAgIDB4QjA3RSwgMHhCMDdFLCAweDNFRDMsIDB4QjA4MCwgMHhCMDk2LCAweDNFRDQsIDB4QjA5NywgMHhCMDk3LCAweDI1QzAsDQorICAgIDB4QjA5OCwgMHhCMDk4LCAweDNFRUIsIDB4QjA5OSwgMHhCMDk5LCAweDIyOUEsIDB4QjA5QSwgMHhCMEEwLCAweDNFRUMsDQorICAgIDB4QjBBMSwgMHhCMEZFLCAweDAzQUMsIDB4QjE0MCwgMHhCMTRBLCAweDNFRjMsIDB4QjE0QiwgMHhCMTRCLCAweDIyNkUsDQorICAgIDB4QjE0QywgMHhCMTRDLCAweDNFRkUsIDB4QjE0RCwgMHhCMTRELCAweDFGQkQsIDB4QjE0RSwgMHhCMTRFLCAweDNFRkYsDQorICAgIDB4QjE0RiwgMHhCMTRGLCAweDFGODQsIDB4QjE1MCwgMHhCMTUwLCAweDIwQjIsIDB4QjE1MSwgMHhCMTUxLCAweDNGMDAsDQorICAgIDB4QjE1MiwgMHhCMTUyLCAweDIwNDMsIDB4QjE1MywgMHhCMTdFLCAweDNGMDEsIDB4QjE4MCwgMHhCMTk2LCAweDNGMkQsDQorICAgIDB4QjE5NywgMHhCMTk3LCAweDI2ODQsIDB4QjE5OCwgMHhCMUEwLCAweDNGNDQsIDB4QjFBMSwgMHhCMUZFLCAweDA0MEEsDQorICAgIDB4QjI0MCwgMHhCMjQwLCAweDNGNEQsIDB4QjI0MSwgMHhCMjQxLCAweDI0RUYsIDB4QjI0MiwgMHhCMjY2LCAweDNGNEUsDQorICAgIDB4QjI2NywgMHhCMjY3LCAweDI0RUUsIDB4QjI2OCwgMHhCMjZDLCAweDNGNzMsIDB4QjI2RCwgMHhCMjZELCAweDIwNzQsDQorICAgIDB4QjI2RSwgMHhCMjczLCAweDNGNzgsIDB4QjI3NCwgMHhCMjc0LCAweDI2ODcsIDB4QjI3NSwgMHhCMjdFLCAweDNGN0UsDQorICAgIDB4QjI4MCwgMHhCMjgwLCAweDI0RjAsIDB4QjI4MSwgMHhCMjg4LCAweDNGODgsIDB4QjI4OSwgMHhCMjg5LCAweDI2OEQsDQorICAgIDB4QjI4QSwgMHhCMjk5LCAweDNGOTAsIDB4QjI5QSwgMHhCMjlBLCAweDIyQTAsIDB4QjI5QiwgMHhCMkEwLCAweDNGQTAsDQorICAgIDB4QjJBMSwgMHhCMkZFLCAweDA0NjgsIDB4QjM0MCwgMHhCMzQyLCAweDNGQTYsIDB4QjM0MywgMHhCMzQzLCAweDFGQUIsDQorICAgIDB4QjM0NCwgMHhCMzZGLCAweDNGQTksIDB4QjM3MCwgMHhCMzcwLCAweDI2QTgsIDB4QjM3MSwgMHhCMzdFLCAweDNGRDUsDQorICAgIDB4QjM4MCwgMHhCMzg3LCAweDNGRTMsIDB4QjM4OCwgMHhCMzg4LCAweDI0RTksIDB4QjM4OSwgMHhCMzhCLCAweDNGRUIsDQorICAgIDB4QjM4QywgMHhCMzhDLCAweDI0RTUsIDB4QjM4RCwgMHhCMzhELCAweDNGRUUsIDB4QjM4RSwgMHhCMzhFLCAweDIxRkEsDQorICAgIDB4QjM4RiwgMHhCM0EwLCAweDNGRUYsIDB4QjNBMSwgMHhCM0ZFLCAweDA0QzYsIDB4QjQ0MCwgMHhCNDUzLCAweDQwMDEsDQorICAgIDB4QjQ1NCwgMHhCNDU0LCAweDIxNDgsIDB4QjQ1NSwgMHhCNDU3LCAweDQwMTUsIDB4QjQ1OCwgMHhCNDU4LCAweDI0RTQsDQorICAgIDB4QjQ1OSwgMHhCNDVELCAweDQwMTgsIDB4QjQ1RSwgMHhCNDVFLCAweDI0RTYsIDB4QjQ1RiwgMHhCNDVGLCAweDIwRjcsDQorICAgIDB4QjQ2MCwgMHhCNDYwLCAweDQwMUQsIDB4QjQ2MSwgMHhCNDYxLCAweDIwNkIsIDB4QjQ2MiwgMHhCNDc0LCAweDQwMUUsDQorICAgIDB4QjQ3NSwgMHhCNDc1LCAweDIyQTcsIDB4QjQ3NiwgMHhCNDdELCAweDQwMzEsIDB4QjQ3RSwgMHhCNDdFLCAweDI0RUMsDQorICAgIDB4QjQ4MCwgMHhCNDgyLCAweDQwMzksIDB4QjQ4MywgMHhCNDgzLCAweDI0RUIsIDB4QjQ4NCwgMHhCNDg4LCAweDQwM0MsDQorICAgIDB4QjQ4OSwgMHhCNDg5LCAweDI0RTMsIDB4QjQ4QSwgMHhCNDkyLCAweDQwNDEsIDB4QjQ5MywgMHhCNDkzLCAweDI0RUEsDQorICAgIDB4QjQ5NCwgMHhCNEEwLCAweDQwNEEsIDB4QjRBMSwgMHhCNEZFLCAweDA1MjQsIDB4QjU0MCwgMHhCNTQwLCAweDQwNTcsDQorICAgIDB4QjU0MSwgMHhCNTQxLCAweDFFOTIsIDB4QjU0MiwgMHhCNTRBLCAweDQwNTgsIDB4QjU0QiwgMHhCNTRCLCAweDFFMjcsDQorICAgIDB4QjU0QywgMHhCNTU1LCAweDQwNjEsIDB4QjU1NiwgMHhCNTU2LCAweDFGRTYsIDB4QjU1NywgMHhCNTU5LCAweDQwNkIsDQorICAgIDB4QjU1QSwgMHhCNTVBLCAweDI0RTcsIDB4QjU1QiwgMHhCNTVCLCAweDIwMTIsIDB4QjU1QywgMHhCNTVDLCAweDFFRUMsDQorICAgIDB4QjU1RCwgMHhCNTYwLCAweDQwNkUsIDB4QjU2MSwgMHhCNTYxLCAweDI0RTgsIDB4QjU2MiwgMHhCNTdFLCAweDQwNzIsDQorICAgIDB4QjU4MCwgMHhCNTlCLCAweDQwOEYsIDB4QjU5QywgMHhCNTlDLCAweDFGNjYsIDB4QjU5RCwgMHhCNTlELCAweDI0REMsDQorICAgIDB4QjU5RSwgMHhCNUEwLCAweDQwQUIsIDB4QjVBMSwgMHhCNUZFLCAweDA1ODIsIDB4QjY0MCwgMHhCNjUxLCAweDQwQUUsDQorICAgIDB4QjY1MiwgMHhCNjUyLCAweDI2QTIsIDB4QjY1MywgMHhCNjU0LCAweDQwQzAsIDB4QjY1NSwgMHhCNjU1LCAweDI0REQsDQorICAgIDB4QjY1NiwgMHhCNjU4LCAweDQwQzIsIDB4QjY1OSwgMHhCNjU5LCAweDIwMEUsIDB4QjY1QSwgMHhCNjVBLCAweDQwQzUsDQorICAgIDB4QjY1QiwgMHhCNjVCLCAweDI0REIsIDB4QjY1QywgMHhCNjVDLCAweDFFQjgsIDB4QjY1RCwgMHhCNjdFLCAweDQwQzYsDQorICAgIDB4QjY4MCwgMHhCNkEwLCAweDQwRTgsIDB4QjZBMSwgMHhCNkZFLCAweDA1RTAsIDB4Qjc0MCwgMHhCNzRELCAweDQxMDksDQorICAgIDB4Qjc0RSwgMHhCNzRFLCAweDIyOTUsIDB4Qjc0RiwgMHhCNzUwLCAweDQxMTcsIDB4Qjc1MSwgMHhCNzUxLCAweDFFODAsDQorICAgIDB4Qjc1MiwgMHhCNzU4LCAweDQxMTksIDB4Qjc1OSwgMHhCNzU5LCAweDI2NzcsIDB4Qjc1QSwgMHhCNzYzLCAweDQxMjAsDQorICAgIDB4Qjc2NCwgMHhCNzY0LCAweDI2MjQsIDB4Qjc2NSwgMHhCNzY1LCAweDFGNjksIDB4Qjc2NiwgMHhCNzY2LCAweDIyMkIsDQorICAgIDB4Qjc2NywgMHhCNzc2LCAweDQxMkEsIDB4Qjc3NywgMHhCNzc3LCAweDI1N0YsIDB4Qjc3OCwgMHhCNzc4LCAweDFGNUIsDQorICAgIDB4Qjc3OSwgMHhCNzdFLCAweDQxM0EsIDB4Qjc4MCwgMHhCNzgwLCAweDIxOUIsIDB4Qjc4MSwgMHhCNzgxLCAweDQxNDAsDQorICAgIDB4Qjc4MiwgMHhCNzgyLCAweDI2N0QsIDB4Qjc4MywgMHhCN0EwLCAweDQxNDEsIDB4QjdBMSwgMHhCN0ZFLCAweDA2M0UsDQorICAgIDB4Qjg0MCwgMHhCODQyLCAweDQxNUYsIDB4Qjg0MywgMHhCODQzLCAweDIxQTAsIDB4Qjg0NCwgMHhCODQ0LCAweDIxODYsDQorICAgIDB4Qjg0NSwgMHhCODQ1LCAweDQxNjIsIDB4Qjg0NiwgMHhCODQ2LCAweDIwRUQsIDB4Qjg0NywgMHhCODRDLCAweDQxNjMsDQorICAgIDB4Qjg0RCwgMHhCODRELCAweDI1QjksIDB4Qjg0RSwgMHhCODUwLCAweDQxNjksIDB4Qjg1MSwgMHhCODUxLCAweDFGRUEsDQorICAgIDB4Qjg1MiwgMHhCODU5LCAweDQxNkMsIDB4Qjg1QSwgMHhCODVBLCAweDFFQTQsIDB4Qjg1QiwgMHhCODVCLCAweDIwRTEsDQorICAgIDB4Qjg1QywgMHhCODVDLCAweDQxNzQsIDB4Qjg1RCwgMHhCODVELCAweDI1QjgsIDB4Qjg1RSwgMHhCODVFLCAweDIyNjAsDQorICAgIDB4Qjg1RiwgMHhCODVGLCAweDQxNzUsIDB4Qjg2MCwgMHhCODYwLCAweDIwRTIsIDB4Qjg2MSwgMHhCODc2LCAweDQxNzYsDQorICAgIDB4Qjg3NywgMHhCODc3LCAweDIxNDEsIDB4Qjg3OCwgMHhCODdFLCAweDQxOEMsIDB4Qjg4MCwgMHhCODgxLCAweDQxOTMsDQorICAgIDB4Qjg4MiwgMHhCODgyLCAweDFGQzcsIDB4Qjg4MywgMHhCOEEwLCAweDQxOTUsIDB4QjhBMSwgMHhCOEZFLCAweDA2OUMsDQorICAgIDB4Qjk0MCwgMHhCOTRGLCAweDQxQjMsIDB4Qjk1MCwgMHhCOTUwLCAweDFFNDEsIDB4Qjk1MSwgMHhCOTYwLCAweDQxQzMsDQorICAgIDB4Qjk2MSwgMHhCOTYxLCAweDI1RTQsIDB4Qjk2MiwgMHhCOTdBLCAweDQxRDMsIDB4Qjk3QiwgMHhCOTdCLCAweDFGODYsDQorICAgIDB4Qjk3QywgMHhCOTdFLCAweDQxRUMsIDB4Qjk4MCwgMHhCOTlDLCAweDQxRUYsIDB4Qjk5RCwgMHhCOTlELCAweDFGQjMsDQorICAgIDB4Qjk5RSwgMHhCOTlGLCAweDQyMEMsIDB4QjlBMCwgMHhCOUEwLCAweDFFRUYsIDB4QjlBMSwgMHhCOUZFLCAweDA2RkEsDQorICAgIDB4QkE0MCwgMHhCQTQxLCAweDQyMEUsIDB4QkE0MiwgMHhCQTQyLCAweDIyQTQsIDB4QkE0MywgMHhCQTQzLCAweDQyMTAsDQorICAgIDB4QkE0NCwgMHhCQTQ0LCAweDI1RTgsIDB4QkE0NSwgMHhCQTU1LCAweDQyMTEsIDB4QkE1NiwgMHhCQTU2LCAweDI1RTMsDQorICAgIDB4QkE1NywgMHhCQTU4LCAweDQyMjIsIDB4QkE1OSwgMHhCQTU5LCAweDIxMTEsIDB4QkE1QSwgMHhCQTVGLCAweDQyMjQsDQorICAgIDB4QkE2MCwgMHhCQTYwLCAweDI1RTYsIDB4QkE2MSwgMHhCQTY5LCAweDQyMkEsIDB4QkE2QSwgMHhCQTZBLCAweDI1RTcsDQorICAgIDB4QkE2QiwgMHhCQTczLCAweDQyMzMsIDB4QkE3NCwgMHhCQTc0LCAweDIwNDEsIDB4QkE3NSwgMHhCQTdFLCAweDQyM0MsDQorICAgIDB4QkE4MCwgMHhCQTgzLCAweDQyNDYsIDB4QkE4NCwgMHhCQTg0LCAweDI1RUEsIDB4QkE4NSwgMHhCQTg1LCAweDQyNEEsDQorICAgIDB4QkE4NiwgMHhCQTg2LCAweDFGOEYsIDB4QkE4NywgMHhCQTg3LCAweDQyNEIsIDB4QkE4OCwgMHhCQTg4LCAweDI1RUMsDQorICAgIDB4QkE4OSwgMHhCQThDLCAweDQyNEMsIDB4QkE4RCwgMHhCQThELCAweDI1RUIsIDB4QkE4RSwgMHhCQTlELCAweDQyNTAsDQorICAgIDB4QkE5RSwgMHhCQTlFLCAweDIwRDAsIDB4QkE5RiwgMHhCQTlGLCAweDIwMUQsIDB4QkFBMCwgMHhCQUEwLCAweDQyNjAsDQorICAgIDB4QkFBMSwgMHhCQUZFLCAweDA3NTgsIDB4QkI0MCwgMHhCQjQwLCAweDFGRjcsIDB4QkI0MSwgMHhCQjQ4LCAweDQyNjEsDQorICAgIDB4QkI0OSwgMHhCQjQ5LCAweDFFOEQsIDB4QkI0QSwgMHhCQjU3LCAweDQyNjksIDB4QkI1OCwgMHhCQjU4LCAweDI1RTksDQorICAgIDB4QkI1OSwgMHhCQjVBLCAweDQyNzcsIDB4QkI1QiwgMHhCQjVCLCAweDI1RUUsIDB4QkI1QywgMHhCQjVDLCAweDIwM0EsDQorICAgIDB4QkI1RCwgMHhCQjVGLCAweDQyNzksIDB4QkI2MCwgMHhCQjYwLCAweDI2OTMsIDB4QkI2MSwgMHhCQjY0LCAweDQyN0MsDQorICAgIDB4QkI2NSwgMHhCQjY1LCAweDI1RTUsIDB4QkI2NiwgMHhCQjY2LCAweDI1RUQsIDB4QkI2NywgMHhCQjY3LCAweDQyODAsDQorICAgIDB4QkI2OCwgMHhCQjY4LCAweDIwMDksIDB4QkI2OSwgMHhCQjY5LCAweDQyODEsIDB4QkI2QSwgMHhCQjZBLCAweDIwNjUsDQorICAgIDB4QkI2QiwgMHhCQjZELCAweDQyODIsIDB4QkI2RSwgMHhCQjZFLCAweDI2QTMsIDB4QkI2RiwgMHhCQjdFLCAweDQyODUsDQorICAgIDB4QkI4MCwgMHhCQkEwLCAweDQyOTUsIDB4QkJBMSwgMHhCQkZFLCAweDA3QjYsIDB4QkM0MCwgMHhCQzUxLCAweDQyQjYsDQorICAgIDB4QkM1MiwgMHhCQzUyLCAweDI1RjUsIDB4QkM1MywgMHhCQzUzLCAweDFFRkMsIDB4QkM1NCwgMHhCQzU5LCAweDQyQzgsDQorICAgIDB4QkM1QSwgMHhCQzVBLCAweDIwMjQsIDB4QkM1QiwgMHhCQzYwLCAweDQyQ0UsIDB4QkM2MSwgMHhCQzYxLCAweDI2OUIsDQorICAgIDB4QkM2MiwgMHhCQzYyLCAweDQyRDQsIDB4QkM2MywgMHhCQzYzLCAweDI1RjMsIDB4QkM2NCwgMHhCQzY0LCAweDQyRDUsDQorICAgIDB4QkM2NSwgMHhCQzY1LCAweDIyRDksIDB4QkM2NiwgMHhCQzY2LCAweDQyRDYsIDB4QkM2NywgMHhCQzY3LCAweDI1RjQsDQorICAgIDB4QkM2OCwgMHhCQzY4LCAweDQyRDcsIDB4QkM2OSwgMHhCQzY5LCAweDI0MUIsIDB4QkM2QSwgMHhCQzZDLCAweDQyRDgsDQorICAgIDB4QkM2RCwgMHhCQzZELCAweDFGQzgsIDB4QkM2RSwgMHhCQzZFLCAweDQyREIsIDB4QkM2RiwgMHhCQzZGLCAweDFGN0IsDQorICAgIDB4QkM3MCwgMHhCQzcwLCAweDQyREMsIDB4QkM3MSwgMHhCQzcxLCAweDI0MUQsIDB4QkM3MiwgMHhCQzcyLCAweDQyREQsDQorICAgIDB4QkM3MywgMHhCQzczLCAweDIyNEMsIDB4QkM3NCwgMHhCQzc0LCAweDFGNDgsIDB4QkM3NSwgMHhCQzc1LCAweDI0MUMsDQorICAgIDB4QkM3NiwgMHhCQzc3LCAweDI0MUUsIDB4QkM3OCwgMHhCQzc4LCAweDIwRkYsIDB4QkM3OSwgMHhCQzc5LCAweDIxOUEsDQorICAgIDB4QkM3QSwgMHhCQzdBLCAweDQyREUsIDB4QkM3QiwgMHhCQzdCLCAweDIwOTEsIDB4QkM3QywgMHhCQzdELCAweDQyREYsDQorICAgIDB4QkM3RSwgMHhCQzdFLCAweDIwQTcsIDB4QkM4MCwgMHhCQzgxLCAweDQyRTEsIDB4QkM4MiwgMHhCQzgyLCAweDI0MjMsDQorICAgIDB4QkM4MywgMHhCQzgzLCAweDFFOUIsIDB4QkM4NCwgMHhCQzg0LCAweDI0MjIsIDB4QkM4NSwgMHhCQzg1LCAweDQyRTMsDQorICAgIDB4QkM4NiwgMHhCQzg2LCAweDIxMTAsIDB4QkM4NywgMHhCQzg3LCAweDQyRTQsIDB4QkM4OCwgMHhCQzg4LCAweDIyOEQsDQorICAgIDB4QkM4OSwgMHhCQzg5LCAweDFGNzEsIDB4QkM4QSwgMHhCQzhBLCAweDFFRjgsIDB4QkM4QiwgMHhCQzhCLCAweDI0MjEsDQorICAgIDB4QkM4QywgMHhCQzhFLCAweDQyRTUsIDB4QkM4RiwgMHhCQzhGLCAweDFFRjMsIDB4QkM5MCwgMHhCQzk5LCAweDQyRTgsDQorICAgIDB4QkM5QSwgMHhCQzlBLCAweDIxQjEsIDB4QkM5QiwgMHhCQzlCLCAweDI0MjYsIDB4QkM5QywgMHhCQzlDLCAweDI0MjUsDQorICAgIDB4QkM5RCwgMHhCQzlELCAweDIxMjAsIDB4QkM5RSwgMHhCQ0EwLCAweDQyRjIsIDB4QkNBMSwgMHhCQ0ZFLCAweDA4MTQsDQorICAgIDB4QkQ0MCwgMHhCRDQxLCAweDQyRjUsIDB4QkQ0MiwgMHhCRDQyLCAweDIxMUEsIDB4QkQ0MywgMHhCRDQzLCAweDI0MjQsDQorICAgIDB4QkQ0NCwgMHhCRDQ0LCAweDQyRjcsIDB4QkQ0NSwgMHhCRDQ1LCAweDI0MjgsIDB4QkQ0NiwgMHhCRDQ3LCAweDQyRjgsDQorICAgIDB4QkQ0OCwgMHhCRDQ4LCAweDI0MkEsIDB4QkQ0OSwgMHhCRDQ5LCAweDI0MjksIDB4QkQ0QSwgMHhCRDRBLCAweDQyRkEsDQorICAgIDB4QkQ0QiwgMHhCRDRCLCAweDIyOTQsIDB4QkQ0QywgMHhCRDRDLCAweDQyRkIsIDB4QkQ0RCwgMHhCRDRELCAweDIyQkUsDQorICAgIDB4QkQ0RSwgMHhCRDRFLCAweDQyRkMsIDB4QkQ0RiwgMHhCRDRGLCAweDFFMzEsIDB4QkQ1MCwgMHhCRDU2LCAweDQyRkQsDQorICAgIDB4QkQ1NywgMHhCRDU3LCAweDI0MkMsIDB4QkQ1OCwgMHhCRDU4LCAweDQzMDQsIDB4QkQ1OSwgMHhCRDU5LCAweDFGQjUsDQorICAgIDB4QkQ1QSwgMHhCRDY1LCAweDQzMDUsIDB4QkQ2NiwgMHhCRDY2LCAweDI0MkIsIDB4QkQ2NywgMHhCRDY3LCAweDFGQUYsDQorICAgIDB4QkQ2OCwgMHhCRDY5LCAweDQzMTEsIDB4QkQ2QSwgMHhCRDZBLCAweDIwNjgsIDB4QkQ2QiwgMHhCRDZCLCAweDIxRTQsDQorICAgIDB4QkQ2QywgMHhCRDZFLCAweDQzMTMsIDB4QkQ2RiwgMHhCRDZGLCAweDFGMjEsIDB4QkQ3MCwgMHhCRDcwLCAweDQzMTYsDQorICAgIDB4QkQ3MSwgMHhCRDcxLCAweDIxMDEsIDB4QkQ3MiwgMHhCRDc4LCAweDQzMTcsIDB4QkQ3OSwgMHhCRDc5LCAweDIxN0MsDQorICAgIDB4QkQ3QSwgMHhCRDdBLCAweDIxNEEsIDB4QkQ3QiwgMHhCRDdCLCAweDI0MkQsIDB4QkQ3QywgMHhCRDdELCAweDQzMUUsDQorICAgIDB4QkQ3RSwgMHhCRDdFLCAweDFGRDQsIDB4QkQ4MCwgMHhCRDgwLCAweDQzMjAsIDB4QkQ4MSwgMHhCRDgxLCAweDFGRDEsDQorICAgIDB4QkQ4MiwgMHhCRDg4LCAweDQzMjEsIDB4QkQ4OSwgMHhCRDg5LCAweDFFMzMsIDB4QkQ4QSwgMHhCRDhBLCAweDQzMjgsDQorICAgIDB4QkQ4QiwgMHhCRDhCLCAweDI0MkYsIDB4QkQ4QywgMHhCRDhELCAweDQzMjksIDB4QkQ4RSwgMHhCRDhFLCAweDI0MkUsDQorICAgIDB4QkQ4RiwgMHhCRDhGLCAweDQzMkIsIDB4QkQ5MCwgMHhCRDkwLCAweDI0MzAsIDB4QkQ5MSwgMHhCRDkxLCAweDIxREIsDQorICAgIDB4QkQ5MiwgMHhCRDk2LCAweDQzMkMsIDB4QkQ5NywgMHhCRDk3LCAweDIxNTgsIDB4QkQ5OCwgMHhCRDlBLCAweDQzMzEsDQorICAgIDB4QkQ5QiwgMHhCRDlCLCAweDFGQzIsIDB4QkQ5QywgMHhCREEwLCAweDQzMzQsIDB4QkRBMSwgMHhCREZFLCAweDA4NzIsDQorICAgIDB4QkU0MCwgMHhCRTQyLCAweDQzMzksIDB4QkU0MywgMHhCRTQzLCAweDIyQjksIDB4QkU0NCwgMHhCRTQ0LCAweDQzM0MsDQorICAgIDB4QkU0NSwgMHhCRTQ1LCAweDI0MzYsIDB4QkU0NiwgMHhCRTQ4LCAweDQzM0QsIDB4QkU0OSwgMHhCRTQ5LCAweDFFOEUsDQorICAgIDB4QkU0QSwgMHhCRTRBLCAweDI0MzksIDB4QkU0QiwgMHhCRTUwLCAweDQzNDAsIDB4QkU1MSwgMHhCRTUxLCAweDIxQzUsDQorICAgIDB4QkU1MiwgMHhCRTUyLCAweDI0MzcsIDB4QkU1MywgMHhCRTUzLCAweDIxOTIsIDB4QkU1NCwgMHhCRTU0LCAweDQzNDYsDQorICAgIDB4QkU1NSwgMHhCRTU1LCAweDI0M0EsIDB4QkU1NiwgMHhCRTU2LCAweDFGMTksIDB4QkU1NywgMHhCRTU3LCAweDIxOEMsDQorICAgIDB4QkU1OCwgMHhCRTU4LCAweDFFNDAsIDB4QkU1OSwgMHhCRTU5LCAweDIyQjMsIDB4QkU1QSwgMHhCRTVDLCAweDQzNDcsDQorICAgIDB4QkU1RCwgMHhCRTVELCAweDIwNUYsIDB4QkU1RSwgMHhCRTVFLCAweDI0MzgsIDB4QkU1RiwgMHhCRTVGLCAweDI0MzIsDQorICAgIDB4QkU2MCwgMHhCRTYwLCAweDIyNzQsIDB4QkU2MSwgMHhCRTYxLCAweDQzNEEsIDB4QkU2MiwgMHhCRTYyLCAweDFFOUMsDQorICAgIDB4QkU2MywgMHhCRTYzLCAweDI0MzEsIDB4QkU2NCwgMHhCRTY0LCAweDIwODUsIDB4QkU2NSwgMHhCRTY4LCAweDQzNEIsDQorICAgIDB4QkU2OSwgMHhCRTY5LCAweDI0MzUsIDB4QkU2QSwgMHhCRTZCLCAweDQzNEYsIDB4QkU2QywgMHhCRTZDLCAweDI0M0IsDQorICAgIDB4QkU2RCwgMHhCRTZFLCAweDQzNTEsIDB4QkU2RiwgMHhCRTZGLCAweDFGQjcsIDB4QkU3MCwgMHhCRTcwLCAweDI0MzMsDQorICAgIDB4QkU3MSwgMHhCRTc1LCAweDQzNTMsIDB4QkU3NiwgMHhCRTc2LCAweDIwNTQsIDB4QkU3NywgMHhCRTc3LCAweDIxREUsDQorICAgIDB4QkU3OCwgMHhCRTc4LCAweDQzNTgsIDB4QkU3OSwgMHhCRTc5LCAweDI0MzQsIDB4QkU3QSwgMHhCRTdCLCAweDQzNTksDQorICAgIDB4QkU3QywgMHhCRTdDLCAweDI0M0QsIDB4QkU3RCwgMHhCRTdELCAweDFGODksIDB4QkU3RSwgMHhCRTdFLCAweDI0M0MsDQorICAgIDB4QkU4MCwgMHhCRTgyLCAweDQzNUIsIDB4QkU4MywgMHhCRTgzLCAweDFGNkUsIDB4QkU4NCwgMHhCRTg0LCAweDFFRDgsDQorICAgIDB4QkU4NSwgMHhCRTg1LCAweDQzNUUsIDB4QkU4NiwgMHhCRTg2LCAweDFFQkYsIDB4QkU4NywgMHhCRTg3LCAweDI0NDUsDQorICAgIDB4QkU4OCwgMHhCRTg4LCAweDQzNUYsIDB4QkU4OSwgMHhCRTg5LCAweDIyNDksIDB4QkU4QSwgMHhCRThCLCAweDQzNjAsDQorICAgIDB4QkU4QywgMHhCRThDLCAweDI0NDEsIDB4QkU4RCwgMHhCRThELCAweDQzNjIsIDB4QkU4RSwgMHhCRThFLCAweDFFNDcsDQorICAgIDB4QkU4RiwgMHhCRThGLCAweDFGNTYsIDB4QkU5MCwgMHhCRTkxLCAweDQzNjMsIDB4QkU5MiwgMHhCRTkyLCAweDIwODYsDQorICAgIDB4QkU5MywgMHhCRTk0LCAweDQzNjUsIDB4QkU5NSwgMHhCRTk1LCAweDIxOTYsIDB4QkU5NiwgMHhCRTk2LCAweDQzNjcsDQorICAgIDB4QkU5NywgMHhCRTk3LCAweDI0NDMsIDB4QkU5OCwgMHhCRTk4LCAweDI0M0YsIDB4QkU5OSwgMHhCRTk5LCAweDQzNjgsDQorICAgIDB4QkU5QSwgMHhCRTlBLCAweDIwMjMsIDB4QkU5QiwgMHhCRTlCLCAweDQzNjksIDB4QkU5QywgMHhCRTlDLCAweDI0NDIsDQorICAgIDB4QkU5RCwgMHhCRTlFLCAweDQzNkEsIDB4QkU5RiwgMHhCRTlGLCAweDI0M0UsIDB4QkVBMCwgMHhCRUEwLCAweDQzNkMsDQorICAgIDB4QkVBMSwgMHhCRUZFLCAweDA4RDAsIDB4QkY0MCwgMHhCRjQwLCAweDI2QTYsIDB4QkY0MSwgMHhCRjRDLCAweDQzNkQsDQorICAgIDB4QkY0RCwgMHhCRjRELCAweDIzNEUsIDB4QkY0RSwgMHhCRjRFLCAweDI0NDYsIDB4QkY0RiwgMHhCRjRGLCAweDI0NEIsDQorICAgIDB4QkY1MCwgMHhCRjUwLCAweDI0NDQsIDB4QkY1MSwgMHhCRjU0LCAweDQzNzksIDB4QkY1NSwgMHhCRjU1LCAweDI0MjcsDQorICAgIDB4QkY1NiwgMHhCRjU2LCAweDI0NEMsIDB4QkY1NywgMHhCRjVGLCAweDQzN0QsIDB4QkY2MCwgMHhCRjYwLCAweDFGMEYsDQorICAgIDB4QkY2MSwgMHhCRjYxLCAweDQzODYsIDB4QkY2MiwgMHhCRjYyLCAweDI0NDcsIDB4QkY2MywgMHhCRjYzLCAweDI0NDksDQorICAgIDB4QkY2NCwgMHhCRjY0LCAweDI0NDgsIDB4QkY2NSwgMHhCRjY3LCAweDQzODcsIDB4QkY2OCwgMHhCRjY4LCAweDIxQzIsDQorICAgIDB4QkY2OSwgMHhCRjZCLCAweDQzOEEsIDB4QkY2QywgMHhCRjZDLCAweDIxNkUsIDB4QkY2RCwgMHhCRjZGLCAweDQzOEQsDQorICAgIDB4QkY3MCwgMHhCRjcwLCAweDFGMDMsIDB4QkY3MSwgMHhCRjcxLCAweDQzOTAsIDB4QkY3MiwgMHhCRjcyLCAweDI0NEEsDQorICAgIDB4QkY3MywgMHhCRjczLCAweDIxNUMsIDB4QkY3NCwgMHhCRjc1LCAweDQzOTEsIDB4QkY3NiwgMHhCRjc2LCAweDIyQkIsDQorICAgIDB4QkY3NywgMHhCRjc3LCAweDI0NTAsIDB4QkY3OCwgMHhCRjc4LCAweDQzOTMsIDB4QkY3OSwgMHhCRjc5LCAweDI2OTQsDQorICAgIDB4QkY3QSwgMHhCRjdBLCAweDI0NEYsIDB4QkY3QiwgMHhCRjdCLCAweDI1RjYsIDB4QkY3QywgMHhCRjdDLCAweDIwNTEsDQorICAgIDB4QkY3RCwgMHhCRjdELCAweDQzOTQsIDB4QkY3RSwgMHhCRjdFLCAweDI0NEUsIDB4QkY4MCwgMHhCRjgxLCAweDQzOTUsDQorICAgIDB4QkY4MiwgMHhCRjgyLCAweDIyQkEsIDB4QkY4MywgMHhCRjgzLCAweDFGNkQsIDB4QkY4NCwgMHhCRjg4LCAweDQzOTcsDQorICAgIDB4QkY4OSwgMHhCRjg5LCAweDI0NTIsIDB4QkY4QSwgMHhCRjhBLCAweDI0NTEsIDB4QkY4QiwgMHhCRjk0LCAweDQzOUMsDQorICAgIDB4QkY5NSwgMHhCRjk1LCAweDI0NTUsIDB4QkY5NiwgMHhCRjk2LCAweDQzQTYsIDB4QkY5NywgMHhCRjk3LCAweDIyODksDQorICAgIDB4QkY5OCwgMHhCRjk4LCAweDIxMTYsIDB4QkY5OSwgMHhCRjlDLCAweDQzQTcsIDB4QkY5RCwgMHhCRjlELCAweDI0NTQsDQorICAgIDB4QkY5RSwgMHhCRkEwLCAweDQzQUIsIDB4QkZBMSwgMHhCRkZFLCAweDA5MkUsIDB4QzA0MCwgMHhDMDQwLCAweDIwRkIsDQorICAgIDB4QzA0MSwgMHhDMDQzLCAweDQzQUUsIDB4QzA0NCwgMHhDMDQ0LCAweDI0NDAsIDB4QzA0NSwgMHhDMDRBLCAweDQzQjEsDQorICAgIDB4QzA0QiwgMHhDMDRCLCAweDIxMjYsIDB4QzA0QywgMHhDMDRDLCAweDFGNjEsIDB4QzA0RCwgMHhDMDRELCAweDI2OUQsDQorICAgIDB4QzA0RSwgMHhDMDRFLCAweDQzQjcsIDB4QzA0RiwgMHhDMDRGLCAweDFGOEEsIDB4QzA1MCwgMHhDMDUwLCAweDI0NTYsDQorICAgIDB4QzA1MSwgMHhDMDUxLCAweDI0NTksIDB4QzA1MiwgMHhDMDUyLCAweDI0NTgsIDB4QzA1MywgMHhDMDU0LCAweDQzQjgsDQorICAgIDB4QzA1NSwgMHhDMDU1LCAweDFGQUUsIDB4QzA1NiwgMHhDMDVBLCAweDQzQkEsIDB4QzA1QiwgMHhDMDVCLCAweDIyMUEsDQorICAgIDB4QzA1QywgMHhDMDVELCAweDQzQkYsIDB4QzA1RSwgMHhDMDVFLCAweDFGN0EsIDB4QzA1RiwgMHhDMDVGLCAweDI0NEQsDQorICAgIDB4QzA2MCwgMHhDMDYwLCAweDI0NTcsIDB4QzA2MSwgMHhDMDY4LCAweDQzQzEsIDB4QzA2OSwgMHhDMDY5LCAweDI0NTMsDQorICAgIDB4QzA2QSwgMHhDMDZBLCAweDQzQzksIDB4QzA2QiwgMHhDMDZCLCAweDI0MjAsIDB4QzA2QywgMHhDMDZDLCAweDQzQ0EsDQorICAgIDB4QzA2RCwgMHhDMDZELCAweDIxREYsIDB4QzA2RSwgMHhDMDZFLCAweDI2ODUsIDB4QzA2RiwgMHhDMDZGLCAweDQzQ0IsDQorICAgIDB4QzA3MCwgMHhDMDcwLCAweDFFNkUsIDB4QzA3MSwgMHhDMDczLCAweDQzQ0MsIDB4QzA3NCwgMHhDMDc0LCAweDIyMjQsDQorICAgIDB4QzA3NSwgMHhDMDc1LCAweDI2NzAsIDB4QzA3NiwgMHhDMDc2LCAweDQzQ0YsIDB4QzA3NywgMHhDMDc3LCAweDIxQkEsDQorICAgIDB4QzA3OCwgMHhDMDc4LCAweDQzRDAsIDB4QzA3OSwgMHhDMDc5LCAweDI0NUEsIDB4QzA3QSwgMHhDMDdCLCAweDQzRDEsDQorICAgIDB4QzA3QywgMHhDMDdDLCAweDFGRkYsIDB4QzA3RCwgMHhDMDdFLCAweDQzRDMsIDB4QzA4MCwgMHhDMDlBLCAweDQzRDUsDQorICAgIDB4QzA5QiwgMHhDMDlCLCAweDI1RTIsIDB4QzA5QywgMHhDMDlDLCAweDQzRjAsIDB4QzA5RCwgMHhDMDlELCAweDI2OUEsDQorICAgIDB4QzA5RSwgMHhDMEEwLCAweDQzRjEsIDB4QzBBMSwgMHhDMEZFLCAweDA5OEMsIDB4QzE0MCwgMHhDMTRGLCAweDQzRjQsDQorICAgIDB4QzE1MCwgMHhDMTUwLCAweDFFRUEsIDB4QzE1MSwgMHhDMTUzLCAweDQ0MDQsIDB4QzE1NCwgMHhDMTU0LCAweDFFMkMsDQorICAgIDB4QzE1NSwgMHhDMTVFLCAweDQ0MDcsIDB4QzE1RiwgMHhDMTVGLCAweDIwNjIsIDB4QzE2MCwgMHhDMTYwLCAweDI0RjEsDQorICAgIDB4QzE2MSwgMHhDMTYxLCAweDQ0MTEsIDB4QzE2MiwgMHhDMTYyLCAweDI0RjIsIDB4QzE2MywgMHhDMTc0LCAweDQ0MTIsDQorICAgIDB4QzE3NSwgMHhDMTc1LCAweDI1RjIsIDB4QzE3NiwgMHhDMTc3LCAweDQ0MjQsIDB4QzE3OCwgMHhDMTc4LCAweDIyMTUsDQorICAgIDB4QzE3OSwgMHhDMTdFLCAweDQ0MjYsIDB4QzE4MCwgMHhDMTk0LCAweDQ0MkMsIDB4QzE5NSwgMHhDMTk1LCAweDIxQUUsDQorICAgIDB4QzE5NiwgMHhDMUEwLCAweDQ0NDEsIDB4QzFBMSwgMHhDMUZFLCAweDA5RUEsIDB4QzI0MCwgMHhDMjRELCAweDQ0NEMsDQorICAgIDB4QzI0RSwgMHhDMjRFLCAweDIwRTAsIDB4QzI0RiwgMHhDMjY0LCAweDQ0NUEsIDB4QzI2NSwgMHhDMjY1LCAweDI1QzIsDQorICAgIDB4QzI2NiwgMHhDMjY2LCAweDQ0NzAsIDB4QzI2NywgMHhDMjY3LCAweDI1QzEsIDB4QzI2OCwgMHhDMjdDLCAweDQ0NzEsDQorICAgIDB4QzI3RCwgMHhDMjdELCAweDIxMjgsIDB4QzI3RSwgMHhDMjdFLCAweDQ0ODYsIDB4QzI4MCwgMHhDMjgzLCAweDQ0ODcsDQorICAgIDB4QzI4NCwgMHhDMjg0LCAweDIxOTksIDB4QzI4NSwgMHhDMjkyLCAweDQ0OEIsIDB4QzI5MywgMHhDMjkzLCAweDIwMTcsDQorICAgIDB4QzI5NCwgMHhDMjk0LCAweDFFQTAsIDB4QzI5NSwgMHhDMjk1LCAweDIxMjUsIDB4QzI5NiwgMHhDMjk2LCAweDIxNEQsDQorICAgIDB4QzI5NywgMHhDMjk3LCAweDQ0OTksIDB4QzI5OCwgMHhDMjk4LCAweDI1QzQsIDB4QzI5OSwgMHhDMjk5LCAweDIwOUQsDQorICAgIDB4QzI5QSwgMHhDMjlBLCAweDIyOEEsIDB4QzI5QiwgMHhDMjlCLCAweDQ0OUEsIDB4QzI5QywgMHhDMjlDLCAweDI1QzMsDQorICAgIDB4QzI5RCwgMHhDMjlGLCAweDQ0OUIsIDB4QzJBMCwgMHhDMkEwLCAweDIxNzksIDB4QzJBMSwgMHhDMkZFLCAweDBBNDgsDQorICAgIDB4QzM0MCwgMHhDMzQwLCAweDIwMzgsIDB4QzM0MSwgMHhDMzQyLCAweDQ0OUUsIDB4QzM0MywgMHhDMzQzLCAweDIxNTUsDQorICAgIDB4QzM0NCwgMHhDMzdBLCAweDQ0QTAsIDB4QzM3QiwgMHhDMzdCLCAweDIxRDIsIDB4QzM3QywgMHhDMzdFLCAweDQ0RDcsDQorICAgIDB4QzM4MCwgMHhDMzgzLCAweDQ0REEsIDB4QzM4NCwgMHhDMzg0LCAweDI0QzcsIDB4QzM4NSwgMHhDMzlBLCAweDQ0REUsDQorICAgIDB4QzM5QiwgMHhDMzlCLCAweDIyNzksIDB4QzM5QywgMHhDM0EwLCAweDQ0RjQsIDB4QzNBMSwgMHhDM0ZFLCAweDBBQTYsDQorICAgIDB4QzQ0MCwgMHhDNDQ4LCAweDQ0RjksIDB4QzQ0OSwgMHhDNDQ5LCAweDIxMjMsIDB4QzQ0QSwgMHhDNDRCLCAweDQ1MDIsDQorICAgIDB4QzQ0QywgMHhDNDRDLCAweDI0QzUsIDB4QzQ0RCwgMHhDNDUzLCAweDQ1MDQsIDB4QzQ1NCwgMHhDNDU0LCAweDI0QzksDQorICAgIDB4QzQ1NSwgMHhDNDU3LCAweDQ1MEIsIDB4QzQ1OCwgMHhDNDU4LCAweDIwOTQsIDB4QzQ1OSwgMHhDNDVBLCAweDQ1MEUsDQorICAgIDB4QzQ1QiwgMHhDNDVCLCAweDIyOTYsIDB4QzQ1QywgMHhDNDYyLCAweDQ1MTAsIDB4QzQ2MywgMHhDNDYzLCAweDFFNzcsDQorICAgIDB4QzQ2NCwgMHhDNDc2LCAweDQ1MTcsIDB4QzQ3NywgMHhDNDc3LCAweDFGMDYsIDB4QzQ3OCwgMHhDNDc5LCAweDQ1MkEsDQorICAgIDB4QzQ3QSwgMHhDNDdBLCAweDFGQTUsIDB4QzQ3QiwgMHhDNDdFLCAweDQ1MkMsIDB4QzQ4MCwgMHhDNDgwLCAweDQ1MzAsDQorICAgIDB4QzQ4MSwgMHhDNDgxLCAweDIwOTksIDB4QzQ4MiwgMHhDNDkwLCAweDQ1MzEsIDB4QzQ5MSwgMHhDNDkxLCAweDFFQUQsDQorICAgIDB4QzQ5MiwgMHhDNDkyLCAweDI0QzgsIDB4QzQ5MywgMHhDNDkzLCAweDIwQTgsIDB4QzQ5NCwgMHhDNDk3LCAweDQ1NDAsDQorICAgIDB4QzQ5OCwgMHhDNDk4LCAweDIwMUYsIDB4QzQ5OSwgMHhDNDk5LCAweDQ1NDQsIDB4QzQ5QSwgMHhDNDlBLCAweDIwQzUsDQorICAgIDB4QzQ5QiwgMHhDNDlCLCAweDQ1NDUsIDB4QzQ5QywgMHhDNDlDLCAweDI0Q0EsIDB4QzQ5RCwgMHhDNEEwLCAweDQ1NDYsDQorICAgIDB4QzRBMSwgMHhDNEZFLCAweDBCMDQsIDB4QzU0MCwgMHhDNTQzLCAweDQ1NEEsIDB4QzU0NCwgMHhDNTQ0LCAweDFGRjAsDQorICAgIDB4QzU0NSwgMHhDNTQ1LCAweDQ1NEUsIDB4QzU0NiwgMHhDNTQ2LCAweDI0QzYsIDB4QzU0NywgMHhDNTRBLCAweDQ1NEYsDQorICAgIDB4QzU0QiwgMHhDNTRCLCAweDIyNUQsIDB4QzU0QywgMHhDNTRDLCAweDIyREUsIDB4QzU0RCwgMHhDNTUxLCAweDQ1NTMsDQorICAgIDB4QzU1MiwgMHhDNTUyLCAweDIwMkMsIDB4QzU1MywgMHhDNTVFLCAweDQ1NTgsIDB4QzU1RiwgMHhDNTVGLCAweDIxNjEsDQorICAgIDB4QzU2MCwgMHhDNTYyLCAweDQ1NjQsIDB4QzU2MywgMHhDNTYzLCAweDIyM0IsIDB4QzU2NCwgMHhDNTY0LCAweDIxRDksDQorICAgIDB4QzU2NSwgMHhDNTY1LCAweDFGQ0IsIDB4QzU2NiwgMHhDNTY2LCAweDFGQzksIDB4QzU2NywgMHhDNTdFLCAweDQ1NjcsDQorICAgIDB4QzU4MCwgMHhDNTkyLCAweDQ1N0YsIDB4QzU5MywgMHhDNTkzLCAweDFFNjEsIDB4QzU5NCwgMHhDNTlCLCAweDQ1OTIsDQorICAgIDB4QzU5QywgMHhDNTlDLCAweDI1RUYsIDB4QzU5RCwgMHhDNTlELCAweDQ1OUEsIDB4QzU5RSwgMHhDNTlFLCAweDFGOTgsDQorICAgIDB4QzU5RiwgMHhDNUEwLCAweDQ1OUIsIDB4QzVBMSwgMHhDNUZFLCAweDBCNjIsIDB4QzY0MCwgMHhDNjQwLCAweDQ1OUQsDQorICAgIDB4QzY0MSwgMHhDNjQxLCAweDI1RjAsIDB4QzY0MiwgMHhDNjQzLCAweDQ1OUUsIDB4QzY0NCwgMHhDNjQ0LCAweDFGODgsDQorICAgIDB4QzY0NSwgMHhDNjQ2LCAweDQ1QTAsIDB4QzY0NywgMHhDNjQ3LCAweDIxRjgsIDB4QzY0OCwgMHhDNjYyLCAweDQ1QTIsDQorICAgIDB4QzY2MywgMHhDNjYzLCAweDIzMjIsIDB4QzY2NCwgMHhDNjcxLCAweDQ1QkQsIDB4QzY3MiwgMHhDNjcyLCAweDIzMzYsDQorICAgIDB4QzY3MywgMHhDNjdFLCAweDQ1Q0IsIDB4QzY4MCwgMHhDNkEwLCAweDQ1RDcsIDB4QzZBMSwgMHhDNkZFLCAweDBCQzAsDQorICAgIDB4Qzc0MCwgMHhDNzY1LCAweDQ1RjgsIDB4Qzc2NiwgMHhDNzY2LCAweDIyQUIsIDB4Qzc2NywgMHhDNzZFLCAweDQ2MUUsDQorICAgIDB4Qzc2RiwgMHhDNzZGLCAweDFGQkYsIDB4Qzc3MCwgMHhDNzc1LCAweDQ2MjYsIDB4Qzc3NiwgMHhDNzc2LCAweDFGN0QsDQorICAgIDB4Qzc3NywgMHhDNzdBLCAweDQ2MkMsIDB4Qzc3QiwgMHhDNzdCLCAweDIzMzMsIDB4Qzc3QywgMHhDNzdFLCAweDQ2MzAsDQorICAgIDB4Qzc4MCwgMHhDN0EwLCAweDQ2MzMsIDB4QzdBMSwgMHhDN0ZFLCAweDBDMUUsIDB4Qzg0MCwgMHhDODQwLCAweDQ2NTQsDQorICAgIDB4Qzg0MSwgMHhDODQxLCAweDFGNEQsIDB4Qzg0MiwgMHhDODRFLCAweDQ2NTUsIDB4Qzg0RiwgMHhDODRGLCAweDIzMzQsDQorICAgIDB4Qzg1MCwgMHhDODUxLCAweDQ2NjIsIDB4Qzg1MiwgMHhDODUyLCAweDFGRjEsIDB4Qzg1MywgMHhDODY1LCAweDQ2NjQsDQorICAgIDB4Qzg2NiwgMHhDODY2LCAweDIxOEIsIDB4Qzg2NywgMHhDODZELCAweDQ2NzcsIDB4Qzg2RSwgMHhDODZFLCAweDIzNDksDQorICAgIDB4Qzg2RiwgMHhDODdELCAweDQ2N0UsIDB4Qzg3RSwgMHhDODdFLCAweDIyMEIsIDB4Qzg4MCwgMHhDODg2LCAweDQ2OEQsDQorICAgIDB4Qzg4NywgMHhDODg3LCAweDIzNDYsIDB4Qzg4OCwgMHhDODkxLCAweDQ2OTQsIDB4Qzg5MiwgMHhDODkyLCAweDIzNDcsDQorICAgIDB4Qzg5MywgMHhDODkzLCAweDQ2OUUsIDB4Qzg5NCwgMHhDODk0LCAweDIxOTMsIDB4Qzg5NSwgMHhDODk4LCAweDQ2OUYsDQorICAgIDB4Qzg5OSwgMHhDODk5LCAweDI2QTEsIDB4Qzg5QSwgMHhDODlDLCAweDQ2QTMsIDB4Qzg5RCwgMHhDODlELCAweDFGNjIsDQorICAgIDB4Qzg5RSwgMHhDOEEwLCAweDQ2QTYsIDB4QzhBMSwgMHhDOEZFLCAweDBDN0MsIDB4Qzk0MCwgMHhDOTRFLCAweDQ2QTksDQorICAgIDB4Qzk0RiwgMHhDOTRGLCAweDIzNEQsIDB4Qzk1MCwgMHhDOTUwLCAweDIzNDgsIDB4Qzk1MSwgMHhDOTZELCAweDQ2QjgsDQorICAgIDB4Qzk2RSwgMHhDOTZFLCAweDFFNjAsIDB4Qzk2RiwgMHhDOTZGLCAweDQ2RDUsIDB4Qzk3MCwgMHhDOTcwLCAweDIzNDUsDQorICAgIDB4Qzk3MSwgMHhDOTc2LCAweDQ2RDYsIDB4Qzk3NywgMHhDOTc3LCAweDFGMTIsIDB4Qzk3OCwgMHhDOTdFLCAweDQ2REMsDQorICAgIDB4Qzk4MCwgMHhDOThFLCAweDQ2RTMsIDB4Qzk4RiwgMHhDOThGLCAweDIwMTgsIDB4Qzk5MCwgMHhDOTkwLCAweDIzMzUsDQorICAgIDB4Qzk5MSwgMHhDOTlCLCAweDQ2RjIsIDB4Qzk5QywgMHhDOTlDLCAweDIzM0MsIDB4Qzk5RCwgMHhDOUEwLCAweDQ2RkQsDQorICAgIDB4QzlBMSwgMHhDOUZFLCAweDBDREEsIDB4Q0E0MCwgMHhDQTRELCAweDQ3MDEsIDB4Q0E0RSwgMHhDQTRFLCAweDI2NkYsDQorICAgIDB4Q0E0RiwgMHhDQTU1LCAweDQ3MEYsIDB4Q0E1NiwgMHhDQTU2LCAweDIzNTEsIDB4Q0E1NywgMHhDQTU4LCAweDQ3MTYsDQorICAgIDB4Q0E1OSwgMHhDQTU5LCAweDFGQTAsIDB4Q0E1QSwgMHhDQTVCLCAweDQ3MTgsIDB4Q0E1QywgMHhDQTVDLCAweDIzMzgsDQorICAgIDB4Q0E1RCwgMHhDQTYwLCAweDQ3MUEsIDB4Q0E2MSwgMHhDQTYxLCAweDIyMUIsIDB4Q0E2MiwgMHhDQTZELCAweDQ3MUUsDQorICAgIDB4Q0E2RSwgMHhDQTZFLCAweDIzNDIsIDB4Q0E2RiwgMHhDQTcxLCAweDQ3MkEsIDB4Q0E3MiwgMHhDQTcyLCAweDIzNEYsDQorICAgIDB4Q0E3MywgMHhDQTc2LCAweDQ3MkQsIDB4Q0E3NywgMHhDQTc3LCAweDIzM0QsIDB4Q0E3OCwgMHhDQTdBLCAweDQ3MzEsDQorICAgIDB4Q0E3QiwgMHhDQTdCLCAweDIzNDQsIDB4Q0E3QywgMHhDQTdDLCAweDIzMzEsIDB4Q0E3RCwgMHhDQTdELCAweDQ3MzQsDQorICAgIDB4Q0E3RSwgMHhDQTdFLCAweDIzNEIsIDB4Q0E4MCwgMHhDQTgwLCAweDQ3MzUsIDB4Q0E4MSwgMHhDQTgxLCAweDIzM0IsDQorICAgIDB4Q0E4MiwgMHhDQTg4LCAweDQ3MzYsIDB4Q0E4OSwgMHhDQTg5LCAweDIzNTAsIDB4Q0E4QSwgMHhDQThELCAweDQ3M0QsDQorICAgIDB4Q0E4RSwgMHhDQThFLCAweDFFQjQsIDB4Q0E4RiwgMHhDQThGLCAweDIxQTYsIDB4Q0E5MCwgMHhDQTkxLCAweDQ3NDEsDQorICAgIDB4Q0E5MiwgMHhDQTkyLCAweDIxQ0IsIDB4Q0E5MywgMHhDQTk5LCAweDQ3NDMsIDB4Q0E5QSwgMHhDQTlBLCAweDIzNTUsDQorICAgIDB4Q0E5QiwgMHhDQUEwLCAweDQ3NEEsIDB4Q0FBMSwgMHhDQUZFLCAweDBEMzgsIDB4Q0I0MCwgMHhDQjQyLCAweDQ3NTAsDQorICAgIDB4Q0I0MywgMHhDQjQzLCAweDIzM0UsIDB4Q0I0NCwgMHhDQjQ0LCAweDQ3NTMsIDB4Q0I0NSwgMHhDQjQ1LCAweDFGNzQsDQorICAgIDB4Q0I0NiwgMHhDQjQ2LCAweDQ3NTQsIDB4Q0I0NywgMHhDQjQ3LCAweDIzMzAsIDB4Q0I0OCwgMHhDQjRBLCAweDQ3NTUsDQorICAgIDB4Q0I0QiwgMHhDQjRCLCAweDI2ODAsIDB4Q0I0QywgMHhDQjRELCAweDQ3NTgsIDB4Q0I0RSwgMHhDQjRFLCAweDIwREEsDQorICAgIDB4Q0I0RiwgMHhDQjU2LCAweDQ3NUEsIDB4Q0I1NywgMHhDQjU3LCAweDIzNEEsIDB4Q0I1OCwgMHhDQjVDLCAweDQ3NjIsDQorICAgIDB4Q0I1RCwgMHhDQjVELCAweDFGOTEsIDB4Q0I1RSwgMHhDQjVFLCAweDQ3NjcsIDB4Q0I1RiwgMHhDQjVGLCAweDIxMDcsDQorICAgIDB4Q0I2MCwgMHhDQjY5LCAweDQ3NjgsIDB4Q0I2QSwgMHhDQjZBLCAweDIzM0YsIDB4Q0I2QiwgMHhDQjdBLCAweDQ3NzIsDQorICAgIDB4Q0I3QiwgMHhDQjdCLCAweDFGRjQsIDB4Q0I3QywgMHhDQjdDLCAweDIzNDMsIDB4Q0I3RCwgMHhDQjdFLCAweDQ3ODIsDQorICAgIDB4Q0I4MCwgMHhDQjg2LCAweDQ3ODQsIDB4Q0I4NywgMHhDQjg3LCAweDIyMTIsIDB4Q0I4OCwgMHhDQjhELCAweDQ3OEIsDQorICAgIDB4Q0I4RSwgMHhDQjhFLCAweDIyMDcsIDB4Q0I4RiwgMHhDQjkxLCAweDQ3OTEsIDB4Q0I5MiwgMHhDQjkyLCAweDIzNTksDQorICAgIDB4Q0I5MywgMHhDQjlCLCAweDQ3OTQsIDB4Q0I5QywgMHhDQjlDLCAweDIyNTQsIDB4Q0I5RCwgMHhDQjlELCAweDQ3OUQsDQorICAgIDB4Q0I5RSwgMHhDQjlFLCAweDIzMzIsIDB4Q0I5RiwgMHhDQkEwLCAweDQ3OUUsIDB4Q0JBMSwgMHhDQkZFLCAweDBEOTYsDQorICAgIDB4Q0M0MCwgMHhDQzQwLCAweDFFMjYsIDB4Q0M0MSwgMHhDQzQxLCAweDIzNTcsIDB4Q0M0MiwgMHhDQzQ4LCAweDQ3QTAsDQorICAgIDB4Q0M0OSwgMHhDQzQ5LCAweDIzNTgsIDB4Q0M0QSwgMHhDQzRBLCAweDIwNDIsIDB4Q0M0QiwgMHhDQzRCLCAweDIxNTMsDQorICAgIDB4Q0M0QywgMHhDQzRFLCAweDQ3QTcsIDB4Q0M0RiwgMHhDQzRGLCAweDIwQkIsIDB4Q0M1MCwgMHhDQzVCLCAweDQ3QUEsDQorICAgIDB4Q0M1QywgMHhDQzVDLCAweDIzNUEsIDB4Q0M1RCwgMHhDQzVGLCAweDQ3QjYsIDB4Q0M2MCwgMHhDQzYwLCAweDIzNTYsDQorICAgIDB4Q0M2MSwgMHhDQzYzLCAweDQ3QjksIDB4Q0M2NCwgMHhDQzY0LCAweDIzMzcsIDB4Q0M2NSwgMHhDQzZDLCAweDQ3QkMsDQorICAgIDB4Q0M2RCwgMHhDQzZELCAweDFGRjksIDB4Q0M2RSwgMHhDQzc4LCAweDQ3QzQsIDB4Q0M3OSwgMHhDQzc5LCAweDIzNTMsDQorICAgIDB4Q0M3QSwgMHhDQzdDLCAweDQ3Q0YsIDB4Q0M3RCwgMHhDQzdELCAweDIwNjEsIDB4Q0M3RSwgMHhDQzdFLCAweDQ3RDIsDQorICAgIDB4Q0M4MCwgMHhDQzhELCAweDQ3RDMsIDB4Q0M4RSwgMHhDQzhFLCAweDFFOTUsIDB4Q0M4RiwgMHhDQzkzLCAweDQ3RTEsDQorICAgIDB4Q0M5NCwgMHhDQzk0LCAweDIwNDksIDB4Q0M5NSwgMHhDQzk1LCAweDQ3RTYsIDB4Q0M5NiwgMHhDQzk2LCAweDFGNDIsDQorICAgIDB4Q0M5NywgMHhDQzlDLCAweDQ3RTcsIDB4Q0M5RCwgMHhDQzlELCAweDFGRTgsIDB4Q0M5RSwgMHhDQ0EwLCAweDQ3RUQsDQorICAgIDB4Q0NBMSwgMHhDQ0ZFLCAweDBERjQsIDB4Q0Q0MCwgMHhDRDdFLCAweDQ3RjAsIDB4Q0Q4MCwgMHhDRDhGLCAweDQ4MkYsDQorICAgIDB4Q0Q5MCwgMHhDRDkwLCAweDI1REEsIDB4Q0Q5MSwgMHhDRDk3LCAweDQ4M0YsIDB4Q0Q5OCwgMHhDRDk4LCAweDI1RDcsDQorICAgIDB4Q0Q5OSwgMHhDREEwLCAweDQ4NDYsIDB4Q0RBMSwgMHhDREZFLCAweDBFNTIsIDB4Q0U0MCwgMHhDRTY2LCAweDQ4NEUsDQorICAgIDB4Q0U2NywgMHhDRTY3LCAweDIxMkUsIDB4Q0U2OCwgMHhDRTcxLCAweDQ4NzUsIDB4Q0U3MiwgMHhDRTcyLCAweDIxQjIsDQorICAgIDB4Q0U3MywgMHhDRTdFLCAweDQ4N0YsIDB4Q0U4MCwgMHhDRTgwLCAweDQ4OEIsIDB4Q0U4MSwgMHhDRTgxLCAweDIxOUUsDQorICAgIDB4Q0U4MiwgMHhDRTg2LCAweDQ4OEMsIDB4Q0U4NywgMHhDRTg3LCAweDI1REMsIDB4Q0U4OCwgMHhDRTlBLCAweDQ4OTEsDQorICAgIDB4Q0U5QiwgMHhDRTlCLCAweDIwNkMsIDB4Q0U5QywgMHhDRTlELCAweDQ4QTQsIDB4Q0U5RSwgMHhDRTlFLCAweDIyMjYsDQorICAgIDB4Q0U5RiwgMHhDRUEwLCAweDQ4QTYsIDB4Q0VBMSwgMHhDRUZFLCAweDBFQjAsIDB4Q0Y0MCwgMHhDRjRELCAweDQ4QTgsDQorICAgIDB4Q0Y0RSwgMHhDRjRFLCAweDI1RTAsIDB4Q0Y0RiwgMHhDRjU0LCAweDQ4QjYsIDB4Q0Y1NSwgMHhDRjU1LCAweDIyN0IsDQorICAgIDB4Q0Y1NiwgMHhDRjU3LCAweDQ4QkMsIDB4Q0Y1OCwgMHhDRjU4LCAweDI1REUsIDB4Q0Y1OSwgMHhDRjVCLCAweDQ4QkUsDQorICAgIDB4Q0Y1QywgMHhDRjVDLCAweDI1RTEsIDB4Q0Y1RCwgMHhDRjZCLCAweDQ4QzEsIDB4Q0Y2QywgMHhDRjZDLCAweDI1RDUsDQorICAgIDB4Q0Y2RCwgMHhDRjcyLCAweDQ4RDAsIDB4Q0Y3MywgMHhDRjczLCAweDFFNkIsIDB4Q0Y3NCwgMHhDRjc0LCAweDQ4RDYsDQorICAgIDB4Q0Y3NSwgMHhDRjc1LCAweDI1REIsIDB4Q0Y3NiwgMHhDRjc3LCAweDQ4RDcsIDB4Q0Y3OCwgMHhDRjc4LCAweDFFODksDQorICAgIDB4Q0Y3OSwgMHhDRjdCLCAweDQ4RDksIDB4Q0Y3QywgMHhDRjdDLCAweDI1RDksIDB4Q0Y3RCwgMHhDRjdFLCAweDQ4REMsDQorICAgIDB4Q0Y4MCwgMHhDRjgwLCAweDQ4REUsIDB4Q0Y4MSwgMHhDRjgxLCAweDIyMTEsIDB4Q0Y4MiwgMHhDRjg4LCAweDQ4REYsDQorICAgIDB4Q0Y4OSwgMHhDRjg5LCAweDIyMjksIDB4Q0Y4QSwgMHhDRjhBLCAweDI1RDYsIDB4Q0Y4QiwgMHhDRjkyLCAweDQ4RTYsDQorICAgIDB4Q0Y5MywgMHhDRjkzLCAweDI1REQsIDB4Q0Y5NCwgMHhDRjk0LCAweDI1REYsIDB4Q0Y5NSwgMHhDRjlELCAweDQ4RUUsDQorICAgIDB4Q0Y5RSwgMHhDRjlFLCAweDFGRUYsIDB4Q0Y5RiwgMHhDRjlGLCAweDQ4RjcsIDB4Q0ZBMCwgMHhDRkEwLCAweDI1RDgsDQorICAgIDB4Q0ZBMSwgMHhDRkZFLCAweDBGMEUsIDB4RDA0MCwgMHhEMDRDLCAweDQ4RjgsIDB4RDA0RCwgMHhEMDRELCAweDFGMjksDQorICAgIDB4RDA0RSwgMHhEMDUwLCAweDQ5MDUsIDB4RDA1MSwgMHhEMDUxLCAweDFFNUIsIDB4RDA1MiwgMHhEMDU0LCAweDQ5MDgsDQorICAgIDB4RDA1NSwgMHhEMDU1LCAweDIwNzYsIDB4RDA1NiwgMHhEMDVCLCAweDQ5MEIsIDB4RDA1QywgMHhEMDVDLCAweDIyOTcsDQorICAgIDB4RDA1RCwgMHhEMDVGLCAweDQ5MTEsIDB4RDA2MCwgMHhEMDYwLCAweDI2OTAsIDB4RDA2MSwgMHhEMDY2LCAweDQ5MTQsDQorICAgIDB4RDA2NywgMHhEMDY3LCAweDIxM0YsIDB4RDA2OCwgMHhEMDZCLCAweDQ5MUEsIDB4RDA2QywgMHhEMDZDLCAweDIxOTgsDQorICAgIDB4RDA2RCwgMHhEMDZELCAweDQ5MUUsIDB4RDA2RSwgMHhEMDZFLCAweDFFODgsIDB4RDA2RiwgMHhEMDdDLCAweDQ5MUYsDQorICAgIDB4RDA3RCwgMHhEMDdELCAweDIyOEMsIDB4RDA3RSwgMHhEMDdFLCAweDQ5MkQsIDB4RDA4MCwgMHhEMEEwLCAweDQ5MkUsDQorICAgIDB4RDBBMSwgMHhEMEZFLCAweDBGNkMsIDB4RDE0MCwgMHhEMTU0LCAweDQ5NEYsIDB4RDE1NSwgMHhEMTU1LCAweDI1RjEsDQorICAgIDB4RDE1NiwgMHhEMTU4LCAweDQ5NjQsIDB4RDE1OSwgMHhEMTU5LCAweDIwMEMsIDB4RDE1QSwgMHhEMTYwLCAweDQ5NjcsDQorICAgIDB4RDE2MSwgMHhEMTYxLCAweDFFNTgsIDB4RDE2MiwgMHhEMTYyLCAweDIyQUMsIDB4RDE2MywgMHhEMTc0LCAweDQ5NkUsDQorICAgIDB4RDE3NSwgMHhEMTc1LCAweDI2QTcsIDB4RDE3NiwgMHhEMTdDLCAweDQ5ODAsIDB4RDE3RCwgMHhEMTdELCAweDI2NzYsDQorICAgIDB4RDE3RSwgMHhEMTdFLCAweDQ5ODcsIDB4RDE4MCwgMHhEMTlDLCAweDQ5ODgsIDB4RDE5RCwgMHhEMTlELCAweDFGRTEsDQorICAgIDB4RDE5RSwgMHhEMTlFLCAweDI1QkIsIDB4RDE5RiwgMHhEMUEwLCAweDQ5QTUsIDB4RDFBMSwgMHhEMUZFLCAweDBGQ0EsDQorICAgIDB4RDI0MCwgMHhEMjQwLCAweDI1QkUsIDB4RDI0MSwgMHhEMjQyLCAweDQ5QTcsIDB4RDI0MywgMHhEMjQzLCAweDIyREQsDQorICAgIDB4RDI0NCwgMHhEMjRDLCAweDQ5QTksIDB4RDI0RCwgMHhEMjRELCAweDI1QkQsIDB4RDI0RSwgMHhEMjVCLCAweDQ5QjIsDQorICAgIDB4RDI1QywgMHhEMjVDLCAweDFFMkEsIDB4RDI1RCwgMHhEMjYyLCAweDQ5QzAsIDB4RDI2MywgMHhEMjYzLCAweDI1QkMsDQorICAgIDB4RDI2NCwgMHhEMjY0LCAweDI1QkEsIDB4RDI2NSwgMHhEMjY3LCAweDQ5QzYsIDB4RDI2OCwgMHhEMjY4LCAweDI1QkYsDQorICAgIDB4RDI2OSwgMHhEMjZDLCAweDQ5QzksIDB4RDI2RCwgMHhEMjZELCAweDIxODcsIDB4RDI2RSwgMHhEMjZFLCAweDQ5Q0QsDQorICAgIDB4RDI2RiwgMHhEMjZGLCAweDI2NkIsIDB4RDI3MCwgMHhEMjcxLCAweDQ5Q0UsIDB4RDI3MiwgMHhEMjcyLCAweDFFN0YsDQorICAgIDB4RDI3MywgMHhEMjc0LCAweDQ5RDAsIDB4RDI3NSwgMHhEMjc1LCAweDIxQUQsIDB4RDI3NiwgMHhEMjdFLCAweDQ5RDIsDQorICAgIDB4RDI4MCwgMHhEMjg5LCAweDQ5REIsIDB4RDI4QSwgMHhEMjhBLCAweDFGOTYsIDB4RDI4QiwgMHhEMjhELCAweDQ5RTUsDQorICAgIDB4RDI4RSwgMHhEMjhFLCAweDFGMzIsIDB4RDI4RiwgMHhEMjkxLCAweDQ5RTgsIDB4RDI5MiwgMHhEMjkyLCAweDIwODQsDQorICAgIDB4RDI5MywgMHhEMjk0LCAweDQ5RUIsIDB4RDI5NSwgMHhEMjk1LCAweDIxMzYsIDB4RDI5NiwgMHhEMjk2LCAweDQ5RUQsDQorICAgIDB4RDI5NywgMHhEMjk3LCAweDI0QjgsIDB4RDI5OCwgMHhEMjlGLCAweDQ5RUUsIDB4RDJBMCwgMHhEMkEwLCAweDI0QkEsDQorICAgIDB4RDJBMSwgMHhEMkZFLCAweDEwMjgsIDB4RDM0MCwgMHhEMzQzLCAweDQ5RjYsIDB4RDM0NCwgMHhEMzQ0LCAweDI0QkMsDQorICAgIDB4RDM0NSwgMHhEMzQ3LCAweDQ5RkEsIDB4RDM0OCwgMHhEMzQ4LCAweDIwRTQsIDB4RDM0OSwgMHhEMzQ5LCAweDQ5RkQsDQorICAgIDB4RDM0QSwgMHhEMzRBLCAweDI0QjksIDB4RDM0QiwgMHhEMzRDLCAweDQ5RkUsIDB4RDM0RCwgMHhEMzRELCAweDI0QkQsDQorICAgIDB4RDM0RSwgMHhEMzRGLCAweDRBMDAsIDB4RDM1MCwgMHhEMzUwLCAweDI0QkUsIDB4RDM1MSwgMHhEMzU0LCAweDRBMDIsDQorICAgIDB4RDM1NSwgMHhEMzU1LCAweDI0QkYsIDB4RDM1NiwgMHhEMzU3LCAweDRBMDYsIDB4RDM1OCwgMHhEMzU4LCAweDFGRDIsDQorICAgIDB4RDM1OSwgMHhEMzVBLCAweDRBMDgsIDB4RDM1QiwgMHhEMzVCLCAweDFGRkQsIDB4RDM1QywgMHhEMzVDLCAweDRBMEEsDQorICAgIDB4RDM1RCwgMHhEMzVELCAweDI0QkIsIDB4RDM1RSwgMHhEMzVFLCAweDFGMkQsIDB4RDM1RiwgMHhEMzc3LCAweDRBMEIsDQorICAgIDB4RDM3OCwgMHhEMzc4LCAweDI2MDksIDB4RDM3OSwgMHhEMzc5LCAweDRBMjQsIDB4RDM3QSwgMHhEMzdBLCAweDI2MEEsDQorICAgIDB4RDM3QiwgMHhEMzdCLCAweDRBMjUsIDB4RDM3QywgMHhEMzdDLCAweDFFOTQsIDB4RDM3RCwgMHhEMzdFLCAweDRBMjYsDQorICAgIDB4RDM4MCwgMHhEMzg0LCAweDRBMjgsIDB4RDM4NSwgMHhEMzg1LCAweDIyREYsIDB4RDM4NiwgMHhEMzg2LCAweDFFQ0IsDQorICAgIDB4RDM4NywgMHhEMzg3LCAweDFGMEQsIDB4RDM4OCwgMHhEMzhBLCAweDRBMkQsIDB4RDM4QiwgMHhEMzhCLCAweDFGNzcsDQorICAgIDB4RDM4QywgMHhEMzhDLCAweDRBMzAsIDB4RDM4RCwgMHhEMzhELCAweDIxRUIsIDB4RDM4RSwgMHhEMzhFLCAweDRBMzEsDQorICAgIDB4RDM4RiwgMHhEMzhGLCAweDIyRTEsIDB4RDM5MCwgMHhEMzkwLCAweDRBMzIsIDB4RDM5MSwgMHhEMzkxLCAweDIxNkYsDQorICAgIDB4RDM5MiwgMHhEMzkyLCAweDRBMzMsIDB4RDM5MywgMHhEMzkzLCAweDIyRTAsIDB4RDM5NCwgMHhEMzk1LCAweDRBMzQsDQorICAgIDB4RDM5NiwgMHhEMzk2LCAweDIxRUEsIDB4RDM5NywgMHhEMzk3LCAweDRBMzYsIDB4RDM5OCwgMHhEMzk4LCAweDIyRTIsDQorICAgIDB4RDM5OSwgMHhEMzk5LCAweDIwQ0IsIDB4RDM5QSwgMHhEMzlBLCAweDRBMzcsIDB4RDM5QiwgMHhEMzlCLCAweDFGNzgsDQorICAgIDB4RDM5QywgMHhEMzlELCAweDRBMzgsIDB4RDM5RSwgMHhEMzlFLCAweDFFRTIsIDB4RDM5RiwgMHhEMzlGLCAweDRBM0EsDQorICAgIDB4RDNBMCwgMHhEM0EwLCAweDIxRjIsIDB4RDNBMSwgMHhEM0ZFLCAweDEwODYsIDB4RDQ0MCwgMHhENDQwLCAweDRBM0IsDQorICAgIDB4RDQ0MSwgMHhENDQxLCAweDIxNTAsIDB4RDQ0MiwgMHhENDQ0LCAweDRBM0MsIDB4RDQ0NSwgMHhENDQ1LCAweDFGRDMsDQorICAgIDB4RDQ0NiwgMHhENDQ2LCAweDRBM0YsIDB4RDQ0NywgMHhENDQ3LCAweDIyRTUsIDB4RDQ0OCwgMHhENDRCLCAweDRBNDAsDQorICAgIDB4RDQ0QywgMHhENDRDLCAweDFFRjIsIDB4RDQ0RCwgMHhENDRFLCAweDRBNDQsIDB4RDQ0RiwgMHhENDRGLCAweDIxMUYsDQorICAgIDB4RDQ1MCwgMHhENDUyLCAweDRBNDYsIDB4RDQ1MywgMHhENDUzLCAweDIxREQsIDB4RDQ1NCwgMHhENDU1LCAweDRBNDksDQorICAgIDB4RDQ1NiwgMHhENDU2LCAweDIxNTQsIDB4RDQ1NywgMHhENDU3LCAweDRBNEIsIDB4RDQ1OCwgMHhENDU4LCAweDIyRTcsDQorICAgIDB4RDQ1OSwgMHhENDVCLCAweDRBNEMsIDB4RDQ1QywgMHhENDVDLCAweDIyODIsIDB4RDQ1RCwgMHhENDYxLCAweDRBNEYsDQorICAgIDB4RDQ2MiwgMHhENDYyLCAweDIyRTYsIDB4RDQ2MywgMHhENDY2LCAweDRBNTQsIDB4RDQ2NywgMHhENDY3LCAweDIyRTgsDQorICAgIDB4RDQ2OCwgMHhENDZELCAweDRBNTgsIDB4RDQ2RSwgMHhENDZFLCAweDIyRTQsIDB4RDQ2RiwgMHhENDZGLCAweDRBNUUsDQorICAgIDB4RDQ3MCwgMHhENDcwLCAweDIyNkEsIDB4RDQ3MSwgMHhENDcxLCAweDRBNUYsIDB4RDQ3MiwgMHhENDcyLCAweDIyRUIsDQorICAgIDB4RDQ3MywgMHhENDczLCAweDRBNjAsIDB4RDQ3NCwgMHhENDc0LCAweDIyRTksIDB4RDQ3NSwgMHhENDc1LCAweDIwQkQsDQorICAgIDB4RDQ3NiwgMHhENDc3LCAweDRBNjEsIDB4RDQ3OCwgMHhENDc4LCAweDIyRUEsIDB4RDQ3OSwgMHhENDdBLCAweDRBNjMsDQorICAgIDB4RDQ3QiwgMHhENDdCLCAweDIyQkQsIDB4RDQ3QywgMHhENDdELCAweDRBNjUsIDB4RDQ3RSwgMHhENDdFLCAweDFFOUUsDQorICAgIDB4RDQ4MCwgMHhENDgxLCAweDRBNjcsIDB4RDQ4MiwgMHhENDgyLCAweDIyRjYsIDB4RDQ4MywgMHhENDgzLCAweDIxRTcsDQorICAgIDB4RDQ4NCwgMHhENDg0LCAweDIyMTYsIDB4RDQ4NSwgMHhENDg2LCAweDRBNjksIDB4RDQ4NywgMHhENDg3LCAweDIxMzcsDQorICAgIDB4RDQ4OCwgMHhENDg5LCAweDRBNkIsIDB4RDQ4QSwgMHhENDhBLCAweDIxMkMsIDB4RDQ4QiwgMHhENDhCLCAweDRBNkQsDQorICAgIDB4RDQ4QywgMHhENDhDLCAweDFFNjgsIDB4RDQ4RCwgMHhENDhELCAweDIyRjIsIDB4RDQ4RSwgMHhENDhFLCAweDFGMzcsDQorICAgIDB4RDQ4RiwgMHhENDhGLCAweDIyRjMsIDB4RDQ5MCwgMHhENDkwLCAweDRBNkUsIDB4RDQ5MSwgMHhENDkxLCAweDIyRUYsDQorICAgIDB4RDQ5MiwgMHhENDkyLCAweDFGNTAsIDB4RDQ5MywgMHhENDkzLCAweDFGMTAsIDB4RDQ5NCwgMHhENDk0LCAweDIxQzgsDQorICAgIDB4RDQ5NSwgMHhENDk1LCAweDRBNkYsIDB4RDQ5NiwgMHhENDk2LCAweDIyRjEsIDB4RDQ5NywgMHhENDlCLCAweDRBNzAsDQorICAgIDB4RDQ5QywgMHhENDlDLCAweDIyRjAsIDB4RDQ5RCwgMHhENDlFLCAweDRBNzUsIDB4RDQ5RiwgMHhENDlGLCAweDIyRUUsDQorICAgIDB4RDRBMCwgMHhENEEwLCAweDRBNzcsIDB4RDRBMSwgMHhENEZFLCAweDEwRTQsIDB4RDU0MCwgMHhENTQyLCAweDRBNzgsDQorICAgIDB4RDU0MywgMHhENTQzLCAweDIyRUQsIDB4RDU0NCwgMHhENTQ0LCAweDIyOUUsIDB4RDU0NSwgMHhENTQ1LCAweDIyRUMsDQorICAgIDB4RDU0NiwgMHhENTQ2LCAweDFGRTIsIDB4RDU0NywgMHhENTQ5LCAweDRBN0IsIDB4RDU0QSwgMHhENTRBLCAweDIwRkUsDQorICAgIDB4RDU0QiwgMHhENTRELCAweDRBN0UsIDB4RDU0RSwgMHhENTRGLCAweDIyRjksIDB4RDU1MCwgMHhENTUwLCAweDRBODEsDQorICAgIDB4RDU1MSwgMHhENTUxLCAweDFFQUYsIDB4RDU1MiwgMHhENTUzLCAweDRBODIsIDB4RDU1NCwgMHhENTU0LCAweDIyMzYsDQorICAgIDB4RDU1NSwgMHhENTU1LCAweDRBODQsIDB4RDU1NiwgMHhENTU2LCAweDIyRjcsIDB4RDU1NywgMHhENTU5LCAweDRBODUsDQorICAgIDB4RDU1QSwgMHhENTVBLCAweDIyM0QsIDB4RDU1QiwgMHhENTVCLCAweDRBODgsIDB4RDU1QywgMHhENTVDLCAweDFFODIsDQorICAgIDB4RDU1RCwgMHhENTVELCAweDFGQjYsIDB4RDU1RSwgMHhENTVFLCAweDRBODksIDB4RDU1RiwgMHhENTVGLCAweDIxQTQsDQorICAgIDB4RDU2MCwgMHhENTYwLCAweDIxQUEsIDB4RDU2MSwgMHhENTYxLCAweDIyRjgsIDB4RDU2MiwgMHhENTYyLCAweDIxNTEsDQorICAgIDB4RDU2MywgMHhENTYzLCAweDRBOEEsIDB4RDU2NCwgMHhENTY0LCAweDFGNjAsIDB4RDU2NSwgMHhENTY3LCAweDRBOEIsDQorICAgIDB4RDU2OCwgMHhENTY4LCAweDIxNDcsIDB4RDU2OSwgMHhENTZCLCAweDRBOEUsIDB4RDU2QywgMHhENTZDLCAweDIxNDUsDQorICAgIDB4RDU2RCwgMHhENTZELCAweDRBOTEsIDB4RDU2RSwgMHhENTZFLCAweDFGREMsIDB4RDU2RiwgMHhENTcxLCAweDRBOTIsDQorICAgIDB4RDU3MiwgMHhENTcyLCAweDIzMDEsIDB4RDU3MywgMHhENTc0LCAweDRBOTUsIDB4RDU3NSwgMHhENTc1LCAweDFFRjUsDQorICAgIDB4RDU3NiwgMHhENTc3LCAweDRBOTcsIDB4RDU3OCwgMHhENTc4LCAweDIyMTgsIDB4RDU3OSwgMHhENTdBLCAweDRBOTksDQorICAgIDB4RDU3QiwgMHhENTdCLCAweDFFQzYsIDB4RDU3QywgMHhENTdELCAweDRBOUIsIDB4RDU3RSwgMHhENTdFLCAweDIzMDAsDQorICAgIDB4RDU4MCwgMHhENTgwLCAweDRBOUQsIDB4RDU4MSwgMHhENTgxLCAweDIyQjQsIDB4RDU4MiwgMHhENTgzLCAweDRBOUUsDQorICAgIDB4RDU4NCwgMHhENTg0LCAweDIxNjksIDB4RDU4NSwgMHhENTg1LCAweDRBQTAsIDB4RDU4NiwgMHhENTg2LCAweDIyRkQsDQorICAgIDB4RDU4NywgMHhENTg3LCAweDRBQTEsIDB4RDU4OCwgMHhENTg4LCAweDIwRUEsIDB4RDU4OSwgMHhENTg5LCAweDRBQTIsDQorICAgIDB4RDU4QSwgMHhENThBLCAweDIyRjQsIDB4RDU4QiwgMHhENThCLCAweDRBQTMsIDB4RDU4QywgMHhENThDLCAweDIyRkIsDQorICAgIDB4RDU4RCwgMHhENThELCAweDRBQTQsIDB4RDU4RSwgMHhENThFLCAweDIyRkMsIDB4RDU4RiwgMHhENThGLCAweDIwMjcsDQorICAgIDB4RDU5MCwgMHhENTkyLCAweDRBQTUsIDB4RDU5MywgMHhENTkzLCAweDIwNjAsIDB4RDU5NCwgMHhENTk0LCAweDIyRkYsDQorICAgIDB4RDU5NSwgMHhENTk3LCAweDRBQTgsIDB4RDU5OCwgMHhENTk4LCAweDIyRkUsIDB4RDU5OSwgMHhENTk5LCAweDFFQzcsDQorICAgIDB4RDU5QSwgMHhENTlBLCAweDRBQUIsIDB4RDU5QiwgMHhENTlCLCAweDIzMEMsIDB4RDU5QywgMHhENTlFLCAweDRBQUMsDQorICAgIDB4RDU5RiwgMHhENTlGLCAweDIyRjUsIDB4RDVBMCwgMHhENUEwLCAweDRBQUYsIDB4RDVBMSwgMHhENUZFLCAweDExNDIsDQorICAgIDB4RDY0MCwgMHhENjQwLCAweDIzMDYsIDB4RDY0MSwgMHhENjQxLCAweDRBQjAsIDB4RDY0MiwgMHhENjQyLCAweDIzMEEsDQorICAgIDB4RDY0MywgMHhENjQzLCAweDIxRDMsIDB4RDY0NCwgMHhENjQ2LCAweDRBQjEsIDB4RDY0NywgMHhENjQ3LCAweDIzMDMsDQorICAgIDB4RDY0OCwgMHhENjQ4LCAweDRBQjQsIDB4RDY0OSwgMHhENjQ5LCAweDIzMDcsIDB4RDY0QSwgMHhENjRBLCAweDIzMEIsDQorICAgIDB4RDY0QiwgMHhENjRDLCAweDRBQjUsIDB4RDY0RCwgMHhENjRELCAweDFGNUYsIDB4RDY0RSwgMHhENjRFLCAweDRBQjcsDQorICAgIDB4RDY0RiwgMHhENjRGLCAweDIzMDksIDB4RDY1MCwgMHhENjUxLCAweDRBQjgsIDB4RDY1MiwgMHhENjUyLCAweDIzMDIsDQorICAgIDB4RDY1MywgMHhENjUzLCAweDFGMDQsIDB4RDY1NCwgMHhENjU0LCAweDIyOUQsIDB4RDY1NSwgMHhENjU1LCAweDRBQkEsDQorICAgIDB4RDY1NiwgMHhENjU2LCAweDIxRkIsIDB4RDY1NywgMHhENjU3LCAweDRBQkIsIDB4RDY1OCwgMHhENjU4LCAweDIzMDgsDQorICAgIDB4RDY1OSwgMHhENjU5LCAweDRBQkMsIDB4RDY1QSwgMHhENjVBLCAweDIwQUMsIDB4RDY1QiwgMHhENjVCLCAweDRBQkQsDQorICAgIDB4RDY1QywgMHhENjVDLCAweDIwOEUsIDB4RDY1RCwgMHhENjVELCAweDIzMDUsIDB4RDY1RSwgMHhENjVFLCAweDIxOTcsDQorICAgIDB4RDY1RiwgMHhENjVGLCAweDRBQkUsIDB4RDY2MCwgMHhENjYwLCAweDIxNzEsIDB4RDY2MSwgMHhENjYxLCAweDIyOTgsDQorICAgIDB4RDY2MiwgMHhENjY0LCAweDRBQkYsIDB4RDY2NSwgMHhENjY1LCAweDFGNTcsIDB4RDY2NiwgMHhENjY4LCAweDRBQzIsDQorICAgIDB4RDY2OSwgMHhENjY5LCAweDIwODIsIDB4RDY2QSwgMHhENjZBLCAweDRBQzUsIDB4RDY2QiwgMHhENjZCLCAweDIzMTEsDQorICAgIDB4RDY2QywgMHhENjZFLCAweDRBQzYsIDB4RDY2RiwgMHhENjZGLCAweDIzMDQsIDB4RDY3MCwgMHhENjcwLCAweDRBQzksDQorICAgIDB4RDY3MSwgMHhENjcxLCAweDIzMEYsIDB4RDY3MiwgMHhENjcyLCAweDFFMzUsIDB4RDY3MywgMHhENjczLCAweDRBQ0EsDQorICAgIDB4RDY3NCwgMHhENjc0LCAweDIwRDEsIDB4RDY3NSwgMHhENjc1LCAweDIzMTAsIDB4RDY3NiwgMHhENjc2LCAweDFGQTMsDQorICAgIDB4RDY3NywgMHhENjc3LCAweDRBQ0IsIDB4RDY3OCwgMHhENjc4LCAweDIxRDYsIDB4RDY3OSwgMHhENjdCLCAweDRBQ0MsDQorICAgIDB4RDY3QywgMHhENjdDLCAweDIyMDYsIDB4RDY3RCwgMHhENjdFLCAweDRBQ0YsIDB4RDY4MCwgMHhENjgyLCAweDRBRDEsDQorICAgIDB4RDY4MywgMHhENjgzLCAweDIzMEQsIDB4RDY4NCwgMHhENjg1LCAweDRBRDQsIDB4RDY4NiwgMHhENjg2LCAweDIzMTIsDQorICAgIDB4RDY4NywgMHhENjg3LCAweDIwOEQsIDB4RDY4OCwgMHhENjg4LCAweDIzMTMsIDB4RDY4OSwgMHhENjhELCAweDRBRDYsDQorICAgIDB4RDY4RSwgMHhENjhFLCAweDIyRTMsIDB4RDY4RiwgMHhENjkzLCAweDRBREIsIDB4RDY5NCwgMHhENjk0LCAweDFGQkEsDQorICAgIDB4RDY5NSwgMHhENjk4LCAweDRBRTAsIDB4RDY5OSwgMHhENjk5LCAweDIwNzgsIDB4RDY5QSwgMHhENkEwLCAweDRBRTQsDQorICAgIDB4RDZBMSwgMHhENkZFLCAweDExQTAsIDB4RDc0MCwgMHhENzQyLCAweDRBRUIsIDB4RDc0MywgMHhENzQzLCAweDIyODgsDQorICAgIDB4RDc0NCwgMHhENzQ3LCAweDRBRUUsIDB4RDc0OCwgMHhENzQ4LCAweDIzMTYsIDB4RDc0OSwgMHhENzQ5LCAweDFGNkIsDQorICAgIDB4RDc0QSwgMHhENzRGLCAweDRBRjIsIDB4RDc1MCwgMHhENzUwLCAweDIzMTQsIDB4RDc1MSwgMHhENzUxLCAweDRBRjgsDQorICAgIDB4RDc1MiwgMHhENzUyLCAweDIxMzAsIDB4RDc1MywgMHhENzUzLCAweDIzMTUsIDB4RDc1NCwgMHhENzU0LCAweDIxNjgsDQorICAgIDB4RDc1NSwgMHhENzU1LCAweDRBRjksIDB4RDc1NiwgMHhENzU2LCAweDIwQzQsIDB4RDc1NywgMHhENzYzLCAweDRBRkEsDQorICAgIDB4RDc2NCwgMHhENzY0LCAweDIzMTgsIDB4RDc2NSwgMHhENzY2LCAweDRCMDcsIDB4RDc2NywgMHhENzY3LCAweDIyMTksDQorICAgIDB4RDc2OCwgMHhENzY4LCAweDIyMTcsIDB4RDc2OSwgMHhENzZCLCAweDRCMDksIDB4RDc2QywgMHhENzZDLCAweDIwRDUsDQorICAgIDB4RDc2RCwgMHhENzZFLCAweDRCMEMsIDB4RDc2RiwgMHhENzZGLCAweDFGNEEsIDB4RDc3MCwgMHhENzc0LCAweDRCMEUsDQorICAgIDB4RDc3NSwgMHhENzc1LCAweDIyNDAsIDB4RDc3NiwgMHhENzc3LCAweDRCMTMsIDB4RDc3OCwgMHhENzc4LCAweDFFRDMsDQorICAgIDB4RDc3OSwgMHhENzdFLCAweDRCMTUsIDB4RDc4MCwgMHhENzgyLCAweDRCMUIsIDB4RDc4MywgMHhENzgzLCAweDFFNDksDQorICAgIDB4RDc4NCwgMHhENzg2LCAweDRCMUUsIDB4RDc4NywgMHhENzg3LCAweDI2MUIsIDB4RDc4OCwgMHhENzhBLCAweDRCMjEsDQorICAgIDB4RDc4QiwgMHhENzhCLCAweDFFNkQsIDB4RDc4QywgMHhENzhDLCAweDIwRjgsIDB4RDc4RCwgMHhENzhELCAweDRCMjQsDQorICAgIDB4RDc4RSwgMHhENzhFLCAweDFGRkIsIDB4RDc4RiwgMHhENzhGLCAweDIzMTksIDB4RDc5MCwgMHhENzk0LCAweDRCMjUsDQorICAgIDB4RDc5NSwgMHhENzk1LCAweDIzMEUsIDB4RDc5NiwgMHhENzk2LCAweDRCMkEsIDB4RDc5NywgMHhENzk3LCAweDIzMTcsDQorICAgIDB4RDc5OCwgMHhEN0EwLCAweDRCMkIsIDB4RDdBMSwgMHhEN0Y5LCAweDExRkUsIDB4RDg0MCwgMHhEODRDLCAweDRCMzQsDQorICAgIDB4RDg0RCwgMHhEODRELCAweDIwQzgsIDB4RDg0RSwgMHhEODUyLCAweDRCNDEsIDB4RDg1MywgMHhEODUzLCAweDFFRkQsDQorICAgIDB4RDg1NCwgMHhEODdFLCAweDRCNDYsIDB4RDg4MCwgMHhEODhGLCAweDRCNzEsIDB4RDg5MCwgMHhEODkwLCAweDFFM0IsDQorICAgIDB4RDg5MSwgMHhEODkxLCAweDIyN0YsIDB4RDg5MiwgMHhEODkyLCAweDRCODEsIDB4RDg5MywgMHhEODkzLCAweDFGMEMsDQorICAgIDB4RDg5NCwgMHhEODk0LCAweDFFNTksIDB4RDg5NSwgMHhEODk1LCAweDFGMjQsIDB4RDg5NiwgMHhEODk5LCAweDRCODIsDQorICAgIDB4RDg5QSwgMHhEODlBLCAweDIwQkEsIDB4RDg5QiwgMHhEODlCLCAweDFGNjUsIDB4RDg5QywgMHhEODlDLCAweDFFRjAsDQorICAgIDB4RDg5RCwgMHhEODlELCAweDIxNjQsIDB4RDg5RSwgMHhEODlFLCAweDFGMzAsIDB4RDg5RiwgMHhEODlGLCAweDIyNjEsDQorICAgIDB4RDhBMCwgMHhEOEEwLCAweDRCODYsIDB4RDhBMSwgMHhEOEZFLCAweDEyNTcsIDB4RDk0MCwgMHhEOTQwLCAweDRCODcsDQorICAgIDB4RDk0MSwgMHhEOTQxLCAweDIyQTIsIDB4RDk0MiwgMHhEOTQyLCAweDI0QUIsIDB4RDk0MywgMHhEOTQzLCAweDRCODgsDQorICAgIDB4RDk0NCwgMHhEOTQ0LCAweDI0QUYsIDB4RDk0NSwgMHhEOTQ1LCAweDFFRTgsIDB4RDk0NiwgMHhEOTQ2LCAweDFGMzksDQorICAgIDB4RDk0NywgMHhEOTQ3LCAweDRCODksIDB4RDk0OCwgMHhEOTQ4LCAweDFFNDgsIDB4RDk0OSwgMHhEOTQ5LCAweDIwNzAsDQorICAgIDB4RDk0QSwgMHhEOTRBLCAweDFFQTgsIDB4RDk0QiwgMHhEOTRCLCAweDRCOEEsIDB4RDk0QywgMHhEOTRDLCAweDI0QUMsDQorICAgIDB4RDk0RCwgMHhEOTRELCAweDFFRjcsIDB4RDk0RSwgMHhEOTRFLCAweDIxNzYsIDB4RDk0RiwgMHhEOTRGLCAweDI0QUQsDQorICAgIDB4RDk1MCwgMHhEOTUwLCAweDRCOEIsIDB4RDk1MSwgMHhEOTUxLCAweDIwN0IsIDB4RDk1MiwgMHhEOTUyLCAweDFGNDUsDQorICAgIDB4RDk1MywgMHhEOTUzLCAweDI0QUEsIDB4RDk1NCwgMHhEOTU0LCAweDIwNEIsIDB4RDk1NSwgMHhEOTU1LCAweDIwMkYsDQorICAgIDB4RDk1NiwgMHhEOTU2LCAweDFGNUEsIDB4RDk1NywgMHhEOTU3LCAweDI0QjAsIDB4RDk1OCwgMHhEOTU4LCAweDRCOEMsDQorICAgIDB4RDk1OSwgMHhEOTU5LCAweDIyQjcsIDB4RDk1QSwgMHhEOTVBLCAweDFGN0YsIDB4RDk1QiwgMHhEOTVCLCAweDRCOEQsDQorICAgIDB4RDk1QywgMHhEOTVDLCAweDIyNjUsIDB4RDk1RCwgMHhEOTYyLCAweDRCOEUsIDB4RDk2MywgMHhEOTYzLCAweDI0QjIsDQorICAgIDB4RDk2NCwgMHhEOTY0LCAweDIxMUIsIDB4RDk2NSwgMHhEOTY1LCAweDFFNTEsIDB4RDk2NiwgMHhEOTY2LCAweDRCOTQsDQorICAgIDB4RDk2NywgMHhEOTY3LCAweDI0QjQsIDB4RDk2OCwgMHhEOTZCLCAweDRCOTUsIDB4RDk2QywgMHhEOTZDLCAweDI0QjMsDQorICAgIDB4RDk2RCwgMHhEOTZELCAweDRCOTksIDB4RDk2RSwgMHhEOTZFLCAweDFFOUYsIDB4RDk2RiwgMHhEOTZGLCAweDRCOUEsDQorICAgIDB4RDk3MCwgMHhEOTcwLCAweDIxMTgsIDB4RDk3MSwgMHhEOTcxLCAweDRCOUIsIDB4RDk3MiwgMHhEOTcyLCAweDIwQjQsDQorICAgIDB4RDk3MywgMHhEOTczLCAweDIzQUYsIDB4RDk3NCwgMHhEOTc0LCAweDIxQkIsIDB4RDk3NSwgMHhEOTc1LCAweDIwNzIsDQorICAgIDB4RDk3NiwgMHhEOTc2LCAweDFGOTUsIDB4RDk3NywgMHhEOTc3LCAweDRCOUMsIDB4RDk3OCwgMHhEOTc4LCAweDFGMEEsDQorICAgIDB4RDk3OSwgMHhEOTc5LCAweDI0QjYsIDB4RDk3QSwgMHhEOTdCLCAweDRCOUQsIDB4RDk3QywgMHhEOTdDLCAweDIyOTEsDQorICAgIDB4RDk3RCwgMHhEOTdELCAweDI0QjUsIDB4RDk3RSwgMHhEOTdFLCAweDIyNzgsIDB4RDk4MCwgMHhEOTgwLCAweDFFRDQsDQorICAgIDB4RDk4MSwgMHhEOTg2LCAweDRCOUYsIDB4RDk4NywgMHhEOTg3LCAweDFGRjMsIDB4RDk4OCwgMHhEOThDLCAweDRCQTUsDQorICAgIDB4RDk4RCwgMHhEOThELCAweDIyQTksIDB4RDk4RSwgMHhEOThFLCAweDI0QjcsIDB4RDk4RiwgMHhEOThGLCAweDFGMjgsDQorICAgIDB4RDk5MCwgMHhEOTkwLCAweDIxMDksIDB4RDk5MSwgMHhEOTkxLCAweDIyQzcsIDB4RDk5MiwgMHhEOTk2LCAweDRCQUEsDQorICAgIDB4RDk5NywgMHhEOTk3LCAweDI0QUUsIDB4RDk5OCwgMHhEOTk4LCAweDIyQjEsIDB4RDk5OSwgMHhEOTlBLCAweDRCQUYsDQorICAgIDB4RDk5QiwgMHhEOTlCLCAweDIyNjYsIDB4RDk5QywgMHhEOTlDLCAweDRCQjEsIDB4RDk5RCwgMHhEOTlELCAweDIyNUIsDQorICAgIDB4RDk5RSwgMHhEOTlFLCAweDIyQzQsIDB4RDk5RiwgMHhEOTlGLCAweDRCQjIsIDB4RDlBMCwgMHhEOUEwLCAweDIxMTUsDQorICAgIDB4RDlBMSwgMHhEOUZFLCAweDEyQjUsIDB4REE0MCwgMHhEQTQwLCAweDRCQjMsIDB4REE0MSwgMHhEQTQxLCAweDIyMkEsDQorICAgIDB4REE0MiwgMHhEQTQyLCAweDI0QjEsIDB4REE0MywgMHhEQTQ3LCAweDRCQjQsIDB4REE0OCwgMHhEQTQ4LCAweDIxM0QsDQorICAgIDB4REE0OSwgMHhEQTRDLCAweDRCQjksIDB4REE0RCwgMHhEQTRELCAweDFGMTUsIDB4REE0RSwgMHhEQTRFLCAweDIyNUMsDQorICAgIDB4REE0RiwgMHhEQTcyLCAweDRCQkQsIDB4REE3MywgMHhEQTczLCAweDFGMTQsIDB4REE3NCwgMHhEQTc2LCAweDRCRTEsDQorICAgIDB4REE3NywgMHhEQTc3LCAweDIyN0EsIDB4REE3OCwgMHhEQTdFLCAweDRCRTQsIDB4REE4MCwgMHhEQTg0LCAweDRCRUIsDQorICAgIDB4REE4NSwgMHhEQTg1LCAweDIwRUUsIDB4REE4NiwgMHhEQThELCAweDRCRjAsIDB4REE4RSwgMHhEQThFLCAweDI1RjgsDQorICAgIDB4REE4RiwgMHhEQUEwLCAweDRCRjgsIDB4REFBMSwgMHhEQUZFLCAweDEzMTMsIDB4REI0MCwgMHhEQjVGLCAweDRDMEEsDQorICAgIDB4REI2MCwgMHhEQjYwLCAweDFGOTQsIDB4REI2MSwgMHhEQjc3LCAweDRDMkEsIDB4REI3OCwgMHhEQjc4LCAweDIyMzAsDQorICAgIDB4REI3OSwgMHhEQjdFLCAweDRDNDEsIDB4REI4MCwgMHhEQjgzLCAweDRDNDcsIDB4REI4NCwgMHhEQjg0LCAweDI1RkQsDQorICAgIDB4REI4NSwgMHhEQjhBLCAweDRDNEIsIDB4REI4QiwgMHhEQjhCLCAweDI2MDAsIDB4REI4QywgMHhEQjk3LCAweDRDNTEsDQorICAgIDB4REI5OCwgMHhEQjk4LCAweDI2MDYsIDB4REI5OSwgMHhEQkEwLCAweDRDNUQsIDB4REJBMSwgMHhEQkZFLCAweDEzNzEsDQorICAgIDB4REM0MCwgMHhEQzQ0LCAweDRDNjUsIDB4REM0NSwgMHhEQzQ1LCAweDI1RkYsIDB4REM0NiwgMHhEQzRFLCAweDRDNkEsDQorICAgIDB4REM0RiwgMHhEQzRGLCAweDI1RkMsIDB4REM1MCwgMHhEQzUwLCAweDFFOEMsIDB4REM1MSwgMHhEQzUxLCAweDI2MDIsDQorICAgIDB4REM1MiwgMHhEQzUyLCAweDRDNzMsIDB4REM1MywgMHhEQzUzLCAweDIyNEQsIDB4REM1NCwgMHhEQzU0LCAweDRDNzQsDQorICAgIDB4REM1NSwgMHhEQzU1LCAweDI2MDQsIDB4REM1NiwgMHhEQzU2LCAweDI1RkUsIDB4REM1NywgMHhEQzU3LCAweDI2MDMsDQorICAgIDB4REM1OCwgMHhEQzVDLCAweDRDNzUsIDB4REM1RCwgMHhEQzVELCAweDI2MDEsIDB4REM1RSwgMHhEQzYxLCAweDRDN0EsDQorICAgIDB4REM2MiwgMHhEQzYyLCAweDI2MDUsIDB4REM2MywgMHhEQzY1LCAweDRDN0UsIDB4REM2NiwgMHhEQzY2LCAweDFFQTMsDQorICAgIDB4REM2NywgMHhEQzY3LCAweDI2MDgsIDB4REM2OCwgMHhEQzZBLCAweDRDODEsIDB4REM2QiwgMHhEQzZCLCAweDI2MDcsDQorICAgIDB4REM2QywgMHhEQzdCLCAweDRDODQsIDB4REM3QywgMHhEQzdDLCAweDIwRjAsIDB4REM3RCwgMHhEQzdFLCAweDRDOTQsDQorICAgIDB4REM4MCwgMHhEQzg2LCAweDRDOTYsIDB4REM4NywgMHhEQzg3LCAweDFFN0IsIDB4REM4OCwgMHhEQzg4LCAweDIyNjcsDQorICAgIDB4REM4OSwgMHhEQzg5LCAweDFGMzYsIDB4REM4QSwgMHhEQzhBLCAweDFGRDYsIDB4REM4QiwgMHhEQzhELCAweDRDOUQsDQorICAgIDB4REM4RSwgMHhEQzhFLCAweDIxRTAsIDB4REM4RiwgMHhEQzhGLCAweDRDQTAsIDB4REM5MCwgMHhEQzkwLCAweDI0OEMsDQorICAgIDB4REM5MSwgMHhEQzk2LCAweDRDQTEsIDB4REM5NywgMHhEQzk3LCAweDI0OEQsIDB4REM5OCwgMHhEQzlBLCAweDRDQTcsDQorICAgIDB4REM5QiwgMHhEQzlCLCAweDIxMDIsIDB4REM5QywgMHhEQzlGLCAweDRDQUEsIDB4RENBMCwgMHhEQ0EwLCAweDI0OTQsDQorICAgIDB4RENBMSwgMHhEQ0ZFLCAweDEzQ0YsIDB4REQ0MCwgMHhERDQ1LCAweDRDQUUsIDB4REQ0NiwgMHhERDQ2LCAweDI0OTMsDQorICAgIDB4REQ0NywgMHhERDRDLCAweDRDQjQsIDB4REQ0RCwgMHhERDRELCAweDI0OEUsIDB4REQ0RSwgMHhERDUyLCAweDRDQkEsDQorICAgIDB4REQ1MywgMHhERDUzLCAweDIyOTksIDB4REQ1NCwgMHhERDU0LCAweDI0OTEsIDB4REQ1NSwgMHhERDU1LCAweDI0OTYsDQorICAgIDB4REQ1NiwgMHhERDU2LCAweDI0OEYsIDB4REQ1NywgMHhERDU3LCAweDI0OTIsIDB4REQ1OCwgMHhERDU4LCAweDRDQkYsDQorICAgIDB4REQ1OSwgMHhERDU5LCAweDI0OTcsIDB4REQ1QSwgMHhERDVELCAweDRDQzAsIDB4REQ1RSwgMHhERDVFLCAweDFGQjEsDQorICAgIDB4REQ1RiwgMHhERDVGLCAweDRDQzQsIDB4REQ2MCwgMHhERDYwLCAweDI0OUEsIDB4REQ2MSwgMHhERDYxLCAweDRDQzUsDQorICAgIDB4REQ2MiwgMHhERDYyLCAweDI0OTksIDB4REQ2MywgMHhERDYzLCAweDRDQzYsIDB4REQ2NCwgMHhERDY0LCAweDIyNTgsDQorICAgIDB4REQ2NSwgMHhERDY1LCAweDI0OTgsIDB4REQ2NiwgMHhERDZDLCAweDRDQzcsIDB4REQ2RCwgMHhERDZELCAweDI0OUIsDQorICAgIDB4REQ2RSwgMHhERDZFLCAweDRDQ0UsIDB4REQ2RiwgMHhERDZGLCAweDFGMDksIDB4REQ3MCwgMHhERDcwLCAweDIwRTYsDQorICAgIDB4REQ3MSwgMHhERDc1LCAweDRDQ0YsIDB4REQ3NiwgMHhERDc2LCAweDIwMjYsIDB4REQ3NywgMHhERDc3LCAweDI0OUYsDQorICAgIDB4REQ3OCwgMHhERDc4LCAweDFGNTksIDB4REQ3OSwgMHhERDdBLCAweDI0OUQsIDB4REQ3QiwgMHhERDdFLCAweDRDRDQsDQorICAgIDB4REQ4MCwgMHhERDgwLCAweDRDRDgsIDB4REQ4MSwgMHhERDgxLCAweDFGM0IsIDB4REQ4MiwgMHhERDgyLCAweDI0OUMsDQorICAgIDB4REQ4MywgMHhERDg0LCAweDRDRDksIDB4REQ4NSwgMHhERDg1LCAweDFFM0EsIDB4REQ4NiwgMHhERDg2LCAweDIwNUIsDQorICAgIDB4REQ4NywgMHhERDhBLCAweDRDREIsIDB4REQ4QiwgMHhERDhCLCAweDFGNzAsIDB4REQ4QywgMHhERDhFLCAweDRDREYsDQorICAgIDB4REQ4RiwgMHhERDhGLCAweDI0QTAsIDB4REQ5MCwgMHhERDkzLCAweDRDRTIsIDB4REQ5NCwgMHhERDk0LCAweDIxM0IsDQorICAgIDB4REQ5NSwgMHhERDk2LCAweDRDRTYsIDB4REQ5NywgMHhERDk3LCAweDFGMDcsIDB4REQ5OCwgMHhERDk5LCAweDRDRTgsDQorICAgIDB4REQ5QSwgMHhERDlBLCAweDIyNzAsIDB4REQ5QiwgMHhERDlCLCAweDIyMzcsIDB4REQ5QywgMHhERDlELCAweDRDRUEsDQorICAgIDB4REQ5RSwgMHhERDlFLCAweDI0RDIsIDB4REQ5RiwgMHhERDlGLCAweDRDRUMsIDB4RERBMCwgMHhEREEwLCAweDIxQjMsDQorICAgIDB4RERBMSwgMHhEREZFLCAweDE0MkQsIDB4REU0MCwgMHhERTQwLCAweDIyNDUsIDB4REU0MSwgMHhERTQxLCAweDI0QTEsDQorICAgIDB4REU0MiwgMHhERTQzLCAweDRDRUQsIDB4REU0NCwgMHhERTQ0LCAweDIyQTgsIDB4REU0NSwgMHhERTQ3LCAweDRDRUYsDQorICAgIDB4REU0OCwgMHhERTQ4LCAweDIyN0MsIDB4REU0OSwgMHhERTQ5LCAweDFGQjAsIDB4REU0QSwgMHhERTRFLCAweDRDRjIsDQorICAgIDB4REU0RiwgMHhERTRGLCAweDI0QTIsIDB4REU1MCwgMHhERTU5LCAweDRDRjcsIDB4REU1QSwgMHhERTVBLCAweDFGNDYsDQorICAgIDB4REU1QiwgMHhERTVCLCAweDREMDEsIDB4REU1QywgMHhERTVDLCAweDIzODAsIDB4REU1RCwgMHhERTVELCAweDI0OTUsDQorICAgIDB4REU1RSwgMHhERTVFLCAweDREMDIsIDB4REU1RiwgMHhERTVGLCAweDI0OTAsIDB4REU2MCwgMHhERTZBLCAweDREMDMsDQorICAgIDB4REU2QiwgMHhERTZCLCAweDFFMzAsIDB4REU2QywgMHhERTZFLCAweDREMEUsIDB4REU2RiwgMHhERTZGLCAweDFFOUQsDQorICAgIDB4REU3MCwgMHhERTcwLCAweDFFNEIsIDB4REU3MSwgMHhERTcxLCAweDFFNEEsIDB4REU3MiwgMHhERTcyLCAweDIwQUEsDQorICAgIDB4REU3MywgMHhERTdFLCAweDREMTEsIDB4REU4MCwgMHhERTkxLCAweDREMUQsIDB4REU5MiwgMHhERTkyLCAweDI2N0IsDQorICAgIDB4REU5MywgMHhERTlFLCAweDREMkYsIDB4REU5RiwgMHhERTlGLCAweDIzRjIsIDB4REVBMCwgMHhERUEwLCAweDREM0IsDQorICAgIDB4REVBMSwgMHhERUZFLCAweDE0OEIsIDB4REY0MCwgMHhERjQwLCAweDIyN0UsIDB4REY0MSwgMHhERjQxLCAweDREM0MsDQorICAgIDB4REY0MiwgMHhERjQyLCAweDIwMTksIDB4REY0MywgMHhERjRDLCAweDREM0QsIDB4REY0RCwgMHhERjRELCAweDFGQkIsDQorICAgIDB4REY0RSwgMHhERjVCLCAweDRENDcsIDB4REY1QywgMHhERjVDLCAweDIyNTMsIDB4REY1RCwgMHhERjVELCAweDRENTUsDQorICAgIDB4REY1RSwgMHhERjVFLCAweDFGM0UsIDB4REY1RiwgMHhERjVGLCAweDFFQTYsIDB4REY2MCwgMHhERjYwLCAweDIxOEUsDQorICAgIDB4REY2MSwgMHhERjYzLCAweDRENTYsIDB4REY2NCwgMHhERjY0LCAweDIxRUMsIDB4REY2NSwgMHhERjY1LCAweDRENTksDQorICAgIDB4REY2NiwgMHhERjY2LCAweDFFQkUsIDB4REY2NywgMHhERjY3LCAweDRENUEsIDB4REY2OCwgMHhERjY4LCAweDIyNEEsDQorICAgIDB4REY2OSwgMHhERjZDLCAweDRENUIsIDB4REY2RCwgMHhERjZELCAweDIxMzMsIDB4REY2RSwgMHhERjczLCAweDRENUYsDQorICAgIDB4REY3NCwgMHhERjc0LCAweDFFODQsIDB4REY3NSwgMHhERjc2LCAweDRENjUsIDB4REY3NywgMHhERjc3LCAweDIwQ0YsDQorICAgIDB4REY3OCwgMHhERjc4LCAweDIxRTIsIDB4REY3OSwgMHhERjc5LCAweDRENjcsIDB4REY3QSwgMHhERjdBLCAweDIyMEYsDQorICAgIDB4REY3QiwgMHhERjdCLCAweDRENjgsIDB4REY3QywgMHhERjdDLCAweDIwMjksIDB4REY3RCwgMHhERjdELCAweDRENjksDQorICAgIDB4REY3RSwgMHhERjdFLCAweDIwNzMsIDB4REY4MCwgMHhERjgwLCAweDFGNTUsIDB4REY4MSwgMHhERjgyLCAweDRENkEsDQorICAgIDB4REY4MywgMHhERjgzLCAweDIzRjEsIDB4REY4NCwgMHhERjg0LCAweDRENkMsIDB4REY4NSwgMHhERjg1LCAweDFFNDYsDQorICAgIDB4REY4NiwgMHhERjg4LCAweDRENkQsIDB4REY4OSwgMHhERjg5LCAweDIwNjMsIDB4REY4QSwgMHhERjhBLCAweDIzRjMsDQorICAgIDB4REY4QiwgMHhERkEwLCAweDRENzAsIDB4REZBMSwgMHhERkZFLCAweDE0RTksIDB4RTA0MCwgMHhFMDRGLCAweDREODYsDQorICAgIDB4RTA1MCwgMHhFMDUwLCAweDIzMUUsIDB4RTA1MSwgMHhFMDVDLCAweDREOTYsIDB4RTA1RCwgMHhFMDVELCAweDIyMzMsDQorICAgIDB4RTA1RSwgMHhFMDY4LCAweDREQTIsIDB4RTA2OSwgMHhFMDY5LCAweDIzMjAsIDB4RTA2QSwgMHhFMDZCLCAweDREQUQsDQorICAgIDB4RTA2QywgMHhFMDZDLCAweDIxQzcsIDB4RTA2RCwgMHhFMDc0LCAweDREQUYsIDB4RTA3NSwgMHhFMDc1LCAweDIyQkMsDQorICAgIDB4RTA3NiwgMHhFMDc2LCAweDREQjcsIDB4RTA3NywgMHhFMDc3LCAweDIzMUMsIDB4RTA3OCwgMHhFMDc4LCAweDREQjgsDQorICAgIDB4RTA3OSwgMHhFMDc5LCAweDIyNTEsIDB4RTA3QSwgMHhFMDdFLCAweDREQjksIDB4RTA4MCwgMHhFMDg2LCAweDREQkUsDQorICAgIDB4RTA4NywgMHhFMDg3LCAweDFFQkIsIDB4RTA4OCwgMHhFMDhDLCAweDREQzUsIDB4RTA4RCwgMHhFMDhELCAweDIyODcsDQorICAgIDB4RTA4RSwgMHhFMDhFLCAweDREQ0EsIDB4RTA4RiwgMHhFMDhGLCAweDIwMkQsIDB4RTA5MCwgMHhFMDkwLCAweDFFQUIsDQorICAgIDB4RTA5MSwgMHhFMDkxLCAweDREQ0IsIDB4RTA5MiwgMHhFMDkyLCAweDIzMUQsIDB4RTA5MywgMHhFMDkzLCAweDREQ0MsDQorICAgIDB4RTA5NCwgMHhFMDk0LCAweDIzMUYsIDB4RTA5NSwgMHhFMDk2LCAweDREQ0QsIDB4RTA5NywgMHhFMDk3LCAweDIzMUIsDQorICAgIDB4RTA5OCwgMHhFMEEwLCAweDREQ0YsIDB4RTBBMSwgMHhFMEZFLCAweDE1NDcsIDB4RTE0MCwgMHhFMTQxLCAweDRERDgsDQorICAgIDB4RTE0MiwgMHhFMTQyLCAweDIzMjEsIDB4RTE0MywgMHhFMTYzLCAweDREREEsIDB4RTE2NCwgMHhFMTY0LCAweDIyNTUsDQorICAgIDB4RTE2NSwgMHhFMTY3LCAweDRERkIsIDB4RTE2OCwgMHhFMTY4LCAweDFFOEYsIDB4RTE2OSwgMHhFMTczLCAweDRERkUsDQorICAgIDB4RTE3NCwgMHhFMTc0LCAweDIyMEMsIDB4RTE3NSwgMHhFMTc1LCAweDFGQTQsIDB4RTE3NiwgMHhFMTdFLCAweDRFMDksDQorICAgIDB4RTE4MCwgMHhFMTgzLCAweDRFMTIsIDB4RTE4NCwgMHhFMTg0LCAweDIwOUIsIDB4RTE4NSwgMHhFMTg1LCAweDIxRDgsDQorICAgIDB4RTE4NiwgMHhFMTg2LCAweDRFMTYsIDB4RTE4NywgMHhFMTg3LCAweDI1RkEsIDB4RTE4OCwgMHhFMTg4LCAweDRFMTcsDQorICAgIDB4RTE4OSwgMHhFMTg5LCAweDI1RjksIDB4RTE4QSwgMHhFMThCLCAweDRFMTgsIDB4RTE4QywgMHhFMThDLCAweDIxMzQsDQorICAgIDB4RTE4RCwgMHhFMThELCAweDRFMUEsIDB4RTE4RSwgMHhFMTkwLCAweDI0RjMsIDB4RTE5MSwgMHhFMTkxLCAweDI0RjgsDQorICAgIDB4RTE5MiwgMHhFMTkyLCAweDRFMUIsIDB4RTE5MywgMHhFMTkzLCAweDI0RjcsIDB4RTE5NCwgMHhFMTk0LCAweDFFQzgsDQorICAgIDB4RTE5NSwgMHhFMTk1LCAweDI0RjYsIDB4RTE5NiwgMHhFMTk3LCAweDRFMUMsIDB4RTE5OCwgMHhFMTk4LCAweDIyODAsDQorICAgIDB4RTE5OSwgMHhFMTlELCAweDRFMUUsIDB4RTE5RSwgMHhFMTlFLCAweDFFQzUsIDB4RTE5RiwgMHhFMTlGLCAweDI0RkIsDQorICAgIDB4RTFBMCwgMHhFMUEwLCAweDRFMjMsIDB4RTFBMSwgMHhFMUZFLCAweDE1QTUsIDB4RTI0MCwgMHhFMjQwLCAweDRFMjQsDQorICAgIDB4RTI0MSwgMHhFMjQxLCAweDI0RkEsIDB4RTI0MiwgMHhFMjQyLCAweDRFMjUsIDB4RTI0MywgMHhFMjQzLCAweDFFRUQsDQorICAgIDB4RTI0NCwgMHhFMjRFLCAweDRFMjYsIDB4RTI0RiwgMHhFMjRGLCAweDI0RkQsIDB4RTI1MCwgMHhFMjUwLCAweDRFMzEsDQorICAgIDB4RTI1MSwgMHhFMjUxLCAweDI0RjksIDB4RTI1MiwgMHhFMjUyLCAweDRFMzIsIDB4RTI1MywgMHhFMjUzLCAweDI0RkUsDQorICAgIDB4RTI1NCwgMHhFMjU0LCAweDIwQ0QsIDB4RTI1NSwgMHhFMjU5LCAweDRFMzMsIDB4RTI1QSwgMHhFMjVBLCAweDI1MDgsDQorICAgIDB4RTI1QiwgMHhFMjVCLCAweDI1MDQsIDB4RTI1QywgMHhFMjVELCAweDRFMzgsIDB4RTI1RSwgMHhFMjVFLCAweDI1MDYsDQorICAgIDB4RTI1RiwgMHhFMjYxLCAweDRFM0EsIDB4RTI2MiwgMHhFMjYyLCAweDI0RkYsIDB4RTI2MywgMHhFMjYzLCAweDIwOTAsDQorICAgIDB4RTI2NCwgMHhFMjY2LCAweDRFM0QsIDB4RTI2NywgMHhFMjY3LCAweDFFREQsIDB4RTI2OCwgMHhFMjY4LCAweDFGMjUsDQorICAgIDB4RTI2OSwgMHhFMjY5LCAweDRFNDAsIDB4RTI2QSwgMHhFMjZBLCAweDI1MDMsIDB4RTI2QiwgMHhFMjZCLCAweDI1MDIsDQorICAgIDB4RTI2QywgMHhFMjZELCAweDRFNDEsIDB4RTI2RSwgMHhFMjZFLCAweDFFN0EsIDB4RTI2RiwgMHhFMjZGLCAweDIwQTYsDQorICAgIDB4RTI3MCwgMHhFMjc3LCAweDRFNDMsIDB4RTI3OCwgMHhFMjc4LCAweDFGRDUsIDB4RTI3OSwgMHhFMjdDLCAweDRFNEIsDQorICAgIDB4RTI3RCwgMHhFMjdELCAweDFGMTEsIDB4RTI3RSwgMHhFMjdFLCAweDRFNEYsIDB4RTI4MCwgMHhFMjgwLCAweDI1MDcsDQorICAgIDB4RTI4MSwgMHhFMjgxLCAweDI1MDAsIDB4RTI4MiwgMHhFMjgyLCAweDI1MDUsIDB4RTI4MywgMHhFMjg4LCAweDRFNTAsDQorICAgIDB4RTI4OSwgMHhFMjg5LCAweDI1MTksIDB4RTI4QSwgMHhFMjhBLCAweDRFNTYsIDB4RTI4QiwgMHhFMjhCLCAweDI1MTUsDQorICAgIDB4RTI4QywgMHhFMjhELCAweDRFNTcsIDB4RTI4RSwgMHhFMjhFLCAweDI1MEMsIDB4RTI4RiwgMHhFMjhGLCAweDIwMzEsDQorICAgIDB4RTI5MCwgMHhFMjkxLCAweDRFNTksIDB4RTI5MiwgMHhFMjkyLCAweDI1MEIsIDB4RTI5MywgMHhFMjkzLCAweDI1MEYsDQorICAgIDB4RTI5NCwgMHhFMjk0LCAweDI1MUEsIDB4RTI5NSwgMHhFMjk1LCAweDI1MDksIDB4RTI5NiwgMHhFMjk3LCAweDRFNUIsDQorICAgIDB4RTI5OCwgMHhFMjk4LCAweDI1MEUsIDB4RTI5OSwgMHhFMjk5LCAweDIyMzQsIDB4RTI5QSwgMHhFMjlBLCAweDI1MTMsDQorICAgIDB4RTI5QiwgMHhFMjlCLCAweDFGODAsIDB4RTI5QywgMHhFMjlGLCAweDRFNUQsIDB4RTJBMCwgMHhFMkEwLCAweDI1MDEsDQorICAgIDB4RTJBMSwgMHhFMkZFLCAweDE2MDMsIDB4RTM0MCwgMHhFMzQxLCAweDRFNjEsIDB4RTM0MiwgMHhFMzQyLCAweDI1MTcsDQorICAgIDB4RTM0MywgMHhFMzQzLCAweDI1MTYsIDB4RTM0NCwgMHhFMzQ2LCAweDRFNjMsIDB4RTM0NywgMHhFMzQ3LCAweDI1MTgsDQorICAgIDB4RTM0OCwgMHhFMzRBLCAweDRFNjYsIDB4RTM0QiwgMHhFMzRCLCAweDFFNTYsIDB4RTM0QywgMHhFMzRFLCAweDRFNjksDQorICAgIDB4RTM0RiwgMHhFMzRGLCAweDI1MEQsIDB4RTM1MCwgMHhFMzUwLCAweDRFNkMsIDB4RTM1MSwgMHhFMzUxLCAweDIwRDMsDQorICAgIDB4RTM1MiwgMHhFMzUzLCAweDRFNkQsIDB4RTM1NCwgMHhFMzU0LCAweDIwN0EsIDB4RTM1NSwgMHhFMzU1LCAweDIwQ0UsDQorICAgIDB4RTM1NiwgMHhFMzU3LCAweDRFNkYsIDB4RTM1OCwgMHhFMzU4LCAweDI1MTAsIDB4RTM1OSwgMHhFMzVCLCAweDRFNzEsDQorICAgIDB4RTM1QywgMHhFMzVDLCAweDFFNTUsIDB4RTM1RCwgMHhFMzVGLCAweDRFNzQsIDB4RTM2MCwgMHhFMzYwLCAweDI1MEEsDQorICAgIDB4RTM2MSwgMHhFMzY1LCAweDRFNzcsIDB4RTM2NiwgMHhFMzY3LCAweDI1MTEsIDB4RTM2OCwgMHhFMzcwLCAweDRFN0MsDQorICAgIDB4RTM3MSwgMHhFMzcxLCAweDFGQUEsIDB4RTM3MiwgMHhFMzcyLCAweDRFODUsIDB4RTM3MywgMHhFMzczLCAweDI1MUUsDQorICAgIDB4RTM3NCwgMHhFMzc0LCAweDFGMUYsIDB4RTM3NSwgMHhFMzc3LCAweDRFODYsIDB4RTM3OCwgMHhFMzc4LCAweDI1MkQsDQorICAgIDB4RTM3OSwgMHhFMzc5LCAweDIyMUQsIDB4RTM3QSwgMHhFMzdCLCAweDRFODksIDB4RTM3QywgMHhFMzdDLCAweDI1MzIsDQorICAgIDB4RTM3RCwgMHhFMzdELCAweDRFOEIsIDB4RTM3RSwgMHhFMzdFLCAweDIxN0IsIDB4RTM4MCwgMHhFMzg5LCAweDRFOEMsDQorICAgIDB4RTM4QSwgMHhFMzhBLCAweDIxQUYsIDB4RTM4QiwgMHhFMzhCLCAweDRFOTYsIDB4RTM4QywgMHhFMzhDLCAweDI1MkMsDQorICAgIDB4RTM4RCwgMHhFMzhFLCAweDRFOTcsIDB4RTM4RiwgMHhFMzhGLCAweDI1MjgsIDB4RTM5MCwgMHhFMzkwLCAweDRFOTksDQorICAgIDB4RTM5MSwgMHhFMzkxLCAweDIwOEMsIDB4RTM5MiwgMHhFMzkyLCAweDRFOUEsIDB4RTM5MywgMHhFMzkzLCAweDI1MkYsDQorICAgIDB4RTM5NCwgMHhFMzk0LCAweDRFOUIsIDB4RTM5NSwgMHhFMzk1LCAweDIxQkMsIDB4RTM5NiwgMHhFMzk4LCAweDRFOUMsDQorICAgIDB4RTM5OSwgMHhFMzk5LCAweDI1MUQsIDB4RTM5QSwgMHhFMzlCLCAweDRFOUYsIDB4RTM5QywgMHhFMzlDLCAweDI1MzUsDQorICAgIDB4RTM5RCwgMHhFMzlELCAweDRFQTEsIDB4RTM5RSwgMHhFMzlFLCAweDIyMEQsIDB4RTM5RiwgMHhFMzlGLCAweDI1MjYsDQorICAgIDB4RTNBMCwgMHhFM0EwLCAweDRFQTIsIDB4RTNBMSwgMHhFM0ZFLCAweDE2NjEsIDB4RTQ0MCwgMHhFNDQwLCAweDI1MzQsDQorICAgIDB4RTQ0MSwgMHhFNDQxLCAweDI1MkEsIDB4RTQ0MiwgMHhFNDQyLCAweDI1MUYsIDB4RTQ0MywgMHhFNDQzLCAweDI1MzEsDQorICAgIDB4RTQ0NCwgMHhFNDQ0LCAweDI1MUMsIDB4RTQ0NSwgMHhFNDQ3LCAweDRFQTMsIDB4RTQ0OCwgMHhFNDQ4LCAweDI1MjUsDQorICAgIDB4RTQ0OSwgMHhFNDRELCAweDRFQTYsIDB4RTQ0RSwgMHhFNDRFLCAweDIxQ0QsIDB4RTQ0RiwgMHhFNDRGLCAweDRFQUIsDQorICAgIDB4RTQ1MCwgMHhFNDUwLCAweDIxREEsIDB4RTQ1MSwgMHhFNDUxLCAweDRFQUMsIDB4RTQ1MiwgMHhFNDUyLCAweDIxNzIsDQorICAgIDB4RTQ1MywgMHhFNDUzLCAweDI1M0UsIDB4RTQ1NCwgMHhFNDU3LCAweDRFQUQsIDB4RTQ1OCwgMHhFNDU4LCAweDIwNEYsDQorICAgIDB4RTQ1OSwgMHhFNDU5LCAweDRFQjEsIDB4RTQ1QSwgMHhFNDVBLCAweDI1NDMsIDB4RTQ1QiwgMHhFNDVCLCAweDRFQjIsDQorICAgIDB4RTQ1QywgMHhFNDVDLCAweDIxRDcsIDB4RTQ1RCwgMHhFNDVELCAweDRFQjMsIDB4RTQ1RSwgMHhFNDVFLCAweDFFM0MsDQorICAgIDB4RTQ1RiwgMHhFNDYxLCAweDRFQjQsIDB4RTQ2MiwgMHhFNDYyLCAweDI1MjksIDB4RTQ2MywgMHhFNDY0LCAweDRFQjcsDQorICAgIDB4RTQ2NSwgMHhFNDY1LCAweDI1MjEsIDB4RTQ2NiwgMHhFNDY3LCAweDRFQjksIDB4RTQ2OCwgMHhFNDY4LCAweDFFRkYsDQorICAgIDB4RTQ2OSwgMHhFNDcyLCAweDRFQkIsIDB4RTQ3MywgMHhFNDczLCAweDI1M0YsIDB4RTQ3NCwgMHhFNDc0LCAweDRFQzUsDQorICAgIDB4RTQ3NSwgMHhFNDc1LCAweDI1NDQsIDB4RTQ3NiwgMHhFNDc4LCAweDRFQzYsIDB4RTQ3OSwgMHhFNDc5LCAweDI1MjMsDQorICAgIDB4RTQ3QSwgMHhFNDdBLCAweDFFOTAsIDB4RTQ3QiwgMHhFNDdCLCAweDI1M0EsIDB4RTQ3QywgMHhFNDdDLCAweDI1NDUsDQorICAgIDB4RTQ3RCwgMHhFNDdELCAweDRFQzksIDB4RTQ3RSwgMHhFNDdFLCAweDI1M0QsIDB4RTQ4MCwgMHhFNDgwLCAweDRFQ0EsDQorICAgIDB4RTQ4MSwgMHhFNDgxLCAweDIwQzEsIDB4RTQ4MiwgMHhFNDgzLCAweDRFQ0IsIDB4RTQ4NCwgMHhFNDg0LCAweDIxMDMsDQorICAgIDB4RTQ4NSwgMHhFNDg1LCAweDI1MjAsIDB4RTQ4NiwgMHhFNDg2LCAweDI1M0MsIDB4RTQ4NywgMHhFNDg3LCAweDI1M0IsDQorICAgIDB4RTQ4OCwgMHhFNDg4LCAweDI1MzgsIDB4RTQ4OSwgMHhFNDhDLCAweDRFQ0QsIDB4RTQ4RCwgMHhFNDhELCAweDI1NDAsDQorICAgIDB4RTQ4RSwgMHhFNDhFLCAweDRFRDEsIDB4RTQ4RiwgMHhFNDhGLCAweDFGQ0QsIDB4RTQ5MCwgMHhFNDkyLCAweDRFRDIsDQorICAgIDB4RTQ5MywgMHhFNDkzLCAweDFGMTgsIDB4RTQ5NCwgMHhFNDk3LCAweDRFRDUsIDB4RTQ5OCwgMHhFNDk4LCAweDI1NEIsDQorICAgIDB4RTQ5OSwgMHhFNDlDLCAweDRFRDksIDB4RTQ5RCwgMHhFNDlELCAweDI1NDcsIDB4RTQ5RSwgMHhFNDlGLCAweDI1NEYsDQorICAgIDB4RTRBMCwgMHhFNEEwLCAweDRFREQsIDB4RTRBMSwgMHhFNEZFLCAweDE2QkYsIDB4RTU0MCwgMHhFNTQ1LCAweDRFREUsDQorICAgIDB4RTU0NiwgMHhFNTQ2LCAweDIyQjAsIDB4RTU0NywgMHhFNTQ3LCAweDRFRTQsIDB4RTU0OCwgMHhFNTQ4LCAweDI1NDYsDQorICAgIDB4RTU0OSwgMHhFNTRBLCAweDRFRTUsIDB4RTU0QiwgMHhFNTRCLCAweDI1NEMsIDB4RTU0QywgMHhFNTRELCAweDRFRTcsDQorICAgIDB4RTU0RSwgMHhFNTRFLCAweDFFOUEsIDB4RTU0RiwgMHhFNTRGLCAweDI1NTIsIDB4RTU1MCwgMHhFNTUwLCAweDI1MzAsDQorICAgIDB4RTU1MSwgMHhFNTUxLCAweDI1NDksIDB4RTU1MiwgMHhFNTU0LCAweDRFRTksIDB4RTU1NSwgMHhFNTU1LCAweDI1NTEsDQorICAgIDB4RTU1NiwgMHhFNTU2LCAweDFFQ0EsIDB4RTU1NywgMHhFNTU3LCAweDRFRUMsIDB4RTU1OCwgMHhFNTU4LCAweDIwRDIsDQorICAgIDB4RTU1OSwgMHhFNTVCLCAweDRFRUQsIDB4RTU1QywgMHhFNTVDLCAweDFGQjgsIDB4RTU1RCwgMHhFNTVELCAweDRFRjAsDQorICAgIDB4RTU1RSwgMHhFNTVFLCAweDIwNzksIDB4RTU1RiwgMHhFNTYwLCAweDRFRjEsIDB4RTU2MSwgMHhFNTYxLCAweDIxQUIsDQorICAgIDB4RTU2MiwgMHhFNTYzLCAweDRFRjMsIDB4RTU2NCwgMHhFNTY0LCAweDI1NEQsIDB4RTU2NSwgMHhFNTY1LCAweDFFQTUsDQorICAgIDB4RTU2NiwgMHhFNTY3LCAweDRFRjUsIDB4RTU2OCwgMHhFNTY4LCAweDIwNEMsIDB4RTU2OSwgMHhFNTY5LCAweDIwODAsDQorICAgIDB4RTU2QSwgMHhFNTZCLCAweDRFRjcsIDB4RTU2QywgMHhFNTZDLCAweDI2NkQsIDB4RTU2RCwgMHhFNTZELCAweDRFRjksDQorICAgIDB4RTU2RSwgMHhFNTZFLCAweDI1MzcsIDB4RTU2RiwgMHhFNTc0LCAweDRFRkEsIDB4RTU3NSwgMHhFNTc1LCAweDI1NEEsDQorICAgIDB4RTU3NiwgMHhFNTc2LCAweDIxQjgsIDB4RTU3NywgMHhFNTc3LCAweDRGMDAsIDB4RTU3OCwgMHhFNTc4LCAweDI1NEUsDQorICAgIDB4RTU3OSwgMHhFNTdBLCAweDRGMDEsIDB4RTU3QiwgMHhFNTdCLCAweDI0RkMsIDB4RTU3QywgMHhFNTdDLCAweDI1NTQsDQorICAgIDB4RTU3RCwgMHhFNTdFLCAweDRGMDMsIDB4RTU4MCwgMHhFNTgwLCAweDRGMDUsIDB4RTU4MSwgMHhFNTgxLCAweDFGM0MsDQorICAgIDB4RTU4MiwgMHhFNTgyLCAweDRGMDYsIDB4RTU4MywgMHhFNTgzLCAweDFFRDUsIDB4RTU4NCwgMHhFNTg5LCAweDRGMDcsDQorICAgIDB4RTU4QSwgMHhFNThBLCAweDI1NTYsIDB4RTU4QiwgMHhFNThELCAweDRGMEQsIDB4RTU4RSwgMHhFNThFLCAweDIyNjgsDQorICAgIDB4RTU4RiwgMHhFNTkwLCAweDRGMTAsIDB4RTU5MSwgMHhFNTkxLCAweDFFRDYsIDB4RTU5MiwgMHhFNTk5LCAweDRGMTIsDQorICAgIDB4RTU5QSwgMHhFNTlBLCAweDI1NTcsIDB4RTU5QiwgMHhFNTlCLCAweDI1NTMsIDB4RTU5QywgMHhFNTlFLCAweDRGMUEsDQorICAgIDB4RTU5RiwgMHhFNTlGLCAweDI1NDgsIDB4RTVBMCwgMHhFNUEwLCAweDRGMUQsIDB4RTVBMSwgMHhFNUZFLCAweDE3MUQsDQorICAgIDB4RTY0MCwgMHhFNjQwLCAweDIwREMsIDB4RTY0MSwgMHhFNjQzLCAweDRGMUUsIDB4RTY0NCwgMHhFNjQ0LCAweDI1NTksDQorICAgIDB4RTY0NSwgMHhFNjQ4LCAweDRGMjEsIDB4RTY0OSwgMHhFNjQ5LCAweDFGOTcsIDB4RTY0QSwgMHhFNjRBLCAweDI1NTUsDQorICAgIDB4RTY0QiwgMHhFNjRELCAweDRGMjUsIDB4RTY0RSwgMHhFNjRFLCAweDIyN0QsIDB4RTY0RiwgMHhFNjUxLCAweDRGMjgsDQorICAgIDB4RTY1MiwgMHhFNjUyLCAweDI1N0UsIDB4RTY1MywgMHhFNjU1LCAweDRGMkIsIDB4RTY1NiwgMHhFNjU2LCAweDIwN0MsDQorICAgIDB4RTY1NywgMHhFNjU3LCAweDRGMkUsIDB4RTY1OCwgMHhFNjU4LCAweDI1NUEsIDB4RTY1OSwgMHhFNjVBLCAweDRGMkYsDQorICAgIDB4RTY1QiwgMHhFNjVCLCAweDI1NUUsIDB4RTY1QywgMHhFNjVELCAweDRGMzEsIDB4RTY1RSwgMHhFNjVFLCAweDFFMzQsDQorICAgIDB4RTY1RiwgMHhFNjY4LCAweDRGMzMsIDB4RTY2OSwgMHhFNjY5LCAweDIxNUUsIDB4RTY2QSwgMHhFNjZBLCAweDRGM0QsDQorICAgIDB4RTY2QiwgMHhFNjZCLCAweDI1NjAsIDB4RTY2QywgMHhFNjc0LCAweDRGM0UsIDB4RTY3NSwgMHhFNjc1LCAweDIxQTIsDQorICAgIDB4RTY3NiwgMHhFNjc2LCAweDIzNTQsIDB4RTY3NywgMHhFNjc4LCAweDRGNDcsIDB4RTY3OSwgMHhFNjc5LCAweDI1NjMsDQorICAgIDB4RTY3QSwgMHhFNjdBLCAweDI1MjcsIDB4RTY3QiwgMHhFNjdCLCAweDRGNDksIDB4RTY3QywgMHhFNjdDLCAweDI1MkUsDQorICAgIDB4RTY3RCwgMHhFNjdELCAweDI1NTgsIDB4RTY3RSwgMHhFNjdFLCAweDRGNEEsIDB4RTY4MCwgMHhFNjgwLCAweDFGMUIsDQorICAgIDB4RTY4MSwgMHhFNjgxLCAweDRGNEIsIDB4RTY4MiwgMHhFNjgyLCAweDIyODMsIDB4RTY4MywgMHhFNjgzLCAweDRGNEMsDQorICAgIDB4RTY4NCwgMHhFNjg0LCAweDI1NjQsIDB4RTY4NSwgMHhFNjg2LCAweDRGNEQsIDB4RTY4NywgMHhFNjg3LCAweDIwQTAsDQorICAgIDB4RTY4OCwgMHhFNjg4LCAweDRGNEYsIDB4RTY4OSwgMHhFNjg5LCAweDI1NjUsIDB4RTY4QSwgMHhFNjhCLCAweDRGNTAsDQorICAgIDB4RTY4QywgMHhFNjhDLCAweDI1NjEsIDB4RTY4RCwgMHhFNjkyLCAweDRGNTIsIDB4RTY5MywgMHhFNjkzLCAweDI1NjIsDQorICAgIDB4RTY5NCwgMHhFNjk2LCAweDRGNTgsIDB4RTY5NywgMHhFNjk3LCAweDI1NkMsIDB4RTY5OCwgMHhFNjlBLCAweDRGNUIsDQorICAgIDB4RTY5QiwgMHhFNjlCLCAweDI1NkQsIDB4RTY5QywgMHhFNjlDLCAweDIwMjAsIDB4RTY5RCwgMHhFNjlFLCAweDRGNUUsDQorICAgIDB4RTY5RiwgMHhFNjlGLCAweDI1NUYsIDB4RTZBMCwgMHhFNkEwLCAweDI1NkEsIDB4RTZBMSwgMHhFNkZFLCAweDE3N0IsDQorICAgIDB4RTc0MCwgMHhFNzQyLCAweDRGNjAsIDB4RTc0MywgMHhFNzQzLCAweDI1NkUsIDB4RTc0NCwgMHhFNzQ3LCAweDRGNjMsDQorICAgIDB4RTc0OCwgMHhFNzQ4LCAweDI1MzksIDB4RTc0OSwgMHhFNzQ5LCAweDI1NUMsIDB4RTc0QSwgMHhFNzRDLCAweDRGNjcsDQorICAgIDB4RTc0RCwgMHhFNzRFLCAweDI1NjgsIDB4RTc0RiwgMHhFNzRGLCAweDI1NkIsIDB4RTc1MCwgMHhFNzUwLCAweDFFNkYsDQorICAgIDB4RTc1MSwgMHhFNzUxLCAweDRGNkEsIDB4RTc1MiwgMHhFNzUyLCAweDFGQzQsIDB4RTc1MywgMHhFNzUzLCAweDI1NjcsDQorICAgIDB4RTc1NCwgMHhFNzU0LCAweDRGNkIsIDB4RTc1NSwgMHhFNzU1LCAweDI1NUIsIDB4RTc1NiwgMHhFNzU4LCAweDRGNkMsDQorICAgIDB4RTc1OSwgMHhFNzU5LCAweDI2MUQsIDB4RTc1QSwgMHhFNzY1LCAweDRGNkYsIDB4RTc2NiwgMHhFNzY2LCAweDI1MkIsDQorICAgIDB4RTc2NywgMHhFNzY3LCAweDRGN0IsIDB4RTc2OCwgMHhFNzY4LCAweDI1NzEsIDB4RTc2OSwgMHhFNzY5LCAweDRGN0MsDQorICAgIDB4RTc2QSwgMHhFNzZBLCAweDI1NzcsIDB4RTc2QiwgMHhFNzczLCAweDRGN0QsIDB4RTc3NCwgMHhFNzc0LCAweDI1MjIsDQorICAgIDB4RTc3NSwgMHhFNzdCLCAweDRGODYsIDB4RTc3QywgMHhFNzdDLCAweDI1MzMsIDB4RTc3RCwgMHhFNzdFLCAweDRGOEQsDQorICAgIDB4RTc4MCwgMHhFNzgxLCAweDRGOEYsIDB4RTc4MiwgMHhFNzgyLCAweDIwMkEsIDB4RTc4MywgMHhFNzgzLCAweDRGOTEsDQorICAgIDB4RTc4NCwgMHhFNzg0LCAweDI1MzYsIDB4RTc4NSwgMHhFNzg1LCAweDI1NzMsIDB4RTc4NiwgMHhFNzg2LCAweDI1NkYsDQorICAgIDB4RTc4NywgMHhFNzg5LCAweDRGOTIsIDB4RTc4QSwgMHhFNzhBLCAweDIyOTMsIDB4RTc4QiwgMHhFNzhCLCAweDI1NzgsDQorICAgIDB4RTc4QywgMHhFNzhFLCAweDRGOTUsIDB4RTc4RiwgMHhFNzhGLCAweDI1NzAsIDB4RTc5MCwgMHhFNzkxLCAweDRGOTgsDQorICAgIDB4RTc5MiwgMHhFNzkyLCAweDI1NzUsIDB4RTc5MywgMHhFNzk3LCAweDRGOUEsIDB4RTc5OCwgMHhFNzk5LCAweDI1NDEsDQorICAgIDB4RTc5QSwgMHhFNzlBLCAweDI1NUQsIDB4RTc5QiwgMHhFNzlGLCAweDRGOUYsIDB4RTdBMCwgMHhFN0EwLCAweDIwMUEsDQorICAgIDB4RTdBMSwgMHhFN0ZFLCAweDE3RDksIDB4RTg0MCwgMHhFODQyLCAweDRGQTQsIDB4RTg0MywgMHhFODQzLCAweDI1N0EsDQorICAgIDB4RTg0NCwgMHhFODQ0LCAweDIwMDYsIDB4RTg0NSwgMHhFODQ1LCAweDRGQTcsIDB4RTg0NiwgMHhFODQ2LCAweDIxNzcsDQorICAgIDB4RTg0NywgMHhFODQ4LCAweDRGQTgsIDB4RTg0OSwgMHhFODQ5LCAweDI1MUIsIDB4RTg0QSwgMHhFODRBLCAweDRGQUEsDQorICAgIDB4RTg0QiwgMHhFODRCLCAweDI1MjQsIDB4RTg0QywgMHhFODRFLCAweDRGQUIsIDB4RTg0RiwgMHhFODRGLCAweDI1N0IsDQorICAgIDB4RTg1MCwgMHhFODUzLCAweDRGQUUsIDB4RTg1NCwgMHhFODU0LCAweDIyQTMsIDB4RTg1NSwgMHhFODU5LCAweDRGQjIsDQorICAgIDB4RTg1QSwgMHhFODVBLCAweDI1NzksIDB4RTg1QiwgMHhFODVCLCAweDRGQjcsIDB4RTg1QywgMHhFODVDLCAweDI1NjYsDQorICAgIDB4RTg1RCwgMHhFODYxLCAweDRGQjgsIDB4RTg2MiwgMHhFODYyLCAweDFGOTMsIDB4RTg2MywgMHhFODYzLCAweDRGQkQsDQorICAgIDB4RTg2NCwgMHhFODY0LCAweDI1N0MsIDB4RTg2NSwgMHhFODZGLCAweDRGQkUsIDB4RTg3MCwgMHhFODcwLCAweDI1MTQsDQorICAgIDB4RTg3MSwgMHhFODcyLCAweDRGQzksIDB4RTg3MywgMHhFODczLCAweDI1N0QsIDB4RTg3NCwgMHhFODc0LCAweDRGQ0IsDQorICAgIDB4RTg3NSwgMHhFODc1LCAweDI1NzIsIDB4RTg3NiwgMHhFODdCLCAweDRGQ0MsIDB4RTg3QywgMHhFODdDLCAweDI1NzQsDQorICAgIDB4RTg3RCwgMHhFODdFLCAweDRGRDIsIDB4RTg4MCwgMHhFODgwLCAweDIyNEUsIDB4RTg4MSwgMHhFODgxLCAweDRGRDQsDQorICAgIDB4RTg4MiwgMHhFODgyLCAweDIxQzYsIDB4RTg4MywgMHhFODg2LCAweDRGRDUsIDB4RTg4NywgMHhFODg3LCAweDIwOUYsDQorICAgIDB4RTg4OCwgMHhFODg4LCAweDRGRDksIDB4RTg4OSwgMHhFODg5LCAweDI1NzYsIDB4RTg4QSwgMHhFODhCLCAweDRGREEsDQorICAgIDB4RTg4QywgMHhFODhDLCAweDIwNjQsIDB4RTg4RCwgMHhFODhELCAweDIyQkYsIDB4RTg4RSwgMHhFODhFLCAweDI2MUMsDQorICAgIDB4RTg4RiwgMHhFODhGLCAweDIyNUUsIDB4RTg5MCwgMHhFOEEwLCAweDRGREMsIDB4RThBMSwgMHhFOEZFLCAweDE4MzcsDQorICAgIDB4RTk0MCwgMHhFOTRCLCAweDRGRUQsIDB4RTk0QywgMHhFOTRDLCAweDFFNzUsIDB4RTk0RCwgMHhFOTUzLCAweDRGRjksDQorICAgIDB4RTk1NCwgMHhFOTU0LCAweDIwN0QsIDB4RTk1NSwgMHhFOTU1LCAweDUwMDAsIDB4RTk1NiwgMHhFOTU2LCAweDIzQkYsDQorICAgIDB4RTk1NywgMHhFOTU3LCAweDIxMTMsIDB4RTk1OCwgMHhFOTU5LCAweDUwMDEsIDB4RTk1QSwgMHhFOTVBLCAweDIzQzAsDQorICAgIDB4RTk1QiwgMHhFOTVDLCAweDUwMDMsIDB4RTk1RCwgMHhFOTVELCAweDFFNDUsIDB4RTk1RSwgMHhFOTVFLCAweDUwMDUsDQorICAgIDB4RTk1RiwgMHhFOTVGLCAweDFGRDgsIDB4RTk2MCwgMHhFOTYwLCAweDIzQzQsIDB4RTk2MSwgMHhFOTYxLCAweDUwMDYsDQorICAgIDB4RTk2MiwgMHhFOTYyLCAweDIzQzIsIDB4RTk2MywgMHhFOTYzLCAweDIxMDQsIDB4RTk2NCwgMHhFOTY0LCAweDUwMDcsDQorICAgIDB4RTk2NSwgMHhFOTY1LCAweDIxQkQsIDB4RTk2NiwgMHhFOTY2LCAweDUwMDgsIDB4RTk2NywgMHhFOTY3LCAweDFGODcsDQorICAgIDB4RTk2OCwgMHhFOTY4LCAweDIzQzMsIDB4RTk2OSwgMHhFOTZCLCAweDUwMDksIDB4RTk2QywgMHhFOTZDLCAweDIyNjksDQorICAgIDB4RTk2RCwgMHhFOTc0LCAweDUwMEMsIDB4RTk3NSwgMHhFOTc1LCAweDFGNDMsIDB4RTk3NiwgMHhFOTc2LCAweDUwMTQsDQorICAgIDB4RTk3NywgMHhFOTc3LCAweDFGMUUsIDB4RTk3OCwgMHhFOTc4LCAweDI2NzksIDB4RTk3OSwgMHhFOTc5LCAweDFFRUIsDQorICAgIDB4RTk3QSwgMHhFOTdCLCAweDUwMTUsIDB4RTk3QywgMHhFOTdDLCAweDFGMzUsIDB4RTk3RCwgMHhFOTdELCAweDIwOEEsDQorICAgIDB4RTk3RSwgMHhFOTdFLCAweDUwMTcsIDB4RTk4MCwgMHhFOTgwLCAweDIzQzcsIDB4RTk4MSwgMHhFOTgxLCAweDIzQzksDQorICAgIDB4RTk4MiwgMHhFOTgyLCAweDIzQzYsIDB4RTk4MywgMHhFOTg2LCAweDUwMTgsIDB4RTk4NywgMHhFOTg3LCAweDIyNEYsDQorICAgIDB4RTk4OCwgMHhFOThBLCAweDUwMUMsIDB4RTk4QiwgMHhFOThCLCAweDIzQ0IsIDB4RTk4QywgMHhFOThELCAweDUwMUYsDQorICAgIDB4RTk4RSwgMHhFOThFLCAweDIxRjMsIDB4RTk4RiwgMHhFOThGLCAweDUwMjEsIDB4RTk5MCwgMHhFOTkwLCAweDIxRjcsDQorICAgIDB4RTk5MSwgMHhFOTkxLCAweDIzQ0YsIDB4RTk5MiwgMHhFOTkyLCAweDIzQ0UsIDB4RTk5MywgMHhFOTkzLCAweDIzQ0EsDQorICAgIDB4RTk5NCwgMHhFOTk0LCAweDIzQ0QsIDB4RTk5NSwgMHhFOTk3LCAweDUwMjIsIDB4RTk5OCwgMHhFOTk4LCAweDIzRDAsDQorICAgIDB4RTk5OSwgMHhFOTlBLCAweDUwMjUsIDB4RTk5QiwgMHhFOTlCLCAweDI2NkMsIDB4RTk5QywgMHhFOTlDLCAweDUwMjcsDQorICAgIDB4RTk5RCwgMHhFOTlELCAweDIzQzEsIDB4RTk5RSwgMHhFOTlFLCAweDUwMjgsIDB4RTk5RiwgMHhFOTlGLCAweDFGRUUsDQorICAgIDB4RTlBMCwgMHhFOUEwLCAweDIzRDEsIDB4RTlBMSwgMHhFOUZFLCAweDE4OTUsIDB4RUE0MCwgMHhFQTQwLCAweDFGRjgsDQorICAgIDB4RUE0MSwgMHhFQTQzLCAweDUwMjksIDB4RUE0NCwgMHhFQTQ0LCAweDIzRDMsIDB4RUE0NSwgMHhFQTQ3LCAweDUwMkMsDQorICAgIDB4RUE0OCwgMHhFQTQ4LCAweDIzRDIsIDB4RUE0OSwgMHhFQTQ5LCAweDIzRDQsIDB4RUE0QSwgMHhFQTRBLCAweDFFOTgsDQorICAgIDB4RUE0QiwgMHhFQTRGLCAweDUwMkYsIDB4RUE1MCwgMHhFQTUwLCAweDFGMkMsIDB4RUE1MSwgMHhFQTUxLCAweDUwMzQsDQorICAgIDB4RUE1MiwgMHhFQTUyLCAweDIzRDUsIDB4RUE1MywgMHhFQTU0LCAweDUwMzUsIDB4RUE1NSwgMHhFQTU1LCAweDFFNzEsDQorICAgIDB4RUE1NiwgMHhFQTU2LCAweDI2OTEsIDB4RUE1NywgMHhFQTU4LCAweDUwMzcsIDB4RUE1OSwgMHhFQTU5LCAweDIzQzUsDQorICAgIDB4RUE1QSwgMHhFQTdFLCAweDUwMzksIDB4RUE4MCwgMHhFQTgwLCAweDIzMUEsIDB4RUE4MSwgMHhFQTgzLCAweDUwNUUsDQorICAgIDB4RUE4NCwgMHhFQTg0LCAweDIxMTQsIDB4RUE4NSwgMHhFQTg2LCAweDUwNjEsIDB4RUE4NywgMHhFQTg3LCAweDIyODQsDQorICAgIDB4RUE4OCwgMHhFQThELCAweDUwNjMsIDB4RUE4RSwgMHhFQThFLCAweDIyMUMsIDB4RUE4RiwgMHhFQThGLCAweDUwNjksDQorICAgIDB4RUE5MCwgMHhFQTkwLCAweDFFN0UsIDB4RUE5MSwgMHhFQTkxLCAweDIwNEQsIDB4RUE5MiwgMHhFQTk1LCAweDUwNkEsDQorICAgIDB4RUE5NiwgMHhFQTk2LCAweDIyMDEsIDB4RUE5NywgMHhFQTlGLCAweDUwNkUsIDB4RUFBMCwgMHhFQUEwLCAweDFFRDksDQorICAgIDB4RUFBMSwgMHhFQUZFLCAweDE4RjMsIDB4RUI0MCwgMHhFQjQwLCAweDUwNzcsIDB4RUI0MSwgMHhFQjQxLCAweDFGQjIsDQorICAgIDB4RUI0MiwgMHhFQjQ0LCAweDUwNzgsIDB4RUI0NSwgMHhFQjQ1LCAweDIyNTIsIDB4RUI0NiwgMHhFQjQ3LCAweDUwN0IsDQorICAgIDB4RUI0OCwgMHhFQjQ4LCAweDFGNzksIDB4RUI0OSwgMHhFQjUyLCAweDUwN0QsIDB4RUI1MywgMHhFQjUzLCAweDIxNTcsDQorICAgIDB4RUI1NCwgMHhFQjU0LCAweDUwODcsIDB4RUI1NSwgMHhFQjU1LCAweDIxQkYsIDB4RUI1NiwgMHhFQjVBLCAweDUwODgsDQorICAgIDB4RUI1QiwgMHhFQjVCLCAweDIyMUYsIDB4RUI1QywgMHhFQjVDLCAweDUwOEQsIDB4RUI1RCwgMHhFQjVELCAweDIwM0QsDQorICAgIDB4RUI1RSwgMHhFQjVGLCAweDUwOEUsIDB4RUI2MCwgMHhFQjYwLCAweDIwMTUsIDB4RUI2MSwgMHhFQjYxLCAweDUwOTAsDQorICAgIDB4RUI2MiwgMHhFQjYyLCAweDI2QTUsIDB4RUI2MywgMHhFQjZDLCAweDUwOTEsIDB4RUI2RCwgMHhFQjZELCAweDIxNTYsDQorICAgIDB4RUI2RSwgMHhFQjZGLCAweDUwOUIsIDB4RUI3MCwgMHhFQjcwLCAweDIxNDQsIDB4RUI3MSwgMHhFQjcxLCAweDUwOUQsDQorICAgIDB4RUI3MiwgMHhFQjcyLCAweDFFOTEsIDB4RUI3MywgMHhFQjczLCAweDIyNTcsIDB4RUI3NCwgMHhFQjc3LCAweDUwOUUsDQorICAgIDB4RUI3OCwgMHhFQjc4LCAweDIwMEEsIDB4RUI3OSwgMHhFQjc5LCAweDIwOTIsIDB4RUI3QSwgMHhFQjdFLCAweDUwQTIsDQorICAgIDB4RUI4MCwgMHhFQjg0LCAweDUwQTcsIDB4RUI4NSwgMHhFQjg1LCAweDIyNTAsIDB4RUI4NiwgMHhFQjg5LCAweDUwQUMsDQorICAgIDB4RUI4QSwgMHhFQjhBLCAweDFFQzMsIDB4RUI4QiwgMHhFQkEwLCAweDUwQjAsIDB4RUJBMSwgMHhFQkZFLCAweDE5NTEsDQorICAgIDB4RUM0MCwgMHhFQzQ1LCAweDUwQzYsIDB4RUM0NiwgMHhFQzQ2LCAweDIxQTgsIDB4RUM0NywgMHhFQzU1LCAweDUwQ0MsDQorICAgIDB4RUM1NiwgMHhFQzU2LCAweDI2MEQsIDB4RUM1NywgMHhFQzU5LCAweDUwREIsIDB4RUM1QSwgMHhFQzVBLCAweDI2MEMsDQorICAgIDB4RUM1QiwgMHhFQzVCLCAweDUwREUsIDB4RUM1QywgMHhFQzVDLCAweDI2MEUsIDB4RUM1RCwgMHhFQzVGLCAweDUwREYsDQorICAgIDB4RUM2MCwgMHhFQzYwLCAweDIwMzIsIDB4RUM2MSwgMHhFQzZELCAweDUwRTIsIDB4RUM2RSwgMHhFQzZFLCAweDI2MEIsDQorICAgIDB4RUM2RiwgMHhFQzc1LCAweDUwRUYsIDB4RUM3NiwgMHhFQzc2LCAweDIyQzMsIDB4RUM3NywgMHhFQzdFLCAweDUwRjYsDQorICAgIDB4RUM4MCwgMHhFQzk1LCAweDUwRkUsIDB4RUM5NiwgMHhFQzk2LCAweDFGMjMsIDB4RUM5NywgMHhFQ0EwLCAweDUxMTQsDQorICAgIDB4RUNBMSwgMHhFQ0ZFLCAweDE5QUYsIDB4RUQ0MCwgMHhFRDQ1LCAweDUxMUUsIDB4RUQ0NiwgMHhFRDQ2LCAweDI2OTUsDQorICAgIDB4RUQ0NywgMHhFRDU3LCAweDUxMjQsIDB4RUQ1OCwgMHhFRDU4LCAweDI2NUUsIDB4RUQ1OSwgMHhFRDVELCAweDUxMzUsDQorICAgIDB4RUQ1RSwgMHhFRDVFLCAweDI2NUQsIDB4RUQ1RiwgMHhFRDYwLCAweDUxM0EsIDB4RUQ2MSwgMHhFRDYxLCAweDI2OTIsDQorICAgIDB4RUQ2MiwgMHhFRDYzLCAweDUxM0MsIDB4RUQ2NCwgMHhFRDY0LCAweDI2NUYsIDB4RUQ2NSwgMHhFRDY1LCAweDUxM0UsDQorICAgIDB4RUQ2NiwgMHhFRDY2LCAweDIxOEQsIDB4RUQ2NywgMHhFRDY3LCAweDIwRkQsIDB4RUQ2OCwgMHhFRDZELCAweDUxM0YsDQorICAgIDB4RUQ2RSwgMHhFRDZFLCAweDFGNDAsIDB4RUQ2RiwgMHhFRDczLCAweDUxNDUsIDB4RUQ3NCwgMHhFRDc0LCAweDI0NjUsDQorICAgIDB4RUQ3NSwgMHhFRDc2LCAweDUxNEEsIDB4RUQ3NywgMHhFRDc3LCAweDI0NjcsIDB4RUQ3OCwgMHhFRDc4LCAweDUxNEMsDQorICAgIDB4RUQ3OSwgMHhFRDc5LCAweDI0NjYsIDB4RUQ3QSwgMHhFRDdFLCAweDUxNEQsIDB4RUQ4MCwgMHhFRDkwLCAweDUxNTIsDQorICAgIDB4RUQ5MSwgMHhFRDkxLCAweDIxQzksIDB4RUQ5MiwgMHhFRDkyLCAweDUxNjMsIDB4RUQ5MywgMHhFRDkzLCAweDIyMDksDQorICAgIDB4RUQ5NCwgMHhFRDk0LCAweDFFQzksIDB4RUQ5NSwgMHhFRDk1LCAweDIwRTksIDB4RUQ5NiwgMHhFRDk2LCAweDUxNjQsDQorICAgIDB4RUQ5NywgMHhFRDk3LCAweDIxQ0EsIDB4RUQ5OCwgMHhFRDk4LCAweDIxNDYsIDB4RUQ5OSwgMHhFRDk5LCAweDI1QzUsDQorICAgIDB4RUQ5QSwgMHhFRDlBLCAweDIxREMsIDB4RUQ5QiwgMHhFRDlCLCAweDUxNjUsIDB4RUQ5QywgMHhFRDlDLCAweDI0NUUsDQorICAgIDB4RUQ5RCwgMHhFRDlELCAweDUxNjYsIDB4RUQ5RSwgMHhFRDlFLCAweDIxNEYsIDB4RUQ5RiwgMHhFRDlGLCAweDUxNjcsDQorICAgIDB4RURBMCwgMHhFREEwLCAweDI1QzYsIDB4RURBMSwgMHhFREZFLCAweDFBMEQsIDB4RUU0MCwgMHhFRTQwLCAweDI1QzcsDQorICAgIDB4RUU0MSwgMHhFRTQxLCAweDIyNDEsIDB4RUU0MiwgMHhFRTQyLCAweDIxOEEsIDB4RUU0MywgMHhFRTQzLCAweDFFMkYsDQorICAgIDB4RUU0NCwgMHhFRTQ0LCAweDFFREMsIDB4RUU0NSwgMHhFRTQ3LCAweDUxNjgsIDB4RUU0OCwgMHhFRTQ4LCAweDIwQkYsDQorICAgIDB4RUU0OSwgMHhFRTQ5LCAweDIwMzQsIDB4RUU0QSwgMHhFRTRDLCAweDUxNkIsIDB4RUU0RCwgMHhFRTRELCAweDI1QzksDQorICAgIDB4RUU0RSwgMHhFRTUxLCAweDUxNkUsIDB4RUU1MiwgMHhFRTUyLCAweDI1QzgsIDB4RUU1MywgMHhFRTU0LCAweDUxNzIsDQorICAgIDB4RUU1NSwgMHhFRTU1LCAweDIyMEUsIDB4RUU1NiwgMHhFRTU2LCAweDUxNzQsIDB4RUU1NywgMHhFRTU3LCAweDI1Q0IsDQorICAgIDB4RUU1OCwgMHhFRTVELCAweDUxNzUsIDB4RUU1RSwgMHhFRTVFLCAweDIxN0QsIDB4RUU1RiwgMHhFRTYwLCAweDUxN0IsDQorICAgIDB4RUU2MSwgMHhFRTYxLCAweDFGN0UsIDB4RUU2MiwgMHhFRTY3LCAweDUxN0QsIDB4RUU2OCwgMHhFRTY4LCAweDI1Q0MsDQorICAgIDB4RUU2OSwgMHhFRTY5LCAweDFGQzMsIDB4RUU2QSwgMHhFRTZCLCAweDUxODMsIDB4RUU2QywgMHhFRTZDLCAweDIwQjksDQorICAgIDB4RUU2RCwgMHhFRTZELCAweDUxODUsIDB4RUU2RSwgMHhFRTZFLCAweDIxODEsIDB4RUU2RiwgMHhFRTc2LCAweDUxODYsDQorICAgIDB4RUU3NywgMHhFRTc3LCAweDFGREEsIDB4RUU3OCwgMHhFRTdDLCAweDUxOEUsIDB4RUU3RCwgMHhFRTdELCAweDIxNzMsDQorICAgIDB4RUU3RSwgMHhFRTdFLCAweDFFRTEsIDB4RUU4MCwgMHhFRTgwLCAweDI1Q0QsIDB4RUU4MSwgMHhFRTg0LCAweDUxOTMsDQorICAgIDB4RUU4NSwgMHhFRTg1LCAweDI1Q0UsIDB4RUU4NiwgMHhFRTg2LCAweDIxRjYsIDB4RUU4NywgMHhFRTg5LCAweDUxOTcsDQorICAgIDB4RUU4QSwgMHhFRThBLCAweDIyNEIsIDB4RUU4QiwgMHhFRThCLCAweDI1RDEsIDB4RUU4QywgMHhFRThDLCAweDUxOUEsDQorICAgIDB4RUU4RCwgMHhFRThELCAweDFFQzAsIDB4RUU4RSwgMHhFRThGLCAweDUxOUIsIDB4RUU5MCwgMHhFRTkwLCAweDIwMDgsDQorICAgIDB4RUU5MSwgMHhFRTkzLCAweDUxOUQsIDB4RUU5NCwgMHhFRTk0LCAweDI1RDAsIDB4RUU5NSwgMHhFRTk2LCAweDUxQTAsDQorICAgIDB4RUU5NywgMHhFRTk3LCAweDI1RDIsIDB4RUU5OCwgMHhFRTk4LCAweDUxQTIsIDB4RUU5OSwgMHhFRTk5LCAweDFGMkEsDQorICAgIDB4RUU5QSwgMHhFRTlDLCAweDUxQTMsIDB4RUU5RCwgMHhFRTlELCAweDFFNzIsIDB4RUU5RSwgMHhFRTlFLCAweDI1RDMsDQorICAgIDB4RUU5RiwgMHhFRUEwLCAweDUxQTYsIDB4RUVBMSwgMHhFRUZFLCAweDFBNkIsIDB4RUY0MCwgMHhFRjQwLCAweDIxQkUsDQorICAgIDB4RUY0MSwgMHhFRjQxLCAweDI1RDQsIDB4RUY0MiwgMHhFRjQyLCAweDIwNDQsIDB4RUY0MywgMHhFRjQzLCAweDUxQTgsDQorICAgIDB4RUY0NCwgMHhFRjQ0LCAweDI1Q0YsIDB4RUY0NSwgMHhFRjQ1LCAweDIwRjMsIDB4RUY0NiwgMHhFRjRCLCAweDUxQTksDQorICAgIDB4RUY0QywgMHhFRjRDLCAweDFGMDAsIDB4RUY0RCwgMHhFRjUxLCAweDUxQUYsIDB4RUY1MiwgMHhFRjUzLCAweDI0Q0MsDQorICAgIDB4RUY1NCwgMHhFRjU0LCAweDUxQjQsIDB4RUY1NSwgMHhFRjU1LCAweDI2OTgsIDB4RUY1NiwgMHhFRjU2LCAweDUxQjUsDQorICAgIDB4RUY1NywgMHhFRjU3LCAweDI2NzgsIDB4RUY1OCwgMHhFRjU5LCAweDUxQjYsIDB4RUY1QSwgMHhFRjVBLCAweDI0Q0UsDQorICAgIDB4RUY1QiwgMHhFRjVGLCAweDUxQjgsIDB4RUY2MCwgMHhFRjYwLCAweDI0Q0YsIDB4RUY2MSwgMHhFRjY3LCAweDUxQkQsDQorICAgIDB4RUY2OCwgMHhFRjY4LCAweDIwQjgsIDB4RUY2OSwgMHhFRjY5LCAweDUxQzQsIDB4RUY2QSwgMHhFRjZBLCAweDI0RDAsDQorICAgIDB4RUY2QiwgMHhFRjZCLCAweDUxQzUsIDB4RUY2QywgMHhFRjZDLCAweDI0RDEsIDB4RUY2RCwgMHhFRjc2LCAweDUxQzYsDQorICAgIDB4RUY3NywgMHhFRjc3LCAweDFFRjQsIDB4RUY3OCwgMHhFRjc5LCAweDUxRDAsIDB4RUY3QSwgMHhFRjdBLCAweDIzOUIsDQorICAgIDB4RUY3QiwgMHhFRjdCLCAweDUxRDIsIDB4RUY3QywgMHhFRjdDLCAweDI2N0UsIDB4RUY3RCwgMHhFRjdFLCAweDUxRDMsDQorICAgIDB4RUY4MCwgMHhFRjgxLCAweDUxRDUsIDB4RUY4MiwgMHhFRjgyLCAweDIzOUQsIDB4RUY4MywgMHhFRjg0LCAweDIzOUYsDQorICAgIDB4RUY4NSwgMHhFRjg1LCAweDUxRDcsIDB4RUY4NiwgMHhFRjg2LCAweDIzQTEsIDB4RUY4NywgMHhFRjg3LCAweDUxRDgsDQorICAgIDB4RUY4OCwgMHhFRjg4LCAweDFFRjEsIDB4RUY4OSwgMHhFRjhBLCAweDUxRDksIDB4RUY4QiwgMHhFRjhCLCAweDIyMUUsDQorICAgIDB4RUY4QywgMHhFRjhDLCAweDUxREIsIDB4RUY4RCwgMHhFRjhELCAweDIzQTIsIDB4RUY4RSwgMHhFRjk0LCAweDUxREMsDQorICAgIDB4RUY5NSwgMHhFRjk1LCAweDIxNEIsIDB4RUY5NiwgMHhFRjk2LCAweDFFMzYsIDB4RUY5NywgMHhFRjk3LCAweDIxMzUsDQorICAgIDB4RUY5OCwgMHhFRjlCLCAweDUxRTMsIDB4RUY5QywgMHhFRjlDLCAweDFGQUQsIDB4RUY5RCwgMHhFRjlELCAweDUxRTcsDQorICAgIDB4RUY5RSwgMHhFRjlFLCAweDFFNTMsIDB4RUY5RiwgMHhFRkEwLCAweDUxRTgsIDB4RUZBMSwgMHhFRkZFLCAweDFBQzksDQorICAgIDB4RjA0MCwgMHhGMDQwLCAweDUxRUEsIDB4RjA0MSwgMHhGMDQxLCAweDIzQTMsIDB4RjA0MiwgMHhGMDQyLCAweDIyMDMsDQorICAgIDB4RjA0MywgMHhGMDQzLCAweDUxRUIsIDB4RjA0NCwgMHhGMDQ0LCAweDFFRTcsIDB4RjA0NSwgMHhGMDQ2LCAweDUxRUMsDQorICAgIDB4RjA0NywgMHhGMDQ3LCAweDIzQTQsIDB4RjA0OCwgMHhGMDQ4LCAweDIwOTcsIDB4RjA0OSwgMHhGMDQ5LCAweDFFRTQsDQorICAgIDB4RjA0QSwgMHhGMDRELCAweDUxRUUsIDB4RjA0RSwgMHhGMDRFLCAweDIyMzgsIDB4RjA0RiwgMHhGMDUwLCAweDUxRjIsDQorICAgIDB4RjA1MSwgMHhGMDUxLCAweDIzQTUsIDB4RjA1MiwgMHhGMDUzLCAweDUxRjQsIDB4RjA1NCwgMHhGMDU0LCAweDFGOUEsDQorICAgIDB4RjA1NSwgMHhGMDU2LCAweDUxRjYsIDB4RjA1NywgMHhGMDU3LCAweDIxQzMsIDB4RjA1OCwgMHhGMDVELCAweDUxRjgsDQorICAgIDB4RjA1RSwgMHhGMDVFLCAweDFGMkUsIDB4RjA1RiwgMHhGMDY3LCAweDUxRkUsIDB4RjA2OCwgMHhGMDY4LCAweDIzOUMsDQorICAgIDB4RjA2OSwgMHhGMDZCLCAweDUyMDcsIDB4RjA2QywgMHhGMDZDLCAweDIzQTYsIDB4RjA2RCwgMHhGMDcwLCAweDUyMEEsDQorICAgIDB4RjA3MSwgMHhGMDcxLCAweDIzOUUsIDB4RjA3MiwgMHhGMDcyLCAweDUyMEUsIDB4RjA3MywgMHhGMDczLCAweDIwMzUsDQorICAgIDB4RjA3NCwgMHhGMDc0LCAweDIzQTcsIDB4RjA3NSwgMHhGMDc3LCAweDUyMEYsIDB4RjA3OCwgMHhGMDc4LCAweDIzQTgsDQorICAgIDB4RjA3OSwgMHhGMDc5LCAweDUyMTIsIDB4RjA3QSwgMHhGMDdBLCAweDIwNzUsIDB4RjA3QiwgMHhGMDdDLCAweDUyMTMsDQorICAgIDB4RjA3RCwgMHhGMDdFLCAweDIzQTksIDB4RjA4MCwgMHhGMDgwLCAweDIzQUIsIDB4RjA4MSwgMHhGMDgxLCAweDFGRUIsDQorICAgIDB4RjA4MiwgMHhGMDgyLCAweDIzQUMsIDB4RjA4MywgMHhGMDg2LCAweDUyMTUsIDB4RjA4NywgMHhGMDg3LCAweDFGNkEsDQorICAgIDB4RjA4OCwgMHhGMDg4LCAweDIwRjksIDB4RjA4OSwgMHhGMDhBLCAweDUyMTksIDB4RjA4QiwgMHhGMDhCLCAweDI2NjYsDQorICAgIDB4RjA4QywgMHhGMDhGLCAweDUyMUIsIDB4RjA5MCwgMHhGMDkwLCAweDI2NjcsIDB4RjA5MSwgMHhGMDkxLCAweDUyMUYsDQorICAgIDB4RjA5MiwgMHhGMDkyLCAweDFFNkMsIDB4RjA5MywgMHhGMDk1LCAweDUyMjAsIDB4RjA5NiwgMHhGMDk2LCAweDIzQUQsDQorICAgIDB4RjA5NywgMHhGMEEwLCAweDUyMjMsIDB4RjBBMSwgMHhGMEZFLCAweDFCMjcsIDB4RjE0MCwgMHhGMTUxLCAweDUyMkQsDQorICAgIDB4RjE1MiwgMHhGMTUyLCAweDIwNkQsIDB4RjE1MywgMHhGMTUzLCAweDIyNDIsIDB4RjE1NCwgMHhGMTU0LCAweDFGMDIsDQorICAgIDB4RjE1NSwgMHhGMTU2LCAweDUyM0YsIDB4RjE1NywgMHhGMTU3LCAweDIxODMsIDB4RjE1OCwgMHhGMTU4LCAweDUyNDEsDQorICAgIDB4RjE1OSwgMHhGMTU5LCAweDFFODUsIDB4RjE1QSwgMHhGMTVBLCAweDIxRTksIDB4RjE1QiwgMHhGMTY2LCAweDUyNDIsDQorICAgIDB4RjE2NywgMHhGMTY3LCAweDFFNTcsIDB4RjE2OCwgMHhGMTc1LCAweDUyNEUsIDB4RjE3NiwgMHhGMTc2LCAweDIyQTUsDQorICAgIDB4RjE3NywgMHhGMTc3LCAweDI0MDcsIDB4RjE3OCwgMHhGMTc4LCAweDFGQ0EsIDB4RjE3OSwgMHhGMTc5LCAweDUyNUMsDQorICAgIDB4RjE3QSwgMHhGMTdBLCAweDI0MDIsIDB4RjE3QiwgMHhGMTdCLCAweDFGODIsIDB4RjE3QywgMHhGMTdELCAweDUyNUQsDQorICAgIDB4RjE3RSwgMHhGMTdFLCAweDI0MDgsIDB4RjE4MCwgMHhGMTgwLCAweDI0MDQsIDB4RjE4MSwgMHhGMTgxLCAweDUyNUYsDQorICAgIDB4RjE4MiwgMHhGMTgyLCAweDIxMzEsIDB4RjE4MywgMHhGMTgzLCAweDUyNjAsIDB4RjE4NCwgMHhGMTg0LCAweDIxODQsDQorICAgIDB4RjE4NSwgMHhGMTg1LCAweDUyNjEsIDB4RjE4NiwgMHhGMTg2LCAweDI0MDMsIDB4RjE4NywgMHhGMTg3LCAweDUyNjIsDQorICAgIDB4RjE4OCwgMHhGMTg4LCAweDIwNkUsIDB4RjE4OSwgMHhGMTg5LCAweDI0MEIsIDB4RjE4QSwgMHhGMTkzLCAweDUyNjMsDQorICAgIDB4RjE5NCwgMHhGMTk0LCAweDFGM0YsIDB4RjE5NSwgMHhGMTk3LCAweDUyNkQsIDB4RjE5OCwgMHhGMTk4LCAweDIwNjcsDQorICAgIDB4RjE5OSwgMHhGMUEwLCAweDUyNzAsIDB4RjFBMSwgMHhGMUZFLCAweDFCODUsIDB4RjI0MCwgMHhGMjQ0LCAweDUyNzgsDQorICAgIDB4RjI0NSwgMHhGMjQ1LCAweDFGRDcsIDB4RjI0NiwgMHhGMjQ2LCAweDUyN0QsIDB4RjI0NywgMHhGMjQ3LCAweDFFODMsDQorICAgIDB4RjI0OCwgMHhGMjRBLCAweDUyN0UsIDB4RjI0QiwgMHhGMjRCLCAweDI0MEYsIDB4RjI0QywgMHhGMjUyLCAweDUyODEsDQorICAgIDB4RjI1MywgMHhGMjUzLCAweDI0MEUsIDB4RjI1NCwgMHhGMjU0LCAweDIwQzcsIDB4RjI1NSwgMHhGMjU1LCAweDI0MEQsDQorICAgIDB4RjI1NiwgMHhGMjVCLCAweDUyODgsIDB4RjI1QywgMHhGMjVDLCAweDI0MTIsIDB4RjI1RCwgMHhGMjVFLCAweDUyOEUsDQorICAgIDB4RjI1RiwgMHhGMjVGLCAweDIwQjcsIDB4RjI2MCwgMHhGMjcwLCAweDUyOTAsIDB4RjI3MSwgMHhGMjcxLCAweDIzRjAsDQorICAgIDB4RjI3MiwgMHhGMjcyLCAweDUyQTEsIDB4RjI3MywgMHhGMjczLCAweDI0MTEsIDB4RjI3NCwgMHhGMjc0LCAweDI0MTQsDQorICAgIDB4RjI3NSwgMHhGMjc1LCAweDUyQTIsIDB4RjI3NiwgMHhGMjc2LCAweDIxNzAsIDB4RjI3NywgMHhGMjdCLCAweDUyQTMsDQorICAgIDB4RjI3QywgMHhGMjdDLCAweDI0MDUsIDB4RjI3RCwgMHhGMjdELCAweDIxMEMsIDB4RjI3RSwgMHhGMjdFLCAweDI0MTUsDQorICAgIDB4RjI4MCwgMHhGMjg0LCAweDUyQTgsIDB4RjI4NSwgMHhGMjg1LCAweDIwNjYsIDB4RjI4NiwgMHhGMjg2LCAweDUyQUQsDQorICAgIDB4RjI4NywgMHhGMjg3LCAweDIzNTIsIDB4RjI4OCwgMHhGMjg4LCAweDI0MTMsIDB4RjI4OSwgMHhGMjg5LCAweDI0MTAsDQorICAgIDB4RjI4QSwgMHhGMjhCLCAweDI0MTYsIDB4RjI4QywgMHhGMjhDLCAweDIwRjEsIDB4RjI4RCwgMHhGMjkwLCAweDUyQUUsDQorICAgIDB4RjI5MSwgMHhGMjkxLCAweDI0MEEsIDB4RjI5MiwgMHhGMjkzLCAweDUyQjIsIDB4RjI5NCwgMHhGMjk0LCAweDI0MDksDQorICAgIDB4RjI5NSwgMHhGMjk1LCAweDUyQjQsIDB4RjI5NiwgMHhGMjk2LCAweDI0MTgsIDB4RjI5NywgMHhGMjlCLCAweDUyQjUsDQorICAgIDB4RjI5QywgMHhGMjlDLCAweDFGQTcsIDB4RjI5RCwgMHhGMjlELCAweDUyQkEsIDB4RjI5RSwgMHhGMjlFLCAweDIxRkMsDQorICAgIDB4RjI5RiwgMHhGMkEwLCAweDUyQkIsIDB4RjJBMSwgMHhGMkZFLCAweDFCRTMsIDB4RjM0MCwgMHhGMzQwLCAweDFGQzEsDQorICAgIDB4RjM0MSwgMHhGMzQxLCAweDI0MDYsIDB4RjM0MiwgMHhGMzQ0LCAweDUyQkQsIDB4RjM0NSwgMHhGMzQ1LCAweDIyOUMsDQorICAgIDB4RjM0NiwgMHhGMzQ3LCAweDUyQzAsIDB4RjM0OCwgMHhGMzQ4LCAweDIwNEUsIDB4RjM0OSwgMHhGMzQ5LCAweDUyQzIsDQorICAgIDB4RjM0QSwgMHhGMzRBLCAweDI0MUEsIDB4RjM0QiwgMHhGMzRCLCAweDI0MTksIDB4RjM0QywgMHhGMzRGLCAweDUyQzMsDQorICAgIDB4RjM1MCwgMHhGMzUwLCAweDI0MEMsIDB4RjM1MSwgMHhGMzYwLCAweDUyQzcsIDB4RjM2MSwgMHhGMzYxLCAweDFFMjksDQorICAgIDB4RjM2MiwgMHhGMzczLCAweDUyRDcsIDB4RjM3NCwgMHhGMzc0LCAweDI2NjEsIDB4RjM3NSwgMHhGMzc1LCAweDUyRTksDQorICAgIDB4RjM3NiwgMHhGMzc2LCAweDI2QTQsIDB4RjM3NywgMHhGMzc3LCAweDIxNzQsIDB4RjM3OCwgMHhGMzc4LCAweDI2NjMsDQorICAgIDB4RjM3OSwgMHhGMzc5LCAweDI2NjIsIDB4RjM3QSwgMHhGMzdFLCAweDUyRUEsIDB4RjM4MCwgMHhGMzhCLCAweDUyRUYsDQorICAgIDB4RjM4QywgMHhGMzhDLCAweDI2NzUsIDB4RjM4RCwgMHhGMzlGLCAweDUyRkIsIDB4RjNBMCwgMHhGM0EwLCAweDIxNEMsDQorICAgIDB4RjNBMSwgMHhGM0ZFLCAweDFDNDEsIDB4RjQ0MCwgMHhGNDQ0LCAweDUzMEUsIDB4RjQ0NSwgMHhGNDQ1LCAweDI2N0EsDQorICAgIDB4RjQ0NiwgMHhGNDRGLCAweDUzMTMsIDB4RjQ1MCwgMHhGNDUwLCAweDI2QTAsIDB4RjQ1MSwgMHhGNDU2LCAweDUzMUQsDQorICAgIDB4RjQ1NywgMHhGNDU3LCAweDI2NjgsIDB4RjQ1OCwgMHhGNDU4LCAweDUzMjMsIDB4RjQ1OSwgMHhGNDU5LCAweDFFRDAsDQorICAgIDB4RjQ1QSwgMHhGNDVBLCAweDUzMjQsIDB4RjQ1QiwgMHhGNDVCLCAweDIwOTYsIDB4RjQ1QywgMHhGNDVDLCAweDUzMjUsDQorICAgIDB4RjQ1RCwgMHhGNDVELCAweDIzQ0MsIDB4RjQ1RSwgMHhGNDYxLCAweDUzMjYsIDB4RjQ2MiwgMHhGNDYyLCAweDIzQzgsDQorICAgIDB4RjQ2MywgMHhGNDYzLCAweDUzMkEsIDB4RjQ2NCwgMHhGNDY0LCAweDIyM0UsIDB4RjQ2NSwgMHhGNDc0LCAweDUzMkIsDQorICAgIDB4RjQ3NSwgMHhGNDc1LCAweDI2NjUsIDB4RjQ3NiwgMHhGNDdCLCAweDUzM0IsIDB4RjQ3QywgMHhGNDdDLCAweDI2NjQsDQorICAgIDB4RjQ3RCwgMHhGNDdELCAweDUzNDEsIDB4RjQ3RSwgMHhGNDdFLCAweDIyMzksIDB4RjQ4MCwgMHhGNDkzLCAweDUzNDIsDQorICAgIDB4RjQ5NCwgMHhGNDk0LCAweDIwNEEsIDB4RjQ5NSwgMHhGNDk4LCAweDUzNTYsIDB4RjQ5OSwgMHhGNDk5LCAweDI2MUYsDQorICAgIDB4RjQ5QSwgMHhGNDlCLCAweDUzNUEsIDB4RjQ5QywgMHhGNDlDLCAweDI2MUUsIDB4RjQ5RCwgMHhGNEEwLCAweDUzNUMsDQorICAgIDB4RjRBMSwgMHhGNEZFLCAweDFDOUYsIDB4RjU0MCwgMHhGNTQ0LCAweDUzNjAsIDB4RjU0NSwgMHhGNTQ1LCAweDI2MjAsDQorICAgIDB4RjU0NiwgMHhGNTQ2LCAweDUzNjUsIDB4RjU0NywgMHhGNTQ3LCAweDI2MjEsIDB4RjU0OCwgMHhGNTUxLCAweDUzNjYsDQorICAgIDB4RjU1MiwgMHhGNTUyLCAweDI2MjIsIDB4RjU1MywgMHhGNTUzLCAweDUzNzAsIDB4RjU1NCwgMHhGNTU0LCAweDI2MjcsDQorICAgIDB4RjU1NSwgMHhGNTU1LCAweDFFMzksIDB4RjU1NiwgMHhGNTU2LCAweDI2MjUsIDB4RjU1NywgMHhGNTVELCAweDUzNzEsDQorICAgIDB4RjU1RSwgMHhGNTVFLCAweDI2MjksIDB4RjU1RiwgMHhGNTYwLCAweDUzNzgsIDB4RjU2MSwgMHhGNTYxLCAweDI2MkUsDQorICAgIDB4RjU2MiwgMHhGNTYyLCAweDI2MkIsIDB4RjU2MywgMHhGNTZELCAweDUzN0EsIDB4RjU2RSwgMHhGNTZFLCAweDI2MkEsDQorICAgIDB4RjU2RiwgMHhGNTZGLCAweDI2MkQsIDB4RjU3MCwgMHhGNTcwLCAweDUzODUsIDB4RjU3MSwgMHhGNTcxLCAweDI2MjgsDQorICAgIDB4RjU3MiwgMHhGNTcyLCAweDIxQjksIDB4RjU3MywgMHhGNTdFLCAweDUzODYsIDB4RjU4MCwgMHhGNTg0LCAweDUzOTIsDQorICAgIDB4RjU4NSwgMHhGNTg1LCAweDI2MzYsIDB4RjU4NiwgMHhGNTg2LCAweDI2MzAsIDB4RjU4NywgMHhGNThCLCAweDUzOTcsDQorICAgIDB4RjU4QywgMHhGNThDLCAweDI2MzgsIDB4RjU4RCwgMHhGNThELCAweDUzOUMsIDB4RjU4RSwgMHhGNThFLCAweDIwMEQsDQorICAgIDB4RjU4RiwgMHhGNThGLCAweDI2MzcsIDB4RjU5MCwgMHhGNTk4LCAweDUzOUQsIDB4RjU5OSwgMHhGNTk5LCAweDI2NDUsDQorICAgIDB4RjU5QSwgMHhGNTlBLCAweDUzQTYsIDB4RjU5QiwgMHhGNTlCLCAweDI2M0EsIDB4RjU5QywgMHhGNTlGLCAweDUzQTcsDQorICAgIDB4RjVBMCwgMHhGNUEwLCAweDI2NDMsIDB4RjVBMSwgMHhGNUZFLCAweDFDRkQsIDB4RjY0MCwgMHhGNjQwLCAweDUzQUIsDQorICAgIDB4RjY0MSwgMHhGNjQxLCAweDI2NDAsIDB4RjY0MiwgMHhGNjQ0LCAweDUzQUMsIDB4RjY0NSwgMHhGNjQ1LCAweDI2M0QsDQorICAgIDB4RjY0NiwgMHhGNjQ2LCAweDI2NDEsIDB4RjY0NywgMHhGNjQ3LCAweDUzQUYsIDB4RjY0OCwgMHhGNjQ4LCAweDI2M0UsDQorICAgIDB4RjY0OSwgMHhGNjRBLCAweDUzQjAsIDB4RjY0QiwgMHhGNjRCLCAweDI2M0YsIDB4RjY0QywgMHhGNjRDLCAweDFGQzAsDQorICAgIDB4RjY0RCwgMHhGNjRELCAweDUzQjIsIDB4RjY0RSwgMHhGNjRGLCAweDI2M0IsIDB4RjY1MCwgMHhGNjUzLCAweDUzQjMsDQorICAgIDB4RjY1NCwgMHhGNjU0LCAweDI2NDIsIDB4RjY1NSwgMHhGNjU3LCAweDUzQjcsIDB4RjY1OCwgMHhGNjU4LCAweDI2NDQsDQorICAgIDB4RjY1OSwgMHhGNjYwLCAweDUzQkEsIDB4RjY2MSwgMHhGNjYxLCAweDI2MzksIDB4RjY2MiwgMHhGNjYyLCAweDUzQzIsDQorICAgIDB4RjY2MywgMHhGNjYzLCAweDI2NEMsIDB4RjY2NCwgMHhGNjZCLCAweDUzQzMsIDB4RjY2QywgMHhGNjZDLCAweDI2NDcsDQorICAgIDB4RjY2RCwgMHhGNjZELCAweDI2NEIsIDB4RjY2RSwgMHhGNjcwLCAweDUzQ0IsIDB4RjY3MSwgMHhGNjcxLCAweDI2NDksDQorICAgIDB4RjY3MiwgMHhGNjczLCAweDUzQ0UsIDB4RjY3NCwgMHhGNjc0LCAweDI2NDgsIDB4RjY3NSwgMHhGNjc1LCAweDUzRDAsDQorICAgIDB4RjY3NiwgMHhGNjc2LCAweDI2NEEsIDB4RjY3NywgMHhGNjc3LCAweDIxMDgsIDB4RjY3OCwgMHhGNjdFLCAweDUzRDEsDQorICAgIDB4RjY4MCwgMHhGNjg0LCAweDUzRDgsIDB4RjY4NSwgMHhGNjg1LCAweDI2NEQsIDB4RjY4NiwgMHhGNjg3LCAweDUzREQsDQorICAgIDB4RjY4OCwgMHhGNjg4LCAweDI2MzQsIDB4RjY4OSwgMHhGNjg5LCAweDUzREYsIDB4RjY4QSwgMHhGNjhBLCAweDI2NTEsDQorICAgIDB4RjY4QiwgMHhGNjhDLCAweDUzRTAsIDB4RjY4RCwgMHhGNjhELCAweDI2NTAsIDB4RjY4RSwgMHhGNjhFLCAweDI2NTIsDQorICAgIDB4RjY4RiwgMHhGNjkxLCAweDUzRTIsIDB4RjY5MiwgMHhGNjkyLCAweDI2NEYsIDB4RjY5MywgMHhGNjk1LCAweDUzRTUsDQorICAgIDB4RjY5NiwgMHhGNjk2LCAweDI2MzIsIDB4RjY5NywgMHhGNjk3LCAweDI2NEUsIDB4RjY5OCwgMHhGNjk4LCAweDI2NTMsDQorICAgIDB4RjY5OSwgMHhGNjk5LCAweDUzRTgsIDB4RjY5QSwgMHhGNjlBLCAweDI2NTcsIDB4RjY5QiwgMHhGNjlCLCAweDUzRTksDQorICAgIDB4RjY5QywgMHhGNjlDLCAweDI2MzUsIDB4RjY5RCwgMHhGNjlELCAweDUzRUEsIDB4RjY5RSwgMHhGNjlFLCAweDI2MzMsDQorICAgIDB4RjY5RiwgMHhGNjlGLCAweDUzRUIsIDB4RjZBMCwgMHhGNkEwLCAweDI2NTYsIDB4RjZBMSwgMHhGNkZFLCAweDFENUIsDQorICAgIDB4Rjc0MCwgMHhGNzQxLCAweDUzRUMsIDB4Rjc0MiwgMHhGNzQyLCAweDI2NTQsIDB4Rjc0MywgMHhGNzQ4LCAweDUzRUUsDQorICAgIDB4Rjc0OSwgMHhGNzQ5LCAweDI2NTgsIDB4Rjc0QSwgMHhGNzRCLCAweDUzRjQsIDB4Rjc0QywgMHhGNzRDLCAweDI2NTUsDQorICAgIDB4Rjc0RCwgMHhGNzRELCAweDFFNEQsIDB4Rjc0RSwgMHhGNzU1LCAweDUzRjYsIDB4Rjc1NiwgMHhGNzU2LCAweDI2NUIsDQorICAgIDB4Rjc1NywgMHhGNzU3LCAweDUzRkUsIDB4Rjc1OCwgMHhGNzU4LCAweDI2NUEsIDB4Rjc1OSwgMHhGNzU5LCAweDUzRkYsDQorICAgIDB4Rjc1QSwgMHhGNzVBLCAweDI2NTksIDB4Rjc1QiwgMHhGNzVCLCAweDIwMkUsIDB4Rjc1QywgMHhGNzVDLCAweDI2MkYsDQorICAgIDB4Rjc1RCwgMHhGNzYwLCAweDU0MDAsIDB4Rjc2MSwgMHhGNzYxLCAweDI2NDYsIDB4Rjc2MiwgMHhGNzYyLCAweDU0MDQsDQorICAgIDB4Rjc2MywgMHhGNzYzLCAweDI2MjYsIDB4Rjc2NCwgMHhGNzZBLCAweDU0MDUsIDB4Rjc2QiwgMHhGNzZCLCAweDI2NUMsDQorICAgIDB4Rjc2QywgMHhGNzcwLCAweDU0MEMsIDB4Rjc3MSwgMHhGNzcxLCAweDI2MkMsIDB4Rjc3MiwgMHhGNzdCLCAweDU0MTEsDQorICAgIDB4Rjc3QywgMHhGNzdDLCAweDI2MjMsIDB4Rjc3RCwgMHhGNzdELCAweDU0MUIsIDB4Rjc3RSwgMHhGNzdFLCAweDI2MzEsDQorICAgIDB4Rjc4MCwgMHhGN0EwLCAweDU0MUMsIDB4RjdBMSwgMHhGN0ZFLCAweDFEQjksIDB4Rjg0MCwgMHhGODQxLCAweDU0M0QsDQorICAgIDB4Rjg0MiwgMHhGODQyLCAweDIwOUMsIDB4Rjg0MywgMHhGODQ1LCAweDU0M0YsIDB4Rjg0NiwgMHhGODQ2LCAweDI1ODAsDQorICAgIDB4Rjg0NywgMHhGODQ4LCAweDU0NDIsIDB4Rjg0OSwgMHhGODQ5LCAweDIyREMsIDB4Rjg0QSwgMHhGODRGLCAweDU0NDQsDQorICAgIDB4Rjg1MCwgMHhGODUwLCAweDFGMDUsIDB4Rjg1MSwgMHhGODUxLCAweDIwOEIsIDB4Rjg1MiwgMHhGODUyLCAweDU0NEEsDQorICAgIDB4Rjg1MywgMHhGODUzLCAweDI1ODEsIDB4Rjg1NCwgMHhGODYyLCAweDU0NEIsIDB4Rjg2MywgMHhGODYzLCAweDI1ODMsDQorICAgIDB4Rjg2NCwgMHhGODY0LCAweDI1ODIsIDB4Rjg2NSwgMHhGODY1LCAweDU0NUEsIDB4Rjg2NiwgMHhGODY2LCAweDIxRUUsDQorICAgIDB4Rjg2NywgMHhGODcxLCAweDU0NUIsIDB4Rjg3MiwgMHhGODcyLCAweDIxODIsIDB4Rjg3MywgMHhGODc3LCAweDU0NjYsDQorICAgIDB4Rjg3OCwgMHhGODc4LCAweDIyNDMsIDB4Rjg3OSwgMHhGODc5LCAweDU0NkIsIDB4Rjg3QSwgMHhGODdBLCAweDI1ODcsDQorICAgIDB4Rjg3QiwgMHhGODdCLCAweDU0NkMsIDB4Rjg3QywgMHhGODdDLCAweDI1ODgsIDB4Rjg3RCwgMHhGODdFLCAweDU0NkQsDQorICAgIDB4Rjg4MCwgMHhGODgwLCAweDU0NkYsIDB4Rjg4MSwgMHhGODgxLCAweDI1ODQsIDB4Rjg4MiwgMHhGODgzLCAweDU0NzAsDQorICAgIDB4Rjg4NCwgMHhGODg0LCAweDIxRkQsIDB4Rjg4NSwgMHhGODg1LCAweDU0NzIsIDB4Rjg4NiwgMHhGODg2LCAweDIxRUYsDQorICAgIDB4Rjg4NywgMHhGODhDLCAweDU0NzMsIDB4Rjg4RCwgMHhGODhELCAweDI1OEEsIDB4Rjg4RSwgMHhGODhFLCAweDI1OEMsDQorICAgIDB4Rjg4RiwgMHhGODk4LCAweDU0NzksIDB4Rjg5OSwgMHhGODk5LCAweDFGNDcsIDB4Rjg5QSwgMHhGODlDLCAweDU0ODMsDQorICAgIDB4Rjg5RCwgMHhGODlELCAweDFGMUQsIDB4Rjg5RSwgMHhGODlGLCAweDU0ODYsIDB4RjhBMCwgMHhGOEEwLCAweDI1OEQsDQorICAgIDB4Rjk0MCwgMHhGOTRELCAweDU0ODgsIDB4Rjk0RSwgMHhGOTRFLCAweDFGRDAsIDB4Rjk0RiwgMHhGOTRGLCAweDI1OTIsDQorICAgIDB4Rjk1MCwgMHhGOTUwLCAweDI1OEYsIDB4Rjk1MSwgMHhGOTU4LCAweDU0OTYsIDB4Rjk1OSwgMHhGOTU5LCAweDI1OTQsDQorICAgIDB4Rjk1QSwgMHhGOTVBLCAweDFFRTAsIDB4Rjk1QiwgMHhGOTVDLCAweDU0OUUsIDB4Rjk1RCwgMHhGOTVELCAweDI1OTEsDQorICAgIDB4Rjk1RSwgMHhGOTVFLCAweDI1OTUsIDB4Rjk1RiwgMHhGOTY2LCAweDU0QTAsIDB4Rjk2NywgMHhGOTY3LCAweDI1OTcsDQorICAgIDB4Rjk2OCwgMHhGOTY4LCAweDU0QTgsIDB4Rjk2OSwgMHhGOTY5LCAweDIwQjYsIDB4Rjk2QSwgMHhGOTZCLCAweDU0QTksDQorICAgIDB4Rjk2QywgMHhGOTZDLCAweDI1OTgsIDB4Rjk2RCwgMHhGOTZFLCAweDU0QUIsIDB4Rjk2RiwgMHhGOTZGLCAweDIwRjYsDQorICAgIDB4Rjk3MCwgMHhGOTdFLCAweDU0QUQsIDB4Rjk4MCwgMHhGOTg0LCAweDU0QkMsIDB4Rjk4NSwgMHhGOTg1LCAweDI1ODUsDQorICAgIDB4Rjk4NiwgMHhGOTg2LCAweDU0QzEsIDB4Rjk4NywgMHhGOTg3LCAweDI1OTksIDB4Rjk4OCwgMHhGOTkwLCAweDU0QzIsDQorICAgIDB4Rjk5MSwgMHhGOTkxLCAweDI1OTYsIDB4Rjk5MiwgMHhGOTk1LCAweDU0Q0IsIDB4Rjk5NiwgMHhGOTk2LCAweDI1OUEsDQorICAgIDB4Rjk5NywgMHhGOTk3LCAweDU0Q0YsIDB4Rjk5OCwgMHhGOTk4LCAweDI1OUIsIDB4Rjk5OSwgMHhGOUEwLCAweDU0RDAsDQorICAgIDB4RkE0MCwgMHhGQTQxLCAweDU0RDgsIDB4RkE0MiwgMHhGQTQyLCAweDI1OUQsIDB4RkE0MywgMHhGQTQ1LCAweDU0REEsDQorICAgIDB4RkE0NiwgMHhGQTQ2LCAweDI1OUUsIDB4RkE0NywgMHhGQTRCLCAweDU0REQsIDB4RkE0QywgMHhGQTRDLCAweDIzNEMsDQorICAgIDB4RkE0RCwgMHhGQTUwLCAweDU0RTIsIDB4RkE1MSwgMHhGQTUxLCAweDFGNDQsIDB4RkE1MiwgMHhGQTU3LCAweDU0RTYsDQorICAgIDB4RkE1OCwgMHhGQTU4LCAweDI2NjAsIDB4RkE1OSwgMHhGQTU5LCAweDI1QTAsIDB4RkE1QSwgMHhGQTVDLCAweDU0RUMsDQorICAgIDB4RkE1RCwgMHhGQTVELCAweDI1OUMsIDB4RkE1RSwgMHhGQTVFLCAweDU0RUYsIDB4RkE1RiwgMHhGQTVGLCAweDI1OUYsDQorICAgIDB4RkE2MCwgMHhGQTYwLCAweDU0RjAsIDB4RkE2MSwgMHhGQTYxLCAweDFGNkMsIDB4RkE2MiwgMHhGQTZGLCAweDU0RjEsDQorICAgIDB4RkE3MCwgMHhGQTcwLCAweDI1QTIsIDB4RkE3MSwgMHhGQTczLCAweDU0RkYsIDB4RkE3NCwgMHhGQTc0LCAweDIwQUUsDQorICAgIDB4RkE3NSwgMHhGQTc1LCAweDU1MDIsIDB4RkE3NiwgMHhGQTc2LCAweDI1OEIsIDB4RkE3NywgMHhGQTc3LCAweDI1QTMsDQorICAgIDB4RkE3OCwgMHhGQTdFLCAweDU1MDMsIDB4RkE4MCwgMHhGQTgyLCAweDU1MEEsIDB4RkE4MywgMHhGQTgzLCAweDI1ODksDQorICAgIDB4RkE4NCwgMHhGQTg0LCAweDI1QTUsIDB4RkE4NSwgMHhGQThDLCAweDU1MEQsIDB4RkE4RCwgMHhGQThELCAweDI1QTQsDQorICAgIDB4RkE4RSwgMHhGQThGLCAweDU1MTUsIDB4RkE5MCwgMHhGQTkwLCAweDI1QTYsIDB4RkE5MSwgMHhGQTkxLCAweDI1OTMsDQorICAgIDB4RkE5MiwgMHhGQTk1LCAweDU1MTcsIDB4RkE5NiwgMHhGQTk2LCAweDI1QTcsIDB4RkE5NywgMHhGQTk3LCAweDIyMjIsDQorICAgIDB4RkE5OCwgMHhGQTk4LCAweDI1QTksIDB4RkE5OSwgMHhGQUEwLCAweDU1MUIsIDB4RkI0MCwgMHhGQjQ4LCAweDU1MjMsDQorICAgIDB4RkI0OSwgMHhGQjQ5LCAweDI1QTgsIDB4RkI0QSwgMHhGQjUxLCAweDU1MkMsIDB4RkI1MiwgMHhGQjUyLCAweDI1ODYsDQorICAgIDB4RkI1MywgMHhGQjU2LCAweDU1MzQsIDB4RkI1NywgMHhGQjU3LCAweDI1QTEsIDB4RkI1OCwgMHhGQjU4LCAweDI1QUEsDQorICAgIDB4RkI1OSwgMHhGQjU5LCAweDU1MzgsIDB4RkI1QSwgMHhGQjVBLCAweDI1OTAsIDB4RkI1QiwgMHhGQjVCLCAweDI1OEUsDQorICAgIDB4RkI1QywgMHhGQjc0LCAweDU1MzksIDB4RkI3NSwgMHhGQjc1LCAweDI2ODgsIDB4RkI3NiwgMHhGQjc4LCAweDU1NTIsDQorICAgIDB4RkI3OSwgMHhGQjc5LCAweDI2OUUsIDB4RkI3QSwgMHhGQjdBLCAweDI1RkIsIDB4RkI3QiwgMHhGQjdCLCAweDU1NTUsDQorICAgIDB4RkI3QywgMHhGQjdDLCAweDFGOEMsIDB4RkI3RCwgMHhGQjdELCAweDIxRjQsIDB4RkI3RSwgMHhGQjdFLCAweDU1NTYsDQorICAgIDB4RkI4MCwgMHhGQjhGLCAweDU1NTcsIDB4RkI5MCwgMHhGQjkwLCAweDIwMEYsIDB4RkI5MSwgMHhGQjlCLCAweDU1NjcsDQorICAgIDB4RkI5QywgMHhGQjlDLCAweDIwNzEsIDB4RkI5RCwgMHhGQjlFLCAweDU1NzIsIDB4RkI5RiwgMHhGQjlGLCAweDI1RjcsDQorICAgIDB4RkJBMCwgMHhGQkEwLCAweDU1NzQsIDB4RkM0MCwgMHhGQzQzLCAweDU1NzUsIDB4RkM0NCwgMHhGQzQ0LCAweDI2OTYsDQorICAgIDB4RkM0NSwgMHhGQzQ4LCAweDU1NzksIDB4RkM0OSwgMHhGQzQ5LCAweDI2OEYsIDB4RkM0QSwgMHhGQzU5LCAweDU1N0QsDQorICAgIDB4RkM1QSwgMHhGQzVBLCAweDIyREEsIDB4RkM1QiwgMHhGQzYyLCAweDU1OEQsIDB4RkM2MywgMHhGQzYzLCAweDFFQzEsDQorICAgIDB4RkM2NCwgMHhGQzY3LCAweDU1OTUsIDB4RkM2OCwgMHhGQzY4LCAweDFFQjMsIDB4RkM2OSwgMHhGQzZFLCAweDU1OTksDQorICAgIDB4RkM2RiwgMHhGQzZGLCAweDI2NkEsIDB4RkM3MCwgMHhGQzcwLCAweDU1OUYsIDB4RkM3MSwgMHhGQzcxLCAweDI2OEEsDQorICAgIDB4RkM3MiwgMHhGQzczLCAweDU1QTAsIDB4RkM3NCwgMHhGQzc0LCAweDI2NjksIDB4RkM3NSwgMHhGQzc2LCAweDU1QTIsDQorICAgIDB4RkM3NywgMHhGQzc4LCAweDI2MTgsIDB4RkM3OSwgMHhGQzdFLCAweDU1QTQsIDB4RkM4MCwgMHhGQzgyLCAweDU1QUEsDQorICAgIDB4RkM4MywgMHhGQzgzLCAweDI2MUEsIDB4RkM4NCwgMHhGQzg5LCAweDU1QUQsIDB4RkM4QSwgMHhGQzhBLCAweDI2NzMsDQorICAgIDB4RkM4QiwgMHhGQ0EwLCAweDU1QjMsIDB4RkQ0MCwgMHhGRDUxLCAweDU1QzksIDB4RkQ1MiwgMHhGRDUyLCAweDIwQzYsDQorICAgIDB4RkQ1MywgMHhGRDUzLCAweDIyNkIsIDB4RkQ1NCwgMHhGRDU2LCAweDU1REIsIDB4RkQ1NywgMHhGRDU3LCAweDI0RDMsDQorICAgIDB4RkQ1OCwgMHhGRDU4LCAweDFFODYsIDB4RkQ1OSwgMHhGRDU5LCAweDU1REUsIDB4RkQ1QSwgMHhGRDVBLCAweDI2MEYsDQorICAgIDB4RkQ1QiwgMHhGRDVFLCAweDU1REYsIDB4RkQ1RiwgMHhGRDVGLCAweDI2MTEsIDB4RkQ2MCwgMHhGRDYxLCAweDU1RTMsDQorICAgIDB4RkQ2MiwgMHhGRDYyLCAweDI2MTMsIDB4RkQ2MywgMHhGRDY0LCAweDU1RTUsIDB4RkQ2NSwgMHhGRDY1LCAweDI2MTAsDQorICAgIDB4RkQ2NiwgMHhGRDY2LCAweDI2MTIsIDB4RkQ2NywgMHhGRDY3LCAweDIwMzAsIDB4RkQ2OCwgMHhGRDY4LCAweDU1RTcsDQorICAgIDB4RkQ2OSwgMHhGRDY5LCAweDI2NzEsIDB4RkQ2QSwgMHhGRDZCLCAweDU1RTgsIDB4RkQ2QywgMHhGRDZDLCAweDI2MTQsDQorICAgIDB4RkQ2RCwgMHhGRDZGLCAweDU1RUEsIDB4RkQ3MCwgMHhGRDcwLCAweDI2MTYsIDB4RkQ3MSwgMHhGRDcxLCAweDU1RUQsDQorICAgIDB4RkQ3MiwgMHhGRDcyLCAweDI2MTUsIDB4RkQ3MywgMHhGRDc3LCAweDU1RUUsIDB4RkQ3OCwgMHhGRDc4LCAweDIwRjIsDQorICAgIDB4RkQ3OSwgMHhGRDdDLCAweDU1RjMsIDB4RkQ3RCwgMHhGRDdELCAweDI2MTcsIDB4RkQ3RSwgMHhGRDdFLCAweDU1RjcsDQorICAgIDB4RkQ4MCwgMHhGRDg3LCAweDU1RjgsIDB4RkQ4OCwgMHhGRDg4LCAweDIwMzcsIDB4RkQ4OSwgMHhGRDhBLCAweDU2MDAsDQorICAgIDB4RkQ4QiwgMHhGRDhCLCAweDIwQjMsIDB4RkQ4QywgMHhGRDhFLCAweDU2MDIsIDB4RkQ4RiwgMHhGRDhGLCAweDFGMjIsDQorICAgIDB4RkQ5MCwgMHhGRDkwLCAweDI0RUQsIDB4RkQ5MSwgMHhGRDkzLCAweDU2MDUsIDB4RkQ5NCwgMHhGRDk0LCAweDFGMzQsDQorICAgIDB4RkQ5NSwgMHhGRDlDLCAweDU2MDgsIDB4RkQ5RCwgMHhGRDlELCAweDBBMDIsIDB4RkQ5RSwgMHhGRDlFLCAweDQwRDMsDQorICAgIDB4RkQ5RiwgMHhGRDlGLCAweDIwMEMsIDB4RkRBMCwgMHhGREEwLCAweDUwODMsIDB4RkU0MCwgMHhGRTQwLCAweDEyNTksDQorICAgIDB4RkU0MSwgMHhGRTdFLCAweDU2MTAsIDB4RkU4MCwgMHhGRUEwLCAweDU2NEUsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCS3AtRVVDLVZfMi5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCS3AtRVVDLVZfMi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdkOTc5OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JLcC1FVUMtVl8yLmNwcApAQCAtMCwwICsxLDE1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfR0JLcF9FVUNfVl8yWzIwICogM10gPSB7CisgICAgMHhBMUEyLCAweEExQTIsIDB4MDIzRiwgMHhBMUEzLCAweEExQTMsIDB4MDIzRSwgMHhBMUFBLCAweEExQUEsIDB4MDI1NiwKKyAgICAweEExQUIsIDB4QTFBQywgMHgxRTE4LCAweEExQUQsIDB4QTFBRCwgMHgwMjU3LCAweEExQjIsIDB4QTFCRiwgMHgwMjQ2LAorICAgIDB4QTFGRSwgMHhBMUZFLCAweDFFMUEsIDB4QTNBMSwgMHhBM0ExLCAweDAyNDIsIDB4QTNBOCwgMHhBM0E5LCAweDAyNDQsCisgICAgMHhBM0FDLCAweEEzQUMsIDB4MDIzRCwgMHhBM0FFLCAweEEzQUUsIDB4MUUxQiwgMHhBM0JBLCAweEEzQkIsIDB4MDI0MCwKKyAgICAweEEzQkQsIDB4QTNCRCwgMHgxRTFDLCAweEEzQkYsIDB4QTNCRiwgMHgwMjQzLCAweEEzREIsIDB4QTNEQiwgMHgxRTFELAorICAgIDB4QTNERCwgMHhBM0RELCAweDFFMUUsIDB4QTNERiwgMHhBM0RGLCAweDAyNTgsIDB4QTNGQiwgMHhBM0ZCLCAweDAyNTQsCisgICAgMHhBM0ZELCAweEEzRkQsIDB4MDI1NSwgMHhBM0ZFLCAweEEzRkUsIDB4MUUxRiwKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCcGMtRVVDLUhfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCcGMtRVVDLUhfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIzZTA3MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JwYy1FVUMtSF8wLmNwcApAQCAtMCwwICsxLDM5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfR0JwY19FVUNfSF8wWzkxICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDAwMDEsIDB4MDA4MCwgMHgwMDgwLCAweDFFMjAsIDB4MDBGRCwgMHgwMEZGLCAweDFFMjEsDQorICAgIDB4QTFBMSwgMHhBMUZFLCAweDAwNjAsIDB4QTJCMSwgMHhBMkUyLCAweDAwQkUsIDB4QTJFNSwgMHhBMkVFLCAweDAwRjAsDQorICAgIDB4QTJGMSwgMHhBMkZDLCAweDAwRkEsIDB4QTNBMSwgMHhBM0ZFLCAweDAxMDYsIDB4QTRBMSwgMHhBNEYzLCAweDAxNjQsDQorICAgIDB4QTVBMSwgMHhBNUY2LCAweDAxQjcsIDB4QTZBMSwgMHhBNkI4LCAweDAyMEQsIDB4QTZDMSwgMHhBNkY1LCAweDAyMjUsDQorICAgIDB4QTdBMSwgMHhBN0MxLCAweDAyNUEsIDB4QTdEMSwgMHhBN0YxLCAweDAyN0IsIDB4QThBMSwgMHhBOEMwLCAweDAyOUMsDQorICAgIDB4QThDNSwgMHhBOEVBLCAweDAyQkMsIDB4QTlBNCwgMHhBOUVGLCAweDAyRTIsIDB4QUFBMSwgMHhBQUZFLCAweDAzMkUsDQorICAgIDB4QUJBMSwgMHhBQkMwLCAweDAzOEMsIDB4QjBBMSwgMHhCMEZFLCAweDAzQUMsIDB4QjFBMSwgMHhCMUZFLCAweDA0MEEsDQorICAgIDB4QjJBMSwgMHhCMkZFLCAweDA0NjgsIDB4QjNBMSwgMHhCM0ZFLCAweDA0QzYsIDB4QjRBMSwgMHhCNEZFLCAweDA1MjQsDQorICAgIDB4QjVBMSwgMHhCNUZFLCAweDA1ODIsIDB4QjZBMSwgMHhCNkZFLCAweDA1RTAsIDB4QjdBMSwgMHhCN0ZFLCAweDA2M0UsDQorICAgIDB4QjhBMSwgMHhCOEZFLCAweDA2OUMsIDB4QjlBMSwgMHhCOUZFLCAweDA2RkEsIDB4QkFBMSwgMHhCQUZFLCAweDA3NTgsDQorICAgIDB4QkJBMSwgMHhCQkZFLCAweDA3QjYsIDB4QkNBMSwgMHhCQ0ZFLCAweDA4MTQsIDB4QkRBMSwgMHhCREZFLCAweDA4NzIsDQorICAgIDB4QkVBMSwgMHhCRUZFLCAweDA4RDAsIDB4QkZBMSwgMHhCRkZFLCAweDA5MkUsIDB4QzBBMSwgMHhDMEZFLCAweDA5OEMsDQorICAgIDB4QzFBMSwgMHhDMUZFLCAweDA5RUEsIDB4QzJBMSwgMHhDMkZFLCAweDBBNDgsIDB4QzNBMSwgMHhDM0ZFLCAweDBBQTYsDQorICAgIDB4QzRBMSwgMHhDNEZFLCAweDBCMDQsIDB4QzVBMSwgMHhDNUZFLCAweDBCNjIsIDB4QzZBMSwgMHhDNkZFLCAweDBCQzAsDQorICAgIDB4QzdBMSwgMHhDN0ZFLCAweDBDMUUsIDB4QzhBMSwgMHhDOEZFLCAweDBDN0MsIDB4QzlBMSwgMHhDOUZFLCAweDBDREEsDQorICAgIDB4Q0FBMSwgMHhDQUZFLCAweDBEMzgsIDB4Q0JBMSwgMHhDQkZFLCAweDBEOTYsIDB4Q0NBMSwgMHhDQ0ZFLCAweDBERjQsDQorICAgIDB4Q0RBMSwgMHhDREZFLCAweDBFNTIsIDB4Q0VBMSwgMHhDRUZFLCAweDBFQjAsIDB4Q0ZBMSwgMHhDRkZFLCAweDBGMEUsDQorICAgIDB4RDBBMSwgMHhEMEZFLCAweDBGNkMsIDB4RDFBMSwgMHhEMUZFLCAweDBGQ0EsIDB4RDJBMSwgMHhEMkZFLCAweDEwMjgsDQorICAgIDB4RDNBMSwgMHhEM0ZFLCAweDEwODYsIDB4RDRBMSwgMHhENEZFLCAweDEwRTQsIDB4RDVBMSwgMHhENUZFLCAweDExNDIsDQorICAgIDB4RDZBMSwgMHhENkZFLCAweDExQTAsIDB4RDdBMSwgMHhEN0Y5LCAweDExRkUsIDB4RDhBMSwgMHhEOEZFLCAweDEyNTcsDQorICAgIDB4RDlBMSwgMHhEOUZFLCAweDEyQjUsIDB4REFBMSwgMHhEQUZFLCAweDEzMTMsIDB4REJBMSwgMHhEQkZFLCAweDEzNzEsDQorICAgIDB4RENBMSwgMHhEQ0ZFLCAweDEzQ0YsIDB4RERBMSwgMHhEREZFLCAweDE0MkQsIDB4REVBMSwgMHhERUZFLCAweDE0OEIsDQorICAgIDB4REZBMSwgMHhERkZFLCAweDE0RTksIDB4RTBBMSwgMHhFMEZFLCAweDE1NDcsIDB4RTFBMSwgMHhFMUZFLCAweDE1QTUsDQorICAgIDB4RTJBMSwgMHhFMkZFLCAweDE2MDMsIDB4RTNBMSwgMHhFM0ZFLCAweDE2NjEsIDB4RTRBMSwgMHhFNEZFLCAweDE2QkYsDQorICAgIDB4RTVBMSwgMHhFNUZFLCAweDE3MUQsIDB4RTZBMSwgMHhFNkZFLCAweDE3N0IsIDB4RTdBMSwgMHhFN0ZFLCAweDE3RDksDQorICAgIDB4RThBMSwgMHhFOEZFLCAweDE4MzcsIDB4RTlBMSwgMHhFOUZFLCAweDE4OTUsIDB4RUFBMSwgMHhFQUZFLCAweDE4RjMsDQorICAgIDB4RUJBMSwgMHhFQkZFLCAweDE5NTEsIDB4RUNBMSwgMHhFQ0ZFLCAweDE5QUYsIDB4RURBMSwgMHhFREZFLCAweDFBMEQsDQorICAgIDB4RUVBMSwgMHhFRUZFLCAweDFBNkIsIDB4RUZBMSwgMHhFRkZFLCAweDFBQzksIDB4RjBBMSwgMHhGMEZFLCAweDFCMjcsDQorICAgIDB4RjFBMSwgMHhGMUZFLCAweDFCODUsIDB4RjJBMSwgMHhGMkZFLCAweDFCRTMsIDB4RjNBMSwgMHhGM0ZFLCAweDFDNDEsDQorICAgIDB4RjRBMSwgMHhGNEZFLCAweDFDOUYsIDB4RjVBMSwgMHhGNUZFLCAweDFDRkQsIDB4RjZBMSwgMHhGNkZFLCAweDFENUIsDQorICAgIDB4RjdBMSwgMHhGN0ZFLCAweDFEQjksDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCcGMtRVVDLVZfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL0dCcGMtRVVDLVZfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU0NjlmMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvR0JwYy1FVUMtVl8wLmNwcApAQCAtMCwwICsxLDE1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfR0JwY19FVUNfVl8wWzIwICogM10gPSB7DQorICAgIDB4QTFBMiwgMHhBMUEyLCAweDAyM0YsIDB4QTFBMywgMHhBMUEzLCAweDAyM0UsIDB4QTFBQSwgMHhBMUFBLCAweDAyNTYsDQorICAgIDB4QTFBQiwgMHhBMUFDLCAweDFFMTgsIDB4QTFBRCwgMHhBMUFELCAweDAyNTcsIDB4QTFCMiwgMHhBMUJGLCAweDAyNDYsDQorICAgIDB4QTFGRSwgMHhBMUZFLCAweDFFMUEsIDB4QTNBMSwgMHhBM0ExLCAweDAyNDIsIDB4QTNBOCwgMHhBM0E5LCAweDAyNDQsDQorICAgIDB4QTNBQywgMHhBM0FDLCAweDAyM0QsIDB4QTNBRSwgMHhBM0FFLCAweDFFMUIsIDB4QTNCQSwgMHhBM0JCLCAweDAyNDAsDQorICAgIDB4QTNCRCwgMHhBM0JELCAweDFFMUMsIDB4QTNCRiwgMHhBM0JGLCAweDAyNDMsIDB4QTNEQiwgMHhBM0RCLCAweDFFMUQsDQorICAgIDB4QTNERCwgMHhBM0RELCAweDFFMUUsIDB4QTNERiwgMHhBM0RGLCAweDAyNTgsIDB4QTNGQiwgMHhBM0ZCLCAweDAyNTQsDQorICAgIDB4QTNGRCwgMHhBM0ZELCAweDAyNTUsIDB4QTNGRSwgMHhBM0ZFLCAweDFFMUYsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL1VuaUdCLVVDUzItSF80LmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvVW5pR0ItVUNTMi1IXzQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMDAzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL1VuaUdCLVVDUzItSF80LmNwcApAQCAtMCwwICsxLDQ2MTcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9VbmlHQl9VQ1MyX0hfNFsxMzgyNSAqIDNdID0gew0KKyAgICAweDAwMjAsIDB4MDA3RSwgMHgwMDAxLCAweDAwQTQsIDB4MDBBNCwgMHgwMEE3LCAweDAwQTUsIDB4MDBBNSwgMHg1NzUyLA0KKyAgICAweDAwQTcsIDB4MDBBNywgMHgwMEFCLCAweDAwQTgsIDB4MDBBOCwgMHgwMDY2LCAweDAwQjAsIDB4MDBCMCwgMHgwMEEyLA0KKyAgICAweDAwQjEsIDB4MDBCMSwgMHgwMDdGLCAweDAwRDcsIDB4MDBENywgMHgwMDgwLCAweDAwRTAsIDB4MDBFMCwgMHgwMjlGLA0KKyAgICAweDAwRTEsIDB4MDBFMSwgMHgwMjlELCAweDAwRTgsIDB4MDBFOCwgMHgwMkEzLCAweDAwRTksIDB4MDBFOSwgMHgwMkExLA0KKyAgICAweDAwRUEsIDB4MDBFQSwgMHgwMkI1LCAweDAwRUMsIDB4MDBFQywgMHgwMkE3LCAweDAwRUQsIDB4MDBFRCwgMHgwMkE1LA0KKyAgICAweDAwRjIsIDB4MDBGMiwgMHgwMkFCLCAweDAwRjMsIDB4MDBGMywgMHgwMkE5LCAweDAwRjcsIDB4MDBGNywgMHgwMDgxLA0KKyAgICAweDAwRjksIDB4MDBGOSwgMHgwMkFGLCAweDAwRkEsIDB4MDBGQSwgMHgwMkFELCAweDAwRkMsIDB4MDBGQywgMHgwMkI0LA0KKyAgICAweDAxMDEsIDB4MDEwMSwgMHgwMjlDLCAweDAxMTMsIDB4MDExMywgMHgwMkEwLCAweDAxMUIsIDB4MDExQiwgMHgwMkEyLA0KKyAgICAweDAxMkIsIDB4MDEyQiwgMHgwMkE0LCAweDAxNEQsIDB4MDE0RCwgMHgwMkE4LCAweDAxNkIsIDB4MDE2QiwgMHgwMkFDLA0KKyAgICAweDAxQ0UsIDB4MDFDRSwgMHgwMjlFLCAweDAxRDAsIDB4MDFEMCwgMHgwMkE2LCAweDAxRDIsIDB4MDFEMiwgMHgwMkFBLA0KKyAgICAweDAxRDQsIDB4MDFENCwgMHgwMkFFLCAweDAxRDYsIDB4MDFENiwgMHgwMkIwLCAweDAxRDgsIDB4MDFEOCwgMHgwMkIxLA0KKyAgICAweDAxREEsIDB4MDFEQSwgMHgwMkIyLCAweDAxREMsIDB4MDFEQywgMHgwMkIzLCAweDAxRjksIDB4MDFGOSwgMHgwMkJBLA0KKyAgICAweDAyQzcsIDB4MDJDNywgMHgwMDY1LCAweDAyQzksIDB4MDJDOSwgMHgwMDY0LCAweDAyQ0EsIDB4MDJDQiwgMHgyNkIzLA0KKyAgICAweDAyRDksIDB4MDJEOSwgMHgyNkI1LCAweDAzOTEsIDB4MDNBMSwgMHgwMjBELCAweDAzQTMsIDB4MDNBOSwgMHgwMjFFLA0KKyAgICAweDAzQjEsIDB4MDNDMSwgMHgwMjI1LCAweDAzQzMsIDB4MDNDOSwgMHgwMjM2LCAweDA0MDEsIDB4MDQwMSwgMHgwMjYwLA0KKyAgICAweDA0MTAsIDB4MDQxNSwgMHgwMjVBLCAweDA0MTYsIDB4MDQzNSwgMHgwMjYxLCAweDA0MzYsIDB4MDQ0RiwgMHgwMjgyLA0KKyAgICAweDA0NTEsIDB4MDQ1MSwgMHgwMjgxLCAweDFFM0YsIDB4MUUzRiwgMHgwMkI3LCAweDIwMTAsIDB4MjAxMCwgMHgyNzIyLA0KKyAgICAweDIwMTMsIDB4MjAxMywgMHgyNkI2LCAweDIwMTQsIDB4MjAxNCwgMHgwMDY5LCAweDIwMTUsIDB4MjAxNSwgMHgyNkI3LA0KKyAgICAweDIwMTYsIDB4MjAxNiwgMHgwMDZCLCAweDIwMTgsIDB4MjAxOSwgMHgwMDZELCAweDIwMUMsIDB4MjAxRCwgMHgwMDZGLA0KKyAgICAweDIwMjUsIDB4MjAyNSwgMHgyNkI4LCAweDIwMjYsIDB4MjAyNiwgMHgwMDZDLCAweDIwMzAsIDB4MjAzMCwgMHgwMEFBLA0KKyAgICAweDIwMzIsIDB4MjAzMywgMHgwMEEzLCAweDIwMzUsIDB4MjAzNSwgMHgyNkI5LCAweDIwM0IsIDB4MjAzQiwgMHgwMEI4LA0KKyAgICAweDIwQUMsIDB4MjBBQywgMHg1NzUxLCAweDIxMDMsIDB4MjEwMywgMHgwMEE1LCAweDIxMDUsIDB4MjEwNSwgMHgyNkJBLA0KKyAgICAweDIxMDksIDB4MjEwOSwgMHgyNkJCLCAweDIxMTYsIDB4MjExNiwgMHgwMEFDLCAweDIxMjEsIDB4MjEyMSwgMHgyNzIwLA0KKyAgICAweDIxNjAsIDB4MjE2QiwgMHgwMEZBLCAweDIxNzAsIDB4MjE3OSwgMHgyNkE5LCAweDIxOTAsIDB4MjE5MSwgMHgwMEJBLA0KKyAgICAweDIxOTIsIDB4MjE5MiwgMHgwMEI5LCAweDIxOTMsIDB4MjE5MywgMHgwMEJDLCAweDIxOTYsIDB4MjE5OSwgMHgyNkJDLA0KKyAgICAweDIyMDgsIDB4MjIwOCwgMHgwMDg5LCAweDIyMEYsIDB4MjIwRiwgMHgwMDg2LCAweDIyMTEsIDB4MjIxMSwgMHgwMDg1LA0KKyAgICAweDIyMTUsIDB4MjIxNSwgMHgyNkMwLCAweDIyMUEsIDB4MjIxQSwgMHgwMDhCLCAweDIyMUQsIDB4MjIxRCwgMHgwMDk3LA0KKyAgICAweDIyMUUsIDB4MjIxRSwgMHgwMDlELCAweDIyMUYsIDB4MjIxRiwgMHgyNkMxLCAweDIyMjAsIDB4MjIyMCwgMHgwMDhFLA0KKyAgICAweDIyMjMsIDB4MjIyMywgMHgyNkMyLCAweDIyMjUsIDB4MjIyNSwgMHgwMDhELCAweDIyMjcsIDB4MjIyOCwgMHgwMDgzLA0KKyAgICAweDIyMjksIDB4MjIyOSwgMHgwMDg4LCAweDIyMkEsIDB4MjIyQSwgMHgwMDg3LCAweDIyMkIsIDB4MjIyQiwgMHgwMDkxLA0KKyAgICAweDIyMkUsIDB4MjIyRSwgMHgwMDkyLCAweDIyMzQsIDB4MjIzNCwgMHgwMDlGLCAweDIyMzUsIDB4MjIzNSwgMHgwMDlFLA0KKyAgICAweDIyMzYsIDB4MjIzNiwgMHgwMDgyLCAweDIyMzcsIDB4MjIzNywgMHgwMDhBLCAweDIyM0QsIDB4MjIzRCwgMHgwMDk2LA0KKyAgICAweDIyNDgsIDB4MjI0OCwgMHgwMDk1LCAweDIyNEMsIDB4MjI0QywgMHgwMDk0LCAweDIyNTIsIDB4MjI1MiwgMHgyNkMzLA0KKyAgICAweDIyNjAsIDB4MjI2MCwgMHgwMDk4LCAweDIyNjEsIDB4MjI2MSwgMHgwMDkzLCAweDIyNjQsIDB4MjI2NSwgMHgwMDlCLA0KKyAgICAweDIyNjYsIDB4MjI2NywgMHgyNkM0LCAweDIyNkUsIDB4MjI2RiwgMHgwMDk5LCAweDIyOTUsIDB4MjI5NSwgMHgyNzA0LA0KKyAgICAweDIyOTksIDB4MjI5OSwgMHgwMDkwLCAweDIyQTUsIDB4MjJBNSwgMHgwMDhDLCAweDIyQkYsIDB4MjJCRiwgMHgyNkM2LA0KKyAgICAweDIyRUYsIDB4MjJFRiwgMHgwMDZDLCAweDIzMTIsIDB4MjMxMiwgMHgwMDhGLCAweDI0NjAsIDB4MjQ2OSwgMHgwMEU2LA0KKyAgICAweDI0NzQsIDB4MjQ4NywgMHgwMEQyLCAweDI0ODgsIDB4MjQ5QiwgMHgwMEJFLCAweDI1MDAsIDB4MjU0QiwgMHgwMkUyLA0KKyAgICAweDI1NTAsIDB4MjU3MywgMHgyNkM3LCAweDI1ODEsIDB4MjU4RiwgMHgyNkVCLCAweDI1OTMsIDB4MjU5NSwgMHgyNkZBLA0KKyAgICAweDI1QTAsIDB4MjVBMCwgMHgwMEI1LCAweDI1QTEsIDB4MjVBMSwgMHgwMEI0LCAweDI1QjIsIDB4MjVCMiwgMHgwMEI3LA0KKyAgICAweDI1QjMsIDB4MjVCMywgMHgwMEI2LCAweDI1QkMsIDB4MjVCRCwgMHgyNkZELCAweDI1QzYsIDB4MjVDNiwgMHgwMEIzLA0KKyAgICAweDI1QzcsIDB4MjVDNywgMHgwMEIyLCAweDI1Q0IsIDB4MjVDQiwgMHgwMEFGLCAweDI1Q0UsIDB4MjVDRSwgMHgwMEIxLA0KKyAgICAweDI1Q0YsIDB4MjVDRiwgMHgwMEIwLCAweDI1RTIsIDB4MjVFNSwgMHgyNkZGLCAweDI2MDUsIDB4MjYwNSwgMHgwMEFFLA0KKyAgICAweDI2MDYsIDB4MjYwNiwgMHgwMEFELCAweDI2MDksIDB4MjYwOSwgMHgyNzAzLCAweDI2NDAsIDB4MjY0MCwgMHgwMEExLA0KKyAgICAweDI2NDIsIDB4MjY0MiwgMHgwMEEwLCAweDJFODAsIDB4MkU4MCwgMHg1NzlDLCAweDJFODEsIDB4MkU4MSwgMHg1NjFGLA0KKyAgICAweDJFODIsIDB4MkU4MywgMHg1NzlELCAweDJFODQsIDB4MkU4NCwgMHg1NjIzLCAweDJFODUsIDB4MkU4NywgMHg1NzlGLA0KKyAgICAweDJFODgsIDB4MkU4OCwgMHg1NjI2LCAweDJFODksIDB4MkU4QSwgMHg1N0EyLCAweDJFOEIsIDB4MkU4QiwgMHg1NjI3LA0KKyAgICAweDJFOEMsIDB4MkU4QywgMHg1NjJDLCAweDJFOEQsIDB4MkU5NiwgMHg1N0E0LCAweDJFOTcsIDB4MkU5NywgMHg1NjJELA0KKyAgICAweDJFOTgsIDB4MkU5OSwgMHg1N0FFLCAweDJFOUIsIDB4MkVBNiwgMHg1N0IwLCAweDJFQTcsIDB4MkVBNywgMHg1NjNBLA0KKyAgICAweDJFQTgsIDB4MkVBOSwgMHg1N0JDLCAweDJFQUEsIDB4MkVBQSwgMHg1NjNELCAweDJFQUIsIDB4MkVBRCwgMHg1N0JFLA0KKyAgICAweDJFQUUsIDB4MkVBRSwgMHg1NjQwLCAweDJFQUYsIDB4MkVCMiwgMHg1N0MxLCAweDJFQjMsIDB4MkVCMywgMHg1NjQyLA0KKyAgICAweDJFQjQsIDB4MkVCNSwgMHg1N0M1LCAweDJFQjYsIDB4MkVCNywgMHg1NjQzLCAweDJFQjgsIDB4MkVCQSwgMHg1N0M3LA0KKyAgICAweDJFQkIsIDB4MkVCQiwgMHg1NjQ4LCAweDJFQkMsIDB4MkVDOSwgMHg1N0NBLCAweDJFQ0EsIDB4MkVDQSwgMHg1NjUyLA0KKyAgICAweDJFQ0IsIDB4MkVGMywgMHg1N0Q4LCAweDJGMDAsIDB4MkYwMCwgMHgxMDQyLCAweDJGMDEsIDB4MkYwMSwgMHgxMjYzLA0KKyAgICAweDJGMDIsIDB4MkYwMiwgMHgxMjcyLCAweDJGMDMsIDB4MkYwMywgMHgxMjY1LCAweDJGMDQsIDB4MkYwNCwgMHgxMDU5LA0KKyAgICAweDJGMDUsIDB4MkYwNSwgMHgyNzkzLCAweDJGMDYsIDB4MkYwNiwgMHgwNjNELCAweDJGMDcsIDB4MkYwNywgMHgxMzAzLA0KKyAgICAweDJGMDgsIDB4MkYwOCwgMHgwQ0E2LCAweDJGMDksIDB4MkYwOSwgMHgwNjM4LCAweDJGMEEsIDB4MkYwQSwgMHgwQ0M2LA0KKyAgICAweDJGMEIsIDB4MkYwQiwgMHgwM0Q2LCAweDJGMEMsIDB4MkYwQywgMHgxMjlELCAweDJGMEQsIDB4MkYwRCwgMHgxMzE0LA0KKyAgICAweDJGMEUsIDB4MkYwRSwgMHgxMzBGLCAweDJGMEYsIDB4MkYwRiwgMHgwODJCLCAweDJGMTAsIDB4MkYxMCwgMHgxMzk5LA0KKyAgICAweDJGMTEsIDB4MkYxMSwgMHgwNTk3LCAweDJGMTIsIDB4MkYxMiwgMHgwOUVGLCAweDJGMTMsIDB4MkYxMywgMHgxMkZDLA0KKyAgICAweDJGMTQsIDB4MkYxNCwgMHgxMjY2LCAweDJGMTUsIDB4MkYxNSwgMHgxMjg0LCAweDJGMTYsIDB4MkYxNiwgMHgyQTFBLA0KKyAgICAweDJGMTcsIDB4MkYxNywgMHgwRDQ1LCAweDJGMTgsIDB4MkYxOCwgMHgwNDdFLCAweDJGMTksIDB4MkYxOSwgMHgxMzUyLA0KKyAgICAweDJGMUEsIDB4MkYxQSwgMHgwNENDLCAweDJGMUIsIDB4MkYxQiwgMHgxMzlDLCAweDJGMUMsIDB4MkYxQywgMHgxMEJCLA0KKyAgICAweDJGMUQsIDB4MkYxRCwgMHgwOTY3LCAweDJGMUUsIDB4MkYxRSwgMHgxNTkzLCAweDJGMUYsIDB4MkYxRiwgMHgwRTcyLA0KKyAgICAweDJGMjAsIDB4MkYyMCwgMHgwRDU2LCAweDJGMjEsIDB4MkYyMSwgMHgxNjFDLCAweDJGMjIsIDB4MkYyMiwgMHgyRDJELA0KKyAgICAweDJGMjMsIDB4MkYyMywgMHgwRjEzLCAweDJGMjQsIDB4MkYyNCwgMHgwNTc2LCAweDJGMjUsIDB4MkYyNSwgMHgwQjZGLA0KKyAgICAweDJGMjYsIDB4MkYyNiwgMHgxMjMwLCAweDJGMjcsIDB4MkYyNywgMHgxNzJFLCAweDJGMjgsIDB4MkYyOCwgMHgwNTZBLA0KKyAgICAweDJGMjksIDB4MkYyOSwgMHgwRjZDLCAweDJGMkEsIDB4MkYyQSwgMHgxNEI2LCAweDJGMkIsIDB4MkYyQiwgMHgwRDQzLA0KKyAgICAweDJGMkMsIDB4MkYyQywgMHgxNzc0LCAweDJGMkQsIDB4MkYyRCwgMHgwQ0Y2LCAweDJGMkUsIDB4MkYyRSwgMHgxODE1LA0KKyAgICAweDJGMkYsIDB4MkYyRiwgMHgwNkZELCAweDJGMzAsIDB4MkYzMCwgMHgwODJELCAweDJGMzEsIDB4MkYzMSwgMHgwOEJFLA0KKyAgICAweDJGMzIsIDB4MkYzMiwgMHgwNkM0LCAweDJGMzMsIDB4MkYzMywgMHgxODEzLCAweDJGMzQsIDB4MkYzNCwgMHgwNzNDLA0KKyAgICAweDJGMzUsIDB4MkYzNSwgMHgxMzk4LCAweDJGMzYsIDB4MkYzNiwgMHgxNEFELCAweDJGMzcsIDB4MkYzNywgMHgxNEY2LA0KKyAgICAweDJGMzgsIDB4MkYzOCwgMHgwNzA2LCAweDJGMzksIDB4MkYzOSwgMHgxNzYyLCAweDJGM0EsIDB4MkYzQSwgMHgxNUVFLA0KKyAgICAweDJGM0IsIDB4MkYzQiwgMHgxNUUwLCAweDJGM0MsIDB4MkYzQywgMHgwRjhGLCAweDJGM0QsIDB4MkYzRCwgMHgwNkU1LA0KKyAgICAweDJGM0UsIDB4MkYzRSwgMHgzMjkyLCAweDJGM0YsIDB4MkYzRiwgMHgwRDZELCAweDJGNDAsIDB4MkY0MCwgMHgxMUE2LA0KKyAgICAweDJGNDEsIDB4MkY0MSwgMHgxOTA5LCAweDJGNDIsIDB4MkY0MiwgMHgwRUQzLCAweDJGNDMsIDB4MkY0MywgMHgwNUY2LA0KKyAgICAweDJGNDQsIDB4MkY0NCwgMHgwOEMwLCAweDJGNDUsIDB4MkY0NSwgMHgwNjVBLCAweDJGNDYsIDB4MkY0NiwgMHgwRUVELA0KKyAgICAweDJGNDcsIDB4MkY0NywgMHgwQ0IwLCAweDJGNDgsIDB4MkY0OCwgMHgxMEZFLCAweDJGNDksIDB4MkY0OSwgMHgxMTA1LA0KKyAgICAweDJGNEEsIDB4MkY0QSwgMHgwQjIxLCAweDJGNEIsIDB4MkY0QiwgMHgwQzM0LCAweDJGNEMsIDB4MkY0QywgMHgxMUI4LA0KKyAgICAweDJGNEQsIDB4MkY0RCwgMHgwNTc4LCAweDJGNEUsIDB4MkY0RSwgMHgxOUJELCAweDJGNEYsIDB4MkY0RiwgMHgwRUYyLA0KKyAgICAweDJGNTAsIDB4MkY1MCwgMHgwNDMxLCAweDJGNTEsIDB4MkY1MSwgMHgwQUIwLCAweDJGNTIsIDB4MkY1MiwgMHgwRDY2LA0KKyAgICAweDJGNTMsIDB4MkY1MywgMHgwQzE3LCAweDJGNTQsIDB4MkY1NCwgMHgwREEzLCAweDJGNTUsIDB4MkY1NSwgMHgwODA1LA0KKyAgICAweDJGNTYsIDB4MkY1NiwgMHgxMjAzLCAweDJGNTcsIDB4MkY1NywgMHgwNkIzLCAweDJGNTgsIDB4MkY1OCwgMHgxMjY5LA0KKyAgICAweDJGNTksIDB4MkY1OSwgMHgxNjlELCAweDJGNUEsIDB4MkY1QSwgMHgwQkNCLCAweDJGNUIsIDB4MkY1QiwgMHgwRkU5LA0KKyAgICAweDJGNUMsIDB4MkY1QywgMHgwQjY0LCAweDJGNUQsIDB4MkY1RCwgMHgwQzg5LCAweDJGNUUsIDB4MkY1RSwgMHgwRkM5LA0KKyAgICAweDJGNUYsIDB4MkY1RiwgMHgxMEQ2LCAweDJGNjAsIDB4MkY2MCwgMHgwNzI4LCAweDJGNjEsIDB4MkY2MSwgMHgwRTkwLA0KKyAgICAweDJGNjIsIDB4MkY2MiwgMHgwNkM1LCAweDJGNjMsIDB4MkY2MywgMHgwRDMzLCAweDJGNjQsIDB4MkY2NCwgMHgxMEE4LA0KKyAgICAweDJGNjUsIDB4MkY2NSwgMHgwRTQyLCAweDJGNjYsIDB4MkY2NiwgMHgxQkM2LCAweDJGNjcsIDB4MkY2NywgMHgxQjYwLA0KKyAgICAweDJGNjgsIDB4MkY2OCwgMHgzRUJGLCAweDJGNjksIDB4MkY2OSwgMHgwM0UyLCAweDJGNkEsIDB4MkY2QSwgMHgwQkMzLA0KKyAgICAweDJGNkIsIDB4MkY2QiwgMHgwQUY4LCAweDJGNkMsIDB4MkY2QywgMHgwQjIyLCAweDJGNkQsIDB4MkY2RCwgMHgwQUIxLA0KKyAgICAweDJGNkUsIDB4MkY2RSwgMHgwRDRGLCAweDJGNkYsIDB4MkY2RiwgMHgwRDQ2LCAweDJGNzAsIDB4MkY3MCwgMHgwRDU1LA0KKyAgICAweDJGNzEsIDB4MkY3MSwgMHg0MENCLCAweDJGNzIsIDB4MkY3MiwgMHgwNzgzLCAweDJGNzMsIDB4MkY3MywgMHgwRkQxLA0KKyAgICAweDJGNzQsIDB4MkY3NCwgMHgwOUVCLCAweDJGNzUsIDB4MkY3NSwgMHgxMUYwLCAweDJGNzYsIDB4MkY3NiwgMHgwQURDLA0KKyAgICAweDJGNzcsIDB4MkY3NywgMHgxQ0U3LCAweDJGNzgsIDB4MkY3OCwgMHgxQzVFLCAweDJGNzksIDB4MkY3OSwgMHgwRUE5LA0KKyAgICAweDJGN0EsIDB4MkY3QSwgMHgxMDFCLCAweDJGN0IsIDB4MkY3QiwgMHgxMEQ1LCAweDJGN0MsIDB4MkY3QywgMHgwOUJBLA0KKyAgICAweDJGN0QsIDB4MkY3RCwgMHgwNjM3LCAweDJGN0UsIDB4MkY3RSwgMHgxQkNCLCAweDJGN0YsIDB4MkY3RiwgMHgwNjM5LA0KKyAgICAweDJGODAsIDB4MkY4MCwgMHgxQTFFLCAweDJGODEsIDB4MkY4MSwgMHgwQ0JELCAweDJGODIsIDB4MkY4MiwgMHgwNEUxLA0KKyAgICAweDJGODMsIDB4MkY4MywgMHgxMjMxLCAweDJGODQsIDB4MkY4NCwgMHgxMUMwLCAweDJGODUsIDB4MkY4NSwgMHgwOEY5LA0KKyAgICAweDJGODYsIDB4MkY4NiwgMHgwRDE5LCAweDJGODcsIDB4MkY4NywgMHgxNjE4LCAweDJGODgsIDB4MkY4OCwgMHgxMURBLA0KKyAgICAweDJGODksIDB4MkY4OSwgMHgxQ0RDLCAweDJGOEEsIDB4MkY4QSwgMHgwQ0U0LCAweDJGOEIsIDB4MkY4QiwgMHg0NUEyLA0KKyAgICAweDJGOEMsIDB4MkY4QywgMHgxQkYwLCAweDJGOEQsIDB4MkY4RCwgMHgwNTBCLCAweDJGOEUsIDB4MkY4RSwgMHgwRkQzLA0KKyAgICAweDJGOEYsIDB4MkY4RiwgMHgwRjlCLCAweDJGOTAsIDB4MkY5MCwgMHgxMDQ5LCAweDJGOTEsIDB4MkY5MSwgMHg0OURDLA0KKyAgICAweDJGOTIsIDB4MkY5MiwgMHgxRjk2LCAweDJGOTMsIDB4MkY5MywgMHgwODk4LCAweDJGOTQsIDB4MkY5NCwgMHgwRkZELA0KKyAgICAweDJGOTUsIDB4MkY5NSwgMHgwNzIxLCAweDJGOTYsIDB4MkY5NiwgMHgwNUY4LCAweDJGOTcsIDB4MkY5NywgMHgxRDE1LA0KKyAgICAweDJGOTgsIDB4MkY5OCwgMHgxRDUwLCAweDJGOTksIDB4MkY5OSwgMHgxRTNCLCAweDJGOUEsIDB4MkY5QSwgMHgwNTA1LA0KKyAgICAweDJGOUIsIDB4MkY5QiwgMHgxMjNDLCAweDJGOUMsIDB4MkY5QywgMHgxMjQwLCAweDJGOUQsIDB4MkY5RCwgMHgwRDI2LA0KKyAgICAweDJGOUUsIDB4MkY5RSwgMHgxRTdCLCAweDJGOUYsIDB4MkY5RiwgMHgwRjhDLCAweDJGQTAsIDB4MkZBMCwgMHgwNEUyLA0KKyAgICAweDJGQTEsIDB4MkZBMSwgMHg0RDEzLCAweDJGQTIsIDB4MkZBMiwgMHgxMDVGLCAweDJGQTMsIDB4MkZBMywgMHgxMEI0LA0KKyAgICAweDJGQTQsIDB4MkZBNCwgMHg0RTE4LCAweDJGQTUsIDB4MkZBNSwgMHgwOURBLCAweDJGQTYsIDB4MkZBNiwgMHgwOEMxLA0KKyAgICAweDJGQTcsIDB4MkZBNywgMHgxRTc1LCAweDJGQTgsIDB4MkZBOCwgMHgyMDdELCAweDJGQTksIDB4MkZBOSwgMHgwNkIyLA0KKyAgICAweDJGQUEsIDB4MkZBQSwgMHgwOUVFLCAweDJGQUIsIDB4MkZBQiwgMHgxRDc5LCAweDJGQUMsIDB4MkZBQywgMHgxMENGLA0KKyAgICAweDJGQUQsIDB4MkZBRCwgMHg1MEVBLCAweDJGQUUsIDB4MkZBRSwgMHgwNjY0LCAweDJGQUYsIDB4MkZBRiwgMHgwQUVCLA0KKyAgICAweDJGQjAsIDB4MkZCMCwgMHgwNkVBLCAweDJGQjEsIDB4MkZCMSwgMHgyMThELCAweDJGQjIsIDB4MkZCMiwgMHgwOEYxLA0KKyAgICAweDJGQjMsIDB4MkZCMywgMHgxMDdCLCAweDJGQjQsIDB4MkZCNCwgMHgyMjA5LCAweDJGQjUsIDB4MkZCNSwgMHgxRjAwLA0KKyAgICAweDJGQjYsIDB4MkZCNiwgMHgxRUY0LCAweDJGQjcsIDB4MkZCNywgMHgwRDRBLCAweDJGQjgsIDB4MkZCOCwgMHgwRDZFLA0KKyAgICAweDJGQjksIDB4MkZCOSwgMHgwRjUwLCAweDJGQkEsIDB4MkZCQSwgMHgyMDZELCAweDJGQkIsIDB4MkZCQiwgMHgwNzIwLA0KKyAgICAweDJGQkMsIDB4MkZCQywgMHgwNkRBLCAweDJGQkQsIDB4MkZCRCwgMHgxREVDLCAweDJGQkUsIDB4MkZCRSwgMHgxRUQwLA0KKyAgICAweDJGQkYsIDB4MkZCRiwgMHgxMzlCLCAweDJGQzAsIDB4MkZDMCwgMHgxMjYwLCAweDJGQzEsIDB4MkZDMSwgMHgwNzQ2LA0KKyAgICAweDJGQzIsIDB4MkZDMiwgMHgyMjM5LCAweDJGQzMsIDB4MkZDMywgMHgyMDlDLCAweDJGQzQsIDB4MkZDNCwgMHgyNjg4LA0KKyAgICAweDJGQzUsIDB4MkZDNSwgMHgwQTYwLCAweDJGQzYsIDB4MkZDNiwgMHgyMDcxLCAweDJGQzcsIDB4MkZDNywgMHgwQTkwLA0KKyAgICAweDJGQzgsIDB4MkZDOCwgMHg1NTg2LCAweDJGQzksIDB4MkZDOSwgMHgwRDg5LCAweDJGQ0EsIDB4MkZDQSwgMHgwNzkxLA0KKyAgICAweDJGQ0IsIDB4MkZDQiwgMHgxQTU1LCAweDJGQ0MsIDB4MkZDQywgMHgyNjE4LCAweDJGQ0QsIDB4MkZDRCwgMHgwNUU1LA0KKyAgICAweDJGQ0UsIDB4MkZDRSwgMHgwNzFELCAweDJGQ0YsIDB4MkZDRiwgMHgwRDhBLCAweDJGRDAsIDB4MkZEMCwgMHgwNDMwLA0KKyAgICAweDJGRDEsIDB4MkZEMSwgMHgyMEM2LCAweDJGRDIsIDB4MkZEMiwgMHgxRTg2LCAweDJGRDMsIDB4MkZEMywgMHgyMDM3LA0KKyAgICAweDJGRDQsIDB4MkZENCwgMHgxRjM0LCAweDJGRDUsIDB4MkZENSwgMHgxMkYzLCAweDJGRjAsIDB4MkZGQiwgMHgyNzRDLA0KKyAgICAweDMwMDAsIDB4MzAwMiwgMHgwMDYwLCAweDMwMDMsIDB4MzAwMywgMHgwMDY3LCAweDMwMDUsIDB4MzAwNSwgMHgwMDY4LA0KKyAgICAweDMwMDYsIDB4MzAwNiwgMHgyNzI4LCAweDMwMDcsIDB4MzAwNywgMHgxRTE3LCAweDMwMDgsIDB4MzAwRiwgMHgwMDczLA0KKyAgICAweDMwMTAsIDB4MzAxMSwgMHgwMDdELCAweDMwMTIsIDB4MzAxMiwgMHgyNzA1LCAweDMwMTMsIDB4MzAxMywgMHgwMEJELA0KKyAgICAweDMwMTQsIDB4MzAxNSwgMHgwMDcxLCAweDMwMTYsIDB4MzAxNywgMHgwMDdCLCAweDMwMUQsIDB4MzAxRSwgMHgyNzA2LA0KKyAgICAweDMwMjEsIDB4MzAyOSwgMHgyNzA4LCAweDMwMzMsIDB4MzAzNSwgMHg1NzdCLCAweDMwMzgsIDB4MzAzQSwgMHg1NzdFLA0KKyAgICAweDMwM0UsIDB4MzAzRSwgMHgyNzRCLCAweDMwM0YsIDB4MzAzRiwgMHg1NzU1LCAweDMwNDEsIDB4MzA5MywgMHgwMTY0LA0KKyAgICAweDMwOTQsIDB4MzA5NCwgMHg1NzY3LCAweDMwOUIsIDB4MzA5QywgMHgyNzI0LCAweDMwOUQsIDB4MzA5RSwgMHgyNzI5LA0KKyAgICAweDMwQTEsIDB4MzBGNiwgMHgwMUI3LCAweDMwRjcsIDB4MzBGQSwgMHg1Nzc2LCAweDMwRkIsIDB4MzBGQiwgMHgwMDYzLA0KKyAgICAweDMwRkMsIDB4MzBGQywgMHgyNzIzLCAweDMwRkQsIDB4MzBGRSwgMHgyNzI2LCAweDMxMDUsIDB4MzEyOSwgMHgwMkJDLA0KKyAgICAweDMxMkEsIDB4MzEyQywgMHg1NzgxLCAweDMxQTAsIDB4MzFCNywgMHg1Nzg0LCAweDMyMjAsIDB4MzIyOSwgMHgwMEYwLA0KKyAgICAweDMyMzEsIDB4MzIzMSwgMHgyNzIxLCAweDMyQTMsIDB4MzJBMywgMHgyNzExLCAweDMzOEUsIDB4MzM4RiwgMHgyNzEyLA0KKyAgICAweDMzOUMsIDB4MzM5RSwgMHgyNzE0LCAweDMzQTEsIDB4MzNBMSwgMHgyNzE3LCAweDMzQzQsIDB4MzNDNCwgMHgyNzE4LA0KKyAgICAweDMzQ0UsIDB4MzNDRSwgMHgyNzE5LCAweDMzRDEsIDB4MzNEMiwgMHgyNzFBLCAweDMzRDUsIDB4MzNENSwgMHgyNzFDLA0KKyAgICAweDM0MDAsIDB4MzQ0NiwgMHg1ODAxLCAweDM0NDcsIDB4MzQ0NywgMHg1NjI1LCAweDM0NDgsIDB4MzQ3MiwgMHg1ODQ4LA0KKyAgICAweDM0NzMsIDB4MzQ3MywgMHg1NjI0LCAweDM0NzQsIDB4MzRGRiwgMHg1ODczLCAweDM1MDAsIDB4MzU5RCwgMHg1OEZGLA0KKyAgICAweDM1OUUsIDB4MzU5RSwgMHg1NjI5LCAweDM1OUYsIDB4MzVGRiwgMHg1OTlELCAweDM2MDAsIDB4MzYwRCwgMHg1OUZFLA0KKyAgICAweDM2MEUsIDB4MzYwRSwgMHg1NjJCLCAweDM2MEYsIDB4MzYxOSwgMHg1QTBDLCAweDM2MUEsIDB4MzYxQSwgMHg1NjJBLA0KKyAgICAweDM2MUIsIDB4MzZGRiwgMHg1QTE3LCAweDM3MDAsIDB4MzdGRiwgMHg1QUZDLCAweDM4MDAsIDB4MzhGRiwgMHg1QkZDLA0KKyAgICAweDM5MDAsIDB4MzkxNywgMHg1Q0ZDLCAweDM5MTgsIDB4MzkxOCwgMHg1NjJGLCAweDM5MTksIDB4Mzk2RCwgMHg1RDE0LA0KKyAgICAweDM5NkUsIDB4Mzk2RSwgMHg1NjJFLCAweDM5NkYsIDB4MzlDRSwgMHg1RDY5LCAweDM5Q0YsIDB4MzlDRiwgMHg1NjMxLA0KKyAgICAweDM5RDAsIDB4MzlEMCwgMHg1NjM0LCAweDM5RDEsIDB4MzlERSwgMHg1REM5LCAweDM5REYsIDB4MzlERiwgMHg1NjMyLA0KKyAgICAweDM5RTAsIDB4MzlGRiwgMHg1REQ3LCAweDNBMDAsIDB4M0E3MiwgMHg1REY3LCAweDNBNzMsIDB4M0E3MywgMHg1NjMzLA0KKyAgICAweDNBNzQsIDB4M0FGRiwgMHg1RTZBLCAweDNCMDAsIDB4M0I0RCwgMHg1RUY2LCAweDNCNEUsIDB4M0I0RSwgMHg1NjM3LA0KKyAgICAweDNCNEYsIDB4M0JGRiwgMHg1RjQ0LCAweDNDMDAsIDB4M0M2RCwgMHg1RkY1LCAweDNDNkUsIDB4M0M2RSwgMHg1NjM4LA0KKyAgICAweDNDNkYsIDB4M0NERiwgMHg2MDYzLCAweDNDRTAsIDB4M0NFMCwgMHg1NjM5LCAweDNDRTEsIDB4M0NGRiwgMHg2MEQ0LA0KKyAgICAweDNEMDAsIDB4M0RGRiwgMHg2MEYzLCAweDNFMDAsIDB4M0VGRiwgMHg2MUYzLCAweDNGMDAsIDB4M0ZGRiwgMHg2MkYzLA0KKyAgICAweDQwMDAsIDB4NDA1NSwgMHg2M0YzLCAweDQwNTYsIDB4NDA1NiwgMHg1NjNFLCAweDQwNTcsIDB4NDBGRiwgMHg2NDQ5LA0KKyAgICAweDQxMDAsIDB4NDE1RSwgMHg2NEYyLCAweDQxNUYsIDB4NDE1RiwgMHg1NjNGLCAweDQxNjAsIDB4NDFGRiwgMHg2NTUxLA0KKyAgICAweDQyMDAsIDB4NDJGRiwgMHg2NUYxLCAweDQzMDAsIDB4NDMzNiwgMHg2NkYxLCAweDQzMzcsIDB4NDMzNywgMHg1NjQxLA0KKyAgICAweDQzMzgsIDB4NDNBQiwgMHg2NzI4LCAweDQzQUMsIDB4NDNBQywgMHg1NjQ3LCAweDQzQUQsIDB4NDNCMCwgMHg2NzlDLA0KKyAgICAweDQzQjEsIDB4NDNCMSwgMHg1NjQ2LCAweDQzQjIsIDB4NDNEQywgMHg2N0EwLCAweDQzREQsIDB4NDNERCwgMHg1NjQ5LA0KKyAgICAweDQzREUsIDB4NDNGRiwgMHg2N0NCLCAweDQ0MDAsIDB4NDRENSwgMHg2N0VELCAweDQ0RDYsIDB4NDRENiwgMHg1NjRBLA0KKyAgICAweDQ0RDcsIDB4NDRGRiwgMHg2OEMzLCAweDQ1MDAsIDB4NDVGRiwgMHg2OEVDLCAweDQ2MDAsIDB4NDY0QiwgMHg2OUVDLA0KKyAgICAweDQ2NEMsIDB4NDY0QywgMHg1NjRDLCAweDQ2NEQsIDB4NDY2MCwgMHg2QTM4LCAweDQ2NjEsIDB4NDY2MSwgMHg1NjRCLA0KKyAgICAweDQ2NjIsIDB4NDZGRiwgMHg2QTRDLCAweDQ3MDAsIDB4NDcyMiwgMHg2QUVBLCAweDQ3MjMsIDB4NDcyMywgMHg1NjRFLA0KKyAgICAweDQ3MjQsIDB4NDcyOCwgMHg2QjBELCAweDQ3MjksIDB4NDcyOSwgMHg1NjRGLCAweDQ3MkEsIDB4NDc3QiwgMHg2QjEyLA0KKyAgICAweDQ3N0MsIDB4NDc3QywgMHg1NjUwLCAweDQ3N0QsIDB4NDc4QywgMHg2QjY0LCAweDQ3OEQsIDB4NDc4RCwgMHg1NjUxLA0KKyAgICAweDQ3OEUsIDB4NDdGRiwgMHg2Qjc0LCAweDQ4MDAsIDB4NDhGRiwgMHg2QkU2LCAweDQ5MDAsIDB4NDk0NiwgMHg2Q0U2LA0KKyAgICAweDQ5NDcsIDB4NDk0NywgMHg1NjUzLCAweDQ5NDgsIDB4NDk3OSwgMHg2RDJELCAweDQ5N0EsIDB4NDk3QSwgMHg1NjU0LA0KKyAgICAweDQ5N0IsIDB4NDk3QywgMHg2RDVGLCAweDQ5N0QsIDB4NDk3RCwgMHg1NjU1LCAweDQ5N0UsIDB4NDk4MSwgMHg2RDYxLA0KKyAgICAweDQ5ODIsIDB4NDk4MywgMHg1NjU2LCAweDQ5ODQsIDB4NDk4NCwgMHg2RDY1LCAweDQ5ODUsIDB4NDk4NiwgMHg1NjU4LA0KKyAgICAweDQ5ODcsIDB4NDk5QSwgMHg2RDY2LCAweDQ5OUIsIDB4NDk5QiwgMHg1NjVCLCAweDQ5OUMsIDB4NDk5RSwgMHg2RDdBLA0KKyAgICAweDQ5OUYsIDB4NDk5RiwgMHg1NjVBLCAweDQ5QTAsIDB4NDlCNSwgMHg2RDdELCAweDQ5QjYsIDB4NDlCNiwgMHg1NjVELA0KKyAgICAweDQ5QjcsIDB4NDlCNywgMHg1NjVDLCAweDQ5QjgsIDB4NDlGRiwgMHg2RDkzLCAweDRBMDAsIDB4NEFGRiwgMHg2RERCLA0KKyAgICAweDRCMDAsIDB4NEJGRiwgMHg2RURCLCAweDRDMDAsIDB4NEM3NiwgMHg2RkRCLCAweDRDNzcsIDB4NEM3NywgMHg1NjY0LA0KKyAgICAweDRDNzgsIDB4NEM5RSwgMHg3MDUyLCAweDRDOUYsIDB4NENBMSwgMHg1NjYxLCAweDRDQTIsIDB4NENBMiwgMHg1NjY1LA0KKyAgICAweDRDQTMsIDB4NENBMywgMHg1NjYwLCAweDRDQTQsIDB4NENGRiwgMHg3MDc5LCAweDREMDAsIDB4NEQxMiwgMHg3MEQ1LA0KKyAgICAweDREMTMsIDB4NEQxOSwgMHg1NjY2LCAweDREMUEsIDB4NERBRCwgMHg3MEU4LCAweDREQUUsIDB4NERBRSwgMHg1NjZELA0KKyAgICAweDREQUYsIDB4NERCNSwgMHg3MTdDLCAweDRFMDAsIDB4NEUwMCwgMHgxMDQyLCAweDRFMDEsIDB4NEUwMSwgMHgwNUUwLA0KKyAgICAweDRFMDIsIDB4NEUwMiwgMHgyNzU4LCAweDRFMDMsIDB4NEUwMywgMHgwQkZFLCAweDRFMDQsIDB4NEUwNiwgMHgyNzU5LA0KKyAgICAweDRFMDcsIDB4NEUwNywgMHgwRUEzLCAweDRFMDgsIDB4NEUwOCwgMHgxMTZBLCAweDRFMDksIDB4NEUwOSwgMHgwQ0Q4LA0KKyAgICAweDRFMEEsIDB4NEUwQSwgMHgwRDA4LCAweDRFMEIsIDB4NEUwQiwgMHgwRjJGLCAweDRFMEMsIDB4NEUwQywgMHgxMjU4LA0KKyAgICAweDRFMEQsIDB4NEUwRCwgMHgwNDgyLCAweDRFMEUsIDB4NEUwRSwgMHgxMEQwLCAweDRFMEYsIDB4NEUwRiwgMHgyNzVDLA0KKyAgICAweDRFMTAsIDB4NEUxMCwgMHgxMjVBLCAweDRFMTEsIDB4NEUxMSwgMHgwNTE4LCAweDRFMTIsIDB4NEUxMiwgMHgyNzVELA0KKyAgICAweDRFMTMsIDB4NEUxMywgMHgxMjA1LCAweDRFMTQsIDB4NEUxNCwgMHgwQzRGLCAweDRFMTUsIDB4NEUxNSwgMHgxMjVELA0KKyAgICAweDRFMTYsIDB4NEUxNiwgMHgwRDU3LCAweDRFMTcsIDB4NEUxNywgMHgyNzVFLCAweDRFMTgsIDB4NEUxOCwgMHgwQzZELA0KKyAgICAweDRFMTksIDB4NEUxOSwgMHgwNDY0LCAweDRFMUEsIDB4NEUxQSwgMHgxMDNDLCAweDRFMUIsIDB4NEUxQiwgMHgwNTU3LA0KKyAgICAweDRFMUMsIDB4NEUxQywgMHgwNUVBLCAweDRFMUQsIDB4NEUxRCwgMHgwREI0LCAweDRFMUUsIDB4NEUxRSwgMHgxMjVGLA0KKyAgICAweDRFMUYsIDB4NEUyMSwgMHgyNzVGLCAweDRFMjIsIDB4NEUyMiwgMHgwNUU5LCAweDRFMjMsIDB4NEUyMywgMHgyNzYyLA0KKyAgICAweDRFMjQsIDB4NEUyNCwgMHgwQTA2LCAweDRFMjUsIDB4NEUyNSwgMHgwRkY4LCAweDRFMjYsIDB4NEUyNiwgMHgyNzYzLA0KKyAgICAweDRFMjcsIDB4NEUyNywgMHgwQ0RFLCAweDRFMjgsIDB4NEUyOCwgMHgxMjYzLCAweDRFMjksIDB4NEUyOSwgMHgyNzY0LA0KKyAgICAweDRFMkEsIDB4NEUyQSwgMHgwNkYxLCAweDRFMkIsIDB4NEUyQiwgMHgwRkU3LCAweDRFMkMsIDB4NEUyQywgMHgxNjlDLA0KKyAgICAweDRFMkQsIDB4NEUyRCwgMHgxMUNGLCAweDRFMkUsIDB4NEUyRiwgMHgyNzY1LCAweDRFMzAsIDB4NEUzMCwgMHgwNjdFLA0KKyAgICAweDRFMzEsIDB4NEUzMSwgMHgyNzY3LCAweDRFMzIsIDB4NEUzMiwgMHgwNTMxLCAweDRFMzMsIDB4NEUzMywgMHgyNzY4LA0KKyAgICAweDRFMzQsIDB4NEUzNCwgMHgwQTIyLCAweDRFMzUsIDB4NEUzNSwgMHgyNzY5LCAweDRFMzYsIDB4NEUzNiwgMHgxMjcyLA0KKyAgICAweDRFMzcsIDB4NEUzNywgMHgyNzZBLCAweDRFMzgsIDB4NEUzOCwgMHgwRTk5LCAweDRFMzksIDB4NEUzOSwgMHgwNTg1LA0KKyAgICAweDRFM0EsIDB4NEUzQSwgMHgwRUI5LCAweDRFM0IsIDB4NEUzQiwgMHgxMUY2LCAweDRFM0MsIDB4NEUzQywgMHgyNzZCLA0KKyAgICAweDRFM0QsIDB4NEUzRCwgMHgwOUUxLCAweDRFM0UsIDB4NEUzRSwgMHgwOTA4LCAweDRFM0YsIDB4NEUzRiwgMHgxMjY1LA0KKyAgICAweDRFNDAsIDB4NEU0MiwgMHgyNzZDLCAweDRFNDMsIDB4NEU0MywgMHgwQjJFLCAweDRFNDQsIDB4NEU0NCwgMHgyNzZGLA0KKyAgICAweDRFNDUsIDB4NEU0NSwgMHgwOEYyLCAweDRFNDYsIDB4NEU0NiwgMHgyNzcwLCAweDRFNDcsIDB4NEU0NywgMHgxMjY3LA0KKyAgICAweDRFNDgsIDB4NEU0OCwgMHgwQUI5LCAweDRFNDksIDB4NEU0OSwgMHgxMDZDLCAweDRFNEEsIDB4NEU0QSwgMHgyNzcxLA0KKyAgICAweDRFNEIsIDB4NEU0QiwgMHgxMUFELCAweDRFNEMsIDB4NEU0QywgMHgwRUU5LCAweDRFNEQsIDB4NEU0RCwgMHgxMTQ4LA0KKyAgICAweDRFNEUsIDB4NEU0RSwgMHgwN0FDLCAweDRFNEYsIDB4NEU0RiwgMHgwNjQzLCAweDRFNTAsIDB4NEU1MCwgMHgwOUMxLA0KKyAgICAweDRFNTEsIDB4NEU1MSwgMHgyNzcyLCAweDRFNTIsIDB4NEU1MiwgMHgwQkQ4LCAweDRFNTMsIDB4NEU1MywgMHgwQjkzLA0KKyAgICAweDRFNTQsIDB4NEU1NCwgMHgwQzQ0LCAweDRFNTUsIDB4NEU1NSwgMHgyNzczLCAweDRFNTYsIDB4NEU1NiwgMHgwNzJELA0KKyAgICAweDRFNTcsIDB4NEU1NywgMHgyNzc0LCAweDRFNTgsIDB4NEU1OCwgMHgwNEYwLCAweDRFNTksIDB4NEU1OSwgMHgxMDU5LA0KKyAgICAweDRFNUEsIDB4NEU1QiwgMHgyNzc1LCAweDRFNUMsIDB4NEU1QywgMHgxMjc1LCAweDRFNUQsIDB4NEU1RCwgMHgwOEY0LA0KKyAgICAweDRFNUUsIDB4NEU1RSwgMHgwQzExLCAweDRFNUYsIDB4NEU1RiwgMHgxMDM5LCAweDRFNjAsIDB4NEU2MCwgMHgwRjFELA0KKyAgICAweDRFNjEsIDB4NEU2MSwgMHgwRjU0LCAweDRFNjIsIDB4NEU2NSwgMHgyNzc3LCAweDRFNjYsIDB4NEU2NiwgMHgwRDgwLA0KKyAgICAweDRFNjcsIDB4NEU2OCwgMHgyNzdCLCAweDRFNjksIDB4NEU2OSwgMHgxMjc2LCAweDRFNkEsIDB4NEU2RiwgMHgyNzdELA0KKyAgICAweDRFNzAsIDB4NEU3MCwgMHgwQTk5LCAweDRFNzEsIDB4NEU3MSwgMHgwQTc5LCAweDRFNzIsIDB4NEU3MiwgMHgyNzgzLA0KKyAgICAweDRFNzMsIDB4NEU3MywgMHgwQ0M0LCAweDRFNzQsIDB4NEU3RCwgMHgyNzg0LCAweDRFN0UsIDB4NEU3RSwgMHgwQzI5LA0KKyAgICAweDRFN0YsIDB4NEU4MSwgMHgyNzhFLCAweDRFODIsIDB4NEU4MiwgMHgyMDU5LCAweDRFODMsIDB4NEU4NSwgMHgyNzkxLA0KKyAgICAweDRFODYsIDB4NEU4NiwgMHgwQTE0LCAweDRFODcsIDB4NEU4NywgMHgyNzk0LCAweDRFODgsIDB4NEU4OCwgMHgxMENELA0KKyAgICAweDRFODksIDB4NEU4OSwgMHgxMTlBLCAweDRFOEEsIDB4NEU4QSwgMHgyNzk1LCAweDRFOEIsIDB4NEU4QiwgMHgwRDU5LA0KKyAgICAweDRFOEMsIDB4NEU4QywgMHgwNjNELCAweDRFOEQsIDB4NEU4RCwgMHgxMjU3LCAweDRFOEUsIDB4NEU4RSwgMHgxMEJGLA0KKyAgICAweDRFOEYsIDB4NEU4RiwgMHgwOTg0LCAweDRFOTAsIDB4NEU5MCwgMHgyNzk2LCAweDRFOTEsIDB4NEU5MSwgMHgxMTA5LA0KKyAgICAweDRFOTIsIDB4NEU5MiwgMHgwN0JBLCAweDRFOTMsIDB4NEU5MywgMHgxMjc3LCAweDRFOTQsIDB4NEU5NCwgMHgwRUY0LA0KKyAgICAweDRFOTUsIDB4NEU5NSwgMHgwOERELCAweDRFOTYsIDB4NEU5NywgMHgyNzk3LCAweDRFOTgsIDB4NEU5OCwgMHgxMjVFLA0KKyAgICAweDRFOTksIDB4NEU5OSwgMHgyNzk5LCAweDRFOUEsIDB4NEU5QSwgMHgwRkYwLCAweDRFOUIsIDB4NEU5QiwgMHgwRjc0LA0KKyAgICAweDRFOUMsIDB4NEU5RCwgMHgyNzlBLCAweDRFOUUsIDB4NEU5RSwgMHgyMUYxLCAweDRFOUYsIDB4NEU5RiwgMHgxMjczLA0KKyAgICAweDRFQTAsIDB4NEVBMCwgMHgxMzAzLCAweDRFQTEsIDB4NEVBMSwgMHgwRUE3LCAweDRFQTIsIDB4NEVBMiwgMHgwOTQ3LA0KKyAgICAweDRFQTMsIDB4NEVBMywgMHgyNzlDLCAweDRFQTQsIDB4NEVBNCwgMHgwODhDLCAweDRFQTUsIDB4NEVBNSwgMHgwNzVDLA0KKyAgICAweDRFQTYsIDB4NEVBNiwgMHgxMDY3LCAweDRFQTcsIDB4NEVBNywgMHgwNEMxLCAweDRFQTgsIDB4NEVBOCwgMHgwNzk3LA0KKyAgICAweDRFQTksIDB4NEVBOSwgMHgwQjE5LCAweDRFQUEsIDB4NEVBQSwgMHgyNzlELCAweDRFQUIsIDB4NEVBQiwgMHgwRjVBLA0KKyAgICAweDRFQUMsIDB4NEVBQywgMHgwOEQ4LCAweDRFQUQsIDB4NEVBRCwgMHgwRTU1LCAweDRFQUUsIDB4NEVBRSwgMHgwQTBBLA0KKyAgICAweDRFQUYsIDB4NEVCMSwgMHgyNzlFLCAweDRFQjIsIDB4NEVCMiwgMHgwQzU0LCAweDRFQjMsIDB4NEVCMywgMHgxMzA1LA0KKyAgICAweDRFQjQsIDB4NEVCNCwgMHgyN0ExLCAweDRFQjUsIDB4NEVCNSwgMHgxMzA4LCAweDRFQjYsIDB4NEVCOSwgMHgyN0EyLA0KKyAgICAweDRFQkEsIDB4NEVCQSwgMHgwQ0E2LCAweDRFQkIsIDB4NEVCQiwgMHgxMjlGLCAweDRFQkMsIDB4NEVCRSwgMHgyN0E2LA0KKyAgICAweDRFQkYsIDB4NEVCRiwgMHgxMDYxLCAweDRFQzAsIDB4NEVDMCwgMHgwRDQ5LCAweDRFQzEsIDB4NEVDMSwgMHgwQ0E1LA0KKyAgICAweDRFQzIsIDB4NEVDMiwgMHgxMkEyLCAweDRFQzMsIDB4NEVDMywgMHgxMkEwLCAweDRFQzQsIDB4NEVDNCwgMHgxMjdDLA0KKyAgICAweDRFQzUsIDB4NEVDNSwgMHgwOEM3LCAweDRFQzYsIDB4NEVDNiwgMHgwQkVDLCAweDRFQzcsIDB4NEVDNywgMHgwNTE1LA0KKyAgICAweDRFQzgsIDB4NEVDOCwgMHgyN0E5LCAweDRFQzksIDB4NEVDOSwgMHgxMkExLCAweDRFQ0EsIDB4NEVDQSwgMHgwOEMyLA0KKyAgICAweDRFQ0IsIDB4NEVDQiwgMHgwOEJBLCAweDRFQ0MsIDB4NEVDQywgMHgyN0FBLCAweDRFQ0QsIDB4NEVDRCwgMHgwQ0FGLA0KKyAgICAweDRFQ0UsIDB4NEVDRSwgMHgwNTU2LCAweDRFQ0YsIDB4NEVEMCwgMHgyN0FCLCAweDRFRDEsIDB4NEVEMSwgMHgwQTdGLA0KKyAgICAweDRFRDIsIDB4NEVEMiwgMHgyN0FELCAweDRFRDMsIDB4NEVEMywgMHgwNDlELCAweDRFRDQsIDB4NEVENCwgMHgxMjJELA0KKyAgICAweDRFRDUsIDB4NEVENSwgMHgwRDYyLCAweDRFRDYsIDB4NEVENiwgMHgwREYwLCAweDRFRDcsIDB4NEVENywgMHgxMTZELA0KKyAgICAweDRFRDgsIDB4NEVEOCwgMHgwNkIxLCAweDRFRDksIDB4NEVEOSwgMHgwRjM2LCAweDRFREEsIDB4NEVEQywgMHgyN0FFLA0KKyAgICAweDRFREQsIDB4NEVERCwgMHgxMkVFLCAweDRFREUsIDB4NEVERSwgMHgxMkE2LCAweDRFREYsIDB4NEVERiwgMHgwQzI3LA0KKyAgICAweDRFRTAsIDB4NEVFMCwgMHgyN0IxLCAweDRFRTEsIDB4NEVFMSwgMHgxMkE0LCAweDRFRTIsIDB4NEVFMiwgMHgyN0IyLA0KKyAgICAweDRFRTMsIDB4NEVFMywgMHgwNTdELCAweDRFRTQsIDB4NEVFNCwgMHgwQTM3LCAweDRFRTUsIDB4NEVFNSwgMHgxMDVCLA0KKyAgICAweDRFRTYsIDB4NEVFNywgMHgyN0IzLCAweDRFRTgsIDB4NEVFOCwgMHgxMkEzLCAweDRFRTksIDB4NEVFOSwgMHgyN0I1LA0KKyAgICAweDRFRUEsIDB4NEVFQSwgMHgxMDRFLCAweDRFRUIsIDB4NEVFQiwgMHgxMkE1LCAweDRFRUMsIDB4NEVFQywgMHgwQUNDLA0KKyAgICAweDRFRUQsIDB4NEVFRiwgMHgyN0I2LCAweDRFRjAsIDB4NEVGMCwgMHgxMDFGLCAweDRFRjEsIDB4NEVGMSwgMHgyN0I5LA0KKyAgICAweDRFRjIsIDB4NEVGMiwgMHgxMUQ4LCAweDRFRjMsIDB4NEVGMywgMHgxMkE4LCAweDRFRjQsIDB4NEVGNCwgMHgyN0JBLA0KKyAgICAweDRFRjUsIDB4NEVGNSwgMHgxMkFCLCAweDRFRjYsIDB4NEVGNiwgMHgwODcxLCAweDRFRjcsIDB4NEVGNywgMHgwODRFLA0KKyAgICAweDRFRjgsIDB4NEVGQSwgMHgyN0JCLCAweDRFRkIsIDB4NEVGQiwgMHgwQ0E5LCAweDRFRkMsIDB4NEVGQywgMHgyN0JFLA0KKyAgICAweDRFRkQsIDB4NEVGRCwgMHgwNjdBLCAweDRFRkUsIDB4NEVGRSwgMHgyN0JGLCAweDRFRkYsIDB4NEVGRiwgMHgwNjVGLA0KKyAgICAweDRGMDAsIDB4NEYwMCwgMHgyN0MwLCAweDRGMDEsIDB4NEYwMSwgMHgwQzEyLCAweDRGMDIsIDB4NEYwOCwgMHgyN0MxLA0KKyAgICAweDRGMDksIDB4NEYwOSwgMHgxMkFFLCAweDRGMEEsIDB4NEYwQSwgMHgxMDQ4LCAweDRGMEIsIDB4NEYwQywgMHgyN0M4LA0KKyAgICAweDRGMEQsIDB4NEYwRCwgMHgwRUY4LCAweDRGMEUsIDB4NEYwRSwgMHgwODMyLCAweDRGMEYsIDB4NEYwRiwgMHgwNjk5LA0KKyAgICAweDRGMTAsIDB4NEYxMCwgMHgwNjQyLCAweDRGMTEsIDB4NEYxMSwgMHgwRkE4LCAweDRGMTIsIDB4NEYxNiwgMHgyN0NBLA0KKyAgICAweDRGMTcsIDB4NEYxNywgMHgxMUQ5LCAweDRGMTgsIDB4NEYxOCwgMHgxMEFBLCAweDRGMTksIDB4NEYxOSwgMHgwODA0LA0KKyAgICAweDRGMUEsIDB4NEYxQSwgMHgwN0Y2LCAweDRGMUIsIDB4NEYxQiwgMHgxMkE3LCAweDRGMUMsIDB4NEYxRCwgMHgyN0NGLA0KKyAgICAweDRGMUUsIDB4NEYxRSwgMHgwQ0RBLCAweDRGMUYsIDB4NEYxRiwgMHgwRUJGLCAweDRGMjAsIDB4NEYyMCwgMHgwNTJFLA0KKyAgICAweDRGMjEsIDB4NEYyMSwgMHgyN0QxLCAweDRGMjIsIDB4NEYyMiwgMHgxMkE5LCAweDRGMjMsIDB4NEYyMywgMHgyN0QyLA0KKyAgICAweDRGMjQsIDB4NEYyNCwgMHgwRDA0LCAweDRGMjUsIDB4NEYyNSwgMHgxMkFDLCAweDRGMjYsIDB4NEYyNiwgMHgwQTdFLA0KKyAgICAweDRGMjcsIDB4NEYyNywgMHgxMkFELCAweDRGMjgsIDB4NEYyOSwgMHgyN0QzLCAweDRGMkEsIDB4NEYyQSwgMHgwRUMwLA0KKyAgICAweDRGMkIsIDB4NEYyQiwgMHgxMkFGLCAweDRGMkMsIDB4NEYyRSwgMHgyN0Q1LCAweDRGMkYsIDB4NEYyRiwgMHgwNDc1LA0KKyAgICAweDRGMzAsIDB4NEYzMCwgMHgwNzE5LCAweDRGMzEsIDB4NEYzMSwgMHgyN0Q4LCAweDRGMzIsIDB4NEYzMiwgMHgxMkI3LA0KKyAgICAweDRGMzMsIDB4NEYzMywgMHgyN0Q5LCAweDRGMzQsIDB4NEYzNCwgMHgwM0Y0LCAweDRGMzUsIDB4NEYzNSwgMHgyN0RBLA0KKyAgICAweDRGMzYsIDB4NEYzNiwgMHgwQTJGLCAweDRGMzcsIDB4NEYzNywgMHgyN0RCLCAweDRGMzgsIDB4NEYzOCwgMHgwRDI1LA0KKyAgICAweDRGMzksIDB4NEYzOSwgMHgyN0RDLCAweDRGM0EsIDB4NEYzQSwgMHgwREJBLCAweDRGM0IsIDB4NEYzQiwgMHgyN0RELA0KKyAgICAweDRGM0MsIDB4NEYzQywgMHgwREJCLCAweDRGM0QsIDB4NEYzRCwgMHgxMkI4LCAweDRGM0UsIDB4NEY0MiwgMHgyN0RFLA0KKyAgICAweDRGNDMsIDB4NEY0MywgMHgwNUM5LCAweDRGNDQsIDB4NEY0NSwgMHgyN0UzLCAweDRGNDYsIDB4NEY0NiwgMHgwNThDLA0KKyAgICAweDRGNDcsIDB4NEY0QywgMHgyN0U1LCAweDRGNEQsIDB4NEY0RCwgMHgwRUNBLCAweDRGNEUsIDB4NEY0RSwgMHgwNUFFLA0KKyAgICAweDRGNEYsIDB4NEY0RiwgMHgxMUZFLCAweDRGNTAsIDB4NEY1MCwgMHgxMjUxLCAweDRGNTEsIDB4NEY1MSwgMHgxMEI4LA0KKyAgICAweDRGNTIsIDB4NEY1MiwgMHgyN0VCLCAweDRGNTMsIDB4NEY1MywgMHgwRTM4LCAweDRGNTQsIDB4NEY1NCwgMHgyN0VDLA0KKyAgICAweDRGNTUsIDB4NEY1NSwgMHgwNzg1LCAweDRGNTYsIDB4NEY1NiwgMHgyN0VELCAweDRGNTcsIDB4NEY1NywgMHgxMkI2LA0KKyAgICAweDRGNTgsIDB4NEY1OCwgMHgxMkYwLCAweDRGNTksIDB4NEY1OSwgMHgxMEM1LCAweDRGNUEsIDB4NEY1QSwgMHgxMkIzLA0KKyAgICAweDRGNUIsIDB4NEY1QiwgMHgwNjhELCAweDRGNUMsIDB4NEY1QywgMHgxMjU0LCAweDRGNUQsIDB4NEY1RCwgMHgxMkI0LA0KKyAgICAweDRGNUUsIDB4NEY1RSwgMHgxMkIwLCAweDRGNUYsIDB4NEY1RiwgMHgxMkI1LCAweDRGNjAsIDB4NEY2MCwgMHgwQjQ2LA0KKyAgICAweDRGNjEsIDB4NEY2MiwgMHgyN0VFLCAweDRGNjMsIDB4NEY2MywgMHgxMDlCLCAweDRGNjQsIDB4NEY2NCwgMHgxMkFBLA0KKyAgICAweDRGNjUsIDB4NEY2NSwgMHgxMkYxLCAweDRGNjYsIDB4NEY2NiwgMHgyN0YwLCAweDRGNjcsIDB4NEY2NywgMHgxMkIxLA0KKyAgICAweDRGNjgsIDB4NEY2OCwgMHgyN0YxLCAweDRGNjksIDB4NEY2OSwgMHgwQkE2LCAweDRGNkEsIDB4NEY2QiwgMHgyN0YyLA0KKyAgICAweDRGNkMsIDB4NEY2QywgMHgwOUJCLCAweDRGNkQsIDB4NEY2RSwgMHgyN0Y0LCAweDRGNkYsIDB4NEY2RiwgMHgxMDE5LA0KKyAgICAweDRGNzAsIDB4NEY3MCwgMHgwM0U2LCAweDRGNzEsIDB4NEY3MiwgMHgyN0Y2LCAweDRGNzMsIDB4NEY3MywgMHgwODQ0LA0KKyAgICAweDRGNzQsIDB4NEY3NCwgMHgxMkJBLCAweDRGNzUsIDB4NEY3NSwgMHgyN0Y4LCAweDRGNzYsIDB4NEY3NiwgMHgxMkI5LA0KKyAgICAweDRGNzcsIDB4NEY3QSwgMHgyN0Y5LCAweDRGN0IsIDB4NEY3QiwgMHgxMkMwLCAweDRGN0MsIDB4NEY3QywgMHgxMkMyLA0KKyAgICAweDRGN0QsIDB4NEY3RCwgMHgyN0ZELCAweDRGN0UsIDB4NEY3RSwgMHgxMkJGLCAweDRGN0YsIDB4NEY3RiwgMHgwRDUwLA0KKyAgICAweDRGODAsIDB4NEY4MiwgMHgyN0ZFLCAweDRGODMsIDB4NEY4MywgMHgxMkJELCAweDRGODQsIDB4NEY4NCwgMHgxMUI1LA0KKyAgICAweDRGODUsIDB4NEY4NSwgMHgyODAxLCAweDRGODYsIDB4NEY4NiwgMHgxRkYyLCAweDRGODcsIDB4NEY4NywgMHgyODAyLA0KKyAgICAweDRGODgsIDB4NEY4OCwgMHgwNTAzLCAweDRGODksIDB4NEY4OSwgMHgxMkJDLCAweDRGOEEsIDB4NEY4QSwgMHgyODAzLA0KKyAgICAweDRGOEIsIDB4NEY4QiwgMHgwOUU4LCAweDRGOEMsIDB4NEY4QywgMHgyODA0LCAweDRGOEQsIDB4NEY4RCwgMHgwRDYzLA0KKyAgICAweDRGOEUsIDB4NEY4RSwgMHgyODA1LCAweDRGOEYsIDB4NEY4RiwgMHgxMkJFLCAweDRGOTAsIDB4NEY5MCwgMHgyODA2LA0KKyAgICAweDRGOTEsIDB4NEY5MSwgMHgxMkJCLCAweDRGOTIsIDB4NEY5MywgMHgyODA3LCAweDRGOTQsIDB4NEY5NCwgMHgxMkM0LA0KKyAgICAweDRGOTUsIDB4NEY5NSwgMHgyODA5LCAweDRGOTYsIDB4NEY5NiwgMHgyMDVELCAweDRGOTcsIDB4NEY5NywgMHgwNUYwLA0KKyAgICAweDRGOTgsIDB4NEY5QSwgMHgyODBBLCAweDRGOUIsIDB4NEY5QiwgMHgwNzAyLCAweDRGOUMsIDB4NEY5QywgMHgyODBELA0KKyAgICAweDRGOUQsIDB4NEY5RCwgMHgxMDQ3LCAweDRGOUUsIDB4NEY5RiwgMHgyODBFLCAweDRGQTAsIDB4NEZBMCwgMHgwRjJELA0KKyAgICAweDRGQTEsIDB4NEZBMiwgMHgyODEwLCAweDRGQTMsIDB4NEZBMywgMHgwQTY5LCAweDRGQTQsIDB4NEZBNCwgMHgyODEyLA0KKyAgICAweDRGQTUsIDB4NEZBNSwgMHgwODk1LCAweDRGQTYsIDB4NEZBNiwgMHgxMThELCAweDRGQTcsIDB4NEZBNywgMHgwNEE3LA0KKyAgICAweDRGQTgsIDB4NEZBOCwgMHgwQzQ1LCAweDRGQTksIDB4NEZBOSwgMHgwOTc4LCAweDRGQUEsIDB4NEZBQSwgMHgxMkMxLA0KKyAgICAweDRGQUIsIDB4NEZBQiwgMHgyODEzLCAweDRGQUMsIDB4NEZBQywgMHgxMkMzLCAweDRGQUQsIDB4NEZBRCwgMHgyODE0LA0KKyAgICAweDRGQUUsIDB4NEZBRSwgMHgwRUY5LCAweDRGQUYsIDB4NEZBRiwgMHgwN0E1LCAweDRGQjAsIDB4NEZCNCwgMHgyODE1LA0KKyAgICAweDRGQjUsIDB4NEZCNSwgMHgwQzUzLCAweDRGQjYsIDB4NEZCRSwgMHgyODFBLCAweDRGQkYsIDB4NEZCRiwgMHgwNDRDLA0KKyAgICAweDRGQzAsIDB4NEZDMSwgMHgyODIzLCAweDRGQzIsIDB4NEZDMiwgMHgyNjlDLCAweDRGQzMsIDB4NEZDMywgMHgwNTVDLA0KKyAgICAweDRGQzQsIDB4NEZDNCwgMHgwNjJDLCAweDRGQzUsIDB4NEZDNSwgMHgxMkM4LCAweDRGQzYsIDB4NEZDOSwgMHgyODI1LA0KKyAgICAweDRGQ0EsIDB4NEZDQSwgMHgwOTJFLCAweDRGQ0IsIDB4NEZDRCwgMHgyODI5LCAweDRGQ0UsIDB4NEZDRSwgMHgxMkYyLA0KKyAgICAweDRGQ0YsIDB4NEZDRiwgMHgwQzRCLCAweDRGRDAsIDB4NEZEMCwgMHgwOUU5LCAweDRGRDEsIDB4NEZEMSwgMHgxMkNDLA0KKyAgICAweDRGRDIsIDB4NEZENiwgMHgyODJDLCAweDRGRDcsIDB4NEZENywgMHgwRENDLCAweDRGRDgsIDB4NEZEOCwgMHgwNjlBLA0KKyAgICAweDRGRDksIDB4NEZEOSwgMHgyODMxLCAweDRGREEsIDB4NEZEQSwgMHgxMkM5LCAweDRGREIsIDB4NEZEQiwgMHgyODMyLA0KKyAgICAweDRGREMsIDB4NEZEQywgMHgxMkNCLCAweDRGREQsIDB4NEZERCwgMHgwNDBDLCAweDRGREUsIDB4NEZERSwgMHgxMEM2LA0KKyAgICAweDRGREYsIDB4NEZERiwgMHgxMkNELCAweDRGRTAsIDB4NEZFMCwgMHgyMUI1LCAweDRGRTEsIDB4NEZFMSwgMHgwRjkwLA0KKyAgICAweDRGRTIsIDB4NEZFMiwgMHgyODMzLCAweDRGRTMsIDB4NEZFMywgMHgxMkNBLCAweDRGRTQsIDB4NEZFNSwgMHgyODM0LA0KKyAgICAweDRGRTYsIDB4NEZFNiwgMHgxMkM1LCAweDRGRTcsIDB4NEZFNywgMHgyODM2LCAweDRGRTgsIDB4NEZFOCwgMHgxMkM2LA0KKyAgICAweDRGRTksIDB4NEZFOSwgMHgwOUYyLCAweDRGRUEsIDB4NEZFQSwgMHgxMkM3LCAweDRGRUIsIDB4NEZFQywgMHgyODM3LA0KKyAgICAweDRGRUQsIDB4NEZFRCwgMHgwODY2LCAweDRGRUUsIDB4NEZFRSwgMHgwRkE5LCAweDRGRUYsIDB4NEZFRiwgMHgwNkE0LA0KKyAgICAweDRGRjAsIDB4NEZGMCwgMHgyODM5LCAweDRGRjEsIDB4NEZGMSwgMHgwOTEyLCAweDRGRjIsIDB4NEZGMiwgMHgyODNBLA0KKyAgICAweDRGRjMsIDB4NEZGMywgMHgxMkQxLCAweDRGRjQsIDB4NEZGNywgMHgyODNCLCAweDRGRjgsIDB4NEZGOCwgMHgxMkNFLA0KKyAgICAweDRGRjksIDB4NEZGOSwgMHgyODNGLCAweDRGRkEsIDB4NEZGQSwgMHgwM0JFLCAweDRGRkIsIDB4NEZGRCwgMHgyODQwLA0KKyAgICAweDRGRkUsIDB4NEZGRSwgMHgxMkQ2LCAweDRGRkYsIDB4NEZGRiwgMHgyODQzLCAweDUwMDAsIDB4NTAwMCwgMHgyMkNDLA0KKyAgICAweDUwMDEsIDB4NTAwNSwgMHgyODQ0LCAweDUwMDYsIDB4NTAwNiwgMHgyMDE2LCAweDUwMDcsIDB4NTAwOCwgMHgyODQ5LA0KKyAgICAweDUwMDksIDB4NTAwOSwgMHgxRTYyLCAweDUwMEEsIDB4NTAwQSwgMHgyODRCLCAweDUwMEIsIDB4NTAwQiwgMHgxRjIwLA0KKyAgICAweDUwMEMsIDB4NTAwQywgMHgxMkQ4LCAweDUwMEQsIDB4NTAwRCwgMHgwNDFGLCAweDUwMEUsIDB4NTAwRSwgMHgyODRDLA0KKyAgICAweDUwMEYsIDB4NTAwRiwgMHgxMkQzLCAweDUwMTAsIDB4NTAxMCwgMHgyODRELCAweDUwMTEsIDB4NTAxMSwgMHgyMDdGLA0KKyAgICAweDUwMTIsIDB4NTAxMiwgMHgwNTlBLCAweDUwMTMsIDB4NTAxMywgMHgyODRFLCAweDUwMTQsIDB4NTAxNCwgMHgwOTIyLA0KKyAgICAweDUwMTUsIDB4NTAxNywgMHgyODRGLCAweDUwMTgsIDB4NTAxOCwgMHgwRTFCLCAweDUwMTksIDB4NTAxOSwgMHgwN0E5LA0KKyAgICAweDUwMUEsIDB4NTAxQSwgMHgxMDU3LCAweDUwMUIsIDB4NTAxQiwgMHgyODUyLCAweDUwMUMsIDB4NTAxQywgMHgxMkQ3LA0KKyAgICAweDUwMUQsIDB4NTAxRSwgMHgyODUzLCAweDUwMUYsIDB4NTAxRiwgMHgwOEI5LCAweDUwMjAsIDB4NTAyMCwgMHgyODU1LA0KKyAgICAweDUwMjEsIDB4NTAyMSwgMHgwNEQwLCAweDUwMjIsIDB4NTAyNCwgMHgyODU2LCAweDUwMjUsIDB4NTAyNSwgMHgxMkQ5LA0KKyAgICAweDUwMjYsIDB4NTAyNiwgMHgwOTFBLCAweDUwMjcsIDB4NTAyNywgMHgyODU5LCAweDUwMjgsIDB4NTAyOCwgMHgxMkRBLA0KKyAgICAweDUwMjksIDB4NTAyOSwgMHgxMkNGLCAweDUwMkEsIDB4NTAyQSwgMHgwQjQyLCAweDUwMkIsIDB4NTAyQiwgMHgyMDVDLA0KKyAgICAweDUwMkMsIDB4NTAyQywgMHgxMkQyLCAweDUwMkQsIDB4NTAyRCwgMHgxMkQ1LCAweDUwMkUsIDB4NTAyRSwgMHgxMkQ0LA0KKyAgICAweDUwMkYsIDB4NTAzOSwgMHgyODVBLCAweDUwM0EsIDB4NTAzQSwgMHgxMTRGLCAweDUwM0IsIDB4NTAzQiwgMHgyODY1LA0KKyAgICAweDUwM0MsIDB4NTAzQywgMHgxMUI0LCAweDUwM0QsIDB4NTAzRCwgMHgyODY2LCAweDUwM0UsIDB4NTAzRSwgMHgwQzYwLA0KKyAgICAweDUwM0YsIDB4NTA0MiwgMHgyODY3LCAweDUwNDMsIDB4NTA0MywgMHgxMkRDLCAweDUwNDQsIDB4NTA0NiwgMHgyODZCLA0KKyAgICAweDUwNDcsIDB4NTA0NywgMHgwODRDLCAweDUwNDgsIDB4NTA0OCwgMHgxMkRFLCAweDUwNDksIDB4NTA0OSwgMHgyMTk0LA0KKyAgICAweDUwNEEsIDB4NTA0QiwgMHgyODZFLCAweDUwNEMsIDB4NTA0QywgMHgxMkQwLCAweDUwNEQsIDB4NTA0RCwgMHgyODcwLA0KKyAgICAweDUwNEUsIDB4NTA0RSwgMHgxMkRGLCAweDUwNEYsIDB4NTA0RiwgMHgwQkNBLCAweDUwNTAsIDB4NTA1NCwgMHgyODcxLA0KKyAgICAweDUwNTUsIDB4NTA1NSwgMHgxMkRELCAweDUwNTYsIDB4NTA1OSwgMHgyODc2LCAweDUwNUEsIDB4NTA1QSwgMHgxMjUzLA0KKyAgICAweDUwNUIsIDB4NTA1QiwgMHgyODdBLCAweDUwNUMsIDB4NTA1QywgMHgwRTU0LCAweDUwNUQsIDB4NTA2NCwgMHgyODdCLA0KKyAgICAweDUwNjUsIDB4NTA2NSwgMHgwODcyLCAweDUwNjYsIDB4NTA2QiwgMHgyODgzLCAweDUwNkMsIDB4NTA2QywgMHgxMkUwLA0KKyAgICAweDUwNkQsIDB4NTA3MywgMHgyODg5LCAweDUwNzQsIDB4NTA3NCwgMHgxRTY1LCAweDUwNzUsIDB4NTA3NSwgMHgyMjgxLA0KKyAgICAweDUwNzYsIDB4NTA3NiwgMHgwQjdELCAweDUwNzcsIDB4NTA3NywgMHgwRTY2LCAweDUwNzgsIDB4NTA3QSwgMHgyODkwLA0KKyAgICAweDUwN0IsIDB4NTA3QiwgMHgxMkUxLCAweDUwN0MsIDB4NTA3RCwgMHgyODkzLCAweDUwN0UsIDB4NTA3RSwgMHgxMkRCLA0KKyAgICAweDUwN0YsIDB4NTA3RiwgMHgwNENBLCAweDUwODAsIDB4NTA4MCwgMHgwOThCLCAweDUwODEsIDB4NTA4NCwgMHgyODk1LA0KKyAgICAweDUwODUsIDB4NTA4NSwgMHgwNkIwLCAweDUwODYsIDB4NTA4NywgMHgyODk5LCAweDUwODgsIDB4NTA4OCwgMHgwOUU3LA0KKyAgICAweDUwODksIDB4NTA4QywgMHgyODlCLCAweDUwOEQsIDB4NTA4RCwgMHgwNDAzLCAweDUwOEUsIDB4NTA5NSwgMHgyODlGLA0KKyAgICAweDUwOTYsIDB4NTA5NiwgMHgyMkNELCAweDUwOTcsIDB4NTA5NywgMHgyOEE3LCAweDUwOTgsIDB4NTA5OCwgMHgyMTBBLA0KKyAgICAweDUwOTksIDB4NTA5OSwgMHgxRTNFLCAweDUwOUEsIDB4NTBBMSwgMHgyOEE4LCAweDUwQTIsIDB4NTBBMiwgMHgyNjdGLA0KKyAgICAweDUwQTMsIDB4NTBBMywgMHgwNTc5LCAweDUwQTQsIDB4NTBBNCwgMHgyOEIwLCAweDUwQTUsIDB4NTBBNSwgMHgxMkUyLA0KKyAgICAweDUwQTYsIDB4NTBBNiwgMHgyOEIxLCAweDUwQTcsIDB4NTBBNywgMHgxMkUzLCAweDUwQTgsIDB4NTBBOCwgMHgwNTI1LA0KKyAgICAweDUwQTksIDB4NTBBOSwgMHgxMkU0LCAweDUwQUEsIDB4NTBBQiwgMHgyOEIyLCAweDUwQUMsIDB4NTBBQywgMHgwNTYyLA0KKyAgICAweDUwQUQsIDB4NTBBRCwgMHgyMjJFLCAweDUwQUUsIDB4NTBCMSwgMHgyOEI0LCAweDUwQjIsIDB4NTBCMiwgMHgwM0NDLA0KKyAgICAweDUwQjMsIDB4NTBCMywgMHgxRTk2LCAweDUwQjQsIDB4NTBCNCwgMHgyMkNCLCAweDUwQjUsIDB4NTBCNSwgMHgyMjZDLA0KKyAgICAweDUwQjYsIDB4NTBCNiwgMHgyOEI4LCAweDUwQjcsIDB4NTBCNywgMHgyMTE3LCAweDUwQjgsIDB4NTBCOSwgMHgyOEI5LA0KKyAgICAweDUwQkEsIDB4NTBCQSwgMHgxMkU1LCAweDUwQkIsIDB4NTBCQiwgMHgwQ0VFLCAweDUwQkMsIDB4NTBCRCwgMHgyOEJCLA0KKyAgICAweDUwQkUsIDB4NTBCRSwgMHgyMEU4LCAweDUwQkYsIDB4NTBDMSwgMHgyOEJELCAweDUwQzIsIDB4NTBDMiwgMHgyMkQ0LA0KKyAgICAweDUwQzMsIDB4NTBDNCwgMHgyOEMwLCAweDUwQzUsIDB4NTBDNSwgMHgxRkI5LCAweDUwQzYsIDB4NTBDOCwgMHgyOEMyLA0KKyAgICAweDUwQzksIDB4NTBDOSwgMHgyMkQ4LCAweDUwQ0EsIDB4NTBDRSwgMHgyOEM1LCAweDUwQ0YsIDB4NTBDRiwgMHgwRjVFLA0KKyAgICAweDUwRDAsIDB4NTBEMCwgMHgyOENBLCAweDUwRDEsIDB4NTBEMSwgMHgyMERGLCAweDUwRDIsIDB4NTBENCwgMHgyOENCLA0KKyAgICAweDUwRDUsIDB4NTBENSwgMHgyMEMyLCAweDUwRDYsIDB4NTBENiwgMHgxMkU2LCAweDUwRDcsIDB4NTBEOSwgMHgyOENFLA0KKyAgICAweDUwREEsIDB4NTBEQSwgMHgwQTBFLCAweDUwREIsIDB4NTBERCwgMHgyOEQxLCAweDUwREUsIDB4NTBERSwgMHgyMTk1LA0KKyAgICAweDUwREYsIDB4NTBFNCwgMHgyOEQ0LCAweDUwRTUsIDB4NTBFNSwgMHgxRkFDLCAweDUwRTYsIDB4NTBFNiwgMHgxMkVBLA0KKyAgICAweDUwRTcsIDB4NTBFNywgMHgwQ0U3LCAweDUwRTgsIDB4NTBFOCwgMHgyMkQzLCAweDUwRTksIDB4NTBFQiwgMHgyOERBLA0KKyAgICAweDUwRUMsIDB4NTBFQywgMHgxMkU5LCAweDUwRUQsIDB4NTBFRCwgMHgxMkU4LCAweDUwRUUsIDB4NTBFRSwgMHgxMkVCLA0KKyAgICAweDUwRUYsIDB4NTBGMiwgMHgyOERELCAweDUwRjMsIDB4NTBGMywgMHgwREQwLCAweDUwRjQsIDB4NTBGNCwgMHgyOEUxLA0KKyAgICAweDUwRjUsIDB4NTBGNSwgMHgwODdBLCAweDUwRjYsIDB4NTBGOCwgMHgyOEUyLCAweDUwRjksIDB4NTBGOSwgMHgxRjgxLA0KKyAgICAweDUwRkEsIDB4NTBGQSwgMHgyOEU1LCAweDUwRkIsIDB4NTBGQiwgMHgwQkM2LCAweDUwRkMsIDB4NTBGRiwgMHgyOEU2LA0KKyAgICAweDUxMDAsIDB4NTEwMCwgMHgyMjEwLCAweDUxMDEsIDB4NTEwMSwgMHgyOEVBLCAweDUxMDIsIDB4NTEwMiwgMHgyMkNGLA0KKyAgICAweDUxMDMsIDB4NTEwMywgMHgyOEVCLCAweDUxMDQsIDB4NTEwNCwgMHgyMjEzLCAweDUxMDUsIDB4NTEwNSwgMHgyOEVDLA0KKyAgICAweDUxMDYsIDB4NTEwNiwgMHgxMkU3LCAweDUxMDcsIDB4NTEwNywgMHgxMkVDLCAweDUxMDgsIDB4NTEwOCwgMHgxRkU0LA0KKyAgICAweDUxMDksIDB4NTEwOSwgMHgxRjkwLCAweDUxMEEsIDB4NTEwQSwgMHgyOEVELCAweDUxMEIsIDB4NTEwQiwgMHgxMkVELA0KKyAgICAweDUxMEMsIDB4NTEwRiwgMHgyOEVFLCAweDUxMTAsIDB4NTExMCwgMHgyMkQ2LCAweDUxMTEsIDB4NTExMSwgMHgyOEYyLA0KKyAgICAweDUxMTIsIDB4NTExMiwgMHgwQ0MwLCAweDUxMTMsIDB4NTExMywgMHgyOEYzLCAweDUxMTQsIDB4NTExNCwgMHgyMkQwLA0KKyAgICAweDUxMTUsIDB4NTExNSwgMHgyMkNFLCAweDUxMTYsIDB4NTExNywgMHgyOEY0LCAweDUxMTgsIDB4NTExOCwgMHgyNjgxLA0KKyAgICAweDUxMTksIDB4NTExRSwgMHgyOEY2LCAweDUxMUYsIDB4NTExRiwgMHgxRTc2LCAweDUxMjAsIDB4NTEyMCwgMHgyOEZDLA0KKyAgICAweDUxMjEsIDB4NTEyMSwgMHgwOUM3LCAweDUxMjIsIDB4NTEyOSwgMHgyOEZELCAweDUxMkEsIDB4NTEyQSwgMHgyMjMxLA0KKyAgICAweDUxMkIsIDB4NTEzMSwgMHgyOTA1LCAweDUxMzIsIDB4NTEzMiwgMHgxRTkzLCAweDUxMzMsIDB4NTEzNiwgMHgyOTBDLA0KKyAgICAweDUxMzcsIDB4NTEzNywgMHgyMkQyLCAweDUxMzgsIDB4NTEzOSwgMHgyOTEwLCAweDUxM0EsIDB4NTEzQSwgMHgyMkQ3LA0KKyAgICAweDUxM0IsIDB4NTEzQiwgMHgyMkQ1LCAweDUxM0MsIDB4NTEzQywgMHgyMkQxLCAweDUxM0QsIDB4NTEzRSwgMHgyOTEyLA0KKyAgICAweDUxM0YsIDB4NTEzRiwgMHgwNjM4LCAweDUxNDAsIDB4NTE0MCwgMHgxMjU5LCAweDUxNDEsIDB4NTE0MSwgMHgxMTBELA0KKyAgICAweDUxNDIsIDB4NTE0MiwgMHgyOTE0LCAweDUxNDMsIDB4NTE0MywgMHgxMEVELCAweDUxNDQsIDB4NTE0NCwgMHgwRkExLA0KKyAgICAweDUxNDUsIDB4NTE0NSwgMHgwNTA5LCAweDUxNDYsIDB4NTE0NiwgMHgxMTc4LCAweDUxNDcsIDB4NTE0NywgMHgyOTE1LA0KKyAgICAweDUxNDgsIDB4NTE0OCwgMHgwRjM1LCAweDUxNDksIDB4NTE0OSwgMHgwNzNCLCAweDUxNEEsIDB4NTE0QSwgMHgyOTE2LA0KKyAgICAweDUxNEIsIDB4NTE0QiwgMHgwOTU4LCAweDUxNEMsIDB4NTE0QywgMHgyOTE3LCAweDUxNEQsIDB4NTE0RCwgMHgwQUU3LA0KKyAgICAweDUxNEUsIDB4NTE1MCwgMHgyOTE4LCAweDUxNTEsIDB4NTE1MSwgMHgwNjExLCAweDUxNTIsIDB4NTE1MiwgMHgxRUU1LA0KKyAgICAweDUxNTMsIDB4NTE1MywgMHgyOTFCLCAweDUxNTQsIDB4NTE1NCwgMHgwRTc0LCAweDUxNTUsIDB4NTE1NSwgMHgxMzAyLA0KKyAgICAweDUxNTYsIDB4NTE1NiwgMHgxMzA0LCAweDUxNTcsIDB4NTE1OSwgMHgyOTFDLCAweDUxNUEsIDB4NTE1QSwgMHgwNTk0LA0KKyAgICAweDUxNUIsIDB4NTE1QiwgMHgyOTFGLCAweDUxNUMsIDB4NTE1QywgMHgwNUY0LCAweDUxNUQsIDB4NTE2MSwgMHgyOTIwLA0KKyAgICAweDUxNjIsIDB4NTE2MiwgMHgwOEQzLCAweDUxNjMsIDB4NTE2NCwgMHgyOTI1LCAweDUxNjUsIDB4NTE2NSwgMHgwQ0M2LA0KKyAgICAweDUxNjYsIDB4NTE2NywgMHgyOTI3LCAweDUxNjgsIDB4NTE2OCwgMHgwQzg2LCAweDUxNjksIDB4NTE2OSwgMHgyMDI1LA0KKyAgICAweDUxNkEsIDB4NTE2QSwgMHgyOTI5LCAweDUxNkIsIDB4NTE2QiwgMHgwM0Q2LCAweDUxNkMsIDB4NTE2QywgMHgwNzA0LA0KKyAgICAweDUxNkQsIDB4NTE2RCwgMHgwQTQyLCAweDUxNkUsIDB4NTE2RSwgMHgxMkY2LCAweDUxNkYsIDB4NTE2RiwgMHgyOTJBLA0KKyAgICAweDUxNzAsIDB4NTE3MCwgMHgwOUE3LCAweDUxNzEsIDB4NTE3MSwgMHgwNzBCLCAweDUxNzIsIDB4NTE3MiwgMHgyOTJCLA0KKyAgICAweDUxNzMsIDB4NTE3MywgMHgwNzMxLCAweDUxNzQsIDB4NTE3NCwgMHgwRjk2LCAweDUxNzUsIDB4NTE3NSwgMHgwNDYxLA0KKyAgICAweDUxNzYsIDB4NTE3NiwgMHgwQzAzLCAweDUxNzcsIDB4NTE3NywgMHgwOTBFLCAweDUxNzgsIDB4NTE3OCwgMHgwNUM1LA0KKyAgICAweDUxNzksIDB4NTE3OSwgMHgxMjI1LCAweDUxN0EsIDB4NTE3QSwgMHgyOTJDLCAweDUxN0IsIDB4NTE3QiwgMHgxMDIxLA0KKyAgICAweDUxN0MsIDB4NTE3QywgMHgwODU5LCAweDUxN0QsIDB4NTE3RCwgMHgwRDc1LCAweDUxN0UsIDB4NTE3RiwgMHgyOTJELA0KKyAgICAweDUxODAsIDB4NTE4MCwgMHgwODMwLCAweDUxODEsIDB4NTE4MSwgMHgxMkZBLCAweDUxODIsIDB4NTE4MiwgMHgxMjlELA0KKyAgICAweDUxODMsIDB4NTE4NCwgMHgyOTJGLCAweDUxODUsIDB4NTE4NSwgMHgwQjNELCAweDUxODYsIDB4NTE4NywgMHgyOTMxLA0KKyAgICAweDUxODgsIDB4NTE4OCwgMHgwNkNGLCAweDUxODksIDB4NTE4OSwgMHgwQzk4LCAweDUxOEEsIDB4NTE4QiwgMHgyOTMzLA0KKyAgICAweDUxOEMsIDB4NTE4QywgMHgwNEE4LCAweDUxOEQsIDB4NTE4RCwgMHgxMTFDLCAweDUxOEUsIDB4NTE5MSwgMHgyOTM1LA0KKyAgICAweDUxOTIsIDB4NTE5MiwgMHgwQUI1LCAweDUxOTMsIDB4NTE5NCwgMHgyOTM5LCAweDUxOTUsIDB4NTE5NSwgMHgwQUU2LA0KKyAgICAweDUxOTYsIDB4NTE5NiwgMHgxMzE0LCAweDUxOTcsIDB4NTE5NywgMHgwQ0JBLCAweDUxOTgsIDB4NTE5OCwgMHgyOTNCLA0KKyAgICAweDUxOTksIDB4NTE5OSwgMHgwRjdGLCAweDUxOUEsIDB4NTE5QSwgMHgyOTNDLCAweDUxOUIsIDB4NTE5QiwgMHgwOTJCLA0KKyAgICAweDUxOUMsIDB4NTE5QywgMHgwQjZBLCAweDUxOUQsIDB4NTE5RiwgMHgyOTNELCAweDUxQTAsIDB4NTFBMCwgMHgwNzMzLA0KKyAgICAweDUxQTEsIDB4NTFBMSwgMHgyOTQwLCAweDUxQTIsIDB4NTFBMiwgMHgxMzE1LCAweDUxQTMsIDB4NTFBMywgMHgyOTQxLA0KKyAgICAweDUxQTQsIDB4NTFBNCwgMHgxMEVDLCAweDUxQTUsIDB4NTFBNSwgMHgxMzE2LCAweDUxQTYsIDB4NTFBQSwgMHgyOTQyLA0KKyAgICAweDUxQUIsIDB4NTFBQiwgMHgxMzBGLCAweDUxQUMsIDB4NTFBQywgMHgwNUVCLCAweDUxQUQsIDB4NTFBRSwgMHgyOTQ3LA0KKyAgICAweDUxQUYsIDB4NTFBRiwgMHgwNjg4LCAweDUxQjAsIDB4NTFCMCwgMHgwNDYyLCAweDUxQjEsIDB4NTFCMSwgMHgxMzEwLA0KKyAgICAweDUxQjIsIDB4NTFCMiwgMHgwNTBBLCAweDUxQjMsIDB4NTFCMywgMHgwOTI1LCAweDUxQjQsIDB4NTFCNCwgMHgyOTQ5LA0KKyAgICAweDUxQjUsIDB4NTFCNSwgMHgwOTgzLCAweDUxQjYsIDB4NTFCNiwgMHgxMDM4LCAweDUxQjcsIDB4NTFCNywgMHgwOUNGLA0KKyAgICAweDUxQjgsIDB4NTFCQSwgMHgyOTRBLCAweDUxQkIsIDB4NTFCQiwgMHgwNUYyLCAweDUxQkMsIDB4NTFCQywgMHgxMzEyLA0KKyAgICAweDUxQkQsIDB4NTFCRCwgMHgxMzExLCAweDUxQkUsIDB4NTFCRiwgMHgyOTRELCAweDUxQzAsIDB4NTFDMCwgMHgwOEVBLA0KKyAgICAweDUxQzEsIDB4NTFDMywgMHgyOTRGLCAweDUxQzQsIDB4NTFDNCwgMHgwQkZGLCAweDUxQzUsIDB4NTFDNSwgMHgyOTUyLA0KKyAgICAweDUxQzYsIDB4NTFDNiwgMHgxMjE5LCAweDUxQzcsIDB4NTFDNywgMHgxMzEzLCAweDUxQzgsIDB4NTFDOCwgMHgyOTUzLA0KKyAgICAweDUxQzksIDB4NTFDOSwgMHgwQTAyLCAweDUxQ0EsIDB4NTFDQSwgMHgyOTU0LCAweDUxQ0IsIDB4NTFDQiwgMHgwNUQzLA0KKyAgICAweDUxQ0MsIDB4NTFDQywgMHgwQTMxLCAweDUxQ0QsIDB4NTFDRCwgMHgxRUNGLCAweDUxQ0UsIDB4NTFDRSwgMHgyOTU1LA0KKyAgICAweDUxQ0YsIDB4NTFDRiwgMHgwODY4LCAweDUxRDAsIDB4NTFEMCwgMHgyOTU2LCAweDUxRDEsIDB4NTFEMSwgMHgwNTU4LA0KKyAgICAweDUxRDIsIDB4NTFEQSwgMHgyOTU3LCAweDUxREIsIDB4NTFEQiwgMHgwQTI2LCAweDUxREMsIDB4NTFEQywgMHgyOTYwLA0KKyAgICAweDUxREQsIDB4NTFERCwgMHgwQjYwLCAweDUxREUsIDB4NTFERiwgMHgyOTYxLCAweDUxRTAsIDB4NTFFMCwgMHgwODJCLA0KKyAgICAweDUxRTEsIDB4NTFFMSwgMHgwNjRGLCAweDUxRTIsIDB4NTFFMywgMHgyOTYzLCAweDUxRTQsIDB4NTFFNCwgMHgwNjhDLA0KKyAgICAweDUxRTUsIDB4NTFFQSwgMHgyOTY1LCAweDUxRUIsIDB4NTFFQiwgMHgxMzAwLCAweDUxRUMsIDB4NTFFQywgMHgyOTZCLA0KKyAgICAweDUxRUQsIDB4NTFFRCwgMHgwQkRELCAweDUxRUUsIDB4NTFFRSwgMHgyOTZDLCAweDUxRUYsIDB4NTFFRiwgMHgwOTNBLA0KKyAgICAweDUxRjAsIDB4NTFGMCwgMHgwN0UwLCAweDUxRjEsIDB4NTFGMSwgMHgxRkQ5LCAweDUxRjIsIDB4NTFGMiwgMHgyOTZELA0KKyAgICAweDUxRjMsIDB4NTFGMywgMHgwNUFCLCAweDUxRjQsIDB4NTFGNCwgMHgyOTZFLCAweDUxRjUsIDB4NTFGNSwgMHgxMzk5LA0KKyAgICAweDUxRjYsIDB4NTFGNiwgMHgwRkEyLCAweDUxRjcsIDB4NTFGNywgMHgyOTZGLCAweDUxRjgsIDB4NTFGOCwgMHgwRTZBLA0KKyAgICAweDUxRjksIDB4NTFGOSwgMHgwM0M3LCAweDUxRkEsIDB4NTFGQSwgMHgwNTFCLCAweDUxRkIsIDB4NTFGQiwgMHgwODBDLA0KKyAgICAweDUxRkMsIDB4NTFGQywgMHgxMzlBLCAweDUxRkQsIDB4NTFGRCwgMHgwNzY2LCAweDUxRkUsIDB4NTFGRSwgMHgyOTcwLA0KKyAgICAweDUxRkYsIDB4NTFGRiwgMHgxMTI3LCAweDUyMDAsIDB4NTIwMCwgMHgwNTk3LCAweDUyMDEsIDB4NTIwMSwgMHgwNUQ0LA0KKyAgICAweDUyMDIsIDB4NTIwMiwgMHgxMjhDLCAweDUyMDMsIDB4NTIwMywgMHgwQ0FCLCAweDUyMDQsIDB4NTIwNSwgMHgyOTcxLA0KKyAgICAweDUyMDYsIDB4NTIwNiwgMHgwNjczLCAweDUyMDcsIDB4NTIwNywgMHgwQzRELCAweDUyMDgsIDB4NTIwOCwgMHgxMjhELA0KKyAgICAweDUyMDksIDB4NTIwOSwgMHgyOTczLCAweDUyMEEsIDB4NTIwQSwgMHgwOTNDLCAweDUyMEIsIDB4NTIwQywgMHgyOTc0LA0KKyAgICAweDUyMEQsIDB4NTIwRCwgMHgxMzhCLCAweDUyMEUsIDB4NTIwRSwgMHgxMjhFLCAweDUyMEYsIDB4NTIxMCwgMHgyOTc2LA0KKyAgICAweDUyMTEsIDB4NTIxMSwgMHgwRjk3LCAweDUyMTIsIDB4NTIxMiwgMHgwN0MzLCAweDUyMTMsIDB4NTIxNSwgMHgyOTc4LA0KKyAgICAweDUyMTYsIDB4NTIxNiwgMHgxOTZFLCAweDUyMTcsIDB4NTIxNywgMHgwQTE5LCAweDUyMTgsIDB4NTIxOCwgMHgwQTNFLA0KKyAgICAweDUyMTksIDB4NTIxOSwgMHgxMTM1LCAweDUyMUEsIDB4NTIxQSwgMHgwNkQwLCAweDUyMUIsIDB4NTIxQiwgMHgwNTM3LA0KKyAgICAweDUyMUMsIDB4NTIxQywgMHgyOTdCLCAweDUyMUQsIDB4NTIxRCwgMHgwNTFBLCAweDUyMUUsIDB4NTIxRiwgMHgyOTdDLA0KKyAgICAweDUyMjAsIDB4NTIyMCwgMHgwQ0Y3LCAweDUyMjEsIDB4NTIyMywgMHgyOTdFLCAweDUyMjQsIDB4NTIyNCwgMHgwQjkxLA0KKyAgICAweDUyMjUsIDB4NTIyNywgMHgyOTgxLCAweDUyMjgsIDB4NTIyOCwgMHgwQjlBLCAweDUyMjksIDB4NTIyOSwgMHgwOUU2LA0KKyAgICAweDUyMkEsIDB4NTIyQSwgMHgyOTg0LCAweDUyMkIsIDB4NTIyQiwgMHgwNDU5LCAweDUyMkMsIDB4NTIyQywgMHgyOTg1LA0KKyAgICAweDUyMkQsIDB4NTIyRCwgMHgxMjhGLCAweDUyMkUsIDB4NTIyRSwgMHgwNzI3LCAweDUyMkYsIDB4NTIyRiwgMHgyOTg2LA0KKyAgICAweDUyMzAsIDB4NTIzMCwgMHgwNTlFLCAweDUyMzEsIDB4NTIzMiwgMHgyOTg3LCAweDUyMzMsIDB4NTIzMywgMHgxMjkwLA0KKyAgICAweDUyMzQsIDB4NTIzNSwgMHgyOTg5LCAweDUyMzYsIDB4NTIzNiwgMHgxMUM1LCAweDUyMzcsIDB4NTIzNywgMHgwRDk3LA0KKyAgICAweDUyMzgsIDB4NTIzOCwgMHgwQzhBLCAweDUyMzksIDB4NTIzOSwgMHgwQ0VCLCAweDUyM0EsIDB4NTIzQSwgMHgwNTRGLA0KKyAgICAweDUyM0IsIDB4NTIzQiwgMHgwOTU5LCAweDUyM0MsIDB4NTIzQywgMHgyOThCLCAweDUyM0QsIDB4NTIzRCwgMHgwNzRELA0KKyAgICAweDUyM0UsIDB4NTIzRSwgMHgyOThDLCAweDUyM0YsIDB4NTI0MCwgMHgxMjkxLCAweDUyNDEsIDB4NTI0MSwgMHgwNjI2LA0KKyAgICAweDUyNDIsIDB4NTI0MiwgMHgwODM0LCAweDUyNDMsIDB4NTI0MywgMHgwRTNELCAweDUyNDQsIDB4NTI0NCwgMHgyMkM4LA0KKyAgICAweDUyNDUsIDB4NTI0NiwgMHgyOThELCAweDUyNDcsIDB4NTI0NywgMHgyMjYzLCAweDUyNDgsIDB4NTI0OSwgMHgyOThGLA0KKyAgICAweDUyNEEsIDB4NTI0QSwgMHgwRjY0LCAweDUyNEIsIDB4NTI0QiwgMHgyNjgzLCAweDUyNEMsIDB4NTI0QywgMHgxMjkzLA0KKyAgICAweDUyNEQsIDB4NTI0RCwgMHgwQzJELCAweDUyNEUsIDB4NTI0RiwgMHgyOTkxLCAweDUyNTAsIDB4NTI1MCwgMHgwNzI5LA0KKyAgICAweDUyNTEsIDB4NTI1MSwgMHgwODc0LCAweDUyNTIsIDB4NTI1MywgMHgyOTkzLCAweDUyNTQsIDB4NTI1NCwgMHgwRTMxLA0KKyAgICAweDUyNTUsIDB4NTI1NSwgMHgyOTk1LCAweDUyNTYsIDB4NTI1NiwgMHgwQkU5LCAweDUyNTcsIDB4NTI1QSwgMHgyOTk2LA0KKyAgICAweDUyNUIsIDB4NTI1QiwgMHgxRjE3LCAweDUyNUMsIDB4NTI1QywgMHgxMjk2LCAweDUyNUQsIDB4NTI1RCwgMHgyOTlBLA0KKyAgICAweDUyNUUsIDB4NTI1RSwgMHgxMjk0LCAweDUyNUYsIDB4NTI2MCwgMHgyOTlCLCAweDUyNjEsIDB4NTI2MSwgMHgxMjk1LA0KKyAgICAweDUyNjIsIDB4NTI2NCwgMHgyOTlELCAweDUyNjUsIDB4NTI2NSwgMHgwNDA5LCAweDUyNjYsIDB4NTI2NiwgMHgyOUEwLA0KKyAgICAweDUyNjcsIDB4NTI2NywgMHgwOTE2LCAweDUyNjgsIDB4NTI2OCwgMHgyOUExLCAweDUyNjksIDB4NTI2OSwgMHgwRDNBLA0KKyAgICAweDUyNkEsIDB4NTI2QSwgMHgwODY3LCAweDUyNkIsIDB4NTI2RCwgMHgyOUEyLCAweDUyNkUsIDB4NTI2RSwgMHgxRjJCLA0KKyAgICAweDUyNkYsIDB4NTI2RiwgMHgwNkFDLCAweDUyNzAsIDB4NTI3MSwgMHgyOUE1LCAweDUyNzIsIDB4NTI3MiwgMHgwNkU5LA0KKyAgICAweDUyNzMsIDB4NTI3MywgMHgyOUE3LCAweDUyNzQsIDB4NTI3NCwgMHgyMkNBLCAweDUyNzUsIDB4NTI3NSwgMHgxRTk5LA0KKyAgICAweDUyNzYsIDB4NTI3QywgMHgyOUE4LCAweDUyN0QsIDB4NTI3RCwgMHgxMjk4LCAweDUyN0UsIDB4NTI3RSwgMHgyOUFGLA0KKyAgICAweDUyN0YsIDB4NTI3RiwgMHgwODlDLCAweDUyODAsIDB4NTI4MCwgMHgyOUIwLCAweDUyODEsIDB4NTI4MSwgMHgxMjlBLA0KKyAgICAweDUyODIsIDB4NTI4MiwgMHgxMjk5LCAweDUyODMsIDB4NTI4MywgMHgxRjRGLCAweDUyODQsIDB4NTI4NiwgMHgyOUIxLA0KKyAgICAweDUyODcsIDB4NTI4NywgMHgxRkNGLCAweDUyODgsIDB4NTI4OCwgMHgwQkJELCAweDUyODksIDB4NTI4OSwgMHgyMDM2LA0KKyAgICAweDUyOEEsIDB4NTI4QSwgMHgxRjNBLCAweDUyOEIsIDB4NTI4QiwgMHgyOUI0LCAweDUyOEMsIDB4NTI4QywgMHgyMkM5LA0KKyAgICAweDUyOEQsIDB4NTI4RCwgMHgxRjk5LCAweDUyOEUsIDB4NTI4RiwgMHgyOUI1LCAweDUyOTAsIDB4NTI5MCwgMHgxMjlCLA0KKyAgICAweDUyOTEsIDB4NTI5MSwgMHgxRjc1LCAweDUyOTIsIDB4NTI5MiwgMHgyOUI3LCAweDUyOTMsIDB4NTI5MywgMHgxMjlDLA0KKyAgICAweDUyOTQsIDB4NTI5QSwgMHgyOUI4LCAweDUyOUIsIDB4NTI5QiwgMHgwOUVGLCAweDUyOUMsIDB4NTI5QywgMHgyOUJGLA0KKyAgICAweDUyOUQsIDB4NTI5RCwgMHgwQzhCLCAweDUyOUUsIDB4NTI5RSwgMHgwM0Y3LCAweDUyOUYsIDB4NTI5RiwgMHgwNkZGLA0KKyAgICAweDUyQTAsIDB4NTJBMCwgMHgwODQ2LCAweDUyQTEsIDB4NTJBMSwgMHgwRjAwLCAweDUyQTIsIDB4NTJBMiwgMHgxMzhELA0KKyAgICAweDUyQTMsIDB4NTJBMywgMHgwQTFDLCAweDUyQTQsIDB4NTJBNywgMHgyOUMwLCAweDUyQTgsIDB4NTJBOCwgMHgwNUVFLA0KKyAgICAweDUyQTksIDB4NTJBOSwgMHgxMUY5LCAweDUyQUEsIDB4NTJBQSwgMHgwQjZELCAweDUyQUIsIDB4NTJBQiwgMHgwOEFBLA0KKyAgICAweDUyQUMsIDB4NTJBRCwgMHgxMzhFLCAweDUyQUUsIDB4NTJCMCwgMHgyOUM0LCAweDUyQjEsIDB4NTJCMSwgMHgwOUUzLA0KKyAgICAweDUyQjIsIDB4NTJCMiwgMHgwOEQxLCAweDUyQjMsIDB4NTJCMywgMHgwOUI4LCAweDUyQjQsIDB4NTJCRCwgMHgyOUM3LA0KKyAgICAweDUyQkUsIDB4NTJCRSwgMHgxMzkwLCAweDUyQkYsIDB4NTJCRiwgMHgwRDVELCAweDUyQzAsIDB4NTJDMCwgMHgyOUQxLA0KKyAgICAweDUyQzEsIDB4NTJDMSwgMHgxRkJFLCAweDUyQzIsIDB4NTJDMiwgMHgyOUQyLCAweDUyQzMsIDB4NTJDMywgMHgwNDcxLA0KKyAgICAweDUyQzQsIDB4NTJDNiwgMHgyOUQzLCAweDUyQzcsIDB4NTJDNywgMHgxMEE3LCAweDUyQzgsIDB4NTJDOCwgMHgyOUQ2LA0KKyAgICAweDUyQzksIDB4NTJDOSwgMHgwQUU4LCAweDUyQ0EsIDB4NTJDQSwgMHgyOUQ3LCAweDUyQ0IsIDB4NTJDQiwgMHgwRkQ0LA0KKyAgICAweDUyQ0MsIDB4NTJDRiwgMHgyOUQ4LCAweDUyRDAsIDB4NTJEMCwgMHgxMzkyLCAweDUyRDEsIDB4NTJEMSwgMHgyOURDLA0KKyAgICAweDUyRDIsIDB4NTJEMiwgMHgwOUMwLCAweDUyRDMsIDB4NTJENCwgMHgyOURELCAweDUyRDUsIDB4NTJENSwgMHgxRUNELA0KKyAgICAweDUyRDYsIDB4NTJENiwgMHgxMzkzLCAweDUyRDcsIDB4NTJENywgMHgyOURGLCAweDUyRDgsIDB4NTJEOCwgMHgwOTNFLA0KKyAgICAweDUyRDksIDB4NTJEOSwgMHgyMUE5LCAweDUyREEsIDB4NTJEQSwgMHgyOUUwLCAweDUyREIsIDB4NTJEQiwgMHgyMUU2LA0KKyAgICAweDUyREMsIDB4NTJEQywgMHgyOUUxLCAweDUyREQsIDB4NTJERCwgMHgyMTI3LCAweDUyREUsIDB4NTJERSwgMHgyMDAzLA0KKyAgICAweDUyREYsIDB4NTJERiwgMHgwQjFGLCAweDUyRTAsIDB4NTJFMSwgMHgyOUUyLCAweDUyRTIsIDB4NTJFMiwgMHgyMTMyLA0KKyAgICAweDUyRTMsIDB4NTJFMywgMHgyOUU0LCAweDUyRTQsIDB4NTJFNCwgMHgwQzU3LCAweDUyRTUsIDB4NTJFRiwgMHgyOUU1LA0KKyAgICAweDUyRjAsIDB4NTJGMCwgMHgxMzk0LCAweDUyRjEsIDB4NTJGMSwgMHgyMzIzLCAweDUyRjIsIDB4NTJGNCwgMHgyOUYwLA0KKyAgICAweDUyRjUsIDB4NTJGNSwgMHgyMDExLCAweDUyRjYsIDB4NTJGNywgMHgyOUYzLCAweDUyRjgsIDB4NTJGOCwgMHgyMEY1LA0KKyAgICAweDUyRjksIDB4NTJGOSwgMHgxMkZDLCAweDUyRkEsIDB4NTJGQSwgMHgwRDEwLCAweDUyRkIsIDB4NTJGRCwgMHgyOUY1LA0KKyAgICAweDUyRkUsIDB4NTJGRSwgMHgwNzBELCAweDUyRkYsIDB4NTJGRiwgMHgwRUZGLCAweDUzMDAsIDB4NTMwMCwgMHgxMTBCLA0KKyAgICAweDUzMDEsIDB4NTMwNCwgMHgyOUY4LCAweDUzMDUsIDB4NTMwNSwgMHgwNDA3LCAweDUzMDYsIDB4NTMwNiwgMHgwNTU1LA0KKyAgICAweDUzMDcsIDB4NTMwNywgMHgyOUZDLCAweDUzMDgsIDB4NTMwOCwgMHgwRkE0LCAweDUzMDksIDB4NTMwQywgMHgyOUZELA0KKyAgICAweDUzMEQsIDB4NTMwRCwgMHgxMkZELCAweDUzMEUsIDB4NTMwRSwgMHgyQTAxLCAweDUzMEYsIDB4NTMwRiwgMHgxNEI1LA0KKyAgICAweDUzMTAsIDB4NTMxMCwgMHgxMkZGLCAweDUzMTEsIDB4NTMxNCwgMHgyQTAyLCAweDUzMTUsIDB4NTMxNSwgMHgxMjY2LA0KKyAgICAweDUzMTYsIDB4NTMxNiwgMHgwN0M0LCAweDUzMTcsIDB4NTMxNywgMHgwNDFBLCAweDUzMTgsIDB4NTMxOCwgMHgyQTA2LA0KKyAgICAweDUzMTksIDB4NTMxOSwgMHgwNEZDLCAweDUzMUEsIDB4NTMxQSwgMHgxMjg0LCAweDUzMUIsIDB4NTMxQywgMHgyQTA3LA0KKyAgICAweDUzMUQsIDB4NTMxRCwgMHgxMTE0LCAweDUzMUUsIDB4NTMxRiwgMHgyQTA5LCAweDUzMjAsIDB4NTMyMCwgMHgwODg0LA0KKyAgICAweDUzMjEsIDB4NTMyMSwgMHgwOTdDLCAweDUzMjIsIDB4NTMyMiwgMHgyQTBCLCAweDUzMjMsIDB4NTMyMywgMHgwRjI4LA0KKyAgICAweDUzMjQsIDB4NTMyNSwgMHgyQTBDLCAweDUzMjYsIDB4NTMyNiwgMHgxMjg2LCAweDUzMjcsIDB4NTMyOSwgMHgyQTBFLA0KKyAgICAweDUzMkEsIDB4NTMyQSwgMHgwNjY4LCAweDUzMkIsIDB4NTMyQywgMHgyQTExLCAweDUzMkQsIDB4NTMyRCwgMHgyMkM1LA0KKyAgICAweDUzMkUsIDB4NTMyRSwgMHgxMjg3LCAweDUzMkYsIDB4NTMyRiwgMHgxRjVFLCAweDUzMzAsIDB4NTMzMCwgMHgyQTEzLA0KKyAgICAweDUzMzEsIDB4NTMzMSwgMHgyMkM2LCAweDUzMzIsIDB4NTMzOCwgMHgyQTE0LCAweDUzMzksIDB4NTMzOSwgMHgwQkM0LA0KKyAgICAweDUzM0EsIDB4NTMzQSwgMHgwQzc1LCAweDUzM0IsIDB4NTMzQiwgMHgxMDQ0LCAweDUzM0MsIDB4NTMzRCwgMHgyQTFCLA0KKyAgICAweDUzM0UsIDB4NTMzRSwgMHgxMjg4LCAweDUzM0YsIDB4NTMzRiwgMHgwQjQ3LCAweDUzNDAsIDB4NTM0MCwgMHgyMEVGLA0KKyAgICAweDUzNDEsIDB4NTM0MSwgMHgwRDQ1LCAweDUzNDIsIDB4NTM0MiwgMHgyQTFELCAweDUzNDMsIDB4NTM0MywgMHgwQzI0LA0KKyAgICAweDUzNDQsIDB4NTM0NCwgMHgyQTFFLCAweDUzNDUsIDB4NTM0NSwgMHgxMjVDLCAweDUzNDYsIDB4NTM0NiwgMHgyQTFGLA0KKyAgICAweDUzNDcsIDB4NTM0NywgMHgwRDM2LCAweDUzNDgsIDB4NTM0OCwgMHgwRUY2LCAweDUzNDksIDB4NTM0OSwgMHgwN0YxLA0KKyAgICAweDUzNEEsIDB4NTM0QSwgMHgwM0Y2LCAweDUzNEIsIDB4NTM0RCwgMHgyQTIwLCAweDUzNEUsIDB4NTM0RSwgMHgwN0JGLA0KKyAgICAweDUzNEYsIDB4NTM0RiwgMHgwRjc4LCAweDUzNTAsIDB4NTM1MCwgMHgyQTIzLCAweDUzNTEsIDB4NTM1MSwgMHgwNDE5LA0KKyAgICAweDUzNTIsIDB4NTM1MiwgMHgxMjQxLCAweDUzNTMsIDB4NTM1MywgMHgxMjFDLCAweDUzNTQsIDB4NTM1NCwgMHgyMUQwLA0KKyAgICAweDUzNTUsIDB4NTM1NSwgMHgwNTg2LCAweDUzNTYsIDB4NTM1NiwgMHgwQTlCLCAweDUzNTcsIDB4NTM1NywgMHgwQjMyLA0KKyAgICAweDUzNTgsIDB4NTM1OSwgMHgyQTI0LCAweDUzNUEsIDB4NTM1QSwgMHgwNDcwLCAweDUzNUIsIDB4NTM1QiwgMHgyQTI2LA0KKyAgICAweDUzNUMsIDB4NTM1QywgMHgwNDdFLCAweDUzNUQsIDB4NTM1RCwgMHgyQTI3LCAweDUzNUUsIDB4NTM1RSwgMHgwNDRFLA0KKyAgICAweDUzNUYsIDB4NTM1RiwgMHgxNEZBLCAweDUzNjAsIDB4NTM2MCwgMHgxMTVELCAweDUzNjEsIDB4NTM2MSwgMHgwOTM1LA0KKyAgICAweDUzNjIsIDB4NTM2MiwgMHgwQTUzLCAweDUzNjMsIDB4NTM2MywgMHgxMjhCLCAweDUzNjQsIDB4NTM2NCwgMHgwQTU4LA0KKyAgICAweDUzNjUsIDB4NTM2NSwgMHgyQTI4LCAweDUzNjYsIDB4NTM2NiwgMHgxMjhBLCAweDUzNjcsIDB4NTM2NywgMHgwRUUzLA0KKyAgICAweDUzNjgsIDB4NTM2OCwgMHgyQTI5LCAweDUzNjksIDB4NTM2OSwgMHgxMzUyLCAweDUzNkEsIDB4NTM2QSwgMHgyQTJBLA0KKyAgICAweDUzNkIsIDB4NTM2QiwgMHgwRUNGLCAweDUzNkMsIDB4NTM2RCwgMHgyQTJCLCAweDUzNkUsIDB4NTM2RSwgMHgxMjZBLA0KKyAgICAweDUzNkYsIDB4NTM2RiwgMHgwQUIzLCAweDUzNzAsIDB4NTM3MCwgMHgxMDg2LCAweDUzNzEsIDB4NTM3MSwgMHgwRUIyLA0KKyAgICAweDUzNzIsIDB4NTM3MiwgMHgyQTJELCAweDUzNzMsIDB4NTM3MywgMHgwODI3LCAweDUzNzQsIDB4NTM3NCwgMHgwQzhGLA0KKyAgICAweDUzNzUsIDB4NTM3NSwgMHgwQTc4LCAweDUzNzYsIDB4NTM3NiwgMHgyQTJFLCAweDUzNzcsIDB4NTM3NywgMHgwOTFDLA0KKyAgICAweDUzNzgsIDB4NTM3OCwgMHgwRjgxLCAweDUzNzksIDB4NTM3OSwgMHgyQTJGLCAweDUzN0EsIDB4NTM3QSwgMHgxMzUzLA0KKyAgICAweDUzN0IsIDB4NTM3RSwgMHgyQTMwLCAweDUzN0YsIDB4NTM3RiwgMHgwQzYxLCAweDUzODAsIDB4NTM4MSwgMHgyQTM0LA0KKyAgICAweDUzODIsIDB4NTM4MiwgMHgwNENDLCAweDUzODMsIDB4NTM4MywgMHgyQTM2LCAweDUzODQsIDB4NTM4NCwgMHgwNjMxLA0KKyAgICAweDUzODUsIDB4NTM4NSwgMHgwRTRGLCAweDUzODYsIDB4NTM4NiwgMHgwOUU1LCAweDUzODcsIDB4NTM4OCwgMHgyQTM3LA0KKyAgICAweDUzODksIDB4NTM4OSwgMHgwOUUyLCAweDUzOEEsIDB4NTM4QSwgMHgyQTM5LCAweDUzOEIsIDB4NTM4QiwgMHgwRkUyLA0KKyAgICAweDUzOEMsIDB4NTM4QywgMHgxMDBBLCAweDUzOEQsIDB4NTM4RCwgMHgxMjdELCAweDUzOEUsIDB4NTM5NCwgMHgyQTNBLA0KKyAgICAweDUzOTUsIDB4NTM5NSwgMHgwNEE1LCAweDUzOTYsIDB4NTM5NywgMHgyQTQxLCAweDUzOTgsIDB4NTM5OCwgMHgwOUQwLA0KKyAgICAweDUzOTksIDB4NTM5OSwgMHgyMkMxLCAweDUzOUEsIDB4NTM5QSwgMHgwN0E4LCAweDUzOUIsIDB4NTM5QywgMHgyQTQzLA0KKyAgICAweDUzOUQsIDB4NTM5RCwgMHgxMjdFLCAweDUzOUUsIDB4NTM5RSwgMHgyQTQ1LCAweDUzOUYsIDB4NTM5RiwgMHgxMEYwLA0KKyAgICAweDUzQTAsIDB4NTNBMCwgMHgxRTY0LCAweDUzQTEsIDB4NTNBMSwgMHgyQTQ2LCAweDUzQTIsIDB4NTNBMiwgMHgwRjRFLA0KKyAgICAweDUzQTMsIDB4NTNBMywgMHgxMjdGLCAweDUzQTQsIDB4NTNBNCwgMHgyQTQ3LCAweDUzQTUsIDB4NTNBNSwgMHgxMjgwLA0KKyAgICAweDUzQTYsIDB4NTNBNiwgMHgwRjMwLCAweDUzQTcsIDB4NTNBNywgMHgyQTQ4LCAweDUzQTgsIDB4NTNBOCwgMHgwNTFELA0KKyAgICAweDUzQTksIDB4NTNBOSwgMHgwOEY2LCAweDUzQUEsIDB4NTNBQywgMHgyQTQ5LCAweDUzQUQsIDB4NTNBRCwgMHgyMUY5LA0KKyAgICAweDUzQUUsIDB4NTNBRSwgMHgxMjgxLCAweDUzQUYsIDB4NTNCMSwgMHgyQTRDLCAweDUzQjIsIDB4NTNCMiwgMHgyMDEwLA0KKyAgICAweDUzQjMsIDB4NTNCMywgMHgyQTRGLCAweDUzQjQsIDB4NTNCNCwgMHgyMkMyLCAweDUzQjUsIDB4NTNCNSwgMHgyQTUwLA0KKyAgICAweDUzQjYsIDB4NTNCNiwgMHgxMzlDLCAweDUzQjcsIDB4NTNCQSwgMHgyQTUxLCAweDUzQkIsIDB4NTNCQiwgMHgwQzgwLA0KKyAgICAweDUzQkMsIDB4NTNCRSwgMHgyQTU1LCAweDUzQkYsIDB4NTNCRiwgMHgwRjQ1LCAweDUzQzAsIDB4NTNDMCwgMHgyQTU4LA0KKyAgICAweDUzQzEsIDB4NTNDMSwgMHgwQ0Q5LCAweDUzQzIsIDB4NTNDMiwgMHgwNDk1LCAweDUzQzMsIDB4NTNDMywgMHgxRTVBLA0KKyAgICAweDUzQzQsIDB4NTNDNywgMHgyQTU5LCAweDUzQzgsIDB4NTNDOCwgMHgxMEJCLCAweDUzQzksIDB4NTNDOSwgMHgwNEFELA0KKyAgICAweDUzQ0EsIDB4NTNDQSwgMHgwODIzLCAweDUzQ0IsIDB4NTNDQiwgMHgxMEI2LCAweDUzQ0MsIDB4NTNDQywgMHgwREEwLA0KKyAgICAweDUzQ0QsIDB4NTNDRCwgMHgwNjUxLCAweDUzQ0UsIDB4NTNEMCwgMHgyQTVELCAweDUzRDEsIDB4NTNEMSwgMHgwNjNGLA0KKyAgICAweDUzRDIsIDB4NTNEMywgMHgyQTYwLCAweDUzRDQsIDB4NTNENCwgMHgwRDdDLCAweDUzRDUsIDB4NTNENSwgMHgyQTYyLA0KKyAgICAweDUzRDYsIDB4NTNENiwgMHgwQzdDLCAweDUzRDcsIDB4NTNENywgMHgwRDczLCAweDUzRDgsIDB4NTNEOCwgMHgwNDRELA0KKyAgICAweDUzRDksIDB4NTNEOSwgMHgwRkJCLCAweDUzREEsIDB4NTNEQSwgMHgyQTYzLCAweDUzREIsIDB4NTNEQiwgMHgwQjkyLA0KKyAgICAweDUzREMsIDB4NTNERSwgMHgyQTY0LCAweDUzREYsIDB4NTNERiwgMHgxMzk1LCAweDUzRTAsIDB4NTNFMCwgMHgwNURGLA0KKyAgICAweDUzRTEsIDB4NTNFMSwgMHgyQTY3LCAweDUzRTIsIDB4NTNFMiwgMHgxRUEyLCAweDUzRTMsIDB4NTNFMywgMHgwOTY3LA0KKyAgICAweDUzRTQsIDB4NTNFNCwgMHgwNzFFLCAweDUzRTUsIDB4NTNFNSwgMHgwOTEzLCAweDUzRTYsIDB4NTNFNiwgMHgwQTM2LA0KKyAgICAweDUzRTcsIDB4NTNFNywgMHgyQTY4LCAweDUzRTgsIDB4NTNFOCwgMHgxNEZFLCAweDUzRTksIDB4NTNFOSwgMHgxNEZELA0KKyAgICAweDUzRUEsIDB4NTNFQSwgMHgxMUJBLCAweDUzRUIsIDB4NTNFQiwgMHgwOEExLCAweDUzRUMsIDB4NTNFQywgMHgxMTdBLA0KKyAgICAweDUzRUQsIDB4NTNFRCwgMHgwM0QzLCAweDUzRUUsIDB4NTNFRSwgMHgwNUUyLCAweDUzRUYsIDB4NTNFRiwgMHgwOTU2LA0KKyAgICAweDUzRjAsIDB4NTNGMCwgMHgwREZCLCAweDUzRjEsIDB4NTNGMSwgMHgxNEZCLCAweDUzRjIsIDB4NTNGMiwgMHgwRDRFLA0KKyAgICAweDUzRjMsIDB4NTNGMywgMHgxMEI3LCAweDUzRjQsIDB4NTNGNCwgMHgyQTY5LCAweDUzRjUsIDB4NTNGNSwgMHgxMjg1LA0KKyAgICAweDUzRjYsIDB4NTNGNiwgMHgxMDNELCAweDUzRjcsIDB4NTNGNywgMHgwNzdDLCAweDUzRjgsIDB4NTNGOCwgMHgwREIzLA0KKyAgICAweDUzRjksIDB4NTNGOSwgMHgwRTExLCAweDUzRkEsIDB4NTNGQSwgMHgyQTZBLCAweDUzRkIsIDB4NTNGQiwgMHgxNEZGLA0KKyAgICAweDUzRkMsIDB4NTNGQywgMHgwNUQxLCAweDUzRkQsIDB4NTNGRCwgMHgxNEZDLCAweDUzRkUsIDB4NTNGRiwgMHgyQTZCLA0KKyAgICAweDU0MDAsIDB4NTQwMCwgMHgyQTZELCAweDU0MDEsIDB4NTQwMSwgMHgxMERBLCAweDU0MDIsIDB4NTQwMiwgMHgyQTZFLA0KKyAgICAweDU0MDMsIDB4NTQwMywgMHgwNEY5LCAweDU0MDQsIDB4NTQwNCwgMHgwNkYyLCAweDU0MDUsIDB4NTQwNSwgMHgyQTZGLA0KKyAgICAweDU0MDYsIDB4NTQwNiwgMHgxNTAyLCAweDU0MDcsIDB4NTQwNywgMHgyQTcwLCAweDU0MDgsIDB4NTQwOCwgMHgwNzg2LA0KKyAgICAweDU0MDksIDB4NTQwOSwgMHgwODFELCAweDU0MEEsIDB4NTQwQSwgMHgwNUQ2LCAweDU0MEIsIDB4NTQwQiwgMHgyQTcxLA0KKyAgICAweDU0MEMsIDB4NTQwQywgMHgwRTVELCAweDU0MEQsIDB4NTQwRCwgMHgwQjAwLCAweDU0MEUsIDB4NTQwRSwgMHgwN0FBLA0KKyAgICAweDU0MEYsIDB4NTQwRiwgMHgwOURGLCAweDU0MTAsIDB4NTQxMCwgMHgwRTczLCAweDU0MTEsIDB4NTQxMSwgMHgwRjVGLA0KKyAgICAweDU0MTIsIDB4NTQxMiwgMHgxNTAwLCAweDU0MTMsIDB4NTQxMywgMHgwRjMyLCAweDU0MTQsIDB4NTQxNCwgMHgyQTcyLA0KKyAgICAweDU0MTUsIDB4NTQxNSwgMHgwQTY3LCAweDU0MTYsIDB4NTQxNiwgMHgxNTAxLCAweDU0MTcsIDB4NTQxNywgMHgwQTk3LA0KKyAgICAweDU0MTgsIDB4NTQxQSwgMHgyQTczLCAweDU0MUIsIDB4NTQxQiwgMHgwOTJDLCAweDU0MUMsIDB4NTQxQywgMHgyQTc2LA0KKyAgICAweDU0MUQsIDB4NTQxRCwgMHgwQTI4LCAweDU0MUUsIDB4NTQxRSwgMHgwRTdELCAweDU0MUYsIDB4NTQxRiwgMHgxMDdFLA0KKyAgICAweDU0MjAsIDB4NTQyMCwgMHgwNjZBLCAweDU0MjEsIDB4NTQyMSwgMHgxNTA5LCAweDU0MjIsIDB4NTQyMiwgMHgyQTc3LA0KKyAgICAweDU0MjMsIDB4NTQyMywgMHgxNTBDLCAweDU0MjQsIDB4NTQyNSwgMHgyQTc4LCAweDU0MjYsIDB4NTQyNiwgMHgwNjhFLA0KKyAgICAweDU0MjcsIDB4NTQyNywgMHgwM0Q0LCAweDU0MjgsIDB4NTQyOCwgMHgwNjE1LCAweDU0MjksIDB4NTQyOSwgMHgwNjcxLA0KKyAgICAweDU0MkEsIDB4NTQyQSwgMHgyQTdBLCAweDU0MkIsIDB4NTQyQiwgMHgwNzYzLCAweDU0MkMsIDB4NTQyQywgMHgwRTUwLA0KKyAgICAweDU0MkQsIDB4NTQyRCwgMHgwOTYxLCAweDU0MkUsIDB4NTQyRSwgMHgwREE2LCAweDU0MkYsIDB4NTQyRiwgMHgwQzEzLA0KKyAgICAweDU0MzAsIDB4NTQzMCwgMHgyQTdCLCAweDU0MzEsIDB4NTQzMSwgMHgxMUE3LCAweDU0MzIsIDB4NTQzMiwgMHgxNTBELA0KKyAgICAweDU0MzMsIDB4NTQzMywgMHgyQTdDLCAweDU0MzQsIDB4NTQzNCwgMHgwRUYxLCAweDU0MzUsIDB4NTQzNSwgMHgwNEQ4LA0KKyAgICAweDU0MzYsIDB4NTQzNywgMHgyQTdELCAweDU0MzgsIDB4NTQzOCwgMHgwRjBCLCAweDU0MzksIDB4NTQzOSwgMHgwNTM4LA0KKyAgICAweDU0M0EsIDB4NTQzQSwgMHgyQTdGLCAweDU0M0IsIDB4NTQzQiwgMHgwRUQ2LCAweDU0M0MsIDB4NTQzQywgMHgwN0E3LA0KKyAgICAweDU0M0QsIDB4NTQzRCwgMHgyQTgwLCAweDU0M0UsIDB4NTQzRSwgMHgwRUYwLCAweDU0M0YsIDB4NTQzRiwgMHgyQTgxLA0KKyAgICAweDU0NDAsIDB4NTQ0MCwgMHgwRkU2LCAweDU0NDEsIDB4NTQ0MiwgMHgyQTgyLCAweDU0NDMsIDB4NTQ0MywgMHgxNTA4LA0KKyAgICAweDU0NDQsIDB4NTQ0NSwgMHgyQTg0LCAweDU0NDYsIDB4NTQ0NiwgMHgwNTc3LCAweDU0NDcsIDB4NTQ0NywgMHgyQTg2LA0KKyAgICAweDU0NDgsIDB4NTQ0OCwgMHgwNEVGLCAweDU0NDksIDB4NTQ0OSwgMHgyQTg3LCAweDU0NEEsIDB4NTQ0QSwgMHgwNkUxLA0KKyAgICAweDU0NEIsIDB4NTQ0QiwgMHgxNTAzLCAweDU0NEMsIDB4NTQ0RiwgMHgyQTg4LCAweDU0NTAsIDB4NTQ1MCwgMHgwQjI4LA0KKyAgICAweDU0NTEsIDB4NTQ1MSwgMHgyQThDLCAweDU0NTIsIDB4NTQ1NCwgMHgxNTA0LCAweDU0NTUsIDB4NTQ1NSwgMHgwQjdDLA0KKyAgICAweDU0NTYsIDB4NTQ1NiwgMHgxNTA3LCAweDU0NTcsIDB4NTQ1NywgMHgxNTBBLCAweDU0NTgsIDB4NTQ1OCwgMHgxMEY0LA0KKyAgICAweDU0NTksIDB4NTQ1OSwgMHgxNTBCLCAweDU0NUEsIDB4NTQ1QSwgMHgyQThELCAweDU0NUIsIDB4NTQ1QiwgMHgwQzM3LA0KKyAgICAweDU0NUMsIDB4NTQ1QywgMHgwRUU3LCAweDU0NUQsIDB4NTQ2MSwgMHgyQThFLCAweDU0NjIsIDB4NTQ2MiwgMHgwQjNCLA0KKyAgICAweDU0NjMsIDB4NTQ2MywgMHgyQTkzLCAweDU0NjQsIDB4NTQ2NCwgMHgxNTEyLCAweDU0NjUsIDB4NTQ2NSwgMHgyQTk0LA0KKyAgICAweDU0NjYsIDB4NTQ2NiwgMHgxNTE3LCAweDU0NjcsIDB4NTQ2NywgMHgyQTk1LCAweDU0NjgsIDB4NTQ2OCwgMHgxMURCLA0KKyAgICAweDU0NjksIDB4NTQ3MCwgMHgyQTk2LCAweDU0NzEsIDB4NTQ3MSwgMHgxNTExLCAweDU0NzIsIDB4NTQ3MiwgMHgxNTIyLA0KKyAgICAweDU0NzMsIDB4NTQ3MywgMHgwRUM1LCAweDU0NzQsIDB4NTQ3NCwgMHgyQTlFLCAweDU0NzUsIDB4NTQ3NSwgMHgwNzdFLA0KKyAgICAweDU0NzYsIDB4NTQ3NiwgMHgxNTE2LCAweDU0NzcsIDB4NTQ3NywgMHgxNTEwLCAweDU0NzgsIDB4NTQ3OCwgMHgwQjlGLA0KKyAgICAweDU0NzksIDB4NTQ3QSwgMHgyQTlGLCAweDU0N0IsIDB4NTQ3QiwgMHgwRDI0LCAweDU0N0MsIDB4NTQ3QywgMHgwN0FCLA0KKyAgICAweDU0N0QsIDB4NTQ3RCwgMHgwQjAxLCAweDU0N0UsIDB4NTQ3RiwgMHgyQUExLCAweDU0ODAsIDB4NTQ4MCwgMHgwOTA2LA0KKyAgICAweDU0ODEsIDB4NTQ4MSwgMHgyQUEzLCAweDU0ODIsIDB4NTQ4MiwgMHgxNTBFLCAweDU0ODMsIDB4NTQ4MywgMHgyQUE0LA0KKyAgICAweDU0ODQsIDB4NTQ4NCwgMHgxNTE1LCAweDU0ODUsIDB4NTQ4NSwgMHgyQUE1LCAweDU0ODYsIDB4NTQ4NiwgMHgwQjk5LA0KKyAgICAweDU0ODcsIDB4NTQ4QSwgMHgyQUE2LCAweDU0OEIsIDB4NTQ4QiwgMHgxMTQ3LCAweDU0OEMsIDB4NTQ4QywgMHgwNzg0LA0KKyAgICAweDU0OEQsIDB4NTQ4RCwgMHgyQUFBLCAweDU0OEUsIDB4NTQ4RSwgMHgwOEZCLCAweDU0OEYsIDB4NTQ4RiwgMHgxMEEyLA0KKyAgICAweDU0OTAsIDB4NTQ5MCwgMHgwNkJCLCAweDU0OTEsIDB4NTQ5MSwgMHgyQUFCLCAweDU0OTIsIDB4NTQ5MiwgMHgxMUUzLA0KKyAgICAweDU0OTMsIDB4NTQ5MywgMHgyQUFDLCAweDU0OTQsIDB4NTQ5NCwgMHgxNTBGLCAweDU0OTUsIDB4NTQ5NSwgMHgwNzE3LA0KKyAgICAweDU0OTYsIDB4NTQ5NiwgMHgwOTM0LCAweDU0OTcsIDB4NTQ5OCwgMHgyQUFELCAweDU0OTksIDB4NTQ5OSwgMHgwQTQ1LA0KKyAgICAweDU0OUEsIDB4NTQ5QiwgMHgxNTEzLCAweDU0OUMsIDB4NTQ5QywgMHgyQUFGLCAweDU0OUQsIDB4NTQ5RCwgMHgxNTE4LA0KKyAgICAweDU0OUUsIDB4NTRBMiwgMHgyQUIwLCAweDU0QTMsIDB4NTRBMywgMHgxNTIzLCAweDU0QTQsIDB4NTRBNCwgMHgxNTJELA0KKyAgICAweDU0QTUsIDB4NTRBNSwgMHgyQUI1LCAweDU0QTYsIDB4NTRBNiwgMHgxNTFGLCAweDU0QTcsIDB4NTRBNywgMHgxNTFFLA0KKyAgICAweDU0QTgsIDB4NTRBOCwgMHgxMjI2LCAweDU0QTksIDB4NTRBQSwgMHgxNTJCLCAweDU0QUIsIDB4NTRBQiwgMHgxNzY3LA0KKyAgICAweDU0QUMsIDB4NTRBQywgMHgxMDJFLCAweDU0QUQsIDB4NTRBRCwgMHgxNTFBLCAweDU0QUUsIDB4NTRBRSwgMHgyQUI2LA0KKyAgICAweDU0QUYsIDB4NTRBRiwgMHgwOTM2LCAweDU0QjAsIDB4NTRCMCwgMHgyQUI3LCAweDU0QjEsIDB4NTRCMSwgMHgxMTFFLA0KKyAgICAweDU0QjIsIDB4NTRCMiwgMHgyQUI4LCAweDU0QjMsIDB4NTRCMywgMHgwOTU1LCAweDU0QjQsIDB4NTRCNCwgMHgxNTFDLA0KKyAgICAweDU0QjUsIDB4NTRCNywgMHgyQUI5LCAweDU0QjgsIDB4NTRCOCwgMHgwRjM5LCAweDU0QjksIDB4NTRCQSwgMHgyQUJDLA0KKyAgICAweDU0QkIsIDB4NTRCQiwgMHgxNTI1LCAweDU0QkMsIDB4NTRCQywgMHgyMzZELCAweDU0QkQsIDB4NTRCRCwgMHgwRkYzLA0KKyAgICAweDU0QkUsIDB4NTRCRSwgMHgyQUJFLCAweDU0QkYsIDB4NTRCRiwgMHgxNTI2LCAweDU0QzAsIDB4NTRDMCwgMHgwM0IyLA0KKyAgICAweDU0QzEsIDB4NTRDMSwgMHgwQkQ2LCAweDU0QzIsIDB4NTRDMiwgMHgxNTFCLCAweDU0QzMsIDB4NTRDMywgMHgyQUJGLA0KKyAgICAweDU0QzQsIDB4NTRDNCwgMHgwNzlDLCAweDU0QzUsIDB4NTRDNSwgMHgyQUMwLCAweDU0QzYsIDB4NTRDNiwgMHgwNjFFLA0KKyAgICAweDU0QzcsIDB4NTRDNywgMHgwRThDLCAweDU0QzgsIDB4NTRDOCwgMHgwNzU3LCAweDU0QzksIDB4NTRDOSwgMHgxMTE4LA0KKyAgICAweDU0Q0EsIDB4NTRDQiwgMHgyQUMxLCAweDU0Q0MsIDB4NTRDQywgMHgxNTI3LCAweDU0Q0QsIDB4NTRDRCwgMHgwRjU5LA0KKyAgICAweDU0Q0UsIDB4NTRDRSwgMHgwM0IwLCAweDU0Q0YsIDB4NTRDRiwgMHgxNTJGLCAweDU0RDAsIDB4NTREMCwgMHgxNTE5LA0KKyAgICAweDU0RDEsIDB4NTREMSwgMHgwRkVGLCAweDU0RDIsIDB4NTREMiwgMHgxNTFELCAweDU0RDMsIDB4NTRENCwgMHgxNTIwLA0KKyAgICAweDU0RDUsIDB4NTRENSwgMHgxNTI0LCAweDU0RDYsIDB4NTRENiwgMHgyQUMzLCAweDU0RDcsIDB4NTRENywgMHgwN0JFLA0KKyAgICAweDU0RDgsIDB4NTREOCwgMHgyQUM0LCAweDU0RDksIDB4NTREQSwgMHgxNTI4LCAweDU0REIsIDB4NTREQiwgMHgyQUM1LA0KKyAgICAweDU0REMsIDB4NTREQywgMHgxNTJBLCAweDU0REQsIDB4NTRERCwgMHgxNTJFLCAweDU0REUsIDB4NTRERSwgMHgxNTMwLA0KKyAgICAweDU0REYsIDB4NTRERiwgMHgxMDk5LCAweDU0RTAsIDB4NTRFMCwgMHgyQUM2LCAweDU0RTEsIDB4NTRFMSwgMHgyMjQ3LA0KKyAgICAweDU0RTIsIDB4NTRFNCwgMHgyQUM3LCAweDU0RTUsIDB4NTRFNSwgMHgwNkUyLCAweDU0RTYsIDB4NTRFNiwgMHgwQjc3LA0KKyAgICAweDU0RTcsIDB4NTRFNywgMHgxNTMyLCAweDU0RTgsIDB4NTRFOCwgMHgwRDEzLCAweDU0RTksIDB4NTRFOSwgMHgwOUYxLA0KKyAgICAweDU0RUEsIDB4NTRFQSwgMHgwQjI3LCAweDU0RUIsIDB4NTRFQywgMHgyQUNBLCAweDU0RUQsIDB4NTRFRCwgMHgwOTZCLA0KKyAgICAweDU0RUUsIDB4NTRFRSwgMHgwRjY1LCAweDU0RUYsIDB4NTRGMSwgMHgyQUNDLCAweDU0RjIsIDB4NTRGMiwgMHgxMTdELA0KKyAgICAweDU0RjMsIDB4NTRGMywgMHgxNTM2LCAweDU0RjQsIDB4NTRGOSwgMHgyQUNGLCAweDU0RkEsIDB4NTRGQSwgMHgwNDdGLA0KKyAgICAweDU0RkIsIDB4NTRGQiwgMHgyQUQ1LCAweDU0RkMsIDB4NTRGQywgMHgwNzk2LCAweDU0RkQsIDB4NTRGRCwgMHgxNTM0LA0KKyAgICAweDU0RkUsIDB4NTRGRSwgMHgyQUQ2LCAweDU0RkYsIDB4NTRGRiwgMHgxMzkxLCAweDU1MDAsIDB4NTUwMCwgMHgyQUQ3LA0KKyAgICAweDU1MDEsIDB4NTUwMSwgMHgxMDBELCAweDU1MDIsIDB4NTUwMywgMHgyQUQ4LCAweDU1MDQsIDB4NTUwNCwgMHgyMzZDLA0KKyAgICAweDU1MDUsIDB4NTUwNSwgMHgyQURBLCAweDU1MDYsIDB4NTUwNiwgMHgwREU5LCAweDU1MDcsIDB4NTUwNywgMHgwNTQwLA0KKyAgICAweDU1MDgsIDB4NTUwOCwgMHgyQURCLCAweDU1MDksIDB4NTUwOSwgMHgwM0IxLCAweDU1MEEsIDB4NTUwRSwgMHgyQURDLA0KKyAgICAweDU1MEYsIDB4NTUwRiwgMHgxNTM5LCAweDU1MTAsIDB4NTUxMCwgMHgwRTE5LCAweDU1MTEsIDB4NTUxMSwgMHgxNTNBLA0KKyAgICAweDU1MTIsIDB4NTUxMywgMHgyQUUxLCAweDU1MTQsIDB4NTUxNCwgMHgxNTM1LCAweDU1MTUsIDB4NTUxQSwgMHgyQUUzLA0KKyAgICAweDU1MUIsIDB4NTUxQiwgMHgxNTMxLCAweDU1MUMsIDB4NTUxRiwgMHgyQUU5LCAweDU1MjAsIDB4NTUyMCwgMHgxNTMzLA0KKyAgICAweDU1MjEsIDB4NTUyMSwgMHgyQUVELCAweDU1MjIsIDB4NTUyMywgMHgxNTM3LCAweDU1MjQsIDB4NTUyNCwgMHgwN0QyLA0KKyAgICAweDU1MjUsIDB4NTUyNiwgMHgyQUVFLCAweDU1MjcsIDB4NTUyNywgMHgxNTNCLCAweDU1MjgsIDB4NTUyOSwgMHgyQUYwLA0KKyAgICAweDU1MkEsIDB4NTUyQSwgMHgxNTNDLCAweDU1MkIsIDB4NTUyQiwgMHgyQUYyLCAweDU1MkMsIDB4NTUyQywgMHgwN0I4LA0KKyAgICAweDU1MkQsIDB4NTUyRCwgMHgyQUYzLCAweDU1MkUsIDB4NTUyRSwgMHgwRDcyLCAweDU1MkYsIDB4NTUyRiwgMHgwRUI3LA0KKyAgICAweDU1MzAsIDB4NTUzMCwgMHgxNTRELCAweDU1MzEsIDB4NTUzMSwgMHgwNENGLCAweDU1MzIsIDB4NTUzMiwgMHgyQUY0LA0KKyAgICAweDU1MzMsIDB4NTUzMywgMHgxNTRDLCAweDU1MzQsIDB4NTUzNiwgMHgyQUY1LCAweDU1MzcsIDB4NTUzNywgMHgxNTQ3LA0KKyAgICAweDU1MzgsIDB4NTUzQiwgMHgyQUY4LCAweDU1M0MsIDB4NTUzQywgMHgxNTQ2LCAweDU1M0QsIDB4NTUzRCwgMHgyQUZDLA0KKyAgICAweDU1M0UsIDB4NTUzRSwgMHgwRThBLCAweDU1M0YsIDB4NTUzRiwgMHgxNTQ0LCAweDU1NDAsIDB4NTU0MCwgMHgyQUZELA0KKyAgICAweDU1NDEsIDB4NTU0MSwgMHgxNTQyLCAweDU1NDIsIDB4NTU0MiwgMHgyQUZFLCAweDU1NDMsIDB4NTU0MywgMHgwOTVELA0KKyAgICAweDU1NDQsIDB4NTU0NCwgMHgxMjIxLCAweDU1NDUsIDB4NTU0NSwgMHgyQUZGLCAweDU1NDYsIDB4NTU0NiwgMHgwRDA1LA0KKyAgICAweDU1NDcsIDB4NTU0OCwgMHgyQjAwLCAweDU1NDksIDB4NTU0OSwgMHgxNTQwLCAweDU1NEEsIDB4NTU0QSwgMHgwM0FDLA0KKyAgICAweDU1NEIsIDB4NTU0RSwgMHgyQjAyLCAweDU1NEYsIDB4NTU0RiwgMHgyMTlDLCAweDU1NTAsIDB4NTU1MCwgMHgxNTQ1LA0KKyAgICAweDU1NTEsIDB4NTU1MiwgMHgyQjA2LCAweDU1NTMsIDB4NTU1MywgMHgyMEM5LCAweDU1NTQsIDB4NTU1NCwgMHgyQjA4LA0KKyAgICAweDU1NTUsIDB4NTU1NSwgMHgxNTQzLCAweDU1NTYsIDB4NTU1NiwgMHgxNTQ4LCAweDU1NTcsIDB4NTU1QiwgMHgyQjA5LA0KKyAgICAweDU1NUMsIDB4NTU1QywgMHgxNTRFLCAweDU1NUQsIDB4NTU1RCwgMHgyQjBFLCAweDU1NUUsIDB4NTU1RSwgMHgyMUYwLA0KKyAgICAweDU1NUYsIDB4NTU2MCwgMHgyQjBGLCAweDU1NjEsIDB4NTU2MSwgMHgwNjY1LCAweDU1NjIsIDB4NTU2MywgMHgyQjExLA0KKyAgICAweDU1NjQsIDB4NTU2NCwgMHgwQkMwLCAweDU1NjUsIDB4NTU2NSwgMHgwQ0VGLCAweDU1NjYsIDB4NTU2NiwgMHgwOTlELA0KKyAgICAweDU1NjcsIDB4NTU2NywgMHgxNTNELCAweDU1NjgsIDB4NTU2OSwgMHgyQjEzLCAweDU1NkEsIDB4NTU2QSwgMHgwQjdGLA0KKyAgICAweDU1NkIsIDB4NTU2QiwgMHgyQjE1LCAweDU1NkMsIDB4NTU2QywgMHgxMjdBLCAweDU1NkQsIDB4NTU2RCwgMHgxNTQxLA0KKyAgICAweDU1NkUsIDB4NTU2RSwgMHgwQjU5LCAweDU1NkYsIDB4NTU3NCwgMHgyQjE2LCAweDU1NzUsIDB4NTU3NywgMHgxNTQ5LA0KKyAgICAweDU1NzgsIDB4NTU3OCwgMHgwRjcwLCAweDU1NzksIDB4NTU3QSwgMHgyQjFDLCAweDU1N0IsIDB4NTU3QiwgMHgxNTVBLA0KKyAgICAweDU1N0MsIDB4NTU3QywgMHgwRTM3LCAweDU1N0QsIDB4NTU3RCwgMHgyQjFFLCAweDU1N0UsIDB4NTU3RSwgMHgxNTU3LA0KKyAgICAweDU1N0YsIDB4NTU3RiwgMHgyQjFGLCAweDU1ODAsIDB4NTU4MCwgMHgwOTMzLCAweDU1ODEsIDB4NTU4MSwgMHgxNTU1LA0KKyAgICAweDU1ODIsIDB4NTU4MiwgMHgwRUM4LCAweDU1ODMsIDB4NTU4MywgMHgxNTUxLCAweDU1ODQsIDB4NTU4NCwgMHgwQ0ZGLA0KKyAgICAweDU1ODUsIDB4NTU4NiwgMHgyQjIwLCAweDU1ODcsIDB4NTU4NywgMHgwOTk5LCAweDU1ODgsIDB4NTU4OCwgMHgxNTU0LA0KKyAgICAweDU1ODksIDB4NTU4OSwgMHgwN0E0LCAweDU1OEEsIDB4NTU4QSwgMHgwNzY3LCAweDU1OEIsIDB4NTU4QiwgMHgxNTRGLA0KKyAgICAweDU1OEMsIDB4NTU4RSwgMHgyQjIyLCAweDU1OEYsIDB4NTU4RiwgMHgxNTNFLCAweDU1OTAsIDB4NTU5MCwgMHgyQjI1LA0KKyAgICAweDU1OTEsIDB4NTU5MSwgMHgxNTU5LCAweDU1OTIsIDB4NTU5MywgMHgyQjI2LCAweDU1OTQsIDB4NTU5NCwgMHgxNTVFLA0KKyAgICAweDU1OTUsIDB4NTU5NywgMHgyQjI4LCAweDU1OTgsIDB4NTU5OCwgMHgwNTMwLCAweDU1OTksIDB4NTU5OSwgMHgxNTVGLA0KKyAgICAweDU1OUEsIDB4NTU5QiwgMHgyQjJCLCAweDU1OUMsIDB4NTU5QywgMHgwRjFGLCAweDU1OUQsIDB4NTU5RCwgMHgwNzdGLA0KKyAgICAweDU1OUUsIDB4NTU5RSwgMHgyQjJELCAweDU1OUYsIDB4NTU5RiwgMHgxNTU2LCAweDU1QTAsIDB4NTVBNiwgMHgyQjJFLA0KKyAgICAweDU1QTcsIDB4NTVBNywgMHgwRkM1LCAweDU1QTgsIDB4NTVBOSwgMHgyQjM1LCAweDU1QUEsIDB4NTVBQSwgMHgyMTBCLA0KKyAgICAweDU1QUIsIDB4NTVBQiwgMHgyQjM3LCAweDU1QUMsIDB4NTVBQywgMHgyMERFLCAweDU1QUQsIDB4NTVBRCwgMHgyQjM4LA0KKyAgICAweDU1QUUsIDB4NTVBRSwgMHgxRUFBLCAweDU1QUYsIDB4NTVCMCwgMHgyQjM5LCAweDU1QjEsIDB4NTVCMSwgMHgxNTUyLA0KKyAgICAweDU1QjIsIDB4NTVCMiwgMHgyMjJDLCAweDU1QjMsIDB4NTVCMywgMHgxMTNFLCAweDU1QjQsIDB4NTVCNCwgMHgyQjNCLA0KKyAgICAweDU1QjUsIDB4NTVCNSwgMHgxNTNGLCAweDU1QjYsIDB4NTVCNiwgMHgyQjNDLCAweDU1QjcsIDB4NTVCNywgMHgwQkE4LA0KKyAgICAweDU1QjgsIDB4NTVCOCwgMHgyQjNELCAweDU1QjksIDB4NTVCOSwgMHgxNTUzLCAweDU1QkEsIDB4NTVCQSwgMHgyQjNFLA0KKyAgICAweDU1QkIsIDB4NTVCQiwgMHgxMERDLCAweDU1QkMsIDB4NTVCQywgMHgyQjNGLCAweDU1QkQsIDB4NTVCRSwgMHgxNTVDLA0KKyAgICAweDU1QkYsIDB4NTVDMywgMHgyQjQwLCAweDU1QzQsIDB4NTVDNCwgMHgxNTZBLCAweDU1QzUsIDB4NTVDNSwgMHgwRkFDLA0KKyAgICAweDU1QzYsIDB4NTVDNiwgMHgyMEQ4LCAweDU1QzcsIDB4NTVDNywgMHgyMkMwLCAweDU1QzgsIDB4NTVDOCwgMHgyQjQ1LA0KKyAgICAweDU1QzksIDB4NTVDOSwgMHgxNTYyLCAweDU1Q0EsIDB4NTVDQiwgMHgyQjQ2LCAweDU1Q0MsIDB4NTVDRCwgMHgxNTZGLA0KKyAgICAweDU1Q0UsIDB4NTVDRSwgMHgyMDZGLCAweDU1Q0YsIDB4NTVEMCwgMHgyQjQ4LCAweDU1RDEsIDB4NTVEMSwgMHgxNTY0LA0KKyAgICAweDU1RDIsIDB4NTVEMiwgMHgxNTUwLCAweDU1RDMsIDB4NTVEMywgMHgwQ0RELCAweDU1RDQsIDB4NTVENCwgMHgxNTY3LA0KKyAgICAweDU1RDUsIDB4NTVENSwgMHgyQjRBLCAweDU1RDYsIDB4NTVENiwgMHgxNTU4LCAweDU1RDcsIDB4NTVEOSwgMHgyQjRCLA0KKyAgICAweDU1REEsIDB4NTVEQSwgMHgyMUExLCAweDU1REIsIDB4NTVEQiwgMHgyQjRFLCAweDU1REMsIDB4NTVEQywgMHgwRDVGLA0KKyAgICAweDU1REQsIDB4NTVERCwgMHgxNTY5LCAweDU1REUsIDB4NTVERSwgMHgyQjRGLCAweDU1REYsIDB4NTVERiwgMHgxNTVCLA0KKyAgICAweDU1RTAsIDB4NTVFMCwgMHgyQjUwLCAweDU1RTEsIDB4NTVFMSwgMHgwRURBLCAweDU1RTIsIDB4NTVFMiwgMHgyQjUxLA0KKyAgICAweDU1RTMsIDB4NTVFMywgMHgwREI4LCAweDU1RTQsIDB4NTVFNCwgMHgxNTczLCAweDU1RTUsIDB4NTVFNSwgMHgxNTZDLA0KKyAgICAweDU1RTYsIDB4NTVFNiwgMHgxNTY4LCAweDU1RTcsIDB4NTVFNywgMHgyQjUyLCAweDU1RTgsIDB4NTVFOCwgMHgxNTcxLA0KKyAgICAweDU1RTksIDB4NTVFOSwgMHgyMzc5LCAweDU1RUEsIDB4NTVFQSwgMHgxNTYwLCAweDU1RUIsIDB4NTVFQywgMHgxNTY1LA0KKyAgICAweDU1RUQsIDB4NTVFRSwgMHgyQjUzLCAweDU1RUYsIDB4NTVFRiwgMHgxNTZCLCAweDU1RjAsIDB4NTVGMSwgMHgyQjU1LA0KKyAgICAweDU1RjIsIDB4NTVGMywgMHgxNTZELCAweDU1RjQsIDB4NTVGNCwgMHgyQjU3LCAweDU1RjUsIDB4NTVGNSwgMHgxNTcyLA0KKyAgICAweDU1RjYsIDB4NTVGNiwgMHgyMzcyLCAweDU1RjcsIDB4NTVGNywgMHgxNTYxLCAweDU1RjgsIDB4NTVGQywgMHgyQjU4LA0KKyAgICAweDU1RkQsIDB4NTVGRCwgMHgwREM5LCAweDU1RkUsIDB4NTVGRSwgMHgxNTdCLCAweDU1RkYsIDB4NTVGRiwgMHgyQjVELA0KKyAgICAweDU2MDAsIDB4NTYwMCwgMHgxNTdDLCAweDU2MDEsIDB4NTYwMSwgMHgxNTc4LCAweDU2MDIsIDB4NTYwNSwgMHgyQjVFLA0KKyAgICAweDU2MDYsIDB4NTYwNiwgMHgyMTZBLCAweDU2MDcsIDB4NTYwNywgMHgyQjYyLCAweDU2MDgsIDB4NTYwOCwgMHgxNTc2LA0KKyAgICAweDU2MDksIDB4NTYwOSwgMHgwODQxLCAweDU2MEEsIDB4NTYwQiwgMHgyQjYzLCAweDU2MEMsIDB4NTYwQywgMHgxNTc3LA0KKyAgICAweDU2MEQsIDB4NTYwRCwgMHgyMzdDLCAweDU2MEUsIDB4NTYwRSwgMHgwNkJELCAweDU2MEYsIDB4NTYwRiwgMHgxMjdCLA0KKyAgICAweDU2MTAsIDB4NTYxMywgMHgyQjY1LCAweDU2MTQsIDB4NTYxNCwgMHgyMEIwLCAweDU2MTUsIDB4NTYxNSwgMHgyQjY5LA0KKyAgICAweDU2MTYsIDB4NTYxNiwgMHgyMzdBLCAweDU2MTcsIDB4NTYxNywgMHgxRTc0LCAweDU2MTgsIDB4NTYxOCwgMHgwRkI1LA0KKyAgICAweDU2MTksIDB4NTYxQSwgMHgyQjZBLCAweDU2MUIsIDB4NTYxQiwgMHgwQTk2LCAweDU2MUMsIDB4NTYxQywgMHgyMzc3LA0KKyAgICAweDU2MUQsIDB4NTYxRCwgMHgyQjZDLCAweDU2MUUsIDB4NTYxRSwgMHgxNTc1LCAweDU2MUYsIDB4NTYxRiwgMHgxNTYzLA0KKyAgICAweDU2MjAsIDB4NTYyMiwgMHgyQjZELCAweDU2MjMsIDB4NTYyMywgMHgxNTdBLCAweDU2MjQsIDB4NTYyNCwgMHgxNTc5LA0KKyAgICAweDU2MjUsIDB4NTYyNiwgMHgyQjcwLCAweDU2MjcsIDB4NTYyNywgMHgxNTdELCAweDU2MjgsIDB4NTYyOCwgMHgyQjcyLA0KKyAgICAweDU2MjksIDB4NTYyOSwgMHgxRjRDLCAweDU2MkEsIDB4NTYyQiwgMHgyQjczLCAweDU2MkMsIDB4NTYyQywgMHgxNTgyLA0KKyAgICAweDU2MkQsIDB4NTYyRCwgMHgxNTdFLCAweDU2MkUsIDB4NTYyRSwgMHgyMzc4LCAweDU2MkYsIDB4NTYyRiwgMHgyMUNGLA0KKyAgICAweDU2MzAsIDB4NTYzMCwgMHgyMzY4LCAweDU2MzEsIDB4NTYzMSwgMHgxMUY1LCAweDU2MzIsIDB4NTYzMiwgMHgwNEQ1LA0KKyAgICAweDU2MzMsIDB4NTYzMywgMHgyQjc1LCAweDU2MzQsIDB4NTYzNCwgMHgxMjQ5LCAweDU2MzUsIDB4NTYzNSwgMHgyMzcxLA0KKyAgICAweDU2MzYsIDB4NTYzNiwgMHgwREIwLCAweDU2MzcsIDB4NTYzNywgMHgyQjc2LCAweDU2MzgsIDB4NTYzOCwgMHgyMzY5LA0KKyAgICAweDU2MzksIDB4NTYzOSwgMHgxNTgwLCAweDU2M0EsIDB4NTYzQSwgMHgyQjc3LCAweDU2M0IsIDB4NTYzQiwgMHgwRjBBLA0KKyAgICAweDU2M0MsIDB4NTYzRSwgMHgyQjc4LCAweDU2M0YsIDB4NTYzRiwgMHgwNzkwLCAweDU2NDAsIDB4NTY0MCwgMHgyQjdCLA0KKyAgICAweDU2NDEsIDB4NTY0MSwgMHgyNjc0LCAweDU2NDIsIDB4NTY0QiwgMHgyQjdDLCAweDU2NEMsIDB4NTY0QywgMHgxNTg3LA0KKyAgICAweDU2NEQsIDB4NTY0RCwgMHgxNTgzLCAweDU2NEUsIDB4NTY0RSwgMHgxMDM0LCAweDU2NEYsIDB4NTY1MywgMHgyQjg2LA0KKyAgICAweDU2NTQsIDB4NTY1NCwgMHgxNTg4LCAweDU2NTUsIDB4NTY1NiwgMHgyQjhCLCAweDU2NTcsIDB4NTY1NywgMHgxNTgxLA0KKyAgICAweDU2NTgsIDB4NTY1OCwgMHgxNTdGLCAweDU2NTksIDB4NTY1OSwgMHgxNTg1LCAweDU2NUEsIDB4NTY1QiwgMHgyQjhELA0KKyAgICAweDU2NUMsIDB4NTY1QywgMHgxNTg2LCAweDU2NUQsIDB4NTY1RCwgMHgyMzZGLCAweDU2NUUsIDB4NTY1RiwgMHgyQjhGLA0KKyAgICAweDU2NjAsIDB4NTY2MCwgMHgyMzcwLCAweDU2NjEsIDB4NTY2MSwgMHgyQjkxLCAweDU2NjIsIDB4NTY2MiwgMHgxNTg0LA0KKyAgICAweDU2NjMsIDB4NTY2MywgMHgyQjkyLCAweDU2NjQsIDB4NTY2NCwgMHgxNThBLCAweDU2NjUsIDB4NTY2NSwgMHgyMzc2LA0KKyAgICAweDU2NjYsIDB4NTY2NiwgMHgyMzczLCAweDU2NjcsIDB4NTY2NywgMHgyQjkzLCAweDU2NjgsIDB4NTY2OCwgMHgwQzE2LA0KKyAgICAweDU2NjksIDB4NTY2OSwgMHgxMjYyLCAweDU2NkEsIDB4NTY2QSwgMHgxMTJFLCAweDU2NkIsIDB4NTY2QiwgMHgxNThDLA0KKyAgICAweDU2NkMsIDB4NTY2QywgMHgwRDYwLCAweDU2NkQsIDB4NTY2RSwgMHgyQjk0LCAweDU2NkYsIDB4NTY2RiwgMHgyMzdGLA0KKyAgICAweDU2NzAsIDB4NTY3MCwgMHgyQjk2LCAweDU2NzEsIDB4NTY3MSwgMHgxNThCLCAweDU2NzIsIDB4NTY3MiwgMHgyMzc0LA0KKyAgICAweDU2NzMsIDB4NTY3MywgMHgyQjk3LCAweDU2NzQsIDB4NTY3NCwgMHgyMEI1LCAweDU2NzUsIDB4NTY3NSwgMHgyQjk4LA0KKyAgICAweDU2NzYsIDB4NTY3NiwgMHgwNkJDLCAweDU2NzcsIDB4NTY3NywgMHgyQjk5LCAweDU2NzgsIDB4NTY3OCwgMHgxRURCLA0KKyAgICAweDU2NzksIDB4NTY3OSwgMHgyNjcyLCAweDU2N0EsIDB4NTY3QSwgMHgyQjlBLCAweDU2N0IsIDB4NTY3QywgMHgxNThELA0KKyAgICAweDU2N0QsIDB4NTY3RiwgMHgyQjlCLCAweDU2ODAsIDB4NTY4MCwgMHgyMzZFLCAweDU2ODEsIDB4NTY4NCwgMHgyQjlFLA0KKyAgICAweDU2ODUsIDB4NTY4NSwgMHgxNThGLCAweDU2ODYsIDB4NTY4NiwgMHgxNTg5LCAweDU2ODcsIDB4NTY4NywgMHgyMUI3LA0KKyAgICAweDU2ODgsIDB4NTY4QiwgMHgyQkEyLCAweDU2OEMsIDB4NTY4QywgMHgyMzc1LCAweDU2OEQsIDB4NTY4RCwgMHgyQkE2LA0KKyAgICAweDU2OEUsIDB4NTY4RSwgMHgwNzc2LCAweDU2OEYsIDB4NTY4RiwgMHgwRTNBLCAweDU2OTAsIDB4NTY5MiwgMHgyQkE3LA0KKyAgICAweDU2OTMsIDB4NTY5MywgMHgxNTkwLCAweDU2OTQsIDB4NTY5NCwgMHgyQkFBLCAweDU2OTUsIDB4NTY5NSwgMHgyMzgyLA0KKyAgICAweDU2OTYsIDB4NTY5OCwgMHgyQkFCLCAweDU2OTksIDB4NTY5OSwgMHgyMDlFLCAweDU2OUEsIDB4NTZBMiwgMHgyQkFFLA0KKyAgICAweDU2QTMsIDB4NTZBMywgMHgwRjY2LCAweDU2QTQsIDB4NTZBNSwgMHgyQkI3LCAweDU2QTYsIDB4NTZBNiwgMHgyMzZCLA0KKyAgICAweDU2QTcsIDB4NTZBNywgMHgyQkI5LCAweDU2QTgsIDB4NTZBOCwgMHgyMDM5LCAweDU2QTksIDB4NTZBRCwgMHgyQkJBLA0KKyAgICAweDU2QUUsIDB4NTZBRSwgMHgyNjlGLCAweDU2QUYsIDB4NTZBRiwgMHgxNTkxLCAweDU2QjAsIDB4NTZCMiwgMHgyQkJGLA0KKyAgICAweDU2QjMsIDB4NTZCMywgMHgyMzdELCAweDU2QjQsIDB4NTZCNCwgMHgyMUY1LCAweDU2QjUsIDB4NTZCNSwgMHgyQkMyLA0KKyAgICAweDU2QjYsIDB4NTZCNiwgMHgyMzgxLCAweDU2QjcsIDB4NTZCNywgMHgwQzlELCAweDU2QjgsIDB4NTZCQiwgMHgyQkMzLA0KKyAgICAweDU2QkMsIDB4NTZCQywgMHgwODkxLCAweDU2QkQsIDB4NTZCRiwgMHgyQkM3LCAweDU2QzAsIDB4NTZDMCwgMHgyMzdCLA0KKyAgICAweDU2QzEsIDB4NTZDMSwgMHgyMzdFLCAweDU2QzIsIDB4NTZDMiwgMHgyMUNDLCAweDU2QzMsIDB4NTZDNCwgMHgyQkNBLA0KKyAgICAweDU2QzUsIDB4NTZDNSwgMHgyMkRCLCAweDU2QzYsIDB4NTZDNywgMHgyQkNDLCAweDU2QzgsIDB4NTZDOCwgMHgyMzZBLA0KKyAgICAweDU2QzksIDB4NTZDOSwgMHgyNjg5LCAweDU2Q0EsIDB4NTZDQSwgMHgwQjM1LCAweDU2Q0IsIDB4NTZDQiwgMHgyQkNFLA0KKyAgICAweDU2Q0MsIDB4NTZDQywgMHgyNjk3LCAweDU2Q0QsIDB4NTZEMCwgMHgyQkNGLCAweDU2RDEsIDB4NTZEMSwgMHgyMkExLA0KKyAgICAweDU2RDIsIDB4NTZEMywgMHgyQkQzLCAweDU2RDQsIDB4NTZENCwgMHgxNTkyLCAweDU2RDUsIDB4NTZENiwgMHgyQkQ1LA0KKyAgICAweDU2RDcsIDB4NTZENywgMHgxNTkzLCAweDU2RDgsIDB4NTZEOSwgMHgyQkQ3LCAweDU2REEsIDB4NTZEQSwgMHgwQzcxLA0KKyAgICAweDU2REIsIDB4NTZEQiwgMHgwREI5LCAweDU2REMsIDB4NTZEQywgMHgyQkQ5LCAweDU2REQsIDB4NTZERCwgMHgxNTk0LA0KKyAgICAweDU2REUsIDB4NTZERSwgMHgwN0VELCAweDU2REYsIDB4NTZERiwgMHgxMjZDLCAweDU2RTAsIDB4NTZFMCwgMHgxMDc5LA0KKyAgICAweDU2RTEsIDB4NTZFMSwgMHgxNTk1LCAweDU2RTIsIDB4NTZFMiwgMHgwRTc2LCAweDU2RTMsIDB4NTZFMywgMHgyQkRBLA0KKyAgICAweDU2RTQsIDB4NTZFNCwgMHgwNjE5LCAweDU2RTUsIDB4NTZFQSwgMHgyQkRCLCAweDU2RUIsIDB4NTZFQiwgMHgxNTk3LA0KKyAgICAweDU2RUMsIDB4NTZFQywgMHgyQkUxLCAweDU2RUQsIDB4NTZFRCwgMHgxMEYzLCAweDU2RUUsIDB4NTZFRiwgMHgyQkUyLA0KKyAgICAweDU2RjAsIDB4NTZGMCwgMHgwOTkyLCAweDU2RjEsIDB4NTZGMSwgMHgwNTU0LCAweDU2RjIsIDB4NTZGMywgMHgyQkU0LA0KKyAgICAweDU2RjQsIDB4NTZGNCwgMHgwRUI2LCAweDU2RjUsIDB4NTZGNSwgMHgxNTk2LCAweDU2RjYsIDB4NTZGOCwgMHgyQkU2LA0KKyAgICAweDU2RjksIDB4NTZGOSwgMHgxNTk4LCAweDU2RkEsIDB4NTZGQSwgMHgwNzI1LCAweDU2RkIsIDB4NTZGQywgMHgyQkU5LA0KKyAgICAweDU2RkQsIDB4NTZGRCwgMHgwNzUzLCAweDU2RkUsIDB4NTZGRSwgMHgwRTZELCAweDU2RkYsIDB4NTZGRiwgMHgxNTk5LA0KKyAgICAweDU3MDAsIDB4NTcwMiwgMHgyQkVCLCAweDU3MDMsIDB4NTcwMywgMHgwQkYzLCAweDU3MDQsIDB4NTcwNCwgMHgxNTlBLA0KKyAgICAweDU3MDUsIDB4NTcwNSwgMHgyQkVFLCAweDU3MDYsIDB4NTcwNiwgMHgxMEY1LCAweDU3MDcsIDB4NTcwNywgMHgyMzgzLA0KKyAgICAweDU3MDgsIDB4NTcwOCwgMHgwQzgxLCAweDU3MDksIDB4NTcwOSwgMHgxNTlDLCAweDU3MEEsIDB4NTcwQSwgMHgxNTlCLA0KKyAgICAweDU3MEIsIDB4NTcwQiwgMHgxRjNELCAweDU3MEMsIDB4NTcwQywgMHgyQkVGLCAweDU3MEQsIDB4NTcwRCwgMHgyMThGLA0KKyAgICAweDU3MEUsIDB4NTcxMSwgMHgyQkYwLCAweDU3MTIsIDB4NTcxMiwgMHgyMjQ2LCAweDU3MTMsIDB4NTcxMywgMHgyMjQ4LA0KKyAgICAweDU3MTQsIDB4NTcxNSwgMHgyQkY0LCAweDU3MTYsIDB4NTcxNiwgMHgyMTdFLCAweDU3MTcsIDB4NTcxNywgMHgyQkY2LA0KKyAgICAweDU3MTgsIDB4NTcxOCwgMHgyMTgwLCAweDU3MTksIDB4NTcxQiwgMHgyQkY3LCAweDU3MUMsIDB4NTcxQywgMHgxNTlELA0KKyAgICAweDU3MUQsIDB4NTcxRSwgMHgyQkZBLCAweDU3MUYsIDB4NTcxRiwgMHgwRTcyLCAweDU3MjAsIDB4NTcyMiwgMHgyQkZDLA0KKyAgICAweDU3MjMsIDB4NTcyMywgMHgwRDNDLCAweDU3MjQsIDB4NTcyNywgMHgyQkZGLCAweDU3MjgsIDB4NTcyOCwgMHgxMTFELA0KKyAgICAweDU3MjksIDB4NTcyOSwgMHgxM0E3LCAweDU3MkEsIDB4NTcyQSwgMHgxM0E5LCAweDU3MkIsIDB4NTcyQiwgMHgyQzAzLA0KKyAgICAweDU3MkMsIDB4NTcyQywgMHgxM0E4LCAweDU3MkQsIDB4NTcyRCwgMHgwNzQwLCAweDU3MkUsIDB4NTcyRiwgMHgxM0FDLA0KKyAgICAweDU3MzAsIDB4NTczMCwgMHgwNUI5LCAweDU3MzEsIDB4NTczMiwgMHgyQzA0LCAweDU3MzMsIDB4NTczMywgMHgxM0FBLA0KKyAgICAweDU3MzQsIDB4NTczOCwgMHgyQzA2LCAweDU3MzksIDB4NTczOSwgMHgxM0FCLCAweDU3M0EsIDB4NTczQSwgMHgwNEM2LA0KKyAgICAweDU3M0IsIDB4NTczQiwgMHgxM0FGLCAweDU3M0MsIDB4NTczRCwgMHgyQzBCLCAweDU3M0UsIDB4NTczRSwgMHgwODBELA0KKyAgICAweDU3M0YsIDB4NTczRiwgMHgyQzBELCAweDU3NDAsIDB4NTc0MCwgMHgxMUI2LCAweDU3NDEsIDB4NTc0MSwgMHgyQzBFLA0KKyAgICAweDU3NDIsIDB4NTc0MiwgMHgxM0IwLCAweDU3NDMsIDB4NTc0NiwgMHgyQzBGLCAweDU3NDcsIDB4NTc0NywgMHgwOTI4LA0KKyAgICAweDU3NDgsIDB4NTc0OSwgMHgyQzEzLCAweDU3NEEsIDB4NTc0QSwgMHgwNjU4LCAweDU3NEIsIDB4NTc0QiwgMHgyQzE1LA0KKyAgICAweDU3NEMsIDB4NTc0QywgMHgxM0EwLCAweDU3NEQsIDB4NTc0RCwgMHgwRTAxLCAweDU3NEUsIDB4NTc0RSwgMHgwOTNGLA0KKyAgICAweDU3NEYsIDB4NTc0RiwgMHgwN0NBLCAweDU3NTAsIDB4NTc1MCwgMHgxMjU1LCAweDU3NTEsIDB4NTc1MSwgMHgwOTYwLA0KKyAgICAweDU3NTIsIDB4NTc1NiwgMHgyQzE2LCAweDU3NTcsIDB4NTc1NywgMHgwOTc2LCAweDU3NTgsIDB4NTc1OSwgMHgyQzFCLA0KKyAgICAweDU3NUEsIDB4NTc1QSwgMHgwODU0LCAweDU3NUIsIDB4NTc1QiwgMHgwRTA2LCAweDU3NUMsIDB4NTc1QywgMHgxM0FFLA0KKyAgICAweDU3NUQsIDB4NTc1RCwgMHgwM0RFLCAweDU3NUUsIDB4NTc1RSwgMHgwRUZBLCAweDU3NUYsIDB4NTc1RiwgMHgwNjc1LA0KKyAgICAweDU3NjAsIDB4NTc2MCwgMHgxMjE2LCAweDU3NjEsIDB4NTc2MSwgMHgwQkUxLCAweDU3NjIsIDB4NTc2MywgMHgyQzFELA0KKyAgICAweDU3NjQsIDB4NTc2NCwgMHgwOThGLCAweDU3NjUsIDB4NTc2NSwgMHgyQzFGLCAweDU3NjYsIDB4NTc2NiwgMHgwRTBDLA0KKyAgICAweDU3NjcsIDB4NTc2NywgMHgyQzIwLCAweDU3NjgsIDB4NTc2OCwgMHgxM0I3LCAweDU3NjksIDB4NTc2OSwgMHgxM0IxLA0KKyAgICAweDU3NkEsIDB4NTc2QSwgMHgwQkQ5LCAweDU3NkIsIDB4NTc2QiwgMHgxM0IzLCAweDU3NkMsIDB4NTc2QywgMHgyQzIxLA0KKyAgICAweDU3NkQsIDB4NTc2RCwgMHgxM0I4LCAweDU3NkUsIDB4NTc2RSwgMHgyQzIyLCAweDU3NkYsIDB4NTc2RiwgMHgwQkI4LA0KKyAgICAweDU3NzAsIDB4NTc3MiwgMHgyQzIzLCAweDU3NzMsIDB4NTc3MywgMHgxM0JBLCAweDU3NzQsIDB4NTc3NSwgMHgyQzI2LA0KKyAgICAweDU3NzYsIDB4NTc3NiwgMHgxM0I5LCAweDU3NzcsIDB4NTc3NywgMHgwOTRELCAweDU3NzgsIDB4NTc3QSwgMHgyQzI4LA0KKyAgICAweDU3N0IsIDB4NTc3QiwgMHgxM0I2LCAweDU3N0MsIDB4NTc3QywgMHgxM0I1LCAweDU3N0QsIDB4NTc4MSwgMHgyQzJCLA0KKyAgICAweDU3ODIsIDB4NTc4MiwgMHgwNTNDLCAweDU3ODMsIDB4NTc4MywgMHgwOTk3LCAweDU3ODQsIDB4NTc4NCwgMHgwQTQ5LA0KKyAgICAweDU3ODUsIDB4NTc4NSwgMHgxM0IyLCAweDU3ODYsIDB4NTc4NiwgMHgxM0I0LCAweDU3ODcsIDB4NTc4QSwgMHgyQzMwLA0KKyAgICAweDU3OEIsIDB4NTc4QiwgMHgwRjk4LCAweDU3OEMsIDB4NTc4QywgMHgxM0JELCAweDU3OEQsIDB4NTc5MSwgMHgyQzM0LA0KKyAgICAweDU3OTIsIDB4NTc5MiwgMHgwOUM4LCAweDU3OTMsIDB4NTc5MywgMHgxM0MyLCAweDU3OTQsIDB4NTc5QSwgMHgyQzM5LA0KKyAgICAweDU3OUIsIDB4NTc5QiwgMHgwNjIxLCAweDU3OUMsIDB4NTc5RiwgMHgyQzQwLCAweDU3QTAsIDB4NTdBMCwgMHgxM0MzLA0KKyAgICAweDU3QTEsIDB4NTdBMSwgMHgxM0EyLCAweDU3QTIsIDB4NTdBMiwgMHgwNzExLCAweDU3QTMsIDB4NTdBMywgMHgxMEVFLA0KKyAgICAweDU3QTQsIDB4NTdBNCwgMHgxM0JDLCAweDU3QTUsIDB4NTdBNSwgMHgyQzQ0LCAweDU3QTYsIDB4NTdBNiwgMHgwOTVFLA0KKyAgICAweDU3QTcsIDB4NTdBNywgMHgxM0MwLCAweDU3QTgsIDB4NTdBOCwgMHgyQzQ1LCAweDU3QTksIDB4NTdBOSwgMHgxM0ExLA0KKyAgICAweDU3QUEsIDB4NTdBQSwgMHgyQzQ2LCAweDU3QUIsIDB4NTdBQiwgMHgwNUM3LCAweDU3QUMsIDB4NTdBQywgMHgyQzQ3LA0KKyAgICAweDU3QUQsIDB4NTdBRCwgMHgxM0JCLCAweDU3QUUsIDB4NTdBRSwgMHgwOTcyLCAweDU3QUYsIDB4NTdCMSwgMHgyQzQ4LA0KKyAgICAweDU3QjIsIDB4NTdCMiwgMHgxM0JFLCAweDU3QjMsIDB4NTdCMywgMHgyQzRCLCAweDU3QjQsIDB4NTdCNCwgMHgxM0MxLA0KKyAgICAweDU3QjUsIDB4NTdCNywgMHgyQzRDLCAweDU3QjgsIDB4NTdCOCwgMHgxM0M5LCAweDU3QjksIDB4NTdDMSwgMHgyQzRGLA0KKyAgICAweDU3QzIsIDB4NTdDMiwgMHgwNkZBLCAweDU3QzMsIDB4NTdDMywgMHgwM0FFLCAweDU3QzQsIDB4NTdDQSwgMHgyQzU4LA0KKyAgICAweDU3Q0IsIDB4NTdDQiwgMHgwQTk4LCAweDU3Q0MsIDB4NTdDRCwgMHgyQzVGLCAweDU3Q0UsIDB4NTdDRSwgMHgwNEVDLA0KKyAgICAweDU3Q0YsIDB4NTdDRiwgMHgxM0JGLCAweDU3RDAsIDB4NTdEMSwgMHgyQzYxLCAweDU3RDIsIDB4NTdEMiwgMHgxM0M4LA0KKyAgICAweDU3RDMsIDB4NTdEMywgMHgyQzYzLCAweDU3RDQsIDB4NTdENCwgMHgwQkYxLCAweDU3RDUsIDB4NTdENSwgMHgxM0M0LA0KKyAgICAweDU3RDYsIDB4NTdENywgMHgyQzY0LCAweDU3RDgsIDB4NTdEOCwgMHgxM0M1LCAweDU3RDksIDB4NTdEOSwgMHgxM0M3LA0KKyAgICAweDU3REEsIDB4NTdEQSwgMHgxM0M2LCAweDU3REIsIDB4NTdEQywgMHgyQzY2LCAweDU3REQsIDB4NTdERCwgMHgxM0NFLA0KKyAgICAweDU3REUsIDB4NTdERSwgMHgyQzY4LCAweDU3REYsIDB4NTdERiwgMHgxMEQ3LCAweDU3RTAsIDB4NTdFMCwgMHgwNDgxLA0KKyAgICAweDU3RTEsIDB4NTdFMSwgMHgyMzJBLCAweDU3RTIsIDB4NTdFMywgMHgyQzY5LCAweDU3RTQsIDB4NTdFNCwgMHgxM0NELA0KKyAgICAweDU3RTUsIDB4NTdFQywgMHgyQzZCLCAweDU3RUQsIDB4NTdFRCwgMHgxM0QyLCAweDU3RUUsIDB4NTdFRSwgMHgyQzczLA0KKyAgICAweDU3RUYsIDB4NTdFRiwgMHgxM0NCLCAweDU3RjAsIDB4NTdGMywgMHgyQzc0LCAweDU3RjQsIDB4NTdGNCwgMHgxM0NBLA0KKyAgICAweDU3RjUsIDB4NTdGNiwgMHgyQzc4LCAweDU3RjcsIDB4NTdGNywgMHgyMjhCLCAweDU3RjgsIDB4NTdGOCwgMHgxM0NDLA0KKyAgICAweDU3RjksIDB4NTdGOSwgMHgwQkExLCAweDU3RkEsIDB4NTdGQSwgMHgwODBFLCAweDU3RkIsIDB4NTdGQywgMHgyQzdBLA0KKyAgICAweDU3RkQsIDB4NTdGRCwgMHgxM0QxLCAweDU3RkUsIDB4NTdGRiwgMHgyQzdDLCAweDU4MDAsIDB4NTgwMCwgMHgxM0QzLA0KKyAgICAweDU4MDEsIDB4NTgwMSwgMHgyQzdFLCAweDU4MDIsIDB4NTgwMiwgMHgwRTE2LCAweDU4MDMsIDB4NTgwNCwgMHgyQzdGLA0KKyAgICAweDU4MDUsIDB4NTgwNSwgMHgxRjg1LCAweDU4MDYsIDB4NTgwNiwgMHgwNjEwLCAweDU4MDcsIDB4NTgwNywgMHgxNDRDLA0KKyAgICAweDU4MDgsIDB4NTgwOSwgMHgyQzgxLCAweDU4MEEsIDB4NTgwQSwgMHgyMzI1LCAweDU4MEIsIDB4NTgwQiwgMHgxM0NGLA0KKyAgICAweDU4MEMsIDB4NTgwQywgMHgyQzgzLCAweDU4MEQsIDB4NTgwRCwgMHgxM0QwLCAweDU4MEUsIDB4NTgxMCwgMHgyQzg0LA0KKyAgICAweDU4MTEsIDB4NTgxMSwgMHgwQzMyLCAweDU4MTIsIDB4NTgxNCwgMHgyQzg3LCAweDU4MTUsIDB4NTgxNSwgMHgwNjI4LA0KKyAgICAweDU4MTYsIDB4NTgxNiwgMHgyMzJDLCAweDU4MTcsIDB4NTgxOCwgMHgyQzhBLCAweDU4MTksIDB4NTgxOSwgMHgxM0Q1LA0KKyAgICAweDU4MUEsIDB4NTgxQywgMHgyQzhDLCAweDU4MUQsIDB4NTgxRCwgMHgyMzJFLCAweDU4MUUsIDB4NTgxRSwgMHgxM0Q0LA0KKyAgICAweDU4MUYsIDB4NTgxRiwgMHgyQzhGLCAweDU4MjAsIDB4NTgyMCwgMHgxM0Q3LCAweDU4MjEsIDB4NTgyMSwgMHgwNDBELA0KKyAgICAweDU4MjIsIDB4NTgyMywgMHgyQzkwLCAweDU4MjQsIDB4NTgyNCwgMHgwNUFELCAweDU4MjUsIDB4NTgyOSwgMHgyQzkyLA0KKyAgICAweDU4MkEsIDB4NTgyQSwgMHgwOTNELCAweDU4MkIsIDB4NTgyRSwgMHgyQzk3LCAweDU4MkYsIDB4NTgyRiwgMHgyMjA1LA0KKyAgICAweDU4MzAsIDB4NTgzMCwgMHgxMDA4LCAweDU4MzEsIDB4NTgzMSwgMHgxRTM4LCAweDU4MzIsIDB4NTgzMywgMHgyQzlCLA0KKyAgICAweDU4MzQsIDB4NTgzNCwgMHgxRTczLCAweDU4MzUsIDB4NTgzNSwgMHgwNjAxLCAweDU4MzYsIDB4NTg0MywgMHgyQzlELA0KKyAgICAweDU4NDQsIDB4NTg0NCwgMHgxM0Q2LCAweDU4NDUsIDB4NTg0OSwgMHgyQ0FCLCAweDU4NEEsIDB4NTg0QSwgMHgxRkUzLA0KKyAgICAweDU4NEIsIDB4NTg0QiwgMHgyMzM5LCAweDU4NEMsIDB4NTg0QywgMHgwREVGLCAweDU4NEQsIDB4NTg0RCwgMHgxOUEzLA0KKyAgICAweDU4NEUsIDB4NTg0RSwgMHgyQ0IwLCAweDU4NEYsIDB4NTg0RiwgMHgyMzJCLCAweDU4NTAsIDB4NTg1MCwgMHgyQ0IxLA0KKyAgICAweDU4NTEsIDB4NTg1MSwgMHgwREQxLCAweDU4NTIsIDB4NTg1MiwgMHgyMzJELCAweDU4NTMsIDB4NTg1MywgMHgyQ0IyLA0KKyAgICAweDU4NTQsIDB4NTg1NCwgMHgwREYzLCAweDU4NTUsIDB4NTg1NiwgMHgyQ0IzLCAweDU4NTcsIDB4NTg1NywgMHgyMTdGLA0KKyAgICAweDU4NTgsIDB4NTg1OCwgMHgwRTE0LCAweDU4NTksIDB4NTg1RCwgMHgyQ0I1LCAweDU4NUUsIDB4NTg1RSwgMHgwQ0Q2LA0KKyAgICAweDU4NUYsIDB4NTg2MSwgMHgyQ0JBLCAweDU4NjIsIDB4NTg2MiwgMHgyMUE3LCAweDU4NjMsIDB4NTg2MywgMHgyQ0JELA0KKyAgICAweDU4NjQsIDB4NTg2NCwgMHgyMzJGLCAweDU4NjUsIDB4NTg2NSwgMHgxM0Q4LCAweDU4NjYsIDB4NTg2QSwgMHgyQ0JFLA0KKyAgICAweDU4NkIsIDB4NTg2QiwgMHgwRTQxLCAweDU4NkMsIDB4NTg2QywgMHgxM0Q5LCAweDU4NkQsIDB4NTg3NCwgMHgyQ0MzLA0KKyAgICAweDU4NzUsIDB4NTg3NSwgMHgxRTdELCAweDU4NzYsIDB4NTg3OCwgMHgyQ0NCLCAweDU4NzksIDB4NTg3OSwgMHgyMEQ2LA0KKyAgICAweDU4N0EsIDB4NTg3RCwgMHgyQ0NFLCAweDU4N0UsIDB4NTg3RSwgMHgxM0EzLCAweDU4N0YsIDB4NTg3RiwgMHgyQ0QyLA0KKyAgICAweDU4ODAsIDB4NTg4MCwgMHgxM0RELCAweDU4ODEsIDB4NTg4MSwgMHgxM0RBLCAweDU4ODIsIDB4NTg4MiwgMHgyQ0QzLA0KKyAgICAweDU4ODMsIDB4NTg4MywgMHgwOEUyLCAweDU4ODQsIDB4NTg4NCwgMHgyQ0Q0LCAweDU4ODUsIDB4NTg4NSwgMHgwRDkyLA0KKyAgICAweDU4ODYsIDB4NTg4OCwgMHgyQ0Q1LCAweDU4ODksIDB4NTg4OSwgMHgxM0RCLCAweDU4OEEsIDB4NTg4QSwgMHgxRUMyLA0KKyAgICAweDU4OEIsIDB4NTg5MSwgMHgyQ0Q4LCAweDU4OTIsIDB4NTg5MiwgMHgwRDAzLCAweDU4OTMsIDB4NTg5MywgMHgwQjFDLA0KKyAgICAweDU4OTQsIDB4NTg5OCwgMHgyQ0RGLCAweDU4OTksIDB4NTg5OSwgMHgwQzNBLCAweDU4OUEsIDB4NTg5QSwgMHgxM0RDLA0KKyAgICAweDU4OUIsIDB4NTg5QiwgMHgyQ0U0LCAweDU4OUMsIDB4NTg5QywgMHgyMkIyLCAweDU4OUQsIDB4NTg5RCwgMHgyQ0U1LA0KKyAgICAweDU4OUUsIDB4NTg5RSwgMHgxMTM5LCAweDU4OUYsIDB4NTg5RiwgMHgwRkIxLCAweDU4QTAsIDB4NThBNywgMHgyQ0U2LA0KKyAgICAweDU4QTgsIDB4NThBOCwgMHgwQjBFLCAweDU4QTksIDB4NThBOSwgMHgwNjE0LCAweDU4QUEsIDB4NThBRCwgMHgyQ0VFLA0KKyAgICAweDU4QUUsIDB4NThBRSwgMHgxRURGLCAweDU4QUYsIDB4NThCMiwgMHgyQ0YyLCAweDU4QjMsIDB4NThCMywgMHgxRUY5LA0KKyAgICAweDU4QjQsIDB4NThCQSwgMHgyQ0Y2LCAweDU4QkIsIDB4NThCQiwgMHgyMEQ5LCAweDU4QkMsIDB4NThCQywgMHgxM0E0LA0KKyAgICAweDU4QkQsIDB4NThCRCwgMHgyQ0ZELCAweDU4QkUsIDB4NThCRSwgMHgxRkRELCAweDU4QkYsIDB4NThDMCwgMHgyQ0ZFLA0KKyAgICAweDU4QzEsIDB4NThDMSwgMHgwNDQzLCAweDU4QzIsIDB4NThDNCwgMHgyRDAwLCAweDU4QzUsIDB4NThDNSwgMHgxM0E1LA0KKyAgICAweDU4QzYsIDB4NThDNiwgMHgyRDAzLCAweDU4QzcsIDB4NThDNywgMHgyMTY3LCAweDU4QzgsIDB4NThEMCwgMHgyRDA0LA0KKyAgICAweDU4RDEsIDB4NThEMSwgMHgxM0E2LCAweDU4RDIsIDB4NThEMiwgMHgyRDBELCAweDU4RDMsIDB4NThEMywgMHgyMUVELA0KKyAgICAweDU4RDQsIDB4NThENCwgMHgyRDBFLCAweDU4RDUsIDB4NThENSwgMHgwNzc1LCAweDU4RDYsIDB4NThENywgMHgyRDBGLA0KKyAgICAweDU4RDgsIDB4NThEOCwgMHgyMDA3LCAweDU4RDksIDB4NThEOSwgMHgyMzI2LCAweDU4REEsIDB4NThEQSwgMHgyMzI5LA0KKyAgICAweDU4REIsIDB4NThERCwgMHgyRDExLCAweDU4REUsIDB4NThERSwgMHgxRjUyLCAweDU4REYsIDB4NThERiwgMHgyMDNCLA0KKyAgICAweDU4RTAsIDB4NThFMCwgMHgyMzI4LCAweDU4RTEsIDB4NThFMSwgMHgyRDE0LCAweDU4RTIsIDB4NThFMiwgMHgyMzI3LA0KKyAgICAweDU4RTMsIDB4NThFMywgMHgyRDE1LCAweDU4RTQsIDB4NThFNCwgMHgwQzlCLCAweDU4RTUsIDB4NThFOCwgMHgyRDE2LA0KKyAgICAweDU4RTksIDB4NThFOSwgMHgxRTJCLCAweDU4RUEsIDB4NThFQSwgMHgyRDFBLCAweDU4RUIsIDB4NThFQiwgMHgwRDU2LA0KKyAgICAweDU4RUMsIDB4NThFQywgMHgwQ0E0LCAweDU4RUQsIDB4NThFRCwgMHgyRDFCLCAweDU4RUUsIDB4NThFRSwgMHgxMjEwLA0KKyAgICAweDU4RUYsIDB4NThFRiwgMHgyMkFFLCAweDU4RjAsIDB4NThGMCwgMHgwRDMyLCAweDU4RjEsIDB4NThGMiwgMHgyRDFDLA0KKyAgICAweDU4RjMsIDB4NThGMywgMHgwOTU0LCAweDU4RjQsIDB4NThGNSwgMHgyRDFFLCAweDU4RjYsIDB4NThGNiwgMHgwN0FGLA0KKyAgICAweDU4RjcsIDB4NThGOCwgMHgyRDIwLCAweDU4RjksIDB4NThGOSwgMHgxMDQzLCAweDU4RkEsIDB4NThGQSwgMHgxRjQ5LA0KKyAgICAweDU4RkIsIDB4NThGQywgMHgyRDIyLCAweDU4RkQsIDB4NThGRCwgMHgyMTM4LCAweDU4RkUsIDB4NThGRiwgMHgyRDI0LA0KKyAgICAweDU5MDAsIDB4NTkwMSwgMHgyRDI2LCAweDU5MDIsIDB4NTkwMiwgMHgxNjFDLCAweDU5MDMsIDB4NTkwMywgMHgyRDI4LA0KKyAgICAweDU5MDQsIDB4NTkwNCwgMHgwNTI5LCAweDU5MDUsIDB4NTkwNiwgMHgyRDI5LCAweDU5MDcsIDB4NTkwNywgMHgwNDIxLA0KKyAgICAweDU5MDgsIDB4NTkwQywgMHgyRDJCLCAweDU5MEQsIDB4NTkwRCwgMHgwNkFGLCAweDU5MEUsIDB4NTkwRSwgMHgyRDMwLA0KKyAgICAweDU5MEYsIDB4NTkwRiwgMHgwRjMxLCAweDU5MTAsIDB4NTkxMywgMHgyRDMxLCAweDU5MTQsIDB4NTkxNCwgMHgxMkZCLA0KKyAgICAweDU5MTUsIDB4NTkxNSwgMHgwRjEzLCAweDU5MTYsIDB4NTkxNiwgMHgwRTkzLCAweDU5MTcsIDB4NTkxOCwgMHgyRDM1LA0KKyAgICAweDU5MTksIDB4NTkxOSwgMHgxMzAxLCAweDU5MUEsIDB4NTkxQSwgMHgwNjFGLCAweDU5MUIsIDB4NTkxQiwgMHgyRDM3LA0KKyAgICAweDU5MUMsIDB4NTkxQywgMHgxMDQwLCAweDU5MUQsIDB4NTkxRSwgMHgyRDM4LCAweDU5MUYsIDB4NTkxRiwgMHgwNzE0LA0KKyAgICAweDU5MjAsIDB4NTkyMSwgMHgyRDNBLCAweDU5MjIsIDB4NTkyMiwgMHgyMDgxLCAweDU5MjMsIDB4NTkyMywgMHgyRDNDLA0KKyAgICAweDU5MjQsIDB4NTkyNCwgMHgxNjFCLCAweDU5MjUsIDB4NTkyNSwgMHgxNjE5LCAweDU5MjYsIDB4NTkyNiwgMHgyRDNELA0KKyAgICAweDU5MjcsIDB4NTkyNywgMHgwNTc2LCAweDU5MjgsIDB4NTkyOCwgMHgyRDNFLCAweDU5MjksIDB4NTkyOSwgMHgwRTNGLA0KKyAgICAweDU5MkEsIDB4NTkyQSwgMHgwREZFLCAweDU5MkIsIDB4NTkyQiwgMHgwNjhGLCAweDU5MkMsIDB4NTkyQywgMHgyRDNGLA0KKyAgICAweDU5MkQsIDB4NTkyRCwgMHgxMjY4LCAweDU5MkUsIDB4NTkyRSwgMHgxMDE0LCAweDU5MkYsIDB4NTkyRiwgMHgwNzcyLA0KKyAgICAweDU5MzAsIDB4NTkzMCwgMHgyRDQwLCAweDU5MzEsIDB4NTkzMSwgMHgwRDNFLCAweDU5MzIsIDB4NTkzMywgMHgyRDQxLA0KKyAgICAweDU5MzQsIDB4NTkzNCwgMHgwRTY4LCAweDU5MzUsIDB4NTkzNiwgMHgyRDQzLCAweDU5MzcsIDB4NTkzNywgMHgxMDRCLA0KKyAgICAweDU5MzgsIDB4NTkzOCwgMHgwOTcxLCAweDU5MzksIDB4NTkzOSwgMHgwODQzLCAweDU5M0EsIDB4NTkzQSwgMHgwNjIwLA0KKyAgICAweDU5M0IsIDB4NTkzQiwgMHgyRDQ1LCAweDU5M0MsIDB4NTkzQywgMHgxNEFGLCAweDU5M0QsIDB4NTkzRCwgMHgyRDQ2LA0KKyAgICAweDU5M0UsIDB4NTkzRSwgMHgxRjdDLCAweDU5M0YsIDB4NTk0MCwgMHgyRDQ3LCAweDU5NDEsIDB4NTk0MSwgMHgxNEIwLA0KKyAgICAweDU5NDIsIDB4NTk0MiwgMHgxMzhDLCAweDU5NDMsIDB4NTk0MywgMHgyRDQ5LCAweDU5NDQsIDB4NTk0NCwgMHgxMDAyLA0KKyAgICAweDU5NDUsIDB4NTk0NiwgMHgyRDRBLCAweDU5NDcsIDB4NTk0NywgMHgwQzA1LCAweDU5NDgsIDB4NTk0OCwgMHgwQjMxLA0KKyAgICAweDU5NDksIDB4NTk0OSwgMHgwNjhCLCAweDU5NEEsIDB4NTk0QSwgMHgyRDRDLCAweDU5NEIsIDB4NTk0QiwgMHgwNjc5LA0KKyAgICAweDU5NEMsIDB4NTk0RCwgMHgyRDRELCAweDU5NEUsIDB4NTk0RSwgMHgwOTg5LCAweDU5NEYsIDB4NTk0RiwgMHgxMjNELA0KKyAgICAweDU5NTAsIDB4NTk1MCwgMHgyRDRGLCAweDU5NTEsIDB4NTk1MSwgMHgwQzE0LCAweDU5NTIsIDB4NTk1MywgMHgyRDUwLA0KKyAgICAweDU5NTQsIDB4NTk1NCwgMHgwNDI1LCAweDU5NTUsIDB4NTk1NSwgMHgxNEIyLCAweDU5NTYsIDB4NTk1NiwgMHgwODgyLA0KKyAgICAweDU5NTcsIDB4NTk1NywgMHgwRTJBLCAweDU5NTgsIDB4NTk1OCwgMHgxNEI0LCAweDU5NTksIDB4NTk1OSwgMHgyRDUyLA0KKyAgICAweDU5NUEsIDB4NTk1QSwgMHgxNEIzLCAweDU5NUIsIDB4NTk1RiwgMHgyRDUzLCAweDU5NjAsIDB4NTk2MCwgMHgwNUNELA0KKyAgICAweDU5NjEsIDB4NTk2MSwgMHgyRDU4LCAweDU5NjIsIDB4NTk2MiwgMHgwRDE2LCAweDU5NjMsIDB4NTk2NCwgMHgyRDU5LA0KKyAgICAweDU5NjUsIDB4NTk2NSwgMHgwM0NELCAweDU5NjYsIDB4NTk2OCwgMHgyRDVCLCAweDU5NjksIDB4NTk2OSwgMHgyMzVCLA0KKyAgICAweDU5NkEsIDB4NTk2QSwgMHgxRURFLCAweDU5NkIsIDB4NTk2QiwgMHgyRDVFLCAweDU5NkMsIDB4NTk2QywgMHgxRkEyLA0KKyAgICAweDU5NkQsIDB4NTk2RCwgMHgyRDVGLCAweDU5NkUsIDB4NTk2RSwgMHgxRUZBLCAweDU5NkYsIDB4NTk3MiwgMHgyRDYwLA0KKyAgICAweDU5NzMsIDB4NTk3MywgMHgwQjZGLCAweDU5NzQsIDB4NTk3NCwgMHgwQjZDLCAweDU5NzUsIDB4NTk3NSwgMHgyRDY0LA0KKyAgICAweDU5NzYsIDB4NTk3NiwgMHgwQjJGLCAweDU5NzcsIDB4NTk3NywgMHgyRDY1LCAweDU5NzgsIDB4NTk3OCwgMHgwODVDLA0KKyAgICAweDU5NzksIDB4NTk3OSwgMHgwREYyLCAweDU5N0EsIDB4NTk3QywgMHgyRDY2LCAweDU5N0QsIDB4NTk3RCwgMHgwNzdBLA0KKyAgICAweDU5N0UsIDB4NTk4MCwgMHgyRDY5LCAweDU5ODEsIDB4NTk4MSwgMHgxNzc1LCAweDU5ODIsIDB4NTk4MiwgMHgwQ0MyLA0KKyAgICAweDU5ODMsIDB4NTk4MywgMHgxNzc2LCAweDU5ODQsIDB4NTk4NCwgMHgwRUFFLCAweDU5ODUsIDB4NTk4NSwgMHgyRDZDLA0KKyAgICAweDU5ODYsIDB4NTk4NiwgMHgxMjBFLCAweDU5ODcsIDB4NTk4NywgMHgwNkI5LCAweDU5ODgsIDB4NTk4OCwgMHgwQThGLA0KKyAgICAweDU5ODksIDB4NTk4OSwgMHgyRDZELCAweDU5OEEsIDB4NTk4QSwgMHgwQ0FDLCAweDU5OEIsIDB4NTk4QywgMHgyRDZFLA0KKyAgICAweDU5OEQsIDB4NTk4RCwgMHgxNzc3LCAweDU5OEUsIDB4NTk5MSwgMHgyRDcwLCAweDU5OTIsIDB4NTk5MiwgMHgwNjA5LA0KKyAgICAweDU5OTMsIDB4NTk5MywgMHgwODNFLCAweDU5OTQsIDB4NTk5NSwgMHgyRDc0LCAweDU5OTYsIDB4NTk5NiwgMHgxMDI2LA0KKyAgICAweDU5OTcsIDB4NTk5NywgMHgxNzdCLCAweDU5OTgsIDB4NTk5OCwgMHgyRDc2LCAweDU5OTksIDB4NTk5OSwgMHgwQUYzLA0KKyAgICAweDU5OUEsIDB4NTk5QywgMHgyRDc3LCAweDU5OUQsIDB4NTk5RCwgMHgyMkFELCAweDU5OUUsIDB4NTk5RSwgMHgxNzdFLA0KKyAgICAweDU5OUYsIDB4NTlBMiwgMHgyRDdBLCAweDU5QTMsIDB4NTlBMywgMHgxNzdBLCAweDU5QTQsIDB4NTlBNCwgMHgxNzdGLA0KKyAgICAweDU5QTUsIDB4NTlBNSwgMHgwRTg4LCAweDU5QTYsIDB4NTlBNywgMHgyRDdFLCAweDU5QTgsIDB4NTlBOCwgMHgwNjVFLA0KKyAgICAweDU5QTksIDB4NTlBQSwgMHgxNzc4LCAweDU5QUIsIDB4NTlBQiwgMHgxNzdELCAweDU5QUMsIDB4NTlBRCwgMHgyRDgwLA0KKyAgICAweDU5QUUsIDB4NTlBRSwgMHgwQjQwLCAweDU5QUYsIDB4NTlBRiwgMHgxNzgyLCAweDU5QjAsIDB4NTlCMSwgMHgyRDgyLA0KKyAgICAweDU5QjIsIDB4NTlCMiwgMHgxNzgxLCAweDU5QjMsIDB4NTlCOCwgMHgyRDg0LCAweDU5QjksIDB4NTlCOSwgMHgwQUM4LA0KKyAgICAweDU5QkEsIDB4NTlCQSwgMHgyRDhBLCAweDU5QkIsIDB4NTlCQiwgMHgwQkZELCAweDU5QkMsIDB4NTlCRCwgMHgyRDhCLA0KKyAgICAweDU5QkUsIDB4NTlCRSwgMHgxNzg0LCAweDU5QkYsIDB4NTlDNSwgMHgyRDhELCAweDU5QzYsIDB4NTlDNiwgMHgwQjFBLA0KKyAgICAweDU5QzcsIDB4NTlDOSwgMHgyRDk0LCAweDU5Q0EsIDB4NTlDQSwgMHgxNzdDLCAweDU5Q0IsIDB4NTlDQiwgMHgwRDUzLA0KKyAgICAweDU5Q0MsIDB4NTlDRiwgMHgyRDk3LCAweDU5RDAsIDB4NTlEMCwgMHgwOEI0LCAweDU5RDEsIDB4NTlEMSwgMHgwNzFDLA0KKyAgICAweDU5RDIsIDB4NTlEMiwgMHgxNzgwLCAweDU5RDMsIDB4NTlEMywgMHgwRkEwLCAweDU5RDQsIDB4NTlENCwgMHgwRUJFLA0KKyAgICAweDU5RDUsIDB4NTlENiwgMHgyRDlCLCAweDU5RDcsIDB4NTlENywgMHgxNzgzLCAweDU5RDgsIDB4NTlEOCwgMHgxNzhBLA0KKyAgICAweDU5RDksIDB4NTlEOSwgMHgyRDlELCAweDU5REEsIDB4NTlEQSwgMHgxMDJELCAweDU5REIsIDB4NTlEQiwgMHgyRDlFLA0KKyAgICAweDU5REMsIDB4NTlEQywgMHgwODdCLCAweDU5REQsIDB4NTlERCwgMHgxNzg3LCAweDU5REUsIDB4NTlFMiwgMHgyRDlGLA0KKyAgICAweDU5RTMsIDB4NTlFMywgMHgxNzg5LCAweDU5RTQsIDB4NTlFNCwgMHgyREE0LCAweDU5RTUsIDB4NTlFNSwgMHgwOUJDLA0KKyAgICAweDU5RTYsIDB4NTlFNywgMHgyREE1LCAweDU5RTgsIDB4NTlFOCwgMHgxMDUzLCAweDU5RTksIDB4NTlFQiwgMHgyREE3LA0KKyAgICAweDU5RUMsIDB4NTlFQywgMHgwODFBLCAweDU5RUQsIDB4NTlGOCwgMHgyREFBLCAweDU5RjksIDB4NTlGOSwgMHgxNzhCLA0KKyAgICAweDU5RkEsIDB4NTlGQSwgMHgyREI2LCAweDU5RkIsIDB4NTlGQiwgMHgxMDdELCAweDU5RkMsIDB4NTlGRSwgMHgyREI3LA0KKyAgICAweDU5RkYsIDB4NTlGRiwgMHgxMjI4LCAweDVBMDAsIDB4NUEwMCwgMHgyREJBLCAweDVBMDEsIDB4NUEwMSwgMHgwRUFGLA0KKyAgICAweDVBMDIsIDB4NUEwMiwgMHgyREJCLCAweDVBMDMsIDB4NUEwMywgMHgwRThGLCAweDVBMDQsIDB4NUEwNCwgMHgwQTRELA0KKyAgICAweDVBMDUsIDB4NUEwNiwgMHgxNzg1LCAweDVBMDcsIDB4NUEwNywgMHgwODkwLCAweDVBMDgsIDB4NUEwOCwgMHgxNzg4LA0KKyAgICAweDVBMDksIDB4NUEwOSwgMHgxNzhELCAweDVBMEEsIDB4NUEwQiwgMHgyREJDLCAweDVBMEMsIDB4NUEwQywgMHgxNzhDLA0KKyAgICAweDVBMEQsIDB4NUExMCwgMHgyREJFLCAweDVBMTEsIDB4NUExMSwgMHgxNzkwLCAweDVBMTIsIDB4NUExMiwgMHgyREMyLA0KKyAgICAweDVBMTMsIDB4NUExMywgMHgxNzkyLCAweDVBMTQsIDB4NUExNywgMHgyREMzLCAweDVBMTgsIDB4NUExOCwgMHgwQjUyLA0KKyAgICAweDVBMTksIDB4NUExQiwgMHgyREM3LCAweDVBMUMsIDB4NUExQywgMHgwQjJCLCAweDVBMUQsIDB4NUExRSwgMHgyRENBLA0KKyAgICAweDVBMUYsIDB4NUExRiwgMHgwOTE5LCAweDVBMjAsIDB4NUEyMCwgMHgwRDI4LCAweDVBMjEsIDB4NUEyMiwgMHgyRENDLA0KKyAgICAweDVBMjMsIDB4NUEyMywgMHgxNzkxLCAweDVBMjQsIDB4NUEyNCwgMHgyRENFLCAweDVBMjUsIDB4NUEyNSwgMHgwNjJGLA0KKyAgICAweDVBMjYsIDB4NUEyOCwgMHgyRENGLCAweDVBMjksIDB4NUEyOSwgMHgwQUU5LCAweDVBMkEsIDB4NUEzMCwgMHgyREQyLA0KKyAgICAweDVBMzEsIDB4NUEzMSwgMHgxMENFLCAweDVBMzIsIDB4NUEzMiwgMHgxNzhFLCAweDVBMzMsIDB4NUEzMywgMHgyREQ5LA0KKyAgICAweDVBMzQsIDB4NUEzNCwgMHgxNzhGLCAweDVBMzUsIDB4NUEzNSwgMHgyRERBLCAweDVBMzYsIDB4NUEzNiwgMHgwQzdELA0KKyAgICAweDVBMzcsIDB4NUEzQiwgMHgyRERCLCAweDVBM0MsIDB4NUEzQywgMHgxNzk3LCAweDVBM0QsIDB4NUEzRiwgMHgyREUwLA0KKyAgICAweDVBNDAsIDB4NUE0MCwgMHgxNzkzLCAweDVBNDEsIDB4NUE0MSwgMHgyMDNGLCAweDVBNDIsIDB4NUE0NSwgMHgyREUzLA0KKyAgICAweDVBNDYsIDB4NUE0NiwgMHgwQkU0LCAweDVBNDcsIDB4NUE0OCwgMHgyREU3LCAweDVBNDksIDB4NUE0OSwgMHgwRUEyLA0KKyAgICAweDVBNEEsIDB4NUE0QSwgMHgxNzk1LCAweDVBNEIsIDB4NUE1NCwgMHgyREU5LCAweDVBNTUsIDB4NUE1NSwgMHgxNzk2LA0KKyAgICAweDVBNTYsIDB4NUE1OSwgMHgyREYzLCAweDVBNUEsIDB4NUE1QSwgMHgwN0ZFLCAweDVBNUIsIDB4NUE2MSwgMHgyREY3LA0KKyAgICAweDVBNjIsIDB4NUE2MiwgMHgxNzk4LCAweDVBNjMsIDB4NUE2NSwgMHgyREZFLCAweDVBNjYsIDB4NUE2NiwgMHgxRjBFLA0KKyAgICAweDVBNjcsIDB4NUE2NywgMHgxNzk0LCAweDVBNjgsIDB4NUE2OSwgMHgyRTAxLCAweDVBNkEsIDB4NUE2QSwgMHgwOUEyLA0KKyAgICAweDVBNkIsIDB4NUE2QywgMHgyRTAzLCAweDVBNkQsIDB4NUE2RCwgMHgyM0Y5LCAweDVBNkUsIDB4NUE3MywgMHgyRTA1LA0KKyAgICAweDVBNzQsIDB4NUE3NCwgMHgxMDg5LCAweDVBNzUsIDB4NUE3NSwgMHgxNzk5LCAweDVBNzYsIDB4NUE3NiwgMHgwRDJELA0KKyAgICAweDVBNzcsIDB4NUE3NywgMHgxNzlELCAweDVBNzgsIDB4NUE3OSwgMHgyRTBCLCAweDVBN0EsIDB4NUE3QSwgMHgxNzlFLA0KKyAgICAweDVBN0IsIDB4NUE3RSwgMHgyRTBELCAweDVBN0YsIDB4NUE3RiwgMHgwRkMxLCAweDVBODAsIDB4NUE5MSwgMHgyRTExLA0KKyAgICAweDVBOTIsIDB4NUE5MiwgMHgwQUMyLCAweDVBOTMsIDB4NUE5OSwgMHgyRTIzLCAweDVBOUEsIDB4NUE5QSwgMHgwQUM5LA0KKyAgICAweDVBOUIsIDB4NUE5QiwgMHgxNzlDLCAweDVBOUMsIDB4NUFBNiwgMHgyRTJBLCAweDVBQTcsIDB4NUFBNywgMHgyM0ZDLA0KKyAgICAweDVBQTgsIDB4NUFBOSwgMHgyRTM1LCAweDVBQUEsIDB4NUFBQSwgMHgxNzlCLCAweDVBQUIsIDB4NUFCMSwgMHgyRTM3LA0KKyAgICAweDVBQjIsIDB4NUFCMiwgMHgxN0ExLCAweDVBQjMsIDB4NUFCMywgMHgwRjFFLCAweDVBQjQsIDB4NUFCNCwgMHgyRTNFLA0KKyAgICAweDVBQjUsIDB4NUFCNSwgMHgxOUE0LCAweDVBQjYsIDB4NUFCNywgMHgyRTNGLCAweDVBQjgsIDB4NUFCOCwgMHgxN0E0LA0KKyAgICAweDVBQjksIDB4NUFCQywgMHgyRTQxLCAweDVBQkQsIDB4NUFCRCwgMHgyMDY5LCAweDVBQkUsIDB4NUFCRSwgMHgxNzlGLA0KKyAgICAweDVBQkYsIDB4NUFDMCwgMHgyRTQ1LCAweDVBQzEsIDB4NUFDMSwgMHgwODUxLCAweDVBQzIsIDB4NUFDMiwgMHgwQ0UyLA0KKyAgICAweDVBQzMsIDB4NUFDOCwgMHgyRTQ3LCAweDVBQzksIDB4NUFDOSwgMHgwODI4LCAweDVBQ0EsIDB4NUFDQiwgMHgyRTRELA0KKyAgICAweDVBQ0MsIDB4NUFDQywgMHgwRjQwLCAweDVBQ0QsIDB4NUFEMSwgMHgyRTRGLCAweDVBRDIsIDB4NUFEMiwgMHgxN0EyLA0KKyAgICAweDVBRDMsIDB4NUFEMywgMHgyRTU0LCAweDVBRDQsIDB4NUFENCwgMHgxN0EzLCAweDVBRDUsIDB4NUFENSwgMHgyRTU1LA0KKyAgICAweDVBRDYsIDB4NUFENiwgMHgxN0E4LCAweDVBRDcsIDB4NUFENywgMHgyM0Y3LCAweDVBRDgsIDB4NUFEOCwgMHgxN0FBLA0KKyAgICAweDVBRDksIDB4NUFEQiwgMHgyRTU2LCAweDVBREMsIDB4NUFEQywgMHgxN0FCLCAweDVBREQsIDB4NUFERiwgMHgyRTU5LA0KKyAgICAweDVBRTAsIDB4NUFFMCwgMHgxN0E1LCAweDVBRTEsIDB4NUFFMSwgMHgwNUI2LCAweDVBRTIsIDB4NUFFMiwgMHgyRTVDLA0KKyAgICAweDVBRTMsIDB4NUFFMywgMHgxN0E2LCAweDVBRTQsIDB4NUFFNSwgMHgyRTVELCAweDVBRTYsIDB4NUFFNiwgMHgxN0E5LA0KKyAgICAweDVBRTcsIDB4NUFFOCwgMHgyRTVGLCAweDVBRTksIDB4NUFFOSwgMHgwQjNFLCAweDVBRUEsIDB4NUFFQSwgMHgyRTYxLA0KKyAgICAweDVBRUIsIDB4NUFFQiwgMHgxN0EwLCAweDVBRUMsIDB4NUFGMCwgMHgyRTYyLCAweDVBRjEsIDB4NUFGMSwgMHgxN0E3LA0KKyAgICAweDVBRjIsIDB4NUFGNCwgMHgyRTY3LCAweDVBRjUsIDB4NUFGNSwgMHgyM0Y2LCAweDVBRjYsIDB4NUFGQSwgMHgyRTZBLA0KKyAgICAweDVBRkIsIDB4NUFGQiwgMHgyM0ZELCAweDVBRkMsIDB4NUFGRiwgMHgyRTZGLCAweDVCMDAsIDB4NUIwMCwgMHgyM0Y4LA0KKyAgICAweDVCMDEsIDB4NUIwNywgMHgyRTczLCAweDVCMDgsIDB4NUIwOCwgMHgyM0ZBLCAweDVCMDksIDB4NUIwOSwgMHgxN0FDLA0KKyAgICAweDVCMEEsIDB4NUIwQSwgMHgyRTdBLCAweDVCMEIsIDB4NUIwQiwgMHgyM0ZFLCAweDVCMEMsIDB4NUIwQywgMHgxRkE4LA0KKyAgICAweDVCMEQsIDB4NUIxNSwgMHgyRTdCLCAweDVCMTYsIDB4NUIxNiwgMHgxN0FFLCAweDVCMTcsIDB4NUIxNywgMHgxN0FELA0KKyAgICAweDVCMTgsIDB4NUIxOCwgMHgyRTg0LCAweDVCMTksIDB4NUIxOSwgMHgyNDAxLCAweDVCMUEsIDB4NUIyMCwgMHgyRTg1LA0KKyAgICAweDVCMjEsIDB4NUIyMSwgMHgyM0ZGLCAweDVCMjIsIDB4NUIyOSwgMHgyRThDLCAweDVCMkEsIDB4NUIyQSwgMHgyNDAwLA0KKyAgICAweDVCMkIsIDB4NUIyRiwgMHgyRTk0LCAweDVCMzAsIDB4NUIzMCwgMHgyMjIxLCAweDVCMzEsIDB4NUIzMSwgMHgyRTk5LA0KKyAgICAweDVCMzIsIDB4NUIzMiwgMHgxN0FGLCAweDVCMzMsIDB4NUIzMywgMHgyRTlBLCAweDVCMzQsIDB4NUIzNCwgMHgxMzBDLA0KKyAgICAweDVCMzUsIDB4NUIzNiwgMHgyRTlCLCAweDVCMzcsIDB4NUIzNywgMHgxN0IwLCAweDVCMzgsIDB4NUIzOCwgMHgyMTIyLA0KKyAgICAweDVCMzksIDB4NUIzRiwgMHgyRTlELCAweDVCNDAsIDB4NUI0MCwgMHgxN0IxLCAweDVCNDEsIDB4NUI0QiwgMHgyRUE0LA0KKyAgICAweDVCNEMsIDB4NUI0QywgMHgyM0ZCLCAweDVCNEQsIDB4NUI0RiwgMHgyRUFGLCAweDVCNTAsIDB4NUI1MCwgMHgxMjMwLA0KKyAgICAweDVCNTEsIDB4NUI1MSwgMHgxN0I3LCAweDVCNTIsIDB4NUI1MiwgMHgyRUIyLCAweDVCNTMsIDB4NUI1MywgMHgxN0I4LA0KKyAgICAweDVCNTQsIDB4NUI1NCwgMHgwOTY0LCAweDVCNTUsIDB4NUI1NSwgMHgxMTEzLCAweDVCNTYsIDB4NUI1NiwgMHgyRUIzLA0KKyAgICAweDVCNTcsIDB4NUI1NywgMHgxMjMzLCAweDVCNTgsIDB4NUI1OCwgMHgwNTY5LCAweDVCNTksIDB4NUI1OSwgMHgwREU0LA0KKyAgICAweDVCNUEsIDB4NUI1QSwgMHgxN0I0LCAweDVCNUIsIDB4NUI1QiwgMHgxMjc5LCAweDVCNUMsIDB4NUI1QywgMHgxMjJCLA0KKyAgICAweDVCNUQsIDB4NUI1RCwgMHgwRjZELCAweDVCNUUsIDB4NUI1RSwgMHgyRUI0LCAweDVCNUYsIDB4NUI1RiwgMHgwQUQ0LA0KKyAgICAweDVCNjAsIDB4NUI2MSwgMHgyRUI1LCAweDVCNjIsIDB4NUI2MiwgMHgxN0I5LCAweDVCNjMsIDB4NUI2MywgMHgwODMxLA0KKyAgICAweDVCNjQsIDB4NUI2NCwgMHgwNzFCLCAweDVCNjUsIDB4NUI2NSwgMHgxN0I1LCAweDVCNjYsIDB4NUI2NiwgMHgwRkQwLA0KKyAgICAweDVCNjcsIDB4NUI2OCwgMHgyRUI3LCAweDVCNjksIDB4NUI2OSwgMHgwNzU5LCAweDVCNkEsIDB4NUI2QSwgMHgwQTc2LA0KKyAgICAweDVCNkIsIDB4NUI2QiwgMHgyMTVBLCAweDVCNkMsIDB4NUI2QywgMHgxMjYxLCAweDVCNkQsIDB4NUI2RiwgMHgyRUI5LA0KKyAgICAweDVCNzAsIDB4NUI3MCwgMHgwRDgyLCAweDVCNzEsIDB4NUI3MSwgMHgxNzZBLCAweDVCNzIsIDB4NUI3MiwgMHgyRUJDLA0KKyAgICAweDVCNzMsIDB4NUI3MywgMHgxN0I2LCAweDVCNzQsIDB4NUI3NCwgMHgyRUJELCAweDVCNzUsIDB4NUI3NSwgMHgwNjkyLA0KKyAgICAweDVCNzYsIDB4NUI3NywgMHgyRUJFLCAweDVCNzgsIDB4NUI3OCwgMHgyMUU1LCAweDVCNzksIDB4NUI3OSwgMHgyRUMwLA0KKyAgICAweDVCN0EsIDB4NUI3QSwgMHgwQ0MxLCAweDVCN0IsIDB4NUI3QywgMHgyRUMxLCAweDVCN0QsIDB4NUI3RCwgMHgwQjU4LA0KKyAgICAweDVCN0UsIDB4NUI3RSwgMHgyRUMzLCAweDVCN0YsIDB4NUI3RiwgMHgyMDU3LCAweDVCODAsIDB4NUI4MCwgMHgxNzJFLA0KKyAgICAweDVCODEsIDB4NUI4MSwgMHgwQjYxLCAweDVCODIsIDB4NUI4MiwgMHgyRUM0LCAweDVCODMsIDB4NUI4MywgMHgwREYxLA0KKyAgICAweDVCODQsIDB4NUI4NCwgMHgxNzJGLCAweDVCODUsIDB4NUI4NSwgMHgxMTRELCAweDVCODYsIDB4NUI4NiwgMHgyRUM1LA0KKyAgICAweDVCODcsIDB4NUI4NywgMHgxMEQzLCAweDVCODgsIDB4NUI4OCwgMHgwRDZGLCAweDVCODksIDB4NUI4OSwgMHgwM0JELA0KKyAgICAweDVCOEEsIDB4NUI4QSwgMHgyRUM2LCAweDVCOEIsIDB4NUI4QiwgMHgwREMzLCAweDVCOEMsIDB4NUI4QywgMHgwRTlCLA0KKyAgICAweDVCOEQsIDB4NUI4RSwgMHgyRUM3LCAweDVCOEYsIDB4NUI4RiwgMHgwN0ExLCAweDVCOTAsIDB4NUI5MiwgMHgyRUM5LA0KKyAgICAweDVCOTMsIDB4NUI5MywgMHgxNzMxLCAweDVCOTQsIDB4NUI5NCwgMHgyRUNDLCAweDVCOTUsIDB4NUI5NSwgMHgxNzMwLA0KKyAgICAweDVCOTYsIDB4NUI5NiwgMHgyRUNELCAweDVCOTcsIDB4NUI5NywgMHgxMjM3LCAweDVCOTgsIDB4NUI5OCwgMHgwNzMyLA0KKyAgICAweDVCOTksIDB4NUI5OSwgMHgxMUU1LCAweDVCOUEsIDB4NUI5QSwgMHgwNUU3LCAweDVCOUIsIDB4NUI5QiwgMHgwRUExLA0KKyAgICAweDVCOUMsIDB4NUI5QywgMHgxMDUyLCAweDVCOUQsIDB4NUI5RCwgMHgwNDBGLCAweDVCOUUsIDB4NUI5RSwgMHgwRDRDLA0KKyAgICAweDVCOUYsIDB4NUI5RiwgMHgyRUNFLCAweDVCQTAsIDB4NUJBMCwgMHgwNTBELCAweDVCQTEsIDB4NUJBMSwgMHgwRDJDLA0KKyAgICAweDVCQTIsIDB4NUJBMiwgMHgwOTVBLCAweDVCQTMsIDB4NUJBMywgMHgwRkM2LCAweDVCQTQsIDB4NUJBNCwgMHgwRDY5LA0KKyAgICAweDVCQTUsIDB4NUJBNSwgMHgxNzMyLCAweDVCQTYsIDB4NUJBNiwgMHgwN0Q3LCAweDVCQTcsIDB4NUJBOSwgMHgyRUNGLA0KKyAgICAweDVCQUEsIDB4NUJBQSwgMHgwRjQ5LCAweDVCQUIsIDB4NUJBQiwgMHgwNzA1LCAweDVCQUMsIDB4NUJBRiwgMHgyRUQyLA0KKyAgICAweDVCQjAsIDB4NUJCMCwgMHgxMTFBLCAweDVCQjEsIDB4NUJCMiwgMHgyRUQ2LCAweDVCQjMsIDB4NUJCMywgMHgwNzVELA0KKyAgICAweDVCQjQsIDB4NUJCNCwgMHgxMDEwLCAweDVCQjUsIDB4NUJCNSwgMHgwRjY5LCAweDVCQjYsIDB4NUJCNiwgMHgwODQ1LA0KKyAgICAweDVCQjcsIDB4NUJCNywgMHgyRUQ4LCAweDVCQjgsIDB4NUJCOCwgMHgxNzMzLCAweDVCQjksIDB4NUJCOSwgMHgwQ0I4LA0KKyAgICAweDVCQkEsIDB4NUJCQywgMHgyRUQ5LCAweDVCQkQsIDB4NUJCRCwgMHgwOTdBLCAweDVCQkUsIDB4NUJCRSwgMHgwNDVGLA0KKyAgICAweDVCQkYsIDB4NUJCRiwgMHgwREQzLCAweDVCQzAsIDB4NUJDMSwgMHgyRURDLCAweDVCQzIsIDB4NUJDMiwgMHgwODM4LA0KKyAgICAweDVCQzMsIDB4NUJDMywgMHgyRURFLCAweDVCQzQsIDB4NUJDNCwgMHgwODM3LCAweDVCQzUsIDB4NUJDNSwgMHgxMDgxLA0KKyAgICAweDVCQzYsIDB4NUJDNiwgMHgwQUUxLCAweDVCQzcsIDB4NUJDNywgMHgwOTY5LCAweDVCQzgsIDB4NUJDQiwgMHgyRURGLA0KKyAgICAweDVCQ0MsIDB4NUJDQywgMHgwNkI2LCAweDVCQ0QsIDB4NUJDRiwgMHgyRUUzLCAweDVCRDAsIDB4NUJEMCwgMHgwQUM3LA0KKyAgICAweDVCRDEsIDB4NUJEMSwgMHgyRUU2LCAweDVCRDIsIDB4NUJEMiwgMHgwNzY1LCAweDVCRDMsIDB4NUJEMywgMHgxMEU1LA0KKyAgICAweDVCRDQsIDB4NUJEQywgMHgyRUU3LCAweDVCREQsIDB4NUJERCwgMHgwQzVCLCAweDVCREUsIDB4NUJERSwgMHgwQjEyLA0KKyAgICAweDVCREYsIDB4NUJERiwgMHgwNEIzLCAweDVCRTAsIDB4NUJFMCwgMHgyRUYwLCAweDVCRTEsIDB4NUJFMSwgMHgwNzJBLA0KKyAgICAweDVCRTIsIDB4NUJFMiwgMHgyMEU1LCAweDVCRTMsIDB4NUJFMywgMHgyRUYxLCAweDVCRTQsIDB4NUJFNCwgMHgxNzM3LA0KKyAgICAweDVCRTUsIDB4NUJFNSwgMHgwQTExLCAweDVCRTYsIDB4NUJFNiwgMHgyMTJGLCAweDVCRTcsIDB4NUJFNywgMHgyMEEzLA0KKyAgICAweDVCRTgsIDB4NUJFOCwgMHgxMTUwLCAweDVCRTksIDB4NUJFOSwgMHgyMTIxLCAweDVCRUEsIDB4NUJFQSwgMHgyRUYyLA0KKyAgICAweDVCRUIsIDB4NUJFQiwgMHgyMUQ0LCAweDVCRUMsIDB4NUJFQywgMHgxRkU1LCAweDVCRUQsIDB4NUJFRCwgMHgyRUYzLA0KKyAgICAweDVCRUUsIDB4NUJFRSwgMHgxNzM4LCAweDVCRUYsIDB4NUJFRiwgMHgyRUY0LCAweDVCRjAsIDB4NUJGMCwgMHgxNzNBLA0KKyAgICAweDVCRjEsIDB4NUJGNCwgMHgyRUY1LCAweDVCRjUsIDB4NUJGNSwgMHgxRThBLCAweDVCRjYsIDB4NUJGNiwgMHgxRTM3LA0KKyAgICAweDVCRjcsIDB4NUJGNywgMHgyRUY5LCAweDVCRjgsIDB4NUJGOCwgMHgwNTZBLCAweDVCRjksIDB4NUJGOSwgMHgwNjEzLA0KKyAgICAweDVCRkEsIDB4NUJGQSwgMHgwREI3LCAweDVCRkIsIDB4NUJGQiwgMHgwRkQ5LCAweDVCRkMsIDB4NUJGQywgMHgwNTlELA0KKyAgICAweDVCRkQsIDB4NUJGRSwgMHgyRUZBLCAweDVCRkYsIDB4NUJGRiwgMHgwRDcwLCAweDVDMDAsIDB4NUMwMCwgMHgyRUZDLA0KKyAgICAweDVDMDEsIDB4NUMwMSwgMHgwNjdGLCAweDVDMDIsIDB4NUMwMywgMHgyRUZELCAweDVDMDQsIDB4NUMwNCwgMHgwRDFELA0KKyAgICAweDVDMDUsIDB4NUMwNSwgMHgyRUZGLCAweDVDMDYsIDB4NUMwNiwgMHgwODdDLCAweDVDMDcsIDB4NUMwNywgMHgxRjlFLA0KKyAgICAweDVDMDgsIDB4NUMwOCwgMHgyMkE2LCAweDVDMDksIDB4NUMwOSwgMHgwRUNELCAweDVDMEEsIDB4NUMwQSwgMHgxMjRELA0KKyAgICAweDVDMEIsIDB4NUMwQiwgMHgyMUU4LCAweDVDMEMsIDB4NUMwQywgMHgyRjAwLCAweDVDMEQsIDB4NUMwRCwgMHgxRURBLA0KKyAgICAweDVDMEUsIDB4NUMwRSwgMHgxRUI5LCAweDVDMEYsIDB4NUMwRiwgMHgwRjZDLCAweDVDMTAsIDB4NUMxMCwgMHgyRjAxLA0KKyAgICAweDVDMTEsIDB4NUMxMSwgMHgwRDEyLCAweDVDMTIsIDB4NUMxMywgMHgyRjAyLCAweDVDMTQsIDB4NUMxNCwgMHgwNjNBLA0KKyAgICAweDVDMTUsIDB4NUMxNSwgMHgxN0IyLCAweDVDMTYsIDB4NUMxNiwgMHgwODU1LCAweDVDMTcsIDB4NUMxNywgMHgyRjA0LA0KKyAgICAweDVDMTgsIDB4NUMxOCwgMHgwNEUzLCAweDVDMTksIDB4NUMxOSwgMHgyRjA1LCAweDVDMUEsIDB4NUMxQSwgMHgwRDA5LA0KKyAgICAweDVDMUIsIDB4NUMxQiwgMHgyRjA2LCAweDVDMUMsIDB4NUMxQywgMHgxN0IzLCAweDVDMUQsIDB4NUMxRCwgMHgwNEM3LA0KKyAgICAweDVDMUUsIDB4NUMyMSwgMHgyRjA3LCAweDVDMjIsIDB4NUMyMiwgMHgxNEI2LCAweDVDMjMsIDB4NUMyMywgMHgyRjBCLA0KKyAgICAweDVDMjQsIDB4NUMyNCwgMHgxMEFELCAweDVDMjUsIDB4NUMyNSwgMHgxNEI3LCAweDVDMjYsIDB4NUMyNiwgMHgyRjBDLA0KKyAgICAweDVDMjcsIDB4NUMyNywgMHgxMDI5LCAweDVDMjgsIDB4NUMyQiwgMHgyRjBELCAweDVDMkMsIDB4NUMyQywgMHgxNEI4LA0KKyAgICAweDVDMkQsIDB4NUMzMCwgMHgyRjExLCAweDVDMzEsIDB4NUMzMSwgMHgwOEZDLCAweDVDMzIsIDB4NUMzMywgMHgyRjE1LA0KKyAgICAweDVDMzQsIDB4NUMzNCwgMHgxNEI5LCAweDVDMzUsIDB4NUMzNiwgMHgyRjE3LCAweDVDMzcsIDB4NUMzNywgMHgyMzVDLA0KKyAgICAweDVDMzgsIDB4NUMzOCwgMHgwRDQzLCAweDVDMzksIDB4NUMzOSwgMHgxMDgzLCAweDVDM0EsIDB4NUMzQSwgMHgwNTA0LA0KKyAgICAweDVDM0IsIDB4NUMzQiwgMHgxNzY2LCAweDVDM0MsIDB4NUMzQywgMHgwQjQ0LCAweDVDM0QsIDB4NUMzRCwgMHgwOEQwLA0KKyAgICAweDVDM0UsIDB4NUMzRSwgMHgwRUMxLCAweDVDM0YsIDB4NUMzRiwgMHgwQjU1LCAweDVDNDAsIDB4NUM0MCwgMHgwOTA1LA0KKyAgICAweDVDNDEsIDB4NUM0MSwgMHgwQkM3LCAweDVDNDIsIDB4NUM0MiwgMHgwNEFBLCAweDVDNDMsIDB4NUM0NCwgMHgyRjE5LA0KKyAgICAweDVDNDUsIDB4NUM0NSwgMHgwOTAyLCAweDVDNDYsIDB4NUM0NywgMHgyRjFCLCAweDVDNDgsIDB4NUM0OCwgMHgwQzc5LA0KKyAgICAweDVDNDksIDB4NUM0OSwgMHgwRTNFLCAweDVDNEEsIDB4NUM0QSwgMHgwOEJELCAweDVDNEIsIDB4NUM0QiwgMHgwRUVDLA0KKyAgICAweDVDNEMsIDB4NUM0RCwgMHgyRjFELCAweDVDNEUsIDB4NUM0RSwgMHgwRDUxLCAweDVDNEYsIDB4NUM0RiwgMHgwQkUwLA0KKyAgICAweDVDNTAsIDB4NUM1MCwgMHgxNzY4LCAweDVDNTEsIDB4NUM1MSwgMHgwRjg3LCAweDVDNTIsIDB4NUM1NCwgMHgyRjFGLA0KKyAgICAweDVDNTUsIDB4NUM1NSwgMHgxMTVBLCAweDVDNTYsIDB4NUM1OCwgMHgyRjIyLCAweDVDNTksIDB4NUM1OSwgMHgxNzY5LA0KKyAgICAweDVDNUEsIDB4NUM1RCwgMHgyRjI1LCAweDVDNUUsIDB4NUM1RSwgMHgwRDhCLCAweDVDNUYsIDB4NUM1RiwgMHgyRjI5LA0KKyAgICAweDVDNjAsIDB4NUM2MCwgMHgwRTcxLCAweDVDNjEsIDB4NUM2MSwgMHgwQTZDLCAweDVDNjIsIDB4NUM2MiwgMHgyMDUwLA0KKyAgICAweDVDNjMsIDB4NUM2MywgMHgxNzZCLCAweDVDNjQsIDB4NUM2NCwgMHgxRTY3LCAweDVDNjUsIDB4NUM2NSwgMHgwQTZCLA0KKyAgICAweDVDNjYsIDB4NUM2NiwgMHgxNzZDLCAweDVDNjcsIDB4NUM2NywgMHgyRjJBLCAweDVDNjgsIDB4NUM2OCwgMHgyM0Y0LA0KKyAgICAweDVDNjksIDB4NUM2QiwgMHgyRjJCLCAweDVDNkMsIDB4NUM2QywgMHgyMTNFLCAweDVDNkQsIDB4NUM2RCwgMHgyRjJFLA0KKyAgICAweDVDNkUsIDB4NUM2RSwgMHgxNzc0LCAweDVDNkYsIDB4NUM2RiwgMHgwRTdFLCAweDVDNzAsIDB4NUM3MCwgMHgyRjJGLA0KKyAgICAweDVDNzEsIDB4NUM3MSwgMHgwQ0Y2LCAweDVDNzIsIDB4NUM3OCwgMHgyRjMwLCAweDVDNzksIDB4NUM3OSwgMHgxMDYwLA0KKyAgICAweDVDN0EsIDB4NUM3QSwgMHgxNUFDLCAweDVDN0IsIDB4NUM3RSwgMHgyRjM3LCAweDVDN0YsIDB4NUM3RiwgMHgxMEQxLA0KKyAgICAweDVDODAsIDB4NUM4MCwgMHgyRjNCLCAweDVDODEsIDB4NUM4MSwgMHgwRERGLCAweDVDODIsIDB4NUM4MiwgMHgwQzEwLA0KKyAgICAweDVDODMsIDB4NUM4NywgMHgyRjNDLCAweDVDODgsIDB4NUM4OCwgMHgxNUIwLCAweDVDODksIDB4NUM4QiwgMHgyRjQxLA0KKyAgICAweDVDOEMsIDB4NUM4QywgMHgxNUFCLCAweDVDOEQsIDB4NUM4RCwgMHgxNUFELCAweDVDOEUsIDB4NUM4RiwgMHgyRjQ0LA0KKyAgICAweDVDOTAsIDB4NUM5MCwgMHgxNUFFLCAweDVDOTEsIDB4NUM5MSwgMHgxNUIzLCAweDVDOTIsIDB4NUM5MywgMHgyRjQ2LA0KKyAgICAweDVDOTQsIDB4NUM5NCwgMHgwNEI0LCAweDVDOTUsIDB4NUM5NSwgMHgyRjQ4LCAweDVDOTYsIDB4NUM5NiwgMHgxNUFGLA0KKyAgICAweDVDOTcsIDB4NUM5NywgMHgwNkQ1LCAweDVDOTgsIDB4NUM5OSwgMHgxNUIxLCAweDVDOUEsIDB4NUM5QSwgMHgxNUI0LA0KKyAgICAweDVDOUIsIDB4NUM5QiwgMHgwNTlCLCAweDVDOUMsIDB4NUM5QywgMHgxNUI1LCAweDVDOUQsIDB4NUNBMCwgMHgyRjQ5LA0KKyAgICAweDVDQTEsIDB4NUNBMSwgMHgxRjE2LCAweDVDQTIsIDB4NUNBMiwgMHgxNUI3LCAweDVDQTMsIDB4NUNBMywgMHgxNUJDLA0KKyAgICAweDVDQTQsIDB4NUNBOCwgMHgyRjRELCAweDVDQTksIDB4NUNBOSwgMHgwRkZCLCAweDVDQUEsIDB4NUNBQSwgMHgyRjUyLA0KKyAgICAweDVDQUIsIDB4NUNBQiwgMHgxNUJBLCAweDVDQUMsIDB4NUNBQywgMHgxNUI5LCAweDVDQUQsIDB4NUNBRCwgMHgwQTM0LA0KKyAgICAweDVDQUUsIDB4NUNCMCwgMHgyRjUzLCAweDVDQjEsIDB4NUNCMSwgMHgxNUJCLCAweDVDQjIsIDB4NUNCMiwgMHgyRjU2LA0KKyAgICAweDVDQjMsIDB4NUNCMywgMHgxMTAzLCAweDVDQjQsIDB4NUNCNCwgMHgyRjU3LCAweDVDQjUsIDB4NUNCNSwgMHgxNUI2LA0KKyAgICAweDVDQjYsIDB4NUNCNiwgMHgyRjU4LCAweDVDQjcsIDB4NUNCNywgMHgxNUJFLCAweDVDQjgsIDB4NUNCOCwgMHgwM0MxLA0KKyAgICAweDVDQjksIDB4NUNCQywgMHgyRjU5LCAweDVDQkQsIDB4NUNCRCwgMHgxNUI4LCAweDVDQkUsIDB4NUNCRSwgMHgyRjVELA0KKyAgICAweDVDQkYsIDB4NUNCRiwgMHgwOTg2LCAweDVDQzAsIDB4NUNDMCwgMHgyRjVFLCAweDVDQzEsIDB4NUNDMSwgMHgxNUJELA0KKyAgICAweDVDQzIsIDB4NUNDMywgMHgyRjVGLCAweDVDQzQsIDB4NUNDNCwgMHgxNUJGLCAweDVDQzUsIDB4NUNDQSwgMHgyRjYxLA0KKyAgICAweDVDQ0IsIDB4NUNDQiwgMHgxNUMyLCAweDVDQ0MsIDB4NUNEMSwgMHgyRjY3LCAweDVDRDIsIDB4NUNEMiwgMHgxNUMwLA0KKyAgICAweDVDRDMsIDB4NUNEOCwgMHgyRjZELCAweDVDRDksIDB4NUNEOSwgMHgxMUM0LCAweDVDREEsIDB4NUNFMCwgMHgyRjczLA0KKyAgICAweDVDRTEsIDB4NUNFMSwgMHgwRjJDLCAweDVDRTIsIDB4NUNFMywgMHgyRjdBLCAweDVDRTQsIDB4NUNFNCwgMHgxNUMxLA0KKyAgICAweDVDRTUsIDB4NUNFNSwgMHgxNUMzLCAweDVDRTYsIDB4NUNFNiwgMHgwQTc0LCAweDVDRTcsIDB4NUNFNywgMHgyRjdDLA0KKyAgICAweDVDRTgsIDB4NUNFOCwgMHgwNjJBLCAweDVDRTksIDB4NUNFOSwgMHgyRjdELCAweDVDRUEsIDB4NUNFQSwgMHgxMERELA0KKyAgICAweDVDRUIsIDB4NUNFQywgMHgyRjdFLCAweDVDRUQsIDB4NUNFRCwgMHgwQzRBLCAweDVDRUUsIDB4NUNFRiwgMHgyRjgwLA0KKyAgICAweDVDRjAsIDB4NUNGMCwgMHgwNjgyLCAweDVDRjEsIDB4NUNGMywgMHgyRjgyLCAweDVDRjQsIDB4NUNGNCwgMHgyMzg5LA0KKyAgICAweDVDRjUsIDB4NUNGNSwgMHgyRjg1LCAweDVDRjYsIDB4NUNGNiwgMHgxRUI3LCAweDVDRjcsIDB4NUNGQSwgMHgyRjg2LA0KKyAgICAweDVDRkIsIDB4NUNGQiwgMHgwOTJELCAweDVDRkMsIDB4NUNGQywgMHgyRjhBLCAweDVDRkQsIDB4NUNGRCwgMHgyMUI0LA0KKyAgICAweDVDRkUsIDB4NUNGRiwgMHgyRjhCLCAweDVEMDAsIDB4NUQwMSwgMHgyRjhELCAweDVEMDIsIDB4NUQwMywgMHgxNUM0LA0KKyAgICAweDVEMDQsIDB4NUQwNSwgMHgyRjhGLCAweDVEMDYsIDB4NUQwNiwgMHgxNUNCLCAweDVEMDcsIDB4NUQwNywgMHgwNTBDLA0KKyAgICAweDVEMDgsIDB4NUQwQywgMHgyRjkxLCAweDVEMEQsIDB4NUQwRCwgMHgyMzhGLCAweDVEMEUsIDB4NUQwRSwgMHgwQzA4LA0KKyAgICAweDVEMEYsIDB4NUQxMywgMHgyRjk2LCAweDVEMTQsIDB4NUQxNCwgMHgwNTYxLCAweDVEMTUsIDB4NUQxNSwgMHgyRjlCLA0KKyAgICAweDVEMTYsIDB4NUQxNiwgMHgwRkVCLCAweDVEMTcsIDB4NUQxNywgMHgxRjFBLCAweDVEMTgsIDB4NUQxQSwgMHgyRjlDLA0KKyAgICAweDVEMUIsIDB4NUQxQiwgMHgxNUNDLCAweDVEMUMsIDB4NUQxRCwgMHgyRjlGLCAweDVEMUUsIDB4NUQxRSwgMHgxNUNBLA0KKyAgICAweDVEMUYsIDB4NUQyMywgMHgyRkExLCAweDVEMjQsIDB4NUQyNCwgMHgxNUM5LCAweDVEMjUsIDB4NUQyNSwgMHgyRkE2LA0KKyAgICAweDVEMjYsIDB4NUQyNiwgMHgxNUM3LCAweDVEMjcsIDB4NUQyNywgMHgxNUM2LCAweDVEMjgsIDB4NUQyOCwgMHgyRkE3LA0KKyAgICAweDVEMjksIDB4NUQyOSwgMHgwNDI5LCAweDVEMkEsIDB4NUQyQiwgMHgyRkE4LCAweDVEMkMsIDB4NUQyQywgMHgyMzhCLA0KKyAgICAweDVEMkQsIDB4NUQyRCwgMHgxMTU5LCAweDVEMkUsIDB4NUQyRSwgMHgxNUM4LCAweDVEMkYsIDB4NUQzMywgMHgyRkFBLA0KKyAgICAweDVEMzQsIDB4NUQzNCwgMHgxNUNGLCAweDVEMzUsIDB4NUQzQywgMHgyRkFGLCAweDVEM0QsIDB4NUQzRCwgMHgxNUQwLA0KKyAgICAweDVEM0UsIDB4NUQzRSwgMHgxNUNFLCAweDVEM0YsIDB4NUQ0NiwgMHgyRkI3LCAweDVENDcsIDB4NUQ0NywgMHgxQjIyLA0KKyAgICAweDVENDgsIDB4NUQ0OSwgMHgyRkJGLCAweDVENEEsIDB4NUQ0QSwgMHgxNUQ3LCAweDVENEIsIDB4NUQ0QiwgMHgxNUQ2LA0KKyAgICAweDVENEMsIDB4NUQ0QywgMHgwQzMzLCAweDVENEQsIDB4NUQ0RiwgMHgyRkMxLCAweDVENTAsIDB4NUQ1MCwgMHgyMzhBLA0KKyAgICAweDVENTEsIDB4NUQ1NywgMHgyRkM0LCAweDVENTgsIDB4NUQ1OCwgMHgxNUNELCAweDVENTksIDB4NUQ1QSwgMHgyRkNCLA0KKyAgICAweDVENUIsIDB4NUQ1QiwgMHgxNUQyLCAweDVENUMsIDB4NUQ1QywgMHgyRkNELCAweDVENUQsIDB4NUQ1RCwgMHgxNUQ0LA0KKyAgICAweDVENUUsIDB4NUQ2OCwgMHgyRkNFLCAweDVENjksIDB4NUQ2OSwgMHgxNUQ4LCAweDVENkEsIDB4NUQ2QSwgMHgyRkQ5LA0KKyAgICAweDVENkIsIDB4NUQ2QiwgMHgxNUQ1LCAweDVENkMsIDB4NUQ2QywgMHgxNUQxLCAweDVENkQsIDB4NUQ2RSwgMHgyRkRBLA0KKyAgICAweDVENkYsIDB4NUQ2RiwgMHgxNUQzLCAweDVENzAsIDB4NUQ3MywgMHgyRkRDLCAweDVENzQsIDB4NUQ3NCwgMHgxNUQ5LA0KKyAgICAweDVENzUsIDB4NUQ4MCwgMHgyRkUwLCAweDVEODEsIDB4NUQ4MSwgMHgyMzkxLCAweDVEODIsIDB4NUQ4MiwgMHgxNURBLA0KKyAgICAweDVEODMsIDB4NUQ4MywgMHgyRkVDLCAweDVEODQsIDB4NUQ4NCwgMHgyMjcxLCAweDVEODUsIDB4NUQ4NiwgMHgyRkVELA0KKyAgICAweDVEODcsIDB4NUQ4NywgMHgyMzg4LCAweDVEODgsIDB4NUQ5NiwgMHgyRkVGLCAweDVEOTcsIDB4NUQ5NywgMHgyMzhFLA0KKyAgICAweDVEOTgsIDB4NUQ5OCwgMHgyRkZFLCAweDVEOTksIDB4NUQ5OSwgMHgxNURCLCAweDVEOUEsIDB4NUQ5QywgMHgyRkZGLA0KKyAgICAweDVEOUQsIDB4NUQ5RCwgMHgxNURDLCAweDVEOUUsIDB4NUQ5RiwgMHgzMDAyLCAweDVEQTAsIDB4NURBMCwgMHgyMzhELA0KKyAgICAweDVEQTEsIDB4NURBNiwgMHgzMDA0LCAweDVEQTcsIDB4NURBNywgMHgyMzhDLCAweDVEQTgsIDB4NURCNiwgMHgzMDBBLA0KKyAgICAweDVEQjcsIDB4NURCNywgMHgxNURFLCAweDVEQjgsIDB4NURCOCwgMHgyMzkwLCAweDVEQjksIDB4NURCOSwgMHgzMDE5LA0KKyAgICAweDVEQkEsIDB4NURCQSwgMHgyMDMzLCAweDVEQkIsIDB4NURCQiwgMHgzMDFBLCAweDVEQkMsIDB4NURCQywgMHgyMjNDLA0KKyAgICAweDVEQkQsIDB4NURDNCwgMHgzMDFCLCAweDVEQzUsIDB4NURDNSwgMHgxNURGLCAweDVEQzYsIDB4NURDQSwgMHgzMDIzLA0KKyAgICAweDVEQ0IsIDB4NURDQiwgMHgxRkU5LCAweDVEQ0MsIDB4NURDQywgMHgzMDI4LCAweDVEQ0QsIDB4NURDRCwgMHgwRUIwLA0KKyAgICAweDVEQ0UsIDB4NUREMSwgMHgzMDI5LCAweDVERDIsIDB4NUREMiwgMHgyMDU1LCAweDVERDMsIDB4NUREMywgMHgzMDJELA0KKyAgICAweDVERDQsIDB4NURENCwgMHgyMzkyLCAweDVERDUsIDB4NUREQSwgMHgzMDJFLCAweDVEREIsIDB4NUREQiwgMHgxODE1LA0KKyAgICAweDVEREMsIDB4NUREQywgMHgzMDM0LCAweDVEREQsIDB4NURERCwgMHgwNTJCLCAweDVEREUsIDB4NURERSwgMHgxMURDLA0KKyAgICAweDVEREYsIDB4NURFMCwgMHgzMDM1LCAweDVERTEsIDB4NURFMSwgMHgwRkRCLCAweDVERTIsIDB4NURFMiwgMHgwNEQ3LA0KKyAgICAweDVERTMsIDB4NURFNCwgMHgzMDM3LCAweDVERTUsIDB4NURFNSwgMHgwNkZELCAweDVERTYsIDB4NURFNiwgMHgxMjUwLA0KKyAgICAweDVERTcsIDB4NURFNywgMHgwQzQ2LCAweDVERTgsIDB4NURFOCwgMHgwOTBELCAweDVERTksIDB4NURFOSwgMHgwNzA3LA0KKyAgICAweDVERUEsIDB4NURFQSwgMHgzMDM5LCAweDVERUIsIDB4NURFQiwgMHgwRUU2LCAweDVERUMsIDB4NURFRCwgMHgzMDNBLA0KKyAgICAweDVERUUsIDB4NURFRSwgMHgwNEI1LCAweDVERUYsIDB4NURFRiwgMHgxMzlGLCAweDVERjAsIDB4NURGMCwgMHgyMzI0LA0KKyAgICAweDVERjEsIDB4NURGMSwgMHgwODJELCAweDVERjIsIDB4NURGMiwgMHgxMDU4LCAweDVERjMsIDB4NURGMywgMHgwREJELA0KKyAgICAweDVERjQsIDB4NURGNCwgMHgwM0Q4LCAweDVERjUsIDB4NURGNiwgMHgzMDNDLCAweDVERjcsIDB4NURGNywgMHgwRjVDLA0KKyAgICAweDVERjgsIDB4NURGQywgMHgzMDNFLCAweDVERkQsIDB4NURGRCwgMHgxMkY3LCAweDVERkUsIDB4NURGRSwgMHgwOEJFLA0KKyAgICAweDVERkYsIDB4NURGRiwgMHgzMDQzLCAweDVFMDAsIDB4NUUwMCwgMHgzMDQ0LCAweDVFMDEsIDB4NUUwMSwgMHgwNDNCLA0KKyAgICAweDVFMDIsIDB4NUUwMiwgMHgwRDY3LCAweDVFMDMsIDB4NUUwMywgMHgwNDgzLCAweDVFMDQsIDB4NUUwNCwgMHgzMDQ1LA0KKyAgICAweDVFMDUsIDB4NUUwNSwgMHgwRDlDLCAweDVFMDYsIDB4NUUwNiwgMHgwNjQ4LCAweDVFMDcsIDB4NUUwNywgMHgzMDQ2LA0KKyAgICAweDVFMDgsIDB4NUUwOCwgMHgwRDNELCAweDVFMDksIDB4NUUwQiwgMHgzMDQ3LCAweDVFMEMsIDB4NUUwQywgMHgwRjEwLA0KKyAgICAweDVFMEQsIDB4NUUwRSwgMHgzMDRBLCAweDVFMEYsIDB4NUUwRiwgMHgxNTlFLCAweDVFMTAsIDB4NUUxMCwgMHgxMTZCLA0KKyAgICAweDVFMTEsIDB4NUUxMSwgMHgxNUExLCAweDVFMTIsIDB4NUUxMywgMHgzMDRDLCAweDVFMTQsIDB4NUUxNCwgMHgxNUEwLA0KKyAgICAweDVFMTUsIDB4NUUxNSwgMHgwQjgyLCAweDVFMTYsIDB4NUUxNiwgMHgwRTRFLCAweDVFMTcsIDB4NUUxNywgMHgzMDRFLA0KKyAgICAweDVFMTgsIDB4NUUxOCwgMHgwOUZBLCAweDVFMTksIDB4NUUxOSwgMHgxNTlGLCAweDVFMUEsIDB4NUUxQSwgMHgxMUUyLA0KKyAgICAweDVFMUIsIDB4NUUxQiwgMHgwNDc2LCAweDVFMUMsIDB4NUUxQywgMHgxMUMzLCAweDVFMUQsIDB4NUUxRCwgMHgwNUJDLA0KKyAgICAweDVFMUUsIDB4NUUyNCwgMHgzMDRGLCAweDVFMjUsIDB4NUUyNSwgMHgyMTQzLCAweDVFMjYsIDB4NUUyNiwgMHgwNTdCLA0KKyAgICAweDVFMjcsIDB4NUUyNywgMHgxMUEwLCAweDVFMjgsIDB4NUUyQSwgMHgzMDU2LCAweDVFMkIsIDB4NUUyQiwgMHgyMTI5LA0KKyAgICAweDVFMkMsIDB4NUUyQywgMHgzMDU5LCAweDVFMkQsIDB4NUUyRCwgMHgwRjFDLCAweDVFMkUsIDB4NUUyRSwgMHgwM0ZBLA0KKyAgICAweDVFMkYsIDB4NUUzMCwgMHgzMDVBLCAweDVFMzEsIDB4NUUzMSwgMHgxNUEyLCAweDVFMzIsIDB4NUUzMiwgMHgzMDVDLA0KKyAgICAweDVFMzMsIDB4NUUzMywgMHgyMjc3LCAweDVFMzQsIDB4NUUzNSwgMHgzMDVELCAweDVFMzYsIDB4NUUzNiwgMHgxRUE3LA0KKyAgICAweDVFMzcsIDB4NUUzNywgMHgxNUE1LCAweDVFMzgsIDB4NUUzOCwgMHgwNEM4LCAweDVFMzksIDB4NUUzQSwgMHgzMDVGLA0KKyAgICAweDVFM0IsIDB4NUUzQywgMHgxNUEzLCAweDVFM0QsIDB4NUUzRCwgMHgwQUI2LCAweDVFM0UsIDB4NUUzRiwgMHgzMDYxLA0KKyAgICAweDVFNDAsIDB4NUU0MCwgMHgyMjg1LCAweDVFNDEsIDB4NUU0MSwgMHgzMDYzLCAweDVFNDIsIDB4NUU0MiwgMHgwQUUyLA0KKyAgICAweDVFNDMsIDB4NUU0MywgMHgyMzg0LCAweDVFNDQsIDB4NUU0NCwgMHgxNUE2LCAweDVFNDUsIDB4NUU0NSwgMHgwNjk2LA0KKyAgICAweDVFNDYsIDB4NUU0QiwgMHgzMDY0LCAweDVFNEMsIDB4NUU0QywgMHgwN0U0LCAweDVFNEQsIDB4NUU1MywgMHgzMDZBLA0KKyAgICAweDVFNTQsIDB4NUU1NCwgMHgxNUE3LCAweDVFNTUsIDB4NUU1NSwgMHgwQjFFLCAweDVFNTYsIDB4NUU1NiwgMHgzMDcxLA0KKyAgICAweDVFNTcsIDB4NUU1NywgMHgyMzg3LCAweDVFNTgsIDB4NUU1OCwgMHgyMzg2LCAweDVFNTksIDB4NUU1QSwgMHgzMDcyLA0KKyAgICAweDVFNUIsIDB4NUU1QiwgMHgxNUE4LCAweDVFNUMsIDB4NUU1RCwgMHgzMDc0LCAweDVFNUUsIDB4NUU1RSwgMHgxNUE5LA0KKyAgICAweDVFNUYsIDB4NUU1RiwgMHgyMjkwLCAweDVFNjAsIDB4NUU2MCwgMHgzMDc2LCAweDVFNjEsIDB4NUU2MSwgMHgxNUFBLA0KKyAgICAweDVFNjIsIDB4NUU2MiwgMHgwNTM0LCAweDVFNjMsIDB4NUU2MywgMHgxRTQ0LCAweDVFNjQsIDB4NUU2QSwgMHgzMDc3LA0KKyAgICAweDVFNkIsIDB4NUU2QiwgMHgxRTMyLCAweDVFNkMsIDB4NUU2QywgMHgyMzg1LCAweDVFNkQsIDB4NUU3MSwgMHgzMDdFLA0KKyAgICAweDVFNzIsIDB4NUU3MiwgMHgwNkM0LCAweDVFNzMsIDB4NUU3MywgMHgwQkRDLCAweDVFNzQsIDB4NUU3NCwgMHgwQjRELA0KKyAgICAweDVFNzUsIDB4NUU3NSwgMHgzMDgzLCAweDVFNzYsIDB4NUU3NiwgMHgwNDY5LCAweDVFNzcsIDB4NUU3NywgMHgzMDg0LA0KKyAgICAweDVFNzgsIDB4NUU3OCwgMHgwRjlELCAweDVFNzksIDB4NUU3OSwgMHgxRjEzLCAweDVFN0EsIDB4NUU3QSwgMHgxODEzLA0KKyAgICAweDVFN0IsIDB4NUU3QiwgMHgwN0Q4LCAweDVFN0MsIDB4NUU3QywgMHgxMEJDLCAweDVFN0QsIDB4NUU3RCwgMHgxMEE5LA0KKyAgICAweDVFN0UsIDB4NUU3RSwgMHgxRjczLCAweDVFN0YsIDB4NUU3RiwgMHgwNzNDLCAweDVFODAsIDB4NUU4MCwgMHgxNjMxLA0KKyAgICAweDVFODEsIDB4NUU4MywgMHgzMDg1LCAweDVFODQsIDB4NUU4NCwgMHgxMjBDLCAweDVFODUsIDB4NUU4NSwgMHgzMDg4LA0KKyAgICAweDVFODYsIDB4NUU4NiwgMHgwQzY5LCAweDVFODcsIDB4NUU4NywgMHgwNDNDLCAweDVFODgsIDB4NUU4OSwgMHgzMDg5LA0KKyAgICAweDVFOEEsIDB4NUU4QSwgMHgwNTM1LCAweDVFOEIsIDB4NUU4QiwgMHgxNjMzLCAweDVFOEMsIDB4NUU4RSwgMHgzMDhCLA0KKyAgICAweDVFOEYsIDB4NUU4RiwgMHgwRkJELCAweDVFOTAsIDB4NUU5MCwgMHgwQTU1LCAweDVFOTEsIDB4NUU5MSwgMHgxNjMyLA0KKyAgICAweDVFOTIsIDB4NUU5MiwgMHgzMDhFLCAweDVFOTMsIDB4NUU5MywgMHgwOTZGLCAweDVFOTQsIDB4NUU5NCwgMHgxMDhCLA0KKyAgICAweDVFOTUsIDB4NUU5NSwgMHgwNUI4LCAweDVFOTYsIDB4NUU5NiwgMHgxNjM0LCAweDVFOTcsIDB4NUU5NywgMHgwNUNCLA0KKyAgICAweDVFOTgsIDB4NUU5OCwgMHgzMDhGLCAweDVFOTksIDB4NUU5OSwgMHgwQUYyLCAweDVFOUEsIDB4NUU5QSwgMHgwNkY4LA0KKyAgICAweDVFOUIsIDB4NUU5QiwgMHgzMDkwLCAweDVFOUMsIDB4NUU5QywgMHgwNkE5LCAweDVFOUQsIDB4NUU5RCwgMHgzMDkxLA0KKyAgICAweDVFOUUsIDB4NUU5RSwgMHgwQjk0LCAweDVFOUYsIDB4NUU5RiwgMHgwNjZDLCAweDVFQTAsIDB4NUVBMCwgMHgxNjM2LA0KKyAgICAweDVFQTEsIDB4NUVBNCwgMHgzMDkyLCAweDVFQTUsIDB4NUVBNSwgMHgxNjM1LCAweDVFQTYsIDB4NUVBNiwgMHgwNjA3LA0KKyAgICAweDVFQTcsIDB4NUVBNywgMHgxMjU2LCAweDVFQTgsIDB4NUVBQSwgMHgzMDk2LCAweDVFQUIsIDB4NUVBQiwgMHgxRkUwLA0KKyAgICAweDVFQUMsIDB4NUVBQywgMHgzMDk5LCAweDVFQUQsIDB4NUVBRCwgMHgwRTU2LCAweDVFQUUsIDB4NUVCMiwgMHgzMDlBLA0KKyAgICAweDVFQjMsIDB4NUVCMywgMHgxNjNBLCAweDVFQjQsIDB4NUVCNCwgMHgzMDlGLCAweDVFQjUsIDB4NUVCNSwgMHgxNjM4LA0KKyAgICAweDVFQjYsIDB4NUVCNiwgMHgwRDkzLCAweDVFQjcsIDB4NUVCNywgMHgwOTQyLCAweDVFQjgsIDB4NUVCOCwgMHgxMDlFLA0KKyAgICAweDVFQjksIDB4NUVCOSwgMHgxNjM3LCAweDVFQkEsIDB4NUVCRCwgMHgzMEEwLCAweDVFQkUsIDB4NUVCRSwgMHgxNjM5LA0KKyAgICAweDVFQkYsIDB4NUVDOCwgMHgzMEE0LCAweDVFQzksIDB4NUVDOSwgMHgwOUY3LCAweDVFQ0EsIDB4NUVDQSwgMHgwOUIzLA0KKyAgICAweDVFQ0IsIDB4NUVEMCwgMHgzMEFFLCAweDVFRDEsIDB4NUVEMSwgMHgxNjNELCAweDVFRDIsIDB4NUVEMiwgMHgxNjNDLA0KKyAgICAweDVFRDMsIDB4NUVEMywgMHgwOTk1LCAweDVFRDQsIDB4NUVENSwgMHgzMEI0LCAweDVFRDYsIDB4NUVENiwgMHgwQTE3LA0KKyAgICAweDVFRDcsIDB4NUVEQSwgMHgzMEI2LCAweDVFREIsIDB4NUVEQiwgMHgxNjNFLCAweDVFREMsIDB4NUVERSwgMHgzMEJBLA0KKyAgICAweDVFREYsIDB4NUVERiwgMHgyMDg3LCAweDVFRTAsIDB4NUVFMCwgMHgxRTc4LCAweDVFRTEsIDB4NUVFMSwgMHgyM0FFLA0KKyAgICAweDVFRTIsIDB4NUVFMiwgMHgxRUY2LCAweDVFRTMsIDB4NUVFMywgMHgxRjMxLCAweDVFRTQsIDB4NUVFNywgMHgzMEJELA0KKyAgICAweDVFRTgsIDB4NUVFOCwgMHgxNjNGLCAweDVFRTksIDB4NUVFOSwgMHgzMEMxLCAweDVFRUEsIDB4NUVFQSwgMHgxNjQwLA0KKyAgICAweDVFRUIsIDB4NUVFQiwgMHgzMEMyLCAweDVFRUMsIDB4NUVFQywgMHgyMDQ1LCAweDVFRUQsIDB4NUVGMiwgMHgzMEMzLA0KKyAgICAweDVFRjMsIDB4NUVGMywgMHgyMTc4LCAweDVFRjQsIDB4NUVGNCwgMHgxMzk4LCAweDVFRjUsIDB4NUVGNSwgMHgzMEM5LA0KKyAgICAweDVFRjYsIDB4NUVGNiwgMHgwRkZDLCAweDVFRjcsIDB4NUVGNywgMHgwRTUzLCAweDVFRjgsIDB4NUVGOSwgMHgzMENBLA0KKyAgICAweDVFRkEsIDB4NUVGQSwgMHgwODc5LCAweDVFRkIsIDB4NUVGRCwgMHgzMENDLCAweDVFRkUsIDB4NUVGRSwgMHgxNEFELA0KKyAgICAweDVFRkYsIDB4NUVGRiwgMHgxMjVCLCAweDVGMDAsIDB4NUYwMCwgMHgwOTM3LCAweDVGMDEsIDB4NUYwMSwgMHgxMzlELA0KKyAgICAweDVGMDIsIDB4NUYwMiwgMHgxMDczLCAweDVGMDMsIDB4NUYwMywgMHgwQzE5LCAweDVGMDQsIDB4NUYwNCwgMHgwQjZCLA0KKyAgICAweDVGMDUsIDB4NUYwNywgMHgzMENGLCAweDVGMDgsIDB4NUYwOCwgMHgxNEFFLCAweDVGMDksIDB4NUYwOSwgMHgzMEQyLA0KKyAgICAweDVGMEEsIDB4NUYwQSwgMHgwNDQwLCAweDVGMEIsIDB4NUYwQiwgMHgxNEY2LCAweDVGMEMsIDB4NUYwRSwgMHgzMEQzLA0KKyAgICAweDVGMEYsIDB4NUYwRiwgMHgwRDU0LCAweDVGMTAsIDB4NUYxMCwgMHgzMEQ2LCAweDVGMTEsIDB4NUYxMSwgMHgxNEY5LA0KKyAgICAweDVGMTIsIDB4NUYxMiwgMHgzMEQ3LCAweDVGMTMsIDB4NUYxMywgMHgwNzA2LCAweDVGMTQsIDB4NUYxNCwgMHgzMEQ4LA0KKyAgICAweDVGMTUsIDB4NUYxNSwgMHgxMDg0LCAweDVGMTYsIDB4NUYxNiwgMHgzMEQ5LCAweDVGMTcsIDB4NUYxNywgMHgwNkEwLA0KKyAgICAweDVGMTgsIDB4NUYxOCwgMHgwN0EyLCAweDVGMTksIDB4NUYxQSwgMHgzMERBLCAweDVGMUIsIDB4NUYxQiwgMHgwNEZGLA0KKyAgICAweDVGMUMsIDB4NUYxRSwgMHgzMERDLCAweDVGMUYsIDB4NUYxRiwgMHgwNUJELCAweDVGMjAsIDB4NUYyMCwgMHgxMTY2LA0KKyAgICAweDVGMjEsIDB4NUYyNCwgMHgzMERGLCAweDVGMjUsIDB4NUYyNSwgMHgwQURCLCAweDVGMjYsIDB4NUYyNiwgMHgwRjNGLA0KKyAgICAweDVGMjcsIDB4NUYyNywgMHgwN0I2LCAweDVGMjgsIDB4NUYyOCwgMHgzMEUzLCAweDVGMjksIDB4NUYyOSwgMHgxNzZGLA0KKyAgICAweDVGMkEsIDB4NUYyQSwgMHgxNzZFLCAweDVGMkIsIDB4NUYyQywgMHgzMEU0LCAweDVGMkQsIDB4NUYyRCwgMHgxNzcwLA0KKyAgICAweDVGMkUsIDB4NUYyRSwgMHgzMEU2LCAweDVGMkYsIDB4NUYyRiwgMHgwRTk1LCAweDVGMzAsIDB4NUYzMCwgMHgzMEU3LA0KKyAgICAweDVGMzEsIDB4NUYzMSwgMHgwQ0QwLCAweDVGMzIsIDB4NUYzMiwgMHgzMEU4LCAweDVGMzMsIDB4NUYzMywgMHgyM0Y1LA0KKyAgICAweDVGMzQsIDB4NUYzNCwgMHgzMEU5LCAweDVGMzUsIDB4NUYzNSwgMHgyMjc1LCAweDVGMzYsIDB4NUYzOCwgMHgzMEVBLA0KKyAgICAweDVGMzksIDB4NUYzOSwgMHgwNTkwLCAweDVGM0EsIDB4NUYzQSwgMHgwQzNDLCAweDVGM0IsIDB4NUYzQiwgMHgzMEVELA0KKyAgICAweDVGM0MsIDB4NUYzQywgMHgxNzcyLCAweDVGM0QsIDB4NUYzRiwgMHgzMEVFLCAweDVGNDAsIDB4NUY0MCwgMHgxOUJFLA0KKyAgICAweDVGNDEsIDB4NUY0NSwgMHgzMEYxLCAweDVGNDYsIDB4NUY0NiwgMHgyNjZFLCAweDVGNDcsIDB4NUY0NywgMHgzMEY2LA0KKyAgICAweDVGNDgsIDB4NUY0OCwgMHgxRUIwLCAweDVGNDksIDB4NUY0QiwgMHgzMEY3LCAweDVGNEMsIDB4NUY0QywgMHgyMDgzLA0KKyAgICAweDVGNEQsIDB4NUY0RCwgMHgzMEZBLCAweDVGNEUsIDB4NUY0RSwgMHgyMTg4LCAweDVGNEYsIDB4NUY0RiwgMHgzMEZCLA0KKyAgICAweDVGNTAsIDB4NUY1MCwgMHgxNzYyLCAweDVGNTEsIDB4NUY1MSwgMHgzMEZDLCAweDVGNTIsIDB4NUY1MiwgMHgwNzQyLA0KKyAgICAweDVGNTMsIDB4NUY1MywgMHgwNTkyLCAweDVGNTQsIDB4NUY1NCwgMHgzMEZELCAweDVGNTUsIDB4NUY1NSwgMHgwQTYzLA0KKyAgICAweDVGNTYsIDB4NUY1NiwgMHgxNzY0LCAweDVGNTcsIDB4NUY1NywgMHgxNzYzLCAweDVGNTgsIDB4NUY1OCwgMHgxNzY1LA0KKyAgICAweDVGNTksIDB4NUY1OSwgMHgyNjdDLCAweDVGNUEsIDB4NUY1QywgMHgzMEZFLCAweDVGNUQsIDB4NUY1RCwgMHgxMDU0LA0KKyAgICAweDVGNUUsIDB4NUY2MCwgMHgzMTAxLCAweDVGNjEsIDB4NUY2MSwgMHgxNUVFLCAweDVGNjIsIDB4NUY2MiwgMHgwRjk5LA0KKyAgICAweDVGNjMsIDB4NUY2MywgMHgzMTA0LCAweDVGNjQsIDB4NUY2NCwgMHgwRTVGLCAweDVGNjUsIDB4NUY2NSwgMHgzMTA1LA0KKyAgICAweDVGNjYsIDB4NUY2NiwgMHgxMDBFLCAweDVGNjcsIDB4NUY2OCwgMHgzMTA2LCAweDVGNjksIDB4NUY2OSwgMHgwNDkxLA0KKyAgICAweDVGNkEsIDB4NUY2QSwgMHgwNDU0LCAweDVGNkIsIDB4NUY2QiwgMHgzMTA4LCAweDVGNkMsIDB4NUY2QywgMHgwNDVCLA0KKyAgICAweDVGNkQsIDB4NUY2RCwgMHgwQkFFLCAweDVGNkUsIDB4NUY2RiwgMHgzMTA5LCAweDVGNzAsIDB4NUY3MCwgMHgxMTY0LA0KKyAgICAweDVGNzEsIDB4NUY3MSwgMHgxMDk1LCAweDVGNzIsIDB4NUY3MiwgMHgzMTBCLCAweDVGNzMsIDB4NUY3MywgMHgxNUUwLA0KKyAgICAweDVGNzQsIDB4NUY3NiwgMHgzMTBDLCAweDVGNzcsIDB4NUY3NywgMHgxNUUxLCAweDVGNzgsIDB4NUY3OCwgMHgzMTBGLA0KKyAgICAweDVGNzksIDB4NUY3OSwgMHgxMDYyLCAweDVGN0EsIDB4NUY3QSwgMHgzMTEwLCAweDVGN0IsIDB4NUY3QiwgMHgwNERFLA0KKyAgICAweDVGN0MsIDB4NUY3QywgMHgwNDM0LCAweDVGN0QsIDB4NUY3RiwgMHgzMTExLCAweDVGODAsIDB4NUY4MCwgMHgwRUFBLA0KKyAgICAweDVGODEsIDB4NUY4MSwgMHgxMTk4LCAweDVGODIsIDB4NUY4MiwgMHgxNUUyLCAweDVGODMsIDB4NUY4MywgMHgzMTE0LA0KKyAgICAweDVGODQsIDB4NUY4NCwgMHgwOEU1LCAweDVGODUsIDB4NUY4NSwgMHgwNTgwLCAweDVGODYsIDB4NUY4NiwgMHgzMTE1LA0KKyAgICAweDVGODcsIDB4NUY4NywgMHgxNUUzLCAweDVGODgsIDB4NUY4OCwgMHgwNzkzLCAweDVGODksIDB4NUY4OSwgMHgxNUU0LA0KKyAgICAweDVGOEEsIDB4NUY4QSwgMHgwN0M3LCAweDVGOEIsIDB4NUY4QiwgMHgwQTcwLCAweDVGOEMsIDB4NUY4QywgMHgxNUU1LA0KKyAgICAweDVGOEQsIDB4NUY4RiwgMHgzMTE2LCAweDVGOTAsIDB4NUY5MCwgMHgwRkI3LCAweDVGOTEsIDB4NUY5MSwgMHgxRkM1LA0KKyAgICAweDVGOTIsIDB4NUY5MiwgMHgwRTZFLCAweDVGOTMsIDB4NUY5NCwgMHgzMTE5LCAweDVGOTUsIDB4NUY5NSwgMHgxNUU2LA0KKyAgICAweDVGOTYsIDB4NUY5NiwgMHgzMTFCLCAweDVGOTcsIDB4NUY5NywgMHgwNUE0LCAweDVGOTgsIDB4NUY5OCwgMHgwQjg4LA0KKyAgICAweDVGOTksIDB4NUY5OSwgMHgxNUU3LCAweDVGOUEsIDB4NUY5QiwgMHgzMTFDLCAweDVGOUMsIDB4NUY5QywgMHgxNUU4LA0KKyAgICAweDVGOUQsIDB4NUY5RCwgMHgzMTFFLCAweDVGOUUsIDB4NUY5RSwgMHgxRUExLCAweDVGOUYsIDB4NUY5RiwgMHgzMTFGLA0KKyAgICAweDVGQTAsIDB4NUZBMCwgMHgyMzkzLCAweDVGQTEsIDB4NUZBMSwgMHgxMERFLCAweDVGQTIsIDB4NUZBNywgMHgzMTIwLA0KKyAgICAweDVGQTgsIDB4NUZBOCwgMHgxNUU5LCAweDVGQTksIDB4NUZBOSwgMHgxRjBCLCAweDVGQUEsIDB4NUZBQSwgMHgwRkQ2LA0KKyAgICAweDVGQUIsIDB4NUZBQywgMHgzMTI2LCAweDVGQUQsIDB4NUZBRCwgMHgxNUVBLCAweDVGQUUsIDB4NUZBRSwgMHgwRUIxLA0KKyAgICAweDVGQUYsIDB4NUZCNCwgMHgzMTI4LCAweDVGQjUsIDB4NUZCNSwgMHgxNUVCLCAweDVGQjYsIDB4NUZCNiwgMHgzMTJFLA0KKyAgICAweDVGQjcsIDB4NUZCNywgMHgwNUEzLCAweDVGQjgsIDB4NUZCOCwgMHgzMTJGLCAweDVGQjksIDB4NUZCOSwgMHgxRTdDLA0KKyAgICAweDVGQkEsIDB4NUZCQiwgMHgzMTMwLCAweDVGQkMsIDB4NUZCQywgMHgxNUVDLCAweDVGQkQsIDB4NUZCRCwgMHgwN0VBLA0KKyAgICAweDVGQkUsIDB4NUZDMiwgMHgzMTMyLCAweDVGQzMsIDB4NUZDMywgMHgwRjhGLCAweDVGQzQsIDB4NUZDNCwgMHgxNjQyLA0KKyAgICAweDVGQzUsIDB4NUZDNSwgMHgwNDQxLCAweDVGQzYsIDB4NUZDNiwgMHgxMDZCLCAweDVGQzcsIDB4NUZDOCwgMHgzMTM3LA0KKyAgICAweDVGQzksIDB4NUZDOSwgMHgxNjQzLCAweDVGQ0EsIDB4NUZDQiwgMHgzMTM5LCAweDVGQ0MsIDB4NUZDQywgMHgwODNDLA0KKyAgICAweDVGQ0QsIDB4NUZDRCwgMHgwQ0E3LCAweDVGQ0UsIDB4NUZDRSwgMHgzMTNCLCAweDVGQ0YsIDB4NUZDRiwgMHgxNjQ1LA0KKyAgICAweDVGRDAsIDB4NUZEMCwgMHgxQTBDLCAweDVGRDEsIDB4NUZEMSwgMHgxQTBCLCAweDVGRDIsIDB4NUZEMiwgMHgxNEY3LA0KKyAgICAweDVGRDMsIDB4NUZENSwgMHgzMTNDLCAweDVGRDYsIDB4NUZENiwgMHgxNjQ0LCAweDVGRDcsIDB4NUZENywgMHgxMUJELA0KKyAgICAweDVGRDgsIDB4NUZEOCwgMHgwRUFELCAweDVGRDksIDB4NUZEOSwgMHgwQUFCLCAweDVGREEsIDB4NUZEQywgMHgzMTNGLA0KKyAgICAweDVGREQsIDB4NUZERCwgMHgxNjgzLCAweDVGREUsIDB4NUZERiwgMHgzMTQyLCAweDVGRTAsIDB4NUZFMCwgMHgxMUQxLA0KKyAgICAweDVGRTEsIDB4NUZFMSwgMHgxNjQ5LCAweDVGRTIsIDB4NUZFMywgMHgzMTQ0LCAweDVGRTQsIDB4NUZFNCwgMHgxNjRBLA0KKyAgICAweDVGRTUsIDB4NUZFNiwgMHgzMTQ2LCAweDVGRTcsIDB4NUZFNywgMHgxMEFDLCAweDVGRTgsIDB4NUZFOSwgMHgzMTQ4LA0KKyAgICAweDVGRUEsIDB4NUZFQSwgMHgxNjRFLCAweDVGRUIsIDB4NUZFQiwgMHgwOTc5LCAweDVGRUMsIDB4NUZFQywgMHgzMTRBLA0KKyAgICAweDVGRUQsIDB4NUZFRCwgMHgxNjRGLCAweDVGRUUsIDB4NUZFRSwgMHgxNjQ3LCAweDVGRUYsIDB4NUZGMCwgMHgzMTRCLA0KKyAgICAweDVGRjEsIDB4NUZGMSwgMHgwNEU1LCAweDVGRjIsIDB4NUZGNCwgMHgzMTRELCAweDVGRjUsIDB4NUZGNSwgMHgwQjUxLA0KKyAgICAweDVGRjYsIDB4NUZGNywgMHgzMTUwLCAweDVGRjgsIDB4NUZGOCwgMHgxNjUwLCAweDVGRjksIDB4NUZGQSwgMHgzMTUyLA0KKyAgICAweDVGRkIsIDB4NUZGQiwgMHgwRjhFLCAweDVGRkMsIDB4NUZGQywgMHgzMTU0LCAweDVGRkQsIDB4NUZGRCwgMHgwN0FELA0KKyAgICAweDVGRkUsIDB4NUZGRSwgMHgxNjRCLCAweDVGRkYsIDB4NUZGRiwgMHgwNjdCLCAweDYwMDAsIDB4NjAwMCwgMHgwN0M4LA0KKyAgICAweDYwMDEsIDB4NjAwMSwgMHgwREZGLCAweDYwMDIsIDB4NjAwMiwgMHgwREMwLCAweDYwMDMsIDB4NjAwMywgMHgxNjQ2LA0KKyAgICAweDYwMDQsIDB4NjAwNCwgMHgxNjQ4LCAweDYwMDUsIDB4NjAwNiwgMHgxNjRDLCAweDYwMDcsIDB4NjAwOSwgMHgzMTU1LA0KKyAgICAweDYwMEEsIDB4NjAwQSwgMHgxNjU5LCAweDYwMEIsIDB4NjAwQywgMHgzMTU4LCAweDYwMEQsIDB4NjAwRCwgMHgxNjU2LA0KKyAgICAweDYwMEUsIDB4NjAwRSwgMHgxMTM4LCAweDYwMEYsIDB4NjAwRiwgMHgxNjU1LCAweDYwMTAsIDB4NjAxMSwgMHgzMTVBLA0KKyAgICAweDYwMTIsIDB4NjAxMiwgMHgwQjZFLCAweDYwMTMsIDB4NjAxMywgMHgzMTVDLCAweDYwMTQsIDB4NjAxNCwgMHgxMTlCLA0KKyAgICAweDYwMTUsIDB4NjAxNSwgMHgwQjgzLCAweDYwMTYsIDB4NjAxNiwgMHgwNDg3LCAweDYwMTcsIDB4NjAxOCwgMHgzMTVELA0KKyAgICAweDYwMTksIDB4NjAxOSwgMHgxNjUxLCAweDYwMUEsIDB4NjAxQSwgMHgzMTVGLCAweDYwMUIsIDB4NjAxQiwgMHgxNjU0LA0KKyAgICAweDYwMUMsIDB4NjAxQywgMHgwOUY4LCAweDYwMUQsIDB4NjAxRCwgMHgwREIxLCAweDYwMUUsIDB4NjAxRiwgMHgzMTYwLA0KKyAgICAweDYwMjAsIDB4NjAyMCwgMHgwNTgyLCAweDYwMjEsIDB4NjAyMSwgMHgxNjVCLCAweDYwMjIsIDB4NjAyNCwgMHgzMTYyLA0KKyAgICAweDYwMjUsIDB4NjAyNSwgMHgwODI0LCAweDYwMjYsIDB4NjAyNiwgMHgxNjUzLCAweDYwMjcsIDB4NjAyNywgMHgwRjlGLA0KKyAgICAweDYwMjgsIDB4NjAyOCwgMHgxMEZDLCAweDYwMjksIDB4NjAyOSwgMHgxNjU3LCAweDYwMkEsIDB4NjAyQSwgMHgwNzJGLA0KKyAgICAweDYwMkIsIDB4NjAyQiwgMHgxNjU4LCAweDYwMkMsIDB4NjAyRSwgMHgzMTY1LCAweDYwMkYsIDB4NjAyRiwgMHgwQzUwLA0KKyAgICAweDYwMzAsIDB4NjAzNCwgMHgzMTY4LCAweDYwMzUsIDB4NjAzNSwgMHgxNjUyLCAweDYwMzYsIDB4NjAzQSwgMHgzMTZELA0KKyAgICAweDYwM0IsIDB4NjAzQiwgMHgxMjM5LCAweDYwM0MsIDB4NjAzQywgMHgxQTBELCAweDYwM0QsIDB4NjAzRSwgMHgzMTcyLA0KKyAgICAweDYwM0YsIDB4NjAzRiwgMHgxNjVBLCAweDYwNDAsIDB4NjA0MCwgMHgzMTc0LCAweDYwNDEsIDB4NjA0MSwgMHgxQTExLA0KKyAgICAweDYwNDIsIDB4NjA0MiwgMHgxNjYwLCAweDYwNDMsIDB4NjA0MywgMHgwRDY4LCAweDYwNDQsIDB4NjA0QSwgMHgzMTc1LA0KKyAgICAweDYwNEIsIDB4NjA0QiwgMHgwOUZFLCAweDYwNEMsIDB4NjA0QywgMHgzMTdDLCAweDYwNEQsIDB4NjA0RCwgMHgwN0U1LA0KKyAgICAweDYwNEUsIDB4NjA0RiwgMHgzMTdELCAweDYwNTAsIDB4NjA1MCwgMHgwOTYzLCAweDYwNTEsIDB4NjA1MSwgMHgzMTdGLA0KKyAgICAweDYwNTIsIDB4NjA1MiwgMHgwNzlBLCAweDYwNTMsIDB4NjA1NCwgMHgzMTgwLCAweDYwNTUsIDB4NjA1NSwgMHgwRDk2LA0KKyAgICAweDYwNTYsIDB4NjA1OCwgMHgzMTgyLCAweDYwNTksIDB4NjA1OSwgMHgxQTEyLCAweDYwNUEsIDB4NjA1QSwgMHgxQTBGLA0KKyAgICAweDYwNUIsIDB4NjA1QywgMHgzMTg1LCAweDYwNUQsIDB4NjA1RCwgMHgxQTBFLCAweDYwNUUsIDB4NjA2MSwgMHgzMTg3LA0KKyAgICAweDYwNjIsIDB4NjA2MiwgMHgwN0VCLCAweDYwNjMsIDB4NjA2MywgMHgxQTEzLCAweDYwNjQsIDB4NjA2NCwgMHgwRkJGLA0KKyAgICAweDYwNjUsIDB4NjA2NiwgMHgzMThCLCAweDYwNjcsIDB4NjA2NywgMHgxQTEwLCAweDYwNjgsIDB4NjA2OCwgMHgwNzk1LA0KKyAgICAweDYwNjksIDB4NjA2OSwgMHgwNjM2LCAweDYwNkEsIDB4NjA2QSwgMHgxNjYxLCAweDYwNkIsIDB4NjA2QiwgMHgwNUYxLA0KKyAgICAweDYwNkMsIDB4NjA2QywgMHgwRTQ0LCAweDYwNkQsIDB4NjA2RCwgMHgwNzAwLCAweDYwNkUsIDB4NjA2RSwgMHgzMThELA0KKyAgICAweDYwNkYsIDB4NjA2RiwgMHgwRjBGLCAweDYwNzAsIDB4NjA3MCwgMHgwQzFFLCAweDYwNzEsIDB4NjA3MiwgMHgzMThFLA0KKyAgICAweDYwNzMsIDB4NjA3MywgMHgwOTVGLCAweDYwNzQsIDB4NjA3NSwgMHgzMTkwLCAweDYwNzYsIDB4NjA3NiwgMHgwNjMwLA0KKyAgICAweDYwNzcsIDB4NjA3NywgMHgzMTkyLCAweDYwNzgsIDB4NjA3OSwgMHgxNjVDLCAweDYwN0EsIDB4NjA3QSwgMHgxNjVGLA0KKyAgICAweDYwN0IsIDB4NjA3QiwgMHgxNjVFLCAweDYwN0MsIDB4NjA3QywgMHgwQjM4LCAweDYwN0QsIDB4NjA3RCwgMHgxNjYyLA0KKyAgICAweDYwN0UsIDB4NjA3RSwgMHgzMTkzLCAweDYwN0YsIDB4NjA3RiwgMHgxMEE2LCAweDYwODAsIDB4NjA4MiwgMHgzMTk0LA0KKyAgICAweDYwODMsIDB4NjA4MywgMHgxNjY3LCAweDYwODQsIDB4NjA4NCwgMHgwQzQxLCAweDYwODUsIDB4NjA4OCwgMHgzMTk3LA0KKyAgICAweDYwODksIDB4NjA4OSwgMHgwRjExLCAweDYwOEEsIDB4NjA4QiwgMHgzMTlCLCAweDYwOEMsIDB4NjA4QywgMHgxNjY5LA0KKyAgICAweDYwOEQsIDB4NjA4RCwgMHgwNzZFLCAweDYwOEUsIDB4NjA5MSwgMHgzMTlELCAweDYwOTIsIDB4NjA5MiwgMHgxNjY4LA0KKyAgICAweDYwOTMsIDB4NjA5MywgMHgzMUExLCAweDYwOTQsIDB4NjA5NCwgMHgwN0VGLCAweDYwOTUsIDB4NjA5NSwgMHgzMUEyLA0KKyAgICAweDYwOTYsIDB4NjA5NiwgMHgxNjYzLCAweDYwOTcsIDB4NjA5OSwgMHgzMUEzLCAweDYwOUEsIDB4NjA5QSwgMHgxNjY0LA0KKyAgICAweDYwOUIsIDB4NjA5QiwgMHgxNjZBLCAweDYwOUMsIDB4NjA5QywgMHgzMUE2LCAweDYwOUQsIDB4NjA5RCwgMHgxNjY2LA0KKyAgICAweDYwOUUsIDB4NjA5RSwgMHgzMUE3LCAweDYwOUYsIDB4NjA5RiwgMHgwRjAxLCAweDYwQTAsIDB4NjBBMCwgMHgxMEFCLA0KKyAgICAweDYwQTEsIDB4NjBBMiwgMHgzMUE4LCAweDYwQTMsIDB4NjBBMywgMHgwN0QxLCAweDYwQTQsIDB4NjBBNSwgMHgzMUFBLA0KKyAgICAweDYwQTYsIDB4NjBBNiwgMHgxMTA2LCAweDYwQTcsIDB4NjBBNywgMHgzMUFDLCAweDYwQTgsIDB4NjBBOCwgMHgwQjVELA0KKyAgICAweDYwQTksIDB4NjBBQSwgMHgzMUFELCAweDYwQUIsIDB4NjBBQiwgMHgxQTE0LCAweDYwQUMsIDB4NjBBQywgMHgwRkM3LA0KKyAgICAweDYwQUQsIDB4NjBBRCwgMHgxNjY1LCAweDYwQUUsIDB4NjBBRSwgMHgzMUFGLCAweDYwQUYsIDB4NjBBRiwgMHgwQUZBLA0KKyAgICAweDYwQjAsIDB4NjBCMCwgMHgzMUIwLCAweDYwQjEsIDB4NjBCMSwgMHgxNjZELCAweDYwQjIsIDB4NjBCMiwgMHgwNDE4LA0KKyAgICAweDYwQjMsIDB4NjBCMywgMHgzMUIxLCAweDYwQjQsIDB4NjBCNCwgMHgxNjcyLCAweDYwQjUsIDB4NjBCNSwgMHgyM0I0LA0KKyAgICAweDYwQjYsIDB4NjBCNiwgMHgyMDdFLCAweDYwQjcsIDB4NjBCNywgMHgzMUIyLCAweDYwQjgsIDB4NjBCOCwgMHgwODM1LA0KKyAgICAweDYwQjksIDB4NjBCQSwgMHgzMUIzLCAweDYwQkIsIDB4NjBCQiwgMHgxNjZDLCAweDYwQkMsIDB4NjBCQywgMHgwNUEwLA0KKyAgICAweDYwQkQsIDB4NjBDNCwgMHgzMUI1LCAweDYwQzUsIDB4NjBDNSwgMHgwQzY2LCAweDYwQzYsIDB4NjBDNiwgMHgxNjcwLA0KKyAgICAweDYwQzcsIDB4NjBDOSwgMHgzMUJELCAweDYwQ0EsIDB4NjBDQSwgMHgwOEQ5LCAweDYwQ0IsIDB4NjBDQiwgMHgwRUEwLA0KKyAgICAweDYwQ0MsIDB4NjBEMCwgMHgzMUMwLCAweDYwRDEsIDB4NjBEMSwgMHgwODA4LCAweDYwRDIsIDB4NjBENCwgMHgzMUM1LA0KKyAgICAweDYwRDUsIDB4NjBENSwgMHgwRTNCLCAweDYwRDYsIDB4NjBENywgMHgzMUM4LCAweDYwRDgsIDB4NjBEOCwgMHgxNjZGLA0KKyAgICAweDYwRDksIDB4NjBEOSwgMHgzMUNBLCAweDYwREEsIDB4NjBEQSwgMHgxNjcxLCAweDYwREIsIDB4NjBEQiwgMHgzMUNCLA0KKyAgICAweDYwREMsIDB4NjBEQywgMHgwRjE0LCAweDYwREQsIDB4NjBERCwgMHgxNjZFLCAweDYwREUsIDB4NjBERSwgMHgzMUNDLA0KKyAgICAweDYwREYsIDB4NjBERiwgMHgwRUI4LCAweDYwRTAsIDB4NjBFMCwgMHgwN0YyLCAweDYwRTEsIDB4NjBFMSwgMHgxRUUzLA0KKyAgICAweDYwRTIsIDB4NjBFNSwgMHgzMUNELCAweDYwRTYsIDB4NjBFNiwgMHgwNUNDLCAweDYwRTcsIDB4NjBFNywgMHgwOTE0LA0KKyAgICAweDYwRTgsIDB4NjBFOCwgMHgwNDk5LCAweDYwRTksIDB4NjBFOSwgMHgwNEYyLCAweDYwRUEsIDB4NjBFQSwgMHgzMUQxLA0KKyAgICAweDYwRUIsIDB4NjBFQiwgMHgwNDIyLCAweDYwRUMsIDB4NjBFQywgMHgxNjZCLCAweDYwRUQsIDB4NjBFRCwgMHgwNDk4LA0KKyAgICAweDYwRUUsIDB4NjBFRSwgMHgwNThELCAweDYwRUYsIDB4NjBFRiwgMHgwNzM4LCAweDYwRjAsIDB4NjBGMCwgMHgwNjI3LA0KKyAgICAweDYwRjEsIDB4NjBGMSwgMHgyMDk1LCAweDYwRjIsIDB4NjBGMiwgMHgyM0JCLCAweDYwRjMsIDB4NjBGMywgMHgwRjU4LA0KKyAgICAweDYwRjQsIDB4NjBGNCwgMHgxNjc3LCAweDYwRjUsIDB4NjBGNSwgMHgzMUQyLCAweDYwRjYsIDB4NjBGNiwgMHgwN0UxLA0KKyAgICAweDYwRjcsIDB4NjBGOCwgMHgzMUQzLCAweDYwRjksIDB4NjBGOSwgMHgwQ0EyLCAweDYwRkEsIDB4NjBGQSwgMHgwRjk1LA0KKyAgICAweDYwRkIsIDB4NjBGQiwgMHgyM0I5LCAweDYwRkMsIDB4NjBGRiwgMHgzMUQ1LCAweDYxMDAsIDB4NjEwMCwgMHgxNjc4LA0KKyAgICAweDYxMDEsIDB4NjEwMSwgMHgwNTEzLCAweDYxMDIsIDB4NjEwNSwgMHgzMUQ5LCAweDYxMDYsIDB4NjEwNiwgMHgxQTE1LA0KKyAgICAweDYxMDcsIDB4NjEwNywgMHgzMURELCAweDYxMDgsIDB4NjEwOCwgMHgxMERGLCAweDYxMDksIDB4NjEwOSwgMHgxMEM5LA0KKyAgICAweDYxMEEsIDB4NjEwQywgMHgzMURFLCAweDYxMEQsIDB4NjEwRCwgMHgxQTE2LCAweDYxMEUsIDB4NjEwRSwgMHgxNjc5LA0KKyAgICAweDYxMEYsIDB4NjEwRiwgMHgxMDY5LCAweDYxMTAsIDB4NjExNCwgMHgzMUUxLCAweDYxMTUsIDB4NjExNSwgMHgxNjc1LA0KKyAgICAweDYxMTYsIDB4NjExOSwgMHgzMUU2LCAweDYxMUEsIDB4NjExQSwgMHgxMEMzLCAweDYxMUIsIDB4NjExQiwgMHgxRTI4LA0KKyAgICAweDYxMUMsIDB4NjExQywgMHgyM0JELCAweDYxMUQsIDB4NjExRSwgMHgzMUVBLCAweDYxMUYsIDB4NjExRiwgMHgwNkNCLA0KKyAgICAweDYxMjAsIDB4NjEyMCwgMHgxNjczLCAweDYxMjEsIDB4NjEyMiwgMHgzMUVDLCAweDYxMjMsIDB4NjEyMywgMHgxNjc2LA0KKyAgICAweDYxMjQsIDB4NjEyNCwgMHgwNjdDLCAweDYxMjUsIDB4NjEyNSwgMHgzMUVFLCAweDYxMjYsIDB4NjEyNiwgMHgxNjc0LA0KKyAgICAweDYxMjcsIDB4NjEyNywgMHgwOThELCAweDYxMjgsIDB4NjEyQSwgMHgzMUVGLCAweDYxMkIsIDB4NjEyQiwgMHgxNjdBLA0KKyAgICAweDYxMkMsIDB4NjEzMywgMHgzMUYyLCAweDYxMzQsIDB4NjEzNCwgMHgyM0I1LCAweDYxMzUsIDB4NjEzNiwgMHgzMUZBLA0KKyAgICAweDYxMzcsIDB4NjEzNywgMHgyM0JBLCAweDYxMzgsIDB4NjEzRCwgMHgzMUZDLCAweDYxM0UsIDB4NjEzRSwgMHgyM0IzLA0KKyAgICAweDYxM0YsIDB4NjEzRiwgMHgxMEZCLCAweDYxNDAsIDB4NjE0NywgMHgzMjAyLCAweDYxNDgsIDB4NjE0OCwgMHgwNTRCLA0KKyAgICAweDYxNDksIDB4NjE0OSwgMHgzMjBBLCAweDYxNEEsIDB4NjE0QSwgMHgxNjdCLCAweDYxNEIsIDB4NjE0QiwgMHgyMTYyLA0KKyAgICAweDYxNEMsIDB4NjE0QywgMHgwN0RBLCAweDYxNEQsIDB4NjE0RCwgMHgzMjBCLCAweDYxNEUsIDB4NjE0RSwgMHgwRDMwLA0KKyAgICAweDYxNEYsIDB4NjE1MCwgMHgzMjBDLCAweDYxNTEsIDB4NjE1MSwgMHgwRDFFLCAweDYxNTIsIDB4NjE1NCwgMHgzMjBFLA0KKyAgICAweDYxNTUsIDB4NjE1NSwgMHgwQjIwLCAweDYxNTYsIDB4NjE1NywgMHgzMjExLCAweDYxNTgsIDB4NjE1OCwgMHgxRTVFLA0KKyAgICAweDYxNTksIDB4NjE1OSwgMHgzMjEzLCAweDYxNUEsIDB4NjE1QSwgMHgxRTVELCAweDYxNUIsIDB4NjE1QywgMHgzMjE0LA0KKyAgICAweDYxNUQsIDB4NjE1RCwgMHgxQTE3LCAweDYxNUUsIDB4NjE1RSwgMHgzMjE2LCAweDYxNUYsIDB4NjE1RiwgMHgyM0I3LA0KKyAgICAweDYxNjAsIDB4NjE2MSwgMHgzMjE3LCAweDYxNjIsIDB4NjE2MiwgMHgwQUE0LCAweDYxNjMsIDB4NjE2MywgMHgxRjJGLA0KKyAgICAweDYxNjQsIDB4NjE2NCwgMHgyNERGLCAweDYxNjUsIDB4NjE2NiwgMHgzMjE5LCAweDYxNjcsIDB4NjE2NywgMHgwN0YwLA0KKyAgICAweDYxNjgsIDB4NjE2OCwgMHgwOTNCLCAweDYxNjksIDB4NjE2OSwgMHgzMjFCLCAweDYxNkEsIDB4NjE2QSwgMHgyM0IyLA0KKyAgICAweDYxNkIsIDB4NjE2QiwgMHgyMTRFLCAweDYxNkMsIDB4NjE2RCwgMHgzMjFDLCAweDYxNkUsIDB4NjE2RSwgMHgyMDUyLA0KKyAgICAweDYxNkYsIDB4NjE2RiwgMHgzMjFFLCAweDYxNzAsIDB4NjE3MCwgMHgwRUNFLCAweDYxNzEsIDB4NjE3MiwgMHgzMjFGLA0KKyAgICAweDYxNzMsIDB4NjE3MywgMHgyM0JDLCAweDYxNzQsIDB4NjE3NCwgMHgzMjIxLCAweDYxNzUsIDB4NjE3NSwgMHgxNjdDLA0KKyAgICAweDYxNzYsIDB4NjE3NiwgMHgyMEVCLCAweDYxNzcsIDB4NjE3NywgMHgwOTQzLCAweDYxNzgsIDB4NjE4MSwgMHgzMjIyLA0KKyAgICAweDYxODIsIDB4NjE4MiwgMHgyMjMyLCAweDYxODMsIDB4NjE4OSwgMHgzMjJDLCAweDYxOEEsIDB4NjE4QSwgMHgxRTNGLA0KKyAgICAweDYxOEIsIDB4NjE4QiwgMHgwNDU4LCAweDYxOEMsIDB4NjE4RCwgMHgzMjMzLCAweDYxOEUsIDB4NjE4RSwgMHgxMTNBLA0KKyAgICAweDYxOEYsIDB4NjE4RiwgMHgzMjM1LCAweDYxOTAsIDB4NjE5MCwgMHgyMDFCLCAweDYxOTEsIDB4NjE5MSwgMHgyMEJDLA0KKyAgICAweDYxOTIsIDB4NjE5MiwgMHgyM0JFLCAweDYxOTMsIDB4NjE5MywgMHgzMjM2LCAweDYxOTQsIDB4NjE5NCwgMHgxNjdFLA0KKyAgICAweDYxOTUsIDB4NjE5OSwgMHgzMjM3LCAweDYxOUEsIDB4NjE5QSwgMHgxRUFFLCAweDYxOUIsIDB4NjE5QywgMHgzMjNDLA0KKyAgICAweDYxOUQsIDB4NjE5RCwgMHgxQTE5LCAweDYxOUUsIDB4NjFBMywgMHgzMjNFLCAweDYxQTQsIDB4NjFBNCwgMHgxRUZCLA0KKyAgICAweDYxQTUsIDB4NjFBNiwgMHgzMjQ0LCAweDYxQTcsIDB4NjFBNywgMHgxNjdGLCAweDYxQTgsIDB4NjFBOCwgMHgwNzYwLA0KKyAgICAweDYxQTksIDB4NjFBOSwgMHgxQTE4LCAweDYxQUEsIDB4NjFBQSwgMHgzMjQ2LCAweDYxQUIsIDB4NjFBQiwgMHgyMDg5LA0KKyAgICAweDYxQUMsIDB4NjFBQywgMHgxNjdELCAweDYxQUQsIDB4NjFBRCwgMHgzMjQ3LCAweDYxQUUsIDB4NjFBRSwgMHgyM0IxLA0KKyAgICAweDYxQUYsIDB4NjFCMSwgMHgzMjQ4LCAweDYxQjIsIDB4NjFCMiwgMHgyMUM0LCAweDYxQjMsIDB4NjFCNSwgMHgzMjRCLA0KKyAgICAweDYxQjYsIDB4NjFCNiwgMHgyMjE0LCAweDYxQjcsIDB4NjFCNywgMHgxNjgwLCAweDYxQjgsIDB4NjFCRCwgMHgzMjRFLA0KKyAgICAweDYxQkUsIDB4NjFCRSwgMHgwNzZELCAweDYxQkYsIDB4NjFDMSwgMHgzMjU0LCAweDYxQzIsIDB4NjFDMiwgMHgwNUVELA0KKyAgICAweDYxQzMsIDB4NjFDNiwgMHgzMjU3LCAweDYxQzcsIDB4NjFDNywgMHgxRkRFLCAweDYxQzgsIDB4NjFDOCwgMHgwRjgzLA0KKyAgICAweDYxQzksIDB4NjFDOSwgMHgyMjIzLCAweDYxQ0EsIDB4NjFDQSwgMHgwM0NFLCAweDYxQ0IsIDB4NjFDQiwgMHgxQTFBLA0KKyAgICAweDYxQ0MsIDB4NjFDQywgMHgyM0I2LCAweDYxQ0QsIDB4NjFEMCwgMHgzMjVCLCAweDYxRDEsIDB4NjFEMSwgMHgxQTFCLA0KKyAgICAweDYxRDIsIDB4NjFEMiwgMHgwOUFDLCAweDYxRDMsIDB4NjFEMywgMHgzMjVGLCAweDYxRDQsIDB4NjFENCwgMHgxNjgxLA0KKyAgICAweDYxRDUsIDB4NjFERCwgMHgzMjYwLCAweDYxREUsIDB4NjFERSwgMHgyNjhDLCAweDYxREYsIDB4NjFERiwgMHgyNERFLA0KKyAgICAweDYxRTAsIDB4NjFFMiwgMHgzMjY5LCAweDYxRTMsIDB4NjFFMywgMHgyNEUwLCAweDYxRTQsIDB4NjFFNSwgMHgzMjZDLA0KKyAgICAweDYxRTYsIDB4NjFFNiwgMHgwQjc0LCAweDYxRTcsIDB4NjFFNywgMHgzMjZFLCAweDYxRTgsIDB4NjFFOCwgMHgyM0I4LA0KKyAgICAweDYxRTksIDB4NjFGMSwgMHgzMjZGLCAweDYxRjIsIDB4NjFGMiwgMHgxRTgxLCAweDYxRjMsIDB4NjFGNCwgMHgzMjc4LA0KKyAgICAweDYxRjUsIDB4NjFGNSwgMHgxNjgyLCAweDYxRjYsIDB4NjFGNiwgMHgxRkZFLCAweDYxRjcsIDB4NjFGNywgMHgxRjUxLA0KKyAgICAweDYxRjgsIDB4NjFGOCwgMHgyMUUxLCAweDYxRjksIDB4NjFGOSwgMHgzMjdBLCAweDYxRkEsIDB4NjFGQSwgMHgyM0IwLA0KKyAgICAweDYxRkIsIDB4NjFGQiwgMHgzMjdCLCAweDYxRkMsIDB4NjFGQywgMHgxRkNFLCAweDYxRkQsIDB4NjFGRCwgMHgzMjdDLA0KKyAgICAweDYxRkUsIDB4NjFGRSwgMHgyMTFFLCAweDYxRkYsIDB4NjFGRiwgMHgxM0UwLCAweDYyMDAsIDB4NjIwMCwgMHgyMDIxLA0KKyAgICAweDYyMDEsIDB4NjIwNSwgMHgzMjdELCAweDYyMDYsIDB4NjIwNiwgMHgxQTFDLCAweDYyMDcsIDB4NjIwNywgMHgyNEUxLA0KKyAgICAweDYyMDgsIDB4NjIwOCwgMHgwNkU1LCAweDYyMDksIDB4NjIwOSwgMHgzMjgyLCAweDYyMEEsIDB4NjIwQSwgMHgwRUZCLA0KKyAgICAweDYyMEIsIDB4NjIwQiwgMHgxOEY5LCAweDYyMEMsIDB4NjIwQywgMHgwRkIyLCAweDYyMEQsIDB4NjIwRCwgMHgwRDkwLA0KKyAgICAweDYyMEUsIDB4NjIwRSwgMHgwQ0IxLCAweDYyMEYsIDB4NjIwRiwgMHgwRjI0LCAweDYyMTAsIDB4NjIxMCwgMHgwNEVFLA0KKyAgICAweDYyMTEsIDB4NjIxMSwgMHgwRUUxLCAweDYyMTIsIDB4NjIxMiwgMHgwOEI1LCAweDYyMTMsIDB4NjIxMywgMHgzMjgzLA0KKyAgICAweDYyMTQsIDB4NjIxNCwgMHgyNEEzLCAweDYyMTUsIDB4NjIxNSwgMHgxNjlFLCAweDYyMTYsIDB4NjIxNiwgMHgwODA3LA0KKyAgICAweDYyMTcsIDB4NjIxNywgMHgxOEZBLCAweDYyMTgsIDB4NjIxOCwgMHgxMTVFLCAweDYyMTksIDB4NjIxOSwgMHgzMjg0LA0KKyAgICAweDYyMUEsIDB4NjIxQSwgMHgwQkZDLCAweDYyMUIsIDB4NjIxQiwgMHgxOEZCLCAweDYyMUMsIDB4NjIxRSwgMHgzMjg1LA0KKyAgICAweDYyMUYsIDB4NjIxRiwgMHgxOEZDLCAweDYyMjAsIDB4NjIyMCwgMHgzMjg4LCAweDYyMjEsIDB4NjIyMSwgMHgxOEZFLA0KKyAgICAweDYyMjIsIDB4NjIyMiwgMHgxOEZELCAweDYyMjMsIDB4NjIyMywgMHgzMjg5LCAweDYyMjQsIDB4NjIyNCwgMHgxOTAwLA0KKyAgICAweDYyMjUsIDB4NjIyNSwgMHgxOEZGLCAweDYyMjYsIDB4NjIyNiwgMHgzMjhBLCAweDYyMjcsIDB4NjIyNywgMHgyNEE0LA0KKyAgICAweDYyMjgsIDB4NjIyOSwgMHgzMjhCLCAweDYyMkEsIDB4NjIyQSwgMHgwOEE5LCAweDYyMkIsIDB4NjIyQiwgMHgzMjhELA0KKyAgICAweDYyMkMsIDB4NjIyQywgMHgxOTAxLCAweDYyMkQsIDB4NjIyRCwgMHgzMjhFLCAweDYyMkUsIDB4NjIyRSwgMHgwQTY1LA0KKyAgICAweDYyMkYsIDB4NjIyRiwgMHgzMjhGLCAweDYyMzAsIDB4NjIzMCwgMHgyMjczLCAweDYyMzEsIDB4NjIzMSwgMHgzMjkwLA0KKyAgICAweDYyMzIsIDB4NjIzMiwgMHgyMUIwLCAweDYyMzMsIDB4NjIzMywgMHgwNTQ0LCAweDYyMzQsIDB4NjIzNCwgMHgwNTdBLA0KKyAgICAweDYyMzUsIDB4NjIzNiwgMHgzMjkxLCAweDYyMzcsIDB4NjIzNywgMHgwN0JDLCAweDYyMzgsIDB4NjIzQywgMHgzMjkzLA0KKyAgICAweDYyM0QsIDB4NjIzRCwgMHgxOUY0LCAweDYyM0UsIDB4NjIzRSwgMHgxOUYzLCAweDYyM0YsIDB4NjIzRiwgMHgwNjVDLA0KKyAgICAweDYyNDAsIDB4NjI0MCwgMHgwREVFLCAweDYyNDEsIDB4NjI0MSwgMHgwNDRCLCAweDYyNDIsIDB4NjI0MiwgMHgzMjk4LA0KKyAgICAweDYyNDMsIDB4NjI0MywgMHgxOUY1LCAweDYyNDQsIDB4NjI0NiwgMHgzMjk5LCAweDYyNDcsIDB4NjI0NywgMHgwRDAxLA0KKyAgICAweDYyNDgsIDB4NjI0OSwgMHgxOUY2LCAweDYyNEEsIDB4NjI0QSwgMHgzMjlDLCAweDYyNEIsIDB4NjI0QiwgMHgwRDZELA0KKyAgICAweDYyNEMsIDB4NjI0QywgMHgxNEJBLCAweDYyNEQsIDB4NjI0RCwgMHgwNDhDLCAweDYyNEUsIDB4NjI0RSwgMHgxMTNELA0KKyAgICAweDYyNEYsIDB4NjI1MCwgMHgzMjlELCAweDYyNTEsIDB4NjI1MSwgMHgwQkVBLCAweDYyNTIsIDB4NjI1MiwgMHgwM0QyLA0KKyAgICAweDYyNTMsIDB4NjI1MywgMHgwNTc1LCAweDYyNTQsIDB4NjI1NCwgMHgwQ0FFLCAweDYyNTUsIDB4NjI1NywgMHgzMjlGLA0KKyAgICAweDYyNTgsIDB4NjI1OCwgMHgwRTgxLCAweDYyNTksIDB4NjI1QSwgMHgzMkEyLCAweDYyNUIsIDB4NjI1QiwgMHgwOTQ1LA0KKyAgICAweDYyNUMsIDB4NjI2MiwgMHgzMkE0LCAweDYyNjMsIDB4NjI2MywgMHgwOTY4LCAweDYyNjQsIDB4NjI2NSwgMHgzMkFCLA0KKyAgICAweDYyNjYsIDB4NjI2NiwgMHgwQzIxLCAweDYyNjcsIDB4NjI2NywgMHgxMUIzLCAweDYyNjgsIDB4NjI2OCwgMHgzMkFELA0KKyAgICAweDYyNjksIDB4NjI2OSwgMHgwOTk0LCAweDYyNkEsIDB4NjI2QSwgMHgxNEJCLCAweDYyNkIsIDB4NjI2QiwgMHgwQ0UxLA0KKyAgICAweDYyNkMsIDB4NjI2QywgMHgxMDE4LCAweDYyNkQsIDB4NjI2RCwgMHgwQjY1LCAweDYyNkUsIDB4NjI2RSwgMHgwM0YyLA0KKyAgICAweDYyNkYsIDB4NjI2RiwgMHgwNERCLCAweDYyNzAsIDB4NjI3MCwgMHgwQ0EwLCAweDYyNzEsIDB4NjI3MiwgMHgzMkFFLA0KKyAgICAweDYyNzMsIDB4NjI3MywgMHgwM0VELCAweDYyNzQsIDB4NjI3NSwgMHgzMkIwLCAweDYyNzYsIDB4NjI3NiwgMHgwNjkzLA0KKyAgICAweDYyNzcsIDB4NjI3OCwgMHgzMkIyLCAweDYyNzksIDB4NjI3OSwgMHgwQkJCLCAweDYyN0EsIDB4NjI3QiwgMHgzMkI0LA0KKyAgICAweDYyN0MsIDB4NjI3QywgMHgwNjMyLCAweDYyN0QsIDB4NjI3RCwgMHgzMkI2LCAweDYyN0UsIDB4NjI3RSwgMHgxMTczLA0KKyAgICAweDYyN0YsIDB4NjI3RiwgMHgwNEY1LCAweDYyODAsIDB4NjI4MCwgMHgwODJGLCAweDYyODEsIDB4NjI4MywgMHgzMkI3LA0KKyAgICAweDYyODQsIDB4NjI4NCwgMHgwNEQyLCAweDYyODUsIDB4NjI4OCwgMHgzMkJBLCAweDYyODksIDB4NjI4OSwgMHgwOTIwLA0KKyAgICAweDYyOEEsIDB4NjI4QSwgMHgwM0RDLCAweDYyOEIsIDB4NjI5MCwgMHgzMkJFLCAweDYyOTEsIDB4NjI5MSwgMHgxMDVELA0KKyAgICAweDYyOTIsIDB4NjI5MiwgMHgwRDdBLCAweDYyOTMsIDB4NjI5MywgMHgxMjAyLCAweDYyOTQsIDB4NjI5NCwgMHgzMkM0LA0KKyAgICAweDYyOTUsIDB4NjI5NSwgMHgwRTY3LCAweDYyOTYsIDB4NjI5NiwgMHgwNUY1LCAweDYyOTcsIDB4NjI5NywgMHgwOTQ2LA0KKyAgICAweDYyOTgsIDB4NjI5OCwgMHgxMTdDLCAweDYyOTksIDB4NjI5OSwgMHgzMkM1LCAweDYyOUEsIDB4NjI5QSwgMHgwNkEyLA0KKyAgICAweDYyOUIsIDB4NjI5QiwgMHgwQjk4LCAweDYyOUMsIDB4NjI5RSwgMHgzMkM2LCAweDYyOUYsIDB4NjI5RiwgMHgxNEJDLA0KKyAgICAweDYyQTAsIDB4NjJBMCwgMHgwOTY2LCAweDYyQTEsIDB4NjJBMSwgMHgwQTdDLCAweDYyQTIsIDB4NjJBMiwgMHgwQzNELA0KKyAgICAweDYyQTMsIDB4NjJBMywgMHgzMkM5LCAweDYyQTQsIDB4NjJBNCwgMHgwN0I5LCAweDYyQTUsIDB4NjJBNSwgMHgwNDExLA0KKyAgICAweDYyQTYsIDB4NjJBNywgMHgzMkNBLCAweDYyQTgsIDB4NjJBOCwgMHgwQkFCLCAweDYyQTksIDB4NjJBQSwgMHgzMkNDLA0KKyAgICAweDYyQUIsIDB4NjJBQiwgMHgwQkJDLCAweDYyQUMsIDB4NjJBQywgMHgwREZBLCAweDYyQUQsIDB4NjJCMCwgMHgzMkNFLA0KKyAgICAweDYyQjEsIDB4NjJCMSwgMHgwNDEwLCAweDYyQjIsIDB4NjJCNCwgMHgzMkQyLCAweDYyQjUsIDB4NjJCNSwgMHgwNUI3LA0KKyAgICAweDYyQjYsIDB4NjJCOCwgMHgzMkQ1LCAweDYyQjksIDB4NjJCOSwgMHgwQjBCLCAweDYyQkEsIDB4NjJCQSwgMHgzMkQ4LA0KKyAgICAweDYyQkIsIDB4NjJCQiwgMHgxNEJELCAweDYyQkMsIDB4NjJCQywgMHgwRkUzLCAweDYyQkQsIDB4NjJCRCwgMHgwNTBFLA0KKyAgICAweDYyQkUsIDB4NjJCRSwgMHgzMkQ5LCAweDYyQkYsIDB4NjJCRiwgMHgwQUY3LCAweDYyQzAsIDB4NjJDMSwgMHgzMkRBLA0KKyAgICAweDYyQzIsIDB4NjJDMiwgMHgwNjk0LCAweDYyQzMsIDB4NjJDMywgMHgzMkRDLCAweDYyQzQsIDB4NjJDNCwgMHgxMUYzLA0KKyAgICAweDYyQzUsIDB4NjJDNSwgMHgwNTg0LCAweDYyQzYsIDB4NjJDNiwgMHgwNEI3LCAweDYyQzcsIDB4NjJDNywgMHgwQjE3LA0KKyAgICAweDYyQzgsIDB4NjJDOCwgMHgwQjRDLCAweDYyQzksIDB4NjJDOSwgMHgwOTk4LCAweDYyQ0EsIDB4NjJDQSwgMHgxNEJFLA0KKyAgICAweDYyQ0IsIDB4NjJDQiwgMHgzMkRELCAweDYyQ0MsIDB4NjJDQywgMHgwM0YzLCAweDYyQ0QsIDB4NjJDRCwgMHgwQjg1LA0KKyAgICAweDYyQ0UsIDB4NjJDRSwgMHgwQTI5LCAweDYyQ0YsIDB4NjJDRiwgMHgzMkRFLCAweDYyRDAsIDB4NjJEMCwgMHgwNzJFLA0KKyAgICAweDYyRDEsIDB4NjJEMSwgMHgzMkRGLCAweDYyRDIsIDB4NjJEMiwgMHgwOTBCLCAweDYyRDMsIDB4NjJEMywgMHgwRTg5LA0KKyAgICAweDYyRDQsIDB4NjJENCwgMHgwM0Q5LCAweDYyRDUsIDB4NjJENSwgMHgzMkUwLCAweDYyRDYsIDB4NjJENiwgMHgwRTgwLA0KKyAgICAweDYyRDcsIDB4NjJENywgMHgxNEMwLCAweDYyRDgsIDB4NjJEOCwgMHgwOEZGLCAweDYyRDksIDB4NjJEOSwgMHgxMjFCLA0KKyAgICAweDYyREEsIDB4NjJEQSwgMHgxNEJGLCAweDYyREIsIDB4NjJEQiwgMHgxMTcxLCAweDYyREMsIDB4NjJEQywgMHgwM0U4LA0KKyAgICAweDYyREQsIDB4NjJERSwgMHgzMkUxLCAweDYyREYsIDB4NjJERiwgMHgwQjQ1LCAweDYyRTAsIDB4NjJFMSwgMHgzMkUzLA0KKyAgICAweDYyRTIsIDB4NjJFMiwgMHgwQTRBLCAweDYyRTMsIDB4NjJFMywgMHgwODYzLCAweDYyRTQsIDB4NjJFNCwgMHgzMkU1LA0KKyAgICAweDYyRTUsIDB4NjJFNSwgMHgxMDlBLCAweDYyRTYsIDB4NjJFNiwgMHgwOUE0LCAweDYyRTcsIDB4NjJFNywgMHgwQjYyLA0KKyAgICAweDYyRTgsIDB4NjJFOCwgMHgwNDZELCAweDYyRTksIDB4NjJFOSwgMHgxMTM0LCAweDYyRUEsIDB4NjJFQiwgMHgzMkU2LA0KKyAgICAweDYyRUMsIDB4NjJFQywgMHgwOTkzLCAweDYyRUQsIDB4NjJFRCwgMHgwRDVBLCAweDYyRUUsIDB4NjJFRSwgMHgxNEMxLA0KKyAgICAweDYyRUYsIDB4NjJFRiwgMHgxMTlELCAweDYyRjAsIDB4NjJGMCwgMHgzMkU4LCAweDYyRjEsIDB4NjJGMSwgMHgwNzA5LA0KKyAgICAweDYyRjIsIDB4NjJGMiwgMHgzMkU5LCAweDYyRjMsIDB4NjJGMywgMHgwQzg4LCAweDYyRjQsIDB4NjJGNCwgMHgwRDlFLA0KKyAgICAweDYyRjUsIDB4NjJGNSwgMHgzMkVBLCAweDYyRjYsIDB4NjJGNiwgMHgxNEMzLCAweDYyRjcsIDB4NjJGNywgMHgwOTRBLA0KKyAgICAweDYyRjgsIDB4NjJGQiwgMHgzMkVCLCAweDYyRkMsIDB4NjJGQywgMHgwQkQzLCAweDYyRkQsIDB4NjJGRCwgMHgxMjA0LA0KKyAgICAweDYyRkUsIDB4NjJGRSwgMHgwRDQ3LCAweDYyRkYsIDB4NjJGRiwgMHgwQjI2LCAweDYzMDAsIDB4NjMwMCwgMHgzMkVGLA0KKyAgICAweDYzMDEsIDB4NjMwMSwgMHgwNEZCLCAweDYzMDIsIDB4NjMwMiwgMHgwNzJCLCAweDYzMDMsIDB4NjMwNiwgMHgzMkYwLA0KKyAgICAweDYzMDcsIDB4NjMwNywgMHgxMUI3LCAweDYzMDgsIDB4NjMwOCwgMHgxOTRFLCAweDYzMDksIDB4NjMwOSwgMHgwM0JGLA0KKyAgICAweDYzMEEsIDB4NjMwRCwgMHgzMkY0LCAweDYzMEUsIDB4NjMwRSwgMHgwOTczLCAweDYzMEYsIDB4NjMxMCwgMHgzMkY4LA0KKyAgICAweDYzMTEsIDB4NjMxMSwgMHgwRTQ3LCAweDYzMTIsIDB4NjMxNSwgMHgzMkZBLCAweDYzMTYsIDB4NjMxNiwgMHgwRThCLA0KKyAgICAweDYzMTcsIDB4NjMxOSwgMHgzMkZFLCAweDYzMUEsIDB4NjMxQSwgMHgxMUJFLCAweDYzMUIsIDB4NjMxQiwgMHgwQTc1LA0KKyAgICAweDYzMUMsIDB4NjMxQywgMHgzMzAxLCAweDYzMUQsIDB4NjMxRCwgMHgwRURELCAweDYzMUUsIDB4NjMxRSwgMHgwREY1LA0KKyAgICAweDYzMUYsIDB4NjMxRiwgMHgwRjc5LCAweDYzMjAsIDB4NjMyMCwgMHgwQjM2LCAweDYzMjEsIDB4NjMyMSwgMHgwNTkzLA0KKyAgICAweDYzMjIsIDB4NjMyMiwgMHgxNEMyLCAweDYzMjMsIDB4NjMyMywgMHgxMTk2LCAweDYzMjQsIDB4NjMyNCwgMHgwODJBLA0KKyAgICAweDYzMjUsIDB4NjMyNSwgMHgwN0U4LCAweDYzMjYsIDB4NjMyNywgMHgzMzAyLCAweDYzMjgsIDB4NjMyOCwgMHgwM0FGLA0KKyAgICAweDYzMjksIDB4NjMyOSwgMHgzMzA0LCAweDYzMkEsIDB4NjMyQSwgMHgwQjczLCAweDYzMkIsIDB4NjMyQiwgMHgwNTZGLA0KKyAgICAweDYzMkMsIDB4NjMyRSwgMHgzMzA1LCAweDYzMkYsIDB4NjMyRiwgMHgxMTkyLCAweDYzMzAsIDB4NjMzMSwgMHgzMzA4LA0KKyAgICAweDYzMzIsIDB4NjMzMiwgMHgxOTRGLCAweDYzMzMsIDB4NjMzOCwgMHgzMzBBLCAweDYzMzksIDB4NjMzOSwgMHgxNEM0LA0KKyAgICAweDYzM0EsIDB4NjMzQSwgMHgwRTU3LCAweDYzM0IsIDB4NjMzQywgMHgzMzEwLCAweDYzM0QsIDB4NjMzRCwgMHgwRTlELA0KKyAgICAweDYzM0UsIDB4NjMzRSwgMHgyMUQxLCAweDYzM0YsIDB4NjM0MSwgMHgzMzEyLCAweDYzNDIsIDB4NjM0MiwgMHgwRUY1LA0KKyAgICAweDYzNDMsIDB4NjM0MywgMHgxNEM2LCAweDYzNDQsIDB4NjM0NCwgMHgzMzE1LCAweDYzNDUsIDB4NjM0NSwgMHgwRTYyLA0KKyAgICAweDYzNDYsIDB4NjM0NiwgMHgwOTkxLCAweDYzNDcsIDB4NjM0OCwgMHgzMzE2LCAweDYzNDksIDB4NjM0OSwgMHgxMjFBLA0KKyAgICAweDYzNEEsIDB4NjM0QSwgMHgzMzE4LCAweDYzNEIsIDB4NjM0QiwgMHgxNEM1LCAweDYzNEMsIDB4NjM0QywgMHgwM0QxLA0KKyAgICAweDYzNEQsIDB4NjM0RCwgMHgwNzZCLCAweDYzNEUsIDB4NjM0RSwgMHgwRDBDLCAweDYzNEYsIDB4NjM0RiwgMHgwQjU2LA0KKyAgICAweDYzNTAsIDB4NjM1MCwgMHgwOTE3LCAweDYzNTEsIDB4NjM1NCwgMHgzMzE5LCAweDYzNTUsIDB4NjM1NSwgMHgwNDdELA0KKyAgICAweDYzNTYsIDB4NjM1RCwgMHgzMzFELCAweDYzNUUsIDB4NjM1RSwgMHgwOUI3LCAweDYzNUYsIDB4NjM1RiwgMHgwREU1LA0KKyAgICAweDYzNjAsIDB4NjM2MCwgMHgzMzI1LCAweDYzNjEsIDB4NjM2MSwgMHgwODY0LCAweDYzNjIsIDB4NjM2MiwgMHgwN0QwLA0KKyAgICAweDYzNjMsIDB4NjM2MywgMHgwNTk4LCAweDYzNjQsIDB4NjM2NiwgMHgzMzI2LCAweDYzNjcsIDB4NjM2NywgMHgwQkI2LA0KKyAgICAweDYzNjgsIDB4NjM2OCwgMHgyMTFDLCAweDYzNjksIDB4NjM2OSwgMHgxNEQwLCAweDYzNkEsIDB4NjM2QSwgMHgzMzI5LA0KKyAgICAweDYzNkIsIDB4NjM2QiwgMHgyMzVELCAweDYzNkMsIDB4NjM2QywgMHgzMzJBLCAweDYzNkQsIDB4NjM2RCwgMHgxNENELA0KKyAgICAweDYzNkUsIDB4NjM2RSwgMHgwOTBDLCAweDYzNkYsIDB4NjM3MCwgMHgzMzJCLCAweDYzNzEsIDB4NjM3MSwgMHgxNEM5LA0KKyAgICAweDYzNzIsIDB4NjM3MiwgMHgyNjgyLCAweDYzNzMsIDB4NjM3NSwgMHgzMzJELCAweDYzNzYsIDB4NjM3NiwgMHgwNTNBLA0KKyAgICAweDYzNzcsIDB4NjM3NywgMHgwOEFFLCAweDYzNzgsIDB4NjM3OSwgMHgzMzMwLCAweDYzN0EsIDB4NjM3QSwgMHgxNENBLA0KKyAgICAweDYzN0IsIDB4NjM3QiwgMHgwQjUwLCAweDYzN0MsIDB4NjM3RiwgMHgzMzMyLCAweDYzODAsIDB4NjM4MCwgMHgwRjMzLA0KKyAgICAweDYzODEsIDB4NjM4MSwgMHgzMzM2LCAweDYzODIsIDB4NjM4MiwgMHgwNUMxLCAweDYzODMsIDB4NjM4MywgMHgyMTBELA0KKyAgICAweDYzODQsIDB4NjM4NCwgMHgyMDVBLCAweDYzODUsIDB4NjM4NiwgMHgzMzM3LCAweDYzODcsIDB4NjM4NywgMHgwNjFELA0KKyAgICAweDYzODgsIDB4NjM4OCwgMHgwRDcxLCAweDYzODksIDB4NjM4OSwgMHgwNUQ1LCAweDYzOEEsIDB4NjM4QSwgMHgxNENGLA0KKyAgICAweDYzOEIsIDB4NjM4QiwgMHgzMzM5LCAweDYzOEMsIDB4NjM4QywgMHgxMTY3LCAweDYzOEQsIDB4NjM4RCwgMHgzMzNBLA0KKyAgICAweDYzOEUsIDB4NjM4RSwgMHgxNENCLCAweDYzOEYsIDB4NjM4RiwgMHgwRTIwLCAweDYzOTAsIDB4NjM5MCwgMHgwQzFELA0KKyAgICAweDYzOTEsIDB4NjM5MSwgMHgzMzNCLCAweDYzOTIsIDB4NjM5MiwgMHgwQjg2LCAweDYzOTMsIDB4NjM5NSwgMHgzMzNDLA0KKyAgICAweDYzOTYsIDB4NjM5NiwgMHgxMDNCLCAweDYzOTcsIDB4NjM5NywgMHgzMzNGLCAweDYzOTgsIDB4NjM5OCwgMHgwOTIxLA0KKyAgICAweDYzOTksIDB4NjM5RiwgMHgzMzQwLCAweDYzQTAsIDB4NjNBMCwgMHgwQTdBLCAweDYzQTEsIDB4NjNBMSwgMHgzMzQ3LA0KKyAgICAweDYzQTIsIDB4NjNBMiwgMHgwRTEwLCAweDYzQTMsIDB4NjNBMywgMHgwNERELCAweDYzQTQsIDB4NjNBNCwgMHgzMzQ4LA0KKyAgICAweDYzQTUsIDB4NjNBNSwgMHgwOEE0LCAweDYzQTYsIDB4NjNBNiwgMHgzMzQ5LCAweDYzQTcsIDB4NjNBNywgMHgwOTY1LA0KKyAgICAweDYzQTgsIDB4NjNBOCwgMHgwRTc3LCAweDYzQTksIDB4NjNBOSwgMHgxMDAzLCAweDYzQUEsIDB4NjNBQSwgMHgwNTZFLA0KKyAgICAweDYzQUIsIDB4NjNBQiwgMHgzMzRBLCAweDYzQUMsIDB4NjNBQywgMHgxNENFLCAweDYzQUQsIDB4NjNBRCwgMHgxNEM3LA0KKyAgICAweDYzQUUsIDB4NjNBRSwgMHgxNEQxLCAweDYzQUYsIDB4NjNBRiwgMHgzMzRCLCAweDYzQjAsIDB4NjNCMCwgMHgxOTUwLA0KKyAgICAweDYzQjEsIDB4NjNCMiwgMHgzMzRDLCAweDYzQjMsIDB4NjNCMywgMHgwQTU3LCAweDYzQjQsIDB4NjNCNCwgMHgxNENDLA0KKyAgICAweDYzQjUsIDB4NjNCNiwgMHgzMzRFLCAweDYzQjcsIDB4NjNCNywgMHgxMUJGLCAweDYzQjgsIDB4NjNCOCwgMHgwNTg4LA0KKyAgICAweDYzQjksIDB4NjNCOSwgMHgzMzUwLCAweDYzQkEsIDB4NjNCQSwgMHgwNEJCLCAweDYzQkIsIDB4NjNCQiwgMHgzMzUxLA0KKyAgICAweDYzQkMsIDB4NjNCQywgMHgxNEQyLCAweDYzQkQsIDB4NjNCRCwgMHgzMzUyLCAweDYzQkUsIDB4NjNCRSwgMHgxNERDLA0KKyAgICAweDYzQkYsIDB4NjNCRiwgMHgzMzUzLCAweDYzQzAsIDB4NjNDMCwgMHgxRjhELCAweDYzQzEsIDB4NjNDMywgMHgzMzU0LA0KKyAgICAweDYzQzQsIDB4NjNDNCwgMHgxNEQ3LCAweDYzQzUsIDB4NjNDNSwgMHgzMzU3LCAweDYzQzYsIDB4NjNDNiwgMHgxNERCLA0KKyAgICAweDYzQzcsIDB4NjNDOCwgMHgzMzU4LCAweDYzQzksIDB4NjNDOSwgMHgwQ0JCLCAweDYzQ0EsIDB4NjNDQywgMHgzMzVBLA0KKyAgICAweDYzQ0QsIDB4NjNDRCwgMHgxMjNFLCAweDYzQ0UsIDB4NjNDRSwgMHgxNEQ5LCAweDYzQ0YsIDB4NjNDRiwgMHgwQUVELA0KKyAgICAweDYzRDAsIDB4NjNEMCwgMHgwRTM0LCAweDYzRDEsIDB4NjNEMSwgMHgzMzVELCAweDYzRDIsIDB4NjNEMiwgMHgwNEFDLA0KKyAgICAweDYzRDMsIDB4NjNENSwgMHgzMzVFLCAweDYzRDYsIDB4NjNENiwgMHgxMDQ1LCAweDYzRDcsIDB4NjNEOSwgMHgzMzYxLA0KKyAgICAweDYzREEsIDB4NjNEQSwgMHgyMUZGLCAweDYzREIsIDB4NjNERCwgMHgzMzY0LCAweDYzREUsIDB4NjNERSwgMHgxNEQ4LA0KKyAgICAweDYzREYsIDB4NjNERiwgMHgzMzY3LCAweDYzRTAsIDB4NjNFMCwgMHgxNEQ1LCAweDYzRTEsIDB4NjNFMSwgMHgwRUU0LA0KKyAgICAweDYzRTIsIDB4NjNFMiwgMHgzMzY4LCAweDYzRTMsIDB4NjNFMywgMHgwNTJBLCAweDYzRTQsIDB4NjNFOCwgMHgzMzY5LA0KKyAgICAweDYzRTksIDB4NjNFOSwgMHgwOTM4LCAweDYzRUEsIDB4NjNFQSwgMHgwOEVELCAweDYzRUIsIDB4NjNFQywgMHgzMzZFLA0KKyAgICAweDYzRUQsIDB4NjNFRCwgMHgwOEEzLCAweDYzRUUsIDB4NjNFRSwgMHgxRjU4LCAweDYzRUYsIDB4NjNGMSwgMHgzMzcwLA0KKyAgICAweDYzRjIsIDB4NjNGMiwgMHgxNEQzLCAweDYzRjMsIDB4NjNGMywgMHgzMzczLCAweDYzRjQsIDB4NjNGNCwgMHgxMEYxLA0KKyAgICAweDYzRjUsIDB4NjNGNSwgMHgzMzc0LCAweDYzRjYsIDB4NjNGNiwgMHgxNEM4LCAweDYzRjcsIDB4NjNGNywgMHgzMzc1LA0KKyAgICAweDYzRjgsIDB4NjNGOCwgMHgxNEQ0LCAweDYzRjksIDB4NjNGQywgMHgzMzc2LCAweDYzRkQsIDB4NjNGRCwgMHgwOUFBLA0KKyAgICAweDYzRkUsIDB4NjNGRSwgMHgzMzdBLCAweDYzRkYsIDB4NjNGRiwgMHgxNEQ2LCAweDY0MDAsIDB4NjQwMCwgMHgwNEJBLA0KKyAgICAweDY0MDEsIDB4NjQwMSwgMHgwNkU0LCAweDY0MDIsIDB4NjQwMiwgMHgwQTRFLCAweDY0MDMsIDB4NjQwNCwgMHgzMzdCLA0KKyAgICAweDY0MDUsIDB4NjQwNSwgMHgwODkyLCAweDY0MDYsIDB4NjQwQSwgMHgzMzdELCAweDY0MEIsIDB4NjQwQiwgMHgxNERGLA0KKyAgICAweDY0MEMsIDB4NjQwQywgMHgxNEUyLCAweDY0MEQsIDB4NjQwRCwgMHgyMTVCLCAweDY0MEUsIDB4NjQwRSwgMHgzMzgyLA0KKyAgICAweDY0MEYsIDB4NjQwRiwgMHgwNDcyLCAweDY0MTAsIDB4NjQxMCwgMHgwNTI3LCAweDY0MTEsIDB4NjQxMiwgMHgzMzgzLA0KKyAgICAweDY0MTMsIDB4NjQxMywgMHgwNTZELCAweDY0MTQsIDB4NjQxNCwgMHgwQ0RGLCAweDY0MTUsIDB4NjQxNiwgMHgzMzg1LA0KKyAgICAweDY0MTcsIDB4NjQxNywgMHgxRUI2LCAweDY0MTgsIDB4NjQxQSwgMHgzMzg3LCAweDY0MUIsIDB4NjQxQiwgMHgxNEUwLA0KKyAgICAweDY0MUMsIDB4NjQxQywgMHgwREM2LCAweDY0MUQsIDB4NjQxRCwgMHgzMzhBLCAweDY0MUUsIDB4NjQxRSwgMHgwNkRFLA0KKyAgICAweDY0MUYsIDB4NjQxRiwgMHgzMzhCLCAweDY0MjAsIDB4NjQyMCwgMHgxNEUxLCAweDY0MjEsIDB4NjQyMSwgMHgxNEU0LA0KKyAgICAweDY0MjIsIDB4NjQyNSwgMHgzMzhDLCAweDY0MjYsIDB4NjQyNiwgMHgxNEUzLCAweDY0MjcsIDB4NjQyOSwgMHgzMzkwLA0KKyAgICAweDY0MkEsIDB4NjQyQSwgMHgwRTE1LCAweDY0MkIsIDB4NjQyQiwgMHgzMzkzLCAweDY0MkMsIDB4NjQyQywgMHgwM0VDLA0KKyAgICAweDY0MkQsIDB4NjQyRCwgMHgwNTcxLCAweDY0MkUsIDB4NjQzMywgMHgzMzk0LCAweDY0MzQsIDB4NjQzNCwgMHgxNzM2LA0KKyAgICAweDY0MzUsIDB4NjQzNSwgMHgzMzlBLCAweDY0MzYsIDB4NjQzNiwgMHgyMERCLCAweDY0MzcsIDB4NjQzOSwgMHgzMzlCLA0KKyAgICAweDY0M0EsIDB4NjQzQSwgMHgwRjdBLCAweDY0M0IsIDB4NjQzQywgMHgzMzlFLCAweDY0M0QsIDB4NjQzRCwgMHgwNEIyLA0KKyAgICAweDY0M0UsIDB4NjQzRSwgMHgzM0EwLCAweDY0M0YsIDB4NjQzRiwgMHgxOTUxLCAweDY0NDAsIDB4NjQ0MCwgMHgzM0ExLA0KKyAgICAweDY0NDEsIDB4NjQ0MSwgMHgxNERFLCAweDY0NDIsIDB4NjQ0MywgMHgzM0EyLCAweDY0NDQsIDB4NjQ0NCwgMHgwRDFDLA0KKyAgICAweDY0NDUsIDB4NjQ0NSwgMHgxNERELCAweDY0NDYsIDB4NjQ0NiwgMHgwM0U1LCAweDY0NDcsIDB4NjQ0NywgMHgxMDI4LA0KKyAgICAweDY0NDgsIDB4NjQ0OCwgMHgwNDYwLCAweDY0NDksIDB4NjQ0OSwgMHgzM0E0LCAweDY0NEEsIDB4NjQ0QSwgMHgwRTAyLA0KKyAgICAweDY0NEIsIDB4NjQ1MCwgMHgzM0E1LCAweDY0NTEsIDB4NjQ1MSwgMHgyMzYwLCAweDY0NTIsIDB4NjQ1MiwgMHgxNERBLA0KKyAgICAweDY0NTMsIDB4NjQ1MywgMHgzM0FCLCAweDY0NTQsIDB4NjQ1NCwgMHgwRDk5LCAweDY0NTUsIDB4NjQ1NywgMHgzM0FDLA0KKyAgICAweDY0NTgsIDB4NjQ1OCwgMHgxMTRCLCAweDY0NTksIDB4NjQ1QiwgMHgzM0FGLCAweDY0NUMsIDB4NjQ1QywgMHgyMzYxLA0KKyAgICAweDY0NUQsIDB4NjQ1RCwgMHgzM0IyLCAweDY0NUUsIDB4NjQ1RSwgMHgxNEU1LCAweDY0NUYsIDB4NjQ1RiwgMHgyMDQwLA0KKyAgICAweDY0NjAsIDB4NjQ2NiwgMHgzM0IzLCAweDY0NjcsIDB4NjQ2NywgMHgwNTYwLCAweDY0NjgsIDB4NjQ2OCwgMHgzM0JBLA0KKyAgICAweDY0NjksIDB4NjQ2OSwgMHgwQjA5LCAweDY0NkEsIDB4NjQ2QywgMHgzM0JCLCAweDY0NkQsIDB4NjQ2RCwgMHgxNEU3LA0KKyAgICAweDY0NkUsIDB4NjQ2RSwgMHgzM0JFLCAweDY0NkYsIDB4NjQ2RiwgMHgyMjhFLCAweDY0NzAsIDB4NjQ3MiwgMHgzM0JGLA0KKyAgICAweDY0NzMsIDB4NjQ3MywgMHgxRkRGLCAweDY0NzQsIDB4NjQ3NSwgMHgzM0MyLCAweDY0NzYsIDB4NjQ3NiwgMHgyMzVFLA0KKyAgICAweDY0NzcsIDB4NjQ3NywgMHgzM0M0LCAweDY0NzgsIDB4NjQ3OSwgMHgwQjAzLCAweDY0N0EsIDB4NjQ3QSwgMHgxNEU5LA0KKyAgICAweDY0N0IsIDB4NjQ3QiwgMHgxRTZBLCAweDY0N0MsIDB4NjQ4MSwgMHgzM0M1LCAweDY0ODIsIDB4NjQ4MiwgMHgwQTE1LA0KKyAgICAweDY0ODMsIDB4NjQ4MywgMHgzM0NCLCAweDY0ODQsIDB4NjQ4NCwgMHgxNEU2LCAweDY0ODUsIDB4NjQ4NSwgMHgwOTFFLA0KKyAgICAweDY0ODYsIDB4NjQ4NiwgMHgzM0NDLCAweDY0ODcsIDB4NjQ4NywgMHgwQkQxLCAweDY0ODgsIDB4NjQ4OCwgMHgyMDAyLA0KKyAgICAweDY0ODksIDB4NjQ5MCwgMHgzM0NELCAweDY0OTEsIDB4NjQ5MSwgMHgwNEVBLCAweDY0OTIsIDB4NjQ5MiwgMHgwQ0QxLA0KKyAgICAweDY0OTMsIDB4NjQ5MywgMHgyMDkzLCAweDY0OTQsIDB4NjQ5NCwgMHgzM0Q1LCAweDY0OTUsIDB4NjQ5NSwgMHgwREFGLA0KKyAgICAweDY0OTYsIDB4NjQ5NiwgMHgxNEU4LCAweDY0OTcsIDB4NjQ5OCwgMHgzM0Q2LCAweDY0OTksIDB4NjQ5OSwgMHgxNEVDLA0KKyAgICAweDY0OUEsIDB4NjQ5RCwgMHgzM0Q4LCAweDY0OUUsIDB4NjQ5RSwgMHgxMjBGLCAweDY0OUYsIDB4NjQ5RiwgMHgyMzVGLA0KKyAgICAweDY0QTAsIDB4NjRBMiwgMHgzM0RDLCAweDY0QTMsIDB4NjRBMywgMHgxRUFDLCAweDY0QTQsIDB4NjRBNCwgMHgwNERDLA0KKyAgICAweDY0QTUsIDB4NjRBNSwgMHgxRTU0LCAweDY0QTYsIDB4NjRBOCwgMHgzM0RGLCAweDY0QTksIDB4NjRBOSwgMHgwQTBDLA0KKyAgICAweDY0QUEsIDB4NjRBQSwgMHgzM0UyLCAweDY0QUIsIDB4NjRBQiwgMHgxRjA4LCAweDY0QUMsIDB4NjRBQywgMHgwQzQ4LA0KKyAgICAweDY0QUQsIDB4NjRBRCwgMHgwNDZDLCAweDY0QUUsIDB4NjRBRSwgMHgwNTZDLCAweDY0QUYsIDB4NjRBRiwgMHgzM0UzLA0KKyAgICAweDY0QjAsIDB4NjRCMCwgMHgxMjA4LCAweDY0QjEsIDB4NjRCMSwgMHgzM0U0LCAweDY0QjIsIDB4NjRCMiwgMHgyMEMwLA0KKyAgICAweDY0QjMsIDB4NjRCMywgMHgyMzYyLCAweDY0QjQsIDB4NjRCNCwgMHgzM0U1LCAweDY0QjUsIDB4NjRCNSwgMHgwQjRGLA0KKyAgICAweDY0QjYsIDB4NjRCNiwgMHgzM0U2LCAweDY0QjcsIDB4NjRCOCwgMHgxNEVBLCAweDY0QjksIDB4NjRCOSwgMHgzM0U3LA0KKyAgICAweDY0QkEsIDB4NjRCQSwgMHgxNEVELCAweDY0QkIsIDB4NjRCQiwgMHgyMTYwLCAweDY0QkMsIDB4NjRCQywgMHgwNzZBLA0KKyAgICAweDY0QkQsIDB4NjRCRCwgMHgzM0U4LCAweDY0QkUsIDB4NjRCRSwgMHgyMTlELCAweDY0QkYsIDB4NjRCRiwgMHgxRjhFLA0KKyAgICAweDY0QzAsIDB4NjRDMCwgMHgxNEVFLCAweDY0QzEsIDB4NjRDMSwgMHgyMjJELCAweDY0QzIsIDB4NjRDMiwgMHgwOUM5LA0KKyAgICAweDY0QzMsIDB4NjRDMywgMHgzM0U5LCAweDY0QzQsIDB4NjRDNCwgMHgyMDQ3LCAweDY0QzUsIDB4NjRDNSwgMHgwQ0ZDLA0KKyAgICAweDY0QzYsIDB4NjRDNiwgMHgzM0VBLCAweDY0QzcsIDB4NjRDNywgMHgyMjYyLCAweDY0QzgsIDB4NjRDOSwgMHgzM0VCLA0KKyAgICAweDY0Q0EsIDB4NjRDQSwgMHgxRjY3LCAweDY0Q0IsIDB4NjRDQiwgMHgxRUIyLCAweDY0Q0MsIDB4NjRDQywgMHgzM0VELA0KKyAgICAweDY0Q0QsIDB4NjRDRCwgMHgwNEEwLCAweDY0Q0UsIDB4NjRDRSwgMHgwQzYzLCAweDY0Q0YsIDB4NjRDRiwgMHgzM0VFLA0KKyAgICAweDY0RDAsIDB4NjREMCwgMHgxNEVGLCAweDY0RDEsIDB4NjREMSwgMHgzM0VGLCAweDY0RDIsIDB4NjREMiwgMHgwQzU5LA0KKyAgICAweDY0RDMsIDB4NjREMywgMHgzM0YwLCAweDY0RDQsIDB4NjRENCwgMHgxRUE5LCAweDY0RDUsIDB4NjRENiwgMHgzM0YxLA0KKyAgICAweDY0RDcsIDB4NjRENywgMHgxNEYwLCAweDY0RDgsIDB4NjREOCwgMHgxOTUyLCAweDY0RDksIDB4NjREOSwgMHgzM0YzLA0KKyAgICAweDY0REEsIDB4NjREQSwgMHgxRkNDLCAweDY0REIsIDB4NjRERCwgMHgzM0Y0LCAweDY0REUsIDB4NjRERSwgMHgwREM4LA0KKyAgICAweDY0REYsIDB4NjRERiwgMHgzM0Y3LCAweDY0RTAsIDB4NjRFMCwgMHgxRjcyLCAweDY0RTEsIDB4NjRFMSwgMHgzM0Y4LA0KKyAgICAweDY0RTIsIDB4NjRFMiwgMHgxNEYyLCAweDY0RTMsIDB4NjRFMywgMHgzM0Y5LCAweDY0RTQsIDB4NjRFNCwgMHgxNEYxLA0KKyAgICAweDY0RTUsIDB4NjRFNSwgMHgzM0ZBLCAweDY0RTYsIDB4NjRFNiwgMHgwNDg4LCAweDY0RTcsIDB4NjRFQiwgMHgzM0ZCLA0KKyAgICAweDY0RUMsIDB4NjRFQywgMHgyMDk4LCAweDY0RUQsIDB4NjRFRSwgMHgzNDAwLCAweDY0RUYsIDB4NjRFRiwgMHgxRTUyLA0KKyAgICAweDY0RjAsIDB4NjRGMCwgMHgyMEE0LCAweDY0RjEsIDB4NjRGMSwgMHgxRjFDLCAweDY0RjIsIDB4NjRGMiwgMHgyMjhGLA0KKyAgICAweDY0RjMsIDB4NjRGMywgMHgzNDAyLCAweDY0RjQsIDB4NjRGNCwgMHgxRkVELCAweDY0RjUsIDB4NjRGNiwgMHgzNDAzLA0KKyAgICAweDY0RjcsIDB4NjRGNywgMHgyMzY1LCAweDY0RjgsIDB4NjRGOSwgMHgzNDA1LCAweDY0RkEsIDB4NjRGQSwgMHgxRTJELA0KKyAgICAweDY0RkIsIDB4NjRGQiwgMHgyMTUyLCAweDY0RkMsIDB4NjRGQywgMHgyMzY2LCAweDY0RkQsIDB4NjRGRCwgMHgzNDA3LA0KKyAgICAweDY0RkUsIDB4NjRGRSwgMHgyMEZBLCAweDY0RkYsIDB4NjRGRiwgMHgzNDA4LCAweDY1MDAsIDB4NjUwMCwgMHgwQjhCLA0KKyAgICAweDY1MDEsIDB4NjUwMywgMHgzNDA5LCAweDY1MDQsIDB4NjUwNCwgMHgyMzYzLCAweDY1MDUsIDB4NjUwNSwgMHgzNDBDLA0KKyAgICAweDY1MDYsIDB4NjUwNiwgMHgyMDlBLCAweDY1MDcsIDB4NjUwOCwgMHgzNDBELCAweDY1MDksIDB4NjUwOSwgMHgxNEYzLA0KKyAgICAweDY1MEEsIDB4NjUwRSwgMHgzNDBGLCAweDY1MEYsIDB4NjUwRiwgMHgyMDNDLCAweDY1MTAsIDB4NjUxMSwgMHgzNDE0LA0KKyAgICAweDY1MTIsIDB4NjUxMiwgMHgxMTFGLCAweDY1MTMsIDB4NjUxMywgMHgzNDE2LCAweDY1MTQsIDB4NjUxNCwgMHgxRkY2LA0KKyAgICAweDY1MTUsIDB4NjUxNSwgMHgzNDE3LCAweDY1MTYsIDB4NjUxNiwgMHgyMzY0LCAweDY1MTcsIDB4NjUxNywgMHgzNDE4LA0KKyAgICAweDY1MTgsIDB4NjUxOCwgMHgwQzlDLCAweDY1MTksIDB4NjUxOSwgMHgxRTY5LCAweDY1MUEsIDB4NjUxQSwgMHgzNDE5LA0KKyAgICAweDY1MUIsIDB4NjUxQiwgMHgyMzY3LCAweDY1MUMsIDB4NjUxQywgMHgzNDFBLCAweDY1MUQsIDB4NjUxRCwgMHgyMTFELA0KKyAgICAweDY1MUUsIDB4NjUyMSwgMHgzNDFCLCAweDY1MjIsIDB4NjUyMiwgMHgyMjU5LCAweDY1MjMsIDB4NjUyMywgMHgyMDU2LA0KKyAgICAweDY1MjQsIDB4NjUyNCwgMHgyMTYzLCAweDY1MjUsIDB4NjUyNSwgMHgxNEY0LCAweDY1MjYsIDB4NjUyOSwgMHgzNDFGLA0KKyAgICAweDY1MkEsIDB4NjUyQSwgMHgxRkE5LCAweDY1MkIsIDB4NjUyQiwgMHgwOTFGLCAweDY1MkMsIDB4NjUyQywgMHgxRkZDLA0KKyAgICAweDY1MkQsIDB4NjUyRCwgMHgzNDIzLCAweDY1MkUsIDB4NjUyRSwgMHgxNEY1LCAweDY1MkYsIDB4NjUyRiwgMHgxMUE2LA0KKyAgICAweDY1MzAsIDB4NjUzMywgMHgzNDI0LCAweDY1MzQsIDB4NjUzNCwgMHgxOTA5LCAweDY1MzUsIDB4NjUzNSwgMHgxOTY2LA0KKyAgICAweDY1MzYsIDB4NjUzNiwgMHgwRDZDLCAweDY1MzcsIDB4NjUzNywgMHgzNDI4LCAweDY1MzgsIDB4NjUzOCwgMHgxMkIyLA0KKyAgICAweDY1MzksIDB4NjUzOSwgMHgwNkJGLCAweDY1M0EsIDB4NjUzQSwgMHgzNDI5LCAweDY1M0IsIDB4NjUzQiwgMHgwNkZFLA0KKyAgICAweDY1M0MsIDB4NjUzRCwgMHgzNDJBLCAweDY1M0UsIDB4NjUzRSwgMHgwNjYyLCAweDY1M0YsIDB4NjUzRiwgMHgxMTlGLA0KKyAgICAweDY1NDAsIDB4NjU0NCwgMHgzNDJDLCAweDY1NDUsIDB4NjU0NSwgMHgwNzIzLCAweDY1NDYsIDB4NjU0NywgMHgzNDMxLA0KKyAgICAweDY1NDgsIDB4NjU0OCwgMHgwRjcyLCAweDY1NDksIDB4NjU0OSwgMHgxQ0NCLCAweDY1NEEsIDB4NjU0QiwgMHgzNDMzLA0KKyAgICAweDY1NEMsIDB4NjU0QywgMHgwNUIxLCAweDY1NEQsIDB4NjU0RSwgMHgzNDM1LCAweDY1NEYsIDB4NjU0RiwgMHgwQUY5LA0KKyAgICAweDY1NTAsIDB4NjU1MCwgMHgzNDM3LCAweDY1NTEsIDB4NjU1MSwgMHgwOEY3LCAweDY1NTIsIDB4NjU1NCwgMHgzNDM4LA0KKyAgICAweDY1NTUsIDB4NjU1NSwgMHgxOTY3LCAweDY1NTYsIDB4NjU1NiwgMHgwM0M4LCAweDY1NTcsIDB4NjU1NywgMHgxRTJFLA0KKyAgICAweDY1NTgsIDB4NjU1OCwgMHgzNDNCLCAweDY1NTksIDB4NjU1OSwgMHgwODlELCAweDY1NUEsIDB4NjU1QSwgMHgzNDNDLA0KKyAgICAweDY1NUIsIDB4NjU1QiwgMHgwOUZCLCAweDY1NUMsIDB4NjU1QywgMHgzNDNELCAweDY1NUQsIDB4NjU1RCwgMHgwNDNGLA0KKyAgICAweDY1NUUsIDB4NjU1RSwgMHgwNENELCAweDY1NUYsIDB4NjU2MSwgMHgzNDNFLCAweDY1NjIsIDB4NjU2MiwgMHgwNkNELA0KKyAgICAweDY1NjMsIDB4NjU2MywgMHgwQ0RCLCAweDY1NjQsIDB4NjU2NSwgMHgzNDQxLCAweDY1NjYsIDB4NjU2NiwgMHgwNjE3LA0KKyAgICAweDY1NjcsIDB4NjU2QSwgMHgzNDQzLCAweDY1NkIsIDB4NjU2QiwgMHgxOTY4LCAweDY1NkMsIDB4NjU2QywgMHgwOEUzLA0KKyAgICAweDY1NkQsIDB4NjU2RiwgMHgzNDQ3LCAweDY1NzAsIDB4NjU3MCwgMHgwRDk0LCAweDY1NzEsIDB4NjU3MSwgMHgzNDRBLA0KKyAgICAweDY1NzIsIDB4NjU3MiwgMHgwQzQwLCAweDY1NzMsIDB4NjU3MywgMHgzNDRCLCAweDY1NzQsIDB4NjU3NCwgMHgxMTlDLA0KKyAgICAweDY1NzUsIDB4NjU3NSwgMHgxRUJDLCAweDY1NzYsIDB4NjU3NiwgMHgzNDRDLCAweDY1NzcsIDB4NjU3NywgMHgwNjkwLA0KKyAgICAweDY1NzgsIDB4NjU3OCwgMHgyMTQyLCAweDY1NzksIDB4NjU4MSwgMHgzNDRELCAweDY1ODIsIDB4NjU4MiwgMHgyMDFFLA0KKyAgICAweDY1ODMsIDB4NjU4MywgMHgxRTQzLCAweDY1ODQsIDB4NjU4NiwgMHgzNDU2LCAweDY1ODcsIDB4NjU4NywgMHgwRUQzLA0KKyAgICAweDY1ODgsIDB4NjU4QSwgMHgzNDU5LCAweDY1OEIsIDB4NjU4QiwgMHgxMTRDLCAweDY1OEMsIDB4NjU4QywgMHgwNDVDLA0KKyAgICAweDY1OEQsIDB4NjU4RiwgMHgzNDVDLCAweDY1OTAsIDB4NjU5MCwgMHgxOUMxLCAweDY1OTEsIDB4NjU5MSwgMHgwM0VBLA0KKyAgICAweDY1OTIsIDB4NjU5MiwgMHgzNDVGLCAweDY1OTMsIDB4NjU5MywgMHgxOUMzLCAweDY1OTQsIDB4NjU5NCwgMHgzNDYwLA0KKyAgICAweDY1OTUsIDB4NjU5NSwgMHgyNEQ0LCAweDY1OTYsIDB4NjU5NiwgMHgzNDYxLCAweDY1OTcsIDB4NjU5NywgMHgwNUY2LA0KKyAgICAweDY1OTgsIDB4NjU5OCwgMHgzNDYyLCAweDY1OTksIDB4NjU5OSwgMHgwQTE4LCAweDY1OUEsIDB4NjU5QSwgMHgzNDYzLA0KKyAgICAweDY1OUIsIDB4NjU5QiwgMHgxRDU2LCAweDY1OUMsIDB4NjU5QywgMHgwRjdDLCAweDY1OUQsIDB4NjU5RSwgMHgzNDY0LA0KKyAgICAweDY1OUYsIDB4NjU5RiwgMHgxMTg2LCAweDY1QTAsIDB4NjVBMCwgMHgzNDY2LCAweDY1QTEsIDB4NjVBMSwgMHgwRUUyLA0KKyAgICAweDY1QTIsIDB4NjVBMywgMHgzNDY3LCAweDY1QTQsIDB4NjVBNCwgMHgwOEMwLCAweDY1QTUsIDB4NjVBNSwgMHgwNTA3LA0KKyAgICAweDY1QTYsIDB4NjVBNiwgMHgzNDY5LCAweDY1QTcsIDB4NjVBNywgMHgwNkE2LCAweDY1QTgsIDB4NjVBOCwgMHgzNDZBLA0KKyAgICAweDY1QTksIDB4NjVBOSwgMHgxMTU3LCAweDY1QUEsIDB4NjVBQSwgMHgzNDZCLCAweDY1QUIsIDB4NjVBQiwgMHgxQTI5LA0KKyAgICAweDY1QUMsIDB4NjVBQywgMHgyMjZGLCAweDY1QUQsIDB4NjVBRCwgMHgwNjBFLCAweDY1QUUsIDB4NjVBRSwgMHgzNDZDLA0KKyAgICAweDY1QUYsIDB4NjVBRiwgMHgwREFFLCAweDY1QjAsIDB4NjVCMCwgMHgwRjhELCAweDY1QjEsIDB4NjVCNiwgMHgzNDZELA0KKyAgICAweDY1QjcsIDB4NjVCNywgMHgxRUQ3LCAweDY1QjgsIDB4NjVCOCwgMHgzNDczLCAweDY1QjksIDB4NjVCOSwgMHgwNjVBLA0KKyAgICAweDY1QkEsIDB4NjVCQiwgMHgzNDc0LCAweDY1QkMsIDB4NjVCQywgMHgxOUM0LCAweDY1QkQsIDB4NjVCRCwgMHgwRDQwLA0KKyAgICAweDY1QkUsIDB4NjVDMCwgMHgzNDc2LCAweDY1QzEsIDB4NjVDMSwgMHgwQjk1LCAweDY1QzIsIDB4NjVDMiwgMHgzNDc5LA0KKyAgICAweDY1QzMsIDB4NjVDMywgMHgxOUM3LCAweDY1QzQsIDB4NjVDNCwgMHgxOUM2LCAweDY1QzUsIDB4NjVDNSwgMHgwQTZBLA0KKyAgICAweDY1QzYsIDB4NjVDNiwgMHgxOUM1LCAweDY1QzcsIDB4NjVDQSwgMHgzNDdBLCAweDY1Q0IsIDB4NjVDQiwgMHgwRkM4LA0KKyAgICAweDY1Q0MsIDB4NjVDQywgMHgxOUM4LCAweDY1Q0QsIDB4NjVDRCwgMHgzNDdFLCAweDY1Q0UsIDB4NjVDRSwgMHgxOUM5LA0KKyAgICAweDY1Q0YsIDB4NjVDRiwgMHgxMjQyLCAweDY1RDAsIDB4NjVEMSwgMHgzNDdGLCAweDY1RDIsIDB4NjVEMiwgMHgxOUNBLA0KKyAgICAweDY1RDMsIDB4NjVENSwgMHgzNDgxLCAweDY1RDYsIDB4NjVENiwgMHgxOUNCLCAweDY1RDcsIDB4NjVENywgMHgwQzBCLA0KKyAgICAweDY1RDgsIDB4NjVERiwgMHgzNDg0LCAweDY1RTAsIDB4NjVFMCwgMHgwRUVELCAweDY1RTEsIDB4NjVFMSwgMHgzNDhDLA0KKyAgICAweDY1RTIsIDB4NjVFMiwgMHgwODNCLCAweDY1RTMsIDB4NjVFNCwgMHgzNDhELCAweDY1RTUsIDB4NjVFNSwgMHgwQ0IwLA0KKyAgICAweDY1RTYsIDB4NjVFNiwgMHgwNThBLCAweDY1RTcsIDB4NjVFNywgMHgwOEY4LCAweDY1RTgsIDB4NjVFOCwgMHgxMUJCLA0KKyAgICAweDY1RTksIDB4NjVFOSwgMHgxMTJBLCAweDY1RUEsIDB4NjVFQiwgMHgzNDhGLCAweDY1RUMsIDB4NjVFQywgMHgwRkQ3LA0KKyAgICAweDY1RUQsIDB4NjVFRCwgMHgwRkJDLCAweDY1RUUsIDB4NjVGMCwgMHgxOTBBLCAweDY1RjEsIDB4NjVGMSwgMHgwNzZDLA0KKyAgICAweDY1RjIsIDB4NjVGNSwgMHgzNDkxLCAweDY1RjYsIDB4NjVGNiwgMHgwRDQ4LCAweDY1RjcsIDB4NjVGNywgMHgwOTgyLA0KKyAgICAweDY1RjgsIDB4NjVGOSwgMHgzNDk1LCAweDY1RkEsIDB4NjVGQSwgMHgwRUFCLCAweDY1RkIsIDB4NjVGRiwgMHgzNDk3LA0KKyAgICAweDY2MDAsIDB4NjYwMCwgMHgxOTEyLCAweDY2MDEsIDB4NjYwMSwgMHgzNDlDLCAweDY2MDIsIDB4NjYwMiwgMHgwM0M1LA0KKyAgICAweDY2MDMsIDB4NjYwMywgMHgxOTEwLCAweDY2MDQsIDB4NjYwNSwgMHgzNDlELCAweDY2MDYsIDB4NjYwNiwgMHgwOTkwLA0KKyAgICAweDY2MDcsIDB4NjYwOSwgMHgzNDlGLCAweDY2MEEsIDB4NjYwQSwgMHgxOTBELCAweDY2MEIsIDB4NjYwQiwgMHgzNEEyLA0KKyAgICAweDY2MEMsIDB4NjYwQywgMHgwNEM0LCAweDY2MEQsIDB4NjYwRCwgMHgzNEEzLCAweDY2MEUsIDB4NjYwRSwgMHgwQUZDLA0KKyAgICAweDY2MEYsIDB4NjYwRiwgMHgwN0ZELCAweDY2MTAsIDB4NjYxMiwgMHgzNEE0LCAweDY2MTMsIDB4NjYxMywgMHgxMDVFLA0KKyAgICAweDY2MTQsIDB4NjYxNCwgMHgwRjAzLCAweDY2MTUsIDB4NjYxNSwgMHgxOTExLCAweDY2MTYsIDB4NjYxOCwgMHgzNEE3LA0KKyAgICAweDY2MTksIDB4NjYxOSwgMHgxOTBFLCAweDY2MUEsIDB4NjYxQywgMHgzNEFBLCAweDY2MUQsIDB4NjYxRCwgMHgxOTE1LA0KKyAgICAweDY2MUUsIDB4NjYxRSwgMHgzNEFELCAweDY2MUYsIDB4NjYxRiwgMHgwRjkyLCAweDY2MjAsIDB4NjYyMCwgMHgxMDk4LA0KKyAgICAweDY2MjEsIDB4NjYyNCwgMHgzNEFFLCAweDY2MjUsIDB4NjYyNSwgMHgwNTNELCAweDY2MjYsIDB4NjYyNiwgMHgzNEIyLA0KKyAgICAweDY2MjcsIDB4NjYyNywgMHgwQUM2LCAweDY2MjgsIDB4NjYyOCwgMHgxMjRGLCAweDY2MjksIDB4NjYyQywgMHgzNEIzLA0KKyAgICAweDY2MkQsIDB4NjYyRCwgMHgxMTcyLCAweDY2MkUsIDB4NjYyRSwgMHgzNEI3LCAweDY2MkYsIDB4NjYyRiwgMHgwRDVFLA0KKyAgICAweDY2MzAsIDB4NjYzMCwgMHgzNEI4LCAweDY2MzEsIDB4NjYzMSwgMHgxOTE3LCAweDY2MzIsIDB4NjYzMywgMHgzNEI5LA0KKyAgICAweDY2MzQsIDB4NjYzNCwgMHgxOTE2LCAweDY2MzUsIDB4NjYzNSwgMHgxOTE5LCAweDY2MzYsIDB4NjYzNiwgMHgxOTE4LA0KKyAgICAweDY2MzcsIDB4NjYzQiwgMHgzNEJCLCAweDY2M0MsIDB4NjYzQywgMHgxMUU2LCAweDY2M0QsIDB4NjYzRCwgMHgzNEMwLA0KKyAgICAweDY2M0UsIDB4NjYzRSwgMHgwRjQxLCAweDY2M0YsIDB4NjY0MCwgMHgzNEMxLCAweDY2NDEsIDB4NjY0MSwgMHgxOTFELA0KKyAgICAweDY2NDIsIDB4NjY0MiwgMHgyMTJELCAweDY2NDMsIDB4NjY0MywgMHgwN0UzLCAweDY2NDQsIDB4NjY0QSwgMHgzNEMzLA0KKyAgICAweDY2NEIsIDB4NjY0QiwgMHgwOENCLCAweDY2NEMsIDB4NjY0QywgMHgwRDA3LCAweDY2NEQsIDB4NjY0RSwgMHgzNENBLA0KKyAgICAweDY2NEYsIDB4NjY0RiwgMHgxOTFFLCAweDY2NTAsIDB4NjY1MSwgMHgzNENDLCAweDY2NTIsIDB4NjY1MiwgMHgwQ0YyLA0KKyAgICAweDY2NTMsIDB4NjY1MywgMHgwRjZCLCAweDY2NTQsIDB4NjY1NCwgMHgxOTFDLCAweDY2NTUsIDB4NjY1NSwgMHgxMTExLA0KKyAgICAweDY2NTYsIDB4NjY1NiwgMHgxOTFGLCAweDY2NTcsIDB4NjY1NywgMHgxOTIxLCAweDY2NTgsIDB4NjY1OSwgMHgzNENFLA0KKyAgICAweDY2NUEsIDB4NjY1QSwgMHgwRTlFLCAweDY2NUIsIDB4NjY1QywgMHgzNEQwLCAweDY2NUQsIDB4NjY1RCwgMHgyMjlCLA0KKyAgICAweDY2NUUsIDB4NjY1RSwgMHgzNEQyLCAweDY2NUYsIDB4NjY1RiwgMHgxOTFCLCAweDY2NjAsIDB4NjY2MCwgMHgzNEQzLA0KKyAgICAweDY2NjEsIDB4NjY2MSwgMHgxOTIwLCAweDY2NjIsIDB4NjY2MywgMHgzNEQ0LCAweDY2NjQsIDB4NjY2NCwgMHgwRUZELA0KKyAgICAweDY2NjUsIDB4NjY2NSwgMHgzNEQ2LCAweDY2NjYsIDB4NjY2NiwgMHgwN0YzLCAweDY2NjcsIDB4NjY2NywgMHgzNEQ3LA0KKyAgICAweDY2NjgsIDB4NjY2OCwgMHgwNEU0LCAweDY2NjksIDB4NjY2RCwgMHgzNEQ4LCAweDY2NkUsIDB4NjY2RSwgMHgwQkY0LA0KKyAgICAweDY2NkYsIDB4NjY2RiwgMHgwOERGLCAweDY2NzAsIDB4NjY3MCwgMHgwRjA5LCAweDY2NzEsIDB4NjY3MywgMHgzNERELA0KKyAgICAweDY2NzQsIDB4NjY3NCwgMHgwQzY0LCAweDY2NzUsIDB4NjY3NSwgMHgzNEUwLCAweDY2NzYsIDB4NjY3NiwgMHgwOEQ2LA0KKyAgICAweDY2NzcsIDB4NjY3NywgMHgxOTIyLCAweDY2NzgsIDB4NjY3OSwgMHgzNEUxLCAweDY2N0EsIDB4NjY3QSwgMHgxMUM2LA0KKyAgICAweDY2N0IsIDB4NjY3RCwgMHgzNEUzLCAweDY2N0UsIDB4NjY3RSwgMHgwQTA5LCAweDY2N0YsIDB4NjY4MSwgMHgzNEU2LA0KKyAgICAweDY2ODIsIDB4NjY4MiwgMHgxMTIwLCAweDY2ODMsIDB4NjY4MywgMHgzNEU5LCAweDY2ODQsIDB4NjY4NCwgMHgxOTIzLA0KKyAgICAweDY2ODUsIDB4NjY4NiwgMHgzNEVBLCAweDY2ODcsIDB4NjY4NywgMHgwRjJCLCAweDY2ODgsIDB4NjY4OCwgMHgyMjU2LA0KKyAgICAweDY2ODksIDB4NjY4OSwgMHgyNEE4LCAweDY2OEEsIDB4NjY4QiwgMHgzNEVDLCAweDY2OEMsIDB4NjY4QywgMHgxOTI0LA0KKyAgICAweDY2OEQsIDB4NjY5MCwgMHgzNEVFLCAweDY2OTEsIDB4NjY5MSwgMHgwRDg1LCAweDY2OTIsIDB4NjY5NSwgMHgzNEYyLA0KKyAgICAweDY2OTYsIDB4NjY5NiwgMHgwQjcwLCAweDY2OTcsIDB4NjY5NywgMHgwM0MwLCAweDY2OTgsIDB4NjY5QywgMHgzNEY2LA0KKyAgICAweDY2OUQsIDB4NjY5RCwgMHgxOTI2LCAweDY2OUUsIDB4NjZBMSwgMHgzNEZCLCAweDY2QTIsIDB4NjZBMiwgMHgxRTc5LA0KKyAgICAweDY2QTMsIDB4NjZBNiwgMHgzNEZGLCAweDY2QTcsIDB4NjZBNywgMHgxOTI1LCAweDY2QTgsIDB4NjZBOCwgMHgxQ0RELA0KKyAgICAweDY2QTksIDB4NjZBQSwgMHgzNTAzLCAweDY2QUIsIDB4NjZBQiwgMHgyMjVBLCAweDY2QUMsIDB4NjZBRCwgMHgzNTA1LA0KKyAgICAweDY2QUUsIDB4NjZBRSwgMHgwQjFELCAweDY2QUYsIDB4NjZCMywgMHgzNTA3LCAweDY2QjQsIDB4NjZCNCwgMHgwNDEyLA0KKyAgICAweDY2QjUsIDB4NjZCOCwgMHgzNTBDLCAweDY2QjksIDB4NjZCOSwgMHgxNzVCLCAweDY2QkEsIDB4NjZCRCwgMHgzNTEwLA0KKyAgICAweDY2QkUsIDB4NjZCRSwgMHgxOTI3LCAweDY2QkYsIDB4NjZDMywgMHgzNTE0LCAweDY2QzQsIDB4NjZDNCwgMHgyNEE3LA0KKyAgICAweDY2QzUsIDB4NjZDNSwgMHgzNTE5LCAweDY2QzYsIDB4NjZDNiwgMHgyNjg2LCAweDY2QzcsIDB4NjZDNywgMHgyNEE2LA0KKyAgICAweDY2QzgsIDB4NjZDOCwgMHgzNTFBLCAweDY2QzksIDB4NjZDOSwgMHgyMUNFLCAweDY2Q0EsIDB4NjZENSwgMHgzNTFCLA0KKyAgICAweDY2RDYsIDB4NjZENiwgMHgyNEE5LCAweDY2RDcsIDB4NjZEOCwgMHgzNTI3LCAweDY2RDksIDB4NjZEOSwgMHgwRDg2LA0KKyAgICAweDY2REEsIDB4NjZEQSwgMHgzNTI5LCAweDY2REIsIDB4NjZEQywgMHgxOTI4LCAweDY2REQsIDB4NjZERCwgMHgwQkY3LA0KKyAgICAweDY2REUsIDB4NjZERiwgMHgzNTJBLCAweDY2RTAsIDB4NjZFMCwgMHgxRkU3LCAweDY2RTEsIDB4NjZFNSwgMHgzNTJDLA0KKyAgICAweDY2RTYsIDB4NjZFNiwgMHgxOTJBLCAweDY2RTcsIDB4NjZFOCwgMHgzNTMxLCAweDY2RTksIDB4NjZFOSwgMHgxOTJCLA0KKyAgICAweDY2RUEsIDB4NjZFQiwgMHgzNTMzLCAweDY2RUMsIDB4NjZFQywgMHgyMTEyLCAweDY2RUQsIDB4NjZFRiwgMHgzNTM1LA0KKyAgICAweDY2RjAsIDB4NjZGMCwgMHgxMEZFLCAweDY2RjEsIDB4NjZGMSwgMHgzNTM4LCAweDY2RjIsIDB4NjZGMiwgMHgwQzc3LA0KKyAgICAweDY2RjMsIDB4NjZGMywgMHgxMDNFLCAweDY2RjQsIDB4NjZGNCwgMHgwNkY3LCAweDY2RjUsIDB4NjZGNiwgMHgzNTM5LA0KKyAgICAweDY2RjcsIDB4NjZGNywgMHgxOTE0LCAweDY2RjgsIDB4NjZGOCwgMHgyMTNDLCAweDY2RjksIDB4NjZGOSwgMHgwNEEzLA0KKyAgICAweDY2RkEsIDB4NjZGQiwgMHgzNTNCLCAweDY2RkMsIDB4NjZGQywgMHgwQUEzLCAweDY2RkQsIDB4NjZGRCwgMHgzNTNELA0KKyAgICAweDY2RkUsIDB4NjZGRSwgMHgxMTNCLCAweDY2RkYsIDB4NjZGRiwgMHgwRTM5LCAweDY3MDAsIDB4NjcwMCwgMHgxMjRCLA0KKyAgICAweDY3MDEsIDB4NjcwMiwgMHgzNTNFLCAweDY3MDMsIDB4NjcwMywgMHgxRjVDLCAweDY3MDQsIDB4NjcwNywgMHgzNTQwLA0KKyAgICAweDY3MDgsIDB4NjcwOCwgMHgxMTA1LCAweDY3MDksIDB4NjcwOSwgMHgxMEI1LCAweDY3MEEsIDB4NjcwQSwgMHgxOTczLA0KKyAgICAweDY3MEIsIDB4NjcwQiwgMHgwQkI0LCAweDY3MEMsIDB4NjcwQywgMHgzNTQ0LCAweDY3MEQsIDB4NjcwRCwgMHgwNjlCLA0KKyAgICAweDY3MEUsIDB4NjcwRiwgMHgzNTQ1LCAweDY3MTAsIDB4NjcxMCwgMHgxOTg0LCAweDY3MTEsIDB4NjcxMywgMHgzNTQ3LA0KKyAgICAweDY3MTQsIDB4NjcxNCwgMHgwREFDLCAweDY3MTUsIDB4NjcxNSwgMHgxOThFLCAweDY3MTYsIDB4NjcxNiwgMHgzNTRBLA0KKyAgICAweDY3MTcsIDB4NjcxNywgMHgwOUI1LCAweDY3MTgsIDB4NjcxQSwgMHgzNTRCLCAweDY3MUIsIDB4NjcxQiwgMHgwRUFDLA0KKyAgICAweDY3MUMsIDB4NjcxQywgMHgzNTRFLCAweDY3MUQsIDB4NjcxRCwgMHgwNEQ0LCAweDY3MUUsIDB4NjcxRSwgMHgzNTRGLA0KKyAgICAweDY3MUYsIDB4NjcxRiwgMHgwQkY5LCAweDY3MjAsIDB4NjcyNSwgMHgzNTUwLCAweDY3MjYsIDB4NjcyNiwgMHgxOUFDLA0KKyAgICAweDY3MjcsIDB4NjcyNywgMHgyNEM0LCAweDY3MjgsIDB4NjcyOCwgMHgwQjIxLCAweDY3MjksIDB4NjcyOSwgMHgzNTU2LA0KKyAgICAweDY3MkEsIDB4NjcyQSwgMHgwRUMzLCAweDY3MkIsIDB4NjcyQiwgMHgwQjBDLCAweDY3MkMsIDB4NjcyQywgMHgwNDI3LA0KKyAgICAweDY3MkQsIDB4NjcyRCwgMHgxMTQwLCAweDY3MkUsIDB4NjcyRSwgMHgzNTU3LCAweDY3MkYsIDB4NjcyRiwgMHgwRDhDLA0KKyAgICAweDY3MzAsIDB4NjczMCwgMHgzNTU4LCAweDY3MzEsIDB4NjczMSwgMHgxMUVCLCAweDY3MzIsIDB4NjczMywgMHgzNTU5LA0KKyAgICAweDY3MzQsIDB4NjczNCwgMHgwQkYyLCAweDY3MzUsIDB4NjczNSwgMHgwNjIzLCAweDY3MzYsIDB4NjczOSwgMHgzNTVCLA0KKyAgICAweDY3M0EsIDB4NjczQSwgMHgwODBGLCAweDY3M0IsIDB4NjczQywgMHgzNTVGLCAweDY3M0QsIDB4NjczRCwgMHgwRkFCLA0KKyAgICAweDY3M0UsIDB4NjczRiwgMHgzNTYxLCAweDY3NDAsIDB4Njc0MCwgMHgwQ0VBLCAweDY3NDEsIDB4Njc0MSwgMHgzNTYzLA0KKyAgICAweDY3NDIsIDB4Njc0MiwgMHgxMTE2LCAweDY3NDMsIDB4Njc0MywgMHgwQzgzLCAweDY3NDQsIDB4Njc0NSwgMHgzNTY0LA0KKyAgICAweDY3NDYsIDB4Njc0NiwgMHgwNkM2LCAweDY3NDcsIDB4Njc0NywgMHgzNTY2LCAweDY3NDgsIDB4Njc0OCwgMHgxODU0LA0KKyAgICAweDY3NDksIDB4Njc0OSwgMHgwQ0Y1LCAweDY3NEEsIDB4Njc0QiwgMHgzNTY3LCAweDY3NEMsIDB4Njc0QywgMHgxODUxLA0KKyAgICAweDY3NEQsIDB4Njc0RCwgMHgzNTY5LCAweDY3NEUsIDB4Njc0RSwgMHgwOUQ5LCAweDY3NEYsIDB4Njc0RiwgMHgwRjlFLA0KKyAgICAweDY3NTAsIDB4Njc1MCwgMHgwNDhCLCAweDY3NTEsIDB4Njc1MSwgMHgwNTY4LCAweDY3NTIsIDB4Njc1MiwgMHgzNTZBLA0KKyAgICAweDY3NTMsIDB4Njc1MywgMHgxODUyLCAweDY3NTQsIDB4Njc1NSwgMHgzNTZCLCAweDY3NTYsIDB4Njc1NiwgMHgxMTY5LA0KKyAgICAweDY3NTcsIDB4Njc1QiwgMHgzNTZELCAweDY3NUMsIDB4Njc1QywgMHgwNjA0LCAweDY3NUQsIDB4Njc1RCwgMHgzNTcyLA0KKyAgICAweDY3NUUsIDB4Njc1RSwgMHgxODUzLCAweDY3NUYsIDB4Njc1RiwgMHgwRDhGLCAweDY3NjAsIDB4Njc2MCwgMHgwNkQ3LA0KKyAgICAweDY3NjEsIDB4Njc2MSwgMHgwRTQ4LCAweDY3NjIsIDB4Njc2NCwgMHgzNTczLCAweDY3NjUsIDB4Njc2NSwgMHgwOTlGLA0KKyAgICAweDY3NjYsIDB4Njc2NywgMHgzNTc2LCAweDY3NjgsIDB4Njc2OCwgMHgxMDE3LCAweDY3NjksIDB4Njc2OSwgMHgxODU1LA0KKyAgICAweDY3NkEsIDB4Njc2QSwgMHgxODU4LCAweDY3NkIsIDB4Njc2QywgMHgzNTc4LCAweDY3NkQsIDB4Njc2RCwgMHgwNzczLA0KKyAgICAweDY3NkUsIDB4Njc2RSwgMHgzNTdBLCAweDY3NkYsIDB4Njc2RiwgMHgwNDE2LCAweDY3NzAsIDB4Njc3MCwgMHgwOEFELA0KKyAgICAweDY3NzEsIDB4Njc3MSwgMHgxRUNDLCAweDY3NzIsIDB4Njc3MiwgMHgxOTBGLCAweDY3NzMsIDB4Njc3MywgMHgxODU5LA0KKyAgICAweDY3NzQsIDB4Njc3NCwgMHgzNTdCLCAweDY3NzUsIDB4Njc3NSwgMHgxODVDLCAweDY3NzYsIDB4Njc3NiwgMHgzNTdDLA0KKyAgICAweDY3NzcsIDB4Njc3NywgMHgxODYxLCAweDY3NzgsIDB4Njc3QiwgMHgzNTdELCAweDY3N0MsIDB4Njc3QywgMHgxODYyLA0KKyAgICAweDY3N0QsIDB4Njc3RCwgMHgzNTgxLCAweDY3N0UsIDB4Njc3RSwgMHgwREJFLCAweDY3N0YsIDB4Njc3RiwgMHgwM0YwLA0KKyAgICAweDY3ODAsIDB4Njc4MCwgMHgzNTgyLCAweDY3ODEsIDB4Njc4MSwgMHgwODFFLCAweDY3ODIsIDB4Njc4MywgMHgzNTgzLA0KKyAgICAweDY3ODQsIDB4Njc4NCwgMHgwNzEyLCAweDY3ODUsIDB4Njc4NiwgMHgzNTg1LCAweDY3ODcsIDB4Njc4NywgMHgxODU3LA0KKyAgICAweDY3ODgsIDB4Njc4OCwgMHgzNTg3LCAweDY3ODksIDB4Njc4OSwgMHgwRUE4LCAweDY3OEEsIDB4Njc4QSwgMHgzNTg4LA0KKyAgICAweDY3OEIsIDB4Njc4QiwgMHgxODYwLCAweDY3OEMsIDB4Njc4RiwgMHgzNTg5LCAweDY3OTAsIDB4Njc5MCwgMHgwRjA1LA0KKyAgICAweDY3OTEsIDB4Njc5NCwgMHgzNThELCAweDY3OTUsIDB4Njc5NSwgMHgxMThFLCAweDY3OTYsIDB4Njc5NiwgMHgzNTkxLA0KKyAgICAweDY3OTcsIDB4Njc5NywgMHgwQTFGLCAweDY3OTgsIDB4Njc5OCwgMHgxODVBLCAweDY3OTksIDB4Njc5OSwgMHgzNTkyLA0KKyAgICAweDY3OUEsIDB4Njc5QSwgMHgwQUJCLCAweDY3OUIsIDB4Njc5QiwgMHgzNTkzLCAweDY3OUMsIDB4Njc5QywgMHgwNzU0LA0KKyAgICAweDY3OUQsIDB4Njc5RCwgMHgxMUE1LCAweDY3OUUsIDB4Njc5RSwgMHgxODVFLCAweDY3OUYsIDB4NjdBMSwgMHgzNTk0LA0KKyAgICAweDY3QTIsIDB4NjdBMiwgMHgwRDc3LCAweDY3QTMsIDB4NjdBMywgMHgxMTI5LCAweDY3QTQsIDB4NjdBNCwgMHgzNTk3LA0KKyAgICAweDY3QTUsIDB4NjdBNSwgMHgxODU2LCAweDY3QTYsIDB4NjdBNiwgMHgzNTk4LCAweDY3QTcsIDB4NjdBNywgMHgxODVCLA0KKyAgICAweDY3QTgsIDB4NjdBOCwgMHgxODVELCAweDY3QTksIDB4NjdBOSwgMHgzNTk5LCAweDY3QUEsIDB4NjdBQSwgMHgwQzM2LA0KKyAgICAweDY3QUIsIDB4NjdBQiwgMHgwNjgwLCAweDY3QUMsIDB4NjdBQywgMHgzNTlBLCAweDY3QUQsIDB4NjdBRCwgMHgxODVGLA0KKyAgICAweDY3QUUsIDB4NjdBRSwgMHgzNTlCLCAweDY3QUYsIDB4NjdBRiwgMHgwOTZBLCAweDY3QjAsIDB4NjdCMCwgMHgxODY4LA0KKyAgICAweDY3QjEsIDB4NjdCMiwgMHgzNTlDLCAweDY3QjMsIDB4NjdCMywgMHgxODZELCAweDY3QjQsIDB4NjdCNCwgMHgzNTlFLA0KKyAgICAweDY3QjUsIDB4NjdCNSwgMHgxODZCLCAweDY3QjYsIDB4NjdCNiwgMHgwODRGLCAweDY3QjcsIDB4NjdCNywgMHgwODQyLA0KKyAgICAweDY3QjgsIDB4NjdCOCwgMHgxODcxLCAweDY3QjksIDB4NjdDMCwgMHgzNTlGLCAweDY3QzEsIDB4NjdDMSwgMHgxODc0LA0KKyAgICAweDY3QzIsIDB4NjdDMiwgMHgzNUE3LCAweDY3QzMsIDB4NjdDMywgMHgxODcwLCAweDY3QzQsIDB4NjdDNCwgMHgwNDYzLA0KKyAgICAweDY3QzUsIDB4NjdDRSwgMHgzNUE4LCAweDY3Q0YsIDB4NjdDRiwgMHgwM0UzLCAweDY3RDAsIDB4NjdEMCwgMHgwQjE2LA0KKyAgICAweDY3RDEsIDB4NjdEMSwgMHgwNkM3LCAweDY3RDIsIDB4NjdEMiwgMHgwQzAxLCAweDY3RDMsIDB4NjdEMywgMHgwQzk5LA0KKyAgICAweDY3RDQsIDB4NjdENCwgMHgwQ0JDLCAweDY3RDUsIDB4NjdENywgMHgzNUIyLCAweDY3RDgsIDB4NjdEOCwgMHgxODY1LA0KKyAgICAweDY3RDksIDB4NjdEOSwgMHgxODZBLCAweDY3REEsIDB4NjdEQSwgMHgxODZDLCAweDY3REIsIDB4NjdEQiwgMHgzNUI1LA0KKyAgICAweDY3REMsIDB4NjdEQywgMHgwNzRBLCAweDY3REQsIDB4NjdERCwgMHgxODZFLCAweDY3REUsIDB4NjdERSwgMHgxMjUyLA0KKyAgICAweDY3REYsIDB4NjdERiwgMHgzNUI2LCAweDY3RTAsIDB4NjdFMCwgMHgwQjVFLCAweDY3RTEsIDB4NjdFMSwgMHgzNUI3LA0KKyAgICAweDY3RTIsIDB4NjdFMiwgMHgxODcyLCAweDY3RTMsIDB4NjdFNCwgMHgzNUI4LCAweDY3RTUsIDB4NjdFNSwgMHgwNEIwLA0KKyAgICAweDY3RTYsIDB4NjdFOCwgMHgzNUJBLCAweDY3RTksIDB4NjdFOSwgMHgxODY3LCAweDY3RUEsIDB4NjdFQiwgMHgzNUJELA0KKyAgICAweDY3RUMsIDB4NjdFQywgMHgwODYwLCAweDY3RUQsIDB4NjdFRSwgMHgzNUJGLCAweDY3RUYsIDB4NjdFRiwgMHgwOTRGLA0KKyAgICAweDY3RjAsIDB4NjdGMCwgMHgxODYzLCAweDY3RjEsIDB4NjdGMSwgMHgxMUY4LCAweDY3RjIsIDB4NjdGMiwgMHgzNUMxLA0KKyAgICAweDY3RjMsIDB4NjdGMywgMHgwQTQxLCAweDY3RjQsIDB4NjdGNCwgMHgwNEI4LCAweDY3RjUsIDB4NjdGQywgMHgzNUMyLA0KKyAgICAweDY3RkQsIDB4NjdGRCwgMHgxODc1LCAweDY3RkUsIDB4NjdGRSwgMHgzNUNBLCAweDY3RkYsIDB4NjdGRiwgMHgwRDU4LA0KKyAgICAweDY4MDAsIDB4NjgwMCwgMHgxODZGLCAweDY4MDEsIDB4NjgwNCwgMHgzNUNCLCAweDY4MDUsIDB4NjgwNSwgMHgxMTQ1LA0KKyAgICAweDY4MDYsIDB4NjgwNiwgMHgzNUNGLCAweDY4MDcsIDB4NjgwNywgMHgwNDUzLCAweDY4MDgsIDB4NjgwOCwgMHgxMTVDLA0KKyAgICAweDY4MDksIDB4NjgwOSwgMHgxODY0LCAweDY4MEEsIDB4NjgwQSwgMHgxODY2LCAweDY4MEIsIDB4NjgwQiwgMHgwNUVGLA0KKyAgICAweDY4MEMsIDB4NjgwQywgMHgxODY5LCAweDY4MEQsIDB4NjgwRCwgMHgzNUQwLCAweDY4MEUsIDB4NjgwRSwgMHgxODczLA0KKyAgICAweDY4MEYsIDB4NjgwRiwgMHgwOUEzLCAweDY4MTAsIDB4NjgxMCwgMHgzNUQxLCAweDY4MTEsIDB4NjgxMSwgMHgwRDhFLA0KKyAgICAweDY4MTIsIDB4NjgxMiwgMHgzNUQyLCAweDY4MTMsIDB4NjgxMywgMHgwRDlELCAweDY4MTQsIDB4NjgxNSwgMHgzNUQzLA0KKyAgICAweDY4MTYsIDB4NjgxNiwgMHgwQkZCLCAweDY4MTcsIDB4NjgxNywgMHgwOUUwLCAweDY4MTgsIDB4NjgxQywgMHgzNUQ1LA0KKyAgICAweDY4MUQsIDB4NjgxRCwgMHgxODdGLCAweDY4MUUsIDB4NjgyMCwgMHgzNURBLCAweDY4MjEsIDB4NjgyMSwgMHgwRjZFLA0KKyAgICAweDY4MjIsIDB4NjgyOCwgMHgzNURELCAweDY4MjksIDB4NjgyOSwgMHgxODg4LCAweDY4MkEsIDB4NjgyQSwgMHgxMUU5LA0KKyAgICAweDY4MkIsIDB4NjgzMSwgMHgzNUU0LCAweDY4MzIsIDB4NjgzMywgMHgxODc2LCAweDY4MzQsIDB4NjgzNiwgMHgzNUVCLA0KKyAgICAweDY4MzcsIDB4NjgzNywgMHgxMDIyLCAweDY4MzgsIDB4NjgzOCwgMHgwNzgyLCAweDY4MzksIDB4NjgzOSwgMHgwNkY0LA0KKyAgICAweDY4M0EsIDB4NjgzQiwgMHgzNUVFLCAweDY4M0MsIDB4NjgzQywgMHgwNkVDLCAweDY4M0QsIDB4NjgzRCwgMHgxMTE3LA0KKyAgICAweDY4M0UsIDB4NjgzRSwgMHgxODg1LCAweDY4M0YsIDB4NjgzRiwgMHgzNUYwLCAweDY4NDAsIDB4Njg0MCwgMHgxODg0LA0KKyAgICAweDY4NDEsIDB4Njg0MSwgMHgxODgyLCAweDY4NDIsIDB4Njg0MiwgMHgwNzQ5LCAweDY4NDMsIDB4Njg0MywgMHgwRTI1LA0KKyAgICAweDY4NDQsIDB4Njg0NCwgMHgxODdDLCAweDY4NDUsIDB4Njg0NSwgMHgwRUI1LCAweDY4NDYsIDB4Njg0NiwgMHgwOTdGLA0KKyAgICAweDY4NDcsIDB4Njg0NywgMHgzNUYxLCAweDY4NDgsIDB4Njg0OCwgMHgwM0MzLCAweDY4NDksIDB4Njg0OSwgMHgxODg3LA0KKyAgICAweDY4NEEsIDB4Njg0QSwgMHgxODg2LCAweDY4NEIsIDB4Njg0QiwgMHgzNUYyLCAweDY4NEMsIDB4Njg0QywgMHgxMjFELA0KKyAgICAweDY4NEQsIDB4Njg0RCwgMHgzNUYzLCAweDY4NEUsIDB4Njg0RSwgMHgxODdBLCAweDY4NEYsIDB4Njg0RiwgMHgzNUY0LA0KKyAgICAweDY4NTAsIDB4Njg1MCwgMHgwRTVBLCAweDY4NTEsIDB4Njg1MSwgMHgwQ0RDLCAweDY4NTIsIDB4Njg1MiwgMHgzNUY1LA0KKyAgICAweDY4NTMsIDB4Njg1MywgMHgwN0NELCAweDY4NTQsIDB4Njg1NCwgMHgwOEFDLCAweDY4NTUsIDB4Njg1NSwgMHgxODgwLA0KKyAgICAweDY4NTYsIDB4Njg1RiwgMHgzNUY2LCAweDY4NjAsIDB4Njg2MSwgMHgxODc4LCAweDY4NjIsIDB4Njg2MiwgMHgxODdCLA0KKyAgICAweDY4NjMsIDB4Njg2MywgMHgwNTk2LCAweDY4NjQsIDB4Njg2NCwgMHgxODdELCAweDY4NjUsIDB4Njg2NSwgMHgwQzQyLA0KKyAgICAweDY4NjYsIDB4Njg2NiwgMHgxODgxLCAweDY4NjcsIDB4Njg2NywgMHgxODgzLCAweDY4NjgsIDB4Njg2OCwgMHgwODgxLA0KKyAgICAweDY4NjksIDB4Njg2OSwgMHgxMjBCLCAweDY4NkEsIDB4Njg2QSwgMHgzNjAwLCAweDY4NkIsIDB4Njg2QiwgMHgxODhFLA0KKyAgICAweDY4NkMsIDB4Njg3MywgMHgzNjAxLCAweDY4NzQsIDB4Njg3NCwgMHgxODhCLCAweDY4NzUsIDB4Njg3NSwgMHgzNjA5LA0KKyAgICAweDY4NzYsIDB4Njg3NiwgMHgwRTYxLCAweDY4NzcsIDB4Njg3NywgMHgxODhDLCAweDY4NzgsIDB4Njg4MCwgMHgzNjBBLA0KKyAgICAweDY4ODEsIDB4Njg4MSwgMHgwQTAzLCAweDY4ODIsIDB4Njg4MiwgMHgzNjEzLCAweDY4ODMsIDB4Njg4MywgMHgxODdFLA0KKyAgICAweDY4ODQsIDB4Njg4NCwgMHgzNjE0LCAweDY4ODUsIDB4Njg4NSwgMHgwQUJDLCAweDY4ODYsIDB4Njg4NiwgMHgwM0ZCLA0KKyAgICAweDY4ODcsIDB4Njg4RSwgMHgzNjE1LCAweDY4OEYsIDB4Njg4RiwgMHgxODhBLCAweDY4OTAsIDB4Njg5MiwgMHgzNjFELA0KKyAgICAweDY4OTMsIDB4Njg5MywgMHgxODhELCAweDY4OTQsIDB4Njg5NiwgMHgzNjIwLCAweDY4OTcsIDB4Njg5NywgMHgwNkZDLA0KKyAgICAweDY4OTgsIDB4Njg5OCwgMHgyNDZBLCAweDY4OTksIDB4Njg5QywgMHgzNjIzLCAweDY4OUQsIDB4Njg5RCwgMHgyMTc1LA0KKyAgICAweDY4OUUsIDB4Njg5RSwgMHgzNjI3LCAweDY4OUYsIDB4Njg5RiwgMHgyNDZELCAweDY4QTAsIDB4NjhBMSwgMHgzNjI4LA0KKyAgICAweDY4QTIsIDB4NjhBMiwgMHgwRDBCLCAweDY4QTMsIDB4NjhBNSwgMHgzNjJBLCAweDY4QTYsIDB4NjhBNiwgMHgwQUQzLA0KKyAgICAweDY4QTcsIDB4NjhBNywgMHgwRUVGLCAweDY4QTgsIDB4NjhBOCwgMHgwOUQxLCAweDY4QTksIDB4NjhBQywgMHgzNjJELA0KKyAgICAweDY4QUQsIDB4NjhBRCwgMHgwREU4LCAweDY4QUUsIDB4NjhBRSwgMHgzNjMxLCAweDY4QUYsIDB4NjhBRiwgMHgwRTMwLA0KKyAgICAweDY4QjAsIDB4NjhCMCwgMHgwRjgwLCAweDY4QjEsIDB4NjhCMiwgMHgzNjMyLCAweDY4QjMsIDB4NjhCMywgMHgwRDc4LA0KKyAgICAweDY4QjQsIDB4NjhCNCwgMHgzNjM0LCAweDY4QjUsIDB4NjhCNSwgMHgxODg5LCAweDY4QjYsIDB4NjhCRiwgMHgzNjM1LA0KKyAgICAweDY4QzAsIDB4NjhDMCwgMHgwODVGLCAweDY4QzEsIDB4NjhDMSwgMHgzNjNGLCAweDY4QzIsIDB4NjhDMiwgMHgxODhGLA0KKyAgICAweDY4QzMsIDB4NjhDOCwgMHgzNjQwLCAweDY4QzksIDB4NjhDOSwgMHgwQUUzLCAweDY4Q0EsIDB4NjhDQSwgMHgzNjQ2LA0KKyAgICAweDY4Q0IsIDB4NjhDQiwgMHgwQzA0LCAweDY4Q0MsIDB4NjhDQywgMHgzNjQ3LCAweDY4Q0QsIDB4NjhDRCwgMHgwNzUwLA0KKyAgICAweDY4Q0UsIDB4NjhEMSwgMHgzNjQ4LCAweDY4RDIsIDB4NjhEMiwgMHgwM0ZGLCAweDY4RDMsIDB4NjhENCwgMHgzNjRDLA0KKyAgICAweDY4RDUsIDB4NjhENSwgMHgxMjM1LCAweDY4RDYsIDB4NjhENiwgMHgyNDZCLCAweDY4RDcsIDB4NjhENywgMHgyMjVGLA0KKyAgICAweDY4RDgsIDB4NjhEOCwgMHgwODFGLCAweDY4RDksIDB4NjhEOSwgMHgzNjRFLCAweDY4REEsIDB4NjhEQSwgMHgwQkIwLA0KKyAgICAweDY4REIsIDB4NjhERSwgMHgzNjRGLCAweDY4REYsIDB4NjhERiwgMHgxRUNFLCAweDY4RTAsIDB4NjhFMCwgMHgwRTE3LA0KKyAgICAweDY4RTEsIDB4NjhFMiwgMHgzNjUzLCAweDY4RTMsIDB4NjhFMywgMHgxODlBLCAweDY4RTQsIDB4NjhFNiwgMHgzNjU1LA0KKyAgICAweDY4RTcsIDB4NjhFNywgMHgyMjcyLCAweDY4RTgsIDB4NjhFRCwgMHgzNjU4LCAweDY4RUUsIDB4NjhFRSwgMHgwQ0U2LA0KKyAgICAweDY4RUYsIDB4NjhFRiwgMHgzNjVFLCAweDY4RjAsIDB4NjhGMCwgMHgxODk2LCAweDY4RjEsIDB4NjhGMSwgMHgwOUNELA0KKyAgICAweDY4RjIsIDB4NjhGNCwgMHgzNjVGLCAweDY4RjUsIDB4NjhGNSwgMHgwOTUwLCAweDY4RjYsIDB4NjhGOCwgMHgzNjYyLA0KKyAgICAweDY4RjksIDB4NjhGOSwgMHgxODk0LCAweDY4RkEsIDB4NjhGQSwgMHgwNzMwLCAweDY4RkIsIDB4NjhGQiwgMHgzNjY1LA0KKyAgICAweDY4RkMsIDB4NjhGQywgMHgxODkxLCAweDY4RkQsIDB4NjhGRiwgMHgzNjY2LCAweDY5MDAsIDB4NjkwMCwgMHgzNjY5LA0KKyAgICAweDY5MDEsIDB4NjkwMSwgMHgxODk4LCAweDY5MDIsIDB4NjkwNCwgMHgzNjZBLCAweDY5MDUsIDB4NjkwNSwgMHgxMDU1LA0KKyAgICAweDY5MDYsIDB4NjkwQSwgMHgzNjZELCAweDY5MEIsIDB4NjkwQiwgMHgxODk3LCAweDY5MEMsIDB4NjkwQywgMHgzNjcyLA0KKyAgICAweDY5MEQsIDB4NjkwRCwgMHgxMUIxLCAweDY5MEUsIDB4NjkwRSwgMHgxMjEyLCAweDY5MEYsIDB4NjkwRiwgMHgyNDczLA0KKyAgICAweDY5MTAsIDB4NjkxMCwgMHgxODlCLCAweDY5MTEsIDB4NjkxMSwgMHgzNjczLCAweDY5MTIsIDB4NjkxMiwgMHgwODg4LA0KKyAgICAweDY5MTMsIDB4NjkxRSwgMHgzNjc0LCAweDY5MUYsIDB4NjkyMCwgMHgxODkyLCAweDY5MjEsIDB4NjkyMywgMHgzNjgwLA0KKyAgICAweDY5MjQsIDB4NjkyNCwgMHgxODk1LCAweDY5MjUsIDB4NjkyQywgMHgzNjgzLCAweDY5MkQsIDB4NjkyRCwgMHgwRTg3LA0KKyAgICAweDY5MkUsIDB4NjkyRiwgMHgzNjhCLCAweDY5MzAsIDB4NjkzMCwgMHgxMDMzLCAweDY5MzEsIDB4NjkzMywgMHgzNjhELA0KKyAgICAweDY5MzQsIDB4NjkzNCwgMHgxOEE2LCAweDY5MzUsIDB4NjkzOCwgMHgzNjkwLCAweDY5MzksIDB4NjkzOSwgMHgxODlELA0KKyAgICAweDY5M0EsIDB4NjkzQywgMHgzNjk0LCAweDY5M0QsIDB4NjkzRCwgMHgwNTJELCAweDY5M0UsIDB4NjkzRSwgMHgzNjk3LA0KKyAgICAweDY5M0YsIDB4NjkzRiwgMHgwNTNFLCAweDY5NDAsIDB4Njk0MSwgMHgzNjk4LCAweDY5NDIsIDB4Njk0MiwgMHgxODlGLA0KKyAgICAweDY5NDMsIDB4Njk0OSwgMHgzNjlBLCAweDY5NEEsIDB4Njk0QSwgMHgyMUZFLCAweDY5NEIsIDB4Njk1MiwgMHgzNkExLA0KKyAgICAweDY5NTMsIDB4Njk1MywgMHgxRUZFLCAweDY5NTQsIDB4Njk1NCwgMHgwRjczLCAweDY5NTUsIDB4Njk1NiwgMHgzNkE5LA0KKyAgICAweDY5NTcsIDB4Njk1NywgMHgxODk5LCAweDY5NTgsIDB4Njk1OSwgMHgzNkFCLCAweDY5NUEsIDB4Njk1QSwgMHgwNTIzLA0KKyAgICAweDY5NUIsIDB4Njk1QywgMHgzNkFELCAweDY5NUQsIDB4Njk1RCwgMHgxOEEwLCAweDY5NUUsIDB4Njk1RSwgMHgwOUNFLA0KKyAgICAweDY5NUYsIDB4Njk1RiwgMHgzNkFGLCAweDY5NjAsIDB4Njk2MCwgMHgxODlFLCAweDY5NjEsIDB4Njk2MiwgMHgzNkIwLA0KKyAgICAweDY5NjMsIDB4Njk2MywgMHgxOEFELCAweDY5NjQsIDB4Njk2NSwgMHgzNkIyLCAweDY5NjYsIDB4Njk2NiwgMHgxOEFDLA0KKyAgICAweDY5NjcsIDB4Njk2NywgMHgzNkI0LCAweDY5NjgsIDB4Njk2OCwgMHgyNDc1LCAweDY5NjksIDB4Njk2QSwgMHgzNkI1LA0KKyAgICAweDY5NkIsIDB4Njk2QiwgMHgxOEEyLCAweDY5NkMsIDB4Njk2QywgMHgzNkI3LCAweDY5NkQsIDB4Njk2RCwgMHgyMjBBLA0KKyAgICAweDY5NkUsIDB4Njk2RSwgMHgxODkwLCAweDY5NkYsIDB4Njk3MCwgMHgzNkI4LCAweDY5NzEsIDB4Njk3MSwgMHgxODlDLA0KKyAgICAweDY5NzIsIDB4Njk3NCwgMHgzNkJBLCAweDY5NzUsIDB4Njk3NSwgMHgxRjZGLCAweDY5NzYsIDB4Njk3NiwgMHgzNkJELA0KKyAgICAweDY5NzcsIDB4Njk3NywgMHgwOTM5LCAweDY5NzgsIDB4Njk3OCwgMHgxOEE1LCAweDY5NzksIDB4Njk3OSwgMHgxOEFFLA0KKyAgICAweDY5N0EsIDB4Njk3QiwgMHgzNkJFLCAweDY5N0MsIDB4Njk3QywgMHgwQTRDLCAweDY5N0QsIDB4Njk3RiwgMHgzNkMwLA0KKyAgICAweDY5ODAsIDB4Njk4MCwgMHgxOEEzLCAweDY5ODEsIDB4Njk4MSwgMHgzNkMzLCAweDY5ODIsIDB4Njk4MiwgMHgwNkMwLA0KKyAgICAweDY5ODMsIDB4Njk4MywgMHgzNkM0LCAweDY5ODQsIDB4Njk4NCwgMHgxOEExLCAweDY5ODUsIDB4Njk4NSwgMHgzNkM1LA0KKyAgICAweDY5ODYsIDB4Njk4NiwgMHgxMEMxLCAweDY5ODcsIDB4Njk4OCwgMHgxOEE4LCAweDY5ODksIDB4Njk4OSwgMHgxOEFCLA0KKyAgICAweDY5OEEsIDB4Njk4QywgMHgzNkM2LCAweDY5OEQsIDB4Njk4RCwgMHgxOEJCLCAweDY5OEUsIDB4Njk5MywgMHgzNkM5LA0KKyAgICAweDY5OTQsIDB4Njk5NCwgMHgwOUIxLCAweDY5OTUsIDB4Njk5NSwgMHgxOEI5LCAweDY5OTYsIDB4Njk5NywgMHgzNkNGLA0KKyAgICAweDY5OTgsIDB4Njk5OCwgMHgxOEE0LCAweDY5OTksIDB4Njk5QSwgMHgzNkQxLCAweDY5OUIsIDB4Njk5QiwgMHgxOEFGLA0KKyAgICAweDY5OUMsIDB4Njk5QywgMHgwM0ZDLCAweDY5OUQsIDB4NjlBNiwgMHgzNkQzLCAweDY5QTcsIDB4NjlBNywgMHgxOEIwLA0KKyAgICAweDY5QTgsIDB4NjlBOCwgMHgxMTQ2LCAweDY5QTksIDB4NjlBOSwgMHgzNkRELCAweDY5QUEsIDB4NjlBQSwgMHgyNDY4LA0KKyAgICAweDY5QUIsIDB4NjlBQiwgMHgxOEIyLCAweDY5QUMsIDB4NjlBQywgMHgzNkRFLCAweDY5QUQsIDB4NjlBRCwgMHgxOEIzLA0KKyAgICAweDY5QUUsIDB4NjlBRSwgMHgyMTAwLCAweDY5QUYsIDB4NjlCMCwgMHgzNkRGLCAweDY5QjEsIDB4NjlCMSwgMHgxOEI1LA0KKyAgICAweDY5QjIsIDB4NjlCMywgMHgzNkUxLCAweDY5QjQsIDB4NjlCNCwgMHgwQTNBLCAweDY5QjUsIDB4NjlCNiwgMHgzNkUzLA0KKyAgICAweDY5QjcsIDB4NjlCNywgMHgwQzkxLCAweDY5QjgsIDB4NjlCQSwgMHgzNkU1LCAweDY5QkIsIDB4NjlCQiwgMHgxOEIxLA0KKyAgICAweDY5QkMsIDB4NjlCRSwgMHgzNkU4LCAweDY5QkYsIDB4NjlCRiwgMHgyNDc2LCAweDY5QzAsIDB4NjlDMCwgMHgzNkVCLA0KKyAgICAweDY5QzEsIDB4NjlDMSwgMHgxOEI2LCAweDY5QzIsIDB4NjlDOSwgMHgzNkVDLCAweDY5Q0EsIDB4NjlDQSwgMHgxOEI3LA0KKyAgICAweDY5Q0IsIDB4NjlDQiwgMHgxRjI3LCAweDY5Q0MsIDB4NjlDQywgMHgxOEE3LCAweDY5Q0QsIDB4NjlDRCwgMHgyMEQ3LA0KKyAgICAweDY5Q0UsIDB4NjlDRSwgMHgxOEFBLCAweDY5Q0YsIDB4NjlDRiwgMHgzNkY0LCAweDY5RDAsIDB4NjlEMCwgMHgwN0M2LA0KKyAgICAweDY5RDEsIDB4NjlEMywgMHgzNkY1LCAweDY5RDQsIDB4NjlENCwgMHgxOEI0LCAweDY5RDUsIDB4NjlEQSwgMHgzNkY4LA0KKyAgICAweDY5REIsIDB4NjlEQiwgMHgwODZBLCAweDY5REMsIDB4NjlERSwgMHgzNkZFLCAweDY5REYsIDB4NjlERiwgMHgxOEI4LA0KKyAgICAweDY5RTAsIDB4NjlFMCwgMHgxOEJBLCAweDY5RTEsIDB4NjlFNiwgMHgzNzAxLCAweDY5RTcsIDB4NjlFNywgMHgyNDdDLA0KKyAgICAweDY5RTgsIDB4NjlFQywgMHgzNzA3LCAweDY5RUQsIDB4NjlFRCwgMHgxOEJFLCAweDY5RUUsIDB4NjlGMSwgMHgzNzBDLA0KKyAgICAweDY5RjIsIDB4NjlGMiwgMHgxOEMyLCAweDY5RjMsIDB4NjlGMywgMHgxRkExLCAweDY5RjQsIDB4NjlGQywgMHgzNzEwLA0KKyAgICAweDY5RkQsIDB4NjlGRCwgMHgwNEEyLCAweDY5RkUsIDB4NjlGRSwgMHgzNzE5LCAweDY5RkYsIDB4NjlGRiwgMHgxOEJDLA0KKyAgICAweDZBMDAsIDB4NkEwMCwgMHgzNzFBLCAweDZBMDEsIDB4NkEwMSwgMHgyMkFBLCAweDZBMDIsIDB4NkEwMiwgMHgyMDA1LA0KKyAgICAweDZBMDMsIDB4NkEwNCwgMHgzNzFCLCAweDZBMDUsIDB4NkEwNSwgMHgyNDZDLCAweDZBMDYsIDB4NkEwOSwgMHgzNzFELA0KKyAgICAweDZBMEEsIDB4NkEwQSwgMHgwNjRCLCAweDZBMEIsIDB4NkExMiwgMHgzNzIxLCAweDZBMTMsIDB4NkExMywgMHgyMDNFLA0KKyAgICAweDZBMTQsIDB4NkExNiwgMHgzNzI5LCAweDZBMTcsIDB4NkExOCwgMHgxOEJGLCAweDZBMTksIDB4NkExOSwgMHgxRTRDLA0KKyAgICAweDZBMUEsIDB4NkExRCwgMHgzNzJDLCAweDZBMUUsIDB4NkExRSwgMHgyMTNBLCAweDZBMUYsIDB4NkExRiwgMHgxMTYyLA0KKyAgICAweDZBMjAsIDB4NkEyMCwgMHgzNzMwLCAweDZBMjEsIDB4NkEyMSwgMHgwQjA2LCAweDZBMjIsIDB4NkEyMiwgMHgzNzMxLA0KKyAgICAweDZBMjMsIDB4NkEyMywgMHgyMjA0LCAweDZBMjQsIDB4NkEyNywgMHgzNzMyLCAweDZBMjgsIDB4NkEyOCwgMHgxOENDLA0KKyAgICAweDZBMjksIDB4NkEyOSwgMHgzNzM2LCAweDZBMkEsIDB4NkEyQSwgMHgwNzk4LCAweDZBMkIsIDB4NkEyRSwgMHgzNzM3LA0KKyAgICAweDZBMkYsIDB4NkEyRiwgMHgxOEJELCAweDZBMzAsIDB4NkEzMCwgMHgzNzNCLCAweDZBMzEsIDB4NkEzMSwgMHgxMDg4LA0KKyAgICAweDZBMzIsIDB4NkEzNCwgMHgzNzNDLCAweDZBMzUsIDB4NkEzNSwgMHgxOEM4LCAweDZBMzYsIDB4NkEzNywgMHgzNzNGLA0KKyAgICAweDZBMzgsIDB4NkEzOCwgMHgyMEMzLCAweDZBMzksIDB4NkEzOSwgMHgyMTQwLCAweDZBM0EsIDB4NkEzQSwgMHgyNDc3LA0KKyAgICAweDZBM0IsIDB4NkEzQywgMHgzNzQxLCAweDZBM0QsIDB4NkEzRCwgMHgxOENCLCAweDZBM0UsIDB4NkEzRSwgMHgxOEM0LA0KKyAgICAweDZBM0YsIDB4NkE0MywgMHgzNzQzLCAweDZBNDQsIDB4NkE0NCwgMHgxOEMzLCAweDZBNDUsIDB4NkE0NiwgMHgzNzQ4LA0KKyAgICAweDZBNDcsIDB4NkE0NywgMHgwQzNFLCAweDZBNDgsIDB4NkE0OCwgMHgyNDc0LCAweDZBNDksIDB4NkE0QSwgMHgzNzRBLA0KKyAgICAweDZBNEIsIDB4NkE0QiwgMHgyMERELCAweDZBNEMsIDB4NkE0RiwgMHgzNzRDLCAweDZBNTAsIDB4NkE1MCwgMHgxOEM2LA0KKyAgICAweDZBNTEsIDB4NkE1NywgMHgzNzUwLCAweDZBNTgsIDB4NkE1OCwgMHgxOENELCAweDZBNTksIDB4NkE1OSwgMHgwNEVELA0KKyAgICAweDZBNUEsIDB4NkE1QSwgMHgzNzU3LCAweDZBNUIsIDB4NkE1QiwgMHgxOEM3LCAweDZBNUMsIDB4NkE1RSwgMHgzNzU4LA0KKyAgICAweDZBNUYsIDB4NkE1RiwgMHgxRjY4LCAweDZBNjAsIDB4NkE2MCwgMHgzNzVCLCAweDZBNjEsIDB4NkE2MSwgMHgwRjVELA0KKyAgICAweDZBNjIsIDB4NkE2MiwgMHgyMTg1LCAweDZBNjMsIDB4NkE2NCwgMHgzNzVDLCAweDZBNjUsIDB4NkE2NSwgMHgxOEMxLA0KKyAgICAweDZBNjYsIDB4NkE3MCwgMHgzNzVFLCAweDZBNzEsIDB4NkE3MSwgMHgwNTFDLCAweDZBNzIsIDB4NkE3OCwgMHgzNzY5LA0KKyAgICAweDZBNzksIDB4NkE3OSwgMHgxOENBLCAweDZBN0EsIDB4NkE3QiwgMHgzNzcwLCAweDZBN0MsIDB4NkE3QywgMHgxOENFLA0KKyAgICAweDZBN0QsIDB4NkE3RiwgMHgzNzcyLCAweDZBODAsIDB4NkE4MCwgMHgwRTA3LCAweDZBODEsIDB4NkE4MywgMHgzNzc1LA0KKyAgICAweDZBODQsIDB4NkE4NCwgMHgwRjFBLCAweDZBODUsIDB4NkE4OCwgMHgzNzc4LCAweDZBODksIDB4NkE4OSwgMHgyNDcyLA0KKyAgICAweDZBOEEsIDB4NkE4RCwgMHgzNzdDLCAweDZBOEUsIDB4NkE4RSwgMHgxOEM5LCAweDZBOEYsIDB4NkE4RiwgMHgzNzgwLA0KKyAgICAweDZBOTAsIDB4NkE5MCwgMHgxOEQwLCAweDZBOTEsIDB4NkE5MSwgMHgxOENGLCAweDZBOTIsIDB4NkE5MywgMHgzNzgxLA0KKyAgICAweDZBOTQsIDB4NkE5NCwgMHgxRUI1LCAweDZBOTUsIDB4NkE5NiwgMHgzNzgzLCAweDZBOTcsIDB4NkE5NywgMHgxOEQyLA0KKyAgICAweDZBOTgsIDB4NkE5QiwgMHgzNzg1LCAweDZBOUMsIDB4NkE5QywgMHgyNDc4LCAweDZBOUQsIDB4NkE5RiwgMHgzNzg5LA0KKyAgICAweDZBQTAsIDB4NkFBMCwgMHgxOEM1LCAweDZBQTEsIDB4NkFBMSwgMHgzNzhDLCAweDZBQTIsIDB4NkFBMiwgMHgxRjhCLA0KKyAgICAweDZBQTMsIDB4NkFBMywgMHgyNDg0LCAweDZBQTQsIDB4NkFBOCwgMHgzNzhELCAweDZBQTksIDB4NkFBOSwgMHgxOEQxLA0KKyAgICAweDZBQUEsIDB4NkFBQSwgMHgzNzkyLCAweDZBQUIsIDB4NkFBQiwgMHgxOEQzLCAweDZBQUMsIDB4NkFBQywgMHgwQUNGLA0KKyAgICAweDZBQUQsIDB4NkFBRSwgMHgzNzkzLCAweDZBQUYsIDB4NkFBRiwgMHgyNjk5LCAweDZBQjAsIDB4NkFCMiwgMHgzNzk1LA0KKyAgICAweDZBQjMsIDB4NkFCMywgMHgyNDgyLCAweDZBQjQsIDB4NkFCNywgMHgzNzk4LCAweDZBQjgsIDB4NkFCOCwgMHgyMEExLA0KKyAgICAweDZBQjksIDB4NkFCQSwgMHgzNzlDLCAweDZBQkIsIDB4NkFCQiwgMHgxRjkyLCAweDZBQkMsIDB4NkFDMiwgMHgzNzlFLA0KKyAgICAweDZBQzMsIDB4NkFDMywgMHgxRjM4LCAweDZBQzQsIDB4NkFEMiwgMHgzN0E1LCAweDZBRDMsIDB4NkFEMywgMHgyNDg1LA0KKyAgICAweDZBRDQsIDB4NkFEOSwgMHgzN0I0LCAweDZBREEsIDB4NkFEQSwgMHgyNDgwLCAweDZBREIsIDB4NkFEQiwgMHgyNDZFLA0KKyAgICAweDZBREMsIDB4NkFEQywgMHgzN0JBLCAweDZBREQsIDB4NkFERCwgMHgyNDdCLCAweDZBREUsIDB4NkFERSwgMHgyNDg2LA0KKyAgICAweDZBREYsIDB4NkFERiwgMHgyNDcxLCAweDZBRTAsIDB4NkFFNiwgMHgzN0JCLCAweDZBRTcsIDB4NkFFNywgMHgyNDgzLA0KKyAgICAweDZBRTgsIDB4NkFFOCwgMHgyNDcwLCAweDZBRTksIDB4NkFFOSwgMHgzN0MyLCAweDZBRUEsIDB4NkFFQSwgMHgyNDY5LA0KKyAgICAweDZBRUIsIDB4NkFFQiwgMHgzN0MzLCAweDZBRUMsIDB4NkFFQywgMHgyNDdGLCAweDZBRUQsIDB4NkFGMiwgMHgzN0M0LA0KKyAgICAweDZBRjMsIDB4NkFGMywgMHgyNDZGLCAweDZBRjQsIDB4NkFGNywgMHgzN0NBLCAweDZBRjgsIDB4NkFGOCwgMHgyNDgxLA0KKyAgICAweDZBRjksIDB4NkFGQSwgMHgzN0NFLCAweDZBRkIsIDB4NkFGQiwgMHgyMjIwLCAweDZBRkMsIDB4NkFGRiwgMHgzN0QwLA0KKyAgICAweDZCMDAsIDB4NkIwMywgMHgzN0Q0LCAweDZCMDQsIDB4NkIwNCwgMHgxRkY1LCAweDZCMDUsIDB4NkIwOSwgMHgzN0Q4LA0KKyAgICAweDZCMEEsIDB4NkIwQSwgMHgyMEY0LCAweDZCMEIsIDB4NkIwRSwgMHgzN0RELCAweDZCMEYsIDB4NkIwRiwgMHgyNDdELA0KKyAgICAweDZCMTAsIDB4NkIxMSwgMHgzN0UxLCAweDZCMTIsIDB4NkIxMiwgMHgyNDc5LCAweDZCMTMsIDB4NkIxNSwgMHgzN0UzLA0KKyAgICAweDZCMTYsIDB4NkIxNiwgMHgyNDdFLCAweDZCMTcsIDB4NkIxRCwgMHgzN0U2LCAweDZCMUUsIDB4NkIxRSwgMHgyNDdBLA0KKyAgICAweDZCMUYsIDB4NkIxRiwgMHgzN0VELCAweDZCMjAsIDB4NkIyMCwgMHgwQzM0LCAweDZCMjEsIDB4NkIyMSwgMHgwNTUxLA0KKyAgICAweDZCMjIsIDB4NkIyMiwgMHgwN0NCLCAweDZCMjMsIDB4NkIyMywgMHgwRjhCLCAweDZCMjQsIDB4NkIyNCwgMHgxOUIxLA0KKyAgICAweDZCMjUsIDB4NkIyNiwgMHgzN0VFLCAweDZCMjcsIDB4NkIyNywgMHgwQjc4LCAweDZCMjgsIDB4NkIzMSwgMHgzN0YwLA0KKyAgICAweDZCMzIsIDB4NkIzMiwgMHgxMEUwLCAweDZCMzMsIDB4NkIzNiwgMHgzN0ZBLCAweDZCMzcsIDB4NkIzNywgMHgxOUIyLA0KKyAgICAweDZCMzgsIDB4NkIzOCwgMHgzN0ZFLCAweDZCMzksIDB4NkIzOSwgMHgxOUIzLCAweDZCM0EsIDB4NkIzQSwgMHgwQkZBLA0KKyAgICAweDZCM0IsIDB4NkIzQywgMHgzN0ZGLCAweDZCM0QsIDB4NkIzRCwgMHgyMEUzLCAweDZCM0UsIDB4NkIzRSwgMHgwOTdCLA0KKyAgICAweDZCM0YsIDB4NkI0MiwgMHgzODAxLCAweDZCNDMsIDB4NkI0MywgMHgxOUI0LCAweDZCNDQsIDB4NkI0NSwgMHgzODA1LA0KKyAgICAweDZCNDYsIDB4NkI0NiwgMHgxOUI1LCAweDZCNDcsIDB4NkI0NywgMHgwRjc1LCAweDZCNDgsIDB4NkI0OCwgMHgzODA3LA0KKyAgICAweDZCNDksIDB4NkI0OSwgMHgwQzM1LCAweDZCNEEsIDB4NkI0QiwgMHgzODA4LCAweDZCNEMsIDB4NkI0QywgMHgwNkUzLA0KKyAgICAweDZCNEQsIDB4NkI0RiwgMHgzODBBLCAweDZCNTAsIDB4NkI1MCwgMHgyMEFELCAweDZCNTEsIDB4NkI1OCwgMHgzODBELA0KKyAgICAweDZCNTksIDB4NkI1OSwgMHgxOUI2LCAweDZCNUEsIDB4NkI1RSwgMHgzODE1LCAweDZCNUYsIDB4NkI1RiwgMHgyNENCLA0KKyAgICAweDZCNjAsIDB4NkI2MCwgMHgzODFBLCAweDZCNjEsIDB4NkI2MSwgMHgxRjUzLCAweDZCNjIsIDB4NkI2MiwgMHgxMUI4LA0KKyAgICAweDZCNjMsIDB4NkI2MywgMHgxMTlFLCAweDZCNjQsIDB4NkI2NCwgMHgwNTRFLCAweDZCNjUsIDB4NkI2NSwgMHgwNDg0LA0KKyAgICAweDZCNjYsIDB4NkI2NiwgMHgwRUYzLCAweDZCNjcsIDB4NkI2NywgMHgwQzA2LCAweDZCNjgsIDB4NkI2OSwgMHgzODFCLA0KKyAgICAweDZCNkEsIDB4NkI2QSwgMHgwRTkyLCAweDZCNkIsIDB4NkI3MSwgMHgzODFELCAweDZCNzIsIDB4NkI3MiwgMHgyMTU5LA0KKyAgICAweDZCNzMsIDB4NkI3NiwgMHgzODI0LCAweDZCNzcsIDB4NkI3NywgMHgyMDEzLCAweDZCNzgsIDB4NkI3OCwgMHgxRjMzLA0KKyAgICAweDZCNzksIDB4NkI3OSwgMHgwNTc4LCAweDZCN0EsIDB4NkI3QSwgMHgzODI4LCAweDZCN0IsIDB4NkI3QiwgMHgwREI1LA0KKyAgICAweDZCN0MsIDB4NkI3QywgMHgwODUyLCAweDZCN0QsIDB4NkI4MCwgMHgzODI5LCAweDZCODEsIDB4NkI4MiwgMHgxOEQ2LA0KKyAgICAweDZCODMsIDB4NkI4MywgMHgxMDEzLCAweDZCODQsIDB4NkI4NCwgMHgxOEQ5LCAweDZCODUsIDB4NkI4NSwgMHgzODJELA0KKyAgICAweDZCODYsIDB4NkI4NiwgMHgwNTdDLCAweDZCODcsIDB4NkI4NywgMHgxOEQ4LCAweDZCODgsIDB4NkI4OCwgMHgzODJFLA0KKyAgICAweDZCODksIDB4NkI4OSwgMHgwRkRDLCAweDZCOEEsIDB4NkI4QSwgMHgwRDc5LCAweDZCOEIsIDB4NkI4QiwgMHgwNDk3LA0KKyAgICAweDZCOEMsIDB4NkI4QywgMHgzODJGLCAweDZCOEQsIDB4NkI4RCwgMHgxOERDLCAweDZCOEUsIDB4NkI5MSwgMHgzODMwLA0KKyAgICAweDZCOTIsIDB4NkI5MywgMHgxOERBLCAweDZCOTQsIDB4NkI5NSwgMHgzODM0LCAweDZCOTYsIDB4NkI5NiwgMHgxMUIyLA0KKyAgICAweDZCOTcsIDB4NkI5NywgMHgzODM2LCAweDZCOTgsIDB4NkI5OCwgMHgxRTVDLCAweDZCOTksIDB4NkI5OSwgMHgzODM3LA0KKyAgICAweDZCOUEsIDB4NkI5QiwgMHgxOERELCAweDZCOUMsIDB4NkI5RCwgMHgzODM4LCAweDZCOUUsIDB4NkI5RSwgMHgyNDg4LA0KKyAgICAweDZCOUYsIDB4NkJBMCwgMHgzODNBLCAweDZCQTEsIDB4NkJBMSwgMHgxOERGLCAweDZCQTIsIDB4NkJBMywgMHgzODNDLA0KKyAgICAweDZCQTQsIDB4NkJBNCwgMHgyNDg3LCAweDZCQTUsIDB4NkJBOSwgMHgzODNFLCAweDZCQUEsIDB4NkJBQSwgMHgxOEUwLA0KKyAgICAweDZCQUIsIDB4NkJBQiwgMHgyNDhBLCAweDZCQUMsIDB4NkJBRCwgMHgzODQzLCAweDZCQUUsIDB4NkJBRSwgMHgyNDg5LA0KKyAgICAweDZCQUYsIDB4NkJBRiwgMHgyNDhCLCAweDZCQjAsIDB4NkJCMSwgMHgzODQ1LCAweDZCQjIsIDB4NkJCMiwgMHgxRjgzLA0KKyAgICAweDZCQjMsIDB4NkJCMywgMHgxOUJELCAweDZCQjQsIDB4NkJCNCwgMHgwQjdBLCAweDZCQjUsIDB4NkJCNSwgMHgwNjBELA0KKyAgICAweDZCQjYsIDB4NkJCNiwgMHgzODQ3LCAweDZCQjcsIDB4NkJCNywgMHgxMDdBLCAweDZCQjgsIDB4NkJCOSwgMHgzODQ4LA0KKyAgICAweDZCQkEsIDB4NkJCQSwgMHgyMTBGLCAweDZCQkIsIDB4NkJCQiwgMHgxRkRCLCAweDZCQkMsIDB4NkJCRSwgMHgzODRBLA0KKyAgICAweDZCQkYsIDB4NkJCRiwgMHgwNUNGLCAweDZCQzAsIDB4NkJDMCwgMHgzODRELCAweDZCQzEsIDB4NkJDMSwgMHgwN0VFLA0KKyAgICAweDZCQzIsIDB4NkJDMiwgMHgxOUJGLCAweDZCQzMsIDB4NkJDNCwgMHgzODRFLCAweDZCQzUsIDB4NkJDNSwgMHgxMDZBLA0KKyAgICAweDZCQzYsIDB4NkJDNiwgMHgyMEFGLCAweDZCQzcsIDB4NkJDQSwgMHgzODUwLCAweDZCQ0IsIDB4NkJDQiwgMHgwRUYyLA0KKyAgICAweDZCQ0MsIDB4NkJDQywgMHgzODU0LCAweDZCQ0QsIDB4NkJDRCwgMHgwQjFCLCAweDZCQ0UsIDB4NkJDRSwgMHgzODU1LA0KKyAgICAweDZCQ0YsIDB4NkJDRiwgMHgwQUM0LCAweDZCRDAsIDB4NkJEMSwgMHgzODU2LCAweDZCRDIsIDB4NkJEMiwgMHgwNUZELA0KKyAgICAweDZCRDMsIDB4NkJEMywgMHgxMjZGLCAweDZCRDQsIDB4NkJENCwgMHgwNDMxLCAweDZCRDUsIDB4NkJENSwgMHgwNDM4LA0KKyAgICAweDZCRDYsIDB4NkJENiwgMHgwNDNBLCAweDZCRDcsIDB4NkJENywgMHgwQkJGLCAweDZCRDgsIDB4NkJEOCwgMHgzODU4LA0KKyAgICAweDZCRDksIDB4NkJEOSwgMHgwNDM5LCAweDZCREEsIDB4NkJEQSwgMHgzODU5LCAweDZCREIsIDB4NkJEQiwgMHgwQUIwLA0KKyAgICAweDZCREMsIDB4NkJFMCwgMHgzODVBLCAweDZCRTEsIDB4NkJFMSwgMHgxMTUyLCAweDZCRTIsIDB4NkJFOSwgMHgzODVGLA0KKyAgICAweDZCRUEsIDB4NkJFQSwgMHgxOTU0LCAweDZCRUIsIDB4NkJFQiwgMHgwNzc4LCAweDZCRUMsIDB4NkJFRSwgMHgzODY3LA0KKyAgICAweDZCRUYsIDB4NkJFRiwgMHgwRTBELCAweDZCRjAsIDB4NkJGMiwgMHgzODZBLCAweDZCRjMsIDB4NkJGMywgMHgxOTU1LA0KKyAgICAweDZCRjQsIDB4NkJGNCwgMHgzODZELCAweDZCRjUsIDB4NkJGNSwgMHgxOTU3LCAweDZCRjYsIDB4NkJGOCwgMHgzODZFLA0KKyAgICAweDZCRjksIDB4NkJGOSwgMHgxOTU4LCAweDZCRkEsIDB4NkJGQywgMHgzODcxLCAweDZCRkQsIDB4NkJGRCwgMHgxOTU2LA0KKyAgICAweDZCRkUsIDB4NkJGRSwgMHgzODc0LCAweDZCRkYsIDB4NkJGRiwgMHgyNEMwLCAweDZDMDAsIDB4NkMwNCwgMHgzODc1LA0KKyAgICAweDZDMDUsIDB4NkMwNSwgMHgxOTU5LCAweDZDMDYsIDB4NkMwNiwgMHgxOTVCLCAweDZDMDcsIDB4NkMwNywgMHgxOTVBLA0KKyAgICAweDZDMDgsIDB4NkMwOCwgMHgyMjZELCAweDZDMDksIDB4NkMwQiwgMHgzODdBLCAweDZDMEMsIDB4NkMwQywgMHgyNEMxLA0KKyAgICAweDZDMEQsIDB4NkMwRCwgMHgxOTVDLCAweDZDMEUsIDB4NkMwRSwgMHgzODdELCAweDZDMEYsIDB4NkMwRiwgMHgwRDY2LA0KKyAgICAweDZDMTAsIDB4NkMxMCwgMHgxMjZCLCAweDZDMTEsIDB4NkMxMSwgMHgwQUY2LCAweDZDMTIsIDB4NkMxMiwgMHgzODdFLA0KKyAgICAweDZDMTMsIDB4NkMxMywgMHgwQUFBLCAweDZDMTQsIDB4NkMxNCwgMHgwQzE3LCAweDZDMTUsIDB4NkMxNSwgMHgxOTVELA0KKyAgICAweDZDMTYsIDB4NkMxNiwgMHgwQjJELCAweDZDMTcsIDB4NkMxNywgMHgzODdGLCAweDZDMTgsIDB4NkMxQSwgMHgxOTVFLA0KKyAgICAweDZDMUIsIDB4NkMxQiwgMHgwNjcyLCAweDZDMUMsIDB4NkMxRSwgMHgzODgwLCAweDZDMUYsIDB4NkMxRiwgMHgwNjk3LA0KKyAgICAweDZDMjAsIDB4NkMyMCwgMHgzODgzLCAweDZDMjEsIDB4NkMyMSwgMHgxOTYxLCAweDZDMjIsIDB4NkMyMiwgMHgwQzVGLA0KKyAgICAweDZDMjMsIDB4NkMyMywgMHgyMENBLCAweDZDMjQsIDB4NkMyNCwgMHgxOTYzLCAweDZDMjUsIDB4NkMyNSwgMHgzODg0LA0KKyAgICAweDZDMjYsIDB4NkMyNiwgMHgwNzVCLCAweDZDMjcsIDB4NkMyNywgMHgxMDFFLCAweDZDMjgsIDB4NkMyOCwgMHgwM0JDLA0KKyAgICAweDZDMjksIDB4NkMyOSwgMHgxOTYyLCAweDZDMkEsIDB4NkMyQSwgMHgxOTY0LCAweDZDMkIsIDB4NkMyQiwgMHgyMEU3LA0KKyAgICAweDZDMkMsIDB4NkMyQywgMHgyNEMyLCAweDZDMkQsIDB4NkMyRCwgMHgzODg1LCAweDZDMkUsIDB4NkMyRSwgMHgwNThCLA0KKyAgICAweDZDMkYsIDB4NkMyRiwgMHgwQTZGLCAweDZDMzAsIDB4NkMzMCwgMHgwQzY1LCAweDZDMzEsIDB4NkMzMSwgMHgzODg2LA0KKyAgICAweDZDMzIsIDB4NkMzMiwgMHgxOTY1LCAweDZDMzMsIDB4NkMzMywgMHgzODg3LCAweDZDMzQsIDB4NkMzNCwgMHgwREEzLA0KKyAgICAweDZDMzUsIDB4NkMzNSwgMHgxNjlGLCAweDZDMzYsIDB4NkMzNywgMHgzODg4LCAweDZDMzgsIDB4NkMzOCwgMHgxMEE1LA0KKyAgICAweDZDMzksIDB4NkMzQywgMHgzODhBLCAweDZDM0QsIDB4NkMzRCwgMHgxMkVGLCAweDZDM0UsIDB4NkMzRiwgMHgzODhFLA0KKyAgICAweDZDNDAsIDB4NkM0MCwgMHgwRTUyLCAweDZDNDEsIDB4NkM0MSwgMHgxMUFDLCAweDZDNDIsIDB4NkM0MiwgMHgwQzcwLA0KKyAgICAweDZDNDMsIDB4NkM0NSwgMHgzODkwLCAweDZDNDYsIDB4NkM0NiwgMHgxMkY0LCAweDZDNDcsIDB4NkM0NywgMHgwN0Y4LA0KKyAgICAweDZDNDgsIDB4NkM0OCwgMHgzODkzLCAweDZDNDksIDB4NkM0OSwgMHgwNzcxLCAweDZDNEEsIDB4NkM0QSwgMHgxNkEyLA0KKyAgICAweDZDNEIsIDB4NkM0RiwgMHgzODk0LCAweDZDNTAsIDB4NkM1MCwgMHgwRjE4LCAweDZDNTEsIDB4NkM1MywgMHgzODk5LA0KKyAgICAweDZDNTQsIDB4NkM1NCwgMHgxNkEwLCAweDZDNTUsIDB4NkM1NSwgMHgwRDAwLCAweDZDNTYsIDB4NkM1NiwgMHgzODlDLA0KKyAgICAweDZDNTcsIDB4NkM1NywgMHgwNzcwLCAweDZDNTgsIDB4NkM1QSwgMHgzODlELCAweDZDNUIsIDB4NkM1QiwgMHgwRkRELA0KKyAgICAweDZDNUMsIDB4NkM1QywgMHgxNkExLCAweDZDNUQsIDB4NkM1RCwgMHgwQ0M1LCAweDZDNUUsIDB4NkM1RSwgMHgwNzA4LA0KKyAgICAweDZDNUYsIDB4NkM1RiwgMHgwODdFLCAweDZDNjAsIDB4NkM2MCwgMHgwNEZELCAweDZDNjEsIDB4NkM2MSwgMHgwRUVBLA0KKyAgICAweDZDNjIsIDB4NkM2MywgMHgzOEEwLCAweDZDNjQsIDB4NkM2NCwgMHgwRTEzLCAweDZDNjUsIDB4NkM2NywgMHgzOEEyLA0KKyAgICAweDZDNjgsIDB4NkM2OSwgMHgxNkE4LCAweDZDNkEsIDB4NkM2QSwgMHgwRUE1LCAweDZDNkIsIDB4NkM2RiwgMHgzOEE1LA0KKyAgICAweDZDNzAsIDB4NkM3MCwgMHgwRTAwLCAweDZDNzEsIDB4NkM3MSwgMHgzOEFBLCAweDZDNzIsIDB4NkM3MiwgMHgwODI2LA0KKyAgICAweDZDNzMsIDB4NkM3MywgMHgzOEFCLCAweDZDNzQsIDB4NkM3NCwgMHgxNkFBLCAweDZDNzUsIDB4NkM3NSwgMHgzOEFDLA0KKyAgICAweDZDNzYsIDB4NkM3NiwgMHgxNkFCLCAweDZDNzcsIDB4NkM3OCwgMHgzOEFELCAweDZDNzksIDB4NkM3OSwgMHgwRkE1LA0KKyAgICAweDZDN0EsIDB4NkM3QywgMHgzOEFGLCAweDZDN0QsIDB4NkM3RCwgMHgwQzFBLCAweDZDN0UsIDB4NkM3RSwgMHgwNjc3LA0KKyAgICAweDZDN0YsIDB4NkM4MCwgMHgzOEIyLCAweDZDODEsIDB4NkM4MSwgMHgwQzVDLCAweDZDODIsIDB4NkM4MiwgMHgxMDUxLA0KKyAgICAweDZDODMsIDB4NkM4MywgMHgwRUU1LCAweDZDODQsIDB4NkM4NCwgMHgzOEI0LCAweDZDODUsIDB4NkM4NSwgMHgxNkE0LA0KKyAgICAweDZDODYsIDB4NkM4NiwgMHgxNkFDLCAweDZDODcsIDB4NkM4NywgMHgzOEI1LCAweDZDODgsIDB4NkM4OCwgMHgwRDJCLA0KKyAgICAweDZDODksIDB4NkM4OSwgMHgwNEU2LCAweDZDOEEsIDB4NkM4QiwgMHgzOEI2LCAweDZDOEMsIDB4NkM4QywgMHgxNkE3LA0KKyAgICAweDZDOEQsIDB4NkM4RSwgMHgzOEI4LCAweDZDOEYsIDB4NkM4RiwgMHgwQzAyLCAweDZDOTAsIDB4NkM5MCwgMHgxNkE1LA0KKyAgICAweDZDOTEsIDB4NkM5MiwgMHgzOEJBLCAweDZDOTMsIDB4NkM5MywgMHgxQTFGLCAweDZDOTQsIDB4NkM5NCwgMHgxNkE2LA0KKyAgICAweDZDOTUsIDB4NkM5OCwgMHgzOEJDLCAweDZDOTksIDB4NkM5OSwgMHgwQ0VDLCAweDZDOUEsIDB4NkM5QSwgMHgzOEMwLA0KKyAgICAweDZDOUIsIDB4NkM5QiwgMHgwQkE3LCAweDZDOUMsIDB4NkM5RSwgMHgzOEMxLCAweDZDOUYsIDB4NkM5RiwgMHgwNzBFLA0KKyAgICAweDZDQTAsIDB4NkNBMCwgMHgzOEM0LCAweDZDQTEsIDB4NkNBMSwgMHgwQUMwLCAweDZDQTIsIDB4NkNBMiwgMHgzOEM1LA0KKyAgICAweDZDQTMsIDB4NkNBMywgMHgxNkEzLCAweDZDQTQsIDB4NkNBNCwgMHgwQjdFLCAweDZDQTUsIDB4NkNBNSwgMHgwOUVELA0KKyAgICAweDZDQTYsIDB4NkNBNiwgMHgwQTgwLCAweDZDQTcsIDB4NkNBNywgMHgwNDlFLCAweDZDQTgsIDB4NkNBOCwgMHgzOEM2LA0KKyAgICAweDZDQTksIDB4NkNBOSwgMHgxNkFELCAweDZDQUEsIDB4NkNBQSwgMHgwN0JCLCAweDZDQUIsIDB4NkNBQiwgMHgwQjEwLA0KKyAgICAweDZDQUMsIDB4NkNBQywgMHgzOEM3LCAweDZDQUQsIDB4NkNBRCwgMHgxNkIwLCAweDZDQUUsIDB4NkNBRSwgMHgwOTA5LA0KKyAgICAweDZDQUYsIDB4NkNCMCwgMHgzOEM4LCAweDZDQjEsIDB4NkNCMSwgMHgxNkJCLCAweDZDQjIsIDB4NkNCMiwgMHgxNkI1LA0KKyAgICAweDZDQjMsIDB4NkNCMywgMHgwNzhBLCAweDZDQjQsIDB4NkNCNywgMHgzOENBLCAweDZDQjgsIDB4NkNCOCwgMHgwNjZELA0KKyAgICAweDZDQjksIDB4NkNCOSwgMHgxMEIyLCAweDZDQkEsIDB4NkNCQSwgMHgzOENFLCAweDZDQkIsIDB4NkNCQiwgMHgxMUNELA0KKyAgICAweDZDQkMsIDB4NkNCQywgMHgxMTc0LCAweDZDQkQsIDB4NkNCRCwgMHgwNzFBLCAweDZDQkUsIDB4NkNCRSwgMHgxMTU1LA0KKyAgICAweDZDQkYsIDB4NkNCRiwgMHgxMDAxLCAweDZDQzAsIDB4NkNDMywgMHgzOENGLCAweDZDQzQsIDB4NkNDNCwgMHgwRjg0LA0KKyAgICAweDZDQzUsIDB4NkNDNSwgMHgwQzczLCAweDZDQzYsIDB4NkNDOCwgMHgzOEQzLCAweDZDQzksIDB4NkNDOSwgMHgwQzg1LA0KKyAgICAweDZDQ0EsIDB4NkNDQSwgMHgwNDdCLCAweDZDQ0IsIDB4NkNDQiwgMHgzOEQ2LCAweDZDQ0MsIDB4NkNDQywgMHgwQURGLA0KKyAgICAweDZDQ0QsIDB4NkNDRiwgMHgzOEQ3LCAweDZDRDAsIDB4NkNEMCwgMHgxNkFFLCAweDZDRDEsIDB4NkNEMiwgMHgzOERBLA0KKyAgICAweDZDRDMsIDB4NkNEMywgMHgxNkJDLCAweDZDRDQsIDB4NkNENCwgMHgxNkFGLCAweDZDRDUsIDB4NkNENSwgMHgwNjQ1LA0KKyAgICAweDZDRDYsIDB4NkNENiwgMHgxNkI3LCAweDZDRDcsIDB4NkNENywgMHgxNkI0LCAweDZDRDgsIDB4NkNEQSwgMHgzOERDLA0KKyAgICAweDZDREIsIDB4NkNEQiwgMHgwNjU3LCAweDZDREMsIDB4NkNERCwgMHgzOERGLCAweDZDREUsIDB4NkNERSwgMHgwQjYzLA0KKyAgICAweDZDREYsIDB4NkNERiwgMHgzOEUxLCAweDZDRTAsIDB4NkNFMCwgMHgxNkI2LCAweDZDRTEsIDB4NkNFMSwgMHgwQjlFLA0KKyAgICAweDZDRTIsIDB4NkNFMiwgMHgwNDZGLCAweDZDRTMsIDB4NkNFMywgMHgwQzFCLCAweDZDRTQsIDB4NkNFNCwgMHgzOEUyLA0KKyAgICAweDZDRTUsIDB4NkNFNSwgMHgwQjQzLCAweDZDRTYsIDB4NkNFNywgMHgzOEUzLCAweDZDRTgsIDB4NkNFOCwgMHgxMUZGLA0KKyAgICAweDZDRTksIDB4NkNFOSwgMHgzOEU1LCAweDZDRUEsIDB4NkNFQSwgMHgwOUNDLCAweDZDRUIsIDB4NkNFQiwgMHgxNkI5LA0KKyAgICAweDZDRUMsIDB4NkNFRCwgMHgzOEU2LCAweDZDRUUsIDB4NkNFRSwgMHgxNkJBLCAweDZDRUYsIDB4NkNFRiwgMHgxNkJELA0KKyAgICAweDZDRjAsIDB4NkNGMCwgMHgwREZDLCAweDZDRjEsIDB4NkNGMSwgMHgxNkIzLCAweDZDRjIsIDB4NkNGMiwgMHgzOEU4LA0KKyAgICAweDZDRjMsIDB4NkNGMywgMHgxMEEzLCAweDZDRjQsIDB4NkNGNCwgMHgzOEU5LCAweDZDRjUsIDB4NkNGNSwgMHgwNDJDLA0KKyAgICAweDZDRjYsIDB4NkNGNiwgMHgxQTIwLCAweDZDRjcsIDB4NkNGOCwgMHgxNkIxLCAweDZDRjksIDB4NkNGOSwgMHgzOEVBLA0KKyAgICAweDZDRkEsIDB4NkNGQSwgMHgxNkI4LCAweDZDRkIsIDB4NkNGQiwgMHgwRjg1LCAweDZDRkMsIDB4NkNGQywgMHgwQkUyLA0KKyAgICAweDZDRkQsIDB4NkNGRCwgMHgxMTM2LCAweDZDRkUsIDB4NkNGRSwgMHgxNkJFLCAweDZDRkYsIDB4NkNGRiwgMHgzOEVCLA0KKyAgICAweDZEMDAsIDB4NkQwMCwgMHgzOEVDLCAweDZEMDEsIDB4NkQwMSwgMHgwOEIxLCAweDZEMDIsIDB4NkQwMywgMHgzOEVELA0KKyAgICAweDZEMDQsIDB4NkQwNCwgMHgxNkM1LCAweDZEMDUsIDB4NkQwNiwgMHgzOEVGLCAweDZEMDcsIDB4NkQwNywgMHgxNkM0LA0KKyAgICAweDZEMDgsIDB4NkQwQSwgMHgzOEYxLCAweDZEMEIsIDB4NkQwQiwgMHgxMDFDLCAweDZEMEMsIDB4NkQwQywgMHgxNkMxLA0KKyAgICAweDZEMEQsIDB4NkQwRCwgMHgzOEY0LCAweDZEMEUsIDB4NkQwRSwgMHgxNkM3LCAweDZEMEYsIDB4NkQxMSwgMHgzOEY1LA0KKyAgICAweDZEMTIsIDB4NkQxMiwgMHgwQ0QyLCAweDZEMTMsIDB4NkQxNiwgMHgzOEY4LCAweDZEMTcsIDB4NkQxNywgMHgwRjIxLA0KKyAgICAweDZEMTgsIDB4NkQxOCwgMHgzOEZDLCAweDZEMTksIDB4NkQxOSwgMHgxNkM2LCAweDZEMUEsIDB4NkQxQSwgMHgxNkNDLA0KKyAgICAweDZEMUIsIDB4NkQxQiwgMHgwQThDLCAweDZEMUMsIDB4NkQxRCwgMHgzOEZELCAweDZEMUUsIDB4NkQxRSwgMHgwNUYzLA0KKyAgICAweDZEMUYsIDB4NkQyNCwgMHgzOEZGLCAweDZEMjUsIDB4NkQyNSwgMHgwOEMzLCAweDZEMjYsIDB4NkQyNiwgMHgzOTA1LA0KKyAgICAweDZEMjcsIDB4NkQyNywgMHgxNkMwLCAweDZEMjgsIDB4NkQyOSwgMHgzOTA2LCAweDZEMkEsIDB4NkQyQSwgMHgwN0EwLA0KKyAgICAweDZEMkIsIDB4NkQyQiwgMHgxNkM4LCAweDZEMkMsIDB4NkQyRCwgMHgzOTA4LCAweDZEMkUsIDB4NkQyRSwgMHgxNkNBLA0KKyAgICAweDZEMkYsIDB4NkQzMCwgMHgzOTBBLCAweDZEMzEsIDB4NkQzMSwgMHgwNjNDLCAweDZEMzIsIDB4NkQzMiwgMHgxMURELA0KKyAgICAweDZEMzMsIDB4NkQzMywgMHgxNkQwLCAweDZEMzQsIDB4NkQzNCwgMHgzOTBDLCAweDZEMzUsIDB4NkQzNSwgMHgxNkNCLA0KKyAgICAweDZEMzYsIDB4NkQzOCwgMHgzOTBELCAweDZEMzksIDB4NkQzOSwgMHgxNkJGLCAweDZEM0EsIDB4NkQzQSwgMHgzOTEwLA0KKyAgICAweDZEM0IsIDB4NkQzQiwgMHgwODAzLCAweDZEM0MsIDB4NkQzQywgMHgwRThFLCAweDZEM0QsIDB4NkQzRCwgMHgwQzFGLA0KKyAgICAweDZEM0UsIDB4NkQzRSwgMHgwQjhBLCAweDZEM0YsIDB4NkQ0MCwgMHgzOTExLCAweDZENDEsIDB4NkQ0MSwgMHgwQTQwLA0KKyAgICAweDZENDIsIDB4NkQ0MiwgMHgzOTEzLCAweDZENDMsIDB4NkQ0MywgMHgxNkMyLCAweDZENDQsIDB4NkQ0NCwgMHgzOTE0LA0KKyAgICAweDZENDUsIDB4NkQ0NSwgMHgwQzMwLCAweDZENDYsIDB4NkQ0NiwgMHgwODdELCAweDZENDcsIDB4NkQ0NywgMHgwODhFLA0KKyAgICAweDZENDgsIDB4NkQ0OCwgMHgxNkMzLCAweDZENDksIDB4NkQ0OSwgMHgzOTE1LCAweDZENEEsIDB4NkQ0QSwgMHgxMjI0LA0KKyAgICAweDZENEIsIDB4NkQ0QiwgMHgwNEE5LCAweDZENEMsIDB4NkQ0QywgMHgzOTE2LCAweDZENEQsIDB4NkQ0RCwgMHgxNkM5LA0KKyAgICAweDZENEUsIDB4NkQ0RSwgMHgwODM2LCAweDZENEYsIDB4NkQ0RiwgMHgxNkNELCAweDZENTAsIDB4NkQ1MCwgMHgzOTE3LA0KKyAgICAweDZENTEsIDB4NkQ1MSwgMHgwODAwLCAweDZENTIsIDB4NkQ1MiwgMHgxNkNFLCAweDZENTMsIDB4NkQ1MywgMHgwQjY5LA0KKyAgICAweDZENTQsIDB4NkQ1NCwgMHgxNkNGLCAweDZENTUsIDB4NkQ1OCwgMHgzOTE4LCAweDZENTksIDB4NkQ1OSwgMHgxMTg0LA0KKyAgICAweDZENUEsIDB4NkQ1QSwgMHgwOTMwLCAweDZENUIsIDB4NkQ1QiwgMHgzOTFDLCAweDZENUMsIDB4NkQ1QywgMHgxNkQ4LA0KKyAgICAweDZENUQsIDB4NkQ1RCwgMHgzOTFELCAweDZENUUsIDB4NkQ1RSwgMHgxNkQ1LCAweDZENUYsIDB4NkQ1RiwgMHgzOTFFLA0KKyAgICAweDZENjAsIDB4NkQ2MCwgMHgxNkQ5LCAweDZENjEsIDB4NkQ2MiwgMHgzOTFGLCAweDZENjMsIDB4NkQ2MywgMHgxNkRCLA0KKyAgICAweDZENjQsIDB4NkQ2NSwgMHgzOTIxLCAweDZENjYsIDB4NkQ2NiwgMHgwQkY1LCAweDZENjcsIDB4NkQ2OCwgMHgzOTIzLA0KKyAgICAweDZENjksIDB4NkQ2OSwgMHgwNzdELCAweDZENkEsIDB4NkQ2QSwgMHgwOUI2LCAweDZENkIsIDB4NkQ2RCwgMHgzOTI1LA0KKyAgICAweDZENkUsIDB4NkQ2RSwgMHgwNjlDLCAweDZENkYsIDB4NkQ2RiwgMHgxNkQyLCAweDZENzAsIDB4NkQ3MywgMHgzOTI4LA0KKyAgICAweDZENzQsIDB4NkQ3NCwgMHgxMEU0LCAweDZENzUsIDB4NkQ3NiwgMHgzOTJDLCAweDZENzcsIDB4NkQ3NywgMHgwNzVBLA0KKyAgICAweDZENzgsIDB4NkQ3OCwgMHgwOENGLCAweDZENzksIDB4NkQ3OSwgMHgyM0RDLCAweDZEN0EsIDB4NkQ3QiwgMHgzOTJFLA0KKyAgICAweDZEN0MsIDB4NkQ3QywgMHgxNkRBLCAweDZEN0QsIDB4NkQ4MSwgMHgzOTMwLCAweDZEODIsIDB4NkQ4MiwgMHgwRTcwLA0KKyAgICAweDZEODMsIDB4NkQ4NCwgMHgzOTM1LCAweDZEODUsIDB4NkQ4NSwgMHgwQjVDLCAweDZEODYsIDB4NkQ4NiwgMHgzOTM3LA0KKyAgICAweDZEODcsIDB4NkQ4NywgMHgyM0RCLCAweDZEODgsIDB4NkQ4OCwgMHgwRjY4LCAweDZEODksIDB4NkQ4OSwgMHgwRDFGLA0KKyAgICAweDZEOEEsIDB4NkQ4QiwgMHgzOTM4LCAweDZEOEMsIDB4NkQ4QywgMHgxMEE0LCAweDZEOEQsIDB4NkQ4RCwgMHgzOTNBLA0KKyAgICAweDZEOEUsIDB4NkQ4RSwgMHgwRjNFLCAweDZEOEYsIDB4NkQ5MCwgMHgzOTNCLCAweDZEOTEsIDB4NkQ5MSwgMHgxNkQxLA0KKyAgICAweDZEOTIsIDB4NkQ5MiwgMHgzOTNELCAweDZEOTMsIDB4NkQ5NCwgMHgxNkQ2LCAweDZEOTUsIDB4NkQ5NSwgMHgwRTNDLA0KKyAgICAweDZEOTYsIDB4NkQ5QSwgMHgzOTNFLCAweDZEOUIsIDB4NkQ5QiwgMHgwRTIxLCAweDZEOUMsIDB4NkQ5QywgMHgzOTQzLA0KKyAgICAweDZEOUQsIDB4NkQ5RCwgMHgwOUJGLCAweDZEOUUsIDB4NkQ5RSwgMHgxNkQzLCAweDZEOUYsIDB4NkQ5RiwgMHgwOUY5LA0KKyAgICAweDZEQTAsIDB4NkRBMCwgMHgxNkQ0LCAweDZEQTEsIDB4NkRBMSwgMHgwRURGLCAweDZEQTIsIDB4NkRBMiwgMHgzOTQ0LA0KKyAgICAweDZEQTMsIDB4NkRBMywgMHgwN0Q2LCAweDZEQTQsIDB4NkRBNCwgMHgwNUI0LCAweDZEQTUsIDB4NkRBNSwgMHgzOTQ1LA0KKyAgICAweDZEQTYsIDB4NkRBNiwgMHgwQ0NFLCAweDZEQTcsIDB4NkRBNywgMHgwODc4LCAweDZEQTgsIDB4NkRBOCwgMHgxMTY4LA0KKyAgICAweDZEQTksIDB4NkRBOSwgMHgwQ0U1LCAweDZEQUEsIDB4NkRBQSwgMHgwNjlELCAweDZEQUIsIDB4NkRBQiwgMHgxNkU4LA0KKyAgICAweDZEQUMsIDB4NkRBRCwgMHgzOTQ2LCAweDZEQUUsIDB4NkRBRSwgMHgxNkVBLCAweDZEQUYsIDB4NkRBRiwgMHgwRkVELA0KKyAgICAweDZEQjAsIDB4NkRCMSwgMHgzOTQ4LCAweDZEQjIsIDB4NkRCMiwgMHgxMDQxLCAweDZEQjMsIDB4NkRCNCwgMHgzOTRBLA0KKyAgICAweDZEQjUsIDB4NkRCNSwgMHgwNzY0LCAweDZEQjYsIDB4NkRCNywgMHgzOTRDLCAweDZEQjgsIDB4NkRCOCwgMHgwNzhCLA0KKyAgICAweDZEQjksIDB4NkRCRSwgMHgzOTRFLCAweDZEQkYsIDB4NkRCRiwgMHgxNkUxLCAweDZEQzAsIDB4NkRDMCwgMHgwNUNFLA0KKyAgICAweDZEQzEsIDB4NkRDMywgMHgzOTU0LCAweDZEQzQsIDB4NkRDNCwgMHgxMjJBLCAweDZEQzUsIDB4NkRDNSwgMHgxNkRFLA0KKyAgICAweDZEQzYsIDB4NkRDNiwgMHgwRjZBLCAweDZEQzcsIDB4NkRDNywgMHgxNkRELCAweDZEQzgsIDB4NkRDQSwgMHgzOTU3LA0KKyAgICAweDZEQ0IsIDB4NkRDQiwgMHgwQTI1LCAweDZEQ0MsIDB4NkRDQywgMHgwRTFELCAweDZEQ0QsIDB4NkREMCwgMHgzOTVBLA0KKyAgICAweDZERDEsIDB4NkREMSwgMHgwRDdFLCAweDZERDIsIDB4NkRENSwgMHgzOTVFLCAweDZERDYsIDB4NkRENiwgMHgwQjNBLA0KKyAgICAweDZERDcsIDB4NkRENywgMHgzOTYyLCAweDZERDgsIDB4NkREOCwgMHgwRTI3LCAweDZERDksIDB4NkREOSwgMHgxNkU2LA0KKyAgICAweDZEREEsIDB4NkREQywgMHgzOTYzLCAweDZEREQsIDB4NkRERCwgMHgxNkU1LCAweDZEREUsIDB4NkRERSwgMHgxNkRGLA0KKyAgICAweDZEREYsIDB4NkRERiwgMHgzOTY2LCAweDZERTAsIDB4NkRFMCwgMHgxNkUyLCAweDZERTEsIDB4NkRFMSwgMHgwNThFLA0KKyAgICAweDZERTIsIDB4NkRFMywgMHgzOTY3LCAweDZERTQsIDB4NkRFNCwgMHgxMEJFLCAweDZERTUsIDB4NkRFNSwgMHgzOTY5LA0KKyAgICAweDZERTYsIDB4NkRFNiwgMHgxNkU0LCAweDZERTcsIDB4NkRFOSwgMHgzOTZBLCAweDZERUEsIDB4NkRFQSwgMHgyMDVFLA0KKyAgICAweDZERUIsIDB4NkRFQiwgMHgxMDgwLCAweDZERUMsIDB4NkRFQywgMHgwNTY2LCAweDZERUQsIDB4NkRFRCwgMHgzOTZELA0KKyAgICAweDZERUUsIDB4NkRFRSwgMHgwN0M5LCAweDZERUYsIDB4NkRGMCwgMHgzOTZFLCAweDZERjEsIDB4NkRGMSwgMHgwRDI3LA0KKyAgICAweDZERjIsIDB4NkRGMiwgMHgzOTcwLCAweDZERjMsIDB4NkRGMywgMHgwNTQxLCAweDZERjQsIDB4NkRGNCwgMHgzOTcxLA0KKyAgICAweDZERjUsIDB4NkRGNSwgMHgyMjQ0LCAweDZERjYsIDB4NkRGNiwgMHgyM0UyLCAweDZERjcsIDB4NkRGNywgMHgwODAxLA0KKyAgICAweDZERjgsIDB4NkRGOCwgMHgzOTcyLCAweDZERjksIDB4NkRGOSwgMHgwRkY2LCAweDZERkEsIDB4NkRGQSwgMHgyMEQ0LA0KKyAgICAweDZERkIsIDB4NkRGQiwgMHgwRTQwLCAweDZERkMsIDB4NkRGQywgMHgxQTIxLCAweDZERkQsIDB4NkRGRiwgMHgzOTczLA0KKyAgICAweDZFMDAsIDB4NkUwNCwgMHgzOTc2LCAweDZFMDUsIDB4NkUwNSwgMHgwQzYyLCAweDZFMDYsIDB4NkUwOSwgMHgzOTdCLA0KKyAgICAweDZFMEEsIDB4NkUwQSwgMHgxMEVCLCAweDZFMEIsIDB4NkUwQiwgMHgzOTdGLCAweDZFMEMsIDB4NkUwQywgMHgxNkU5LA0KKyAgICAweDZFMEQsIDB4NkUwRCwgMHgxMjMyLCAweDZFMEUsIDB4NkUwRSwgMHgxNkUwLCAweDZFMEYsIDB4NkUwRiwgMHgzOTgwLA0KKyAgICAweDZFMTAsIDB4NkUxMCwgMHgwODc2LCAweDZFMTEsIDB4NkUxMSwgMHgxNkUzLCAweDZFMTIsIDB4NkUxMywgMHgzOTgxLA0KKyAgICAweDZFMTQsIDB4NkUxNCwgMHgxMENCLCAweDZFMTUsIDB4NkUxNSwgMHgzOTgzLCAweDZFMTYsIDB4NkUxNiwgMHgxNkU3LA0KKyAgICAweDZFMTcsIDB4NkUxNywgMHgwRDMxLCAweDZFMTgsIDB4NkUxOSwgMHgzOTg0LCAweDZFMUEsIDB4NkUxQSwgMHgxNkRDLA0KKyAgICAweDZFMUIsIDB4NkUxQywgMHgzOTg2LCAweDZFMUQsIDB4NkUxRCwgMHgxMENBLCAweDZFMUUsIDB4NkUxRiwgMHgzOTg4LA0KKyAgICAweDZFMjAsIDB4NkUyMCwgMHgwQzdCLCAweDZFMjEsIDB4NkUyMSwgMHgwNjA4LCAweDZFMjIsIDB4NkUyMiwgMHgzOThBLA0KKyAgICAweDZFMjMsIDB4NkUyMywgMHgxMTNGLCAweDZFMjQsIDB4NkUyNCwgMHgwNDdBLCAweDZFMjUsIDB4NkUyNSwgMHgxNkY1LA0KKyAgICAweDZFMjYsIDB4NkUyNiwgMHgyMTlGLCAweDZFMjcsIDB4NkUyOCwgMHgzOThCLCAweDZFMjksIDB4NkUyOSwgMHgwRUQxLA0KKyAgICAweDZFMkEsIDB4NkUyQSwgMHgzOThELCAweDZFMkIsIDB4NkUyQiwgMHgxNkVCLCAweDZFMkMsIDB4NkUyQywgMHgxRTY2LA0KKyAgICAweDZFMkQsIDB4NkUyRCwgMHgwRUNCLCAweDZFMkUsIDB4NkUyRSwgMHgzOThFLCAweDZFMkYsIDB4NkUyRiwgMHgwNkQ2LA0KKyAgICAweDZFMzAsIDB4NkUzMSwgMHgzOThGLCAweDZFMzIsIDB4NkUzMiwgMHgxNkY0LCAweDZFMzMsIDB4NkUzMywgMHgzOTkxLA0KKyAgICAweDZFMzQsIDB4NkUzNCwgMHgwOTU3LCAweDZFMzUsIDB4NkUzNywgMHgzOTkyLCAweDZFMzgsIDB4NkUzOCwgMHgxMEIzLA0KKyAgICAweDZFMzksIDB4NkUzOSwgMHgzOTk1LCAweDZFM0EsIDB4NkUzQSwgMHgwQUYxLCAweDZFM0IsIDB4NkUzRCwgMHgzOTk2LA0KKyAgICAweDZFM0UsIDB4NkUzRSwgMHgxRjYzLCAweDZFM0YsIDB4NkU0MiwgMHgzOTk5LCAweDZFNDMsIDB4NkU0MywgMHgwQjg5LA0KKyAgICAweDZFNDQsIDB4NkU0NCwgMHgxNkY2LCAweDZFNDUsIDB4NkU0QywgMHgzOTlELCAweDZFNEQsIDB4NkU0RCwgMHgwRTc1LA0KKyAgICAweDZFNEUsIDB4NkU0RSwgMHgxNkVELCAweDZFNEYsIDB4NkU1MiwgMHgzOUE1LCAweDZFNTMsIDB4NkU1NCwgMHgxNkYyLA0KKyAgICAweDZFNTUsIDB4NkU1NSwgMHgzOUE5LCAweDZFNTYsIDB4NkU1NiwgMHgwN0I1LCAweDZFNTcsIDB4NkU1NywgMHgzOUFBLA0KKyAgICAweDZFNTgsIDB4NkU1OCwgMHgwRjUzLCAweDZFNTksIDB4NkU1QSwgMHgzOUFCLCAweDZFNUIsIDB4NkU1QiwgMHgxMTYwLA0KKyAgICAweDZFNUMsIDB4NkU1RCwgMHgzOUFELCAweDZFNUUsIDB4NkU1RSwgMHgyM0RELCAweDZFNUYsIDB4NkU1RiwgMHgxNkYwLA0KKyAgICAweDZFNjAsIDB4NkU2QSwgMHgzOUFGLCAweDZFNkIsIDB4NkU2QiwgMHgxNkVFLCAweDZFNkMsIDB4NkU2RCwgMHgzOUJBLA0KKyAgICAweDZFNkUsIDB4NkU2RSwgMHgxNkVDLCAweDZFNkYsIDB4NkU2RiwgMHgyMTZCLCAweDZFNzAsIDB4NkU3RCwgMHgzOUJDLA0KKyAgICAweDZFN0UsIDB4NkU3RSwgMHgwRTk2LCAweDZFN0YsIDB4NkU3RiwgMHgwRDQxLCAweDZFODAsIDB4NkU4MiwgMHgzOUNBLA0KKyAgICAweDZFODMsIDB4NkU4MywgMHgwOThFLCAweDZFODQsIDB4NkU4NCwgMHgzOUNELCAweDZFODUsIDB4NkU4NSwgMHgwODc3LA0KKyAgICAweDZFODYsIDB4NkU4NiwgMHgxNkYxLCAweDZFODcsIDB4NkU4OCwgMHgzOUNFLCAweDZFODksIDB4NkU4OSwgMHgwNkMzLA0KKyAgICAweDZFOEEsIDB4NkU4RSwgMHgzOUQwLCAweDZFOEYsIDB4NkU4RiwgMHgxNzA1LCAweDZFOTAsIDB4NkU5MCwgMHgxMEY3LA0KKyAgICAweDZFOTEsIDB4NkU5NSwgMHgzOUQ1LCAweDZFOTYsIDB4NkU5NiwgMHgyMkI1LCAweDZFOTcsIDB4NkU5NywgMHgzOURBLA0KKyAgICAweDZFOTgsIDB4NkU5OCwgMHgxNkY5LCAweDZFOTksIDB4NkU5QiwgMHgzOURCLCAweDZFOUMsIDB4NkU5QywgMHgwQTM4LA0KKyAgICAweDZFOUQsIDB4NkU5RCwgMHgxRjI2LCAweDZFOUUsIDB4NkU5RSwgMHgzOURFLCAweDZFOUYsIDB4NkU5RiwgMHgxNzA3LA0KKyAgICAweDZFQTAsIDB4NkVBMSwgMHgzOURGLCAweDZFQTIsIDB4NkVBMiwgMHgxMDZFLCAweDZFQTMsIDB4NkVBNCwgMHgzOUUxLA0KKyAgICAweDZFQTUsIDB4NkVBNSwgMHgxNkZELCAweDZFQTYsIDB4NkVBNiwgMHgzOUUzLCAweDZFQTcsIDB4NkVBNywgMHgxNkZFLA0KKyAgICAweDZFQTgsIDB4NkVBOSwgMHgzOUU0LCAweDZFQUEsIDB4NkVBQSwgMHgwRjE3LCAweDZFQUIsIDB4NkVBRSwgMHgzOUU2LA0KKyAgICAweDZFQUYsIDB4NkVBRiwgMHgwREQyLCAweDZFQjAsIDB4NkVCMCwgMHgzOUVBLCAweDZFQjEsIDB4NkVCMSwgMHgxNkY4LA0KKyAgICAweDZFQjIsIDB4NkVCMiwgMHgxNkVGLCAweDZFQjMsIDB4NkVCMywgMHgzOUVCLCAweDZFQjQsIDB4NkVCNCwgMHgxNzAzLA0KKyAgICAweDZFQjUsIDB4NkVCNSwgMHgzOUVDLCAweDZFQjYsIDB4NkVCNiwgMHgwQ0I3LCAweDZFQjcsIDB4NkVCNywgMHgxNzAxLA0KKyAgICAweDZFQjgsIDB4NkVCOSwgMHgzOUVELCAweDZFQkEsIDB4NkVCQSwgMHgwQjRBLCAweDZFQkIsIDB4NkVCQiwgMHgxNzAwLA0KKyAgICAweDZFQkMsIDB4NkVCQywgMHgzOUVGLCAweDZFQkQsIDB4NkVCRCwgMHgxNkZGLCAweDZFQkUsIDB4NkVDMCwgMHgzOUYwLA0KKyAgICAweDZFQzEsIDB4NkVDMSwgMHgwNTIxLCAweDZFQzIsIDB4NkVDMiwgMHgxNzA2LCAweDZFQzMsIDB4NkVDMywgMHgzOUYzLA0KKyAgICAweDZFQzQsIDB4NkVDNCwgMHgxRTYzLCAweDZFQzUsIDB4NkVDNSwgMHgyMDg4LCAweDZFQzYsIDB4NkVDNiwgMHgzOUY0LA0KKyAgICAweDZFQzcsIDB4NkVDNywgMHgwNUMyLCAweDZFQzgsIDB4NkVDQSwgMHgzOUY1LCAweDZFQ0IsIDB4NkVDQiwgMHgxMjI5LA0KKyAgICAweDZFQ0MsIDB4NkVDQywgMHgxRUJELCAweDZFQ0QsIDB4NkVDRCwgMHgzOUY4LCAweDZFQ0UsIDB4NkVDRSwgMHgyMzQxLA0KKyAgICAweDZFQ0YsIDB4NkVDRiwgMHgxNzA0LCAweDZFRDAsIDB4NkVEMCwgMHgzOUY5LCAweDZFRDEsIDB4NkVEMSwgMHgwN0MxLA0KKyAgICAweDZFRDIsIDB4NkVEMiwgMHgzOUZBLCAweDZFRDMsIDB4NkVEMywgMHgxMjJGLCAweDZFRDQsIDB4NkVENCwgMHgwRTIyLA0KKyAgICAweDZFRDUsIDB4NkVENSwgMHgxOUE4LCAweDZFRDYsIDB4NkVENiwgMHgzOUZCLCAweDZFRDcsIDB4NkVENywgMHgxNzAyLA0KKyAgICAweDZFRDgsIDB4NkVEOSwgMHgzOUZDLCAweDZFREEsIDB4NkVEQSwgMHgwNzRGLCAweDZFREIsIDB4NkVERCwgMHgzOUZFLA0KKyAgICAweDZFREUsIDB4NkVERSwgMHgxMUNDLCAweDZFREYsIDB4NkVERiwgMHgxNkY3LCAweDZFRTAsIDB4NkVFMCwgMHgxNkZBLA0KKyAgICAweDZFRTEsIDB4NkVFMSwgMHgwQUExLCAweDZFRTIsIDB4NkVFMiwgMHgxNkZDLCAweDZFRTMsIDB4NkVFMywgMHgzQTAxLA0KKyAgICAweDZFRTQsIDB4NkVFNCwgMHgwQTcyLCAweDZFRTUsIDB4NkVFNSwgMHgwOUFGLCAweDZFRTYsIDB4NkVFNiwgMHgwQTc3LA0KKyAgICAweDZFRTcsIDB4NkVFNywgMHgzQTAyLCAweDZFRTgsIDB4NkVFOCwgMHgwNDVFLCAweDZFRTksIDB4NkVFOSwgMHgwRTA1LA0KKyAgICAweDZFRUEsIDB4NkVFQiwgMHgzQTAzLCAweDZFRUMsIDB4NkVFQywgMHgxRjRCLCAweDZFRUQsIDB4NkVFRSwgMHgzQTA1LA0KKyAgICAweDZFRUYsIDB4NkVFRiwgMHgyMjkyLCAweDZFRjAsIDB4NkVGMSwgMHgzQTA3LCAweDZFRjIsIDB4NkVGMiwgMHgyMTI0LA0KKyAgICAweDZFRjMsIDB4NkVGMywgMHgzQTA5LCAweDZFRjQsIDB4NkVGNCwgMHgwNUFGLCAweDZFRjUsIDB4NkVGNiwgMHgzQTBBLA0KKyAgICAweDZFRjcsIDB4NkVGNywgMHgyMDQ4LCAweDZFRjgsIDB4NkVGOCwgMHgyM0UwLCAweDZFRjksIDB4NkVGOSwgMHgxNzBELA0KKyAgICAweDZFRkEsIDB4NkVGRSwgMHgzQTBDLCAweDZFRkYsIDB4NkVGRiwgMHgyMDc3LCAweDZGMDAsIDB4NkYwMCwgMHgzQTExLA0KKyAgICAweDZGMDEsIDB4NkYwMSwgMHgyMjNBLCAweDZGMDIsIDB4NkYwMiwgMHgwQkNFLCAweDZGMDMsIDB4NkYwNSwgMHgzQTEyLA0KKyAgICAweDZGMDYsIDB4NkYwNiwgMHgwQzAwLCAweDZGMDcsIDB4NkYwOCwgMHgzQTE1LCAweDZGMDksIDB4NkYwOSwgMHgxNzEzLA0KKyAgICAweDZGMEEsIDB4NkYwRSwgMHgzQTE3LCAweDZGMEYsIDB4NkYwRiwgMHgwQTUwLCAweDZGMTAsIDB4NkYxMiwgMHgzQTFDLA0KKyAgICAweDZGMTMsIDB4NkYxMywgMHgwOUQ3LCAweDZGMTQsIDB4NkYxNCwgMHgxMDA2LCAweDZGMTUsIDB4NkYxNSwgMHgxNzBDLA0KKyAgICAweDZGMTYsIDB4NkYxOSwgMHgzQTFGLCAweDZGMUEsIDB4NkYxQSwgMHgyMEIxLCAweDZGMUIsIDB4NkYxRiwgMHgzQTIzLA0KKyAgICAweDZGMjAsIDB4NkYyMCwgMHgwQjExLCAweDZGMjEsIDB4NkYyMSwgMHgzQTI4LCAweDZGMjIsIDB4NkYyMiwgMHgxRjQxLA0KKyAgICAweDZGMjMsIDB4NkYyMywgMHgyMDFDLCAweDZGMjQsIDB4NkYyNCwgMHgxNzBCLCAweDZGMjUsIDB4NkYyOCwgMHgzQTI5LA0KKyAgICAweDZGMjksIDB4NkYyOSwgMHgxNzE0LCAweDZGMkEsIDB4NkYyQSwgMHgxNzEyLCAweDZGMkIsIDB4NkYyQiwgMHgwQUE1LA0KKyAgICAweDZGMkMsIDB4NkYyQywgMHgyMkI4LCAweDZGMkQsIDB4NkYyRCwgMHgxNkZCLCAweDZGMkUsIDB4NkYyRSwgMHgzQTJELA0KKyAgICAweDZGMkYsIDB4NkYyRiwgMHgxNzBFLCAweDZGMzAsIDB4NkYzMCwgMHgzQTJFLCAweDZGMzEsIDB4NkYzMSwgMHgwRDk1LA0KKyAgICAweDZGMzIsIDB4NkYzMiwgMHgyMjc2LCAweDZGMzMsIDB4NkYzMywgMHgxMTY1LCAweDZGMzQsIDB4NkYzNSwgMHgzQTJGLA0KKyAgICAweDZGMzYsIDB4NkYzNiwgMHgxNzBGLCAweDZGMzcsIDB4NkYzNywgMHgzQTMxLCAweDZGMzgsIDB4NkYzOCwgMHgxRjlCLA0KKyAgICAweDZGMzksIDB4NkYzRCwgMHgzQTMyLCAweDZGM0UsIDB4NkYzRSwgMHgxMDIzLCAweDZGM0YsIDB4NkYzRiwgMHgxRjlGLA0KKyAgICAweDZGNDAsIDB4NkY0MCwgMHgzQTM3LCAweDZGNDEsIDB4NkY0MSwgMHgyNUNBLCAweDZGNDIsIDB4NkY0NSwgMHgzQTM4LA0KKyAgICAweDZGNDYsIDB4NkY0NywgMHgxNzA5LCAweDZGNDgsIDB4NkY0QSwgMHgzQTNDLCAweDZGNEIsIDB4NkY0QiwgMHgxNzEwLA0KKyAgICAweDZGNEMsIDB4NkY0QywgMHgzQTNGLCAweDZGNEQsIDB4NkY0RCwgMHgwRUJBLCAweDZGNEUsIDB4NkY1MCwgMHgzQTQwLA0KKyAgICAweDZGNTEsIDB4NkY1MSwgMHgyMEJFLCAweDZGNTIsIDB4NkY1MywgMHgzQTQzLCAweDZGNTQsIDB4NkY1NCwgMHgxRkI0LA0KKyAgICAweDZGNTUsIDB4NkY1NywgMHgzQTQ1LCAweDZGNTgsIDB4NkY1OCwgMHgwQjhDLCAweDZGNTksIDB4NkY1OSwgMHgyM0Q3LA0KKyAgICAweDZGNUEsIDB4NkY1QiwgMHgzQTQ4LCAweDZGNUMsIDB4NkY1QywgMHgwQzJFLCAweDZGNUQsIDB4NkY1RCwgMHgzQTRBLA0KKyAgICAweDZGNUUsIDB4NkY1RSwgMHgwQTYxLCAweDZGNUYsIDB4NkY2MSwgMHgzQTRCLCAweDZGNjIsIDB4NkY2MiwgMHgxNzA4LA0KKyAgICAweDZGNjMsIDB4NkY2MywgMHgzQTRFLCAweDZGNjQsIDB4NkY2NCwgMHgyMTA1LCAweDZGNjUsIDB4NkY2NSwgMHgzQTRGLA0KKyAgICAweDZGNjYsIDB4NkY2NiwgMHgwQTEzLCAweDZGNjcsIDB4NkY2QywgMHgzQTUwLCAweDZGNkQsIDB4NkY2RCwgMHgwRTA5LA0KKyAgICAweDZGNkUsIDB4NkY2RSwgMHgwNEQ2LCAweDZGNkYsIDB4NkY2RiwgMHgyM0UxLCAweDZGNzAsIDB4NkY3MCwgMHgxRkVDLA0KKyAgICAweDZGNzEsIDB4NkY3MSwgMHgzQTU2LCAweDZGNzIsIDB4NkY3MiwgMHgxNzE5LCAweDZGNzMsIDB4NkY3MywgMHgzQTU3LA0KKyAgICAweDZGNzQsIDB4NkY3NCwgMHgxNzExLCAweDZGNzUsIDB4NkY3NiwgMHgzQTU4LCAweDZGNzcsIDB4NkY3NywgMHgyM0VBLA0KKyAgICAweDZGNzgsIDB4NkY3OCwgMHgxNzE4LCAweDZGNzksIDB4NkY3OSwgMHgzQTVBLCAweDZGN0EsIDB4NkY3QSwgMHgxNzFCLA0KKyAgICAweDZGN0IsIDB4NkY3QiwgMHgzQTVCLCAweDZGN0MsIDB4NkY3QywgMHgxNzFBLCAweDZGN0QsIDB4NkY3RSwgMHgzQTVDLA0KKyAgICAweDZGN0YsIDB4NkY3RiwgMHgyM0UzLCAweDZGODAsIDB4NkY4MCwgMHgyMTBFLCAweDZGODEsIDB4NkY4MywgMHgzQTVFLA0KKyAgICAweDZGODQsIDB4NkY4NCwgMHgwNEYzLCAweDZGODUsIDB4NkY4NSwgMHgzQTYxLCAweDZGODYsIDB4NkY4NiwgMHgxRkE2LA0KKyAgICAweDZGODcsIDB4NkY4NywgMHgyMDA0LCAweDZGODgsIDB4NkY4OCwgMHgwNERGLCAweDZGODksIDB4NkY4OSwgMHgxNzE1LA0KKyAgICAweDZGOEEsIDB4NkY4QiwgMHgzQTYyLCAweDZGOEMsIDB4NkY4QywgMHgxNzE3LCAweDZGOEQsIDB4NkY4RCwgMHgxNzE2LA0KKyAgICAweDZGOEUsIDB4NkY4RSwgMHgwQkFELCAweDZGOEYsIDB4NkY5NiwgMHgzQTY0LCAweDZGOTcsIDB4NkY5NywgMHgxRjlELA0KKyAgICAweDZGOTgsIDB4NkY5QiwgMHgzQTZDLCAweDZGOUMsIDB4NkY5QywgMHgwOUE4LCAweDZGOUQsIDB4NkY5RiwgMHgzQTcwLA0KKyAgICAweDZGQTAsIDB4NkZBMCwgMHgyM0U1LCAweDZGQTEsIDB4NkZBMSwgMHgxMTJCLCAweDZGQTIsIDB4NkZBMywgMHgzQTczLA0KKyAgICAweDZGQTQsIDB4NkZBNCwgMHgyMjY0LCAweDZGQTUsIDB4NkZBNiwgMHgzQTc1LCAweDZGQTcsIDB4NkZBNywgMHgxNzFFLA0KKyAgICAweDZGQTgsIDB4NkZBOCwgMHgzQTc3LCAweDZGQTksIDB4NkZBOSwgMHgyNEUyLCAweDZGQUEsIDB4NkZBRCwgMHgzQTc4LA0KKyAgICAweDZGQUUsIDB4NkZBRSwgMHgyM0RFLCAweDZGQUYsIDB4NkZCMCwgMHgzQTdDLCAweDZGQjEsIDB4NkZCMSwgMHgxRUM0LA0KKyAgICAweDZGQjIsIDB4NkZCMiwgMHgzQTdFLCAweDZGQjMsIDB4NkZCMywgMHgwM0NGLCAweDZGQjQsIDB4NkZCNSwgMHgzQTdGLA0KKyAgICAweDZGQjYsIDB4NkZCNiwgMHgxNzIwLCAweDZGQjcsIDB4NkZCOCwgMHgzQTgxLCAweDZGQjksIDB4NkZCOSwgMHgxNzFGLA0KKyAgICAweDZGQkEsIDB4NkZCRiwgMHgzQTgzLCAweDZGQzAsIDB4NkZDMCwgMHgwODE3LCAweDZGQzEsIDB4NkZDMSwgMHgyMkI2LA0KKyAgICAweDZGQzIsIDB4NkZDMiwgMHgxNzIxLCAweDZGQzMsIDB4NkZDMywgMHgyMEE5LCAweDZGQzQsIDB4NkZDOCwgMHgzQTg5LA0KKyAgICAweDZGQzksIDB4NkZDOSwgMHgxNzFELCAweDZGQ0EsIDB4NkZEMCwgMHgzQThFLCAweDZGRDEsIDB4NkZEMSwgMHgxNzFDLA0KKyAgICAweDZGRDIsIDB4NkZEMiwgMHgwNDVELCAweDZGRDMsIDB4NkZENCwgMHgzQTk1LCAweDZGRDUsIDB4NkZENSwgMHgyMTJCLA0KKyAgICAweDZGRDYsIDB4NkZENywgMHgzQTk3LCAweDZGRDgsIDB4NkZEOCwgMHgyMEE1LCAweDZGRDksIDB4NkZEQSwgMHgzQTk5LA0KKyAgICAweDZGREIsIDB4NkZEQiwgMHgyNjhCLCAweDZGREMsIDB4NkZERCwgMHgzQTlCLCAweDZGREUsIDB4NkZERSwgMHgxNzI0LA0KKyAgICAweDZGREYsIDB4NkZERiwgMHgxRjc2LCAweDZGRTAsIDB4NkZFMCwgMHgxNzI1LCAweDZGRTEsIDB4NkZFMSwgMHgxNzIyLA0KKyAgICAweDZGRTIsIDB4NkZFMywgMHgzQTlELCAweDZGRTQsIDB4NkZFNCwgMHgyMTZELCAweDZGRTUsIDB4NkZFQSwgMHgzQTlGLA0KKyAgICAweDZGRUIsIDB4NkZFQiwgMHgyMDAxLCAweDZGRUMsIDB4NkZFRCwgMHgzQUE1LCAweDZGRUUsIDB4NkZFRSwgMHgxNzIzLA0KKyAgICAweDZGRUYsIDB4NkZFRiwgMHgxNzI2LCAweDZGRjAsIDB4NkZGMCwgMHgyMTkxLCAweDZGRjEsIDB4NkZGMSwgMHgxRTUwLA0KKyAgICAweDZGRjIsIDB4NkZGOSwgMHgzQUE3LCAweDZGRkEsIDB4NkZGQSwgMHgxRjlDLCAweDZGRkIsIDB4NkZGQiwgMHgzQUFGLA0KKyAgICAweDZGRkMsIDB4NkZGQywgMHgyM0RBLCAweDZGRkQsIDB4NkZGRCwgMHgzQUIwLCAweDZGRkUsIDB4NkZGRSwgMHgyMDUzLA0KKyAgICAweDZGRkYsIDB4NkZGRiwgMHgzQUIxLCAweDcwMDAsIDB4NzAwNCwgMHgzQUIyLCAweDcwMDUsIDB4NzAwNSwgMHgyM0U5LA0KKyAgICAweDcwMDYsIDB4NzAwNiwgMHgyM0U0LCAweDcwMDcsIDB4NzAwOCwgMHgzQUI3LCAweDcwMDksIDB4NzAwOSwgMHgyMUQ1LA0KKyAgICAweDcwMEEsIDB4NzAwQSwgMHgzQUI5LCAweDcwMEIsIDB4NzAwQiwgMHgyM0U2LCAweDcwMEMsIDB4NzAwRSwgMHgzQUJBLA0KKyAgICAweDcwMEYsIDB4NzAwRiwgMHgyM0RGLCAweDcwMTAsIDB4NzAxMCwgMHgzQUJELCAweDcwMTEsIDB4NzAxMSwgMHgwQkY4LA0KKyAgICAweDcwMTIsIDB4NzAxNCwgMHgzQUJFLCAweDcwMTUsIDB4NzAxNSwgMHgxRTRGLCAweDcwMTYsIDB4NzAxNywgMHgzQUMxLA0KKyAgICAweDcwMTgsIDB4NzAxOCwgMHgyM0Q5LCAweDcwMTksIDB4NzAxOSwgMHgzQUMzLCAweDcwMUEsIDB4NzAxQSwgMHgxNzI3LA0KKyAgICAweDcwMUIsIDB4NzAxQiwgMHgxNzI5LCAweDcwMUMsIDB4NzAxQywgMHgzQUM0LCAweDcwMUQsIDB4NzAxRCwgMHgyMDE0LA0KKyAgICAweDcwMUUsIDB4NzAxRSwgMHgzQUM1LCAweDcwMUYsIDB4NzAxRiwgMHgyM0VDLCAweDcwMjAsIDB4NzAyMCwgMHgyM0VCLA0KKyAgICAweDcwMjEsIDB4NzAyMiwgMHgzQUM2LCAweDcwMjMsIDB4NzAyMywgMHgxNzI4LCAweDcwMjQsIDB4NzAyNiwgMHgzQUM4LA0KKyAgICAweDcwMjcsIDB4NzAyNywgMHgyM0Q4LCAweDcwMjgsIDB4NzAyOCwgMHgyM0VFLCAweDcwMjksIDB4NzAyRiwgMHgzQUNCLA0KKyAgICAweDcwMzAsIDB4NzAzMCwgMHgyNjhFLCAweDcwMzEsIDB4NzAzMSwgMHgzQUQyLCAweDcwMzIsIDB4NzAzMiwgMHgyM0VELA0KKyAgICAweDcwMzMsIDB4NzAzNCwgMHgzQUQzLCAweDcwMzUsIDB4NzAzNSwgMHgxNzJCLCAweDcwMzYsIDB4NzAzOCwgMHgzQUQ1LA0KKyAgICAweDcwMzksIDB4NzAzOSwgMHgxNzJBLCAweDcwM0EsIDB4NzAzRCwgMHgzQUQ4LCAweDcwM0UsIDB4NzAzRSwgMHgxRkZBLA0KKyAgICAweDcwM0YsIDB4NzA0MiwgMHgzQURDLCAweDcwNDMsIDB4NzA0MywgMHgyM0Q2LCAweDcwNDQsIDB4NzA0NCwgMHgyM0U4LA0KKyAgICAweDcwNDUsIDB4NzA0QiwgMHgzQUUwLCAweDcwNEMsIDB4NzA0QywgMHgwNzM5LCAweDcwNEQsIDB4NzA0RSwgMHgzQUU3LA0KKyAgICAweDcwNEYsIDB4NzA0RiwgMHgxNzJDLCAweDcwNTAsIDB4NzA1MCwgMHgzQUU5LCAweDcwNTEsIDB4NzA1MSwgMHgyMTA2LA0KKyAgICAweDcwNTIsIDB4NzA1NCwgMHgzQUVBLCAweDcwNTUsIDB4NzA1NSwgMHgyMDBCLCAweDcwNTYsIDB4NzA1NywgMHgzQUVELA0KKyAgICAweDcwNTgsIDB4NzA1OCwgMHgyMTY2LCAweDcwNTksIDB4NzA1QywgMHgzQUVGLCAweDcwNUQsIDB4NzA1RCwgMHgyM0VGLA0KKyAgICAweDcwNUUsIDB4NzA1RSwgMHgxNzJELCAweDcwNUYsIDB4NzA2MiwgMHgzQUYzLCAweDcwNjMsIDB4NzA2MywgMHgyMTg5LA0KKyAgICAweDcwNjQsIDB4NzA2NCwgMHgyMDU4LCAweDcwNjUsIDB4NzA2NiwgMHgzQUY3LCAweDcwNjcsIDB4NzA2NywgMHgyM0U3LA0KKyAgICAweDcwNjgsIDB4NzA2QSwgMHgzQUY5LCAweDcwNkIsIDB4NzA2QiwgMHgwODA1LCAweDcwNkMsIDB4NzA2QywgMHgxOUVGLA0KKyAgICAweDcwNkQsIDB4NzA2RCwgMHgwQUY1LCAweDcwNkUsIDB4NzA2RSwgMHgzQUZDLCAweDcwNkYsIDB4NzA2RiwgMHgwNUE3LA0KKyAgICAweDcwNzAsIDB4NzA3MCwgMHgwN0U3LCAweDcwNzEsIDB4NzA3NCwgMHgzQUZELCAweDcwNzUsIDB4NzA3NSwgMHgwQTMyLA0KKyAgICAweDcwNzYsIDB4NzA3NiwgMHgxMTMxLCAweDcwNzcsIDB4NzA3NywgMHgzQjAxLCAweDcwNzgsIDB4NzA3OCwgMHgwOEYzLA0KKyAgICAweDcwNzksIDB4NzA3QiwgMHgzQjAyLCAweDcwN0MsIDB4NzA3QywgMHgxMjIzLCAweDcwN0QsIDB4NzA3RCwgMHgzQjA1LA0KKyAgICAweDcwN0UsIDB4NzA3RSwgMHgxMTE5LCAweDcwN0YsIDB4NzA3RiwgMHgwNDlBLCAweDcwODAsIDB4NzA4MCwgMHgxOUNDLA0KKyAgICAweDcwODEsIDB4NzA4NCwgMHgzQjA2LCAweDcwODUsIDB4NzA4NSwgMHgxOTEzLCAweDcwODYsIDB4NzA4OCwgMHgzQjBBLA0KKyAgICAweDcwODksIDB4NzA4OSwgMHgwQTU2LCAweDcwOEEsIDB4NzA4QSwgMHgwNTM5LCAweDcwOEIsIDB4NzA4RCwgMHgzQjBELA0KKyAgICAweDcwOEUsIDB4NzA4RSwgMHgxMDAwLCAweDcwOEYsIDB4NzA5MSwgMHgzQjEwLCAweDcwOTIsIDB4NzA5MiwgMHgwNEQ5LA0KKyAgICAweDcwOTMsIDB4NzA5MywgMHgzQjEzLCAweDcwOTQsIDB4NzA5NCwgMHgwQzhELCAweDcwOTUsIDB4NzA5NSwgMHgwOTQ4LA0KKyAgICAweDcwOTYsIDB4NzA5NiwgMHgxOUNFLCAweDcwOTcsIDB4NzA5OCwgMHgzQjE0LCAweDcwOTksIDB4NzA5OSwgMHgxMUNBLA0KKyAgICAweDcwOUEsIDB4NzA5QiwgMHgzQjE2LCAweDcwOUMsIDB4NzA5QywgMHgxOUNELCAweDcwOUQsIDB4NzA5RCwgMHgxOUNGLA0KKyAgICAweDcwOUUsIDB4NzBBQSwgMHgzQjE4LCAweDcwQUIsIDB4NzBBQiwgMHgxOUQzLCAweDcwQUMsIDB4NzBBQywgMHgwOTE1LA0KKyAgICAweDcwQUQsIDB4NzBBRCwgMHgwRTEyLCAweDcwQUUsIDB4NzBBRSwgMHgwQjlCLCAweDcwQUYsIDB4NzBBRiwgMHgwOEVCLA0KKyAgICAweDcwQjAsIDB4NzBCMCwgMHgzQjI1LCAweDcwQjEsIDB4NzBCMSwgMHgxOUQ0LCAweDcwQjIsIDB4NzBCMiwgMHgzQjI2LA0KKyAgICAweDcwQjMsIDB4NzBCMywgMHgwNDY3LCAweDcwQjQsIDB4NzBCNiwgMHgzQjI3LCAweDcwQjcsIDB4NzBCNywgMHgxOUQyLA0KKyAgICAweDcwQjgsIDB4NzBCOCwgMHgxMTQ5LCAweDcwQjksIDB4NzBCOSwgMHgwNUM0LCAweDcwQkEsIDB4NzBCQSwgMHgzQjJBLA0KKyAgICAweDcwQkIsIDB4NzBCQiwgMHgxOUQwLCAweDcwQkMsIDB4NzBCQywgMHgwOUZGLCAweDcwQkQsIDB4NzBCRCwgMHgwNTA4LA0KKyAgICAweDcwQkUsIDB4NzBCRiwgMHgzQjJCLCAweDcwQzAsIDB4NzBDMCwgMHgxOUQxLCAweDcwQzEsIDB4NzBDMSwgMHgwREFELA0KKyAgICAweDcwQzIsIDB4NzBDMiwgMHgwOUFFLCAweDcwQzMsIDB4NzBDMywgMHgwRTUxLCAweDcwQzQsIDB4NzBDNywgMHgzQjJELA0KKyAgICAweDcwQzgsIDB4NzBDOCwgMHgwQTFCLCAweDcwQzksIDB4NzBDOSwgMHgzQjMxLCAweDcwQ0EsIDB4NzBDQSwgMHgxOUQ2LA0KKyAgICAweDcwQ0IsIDB4NzBDRSwgMHgzQjMyLCAweDcwQ0YsIDB4NzBDRiwgMHgyMUEzLCAweDcwRDAsIDB4NzBENywgMHgzQjM2LA0KKyAgICAweDcwRDgsIDB4NzBEOCwgMHgwNzlELCAweDcwRDksIDB4NzBEOSwgMHgwOUJFLCAweDcwREEsIDB4NzBEQSwgMHgzQjNFLA0KKyAgICAweDcwREIsIDB4NzBEQiwgMHgxMUYxLCAweDcwREMsIDB4NzBERSwgMHgzQjNGLCAweDcwREYsIDB4NzBERiwgMHgwRkY1LA0KKyAgICAweDcwRTAsIDB4NzBFMywgMHgzQjQyLCAweDcwRTQsIDB4NzBFNCwgMHgwOTRCLCAweDcwRTUsIDB4NzBFNSwgMHgzQjQ2LA0KKyAgICAweDcwRTYsIDB4NzBFNiwgMHgwNjUwLCAweDcwRTcsIDB4NzBFNywgMHgwRDBFLCAweDcwRTgsIDB4NzBFOCwgMHgxOUQ1LA0KKyAgICAweDcwRTksIDB4NzBFOSwgMHgwN0Y3LCAweDcwRUEsIDB4NzBFQSwgMHgzQjQ3LCAweDcwRUIsIDB4NzBFQiwgMHgwRTFGLA0KKyAgICAweDcwRUMsIDB4NzBFQywgMHgwOENFLCAweDcwRUQsIDB4NzBFRCwgMHgwQ0EzLCAweDcwRUUsIDB4NzBFRSwgMHgzQjQ4LA0KKyAgICAweDcwRUYsIDB4NzBFRiwgMHgwRjE2LCAweDcwRjAsIDB4NzBGMywgMHgzQjQ5LCAweDcwRjQsIDB4NzBGNCwgMHgyMTdBLA0KKyAgICAweDcwRjUsIDB4NzBGNiwgMHgzQjRELCAweDcwRjcsIDB4NzBGNywgMHgwRTlBLCAweDcwRjgsIDB4NzBGOCwgMHgzQjRGLA0KKyAgICAweDcwRjksIDB4NzBGOSwgMHgwQkFDLCAweDcwRkEsIDB4NzBGQywgMHgzQjUwLCAweDcwRkQsIDB4NzBGRCwgMHgwNjg2LA0KKyAgICAweDcwRkUsIDB4NzBGRiwgMHgzQjUzLCAweDcxMDAsIDB4NzEwOCwgMHgzQjU1LCAweDcxMDksIDB4NzEwOSwgMHgwRkYyLA0KKyAgICAweDcxMEEsIDB4NzEwQSwgMHgwNzZGLCAweDcxMEIsIDB4NzEwRiwgMHgzQjVFLCAweDcxMTAsIDB4NzExMCwgMHgxOUQ3LA0KKyAgICAweDcxMTEsIDB4NzExMiwgMHgzQjYzLCAweDcxMTMsIDB4NzExMywgMHgxOUQ4LCAweDcxMTQsIDB4NzExNCwgMHgzQjY1LA0KKyAgICAweDcxMTUsIDB4NzExNSwgMHgwN0Q1LCAweDcxMTYsIDB4NzExNiwgMHgxOUQ5LCAweDcxMTcsIDB4NzExNywgMHgzQjY2LA0KKyAgICAweDcxMTgsIDB4NzExOCwgMHgxOUYwLCAweDcxMTksIDB4NzExOSwgMHgwNDIzLCAweDcxMUEsIDB4NzExQSwgMHgwNjc2LA0KKyAgICAweDcxMUIsIDB4NzEyMCwgMHgzQjY3LCAweDcxMjEsIDB4NzEyMSwgMHgyMUE1LCAweDcxMjIsIDB4NzEyNSwgMHgzQjZELA0KKyAgICAweDcxMjYsIDB4NzEyNiwgMHgwODhBLCAweDcxMjcsIDB4NzEyRSwgMHgzQjcxLCAweDcxMkYsIDB4NzEyRiwgMHgxOURBLA0KKyAgICAweDcxMzAsIDB4NzEzMCwgMHgxMDBGLCAweDcxMzEsIDB4NzEzMSwgMHgxOURCLCAweDcxMzIsIDB4NzEzNSwgMHgzQjc5LA0KKyAgICAweDcxMzYsIDB4NzEzNiwgMHgwQzk2LCAweDcxMzcsIDB4NzE0NCwgMHgzQjdELCAweDcxNDUsIDB4NzE0NSwgMHgxOURGLA0KKyAgICAweDcxNDYsIDB4NzE0OCwgMHgzQjhCLCAweDcxNDksIDB4NzE0OSwgMHgyMDIyLCAweDcxNEEsIDB4NzE0QSwgMHgxOUUxLA0KKyAgICAweDcxNEIsIDB4NzE0QiwgMHgzQjhFLCAweDcxNEMsIDB4NzE0QywgMHgwN0UyLCAweDcxNEQsIDB4NzE0RCwgMHgzQjhGLA0KKyAgICAweDcxNEUsIDB4NzE0RSwgMHgwODU4LCAweDcxNEYsIDB4NzE1MSwgMHgzQjkwLCAweDcxNTIsIDB4NzE1MiwgMHgyNEQ2LA0KKyAgICAweDcxNTMsIDB4NzE1QiwgMHgzQjkzLCAweDcxNUMsIDB4NzE1QywgMHgxOURELCAweDcxNUQsIDB4NzE1RCwgMHgzQjlDLA0KKyAgICAweDcxNUUsIDB4NzE1RSwgMHgwQ0YwLCAweDcxNUYsIDB4NzE2MSwgMHgzQjlELCAweDcxNjIsIDB4NzE2MiwgMHgyMzNBLA0KKyAgICAweDcxNjMsIDB4NzE2MywgMHgzQkEwLCAweDcxNjQsIDB4NzE2NCwgMHgwQUJGLCAweDcxNjUsIDB4NzE2NSwgMHgzQkExLA0KKyAgICAweDcxNjYsIDB4NzE2NiwgMHgxOUYxLCAweDcxNjcsIDB4NzE2NywgMHgxMTc2LCAweDcxNjgsIDB4NzE2OCwgMHgxOURFLA0KKyAgICAweDcxNjksIDB4NzE2OSwgMHgxRUVFLCAweDcxNkEsIDB4NzE2QiwgMHgzQkEyLCAweDcxNkMsIDB4NzE2QywgMHgyNEQ1LA0KKyAgICAweDcxNkQsIDB4NzE2RCwgMHgzQkE0LCAweDcxNkUsIDB4NzE2RSwgMHgxMUYyLCAweDcxNkYsIDB4NzE3MSwgMHgzQkE1LA0KKyAgICAweDcxNzIsIDB4NzE3MiwgMHgxOUUwLCAweDcxNzMsIDB4NzE3MywgMHgxOURDLCAweDcxNzQsIDB4NzE3NywgMHgzQkE4LA0KKyAgICAweDcxNzgsIDB4NzE3OCwgMHgxOUUyLCAweDcxNzksIDB4NzE3OSwgMHgzQkFDLCAweDcxN0EsIDB4NzE3QSwgMHgxOUUzLA0KKyAgICAweDcxN0IsIDB4NzE3QywgMHgzQkFELCAweDcxN0QsIDB4NzE3RCwgMHgwQ0Y4LCAweDcxN0UsIDB4NzE4MywgMHgzQkFGLA0KKyAgICAweDcxODQsIDB4NzE4NCwgMHgwRjE1LCAweDcxODUsIDB4NzE4OSwgMHgzQkI1LCAweDcxOEEsIDB4NzE4QSwgMHgwRkE3LA0KKyAgICAweDcxOEIsIDB4NzE4RSwgMHgzQkJBLCAweDcxOEYsIDB4NzE4RiwgMHgwRkQ1LCAweDcxOTAsIDB4NzE5MSwgMHgzQkJFLA0KKyAgICAweDcxOTIsIDB4NzE5MiwgMHgyMjI4LCAweDcxOTMsIDB4NzE5MywgMHgzQkMwLCAweDcxOTQsIDB4NzE5NCwgMHgwQ0I2LA0KKyAgICAweDcxOTUsIDB4NzE5NiwgMHgzQkMxLCAweDcxOTcsIDB4NzE5NywgMHgyNEQ3LCAweDcxOTgsIDB4NzE5OCwgMHgxOUU0LA0KKyAgICAweDcxOTksIDB4NzE5OSwgMHgwRjA0LCAweDcxOUEsIDB4NzE5RSwgMHgzQkMzLCAweDcxOUYsIDB4NzE5RiwgMHgwRDgzLA0KKyAgICAweDcxQTAsIDB4NzFBMCwgMHgxOUU4LCAweDcxQTEsIDB4NzFBNywgMHgzQkM4LCAweDcxQTgsIDB4NzFBOCwgMHgxOUU3LA0KKyAgICAweDcxQTksIDB4NzFBQiwgMHgzQkNGLCAweDcxQUMsIDB4NzFBQywgMHgwM0M5LCAweDcxQUQsIDB4NzFCMCwgMHgzQkQyLA0KKyAgICAweDcxQjEsIDB4NzFCMSwgMHgyMEZDLCAweDcxQjIsIDB4NzFCMiwgMHgzQkQ2LCAweDcxQjMsIDB4NzFCMywgMHgxOUU1LA0KKyAgICAweDcxQjQsIDB4NzFCNCwgMHgzQkQ3LCAweDcxQjUsIDB4NzFCNSwgMHgxOUU2LCAweDcxQjYsIDB4NzFCOCwgMHgzQkQ4LA0KKyAgICAweDcxQjksIDB4NzFCOSwgMHgxOUYyLCAweDcxQkEsIDB4NzFCRCwgMHgzQkRCLCAweDcxQkUsIDB4NzFCRSwgMHgxRTg3LA0KKyAgICAweDcxQkYsIDB4NzFDMCwgMHgzQkRGLCAweDcxQzEsIDB4NzFDMSwgMHgyNEQ4LCAweDcxQzIsIDB4NzFDMiwgMHgzQkUxLA0KKyAgICAweDcxQzMsIDB4NzFDMywgMHgwQzk3LCAweDcxQzQsIDB4NzFDNywgMHgzQkUyLCAweDcxQzgsIDB4NzFDOCwgMHgxRUJBLA0KKyAgICAweDcxQzksIDB4NzFDRCwgMHgzQkU2LCAweDcxQ0UsIDB4NzFDRSwgMHgwQTEwLCAweDcxQ0YsIDB4NzFEMSwgMHgzQkVCLA0KKyAgICAweDcxRDIsIDB4NzFEMiwgMHgyMTE5LCAweDcxRDMsIDB4NzFEMywgMHgzQkVFLCAweDcxRDQsIDB4NzFENCwgMHgxOUVBLA0KKyAgICAweDcxRDUsIDB4NzFENSwgMHgxMDA5LCAweDcxRDYsIDB4NzFEOCwgMHgzQkVGLCAweDcxRDksIDB4NzFEOSwgMHgyMTZDLA0KKyAgICAweDcxREEsIDB4NzFEQiwgMHgzQkYyLCAweDcxREMsIDB4NzFEQywgMHgyNEQ5LCAweDcxREQsIDB4NzFERSwgMHgzQkY0LA0KKyAgICAweDcxREYsIDB4NzFERiwgMHgyMjI3LCAweDcxRTAsIDB4NzFFMCwgMHgxOUU5LCAweDcxRTEsIDB4NzFFNCwgMHgzQkY2LA0KKyAgICAweDcxRTUsIDB4NzFFNSwgMHgxMTMyLCAweDcxRTYsIDB4NzFFNiwgMHgxRTVGLCAweDcxRTcsIDB4NzFFNywgMHgxOUVCLA0KKyAgICAweDcxRTgsIDB4NzFFQywgMHgzQkZBLCAweDcxRUQsIDB4NzFFRCwgMHgyMjlGLCAweDcxRUUsIDB4NzFFRSwgMHgxMzk2LA0KKyAgICAweDcxRUYsIDB4NzFGMywgMHgzQkZGLCAweDcxRjQsIDB4NzFGNCwgMHgxRjVELCAweDcxRjUsIDB4NzFGOCwgMHgzQzA0LA0KKyAgICAweDcxRjksIDB4NzFGOSwgMHgxOUVDLCAweDcxRkEsIDB4NzFGQiwgMHgzQzA4LCAweDcxRkMsIDB4NzFGQywgMHgxRkJDLA0KKyAgICAweDcxRkQsIDB4NzFGRCwgMHgzQzBBLCAweDcxRkUsIDB4NzFGRSwgMHgyNERBLCAweDcxRkYsIDB4NzFGRiwgMHgzQzBCLA0KKyAgICAweDcyMDAsIDB4NzIwNSwgMHgzQzBDLCAweDcyMDYsIDB4NzIwNiwgMHgwNDE1LCAweDcyMDcsIDB4NzIwQywgMHgzQzEyLA0KKyAgICAweDcyMEQsIDB4NzIwRCwgMHgyMTQ5LCAweDcyMEUsIDB4NzIwRiwgMHgzQzE4LCAweDcyMTAsIDB4NzIxMCwgMHgyMDQ2LA0KKyAgICAweDcyMTEsIDB4NzIxQSwgMHgzQzFBLCAweDcyMUIsIDB4NzIxQiwgMHgyMDAwLCAweDcyMUMsIDB4NzIxQywgMHgzQzI0LA0KKyAgICAweDcyMUQsIDB4NzIxRCwgMHgxOUVELCAweDcyMUUsIDB4NzIyNywgMHgzQzI1LCAweDcyMjgsIDB4NzIyOCwgMHgxOUVFLA0KKyAgICAweDcyMjksIDB4NzIyOSwgMHgzQzJGLCAweDcyMkEsIDB4NzIyQSwgMHgxMjAzLCAweDcyMkIsIDB4NzIyQiwgMHgzQzMwLA0KKyAgICAweDcyMkMsIDB4NzIyQywgMHgwQjgxLCAweDcyMkQsIDB4NzIyRiwgMHgzQzMxLCAweDcyMzAsIDB4NzIzMCwgMHgxOTZDLA0KKyAgICAweDcyMzEsIDB4NzIzMSwgMHgwM0I5LCAweDcyMzIsIDB4NzIzMiwgMHgyMTkwLCAweDcyMzMsIDB4NzIzNCwgMHgzQzM0LA0KKyAgICAweDcyMzUsIDB4NzIzNSwgMHgwOTIzLCAweDcyMzYsIDB4NzIzNiwgMHgwNkIzLCAweDcyMzcsIDB4NzIzNywgMHgxMDM2LA0KKyAgICAweDcyMzgsIDB4NzIzOCwgMHgwM0UxLCAweDcyMzksIDB4NzIzOSwgMHgwNURBLCAweDcyM0EsIDB4NzIzQSwgMHgyMjA4LA0KKyAgICAweDcyM0IsIDB4NzIzQiwgMHgxMjY5LCAweDcyM0MsIDB4NzIzQywgMHgzQzM2LCAweDcyM0QsIDB4NzIzRCwgMHgwREExLA0KKyAgICAweDcyM0UsIDB4NzIzRSwgMHgxRUU2LCAweDcyM0YsIDB4NzIzRiwgMHgxNjlELCAweDcyNDAsIDB4NzI0NiwgMHgzQzM3LA0KKyAgICAweDcyNDcsIDB4NzI0NywgMHgwQkNCLCAweDcyNDgsIDB4NzI0OCwgMHgwM0YxLCAweDcyNDksIDB4NzI0QiwgMHgzQzNFLA0KKyAgICAweDcyNEMsIDB4NzI0QywgMHgwQjg3LCAweDcyNEQsIDB4NzI0RCwgMHgxOTY5LCAweDcyNEUsIDB4NzI1MSwgMHgzQzQxLA0KKyAgICAweDcyNTIsIDB4NzI1MiwgMHgxOTZBLCAweDcyNTMsIDB4NzI1NSwgMHgzQzQ1LCAweDcyNTYsIDB4NzI1NiwgMHgxOTZCLA0KKyAgICAweDcyNTcsIDB4NzI1NywgMHgzQzQ4LCAweDcyNTgsIDB4NzI1OCwgMHgyNEMzLCAweDcyNTksIDB4NzI1OSwgMHgwRkU5LA0KKyAgICAweDcyNUEsIDB4NzI1QSwgMHgzQzQ5LCAweDcyNUIsIDB4NzI1QiwgMHgwQjY0LCAweDcyNUMsIDB4NzI1QywgMHgzQzRBLA0KKyAgICAweDcyNUQsIDB4NzI1RCwgMHgxOTQ0LCAweDcyNUUsIDB4NzI1RSwgMHgzQzRCLCAweDcyNUYsIDB4NzI1RiwgMHgwQjE1LA0KKyAgICAweDcyNjAsIDB4NzI2MCwgMHgzQzRDLCAweDcyNjEsIDB4NzI2MSwgMHgwQjE4LCAweDcyNjIsIDB4NzI2MiwgMHgwOUI5LA0KKyAgICAweDcyNjMsIDB4NzI2NSwgMHgzQzRELCAweDcyNjYsIDB4NzI2NiwgMHgxOTQ1LCAweDcyNjcsIDB4NzI2NywgMHgwQjI0LA0KKyAgICAweDcyNjgsIDB4NzI2OCwgMHgzQzUwLCAweDcyNjksIDB4NzI2OSwgMHgwRUZFLCAweDcyNkEsIDB4NzI2RCwgMHgzQzUxLA0KKyAgICAweDcyNkUsIDB4NzI2RSwgMHgxOTQyLCAweDcyNkYsIDB4NzI2RiwgMHgxOTQ2LCAweDcyNzAsIDB4NzI3MSwgMHgzQzU1LA0KKyAgICAweDcyNzIsIDB4NzI3MiwgMHgwRDM1LCAweDcyNzMsIDB4NzI3NCwgMHgzQzU3LCAweDcyNzUsIDB4NzI3NSwgMHgwQzIwLA0KKyAgICAweDcyNzYsIDB4NzI3OCwgMHgzQzU5LCAweDcyNzksIDB4NzI3OSwgMHgwRTJCLCAweDcyN0EsIDB4NzI3QSwgMHgwRjBELA0KKyAgICAweDcyN0IsIDB4NzI3QywgMHgzQzVDLCAweDcyN0QsIDB4NzI3RCwgMHgyMENDLCAweDcyN0UsIDB4NzI3RiwgMHgxOTQ3LA0KKyAgICAweDcyODAsIDB4NzI4MCwgMHgwRjE5LCAweDcyODEsIDB4NzI4MSwgMHgwOUQyLCAweDcyODIsIDB4NzI4MywgMHgzQzVFLA0KKyAgICAweDcyODQsIDB4NzI4NCwgMHgxOTQ5LCAweDcyODUsIDB4NzI4OSwgMHgzQzYwLCAweDcyOEEsIDB4NzI4QSwgMHgwNUZFLA0KKyAgICAweDcyOEIsIDB4NzI4QiwgMHgxOTRBLCAweDcyOEMsIDB4NzI4QywgMHgzQzY1LCAweDcyOEQsIDB4NzI4RCwgMHgxOTRCLA0KKyAgICAweDcyOEUsIDB4NzI4RSwgMHgzQzY2LCAweDcyOEYsIDB4NzI4RiwgMHgxOTRDLCAweDcyOTAsIDB4NzI5MSwgMHgzQzY3LA0KKyAgICAweDcyOTIsIDB4NzI5MiwgMHgxOTRELCAweDcyOTMsIDB4NzI5NSwgMHgzQzY5LCAweDcyOTYsIDB4NzI5NiwgMHgyMzQwLA0KKyAgICAweDcyOTcsIDB4NzI5RSwgMHgzQzZDLCAweDcyOUYsIDB4NzI5RiwgMHgxOTQzLCAweDcyQTAsIDB4NzJBMSwgMHgzQzc0LA0KKyAgICAweDcyQTIsIDB4NzJBMiwgMHgxRUQxLCAweDcyQTMsIDB4NzJBNiwgMHgzQzc2LCAweDcyQTcsIDB4NzJBNywgMHgyMUFDLA0KKyAgICAweDcyQTgsIDB4NzJBQiwgMHgzQzdBLCAweDcyQUMsIDB4NzJBQywgMHgwQzg5LCAweDcyQUQsIDB4NzJBRCwgMHgxNUVGLA0KKyAgICAweDcyQUUsIDB4NzJBRSwgMHgzQzdFLCAweDcyQUYsIDB4NzJBRiwgMHgwNjU1LCAweDcyQjAsIDB4NzJCMCwgMHgxNUYwLA0KKyAgICAweDcyQjEsIDB4NzJCMywgMHgzQzdGLCAweDcyQjQsIDB4NzJCNCwgMHgxNUYxLCAweDcyQjUsIDB4NzJCNSwgMHgzQzgyLA0KKyAgICAweDcyQjYsIDB4NzJCNiwgMHgxMjExLCAweDcyQjcsIDB4NzJCOCwgMHgxNUYyLCAweDcyQjksIDB4NzJCOSwgMHgxMEIxLA0KKyAgICAweDcyQkEsIDB4NzJCRiwgMHgzQzgzLCAweDcyQzAsIDB4NzJDMCwgMHgyMkFGLCAweDcyQzEsIDB4NzJDMSwgMHgxNUY1LA0KKyAgICAweDcyQzIsIDB4NzJDMiwgMHgwOTdFLCAweDcyQzMsIDB4NzJDMywgMHgxNUY0LCAweDcyQzQsIDB4NzJDNCwgMHgwNUIzLA0KKyAgICAweDcyQzUsIDB4NzJDNywgMHgzQzg5LCAweDcyQzgsIDB4NzJDOCwgMHgwNDIwLCAweDcyQzksIDB4NzJDQywgMHgzQzhDLA0KKyAgICAweDcyQ0QsIDB4NzJDRCwgMHgxNUY3LCAweDcyQ0UsIDB4NzJDRSwgMHgxNUY2LCAweDcyQ0YsIDB4NzJDRiwgMHgzQzkwLA0KKyAgICAweDcyRDAsIDB4NzJEMCwgMHgwN0IzLCAweDcyRDEsIDB4NzJEMSwgMHgzQzkxLCAweDcyRDIsIDB4NzJEMiwgMHgxNUY4LA0KKyAgICAweDcyRDMsIDB4NzJENiwgMHgzQzkyLCAweDcyRDcsIDB4NzJENywgMHgwNzEwLCAweDcyRDgsIDB4NzJEOCwgMHgzQzk2LA0KKyAgICAweDcyRDksIDB4NzJEOSwgMHgwOTAwLCAweDcyREEsIDB4NzJERCwgMHgzQzk3LCAweDcyREUsIDB4NzJERSwgMHgwQjVGLA0KKyAgICAweDcyREYsIDB4NzJERiwgMHgzQzlCLCAweDcyRTAsIDB4NzJFMCwgMHgwNzk0LCAweDcyRTEsIDB4NzJFMSwgMHgwODk3LA0KKyAgICAweDcyRTIsIDB4NzJFNywgMHgzQzlDLCAweDcyRTgsIDB4NzJFOCwgMHgxNUY5LCAweDcyRTksIDB4NzJFOSwgMHgxNUZCLA0KKyAgICAweDcyRUEsIDB4NzJFQiwgMHgzQ0EyLCAweDcyRUMsIDB4NzJFQywgMHgwNUZGLCAweDcyRUQsIDB4NzJFRCwgMHgwRjJFLA0KKyAgICAweDcyRUUsIDB4NzJFRSwgMHgwRDNGLCAweDcyRUYsIDB4NzJFRiwgMHgxNUZBLCAweDcyRjAsIDB4NzJGMCwgMHgxMTk5LA0KKyAgICAweDcyRjEsIDB4NzJGMSwgMHgxMEUxLCAweDcyRjIsIDB4NzJGMiwgMHgxNUZDLCAweDcyRjMsIDB4NzJGMywgMHgxNjAwLA0KKyAgICAweDcyRjQsIDB4NzJGNCwgMHgxNUZELCAweDcyRjUsIDB4NzJGNiwgMHgzQ0E0LCAweDcyRjcsIDB4NzJGNywgMHgxNUZFLA0KKyAgICAweDcyRjgsIDB4NzJGOCwgMHgwOUQ1LCAweDcyRjksIDB4NzJGOSwgMHgyMUI2LCAweDcyRkEsIDB4NzJGQiwgMHgxNjAyLA0KKyAgICAweDcyRkMsIDB4NzJGQywgMHgwOUIyLCAweDcyRkQsIDB4NzJGRCwgMHgxRTNELCAweDcyRkUsIDB4NzJGRiwgMHgzQ0E2LA0KKyAgICAweDczMDAsIDB4NzMwMCwgMHgzQ0E4LCAweDczMDEsIDB4NzMwMSwgMHgxNUZGLCAweDczMDIsIDB4NzMwMiwgMHgzQ0E5LA0KKyAgICAweDczMDMsIDB4NzMwMywgMHgxNjAxLCAweDczMDQsIDB4NzMwOSwgMHgzQ0FBLCAweDczMEEsIDB4NzMwQSwgMHgxNjA3LA0KKyAgICAweDczMEIsIDB4NzMwRCwgMHgzQ0IwLCAweDczMEUsIDB4NzMwRSwgMHgwQTFELCAweDczMEYsIDB4NzMxMiwgMHgzQ0IzLA0KKyAgICAweDczMTMsIDB4NzMxMywgMHgxNjA1LCAweDczMTQsIDB4NzMxNCwgMHgzQ0I3LCAweDczMTUsIDB4NzMxNSwgMHgxNjBBLA0KKyAgICAweDczMTYsIDB4NzMxNiwgMHgwNEM1LCAweDczMTcsIDB4NzMxNywgMHgxNjA0LCAweDczMTgsIDB4NzMxQSwgMHgzQ0I4LA0KKyAgICAweDczMUIsIDB4NzMxQiwgMHgwQUQyLCAweDczMUMsIDB4NzMxQywgMHgwNDg5LCAweDczMUQsIDB4NzMxRCwgMHgxNjA5LA0KKyAgICAweDczMUUsIDB4NzMxRSwgMHgxNjA4LCAweDczMUYsIDB4NzMyMCwgMHgzQ0JCLCAweDczMjEsIDB4NzMyMSwgMHgxNjA2LA0KKyAgICAweDczMjIsIDB4NzMyMiwgMHgxNjBCLCAweDczMjMsIDB4NzMyNCwgMHgzQ0JELCAweDczMjUsIDB4NzMyNSwgMHgxNjBELA0KKyAgICAweDczMjYsIDB4NzMyOCwgMHgzQ0JGLCAweDczMjksIDB4NzMyOSwgMHgwRjk0LCAweDczMkEsIDB4NzMyQSwgMHgxMUVDLA0KKyAgICAweDczMkIsIDB4NzMyQiwgMHgwQUFELCAweDczMkMsIDB4NzMyQywgMHgxNjBFLCAweDczMkQsIDB4NzMyRCwgMHgzQ0MyLA0KKyAgICAweDczMkUsIDB4NzMyRSwgMHgwRjQ0LCAweDczMkYsIDB4NzMzMCwgMHgzQ0MzLCAweDczMzEsIDB4NzMzMSwgMHgxNjEwLA0KKyAgICAweDczMzIsIDB4NzMzMywgMHgzQ0M1LCAweDczMzQsIDB4NzMzNCwgMHgwN0E2LCAweDczMzUsIDB4NzMzNSwgMHgzQ0M3LA0KKyAgICAweDczMzYsIDB4NzMzNiwgMHgyMjM1LCAweDczMzcsIDB4NzMzNywgMHgxOEQ0LCAweDczMzgsIDB4NzMzOCwgMHgxNjBGLA0KKyAgICAweDczMzksIDB4NzMzOSwgMHgxNjBDLCAweDczM0EsIDB4NzMzQSwgMHgzQ0M4LCAweDczM0IsIDB4NzMzQiwgMHgyMzk3LA0KKyAgICAweDczM0MsIDB4NzMzRCwgMHgzQ0M5LCAweDczM0UsIDB4NzMzRSwgMHgwN0MwLCAweDczM0YsIDB4NzMzRiwgMHgxMEY2LA0KKyAgICAweDczNDAsIDB4NzM0MCwgMHgzQ0NCLCAweDczNDEsIDB4NzM0MSwgMHgyMzk1LCAweDczNDIsIDB4NzM0MywgMHgzQ0NDLA0KKyAgICAweDczNDQsIDB4NzM0NCwgMHgyMjNGLCAweDczNDUsIDB4NzM0NSwgMHgyMTJBLCAweDczNDYsIDB4NzM0QywgMHgzQ0NFLA0KKyAgICAweDczNEQsIDB4NzM0RCwgMHgxNjEyLCAweDczNEUsIDB4NzM0RiwgMHgzQ0Q1LCAweDczNTAsIDB4NzM1MCwgMHgxNjExLA0KKyAgICAweDczNTEsIDB4NzM1MSwgMHgzQ0Q3LCAweDczNTIsIDB4NzM1MiwgMHgxOEQ1LCAweDczNTMsIDB4NzM1NiwgMHgzQ0Q4LA0KKyAgICAweDczNTcsIDB4NzM1NywgMHgxNjEzLCAweDczNTgsIDB4NzM1RiwgMHgzQ0RDLCAweDczNjAsIDB4NzM2MCwgMHgxNjE0LA0KKyAgICAweDczNjEsIDB4NzM2NywgMHgzQ0U0LCAweDczNjgsIDB4NzM2OCwgMHgxRUQyLCAweDczNjksIDB4NzM2OSwgMHgzQ0VCLA0KKyAgICAweDczNkEsIDB4NzM2QSwgMHgyMzk2LCAweDczNkIsIDB4NzM2QiwgMHgyMzk4LCAweDczNkMsIDB4NzM2QywgMHgxNjE1LA0KKyAgICAweDczNkQsIDB4NzM2RCwgMHgwREY0LCAweDczNkUsIDB4NzM2RSwgMHgzQ0VDLCAweDczNkYsIDB4NzM2RiwgMHgxNjE2LA0KKyAgICAweDczNzAsIDB4NzM3MCwgMHgyMEEyLCAweDczNzEsIDB4NzM3MSwgMHgzQ0VELCAweDczNzIsIDB4NzM3MiwgMHgxRjY0LA0KKyAgICAweDczNzMsIDB4NzM3NCwgMHgzQ0VFLCAweDczNzUsIDB4NzM3NSwgMHgyMDJCLCAweDczNzYsIDB4NzM3NiwgMHgzQ0YwLA0KKyAgICAweDczNzcsIDB4NzM3NywgMHgyMzk0LCAweDczNzgsIDB4NzM3OCwgMHgyMTM5LCAweDczNzksIDB4NzM3OSwgMHgzQ0YxLA0KKyAgICAweDczN0EsIDB4NzM3QSwgMHgyMTVGLCAweDczN0IsIDB4NzM3QiwgMHgyMUMxLCAweDczN0MsIDB4NzM3QywgMHgyMzlBLA0KKyAgICAweDczN0QsIDB4NzM3RCwgMHgzQ0YyLCAweDczN0UsIDB4NzM3RSwgMHgxNjE3LCAweDczN0YsIDB4NzM3RiwgMHgzQ0YzLA0KKyAgICAweDczODAsIDB4NzM4MCwgMHgyMzk5LCAweDczODEsIDB4NzM4MywgMHgzQ0Y0LCAweDczODQsIDB4NzM4NCwgMHgwRkM5LA0KKyAgICAweDczODUsIDB4NzM4NiwgMHgzQ0Y3LCAweDczODcsIDB4NzM4NywgMHgwQTcxLCAweDczODgsIDB4NzM4OCwgMHgzQ0Y5LA0KKyAgICAweDczODksIDB4NzM4OSwgMHgxMEQ2LCAweDczOEEsIDB4NzM4QSwgMHgzQ0ZBLCAweDczOEIsIDB4NzM4QiwgMHgwRUE2LA0KKyAgICAweDczOEMsIDB4NzM4RCwgMHgzQ0ZCLCAweDczOEUsIDB4NzM4RSwgMHgxODE4LCAweDczOEYsIDB4NzM5MCwgMHgzQ0ZELA0KKyAgICAweDczOTEsIDB4NzM5MSwgMHgxODE5LCAweDczOTIsIDB4NzM5NSwgMHgzQ0ZGLCAweDczOTYsIDB4NzM5NiwgMHgwOEYwLA0KKyAgICAweDczOTcsIDB4NzM5QSwgMHgzRDAzLCAweDczOUIsIDB4NzM5QiwgMHgwQTkxLCAweDczOUMsIDB4NzM5RSwgMHgzRDA3LA0KKyAgICAweDczOUYsIDB4NzM5RiwgMHgxODFDLCAweDczQTAsIDB4NzNBMSwgMHgzRDBBLCAweDczQTIsIDB4NzNBMiwgMHgxODFCLA0KKyAgICAweDczQTMsIDB4NzNBOCwgMHgzRDBDLCAweDczQTksIDB4NzNBOSwgMHgwRTk3LCAweDczQUEsIDB4NzNBQSwgMHgzRDEyLA0KKyAgICAweDczQUIsIDB4NzNBQiwgMHgwQUJBLCAweDczQUMsIDB4NzNBRCwgMHgzRDEzLCAweDczQUUsIDB4NzNBRSwgMHgxODFBLA0KKyAgICAweDczQUYsIDB4NzNBRiwgMHgwN0NDLCAweDczQjAsIDB4NzNCMCwgMHgwRjQzLCAweDczQjEsIDB4NzNCMSwgMHgzRDE1LA0KKyAgICAweDczQjIsIDB4NzNCMiwgMHgwQTJBLCAweDczQjMsIDB4NzNCMywgMHgxODIxLCAweDczQjQsIDB4NzNCNiwgMHgzRDE2LA0KKyAgICAweDczQjcsIDB4NzNCNywgMHgxODIwLCAweDczQjgsIDB4NzNCOSwgMHgzRDE5LCAweDczQkEsIDB4NzNCQSwgMHgxODJDLA0KKyAgICAweDczQkIsIDB4NzNCQiwgMHgwNDZBLCAweDczQkMsIDB4NzNCRiwgMHgzRDFCLCAweDczQzAsIDB4NzNDMCwgMHgxODIyLA0KKyAgICAweDczQzEsIDB4NzNDMSwgMHgzRDFGLCAweDczQzIsIDB4NzNDMiwgMHgxODFFLCAweDczQzMsIDB4NzNDNywgMHgzRDIwLA0KKyAgICAweDczQzgsIDB4NzNDOCwgMHgxODI0LCAweDczQzksIDB4NzNDOSwgMHgxODIzLCAweDczQ0EsIDB4NzNDQSwgMHgwQ0YzLA0KKyAgICAweDczQ0IsIDB4NzNDQywgMHgzRDI1LCAweDczQ0QsIDB4NzNDRCwgMHgxMTg1LCAweDczQ0UsIDB4NzNDRSwgMHgzRDI3LA0KKyAgICAweDczQ0YsIDB4NzNDRiwgMHgxODFELCAweDczRDAsIDB4NzNEMCwgMHgwNjQ2LCAweDczRDEsIDB4NzNEMSwgMHgxODFGLA0KKyAgICAweDczRDIsIDB4NzNEOCwgMHgzRDI4LCAweDczRDksIDB4NzNEOSwgMHgxODI2LCAweDczREEsIDB4NzNERCwgMHgzRDJGLA0KKyAgICAweDczREUsIDB4NzNERSwgMHgxODJCLCAweDczREYsIDB4NzNERiwgMHgzRDMzLCAweDczRTAsIDB4NzNFMCwgMHgxMUU4LA0KKyAgICAweDczRTEsIDB4NzNFNCwgMHgzRDM0LCAweDczRTUsIDB4NzNFNSwgMHgxODI1LCAweDczRTYsIDB4NzNFNiwgMHgzRDM4LA0KKyAgICAweDczRTcsIDB4NzNFNywgMHgxODJBLCAweDczRTgsIDB4NzNFOCwgMHgzRDM5LCAweDczRTksIDB4NzNFOSwgMHgxODI5LA0KKyAgICAweDczRUEsIDB4NzNFQywgMHgzRDNBLCAweDczRUQsIDB4NzNFRCwgMHgwM0VCLCAweDczRUUsIDB4NzNGMSwgMHgzRDNELA0KKyAgICAweDczRjIsIDB4NzNGMiwgMHgxODJELCAweDczRjMsIDB4NzNGRCwgMHgzRDQxLCAweDczRkUsIDB4NzNGRSwgMHgyMUMwLA0KKyAgICAweDczRkYsIDB4NzNGRiwgMHgzRDRDLCAweDc0MDAsIDB4NzQwMiwgMHgzRDRELCAweDc0MDMsIDB4NzQwMywgMHgwQzZGLA0KKyAgICAweDc0MDQsIDB4NzQwNCwgMHgzRDUwLCAweDc0MDUsIDB4NzQwNSwgMHgwOUIwLCAweDc0MDYsIDB4NzQwNiwgMHgwOUQ4LA0KKyAgICAweDc0MDcsIDB4NzQwOCwgMHgzRDUxLCAweDc0MDksIDB4NzQwOSwgMHgwQTM5LCAweDc0MEEsIDB4NzQwQSwgMHgxODI4LA0KKyAgICAweDc0MEIsIDB4NzQwRSwgMHgzRDUzLCAweDc0MEYsIDB4NzQwRiwgMHgxODJFLCAweDc0MTAsIDB4NzQxMCwgMHgwREVCLA0KKyAgICAweDc0MTEsIDB4NzQxOSwgMHgzRDU3LCAweDc0MUEsIDB4NzQxQSwgMHgxODM4LCAweDc0MUIsIDB4NzQxQiwgMHgxODM3LA0KKyAgICAweDc0MUMsIDB4NzQyMSwgMHgzRDYwLCAweDc0MjIsIDB4NzQyMiwgMHgxMjFFLCAweDc0MjMsIDB4NzQyNCwgMHgzRDY2LA0KKyAgICAweDc0MjUsIDB4NzQyNSwgMHgxODMyLCAweDc0MjYsIDB4NzQyNiwgMHgxODMxLCAweDc0MjcsIDB4NzQyNywgMHgzRDY4LA0KKyAgICAweDc0MjgsIDB4NzQyOCwgMHgxODMzLCAweDc0MjksIDB4NzQyOSwgMHgzRDY5LCAweDc0MkEsIDB4NzQyQSwgMHgxODJGLA0KKyAgICAweDc0MkIsIDB4NzQyQiwgMHgzRDZBLCAweDc0MkMsIDB4NzQyQywgMHgxODM2LCAweDc0MkQsIDB4NzQyRCwgMHgzRDZCLA0KKyAgICAweDc0MkUsIDB4NzQyRSwgMHgxODM1LCAweDc0MkYsIDB4NzQyRiwgMHgzRDZDLCAweDc0MzAsIDB4NzQzMCwgMHgxODM0LA0KKyAgICAweDc0MzEsIDB4NzQzMiwgMHgzRDZELCAweDc0MzMsIDB4NzQzMywgMHgwQTFFLCAweDc0MzQsIDB4NzQzNCwgMHgwQzU2LA0KKyAgICAweDc0MzUsIDB4NzQzNSwgMHgwQkJFLCAweDc0MzYsIDB4NzQzNiwgMHgwQjg0LCAweDc0MzcsIDB4NzQzQiwgMHgzRDZGLA0KKyAgICAweDc0M0MsIDB4NzQzQywgMHgwQzZBLCAweDc0M0QsIDB4NzQzRSwgMHgzRDc0LCAweDc0M0YsIDB4NzQzRiwgMHgyNDYwLA0KKyAgICAweDc0NDAsIDB4NzQ0MCwgMHgzRDc2LCAweDc0NDEsIDB4NzQ0MSwgMHgxODM5LCAweDc0NDIsIDB4NzQ0QSwgMHgzRDc3LA0KKyAgICAweDc0NEIsIDB4NzQ0QiwgMHgyNDVDLCAweDc0NEMsIDB4NzQ1NCwgMHgzRDgwLCAweDc0NTUsIDB4NzQ1NSwgMHgxODNDLA0KKyAgICAweDc0NTYsIDB4NzQ1NiwgMHgzRDg5LCAweDc0NTcsIDB4NzQ1NywgMHgxODNCLCAweDc0NTgsIDB4NzQ1OCwgMHgzRDhBLA0KKyAgICAweDc0NTksIDB4NzQ1OSwgMHgxODNELCAweDc0NUEsIDB4NzQ1QSwgMHgwN0FFLCAweDc0NUIsIDB4NzQ1QiwgMHgxODMwLA0KKyAgICAweDc0NUMsIDB4NzQ1QywgMHgxODNBLCAweDc0NUQsIDB4NzQ1RCwgMHgzRDhCLCAweDc0NUUsIDB4NzQ1RSwgMHgwQ0NCLA0KKyAgICAweDc0NUYsIDB4NzQ1RiwgMHgwQ0UzLCAweDc0NjAsIDB4NzQ2MiwgMHgzRDhDLCAweDc0NjMsIDB4NzQ2MywgMHgyMTVELA0KKyAgICAweDc0NjQsIDB4NzQ2OCwgMHgzRDhGLCAweDc0NjksIDB4NzQ2OSwgMHgyMjI1LCAweDc0NkEsIDB4NzQ2QSwgMHgyMDZBLA0KKyAgICAweDc0NkIsIDB4NzQ2QywgMHgzRDk0LCAweDc0NkQsIDB4NzQ2RCwgMHgxODNGLCAweDc0NkUsIDB4NzQ2RiwgMHgzRDk2LA0KKyAgICAweDc0NzAsIDB4NzQ3MCwgMHgwNzNFLCAweDc0NzEsIDB4NzQ3NSwgMHgzRDk4LCAweDc0NzYsIDB4NzQ3NiwgMHgxMDI3LA0KKyAgICAweDc0NzcsIDB4NzQ3NywgMHgxODNFLCAweDc0NzgsIDB4NzQ3RCwgMHgzRDlELCAweDc0N0UsIDB4NzQ3RSwgMHgxODQwLA0KKyAgICAweDc0N0YsIDB4NzQ3RiwgMHgzREEzLCAweDc0ODAsIDB4NzQ4MSwgMHgxODQzLCAweDc0ODIsIDB4NzQ4MiwgMHgzREE0LA0KKyAgICAweDc0ODMsIDB4NzQ4MywgMHgwOUYwLCAweDc0ODQsIDB4NzQ4NiwgMHgzREE1LCAweDc0ODcsIDB4NzQ4NywgMHgxODQ1LA0KKyAgICAweDc0ODgsIDB4NzQ4OCwgMHgzREE4LCAweDc0ODksIDB4NzQ4OSwgMHgyNDYxLCAweDc0OEEsIDB4NzQ4QSwgMHgzREE5LA0KKyAgICAweDc0OEIsIDB4NzQ4QiwgMHgxODQ2LCAweDc0OEMsIDB4NzQ4RCwgMHgzREFBLCAweDc0OEUsIDB4NzQ4RSwgMHgxODQyLA0KKyAgICAweDc0OEYsIDB4NzQ4RiwgMHgzREFDLCAweDc0OTAsIDB4NzQ5MCwgMHgxODRBLCAweDc0OTEsIDB4NzQ5QiwgMHgzREFELA0KKyAgICAweDc0OUMsIDB4NzQ5QywgMHgxODQxLCAweDc0OUQsIDB4NzQ5RCwgMHgzREI4LCAweDc0OUUsIDB4NzQ5RSwgMHgxODQ3LA0KKyAgICAweDc0OUYsIDB4NzRBMiwgMHgzREI5LCAweDc0QTMsIDB4NzRBMywgMHgyNDVCLCAweDc0QTQsIDB4NzRBNSwgMHgzREJELA0KKyAgICAweDc0QTYsIDB4NzRBNiwgMHgyNDYyLCAweDc0QTcsIDB4NzRBNywgMHgxODRCLCAweDc0QTgsIDB4NzRBOSwgMHgxODQ4LA0KKyAgICAweDc0QUEsIDB4NzRBRiwgMHgzREJGLCAweDc0QjAsIDB4NzRCMCwgMHgxRjU0LCAweDc0QjEsIDB4NzRCOSwgMHgzREM1LA0KKyAgICAweDc0QkEsIDB4NzRCQSwgMHgxODRELCAweDc0QkIsIDB4NzRCQywgMHgzRENFLCAweDc0QkQsIDB4NzRCRCwgMHgyNDVGLA0KKyAgICAweDc0QkUsIDB4NzRDOSwgMHgzREQwLCAweDc0Q0EsIDB4NzRDQSwgMHgyMEVDLCAweDc0Q0IsIDB4NzRDRSwgMHgzRERDLA0KKyAgICAweDc0Q0YsIDB4NzRDRiwgMHgyNDVELCAweDc0RDAsIDB4NzREMSwgMHgzREUwLCAweDc0RDIsIDB4NzREMiwgMHgxODRDLA0KKyAgICAweDc0RDMsIDB4NzREMywgMHgzREUyLCAweDc0RDQsIDB4NzRENCwgMHgyNDYzLCAweDc0RDUsIDB4NzREOSwgMHgzREUzLA0KKyAgICAweDc0REEsIDB4NzREQSwgMHgyNDY0LCAweDc0REIsIDB4NzREQiwgMHgzREU4LCAweDc0REMsIDB4NzREQywgMHgwNzI4LA0KKyAgICAweDc0REQsIDB4NzRERCwgMHgzREU5LCAweDc0REUsIDB4NzRERSwgMHgxQjMyLCAweDc0REYsIDB4NzRERiwgMHgzREVBLA0KKyAgICAweDc0RTAsIDB4NzRFMCwgMHgxQjMzLCAweDc0RTEsIDB4NzRFMSwgMHgzREVCLCAweDc0RTIsIDB4NzRFMiwgMHgwQkNGLA0KKyAgICAweDc0RTMsIDB4NzRFMywgMHgwM0Y1LCAweDc0RTQsIDB4NzRFNCwgMHgwQzlBLCAweDc0RTUsIDB4NzRFNSwgMHgzREVDLA0KKyAgICAweDc0RTYsIDB4NzRFNiwgMHgwRTkwLCAweDc0RTcsIDB4NzRFRCwgMHgzREVELCAweDc0RUUsIDB4NzRFRSwgMHgwRURDLA0KKyAgICAweDc0RUYsIDB4NzRFRiwgMHgxOTAzLCAweDc0RjAsIDB4NzRGMywgMHgzREY0LCAweDc0RjQsIDB4NzRGNCwgMHgxOTA0LA0KKyAgICAweDc0RjUsIDB4NzRGNSwgMHgzREY4LCAweDc0RjYsIDB4NzRGNiwgMHgwQkRFLCAweDc0RjcsIDB4NzRGNywgMHgwNTRDLA0KKyAgICAweDc0RjgsIDB4NzRGRSwgMHgzREY5LCAweDc0RkYsIDB4NzRGRiwgMHgxOTA1LCAweDc1MDAsIDB4NzUwMywgMHgzRTAwLA0KKyAgICAweDc1MDQsIDB4NzUwNCwgMHgxMTg4LCAweDc1MDUsIDB4NzUwQiwgMHgzRTA0LCAweDc1MEMsIDB4NzUwQywgMHgyNEE1LA0KKyAgICAweDc1MEQsIDB4NzUwRCwgMHgxNDg1LCAweDc1MEUsIDB4NzUwRSwgMHgzRTBCLCAweDc1MEYsIDB4NzUwRiwgMHgxOTA2LA0KKyAgICAweDc1MTAsIDB4NzUxMCwgMHgzRTBDLCAweDc1MTEsIDB4NzUxMSwgMHgxOTA3LCAweDc1MTIsIDB4NzUxMiwgMHgzRTBELA0KKyAgICAweDc1MTMsIDB4NzUxMywgMHgxOTA4LCAweDc1MTQsIDB4NzUxNywgMHgzRTBFLCAweDc1MTgsIDB4NzUxOCwgMHgwNkM1LA0KKyAgICAweDc1MTksIDB4NzUxOSwgMHgxNEY4LCAweDc1MUEsIDB4NzUxQSwgMHgwRDJFLCAweDc1MUIsIDB4NzUxQiwgMHgzRTEyLA0KKyAgICAweDc1MUMsIDB4NzUxQywgMHgwRTQzLCAweDc1MUQsIDB4NzUxRSwgMHgzRTEzLCAweDc1MUYsIDB4NzUxRiwgMHgwRDMzLA0KKyAgICAweDc1MjAsIDB4NzUyMiwgMHgzRTE1LCAweDc1MjMsIDB4NzUyMywgMHgxRTcwLCAweDc1MjQsIDB4NzUyNCwgMHgzRTE4LA0KKyAgICAweDc1MjUsIDB4NzUyNSwgMHgwRDM0LCAweDc1MjYsIDB4NzUyNywgMHgzRTE5LCAweDc1MjgsIDB4NzUyOCwgMHgxMEE4LA0KKyAgICAweDc1MjksIDB4NzUyOSwgMHgwRDlCLCAweDc1MkEsIDB4NzUyQSwgMHgzRTFCLCAweDc1MkIsIDB4NzUyQiwgMHgwNkExLA0KKyAgICAweDc1MkMsIDB4NzUyQywgMHgxQjM0LCAweDc1MkQsIDB4NzUyRCwgMHgwNDJCLCAweDc1MkUsIDB4NzUyRSwgMHgzRTFDLA0KKyAgICAweDc1MkYsIDB4NzUyRiwgMHgxNzM0LCAweDc1MzAsIDB4NzUzMCwgMHgwRTQyLCAweDc1MzEsIDB4NzUzMSwgMHgxMEFFLA0KKyAgICAweDc1MzIsIDB4NzUzMiwgMHgwODRBLCAweDc1MzMsIDB4NzUzMywgMHgwRDIzLCAweDc1MzQsIDB4NzUzNCwgMHgzRTFELA0KKyAgICAweDc1MzUsIDB4NzUzNSwgMHgwNUM4LCAweDc1MzYsIDB4NzUzNiwgMHgzRTFFLCAweDc1MzcsIDB4NzUzNywgMHgwQjMzLA0KKyAgICAweDc1MzgsIDB4NzUzOCwgMHgwNUNBLCAweDc1MzksIDB4NzUzOSwgMHgzRTFGLCAweDc1M0EsIDB4NzUzQSwgMHgxQTc4LA0KKyAgICAweDc1M0IsIDB4NzUzQiwgMHgwN0MyLCAweDc1M0MsIDB4NzUzRCwgMHgzRTIwLCAweDc1M0UsIDB4NzUzRSwgMHgxODE2LA0KKyAgICAweDc1M0YsIDB4NzUzRiwgMHgzRTIyLCAweDc1NDAsIDB4NzU0MCwgMHgxQTc5LCAweDc1NDEsIDB4NzU0NCwgMHgzRTIzLA0KKyAgICAweDc1NDUsIDB4NzU0NSwgMHgwNENFLCAweDc1NDYsIDB4NzU0NywgMHgzRTI3LCAweDc1NDgsIDB4NzU0OCwgMHgxQTdDLA0KKyAgICAweDc1NDksIDB4NzU0QSwgMHgzRTI5LCAweDc1NEIsIDB4NzU0QiwgMHgxQTdCLCAweDc1NEMsIDB4NzU0QywgMHgwOEI4LA0KKyAgICAweDc1NEQsIDB4NzU0RCwgMHgzRTJCLCAweDc1NEUsIDB4NzU0RSwgMHgxQTdBLCAweDc1NEYsIDB4NzU0RiwgMHgwRUM2LA0KKyAgICAweDc1NTAsIDB4NzU1MywgMHgzRTJDLCAweDc1NTQsIDB4NzU1NCwgMHgwQjkwLCAweDc1NTUsIDB4NzU1OCwgMHgzRTMwLA0KKyAgICAweDc1NTksIDB4NzU1OSwgMHgwQTNELCAweDc1NUEsIDB4NzU1QSwgMHgxMzlFLCAweDc1NUIsIDB4NzU1QiwgMHgxQTdELA0KKyAgICAweDc1NUMsIDB4NzU1QywgMHgwRkJFLCAweDc1NUQsIDB4NzU1RCwgMHgyMDhGLCAweDc1NUUsIDB4NzU2MSwgMHgzRTM0LA0KKyAgICAweDc1NjIsIDB4NzU2MiwgMHgxRTQyLCAweDc1NjMsIDB4NzU2NCwgMHgzRTM4LCAweDc1NjUsIDB4NzU2NSwgMHgwQTdCLA0KKyAgICAweDc1NjYsIDB4NzU2NiwgMHgwQzA3LCAweDc1NjcsIDB4NzU2OSwgMHgzRTNBLCAweDc1NkEsIDB4NzU2QSwgMHgwNjQ5LA0KKyAgICAweDc1NkIsIDB4NzU2QiwgMHgxRjRFLCAweDc1NkMsIDB4NzU3MSwgMHgzRTNELCAweDc1NzIsIDB4NzU3MiwgMHgxQTdFLA0KKyAgICAweDc1NzMsIDB4NzU3MywgMHgzRTQzLCAweDc1NzQsIDB4NzU3NCwgMHgwNTEwLCAweDc1NzUsIDB4NzU3NSwgMHgzRTQ0LA0KKyAgICAweDc1NzYsIDB4NzU3NiwgMHgxRUIxLCAweDc1NzcsIDB4NzU3NywgMHgzRTQ1LCAweDc1NzgsIDB4NzU3OCwgMHgwODEwLA0KKyAgICAweDc1NzksIDB4NzU3OSwgMHgxQTdGLCAweDc1N0EsIDB4NzU3RSwgMHgzRTQ2LCAweDc1N0YsIDB4NzU3RiwgMHgxODE0LA0KKyAgICAweDc1ODAsIDB4NzU4MiwgMHgzRTRCLCAweDc1ODMsIDB4NzU4MywgMHgxQTgwLCAweDc1ODQsIDB4NzU4NSwgMHgzRTRFLA0KKyAgICAweDc1ODYsIDB4NzU4NiwgMHgwODdGLCAweDc1ODcsIDB4NzU4NywgMHgxRThCLCAweDc1ODgsIDB4NzU4QSwgMHgzRTUwLA0KKyAgICAweDc1OEIsIDB4NzU4QiwgMHgxQkM2LCAweDc1OEMsIDB4NzU4RSwgMHgzRTUzLCAweDc1OEYsIDB4NzU4RiwgMHgwRDdGLA0KKyAgICAweDc1OTAsIDB4NzU5MCwgMHgzRTU2LCAweDc1OTEsIDB4NzU5MSwgMHgxMDUwLCAweDc1OTIsIDB4NzU5MiwgMHgxQjYwLA0KKyAgICAweDc1OTMsIDB4NzU5MywgMHgzRTU3LCAweDc1OTQsIDB4NzU5NCwgMHgxQjYxLCAweDc1OTUsIDB4NzU5NSwgMHgzRTU4LA0KKyAgICAweDc1OTYsIDB4NzU5NiwgMHgxQjYyLCAweDc1OTcsIDB4NzU5NywgMHgwQTBGLCAweDc1OTgsIDB4NzU5OCwgMHgzRTU5LA0KKyAgICAweDc1OTksIDB4NzU5OSwgMHgwNkU4LCAweDc1OUEsIDB4NzU5QSwgMHgwOEZELCAweDc1OUIsIDB4NzU5QywgMHgzRTVBLA0KKyAgICAweDc1OUQsIDB4NzU5RCwgMHgxQjY0LCAweDc1OUUsIDB4NzU5RSwgMHgzRTVDLCAweDc1OUYsIDB4NzU5RiwgMHgwQjcyLA0KKyAgICAweDc1QTAsIDB4NzVBMCwgMHgxQjYzLCAweDc1QTEsIDB4NzVBMSwgMHgxMDFBLCAweDc1QTIsIDB4NzVBMiwgMHgzRTVELA0KKyAgICAweDc1QTMsIDB4NzVBMywgMHgxQjY2LCAweDc1QTQsIDB4NzVBNCwgMHgwM0Q3LCAweDc1QTUsIDB4NzVBNSwgMHgwOEJCLA0KKyAgICAweDc1QTYsIDB4NzVBQSwgMHgzRTVFLCAweDc1QUIsIDB4NzVBQiwgMHgxMDY2LCAweDc1QUMsIDB4NzVBQywgMHgxQjY1LA0KKyAgICAweDc1QUQsIDB4NzVBRCwgMHgzRTYzLCAweDc1QUUsIDB4NzVBRSwgMHgwNTMyLCAweDc1QUYsIDB4NzVBRiwgMHgwNjg1LA0KKyAgICAweDc1QjAsIDB4NzVCMCwgMHgxQjZDLCAweDc1QjEsIDB4NzVCMSwgMHgxQjZCLCAweDc1QjIsIDB4NzVCMiwgMHgwQkMyLA0KKyAgICAweDc1QjMsIDB4NzVCNCwgMHgxQjY3LCAweDc1QjUsIDB4NzVCNSwgMHgwNTQ2LCAweDc1QjYsIDB4NzVCNywgMHgzRTY0LA0KKyAgICAweDc1QjgsIDB4NzVCOCwgMHgxQjY5LCAweDc1QjksIDB4NzVCOSwgMHgxMThGLCAweDc1QkEsIDB4NzVCQiwgMHgzRTY2LA0KKyAgICAweDc1QkMsIDB4NzVCQywgMHgwRTJFLCAweDc1QkQsIDB4NzVCRCwgMHgwOTAxLCAweDc1QkUsIDB4NzVCRSwgMHgwODI1LA0KKyAgICAweDc1QkYsIDB4NzVDMSwgMHgzRTY4LCAweDc1QzIsIDB4NzVDMiwgMHgxQjZFLCAweDc1QzMsIDB4NzVDMywgMHgxQjZELA0KKyAgICAweDc1QzQsIDB4NzVDNCwgMHgxQjZBLCAweDc1QzUsIDB4NzVDNSwgMHgwNDY4LCAweDc1QzYsIDB4NzVDNiwgMHgzRTZCLA0KKyAgICAweDc1QzcsIDB4NzVDNywgMHgxMUExLCAweDc1QzgsIDB4NzVDOCwgMHgxMDlELCAweDc1QzksIDB4NzVDOSwgMHgwOEU2LA0KKyAgICAweDc1Q0EsIDB4NzVDQSwgMHgwQzg3LCAweDc1Q0IsIDB4NzVDQywgMHgzRTZDLCAweDc1Q0QsIDB4NzVDRCwgMHgxQjcwLA0KKyAgICAweDc1Q0UsIDB4NzVEMSwgMHgzRTZFLCAweDc1RDIsIDB4NzVEMiwgMHgxMDIwLCAweDc1RDMsIDB4NzVEMywgMHgzRTcyLA0KKyAgICAweDc1RDQsIDB4NzVENCwgMHgxMUNCLCAweDc1RDUsIDB4NzVENSwgMHgwNzkyLCAweDc1RDYsIDB4NzVENiwgMHgxQjZGLA0KKyAgICAweDc1RDcsIDB4NzVENywgMHgzRTczLCAweDc1RDgsIDB4NzVEOCwgMHgwNUZBLCAweDc1RDksIDB4NzVEOSwgMHgxRkM2LA0KKyAgICAweDc1REEsIDB4NzVEQSwgMHgzRTc0LCAweDc1REIsIDB4NzVEQiwgMHgwRTY1LCAweDc1REMsIDB4NzVERCwgMHgzRTc1LA0KKyAgICAweDc1REUsIDB4NzVERSwgMHgwQkM1LCAweDc1REYsIDB4NzVFMSwgMHgzRTc3LCAweDc1RTIsIDB4NzVFMiwgMHgwOUVBLA0KKyAgICAweDc1RTMsIDB4NzVFMywgMHgxQjcxLCAweDc1RTQsIDB4NzVFNCwgMHgxQjc0LCAweDc1RTUsIDB4NzVFNSwgMHgzRTdBLA0KKyAgICAweDc1RTYsIDB4NzVFNiwgMHgxQjczLCAweDc1RTcsIDB4NzVFNywgMHgxQjc2LCAweDc1RTgsIDB4NzVFOCwgMHgxQjcyLA0KKyAgICAweDc1RTksIDB4NzVFOSwgMHgzRTdCLCAweDc1RUEsIDB4NzVFQSwgMHgwN0QzLCAweDc1RUIsIDB4NzVFQiwgMHgxQjc1LA0KKyAgICAweDc1RUMsIDB4NzVFRiwgMHgzRTdDLCAweDc1RjAsIDB4NzVGMCwgMHgwRTA4LCAweDc1RjEsIDB4NzVGMSwgMHgxQjc4LA0KKyAgICAweDc1RjIsIDB4NzVGMywgMHgzRTgwLCAweDc1RjQsIDB4NzVGNCwgMHgwNEZBLCAweDc1RjUsIDB4NzVGOCwgMHgzRTgyLA0KKyAgICAweDc1RjksIDB4NzVGOSwgMHgwNDNELCAweDc1RkEsIDB4NzVGQiwgMHgzRTg2LCAweDc1RkMsIDB4NzVGQywgMHgxQjc5LA0KKyAgICAweDc1RkQsIDB4NzVGRSwgMHgzRTg4LCAweDc1RkYsIDB4NzVGRiwgMHgxQjdBLCAweDc2MDAsIDB4NzYwMCwgMHgxQjdDLA0KKyAgICAweDc2MDEsIDB4NzYwMSwgMHgwNTY0LCAweDc2MDIsIDB4NzYwMiwgMHgyNUFFLCAweDc2MDMsIDB4NzYwMywgMHgxQjc3LA0KKyAgICAweDc2MDQsIDB4NzYwNCwgMHgzRThBLCAweDc2MDUsIDB4NzYwNSwgMHgxQjdELCAweDc2MDYsIDB4NzYwOSwgMHgzRThCLA0KKyAgICAweDc2MEEsIDB4NzYwQSwgMHgxQjgwLCAweDc2MEIsIDB4NzYwQiwgMHgxRjAxLCAweDc2MEMsIDB4NzYwQywgMHgxQjdFLA0KKyAgICAweDc2MEQsIDB4NzYwRCwgMHgyMjAwLCAweDc2MEUsIDB4NzYwRiwgMHgzRThGLCAweDc2MTAsIDB4NzYxMCwgMHgxQjdCLA0KKyAgICAweDc2MTEsIDB4NzYxNCwgMHgzRTkxLCAweDc2MTUsIDB4NzYxNSwgMHgxQjgzLCAweDc2MTYsIDB4NzYxNiwgMHgzRTk1LA0KKyAgICAweDc2MTcsIDB4NzYxNywgMHgxQjdGLCAweDc2MTgsIDB4NzYxOCwgMHgxQjgyLCAweDc2MTksIDB4NzYxOSwgMHgxQjg0LA0KKyAgICAweDc2MUEsIDB4NzYxQSwgMHgzRTk2LCAweDc2MUIsIDB4NzYxQiwgMHgxQjg1LCAweDc2MUMsIDB4NzYxRCwgMHgzRTk3LA0KKyAgICAweDc2MUUsIDB4NzYxRSwgMHgyNUIyLCAweDc2MUYsIDB4NzYxRiwgMHgwRUQwLCAweDc2MjAsIDB4NzYyMCwgMHgxQjg4LA0KKyAgICAweDc2MjEsIDB4NzYyMSwgMHgxRTk3LCAweDc2MjIsIDB4NzYyMiwgMHgxQjg3LCAweDc2MjMsIDB4NzYyMywgMHgzRTk5LA0KKyAgICAweDc2MjQsIDB4NzYyNCwgMHgwQTNGLCAweDc2MjUsIDB4NzYyNSwgMHgxQjgxLCAweDc2MjYsIDB4NzYyNiwgMHgwRDc0LA0KKyAgICAweDc2MjcsIDB4NzYyNywgMHgyMEFCLCAweDc2MjgsIDB4NzYyOCwgMHgzRTlBLCAweDc2MjksIDB4NzYyOSwgMHgwNTc0LA0KKyAgICAweDc2MkEsIDB4NzYyQSwgMHgwNDVBLCAweDc2MkIsIDB4NzYyQiwgMHgwRTA0LCAweDc2MkMsIDB4NzYyQywgMHgzRTlCLA0KKyAgICAweDc2MkQsIDB4NzYyRCwgMHgxQjhBLCAweDc2MkUsIDB4NzYyRiwgMHgzRTlDLCAweDc2MzAsIDB4NzYzMCwgMHgxQjhCLA0KKyAgICAweDc2MzEsIDB4NzYzMiwgMHgzRTlFLCAweDc2MzMsIDB4NzYzMywgMHgxQjkwLCAweDc2MzQsIDB4NzYzNCwgMHgxMTZGLA0KKyAgICAweDc2MzUsIDB4NzYzNSwgMHgxQjhELCAweDc2MzYsIDB4NzYzNywgMHgzRUEwLCAweDc2MzgsIDB4NzYzOCwgMHgwQzhFLA0KKyAgICAweDc2MzksIDB4NzYzQSwgMHgzRUEyLCAweDc2M0IsIDB4NzYzQiwgMHgyNUIzLCAweDc2M0MsIDB4NzYzQywgMHgxQjg2LA0KKyAgICAweDc2M0QsIDB4NzYzRCwgMHgzRUE0LCAweDc2M0UsIDB4NzYzRSwgMHgxQjhGLCAweDc2M0YsIDB4NzYzRiwgMHgxQjhDLA0KKyAgICAweDc2NDAsIDB4NzY0MCwgMHgxQjg5LCAweDc2NDEsIDB4NzY0MSwgMHgzRUE1LCAweDc2NDIsIDB4NzY0MiwgMHgyMDI4LA0KKyAgICAweDc2NDMsIDB4NzY0MywgMHgxQjhFLCAweDc2NDQsIDB4NzY0NSwgMHgzRUE2LCAweDc2NDYsIDB4NzY0NywgMHgyNUFGLA0KKyAgICAweDc2NDgsIDB4NzY0OCwgMHgzRUE4LCAweDc2NDksIDB4NzY0OSwgMHgyNUIxLCAweDc2NEEsIDB4NzY0QiwgMHgzRUE5LA0KKyAgICAweDc2NEMsIDB4NzY0QywgMHgwM0I0LCAweDc2NEQsIDB4NzY0RCwgMHgxQjkxLCAweDc2NEUsIDB4NzY1MywgMHgzRUFCLA0KKyAgICAweDc2NTQsIDB4NzY1NCwgMHgxQjkzLCAweDc2NTUsIDB4NzY1NSwgMHgzRUIxLCAweDc2NTYsIDB4NzY1NiwgMHgxQjk1LA0KKyAgICAweDc2NTcsIDB4NzY1NywgMHgzRUIyLCAweDc2NTgsIDB4NzY1OCwgMHgyNUFDLCAweDc2NTksIDB4NzY1QiwgMHgzRUIzLA0KKyAgICAweDc2NUMsIDB4NzY1QywgMHgxQjk0LCAweDc2NUQsIDB4NzY1RCwgMHgzRUI2LCAweDc2NUUsIDB4NzY1RSwgMHgxQjkyLA0KKyAgICAweDc2NUYsIDB4NzY1RiwgMHgxRTRFLCAweDc2NjAsIDB4NzY2MSwgMHgzRUI3LCAweDc2NjIsIDB4NzY2MiwgMHgyMjAyLA0KKyAgICAweDc2NjMsIDB4NzY2MywgMHgwRkNCLCAweDc2NjQsIDB4NzY2NCwgMHgyNUFCLCAweDc2NjUsIDB4NzY2NSwgMHgyMjg2LA0KKyAgICAweDc2NjYsIDB4NzY2NiwgMHgzRUI5LCAweDc2NjcsIDB4NzY2NywgMHgyNUFELCAweDc2NjgsIDB4NzY2OCwgMHgzRUJBLA0KKyAgICAweDc2NjksIDB4NzY2OSwgMHgyNUI2LCAweDc2NkEsIDB4NzY2QSwgMHgzRUJCLCAweDc2NkIsIDB4NzY2QiwgMHgxQjk2LA0KKyAgICAweDc2NkMsIDB4NzY2QywgMHgyMUUzLCAweDc2NkQsIDB4NzY2RSwgMHgyNUI0LCAweDc2NkYsIDB4NzY2RiwgMHgxQjk3LA0KKyAgICAweDc2NzAsIDB4NzY3MCwgMHgyMjJGLCAweDc2NzEsIDB4NzY3MSwgMHgyMTY1LCAweDc2NzIsIDB4NzY3MiwgMHgyNUI3LA0KKyAgICAweDc2NzMsIDB4NzY3NywgMHgzRUJDLCAweDc2NzgsIDB4NzY3OCwgMHgwNzQ4LCAweDc2NzksIDB4NzY3QSwgMHgzRUMxLA0KKyAgICAweDc2N0IsIDB4NzY3QiwgMHgwNUE4LCAweDc2N0MsIDB4NzY3QywgMHgxRUU5LCAweDc2N0QsIDB4NzY3RCwgMHgwM0UyLA0KKyAgICAweDc2N0UsIDB4NzY3RSwgMHgwM0U0LCAweDc2N0YsIDB4NzY4MSwgMHgzRUMzLCAweDc2ODIsIDB4NzY4MiwgMHgxMTMwLA0KKyAgICAweDc2ODMsIDB4NzY4MywgMHgzRUM2LCAweDc2ODQsIDB4NzY4NCwgMHgwNUE1LCAweDc2ODUsIDB4NzY4NSwgMHgzRUM3LA0KKyAgICAweDc2ODYsIDB4NzY4NiwgMHgwOEE1LCAweDc2ODcsIDB4NzY4NywgMHgwN0RGLCAweDc2ODgsIDB4NzY4OCwgMHgxQjJELA0KKyAgICAweDc2ODksIDB4NzY4QSwgMHgzRUM4LCAweDc2OEIsIDB4NzY4QiwgMHgwNkQ5LCAweDc2OEMsIDB4NzY4RCwgMHgzRUNBLA0KKyAgICAweDc2OEUsIDB4NzY4RSwgMHgxQjJFLCAweDc2OEYsIDB4NzY5MCwgMHgzRUNDLCAweDc2OTEsIDB4NzY5MSwgMHgwM0IzLA0KKyAgICAweDc2OTIsIDB4NzY5MiwgMHgzRUNFLCAweDc2OTMsIDB4NzY5MywgMHgxQjJGLCAweDc2OTQsIDB4NzY5NSwgMHgzRUNGLA0KKyAgICAweDc2OTYsIDB4NzY5NiwgMHgwRTlGLCAweDc2OTcsIDB4NzY5OCwgMHgzRUQxLCAweDc2OTksIDB4NzY5OSwgMHgxQjMwLA0KKyAgICAweDc2OUEsIDB4NzY5QSwgMHgxRTI1LCAweDc2OUIsIDB4NzZBMywgMHgzRUQzLCAweDc2QTQsIDB4NzZBNCwgMHgxQjMxLA0KKyAgICAweDc2QTUsIDB4NzZBRCwgMHgzRURDLCAweDc2QUUsIDB4NzZBRSwgMHgwQkMzLCAweDc2QUYsIDB4NzZCMCwgMHgzRUU1LA0KKyAgICAweDc2QjEsIDB4NzZCMSwgMHgxMUU0LCAweDc2QjIsIDB4NzZCMiwgMHgxQkM4LCAweDc2QjMsIDB4NzZCMywgMHgzRUU3LA0KKyAgICAweDc2QjQsIDB4NzZCNCwgMHgxQkM5LCAweDc2QjUsIDB4NzZCNywgMHgzRUU4LCAweDc2QjgsIDB4NzZCOCwgMHgyNUMwLA0KKyAgICAweDc2QjksIDB4NzZCOSwgMHgzRUVCLCAweDc2QkEsIDB4NzZCQSwgMHgyMjlBLCAweDc2QkIsIDB4NzZCRSwgMHgzRUVDLA0KKyAgICAweDc2QkYsIDB4NzZCRiwgMHgwQUY4LCAweDc2QzAsIDB4NzZDMSwgMHgzRUYwLCAweDc2QzIsIDB4NzZDMiwgMHgxMEMwLA0KKyAgICAweDc2QzMsIDB4NzZDNCwgMHgzRUYyLCAweDc2QzUsIDB4NzZDNSwgMHgxMUQwLCAweDc2QzYsIDB4NzZDNiwgMHgwQkE5LA0KKyAgICAweDc2QzcsIDB4NzZDNywgMHgzRUY0LCAweDc2QzgsIDB4NzZDOCwgMHgxMDk0LCAweDc2QzksIDB4NzZDOSwgMHgzRUY1LA0KKyAgICAweDc2Q0EsIDB4NzZDQSwgMHgxMDZELCAweDc2Q0IsIDB4NzZDQywgMHgzRUY2LCAweDc2Q0QsIDB4NzZDRCwgMHgxQThCLA0KKyAgICAweDc2Q0UsIDB4NzZDRSwgMHgwM0M2LCAweDc2Q0YsIDB4NzZDRiwgMHgxMTU2LCAweDc2RDAsIDB4NzZEMCwgMHgwRkY3LA0KKyAgICAweDc2RDEsIDB4NzZEMSwgMHgwODUzLCAweDc2RDIsIDB4NzZEMiwgMHgwNzg3LCAweDc2RDMsIDB4NzZEMywgMHgzRUY4LA0KKyAgICAweDc2RDQsIDB4NzZENCwgMHgwOTg1LCAweDc2RDUsIDB4NzZENSwgMHgzRUY5LCAweDc2RDYsIDB4NzZENiwgMHgwNkMyLA0KKyAgICAweDc2RDcsIDB4NzZENywgMHgwNUEyLCAweDc2RDgsIDB4NzZEOCwgMHgwQjhELCAweDc2RDksIDB4NzZEQSwgMHgzRUZBLA0KKyAgICAweDc2REIsIDB4NzZEQiwgMHgwRDM5LCAweDc2REMsIDB4NzZERCwgMHgzRUZDLCAweDc2REUsIDB4NzZERSwgMHgyMjZFLA0KKyAgICAweDc2REYsIDB4NzZERiwgMHgwQUQwLCAweDc2RTAsIDB4NzZFMCwgMHgzRUZFLCAweDc2RTEsIDB4NzZFMSwgMHgxRkJELA0KKyAgICAweDc2RTIsIDB4NzZFMiwgMHgzRUZGLCAweDc2RTMsIDB4NzZFMywgMHgxRjg0LCAweDc2RTQsIDB4NzZFNCwgMHgyMEIyLA0KKyAgICAweDc2RTUsIDB4NzZFNSwgMHgxQThDLCAweDc2RTYsIDB4NzZFNiwgMHgzRjAwLCAweDc2RTcsIDB4NzZFNywgMHgyMDQzLA0KKyAgICAweDc2RTgsIDB4NzZFRCwgMHgzRjAxLCAweDc2RUUsIDB4NzZFRSwgMHgwQjIyLCAweDc2RUYsIDB4NzZFRiwgMHgwNUUxLA0KKyAgICAweDc2RjAsIDB4NzZGMCwgMHgzRjA3LCAweDc2RjEsIDB4NzZGMSwgMHgxQTU4LCAweDc2RjIsIDB4NzZGMiwgMHgwQUE5LA0KKyAgICAweDc2RjMsIDB4NzZGMywgMHgzRjA4LCAweDc2RjQsIDB4NzZGNCwgMHgxMUIwLCAweDc2RjUsIDB4NzZGNywgMHgzRjA5LA0KKyAgICAweDc2RjgsIDB4NzZGOCwgMHgwRjRELCAweDc2RjksIDB4NzZGOSwgMHgxQTVCLCAweDc2RkEsIDB4NzZGQiwgMHgzRjBDLA0KKyAgICAweDc2RkMsIDB4NzZGQywgMHgwQjhGLCAweDc2RkQsIDB4NzZGRCwgMHgzRjBFLCAweDc2RkUsIDB4NzZGRSwgMHgwNjFCLA0KKyAgICAweDc2RkYsIDB4NzZGRiwgMHgzRjBGLCAweDc3MDAsIDB4NzcwMCwgMHgzRjEwLCAweDc3MDEsIDB4NzcwMSwgMHgwRDM4LA0KKyAgICAweDc3MDIsIDB4NzcwMywgMHgzRjExLCAweDc3MDQsIDB4NzcwNCwgMHgxQTU5LCAweDc3MDUsIDB4NzcwNiwgMHgzRjEzLA0KKyAgICAweDc3MDcsIDB4NzcwOCwgMHgxQTVDLCAweDc3MDksIDB4NzcwOSwgMHgwQUMxLCAweDc3MEEsIDB4NzcwQSwgMHgzRjE1LA0KKyAgICAweDc3MEIsIDB4NzcwQiwgMHgwOTQxLCAweDc3MEMsIDB4NzcwQywgMHgzRjE2LCAweDc3MEQsIDB4NzcwRCwgMHgxQTVBLA0KKyAgICAweDc3MEUsIDB4NzcxOCwgMHgzRjE3LCAweDc3MTksIDB4NzcxOSwgMHgxQTYwLCAweDc3MUEsIDB4NzcxQSwgMHgxQTVFLA0KKyAgICAweDc3MUIsIDB4NzcxRSwgMHgzRjIyLCAweDc3MUYsIDB4NzcxRiwgMHgxMTg3LCAweDc3MjAsIDB4NzcyMCwgMHgwQUU0LA0KKyAgICAweDc3MjEsIDB4NzcyMSwgMHgzRjI2LCAweDc3MjIsIDB4NzcyMiwgMHgxQTVGLCAweDc3MjMsIDB4NzcyNSwgMHgzRjI3LA0KKyAgICAweDc3MjYsIDB4NzcyNiwgMHgxQTYyLCAweDc3MjcsIDB4NzcyNywgMHgzRjJBLCAweDc3MjgsIDB4NzcyOCwgMHgxMTQ0LA0KKyAgICAweDc3MjksIDB4NzcyOSwgMHgwRkNDLCAweDc3MkEsIDB4NzcyQywgMHgzRjJCLCAweDc3MkQsIDB4NzcyRCwgMHgxQTYxLA0KKyAgICAweDc3MkUsIDB4NzcyRSwgMHgzRjJFLCAweDc3MkYsIDB4NzcyRiwgMHgwQUQ1LCAweDc3MzAsIDB4NzczNCwgMHgzRjJGLA0KKyAgICAweDc3MzUsIDB4NzczNSwgMHgxQTYzLCAweDc3MzYsIDB4NzczNiwgMHgwOTgxLCAweDc3MzcsIDB4NzczNywgMHgwOTFCLA0KKyAgICAweDc3MzgsIDB4NzczOCwgMHgxQTY0LCAweDc3MzksIDB4NzczOSwgMHgzRjM0LCAweDc3M0EsIDB4NzczQSwgMHgwRTRBLA0KKyAgICAweDc3M0IsIDB4NzczQiwgMHgzRjM1LCAweDc3M0MsIDB4NzczQywgMHgxMDA0LCAweDc3M0QsIDB4NzczRiwgMHgzRjM2LA0KKyAgICAweDc3NDAsIDB4Nzc0MCwgMHgxMjIyLCAweDc3NDEsIDB4Nzc0MSwgMHgxMTk3LCAweDc3NDIsIDB4Nzc0MiwgMHgzRjM5LA0KKyAgICAweDc3NDMsIDB4Nzc0MywgMHgxQTY4LCAweDc3NDQsIDB4Nzc0NiwgMHgzRjNBLCAweDc3NDcsIDB4Nzc0NywgMHgxQTY3LA0KKyAgICAweDc3NDgsIDB4Nzc0RSwgMHgzRjNELCAweDc3NEYsIDB4Nzc0RiwgMHgyNjg0LCAweDc3NTAsIDB4Nzc1MSwgMHgxQTY1LA0KKyAgICAweDc3NTIsIDB4Nzc1OSwgMHgzRjQ0LCAweDc3NUEsIDB4Nzc1QSwgMHgxQTY5LCAweDc3NUIsIDB4Nzc1QiwgMHgwOEQ1LA0KKyAgICAweDc3NUMsIDB4Nzc1RCwgMHgzRjRDLCAweDc3NUUsIDB4Nzc1RSwgMHgyNEVGLCAweDc3NUYsIDB4Nzc2MCwgMHgzRjRFLA0KKyAgICAweDc3NjEsIDB4Nzc2MSwgMHgwREE0LCAweDc3NjIsIDB4Nzc2MiwgMHgxQTZCLCAweDc3NjMsIDB4Nzc2MywgMHgwNUZDLA0KKyAgICAweDc3NjQsIDB4Nzc2NCwgMHgzRjUwLCAweDc3NjUsIDB4Nzc2NSwgMHgxQTZDLCAweDc3NjYsIDB4Nzc2NiwgMHgwQjIzLA0KKyAgICAweDc3NjcsIDB4Nzc2NywgMHgzRjUxLCAweDc3NjgsIDB4Nzc2OCwgMHgxQTZBLCAweDc3NjksIDB4Nzc2QSwgMHgzRjUyLA0KKyAgICAweDc3NkIsIDB4Nzc2QiwgMHgwOEFGLCAweDc3NkMsIDB4Nzc2QywgMHgwNDhFLCAweDc3NkQsIDB4Nzc3OCwgMHgzRjU0LA0KKyAgICAweDc3NzksIDB4Nzc3OSwgMHgwNjAyLCAweDc3N0EsIDB4Nzc3QywgMHgzRjYwLCAweDc3N0QsIDB4Nzc3RCwgMHgxQTZGLA0KKyAgICAweDc3N0UsIDB4Nzc3RSwgMHgxMjcwLCAweDc3N0YsIDB4Nzc3RiwgMHgxQTZELCAweDc3ODAsIDB4Nzc4MCwgMHgxQTcwLA0KKyAgICAweDc3ODEsIDB4Nzc4MywgMHgzRjYzLCAweDc3ODQsIDB4Nzc4NCwgMHgwQUVFLCAweDc3ODUsIDB4Nzc4NSwgMHgwNTE3LA0KKyAgICAweDc3ODYsIDB4Nzc4QiwgMHgzRjY2LCAweDc3OEMsIDB4Nzc4QywgMHgxQTcxLCAweDc3OEQsIDB4Nzc4RCwgMHgxQTZFLA0KKyAgICAweDc3OEUsIDB4Nzc4RSwgMHgwRjI2LCAweDc3OEYsIDB4Nzc5MCwgMHgzRjZDLCAweDc3OTEsIDB4Nzc5MSwgMHgxQTcyLA0KKyAgICAweDc3OTIsIDB4Nzc5MiwgMHgwQTlFLCAweDc3OTMsIDB4Nzc5NywgMHgzRjZFLCAweDc3OTgsIDB4Nzc5OCwgMHgyNEVFLA0KKyAgICAweDc3OTksIDB4Nzc5RCwgMHgzRjczLCAweDc3OUUsIDB4Nzc5RSwgMHgyMDc0LCAweDc3OUYsIDB4NzdBMCwgMHgxQTczLA0KKyAgICAweDc3QTEsIDB4NzdBMSwgMHgzRjc4LCAweDc3QTIsIDB4NzdBMiwgMHgxNDk1LCAweDc3QTMsIDB4NzdBNCwgMHgzRjc5LA0KKyAgICAweDc3QTUsIDB4NzdBNSwgMHgwQkQyLCAweDc3QTYsIDB4NzdBNiwgMHgzRjdCLCAweDc3QTcsIDB4NzdBNywgMHgwQzQzLA0KKyAgICAweDc3QTgsIDB4NzdBOCwgMHgzRjdDLCAweDc3QTksIDB4NzdBOSwgMHgxMUY0LCAweDc3QUEsIDB4NzdBQSwgMHgwNUFBLA0KKyAgICAweDc3QUIsIDB4NzdBQiwgMHgzRjdELCAweDc3QUMsIDB4NzdBQywgMHgwREE3LCAweDc3QUQsIDB4NzdBRCwgMHgyNjg3LA0KKyAgICAweDc3QUUsIDB4NzdBRiwgMHgzRjdFLCAweDc3QjAsIDB4NzdCMCwgMHgxQTc1LCAweDc3QjEsIDB4NzdCMiwgMHgzRjgwLA0KKyAgICAweDc3QjMsIDB4NzdCMywgMHgwRTVDLCAweDc3QjQsIDB4NzdCNCwgMHgzRjgyLCAweDc3QjUsIDB4NzdCNSwgMHgxQTc2LA0KKyAgICAweDc3QjYsIDB4NzdCQSwgMHgzRjgzLCAweDc3QkIsIDB4NzdCQiwgMHgxMTUxLCAweDc3QkMsIDB4NzdCQywgMHgyNEYwLA0KKyAgICAweDc3QkQsIDB4NzdCRCwgMHgxQTc3LCAweDc3QkUsIDB4NzdCRSwgMHgzRjg4LCAweDc3QkYsIDB4NzdCRiwgMHgxRDdFLA0KKyAgICAweDc3QzAsIDB4NzdDNiwgMHgzRjg5LCAweDc3QzcsIDB4NzdDNywgMHgyNjhELCAweDc3QzgsIDB4NzdDQywgMHgzRjkwLA0KKyAgICAweDc3Q0QsIDB4NzdDRCwgMHgxMzk3LCAweDc3Q0UsIDB4NzdENiwgMHgzRjk1LCAweDc3RDcsIDB4NzdENywgMHgwNTI2LA0KKyAgICAweDc3RDgsIDB4NzdEOSwgMHgzRjlFLCAweDc3REEsIDB4NzdEQSwgMHgyMkEwLCAweDc3REIsIDB4NzdEQiwgMHgwQUIxLA0KKyAgICAweDc3REMsIDB4NzdEQywgMHgxQkNBLCAweDc3REQsIDB4NzdFMSwgMHgzRkEwLCAweDc3RTIsIDB4NzdFMiwgMHgwRDRGLA0KKyAgICAweDc3RTMsIDB4NzdFMywgMHgxMDVBLCAweDc3RTQsIDB4NzdFNCwgMHgzRkE1LCAweDc3RTUsIDB4NzdFNSwgMHgxMUE5LA0KKyAgICAweDc3RTYsIDB4NzdFNiwgMHgzRkE2LCAweDc3RTcsIDB4NzdFNywgMHgxQjFBLCAweDc3RTgsIDB4NzdFOCwgMHgzRkE3LA0KKyAgICAweDc3RTksIDB4NzdFOSwgMHgwOTA3LCAweDc3RUEsIDB4NzdFQSwgMHgzRkE4LCAweDc3RUIsIDB4NzdFQiwgMHgwODk0LA0KKyAgICAweDc3RUMsIDB4NzdFQywgMHgxQjFCLCAweDc3RUQsIDB4NzdFRCwgMHgwNjBCLCAweDc3RUUsIDB4NzdFRSwgMHgwM0I2LA0KKyAgICAweDc3RUYsIDB4NzdFRiwgMHgxRkFCLCAweDc3RjAsIDB4NzdGMiwgMHgzRkE5LCAweDc3RjMsIDB4NzdGMywgMHgwRDQ2LA0KKyAgICAweDc3RjQsIDB4NzdGNSwgMHgzRkFDLCAweDc3RjYsIDB4NzdGNiwgMHgxQTIyLCAweDc3RjcsIDB4NzdGNywgMHgzRkFFLA0KKyAgICAweDc3RjgsIDB4NzdGOCwgMHgxQTIzLCAweDc3RjksIDB4NzdGQywgMHgzRkFGLCAweDc3RkQsIDB4NzdGRCwgMHgwRjA4LA0KKyAgICAweDc3RkUsIDB4NzdGRSwgMHgwNjRDLCAweDc3RkYsIDB4NzdGRiwgMHgwOTgwLCAweDc4MDAsIDB4NzgwMCwgMHgxQTI0LA0KKyAgICAweDc4MDEsIDB4NzgwMSwgMHgwQTkyLCAweDc4MDIsIDB4NzgwMiwgMHgwQ0U5LCAweDc4MDMsIDB4NzgwOCwgMHgzRkIzLA0KKyAgICAweDc4MDksIDB4NzgwOSwgMHgxQTI1LCAweDc4MEEsIDB4NzgwQiwgMHgzRkI5LCAweDc4MEMsIDB4NzgwQywgMHgwQzE1LA0KKyAgICAweDc4MEQsIDB4NzgwRCwgMHgwOTQwLCAweDc4MEUsIDB4NzgxMCwgMHgzRkJCLCAweDc4MTEsIDB4NzgxMSwgMHgxQTI4LA0KKyAgICAweDc4MTIsIDB4NzgxMiwgMHgwQkI5LCAweDc4MTMsIDB4NzgxMywgMHgzRkJFLCAweDc4MTQsIDB4NzgxNCwgMHgwRkY5LA0KKyAgICAweDc4MTUsIDB4NzgxNSwgMHgzRkJGLCAweDc4MTYsIDB4NzgxNiwgMHgxMjA2LCAweDc4MTcsIDB4NzgxOCwgMHgxQTI2LA0KKyAgICAweDc4MTksIDB4NzgxOSwgMHgzRkMwLCAweDc4MUEsIDB4NzgxQSwgMHgxMDBCLCAweDc4MUIsIDB4NzgxQiwgMHgzRkMxLA0KKyAgICAweDc4MUMsIDB4NzgxRCwgMHgxQTJCLCAweDc4MUUsIDB4NzgxRSwgMHgzRkMyLCAweDc4MUYsIDB4NzgxRiwgMHgxQTMwLA0KKyAgICAweDc4MjAsIDB4NzgyMiwgMHgzRkMzLCAweDc4MjMsIDB4NzgyMywgMHgxQTM0LCAweDc4MjQsIDB4NzgyNCwgMHgzRkM2LA0KKyAgICAweDc4MjUsIDB4NzgyNSwgMHgxQTMyLCAweDc4MjYsIDB4NzgyNiwgMHgxQTNBLCAweDc4MjcsIDB4NzgyNywgMHgxMTg5LA0KKyAgICAweDc4MjgsIDB4NzgyOCwgMHgzRkM3LCAweDc4MjksIDB4NzgyOSwgMHgxQTM1LCAweDc4MkEsIDB4NzgyQiwgMHgzRkM4LA0KKyAgICAweDc4MkMsIDB4NzgyQywgMHgxQTMzLCAweDc4MkQsIDB4NzgyRCwgMHgxQTJBLCAweDc4MkUsIDB4NzgyRiwgMHgzRkNBLA0KKyAgICAweDc4MzAsIDB4NzgzMCwgMHgwQkFBLCAweDc4MzEsIDB4NzgzMywgMHgzRkNDLCAweDc4MzQsIDB4NzgzNCwgMHgwQkU1LA0KKyAgICAweDc4MzUsIDB4NzgzNiwgMHgzRkNGLCAweDc4MzcsIDB4NzgzNywgMHgwRDIyLCAweDc4MzgsIDB4NzgzOCwgMHgxMTE1LA0KKyAgICAweDc4MzksIDB4NzgzQiwgMHgxQTJELCAweDc4M0MsIDB4NzgzQywgMHgxQTMxLCAweDc4M0QsIDB4NzgzRCwgMHgzRkQxLA0KKyAgICAweDc4M0UsIDB4NzgzRSwgMHgwOUU0LCAweDc4M0YsIDB4NzgzRiwgMHgzRkQyLCAweDc4NDAsIDB4Nzg0MCwgMHgwNTI0LA0KKyAgICAweDc4NDEsIDB4Nzg0MiwgMHgzRkQzLCAweDc4NDMsIDB4Nzg0MywgMHgyNkE4LCAweDc4NDQsIDB4Nzg0NCwgMHgzRkQ1LA0KKyAgICAweDc4NDUsIDB4Nzg0NSwgMHgwNzQxLCAweDc4NDYsIDB4Nzg0NiwgMHgzRkQ2LCAweDc4NDcsIDB4Nzg0NywgMHgxQTNDLA0KKyAgICAweDc4NDgsIDB4Nzg0QiwgMHgzRkQ3LCAweDc4NEMsIDB4Nzg0QywgMHgxQTNELCAweDc4NEQsIDB4Nzg0RCwgMHgzRkRCLA0KKyAgICAweDc4NEUsIDB4Nzg0RSwgMHgxQTM2LCAweDc4NEYsIDB4Nzg0RiwgMHgzRkRDLCAweDc4NTAsIDB4Nzg1MCwgMHgxQTNCLA0KKyAgICAweDc4NTEsIDB4Nzg1MSwgMHgzRkRELCAweDc4NTIsIDB4Nzg1MiwgMHgwRjA3LCAweDc4NTMsIDB4Nzg1NCwgMHgzRkRFLA0KKyAgICAweDc4NTUsIDB4Nzg1NSwgMHgwREFCLCAweDc4NTYsIDB4Nzg1NywgMHgxQTM4LCAweDc4NTgsIDB4Nzg1QywgMHgzRkUwLA0KKyAgICAweDc4NUQsIDB4Nzg1RCwgMHgwRjYyLCAweDc4NUUsIDB4Nzg2MywgMHgzRkU1LCAweDc4NjQsIDB4Nzg2NCwgMHgyNEU5LA0KKyAgICAweDc4NjUsIDB4Nzg2NywgMHgzRkVCLCAweDc4NjgsIDB4Nzg2OCwgMHgyNEU1LCAweDc4NjksIDB4Nzg2OSwgMHgzRkVFLA0KKyAgICAweDc4NkEsIDB4Nzg2QSwgMHgxQTNFLCAweDc4NkIsIDB4Nzg2QiwgMHgwQTNCLCAweDc4NkMsIDB4Nzg2QywgMHgxMDk3LA0KKyAgICAweDc4NkQsIDB4Nzg2RCwgMHgxQTM3LCAweDc4NkUsIDB4Nzg2RSwgMHgwQzkyLCAweDc4NkYsIDB4Nzg2RiwgMHgyMUZBLA0KKyAgICAweDc4NzAsIDB4Nzg3NiwgMHgzRkVGLCAweDc4NzcsIDB4Nzg3NywgMHgwODYyLCAweDc4NzgsIDB4Nzg3QiwgMHgzRkY2LA0KKyAgICAweDc4N0MsIDB4Nzg3QywgMHgwQkIxLCAweDc4N0QsIDB4Nzg4NiwgMHgzRkZBLCAweDc4ODcsIDB4Nzg4NywgMHgxQTQyLA0KKyAgICAweDc4ODgsIDB4Nzg4OCwgMHg0MDA0LCAweDc4ODksIDB4Nzg4OSwgMHgwNUQwLCAweDc4OEEsIDB4Nzg4QiwgMHg0MDA1LA0KKyAgICAweDc4OEMsIDB4Nzg4QywgMHgwQTVDLCAweDc4OEQsIDB4Nzg4RCwgMHgwM0I4LCAweDc4OEUsIDB4Nzg4RSwgMHgwRERFLA0KKyAgICAweDc4OEYsIDB4Nzg5MCwgMHg0MDA3LCAweDc4OTEsIDB4Nzg5MSwgMHgwNDE3LCAweDc4OTIsIDB4Nzg5MiwgMHg0MDA5LA0KKyAgICAweDc4OTMsIDB4Nzg5MywgMHgxQTQwLCAweDc4OTQsIDB4Nzg5NiwgMHg0MDBBLCAweDc4OTcsIDB4Nzg5NywgMHgwRTlDLA0KKyAgICAweDc4OTgsIDB4Nzg5OCwgMHgwNUMzLCAweDc4OTksIDB4Nzg5OSwgMHg0MDBELCAweDc4OUEsIDB4Nzg5QSwgMHgxQTQxLA0KKyAgICAweDc4OUIsIDB4Nzg5QiwgMHgxQTNGLCAweDc4OUMsIDB4Nzg5QywgMHgxQTQzLCAweDc4OUQsIDB4Nzg5RSwgMHg0MDBFLA0KKyAgICAweDc4OUYsIDB4Nzg5RiwgMHgwNURCLCAweDc4QTAsIDB4NzhBMCwgMHg0MDEwLCAweDc4QTEsIDB4NzhBMSwgMHgxQTQ0LA0KKyAgICAweDc4QTIsIDB4NzhBMiwgMHg0MDExLCAweDc4QTMsIDB4NzhBMywgMHgxQTQ1LCAweDc4QTQsIDB4NzhBNCwgMHg0MDEyLA0KKyAgICAweDc4QTUsIDB4NzhBNSwgMHgxQTQ4LCAweDc4QTYsIDB4NzhBNiwgMHg0MDEzLCAweDc4QTcsIDB4NzhBNywgMHgwNDM1LA0KKyAgICAweDc4QTgsIDB4NzhBOCwgMHg0MDE0LCAweDc4QTksIDB4NzhBOSwgMHgyMTQ4LCAweDc4QUEsIDB4NzhBQywgMHg0MDE1LA0KKyAgICAweDc4QUQsIDB4NzhBRCwgMHgyNEU0LCAweDc4QUUsIDB4NzhBRiwgMHg0MDE4LCAweDc4QjAsIDB4NzhCMCwgMHgwQkI3LA0KKyAgICAweDc4QjEsIDB4NzhCMSwgMHgwODYxLCAweDc4QjIsIDB4NzhCMiwgMHgxQTQ2LCAweDc4QjMsIDB4NzhCMywgMHgwRTBGLA0KKyAgICAweDc4QjQsIDB4NzhCNCwgMHgwNEIxLCAweDc4QjUsIDB4NzhCNywgMHg0MDFBLCAweDc4QjgsIDB4NzhCOCwgMHgyNEU2LA0KKyAgICAweDc4QjksIDB4NzhCOSwgMHgxQTQ3LCAweDc4QkEsIDB4NzhCQSwgMHgyMEY3LCAweDc4QkIsIDB4NzhCQiwgMHg0MDFELA0KKyAgICAweDc4QkMsIDB4NzhCQywgMHgyMDZCLCAweDc4QkQsIDB4NzhCRCwgMHg0MDFFLCAweDc4QkUsIDB4NzhCRSwgMHgwQjRFLA0KKyAgICAweDc4QkYsIDB4NzhDMCwgMHg0MDFGLCAweDc4QzEsIDB4NzhDMSwgMHgwNTQ4LCAweDc4QzIsIDB4NzhDNCwgMHg0MDIxLA0KKyAgICAweDc4QzUsIDB4NzhDNSwgMHgwNDAwLCAweDc4QzYsIDB4NzhDOCwgMHg0MDI0LCAweDc4QzksIDB4NzhDOSwgMHgxQTRCLA0KKyAgICAweDc4Q0EsIDB4NzhDQSwgMHgwOUM1LCAweDc4Q0IsIDB4NzhDQiwgMHgwNTZCLCAweDc4Q0MsIDB4NzhDRiwgMHg0MDI3LA0KKyAgICAweDc4RDAsIDB4NzhEMCwgMHgwQjhFLCAweDc4RDEsIDB4NzhEMywgMHg0MDJCLCAweDc4RDQsIDB4NzhENCwgMHgxQTQ5LA0KKyAgICAweDc4RDUsIDB4NzhENSwgMHgwOTUxLCAweDc4RDYsIDB4NzhEOCwgMHg0MDJFLCAweDc4RDksIDB4NzhEOSwgMHgxQTRBLA0KKyAgICAweDc4REEsIDB4NzhEQSwgMHgyMkE3LCAweDc4REIsIDB4NzhFMiwgMHg0MDMxLCAweDc4RTMsIDB4NzhFMywgMHgyNEVDLA0KKyAgICAweDc4RTQsIDB4NzhFNiwgMHg0MDM5LCAweDc4RTcsIDB4NzhFNywgMHgyNEVCLCAweDc4RTgsIDB4NzhFOCwgMHgwQjA4LA0KKyAgICAweDc4RTksIDB4NzhFQiwgMHg0MDNDLCAweDc4RUMsIDB4NzhFQywgMHgxQTRDLCAweDc4RUQsIDB4NzhFRSwgMHg0MDNGLA0KKyAgICAweDc4RUYsIDB4NzhFRiwgMHgyNEUzLCAweDc4RjAsIDB4NzhGMSwgMHg0MDQxLCAweDc4RjIsIDB4NzhGMiwgMHgxQTRELA0KKyAgICAweDc4RjMsIDB4NzhGMywgMHg0MDQzLCAweDc4RjQsIDB4NzhGNCwgMHgxQTRGLCAweDc4RjUsIDB4NzhGNiwgMHg0MDQ0LA0KKyAgICAweDc4RjcsIDB4NzhGNywgMHgwQTIwLCAweDc4RjgsIDB4NzhGOSwgMHg0MDQ2LCAweDc4RkEsIDB4NzhGQSwgMHgwN0RDLA0KKyAgICAweDc4RkIsIDB4NzhGQywgMHg0MDQ4LCAweDc4RkQsIDB4NzhGRCwgMHgyNEVBLCAweDc4RkUsIDB4NzhGRiwgMHg0MDRBLA0KKyAgICAweDc5MDAsIDB4NzkwMCwgMHg0MDRDLCAweDc5MDEsIDB4NzkwMSwgMHgwODg5LCAweDc5MDIsIDB4NzkwNCwgMHg0MDRELA0KKyAgICAweDc5MDUsIDB4NzkwNSwgMHgxQTRFLCAweDc5MDYsIDB4NzkwRCwgMHg0MDUwLCAweDc5MEUsIDB4NzkwRSwgMHgxRTkyLA0KKyAgICAweDc5MEYsIDB4NzkxMiwgMHg0MDU4LCAweDc5MTMsIDB4NzkxMywgMHgxQTUwLCAweDc5MTQsIDB4NzkxOCwgMHg0MDVDLA0KKyAgICAweDc5MTksIDB4NzkxOSwgMHgxRTI3LCAweDc5MUEsIDB4NzkxRCwgMHg0MDYxLCAweDc5MUUsIDB4NzkxRSwgMHgxQTUyLA0KKyAgICAweDc5MUYsIDB4NzkyMywgMHg0MDY1LCAweDc5MjQsIDB4NzkyNCwgMHgxQTUxLCAweDc5MjUsIDB4NzkyNSwgMHg0MDZBLA0KKyAgICAweDc5MjYsIDB4NzkyNiwgMHgxRkU2LCAweDc5MjcsIDB4NzkyOSwgMHg0MDZCLCAweDc5MkEsIDB4NzkyQSwgMHgyNEU3LA0KKyAgICAweDc5MkIsIDB4NzkyQiwgMHgyMDEyLCAweDc5MkMsIDB4NzkyQywgMHgxRUVDLCAweDc5MkQsIDB4NzkzMCwgMHg0MDZFLA0KKyAgICAweDc5MzEsIDB4NzkzMSwgMHgyNEU4LCAweDc5MzIsIDB4NzkzMywgMHg0MDcyLCAweDc5MzQsIDB4NzkzNCwgMHgxQTUzLA0KKyAgICAweDc5MzUsIDB4NzkzOSwgMHg0MDc0LCAweDc5M0EsIDB4NzkzQSwgMHgwRDU1LCAweDc5M0IsIDB4NzkzQiwgMHgxOUY4LA0KKyAgICAweDc5M0MsIDB4NzkzQywgMHgwOURDLCAweDc5M0QsIDB4NzkzRCwgMHg0MDc5LCAweDc5M0UsIDB4NzkzRSwgMHgwRDIwLA0KKyAgICAweDc5M0YsIDB4NzkzRiwgMHg0MDdBLCAweDc5NDAsIDB4Nzk0MCwgMHgxOUY5LCAweDc5NDEsIDB4Nzk0MSwgMHgwQzBELA0KKyAgICAweDc5NDIsIDB4Nzk0NSwgMHg0MDdCLCAweDc5NDYsIDB4Nzk0NiwgMHgxOUZBLCAweDc5NDcsIDB4Nzk0NywgMHg0MDdGLA0KKyAgICAweDc5NDgsIDB4Nzk0OCwgMHgwQzBDLCAweDc5NDksIDB4Nzk0OSwgMHgxOUZCLCAweDc5NEEsIDB4Nzk1MiwgMHg0MDgwLA0KKyAgICAweDc5NTMsIDB4Nzk1MywgMHgxOUZFLCAweDc5NTQsIDB4Nzk1NSwgMHg0MDg5LCAweDc5NTYsIDB4Nzk1NiwgMHgxMjQzLA0KKyAgICAweDc5NTcsIDB4Nzk1NywgMHgxQTAxLCAweDc5NTgsIDB4Nzk1OSwgMHg0MDhCLCAweDc5NUEsIDB4Nzk1QSwgMHgxOUZGLA0KKyAgICAweDc5NUIsIDB4Nzk1QywgMHgxOUZDLCAweDc5NUQsIDB4Nzk1RCwgMHgxMjAwLCAweDc5NUUsIDB4Nzk1RSwgMHgwRDJBLA0KKyAgICAweDc5NUYsIDB4Nzk1RiwgMHgwREUzLCAweDc5NjAsIDB4Nzk2MCwgMHgxQTAyLCAweDc5NjEsIDB4Nzk2MSwgMHg0MDhELA0KKyAgICAweDc5NjIsIDB4Nzk2MiwgMHgxQTAwLCAweDc5NjMsIDB4Nzk2NCwgMHg0MDhFLCAweDc5NjUsIDB4Nzk2NSwgMHgwRjU2LA0KKyAgICAweDc5NjYsIDB4Nzk2NiwgMHg0MDkwLCAweDc5NjcsIDB4Nzk2NywgMHgxQTA0LCAweDc5NjgsIDB4Nzk2OCwgMHgwQkQwLA0KKyAgICAweDc5NjksIDB4Nzk2QywgMHg0MDkxLCAweDc5NkQsIDB4Nzk2RCwgMHgwODMzLCAweDc5NkUsIDB4Nzk2RSwgMHg0MDk1LA0KKyAgICAweDc5NkYsIDB4Nzk2RiwgMHgxQTAzLCAweDc5NzAsIDB4Nzk3NiwgMHg0MDk2LCAweDc5NzcsIDB4Nzk3NywgMHgwNTlDLA0KKyAgICAweDc5NzgsIDB4Nzk3OCwgMHgwODBCLCAweDc5NzksIDB4Nzk3OSwgMHg0MDlELCAweDc5N0EsIDB4Nzk3QSwgMHgxQTA1LA0KKyAgICAweDc5N0IsIDB4Nzk3RiwgMHg0MDlFLCAweDc5ODAsIDB4Nzk4MCwgMHgxMzBCLCAweDc5ODEsIDB4Nzk4MSwgMHgwOENDLA0KKyAgICAweDc5ODIsIDB4Nzk4MywgMHg0MEEzLCAweDc5ODQsIDB4Nzk4NCwgMHgwQTYyLCAweDc5ODUsIDB4Nzk4NSwgMHgxQTA2LA0KKyAgICAweDc5ODYsIDB4Nzk4OSwgMHg0MEE1LCAweDc5OEEsIDB4Nzk4QSwgMHgxQTA3LCAweDc5OEIsIDB4Nzk4QywgMHg0MEE5LA0KKyAgICAweDc5OEQsIDB4Nzk4RCwgMHgxRjY2LCAweDc5OEUsIDB4Nzk4RSwgMHgyNERDLCAweDc5OEYsIDB4Nzk4RiwgMHgwNjlFLA0KKyAgICAweDc5OTAsIDB4Nzk5OSwgMHg0MEFCLCAweDc5OUEsIDB4Nzk5QSwgMHgxQTA4LCAweDc5OUIsIDB4NzlBNSwgMHg0MEI1LA0KKyAgICAweDc5QTYsIDB4NzlBNiwgMHgyNkEyLCAweDc5QTcsIDB4NzlBNywgMHgxQTA5LCAweDc5QTgsIDB4NzlBOSwgMHg0MEMwLA0KKyAgICAweDc5QUEsIDB4NzlBQSwgMHgyNERELCAweDc5QUIsIDB4NzlBRCwgMHg0MEMyLCAweDc5QUUsIDB4NzlBRSwgMHgyMDBFLA0KKyAgICAweDc5QUYsIDB4NzlBRiwgMHg0MEM1LCAweDc5QjAsIDB4NzlCMCwgMHgyNERCLCAweDc5QjEsIDB4NzlCMSwgMHgxRUI4LA0KKyAgICAweDc5QjIsIDB4NzlCMiwgMHg0MEM2LCAweDc5QjMsIDB4NzlCMywgMHgxQTBBLCAweDc5QjQsIDB4NzlCOCwgMHg0MEM3LA0KKyAgICAweDc5QjksIDB4NzlCOSwgMHgxMEQyLCAweDc5QkEsIDB4NzlCQSwgMHgxMjY0LCAweDc5QkIsIDB4NzlCQiwgMHgwOUQ2LA0KKyAgICAweDc5QkMsIDB4NzlCQywgMHg0MENDLCAweDc5QkQsIDB4NzlCRCwgMHgwQzVBLCAweDc5QkUsIDB4NzlCRSwgMHgwNzgzLA0KKyAgICAweDc5QkYsIDB4NzlCRiwgMHg0MENELCAweDc5QzAsIDB4NzlDMCwgMHgwRkFFLCAweDc5QzEsIDB4NzlDMSwgMHgwREIyLA0KKyAgICAweDc5QzIsIDB4NzlDMiwgMHg0MENFLCAweDc5QzMsIDB4NzlDMywgMHgwRTZCLCAweDc5QzQsIDB4NzlDNSwgMHg0MENGLA0KKyAgICAweDc5QzYsIDB4NzlDNiwgMHgwNkNDLCAweDc5QzcsIDB4NzlDOCwgMHg0MEQxLCAweDc5QzksIDB4NzlDOSwgMHgwNDY1LA0KKyAgICAweDc5Q0EsIDB4NzlDQSwgMHg0MEQzLCAweDc5Q0IsIDB4NzlDQiwgMHgwQzZDLCAweDc5Q0MsIDB4NzlDQywgMHg0MEQ0LA0KKyAgICAweDc5Q0QsIDB4NzlDRCwgMHgxMUQ1LCAweDc5Q0UsIDB4NzlEMCwgMHg0MEQ1LCAweDc5RDEsIDB4NzlEMSwgMHgwOTUzLA0KKyAgICAweDc5RDIsIDB4NzlEMiwgMHgwQUYwLCAweDc5RDMsIDB4NzlENCwgMHg0MEQ4LCAweDc5RDUsIDB4NzlENSwgMHgxQjFELA0KKyAgICAweDc5RDYsIDB4NzlENywgMHg0MERBLCAweDc5RDgsIDB4NzlEOCwgMHgwQURELCAweDc5RDksIDB4NzlERSwgMHg0MERDLA0KKyAgICAweDc5REYsIDB4NzlERiwgMHgxMjNGLCAweDc5RTAsIDB4NzlFMiwgMHg0MEUyLCAweDc5RTMsIDB4NzlFMywgMHgxQjFGLA0KKyAgICAweDc5RTQsIDB4NzlFNCwgMHgwNEY4LCAweDc5RTUsIDB4NzlFNSwgMHg0MEU1LCAweDc5RTYsIDB4NzlFNiwgMHgwQzU1LA0KKyAgICAweDc5RTcsIDB4NzlFNywgMHgxMDE2LCAweDc5RTgsIDB4NzlFOCwgMHg0MEU2LCAweDc5RTksIDB4NzlFOSwgMHgxMUM3LA0KKyAgICAweDc5RUEsIDB4NzlFQSwgMHg0MEU3LCAweDc5RUIsIDB4NzlFQiwgMHgxQjIwLCAweDc5RUMsIDB4NzlFQywgMHg0MEU4LA0KKyAgICAweDc5RUQsIDB4NzlFRCwgMHgxQjFFLCAweDc5RUUsIDB4NzlFRSwgMHg0MEU5LCAweDc5RUYsIDB4NzlFRiwgMHgwODEyLA0KKyAgICAweDc5RjAsIDB4NzlGMCwgMHgwNEVCLCAweDc5RjEsIDB4NzlGNywgMHg0MEVBLCAweDc5RjgsIDB4NzlGOCwgMHgwOEE2LA0KKyAgICAweDc5RjksIDB4NzlGQSwgMHg0MEYxLCAweDc5RkIsIDB4NzlGQiwgMHgxMDRELCAweDc5RkMsIDB4NzlGQywgMHg0MEYzLA0KKyAgICAweDc5RkQsIDB4NzlGRCwgMHgwN0Y1LCAweDc5RkUsIDB4NzlGRiwgMHg0MEY0LCAweDdBMDAsIDB4N0EwMCwgMHgwRjBFLA0KKyAgICAweDdBMDEsIDB4N0EwMSwgMHg0MEY2LCAweDdBMDIsIDB4N0EwMiwgMHgxQjI0LCAweDdBMDMsIDB4N0EwMywgMHgxQjIzLA0KKyAgICAweDdBMDQsIDB4N0EwNSwgMHg0MEY3LCAweDdBMDYsIDB4N0EwNiwgMHgxQjIxLCAweDdBMDcsIDB4N0EwQSwgMHg0MEY5LA0KKyAgICAweDdBMEIsIDB4N0EwQiwgMHgwNEYxLCAweDdBMEMsIDB4N0EwQywgMHg0MEZELCAweDdBMEQsIDB4N0EwRCwgMHgwRDBELA0KKyAgICAweDdBMEUsIDB4N0EwRSwgMHgwREE1LCAweDdBMEYsIDB4N0ExMywgMHg0MEZFLCAweDdBMTQsIDB4N0ExNCwgMHgxQjI2LA0KKyAgICAweDdBMTUsIDB4N0ExNiwgMHg0MTAzLCAweDdBMTcsIDB4N0ExNywgMHgwM0U5LCAweDdBMTgsIDB4N0ExOSwgMHg0MTA1LA0KKyAgICAweDdBMUEsIDB4N0ExQSwgMHgxMUM4LCAweDdBMUIsIDB4N0ExRCwgMHg0MTA3LCAweDdBMUUsIDB4N0ExRSwgMHgxQjI1LA0KKyAgICAweDdBMUYsIDB4N0ExRiwgMHg0MTBBLCAweDdBMjAsIDB4N0EyMCwgMHgwNTEyLCAweDdBMjEsIDB4N0EyMiwgMHg0MTBCLA0KKyAgICAweDdBMjMsIDB4N0EyMywgMHgxRDhGLCAweDdBMjQsIDB4N0EyRCwgMHg0MTBELCAweDdBMkUsIDB4N0EyRSwgMHgyMjk1LA0KKyAgICAweDdBMkYsIDB4N0EzMCwgMHg0MTE3LCAweDdBMzEsIDB4N0EzMSwgMHgxRTgwLCAweDdBMzIsIDB4N0EzMiwgMHg0MTE5LA0KKyAgICAweDdBMzMsIDB4N0EzMywgMHgwRUQ3LCAweDdBMzQsIDB4N0EzNiwgMHg0MTFBLCAweDdBMzcsIDB4N0EzNywgMHgxQjI4LA0KKyAgICAweDdBMzgsIDB4N0EzOCwgMHg0MTFELCAweDdBMzksIDB4N0EzOSwgMHgxQjI3LCAweDdBM0EsIDB4N0EzQSwgMHg0MTFFLA0KKyAgICAweDdBM0IsIDB4N0EzQiwgMHgwNTlGLCAweDdBM0MsIDB4N0EzQywgMHgwODRELCAweDdBM0QsIDB4N0EzRCwgMHgwODExLA0KKyAgICAweDdBM0UsIDB4N0EzRSwgMHg0MTFGLCAweDdBM0YsIDB4N0EzRiwgMHgwNkUwLCAweDdBNDAsIDB4N0E0MCwgMHgyNjc3LA0KKyAgICAweDdBNDEsIDB4N0E0NSwgMHg0MTIwLCAweDdBNDYsIDB4N0E0NiwgMHgwQjI1LCAweDdBNDcsIDB4N0E0QiwgMHg0MTI1LA0KKyAgICAweDdBNEMsIDB4N0E0QywgMHgyNjI0LCAweDdBNEQsIDB4N0E0RCwgMHgxRjY5LCAweDdBNEUsIDB4N0E0RSwgMHgyMjJCLA0KKyAgICAweDdBNEYsIDB4N0E1MCwgMHg0MTJBLCAweDdBNTEsIDB4N0E1MSwgMHgxQjI5LCAweDdBNTIsIDB4N0E1NiwgMHg0MTJDLA0KKyAgICAweDdBNTcsIDB4N0E1NywgMHgwREUwLCAweDdBNTgsIDB4N0E2MCwgMHg0MTMxLCAweDdBNjEsIDB4N0E2MSwgMHgyNTdGLA0KKyAgICAweDdBNjIsIDB4N0E2MiwgMHgxRjVCLCAweDdBNjMsIDB4N0E2OCwgMHg0MTNBLCAweDdBNjksIDB4N0E2OSwgMHgyMTlCLA0KKyAgICAweDdBNkEsIDB4N0E2QSwgMHg0MTQwLCAweDdBNkIsIDB4N0E2QiwgMHgyNjdELCAweDdBNkMsIDB4N0E2RiwgMHg0MTQxLA0KKyAgICAweDdBNzAsIDB4N0E3MCwgMHgxQjJDLCAweDdBNzEsIDB4N0E3MywgMHg0MTQ1LCAweDdBNzQsIDB4N0E3NCwgMHgwRkQxLA0KKyAgICAweDdBNzUsIDB4N0E3NSwgMHg0MTQ4LCAweDdBNzYsIDB4N0E3NiwgMHgwOEVFLCAweDdBNzcsIDB4N0E3NywgMHgwQzZCLA0KKyAgICAweDdBNzgsIDB4N0E3OSwgMHgxQjlBLCAweDdBN0EsIDB4N0E3QSwgMHgwOTYyLCAweDdBN0IsIDB4N0E3RSwgMHg0MTQ5LA0KKyAgICAweDdBN0YsIDB4N0E3RiwgMHgwNTJDLCAweDdBODAsIDB4N0E4MCwgMHgxQjlDLCAweDdBODEsIDB4N0E4MSwgMHgwRTZDLA0KKyAgICAweDdBODIsIDB4N0E4MiwgMHg0MTRELCAweDdBODMsIDB4N0E4MywgMHgwQzUxLCAweDdBODQsIDB4N0E4NCwgMHgxMTRFLA0KKyAgICAweDdBODUsIDB4N0E4NSwgMHg0MTRFLCAweDdBODYsIDB4N0E4NiwgMHgxQjlELCAweDdBODcsIDB4N0E4NywgMHg0MTRGLA0KKyAgICAweDdBODgsIDB4N0E4OCwgMHgxQjlFLCAweDdBODksIDB4N0E4QywgMHg0MTUwLCAweDdBOEQsIDB4N0E4RCwgMHgwQzRDLA0KKyAgICAweDdBOEUsIDB4N0E5MCwgMHg0MTU0LCAweDdBOTEsIDB4N0E5MSwgMHgxMDJCLCAweDdBOTIsIDB4N0E5MiwgMHgxMUNFLA0KKyAgICAweDdBOTMsIDB4N0E5NCwgMHg0MTU3LCAweDdBOTUsIDB4N0E5NSwgMHgxQjlGLCAweDdBOTYsIDB4N0E5NiwgMHgwOEEyLA0KKyAgICAweDdBOTcsIDB4N0E5NywgMHgwNTMzLCAweDdBOTgsIDB4N0E5OCwgMHgwOEVDLCAweDdBOTksIDB4N0E5QiwgMHg0MTU5LA0KKyAgICAweDdBOUMsIDB4N0E5QywgMHgwNTVGLCAweDdBOUQsIDB4N0E5RCwgMHgwRUUwLCAweDdBOUUsIDB4N0E5RSwgMHg0MTVDLA0KKyAgICAweDdBOUYsIDB4N0E5RiwgMHgwOTZDLCAweDdBQTAsIDB4N0FBMCwgMHgxQkExLCAweDdBQTEsIDB4N0FBNCwgMHg0MTVELA0KKyAgICAweDdBQTUsIDB4N0FBNSwgMHgwOTg3LCAweDdBQTYsIDB4N0FBNiwgMHgxQkEwLCAweDdBQTcsIDB4N0FBNywgMHg0MTYxLA0KKyAgICAweDdBQTgsIDB4N0FBOCwgMHgxQkEzLCAweDdBQTksIDB4N0FBOSwgMHgyMUEwLCAweDdBQUEsIDB4N0FBQSwgMHgyMTg2LA0KKyAgICAweDdBQUIsIDB4N0FBQiwgMHg0MTYyLCAweDdBQUMsIDB4N0FBQywgMHgxQkEyLCAweDdBQUQsIDB4N0FBRCwgMHgxQkE0LA0KKyAgICAweDdBQUUsIDB4N0FBRSwgMHgyMEVELCAweDdBQUYsIDB4N0FCMiwgMHg0MTYzLCAweDdBQjMsIDB4N0FCMywgMHgxQkE1LA0KKyAgICAweDdBQjQsIDB4N0FCNSwgMHg0MTY3LCAweDdBQjYsIDB4N0FCNiwgMHgyNUI5LCAweDdBQjcsIDB4N0FCOSwgMHg0MTY5LA0KKyAgICAweDdBQkEsIDB4N0FCQSwgMHgxRkVBLCAweDdBQkIsIDB4N0FCRSwgMHg0MTZDLCAweDdBQkYsIDB4N0FCRiwgMHgwQTQ3LA0KKyAgICAweDdBQzAsIDB4N0FDMywgMHg0MTcwLCAweDdBQzQsIDB4N0FDNCwgMHgxRUE0LCAweDdBQzUsIDB4N0FDNSwgMHgyMEUxLA0KKyAgICAweDdBQzYsIDB4N0FDNiwgMHg0MTc0LCAweDdBQzcsIDB4N0FDNywgMHgyNUI4LCAweDdBQzgsIDB4N0FDOCwgMHgyMjYwLA0KKyAgICAweDdBQzksIDB4N0FDOSwgMHg0MTc1LCAweDdBQ0EsIDB4N0FDQSwgMHgyMEUyLCAweDdBQ0IsIDB4N0FDQiwgMHgwOUVCLA0KKyAgICAweDdBQ0MsIDB4N0FENSwgMHg0MTc2LCAweDdBRDYsIDB4N0FENiwgMHgwRDkxLCAweDdBRDcsIDB4N0FEOCwgMHg0MTgwLA0KKyAgICAweDdBRDksIDB4N0FEOSwgMHgxMTVGLCAweDdBREEsIDB4N0FERCwgMHg0MTgyLCAweDdBREUsIDB4N0FERSwgMHgwOEU5LA0KKyAgICAweDdBREYsIDB4N0FERiwgMHgwOEU4LCAweDdBRTAsIDB4N0FFMCwgMHgxMTYzLCAweDdBRTEsIDB4N0FFMiwgMHg0MTg2LA0KKyAgICAweDdBRTMsIDB4N0FFMywgMHgwOTJGLCAweDdBRTQsIDB4N0FFNCwgMHg0MTg4LCAweDdBRTUsIDB4N0FFNSwgMHgwRTYwLA0KKyAgICAweDdBRTYsIDB4N0FFNiwgMHgxQjk5LCAweDdBRTcsIDB4N0FFOSwgMHg0MTg5LCAweDdBRUEsIDB4N0FFQSwgMHgyMTQxLA0KKyAgICAweDdBRUIsIDB4N0FFQywgMHg0MThDLCAweDdBRUQsIDB4N0FFRCwgMHgwOEIwLCAweDdBRUUsIDB4N0FFRSwgMHg0MThFLA0KKyAgICAweDdBRUYsIDB4N0FFRiwgMHgwNjBBLCAweDdBRjAsIDB4N0FGNSwgMHg0MThGLCAweDdBRjYsIDB4N0FGNiwgMHgxRkM3LA0KKyAgICAweDdBRjcsIDB4N0FGOCwgMHg0MTk1LCAweDdBRjksIDB4N0FGOSwgMHgxMUYwLCAweDdBRkEsIDB4N0FGQSwgMHgxQzYzLA0KKyAgICAweDdBRkIsIDB4N0FGQywgMHg0MTk3LCAweDdBRkQsIDB4N0FGRCwgMHgxQzY0LCAweDdBRkUsIDB4N0FGRSwgMHg0MTk5LA0KKyAgICAweDdBRkYsIDB4N0FGRiwgMHgwNkM4LCAweDdCMDAsIDB4N0IwMiwgMHg0MTlBLCAweDdCMDMsIDB4N0IwNCwgMHgxQzY2LA0KKyAgICAweDdCMDUsIDB4N0IwNSwgMHg0MTlELCAweDdCMDYsIDB4N0IwNiwgMHgwM0Q1LCAweDdCMDcsIDB4N0IwNywgMHg0MTlFLA0KKyAgICAweDdCMDgsIDB4N0IwOCwgMHgxQzY1LCAweDdCMDksIDB4N0IwOSwgMHg0MTlGLCAweDdCMEEsIDB4N0IwQSwgMHgxQzY5LA0KKyAgICAweDdCMEIsIDB4N0IwQiwgMHgwREU2LCAweDdCMEMsIDB4N0IwRSwgMHg0MUEwLCAweDdCMEYsIDB4N0IwRiwgMHgxQzZCLA0KKyAgICAweDdCMTAsIDB4N0IxMCwgMHg0MUEzLCAweDdCMTEsIDB4N0IxMSwgMHgwRjcxLCAweDdCMTIsIDB4N0IxMywgMHg0MUE0LA0KKyAgICAweDdCMTQsIDB4N0IxNCwgMHgwNDMzLCAweDdCMTUsIDB4N0IxNSwgMHgxQzY4LCAweDdCMTYsIDB4N0IxOCwgMHg0MUE2LA0KKyAgICAweDdCMTksIDB4N0IxOSwgMHgxQzZGLCAweDdCMUEsIDB4N0IxQSwgMHg0MUE5LCAweDdCMUIsIDB4N0IxQiwgMHgwNUIyLA0KKyAgICAweDdCMUMsIDB4N0IxRCwgMHg0MUFBLCAweDdCMUUsIDB4N0IxRSwgMHgxQzc3LCAweDdCMUYsIDB4N0IxRiwgMHg0MUFDLA0KKyAgICAweDdCMjAsIDB4N0IyMCwgMHgxQzcyLCAweDdCMjEsIDB4N0IyMywgMHg0MUFELCAweDdCMjQsIDB4N0IyNCwgMHgxQzc0LA0KKyAgICAweDdCMjUsIDB4N0IyNSwgMHgxQzczLCAweDdCMjYsIDB4N0IyNiwgMHgwNjk4LCAweDdCMjcsIDB4N0IyNywgMHg0MUIwLA0KKyAgICAweDdCMjgsIDB4N0IyOCwgMHgwNDI4LCAweDdCMjksIDB4N0IyOSwgMHg0MUIxLCAweDdCMkEsIDB4N0IyQSwgMHgxQzZFLA0KKyAgICAweDdCMkIsIDB4N0IyQiwgMHgxQzZBLCAweDdCMkMsIDB4N0IyQywgMHgwNUJCLCAweDdCMkQsIDB4N0IyRCwgMHg0MUIyLA0KKyAgICAweDdCMkUsIDB4N0IyRSwgMHgxQzcwLCAweDdCMkYsIDB4N0IzMCwgMHg0MUIzLCAweDdCMzEsIDB4N0IzMSwgMHgxQzcxLA0KKyAgICAweDdCMzIsIDB4N0IzMiwgMHg0MUI1LCAweDdCMzMsIDB4N0IzMywgMHgxQzc1LCAweDdCMzQsIDB4N0IzNywgMHg0MUI2LA0KKyAgICAweDdCMzgsIDB4N0IzOCwgMHgxQzZELCAweDdCMzksIDB4N0IzOSwgMHg0MUJBLCAweDdCM0EsIDB4N0IzQSwgMHgwODU2LA0KKyAgICAweDdCM0IsIDB4N0IzQiwgMHg0MUJCLCAweDdCM0MsIDB4N0IzQywgMHgwQTQ2LCAweDdCM0QsIDB4N0IzRCwgMHg0MUJDLA0KKyAgICAweDdCM0UsIDB4N0IzRSwgMHgxQzc2LCAweDdCM0YsIDB4N0I0NCwgMHg0MUJELCAweDdCNDUsIDB4N0I0NSwgMHgxQzdBLA0KKyAgICAweDdCNDYsIDB4N0I0NiwgMHgxRTQxLCAweDdCNDcsIDB4N0I0NywgMHgxQzZDLCAweDdCNDgsIDB4N0I0OCwgMHg0MUMzLA0KKyAgICAweDdCNDksIDB4N0I0OSwgMHgwNUE5LCAweDdCNEEsIDB4N0I0QSwgMHg0MUM0LCAweDdCNEIsIDB4N0I0QiwgMHgwOEJGLA0KKyAgICAweDdCNEMsIDB4N0I0QywgMHgxQzdDLCAweDdCNEQsIDB4N0I0RSwgMHg0MUM1LCAweDdCNEYsIDB4N0I0RiwgMHgwNjQxLA0KKyAgICAweDdCNTAsIDB4N0I1MCwgMHgwOTdELCAweDdCNTEsIDB4N0I1MSwgMHgxMUZELCAweDdCNTIsIDB4N0I1MiwgMHgwRTYzLA0KKyAgICAweDdCNTMsIDB4N0I1MywgMHg0MUM3LCAweDdCNTQsIDB4N0I1NCwgMHgwNTczLCAweDdCNTUsIDB4N0I1NSwgMHg0MUM4LA0KKyAgICAweDdCNTYsIDB4N0I1NiwgMHgwNEE2LCAweDdCNTcsIDB4N0I1NywgMHg0MUM5LCAweDdCNTgsIDB4N0I1OCwgMHgxQzc4LA0KKyAgICAweDdCNTksIDB4N0I1OSwgMHg0MUNBLCAweDdCNUEsIDB4N0I1QSwgMHgxQzc5LCAweDdCNUIsIDB4N0I1QiwgMHgwQ0YxLA0KKyAgICAweDdCNUMsIDB4N0I1QywgMHg0MUNCLCAweDdCNUQsIDB4N0I1RCwgMHgxQzdELCAweDdCNUUsIDB4N0I1RiwgMHg0MUNDLA0KKyAgICAweDdCNjAsIDB4N0I2MCwgMHgxQzdFLCAweDdCNjEsIDB4N0I2MSwgMHg0MUNFLCAweDdCNjIsIDB4N0I2MiwgMHgxQzgxLA0KKyAgICAweDdCNjMsIDB4N0I2NiwgMHg0MUNGLCAweDdCNjcsIDB4N0I2NywgMHgyNUU0LCAweDdCNjgsIDB4N0I2RCwgMHg0MUQzLA0KKyAgICAweDdCNkUsIDB4N0I2RSwgMHgxQzdGLCAweDdCNkYsIDB4N0I3MCwgMHg0MUQ5LCAweDdCNzEsIDB4N0I3MSwgMHgxQzgzLA0KKyAgICAweDdCNzIsIDB4N0I3MiwgMHgxQzgyLCAweDdCNzMsIDB4N0I3NCwgMHg0MURCLCAweDdCNzUsIDB4N0I3NSwgMHgxQzdCLA0KKyAgICAweDdCNzYsIDB4N0I3NiwgMHg0MURELCAweDdCNzcsIDB4N0I3NywgMHgwOTc3LCAweDdCNzgsIDB4N0I3OCwgMHg0MURFLA0KKyAgICAweDdCNzksIDB4N0I3OSwgMHgwNTE0LCAweDdCN0EsIDB4N0I3QSwgMHg0MURGLCAweDdCN0IsIDB4N0I3QiwgMHgxQzgwLA0KKyAgICAweDdCN0MsIDB4N0I3RCwgMHg0MUUwLCAweDdCN0UsIDB4N0I3RSwgMHgwQzI2LCAweDdCN0YsIDB4N0I3RiwgMHg0MUUyLA0KKyAgICAweDdCODAsIDB4N0I4MCwgMHgwODY1LCAweDdCODEsIDB4N0I4NCwgMHg0MUUzLCAweDdCODUsIDB4N0I4NSwgMHgxQzhCLA0KKyAgICAweDdCODYsIDB4N0I4QSwgMHg0MUU3LCAweDdCOEIsIDB4N0I4QiwgMHgxRjg2LCAweDdCOEMsIDB4N0I4QywgMHg0MUVDLA0KKyAgICAweDdCOEQsIDB4N0I4RCwgMHgwNzE4LCAweDdCOEUsIDB4N0I4RiwgMHg0MUVELCAweDdCOTAsIDB4N0I5MCwgMHgxQzg0LA0KKyAgICAweDdCOTEsIDB4N0I5MywgMHg0MUVGLCAweDdCOTQsIDB4N0I5NCwgMHgwNDc0LCAweDdCOTUsIDB4N0I5NSwgMHgwODEzLA0KKyAgICAweDdCOTYsIDB4N0I5NiwgMHg0MUYyLCAweDdCOTcsIDB4N0I5NywgMHgwREQ4LCAweDdCOTgsIDB4N0I5QiwgMHg0MUYzLA0KKyAgICAweDdCOUMsIDB4N0I5QywgMHgxQzhELCAweDdCOUQsIDB4N0I5RCwgMHgxQzg5LCAweDdCOUUsIDB4N0JBMCwgMHg0MUY3LA0KKyAgICAweDdCQTEsIDB4N0JBMSwgMHgwNzM1LCAweDdCQTIsIDB4N0JBMiwgMHgxQzhFLCAweDdCQTMsIDB4N0JBNSwgMHg0MUZBLA0KKyAgICAweDdCQTYsIDB4N0JBNywgMHgxQzg1LCAweDdCQTgsIDB4N0JBOCwgMHgxQzhBLCAweDdCQTksIDB4N0JBOSwgMHgwQTg4LA0KKyAgICAweDdCQUEsIDB4N0JBQSwgMHgxQzhDLCAweDdCQUIsIDB4N0JBQiwgMHgxQzhGLCAweDdCQUMsIDB4N0JBQywgMHgxQzg4LA0KKyAgICAweDdCQUQsIDB4N0JBRCwgMHgwODcwLCAweDdCQUUsIDB4N0JCMCwgMHg0MUZELCAweDdCQjEsIDB4N0JCMSwgMHgwRjUxLA0KKyAgICAweDdCQjIsIDB4N0JCMywgMHg0MjAwLCAweDdCQjQsIDB4N0JCNCwgMHgxQzkwLCAweDdCQjUsIDB4N0JCNywgMHg0MjAyLA0KKyAgICAweDdCQjgsIDB4N0JCOCwgMHgxQzg3LCAweDdCQjksIDB4N0JCRiwgMHg0MjA1LCAweDdCQzAsIDB4N0JDMCwgMHgxRkIzLA0KKyAgICAweDdCQzEsIDB4N0JDMSwgMHgxQzkyLCAweDdCQzIsIDB4N0JDMywgMHg0MjBDLCAweDdCQzQsIDB4N0JDNCwgMHgxRUVGLA0KKyAgICAweDdCQzUsIDB4N0JDNSwgMHg0MjBFLCAweDdCQzYsIDB4N0JDNiwgMHgxMjBBLCAweDdCQzcsIDB4N0JDNywgMHgwQkM5LA0KKyAgICAweDdCQzgsIDB4N0JDOCwgMHg0MjBGLCAweDdCQzksIDB4N0JDOSwgMHgyMkE0LCAweDdCQ0EsIDB4N0JDQSwgMHg0MjEwLA0KKyAgICAweDdCQ0IsIDB4N0JDQiwgMHgyNUU4LCAweDdCQ0MsIDB4N0JDQywgMHgxQzkzLCAweDdCQ0QsIDB4N0JEMCwgMHg0MjExLA0KKyAgICAweDdCRDEsIDB4N0JEMSwgMHgxQzkxLCAweDdCRDIsIDB4N0JEMiwgMHg0MjE1LCAweDdCRDMsIDB4N0JEMywgMHgwQTRGLA0KKyAgICAweDdCRDQsIDB4N0JEOCwgMHg0MjE2LCAweDdCRDksIDB4N0JEOSwgMHgwNkQ4LCAweDdCREEsIDB4N0JEQSwgMHgxQzk1LA0KKyAgICAweDdCREIsIDB4N0JEQywgMHg0MjFCLCAweDdCREQsIDB4N0JERCwgMHgxQzk0LCAweDdCREUsIDB4N0JFMCwgMHg0MjFELA0KKyAgICAweDdCRTEsIDB4N0JFMSwgMHgwNTVFLCAweDdCRTIsIDB4N0JFMywgMHg0MjIwLCAweDdCRTQsIDB4N0JFNCwgMHgyNUUzLA0KKyAgICAweDdCRTUsIDB4N0JFNiwgMHgxQzk2LCAweDdCRTcsIDB4N0JFOCwgMHg0MjIyLCAweDdCRTksIDB4N0JFOSwgMHgyMTExLA0KKyAgICAweDdCRUEsIDB4N0JFQSwgMHgxQzk4LCAweDdCRUIsIDB4N0JFRCwgMHg0MjI0LCAweDdCRUUsIDB4N0JFRSwgMHgwOUE1LA0KKyAgICAweDdCRUYsIDB4N0JGMCwgMHg0MjI3LCAweDdCRjEsIDB4N0JGMSwgMHgwOUQ0LCAweDdCRjIsIDB4N0JGMiwgMHg0MjI5LA0KKyAgICAweDdCRjMsIDB4N0JGMywgMHgyNUU2LCAweDdCRjQsIDB4N0JGNiwgMHg0MjJBLCAweDdCRjcsIDB4N0JGNywgMHgwQkIyLA0KKyAgICAweDdCRjgsIDB4N0JGQiwgMHg0MjJELCAweDdCRkMsIDB4N0JGQywgMHgxQzlCLCAweDdCRkQsIDB4N0JGRCwgMHg0MjMxLA0KKyAgICAweDdCRkUsIDB4N0JGRSwgMHgxQzlBLCAweDdCRkYsIDB4N0JGRiwgMHg0MjMyLCAweDdDMDAsIDB4N0MwMCwgMHgyNUU3LA0KKyAgICAweDdDMDEsIDB4N0MwNiwgMHg0MjMzLCAweDdDMDcsIDB4N0MwNywgMHgwNTVCLCAweDdDMDgsIDB4N0MwQSwgMHg0MjM5LA0KKyAgICAweDdDMEIsIDB4N0MwQiwgMHgxQzlFLCAweDdDMEMsIDB4N0MwQywgMHgxQzk5LCAweDdDMEQsIDB4N0MwRCwgMHgyMDQxLA0KKyAgICAweDdDMEUsIDB4N0MwRSwgMHg0MjNDLCAweDdDMEYsIDB4N0MwRiwgMHgxQzlDLCAweDdDMTAsIDB4N0MxNSwgMHg0MjNELA0KKyAgICAweDdDMTYsIDB4N0MxNiwgMHgxQzlELCAweDdDMTcsIDB4N0MxRCwgMHg0MjQzLCAweDdDMUUsIDB4N0MxRSwgMHgyNUVBLA0KKyAgICAweDdDMUYsIDB4N0MxRiwgMHgxQzlGLCAweDdDMjAsIDB4N0MyMCwgMHg0MjRBLCAweDdDMjEsIDB4N0MyMSwgMHgxRjhGLA0KKyAgICAweDdDMjIsIDB4N0MyMiwgMHg0MjRCLCAweDdDMjMsIDB4N0MyMywgMHgyNUVDLCAweDdDMjQsIDB4N0MyNSwgMHg0MjRDLA0KKyAgICAweDdDMjYsIDB4N0MyNiwgMHgxQ0ExLCAweDdDMjcsIDB4N0MyNywgMHgwN0RFLCAweDdDMjgsIDB4N0MyOSwgMHg0MjRFLA0KKyAgICAweDdDMkEsIDB4N0MyQSwgMHgxQ0EwLCAweDdDMkIsIDB4N0MyQiwgMHgyNUVCLCAweDdDMkMsIDB4N0MzNywgMHg0MjUwLA0KKyAgICAweDdDMzgsIDB4N0MzOCwgMHgxQ0EyLCAweDdDMzksIDB4N0MzQywgMHg0MjVDLCAweDdDM0QsIDB4N0MzRCwgMHgyMEQwLA0KKyAgICAweDdDM0UsIDB4N0MzRSwgMHgyMDFELCAweDdDM0YsIDB4N0MzRiwgMHgwNDg1LCAweDdDNDAsIDB4N0M0MCwgMHgxQ0E0LA0KKyAgICAweDdDNDEsIDB4N0M0MSwgMHgxQ0EzLCAweDdDNDIsIDB4N0M0MiwgMHg0MjYwLCAweDdDNDMsIDB4N0M0MywgMHgxRkY3LA0KKyAgICAweDdDNDQsIDB4N0M0QiwgMHg0MjYxLCAweDdDNEMsIDB4N0M0QywgMHgxRThELCAweDdDNEQsIDB4N0M0RCwgMHgwODIxLA0KKyAgICAweDdDNEUsIDB4N0M1QiwgMHg0MjY5LCAweDdDNUMsIDB4N0M1QywgMHgyNUU5LCAweDdDNUQsIDB4N0M1RSwgMHg0Mjc3LA0KKyAgICAweDdDNUYsIDB4N0M1RiwgMHgyNUVFLCAweDdDNjAsIDB4N0M2MCwgMHgyMDNBLCAweDdDNjEsIDB4N0M2MywgMHg0Mjc5LA0KKyAgICAweDdDNjQsIDB4N0M2NCwgMHgyNjkzLCAweDdDNjUsIDB4N0M2OCwgMHg0MjdDLCAweDdDNjksIDB4N0M2OSwgMHgyNUU1LA0KKyAgICAweDdDNkEsIDB4N0M2QSwgMHgyNUVELCAweDdDNkIsIDB4N0M2QiwgMHg0MjgwLCAweDdDNkMsIDB4N0M2QywgMHgyMDA5LA0KKyAgICAweDdDNkQsIDB4N0M2RCwgMHg0MjgxLCAweDdDNkUsIDB4N0M2RSwgMHgyMDY1LCAweDdDNkYsIDB4N0M3MSwgMHg0MjgyLA0KKyAgICAweDdDNzIsIDB4N0M3MiwgMHgyNkEzLCAweDdDNzMsIDB4N0M3MywgMHgwQURDLCAweDdDNzQsIDB4N0M3NCwgMHgxMkY1LA0KKyAgICAweDdDNzUsIDB4N0M3QSwgMHg0Mjg1LCAweDdDN0IsIDB4N0M3QiwgMHgwOUNCLCAweDdDN0MsIDB4N0M3QywgMHgxQ0NBLA0KKyAgICAweDdDN0QsIDB4N0M3RCwgMHgxMjJFLCAweDdDN0UsIDB4N0M4OCwgMHg0MjhCLCAweDdDODksIDB4N0M4OSwgMHgwNjc4LA0KKyAgICAweDdDOEEsIDB4N0M5MCwgMHg0Mjk2LCAweDdDOTEsIDB4N0M5MSwgMHgxQ0NDLCAweDdDOTIsIDB4N0M5MiwgMHgwOUVDLA0KKyAgICAweDdDOTMsIDB4N0M5NCwgMHg0MjlELCAweDdDOTUsIDB4N0M5NSwgMHgwQkU4LCAweDdDOTYsIDB4N0M5NiwgMHg0MjlGLA0KKyAgICAweDdDOTcsIDB4N0M5NywgMHgwNTU5LCAweDdDOTgsIDB4N0M5OCwgMHgxMTU0LCAweDdDOTksIDB4N0M5QiwgMHg0MkEwLA0KKyAgICAweDdDOUMsIDB4N0M5QywgMHgxQ0NFLCAweDdDOUQsIDB4N0M5RCwgMHgxQ0NELCAweDdDOUUsIDB4N0M5RSwgMHgxQ0NGLA0KKyAgICAweDdDOUYsIDB4N0M5RiwgMHgwRENGLCAweDdDQTAsIDB4N0NBMSwgMHg0MkEzLCAweDdDQTIsIDB4N0NBMiwgMHgxQ0QwLA0KKyAgICAweDdDQTMsIDB4N0NBMywgMHg0MkE1LCAweDdDQTQsIDB4N0NBNCwgMHgxMTA0LCAweDdDQTUsIDB4N0NBNSwgMHgxMURGLA0KKyAgICAweDdDQTYsIDB4N0NBOSwgMHg0MkE2LCAweDdDQUEsIDB4N0NBQSwgMHgwNjdELCAweDdDQUIsIDB4N0NBRCwgMHg0MkFBLA0KKyAgICAweDdDQUUsIDB4N0NBRSwgMHgwQTAxLCAweDdDQUYsIDB4N0NCMCwgMHg0MkFELCAweDdDQjEsIDB4N0NCMSwgMHgwQTA0LA0KKyAgICAweDdDQjIsIDB4N0NCMiwgMHgxQ0QxLCAweDdDQjMsIDB4N0NCMywgMHgwOERCLCAweDdDQjQsIDB4N0NCOCwgMHg0MkFGLA0KKyAgICAweDdDQjksIDB4N0NCOSwgMHgwNTY1LCAweDdDQkEsIDB4N0NCQiwgMHg0MkI0LCAweDdDQkMsIDB4N0NCRCwgMHgxQ0QyLA0KKyAgICAweDdDQkUsIDB4N0NCRSwgMHgwOERBLCAweDdDQkYsIDB4N0NDMCwgMHg0MkI2LCAweDdDQzEsIDB4N0NDMSwgMHgxQ0Q0LA0KKyAgICAweDdDQzIsIDB4N0NDNCwgMHg0MkI4LCAweDdDQzUsIDB4N0NDNSwgMHgxQ0Q5LCAweDdDQzYsIDB4N0NDNiwgMHg0MkJCLA0KKyAgICAweDdDQzcsIDB4N0NDNywgMHgxQ0Q1LCAweDdDQzgsIDB4N0NDOCwgMHgxQ0Q4LCAweDdDQzksIDB4N0NDOSwgMHg0MkJDLA0KKyAgICAweDdDQ0EsIDB4N0NDQSwgMHgwN0I0LCAweDdDQ0IsIDB4N0NDQiwgMHg0MkJELCAweDdDQ0MsIDB4N0NDRCwgMHgxQ0Q2LA0KKyAgICAweDdDQ0UsIDB4N0NENCwgMHg0MkJFLCAweDdDRDUsIDB4N0NENSwgMHgwNkRELCAweDdDRDYsIDB4N0NENiwgMHgwRTFBLA0KKyAgICAweDdDRDcsIDB4N0NENywgMHgxQ0RBLCAweDdDRDgsIDB4N0NEOCwgMHg0MkM1LCAweDdDRDksIDB4N0NEOSwgMHgwNEExLA0KKyAgICAweDdDREEsIDB4N0NEQiwgMHg0MkM2LCAweDdDREMsIDB4N0NEQywgMHgwQUQ4LCAweDdDREQsIDB4N0NERCwgMHgyNUY1LA0KKyAgICAweDdDREUsIDB4N0NERSwgMHgxRUZDLCAweDdDREYsIDB4N0NERiwgMHgxMTI2LCAweDdDRTAsIDB4N0NFMCwgMHgwOTQ0LA0KKyAgICAweDdDRTEsIDB4N0NFNiwgMHg0MkM4LCAweDdDRTcsIDB4N0NFNywgMHgyMDI0LCAweDdDRTgsIDB4N0NFOCwgMHgxQ0RCLA0KKyAgICAweDdDRTksIDB4N0NFRSwgMHg0MkNFLCAweDdDRUYsIDB4N0NFRiwgMHgwQjc1LCAweDdDRjAsIDB4N0NGMCwgMHgyNjlCLA0KKyAgICAweDdDRjEsIDB4N0NGMSwgMHg0MkQ0LCAweDdDRjIsIDB4N0NGMiwgMHgyNUYzLCAweDdDRjMsIDB4N0NGMywgMHg0MkQ1LA0KKyAgICAweDdDRjQsIDB4N0NGNCwgMHgyMkQ5LCAweDdDRjUsIDB4N0NGNSwgMHg0MkQ2LCAweDdDRjYsIDB4N0NGNiwgMHgyNUY0LA0KKyAgICAweDdDRjcsIDB4N0NGNywgMHg0MkQ3LCAweDdDRjgsIDB4N0NGOCwgMHgxQ0U3LCAweDdDRjksIDB4N0NGOSwgMHgyNDFCLA0KKyAgICAweDdDRkEsIDB4N0NGQSwgMHg0MkQ4LCAweDdDRkIsIDB4N0NGQiwgMHgwRjIyLCAweDdDRkMsIDB4N0NGRCwgMHg0MkQ5LA0KKyAgICAweDdDRkUsIDB4N0NGRSwgMHgxRkM4LCAweDdDRkYsIDB4N0NGRiwgMHg0MkRCLCAweDdEMDAsIDB4N0QwMCwgMHgxRjdCLA0KKyAgICAweDdEMDEsIDB4N0QwMSwgMHg0MkRDLCAweDdEMDIsIDB4N0QwMiwgMHgyNDFELCAweDdEMDMsIDB4N0QwMywgMHg0MkRELA0KKyAgICAweDdEMDQsIDB4N0QwNCwgMHgyMjRDLCAweDdEMDUsIDB4N0QwNSwgMHgxRjQ4LCAweDdEMDYsIDB4N0QwNiwgMHgyNDFDLA0KKyAgICAweDdEMDcsIDB4N0QwOCwgMHgyNDFFLCAweDdEMDksIDB4N0QwOSwgMHgyMEZGLCAweDdEMEEsIDB4N0QwQSwgMHgwRUQ4LA0KKyAgICAweDdEMEIsIDB4N0QwQiwgMHgyMTlBLCAweDdEMEMsIDB4N0QwQywgMHg0MkRFLCAweDdEMEQsIDB4N0QwRCwgMHgyMDkxLA0KKyAgICAweDdEMEUsIDB4N0QwRiwgMHg0MkRGLCAweDdEMTAsIDB4N0QxMCwgMHgyMEE3LCAweDdEMTEsIDB4N0QxMiwgMHg0MkUxLA0KKyAgICAweDdEMTMsIDB4N0QxMywgMHgyNDIzLCAweDdEMTQsIDB4N0QxNCwgMHgxRTlCLCAweDdEMTUsIDB4N0QxNSwgMHgyNDIyLA0KKyAgICAweDdEMTYsIDB4N0QxNiwgMHg0MkUzLCAweDdEMTcsIDB4N0QxNywgMHgyMTEwLCAweDdEMTgsIDB4N0QxOCwgMHg0MkU0LA0KKyAgICAweDdEMTksIDB4N0QxOSwgMHgyMjhELCAweDdEMUEsIDB4N0QxQSwgMHgxRjcxLCAweDdEMUIsIDB4N0QxQiwgMHgxRUY4LA0KKyAgICAweDdEMUMsIDB4N0QxQywgMHgyNDIxLCAweDdEMUQsIDB4N0QxRiwgMHg0MkU1LCAweDdEMjAsIDB4N0QyMCwgMHgwRENELA0KKyAgICAweDdEMjEsIDB4N0QyMSwgMHgxRUYzLCAweDdEMjIsIDB4N0QyMiwgMHgwREVDLCAweDdEMjMsIDB4N0QyNiwgMHg0MkU4LA0KKyAgICAweDdEMjcsIDB4N0QyNywgMHgwOEM1LCAweDdEMjgsIDB4N0QyQSwgMHg0MkVDLCAweDdEMkIsIDB4N0QyQiwgMHgxMjJDLA0KKyAgICAweDdEMkMsIDB4N0QyRSwgMHg0MkVGLCAweDdEMkYsIDB4N0QyRiwgMHgwOUM2LCAweDdEMzAsIDB4N0QzMCwgMHgyMUIxLA0KKyAgICAweDdEMzEsIDB4N0QzMSwgMHgyNDI2LCAweDdEMzIsIDB4N0QzMiwgMHgyNDI1LCAweDdEMzMsIDB4N0QzMywgMHgyMTIwLA0KKyAgICAweDdEMzQsIDB4N0QzOCwgMHg0MkYyLCAweDdEMzksIDB4N0QzOSwgMHgyMTFBLCAweDdEM0EsIDB4N0QzQSwgMHgyNDI0LA0KKyAgICAweDdEM0IsIDB4N0QzQiwgMHg0MkY3LCAweDdEM0MsIDB4N0QzQywgMHgyNDI4LCAweDdEM0QsIDB4N0QzRSwgMHg0MkY4LA0KKyAgICAweDdEM0YsIDB4N0QzRiwgMHgyNDJBLCAweDdENDAsIDB4N0Q0MCwgMHgyNDI5LCAweDdENDEsIDB4N0Q0MSwgMHg0MkZBLA0KKyAgICAweDdENDIsIDB4N0Q0MiwgMHgyMjk0LCAweDdENDMsIDB4N0Q0MywgMHg0MkZCLCAweDdENDQsIDB4N0Q0NCwgMHgyMkJFLA0KKyAgICAweDdENDUsIDB4N0Q0NSwgMHg0MkZDLCAweDdENDYsIDB4N0Q0NiwgMHgxRTMxLCAweDdENDcsIDB4N0Q0RCwgMHg0MkZELA0KKyAgICAweDdENEUsIDB4N0Q0RSwgMHgyNDJDLCAweDdENEYsIDB4N0Q0RiwgMHg0MzA0LCAweDdENTAsIDB4N0Q1MCwgMHgxRkI1LA0KKyAgICAweDdENTEsIDB4N0Q1QywgMHg0MzA1LCAweDdENUQsIDB4N0Q1RCwgMHgyNDJCLCAweDdENUUsIDB4N0Q1RSwgMHgxRkFGLA0KKyAgICAweDdENUYsIDB4N0Q2MCwgMHg0MzExLCAweDdENjEsIDB4N0Q2MSwgMHgyMDY4LCAweDdENjIsIDB4N0Q2MiwgMHgyMUU0LA0KKyAgICAweDdENjMsIDB4N0Q2NSwgMHg0MzEzLCAweDdENjYsIDB4N0Q2NiwgMHgxRjIxLCAweDdENjcsIDB4N0Q2NywgMHg0MzE2LA0KKyAgICAweDdENjgsIDB4N0Q2OCwgMHgyMTAxLCAweDdENjksIDB4N0Q2RCwgMHg0MzE3LCAweDdENkUsIDB4N0Q2RSwgMHgwRkMwLA0KKyAgICAweDdENkYsIDB4N0Q3MCwgMHg0MzFDLCAweDdENzEsIDB4N0Q3MSwgMHgyMTdDLCAweDdENzIsIDB4N0Q3MiwgMHgyMTRBLA0KKyAgICAweDdENzMsIDB4N0Q3MywgMHgyNDJELCAweDdENzQsIDB4N0Q3NSwgMHg0MzFFLCAweDdENzYsIDB4N0Q3NiwgMHgxRkQ0LA0KKyAgICAweDdENzcsIDB4N0Q3NywgMHgxQ0U4LCAweDdENzgsIDB4N0Q3OCwgMHg0MzIwLCAweDdENzksIDB4N0Q3OSwgMHgxRkQxLA0KKyAgICAweDdEN0EsIDB4N0Q4MCwgMHg0MzIxLCAweDdEODEsIDB4N0Q4MSwgMHgxRTMzLCAweDdEODIsIDB4N0Q4MiwgMHg0MzI4LA0KKyAgICAweDdEODMsIDB4N0Q4MywgMHgyNDJGLCAweDdEODQsIDB4N0Q4NSwgMHg0MzI5LCAweDdEODYsIDB4N0Q4NiwgMHgyNDJFLA0KKyAgICAweDdEODcsIDB4N0Q4NywgMHg0MzJCLCAweDdEODgsIDB4N0Q4OCwgMHgyNDMwLCAweDdEODksIDB4N0Q4OSwgMHgyMURCLA0KKyAgICAweDdEOEEsIDB4N0Q4RSwgMHg0MzJDLCAweDdEOEYsIDB4N0Q4RiwgMHgyMTU4LCAweDdEOTAsIDB4N0Q5MiwgMHg0MzMxLA0KKyAgICAweDdEOTMsIDB4N0Q5MywgMHgxRkMyLCAweDdEOTQsIDB4N0Q5QiwgMHg0MzM0LCAweDdEOUMsIDB4N0Q5QywgMHgyMkI5LA0KKyAgICAweDdEOUQsIDB4N0Q5RCwgMHg0MzNDLCAweDdEOUUsIDB4N0Q5RSwgMHgyNDM2LCAweDdEOUYsIDB4N0RBMSwgMHg0MzNELA0KKyAgICAweDdEQTIsIDB4N0RBMiwgMHgxRThFLCAweDdEQTMsIDB4N0RBMywgMHgyNDM5LCAweDdEQTQsIDB4N0RBNSwgMHg0MzQwLA0KKyAgICAweDdEQTYsIDB4N0RBNiwgMHgxQ0U5LCAweDdEQTcsIDB4N0RBQSwgMHg0MzQyLCAweDdEQUIsIDB4N0RBQiwgMHgyMUM1LA0KKyAgICAweDdEQUMsIDB4N0RBQywgMHgyNDM3LCAweDdEQUQsIDB4N0RBRCwgMHgyMTkyLCAweDdEQUUsIDB4N0RBRSwgMHgxQ0VBLA0KKyAgICAweDdEQUYsIDB4N0RBRiwgMHg0MzQ2LCAweDdEQjAsIDB4N0RCMCwgMHgyNDNBLCAweDdEQjEsIDB4N0RCMSwgMHgxRjE5LA0KKyAgICAweDdEQjIsIDB4N0RCMiwgMHgyMThDLCAweDdEQjMsIDB4N0RCMywgMHgxRTQwLCAweDdEQjQsIDB4N0RCNCwgMHgyMkIzLA0KKyAgICAweDdEQjUsIDB4N0RCNywgMHg0MzQ3LCAweDdEQjgsIDB4N0RCOCwgMHgyMDVGLCAweDdEQjksIDB4N0RCOSwgMHgyNDM4LA0KKyAgICAweDdEQkEsIDB4N0RCQSwgMHgyNDMyLCAweDdEQkIsIDB4N0RCQiwgMHgyMjc0LCAweDdEQkMsIDB4N0RCQywgMHg0MzRBLA0KKyAgICAweDdEQkQsIDB4N0RCRCwgMHgxRTlDLCAweDdEQkUsIDB4N0RCRSwgMHgyNDMxLCAweDdEQkYsIDB4N0RCRiwgMHgyMDg1LA0KKyAgICAweDdEQzAsIDB4N0RDMywgMHg0MzRCLCAweDdEQzQsIDB4N0RDNCwgMHgyNDM1LCAweDdEQzUsIDB4N0RDNiwgMHg0MzRGLA0KKyAgICAweDdEQzcsIDB4N0RDNywgMHgyNDNCLCAweDdEQzgsIDB4N0RDOSwgMHg0MzUxLCAweDdEQ0EsIDB4N0RDQSwgMHgxRkI3LA0KKyAgICAweDdEQ0IsIDB4N0RDQiwgMHgyNDMzLCAweDdEQ0MsIDB4N0REMCwgMHg0MzUzLCAweDdERDEsIDB4N0REMSwgMHgyMDU0LA0KKyAgICAweDdERDIsIDB4N0REMiwgMHgyMURFLCAweDdERDMsIDB4N0REMywgMHg0MzU4LCAweDdERDQsIDB4N0RENCwgMHgyNDM0LA0KKyAgICAweDdERDUsIDB4N0RENiwgMHg0MzU5LCAweDdERDcsIDB4N0RENywgMHgyNDNELCAweDdERDgsIDB4N0REOCwgMHgxRjg5LA0KKyAgICAweDdERDksIDB4N0REOSwgMHgyNDNDLCAweDdEREEsIDB4N0REQywgMHg0MzVCLCAweDdEREQsIDB4N0RERCwgMHgxRjZFLA0KKyAgICAweDdEREUsIDB4N0RERSwgMHgxRUQ4LCAweDdEREYsIDB4N0RERiwgMHg0MzVFLCAweDdERTAsIDB4N0RFMCwgMHgxRUJGLA0KKyAgICAweDdERTEsIDB4N0RFMSwgMHgyNDQ1LCAweDdERTIsIDB4N0RFMiwgMHg0MzVGLCAweDdERTMsIDB4N0RFMywgMHgyMjQ5LA0KKyAgICAweDdERTQsIDB4N0RFNSwgMHg0MzYwLCAweDdERTYsIDB4N0RFNiwgMHgyNDQxLCAweDdERTcsIDB4N0RFNywgMHg0MzYyLA0KKyAgICAweDdERTgsIDB4N0RFOCwgMHgxRTQ3LCAweDdERTksIDB4N0RFOSwgMHgxRjU2LCAweDdERUEsIDB4N0RFQiwgMHg0MzYzLA0KKyAgICAweDdERUMsIDB4N0RFQywgMHgyMDg2LCAweDdERUQsIDB4N0RFRSwgMHg0MzY1LCAweDdERUYsIDB4N0RFRiwgMHgyMTk2LA0KKyAgICAweDdERjAsIDB4N0RGMCwgMHg0MzY3LCAweDdERjEsIDB4N0RGMSwgMHgyNDQzLCAweDdERjIsIDB4N0RGMiwgMHgyNDNGLA0KKyAgICAweDdERjMsIDB4N0RGMywgMHg0MzY4LCAweDdERjQsIDB4N0RGNCwgMHgyMDIzLCAweDdERjUsIDB4N0RGNSwgMHg0MzY5LA0KKyAgICAweDdERjYsIDB4N0RGNiwgMHgyNDQyLCAweDdERjcsIDB4N0RGOCwgMHg0MzZBLCAweDdERjksIDB4N0RGOSwgMHgyNDNFLA0KKyAgICAweDdERkEsIDB4N0RGQSwgMHg0MzZDLCAweDdERkIsIDB4N0RGQiwgMHgyNkE2LCAweDdERkMsIDB4N0RGRiwgMHg0MzZELA0KKyAgICAweDdFMDAsIDB4N0UwNywgMHg0MzcxLCAweDdFMDgsIDB4N0UwOCwgMHgyMzRFLCAweDdFMDksIDB4N0UwOSwgMHgyNDQ2LA0KKyAgICAweDdFMEEsIDB4N0UwQSwgMHgyNDRCLCAweDdFMEIsIDB4N0UwQiwgMHgyNDQ0LCAweDdFMEMsIDB4N0UwRiwgMHg0Mzc5LA0KKyAgICAweDdFMTAsIDB4N0UxMCwgMHgyNDI3LCAweDdFMTEsIDB4N0UxMSwgMHgyNDRDLCAweDdFMTIsIDB4N0UxQSwgMHg0MzdELA0KKyAgICAweDdFMUIsIDB4N0UxQiwgMHgxRjBGLCAweDdFMUMsIDB4N0UxQywgMHg0Mzg2LCAweDdFMUQsIDB4N0UxRCwgMHgyNDQ3LA0KKyAgICAweDdFMUUsIDB4N0UxRSwgMHgyNDQ5LCAweDdFMUYsIDB4N0UxRiwgMHgyNDQ4LCAweDdFMjAsIDB4N0UyMiwgMHg0Mzg3LA0KKyAgICAweDdFMjMsIDB4N0UyMywgMHgyMUMyLCAweDdFMjQsIDB4N0UyNiwgMHg0MzhBLCAweDdFMjcsIDB4N0UyNywgMHgyMTZFLA0KKyAgICAweDdFMjgsIDB4N0UyQSwgMHg0MzhELCAweDdFMkIsIDB4N0UyQiwgMHgxRjAzLCAweDdFMkMsIDB4N0UyQywgMHg0MzkwLA0KKyAgICAweDdFMkQsIDB4N0UyRCwgMHgyNDRBLCAweDdFMkUsIDB4N0UyRSwgMHgyMTVDLCAweDdFMkYsIDB4N0UzMCwgMHg0MzkxLA0KKyAgICAweDdFMzEsIDB4N0UzMSwgMHgyMkJCLCAweDdFMzIsIDB4N0UzMiwgMHgyNDUwLCAweDdFMzMsIDB4N0UzMywgMHg0MzkzLA0KKyAgICAweDdFMzQsIDB4N0UzNCwgMHgyNjk0LCAweDdFMzUsIDB4N0UzNSwgMHgyNDRGLCAweDdFMzYsIDB4N0UzNiwgMHgyNUY2LA0KKyAgICAweDdFMzcsIDB4N0UzNywgMHgyMDUxLCAweDdFMzgsIDB4N0UzOCwgMHg0Mzk0LCAweDdFMzksIDB4N0UzOSwgMHgyNDRFLA0KKyAgICAweDdFM0EsIDB4N0UzQSwgMHg0Mzk1LCAweDdFM0IsIDB4N0UzQiwgMHgxREZCLCAweDdFM0MsIDB4N0UzQywgMHg0Mzk2LA0KKyAgICAweDdFM0QsIDB4N0UzRCwgMHgyMkJBLCAweDdFM0UsIDB4N0UzRSwgMHgxRjZELCAweDdFM0YsIDB4N0U0MCwgMHg0Mzk3LA0KKyAgICAweDdFNDEsIDB4N0U0MSwgMHgwNjRFLCAweDdFNDIsIDB4N0U0NCwgMHg0Mzk5LCAweDdFNDUsIDB4N0U0NSwgMHgyNDUyLA0KKyAgICAweDdFNDYsIDB4N0U0NiwgMHgyNDUxLCAweDdFNDcsIDB4N0U0NywgMHgxQ0VCLCAweDdFNDgsIDB4N0U1MSwgMHg0MzlDLA0KKyAgICAweDdFNTIsIDB4N0U1MiwgMHgyNDU1LCAweDdFNTMsIDB4N0U1MywgMHg0M0E2LCAweDdFNTQsIDB4N0U1NCwgMHgyMjg5LA0KKyAgICAweDdFNTUsIDB4N0U1NSwgMHgyMTE2LCAweDdFNTYsIDB4N0U1OSwgMHg0M0E3LCAweDdFNUEsIDB4N0U1QSwgMHgyNDU0LA0KKyAgICAweDdFNUIsIDB4N0U1RCwgMHg0M0FCLCAweDdFNUUsIDB4N0U1RSwgMHgyMEZCLCAweDdFNUYsIDB4N0U2MSwgMHg0M0FFLA0KKyAgICAweDdFNjIsIDB4N0U2MiwgMHgyNDQwLCAweDdFNjMsIDB4N0U2OCwgMHg0M0IxLCAweDdFNjksIDB4N0U2OSwgMHgyMTI2LA0KKyAgICAweDdFNkEsIDB4N0U2QSwgMHgxRjYxLCAweDdFNkIsIDB4N0U2QiwgMHgyNjlELCAweDdFNkMsIDB4N0U2QywgMHg0M0I3LA0KKyAgICAweDdFNkQsIDB4N0U2RCwgMHgxRjhBLCAweDdFNkUsIDB4N0U2RSwgMHgyNDU2LCAweDdFNkYsIDB4N0U2RiwgMHgyNDU5LA0KKyAgICAweDdFNzAsIDB4N0U3MCwgMHgyNDU4LCAweDdFNzEsIDB4N0U3MiwgMHg0M0I4LCAweDdFNzMsIDB4N0U3MywgMHgxRkFFLA0KKyAgICAweDdFNzQsIDB4N0U3OCwgMHg0M0JBLCAweDdFNzksIDB4N0U3OSwgMHgyMjFBLCAweDdFN0EsIDB4N0U3QiwgMHg0M0JGLA0KKyAgICAweDdFN0MsIDB4N0U3QywgMHgxRjdBLCAweDdFN0QsIDB4N0U3RCwgMHgyNDRELCAweDdFN0UsIDB4N0U3RSwgMHgyNDU3LA0KKyAgICAweDdFN0YsIDB4N0U4MSwgMHg0M0MxLCAweDdFODIsIDB4N0U4MiwgMHgxMjQ4LCAweDdFODMsIDB4N0U4NywgMHg0M0M0LA0KKyAgICAweDdFODgsIDB4N0U4OCwgMHgyNDUzLCAweDdFODksIDB4N0U4OSwgMHg0M0M5LCAweDdFOEEsIDB4N0U4QSwgMHgyNDIwLA0KKyAgICAweDdFOEIsIDB4N0U4QiwgMHg0M0NBLCAweDdFOEMsIDB4N0U4QywgMHgyMURGLCAweDdFOEQsIDB4N0U4RCwgMHgyNjg1LA0KKyAgICAweDdFOEUsIDB4N0U4RSwgMHg0M0NCLCAweDdFOEYsIDB4N0U4RiwgMHgxRTZFLCAweDdFOTAsIDB4N0U5MiwgMHg0M0NDLA0KKyAgICAweDdFOTMsIDB4N0U5MywgMHgyMjI0LCAweDdFOTQsIDB4N0U5NCwgMHgyNjcwLCAweDdFOTUsIDB4N0U5NSwgMHg0M0NGLA0KKyAgICAweDdFOTYsIDB4N0U5NiwgMHgyMUJBLCAweDdFOTcsIDB4N0U5NywgMHg0M0QwLCAweDdFOTgsIDB4N0U5OCwgMHgyNDVBLA0KKyAgICAweDdFOTksIDB4N0U5QSwgMHg0M0QxLCAweDdFOUIsIDB4N0U5QiwgMHgxQ0VDLCAweDdFOUMsIDB4N0U5QywgMHgxRkZGLA0KKyAgICAweDdFOUQsIDB4N0U5RSwgMHg0M0QzLCAweDdFOUYsIDB4N0U5RiwgMHgxN0QzLCAweDdFQTAsIDB4N0VBMCwgMHgwOEVGLA0KKyAgICAweDdFQTEsIDB4N0VBMSwgMHgxN0Q0LCAweDdFQTIsIDB4N0VBMiwgMHgwN0EzLCAweDdFQTMsIDB4N0VBMywgMHgxN0Q1LA0KKyAgICAweDdFQTQsIDB4N0VBNCwgMHgwRjM4LCAweDdFQTUsIDB4N0VBNSwgMHgxN0Q2LCAweDdFQTYsIDB4N0VBNiwgMHgxMEZGLA0KKyAgICAweDdFQTcsIDB4N0VBNywgMHgwODI5LCAweDdFQTgsIDB4N0VBOSwgMHgxN0Q3LCAweDdFQUEsIDB4N0VBQSwgMHgwODQwLA0KKyAgICAweDdFQUIsIDB4N0VBQiwgMHgwQ0FELCAweDdFQUMsIDB4N0VBQywgMHgwRUMyLCAweDdFQUQsIDB4N0VBRCwgMHgxN0Q5LA0KKyAgICAweDdFQUUsIDB4N0VBRSwgMHg0M0Q1LCAweDdFQUYsIDB4N0VBRiwgMHgwNTQyLCAweDdFQjAsIDB4N0VCMCwgMHgxN0RBLA0KKyAgICAweDdFQjEsIDB4N0VCMSwgMHgwQ0VELCAweDdFQjIsIDB4N0VCMiwgMHgwNkQ0LCAweDdFQjMsIDB4N0VCMywgMHgwQjJDLA0KKyAgICAweDdFQjQsIDB4N0VCNCwgMHg0M0Q2LCAweDdFQjUsIDB4N0VCNSwgMHgxMjNBLCAweDdFQjYsIDB4N0VCNiwgMHgwQTgxLA0KKyAgICAweDdFQjcsIDB4N0VCNywgMHgwNjc0LCAweDdFQjgsIDB4N0VCOCwgMHgxMUJDLCAweDdFQjksIDB4N0VCOSwgMHgwRUQ1LA0KKyAgICAweDdFQkEsIDB4N0VCQSwgMHgwNjYxLCAweDdFQkIsIDB4N0VCQywgMHg0M0Q3LCAweDdFQkQsIDB4N0VCRCwgMHgwQjY3LA0KKyAgICAweDdFQkUsIDB4N0VCRSwgMHgxN0RCLCAweDdFQkYsIDB4N0VCRiwgMHgwRjRDLCAweDdFQzAsIDB4N0VDMiwgMHgxN0RDLA0KKyAgICAweDdFQzMsIDB4N0VDMywgMHgwQTAwLCAweDdFQzQsIDB4N0VDNCwgMHgxMjQ2LCAweDdFQzUsIDB4N0VDNSwgMHgwRDI5LA0KKyAgICAweDdFQzYsIDB4N0VDNiwgMHgwRjI1LCAweDdFQzcsIDB4N0VDNywgMHgxMUFFLCAweDdFQzgsIDB4N0VDOCwgMHgxMUQ0LA0KKyAgICAweDdFQzksIDB4N0VDOSwgMHgxN0RGLCAweDdFQ0EsIDB4N0VDQSwgMHgwM0Y4LCAweDdFQ0IsIDB4N0VDQywgMHgxN0UwLA0KKyAgICAweDdFQ0QsIDB4N0VDRCwgMHgwRDE1LCAweDdFQ0UsIDB4N0VDRSwgMHgxMDc2LCAweDdFQ0YsIDB4N0VDRiwgMHgwOERDLA0KKyAgICAweDdFRDAsIDB4N0VEMCwgMHgxN0UyLCAweDdFRDEsIDB4N0VEMSwgMHgwM0ZFLCAweDdFRDIsIDB4N0VEMiwgMHgwQ0I5LA0KKyAgICAweDdFRDMsIDB4N0VEMywgMHgwOEIyLCAweDdFRDQsIDB4N0VENCwgMHgxN0UzLCAweDdFRDUsIDB4N0VENSwgMHgwQ0ExLA0KKyAgICAweDdFRDYsIDB4N0VENiwgMHg0M0Q5LCAweDdFRDcsIDB4N0VENywgMHgxN0U0LCAweDdFRDgsIDB4N0VEOCwgMHgwN0ZCLA0KKyAgICAweDdFRDksIDB4N0VEOSwgMHgwNkYzLCAweDdFREEsIDB4N0VEQSwgMHgwRkNELCAweDdFREIsIDB4N0VEQiwgMHgxN0U1LA0KKyAgICAweDdFREMsIDB4N0VEQywgMHgwQThFLCAweDdFREQsIDB4N0VERCwgMHgwOTI3LCAweDdFREUsIDB4N0VERSwgMHgwODlCLA0KKyAgICAweDdFREYsIDB4N0VERiwgMHgwRTY0LCAweDdFRTAsIDB4N0VFMSwgMHgxN0U2LCAweDdFRTIsIDB4N0VFMiwgMHgwOTFELA0KKyAgICAweDdFRTMsIDB4N0VFMywgMHgwRkIwLCAweDdFRTQsIDB4N0VFNCwgMHg0M0RBLCAweDdFRTUsIDB4N0VFNSwgMHgwRERDLA0KKyAgICAweDdFRTYsIDB4N0VFNiwgMHgwRTIzLCAweDdFRTcsIDB4N0VFNywgMHgwODNGLCAweDdFRTgsIDB4N0VFOCwgMHgxN0U4LA0KKyAgICAweDdFRTksIDB4N0VFOSwgMHgwODFCLCAweDdFRUEsIDB4N0VFQSwgMHgwRkMyLCAweDdFRUIsIDB4N0VFQiwgMHgxN0U5LA0KKyAgICAweDdFRUMsIDB4N0VFQywgMHg0M0RCLCAweDdFRUQsIDB4N0VFRCwgMHgwRkMzLCAweDdFRUUsIDB4N0VFRiwgMHgxN0VBLA0KKyAgICAweDdFRjAsIDB4N0VGMCwgMHgwNTQ1LCAweDdFRjEsIDB4N0VGMiwgMHgxN0VDLCAweDdFRjMsIDB4N0VGMywgMHgwRDM3LA0KKyAgICAweDdFRjQsIDB4N0VGNCwgMHgwRUJCLCAweDdFRjUsIDB4N0VGNSwgMHgwQUU1LCAweDdFRjYsIDB4N0VGNiwgMHgxN0VGLA0KKyAgICAweDdFRjcsIDB4N0VGNywgMHgwNDJBLCAweDdFRjgsIDB4N0VGOCwgMHgwNTE2LCAweDdFRjksIDB4N0VGOSwgMHg0M0RDLA0KKyAgICAweDdFRkEsIDB4N0VGQiwgMHgxN0YwLCAweDdFRkMsIDB4N0VGQywgMHgxMjM4LCAweDdFRkQsIDB4N0VGRCwgMHgxMTYxLA0KKyAgICAweDdFRkUsIDB4N0VGRSwgMHgxN0YyLCAweDdFRkYsIDB4N0VGRiwgMHgwQTczLCAweDdGMDAsIDB4N0YwMCwgMHgxMjE3LA0KKyAgICAweDdGMDEsIDB4N0YwMywgMHgxN0YzLCAweDdGMDQsIDB4N0YwNCwgMHgwODVELCAweDdGMDUsIDB4N0YwNSwgMHgwQUVBLA0KKyAgICAweDdGMDYsIDB4N0YwNiwgMHgwOUFELCAweDdGMDcsIDB4N0YwOCwgMHgxN0Y2LCAweDdGMDksIDB4N0YwOSwgMHgwODFDLA0KKyAgICAweDdGMEEsIDB4N0YwQSwgMHg0M0RELCAweDdGMEIsIDB4N0YwQywgMHgxN0Y4LCAweDdGMEQsIDB4N0YwRCwgMHgxN0VFLA0KKyAgICAweDdGMEUsIDB4N0YwRSwgMHgwNjBGLCAweDdGMEYsIDB4N0YwRiwgMHgxN0ZBLCAweDdGMTAsIDB4N0YxMCwgMHg0M0RFLA0KKyAgICAweDdGMTEsIDB4N0YxMiwgMHgxN0ZCLCAweDdGMTMsIDB4N0YxMywgMHgwN0NGLCAweDdGMTQsIDB4N0YxNCwgMHgwNUJGLA0KKyAgICAweDdGMTUsIDB4N0YxNSwgMHgwQTZELCAweDdGMTYsIDB4N0YxNiwgMHgwNDQ5LCAweDdGMTcsIDB4N0YxNywgMHgxN0ZELA0KKyAgICAweDdGMTgsIDB4N0YxOCwgMHgxMEY4LCAweDdGMTksIDB4N0YxOSwgMHgxN0ZFLCAweDdGMUEsIDB4N0YxQSwgMHgwNkJBLA0KKyAgICAweDdGMUIsIDB4N0YxQiwgMHgxODAwLCAweDdGMUMsIDB4N0YxQywgMHgxN0ZGLCAweDdGMUQsIDB4N0YxRCwgMHgwNjg5LA0KKyAgICAweDdGMUUsIDB4N0YxRSwgMHg0M0RGLCAweDdGMUYsIDB4N0YxRiwgMHgxODAxLCAweDdGMjAsIDB4N0YyMCwgMHgwNEJGLA0KKyAgICAweDdGMjEsIDB4N0YyNywgMHgxODAyLCAweDdGMjgsIDB4N0YyOCwgMHgxMDhDLCAweDdGMjksIDB4N0YyOSwgMHgwREVBLA0KKyAgICAweDdGMkEsIDB4N0YyRCwgMHgxODA5LCAweDdGMkUsIDB4N0YyRSwgMHgwRDAyLCAweDdGMkYsIDB4N0YzMywgMHgxODBELA0KKyAgICAweDdGMzQsIDB4N0YzNCwgMHgwODlBLCAweDdGMzUsIDB4N0YzNSwgMHgxODEyLCAweDdGMzYsIDB4N0YzNiwgMHgxQzVFLA0KKyAgICAweDdGMzcsIDB4N0YzNywgMHg0M0UwLCAweDdGMzgsIDB4N0YzOCwgMHgwNkQyLCAweDdGMzksIDB4N0YzOSwgMHg0M0UxLA0KKyAgICAweDdGM0EsIDB4N0YzQSwgMHgwQzhDLCAweDdGM0IsIDB4N0Y0MSwgMHg0M0UyLCAweDdGNDIsIDB4N0Y0MiwgMHgxQzVGLA0KKyAgICAweDdGNDMsIDB4N0Y0MywgMHg0M0U5LCAweDdGNDQsIDB4N0Y0NSwgMHgxQzYwLCAweDdGNDYsIDB4N0Y0QiwgMHg0M0VBLA0KKyAgICAweDdGNEMsIDB4N0Y0QywgMHgyNUUyLCAweDdGNEQsIDB4N0Y0RCwgMHg0M0YwLCAweDdGNEUsIDB4N0Y0RSwgMHgyNjlBLA0KKyAgICAweDdGNEYsIDB4N0Y0RiwgMHg0M0YxLCAweDdGNTAsIDB4N0Y1MCwgMHgwNzM3LCAweDdGNTEsIDB4N0Y1MSwgMHgwRUE5LA0KKyAgICAweDdGNTIsIDB4N0Y1MywgMHg0M0YyLCAweDdGNTQsIDB4N0Y1NCwgMHgxMjlFLCAweDdGNTUsIDB4N0Y1NSwgMHgwNzY4LA0KKyAgICAweDdGNTYsIDB4N0Y1NiwgMHg0M0Y0LCAweDdGNTcsIDB4N0Y1NywgMHgwQTg1LCAweDdGNTgsIDB4N0Y1OCwgMHgxQTgxLA0KKyAgICAweDdGNTksIDB4N0Y1OSwgMHg0M0Y1LCAweDdGNUEsIDB4N0Y1QSwgMHgwNjQwLCAweDdGNUIsIDB4N0Y1RSwgMHg0M0Y2LA0KKyAgICAweDdGNUYsIDB4N0Y1RiwgMHgxQTgzLCAweDdGNjAsIDB4N0Y2MCwgMHg0M0ZBLCAweDdGNjEsIDB4N0Y2MSwgMHgxQTgyLA0KKyAgICAweDdGNjIsIDB4N0Y2MiwgMHgwM0UwLCAweDdGNjMsIDB4N0Y2NywgMHg0M0ZCLCAweDdGNjgsIDB4N0Y2OCwgMHgxQTg1LA0KKyAgICAweDdGNjksIDB4N0Y2OSwgMHgxMTc3LCAweDdGNkEsIDB4N0Y2QSwgMHgxMjRDLCAweDdGNkIsIDB4N0Y2RCwgMHg0NDAwLA0KKyAgICAweDdGNkUsIDB4N0Y2RSwgMHgxMUMyLCAweDdGNkYsIDB4N0Y2RiwgMHg0NDAzLCAweDdGNzAsIDB4N0Y3MCwgMHgxRUVBLA0KKyAgICAweDdGNzEsIDB4N0Y3MSwgMHgxQTg3LCAweDdGNzIsIDB4N0Y3MiwgMHgwRDg3LCAweDdGNzMsIDB4N0Y3MywgMHg0NDA0LA0KKyAgICAweDdGNzQsIDB4N0Y3NCwgMHgxQTg2LCAweDdGNzUsIDB4N0Y3NiwgMHg0NDA1LCAweDdGNzcsIDB4N0Y3NywgMHgxRTJDLA0KKyAgICAweDdGNzgsIDB4N0Y3OCwgMHg0NDA3LCAweDdGNzksIDB4N0Y3OSwgMHgxQTg4LCAweDdGN0EsIDB4N0Y3RCwgMHg0NDA4LA0KKyAgICAweDdGN0UsIDB4N0Y3RSwgMHgxQThBLCAweDdGN0YsIDB4N0Y4MCwgMHg0NDBDLCAweDdGODEsIDB4N0Y4MSwgMHgxQTg5LA0KKyAgICAweDdGODIsIDB4N0Y4NCwgMHg0NDBFLCAweDdGODUsIDB4N0Y4NSwgMHgyMDYyLCAweDdGODYsIDB4N0Y4NiwgMHgyNEYxLA0KKyAgICAweDdGODcsIDB4N0Y4NywgMHg0NDExLCAweDdGODgsIDB4N0Y4OCwgMHgyNEYyLCAweDdGODksIDB4N0Y4OSwgMHg0NDEyLA0KKyAgICAweDdGOEEsIDB4N0Y4QSwgMHgxMDFCLCAweDdGOEIsIDB4N0Y4QiwgMHg0NDEzLCAweDdGOEMsIDB4N0Y4QywgMHgwQzM5LA0KKyAgICAweDdGOEQsIDB4N0Y4RCwgMHg0NDE0LCAweDdGOEUsIDB4N0Y4RSwgMHgwQUM1LCAweDdGOEYsIDB4N0Y5MywgMHg0NDE1LA0KKyAgICAweDdGOTQsIDB4N0Y5NCwgMHgwNkRDLCAweDdGOTUsIDB4N0Y5OSwgMHg0NDFBLCAweDdGOUEsIDB4N0Y5QSwgMHgwQTMwLA0KKyAgICAweDdGOUIsIDB4N0Y5QywgMHg0NDFGLCAweDdGOUQsIDB4N0Y5RCwgMHgxQ0M0LCAweDdGOUUsIDB4N0Y5RSwgMHgwRkFBLA0KKyAgICAweDdGOUYsIDB4N0Y5RiwgMHgxQ0M1LCAweDdGQTAsIDB4N0ZBMCwgMHg0NDIxLCAweDdGQTEsIDB4N0ZBMSwgMHgwRjQ4LA0KKyAgICAweDdGQTIsIDB4N0ZBMywgMHg0NDIyLCAweDdGQTQsIDB4N0ZBNCwgMHgwQzk1LCAweDdGQTUsIDB4N0ZBNSwgMHgyNUYyLA0KKyAgICAweDdGQTYsIDB4N0ZBNiwgMHg0NDI0LCAweDdGQTcsIDB4N0ZBNywgMHgxQ0M2LCAweDdGQTgsIDB4N0ZBOCwgMHg0NDI1LA0KKyAgICAweDdGQTksIDB4N0ZBOSwgMHgyMjE1LCAweDdGQUEsIDB4N0ZBRSwgMHg0NDI2LCAweDdGQUYsIDB4N0ZCMCwgMHgxQ0M3LA0KKyAgICAweDdGQjEsIDB4N0ZCMSwgMHg0NDJCLCAweDdGQjIsIDB4N0ZCMiwgMHgxQ0M5LCAweDdGQjMsIDB4N0ZCNywgMHg0NDJDLA0KKyAgICAweDdGQjgsIDB4N0ZCOCwgMHgxMzBFLCAweDdGQjksIDB4N0ZCOSwgMHgwNkY5LCAweDdGQkEsIDB4N0ZCQiwgMHg0NDMxLA0KKyAgICAweDdGQkMsIDB4N0ZCQywgMHgxNzZELCAweDdGQkQsIDB4N0ZCRCwgMHgxMEQ1LCAweDdGQkUsIDB4N0ZCRSwgMHg0NDMzLA0KKyAgICAweDdGQkYsIDB4N0ZCRiwgMHgxQ0RFLCAweDdGQzAsIDB4N0ZDMCwgMHg0NDM0LCAweDdGQzEsIDB4N0ZDMSwgMHgwRURCLA0KKyAgICAweDdGQzIsIDB4N0ZDNCwgMHg0NDM1LCAweDdGQzUsIDB4N0ZDNSwgMHgwNTA2LCAweDdGQzYsIDB4N0ZDOSwgMHg0NDM4LA0KKyAgICAweDdGQ0EsIDB4N0ZDQSwgMHgxQjk4LCAweDdGQ0IsIDB4N0ZDQiwgMHg0NDNDLCAweDdGQ0MsIDB4N0ZDQywgMHgxMDc1LA0KKyAgICAweDdGQ0QsIDB4N0ZDRCwgMHg0NDNELCAweDdGQ0UsIDB4N0ZDRSwgMHgxQ0RGLCAweDdGQ0YsIDB4N0ZEMSwgMHg0NDNFLA0KKyAgICAweDdGRDIsIDB4N0ZEMiwgMHgyMUFFLCAweDdGRDMsIDB4N0ZEMywgMHg0NDQxLCAweDdGRDQsIDB4N0ZENCwgMHgwRjU1LA0KKyAgICAweDdGRDUsIDB4N0ZENSwgMHgxQ0UwLCAweDdGRDYsIDB4N0ZENywgMHg0NDQyLCAweDdGRDgsIDB4N0ZEOCwgMHgwQzQ5LA0KKyAgICAweDdGRDksIDB4N0ZERSwgMHg0NDQ0LCAweDdGREYsIDB4N0ZERiwgMHgwNUI1LCAweDdGRTAsIDB4N0ZFMCwgMHgwNTY3LA0KKyAgICAweDdGRTEsIDB4N0ZFMSwgMHgxQ0UyLCAweDdGRTIsIDB4N0ZFNCwgMHg0NDRBLCAweDdGRTUsIDB4N0ZFNSwgMHgxQ0UxLA0KKyAgICAweDdGRTYsIDB4N0ZFNiwgMHgxQ0UzLCAweDdGRTcsIDB4N0ZFOCwgMHg0NDRELCAweDdGRTksIDB4N0ZFOSwgMHgxQ0U0LA0KKyAgICAweDdGRUEsIDB4N0ZFRCwgMHg0NDRGLCAweDdGRUUsIDB4N0ZFRSwgMHgxQ0U1LCAweDdGRUYsIDB4N0ZFRiwgMHg0NDUzLA0KKyAgICAweDdGRjAsIDB4N0ZGMCwgMHgwNzY5LCAweDdGRjEsIDB4N0ZGMSwgMHgwM0NBLCAweDdGRjIsIDB4N0ZGMiwgMHg0NDU0LA0KKyAgICAweDdGRjMsIDB4N0ZGMywgMHgxQ0U2LCAweDdGRjQsIDB4N0ZGOCwgMHg0NDU1LCAweDdGRjksIDB4N0ZGOSwgMHgyMEUwLA0KKyAgICAweDdGRkEsIDB4N0ZGQSwgMHg0NDVBLCAweDdGRkIsIDB4N0ZGQiwgMHgwNjRBLCAweDdGRkMsIDB4N0ZGQywgMHgxMDc0LA0KKyAgICAweDdGRkQsIDB4N0ZGRiwgMHg0NDVCLCAweDgwMDAsIDB4ODAwMCwgMHgxMDMyLCAweDgwMDEsIDB4ODAwMSwgMHgwOUJBLA0KKyAgICAweDgwMDIsIDB4ODAwMiwgMHg0NDVFLCAweDgwMDMsIDB4ODAwMywgMHgwOTQ5LCAweDgwMDQsIDB4ODAwNCwgMHgxOTUzLA0KKyAgICAweDgwMDUsIDB4ODAwNSwgMHgxMTgwLCAweDgwMDYsIDB4ODAwNiwgMHgxOTFBLCAweDgwMDcsIDB4ODAwQSwgMHg0NDVGLA0KKyAgICAweDgwMEIsIDB4ODAwQiwgMHgxQkQ3LCAweDgwMEMsIDB4ODAwQywgMHgwNjM3LCAweDgwMEQsIDB4ODAwRCwgMHgwRDk4LA0KKyAgICAweDgwMEUsIDB4ODAwRiwgMHg0NDYzLCAweDgwMTAsIDB4ODAxMCwgMHgwQjMwLCAweDgwMTEsIDB4ODAxMSwgMHg0NDY1LA0KKyAgICAweDgwMTIsIDB4ODAxMiwgMHgxQkNCLCAweDgwMTMsIDB4ODAxMywgMHg0NDY2LCAweDgwMTQsIDB4ODAxNCwgMHgxQkNDLA0KKyAgICAweDgwMTUsIDB4ODAxNSwgMHgwNkY2LCAweDgwMTYsIDB4ODAxNiwgMHgxQkNELCAweDgwMTcsIDB4ODAxNywgMHgwNzdCLA0KKyAgICAweDgwMTgsIDB4ODAxOCwgMHgxMTA4LCAweDgwMTksIDB4ODAxOSwgMHgwM0RELCAweDgwMUEsIDB4ODAxQiwgMHg0NDY3LA0KKyAgICAweDgwMUMsIDB4ODAxQywgMHgxQkNFLCAweDgwMUQsIDB4ODAxRiwgMHg0NDY5LCAweDgwMjAsIDB4ODAyMCwgMHgxQkNGLA0KKyAgICAweDgwMjEsIDB4ODAyMSwgMHg0NDZDLCAweDgwMjIsIDB4ODAyMiwgMHgxQkQwLCAweDgwMjMsIDB4ODAyNCwgMHg0NDZELA0KKyAgICAweDgwMjUsIDB4ODAyNywgMHgxQkQxLCAweDgwMjgsIDB4ODAyOCwgMHgxQkQ1LCAweDgwMjksIDB4ODAyOSwgMHgxQkQ0LA0KKyAgICAweDgwMkEsIDB4ODAyQSwgMHgwQjk2LCAweDgwMkIsIDB4ODAyQiwgMHg0NDZGLCAweDgwMkMsIDB4ODAyQywgMHgyNUMyLA0KKyAgICAweDgwMkQsIDB4ODAyRCwgMHg0NDcwLCAweDgwMkUsIDB4ODAyRSwgMHgyNUMxLCAweDgwMkYsIDB4ODAzMCwgMHg0NDcxLA0KKyAgICAweDgwMzEsIDB4ODAzMSwgMHgxQkQ2LCAweDgwMzIsIDB4ODAzMiwgMHg0NDczLCAweDgwMzMsIDB4ODAzMywgMHgwNjM5LA0KKyAgICAweDgwMzQsIDB4ODAzNCwgMHg0NDc0LCAweDgwMzUsIDB4ODAzNSwgMHgxQkQ4LCAweDgwMzYsIDB4ODAzNiwgMHgxMDM1LA0KKyAgICAweDgwMzcsIDB4ODAzNywgMHgxNEIxLCAweDgwMzgsIDB4ODAzOCwgMHgwREJGLCAweDgwMzksIDB4ODAzQSwgMHg0NDc1LA0KKyAgICAweDgwM0IsIDB4ODAzQiwgMHgwNTAxLCAweDgwM0MsIDB4ODAzQywgMHg0NDc3LCAweDgwM0QsIDB4ODAzRCwgMHgwNTgzLA0KKyAgICAweDgwM0UsIDB4ODAzRSwgMHg0NDc4LCAweDgwM0YsIDB4ODAzRiwgMHgwNkZCLCAweDgwNDAsIDB4ODA0MSwgMHg0NDc5LA0KKyAgICAweDgwNDIsIDB4ODA0MiwgMHgwQjU3LCAweDgwNDMsIDB4ODA0MywgMHgxQkQ5LCAweDgwNDQsIDB4ODA0NSwgMHg0NDdCLA0KKyAgICAweDgwNDYsIDB4ODA0NiwgMHgxQkRBLCAweDgwNDcsIDB4ODA0OSwgMHg0NDdELCAweDgwNEEsIDB4ODA0QSwgMHgwQTBELA0KKyAgICAweDgwNEIsIDB4ODA0QiwgMHgwQTQ0LCAweDgwNEMsIDB4ODA0QywgMHgxMUFGLCAweDgwNEQsIDB4ODA0RCwgMHgxQkRCLA0KKyAgICAweDgwNEUsIDB4ODA1MSwgMHg0NDgwLCAweDgwNTIsIDB4ODA1MiwgMHgxQkRDLCAweDgwNTMsIDB4ODA1MywgMHg0NDg0LA0KKyAgICAweDgwNTQsIDB4ODA1NCwgMHgwOUYzLCAweDgwNTUsIDB4ODA1NSwgMHg0NDg1LCAweDgwNTYsIDB4ODA1NiwgMHgyMTI4LA0KKyAgICAweDgwNTcsIDB4ODA1NywgMHg0NDg2LCAweDgwNTgsIDB4ODA1OCwgMHgwQkQ3LCAweDgwNTksIDB4ODA1OSwgMHg0NDg3LA0KKyAgICAweDgwNUEsIDB4ODA1QSwgMHgwOTBBLCAweDgwNUIsIDB4ODA1RCwgMHg0NDg4LCAweDgwNUUsIDB4ODA1RSwgMHgyMTk5LA0KKyAgICAweDgwNUYsIDB4ODA2OCwgMHg0NDhCLCAweDgwNjksIDB4ODA2OSwgMHgxQkRELCAweDgwNkEsIDB4ODA2QSwgMHgwNTUyLA0KKyAgICAweDgwNkIsIDB4ODA2RSwgMHg0NDk1LCAweDgwNkYsIDB4ODA2RiwgMHgyMDE3LCAweDgwNzAsIDB4ODA3MCwgMHgxRUEwLA0KKyAgICAweDgwNzEsIDB4ODA3MSwgMHgxQkRFLCAweDgwNzIsIDB4ODA3MiwgMHgyMTI1LCAweDgwNzMsIDB4ODA3MywgMHgyMTRELA0KKyAgICAweDgwNzQsIDB4ODA3NCwgMHg0NDk5LCAweDgwNzUsIDB4ODA3NSwgMHgyNUM0LCAweDgwNzYsIDB4ODA3NiwgMHgyMDlELA0KKyAgICAweDgwNzcsIDB4ODA3NywgMHgyMjhBLCAweDgwNzgsIDB4ODA3OCwgMHg0NDlBLCAweDgwNzksIDB4ODA3OSwgMHgyNUMzLA0KKyAgICAweDgwN0EsIDB4ODA3QywgMHg0NDlCLCAweDgwN0QsIDB4ODA3RCwgMHgyMTc5LCAweDgwN0UsIDB4ODA3RSwgMHgyMDM4LA0KKyAgICAweDgwN0YsIDB4ODA3RiwgMHgxQTFFLCAweDgwODAsIDB4ODA4MCwgMHgxQTFELCAweDgwODEsIDB4ODA4MiwgMHg0NDlFLA0KKyAgICAweDgwODMsIDB4ODA4MywgMHgwREQ1LCAweDgwODQsIDB4ODA4NCwgMHgxMDY1LCAweDgwODUsIDB4ODA4NSwgMHgyMTU1LA0KKyAgICAweDgwODYsIDB4ODA4NiwgMHgwREI2LCAweDgwODcsIDB4ODA4NywgMHgxMTc5LCAweDgwODgsIDB4ODA4OCwgMHg0NEEwLA0KKyAgICAweDgwODksIDB4ODA4OSwgMHgwQ0JELCAweDgwOEEsIDB4ODA4QSwgMHg0NEExLCAweDgwOEIsIDB4ODA4QiwgMHgwOUNBLA0KKyAgICAweDgwOEMsIDB4ODA4QywgMHgwODE0LCAweDgwOEQsIDB4ODA5MiwgMHg0NEEyLCAweDgwOTMsIDB4ODA5MywgMHgxOTcxLA0KKyAgICAweDgwOTQsIDB4ODA5NSwgMHg0NEE4LCAweDgwOTYsIDB4ODA5NiwgMHgwRjZGLCAweDgwOTcsIDB4ODA5NywgMHg0NEFBLA0KKyAgICAweDgwOTgsIDB4ODA5OCwgMHgxMUUxLCAweDgwOTksIDB4ODA5OSwgMHg0NEFCLCAweDgwOUEsIDB4ODA5QSwgMHgwNjA2LA0KKyAgICAweDgwOUIsIDB4ODA5QiwgMHgwNkQzLCAweDgwOUMsIDB4ODA5QywgMHgxOTcwLCAweDgwOUQsIDB4ODA5RCwgMHgwNkM5LA0KKyAgICAweDgwOUUsIDB4ODA5RSwgMHg0NEFDLCAweDgwOUYsIDB4ODA5RiwgMHgxOTZGLCAweDgwQTAsIDB4ODBBMCwgMHgwNENCLA0KKyAgICAweDgwQTEsIDB4ODBBMSwgMHgwNzIyLCAweDgwQTIsIDB4ODBBMiwgMHgxMUFBLCAweDgwQTMsIDB4ODBBMywgMHg0NEFELA0KKyAgICAweDgwQTQsIDB4ODBBNCwgMHgwNjkxLCAweDgwQTUsIDB4ODBBNSwgMHgwNjY3LCAweDgwQTYsIDB4ODBBOCwgMHg0NEFFLA0KKyAgICAweDgwQTksIDB4ODBBOSwgMHgwODVBLCAweDgwQUEsIDB4ODBBQSwgMHgwNjVCLCAweDgwQUIsIDB4ODBBQiwgMHgxOTc2LA0KKyAgICAweDgwQUMsIDB4ODBBQywgMHg0NEIxLCAweDgwQUQsIDB4ODBBRCwgMHgxOTc3LCAweDgwQUUsIDB4ODBBRSwgMHgwM0M0LA0KKyAgICAweDgwQUYsIDB4ODBBRiwgMHgwOTVDLCAweDgwQjAsIDB4ODBCMCwgMHg0NEIyLCAweDgwQjEsIDB4ODBCMSwgMHgxOTc1LA0KKyAgICAweDgwQjIsIDB4ODBCMiwgMHgxMEUyLCAweDgwQjMsIDB4ODBCMywgMHg0NEIzLCAweDgwQjQsIDB4ODBCNCwgMHgxOTc4LA0KKyAgICAweDgwQjUsIDB4ODBCNiwgMHg0NEI0LCAweDgwQjcsIDB4ODBCNywgMHgxOTc5LCAweDgwQjgsIDB4ODBCOSwgMHg0NEI2LA0KKyAgICAweDgwQkEsIDB4ODBCQSwgMHgwNjZCLCAweDgwQkIsIDB4ODBCQiwgMHg0NEI4LCAweDgwQkMsIDB4ODBCQywgMHgxOTcyLA0KKyAgICAweDgwQkQsIDB4ODBCRCwgMHgxOTc0LCAweDgwQkUsIDB4ODBCRSwgMHgwRDJGLCAweDgwQkYsIDB4ODBCRiwgMHgxMUQ2LA0KKyAgICAweDgwQzAsIDB4ODBDMCwgMHgxMTZFLCAweDgwQzEsIDB4ODBDMSwgMHgwRjdELCAweDgwQzIsIDB4ODBDMiwgMHgxOTdGLA0KKyAgICAweDgwQzMsIDB4ODBDMywgMHgwRUM3LCAweDgwQzQsIDB4ODBDNCwgMHgxOTgwLCAweDgwQzUsIDB4ODBDNSwgMHg0NEI5LA0KKyAgICAweDgwQzYsIDB4ODBDNiwgMHgwNTg5LCAweDgwQzcsIDB4ODBDQiwgMHg0NEJBLCAweDgwQ0MsIDB4ODBDQywgMHgwNDFDLA0KKyAgICAweDgwQ0QsIDB4ODBDRCwgMHgxOTgyLCAweDgwQ0UsIDB4ODBDRSwgMHgwREY4LCAweDgwQ0YsIDB4ODBENSwgMHg0NEJGLA0KKyAgICAweDgwRDYsIDB4ODBENiwgMHgwQjk3LCAweDgwRDcsIDB4ODBENywgMHgxOTgzLCAweDgwRDgsIDB4ODBEOCwgMHg0NEM2LA0KKyAgICAweDgwRDksIDB4ODBEOSwgMHgxOTgxLCAweDgwREEsIDB4ODBEQSwgMHgwQkEwLCAweDgwREIsIDB4ODBEQiwgMHgxOTdFLA0KKyAgICAweDgwREMsIDB4ODBEQywgMHgwRDNCLCAweDgwREQsIDB4ODBERCwgMHgxOTg1LCAweDgwREUsIDB4ODBERSwgMHgwNDA2LA0KKyAgICAweDgwREYsIDB4ODBFMCwgMHg0NEM3LCAweDgwRTEsIDB4ODBFMSwgMHgwN0IxLCAweDgwRTIsIDB4ODBFMywgMHg0NEM5LA0KKyAgICAweDgwRTQsIDB4ODBFNCwgMHgxMjZELCAweDgwRTUsIDB4ODBFNSwgMHgxQkM3LCAweDgwRTYsIDB4ODBFNiwgMHg0NENCLA0KKyAgICAweDgwRTcsIDB4ODBFQSwgMHgxOTdBLCAweDgwRUIsIDB4ODBFQiwgMHgxOTg2LCAweDgwRUMsIDB4ODBFQywgMHgxNzlBLA0KKyAgICAweDgwRUQsIDB4ODBFRCwgMHgxOTg5LCAweDgwRUUsIDB4ODBFRSwgMHg0NENDLCAweDgwRUYsIDB4ODBFRiwgMHgwOTc1LA0KKyAgICAweDgwRjAsIDB4ODBGMCwgMHgxMDRGLCAweDgwRjEsIDB4ODBGMSwgMHgxOTg3LCAweDgwRjIsIDB4ODBGMiwgMHgxOThDLA0KKyAgICAweDgwRjMsIDB4ODBGMywgMHgwNkU3LCAweDgwRjQsIDB4ODBGNCwgMHgxOTg4LCAweDgwRjUsIDB4ODBGNSwgMHg0NENELA0KKyAgICAweDgwRjYsIDB4ODBGNiwgMHgwODhCLCAweDgwRjcsIDB4ODBGNywgMHg0NENFLCAweDgwRjgsIDB4ODBGOCwgMHgwRkEzLA0KKyAgICAweDgwRjksIDB4ODBGOSwgMHg0NENGLCAweDgwRkEsIDB4ODBGQSwgMHgwM0MyLCAweDgwRkIsIDB4ODBGQiwgMHg0NEQwLA0KKyAgICAweDgwRkMsIDB4ODBGQywgMHgxOThELCAweDgwRkQsIDB4ODBGRCwgMHgwQjNGLCAweDgwRkUsIDB4ODBGRiwgMHg0NEQxLA0KKyAgICAweDgxMDAsIDB4ODEwMSwgMHg0NEQzLCAweDgxMDIsIDB4ODEwMiwgMHgxMUFCLCAweDgxMDMsIDB4ODEwNCwgMHg0NEQ1LA0KKyAgICAweDgxMDUsIDB4ODEwNSwgMHgyMUQyLCAweDgxMDYsIDB4ODEwNiwgMHgwNTYzLCAweDgxMDcsIDB4ODEwOCwgMHg0NEQ3LA0KKyAgICAweDgxMDksIDB4ODEwOSwgMHgwQTlELCAweDgxMEEsIDB4ODEwQSwgMHgwODJDLCAweDgxMEIsIDB4ODEwQywgMHg0NEQ5LA0KKyAgICAweDgxMEQsIDB4ODEwRSwgMHgxOThBLCAweDgxMEYsIDB4ODEwRiwgMHgxMTIzLCAweDgxMTAsIDB4ODExMCwgMHgwQzA5LA0KKyAgICAweDgxMTEsIDB4ODExMSwgMHgwQjM3LCAweDgxMTIsIDB4ODExMiwgMHgxOThGLCAweDgxMTMsIDB4ODExMywgMHgwQjY4LA0KKyAgICAweDgxMTQsIDB4ODExNCwgMHgxMzA5LCAweDgxMTUsIDB4ODExNSwgMHg0NERCLCAweDgxMTYsIDB4ODExNiwgMHgwNDc4LA0KKyAgICAweDgxMTcsIDB4ODExNywgMHg0NERDLCAweDgxMTgsIDB4ODExOCwgMHgxOTk0LCAweDgxMTksIDB4ODExOSwgMHg0NERELA0KKyAgICAweDgxMUEsIDB4ODExQSwgMHgwODk2LCAweDgxMUIsIDB4ODExQiwgMHgyNEM3LCAweDgxMUMsIDB4ODExRCwgMHg0NERFLA0KKyAgICAweDgxMUUsIDB4ODExRSwgMHgxOTkyLCAweDgxMUYsIDB4ODEyQiwgMHg0NEUwLCAweDgxMkMsIDB4ODEyQywgMHgxOTkzLA0KKyAgICAweDgxMkQsIDB4ODEyRSwgMHg0NEVELCAweDgxMkYsIDB4ODEyRiwgMHgwNkE3LCAweDgxMzAsIDB4ODEzMCwgMHg0NEVGLA0KKyAgICAweDgxMzEsIDB4ODEzMSwgMHgwRTgyLCAweDgxMzIsIDB4ODEzMiwgMHgxOTk1LCAweDgxMzMsIDB4ODEzNSwgMHg0NEYwLA0KKyAgICAweDgxMzYsIDB4ODEzNiwgMHgxOTkxLCAweDgxMzcsIDB4ODEzNywgMHg0NEYzLCAweDgxMzgsIDB4ODEzOCwgMHgwOUZDLA0KKyAgICAweDgxMzksIDB4ODEzOSwgMHgyMjc5LCAweDgxM0EsIDB4ODEzRCwgMHg0NEY0LCAweDgxM0UsIDB4ODEzRSwgMHgwQkMxLA0KKyAgICAweDgxM0YsIDB4ODE0NSwgMHg0NEY4LCAweDgxNDYsIDB4ODE0NiwgMHgwRTQ2LCAweDgxNDcsIDB4ODE0NywgMHg0NEZGLA0KKyAgICAweDgxNDgsIDB4ODE0OCwgMHgxOTk2LCAweDgxNDksIDB4ODE0OSwgMHg0NTAwLCAweDgxNEEsIDB4ODE0QSwgMHgwOTlCLA0KKyAgICAweDgxNEIsIDB4ODE0QiwgMHgxMDNGLCAweDgxNEMsIDB4ODE0QywgMHgxOTk3LCAweDgxNEQsIDB4ODE0RCwgMHg0NTAxLA0KKyAgICAweDgxNEUsIDB4ODE0RSwgMHgyMTIzLCAweDgxNEYsIDB4ODE0RiwgMHg0NTAyLCAweDgxNTAsIDB4ODE1MCwgMHgwNkFBLA0KKyAgICAweDgxNTEsIDB4ODE1MSwgMHgwNkE4LCAweDgxNTIsIDB4ODE1MiwgMHg0NTAzLCAweDgxNTMsIDB4ODE1MywgMHgxOTk4LA0KKyAgICAweDgxNTQsIDB4ODE1NCwgMHgwQzM4LCAweDgxNTUsIDB4ODE1NSwgMHgwRUE0LCAweDgxNTYsIDB4ODE1NiwgMHgyNEM1LA0KKyAgICAweDgxNTcsIDB4ODE1OCwgMHg0NTA0LCAweDgxNTksIDB4ODE1QSwgMHgxOTlBLCAweDgxNUIsIDB4ODE1RiwgMHg0NTA2LA0KKyAgICAweDgxNjAsIDB4ODE2MCwgMHgxOTlELCAweDgxNjEsIDB4ODE2MSwgMHgyNEM5LCAweDgxNjIsIDB4ODE2NCwgMHg0NTBCLA0KKyAgICAweDgxNjUsIDB4ODE2NSwgMHgwRjkzLCAweDgxNjYsIDB4ODE2NiwgMHgyMDk0LCAweDgxNjcsIDB4ODE2NywgMHgxOUEyLA0KKyAgICAweDgxNjgsIDB4ODE2OCwgMHg0NTBFLCAweDgxNjksIDB4ODE2OSwgMHgxOTlFLCAweDgxNkEsIDB4ODE2QSwgMHg0NTBGLA0KKyAgICAweDgxNkIsIDB4ODE2QiwgMHgyMjk2LCAweDgxNkMsIDB4ODE2QywgMHg0NTEwLCAweDgxNkQsIDB4ODE2RCwgMHgxOUExLA0KKyAgICAweDgxNkUsIDB4ODE2RSwgMHgwQ0Q0LCAweDgxNkYsIDB4ODE2RiwgMHg0NTExLCAweDgxNzAsIDB4ODE3MCwgMHgxMDI1LA0KKyAgICAweDgxNzEsIDB4ODE3MSwgMHgxOTlDLCAweDgxNzIsIDB4ODE3MywgMHg0NTEyLCAweDgxNzQsIDB4ODE3NCwgMHgxOTk5LA0KKyAgICAweDgxNzUsIDB4ODE3NywgMHg0NTE0LCAweDgxNzgsIDB4ODE3OCwgMHgxRTc3LCAweDgxNzksIDB4ODE3OSwgMHgwNkI0LA0KKyAgICAweDgxN0EsIDB4ODE3QSwgMHgwRjQ2LCAweDgxN0IsIDB4ODE3QiwgMHgwQjQ4LCAweDgxN0MsIDB4ODE3RCwgMHgxOTlGLA0KKyAgICAweDgxN0UsIDB4ODE3RSwgMHgwRTJELCAweDgxN0YsIDB4ODE3RiwgMHgwRTc5LCAweDgxODAsIDB4ODE4MCwgMHgwM0ZELA0KKyAgICAweDgxODEsIDB4ODE4MSwgMHg0NTE3LCAweDgxODIsIDB4ODE4MiwgMHgxOUE2LCAweDgxODMsIDB4ODE4NywgMHg0NTE4LA0KKyAgICAweDgxODgsIDB4ODE4OCwgMHgxOUE1LCAweDgxODksIDB4ODE4OSwgMHg0NTFELCAweDgxOEEsIDB4ODE4QSwgMHgwNDc5LA0KKyAgICAweDgxOEIsIDB4ODE4RSwgMHg0NTFFLCAweDgxOEYsIDB4ODE4RiwgMHgwNkRCLCAweDgxOTAsIDB4ODE5MCwgMHg0NTIyLA0KKyAgICAweDgxOTEsIDB4ODE5MSwgMHgxOUE3LCAweDgxOTIsIDB4ODE5NywgMHg0NTIzLCAweDgxOTgsIDB4ODE5OCwgMHgwNDU1LA0KKyAgICAweDgxOTksIDB4ODE5OSwgMHg0NTI5LCAweDgxOUEsIDB4ODE5QSwgMHgxRjA2LCAweDgxOUIsIDB4ODE5QiwgMHgwRTE4LA0KKyAgICAweDgxOUMsIDB4ODE5QywgMHgwQjA3LCAweDgxOUQsIDB4ODE5RCwgMHgwRjEyLCAweDgxOUUsIDB4ODE5RiwgMHg0NTJBLA0KKyAgICAweDgxQTAsIDB4ODFBMCwgMHgxRkE1LCAweDgxQTEsIDB4ODFBMiwgMHg0NTJDLCAweDgxQTMsIDB4ODFBMywgMHgxOUE5LA0KKyAgICAweDgxQTQsIDB4ODFBNSwgMHg0NTJFLCAweDgxQTYsIDB4ODFBNiwgMHgxOUIwLCAweDgxQTcsIDB4ODFBNywgMHg0NTMwLA0KKyAgICAweDgxQTgsIDB4ODFBOCwgMHgwQkIzLCAweDgxQTksIDB4ODFBOSwgMHgyMDk5LCAweDgxQUEsIDB4ODFBQSwgMHgxOUFBLA0KKyAgICAweDgxQUIsIDB4ODFCMiwgMHg0NTMxLCAweDgxQjMsIDB4ODFCMywgMHgwQ0ZFLCAweDgxQjQsIDB4ODFCOSwgMHg0NTM5LA0KKyAgICAweDgxQkEsIDB4ODFCQSwgMHgxNjQxLCAweDgxQkIsIDB4ODFCQiwgMHgxOUFFLCAweDgxQkMsIDB4ODFCQywgMHg0NTNGLA0KKyAgICAweDgxQkQsIDB4ODFCRCwgMHgxRUFELCAweDgxQkUsIDB4ODFCRSwgMHgyNEM4LCAweDgxQkYsIDB4ODFCRiwgMHgyMEE4LA0KKyAgICAweDgxQzAsIDB4ODFDMCwgMHgwRTdGLCAweDgxQzEsIDB4ODFDMSwgMHgxOUFGLCAweDgxQzIsIDB4ODFDMiwgMHgwNDQ0LA0KKyAgICAweDgxQzMsIDB4ODFDMywgMHgxMDlDLCAweDgxQzQsIDB4ODFDNSwgMHg0NTQwLCAweDgxQzYsIDB4ODFDNiwgMHgxMDYzLA0KKyAgICAweDgxQzcsIDB4ODFDOCwgMHg0NTQyLCAweDgxQzksIDB4ODFDOSwgMHgyMDFGLCAweDgxQ0EsIDB4ODFDQSwgMHgxOUFELA0KKyAgICAweDgxQ0IsIDB4ODFDQiwgMHg0NTQ0LCAweDgxQ0MsIDB4ODFDQywgMHgxOUFCLCAweDgxQ0QsIDB4ODFDRCwgMHgyMEM1LA0KKyAgICAweDgxQ0UsIDB4ODFDRSwgMHg0NTQ1LCAweDgxQ0YsIDB4ODFDRiwgMHgyNENBLCAweDgxRDAsIDB4ODFENywgMHg0NTQ2LA0KKyAgICAweDgxRDgsIDB4ODFEOCwgMHgxRkYwLCAweDgxRDksIDB4ODFEOSwgMHg0NTRFLCAweDgxREEsIDB4ODFEQSwgMHgyNEM2LA0KKyAgICAweDgxREIsIDB4ODFERSwgMHg0NTRGLCAweDgxREYsIDB4ODFERiwgMHgyMjVELCAweDgxRTAsIDB4ODFFMCwgMHgyMkRFLA0KKyAgICAweDgxRTEsIDB4ODFFMiwgMHg0NTUzLCAweDgxRTMsIDB4ODFFMywgMHgwNEUxLCAweDgxRTQsIDB4ODFFNiwgMHg0NTU1LA0KKyAgICAweDgxRTcsIDB4ODFFNywgMHgxOTAyLCAweDgxRTgsIDB4ODFFOCwgMHgyMDJDLCAweDgxRTksIDB4ODFFOSwgMHg0NTU4LA0KKyAgICAweDgxRUEsIDB4ODFFQSwgMHgxMjMxLCAweDgxRUIsIDB4ODFFQiwgMHg0NTU5LCAweDgxRUMsIDB4ODFFQywgMHgxQ0E5LA0KKyAgICAweDgxRUQsIDB4ODFFRCwgMHgwNTE5LCAweDgxRUUsIDB4ODFGMiwgMHg0NTVBLCAweDgxRjMsIDB4ODFGNCwgMHgxMUMwLA0KKyAgICAweDgxRjUsIDB4ODFGOSwgMHg0NTVGLCAweDgxRkEsIDB4ODFGQSwgMHgyMTYxLCAweDgxRkIsIDB4ODFGQiwgMHgxMThBLA0KKyAgICAweDgxRkMsIDB4ODFGQywgMHgwOEY5LCAweDgxRkQsIDB4ODFGRCwgMHg0NTY0LCAweDgxRkUsIDB4ODFGRSwgMHgxQ0E1LA0KKyAgICAweDgxRkYsIDB4ODFGRiwgMHg0NTY1LCAweDgyMDAsIDB4ODIwMCwgMHgxMDJGLCAweDgyMDEsIDB4ODIwMiwgMHgxQ0E2LA0KKyAgICAweDgyMDMsIDB4ODIwMywgMHg0NTY2LCAweDgyMDQsIDB4ODIwNCwgMHgxQ0E4LCAweDgyMDUsIDB4ODIwNSwgMHgwOEZBLA0KKyAgICAweDgyMDYsIDB4ODIwNiwgMHgxMEM0LCAweDgyMDcsIDB4ODIwNywgMHgyMjNCLCAweDgyMDgsIDB4ODIwOCwgMHgyMUQ5LA0KKyAgICAweDgyMDksIDB4ODIwOSwgMHgxRkNCLCAweDgyMEEsIDB4ODIwQSwgMHgxRkM5LCAweDgyMEIsIDB4ODIwQiwgMHg0NTY3LA0KKyAgICAweDgyMEMsIDB4ODIwRCwgMHgwRDE5LCAweDgyMEUsIDB4ODIwRiwgMHg0NTY4LCAweDgyMTAsIDB4ODIxMCwgMHgxQzYyLA0KKyAgICAweDgyMTEsIDB4ODIxMSwgMHg0NTZBLCAweDgyMTIsIDB4ODIxMiwgMHgwRDdELCAweDgyMTMsIDB4ODIxMywgMHg0NTZCLA0KKyAgICAweDgyMTQsIDB4ODIxNCwgMHgwRTQ1LCAweDgyMTUsIDB4ODIxQSwgMHg0NTZDLCAweDgyMUIsIDB4ODIxQiwgMHgxNjE4LA0KKyAgICAweDgyMUMsIDB4ODIxQywgMHgwREE5LCAweDgyMUQsIDB4ODIxRCwgMHg0NTcyLCAweDgyMUUsIDB4ODIxRSwgMHgwRUY3LA0KKyAgICAweDgyMUYsIDB4ODIxRiwgMHgxMURBLCAweDgyMjAsIDB4ODIyMCwgMHg0NTczLCAweDgyMjEsIDB4ODIyMywgMHgxQ0FCLA0KKyAgICAweDgyMjQsIDB4ODIyNywgMHg0NTc0LCAweDgyMjgsIDB4ODIyOCwgMHgxQ0IwLCAweDgyMjksIDB4ODIyOSwgMHg0NTc4LA0KKyAgICAweDgyMkEsIDB4ODIyQSwgMHgwNzc0LCAweDgyMkIsIDB4ODIyQiwgMHgxQ0IxLCAweDgyMkMsIDB4ODIyQywgMHgwM0VFLA0KKyAgICAweDgyMkQsIDB4ODIyRCwgMHgxQ0FFLCAweDgyMkUsIDB4ODIyRSwgMHg0NTc5LCAweDgyMkYsIDB4ODIyRiwgMHgxQ0FGLA0KKyAgICAweDgyMzAsIDB4ODIzMCwgMHgwODczLCAweDgyMzEsIDB4ODIzMSwgMHgwNDlDLCAweDgyMzIsIDB4ODIzMiwgMHg0NTdBLA0KKyAgICAweDgyMzMsIDB4ODIzNCwgMHgxQ0I0LCAweDgyMzUsIDB4ODIzNSwgMHgwNjI1LCAweDgyMzYsIDB4ODIzNiwgMHgwNDc3LA0KKyAgICAweDgyMzcsIDB4ODIzNywgMHgwRjNDLCAweDgyMzgsIDB4ODIzOCwgMHgxQ0IyLCAweDgyMzksIDB4ODIzOSwgMHgwNTJGLA0KKyAgICAweDgyM0EsIDB4ODIzQSwgMHg0NTdCLCAweDgyM0IsIDB4ODIzQiwgMHgxQ0IzLCAweDgyM0MsIDB4ODIzRCwgMHg0NTdDLA0KKyAgICAweDgyM0UsIDB4ODIzRSwgMHgxQ0I2LCAweDgyM0YsIDB4ODI0MywgMHg0NTdFLCAweDgyNDQsIDB4ODI0NCwgMHgxQ0I3LA0KKyAgICAweDgyNDUsIDB4ODI0NiwgMHg0NTgzLCAweDgyNDcsIDB4ODI0NywgMHgwRTU4LCAweDgyNDgsIDB4ODI0OCwgMHg0NTg1LA0KKyAgICAweDgyNDksIDB4ODI0OSwgMHgxQ0I4LCAweDgyNEEsIDB4ODI0QSwgMHg0NTg2LCAweDgyNEIsIDB4ODI0QiwgMHgxQ0I5LA0KKyAgICAweDgyNEMsIDB4ODI0RSwgMHg0NTg3LCAweDgyNEYsIDB4ODI0RiwgMHgxQ0JBLCAweDgyNTAsIDB4ODI1NywgMHg0NThBLA0KKyAgICAweDgyNTgsIDB4ODI1OCwgMHgwREM3LCAweDgyNTksIDB4ODI1OSwgMHgxRTYxLCAweDgyNUEsIDB4ODI1QSwgMHgxQ0JCLA0KKyAgICAweDgyNUIsIDB4ODI1RSwgMHg0NTkyLCAweDgyNUYsIDB4ODI1RiwgMHgxQ0JDLCAweDgyNjAsIDB4ODI2MywgMHg0NTk2LA0KKyAgICAweDgyNjQsIDB4ODI2NCwgMHgyNUVGLCAweDgyNjUsIDB4ODI2NSwgMHg0NTlBLCAweDgyNjYsIDB4ODI2NiwgMHgxRjk4LA0KKyAgICAweDgyNjcsIDB4ODI2NywgMHg0NTlCLCAweDgyNjgsIDB4ODI2OCwgMHgxQ0JELCAweDgyNjksIDB4ODI2QSwgMHg0NTlDLA0KKyAgICAweDgyNkIsIDB4ODI2QiwgMHgyNUYwLCAweDgyNkMsIDB4ODI2RCwgMHg0NTlFLCAweDgyNkUsIDB4ODI2RSwgMHgxQ0RDLA0KKyAgICAweDgyNkYsIDB4ODI2RiwgMHgwQTA1LCAweDgyNzAsIDB4ODI3MCwgMHgwODVCLCAweDgyNzEsIDB4ODI3MSwgMHgxRjg4LA0KKyAgICAweDgyNzIsIDB4ODI3MiwgMHgwQ0U0LCAweDgyNzMsIDB4ODI3MywgMHgxMDA3LCAweDgyNzQsIDB4ODI3NCwgMHgxNzcxLA0KKyAgICAweDgyNzUsIDB4ODI3NiwgMHg0NUEwLCAweDgyNzcsIDB4ODI3NywgMHgyMUY4LCAweDgyNzgsIDB4ODI3OCwgMHg0NUEyLA0KKyAgICAweDgyNzksIDB4ODI3OSwgMHgxM0UxLCAweDgyN0EsIDB4ODI3QSwgMHgxMDVDLCAweDgyN0IsIDB4ODI3QywgMHg0NUEzLA0KKyAgICAweDgyN0QsIDB4ODI3RCwgMHgxM0UyLCAweDgyN0UsIDB4ODI3RSwgMHgwM0I3LCAweDgyN0YsIDB4ODI3RiwgMHgxM0UzLA0KKyAgICAweDgyODAsIDB4ODI4MSwgMHg0NUE1LCAweDgyODIsIDB4ODI4MiwgMHgwOEFCLCAweDgyODMsIDB4ODI4MywgMHg0NUE3LA0KKyAgICAweDgyODQsIDB4ODI4NCwgMHgxM0U3LCAweDgyODUsIDB4ODI4NywgMHg0NUE4LCAweDgyODgsIDB4ODI4OCwgMHgxMjc4LA0KKyAgICAweDgyODksIDB4ODI4OSwgMHg0NUFCLCAweDgyOEEsIDB4ODI4QSwgMHgxM0U1LCAweDgyOEIsIDB4ODI4QiwgMHgxMEQ4LA0KKyAgICAweDgyOEMsIDB4ODI4QywgMHg0NUFDLCAweDgyOEQsIDB4ODI4RCwgMHgwRDBGLCAweDgyOEUsIDB4ODI4RSwgMHgxM0U4LA0KKyAgICAweDgyOEYsIDB4ODI4RiwgMHgxM0U0LCAweDgyOTAsIDB4ODI5MCwgMHg0NUFELCAweDgyOTEsIDB4ODI5MSwgMHgxM0U5LA0KKyAgICAweDgyOTIsIDB4ODI5MiwgMHgwQUE3LCAweDgyOTMsIDB4ODI5NiwgMHg0NUFFLCAweDgyOTcsIDB4ODI5NywgMHgxM0VBLA0KKyAgICAweDgyOTgsIDB4ODI5OCwgMHgxM0YzLCAweDgyOTksIDB4ODI5OSwgMHgxM0VCLCAweDgyOUEsIDB4ODI5QiwgMHg0NUIyLA0KKyAgICAweDgyOUMsIDB4ODI5QywgMHgwRUVFLCAweDgyOUQsIDB4ODI5RCwgMHgxMUE0LCAweDgyOUUsIDB4ODI5RSwgMHg0NUI0LA0KKyAgICAweDgyOUYsIDB4ODI5RiwgMHgxM0ZELCAweDgyQTAsIDB4ODJBMCwgMHg0NUI1LCAweDgyQTEsIDB4ODJBMSwgMHgxM0ZCLA0KKyAgICAweDgyQTIsIDB4ODJBMywgMHg0NUI2LCAweDgyQTQsIDB4ODJBNCwgMHgxNDAwLCAweDgyQTUsIDB4ODJBNSwgMHgwOEI3LA0KKyAgICAweDgyQTYsIDB4ODJBNiwgMHgwQTUyLCAweDgyQTcsIDB4ODJBNywgMHg0NUI4LCAweDgyQTgsIDB4ODJBOCwgMHgxM0U2LA0KKyAgICAweDgyQTksIDB4ODJBOSwgMHgxM0Y5LCAweDgyQUEsIDB4ODJBQSwgMHgxM0ZDLCAweDgyQUIsIDB4ODJBQiwgMHgxM0VDLA0KKyAgICAweDgyQUMsIDB4ODJBQywgMHgwNjZGLCAweDgyQUQsIDB4ODJBRCwgMHgwM0QwLCAweDgyQUUsIDB4ODJBRSwgMHgxM0Y1LA0KKyAgICAweDgyQUYsIDB4ODJBRiwgMHgwRjg5LCAweDgyQjAsIDB4ODJCMCwgMHgxM0VGLCAweDgyQjEsIDB4ODJCMSwgMHgwN0JELA0KKyAgICAweDgyQjIsIDB4ODJCMiwgMHg0NUI5LCAweDgyQjMsIDB4ODJCMywgMHgwNjU5LCAweDgyQjQsIDB4ODJCNCwgMHgxM0ZBLA0KKyAgICAweDgyQjUsIDB4ODJCNiwgMHg0NUJBLCAweDgyQjcsIDB4ODJCNywgMHgxM0Y0LCAweDgyQjgsIDB4ODJCOCwgMHgxM0VELA0KKyAgICAweDgyQjksIDB4ODJCOSwgMHgwQzU4LCAweDgyQkEsIDB4ODJCQSwgMHg0NUJDLCAweDgyQkIsIDB4ODJCQiwgMHgyMzIyLA0KKyAgICAweDgyQkMsIDB4ODJCQywgMHg0NUJELCAweDgyQkQsIDB4ODJCRCwgMHgwRkU4LCAweDgyQkUsIDB4ODJCRSwgMHgxM0VFLA0KKyAgICAweDgyQkYsIDB4ODJDMCwgMHg0NUJFLCAweDgyQzEsIDB4ODJDMSwgMHgxM0Y4LCAweDgyQzIsIDB4ODJDMywgMHg0NUMwLA0KKyAgICAweDgyQzQsIDB4ODJDNCwgMHgxM0ZFLCAweDgyQzUsIDB4ODJDNiwgMHg0NUMyLCAweDgyQzcsIDB4ODJDNywgMHgwRUJDLA0KKyAgICAweDgyQzgsIDB4ODJDOCwgMHgxM0YwLCAweDgyQzksIDB4ODJDOSwgMHg0NUM0LCAweDgyQ0EsIDB4ODJDQSwgMHgxM0YxLA0KKyAgICAweDgyQ0IsIDB4ODJDQywgMHgxM0Y2LCAweDgyQ0QsIDB4ODJDRCwgMHgwNDlCLCAweDgyQ0UsIDB4ODJDRSwgMHgxM0ZGLA0KKyAgICAweDgyQ0YsIDB4ODJDRiwgMHgwRENBLCAweDgyRDAsIDB4ODJEMCwgMHg0NUM1LCAweDgyRDEsIDB4ODJEMSwgMHgxMEZBLA0KKyAgICAweDgyRDIsIDB4ODJEMiwgMHgxNDA5LCAweDgyRDMsIDB4ODJEMywgMHgxNDBELCAweDgyRDQsIDB4ODJENCwgMHgwREY5LA0KKyAgICAweDgyRDUsIDB4ODJENSwgMHgxNDE0LCAweDgyRDYsIDB4ODJENiwgMHg0NUM2LCAweDgyRDcsIDB4ODJENywgMHgwQUVDLA0KKyAgICAweDgyRDgsIDB4ODJEOCwgMHgxNDBBLCAweDgyRDksIDB4ODJEQSwgMHg0NUM3LCAweDgyREIsIDB4ODJEQiwgMHgwOTRFLA0KKyAgICAweDgyREMsIDB4ODJEQywgMHgxNDA3LCAweDgyREQsIDB4ODJERCwgMHg0NUM5LCAweDgyREUsIDB4ODJERSwgMHgwNDA1LA0KKyAgICAweDgyREYsIDB4ODJERiwgMHgwNzBGLCAweDgyRTAsIDB4ODJFMCwgMHgxNDEzLCAweDgyRTEsIDB4ODJFMSwgMHgxNDAxLA0KKyAgICAweDgyRTIsIDB4ODJFMiwgMHg0NUNBLCAweDgyRTMsIDB4ODJFMywgMHgxM0YyLCAweDgyRTQsIDB4ODJFNCwgMHgxNDA0LA0KKyAgICAweDgyRTUsIDB4ODJFNSwgMHgwQ0NGLCAweDgyRTYsIDB4ODJFNiwgMHgwOTZELCAweDgyRTcsIDB4ODJFNywgMHgyMzM2LA0KKyAgICAweDgyRTgsIDB4ODJFQSwgMHg0NUNCLCAweDgyRUIsIDB4ODJFQiwgMHgwQ0Y0LCAweDgyRUMsIDB4ODJFRSwgMHg0NUNFLA0KKyAgICAweDgyRUYsIDB4ODJFRiwgMHgwNDI2LCAweDgyRjAsIDB4ODJGMCwgMHg0NUQxLCAweDgyRjEsIDB4ODJGMSwgMHgxMDg3LA0KKyAgICAweDgyRjIsIDB4ODJGMywgMHg0NUQyLCAweDgyRjQsIDB4ODJGNCwgMHgxNDA4LCAweDgyRjUsIDB4ODJGNiwgMHg0NUQ0LA0KKyAgICAweDgyRjcsIDB4ODJGNywgMHgxNDAzLCAweDgyRjgsIDB4ODJGOCwgMHg0NUQ2LCAweDgyRjksIDB4ODJGOSwgMHgwQkRBLA0KKyAgICAweDgyRkEsIDB4ODJGQSwgMHg0NUQ3LCAweDgyRkIsIDB4ODJGQiwgMHgxNDBDLCAweDgyRkMsIDB4ODJGRiwgMHg0NUQ4LA0KKyAgICAweDgzMDAsIDB4ODMwMCwgMHg0NURDLCAweDgzMDEsIDB4ODMwMSwgMHgxMjFGLCAweDgzMDIsIDB4ODMwMiwgMHgwQUI0LA0KKyAgICAweDgzMDMsIDB4ODMwMywgMHgwNjUzLCAweDgzMDQsIDB4ODMwNCwgMHgwQzRFLCAweDgzMDUsIDB4ODMwNSwgMHgwQUFFLA0KKyAgICAweDgzMDYsIDB4ODMwNiwgMHgxNDEwLCAweDgzMDcsIDB4ODMwNywgMHgxNDA2LCAweDgzMDgsIDB4ODMwOCwgMHgxNDE5LA0KKyAgICAweDgzMDksIDB4ODMwOSwgMHgxNDAyLCAweDgzMEEsIDB4ODMwQiwgMHg0NURELCAweDgzMEMsIDB4ODMwQywgMHgxNDBCLA0KKyAgICAweDgzMEQsIDB4ODMwRCwgMHg0NURGLCAweDgzMEUsIDB4ODMwRSwgMHgwOEQ0LCAweDgzMEYsIDB4ODMwRiwgMHgxNDA1LA0KKyAgICAweDgzMTAsIDB4ODMxMCwgMHg0NUUwLCAweDgzMTEsIDB4ODMxMSwgMHgxNDBFLCAweDgzMTIsIDB4ODMxMywgMHg0NUUxLA0KKyAgICAweDgzMTQsIDB4ODMxNSwgMHgxNDExLCAweDgzMTYsIDB4ODMxNiwgMHg0NUUzLCAweDgzMTcsIDB4ODMxNywgMHgxNDI2LA0KKyAgICAweDgzMTgsIDB4ODMxOSwgMHg0NUU0LCAweDgzMUEsIDB4ODMxQSwgMHgxNDBGLCAweDgzMUIsIDB4ODMxQiwgMHgxNDJFLA0KKyAgICAweDgzMUMsIDB4ODMxQywgMHgxNDE1LCAweDgzMUQsIDB4ODMyNiwgMHg0NUU2LCAweDgzMjcsIDB4ODMyNywgMHgwODVFLA0KKyAgICAweDgzMjgsIDB4ODMyOCwgMHgwNTQ3LCAweDgzMjksIDB4ODMyQSwgMHg0NUYwLCAweDgzMkIsIDB4ODMyQiwgMHgwQUE4LA0KKyAgICAweDgzMkMsIDB4ODMyQywgMHgwNEFFLCAweDgzMkQsIDB4ODMyRCwgMHgxNDI4LCAweDgzMkUsIDB4ODMyRSwgMHg0NUYyLA0KKyAgICAweDgzMkYsIDB4ODMyRiwgMHgxNDIwLCAweDgzMzAsIDB4ODMzMCwgMHg0NUYzLCAweDgzMzEsIDB4ODMzMSwgMHgxNDFELA0KKyAgICAweDgzMzIsIDB4ODMzMiwgMHg0NUY0LCAweDgzMzMsIDB4ODMzMywgMHgxNDJBLCAweDgzMzQsIDB4ODMzNCwgMHgxNDFDLA0KKyAgICAweDgzMzUsIDB4ODMzNSwgMHgxMDc3LCAweDgzMzYsIDB4ODMzNiwgMHgwNEFGLCAweDgzMzcsIDB4ODMzNywgMHg0NUY1LA0KKyAgICAweDgzMzgsIDB4ODMzOCwgMHgwQ0IyLCAweDgzMzksIDB4ODMzOSwgMHgwQ0JFLCAweDgzM0EsIDB4ODMzQSwgMHgxNDI5LA0KKyAgICAweDgzM0IsIDB4ODMzQiwgMHg0NUY2LCAweDgzM0MsIDB4ODMzQywgMHgxNDFCLCAweDgzM0QsIDB4ODMzRiwgMHg0NUY3LA0KKyAgICAweDgzNDAsIDB4ODM0MCwgMHgxNDI1LCAweDgzNDEsIDB4ODM0MiwgMHg0NUZBLCAweDgzNDMsIDB4ODM0MywgMHgxNDIzLA0KKyAgICAweDgzNDQsIDB4ODM0NSwgMHg0NUZDLCAweDgzNDYsIDB4ODM0NiwgMHgwOEQyLCAweDgzNDcsIDB4ODM0NywgMHgxNDIyLA0KKyAgICAweDgzNDgsIDB4ODM0OCwgMHg0NUZFLCAweDgzNDksIDB4ODM0OSwgMHgwNEE0LCAweDgzNEEsIDB4ODM0RSwgMHg0NUZGLA0KKyAgICAweDgzNEYsIDB4ODM0RiwgMHgxNDIxLCAweDgzNTAsIDB4ODM1MCwgMHgwODY5LCAweDgzNTEsIDB4ODM1MSwgMHgxNDE2LA0KKyAgICAweDgzNTIsIDB4ODM1MiwgMHgwN0Q5LCAweDgzNTMsIDB4ODM1MywgMHg0NjA0LCAweDgzNTQsIDB4ODM1NCwgMHgwOURFLA0KKyAgICAweDgzNTUsIDB4ODM1OSwgMHg0NjA1LCAweDgzNUEsIDB4ODM1QSwgMHgwODQ3LCAweDgzNUIsIDB4ODM1QywgMHgxNDE3LA0KKyAgICAweDgzNUQsIDB4ODM1RCwgMHg0NjBBLCAweDgzNUUsIDB4ODM1RSwgMHgxNDFGLCAweDgzNUYsIDB4ODM1RiwgMHgxNDI0LA0KKyAgICAweDgzNjAsIDB4ODM2MCwgMHgxNDI3LCAweDgzNjEsIDB4ODM2MSwgMHgwNTk1LCAweDgzNjIsIDB4ODM2MiwgMHg0NjBCLA0KKyAgICAweDgzNjMsIDB4ODM2MywgMHgwQ0I0LCAweDgzNjQsIDB4ODM2NCwgMHgwN0ZDLCAweDgzNjUsIDB4ODM2NSwgMHgxNDJDLA0KKyAgICAweDgzNjYsIDB4ODM2NiwgMHgxNDJCLCAweDgzNjcsIDB4ODM2NywgMHgxMDkwLCAweDgzNjgsIDB4ODM2OCwgMHgxNDJELA0KKyAgICAweDgzNjksIDB4ODM2OSwgMHgxNDJGLCAweDgzNkEsIDB4ODM2QSwgMHgxNDMxLCAweDgzNkIsIDB4ODM2QiwgMHgxMDc4LA0KKyAgICAweDgzNkMsIDB4ODM2QywgMHgxNDMwLCAweDgzNkQsIDB4ODM2RSwgMHgxNDMyLCAweDgzNkYsIDB4ODM2RiwgMHgxMDMwLA0KKyAgICAweDgzNzAsIDB4ODM3NiwgMHg0NjBDLCAweDgzNzcsIDB4ODM3NywgMHgwNzgwLCAweDgzNzgsIDB4ODM3OCwgMHgxNDM1LA0KKyAgICAweDgzNzksIDB4ODM3QSwgMHg0NjEzLCAweDgzN0IsIDB4ODM3QiwgMHgxNDQyLCAweDgzN0MsIDB4ODM3QywgMHgxNDNELA0KKyAgICAweDgzN0QsIDB4ODM3RCwgMHgxNDQwLCAweDgzN0UsIDB4ODM4NCwgMHg0NjE1LCAweDgzODUsIDB4ODM4NSwgMHgxNDNDLA0KKyAgICAweDgzODYsIDB4ODM4NiwgMHgwQkVELCAweDgzODcsIDB4ODM4OCwgMHg0NjFDLCAweDgzODksIDB4ODM4OSwgMHgwOURELA0KKyAgICAweDgzOEEsIDB4ODM4QSwgMHgyMkFCLCAweDgzOEIsIDB4ODM4RCwgMHg0NjFFLCAweDgzOEUsIDB4ODM4RSwgMHgwQ0U4LA0KKyAgICAweDgzOEYsIDB4ODM5MSwgMHg0NjIxLCAweDgzOTIsIDB4ODM5MiwgMHgxNDFBLCAweDgzOTMsIDB4ODM5MywgMHgxNDNBLA0KKyAgICAweDgzOTQsIDB4ODM5NSwgMHg0NjI0LCAweDgzOTYsIDB4ODM5NiwgMHgxRkJGLCAweDgzOTcsIDB4ODM5NywgMHg0NjI2LA0KKyAgICAweDgzOTgsIDB4ODM5OCwgMHgxNDQzLCAweDgzOTksIDB4ODM5QSwgMHg0NjI3LCAweDgzOUIsIDB4ODM5QiwgMHgxNDFFLA0KKyAgICAweDgzOUMsIDB4ODM5QywgMHgxNDNCLCAweDgzOUQsIDB4ODM5RCwgMHg0NjI5LCAweDgzOUUsIDB4ODM5RSwgMHgxNDQ0LA0KKyAgICAweDgzOUYsIDB4ODM5RiwgMHg0NjJBLCAweDgzQTAsIDB4ODNBMCwgMHgxNDM4LCAweDgzQTEsIDB4ODNBMSwgMHg0NjJCLA0KKyAgICAweDgzQTIsIDB4ODNBMiwgMHgxRjdELCAweDgzQTMsIDB4ODNBNiwgMHg0NjJDLCAweDgzQTcsIDB4ODNBNywgMHgyMzMzLA0KKyAgICAweDgzQTgsIDB4ODNBOCwgMHgxNDQ1LCAweDgzQTksIDB4ODNBOSwgMHgxNDNGLCAweDgzQUEsIDB4ODNBQSwgMHgxNDM5LA0KKyAgICAweDgzQUIsIDB4ODNBQiwgMHgwQjBELCAweDgzQUMsIDB4ODNBRiwgMHg0NjMwLCAweDgzQjAsIDB4ODNCMCwgMHgxNDM0LA0KKyAgICAweDgzQjEsIDB4ODNCMSwgMHgwOTlFLCAweDgzQjIsIDB4ODNCMiwgMHgwOUY0LCAweDgzQjMsIDB4ODNCNCwgMHgxNDM2LA0KKyAgICAweDgzQjUsIDB4ODNCNSwgMHg0NjM0LCAweDgzQjYsIDB4ODNCNiwgMHgxNDNFLCAweDgzQjcsIDB4ODNCNywgMHgwODA2LA0KKyAgICAweDgzQjgsIDB4ODNCOCwgMHgxNDQxLCAweDgzQjksIDB4ODNCOSwgMHgxMDhELCAweDgzQkEsIDB4ODNCQSwgMHgxNDQ2LA0KKyAgICAweDgzQkIsIDB4ODNCQiwgMHg0NjM1LCAweDgzQkMsIDB4ODNCQywgMHgxNDQ3LCAweDgzQkQsIDB4ODNCRCwgMHgwQUFDLA0KKyAgICAweDgzQkUsIDB4ODNCRiwgMHg0NjM2LCAweDgzQzAsIDB4ODNDMCwgMHgxNDVFLCAweDgzQzEsIDB4ODNDMSwgMHgxNDQ4LA0KKyAgICAweDgzQzIsIDB4ODNDNCwgMHg0NjM4LCAweDgzQzUsIDB4ODNDNSwgMHgxNDVELCAweDgzQzYsIDB4ODNDNiwgMHg0NjNCLA0KKyAgICAweDgzQzcsIDB4ODNDNywgMHgwNzE2LCAweDgzQzgsIDB4ODNDOSwgMHg0NjNDLCAweDgzQ0EsIDB4ODNDQSwgMHgwOTA0LA0KKyAgICAweDgzQ0IsIDB4ODNDQiwgMHg0NjNFLCAweDgzQ0MsIDB4ODNDQywgMHgwOTI5LCAweDgzQ0QsIDB4ODNDRSwgMHg0NjNGLA0KKyAgICAweDgzQ0YsIDB4ODNDRiwgMHgwNzgxLCAweDgzRDAsIDB4ODNEMywgMHg0NjQxLCAweDgzRDQsIDB4ODNENCwgMHgxNDU2LA0KKyAgICAweDgzRDUsIDB4ODNENSwgMHg0NjQ1LCAweDgzRDYsIDB4ODNENiwgMHgxNDUxLCAweDgzRDcsIDB4ODNENywgMHg0NjQ2LA0KKyAgICAweDgzRDgsIDB4ODNEOCwgMHgxNDRCLCAweDgzRDksIDB4ODNEQiwgMHg0NjQ3LCAweDgzREMsIDB4ODNEQywgMHgwNDkyLA0KKyAgICAweDgzREQsIDB4ODNERCwgMHgxNDRGLCAweDgzREUsIDB4ODNERSwgMHg0NjRBLCAweDgzREYsIDB4ODNERiwgMHgxNDU3LA0KKyAgICAweDgzRTAsIDB4ODNFMCwgMHgwNDZCLCAweDgzRTEsIDB4ODNFMSwgMHgxNDYxLCAweDgzRTIsIDB4ODNFNCwgMHg0NjRCLA0KKyAgICAweDgzRTUsIDB4ODNFNSwgMHgxNDRBLCAweDgzRTYsIDB4ODNFOCwgMHg0NjRFLCAweDgzRTksIDB4ODNFOSwgMHgwQkVGLA0KKyAgICAweDgzRUEsIDB4ODNFQSwgMHgxNDVDLCAweDgzRUIsIDB4ODNFRSwgMHg0NjUxLCAweDgzRUYsIDB4ODNFRiwgMHgxRjRELA0KKyAgICAweDgzRjAsIDB4ODNGMCwgMHgxNDYwLCAweDgzRjEsIDB4ODNGMSwgMHgwQTJCLCAweDgzRjIsIDB4ODNGMiwgMHgwNjYzLA0KKyAgICAweDgzRjMsIDB4ODNGNywgMHg0NjU1LCAweDgzRjgsIDB4ODNGOSwgMHgxNDVBLCAweDgzRkEsIDB4ODNGQywgMHg0NjVBLA0KKyAgICAweDgzRkQsIDB4ODNGRCwgMHgxNDUwLCAweDgzRkUsIDB4ODNGRiwgMHg0NjVELCAweDg0MDAsIDB4ODQwMCwgMHg0NjVGLA0KKyAgICAweDg0MDEsIDB4ODQwMSwgMHgxNDQ5LCAweDg0MDIsIDB4ODQwMiwgMHg0NjYwLCAweDg0MDMsIDB4ODQwMywgMHgxNDU5LA0KKyAgICAweDg0MDQsIDB4ODQwNCwgMHgwRTI0LCAweDg0MDUsIDB4ODQwNSwgMHg0NjYxLCAweDg0MDYsIDB4ODQwNiwgMHgxNDU1LA0KKyAgICAweDg0MDcsIDB4ODQwNywgMHgyMzM0LCAweDg0MDgsIDB4ODQwOSwgMHg0NjYyLCAweDg0MEEsIDB4ODQwQSwgMHgxRkYxLA0KKyAgICAweDg0MEIsIDB4ODQwQiwgMHgxNDRFLCAweDg0MEMsIDB4ODQwQywgMHgwQUNELCAweDg0MEQsIDB4ODQwRCwgMHgwQkRCLA0KKyAgICAweDg0MEUsIDB4ODQwRSwgMHgwRUJELCAweDg0MEYsIDB4ODQwRiwgMHgxNDU4LCAweDg0MTAsIDB4ODQxMCwgMHg0NjY0LA0KKyAgICAweDg0MTEsIDB4ODQxMSwgMHgxNDU0LCAweDg0MTIsIDB4ODQxNywgMHg0NjY1LCAweDg0MTgsIDB4ODQxOCwgMHgxNDRELA0KKyAgICAweDg0MTksIDB4ODQxQiwgMHg0NjZCLCAweDg0MUMsIDB4ODQxQywgMHgxNDUyLCAweDg0MUQsIDB4ODQxRCwgMHgwQTgzLA0KKyAgICAweDg0MUUsIDB4ODQyMywgMHg0NjZFLCAweDg0MjQsIDB4ODQyNSwgMHgxMDhFLCAweDg0MjYsIDB4ODQyNiwgMHgxNDVGLA0KKyAgICAweDg0MjcsIDB4ODQyNywgMHgwRjYxLCAweDg0MjgsIDB4ODQyOCwgMHgwQ0QzLCAweDg0MjksIDB4ODQyQiwgMHg0Njc0LA0KKyAgICAweDg0MkMsIDB4ODQyQywgMHgyMThCLCAweDg0MkQsIDB4ODQzMCwgMHg0Njc3LCAweDg0MzEsIDB4ODQzMSwgMHgxNDcyLA0KKyAgICAweDg0MzIsIDB4ODQzNCwgMHg0NjdCLCAweDg0MzUsIDB4ODQzNSwgMHgyMzQ5LCAweDg0MzYsIDB4ODQzNywgMHg0NjdFLA0KKyAgICAweDg0MzgsIDB4ODQzOCwgMHgxNDUzLCAweDg0MzksIDB4ODQzQiwgMHg0NjgwLCAweDg0M0MsIDB4ODQzQywgMHgxNDZDLA0KKyAgICAweDg0M0QsIDB4ODQzRCwgMHgwQThCLCAweDg0M0UsIDB4ODQ0NSwgMHg0NjgzLCAweDg0NDYsIDB4ODQ0NiwgMHgxNDZELA0KKyAgICAweDg0NDcsIDB4ODQ0OCwgMHg0NjhCLCAweDg0NDksIDB4ODQ0OSwgMHgyMjBCLCAweDg0NEEsIDB4ODQ1MCwgMHg0NjhELA0KKyAgICAweDg0NTEsIDB4ODQ1MSwgMHgxNDYzLCAweDg0NTIsIDB4ODQ1MiwgMHgyMzQ2LCAweDg0NTMsIDB4ODQ1NiwgMHg0Njk0LA0KKyAgICAweDg0NTcsIDB4ODQ1NywgMHgxMUY3LCAweDg0NTgsIDB4ODQ1OCwgMHg0Njk4LCAweDg0NTksIDB4ODQ1OSwgMHgxNDY1LA0KKyAgICAweDg0NUEsIDB4ODQ1QSwgMHgxNDY0LCAweDg0NUIsIDB4ODQ1QiwgMHgwNkVCLCAweDg0NUMsIDB4ODQ1QywgMHgxNDYyLA0KKyAgICAweDg0NUQsIDB4ODQ2MCwgMHg0Njk5LCAweDg0NjEsIDB4ODQ2MSwgMHgwQkVFLCAweDg0NjIsIDB4ODQ2MiwgMHg0NjlELA0KKyAgICAweDg0NjMsIDB4ODQ2MywgMHgwNUVDLCAweDg0NjQsIDB4ODQ2NCwgMHgyMzQ3LCAweDg0NjUsIDB4ODQ2NSwgMHg0NjlFLA0KKyAgICAweDg0NjYsIDB4ODQ2NiwgMHgyMTkzLCAweDg0NjcsIDB4ODQ2OCwgMHg0NjlGLCAweDg0NjksIDB4ODQ2OSwgMHgxNDZFLA0KKyAgICAweDg0NkEsIDB4ODQ2QSwgMHg0NkExLCAweDg0NkIsIDB4ODQ2QiwgMHgwN0IwLCAweDg0NkMsIDB4ODQ2QywgMHgxMTI0LA0KKyAgICAweDg0NkQsIDB4ODQ2RCwgMHgxNDczLCAweDg0NkUsIDB4ODQ2RSwgMHg0NkEyLCAweDg0NkYsIDB4ODQ2RiwgMHgyNkExLA0KKyAgICAweDg0NzAsIDB4ODQ3MCwgMHg0NkEzLCAweDg0NzEsIDB4ODQ3MSwgMHgwNTUzLCAweDg0NzIsIDB4ODQ3MiwgMHg0NkE0LA0KKyAgICAweDg0NzMsIDB4ODQ3MywgMHgxNDY2LCAweDg0NzQsIDB4ODQ3NCwgMHg0NkE1LCAweDg0NzUsIDB4ODQ3NSwgMHgwOTg4LA0KKyAgICAweDg0NzYsIDB4ODQ3NiwgMHgxNDZGLCAweDg0NzcsIDB4ODQ3NywgMHgxRjYyLCAweDg0NzgsIDB4ODQ3OCwgMHgxNDZCLA0KKyAgICAweDg0NzksIDB4ODQ3OSwgMHg0NkE2LCAweDg0N0EsIDB4ODQ3QSwgMHgxNDY5LCAweDg0N0IsIDB4ODQ4MSwgMHg0NkE3LA0KKyAgICAweDg0ODIsIDB4ODQ4MiwgMHgwNUJBLCAweDg0ODMsIDB4ODQ4NiwgMHg0NkFFLCAweDg0ODcsIDB4ODQ4OCwgMHgxNDY3LA0KKyAgICAweDg0ODksIDB4ODQ4OSwgMHgxNDZBLCAweDg0OEEsIDB4ODQ4QSwgMHg0NkIyLCAweDg0OEIsIDB4ODQ4QiwgMHgwODgwLA0KKyAgICAweDg0OEMsIDB4ODQ4QywgMHgxNDcwLCAweDg0OEQsIDB4ODQ4RCwgMHg0NkIzLCAweDg0OEUsIDB4ODQ4RSwgMHgxNDcxLA0KKyAgICAweDg0OEYsIDB4ODQ5MiwgMHg0NkI0LCAweDg0OTMsIDB4ODQ5MywgMHgyMzRELCAweDg0OTQsIDB4ODQ5NCwgMHgyMzQ4LA0KKyAgICAweDg0OTUsIDB4ODQ5NiwgMHg0NkI4LCAweDg0OTcsIDB4ODQ5NywgMHgxNDgxLCAweDg0OTgsIDB4ODQ5OCwgMHg0NkJBLA0KKyAgICAweDg0OTksIDB4ODQ5OSwgMHgwQUNFLCAweDg0OUEsIDB4ODQ5QiwgMHg0NkJCLCAweDg0OUMsIDB4ODQ5QywgMHgwREQ3LA0KKyAgICAweDg0OUQsIDB4ODRBMCwgMHg0NkJELCAweDg0QTEsIDB4ODRBMSwgMHgxNDdFLCAweDg0QTIsIDB4ODRBRSwgMHg0NkMxLA0KKyAgICAweDg0QUYsIDB4ODRBRiwgMHgxMjk3LCAweDg0QjAsIDB4ODRCMSwgMHg0NkNFLCAweDg0QjIsIDB4ODRCMiwgMHgwQkYwLA0KKyAgICAweDg0QjMsIDB4ODRCMywgMHg0NkQwLCAweDg0QjQsIDB4ODRCNCwgMHgxNDgwLCAweDg0QjUsIDB4ODRCNywgMHg0NkQxLA0KKyAgICAweDg0QjgsIDB4ODRCOCwgMHgxMTk1LCAweDg0QjksIDB4ODRCOSwgMHgxNDdGLCAweDg0QkEsIDB4ODRCQSwgMHgxNDdDLA0KKyAgICAweDg0QkIsIDB4ODRCQiwgMHg0NkQ0LCAweDg0QkMsIDB4ODRCQywgMHgxRTYwLCAweDg0QkQsIDB4ODRCRCwgMHgxNDc4LA0KKyAgICAweDg0QkUsIDB4ODRCRSwgMHg0NkQ1LCAweDg0QkYsIDB4ODRCRiwgMHgxNDdCLCAweDg0QzAsIDB4ODRDMCwgMHgyMzQ1LA0KKyAgICAweDg0QzEsIDB4ODRDMSwgMHgxNDc0LCAweDg0QzIsIDB4ODRDMywgMHg0NkQ2LCAweDg0QzQsIDB4ODRDNCwgMHgwRkI5LA0KKyAgICAweDg0QzUsIDB4ODRDOCwgMHg0NkQ4LCAweDg0QzksIDB4ODRDOSwgMHgwQ0IzLCAweDg0Q0EsIDB4ODRDQSwgMHgxNDdBLA0KKyAgICAweDg0Q0IsIDB4ODRDQiwgMHgxRjEyLCAweDg0Q0MsIDB4ODRDQywgMHg0NkRDLCAweDg0Q0QsIDB4ODRDRCwgMHgxNDc1LA0KKyAgICAweDg0Q0UsIDB4ODRDRiwgMHg0NkRELCAweDg0RDAsIDB4ODREMCwgMHgxNDc2LCAweDg0RDEsIDB4ODREMSwgMHgwREU3LA0KKyAgICAweDg0RDIsIDB4ODREMiwgMHg0NkRGLCAweDg0RDMsIDB4ODREMywgMHgxNDc5LCAweDg0RDQsIDB4ODRENSwgMHg0NkUwLA0KKyAgICAweDg0RDYsIDB4ODRENiwgMHgwNDM2LCAweDg0RDcsIDB4ODREQywgMHg0NkUyLCAweDg0REQsIDB4ODRERCwgMHgwOUExLA0KKyAgICAweDg0REUsIDB4ODRERSwgMHg0NkU4LCAweDg0REYsIDB4ODRERiwgMHgwODJFLCAweDg0RTAsIDB4ODRFMCwgMHgxNDdELA0KKyAgICAweDg0RTEsIDB4ODRFMiwgMHg0NkU5LCAweDg0RTMsIDB4ODRFMywgMHgxNDgzLCAweDg0RTQsIDB4ODRFNCwgMHg0NkVCLA0KKyAgICAweDg0RTUsIDB4ODRFNSwgMHgxNDgyLCAweDg0RTYsIDB4ODRFNiwgMHgxNDc3LCAweDg0RTcsIDB4ODRFQiwgMHg0NkVDLA0KKyAgICAweDg0RUMsIDB4ODRFQywgMHgwQkFGLCAweDg0RUQsIDB4ODRFRCwgMHg0NkYxLCAweDg0RUUsIDB4ODRFRSwgMHgyMDE4LA0KKyAgICAweDg0RUYsIDB4ODRFRiwgMHgyMzM1LCAweDg0RjAsIDB4ODRGMCwgMHgxNDg3LCAweDg0RjEsIDB4ODRGQiwgMHg0NkYyLA0KKyAgICAweDg0RkMsIDB4ODRGQywgMHgxNDhFLCAweDg0RkQsIDB4ODRGRCwgMHgyMzNDLCAweDg0RkUsIDB4ODRGRSwgMHg0NkZELA0KKyAgICAweDg0RkYsIDB4ODRGRiwgMHgxNDhELCAweDg1MDAsIDB4ODUwQiwgMHg0NkZFLCAweDg1MEMsIDB4ODUwQywgMHgxNDg0LA0KKyAgICAweDg1MEQsIDB4ODUxMCwgMHg0NzBBLCAweDg1MTEsIDB4ODUxMSwgMHgwQUY0LCAweDg1MTIsIDB4ODUxMiwgMHg0NzBFLA0KKyAgICAweDg1MTMsIDB4ODUxMywgMHgwQUEyLCAweDg1MTQsIDB4ODUxNCwgMHgyNjZGLCAweDg1MTUsIDB4ODUxNiwgMHg0NzBGLA0KKyAgICAweDg1MTcsIDB4ODUxNywgMHgxMTgyLCAweDg1MTgsIDB4ODUxOSwgMHg0NzExLCAweDg1MUEsIDB4ODUxQSwgMHgwRUM0LA0KKyAgICAweDg1MUIsIDB4ODUxRCwgMHg0NzEzLCAweDg1MUUsIDB4ODUxRSwgMHgyMzUxLCAweDg1MUYsIDB4ODUxRiwgMHgxNDg5LA0KKyAgICAweDg1MjAsIDB4ODUyMCwgMHg0NzE2LCAweDg1MjEsIDB4ODUyMSwgMHgwNDkzLCAweDg1MjIsIDB4ODUyMiwgMHg0NzE3LA0KKyAgICAweDg1MjMsIDB4ODUyMywgMHgxRkEwLCAweDg1MjQsIDB4ODUyNSwgMHg0NzE4LCAweDg1MjYsIDB4ODUyNiwgMHgyMzM4LA0KKyAgICAweDg1MjcsIDB4ODUyQSwgMHg0NzFBLCAweDg1MkIsIDB4ODUyQiwgMHgwQjRCLCAweDg1MkMsIDB4ODUyQywgMHgwRDc2LA0KKyAgICAweDg1MkQsIDB4ODUyRCwgMHgyMjFCLCAweDg1MkUsIDB4ODUzNiwgMHg0NzFFLCAweDg1MzcsIDB4ODUzNywgMHgwQzNCLA0KKyAgICAweDg1MzgsIDB4ODUzOCwgMHgxNDg2LCAweDg1MzksIDB4ODUzOSwgMHgxNDg4LCAweDg1M0EsIDB4ODUzQSwgMHgxNDhBLA0KKyAgICAweDg1M0IsIDB4ODUzQiwgMHgxNDhDLCAweDg1M0MsIDB4ODUzQywgMHgwM0I1LCAweDg1M0QsIDB4ODUzRCwgMHgwNDM3LA0KKyAgICAweDg1M0UsIDB4ODU0MCwgMHg0NzI3LCAweDg1NDEsIDB4ODU0MSwgMHgyMzQyLCAweDg1NDIsIDB4ODU0MiwgMHg0NzJBLA0KKyAgICAweDg1NDMsIDB4ODU0MywgMHgxNDk2LCAweDg1NDQsIDB4ODU0NSwgMHg0NzJCLCAweDg1NDYsIDB4ODU0NiwgMHgyMzRGLA0KKyAgICAweDg1NDcsIDB4ODU0NywgMHg0NzJELCAweDg1NDgsIDB4ODU0OCwgMHgxNDkwLCAweDg1NDksIDB4ODU0OSwgMHgwODg3LA0KKyAgICAweDg1NEEsIDB4ODU0QSwgMHgwQ0NBLCAweDg1NEIsIDB4ODU0RCwgMHg0NzJFLCAweDg1NEUsIDB4ODU0RSwgMHgyMzNELA0KKyAgICAweDg1NEYsIDB4ODU1MSwgMHg0NzMxLCAweDg1NTIsIDB4ODU1MiwgMHgyMzQ0LCAweDg1NTMsIDB4ODU1MywgMHgyMzMxLA0KKyAgICAweDg1NTQsIDB4ODU1NCwgMHg0NzM0LCAweDg1NTUsIDB4ODU1NSwgMHgyMzRCLCAweDg1NTYsIDB4ODU1NiwgMHgxNDhCLA0KKyAgICAweDg1NTcsIDB4ODU1NywgMHg0NzM1LCAweDg1NTgsIDB4ODU1OCwgMHgyMzNCLCAweDg1NTksIDB4ODU1OSwgMHgxNDhGLA0KKyAgICAweDg1NUEsIDB4ODU1RCwgMHg0NzM2LCAweDg1NUUsIDB4ODU1RSwgMHgxNDkzLCAweDg1NUYsIDB4ODU2MSwgMHg0NzNBLA0KKyAgICAweDg1NjIsIDB4ODU2MiwgMHgyMzUwLCAweDg1NjMsIDB4ODU2MywgMHg0NzNELCAweDg1NjQsIDB4ODU2NCwgMHgxNDkyLA0KKyAgICAweDg1NjUsIDB4ODU2NywgMHg0NzNFLCAweDg1NjgsIDB4ODU2OCwgMHgxNDkxLCAweDg1NjksIDB4ODU2OSwgMHgxRUI0LA0KKyAgICAweDg1NkEsIDB4ODU2QSwgMHgyMUE2LCAweDg1NkIsIDB4ODU2QywgMHg0NzQxLCAweDg1NkQsIDB4ODU2RCwgMHgyMUNCLA0KKyAgICAweDg1NkUsIDB4ODU3MSwgMHg0NzQzLCAweDg1NzIsIDB4ODU3MiwgMHgxNDk3LCAweDg1NzMsIDB4ODU3MywgMHg0NzQ3LA0KKyAgICAweDg1NzQsIDB4ODU3NCwgMHgxMTBGLCAweDg1NzUsIDB4ODU3NiwgMHg0NzQ4LCAweDg1NzcsIDB4ODU3NywgMHgyMzU1LA0KKyAgICAweDg1NzgsIDB4ODU3OCwgMHg0NzRBLCAweDg1NzksIDB4ODU3OSwgMHgxNDlELCAweDg1N0EsIDB4ODU3QSwgMHgxNDk0LA0KKyAgICAweDg1N0IsIDB4ODU3QiwgMHgxNDk4LCAweDg1N0MsIDB4ODU3RCwgMHg0NzRCLCAweDg1N0UsIDB4ODU3RSwgMHgwOUM0LA0KKyAgICAweDg1N0YsIDB4ODU4MywgMHg0NzRELCAweDg1ODQsIDB4ODU4NCwgMHgwNDBBLCAweDg1ODUsIDB4ODU4NSwgMHgxNEEwLA0KKyAgICAweDg1ODYsIDB4ODU4NiwgMHg0NzUyLCAweDg1ODcsIDB4ODU4NywgMHgxNDlCLCAweDg1ODgsIDB4ODU4OCwgMHgyMzNFLA0KKyAgICAweDg1ODksIDB4ODU4OSwgMHg0NzUzLCAweDg1OEEsIDB4ODU4QSwgMHgxRjc0LCAweDg1OEIsIDB4ODU4QiwgMHg0NzU0LA0KKyAgICAweDg1OEMsIDB4ODU4QywgMHgyMzMwLCAweDg1OEQsIDB4ODU4RSwgMHg0NzU1LCAweDg1OEYsIDB4ODU4RiwgMHgxNDlDLA0KKyAgICAweDg1OTAsIDB4ODU5MCwgMHg0NzU3LCAweDg1OTEsIDB4ODU5MSwgMHgyNjgwLCAweDg1OTIsIDB4ODU5MywgMHg0NzU4LA0KKyAgICAweDg1OTQsIDB4ODU5NCwgMHgyMERBLCAweDg1OTUsIDB4ODU5QSwgMHg0NzVBLCAweDg1OUIsIDB4ODU5QiwgMHgwRkNGLA0KKyAgICAweDg1OUMsIDB4ODU5QywgMHgxNDlGLCAweDg1OUQsIDB4ODU5RSwgMHg0NzYwLCAweDg1OUYsIDB4ODU5RiwgMHgyMzRBLA0KKyAgICAweDg1QTAsIDB4ODVBMywgMHg0NzYyLCAweDg1QTQsIDB4ODVBNCwgMHgxNDk5LCAweDg1QTUsIDB4ODVBNSwgMHg0NzY2LA0KKyAgICAweDg1QTYsIDB4ODVBNiwgMHgxRjkxLCAweDg1QTcsIDB4ODVBNywgMHg0NzY3LCAweDg1QTgsIDB4ODVBOCwgMHgxNDlBLA0KKyAgICAweDg1QTksIDB4ODVBOSwgMHgyMTA3LCAweDg1QUEsIDB4ODVBQSwgMHgwRjg4LCAweDg1QUIsIDB4ODVBRCwgMHg0NzY4LA0KKyAgICAweDg1QUUsIDB4ODVBRSwgMHgxNDlFLCAweDg1QUYsIDB4ODVBRiwgMHgwRDg0LCAweDg1QjAsIDB4ODVCMCwgMHgxNEEzLA0KKyAgICAweDg1QjEsIDB4ODVCNiwgMHg0NzZCLCAweDg1QjcsIDB4ODVCNywgMHgxNEEyLCAweDg1QjgsIDB4ODVCOCwgMHg0NzcxLA0KKyAgICAweDg1QjksIDB4ODVCOSwgMHgxNEExLCAweDg1QkEsIDB4ODVCQSwgMHgyMzNGLCAweDg1QkIsIDB4ODVDMCwgMHg0NzcyLA0KKyAgICAweDg1QzEsIDB4ODVDMSwgMHgxNEE1LCAweDg1QzIsIDB4ODVDOCwgMHg0Nzc4LCAweDg1QzksIDB4ODVDOSwgMHgwOEI2LA0KKyAgICAweDg1Q0EsIDB4ODVDQywgMHg0NzdGLCAweDg1Q0QsIDB4ODVDRCwgMHgxRkY0LCAweDg1Q0UsIDB4ODVDRSwgMHgyMzQzLA0KKyAgICAweDg1Q0YsIDB4ODVDRiwgMHgwNDlGLCAweDg1RDAsIDB4ODVEMCwgMHgwQUVGLCAweDg1RDEsIDB4ODVEMiwgMHg0NzgyLA0KKyAgICAweDg1RDMsIDB4ODVEMywgMHgxNEE0LCAweDg1RDQsIDB4ODVENCwgMHg0Nzg0LCAweDg1RDUsIDB4ODVENSwgMHgwQjdCLA0KKyAgICAweDg1RDYsIDB4ODVEQiwgMHg0Nzg1LCAweDg1REMsIDB4ODVEQywgMHgxNEE2LCAweDg1REQsIDB4ODVERCwgMHgyMjEyLA0KKyAgICAweDg1REUsIDB4ODVFMywgMHg0NzhCLCAweDg1RTQsIDB4ODVFNCwgMHgwRTJDLCAweDg1RTUsIDB4ODVFNSwgMHgyMjA3LA0KKyAgICAweDg1RTYsIDB4ODVFOCwgMHg0NzkxLCAweDg1RTksIDB4ODVFOSwgMHgwNjQ3LCAweDg1RUEsIDB4ODVFQSwgMHgyMzU5LA0KKyAgICAweDg1RUIsIDB4ODVGMywgMHg0Nzk0LCAweDg1RjQsIDB4ODVGNCwgMHgyMjU0LCAweDg1RjUsIDB4ODVGNSwgMHg0NzlELA0KKyAgICAweDg1RjYsIDB4ODVGNiwgMHgyMzMyLCAweDg1RjcsIDB4ODVGOCwgMHg0NzlFLCAweDg1RjksIDB4ODVGOSwgMHgxRTI2LA0KKyAgICAweDg1RkEsIDB4ODVGQSwgMHgyMzU3LCAweDg1RkIsIDB4ODVGQiwgMHgxMTI4LCAweDg1RkMsIDB4ODVGRSwgMHg0N0EwLA0KKyAgICAweDg1RkYsIDB4ODVGRiwgMHgxNEE3LCAweDg2MDAsIDB4ODYwMywgMHg0N0EzLCAweDg2MDQsIDB4ODYwNCwgMHgyMzU4LA0KKyAgICAweDg2MDUsIDB4ODYwNSwgMHgxNEE5LCAweDg2MDYsIDB4ODYwNiwgMHgyMDQyLCAweDg2MDcsIDB4ODYwNywgMHgyMTUzLA0KKyAgICAweDg2MDgsIDB4ODYwQSwgMHg0N0E3LCAweDg2MEIsIDB4ODYwQiwgMHgyMEJCLCAweDg2MEMsIDB4ODYxMCwgMHg0N0FBLA0KKyAgICAweDg2MTEsIDB4ODYxMSwgMHgwQjA1LCAweDg2MTIsIDB4ODYxNSwgMHg0N0FGLCAweDg2MTYsIDB4ODYxNiwgMHgxNEFCLA0KKyAgICAweDg2MTcsIDB4ODYxOSwgMHg0N0IzLCAweDg2MUEsIDB4ODYxQSwgMHgyMzVBLCAweDg2MUIsIDB4ODYxRCwgMHg0N0I2LA0KKyAgICAweDg2MUUsIDB4ODYxRSwgMHgyMzU2LCAweDg2MUYsIDB4ODYyMSwgMHg0N0I5LCAweDg2MjIsIDB4ODYyMiwgMHgyMzM3LA0KKyAgICAweDg2MjMsIDB4ODYyNiwgMHg0N0JDLCAweDg2MjcsIDB4ODYyNywgMHgxNEE4LCAweDg2MjgsIDB4ODYyOCwgMHg0N0MwLA0KKyAgICAweDg2MjksIDB4ODYyOSwgMHgxNEFBLCAweDg2MkEsIDB4ODYyQywgMHg0N0MxLCAweDg2MkQsIDB4ODYyRCwgMHgxRkY5LA0KKyAgICAweDg2MkUsIDB4ODYzNywgMHg0N0M0LCAweDg2MzgsIDB4ODYzOCwgMHgxMTVCLCAweDg2MzksIDB4ODYzOSwgMHg0N0NFLA0KKyAgICAweDg2M0EsIDB4ODYzQSwgMHgyMzUzLCAweDg2M0IsIDB4ODYzQiwgMHg0N0NGLCAweDg2M0MsIDB4ODYzQywgMHgxNEFDLA0KKyAgICAweDg2M0QsIDB4ODYzRSwgMHg0N0QwLCAweDg2M0YsIDB4ODYzRiwgMHgyMDYxLCAweDg2NDAsIDB4ODY0QywgMHg0N0QyLA0KKyAgICAweDg2NEQsIDB4ODY0RCwgMHgxQkYwLCAweDg2NEUsIDB4ODY0RSwgMHgwN0I3LCAweDg2NEYsIDB4ODY0RiwgMHgwQTU5LA0KKyAgICAweDg2NTAsIDB4ODY1MCwgMHgwQjcxLCAweDg2NTEsIDB4ODY1MSwgMHgwQTZFLCAweDg2NTIsIDB4ODY1MywgMHg0N0RGLA0KKyAgICAweDg2NTQsIDB4ODY1NCwgMHgxQkYxLCAweDg2NTUsIDB4ODY1NSwgMHgxRTk1LCAweDg2NTYsIDB4ODY1OSwgMHg0N0UxLA0KKyAgICAweDg2NUEsIDB4ODY1QSwgMHgwRkI0LCAweDg2NUIsIDB4ODY1QiwgMHg0N0U1LCAweDg2NUMsIDB4ODY1QywgMHgyMDQ5LA0KKyAgICAweDg2NUQsIDB4ODY1RCwgMHg0N0U2LCAweDg2NUUsIDB4ODY1RSwgMHgxMEMyLCAweDg2NUYsIDB4ODY1RiwgMHgxRjQyLA0KKyAgICAweDg2NjAsIDB4ODY2MSwgMHg0N0U3LCAweDg2NjIsIDB4ODY2MiwgMHgxOTZELCAweDg2NjMsIDB4ODY2NiwgMHg0N0U5LA0KKyAgICAweDg2NjcsIDB4ODY2NywgMHgxRkU4LCAweDg2NjgsIDB4ODY2QSwgMHg0N0VELCAweDg2NkIsIDB4ODY2QiwgMHgwNTBCLA0KKyAgICAweDg2NkMsIDB4ODY2QywgMHgxQkYyLCAweDg2NkQsIDB4ODY2RCwgMHg0N0YwLCAweDg2NkUsIDB4ODY2RSwgMHgxQkYzLA0KKyAgICAweDg2NkYsIDB4ODY3MCwgMHg0N0YxLCAweDg2NzEsIDB4ODY3MSwgMHgwRDQ0LCAweDg2NzIsIDB4ODY3OCwgMHg0N0YzLA0KKyAgICAweDg2NzksIDB4ODY3OSwgMHgwNzlFLCAweDg2N0EsIDB4ODY3QSwgMHgxQkY1LCAweDg2N0IsIDB4ODY3QiwgMHgxQkY3LA0KKyAgICAweDg2N0MsIDB4ODY3QywgMHgxQkY2LCAweDg2N0QsIDB4ODY3RCwgMHgwREQ5LCAweDg2N0UsIDB4ODY3RSwgMHgwRjI3LA0KKyAgICAweDg2N0YsIDB4ODY3RiwgMHgxQkY0LCAweDg2ODAsIDB4ODY4MCwgMHgwRDRCLCAweDg2ODEsIDB4ODY4MSwgMHgxMDU2LA0KKyAgICAweDg2ODIsIDB4ODY4MiwgMHgwQTkzLCAweDg2ODMsIDB4ODY4OSwgMHg0N0ZBLCAweDg2OEEsIDB4ODY4QSwgMHgwRUQyLA0KKyAgICAweDg2OEIsIDB4ODY4QiwgMHgxQkZBLCAweDg2OEMsIDB4ODY4QywgMHgwNDAxLCAweDg2OEQsIDB4ODY4RCwgMHgxQkY5LA0KKyAgICAweDg2OEUsIDB4ODY5MiwgMHg0ODAxLCAweDg2OTMsIDB4ODY5MywgMHgxQzAwLCAweDg2OTQsIDB4ODY5NCwgMHg0ODA2LA0KKyAgICAweDg2OTUsIDB4ODY5NSwgMHgwNDk2LCAweDg2OTYsIDB4ODY5QiwgMHg0ODA3LCAweDg2OUMsIDB4ODY5QywgMHgwRkVBLA0KKyAgICAweDg2OUQsIDB4ODY5RCwgMHgxQkZDLCAweDg2OUUsIDB4ODZBMiwgMHg0ODBELCAweDg2QTMsIDB4ODZBMywgMHgxQkZFLA0KKyAgICAweDg2QTQsIDB4ODZBNCwgMHgxMTJDLCAweDg2QTUsIDB4ODZBNiwgMHg0ODEyLCAweDg2QTcsIDB4ODZBNywgMHgxQkZELA0KKyAgICAweDg2QTgsIDB4ODZBOCwgMHgxQkY4LCAweDg2QTksIDB4ODZBOSwgMHgxQzAxLCAweDg2QUEsIDB4ODZBQSwgMHgxQkZGLA0KKyAgICAweDg2QUIsIDB4ODZBQiwgMHg0ODE0LCAweDg2QUMsIDB4ODZBQywgMHgxQkZCLCAweDg2QUQsIDB4ODZBRSwgMHg0ODE1LA0KKyAgICAweDg2QUYsIDB4ODZBRiwgMHgxQzA5LCAweDg2QjAsIDB4ODZCMCwgMHgxQzA2LCAweDg2QjEsIDB4ODZCMSwgMHgxQzA4LA0KKyAgICAweDg2QjIsIDB4ODZCMywgMHg0ODE3LCAweDg2QjQsIDB4ODZCNCwgMHgxQzBDLCAweDg2QjUsIDB4ODZCNSwgMHgxQzA0LA0KKyAgICAweDg2QjYsIDB4ODZCNiwgMHgxQzAyLCAweDg2QjcsIDB4ODZCOSwgMHg0ODE5LCAweDg2QkEsIDB4ODZCQSwgMHgxQzA3LA0KKyAgICAweDg2QkIsIDB4ODZCRiwgMHg0ODFDLCAweDg2QzAsIDB4ODZDMCwgMHgxMUZBLCAweDg2QzEsIDB4ODZDMywgMHg0ODIxLA0KKyAgICAweDg2QzQsIDB4ODZDNCwgMHgxQzAzLCAweDg2QzUsIDB4ODZDNSwgMHg0ODI0LCAweDg2QzYsIDB4ODZDNiwgMHgwQzc2LA0KKyAgICAweDg2QzcsIDB4ODZDNywgMHgwRDE4LCAweDg2QzgsIDB4ODZDOCwgMHg0ODI1LCAweDg2QzksIDB4ODZDOSwgMHgxQzBBLA0KKyAgICAweDg2Q0EsIDB4ODZDQSwgMHgwNzFGLCAweDg2Q0IsIDB4ODZDQiwgMHgwNTkxLCAweDg2Q0MsIDB4ODZDRCwgMHg0ODI2LA0KKyAgICAweDg2Q0UsIDB4ODZDRSwgMHgxQzA1LCAweDg2Q0YsIDB4ODZDRiwgMHgxQzBCLCAweDg2RDAsIDB4ODZEMCwgMHgxQzEyLA0KKyAgICAweDg2RDEsIDB4ODZEMSwgMHgxQzE4LCAweDg2RDIsIDB4ODZEMywgMHg0ODI4LCAweDg2RDQsIDB4ODZENCwgMHgwN0VDLA0KKyAgICAweDg2RDUsIDB4ODZENywgMHg0ODJBLCAweDg2RDgsIDB4ODZEOCwgMHgxQzE3LCAweDg2RDksIDB4ODZEOSwgMHgwRThELA0KKyAgICAweDg2REEsIDB4ODZEQSwgMHg0ODJELCAweDg2REIsIDB4ODZEQiwgMHgxMUVBLCAweDg2REMsIDB4ODZERCwgMHg0ODJFLA0KKyAgICAweDg2REUsIDB4ODZERSwgMHgxQzE0LCAweDg2REYsIDB4ODZERiwgMHgxQzE2LCAweDg2RTAsIDB4ODZFMywgMHg0ODMwLA0KKyAgICAweDg2RTQsIDB4ODZFNCwgMHgwNkVELCAweDg2RTUsIDB4ODZFOCwgMHg0ODM0LCAweDg2RTksIDB4ODZFOSwgMHgxQzBELA0KKyAgICAweDg2RUEsIDB4ODZFQywgMHg0ODM4LCAweDg2RUQsIDB4ODZFRCwgMHgxQzEwLCAweDg2RUUsIDB4ODZFRSwgMHgwQUEwLA0KKyAgICAweDg2RUYsIDB4ODZFRiwgMHg0ODNCLCAweDg2RjAsIDB4ODZGMCwgMHgxMTdFLCAweDg2RjEsIDB4ODZGMiwgMHgxQzBFLA0KKyAgICAweDg2RjMsIDB4ODZGMywgMHgxQzExLCAweDg2RjQsIDB4ODZGNCwgMHgxQzE1LCAweDg2RjUsIDB4ODZGNywgMHg0ODNDLA0KKyAgICAweDg2RjgsIDB4ODZGOCwgMHgxQzFCLCAweDg2RjksIDB4ODZGOSwgMHgxMEExLCAweDg2RkEsIDB4ODZGQSwgMHgyNURBLA0KKyAgICAweDg2RkIsIDB4ODZGRCwgMHg0ODNGLCAweDg2RkUsIDB4ODZGRSwgMHgwNjI5LCAweDg2RkYsIDB4ODZGRiwgMHg0ODQyLA0KKyAgICAweDg3MDAsIDB4ODcwMCwgMHgwRDg4LCAweDg3MDEsIDB4ODcwMSwgMHg0ODQzLCAweDg3MDIsIDB4ODcwMiwgMHgwNjgxLA0KKyAgICAweDg3MDMsIDB4ODcwMywgMHgxQzE5LCAweDg3MDQsIDB4ODcwNSwgMHg0ODQ0LCAweDg3MDYsIDB4ODcwNiwgMHgyNUQ3LA0KKyAgICAweDg3MDcsIDB4ODcwNywgMHgxQzFBLCAweDg3MDgsIDB4ODcwOCwgMHgxQzFDLCAweDg3MDksIDB4ODcwOSwgMHgxQzFGLA0KKyAgICAweDg3MEEsIDB4ODcwQSwgMHgxQzFELCAweDg3MEIsIDB4ODcwQywgMHg0ODQ2LCAweDg3MEQsIDB4ODcwRCwgMHgxQzFFLA0KKyAgICAweDg3MEUsIDB4ODcxMSwgMHg0ODQ4LCAweDg3MTIsIDB4ODcxMiwgMHgwRkZBLCAweDg3MTMsIDB4ODcxMywgMHgxQzEzLA0KKyAgICAweDg3MTQsIDB4ODcxNCwgMHg0ODRDLCAweDg3MTUsIDB4ODcxNSwgMHgwRTdBLCAweDg3MTYsIDB4ODcxNiwgMHg0ODRELA0KKyAgICAweDg3MTcsIDB4ODcxNywgMHgwRURFLCAweDg3MTgsIDB4ODcxOCwgMHgxMUE4LCAweDg3MTksIDB4ODcxOSwgMHg0ODRFLA0KKyAgICAweDg3MUEsIDB4ODcxQSwgMHgxQzI1LCAweDg3MUIsIDB4ODcxQiwgMHg0ODRGLCAweDg3MUMsIDB4ODcxQywgMHgwQUUwLA0KKyAgICAweDg3MUQsIDB4ODcxRCwgMHg0ODUwLCAweDg3MUUsIDB4ODcxRSwgMHgxQzIyLCAweDg3MUYsIDB4ODcyMCwgMHg0ODUxLA0KKyAgICAweDg3MjEsIDB4ODcyMSwgMHgwOTlBLCAweDg3MjIsIDB4ODcyMiwgMHgxQzJFLCAweDg3MjMsIDB4ODcyMywgMHgxQzIwLA0KKyAgICAweDg3MjQsIDB4ODcyNCwgMHg0ODUzLCAweDg3MjUsIDB4ODcyNSwgMHgxQzIzLCAweDg3MjYsIDB4ODcyOCwgMHg0ODU0LA0KKyAgICAweDg3MjksIDB4ODcyOSwgMHgxQzJBLCAweDg3MkEsIDB4ODcyRCwgMHg0ODU3LCAweDg3MkUsIDB4ODcyRSwgMHgxQzI0LA0KKyAgICAweDg3MkYsIDB4ODczMCwgMHg0ODVCLCAweDg3MzEsIDB4ODczMSwgMHgxQzI5LCAweDg3MzIsIDB4ODczMywgMHg0ODVELA0KKyAgICAweDg3MzQsIDB4ODczNCwgMHgxQzI4LCAweDg3MzUsIDB4ODczNiwgMHg0ODVGLCAweDg3MzcsIDB4ODczNywgMHgxQzJCLA0KKyAgICAweDg3MzgsIDB4ODczQSwgMHg0ODYxLCAweDg3M0IsIDB4ODczQiwgMHgxQzIxLCAweDg3M0MsIDB4ODczRCwgMHg0ODY0LA0KKyAgICAweDg3M0UsIDB4ODczRSwgMHgxQzI2LCAweDg3M0YsIDB4ODczRiwgMHgxQzJDLCAweDg3NDAsIDB4ODc0NiwgMHg0ODY2LA0KKyAgICAweDg3NDcsIDB4ODc0NywgMHgxMDkxLCAweDg3NDgsIDB4ODc0OCwgMHgxQzI3LCAweDg3NDksIDB4ODc0OSwgMHgwNEJDLA0KKyAgICAweDg3NEEsIDB4ODc0QiwgMHg0ODZELCAweDg3NEMsIDB4ODc0QywgMHgxQzM0LCAweDg3NEQsIDB4ODc0RCwgMHg0ODZGLA0KKyAgICAweDg3NEUsIDB4ODc0RSwgMHgwRjc2LCAweDg3NEYsIDB4ODc1MiwgMHg0ODcwLCAweDg3NTMsIDB4ODc1MywgMHgxQzM3LA0KKyAgICAweDg3NTQsIDB4ODc1NCwgMHg0ODc0LCAweDg3NTUsIDB4ODc1NSwgMHgyMTJFLCAweDg3NTYsIDB4ODc1NiwgMHg0ODc1LA0KKyAgICAweDg3NTcsIDB4ODc1NywgMHgwN0RELCAweDg3NTgsIDB4ODc1OCwgMHg0ODc2LCAweDg3NTksIDB4ODc1OSwgMHgxQzNCLA0KKyAgICAweDg3NUEsIDB4ODc1RiwgMHg0ODc3LCAweDg3NjAsIDB4ODc2MCwgMHgxQzMyLCAweDg3NjEsIDB4ODc2MiwgMHg0ODdELA0KKyAgICAweDg3NjMsIDB4ODc2MywgMHgxQzM4LCAweDg3NjQsIDB4ODc2NCwgMHgxQzNBLCAweDg3NjUsIDB4ODc2NSwgMHgxQzNDLA0KKyAgICAweDg3NjYsIDB4ODc2NiwgMHgyMUIyLCAweDg3NjcsIDB4ODc2RCwgMHg0ODdGLCAweDg3NkUsIDB4ODc2RSwgMHgxQzM1LA0KKyAgICAweDg3NkYsIDB4ODc2RiwgMHg0ODg2LCAweDg3NzAsIDB4ODc3MCwgMHgxQzMzLCAweDg3NzEsIDB4ODc3MywgMHg0ODg3LA0KKyAgICAweDg3NzQsIDB4ODc3NCwgMHgwN0IyLCAweDg3NzUsIDB4ODc3NSwgMHg0ODhBLCAweDg3NzYsIDB4ODc3NiwgMHgwNURDLA0KKyAgICAweDg3NzcsIDB4ODc3NywgMHg0ODhCLCAweDg3NzgsIDB4ODc3OCwgMHgyMTlFLCAweDg3NzksIDB4ODc3QSwgMHg0ODhDLA0KKyAgICAweDg3N0IsIDB4ODc3QiwgMHgxQzMxLCAweDg3N0MsIDB4ODc3QywgMHgxQzM5LCAweDg3N0QsIDB4ODc3RSwgMHgxQzJGLA0KKyAgICAweDg3N0YsIDB4ODc4MSwgMHg0ODhFLCAweDg3ODIsIDB4ODc4MiwgMHgxQzJELCAweDg3ODMsIDB4ODc4MywgMHgxQzQ2LA0KKyAgICAweDg3ODQsIDB4ODc4NCwgMHgyNURDLCAweDg3ODUsIDB4ODc4NSwgMHgxQzQzLCAweDg3ODYsIDB4ODc4NywgMHg0ODkxLA0KKyAgICAweDg3ODgsIDB4ODc4OCwgMHgxQzQyLCAweDg3ODksIDB4ODc4QSwgMHg0ODkzLCAweDg3OEIsIDB4ODc4QiwgMHgxQzM2LA0KKyAgICAweDg3OEMsIDB4ODc4QywgMHg0ODk1LCAweDg3OEQsIDB4ODc4RCwgMHgwQ0I1LCAweDg3OEUsIDB4ODc5MiwgMHg0ODk2LA0KKyAgICAweDg3OTMsIDB4ODc5MywgMHgxQzNELCAweDg3OTQsIDB4ODc5NiwgMHg0ODlCLCAweDg3OTcsIDB4ODc5NywgMHgxQzQ1LA0KKyAgICAweDg3OTgsIDB4ODc5RCwgMHg0ODlFLCAweDg3OUUsIDB4ODc5RSwgMHgyMDZDLCAweDg3OUYsIDB4ODc5RiwgMHgwQUZELA0KKyAgICAweDg3QTAsIDB4ODdBMSwgMHg0OEE0LCAweDg3QTIsIDB4ODdBMiwgMHgyMjI2LCAweDg3QTMsIDB4ODdBNywgMHg0OEE2LA0KKyAgICAweDg3QTgsIDB4ODdBOCwgMHgxQzNGLCAweDg3QTksIDB4ODdBQSwgMHg0OEFCLCAweDg3QUIsIDB4ODdBQiwgMHgxQzQ3LA0KKyAgICAweDg3QUMsIDB4ODdBQywgMHgxQzQ5LCAweDg3QUQsIDB4ODdBRCwgMHgxQzQ0LCAweDg3QUUsIDB4ODdBRSwgMHg0OEFELA0KKyAgICAweDg3QUYsIDB4ODdBRiwgMHgxQzNFLCAweDg3QjAsIDB4ODdCMiwgMHg0OEFFLCAweDg3QjMsIDB4ODdCMywgMHgxQzRCLA0KKyAgICAweDg3QjQsIDB4ODdCNCwgMHg0OEIxLCAweDg3QjUsIDB4ODdCNSwgMHgxQzRBLCAweDg3QjYsIDB4ODdCOSwgMHg0OEIyLA0KKyAgICAweDg3QkEsIDB4ODdCQSwgMHgwQTg0LCAweDg3QkIsIDB4ODdCQiwgMHgyNUUwLCAweDg3QkMsIDB4ODdCQywgMHg0OEI2LA0KKyAgICAweDg3QkQsIDB4ODdCRCwgMHgxQzRFLCAweDg3QkUsIDB4ODdCRiwgMHg0OEI3LCAweDg3QzAsIDB4ODdDMCwgMHgxQzUwLA0KKyAgICAweDg3QzEsIDB4ODdDMywgMHg0OEI5LCAweDg3QzQsIDB4ODdDNCwgMHgyMjdCLCAweDg3QzUsIDB4ODdDNSwgMHg0OEJDLA0KKyAgICAweDg3QzYsIDB4ODdDNiwgMHgxQzQxLCAweDg3QzcsIDB4ODdDNywgMHg0OEJELCAweDg3QzgsIDB4ODdDOCwgMHgyNURFLA0KKyAgICAweDg3QzksIDB4ODdDOSwgMHg0OEJFLCAweDg3Q0EsIDB4ODdDQSwgMHgxQzUxLCAweDg3Q0IsIDB4ODdDQiwgMHgxQzRDLA0KKyAgICAweDg3Q0MsIDB4ODdDRCwgMHg0OEJGLCAweDg3Q0UsIDB4ODdDRSwgMHgyNUUxLCAweDg3Q0YsIDB4ODdEMCwgMHg0OEMxLA0KKyAgICAweDg3RDEsIDB4ODdEMSwgMHgxQzRGLCAweDg3RDIsIDB4ODdEMiwgMHgxQzQwLCAweDg3RDMsIDB4ODdEMywgMHgxQzRELA0KKyAgICAweDg3RDQsIDB4ODdEQSwgMHg0OEMzLCAweDg3REIsIDB4ODdEQiwgMHgxQzUyLCAweDg3REMsIDB4ODdERiwgMHg0OENBLA0KKyAgICAweDg3RTAsIDB4ODdFMCwgMHgxQzU0LCAweDg3RTEsIDB4ODdFMiwgMHg0OENFLCAweDg3RTMsIDB4ODdFMywgMHgyNUQ1LA0KKyAgICAweDg3RTQsIDB4ODdFNCwgMHg0OEQwLCAweDg3RTUsIDB4ODdFNSwgMHgxQzQ4LCAweDg3RTYsIDB4ODdFOSwgMHg0OEQxLA0KKyAgICAweDg3RUEsIDB4ODdFQSwgMHgxQzUzLCAweDg3RUIsIDB4ODdFQiwgMHg0OEQ1LCAweDg3RUMsIDB4ODdFQywgMHgxRTZCLA0KKyAgICAweDg3RUQsIDB4ODdFRCwgMHg0OEQ2LCAweDg3RUUsIDB4ODdFRSwgMHgxQzU1LCAweDg3RUYsIDB4ODdFRiwgMHgyNURCLA0KKyAgICAweDg3RjAsIDB4ODdGMSwgMHg0OEQ3LCAweDg3RjIsIDB4ODdGMiwgMHgxRTg5LCAweDg3RjMsIDB4ODdGNSwgMHg0OEQ5LA0KKyAgICAweDg3RjYsIDB4ODdGNiwgMHgyNUQ5LCAweDg3RjcsIDB4ODdGOCwgMHg0OERDLCAweDg3RjksIDB4ODdGOSwgMHgwRjgyLA0KKyAgICAweDg3RkEsIDB4ODdGQSwgMHg0OERFLCAweDg3RkIsIDB4ODdGQiwgMHgyMjExLCAweDg3RkMsIDB4ODdGRCwgMHg0OERGLA0KKyAgICAweDg3RkUsIDB4ODdGRSwgMHgxQzU4LCAweDg3RkYsIDB4ODdGRiwgMHg0OEUxLCAweDg4MDAsIDB4ODgwMiwgMHg0OEUyLA0KKyAgICAweDg4MDMsIDB4ODgwMywgMHgxMzBELCAweDg4MDQsIDB4ODgwNCwgMHg0OEU1LCAweDg4MDUsIDB4ODgwNSwgMHgyMjI5LA0KKyAgICAweDg4MDYsIDB4ODgwNiwgMHgyNUQ2LCAweDg4MDcsIDB4ODgwOSwgMHg0OEU2LCAweDg4MEEsIDB4ODgwQSwgMHgxQzU5LA0KKyAgICAweDg4MEIsIDB4ODgwRiwgMHg0OEU5LCAweDg4MTAsIDB4ODgxMCwgMHgyNURELCAweDg4MTEsIDB4ODgxMSwgMHgyNURGLA0KKyAgICAweDg4MTIsIDB4ODgxMiwgMHg0OEVFLCAweDg4MTMsIDB4ODgxMywgMHgxQzU3LCAweDg4MTQsIDB4ODgxNCwgMHg0OEVGLA0KKyAgICAweDg4MTUsIDB4ODgxNSwgMHgwQ0JGLCAweDg4MTYsIDB4ODgxNiwgMHgxQzU2LCAweDg4MTcsIDB4ODgxQSwgMHg0OEYwLA0KKyAgICAweDg4MUIsIDB4ODgxQiwgMHgxQzVBLCAweDg4MUMsIDB4ODgxRSwgMHg0OEY0LCAweDg4MUYsIDB4ODgxRiwgMHgxRkVGLA0KKyAgICAweDg4MjAsIDB4ODgyMCwgMHg0OEY3LCAweDg4MjEsIDB4ODgyMSwgMHgxQzVCLCAweDg4MjIsIDB4ODgyMiwgMHgwNTQzLA0KKyAgICAweDg4MjMsIDB4ODgyMywgMHgyNUQ4LCAweDg4MjQsIDB4ODgzMCwgMHg0OEY4LCAweDg4MzEsIDB4ODgzMSwgMHgxRjI5LA0KKyAgICAweDg4MzIsIDB4ODgzMiwgMHgxQThELCAweDg4MzMsIDB4ODgzNSwgMHg0OTA1LCAweDg4MzYsIDB4ODgzNiwgMHgxRTVCLA0KKyAgICAweDg4MzcsIDB4ODgzOCwgMHg0OTA4LCAweDg4MzksIDB4ODgzOSwgMHgxQzVDLCAweDg4M0EsIDB4ODgzQSwgMHg0OTBBLA0KKyAgICAweDg4M0IsIDB4ODgzQiwgMHgyMDc2LCAweDg4M0MsIDB4ODgzQywgMHgxQzVELCAweDg4M0QsIDB4ODgzRiwgMHg0OTBCLA0KKyAgICAweDg4NDAsIDB4ODg0MCwgMHgwRkQzLCAweDg4NDEsIDB4ODg0MywgMHg0OTBFLCAweDg4NDQsIDB4ODg0NCwgMHgxQ0FBLA0KKyAgICAweDg4NDUsIDB4ODg0NSwgMHgwRjkxLCAweDg4NDYsIDB4ODg0NiwgMHgyMjk3LCAweDg4NDcsIDB4ODg0OSwgMHg0OTExLA0KKyAgICAweDg4NEEsIDB4ODg0QSwgMHgyNjkwLCAweDg4NEIsIDB4ODg0QiwgMHg0OTE0LCAweDg4NEMsIDB4ODg0QywgMHgwRjlCLA0KKyAgICAweDg4NEQsIDB4ODg0RCwgMHgxMDA1LCAweDg4NEUsIDB4ODg1MiwgMHg0OTE1LCAweDg4NTMsIDB4ODg1MywgMHgyMTNGLA0KKyAgICAweDg4NTQsIDB4ODg1NCwgMHgwRjNCLCAweDg4NTUsIDB4ODg1NiwgMHg0OTFBLCAweDg4NTcsIDB4ODg1NywgMHgwOEE3LA0KKyAgICAweDg4NTgsIDB4ODg1OCwgMHg0OTFDLCAweDg4NTksIDB4ODg1OSwgMHgwRkVDLCAweDg4NUEsIDB4ODg1QSwgMHg0OTFELA0KKyAgICAweDg4NUIsIDB4ODg1QiwgMHgyMTk4LCAweDg4NUMsIDB4ODg1QywgMHg0OTFFLCAweDg4NUQsIDB4ODg1RCwgMHgxRTg4LA0KKyAgICAweDg4NUUsIDB4ODg2MCwgMHg0OTFGLCAweDg4NjEsIDB4ODg2MSwgMHgwNzk5LCAweDg4NjIsIDB4ODg2MiwgMHgxNUVELA0KKyAgICAweDg4NjMsIDB4ODg2MywgMHgxMDQ5LCAweDg4NjQsIDB4ODg2NCwgMHgxQkE2LCAweDg4NjUsIDB4ODg2NSwgMHgwNDgwLA0KKyAgICAweDg4NjYsIDB4ODg2NywgMHg0OTIyLCAweDg4NjgsIDB4ODg2OCwgMHgwNDU2LCAweDg4NjksIDB4ODg2OSwgMHgxQkE3LA0KKyAgICAweDg4NkEsIDB4ODg2QSwgMHg0OTI0LCAweDg4NkIsIDB4ODg2QiwgMHgwQ0Y5LCAweDg4NkMsIDB4ODg2QywgMHgwNEU5LA0KKyAgICAweDg4NkQsIDB4ODg2RCwgMHg0OTI1LCAweDg4NkUsIDB4ODg2RSwgMHgxMzA2LCAweDg4NkYsIDB4ODg2RiwgMHg0OTI2LA0KKyAgICAweDg4NzAsIDB4ODg3MCwgMHgwRDlBLCAweDg4NzEsIDB4ODg3MSwgMHg0OTI3LCAweDg4NzIsIDB4ODg3MiwgMHgxQkE4LA0KKyAgICAweDg4NzMsIDB4ODg3NiwgMHg0OTI4LCAweDg4NzcsIDB4ODg3NywgMHgxMUQzLCAweDg4NzgsIDB4ODg3OCwgMHg0OTJDLA0KKyAgICAweDg4NzksIDB4ODg3OSwgMHgyMjhDLCAweDg4N0EsIDB4ODg3QywgMHg0OTJELCAweDg4N0QsIDB4ODg3RCwgMHgxQkE5LA0KKyAgICAweDg4N0UsIDB4ODg3RSwgMHgxQ0JFLCAweDg4N0YsIDB4ODg3RiwgMHgxQkFBLCAweDg4ODAsIDB4ODg4MCwgMHg0OTMwLA0KKyAgICAweDg4ODEsIDB4ODg4MSwgMHgxMEVGLCAweDg4ODIsIDB4ODg4MiwgMHgxQkFCLCAweDg4ODMsIDB4ODg4MywgMHg0OTMxLA0KKyAgICAweDg4ODQsIDB4ODg4NCwgMHgwM0NCLCAweDg4ODUsIDB4ODg4NSwgMHgxQ0JGLCAweDg4ODYsIDB4ODg4NywgMHg0OTMyLA0KKyAgICAweDg4ODgsIDB4ODg4OCwgMHgxQ0MwLCAweDg4ODksIDB4ODg4QSwgMHg0OTM0LCAweDg4OEIsIDB4ODg4QiwgMHgwNTdGLA0KKyAgICAweDg4OEMsIDB4ODg4QywgMHg0OTM2LCAweDg4OEQsIDB4ODg4RCwgMHgwQjlDLCAweDg4OEUsIDB4ODg5MSwgMHg0OTM3LA0KKyAgICAweDg4OTIsIDB4ODg5MiwgMHgwRTBFLCAweDg4OTMsIDB4ODg5NSwgMHg0OTNCLCAweDg4OTYsIDB4ODg5NiwgMHgwRkFGLA0KKyAgICAweDg4OTcsIDB4ODg5QiwgMHg0OTNFLCAweDg4OUMsIDB4ODg5QywgMHgwRTkxLCAweDg4OUQsIDB4ODhBMSwgMHg0OTQzLA0KKyAgICAweDg4QTIsIDB4ODhBMiwgMHgxQkFDLCAweDg4QTMsIDB4ODhBMywgMHg0OTQ4LCAweDg4QTQsIDB4ODhBNCwgMHgxMzA3LA0KKyAgICAweDg4QTUsIDB4ODhBQSwgMHg0OTQ5LCAweDg4QUIsIDB4ODhBQiwgMHgwNDI0LCAweDg4QUMsIDB4ODhBQywgMHg0OTRGLA0KKyAgICAweDg4QUQsIDB4ODhBRCwgMHgwRjFCLCAweDg4QUUsIDB4ODhCMCwgMHg0OTUwLCAweDg4QjEsIDB4ODhCMSwgMHgwNjlGLA0KKyAgICAweDg4QjIsIDB4ODhCNiwgMHg0OTUzLCAweDg4QjcsIDB4ODhCNywgMHgxQkFFLCAweDg4QjgsIDB4ODhCQiwgMHg0OTU4LA0KKyAgICAweDg4QkMsIDB4ODhCQywgMHgxQkFGLCAweDg4QkQsIDB4ODhDMCwgMHg0OTVDLCAweDg4QzEsIDB4ODhDMSwgMHgwNDhBLA0KKyAgICAweDg4QzIsIDB4ODhDMiwgMHgwQTFBLCAweDg4QzMsIDB4ODhDNCwgMHg0OTYwLCAweDg4QzUsIDB4ODhDNSwgMHgxMjBELA0KKyAgICAweDg4QzYsIDB4ODhDNiwgMHgxQkFELCAweDg4QzcsIDB4ODhDOCwgMHg0OTYyLCAweDg4QzksIDB4ODhDOSwgMHgxQkIwLA0KKyAgICAweDg4Q0EsIDB4ODhDQSwgMHgyNUYxLCAweDg4Q0IsIDB4ODhDRCwgMHg0OTY0LCAweDg4Q0UsIDB4ODhDRSwgMHgxQkIyLA0KKyAgICAweDg4Q0YsIDB4ODhDRiwgMHgyMDBDLCAweDg4RDAsIDB4ODhEMSwgMHg0OTY3LCAweDg4RDIsIDB4ODhEMiwgMHgxMzBBLA0KKyAgICAweDg4RDMsIDB4ODhEMywgMHg0OTY5LCAweDg4RDQsIDB4ODhENCwgMHgxMDY4LCAweDg4RDUsIDB4ODhENSwgMHgxMEU2LA0KKyAgICAweDg4RDYsIDB4ODhENywgMHg0OTZBLCAweDg4RDgsIDB4ODhEOCwgMHgxQ0MxLCAweDg4RDksIDB4ODhEOSwgMHgwQzk0LA0KKyAgICAweDg4REEsIDB4ODhEQiwgMHg0OTZDLCAweDg4REMsIDB4ODhEQywgMHgxRTU4LCAweDg4REQsIDB4ODhERCwgMHgyMkFDLA0KKyAgICAweDg4REUsIDB4ODhERSwgMHg0OTZFLCAweDg4REYsIDB4ODhERiwgMHgxQ0MyLCAweDg4RTAsIDB4ODhFMSwgMHg0OTZGLA0KKyAgICAweDg4RTIsIDB4ODhFMiwgMHgxQkIxLCAweDg4RTMsIDB4ODhFMywgMHgxQkIzLCAweDg4RTQsIDB4ODhFNCwgMHgwOTcwLA0KKyAgICAweDg4RTUsIDB4ODhFNSwgMHgxQkI0LCAweDg4RTYsIDB4ODhFNywgMHg0OTcxLCAweDg4RTgsIDB4ODhFOCwgMHgxQkI4LA0KKyAgICAweDg4RTksIDB4ODhFRiwgMHg0OTczLCAweDg4RjAsIDB4ODhGMCwgMHgxQkJBLCAweDg4RjEsIDB4ODhGMSwgMHgxQkI1LA0KKyAgICAweDg4RjIsIDB4ODhGMiwgMHg0OTdBLCAweDg4RjMsIDB4ODhGMywgMHgwRDBBLCAweDg4RjQsIDB4ODhGNCwgMHgwQkEyLA0KKyAgICAweDg4RjUsIDB4ODhGNywgMHg0OTdCLCAweDg4RjgsIDB4ODhGOCwgMHgwQThBLCAweDg4RjksIDB4ODhGOSwgMHgwNzU1LA0KKyAgICAweDg4RkEsIDB4ODhGQiwgMHg0OTdFLCAweDg4RkMsIDB4ODhGQywgMHgxQkI3LCAweDg4RkQsIDB4ODhGRCwgMHgyNkE3LA0KKyAgICAweDg4RkUsIDB4ODhGRSwgMHgxQkI5LCAweDg4RkYsIDB4ODhGRiwgMHg0OTgwLCAweDg5MDAsIDB4ODkwMSwgMHg0OTgxLA0KKyAgICAweDg5MDIsIDB4ODkwMiwgMHgwNzJDLCAweDg5MDMsIDB4ODkwNiwgMHg0OTgzLCAweDg5MDcsIDB4ODkwNywgMHgyNjc2LA0KKyAgICAweDg5MDgsIDB4ODkwOSwgMHg0OTg3LCAweDg5MEEsIDB4ODkwQSwgMHgxQkJGLCAweDg5MEIsIDB4ODkwRiwgMHg0OTg5LA0KKyAgICAweDg5MTAsIDB4ODkxMCwgMHgwNzhELCAweDg5MTEsIDB4ODkxMSwgMHg0OThFLCAweDg5MTIsIDB4ODkxMiwgMHgwNDA4LA0KKyAgICAweDg5MTMsIDB4ODkxMywgMHgxQkJELCAweDg5MTQsIDB4ODkxOCwgMHg0OThGLCAweDg5MTksIDB4ODkxOSwgMHgxQkJDLA0KKyAgICAweDg5MUEsIDB4ODkxQSwgMHgxQkI2LCAweDg5MUIsIDB4ODkxQiwgMHgxQkJFLCAweDg5MUMsIDB4ODkyMCwgMHg0OTk0LA0KKyAgICAweDg5MjEsIDB4ODkyMSwgMHgxQkJCLCAweDg5MjIsIDB4ODkyNCwgMHg0OTk5LCAweDg5MjUsIDB4ODkyNSwgMHgwQ0M3LA0KKyAgICAweDg5MjYsIDB4ODkyOSwgMHg0OTlDLCAweDg5MkEsIDB4ODkyQSwgMHgwRTdCLCAweDg5MkIsIDB4ODkyQiwgMHgxQkMxLA0KKyAgICAweDg5MkMsIDB4ODkyRiwgMHg0OUEwLCAweDg5MzAsIDB4ODkzMCwgMHgxNzM5LCAweDg5MzEsIDB4ODkzMSwgMHg0OUE0LA0KKyAgICAweDg5MzIsIDB4ODkzMiwgMHgxRkUxLCAweDg5MzMsIDB4ODkzMywgMHgyNUJCLCAweDg5MzQsIDB4ODkzNCwgMHgxQkMwLA0KKyAgICAweDg5MzUsIDB4ODkzNSwgMHg0OUE1LCAweDg5MzYsIDB4ODkzNiwgMHgxQkMyLCAweDg5MzcsIDB4ODkzNywgMHg0OUE2LA0KKyAgICAweDg5MzgsIDB4ODkzOCwgMHgyNUJFLCAweDg5MzksIDB4ODkzQSwgMHg0OUE3LCAweDg5M0IsIDB4ODkzQiwgMHgyMkRELA0KKyAgICAweDg5M0MsIDB4ODk0MCwgMHg0OUE5LCAweDg5NDEsIDB4ODk0MSwgMHgxQkMzLCAweDg5NDIsIDB4ODk0MywgMHg0OUFFLA0KKyAgICAweDg5NDQsIDB4ODk0NCwgMHgwRjUyLCAweDg5NDUsIDB4ODk0NiwgMHg0OUIwLCAweDg5NDcsIDB4ODk0NywgMHgyNUJELA0KKyAgICAweDg5NDgsIDB4ODk1NSwgMHg0OUIyLCAweDg5NTYsIDB4ODk1NiwgMHgxRTJBLCAweDg5NTcsIDB4ODk1QywgMHg0OUMwLA0KKyAgICAweDg5NUQsIDB4ODk1RCwgMHgyNUJDLCAweDg5NUUsIDB4ODk1RSwgMHgxQ0MzLCAweDg5NUYsIDB4ODk1RiwgMHgwOEM0LA0KKyAgICAweDg5NjAsIDB4ODk2MCwgMHgyNUJBLCAweDg5NjEsIDB4ODk2MywgMHg0OUM2LCAweDg5NjQsIDB4ODk2NCwgMHgyNUJGLA0KKyAgICAweDg5NjUsIDB4ODk2NSwgMHg0OUM5LCAweDg5NjYsIDB4ODk2NiwgMHgxQkM0LCAweDg5NjcsIDB4ODk2OSwgMHg0OUNBLA0KKyAgICAweDg5NkEsIDB4ODk2QSwgMHgyMTg3LCAweDg5NkIsIDB4ODk2QiwgMHg0OUNELCAweDg5NkMsIDB4ODk2QywgMHgyNjZCLA0KKyAgICAweDg5NkQsIDB4ODk2RSwgMHg0OUNFLCAweDg5NkYsIDB4ODk2RiwgMHgxRTdGLCAweDg5NzAsIDB4ODk3MSwgMHg0OUQwLA0KKyAgICAweDg5NzIsIDB4ODk3MiwgMHgyMUFELCAweDg5NzMsIDB4ODk3QSwgMHg0OUQyLCAweDg5N0IsIDB4ODk3QiwgMHgxQkM1LA0KKyAgICAweDg5N0MsIDB4ODk3RSwgMHg0OURBLCAweDg5N0YsIDB4ODk3RiwgMHgwRjA2LCAweDg5ODAsIDB4ODk4MCwgMHg0OURELA0KKyAgICAweDg5ODEsIDB4ODk4MSwgMHgxMDMxLCAweDg5ODIsIDB4ODk4MiwgMHg0OURFLCAweDg5ODMsIDB4ODk4MywgMHgxQkRGLA0KKyAgICAweDg5ODQsIDB4ODk4NSwgMHg0OURGLCAweDg5ODYsIDB4ODk4NiwgMHgwNkFELCAweDg5ODcsIDB4ODk4QSwgMHg0OUUxLA0KKyAgICAweDg5OEIsIDB4ODk4QiwgMHgxRjk2LCAweDg5OEMsIDB4ODk4RSwgMHg0OUU1LCAweDg5OEYsIDB4ODk4RiwgMHgxRjMyLA0KKyAgICAweDg5OTAsIDB4ODk5MiwgMHg0OUU4LCAweDg5OTMsIDB4ODk5MywgMHgyMDg0LCAweDg5OTQsIDB4ODk5NSwgMHg0OUVCLA0KKyAgICAweDg5OTYsIDB4ODk5NiwgMHgyMTM2LCAweDg5OTcsIDB4ODk5NywgMHg0OUVELCAweDg5OTgsIDB4ODk5OCwgMHgyNEI4LA0KKyAgICAweDg5OTksIDB4ODlBMCwgMHg0OUVFLCAweDg5QTEsIDB4ODlBMSwgMHgyNEJBLCAweDg5QTIsIDB4ODlBNSwgMHg0OUY2LA0KKyAgICAweDg5QTYsIDB4ODlBNiwgMHgyNEJDLCAweDg5QTcsIDB4ODlBOSwgMHg0OUZBLCAweDg5QUEsIDB4ODlBQSwgMHgyMEU0LA0KKyAgICAweDg5QUIsIDB4ODlBQiwgMHg0OUZELCAweDg5QUMsIDB4ODlBQywgMHgyNEI5LCAweDg5QUQsIDB4ODlBRSwgMHg0OUZFLA0KKyAgICAweDg5QUYsIDB4ODlBRiwgMHgyNEJELCAweDg5QjAsIDB4ODlCMSwgMHg0QTAwLCAweDg5QjIsIDB4ODlCMiwgMHgyNEJFLA0KKyAgICAweDg5QjMsIDB4ODlCNiwgMHg0QTAyLCAweDg5QjcsIDB4ODlCNywgMHgyNEJGLCAweDg5QjgsIDB4ODlCOSwgMHg0QTA2LA0KKyAgICAweDg5QkEsIDB4ODlCQSwgMHgxRkQyLCAweDg5QkIsIDB4ODlCQywgMHg0QTA4LCAweDg5QkQsIDB4ODlCRCwgMHgxRkZELA0KKyAgICAweDg5QkUsIDB4ODlCRSwgMHg0QTBBLCAweDg5QkYsIDB4ODlCRiwgMHgyNEJCLCAweDg5QzAsIDB4ODlDMCwgMHgxRjJELA0KKyAgICAweDg5QzEsIDB4ODlDMSwgMHgwODZFLCAweDg5QzIsIDB4ODlDMiwgMHgwNzM0LCAweDg5QzMsIDB4ODlDMywgMHg0QTBCLA0KKyAgICAweDg5QzQsIDB4ODlDNCwgMHgwNzNGLCAweDg5QzUsIDB4ODlDNSwgMHgwQURFLCAweDg5QzYsIDB4ODlDNiwgMHgwRDZBLA0KKyAgICAweDg5QzcsIDB4ODlDNywgMHgxOTNBLCAweDg5QzgsIDB4ODlDOCwgMHgwOUFCLCAweDg5QzksIDB4ODlDOSwgMHgwOTI0LA0KKyAgICAweDg5Q0EsIDB4ODlDQywgMHgxOTNCLCAweDg5Q0QsIDB4ODlDRCwgMHg0QTBDLCAweDg5Q0UsIDB4ODlEMSwgMHgxOTNFLA0KKyAgICAweDg5RDIsIDB4ODlEMiwgMHgwODk4LCAweDg5RDMsIDB4ODlENSwgMHg0QTBELCAweDg5RDYsIDB4ODlENiwgMHgxRDU3LA0KKyAgICAweDg5RDcsIDB4ODlEOSwgMHg0QTEwLCAweDg5REEsIDB4ODlEQSwgMHgxRDU5LCAweDg5REIsIDB4ODlEQiwgMHg0QTEzLA0KKyAgICAweDg5REMsIDB4ODlEQywgMHgxRDVBLCAweDg5REQsIDB4ODlERCwgMHg0QTE0LCAweDg5REUsIDB4ODlERSwgMHgxRDU4LA0KKyAgICAweDg5REYsIDB4ODlFMiwgMHg0QTE1LCAweDg5RTMsIDB4ODlFMywgMHgwOEIzLCAweDg5RTQsIDB4ODlFNCwgMHg0QTE5LA0KKyAgICAweDg5RTUsIDB4ODlFNSwgMHgxRDVCLCAweDg5RTYsIDB4ODlFNiwgMHgwNTI4LCAweDg5RTcsIDB4ODlFQSwgMHg0QTFBLA0KKyAgICAweDg5RUIsIDB4ODlFQiwgMHgxRDVDLCAweDg5RUMsIDB4ODlFRSwgMHg0QTFFLCAweDg5RUYsIDB4ODlFRiwgMHgxRDVELA0KKyAgICAweDg5RjAsIDB4ODlGMiwgMHg0QTIxLCAweDg5RjMsIDB4ODlGMywgMHgxOUMwLCAweDg5RjQsIDB4ODlGNCwgMHgyNjA5LA0KKyAgICAweDg5RjUsIDB4ODlGNSwgMHg0QTI0LCAweDg5RjYsIDB4ODlGNiwgMHgyNjBBLCAweDg5RjcsIDB4ODlGNywgMHg0QTI1LA0KKyAgICAweDg5RjgsIDB4ODlGOCwgMHgxRTk0LCAweDg5RjksIDB4ODlGRiwgMHg0QTI2LCAweDhBMDAsIDB4OEEwMCwgMHgwRkZELA0KKyAgICAweDhBMDEsIDB4OEEwMSwgMHgyMkRGLCAweDhBMDIsIDB4OEEwMiwgMHgxRUNCLCAweDhBMDMsIDB4OEEwMywgMHgxRjBELA0KKyAgICAweDhBMDQsIDB4OEEwNiwgMHg0QTJELCAweDhBMDcsIDB4OEEwNywgMHgxMkZFLCAweDhBMDgsIDB4OEEwOCwgMHgxRjc3LA0KKyAgICAweDhBMDksIDB4OEEwOSwgMHg0QTMwLCAweDhBMEEsIDB4OEEwQSwgMHgyMUVCLCAweDhBMEIsIDB4OEEwQiwgMHg0QTMxLA0KKyAgICAweDhBMEMsIDB4OEEwQywgMHgyMkUxLCAweDhBMEQsIDB4OEEwRCwgMHg0QTMyLCAweDhBMEUsIDB4OEEwRSwgMHgyMTZGLA0KKyAgICAweDhBMEYsIDB4OEEwRiwgMHg0QTMzLCAweDhBMTAsIDB4OEExMCwgMHgyMkUwLCAweDhBMTEsIDB4OEExMiwgMHg0QTM0LA0KKyAgICAweDhBMTMsIDB4OEExMywgMHgyMUVBLCAweDhBMTQsIDB4OEExNCwgMHg0QTM2LCAweDhBMTUsIDB4OEExNSwgMHgyMkUyLA0KKyAgICAweDhBMTYsIDB4OEExNiwgMHgyMENCLCAweDhBMTcsIDB4OEExNywgMHg0QTM3LCAweDhBMTgsIDB4OEExOCwgMHgxRjc4LA0KKyAgICAweDhBMTksIDB4OEExQSwgMHg0QTM4LCAweDhBMUIsIDB4OEExQiwgMHgxRUUyLCAweDhBMUMsIDB4OEExQywgMHg0QTNBLA0KKyAgICAweDhBMUQsIDB4OEExRCwgMHgyMUYyLCAweDhBMUUsIDB4OEExRSwgMHg0QTNCLCAweDhBMUYsIDB4OEExRiwgMHgyMTUwLA0KKyAgICAweDhBMjAsIDB4OEEyMiwgMHg0QTNDLCAweDhBMjMsIDB4OEEyMywgMHgxRkQzLCAweDhBMjQsIDB4OEEyNCwgMHg0QTNGLA0KKyAgICAweDhBMjUsIDB4OEEyNSwgMHgyMkU1LCAweDhBMjYsIDB4OEEyOSwgMHg0QTQwLCAweDhBMkEsIDB4OEEyQSwgMHgxRUYyLA0KKyAgICAweDhBMkIsIDB4OEEyQywgMHg0QTQ0LCAweDhBMkQsIDB4OEEyRCwgMHgyMTFGLCAweDhBMkUsIDB4OEEzMCwgMHg0QTQ2LA0KKyAgICAweDhBMzEsIDB4OEEzMSwgMHgyMURELCAweDhBMzIsIDB4OEEzMywgMHg0QTQ5LCAweDhBMzQsIDB4OEEzNCwgMHgyMTU0LA0KKyAgICAweDhBMzUsIDB4OEEzNSwgMHg0QTRCLCAweDhBMzYsIDB4OEEzNiwgMHgyMkU3LCAweDhBMzcsIDB4OEEzOSwgMHg0QTRDLA0KKyAgICAweDhBM0EsIDB4OEEzQSwgMHgyMjgyLCAweDhBM0IsIDB4OEEzRCwgMHg0QTRGLCAweDhBM0UsIDB4OEEzRSwgMHgxRDVFLA0KKyAgICAweDhBM0YsIDB4OEE0MCwgMHg0QTUyLCAweDhBNDEsIDB4OEE0MSwgMHgyMkU2LCAweDhBNDIsIDB4OEE0NSwgMHg0QTU0LA0KKyAgICAweDhBNDYsIDB4OEE0NiwgMHgyMkU4LCAweDhBNDcsIDB4OEE0NywgMHg0QTU4LCAweDhBNDgsIDB4OEE0OCwgMHgxQTg0LA0KKyAgICAweDhBNDksIDB4OEE0RCwgMHg0QTU5LCAweDhBNEUsIDB4OEE0RSwgMHgyMkU0LCAweDhBNEYsIDB4OEE0RiwgMHg0QTVFLA0KKyAgICAweDhBNTAsIDB4OEE1MCwgMHgyMjZBLCAweDhBNTEsIDB4OEE1MSwgMHg0QTVGLCAweDhBNTIsIDB4OEE1MiwgMHgyMkVCLA0KKyAgICAweDhBNTMsIDB4OEE1MywgMHg0QTYwLCAweDhBNTQsIDB4OEE1NCwgMHgyMkU5LCAweDhBNTUsIDB4OEE1NSwgMHgyMEJELA0KKyAgICAweDhBNTYsIDB4OEE1NywgMHg0QTYxLCAweDhBNTgsIDB4OEE1OCwgMHgyMkVBLCAweDhBNTksIDB4OEE1QSwgMHg0QTYzLA0KKyAgICAweDhBNUIsIDB4OEE1QiwgMHgyMkJELCAweDhBNUMsIDB4OEE1RCwgMHg0QTY1LCAweDhBNUUsIDB4OEE1RSwgMHgxRTlFLA0KKyAgICAweDhBNUYsIDB4OEE2MCwgMHg0QTY3LCAweDhBNjEsIDB4OEE2MSwgMHgyMkY2LCAweDhBNjIsIDB4OEE2MiwgMHgyMUU3LA0KKyAgICAweDhBNjMsIDB4OEE2MywgMHgyMjE2LCAweDhBNjQsIDB4OEE2NSwgMHg0QTY5LCAweDhBNjYsIDB4OEE2NiwgMHgyMTM3LA0KKyAgICAweDhBNjcsIDB4OEE2OCwgMHg0QTZCLCAweDhBNjksIDB4OEE2OSwgMHgyMTJDLCAweDhBNkEsIDB4OEE2QSwgMHg0QTZELA0KKyAgICAweDhBNkIsIDB4OEE2QiwgMHgxRTY4LCAweDhBNkMsIDB4OEE2QywgMHgyMkYyLCAweDhBNkQsIDB4OEE2RCwgMHgxRjM3LA0KKyAgICAweDhBNkUsIDB4OEE2RSwgMHgyMkYzLCAweDhBNkYsIDB4OEE2RiwgMHg0QTZFLCAweDhBNzAsIDB4OEE3MCwgMHgyMkVGLA0KKyAgICAweDhBNzEsIDB4OEE3MSwgMHgxRjUwLCAweDhBNzIsIDB4OEE3MiwgMHgxRjEwLCAweDhBNzMsIDB4OEE3MywgMHgyMUM4LA0KKyAgICAweDhBNzQsIDB4OEE3NCwgMHg0QTZGLCAweDhBNzUsIDB4OEE3NSwgMHgyMkYxLCAweDhBNzYsIDB4OEE3OCwgMHg0QTcwLA0KKyAgICAweDhBNzksIDB4OEE3OSwgMHgxMTUzLCAweDhBN0EsIDB4OEE3QiwgMHg0QTczLCAweDhBN0MsIDB4OEE3QywgMHgyMkYwLA0KKyAgICAweDhBN0QsIDB4OEE3RSwgMHg0QTc1LCAweDhBN0YsIDB4OEE3RiwgMHgyMkVFLCAweDhBODAsIDB4OEE4MywgMHg0QTc3LA0KKyAgICAweDhBODQsIDB4OEE4NCwgMHgyMkVELCAweDhBODUsIDB4OEE4NSwgMHgyMjlFLCAweDhBODYsIDB4OEE4NiwgMHgyMkVDLA0KKyAgICAweDhBODcsIDB4OEE4NywgMHgxRkUyLCAweDhBODgsIDB4OEE4OCwgMHg0QTdCLCAweDhBODksIDB4OEE4OSwgMHgxMEUzLA0KKyAgICAweDhBOEEsIDB4OEE4QSwgMHgwRTJGLCAweDhBOEIsIDB4OEE4QywgMHg0QTdDLCAweDhBOEQsIDB4OEE4RCwgMHgyMEZFLA0KKyAgICAweDhBOEUsIDB4OEE5MCwgMHg0QTdFLCAweDhBOTEsIDB4OEE5MiwgMHgyMkY5LCAweDhBOTMsIDB4OEE5MywgMHgwRDVCLA0KKyAgICAweDhBOTQsIDB4OEE5NCwgMHg0QTgxLCAweDhBOTUsIDB4OEE5NSwgMHgxRUFGLCAweDhBOTYsIDB4OEE5NywgMHg0QTgyLA0KKyAgICAweDhBOTgsIDB4OEE5OCwgMHgyMjM2LCAweDhBOTksIDB4OEE5OSwgMHg0QTg0LCAweDhBOUEsIDB4OEE5QSwgMHgyMkY3LA0KKyAgICAweDhBOUIsIDB4OEE5RCwgMHg0QTg1LCAweDhBOUUsIDB4OEE5RSwgMHgyMjNELCAweDhBOUYsIDB4OEE5RiwgMHg0QTg4LA0KKyAgICAweDhBQTAsIDB4OEFBMCwgMHgxRTgyLCAweDhBQTEsIDB4OEFBMSwgMHgxRkI2LCAweDhBQTIsIDB4OEFBMiwgMHg0QTg5LA0KKyAgICAweDhBQTMsIDB4OEFBMywgMHgyMUE0LCAweDhBQTQsIDB4OEFBNCwgMHgyMUFBLCAweDhBQTUsIDB4OEFBNSwgMHgyMkY4LA0KKyAgICAweDhBQTYsIDB4OEFBNiwgMHgyMTUxLCAweDhBQTcsIDB4OEFBNywgMHg0QThBLCAweDhBQTgsIDB4OEFBOCwgMHgxRjYwLA0KKyAgICAweDhBQTksIDB4OEFBQiwgMHg0QThCLCAweDhBQUMsIDB4OEFBQywgMHgyMTQ3LCAweDhBQUQsIDB4OEFBRiwgMHg0QThFLA0KKyAgICAweDhBQjAsIDB4OEFCMCwgMHgyMTQ1LCAweDhBQjEsIDB4OEFCMSwgMHg0QTkxLCAweDhBQjIsIDB4OEFCMiwgMHgxRkRDLA0KKyAgICAweDhBQjMsIDB4OEFCNSwgMHg0QTkyLCAweDhBQjYsIDB4OEFCNiwgMHgyMzAxLCAweDhBQjcsIDB4OEFCOCwgMHg0QTk1LA0KKyAgICAweDhBQjksIDB4OEFCOSwgMHgxRUY1LCAweDhBQkEsIDB4OEFCQiwgMHg0QTk3LCAweDhBQkMsIDB4OEFCQywgMHgyMjE4LA0KKyAgICAweDhBQkQsIDB4OEFCRSwgMHg0QTk5LCAweDhBQkYsIDB4OEFCRiwgMHgxRUM2LCAweDhBQzAsIDB4OEFDMSwgMHg0QTlCLA0KKyAgICAweDhBQzIsIDB4OEFDMiwgMHgyMzAwLCAweDhBQzMsIDB4OEFDMywgMHg0QTlELCAweDhBQzQsIDB4OEFDNCwgMHgyMkI0LA0KKyAgICAweDhBQzUsIDB4OEFDNiwgMHg0QTlFLCAweDhBQzcsIDB4OEFDNywgMHgyMTY5LCAweDhBQzgsIDB4OEFDOCwgMHg0QUEwLA0KKyAgICAweDhBQzksIDB4OEFDOSwgMHgyMkZELCAweDhBQ0EsIDB4OEFDQSwgMHg0QUExLCAweDhBQ0IsIDB4OEFDQiwgMHgyMEVBLA0KKyAgICAweDhBQ0MsIDB4OEFDQywgMHg0QUEyLCAweDhBQ0QsIDB4OEFDRCwgMHgyMkY0LCAweDhBQ0UsIDB4OEFDRSwgMHg0QUEzLA0KKyAgICAweDhBQ0YsIDB4OEFDRiwgMHgyMkZCLCAweDhBRDAsIDB4OEFEMCwgMHg0QUE0LCAweDhBRDEsIDB4OEFEMSwgMHgyMkZDLA0KKyAgICAweDhBRDIsIDB4OEFEMiwgMHgyMDI3LCAweDhBRDMsIDB4OEFENSwgMHg0QUE1LCAweDhBRDYsIDB4OEFENiwgMHgyMDYwLA0KKyAgICAweDhBRDcsIDB4OEFENywgMHgyMkZGLCAweDhBRDgsIDB4OEFEQSwgMHg0QUE4LCAweDhBREIsIDB4OEFEQiwgMHgyMkZFLA0KKyAgICAweDhBREMsIDB4OEFEQywgMHgxRUM3LCAweDhBREQsIDB4OEFERCwgMHg0QUFCLCAweDhBREUsIDB4OEFERSwgMHgyMzBDLA0KKyAgICAweDhBREYsIDB4OEFFMSwgMHg0QUFDLCAweDhBRTIsIDB4OEFFMiwgMHgyMkY1LCAweDhBRTMsIDB4OEFFMywgMHg0QUFGLA0KKyAgICAweDhBRTQsIDB4OEFFNCwgMHgyMzA2LCAweDhBRTUsIDB4OEFFNSwgMHg0QUIwLCAweDhBRTYsIDB4OEFFNiwgMHgyMzBBLA0KKyAgICAweDhBRTcsIDB4OEFFNywgMHgyMUQzLCAweDhBRTgsIDB4OEFFQSwgMHg0QUIxLCAweDhBRUIsIDB4OEFFQiwgMHgyMzAzLA0KKyAgICAweDhBRUMsIDB4OEFFQywgMHg0QUI0LCAweDhBRUQsIDB4OEFFRCwgMHgyMzA3LCAweDhBRUUsIDB4OEFFRSwgMHgyMzBCLA0KKyAgICAweDhBRUYsIDB4OEFGMCwgMHg0QUI1LCAweDhBRjEsIDB4OEFGMSwgMHgxRjVGLCAweDhBRjIsIDB4OEFGMiwgMHg0QUI3LA0KKyAgICAweDhBRjMsIDB4OEFGMywgMHgyMzA5LCAweDhBRjQsIDB4OEFGNSwgMHg0QUI4LCAweDhBRjYsIDB4OEFGNiwgMHgyMzAyLA0KKyAgICAweDhBRjcsIDB4OEFGNywgMHgxRjA0LCAweDhBRjgsIDB4OEFGOCwgMHgyMjlELCAweDhBRjksIDB4OEFGOSwgMHg0QUJBLA0KKyAgICAweDhBRkEsIDB4OEFGQSwgMHgyMUZCLCAweDhBRkIsIDB4OEFGQiwgMHg0QUJCLCAweDhBRkMsIDB4OEFGQywgMHgyMzA4LA0KKyAgICAweDhBRkQsIDB4OEFGRCwgMHg0QUJDLCAweDhBRkUsIDB4OEFGRSwgMHgyMEFDLCAweDhBRkYsIDB4OEFGRiwgMHg0QUJELA0KKyAgICAweDhCMDAsIDB4OEIwMCwgMHgyMDhFLCAweDhCMDEsIDB4OEIwMSwgMHgyMzA1LCAweDhCMDIsIDB4OEIwMiwgMHgyMTk3LA0KKyAgICAweDhCMDMsIDB4OEIwMywgMHg0QUJFLCAweDhCMDQsIDB4OEIwNCwgMHgyMTcxLCAweDhCMDUsIDB4OEIwNSwgMHgyMjk4LA0KKyAgICAweDhCMDYsIDB4OEIwNiwgMHg0QUJGLCAweDhCMDcsIDB4OEIwNywgMHgxNzNDLCAweDhCMDgsIDB4OEIwOSwgMHg0QUMwLA0KKyAgICAweDhCMEEsIDB4OEIwQSwgMHgxRjU3LCAweDhCMEIsIDB4OEIwRCwgMHg0QUMyLCAweDhCMEUsIDB4OEIwRSwgMHgyMDgyLA0KKyAgICAweDhCMEYsIDB4OEIwRiwgMHg0QUM1LCAweDhCMTAsIDB4OEIxMCwgMHgyMzExLCAweDhCMTEsIDB4OEIxMywgMHg0QUM2LA0KKyAgICAweDhCMTQsIDB4OEIxNCwgMHgyMzA0LCAweDhCMTUsIDB4OEIxNSwgMHg0QUM5LCAweDhCMTYsIDB4OEIxNiwgMHgyMzBGLA0KKyAgICAweDhCMTcsIDB4OEIxNywgMHgxRTM1LCAweDhCMTgsIDB4OEIxOCwgMHg0QUNBLCAweDhCMTksIDB4OEIxOSwgMHgyMEQxLA0KKyAgICAweDhCMUEsIDB4OEIxQSwgMHgyMzEwLCAweDhCMUIsIDB4OEIxQiwgMHgxRkEzLCAweDhCMUMsIDB4OEIxQywgMHg0QUNCLA0KKyAgICAweDhCMUQsIDB4OEIxRCwgMHgyMUQ2LCAweDhCMUUsIDB4OEIyMCwgMHg0QUNDLCAweDhCMjEsIDB4OEIyMSwgMHgyMjA2LA0KKyAgICAweDhCMjIsIDB4OEIyNSwgMHg0QUNGLCAweDhCMjYsIDB4OEIyNiwgMHgxRDVGLCAweDhCMjcsIDB4OEIyNywgMHg0QUQzLA0KKyAgICAweDhCMjgsIDB4OEIyOCwgMHgyMzBELCAweDhCMjksIDB4OEIyQSwgMHg0QUQ0LCAweDhCMkIsIDB4OEIyQiwgMHgyMzEyLA0KKyAgICAweDhCMkMsIDB4OEIyQywgMHgyMDhELCAweDhCMkQsIDB4OEIyRCwgMHgyMzEzLCAweDhCMkUsIDB4OEIzMiwgMHg0QUQ2LA0KKyAgICAweDhCMzMsIDB4OEIzMywgMHgyMkUzLCAweDhCMzQsIDB4OEIzOCwgMHg0QURCLCAweDhCMzksIDB4OEIzOSwgMHgxRkJBLA0KKyAgICAweDhCM0EsIDB4OEIzRCwgMHg0QUUwLCAweDhCM0UsIDB4OEIzRSwgMHgyMDc4LCAweDhCM0YsIDB4OEI0OCwgMHg0QUU0LA0KKyAgICAweDhCNDksIDB4OEI0OSwgMHgyMjg4LCAweDhCNEEsIDB4OEI0RCwgMHg0QUVFLCAweDhCNEUsIDB4OEI0RSwgMHgyMzE2LA0KKyAgICAweDhCNEYsIDB4OEI0RiwgMHgxRjZCLCAweDhCNTAsIDB4OEI1NSwgMHg0QUYyLCAweDhCNTYsIDB4OEI1NiwgMHgyMzE0LA0KKyAgICAweDhCNTcsIDB4OEI1NywgMHg0QUY4LCAweDhCNTgsIDB4OEI1OCwgMHgyMTMwLCAweDhCNTksIDB4OEI1OSwgMHgyMzE1LA0KKyAgICAweDhCNUEsIDB4OEI1QSwgMHgyMTY4LCAweDhCNUIsIDB4OEI1QiwgMHg0QUY5LCAweDhCNUMsIDB4OEI1QywgMHgyMEM0LA0KKyAgICAweDhCNUQsIDB4OEI2NSwgMHg0QUZBLCAweDhCNjYsIDB4OEI2NiwgMHgwOERFLCAweDhCNjcsIDB4OEI2QSwgMHg0QjAzLA0KKyAgICAweDhCNkIsIDB4OEI2QiwgMHgyMzE4LCAweDhCNkMsIDB4OEI2QywgMHgwQkM4LCAweDhCNkQsIDB4OEI2RSwgMHg0QjA3LA0KKyAgICAweDhCNkYsIDB4OEI2RiwgMHgyMjE5LCAweDhCNzAsIDB4OEI3MCwgMHgyMjE3LCAweDhCNzEsIDB4OEI3MywgMHg0QjA5LA0KKyAgICAweDhCNzQsIDB4OEI3NCwgMHgyMEQ1LCAweDhCNzUsIDB4OEI3NiwgMHg0QjBDLCAweDhCNzcsIDB4OEI3NywgMHgxRjRBLA0KKyAgICAweDhCNzgsIDB4OEI3QywgMHg0QjBFLCAweDhCN0QsIDB4OEI3RCwgMHgyMjQwLCAweDhCN0UsIDB4OEI3RiwgMHg0QjEzLA0KKyAgICAweDhCODAsIDB4OEI4MCwgMHgxRUQzLCAweDhCODEsIDB4OEI4OSwgMHg0QjE1LCAweDhCOEEsIDB4OEI4QSwgMHgxRTQ5LA0KKyAgICAweDhCOEIsIDB4OEI4RCwgMHg0QjFFLCAweDhCOEUsIDB4OEI4RSwgMHgyNjFCLCAweDhCOEYsIDB4OEI5MSwgMHg0QjIxLA0KKyAgICAweDhCOTIsIDB4OEI5MiwgMHgxRTZELCAweDhCOTMsIDB4OEI5MywgMHgyMEY4LCAweDhCOTQsIDB4OEI5NCwgMHg0QjI0LA0KKyAgICAweDhCOTUsIDB4OEI5NSwgMHgxRkZCLCAweDhCOTYsIDB4OEI5NiwgMHgyMzE5LCAweDhCOTcsIDB4OEI5QiwgMHg0QjI1LA0KKyAgICAweDhCOUMsIDB4OEI5QywgMHgyMzBFLCAweDhCOUQsIDB4OEI5RCwgMHg0QjJBLCAweDhCOUUsIDB4OEI5RSwgMHgyMzE3LA0KKyAgICAweDhCOUYsIDB4OEI5RiwgMHg0QjJCLCAweDhCQTAsIDB4OEJBMCwgMHgxMzE3LCAweDhCQTEsIDB4OEJBMSwgMHgwODM5LA0KKyAgICAweDhCQTIsIDB4OEJBMiwgMHgwNUU4LCAweDhCQTMsIDB4OEJBMywgMHgwNkI3LCAweDhCQTQsIDB4OEJBNCwgMHgwQ0FBLA0KKyAgICAweDhCQTUsIDB4OEJBNSwgMHgwODE4LCAweDhCQTYsIDB4OEJBNywgMHgxMzE4LCAweDhCQTgsIDB4OEJBOCwgMHgwRTI5LA0KKyAgICAweDhCQTksIDB4OEJBOSwgMHgwQzlFLCAweDhCQUEsIDB4OEJBQSwgMHgxMzFBLCAweDhCQUIsIDB4OEJBQiwgMHgwQzFDLA0KKyAgICAweDhCQUMsIDB4OEJBQywgMHg0QjJDLCAweDhCQUQsIDB4OEJBRCwgMHgwRkRFLCAweDhCQUUsIDB4OEJBRSwgMHgxMDcwLA0KKyAgICAweDhCQUYsIDB4OEJBRiwgMHgwRkRGLCAweDhCQjAsIDB4OEJCMCwgMHgwODNBLCAweDhCQjEsIDB4OEJCMSwgMHg0QjJELA0KKyAgICAweDhCQjIsIDB4OEJCMiwgMHgwODgzLCAweDhCQjMsIDB4OEJCMywgMHgwN0Y5LCAweDhCQjQsIDB4OEJCNSwgMHgxMzFCLA0KKyAgICAweDhCQjYsIDB4OEJCNiwgMHgwRkYxLCAweDhCQjcsIDB4OEJCNywgMHgxMzFELCAweDhCQjgsIDB4OEJCOCwgMHgwRkI4LA0KKyAgICAweDhCQjksIDB4OEJCOSwgMHgwNjJFLCAweDhCQkEsIDB4OEJCQSwgMHgwQTgyLCAweDhCQkIsIDB4OEJCQiwgMHg0QjJFLA0KKyAgICAweDhCQkMsIDB4OEJCQywgMHgwREM0LCAweDhCQkQsIDB4OEJCRCwgMHgwNjhBLCAweDhCQkUsIDB4OEJCRSwgMHgwRDIxLA0KKyAgICAweDhCQkYsIDB4OEJCRiwgMHgwNjYwLCAweDhCQzAsIDB4OEJDMCwgMHgwOTI2LCAweDhCQzEsIDB4OEJDMSwgMHgxMUEzLA0KKyAgICAweDhCQzIsIDB4OEJDMywgMHgxMzFFLCAweDhCQzQsIDB4OEJDNCwgMHgwQkRGLCAweDhCQzUsIDB4OEJDNSwgMHgxMjQ0LA0KKyAgICAweDhCQzYsIDB4OEJDNiwgMHgwRDRELCAweDhCQzcsIDB4OEJDNywgMHg0QjJGLCAweDhCQzgsIDB4OEJDOCwgMHgxMTRBLA0KKyAgICAweDhCQzksIDB4OEJDOSwgMHgwREQ0LCAweDhCQ0EsIDB4OEJDQSwgMHgxMTkwLCAweDhCQ0IsIDB4OEJDQiwgMHgxMzIwLA0KKyAgICAweDhCQ0MsIDB4OEJDQywgMHgxMURFLCAweDhCQ0QsIDB4OEJDRCwgMHgwNTRELCAweDhCQ0UsIDB4OEJDRSwgMHgxMzIyLA0KKyAgICAweDhCQ0YsIDB4OEJDRiwgMHgxMzIxLCAweDhCRDAsIDB4OEJEMCwgMHg0QjMwLCAweDhCRDEsIDB4OEJEMSwgMHgxMDcyLA0KKyAgICAweDhCRDIsIDB4OEJENCwgMHgxMzIzLCAweDhCRDUsIDB4OEJENSwgMHgwRDZCLCAweDhCRDYsIDB4OEJENiwgMHgxMzI2LA0KKyAgICAweDhCRDcsIDB4OEJENywgMHgwRDQyLCAweDhCRDgsIDB4OEJEOSwgMHgxMzI3LCAweDhCREEsIDB4OEJEQSwgMHgwNEY0LA0KKyAgICAweDhCREIsIDB4OEJEQiwgMHgxMUVFLCAweDhCREMsIDB4OEJEQywgMHgxMzI5LCAweDhCREQsIDB4OEJERCwgMHgwN0M1LA0KKyAgICAweDhCREUsIDB4OEJERSwgMHgwNThGLCAweDhCREYsIDB4OEJFMCwgMHgxMzJBLCAweDhCRTEsIDB4OEJFMSwgMHgwNzQ3LA0KKyAgICAweDhCRTIsIDB4OEJFMiwgMHgwRkQ4LCAweDhCRTMsIDB4OEJFMywgMHgxMDZGLCAweDhCRTQsIDB4OEJFNCwgMHgxMzJDLA0KKyAgICAweDhCRTUsIDB4OEJFNSwgMHgwNkJFLCAweDhCRTYsIDB4OEJFNiwgMHgwRjU3LCAweDhCRTcsIDB4OEJFNywgMHgwNEI2LA0KKyAgICAweDhCRTgsIDB4OEJFOSwgMHgxMzJELCAweDhCRUEsIDB4OEJFQSwgMHg0QjMxLCAweDhCRUIsIDB4OEJFQiwgMHgwOEJDLA0KKyAgICAweDhCRUMsIDB4OEJFQywgMHgwRUVCLCAweDhCRUQsIDB4OEJFRCwgMHgxMEQ0LCAweDhCRUUsIDB4OEJFRSwgMHgxMzJGLA0KKyAgICAweDhCRUYsIDB4OEJFRiwgMHgwRjAyLCAweDhCRjAsIDB4OEJGMCwgMHgxMzMwLCAweDhCRjEsIDB4OEJGMSwgMHgxMEJBLA0KKyAgICAweDhCRjIsIDB4OEJGMiwgMHgwN0ZBLCAweDhCRjMsIDB4OEJGMywgMHgxMzMxLCAweDhCRjQsIDB4OEJGNCwgMHgwREFBLA0KKyAgICAweDhCRjUsIDB4OEJGNSwgMHgwREM1LCAweDhCRjYsIDB4OEJGNiwgMHgxMzMyLCAweDhCRjcsIDB4OEJGNywgMHgwQzY4LA0KKyAgICAweDhCRjgsIDB4OEJGOCwgMHgxMUVELCAweDhCRjksIDB4OEJGOSwgMHgxMzMzLCAweDhCRkEsIDB4OEJGQSwgMHgwQjc2LA0KKyAgICAweDhCRkIsIDB4OEJGQiwgMHgwNjAwLCAweDhCRkMsIDB4OEJGQywgMHgxMzM0LCAweDhCRkQsIDB4OEJGRCwgMHgwNjY5LA0KKyAgICAweDhCRkUsIDB4OEJGRSwgMHgwOTVCLCAweDhCRkYsIDB4OEJGRiwgMHgxMzM1LCAweDhDMDAsIDB4OEMwMCwgMHgxMzM2LA0KKyAgICAweDhDMDEsIDB4OEMwMSwgMHgwREEyLCAweDhDMDIsIDB4OEMwMiwgMHgxMzM3LCAweDhDMDMsIDB4OEMwMywgMHgwNUQ4LA0KKyAgICAweDhDMDQsIDB4OEMwNCwgMHgxMzM4LCAweDhDMDUsIDB4OEMwNSwgMHgwQTBCLCAweDhDMDYsIDB4OEMwNiwgMHgxMjE4LA0KKyAgICAweDhDMDcsIDB4OEMwNywgMHgxMzM5LCAweDhDMDgsIDB4OEMwOCwgMHgwRTBCLCAweDhDMDksIDB4OEMwOSwgMHg0QjMyLA0KKyAgICAweDhDMEEsIDB4OEMwQSwgMHgxMDcxLCAweDhDMEIsIDB4OEMwQiwgMHgwQjE0LCAweDhDMEMsIDB4OEMwQywgMHgxMzNBLA0KKyAgICAweDhDMEQsIDB4OEMwRCwgMHgwNURFLCAweDhDMEUsIDB4OEMwRSwgMHgwN0U2LCAweDhDMEYsIDB4OEMwRiwgMHgxMzNCLA0KKyAgICAweDhDMTAsIDB4OEMxMCwgMHgwRjdFLCAweDhDMTEsIDB4OEMxMiwgMHgxMzNDLCAweDhDMTMsIDB4OEMxMywgMHgwRUNDLA0KKyAgICAweDhDMTQsIDB4OEMxNiwgMHgxMzNFLCAweDhDMTcsIDB4OEMxNywgMHgwNEJFLCAweDhDMTgsIDB4OEMxOCwgMHgxMzQzLA0KKyAgICAweDhDMTksIDB4OEMxOSwgMHgxMzQxLCAweDhDMUEsIDB4OEMxQSwgMHgxMDExLCAweDhDMUIsIDB4OEMxQiwgMHgxMzQyLA0KKyAgICAweDhDMUMsIDB4OEMxQywgMHgwQURBLCAweDhDMUQsIDB4OEMxRCwgMHgxMzQ0LCAweDhDMUUsIDB4OEMxRSwgMHg0QjMzLA0KKyAgICAweDhDMUYsIDB4OEMyMSwgMHgxMzQ1LCAweDhDMjIsIDB4OEMyMiwgMHgwRjg2LCAweDhDMjMsIDB4OEMyMywgMHgxMDJDLA0KKyAgICAweDhDMjQsIDB4OEMyNCwgMHgwNDA0LCAweDhDMjUsIDB4OEMyNSwgMHgxMzQ4LCAweDhDMjYsIDB4OEMyNiwgMHgwQzI4LA0KKyAgICAweDhDMjcsIDB4OEMyNywgMHgxMzQ5LCAweDhDMjgsIDB4OEMyOCwgMHgwOEM4LCAweDhDMjksIDB4OEMyOSwgMHgwQUE2LA0KKyAgICAweDhDMkEsIDB4OEMyQiwgMHgxMzRBLCAweDhDMkMsIDB4OEMyQywgMHgwQjAyLCAweDhDMkQsIDB4OEMyRCwgMHgwRTBBLA0KKyAgICAweDhDMkUsIDB4OEMyRiwgMHgxMzRDLCAweDhDMzAsIDB4OEMzMCwgMHgwOUE5LCAweDhDMzEsIDB4OEMzMSwgMHgwQkY2LA0KKyAgICAweDhDMzIsIDB4OEMzMywgMHgxMzRFLCAweDhDMzQsIDB4OEMzNCwgMHgwQzMxLCAweDhDMzUsIDB4OEMzNiwgMHgxMzUwLA0KKyAgICAweDhDMzcsIDB4OEMzNywgMHgwNzIxLCAweDhDMzgsIDB4OEM0MCwgMHg0QjM0LCAweDhDNDEsIDB4OEM0MSwgMHgwODAyLA0KKyAgICAweDhDNDIsIDB4OEM0NSwgMHg0QjNELCAweDhDNDYsIDB4OEM0NiwgMHgwNUY4LCAweDhDNDcsIDB4OEM0NywgMHgxQ0Y2LA0KKyAgICAweDhDNDgsIDB4OEM0OCwgMHgyMEM4LCAweDhDNDksIDB4OEM0OSwgMHgxQ0Y3LCAweDhDNEEsIDB4OEM0QiwgMHg0QjQxLA0KKyAgICAweDhDNEMsIDB4OEM0QywgMHgwRTk0LCAweDhDNEQsIDB4OEM0RiwgMHg0QjQzLCAweDhDNTAsIDB4OEM1MCwgMHgxRUZELA0KKyAgICAweDhDNTEsIDB4OEM1NCwgMHg0QjQ2LCAweDhDNTUsIDB4OEM1NSwgMHgxRDE1LCAweDhDNTYsIDB4OEM1OSwgMHg0QjRBLA0KKyAgICAweDhDNUEsIDB4OEM1QSwgMHgxOTkwLCAweDhDNUIsIDB4OEM2MCwgMHg0QjRFLCAweDhDNjEsIDB4OEM2MSwgMHgwRjYwLA0KKyAgICAweDhDNjIsIDB4OEM2MiwgMHgwN0Q0LCAweDhDNjMsIDB4OEM2OSwgMHg0QjU0LCAweDhDNkEsIDB4OEM2QSwgMHgwNzc3LA0KKyAgICAweDhDNkIsIDB4OEM2QiwgMHgxMEU4LCAweDhDNkMsIDB4OEM3MiwgMHg0QjVCLCAweDhDNzMsIDB4OEM3MywgMHgxNURELA0KKyAgICAweDhDNzQsIDB4OEM3NywgMHg0QjYyLCAweDhDNzgsIDB4OEM3OCwgMHgxRDUwLCAweDhDNzksIDB4OEM3OSwgMHgwNDEzLA0KKyAgICAweDhDN0EsIDB4OEM3QSwgMHgwNEI5LCAweDhDN0IsIDB4OEM4MSwgMHg0QjY2LCAweDhDODIsIDB4OEM4MiwgMHgxRDUxLA0KKyAgICAweDhDODMsIDB4OEM4NCwgMHg0QjZELCAweDhDODUsIDB4OEM4NSwgMHgxRDUzLCAweDhDODYsIDB4OEM4OCwgMHg0QjZGLA0KKyAgICAweDhDODksIDB4OEM4OSwgMHgwNzg4LCAweDhDOEEsIDB4OEM4QSwgMHgxRDUyLCAweDhDOEIsIDB4OEM4QiwgMHg0QjcyLA0KKyAgICAweDhDOEMsIDB4OEM4QywgMHgwQUI3LCAweDhDOEQsIDB4OEM5MywgMHg0QjczLCAweDhDOTQsIDB4OEM5NCwgMHgxRDU1LA0KKyAgICAweDhDOTUsIDB4OEM5NywgMHg0QjdBLCAweDhDOTgsIDB4OEM5OCwgMHgxRDU0LCAweDhDOTksIDB4OEM5QywgMHg0QjdELA0KKyAgICAweDhDOUQsIDB4OEM5RCwgMHgxRTNCLCAweDhDOUUsIDB4OEM5RSwgMHgyMjdGLCAweDhDOUYsIDB4OEM5RiwgMHg0QjgxLA0KKyAgICAweDhDQTAsIDB4OENBMCwgMHgxRjBDLCAweDhDQTEsIDB4OENBMSwgMHgxRTU5LCAweDhDQTIsIDB4OENBMiwgMHgxRjI0LA0KKyAgICAweDhDQTMsIDB4OENBNiwgMHg0QjgyLCAweDhDQTcsIDB4OENBNywgMHgyMEJBLCAweDhDQTgsIDB4OENBOCwgMHgxRjY1LA0KKyAgICAweDhDQTksIDB4OENBOSwgMHgxRUYwLCAweDhDQUEsIDB4OENBQSwgMHgyMTY0LCAweDhDQUIsIDB4OENBQiwgMHgxRjMwLA0KKyAgICAweDhDQUMsIDB4OENBQywgMHgyMjYxLCAweDhDQUQsIDB4OENBRSwgMHg0Qjg2LCAweDhDQUYsIDB4OENBRiwgMHgyMkEyLA0KKyAgICAweDhDQjAsIDB4OENCMCwgMHgyNEFCLCAweDhDQjEsIDB4OENCMSwgMHg0Qjg4LCAweDhDQjIsIDB4OENCMiwgMHgyNEFGLA0KKyAgICAweDhDQjMsIDB4OENCMywgMHgxRUU4LCAweDhDQjQsIDB4OENCNCwgMHgxRjM5LCAweDhDQjUsIDB4OENCNSwgMHg0Qjg5LA0KKyAgICAweDhDQjYsIDB4OENCNiwgMHgxRTQ4LCAweDhDQjcsIDB4OENCNywgMHgyMDcwLCAweDhDQjgsIDB4OENCOCwgMHgxRUE4LA0KKyAgICAweDhDQjksIDB4OENCOSwgMHg0QjhBLCAweDhDQkEsIDB4OENCQSwgMHgyNEFDLCAweDhDQkIsIDB4OENCQiwgMHgxRUY3LA0KKyAgICAweDhDQkMsIDB4OENCQywgMHgyMTc2LCAweDhDQkQsIDB4OENCRCwgMHgyNEFELCAweDhDQkUsIDB4OENCRSwgMHg0QjhCLA0KKyAgICAweDhDQkYsIDB4OENCRiwgMHgyMDdCLCAweDhDQzAsIDB4OENDMCwgMHgxRjQ1LCAweDhDQzEsIDB4OENDMSwgMHgyNEFBLA0KKyAgICAweDhDQzIsIDB4OENDMiwgMHgyMDRCLCAweDhDQzMsIDB4OENDMywgMHgyMDJGLCAweDhDQzQsIDB4OENDNCwgMHgxRjVBLA0KKyAgICAweDhDQzUsIDB4OENDNSwgMHgyNEIwLCAweDhDQzYsIDB4OENDNiwgMHg0QjhDLCAweDhDQzcsIDB4OENDNywgMHgyMkI3LA0KKyAgICAweDhDQzgsIDB4OENDOCwgMHgxRjdGLCAweDhDQzksIDB4OENDOSwgMHg0QjhELCAweDhDQ0EsIDB4OENDQSwgMHgyMjY1LA0KKyAgICAweDhDQ0IsIDB4OENEMCwgMHg0QjhFLCAweDhDRDEsIDB4OENEMSwgMHgyNEIyLCAweDhDRDIsIDB4OENEMiwgMHgyMTFCLA0KKyAgICAweDhDRDMsIDB4OENEMywgMHgxRTUxLCAweDhDRDQsIDB4OENENCwgMHg0Qjk0LCAweDhDRDUsIDB4OENENSwgMHgyNEI0LA0KKyAgICAweDhDRDYsIDB4OENEOSwgMHg0Qjk1LCAweDhDREEsIDB4OENEQSwgMHgyNEIzLCAweDhDREIsIDB4OENEQiwgMHg0Qjk5LA0KKyAgICAweDhDREMsIDB4OENEQywgMHgxRTlGLCAweDhDREQsIDB4OENERCwgMHg0QjlBLCAweDhDREUsIDB4OENERSwgMHgyMTE4LA0KKyAgICAweDhDREYsIDB4OENERiwgMHg0QjlCLCAweDhDRTAsIDB4OENFMCwgMHgyMEI0LCAweDhDRTEsIDB4OENFMSwgMHgyM0FGLA0KKyAgICAweDhDRTIsIDB4OENFMiwgMHgyMUJCLCAweDhDRTMsIDB4OENFMywgMHgyMDcyLCAweDhDRTQsIDB4OENFNCwgMHgxRjk1LA0KKyAgICAweDhDRTUsIDB4OENFNSwgMHg0QjlDLCAweDhDRTYsIDB4OENFNiwgMHgxRjBBLCAweDhDRTcsIDB4OENFNywgMHgyNEI2LA0KKyAgICAweDhDRTgsIDB4OENFOSwgMHg0QjlELCAweDhDRUEsIDB4OENFQSwgMHgyMjkxLCAweDhDRUIsIDB4OENFQiwgMHgyNEI1LA0KKyAgICAweDhDRUMsIDB4OENFQywgMHgyMjc4LCAweDhDRUQsIDB4OENFRCwgMHgxRUQ0LCAweDhDRUUsIDB4OENGMywgMHg0QjlGLA0KKyAgICAweDhDRjQsIDB4OENGNCwgMHgxRkYzLCAweDhDRjUsIDB4OENGOSwgMHg0QkE1LCAweDhDRkEsIDB4OENGQSwgMHgyMkE5LA0KKyAgICAweDhDRkIsIDB4OENGQiwgMHgyNEI3LCAweDhDRkMsIDB4OENGQywgMHgxRjI4LCAweDhDRkQsIDB4OENGRCwgMHgyMTA5LA0KKyAgICAweDhDRkUsIDB4OENGRSwgMHgyMkM3LCAweDhDRkYsIDB4OENGRiwgMHg0QkFBLCAweDhEMDAsIDB4OEQwMywgMHg0QkFCLA0KKyAgICAweDhEMDQsIDB4OEQwNCwgMHgyNEFFLCAweDhEMDUsIDB4OEQwNSwgMHgyMkIxLCAweDhEMDYsIDB4OEQwNywgMHg0QkFGLA0KKyAgICAweDhEMDgsIDB4OEQwOCwgMHgyMjY2LCAweDhEMDksIDB4OEQwOSwgMHg0QkIxLCAweDhEMEEsIDB4OEQwQSwgMHgyMjVCLA0KKyAgICAweDhEMEIsIDB4OEQwQiwgMHgyMkM0LCAweDhEMEMsIDB4OEQwQywgMHg0QkIyLCAweDhEMEQsIDB4OEQwRCwgMHgyMTE1LA0KKyAgICAweDhEMEUsIDB4OEQwRSwgMHg0QkIzLCAweDhEMEYsIDB4OEQwRiwgMHgyMjJBLCAweDhEMTAsIDB4OEQxMCwgMHgyNEIxLA0KKyAgICAweDhEMTEsIDB4OEQxNSwgMHg0QkI0LCAweDhEMTYsIDB4OEQxNiwgMHgyMTNELCAweDhEMTcsIDB4OEQxQSwgMHg0QkI5LA0KKyAgICAweDhEMUIsIDB4OEQxQiwgMHgxRjE1LCAweDhEMUMsIDB4OEQxQywgMHgyMjVDLCAweDhEMUQsIDB4OEQxRCwgMHgwNDFELA0KKyAgICAweDhEMUUsIDB4OEQxRSwgMHgxMThCLCAweDhEMUYsIDB4OEQxRiwgMHgwNkI1LCAweDhEMjAsIDB4OEQyMCwgMHg0QkJELA0KKyAgICAweDhEMjEsIDB4OEQyMSwgMHgwNzBBLCAweDhEMjIsIDB4OEQyMiwgMHgwNDhELCAweDhEMjMsIDB4OEQyMywgMHgxMTMzLA0KKyAgICAweDhEMjQsIDB4OEQyNCwgMHgwRjNBLCAweDhEMjUsIDB4OEQyNSwgMHgwM0U3LCAweDhEMjYsIDB4OEQyNiwgMHgxMTZDLA0KKyAgICAweDhEMjcsIDB4OEQyNywgMHgwODBBLCAweDhEMjgsIDB4OEQyOCwgMHgxMUM5LCAweDhEMjksIDB4OEQyOSwgMHgwNjU0LA0KKyAgICAweDhEMkEsIDB4OEQyQSwgMHgwRTAzLCAweDhEMkIsIDB4OEQyQiwgMHgwQkQ1LCAweDhEMkMsIDB4OEQyQywgMHgwNDRBLA0KKyAgICAweDhEMkQsIDB4OEQyRCwgMHgwNzEzLCAweDhEMkUsIDB4OEQyRSwgMHgxMUZCLCAweDhEMkYsIDB4OEQyRiwgMHgwNzNBLA0KKyAgICAweDhEMzAsIDB4OEQzMCwgMHgwNjNFLCAweDhEMzEsIDB4OEQzMSwgMHgwODZELCAweDhEMzIsIDB4OEQzMywgMHgxOTJDLA0KKyAgICAweDhEMzQsIDB4OEQzNCwgMHgwRTRDLCAweDhEMzUsIDB4OEQzNSwgMHgwNzRDLCAweDhEMzYsIDB4OEQzNiwgMHgxOTJFLA0KKyAgICAweDhEMzcsIDB4OEQzNywgMHgwNTdFLCAweDhEMzgsIDB4OEQzOCwgMHgwQUI4LCAweDhEMzksIDB4OEQzOSwgMHgwNjZFLA0KKyAgICAweDhEM0EsIDB4OEQzQSwgMHgwNzhGLCAweDhEM0IsIDB4OEQzQiwgMHgxOTJGLCAweDhEM0MsIDB4OEQzQywgMHgxMTM3LA0KKyAgICAweDhEM0QsIDB4OEQzRCwgMHgxOTMwLCAweDhEM0UsIDB4OEQzRSwgMHgwODQ5LCAweDhEM0YsIDB4OEQzRiwgMHgwN0Y0LA0KKyAgICAweDhENDAsIDB4OEQ0MCwgMHgxOTMxLCAweDhENDEsIDB4OEQ0MSwgMHgwQTI3LCAweDhENDIsIDB4OEQ0MiwgMHgwQTVGLA0KKyAgICAweDhENDMsIDB4OEQ0MywgMHgxMTIyLCAweDhENDQsIDB4OEQ0NCwgMHgxMjI3LCAweDhENDUsIDB4OEQ0NiwgMHgxOTMyLA0KKyAgICAweDhENDcsIDB4OEQ0NywgMHgxOTM2LCAweDhENDgsIDB4OEQ0OSwgMHgxOTM0LCAweDhENEEsIDB4OEQ0QSwgMHgwRDE3LA0KKyAgICAweDhENEIsIDB4OEQ0QiwgMHgwNkFFLCAweDhENEMsIDB4OEQ0QywgMHgwNjAzLCAweDhENEQsIDB4OEQ0RCwgMHgxOTM3LA0KKyAgICAweDhENEUsIDB4OEQ0RSwgMHgwRDgxLCAweDhENEYsIDB4OEQ0RiwgMHgwRDA2LCAweDhENTAsIDB4OEQ1MCwgMHgwNTUwLA0KKyAgICAweDhENTEsIDB4OEQ1MiwgMHg0QkJFLCAweDhENTMsIDB4OEQ1MywgMHgxNjNCLCAweDhENTQsIDB4OEQ1NCwgMHgwQkEzLA0KKyAgICAweDhENTUsIDB4OEQ1NSwgMHgxOTM4LCAweDhENTYsIDB4OEQ1NiwgMHgwOUEwLCAweDhENTcsIDB4OEQ1NywgMHg0QkMwLA0KKyAgICAweDhENTgsIDB4OEQ1OCwgMHgxMjE1LCAweDhENTksIDB4OEQ1OSwgMHgxOTM5LCAweDhENUEsIDB4OEQ1QSwgMHgxMjA5LA0KKyAgICAweDhENUIsIDB4OEQ1QiwgMHgwQ0Q3LCAweDhENUMsIDB4OEQ1QywgMHgxMjg5LCAweDhENUQsIDB4OEQ1RCwgMHgxMjgzLA0KKyAgICAweDhENUUsIDB4OEQ1RSwgMHgxMTIxLCAweDhENUYsIDB4OEQ1RiwgMHg0QkMxLCAweDhENjAsIDB4OEQ2MCwgMHgxMTNDLA0KKyAgICAweDhENjEsIDB4OEQ2MSwgMHgwQ0ZELCAweDhENjIsIDB4OEQ2MiwgMHgxMDkzLCAweDhENjMsIDB4OEQ2MywgMHgwNkNFLA0KKyAgICAweDhENjQsIDB4OEQ2NCwgMHgwNTA1LCAweDhENjUsIDB4OEQ2NSwgMHg0QkMyLCAweDhENjYsIDB4OEQ2NiwgMHgwRDFCLA0KKyAgICAweDhENjcsIDB4OEQ2NywgMHgxQ0Y0LCAweDhENjgsIDB4OEQ2QSwgMHg0QkMzLCAweDhENkIsIDB4OEQ2QiwgMHgwNzhDLA0KKyAgICAweDhENkMsIDB4OEQ2QywgMHg0QkM2LCAweDhENkQsIDB4OEQ2RCwgMHgxQ0Y1LCAweDhENkUsIDB4OEQ2RiwgMHg0QkM3LA0KKyAgICAweDhENzAsIDB4OEQ3MCwgMHgxMjNDLCAweDhENzEsIDB4OEQ3MiwgMHg0QkM5LCAweDhENzMsIDB4OEQ3MywgMHgxQ0VGLA0KKyAgICAweDhENzQsIDB4OEQ3NCwgMHgwNkFCLCAweDhENzUsIDB4OEQ3NSwgMHgxMTc1LCAweDhENzYsIDB4OEQ3NiwgMHgwNkNBLA0KKyAgICAweDhENzcsIDB4OEQ3NywgMHgwQzBGLCAweDhENzgsIDB4OEQ4MCwgMHg0QkNCLCAweDhEODEsIDB4OEQ4MSwgMHgwNEU4LA0KKyAgICAweDhEODIsIDB4OEQ4MywgMHg0QkQ0LCAweDhEODQsIDB4OEQ4NCwgMHgxQ0YwLCAweDhEODUsIDB4OEQ4NSwgMHgwNEQxLA0KKyAgICAweDhEODYsIDB4OEQ4OSwgMHg0QkQ2LCAweDhEOEEsIDB4OEQ4QSwgMHgxMTAwLCAweDhEOEIsIDB4OEQ4QiwgMHgwQzc0LA0KKyAgICAweDhEOEMsIDB4OEQ5MCwgMHg0QkRBLCAweDhEOTEsIDB4OEQ5MSwgMHgxQ0YyLCAweDhEOTIsIDB4OEQ5MywgMHg0QkRGLA0KKyAgICAweDhEOTQsIDB4OEQ5NCwgMHgxQ0YxLCAweDhEOTUsIDB4OEQ5NSwgMHgxRjE0LCAweDhEOTYsIDB4OEQ5OCwgMHg0QkUxLA0KKyAgICAweDhEOTksIDB4OEQ5OSwgMHgyMjdBLCAweDhEOUEsIDB4OEQ5RSwgMHg0QkU0LCAweDhEOUYsIDB4OEQ5RiwgMHgwRTFFLA0KKyAgICAweDhEQTAsIDB4OERBMiwgMHg0QkU5LCAweDhEQTMsIDB4OERBMywgMHgwQzdGLCAweDhEQTQsIDB4OERBNywgMHg0QkVDLA0KKyAgICAweDhEQTgsIDB4OERBOCwgMHgyMEVFLCAweDhEQTksIDB4OERCMCwgMHg0QkYwLCAweDhEQjEsIDB4OERCMSwgMHgxQ0YzLA0KKyAgICAweDhEQjIsIDB4OERCMiwgMHgyNUY4LCAweDhEQjMsIDB4OERCMywgMHgxMjQwLCAweDhEQjQsIDB4OERCNCwgMHgwQjgwLA0KKyAgICAweDhEQjUsIDB4OERCNSwgMHgxRDFDLCAweDhEQjYsIDB4OERCNywgMHg0QkY4LCAweDhEQjgsIDB4OERCOCwgMHgxRDE3LA0KKyAgICAweDhEQjksIDB4OERCOSwgMHg0QkZBLCAweDhEQkEsIDB4OERCQSwgMHgxRDFGLCAweDhEQkIsIDB4OERCQiwgMHg0QkZCLA0KKyAgICAweDhEQkMsIDB4OERCQywgMHgxRDFFLCAweDhEQkQsIDB4OERCRCwgMHg0QkZDLCAweDhEQkUsIDB4OERCRSwgMHgxMUI5LA0KKyAgICAweDhEQkYsIDB4OERCRiwgMHgxRDFELCAweDhEQzAsIDB4OERDMiwgMHg0QkZELCAweDhEQzMsIDB4OERDMywgMHgxMTAxLA0KKyAgICAweDhEQzQsIDB4OERDNCwgMHgxRDIwLCAweDhEQzUsIDB4OERDNSwgMHg0QzAwLCAweDhEQzYsIDB4OERDNiwgMHgxRDI4LA0KKyAgICAweDhEQzcsIDB4OERDQSwgMHg0QzAxLCAweDhEQ0IsIDB4OERDQiwgMHgwM0RBLCAweDhEQ0MsIDB4OERDQywgMHgwNUQ5LA0KKyAgICAweDhEQ0QsIDB4OERDRCwgMHg0QzA1LCAweDhEQ0UsIDB4OERDRiwgMHgxRDI1LCAweDhERDAsIDB4OEREMCwgMHg0QzA2LA0KKyAgICAweDhERDEsIDB4OEREMSwgMHgwQjlELCAweDhERDIsIDB4OERENSwgMHg0QzA3LCAweDhERDYsIDB4OERENywgMHgxRDIxLA0KKyAgICAweDhERDgsIDB4OEREOSwgMHg0QzBCLCAweDhEREEsIDB4OEREQSwgMHgxRDIzLCAweDhEREIsIDB4OEREQiwgMHgxRDI3LA0KKyAgICAweDhEREMsIDB4OEREQywgMHg0QzBELCAweDhEREQsIDB4OERERCwgMHgwOTBGLCAweDhEREUsIDB4OERERSwgMHgxRDI0LA0KKyAgICAweDhEREYsIDB4OERERiwgMHgwNkY1LCAweDhERTAsIDB4OERFMiwgMHg0QzBFLCAweDhERTMsIDB4OERFMywgMHgxRDJDLA0KKyAgICAweDhERTQsIDB4OERFNCwgMHgxRDJGLCAweDhERTUsIDB4OERFNywgMHg0QzExLCAweDhERTgsIDB4OERFOCwgMHgwOTc0LA0KKyAgICAweDhERTksIDB4OERFOSwgMHg0QzE0LCAweDhERUEsIDB4OERFQSwgMHgwNzRCLCAweDhERUIsIDB4OERFQiwgMHgxRDE4LA0KKyAgICAweDhERUMsIDB4OERFQywgMHgxRDI5LCAweDhERUQsIDB4OERFRSwgMHg0QzE1LCAweDhERUYsIDB4OERFRiwgMHgwQTVFLA0KKyAgICAweDhERjAsIDB4OERGMiwgMHg0QzE3LCAweDhERjMsIDB4OERGMywgMHgwRTRCLCAweDhERjQsIDB4OERGNCwgMHg0QzFBLA0KKyAgICAweDhERjUsIDB4OERGNSwgMHgwODZDLCAweDhERjYsIDB4OERGNiwgMHg0QzFCLCAweDhERjcsIDB4OERGOCwgMHgxRDJBLA0KKyAgICAweDhERjksIDB4OERGOSwgMHgxRDJELCAweDhERkEsIDB4OERGQSwgMHgwNjI0LCAweDhERkIsIDB4OERGQiwgMHgxRDJFLA0KKyAgICAweDhERkMsIDB4OERGQywgMHg0QzFDLCAweDhERkQsIDB4OERGRCwgMHgxRDMxLCAweDhERkUsIDB4OERGRiwgMHg0QzFELA0KKyAgICAweDhFMDAsIDB4OEUwNCwgMHg0QzFGLCAweDhFMDUsIDB4OEUwNSwgMHgxRDE5LCAweDhFMDYsIDB4OEUwOCwgMHg0QzI0LA0KKyAgICAweDhFMDksIDB4OEUwOSwgMHgxRDMwLCAweDhFMEEsIDB4OEUwQSwgMHgxMEEwLCAweDhFMEIsIDB4OEUwQiwgMHg0QzI3LA0KKyAgICAweDhFMEMsIDB4OEUwQywgMHgwNTExLCAweDhFMEQsIDB4OEUwRSwgMHg0QzI4LCAweDhFMEYsIDB4OEUwRiwgMHgwREY3LA0KKyAgICAweDhFMTAsIDB4OEUxMCwgMHgxRjk0LCAweDhFMTEsIDB4OEUxMywgMHg0QzJBLCAweDhFMTQsIDB4OEUxNCwgMHgxRDMyLA0KKyAgICAweDhFMTUsIDB4OEUxQywgMHg0QzJELCAweDhFMUQsIDB4OEUxRCwgMHgxRDMzLCAweDhFMUUsIDB4OEUxRSwgMHgwOTEwLA0KKyAgICAweDhFMUYsIDB4OEUxRiwgMHgxRDM0LCAweDhFMjAsIDB4OEUyMSwgMHg0QzM1LCAweDhFMjIsIDB4OEUyMiwgMHgwRTMyLA0KKyAgICAweDhFMjMsIDB4OEUyMywgMHgxRDM3LCAweDhFMjQsIDB4OEUyOCwgMHg0QzM3LCAweDhFMjksIDB4OEUyOSwgMHgwNDhGLA0KKyAgICAweDhFMkEsIDB4OEUyQSwgMHgxMjM2LCAweDhFMkIsIDB4OEUyQiwgMHg0QzNDLCAweDhFMkMsIDB4OEUyQywgMHgxRDM1LA0KKyAgICAweDhFMkQsIDB4OEUyRCwgMHg0QzNELCAweDhFMkUsIDB4OEUyRSwgMHgxRDM2LCAweDhFMkYsIDB4OEUyRiwgMHgxRDM4LA0KKyAgICAweDhFMzAsIDB4OEUzMCwgMHg0QzNFLCAweDhFMzEsIDB4OEUzMSwgMHgxRDNFLCAweDhFMzIsIDB4OEUzMywgMHg0QzNGLA0KKyAgICAweDhFMzQsIDB4OEUzNCwgMHgyMjMwLCAweDhFMzUsIDB4OEUzNSwgMHgxRDNDLCAweDhFMzYsIDB4OEUzOCwgMHg0QzQxLA0KKyAgICAweDhFMzksIDB4OEUzOSwgMHgxRDNCLCAweDhFM0EsIDB4OEUzQSwgMHgxRDM5LCAweDhFM0IsIDB4OEUzQywgMHg0QzQ0LA0KKyAgICAweDhFM0QsIDB4OEUzRCwgMHgxRDNELCAweDhFM0UsIDB4OEUzRiwgMHg0QzQ2LCAweDhFNDAsIDB4OEU0MCwgMHgxRDNBLA0KKyAgICAweDhFNDEsIDB4OEU0MiwgMHgxRDQwLCAweDhFNDMsIDB4OEU0MywgMHg0QzQ4LCAweDhFNDQsIDB4OEU0NCwgMHgwRTM2LA0KKyAgICAweDhFNDUsIDB4OEU0NiwgMHg0QzQ5LCAweDhFNDcsIDB4OEU0NywgMHgxNzNCLCAweDhFNDgsIDB4OEU0OCwgMHgwNTk5LA0KKyAgICAweDhFNDksIDB4OEU0OSwgMHgxRDNGLCAweDhFNEEsIDB4OEU0QSwgMHgxRDQ0LCAweDhFNEIsIDB4OEU0QiwgMHgwREY2LA0KKyAgICAweDhFNEMsIDB4OEU0QywgMHgyNUZELCAweDhFNEQsIDB4OEU1MCwgMHg0QzRCLCAweDhFNTEsIDB4OEU1MiwgMHgxRDQyLA0KKyAgICAweDhFNTMsIDB4OEU1NCwgMHg0QzRGLCAweDhFNTUsIDB4OEU1NSwgMHgyNjAwLCAweDhFNTYsIDB4OEU1OCwgMHg0QzUxLA0KKyAgICAweDhFNTksIDB4OEU1OSwgMHgxRDFBLCAweDhFNUEsIDB4OEU2MiwgMHg0QzU0LCAweDhFNjMsIDB4OEU2MywgMHgyNjA2LA0KKyAgICAweDhFNjQsIDB4OEU2NSwgMHg0QzVELCAweDhFNjYsIDB4OEU2NiwgMHgwNDJELCAweDhFNjcsIDB4OEU2OCwgMHg0QzVGLA0KKyAgICAweDhFNjksIDB4OEU2OSwgMHgxRDFCLCAweDhFNkEsIDB4OEU2QiwgMHg0QzYxLCAweDhFNkMsIDB4OEU2QywgMHgwNUE2LA0KKyAgICAweDhFNkQsIDB4OEU2RCwgMHgwNEFCLCAweDhFNkUsIDB4OEU2RSwgMHg0QzYzLCAweDhFNkYsIDB4OEU2RiwgMHgxRDQ4LA0KKyAgICAweDhFNzAsIDB4OEU3MCwgMHgxRDQ1LCAweDhFNzEsIDB4OEU3MSwgMHg0QzY0LCAweDhFNzIsIDB4OEU3MiwgMHgwNjE2LA0KKyAgICAweDhFNzMsIDB4OEU3MywgMHg0QzY1LCAweDhFNzQsIDB4OEU3NCwgMHgxRDQ5LCAweDhFNzUsIDB4OEU3NSwgMHg0QzY2LA0KKyAgICAweDhFNzYsIDB4OEU3NiwgMHgxRDQ2LCAweDhFNzcsIDB4OEU3OSwgMHg0QzY3LCAweDhFN0EsIDB4OEU3QSwgMHgyNUZGLA0KKyAgICAweDhFN0IsIDB4OEU3QiwgMHg0QzZBLCAweDhFN0MsIDB4OEU3QywgMHgxRDQ3LCAweDhFN0QsIDB4OEU3RSwgMHg0QzZCLA0KKyAgICAweDhFN0YsIDB4OEU3RiwgMHgwNTVELCAweDhFODAsIDB4OEU4MCwgMHg0QzZELCAweDhFODEsIDB4OEU4MSwgMHgxMTJELA0KKyAgICAweDhFODIsIDB4OEU4NCwgMHg0QzZFLCAweDhFODUsIDB4OEU4NSwgMHgxRDRBLCAweDhFODYsIDB4OEU4NiwgMHg0QzcxLA0KKyAgICAweDhFODcsIDB4OEU4NywgMHgwNTFFLCAweDhFODgsIDB4OEU4OCwgMHg0QzcyLCAweDhFODksIDB4OEU4OSwgMHgyNUZDLA0KKyAgICAweDhFOEEsIDB4OEU4QSwgMHgxRThDLCAweDhFOEIsIDB4OEU4QiwgMHgyNjAyLCAweDhFOEMsIDB4OEU4QywgMHg0QzczLA0KKyAgICAweDhFOEQsIDB4OEU4RCwgMHgyMjRELCAweDhFOEUsIDB4OEU4RSwgMHg0Qzc0LCAweDhFOEYsIDB4OEU4RiwgMHgxRDRCLA0KKyAgICAweDhFOTAsIDB4OEU5MCwgMHgxRDRELCAweDhFOTEsIDB4OEU5MSwgMHgyNjA0LCAweDhFOTIsIDB4OEU5MiwgMHgyNUZFLA0KKyAgICAweDhFOTMsIDB4OEU5MywgMHgyNjAzLCAweDhFOTQsIDB4OEU5NCwgMHgxRDRDLCAweDhFOTUsIDB4OEU5OSwgMHg0Qzc1LA0KKyAgICAweDhFOUEsIDB4OEU5QSwgMHgyNjAxLCAweDhFOUIsIDB4OEU5QiwgMHg0QzdBLCAweDhFOUMsIDB4OEU5QywgMHgxRDRFLA0KKyAgICAweDhFOUQsIDB4OEU5RCwgMHg0QzdCLCAweDhFOUUsIDB4OEU5RSwgMHgxRDRGLCAweDhFOUYsIDB4OEVBMCwgMHg0QzdDLA0KKyAgICAweDhFQTEsIDB4OEVBMSwgMHgyNjA1LCAweDhFQTIsIDB4OEVBNCwgMHg0QzdFLCAweDhFQTUsIDB4OEVBNSwgMHgxRUEzLA0KKyAgICAweDhFQTYsIDB4OEVBNiwgMHgyNjA4LCAweDhFQTcsIDB4OEVBOSwgMHg0QzgxLCAweDhFQUEsIDB4OEVBQSwgMHgyNjA3LA0KKyAgICAweDhFQUIsIDB4OEVBQiwgMHgwRDI2LCAweDhFQUMsIDB4OEVBQywgMHgwNzAzLCAweDhFQUQsIDB4OEVBRSwgMHg0Qzg0LA0KKyAgICAweDhFQUYsIDB4OEVBRiwgMHgwQzc4LCAweDhFQjAsIDB4OEVCMSwgMHg0Qzg2LCAweDhFQjIsIDB4OEVCMiwgMHgwNjIyLA0KKyAgICAweDhFQjMsIDB4OEVCOSwgMHg0Qzg4LCAweDhFQkEsIDB4OEVCQSwgMHgwRTFDLCAweDhFQkIsIDB4OEVCRiwgMHg0QzhGLA0KKyAgICAweDhFQzAsIDB4OEVDMCwgMHgyMEYwLCAweDhFQzEsIDB4OEVDOSwgMHg0Qzk0LCAweDhFQ0EsIDB4OEVDQSwgMHgxRTdCLA0KKyAgICAweDhFQ0IsIDB4OEVDQiwgMHgyMjY3LCAweDhFQ0MsIDB4OEVDQywgMHgxRjM2LCAweDhFQ0QsIDB4OEVDRCwgMHgxRkQ2LA0KKyAgICAweDhFQ0UsIDB4OEVDRSwgMHgxOEY4LCAweDhFQ0YsIDB4OEVEMSwgMHg0QzlELCAweDhFRDIsIDB4OEVEMiwgMHgyMUUwLA0KKyAgICAweDhFRDMsIDB4OEVEMywgMHg0Q0EwLCAweDhFRDQsIDB4OEVENCwgMHgyNDhDLCAweDhFRDUsIDB4OEVEQSwgMHg0Q0ExLA0KKyAgICAweDhFREIsIDB4OEVEQiwgMHgyNDhELCAweDhFREMsIDB4OEVERSwgMHg0Q0E3LCAweDhFREYsIDB4OEVERiwgMHgyMTAyLA0KKyAgICAweDhFRTAsIDB4OEVFMywgMHg0Q0FBLCAweDhFRTQsIDB4OEVFNCwgMHgyNDk0LCAweDhFRTUsIDB4OEVFQSwgMHg0Q0FFLA0KKyAgICAweDhFRUIsIDB4OEVFQiwgMHgyNDkzLCAweDhFRUMsIDB4OEVGMSwgMHg0Q0I0LCAweDhFRjIsIDB4OEVGMiwgMHgyNDhFLA0KKyAgICAweDhFRjMsIDB4OEVGNywgMHg0Q0JBLCAweDhFRjgsIDB4OEVGOCwgMHgyMjk5LCAweDhFRjksIDB4OEVGOSwgMHgyNDkxLA0KKyAgICAweDhFRkEsIDB4OEVGQSwgMHgyNDk2LCAweDhFRkIsIDB4OEVGQiwgMHgyNDhGLCAweDhFRkMsIDB4OEVGQywgMHgyNDkyLA0KKyAgICAweDhFRkQsIDB4OEVGRCwgMHg0Q0JGLCAweDhFRkUsIDB4OEVGRSwgMHgyNDk3LCAweDhFRkYsIDB4OEVGRiwgMHg0Q0MwLA0KKyAgICAweDhGMDAsIDB4OEYwMiwgMHg0Q0MxLCAweDhGMDMsIDB4OEYwMywgMHgxRkIxLCAweDhGMDQsIDB4OEYwNCwgMHg0Q0M0LA0KKyAgICAweDhGMDUsIDB4OEYwNSwgMHgyNDlBLCAweDhGMDYsIDB4OEYwNiwgMHg0Q0M1LCAweDhGMDcsIDB4OEYwNywgMHgyNDk5LA0KKyAgICAweDhGMDgsIDB4OEYwOCwgMHg0Q0M2LCAweDhGMDksIDB4OEYwOSwgMHgyMjU4LCAweDhGMEEsIDB4OEYwQSwgMHgyNDk4LA0KKyAgICAweDhGMEIsIDB4OEYxMSwgMHg0Q0M3LCAweDhGMTIsIDB4OEYxMiwgMHgyNDlCLCAweDhGMTMsIDB4OEYxMywgMHg0Q0NFLA0KKyAgICAweDhGMTQsIDB4OEYxNCwgMHgxRjA5LCAweDhGMTUsIDB4OEYxNSwgMHgyMEU2LCAweDhGMTYsIDB4OEYxQSwgMHg0Q0NGLA0KKyAgICAweDhGMUIsIDB4OEYxQiwgMHgyMDI2LCAweDhGMUMsIDB4OEYxQywgMHgyNDlGLCAweDhGMUQsIDB4OEYxRCwgMHgxRjU5LA0KKyAgICAweDhGMUUsIDB4OEYxRiwgMHgyNDlELCAweDhGMjAsIDB4OEYyNCwgMHg0Q0Q0LCAweDhGMjUsIDB4OEYyNSwgMHgxRjNCLA0KKyAgICAweDhGMjYsIDB4OEYyNiwgMHgyNDlDLCAweDhGMjcsIDB4OEYyOCwgMHg0Q0Q5LCAweDhGMjksIDB4OEYyOSwgMHgxRTNBLA0KKyAgICAweDhGMkEsIDB4OEYyQSwgMHgyMDVCLCAweDhGMkIsIDB4OEYyRSwgMHg0Q0RCLCAweDhGMkYsIDB4OEYyRiwgMHgxRjcwLA0KKyAgICAweDhGMzAsIDB4OEYzMiwgMHg0Q0RGLCAweDhGMzMsIDB4OEYzMywgMHgyNEEwLCAweDhGMzQsIDB4OEYzNywgMHg0Q0UyLA0KKyAgICAweDhGMzgsIDB4OEYzOCwgMHgyMTNCLCAweDhGMzksIDB4OEYzQSwgMHg0Q0U2LCAweDhGM0IsIDB4OEYzQiwgMHgxRjA3LA0KKyAgICAweDhGM0MsIDB4OEYzRCwgMHg0Q0U4LCAweDhGM0UsIDB4OEYzRSwgMHgyMjcwLCAweDhGM0YsIDB4OEYzRiwgMHgyMjM3LA0KKyAgICAweDhGNDAsIDB4OEY0MSwgMHg0Q0VBLCAweDhGNDIsIDB4OEY0MiwgMHgyNEQyLCAweDhGNDMsIDB4OEY0MywgMHg0Q0VDLA0KKyAgICAweDhGNDQsIDB4OEY0NCwgMHgyMUIzLCAweDhGNDUsIDB4OEY0NSwgMHgyMjQ1LCAweDhGNDYsIDB4OEY0NiwgMHgyNEExLA0KKyAgICAweDhGNDcsIDB4OEY0OCwgMHg0Q0VELCAweDhGNDksIDB4OEY0OSwgMHgyMkE4LCAweDhGNEEsIDB4OEY0QywgMHg0Q0VGLA0KKyAgICAweDhGNEQsIDB4OEY0RCwgMHgyMjdDLCAweDhGNEUsIDB4OEY0RSwgMHgxRkIwLCAweDhGNEYsIDB4OEY1MywgMHg0Q0YyLA0KKyAgICAweDhGNTQsIDB4OEY1NCwgMHgyNEEyLCAweDhGNTUsIDB4OEY1RSwgMHg0Q0Y3LCAweDhGNUYsIDB4OEY1RiwgMHgxRjQ2LA0KKyAgICAweDhGNjAsIDB4OEY2MCwgMHg0RDAxLCAweDhGNjEsIDB4OEY2MSwgMHgyMzgwLCAweDhGNjIsIDB4OEY2MiwgMHgyNDk1LA0KKyAgICAweDhGNjMsIDB4OEY2MywgMHg0RDAyLCAweDhGNjQsIDB4OEY2NCwgMHgyNDkwLCAweDhGNjUsIDB4OEY2NSwgMHg0RDAzLA0KKyAgICAweDhGNjYsIDB4OEY2NiwgMHgwNERBLCAweDhGNjcsIDB4OEY2NywgMHgxMTQxLCAweDhGNjgsIDB4OEY2OCwgMHgwNzQ1LA0KKyAgICAweDhGNjksIDB4OEY2OSwgMHgwRkM0LCAweDhGNkEsIDB4OEY2QSwgMHg0RDA0LCAweDhGNkIsIDB4OEY2QiwgMHgxOEUxLA0KKyAgICAweDhGNkMsIDB4OEY2QywgMHgxMjA3LCAweDhGNkQsIDB4OEY2RCwgMHgxOEUyLCAweDhGNkUsIDB4OEY2RSwgMHgwQTdELA0KKyAgICAweDhGNkYsIDB4OEY2RiwgMHgwQ0M4LCAweDhGNzAsIDB4OEY3MCwgMHgwNzlCLCAweDhGNzEsIDB4OEY3MywgMHgxOEUzLA0KKyAgICAweDhGNzQsIDB4OEY3NCwgMHgxMUUwLCAweDhGNzUsIDB4OEY3NiwgMHgxOEU2LCAweDhGNzcsIDB4OEY3NywgMHgxOEU5LA0KKyAgICAweDhGNzgsIDB4OEY3OCwgMHgxOEU4LCAweDhGNzksIDB4OEY3QSwgMHgxOEVBLCAweDhGN0IsIDB4OEY3QiwgMHgwQzVFLA0KKyAgICAweDhGN0MsIDB4OEY3QywgMHgxOEVDLCAweDhGN0QsIDB4OEY3RCwgMHgxMTFCLCAweDhGN0UsIDB4OEY3RSwgMHgxOEVELA0KKyAgICAweDhGN0YsIDB4OEY3RiwgMHgwODlGLCAweDhGODAsIDB4OEY4MCwgMHg0RDA1LCAweDhGODEsIDB4OEY4MiwgMHgxOEVFLA0KKyAgICAweDhGODMsIDB4OEY4MywgMHgwOEEwLCAweDhGODQsIDB4OEY4NCwgMHgxOEYwLCAweDhGODUsIDB4OEY4NSwgMHgwNkEzLA0KKyAgICAweDhGODYsIDB4OEY4NiwgMHgwQTA3LCAweDhGODcsIDB4OEY4NywgMHgxOEYxLCAweDhGODgsIDB4OEY4OCwgMHgwNDFCLA0KKyAgICAweDhGODksIDB4OEY4OSwgMHgwN0U5LCAweDhGOEEsIDB4OEY4QSwgMHgwNzRFLCAweDhGOEIsIDB4OEY4QiwgMHgxOEYyLA0KKyAgICAweDhGOEMsIDB4OEY4QywgMHg0RDA2LCAweDhGOEQsIDB4OEY4RiwgMHgxOEYzLCAweDhGOTAsIDB4OEY5MCwgMHgwNjk1LA0KKyAgICAweDhGOTEsIDB4OEY5MSwgMHgwODIwLCAweDhGOTIsIDB4OEY5MiwgMHg0RDA3LCAweDhGOTMsIDB4OEY5MywgMHgwRDdCLA0KKyAgICAweDhGOTQsIDB4OEY5NCwgMHgxNTc0LCAweDhGOTUsIDB4OEY5NSwgMHgxMEYyLCAweDhGOTYsIDB4OEY5NiwgMHgwRjJBLA0KKyAgICAweDhGOTcsIDB4OEY5NywgMHgxMTU4LCAweDhGOTgsIDB4OEY5OCwgMHgxOEY2LCAweDhGOTksIDB4OEY5OSwgMHgxMTdGLA0KKyAgICAweDhGOUEsIDB4OEY5QSwgMHgxOEY3LCAweDhGOUIsIDB4OEY5QiwgMHgwRjhDLCAweDhGOUMsIDB4OEY5QywgMHgwNzE1LA0KKyAgICAweDhGOUQsIDB4OEY5RCwgMHg0RDA4LCAweDhGOUUsIDB4OEY5RSwgMHgwNTRBLCAweDhGOUYsIDB4OEY5RiwgMHgwNDQyLA0KKyAgICAweDhGQTAsIDB4OEZBMiwgMHg0RDA5LCAweDhGQTMsIDB4OEZBMywgMHgwOTlDLCAweDhGQTQsIDB4OEZBNSwgMHg0RDBDLA0KKyAgICAweDhGQTYsIDB4OEZBNiwgMHgxRTMwLCAweDhGQTcsIDB4OEZBNywgMHg0RDBFLCAweDhGQTgsIDB4OEZBOSwgMHgwNDRGLA0KKyAgICAweDhGQUEsIDB4OEZBQSwgMHg0RDBGLCAweDhGQUIsIDB4OEZBQiwgMHgwNDUxLCAweDhGQUMsIDB4OEZBQywgMHg0RDEwLA0KKyAgICAweDhGQUQsIDB4OEZBRCwgMHgxRTlELCAweDhGQUUsIDB4OEZBRSwgMHgxRTRCLCAweDhGQUYsIDB4OEZBRiwgMHgxRTRBLA0KKyAgICAweDhGQjAsIDB4OEZCMCwgMHgwNEUyLCAweDhGQjEsIDB4OEZCMSwgMHgwQ0MzLCAweDhGQjIsIDB4OEZCMiwgMHgyMEFBLA0KKyAgICAweDhGQjMsIDB4OEZCNSwgMHg0RDExLCAweDhGQjYsIDB4OEZCNiwgMHgxNzNELCAweDhGQjcsIDB4OEZCOCwgMHg0RDE0LA0KKyAgICAweDhGQjksIDB4OEZCOSwgMHgwNDQ4LCAweDhGQkEsIDB4OEZCQywgMHg0RDE2LCAweDhGQkQsIDB4OEZCRCwgMHgwQTEyLA0KKyAgICAweDhGQkUsIDB4OEZCRSwgMHgwNTcyLCAweDhGQkYsIDB4OEZDMCwgMHg0RDE5LCAweDhGQzEsIDB4OEZDMSwgMHgwQzI1LA0KKyAgICAweDhGQzIsIDB4OEZDMiwgMHgxMEJELCAweDhGQzMsIDB4OEZDMywgMHg0RDFCLCAweDhGQzQsIDB4OEZDNCwgMHgwQzE4LA0KKyAgICAweDhGQzUsIDB4OEZDNSwgMHgwRkUxLCAweDhGQzYsIDB4OEZDNiwgMHg0RDFDLCAweDhGQzcsIDB4OEZDNywgMHgwNzU2LA0KKyAgICAweDhGQzgsIDB4OEZDOCwgMHgwQTlDLCAweDhGQzksIDB4OEZDRCwgMHg0RDFELCAweDhGQ0UsIDB4OEZDRSwgMHgxMDkyLA0KKyAgICAweDhGQ0YsIDB4OEZDRiwgMHg0RDIyLCAweDhGRDAsIDB4OEZEMCwgMHgxMTBFLCAweDhGRDEsIDB4OEZEMSwgMHgwOENELA0KKyAgICAweDhGRDIsIDB4OEZEMiwgMHg0RDIzLCAweDhGRDMsIDB4OEZEMywgMHgxNzNFLCAweDhGRDQsIDB4OEZENCwgMHgwNjUyLA0KKyAgICAweDhGRDUsIDB4OEZENSwgMHgxNzNGLCAweDhGRDYsIDB4OEZENywgMHg0RDI0LCAweDhGRDgsIDB4OEZEOCwgMHgwN0NFLA0KKyAgICAweDhGRDksIDB4OEZEOSwgMHgxMTgzLCAweDhGREEsIDB4OEZEQSwgMHg0RDI2LCAweDhGREIsIDB4OEZEQiwgMHgwOEM5LA0KKyAgICAweDhGREMsIDB4OEZEQywgMHgxMEY5LCAweDhGREQsIDB4OEZERCwgMHgwRUI0LCAweDhGREUsIDB4OEZERSwgMHgwOUY1LA0KKyAgICAweDhGREYsIDB4OEZERiwgMHgwNEZFLCAweDhGRTAsIDB4OEZFMSwgMHg0RDI3LCAweDhGRTIsIDB4OEZFMiwgMHgwRTQ5LA0KKyAgICAweDhGRTMsIDB4OEZFMywgMHg0RDI5LCAweDhGRTQsIDB4OEZFNCwgMHgxNzQyLCAweDhGRTUsIDB4OEZFNSwgMHgxNzQwLA0KKyAgICAweDhGRTYsIDB4OEZFNiwgMHgxNzQ0LCAweDhGRTcsIDB4OEZFNywgMHg0RDJBLCAweDhGRTgsIDB4OEZFOCwgMHgxNzQ2LA0KKyAgICAweDhGRTksIDB4OEZFOSwgMHgxNzQzLCAweDhGRUEsIDB4OEZFQSwgMHgwNUIwLCAweDhGRUIsIDB4OEZFQiwgMHgwQkU3LA0KKyAgICAweDhGRUMsIDB4OEZFQywgMHg0RDJCLCAweDhGRUQsIDB4OEZFRCwgMHgwNURELCAweDhGRUUsIDB4OEZFRSwgMHgxNzQxLA0KKyAgICAweDhGRUYsIDB4OEZFRiwgMHg0RDJDLCAweDhGRjAsIDB4OEZGMCwgMHgwRDhELCAweDhGRjEsIDB4OEZGMiwgMHg0RDJELA0KKyAgICAweDhGRjMsIDB4OEZGMywgMHgxNzQ1LCAweDhGRjQsIDB4OEZGNCwgMHgyNjdCLCAweDhGRjUsIDB4OEZGNiwgMHg0RDJGLA0KKyAgICAweDhGRjcsIDB4OEZGNywgMHgwQUQ5LCAweDhGRjgsIDB4OEZGOCwgMHgwNDJFLCAweDhGRjksIDB4OEZGOSwgMHgwODE2LA0KKyAgICAweDhGRkEsIDB4OEZGQywgMHg0RDMxLCAweDhGRkQsIDB4OEZGRCwgMHgxMjE0LCAweDhGRkUsIDB4OEZGRiwgMHg0RDM0LA0KKyAgICAweDkwMDAsIDB4OTAwMCwgMHgwRTdDLCAweDkwMDEsIDB4OTAwMSwgMHgwREMyLCAweDkwMDIsIDB4OTAwMiwgMHgwRDYxLA0KKyAgICAweDkwMDMsIDB4OTAwMywgMHgwRTI2LCAweDkwMDQsIDB4OTAwNCwgMHgxNzQ4LCAweDkwMDUsIDB4OTAwNSwgMHgxNzQ3LA0KKyAgICAweDkwMDYsIDB4OTAwNiwgMHgwQjQ5LCAweDkwMDcsIDB4OTAwOCwgMHg0RDM2LCAweDkwMDksIDB4OTAwOSwgMHgwRkNBLA0KKyAgICAweDkwMEEsIDB4OTAwQSwgMHgwRkUwLCAweDkwMEIsIDB4OTAwQiwgMHgxNzQ5LCAweDkwMEMsIDB4OTAwQywgMHg0RDM4LA0KKyAgICAweDkwMEQsIDB4OTAwRCwgMHgxNzRDLCAweDkwMEUsIDB4OTAwRSwgMHg0RDM5LCAweDkwMEYsIDB4OTAwRiwgMHgwRTY5LA0KKyAgICAweDkwMTAsIDB4OTAxMCwgMHgxMUVGLCAweDkwMTEsIDB4OTAxMSwgMHgxNzRCLCAweDkwMTIsIDB4OTAxMiwgMHgwNUJFLA0KKyAgICAweDkwMTMsIDB4OTAxMywgMHg0RDNBLCAweDkwMTQsIDB4OTAxNCwgMHgwRTZGLCAweDkwMTUsIDB4OTAxNSwgMHgyM0YyLA0KKyAgICAweDkwMTYsIDB4OTAxNiwgMHgxNzRELCAweDkwMTcsIDB4OTAxNywgMHgwNUY5LCAweDkwMTgsIDB4OTAxOCwgMHg0RDNCLA0KKyAgICAweDkwMTksIDB4OTAxOSwgMHgyMjdFLCAweDkwMUEsIDB4OTAxQSwgMHgwRTU5LCAweDkwMUIsIDB4OTAxQiwgMHgwNzNELA0KKyAgICAweDkwMUMsIDB4OTAxQywgMHg0RDNDLCAweDkwMUQsIDB4OTAxRCwgMHgwRDVDLCAweDkwMUUsIDB4OTAxRSwgMHgwNEY2LA0KKyAgICAweDkwMUYsIDB4OTAxRiwgMHgwRENFLCAweDkwMjAsIDB4OTAyMCwgMHgxMTJGLCAweDkwMjEsIDB4OTAyMSwgMHgxNzRFLA0KKyAgICAweDkwMjIsIDB4OTAyMiwgMHgwNjg3LCAweDkwMjMsIDB4OTAyMywgMHgyMDE5LCAweDkwMjQsIDB4OTAyNSwgMHg0RDNELA0KKyAgICAweDkwMjYsIDB4OTAyNiwgMHgxNzRBLCAweDkwMjcsIDB4OTAyQywgMHg0RDNGLCAweDkwMkQsIDB4OTAyRCwgMHgxNzUxLA0KKyAgICAweDkwMkUsIDB4OTAyRSwgMHgwNTgxLCAweDkwMkYsIDB4OTAyRiwgMHgxNzUyLCAweDkwMzAsIDB4OTAzMSwgMHg0RDQ1LA0KKyAgICAweDkwMzIsIDB4OTAzMiwgMHgxRkJCLCAweDkwMzMsIDB4OTAzNCwgMHg0RDQ3LCAweDkwMzUsIDB4OTAzNiwgMHgxNzRGLA0KKyAgICAweDkwMzcsIDB4OTAzNywgMHg0RDQ5LCAweDkwMzgsIDB4OTAzOCwgMHgxMDY0LCAweDkwMzksIDB4OTAzQSwgMHg0RDRBLA0KKyAgICAweDkwM0IsIDB4OTAzQiwgMHgwQTg2LCAweDkwM0MsIDB4OTAzQywgMHgwNDJGLCAweDkwM0QsIDB4OTAzRCwgMHg0RDRDLA0KKyAgICAweDkwM0UsIDB4OTAzRSwgMHgxMEM3LCAweDkwM0YsIDB4OTA0MCwgMHg0RDRELCAweDkwNDEsIDB4OTA0MSwgMHgwNjFDLA0KKyAgICAweDkwNDIsIDB4OTA0MiwgMHgwREUxLCAweDkwNDMsIDB4OTA0MywgMHg0RDRGLCAweDkwNDQsIDB4OTA0NCwgMHgxNzUzLA0KKyAgICAweDkwNDUsIDB4OTA0NiwgMHg0RDUwLCAweDkwNDcsIDB4OTA0NywgMHgxMERCLCAweDkwNDgsIDB4OTA0QSwgMHg0RDUyLA0KKyAgICAweDkwNEIsIDB4OTA0QiwgMHgyMjUzLCAweDkwNEMsIDB4OTA0QywgMHg0RDU1LCAweDkwNEQsIDB4OTA0RCwgMHgwNDUyLA0KKyAgICAweDkwNEUsIDB4OTA0RSwgMHgxRjNFLCAweDkwNEYsIDB4OTA0RiwgMHgwNjMzLCAweDkwNTAsIDB4OTA1MCwgMHgxNzU2LA0KKyAgICAweDkwNTEsIDB4OTA1MiwgMHgxNzU0LCAweDkwNTMsIDB4OTA1MywgMHgwNUExLCAweDkwNTQsIDB4OTA1NCwgMHgxRUE2LA0KKyAgICAweDkwNTUsIDB4OTA1NSwgMHgyMThFLCAweDkwNTYsIDB4OTA1NiwgMHg0RDU2LCAweDkwNTcsIDB4OTA1NywgMHgxMDRDLA0KKyAgICAweDkwNTgsIDB4OTA1OCwgMHgxNzU4LCAweDkwNTksIDB4OTA1QSwgMHg0RDU3LCAweDkwNUIsIDB4OTA1QiwgMHgxNzVBLA0KKyAgICAweDkwNUMsIDB4OTA1QywgMHgyMUVDLCAweDkwNUQsIDB4OTA1RCwgMHg0RDU5LCAweDkwNUUsIDB4OTA1RSwgMHgxRUJFLA0KKyAgICAweDkwNUYsIDB4OTA1RiwgMHg0RDVBLCAweDkwNjAsIDB4OTA2MCwgMHgyMjRBLCAweDkwNjEsIDB4OTA2MSwgMHg0RDVCLA0KKyAgICAweDkwNjIsIDB4OTA2MiwgMHgxNzU5LCAweDkwNjMsIDB4OTA2MywgMHgwQzJGLCAweDkwNjQsIDB4OTA2NCwgMHg0RDVDLA0KKyAgICAweDkwNjUsIDB4OTA2NSwgMHgxMDJBLCAweDkwNjYsIDB4OTA2NywgMHg0RDVELCAweDkwNjgsIDB4OTA2OCwgMHgxNzU3LA0KKyAgICAweDkwNjksIDB4OTA2OSwgMHgyMTMzLCAweDkwNkEsIDB4OTA2QywgMHg0RDVGLCAweDkwNkQsIDB4OTA2RCwgMHgxMTI1LA0KKyAgICAweDkwNkUsIDB4OTA2RSwgMHgxMTdCLCAweDkwNkYsIDB4OTA3MSwgMHg0RDYyLCAweDkwNzIsIDB4OTA3MiwgMHgxRTg0LA0KKyAgICAweDkwNzMsIDB4OTA3MywgMHg0RDY1LCAweDkwNzQsIDB4OTA3NCwgMHgxNzVDLCAweDkwNzUsIDB4OTA3NSwgMHgxMjRFLA0KKyAgICAweDkwNzYsIDB4OTA3NiwgMHg0RDY2LCAweDkwNzcsIDB4OTA3NywgMHgyMENGLCAweDkwNzgsIDB4OTA3OCwgMHgyMUUyLA0KKyAgICAweDkwNzksIDB4OTA3OSwgMHg0RDY3LCAweDkwN0EsIDB4OTA3QSwgMHgyMjBGLCAweDkwN0IsIDB4OTA3QiwgMHg0RDY4LA0KKyAgICAweDkwN0MsIDB4OTA3QywgMHgyMDI5LCAweDkwN0QsIDB4OTA3RCwgMHgxNzVELCAweDkwN0UsIDB4OTA3RSwgMHg0RDY5LA0KKyAgICAweDkwN0YsIDB4OTA3RiwgMHgwNDQ1LCAweDkwODAsIDB4OTA4MCwgMHgxMDI0LCAweDkwODEsIDB4OTA4MSwgMHgyMDczLA0KKyAgICAweDkwODIsIDB4OTA4MiwgMHgxNzVFLCAweDkwODMsIDB4OTA4MywgMHgxNzYwLCAweDkwODQsIDB4OTA4NCwgMHgxRjU1LA0KKyAgICAweDkwODUsIDB4OTA4NiwgMHg0RDZBLCAweDkwODcsIDB4OTA4NywgMHgyM0YxLCAweDkwODgsIDB4OTA4OCwgMHgxNzVGLA0KKyAgICAweDkwODksIDB4OTA4OSwgMHg0RDZDLCAweDkwOEEsIDB4OTA4QSwgMHgxRTQ2LCAweDkwOEIsIDB4OTA4QiwgMHgxNzYxLA0KKyAgICAweDkwOEMsIDB4OTA4RSwgMHg0RDZELCAweDkwOEYsIDB4OTA4RiwgMHgyMDYzLCAweDkwOTAsIDB4OTA5MCwgMHgyM0YzLA0KKyAgICAweDkwOTEsIDB4OTA5MSwgMHgxMDVGLCAweDkwOTIsIDB4OTA5MiwgMHg0RDcwLCAweDkwOTMsIDB4OTA5MywgMHgwNUFDLA0KKyAgICAweDkwOTQsIDB4OTA5NCwgMHg0RDcxLCAweDkwOTUsIDB4OTA5NSwgMHgxODE3LCAweDkwOTYsIDB4OTA5NiwgMHg0RDcyLA0KKyAgICAweDkwOTcsIDB4OTA5NywgMHgxMzY3LCAweDkwOTgsIDB4OTA5OCwgMHg0RDczLCAweDkwOTksIDB4OTA5OSwgMHgxMzZBLA0KKyAgICAweDkwOUEsIDB4OTA5QSwgMHg0RDc0LCAweDkwOUIsIDB4OTA5QiwgMHgxMzY4LCAweDkwOUMsIDB4OTA5QywgMHg0RDc1LA0KKyAgICAweDkwOUQsIDB4OTA5RCwgMHgxMzY5LCAweDkwOUUsIDB4OTBBMCwgMHg0RDc2LCAweDkwQTEsIDB4OTBBMSwgMHgxMzZDLA0KKyAgICAweDkwQTIsIDB4OTBBMiwgMHgwRjlBLCAweDkwQTMsIDB4OTBBMywgMHgwQjJBLCAweDkwQTQsIDB4OTBBNSwgMHg0RDc5LA0KKyAgICAweDkwQTYsIDB4OTBBNiwgMHgwM0Y5LCAweDkwQTcsIDB4OTBBOSwgMHg0RDdCLCAweDkwQUEsIDB4OTBBQSwgMHgwRjdCLA0KKyAgICAweDkwQUIsIDB4OTBBQiwgMHg0RDdFLCAweDkwQUMsIDB4OTBBQywgMHgxMzZCLCAweDkwQUQsIDB4OTBBRCwgMHg0RDdGLA0KKyAgICAweDkwQUUsIDB4OTBBRSwgMHgxMEFGLCAweDkwQUYsIDB4OTBBRiwgMHgwNzYxLCAweDkwQjAsIDB4OTBCMCwgMHgxMzcyLA0KKyAgICAweDkwQjEsIDB4OTBCMSwgMHgwQzZFLCAweDkwQjIsIDB4OTBCMiwgMHg0RDgwLCAweDkwQjMsIDB4OTBCMywgMHgxMzZFLA0KKyAgICAweDkwQjQsIDB4OTBCNCwgMHgxMzZELCAweDkwQjUsIDB4OTBCNSwgMHgwRDE0LCAweDkwQjYsIDB4OTBCNiwgMHgxMzZGLA0KKyAgICAweDkwQjcsIDB4OTBCNywgMHg0RDgxLCAweDkwQjgsIDB4OTBCOCwgMHgxMzcxLCAweDkwQjksIDB4OTBCOSwgMHgxMjNCLA0KKyAgICAweDkwQkEsIDB4OTBCQSwgMHgxMzcwLCAweDkwQkIsIDB4OTBCQiwgMHgwQTIzLCAweDkwQkMsIDB4OTBCRCwgMHg0RDgyLA0KKyAgICAweDkwQkUsIDB4OTBCRSwgMHgxMzc1LCAweDkwQkYsIDB4OTBDMCwgMHg0RDg0LCAweDkwQzEsIDB4OTBDMSwgMHgxMEQ5LA0KKyAgICAweDkwQzIsIDB4OTBDMywgMHg0RDg2LCAweDkwQzQsIDB4OTBDNCwgMHgxMzc3LCAweDkwQzUsIDB4OTBDNSwgMHgxMzc0LA0KKyAgICAweDkwQzYsIDB4OTBDNiwgMHg0RDg4LCAweDkwQzcsIDB4OTBDNywgMHgxMzc4LCAweDkwQzgsIDB4OTBDOSwgMHg0RDg5LA0KKyAgICAweDkwQ0EsIDB4OTBDQSwgMHgwODhELCAweDkwQ0IsIDB4OTBDRCwgMHg0RDhCLCAweDkwQ0UsIDB4OTBDRSwgMHgwOUI0LA0KKyAgICAweDkwQ0YsIDB4OTBDRiwgMHgxMzczLCAweDkwRDAsIDB4OTBEMCwgMHgxMzc2LCAweDkwRDEsIDB4OTBEMSwgMHgxMUEyLA0KKyAgICAweDkwRDIsIDB4OTBEMiwgMHg0RDhFLCAweDkwRDMsIDB4OTBEMywgMHgxMzc5LCAweDkwRDQsIDB4OTBENiwgMHg0RDhGLA0KKyAgICAweDkwRDcsIDB4OTBENywgMHgxMzdELCAweDkwRDgsIDB4OTBEQSwgMHg0RDkyLCAweDkwREIsIDB4OTBEQiwgMHgxMzdFLA0KKyAgICAweDkwREMsIDB4OTBEQywgMHgxMzdDLCAweDkwREQsIDB4OTBERCwgMHgwNzc5LCAweDkwREUsIDB4OTBERSwgMHg0RDk1LA0KKyAgICAweDkwREYsIDB4OTBERiwgMHgyMzFFLCAweDkwRTAsIDB4OTBFMCwgMHg0RDk2LCAweDkwRTEsIDB4OTBFMSwgMHgwOTMxLA0KKyAgICAweDkwRTIsIDB4OTBFMiwgMHgxMzdCLCAweDkwRTMsIDB4OTBFNSwgMHg0RDk3LCAweDkwRTYsIDB4OTBFNiwgMHgxMzdBLA0KKyAgICAweDkwRTcsIDB4OTBFNywgMHgxMTBBLCAweDkwRTgsIDB4OTBFOCwgMHgwNDg2LCAweDkwRTksIDB4OTBFQSwgMHg0RDlBLA0KKyAgICAweDkwRUIsIDB4OTBFQiwgMHgxMzdGLCAweDkwRUMsIDB4OTBFQywgMHg0RDlDLCAweDkwRUQsIDB4OTBFRCwgMHgwNzUyLA0KKyAgICAweDkwRUUsIDB4OTBFRSwgMHg0RDlELCAweDkwRUYsIDB4OTBFRiwgMHgxMzgwLCAweDkwRjAsIDB4OTBGMywgMHg0RDlFLA0KKyAgICAweDkwRjQsIDB4OTBGNCwgMHgwNEUwLCAweDkwRjUsIDB4OTBGNSwgMHgyMjMzLCAweDkwRjYsIDB4OTBGNywgMHg0REEyLA0KKyAgICAweDkwRjgsIDB4OTBGOCwgMHgwNTg3LCAweDkwRjksIDB4OTBGQywgMHg0REE0LCAweDkwRkQsIDB4OTBGRCwgMHgwNUZCLA0KKyAgICAweDkwRkUsIDB4OTBGRSwgMHgxMzgxLCAweDkwRkYsIDB4OTBGRiwgMHg0REE4LCAweDkxMDAsIDB4OTEwMSwgMHg0REE5LA0KKyAgICAweDkxMDIsIDB4OTEwMiwgMHgwNjM0LCAweDkxMDMsIDB4OTEwMywgMHg0REFCLCAweDkxMDQsIDB4OTEwNCwgMHgxMzgyLA0KKyAgICAweDkxMDUsIDB4OTEwNSwgMHg0REFDLCAweDkxMDYsIDB4OTEwNiwgMHgyMzIwLCAweDkxMDcsIDB4OTEwOCwgMHg0REFELA0KKyAgICAweDkxMDksIDB4OTEwOSwgMHgyMUM3LCAweDkxMEEsIDB4OTExMSwgMHg0REFGLCAweDkxMTIsIDB4OTExMiwgMHgyMkJDLA0KKyAgICAweDkxMTMsIDB4OTExMywgMHg0REI3LCAweDkxMTQsIDB4OTExNCwgMHgyMzFDLCAweDkxMTUsIDB4OTExNSwgMHg0REI4LA0KKyAgICAweDkxMTYsIDB4OTExNiwgMHgyMjUxLCAweDkxMTcsIDB4OTExOCwgMHg0REI5LCAweDkxMTksIDB4OTExOSwgMHgwNDMyLA0KKyAgICAweDkxMUEsIDB4OTExRCwgMHg0REJCLCAweDkxMUUsIDB4OTExRSwgMHgxMzg0LCAweDkxMUYsIDB4OTEyMSwgMHg0REJGLA0KKyAgICAweDkxMjIsIDB4OTEyMiwgMHgxMzgzLCAweDkxMjMsIDB4OTEyMywgMHgxMzg1LCAweDkxMjQsIDB4OTEyNiwgMHg0REMyLA0KKyAgICAweDkxMjcsIDB4OTEyNywgMHgxRUJCLCAweDkxMjgsIDB4OTEyQywgMHg0REM1LCAweDkxMkQsIDB4OTEyRCwgMHgyMjg3LA0KKyAgICAweDkxMkUsIDB4OTEyRSwgMHg0RENBLCAweDkxMkYsIDB4OTEyRiwgMHgxMzg3LCAweDkxMzAsIDB4OTEzMCwgMHgyMDJELA0KKyAgICAweDkxMzEsIDB4OTEzMSwgMHgxMzg2LCAweDkxMzIsIDB4OTEzMiwgMHgxRUFCLCAweDkxMzMsIDB4OTEzMywgMHg0RENCLA0KKyAgICAweDkxMzQsIDB4OTEzNCwgMHgyMzFELCAweDkxMzUsIDB4OTEzNSwgMHg0RENDLCAweDkxMzYsIDB4OTEzNiwgMHgyMzFGLA0KKyAgICAweDkxMzcsIDB4OTEzOCwgMHg0RENELCAweDkxMzksIDB4OTEzOSwgMHgxMzg4LCAweDkxM0EsIDB4OTEzQSwgMHgyMzFCLA0KKyAgICAweDkxM0IsIDB4OTE0MiwgMHg0RENGLCAweDkxNDMsIDB4OTE0MywgMHgxMzg5LCAweDkxNDQsIDB4OTE0NSwgMHg0REQ3LA0KKyAgICAweDkxNDYsIDB4OTE0NiwgMHgxMzhBLCAweDkxNDcsIDB4OTE0NywgMHg0REQ5LCAweDkxNDgsIDB4OTE0OCwgMHgyMzIxLA0KKyAgICAweDkxNDksIDB4OTE0OSwgMHgxMEI0LCAweDkxNEEsIDB4OTE0QSwgMHgxQ0Y4LCAweDkxNEIsIDB4OTE0QiwgMHgwQzcyLA0KKyAgICAweDkxNEMsIDB4OTE0QywgMHgxMjIwLCAweDkxNEQsIDB4OTE0RCwgMHgwQkE1LCAweDkxNEUsIDB4OTE0RiwgMHgxQ0ZBLA0KKyAgICAweDkxNTAsIDB4OTE1MCwgMHgxQ0Y5LCAweDkxNTEsIDB4OTE1MSwgMHg0RERBLCAweDkxNTIsIDB4OTE1MiwgMHgwOEY1LA0KKyAgICAweDkxNTMsIDB4OTE1NiwgMHg0RERCLCAweDkxNTcsIDB4OTE1NywgMHgwRkJBLCAweDkxNTgsIDB4OTE1OSwgMHg0RERGLA0KKyAgICAweDkxNUEsIDB4OTE1QSwgMHgwNjcwLCAweDkxNUIsIDB4OTE1QywgMHg0REUxLCAweDkxNUQsIDB4OTE1RCwgMHgxMTEwLA0KKyAgICAweDkxNUUsIDB4OTE1RSwgMHgwREZELCAweDkxNUYsIDB4OTE2MCwgMHg0REUzLCAweDkxNjEsIDB4OTE2MSwgMHgxQ0ZFLA0KKyAgICAweDkxNjIsIDB4OTE2MiwgMHgxQ0ZELCAweDkxNjMsIDB4OTE2MywgMHgwNzVGLCAweDkxNjQsIDB4OTE2NCwgMHgxQ0ZDLA0KKyAgICAweDkxNjUsIDB4OTE2NSwgMHgwRENCLCAweDkxNjYsIDB4OTE2OCwgMHg0REU1LCAweDkxNjksIDB4OTE2OSwgMHgxRDAwLA0KKyAgICAweDkxNkEsIDB4OTE2QSwgMHgwOUJELCAweDkxNkIsIDB4OTE2QiwgMHg0REU4LCAweDkxNkMsIDB4OTE2QywgMHgwNTBGLA0KKyAgICAweDkxNkQsIDB4OTE2RCwgMHg0REU5LCAweDkxNkUsIDB4OTE2RSwgMHgwRTVCLCAweDkxNkYsIDB4OTE2RiwgMHgxRDAxLA0KKyAgICAweDkxNzAsIDB4OTE3MCwgMHgxQ0ZGLCAweDkxNzEsIDB4OTE3MSwgMHgwODg1LCAweDkxNzIsIDB4OTE3MiwgMHgxRDA0LA0KKyAgICAweDkxNzMsIDB4OTE3MywgMHg0REVBLCAweDkxNzQsIDB4OTE3NCwgMHgxRDA1LCAweDkxNzUsIDB4OTE3NSwgMHgwODlFLA0KKyAgICAweDkxNzYsIDB4OTE3NiwgMHgwQUJELCAweDkxNzcsIDB4OTE3NywgMHgwOTZFLCAweDkxNzgsIDB4OTE3OCwgMHgwREQ2LA0KKyAgICAweDkxNzksIDB4OTE3OSwgMHgxRDA2LCAweDkxN0EsIDB4OTE3QywgMHg0REVCLCAweDkxN0QsIDB4OTE3RSwgMHgxRDAyLA0KKyAgICAweDkxN0YsIDB4OTE3RiwgMHgwQjUzLCAweDkxODAsIDB4OTE4NCwgMHg0REVFLCAweDkxODUsIDB4OTE4NSwgMHgxRDA4LA0KKyAgICAweDkxODYsIDB4OTE4NiwgMHg0REYzLCAweDkxODcsIDB4OTE4NywgMHgwNTNGLCAweDkxODgsIDB4OTE4OCwgMHg0REY0LA0KKyAgICAweDkxODksIDB4OTE4OSwgMHgxMjRBLCAweDkxOEEsIDB4OTE4QSwgMHg0REY1LCAweDkxOEIsIDB4OTE4QiwgMHgwNTVBLA0KKyAgICAweDkxOEMsIDB4OTE4QywgMHgxRDA3LCAweDkxOEQsIDB4OTE4RCwgMHgxRDBBLCAweDkxOEUsIDB4OTE4RiwgMHg0REY2LA0KKyAgICAweDkxOTAsIDB4OTE5MCwgMHgxRDA5LCAweDkxOTEsIDB4OTE5MSwgMHgxRDBCLCAweDkxOTIsIDB4OTE5MiwgMHgwRjlDLA0KKyAgICAweDkxOTMsIDB4OTE5NSwgMHg0REY4LCAweDkxOTYsIDB4OTE5NiwgMHgyMjU1LCAweDkxOTcsIDB4OTE5OSwgMHg0REZCLA0KKyAgICAweDkxOUEsIDB4OTE5QSwgMHgwQUQ2LCAweDkxOUIsIDB4OTE5QiwgMHgwQzg0LCAweDkxOUMsIDB4OTE5QywgMHgxRThGLA0KKyAgICAweDkxOUQsIDB4OTFBMSwgMHg0REZFLCAweDkxQTIsIDB4OTFBMywgMHgxRDBDLCAweDkxQTQsIDB4OTFBOSwgMHg0RTAzLA0KKyAgICAweDkxQUEsIDB4OTFBQSwgMHgxRDBFLCAweDkxQUIsIDB4OTFBQiwgMHgyMjBDLCAweDkxQUMsIDB4OTFBQywgMHgxRkE0LA0KKyAgICAweDkxQUQsIDB4OTFBRiwgMHgxRDBGLCAweDkxQjAsIDB4OTFCMywgMHg0RTA5LCAweDkxQjQsIDB4OTFCNCwgMHgxRDEzLA0KKyAgICAweDkxQjUsIDB4OTFCNSwgMHgxRDEyLCAweDkxQjYsIDB4OTFCOSwgMHg0RTBELCAweDkxQkEsIDB4OTFCQSwgMHgxRDE0LA0KKyAgICAweDkxQkIsIDB4OTFCRiwgMHg0RTExLCAweDkxQzAsIDB4OTFDMCwgMHgyMDlCLCAweDkxQzEsIDB4OTFDMSwgMHgyMUQ4LA0KKyAgICAweDkxQzIsIDB4OTFDMiwgMHg0RTE2LCAweDkxQzMsIDB4OTFDMywgMHgyNUZBLCAweDkxQzQsIDB4OTFDNCwgMHg0RTE3LA0KKyAgICAweDkxQzUsIDB4OTFDNSwgMHgyNUY5LCAweDkxQzYsIDB4OTFDNiwgMHg0RTE4LCAweDkxQzcsIDB4OTFDNywgMHgwNDkwLA0KKyAgICAweDkxQzgsIDB4OTFDOCwgMHg0RTE5LCAweDkxQzksIDB4OTFDOSwgMHgxMEI5LCAweDkxQ0EsIDB4OTFDQSwgMHgwRDY0LA0KKyAgICAweDkxQ0IsIDB4OTFDQiwgMHgyMTM0LCAweDkxQ0MsIDB4OTFDQywgMHgwOURBLCAweDkxQ0QsIDB4OTFDRCwgMHgxMUQ3LA0KKyAgICAweDkxQ0UsIDB4OTFDRSwgMHgxMDM3LCAweDkxQ0YsIDB4OTFDRiwgMHgwQTA4LCAweDkxRDAsIDB4OTFEMCwgMHg0RTFBLA0KKyAgICAweDkxRDEsIDB4OTFEMSwgMHgwOEMxLCAweDkxRDIsIDB4OTFENCwgMHgyNEYzLCAweDkxRDUsIDB4OTFENSwgMHgyNEY4LA0KKyAgICAweDkxRDYsIDB4OTFENiwgMHg0RTFCLCAweDkxRDcsIDB4OTFENywgMHgyNEY3LCAweDkxRDgsIDB4OTFEOCwgMHgxRUM4LA0KKyAgICAweDkxRDksIDB4OTFEOSwgMHgyNEY2LCAweDkxREEsIDB4OTFEQiwgMHg0RTFDLCAweDkxREMsIDB4OTFEQywgMHgwNkE1LA0KKyAgICAweDkxREQsIDB4OTFERCwgMHgyMjgwLCAweDkxREUsIDB4OTFFMiwgMHg0RTFFLCAweDkxRTMsIDB4OTFFMywgMHgxRUM1LA0KKyAgICAweDkxRTQsIDB4OTFFNCwgMHgyNEZCLCAweDkxRTUsIDB4OTFFNiwgMHg0RTIzLCAweDkxRTcsIDB4OTFFNywgMHgyNEZBLA0KKyAgICAweDkxRTgsIDB4OTFFOCwgMHg0RTI1LCAweDkxRTksIDB4OTFFOSwgMHgxRUVELCAweDkxRUEsIDB4OTFGNCwgMHg0RTI2LA0KKyAgICAweDkxRjUsIDB4OTFGNSwgMHgyNEZELCAweDkxRjYsIDB4OTFGNiwgMHg0RTMxLCAweDkxRjcsIDB4OTFGNywgMHgyNEY5LA0KKyAgICAweDkxRjgsIDB4OTFGOCwgMHg0RTMyLCAweDkxRjksIDB4OTFGOSwgMHgyNEZFLCAweDkxRkEsIDB4OTFGQSwgMHgyMENELA0KKyAgICAweDkxRkIsIDB4OTFGRiwgMHg0RTMzLCAweDkyMDAsIDB4OTIwMCwgMHgyNTA4LCAweDkyMDEsIDB4OTIwMSwgMHgyNTA0LA0KKyAgICAweDkyMDIsIDB4OTIwMywgMHg0RTM4LCAweDkyMDQsIDB4OTIwNCwgMHgyNTA2LCAweDkyMDUsIDB4OTIwNywgMHg0RTNBLA0KKyAgICAweDkyMDgsIDB4OTIwOCwgMHgyNEZGLCAweDkyMDksIDB4OTIwOSwgMHgyMDkwLCAweDkyMEEsIDB4OTIwQywgMHg0RTNELA0KKyAgICAweDkyMEQsIDB4OTIwRCwgMHgxRURELCAweDkyMEUsIDB4OTIwRSwgMHgxRjI1LCAweDkyMEYsIDB4OTIwRiwgMHg0RTQwLA0KKyAgICAweDkyMTAsIDB4OTIxMCwgMHgyNTAzLCAweDkyMTEsIDB4OTIxMSwgMHgyNTAyLCAweDkyMTIsIDB4OTIxMywgMHg0RTQxLA0KKyAgICAweDkyMTQsIDB4OTIxNCwgMHgxRTdBLCAweDkyMTUsIDB4OTIxNSwgMHgyMEE2LCAweDkyMTYsIDB4OTIxRCwgMHg0RTQzLA0KKyAgICAweDkyMUUsIDB4OTIxRSwgMHgxRkQ1LCAweDkyMUYsIDB4OTIyMiwgMHg0RTRCLCAweDkyMjMsIDB4OTIyMywgMHgxRjExLA0KKyAgICAweDkyMjQsIDB4OTIyNCwgMHg0RTRGLCAweDkyMjUsIDB4OTIyNSwgMHgyNTA3LCAweDkyMjYsIDB4OTIyNiwgMHgyNTAwLA0KKyAgICAweDkyMjcsIDB4OTIyNywgMHgyNTA1LCAweDkyMjgsIDB4OTIyRCwgMHg0RTUwLCAweDkyMkUsIDB4OTIyRSwgMHgyNTE5LA0KKyAgICAweDkyMkYsIDB4OTIyRiwgMHg0RTU2LCAweDkyMzAsIDB4OTIzMCwgMHgyNTE1LCAweDkyMzEsIDB4OTIzMiwgMHg0RTU3LA0KKyAgICAweDkyMzMsIDB4OTIzMywgMHgyNTBDLCAweDkyMzQsIDB4OTIzNCwgMHgyMDMxLCAweDkyMzUsIDB4OTIzNiwgMHg0RTU5LA0KKyAgICAweDkyMzcsIDB4OTIzNywgMHgyNTBCLCAweDkyMzgsIDB4OTIzOCwgMHgyNTBGLCAweDkyMzksIDB4OTIzOSwgMHgyNTFBLA0KKyAgICAweDkyM0EsIDB4OTIzQSwgMHgyNTA5LCAweDkyM0IsIDB4OTIzQywgMHg0RTVCLCAweDkyM0QsIDB4OTIzRCwgMHgyNTBFLA0KKyAgICAweDkyM0UsIDB4OTIzRSwgMHgyMjM0LCAweDkyM0YsIDB4OTIzRiwgMHgyNTEzLCAweDkyNDAsIDB4OTI0MCwgMHgxRjgwLA0KKyAgICAweDkyNDEsIDB4OTI0NCwgMHg0RTVELCAweDkyNDUsIDB4OTI0NSwgMHgyNTAxLCAweDkyNDYsIDB4OTI0NywgMHg0RTYxLA0KKyAgICAweDkyNDgsIDB4OTI0OCwgMHgyNTE3LCAweDkyNDksIDB4OTI0OSwgMHgyNTE2LCAweDkyNEEsIDB4OTI0QywgMHg0RTYzLA0KKyAgICAweDkyNEQsIDB4OTI0RCwgMHgyNTE4LCAweDkyNEUsIDB4OTI1MCwgMHg0RTY2LCAweDkyNTEsIDB4OTI1MSwgMHgxRTU2LA0KKyAgICAweDkyNTIsIDB4OTI1NCwgMHg0RTY5LCAweDkyNTUsIDB4OTI1NSwgMHgyNTBELCAweDkyNTYsIDB4OTI1NiwgMHg0RTZDLA0KKyAgICAweDkyNTcsIDB4OTI1NywgMHgyMEQzLCAweDkyNTgsIDB4OTI1OSwgMHg0RTZELCAweDkyNUEsIDB4OTI1QSwgMHgyMDdBLA0KKyAgICAweDkyNUIsIDB4OTI1QiwgMHgyMENFLCAweDkyNUMsIDB4OTI1RCwgMHg0RTZGLCAweDkyNUUsIDB4OTI1RSwgMHgyNTEwLA0KKyAgICAweDkyNUYsIDB4OTI2MSwgMHg0RTcxLCAweDkyNjIsIDB4OTI2MiwgMHgxRTU1LCAweDkyNjMsIDB4OTI2NSwgMHg0RTc0LA0KKyAgICAweDkyNjYsIDB4OTI2NiwgMHgyNTBBLCAweDkyNjcsIDB4OTI2QiwgMHg0RTc3LCAweDkyNkMsIDB4OTI2RCwgMHgyNTExLA0KKyAgICAweDkyNkUsIDB4OTI3MywgMHg0RTdDLCAweDkyNzQsIDB4OTI3NCwgMHgwODZCLCAweDkyNzUsIDB4OTI3NywgMHg0RTgyLA0KKyAgICAweDkyNzgsIDB4OTI3OCwgMHgxRkFBLCAweDkyNzksIDB4OTI3OSwgMHg0RTg1LCAweDkyN0EsIDB4OTI3QSwgMHgyNTFFLA0KKyAgICAweDkyN0IsIDB4OTI3QiwgMHgxRjFGLCAweDkyN0MsIDB4OTI3RSwgMHg0RTg2LCAweDkyN0YsIDB4OTI3RiwgMHgyNTJELA0KKyAgICAweDkyODAsIDB4OTI4MCwgMHgyMjFELCAweDkyODEsIDB4OTI4MiwgMHg0RTg5LCAweDkyODMsIDB4OTI4MywgMHgyNTMyLA0KKyAgICAweDkyODQsIDB4OTI4NCwgMHg0RThCLCAweDkyODUsIDB4OTI4NSwgMHgyMTdCLCAweDkyODYsIDB4OTI4RCwgMHg0RThDLA0KKyAgICAweDkyOEUsIDB4OTI4RSwgMHgxRDgwLCAweDkyOEYsIDB4OTI5MCwgMHg0RTk0LCAweDkyOTEsIDB4OTI5MSwgMHgyMUFGLA0KKyAgICAweDkyOTIsIDB4OTI5MiwgMHg0RTk2LCAweDkyOTMsIDB4OTI5MywgMHgyNTJDLCAweDkyOTQsIDB4OTI5NSwgMHg0RTk3LA0KKyAgICAweDkyOTYsIDB4OTI5NiwgMHgyNTI4LCAweDkyOTcsIDB4OTI5NywgMHg0RTk5LCAweDkyOTgsIDB4OTI5OCwgMHgyMDhDLA0KKyAgICAweDkyOTksIDB4OTI5OSwgMHg0RTlBLCAweDkyOUEsIDB4OTI5QSwgMHgyNTJGLCAweDkyOUIsIDB4OTI5QiwgMHg0RTlCLA0KKyAgICAweDkyOUMsIDB4OTI5QywgMHgyMUJDLCAweDkyOUQsIDB4OTI5RiwgMHg0RTlDLCAweDkyQTAsIDB4OTJBMCwgMHgyNTFELA0KKyAgICAweDkyQTEsIDB4OTJBMiwgMHg0RTlGLCAweDkyQTMsIDB4OTJBMywgMHgyNTM1LCAweDkyQTQsIDB4OTJBNCwgMHg0RUExLA0KKyAgICAweDkyQTUsIDB4OTJBNSwgMHgyMjBELCAweDkyQTYsIDB4OTJBNiwgMHgyNTI2LCAweDkyQTcsIDB4OTJBNywgMHg0RUEyLA0KKyAgICAweDkyQTgsIDB4OTJBOCwgMHgyNTM0LCAweDkyQTksIDB4OTJBOSwgMHgyNTJBLCAweDkyQUEsIDB4OTJBQSwgMHgyNTFGLA0KKyAgICAweDkyQUIsIDB4OTJBQiwgMHgyNTMxLCAweDkyQUMsIDB4OTJBQywgMHgyNTFDLCAweDkyQUQsIDB4OTJBRCwgMHg0RUEzLA0KKyAgICAweDkyQUUsIDB4OTJBRSwgMHgxRDgxLCAweDkyQUYsIDB4OTJCMCwgMHg0RUE0LCAweDkyQjEsIDB4OTJCMSwgMHgyNTI1LA0KKyAgICAweDkyQjIsIDB4OTJCNiwgMHg0RUE2LCAweDkyQjcsIDB4OTJCNywgMHgyMUNELCAweDkyQjgsIDB4OTJCOCwgMHg0RUFCLA0KKyAgICAweDkyQjksIDB4OTJCOSwgMHgyMURBLCAweDkyQkEsIDB4OTJCQSwgMHg0RUFDLCAweDkyQkIsIDB4OTJCQiwgMHgyMTcyLA0KKyAgICAweDkyQkMsIDB4OTJCQywgMHgyNTNFLCAweDkyQkQsIDB4OTJDMCwgMHg0RUFELCAweDkyQzEsIDB4OTJDMSwgMHgyMDRGLA0KKyAgICAweDkyQzIsIDB4OTJDMiwgMHg0RUIxLCAweDkyQzMsIDB4OTJDMywgMHgyNTQzLCAweDkyQzQsIDB4OTJDNCwgMHg0RUIyLA0KKyAgICAweDkyQzUsIDB4OTJDNSwgMHgyMUQ3LCAweDkyQzYsIDB4OTJDNiwgMHg0RUIzLCAweDkyQzcsIDB4OTJDNywgMHgxRTNDLA0KKyAgICAweDkyQzgsIDB4OTJDOCwgMHgxRDgyLCAweDkyQzksIDB4OTJDQiwgMHg0RUI0LCAweDkyQ0MsIDB4OTJDQywgMHgyNTI5LA0KKyAgICAweDkyQ0QsIDB4OTJDRSwgMHg0RUI3LCAweDkyQ0YsIDB4OTJDRiwgMHgyNTIxLCAweDkyRDAsIDB4OTJEMSwgMHg0RUI5LA0KKyAgICAweDkyRDIsIDB4OTJEMiwgMHgxRUZGLCAweDkyRDMsIDB4OTJEQywgMHg0RUJCLCAweDkyREQsIDB4OTJERCwgMHgyNTNGLA0KKyAgICAweDkyREUsIDB4OTJERSwgMHg0RUM1LCAweDkyREYsIDB4OTJERiwgMHgyNTQ0LCAweDkyRTAsIDB4OTJFMiwgMHg0RUM2LA0KKyAgICAweDkyRTMsIDB4OTJFMywgMHgyNTIzLCAweDkyRTQsIDB4OTJFNCwgMHgxRTkwLCAweDkyRTUsIDB4OTJFNSwgMHgyNTNBLA0KKyAgICAweDkyRTYsIDB4OTJFNiwgMHgyNTQ1LCAweDkyRTcsIDB4OTJFNywgMHg0RUM5LCAweDkyRTgsIDB4OTJFOCwgMHgyNTNELA0KKyAgICAweDkyRTksIDB4OTJFOSwgMHg0RUNBLCAweDkyRUEsIDB4OTJFQSwgMHgyMEMxLCAweDkyRUIsIDB4OTJFQywgMHg0RUNCLA0KKyAgICAweDkyRUQsIDB4OTJFRCwgMHgyMTAzLCAweDkyRUUsIDB4OTJFRSwgMHgyNTIwLCAweDkyRUYsIDB4OTJFRiwgMHgyNTNDLA0KKyAgICAweDkyRjAsIDB4OTJGMCwgMHgyNTNCLCAweDkyRjEsIDB4OTJGMSwgMHgyNTM4LCAweDkyRjIsIDB4OTJGNSwgMHg0RUNELA0KKyAgICAweDkyRjYsIDB4OTJGNiwgMHgyNTQwLCAweDkyRjcsIDB4OTJGNywgMHg0RUQxLCAweDkyRjgsIDB4OTJGOCwgMHgxRkNELA0KKyAgICAweDkyRjksIDB4OTJGQiwgMHg0RUQyLCAweDkyRkMsIDB4OTJGQywgMHgxRjE4LCAweDkyRkQsIDB4OTJGRiwgMHg0RUQ1LA0KKyAgICAweDkzMDAsIDB4OTMwMCwgMHg0RUQ4LCAweDkzMDEsIDB4OTMwMSwgMHgyNTRCLCAweDkzMDIsIDB4OTMwNSwgMHg0RUQ5LA0KKyAgICAweDkzMDYsIDB4OTMwNiwgMHgyNTQ3LCAweDkzMDcsIDB4OTMwOCwgMHgyNTRGLCAweDkzMDksIDB4OTMwRiwgMHg0RURELA0KKyAgICAweDkzMTAsIDB4OTMxMCwgMHgyMkIwLCAweDkzMTEsIDB4OTMxMSwgMHg0RUU0LCAweDkzMTIsIDB4OTMxMiwgMHgyNTQ2LA0KKyAgICAweDkzMTMsIDB4OTMxNCwgMHg0RUU1LCAweDkzMTUsIDB4OTMxNSwgMHgyNTRDLCAweDkzMTYsIDB4OTMxNywgMHg0RUU3LA0KKyAgICAweDkzMTgsIDB4OTMxOCwgMHgxRTlBLCAweDkzMTksIDB4OTMxOSwgMHgyNTUyLCAweDkzMUEsIDB4OTMxQSwgMHgyNTMwLA0KKyAgICAweDkzMUIsIDB4OTMxQiwgMHgyNTQ5LCAweDkzMUMsIDB4OTMxRSwgMHg0RUU5LCAweDkzMUYsIDB4OTMxRiwgMHgyNTUxLA0KKyAgICAweDkzMjAsIDB4OTMyMCwgMHgxRUNBLCAweDkzMjEsIDB4OTMyMSwgMHg0RUVDLCAweDkzMjIsIDB4OTMyMiwgMHgyMEQyLA0KKyAgICAweDkzMjMsIDB4OTMyNSwgMHg0RUVELCAweDkzMjYsIDB4OTMyNiwgMHgxRkI4LCAweDkzMjcsIDB4OTMyNywgMHg0RUYwLA0KKyAgICAweDkzMjgsIDB4OTMyOCwgMHgyMDc5LCAweDkzMjksIDB4OTMyQSwgMHg0RUYxLCAweDkzMkIsIDB4OTMyQiwgMHgyMUFCLA0KKyAgICAweDkzMkMsIDB4OTMyRCwgMHg0RUYzLCAweDkzMkUsIDB4OTMyRSwgMHgyNTRELCAweDkzMkYsIDB4OTMyRiwgMHgxRUE1LA0KKyAgICAweDkzMzAsIDB4OTMzMSwgMHg0RUY1LCAweDkzMzIsIDB4OTMzMiwgMHgyMDRDLCAweDkzMzMsIDB4OTMzMywgMHgyMDgwLA0KKyAgICAweDkzMzQsIDB4OTMzNSwgMHg0RUY3LCAweDkzMzYsIDB4OTMzNiwgMHgyNjZELCAweDkzMzcsIDB4OTMzNywgMHg0RUY5LA0KKyAgICAweDkzMzgsIDB4OTMzOCwgMHgyNTM3LCAweDkzMzksIDB4OTMzRCwgMHg0RUZBLCAweDkzM0UsIDB4OTMzRSwgMHgxRDgzLA0KKyAgICAweDkzM0YsIDB4OTMzRiwgMHg0RUZGLCAweDkzNDAsIDB4OTM0MCwgMHgyNTRBLCAweDkzNDEsIDB4OTM0MSwgMHgyMUI4LA0KKyAgICAweDkzNDIsIDB4OTM0MiwgMHg0RjAwLCAweDkzNDMsIDB4OTM0MywgMHgyNTRFLCAweDkzNDQsIDB4OTM0NSwgMHg0RjAxLA0KKyAgICAweDkzNDYsIDB4OTM0NiwgMHgyNEZDLCAweDkzNDcsIDB4OTM0NywgMHgyNTU0LCAweDkzNDgsIDB4OTM0QSwgMHg0RjAzLA0KKyAgICAweDkzNEIsIDB4OTM0QiwgMHgxRjNDLCAweDkzNEMsIDB4OTM0QywgMHg0RjA2LCAweDkzNEQsIDB4OTM0RCwgMHgxRUQ1LA0KKyAgICAweDkzNEUsIDB4OTM1MywgMHg0RjA3LCAweDkzNTQsIDB4OTM1NCwgMHgyNTU2LCAweDkzNTUsIDB4OTM1NywgMHg0RjBELA0KKyAgICAweDkzNTgsIDB4OTM1OCwgMHgyMjY4LCAweDkzNTksIDB4OTM1QSwgMHg0RjEwLCAweDkzNUIsIDB4OTM1QiwgMHgxRUQ2LA0KKyAgICAweDkzNUMsIDB4OTM2MywgMHg0RjEyLCAweDkzNjQsIDB4OTM2NCwgMHgyNTU3LCAweDkzNjUsIDB4OTM2NSwgMHgyNTUzLA0KKyAgICAweDkzNjYsIDB4OTM2OCwgMHg0RjFBLCAweDkzNjksIDB4OTM2OSwgMHgyNTQ4LCAweDkzNkEsIDB4OTM2QSwgMHgxRDg0LA0KKyAgICAweDkzNkIsIDB4OTM2QiwgMHg0RjFELCAweDkzNkMsIDB4OTM2QywgMHgyMERDLCAweDkzNkQsIDB4OTM2RiwgMHg0RjFFLA0KKyAgICAweDkzNzAsIDB4OTM3MCwgMHgyNTU5LCAweDkzNzEsIDB4OTM3NCwgMHg0RjIxLCAweDkzNzUsIDB4OTM3NSwgMHgxRjk3LA0KKyAgICAweDkzNzYsIDB4OTM3NiwgMHgyNTU1LCAweDkzNzcsIDB4OTM3OSwgMHg0RjI1LCAweDkzN0EsIDB4OTM3QSwgMHgyMjdELA0KKyAgICAweDkzN0IsIDB4OTM3RCwgMHg0RjI4LCAweDkzN0UsIDB4OTM3RSwgMHgyNTdFLCAweDkzN0YsIDB4OTM4MSwgMHg0RjJCLA0KKyAgICAweDkzODIsIDB4OTM4MiwgMHgyMDdDLCAweDkzODMsIDB4OTM4MywgMHg0RjJFLCAweDkzODQsIDB4OTM4NCwgMHgyNTVBLA0KKyAgICAweDkzODUsIDB4OTM4NiwgMHg0RjJGLCAweDkzODcsIDB4OTM4NywgMHgyNTVFLCAweDkzODgsIDB4OTM4OSwgMHg0RjMxLA0KKyAgICAweDkzOEEsIDB4OTM4QSwgMHgxRTM0LCAweDkzOEIsIDB4OTM4RSwgMHg0RjMzLCAweDkzOEYsIDB4OTM4RiwgMHgxRDg2LA0KKyAgICAweDkzOTAsIDB4OTM5NSwgMHg0RjM3LCAweDkzOTYsIDB4OTM5NiwgMHgyMTVFLCAweDkzOTcsIDB4OTM5NywgMHg0RjNELA0KKyAgICAweDkzOTgsIDB4OTM5OCwgMHgyNTYwLCAweDkzOTksIDB4OTNBMSwgMHg0RjNFLCAweDkzQTIsIDB4OTNBMiwgMHgyMUEyLA0KKyAgICAweDkzQTMsIDB4OTNBMywgMHgyMzU0LCAweDkzQTQsIDB4OTNBNSwgMHg0RjQ3LCAweDkzQTYsIDB4OTNBNiwgMHgyNTYzLA0KKyAgICAweDkzQTcsIDB4OTNBNywgMHgyNTI3LCAweDkzQTgsIDB4OTNBOCwgMHg0RjQ5LCAweDkzQTksIDB4OTNBOSwgMHgyNTJFLA0KKyAgICAweDkzQUEsIDB4OTNBQSwgMHgyNTU4LCAweDkzQUIsIDB4OTNBQiwgMHg0RjRBLCAweDkzQUMsIDB4OTNBQywgMHgxRjFCLA0KKyAgICAweDkzQUQsIDB4OTNBRCwgMHg0RjRCLCAweDkzQUUsIDB4OTNBRSwgMHgyMjgzLCAweDkzQUYsIDB4OTNBRiwgMHg0RjRDLA0KKyAgICAweDkzQjAsIDB4OTNCMCwgMHgyNTY0LCAweDkzQjEsIDB4OTNCMiwgMHg0RjRELCAweDkzQjMsIDB4OTNCMywgMHgyMEEwLA0KKyAgICAweDkzQjQsIDB4OTNCNCwgMHg0RjRGLCAweDkzQjUsIDB4OTNCNSwgMHgyNTY1LCAweDkzQjYsIDB4OTNCNywgMHg0RjUwLA0KKyAgICAweDkzQjgsIDB4OTNCOCwgMHgyNTYxLCAweDkzQjksIDB4OTNCRSwgMHg0RjUyLCAweDkzQkYsIDB4OTNCRiwgMHgyNTYyLA0KKyAgICAweDkzQzAsIDB4OTNDMiwgMHg0RjU4LCAweDkzQzMsIDB4OTNDMywgMHgyNTZDLCAweDkzQzQsIDB4OTNDNiwgMHg0RjVCLA0KKyAgICAweDkzQzcsIDB4OTNDNywgMHgyNTZELCAweDkzQzgsIDB4OTNDOCwgMHgyMDIwLCAweDkzQzksIDB4OTNDOSwgMHg0RjVFLA0KKyAgICAweDkzQ0EsIDB4OTNDQSwgMHgxRDg1LCAweDkzQ0IsIDB4OTNDQiwgMHg0RjVGLCAweDkzQ0MsIDB4OTNDQywgMHgyNTVGLA0KKyAgICAweDkzQ0QsIDB4OTNDRCwgMHgyNTZBLCAweDkzQ0UsIDB4OTNEMCwgMHg0RjYwLCAweDkzRDEsIDB4OTNEMSwgMHgyNTZFLA0KKyAgICAweDkzRDIsIDB4OTNENSwgMHg0RjYzLCAweDkzRDYsIDB4OTNENiwgMHgxRTAxLCAweDkzRDcsIDB4OTNENywgMHgyNTM5LA0KKyAgICAweDkzRDgsIDB4OTNEOCwgMHgyNTVDLCAweDkzRDksIDB4OTNEQiwgMHg0RjY3LCAweDkzREMsIDB4OTNERCwgMHgyNTY4LA0KKyAgICAweDkzREUsIDB4OTNERSwgMHgyNTZCLCAweDkzREYsIDB4OTNERiwgMHgxRTZGLCAweDkzRTAsIDB4OTNFMCwgMHg0RjZBLA0KKyAgICAweDkzRTEsIDB4OTNFMSwgMHgxRkM0LCAweDkzRTIsIDB4OTNFMiwgMHgyNTY3LCAweDkzRTMsIDB4OTNFMywgMHg0RjZCLA0KKyAgICAweDkzRTQsIDB4OTNFNCwgMHgyNTVCLCAweDkzRTUsIDB4OTNFNywgMHg0RjZDLCAweDkzRTgsIDB4OTNFOCwgMHgyNjFELA0KKyAgICAweDkzRTksIDB4OTNGNCwgMHg0RjZGLCAweDkzRjUsIDB4OTNGNSwgMHgyNTJCLCAweDkzRjYsIDB4OTNGNiwgMHg0RjdCLA0KKyAgICAweDkzRjcsIDB4OTNGNywgMHgyNTcxLCAweDkzRjgsIDB4OTNGOCwgMHg0RjdDLCAweDkzRjksIDB4OTNGOSwgMHgyNTc3LA0KKyAgICAweDkzRkEsIDB4OTNGRiwgMHg0RjdELCAweDk0MDAsIDB4OTQwMiwgMHg0RjgzLCAweDk0MDMsIDB4OTQwMywgMHgyNTIyLA0KKyAgICAweDk0MDQsIDB4OTQwQSwgMHg0Rjg2LCAweDk0MEIsIDB4OTQwQiwgMHgyNTMzLCAweDk0MEMsIDB4OTQwRiwgMHg0RjhELA0KKyAgICAweDk0MTAsIDB4OTQxMCwgMHgyMDJBLCAweDk0MTEsIDB4OTQxMSwgMHg0RjkxLCAweDk0MTIsIDB4OTQxMiwgMHgyNTM2LA0KKyAgICAweDk0MTMsIDB4OTQxMywgMHgyNTczLCAweDk0MTQsIDB4OTQxNCwgMHgyNTZGLCAweDk0MTUsIDB4OTQxNywgMHg0RjkyLA0KKyAgICAweDk0MTgsIDB4OTQxOCwgMHgyMjkzLCAweDk0MTksIDB4OTQxOSwgMHgyNTc4LCAweDk0MUEsIDB4OTQxQywgMHg0Rjk1LA0KKyAgICAweDk0MUQsIDB4OTQxRCwgMHgyNTcwLCAweDk0MUUsIDB4OTQxRiwgMHg0Rjk4LCAweDk0MjAsIDB4OTQyMCwgMHgyNTc1LA0KKyAgICAweDk0MjEsIDB4OTQyNSwgMHg0RjlBLCAweDk0MjYsIDB4OTQyNywgMHgyNTQxLCAweDk0MjgsIDB4OTQyOCwgMHgyNTVELA0KKyAgICAweDk0MjksIDB4OTQyRCwgMHg0RjlGLCAweDk0MkUsIDB4OTQyRSwgMHgyMDFBLCAweDk0MkYsIDB4OTQzMSwgMHg0RkE0LA0KKyAgICAweDk0MzIsIDB4OTQzMiwgMHgyNTdBLCAweDk0MzMsIDB4OTQzMywgMHgyMDA2LCAweDk0MzQsIDB4OTQzNCwgMHg0RkE3LA0KKyAgICAweDk0MzUsIDB4OTQzNSwgMHgyMTc3LCAweDk0MzYsIDB4OTQzNywgMHg0RkE4LCAweDk0MzgsIDB4OTQzOCwgMHgyNTFCLA0KKyAgICAweDk0MzksIDB4OTQzOSwgMHg0RkFBLCAweDk0M0EsIDB4OTQzQSwgMHgyNTI0LCAweDk0M0IsIDB4OTQzRCwgMHg0RkFCLA0KKyAgICAweDk0M0UsIDB4OTQzRSwgMHgxRDg3LCAweDk0M0YsIDB4OTQzRiwgMHgyNTdCLCAweDk0NDAsIDB4OTQ0MywgMHg0RkFFLA0KKyAgICAweDk0NDQsIDB4OTQ0NCwgMHgyMkEzLCAweDk0NDUsIDB4OTQ0OSwgMHg0RkIyLCAweDk0NEEsIDB4OTQ0QSwgMHgyNTc5LA0KKyAgICAweDk0NEIsIDB4OTQ0QiwgMHg0RkI3LCAweDk0NEMsIDB4OTQ0QywgMHgyNTY2LCAweDk0NEQsIDB4OTQ1MSwgMHg0RkI4LA0KKyAgICAweDk0NTIsIDB4OTQ1MiwgMHgxRjkzLCAweDk0NTMsIDB4OTQ1MywgMHg0RkJELCAweDk0NTQsIDB4OTQ1NCwgMHgyNTdDLA0KKyAgICAweDk0NTUsIDB4OTQ1RiwgMHg0RkJFLCAweDk0NjAsIDB4OTQ2MCwgMHgyNTE0LCAweDk0NjEsIDB4OTQ2MiwgMHg0RkM5LA0KKyAgICAweDk0NjMsIDB4OTQ2MywgMHgyNTdELCAweDk0NjQsIDB4OTQ2NCwgMHg0RkNCLCAweDk0NjUsIDB4OTQ2NSwgMHgyNTcyLA0KKyAgICAweDk0NjYsIDB4OTQ2QSwgMHg0RkNDLCAweDk0NkIsIDB4OTQ2QiwgMHgxRDg4LCAweDk0NkMsIDB4OTQ2QywgMHg0RkQxLA0KKyAgICAweDk0NkQsIDB4OTQ2RCwgMHgyNTc0LCAweDk0NkUsIDB4OTQ2RiwgMHg0RkQyLCAweDk0NzAsIDB4OTQ3MCwgMHgyMjRFLA0KKyAgICAweDk0NzEsIDB4OTQ3MSwgMHg0RkQ0LCAweDk0NzIsIDB4OTQ3MiwgMHgyMUM2LCAweDk0NzMsIDB4OTQ3NiwgMHg0RkQ1LA0KKyAgICAweDk0NzcsIDB4OTQ3NywgMHgyMDlGLCAweDk0NzgsIDB4OTQ3OCwgMHg0RkQ5LCAweDk0NzksIDB4OTQ3OSwgMHgyNTc2LA0KKyAgICAweDk0N0EsIDB4OTQ3QiwgMHg0RkRBLCAweDk0N0MsIDB4OTQ3QywgMHgyMDY0LCAweDk0N0QsIDB4OTQ3RCwgMHgyMkJGLA0KKyAgICAweDk0N0UsIDB4OTQ3RSwgMHgyNjFDLCAweDk0N0YsIDB4OTQ3RiwgMHgyMjVFLCAweDk0ODAsIDB4OTQ4NCwgMHg0RkRDLA0KKyAgICAweDk0ODUsIDB4OTQ4NywgMHgxQThFLCAweDk0ODgsIDB4OTQ4OCwgMHgxMThDLCAweDk0ODksIDB4OTQ4OSwgMHgwNUUzLA0KKyAgICAweDk0OEEsIDB4OTQ4QSwgMHgxQTkyLCAweDk0OEIsIDB4OTQ4QiwgMHgxQTkxLCAweDk0OEMsIDB4OTQ4RCwgMHgxQTkzLA0KKyAgICAweDk0OEUsIDB4OTQ4RSwgMHgwQzIyLCAweDk0OEYsIDB4OTQ5MCwgMHgxQTk1LCAweDk0OTEsIDB4OTQ5MSwgMHg0RkUxLA0KKyAgICAweDk0OTIsIDB4OTQ5MiwgMHgwNjRELCAweDk0OTMsIDB4OTQ5MywgMHgwNUQ3LCAweDk0OTQsIDB4OTQ5NCwgMHgxQTk3LA0KKyAgICAweDk0OTUsIDB4OTQ5NSwgMHgxQTk5LCAweDk0OTYsIDB4OTQ5NiwgMHg0RkUyLCAweDk0OTcsIDB4OTQ5NywgMHgxQTk4LA0KKyAgICAweDk0OTgsIDB4OTQ5OCwgMHg0RkUzLCAweDk0OTksIDB4OTQ5OSwgMHgwNkMxLCAweDk0OUEsIDB4OTQ5QywgMHgxQTlBLA0KKyAgICAweDk0OUQsIDB4OTQ5RCwgMHgwNjFBLCAweDk0OUUsIDB4OTQ5RSwgMHgwNEQzLCAweDk0OUYsIDB4OTQ5RiwgMHgxMUQyLA0KKyAgICAweDk0QTAsIDB4OTRBMCwgMHgwQjI5LCAweDk0QTEsIDB4OTRBMSwgMHgwNDFFLCAweDk0QTIsIDB4OTRBMiwgMHgwNkQxLA0KKyAgICAweDk0QTMsIDB4OTRBNCwgMHgxQTlELCAweDk0QTUsIDB4OTRBNSwgMHgxMTAyLCAweDk0QTYsIDB4OTRBNiwgMHgwQzUyLA0KKyAgICAweDk0QTcsIDB4OTRBNywgMHgwOTJBLCAweDk0QTgsIDB4OTRBOCwgMHgwRUU4LCAweDk0QTksIDB4OTRBOSwgMHgwNzBDLA0KKyAgICAweDk0QUEsIDB4OTRBQSwgMHgxQUEwLCAweDk0QUIsIDB4OTRBQiwgMHgxQTlGLCAweDk0QUMsIDB4OTRBQywgMHgxQUEyLA0KKyAgICAweDk0QUQsIDB4OTRBRCwgMHgxQUExLCAweDk0QUUsIDB4OTRBRSwgMHgwQjY2LCAweDk0QUYsIDB4OTRCMCwgMHgxQUEzLA0KKyAgICAweDk0QjEsIDB4OTRCMSwgMHgwQzJCLCAweDk0QjIsIDB4OTRCMiwgMHgxQUE1LCAweDk0QjMsIDB4OTRCMywgMHgwQzJDLA0KKyAgICAweDk0QjQsIDB4OTRCNCwgMHgxQUE2LCAweDk0QjUsIDB4OTRCNSwgMHgwNDZFLCAweDk0QjYsIDB4OTRCQSwgMHgxQUE3LA0KKyAgICAweDk0QkIsIDB4OTRCQiwgMHgxMjQ3LCAweDk0QkMsIDB4OTRCRCwgMHgxQUFDLCAweDk0QkUsIDB4OTRCRSwgMHgwODRCLA0KKyAgICAweDk0QkYsIDB4OTRCRiwgMHgxQUFFLCAweDk0QzAsIDB4OTRDMCwgMHgxMEIwLCAweDk0QzEsIDB4OTRDMSwgMHgwRTRELA0KKyAgICAweDk0QzIsIDB4OTRDMiwgMHgwNDczLCAweDk0QzMsIDB4OTRDMywgMHgwQTJFLCAweDk0QzQsIDB4OTRDNCwgMHgxQUFGLA0KKyAgICAweDk0QzUsIDB4OTRDNSwgMHgwQzIzLCAweDk0QzYsIDB4OTRDNiwgMHgwQUIyLCAweDk0QzcsIDB4OTRDNywgMHg0RkU0LA0KKyAgICAweDk0QzgsIDB4OTRDRSwgMHgxQUIwLCAweDk0Q0YsIDB4OTRDRiwgMHg0RkU1LCAweDk0RDAsIDB4OTREMiwgMHgxQUI3LA0KKyAgICAweDk0RDMsIDB4OTRENCwgMHg0RkU2LCAweDk0RDUsIDB4OTRENywgMHgxQUJBLCAweDk0RDgsIDB4OTREOCwgMHgxQUJFLA0KKyAgICAweDk0RDksIDB4OTREOSwgMHgxQUJELCAweDk0REEsIDB4OTREQSwgMHg0RkU4LCAweDk0REIsIDB4OTREQiwgMHgxQUJGLA0KKyAgICAweDk0REMsIDB4OTREQywgMHgwRTVFLCAweDk0REQsIDB4OTRERCwgMHgwQTY4LCAweDk0REUsIDB4OTRFMCwgMHgxQUMwLA0KKyAgICAweDk0RTEsIDB4OTRFMSwgMHgxMTQyLCAweDk0RTIsIDB4OTRFMiwgMHgxQUMzLCAweDk0RTMsIDB4OTRFMywgMHgwRjIwLA0KKyAgICAweDk0RTQsIDB4OTRFNSwgMHgxQUM0LCAweDk0RTYsIDB4OTRFNiwgMHg0RkU5LCAweDk0RTcsIDB4OTRFOCwgMHgxQUM2LA0KKyAgICAweDk0RTksIDB4OTRFOSwgMHgxQUM5LCAweDk0RUEsIDB4OTRFQSwgMHgxQUM4LCAweDk0RUIsIDB4OTRFQiwgMHgxQUNBLA0KKyAgICAweDk0RUMsIDB4OTRFQywgMHgwNkYwLCAweDk0RUQsIDB4OTRFRCwgMHgwQUZGLCAweDk0RUUsIDB4OTRFRiwgMHgxQUNCLA0KKyAgICAweDk0RjAsIDB4OTRGMCwgMHgwODkzLCAweDk0RjEsIDB4OTRGMSwgMHgxMDQ2LCAweDk0RjIsIDB4OTRGMiwgMHgwNEMwLA0KKyAgICAweDk0RjMsIDB4OTRGNSwgMHgxQUNELCAweDk0RjYsIDB4OTRGNiwgMHgxMDdGLCAweDk0RjcsIDB4OTRGNywgMHgxQUQwLA0KKyAgICAweDk0RjgsIDB4OTRGOCwgMHgxMUZDLCAweDk0RjksIDB4OTRGOSwgMHgxQUQxLCAweDk0RkEsIDB4OTRGQSwgMHgwQkVCLA0KKyAgICAweDk0RkIsIDB4OTRGQiwgMHg0RkVBLCAweDk0RkMsIDB4OTRGRCwgMHgxQUQyLCAweDk0RkUsIDB4OTRGRSwgMHgwOUZELA0KKyAgICAweDk0RkYsIDB4OTRGRiwgMHgxQUQ0LCAweDk1MDAsIDB4OTUwMCwgMHgwRjY3LCAweDk1MDEsIDB4OTUwMSwgMHgwREVELA0KKyAgICAweDk1MDIsIDB4OTUwMiwgMHgxQUQ2LCAweDk1MDMsIDB4OTUwMywgMHgxQUQ1LCAweDk1MDQsIDB4OTUwNCwgMHgwNTFGLA0KKyAgICAweDk1MDUsIDB4OTUwNSwgMHgwNzUxLCAweDk1MDYsIDB4OTUwNywgMHgxQUQ3LCAweDk1MDgsIDB4OTUwOCwgMHgwRkFELA0KKyAgICAweDk1MDksIDB4OTUwQSwgMHgxQUQ5LCAweDk1MEIsIDB4OTUwQiwgMHgwNjgzLCAweDk1MEMsIDB4OTUwQywgMHgwRjhBLA0KKyAgICAweDk1MEQsIDB4OTUwRiwgMHgxQURCLCAweDk1MTAsIDB4OTUxMCwgMHgwQ0NDLCAweDk1MTEsIDB4OTUxMSwgMHgwRTMzLA0KKyAgICAweDk1MTIsIDB4OTUxNiwgMHgxQURFLCAweDk1MTcsIDB4OTUxNywgMHgxMTgxLCAweDk1MTgsIDB4OTUxOCwgMHgxQUUzLA0KKyAgICAweDk1MTksIDB4OTUxOSwgMHgwNTcwLCAweDk1MUEsIDB4OTUxQSwgMHgwQUFGLCAweDk1MUIsIDB4OTUxQiwgMHgxQUU0LA0KKyAgICAweDk1MUMsIDB4OTUxQywgMHg0RkVCLCAweDk1MUQsIDB4OTUxRiwgMHgxQUU1LCAweDk1MjAsIDB4OTUyMCwgMHg0RkVDLA0KKyAgICAweDk1MjEsIDB4OTUyMSwgMHgwRjBDLCAweDk1MjIsIDB4OTUyMiwgMHgxQUU4LCAweDk1MjMsIDB4OTUyMywgMHgwQTg3LA0KKyAgICAweDk1MjQsIDB4OTUyNCwgMHgwNTNCLCAweDk1MjUsIDB4OTUyNSwgMHgxMjEzLCAweDk1MjYsIDB4OTUyNiwgMHgwOEM2LA0KKyAgICAweDk1MjcsIDB4OTUyNywgMHg0RkVELCAweDk1MjgsIDB4OTUyOCwgMHgwRjM0LCAweDk1MjksIDB4OTUyOSwgMHgxQUVCLA0KKyAgICAweDk1MkEsIDB4OTUyQiwgMHgxQUU5LCAweDk1MkMsIDB4OTUyQywgMHgxQUVDLCAweDk1MkQsIDB4OTUyRCwgMHgwNUU2LA0KKyAgICAweDk1MkUsIDB4OTUyRSwgMHgwODZGLCAweDk1MkYsIDB4OTUyRiwgMHgwOTExLCAweDk1MzAsIDB4OTUzMCwgMHgwQUQxLA0KKyAgICAweDk1MzEsIDB4OTUzMiwgMHgxQUVELCAweDk1MzMsIDB4OTUzMywgMHg0RkVFLCAweDk1MzQsIDB4OTUzNCwgMHgxQUVGLA0KKyAgICAweDk1MzUsIDB4OTUzNSwgMHgxQUY3LCAweDk1MzYsIDB4OTUzOCwgMHgxQUYwLCAweDk1MzksIDB4OTUzOSwgMHgwQzNGLA0KKyAgICAweDk1M0EsIDB4OTUzQSwgMHgxQjE5LCAweDk1M0IsIDB4OTUzQiwgMHgwNjBDLCAweDk1M0MsIDB4OTUzQywgMHgxQUYzLA0KKyAgICAweDk1M0QsIDB4OTUzRCwgMHg0RkVGLCAweDk1M0UsIDB4OTUzRiwgMHgxQUY0LCAweDk1NDAsIDB4OTU0MCwgMHgwNjA1LA0KKyAgICAweDk1NDEsIDB4OTU0MSwgMHgwQUMzLCAweDk1NDIsIDB4OTU0MiwgMHgxQUY2LCAweDk1NDMsIDB4OTU0MywgMHg0RkYwLA0KKyAgICAweDk1NDQsIDB4OTU0NiwgMHgxQUY4LCAweDk1NDcsIDB4OTU0NywgMHgxMTkzLCAweDk1NDgsIDB4OTU0OCwgMHg0RkYxLA0KKyAgICAweDk1NDksIDB4OTU0OSwgMHgxQUZCLCAweDk1NEEsIDB4OTU0QSwgMHgwQjVBLCAweDk1NEIsIDB4OTU0QiwgMHg0RkYyLA0KKyAgICAweDk1NEMsIDB4OTU0QywgMHgxQUZDLCAweDk1NEQsIDB4OTU0RCwgMHgwQjVCLCAweDk1NEUsIDB4OTU0RiwgMHgxQUZELA0KKyAgICAweDk1NTAsIDB4OTU1MCwgMHgwNkRGLCAweDk1NTEsIDB4OTU1MSwgMHgwNDAyLCAweDk1NTIsIDB4OTU1NCwgMHgxQUZGLA0KKyAgICAweDk1NTUsIDB4OTU1NSwgMHg0RkYzLCAweDk1NTYsIDB4OTU1OSwgMHgxQjAyLCAweDk1NUEsIDB4OTU1QSwgMHg0RkY0LA0KKyAgICAweDk1NUIsIDB4OTU1QiwgMHgxQjA2LCAweDk1NUMsIDB4OTU1QywgMHgwOEU0LCAweDk1NUQsIDB4OTU1RCwgMHgxQjA5LA0KKyAgICAweDk1NUUsIDB4OTU1RiwgMHgxQjA3LCAweDk1NjAsIDB4OTU2MCwgMHg0RkY1LCAweDk1NjEsIDB4OTU2MiwgMHgxQjBBLA0KKyAgICAweDk1NjMsIDB4OTU2MywgMHgwQTE2LCAweDk1NjQsIDB4OTU2QywgMHgxQjBDLCAweDk1NkQsIDB4OTU2RCwgMHgwOUMzLA0KKyAgICAweDk1NkUsIDB4OTU2RSwgMHg0RkY2LCAweDk1NkYsIDB4OTU2RiwgMHgxQjE1LCAweDk1NzAsIDB4OTU3MCwgMHgwOUY2LA0KKyAgICAweDk1NzEsIDB4OTU3MywgMHgxQjE2LCAweDk1NzQsIDB4OTU3NSwgMHg0RkY3LCAweDk1NzYsIDB4OTU3NiwgMHgwRjRGLA0KKyAgICAweDk1NzcsIDB4OTU3NywgMHgxRTc1LCAweDk1NzgsIDB4OTU3RSwgMHg0RkY5LCAweDk1N0YsIDB4OTU3RiwgMHgwNEM5LA0KKyAgICAweDk1ODAsIDB4OTU4MCwgMHgyMDdELCAweDk1ODEsIDB4OTU4MSwgMHg1MDAwLCAweDk1ODIsIDB4OTU4MiwgMHgyM0JGLA0KKyAgICAweDk1ODMsIDB4OTU4MywgMHgyMTEzLCAweDk1ODQsIDB4OTU4NSwgMHg1MDAxLCAweDk1ODYsIDB4OTU4NiwgMHgyM0MwLA0KKyAgICAweDk1ODcsIDB4OTU4OCwgMHg1MDAzLCAweDk1ODksIDB4OTU4OSwgMHgxRTQ1LCAweDk1OEEsIDB4OTU4QSwgMHg1MDA1LA0KKyAgICAweDk1OEIsIDB4OTU4QiwgMHgxRkQ4LCAweDk1OEMsIDB4OTU4QywgMHgyM0M0LCAweDk1OEQsIDB4OTU4RCwgMHg1MDA2LA0KKyAgICAweDk1OEUsIDB4OTU4RSwgMHgyM0MyLCAweDk1OEYsIDB4OTU4RiwgMHgyMTA0LCAweDk1OTAsIDB4OTU5MCwgMHg1MDA3LA0KKyAgICAweDk1OTEsIDB4OTU5MSwgMHgyMUJELCAweDk1OTIsIDB4OTU5MiwgMHg1MDA4LCAweDk1OTMsIDB4OTU5MywgMHgxRjg3LA0KKyAgICAweDk1OTQsIDB4OTU5NCwgMHgyM0MzLCAweDk1OTUsIDB4OTU5NywgMHg1MDA5LCAweDk1OTgsIDB4OTU5OCwgMHgyMjY5LA0KKyAgICAweDk1OTksIDB4OTVBMCwgMHg1MDBDLCAweDk1QTEsIDB4OTVBMSwgMHgxRjQzLCAweDk1QTIsIDB4OTVBMiwgMHg1MDE0LA0KKyAgICAweDk1QTMsIDB4OTVBMywgMHgxRjFFLCAweDk1QTQsIDB4OTVBNCwgMHgyNjc5LCAweDk1QTUsIDB4OTVBNSwgMHgxRUVCLA0KKyAgICAweDk1QTYsIDB4OTVBNywgMHg1MDE1LCAweDk1QTgsIDB4OTVBOCwgMHgxRjM1LCAweDk1QTksIDB4OTVBOSwgMHgyMDhBLA0KKyAgICAweDk1QUEsIDB4OTVBQSwgMHg1MDE3LCAweDk1QUIsIDB4OTVBQiwgMHgyM0M3LCAweDk1QUMsIDB4OTVBQywgMHgyM0M5LA0KKyAgICAweDk1QUQsIDB4OTVBRCwgMHgyM0M2LCAweDk1QUUsIDB4OTVCMSwgMHg1MDE4LCAweDk1QjIsIDB4OTVCMiwgMHgyMjRGLA0KKyAgICAweDk1QjMsIDB4OTVCNSwgMHg1MDFDLCAweDk1QjYsIDB4OTVCNiwgMHgyM0NCLCAweDk1QjcsIDB4OTVCOCwgMHg1MDFGLA0KKyAgICAweDk1QjksIDB4OTVCOSwgMHgyMUYzLCAweDk1QkEsIDB4OTVCQSwgMHg1MDIxLCAweDk1QkIsIDB4OTVCQiwgMHgyMUY3LA0KKyAgICAweDk1QkMsIDB4OTVCQywgMHgyM0NGLCAweDk1QkQsIDB4OTVCRCwgMHgyM0NFLCAweDk1QkUsIDB4OTVCRSwgMHgyM0NBLA0KKyAgICAweDk1QkYsIDB4OTVCRiwgMHgyM0NELCAweDk1QzAsIDB4OTVDMiwgMHg1MDIyLCAweDk1QzMsIDB4OTVDMywgMHgyM0QwLA0KKyAgICAweDk1QzQsIDB4OTVDNSwgMHg1MDI1LCAweDk1QzYsIDB4OTVDNiwgMHgyNjZDLCAweDk1QzcsIDB4OTVDNywgMHg1MDI3LA0KKyAgICAweDk1QzgsIDB4OTVDOCwgMHgyM0MxLCAweDk1QzksIDB4OTVDOSwgMHg1MDI4LCAweDk1Q0EsIDB4OTVDQSwgMHgxRkVFLA0KKyAgICAweDk1Q0IsIDB4OTVDQiwgMHgyM0QxLCAweDk1Q0MsIDB4OTVDQywgMHgxRkY4LCAweDk1Q0QsIDB4OTVDRiwgMHg1MDI5LA0KKyAgICAweDk1RDAsIDB4OTVEMCwgMHgyM0QzLCAweDk1RDEsIDB4OTVEMywgMHg1MDJDLCAweDk1RDQsIDB4OTVENCwgMHgyM0QyLA0KKyAgICAweDk1RDUsIDB4OTVENSwgMHgyM0Q0LCAweDk1RDYsIDB4OTVENiwgMHgxRTk4LCAweDk1RDcsIDB4OTVEQiwgMHg1MDJGLA0KKyAgICAweDk1REMsIDB4OTVEQywgMHgxRjJDLCAweDk1REQsIDB4OTVERCwgMHg1MDM0LCAweDk1REUsIDB4OTVERSwgMHgyM0Q1LA0KKyAgICAweDk1REYsIDB4OTVFMCwgMHg1MDM1LCAweDk1RTEsIDB4OTVFMSwgMHgxRTcxLCAweDk1RTIsIDB4OTVFMiwgMHgyNjkxLA0KKyAgICAweDk1RTMsIDB4OTVFNCwgMHg1MDM3LCAweDk1RTUsIDB4OTVFNSwgMHgyM0M1LCAweDk1RTYsIDB4OTVFNywgMHg1MDM5LA0KKyAgICAweDk1RTgsIDB4OTVFOCwgMHgwQUNBLCAweDk1RTksIDB4OTVFOSwgMHgxNjg1LCAweDk1RUEsIDB4OTVFQSwgMHgwQ0ZBLA0KKyAgICAweDk1RUIsIDB4OTVFQiwgMHgxNjg2LCAweDk1RUMsIDB4OTVFQywgMHg1MDNCLCAweDk1RUQsIDB4OTVFRCwgMHgwNDNFLA0KKyAgICAweDk1RUUsIDB4OTVFRSwgMHgwRUQ5LCAweDk1RUYsIDB4OTVFRiwgMHgwNTM2LCAweDk1RjAsIDB4OTVGMCwgMHgwQ0NELA0KKyAgICAweDk1RjEsIDB4OTVGMSwgMHgxNjg3LCAweDk1RjIsIDB4OTVGMiwgMHgwRjNELCAweDk1RjMsIDB4OTVGMywgMHgxNjg4LA0KKyAgICAweDk1RjQsIDB4OTVGNCwgMHgwODU3LCAweDk1RjUsIDB4OTVGNiwgMHgxNjg5LCAweDk1RjcsIDB4OTVGNywgMHgwQUNCLA0KKyAgICAweDk1RjgsIDB4OTVGOCwgMHgxMTQzLCAweDk1RjksIDB4OTVGOSwgMHgwQjM5LCAweDk1RkEsIDB4OTVGQSwgMHgwNzQ0LA0KKyAgICAweDk1RkIsIDB4OTVGQiwgMHgwRUQ0LCAweDk1RkMsIDB4OTVGQywgMHgxNjhCLCAweDk1RkQsIDB4OTVGRCwgMHgwQUZCLA0KKyAgICAweDk1RkUsIDB4OTVGRSwgMHgxNjhDLCAweDk1RkYsIDB4OTVGRiwgMHg1MDNDLCAweDk2MDAsIDB4OTYwMCwgMHgwNjQ0LA0KKyAgICAweDk2MDEsIDB4OTYwMSwgMHgwNkVFLCAweDk2MDIsIDB4OTYwMiwgMHgwNzg5LCAweDk2MDMsIDB4OTYwNCwgMHgxNjhELA0KKyAgICAweDk2MDUsIDB4OTYwNSwgMHgxMTA3LCAweDk2MDYsIDB4OTYwNiwgMHgxNjhGLCAweDk2MDcsIDB4OTYwNywgMHg1MDNELA0KKyAgICAweDk2MDgsIDB4OTYwOCwgMHgxNjkwLCAweDk2MDksIDB4OTYwOSwgMHgwRkY0LCAweDk2MEEsIDB4OTYwRCwgMHgxNjkxLA0KKyAgICAweDk2MEUsIDB4OTYwRSwgMHgwRkZGLCAweDk2MEYsIDB4OTYwRiwgMHgxNjk1LCAweDk2MTAsIDB4OTYxMCwgMHgwNEMyLA0KKyAgICAweDk2MTEsIDB4OTYxMSwgMHgwOUE2LCAweDk2MTIsIDB4OTYxMiwgMHgxNjk2LCAweDk2MTMsIDB4OTYxMywgMHg1MDNFLA0KKyAgICAweDk2MTQsIDB4OTYxNCwgMHgwOTk2LCAweDk2MTUsIDB4OTYxNywgMHgxNjk3LCAweDk2MTgsIDB4OTYxOCwgMHg1MDNGLA0KKyAgICAweDk2MTksIDB4OTYxQSwgMHgxNjlBLCAweDk2MUIsIDB4OTYxQiwgMHg1MDQwLCAweDk2MUMsIDB4OTYxQywgMHgwNkIyLA0KKyAgICAweDk2MUQsIDB4OTYxRCwgMHgxMzU0LCAweDk2MUUsIDB4OTYxRSwgMHg1MDQxLCAweDk2MUYsIDB4OTYxRiwgMHgwNjEyLA0KKyAgICAweDk2MjAsIDB4OTYyMCwgMHg1MDQyLCAweDk2MjEsIDB4OTYyMSwgMHgxMzU2LCAweDk2MjIsIDB4OTYyMiwgMHgxMzU1LA0KKyAgICAweDk2MjMsIDB4OTYyOSwgMHg1MDQzLCAweDk2MkEsIDB4OTYyQSwgMHgxMzU4LCAweDk2MkIsIDB4OTYyRCwgMHg1MDRBLA0KKyAgICAweDk2MkUsIDB4OTYyRSwgMHgwQ0M5LCAweDk2MkYsIDB4OTYzMCwgMHg1MDRELCAweDk2MzEsIDB4OTYzMSwgMHgxMzU3LA0KKyAgICAweDk2MzIsIDB4OTYzMiwgMHgwNjVELCAweDk2MzMsIDB4OTYzMywgMHgxMDFELCAweDk2MzQsIDB4OTYzNCwgMHgxMDdDLA0KKyAgICAweDk2MzUsIDB4OTYzNSwgMHgxMTk0LCAweDk2MzYsIDB4OTYzNiwgMHgwOEE4LCAweDk2MzcsIDB4OTYzQSwgMHg1MDRGLA0KKyAgICAweDk2M0IsIDB4OTYzQiwgMHgxMjQ1LCAweDk2M0MsIDB4OTYzQywgMHgxMzVBLCAweDk2M0QsIDB4OTYzRCwgMHgxMzU5LA0KKyAgICAweDk2M0UsIDB4OTYzRSwgMHg1MDUzLCAweDk2M0YsIDB4OTYzRiwgMHgwM0FELCAweDk2NDAsIDB4OTY0MCwgMHgwRTg0LA0KKyAgICAweDk2NDEsIDB4OTY0MSwgMHg1MDU0LCAweDk2NDIsIDB4OTY0MiwgMHgxMzVCLCAweDk2NDMsIDB4OTY0MywgMHg1MDU1LA0KKyAgICAweDk2NDQsIDB4OTY0NCwgMHgwNkI4LCAweDk2NDUsIDB4OTY0NSwgMHgwODNELCAweDk2NDYsIDB4OTY0NiwgMHgwQTY0LA0KKyAgICAweDk2NDcsIDB4OTY0NywgMHgwQTRCLCAweDk2NDgsIDB4OTY0OCwgMHgwNEU3LCAweDk2NDksIDB4OTY0OSwgMHgxMzVDLA0KKyAgICAweDk2NEEsIDB4OTY0QSwgMHg1MDU2LCAweDk2NEIsIDB4OTY0QiwgMHgwQTUxLCAweDk2NEMsIDB4OTY0QywgMHgwQjEzLA0KKyAgICAweDk2NEQsIDB4OTY0RCwgMHgwODg2LCAweDk2NEUsIDB4OTY0RiwgMHg1MDU3LCAweDk2NTAsIDB4OTY1MCwgMHgwRjRCLA0KKyAgICAweDk2NTEsIDB4OTY1MywgMHg1MDU5LCAweDk2NTQsIDB4OTY1NCwgMHgxMzVELCAweDk2NTUsIDB4OTY1NSwgMHgwQ0ZCLA0KKyAgICAweDk2NTYsIDB4OTY1NywgMHg1MDVDLCAweDk2NTgsIDB4OTY1OCwgMHgyMzFBLCAweDk2NTksIDB4OTY1QSwgMHg1MDVFLA0KKyAgICAweDk2NUIsIDB4OTY1QiwgMHgwNDQ2LCAweDk2NUMsIDB4OTY1QywgMHg1MDYwLCAweDk2NUQsIDB4OTY1RCwgMHgyMTE0LA0KKyAgICAweDk2NUUsIDB4OTY1RSwgMHg1MDYxLCAweDk2NUYsIDB4OTY1RiwgMHgxMzVFLCAweDk2NjAsIDB4OTY2MCwgMHg1MDYyLA0KKyAgICAweDk2NjEsIDB4OTY2MSwgMHgwNUY3LCAweDk2NjIsIDB4OTY2MiwgMHgxMEZELCAweDk2NjMsIDB4OTY2MywgMHgyMjg0LA0KKyAgICAweDk2NjQsIDB4OTY2NCwgMHgwNTIyLCAweDk2NjUsIDB4OTY2NiwgMHg1MDYzLCAweDk2NjcsIDB4OTY2NywgMHgxMzVGLA0KKyAgICAweDk2NjgsIDB4OTY2OCwgMHgxMTBDLCAweDk2NjksIDB4OTY2OSwgMHgwRjQyLCAweDk2NkEsIDB4OTY2QSwgMHgwQkE0LA0KKyAgICAweDk2NkIsIDB4OTY2QiwgMHg1MDY1LCAweDk2NkMsIDB4OTY2QywgMHgxMzYwLCAweDk2NkQsIDB4OTY2RiwgMHg1MDY2LA0KKyAgICAweDk2NzAsIDB4OTY3MCwgMHgyMjFDLCAweDk2NzEsIDB4OTY3MSwgMHg1MDY5LCAweDk2NzIsIDB4OTY3MiwgMHgxMzYxLA0KKyAgICAweDk2NzMsIDB4OTY3MywgMHgxRTdFLCAweDk2NzQsIDB4OTY3NCwgMHgxMzYyLCAweDk2NzUsIDB4OTY3NSwgMHgwQTMzLA0KKyAgICAweDk2NzYsIDB4OTY3NiwgMHgwRTI4LCAweDk2NzcsIDB4OTY3NywgMHgwRjRBLCAweDk2NzgsIDB4OTY3OCwgMHgyMDRELA0KKyAgICAweDk2NzksIDB4OTY3QywgMHg1MDZBLCAweDk2N0QsIDB4OTY3RCwgMHgyMjAxLCAweDk2N0UsIDB4OTY4NCwgMHg1MDZFLA0KKyAgICAweDk2ODUsIDB4OTY4NSwgMHgxMENDLCAweDk2ODYsIDB4OTY4NiwgMHgwQTQ4LCAweDk2ODcsIDB4OTY4NywgMHg1MDc1LA0KKyAgICAweDk2ODgsIDB4OTY4OCwgMHgxMzYzLCAweDk2ODksIDB4OTY4OSwgMHg1MDc2LCAweDk2OEEsIDB4OTY4QSwgMHgxRUQ5LA0KKyAgICAweDk2OEIsIDB4OTY4QiwgMHgwRERBLCAweDk2OEMsIDB4OTY4QywgMHg1MDc3LCAweDk2OEQsIDB4OTY4RCwgMHgxMzY0LA0KKyAgICAweDk2OEUsIDB4OTY4RSwgMHgxRkIyLCAweDk2OEYsIDB4OTY4RiwgMHgwRERCLCAweDk2OTAsIDB4OTY5MCwgMHgxMDg1LA0KKyAgICAweDk2OTEsIDB4OTY5MywgMHg1MDc4LCAweDk2OTQsIDB4OTY5NCwgMHgwNkVGLCAweDk2OTUsIDB4OTY5NSwgMHgyMjUyLA0KKyAgICAweDk2OTYsIDB4OTY5NiwgMHg1MDdCLCAweDk2OTcsIDB4OTY5NywgMHgxMzY1LCAweDk2OTgsIDB4OTY5OCwgMHgwM0JBLA0KKyAgICAweDk2OTksIDB4OTY5OSwgMHgwRjIzLCAweDk2OUEsIDB4OTY5QSwgMHg1MDdDLCAweDk2OUIsIDB4OTY5QiwgMHgxRjc5LA0KKyAgICAweDk2OUMsIDB4OTY5QywgMHgxMTcwLCAweDk2OUQsIDB4OTZBNiwgMHg1MDdELCAweDk2QTcsIDB4OTZBNywgMHgwREUyLA0KKyAgICAweDk2QTgsIDB4OTZBOCwgMHgyMTU3LCAweDk2QTksIDB4OTZBOSwgMHg1MDg3LCAweDk2QUEsIDB4OTZBQSwgMHgyMUJGLA0KKyAgICAweDk2QUIsIDB4OTZBRiwgMHg1MDg4LCAweDk2QjAsIDB4OTZCMCwgMHgxMzY2LCAweDk2QjEsIDB4OTZCMSwgMHgyMjFGLA0KKyAgICAweDk2QjIsIDB4OTZCMiwgMHg1MDhELCAweDk2QjMsIDB4OTZCMywgMHgxNjg0LCAweDk2QjQsIDB4OTZCNCwgMHgyMDNELA0KKyAgICAweDk2QjUsIDB4OTZCNSwgMHg1MDhFLCAweDk2QjYsIDB4OTZCNiwgMHgwOUVFLCAweDk2QjcsIDB4OTZCNywgMHg1MDhGLA0KKyAgICAweDk2QjgsIDB4OTZCOCwgMHgyMDE1LCAweDk2QjksIDB4OTZCOSwgMHgxRDc5LCAweDk2QkEsIDB4OTZCQSwgMHg1MDkwLA0KKyAgICAweDk2QkIsIDB4OTZCQiwgMHgyNkE1LCAweDk2QkMsIDB4OTZCRCwgMHgxRDdBLCAweDk2QkUsIDB4OTZCRSwgMHgwQjM0LA0KKyAgICAweDk2QkYsIDB4OTZCRiwgMHg1MDkxLCAweDk2QzAsIDB4OTZDMCwgMHgwQzkzLCAweDk2QzEsIDB4OTZDMSwgMHgxMDBDLA0KKyAgICAweDk2QzIsIDB4OTZDMywgMHg1MDkyLCAweDk2QzQsIDB4OTZDNCwgMHgwRkE2LCAweDk2QzUsIDB4OTZDNSwgMHgwRkVFLA0KKyAgICAweDk2QzYsIDB4OTZDNiwgMHgwODIyLCAweDk2QzcsIDB4OTZDNywgMHgwNzI2LCAweDk2QzgsIDB4OTZDOCwgMHg1MDk0LA0KKyAgICAweDk2QzksIDB4OTZDOSwgMHgxQjFDLCAweDk2Q0EsIDB4OTZDQiwgMHg1MDk1LCAweDk2Q0MsIDB4OTZDQywgMHgwNTQ5LA0KKyAgICAweDk2Q0QsIDB4OTZDRCwgMHgxMDlGLCAweDk2Q0UsIDB4OTZDRSwgMHgxRDdDLCAweDk2Q0YsIDB4OTZDRiwgMHgwNTIwLA0KKyAgICAweDk2RDAsIDB4OTZEMSwgMHg1MDk3LCAweDk2RDIsIDB4OTZEMiwgMHgxRDdELCAweDk2RDMsIDB4OTZENCwgMHg1MDk5LA0KKyAgICAweDk2RDUsIDB4OTZENSwgMHgwNUQyLCAweDk2RDYsIDB4OTZENiwgMHgyMTU2LCAweDk2RDcsIDB4OTZEOCwgMHg1MDlCLA0KKyAgICAweDk2RDksIDB4OTZEOSwgMHgyMTQ0LCAweDk2REEsIDB4OTZEQSwgMHg1MDlELCAweDk2REIsIDB4OTZEQiwgMHgxRTkxLA0KKyAgICAweDk2REMsIDB4OTZEQywgMHgyMjU3LCAweDk2REQsIDB4OTZERiwgMHg1MDlFLCAweDk2RTAsIDB4OTZFMCwgMHgxRDdGLA0KKyAgICAweDk2RTEsIDB4OTZFMSwgMHg1MEExLCAweDk2RTIsIDB4OTZFMiwgMHgyMDBBLCAweDk2RTMsIDB4OTZFMywgMHgyMDkyLA0KKyAgICAweDk2RTQsIDB4OTZFNywgMHg1MEEyLCAweDk2RTgsIDB4OTZFOCwgMHgxMENGLCAweDk2RTksIDB4OTZFOSwgMHgxRDYxLA0KKyAgICAweDk2RUEsIDB4OTZFQSwgMHgwRkQyLCAweDk2RUIsIDB4OTZFRSwgMHg1MEE2LCAweDk2RUYsIDB4OTZFRiwgMHgxRDYzLA0KKyAgICAweDk2RjAsIDB4OTZGMSwgMHg1MEFBLCAweDk2RjIsIDB4OTZGMiwgMHgyMjUwLCAweDk2RjMsIDB4OTZGMywgMHgxRDYyLA0KKyAgICAweDk2RjQsIDB4OTZGNSwgMHg1MEFDLCAweDk2RjYsIDB4OTZGNiwgMHgwQTJDLCAweDk2RjcsIDB4OTZGNywgMHgwOUMyLA0KKyAgICAweDk2RjgsIDB4OTZGOCwgMHg1MEFFLCAweDk2RjksIDB4OTZGOSwgMHgwNDBCLCAweDk2RkEsIDB4OTZGQSwgMHg1MEFGLA0KKyAgICAweDk2RkIsIDB4OTZGQiwgMHgxRUMzLCAweDk2RkMsIDB4OTZGRCwgMHg1MEIwLCAweDk2RkUsIDB4OTZGRSwgMHgwRUZDLA0KKyAgICAweDk2RkYsIDB4OTZGRiwgMHg1MEIyLCAweDk3MDAsIDB4OTcwMCwgMHgwRkIzLCAweDk3MDEsIDB4OTcwMSwgMHgxRDY1LA0KKyAgICAweDk3MDIsIDB4OTcwMywgMHg1MEIzLCAweDk3MDQsIDB4OTcwNCwgMHgwRjYzLCAweDk3MDUsIDB4OTcwNSwgMHg1MEI1LA0KKyAgICAweDk3MDYsIDB4OTcwNiwgMHgxRDY0LCAweDk3MDcsIDB4OTcwNywgMHgxMTkxLCAweDk3MDgsIDB4OTcwOCwgMHgxRDY2LA0KKyAgICAweDk3MDksIDB4OTcwOSwgMHgwQUJFLCAweDk3MEEsIDB4OTcwQywgMHg1MEI2LCAweDk3MEQsIDB4OTcwRCwgMHgwODA5LA0KKyAgICAweDk3MEUsIDB4OTcwRSwgMHgxRDY4LCAweDk3MEYsIDB4OTcwRiwgMHgxRDY3LCAweDk3MTAsIDB4OTcxMiwgMHg1MEI5LA0KKyAgICAweDk3MTMsIDB4OTcxMywgMHgwQjQxLCAweDk3MTQsIDB4OTcxNSwgMHg1MEJDLCAweDk3MTYsIDB4OTcxNiwgMHgwQTIxLA0KKyAgICAweDk3MTcsIDB4OTcxQiwgMHg1MEJFLCAweDk3MUMsIDB4OTcxQywgMHgwRDlGLCAweDk3MUQsIDB4OTcxRCwgMHg1MEMzLA0KKyAgICAweDk3MUUsIDB4OTcxRSwgMHgwRjI5LCAweDk3MUYsIDB4OTcyNiwgMHg1MEM0LCAweDk3MjcsIDB4OTcyNywgMHgyMUE4LA0KKyAgICAweDk3MjgsIDB4OTcyOSwgMHg1MENDLCAweDk3MkEsIDB4OTcyQSwgMHgxRDY5LCAweDk3MkIsIDB4OTcyQywgMHg1MENFLA0KKyAgICAweDk3MkQsIDB4OTcyRCwgMHgxRDZBLCAweDk3MkUsIDB4OTcyRiwgMHg1MEQwLCAweDk3MzAsIDB4OTczMCwgMHgxRDZCLA0KKyAgICAweDk3MzEsIDB4OTczMSwgMHg1MEQyLCAweDk3MzIsIDB4OTczMiwgMHgwQTVELCAweDk3MzMsIDB4OTczNywgMHg1MEQzLA0KKyAgICAweDk3MzgsIDB4OTczOCwgMHgwM0RGLCAweDk3MzksIDB4OTczOSwgMHgwQkJBLCAweDk3M0EsIDB4OTczQywgMHg1MEQ4LA0KKyAgICAweDk3M0QsIDB4OTczRCwgMHgyNjBELCAweDk3M0UsIDB4OTczRSwgMHgxRDZDLCAweDk3M0YsIDB4OTc0MSwgMHg1MERCLA0KKyAgICAweDk3NDIsIDB4OTc0MiwgMHgyNjBDLCAweDk3NDMsIDB4OTc0MywgMHg1MERFLCAweDk3NDQsIDB4OTc0NCwgMHgyNjBFLA0KKyAgICAweDk3NDUsIDB4OTc0NywgMHg1MERGLCAweDk3NDgsIDB4OTc0OCwgMHgyMDMyLCAweDk3NDksIDB4OTc1MSwgMHg1MEUyLA0KKyAgICAweDk3NTIsIDB4OTc1MiwgMHgwQzVELCAweDk3NTMsIDB4OTc1MywgMHgxRDYwLCAweDk3NTQsIDB4OTc1NSwgMHg1MEVCLA0KKyAgICAweDk3NTYsIDB4OTc1NiwgMHgwOEU3LCAweDk3NTcsIDB4OTc1OCwgMHg1MEVELCAweDk3NTksIDB4OTc1OSwgMHgwOEUxLA0KKyAgICAweDk3NUEsIDB4OTc1QSwgMHgyNjBCLCAweDk3NUIsIDB4OTc1QiwgMHgwNUM2LCAweDk3NUMsIDB4OTc1RCwgMHg1MEVGLA0KKyAgICAweDk3NUUsIDB4OTc1RSwgMHgwNjY0LCAweDk3NUYsIDB4OTc1RiwgMHg1MEYxLCAweDk3NjAsIDB4OTc2MCwgMHgwOTRDLA0KKyAgICAweDk3NjEsIDB4OTc2MSwgMHgwQUQ3LCAweDk3NjIsIDB4OTc2MiwgMHgwQUVCLCAweDk3NjMsIDB4OTc2NCwgMHg1MEYyLA0KKyAgICAweDk3NjUsIDB4OTc2NSwgMHgxMjgyLCAweDk3NjYsIDB4OTc2NywgMHg1MEY0LCAweDk3NjgsIDB4OTc2OCwgMHgyMkMzLA0KKyAgICAweDk3NjksIDB4OTc2OSwgMHgwNkVBLCAweDk3NkEsIDB4OTc3MiwgMHg1MEY2LCAweDk3NzMsIDB4OTc3MywgMHgwOENBLA0KKyAgICAweDk3NzQsIDB4OTc3NCwgMHgwRkNFLCAweDk3NzUsIDB4OTc3NSwgMHg1MEZGLCAweDk3NzYsIDB4OTc3NiwgMHgwM0RCLA0KKyAgICAweDk3NzcsIDB4OTc3QiwgMHg1MTAwLCAweDk3N0MsIDB4OTc3QywgMHgxREM4LCAweDk3N0QsIDB4OTc4NCwgMHg1MTA1LA0KKyAgICAweDk3ODUsIDB4OTc4NSwgMHgxREM5LCAweDk3ODYsIDB4OTc4QSwgMHg1MTBELCAweDk3OEIsIDB4OTc4QiwgMHgwRjc3LA0KKyAgICAweDk3OEMsIDB4OTc4QywgMHg1MTEyLCAweDk3OEQsIDB4OTc4RCwgMHgwM0JCLCAweDk3OEUsIDB4OTc4RSwgMHg1MTEzLA0KKyAgICAweDk3OEYsIDB4OTc4RiwgMHgxRjIzLCAweDk3OTAsIDB4OTc5MCwgMHg1MTE0LCAweDk3OTEsIDB4OTc5MiwgMHgxRENBLA0KKyAgICAweDk3OTMsIDB4OTc5MywgMHg1MTE1LCAweDk3OTQsIDB4OTc5NCwgMHgxRENDLCAweDk3OTUsIDB4OTc5NywgMHg1MTE2LA0KKyAgICAweDk3OTgsIDB4OTc5OCwgMHgwQzQ3LCAweDk3OTksIDB4OTc5RiwgMHg1MTE5LCAweDk3QTAsIDB4OTdBMCwgMHgwOEZFLA0KKyAgICAweDk3QTEsIDB4OTdBMiwgMHg1MTIwLCAweDk3QTMsIDB4OTdBMywgMHgxRENGLCAweDk3QTQsIDB4OTdBNSwgMHg1MTIyLA0KKyAgICAweDk3QTYsIDB4OTdBNiwgMHgyNjk1LCAweDk3QTcsIDB4OTdBQSwgMHg1MTI0LCAweDk3QUIsIDB4OTdBQiwgMHgxRENFLA0KKyAgICAweDk3QUMsIDB4OTdBQywgMHg1MTI4LCAweDk3QUQsIDB4OTdBRCwgMHgwNDQ3LCAweDk3QUUsIDB4OTdBRSwgMHg1MTI5LA0KKyAgICAweDk3QUYsIDB4OTdBRiwgMHgxRENELCAweDk3QjAsIDB4OTdCMSwgMHg1MTJBLCAweDk3QjIsIDB4OTdCMiwgMHgxREQwLA0KKyAgICAweDk3QjMsIDB4OTdCMywgMHg1MTJDLCAweDk3QjQsIDB4OTdCNCwgMHgxREQxLCAweDk3QjUsIDB4OTdCQywgMHg1MTJELA0KKyAgICAweDk3QkQsIDB4OTdCRCwgMHgyNjVFLCAweDk3QkUsIDB4OTdDMiwgMHg1MTM1LCAweDk3QzMsIDB4OTdDMywgMHgyNjVELA0KKyAgICAweDk3QzQsIDB4OTdDNSwgMHg1MTNBLCAweDk3QzYsIDB4OTdDNiwgMHgyNjkyLCAweDk3QzcsIDB4OTdDOCwgMHg1MTNDLA0KKyAgICAweDk3QzksIDB4OTdDOSwgMHgyNjVGLCAweDk3Q0EsIDB4OTdDQSwgMHg1MTNFLCAweDk3Q0IsIDB4OTdDQiwgMHgyMThELA0KKyAgICAweDk3Q0MsIDB4OTdDQywgMHgyMEZELCAweDk3Q0QsIDB4OTdEMiwgMHg1MTNGLCAweDk3RDMsIDB4OTdEMywgMHgxRjQwLA0KKyAgICAweDk3RDQsIDB4OTdEOCwgMHg1MTQ1LCAweDk3RDksIDB4OTdEOSwgMHgyNDY1LCAweDk3REEsIDB4OTdEQiwgMHg1MTRBLA0KKyAgICAweDk3REMsIDB4OTdEQywgMHgyNDY3LCAweDk3REQsIDB4OTdERCwgMHg1MTRDLCAweDk3REUsIDB4OTdERSwgMHgyNDY2LA0KKyAgICAweDk3REYsIDB4OTdFNSwgMHg1MTRELCAweDk3RTYsIDB4OTdFNiwgMHgwRUIzLCAweDk3RTcsIDB4OTdFNywgMHgwQ0E4LA0KKyAgICAweDk3RTgsIDB4OTdFOCwgMHg1MTU0LCAweDk3RTksIDB4OTdFOSwgMHgwNzYyLCAweDk3RUEsIDB4OTdFQywgMHgxODRFLA0KKyAgICAweDk3RUQsIDB4OTdFRCwgMHgwOEYxLCAweDk3RUUsIDB4OTdGMiwgMHg1MTU1LCAweDk3RjMsIDB4OTdGMywgMHgxMDdCLA0KKyAgICAweDk3RjQsIDB4OTdGNCwgMHg1MTVBLCAweDk3RjUsIDB4OTdGNSwgMHgxMTEyLCAweDk3RjYsIDB4OTdGNiwgMHgwRDExLA0KKyAgICAweDk3RjcsIDB4OTdGRSwgMHg1MTVCLCAweDk3RkYsIDB4OTdGRiwgMHgyMUM5LCAweDk4MDAsIDB4OTgwMCwgMHg1MTYzLA0KKyAgICAweDk4MDEsIDB4OTgwMSwgMHgyMjA5LCAweDk4MDIsIDB4OTgwMiwgMHgxRUM5LCAweDk4MDMsIDB4OTgwMywgMHgyMEU5LA0KKyAgICAweDk4MDQsIDB4OTgwNCwgMHg1MTY0LCAweDk4MDUsIDB4OTgwNSwgMHgyMUNBLCAweDk4MDYsIDB4OTgwNiwgMHgyMTQ2LA0KKyAgICAweDk4MDcsIDB4OTgwNywgMHgyNUM1LCAweDk4MDgsIDB4OTgwOCwgMHgyMURDLCAweDk4MDksIDB4OTgwOSwgMHg1MTY1LA0KKyAgICAweDk4MEEsIDB4OTgwQSwgMHgyNDVFLCAweDk4MEIsIDB4OTgwQiwgMHg1MTY2LCAweDk4MEMsIDB4OTgwQywgMHgyMTRGLA0KKyAgICAweDk4MEQsIDB4OTgwRCwgMHg1MTY3LCAweDk4MEUsIDB4OTgwRiwgMHgyNUM2LCAweDk4MTAsIDB4OTgxMCwgMHgyMjQxLA0KKyAgICAweDk4MTEsIDB4OTgxMSwgMHgyMThBLCAweDk4MTIsIDB4OTgxMiwgMHgxRTJGLCAweDk4MTMsIDB4OTgxMywgMHgxRURDLA0KKyAgICAweDk4MTQsIDB4OTgxNiwgMHg1MTY4LCAweDk4MTcsIDB4OTgxNywgMHgyMEJGLCAweDk4MTgsIDB4OTgxOCwgMHgyMDM0LA0KKyAgICAweDk4MTksIDB4OTgxQiwgMHg1MTZCLCAweDk4MUMsIDB4OTgxQywgMHgyNUM5LCAweDk4MUQsIDB4OTgyMCwgMHg1MTZFLA0KKyAgICAweDk4MjEsIDB4OTgyMSwgMHgyNUM4LCAweDk4MjIsIDB4OTgyMywgMHg1MTcyLCAweDk4MjQsIDB4OTgyNCwgMHgyMjBFLA0KKyAgICAweDk4MjUsIDB4OTgyNSwgMHg1MTc0LCAweDk4MjYsIDB4OTgyNiwgMHgyNUNCLCAweDk4MjcsIDB4OTgyQywgMHg1MTc1LA0KKyAgICAweDk4MkQsIDB4OTgyRCwgMHgyMTdELCAweDk4MkUsIDB4OTgyRiwgMHg1MTdCLCAweDk4MzAsIDB4OTgzMCwgMHgxRjdFLA0KKyAgICAweDk4MzEsIDB4OTgzNiwgMHg1MTdELCAweDk4MzcsIDB4OTgzNywgMHgyNUNDLCAweDk4MzgsIDB4OTgzOCwgMHgxRkMzLA0KKyAgICAweDk4MzksIDB4OTgzQSwgMHg1MTgzLCAweDk4M0IsIDB4OTgzQiwgMHgyMEI5LCAweDk4M0MsIDB4OTgzQywgMHg1MTg1LA0KKyAgICAweDk4M0QsIDB4OTgzRCwgMHgyMTgxLCAweDk4M0UsIDB4OTg0NSwgMHg1MTg2LCAweDk4NDYsIDB4OTg0NiwgMHgxRkRBLA0KKyAgICAweDk4NDcsIDB4OTg0QiwgMHg1MThFLCAweDk4NEMsIDB4OTg0QywgMHgyMTczLCAweDk4NEQsIDB4OTg0RCwgMHgxRUUxLA0KKyAgICAweDk4NEUsIDB4OTg0RSwgMHgyNUNELCAweDk4NEYsIDB4OTg1MiwgMHg1MTkzLCAweDk4NTMsIDB4OTg1MywgMHgyNUNFLA0KKyAgICAweDk4NTQsIDB4OTg1NCwgMHgyMUY2LCAweDk4NTUsIDB4OTg1NywgMHg1MTk3LCAweDk4NTgsIDB4OTg1OCwgMHgyMjRCLA0KKyAgICAweDk4NTksIDB4OTg1OSwgMHgyNUQxLCAweDk4NUEsIDB4OTg1QSwgMHg1MTlBLCAweDk4NUIsIDB4OTg1QiwgMHgxRUMwLA0KKyAgICAweDk4NUMsIDB4OTg1RCwgMHg1MTlCLCAweDk4NUUsIDB4OTg1RSwgMHgyMDA4LCAweDk4NUYsIDB4OTg2MSwgMHg1MTlELA0KKyAgICAweDk4NjIsIDB4OTg2MiwgMHgyNUQwLCAweDk4NjMsIDB4OTg2NCwgMHg1MUEwLCAweDk4NjUsIDB4OTg2NSwgMHgyNUQyLA0KKyAgICAweDk4NjYsIDB4OTg2NiwgMHg1MUEyLCAweDk4NjcsIDB4OTg2NywgMHgxRjJBLCAweDk4NjgsIDB4OTg2QSwgMHg1MUEzLA0KKyAgICAweDk4NkIsIDB4OTg2QiwgMHgxRTcyLCAweDk4NkMsIDB4OTg2QywgMHgyNUQzLCAweDk4NkQsIDB4OTg2RSwgMHg1MUE2LA0KKyAgICAweDk4NkYsIDB4OTg2RiwgMHgyMUJFLCAweDk4NzAsIDB4OTg3MCwgMHgyNUQ0LCAweDk4NzEsIDB4OTg3MSwgMHgyMDQ0LA0KKyAgICAweDk4NzIsIDB4OTg3MiwgMHg1MUE4LCAweDk4NzMsIDB4OTg3MywgMHgyNUNGLCAweDk4NzQsIDB4OTg3NCwgMHgyMEYzLA0KKyAgICAweDk4NzUsIDB4OTg3NSwgMHgxMDNBLCAweDk4NzYsIDB4OTg3NiwgMHgwNUU0LCAweDk4NzcsIDB4OTg3NywgMHgwQzY3LA0KKyAgICAweDk4NzgsIDB4OTg3OCwgMHgxQkUwLCAweDk4NzksIDB4OTg3OSwgMHgwRjVCLCAweDk4N0EsIDB4OTg3QSwgMHgwREE4LA0KKyAgICAweDk4N0IsIDB4OTg3QiwgMHgwRkI2LCAweDk4N0MsIDB4OTg3QywgMHgxODI3LCAweDk4N0QsIDB4OTg3RCwgMHgwRTk4LA0KKyAgICAweDk4N0UsIDB4OTg3RSwgMHgwNzI0LCAweDk4N0YsIDB4OTg3RiwgMHgwNjE4LCAweDk4ODAsIDB4OTg4MCwgMHgxQkUxLA0KKyAgICAweDk4ODEsIDB4OTg4MSwgMHgwM0VGLCAweDk4ODIsIDB4OTg4MiwgMHgwREMxLCAweDk4ODMsIDB4OTg4MywgMHgxQkUyLA0KKyAgICAweDk4ODQsIDB4OTg4NCwgMHgxMEU3LCAweDk4ODUsIDB4OTg4NSwgMHgwQTU0LCAweDk4ODYsIDB4OTg4NiwgMHgwQTM1LA0KKyAgICAweDk4ODcsIDB4OTg4NywgMHgwQkUzLCAweDk4ODgsIDB4OTg4OCwgMHgwOEUwLCAweDk4ODksIDB4OTg4OSwgMHgxQkUzLA0KKyAgICAweDk4OEEsIDB4OTg4QSwgMHgwODQ4LCAweDk4OEIsIDB4OTg4QiwgMHg1MUE5LCAweDk4OEMsIDB4OTg4RCwgMHgxQkU0LA0KKyAgICAweDk4OEUsIDB4OTg4RSwgMHg1MUFBLCAweDk4OEYsIDB4OTg4RiwgMHgxQkU2LCAweDk4OTAsIDB4OTg5MCwgMHgxMDRBLA0KKyAgICAweDk4OTEsIDB4OTg5MSwgMHgwQkQ0LCAweDk4OTIsIDB4OTg5MiwgMHg1MUFCLCAweDk4OTMsIDB4OTg5MywgMHgwRTc4LA0KKyAgICAweDk4OTQsIDB4OTg5NCwgMHgxQkU3LCAweDk4OTUsIDB4OTg5NSwgMHg1MUFDLCAweDk4OTYsIDB4OTg5NiwgMHgxMDk2LA0KKyAgICAweDk4OTcsIDB4OTg5NywgMHgwOTUyLCAweDk4OTgsIDB4OTg5OCwgMHgwRTM1LCAweDk4OTksIDB4OTg5OSwgMHg1MUFELA0KKyAgICAweDk4OUEsIDB4OTg5QiwgMHgxQkU4LCAweDk4OUMsIDB4OTg5QywgMHgwRkZFLCAweDk4OUQsIDB4OTg5RCwgMHgwNjJELA0KKyAgICAweDk4OUUsIDB4OTg5RiwgMHgxQkVBLCAweDk4QTAsIDB4OThBMCwgMHgwNUMwLCAweDk4QTEsIDB4OThBMiwgMHgxQkVDLA0KKyAgICAweDk4QTMsIDB4OThBMywgMHg1MUFFLCAweDk4QTQsIDB4OThBNCwgMHgwNEMzLCAweDk4QTUsIDB4OThBNiwgMHgxQkVFLA0KKyAgICAweDk4QTcsIDB4OThBNywgMHgwQzgyLCAweDk4QTgsIDB4OThBOCwgMHgxRjAwLCAweDk4QTksIDB4OThBRCwgMHg1MUFGLA0KKyAgICAweDk4QUUsIDB4OThBRiwgMHgyNENDLCAweDk4QjAsIDB4OThCMCwgMHg1MUI0LCAweDk4QjEsIDB4OThCMSwgMHgyNjk4LA0KKyAgICAweDk4QjIsIDB4OThCMiwgMHg1MUI1LCAweDk4QjMsIDB4OThCMywgMHgyNjc4LCAweDk4QjQsIDB4OThCNSwgMHg1MUI2LA0KKyAgICAweDk4QjYsIDB4OThCNiwgMHgyNENFLCAweDk4QjcsIDB4OThCQiwgMHg1MUI4LCAweDk4QkMsIDB4OThCQywgMHgyNENGLA0KKyAgICAweDk4QkQsIDB4OThDMywgMHg1MUJELCAweDk4QzQsIDB4OThDNCwgMHgyMEI4LCAweDk4QzUsIDB4OThDNSwgMHg1MUM0LA0KKyAgICAweDk4QzYsIDB4OThDNiwgMHgyNEQwLCAweDk4QzcsIDB4OThDNywgMHg1MUM1LCAweDk4QzgsIDB4OThDOCwgMHgyNEQxLA0KKyAgICAweDk4QzksIDB4OThDRCwgMHg1MUM2LCAweDk4Q0UsIDB4OThDRSwgMHgwNjg0LCAweDk4Q0YsIDB4OThEMCwgMHg1MUNCLA0KKyAgICAweDk4RDEsIDB4OThEMywgMHgxOUI3LCAweDk4RDQsIDB4OThENCwgMHg1MUNELCAweDk4RDUsIDB4OThENSwgMHgxOUJBLA0KKyAgICAweDk4RDYsIDB4OThENywgMHg1MUNFLCAweDk4RDgsIDB4OThEOCwgMHgwQkNELCAweDk4RDksIDB4OThEQSwgMHgxOUJCLA0KKyAgICAweDk4REIsIDB4OThEQiwgMHgxRUY0LCAweDk4REMsIDB4OThERCwgMHg1MUQwLCAweDk4REUsIDB4OThERSwgMHgwNjY2LA0KKyAgICAweDk4REYsIDB4OThERiwgMHgwRDRBLCAweDk4RTAsIDB4OThFMCwgMHgyMzlCLCAweDk4RTEsIDB4OThFMSwgMHg1MUQyLA0KKyAgICAweDk4RTIsIDB4OThFMiwgMHgyNjdFLCAweDk4RTMsIDB4OThFNiwgMHg1MUQzLCAweDk4RTcsIDB4OThFNywgMHgxNjFBLA0KKyAgICAweDk4RTgsIDB4OThFOCwgMHgxREU3LCAweDk4RTksIDB4OThFOSwgMHgyMzlELCAweDk4RUEsIDB4OThFQiwgMHgyMzlGLA0KKyAgICAweDk4RUMsIDB4OThFQywgMHg1MUQ3LCAweDk4RUQsIDB4OThFRCwgMHgyM0ExLCAweDk4RUUsIDB4OThFRSwgMHg1MUQ4LA0KKyAgICAweDk4RUYsIDB4OThFRiwgMHgxRUYxLCAweDk4RjAsIDB4OThGMSwgMHg1MUQ5LCAweDk4RjIsIDB4OThGMiwgMHgyMjFFLA0KKyAgICAweDk4RjMsIDB4OThGMywgMHg1MURCLCAweDk4RjQsIDB4OThGNCwgMHgyM0EyLCAweDk4RjUsIDB4OThGQiwgMHg1MURDLA0KKyAgICAweDk4RkMsIDB4OThGQywgMHgyMTRCLCAweDk4RkQsIDB4OThGRCwgMHgxRTM2LCAweDk4RkUsIDB4OThGRSwgMHgyMTM1LA0KKyAgICAweDk4RkYsIDB4OThGRiwgMHg1MUUzLCAweDk5MDAsIDB4OTkwMiwgMHg1MUU0LCAweDk5MDMsIDB4OTkwMywgMHgxRkFELA0KKyAgICAweDk5MDQsIDB4OTkwNCwgMHg1MUU3LCAweDk5MDUsIDB4OTkwNSwgMHgxRTUzLCAweDk5MDYsIDB4OTkwOCwgMHg1MUU4LA0KKyAgICAweDk5MDksIDB4OTkwOSwgMHgyM0EzLCAweDk5MEEsIDB4OTkwQSwgMHgyMjAzLCAweDk5MEIsIDB4OTkwQiwgMHg1MUVCLA0KKyAgICAweDk5MEMsIDB4OTkwQywgMHgxRUU3LCAweDk5MEQsIDB4OTkwRCwgMHgxREU4LCAweDk5MEUsIDB4OTkwRiwgMHg1MUVDLA0KKyAgICAweDk5MTAsIDB4OTkxMCwgMHgwNDk0LCAweDk5MTEsIDB4OTkxMSwgMHgyM0E0LCAweDk5MTIsIDB4OTkxMiwgMHgyMDk3LA0KKyAgICAweDk5MTMsIDB4OTkxMywgMHgxRUU0LCAweDk5MTQsIDB4OTkxNywgMHg1MUVFLCAweDk5MTgsIDB4OTkxOCwgMHgyMjM4LA0KKyAgICAweDk5MTksIDB4OTkxQSwgMHg1MUYyLCAweDk5MUIsIDB4OTkxQiwgMHgyM0E1LCAweDk5MUMsIDB4OTkxRCwgMHg1MUY0LA0KKyAgICAweDk5MUUsIDB4OTkxRSwgMHgxRjlBLCAweDk5MUYsIDB4OTkyMCwgMHg1MUY2LCAweDk5MjEsIDB4OTkyMSwgMHgyMUMzLA0KKyAgICAweDk5MjIsIDB4OTkyNywgMHg1MUY4LCAweDk5MjgsIDB4OTkyOCwgMHgxRjJFLCAweDk5MjksIDB4OTkyRCwgMHg1MUZFLA0KKyAgICAweDk5MkUsIDB4OTkyRSwgMHgxREU5LCAweDk5MkYsIDB4OTkzMiwgMHg1MjAzLCAweDk5MzMsIDB4OTkzMywgMHgyMzlDLA0KKyAgICAweDk5MzQsIDB4OTkzNiwgMHg1MjA3LCAweDk5MzcsIDB4OTkzNywgMHgyM0E2LCAweDk5MzgsIDB4OTkzQiwgMHg1MjBBLA0KKyAgICAweDk5M0MsIDB4OTkzQywgMHgyMzlFLCAweDk5M0QsIDB4OTkzRCwgMHg1MjBFLCAweDk5M0UsIDB4OTkzRSwgMHgyMDM1LA0KKyAgICAweDk5M0YsIDB4OTkzRiwgMHgyM0E3LCAweDk5NDAsIDB4OTk0MiwgMHg1MjBGLCAweDk5NDMsIDB4OTk0MywgMHgyM0E4LA0KKyAgICAweDk5NDQsIDB4OTk0NCwgMHg1MjEyLCAweDk5NDUsIDB4OTk0NSwgMHgyMDc1LCAweDk5NDYsIDB4OTk0NywgMHg1MjEzLA0KKyAgICAweDk5NDgsIDB4OTk0QSwgMHgyM0E5LCAweDk5NEIsIDB4OTk0QiwgMHgxRkVCLCAweDk5NEMsIDB4OTk0QywgMHgyM0FDLA0KKyAgICAweDk5NEQsIDB4OTk1MCwgMHg1MjE1LCAweDk5NTEsIDB4OTk1MSwgMHgxRjZBLCAweDk5NTIsIDB4OTk1MiwgMHgyMEY5LA0KKyAgICAweDk5NTMsIDB4OTk1MywgMHg1MjE5LCAweDk5NTQsIDB4OTk1NCwgMHgxREVCLCAweDk5NTUsIDB4OTk1NSwgMHgxREVBLA0KKyAgICAweDk5NTYsIDB4OTk1NiwgMHg1MjFBLCAweDk5NTcsIDB4OTk1NywgMHgyNjY2LCAweDk5NTgsIDB4OTk1QiwgMHg1MjFCLA0KKyAgICAweDk5NUMsIDB4OTk1QywgMHgyNjY3LCAweDk5NUQsIDB4OTk1RCwgMHg1MjFGLCAweDk5NUUsIDB4OTk1RSwgMHgxRTZDLA0KKyAgICAweDk5NUYsIDB4OTk2MSwgMHg1MjIwLCAweDk5NjIsIDB4OTk2MiwgMHgyM0FELCAweDk5NjMsIDB4OTk2MywgMHgxNjFELA0KKyAgICAweDk5NjQsIDB4OTk2NCwgMHg1MjIzLCAweDk5NjUsIDB4OTk2NSwgMHgwODE1LCAweDk5NjYsIDB4OTk2NiwgMHg1MjI0LA0KKyAgICAweDk5NjcsIDB4OTk2QywgMHgxNjFFLCAweDk5NkQsIDB4OTk2RCwgMHgwNjU2LCAweDk5NkUsIDB4OTk2RSwgMHgxMDgyLA0KKyAgICAweDk5NkYsIDB4OTk2RiwgMHgwODc1LCAweDk5NzAsIDB4OTk3MCwgMHgwRDY1LCAweDk5NzEsIDB4OTk3MSwgMHgwNDBFLA0KKyAgICAweDk5NzIsIDB4OTk3MiwgMHgwREJDLCAweDk5NzMsIDB4OTk3MywgMHg1MjI1LCAweDk5NzQsIDB4OTk3NCwgMHgxNjI0LA0KKyAgICAweDk5NzUsIDB4OTk3NSwgMHgwNjNCLCAweDk5NzYsIDB4OTk3NiwgMHgwQzlGLCAweDk5NzcsIDB4OTk3NywgMHgxNjI1LA0KKyAgICAweDk5NzgsIDB4OTk3OSwgMHg1MjI2LCAweDk5N0EsIDB4OTk3QSwgMHgwODk5LCAweDk5N0IsIDB4OTk3QiwgMHg1MjI4LA0KKyAgICAweDk5N0MsIDB4OTk3QywgMHgwNDY2LCAweDk5N0QsIDB4OTk3RCwgMHgxNjI2LCAweDk5N0UsIDB4OTk3RSwgMHg1MjI5LA0KKyAgICAweDk5N0YsIDB4OTk3RiwgMHgwNjM1LCAweDk5ODAsIDB4OTk4MCwgMHgxNjI3LCAweDk5ODEsIDB4OTk4MSwgMHgwQjNDLA0KKyAgICAweDk5ODIsIDB4OTk4MywgMHg1MjJBLCAweDk5ODQsIDB4OTk4NCwgMHgxNjI4LCAweDk5ODUsIDB4OTk4NSwgMHgwRjQ3LA0KKyAgICAweDk5ODYsIDB4OTk4NiwgMHgwNzM2LCAweDk5ODcsIDB4OTk4NywgMHgxNjI5LCAweDk5ODgsIDB4OTk4OCwgMHgwOThDLA0KKyAgICAweDk5ODksIDB4OTk4OSwgMHg1MjJDLCAweDk5OEEsIDB4OTk4QSwgMHgxNjJBLCAweDk5OEIsIDB4OTk4QiwgMHgwNEJELA0KKyAgICAweDk5OEMsIDB4OTk4QywgMHg1MjJELCAweDk5OEQsIDB4OTk4RCwgMHgxNjJCLCAweDk5OEUsIDB4OTk4RSwgMHg1MjJFLA0KKyAgICAweDk5OEYsIDB4OTk4RiwgMHgwQTNDLCAweDk5OTAsIDB4OTk5MSwgMHgxNjJDLCAweDk5OTIsIDB4OTk5MiwgMHgwQTlGLA0KKyAgICAweDk5OTMsIDB4OTk5NSwgMHgxNjJFLCAweDk5OTYsIDB4OTk5NiwgMHgwRDZFLCAweDk5OTcsIDB4OTk5NywgMHgxMjZFLA0KKyAgICAweDk5OTgsIDB4OTk5OCwgMHgxMkY5LCAweDk5OTksIDB4OTk5OSwgMHgwRjUwLCAweDk5OUEsIDB4OTlBNCwgMHg1MjJGLA0KKyAgICAweDk5QTUsIDB4OTlBNSwgMHgxQjJCLCAweDk5QTYsIDB4OTlBNywgMHg1MjNBLCAweDk5QTgsIDB4OTlBOCwgMHgxM0RFLA0KKyAgICAweDk5QTksIDB4OTlBQiwgMHg1MjNDLCAweDk5QUMsIDB4OTlBQywgMHgyMDZELCAweDk5QUQsIDB4OTlBRCwgMHgyMjQyLA0KKyAgICAweDk5QUUsIDB4OTlBRSwgMHgxRjAyLCAweDk5QUYsIDB4OTlCMCwgMHg1MjNGLCAweDk5QjEsIDB4OTlCMSwgMHgyMTgzLA0KKyAgICAweDk5QjIsIDB4OTlCMiwgMHg1MjQxLCAweDk5QjMsIDB4OTlCMywgMHgxRTg1LCAweDk5QjQsIDB4OTlCNCwgMHgyMUU5LA0KKyAgICAweDk5QjUsIDB4OTlDMCwgMHg1MjQyLCAweDk5QzEsIDB4OTlDMSwgMHgxRTU3LCAweDk5QzIsIDB4OTlDRiwgMHg1MjRFLA0KKyAgICAweDk5RDAsIDB4OTlEMCwgMHgyMkE1LCAweDk5RDEsIDB4OTlEMSwgMHgyNDA3LCAweDk5RDIsIDB4OTlEMiwgMHgxRkNBLA0KKyAgICAweDk5RDMsIDB4OTlEMywgMHg1MjVDLCAweDk5RDQsIDB4OTlENCwgMHgyNDAyLCAweDk5RDUsIDB4OTlENSwgMHgxRjgyLA0KKyAgICAweDk5RDYsIDB4OTlENywgMHg1MjVELCAweDk5RDgsIDB4OTlEOCwgMHgyNDA4LCAweDk5RDksIDB4OTlEOSwgMHgyNDA0LA0KKyAgICAweDk5REEsIDB4OTlEQSwgMHg1MjVGLCAweDk5REIsIDB4OTlEQiwgMHgyMTMxLCAweDk5REMsIDB4OTlEQywgMHg1MjYwLA0KKyAgICAweDk5REQsIDB4OTlERCwgMHgyMTg0LCAweDk5REUsIDB4OTlERSwgMHg1MjYxLCAweDk5REYsIDB4OTlERiwgMHgyNDAzLA0KKyAgICAweDk5RTAsIDB4OTlFMCwgMHg1MjYyLCAweDk5RTEsIDB4OTlFMSwgMHgyMDZFLCAweDk5RTIsIDB4OTlFMiwgMHgyNDBCLA0KKyAgICAweDk5RTMsIDB4OTlFQywgMHg1MjYzLCAweDk5RUQsIDB4OTlFRCwgMHgxRjNGLCAweDk5RUUsIDB4OTlGMCwgMHg1MjZELA0KKyAgICAweDk5RjEsIDB4OTlGMSwgMHgyMDY3LCAweDk5RjIsIDB4OTlGRSwgMHg1MjcwLCAweDk5RkYsIDB4OTlGRiwgMHgxRkQ3LA0KKyAgICAweDlBMDAsIDB4OUEwMCwgMHg1MjdELCAweDlBMDEsIDB4OUEwMSwgMHgxRTgzLCAweDlBMDIsIDB4OUEwNCwgMHg1MjdFLA0KKyAgICAweDlBMDUsIDB4OUEwNSwgMHgyNDBGLCAweDlBMDYsIDB4OUEwQywgMHg1MjgxLCAweDlBMEQsIDB4OUEwRCwgMHgyNDBFLA0KKyAgICAweDlBMEUsIDB4OUEwRSwgMHgyMEM3LCAweDlBMEYsIDB4OUEwRiwgMHgyNDBELCAweDlBMTAsIDB4OUExNSwgMHg1Mjg4LA0KKyAgICAweDlBMTYsIDB4OUExNiwgMHgyNDEyLCAweDlBMTcsIDB4OUExOCwgMHg1MjhFLCAweDlBMTksIDB4OUExOSwgMHgyMEI3LA0KKyAgICAweDlBMUEsIDB4OUEyQSwgMHg1MjkwLCAweDlBMkIsIDB4OUEyQiwgMHgyM0YwLCAweDlBMkMsIDB4OUEyQywgMHg1MkExLA0KKyAgICAweDlBMkQsIDB4OUEyRCwgMHgyNDExLCAweDlBMkUsIDB4OUEyRSwgMHgyNDE0LCAweDlBMkYsIDB4OUEyRiwgMHg1MkEyLA0KKyAgICAweDlBMzAsIDB4OUEzMCwgMHgyMTcwLCAweDlBMzEsIDB4OUEzNSwgMHg1MkEzLCAweDlBMzYsIDB4OUEzNiwgMHgyNDA1LA0KKyAgICAweDlBMzcsIDB4OUEzNywgMHgyMTBDLCAweDlBMzgsIDB4OUEzOCwgMHgyNDE1LCAweDlBMzksIDB4OUEzRCwgMHg1MkE4LA0KKyAgICAweDlBM0UsIDB4OUEzRSwgMHgyMDY2LCAweDlBM0YsIDB4OUEzRiwgMHg1MkFELCAweDlBNDAsIDB4OUE0MCwgMHgyMzUyLA0KKyAgICAweDlBNDEsIDB4OUE0MSwgMHgyNDEzLCAweDlBNDIsIDB4OUE0MiwgMHgyNDEwLCAweDlBNDMsIDB4OUE0NCwgMHgyNDE2LA0KKyAgICAweDlBNDUsIDB4OUE0NSwgMHgyMEYxLCAweDlBNDYsIDB4OUE0OSwgMHg1MkFFLCAweDlBNEEsIDB4OUE0QSwgMHgyNDBBLA0KKyAgICAweDlBNEIsIDB4OUE0QywgMHg1MkIyLCAweDlBNEQsIDB4OUE0RCwgMHgyNDA5LCAweDlBNEUsIDB4OUE0RSwgMHg1MkI0LA0KKyAgICAweDlBNEYsIDB4OUE0RiwgMHgyNDE4LCAweDlBNTAsIDB4OUE1NCwgMHg1MkI1LCAweDlBNTUsIDB4OUE1NSwgMHgxRkE3LA0KKyAgICAweDlBNTYsIDB4OUE1NiwgMHg1MkJBLCAweDlBNTcsIDB4OUE1NywgMHgyMUZDLCAweDlBNTgsIDB4OUE1OSwgMHg1MkJCLA0KKyAgICAweDlBNUEsIDB4OUE1QSwgMHgxRkMxLCAweDlBNUIsIDB4OUE1QiwgMHgyNDA2LCAweDlBNUMsIDB4OUE1RSwgMHg1MkJELA0KKyAgICAweDlBNUYsIDB4OUE1RiwgMHgyMjlDLCAweDlBNjAsIDB4OUE2MSwgMHg1MkMwLCAweDlBNjIsIDB4OUE2MiwgMHgyMDRFLA0KKyAgICAweDlBNjMsIDB4OUE2MywgMHg1MkMyLCAweDlBNjQsIDB4OUE2NCwgMHgyNDFBLCAweDlBNjUsIDB4OUE2NSwgMHgyNDE5LA0KKyAgICAweDlBNjYsIDB4OUE2OSwgMHg1MkMzLCAweDlBNkEsIDB4OUE2QSwgMHgyNDBDLCAweDlBNkIsIDB4OUE2QiwgMHg1MkM3LA0KKyAgICAweDlBNkMsIDB4OUE2QywgMHgwQTk0LCAweDlBNkQsIDB4OUE2RCwgMHgxMEU5LCAweDlBNkUsIDB4OUE2RSwgMHgwRTg1LA0KKyAgICAweDlBNkYsIDB4OUE2RiwgMHgwRkRBLCAweDlBNzAsIDB4OUE3MCwgMHgwNTAwLCAweDlBNzEsIDB4OUE3MSwgMHgwQzdBLA0KKyAgICAweDlBNzIsIDB4OUE3MiwgMHg1MkM4LCAweDlBNzMsIDB4OUE3MywgMHgwNDdDLCAweDlBNzQsIDB4OUE3NCwgMHgwQTY2LA0KKyAgICAweDlBNzUsIDB4OUE3NSwgMHgxN0JBLCAweDlBNzYsIDB4OUE3NiwgMHgwRDUyLCAweDlBNzcsIDB4OUE3OCwgMHgxN0JCLA0KKyAgICAweDlBNzksIDB4OUE3OSwgMHgwOTAzLCAweDlBN0EsIDB4OUE3QSwgMHgxN0JELCAweDlBN0IsIDB4OUE3QiwgMHgxMjAxLA0KKyAgICAweDlBN0MsIDB4OUE3QywgMHgwRTg2LCAweDlBN0QsIDB4OUE3RCwgMHgxN0JGLCAweDlBN0UsIDB4OUE3RSwgMHgwODUwLA0KKyAgICAweDlBN0YsIDB4OUE3RiwgMHgxN0JFLCAweDlBODAsIDB4OUE4MSwgMHgxN0MwLCAweDlBODIsIDB4OUE4MiwgMHgwQTk1LA0KKyAgICAweDlBODMsIDB4OUE4MywgMHg1MkM5LCAweDlBODQsIDB4OUE4NCwgMHgwODhGLCAweDlBODUsIDB4OUE4NSwgMHgxN0MyLA0KKyAgICAweDlBODYsIDB4OUE4NiwgMHgwQThELCAweDlBODcsIDB4OUE4NywgMHgwNzVFLCAweDlBODgsIDB4OUE4OCwgMHgxN0MzLA0KKyAgICAweDlBODksIDB4OUE4OSwgMHg1MkNBLCAweDlBOEEsIDB4OUE4QSwgMHgxN0M0LCAweDlBOEIsIDB4OUE4QiwgMHgwNEY3LA0KKyAgICAweDlBOEMsIDB4OUE4QywgMHgxMDEyLCAweDlBOEQsIDB4OUE4RSwgMHg1MkNCLCAweDlBOEYsIDB4OUE4RiwgMHgwOTMyLA0KKyAgICAweDlBOTAsIDB4OUE5MCwgMHgxN0M1LCAweDlBOTEsIDB4OUE5MSwgMHgwQzBFLCAweDlBOTIsIDB4OUE5MywgMHgxN0M2LA0KKyAgICAweDlBOTQsIDB4OUE5NSwgMHg1MkNELCAweDlBOTYsIDB4OUE5NiwgMHgxN0M4LCAweDlBOTcsIDB4OUE5NywgMHgwQkNDLA0KKyAgICAweDlBOTgsIDB4OUE5OCwgMHgxN0M5LCAweDlBOTksIDB4OUE5OSwgMHg1MkNGLCAweDlBOUEsIDB4OUE5QSwgMHgwQ0UwLA0KKyAgICAweDlBOUIsIDB4OUE5RCwgMHgxN0NBLCAweDlBOUUsIDB4OUE5RSwgMHgxNzM1LCAweDlBOUYsIDB4OUFBMCwgMHgxN0NELA0KKyAgICAweDlBQTEsIDB4OUFBMSwgMHgwQTg5LCAweDlBQTIsIDB4OUFBMywgMHgxN0NGLCAweDlBQTQsIDB4OUFBNCwgMHgxMUU3LA0KKyAgICAweDlBQTUsIDB4OUFBNSwgMHgxN0QxLCAweDlBQTYsIDB4OUFBNiwgMHg1MkQwLCAweDlBQTcsIDB4OUFBNywgMHgxN0QyLA0KKyAgICAweDlBQTgsIDB4OUFBOCwgMHgwNzIwLCAweDlBQTksIDB4OUFBRSwgMHg1MkQxLCAweDlBQUYsIDB4OUFBRiwgMHgxRTI5LA0KKyAgICAweDlBQjAsIDB4OUFCMCwgMHgxREQzLCAweDlBQjEsIDB4OUFCMSwgMHgxREQyLCAweDlBQjIsIDB4OUFCNSwgMHg1MkQ3LA0KKyAgICAweDlBQjYsIDB4OUFCNiwgMHgxREQ2LCAweDlBQjcsIDB4OUFCNywgMHgxREQ0LCAweDlBQjgsIDB4OUFCOCwgMHgwNzU4LA0KKyAgICAweDlBQjksIDB4OUFCOSwgMHg1MkRCLCAweDlBQkEsIDB4OUFCQSwgMHgxREQ3LCAweDlBQkIsIDB4OUFCQiwgMHg1MkRDLA0KKyAgICAweDlBQkMsIDB4OUFCQywgMHgxREQ4LCAweDlBQkQsIDB4OUFCRiwgMHg1MkRELCAweDlBQzAsIDB4OUFDMCwgMHgxRERBLA0KKyAgICAweDlBQzEsIDB4OUFDMSwgMHgxREQ5LCAweDlBQzIsIDB4OUFDMiwgMHgxRERDLCAweDlBQzMsIDB4OUFDNCwgMHg1MkUwLA0KKyAgICAweDlBQzUsIDB4OUFDNSwgMHgxRERCLCAweDlBQzYsIDB4OUFDQSwgMHg1MkUyLCAweDlBQ0IsIDB4OUFDQywgMHgxRERELA0KKyAgICAweDlBQ0QsIDB4OUFDRSwgMHg1MkU3LCAweDlBQ0YsIDB4OUFDRiwgMHgyNjYxLCAweDlBRDAsIDB4OUFEMCwgMHg1MkU5LA0KKyAgICAweDlBRDEsIDB4OUFEMSwgMHgxRERGLCAweDlBRDIsIDB4OUFEMiwgMHgyNkE0LCAweDlBRDMsIDB4OUFEMywgMHgwRERELA0KKyAgICAweDlBRDQsIDB4OUFENCwgMHgyMTc0LCAweDlBRDUsIDB4OUFENSwgMHgyNjYzLCAweDlBRDYsIDB4OUFENiwgMHgyNjYyLA0KKyAgICAweDlBRDcsIDB4OUFENywgMHg1MkVBLCAweDlBRDgsIDB4OUFEOCwgMHgwNkRBLCAweDlBRDksIDB4OUFERSwgMHg1MkVCLA0KKyAgICAweDlBREYsIDB4OUFERiwgMHgxREVDLCAweDlBRTAsIDB4OUFFMCwgMHg1MkYxLCAweDlBRTEsIDB4OUFFMSwgMHgxREVELA0KKyAgICAweDlBRTIsIDB4OUFFNSwgMHg1MkYyLCAweDlBRTYsIDB4OUFFNiwgMHgxREVFLCAweDlBRTcsIDB4OUFFQSwgMHg1MkY2LA0KKyAgICAweDlBRUIsIDB4OUFFQiwgMHgxREYwLCAweDlBRUMsIDB4OUFFQywgMHg1MkZBLCAweDlBRUQsIDB4OUFFRCwgMHgxREYyLA0KKyAgICAweDlBRUUsIDB4OUFFRSwgMHgyNjc1LCAweDlBRUYsIDB4OUFFRiwgMHgxREVGLCAweDlBRjAsIDB4OUFGOCwgMHg1MkZCLA0KKyAgICAweDlBRjksIDB4OUFGOSwgMHgxREYzLCAweDlBRkEsIDB4OUFGQSwgMHg1MzA0LCAweDlBRkIsIDB4OUFGQiwgMHgxREYxLA0KKyAgICAweDlBRkMsIDB4OUFGRiwgMHg1MzA1LCAweDlCMDAsIDB4OUIwMiwgMHg1MzA5LCAweDlCMDMsIDB4OUIwMywgMHgxMjM0LA0KKyAgICAweDlCMDQsIDB4OUIwNSwgMHg1MzBDLCAweDlCMDYsIDB4OUIwNiwgMHgyMTRDLCAweDlCMDcsIDB4OUIwNywgMHg1MzBFLA0KKyAgICAweDlCMDgsIDB4OUIwOCwgMHgxREY0LCAweDlCMDksIDB4OUIwQywgMHg1MzBGLCAweDlCMEQsIDB4OUIwRCwgMHgyNjdBLA0KKyAgICAweDlCMEUsIDB4OUIwRSwgMHg1MzEzLCAweDlCMEYsIDB4OUIwRiwgMHgxREY1LCAweDlCMTAsIDB4OUIxMiwgMHg1MzE0LA0KKyAgICAweDlCMTMsIDB4OUIxMywgMHgxREY2LCAweDlCMTQsIDB4OUIxOSwgMHg1MzE3LCAweDlCMUEsIDB4OUIxQSwgMHgyNkEwLA0KKyAgICAweDlCMUIsIDB4OUIxRSwgMHg1MzFELCAweDlCMUYsIDB4OUIxRiwgMHgxREY3LCAweDlCMjAsIDB4OUIyMSwgMHg1MzIxLA0KKyAgICAweDlCMjIsIDB4OUIyMiwgMHgyNjY4LCAweDlCMjMsIDB4OUIyMywgMHgxREY4LCAweDlCMjQsIDB4OUIyNCwgMHg1MzIzLA0KKyAgICAweDlCMjUsIDB4OUIyNSwgMHgxRUQwLCAweDlCMjYsIDB4OUIyNiwgMHg1MzI0LCAweDlCMjcsIDB4OUIyNywgMHgyMDk2LA0KKyAgICAweDlCMjgsIDB4OUIyOCwgMHg1MzI1LCAweDlCMjksIDB4OUIyOSwgMHgyM0NDLCAweDlCMkEsIDB4OUIyRCwgMHg1MzI2LA0KKyAgICAweDlCMkUsIDB4OUIyRSwgMHgyM0M4LCAweDlCMkYsIDB4OUIyRiwgMHgxMzlCLCAweDlCMzAsIDB4OUIzMCwgMHg1MzJBLA0KKyAgICAweDlCMzEsIDB4OUIzMSwgMHgyMjNFLCAweDlCMzIsIDB4OUIzMiwgMHgxMjYwLCAweDlCMzMsIDB4OUIzQSwgMHg1MzJCLA0KKyAgICAweDlCM0IsIDB4OUIzQiwgMHgxNzczLCAweDlCM0MsIDB4OUIzQywgMHgwNzQ2LCAweDlCM0QsIDB4OUI0MCwgMHg1MzMzLA0KKyAgICAweDlCNDEsIDB4OUI0MSwgMHgwOThBLCAweDlCNDIsIDB4OUI0MiwgMHgwN0ZGLCAweDlCNDMsIDB4OUI0MywgMHgxREUxLA0KKyAgICAweDlCNDQsIDB4OUI0NCwgMHgwQkU2LCAweDlCNDUsIDB4OUI0NSwgMHgxREUwLCAweDlCNDYsIDB4OUI0NiwgMHg1MzM3LA0KKyAgICAweDlCNDcsIDB4OUI0NywgMHgxREUyLCAweDlCNDgsIDB4OUI0OCwgMHgxREU0LCAweDlCNDksIDB4OUI0OSwgMHgxREUzLA0KKyAgICAweDlCNEEsIDB4OUI0QywgMHg1MzM4LCAweDlCNEQsIDB4OUI0RCwgMHgxREU1LCAweDlCNEUsIDB4OUI0RSwgMHgyNjY1LA0KKyAgICAweDlCNEYsIDB4OUI0RiwgMHgwRUM5LCAweDlCNTAsIDB4OUI1MCwgMHg1MzNCLCAweDlCNTEsIDB4OUI1MSwgMHgxREU2LA0KKyAgICAweDlCNTIsIDB4OUI1MywgMHg1MzNDLCAweDlCNTQsIDB4OUI1NCwgMHgwQjBBLCAweDlCNTUsIDB4OUI1NywgMHg1MzNFLA0KKyAgICAweDlCNTgsIDB4OUI1OCwgMHgyNjY0LCAweDlCNTksIDB4OUI1OSwgMHg1MzQxLCAweDlCNUEsIDB4OUI1QSwgMHgyMjM5LA0KKyAgICAweDlCNUIsIDB4OUI2RSwgMHg1MzQyLCAweDlCNkYsIDB4OUI2RiwgMHgyMDRBLCAweDlCNzAsIDB4OUI3MywgMHg1MzU2LA0KKyAgICAweDlCNzQsIDB4OUI3NCwgMHgyNjFGLCAweDlCNzUsIDB4OUI3NiwgMHg1MzVBLCAweDlCNzcsIDB4OUI3NywgMHgyNjFFLA0KKyAgICAweDlCNzgsIDB4OUI4MCwgMHg1MzVDLCAweDlCODEsIDB4OUI4MSwgMHgyNjIwLCAweDlCODIsIDB4OUI4MiwgMHg1MzY1LA0KKyAgICAweDlCODMsIDB4OUI4MywgMHgyNjIxLCAweDlCODQsIDB4OUI4RCwgMHg1MzY2LCAweDlCOEUsIDB4OUI4RSwgMHgyNjIyLA0KKyAgICAweDlCOEYsIDB4OUI4RiwgMHg1MzcwLCAweDlCOTAsIDB4OUI5MCwgMHgyNjI3LCAweDlCOTEsIDB4OUI5MSwgMHgxRTM5LA0KKyAgICAweDlCOTIsIDB4OUI5MiwgMHgyNjI1LCAweDlCOTMsIDB4OUI5OSwgMHg1MzcxLCAweDlCOUEsIDB4OUI5QSwgMHgyNjI5LA0KKyAgICAweDlCOUIsIDB4OUI5QywgMHg1Mzc4LCAweDlCOUQsIDB4OUI5RCwgMHgyNjJFLCAweDlCOUUsIDB4OUI5RSwgMHgyNjJCLA0KKyAgICAweDlCOUYsIDB4OUJBOSwgMHg1MzdBLCAweDlCQUEsIDB4OUJBQSwgMHgyNjJBLCAweDlCQUIsIDB4OUJBQiwgMHgyNjJELA0KKyAgICAweDlCQUMsIDB4OUJBQywgMHg1Mzg1LCAweDlCQUQsIDB4OUJBRCwgMHgyNjI4LCAweDlCQUUsIDB4OUJBRSwgMHgyMUI5LA0KKyAgICAweDlCQUYsIDB4OUJCRiwgMHg1Mzg2LCAweDlCQzAsIDB4OUJDMCwgMHgyNjM2LCAweDlCQzEsIDB4OUJDMSwgMHgyNjMwLA0KKyAgICAweDlCQzIsIDB4OUJDNiwgMHg1Mzk3LCAweDlCQzcsIDB4OUJDNywgMHgyNjM4LCAweDlCQzgsIDB4OUJDOCwgMHg1MzlDLA0KKyAgICAweDlCQzksIDB4OUJDOSwgMHgyMDBELCAweDlCQ0EsIDB4OUJDQSwgMHgyNjM3LCAweDlCQ0IsIDB4OUJEMywgMHg1MzlELA0KKyAgICAweDlCRDQsIDB4OUJENCwgMHgyNjQ1LCAweDlCRDUsIDB4OUJENSwgMHg1M0E2LCAweDlCRDYsIDB4OUJENiwgMHgyNjNBLA0KKyAgICAweDlCRDcsIDB4OUJEQSwgMHg1M0E3LCAweDlCREIsIDB4OUJEQiwgMHgyNjQzLCAweDlCREMsIDB4OUJEQywgMHg1M0FCLA0KKyAgICAweDlCREQsIDB4OUJERCwgMHgyNjQwLCAweDlCREUsIDB4OUJFMCwgMHg1M0FDLCAweDlCRTEsIDB4OUJFMSwgMHgyNjNELA0KKyAgICAweDlCRTIsIDB4OUJFMiwgMHgyNjQxLCAweDlCRTMsIDB4OUJFMywgMHg1M0FGLCAweDlCRTQsIDB4OUJFNCwgMHgyNjNFLA0KKyAgICAweDlCRTUsIDB4OUJFNiwgMHg1M0IwLCAweDlCRTcsIDB4OUJFNywgMHgyNjNGLCAweDlCRTgsIDB4OUJFOCwgMHgxRkMwLA0KKyAgICAweDlCRTksIDB4OUJFOSwgMHg1M0IyLCAweDlCRUEsIDB4OUJFQiwgMHgyNjNCLCAweDlCRUMsIDB4OUJFRiwgMHg1M0IzLA0KKyAgICAweDlCRjAsIDB4OUJGMCwgMHgyNjQyLCAweDlCRjEsIDB4OUJGMywgMHg1M0I3LCAweDlCRjQsIDB4OUJGNCwgMHgyNjQ0LA0KKyAgICAweDlCRjUsIDB4OUJGQywgMHg1M0JBLCAweDlCRkQsIDB4OUJGRCwgMHgyNjM5LCAweDlCRkUsIDB4OUJGRSwgMHg1M0MyLA0KKyAgICAweDlCRkYsIDB4OUJGRiwgMHgyNjRDLCAweDlDMDAsIDB4OUMwNywgMHg1M0MzLCAweDlDMDgsIDB4OUMwOCwgMHgyNjQ3LA0KKyAgICAweDlDMDksIDB4OUMwOSwgMHgyNjRCLCAweDlDMEEsIDB4OUMwQywgMHg1M0NCLCAweDlDMEQsIDB4OUMwRCwgMHgyNjQ5LA0KKyAgICAweDlDMEUsIDB4OUMwRiwgMHg1M0NFLCAweDlDMTAsIDB4OUMxMCwgMHgyNjQ4LCAweDlDMTEsIDB4OUMxMSwgMHg1M0QwLA0KKyAgICAweDlDMTIsIDB4OUMxMiwgMHgyNjRBLCAweDlDMTMsIDB4OUMxMywgMHgyMTA4LCAweDlDMTQsIDB4OUMxRiwgMHg1M0QxLA0KKyAgICAweDlDMjAsIDB4OUMyMCwgMHgyNjRELCAweDlDMjEsIDB4OUMyMiwgMHg1M0RELCAweDlDMjMsIDB4OUMyMywgMHgyNjM0LA0KKyAgICAweDlDMjQsIDB4OUMyNCwgMHg1M0RGLCAweDlDMjUsIDB4OUMyNSwgMHgyNjUxLCAweDlDMjYsIDB4OUMyNywgMHg1M0UwLA0KKyAgICAweDlDMjgsIDB4OUMyOCwgMHgyNjUwLCAweDlDMjksIDB4OUMyOSwgMHgyNjUyLCAweDlDMkEsIDB4OUMyQywgMHg1M0UyLA0KKyAgICAweDlDMkQsIDB4OUMyRCwgMHgyNjRGLCAweDlDMkUsIDB4OUMzMCwgMHg1M0U1LCAweDlDMzEsIDB4OUMzMSwgMHgyNjMyLA0KKyAgICAweDlDMzIsIDB4OUMzMiwgMHgyNjRFLCAweDlDMzMsIDB4OUMzMywgMHgyNjUzLCAweDlDMzQsIDB4OUMzNCwgMHg1M0U4LA0KKyAgICAweDlDMzUsIDB4OUMzNSwgMHgyNjU3LCAweDlDMzYsIDB4OUMzNiwgMHg1M0U5LCAweDlDMzcsIDB4OUMzNywgMHgyNjM1LA0KKyAgICAweDlDMzgsIDB4OUMzOCwgMHg1M0VBLCAweDlDMzksIDB4OUMzOSwgMHgyNjMzLCAweDlDM0EsIDB4OUMzQSwgMHg1M0VCLA0KKyAgICAweDlDM0IsIDB4OUMzQiwgMHgyNjU2LCAweDlDM0MsIDB4OUMzRCwgMHg1M0VDLCAweDlDM0UsIDB4OUMzRSwgMHgyNjU0LA0KKyAgICAweDlDM0YsIDB4OUM0NCwgMHg1M0VFLCAweDlDNDUsIDB4OUM0NSwgMHgyNjU4LCAweDlDNDYsIDB4OUM0NywgMHg1M0Y0LA0KKyAgICAweDlDNDgsIDB4OUM0OCwgMHgyNjU1LCAweDlDNDksIDB4OUM0OSwgMHgxRTRELCAweDlDNEEsIDB4OUM1MSwgMHg1M0Y2LA0KKyAgICAweDlDNTIsIDB4OUM1MiwgMHgyNjVCLCAweDlDNTMsIDB4OUM1MywgMHg1M0ZFLCAweDlDNTQsIDB4OUM1NCwgMHgyNjVBLA0KKyAgICAweDlDNTUsIDB4OUM1NSwgMHg1M0ZGLCAweDlDNTYsIDB4OUM1NiwgMHgyNjU5LCAweDlDNTcsIDB4OUM1NywgMHgyMDJFLA0KKyAgICAweDlDNTgsIDB4OUM1OCwgMHgyNjJGLCAweDlDNTksIDB4OUM1QywgMHg1NDAwLCAweDlDNUQsIDB4OUM1RCwgMHgyNjQ2LA0KKyAgICAweDlDNUUsIDB4OUM1RSwgMHg1NDA0LCAweDlDNUYsIDB4OUM1RiwgMHgyNjI2LCAweDlDNjAsIDB4OUM2NiwgMHg1NDA1LA0KKyAgICAweDlDNjcsIDB4OUM2NywgMHgyNjVDLCAweDlDNjgsIDB4OUM2QywgMHg1NDBDLCAweDlDNkQsIDB4OUM2RCwgMHgyNjJDLA0KKyAgICAweDlDNkUsIDB4OUM3NywgMHg1NDExLCAweDlDNzgsIDB4OUM3OCwgMHgyNjIzLCAweDlDNzksIDB4OUM3OSwgMHg1NDFCLA0KKyAgICAweDlDN0EsIDB4OUM3QSwgMHgyNjMxLCAweDlDN0IsIDB4OUM3QiwgMHg1NDFDLCAweDlDN0MsIDB4OUM3QywgMHgxMEM4LA0KKyAgICAweDlDN0QsIDB4OUM3RSwgMHg1NDFELCAweDlDN0YsIDB4OUM3RiwgMHgxRDg5LCAweDlDODAsIDB4OUM4MCwgMHg1NDFGLA0KKyAgICAweDlDODEsIDB4OUM4MSwgMHgwQTVBLCAweDlDODIsIDB4OUM4MiwgMHgxRDhBLCAweDlDODMsIDB4OUM4NCwgMHg1NDIwLA0KKyAgICAweDlDODUsIDB4OUM4OCwgMHgxRDhCLCAweDlDODksIDB4OUM4QSwgMHg1NDIyLCAweDlDOEIsIDB4OUM4QiwgMHgxRDkwLA0KKyAgICAweDlDOEMsIDB4OUM4QywgMHg1NDI0LCAweDlDOEQsIDB4OUM4RCwgMHgwNDE0LCAweDlDOEUsIDB4OUM4RSwgMHgxRDkxLA0KKyAgICAweDlDOEYsIDB4OUM4RiwgMHg1NDI1LCAweDlDOTAsIDB4OUM5MiwgMHgxRDkyLCAweDlDOTMsIDB4OUM5MywgMHg1NDI2LA0KKyAgICAweDlDOTQsIDB4OUM5NSwgMHgxRDk1LCAweDlDOTYsIDB4OUM5OSwgMHg1NDI3LCAweDlDOUEsIDB4OUM5QiwgMHgxRDk3LA0KKyAgICAweDlDOUMsIDB4OUM5QywgMHgwRjM3LCAweDlDOUQsIDB4OUM5RCwgMHg1NDJCLCAweDlDOUUsIDB4OUNBMywgMHgxRDk5LA0KKyAgICAweDlDQTQsIDB4OUNBNCwgMHgwOURCLCAweDlDQTUsIDB4OUNBOSwgMHgxRDlGLCAweDlDQUEsIDB4OUNBQSwgMHg1NDJDLA0KKyAgICAweDlDQUIsIDB4OUNBQiwgMHgxREE0LCAweDlDQUMsIDB4OUNBQywgMHg1NDJELCAweDlDQUQsIDB4OUNBRSwgMHgxREE1LA0KKyAgICAweDlDQUYsIDB4OUNBRiwgMHg1NDJFLCAweDlDQjAsIDB4OUNCNywgMHgxREE3LCAweDlDQjgsIDB4OUNCOCwgMHgwOEQ3LA0KKyAgICAweDlDQjksIDB4OUNCOSwgMHg1NDJGLCAweDlDQkEsIDB4OUNCRCwgMHgxREFGLCAweDlDQkUsIDB4OUNDMiwgMHg1NDMwLA0KKyAgICAweDlDQzMsIDB4OUNDMywgMHgwQ0Q1LCAweDlDQzQsIDB4OUNDNywgMHgxREIzLCAweDlDQzgsIDB4OUNDOSwgMHg1NDM1LA0KKyAgICAweDlDQ0EsIDB4OUNEMCwgMHgxREI3LCAweDlDRDEsIDB4OUNEMiwgMHg1NDM3LCAweDlDRDMsIDB4OUNENSwgMHgxREJFLA0KKyAgICAweDlDRDYsIDB4OUNENiwgMHgwNDU3LCAweDlDRDcsIDB4OUNEOSwgMHgxREMxLCAweDlDREEsIDB4OUNEQiwgMHg1NDM5LA0KKyAgICAweDlDREMsIDB4OUNERCwgMHgxREM0LCAweDlDREUsIDB4OUNERSwgMHgwQTI0LCAweDlDREYsIDB4OUNERiwgMHgxREM2LA0KKyAgICAweDlDRTAsIDB4OUNFMSwgMHg1NDNCLCAweDlDRTIsIDB4OUNFMiwgMHgxREM3LCAweDlDRTMsIDB4OUNFNCwgMHg1NDNELA0KKyAgICAweDlDRTUsIDB4OUNFNSwgMHgyMDlDLCAweDlDRTYsIDB4OUNFOCwgMHg1NDNGLCAweDlDRTksIDB4OUNFOSwgMHgyNTgwLA0KKyAgICAweDlDRUEsIDB4OUNFQiwgMHg1NDQyLCAweDlDRUMsIDB4OUNFQywgMHgyMkRDLCAweDlDRUQsIDB4OUNGMiwgMHg1NDQ0LA0KKyAgICAweDlDRjMsIDB4OUNGMywgMHgxRjA1LCAweDlDRjQsIDB4OUNGNCwgMHgyMDhCLCAweDlDRjUsIDB4OUNGNSwgMHg1NDRBLA0KKyAgICAweDlDRjYsIDB4OUNGNiwgMHgyNTgxLCAweDlDRjcsIDB4OUNGRiwgMHg1NDRCLCAweDlEMDAsIDB4OUQwNSwgMHg1NDU0LA0KKyAgICAweDlEMDYsIDB4OUQwNiwgMHgyNTgzLCAweDlEMDcsIDB4OUQwNywgMHgyNTgyLCAweDlEMDgsIDB4OUQwOCwgMHg1NDVBLA0KKyAgICAweDlEMDksIDB4OUQwOSwgMHgyMUVFLCAweDlEMEEsIDB4OUQxNCwgMHg1NDVCLCAweDlEMTUsIDB4OUQxNSwgMHgyMTgyLA0KKyAgICAweDlEMTYsIDB4OUQxQSwgMHg1NDY2LCAweDlEMUIsIDB4OUQxQiwgMHgyMjQzLCAweDlEMUMsIDB4OUQxQywgMHg1NDZCLA0KKyAgICAweDlEMUQsIDB4OUQxRCwgMHgyNTg3LCAweDlEMUUsIDB4OUQxRSwgMHg1NDZDLCAweDlEMUYsIDB4OUQxRiwgMHgyNTg4LA0KKyAgICAweDlEMjAsIDB4OUQyMiwgMHg1NDZELCAweDlEMjMsIDB4OUQyMywgMHgyNTg0LCAweDlEMjQsIDB4OUQyNSwgMHg1NDcwLA0KKyAgICAweDlEMjYsIDB4OUQyNiwgMHgyMUZELCAweDlEMjcsIDB4OUQyNywgMHg1NDcyLCAweDlEMjgsIDB4OUQyOCwgMHgyMUVGLA0KKyAgICAweDlEMjksIDB4OUQyRSwgMHg1NDczLCAweDlEMkYsIDB4OUQyRiwgMHgyNThBLCAweDlEMzAsIDB4OUQzMCwgMHgyNThDLA0KKyAgICAweDlEMzEsIDB4OUQzQSwgMHg1NDc5LCAweDlEM0IsIDB4OUQzQiwgMHgxRjQ3LCAweDlEM0MsIDB4OUQzRSwgMHg1NDgzLA0KKyAgICAweDlEM0YsIDB4OUQzRiwgMHgxRjFELCAweDlENDAsIDB4OUQ0MSwgMHg1NDg2LCAweDlENDIsIDB4OUQ0MiwgMHgyNThELA0KKyAgICAweDlENDMsIDB4OUQ1MCwgMHg1NDg4LCAweDlENTEsIDB4OUQ1MSwgMHgxRkQwLCAweDlENTIsIDB4OUQ1MiwgMHgyNTkyLA0KKyAgICAweDlENTMsIDB4OUQ1MywgMHgyNThGLCAweDlENTQsIDB4OUQ1QiwgMHg1NDk2LCAweDlENUMsIDB4OUQ1QywgMHgyNTk0LA0KKyAgICAweDlENUQsIDB4OUQ1RCwgMHgxRUUwLCAweDlENUUsIDB4OUQ1RiwgMHg1NDlFLCAweDlENjAsIDB4OUQ2MCwgMHgyNTkxLA0KKyAgICAweDlENjEsIDB4OUQ2MSwgMHgyNTk1LCAweDlENjIsIDB4OUQ2OSwgMHg1NEEwLCAweDlENkEsIDB4OUQ2QSwgMHgyNTk3LA0KKyAgICAweDlENkIsIDB4OUQ2QiwgMHg1NEE4LCAweDlENkMsIDB4OUQ2QywgMHgyMEI2LCAweDlENkQsIDB4OUQ2RSwgMHg1NEE5LA0KKyAgICAweDlENkYsIDB4OUQ2RiwgMHgyNTk4LCAweDlENzAsIDB4OUQ3MSwgMHg1NEFCLCAweDlENzIsIDB4OUQ3MiwgMHgyMEY2LA0KKyAgICAweDlENzMsIDB4OUQ4NiwgMHg1NEFELCAweDlEODcsIDB4OUQ4NywgMHgyNTg1LCAweDlEODgsIDB4OUQ4OCwgMHg1NEMxLA0KKyAgICAweDlEODksIDB4OUQ4OSwgMHgyNTk5LCAweDlEOEEsIDB4OUQ5MiwgMHg1NEMyLCAweDlEOTMsIDB4OUQ5MywgMHgyNTk2LA0KKyAgICAweDlEOTQsIDB4OUQ5NywgMHg1NENCLCAweDlEOTgsIDB4OUQ5OCwgMHgyNTlBLCAweDlEOTksIDB4OUQ5OSwgMHg1NENGLA0KKyAgICAweDlEOUEsIDB4OUQ5QSwgMHgyNTlCLCAweDlEOUIsIDB4OURBNCwgMHg1NEQwLCAweDlEQTUsIDB4OURBNSwgMHgyNTlELA0KKyAgICAweDlEQTYsIDB4OURBOCwgMHg1NERBLCAweDlEQTksIDB4OURBOSwgMHgyNTlFLCAweDlEQUEsIDB4OURBRSwgMHg1NERELA0KKyAgICAweDlEQUYsIDB4OURBRiwgMHgyMzRDLCAweDlEQjAsIDB4OURCMywgMHg1NEUyLCAweDlEQjQsIDB4OURCNCwgMHgxRjQ0LA0KKyAgICAweDlEQjUsIDB4OURCQSwgMHg1NEU2LCAweDlEQkIsIDB4OURCQiwgMHgyNjYwLCAweDlEQkMsIDB4OURCQywgMHgyNUEwLA0KKyAgICAweDlEQkQsIDB4OURCRiwgMHg1NEVDLCAweDlEQzAsIDB4OURDMCwgMHgyNTlDLCAweDlEQzEsIDB4OURDMSwgMHg1NEVGLA0KKyAgICAweDlEQzIsIDB4OURDMiwgMHgyNTlGLCAweDlEQzMsIDB4OURDMywgMHg1NEYwLCAweDlEQzQsIDB4OURDNCwgMHgxRjZDLA0KKyAgICAweDlEQzUsIDB4OUREMiwgMHg1NEYxLCAweDlERDMsIDB4OUREMywgMHgyNUEyLCAweDlERDQsIDB4OURENiwgMHg1NEZGLA0KKyAgICAweDlERDcsIDB4OURENywgMHgyMEFFLCAweDlERDgsIDB4OUREOCwgMHg1NTAyLCAweDlERDksIDB4OUREOSwgMHgyNThCLA0KKyAgICAweDlEREEsIDB4OUREQSwgMHgyNUEzLCAweDlEREIsIDB4OURFNCwgMHg1NTAzLCAweDlERTUsIDB4OURFNSwgMHgyNTg5LA0KKyAgICAweDlERTYsIDB4OURFNiwgMHgyNUE1LCAweDlERTcsIDB4OURFRSwgMHg1NTBELCAweDlERUYsIDB4OURFRiwgMHgyNUE0LA0KKyAgICAweDlERjAsIDB4OURGMSwgMHg1NTE1LCAweDlERjIsIDB4OURGMiwgMHgyNUE2LCAweDlERjMsIDB4OURGMywgMHgyNTkzLA0KKyAgICAweDlERjQsIDB4OURGNywgMHg1NTE3LCAweDlERjgsIDB4OURGOCwgMHgyNUE3LCAweDlERjksIDB4OURGOSwgMHgyMjIyLA0KKyAgICAweDlERkEsIDB4OURGQSwgMHgyNUE5LCAweDlERkIsIDB4OURGRiwgMHg1NTFCLCAweDlFMDAsIDB4OUUwQiwgMHg1NTIwLA0KKyAgICAweDlFMEMsIDB4OUUwQywgMHgyNUE4LCAweDlFMEQsIDB4OUUxNCwgMHg1NTJDLCAweDlFMTUsIDB4OUUxNSwgMHgyNTg2LA0KKyAgICAweDlFMTYsIDB4OUUxOSwgMHg1NTM0LCAweDlFMUEsIDB4OUUxQSwgMHgyNUExLCAweDlFMUIsIDB4OUUxQiwgMHgyNUFBLA0KKyAgICAweDlFMUMsIDB4OUUxQywgMHg1NTM4LCAweDlFMUQsIDB4OUUxRCwgMHgyNTkwLCAweDlFMUUsIDB4OUUxRSwgMHgyNThFLA0KKyAgICAweDlFMUYsIDB4OUUxRiwgMHgwQjU0LCAweDlFMjAsIDB4OUUyMCwgMHgxQjM1LCAweDlFMjEsIDB4OUUyMSwgMHgwODE5LA0KKyAgICAweDlFMjIsIDB4OUUyMiwgMHgxQjM2LCAweDlFMjMsIDB4OUUyMywgMHgwQUZFLCAweDlFMjQsIDB4OUUyNCwgMHg1NTM5LA0KKyAgICAweDlFMjUsIDB4OUUyNSwgMHgwQjc5LCAweDlFMjYsIDB4OUUyNiwgMHgwRkU0LCAweDlFMjcsIDB4OUUyNywgMHg1NTNBLA0KKyAgICAweDlFMjgsIDB4OUUyQywgMHgxQjM3LCAweDlFMkQsIDB4OUUyRCwgMHgwRkU1LCAweDlFMkUsIDB4OUUyRSwgMHg1NTNCLA0KKyAgICAweDlFMkYsIDB4OUUyRiwgMHgxMDE1LCAweDlFMzAsIDB4OUUzMCwgMHg1NTNDLCAweDlFMzEsIDB4OUUzMSwgMHgxQjNELA0KKyAgICAweDlFMzIsIDB4OUUzMiwgMHgxQjNDLCAweDlFMzMsIDB4OUUzMywgMHgxMEVBLCAweDlFMzQsIDB4OUUzNCwgMHg1NTNELA0KKyAgICAweDlFMzUsIDB4OUUzNSwgMHgwRTgzLCAweDlFMzYsIDB4OUUzNiwgMHgxQjNFLCAweDlFMzcsIDB4OUUzNywgMHgxQjQwLA0KKyAgICAweDlFMzgsIDB4OUUzOCwgMHgxQjNGLCAweDlFMzksIDB4OUUzQSwgMHgxQjQxLCAweDlFM0IsIDB4OUUzQywgMHg1NTNFLA0KKyAgICAweDlFM0QsIDB4OUUzRCwgMHgwNkU2LCAweDlFM0UsIDB4OUUzRSwgMHgxQjQzLCAweDlFM0YsIDB4OUUzRiwgMHgwNzlGLA0KKyAgICAweDlFNDAsIDB4OUU0MCwgMHg1NTQwLCAweDlFNDEsIDB4OUU0MiwgMHgxQjQ0LCAweDlFNDMsIDB4OUU0MywgMHgwOTE4LA0KKyAgICAweDlFNDQsIDB4OUU0NCwgMHgxQjQ2LCAweDlFNDUsIDB4OUU0NSwgMHgwNjJCLCAweDlFNDYsIDB4OUU0OSwgMHgxQjQ3LA0KKyAgICAweDlFNEEsIDB4OUU0QSwgMHgwQzkwLCAweDlFNEIsIDB4OUU0QywgMHgxQjRCLCAweDlFNEQsIDB4OUU0RCwgMHg1NTQxLA0KKyAgICAweDlFNEUsIDB4OUU0RSwgMHgxQjRELCAweDlFNEYsIDB4OUU0RiwgMHgwQkI1LCAweDlFNTAsIDB4OUU1MCwgMHg1NTQyLA0KKyAgICAweDlFNTEsIDB4OUU1MSwgMHgxQjRFLCAweDlFNTIsIDB4OUU1NCwgMHg1NTQzLCAweDlFNTUsIDB4OUU1NSwgMHgxQjRGLA0KKyAgICAweDlFNTYsIDB4OUU1NiwgMHg1NTQ2LCAweDlFNTcsIDB4OUU1NywgMHgxQjUwLCAweDlFNTgsIDB4OUU1OCwgMHgxREQ1LA0KKyAgICAweDlFNTksIDB4OUU1OSwgMHg1NTQ3LCAweDlFNUEsIDB4OUU1QywgMHgxQjUxLCAweDlFNUQsIDB4OUU1RCwgMHg1NTQ4LA0KKyAgICAweDlFNUUsIDB4OUU1RSwgMHgxQjU0LCAweDlFNUYsIDB4OUU2MiwgMHg1NTQ5LCAweDlFNjMsIDB4OUU2MywgMHgxQjU1LA0KKyAgICAweDlFNjQsIDB4OUU2NCwgMHgwNzhFLCAweDlFNjUsIDB4OUU2NSwgMHg1NTRELCAweDlFNjYsIDB4OUU2QywgMHgxQjU2LA0KKyAgICAweDlFNkQsIDB4OUU2RCwgMHgxQjVFLCAweDlFNkUsIDB4OUU2RiwgMHg1NTRFLCAweDlFNzAsIDB4OUU3MCwgMHgxMDhBLA0KKyAgICAweDlFNzEsIDB4OUU3MSwgMHgxQjVELCAweDlFNzIsIDB4OUU3MiwgMHg1NTUwLCAweDlFNzMsIDB4OUU3MywgMHgxQjVGLA0KKyAgICAweDlFNzQsIDB4OUU3NCwgMHg1NTUxLCAweDlFNzUsIDB4OUU3NSwgMHgyNjg4LCAweDlFNzYsIDB4OUU3OCwgMHg1NTUyLA0KKyAgICAweDlFNzksIDB4OUU3OSwgMHgyNjlFLCAweDlFN0EsIDB4OUU3QSwgMHgyNUZCLCAweDlFN0IsIDB4OUU3QiwgMHg1NTU1LA0KKyAgICAweDlFN0MsIDB4OUU3QywgMHgxRjhDLCAweDlFN0QsIDB4OUU3RCwgMHgyMUY0LCAweDlFN0UsIDB4OUU3RSwgMHgxRDE2LA0KKyAgICAweDlFN0YsIDB4OUU3RiwgMHgwQTYwLCAweDlFODAsIDB4OUU4MSwgMHg1NTU2LCAweDlFODIsIDB4OUU4MiwgMHgxREZDLA0KKyAgICAweDlFODMsIDB4OUU4NiwgMHg1NTU4LCAweDlFODcsIDB4OUU4OCwgMHgxREZELCAweDlFODksIDB4OUU4QSwgMHg1NTVDLA0KKyAgICAweDlFOEIsIDB4OUU4QiwgMHgxREZGLCAweDlFOEMsIDB4OUU5MSwgMHg1NTVFLCAweDlFOTIsIDB4OUU5MiwgMHgxRTAwLA0KKyAgICAweDlFOTMsIDB4OUU5MywgMHgwQTVCLCAweDlFOTQsIDB4OUU5NiwgMHg1NTY0LCAweDlFOTcsIDB4OUU5NywgMHgyMDBGLA0KKyAgICAweDlFOTgsIDB4OUU5QywgMHg1NTY3LCAweDlFOUQsIDB4OUU5RCwgMHgxRTAyLCAweDlFOUUsIDB4OUU5RSwgMHg1NTZDLA0KKyAgICAweDlFOUYsIDB4OUU5RiwgMHgxRTAzLCAweDlFQTAsIDB4OUVBNCwgMHg1NTZELCAweDlFQTUsIDB4OUVBNSwgMHgyMDcxLA0KKyAgICAweDlFQTYsIDB4OUVBNiwgMHgwQTlBLCAweDlFQTcsIDB4OUVBOCwgMHg1NTcyLCAweDlFQTksIDB4OUVBOSwgMHgyNUY3LA0KKyAgICAweDlFQUEsIDB4OUVBRSwgMHg1NTc0LCAweDlFQUYsIDB4OUVBRiwgMHgyNjk2LCAweDlFQjAsIDB4OUVCMywgMHg1NTc5LA0KKyAgICAweDlFQjQsIDB4OUVCNCwgMHgxQ0VFLCAweDlFQjUsIDB4OUVCNSwgMHgyNjhGLCAweDlFQjYsIDB4OUVCNywgMHg1NTdELA0KKyAgICAweDlFQjgsIDB4OUVCOCwgMHgxQ0VELCAweDlFQjksIDB4OUVCQSwgMHg1NTdGLCAweDlFQkIsIDB4OUVCQiwgMHgwQTkwLA0KKyAgICAweDlFQkMsIDB4OUVCQywgMHg1NTgxLCAweDlFQkQsIDB4OUVCRSwgMHgxREY5LCAweDlFQkYsIDB4OUVDMywgMHg1NTgyLA0KKyAgICAweDlFQzQsIDB4OUVDNCwgMHgwN0RCLCAweDlFQzUsIDB4OUVDOCwgMHg1NTg3LCAweDlFQzksIDB4OUVDOSwgMHgxMkY4LA0KKyAgICAweDlFQ0EsIDB4OUVDQiwgMHg1NThCLCAweDlFQ0MsIDB4OUVDQywgMHgyMkRBLCAweDlFQ0QsIDB4OUVDRCwgMHgwRDg5LA0KKyAgICAweDlFQ0UsIDB4OUVDRSwgMHgwOUQzLCAweDlFQ0YsIDB4OUVDRiwgMHgxQjJBLCAweDlFRDAsIDB4OUVEMCwgMHg1NThELA0KKyAgICAweDlFRDEsIDB4OUVEMSwgMHgwNzkxLCAweDlFRDIsIDB4OUVEMywgMHg1NThFLCAweDlFRDQsIDB4OUVENCwgMHgwQzJBLA0KKyAgICAweDlFRDUsIDB4OUVENywgMHg1NTkwLCAweDlFRDgsIDB4OUVEOCwgMHgwQjBGLCAweDlFRDksIDB4OUVEQSwgMHg1NTkzLA0KKyAgICAweDlFREIsIDB4OUVERCwgMHgxRTA0LCAweDlFREUsIDB4OUVERSwgMHgxRUMxLCAweDlFREYsIDB4OUVERiwgMHgxRTA4LA0KKyAgICAweDlFRTAsIDB4OUVFMCwgMHgxRTA3LCAweDlFRTEsIDB4OUVFMSwgMHg1NTk1LCAweDlFRTIsIDB4OUVFMiwgMHgxRTA5LA0KKyAgICAweDlFRTMsIDB4OUVFNCwgMHg1NTk2LCAweDlFRTUsIDB4OUVFNSwgMHgxRTBDLCAweDlFRTYsIDB4OUVFNiwgMHg1NTk4LA0KKyAgICAweDlFRTcsIDB4OUVFNywgMHgxRTBCLCAweDlFRTgsIDB4OUVFOCwgMHgxRUIzLCAweDlFRTksIDB4OUVFOSwgMHgxRTBBLA0KKyAgICAweDlFRUEsIDB4OUVFQSwgMHgxRTBELCAweDlFRUIsIDB4OUVFRSwgMHg1NTk5LCAweDlFRUYsIDB4OUVFRiwgMHgxRTBFLA0KKyAgICAweDlFRjAsIDB4OUVGMSwgMHg1NTlELCAweDlFRjIsIDB4OUVGMiwgMHgyNjZBLCAweDlFRjMsIDB4OUVGMywgMHg1NTlGLA0KKyAgICAweDlFRjQsIDB4OUVGNCwgMHgyNjhBLCAweDlFRjUsIDB4OUVGNiwgMHg1NUEwLCAweDlFRjcsIDB4OUVGNywgMHgyNjY5LA0KKyAgICAweDlFRjgsIDB4OUVGOCwgMHg1NUEyLCAweDlFRjksIDB4OUVGOSwgMHgxQTU1LCAweDlFRkEsIDB4OUVGQSwgMHg1NUEzLA0KKyAgICAweDlFRkIsIDB4OUVGQywgMHgxQTU2LCAweDlFRkQsIDB4OUVGRCwgMHgyNjE4LCAweDlFRkUsIDB4OUVGRSwgMHgxRDc2LA0KKyAgICAweDlFRkYsIDB4OUVGRiwgMHgyNjE5LCAweDlGMDAsIDB4OUYwOCwgMHg1NUE0LCAweDlGMDksIDB4OUYwOSwgMHgyNjFBLA0KKyAgICAweDlGMEEsIDB4OUYwQSwgMHg1NUFELCAweDlGMEIsIDB4OUYwQiwgMHgxRDc3LCAweDlGMEMsIDB4OUYwQywgMHg1NUFFLA0KKyAgICAweDlGMEQsIDB4OUYwRCwgMHgxRDc4LCAweDlGMEUsIDB4OUYwRSwgMHgwNUU1LCAweDlGMEYsIDB4OUYwRiwgMHg1NUFGLA0KKyAgICAweDlGMTAsIDB4OUYxMCwgMHgxMjc0LCAweDlGMTEsIDB4OUYxMiwgMHg1NUIwLCAweDlGMTMsIDB4OUYxMywgMHgwNzFELA0KKyAgICAweDlGMTQsIDB4OUYxNCwgMHg1NUIyLCAweDlGMTUsIDB4OUYxNSwgMHgyNjczLCAweDlGMTYsIDB4OUYxNiwgMHg1NUIzLA0KKyAgICAweDlGMTcsIDB4OUYxNywgMHgxMjcxLCAweDlGMTgsIDB4OUYxOCwgMHg1NUI0LCAweDlGMTksIDB4OUYxOSwgMHgxM0RGLA0KKyAgICAweDlGMUEsIDB4OUYxRiwgMHg1NUI1LCAweDlGMjAsIDB4OUYyMCwgMHgwRDhBLCAweDlGMjEsIDB4OUYyMSwgMHg1NUJCLA0KKyAgICAweDlGMjIsIDB4OUYyMiwgMHgxRTBGLCAweDlGMjMsIDB4OUYyQiwgMHg1NUJDLCAweDlGMkMsIDB4OUYyQywgMHgxRTEwLA0KKyAgICAweDlGMkQsIDB4OUYyRSwgMHg1NUM1LCAweDlGMkYsIDB4OUYyRiwgMHgxRTExLCAweDlGMzAsIDB4OUYzNiwgMHg1NUM3LA0KKyAgICAweDlGMzcsIDB4OUYzNywgMHgxRTEzLCAweDlGMzgsIDB4OUYzOCwgMHg1NUNFLCAweDlGMzksIDB4OUYzOSwgMHgxRTEyLA0KKyAgICAweDlGM0EsIDB4OUYzQSwgMHg1NUNGLCAweDlGM0IsIDB4OUYzQiwgMHgwNDMwLCAweDlGM0MsIDB4OUYzQywgMHg1NUQwLA0KKyAgICAweDlGM0QsIDB4OUYzRSwgMHgxRTE0LCAweDlGM0YsIDB4OUY0MywgMHg1NUQxLCAweDlGNDQsIDB4OUY0NCwgMHgxRTE2LA0KKyAgICAweDlGNDUsIDB4OUY0OSwgMHg1NUQ2LCAweDlGNEEsIDB4OUY0QSwgMHgyMEM2LCAweDlGNEIsIDB4OUY0QiwgMHgyMjZCLA0KKyAgICAweDlGNEMsIDB4OUY0RSwgMHg1NURCLCAweDlGNEYsIDB4OUY0RiwgMHgyNEQzLCAweDlGNTAsIDB4OUY1MCwgMHgwQzBBLA0KKyAgICAweDlGNTEsIDB4OUY1MSwgMHgxOUMyLCAweDlGNTIsIDB4OUY1MiwgMHgxRTg2LCAweDlGNTMsIDB4OUY1MywgMHg1NURFLA0KKyAgICAweDlGNTQsIDB4OUY1NCwgMHgyNjBGLCAweDlGNTUsIDB4OUY1OCwgMHg1NURGLCAweDlGNTksIDB4OUY1OSwgMHgyNjExLA0KKyAgICAweDlGNUEsIDB4OUY1QiwgMHg1NUUzLCAweDlGNUMsIDB4OUY1QywgMHgyNjEzLCAweDlGNUQsIDB4OUY1RSwgMHg1NUU1LA0KKyAgICAweDlGNUYsIDB4OUY1RiwgMHgyNjEwLCAweDlGNjAsIDB4OUY2MCwgMHgyNjEyLCAweDlGNjEsIDB4OUY2MSwgMHgyMDMwLA0KKyAgICAweDlGNjIsIDB4OUY2MiwgMHg1NUU3LCAweDlGNjMsIDB4OUY2MywgMHgyNjcxLCAweDlGNjQsIDB4OUY2NSwgMHg1NUU4LA0KKyAgICAweDlGNjYsIDB4OUY2NiwgMHgyNjE0LCAweDlGNjcsIDB4OUY2OSwgMHg1NUVBLCAweDlGNkEsIDB4OUY2QSwgMHgyNjE2LA0KKyAgICAweDlGNkIsIDB4OUY2QiwgMHg1NUVELCAweDlGNkMsIDB4OUY2QywgMHgyNjE1LCAweDlGNkQsIDB4OUY3MSwgMHg1NUVFLA0KKyAgICAweDlGNzIsIDB4OUY3MiwgMHgyMEYyLCAweDlGNzMsIDB4OUY3NiwgMHg1NUYzLCAweDlGNzcsIDB4OUY3NywgMHgyNjE3LA0KKyAgICAweDlGNzgsIDB4OUY3RSwgMHg1NUY3LCAweDlGN0YsIDB4OUY3RiwgMHgwNTAyLCAweDlGODAsIDB4OUY4MCwgMHgxRDZELA0KKyAgICAweDlGODEsIDB4OUY4MiwgMHg1NUZFLCAweDlGODMsIDB4OUY4MywgMHgxRDZFLCAweDlGODQsIDB4OUY4NCwgMHgwQTJELA0KKyAgICAweDlGODUsIDB4OUY4QSwgMHgxRDZGLCAweDlGOEIsIDB4OUY4QiwgMHgwQzdFLCAweDlGOEMsIDB4OUY4QywgMHgxRDc1LA0KKyAgICAweDlGOEQsIDB4OUY4RCwgMHgyMDM3LCAweDlGOEUsIDB4OUY4RiwgMHg1NjAwLCAweDlGOTAsIDB4OUY5MCwgMHgyMEIzLA0KKyAgICAweDlGOTEsIDB4OUY5MywgMHg1NjAyLCAweDlGOTQsIDB4OUY5NCwgMHgxRjIyLCAweDlGOTUsIDB4OUY5NSwgMHgyNEVELA0KKyAgICAweDlGOTYsIDB4OUY5OCwgMHg1NjA1LCAweDlGOTksIDB4OUY5OSwgMHgwQTQzLCAweDlGOUEsIDB4OUY5QSwgMHgwNzAxLA0KKyAgICAweDlGOUIsIDB4OUY5QiwgMHgxQTU0LCAweDlGOUMsIDB4OUY5QywgMHgxRjM0LCAweDlGOUQsIDB4OUY5RSwgMHg1NjA4LA0KKyAgICAweDlGOUYsIDB4OUY5RiwgMHgwNzQzLCAweDlGQTAsIDB4OUZBMCwgMHgxMkYzLCAweDlGQTEsIDB4OUZBNSwgMHg1NjBBLA0KKyAgICAweEU4MTYsIDB4RTgxOCwgMHg1NjIwLCAweEU4MUUsIDB4RTgxRSwgMHg1NjI4LCAweEU4MjYsIDB4RTgyNiwgMHg1NjMwLA0KKyAgICAweEU4MkIsIDB4RTgyQywgMHg1NjM1LCAweEU4MzEsIDB4RTgzMiwgMHg1NjNCLCAweEU4M0IsIDB4RTgzQiwgMHg1NjQ1LA0KKyAgICAweEU4NDMsIDB4RTg0MywgMHg1NjRELCAweEU4NTQsIDB4RTg1NSwgMHg1NjVFLCAweEU4NjQsIDB4RTg2NCwgMHg1NjZFLA0KKyAgICAweEY5MkMsIDB4RjkyQywgMHg1NjBGLCAweEZBMEQsIDB4RkEwRiwgMHg1NjEwLCAweEZBMTEsIDB4RkExMSwgMHg1NjEzLA0KKyAgICAweEZBMTMsIDB4RkExNCwgMHg1NjE0LCAweEZBMTgsIDB4RkExOCwgMHg1NjE2LCAweEZBMUYsIDB4RkEyMSwgMHg1NjE3LA0KKyAgICAweEZBMjMsIDB4RkEyNCwgMHg1NjFBLCAweEZBMjcsIDB4RkEyOSwgMHg1NjFDLCAweEZFMzAsIDB4RkUzMCwgMHgyNzFELA0KKyAgICAweEZFNDksIDB4RkU1MiwgMHgyNzJCLCAweEZFNTQsIDB4RkU1NywgMHgyNzM1LCAweEZFNTksIDB4RkU2NiwgMHgyNzM5LA0KKyAgICAweEZFNjgsIDB4RkU2QiwgMHgyNzQ3LCAweEZGMDEsIDB4RkYwMywgMHgwMTA2LCAweEZGMDQsIDB4RkYwNCwgMHgwMEE2LA0KKyAgICAweEZGMDUsIDB4RkY1RCwgMHgwMTBBLCAweEZGNUUsIDB4RkY1RSwgMHgwMDZBLCAweEZGRTAsIDB4RkZFMSwgMHgwMEE4LA0KKyAgICAweEZGRTIsIDB4RkZFMiwgMHgyNzFFLCAweEZGRTMsIDB4RkZFMywgMHgwMTYzLCAweEZGRTQsIDB4RkZFNCwgMHgyNzFGLA0KKyAgICAweEZGRTUsIDB4RkZFNSwgMHgwMTA5LA0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0dCMS9VbmlHQi1VQ1MyLVZfNC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvR0IxL1VuaUdCLVVDUzItVl80LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODkxYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0dCMS9VbmlHQi1VQ1MyLVZfNC5jcHAKQEAgLTAsMCArMSwxNiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX1VuaUdCX1VDUzJfVl80WzI0ICogM10gPSB7CisgICAgMHgyMDE0LCAweDIwMTQsIDB4MDI1NiwgMHgyMDI2LCAweDIwMjYsIDB4MDI1NywgMHgyMjI1LCAweDIyMjUsIDB4MUUxQywKKyAgICAweDMwMDEsIDB4MzAwMSwgMHgwMjNGLCAweDMwMDIsIDB4MzAwMiwgMHgwMjNFLCAweDMwMDgsIDB4MzAwRiwgMHgwMjQ4LAorICAgIDB4MzAxMCwgMHgzMDExLCAweDAyNTIsIDB4MzAxMywgMHgzMDEzLCAweDFFMUEsIDB4MzAxNCwgMHgzMDE1LCAweDAyNDYsCisgICAgMHgzMDE2LCAweDMwMTcsIDB4MDI1MCwgMHhGRjAxLCAweEZGMDEsIDB4MDI0MiwgMHhGRjA4LCAweEZGMDksIDB4MDI0NCwKKyAgICAweEZGMEMsIDB4RkYwQywgMHgwMjNELCAweEZGMEUsIDB4RkYwRSwgMHgxRTFCLCAweEZGMUEsIDB4RkYxQiwgMHgwMjQwLAorICAgIDB4RkYxRCwgMHhGRjFELCAweDFFMUMsIDB4RkYxRiwgMHhGRjFGLCAweDAyNDMsIDB4RkYzQiwgMHhGRjNCLCAweDFFMUQsCisgICAgMHhGRjNELCAweEZGM0QsIDB4MUUxRSwgMHhGRjNGLCAweEZGM0YsIDB4MDI1OCwgMHhGRjVCLCAweEZGNUIsIDB4MDI1NCwKKyAgICAweEZGNUQsIDB4RkY1RCwgMHgwMjU1LCAweEZGNUUsIDB4RkY1RSwgMHgxRTE4LCAweEZGRTMsIDB4RkZFMywgMHgxRTFGLAorfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvY21hcHNfZ2IxLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9HQjEvY21hcHNfZ2IxLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDczOWIxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0dCMS9jbWFwc19nYjEuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9yZXNvdXJjZS5oIgorI2luY2x1ZGUgIi4uLy4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX21vZHVsZS5oIgorI2luY2x1ZGUgIi4uLy4uL2ZwZGZfZm9udC9mb250X2ludC5oIgorI2luY2x1ZGUgIi4uL2NtYXBfaW50LmgiCitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9HQl9FVUNfSF8wW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9HQl9FVUNfVl8wW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9HQnBjX0VVQ19IXzBbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0dCcGNfRVVDX1ZfMFtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfR0JLX0VVQ19IXzJbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0dCS19FVUNfVl8yW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9HQktwX0VVQ19IXzJbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0dCS3BfRVVDX1ZfMltdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfR0JLMktfSF81W107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9HQksyS19IXzVfRFdvcmRbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0dCSzJLX1ZfNVtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfVW5pR0JfVUNTMl9IXzRbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX1VuaUdCX1VDUzJfVl80W107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9HQjFDSUQyVW5pY29kZV81W107CitzdGF0aWMgY29uc3QgRlhDTUFQX0NNYXAgZ19GWENNQVBfR0IxX2NtYXBzW10gPSB7CisgICAgeyAiR0ItRVVDLUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0dCX0VVQ19IXzAsIDkwLCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIkdCLUVVQy1WIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9HQl9FVUNfVl8wLCAyMCwgRlhDTUFQX0NNYXA6Ok5vbmUsIE5VTEwsIDAsIC0xIH0sCisgICAgeyAiR0JwYy1FVUMtSCIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfR0JwY19FVUNfSF8wLCA5MSwgRlhDTUFQX0NNYXA6Ok5vbmUsIE5VTEwsIDAsIDAgfSwKKyAgICB7ICJHQnBjLUVVQy1WIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9HQnBjX0VVQ19WXzAsIDIwLCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICJHQkstRVVDLUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0dCS19FVUNfSF8yLCA0MDcxLCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIkdCSy1FVUMtViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfR0JLX0VVQ19WXzIsIDIwLCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICJHQktwLUVVQy1IIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9HQktwX0VVQ19IXzIsIDQwNzAsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMiB9LAorICAgIHsgIkdCS3AtRVVDLVYiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0dCS3BfRVVDX1ZfMiwgMjAsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIkdCSzJLLUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0dCSzJLX0hfNSwgNDA3MSwgRlhDTUFQX0NNYXA6OlNpbmdsZSwgZ19GWENNQVBfR0JLMktfSF81X0RXb3JkLCAxMDE3LCAtNCB9LAorICAgIHsgIkdCSzJLLVYiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0dCSzJLX1ZfNSwgNDEsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIlVuaUdCLVVDUzItSCIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfVW5pR0JfVUNTMl9IXzQsIDEzODI1LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIlVuaUdCLVVDUzItViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfVW5pR0JfVUNTMl9WXzQsIDI0LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICJVbmlHQi1VVEYxNi1IIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9VbmlHQl9VQ1MyX0hfNCwgMTM4MjUsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAwIH0sCisgICAgeyAiVW5pR0ItVVRGMTYtViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfVW5pR0JfVUNTMl9WXzQsIDI0LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKK307Cit2b2lkIENQREZfTW9kdWxlTWdyOjpMb2FkRW1iZWRkZWRHQjFDTWFwcygpCit7CisgICAgQ1BERl9Gb250R2xvYmFscyogcEZvbnRHbG9iYWxzID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRQYWdlTW9kdWxlKCktPkdldEZvbnRHbG9iYWxzKCk7CisgICAgcEZvbnRHbG9iYWxzLT5tX0VtYmVkZGVkQ2hhcnNldHNbQ0lEU0VUX0dCMV0ubV9wTWFwTGlzdCA9IGdfRlhDTUFQX0dCMV9jbWFwczsKKyAgICBwRm9udEdsb2JhbHMtPm1fRW1iZWRkZWRDaGFyc2V0c1tDSURTRVRfR0IxXS5tX0NvdW50ID0gc2l6ZW9mIGdfRlhDTUFQX0dCMV9jbWFwcyAvIHNpemVvZiAoRlhDTUFQX0NNYXApOworICAgIHBGb250R2xvYmFscy0+bV9FbWJlZGRlZFRvVW5pY29kZXNbQ0lEU0VUX0dCMV0ubV9wTWFwID0gZ19GWENNQVBfR0IxQ0lEMlVuaWNvZGVfNTsKKyAgICBwRm9udEdsb2JhbHMtPm1fRW1iZWRkZWRUb1VuaWNvZGVzW0NJRFNFVF9HQjFdLm1fQ291bnQgPSAzMDI4NDsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvODNwdi1SS1NKLUhfMS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xLzgzcHYtUktTSi1IXzEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOTllNjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xLzgzcHYtUktTSi1IXzEuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF84M3B2X1JLU0pfSF8xWzIyMiAqIDNdID0gew0KKyAgICAweDAwMjAsIDB4MDA3RSwgMHgwMDAxLCAweDAwODAsIDB4MDA4MCwgMHgwMDYxLCAweDAwQTAsIDB4MDBERiwgMHgwMTQ2LA0KKyAgICAweDAwRkQsIDB4MDBGRCwgMHgwMDk4LCAweDAwRkUsIDB4MDBGRSwgMHgwMEU0LCAweDAwRkYsIDB4MDBGRiwgMHgwMDdDLA0KKyAgICAweDgxNDAsIDB4ODE3RSwgMHgwMjc5LCAweDgxODAsIDB4ODFBQywgMHgwMkI4LCAweDgxQjgsIDB4ODFCRiwgMHgwMkU1LA0KKyAgICAweDgxQzgsIDB4ODFDRSwgMHgwMkVELCAweDgxREEsIDB4ODFFOCwgMHgwMkY0LCAweDgxRjAsIDB4ODFGNywgMHgwMzAzLA0KKyAgICAweDgxRkMsIDB4ODFGQywgMHgwMzBCLCAweDgyNEYsIDB4ODI1OCwgMHgwMzBDLCAweDgyNjAsIDB4ODI3OSwgMHgwMzE2LA0KKyAgICAweDgyODEsIDB4ODI5QSwgMHgwMzMwLCAweDgyOUYsIDB4ODJGMSwgMHgwMzRBLCAweDgzNDAsIDB4ODM3RSwgMHgwMzlELA0KKyAgICAweDgzODAsIDB4ODM5NiwgMHgwM0RDLCAweDgzOUYsIDB4ODNCNiwgMHgwM0YzLCAweDgzQkYsIDB4ODNENiwgMHgwNDBCLA0KKyAgICAweDg0NDAsIDB4ODQ2MCwgMHgwNDIzLCAweDg0NzAsIDB4ODQ3RSwgMHgwNDQ0LCAweDg0ODAsIDB4ODQ5MSwgMHgwNDUzLA0KKyAgICAweDg0OUYsIDB4ODQ5RiwgMHgxRDM3LCAweDg0QTAsIDB4ODRBMCwgMHgxRDM5LCAweDg0QTEsIDB4ODRBMSwgMHgxRDQzLA0KKyAgICAweDg0QTIsIDB4ODRBMiwgMHgxRDQ3LCAweDg0QTMsIDB4ODRBMywgMHgxRDRGLCAweDg0QTQsIDB4ODRBNCwgMHgxRDRCLA0KKyAgICAweDg0QTUsIDB4ODRBNSwgMHgxRDUzLCAweDg0QTYsIDB4ODRBNiwgMHgxRDYzLCAweDg0QTcsIDB4ODRBNywgMHgxRDVCLA0KKyAgICAweDg0QTgsIDB4ODRBOCwgMHgxRDZCLCAweDg0QTksIDB4ODRBOSwgMHgxRDczLCAweDg0QUEsIDB4ODRBQSwgMHgxRDM4LA0KKyAgICAweDg0QUIsIDB4ODRBQiwgMHgxRDNBLCAweDg0QUMsIDB4ODRBQywgMHgxRDQ2LCAweDg0QUQsIDB4ODRBRCwgMHgxRDRBLA0KKyAgICAweDg0QUUsIDB4ODRBRSwgMHgxRDUyLCAweDg0QUYsIDB4ODRBRiwgMHgxRDRFLCAweDg0QjAsIDB4ODRCMCwgMHgxRDVBLA0KKyAgICAweDg0QjEsIDB4ODRCMSwgMHgxRDZBLCAweDg0QjIsIDB4ODRCMiwgMHgxRDYyLCAweDg0QjMsIDB4ODRCMywgMHgxRDcyLA0KKyAgICAweDg0QjQsIDB4ODRCNCwgMHgxRDgyLCAweDg0QjUsIDB4ODRCNSwgMHgxRDU3LCAweDg0QjYsIDB4ODRCNiwgMHgxRDY2LA0KKyAgICAweDg0QjcsIDB4ODRCNywgMHgxRDVGLCAweDg0QjgsIDB4ODRCOCwgMHgxRDZFLCAweDg0QjksIDB4ODRCOSwgMHgxRDc2LA0KKyAgICAweDg0QkEsIDB4ODRCQSwgMHgxRDU0LCAweDg0QkIsIDB4ODRCQiwgMHgxRDY3LCAweDg0QkMsIDB4ODRCQywgMHgxRDVDLA0KKyAgICAweDg0QkQsIDB4ODRCRCwgMHgxRDZGLCAweDg0QkUsIDB4ODRCRSwgMHgxRDc5LCAweDg1NDAsIDB4ODU3RSwgMHgwMEU4LA0KKyAgICAweDg1ODAsIDB4ODU4MCwgMHgwMTg2LCAweDg1ODEsIDB4ODU5RSwgMHgwMTI4LCAweDg1OUYsIDB4ODVERCwgMHgwMTQ3LA0KKyAgICAweDg1REUsIDB4ODVGQywgMHgwMTg3LCAweDg2NDAsIDB4ODY3RSwgMHgwMUE2LCAweDg2ODAsIDB4ODY5MSwgMHgwMUU1LA0KKyAgICAweDg2OTIsIDB4ODY5MiwgMHgwMTI3LCAweDg2OTMsIDB4ODY5RSwgMHgwMUY3LCAweDg2QTIsIDB4ODZFRCwgMHgxRDM3LA0KKyAgICAweDg3NDAsIDB4ODc1RCwgMHgxRDgzLCAweDg3NUYsIDB4ODc3NSwgMHgxREExLCAweDg3ODAsIDB4ODc4RiwgMHgxREI4LA0KKyAgICAweDg3OTAsIDB4ODc5MCwgMHgwMkZBLCAweDg3OTEsIDB4ODc5MSwgMHgwMkY5LCAweDg3OTIsIDB4ODc5MiwgMHgwMzAxLA0KKyAgICAweDg3OTMsIDB4ODc5OSwgMHgxREM4LCAweDg3OUEsIDB4ODc5QSwgMHgwMzAwLCAweDg3OUIsIDB4ODc5QywgMHgxRENGLA0KKyAgICAweDg4OUYsIDB4ODhGQywgMHgwNDY1LCAweDg5NDAsIDB4ODk3RSwgMHgwNEMzLCAweDg5ODAsIDB4ODlGQywgMHgwNTAyLA0KKyAgICAweDhBNDAsIDB4OEE3RSwgMHgwNTdGLCAweDhBODAsIDB4OEFGQywgMHgwNUJFLCAweDhCNDAsIDB4OEI3RSwgMHgwNjNCLA0KKyAgICAweDhCODAsIDB4OEJGQywgMHgwNjdBLCAweDhDNDAsIDB4OEM3RSwgMHgwNkY3LCAweDhDODAsIDB4OENGQywgMHgwNzM2LA0KKyAgICAweDhENDAsIDB4OEQ3RSwgMHgwN0IzLCAweDhEODAsIDB4OERGQywgMHgwN0YyLCAweDhFNDAsIDB4OEU3RSwgMHgwODZGLA0KKyAgICAweDhFODAsIDB4OEVGQywgMHgwOEFFLCAweDhGNDAsIDB4OEY3RSwgMHgwOTJCLCAweDhGODAsIDB4OEZGQywgMHgwOTZBLA0KKyAgICAweDkwNDAsIDB4OTA3RSwgMHgwOUU3LCAweDkwODAsIDB4OTBGQywgMHgwQTI2LCAweDkxNDAsIDB4OTE3RSwgMHgwQUEzLA0KKyAgICAweDkxODAsIDB4OTFGQywgMHgwQUUyLCAweDkyNDAsIDB4OTI3RSwgMHgwQjVGLCAweDkyODAsIDB4OTJGQywgMHgwQjlFLA0KKyAgICAweDkzNDAsIDB4OTM3RSwgMHgwQzFCLCAweDkzODAsIDB4OTNGQywgMHgwQzVBLCAweDk0NDAsIDB4OTQ3RSwgMHgwQ0Q3LA0KKyAgICAweDk0ODAsIDB4OTRGQywgMHgwRDE2LCAweDk1NDAsIDB4OTU3RSwgMHgwRDkzLCAweDk1ODAsIDB4OTVGQywgMHgwREQyLA0KKyAgICAweDk2NDAsIDB4OTY3RSwgMHgwRTRGLCAweDk2ODAsIDB4OTZGQywgMHgwRThFLCAweDk3NDAsIDB4OTc3RSwgMHgwRjBCLA0KKyAgICAweDk3ODAsIDB4OTdGQywgMHgwRjRBLCAweDk4NDAsIDB4OTg3MiwgMHgwRkM3LCAweDk4OUYsIDB4OThGQywgMHgwRkZBLA0KKyAgICAweDk5NDAsIDB4OTk3RSwgMHgxMDU4LCAweDk5ODAsIDB4OTlGQywgMHgxMDk3LCAweDlBNDAsIDB4OUE3RSwgMHgxMTE0LA0KKyAgICAweDlBODAsIDB4OUFGQywgMHgxMTUzLCAweDlCNDAsIDB4OUI3RSwgMHgxMUQwLCAweDlCODAsIDB4OUJGQywgMHgxMjBGLA0KKyAgICAweDlDNDAsIDB4OUM3RSwgMHgxMjhDLCAweDlDODAsIDB4OUNGQywgMHgxMkNCLCAweDlENDAsIDB4OUQ3RSwgMHgxMzQ4LA0KKyAgICAweDlEODAsIDB4OURGQywgMHgxMzg3LCAweDlFNDAsIDB4OUU3RSwgMHgxNDA0LCAweDlFODAsIDB4OUVGQywgMHgxNDQzLA0KKyAgICAweDlGNDAsIDB4OUY3RSwgMHgxNEMwLCAweDlGODAsIDB4OUZGQywgMHgxNEZGLCAweEUwNDAsIDB4RTA3RSwgMHgxNTdDLA0KKyAgICAweEUwODAsIDB4RTBGQywgMHgxNUJCLCAweEUxNDAsIDB4RTE3RSwgMHgxNjM4LCAweEUxODAsIDB4RTFGQywgMHgxNjc3LA0KKyAgICAweEUyNDAsIDB4RTI3RSwgMHgxNkY0LCAweEUyODAsIDB4RTJGQywgMHgxNzMzLCAweEUzNDAsIDB4RTM3RSwgMHgxN0IwLA0KKyAgICAweEUzODAsIDB4RTNGQywgMHgxN0VGLCAweEU0NDAsIDB4RTQ3RSwgMHgxODZDLCAweEU0ODAsIDB4RTRGQywgMHgxOEFCLA0KKyAgICAweEU1NDAsIDB4RTU3RSwgMHgxOTI4LCAweEU1ODAsIDB4RTVGQywgMHgxOTY3LCAweEU2NDAsIDB4RTY3RSwgMHgxOUU0LA0KKyAgICAweEU2ODAsIDB4RTZGQywgMHgxQTIzLCAweEU3NDAsIDB4RTc3RSwgMHgxQUEwLCAweEU3ODAsIDB4RTdGQywgMHgxQURGLA0KKyAgICAweEU4NDAsIDB4RTg3RSwgMHgxQjVDLCAweEU4ODAsIDB4RThGQywgMHgxQjlCLCAweEU5NDAsIDB4RTk3RSwgMHgxQzE4LA0KKyAgICAweEU5ODAsIDB4RTlGQywgMHgxQzU3LCAweEVBNDAsIDB4RUE3RSwgMHgxQ0Q0LCAweEVBODAsIDB4RUFBMiwgMHgxRDEzLA0KKyAgICAweEVBQTMsIDB4RUFBNCwgMHgyMDVDLCAweEVCNDAsIDB4RUI0MCwgMHgwMjc5LCAweEVCNDEsIDB4RUI0MiwgMHgxRUNGLA0KKyAgICAweEVCNDMsIDB4RUI0RiwgMHgwMjdDLCAweEVCNTAsIDB4RUI1MSwgMHgxRUQxLCAweEVCNTIsIDB4RUI1QSwgMHgwMjhCLA0KKyAgICAweEVCNUIsIDB4RUI1RCwgMHgxRUQzLCAweEVCNUUsIDB4RUI1RiwgMHgwMjk3LCAweEVCNjAsIDB4RUI2NCwgMHgxRUQ2LA0KKyAgICAweEVCNjUsIDB4RUI2OCwgMHgwMjlFLCAweEVCNjksIDB4RUI3QSwgMHgxRURCLCAweEVCN0IsIDB4RUI3RSwgMHgwMkI0LA0KKyAgICAweEVCODAsIDB4RUI4MCwgMHgwMkI4LCAweEVCODEsIDB4RUI4MSwgMHgxRUVELCAweEVCODIsIDB4RUJBQywgMHgwMkJBLA0KKyAgICAweEVCQjgsIDB4RUJCRiwgMHgwMkU1LCAweEVCQzgsIDB4RUJDRSwgMHgwMkVELCAweEVCREEsIDB4RUJFOCwgMHgwMkY0LA0KKyAgICAweEVCRjAsIDB4RUJGNywgMHgwMzAzLCAweEVCRkMsIDB4RUJGQywgMHgwMzBCLCAweEVDNEYsIDB4RUM1OCwgMHgwMzBDLA0KKyAgICAweEVDNjAsIDB4RUM3OSwgMHgwMzE2LCAweEVDODEsIDB4RUM5QSwgMHgwMzMwLCAweEVDOUYsIDB4RUM5RiwgMHgxRUVFLA0KKyAgICAweEVDQTAsIDB4RUNBMCwgMHgwMzRCLCAweEVDQTEsIDB4RUNBMSwgMHgxRUVGLCAweEVDQTIsIDB4RUNBMiwgMHgwMzRELA0KKyAgICAweEVDQTMsIDB4RUNBMywgMHgxRUYwLCAweEVDQTQsIDB4RUNBNCwgMHgwMzRGLCAweEVDQTUsIDB4RUNBNSwgMHgxRUYxLA0KKyAgICAweEVDQTYsIDB4RUNBNiwgMHgwMzUxLCAweEVDQTcsIDB4RUNBNywgMHgxRUYyLCAweEVDQTgsIDB4RUNDMCwgMHgwMzUzLA0KKyAgICAweEVDQzEsIDB4RUNDMSwgMHgxRUYzLCAweEVDQzIsIDB4RUNFMCwgMHgwMzZELCAweEVDRTEsIDB4RUNFMSwgMHgxRUY0LA0KKyAgICAweEVDRTIsIDB4RUNFMiwgMHgwMzhELCAweEVDRTMsIDB4RUNFMywgMHgxRUY1LCAweEVDRTQsIDB4RUNFNCwgMHgwMzhGLA0KKyAgICAweEVDRTUsIDB4RUNFNSwgMHgxRUY2LCAweEVDRTYsIDB4RUNFQiwgMHgwMzkxLCAweEVDRUMsIDB4RUNFQywgMHgxRUY3LA0KKyAgICAweEVDRUQsIDB4RUNGMSwgMHgwMzk4LCAweEVENDAsIDB4RUQ0MCwgMHgxRUY4LCAweEVENDEsIDB4RUQ0MSwgMHgwMzlFLA0KKyAgICAweEVENDIsIDB4RUQ0MiwgMHgxRUY5LCAweEVENDMsIDB4RUQ0MywgMHgwM0EwLCAweEVENDQsIDB4RUQ0NCwgMHgxRUZBLA0KKyAgICAweEVENDUsIDB4RUQ0NSwgMHgwM0EyLCAweEVENDYsIDB4RUQ0NiwgMHgxRUZCLCAweEVENDcsIDB4RUQ0NywgMHgwM0E0LA0KKyAgICAweEVENDgsIDB4RUQ0OCwgMHgxRUZDLCAweEVENDksIDB4RUQ2MSwgMHgwM0E2LCAweEVENjIsIDB4RUQ2MiwgMHgxRUZELA0KKyAgICAweEVENjMsIDB4RUQ3RSwgMHgwM0MwLCAweEVEODAsIDB4RUQ4MiwgMHgwM0RDLCAweEVEODMsIDB4RUQ4MywgMHgxRUZFLA0KKyAgICAweEVEODQsIDB4RUQ4NCwgMHgwM0UwLCAweEVEODUsIDB4RUQ4NSwgMHgxRUZGLCAweEVEODYsIDB4RUQ4NiwgMHgwM0UyLA0KKyAgICAweEVEODcsIDB4RUQ4NywgMHgxRjAwLCAweEVEODgsIDB4RUQ4RCwgMHgwM0U0LCAweEVEOEUsIDB4RUQ4RSwgMHgxRjAxLA0KKyAgICAweEVEOEYsIDB4RUQ5NCwgMHgwM0VCLCAweEVEOTUsIDB4RUQ5NiwgMHgxRjAyLCAweEVEOUYsIDB4RURCNiwgMHgwM0YzLA0KKyAgICAweEVEQkYsIDB4RURENiwgMHgwNDBCLCAweEVFNDAsIDB4RUU1RCwgMHgxRDgzLCAweEVFNUYsIDB4RUU2RSwgMHgxRjA0LA0KKyAgICAweEVFNkYsIDB4RUU3NSwgMHgxREIxLCAweEVFODAsIDB4RUU4MSwgMHgxRjE0LCAweEVFODIsIDB4RUU4RiwgMHgxREJBLA0KKyAgICAweEVFOTAsIDB4RUU5MCwgMHgwMkZBLCAweEVFOTEsIDB4RUU5MSwgMHgwMkY5LCAweEVFOTIsIDB4RUU5MiwgMHgwMzAxLA0KKyAgICAweEVFOTMsIDB4RUU5OSwgMHgxREM4LCAweEVFOUEsIDB4RUU5QSwgMHgwMzAwLCAweEVFOUIsIDB4RUU5QywgMHgxRENGLA0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS85MG1zLVJLU0otSF8yLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvOTBtcy1SS1NKLUhfMi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQxY2E2MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvOTBtcy1SS1NKLUhfMi5jcHAKQEAgLTAsMCArMSw2NSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQXzkwbXNfUktTSl9IXzJbMTcxICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdELCAweDAwRTcsIDB4MDA3RSwgMHgwMDdFLCAweDAyNzcsIDB4MDBBMCwgMHgwMERGLCAweDAxNDYsDQorICAgIDB4ODE0MCwgMHg4MTdFLCAweDAyNzksIDB4ODE4MCwgMHg4MUFDLCAweDAyQjgsIDB4ODFCOCwgMHg4MUJGLCAweDAyRTUsDQorICAgIDB4ODFDOCwgMHg4MUNFLCAweDAyRUQsIDB4ODFEQSwgMHg4MUU4LCAweDAyRjQsIDB4ODFGMCwgMHg4MUY3LCAweDAzMDMsDQorICAgIDB4ODFGQywgMHg4MUZDLCAweDAzMEIsIDB4ODI0RiwgMHg4MjU4LCAweDAzMEMsIDB4ODI2MCwgMHg4Mjc5LCAweDAzMTYsDQorICAgIDB4ODI4MSwgMHg4MjlBLCAweDAzMzAsIDB4ODI5RiwgMHg4MkYxLCAweDAzNEEsIDB4ODM0MCwgMHg4MzdFLCAweDAzOUQsDQorICAgIDB4ODM4MCwgMHg4Mzk2LCAweDAzREMsIDB4ODM5RiwgMHg4M0I2LCAweDAzRjMsIDB4ODNCRiwgMHg4M0Q2LCAweDA0MEIsDQorICAgIDB4ODQ0MCwgMHg4NDYwLCAweDA0MjMsIDB4ODQ3MCwgMHg4NDdFLCAweDA0NDQsIDB4ODQ4MCwgMHg4NDkxLCAweDA0NTMsDQorICAgIDB4ODQ5RiwgMHg4NDlGLCAweDFEMzcsIDB4ODRBMCwgMHg4NEEwLCAweDFEMzksIDB4ODRBMSwgMHg4NEExLCAweDFENDMsDQorICAgIDB4ODRBMiwgMHg4NEEyLCAweDFENDcsIDB4ODRBMywgMHg4NEEzLCAweDFENEYsIDB4ODRBNCwgMHg4NEE0LCAweDFENEIsDQorICAgIDB4ODRBNSwgMHg4NEE1LCAweDFENTMsIDB4ODRBNiwgMHg4NEE2LCAweDFENjMsIDB4ODRBNywgMHg4NEE3LCAweDFENUIsDQorICAgIDB4ODRBOCwgMHg4NEE4LCAweDFENkIsIDB4ODRBOSwgMHg4NEE5LCAweDFENzMsIDB4ODRBQSwgMHg4NEFBLCAweDFEMzgsDQorICAgIDB4ODRBQiwgMHg4NEFCLCAweDFEM0EsIDB4ODRBQywgMHg4NEFDLCAweDFENDYsIDB4ODRBRCwgMHg4NEFELCAweDFENEEsDQorICAgIDB4ODRBRSwgMHg4NEFFLCAweDFENTIsIDB4ODRBRiwgMHg4NEFGLCAweDFENEUsIDB4ODRCMCwgMHg4NEIwLCAweDFENUEsDQorICAgIDB4ODRCMSwgMHg4NEIxLCAweDFENkEsIDB4ODRCMiwgMHg4NEIyLCAweDFENjIsIDB4ODRCMywgMHg4NEIzLCAweDFENzIsDQorICAgIDB4ODRCNCwgMHg4NEI0LCAweDFEODIsIDB4ODRCNSwgMHg4NEI1LCAweDFENTcsIDB4ODRCNiwgMHg4NEI2LCAweDFENjYsDQorICAgIDB4ODRCNywgMHg4NEI3LCAweDFENUYsIDB4ODRCOCwgMHg4NEI4LCAweDFENkUsIDB4ODRCOSwgMHg4NEI5LCAweDFENzYsDQorICAgIDB4ODRCQSwgMHg4NEJBLCAweDFENTQsIDB4ODRCQiwgMHg4NEJCLCAweDFENjcsIDB4ODRCQywgMHg4NEJDLCAweDFENUMsDQorICAgIDB4ODRCRCwgMHg4NEJELCAweDFENkYsIDB4ODRCRSwgMHg4NEJFLCAweDFENzksIDB4ODc0MCwgMHg4NzVELCAweDFEODMsDQorICAgIDB4ODc1RiwgMHg4NzYwLCAweDFEQTEsIDB4ODc2MSwgMHg4NzYxLCAweDFGNjYsIDB4ODc2MiwgMHg4NzYyLCAweDFEQTQsDQorICAgIDB4ODc2MywgMHg4NzYzLCAweDFGNjgsIDB4ODc2NCwgMHg4NzY0LCAweDFEQTYsIDB4ODc2NSwgMHg4NzY1LCAweDFGNkEsDQorICAgIDB4ODc2NiwgMHg4NzY3LCAweDFEQTgsIDB4ODc2OCwgMHg4NzY4LCAweDFGNkMsIDB4ODc2OSwgMHg4NzZBLCAweDFEQUIsDQorICAgIDB4ODc2QiwgMHg4NzZCLCAweDFGNkIsIDB4ODc2QywgMHg4NzZELCAweDFEQUUsIDB4ODc2RSwgMHg4NzZFLCAweDFGNkYsDQorICAgIDB4ODc2RiwgMHg4Nzc1LCAweDFEQjEsIDB4ODc3RSwgMHg4NzdFLCAweDIwODMsIDB4ODc4MCwgMHg4NzgzLCAweDFEQjgsDQorICAgIDB4ODc4NCwgMHg4Nzg0LCAweDFGNzcsIDB4ODc4NSwgMHg4NzhGLCAweDFEQkQsIDB4ODc5MCwgMHg4NzkwLCAweDAyRkEsDQorICAgIDB4ODc5MSwgMHg4NzkxLCAweDAyRjksIDB4ODc5MiwgMHg4NzkyLCAweDAzMDEsIDB4ODc5MywgMHg4Nzk5LCAweDFEQzgsDQorICAgIDB4ODc5QSwgMHg4NzlBLCAweDAzMDAsIDB4ODc5QiwgMHg4NzlDLCAweDFEQ0YsIDB4ODg5RiwgMHg4OEZDLCAweDA0NjUsDQorICAgIDB4ODk0MCwgMHg4OTdFLCAweDA0QzMsIDB4ODk4MCwgMHg4OUZDLCAweDA1MDIsIDB4OEE0MCwgMHg4QTdFLCAweDA1N0YsDQorICAgIDB4OEE4MCwgMHg4QUZDLCAweDA1QkUsIDB4OEI0MCwgMHg4QjdFLCAweDA2M0IsIDB4OEI4MCwgMHg4QkZDLCAweDA2N0EsDQorICAgIDB4OEM0MCwgMHg4QzdFLCAweDA2RjcsIDB4OEM4MCwgMHg4Q0ZDLCAweDA3MzYsIDB4OEQ0MCwgMHg4RDdFLCAweDA3QjMsDQorICAgIDB4OEQ4MCwgMHg4REZDLCAweDA3RjIsIDB4OEU0MCwgMHg4RTdFLCAweDA4NkYsIDB4OEU4MCwgMHg4RUZDLCAweDA4QUUsDQorICAgIDB4OEY0MCwgMHg4RjdFLCAweDA5MkIsIDB4OEY4MCwgMHg4RkZDLCAweDA5NkEsIDB4OTA0MCwgMHg5MDdFLCAweDA5RTcsDQorICAgIDB4OTA4MCwgMHg5MEZDLCAweDBBMjYsIDB4OTE0MCwgMHg5MTdFLCAweDBBQTMsIDB4OTE4MCwgMHg5MUZDLCAweDBBRTIsDQorICAgIDB4OTI0MCwgMHg5MjdFLCAweDBCNUYsIDB4OTI4MCwgMHg5MkZDLCAweDBCOUUsIDB4OTM0MCwgMHg5MzdFLCAweDBDMUIsDQorICAgIDB4OTM4MCwgMHg5M0ZDLCAweDBDNUEsIDB4OTQ0MCwgMHg5NDdFLCAweDBDRDcsIDB4OTQ4MCwgMHg5NEZDLCAweDBEMTYsDQorICAgIDB4OTU0MCwgMHg5NTdFLCAweDBEOTMsIDB4OTU4MCwgMHg5NUZDLCAweDBERDIsIDB4OTY0MCwgMHg5NjdFLCAweDBFNEYsDQorICAgIDB4OTY4MCwgMHg5NkZDLCAweDBFOEUsIDB4OTc0MCwgMHg5NzdFLCAweDBGMEIsIDB4OTc4MCwgMHg5N0ZDLCAweDBGNEEsDQorICAgIDB4OTg0MCwgMHg5ODcyLCAweDBGQzcsIDB4OTg5RiwgMHg5OEZDLCAweDBGRkEsIDB4OTk0MCwgMHg5OTdFLCAweDEwNTgsDQorICAgIDB4OTk4MCwgMHg5OUZDLCAweDEwOTcsIDB4OUE0MCwgMHg5QTdFLCAweDExMTQsIDB4OUE4MCwgMHg5QUZDLCAweDExNTMsDQorICAgIDB4OUI0MCwgMHg5QjdFLCAweDExRDAsIDB4OUI4MCwgMHg5QkZDLCAweDEyMEYsIDB4OUM0MCwgMHg5QzdFLCAweDEyOEMsDQorICAgIDB4OUM4MCwgMHg5Q0ZDLCAweDEyQ0IsIDB4OUQ0MCwgMHg5RDdFLCAweDEzNDgsIDB4OUQ4MCwgMHg5REZDLCAweDEzODcsDQorICAgIDB4OUU0MCwgMHg5RTdFLCAweDE0MDQsIDB4OUU4MCwgMHg5RUZDLCAweDE0NDMsIDB4OUY0MCwgMHg5RjdFLCAweDE0QzAsDQorICAgIDB4OUY4MCwgMHg5RkZDLCAweDE0RkYsIDB4RTA0MCwgMHhFMDdFLCAweDE1N0MsIDB4RTA4MCwgMHhFMEZDLCAweDE1QkIsDQorICAgIDB4RTE0MCwgMHhFMTdFLCAweDE2MzgsIDB4RTE4MCwgMHhFMUZDLCAweDE2NzcsIDB4RTI0MCwgMHhFMjdFLCAweDE2RjQsDQorICAgIDB4RTI4MCwgMHhFMkZDLCAweDE3MzMsIDB4RTM0MCwgMHhFMzdFLCAweDE3QjAsIDB4RTM4MCwgMHhFM0ZDLCAweDE3RUYsDQorICAgIDB4RTQ0MCwgMHhFNDdFLCAweDE4NkMsIDB4RTQ4MCwgMHhFNEZDLCAweDE4QUIsIDB4RTU0MCwgMHhFNTdFLCAweDE5MjgsDQorICAgIDB4RTU4MCwgMHhFNUZDLCAweDE5NjcsIDB4RTY0MCwgMHhFNjdFLCAweDE5RTQsIDB4RTY4MCwgMHhFNkZDLCAweDFBMjMsDQorICAgIDB4RTc0MCwgMHhFNzdFLCAweDFBQTAsIDB4RTc4MCwgMHhFN0ZDLCAweDFBREYsIDB4RTg0MCwgMHhFODdFLCAweDFCNUMsDQorICAgIDB4RTg4MCwgMHhFOEZDLCAweDFCOUIsIDB4RTk0MCwgMHhFOTdFLCAweDFDMTgsIDB4RTk4MCwgMHhFOUZDLCAweDFDNTcsDQorICAgIDB4RUE0MCwgMHhFQTdFLCAweDFDRDQsIDB4RUE4MCwgMHhFQUEyLCAweDFEMTMsIDB4RUFBMywgMHhFQUE0LCAweDIwNUMsDQorICAgIDB4RUQ0MCwgMHhFRDdFLCAweDIwQTcsIDB4RUQ4MCwgMHhFREIzLCAweDIwRTYsIDB4RURCNCwgMHhFREI0LCAweDA3QzksDQorICAgIDB4RURCNSwgMHhFREZDLCAweDIxMUEsIDB4RUU0MCwgMHhFRTdFLCAweDIxNjIsIDB4RUU4MCwgMHhFRUVDLCAweDIxQTEsDQorICAgIDB4RUVFRiwgMHhFRUY4LCAweDFGOUMsIDB4RUVGOSwgMHhFRUY5LCAweDAyRUYsIDB4RUVGQSwgMHhFRUZDLCAweDFGNDUsDQorICAgIDB4RkE0MCwgMHhGQTQ5LCAweDFGOUMsIDB4RkE0QSwgMHhGQTUzLCAweDFEOTcsIDB4RkE1NCwgMHhGQTU0LCAweDAyRUYsDQorICAgIDB4RkE1NSwgMHhGQTU3LCAweDFGNDUsIDB4RkE1OCwgMHhGQTU4LCAweDFEQzIsIDB4RkE1OSwgMHhGQTU5LCAweDFEQkEsDQorICAgIDB4RkE1QSwgMHhGQTVBLCAweDFGNzcsIDB4RkE1QiwgMHhGQTVCLCAweDAzMDAsIDB4RkE1QywgMHhGQTdFLCAweDIwQTcsDQorICAgIDB4RkE4MCwgMHhGQUNGLCAweDIwQ0EsIDB4RkFEMCwgMHhGQUQwLCAweDA3QzksIDB4RkFEMSwgMHhGQUZDLCAweDIxMUEsDQorICAgIDB4RkI0MCwgMHhGQjdFLCAweDIxNDYsIDB4RkI4MCwgMHhGQkZDLCAweDIxODUsIDB4RkM0MCwgMHhGQzRCLCAweDIyMDIsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xLzkwbXMtUktTSi1WXzIuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS85MG1zLVJLU0otVl8yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWY4MWVkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS85MG1zLVJLU0otVl8yLmNwcApAQCAtMCwwICsxLDM0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfOTBtc19SS1NKX1ZfMls3OCAqIDNdID0geworICAgIDB4ODE0MSwgMHg4MTQyLCAweDFFQ0YsIDB4ODE0MywgMHg4MTQzLCAweDIwNEMsIDB4ODE0NCwgMHg4MTQ0LCAweDIwNTIsCisgICAgMHg4MTUwLCAweDgxNTEsIDB4MUVEMSwgMHg4MTVCLCAweDgxNUQsIDB4MUVEMywgMHg4MTYwLCAweDgxNjQsIDB4MUVENiwKKyAgICAweDgxNjksIDB4ODE3QSwgMHgxRURCLCAweDgxODEsIDB4ODE4MSwgMHgxRUVELCAweDgxQTgsIDB4ODFBOCwgMHgwMkUzLAorICAgIDB4ODFBOSwgMHg4MUE5LCAweDAyRTIsIDB4ODFBQSwgMHg4MUFCLCAweDAyRTAsIDB4ODFBQywgMHg4MUFDLCAweDIwNEUsCisgICAgMHg4MjlGLCAweDgyOUYsIDB4MUVFRSwgMHg4MkExLCAweDgyQTEsIDB4MUVFRiwgMHg4MkEzLCAweDgyQTMsIDB4MUVGMCwKKyAgICAweDgyQTUsIDB4ODJBNSwgMHgxRUYxLCAweDgyQTcsIDB4ODJBNywgMHgxRUYyLCAweDgyQzEsIDB4ODJDMSwgMHgxRUYzLAorICAgIDB4ODJFMSwgMHg4MkUxLCAweDFFRjQsIDB4ODJFMywgMHg4MkUzLCAweDFFRjUsIDB4ODJFNSwgMHg4MkU1LCAweDFFRjYsCisgICAgMHg4MkVDLCAweDgyRUMsIDB4MUVGNywgMHg4MzQwLCAweDgzNDAsIDB4MUVGOCwgMHg4MzQyLCAweDgzNDIsIDB4MUVGOSwKKyAgICAweDgzNDQsIDB4ODM0NCwgMHgxRUZBLCAweDgzNDYsIDB4ODM0NiwgMHgxRUZCLCAweDgzNDgsIDB4ODM0OCwgMHgxRUZDLAorICAgIDB4ODM2MiwgMHg4MzYyLCAweDFFRkQsIDB4ODM4MywgMHg4MzgzLCAweDFFRkUsIDB4ODM4NSwgMHg4Mzg1LCAweDFFRkYsCisgICAgMHg4Mzg3LCAweDgzODcsIDB4MUYwMCwgMHg4MzhFLCAweDgzOEUsIDB4MUYwMSwgMHg4Mzk1LCAweDgzOTYsIDB4MUYwMiwKKyAgICAweDg0OUYsIDB4ODQ5RiwgMHgxRDM5LCAweDg0QTAsIDB4ODRBMCwgMHgxRDM3LCAweDg0QTEsIDB4ODRBMSwgMHgxRDQ3LAorICAgIDB4ODRBMiwgMHg4NEEyLCAweDFENEYsIDB4ODRBMywgMHg4NEEzLCAweDFENEIsIDB4ODRBNCwgMHg4NEE0LCAweDFENDMsCisgICAgMHg4NEE1LCAweDg0QTUsIDB4MUQ2MywgMHg4NEE2LCAweDg0QTYsIDB4MUQ1QiwgMHg4NEE3LCAweDg0QTcsIDB4MUQ2QiwKKyAgICAweDg0QTgsIDB4ODRBOCwgMHgxRDUzLCAweDg0QTksIDB4ODRBOSwgMHgxRDczLCAweDg0QUEsIDB4ODRBQSwgMHgxRDNBLAorICAgIDB4ODRBQiwgMHg4NEFCLCAweDFEMzgsIDB4ODRBQywgMHg4NEFDLCAweDFENEEsIDB4ODRBRCwgMHg4NEFELCAweDFENTIsCisgICAgMHg4NEFFLCAweDg0QUUsIDB4MUQ0RSwgMHg4NEFGLCAweDg0QUYsIDB4MUQ0NiwgMHg4NEIwLCAweDg0QjAsIDB4MUQ2QSwKKyAgICAweDg0QjEsIDB4ODRCMSwgMHgxRDYyLCAweDg0QjIsIDB4ODRCMiwgMHgxRDcyLCAweDg0QjMsIDB4ODRCMywgMHgxRDVBLAorICAgIDB4ODRCNCwgMHg4NEI0LCAweDFEODIsIDB4ODRCNSwgMHg4NEI1LCAweDFENjYsIDB4ODRCNiwgMHg4NEI2LCAweDFENUYsCisgICAgMHg4NEI3LCAweDg0QjcsIDB4MUQ2RSwgMHg4NEI4LCAweDg0QjgsIDB4MUQ1NywgMHg4NEI5LCAweDg0QjksIDB4MUQ3OSwKKyAgICAweDg0QkEsIDB4ODRCQSwgMHgxRDY3LCAweDg0QkIsIDB4ODRCQiwgMHgxRDVDLCAweDg0QkMsIDB4ODRCQywgMHgxRDZGLAorICAgIDB4ODRCRCwgMHg4NEJELCAweDFENTQsIDB4ODRCRSwgMHg4NEJFLCAweDFENzYsIDB4ODc1RiwgMHg4NzYwLCAweDFGMDQsCisgICAgMHg4NzYxLCAweDg3NjEsIDB4MjA4OSwgMHg4NzYyLCAweDg3NjIsIDB4MUYwNywgMHg4NzYzLCAweDg3NjMsIDB4MjA5MywKKyAgICAweDg3NjQsIDB4ODc2NCwgMHgxRjA5LCAweDg3NjUsIDB4ODc2NSwgMHgyMDkyLCAweDg3NjYsIDB4ODc2NywgMHgxRjBCLAorICAgIDB4ODc2OCwgMHg4NzY4LCAweDIwOTgsIDB4ODc2OSwgMHg4NzZBLCAweDFGMEUsIDB4ODc2QiwgMHg4NzZCLCAweDIwOUMsCisgICAgMHg4NzZDLCAweDg3NkQsIDB4MUYxMSwgMHg4NzZFLCAweDg3NkUsIDB4MjA5RCwgMHg4NzgwLCAweDg3ODEsIDB4MUYxNCwKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xLzkwbXNwLVJLU0otSF8yLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvOTBtc3AtUktTSi1IXzIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZDhjMmQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xLzkwbXNwLVJLU0otSF8yLmNwcApAQCAtMCwwICsxLDY1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfOTBtc3BfUktTSl9IXzJbMTcwICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDAwMDEsIDB4MDBBMCwgMHgwMERGLCAweDAxNDYsIDB4ODE0MCwgMHg4MTdFLCAweDAyNzksDQorICAgIDB4ODE4MCwgMHg4MUFDLCAweDAyQjgsIDB4ODFCOCwgMHg4MUJGLCAweDAyRTUsIDB4ODFDOCwgMHg4MUNFLCAweDAyRUQsDQorICAgIDB4ODFEQSwgMHg4MUU4LCAweDAyRjQsIDB4ODFGMCwgMHg4MUY3LCAweDAzMDMsIDB4ODFGQywgMHg4MUZDLCAweDAzMEIsDQorICAgIDB4ODI0RiwgMHg4MjU4LCAweDAzMEMsIDB4ODI2MCwgMHg4Mjc5LCAweDAzMTYsIDB4ODI4MSwgMHg4MjlBLCAweDAzMzAsDQorICAgIDB4ODI5RiwgMHg4MkYxLCAweDAzNEEsIDB4ODM0MCwgMHg4MzdFLCAweDAzOUQsIDB4ODM4MCwgMHg4Mzk2LCAweDAzREMsDQorICAgIDB4ODM5RiwgMHg4M0I2LCAweDAzRjMsIDB4ODNCRiwgMHg4M0Q2LCAweDA0MEIsIDB4ODQ0MCwgMHg4NDYwLCAweDA0MjMsDQorICAgIDB4ODQ3MCwgMHg4NDdFLCAweDA0NDQsIDB4ODQ4MCwgMHg4NDkxLCAweDA0NTMsIDB4ODQ5RiwgMHg4NDlGLCAweDFEMzcsDQorICAgIDB4ODRBMCwgMHg4NEEwLCAweDFEMzksIDB4ODRBMSwgMHg4NEExLCAweDFENDMsIDB4ODRBMiwgMHg4NEEyLCAweDFENDcsDQorICAgIDB4ODRBMywgMHg4NEEzLCAweDFENEYsIDB4ODRBNCwgMHg4NEE0LCAweDFENEIsIDB4ODRBNSwgMHg4NEE1LCAweDFENTMsDQorICAgIDB4ODRBNiwgMHg4NEE2LCAweDFENjMsIDB4ODRBNywgMHg4NEE3LCAweDFENUIsIDB4ODRBOCwgMHg4NEE4LCAweDFENkIsDQorICAgIDB4ODRBOSwgMHg4NEE5LCAweDFENzMsIDB4ODRBQSwgMHg4NEFBLCAweDFEMzgsIDB4ODRBQiwgMHg4NEFCLCAweDFEM0EsDQorICAgIDB4ODRBQywgMHg4NEFDLCAweDFENDYsIDB4ODRBRCwgMHg4NEFELCAweDFENEEsIDB4ODRBRSwgMHg4NEFFLCAweDFENTIsDQorICAgIDB4ODRBRiwgMHg4NEFGLCAweDFENEUsIDB4ODRCMCwgMHg4NEIwLCAweDFENUEsIDB4ODRCMSwgMHg4NEIxLCAweDFENkEsDQorICAgIDB4ODRCMiwgMHg4NEIyLCAweDFENjIsIDB4ODRCMywgMHg4NEIzLCAweDFENzIsIDB4ODRCNCwgMHg4NEI0LCAweDFEODIsDQorICAgIDB4ODRCNSwgMHg4NEI1LCAweDFENTcsIDB4ODRCNiwgMHg4NEI2LCAweDFENjYsIDB4ODRCNywgMHg4NEI3LCAweDFENUYsDQorICAgIDB4ODRCOCwgMHg4NEI4LCAweDFENkUsIDB4ODRCOSwgMHg4NEI5LCAweDFENzYsIDB4ODRCQSwgMHg4NEJBLCAweDFENTQsDQorICAgIDB4ODRCQiwgMHg4NEJCLCAweDFENjcsIDB4ODRCQywgMHg4NEJDLCAweDFENUMsIDB4ODRCRCwgMHg4NEJELCAweDFENkYsDQorICAgIDB4ODRCRSwgMHg4NEJFLCAweDFENzksIDB4ODc0MCwgMHg4NzVELCAweDFEODMsIDB4ODc1RiwgMHg4NzYwLCAweDFEQTEsDQorICAgIDB4ODc2MSwgMHg4NzYxLCAweDFGNjYsIDB4ODc2MiwgMHg4NzYyLCAweDFEQTQsIDB4ODc2MywgMHg4NzYzLCAweDFGNjgsDQorICAgIDB4ODc2NCwgMHg4NzY0LCAweDFEQTYsIDB4ODc2NSwgMHg4NzY1LCAweDFGNkEsIDB4ODc2NiwgMHg4NzY3LCAweDFEQTgsDQorICAgIDB4ODc2OCwgMHg4NzY4LCAweDFGNkMsIDB4ODc2OSwgMHg4NzZBLCAweDFEQUIsIDB4ODc2QiwgMHg4NzZCLCAweDFGNkIsDQorICAgIDB4ODc2QywgMHg4NzZELCAweDFEQUUsIDB4ODc2RSwgMHg4NzZFLCAweDFGNkYsIDB4ODc2RiwgMHg4Nzc1LCAweDFEQjEsDQorICAgIDB4ODc3RSwgMHg4NzdFLCAweDIwODMsIDB4ODc4MCwgMHg4NzgzLCAweDFEQjgsIDB4ODc4NCwgMHg4Nzg0LCAweDFGNzcsDQorICAgIDB4ODc4NSwgMHg4NzhGLCAweDFEQkQsIDB4ODc5MCwgMHg4NzkwLCAweDAyRkEsIDB4ODc5MSwgMHg4NzkxLCAweDAyRjksDQorICAgIDB4ODc5MiwgMHg4NzkyLCAweDAzMDEsIDB4ODc5MywgMHg4Nzk5LCAweDFEQzgsIDB4ODc5QSwgMHg4NzlBLCAweDAzMDAsDQorICAgIDB4ODc5QiwgMHg4NzlDLCAweDFEQ0YsIDB4ODg5RiwgMHg4OEZDLCAweDA0NjUsIDB4ODk0MCwgMHg4OTdFLCAweDA0QzMsDQorICAgIDB4ODk4MCwgMHg4OUZDLCAweDA1MDIsIDB4OEE0MCwgMHg4QTdFLCAweDA1N0YsIDB4OEE4MCwgMHg4QUZDLCAweDA1QkUsDQorICAgIDB4OEI0MCwgMHg4QjdFLCAweDA2M0IsIDB4OEI4MCwgMHg4QkZDLCAweDA2N0EsIDB4OEM0MCwgMHg4QzdFLCAweDA2RjcsDQorICAgIDB4OEM4MCwgMHg4Q0ZDLCAweDA3MzYsIDB4OEQ0MCwgMHg4RDdFLCAweDA3QjMsIDB4OEQ4MCwgMHg4REZDLCAweDA3RjIsDQorICAgIDB4OEU0MCwgMHg4RTdFLCAweDA4NkYsIDB4OEU4MCwgMHg4RUZDLCAweDA4QUUsIDB4OEY0MCwgMHg4RjdFLCAweDA5MkIsDQorICAgIDB4OEY4MCwgMHg4RkZDLCAweDA5NkEsIDB4OTA0MCwgMHg5MDdFLCAweDA5RTcsIDB4OTA4MCwgMHg5MEZDLCAweDBBMjYsDQorICAgIDB4OTE0MCwgMHg5MTdFLCAweDBBQTMsIDB4OTE4MCwgMHg5MUZDLCAweDBBRTIsIDB4OTI0MCwgMHg5MjdFLCAweDBCNUYsDQorICAgIDB4OTI4MCwgMHg5MkZDLCAweDBCOUUsIDB4OTM0MCwgMHg5MzdFLCAweDBDMUIsIDB4OTM4MCwgMHg5M0ZDLCAweDBDNUEsDQorICAgIDB4OTQ0MCwgMHg5NDdFLCAweDBDRDcsIDB4OTQ4MCwgMHg5NEZDLCAweDBEMTYsIDB4OTU0MCwgMHg5NTdFLCAweDBEOTMsDQorICAgIDB4OTU4MCwgMHg5NUZDLCAweDBERDIsIDB4OTY0MCwgMHg5NjdFLCAweDBFNEYsIDB4OTY4MCwgMHg5NkZDLCAweDBFOEUsDQorICAgIDB4OTc0MCwgMHg5NzdFLCAweDBGMEIsIDB4OTc4MCwgMHg5N0ZDLCAweDBGNEEsIDB4OTg0MCwgMHg5ODcyLCAweDBGQzcsDQorICAgIDB4OTg5RiwgMHg5OEZDLCAweDBGRkEsIDB4OTk0MCwgMHg5OTdFLCAweDEwNTgsIDB4OTk4MCwgMHg5OUZDLCAweDEwOTcsDQorICAgIDB4OUE0MCwgMHg5QTdFLCAweDExMTQsIDB4OUE4MCwgMHg5QUZDLCAweDExNTMsIDB4OUI0MCwgMHg5QjdFLCAweDExRDAsDQorICAgIDB4OUI4MCwgMHg5QkZDLCAweDEyMEYsIDB4OUM0MCwgMHg5QzdFLCAweDEyOEMsIDB4OUM4MCwgMHg5Q0ZDLCAweDEyQ0IsDQorICAgIDB4OUQ0MCwgMHg5RDdFLCAweDEzNDgsIDB4OUQ4MCwgMHg5REZDLCAweDEzODcsIDB4OUU0MCwgMHg5RTdFLCAweDE0MDQsDQorICAgIDB4OUU4MCwgMHg5RUZDLCAweDE0NDMsIDB4OUY0MCwgMHg5RjdFLCAweDE0QzAsIDB4OUY4MCwgMHg5RkZDLCAweDE0RkYsDQorICAgIDB4RTA0MCwgMHhFMDdFLCAweDE1N0MsIDB4RTA4MCwgMHhFMEZDLCAweDE1QkIsIDB4RTE0MCwgMHhFMTdFLCAweDE2MzgsDQorICAgIDB4RTE4MCwgMHhFMUZDLCAweDE2NzcsIDB4RTI0MCwgMHhFMjdFLCAweDE2RjQsIDB4RTI4MCwgMHhFMkZDLCAweDE3MzMsDQorICAgIDB4RTM0MCwgMHhFMzdFLCAweDE3QjAsIDB4RTM4MCwgMHhFM0ZDLCAweDE3RUYsIDB4RTQ0MCwgMHhFNDdFLCAweDE4NkMsDQorICAgIDB4RTQ4MCwgMHhFNEZDLCAweDE4QUIsIDB4RTU0MCwgMHhFNTdFLCAweDE5MjgsIDB4RTU4MCwgMHhFNUZDLCAweDE5NjcsDQorICAgIDB4RTY0MCwgMHhFNjdFLCAweDE5RTQsIDB4RTY4MCwgMHhFNkZDLCAweDFBMjMsIDB4RTc0MCwgMHhFNzdFLCAweDFBQTAsDQorICAgIDB4RTc4MCwgMHhFN0ZDLCAweDFBREYsIDB4RTg0MCwgMHhFODdFLCAweDFCNUMsIDB4RTg4MCwgMHhFOEZDLCAweDFCOUIsDQorICAgIDB4RTk0MCwgMHhFOTdFLCAweDFDMTgsIDB4RTk4MCwgMHhFOUZDLCAweDFDNTcsIDB4RUE0MCwgMHhFQTdFLCAweDFDRDQsDQorICAgIDB4RUE4MCwgMHhFQUEyLCAweDFEMTMsIDB4RUFBMywgMHhFQUE0LCAweDIwNUMsIDB4RUQ0MCwgMHhFRDdFLCAweDIwQTcsDQorICAgIDB4RUQ4MCwgMHhFREIzLCAweDIwRTYsIDB4RURCNCwgMHhFREI0LCAweDA3QzksIDB4RURCNSwgMHhFREZDLCAweDIxMUEsDQorICAgIDB4RUU0MCwgMHhFRTdFLCAweDIxNjIsIDB4RUU4MCwgMHhFRUVDLCAweDIxQTEsIDB4RUVFRiwgMHhFRUY4LCAweDFGOUMsDQorICAgIDB4RUVGOSwgMHhFRUY5LCAweDAyRUYsIDB4RUVGQSwgMHhFRUZDLCAweDFGNDUsIDB4RkE0MCwgMHhGQTQ5LCAweDFGOUMsDQorICAgIDB4RkE0QSwgMHhGQTUzLCAweDFEOTcsIDB4RkE1NCwgMHhGQTU0LCAweDAyRUYsIDB4RkE1NSwgMHhGQTU3LCAweDFGNDUsDQorICAgIDB4RkE1OCwgMHhGQTU4LCAweDFEQzIsIDB4RkE1OSwgMHhGQTU5LCAweDFEQkEsIDB4RkE1QSwgMHhGQTVBLCAweDFGNzcsDQorICAgIDB4RkE1QiwgMHhGQTVCLCAweDAzMDAsIDB4RkE1QywgMHhGQTdFLCAweDIwQTcsIDB4RkE4MCwgMHhGQUNGLCAweDIwQ0EsDQorICAgIDB4RkFEMCwgMHhGQUQwLCAweDA3QzksIDB4RkFEMSwgMHhGQUZDLCAweDIxMUEsIDB4RkI0MCwgMHhGQjdFLCAweDIxNDYsDQorICAgIDB4RkI4MCwgMHhGQkZDLCAweDIxODUsIDB4RkM0MCwgMHhGQzRCLCAweDIyMDIsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xLzkwbXNwLVJLU0otVl8yLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvOTBtc3AtUktTSi1WXzIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NThjNmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xLzkwbXNwLVJLU0otVl8yLmNwcApAQCAtMCwwICsxLDM0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfOTBtc3BfUktTSl9WXzJbNzggKiAzXSA9IHsKKyAgICAweDgxNDEsIDB4ODE0MiwgMHgxRUNGLCAweDgxNDMsIDB4ODE0MywgMHgyMDRDLCAweDgxNDQsIDB4ODE0NCwgMHgyMDUyLAorICAgIDB4ODE1MCwgMHg4MTUxLCAweDFFRDEsIDB4ODE1QiwgMHg4MTVELCAweDFFRDMsIDB4ODE2MCwgMHg4MTY0LCAweDFFRDYsCisgICAgMHg4MTY5LCAweDgxN0EsIDB4MUVEQiwgMHg4MTgxLCAweDgxODEsIDB4MUVFRCwgMHg4MUE4LCAweDgxQTgsIDB4MDJFMywKKyAgICAweDgxQTksIDB4ODFBOSwgMHgwMkUyLCAweDgxQUEsIDB4ODFBQiwgMHgwMkUwLCAweDgxQUMsIDB4ODFBQywgMHgyMDRFLAorICAgIDB4ODI5RiwgMHg4MjlGLCAweDFFRUUsIDB4ODJBMSwgMHg4MkExLCAweDFFRUYsIDB4ODJBMywgMHg4MkEzLCAweDFFRjAsCisgICAgMHg4MkE1LCAweDgyQTUsIDB4MUVGMSwgMHg4MkE3LCAweDgyQTcsIDB4MUVGMiwgMHg4MkMxLCAweDgyQzEsIDB4MUVGMywKKyAgICAweDgyRTEsIDB4ODJFMSwgMHgxRUY0LCAweDgyRTMsIDB4ODJFMywgMHgxRUY1LCAweDgyRTUsIDB4ODJFNSwgMHgxRUY2LAorICAgIDB4ODJFQywgMHg4MkVDLCAweDFFRjcsIDB4ODM0MCwgMHg4MzQwLCAweDFFRjgsIDB4ODM0MiwgMHg4MzQyLCAweDFFRjksCisgICAgMHg4MzQ0LCAweDgzNDQsIDB4MUVGQSwgMHg4MzQ2LCAweDgzNDYsIDB4MUVGQiwgMHg4MzQ4LCAweDgzNDgsIDB4MUVGQywKKyAgICAweDgzNjIsIDB4ODM2MiwgMHgxRUZELCAweDgzODMsIDB4ODM4MywgMHgxRUZFLCAweDgzODUsIDB4ODM4NSwgMHgxRUZGLAorICAgIDB4ODM4NywgMHg4Mzg3LCAweDFGMDAsIDB4ODM4RSwgMHg4MzhFLCAweDFGMDEsIDB4ODM5NSwgMHg4Mzk2LCAweDFGMDIsCisgICAgMHg4NDlGLCAweDg0OUYsIDB4MUQzOSwgMHg4NEEwLCAweDg0QTAsIDB4MUQzNywgMHg4NEExLCAweDg0QTEsIDB4MUQ0NywKKyAgICAweDg0QTIsIDB4ODRBMiwgMHgxRDRGLCAweDg0QTMsIDB4ODRBMywgMHgxRDRCLCAweDg0QTQsIDB4ODRBNCwgMHgxRDQzLAorICAgIDB4ODRBNSwgMHg4NEE1LCAweDFENjMsIDB4ODRBNiwgMHg4NEE2LCAweDFENUIsIDB4ODRBNywgMHg4NEE3LCAweDFENkIsCisgICAgMHg4NEE4LCAweDg0QTgsIDB4MUQ1MywgMHg4NEE5LCAweDg0QTksIDB4MUQ3MywgMHg4NEFBLCAweDg0QUEsIDB4MUQzQSwKKyAgICAweDg0QUIsIDB4ODRBQiwgMHgxRDM4LCAweDg0QUMsIDB4ODRBQywgMHgxRDRBLCAweDg0QUQsIDB4ODRBRCwgMHgxRDUyLAorICAgIDB4ODRBRSwgMHg4NEFFLCAweDFENEUsIDB4ODRBRiwgMHg4NEFGLCAweDFENDYsIDB4ODRCMCwgMHg4NEIwLCAweDFENkEsCisgICAgMHg4NEIxLCAweDg0QjEsIDB4MUQ2MiwgMHg4NEIyLCAweDg0QjIsIDB4MUQ3MiwgMHg4NEIzLCAweDg0QjMsIDB4MUQ1QSwKKyAgICAweDg0QjQsIDB4ODRCNCwgMHgxRDgyLCAweDg0QjUsIDB4ODRCNSwgMHgxRDY2LCAweDg0QjYsIDB4ODRCNiwgMHgxRDVGLAorICAgIDB4ODRCNywgMHg4NEI3LCAweDFENkUsIDB4ODRCOCwgMHg4NEI4LCAweDFENTcsIDB4ODRCOSwgMHg4NEI5LCAweDFENzksCisgICAgMHg4NEJBLCAweDg0QkEsIDB4MUQ2NywgMHg4NEJCLCAweDg0QkIsIDB4MUQ1QywgMHg4NEJDLCAweDg0QkMsIDB4MUQ2RiwKKyAgICAweDg0QkQsIDB4ODRCRCwgMHgxRDU0LCAweDg0QkUsIDB4ODRCRSwgMHgxRDc2LCAweDg3NUYsIDB4ODc2MCwgMHgxRjA0LAorICAgIDB4ODc2MSwgMHg4NzYxLCAweDIwODksIDB4ODc2MiwgMHg4NzYyLCAweDFGMDcsIDB4ODc2MywgMHg4NzYzLCAweDIwOTMsCisgICAgMHg4NzY0LCAweDg3NjQsIDB4MUYwOSwgMHg4NzY1LCAweDg3NjUsIDB4MjA5MiwgMHg4NzY2LCAweDg3NjcsIDB4MUYwQiwKKyAgICAweDg3NjgsIDB4ODc2OCwgMHgyMDk4LCAweDg3NjksIDB4ODc2QSwgMHgxRjBFLCAweDg3NkIsIDB4ODc2QiwgMHgyMDlDLAorICAgIDB4ODc2QywgMHg4NzZELCAweDFGMTEsIDB4ODc2RSwgMHg4NzZFLCAweDIwOUQsIDB4ODc4MCwgMHg4NzgxLCAweDFGMTQsCit9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS85MHB2LVJLU0otSF8xLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvOTBwdi1SS1NKLUhfMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0ZDRkYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvOTBwdi1SS1NKLUhfMS5jcHAKQEAgLTAsMCArMSw5NiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQXzkwcHZfUktTSl9IXzFbMjYzICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDAwMDEsIDB4MDA4MCwgMHgwMDgwLCAweDAwNjEsIDB4MDBBMCwgMHgwMERGLCAweDAxNDYsDQorICAgIDB4MDBGRCwgMHgwMEZELCAweDAwOTgsIDB4MDBGRSwgMHgwMEZFLCAweDAwRTQsIDB4MDBGRiwgMHgwMEZGLCAweDAwN0MsDQorICAgIDB4ODE0MCwgMHg4MTdFLCAweDAyNzksIDB4ODE4MCwgMHg4MUFDLCAweDAyQjgsIDB4ODFCOCwgMHg4MUJGLCAweDAyRTUsDQorICAgIDB4ODFDOCwgMHg4MUNFLCAweDAyRUQsIDB4ODFEQSwgMHg4MUU4LCAweDAyRjQsIDB4ODFGMCwgMHg4MUY3LCAweDAzMDMsDQorICAgIDB4ODFGQywgMHg4MUZDLCAweDAzMEIsIDB4ODI0RiwgMHg4MjU4LCAweDAzMEMsIDB4ODI2MCwgMHg4Mjc5LCAweDAzMTYsDQorICAgIDB4ODI4MSwgMHg4MjlBLCAweDAzMzAsIDB4ODI5RiwgMHg4MkYxLCAweDAzNEEsIDB4ODM0MCwgMHg4MzdFLCAweDAzOUQsDQorICAgIDB4ODM4MCwgMHg4Mzk2LCAweDAzREMsIDB4ODM5RiwgMHg4M0I2LCAweDAzRjMsIDB4ODNCRiwgMHg4M0Q2LCAweDA0MEIsDQorICAgIDB4ODQ0MCwgMHg4NDYwLCAweDA0MjMsIDB4ODQ3MCwgMHg4NDdFLCAweDA0NDQsIDB4ODQ4MCwgMHg4NDkxLCAweDA0NTMsDQorICAgIDB4ODQ5RiwgMHg4NDlGLCAweDFEMzcsIDB4ODRBMCwgMHg4NEEwLCAweDFEMzksIDB4ODRBMSwgMHg4NEExLCAweDFENDMsDQorICAgIDB4ODRBMiwgMHg4NEEyLCAweDFENDcsIDB4ODRBMywgMHg4NEEzLCAweDFENEYsIDB4ODRBNCwgMHg4NEE0LCAweDFENEIsDQorICAgIDB4ODRBNSwgMHg4NEE1LCAweDFENTMsIDB4ODRBNiwgMHg4NEE2LCAweDFENjMsIDB4ODRBNywgMHg4NEE3LCAweDFENUIsDQorICAgIDB4ODRBOCwgMHg4NEE4LCAweDFENkIsIDB4ODRBOSwgMHg4NEE5LCAweDFENzMsIDB4ODRBQSwgMHg4NEFBLCAweDFEMzgsDQorICAgIDB4ODRBQiwgMHg4NEFCLCAweDFEM0EsIDB4ODRBQywgMHg4NEFDLCAweDFENDYsIDB4ODRBRCwgMHg4NEFELCAweDFENEEsDQorICAgIDB4ODRBRSwgMHg4NEFFLCAweDFENTIsIDB4ODRBRiwgMHg4NEFGLCAweDFENEUsIDB4ODRCMCwgMHg4NEIwLCAweDFENUEsDQorICAgIDB4ODRCMSwgMHg4NEIxLCAweDFENkEsIDB4ODRCMiwgMHg4NEIyLCAweDFENjIsIDB4ODRCMywgMHg4NEIzLCAweDFENzIsDQorICAgIDB4ODRCNCwgMHg4NEI0LCAweDFEODIsIDB4ODRCNSwgMHg4NEI1LCAweDFENTcsIDB4ODRCNiwgMHg4NEI2LCAweDFENjYsDQorICAgIDB4ODRCNywgMHg4NEI3LCAweDFENUYsIDB4ODRCOCwgMHg4NEI4LCAweDFENkUsIDB4ODRCOSwgMHg4NEI5LCAweDFENzYsDQorICAgIDB4ODRCQSwgMHg4NEJBLCAweDFENTQsIDB4ODRCQiwgMHg4NEJCLCAweDFENjcsIDB4ODRCQywgMHg4NEJDLCAweDFENUMsDQorICAgIDB4ODRCRCwgMHg4NEJELCAweDFENkYsIDB4ODRCRSwgMHg4NEJFLCAweDFENzksIDB4ODU0MCwgMHg4NTUzLCAweDFEODMsDQorICAgIDB4ODU1RSwgMHg4NTcxLCAweDFGODcsIDB4ODU3QywgMHg4NTdFLCAweDIwNUUsIDB4ODU4MCwgMHg4NTg1LCAweDIwNjEsDQorICAgIDB4ODU5MSwgMHg4NTlBLCAweDFGN0QsIDB4ODU5RiwgMHg4NUE4LCAweDFEOTcsIDB4ODVBOSwgMHg4NUFBLCAweDIwMjEsDQorICAgIDB4ODVBQiwgMHg4NUFELCAweDIwNjcsIDB4ODVCMywgMHg4NUJDLCAweDFGOUMsIDB4ODVCRCwgMHg4NUMxLCAweDIwNkEsDQorICAgIDB4ODVEQiwgMHg4NUY0LCAweDFGQjAsIDB4ODY0MCwgMHg4NjQwLCAweDFEQjEsIDB4ODY0MSwgMHg4NjQxLCAweDFGRkEsDQorICAgIDB4ODY0MiwgMHg4NjQyLCAweDFEQjIsIDB4ODY0MywgMHg4NjQzLCAweDFGNTQsIDB4ODY0NCwgMHg4NjQ0LCAweDFGNTYsDQorICAgIDB4ODY0NSwgMHg4NjQ1LCAweDIwNkYsIDB4ODY0NiwgMHg4NjQ2LCAweDFEQjcsIDB4ODY0NywgMHg4NjQ3LCAweDFGNTcsDQorICAgIDB4ODY0OCwgMHg4NjQ4LCAweDFEQjMsIDB4ODY0OSwgMHg4NjQ5LCAweDFGNTUsIDB4ODY0QSwgMHg4NjRBLCAweDFEQjQsDQorICAgIDB4ODY0QiwgMHg4NjRCLCAweDIwNzAsIDB4ODY0QywgMHg4NjRELCAweDFEQjUsIDB4ODY0RSwgMHg4NjRFLCAweDFGNjUsDQorICAgIDB4ODY0RiwgMHg4NjU1LCAweDFGNTgsIDB4ODY1NiwgMHg4NjU2LCAweDIwNzEsIDB4ODY1NywgMHg4NjU3LCAweDFGNjQsDQorICAgIDB4ODY1OCwgMHg4NjU5LCAweDFGNjIsIDB4ODY1QSwgMHg4NjVDLCAweDFGNUYsIDB4ODY1RCwgMHg4NjVELCAweDIwNzIsDQorICAgIDB4ODY5QiwgMHg4NjlELCAweDFEQkEsIDB4ODY5RSwgMHg4NjlFLCAweDIwNzMsIDB4ODY5RiwgMHg4NjlGLCAweDFGNTIsDQorICAgIDB4ODZBMCwgMHg4NkExLCAweDFGNTAsIDB4ODZBMiwgMHg4NkEyLCAweDFGNTMsIDB4ODZBMywgMHg4NkEzLCAweDIwMTMsDQorICAgIDB4ODZBNCwgMHg4NkE0LCAweDIwMTUsIDB4ODZBNSwgMHg4NkE1LCAweDIwMTQsIDB4ODZBNiwgMHg4NkE2LCAweDIwMTYsDQorICAgIDB4ODZCMywgMHg4NkIzLCAweDFGN0EsIDB4ODZCNCwgMHg4NkI0LCAweDFGNzgsIDB4ODZCNSwgMHg4NkI1LCAweDIwNzQsDQorICAgIDB4ODZDNywgMHg4NkNBLCAweDIwMUIsIDB4ODZDQiwgMHg4NkNFLCAweDIwNzUsIDB4ODZDRiwgMHg4NkNGLCAweDFGNEUsDQorICAgIDB4ODZEMCwgMHg4NkQwLCAweDFGNEQsIDB4ODZEMSwgMHg4NkQxLCAweDFGNEMsIDB4ODZEMiwgMHg4NkQyLCAweDFGNEIsDQorICAgIDB4ODZEMywgMHg4NkQ2LCAweDIwMEUsIDB4ODc0MCwgMHg4NzQ2LCAweDIwMDUsIDB4ODc0NywgMHg4NzQ3LCAweDFGRDYsDQorICAgIDB4ODc0OCwgMHg4NzQ4LCAweDIwMEMsIDB4ODc0OSwgMHg4NzQ5LCAweDFGRDEsIDB4ODc0QSwgMHg4NzRBLCAweDFGQ0EsDQorICAgIDB4ODc0QiwgMHg4NzRCLCAweDFEQzQsIDB4ODc0QywgMHg4NzRDLCAweDFGRDcsIDB4ODc0RCwgMHg4NzRELCAweDFEQzIsDQorICAgIDB4ODc0RSwgMHg4NzRFLCAweDFGRDIsIDB4ODc0RiwgMHg4NzRGLCAweDFGQ0QsIDB4ODc1MCwgMHg4NzUwLCAweDFEQzMsDQorICAgIDB4ODc1MSwgMHg4NzUxLCAweDFGRDUsIDB4ODc1MiwgMHg4NzUyLCAweDFGRDMsIDB4ODc1MywgMHg4NzUzLCAweDFGQ0YsDQorICAgIDB4ODc1NCwgMHg4NzU0LCAweDFGRDQsIDB4ODc1NSwgMHg4NzU1LCAweDFGRDAsIDB4ODc1NiwgMHg4NzU3LCAweDFGQ0IsDQorICAgIDB4ODc1OCwgMHg4NzU4LCAweDFGQ0UsIDB4ODc5MSwgMHg4NzkyLCAweDIwN0QsIDB4ODc5MywgMHg4Nzk3LCAweDFEQkQsDQorICAgIDB4ODc5OCwgMHg4Nzk4LCAweDFGREEsIDB4ODc5OSwgMHg4Nzk5LCAweDFGRTUsIDB4ODc5QSwgMHg4NzlBLCAweDIwN0YsDQorICAgIDB4ODc5QiwgMHg4NzlCLCAweDFGREUsIDB4ODc5QywgMHg4NzlDLCAweDFGRkYsIDB4ODc5RCwgMHg4NzlELCAweDIwODAsDQorICAgIDB4ODc5RSwgMHg4NzlFLCAweDIwMUYsIDB4ODc5RiwgMHg4NzlGLCAweDFEQTEsIDB4ODdBMCwgMHg4N0EwLCAweDFGNjYsDQorICAgIDB4ODdBMSwgMHg4N0ExLCAweDFEQTQsIDB4ODdBMiwgMHg4N0EyLCAweDFEQTIsIDB4ODdBMywgMHg4N0EzLCAweDFGNjcsDQorICAgIDB4ODdBNCwgMHg4N0E0LCAweDFGRjcsIDB4ODdBNSwgMHg4N0E2LCAweDIwODcsIDB4ODdBNywgMHg4N0E3LCAweDFGNkEsDQorICAgIDB4ODdBOCwgMHg4N0E4LCAweDFEQTgsIDB4ODdBOSwgMHg4N0FBLCAweDFGNjgsIDB4ODdBQiwgMHg4N0FCLCAweDFEQTYsDQorICAgIDB4ODdBQywgMHg4N0FDLCAweDFEQTksIDB4ODdBRCwgMHg4N0FELCAweDFEQUYsIDB4ODdBRSwgMHg4N0FFLCAweDFGNkUsDQorICAgIDB4ODdBRiwgMHg4N0FGLCAweDFGNkMsIDB4ODdCMCwgMHg4N0IwLCAweDFEQUIsIDB4ODdCMSwgMHg4N0IxLCAweDFGNkQsDQorICAgIDB4ODdCMiwgMHg4N0IyLCAweDFGNkIsIDB4ODdCMywgMHg4N0IzLCAweDFEQUMsIDB4ODdCNCwgMHg4N0I0LCAweDFGNkYsDQorICAgIDB4ODdCNSwgMHg4N0I1LCAweDFEQUUsIDB4ODdCRCwgMHg4N0JELCAweDFGNzAsIDB4ODdCRSwgMHg4N0JGLCAweDFGNzMsDQorICAgIDB4ODdDMCwgMHg4N0MxLCAweDFGNzEsIDB4ODdFNSwgMHg4N0U3LCAweDFEQzUsIDB4ODdFOCwgMHg4N0U4LCAweDIwODMsDQorICAgIDB4ODdGQSwgMHg4N0ZBLCAweDFGNzYsIDB4ODdGQiwgMHg4N0ZDLCAweDIwODEsIDB4ODg0MCwgMHg4ODQwLCAweDFEQzgsDQorICAgIDB4ODg0MSwgMHg4ODQyLCAweDFEQ0QsIDB4ODg1NCwgMHg4ODU1LCAweDFEQjgsIDB4ODg2OCwgMHg4ODY4LCAweDFGMTYsDQorICAgIDB4ODg2QSwgMHg4ODZELCAweDIwNzksIDB4ODg5RiwgMHg4OEZDLCAweDA0NjUsIDB4ODk0MCwgMHg4OTdFLCAweDA0QzMsDQorICAgIDB4ODk4MCwgMHg4OUZDLCAweDA1MDIsIDB4OEE0MCwgMHg4QTdFLCAweDA1N0YsIDB4OEE4MCwgMHg4QUZDLCAweDA1QkUsDQorICAgIDB4OEI0MCwgMHg4QjdFLCAweDA2M0IsIDB4OEI4MCwgMHg4QkZDLCAweDA2N0EsIDB4OEM0MCwgMHg4QzdFLCAweDA2RjcsDQorICAgIDB4OEM4MCwgMHg4Q0ZDLCAweDA3MzYsIDB4OEQ0MCwgMHg4RDdFLCAweDA3QjMsIDB4OEQ4MCwgMHg4REZDLCAweDA3RjIsDQorICAgIDB4OEU0MCwgMHg4RTdFLCAweDA4NkYsIDB4OEU4MCwgMHg4RUZDLCAweDA4QUUsIDB4OEY0MCwgMHg4RjdFLCAweDA5MkIsDQorICAgIDB4OEY4MCwgMHg4RkZDLCAweDA5NkEsIDB4OTA0MCwgMHg5MDdFLCAweDA5RTcsIDB4OTA4MCwgMHg5MEZDLCAweDBBMjYsDQorICAgIDB4OTE0MCwgMHg5MTdFLCAweDBBQTMsIDB4OTE4MCwgMHg5MUZDLCAweDBBRTIsIDB4OTI0MCwgMHg5MjdFLCAweDBCNUYsDQorICAgIDB4OTI4MCwgMHg5MkZDLCAweDBCOUUsIDB4OTM0MCwgMHg5MzdFLCAweDBDMUIsIDB4OTM4MCwgMHg5M0ZDLCAweDBDNUEsDQorICAgIDB4OTQ0MCwgMHg5NDdFLCAweDBDRDcsIDB4OTQ4MCwgMHg5NEZDLCAweDBEMTYsIDB4OTU0MCwgMHg5NTdFLCAweDBEOTMsDQorICAgIDB4OTU4MCwgMHg5NUZDLCAweDBERDIsIDB4OTY0MCwgMHg5NjdFLCAweDBFNEYsIDB4OTY4MCwgMHg5NkZDLCAweDBFOEUsDQorICAgIDB4OTc0MCwgMHg5NzdFLCAweDBGMEIsIDB4OTc4MCwgMHg5N0ZDLCAweDBGNEEsIDB4OTg0MCwgMHg5ODcyLCAweDBGQzcsDQorICAgIDB4OTg5RiwgMHg5OEZDLCAweDBGRkEsIDB4OTk0MCwgMHg5OTdFLCAweDEwNTgsIDB4OTk4MCwgMHg5OUZDLCAweDEwOTcsDQorICAgIDB4OUE0MCwgMHg5QTdFLCAweDExMTQsIDB4OUE4MCwgMHg5QUZDLCAweDExNTMsIDB4OUI0MCwgMHg5QjdFLCAweDExRDAsDQorICAgIDB4OUI4MCwgMHg5QkZDLCAweDEyMEYsIDB4OUM0MCwgMHg5QzdFLCAweDEyOEMsIDB4OUM4MCwgMHg5Q0ZDLCAweDEyQ0IsDQorICAgIDB4OUQ0MCwgMHg5RDdFLCAweDEzNDgsIDB4OUQ4MCwgMHg5REZDLCAweDEzODcsIDB4OUU0MCwgMHg5RTdFLCAweDE0MDQsDQorICAgIDB4OUU4MCwgMHg5RUZDLCAweDE0NDMsIDB4OUY0MCwgMHg5RjdFLCAweDE0QzAsIDB4OUY4MCwgMHg5RkZDLCAweDE0RkYsDQorICAgIDB4RTA0MCwgMHhFMDdFLCAweDE1N0MsIDB4RTA4MCwgMHhFMEZDLCAweDE1QkIsIDB4RTE0MCwgMHhFMTdFLCAweDE2MzgsDQorICAgIDB4RTE4MCwgMHhFMUZDLCAweDE2NzcsIDB4RTI0MCwgMHhFMjdFLCAweDE2RjQsIDB4RTI4MCwgMHhFMkZDLCAweDE3MzMsDQorICAgIDB4RTM0MCwgMHhFMzdFLCAweDE3QjAsIDB4RTM4MCwgMHhFM0ZDLCAweDE3RUYsIDB4RTQ0MCwgMHhFNDdFLCAweDE4NkMsDQorICAgIDB4RTQ4MCwgMHhFNEZDLCAweDE4QUIsIDB4RTU0MCwgMHhFNTdFLCAweDE5MjgsIDB4RTU4MCwgMHhFNUZDLCAweDE5NjcsDQorICAgIDB4RTY0MCwgMHhFNjdFLCAweDE5RTQsIDB4RTY4MCwgMHhFNkZDLCAweDFBMjMsIDB4RTc0MCwgMHhFNzdFLCAweDFBQTAsDQorICAgIDB4RTc4MCwgMHhFN0ZDLCAweDFBREYsIDB4RTg0MCwgMHhFODdFLCAweDFCNUMsIDB4RTg4MCwgMHhFOEZDLCAweDFCOUIsDQorICAgIDB4RTk0MCwgMHhFOTdFLCAweDFDMTgsIDB4RTk4MCwgMHhFOUZDLCAweDFDNTcsIDB4RUE0MCwgMHhFQTdFLCAweDFDRDQsDQorICAgIDB4RUE4MCwgMHhFQUEyLCAweDFEMTMsIDB4RUFBMywgMHhFQUE0LCAweDIwNUMsIDB4RUI0MSwgMHhFQjQyLCAweDFFQ0YsDQorICAgIDB4RUI1MCwgMHhFQjUxLCAweDFFRDEsIDB4RUI1QiwgMHhFQjVELCAweDFFRDMsIDB4RUI2MCwgMHhFQjY0LCAweDFFRDYsDQorICAgIDB4RUI2OSwgMHhFQjdBLCAweDFFREIsIDB4RUI4MSwgMHhFQjgxLCAweDFFRUQsIDB4RUM5RiwgMHhFQzlGLCAweDFFRUUsDQorICAgIDB4RUNBMSwgMHhFQ0ExLCAweDFFRUYsIDB4RUNBMywgMHhFQ0EzLCAweDFFRjAsIDB4RUNBNSwgMHhFQ0E1LCAweDFFRjEsDQorICAgIDB4RUNBNywgMHhFQ0E3LCAweDFFRjIsIDB4RUNDMSwgMHhFQ0MxLCAweDFFRjMsIDB4RUNFMSwgMHhFQ0UxLCAweDFFRjQsDQorICAgIDB4RUNFMywgMHhFQ0UzLCAweDFFRjUsIDB4RUNFNSwgMHhFQ0U1LCAweDFFRjYsIDB4RUNFQywgMHhFQ0VDLCAweDFFRjcsDQorICAgIDB4RUQ0MCwgMHhFRDQwLCAweDFFRjgsIDB4RUQ0MiwgMHhFRDQyLCAweDFFRjksIDB4RUQ0NCwgMHhFRDQ0LCAweDFFRkEsDQorICAgIDB4RUQ0NiwgMHhFRDQ2LCAweDFFRkIsIDB4RUQ0OCwgMHhFRDQ4LCAweDFFRkMsIDB4RUQ2MiwgMHhFRDYyLCAweDFFRkQsDQorICAgIDB4RUQ4MywgMHhFRDgzLCAweDFFRkUsIDB4RUQ4NSwgMHhFRDg1LCAweDFFRkYsIDB4RUQ4NywgMHhFRDg3LCAweDFGMDAsDQorICAgIDB4RUQ4RSwgMHhFRDhFLCAweDFGMDEsIDB4RUQ5NSwgMHhFRDk2LCAweDFGMDIsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL0FkZC1SS1NKLUhfMS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL0FkZC1SS1NKLUhfMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ1ODBkNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvQWRkLVJLU0otSF8xLmNwcApAQCAtMCwwICsxLDIyMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0FkZF9SS1NKX0hfMVs2MzUgKiAzXSA9IHsNCisgICAgMHgwMDIwLCAweDAwN0UsIDB4MDBFNywgMHgwMEEwLCAweDAwREYsIDB4MDE0NiwgMHg4MTQwLCAweDgxN0UsIDB4MDI3OSwNCisgICAgMHg4MTgwLCAweDgxQUMsIDB4MDJCOCwgMHg4MUI4LCAweDgxQkYsIDB4MDJFNSwgMHg4MUM4LCAweDgxQ0UsIDB4MDJFRCwNCisgICAgMHg4MURBLCAweDgxRTgsIDB4MDJGNCwgMHg4MUYwLCAweDgxRjcsIDB4MDMwMywgMHg4MUZDLCAweDgxRkMsIDB4MDMwQiwNCisgICAgMHg4MjRGLCAweDgyNTgsIDB4MDMwQywgMHg4MjYwLCAweDgyNzksIDB4MDMxNiwgMHg4MjgxLCAweDgyOUEsIDB4MDMzMCwNCisgICAgMHg4MjlGLCAweDgyRjEsIDB4MDM0QSwgMHg4MkYyLCAweDgyRjQsIDB4MUYxNiwgMHg4MzQwLCAweDgzN0UsIDB4MDM5RCwNCisgICAgMHg4MzgwLCAweDgzOTYsIDB4MDNEQywgMHg4MzlGLCAweDgzQjYsIDB4MDNGMywgMHg4M0JGLCAweDgzRDYsIDB4MDQwQiwNCisgICAgMHg4NDQwLCAweDg0NjAsIDB4MDQyMywgMHg4NDcwLCAweDg0N0UsIDB4MDQ0NCwgMHg4NDgwLCAweDg0OTEsIDB4MDQ1MywNCisgICAgMHg4NDlGLCAweDg0OUYsIDB4MUQzNywgMHg4NEEwLCAweDg0QTAsIDB4MUQzOSwgMHg4NEExLCAweDg0QTEsIDB4MUQ0MywNCisgICAgMHg4NEEyLCAweDg0QTIsIDB4MUQ0NywgMHg4NEEzLCAweDg0QTMsIDB4MUQ0RiwgMHg4NEE0LCAweDg0QTQsIDB4MUQ0QiwNCisgICAgMHg4NEE1LCAweDg0QTUsIDB4MUQ1MywgMHg4NEE2LCAweDg0QTYsIDB4MUQ2MywgMHg4NEE3LCAweDg0QTcsIDB4MUQ1QiwNCisgICAgMHg4NEE4LCAweDg0QTgsIDB4MUQ2QiwgMHg4NEE5LCAweDg0QTksIDB4MUQ3MywgMHg4NEFBLCAweDg0QUEsIDB4MUQzOCwNCisgICAgMHg4NEFCLCAweDg0QUIsIDB4MUQzQSwgMHg4NEFDLCAweDg0QUMsIDB4MUQ0NiwgMHg4NEFELCAweDg0QUQsIDB4MUQ0QSwNCisgICAgMHg4NEFFLCAweDg0QUUsIDB4MUQ1MiwgMHg4NEFGLCAweDg0QUYsIDB4MUQ0RSwgMHg4NEIwLCAweDg0QjAsIDB4MUQ1QSwNCisgICAgMHg4NEIxLCAweDg0QjEsIDB4MUQ2QSwgMHg4NEIyLCAweDg0QjIsIDB4MUQ2MiwgMHg4NEIzLCAweDg0QjMsIDB4MUQ3MiwNCisgICAgMHg4NEI0LCAweDg0QjQsIDB4MUQ4MiwgMHg4NEI1LCAweDg0QjUsIDB4MUQ1NywgMHg4NEI2LCAweDg0QjYsIDB4MUQ2NiwNCisgICAgMHg4NEI3LCAweDg0QjcsIDB4MUQ1RiwgMHg4NEI4LCAweDg0QjgsIDB4MUQ2RSwgMHg4NEI5LCAweDg0QjksIDB4MUQ3NiwNCisgICAgMHg4NEJBLCAweDg0QkEsIDB4MUQ1NCwgMHg4NEJCLCAweDg0QkIsIDB4MUQ2NywgMHg4NEJDLCAweDg0QkMsIDB4MUQ1QywNCisgICAgMHg4NEJELCAweDg0QkQsIDB4MUQ2RiwgMHg4NEJFLCAweDg0QkUsIDB4MUQ3OSwgMHg4ODlGLCAweDg4OUYsIDB4MDQ2NSwNCisgICAgMHg4OEEwLCAweDg4QTAsIDB4MUREMSwgMHg4OEExLCAweDg4QUYsIDB4MDQ2NywgMHg4OEIwLCAweDg4QjAsIDB4MUYxOSwNCisgICAgMHg4OEIxLCAweDg4QjgsIDB4MDQ3NywgMHg4OEI5LCAweDg4QjksIDB4MUREMiwgMHg4OEJBLCAweDg4RUIsIDB4MDQ4MCwNCisgICAgMHg4OEVDLCAweDg4RUMsIDB4MUREMywgMHg4OEVELCAweDg4RUUsIDB4MDRCMywgMHg4OEVGLCAweDg4RUYsIDB4MUYxQSwNCisgICAgMHg4OEYwLCAweDg4RjAsIDB4MDRCNiwgMHg4OEYxLCAweDg4RjEsIDB4MURENCwgMHg4OEYyLCAweDg4RjksIDB4MDRCOCwNCisgICAgMHg4OEZBLCAweDg4RkEsIDB4MURENSwgMHg4OEZCLCAweDg4RkMsIDB4MDRDMSwgMHg4OTQwLCAweDg5NDgsIDB4MDRDMywNCisgICAgMHg4OTQ5LCAweDg5NDksIDB4MURENiwgMHg4OTRBLCAweDg5NTEsIDB4MDRDRCwgMHg4OTUyLCAweDg5NTIsIDB4MUYxQiwNCisgICAgMHg4OTUzLCAweDg5NTMsIDB4MDRENiwgMHg4OTU0LCAweDg5NTQsIDB4MURENywgMHg4OTU1LCAweDg5NTcsIDB4MDREOCwNCisgICAgMHg4OTU4LCAweDg5NTgsIDB4MUYxQywgMHg4OTU5LCAweDg5NUIsIDB4MDREQywgMHg4OTVDLCAweDg5NUMsIDB4MUREQSwNCisgICAgMHg4OTVELCAweDg5NjAsIDB4MDRFMCwgMHg4OTYxLCAweDg5NjEsIDB4MUREQiwgMHg4OTYyLCAweDg5N0UsIDB4MDRFNSwNCisgICAgMHg4OTgwLCAweDg5OEEsIDB4MDUwMiwgMHg4OThCLCAweDg5OEIsIDB4MUREQywgMHg4OThDLCAweDg5QTUsIDB4MDUwRSwNCisgICAgMHg4OUE2LCAweDg5QTYsIDB4MURERCwgMHg4OUE3LCAweDg5QTcsIDB4MDUyOSwgMHg4OUE4LCAweDg5QTgsIDB4MURERSwNCisgICAgMHg4OUE5LCAweDg5REQsIDB4MDUyQiwgMHg4OURFLCAweDg5REUsIDB4MURERiwgMHg4OURGLCAweDg5RTQsIDB4MDU2MSwNCisgICAgMHg4OUU1LCAweDg5RTUsIDB4MUYxRCwgMHg4OUU2LCAweDg5RjcsIDB4MDU2OCwgMHg4OUY4LCAweDg5RjgsIDB4MURFMCwNCisgICAgMHg4OUY5LCAweDg5RkMsIDB4MDU3QiwgMHg4QTQwLCAweDhBNDAsIDB4MDU3RiwgMHg4QTQxLCAweDhBNDEsIDB4MURFMiwNCisgICAgMHg4QTQyLCAweDhBN0UsIDB4MDU4MSwgMHg4QTgwLCAweDhBOEEsIDB4MDVCRSwgMHg4QThCLCAweDhBOEIsIDB4MURFNCwNCisgICAgMHg4QThDLCAweDhBOTIsIDB4MDVDQSwgMHg4QTkzLCAweDhBOTMsIDB4MURFNSwgMHg4QTk0LCAweDhBOTksIDB4MDVEMiwNCisgICAgMHg4QTlBLCAweDhBOUEsIDB4MURFNiwgMHg4QTlCLCAweDhBQkYsIDB4MDVEOSwgMHg4QUMwLCAweDhBQzAsIDB4MURFNywNCisgICAgMHg4QUMxLCAweDhBQ0EsIDB4MDVGRiwgMHg4QUNCLCAweDhBQ0IsIDB4MURFOCwgMHg4QUNDLCAweDhBRTIsIDB4MDYwQSwNCisgICAgMHg4QUUzLCAweDhBRTMsIDB4MURFOSwgMHg4QUU0LCAweDhBRkMsIDB4MDYyMiwgMHg4QjQwLCAweDhCNDksIDB4MDYzQiwNCisgICAgMHg4QjRBLCAweDhCNEEsIDB4MURFQSwgMHg4QjRCLCAweDhCNUUsIDB4MDY0NiwgMHg4QjVGLCAweDhCNUYsIDB4MURFQiwNCisgICAgMHg4QjYwLCAweDhCN0UsIDB4MDY1QiwgMHg4QjgwLCAweDhCODEsIDB4MDY3QSwgMHg4QjgyLCAweDhCODIsIDB4MUYxRSwNCisgICAgMHg4QjgzLCAweDhCODcsIDB4MDY3RCwgMHg4Qjg4LCAweDhCODgsIDB4MUYxRiwgMHg4Qjg5LCAweDhCOUYsIDB4MDY4MywNCisgICAgMHg4QkEwLCAweDhCQTAsIDB4MURFQywgMHg4QkExLCAweDhCQTcsIDB4MDY5QiwgMHg4QkE4LCAweDhCQTgsIDB4MURFRCwNCisgICAgMHg4QkE5LCAweDhCQkYsIDB4MDZBMywgMHg4QkMwLCAweDhCQzAsIDB4MUYyMCwgMHg4QkMxLCAweDhCQ0MsIDB4MDZCQiwNCisgICAgMHg4QkNELCAweDhCQ0QsIDB4MURFRSwgMHg4QkNFLCAweDhCRUEsIDB4MDZDOCwgMHg4QkVCLCAweDhCRUIsIDB4MURFRiwNCisgICAgMHg4QkVDLCAweDhCRjEsIDB4MDZFNiwgMHg4QkYyLCAweDhCRjIsIDB4MURGMCwgMHg4QkYzLCAweDhCRjgsIDB4MDZFRCwNCisgICAgMHg4QkY5LCAweDhCRjksIDB4MURGMSwgMHg4QkZBLCAweDhCRkEsIDB4MDZGNCwgMHg4QkZCLCAweDhCRkIsIDB4MURGMiwNCisgICAgMHg4QkZDLCAweDhCRkMsIDB4MDZGNiwgMHg4QzQwLCAweDhDNTUsIDB4MDZGNywgMHg4QzU2LCAweDhDNTYsIDB4MURGNCwNCisgICAgMHg4QzU3LCAweDhDNzAsIDB4MDcwRSwgMHg4QzcxLCAweDhDNzEsIDB4MURGNywgMHg4QzcyLCAweDhDN0UsIDB4MDcyOSwNCisgICAgMHg4QzgwLCAweDhDOTAsIDB4MDczNiwgMHg4QzkxLCAweDhDOTEsIDB4MURGQSwgMHg4QzkyLCAweDhDOUMsIDB4MDc0OCwNCisgICAgMHg4QzlELCAweDhDOUQsIDB4MUYyMSwgMHg4QzlFLCAweDhDOUUsIDB4MURGQywgMHg4QzlGLCAweDhDQjEsIDB4MDc1NSwNCisgICAgMHg4Q0IyLCAweDhDQjIsIDB4MURGRCwgMHg4Q0IzLCAweDhDQkUsIDB4MDc2OSwgMHg4Q0JGLCAweDhDQkYsIDB4MURGRSwNCisgICAgMHg4Q0MwLCAweDhDRkMsIDB4MDc3NiwgMHg4RDQwLCAweDhENDksIDB4MDdCMywgMHg4RDRBLCAweDhENEEsIDB4MURGRiwNCisgICAgMHg4RDRCLCAweDhEN0UsIDB4MDdCRSwgMHg4RDgwLCAweDhEOEMsIDB4MDdGMiwgMHg4RDhELCAweDhEOEQsIDB4MUUwMiwNCisgICAgMHg4RDhFLCAweDhEOTMsIDB4MDgwMCwgMHg4RDk0LCAweDhEOTQsIDB4MUUwMywgMHg4RDk1LCAweDhEOTgsIDB4MDgwNywNCisgICAgMHg4RDk5LCAweDhEOTksIDB4MUUwNCwgMHg4RDlBLCAweDhERDAsIDB4MDgwQywgMHg4REQxLCAweDhERDEsIDB4MUUwNSwNCisgICAgMHg4REQyLCAweDhERTQsIDB4MDg0NCwgMHg4REU1LCAweDhERTUsIDB4MUUwNiwgMHg4REU2LCAweDhERjEsIDB4MDg1OCwNCisgICAgMHg4REYyLCAweDhERjIsIDB4MUUwNywgMHg4REYzLCAweDhERkMsIDB4MDg2NSwgMHg4RTQwLCAweDhFNDUsIDB4MDg2RiwNCisgICAgMHg4RTQ2LCAweDhFNDYsIDB4MUUwOCwgMHg4RTQ3LCAweDhFNDgsIDB4MDg3NiwgMHg4RTQ5LCAweDhFNDksIDB4MUUwOSwNCisgICAgMHg4RTRBLCAweDhFNEEsIDB4MDg3OSwgMHg4RTRCLCAweDhFNEIsIDB4MUUwQSwgMHg4RTRDLCAweDhFNTcsIDB4MDg3QiwNCisgICAgMHg4RTU4LCAweDhFNTgsIDB4MUUwQiwgMHg4RTU5LCAweDhFNUYsIDB4MDg4OCwgMHg4RTYwLCAweDhFNjAsIDB4MUYyMiwNCisgICAgMHg4RTYxLCAweDhFN0UsIDB4MDg5MCwgMHg4RTgwLCAweDhFQzUsIDB4MDhBRSwgMHg4RUM2LCAweDhFQzYsIDB4MUUwRCwNCisgICAgMHg4RUM3LCAweDhFREEsIDB4MDhGNSwgMHg4RURCLCAweDhFREMsIDB4MUUwRiwgMHg4RURELCAweDhFRkMsIDB4MDkwQiwNCisgICAgMHg4RjQwLCAweDhGNDksIDB4MDkyQiwgMHg4RjRBLCAweDhGNEEsIDB4MUUxMSwgMHg4RjRCLCAweDhGNTQsIDB4MDkzNiwNCisgICAgMHg4RjU1LCAweDhGNTUsIDB4MUUxMiwgMHg4RjU2LCAweDhGN0UsIDB4MDk0MSwgMHg4RjgwLCAweDhGOEIsIDB4MDk2QSwNCisgICAgMHg4RjhDLCAweDhGOEMsIDB4MUUxMywgMHg4RjhELCAweDhGOTEsIDB4MDk3NywgMHg4RjkyLCAweDhGOTMsIDB4MUUxNSwNCisgICAgMHg4Rjk0LCAweDhGQTIsIDB4MDk3RSwgMHg4RkEzLCAweDhGQTMsIDB4MUUxNywgMHg4RkE0LCAweDhGQjAsIDB4MDk4RSwNCisgICAgMHg4RkIxLCAweDhGQjEsIDB4MUUxOCwgMHg4RkIyLCAweDhGRDIsIDB4MDk5QywgMHg4RkQzLCAweDhGRDMsIDB4MUUxQSwNCisgICAgMHg4RkQ0LCAweDhGREMsIDB4MDlCRSwgMHg4RkRELCAweDhGREQsIDB4MUUxQiwgMHg4RkRFLCAweDhGRTEsIDB4MDlDOCwNCisgICAgMHg4RkUyLCAweDhGRTIsIDB4MUUxQywgMHg4RkUzLCAweDhGRkMsIDB4MDlDRCwgMHg5MDQwLCAweDkwNDgsIDB4MDlFNywNCisgICAgMHg5MDQ5LCAweDkwNDksIDB4MUUxRCwgMHg5MDRBLCAweDkwNzcsIDB4MDlGMSwgMHg5MDc4LCAweDkwNzgsIDB4MUYyMywNCisgICAgMHg5MDc5LCAweDkwN0UsIDB4MEEyMCwgMHg5MDgwLCAweDkwODAsIDB4MUUxRiwgMHg5MDgxLCAweDkwOUYsIDB4MEEyNywNCisgICAgMHg5MEEwLCAweDkwQTAsIDB4MUUyMSwgMHg5MEExLCAweDkwRTMsIDB4MEE0NywgMHg5MEU0LCAweDkwRTQsIDB4MUUyMywNCisgICAgMHg5MEU1LCAweDkwRUUsIDB4MEE4QiwgMHg5MEVGLCAweDkwRUYsIDB4MUUyNCwgMHg5MEYwLCAweDkwRjYsIDB4MEE5NiwNCisgICAgMHg5MEY3LCAweDkwRjcsIDB4MUUyNiwgMHg5MEY4LCAweDkwRjgsIDB4MUYyNCwgMHg5MEY5LCAweDkwRjksIDB4MEE5RiwNCisgICAgMHg5MEZBLCAweDkwRkIsIDB4MUYyNSwgMHg5MEZDLCAweDkwRkMsIDB4MEFBMiwgMHg5MTQwLCAweDkxNDUsIDB4MEFBMywNCisgICAgMHg5MTQ2LCAweDkxNDYsIDB4MUUyOCwgMHg5MTQ3LCAweDkxNTcsIDB4MEFBQSwgMHg5MTU4LCAweDkxNTgsIDB4MUUyOSwNCisgICAgMHg5MTU5LCAweDkxNkEsIDB4MEFCQywgMHg5MTZCLCAweDkxNkIsIDB4MUUyQSwgMHg5MTZDLCAweDkxNkQsIDB4MEFDRiwNCisgICAgMHg5MTZFLCAweDkxNkUsIDB4MUUyQiwgMHg5MTZGLCAweDkxN0QsIDB4MEFEMiwgMHg5MTdFLCAweDkxN0UsIDB4MUUyQywNCisgICAgMHg5MTgwLCAweDkxODgsIDB4MEFFMiwgMHg5MTg5LCAweDkxODksIDB4MUUyRCwgMHg5MThBLCAweDkxQjQsIDB4MEFFQywNCisgICAgMHg5MUI1LCAweDkxQjUsIDB4MUYyNywgMHg5MUI2LCAweDkxQkEsIDB4MEIxOCwgMHg5MUJCLCAweDkxQkIsIDB4MUUyRSwNCisgICAgMHg5MUJDLCAweDkxQ0EsIDB4MEIxRSwgMHg5MUNCLCAweDkxQ0IsIDB4MUUyRiwgMHg5MUNDLCAweDkxRDksIDB4MEIyRSwNCisgICAgMHg5MURBLCAweDkxREEsIDB4MUUzMCwgMHg5MURCLCAweDkxRTAsIDB4MEIzRCwgMHg5MUUxLCAweDkxRTEsIDB4MUUzMSwNCisgICAgMHg5MUUyLCAweDkxRUMsIDB4MEI0NCwgMHg5MUVELCAweDkxRUQsIDB4MUUzMiwgMHg5MUVFLCAweDkxRkEsIDB4MEI1MCwNCisgICAgMHg5MUZCLCAweDkxRkIsIDB4MUUzNSwgMHg5MUZDLCAweDkxRkMsIDB4MEI1RSwgMHg5MjQwLCAweDkyNDUsIDB4MEI1RiwNCisgICAgMHg5MjQ2LCAweDkyNDYsIDB4MUUzNiwgMHg5MjQ3LCAweDkyNDcsIDB4MEI2NiwgMHg5MjQ4LCAweDkyNDgsIDB4MUUzNywNCisgICAgMHg5MjQ5LCAweDkyNEIsIDB4MEI2OCwgMHg5MjRDLCAweDkyNEQsIDB4MUUzOSwgMHg5MjRFLCAweDkyNUIsIDB4MEI2RCwNCisgICAgMHg5MjVDLCAweDkyNUMsIDB4MUUzQiwgMHg5MjVELCAweDkyN0UsIDB4MEI3QywgMHg5MjgwLCAweDkyOEYsIDB4MEI5RSwNCisgICAgMHg5MjkwLCAweDkyOTAsIDB4MUUzQywgMHg5MjkxLCAweDkyOTQsIDB4MEJBRiwgMHg5Mjk1LCAweDkyOTUsIDB4MUUzRCwNCisgICAgMHg5Mjk2LCAweDkyOUIsIDB4MEJCNCwgMHg5MjlDLCAweDkyOUMsIDB4MUUzRSwgMHg5MjlELCAweDkyQkEsIDB4MEJCQiwNCisgICAgMHg5MkJCLCAweDkyQkIsIDB4MUUzRiwgMHg5MkJDLCAweDkyQzUsIDB4MEJEQSwgMHg5MkM2LCAweDkyQzYsIDB4MUU0MCwNCisgICAgMHg5MkM3LCAweDkyQzcsIDB4MEJFNSwgMHg5MkM4LCAweDkyQzgsIDB4MUU0MSwgMHg5MkM5LCAweDkyQ0MsIDB4MEJFNywNCisgICAgMHg5MkNELCAweDkyQ0QsIDB4MUU0MywgMHg5MkNFLCAweDkyRkMsIDB4MEJFQywgMHg5MzQwLCAweDkzNDAsIDB4MEMxQiwNCisgICAgMHg5MzQxLCAweDkzNDEsIDB4MUU0NCwgMHg5MzQyLCAweDkzNDUsIDB4MEMxRCwgMHg5MzQ2LCAweDkzNDYsIDB4MUU0NSwNCisgICAgMHg5MzQ3LCAweDkzNEMsIDB4MEMyMiwgMHg5MzRELCAweDkzNEQsIDB4MUU0NiwgMHg5MzRFLCAweDkzNTQsIDB4MEMyOSwNCisgICAgMHg5MzU1LCAweDkzNTUsIDB4MUU0NywgMHg5MzU2LCAweDkzNUQsIDB4MEMzMSwgMHg5MzVFLCAweDkzNUUsIDB4MUU0OCwNCisgICAgMHg5MzVGLCAweDkzNjYsIDB4MEMzQSwgMHg5MzY3LCAweDkzNjcsIDB4MUU0OSwgMHg5MzY4LCAweDkzNjksIDB4MEM0MywNCisgICAgMHg5MzZBLCAweDkzNkEsIDB4MUU0QSwgMHg5MzZCLCAweDkzNkYsIDB4MEM0NiwgMHg5MzcwLCAweDkzNzAsIDB4MUYyOCwNCisgICAgMHg5MzcxLCAweDkzNzEsIDB4MUU0QywgMHg5MzcyLCAweDkzN0UsIDB4MEM0RCwgMHg5MzgwLCAweDkzODMsIDB4MEM1QSwNCisgICAgMHg5Mzg0LCAweDkzODQsIDB4MUU0RCwgMHg5Mzg1LCAweDkzOTcsIDB4MEM1RiwgMHg5Mzk4LCAweDkzOTgsIDB4MUU0RSwNCisgICAgMHg5Mzk5LCAweDkzQkYsIDB4MEM3MywgMHg5M0MwLCAweDkzQzAsIDB4MUU1MCwgMHg5M0MxLCAweDkzRDEsIDB4MEM5QiwNCisgICAgMHg5M0QyLCAweDkzRDIsIDB4MUU1MSwgMHg5M0QzLCAweDkzRDgsIDB4MENBRCwgMHg5M0Q5LCAweDkzRDksIDB4MUU1MywNCisgICAgMHg5M0RBLCAweDkzRTMsIDB4MENCNCwgMHg5M0U0LCAweDkzRTUsIDB4MUU1NiwgMHg5M0U2LCAweDkzRTcsIDB4MENDMCwNCisgICAgMHg5M0U4LCAweDkzRTgsIDB4MUU1OCwgMHg5M0U5LCAweDkzRjMsIDB4MENDMywgMHg5M0Y0LCAweDkzRjQsIDB4MUVDMCwNCisgICAgMHg5M0Y1LCAweDkzRkMsIDB4MENDRiwgMHg5NDQwLCAweDk0NDcsIDB4MENENywgMHg5NDQ4LCAweDk0NDgsIDB4MUU1OSwNCisgICAgMHg5NDQ5LCAweDk0NDksIDB4MUYyOSwgMHg5NDRBLCAweDk0NTcsIDB4MENFMSwgMHg5NDU4LCAweDk0NTgsIDB4MUU1QSwNCisgICAgMHg5NDU5LCAweDk0NzUsIDB4MENGMCwgMHg5NDc2LCAweDk0NzYsIDB4MUU1QiwgMHg5NDc3LCAweDk0N0UsIDB4MEQwRSwNCisgICAgMHg5NDgwLCAweDk0ODYsIDB4MEQxNiwgMHg5NDg3LCAweDk0ODcsIDB4MUU1QywgMHg5NDg4LCAweDk0ODgsIDB4MEQxRSwNCisgICAgMHg5NDg5LCAweDk0ODksIDB4MUU1RCwgMHg5NDhBLCAweDk0OEMsIDB4MEQyMCwgMHg5NDhELCAweDk0OEQsIDB4MUU1RSwNCisgICAgMHg5NDhFLCAweDk0QTEsIDB4MEQyNCwgMHg5NEEyLCAweDk0QTIsIDB4MUU1RiwgMHg5NEEzLCAweDk0QUIsIDB4MEQzOSwNCisgICAgMHg5NEFDLCAweDk0QUMsIDB4MUU2MCwgMHg5NEFELCAweDk0QUQsIDB4MEQ0MywgMHg5NEFFLCAweDk0QUUsIDB4MUU2MSwNCisgICAgMHg5NEFGLCAweDk0QkQsIDB4MEQ0NSwgMHg5NEJFLCAweDk0QkUsIDB4MUYyQSwgMHg5NEJGLCAweDk0RDEsIDB4MEQ1NSwNCisgICAgMHg5NEQyLCAweDk0RDIsIDB4MUU2MiwgMHg5NEQzLCAweDk0RjIsIDB4MEQ2OSwgMHg5NEYzLCAweDk0RjMsIDB4MUU2NCwNCisgICAgMHg5NEY0LCAweDk0RkMsIDB4MEQ4QSwgMHg5NTQwLCAweDk1NDAsIDB4MEQ5MywgMHg5NTQxLCAweDk1NDIsIDB4MUU2NSwNCisgICAgMHg5NTQzLCAweDk1NEQsIDB4MEQ5NiwgMHg5NTRFLCAweDk1NEUsIDB4MUU2NywgMHg5NTRGLCAweDk1NTAsIDB4MERBMiwNCisgICAgMHg5NTUxLCAweDk1NTEsIDB4MUU2OCwgMHg5NTUyLCAweDk1NTMsIDB4MERBNSwgMHg5NTU0LCAweDk1NTQsIDB4MUU2OSwNCisgICAgMHg5NTU1LCAweDk1NUUsIDB4MERBOCwgMHg5NTVGLCAweDk1NUYsIDB4MUU2QSwgMHg5NTYwLCAweDk1NkMsIDB4MERCMywNCisgICAgMHg5NTZELCAweDk1NkQsIDB4MUU2QiwgMHg5NTZFLCAweDk1N0UsIDB4MERDMSwgMHg5NTgwLCAweDk1QzAsIDB4MEREMiwNCisgICAgMHg5NUMxLCAweDk1QzEsIDB4MUU2RCwgMHg5NUMyLCAweDk1Q0EsIDB4MEUxNCwgMHg5NUNCLCAweDk1Q0IsIDB4MUU2RSwNCisgICAgMHg5NUNDLCAweDk1RDAsIDB4MEUxRSwgMHg5NUQxLCAweDk1RDEsIDB4MUYyQiwgMHg5NUQyLCAweDk1RDcsIDB4MEUyNCwNCisgICAgMHg5NUQ4LCAweDk1RDgsIDB4MUU2RiwgMHg5NUQ5LCAweDk1RjYsIDB4MEUyQiwgMHg5NUY3LCAweDk1RjcsIDB4MUU3MCwNCisgICAgMHg5NUY4LCAweDk1RkMsIDB4MEU0QSwgMHg5NjQwLCAweDk2NDcsIDB4MEU0RiwgMHg5NjQ4LCAweDk2NDgsIDB4MUU3MiwNCisgICAgMHg5NjQ5LCAweDk2NjksIDB4MEU1OCwgMHg5NjZBLCAweDk2NkEsIDB4MUU3MywgMHg5NjZCLCAweDk2N0UsIDB4MEU3QSwNCisgICAgMHg5NjgwLCAweDk2OEYsIDB4MEU4RSwgMHg5NjkwLCAweDk2OTAsIDB4MUU3NCwgMHg5NjkxLCAweDk2OTcsIDB4MEU5RiwNCisgICAgMHg5Njk4LCAweDk2OTgsIDB4MUYyQywgMHg5Njk5LCAweDk2Q0EsIDB4MEVBNywgMHg5NkNCLCAweDk2Q0IsIDB4MUU3NSwNCisgICAgMHg5NkNDLCAweDk2RDYsIDB4MEVEQSwgMHg5NkQ3LCAweDk2RDcsIDB4MUU3NiwgMHg5NkQ4LCAweDk2REMsIDB4MEVFNiwNCisgICAgMHg5NkRELCAweDk2REQsIDB4MUU3NywgMHg5NkRFLCAweDk2REYsIDB4MEVFQywgMHg5NkUwLCAweDk2RTAsIDB4MUU3OCwNCisgICAgMHg5NkUxLCAweDk2RjcsIDB4MEVFRiwgMHg5NkY4LCAweDk2RjgsIDB4MUU3OSwgMHg5NkY5LCAweDk2RjksIDB4MEYwNywNCisgICAgMHg5NkZBLCAweDk2RkEsIDB4MUU3QSwgMHg5NkZCLCAweDk2RkMsIDB4MEYwOSwgMHg5NzQwLCAweDk3NTAsIDB4MEYwQiwNCisgICAgMHg5NzUxLCAweDk3NTEsIDB4MUU3QywgMHg5NzUyLCAweDk3NkUsIDB4MEYxRCwgMHg5NzZGLCAweDk3NkYsIDB4MUU3RCwNCisgICAgMHg5NzcwLCAweDk3NzIsIDB4MEYzQiwgMHg5NzczLCAweDk3NzMsIDB4MUU3RSwgMHg5Nzc0LCAweDk3N0UsIDB4MEYzRiwNCisgICAgMHg5NzgwLCAweDk3ODgsIDB4MEY0QSwgMHg5Nzg5LCAweDk3ODksIDB4MUU3RiwgMHg5NzhBLCAweDk3RjcsIDB4MEY1NCwNCisgICAgMHg5N0Y4LCAweDk3RjksIDB4MUU4MSwgMHg5N0ZBLCAweDk3RkEsIDB4MUYyRCwgMHg5N0ZCLCAweDk3RkMsIDB4MEZDNSwNCisgICAgMHg5ODQwLCAweDk4NDAsIDB4MUU4MywgMHg5ODQxLCAweDk4NEYsIDB4MEZDOCwgMHg5ODUwLCAweDk4NTAsIDB4MUU4NCwNCisgICAgMHg5ODUxLCAweDk4NTcsIDB4MEZEOCwgMHg5ODU4LCAweDk4NTgsIDB4MUU4NSwgMHg5ODU5LCAweDk4NzIsIDB4MEZFMCwNCisgICAgMHg5ODlGLCAweDk4RkMsIDB4MEZGQSwgMHg5OTQwLCAweDk5NDAsIDB4MTA1OCwgMHg5OTQxLCAweDk5NDEsIDB4MUYyRSwNCisgICAgMHg5OTQyLCAweDk5NUIsIDB4MTA1QSwgMHg5OTVDLCAweDk5NUMsIDB4MUU4NiwgMHg5OTVELCAweDk5NkIsIDB4MTA3NSwNCisgICAgMHg5OTZDLCAweDk5NkMsIDB4MUU4OSwgMHg5OTZELCAweDk5N0UsIDB4MTA4NSwgMHg5OTgwLCAweDk5QjUsIDB4MTA5NywNCisgICAgMHg5OUI2LCAweDk5QjYsIDB4MUYyRiwgMHg5OUI3LCAweDk5RkMsIDB4MTBDRSwgMHg5QTQwLCAweDlBNEUsIDB4MTExNCwNCisgICAgMHg5QTRGLCAweDlBNEYsIDB4MUU4QSwgMHg5QTUwLCAweDlBNTgsIDB4MTEyNCwgMHg5QTU5LCAweDlBNTksIDB4MUU4QiwNCisgICAgMHg5QTVBLCAweDlBNjYsIDB4MTEyRSwgMHg5QTY3LCAweDlBNjcsIDB4MUYzMCwgMHg5QTY4LCAweDlBN0MsIDB4MTEzQywNCisgICAgMHg5QTdELCAweDlBN0QsIDB4MUU4RCwgMHg5QTdFLCAweDlBN0UsIDB4MTE1MiwgMHg5QTgwLCAweDlBOEEsIDB4MTE1MywNCisgICAgMHg5QThCLCAweDlBOEIsIDB4MUU4RSwgMHg5QThDLCAweDlBOEMsIDB4MUYzMSwgMHg5QThELCAweDlBQzEsIDB4MTE2MCwNCisgICAgMHg5QUMyLCAweDlBQzIsIDB4MUU4RiwgMHg5QUMzLCAweDlBQzMsIDB4MUYzMiwgMHg5QUM0LCAweDlBRTksIDB4MTE5NywNCisgICAgMHg5QUVBLCAweDlBRUEsIDB4MUYzMywgMHg5QUVCLCAweDlBRkMsIDB4MTFCRSwgMHg5QjQwLCAweDlCNUIsIDB4MTFEMCwNCisgICAgMHg5QjVDLCAweDlCNUMsIDB4MUU5MCwgMHg5QjVELCAweDlCN0UsIDB4MTFFRCwgMHg5QjgwLCAweDlCODIsIDB4MTIwRiwNCisgICAgMHg5QjgzLCAweDlCODMsIDB4MUU5MSwgMHg5Qjg0LCAweDlCOTcsIDB4MTIxMywgMHg5Qjk4LCAweDlCOTgsIDB4MUYzNCwNCisgICAgMHg5Qjk5LCAweDlCOUYsIDB4MTIyOCwgMHg5QkEwLCAweDlCQTAsIDB4MUU5MiwgMHg5QkExLCAweDlCRkEsIDB4MTIzMCwNCisgICAgMHg5QkZCLCAweDlCRkMsIDB4MUYzNSwgMHg5QzQwLCAweDlDN0UsIDB4MTI4QywgMHg5QzgwLCAweDlDQTEsIDB4MTJDQiwNCisgICAgMHg5Q0EyLCAweDlDQTIsIDB4MUU5NCwgMHg5Q0EzLCAweDlDRkMsIDB4MTJFRSwgMHg5RDQwLCAweDlENDYsIDB4MTM0OCwNCisgICAgMHg5RDQ3LCAweDlENDcsIDB4MUYzNywgMHg5RDQ4LCAweDlEN0UsIDB4MTM1MCwgMHg5RDgwLCAweDlEODAsIDB4MUU5NSwNCisgICAgMHg5RDgxLCAweDlEOEIsIDB4MTM4OCwgMHg5RDhDLCAweDlEOEMsIDB4MUU5NiwgMHg5RDhELCAweDlEQjYsIDB4MTM5NCwNCisgICAgMHg5REI3LCAweDlEQjcsIDB4MUU5NywgMHg5REI4LCAweDlERjcsIDB4MTNCRiwgMHg5REY4LCAweDlERjgsIDB4MUYzOCwNCisgICAgMHg5REY5LCAweDlERkMsIDB4MTQwMCwgMHg5RTQwLCAweDlFNjMsIDB4MTQwNCwgMHg5RTY0LCAweDlFNjQsIDB4MUU5OSwNCisgICAgMHg5RTY1LCAweDlFN0UsIDB4MTQyOSwgMHg5RTgwLCAweDlFOEEsIDB4MTQ0MywgMHg5RThCLCAweDlFOEIsIDB4MUU5QiwNCisgICAgMHg5RThDLCAweDlFRkMsIDB4MTQ0RiwgMHg5RjQwLCAweDlGN0UsIDB4MTRDMCwgMHg5RjgwLCAweDlGODAsIDB4MTRGRiwNCisgICAgMHg5RjgxLCAweDlGODEsIDB4MUYzOSwgMHg5RjgyLCAweDlGQ0QsIDB4MTUwMSwgMHg5RkNFLCAweDlGQ0UsIDB4MUU5RCwNCisgICAgMHg5RkNGLCAweDlGRDMsIDB4MTU0RSwgMHg5RkQ0LCAweDlGRDQsIDB4MUYzQSwgMHg5RkQ1LCAweDlGRjMsIDB4MTU1NCwNCisgICAgMHg5RkY0LCAweDlGRjQsIDB4MUYzQiwgMHg5RkY1LCAweDlGRkMsIDB4MTU3NCwgMHhFMDQwLCAweEUwN0UsIDB4MTU3QywNCisgICAgMHhFMDgwLCAweEUwOTIsIDB4MTVCQiwgMHhFMDkzLCAweEUwOTMsIDB4MUU5RSwgMHhFMDk0LCAweEUwQTMsIDB4MTVDRiwNCisgICAgMHhFMEE0LCAweEUwQTQsIDB4MUU5RiwgMHhFMEE1LCAweEUwREMsIDB4MTVFMCwgMHhFMERELCAweEUwREQsIDB4MUVBMCwNCisgICAgMHhFMERFLCAweEUwRkMsIDB4MTYxOSwgMHhFMTQwLCAweEUxNDksIDB4MTYzOCwgMHhFMTRBLCAweEUxNEEsIDB4MUVBMSwNCisgICAgMHhFMTRCLCAweEUxN0UsIDB4MTY0MywgMHhFMTgwLCAweEUxRUMsIDB4MTY3NywgMHhFMUVELCAweEUxRUQsIDB4MUVBNSwNCisgICAgMHhFMUVFLCAweEUxRkMsIDB4MTZFNSwgMHhFMjQwLCAweEUyNjgsIDB4MTZGNCwgMHhFMjY5LCAweEUyNjksIDB4MUVBNiwNCisgICAgMHhFMjZBLCAweEUyNzIsIDB4MTcxRSwgMHhFMjczLCAweEUyNzMsIDB4MUVBNywgMHhFMjc0LCAweEUyNzcsIDB4MTcyOCwNCisgICAgMHhFMjc4LCAweEUyNzgsIDB4MUYzQywgMHhFMjc5LCAweEUyN0UsIDB4MTcyRCwgMHhFMjgwLCAweEUyQjYsIDB4MTczMywNCisgICAgMHhFMkI3LCAweEUyQjcsIDB4MUVBOCwgMHhFMkI4LCAweEUyQkQsIDB4MTc2QiwgMHhFMkJFLCAweEUyQkUsIDB4MUYzRCwNCisgICAgMHhFMkJGLCAweEUyRTEsIDB4MTc3MiwgMHhFMkUyLCAweEUyRTIsIDB4MUVBOSwgMHhFMkUzLCAweEUyRUIsIDB4MTc5NiwNCisgICAgMHhFMkVDLCAweEUyRUMsIDB4MUVBQSwgMHhFMkVELCAweEUyRkMsIDB4MTdBMCwgMHhFMzQwLCAweEUzNTcsIDB4MTdCMCwNCisgICAgMHhFMzU4LCAweEUzNTgsIDB4MUVBQiwgMHhFMzU5LCAweEUzNTksIDB4MTdDOSwgMHhFMzVBLCAweEUzNUEsIDB4MUVBQywNCisgICAgMHhFMzVCLCAweEUzNjQsIDB4MTdDQiwgMHhFMzY1LCAweEUzNjUsIDB4MUVBRCwgMHhFMzY2LCAweEUzN0UsIDB4MTdENiwNCisgICAgMHhFMzgwLCAweEUzQzYsIDB4MTdFRiwgMHhFM0M3LCAweEUzQzcsIDB4MUYzRSwgMHhFM0M4LCAweEUzRkMsIDB4MTgzNywNCisgICAgMHhFNDQwLCAweEU0N0UsIDB4MTg2QywgMHhFNDgwLCAweEU0ODMsIDB4MThBQiwgMHhFNDg0LCAweEU0ODQsIDB4MUVBRiwNCisgICAgMHhFNDg1LCAweEU0ODgsIDB4MThCMCwgMHhFNDg5LCAweEU0ODksIDB4MUVCMCwgMHhFNDhBLCAweEU0OTEsIDB4MThCNSwNCisgICAgMHhFNDkyLCAweEU0OTIsIDB4MUVCMSwgMHhFNDkzLCAweEU0QjgsIDB4MThCRSwgMHhFNEI5LCAweEU0QjksIDB4MUVCMywNCisgICAgMHhFNEJBLCAweEU0Q0EsIDB4MThFNSwgMHhFNENCLCAweEU0Q0IsIDB4MUYzRiwgMHhFNENDLCAweEU0RkMsIDB4MThGNywNCisgICAgMHhFNTQwLCAweEU1N0UsIDB4MTkyOCwgMHhFNTgwLCAweEU1OUQsIDB4MTk2NywgMHhFNTlFLCAweEU1OUUsIDB4MUY0MCwNCisgICAgMHhFNTlGLCAweEU1QjksIDB4MTk4NiwgMHhFNUJBLCAweEU1QkIsIDB4MUY0MSwgMHhFNUJDLCAweEU1RUMsIDB4MTlBMywNCisgICAgMHhFNUVELCAweEU1RUQsIDB4MUVCOCwgMHhFNUVFLCAweEU1RkMsIDB4MTlENSwgMHhFNjQwLCAweEU2NTAsIDB4MTlFNCwNCisgICAgMHhFNjUxLCAweEU2NTEsIDB4MUVCOSwgMHhFNjUyLCAweEU2N0UsIDB4MTlGNiwgMHhFNjgwLCAweEU2ODUsIDB4MUEyMywNCisgICAgMHhFNjg2LCAweEU2ODYsIDB4MUVCQSwgMHhFNjg3LCAweEU2RTYsIDB4MUEyQSwgMHhFNkU3LCAweEU2RTcsIDB4MUVCQywNCisgICAgMHhFNkU4LCAweEU2RkMsIDB4MUE4QiwgMHhFNzQwLCAweEU3NkMsIDB4MUFBMCwgMHhFNzZELCAweEU3NkQsIDB4MUVCRSwNCisgICAgMHhFNzZFLCAweEU3N0UsIDB4MUFDRSwgMHhFNzgwLCAweEU3QTYsIDB4MUFERiwgMHhFN0E3LCAweEU3QTcsIDB4MUVDMSwNCisgICAgMHhFN0E4LCAweEU3QkEsIDB4MUIwNywgMHhFN0JCLCAweEU3QkIsIDB4MUVDMiwgMHhFN0JDLCAweEU3RkMsIDB4MUIxQiwNCisgICAgMHhFODQwLCAweEU4N0UsIDB4MUI1QywgMHhFODgwLCAweEU4Q0UsIDB4MUI5QiwgMHhFOENGLCAweEU4Q0YsIDB4MUVDNywNCisgICAgMHhFOEQwLCAweEU4RkMsIDB4MUJFQiwgMHhFOTQwLCAweEU5NzcsIDB4MUMxOCwgMHhFOTc4LCAweEU5NzgsIDB4MUY0MywNCisgICAgMHhFOTc5LCAweEU5N0UsIDB4MUM1MSwgMHhFOTgwLCAweEU5QUEsIDB4MUM1NywgMHhFOUFCLCAweEU5QUIsIDB4MUVDQSwNCisgICAgMHhFOUFDLCAweEU5QjksIDB4MUM4MywgMHhFOUJBLCAweEU5QkEsIDB4MUVDQiwgMHhFOUJCLCAweEU5Q0IsIDB4MUM5MiwNCisgICAgMHhFOUNDLCAweEU5Q0MsIDB4MUVDQywgMHhFOUNELCAweEU5RkMsIDB4MUNBNCwgMHhFQTQwLCAweEVBNkYsIDB4MUNENCwNCisgICAgMHhFQTcwLCAweEVBNzAsIDB4MUVDRCwgMHhFQTcxLCAweEVBNzEsIDB4MUY0NCwgMHhFQTcyLCAweEVBN0UsIDB4MUQwNiwNCisgICAgMHhFQTgwLCAweEVBOUMsIDB4MUQxMywgMHhFQTlELCAweEVBOUQsIDB4MUVDRSwgMHhFQTlFLCAweEVBQTIsIDB4MUQzMSwNCisgICAgMHhFQUEzLCAweEVBQTQsIDB4MjA1QywgMHhFQzQwLCAweEVDNDIsIDB4MUY0NSwgMHhFQzQ2LCAweEVDNDYsIDB4MUY0OCwNCisgICAgMHhFQzQ3LCAweEVDNDcsIDB4MDMwMCwgMHhFQzQ4LCAweEVDNDgsIDB4MDJGQSwgMHhFQzQ5LCAweEVDNDksIDB4MDJGOSwNCisgICAgMHhFQzRELCAweEVDNTcsIDB4MUY0OSwgMHhFQzVCLCAweEVDNUQsIDB4MURCMSwgMHhFQzVFLCAweEVDNUUsIDB4MUY1NCwNCisgICAgMHhFQzVGLCAweEVDNUYsIDB4MURCNywgMHhFQzYwLCAweEVDNjIsIDB4MUY1NSwgMHhFQzYzLCAweEVDNjUsIDB4MURCNCwNCisgICAgMHhFQzY2LCAweEVDNkYsIDB4MUY1OCwgMHhFQzcwLCAweEVDNzAsIDB4MDMwMywgMHhFQzcxLCAweEVDNzEsIDB4MUY2MiwNCisgICAgMHhFQzcyLCAweEVDNzIsIDB4MDMwNCwgMHhFQzczLCAweEVDNzQsIDB4MUY2MywgMHhFQzc2LCAweEVDNzYsIDB4MUY2NSwNCisgICAgMHhFQzc4LCAweEVDNzgsIDB4MURBNCwgMHhFQzc5LCAweEVDNzksIDB4MURBMSwgMHhFQzdBLCAweEVDN0EsIDB4MUY2NiwNCisgICAgMHhFQzdCLCAweEVDN0IsIDB4MURBMiwgMHhFQzdDLCAweEVDN0UsIDB4MUY2NywgMHhFQzgwLCAweEVDODAsIDB4MURBNiwNCisgICAgMHhFQzgxLCAweEVDODEsIDB4MUY2QSwgMHhFQzgyLCAweEVDODIsIDB4MURBOCwgMHhFQzgzLCAweEVDODMsIDB4MURBQywNCisgICAgMHhFQzg0LCAweEVDODQsIDB4MUY2QiwgMHhFQzg1LCAweEVDODUsIDB4MURBRSwgMHhFQzg2LCAweEVDODYsIDB4MURBQiwNCisgICAgMHhFQzg3LCAweEVDODgsIDB4MUY2QywgMHhFQzg5LCAweEVDODksIDB4MURBRiwgMHhFQzhBLCAweEVDOTAsIDB4MUY2RSwNCisgICAgMHhFQzk0LCAweEVDOTksIDB4MUY3NSwgMHhFQzlBLCAweEVDOUEsIDB4MURCQSwgMHhFQzlCLCAweEVDOUIsIDB4MUY3QiwNCisgICAgMHhFQzlFLCAweEVDOUUsIDB4MUY3QywgMHhFQ0E3LCAweEVDQjAsIDB4MUY3RCwgMHhFQ0IyLCAweEVDQzUsIDB4MUY4NywNCisgICAgMHhFQ0M3LCAweEVDREEsIDB4MUQ4MywgMHhFQ0RCLCAweEVDREIsIDB4MUY5QiwgMHhFQ0RDLCAweEVDRTUsIDB4MUQ5NywNCisgICAgMHhFQ0U5LCAweEVDRkMsIDB4MUY5QywgMHhFRDQwLCAweEVENTksIDB4MUZCMCwgMHhFRDY0LCAweEVENjQsIDB4MUYxNiwNCisgICAgMHhFRDY4LCAweEVENjksIDB4MUZDQSwgMHhFRDZBLCAweEVENkEsIDB4MURDNCwgMHhFRDZCLCAweEVENkQsIDB4MUZDQywNCisgICAgMHhFRDZFLCAweEVENkUsIDB4MURDMywgMHhFRDZGLCAweEVENzMsIDB4MUZDRiwgMHhFRDc0LCAweEVENzQsIDB4MURDMiwNCisgICAgMHhFRDc1LCAweEVENzgsIDB4MUZENCwgMHhFRDdDLCAweEVEN0UsIDB4MUZEOCwgMHhFRDgwLCAweEVEOEEsIDB4MUZEQiwNCisgICAgMHhFRDhGLCAweEVEOUUsIDB4MUZFNiwgMHhFRjQwLCAweEVGNDEsIDB4MUVDRiwgMHhFRjQyLCAweEVGNDIsIDB4MjA0QywNCisgICAgMHhFRjQzLCAweEVGNDMsIDB4MjA1MiwgMHhFRjQ0LCAweEVGNEQsIDB4MUVEMSwgMHhFRjRFLCAweEVGNEUsIDB4MjA1QSwNCisgICAgMHhFRjRGLCAweEVGNEYsIDB4MjA1MywgMHhFRjUwLCAweEVGNTAsIDB4MjA1OCwgMHhFRjUxLCAweEVGNTEsIDB4MjA1NSwNCisgICAgMHhFRjUyLCAweEVGNjMsIDB4MUVEQiwgMHhFRjY0LCAweEVGNzksIDB4MUVFRSwgMHhFRjdBLCAweEVGN0IsIDB4MjA0OCwNCisgICAgMHhFRjhELCAweEVGOTAsIDB4MDJFMCwgMHhFRjkxLCAweEVGOTQsIDB4MUZGNiwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvQWRkLVJLU0otVl8xLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvQWRkLVJLU0otVl8xLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzM2MTg0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9BZGQtUktTSi1WXzEuY3BwCkBAIC0wLDAgKzEsMjcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9BZGRfUktTSl9WXzFbNTcgKiAzXSA9IHsNCisgICAgMHg4MTQxLCAweDgxNDIsIDB4MUVDRiwgMHg4MTQzLCAweDgxNDMsIDB4MjA0QywgMHg4MTQ0LCAweDgxNDQsIDB4MjA1MiwNCisgICAgMHg4MTUwLCAweDgxNTEsIDB4MUVEMSwgMHg4MTVCLCAweDgxNUQsIDB4MUVEMywgMHg4MTYwLCAweDgxNjQsIDB4MUVENiwNCisgICAgMHg4MTY1LCAweDgxNjUsIDB4MjA1QSwgMHg4MTY2LCAweDgxNjYsIDB4MjA1MywgMHg4MTY3LCAweDgxNjcsIDB4MjA1OCwNCisgICAgMHg4MTY4LCAweDgxNjgsIDB4MjA1NSwgMHg4MTY5LCAweDgxN0EsIDB4MUVEQiwgMHg4MjlGLCAweDgyOUYsIDB4MUVFRSwNCisgICAgMHg4MkExLCAweDgyQTEsIDB4MUVFRiwgMHg4MkEzLCAweDgyQTMsIDB4MUVGMCwgMHg4MkE1LCAweDgyQTUsIDB4MUVGMSwNCisgICAgMHg4MkE3LCAweDgyQTcsIDB4MUVGMiwgMHg4MkMxLCAweDgyQzEsIDB4MUVGMywgMHg4MkUxLCAweDgyRTEsIDB4MUVGNCwNCisgICAgMHg4MkUzLCAweDgyRTMsIDB4MUVGNSwgMHg4MkU1LCAweDgyRTUsIDB4MUVGNiwgMHg4MkVDLCAweDgyRUMsIDB4MUVGNywNCisgICAgMHg4MkYzLCAweDgyRjQsIDB4MjA0OCwgMHg4MzQwLCAweDgzNDAsIDB4MUVGOCwgMHg4MzQyLCAweDgzNDIsIDB4MUVGOSwNCisgICAgMHg4MzQ0LCAweDgzNDQsIDB4MUVGQSwgMHg4MzQ2LCAweDgzNDYsIDB4MUVGQiwgMHg4MzQ4LCAweDgzNDgsIDB4MUVGQywNCisgICAgMHg4MzYyLCAweDgzNjIsIDB4MUVGRCwgMHg4MzgzLCAweDgzODMsIDB4MUVGRSwgMHg4Mzg1LCAweDgzODUsIDB4MUVGRiwNCisgICAgMHg4Mzg3LCAweDgzODcsIDB4MUYwMCwgMHg4MzhFLCAweDgzOEUsIDB4MUYwMSwgMHg4Mzk1LCAweDgzOTYsIDB4MUYwMiwNCisgICAgMHhFQzc4LCAweEVDNzgsIDB4MUYwNywgMHhFQzc5LCAweEVDNzksIDB4MUYwNCwgMHhFQzdBLCAweEVDN0EsIDB4MjA4OSwNCisgICAgMHhFQzdCLCAweEVDN0IsIDB4MUYwNSwgMHhFQzdDLCAweEVDN0MsIDB4MjA4QSwgMHhFQzdELCAweEVDN0UsIDB4MjA5MywNCisgICAgMHhFQzgwLCAweEVDODAsIDB4MUYwOSwgMHhFQzgxLCAweEVDODEsIDB4MjA5MiwgMHhFQzgyLCAweEVDODIsIDB4MUYwQiwNCisgICAgMHhFQzgzLCAweEVDODMsIDB4MUYwRiwgMHhFQzg0LCAweEVDODQsIDB4MjA5QywgMHhFQzg1LCAweEVDODUsIDB4MUYxMSwNCisgICAgMHhFQzg2LCAweEVDODYsIDB4MUYwRSwgMHhFQzg3LCAweEVDODcsIDB4MjA5OCwgMHhFQzg4LCAweEVDODgsIDB4MjA5QiwNCisgICAgMHhFQzg5LCAweEVDODksIDB4MUYxMiwgMHhFQzhBLCAweEVDOEEsIDB4MjA5NywgMHhFQzhCLCAweEVDOEMsIDB4MjA5RCwNCisgICAgMHhFQzhELCAweEVDOEQsIDB4MjBBNiwgMHhFQzhFLCAweEVDOEUsIDB4MjBBNSwgMHhFQzhGLCAweEVDOEYsIDB4MjBBMSwNCisgICAgMHhFQzkwLCAweEVDOTAsIDB4MjBBNCwgMHhFQzk1LCAweEVDOTUsIDB4MjA4NCwgMHhFRjkyLCAweEVGOTIsIDB4MjA4RCwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvQWRvYmUtSmFwYW4xLVVDUzJfNC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL0Fkb2JlLUphcGFuMS1VQ1MyXzQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMDgwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL0Fkb2JlLUphcGFuMS1VQ1MyXzQuY3BwCkBAIC0wLDAgKzEsMTkzOSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0phcGFuMUNJRDJVbmljb2RlXzRbMTU0NDRdID0gew0KKyAgICAweEZGRkQsIDB4MDAyMCwgMHgwMDIxLCAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwNCisgICAgMHgwMDI3LCAweDAwMjgsIDB4MDAyOSwgMHgwMDJBLCAweDAwMkIsIDB4MDAyQywgMHgwMDJELCAweDAwMkUsDQorICAgIDB4MDAyRiwgMHgwMDMwLCAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LA0KKyAgICAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwM0EsIDB4MDAzQiwgMHgwMDNDLCAweDAwM0QsIDB4MDAzRSwNCisgICAgMHgwMDNGLCAweDAwNDAsIDB4MDA0MSwgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LCAweDAwNDYsDQorICAgIDB4MDA0NywgMHgwMDQ4LCAweDAwNDksIDB4MDA0QSwgMHgwMDRCLCAweDAwNEMsIDB4MDA0RCwgMHgwMDRFLA0KKyAgICAweDAwNEYsIDB4MDA1MCwgMHgwMDUxLCAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwNCisgICAgMHgwMDU3LCAweDAwNTgsIDB4MDA1OSwgMHgwMDVBLCAweDAwNUIsIDB4MDBBNSwgMHgwMDVELCAweDAwNUUsDQorICAgIDB4MDA1RiwgMHgwMDYwLCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LA0KKyAgICAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLCAweDAwNkQsIDB4MDA2RSwNCisgICAgMHgwMDZGLCAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsDQorICAgIDB4MDA3NywgMHgwMDc4LCAweDAwNzksIDB4MDA3QSwgMHgwMDdCLCAweDAwQTYsIDB4MDA3RCwgMHgwMzAzLA0KKyAgICAweDAyQkMsIDB4MDA1QywgMHgwMkJCLCAweDAwN0MsIDB4MDA3RSwgMHgwMEExLCAweDAwQTIsIDB4MDBBMywNCisgICAgMHgyMDQ0LCAweDAxOTIsIDB4MDBBNywgMHgwMEE0LCAweDIwMUMsIDB4MDBBQiwgMHgyMDM5LCAweDIwM0EsDQorICAgIDB4RkIwMSwgMHhGQjAyLCAweDIwMTIsIDB4MjAyMCwgMHgyMDIxLCAweDAwQjcsIDB4MDBCNiwgMHgyMDIyLA0KKyAgICAweDIwMUEsIDB4MjAxRSwgMHgyMDFELCAweDAwQkIsIDB4MjAyNiwgMHgyMDMwLCAweDAwQkYsIDB4MDMwMSwNCisgICAgMHgwMzAyLCAweDAwQUYsIDB4MDMwNiwgMHgwMzA3LCAweDAzMDgsIDB4MDMwQSwgMHgwMEI4LCAweDAzMEIsDQorICAgIDB4MDMyOCwgMHgwMzBDLCAweDAzMzYsIDB4MDBDNiwgMHgwMEFBLCAweDAxNDEsIDB4MDBEOCwgMHgwMTUyLA0KKyAgICAweDAwQkEsIDB4MDBFNiwgMHgwMTMxLCAweDAxNDIsIDB4MDBGOCwgMHgwMTUzLCAweDAwREYsIDB4MDAyRCwNCisgICAgMHgwMEE5LCAweDAwQUMsIDB4MDBBRSwgMHgwMEIwLCAweDAwQjEsIDB4MDBCMiwgMHgwMEIzLCAweDAwQjUsDQorICAgIDB4MDBCOSwgMHgwMEJDLCAweDAwQkQsIDB4MDBCRSwgMHgwMEMwLCAweDAwQzEsIDB4MDBDMiwgMHgwMEMzLA0KKyAgICAweDAwQzQsIDB4MDBDNSwgMHgwMEM3LCAweDAwQzgsIDB4MDBDOSwgMHgwMENBLCAweDAwQ0IsIDB4MDBDQywNCisgICAgMHgwMENELCAweDAwQ0UsIDB4MDBDRiwgMHgwMEQwLCAweDAwRDEsIDB4MDBEMiwgMHgwMEQzLCAweDAwRDQsDQorICAgIDB4MDBENSwgMHgwMEQ2LCAweDAwRDcsIDB4MDBEOSwgMHgwMERBLCAweDAwREIsIDB4MDBEQywgMHgwMERELA0KKyAgICAweDAwREUsIDB4MDBFMCwgMHgwMEUxLCAweDAwRTIsIDB4MDBFMywgMHgwMEU0LCAweDAwRTUsIDB4MDBFNywNCisgICAgMHgwMEU4LCAweDAwRTksIDB4MDBFQSwgMHgwMEVCLCAweDAwRUMsIDB4MDBFRCwgMHgwMEVFLCAweDAwRUYsDQorICAgIDB4MDBGMCwgMHgwMEYxLCAweDAwRjIsIDB4MDBGMywgMHgwMEY0LCAweDAwRjUsIDB4MDBGNiwgMHgwMEY3LA0KKyAgICAweDAwRjksIDB4MDBGQSwgMHgwMEZCLCAweDAwRkMsIDB4MDBGRCwgMHgwMEZFLCAweDAwRkYsIDB4MDE2MCwNCisgICAgMHgwMTc4LCAweDAxN0QsIDB4MDMwNSwgMHgwMTYxLCAweDIxMjIsIDB4MDE3RSwgMHgwMDMwLCAweDAwMjAsDQorICAgIDB4MDAyMSwgMHgwMDIyLCAweDAwMjMsIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywgMHgwMDI4LA0KKyAgICAweDAwMjksIDB4MDAyQSwgMHgwMDJCLCAweDAwMkMsIDB4MDAyRCwgMHgwMDJFLCAweDAwMkYsIDB4MDAzMCwNCisgICAgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgsDQorICAgIDB4MDAzOSwgMHgwMDNBLCAweDAwM0IsIDB4MDAzQywgMHgwMDNELCAweDAwM0UsIDB4MDAzRiwgMHgwMDQwLA0KKyAgICAweDAwNDEsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDQsIDB4MDA0NSwgMHgwMDQ2LCAweDAwNDcsIDB4MDA0OCwNCisgICAgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwgMHgwMDRDLCAweDAwNEQsIDB4MDA0RSwgMHgwMDRGLCAweDAwNTAsDQorICAgIDB4MDA1MSwgMHgwMDUyLCAweDAwNTMsIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywgMHgwMDU4LA0KKyAgICAweDAwNTksIDB4MDA1QSwgMHgwMDVCLCAweDAwQTUsIDB4MDA1RCwgMHgwMDVFLCAweDAwNUYsIDB4MDA2MCwNCisgICAgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LCAweDAwNjgsDQorICAgIDB4MDA2OSwgMHgwMDZBLCAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwgMHgwMDcwLA0KKyAgICAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwNCisgICAgMHgwMDc5LCAweDAwN0EsIDB4MDA3QiwgMHgwMDdDLCAweDAwN0QsIDB4MjAzRSwgMHhGRjYwLCAweEZGNjEsDQorICAgIDB4RkY2MiwgMHhGRjYzLCAweEZGNjQsIDB4RkY2NSwgMHhGRjY2LCAweEZGNjcsIDB4RkY2OCwgMHhGRjY5LA0KKyAgICAweEZGNkEsIDB4RkY2QiwgMHhGRjZDLCAweEZGNkQsIDB4RkY2RSwgMHhGRjZGLCAweEZGNzAsIDB4RkY3MSwNCisgICAgMHhGRjcyLCAweEZGNzMsIDB4RkY3NCwgMHhGRjc1LCAweEZGNzYsIDB4RkY3NywgMHhGRjc4LCAweEZGNzksDQorICAgIDB4RkY3QSwgMHhGRjdCLCAweEZGN0MsIDB4RkY3RCwgMHhGRjdFLCAweEZGN0YsIDB4RkY4MCwgMHhGRjgxLA0KKyAgICAweEZGODIsIDB4RkY4MywgMHhGRjg0LCAweEZGODUsIDB4RkY4NiwgMHhGRjg3LCAweEZGODgsIDB4RkY4OSwNCisgICAgMHhGRjhBLCAweEZGOEIsIDB4RkY4QywgMHhGRjhELCAweEZGOEUsIDB4RkY4RiwgMHhGRjkwLCAweEZGOTEsDQorICAgIDB4RkY5MiwgMHhGRjkzLCAweEZGOTQsIDB4RkY5NSwgMHhGRjk2LCAweEZGOTcsIDB4RkY5OCwgMHhGRjk5LA0KKyAgICAweEZGOUEsIDB4RkY5QiwgMHhGRjlDLCAweEZGOUQsIDB4RkY5RSwgMHhGRjlGLCAweEZGNDAsIDB4MzBGMCwNCisgICAgMHgzMEYxLCAweDMwRUUsIDB4MzBBQiwgMHgzMEIxLCAweDMwRjQsIDB4MzBBQywgMHgzMEFFLCAweDMwQjAsDQorICAgIDB4MzBCMiwgMHgzMEI0LCAweDMwQjYsIDB4MzBCOCwgMHgzMEJBLCAweDMwQkMsIDB4MzBCRSwgMHgzMEMwLA0KKyAgICAweDMwQzIsIDB4MzBDNSwgMHgzMEM3LCAweDMwQzksIDB4MzBEMCwgMHgzMEQxLCAweDMwRDMsIDB4MzBENCwNCisgICAgMHgzMEQ2LCAweDMwRDcsIDB4MzBEOSwgMHgzMERBLCAweDMwREMsIDB4MzBERCwgMHhGRjYwLCAweDMwMUQsDQorICAgIDB4MzAxRSwgMHgyNTAwLCAweDI1MDEsIDB4MjUwMiwgMHgyNTAzLCAweDI1MDQsIDB4MjUwNSwgMHgyNTA2LA0KKyAgICAweDI1MDcsIDB4MjUwOCwgMHgyNTA5LCAweDI1MEEsIDB4MjUwQiwgMHgyNTBDLCAweDI1MEQsIDB4MjUwRSwNCisgICAgMHgyNTBGLCAweDI1MTAsIDB4MjUxMSwgMHgyNTEyLCAweDI1MTMsIDB4MjUxNCwgMHgyNTE1LCAweDI1MTYsDQorICAgIDB4MjUxNywgMHgyNTE4LCAweDI1MTksIDB4MjUxQSwgMHgyNTFCLCAweDI1MUMsIDB4MjUxRCwgMHgyNTFFLA0KKyAgICAweDI1MUYsIDB4MjUyMCwgMHgyNTIxLCAweDI1MjIsIDB4MjUyMywgMHgyNTI0LCAweDI1MjUsIDB4MjUyNiwNCisgICAgMHgyNTI3LCAweDI1MjgsIDB4MjUyOSwgMHgyNTJBLCAweDI1MkIsIDB4MjUyQywgMHgyNTJELCAweDI1MkUsDQorICAgIDB4MjUyRiwgMHgyNTMwLCAweDI1MzEsIDB4MjUzMiwgMHgyNTMzLCAweDI1MzQsIDB4MjUzNSwgMHgyNTM2LA0KKyAgICAweDI1MzcsIDB4MjUzOCwgMHgyNTM5LCAweDI1M0EsIDB4MjUzQiwgMHgyNTNDLCAweDI1M0QsIDB4MjUzRSwNCisgICAgMHgyNTNGLCAweDI1NDAsIDB4MjU0MSwgMHgyNTQyLCAweDI1NDMsIDB4MjU0NCwgMHgyNTQ1LCAweDI1NDYsDQorICAgIDB4MjU0NywgMHgyNTQ4LCAweDI1NDksIDB4MjU0QSwgMHgyNTRCLCAweDIwMzIsIDB4MDBBOCwgMHgyMDM2LA0KKyAgICAweDAwNUIsIDB4MDA1RCwgMHgzMDA4LCAweDMwMDksIDB4MzAwQSwgMHgzMDBCLCAweDMwMEUsIDB4MzAwRiwNCisgICAgMHgzMDEwLCAweDMwMTEsIDB4MjAxMiwgMHhGRjYwLCAweDMwOTIsIDB4MzA0MSwgMHgzMDQzLCAweDMwNDUsDQorICAgIDB4MzA0NywgMHgzMDQ5LCAweDMwODMsIDB4MzA4NSwgMHgzMDg3LCAweDMwNjMsIDB4MzA0MiwgMHgzMDQ0LA0KKyAgICAweDMwNDYsIDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwgMHgzMDRGLCAweDMwNTEsIDB4MzA1MywNCisgICAgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQsIDB4MzA1RiwgMHgzMDYxLCAweDMwNjQsDQorICAgIDB4MzA2NiwgMHgzMDY4LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLCAweDMwNkQsIDB4MzA2RSwgMHgzMDZGLA0KKyAgICAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwgMHgzMDdGLCAweDMwODAsIDB4MzA4MSwNCisgICAgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODksIDB4MzA4QSwgMHgzMDhCLCAweDMwOEMsDQorICAgIDB4MzA4RCwgMHgzMDhGLCAweDMwOTMsIDB4MzA5MCwgMHgzMDkxLCAweDMwOEUsIDB4MzA0QywgMHgzMDRFLA0KKyAgICAweDMwNTAsIDB4MzA1MiwgMHgzMDU0LCAweDMwNTYsIDB4MzA2OCwgMHgzMDVBLCAweDMwNUMsIDB4MzA1RSwNCisgICAgMHgzMDYwLCAweDMwNjIsIDB4MzA2NSwgMHgzMDY3LCAweDMwNjksIDB4MzA3MCwgMHgzMDcxLCAweDMwNzMsDQorICAgIDB4MzA3NCwgMHgzMDc2LCAweDMwNzcsIDB4MzA3OSwgMHgzMDdBLCAweDMwN0MsIDB4MzA3RCwgMHgwMEM0LA0KKyAgICAweDAwRjksIDB4MDBFOSwgMHgwMEVELCAweDAwREYsIDB4MDBFNywgMHgwMEM3LCAweDAwRDEsIDB4MDBGMSwNCisgICAgMHgwMEEyLCAweDAwQTMsIDB4MDBGMywgMHgwMEZBLCAweDAwQTEsIDB4MDBCRiwgMHgwMEJELCAweDAwRDYsDQorICAgIDB4MDBEQywgMHgwMEU0LCAweDAwRUIsIDB4MDBFRiwgMHgwMEY2LCAweDAwREMsIDB4MDBFMiwgMHgwMEVBLA0KKyAgICAweDAwRUUsIDB4MDBGNCwgMHgwMEZDLCAweDAwRTAsIDB4MDBFOSwgMHgyNUIyLCAweDAwRTEsIDB4MDA3RSwNCisgICAgMHgwMDMwLCAweDMwMDAsIDB4MzAwMSwgMHgzMDAyLCAweEZGMEMsIDB4RkYwRSwgMHgzMEZCLCAweEZGMUEsDQorICAgIDB4RkYxQiwgMHhGRjFGLCAweEZGMDEsIDB4MzA5QiwgMHgzMDlDLCAweDAwQjQsIDB4RkY0MCwgMHgwMEE4LA0KKyAgICAweEZGM0UsIDB4MjAzRSwgMHhGRjNGLCAweDMwRkQsIDB4MzBGRSwgMHgzMDlELCAweDMwOUUsIDB4MzAwMywNCisgICAgMHg0RURELCAweDMwMDUsIDB4MzAwNiwgMHgzMDA3LCAweDMwRkMsIDB4MjAxNSwgMHgyMDEwLCAweEZGMEYsDQorICAgIDB4RkYzQywgMHhGRjVFLCAweDIwMTYsIDB4RkY1QywgMHgyMDI2LCAweDIwMjUsIDB4MjAxOCwgMHgyMDE5LA0KKyAgICAweDIwMUMsIDB4MjAxRCwgMHhGRjA4LCAweEZGMDksIDB4MzAxNCwgMHgzMDE1LCAweEZGM0IsIDB4RkYzRCwNCisgICAgMHhGRjVCLCAweEZGNUQsIDB4MzAwOCwgMHgzMDA5LCAweDMwMEEsIDB4MzAwQiwgMHgzMDBDLCAweDMwMEQsDQorICAgIDB4MzAwRSwgMHgzMDBGLCAweDMwMTAsIDB4MzAxMSwgMHhGRjBCLCAweEZGMEQsIDB4MDBCMSwgMHgwMEQ3LA0KKyAgICAweDAwRjcsIDB4RkYxRCwgMHgyMjYwLCAweEZGMUMsIDB4RkYxRSwgMHgyMjY2LCAweDIyNjcsIDB4MjIxRSwNCisgICAgMHgyMjM0LCAweDI2NDIsIDB4MjY0MCwgMHgwMEIwLCAweDIwMzIsIDB4MjAzMywgMHgyMTAzLCAweEZGRTUsDQorICAgIDB4RkYwNCwgMHgwMEEyLCAweDAwQTMsIDB4RkYwNSwgMHhGRjAzLCAweEZGMDYsIDB4RkYwQSwgMHhGRjIwLA0KKyAgICAweDAwQTcsIDB4MjYwNiwgMHgyNjA1LCAweDI1Q0IsIDB4MjVDRiwgMHgyNUNFLCAweDI1QzcsIDB4MjVDNiwNCisgICAgMHgyNUExLCAweDI1QTAsIDB4MjVCMywgMHgyNUIyLCAweDI1QkQsIDB4MjVCQywgMHgyMDNCLCAweDMwMTIsDQorICAgIDB4MjE5MiwgMHgyMTkwLCAweDIxOTEsIDB4MjE5MywgMHgzMDEzLCAweDIyMDgsIDB4MjIwQiwgMHgyMjg2LA0KKyAgICAweDIyODcsIDB4MjI4MiwgMHgyMjgzLCAweDIyMkEsIDB4MjIyOSwgMHgyMjI3LCAweDIyMjgsIDB4MDBBQywNCisgICAgMHgyMUQyLCAweDIxRDQsIDB4MjIwMCwgMHgyMjAzLCAweDIyMjAsIDB4MjJBNSwgMHgyMzEyLCAweDIyMDIsDQorICAgIDB4MjIwNywgMHgyMjYxLCAweDIyNTIsIDB4MjI2QSwgMHgyMjZCLCAweDIyMUEsIDB4MjIzRCwgMHgyMjFELA0KKyAgICAweDIyMzUsIDB4MjIyQiwgMHgyMjJDLCAweDIxMkIsIDB4MjAzMCwgMHgyNjZGLCAweDI2NkQsIDB4MjY2QSwNCisgICAgMHgyMDIwLCAweDIwMjEsIDB4MDBCNiwgMHgyNUVGLCAweEZGMTAsIDB4RkYxMSwgMHhGRjEyLCAweEZGMTMsDQorICAgIDB4RkYxNCwgMHhGRjE1LCAweEZGMTYsIDB4RkYxNywgMHhGRjE4LCAweEZGMTksIDB4RkYyMSwgMHhGRjIyLA0KKyAgICAweEZGMjMsIDB4RkYyNCwgMHhGRjI1LCAweEZGMjYsIDB4RkYyNywgMHhGRjI4LCAweEZGMjksIDB4RkYyQSwNCisgICAgMHhGRjJCLCAweEZGMkMsIDB4RkYyRCwgMHhGRjJFLCAweEZGMkYsIDB4RkYzMCwgMHhGRjMxLCAweEZGMzIsDQorICAgIDB4RkYzMywgMHhGRjM0LCAweEZGMzUsIDB4RkYzNiwgMHhGRjM3LCAweEZGMzgsIDB4RkYzOSwgMHhGRjNBLA0KKyAgICAweEZGNDEsIDB4RkY0MiwgMHhGRjQzLCAweEZGNDQsIDB4RkY0NSwgMHhGRjQ2LCAweEZGNDcsIDB4RkY0OCwNCisgICAgMHhGRjQ5LCAweEZGNEEsIDB4RkY0QiwgMHhGRjRDLCAweEZGNEQsIDB4RkY0RSwgMHhGRjRGLCAweEZGNTAsDQorICAgIDB4RkY1MSwgMHhGRjUyLCAweEZGNTMsIDB4RkY1NCwgMHhGRjU1LCAweEZGNTYsIDB4RkY1NywgMHhGRjU4LA0KKyAgICAweEZGNTksIDB4RkY1QSwgMHgzMDQxLCAweDMwNDIsIDB4MzA0MywgMHgzMDQ0LCAweDMwNDUsIDB4MzA0NiwNCisgICAgMHgzMDQ3LCAweDMwNDgsIDB4MzA0OSwgMHgzMDRBLCAweDMwNEIsIDB4MzA0QywgMHgzMDRELCAweDMwNEUsDQorICAgIDB4MzA0RiwgMHgzMDUwLCAweDMwNTEsIDB4MzA1MiwgMHgzMDUzLCAweDMwNTQsIDB4MzA1NSwgMHgzMDU2LA0KKyAgICAweDMwNTcsIDB4MzA1OCwgMHgzMDU5LCAweDMwNUEsIDB4MzA1QiwgMHgzMDVDLCAweDMwNUQsIDB4MzA1RSwNCisgICAgMHgzMDVGLCAweDMwNjAsIDB4MzA2MSwgMHgzMDYyLCAweDMwNjMsIDB4MzA2NCwgMHgzMDY1LCAweDMwNjYsDQorICAgIDB4MzA2NywgMHgzMDY4LCAweDMwNjksIDB4MzA2QSwgMHgzMDZCLCAweDMwNkMsIDB4MzA2RCwgMHgzMDZFLA0KKyAgICAweDMwNkYsIDB4MzA3MCwgMHgzMDcxLCAweDMwNzIsIDB4MzA3MywgMHgzMDc0LCAweDMwNzUsIDB4MzA3NiwNCisgICAgMHgzMDc3LCAweDMwNzgsIDB4MzA3OSwgMHgzMDdBLCAweDMwN0IsIDB4MzA3QywgMHgzMDdELCAweDMwN0UsDQorICAgIDB4MzA3RiwgMHgzMDgwLCAweDMwODEsIDB4MzA4MiwgMHgzMDgzLCAweDMwODQsIDB4MzA4NSwgMHgzMDg2LA0KKyAgICAweDMwODcsIDB4MzA4OCwgMHgzMDg5LCAweDMwOEEsIDB4MzA4QiwgMHgzMDhDLCAweDMwOEQsIDB4MzA4RSwNCisgICAgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAweDMwOTMsIDB4MzBBMSwgMHgzMEEyLCAweDMwQTMsDQorICAgIDB4MzBBNCwgMHgzMEE1LCAweDMwQTYsIDB4MzBBNywgMHgzMEE4LCAweDMwQTksIDB4MzBBQSwgMHgzMEFCLA0KKyAgICAweDMwQUMsIDB4MzBBRCwgMHgzMEFFLCAweDMwQUYsIDB4MzBCMCwgMHgzMEIxLCAweDMwQjIsIDB4MzBCMywNCisgICAgMHgzMEI0LCAweDMwQjUsIDB4MzBCNiwgMHgzMEI3LCAweDMwQjgsIDB4MzBCOSwgMHgzMEJBLCAweDMwQkIsDQorICAgIDB4MzBCQywgMHgzMEJELCAweDMwQkUsIDB4MzBCRiwgMHgzMEMwLCAweDMwQzEsIDB4MzBDMiwgMHgzMEMzLA0KKyAgICAweDMwQzQsIDB4MzBDNSwgMHgzMEM2LCAweDMwQzcsIDB4MzBDOCwgMHgzMEM5LCAweDMwQ0EsIDB4MzBDQiwNCisgICAgMHgzMENDLCAweDMwQ0QsIDB4MzBDRSwgMHgzMENGLCAweDMwRDAsIDB4MzBEMSwgMHgzMEQyLCAweDMwRDMsDQorICAgIDB4MzBENCwgMHgzMEQ1LCAweDMwRDYsIDB4MzBENywgMHgzMEQ4LCAweDMwRDksIDB4MzBEQSwgMHgzMERCLA0KKyAgICAweDMwREMsIDB4MzBERCwgMHgzMERFLCAweDMwREYsIDB4MzBFMCwgMHgzMEUxLCAweDMwRTIsIDB4MzBFMywNCisgICAgMHgzMEU0LCAweDMwRTUsIDB4MzBFNiwgMHgzMEU3LCAweDMwRTgsIDB4MzBFOSwgMHgzMEVBLCAweDMwRUIsDQorICAgIDB4MzBFQywgMHgzMEVELCAweDMwRUUsIDB4MzBFRiwgMHgzMEYwLCAweDMwRjEsIDB4MzBGMiwgMHgzMEYzLA0KKyAgICAweDMwRjQsIDB4MzBGNSwgMHgzMEY2LCAweDAzOTEsIDB4MDM5MiwgMHgwMzkzLCAweDAzOTQsIDB4MDM5NSwNCisgICAgMHgwMzk2LCAweDAzOTcsIDB4MDM5OCwgMHgwMzk5LCAweDAzOUEsIDB4MDM5QiwgMHgwMzlDLCAweDAzOUQsDQorICAgIDB4MDM5RSwgMHgwMzlGLCAweDAzQTAsIDB4MDNBMSwgMHgwM0EzLCAweDAzQTQsIDB4MDNBNSwgMHgwM0E2LA0KKyAgICAweDAzQTcsIDB4MDNBOCwgMHgwM0E5LCAweDAzQjEsIDB4MDNCMiwgMHgwM0IzLCAweDAzQjQsIDB4MDNCNSwNCisgICAgMHgwM0I2LCAweDAzQjcsIDB4MDNCOCwgMHgwM0I5LCAweDAzQkEsIDB4MDNCQiwgMHgwM0JDLCAweDAzQkQsDQorICAgIDB4MDNCRSwgMHgwM0JGLCAweDAzQzAsIDB4MDNDMSwgMHgwM0MzLCAweDAzQzQsIDB4MDNDNSwgMHgwM0M2LA0KKyAgICAweDAzQzcsIDB4MDNDOCwgMHgwM0M5LCAweDA0MTAsIDB4MDQxMSwgMHgwNDEyLCAweDA0MTMsIDB4MDQxNCwNCisgICAgMHgwNDE1LCAweDA0MDEsIDB4MDQxNiwgMHgwNDE3LCAweDA0MTgsIDB4MDQxOSwgMHgwNDFBLCAweDA0MUIsDQorICAgIDB4MDQxQywgMHgwNDFELCAweDA0MUUsIDB4MDQxRiwgMHgwNDIwLCAweDA0MjEsIDB4MDQyMiwgMHgwNDIzLA0KKyAgICAweDA0MjQsIDB4MDQyNSwgMHgwNDI2LCAweDA0MjcsIDB4MDQyOCwgMHgwNDI5LCAweDA0MkEsIDB4MDQyQiwNCisgICAgMHgwNDJDLCAweDA0MkQsIDB4MDQyRSwgMHgwNDJGLCAweDA0MzAsIDB4MDQzMSwgMHgwNDMyLCAweDA0MzMsDQorICAgIDB4MDQzNCwgMHgwNDM1LCAweDA0NTEsIDB4MDQzNiwgMHgwNDM3LCAweDA0MzgsIDB4MDQzOSwgMHgwNDNBLA0KKyAgICAweDA0M0IsIDB4MDQzQywgMHgwNDNELCAweDA0M0UsIDB4MDQzRiwgMHgwNDQwLCAweDA0NDEsIDB4MDQ0MiwNCisgICAgMHgwNDQzLCAweDA0NDQsIDB4MDQ0NSwgMHgwNDQ2LCAweDA0NDcsIDB4MDQ0OCwgMHgwNDQ5LCAweDA0NEEsDQorICAgIDB4MDQ0QiwgMHgwNDRDLCAweDA0NEQsIDB4MDQ0RSwgMHgwNDRGLCAweDRFOUMsIDB4NTUxNiwgMHg1QTAzLA0KKyAgICAweDk2M0YsIDB4NTRDMCwgMHg2MTFCLCAweDYzMjgsIDB4NTlGNiwgMHg5MDIyLCAweDg0NzUsIDB4ODMxQywNCisgICAgMHg3QTUwLCAweDYwQUEsIDB4NjNFMSwgMHg2RTI1LCAweDY1RUQsIDB4ODQ2NiwgMHg4MkE2LCAweDlCRjUsDQorICAgIDB4Njg5MywgMHg1NzI3LCAweDY1QTEsIDB4NjI3MSwgMHg1QjlCLCAweDU5RDAsIDB4ODY3QiwgMHg5OEY0LA0KKyAgICAweDdENjIsIDB4N0RCRSwgMHg5QjhFLCAweDYyMTYsIDB4N0M5RiwgMHg4OEI3LCAweDVCODksIDB4NUVCNSwNCisgICAgMHg2MzA5LCAweDY2OTcsIDB4Njg0OCwgMHg5NUM3LCAweDk3OEQsIDB4Njc0RiwgMHg0RUU1LCAweDRGMEEsDQorICAgIDB4NEY0RCwgMHg0RjlELCAweDUwNDksIDB4NTZGMiwgMHg1OTM3LCAweDU5RDQsIDB4NUEwMSwgMHg1QzA5LA0KKyAgICAweDYwREYsIDB4NjEwRiwgMHg2MTcwLCAweDY2MTMsIDB4NjkwNSwgMHg3MEJBLCAweDc1NEYsIDB4NzU3MCwNCisgICAgMHg3OUZCLCAweDdEQUQsIDB4N0RFRiwgMHg4MEMzLCAweDg0MEUsIDB4ODg2MywgMHg4QjAyLCAweDkwNTUsDQorICAgIDB4OTA3QSwgMHg1MzNCLCAweDRFOTUsIDB4NEVBNSwgMHg1N0RGLCAweDgwQjIsIDB4OTBDMSwgMHg3OEVGLA0KKyAgICAweDRFMDAsIDB4NThGMSwgMHg2RUEyLCAweDkwMzgsIDB4N0EzMiwgMHg4MzI4LCAweDgyOEIsIDB4OUMyRiwNCisgICAgMHg1MTQxLCAweDUzNzAsIDB4NTRCRCwgMHg1NEUxLCAweDU2RTAsIDB4NTlGQiwgMHg1RjE1LCAweDk4RjIsDQorICAgIDB4NkRFQiwgMHg4MEU0LCAweDg1MkQsIDB4OTY2MiwgMHg5NjcwLCAweDk2QTAsIDB4OTdGQiwgMHg1NDBCLA0KKyAgICAweDUzRjMsIDB4NUI4NywgMHg3MENGLCAweDdGQkQsIDB4OEZDMiwgMHg5NkU4LCAweDUzNkYsIDB4OUQ1QywNCisgICAgMHg3QUJBLCAweDRFMTEsIDB4Nzg5MywgMHg4MUZDLCAweDZFMjYsIDB4NTYxOCwgMHg1NTA0LCAweDZCMUQsDQorICAgIDB4ODUxQSwgMHg5QzNCLCAweDU5RTUsIDB4NTNBOSwgMHg2RDY2LCAweDc0REMsIDB4OTU4RiwgMHg1NjQyLA0KKyAgICAweDRFOTEsIDB4OTA0QiwgMHg5NkYyLCAweDgzNEYsIDB4OTkwQywgMHg1M0UxLCAweDU1QjYsIDB4NUIzMCwNCisgICAgMHg1RjcxLCAweDY2MjAsIDB4NjZGMywgMHg2ODA0LCAweDZDMzgsIDB4NkNGMywgMHg2RDI5LCAweDc0NUIsDQorICAgIDB4NzZDOCwgMHg3QTRFLCAweDk4MzQsIDB4ODJGMSwgMHg4ODVCLCAweDhBNjAsIDB4OTJFRCwgMHg2REIyLA0KKyAgICAweDc1QUIsIDB4NzZDQSwgMHg5OUM1LCAweDYwQTYsIDB4OEIwMSwgMHg4RDhBLCAweDk1QjIsIDB4Njk4RSwNCisgICAgMHg1M0FELCAweDUxODYsIDB4NTcxMiwgMHg1ODMwLCAweDU5NDQsIDB4NUJCNCwgMHg1RUY2LCAweDYwMjgsDQorICAgIDB4NjNBOSwgMHg2M0Y0LCAweDZDQkYsIDB4NkYxNCwgMHg3MDhFLCAweDcxMTQsIDB4NzE1OSwgMHg3MUQ1LA0KKyAgICAweDczM0YsIDB4N0UwMSwgMHg4Mjc2LCAweDgyRDEsIDB4ODU5NywgMHg5MDYwLCAweDkyNUIsIDB4OUQxQiwNCisgICAgMHg1ODY5LCAweDY1QkMsIDB4NkM1QSwgMHg3NTI1LCAweDUxRjksIDB4NTkyRSwgMHg1OTY1LCAweDVGODAsDQorICAgIDB4NUZEQywgMHg2MkJDLCAweDY1RkEsIDB4NkEyQSwgMHg2QjI3LCAweDZCQjQsIDB4NzM4QiwgMHg3RkMxLA0KKyAgICAweDg5NTYsIDB4OUQyQywgMHg5RDBFLCAweDlFQzQsIDB4NUNBMSwgMHg2Qzk2LCAweDgzN0IsIDB4NTEwNCwNCisgICAgMHg1QzRCLCAweDYxQjYsIDB4ODFDNiwgMHg2ODc2LCAweDcyNjEsIDB4NEU1OSwgMHg0RkZBLCAweDUzNzgsDQorICAgIDB4NjA2OSwgMHg2RTI5LCAweDdBNEYsIDB4OTdGMywgMHg0RTBCLCAweDUzMTYsIDB4NEVFRSwgMHg0RjU1LA0KKyAgICAweDRGM0QsIDB4NEZBMSwgMHg0RjczLCAweDUyQTAsIDB4NTNFRiwgMHg1NjA5LCAweDU5MEYsIDB4NUFDMSwNCisgICAgMHg1QkI2LCAweDVCRTEsIDB4NzlEMSwgMHg2Njg3LCAweDY3OUMsIDB4NjdCNiwgMHg2QjRDLCAweDZDQjMsDQorICAgIDB4NzA2QiwgMHg3M0MyLCAweDc5OEQsIDB4NzlCRSwgMHg3QTNDLCAweDdCODcsIDB4ODJCMSwgMHg4MkRCLA0KKyAgICAweDgzMDQsIDB4ODM3NywgMHg4M0VGLCAweDgzRDMsIDB4ODc2NiwgMHg4QUIyLCAweDU2MjksIDB4OENBOCwNCisgICAgMHg4RkU2LCAweDkwNEUsIDB4OTcxRSwgMHg4NjhBLCAweDRGQzQsIDB4NUNFOCwgMHg2MjExLCAweDcyNTksDQorICAgIDB4NzUzQiwgMHg4MUU1LCAweDgyQkQsIDB4ODZGRSwgMHg4Q0MwLCAweDk2QzUsIDB4OTkxMywgMHg5OUQ1LA0KKyAgICAweDRFQ0IsIDB4NEYxQSwgMHg4OUUzLCAweDU2REUsIDB4NTg0QSwgMHg1OENBLCAweDVFRkIsIDB4NUZFQiwNCisgICAgMHg2MDJBLCAweDYwOTQsIDB4NjA2MiwgMHg2MUQwLCAweDYyMTIsIDB4NjJEMCwgMHg2NTM5LCAweDlCNDEsDQorICAgIDB4NjY2NiwgMHg2OEIwLCAweDZENzcsIDB4NzA3MCwgMHg3NTRDLCAweDc2ODYsIDB4N0Q3NSwgMHg4MkE1LA0KKyAgICAweDg3RjksIDB4OTU4QiwgMHg5NjhFLCAweDhDOUQsIDB4NTFGMSwgMHg1MkJFLCAweDU5MTYsIDB4NTRCMywNCisgICAgMHg1QkIzLCAweDVEMTYsIDB4NjE2OCwgMHg2OTgyLCAweDZEQUYsIDB4Nzg4RCwgMHg4NENCLCAweDg4NTcsDQorICAgIDB4OEE3MiwgMHg5M0E3LCAweDlBQjgsIDB4NkQ2QywgMHg5OUE4LCAweDg2RDksIDB4NTdBMywgMHg2N0ZGLA0KKyAgICAweDg2Q0UsIDB4OTIwRSwgMHg1MjgzLCAweDU2ODcsIDB4NTQwNCwgMHg1RUQzLCAweDYyRTEsIDB4NjRCOSwNCisgICAgMHg2ODNDLCAweDY4MzgsIDB4NkJCQiwgMHg3MzcyLCAweDc4QkEsIDB4N0E2QiwgMHg4OTlBLCAweDg5RDIsDQorICAgIDB4OEQ2QiwgMHg4RjAzLCAweDkwRUQsIDB4OTVBMywgMHg5Njk0LCAweDk3NjksIDB4NUI2NiwgMHg1Q0IzLA0KKyAgICAweDY5N0QsIDB4OTg0RCwgMHg5ODRFLCAweDYzOUIsIDB4N0IyMCwgMHg2QTJCLCAweDZBN0YsIDB4NjhCNiwNCisgICAgMHg5QzBELCAweDZGNUYsIDB4NTI3MiwgMHg1NTlELCAweDYwNzAsIDB4NjJFQywgMHg2RDNCLCAweDZFMDcsDQorICAgIDB4NkVEMSwgMHg4NDVCLCAweDg5MTAsIDB4OEY0NCwgMHg0RTE0LCAweDlDMzksIDB4NTNGNiwgMHg2OTFCLA0KKyAgICAweDZBM0EsIDB4OTc4NCwgMHg2ODJBLCAweDUxNUMsIDB4N0FDMywgMHg4NEIyLCAweDkxREMsIDB4OTM4QywNCisgICAgMHg1NjVCLCAweDlEMjgsIDB4NjgyMiwgMHg4MzA1LCAweDg0MzEsIDB4N0NBNSwgMHg1MjA4LCAweDgyQzUsDQorICAgIDB4NzRFNiwgMHg0RTdFLCAweDRGODMsIDB4NTFBMCwgMHg1QkQyLCAweDUyMEEsIDB4NTJEOCwgMHg1MkU3LA0KKyAgICAweDVERkIsIDB4NTU5QSwgMHg1ODJBLCAweDU5RTYsIDB4NUI4QywgMHg1Qjk4LCAweDVCREIsIDB4NUU3MiwNCisgICAgMHg1RTc5LCAweDYwQTMsIDB4NjExRiwgMHg2MTYzLCAweDYxQkUsIDB4NjNEQiwgMHg2NTYyLCAweDY3RDEsDQorICAgIDB4Njg1MywgMHg2OEZBLCAweDZCM0UsIDB4NkI1MywgMHg2QzU3LCAweDZGMjIsIDB4NkY5NywgMHg2RjQ1LA0KKyAgICAweDc0QjAsIDB4NzUxOCwgMHg3NkUzLCAweDc3MEIsIDB4N0FGRiwgMHg3QkExLCAweDdDMjEsIDB4N0RFOSwNCisgICAgMHg3RjM2LCAweDdGRjAsIDB4ODA5RCwgMHg4MjY2LCAweDgzOUUsIDB4ODlCMywgMHg4QUNDLCAweDhDQUIsDQorICAgIDB4OTA4NCwgMHg5NDUxLCAweDk1OTMsIDB4OTU5MSwgMHg5NUEyLCAweDk2NjUsIDB4OTdEMywgMHg5OTI4LA0KKyAgICAweDgyMTgsIDB4NEUzOCwgMHg1NDJCLCAweDVDQjgsIDB4NURDQywgMHg3M0E5LCAweDc2NEMsIDB4NzczQywNCisgICAgMHg1Q0E5LCAweDdGRUIsIDB4OEQwQiwgMHg5NkMxLCAweDk4MTEsIDB4OTg1NCwgMHg5ODU4LCAweDRGMDEsDQorICAgIDB4NEYwRSwgMHg1MzcxLCAweDU1OUMsIDB4NTY2OCwgMHg1N0ZBLCAweDU5NDcsIDB4NUIwOSwgMHg1QkM0LA0KKyAgICAweDVDOTAsIDB4NUUwQywgMHg1RTdFLCAweDVGQ0MsIDB4NjNFRSwgMHg2NzNBLCAweDY1RDcsIDB4NjVFMiwNCisgICAgMHg2NzFGLCAweDY4Q0IsIDB4NjhDNCwgMHg2QTVGLCAweDVFMzAsIDB4NkJDNSwgMHg2QzE3LCAweDZDN0QsDQorICAgIDB4NzU3RiwgMHg3OTQ4LCAweDVCNjMsIDB4N0EwMCwgMHg3RDAwLCAweDVGQkQsIDB4ODk4RiwgMHg4QTE4LA0KKyAgICAweDhDQjQsIDB4OEQ3NywgMHg4RUNDLCAweDhGMUQsIDB4OThFMiwgMHg5QTBFLCAweDlCM0MsIDB4NEU4MCwNCisgICAgMHg1MDdELCAweDUxMDAsIDB4NTk5MywgMHg1QjlDLCAweDYyMkYsIDB4NjI4MCwgMHg2NEVDLCAweDZCM0EsDQorICAgIDB4NzJBMCwgMHg3NTkxLCAweDc5NDcsIDB4N0ZBOSwgMHg4N0ZCLCAweDhBQkMsIDB4OEI3MCwgMHg2M0FDLA0KKyAgICAweDgzQ0EsIDB4OTdBMCwgMHg1NDA5LCAweDU0MDMsIDB4NTVBQiwgMHg2ODU0LCAweDZBNTgsIDB4OEE3MCwNCisgICAgMHg3ODI3LCAweDY3NzUsIDB4OUVDRCwgMHg1Mzc0LCAweDVCQTIsIDB4ODExQSwgMHg4NjUwLCAweDkwMDYsDQorICAgIDB4NEUxOCwgMHg0RTQ1LCAweDRFQzcsIDB4NEYxMSwgMHg1M0NBLCAweDU0MzgsIDB4NUJBRSwgMHg1RjEzLA0KKyAgICAweDYwMjUsIDB4NjU1MSwgMHg2NzNELCAweDZDNDIsIDB4NkM3MiwgMHg2Q0UzLCAweDcwNzgsIDB4NzQwMywNCisgICAgMHg3QTc2LCAweDdBQUUsIDB4N0IwOCwgMHg3RDFBLCAweDdDRkUsIDB4N0Q2NiwgMHg2NUU3LCAweDcyNUIsDQorICAgIDB4NTNCQiwgMHg1QzQ1LCAweDVERTgsIDB4NjJEMiwgMHg2MkUwLCAweDYzMTksIDB4NkUyMCwgMHg4NjVBLA0KKyAgICAweDhBMzEsIDB4OERERCwgMHg5MkY4LCAweDZGMDEsIDB4NzlBNiwgMHg5QjVBLCAweDRFQTgsIDB4NEVBQiwNCisgICAgMHg0RUFDLCAweDRGOUIsIDB4NEZBMCwgMHg1MEQxLCAweDUxNDcsIDB4N0FGNiwgMHg1MTcxLCAweDUxRjYsDQorICAgIDB4NTM1NCwgMHg1MzIxLCAweDUzN0YsIDB4NTNFQiwgMHg1NUFDLCAweDU4ODMsIDB4NUNFMSwgMHg1RjM3LA0KKyAgICAweDVGNEEsIDB4NjAyRiwgMHg2MDUwLCAweDYwNkQsIDB4NjMxRiwgMHg2NTU5LCAweDZBNEIsIDB4NkNDMSwNCisgICAgMHg3MkMyLCAweDcyRUQsIDB4NzdFRiwgMHg4MEY4LCAweDgxMDUsIDB4ODIwOCwgMHg4NTRFLCAweDkwRjcsDQorICAgIDB4OTNFMSwgMHg5N0ZGLCAweDk5NTcsIDB4OUE1QSwgMHg0RUYwLCAweDUxREQsIDB4NUMyRCwgMHg2NjgxLA0KKyAgICAweDY5NkQsIDB4NUM0MCwgMHg2NkYyLCAweDY5NzUsIDB4NzM4OSwgMHg2ODUwLCAweDdDODEsIDB4NTBDNSwNCisgICAgMHg1MkU0LCAweDU3NDcsIDB4NURGRSwgMHg5MzI2LCAweDY1QTQsIDB4NkIyMywgMHg2QjNELCAweDc0MzQsDQorICAgIDB4Nzk4MSwgMHg3OUJELCAweDdCNEIsIDB4N0RDQSwgMHg4MkI5LCAweDgzQ0MsIDB4ODg3RiwgMHg4OTVGLA0KKyAgICAweDhCMzksIDB4OEZEMSwgMHg5MUQxLCAweDU0MUYsIDB4OTI4MCwgMHg0RTVELCAweDUwMzYsIDB4NTNFNSwNCisgICAgMHg1MzNBLCAweDcyRDcsIDB4NzM5NiwgMHg3N0U5LCAweDgyRTYsIDB4OEVBRiwgMHg5OUM2LCAweDk5QzgsDQorICAgIDB4OTlEMiwgMHg1MTc3LCAweDYxMUEsIDB4ODY1RSwgMHg1NUIwLCAweDdBN0EsIDB4NTA3NiwgMHg1QkQzLA0KKyAgICAweDkwNDcsIDB4OTY4NSwgMHg0RTMyLCAweDZBREIsIDB4OTFFNywgMHg1QzUxLCAweDVDNDgsIDB4NjM5OCwNCisgICAgMHg3QTlGLCAweDZDOTMsIDB4OTc3NCwgMHg4RjYxLCAweDdBQUEsIDB4NzE4QSwgMHg5Njg4LCAweDdDODIsDQorICAgIDB4NjgxNywgMHg3RTcwLCAweDY4NTEsIDB4OTM2QywgMHg1MkYyLCAweDU0MUIsIDB4ODVBQiwgMHg4QTEzLA0KKyAgICAweDdGQTQsIDB4OEVDRCwgMHg5MEUxLCAweDUzNjYsIDB4ODg4OCwgMHg3OTQxLCAweDRGQzIsIDB4NTBCRSwNCisgICAgMHg1MjExLCAweDUxNDQsIDB4NTU1MywgMHg1NzJELCAweDczRUEsIDB4NTc4QiwgMHg1OTUxLCAweDVGNjIsDQorICAgIDB4NUY4NCwgMHg2MDc1LCAweDYxNzYsIDB4NjE2NywgMHg2MUE5LCAweDYzQjIsIDB4NjQzQSwgMHg2NTZDLA0KKyAgICAweDY2NkYsIDB4Njg0MiwgMHg2RTEzLCAweDc1NjYsIDB4N0EzRCwgMHg3Q0ZCLCAweDdENEMsIDB4N0Q5OSwNCisgICAgMHg3RTRCLCAweDdGNkIsIDB4ODMwRSwgMHg4MzRBLCAweDg2Q0QsIDB4OEEwOCwgMHg4QTYzLCAweDhCNjYsDQorICAgIDB4OEVGRCwgMHg5ODFBLCAweDlEOEYsIDB4ODJCOCwgMHg4RkNFLCAweDlCRTgsIDB4NTI4NywgMHg2MjFGLA0KKyAgICAweDY0ODMsIDB4NkZDMCwgMHg5Njk5LCAweDY4NDEsIDB4NTA5MSwgMHg2QjIwLCAweDZDN0EsIDB4NkY1NCwNCisgICAgMHg3QTc0LCAweDdENTAsIDB4ODg0MCwgMHg4QTIzLCAweDY3MDgsIDB4NEVGNiwgMHg1MDM5LCAweDUwMjYsDQorICAgIDB4NTA2NSwgMHg1MTdDLCAweDUyMzgsIDB4NTI2MywgMHg1NUE3LCAweDU3MEYsIDB4NTgwNSwgMHg1QUNDLA0KKyAgICAweDVFRkEsIDB4NjFCMiwgMHg2MUY4LCAweDYyRjMsIDB4NjM3MiwgMHg2OTFDLCAweDZBMjksIDB4NzI3RCwNCisgICAgMHg3MkFDLCAweDczMkUsIDB4NzgxNCwgMHg3ODZGLCAweDdENzksIDB4NzcwQywgMHg4MEE5LCAweDg5OEIsDQorICAgIDB4OEIxOSwgMHg4Q0UyLCAweDhFRDIsIDB4OTA2MywgMHg5Mzc1LCAweDk2N0EsIDB4OTg1NSwgMHg5QTEzLA0KKyAgICAweDlFNzgsIDB4NTE0MywgMHg1MzlGLCAweDUzQjMsIDB4NUU3QiwgMHg1RjI2LCAweDZFMUIsIDB4NkU5MCwNCisgICAgMHg3Mzg0LCAweDczRkUsIDB4N0Q0MywgMHg4MjM3LCAweDhBMDAsIDB4OEFGQSwgMHg5NjUwLCAweDRFNEUsDQorICAgIDB4NTAwQiwgMHg1M0U0LCAweDU0N0MsIDB4NTZGQSwgMHg1OUQxLCAweDVCNjQsIDB4NURGMSwgMHg1RUFCLA0KKyAgICAweDVGMjcsIDB4NjIzOCwgMHg2NTQ1LCAweDY3QUYsIDB4NkU1NiwgMHg3MkQwLCAweDdDQ0EsIDB4ODhCNCwNCisgICAgMHg4MEExLCAweDgwRTEsIDB4ODNGMCwgMHg4NjRFLCAweDhBODcsIDB4OERFOCwgMHg5MjM3LCAweDk2QzcsDQorICAgIDB4OTg2NywgMHg5RjEzLCAweDRFOTQsIDB4NEU5MiwgMHg0RjBELCAweDUzNDgsIDB4NTQ0OSwgMHg1NDNFLA0KKyAgICAweDVBMkYsIDB4NUY4QywgMHg1RkExLCAweDYwOUYsIDB4NjhBNywgMHg2QThFLCAweDc0NUEsIDB4Nzg4MSwNCisgICAgMHg4QTlFLCAweDhBQTQsIDB4OEI3NywgMHg5MTkwLCAweDRFNUUsIDB4OUJDOSwgMHg0RUE0LCAweDRGN0MsDQorICAgIDB4NEZBRiwgMHg1MDE5LCAweDUwMTYsIDB4NTE0OSwgMHg1MTZDLCAweDUyOUYsIDB4NTJCOSwgMHg1MkZFLA0KKyAgICAweDUzOUEsIDB4NTNFMywgMHg1NDExLCAweDU0MEUsIDB4NTU4OSwgMHg1NzUxLCAweDU3QTIsIDB4NTk3RCwNCisgICAgMHg1QjU0LCAweDVCNUQsIDB4NUI4RiwgMHg1REU1LCAweDVERTcsIDB4NURGNywgMHg1RTc4LCAweDVFODMsDQorICAgIDB4NUU5QSwgMHg1RUI3LCAweDVGMTgsIDB4NjA1MiwgMHg2MTRDLCAweDYyOTcsIDB4NjJEOCwgMHg2M0E3LA0KKyAgICAweDY1M0IsIDB4NjYwMiwgMHg2NjQzLCAweDY2RjQsIDB4Njc2RCwgMHg2ODIxLCAweDY4OTcsIDB4NjlDQiwNCisgICAgMHg2QzVGLCAweDZEMkEsIDB4NkQ2OSwgMHg2RTJGLCAweDZFOUQsIDB4NzUzMiwgMHg3Njg3LCAweDc4NkMsDQorICAgIDB4N0EzRiwgMHg3Q0UwLCAweDdEMDUsIDB4N0QxOCwgMHg3RDVFLCAweDdEQjEsIDB4ODAxNSwgMHg4MDAzLA0KKyAgICAweDgwQUYsIDB4ODBCMSwgMHg4MTU0LCAweDgxOEYsIDB4ODIyQSwgMHg4MzUyLCAweDg4NEMsIDB4ODg2MSwNCisgICAgMHg4QjFCLCAweDhDQTIsIDB4OENGQywgMHg5MENBLCAweDkxNzUsIDB4OTI3MSwgMHg3ODNGLCAweDkyRkMsDQorICAgIDB4OTVBNCwgMHg5NjRELCAweDk4MDUsIDB4OTk5OSwgMHg5QUQ4LCAweDlEM0IsIDB4NTI1QiwgMHg1MkFCLA0KKyAgICAweDUzRjcsIDB4NTQwOCwgMHg1OEQ1LCAweDYyRjcsIDB4NkZFMCwgMHg4QzZBLCAweDhGNUYsIDB4OUVCOSwNCisgICAgMHg1MTRCLCAweDUyM0IsIDB4NTQ0QSwgMHg1NkZELCAweDdBNDAsIDB4OTE3NywgMHg5RDYwLCAweDlFRDIsDQorICAgIDB4NzM0NCwgMHg2RjA5LCAweDgxNzAsIDB4NzUxMSwgMHg1RkZELCAweDYwREEsIDB4OUFBOCwgMHg3MkRCLA0KKyAgICAweDhGQkMsIDB4NkI2NCwgMHg5ODAzLCAweDRFQ0EsIDB4NTZGMCwgMHg1NzY0LCAweDU4QkUsIDB4NUE1QSwNCisgICAgMHg2MDY4LCAweDYxQzcsIDB4NjYwRiwgMHg2NjA2LCAweDY4MzksIDB4NjhCMSwgMHg2REY3LCAweDc1RDUsDQorICAgIDB4N0QzQSwgMHg4MjZFLCAweDlCNDIsIDB4NEU5QiwgMHg0RjUwLCAweDUzQzksIDB4NTUwNiwgMHg1RDZGLA0KKyAgICAweDVERTYsIDB4NURFRSwgMHg2N0ZCLCAweDZDOTksIDB4NzQ3MywgMHg3ODAyLCAweDhBNTAsIDB4OTM5NiwNCisgICAgMHg4OERGLCAweDU3NTAsIDB4NUVBNywgMHg2MzJCLCAweDUwQjUsIDB4NTBBQywgMHg1MThELCAweDY3MDAsDQorICAgIDB4NTRDOSwgMHg1ODVFLCAweDU5QkIsIDB4NUJCMCwgMHg1RjY5LCAweDYyNEQsIDB4NjNBMSwgMHg2ODNELA0KKyAgICAweDZCNzMsIDB4NkUwOCwgMHg3MDdELCAweDkxQzcsIDB4NzI4MCwgMHg3ODE1LCAweDc4MjYsIDB4Nzk2RCwNCisgICAgMHg2NThFLCAweDdEMzAsIDB4ODNEQywgMHg4OEMxLCAweDhGMDksIDB4OTY5QiwgMHg1MjY0LCAweDU3MjgsDQorICAgIDB4Njc1MCwgMHg3RjZBLCAweDhDQTEsIDB4NTFCNCwgMHg1NzQyLCAweDk2MkEsIDB4NTgzQSwgMHg2OThBLA0KKyAgICAweDgwQjQsIDB4NTRCMiwgMHg1RDBFLCAweDU3RkMsIDB4Nzg5NSwgMHg5REZBLCAweDRGNUMsIDB4NTI0QSwNCisgICAgMHg1NDhCLCAweDY0M0UsIDB4NjYyOCwgMHg2NzE0LCAweDY3RjUsIDB4N0E4NCwgMHg3QjU2LCAweDdEMjIsDQorICAgIDB4OTMyRiwgMHg2ODVDLCAweDlCQUQsIDB4N0IzOSwgMHg1MzE5LCAweDUxOEEsIDB4NTIzNywgMHg1QkRGLA0KKyAgICAweDYyRjYsIDB4NjRBRSwgMHg2NEU2LCAweDY3MkQsIDB4NkJCQSwgMHg4NUE5LCAweDk2RDEsIDB4NzY5MCwNCisgICAgMHg5QkQ2LCAweDYzNEMsIDB4OTMwNiwgMHg5QkFCLCAweDc2QkYsIDB4NjY1MiwgMHg0RTA5LCAweDUwOTgsDQorICAgIDB4NTNDMiwgMHg1QzcxLCAweDYwRTgsIDB4NjQ5MiwgMHg2NTYzLCAweDY4NUYsIDB4NzFFNiwgMHg3M0NBLA0KKyAgICAweDc1MjMsIDB4N0I5NywgMHg3RTgyLCAweDg2OTUsIDB4OEI4MywgMHg4Q0RCLCAweDkxNzgsIDB4OTkxMCwNCisgICAgMHg2NUFDLCAweDY2QUIsIDB4NkI4QiwgMHg0RUQ1LCAweDRFRDQsIDB4NEYzQSwgMHg0RjdGLCAweDUyM0EsDQorICAgIDB4NTNGOCwgMHg1M0YyLCAweDU1RTMsIDB4NTZEQiwgMHg1OEVCLCAweDU5Q0IsIDB4NTlDOSwgMHg1OUZGLA0KKyAgICAweDVCNTAsIDB4NUM0RCwgMHg1RTAyLCAweDVFMkIsIDB4NUZENywgMHg2MDFELCAweDYzMDcsIDB4NjUyRiwNCisgICAgMHg1QjVDLCAweDY1QUYsIDB4NjVCRCwgMHg2NUU4LCAweDY3OUQsIDB4NkI2MiwgMHg2QjdCLCAweDZDMEYsDQorICAgIDB4NzM0NSwgMHg3OTQ5LCAweDc5QzEsIDB4N0NGOCwgMHg3RDE5LCAweDdEMkIsIDB4ODBBMiwgMHg4MTAyLA0KKyAgICAweDgxRjMsIDB4ODk5NiwgMHg4QTVFLCAweDhBNjksIDB4OEE2NiwgMHg4QThDLCAweDhBRUUsIDB4OENDNywNCisgICAgMHg4Q0RDLCAweDk2Q0MsIDB4OThGQywgMHg2QjZGLCAweDRFOEIsIDB4NEYzQywgMHg0RjhELCAweDUxNTAsDQorICAgIDB4NUI1NywgMHg1QkZBLCAweDYxNDgsIDB4NjMwMSwgMHg2NjQyLCAweDZCMjEsIDB4NkVDQiwgMHg2Q0JCLA0KKyAgICAweDcyM0UsIDB4NzRCRCwgMHg3NUQ0LCAweDc4QzEsIDB4NzkzQSwgMHg4MDBDLCAweDgwMzMsIDB4ODFFQSwNCisgICAgMHg4NDk0LCAweDhGOUUsIDB4NkM1MCwgMHg5RTdGLCAweDVGMEYsIDB4OEI1OCwgMHg5RDJCLCAweDdBRkEsDQorICAgIDB4OEVGOCwgMHg1QjhELCAweDk2RUIsIDB4NEUwMywgMHg1M0YxLCAweDU3RjcsIDB4NTkzMSwgMHg1QUM5LA0KKyAgICAweDVCQTQsIDB4NjA4OSwgMHg2RTdGLCAweDZGMDYsIDB4NzVCRSwgMHg4Q0VBLCAweDVCOUYsIDB4ODUwMCwNCisgICAgMHg3QkUwLCAweDUwNzIsIDB4NjdGNCwgMHg4MjlELCAweDVDNjEsIDB4ODU0QSwgMHg3RTFFLCAweDgyMEUsDQorICAgIDB4NTE5OSwgMHg1QzA0LCAweDYzNjgsIDB4OEQ2NiwgMHg2NTlDLCAweDcxNkUsIDB4NzkzRSwgMHg3RDE3LA0KKyAgICAweDgwMDUsIDB4OEIxRCwgMHg4RUNBLCAweDkwNkUsIDB4ODZDNywgMHg5MEFBLCAweDUwMUYsIDB4NTJGQSwNCisgICAgMHg1QzNBLCAweDY3NTMsIDB4NzA3QywgMHg3MjM1LCAweDkxNEMsIDB4OTFDOCwgMHg5MzJCLCAweDgyRTUsDQorICAgIDB4NUJDMiwgMHg1RjMxLCAweDYwRjksIDB4NEUzQiwgMHg1M0Q2LCAweDVCODgsIDB4NjI0QiwgMHg2NzMxLA0KKyAgICAweDZCOEEsIDB4NzJFOSwgMHg3M0UwLCAweDdBMkUsIDB4ODE2QiwgMHg4REEzLCAweDkxNTIsIDB4OTk5NiwNCisgICAgMHg1MTEyLCAweDUzRDcsIDB4NTQ2QSwgMHg1QkZGLCAweDYzODgsIDB4NkEzOSwgMHg3REFDLCAweDk3MDAsDQorICAgIDB4NTZEQSwgMHg1M0NFLCAweDU0NjgsIDB4NUI5NywgMHg1QzMxLCAweDVEREUsIDB4NEZFRSwgMHg2MTAxLA0KKyAgICAweDYyRkUsIDB4NkQzMiwgMHg3OUMwLCAweDc5Q0IsIDB4N0Q0MiwgMHg3RTRELCAweDdGRDIsIDB4ODFFRCwNCisgICAgMHg4MjFGLCAweDg0OTAsIDB4ODg0NiwgMHg4OTcyLCAweDhCOTAsIDB4OEU3NCwgMHg4RjJGLCAweDkwMzEsDQorICAgIDB4OTE0QiwgMHg5MTZDLCAweDk2QzYsIDB4OTE5QywgMHg0RUMwLCAweDRGNEYsIDB4NTE0NSwgMHg1MzQxLA0KKyAgICAweDVGOTMsIDB4NjIwRSwgMHg2N0Q0LCAweDZDNDEsIDB4NkUwQiwgMHg3MzYzLCAweDdFMjYsIDB4OTFDRCwNCisgICAgMHg5MjgzLCAweDUzRDQsIDB4NTkxOSwgMHg1QkJGLCAweDZERDEsIDB4Nzk1RCwgMHg3RTJFLCAweDdDOUIsDQorICAgIDB4NTg3RSwgMHg3MTlGLCAweDUxRkEsIDB4ODg1MywgMHg4RkYwLCAweDRGQ0EsIDB4NUNGQiwgMHg2NjI1LA0KKyAgICAweDc3QUMsIDB4N0FFMywgMHg4MjFDLCAweDk5RkYsIDB4NTFDNiwgMHg1RkFBLCAweDY1RUMsIDB4Njk2RiwNCisgICAgMHg2Qjg5LCAweDZERjMsIDB4NkU5NiwgMHg2RjY0LCAweDc2RkUsIDB4N0QxNCwgMHg1REUxLCAweDkwNzUsDQorICAgIDB4OTE4NywgMHg5ODA2LCAweDUxRTYsIDB4NTIxRCwgMHg2MjQwLCAweDY2OTEsIDB4NjZEOSwgMHg2RTFBLA0KKyAgICAweDVFQjYsIDB4N0REMiwgMHg3RjcyLCAweDY2RjgsIDB4ODVBRiwgMHg4NUY3LCAweDhBRjgsIDB4NTJBOSwNCisgICAgMHg1M0Q5LCAweDU5NzMsIDB4NUU4RiwgMHg1RjkwLCAweDYwNTUsIDB4OTJFNCwgMHg5NjY0LCAweDUwQjcsDQorICAgIDB4NTExRiwgMHg1MkRELCAweDUzMjAsIDB4NTM0NywgMHg1M0VDLCAweDU0RTgsIDB4NTU0NiwgMHg1NTMxLA0KKyAgICAweDU2MTcsIDB4NTk2OCwgMHg1OUJFLCAweDVBM0MsIDB4NUJCNSwgMHg1QzA2LCAweDVDMEYsIDB4NUMxMSwNCisgICAgMHg1QzFBLCAweDVFODQsIDB4NUU4QSwgMHg1RUUwLCAweDVGNzAsIDB4NjI3RiwgMHg2Mjg0LCAweDYyREIsDQorICAgIDB4NjM4QywgMHg2Mzc3LCAweDY2MDcsIDB4NjYwQywgMHg2NjJELCAweDY2NzYsIDB4Njc3RSwgMHg2OEEyLA0KKyAgICAweDZBMUYsIDB4NkEzNSwgMHg2Q0JDLCAweDZEODgsIDB4NkUwOSwgMHg2RTU4LCAweDcxM0MsIDB4NzEyNiwNCisgICAgMHg3MTY3LCAweDc1QzcsIDB4NzcwMSwgMHg3ODVELCAweDc5MDEsIDB4Nzk2NSwgMHg3OUYwLCAweDdBRTAsDQorICAgIDB4N0IxMSwgMHg3Q0E3LCAweDdEMzksIDB4ODA5NiwgMHg4M0Q2LCAweDg0OEIsIDB4ODU0OSwgMHg4ODVELA0KKyAgICAweDg4RjMsIDB4OEExRiwgMHg4QTNDLCAweDhBNTQsIDB4OEE3MywgMHg4QzYxLCAweDhDREUsIDB4OTFBNCwNCisgICAgMHg5MjY2LCAweDkzN0UsIDB4OTQxOCwgMHg5NjlDLCAweDk3OTgsIDB4NEUwQSwgMHg0RTA4LCAweDRFMUUsDQorICAgIDB4NEU1NywgMHg1MTk3LCAweDUyNzAsIDB4NTdDRSwgMHg1ODM0LCAweDU4Q0MsIDB4NUIyMiwgMHg1RTM4LA0KKyAgICAweDYwQzUsIDB4NjRGRSwgMHg2NzYxLCAweDY3NTYsIDB4NkQ0NCwgMHg3MkI2LCAweDc1NzMsIDB4N0E2MywNCisgICAgMHg4NEI4LCAweDhCNzIsIDB4OTFCOCwgMHg5MzIwLCAweDU2MzEsIDB4NTdGNCwgMHg5OEZFLCAweDYyRUQsDQorICAgIDB4NjkwRCwgMHg2Qjk2LCAweDcxRUQsIDB4N0U1NCwgMHg4MDc3LCAweDgyNzIsIDB4ODlFNiwgMHg5OERGLA0KKyAgICAweDg3NTUsIDB4OEZCMSwgMHg1QzNCLCAweDRGMzgsIDB4NEZFMSwgMHg0RkI1LCAweDU1MDcsIDB4NUEyMCwNCisgICAgMHg1QkRELCAweDVCRTksIDB4NUZDMywgMHg2MTRFLCAweDYzMkYsIDB4NjVCMCwgMHg2NjRCLCAweDY4RUUsDQorICAgIDB4Njk5QiwgMHg2RDc4LCAweDZERjEsIDB4NzUzMywgMHg3NUI5LCAweDc3MUYsIDB4Nzk1RSwgMHg3OUU2LA0KKyAgICAweDdEMzMsIDB4ODFFMywgMHg4MkFGLCAweDg1QUEsIDB4ODlBQSwgMHg4QTNBLCAweDhFQUIsIDB4OEY5QiwNCisgICAgMHg5MDMyLCAweDkxREQsIDB4OTcwNywgMHg0RUJBLCAweDRFQzEsIDB4NTIwMywgMHg1ODc1LCAweDU4RUMsDQorICAgIDB4NUMwQiwgMHg3NTFBLCAweDVDM0QsIDB4ODE0RSwgMHg4QTBBLCAweDhGQzUsIDB4OTY2MywgMHg5NzZELA0KKyAgICAweDdCMjUsIDB4OEFDRiwgMHg5ODA4LCAweDkxNjIsIDB4NTZGMywgMHg1M0E4LCAweDkwMTcsIDB4NTQzOSwNCisgICAgMHg1NzgyLCAweDVFMjUsIDB4NjNBOCwgMHg2QzM0LCAweDcwOEEsIDB4Nzc2MSwgMHg3QzhCLCAweDdGRTAsDQorICAgIDB4ODg3MCwgMHg5MDQyLCAweDkxNTQsIDB4OTMxMCwgMHg5MzE4LCAweDk2OEYsIDB4NzQ1RSwgMHg5QUM0LA0KKyAgICAweDVEMDcsIDB4NUQ2OSwgMHg2NTcwLCAweDY3QTIsIDB4OERBOCwgMHg5NkRCLCAweDYzNkUsIDB4Njc0OSwNCisgICAgMHg2OTE5LCAweDgzQzUsIDB4OTgxNywgMHg5NkMwLCAweDg4RkUsIDB4NkY4NCwgMHg2NDdBLCAweDVCRjgsDQorICAgIDB4NEUxNiwgMHg3MDJDLCAweDc1NUQsIDB4NjYyRiwgMHg1MUM0LCAweDUyMzYsIDB4NTJFMiwgMHg1OUQzLA0KKyAgICAweDVGODEsIDB4NjAyNywgMHg2MjEwLCAweDY1M0YsIDB4NjU3NCwgMHg2NjFGLCAweDY2NzQsIDB4NjhGMiwNCisgICAgMHg2ODE2LCAweDZCNjMsIDB4NkUwNSwgMHg3MjcyLCAweDc1MUYsIDB4NzZEQiwgMHg3Q0JFLCAweDgwNTYsDQorICAgIDB4NThGMCwgMHg4OEZELCAweDg5N0YsIDB4OEFBMCwgMHg4QTkzLCAweDhBQ0IsIDB4OTAxRCwgMHg5MTkyLA0KKyAgICAweDk3NTIsIDB4OTc1OSwgMHg2NTg5LCAweDdBMEUsIDB4ODEwNiwgMHg5NkJCLCAweDVFMkQsIDB4NjBEQywNCisgICAgMHg2MjFBLCAweDY1QTUsIDB4NjYxNCwgMHg2NzkwLCAweDc3RjMsIDB4N0E0RCwgMHg3QzRELCAweDdFM0UsDQorICAgIDB4ODEwQSwgMHg4Q0FDLCAweDhENjQsIDB4OERFMSwgMHg4RTVGLCAweDc4QTksIDB4NTIwNywgMHg2MkQ5LA0KKyAgICAweDYzQTUsIDB4NjQ0MiwgMHg2Mjk4LCAweDhBMkQsIDB4N0E4MywgMHg3QkMwLCAweDhBQUMsIDB4OTZFQSwNCisgICAgMHg3RDc2LCAweDgyMEMsIDB4ODc0OSwgMHg0RUQ5LCAweDUxNDgsIDB4NTM0MywgMHg1MzYwLCAweDVCQTMsDQorICAgIDB4NUMwMiwgMHg1QzE2LCAweDVEREQsIDB4NjIyNiwgMHg2MjQ3LCAweDY0QjAsIDB4NjgxMywgMHg2ODM0LA0KKyAgICAweDZDQzksIDB4NkQ0NSwgMHg2RDE3LCAweDY3RDMsIDB4NkY1QywgMHg3MTRFLCAweDcxN0QsIDB4NjVDQiwNCisgICAgMHg3QTdGLCAweDdCQUQsIDB4N0REQSwgMHg3RTRBLCAweDdGQTgsIDB4ODE3QSwgMHg4MjFCLCAweDgyMzksDQorICAgIDB4ODVBNiwgMHg4QTZFLCAweDhDQ0UsIDB4OERGNSwgMHg5MDc4LCAweDkwNzcsIDB4OTJBRCwgMHg5MjkxLA0KKyAgICAweDk1ODMsIDB4OUJBRSwgMHg1MjRELCAweDU1ODQsIDB4NkYzOCwgMHg3MTM2LCAweDUxNjgsIDB4Nzk4NSwNCisgICAgMHg3RTU1LCAweDgxQjMsIDB4N0NDRSwgMHg1NjRDLCAweDU4NTEsIDB4NUNBOCwgMHg2M0FBLCAweDY2RkUsDQorICAgIDB4NjZGRCwgMHg2OTVBLCAweDcyRDksIDB4NzU4RiwgMHg3NThFLCAweDc5MEUsIDB4Nzk1NiwgMHg3OURGLA0KKyAgICAweDdDOTcsIDB4N0QyMCwgMHg3RDQ0LCAweDg2MDcsIDB4OEEzNCwgMHg5NjNCLCAweDkwNjEsIDB4OUYyMCwNCisgICAgMHg1MEU3LCAweDUyNzUsIDB4NTNDQywgMHg1M0UyLCAweDUwMDksIDB4NTVBQSwgMHg1OEVFLCAweDU5NEYsDQorICAgIDB4NzIzRCwgMHg1QjhCLCAweDVDNjQsIDB4NTMxRCwgMHg2MEUzLCAweDYwRjMsIDB4NjM1QywgMHg2MzgzLA0KKyAgICAweDYzM0YsIDB4NjNCQiwgMHg2NENELCAweDY1RTksIDB4NjZGOSwgMHg1REUzLCAweDY5Q0QsIDB4NjlGRCwNCisgICAgMHg2RjE1LCAweDcxRTUsIDB4NEU4OSwgMHg3NUU5LCAweDc2RjgsIDB4N0E5MywgMHg3Q0RGLCAweDdEQ0YsDQorICAgIDB4N0Q5QywgMHg4MDYxLCAweDgzNDksIDB4ODM1OCwgMHg4NDZDLCAweDg0QkMsIDB4ODVGQiwgMHg4OEM1LA0KKyAgICAweDhENzAsIDB4OTAwMSwgMHg5MDZELCAweDkzOTcsIDB4OTcxQywgMHg5QTEyLCAweDUwQ0YsIDB4NTg5NywNCisgICAgMHg2MThFLCAweDgxRDMsIDB4ODUzNSwgMHg4RDA4LCAweDkwMjAsIDB4NEZDMywgMHg1MDc0LCAweDUyNDcsDQorICAgIDB4NTM3MywgMHg2MDZGLCAweDYzNDksIDB4Njc1RiwgMHg2RTJDLCAweDhEQjMsIDB4OTAxRiwgMHg0RkQ3LA0KKyAgICAweDVDNUUsIDB4OENDQSwgMHg2NUNGLCAweDdEOUEsIDB4NTM1MiwgMHg4ODk2LCAweDUxNzYsIDB4NjNDMywNCisgICAgMHg1QjU4LCAweDVCNkIsIDB4NUMwQSwgMHg2NDBELCAweDY3NTEsIDB4OTA1QywgMHg0RUQ2LCAweDU5MUEsDQorICAgIDB4NTkyQSwgMHg2QzcwLCAweDhBNTEsIDB4NTUzRSwgMHg1ODE1LCAweDU5QTUsIDB4NjBGMCwgMHg2MjUzLA0KKyAgICAweDY3QzEsIDB4ODIzNSwgMHg2OTU1LCAweDk2NDAsIDB4OTlDNCwgMHg5QTI4LCAweDRGNTMsIDB4NTgwNiwNCisgICAgMHg1QkZFLCAweDgwMTAsIDB4NUNCMSwgMHg1RTJGLCAweDVGODUsIDB4NjAyMCwgMHg2MTRCLCAweDYyMzQsDQorICAgIDB4NjZGRiwgMHg2Q0YwLCAweDZFREUsIDB4ODBDRSwgMHg4MTdGLCAweDgyRDQsIDB4ODg4QiwgMHg4Q0I4LA0KKyAgICAweDkwMDAsIDB4OTAyRSwgMHg5NjhBLCAweDlFREIsIDB4OUJEQiwgMHg0RUUzLCAweDUzRjAsIDB4NTkyNywNCisgICAgMHg3QjJDLCAweDkxOEQsIDB4OTg0QywgMHg5REY5LCAweDZFREQsIDB4NzAyNywgMHg1MzUzLCAweDU1NDQsDQorICAgIDB4NUI4NSwgMHg2MjU4LCAweDYyOUUsIDB4NjJEMywgMHg2Q0EyLCAweDZGRUYsIDB4NzQyMiwgMHg4QTE3LA0KKyAgICAweDk0MzgsIDB4NkZDMSwgMHg4QUZFLCAweDgzMzgsIDB4NTFFNywgMHg4NkY4LCAweDUzRUEsIDB4NTNFOSwNCisgICAgMHg0RjQ2LCAweDkwNTQsIDB4OEZCMCwgMHg1OTZBLCAweDgxMzEsIDB4NURGRCwgMHg3QUVBLCAweDhGQkYsDQorICAgIDB4NjhEQSwgMHg4QzM3LCAweDcyRjgsIDB4OUM0OCwgMHg2QTNELCAweDhBQjAsIDB4NEUzOSwgMHg1MzU4LA0KKyAgICAweDU2MDYsIDB4NTc2NiwgMHg2MkM1LCAweDYzQTIsIDB4NjVFNiwgMHg2QjRFLCAweDZERTEsIDB4NkU1QiwNCisgICAgMHg3MEFELCAweDc3RUQsIDB4N0FFRiwgMHg3QkFBLCAweDdEQkIsIDB4ODAzRCwgMHg4MEM2LCAweDg2Q0IsDQorICAgIDB4OEE5NSwgMHg5MzVCLCAweDU2RTMsIDB4NThDNywgMHg1RjNFLCAweDY1QUQsIDB4NjY5NiwgMHg2QTgwLA0KKyAgICAweDZCQjUsIDB4NzUzNywgMHg4QUM3LCAweDUwMjQsIDB4NzdFNSwgMHg1NzMwLCAweDVGMUIsIDB4NjA2NSwNCisgICAgMHg2NjdBLCAweDZDNjAsIDB4NzVGNCwgMHg3QTFBLCAweDdGNkUsIDB4ODFGNCwgMHg4NzE4LCAweDkwNDUsDQorICAgIDB4OTlCMywgMHg3QkM5LCAweDc1NUMsIDB4N0FGOSwgMHg3QjUxLCAweDg0QzQsIDB4OTAxMCwgMHg3OUU5LA0KKyAgICAweDdBOTIsIDB4ODMzNiwgMHg1QUUxLCAweDc3NDAsIDB4NEUyRCwgMHg0RUYyLCAweDVCOTksIDB4NUZFMCwNCisgICAgMHg2MkJELCAweDY2M0MsIDB4NjdGMSwgMHg2Q0U4LCAweDg2NkIsIDB4ODg3NywgMHg4QTNCLCAweDkxNEUsDQorICAgIDB4OTJGMywgMHg5OUQwLCAweDZBMTcsIDB4NzAyNiwgMHg3MzJBLCAweDgyRTcsIDB4ODQ1NywgMHg4Q0FGLA0KKyAgICAweDRFMDEsIDB4NTE0NiwgMHg1MUNCLCAweDU1OEIsIDB4NUJGNSwgMHg1RTE2LCAweDVFMzMsIDB4NUU4MSwNCisgICAgMHg1RjE0LCAweDVGMzUsIDB4NUY2QiwgMHg1RkI0LCAweDYxRjIsIDB4NjMxMSwgMHg2NkEyLCAweDY3MUQsDQorICAgIDB4NkY2RSwgMHg3MjUyLCAweDc1M0EsIDB4NzczQSwgMHg4MDc0LCAweDgxMzksIDB4ODE3OCwgMHg4Nzc2LA0KKyAgICAweDhBQkYsIDB4OEFEQywgMHg4RDg1LCAweDhERjMsIDB4OTI5QSwgMHg5NTc3LCAweDk4MDIsIDB4OUNFNSwNCisgICAgMHg1MkM1LCAweDYzNTcsIDB4NzZGNCwgMHg2NzE1LCAweDZDODgsIDB4NzNDRCwgMHg4Q0MzLCAweDkzQUUsDQorICAgIDB4OTY3MywgMHg2RDI1LCAweDU4OUMsIDB4NjkwRSwgMHg2OUNDLCAweDhGRkQsIDB4OTM5QSwgMHg3NURCLA0KKyAgICAweDkwMUEsIDB4NTg1QSwgMHg2ODAyLCAweDYzQjQsIDB4NjlGQiwgMHg0RjQzLCAweDZGMkMsIDB4NjdEOCwNCisgICAgMHg4RkJCLCAweDg1MjYsIDB4N0RCNCwgMHg5MzU0LCAweDY5M0YsIDB4NkY3MCwgMHg1NzZBLCAweDU4RjcsDQorICAgIDB4NUIyQywgMHg3RDJDLCAweDcyMkEsIDB4NTQwQSwgMHg5MUUzLCAweDlEQjQsIDB4NEVBRCwgMHg0RjRFLA0KKyAgICAweDUwNUMsIDB4NTA3NSwgMHg1MjQzLCAweDhDOUUsIDB4NTQ0OCwgMHg1ODI0LCAweDVCOUEsIDB4NUUxRCwNCisgICAgMHg1RTk1LCAweDVFQUQsIDB4NUVGNywgMHg1RjFGLCAweDYwOEMsIDB4NjJCNSwgMHg2MzNBLCAweDYzRDAsDQorICAgIDB4NjhBRiwgMHg2QzQwLCAweDc4ODcsIDB4Nzk4RSwgMHg3QTBCLCAweDdERTAsIDB4ODI0NywgMHg4QTAyLA0KKyAgICAweDhBRTYsIDB4OEU0NCwgMHg5MDEzLCAweDkwQjgsIDB4OTEyRCwgMHg5MUQ4LCAweDlGMEUsIDB4NkNFNSwNCisgICAgMHg2NDU4LCAweDY0RTIsIDB4NjU3NSwgMHg2RUY0LCAweDc2ODQsIDB4N0IxQiwgMHg5MDY5LCAweDkzRDEsDQorICAgIDB4NkVCQSwgMHg1NEYyLCAweDVGQjksIDB4NjRBNCwgMHg4RjRELCAweDhGRUQsIDB4OTI0NCwgMHg1MTc4LA0KKyAgICAweDU4NkIsIDB4NTkyOSwgMHg1QzU1LCAweDVFOTcsIDB4NkRGQiwgMHg3RThGLCAweDc1MUMsIDB4OENCQywNCisgICAgMHg4RUUyLCAweDk4NUIsIDB4NzBCOSwgMHg0RjFELCAweDZCQkYsIDB4NkZCMSwgMHg3NTMwLCAweDk2RkIsDQorICAgIDB4NTE0RSwgMHg1NDEwLCAweDU4MzUsIDB4NTg1NywgMHg1OUFDLCAweDVDNjAsIDB4NUY5MiwgMHg2NTk3LA0KKyAgICAweDY3NUMsIDB4NkUyMSwgMHg3NjdCLCAweDgzREYsIDB4OENFRCwgMHg5MDE0LCAweDkwRkQsIDB4OTM0RCwNCisgICAgMHg3ODI1LCAweDc4M0EsIDB4NTJBQSwgMHg1RUE2LCAweDU3MUYsIDB4NTk3NCwgMHg2MDEyLCAweDUwMTIsDQorICAgIDB4NTE1QSwgMHg1MUFDLCAweDUxQ0QsIDB4NTIwMCwgMHg1NTEwLCAweDU4NTQsIDB4NTg1OCwgMHg1OTU3LA0KKyAgICAweDVCOTUsIDB4NUNGNiwgMHg1RDhCLCAweDYwQkMsIDB4NjI5NSwgMHg2NDJELCAweDY3NzEsIDB4Njg0MywNCisgICAgMHg2OEJDLCAweDY4REYsIDB4NzZENywgMHg2REQ4LCAweDZFNkYsIDB4NkQ5QiwgMHg3MDZGLCAweDcxQzgsDQorICAgIDB4NUY1MywgMHg3NUQ4LCAweDc5NzcsIDB4N0I0OSwgMHg3QjU0LCAweDdCNTIsIDB4N0NENiwgMHg3RDcxLA0KKyAgICAweDUyMzAsIDB4ODQ2MywgMHg4NTY5LCAweDg1RTQsIDB4OEEwRSwgMHg4QjA0LCAweDhDNDYsIDB4OEUwRiwNCisgICAgMHg5MDAzLCAweDkwMEYsIDB4OTQxOSwgMHg5Njc2LCAweDk4MkQsIDB4OUEzMCwgMHg5NUQ4LCAweDUwQ0QsDQorICAgIDB4NTJENSwgMHg1NDBDLCAweDU4MDIsIDB4NUMwRSwgMHg2MUE3LCAweDY0OUUsIDB4NkQxRSwgMHg3N0IzLA0KKyAgICAweDdBRTUsIDB4ODBGNCwgMHg4NDA0LCAweDkwNTMsIDB4OTI4NSwgMHg1Q0UwLCAweDlEMDcsIDB4NTMzRiwNCisgICAgMHg1Rjk3LCAweDVGQjMsIDB4NkQ5QywgMHg3Mjc5LCAweDc3NjMsIDB4NzlCRiwgMHg3QkU0LCAweDZCRDIsDQorICAgIDB4NzJFQywgMHg4QUFELCAweDY4MDMsIDB4NkE2MSwgMHg1MUY4LCAweDdBODEsIDB4NjkzNCwgMHg1QzRBLA0KKyAgICAweDlDRjYsIDB4ODJFQiwgMHg1QkM1LCAweDkxNDksIDB4NzAxRSwgMHg1Njc4LCAweDVDNkYsIDB4NjBDNywNCisgICAgMHg2NTY2LCAweDZDOEMsIDB4OEM1QSwgMHg5MDQxLCAweDk4MTMsIDB4NTQ1MSwgMHg2NkM3LCAweDkyMEQsDQorICAgIDB4NTk0OCwgMHg5MEEzLCAweDUxODUsIDB4NEU0RCwgMHg1MUVBLCAweDg1OTksIDB4OEIwRSwgMHg3MDU4LA0KKyAgICAweDYzN0EsIDB4OTM0QiwgMHg2OTYyLCAweDk5QjQsIDB4N0UwNCwgMHg3NTc3LCAweDUzNTcsIDB4Njk2MCwNCisgICAgMHg4RURGLCAweDk2RTMsIDB4NkM1RCwgMHg0RThDLCAweDVDM0MsIDB4NUYxMCwgMHg4RkU5LCAweDUzMDIsDQorICAgIDB4OENEMSwgMHg4MDg5LCAweDg2NzksIDB4NUVGRiwgMHg2NUU1LCAweDRFNzMsIDB4NTE2NSwgMHg1OTgyLA0KKyAgICAweDVDM0YsIDB4OTdFRSwgMHg0RUZCLCAweDU5OEEsIDB4NUZDRCwgMHg4QThELCAweDZGRTEsIDB4NzlCMCwNCisgICAgMHg3OTYyLCAweDVCRTcsIDB4ODQ3MSwgMHg3MzJCLCAweDcxQjEsIDB4NUU3NCwgMHg1RkY1LCAweDYzN0IsDQorICAgIDB4NjQ5QSwgMHg3MUMzLCAweDdDOTgsIDB4NEU0MywgMHg1RUZDLCAweDRFNEIsIDB4NTdEQywgMHg1NkEyLA0KKyAgICAweDYwQTksIDB4NkZDMywgMHg3RDBELCAweDgwRkQsIDB4ODEzMywgMHg4MUJGLCAweDhGQjIsIDB4ODk5NywNCisgICAgMHg4NkE0LCAweDVERjQsIDB4NjI4QSwgMHg2NEFELCAweDg5ODcsIDB4Njc3NywgMHg2Q0UyLCAweDZEM0UsDQorICAgIDB4NzQzNiwgMHg3ODM0LCAweDVBNDYsIDB4N0Y3NSwgMHg4MkFELCAweDk5QUMsIDB4NEZGMywgMHg1RUMzLA0KKyAgICAweDYyREQsIDB4NjM5MiwgMHg2NTU3LCAweDY3NkYsIDB4NzZDMywgMHg3MjRDLCAweDgwQ0MsIDB4ODBCQSwNCisgICAgMHg4RjI5LCAweDkxNEQsIDB4NTAwRCwgMHg1N0Y5LCAweDVBOTIsIDB4Njg4NSwgMHg2OTczLCAweDcxNjQsDQorICAgIDB4NzJGRCwgMHg4Q0I3LCAweDU4RjIsIDB4OENFMCwgMHg5NjZBLCAweDkwMTksIDB4ODc3RiwgMHg3OUU0LA0KKyAgICAweDc3RTcsIDB4ODQyOSwgMHg0RjJGLCAweDUyNjUsIDB4NTM1QSwgMHg2MkNELCAweDY3Q0YsIDB4NkNDQSwNCisgICAgMHg3NjdELCAweDdCOTQsIDB4N0M5NSwgMHg4MjM2LCAweDg1ODQsIDB4OEZFQiwgMHg2NkRELCAweDZGMjAsDQorICAgIDB4NzIwNiwgMHg3RTFCLCAweDgzQUIsIDB4OTlDMSwgMHg5RUE2LCAweDUxRkQsIDB4N0JCMSwgMHg3ODcyLA0KKyAgICAweDdCQjgsIDB4ODA4NywgMHg3QjQ4LCAweDZBRTgsIDB4NUU2MSwgMHg4MDhDLCAweDc1NTEsIDB4NzU2MCwNCisgICAgMHg1MTZCLCAweDkyNjIsIDB4NkU4QywgMHg3NjdBLCAweDkxOTcsIDB4OUFFQSwgMHg0RjEwLCAweDdGNzAsDQorICAgIDB4NjI5QywgMHg3QjRGLCAweDk1QTUsIDB4OUNFOSwgMHg1NjdBLCAweDU4NTksIDB4ODZFNCwgMHg5NkJDLA0KKyAgICAweDRGMzQsIDB4NTIyNCwgMHg1MzRBLCAweDUzQ0QsIDB4NTNEQiwgMHg1RTA2LCAweDY0MkMsIDB4NjU5MSwNCisgICAgMHg2NzdGLCAweDZDM0UsIDB4NkM0RSwgMHg3MjQ4LCAweDcyQUYsIDB4NzNFRCwgMHg3NTU0LCAweDdFNDEsDQorICAgIDB4ODIyQywgMHg4NUU5LCAweDhDQTksIDB4N0JDNCwgMHg5MUM2LCAweDcxNjksIDB4OTgxMiwgMHg5OEVGLA0KKyAgICAweDYzM0QsIDB4NjY2OSwgMHg3NTZBLCAweDc2RTQsIDB4NzhEMCwgMHg4NTQzLCAweDg2RUUsIDB4NTMyQSwNCisgICAgMHg1MzUxLCAweDU0MjYsIDB4NTk4MywgMHg1RTg3LCAweDVGN0MsIDB4NjBCMiwgMHg2MjQ5LCAweDYyNzksDQorICAgIDB4NjJBQiwgMHg2NTkwLCAweDZCRDQsIDB4NkNDQywgMHg3NUIyLCAweDc2QUUsIDB4Nzg5MSwgMHg3OUQ4LA0KKyAgICAweDdEQ0IsIDB4N0Y3NywgMHg4MEE1LCAweDg4QUIsIDB4OEFCOSwgMHg4Q0JCLCAweDkwN0YsIDB4OTc1RSwNCisgICAgMHg5OERCLCAweDZBMEIsIDB4N0MzOCwgMHg1MDk5LCAweDVDM0UsIDB4NUZBRSwgMHg2Nzg3LCAweDZCRDgsDQorICAgIDB4NzQzNSwgMHg3NzA5LCAweDdGOEUsIDB4OUYzQiwgMHg2N0NBLCAweDdBMTcsIDB4NTMzOSwgMHg3NThCLA0KKyAgICAweDlBRUQsIDB4NUY2NiwgMHg4MTlELCAweDgzRjEsIDB4ODA5OCwgMHg1RjNDLCAweDVGQzUsIDB4NzU2MiwNCisgICAgMHg3QjQ2LCAweDkwM0MsIDB4Njg2NywgMHg1OUVCLCAweDVBOUIsIDB4N0QxMCwgMHg3NjdFLCAweDhCMkMsDQorICAgIDB4NEZGNSwgMHg1RjZBLCAweDZBMTksIDB4NkMzNywgMHg2RjAyLCAweDc0RTIsIDB4Nzk2OCwgMHg4ODY4LA0KKyAgICAweDhBNTUsIDB4OEM3OSwgMHg1RURGLCAweDYzQ0YsIDB4NzVDNSwgMHg3OUQyLCAweDgyRDcsIDB4OTMyOCwNCisgICAgMHg5MkYyLCAweDg0OUMsIDB4ODZFRCwgMHg5QzJELCAweDU0QzEsIDB4NUY2QywgMHg2NThDLCAweDZENUMsDQorICAgIDB4NzAxNSwgMHg4Q0E3LCAweDhDRDMsIDB4OTgzQiwgMHg2NTRGLCAweDc0RjYsIDB4NEUwRCwgMHg0RUQ4LA0KKyAgICAweDU3RTAsIDB4NTkyQiwgMHg1QTY2LCAweDVCQ0MsIDB4NTFBOCwgMHg1RTAzLCAweDVFOUMsIDB4NjAxNiwNCisgICAgMHg2Mjc2LCAweDY1NzcsIDB4NjVBNywgMHg2NjZFLCAweDZENkUsIDB4NzIzNiwgMHg3QjI2LCAweDgxNTAsDQorICAgIDB4ODE5QSwgMHg4Mjk5LCAweDhCNUMsIDB4OENBMCwgMHg4Q0U2LCAweDhENzQsIDB4OTYxQywgMHg5NjQ0LA0KKyAgICAweDRGQUUsIDB4NjRBQiwgMHg2QjY2LCAweDgyMUUsIDB4ODQ2MSwgMHg4NTZBLCAweDkwRTgsIDB4NUMwMSwNCisgICAgMHg2OTUzLCAweDk4QTgsIDB4ODQ3QSwgMHg4NTU3LCAweDRGMEYsIDB4NTI2RiwgMHg1RkE5LCAweDVFNDUsDQorICAgIDB4NjcwRCwgMHg3OThGLCAweDgxNzksIDB4ODkwNywgMHg4OTg2LCAweDZERjUsIDB4NUYxNywgMHg2MjU1LA0KKyAgICAweDZDQjgsIDB4NEVDRiwgMHg3MjY5LCAweDlCOTIsIDB4NTIwNiwgMHg1NDNCLCAweDU2NzQsIDB4NThCMywNCisgICAgMHg2MUE0LCAweDYyNkUsIDB4NzExQSwgMHg1OTZFLCAweDdDODksIDB4N0NERSwgMHg3RDFCLCAweDk2RjAsDQorICAgIDB4NjU4NywgMHg4MDVFLCAweDRFMTksIDB4NEY3NSwgMHg1MTc1LCAweDU4NDAsIDB4NUU2MywgMHg1RTczLA0KKyAgICAweDVGMEEsIDB4NjdDNCwgMHg0RTI2LCAweDg1M0QsIDB4OTU4OSwgMHg5NjVCLCAweDdDNzMsIDB4OTgwMSwNCisgICAgMHg1MEZCLCAweDU4QzEsIDB4NzY1NiwgMHg3OEE3LCAweDUyMjUsIDB4NzdBNSwgMHg4NTExLCAweDdCODYsDQorICAgIDB4NTA0RiwgMHg1OTA5LCAweDcyNDcsIDB4N0JDNywgMHg3REU4LCAweDhGQkEsIDB4OEZENCwgMHg5MDRELA0KKyAgICAweDRGQkYsIDB4NTJDOSwgMHg1QTI5LCAweDVGMDEsIDB4OTdBRCwgMHg0RkRELCAweDgyMTcsIDB4OTJFQSwNCisgICAgMHg1NzAzLCAweDYzNTUsIDB4NkI2OSwgMHg3NTJCLCAweDg4REMsIDB4OEYxNCwgMHg3QTQyLCAweDUyREYsDQorICAgIDB4NTg5MywgMHg2MTU1LCAweDYyMEEsIDB4NjZBRSwgMHg2QkNELCAweDdDM0YsIDB4ODNFOSwgMHg1MDIzLA0KKyAgICAweDRGRjgsIDB4NTMwNSwgMHg1NDQ2LCAweDU4MzEsIDB4NTk0OSwgMHg1QjlELCAweDVDRjAsIDB4NUNFRiwNCisgICAgMHg1RDI5LCAweDVFOTYsIDB4NjJCMSwgMHg2MzY3LCAweDY1M0UsIDB4NjVCOSwgMHg2NzBCLCAweDZDRDUsDQorICAgIDB4NkNFMSwgMHg3MEY5LCAweDc4MzIsIDB4N0UyQiwgMHg4MERFLCAweDgyQjMsIDB4ODQwQywgMHg4NEVDLA0KKyAgICAweDg3MDIsIDB4ODkxMiwgMHg4QTJBLCAweDhDNEEsIDB4OTBBNiwgMHg5MkQyLCAweDk4RkQsIDB4OUNGMywNCisgICAgMHg5RDZDLCAweDRFNEYsIDB4NEVBMSwgMHg1MDhELCAweDUyNTYsIDB4NTc0QSwgMHg1OUE4LCAweDVFM0QsDQorICAgIDB4NUZEOCwgMHg1RkQ5LCAweDYyM0YsIDB4NjZCNCwgMHg2NzFCLCAweDY3RDAsIDB4NjhEMiwgMHg1MTkyLA0KKyAgICAweDdEMjEsIDB4ODBBQSwgMHg4MUE4LCAweDhCMDAsIDB4OEM4QywgMHg4Q0JGLCAweDkyN0UsIDB4OTYzMiwNCisgICAgMHg1NDIwLCAweDk4MkMsIDB4NTMxNywgMHg1MEQ1LCAweDUzNUMsIDB4NThBOCwgMHg2NEIyLCAweDY3MzQsDQorICAgIDB4NzI2NywgMHg3NzY2LCAweDdBNDYsIDB4OTFFNiwgMHg1MkMzLCAweDZDQTEsIDB4NkI4NiwgMHg1ODAwLA0KKyAgICAweDVFNEMsIDB4NTk1NCwgMHg2NzJDLCAweDdGRkIsIDB4NTFFMSwgMHg3NkM2LCAweDY0NjksIDB4NzhFOCwNCisgICAgMHg5QjU0LCAweDlFQkIsIDB4NTdDQiwgMHg1OUI5LCAweDY2MjcsIDB4Njc5QSwgMHg2QkNFLCAweDU0RTksDQorICAgIDB4NjlEOSwgMHg1RTU1LCAweDgxOUMsIDB4Njc5NSwgMHg5QkFBLCAweDY3RkUsIDB4OUM1MiwgMHg2ODVELA0KKyAgICAweDRFQTYsIDB4NEZFMywgMHg1M0M4LCAweDYyQjksIDB4NjcyQiwgMHg2Q0FCLCAweDhGQzQsIDB4NEZBRCwNCisgICAgMHg3RTZELCAweDlFQkYsIDB4NEUwNywgMHg2MTYyLCAweDZFODAsIDB4NkYyQiwgMHg4NTEzLCAweDU0NzMsDQorICAgIDB4NjcyQSwgMHg5QjQ1LCAweDVERjMsIDB4N0I5NSwgMHg1Q0FDLCAweDVCQzYsIDB4ODcxQywgMHg2RTRBLA0KKyAgICAweDg0RDEsIDB4N0ExNCwgMHg4MTA4LCAweDU5OTksIDB4N0M4RCwgMHg2QzExLCAweDc3MjAsIDB4NTJEOSwNCisgICAgMHg1OTIyLCAweDcxMjEsIDB4NzI1RiwgMHg3N0RCLCAweDk3MjcsIDB4OUQ2MSwgMHg2OTBCLCAweDVBN0YsDQorICAgIDB4NUExOCwgMHg1MUE1LCAweDU0MEQsIDB4NTQ3RCwgMHg2NjBFLCAweDc2REYsIDB4OEZGNywgMHg5Mjk4LA0KKyAgICAweDlDRjQsIDB4NTlFQSwgMHg3MjVELCAweDZFQzUsIDB4NTE0RCwgMHg2OEM5LCAweDdEQkYsIDB4N0RFQywNCisgICAgMHg5NzYyLCAweDlFQkEsIDB4NjQ3OCwgMHg2QTIxLCAweDgzMDIsIDB4NTk4NCwgMHg1QjVGLCAweDZCREIsDQorICAgIDB4NzMxQiwgMHg3NkYyLCAweDdEQjIsIDB4ODAxNywgMHg4NDk5LCAweDUxMzIsIDB4NjcyOCwgMHg5RUQ5LA0KKyAgICAweDc2RUUsIDB4Njc2MiwgMHg1MkZGLCAweDk5MDUsIDB4NUMyNCwgMHg2MjNCLCAweDdDN0UsIDB4OENCMCwNCisgICAgMHg1NTRGLCAweDYwQjYsIDB4N0QwQiwgMHg5NTgwLCAweDUzMDEsIDB4NEU1RiwgMHg1MUI2LCAweDU5MUMsDQorICAgIDB4NzIzQSwgMHg4MDM2LCAweDkxQ0UsIDB4NUYyNSwgMHg3N0UyLCAweDUzODQsIDB4NUY3OSwgMHg3RDA0LA0KKyAgICAweDg1QUMsIDB4OEEzMywgMHg4RThELCAweDk3NTYsIDB4NjdGMywgMHg4NUFFLCAweDk0NTMsIDB4NjEwOSwNCisgICAgMHg2MTA4LCAweDZDQjksIDB4NzY1MiwgMHg4QUVELCAweDhGMzgsIDB4NTUyRiwgMHg0RjUxLCAweDUxMkEsDQorICAgIDB4NTJDNywgMHg1M0NCLCAweDVCQTUsIDB4NUU3RCwgMHg2MEEwLCAweDYxODIsIDB4NjNENiwgMHg2NzA5LA0KKyAgICAweDY3REEsIDB4NkU2NywgMHg2RDhDLCAweDczMzYsIDB4NzMzNywgMHg3NTMxLCAweDc5NTAsIDB4ODhENSwNCisgICAgMHg4QTk4LCAweDkwNEEsIDB4OTA5MSwgMHg5MEY1LCAweDk2QzQsIDB4ODc4RCwgMHg1OTE1LCAweDRFODgsDQorICAgIDB4NEY1OSwgMHg0RTBFLCAweDhBODksIDB4OEYzRiwgMHg5ODEwLCAweDUwQUQsIDB4NUU3QywgMHg1OTk2LA0KKyAgICAweDVCQjksIDB4NUVCOCwgMHg2M0RBLCAweDYzRkEsIDB4NjRDMSwgMHg2NkRDLCAweDY5NEEsIDB4NjlEOCwNCisgICAgMHg2RDBCLCAweDZFQjYsIDB4NzE5NCwgMHg3NTI4LCAweDdBQUYsIDB4N0Y4QSwgMHg4MDAwLCAweDg0NDksDQorICAgIDB4ODRDOSwgMHg4OTgxLCAweDhCMjEsIDB4OEUwQSwgMHg5MDY1LCAweDk2N0QsIDB4OTkwQSwgMHg2MTdFLA0KKyAgICAweDYyOTEsIDB4NkIzMiwgMHg2QzgzLCAweDZENzQsIDB4N0ZDQywgMHg3RkZDLCAweDZEQzAsIDB4N0Y4NSwNCisgICAgMHg4N0JBLCAweDg4RjgsIDB4Njc2NSwgMHg4M0IxLCAweDk4M0MsIDB4OTZGNywgMHg2RDFCLCAweDdENjEsDQorICAgIDB4ODQzRCwgMHg5MTZBLCAweDRFNzEsIDB4NTM3NSwgMHg1RDUwLCAweDZCMDQsIDB4NkZFQiwgMHg4NUNELA0KKyAgICAweDg2MkQsIDB4ODlBNywgMHg1MjI5LCAweDU0MEYsIDB4NUM2NSwgMHg2NzRFLCAweDY4QTgsIDB4NzQwNiwNCisgICAgMHg3NDgzLCAweDc1RTIsIDB4ODhDRiwgMHg4OEUxLCAweDkxQ0MsIDB4OTZFMiwgMHg5Njc4LCAweDVGOEIsDQorICAgIDB4NzM4NywgMHg3QUNCLCAweDg0NEUsIDB4NjNBMCwgMHg3NTY1LCAweDUyODksIDB4NkQ0MSwgMHg2RTlDLA0KKyAgICAweDc0MDksIDB4NzU1OSwgMHg3ODZCLCAweDdDOTIsIDB4OTY4NiwgMHg3QURDLCAweDlGOEQsIDB4NEZCNiwNCisgICAgMHg2MTZFLCAweDY1QzUsIDB4ODY1QywgMHg0RTg2LCAweDRFQUUsIDB4NTBEQSwgMHg0RTIxLCAweDUxQ0MsDQorICAgIDB4NUJFRSwgMHg2NTk5LCAweDY4ODEsIDB4NkRCQywgMHg3MzFGLCAweDc2NDIsIDB4NzdBRCwgMHg3QTFDLA0KKyAgICAweDdDRTcsIDB4ODI2RiwgMHg4QUQyLCAweDkwN0MsIDB4OTFDRiwgMHg5Njc1LCAweDk4MTgsIDB4NTI5QiwNCisgICAgMHg3REQxLCAweDUwMkIsIDB4NTM5OCwgMHg2Nzk3LCAweDZEQ0IsIDB4NzFEMCwgMHg3NDMzLCAweDgxRTgsDQorICAgIDB4OEYyQSwgMHg5NkEzLCAweDlDNTcsIDB4OUU5RiwgMHg3NDYwLCAweDU4NDEsIDB4NkQ5OSwgMHg3RDJGLA0KKyAgICAweDk4NUUsIDB4NEVFNCwgMHg0RjM2LCAweDRGOEIsIDB4NTFCNywgMHg1MkIxLCAweDVEQkEsIDB4NjAxQywNCisgICAgMHg3M0IyLCAweDc5M0MsIDB4ODJEMywgMHg5MjM0LCAweDk2QjcsIDB4OTZGNiwgMHg5NzBBLCAweDlFOTcsDQorICAgIDB4OUY2MiwgMHg2NkE2LCAweDZCNzQsIDB4NTIxNywgMHg1MkEzLCAweDcwQzgsIDB4ODhDMiwgMHg1RUM5LA0KKyAgICAweDYwNEIsIDB4NjE5MCwgMHg2RjIzLCAweDcxNDksIDB4N0MzRSwgMHg3REY0LCAweDgwNkYsIDB4ODRFRSwNCisgICAgMHg5MDIzLCAweDkzMkMsIDB4NTQ0MiwgMHg5QjZGLCAweDZBRDMsIDB4NzA4OSwgMHg4Q0MyLCAweDhERUYsDQorICAgIDB4OTczMiwgMHg1MkI0LCAweDVBNDEsIDB4NUVDQSwgMHg1RjA0LCAweDY3MTcsIDB4Njk3QywgMHg2OTk0LA0KKyAgICAweDZENkEsIDB4NkYwRiwgMHg3MjYyLCAweDcyRkMsIDB4N0JFRCwgMHg4MDAxLCAweDgwN0UsIDB4ODc0QiwNCisgICAgMHg5MENFLCAweDUxNkQsIDB4OUU5MywgMHg3OTg0LCAweDgwOEIsIDB4OTMzMiwgMHg4QUQ2LCAweDUwMkQsDQorICAgIDB4NTQ4QywgMHg4QTcxLCAweDZCNkEsIDB4OENDNCwgMHg4MTA3LCAweDYwRDEsIDB4NjdBMCwgMHg5REYyLA0KKyAgICAweDRFOTksIDB4NEU5OCwgMHg5QzEwLCAweDhBNkIsIDB4ODVDMSwgMHg4NTY4LCAweDY5MDAsIDB4NkU3RSwNCisgICAgMHg3ODk3LCAweDgxNTUsIDB4NUYwQywgMHg0RTEwLCAweDRFMTUsIDB4NEUyQSwgMHg0RTMxLCAweDRFMzYsDQorICAgIDB4NEUzQywgMHg0RTNGLCAweDRFNDIsIDB4NEU1NiwgMHg0RTU4LCAweDRFODIsIDB4NEU4NSwgMHg4QzZCLA0KKyAgICAweDRFOEEsIDB4ODIxMiwgMHg1RjBELCAweDRFOEUsIDB4NEU5RSwgMHg0RTlGLCAweDRFQTAsIDB4NEVBMiwNCisgICAgMHg0RUIwLCAweDRFQjMsIDB4NEVCNiwgMHg0RUNFLCAweDRFQ0QsIDB4NEVDNCwgMHg0RUM2LCAweDRFQzIsDQorICAgIDB4NEVENywgMHg0RURFLCAweDRFRUQsIDB4NEVERiwgMHg0RUY3LCAweDRGMDksIDB4NEY1QSwgMHg0RjMwLA0KKyAgICAweDRGNUIsIDB4NEY1RCwgMHg0RjU3LCAweDRGNDcsIDB4NEY3NiwgMHg0Rjg4LCAweDRGOEYsIDB4NEY5OCwNCisgICAgMHg0RjdCLCAweDRGNjksIDB4NEY3MCwgMHg0RjkxLCAweDRGNkYsIDB4NEY4NiwgMHg0Rjk2LCAweDUxMTgsDQorICAgIDB4NEZENCwgMHg0RkRGLCAweDRGQ0UsIDB4NEZEOCwgMHg0RkRCLCAweDRGRDEsIDB4NEZEQSwgMHg0RkQwLA0KKyAgICAweDRGRTQsIDB4NEZFNSwgMHg1MDFBLCAweDUwMjgsIDB4NTAxNCwgMHg1MDJBLCAweDUwMjUsIDB4NTAwNSwNCisgICAgMHg0RjFDLCAweDRGRjYsIDB4NTAyMSwgMHg1MDI5LCAweDUwMkMsIDB4NEZGRSwgMHg0RkVGLCAweDUwMTEsDQorICAgIDB4NTAwNiwgMHg1MDQzLCAweDUwNDcsIDB4NjcwMywgMHg1MDU1LCAweDUwNTAsIDB4NTA0OCwgMHg1MDVBLA0KKyAgICAweDUwNTYsIDB4NTA2QywgMHg1MDc4LCAweDUwODAsIDB4NTA5QSwgMHg1MDg1LCAweDUwQjQsIDB4NTBCMiwNCisgICAgMHg1MEM5LCAweDUwQ0EsIDB4NTBCMywgMHg1MEMyLCAweDUwRDYsIDB4NTBERSwgMHg1MEU1LCAweDUwRUQsDQorICAgIDB4NTBFMywgMHg1MEVFLCAweDUwRjksIDB4NTBGNSwgMHg1MTA5LCAweDUxMDEsIDB4NTEwMiwgMHg1MTE2LA0KKyAgICAweDUxMTUsIDB4NTExNCwgMHg1MTFBLCAweDUxMjEsIDB4NTEzQSwgMHg1MTM3LCAweDUxM0MsIDB4NTEzQiwNCisgICAgMHg1MTNGLCAweDUxNDAsIDB4NTE1MiwgMHg1MTRDLCAweDUxNTQsIDB4NTE2MiwgMHg3QUY4LCAweDUxNjksDQorICAgIDB4NTE2QSwgMHg1MTZFLCAweDUxODAsIDB4NTE4MiwgMHg1NkQ4LCAweDUxOEMsIDB4NTE4OSwgMHg1MThGLA0KKyAgICAweDUxOTEsIDB4NTE5MywgMHg1MTk1LCAweDUxOTYsIDB4NTFBNCwgMHg1MUE2LCAweDUxQTIsIDB4NTFBOSwNCisgICAgMHg1MUFBLCAweDUxQUIsIDB4NTFCMywgMHg1MUIxLCAweDUxQjIsIDB4NTFCMCwgMHg1MUI1LCAweDUxQkQsDQorICAgIDB4NTFDNSwgMHg1MUM5LCAweDUxREIsIDB4NTFFMCwgMHg4NjU1LCAweDUxRTksIDB4NTFFRCwgMHg1MUYwLA0KKyAgICAweDUxRjUsIDB4NTFGRSwgMHg1MjA0LCAweDUyMEIsIDB4NTIxNCwgMHg1MjBFLCAweDUyMjcsIDB4NTIyQSwNCisgICAgMHg1MjJFLCAweDUyMzMsIDB4NTIzOSwgMHg1MjRGLCAweDUyNDQsIDB4NTI0QiwgMHg1MjRDLCAweDUyNUUsDQorICAgIDB4NTI1NCwgMHg1MjZBLCAweDUyNzQsIDB4NTI2OSwgMHg1MjczLCAweDUyN0YsIDB4NTI3RCwgMHg1MjhELA0KKyAgICAweDUyOTQsIDB4NTI5MiwgMHg1MjcxLCAweDUyODgsIDB4NTI5MSwgMHg4RkE4LCAweDhGQTcsIDB4NTJBQywNCisgICAgMHg1MkFELCAweDUyQkMsIDB4NTJCNSwgMHg1MkMxLCAweDUyQ0QsIDB4NTJENywgMHg1MkRFLCAweDUyRTMsDQorICAgIDB4NTJFNiwgMHg5OEVELCAweDUyRTAsIDB4NTJGMywgMHg1MkY1LCAweDUyRjgsIDB4NTJGOSwgMHg1MzA2LA0KKyAgICAweDUzMDgsIDB4NzUzOCwgMHg1MzBELCAweDUzMTAsIDB4NTMwRiwgMHg1MzE1LCAweDUzMUEsIDB4NTMyMywNCisgICAgMHg1MzJGLCAweDUzMzEsIDB4NTMzMywgMHg1MzM4LCAweDUzNDAsIDB4NTM0NiwgMHg1MzQ1LCAweDRFMTcsDQorICAgIDB4NTM0OSwgMHg1MzRELCAweDUxRDYsIDB4NTM1RSwgMHg1MzY5LCAweDUzNkUsIDB4NTkxOCwgMHg1MzdCLA0KKyAgICAweDUzNzcsIDB4NTM4MiwgMHg1Mzk2LCAweDUzQTAsIDB4NTNBNiwgMHg1M0E1LCAweDUzQUUsIDB4NTNCMCwNCisgICAgMHg1M0I2LCAweDUzQzMsIDB4N0MxMiwgMHg5NkQ5LCAweDUzREYsIDB4NjZGQywgMHg3MUVFLCAweDUzRUUsDQorICAgIDB4NTNFOCwgMHg1M0VELCAweDUzRkEsIDB4NTQwMSwgMHg1NDNELCAweDU0NDAsIDB4NTQyQywgMHg1NDJELA0KKyAgICAweDU0M0MsIDB4NTQyRSwgMHg1NDM2LCAweDU0MjksIDB4NTQxRCwgMHg1NDRFLCAweDU0OEYsIDB4NTQ3NSwNCisgICAgMHg1NDhFLCAweDU0NUYsIDB4NTQ3MSwgMHg1NDc3LCAweDU0NzAsIDB4NTQ5MiwgMHg1NDdCLCAweDU0ODAsDQorICAgIDB4NTQ3NiwgMHg1NDg0LCAweDU0OTAsIDB4NTQ4NiwgMHg1NEM3LCAweDU0QTIsIDB4NTRCOCwgMHg1NEE1LA0KKyAgICAweDU0QUMsIDB4NTRDNCwgMHg1NEM4LCAweDU0QTgsIDB4NTRBQiwgMHg1NEMyLCAweDU0QTQsIDB4NTRCRSwNCisgICAgMHg1NEJDLCAweDU0RDgsIDB4NTRFNSwgMHg1NEU2LCAweDU1MEYsIDB4NTUxNCwgMHg1NEZELCAweDU0RUUsDQorICAgIDB4NTRFRCwgMHg1NEZBLCAweDU0RTIsIDB4NTUzOSwgMHg1NTQwLCAweDU1NjMsIDB4NTU0QywgMHg1NTJFLA0KKyAgICAweDU1NUMsIDB4NTU0NSwgMHg1NTU2LCAweDU1NTcsIDB4NTUzOCwgMHg1NTMzLCAweDU1NUQsIDB4NTU5OSwNCisgICAgMHg1NTgwLCAweDU0QUYsIDB4NTU4QSwgMHg1NTlGLCAweDU1N0IsIDB4NTU3RSwgMHg1NTk4LCAweDU1OUUsDQorICAgIDB4NTVBRSwgMHg1NTdDLCAweDU1ODMsIDB4NTVBOSwgMHg1NTg3LCAweDU1QTgsIDB4NTVEQSwgMHg1NUM1LA0KKyAgICAweDU1REYsIDB4NTVDNCwgMHg1NURDLCAweDU1RTQsIDB4NTVENCwgMHg1NjE0LCAweDU1RjcsIDB4NTYxNiwNCisgICAgMHg1NUZFLCAweDU1RkQsIDB4NTYxQiwgMHg1NUY5LCAweDU2NEUsIDB4NTY1MCwgMHg3MURGLCAweDU2MzQsDQorICAgIDB4NTYzNiwgMHg1NjMyLCAweDU2MzgsIDB4NTY2QiwgMHg1NjY0LCAweDU2MkYsIDB4NTY2QywgMHg1NjZBLA0KKyAgICAweDU2ODYsIDB4NTY4MCwgMHg1NjhBLCAweDU2QTAsIDB4NTY5NCwgMHg1NjhGLCAweDU2QTUsIDB4NTZBRSwNCisgICAgMHg1NkI2LCAweDU2QjQsIDB4NTZDMiwgMHg1NkJDLCAweDU2QzEsIDB4NTZDMywgMHg1NkMwLCAweDU2QzgsDQorICAgIDB4NTZDRSwgMHg1NkQxLCAweDU2RDMsIDB4NTZENywgMHg1NkVFLCAweDU2RjksIDB4NTcwMCwgMHg1NkZGLA0KKyAgICAweDU3MDQsIDB4NTcwOSwgMHg1NzA4LCAweDU3MEIsIDB4NTcwRCwgMHg1NzEzLCAweDU3MTgsIDB4NTcxNiwNCisgICAgMHg1NUM3LCAweDU3MUMsIDB4NTcyNiwgMHg1NzM3LCAweDU3MzgsIDB4NTc0RSwgMHg1NzNCLCAweDU3NDAsDQorICAgIDB4NTc0RiwgMHg1NzY5LCAweDU3QzAsIDB4NTc4OCwgMHg1NzYxLCAweDU3N0YsIDB4NTc4OSwgMHg1NzkzLA0KKyAgICAweDU3QTAsIDB4NTdCMywgMHg1N0E0LCAweDU3QUEsIDB4NTdCMCwgMHg1N0MzLCAweDU3QzYsIDB4NTdENCwNCisgICAgMHg1N0QyLCAweDU3RDMsIDB4NTgwQSwgMHg1N0Q2LCAweDU3RTMsIDB4NTgwQiwgMHg1ODE5LCAweDU4MUQsDQorICAgIDB4NTg3MiwgMHg1ODIxLCAweDU4NjIsIDB4NTg0QiwgMHg1ODcwLCAweDZCQzAsIDB4NTg1MiwgMHg1ODNELA0KKyAgICAweDU4NzksIDB4NTg4NSwgMHg1OEI5LCAweDU4OUYsIDB4NThBQiwgMHg1OEJBLCAweDU4REUsIDB4NThCQiwNCisgICAgMHg1OEI4LCAweDU4QUUsIDB4NThDNSwgMHg1OEQzLCAweDU4RDEsIDB4NThENywgMHg1OEQ5LCAweDU4RDgsDQorICAgIDB4NThFNSwgMHg1OERDLCAweDU4RTQsIDB4NThERiwgMHg1OEVGLCAweDU4RkEsIDB4NThGOSwgMHg1OEZCLA0KKyAgICAweDU4RkMsIDB4NThGRCwgMHg1OTAyLCAweDU5MEEsIDB4NTkxMCwgMHg1OTFCLCAweDY4QTYsIDB4NTkyNSwNCisgICAgMHg1OTJDLCAweDU5MkQsIDB4NTkzMiwgMHg1OTM4LCAweDU5M0UsIDB4N0FEMiwgMHg1OTU1LCAweDU5NTAsDQorICAgIDB4NTk0RSwgMHg1OTVBLCAweDU5NTgsIDB4NTk2MiwgMHg1OTYwLCAweDU5NjcsIDB4NTk2QywgMHg1OTY5LA0KKyAgICAweDU5NzgsIDB4NTk4MSwgMHg1OTlELCAweDRGNUUsIDB4NEZBQiwgMHg1OUEzLCAweDU5QjIsIDB4NTlDNiwNCisgICAgMHg1OUU4LCAweDU5REMsIDB4NTk4RCwgMHg1OUQ5LCAweDU5REEsIDB4NUEyNSwgMHg1QTFGLCAweDVBMTEsDQorICAgIDB4NUExQywgMHg1QTA5LCAweDVBMUEsIDB4NUE0MCwgMHg1QTZDLCAweDVBNDksIDB4NUEzNSwgMHg1QTM2LA0KKyAgICAweDVBNjIsIDB4NUE2QSwgMHg1QTlBLCAweDVBQkMsIDB4NUFCRSwgMHg1QUNCLCAweDVBQzIsIDB4NUFCRCwNCisgICAgMHg1QUUzLCAweDVBRDcsIDB4NUFFNiwgMHg1QUU5LCAweDVBRDYsIDB4NUFGQSwgMHg1QUZCLCAweDVCMEMsDQorICAgIDB4NUIwQiwgMHg1QjE2LCAweDVCMzIsIDB4NUFEMCwgMHg1QjJBLCAweDVCMzYsIDB4NUIzRSwgMHg1QjQzLA0KKyAgICAweDVCNDUsIDB4NUI0MCwgMHg1QjUxLCAweDVCNTUsIDB4NUI1QSwgMHg1QjVCLCAweDVCNjUsIDB4NUI2OSwNCisgICAgMHg1QjcwLCAweDVCNzMsIDB4NUI3NSwgMHg1Qjc4LCAweDY1ODgsIDB4NUI3QSwgMHg1QjgwLCAweDVCODMsDQorICAgIDB4NUJBNiwgMHg1QkI4LCAweDVCQzMsIDB4NUJDNywgMHg1QkM5LCAweDVCRDQsIDB4NUJEMCwgMHg1QkU0LA0KKyAgICAweDVCRTYsIDB4NUJFMiwgMHg1QkRFLCAweDVCRTUsIDB4NUJFQiwgMHg1QkYwLCAweDVCRjYsIDB4NUJGMywNCisgICAgMHg1QzA1LCAweDVDMDcsIDB4NUMwOCwgMHg1QzBELCAweDVDMTMsIDB4NUMyMCwgMHg1QzIyLCAweDVDMjgsDQorICAgIDB4NUMzOCwgMHg1QzM5LCAweDVDNDEsIDB4NUM0NiwgMHg1QzRFLCAweDVDNTMsIDB4NUM1MCwgMHg1QzRGLA0KKyAgICAweDVCNzEsIDB4NUM2QywgMHg1QzZFLCAweDRFNjIsIDB4NUM3NiwgMHg1Qzc5LCAweDVDOEMsIDB4NUM5MSwNCisgICAgMHg1Qzk0LCAweDU5OUIsIDB4NUNBQiwgMHg1Q0JCLCAweDVDQjYsIDB4NUNCQywgMHg1Q0I3LCAweDVDQzUsDQorICAgIDB4NUNCRSwgMHg1Q0M3LCAweDVDRDksIDB4NUNFOSwgMHg1Q0ZELCAweDVDRkEsIDB4NUNFRCwgMHg1RDhDLA0KKyAgICAweDVDRUEsIDB4NUQwQiwgMHg1RDE1LCAweDVEMTcsIDB4NUQ1QywgMHg1RDFGLCAweDVEMUIsIDB4NUQxMSwNCisgICAgMHg1RDE0LCAweDVEMjIsIDB4NUQxQSwgMHg1RDE5LCAweDVEMTgsIDB4NUQ0QywgMHg1RDUyLCAweDVENEUsDQorICAgIDB4NUQ0QiwgMHg1RDZDLCAweDVENzMsIDB4NUQ3NiwgMHg1RDg3LCAweDVEODQsIDB4NUQ4MiwgMHg1REEyLA0KKyAgICAweDVEOUQsIDB4NURBQywgMHg1REFFLCAweDVEQkQsIDB4NUQ5MCwgMHg1REI3LCAweDVEQkMsIDB4NURDOSwNCisgICAgMHg1RENELCAweDVERDMsIDB4NUREMiwgMHg1REQ2LCAweDVEREIsIDB4NURFQiwgMHg1REYyLCAweDVERjUsDQorICAgIDB4NUUwQiwgMHg1RTFBLCAweDVFMTksIDB4NUUxMSwgMHg1RTFCLCAweDVFMzYsIDB4NUUzNywgMHg1RTQ0LA0KKyAgICAweDVFNDMsIDB4NUU0MCwgMHg1RTRFLCAweDVFNTcsIDB4NUU1NCwgMHg1RTVGLCAweDVFNjIsIDB4NUU2NCwNCisgICAgMHg1RTQ3LCAweDVFNzUsIDB4NUU3NiwgMHg1RTdBLCAweDlFQkMsIDB4NUU3RiwgMHg1RUEwLCAweDVFQzEsDQorICAgIDB4NUVDMiwgMHg1RUM4LCAweDVFRDAsIDB4NUVDRiwgMHg1RUQ2LCAweDVFRTMsIDB4NUVERCwgMHg1RURBLA0KKyAgICAweDVFREIsIDB4NUVFMiwgMHg1RUUxLCAweDVFRTgsIDB4NUVFOSwgMHg1RUVDLCAweDVFRjEsIDB4NUVGMywNCisgICAgMHg1RUYwLCAweDVFRjQsIDB4NUVGOCwgMHg1RUZFLCAweDVGMDMsIDB4NUYwOSwgMHg1RjVELCAweDVGNUMsDQorICAgIDB4NUYwQiwgMHg1RjExLCAweDVGMTYsIDB4NUYyOSwgMHg1RjJELCAweDVGMzgsIDB4NUY0MSwgMHg1RjQ4LA0KKyAgICAweDVGNEMsIDB4NUY0RSwgMHg1RjJGLCAweDVGNTEsIDB4NUY1NiwgMHg1RjU3LCAweDVGNTksIDB4NUY2MSwNCisgICAgMHg1RjZELCAweDVGNzMsIDB4NUY3NywgMHg1RjgzLCAweDVGODIsIDB4NUY3RiwgMHg1RjhBLCAweDVGODgsDQorICAgIDB4NUY5MSwgMHg1Rjg3LCAweDVGOUUsIDB4NUY5OSwgMHg1Rjk4LCAweDVGQTAsIDB4NUZBOCwgMHg1RkFELA0KKyAgICAweDVGQkMsIDB4NUZENiwgMHg1RkZCLCAweDVGRTQsIDB4NUZGOCwgMHg1RkYxLCAweDVGREQsIDB4NjBCMywNCisgICAgMHg1RkZGLCAweDYwMjEsIDB4NjA2MCwgMHg2MDE5LCAweDYwMTAsIDB4NjAyOSwgMHg2MDBFLCAweDYwMzEsDQorICAgIDB4NjAxQiwgMHg2MDE1LCAweDYwMkIsIDB4NjAyNiwgMHg2MDBGLCAweDYwM0EsIDB4NjA1QSwgMHg2MDQxLA0KKyAgICAweDYwNkEsIDB4NjA3NywgMHg2MDVGLCAweDYwNEEsIDB4NjA0NiwgMHg2MDRELCAweDYwNjMsIDB4NjA0MywNCisgICAgMHg2MDY0LCAweDYwNDIsIDB4NjA2QywgMHg2MDZCLCAweDYwNTksIDB4NjA4MSwgMHg2MDhELCAweDYwRTcsDQorICAgIDB4NjA4MywgMHg2MDlBLCAweDYwODQsIDB4NjA5QiwgMHg2MDk2LCAweDYwOTcsIDB4NjA5MiwgMHg2MEE3LA0KKyAgICAweDYwOEIsIDB4NjBFMSwgMHg2MEI4LCAweDYwRTAsIDB4NjBEMywgMHg2MEI0LCAweDVGRjAsIDB4NjBCRCwNCisgICAgMHg2MEM2LCAweDYwQjUsIDB4NjBEOCwgMHg2MTRELCAweDYxMTUsIDB4NjEwNiwgMHg2MEY2LCAweDYwRjcsDQorICAgIDB4NjEwMCwgMHg2MEY0LCAweDYwRkEsIDB4NjEwMywgMHg2MTIxLCAweDYwRkIsIDB4NjBGMSwgMHg2MTBELA0KKyAgICAweDYxMEUsIDB4NjE0NywgMHg2MTNFLCAweDYxMjgsIDB4NjEyNywgMHg2MTRBLCAweDYxM0YsIDB4NjEzQywNCisgICAgMHg2MTJDLCAweDYxMzQsIDB4NjEzRCwgMHg2MTQyLCAweDYxNDQsIDB4NjE3MywgMHg2MTc3LCAweDYxNTgsDQorICAgIDB4NjE1OSwgMHg2MTVBLCAweDYxNkIsIDB4NjE3NCwgMHg2MTZGLCAweDYxNjUsIDB4NjE3MSwgMHg2MTVGLA0KKyAgICAweDYxNUQsIDB4NjE1MywgMHg2MTc1LCAweDYxOTksIDB4NjE5NiwgMHg2MTg3LCAweDYxQUMsIDB4NjE5NCwNCisgICAgMHg2MTlBLCAweDYxOEEsIDB4NjE5MSwgMHg2MUFCLCAweDYxQUUsIDB4NjFDQywgMHg2MUNBLCAweDYxQzksDQorICAgIDB4NjFGNywgMHg2MUM4LCAweDYxQzMsIDB4NjFDNiwgMHg2MUJBLCAweDYxQ0IsIDB4N0Y3OSwgMHg2MUNELA0KKyAgICAweDYxRTYsIDB4NjFFMywgMHg2MUY2LCAweDYxRkEsIDB4NjFGNCwgMHg2MUZGLCAweDYxRkQsIDB4NjFGQywNCisgICAgMHg2MUZFLCAweDYyMDAsIDB4NjIwOCwgMHg2MjA5LCAweDYyMEQsIDB4NjIwQywgMHg2MjE0LCAweDYyMUIsDQorICAgIDB4NjIxRSwgMHg2MjIxLCAweDYyMkEsIDB4NjIyRSwgMHg2MjMwLCAweDYyMzIsIDB4NjIzMywgMHg2MjQxLA0KKyAgICAweDYyNEUsIDB4NjI1RSwgMHg2MjYzLCAweDYyNUIsIDB4NjI2MCwgMHg2MjY4LCAweDYyN0MsIDB4NjI4MiwNCisgICAgMHg2Mjg5LCAweDYyN0UsIDB4NjI5MiwgMHg2MjkzLCAweDYyOTYsIDB4NjJENCwgMHg2MjgzLCAweDYyOTQsDQorICAgIDB4NjJENywgMHg2MkQxLCAweDYyQkIsIDB4NjJDRiwgMHg2MkZGLCAweDYyQzYsIDB4NjRENCwgMHg2MkM4LA0KKyAgICAweDYyREMsIDB4NjJDQywgMHg2MkNBLCAweDYyQzIsIDB4NjJDNywgMHg2MjlCLCAweDYyQzksIDB4NjMwQywNCisgICAgMHg2MkVFLCAweDYyRjEsIDB4NjMyNywgMHg2MzAyLCAweDYzMDgsIDB4NjJFRiwgMHg2MkY1LCAweDYzNTAsDQorICAgIDB4NjMzRSwgMHg2MzRELCAweDY0MUMsIDB4NjM0RiwgMHg2Mzk2LCAweDYzOEUsIDB4NjM4MCwgMHg2M0FCLA0KKyAgICAweDYzNzYsIDB4NjNBMywgMHg2MzhGLCAweDYzODksIDB4NjM5RiwgMHg2M0I1LCAweDYzNkIsIDB4NjM2OSwNCisgICAgMHg2M0JFLCAweDYzRTksIDB4NjNDMCwgMHg2M0M2LCAweDYzRTMsIDB4NjNDOSwgMHg2M0QyLCAweDYzRjYsDQorICAgIDB4NjNDNCwgMHg2NDE2LCAweDY0MzQsIDB4NjQwNiwgMHg2NDEzLCAweDY0MjYsIDB4NjQzNiwgMHg2NTFELA0KKyAgICAweDY0MTcsIDB4NjQyOCwgMHg2NDBGLCAweDY0NjcsIDB4NjQ2RiwgMHg2NDc2LCAweDY0NEUsIDB4NjUyQSwNCisgICAgMHg2NDk1LCAweDY0OTMsIDB4NjRBNSwgMHg2NEE5LCAweDY0ODgsIDB4NjRCQywgMHg2NERBLCAweDY0RDIsDQorICAgIDB4NjRDNSwgMHg2NEM3LCAweDY0QkIsIDB4NjREOCwgMHg2NEMyLCAweDY0RjEsIDB4NjRFNywgMHg4MjA5LA0KKyAgICAweDY0RTAsIDB4NjRFMSwgMHg2MkFDLCAweDY0RTMsIDB4NjRFRiwgMHg2NTJDLCAweDY0RjYsIDB4NjRGNCwNCisgICAgMHg2NEYyLCAweDY0RkEsIDB4NjUwMCwgMHg2NEZELCAweDY1MTgsIDB4NjUxQywgMHg2NTA1LCAweDY1MjQsDQorICAgIDB4NjUyMywgMHg2NTJCLCAweDY1MzQsIDB4NjUzNSwgMHg2NTM3LCAweDY1MzYsIDB4NjUzOCwgMHg3NTRCLA0KKyAgICAweDY1NDgsIDB4NjU1NiwgMHg2NTU1LCAweDY1NEQsIDB4NjU1OCwgMHg2NTVFLCAweDY1NUQsIDB4NjU3MiwNCisgICAgMHg2NTc4LCAweDY1ODIsIDB4NjU4MywgMHg4QjhBLCAweDY1OUIsIDB4NjU5RiwgMHg2NUFCLCAweDY1QjcsDQorICAgIDB4NjVDMywgMHg2NUM2LCAweDY1QzEsIDB4NjVDNCwgMHg2NUNDLCAweDY1RDIsIDB4NjVEQiwgMHg2NUQ5LA0KKyAgICAweDY1RTAsIDB4NjVFMSwgMHg2NUYxLCAweDY3NzIsIDB4NjYwQSwgMHg2NjAzLCAweDY1RkIsIDB4Njc3MywNCisgICAgMHg2NjM1LCAweDY2MzYsIDB4NjYzNCwgMHg2NjFDLCAweDY2NEYsIDB4NjY0NCwgMHg2NjQ5LCAweDY2NDEsDQorICAgIDB4NjY1RSwgMHg2NjVELCAweDY2NjQsIDB4NjY2NywgMHg2NjY4LCAweDY2NUYsIDB4NjY2MiwgMHg2NjcwLA0KKyAgICAweDY2ODMsIDB4NjY4OCwgMHg2NjhFLCAweDY2ODksIDB4NjY4NCwgMHg2Njk4LCAweDY2OUQsIDB4NjZDMSwNCisgICAgMHg2NkI5LCAweDY2QzksIDB4NjZCRSwgMHg2NkJDLCAweDY2QzQsIDB4NjZCOCwgMHg2NkQ2LCAweDY2REEsDQorICAgIDB4NjZFMCwgMHg2NjNGLCAweDY2RTYsIDB4NjZFOSwgMHg2NkYwLCAweDY2RjUsIDB4NjZGNywgMHg2NzBGLA0KKyAgICAweDY3MTYsIDB4NjcxRSwgMHg2NzI2LCAweDY3MjcsIDB4OTczOCwgMHg2NzJFLCAweDY3M0YsIDB4NjczNiwNCisgICAgMHg2NzQxLCAweDY3MzgsIDB4NjczNywgMHg2NzQ2LCAweDY3NUUsIDB4Njc2MCwgMHg2NzU5LCAweDY3NjMsDQorICAgIDB4Njc2NCwgMHg2Nzg5LCAweDY3NzAsIDB4NjdBOSwgMHg2NzdDLCAweDY3NkEsIDB4Njc4QywgMHg2NzhCLA0KKyAgICAweDY3QTYsIDB4NjdBMSwgMHg2Nzg1LCAweDY3QjcsIDB4NjdFRiwgMHg2N0I0LCAweDY3RUMsIDB4NjdCMywNCisgICAgMHg2N0U5LCAweDY3QjgsIDB4NjdFNCwgMHg2N0RFLCAweDY3REQsIDB4NjdFMiwgMHg2N0VFLCAweDY3QjksDQorICAgIDB4NjdDRSwgMHg2N0M2LCAweDY3RTcsIDB4NkE5QywgMHg2ODFFLCAweDY4NDYsIDB4NjgyOSwgMHg2ODQwLA0KKyAgICAweDY4NEQsIDB4NjgzMiwgMHg2ODRFLCAweDY4QjMsIDB4NjgyQiwgMHg2ODU5LCAweDY4NjMsIDB4Njg3NywNCisgICAgMHg2ODdGLCAweDY4OUYsIDB4Njg4RiwgMHg2OEFELCAweDY4OTQsIDB4Njg5RCwgMHg2ODlCLCAweDY4ODMsDQorICAgIDB4NkFBRSwgMHg2OEI5LCAweDY4NzQsIDB4NjhCNSwgMHg2OEEwLCAweDY4QkEsIDB4NjkwRiwgMHg2ODhELA0KKyAgICAweDY4N0UsIDB4NjkwMSwgMHg2OENBLCAweDY5MDgsIDB4NjhEOCwgMHg2OTIyLCAweDY5MjYsIDB4NjhFMSwNCisgICAgMHg2OTBDLCAweDY4Q0QsIDB4NjhENCwgMHg2OEU3LCAweDY4RDUsIDB4NjkzNiwgMHg2OTEyLCAweDY5MDQsDQorICAgIDB4NjhENywgMHg2OEUzLCAweDY5MjUsIDB4NjhGOSwgMHg2OEUwLCAweDY4RUYsIDB4NjkyOCwgMHg2OTJBLA0KKyAgICAweDY5MUEsIDB4NjkyMywgMHg2OTIxLCAweDY4QzYsIDB4Njk3OSwgMHg2OTc3LCAweDY5NUMsIDB4Njk3OCwNCisgICAgMHg2OTZCLCAweDY5NTQsIDB4Njk3RSwgMHg2OTZFLCAweDY5MzksIDB4Njk3NCwgMHg2OTNELCAweDY5NTksDQorICAgIDB4NjkzMCwgMHg2OTYxLCAweDY5NUUsIDB4Njk1RCwgMHg2OTgxLCAweDY5NkEsIDB4NjlCMiwgMHg2OUFFLA0KKyAgICAweDY5RDAsIDB4NjlCRiwgMHg2OUMxLCAweDY5RDMsIDB4NjlCRSwgMHg2OUNFLCAweDVCRTgsIDB4NjlDQSwNCisgICAgMHg2OURELCAweDY5QkIsIDB4NjlDMywgMHg2OUE3LCAweDZBMkUsIDB4Njk5MSwgMHg2OUEwLCAweDY5OUMsDQorICAgIDB4Njk5NSwgMHg2OUI0LCAweDY5REUsIDB4NjlFOCwgMHg2QTAyLCAweDZBMUIsIDB4NjlGRiwgMHg2QjBBLA0KKyAgICAweDY5RjksIDB4NjlGMiwgMHg2OUU3LCAweDZBMDUsIDB4NjlCMSwgMHg2QTFFLCAweDY5RUQsIDB4NkExNCwNCisgICAgMHg2OUVCLCAweDZBMEEsIDB4NkExMiwgMHg2QUMxLCAweDZBMjMsIDB4NkExMywgMHg2QTQ0LCAweDZBMEMsDQorICAgIDB4NkE3MiwgMHg2QTM2LCAweDZBNzgsIDB4NkE0NywgMHg2QTYyLCAweDZBNTksIDB4NkE2NiwgMHg2QTQ4LA0KKyAgICAweDZBMzgsIDB4NkEyMiwgMHg2QTkwLCAweDZBOEQsIDB4NkFBMCwgMHg2QTg0LCAweDZBQTIsIDB4NkFBMywNCisgICAgMHg2QTk3LCAweDg2MTcsIDB4NkFCQiwgMHg2QUMzLCAweDZBQzIsIDB4NkFCOCwgMHg2QUIzLCAweDZBQUMsDQorICAgIDB4NkFERSwgMHg2QUQxLCAweDZBREYsIDB4NkFBQSwgMHg2QURBLCAweDZBRUEsIDB4NkFGQiwgMHg2QjA1LA0KKyAgICAweDg2MTYsIDB4NkFGQSwgMHg2QjEyLCAweDZCMTYsIDB4OUIzMSwgMHg2QjFGLCAweDZCMzgsIDB4NkIzNywNCisgICAgMHg3NkRDLCAweDZCMzksIDB4OThFRSwgMHg2QjQ3LCAweDZCNDMsIDB4NkI0OSwgMHg2QjUwLCAweDZCNTksDQorICAgIDB4NkI1NCwgMHg2QjVCLCAweDZCNUYsIDB4NkI2MSwgMHg2Qjc4LCAweDZCNzksIDB4NkI3RiwgMHg2QjgwLA0KKyAgICAweDZCODQsIDB4NkI4MywgMHg2QjhELCAweDZCOTgsIDB4NkI5NSwgMHg2QjlFLCAweDZCQTQsIDB4NkJBQSwNCisgICAgMHg2QkFCLCAweDZCQUYsIDB4NkJCMiwgMHg2QkIxLCAweDZCQjMsIDB4NkJCNywgMHg2QkJDLCAweDZCQzYsDQorICAgIDB4NkJDQiwgMHg2QkQzLCAweDZCREYsIDB4NkJFQywgMHg2QkVCLCAweDZCRjMsIDB4NkJFRiwgMHg5RUJFLA0KKyAgICAweDZDMDgsIDB4NkMxMywgMHg2QzE0LCAweDZDMUIsIDB4NkMyNCwgMHg2QzIzLCAweDZDNUUsIDB4NkM1NSwNCisgICAgMHg2QzYyLCAweDZDNkEsIDB4NkM4MiwgMHg2QzhELCAweDZDOUEsIDB4NkM4MSwgMHg2QzlCLCAweDZDN0UsDQorICAgIDB4NkM2OCwgMHg2QzczLCAweDZDOTIsIDB4NkM5MCwgMHg2Q0M0LCAweDZDRjEsIDB4NkNEMywgMHg2Q0JELA0KKyAgICAweDZDRDcsIDB4NkNDNSwgMHg2Q0RELCAweDZDQUUsIDB4NkNCMSwgMHg2Q0JFLCAweDZDQkEsIDB4NkNEQiwNCisgICAgMHg2Q0VGLCAweDZDRDksIDB4NkNFQSwgMHg2RDFGLCAweDg4NEQsIDB4NkQzNiwgMHg2RDJCLCAweDZEM0QsDQorICAgIDB4NkQzOCwgMHg2RDE5LCAweDZEMzUsIDB4NkQzMywgMHg2RDEyLCAweDZEMEMsIDB4NkQ2MywgMHg2RDkzLA0KKyAgICAweDZENjQsIDB4NkQ1QSwgMHg2RDc5LCAweDZENTksIDB4NkQ4RSwgMHg2RDk1LCAweDZGRTQsIDB4NkQ4NSwNCisgICAgMHg2REY5LCAweDZFMTUsIDB4NkUwQSwgMHg2REI1LCAweDZEQzcsIDB4NkRFNiwgMHg2REI4LCAweDZEQzYsDQorICAgIDB4NkRFQywgMHg2RERFLCAweDZEQ0MsIDB4NkRFOCwgMHg2REQyLCAweDZEQzUsIDB4NkRGQSwgMHg2REQ5LA0KKyAgICAweDZERTQsIDB4NkRENSwgMHg2REVBLCAweDZERUUsIDB4NkUyRCwgMHg2RTZFLCAweDZFMkUsIDB4NkUxOSwNCisgICAgMHg2RTcyLCAweDZFNUYsIDB4NkUzRSwgMHg2RTIzLCAweDZFNkIsIDB4NkUyQiwgMHg2RTc2LCAweDZFNEQsDQorICAgIDB4NkUxRiwgMHg2RTQzLCAweDZFM0EsIDB4NkU0RSwgMHg2RTI0LCAweDZFRkYsIDB4NkUxRCwgMHg2RTM4LA0KKyAgICAweDZFODIsIDB4NkVBQSwgMHg2RTk4LCAweDZFQzksIDB4NkVCNywgMHg2RUQzLCAweDZFQkQsIDB4NkVBRiwNCisgICAgMHg2RUM0LCAweDZFQjIsIDB4NkVENCwgMHg2RUQ1LCAweDZFOEYsIDB4NkVBNSwgMHg2RUMyLCAweDZFOUYsDQorICAgIDB4NkY0MSwgMHg2RjExLCAweDcwNEMsIDB4NkVFQywgMHg2RUY4LCAweDZFRkUsIDB4NkYzRiwgMHg2RUYyLA0KKyAgICAweDZGMzEsIDB4NkVFRiwgMHg2RjMyLCAweDZFQ0MsIDB4NkYzRSwgMHg2RjEzLCAweDZFRjcsIDB4NkY4NiwNCisgICAgMHg2RjdBLCAweDZGNzgsIDB4NkY4MSwgMHg2RjgwLCAweDZGNkYsIDB4NkY1QiwgMHg2RkYzLCAweDZGNkQsDQorICAgIDB4NkY4MiwgMHg2RjdDLCAweDZGNTgsIDB4NkY4RSwgMHg2RjkxLCAweDZGQzIsIDB4NkY2NiwgMHg2RkIzLA0KKyAgICAweDZGQTMsIDB4NkZBMSwgMHg2RkE0LCAweDZGQjksIDB4NkZDNiwgMHg2RkFBLCAweDZGREYsIDB4NkZENSwNCisgICAgMHg2RkVDLCAweDZGRDQsIDB4NkZEOCwgMHg2RkYxLCAweDZGRUUsIDB4NkZEQiwgMHg3MDA5LCAweDcwMEIsDQorICAgIDB4NkZGQSwgMHg3MDExLCAweDcwMDEsIDB4NzAwRiwgMHg2RkZFLCAweDcwMUIsIDB4NzAxQSwgMHg2Rjc0LA0KKyAgICAweDcwMUQsIDB4NzAxOCwgMHg3MDFGLCAweDcwMzAsIDB4NzAzRSwgMHg3MDMyLCAweDcwNTEsIDB4NzA2MywNCisgICAgMHg3MDk5LCAweDcwOTIsIDB4NzBBRiwgMHg3MEYxLCAweDcwQUMsIDB4NzBCOCwgMHg3MEIzLCAweDcwQUUsDQorICAgIDB4NzBERiwgMHg3MENCLCAweDcwREQsIDB4NzBEOSwgMHg3MTA5LCAweDcwRkQsIDB4NzExQywgMHg3MTE5LA0KKyAgICAweDcxNjUsIDB4NzE1NSwgMHg3MTg4LCAweDcxNjYsIDB4NzE2MiwgMHg3MTRDLCAweDcxNTYsIDB4NzE2QywNCisgICAgMHg3MThGLCAweDcxRkIsIDB4NzE4NCwgMHg3MTk1LCAweDcxQTgsIDB4NzFBQywgMHg3MUQ3LCAweDcxQjksDQorICAgIDB4NzFCRSwgMHg3MUQyLCAweDcxQzksIDB4NzFENCwgMHg3MUNFLCAweDcxRTAsIDB4NzFFQywgMHg3MUU3LA0KKyAgICAweDcxRjUsIDB4NzFGQywgMHg3MUY5LCAweDcxRkYsIDB4NzIwRCwgMHg3MjEwLCAweDcyMUIsIDB4NzIyOCwNCisgICAgMHg3MjJELCAweDcyMkMsIDB4NzIzMCwgMHg3MjMyLCAweDcyM0IsIDB4NzIzQywgMHg3MjNGLCAweDcyNDAsDQorICAgIDB4NzI0NiwgMHg3MjRCLCAweDcyNTgsIDB4NzI3NCwgMHg3MjdFLCAweDcyODIsIDB4NzI4MSwgMHg3Mjg3LA0KKyAgICAweDcyOTIsIDB4NzI5NiwgMHg3MkEyLCAweDcyQTcsIDB4NzJCOSwgMHg3MkIyLCAweDcyQzMsIDB4NzJDNiwNCisgICAgMHg3MkM0LCAweDcyQ0UsIDB4NzJEMiwgMHg3MkUyLCAweDcyRTAsIDB4NzJFMSwgMHg3MkY5LCAweDcyRjcsDQorICAgIDB4NTAwRiwgMHg3MzE3LCAweDczMEEsIDB4NzMxQywgMHg3MzE2LCAweDczMUQsIDB4NzMzNCwgMHg3MzJGLA0KKyAgICAweDczMjksIDB4NzMyNSwgMHg3MzNFLCAweDczNEUsIDB4NzM0RiwgMHg5RUQ4LCAweDczNTcsIDB4NzM2QSwNCisgICAgMHg3MzY4LCAweDczNzAsIDB4NzM3OCwgMHg3Mzc1LCAweDczN0IsIDB4NzM3QSwgMHg3M0M4LCAweDczQjMsDQorICAgIDB4NzNDRSwgMHg3M0JCLCAweDczQzAsIDB4NzNFNSwgMHg3M0VFLCAweDczREUsIDB4NzRBMiwgMHg3NDA1LA0KKyAgICAweDc0NkYsIDB4NzQyNSwgMHg3M0Y4LCAweDc0MzIsIDB4NzQzQSwgMHg3NDU1LCAweDc0M0YsIDB4NzQ1RiwNCisgICAgMHg3NDU5LCAweDc0NDEsIDB4NzQ1QywgMHg3NDY5LCAweDc0NzAsIDB4NzQ2MywgMHg3NDZBLCAweDc0NzYsDQorICAgIDB4NzQ3RSwgMHg3NDhCLCAweDc0OUUsIDB4NzRBNywgMHg3NENBLCAweDc0Q0YsIDB4NzRENCwgMHg3M0YxLA0KKyAgICAweDc0RTAsIDB4NzRFMywgMHg3NEU3LCAweDc0RTksIDB4NzRFRSwgMHg3NEYyLCAweDc0RjAsIDB4NzRGMSwNCisgICAgMHg3NEY4LCAweDc0RjcsIDB4NzUwNCwgMHg3NTAzLCAweDc1MDUsIDB4NzUwQywgMHg3NTBFLCAweDc1MEQsDQorICAgIDB4NzUxNSwgMHg3NTEzLCAweDc1MUUsIDB4NzUyNiwgMHg3NTJDLCAweDc1M0MsIDB4NzU0NCwgMHg3NTRELA0KKyAgICAweDc1NEEsIDB4NzU0OSwgMHg3NTVCLCAweDc1NDYsIDB4NzU1QSwgMHg3NTY5LCAweDc1NjQsIDB4NzU2NywNCisgICAgMHg3NTZCLCAweDc1NkQsIDB4NzU3OCwgMHg3NTc2LCAweDc1ODYsIDB4NzU4NywgMHg3NTc0LCAweDc1OEEsDQorICAgIDB4NzU4OSwgMHg3NTgyLCAweDc1OTQsIDB4NzU5QSwgMHg3NTlELCAweDc1QTUsIDB4NzVBMywgMHg3NUMyLA0KKyAgICAweDc1QjMsIDB4NzVDMywgMHg3NUI1LCAweDc1QkQsIDB4NzVCOCwgMHg3NUJDLCAweDc1QjEsIDB4NzVDRCwNCisgICAgMHg3NUNBLCAweDc1RDIsIDB4NzVEOSwgMHg3NUUzLCAweDc1REUsIDB4NzVGRSwgMHg3NUZGLCAweDc1RkMsDQorICAgIDB4NzYwMSwgMHg3NUYwLCAweDc1RkEsIDB4NzVGMiwgMHg3NUYzLCAweDc2MEIsIDB4NzYwRCwgMHg3NjA5LA0KKyAgICAweDc2MUYsIDB4NzYyNywgMHg3NjIwLCAweDc2MjEsIDB4NzYyMiwgMHg3NjI0LCAweDc2MzQsIDB4NzYzMCwNCisgICAgMHg3NjNCLCAweDc2NDcsIDB4NzY0OCwgMHg3NjQ2LCAweDc2NUMsIDB4NzY1OCwgMHg3NjYxLCAweDc2NjIsDQorICAgIDB4NzY2OCwgMHg3NjY5LCAweDc2NkEsIDB4NzY2NywgMHg3NjZDLCAweDc2NzAsIDB4NzY3MiwgMHg3Njc2LA0KKyAgICAweDc2NzgsIDB4NzY3QywgMHg3NjgwLCAweDc2ODMsIDB4NzY4OCwgMHg3NjhCLCAweDc2OEUsIDB4NzY5NiwNCisgICAgMHg3NjkzLCAweDc2OTksIDB4NzY5QSwgMHg3NkIwLCAweDc2QjQsIDB4NzZCOCwgMHg3NkI5LCAweDc2QkEsDQorICAgIDB4NzZDMiwgMHg3NkNELCAweDc2RDYsIDB4NzZEMiwgMHg3NkRFLCAweDc2RTEsIDB4NzZFNSwgMHg3NkU3LA0KKyAgICAweDc2RUEsIDB4ODYyRiwgMHg3NkZCLCAweDc3MDgsIDB4NzcwNywgMHg3NzA0LCAweDc3MjksIDB4NzcyNCwNCisgICAgMHg3NzFFLCAweDc3MjUsIDB4NzcyNiwgMHg3NzFCLCAweDc3MzcsIDB4NzczOCwgMHg3NzQ3LCAweDc3NUEsDQorICAgIDB4Nzc2OCwgMHg3NzZCLCAweDc3NUIsIDB4Nzc2NSwgMHg3NzdGLCAweDc3N0UsIDB4Nzc3OSwgMHg3NzhFLA0KKyAgICAweDc3OEIsIDB4Nzc5MSwgMHg3N0EwLCAweDc3OUUsIDB4NzdCMCwgMHg3N0I2LCAweDc3QjksIDB4NzdCRiwNCisgICAgMHg3N0JDLCAweDc3QkQsIDB4NzdCQiwgMHg3N0M3LCAweDc3Q0QsIDB4NzdENywgMHg3N0RBLCAweDc3REMsDQorICAgIDB4NzdFMywgMHg3N0VFLCAweDc3RkMsIDB4NzgwQywgMHg3ODEyLCAweDc5MjYsIDB4NzgyMCwgMHg3OTJBLA0KKyAgICAweDc4NDUsIDB4Nzg4RSwgMHg3ODc0LCAweDc4ODYsIDB4Nzg3QywgMHg3ODlBLCAweDc4OEMsIDB4NzhBMywNCisgICAgMHg3OEI1LCAweDc4QUEsIDB4NzhBRiwgMHg3OEQxLCAweDc4QzYsIDB4NzhDQiwgMHg3OEQ0LCAweDc4QkUsDQorICAgIDB4NzhCQywgMHg3OEM1LCAweDc4Q0EsIDB4NzhFQywgMHg3OEU3LCAweDc4REEsIDB4NzhGRCwgMHg3OEY0LA0KKyAgICAweDc5MDcsIDB4NzkxMiwgMHg3OTExLCAweDc5MTksIDB4NzkyQywgMHg3OTJCLCAweDc5NDAsIDB4Nzk2MCwNCisgICAgMHg3OTU3LCAweDc5NUYsIDB4Nzk1QSwgMHg3OTU1LCAweDc5NTMsIDB4Nzk3QSwgMHg3OTdGLCAweDc5OEEsDQorICAgIDB4Nzk5RCwgMHg3OUE3LCAweDlGNEIsIDB4NzlBQSwgMHg3OUFFLCAweDc5QjMsIDB4NzlCOSwgMHg3OUJBLA0KKyAgICAweDc5QzksIDB4NzlENSwgMHg3OUU3LCAweDc5RUMsIDB4NzlFMSwgMHg3OUUzLCAweDdBMDgsIDB4N0EwRCwNCisgICAgMHg3QTE4LCAweDdBMTksIDB4N0EyMCwgMHg3QTFGLCAweDc5ODAsIDB4N0EzMSwgMHg3QTNCLCAweDdBM0UsDQorICAgIDB4N0EzNywgMHg3QTQzLCAweDdBNTcsIDB4N0E0OSwgMHg3QTYxLCAweDdBNjIsIDB4N0E2OSwgMHg5RjlELA0KKyAgICAweDdBNzAsIDB4N0E3OSwgMHg3QTdELCAweDdBODgsIDB4N0E5NywgMHg3QTk1LCAweDdBOTgsIDB4N0E5NiwNCisgICAgMHg3QUE5LCAweDdBQzgsIDB4N0FCMCwgMHg3QUI2LCAweDdBQzUsIDB4N0FDNCwgMHg3QUJGLCAweDkwODMsDQorICAgIDB4N0FDNywgMHg3QUNBLCAweDdBQ0QsIDB4N0FDRiwgMHg3QUQ1LCAweDdBRDMsIDB4N0FEOSwgMHg3QURBLA0KKyAgICAweDdBREQsIDB4N0FFMSwgMHg3QUUyLCAweDdBRTYsIDB4N0FFRCwgMHg3QUYwLCAweDdCMDIsIDB4N0IwRiwNCisgICAgMHg3QjBBLCAweDdCMDYsIDB4N0IzMywgMHg3QjE4LCAweDdCMTksIDB4N0IxRSwgMHg3QjM1LCAweDdCMjgsDQorICAgIDB4N0IzNiwgMHg3QjUwLCAweDdCN0EsIDB4N0IwNCwgMHg3QjRELCAweDdCMEIsIDB4N0I0QywgMHg3QjQ1LA0KKyAgICAweDdCNzUsIDB4N0I2NSwgMHg3Qjc0LCAweDdCNjcsIDB4N0I3MCwgMHg3QjcxLCAweDdCNkMsIDB4N0I2RSwNCisgICAgMHg3QjlELCAweDdCOTgsIDB4N0I5RiwgMHg3QjhELCAweDdCOUMsIDB4N0I5QSwgMHg3QjhCLCAweDdCOTIsDQorICAgIDB4N0I4RiwgMHg3QjVELCAweDdCOTksIDB4N0JDQiwgMHg3QkMxLCAweDdCQ0MsIDB4N0JDRiwgMHg3QkI0LA0KKyAgICAweDdCQzYsIDB4N0JERCwgMHg3QkU5LCAweDdDMTEsIDB4N0MxNCwgMHg3QkU2LCAweDdCRTUsIDB4N0M2MCwNCisgICAgMHg3QzAwLCAweDdDMDcsIDB4N0MxMywgMHg3QkYzLCAweDdCRjcsIDB4N0MxNywgMHg3QzBELCAweDdCRjYsDQorICAgIDB4N0MyMywgMHg3QzI3LCAweDdDMkEsIDB4N0MxRiwgMHg3QzM3LCAweDdDMkIsIDB4N0MzRCwgMHg3QzRDLA0KKyAgICAweDdDNDMsIDB4N0M1NCwgMHg3QzRGLCAweDdDNDAsIDB4N0M1MCwgMHg3QzU4LCAweDdDNUYsIDB4N0M2NCwNCisgICAgMHg3QzU2LCAweDdDNjUsIDB4N0M2QywgMHg3Qzc1LCAweDdDODMsIDB4N0M5MCwgMHg3Q0E0LCAweDdDQUQsDQorICAgIDB4N0NBMiwgMHg3Q0FCLCAweDdDQTEsIDB4N0NBOCwgMHg3Q0IzLCAweDdDQjIsIDB4N0NCMSwgMHg3Q0FFLA0KKyAgICAweDdDQjksIDB4N0NCRCwgMHg3Q0MwLCAweDdDQzUsIDB4N0NDMiwgMHg3Q0Q4LCAweDdDRDIsIDB4N0NEQywNCisgICAgMHg3Q0UyLCAweDlCM0IsIDB4N0NFRiwgMHg3Q0YyLCAweDdDRjQsIDB4N0NGNiwgMHg3Q0ZBLCAweDdEMDYsDQorICAgIDB4N0QwMiwgMHg3RDFDLCAweDdEMTUsIDB4N0QwQSwgMHg3RDQ1LCAweDdENEIsIDB4N0QyRSwgMHg3RDMyLA0KKyAgICAweDdEM0YsIDB4N0QzNSwgMHg3RDQ2LCAweDdENzMsIDB4N0Q1NiwgMHg3RDRFLCAweDdENzIsIDB4N0Q2OCwNCisgICAgMHg3RDZFLCAweDdENEYsIDB4N0Q2MywgMHg3RDkzLCAweDdEODksIDB4N0Q1QiwgMHg3RDhGLCAweDdEN0QsDQorICAgIDB4N0Q5QiwgMHg3REJBLCAweDdEQUUsIDB4N0RBMywgMHg3REI1LCAweDdEQzcsIDB4N0RCRCwgMHg3REFCLA0KKyAgICAweDdFM0QsIDB4N0RBMiwgMHg3REFGLCAweDdEREMsIDB4N0RCOCwgMHg3RDlGLCAweDdEQjAsIDB4N0REOCwNCisgICAgMHg3RERELCAweDdERTQsIDB4N0RERSwgMHg3REZCLCAweDdERjIsIDB4N0RFMSwgMHg3RTA1LCAweDdFMEEsDQorICAgIDB4N0UyMywgMHg3RTIxLCAweDdFMTIsIDB4N0UzMSwgMHg3RTFGLCAweDdFMDksIDB4N0UwQiwgMHg3RTIyLA0KKyAgICAweDdFNDYsIDB4N0U2NiwgMHg3RTNCLCAweDdFMzUsIDB4N0UzOSwgMHg3RTQzLCAweDdFMzcsIDB4N0UzMiwNCisgICAgMHg3RTNBLCAweDdFNjcsIDB4N0U1RCwgMHg3RTU2LCAweDdFNUUsIDB4N0U1OSwgMHg3RTVBLCAweDdFNzksDQorICAgIDB4N0U2QSwgMHg3RTY5LCAweDdFN0MsIDB4N0U3QiwgMHg3RTgzLCAweDdERDUsIDB4N0U3RCwgMHg4RkFFLA0KKyAgICAweDdFN0YsIDB4N0U4OCwgMHg3RTg5LCAweDdFOEMsIDB4N0U5MiwgMHg3RTkwLCAweDdFOTMsIDB4N0U5NCwNCisgICAgMHg3RTk2LCAweDdFOEUsIDB4N0U5QiwgMHg3RTlDLCAweDdGMzgsIDB4N0YzQSwgMHg3RjQ1LCAweDdGNEMsDQorICAgIDB4N0Y0RCwgMHg3RjRFLCAweDdGNTAsIDB4N0Y1MSwgMHg3RjU1LCAweDdGNTQsIDB4N0Y1OCwgMHg3RjVGLA0KKyAgICAweDdGNjAsIDB4N0Y2OCwgMHg3RjY5LCAweDdGNjcsIDB4N0Y3OCwgMHg3RjgyLCAweDdGODYsIDB4N0Y4MywNCisgICAgMHg3Rjg4LCAweDdGODcsIDB4N0Y4QywgMHg3Rjk0LCAweDdGOUUsIDB4N0Y5RCwgMHg3RjlBLCAweDdGQTMsDQorICAgIDB4N0ZBRiwgMHg3RkIyLCAweDdGQjksIDB4N0ZBRSwgMHg3RkI2LCAweDdGQjgsIDB4OEI3MSwgMHg3RkM1LA0KKyAgICAweDdGQzYsIDB4N0ZDQSwgMHg3RkQ1LCAweDdGRDQsIDB4N0ZFMSwgMHg3RkU2LCAweDdGRTksIDB4N0ZGMywNCisgICAgMHg3RkY5LCAweDk4REMsIDB4ODAwNiwgMHg4MDA0LCAweDgwMEIsIDB4ODAxMiwgMHg4MDE4LCAweDgwMTksDQorICAgIDB4ODAxQywgMHg4MDIxLCAweDgwMjgsIDB4ODAzRiwgMHg4MDNCLCAweDgwNEEsIDB4ODA0NiwgMHg4MDUyLA0KKyAgICAweDgwNTgsIDB4ODA1QSwgMHg4MDVGLCAweDgwNjIsIDB4ODA2OCwgMHg4MDczLCAweDgwNzIsIDB4ODA3MCwNCisgICAgMHg4MDc2LCAweDgwNzksIDB4ODA3RCwgMHg4MDdGLCAweDgwODQsIDB4ODA4NiwgMHg4MDg1LCAweDgwOUIsDQorICAgIDB4ODA5MywgMHg4MDlBLCAweDgwQUQsIDB4NTE5MCwgMHg4MEFDLCAweDgwREIsIDB4ODBFNSwgMHg4MEQ5LA0KKyAgICAweDgwREQsIDB4ODBDNCwgMHg4MERBLCAweDgwRDYsIDB4ODEwOSwgMHg4MEVGLCAweDgwRjEsIDB4ODExQiwNCisgICAgMHg4MTI5LCAweDgxMjMsIDB4ODEyRiwgMHg4MTRCLCAweDk2OEIsIDB4ODE0NiwgMHg4MTNFLCAweDgxNTMsDQorICAgIDB4ODE1MSwgMHg4MEZDLCAweDgxNzEsIDB4ODE2RSwgMHg4MTY1LCAweDgxNjYsIDB4ODE3NCwgMHg4MTgzLA0KKyAgICAweDgxODgsIDB4ODE4QSwgMHg4MTgwLCAweDgxODIsIDB4ODFBMCwgMHg4MTk1LCAweDgxQTQsIDB4ODFBMywNCisgICAgMHg4MTVGLCAweDgxOTMsIDB4ODFBOSwgMHg4MUIwLCAweDgxQjUsIDB4ODFCRSwgMHg4MUI4LCAweDgxQkQsDQorICAgIDB4ODFDMCwgMHg4MUMyLCAweDgxQkEsIDB4ODFDOSwgMHg4MUNELCAweDgxRDEsIDB4ODFEOSwgMHg4MUQ4LA0KKyAgICAweDgxQzgsIDB4ODFEQSwgMHg4MURGLCAweDgxRTAsIDB4ODFFNywgMHg4MUZBLCAweDgxRkIsIDB4ODFGRSwNCisgICAgMHg4MjAxLCAweDgyMDIsIDB4ODIwNSwgMHg4MjA3LCAweDgyMEEsIDB4ODIwRCwgMHg4MjEwLCAweDgyMTYsDQorICAgIDB4ODIyOSwgMHg4MjJCLCAweDgyMzgsIDB4ODIzMywgMHg4MjQwLCAweDgyNTksIDB4ODI1OCwgMHg4MjVELA0KKyAgICAweDgyNUEsIDB4ODI1RiwgMHg4MjY0LCAweDgyNjIsIDB4ODI2OCwgMHg4MjZBLCAweDgyNkIsIDB4ODIyRSwNCisgICAgMHg4MjcxLCAweDgyNzcsIDB4ODI3OCwgMHg4MjdFLCAweDgyOEQsIDB4ODI5MiwgMHg4MkFCLCAweDgyOUYsDQorICAgIDB4ODJCQiwgMHg4MkFDLCAweDgyRTEsIDB4ODJFMywgMHg4MkRGLCAweDgyRDIsIDB4ODJGNCwgMHg4MkYzLA0KKyAgICAweDgyRkEsIDB4ODM5MywgMHg4MzAzLCAweDgyRkIsIDB4ODJGOSwgMHg4MkRFLCAweDgzMDYsIDB4ODJEQywNCisgICAgMHg4MzA5LCAweDgyRDksIDB4ODMzNSwgMHg4MzM0LCAweDgzMTYsIDB4ODMzMiwgMHg4MzMxLCAweDgzNDAsDQorICAgIDB4ODMzOSwgMHg4MzUwLCAweDgzNDUsIDB4ODMyRiwgMHg4MzJCLCAweDgzMTcsIDB4ODMxOCwgMHg4Mzg1LA0KKyAgICAweDgzOUEsIDB4ODNBQSwgMHg4MzlGLCAweDgzQTIsIDB4ODM5NiwgMHg4MzIzLCAweDgzOEUsIDB4ODM4NywNCisgICAgMHg4MzhBLCAweDgzN0MsIDB4ODNCNSwgMHg4MzczLCAweDgzNzUsIDB4ODNBMCwgMHg4Mzg5LCAweDgzQTgsDQorICAgIDB4ODNGNCwgMHg4NDEzLCAweDgzRUIsIDB4ODNDRSwgMHg4M0ZELCAweDg0MDMsIDB4ODNEOCwgMHg4NDBCLA0KKyAgICAweDgzQzEsIDB4ODNGNywgMHg4NDA3LCAweDgzRTAsIDB4ODNGMiwgMHg4NDBELCAweDg0MjIsIDB4ODQyMCwNCisgICAgMHg4M0JELCAweDg0MzgsIDB4ODUwNiwgMHg4M0ZCLCAweDg0NkQsIDB4ODQyQSwgMHg4NDNDLCAweDg1NUEsDQorICAgIDB4ODQ4NCwgMHg4NDc3LCAweDg0NkIsIDB4ODRBRCwgMHg4NDZFLCAweDg0ODIsIDB4ODQ2OSwgMHg4NDQ2LA0KKyAgICAweDg0MkMsIDB4ODQ2RiwgMHg4NDc5LCAweDg0MzUsIDB4ODRDQSwgMHg4NDYyLCAweDg0QjksIDB4ODRCRiwNCisgICAgMHg4NDlGLCAweDg0RDksIDB4ODRDRCwgMHg4NEJCLCAweDg0REEsIDB4ODREMCwgMHg4NEMxLCAweDg0QzYsDQorICAgIDB4ODRENiwgMHg4NEExLCAweDg1MjEsIDB4ODRGRiwgMHg4NEY0LCAweDg1MTcsIDB4ODUxOCwgMHg4NTJDLA0KKyAgICAweDg1MUYsIDB4ODUxNSwgMHg4NTE0LCAweDg0RkMsIDB4ODU0MCwgMHg4NTYzLCAweDg1NTgsIDB4ODU0OCwNCisgICAgMHg4NTQxLCAweDg2MDIsIDB4ODU0QiwgMHg4NTU1LCAweDg1ODAsIDB4ODVBNCwgMHg4NTg4LCAweDg1OTEsDQorICAgIDB4ODU4QSwgMHg4NUE4LCAweDg1NkQsIDB4ODU5NCwgMHg4NTlCLCAweDg1RUEsIDB4ODU4NywgMHg4NTlDLA0KKyAgICAweDg1NzcsIDB4ODU3RSwgMHg4NTkwLCAweDg1QzksIDB4ODVCQSwgMHg4NUNGLCAweDg1QjksIDB4ODVEMCwNCisgICAgMHg4NUQ1LCAweDg1REQsIDB4ODVFNSwgMHg4NURDLCAweDg1RjksIDB4ODYwQSwgMHg4NjEzLCAweDg2MEIsDQorICAgIDB4ODVGRSwgMHg4NUZBLCAweDg2MDYsIDB4ODYyMiwgMHg4NjFBLCAweDg2MzAsIDB4ODYzRiwgMHg4NjRELA0KKyAgICAweDRFNTUsIDB4ODY1NCwgMHg4NjVGLCAweDg2NjcsIDB4ODY3MSwgMHg4NjkzLCAweDg2QTMsIDB4ODZBOSwNCisgICAgMHg4NkFBLCAweDg2OEIsIDB4ODY4QywgMHg4NkI2LCAweDg2QUYsIDB4ODZDNCwgMHg4NkM2LCAweDg2QjAsDQorICAgIDB4ODZDOSwgMHg4ODIzLCAweDg2QUIsIDB4ODZENCwgMHg4NkRFLCAweDg2RTksIDB4ODZFQywgMHg4NkRGLA0KKyAgICAweDg2REIsIDB4ODZFRiwgMHg4NzEyLCAweDg3MDYsIDB4ODcwOCwgMHg4NzAwLCAweDg3MDMsIDB4ODZGQiwNCisgICAgMHg4NzExLCAweDg3MDksIDB4ODcwRCwgMHg4NkY5LCAweDg3MEEsIDB4ODczNCwgMHg4NzNGLCAweDg3MzcsDQorICAgIDB4ODczQiwgMHg4NzI1LCAweDg3MjksIDB4ODcxQSwgMHg4NzYwLCAweDg3NUYsIDB4ODc3OCwgMHg4NzRDLA0KKyAgICAweDg3NEUsIDB4ODc3NCwgMHg4NzU3LCAweDg3NjgsIDB4ODc2RSwgMHg4NzU5LCAweDg3NTMsIDB4ODc2MywNCisgICAgMHg4NzZBLCAweDg4MDUsIDB4ODdBMiwgMHg4NzlGLCAweDg3ODIsIDB4ODdBRiwgMHg4N0NCLCAweDg3QkQsDQorICAgIDB4ODdDMCwgMHg4N0QwLCAweDk2RDYsIDB4ODdBQiwgMHg4N0M0LCAweDg3QjMsIDB4ODdDNywgMHg4N0M2LA0KKyAgICAweDg3QkIsIDB4ODdFRiwgMHg4N0YyLCAweDg3RTAsIDB4ODgwRiwgMHg4ODBELCAweDg3RkUsIDB4ODdGNiwNCisgICAgMHg4N0Y3LCAweDg4MEUsIDB4ODdEMiwgMHg4ODExLCAweDg4MTYsIDB4ODgxNSwgMHg4ODIyLCAweDg4MjEsDQorICAgIDB4ODgzMSwgMHg4ODM2LCAweDg4MzksIDB4ODgyNywgMHg4ODNCLCAweDg4NDQsIDB4ODg0MiwgMHg4ODUyLA0KKyAgICAweDg4NTksIDB4ODg1RSwgMHg4ODYyLCAweDg4NkIsIDB4ODg4MSwgMHg4ODdFLCAweDg4OUUsIDB4ODg3NSwNCisgICAgMHg4ODdELCAweDg4QjUsIDB4ODg3MiwgMHg4ODgyLCAweDg4OTcsIDB4ODg5MiwgMHg4OEFFLCAweDg4OTksDQorICAgIDB4ODhBMiwgMHg4ODhELCAweDg4QTQsIDB4ODhCMCwgMHg4OEJGLCAweDg4QjEsIDB4ODhDMywgMHg4OEM0LA0KKyAgICAweDg4RDQsIDB4ODhEOCwgMHg4OEQ5LCAweDg4REQsIDB4ODhGOSwgMHg4OTAyLCAweDg4RkMsIDB4ODhGNCwNCisgICAgMHg4OEU4LCAweDg4RjIsIDB4ODkwNCwgMHg4OTBDLCAweDg5MEEsIDB4ODkxMywgMHg4OTQzLCAweDg5MUUsDQorICAgIDB4ODkyNSwgMHg4OTJBLCAweDg5MkIsIDB4ODk0MSwgMHg4OTQ0LCAweDg5M0IsIDB4ODkzNiwgMHg4OTM4LA0KKyAgICAweDg5NEMsIDB4ODkxRCwgMHg4OTYwLCAweDg5NUUsIDB4ODk2NiwgMHg4OTY0LCAweDg5NkQsIDB4ODk2QSwNCisgICAgMHg4OTZGLCAweDg5NzQsIDB4ODk3NywgMHg4OTdFLCAweDg5ODMsIDB4ODk4OCwgMHg4OThBLCAweDg5OTMsDQorICAgIDB4ODk5OCwgMHg4OUExLCAweDg5QTksIDB4ODlBNiwgMHg4OUFDLCAweDg5QUYsIDB4ODlCMiwgMHg4OUJBLA0KKyAgICAweDg5QkQsIDB4ODlCRiwgMHg4OUMwLCAweDg5REEsIDB4ODlEQywgMHg4OURELCAweDg5RTcsIDB4ODlGNCwNCisgICAgMHg4OUY4LCAweDhBMDMsIDB4OEExNiwgMHg4QTEwLCAweDhBMEMsIDB4OEExQiwgMHg4QTFELCAweDhBMjUsDQorICAgIDB4OEEzNiwgMHg4QTQxLCAweDhBNUIsIDB4OEE1MiwgMHg4QTQ2LCAweDhBNDgsIDB4OEE3QywgMHg4QTZELA0KKyAgICAweDhBNkMsIDB4OEE2MiwgMHg4QTg1LCAweDhBODIsIDB4OEE4NCwgMHg4QUE4LCAweDhBQTEsIDB4OEE5MSwNCisgICAgMHg4QUE1LCAweDhBQTYsIDB4OEE5QSwgMHg4QUEzLCAweDhBQzQsIDB4OEFDRCwgMHg4QUMyLCAweDhBREEsDQorICAgIDB4OEFFQiwgMHg4QUYzLCAweDhBRTcsIDB4OEFFNCwgMHg4QUYxLCAweDhCMTQsIDB4OEFFMCwgMHg4QUUyLA0KKyAgICAweDhBRjcsIDB4OEFERSwgMHg4QURCLCAweDhCMEMsIDB4OEIwNywgMHg4QjFBLCAweDhBRTEsIDB4OEIxNiwNCisgICAgMHg4QjEwLCAweDhCMTcsIDB4OEIyMCwgMHg4QjMzLCAweDk3QUIsIDB4OEIyNiwgMHg4QjJCLCAweDhCM0UsDQorICAgIDB4OEIyOCwgMHg4QjQxLCAweDhCNEMsIDB4OEI0RiwgMHg4QjRFLCAweDhCNDksIDB4OEI1NiwgMHg4QjVCLA0KKyAgICAweDhCNUEsIDB4OEI2QiwgMHg4QjVGLCAweDhCNkMsIDB4OEI2RiwgMHg4Qjc0LCAweDhCN0QsIDB4OEI4MCwNCisgICAgMHg4QjhDLCAweDhCOEUsIDB4OEI5MiwgMHg4QjkzLCAweDhCOTYsIDB4OEI5OSwgMHg4QjlBLCAweDhDM0EsDQorICAgIDB4OEM0MSwgMHg4QzNGLCAweDhDNDgsIDB4OEM0QywgMHg4QzRFLCAweDhDNTAsIDB4OEM1NSwgMHg4QzYyLA0KKyAgICAweDhDNkMsIDB4OEM3OCwgMHg4QzdBLCAweDhDODIsIDB4OEM4OSwgMHg4Qzg1LCAweDhDOEEsIDB4OEM4RCwNCisgICAgMHg4QzhFLCAweDhDOTQsIDB4OEM3QywgMHg4Qzk4LCAweDYyMUQsIDB4OENBRCwgMHg4Q0FBLCAweDhDQkQsDQorICAgIDB4OENCMiwgMHg4Q0IzLCAweDhDQUUsIDB4OENCNiwgMHg4Q0M4LCAweDhDQzEsIDB4OENFNCwgMHg4Q0UzLA0KKyAgICAweDhDREEsIDB4OENGRCwgMHg4Q0ZBLCAweDhDRkIsIDB4OEQwNCwgMHg4RDA1LCAweDhEMEEsIDB4OEQwNywNCisgICAgMHg4RDBGLCAweDhEMEQsIDB4OEQxMCwgMHg5RjRFLCAweDhEMTMsIDB4OENDRCwgMHg4RDE0LCAweDhEMTYsDQorICAgIDB4OEQ2NywgMHg4RDZELCAweDhENzEsIDB4OEQ3MywgMHg4RDgxLCAweDhEOTksIDB4OERDMiwgMHg4REJFLA0KKyAgICAweDhEQkEsIDB4OERDRiwgMHg4RERBLCAweDhERDYsIDB4OERDQywgMHg4RERCLCAweDhEQ0IsIDB4OERFQSwNCisgICAgMHg4REVCLCAweDhEREYsIDB4OERFMywgMHg4REZDLCAweDhFMDgsIDB4OEUwOSwgMHg4REZGLCAweDhFMUQsDQorICAgIDB4OEUxRSwgMHg4RTEwLCAweDhFMUYsIDB4OEU0MiwgMHg4RTM1LCAweDhFMzAsIDB4OEUzNCwgMHg4RTRBLA0KKyAgICAweDhFNDcsIDB4OEU0OSwgMHg4RTRDLCAweDhFNTAsIDB4OEU0OCwgMHg4RTU5LCAweDhFNjQsIDB4OEU2MCwNCisgICAgMHg4RTJBLCAweDhFNjMsIDB4OEU1NSwgMHg4RTc2LCAweDhFNzIsIDB4OEU3QywgMHg4RTgxLCAweDhFODcsDQorICAgIDB4OEU4NSwgMHg4RTg0LCAweDhFOEIsIDB4OEU4QSwgMHg4RTkzLCAweDhFOTEsIDB4OEU5NCwgMHg4RTk5LA0KKyAgICAweDhFQUEsIDB4OEVBMSwgMHg4RUFDLCAweDhFQjAsIDB4OEVDNiwgMHg4RUIxLCAweDhFQkUsIDB4OEVDNSwNCisgICAgMHg4RUM4LCAweDhFQ0IsIDB4OEVEQiwgMHg4RUUzLCAweDhFRkMsIDB4OEVGQiwgMHg4RUVCLCAweDhFRkUsDQorICAgIDB4OEYwQSwgMHg4RjA1LCAweDhGMTUsIDB4OEYxMiwgMHg4RjE5LCAweDhGMTMsIDB4OEYxQywgMHg4RjFGLA0KKyAgICAweDhGMUIsIDB4OEYwQywgMHg4RjI2LCAweDhGMzMsIDB4OEYzQiwgMHg4RjM5LCAweDhGNDUsIDB4OEY0MiwNCisgICAgMHg4RjNFLCAweDhGNEMsIDB4OEY0OSwgMHg4RjQ2LCAweDhGNEUsIDB4OEY1NywgMHg4RjVDLCAweDhGNjIsDQorICAgIDB4OEY2MywgMHg4RjY0LCAweDhGOUMsIDB4OEY5RiwgMHg4RkEzLCAweDhGQUQsIDB4OEZBRiwgMHg4RkI3LA0KKyAgICAweDhGREEsIDB4OEZFNSwgMHg4RkUyLCAweDhGRUEsIDB4OEZFRiwgMHg5MDg3LCAweDhGRjQsIDB4OTAwNSwNCisgICAgMHg4RkY5LCAweDhGRkEsIDB4OTAxMSwgMHg5MDE1LCAweDkwMjEsIDB4OTAwRCwgMHg5MDFFLCAweDkwMTYsDQorICAgIDB4OTAwQiwgMHg5MDI3LCAweDkwMzYsIDB4OTAzNSwgMHg5MDM5LCAweDhGRjgsIDB4OTA0RiwgMHg5MDUwLA0KKyAgICAweDkwNTEsIDB4OTA1MiwgMHg5MDBFLCAweDkwNDksIDB4OTAzRSwgMHg5MDU2LCAweDkwNTgsIDB4OTA1RSwNCisgICAgMHg5MDY4LCAweDkwNkYsIDB4OTA3NiwgMHg5NkE4LCAweDkwNzIsIDB4OTA4MiwgMHg5MDdELCAweDkwODEsDQorICAgIDB4OTA4MCwgMHg5MDhBLCAweDkwODksIDB4OTA4RiwgMHg5MEE4LCAweDkwQUYsIDB4OTBCMSwgMHg5MEI1LA0KKyAgICAweDkwRTIsIDB4OTBFNCwgMHg2MjQ4LCAweDkwREIsIDB4OTEwMiwgMHg5MTEyLCAweDkxMTksIDB4OTEzMiwNCisgICAgMHg5MTMwLCAweDkxNEEsIDB4OTE1NiwgMHg5MTU4LCAweDkxNjMsIDB4OTE2NSwgMHg5MTY5LCAweDkxNzMsDQorICAgIDB4OTE3MiwgMHg5MThCLCAweDkxODksIDB4OTE4MiwgMHg5MUEyLCAweDkxQUIsIDB4OTFBRiwgMHg5MUFBLA0KKyAgICAweDkxQjUsIDB4OTFCNCwgMHg5MUJBLCAweDkxQzAsIDB4OTFDMSwgMHg5MUM5LCAweDkxQ0IsIDB4OTFEMCwNCisgICAgMHg5MUQ2LCAweDkxREYsIDB4OTFFMSwgMHg5MURCLCAweDkxRkMsIDB4OTFGNSwgMHg5MUY2LCAweDkyMUUsDQorICAgIDB4OTFGRiwgMHg5MjE0LCAweDkyMkMsIDB4OTIxNSwgMHg5MjExLCAweDkyNUUsIDB4OTI1NywgMHg5MjQ1LA0KKyAgICAweDkyNDksIDB4OTI2NCwgMHg5MjQ4LCAweDkyOTUsIDB4OTIzRiwgMHg5MjRCLCAweDkyNTAsIDB4OTI5QywNCisgICAgMHg5Mjk2LCAweDkyOTMsIDB4OTI5QiwgMHg5MjVBLCAweDkyQ0YsIDB4OTJCOSwgMHg5MkI3LCAweDkyRTksDQorICAgIDB4OTMwRiwgMHg5MkZBLCAweDkzNDQsIDB4OTMyRSwgMHg5MzE5LCAweDkzMjIsIDB4OTMxQSwgMHg5MzIzLA0KKyAgICAweDkzM0EsIDB4OTMzNSwgMHg5MzNCLCAweDkzNUMsIDB4OTM2MCwgMHg5MzdDLCAweDkzNkUsIDB4OTM1NiwNCisgICAgMHg5M0IwLCAweDkzQUMsIDB4OTNBRCwgMHg5Mzk0LCAweDkzQjksIDB4OTNENiwgMHg5M0Q3LCAweDkzRTgsDQorICAgIDB4OTNFNSwgMHg5M0Q4LCAweDkzQzMsIDB4OTNERCwgMHg5M0QwLCAweDkzQzgsIDB4OTNFNCwgMHg5NDFBLA0KKyAgICAweDk0MTQsIDB4OTQxMywgMHg5NDAzLCAweDk0MDcsIDB4OTQxMCwgMHg5NDM2LCAweDk0MkIsIDB4OTQzNSwNCisgICAgMHg5NDIxLCAweDk0M0EsIDB4OTQ0MSwgMHg5NDUyLCAweDk0NDQsIDB4OTQ1QiwgMHg5NDYwLCAweDk0NjIsDQorICAgIDB4OTQ1RSwgMHg5NDZBLCAweDkyMjksIDB4OTQ3MCwgMHg5NDc1LCAweDk0NzcsIDB4OTQ3RCwgMHg5NDVBLA0KKyAgICAweDk0N0MsIDB4OTQ3RSwgMHg5NDgxLCAweDk0N0YsIDB4OTU4MiwgMHg5NTg3LCAweDk1OEEsIDB4OTU5NCwNCisgICAgMHg5NTk2LCAweDk1OTgsIDB4OTU5OSwgMHg5NUEwLCAweDk1QTgsIDB4OTVBNywgMHg5NUFELCAweDk1QkMsDQorICAgIDB4OTVCQiwgMHg5NUI5LCAweDk1QkUsIDB4OTVDQSwgMHg2RkY2LCAweDk1QzMsIDB4OTVDRCwgMHg5NUNDLA0KKyAgICAweDk1RDUsIDB4OTVENCwgMHg5NUQ2LCAweDk1REMsIDB4OTVFMSwgMHg5NUU1LCAweDk1RTIsIDB4OTYyMSwNCisgICAgMHg5NjI4LCAweDk2MkUsIDB4OTYyRiwgMHg5NjQyLCAweDk2NEMsIDB4OTY0RiwgMHg5NjRCLCAweDk2NzcsDQorICAgIDB4OTY1QywgMHg5NjVFLCAweDk2NUQsIDB4OTY1RiwgMHg5NjY2LCAweDk2NzIsIDB4OTY2QywgMHg5NjhELA0KKyAgICAweDk2OTgsIDB4OTY5NSwgMHg5Njk3LCAweDk2QUEsIDB4OTZBNywgMHg5NkIxLCAweDk2QjIsIDB4OTZCMCwNCisgICAgMHg5NkI0LCAweDk2QjYsIDB4OTZCOCwgMHg5NkI5LCAweDk2Q0UsIDB4OTZDQiwgMHg5NkM5LCAweDk2Q0QsDQorICAgIDB4ODk0RCwgMHg5NkRDLCAweDk3MEQsIDB4OTZENSwgMHg5NkY5LCAweDk3MDQsIDB4OTcwNiwgMHg5NzA4LA0KKyAgICAweDk3MTMsIDB4OTcwRSwgMHg5NzExLCAweDk3MEYsIDB4OTcxNiwgMHg5NzE5LCAweDk3MjQsIDB4OTcyQSwNCisgICAgMHg5NzMwLCAweDk3MzksIDB4OTczRCwgMHg5NzNFLCAweDk3NDQsIDB4OTc0NiwgMHg5NzQ4LCAweDk3NDIsDQorICAgIDB4OTc0OSwgMHg5NzVDLCAweDk3NjAsIDB4OTc2NCwgMHg5NzY2LCAweDk3NjgsIDB4NTJEMiwgMHg5NzZCLA0KKyAgICAweDk3NzEsIDB4OTc3OSwgMHg5Nzg1LCAweDk3N0MsIDB4OTc4MSwgMHg5NzdBLCAweDk3ODYsIDB4OTc4QiwNCisgICAgMHg5NzhGLCAweDk3OTAsIDB4OTc5QywgMHg5N0E4LCAweDk3QTYsIDB4OTdBMywgMHg5N0IzLCAweDk3QjQsDQorICAgIDB4OTdDMywgMHg5N0M2LCAweDk3QzgsIDB4OTdDQiwgMHg5N0RDLCAweDk3RUQsIDB4OUY0RiwgMHg5N0YyLA0KKyAgICAweDdBREYsIDB4OTdGNiwgMHg5N0Y1LCAweDk4MEYsIDB4OTgwQywgMHg5ODM4LCAweDk4MjQsIDB4OTgyMSwNCisgICAgMHg5ODM3LCAweDk4M0QsIDB4OTg0NiwgMHg5ODRGLCAweDk4NEIsIDB4OTg2QiwgMHg5ODZGLCAweDk4NzAsDQorICAgIDB4OTg3MSwgMHg5ODc0LCAweDk4NzMsIDB4OThBQSwgMHg5OEFGLCAweDk4QjEsIDB4OThCNiwgMHg5OEM0LA0KKyAgICAweDk4QzMsIDB4OThDNiwgMHg5OEU5LCAweDk4RUIsIDB4OTkwMywgMHg5OTA5LCAweDk5MTIsIDB4OTkxNCwNCisgICAgMHg5OTE4LCAweDk5MjEsIDB4OTkxRCwgMHg5OTFFLCAweDk5MjQsIDB4OTkyMCwgMHg5OTJDLCAweDk5MkUsDQorICAgIDB4OTkzRCwgMHg5OTNFLCAweDk5NDIsIDB4OTk0OSwgMHg5OTQ1LCAweDk5NTAsIDB4OTk0QiwgMHg5OTUxLA0KKyAgICAweDk5NTIsIDB4OTk0QywgMHg5OTU1LCAweDk5OTcsIDB4OTk5OCwgMHg5OUE1LCAweDk5QUQsIDB4OTlBRSwNCisgICAgMHg5OUJDLCAweDk5REYsIDB4OTlEQiwgMHg5OURELCAweDk5RDgsIDB4OTlEMSwgMHg5OUVELCAweDk5RUUsDQorICAgIDB4OTlGMSwgMHg5OUYyLCAweDk5RkIsIDB4OTlGOCwgMHg5QTAxLCAweDlBMEYsIDB4OUEwNSwgMHg5OUUyLA0KKyAgICAweDlBMTksIDB4OUEyQiwgMHg5QTM3LCAweDlBNDUsIDB4OUE0MiwgMHg5QTQwLCAweDlBNDMsIDB4OUEzRSwNCisgICAgMHg5QTU1LCAweDlBNEQsIDB4OUE1QiwgMHg5QTU3LCAweDlBNUYsIDB4OUE2MiwgMHg5QTY1LCAweDlBNjQsDQorICAgIDB4OUE2OSwgMHg5QTZCLCAweDlBNkEsIDB4OUFBRCwgMHg5QUIwLCAweDlBQkMsIDB4OUFDMCwgMHg5QUNGLA0KKyAgICAweDlBRDEsIDB4OUFEMywgMHg5QUQ0LCAweDlBREUsIDB4OUFERiwgMHg5QUUyLCAweDlBRTMsIDB4OUFFNiwNCisgICAgMHg5QUVGLCAweDlBRUIsIDB4OUFFRSwgMHg5QUY0LCAweDlBRjEsIDB4OUFGNywgMHg5QUZCLCAweDlCMDYsDQorICAgIDB4OUIxOCwgMHg5QjFBLCAweDlCMUYsIDB4OUIyMiwgMHg5QjIzLCAweDlCMjUsIDB4OUIyNywgMHg5QjI4LA0KKyAgICAweDlCMjksIDB4OUIyQSwgMHg5QjJFLCAweDlCMkYsIDB4OUIzMiwgMHg5QjQ0LCAweDlCNDMsIDB4OUI0RiwNCisgICAgMHg5QjRELCAweDlCNEUsIDB4OUI1MSwgMHg5QjU4LCAweDlCNzQsIDB4OUI5MywgMHg5QjgzLCAweDlCOTEsDQorICAgIDB4OUI5NiwgMHg5Qjk3LCAweDlCOUYsIDB4OUJBMCwgMHg5QkE4LCAweDlCQjQsIDB4OUJDMCwgMHg5QkNBLA0KKyAgICAweDlCQjksIDB4OUJDNiwgMHg5QkNGLCAweDlCRDEsIDB4OUJEMiwgMHg5QkUzLCAweDlCRTIsIDB4OUJFNCwNCisgICAgMHg5QkQ0LCAweDlCRTEsIDB4OUMzQSwgMHg5QkYyLCAweDlCRjEsIDB4OUJGMCwgMHg5QzE1LCAweDlDMTQsDQorICAgIDB4OUMwOSwgMHg5QzEzLCAweDlDMEMsIDB4OUMwNiwgMHg5QzA4LCAweDlDMTIsIDB4OUMwQSwgMHg5QzA0LA0KKyAgICAweDlDMkUsIDB4OUMxQiwgMHg5QzI1LCAweDlDMjQsIDB4OUMyMSwgMHg5QzMwLCAweDlDNDcsIDB4OUMzMiwNCisgICAgMHg5QzQ2LCAweDlDM0UsIDB4OUM1QSwgMHg5QzYwLCAweDlDNjcsIDB4OUM3NiwgMHg5Qzc4LCAweDlDRTcsDQorICAgIDB4OUNFQywgMHg5Q0YwLCAweDlEMDksIDB4OUQwOCwgMHg5Q0VCLCAweDlEMDMsIDB4OUQwNiwgMHg5RDJBLA0KKyAgICAweDlEMjYsIDB4OURBRiwgMHg5RDIzLCAweDlEMUYsIDB4OUQ0NCwgMHg5RDE1LCAweDlEMTIsIDB4OUQ0MSwNCisgICAgMHg5RDNGLCAweDlEM0UsIDB4OUQ0NiwgMHg5RDQ4LCAweDlENUQsIDB4OUQ1RSwgMHg5RDY0LCAweDlENTEsDQorICAgIDB4OUQ1MCwgMHg5RDU5LCAweDlENzIsIDB4OUQ4OSwgMHg5RDg3LCAweDlEQUIsIDB4OUQ2RiwgMHg5RDdBLA0KKyAgICAweDlEOUEsIDB4OURBNCwgMHg5REE5LCAweDlEQjIsIDB4OURDNCwgMHg5REMxLCAweDlEQkIsIDB4OURCOCwNCisgICAgMHg5REJBLCAweDlEQzYsIDB4OURDRiwgMHg5REMyLCAweDlERDksIDB4OUREMywgMHg5REY4LCAweDlERTYsDQorICAgIDB4OURFRCwgMHg5REVGLCAweDlERkQsIDB4OUUxQSwgMHg5RTFCLCAweDlFMUUsIDB4OUU3NSwgMHg5RTc5LA0KKyAgICAweDlFN0QsIDB4OUU4MSwgMHg5RTg4LCAweDlFOEIsIDB4OUU4QywgMHg5RTkyLCAweDlFOTUsIDB4OUU5MSwNCisgICAgMHg5RTlELCAweDlFQTUsIDB4OUVBOSwgMHg5RUI4LCAweDlFQUEsIDB4OUVBRCwgMHg5NzYxLCAweDlFQ0MsDQorICAgIDB4OUVDRSwgMHg5RUNGLCAweDlFRDAsIDB4OUVENCwgMHg5RURDLCAweDlFREUsIDB4OUVERCwgMHg5RUUwLA0KKyAgICAweDlFRTUsIDB4OUVFOCwgMHg5RUVGLCAweDlFRjQsIDB4OUVGNiwgMHg5RUY3LCAweDlFRjksIDB4OUVGQiwNCisgICAgMHg5RUZDLCAweDlFRkQsIDB4OUYwNywgMHg5RjA4LCAweDc2QjcsIDB4OUYxNSwgMHg5RjIxLCAweDlGMkMsDQorICAgIDB4OUYzRSwgMHg5RjRBLCAweDlGNTIsIDB4OUY1NCwgMHg5RjYzLCAweDlGNUYsIDB4OUY2MCwgMHg5RjYxLA0KKyAgICAweDlGNjYsIDB4OUY2NywgMHg5RjZDLCAweDlGNkEsIDB4OUY3NywgMHg5RjcyLCAweDlGNzYsIDB4OUY5NSwNCisgICAgMHg5RjlDLCAweDlGQTAsIDB4NTgyRiwgMHg2OUM3LCAweDkwNTksIDB4NzQ2NCwgMHgyNjQyLCAweDI1MDAsDQorICAgIDB4MjUwMSwgMHgyNTAyLCAweDI1MDMsIDB4MjUwNCwgMHgyNTA1LCAweDI1MDYsIDB4MjUwNywgMHgyNTA4LA0KKyAgICAweDI1MDksIDB4MjUwQSwgMHgyNTBCLCAweDI1MEMsIDB4MjUwRCwgMHgyNTBFLCAweDI1MEYsIDB4MjUxMCwNCisgICAgMHgyNTExLCAweDI1MTIsIDB4MjUxMywgMHgyNTE0LCAweDI1MTUsIDB4MjUxNiwgMHgyNTE3LCAweDI1MTgsDQorICAgIDB4MjUxOSwgMHgyNTFBLCAweDI1MUIsIDB4MjUxQywgMHgyNTFELCAweDI1MUUsIDB4MjUxRiwgMHgyNTIwLA0KKyAgICAweDI1MjEsIDB4MjUyMiwgMHgyNTIzLCAweDI1MjQsIDB4MjUyNSwgMHgyNTI2LCAweDI1MjcsIDB4MjUyOCwNCisgICAgMHgyNTI5LCAweDI1MkEsIDB4MjUyQiwgMHgyNTJDLCAweDI1MkQsIDB4MjUyRSwgMHgyNTJGLCAweDI1MzAsDQorICAgIDB4MjUzMSwgMHgyNTMyLCAweDI1MzMsIDB4MjUzNCwgMHgyNTM1LCAweDI1MzYsIDB4MjUzNywgMHgyNTM4LA0KKyAgICAweDI1MzksIDB4MjUzQSwgMHgyNTNCLCAweDI1M0MsIDB4MjUzRCwgMHgyNTNFLCAweDI1M0YsIDB4MjU0MCwNCisgICAgMHgyNTQxLCAweDI1NDIsIDB4MjU0MywgMHgyNTQ0LCAweDI1NDUsIDB4MjU0NiwgMHgyNTQ3LCAweDI1NDgsDQorICAgIDB4MjU0OSwgMHgyNTRBLCAweDI1NEIsIDB4MjQ2MCwgMHgyNDYxLCAweDI0NjIsIDB4MjQ2MywgMHgyNDY0LA0KKyAgICAweDI0NjUsIDB4MjQ2NiwgMHgyNDY3LCAweDI0NjgsIDB4MjQ2OSwgMHgyNDZBLCAweDI0NkIsIDB4MjQ2QywNCisgICAgMHgyNDZELCAweDI0NkUsIDB4MjQ2RiwgMHgyNDcwLCAweDI0NzEsIDB4MjQ3MiwgMHgyNDczLCAweDIxNjAsDQorICAgIDB4MjE2MSwgMHgyMTYyLCAweDIxNjMsIDB4MjE2NCwgMHgyMTY1LCAweDIxNjYsIDB4MjE2NywgMHgyMTY4LA0KKyAgICAweDIxNjksIDB4MzM0OSwgMHgzMzE0LCAweDMzMjIsIDB4MzM0RCwgMHgzMzE4LCAweDMzMjcsIDB4MzMwMywNCisgICAgMHgzMzM2LCAweDMzNTEsIDB4MzM1NywgMHgzMzBELCAweDMzMjYsIDB4MzMyMywgMHgzMzJCLCAweDMzNEEsDQorICAgIDB4MzMzQiwgMHgzMzlDLCAweDMzOUQsIDB4MzM5RSwgMHgzMzhFLCAweDMzOEYsIDB4MzNDNCwgMHgzM0ExLA0KKyAgICAweDMwMUQsIDB4MzAxRiwgMHgyMTE2LCAweDMzQ0QsIDB4MjEyMSwgMHgzMkE0LCAweDMyQTUsIDB4MzJBNiwNCisgICAgMHgzMkE3LCAweDMyQTgsIDB4MzIzMSwgMHgzMjMyLCAweDMyMzksIDB4MzM3RSwgMHgzMzdELCAweDMzN0MsDQorICAgIDB4MjIyRSwgMHgyMjExLCAweDIyMUEsIDB4MjJBNSwgMHgyMjIwLCAweDIyMUYsIDB4MjJCRiwgMHgyMjI5LA0KKyAgICAweDIyMkEsIDB4NTU1RSwgMHg5OEY0LCAweDZFQTIsIDB4OUMyRiwgMHg2REVCLCAweDhGQzIsIDB4NkIxRCwNCisgICAgMHg1M0E5LCAweDk1OEYsIDB4NTY0MiwgMHg5OTBDLCAweDcxMzAsIDB4ODk1NiwgMHg5REQ3LCAweDhGRTYsDQorICAgIDB4NjA2MiwgMHg2MkQwLCAweDY2NjYsIDB4NTU5RCwgMHg4NDVCLCAweDk3ODQsIDB4NTY5OSwgMHg2Rjk3LA0KKyAgICAweDdGRjAsIDB4N0ZFQiwgMHg1RkJELCAweDc5NDcsIDB4NEZFMCwgMHg1MzdGLCAweDUwQzUsIDB4OEVDMCwNCisgICAgMHg1NUIwLCAweDZBREIsIDB4NUM1MSwgMHg5Nzc0LCAweDc5NDEsIDB4NjE2NywgMHg3QTNELCAweDdFNkIsDQorICAgIDB4ODM0QSwgMHg5Njk5LCAweDUwMjYsIDB4NUFDQywgMHg2MzcyLCAweDlFN0MsIDB4OEFGQSwgMHg1REY3LA0KKyAgICAweDY2M0IsIDB4NkU5RCwgMHg5RUI0LCAweDlENjAsIDB4NzUxMSwgMHg5MUM3LCAweDY5OEEsIDB4NjgwNSwNCisgICAgMHg4NUE5LCAweDlCRDYsIDB4OTMwNiwgMHg3M0NBLCAweDUzRjEsIDB4NUM2MiwgMHg5MDZFLCAweDY3NTMsDQorICAgIDB4NzA3QywgMHg3RTYxLCAweDkxNEIsIDB4NjZEOSwgMHg2RTFBLCAweDg1QUYsIDB4ODVGNywgMHg1NEU4LA0KKyAgICAweDVFRTAsIDB4NjhBMiwgMHg4NTIzLCAweDkxQUMsIDB4OTc5OCwgMHg4NzU1LCAweDk3NzEsIDB4OTAxNywNCisgICAgMHg3RkUwLCAweDY0N0EsIDB4OTAxRCwgMHg4N0VDLCAweDY0QjAsIDB4NjgxMywgMHg3MTRFLCAweDcxN0QsDQorICAgIDB4OEE2RSwgMHg1NjRDLCAweDkwNjEsIDB4NTI3NSwgMHg2NDE0LCAweDc2MjYsIDB4OTA1QywgMHg5QTUyLA0KKyAgICAweDgxN0YsIDB4OUVEQiwgMHg1NTQ0LCAweDZGRUYsIDB4NzQyMiwgMHg4NkY4LCAweDVERkQsIDB4OEZCRiwNCisgICAgMHg2OERBLCAweDlDNDgsIDB4NkEzRCwgMHg3QzFFLCAweDhBM0IsIDB4NzAyNiwgMHg1MUNCLCAweDYzNTcsDQorICAgIDB4NjlDQywgMHg5MzlBLCAweDU4NUEsIDB4NjQ1MSwgMHg5MTJELCAweDY0RTIsIDB4NkVCQSwgMHg1ODYxLA0KKyAgICAweDk4NUEsIDB4NTgzNSwgMHg1QzYwLCAweDgzREYsIDB4OENFRCwgMHg1ODU4LCAweDc5QjEsIDB4OUQwNywNCisgICAgMHg3MDA2LCAweDcwMUUsIDB4NTY3OCwgMHg5MDQxLCAweDk4MTMsIDB4OTBBMywgMHg4QjBFLCAweDcwNTgsDQorICAgIDB4Njk2MiwgMHg3OUIwLCAweDU2Q0EsIDB4NzI0QywgMHg5MDE5LCAweDc5RTQsIDB4NTI1RCwgMHg3QkI4LA0KKyAgICAweDZGNTEsIDB4OTFCMSwgMHg2MzNELCAweDYyNDksIDB4NkEwQiwgMHg2N0NBLCAweDdBMTcsIDB4OTAzQywNCisgICAgMHg1QTlCLCAweDhCMkMsIDB4NUVERiwgMHg3MDE1LCAweDk4M0IsIDB4ODUzRCwgMHg3N0E1LCAweDVBMjksDQorICAgIDB4NUU5NiwgMHg2Q0UxLCAweDg0RUMsIDB4OTgzMCwgMHg5QzUyLCAweDlFQjUsIDB4NTEzMiwgMHg5OTA1LA0KKyAgICAweDdDN0UsIDB4OTQ1MywgMHg2MTA4LCAweDc2NTIsIDB4NzMzNywgMHg3MTk0LCAweDgwMDAsIDB4ODQwQSwNCisgICAgMHg5MDdDLCAweDZGMjMsIDB4NzE0OSwgMHg4NEVFLCAweDY5OTQsIDB4ODgxRiwgMHg1MTU0LCAweDUxODksDQorICAgIDB4NTE5NSwgMHg1MUE0LCAweDU1MzksIDB4NTUzMywgMHg1NUU0LCAweDU2MzIsIDB4NTZBNSwgMHg1ODBCLA0KKyAgICAweDVBQkUsIDB4NUJDMywgMHg1QzVCLCAweDVFNjQsIDB4NjA5NywgMHg2MzY5LCAweDY0MDYsIDB4NjUyMiwNCisgICAgMHg2NTgzLCAweDY3QTYsIDB4NjdCNCwgMHg2ODlCLCAweDY4OEUsIDB4NkU2RSwgMHg3MUQ3LCAweDcyMjgsDQorICAgIDB4NzNDRSwgMHg3NTA0LCAweDc1MEQsIDB4NzUxNSwgMHg3NjkzLCAweDc4N0MsIDB4N0EzMSwgMHg5RjlELA0KKyAgICAweDdCOTksIDB4N0M5MCwgMHg3Q0FFLCAweDdEOUIsIDB4N0RBRSwgMHg3RDlGLCAweDdGRDQsIDB4ODIyRSwNCisgICAgMHg4MjhELCAweDgyRDIsIDB4ODMyMywgMHg4Mzc1LCAweDg1MTcsIDB4ODUzRSwgMHg4NzgyLCAweDg3RDIsDQorICAgIDB4ODkwQSwgMHg4OUFGLCAweDhBREUsIDB4OEI0MSwgMHg4RERBLCAweDhFMDksIDB4OEYxMywgMHg4RkVBLA0KKyAgICAweDhGRTksIDB4OTA1OCwgMHg2MjQ4LCAweDkxQzEsIDB4OTVCQiwgMHg3NzYyLCAweDk3MjQsIDB4OTc2MCwNCisgICAgMHg5NzZELCAweDk4MjQsIDB4OUIyRSwgMHg5Qjk3LCAweDlCRjIsIDB4OUVBQSwgMHg5RjlDLCAweDMwMDEsDQorICAgIDB4MzAwMiwgMHgyMDNFLCAweEZGM0YsIDB4MzBGQywgMHgyMDE1LCAweDIwMTAsIDB4MzAxQywgMHgyMDE2LA0KKyAgICAweEZGNUMsIDB4MjAyNiwgMHgyMDI1LCAweEZGMDgsIDB4RkYwOSwgMHgzMDE0LCAweDMwMTUsIDB4RkYzQiwNCisgICAgMHhGRjNELCAweEZGNUIsIDB4RkY1RCwgMHgzMDA4LCAweDMwMDksIDB4MzAwQSwgMHgzMDBCLCAweDMwMEMsDQorICAgIDB4MzAwRCwgMHgzMDBFLCAweDMwMEYsIDB4MzAxMCwgMHgzMDExLCAweEZGMUQsIDB4MzA0MSwgMHgzMDQzLA0KKyAgICAweDMwNDUsIDB4MzA0NywgMHgzMDQ5LCAweDMwNjMsIDB4MzA4MywgMHgzMDg1LCAweDMwODcsIDB4MzA4RSwNCisgICAgMHgzMEExLCAweDMwQTMsIDB4MzBBNSwgMHgzMEE3LCAweDMwQTksIDB4MzBDMywgMHgzMEUzLCAweDMwRTUsDQorICAgIDB4MzBFNywgMHgzMEVFLCAweDMwRjUsIDB4MzBGNiwgMHgzMzQ5LCAweDMzMTQsIDB4MzMyMiwgMHgzMzRELA0KKyAgICAweDMzMTgsIDB4MzMyNywgMHgzMzAzLCAweDMzMzYsIDB4MzM1MSwgMHgzMzU3LCAweDMzMEQsIDB4MzMyNiwNCisgICAgMHgzMzIzLCAweDMzMkIsIDB4MzM0QSwgMHgzMzNCLCAweDMwMUQsIDB4MzAxRSwgMHgzMDk0LCAweDMwNEIsDQorICAgIDB4MzA1MSwgMHg4MkE2LCAweDgzMjgsIDB4NTY1MywgMHg1M0E5LCAweDcyNTksIDB4NkM3MiwgMHg3QjA4LA0KKyAgICAweDk5NTcsIDB4NjJGMywgMHg5OTEwLCAweDk3NkQsIDB4NzE3RCwgMHg3QTdGLCAweDdCQUQsIDB4NjNDMywNCisgICAgMHg4M0RGLCAweDc5NjIsIDB4NTNEQiwgMHg3QkM3LCAweDhGQzQsIDB4N0MzRSwgMHg1MENBLCAweDUzMTUsDQorICAgIDB4NTVBOSwgMHg1NkFFLCAweDU4MTksIDB4NTkxQiwgMHg1QzI4LCAweDVFRDAsIDB4NUVDRiwgMHg2MjQxLA0KKyAgICAweDY2QzEsIDB4NkMwOCwgMHg2RTIzLCAweDZFRUMsIDB4N0E5NywgMHg3QkRELCAweDdGRTksIDB4ODQyMiwNCisgICAgMHg4NzU5LCAweDg4MEUsIDB4ODdEMiwgMHg5QTE5LCAweDlFQUQsIDB4RkZFNCwgMHhGRjA3LCAweEZGMDIsDQorICAgIDB4MTFBOCwgMHgyNUMxLCAweDI1QjcsIDB4MjFFOSwgMHgyMUU3LCAweDIxRTYsIDB4MjFFOCwgMHgyNUEyLA0KKyAgICAweDI2NjcsIDB4MjY2MSwgMHgyNjY0LCAweDI2NjIsIDB4MzNBMCwgMHgzM0EyLCAweDMzQTQsIDB4MzNBNSwNCisgICAgMHgzMzk3LCAweDIxMTMsIDB4MzM5OCwgMHgzM0IzLCAweDMzQjIsIDB4MzNCMSwgMHgzM0IwLCAweDMzODUsDQorICAgIDB4MzM4NiwgMHgzMzg3LCAweDMzQ0IsIDB4MzM5MCwgMHgzM0Q0LCAweDMzOTYsIDB4MzMyMiwgMHgzMzE2LA0KKyAgICAweDMzMTgsIDB4MzMxNSwgMHgzMzAzLCAweDMzMjMsIDB4MzM1NywgMHgzMzQyLCAweDMzMzksIDB4MzMzQiwNCisgICAgMHgzMzAwLCAweDMzMzEsIDB4MzM0NywgMHgzMzFFLCAweDMzMkEsIDB4MzNDRCwgMHgzMzdGLCAweDIxMjEsDQorICAgIDB4MjYwRSwgMHgzMDM2LCAweDMwMjAsIDB4MDBBOSwgMHgwMEFFLCAweDAwMDAsIDB4MjQ4OCwgMHgyNDg5LA0KKyAgICAweDI0OEEsIDB4MjQ4QiwgMHgyNDhDLCAweDI0OEQsIDB4MjQ4RSwgMHgyNDhGLCAweDI0OTAsIDB4MjQ3NCwNCisgICAgMHgyNDc1LCAweDI0NzYsIDB4MjQ3NywgMHgyNDc4LCAweDI0NzksIDB4MjQ3QSwgMHgyNDdCLCAweDI0N0MsDQorICAgIDB4MjQ3RCwgMHgyNDdFLCAweDI0N0YsIDB4MjQ4MCwgMHgyNDgxLCAweDI0ODIsIDB4MjQ4MywgMHgyNDg0LA0KKyAgICAweDI0ODUsIDB4MjQ4NiwgMHgyNDg3LCAweDMyNTEsIDB4MjE3MCwgMHgyMTcxLCAweDIxNzIsIDB4MjE3MywNCisgICAgMHgyMTc0LCAweDIxNzUsIDB4MjE3NiwgMHgyMTc3LCAweDIxNzgsIDB4MjE3OSwgMHgzMjUyLCAweDMyNTMsDQorICAgIDB4MzI1NCwgMHgzMjU1LCAweDMyNTYsIDB4MzI1NywgMHgzMjU4LCAweDMyNTksIDB4MzI1QSwgMHgzMjVCLA0KKyAgICAweDI0OUMsIDB4MjQ5RCwgMHgyNDlFLCAweDI0OUYsIDB4MjRBMCwgMHgyNEExLCAweDI0QTIsIDB4MjRBMywNCisgICAgMHgyNEE0LCAweDI0QTUsIDB4MjRBNiwgMHgyNEE3LCAweDI0QTgsIDB4MjRBOSwgMHgyNEFBLCAweDI0QUIsDQorICAgIDB4MjRBQywgMHgyNEFELCAweDI0QUUsIDB4MjRBRiwgMHgyNEIwLCAweDI0QjEsIDB4MjRCMiwgMHgyNEIzLA0KKyAgICAweDI0QjQsIDB4MjRCNSwgMHgzMjQzLCAweDMyM0QsIDB4MzIzRiwgMHgzMjM0LCAweDMyMzgsIDB4MzIzMywNCisgICAgMHgzMjNDLCAweDMyNDIsIDB4MzIzRSwgMHgzMjM2LCAweDMyMzUsIDB4MzIzQiwgMHgzMjQwLCAweDMyM0EsDQorICAgIDB4MzJCMCwgMHgzMkFELCAweDMyQTksIDB4MzJBRiwgMHgzMjk0LCAweDMyQUEsIDB4MzI5OCwgMHgzMkFCLA0KKyAgICAweDMyOTIsIDB4MzI5MSwgMHgzMjkzLCAweDMyQUMsIDB4MzJBRSwgMHgzMjk2LCAweDIzQTksIDB4MjNBOCwNCisgICAgMHgyM0E3LCAweEZFMzgsIDB4MjNBRCwgMHgyM0FDLCAweDIzQUIsIDB4RkUzOCwgMHgyM0FCLCAweDIzQUMsDQorICAgIDB4MjNBRCwgMHhGRTM4LCAweDIzQTcsIDB4MjNBOCwgMHgyM0E5LCAweEZFMzgsIDB4MzNDQywgMHgzMzA1LA0KKyAgICAweDAwQkQsIDB4MDBCQywgMHgzMzlGLCAweDMzQTMsIDB4MzNBNiwgMHhGRkZELCAweEZGRkQsIDB4MzI5RSwNCisgICAgMHgzMzg4LCAweDMzODksIDB4MzNDOCwgMHgyMjJELCAweDUzNzAsIDB4MzIzMCwgMHgzMjJBLCAweDMyMkIsDQorICAgIDB4MzIyQywgMHgzMjJELCAweDMyMkUsIDB4MzIyRiwgMHgzMjM3LCAweDMyNDEsIDB4MjdBMSwgMHgyMUU2LA0KKyAgICAweDIxRTcsIDB4MjFFOSwgMHgyNUM5LCAweDI2NjAsIDB4MjY2NSwgMHgyNjYzLCAweDI2NjYsIDB4MjYwMCwNCisgICAgMHgyNjAxLCAweDI2MDIsIDB4MjYwMywgMHgyNjFFLCAweDI2MUMsIDB4MjYxRCwgMHgyNjFGLCAweDMyOTksDQorICAgIDB4MjRFQSwgMHgyMTZBLCAweDIxNkIsIDB4RkYxMCwgMHhGRjEwLCAweDMwMDAsIDB4MjU4MSwgMHgyNTgyLA0KKyAgICAweDI1ODMsIDB4MjU4NCwgMHgyNTg1LCAweDI1ODYsIDB4MjU4NywgMHgyNTg4LCAweDI1OEYsIDB4MjU4RSwNCisgICAgMHgyNThELCAweDI1OEMsIDB4MjU4QiwgMHgyNThBLCAweDI1ODksIDB4MjU5NCwgMHgyNTk1LCAweDI1NkQsDQorICAgIDB4MjU2RSwgMHgyNTcwLCAweDI1NkYsIDB4MjU1MCwgMHgyNTVFLCAweDI1NkEsIDB4MjU2MSwgMHgyNUUyLA0KKyAgICAweDI1RTMsIDB4MjVFNSwgMHgyNUU0LCAweDI1Q0YsIDB4MEVEMCwgMHgyNTcxLCAweDI1NzIsIDB4MjU3MywNCisgICAgMHgzMDRCLCAweDMwNTEsIDB4OTAyMiwgMHg4RkJCLCAweEZGMEMsIDB4MDBCMCwgMHgzMDEzLCAweDMwOUMsDQorICAgIDB4MzA5QiwgMHgwMkNGLCAweEZGMEUsIDB4MjAxOCwgMHgyMDE5LCAweDIwMUMsIDB4MjAxRCwgMHgyMDFDLA0KKyAgICAweDIwMUUsIDB4MjAxOCwgMHgyMDFBLCAweDAyQkEsIDB4NTFEQywgMHg3MTk5LCAweDI3NzYsIDB4Mjc3NywNCisgICAgMHgyNzc4LCAweDI3NzksIDB4Mjc3QSwgMHgyNzdCLCAweDI3N0MsIDB4Mjc3RCwgMHgyNzdFLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDIxN0EsIDB4MjE3QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMTdGLA0KKyAgICAweDIxMEEsIDB4MjEwOSwgMHgwMDAwLCAweDAwMDAsIDB4MzAwNCwgMHgyMUM2LCAweDIxQzQsIDB4MjFDNSwNCisgICAgMHgwMDAwLCAweDMwRjcsIDB4MzBGOCwgMHgzMEY5LCAweDMwRkEsIDB4NTkyNywgMHg1QzBGLCAweDMyOUQsDQorICAgIDB4NjNBNywgMHgwMDAwLCAweDAwMDAsIDB4MzM3QiwgMHgzMzdGLCAweDAwMDAsIDB4MDAwMCwgMHgzMzMzLA0KKyAgICAweDMzNEUsIDB4MzMyMiwgMHgzMzE2LCAweDMzMDUsIDB4MzMwNSwgMHgzMzA1LCAweDMzMzMsIDB4MzM0RSwNCisgICAgMHgzMzRFLCAweDMzNEUsIDB4MzMwMywgMHgzMzE4LCAweDMzMTUsIDB4MzMzOSwgMHgzMzM5LCAweDMzMzksDQorICAgIDB4MzM1NywgMHgzMzQyLCAweDMzNDIsIDB4MzM0MiwgMHgzMzIzLCAweDMzM0IsIDB4MzMwMCwgMHgzMzFFLA0KKyAgICAweDMzMUUsIDB4MzMxRSwgMHgzMzJBLCAweDMzMkEsIDB4MzMyQSwgMHgzMzQ3LCAweDMzMzEsIDB4N0U4QSwNCisgICAgMHg4OTFDLCAweDkzNDgsIDB4OTI4OCwgMHg4NERDLCAweDRGQzksIDB4NzBCQiwgMHg2NjMxLCAweDY4QzgsDQorICAgIDB4OTJGOSwgMHg2NkZCLCAweDVGNDUsIDB4NEUyOCwgMHg0RUUxLCAweDRFRkMsIDB4NEYwMCwgMHg0RjAzLA0KKyAgICAweDRGMzksIDB4NEY1NiwgMHg0RjkyLCAweDRGOEEsIDB4NEY5QSwgMHg0Rjk0LCAweDRGQ0QsIDB4NTA0MCwNCisgICAgMHg1MDIyLCAweDRGRkYsIDB4NTAxRSwgMHg1MDQ2LCAweDUwNzAsIDB4NTA0MiwgMHg1MDk0LCAweDUwRjQsDQorICAgIDB4NTBEOCwgMHg1MTRBLCAweDUxNjQsIDB4NTE5RCwgMHg1MUJFLCAweDUxRUMsIDB4NTIxNSwgMHg1MjlDLA0KKyAgICAweDUyQTYsIDB4NTJDMCwgMHg1MkRCLCAweDUzMDAsIDB4NTMwNywgMHg1MzI0LCAweDUzNzIsIDB4NTM5MywNCisgICAgMHg1M0IyLCAweDUzREQsIDB4RkEwRSwgMHg1NDlDLCAweDU0OEEsIDB4NTRBOSwgMHg1NEZGLCAweDU1ODYsDQorICAgIDB4NTc1OSwgMHg1NzY1LCAweDU3QUMsIDB4NTdDOCwgMHg1N0M3LCAweEZBMEYsIDB4RkExMCwgMHg1ODlFLA0KKyAgICAweDU4QjIsIDB4NTkwQiwgMHg1OTUzLCAweDU5NUIsIDB4NTk1RCwgMHg1OTYzLCAweDU5QTQsIDB4NTlCQSwNCisgICAgMHg1QjU2LCAweDVCQzAsIDB4NzUyRiwgMHg1QkQ4LCAweDVCRUMsIDB4NUMxRSwgMHg1Q0E2LCAweDVDQkEsDQorICAgIDB4NUNGNSwgMHg1RDI3LCAweDVENTMsIDB4RkExMSwgMHg1RDQyLCAweDVENkQsIDB4NURCOCwgMHg1REI5LA0KKyAgICAweDVERDAsIDB4NUYyMSwgMHg1RjM0LCAweDVGNjcsIDB4NUZCNywgMHg1RkRFLCAweDYwNUQsIDB4NjA4NSwNCisgICAgMHg2MDhBLCAweDYwREUsIDB4NjBENSwgMHg2MTIwLCAweDYwRjIsIDB4NjExMSwgMHg2MTM3LCAweDYxMzAsDQorICAgIDB4NjE5OCwgMHg2MjEzLCAweDYyQTYsIDB4NjNGNSwgMHg2NDYwLCAweDY0OUQsIDB4NjRDRSwgMHg2NTRFLA0KKyAgICAweDY2MDAsIDB4NjYxNSwgMHg2NjA5LCAweDY2MkUsIDB4NjYxRSwgMHg2NjI0LCAweDY2NjUsIDB4NjY1NywNCisgICAgMHg2NjU5LCAweEZBMTIsIDB4NjY3MywgMHg2Njk5LCAweDY2QTAsIDB4NjZCMiwgMHg2NkJGLCAweDY2RkEsDQorICAgIDB4NjcwRSwgMHhGOTI5LCAweDY3NjYsIDB4NjdCQiwgMHg2ODUyLCAweDY3QzAsIDB4NjgwMSwgMHg2ODQ0LA0KKyAgICAweDY4Q0YsIDB4RkExMywgMHg2OTY4LCAweEZBMTQsIDB4Njk5OCwgMHg2OUUyLCAweDZBMzAsIDB4NkE2QiwNCisgICAgMHg2QTQ2LCAweDZBNzMsIDB4NkE3RSwgMHg2QUUyLCAweDZBRTQsIDB4NkJENiwgMHg2QzNGLCAweDZDNUMsDQorICAgIDB4NkM4NiwgMHg2QzZGLCAweDZDREEsIDB4NkQwNCwgMHg2RDg3LCAweDZENkYsIDB4NkQ5NiwgMHg2REFDLA0KKyAgICAweDZEQ0YsIDB4NkRGOCwgMHg2REYyLCAweDZERkMsIDB4NkUzOSwgMHg2RTVDLCAweDZFMjcsIDB4NkUzQywNCisgICAgMHg2RUJGLCAweDZGODgsIDB4NkZCNSwgMHg2RkY1LCAweDcwMDUsIDB4NzAwNywgMHg3MDI4LCAweDcwODUsDQorICAgIDB4NzBBQiwgMHg3MTBGLCAweDcxMDQsIDB4NzE1QywgMHg3MTQ2LCAweDcxNDcsIDB4RkExNSwgMHg3MUMxLA0KKyAgICAweDcxRkUsIDB4NzJCMSwgMHg3MkJFLCAweDczMjQsIDB4RkExNiwgMHg3Mzc3LCAweDczQkQsIDB4NzNDOSwNCisgICAgMHg3M0Q2LCAweDczRTMsIDB4NzNEMiwgMHg3NDA3LCAweDczRjUsIDB4NzQyNiwgMHg3NDJBLCAweDc0MjksDQorICAgIDB4NzQyRSwgMHg3NDYyLCAweDc0ODksIDB4NzQ5RiwgMHg3NTAxLCAweDc1NkYsIDB4NzY4MiwgMHg3NjlDLA0KKyAgICAweDc2OUUsIDB4NzY5QiwgMHg3NkE2LCAweEZBMTcsIDB4Nzc0NiwgMHg1MkFGLCAweDc4MjEsIDB4Nzg0RSwNCisgICAgMHg3ODY0LCAweDc4N0EsIDB4NzkzMCwgMHhGQTE4LCAweEZBMTksIDB4RkExQSwgMHg3OTk0LCAweEZBMUIsDQorICAgIDB4Nzk5QiwgMHg3QUQxLCAweDdBRTcsIDB4RkExQywgMHg3QUVCLCAweDdCOUUsIDB4RkExRCwgMHg3RDQ4LA0KKyAgICAweDdENUMsIDB4N0RCNywgMHg3REEwLCAweDdERDYsIDB4N0U1MiwgMHg3RjQ3LCAweDdGQTEsIDB4RkExRSwNCisgICAgMHg4MzAxLCAweDgzNjIsIDB4ODM3RiwgMHg4M0M3LCAweDgzRjYsIDB4ODQ0OCwgMHg4NEI0LCAweDg1NTMsDQorICAgIDB4ODU1OSwgMHg4NTZCLCAweEZBMUYsIDB4ODVCMCwgMHhGQTIwLCAweEZBMjEsIDB4ODgwNywgMHg4OEY1LA0KKyAgICAweDhBMTIsIDB4OEEzNywgMHg4QTc5LCAweDhBQTcsIDB4OEFCRSwgMHg4QURGLCAweEZBMjIsIDB4OEFGNiwNCisgICAgMHg4QjUzLCAweDhCN0YsIDB4OENGMCwgMHg4Q0Y0LCAweDhEMTIsIDB4OEQ3NiwgMHhGQTIzLCAweDhFQ0YsDQorICAgIDB4RkEyNCwgMHhGQTI1LCAweDkwNjcsIDB4OTBERSwgMHhGQTI2LCAweDkxMTUsIDB4OTEyNywgMHg5MURBLA0KKyAgICAweDkxRDcsIDB4OTFERSwgMHg5MUVELCAweDkxRUUsIDB4OTFFNCwgMHg5MUU1LCAweDkyMDYsIDB4OTIxMCwNCisgICAgMHg5MjBBLCAweDkyM0EsIDB4OTI0MCwgMHg5MjNDLCAweDkyNEUsIDB4OTI1OSwgMHg5MjUxLCAweDkyMzksDQorICAgIDB4OTI2NywgMHg5MkE3LCAweDkyNzcsIDB4OTI3OCwgMHg5MkU3LCAweDkyRDcsIDB4OTJEOSwgMHg5MkQwLA0KKyAgICAweEZBMjcsIDB4OTJENSwgMHg5MkUwLCAweDkyRDMsIDB4OTMyNSwgMHg5MzIxLCAweDkyRkIsIDB4RkEyOCwNCisgICAgMHg5MzFFLCAweDkyRkYsIDB4OTMxRCwgMHg5MzAyLCAweDkzNzAsIDB4OTM1NywgMHg5M0E0LCAweDkzQzYsDQorICAgIDB4OTNERSwgMHg5M0Y4LCAweDk0MzEsIDB4OTQ0NSwgMHg5NDQ4LCAweDk1OTIsIDB4RjlEQywgMHhGQTI5LA0KKyAgICAweDk2OUQsIDB4OTZBRiwgMHg5NzMzLCAweDk3M0IsIDB4OTc0MywgMHg5NzRELCAweDk3NEYsIDB4OTc1MSwNCisgICAgMHg5NzU1LCAweDk4NTcsIDB4OTg2NSwgMHhGQTJBLCAweEZBMkIsIDB4OTkyNywgMHhGQTJDLCAweDk5OUUsDQorICAgIDB4OUE0RSwgMHg5QUQ5LCAweDlBREMsIDB4OUI3NSwgMHg5QjcyLCAweDlCOEYsIDB4OUJCMSwgMHg5QkJCLA0KKyAgICAweDlDMDAsIDB4OUQ3MCwgMHg5RDZCLCAweEZBMkQsIDB4OUUxOSwgMHg5RUQxLCAweDAwQUMsIDB4MDA1QywNCisgICAgMHgwMDIwLCAweDAwMjEsIDB4MDAyMiwgMHgwMDIzLCAweDAwMjQsIDB4MDAyNSwgMHgwMDI2LCAweDAwMjcsDQorICAgIDB4MDAyOCwgMHgwMDI5LCAweDAwMkEsIDB4MDAyQiwgMHgwMDJDLCAweDAwMkQsIDB4MDAyRSwgMHgwMDJGLA0KKyAgICAweDAwMzAsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzMsIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsIDB4MDAzNywNCisgICAgMHgwMDM4LCAweDAwMzksIDB4MDAzQSwgMHgwMDNCLCAweDAwM0MsIDB4MDAzRCwgMHgwMDNFLCAweDAwM0YsDQorICAgIDB4MDA0MCwgMHgwMDQxLCAweDAwNDIsIDB4MDA0MywgMHgwMDQ0LCAweDAwNDUsIDB4MDA0NiwgMHgwMDQ3LA0KKyAgICAweDAwNDgsIDB4MDA0OSwgMHgwMDRBLCAweDAwNEIsIDB4MDA0QywgMHgwMDRELCAweDAwNEUsIDB4MDA0RiwNCisgICAgMHgwMDUwLCAweDAwNTEsIDB4MDA1MiwgMHgwMDUzLCAweDAwNTQsIDB4MDA1NSwgMHgwMDU2LCAweDAwNTcsDQorICAgIDB4MDA1OCwgMHgwMDU5LCAweDAwNUEsIDB4MDA1QiwgMHgwMEE1LCAweDAwNUQsIDB4MDA1RSwgMHgwMDVGLA0KKyAgICAweDAwNjAsIDB4MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDA2NCwgMHgwMDY1LCAweDAwNjYsIDB4MDA2NywNCisgICAgMHgwMDY4LCAweDAwNjksIDB4MDA2QSwgMHgwMDZCLCAweDAwNkMsIDB4MDA2RCwgMHgwMDZFLCAweDAwNkYsDQorICAgIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4MDA3MywgMHgwMDc0LCAweDAwNzUsIDB4MDA3NiwgMHgwMDc3LA0KKyAgICAweDAwNzgsIDB4MDA3OSwgMHgwMDdBLCAweDAwN0IsIDB4MDBBNiwgMHgwMDdELCAweDAzMDMsIDB4MDJCQywNCisgICAgMHgwMDVDLCAweDAyQkIsIDB4MDA3QywgMHgwMDdFLCAweDAwQTEsIDB4MDBBMiwgMHgwMEEzLCAweDIwNDQsDQorICAgIDB4MDE5MiwgMHgwMEE3LCAweDAwQTQsIDB4MjAxQywgMHgwMEFCLCAweDIwMzksIDB4MjAzQSwgMHhGQjAxLA0KKyAgICAweEZCMDIsIDB4MjAxMiwgMHgyMDIwLCAweDIwMjEsIDB4MDBCNywgMHgwMEI2LCAweDIwMjIsIDB4MjAxQSwNCisgICAgMHgyMDFFLCAweDIwMUQsIDB4MDBCQiwgMHgyMDI2LCAweDIwMzAsIDB4MDBCRiwgMHgwMzAxLCAweDAzMDIsDQorICAgIDB4MDBBRiwgMHgwMzA2LCAweDAzMDcsIDB4MDMwOCwgMHgwMzBBLCAweDAwQjgsIDB4MDMwQiwgMHgwMzI4LA0KKyAgICAweDAzMEMsIDB4MDMzNiwgMHgwMEM2LCAweDAwQUEsIDB4MDE0MSwgMHgwMEQ4LCAweDAxNTIsIDB4MDBCQSwNCisgICAgMHgwMEU2LCAweDAxMzEsIDB4MDE0MiwgMHgwMEY4LCAweDAxNTMsIDB4MDBERiwgMHgwMDJELCAweDAwQTksDQorICAgIDB4MDBBQywgMHgwMEFFLCAweDAwQjAsIDB4MDBCMSwgMHgwMEIyLCAweDAwQjMsIDB4MDBCNSwgMHgwMEI5LA0KKyAgICAweDAwQkMsIDB4MDBCRCwgMHgwMEJFLCAweDAwQzAsIDB4MDBDMSwgMHgwMEMyLCAweDAwQzMsIDB4MDBDNCwNCisgICAgMHgwMEM1LCAweDAwQzcsIDB4MDBDOCwgMHgwMEM5LCAweDAwQ0EsIDB4MDBDQiwgMHgwMENDLCAweDAwQ0QsDQorICAgIDB4MDBDRSwgMHgwMENGLCAweDAwRDAsIDB4MDBEMSwgMHgwMEQyLCAweDAwRDMsIDB4MDBENCwgMHgwMEQ1LA0KKyAgICAweDAwRDYsIDB4MDBENywgMHgwMEQ5LCAweDAwREEsIDB4MDBEQiwgMHgwMERDLCAweDAwREQsIDB4MDBERSwNCisgICAgMHgwMEUwLCAweDAwRTEsIDB4MDBFMiwgMHgwMEUzLCAweDAwRTQsIDB4MDBFNSwgMHgwMEU3LCAweDAwRTgsDQorICAgIDB4MDBFOSwgMHgwMEVBLCAweDAwRUIsIDB4MDBFQywgMHgwMEVELCAweDAwRUUsIDB4MDBFRiwgMHgwMEYwLA0KKyAgICAweDAwRjEsIDB4MDBGMiwgMHgwMEYzLCAweDAwRjQsIDB4MDBGNSwgMHgwMEY2LCAweDAwRjcsIDB4MDBGOSwNCisgICAgMHgwMEZBLCAweDAwRkIsIDB4MDBGQywgMHgwMEZELCAweDAwRkUsIDB4MDBGRiwgMHgwMTYwLCAweDAxNzgsDQorICAgIDB4MDE3RCwgMHgwMzA1LCAweDAxNjEsIDB4MjEyMiwgMHgwMTdFLCAweDAwMzAsIDB4MjAwMiwgMHgwMDIxLA0KKyAgICAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwgMHgwMDI3LCAweDAwMjgsIDB4MDAyOSwNCisgICAgMHgwMDJBLCAweDAwMkIsIDB4MDAyQywgMHgwMDJELCAweDAwMkUsIDB4MDAyRiwgMHgwMDMwLCAweDAwMzEsDQorICAgIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LA0KKyAgICAweDAwM0EsIDB4MDAzQiwgMHgwMDNDLCAweDAwM0QsIDB4MDAzRSwgMHgwMDNGLCAweDAwNDAsIDB4MDA0MSwNCisgICAgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LCAweDAwNDYsIDB4MDA0NywgMHgwMDQ4LCAweDAwNDksDQorICAgIDB4MDA0QSwgMHgwMDRCLCAweDAwNEMsIDB4MDA0RCwgMHgwMDRFLCAweDAwNEYsIDB4MDA1MCwgMHgwMDUxLA0KKyAgICAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwgMHgwMDU3LCAweDAwNTgsIDB4MDA1OSwNCisgICAgMHgwMDVBLCAweDAwNUIsIDB4MDBBNSwgMHgwMDVELCAweDAwNUUsIDB4MDA1RiwgMHgwMDYwLCAweDAwNjEsDQorICAgIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LA0KKyAgICAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLCAweDAwNkQsIDB4MDA2RSwgMHgwMDZGLCAweDAwNzAsIDB4MDA3MSwNCisgICAgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywgMHgwMDc4LCAweDAwNzksDQorICAgIDB4MDA3QSwgMHgwMDdCLCAweDAwN0MsIDB4MDA3RCwgMHgyMDNFLCAweEZGNDAsIDB4MjAzMiwgMHgwMEE4LA0KKyAgICAweDIwMzYsIDB4MDBDNCwgMHgwMEY5LCAweDAwRTksIDB4MDBFRCwgMHgwMERGLCAweDAwRTcsIDB4MDBDNywNCisgICAgMHgwMEQxLCAweDAwRjEsIDB4MDBBMiwgMHgwMEEzLCAweDAwRjMsIDB4MDBGQSwgMHgwMEExLCAweDAwQkYsDQorICAgIDB4MDBCRCwgMHgwMEQ2LCAweDAwREMsIDB4MDBFNCwgMHgwMEVCLCAweDAwRUYsIDB4MDBGNiwgMHgwMERDLA0KKyAgICAweDAwRTIsIDB4MDBFQSwgMHgwMEVFLCAweDAwRjQsIDB4MDBGQywgMHgwMEUwLCAweDAwRTksIDB4MDBFMSwNCisgICAgMHgwMDdFLCAweDAwMzAsIDB4MDBBQywgMHgwMDVDLCAweEZGNjAsIDB4RkY2MSwgMHhGRjYyLCAweEZGNjMsDQorICAgIDB4RkY2NCwgMHhGRjY1LCAweEZGNjYsIDB4RkY2NywgMHhGRjY4LCAweEZGNjksIDB4RkY2QSwgMHhGRjZCLA0KKyAgICAweEZGNkMsIDB4RkY2RCwgMHhGRjZFLCAweEZGNkYsIDB4RkY3MCwgMHhGRjcxLCAweEZGNzIsIDB4RkY3MywNCisgICAgMHhGRjc0LCAweEZGNzUsIDB4RkY3NiwgMHhGRjc3LCAweEZGNzgsIDB4RkY3OSwgMHhGRjdBLCAweEZGN0IsDQorICAgIDB4RkY3QywgMHhGRjdELCAweEZGN0UsIDB4RkY3RiwgMHhGRjgwLCAweEZGODEsIDB4RkY4MiwgMHhGRjgzLA0KKyAgICAweEZGODQsIDB4RkY4NSwgMHhGRjg2LCAweEZGODcsIDB4RkY4OCwgMHhGRjg5LCAweEZGOEEsIDB4RkY4QiwNCisgICAgMHhGRjhDLCAweEZGOEQsIDB4RkY4RSwgMHhGRjhGLCAweEZGOTAsIDB4RkY5MSwgMHhGRjkyLCAweEZGOTMsDQorICAgIDB4RkY5NCwgMHhGRjk1LCAweEZGOTYsIDB4RkY5NywgMHhGRjk4LCAweEZGOTksIDB4RkY5QSwgMHhGRjlCLA0KKyAgICAweEZGOUMsIDB4RkY5RCwgMHhGRjlFLCAweEZGOUYsIDB4MzBGMCwgMHgzMEYxLCAweDMwRUUsIDB4MzBBQiwNCisgICAgMHgzMEIxLCAweDMwRjQsIDB4MzBBQywgMHgzMEFFLCAweDMwQjAsIDB4MzBCMiwgMHgzMEI0LCAweDMwQjYsDQorICAgIDB4MzBCOCwgMHgzMEJBLCAweDMwQkMsIDB4MzBCRSwgMHgzMEMwLCAweDMwQzIsIDB4MzBDNSwgMHgzMEM3LA0KKyAgICAweDMwQzksIDB4MzBEMCwgMHgzMEQxLCAweDMwRDMsIDB4MzBENCwgMHgzMEQ2LCAweDMwRDcsIDB4MzBEOSwNCisgICAgMHgzMERBLCAweDMwREMsIDB4MzBERCwgMHhGRjYwLCAweDMwOTIsIDB4MzA0MSwgMHgzMDQzLCAweDMwNDUsDQorICAgIDB4MzA0NywgMHgzMDQ5LCAweDMwODMsIDB4MzA4NSwgMHgzMDg3LCAweDMwNjMsIDB4MzA0MiwgMHgzMDQ0LA0KKyAgICAweDMwNDYsIDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwgMHgzMDRGLCAweDMwNTEsIDB4MzA1MywNCisgICAgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQsIDB4MzA1RiwgMHgzMDYxLCAweDMwNjQsDQorICAgIDB4MzA2NiwgMHgzMDY4LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLCAweDMwNkQsIDB4MzA2RSwgMHgzMDZGLA0KKyAgICAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwgMHgzMDdGLCAweDMwODAsIDB4MzA4MSwNCisgICAgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODksIDB4MzA4QSwgMHgzMDhCLCAweDMwOEMsDQorICAgIDB4MzA4RCwgMHgzMDhGLCAweDMwOTMsIDB4MzA5MCwgMHgzMDkxLCAweDMwOEUsIDB4MzA0QywgMHgzMDRFLA0KKyAgICAweDMwNTAsIDB4MzA1MiwgMHgzMDU0LCAweDMwNTYsIDB4MzA2OCwgMHgzMDVBLCAweDMwNUMsIDB4MzA1RSwNCisgICAgMHgzMDYwLCAweDMwNjIsIDB4MzA2NSwgMHgzMDY3LCAweDMwNjksIDB4MzA3MCwgMHgzMDcxLCAweDMwNzMsDQorICAgIDB4MzA3NCwgMHgzMDc2LCAweDMwNzcsIDB4MzA3OSwgMHgzMDdBLCAweDMwN0MsIDB4MzA3RCwgMHgzMDFELA0KKyAgICAweDMwMUUsIDB4MDA1QiwgMHgwMDVELCAweDMwMDgsIDB4MzAwOSwgMHgzMDBBLCAweDMwMEIsIDB4MzAwRSwNCisgICAgMHgzMDBGLCAweDMwMTAsIDB4MzAxMSwgMHgyMDEyLCAweEZGNjAsIDB4MjUwMCwgMHgyNTAxLCAweDI1MDIsDQorICAgIDB4MjUwMywgMHgyNTA0LCAweDI1MDUsIDB4MjUwNiwgMHgyNTA3LCAweDI1MDgsIDB4MjUwOSwgMHgyNTBBLA0KKyAgICAweDI1MEIsIDB4MjUwQywgMHgyNTBELCAweDI1MEUsIDB4MjUwRiwgMHgyNTEwLCAweDI1MTEsIDB4MjUxMiwNCisgICAgMHgyNTEzLCAweDI1MTQsIDB4MjUxNSwgMHgyNTE2LCAweDI1MTcsIDB4MjUxOCwgMHgyNTE5LCAweDI1MUEsDQorICAgIDB4MjUxQiwgMHgyNTFDLCAweDI1MUQsIDB4MjUxRSwgMHgyNTFGLCAweDI1MjAsIDB4MjUyMSwgMHgyNTIyLA0KKyAgICAweDI1MjMsIDB4MjUyNCwgMHgyNTI1LCAweDI1MjYsIDB4MjUyNywgMHgyNTI4LCAweDI1MjksIDB4MjUyQSwNCisgICAgMHgyNTJCLCAweDI1MkMsIDB4MjUyRCwgMHgyNTJFLCAweDI1MkYsIDB4MjUzMCwgMHgyNTMxLCAweDI1MzIsDQorICAgIDB4MjUzMywgMHgyNTM0LCAweDI1MzUsIDB4MjUzNiwgMHgyNTM3LCAweDI1MzgsIDB4MjUzOSwgMHgyNTNBLA0KKyAgICAweDI1M0IsIDB4MjUzQywgMHgyNTNELCAweDI1M0UsIDB4MjUzRiwgMHgyNTQwLCAweDI1NDEsIDB4MjU0MiwNCisgICAgMHgyNTQzLCAweDI1NDQsIDB4MjU0NSwgMHgyNTQ2LCAweDI1NDcsIDB4MjU0OCwgMHgyNTQ5LCAweDI1NEEsDQorICAgIDB4MjU0QiwgMHgyNUIyLCAweDIwQUMsIDB4MjEyNiwgMHgyMDMyLCAweDIwMzMsIDB4RkIwMCwgMHhGQjAzLA0KKyAgICAweEZCMDQsIDB4MDEwMSwgMHgwMTJCLCAweDAxNkIsIDB4MDExMywgMHgwMTRELCAweDAxMDAsIDB4MDEyQSwNCisgICAgMHgwMTZBLCAweDAxMTIsIDB4MDE0QywgMHgyMTVCLCAweDIxNUMsIDB4MjE1RCwgMHgyMTVFLCAweDIxNTMsDQorICAgIDB4MjE1NCwgMHgyMDcwLCAweDIwNzQsIDB4MjA3NSwgMHgyMDc2LCAweDIwNzcsIDB4MjA3OCwgMHgyMDc5LA0KKyAgICAweDIwODAsIDB4MjA4MSwgMHgyMDgyLCAweDIwODMsIDB4MjA4NCwgMHgyMDg1LCAweDIwODYsIDB4MjA4NywNCisgICAgMHgyMDg4LCAweDIwODksIDB4MDFDRCwgMHgwMTFBLCAweDAwMDAsIDB4MUVCQywgMHgwMUNGLCAweDAwMDAsDQorICAgIDB4MDEyOCwgMHgwMUQxLCAweDAwMDAsIDB4MDFEMywgMHgwMTZFLCAweDAxNjgsIDB4MDFDRSwgMHgwMTFCLA0KKyAgICAweDAwMDAsIDB4MUVCRCwgMHgwMUQwLCAweDAwMDAsIDB4MDEyOSwgMHgwMUQyLCAweDAwMDAsIDB4MDFENCwNCisgICAgMHgwMTZGLCAweDAxNjksIDB4MDI1MSwgMHgwMjUxLCAweDAyNTEsIDB4MDFGRCwgMHgwMEU2LCAweDAyNTQsDQorICAgIDB4MDI1NCwgMHgwMjU0LCAweDAyNTksIDB4MDI1OSwgMHgwMjU5LCAweDAyNUEsIDB4MDI1QSwgMHgwMjVBLA0KKyAgICAweDAyNUIsIDB4MDI1QiwgMHgwMjVCLCAweDAwNkEsIDB4MDE0QiwgMHgwMjc1LCAweDAyOEMsIDB4MDI4QywNCisgICAgMHgwMjhDLCAweDAyOTIsIDB4MDI4MywgMHgwMkQwLCAweDAwMjAsIDB4MDAyMSwgMHgwMDIyLCAweDAwMjMsDQorICAgIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywgMHgwMDI4LCAweDAwMjksIDB4MDAyQSwgMHgwMDJCLA0KKyAgICAweDAwMkMsIDB4MDAyRCwgMHgwMDJFLCAweDAwMkYsIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywNCisgICAgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgsIDB4MDAzOSwgMHgwMDNBLCAweDAwM0IsDQorICAgIDB4MDAzQywgMHgwMDNELCAweDAwM0UsIDB4MDAzRiwgMHgwMDQwLCAweDAwNDEsIDB4MDA0MiwgMHgwMDQzLA0KKyAgICAweDAwNDQsIDB4MDA0NSwgMHgwMDQ2LCAweDAwNDcsIDB4MDA0OCwgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwNCisgICAgMHgwMDRDLCAweDAwNEQsIDB4MDA0RSwgMHgwMDRGLCAweDAwNTAsIDB4MDA1MSwgMHgwMDUyLCAweDAwNTMsDQorICAgIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywgMHgwMDU4LCAweDAwNTksIDB4MDA1QSwgMHgwMDVCLA0KKyAgICAweDAwQTUsIDB4MDA1RCwgMHgwMDVFLCAweDAwNUYsIDB4MDA2MCwgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywNCisgICAgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LCAweDAwNjgsIDB4MDA2OSwgMHgwMDZBLCAweDAwNkIsDQorICAgIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLA0KKyAgICAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LCAweDAwN0EsIDB4MDA3QiwNCisgICAgMHgwMEE2LCAweDAwN0QsIDB4MDMwMywgMHgwMkJDLCAweDAwNUMsIDB4MDJCQiwgMHgwMDdDLCAweDAwN0UsDQorICAgIDB4MDBBMSwgMHgwMEEyLCAweDAwQTMsIDB4MjA0NCwgMHgwMTkyLCAweDAwQTcsIDB4MDBBNCwgMHgyMDFDLA0KKyAgICAweDAwQUIsIDB4MjAzOSwgMHgyMDNBLCAweEZCMDEsIDB4RkIwMiwgMHgyMDEyLCAweDIwMjAsIDB4MjAyMSwNCisgICAgMHgwMEI3LCAweDAwQjYsIDB4MjAyMiwgMHgyMDFBLCAweDIwMUUsIDB4MjAxRCwgMHgwMEJCLCAweDIwMjYsDQorICAgIDB4MjAzMCwgMHgwMEJGLCAweDAzMDEsIDB4MDMwMiwgMHgwMEFGLCAweDAzMDYsIDB4MDMwNywgMHgwMzA4LA0KKyAgICAweDAzMEEsIDB4MDBCOCwgMHgwMzBCLCAweDAzMjgsIDB4MDMwQywgMHgwMzM2LCAweDAwQzYsIDB4MDBBQSwNCisgICAgMHgwMTQxLCAweDAwRDgsIDB4MDE1MiwgMHgwMEJBLCAweDAwRTYsIDB4MDEzMSwgMHgwMTQyLCAweDAwRjgsDQorICAgIDB4MDE1MywgMHgwMERGLCAweDAwMkQsIDB4MDBBOSwgMHgwMEFDLCAweDAwQUUsIDB4MDBCMCwgMHgwMEIxLA0KKyAgICAweDAwQjIsIDB4MDBCMywgMHgwMEI1LCAweDAwQjksIDB4MDBCQywgMHgwMEJELCAweDAwQkUsIDB4MDBDMCwNCisgICAgMHgwMEMxLCAweDAwQzIsIDB4MDBDMywgMHgwMEM0LCAweDAwQzUsIDB4MDBDNywgMHgwMEM4LCAweDAwQzksDQorICAgIDB4MDBDQSwgMHgwMENCLCAweDAwQ0MsIDB4MDBDRCwgMHgwMENFLCAweDAwQ0YsIDB4MDBEMCwgMHgwMEQxLA0KKyAgICAweDAwRDIsIDB4MDBEMywgMHgwMEQ0LCAweDAwRDUsIDB4MDBENiwgMHgwMEQ3LCAweDAwRDksIDB4MDBEQSwNCisgICAgMHgwMERCLCAweDAwREMsIDB4MDBERCwgMHgwMERFLCAweDAwRTAsIDB4MDBFMSwgMHgwMEUyLCAweDAwRTMsDQorICAgIDB4MDBFNCwgMHgwMEU1LCAweDAwRTcsIDB4MDBFOCwgMHgwMEU5LCAweDAwRUEsIDB4MDBFQiwgMHgwMEVDLA0KKyAgICAweDAwRUQsIDB4MDBFRSwgMHgwMEVGLCAweDAwRjAsIDB4MDBGMSwgMHgwMEYyLCAweDAwRjMsIDB4MDBGNCwNCisgICAgMHgwMEY1LCAweDAwRjYsIDB4MDBGNywgMHgwMEY5LCAweDAwRkEsIDB4MDBGQiwgMHgwMEZDLCAweDAwRkQsDQorICAgIDB4MDBGRSwgMHgwMEZGLCAweDAxNjAsIDB4MDE3OCwgMHgwMTdELCAweDAzMDUsIDB4MDE2MSwgMHgyMTIyLA0KKyAgICAweDAxN0UsIDB4MDAzMCwgMHgyMEFDLCAweDIxMjYsIDB4MjAzMiwgMHgyMDMzLCAweEZCMDAsIDB4RkIwMywNCisgICAgMHhGQjA0LCAweDAxMDEsIDB4MDEyQiwgMHgwMTZCLCAweDAxMTMsIDB4MDE0RCwgMHgwMTAwLCAweDAxMkEsDQorICAgIDB4MDE2QSwgMHgwMTEyLCAweDAxNEMsIDB4MjE1QiwgMHgyMTVDLCAweDIxNUQsIDB4MjE1RSwgMHgyMTUzLA0KKyAgICAweDIxNTQsIDB4MjA3MCwgMHgyMDc0LCAweDIwNzUsIDB4MjA3NiwgMHgyMDc3LCAweDIwNzgsIDB4MjA3OSwNCisgICAgMHgyMDgwLCAweDIwODEsIDB4MjA4MiwgMHgyMDgzLCAweDIwODQsIDB4MjA4NSwgMHgyMDg2LCAweDIwODcsDQorICAgIDB4MjA4OCwgMHgyMDg5LCAweDAxQ0QsIDB4MDExQSwgMHgwMDAwLCAweDFFQkMsIDB4MDFDRiwgMHgwMDAwLA0KKyAgICAweDAxMjgsIDB4MDFEMSwgMHgwMDAwLCAweDAxRDMsIDB4MDE2RSwgMHgwMTY4LCAweDAxQ0UsIDB4MDExQiwNCisgICAgMHgwMDAwLCAweDFFQkQsIDB4MDFEMCwgMHgwMDAwLCAweDAxMjksIDB4MDFEMiwgMHgwMDAwLCAweDAxRDQsDQorICAgIDB4MDE2RiwgMHgwMTY5LCAweDAwMzAsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzMsIDB4MDAzNCwgMHgwMDM1LA0KKyAgICAweDAwMzYsIDB4MDAzNywgMHgwMDM4LCAweDAwMzksIDB4MDMzNiwgMHgwMDJELCAweDAwM0QsIDB4MDAyQywNCisgICAgMHgwMDI4LCAweDAwMjksIDB4MDAyRSwgMHgwMDJGLCAweDAwM0EsIDB4MDAzQiwgMHgwMDMwLCAweDAwMzEsDQorICAgIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LA0KKyAgICAweDAzMzYsIDB4MDAyRCwgMHgwMDNELCAweDAwMkMsIDB4MDAyOCwgMHgwMDI5LCAweDAwMkUsIDB4MDAyRiwNCisgICAgMHgwMDNBLCAweDAwM0IsIDB4MDBCNywgMHgyMEFDLCAweDAwMDAsIDB4MjE1MywgMHgyMTU0LCAweDAwQkUsDQorICAgIDB4MjE1NSwgMHgyMTU2LCAweDIxNTcsIDB4MjE1OCwgMHgyMTU5LCAweDIxNUEsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjE1QiwgMHgyMTVDLCAweDIxNUQsIDB4MjE1RSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDMwLCAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsDQorICAgIDB4MDAzOCwgMHgwMDM5LCAweDAwMzAsIDB4MjE2MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMTcwLCAweDIxNzEsDQorICAgIDB4MjE3MiwgMHgyMTczLCAweDIxNzQsIDB4MjE3NSwgMHgyMTc2LCAweDIxNzcsIDB4MjE3OCwgMHgyMTc5LA0KKyAgICAweDIxN0EsIDB4MjE3QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMTYwLCAweDIxNjEsIDB4MjE2MiwNCisgICAgMHgyMTYzLCAweDIxNjQsIDB4MjE2NSwgMHgyMTY2LCAweDIxNjcsIDB4MjE2OCwgMHgyMTY5LCAweDIxNkEsDQorICAgIDB4MjE2QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDQxLCAweDAwNDIsIDB4MDA0MywgMHgwMDQ0LA0KKyAgICAweDAwNDUsIDB4MDA0NiwgMHgwMDQ3LCAweDAwNDgsIDB4MDA0OSwgMHgwMDRBLCAweDAwNEIsIDB4MDA0QywNCisgICAgMHgwMDRELCAweDAwNEUsIDB4MDA0RiwgMHgwMDUwLCAweDAwNTEsIDB4MDA1MiwgMHgwMDUzLCAweDAwNTQsDQorICAgIDB4MDA1NSwgMHgwMDU2LCAweDAwNTcsIDB4MDA1OCwgMHgwMDU5LCAweDAwNUEsIDB4MzA0MiwgMHgzMDQ0LA0KKyAgICAweDMwNDYsIDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwgMHgzMDRGLCAweDMwNTEsIDB4MzA1MywNCisgICAgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQsIDB4MzA1RiwgMHgzMDYxLCAweDMwNjQsDQorICAgIDB4MzA2NiwgMHgzMDY4LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLCAweDMwNkQsIDB4MzA2RSwgMHgzMDZGLA0KKyAgICAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwgMHgzMDdGLCAweDMwODAsIDB4MzA4MSwNCisgICAgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODksIDB4MzA4QSwgMHgzMDhCLCAweDMwOEMsDQorICAgIDB4MzA4RCwgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAweDMwOTMsIDB4MzBBMiwgMHgzMEE0LA0KKyAgICAweDMwQTYsIDB4MzBBOCwgMHgzMEFBLCAweDMwQUIsIDB4MzBBRCwgMHgzMEFGLCAweDMwQjEsIDB4MzBCMywNCisgICAgMHgzMEI1LCAweDMwQjcsIDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsIDB4MzBCRiwgMHgzMEMxLCAweDMwQzQsDQorICAgIDB4MzBDNiwgMHgzMEM4LCAweDMwQ0EsIDB4MzBDQiwgMHgzMENDLCAweDMwQ0QsIDB4MzBDRSwgMHgzMENGLA0KKyAgICAweDMwRDIsIDB4MzBENSwgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwgMHgzMERGLCAweDMwRTAsIDB4MzBFMSwNCisgICAgMHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAweDMwRTksIDB4MzBFQSwgMHgzMEVCLCAweDMwRUMsDQorICAgIDB4MzBFRCwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLCAweDMwRjMsIDB4MzIyMCwgMHgzMjIxLA0KKyAgICAweDMyMjIsIDB4MzIyMywgMHgzMjI0LCAweDMyMjUsIDB4MzIyNiwgMHgzMjI3LCAweDMyMjgsIDB4MzIyOSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDU1QjYsIDB4NTQwOCwgMHg2Q0VCLCAweDU1NEYsIDB4N0I1NCwgMHg0RjhCLA0KKyAgICAweDAwMzAsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzMsIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsIDB4MDAzNywNCisgICAgMHgwMDM4LCAweDAwMzksIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsDQorICAgIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgsIDB4MDAzOSwgMHgzMDYzLCAweDYyNEQsIDB4MzAwNywgMHg0RTAwLA0KKyAgICAweDRFOEMsIDB4NEUwOSwgMHg1NkRCLCAweDRFOTQsIDB4NTE2RCwgMHg0RTAzLCAweDUxNkIsIDB4NEU1RCwNCisgICAgMHg1MzQxLCAweDMwMDcsIDB4NEUwMCwgMHg0RThDLCAweDRFMDksIDB4NTZEQiwgMHg0RTk0LCAweDUxNkQsDQorICAgIDB4NEUwMywgMHg1MTZCLCAweDRFNUQsIDB4NTM0MSwgMHgzMDA3LCAweDRFMDAsIDB4NEU4QywgMHg0RTA5LA0KKyAgICAweDU2REIsIDB4NEU5NCwgMHg1MTZELCAweDRFMDMsIDB4NTE2QiwgMHg0RTVELCAweDMwNjQsIDB4NjI0RCwNCisgICAgMHg0RTAwLCAweDRFOEMsIDB4NEUwOSwgMHg1NkRCLCAweDRFOTQsIDB4NTE2RCwgMHg0RTAzLCAweDUxNkIsDQorICAgIDB4NEU1RCwgMHg1MzQxLCAweDMwMDcsIDB4NEUwMCwgMHg0RThDLCAweDRFMDksIDB4NTZEQiwgMHg0RTk0LA0KKyAgICAweDUxNkQsIDB4NEUwMywgMHg1MTZCLCAweDRFNUQsIDB4NTM0MSwgMHgzMEIzLCAweDMwNjMsIDB4MzBDMywNCisgICAgMHgzMEE5LCAweDAwMDAsIDB4MDAwMCwgMHgyNDYwLCAweDI0NjEsIDB4MjQ2MiwgMHgyNDYzLCAweDI0NjQsDQorICAgIDB4MjQ2NSwgMHgyNDY2LCAweDI0NjcsIDB4MjQ2OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgyNEQwLCAweDI0RDEsIDB4MjREMiwgMHgyNEQzLCAweDI0RDQsIDB4MjRENSwgMHgyNEQ2LA0KKyAgICAweDI0RDcsIDB4MjREOCwgMHgyNEQ5LCAweDI0REEsIDB4MjREQiwgMHgyNERDLCAweDI0REQsIDB4MjRERSwNCisgICAgMHgyNERGLCAweDI0RTAsIDB4MjRFMSwgMHgyNEUyLCAweDI0RTMsIDB4MjRFNCwgMHgyNEU1LCAweDI0RTYsDQorICAgIDB4MjRFNywgMHgyNEU4LCAweDI0RTksIDB4MjRCNiwgMHgyNEI3LCAweDI0QjgsIDB4MjRCOSwgMHgyNEJBLA0KKyAgICAweDI0QkIsIDB4MjRCQywgMHgyNEJELCAweDI0QkUsIDB4MjRCRiwgMHgyNEMwLCAweDI0QzEsIDB4MjRDMiwNCisgICAgMHgyNEMzLCAweDI0QzQsIDB4MjRDNSwgMHgyNEM2LCAweDI0QzcsIDB4MjRDOCwgMHgyNEM5LCAweDI0Q0EsDQorICAgIDB4MjRDQiwgMHgyNENDLCAweDI0Q0QsIDB4MjRDRSwgMHgyNENGLCAweDMwNDIsIDB4MzA0NCwgMHgzMDQ2LA0KKyAgICAweDMwNDgsIDB4MzA0QSwgMHgzMDRCLCAweDMwNEQsIDB4MzA0RiwgMHgzMDUxLCAweDMwNTMsIDB4MzA1NSwNCisgICAgMHgzMDU3LCAweDMwNTksIDB4MzA1QiwgMHgzMDVELCAweDMwNUYsIDB4MzA2MSwgMHgzMDY0LCAweDMwNjYsDQorICAgIDB4MzA2OCwgMHgzMDZBLCAweDMwNkIsIDB4MzA2QywgMHgzMDZELCAweDMwNkUsIDB4MzA2RiwgMHgzMDcyLA0KKyAgICAweDMwNzUsIDB4MzA3OCwgMHgzMDdCLCAweDMwN0UsIDB4MzA3RiwgMHgzMDgwLCAweDMwODEsIDB4MzA4MiwNCisgICAgMHgzMDg0LCAweDMwODYsIDB4MzA4OCwgMHgzMDg5LCAweDMwOEEsIDB4MzA4QiwgMHgzMDhDLCAweDMwOEQsDQorICAgIDB4MzA4RiwgMHgzMDkwLCAweDMwOTEsIDB4MzA5MiwgMHgzMDkzLCAweDMyRDAsIDB4MzJEMSwgMHgzMkQyLA0KKyAgICAweDMyRDMsIDB4MzJENCwgMHgzMkQ1LCAweDMyRDYsIDB4MzJENywgMHgzMkQ4LCAweDMyRDksIDB4MzJEQSwNCisgICAgMHgzMkRCLCAweDMyREMsIDB4MzJERCwgMHgzMkRFLCAweDMyREYsIDB4MzJFMCwgMHgzMkUxLCAweDMyRTIsDQorICAgIDB4MzJFMywgMHgzMkU0LCAweDMyRTUsIDB4MzJFNiwgMHgzMkU3LCAweDMyRTgsIDB4MzJFOSwgMHgzMkVBLA0KKyAgICAweDMyRUIsIDB4MzJFQywgMHgzMkVELCAweDMyRUUsIDB4MzJFRiwgMHgzMkYwLCAweDMyRjEsIDB4MzJGMiwNCisgICAgMHgzMkYzLCAweDMyRjQsIDB4MzJGNSwgMHgzMkY2LCAweDMyRjcsIDB4MzJGOCwgMHgzMkY5LCAweDMyRkEsDQorICAgIDB4MzJGQiwgMHgzMkZDLCAweDMyRkQsIDB4MzJGRSwgMHgzMEYzLCAweDMyODAsIDB4MzI4MSwgMHgzMjgyLA0KKyAgICAweDMyODMsIDB4MzI4NCwgMHgzMjg1LCAweDMyODYsIDB4MzI4NywgMHgzMjg4LCAweDMyODksIDB4MzI5MCwNCisgICAgMHgzMjhBLCAweDMyOEIsIDB4MzI4QywgMHgzMjhELCAweDMyOEUsIDB4MzI4RiwgMHg4QUJGLCAweDMyOUYsDQorICAgIDB4NTI2RiwgMHg2RTFCLCAweDZBMTksIDB4NkIyMCwgMHg1N0ZBLCAweDc5ODEsIDB4MzJBMCwgMHgzMkExLA0KKyAgICAweDMyOUIsIDB4MzI5QSwgMHgzMkEzLCAweDMyQTIsIDB4MzI5NywgMHg1MUZBLCAweDMyOUMsIDB4MzI5NSwNCisgICAgMHg2RTA4LCAweDU4OTcsIDB4NTU0RiwgMHg3QjU0LCAweDRGOEIsIDB4OTZGQiwgMHgyNUNDLCAweDAwMzAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLA0KKyAgICAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNkEsIDB4MDA2QiwNCisgICAgMHgwMDZDLCAweDAwNkQsIDB4MDA2RSwgMHgwMDZGLCAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsDQorICAgIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywgMHgwMDc4LCAweDAwNzksIDB4MDA3QSwgMHgwMDQxLA0KKyAgICAweDAwNDIsIDB4MDA0MywgMHgwMDQ0LCAweDAwNDUsIDB4MDA0NiwgMHgwMDQ3LCAweDAwNDgsIDB4MDA0OSwNCisgICAgMHgwMDRBLCAweDAwNEIsIDB4MDA0QywgMHgwMDRELCAweDAwNEUsIDB4MDA0RiwgMHgwMDUwLCAweDAwNTEsDQorICAgIDB4MDA1MiwgMHgwMDUzLCAweDAwNTQsIDB4MDA1NSwgMHgwMDU2LCAweDAwNTcsIDB4MDA1OCwgMHgwMDU5LA0KKyAgICAweDAwNUEsIDB4MzA0MiwgMHgzMDQ0LCAweDMwNDYsIDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwNCisgICAgMHgzMDRGLCAweDMwNTEsIDB4MzA1MywgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQsDQorICAgIDB4MzA1RiwgMHgzMDYxLCAweDMwNjQsIDB4MzA2NiwgMHgzMDY4LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLA0KKyAgICAweDMwNkQsIDB4MzA2RSwgMHgzMDZGLCAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwNCisgICAgMHgzMDdGLCAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODksDQorICAgIDB4MzA4QSwgMHgzMDhCLCAweDMwOEMsIDB4MzA4RCwgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLA0KKyAgICAweDMwOTMsIDB4MzBBMiwgMHgzMEE0LCAweDMwQTYsIDB4MzBBOCwgMHgzMEFBLCAweDMwQUIsIDB4MzBBRCwNCisgICAgMHgzMEFGLCAweDMwQjEsIDB4MzBCMywgMHgzMEI1LCAweDMwQjcsIDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsDQorICAgIDB4MzBCRiwgMHgzMEMxLCAweDMwQzQsIDB4MzBDNiwgMHgzMEM4LCAweDMwQ0EsIDB4MzBDQiwgMHgzMENDLA0KKyAgICAweDMwQ0QsIDB4MzBDRSwgMHgzMENGLCAweDMwRDIsIDB4MzBENSwgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwNCisgICAgMHgzMERGLCAweDMwRTAsIDB4MzBFMSwgMHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAweDMwRTksDQorICAgIDB4MzBFQSwgMHgzMEVCLCAweDMwRUMsIDB4MzBFRCwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLA0KKyAgICAweDMwRjMsIDB4NjVFNSwgMHg2NzA4LCAweDcwNkIsIDB4NkMzNCwgMHg2NzI4LCAweDkxRDEsIDB4NTcxRiwNCisgICAgMHg1NTRGLCAweDdCNTQsIDB4NEY4QiwgMHgyNUNGLCAweDAwMzAsIDB4MDAwMCwgMHgwMDMxLCAweDAwMDAsDQorICAgIDB4MDAzMiwgMHgwMDAwLCAweDAwMzMsIDB4MDAwMCwgMHgwMDM0LCAweDAwMDAsIDB4MDAzNSwgMHgwMDAwLA0KKyAgICAweDAwMzYsIDB4MDAwMCwgMHgwMDM3LCAweDAwMDAsIDB4MDAzOCwgMHgwMDAwLCAweDAwMzksIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwNCisgICAgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLCAweDAwNkQsDQorICAgIDB4MDA2RSwgMHgwMDZGLCAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LA0KKyAgICAweDAwNzYsIDB4MDA3NywgMHgwMDc4LCAweDAwNzksIDB4MDA3QSwgMHgwMDQxLCAweDAwNDIsIDB4MDA0MywNCisgICAgMHgwMDQ0LCAweDAwNDUsIDB4MDA0NiwgMHgwMDQ3LCAweDAwNDgsIDB4MDA0OSwgMHgwMDRBLCAweDAwNEIsDQorICAgIDB4MDA0QywgMHgwMDRELCAweDAwNEUsIDB4MDA0RiwgMHgwMDUwLCAweDAwNTEsIDB4MDA1MiwgMHgwMDUzLA0KKyAgICAweDAwNTQsIDB4MDA1NSwgMHgwMDU2LCAweDAwNTcsIDB4MDA1OCwgMHgwMDU5LCAweDAwNUEsIDB4MzA0MiwNCisgICAgMHgzMDQ0LCAweDMwNDYsIDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwgMHgzMDRGLCAweDMwNTEsDQorICAgIDB4MzA1MywgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQsIDB4MzA1RiwgMHgzMDYxLA0KKyAgICAweDMwNjQsIDB4MzA2NiwgMHgzMDY4LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLCAweDMwNkQsIDB4MzA2RSwNCisgICAgMHgzMDZGLCAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwgMHgzMDdGLCAweDMwODAsDQorICAgIDB4MzA4MSwgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODksIDB4MzA4QSwgMHgzMDhCLA0KKyAgICAweDMwOEMsIDB4MzA4RCwgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAweDMwOTMsIDB4MzBBMiwNCisgICAgMHgzMEE0LCAweDMwQTYsIDB4MzBBOCwgMHgzMEFBLCAweDMwQUIsIDB4MzBBRCwgMHgzMEFGLCAweDMwQjEsDQorICAgIDB4MzBCMywgMHgzMEI1LCAweDMwQjcsIDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsIDB4MzBCRiwgMHgzMEMxLA0KKyAgICAweDMwQzQsIDB4MzBDNiwgMHgzMEM4LCAweDMwQ0EsIDB4MzBDQiwgMHgzMENDLCAweDMwQ0QsIDB4MzBDRSwNCisgICAgMHgzMENGLCAweDMwRDIsIDB4MzBENSwgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwgMHgzMERGLCAweDMwRTAsDQorICAgIDB4MzBFMSwgMHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAweDMwRTksIDB4MzBFQSwgMHgzMEVCLA0KKyAgICAweDMwRUMsIDB4MzBFRCwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLCAweDMwRjMsIDB4NjVFNSwNCisgICAgMHg2NzA4LCAweDcwNkIsIDB4NkMzNCwgMHg2NzI4LCAweDkxRDEsIDB4NTcxRiwgMHg4Q0EwLCAweDUyREQsDQorICAgIDB4NTU0RiwgMHg3QjU0LCAweDRGOEIsIDB4MjVBMSwgMHgyNUExLCAweDAwMzAsIDB4MDAwMCwgMHgwMDMxLA0KKyAgICAweDAwMDAsIDB4MDAzMiwgMHgwMDAwLCAweDAwMzMsIDB4MDAwMCwgMHgwMDM0LCAweDAwMDAsIDB4MDAzNSwNCisgICAgMHgwMDAwLCAweDAwMzYsIDB4MDAwMCwgMHgwMDM3LCAweDAwMDAsIDB4MDAzOCwgMHgwMDAwLCAweDAwMzksDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsDQorICAgIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLA0KKyAgICAweDAwNkQsIDB4MDA2RSwgMHgwMDZGLCAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwNCisgICAgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywgMHgwMDc4LCAweDAwNzksIDB4MDA3QSwgMHgwMDQxLCAweDAwNDIsDQorICAgIDB4MDA0MywgMHgwMDQ0LCAweDAwNDUsIDB4MDA0NiwgMHgwMDQ3LCAweDAwNDgsIDB4MDA0OSwgMHgwMDRBLA0KKyAgICAweDAwNEIsIDB4MDA0QywgMHgwMDRELCAweDAwNEUsIDB4MDA0RiwgMHgwMDUwLCAweDAwNTEsIDB4MDA1MiwNCisgICAgMHgwMDUzLCAweDAwNTQsIDB4MDA1NSwgMHgwMDU2LCAweDAwNTcsIDB4MDA1OCwgMHgwMDU5LCAweDAwNUEsDQorICAgIDB4MzA0MiwgMHgzMDQ0LCAweDMwNDYsIDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwgMHgzMDRGLA0KKyAgICAweDMwNTEsIDB4MzA1MywgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQsIDB4MzA1RiwNCisgICAgMHgzMDYxLCAweDMwNjQsIDB4MzA2NiwgMHgzMDY4LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLCAweDMwNkQsDQorICAgIDB4MzA2RSwgMHgzMDZGLCAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwgMHgzMDdGLA0KKyAgICAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODksIDB4MzA4QSwNCisgICAgMHgzMDhCLCAweDMwOEMsIDB4MzA4RCwgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAweDMwOTMsDQorICAgIDB4MzBBMiwgMHgzMEE0LCAweDMwQTYsIDB4MzBBOCwgMHgzMEFBLCAweDMwQUIsIDB4MzBBRCwgMHgzMEFGLA0KKyAgICAweDMwQjEsIDB4MzBCMywgMHgzMEI1LCAweDMwQjcsIDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsIDB4MzBCRiwNCisgICAgMHgzMEMxLCAweDMwQzQsIDB4MzBDNiwgMHgzMEM4LCAweDMwQ0EsIDB4MzBDQiwgMHgzMENDLCAweDMwQ0QsDQorICAgIDB4MzBDRSwgMHgzMENGLCAweDMwRDIsIDB4MzBENSwgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwgMHgzMERGLA0KKyAgICAweDMwRTAsIDB4MzBFMSwgMHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAweDMwRTksIDB4MzBFQSwNCisgICAgMHgzMEVCLCAweDMwRUMsIDB4MzBFRCwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLCAweDMwRjMsDQorICAgIDB4NjVFNSwgMHg2NzA4LCAweDcwNkIsIDB4NkMzNCwgMHg2NzI4LCAweDkxRDEsIDB4NTcxRiwgMHg1NTRGLA0KKyAgICAweDdCNTQsIDB4NEY4QiwgMHgyNUEwLCAweDAwMzAsIDB4MDAwMCwgMHgwMDMxLCAweDAwMDAsIDB4MDAzMiwNCisgICAgMHgwMDAwLCAweDAwMzMsIDB4MDAwMCwgMHgwMDM0LCAweDAwMDAsIDB4MDAzNSwgMHgwMDAwLCAweDAwMzYsDQorICAgIDB4MDAwMCwgMHgwMDM3LCAweDAwMDAsIDB4MDAzOCwgMHgwMDAwLCAweDAwMzksIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LA0KKyAgICAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLCAweDAwNkQsIDB4MDA2RSwNCisgICAgMHgwMDZGLCAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsDQorICAgIDB4MDA3NywgMHgwMDc4LCAweDAwNzksIDB4MDA3QSwgMHgwMDQxLCAweDAwNDIsIDB4MDA0MywgMHgwMDQ0LA0KKyAgICAweDAwNDUsIDB4MDA0NiwgMHgwMDQ3LCAweDAwNDgsIDB4MDA0OSwgMHgwMDRBLCAweDAwNEIsIDB4MDA0QywNCisgICAgMHgwMDRELCAweDAwNEUsIDB4MDA0RiwgMHgwMDUwLCAweDAwNTEsIDB4MDA1MiwgMHgwMDUzLCAweDAwNTQsDQorICAgIDB4MDA1NSwgMHgwMDU2LCAweDAwNTcsIDB4MDA1OCwgMHgwMDU5LCAweDAwNUEsIDB4MzA0MiwgMHgzMDQ0LA0KKyAgICAweDMwNDYsIDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwgMHgzMDRGLCAweDMwNTEsIDB4MzA1MywNCisgICAgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQsIDB4MzA1RiwgMHgzMDYxLCAweDMwNjQsDQorICAgIDB4MzA2NiwgMHgzMDY4LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLCAweDMwNkQsIDB4MzA2RSwgMHgzMDZGLA0KKyAgICAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwgMHgzMDdGLCAweDMwODAsIDB4MzA4MSwNCisgICAgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODksIDB4MzA4QSwgMHgzMDhCLCAweDMwOEMsDQorICAgIDB4MzA4RCwgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAweDMwOTMsIDB4MzBBMiwgMHgzMEE0LA0KKyAgICAweDMwQTYsIDB4MzBBOCwgMHgzMEFBLCAweDMwQUIsIDB4MzBBRCwgMHgzMEFGLCAweDMwQjEsIDB4MzBCMywNCisgICAgMHgzMEI1LCAweDMwQjcsIDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsIDB4MzBCRiwgMHgzMEMxLCAweDMwQzQsDQorICAgIDB4MzBDNiwgMHgzMEM4LCAweDMwQ0EsIDB4MzBDQiwgMHgzMENDLCAweDMwQ0QsIDB4MzBDRSwgMHgzMENGLA0KKyAgICAweDMwRDIsIDB4MzBENSwgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwgMHgzMERGLCAweDMwRTAsIDB4MzBFMSwNCisgICAgMHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAweDMwRTksIDB4MzBFQSwgMHgzMEVCLCAweDMwRUMsDQorICAgIDB4MzBFRCwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLCAweDMwRjMsIDB4NjVFNSwgMHg2NzA4LA0KKyAgICAweDcwNkIsIDB4NkMzNCwgMHg2NzI4LCAweDkxRDEsIDB4NTcxRiwgMHg1NTRGLCAweDdCNTQsIDB4NEY4QiwNCisgICAgMHgwMDMwLCAweDAwMDAsIDB4MDAzMSwgMHgwMDAwLCAweDAwMzIsIDB4MDAwMCwgMHgwMDMzLCAweDAwMDAsDQorICAgIDB4MDAzNCwgMHgwMDAwLCAweDAwMzUsIDB4MDAwMCwgMHgwMDM2LCAweDAwMDAsIDB4MDAzNywgMHgwMDAwLA0KKyAgICAweDAwMzgsIDB4MDAwMCwgMHgwMDM5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDYxLA0KKyAgICAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LCAweDAwNjgsIDB4MDA2OSwNCisgICAgMHgwMDZBLCAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwgMHgwMDcwLCAweDAwNzEsDQorICAgIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LA0KKyAgICAweDAwN0EsIDB4MDA0MSwgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LCAweDAwNDYsIDB4MDA0NywNCisgICAgMHgwMDQ4LCAweDAwNDksIDB4MDA0QSwgMHgwMDRCLCAweDAwNEMsIDB4MDA0RCwgMHgwMDRFLCAweDAwNEYsDQorICAgIDB4MDA1MCwgMHgwMDUxLCAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwgMHgwMDU3LA0KKyAgICAweDAwNTgsIDB4MDA1OSwgMHgwMDVBLCAweDMwNDIsIDB4MzA0NCwgMHgzMDQ2LCAweDMwNDgsIDB4MzA0QSwNCisgICAgMHgzMDRCLCAweDMwNEQsIDB4MzA0RiwgMHgzMDUxLCAweDMwNTMsIDB4MzA1NSwgMHgzMDU3LCAweDMwNTksDQorICAgIDB4MzA1QiwgMHgzMDVELCAweDMwNUYsIDB4MzA2MSwgMHgzMDY0LCAweDMwNjYsIDB4MzA2OCwgMHgzMDZBLA0KKyAgICAweDMwNkIsIDB4MzA2QywgMHgzMDZELCAweDMwNkUsIDB4MzA2RiwgMHgzMDcyLCAweDMwNzUsIDB4MzA3OCwNCisgICAgMHgzMDdCLCAweDMwN0UsIDB4MzA3RiwgMHgzMDgwLCAweDMwODEsIDB4MzA4MiwgMHgzMDg0LCAweDMwODYsDQorICAgIDB4MzA4OCwgMHgzMDg5LCAweDMwOEEsIDB4MzA4QiwgMHgzMDhDLCAweDMwOEQsIDB4MzA4RiwgMHgzMDkwLA0KKyAgICAweDMwOTEsIDB4MzA5MiwgMHgzMDkzLCAweDMwQTIsIDB4MzBBNCwgMHgzMEE2LCAweDMwQTgsIDB4MzBBQSwNCisgICAgMHgzMEFCLCAweDMwQUQsIDB4MzBBRiwgMHgzMEIxLCAweDMwQjMsIDB4MzBCNSwgMHgzMEI3LCAweDMwQjksDQorICAgIDB4MzBCQiwgMHgzMEJELCAweDMwQkYsIDB4MzBDMSwgMHgzMEM0LCAweDMwQzYsIDB4MzBDOCwgMHgzMENBLA0KKyAgICAweDMwQ0IsIDB4MzBDQywgMHgzMENELCAweDMwQ0UsIDB4MzBDRiwgMHgzMEQyLCAweDMwRDUsIDB4MzBEOCwNCisgICAgMHgzMERCLCAweDMwREUsIDB4MzBERiwgMHgzMEUwLCAweDMwRTEsIDB4MzBFMiwgMHgzMEU0LCAweDMwRTYsDQorICAgIDB4MzBFOCwgMHgzMEU5LCAweDMwRUEsIDB4MzBFQiwgMHgzMEVDLCAweDMwRUQsIDB4MzBFRiwgMHgzMEYwLA0KKyAgICAweDMwRjEsIDB4MzBGMiwgMHgzMEYzLCAweDY1RTUsIDB4NjcwOCwgMHg3MDZCLCAweDZDMzQsIDB4NjcyOCwNCisgICAgMHg5MUQxLCAweDU3MUYsIDB4NTU0RiwgMHg3QjU0LCAweDRGOEIsIDB4MjVBMCwgMHgzM0MyLCAweDMzQ0QsDQorICAgIDB4MjExNiwgMHgwMDAwLCAweDMzRDgsIDB4MzNEQSwgMHgyMTIxLCAweDIxMjIsIDB4MDAwMCwgMHgyMTAwLA0KKyAgICAweDMzQzIsIDB4MDAwMCwgMHgzM0M0LCAweDIxMDUsIDB4MzM5NywgMHgzMzcxLCAweDMzOTgsIDB4MjExMywNCisgICAgMHgzMzhELCAweDMzOUIsIDB4MzM5NiwgMHgwMDAwLCAweDAwMDAsIDB4MzNENywgMHgzM0Q4LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDMzMDEsIDB4MzMwMiwgMHgzMzA0LCAweDMzMDYsIDB4MDAwMCwgMHgzMzA4LA0KKyAgICAweDAwMDAsIDB4MzMwNywgMHgzMzBBLCAweDAwMDAsIDB4MzMwOSwgMHgwMDAwLCAweDMzMEIsIDB4MDAwMCwNCisgICAgMHgzMzBDLCAweDMzMEUsIDB4MzMwRiwgMHgzMzEwLCAweDMzMTEsIDB4MzMxMiwgMHgzMzEzLCAweDAwMDAsDQorICAgIDB4MzMxNywgMHgwMDAwLCAweDMzMTksIDB4MDAwMCwgMHgzMzFBLCAweDMzMUIsIDB4MzMxQywgMHgzMzFELA0KKyAgICAweDMzMUYsIDB4MzMyMCwgMHgzMzIxLCAweDMzMjQsIDB4MDAwMCwgMHgzMzI1LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgzMzI4LCAweDMzMjksIDB4MDAwMCwgMHgzMzJELCAweDAwMDAsIDB4MDAwMCwgMHgzMzJFLCAweDMzMkYsDQorICAgIDB4MzMzMCwgMHgzMzMyLCAweDAwMDAsIDB4MDAwMCwgMHgzMzM0LCAweDMzMzUsIDB4MzMzQywgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzMzM3LCAweDAwMDAsIDB4MzMzOCwgMHgzMzNBLCAweDMzM0QsIDB4MzM0MSwNCisgICAgMHgzMzNFLCAweDMzM0YsIDB4MzM0MCwgMHgzMzQzLCAweDMzNDQsIDB4MzM0NSwgMHgzMzQ2LCAweDMzNDgsDQorICAgIDB4MzM0QiwgMHgzMzRDLCAweDMzNEYsIDB4MzM1MCwgMHgwMDAwLCAweDAwMDAsIDB4MzM1MiwgMHgzMzU0LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzMzUzLCAweDMzNTUsIDB4MzM1NiwgMHgwMDAwLCAweDMzMDEsIDB4MzMwMiwNCisgICAgMHgzMzA0LCAweDMzMDYsIDB4MDAwMCwgMHgzMzA4LCAweDAwMDAsIDB4MzMwNywgMHgzMzBBLCAweDAwMDAsDQorICAgIDB4MzMwOSwgMHgwMDAwLCAweDMzMEIsIDB4MDAwMCwgMHgzMzBDLCAweDMzMEUsIDB4MzMwRiwgMHgzMzEwLA0KKyAgICAweDMzMTEsIDB4MzMxMiwgMHgzMzEzLCAweDAwMDAsIDB4MzMxNywgMHgwMDAwLCAweDMzMTksIDB4MDAwMCwNCisgICAgMHgzMzFBLCAweDMzMUIsIDB4MzMxQywgMHgzMzFELCAweDMzMUYsIDB4MzMyMCwgMHgzMzIxLCAweDMzMjQsDQorICAgIDB4MDAwMCwgMHgzMzI1LCAweDAwMDAsIDB4MDAwMCwgMHgzMzI4LCAweDMzMjksIDB4MDAwMCwgMHgzMzJELA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzMzJFLCAweDMzMkYsIDB4MzMzMCwgMHgzMzMyLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgzMzM0LCAweDMzMzUsIDB4MzMzQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgzMzM3LCAweDAwMDAsDQorICAgIDB4MzMzOCwgMHgzMzNBLCAweDMzM0QsIDB4MzM0MSwgMHgzMzNFLCAweDMzM0YsIDB4MzM0MCwgMHgzMzQzLA0KKyAgICAweDMzNDQsIDB4MzM0NSwgMHgzMzQ2LCAweDMzNDgsIDB4MzM0QiwgMHgzMzRDLCAweDMzNEYsIDB4MzM1MCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MzM1MiwgMHgzMzU0LCAweDAwMDAsIDB4MDAwMCwgMHgzMzUzLCAweDMzNTUsDQorICAgIDB4MzM1NiwgMHgzMzdFLCAweDMzN0QsIDB4MzM3QywgMHgzMzdCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMkQsDQorICAgIDB4MDAzRCwgMHgyMTAzLCAweDI2NDAsIDB4MjY0MiwgMHgzMDEzLCAweDMwMTIsIDB4MzAwQywgMHgzMDBELA0KKyAgICAweDMwMEUsIDB4MzAwRiwgMHgzMDFBLCAweDMwMUIsIDB4MzAxOCwgMHgzMDE5LCAweEZGMDgsIDB4RkYwOSwNCisgICAgMHgzMDFELCAweDMwMUUsIDB4MjAxOCwgMHgyMDE5LCAweDIwMUMsIDB4MjAxRCwgMHgwMDI3LCAweDAwMjIsDQorICAgIDB4MDAwMCwgMHgyMTM1LCAweDAzRDAsIDB4MjIwQSwgMHgyMTBGLCAweDAwQjUsIDB4MDNDNiwgMHgwM0RCLA0KKyAgICAweDAzRDEsIDB4RkZGRCwgMHgyNjY4LCAweDI2NjksIDB4MjY2QywgMHhGRjFBLCAweDAwQTksIDB4MDBBOSwNCisgICAgMHgwMEFFLCAweDAwQUUsIDB4MzAzQiwgMHgzMDNCLCAweDMwMzMsIDB4MzAzNCwgMHgzMDM1LCAweDIwM0MsDQorICAgIDB4MjA0OSwgMHgwMDIxLCAweDIwM0MsIDB4MjA0OSwgMHgyNDRBLCAweDAwMDAsIDB4MjIxMywgMHgyMjYwLA0KKyAgICAweDIyNDMsIDB4MjI3MiwgMHgyMjczLCAweDMwMEMsIDB4MzAwRCwgMHgzMDBFLCAweDMwMEYsIDB4MzAxQSwNCisgICAgMHgzMDFCLCAweDMwMTgsIDB4MzAxOSwgMHhGRjVGLCAweEZGNjAsIDB4MzAwQywgMHgzMDBELCAweDMwMEUsDQorICAgIDB4MzAwRiwgMHgzMDFBLCAweDMwMUIsIDB4MzAxOCwgMHgzMDE5LCAweEZGNUYsIDB4RkY2MCwgMHgyMzlCLA0KKyAgICAweDIzOUQsIDB4MjM5RSwgMHgyM0EwLCAweDIzOUQsIDB4MjM5QiwgMHgyM0EwLCAweDIzOUUsIDB4MjNBMSwNCisgICAgMHgyM0EzLCAweDIzQTQsIDB4MjNBNiwgMHgyM0EzLCAweDIzQTEsIDB4MjNBNiwgMHgyM0E0LCAweDIzQTEsDQorICAgIDB4MjNBMywgMHgyM0E0LCAweDIzQTYsIDB4MjNBMywgMHgyM0ExLCAweDIzQTYsIDB4MjNBNCwgMHhGRjVDLA0KKyAgICAweDIwMTUsIDB4MzAxRCwgMHgzMDFFLCAweDIwMTgsIDB4MjAxOSwgMHgyMDE4LCAweDIwMTksIDB4MjcwMiwNCisgICAgMHgyNzAyLCAweDI3MDIsIDB4MjcwMiwgMHgzMDNELCAweDMwMTIsIDB4MzA5RiwgMHg1MzRELCAweDIyMDcsDQorICAgIDB4MjIwNSwgMHgyMkEwLCAweDIyOTYsIDB4MjI5OCwgMHgyMjk1LCAweDIyOTcsIDB4MjI5RSwgMHgyMjk1LA0KKyAgICAweDAwMjEsIDB4MjVCMywgMHgyNUMwLCAweDI1QjYsIDB4MjFFNiwgMHgyMUU4LCAweDIxRTcsIDB4MjFFOSwNCisgICAgMHgyMUQwLCAweDIxOTQsIDB4MjE5OCwgMHgyMTk5LCAweDIxOTYsIDB4MjE5NywgMHgyMUNDLCAweDIxQzYsDQorICAgIDB4MjFDNCwgMHgyMUM1LCAweDIxOTAsIDB4MjE5MiwgMHgyMTkxLCAweDIxOTMsIDB4MjE5NCwgMHgyMTk1LA0KKyAgICAweDI1MDQsIDB4MjUwNiwgMHgzMDMwLCAweDIzMDcsIDB4MzAzMCwgMHgyMzA3LCAweDMwMzAsIDB4MjMwNywNCisgICAgMHgzMDMwLCAweDIzMDcsIDB4MzAzMCwgMHgyMzA3LCAweDI3NDAsIDB4MjczRiwgMHgyNUExLCAweDI1QTAsDQorICAgIDB4MjVBMSwgMHgyNUExLCAweDI1QTEsIDB4MjVBMSwgMHgyNUExLCAweDI1QUIsIDB4MjVBMCwgMHgyNUFBLA0KKyAgICAweDI3MUEsIDB4MjcxQSwgMHgyNUM3LCAweDI1QzYsIDB4MjVDNywgMHgyNUM3LCAweDI1QzcsIDB4MjVDNywNCisgICAgMHgyNUM3LCAweDI1QzYsIDB4MjVDNiwgMHgyNUNFLCAweDI1QzksIDB4MjVDQiwgMHgyNUU2LCAweDI1Q0YsDQorICAgIDB4MjAyMiwgMHgyNzU2LCAweDI3NTYsIDB4Mjc1NiwgMHgyNzU2LCAweDMwMDgsIDB4MzAwOSwgMHgzMDA4LA0KKyAgICAweDMwMDksIDB4MzAwQSwgMHgzMDBCLCAweDMwMEEsIDB4MzAwQiwgMHgzMDUzLCAweDMwNTMsIDB4MzBCMywNCisgICAgMHgzMEIzLCAweDMwOUQsIDB4MzA5RSwgMHgzMDQxLCAweDMwNDIsIDB4MzA0MywgMHgzMDQ0LCAweDMwNDUsDQorICAgIDB4MzA0NiwgMHgzMDQ3LCAweDMwNDgsIDB4MzA0OSwgMHgzMDRBLCAweDMwNEIsIDB4MzA0QiwgMHgzMDRDLA0KKyAgICAweDMwNEQsIDB4MzA0RSwgMHgzMDRGLCAweDMwNTAsIDB4MzA1MSwgMHgzMDUxLCAweDMwNTIsIDB4MzA1MywNCisgICAgMHgzMDUzLCAweDMwNTQsIDB4MzA1NSwgMHgzMDU2LCAweDMwNTcsIDB4MzA1OCwgMHgzMDU5LCAweDMwNUEsDQorICAgIDB4MzA1QiwgMHgzMDVDLCAweDMwNUQsIDB4MzA1RSwgMHgzMDVGLCAweDMwNjAsIDB4MzA2MSwgMHgzMDYyLA0KKyAgICAweDMwNjMsIDB4MzA2NCwgMHgzMDY1LCAweDMwNjYsIDB4MzA2NywgMHgzMDY4LCAweDMwNjksIDB4MzA2QSwNCisgICAgMHgzMDZCLCAweDMwNkMsIDB4MzA2RCwgMHgzMDZFLCAweDMwNkYsIDB4MzA3MCwgMHgzMDcxLCAweDMwNzIsDQorICAgIDB4MzA3MywgMHgzMDc0LCAweDMwNzUsIDB4MzA3NiwgMHgzMDc3LCAweDMwNzgsIDB4MzA3OSwgMHgzMDdBLA0KKyAgICAweDMwN0IsIDB4MzA3QywgMHgzMDdELCAweDMwN0UsIDB4MzA3RiwgMHgzMDgwLCAweDMwODEsIDB4MzA4MiwNCisgICAgMHgzMDgzLCAweDMwODQsIDB4MzA4NSwgMHgzMDg2LCAweDMwODcsIDB4MzA4OCwgMHgzMDg5LCAweDMwOEEsDQorICAgIDB4MzA4QiwgMHgzMDhDLCAweDMwOEQsIDB4MzA4RSwgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLA0KKyAgICAweDMwOTMsIDB4MzA5NCwgMHgzMEZELCAweDMwRkUsIDB4MzBGQywgMHgzMEExLCAweDMwQTIsIDB4MzBBMywNCisgICAgMHgzMEE0LCAweDMwQTUsIDB4MzBBNiwgMHgzMEE3LCAweDMwQTgsIDB4MzBBOSwgMHgzMEFBLCAweDMwRjUsDQorICAgIDB4MzBBQiwgMHgzMEFDLCAweDMwQUQsIDB4MzBBRSwgMHgzMEFGLCAweDMwQjAsIDB4MzBGNiwgMHgzMEIxLA0KKyAgICAweDMwQjIsIDB4MzBCMywgMHgzMEIzLCAweDMwQjQsIDB4MzBCNSwgMHgzMEI2LCAweDMwQjcsIDB4MzBCOCwNCisgICAgMHgzMEI5LCAweDMwQkEsIDB4MzBCQiwgMHgzMEJDLCAweDMwQkQsIDB4MzBCRSwgMHgzMEJGLCAweDMwQzAsDQorICAgIDB4MzBDMSwgMHgzMEMyLCAweDMwQzMsIDB4MzBDNCwgMHgzMEM1LCAweDMwQzYsIDB4MzBDNywgMHgzMEM4LA0KKyAgICAweDMwQzksIDB4MzBDQSwgMHgzMENCLCAweDMwQ0MsIDB4MzBDRCwgMHgzMENFLCAweDMwQ0YsIDB4MzBEMCwNCisgICAgMHgzMEQxLCAweDMwRDIsIDB4MzBEMywgMHgzMEQ0LCAweDMwRDUsIDB4MzBENiwgMHgzMEQ3LCAweDMwRDgsDQorICAgIDB4MzBEOSwgMHgzMERBLCAweDMwREIsIDB4MzBEQywgMHgzMERELCAweDMwREUsIDB4MzBERiwgMHgzMEUwLA0KKyAgICAweDMwRTEsIDB4MzBFMiwgMHgzMEUzLCAweDMwRTQsIDB4MzBFNSwgMHgzMEU2LCAweDMwRTcsIDB4MzBFOCwNCisgICAgMHgzMEU5LCAweDMwRUEsIDB4MzBFQiwgMHgzMEVDLCAweDMwRUQsIDB4MzBFRSwgMHgzMEVGLCAweDMwRjAsDQorICAgIDB4MzBGMSwgMHgzMEYyLCAweDMwRjMsIDB4MzBGNCwgMHgzMEY3LCAweDMwRjgsIDB4MzBGOSwgMHgzMEZBLA0KKyAgICAweDMwOUQsIDB4MzA5RSwgMHgzMDQxLCAweDMwNDIsIDB4MzA0MywgMHgzMDQ0LCAweDMwNDUsIDB4MzA0NiwNCisgICAgMHgzMDQ3LCAweDMwNDgsIDB4MzA0OSwgMHgzMDRBLCAweDMwNEIsIDB4MzA0QiwgMHgzMDRDLCAweDMwNEQsDQorICAgIDB4MzA0RSwgMHgzMDRGLCAweDMwNTAsIDB4MzA1MSwgMHgzMDUxLCAweDMwNTIsIDB4MzA1MywgMHgzMDUzLA0KKyAgICAweDMwNTQsIDB4MzA1NSwgMHgzMDU2LCAweDMwNTcsIDB4MzA1OCwgMHgzMDU5LCAweDMwNUEsIDB4MzA1QiwNCisgICAgMHgzMDVDLCAweDMwNUQsIDB4MzA1RSwgMHgzMDVGLCAweDMwNjAsIDB4MzA2MSwgMHgzMDYyLCAweDMwNjMsDQorICAgIDB4MzA2NCwgMHgzMDY1LCAweDMwNjYsIDB4MzA2NywgMHgzMDY4LCAweDMwNjksIDB4MzA2QSwgMHgzMDZCLA0KKyAgICAweDMwNkMsIDB4MzA2RCwgMHgzMDZFLCAweDMwNkYsIDB4MzA3MCwgMHgzMDcxLCAweDMwNzIsIDB4MzA3MywNCisgICAgMHgzMDc0LCAweDMwNzUsIDB4MzA3NiwgMHgzMDc3LCAweDMwNzgsIDB4MzA3OSwgMHgzMDdBLCAweDMwN0IsDQorICAgIDB4MzA3QywgMHgzMDdELCAweDMwN0UsIDB4MzA3RiwgMHgzMDgwLCAweDMwODEsIDB4MzA4MiwgMHgzMDgzLA0KKyAgICAweDMwODQsIDB4MzA4NSwgMHgzMDg2LCAweDMwODcsIDB4MzA4OCwgMHgzMDg5LCAweDMwOEEsIDB4MzA4QiwNCisgICAgMHgzMDhDLCAweDMwOEQsIDB4MzA4RSwgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAweDMwOTMsDQorICAgIDB4MzA5NCwgMHgzMEZELCAweDMwRkUsIDB4MzBGQywgMHgzMEExLCAweDMwQTIsIDB4MzBBMywgMHgzMEE0LA0KKyAgICAweDMwQTUsIDB4MzBBNiwgMHgzMEE3LCAweDMwQTgsIDB4MzBBOSwgMHgzMEFBLCAweDMwRjUsIDB4MzBBQiwNCisgICAgMHgzMEFDLCAweDMwQUQsIDB4MzBBRSwgMHgzMEFGLCAweDMwQjAsIDB4MzBGNiwgMHgzMEIxLCAweDMwQjIsDQorICAgIDB4MzBCMywgMHgzMEIzLCAweDMwQjQsIDB4MzBCNSwgMHgzMEI2LCAweDMwQjcsIDB4MzBCOCwgMHgzMEI5LA0KKyAgICAweDMwQkEsIDB4MzBCQiwgMHgzMEJDLCAweDMwQkQsIDB4MzBCRSwgMHgzMEJGLCAweDMwQzAsIDB4MzBDMSwNCisgICAgMHgzMEMyLCAweDMwQzMsIDB4MzBDNCwgMHgzMEM1LCAweDMwQzYsIDB4MzBDNywgMHgzMEM4LCAweDMwQzksDQorICAgIDB4MzBDQSwgMHgzMENCLCAweDMwQ0MsIDB4MzBDRCwgMHgzMENFLCAweDMwQ0YsIDB4MzBEMCwgMHgzMEQxLA0KKyAgICAweDMwRDIsIDB4MzBEMywgMHgzMEQ0LCAweDMwRDUsIDB4MzBENiwgMHgzMEQ3LCAweDMwRDgsIDB4MzBEOSwNCisgICAgMHgzMERBLCAweDMwREIsIDB4MzBEQywgMHgzMERELCAweDMwREUsIDB4MzBERiwgMHgzMEUwLCAweDMwRTEsDQorICAgIDB4MzBFMiwgMHgzMEUzLCAweDMwRTQsIDB4MzBFNSwgMHgzMEU2LCAweDMwRTcsIDB4MzBFOCwgMHgzMEU5LA0KKyAgICAweDMwRUEsIDB4MzBFQiwgMHgzMEVDLCAweDMwRUQsIDB4MzBFRSwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwNCisgICAgMHgzMEYyLCAweDMwRjMsIDB4MzBGNCwgMHgzMEY3LCAweDMwRjgsIDB4MzBGOSwgMHgzMEZBLCAweDMwMDEsDQorICAgIDB4MzAwMiwgMHgzMEZCLCAweEZGMEEsIDB4MjAzQiwgMHgyNUNCLCAweDI1Q0UsIDB4MjVDOSwgMHgyNUIzLA0KKyAgICAweDI1QjIsIDB4MzBGRCwgMHgzMEZFLCAweDMwOUQsIDB4MzA5RSwgMHhGRjA4LCAweEZGMDksIDB4MzAxNCwNCisgICAgMHgzMDE1LCAweEZGMDgsIDB4RkYwOSwgMHgzMDE0LCAweDMwMTUsIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsDQorICAgIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgsIDB4MDAzOSwgMHgzMDQxLA0KKyAgICAweDMwNDIsIDB4MzA0MywgMHgzMDQ0LCAweDMwNDUsIDB4MzA0NiwgMHgzMDQ3LCAweDMwNDgsIDB4MzA0OSwNCisgICAgMHgzMDRBLCAweDMwNEIsIDB4MzA0QiwgMHgzMDRDLCAweDMwNEQsIDB4MzA0RSwgMHgzMDRGLCAweDMwNTAsDQorICAgIDB4MzA1MSwgMHgzMDUxLCAweDMwNTIsIDB4MzA1MywgMHgzMDU0LCAweDMwNTUsIDB4MzA1NiwgMHgzMDU3LA0KKyAgICAweDMwNTgsIDB4MzA1OSwgMHgzMDVBLCAweDMwNUIsIDB4MzA1QywgMHgzMDVELCAweDMwNUUsIDB4MzA1RiwNCisgICAgMHgzMDYwLCAweDMwNjEsIDB4MzA2MiwgMHgzMDYzLCAweDMwNjQsIDB4MzA2NSwgMHgzMDY2LCAweDMwNjcsDQorICAgIDB4MzA2OCwgMHgzMDY5LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLCAweDMwNkQsIDB4MzA2RSwgMHgzMDZGLA0KKyAgICAweDMwNzAsIDB4MzA3MSwgMHgzMDcyLCAweDMwNzMsIDB4MzA3NCwgMHgzMDc1LCAweDMwNzYsIDB4MzA3NywNCisgICAgMHgzMDc4LCAweDMwNzksIDB4MzA3QSwgMHgzMDdCLCAweDMwN0MsIDB4MzA3RCwgMHgzMDdFLCAweDMwN0YsDQorICAgIDB4MzA4MCwgMHgzMDgxLCAweDMwODIsIDB4MzA4MywgMHgzMDg0LCAweDMwODUsIDB4MzA4NiwgMHgzMDg3LA0KKyAgICAweDMwODgsIDB4MzA4OSwgMHgzMDhBLCAweDMwOEIsIDB4MzA4QywgMHgzMDhELCAweDMwOEUsIDB4MzA4RiwNCisgICAgMHgzMDkwLCAweDMwOTEsIDB4MzA5MiwgMHgzMDkzLCAweDMwOTQsIDB4MzA0MSwgMHgzMDQzLCAweDMwNDUsDQorICAgIDB4MzA0NywgMHgzMDQ5LCAweDMwNEIsIDB4MzA1MSwgMHgzMDYzLCAweDMwODMsIDB4MzA4NSwgMHgzMDg3LA0KKyAgICAweDMwOEUsIDB4MzBBMSwgMHgzMEEyLCAweDMwQTMsIDB4MzBBNCwgMHgzMEE1LCAweDMwQTYsIDB4MzBBNywNCisgICAgMHgzMEE4LCAweDMwQTksIDB4MzBBQSwgMHgzMEFCLCAweDMwRjUsIDB4MzBBQywgMHgzMEFELCAweDMwQUUsDQorICAgIDB4MzBBRiwgMHgzMEIwLCAweDMwQjEsIDB4MzBGNiwgMHgzMEIyLCAweDMwQjMsIDB4MzBCNCwgMHgzMEI1LA0KKyAgICAweDMwQjYsIDB4MzBCNywgMHgzMEI4LCAweDMwQjksIDB4MzBCQSwgMHgzMEJCLCAweDMwQkMsIDB4MzBCRCwNCisgICAgMHgzMEJFLCAweDMwQkYsIDB4MzBDMCwgMHgzMEMxLCAweDMwQzIsIDB4MzBDMywgMHgzMEM0LCAweDMwQzUsDQorICAgIDB4MzBDNiwgMHgzMEM3LCAweDMwQzgsIDB4MzBDOSwgMHgzMENBLCAweDMwQ0IsIDB4MzBDQywgMHgzMENELA0KKyAgICAweDMwQ0UsIDB4MzBDRiwgMHgzMEQwLCAweDMwRDEsIDB4MzBEMiwgMHgzMEQzLCAweDMwRDQsIDB4MzBENSwNCisgICAgMHgzMEQ2LCAweDMwRDcsIDB4MzBEOCwgMHgzMEQ5LCAweDMwREEsIDB4MzBEQiwgMHgzMERDLCAweDMwREQsDQorICAgIDB4MzBERSwgMHgzMERGLCAweDMwRTAsIDB4MzBFMSwgMHgzMEUyLCAweDMwRTMsIDB4MzBFNCwgMHgzMEU1LA0KKyAgICAweDMwRTYsIDB4MzBFNywgMHgzMEU4LCAweDMwRTksIDB4MzBFQSwgMHgzMEVCLCAweDMwRUMsIDB4MzBFRCwNCisgICAgMHgzMEVFLCAweDMwRUYsIDB4MzBGMCwgMHgzMEYxLCAweDMwRjIsIDB4MzBGMywgMHgzMEY0LCAweDMwQTEsDQorICAgIDB4MzBBMywgMHgzMEE1LCAweDMwQTcsIDB4MzBBOSwgMHgzMEY1LCAweDMwRjYsIDB4MzBDMywgMHgzMEUzLA0KKyAgICAweDMwRTUsIDB4MzBFNywgMHgzMEVFLCAweDMwRkMsIDB4MzBGQywgMHg2Q0U4LCAweDIwQUMsIDB4MjEyNiwNCisgICAgMHgyMDMyLCAweDIwMzMsIDB4RkIwMCwgMHhGQjAzLCAweEZCMDQsIDB4MDEwMSwgMHgwMTJCLCAweDAxNkIsDQorICAgIDB4MDExMywgMHgwMTRELCAweDAxMDAsIDB4MDEyQSwgMHgwMTZBLCAweDAxMTIsIDB4MDE0QywgMHgyMTVCLA0KKyAgICAweDIxNUMsIDB4MjE1RCwgMHgyMTVFLCAweDIxNTMsIDB4MjE1NCwgMHgyMDcwLCAweDIwNzQsIDB4MjA3NSwNCisgICAgMHgyMDc2LCAweDIwNzcsIDB4MjA3OCwgMHgyMDc5LCAweDIwODAsIDB4MjA4MSwgMHgyMDgyLCAweDIwODMsDQorICAgIDB4MjA4NCwgMHgyMDg1LCAweDIwODYsIDB4MjA4NywgMHgyMDg4LCAweDIwODksIDB4MDFDRCwgMHgwMTFBLA0KKyAgICAweDAwMDAsIDB4MUVCQywgMHgwMUNGLCAweDAwMDAsIDB4MDEyOCwgMHgwMUQxLCAweDAwMDAsIDB4MDFEMywNCisgICAgMHgwMTZFLCAweDAxNjgsIDB4MDFDRSwgMHgwMTFCLCAweDAwMDAsIDB4MUVCRCwgMHgwMUQwLCAweDAwMDAsDQorICAgIDB4MDEyOSwgMHgwMUQyLCAweDAwMDAsIDB4MDFENCwgMHgwMTZGLCAweDAxNjksIDB4MDI1MSwgMHgwMjUxLA0KKyAgICAweDAyNTEsIDB4MDFGRCwgMHgwMEU2LCAweDAyNTQsIDB4MDI1NCwgMHgwMjU0LCAweDAyNTksIDB4MDI1OSwNCisgICAgMHgwMjU5LCAweDAyNUEsIDB4MDI1QSwgMHgwMjVBLCAweDAyNUIsIDB4MDI1QiwgMHgwMjVCLCAweDAwNkEsDQorICAgIDB4MDE0QiwgMHgwMjc1LCAweDAyOEMsIDB4MDI4QywgMHgwMjhDLCAweDAyOTIsIDB4MDI4MywgMHgwMkQwLA0KKyAgICAweDAwMjAsIDB4MDAyMSwgMHgwMDIyLCAweDAwMjMsIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywNCisgICAgMHgwMDI4LCAweDAwMjksIDB4MDAyQSwgMHgwMDJCLCAweDAwMkMsIDB4MDAyRCwgMHgwMDJFLCAweDAwMkYsDQorICAgIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LA0KKyAgICAweDAwMzgsIDB4MDAzOSwgMHgwMDNBLCAweDAwM0IsIDB4MDAzQywgMHgwMDNELCAweDAwM0UsIDB4MDAzRiwNCisgICAgMHgwMDQwLCAweDAwNDEsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDQsIDB4MDA0NSwgMHgwMDQ2LCAweDAwNDcsDQorICAgIDB4MDA0OCwgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwgMHgwMDRDLCAweDAwNEQsIDB4MDA0RSwgMHgwMDRGLA0KKyAgICAweDAwNTAsIDB4MDA1MSwgMHgwMDUyLCAweDAwNTMsIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywNCisgICAgMHgwMDU4LCAweDAwNTksIDB4MDA1QSwgMHgwMDVCLCAweDAwQTUsIDB4MDA1RCwgMHgwMDVFLCAweDAwNUYsDQorICAgIDB4MDA2MCwgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LA0KKyAgICAweDAwNjgsIDB4MDA2OSwgMHgwMDZBLCAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwNCisgICAgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsDQorICAgIDB4MDA3OCwgMHgwMDc5LCAweDAwN0EsIDB4MDA3QiwgMHgwMEE2LCAweDAwN0QsIDB4MDMwMywgMHgwMkJDLA0KKyAgICAweDAwNUMsIDB4MDJCQiwgMHgwMDdDLCAweDAwN0UsIDB4MDBBMSwgMHgwMEEyLCAweDAwQTMsIDB4MjA0NCwNCisgICAgMHgwMTkyLCAweDAwQTcsIDB4MDBBNCwgMHgyMDFDLCAweDAwQUIsIDB4MjAzOSwgMHgyMDNBLCAweEZCMDEsDQorICAgIDB4RkIwMiwgMHgyMDEyLCAweDIwMjAsIDB4MjAyMSwgMHgwMEI3LCAweDAwQjYsIDB4MjAyMiwgMHgyMDFBLA0KKyAgICAweDIwMUUsIDB4MjAxRCwgMHgwMEJCLCAweDIwMjYsIDB4MjAzMCwgMHgwMEJGLCAweDAzMDEsIDB4MDMwMiwNCisgICAgMHgwMEFGLCAweDAzMDYsIDB4MDMwNywgMHgwMzA4LCAweDAzMEEsIDB4MDBCOCwgMHgwMzBCLCAweDAzMjgsDQorICAgIDB4MDMwQywgMHgwMzM2LCAweDAwQzYsIDB4MDBBQSwgMHgwMTQxLCAweDAwRDgsIDB4MDE1MiwgMHgwMEJBLA0KKyAgICAweDAwRTYsIDB4MDEzMSwgMHgwMTQyLCAweDAwRjgsIDB4MDE1MywgMHgwMERGLCAweDAwMkQsIDB4MDBBOSwNCisgICAgMHgwMEFDLCAweDAwQUUsIDB4MDBCMCwgMHgwMEIxLCAweDAwQjIsIDB4MDBCMywgMHgwMEI1LCAweDAwQjksDQorICAgIDB4MDBCQywgMHgwMEJELCAweDAwQkUsIDB4MDBDMCwgMHgwMEMxLCAweDAwQzIsIDB4MDBDMywgMHgwMEM0LA0KKyAgICAweDAwQzUsIDB4MDBDNywgMHgwMEM4LCAweDAwQzksIDB4MDBDQSwgMHgwMENCLCAweDAwQ0MsIDB4MDBDRCwNCisgICAgMHgwMENFLCAweDAwQ0YsIDB4MDBEMCwgMHgwMEQxLCAweDAwRDIsIDB4MDBEMywgMHgwMEQ0LCAweDAwRDUsDQorICAgIDB4MDBENiwgMHgwMEQ3LCAweDAwRDksIDB4MDBEQSwgMHgwMERCLCAweDAwREMsIDB4MDBERCwgMHgwMERFLA0KKyAgICAweDAwRTAsIDB4MDBFMSwgMHgwMEUyLCAweDAwRTMsIDB4MDBFNCwgMHgwMEU1LCAweDAwRTcsIDB4MDBFOCwNCisgICAgMHgwMEU5LCAweDAwRUEsIDB4MDBFQiwgMHgwMEVDLCAweDAwRUQsIDB4MDBFRSwgMHgwMEVGLCAweDAwRjAsDQorICAgIDB4MDBGMSwgMHgwMEYyLCAweDAwRjMsIDB4MDBGNCwgMHgwMEY1LCAweDAwRjYsIDB4MDBGNywgMHgwMEY5LA0KKyAgICAweDAwRkEsIDB4MDBGQiwgMHgwMEZDLCAweDAwRkQsIDB4MDBGRSwgMHgwMEZGLCAweDAxNjAsIDB4MDE3OCwNCisgICAgMHgwMTdELCAweDAzMDUsIDB4MDE2MSwgMHgyMTIyLCAweDAxN0UsIDB4MDAzMCwgMHgyMEFDLCAweDIxMjYsDQorICAgIDB4MjAzMiwgMHgyMDMzLCAweEZCMDAsIDB4RkIwMywgMHhGQjA0LCAweDAxMDEsIDB4MDEyQiwgMHgwMTZCLA0KKyAgICAweDAxMTMsIDB4MDE0RCwgMHgwMTAwLCAweDAxMkEsIDB4MDE2QSwgMHgwMTEyLCAweDAxNEMsIDB4MjE1QiwNCisgICAgMHgyMTVDLCAweDIxNUQsIDB4MjE1RSwgMHgyMTUzLCAweDIxNTQsIDB4MjA3MCwgMHgyMDc0LCAweDIwNzUsDQorICAgIDB4MjA3NiwgMHgyMDc3LCAweDIwNzgsIDB4MjA3OSwgMHgyMDgwLCAweDIwODEsIDB4MjA4MiwgMHgyMDgzLA0KKyAgICAweDIwODQsIDB4MjA4NSwgMHgyMDg2LCAweDIwODcsIDB4MjA4OCwgMHgyMDg5LCAweDAxQ0QsIDB4MDExQSwNCisgICAgMHgwMDAwLCAweDFFQkMsIDB4MDFDRiwgMHgwMDAwLCAweDAxMjgsIDB4MDFEMSwgMHgwMDAwLCAweDAxRDMsDQorICAgIDB4MDE2RSwgMHgwMTY4LCAweDAxQ0UsIDB4MDExQiwgMHgwMDAwLCAweDFFQkQsIDB4MDFEMCwgMHgwMDAwLA0KKyAgICAweDAxMjksIDB4MDFEMiwgMHgwMDAwLCAweDAxRDQsIDB4MDE2RiwgMHgwMTY5LCAweDAwMzAsIDB4MDAzMSwNCisgICAgMHgwMDMyLCAweDAwMzMsIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsIDB4MDAzNywgMHgwMDM4LCAweDAwMzksDQorICAgIDB4MDMzNiwgMHgwMDJELCAweDAwM0QsIDB4MDAyQywgMHgwMDI4LCAweDAwMjksIDB4MDAyRSwgMHgwMDJGLA0KKyAgICAweDAwM0EsIDB4MDAzQiwgMHgwMDMwLCAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwNCisgICAgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAzMzYsIDB4MDAyRCwgMHgwMDNELCAweDAwMkMsDQorICAgIDB4MDAyOCwgMHgwMDI5LCAweDAwMkUsIDB4MDAyRiwgMHgwMDNBLCAweDAwM0IsIDB4MDBCNywgMHgwMDJELA0KKyAgICAweDAwM0QsIDB4MjEwMywgMHgyNjQwLCAweDI2NDIsIDB4MzAxMywgMHgzMDEyLCAweDMwMEMsIDB4MzAwRCwNCisgICAgMHgzMDBFLCAweDMwMEYsIDB4MzAxQSwgMHgzMDFCLCAweDMwMTgsIDB4MzAxOSwgMHhGRjA4LCAweEZGMDksDQorICAgIDB4MzAxRCwgMHgzMDFFLCAweDIwMTgsIDB4MjAxOSwgMHgyMDFDLCAweDIwMUQsIDB4MDAyNywgMHgwMDIyLA0KKyAgICAweDkwMzgsIDB4OEIwMSwgMHg3REUzLCAweDlFQzMsIDB4NkVBQiwgMHg3OThELCAweDYwOTQsIDB4NkQ3NywNCisgICAgMHg2MTY4LCAweDY5ODIsIDB4NkUzNCwgMHg4OTEwLCAweDZGMjIsIDB4NTY2OCwgMHg2NUUyLCAweDc5NDgsDQorICAgIDB4ODY1QiwgMHg5N0ZGLCAweDUyRTQsIDB4OEIzOSwgMHg2M0VELCAweDY0Q0EsIDB4Nzg0RiwgMHg3QTQwLA0KKyAgICAweDZCQkEsIDB4Nzk0OSwgMHg4OTk2LCAweDcxNkUsIDB4NzkzRSwgMHg4MDA1LCAweDgxRUQsIDB4Nzk1RCwNCisgICAgMHg2NjkxLCAweDdGNzIsIDB4NkQ4OSwgMHg3MkMwLCAweDYxM0MsIDB4NzcxRSwgMHg3QkMwLCAweDc5NTYsDQorICAgIDB4NTBFNywgMHg1QzY0LCAweDVERTIsIDB4NjE4RSwgMHg4RDA4LCAweDUzN0QsIDB4NTYwNiwgMHg4NDU3LA0KKyAgICAweDVGQjUsIDB4NjFGMiwgMHg5M0FELCAweDc5OEUsIDB4OUIyRCwgMHg3QTgxLCAweDk2RTMsIDB4Njg4NSwNCisgICAgMHg3RTQxLCAweDY2NjksIDB4NTM1MSwgMHg3ODkxLCAweDhDRDMsIDB4NjU0RiwgMHg0RkFFLCAweDUwMDIsDQorICAgIDB4NTg0MCwgMHg1MkM5LCAweDZCNjUsIDB4NThBOCwgMHg2QkNGLCAweDUxNEQsIDB4NjIzRSwgMHg3OTUwLA0KKyAgICAweDZCMDQsIDB4OTY4NiwgMHg4NjVDLCAweDZEREEsIDB4OTg1RSwgMHg2NkM2LCAweDZCNzcsIDB4N0RGNCwNCisgICAgMHg5MzRBLCAweDVFQ0EsIDB4OTMwNCwgMHg2OTgyLCAweDUxQjQsIDB4NjM0QywgMHg4NkRCLCAweDkwODksDQorICAgIDB4OTAyMiwgMHg1MDQ5LCAweDdERUYsIDB4OTA1NSwgMHg1M0E5LCAweDk5MEMsIDB4ODg1QiwgMHg1RUY2LA0KKyAgICAweDZDQkYsIDB4OTI1QiwgMHg3RkMxLCAweDgyQkQsIDB4OTZDNSwgMHg1QkIzLCAweDYxNjgsIDB4Njk4MiwNCisgICAgMHg2QkJCLCAweDY1NjIsIDB4OENBQiwgMHg1RENDLCAweDk4MTEsIDB4NUUzMCwgMHg4RUNDLCAweDdBQUUsDQorICAgIDB4NTc0NywgMHg1MDkxLCAweDdBNzQsIDB4NTA2NSwgMHg1RUZBLCAweDkyMzcsIDB4NkE4RSwgMHg0RUE0LA0KKyAgICAweDUxNkMsIDB4NjZGNCwgMHg2ODIxLCAweDc4NkMsIDB4N0Q1RSwgMHg4MDAzLCAweDhDRkMsIDB4OTY0RCwNCisgICAgMHg2MkY3LCAweDdGNkEsIDB4NEY3RiwgMHg1M0YyLCAweDU5QzksIDB4OEIxRCwgMHg5MEFBLCAweDUzQ0UsDQorICAgIDB4OEYyRiwgMHg2N0Q0LCAweDc3QUMsIDB4ODIxQywgMHg2OTZGLCAweDY3N0UsIDB4OEExRiwgMHg0RTA4LA0KKyAgICAweDU3RjQsIDB4NjkwRCwgMHg4MDc3LCAweDg5QUEsIDB4OTA0MiwgMHg2MzZFLCAweDY0NDIsIDB4ODIzOSwNCisgICAgMHg3RENGLCAweDgwNjEsIDB4NTBDRiwgMHg4QTk1LCAweDYwNjUsIDB4NTE0NiwgMHg3NzNBLCAweDgwNzQsDQorICAgIDB4OERGMywgMHg1RUFELCAweDVFRjcsIDB4ODI0NywgMHg2ODQzLCAweDkwMDMsIDB4NkQzRSwgMHg2MzkyLA0KKyAgICAweDhGMjksIDB4NzNFRCwgMHg5ODEyLCAweDYwQjIsIDB4NjI0OSwgMHg2NTkwLCAweDdEQ0IsIDB4OEFCOSwNCisgICAgMHg4Q0E3LCAweDcyMzYsIDB4ODQ3QSwgMHg1MjA2LCAweDU2NzQsIDB4NjFBNCwgMHg3Qzg5LCAweDdEMUIsDQorICAgIDB4OTZGMCwgMHg4NTNELCAweDRGQkYsIDB4NjM2NywgMHg3NkM2LCAweDY4NUQsIDB4ODEwOCwgMHg4MDM2LA0KKyAgICAweDdGRkMsIDB4NTQwRiwgMHg5NkEzLCAweDlFOUYsIDB4OUU5NywgMHg4MDZGLCAweDgwN0UsIDB4NkU3RSwNCisgICAgMHg1MDg1LCAweDUxOTMsIDB4NTFEQiwgMHg1MzE1LCAweDUzNDAsIDB4OTZEOSwgMHg1NUE5LCAweDU2QzEsDQorICAgIDB4NTcwRCwgMHg1OEFCLCAweDU5REEsIDB4NUEzNiwgMHg1QUJFLCAweDVENEUsIDB4NUQ4NywgMHg1REM5LA0KKyAgICAweDVERDMsIDB4NUYyRCwgMHg1Rjk4LCAweDYwRDgsIDB4NjEzRCwgMHg2MUZFLCAweDYyNjgsIDB4NjJDRiwNCisgICAgMHg2NTFELCAweDY0MEYsIDB4NjRGMiwgMHg2NTVELCAweDY2NUYsIDB4NjdBOSwgMHg2N0U3LCAweDY5NkIsDQorICAgIDB4NjkzMCwgMHg2OUE3LCAweDZBNDQsIDB4NkE5MCwgMHg2QzA4LCAweDZDMTMsIDB4NkUyMywgMHg2RjExLA0KKyAgICAweDZFRkUsIDB4NkYzRSwgMHg3MUZGLCAweDczRTUsIDB4NzQzMiwgMHg3NDVGLCAweDc0RTAsIDB4NzUwQywNCisgICAgMHg3NjcyLCAweDc5MkEsIDB4NzhENCwgMHg3OUJBLCAweDdBMTksIDB4N0E5NSwgMHg3Q0YyLCAweDdENzMsDQorICAgIDB4N0RERCwgMHg3RTM1LCAweDdGQUUsIDB4N0ZFMSwgMHg4MDVBLCAweDgwNUYsIDB4ODA3MywgMHg4MDcwLA0KKyAgICAweDgwNzYsIDB4ODE1MywgMHg4MThBLCAweDgxQjUsIDB4ODFDRCwgMHg4M0YyLCAweDg1NTUsIDB4ODVENSwNCisgICAgMHg4NzFBLCAweDg4MzYsIDB4ODg5RSwgMHg4OEQ4LCAweDg4RjQsIDB4ODkyQiwgMHg4OTNCLCAweDg5NkEsDQorICAgIDB4ODk2RiwgMHg4QTFELCAweDhEMDUsIDB4OEQwRiwgMHg5RjRFLCAweDhFOTEsIDB4OEVBMSwgMHg5MDUyLA0KKyAgICAweDkwMEUsIDB4OTEzMCwgMHg5MTU2LCAweDkxNTgsIDB4OTE2NSwgMHg5MTczLCAweDkxNzIsIDB4OTFBMiwNCisgICAgMHg5MUFGLCAweDkxQUEsIDB4OTFCNCwgMHg5MUJBLCAweDk0NzcsIDB4OTY5OCwgMHg5NzNELCAweDk3NjAsDQorICAgIDB4OTc3MSwgMHg5ODBDLCAweDk4NzMsIDB4OThDMywgMHg5QTQ1LCAweDlCNEQsIDB4OUI1OCwgMHg5QkM2LA0KKyAgICAweDlCRTEsIDB4OUJGMSwgMHg5RDQ4LCAweDlEQ0YsIDB4OUYwOCwgMHg2MjcxLCAweDY2OTcsIDB4NjEwRiwNCisgICAgMHg4ODYzLCAweDkwNTUsIDB4OTA3QSwgMHg3OEVGLCAweDU0RTEsIDB4MkVENywgMHgyRUJELCAweDUzQTksDQorICAgIDB4NzREQywgMHg5MDRCLCAweDk5MEMsIDB4ODg1RSwgMHg5MkIzLCAweDk1QjEsIDB4NUVGNiwgMHg2M0Y0LA0KKyAgICAweDZDQkYsIDB4NzE1OSwgMHg5MDYwLCAweDkyNUIsIDB4NjVCQywgMHg1RjgwLCAweDdGQzEsIDB4NTM3OCwNCisgICAgMHg5N0YzLCAweDUzMTYsIDB4ODJCMSwgMHg4M0QzLCAweDhDQTgsIDB4OTA0RSwgMHg4MkJELCAweDk2QzUsDQorICAgIDB4OTkxMywgMHg1RUZCLCAweDcwNzAsIDB4NUJCMywgMHg2MTY4LCAweDYxNjgsIDB4NjE2OCwgMHg2OUVBLA0KKyAgICAweDY5ODIsIDB4Njc2RSwgMHg4OUQyLCAweDk2OTQsIDB4NTI3MiwgMHg4RjQ0LCAweDkzOEMsIDB4ODJDNSwNCisgICAgMHg1QkQyLCAweDc0QjAsIDB4N0RFOSwgMHg3RjM2LCAweDkwODQsIDB4OTU5MiwgMHg5N0QzLCAweDgyMTgsDQorICAgIDB4NTM3MSwgMHg1NTlDLCAweDM0MDIsIDB4MzQwMiwgMHg1RTdFLCAweDY1RTMsIDB4NjcxRiwgMHg2QTVGLA0KKyAgICAweDhENzcsIDB4OThFMiwgMHg1NDA5LCAweDU1QUIsIDB4ODY1MCwgMHg5MDA2LCAweDUzQ0EsIDB4NTQzOCwNCisgICAgMHg2MDI1LCAweDdEMUEsIDB4NURFOCwgMHg2MkQyLCAweDhEREQsIDB4OUI1QSwgMHg5QjVBLCAweDUzN0YsDQorICAgIDB4NUYzQSwgMHg2MDUwLCAweDY5QzEsIDB4NkE0QiwgMHg2QTRCLCAweDkxMTUsIDB4OTdGRiwgMHg5OTU3LA0KKyAgICAweDY2ODEsIDB4MkVBOSwgMHg4RkQxLCAweDUwMzYsIDB4NzdFOSwgMHg1MTc3LCAweDg2NUUsIDB4N0E3QSwNCisgICAgMHg5MDQ3LCAweDZBREIsIDB4NTU1MywgMHg1OTUxLCAweDYwNzUsIDB4NjE2NywgMHg4RkNFLCAweDUwOTEsDQorICAgIDB4NkY1NCwgMHg3QTc0LCAweDJFQkMsIDB4MkVCQywgMHg1MTdDLCAweDUyMzgsIDB4NjFCMiwgMHg2NzQzLA0KKyAgICAweDgwQTksIDB4OEIxOSwgMHg5MDYzLCAweDUzOUYsIDB4OEEwMSwgMHg2MjM2LCAweDk2QzcsIDB4OTg2NywNCisgICAgMHg1NDMzLCAweDVBMUIsIDB4OEFBNCwgMHg1REU1LCAweDYxNEMsIDB4NjI4NSwgMHg2M0E3LCAweDY5Q0IsDQorICAgIDB4NkQ2OSwgMHg2RTJGLCAweDgwMTUsIDB4ODE1NCwgMHg4MzUyLCAweDhCMUIsIDB4OENGQywgMHg1NDNGLA0KKyAgICAweDkxNzcsIDB4ODE3MCwgMHg3NTExLCAweDhGQkMsIDB4NEVDQSwgMHg5Mzk2LCAweDVFQTcsIDB4NUY2OSwNCisgICAgMHg2M0ExLCAweDZCNzIsIDB4ODNEQywgMHg1MUI0LCAweDU0QjIsIDB4NTI0QSwgMHg3NTIyLCAweDk5MTAsDQorICAgIDB4NTlGRiwgMHg1OUZGLCAweDVERkYsIDB4OEFFRSwgMHg4QUVFLCAweDhDQzcsIDB4OENDNywgMHg2QjIxLA0KKyAgICAweDZCMjEsIDB4NkVDQiwgMHg3M0JBLCAweDUzRjEsIDB4NjM2OCwgMHg2NTlDLCAweDkwQUEsIDB4NTJGQSwNCisgICAgMHg3MjM1LCAweDcyMzUsIDB4OTE0QywgMHg1RjMxLCAweDRFM0IsIDB4NTNENywgMHg2Mzg4LCAweDU0NjgsDQorICAgIDB4N0Q0MiwgMHg3RkQyLCAweDg4NDYsIDB4OTAzMSwgMHg0RjRGLCAweDg4NTMsIDB4OEZGMCwgMHg1REUxLA0KKyAgICAweDkwNzUsIDB4OTA3NSwgMHg2MjQwLCAweDY2RjgsIDB4NTk3MywgMHg1MkRELCAweDU1NDYsIDB4NUJCNSwNCisgICAgMHg1QzA2LCAweDJFOEMsIDB4MkU4RCwgMHg1QzE5LCAweDZEODgsIDB4Nzg1RCwgMHg4MDk2LCAweDRFMDgsDQorICAgIDB4NUI4MiwgMHg1N0NFLCAweDYwQzUsIDB4NTdGNCwgMHg5OEZFLCAweDY5MEQsIDB4NkI5NiwgMHg5OERGLA0KKyAgICAweDk4RTAsIDB4MkVERSwgMHgzNzhELCAweDRGQjUsIDB4MkU5NywgMHg2RDc4LCAweDc3MUYsIDB4OTAzMiwNCisgICAgMHg0RUJCLCAweDRFQkEsIDB4NTIwMywgMHg1QzBCLCAweDhBMEEsIDB4OEEwQSwgMHg4RkM1LCAweDg4NzAsDQorICAgIDB4OTA0MiwgMHgzNTFGLCAweDUyRTIsIDB4NjIxMCwgMHg3NkRCLCAweDgwNTYsIDB4ODk4MCwgMHg4QUEwLA0KKyAgICAweDhBQ0IsIDB4OTc1QywgMHg5NzVDLCAweDdBMDUsIDB4ODEwNiwgMHg5NkJCLCAweDdDNEQsIDB4N0JDMCwNCisgICAgMHg4QUFBLCAweDk2RUEsIDB4N0Q3NiwgMHg2MjQ3LCAweDZGOTgsIDB4N0ZBMSwgMHg4MjM5LCAweDkwNzgsDQorICAgIDB4OTA3NywgMHg1MjRELCAweDUxNjgsIDB4NjM4MywgMHg2M0Y3LCAweDc2MjYsIDB4OEQ3MCwgMHg5MDAxLA0KKyAgICAweDkwNkQsIDB4OTAyMCwgMHgyRUNBLCAweDkwMUYsIDB4OENDQSwgMHg1QzBBLCAweDVDMEEsIDB4NTlBNSwNCisgICAgMHg2Q0YwLCAweDkwMDAsIDB4OTAyRSwgMHg5NjhBLCAweDlCREIsIDB4NTkyNywgMHgzNDI3LCAweDcwMjcsDQorICAgIDB4OTA1NCwgMHg4MTJCLCAweDRFMzksIDB4NkI0RSwgMHg3MEFELCAweDhBOTUsIDB4NjY5NiwgMHg1MDI0LA0KKyAgICAweDdGNkUsIDB4N0JDOSwgMHgyRUFFLCAweDdCNTEsIDB4OTAxMCwgMHg2N0YxLCAweDZDRTgsIDB4OTlEMCwNCisgICAgMHg1RjZCLCAweDVGQjUsIDB4NjFGMiwgMHg2NzFELCAweDZGNkUsIDB4OEFCRiwgMHg3NkY0LCAweDY3MTUsDQorICAgIDB4NjcxNSwgMHg1ODlDLCAweDhGRkQsIDB4OTAxQSwgMHg1NzZBLCAweDkxRTMsIDB4NTQ0OCwgMHg1RTFELA0KKyAgICAweDdBMEIsIDB4NzY4NCwgMHg5MDY5LCAweDhGRUQsIDB4NkRGQiwgMHg1MTRFLCAweDkwMTQsIDB4NzgzQSwNCisgICAgMHg1NzIxLCAweDU3MUYsIDB4NTFBQywgMHg1NTEwLCAweDdDRDYsIDB4ODVFNCwgMHg4QjA0LCAweDkwMDMsDQorICAgIDB4OTAwRiwgMHg5QTMwLCAweDVDMEUsIDB4OTA1MywgMHg1NDUxLCAweDNCODgsIDB4NTE2NywgMHg4MDg5LA0KKyAgICAweDRFNzMsIDB4NUZDRCwgMHg4QThELCAweDVCRTcsIDB4N0QwRCwgMHg4OTg3LCAweDZEM0UsIDB4ODBCQSwNCisgICAgMHg1MzVBLCAweDg1ODQsIDB4OEZFQiwgMHg3RTFCLCAweDgwODcsIDB4NEUzNywgMHg2RjUxLCAweDkxQjEsDQorICAgIDB4NEYzNCwgMHg1MjI0LCAweDUzNEEsIDB4NUUwNiwgMHg3NTU0LCAweDY2NjksIDB4ODU0MywgMHg5MDdGLA0KKyAgICAweDVGQUUsIDB4OUYzQiwgMHg1MzM5LCAweDJFQUEsIDB4NUY2NSwgMHg1OUVDLCAweDU5RUIsIDB4OEE1NSwNCisgICAgMHg1RTk5LCAweDc1QzUsIDB4NUE2NiwgMHg2NTc3LCAweDZENkUsIDB4OENBMCwgMHg4Q0EwLCAweDY3MEQsDQorICAgIDB4ODk4NiwgMHg0RTE5LCAweDVFNjMsIDB4NUU3MywgMHg1RjBBLCAweDg1MTEsIDB4NTA0RiwgMHg3REU4LA0KKyAgICAweDhGRDQsIDB4OTA0RCwgMHg3QzNGLCAweDUzMDUsIDB4NUQyOSwgMHg2MkIxLCAweDY3MEIsIDB4NzgzMiwNCisgICAgMHg3RTJCLCAweDgwREUsIDB4ODQwQywgMHg5MEE2LCAweDkwQTYsIDB4OThGRCwgMHg5RDZDLCAweDRFQTEsDQorICAgIDB4NUUzRCwgMHg1RkQ4LCAweDVGRDksIDB4NjIzRiwgMHg2NzFCLCAweDY3MUIsIDB4NTE5MiwgMHg2NDY5LA0KKyAgICAweDdGRkIsIDB4NTFFMSwgMHg3OEU4LCAweDlCNTQsIDB4MkZDNywgMHg2OUQ5LCAweDY4NUQsIDB4NEZFMywNCisgICAgMHg1M0M4LCAweDdFNkQsIDB4OUVCRiwgMHg4MTA4LCAweDY2MEUsIDB4NzZERiwgMHg4RkY3LCAweDU5ODQsDQorICAgIDB4NTJEMCwgMHg3NkYyLCAweDgwMTcsIDB4NjIzRSwgMHg3RDBCLCAweDk1ODAsIDB4N0QwNCwgMHg4RThELA0KKyAgICAweDY4N0EsIDB4Njg3QSwgMHg2ODAxLCAweDYxMDksIDB4OEFFRCwgMHg4RjM4LCAweDUyQzcsIDB4NjcwOSwNCisgICAgMHg3MzM2LCAweDczMzYsIDB4NzMzNywgMHg4OEQ1LCAweDkwNEEsIDB4NjZEQywgMHgyRUI3LCAweDg5ODEsDQorICAgIDB4OTkwQSwgMHg3RkNDLCAweDdGRkMsIDB4OEVCNiwgMHg4NjJELCAweDczODcsIDB4OUY4RCwgMHg5RjhELA0KKyAgICAweDY1QzUsIDB4Njg4MSwgMHg3MUQwLCAweDk2QTMsIDB4OUM1NywgMHg5RTlGLCAweDdDN0IsIDB4NUVDOSwNCisgICAgMHg2MTkwLCAweDkwMjMsIDB4NjcxNywgMHg4MDAyLCAweDgxMDcsIDB4NTBDQSwgMHg1MTFBLCAweDUxNTQsDQorICAgIDB4NTE5NSwgMHgyRTg3LCAweDUyOEQsIDB4NTJENywgMHg1MkY5LCAweDUzNDksIDB4MzUzRSwgMHg1M0RGLA0KKyAgICAweDY2RkMsIDB4NTUzMywgMHg1NUU0LCAweDU0NTUsIDB4NTZDMCwgMHg1OTM5LCAweDVBMUMsIDB4NUFDMiwNCisgICAgMHg1QjczLCAweDVCQzMsIDB4NUMxNCwgMHgzN0UyLCAweDVDRTYsIDB4NUU1NCwgMHg0RTQ4LCAweDVFRTMsDQorICAgIDB4NjA5NywgMHg2MkQ0LCAweDYyQ0MsIDB4NjQxQywgMHg2M0M2LCAweDY0MjgsIDB4ODIwOSwgMHg2MzFCLA0KKyAgICAweDY2NUYsIDB4NjY1RiwgMHg2NjYzLCAweDY2RjUsIDB4Njc1RSwgMHg2ODlELCAweDY4OEQsIDB4NjlGNiwNCisgICAgMHg2OTYxLCAweDVCRTgsIDB4NUJFOCwgMHg2OUJCLCAweDZCQ0MsIDB4NkYxMSwgMHg2RTE3LCAweDZGOTgsDQorICAgIDB4NkNBQSwgMHg2Q0FBLCAweDcwMUIsIDB4NzE2MiwgMHg3MjNCLCAweDRFMkMsIDB4NzMxQywgMHg3NENBLA0KKyAgICAweDc0RUYsIDB4NzU3NSwgMHg3NUVDLCAweDc2NEUsIDB4M0ZCMSwgMHg3NzZBLCAweDc3QTksIDB4Nzk0MCwNCisgICAgMHg3OTUzLCAweDc5NTMsIDB4OUY0QiwgMHg3OUFFLCAweDkwODMsIDB4N0I1MywgMHg3QzExLCAweDdDMTQsDQorICAgIDB4NDI2NCwgMHg3QzUwLCAweDdDNTgsIDB4N0Q0NiwgMHg3RDYzLCAweDdFMjIsIDB4N0UyMiwgMHg3RTQ4LA0KKyAgICAweDdFMzUsIDB4N0U0MywgMHg3RThDLCAweDdGNTAsIDB4N0Y1MSwgMHg3RjUxLCAweDdGNTEsIDB4N0ZDNSwNCisgICAgMHg3RkM2LCAweDdGRTksIDB4ODE0MSwgMHg0NDUzLCAweDgyNTgsIDB4ODI3OSwgMHgyRUJGLCAweDJFQzAsDQorICAgIDB4ODJFMywgMHg1MTc5LCAweDgzQTIsIDB4ODQyMCwgMHg4M0JELCAweDg0RjQsIDB4ODU2RCwgMHg4NTg3LA0KKyAgICAweDg1RjQsIDB4NEU1NSwgMHg4NzM3LCAweDg3M0IsIDB4ODgwNSwgMHg4N0JELCAweDg2N0QsIDB4ODgzNiwNCisgICAgMHg4OTQ0LCAweDg4QzYsIDB4ODlCRCwgMHg4QURCLCAweDhCM0UsIDB4OEI1QSwgMHg4RDczLCAweDhEOTksDQorICAgIDB4OERDQiwgMHg4RTM0LCAweDhFNEEsIDB4OEZFRiwgMHg5MDg3LCAweDhGRkEsIDB4OTAxRSwgMHg5MDM1LA0KKyAgICAweDkwNTAsIDB4OEZDOCwgMHg5MDgxLCAweDkwOEEsIDB4OTA4QSwgMHg5MDhBLCAweDkwOEEsIDB4OTA4QSwNCisgICAgMHg5MDhBLCAweDkwODksIDB4OTA4OSwgMHg5MDg5LCAweDkwODksIDB4OTA4OSwgMHg5MDg5LCAweDkwODksDQorICAgIDB4OTA4OSwgMHg5MDg5LCAweDkwODksIDB4OTA4OSwgMHg5MDg5LCAweDkyQ0YsIDB4OTNERCwgMHg5NUJDLA0KKyAgICAweDk2MjEsIDB4OTZCMiwgMHg5NzVDLCAweDk4MzksIDB4OThFQiwgMHg5OTAzLCAweDk5MDksIDB4OTk0NSwNCisgICAgMHg5OTQ1LCAweDk5NEIsIDB4OUEwOCwgMHg5QTVGLCAweDlBNjUsIDB4OUFFRiwgMHg5QjE4LCAweDlCREYsDQorICAgIDB4OUQwOSwgMHg5RDA4LCAweDlFQTUsIDB4OUVDQywgMHg5RjA4LCAweDlGNEEsIDB4OUY2MywgMHg5RjY3LA0KKyAgICAweDlGNkMsIDB4NzE5OSwgMHg3MTk5LCAweDg5MUMsIDB4NjhDOCwgMHg2NkZCLCAweDVGNDUsIDB4NTMwMCwNCisgICAgMHg1Mzg5LCAweDU5NTMsIDB4RkExMSwgMHg2ODUyLCAweDZBNzMsIDB4NkQ4NywgMHhGQTE1LCAweDhBMTIsDQorICAgIDB4NEUwNCwgMHg0RTA1LCAweDRFMUYsIDB4NEUyQiwgMHg0RTJGLCAweDRFMzAsIDB4NEU0MCwgMHg0RTQxLA0KKyAgICAweDRFNDQsIDB4NEU1QSwgMHg0RTdGLCAweDRFOEQsIDB4NEU5NiwgMHg0RUI5LCAweDRFRDAsIDB4NEVFMCwNCisgICAgMHg0RUZELCAweDRFRkYsIDB4NEYwQiwgMHg0RjE1LCAweDRGNjAsIDB4NEYzQiwgMHg0RjQ5LCAweDRGNTQsDQorICAgIDB4NEY3QSwgMHg0RjdELCAweDRGN0UsIDB4NEY5NywgMHg0RkJFLCAweDRGQ0YsIDB4NEZGRCwgMHg1MDAwLA0KKyAgICAweDUwMDEsIDB4NTAxMCwgMHg1MDFCLCAweDUwMjcsIDB4NTAyRSwgMHg1MDU3LCAweDUwNjYsIDB4NTA2QSwNCisgICAgMHg1MDNCLCAweDUwOEYsIDB4NTA5NiwgMHg1MDlDLCAweDUwQ0MsIDB4NTBFNiwgMHg1MEU5LCAweDUwRUYsDQorICAgIDB4NTEwOCwgMHg1MTBCLCAweDUxMTAsIDB4NTExQiwgMHg1MTFFLCAweDUxNUYsIDB4NTFBMSwgMHg1MUJDLA0KKyAgICAweDUxREUsIDB4NTFFRSwgMHg1MUY0LCAweDUyMDEsIDB4NTIwMiwgMHg1MjEzLCAweDUyNDksIDB4NTI2MSwNCisgICAgMHg1MjY2LCAweDUyOTMsIDB4NTJDOCwgMHg1MkYwLCAweDUzMEEsIDB4NTMwQiwgMHg1MzNFLCAweDUzNEMsDQorICAgIDB4NTM0QiwgMHg1MzYxLCAweDUzNkMsIDB4NTNBQiwgMHg1M0RBLCAweDUzRTYsIDB4NTNGNSwgMHg1NDI3LA0KKyAgICAweDU0NEQsIDB4NTQ2NiwgMHg1NDZCLCAweDU0NzQsIDB4NTQ4RCwgMHg1NDk2LCAweDU0QTEsIDB4NTRBRCwNCisgICAgMHg1NEI5LCAweDU0QkYsIDB4NTRDNiwgMHg1NENELCAweDU1MEUsIDB4NTUyQiwgMHg1NTM1LCAweDU1NEEsDQorICAgIDB4NTU2MCwgMHg1NTYxLCAweDU1ODgsIDB4NTU4RSwgMHg1NjA4LCAweDU2MEUsIDB4NTYwRiwgMHg1NjM3LA0KKyAgICAweDU2M0YsIDB4NTY0OSwgMHg1NjRCLCAweDU2NEYsIDB4NTY2NiwgMHg1NjY5LCAweDU2NkYsIDB4NTY3MSwNCisgICAgMHg1NjcyLCAweDU2OTUsIDB4NTY5QSwgMHg1NkFDLCAweDU2QUQsIDB4NTZCMSwgMHg1NkM5LCAweDU2REQsDQorICAgIDB4NTZFNCwgMHg1NzBBLCAweDU3MTUsIDB4NTcyMywgMHg1NzJGLCAweDU3MzMsIDB4NTczNCwgMHg1NzRDLA0KKyAgICAweDU3NzAsIDB4NTc4QywgMHg1NzlDLCAweDU3QjgsIDB4NTdFNiwgMHg1N0VELCAweDU3RjUsIDB4NTdGNiwNCisgICAgMHg1N0ZGLCAweDU4MDksIDB4NTgyMCwgMHg1ODMyLCAweDU4N0MsIDB4NTg4MCwgMHg1OEE5LCAweDU4Q0UsDQorICAgIDB4NThEMCwgMHg1OEQ0LCAweDU4REEsIDB4NThFOSwgMHg1OTBDLCAweDU5MjQsIDB4NTkyRiwgMHg1OTYxLA0KKyAgICAweDU5NkQsIDB4NTlDQSwgMHg1OUQyLCAweDU5REQsIDB4NTlFMywgMHg1OUU0LCAweDVBMDQsIDB4NUEwQywNCisgICAgMHg1QTIzLCAweDVBNDcsIDB4NUE1NSwgMHg1QTYzLCAweDVBNkQsIDB4NUE3RSwgMHg1QTlFLCAweDVBQTcsDQorICAgIDB4NUFBQywgMHg1QUIzLCAweDVBRTAsIDB4NUIwMCwgMHg1QjE5LCAweDVCMjUsIDB4NUIyRCwgMHg1QjQxLA0KKyAgICAweDVCN0MsIDB4NUI3RSwgMHg1QjdGLCAweDVCOEEsIDB4NUMyMywgMHg1QzJCLCAweDVDMzAsIDB4NUM2MywNCisgICAgMHg1QzY5LCAweDVDN0MsIDB4NUNDQiwgMHg1Q0QyLCAweDVDRjQsIDB4NUQyNCwgMHg1RDI2LCAweDVENDMsDQorICAgIDB4NUQ0NiwgMHg1RDRBLCAweDVEOTIsIDB4NUQ5NCwgMHg1RDk5LCAweDVEQTAsIDB4NUREOCwgMHg1REUwLA0KKyAgICAweDVERjgsIDB4NUUwMCwgMHg1RTEyLCAweDVFMTQsIDB4NUUxNSwgMHg1RTE4LCAweDVFMkUsIDB4NUU1OCwNCisgICAgMHg1RTZCLCAweDVFNkMsIDB4NUVBOCwgMHg1RUFBLCAweDVFQkUsIDB4NUVCRiwgMHg1RUNCLCAweDVFRDIsDQorICAgIDB4NUYwNywgMHg1RjBFLCAweDVGMUMsIDB4NUYxRCwgMHg1RjIyLCAweDVGMjgsIDB4NUYzNiwgMHg1RjNCLA0KKyAgICAweDVGNDAsIDB4NUY1MCwgMHg1RjU4LCAweDVGNjQsIDB4NUY4OSwgMHg1RjlDLCAweDVGQTcsIDB4NUZBNCwNCisgICAgMHg1RkFGLCAweDVGQjgsIDB4NUZDNCwgMHg1RkM5LCAweDVGRTEsIDB4NUZFOSwgMHg1RkVELCAweDVGRkMsDQorICAgIDB4NjAxNywgMHg2MDFBLCAweDYwMzMsIDB4NjA2MSwgMHg2MDdGLCAweDYwOUUsIDB4NjBBNCwgMHg2MEIwLA0KKyAgICAweDYwQ0IsIDB4NjBEQiwgMHg2MEY4LCAweDYxMTIsIDB4NjExMywgMHg2MTE0LCAweDYxMUMsIDB4NjE3QywNCisgICAgMHg2MThELCAweDYxOUYsIDB4NjFBOCwgMHg2MUMyLCAweDYxREYsIDB4NjIxNSwgMHg2MjI5LCAweDYyNDMsDQorICAgIDB4NjI0NiwgMHg2MjRDLCAweDYyNTEsIDB4NjI1NiwgMHg2MkM0LCAweDYyRkMsIDB4NjMwQSwgMHg2MzBELA0KKyAgICAweDYzMTgsIDB4NjMzOSwgMHg2MzQyLCAweDYzNDMsIDB4NjM2NSwgMHg2Mzc0LCAweDYzN0QsIDB4NjM4NCwNCisgICAgMHg2Mzg3LCAweDYzOTAsIDB4NjM5RSwgMHg2M0QxLCAweDYzREMsIDB4NjQwOSwgMHg2NDEwLCAweDY0MjIsDQorICAgIDB4NjQ1NCwgMHg2NDVCLCAweDY0NkQsIDB4NjQ3QiwgMHg2NEJFLCAweDY0QkYsIDB4NjRFNSwgMHg2NEY3LA0KKyAgICAweDY0RkIsIDB4NjUwNCwgMHg2NTE2LCAweDY1MTksIDB4NjU0NywgMHg2NTY3LCAweDY1ODEsIDB4NjU4NSwNCisgICAgMHg2NUMyLCAweDY1RjAsIDB4NjVGMiwgMHg2NjJDLCAweDY2NEMsIDB4NjY1QiwgMHg2NjVDLCAweDY2NjEsDQorICAgIDB4NjY2QiwgMHg2Njc3LCAweDY2QTQsIDB4NjZDOCwgMHg2NkVDLCAweDY3MDUsIDB4NjcxMywgMHg2NzMzLA0KKyAgICAweDY3NDgsIDB4Njc0QywgMHg2Nzc2LCAweDY3N0IsIDB4NjdCMCwgMHg2N0IyLCAweDY3RjksIDB4NjdENywNCisgICAgMHg2N0Q5LCAweDY3RjAsIDB4NjgyQywgMHg2ODMwLCAweDY4MzEsIDB4Njg1QiwgMHg2ODcyLCAweDY4NzUsDQorICAgIDB4Njg3QSwgMHg2ODg0LCAweDY4QTUsIDB4NjhCMiwgMHg2OEQwLCAweDY4RDYsIDB4NjhFOCwgMHg2OEVELA0KKyAgICAweDY4RjAsIDB4NjhGMSwgMHg2OEZDLCAweDY5MTEsIDB4NjkxMywgMHg2OTM1LCAweDY5M0IsIDB4Njk1NywNCisgICAgMHg2OTYzLCAweDY5NzIsIDB4Njk3RiwgMHg2OTgwLCAweDY5QTYsIDB4NjlBRCwgMHg2OUI3LCAweDY5RDYsDQorICAgIDB4NjlENywgMHg2QTAxLCAweDZBMEYsIDB4NkExNSwgMHg2QTI4LCAweDZBMzQsIDB4NkEzRSwgMHg2QTQ1LA0KKyAgICAweDZBNTAsIDB4NkE1MSwgMHg2QTU2LCAweDZBNUIsIDB4NkE4MywgMHg2QTg5LCAweDZBOTEsIDB4NkE5RCwNCisgICAgMHg2QTlFLCAweDZBOUYsIDB4NkFEQywgMHg2QUU3LCAweDZBRUMsIDB4NkIxRSwgMHg2QjI0LCAweDZCMzUsDQorICAgIDB4NkI0NiwgMHg2QjU2LCAweDZCNjAsIDB4NkI4MiwgMHg2QkJFLCAweDZCRTEsIDB4NkJGMSwgMHg2QzEwLA0KKyAgICAweDZDMzMsIDB4NkMzNSwgMHg2QzNBLCAweDZDNTksIDB4NkM3NiwgMHg2QzdCLCAweDZDODUsIDB4NkM5NSwNCisgICAgMHg2QzlDLCAweDZDRDAsIDB4NkNENCwgMHg2Q0Q2LCAweDZDRTAsIDB4NkNFQiwgMHg2Q0VDLCAweDZDRUUsDQorICAgIDB4NkQwQSwgMHg2RDBFLCAweDZEMTEsIDB4NkQyRSwgMHg2RDU3LCAweDZENUUsIDB4NkQ2NSwgMHg2RDgyLA0KKyAgICAweDZEQkYsIDB4NkRDNCwgMHg2RENBLCAweDZERDYsIDB4NkRFOSwgMHg2RTIyLCAweDZFNTEsIDB4NkVDNywNCisgICAgMHg2RUNBLCAweDZFQ0UsIDB4NkVGRCwgMHg2RjFBLCAweDZGMkEsIDB4NkYyRiwgMHg2RjMzLCAweDZGNUEsDQorICAgIDB4NkY1RSwgMHg2RjYyLCAweDZGN0QsIDB4NkY4QiwgMHg2RjhELCAweDZGOTIsIDB4NkY5NCwgMHg2RjlBLA0KKyAgICAweDZGQTcsIDB4NkZBOCwgMHg2RkI2LCAweDZGREEsIDB4NkZERSwgMHg2RkY5LCAweDcwMzksIDB4NzAzQywNCisgICAgMHg3MDRBLCAweDcwNTQsIDB4NzA1RCwgMHg3MDVFLCAweDcwNjQsIDB4NzA2QywgMHg3MDdFLCAweDcwODEsDQorICAgIDB4NzA5NSwgMHg3MEI3LCAweDcwRDMsIDB4NzBENCwgMHg3MEQ4LCAweDcwREMsIDB4NzEwNywgMHg3MTIwLA0KKyAgICAweDcxMzEsIDB4NzE0QSwgMHg3MTUyLCAweDcxNjAsIDB4NzE3OSwgMHg3MTkyLCAweDcxQjMsIDB4NzFDQiwNCisgICAgMHg3MUQzLCAweDcxRDYsIDB4NzIwMCwgMHg3MjFELCAweDcyMkIsIDB4NzIzOCwgMHg3MjQxLCAweDcyNTMsDQorICAgIDB4NzI1NSwgMHg3MjU2LCAweDcyNUMsIDB4NzI4RCwgMHg3MkFELCAweDcyQjQsIDB4NzJDNywgMHg3MkZCLA0KKyAgICAweDczMDQsIDB4NzMwNSwgMHg3MzI4LCAweDczMzEsIDB4NzM0MywgMHg3MzZDLCAweDczN0MsIDB4NzM4MywNCisgICAgMHg3Mzg1LCAweDczODYsIDB4NzM5NSwgMHg3MzlFLCAweDczOUYsIDB4NzNBMCwgMHg3M0E2LCAweDczQUIsDQorICAgIDB4NzNCNSwgMHg3M0I3LCAweDczQkMsIDB4NzNDRiwgMHg3M0Q5LCAweDczRTksIDB4NzNGNCwgMHg3M0ZELA0KKyAgICAweDc0MDQsIDB4NzQwQSwgMHg3NDFBLCAweDc0MUIsIDB4NzQyNCwgMHg3NDI4LCAweDc0MkMsIDB4NzQyRiwNCisgICAgMHg3NDMwLCAweDc0MzEsIDB4NzQzOSwgMHg3NDQ0LCAweDc0NDcsIDB4NzQ0QiwgMHg3NDRELCAweDc0NTEsDQorICAgIDB4NzQ1NywgMHg3NDY2LCAweDc0NkIsIDB4NzQ3MSwgMHg3NDgwLCAweDc0ODUsIDB4NzQ4NiwgMHg3NDg3LA0KKyAgICAweDc0OTAsIDB4NzQ5OCwgMHg3NDlDLCAweDc0QTAsIDB4NzRBMywgMHg3NEE4LCAweDc0QUIsIDB4NzRCNSwNCisgICAgMHg3NEJGLCAweDc0QzgsIDB4NzREQSwgMHg3NERFLCAweDc1NEUsIDB4NzU3OSwgMHg3NTgxLCAweDc1OTAsDQorICAgIDB4NzU5MiwgMHg3NTkzLCAweDc1QjQsIDB4NzVFNCwgMHg3NUY5LCAweDc2MDAsIDB4NzYwQSwgMHg3NjE1LA0KKyAgICAweDc2MTYsIDB4NzYxOSwgMHg3NjFFLCAweDc2MkQsIDB4NzYzNSwgMHg3NjQzLCAweDc2NEIsIDB4NzY2NSwNCisgICAgMHg3NjZELCAweDc2NkYsIDB4NzY3MSwgMHg3Njc0LCAweDc2QTQsIDB4NzZBNSwgMHg3NkM1LCAweDc2Q0MsDQorICAgIDB4NzZFQywgMHg3NkZDLCAweDc3MzQsIDB4NzczNiwgMHg3NzVDLCAweDc3NUYsIDB4Nzc2MCwgMHg3NzcyLA0KKyAgICAweDc3N0QsIDB4Nzc5NSwgMHg3N0FBLCAweDc3RTYsIDB4NzdGMCwgMHg3N0Y0LCAweDc4MDYsIDB4NzgyMiwNCisgICAgMHg3ODJELCAweDc4MkUsIDB4NzgzMCwgMHg3ODM1LCAweDc4NjgsIDB4Nzg5RSwgMHg3OEM4LCAweDc4Q0MsDQorICAgIDB4NzhDRSwgMHg3OEU0LCAweDc4RTAsIDB4NzhFMSwgMHg3OEYyLCAweDc4RjcsIDB4NzhGQiwgMHg3OTMxLA0KKyAgICAweDc5MzQsIDB4NzkzQiwgMHg3OTNELCAweDc5NDUsIDB4Nzk1QiwgMHg3OTVDLCAweDc5OEIsIDB4Nzk5NiwNCisgICAgMHg3OTk4LCAweDc5QjgsIDB4NzlCQiwgMHg3OUNBLCAweDc5REEsIDB4N0EwMywgMHg3QTA5LCAweDdBMTEsDQorICAgIDB4N0ExRSwgMHg3QTJELCAweDdBMzksIDB4N0E0NSwgMHg3QTRDLCAweDdBNUQsIDB4N0E2MCwgMHg3QTZELA0KKyAgICAweDdBNzgsIDB4N0FBMCwgMHg3QUEzLCAweDdBQjMsIDB4N0FCQiwgMHg3QUJDLCAweDdBQzYsIDB4N0IwNywNCisgICAgMHg3QjE0LCAweDdCMjcsIDB4N0IzMSwgMHg3QjQ3LCAweDdCNEUsIDB4N0I2MCwgMHg3QjY5LCAweDdCNkQsDQorICAgIDB4N0I3MiwgMHg3QjkxLCAweDdCQUYsIDB4N0JENywgMHg3QkQ5LCAweDdDMEIsIDB4N0MwRiwgMHg3QzIwLA0KKyAgICAweDdDMjYsIDB4N0MzMSwgMHg3QzM2LCAweDdDNTEsIDB4N0M1OSwgMHg3QzY3LCAweDdDNkUsIDB4N0M3MCwNCisgICAgMHg3Q0JDLCAweDdDQkYsIDB4N0NDOCwgMHg3Q0M5LCAweDdDRDcsIDB4N0NEOSwgMHg3Q0RELCAweDdDRUIsDQorICAgIDB4N0QwNywgMHg3RDA4LCAweDdEMDksIDB4N0QxMywgMHg3RDFELCAweDdEMjMsIDB4N0Q0MSwgMHg3RDUzLA0KKyAgICAweDdENTksIDB4N0Q1RCwgMHg3RDdBLCAweDdEODYsIDB4N0Q4QiwgMHg3RDhDLCAweDdEQ0MsIDB4N0RFQiwNCisgICAgMHg3REYxLCAweDdERjksIDB4N0UwOCwgMHg3RTExLCAweDdFMTUsIDB4N0UyMCwgMHg3RTQ3LCAweDdFNjIsDQorICAgIDB4N0U2RSwgMHg3RTczLCAweDdFOEQsIDB4N0U5MSwgMHg3RTk4LCAweDdGNDQsIDB4N0Y0RiwgMHg3RjUyLA0KKyAgICAweDdGNTMsIDB4N0Y2MSwgMHg3RjkxLCAweDdGQkYsIDB4N0ZDRSwgMHg3RkRGLCAweDdGRTUsIDB4N0ZFQywNCisgICAgMHg3RkVFLCAweDdGRUYsIDB4N0ZGQSwgMHg4MDBFLCAweDgwMTEsIDB4ODAxNCwgMHg4MDI0LCAweDgwMjYsDQorICAgIDB4ODAzQSwgMHg4MDNDLCAweDgwNjAsIDB4ODA3MSwgMHg4MDc1LCAweDgwOUUsIDB4ODBBNiwgMHg4MEFCLA0KKyAgICAweDgwRDcsIDB4ODBEOCwgMHg4MTE2LCAweDgxMTgsIDB4ODEzQSwgMHg4MTRBLCAweDgxNEMsIDB4ODE4MSwNCisgICAgMHg4MTg0LCAweDgxQjQsIDB4ODFDRiwgMHg4MUY5LCAweDgyMDMsIDB4ODIyMSwgMHg4MjMyLCAweDgyMzQsDQorICAgIDB4ODI0NiwgMHg4MjRCLCAweDgyNEYsIDB4ODI4RSwgMHg4MkFFLCAweDgyQjcsIDB4ODJCRSwgMHg4MkM2LA0KKyAgICAweDgyRkUsIDB4ODM0MywgMHg4MzUxLCAweDgzNTUsIDB4ODM4NiwgMHg4MzhELCAweDgzOTIsIDB4ODM5OCwNCisgICAgMHg4M0E5LCAweDgzQkYsIDB4ODNDMCwgMHg4M0VBLCAweDg0MEYsIDB4ODQxMSwgMHg4NDRBLCAweDg0NzYsDQorICAgIDB4ODRBOCwgMHg4NEFGLCAweDg0QzAsIDB4ODRDMiwgMHg4NEYwLCAweDg0RkQsIDB4ODUwQywgMHg4NTM0LA0KKyAgICAweDg1NUUsIDB4ODU4RiwgMHg4NUI3LCAweDg1Q0UsIDB4ODVBRCwgMHg4NjEyLCAweDg2MjksIDB4ODY1MiwNCisgICAgMHg4NjYzLCAweDg2NkMsIDB4ODY2RiwgMHg4NjdBLCAweDg2OEQsIDB4ODY5MSwgMHg4Njk4LCAweDg2QTcsDQorICAgIDB4ODZBOCwgMHg4NkZBLCAweDg2RkQsIDB4ODcwQiwgMHg4NzEzLCAweDg3MTksIDB4ODcxRSwgMHg4NzI4LA0KKyAgICAweDg3M0UsIDB4ODc3MSwgMHg4Nzg4LCAweDg3OTksIDB4ODdBQywgMHg4N0FELCAweDg3QjUsIDB4ODdENiwNCisgICAgMHg4N0VCLCAweDg3RUQsIDB4ODgwMSwgMHg4ODAzLCAweDg4MDYsIDB4ODgwQiwgMHg4ODE0LCAweDg4MUMsDQorICAgIDB4ODg1NiwgMHg4ODVGLCAweDg4NjQsIDB4ODg5OCwgMHg4OEFBLCAweDg4QkQsIDB4ODhCRSwgMHg4OENBLA0KKyAgICAweDg4RDIsIDB4ODhEQiwgMHg4OEYwLCAweDg4RjEsIDB4ODkwNiwgMHg4OTE4LCAweDg5MTksIDB4ODkxQSwNCisgICAgMHg4OTI3LCAweDg5MzAsIDB4ODkzRSwgMHg4OTdCLCAweDg5RDQsIDB4ODlENiwgMHg4OUU1LCAweDg5RjEsDQorICAgIDB4OEEwNywgMHg4QTBGLCAweDhBMTUsIDB4OEEyMiwgMHg4QTRFLCAweDhBN0YsIDB4OEFGNCwgMHg4QjFGLA0KKyAgICAweDhCMzcsIDB4OEI0MywgMHg4QjQ0LCAweDhCNTQsIDB4OEI5QywgMHg4QjlFLCAweDhDNDcsIDB4OEM1NCwNCisgICAgMHg4QzczLCAweDhDQTQsIDB4OENEOSwgMHg4Q0UxLCAweDhDRjgsIDB4OENGRSwgMHg4RDFCLCAweDhENjksDQorICAgIDB4OEQ2QywgMHg4RDg0LCAweDhEOEQsIDB4OEQ5NSwgMHg4REE2LCAweDhEQzYsIDB4OERDRSwgMHg4REU0LA0KKyAgICAweDhERUMsIDB4OEUyMCwgMHg4RTRCLCAweDhFNkMsIDB4OEU3MCwgMHg4RTdBLCAweDhFOTIsIDB4OEVBRSwNCisgICAgMHg4RUIzLCAweDhFRDEsIDB4OEVENCwgMHg4RUY5LCAweDhGMTcsIDB4OEYzNiwgMHg4RkE2LCAweDhGQjUsDQorICAgIDB4OEZCNiwgMHg4RkM2LCAweDhGRTAsIDB4OEZFNCwgMHg4RkY2LCAweDkwMDIsIDB4OTAyQywgMHg5MDQ0LA0KKyAgICAweDkwODgsIDB4OTA5NSwgMHg5MDk5LCAweDkwOUIsIDB4OTBBMiwgMHg5MEI0LCAweDkwRDcsIDB4OTBERCwNCisgICAgMHg5MEY0LCAweDkxMTcsIDB4OTExQywgMHg5MTMxLCAweDkxM0EsIDB4OTEzRCwgMHg5MTQ4LCAweDkxNUIsDQorICAgIDB4OTE2MSwgMHg5MTY0LCAweDkxOEUsIDB4OTE5RSwgMHg5MUE4LCAweDkxQUQsIDB4OTFBRSwgMHg5MUIyLA0KKyAgICAweDkxQkMsIDB4OTFGMCwgMHg5MUY3LCAweDkxRkIsIDB4OTIwNywgMHg5MjI4LCAweDkyMzMsIDB4OTIzOCwNCisgICAgMHg5MjQzLCAweDkyNDcsIDB4OTI0RiwgMHg5MjYwLCAweDkyQzIsIDB4OTJDQiwgMHg5MkNDLCAweDkyREYsDQorICAgIDB4OTMwRCwgMHg5MzE1LCAweDkzMUYsIDB4OTMyNywgMHg5MzQ3LCAweDkzNTIsIDB4OTM2NSwgMHg5MzZBLA0KKyAgICAweDkzNkQsIDB4OTM5QiwgMHg5M0JBLCAweDkzQTksIDB4OTNDMSwgMHg5M0NBLCAweDkzRTIsIDB4OTNGQSwNCisgICAgMHg5M0ZELCAweDk0MEYsIDB4OTQzNCwgMHg5NDNGLCAweDk0NTUsIDB4OTQ2QiwgMHg5NDcyLCAweDk1NzgsDQorICAgIDB4OTVBNiwgMHg5NUE5LCAweDk1QUIsIDB4OTVCNCwgMHg5NUJELCAweDk1REEsIDB4OTYxRCwgMHg5NjQxLA0KKyAgICAweDk2NTgsIDB4OTY4NCwgMHg5NkE0LCAweDk2QTksIDB4OTZEMiwgMHg1REIyLCAweDk2REUsIDB4OTZFOSwNCisgICAgMHg5NkYxLCAweDk3MDIsIDB4OTcwOSwgMHg5NzVBLCAweDk3NjMsIDB4OTc2RSwgMHg5NzczLCAweDk3OUEsDQorICAgIDB4OTdBMiwgMHg5N0I1LCAweDk3QjYsIDB4OTdEOSwgMHg5N0RFLCAweDk3RjQsIDB4OTgwQSwgMHg5ODBFLA0KKyAgICAweDk4MUUsIDB4OTgyMywgMHg5ODJCLCAweDk4M0UsIDB4OTg1MiwgMHg5ODUzLCAweDk4NTksIDB4OTg2QywNCisgICAgMHg5OEI4LCAweDk4QkEsIDB4OThCRiwgMHg5OEM4LCAweDk4RTUsIDB4OTkzMiwgMHg5OTMzLCAweDk5NDAsDQorICAgIDB4OTk0RCwgMHg5OTVDLCAweDk5NUYsIDB4OTlCMSwgMHg5OUI5LCAweDk5QkEsIDB4OTlDOSwgMHg5QTAyLA0KKyAgICAweDlBMTYsIDB4OUEyNCwgMHg5QTI3LCAweDlBMkQsIDB4OUEyRSwgMHg5QTM2LCAweDlBMzgsIDB4OUE0QSwNCisgICAgMHg5QTU2LCAweDlBQjUsIDB4OUFCNiwgMHg5QUY5LCAweDlCMDMsIDB4OUIyMCwgMHg5QjMzLCAweDlCMzQsDQorICAgIDB4OUI3MywgMHg5Qjc5LCAweDlCQTcsIDB4OUJDMSwgMHg5QkM3LCAweDlCRDcsIDB4OUJFNywgMHg5QkVCLA0KKyAgICAweDlCRjcsIDB4OUJGQSwgMHg5QkZELCAweDlDMEIsIDB4OUMyNywgMHg5QzJBLCAweDlDMzYsIDB4OUM0MSwNCisgICAgMHg5QzUzLCAweDlDNjMsIDB4OUM2QSwgMHg5Qzc3LCAweDlEMDIsIDB4OUQ0MiwgMHg5RDQ3LCAweDlENjMsDQorICAgIDB4OUQ2OSwgMHg5RDdDLCAweDlEN0UsIDB4OUQ4RCwgMHg5REIxLCAweDlEQzMsIDB4OURDNywgMHg5REQ2LA0KKyAgICAweDlEREYsIDB4OURFQiwgMHg5REY0LCAweDlFMTUsIDB4OUUxRCwgMHg5RUE0LCAweDlFQTgsIDB4OUVBQywNCisgICAgMHg5RUU3LCAweDlFRUUsIDB4OUYxMCwgMHg5RjEyLCAweDlGMTcsIDB4OUYxOSwgMHg5RjJGLCAweDlGMzcsDQorICAgIDB4OUYzOSwgMHg5RjQxLCAweDlGNDUsIDB4OUY1NywgMHg5RjY4LCAweDlGNzEsIDB4OUY3NSwgMHg5RjkwLA0KKyAgICAweDlGOTQsIDB4OUZBMiwgMHg0RTMwLCAweDM0MDUsIDB4NEY2MCwgMHg1NjIwLCAweDVFQ0IsIDB4MkU5NSwNCisgICAgMHg2MEE0LCAweDY5RDcsIDB4NkIyNCwgMHg2RkY5LCAweDZFRTYsIDB4NzFCMywgMHgyRUE0LCAweDdBQzYsDQorICAgIDB4N0Y2MSwgMHg4MDcxLCAweDgwOUUsIDB4MkVDQywgMHg5MUYwLCAweDVEQjIsIDB4OTdERSwgMHg0RkQzLA0KKyAgICAweDUwRDksIDB4NTBGMCwgMHg1MUMzLCAweDU2NzYsIDB4NkE1NCwgMHg2RDAxLCAweDZERDAsIDB4NkU0MiwNCisgICAgMHg2RUQ5LCAweDczRTQsIDB4NzQyMSwgMHg3NTZDLCAweDc4NTEsIDB4ODdGNSwgMHhGRkZELCAweDczQTgsDQorICAgIDB4M0FGMywgMHgzNERCLCAweDQ0MEMsIDB4M0U4QSwgMHhGRkZELCAweEZGRkQsIDB4NEJFOCwgMHhGRkZELA0KKyAgICAweDNFREEsIDB4M0IyMiwgMHhGRkZELCAweDQ1N0EsIDB4NDA5MywgMHhGRkZELCAweDQ2NjUsIDB4NDEwMywNCisgICAgMHg0MjkzLCAweDQ2QUUsIDB4MzQ4OCwgMHhGRkZELA0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9FVUMtSF8xLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvRVVDLUhfMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBlMDFlMQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvRVVDLUhfMS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0VVQ19IXzFbMTIwICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDAwRTcsIDB4OEVBMCwgMHg4RURGLCAweDAxNDYsIDB4QTFBMSwgMHhBMUZFLCAweDAyNzksDQorICAgIDB4QTJBMSwgMHhBMkFFLCAweDAyRDcsIDB4QTJCQSwgMHhBMkMxLCAweDAyRTUsIDB4QTJDQSwgMHhBMkQwLCAweDAyRUQsDQorICAgIDB4QTJEQywgMHhBMkVBLCAweDAyRjQsIDB4QTJGMiwgMHhBMkY5LCAweDAzMDMsIDB4QTJGRSwgMHhBMkZFLCAweDAzMEIsDQorICAgIDB4QTNCMCwgMHhBM0I5LCAweDAzMEMsIDB4QTNDMSwgMHhBM0RBLCAweDAzMTYsIDB4QTNFMSwgMHhBM0ZBLCAweDAzMzAsDQorICAgIDB4QTRBMSwgMHhBNEYzLCAweDAzNEEsIDB4QTVBMSwgMHhBNUY2LCAweDAzOUQsIDB4QTZBMSwgMHhBNkI4LCAweDAzRjMsDQorICAgIDB4QTZDMSwgMHhBNkQ4LCAweDA0MEIsIDB4QTdBMSwgMHhBN0MxLCAweDA0MjMsIDB4QTdEMSwgMHhBN0YxLCAweDA0NDQsDQorICAgIDB4QThBMSwgMHhBOEExLCAweDFEMzcsIDB4QThBMiwgMHhBOEEyLCAweDFEMzksIDB4QThBMywgMHhBOEEzLCAweDFENDMsDQorICAgIDB4QThBNCwgMHhBOEE0LCAweDFENDcsIDB4QThBNSwgMHhBOEE1LCAweDFENEYsIDB4QThBNiwgMHhBOEE2LCAweDFENEIsDQorICAgIDB4QThBNywgMHhBOEE3LCAweDFENTMsIDB4QThBOCwgMHhBOEE4LCAweDFENjMsIDB4QThBOSwgMHhBOEE5LCAweDFENUIsDQorICAgIDB4QThBQSwgMHhBOEFBLCAweDFENkIsIDB4QThBQiwgMHhBOEFCLCAweDFENzMsIDB4QThBQywgMHhBOEFDLCAweDFEMzgsDQorICAgIDB4QThBRCwgMHhBOEFELCAweDFEM0EsIDB4QThBRSwgMHhBOEFFLCAweDFENDYsIDB4QThBRiwgMHhBOEFGLCAweDFENEEsDQorICAgIDB4QThCMCwgMHhBOEIwLCAweDFENTIsIDB4QThCMSwgMHhBOEIxLCAweDFENEUsIDB4QThCMiwgMHhBOEIyLCAweDFENUEsDQorICAgIDB4QThCMywgMHhBOEIzLCAweDFENkEsIDB4QThCNCwgMHhBOEI0LCAweDFENjIsIDB4QThCNSwgMHhBOEI1LCAweDFENzIsDQorICAgIDB4QThCNiwgMHhBOEI2LCAweDFEODIsIDB4QThCNywgMHhBOEI3LCAweDFENTcsIDB4QThCOCwgMHhBOEI4LCAweDFENjYsDQorICAgIDB4QThCOSwgMHhBOEI5LCAweDFENUYsIDB4QThCQSwgMHhBOEJBLCAweDFENkUsIDB4QThCQiwgMHhBOEJCLCAweDFENzYsDQorICAgIDB4QThCQywgMHhBOEJDLCAweDFENTQsIDB4QThCRCwgMHhBOEJELCAweDFENjcsIDB4QThCRSwgMHhBOEJFLCAweDFENUMsDQorICAgIDB4QThCRiwgMHhBOEJGLCAweDFENkYsIDB4QThDMCwgMHhBOEMwLCAweDFENzksIDB4QjBBMSwgMHhCMEZFLCAweDA0NjUsDQorICAgIDB4QjFBMSwgMHhCMUZFLCAweDA0QzMsIDB4QjJBMSwgMHhCMkZFLCAweDA1MjEsIDB4QjNBMSwgMHhCM0ZFLCAweDA1N0YsDQorICAgIDB4QjRBMSwgMHhCNEZFLCAweDA1REQsIDB4QjVBMSwgMHhCNUZFLCAweDA2M0IsIDB4QjZBMSwgMHhCNkZFLCAweDA2OTksDQorICAgIDB4QjdBMSwgMHhCN0ZFLCAweDA2RjcsIDB4QjhBMSwgMHhCOEZFLCAweDA3NTUsIDB4QjlBMSwgMHhCOUZFLCAweDA3QjMsDQorICAgIDB4QkFBMSwgMHhCQUZFLCAweDA4MTEsIDB4QkJBMSwgMHhCQkZFLCAweDA4NkYsIDB4QkNBMSwgMHhCQ0ZFLCAweDA4Q0QsDQorICAgIDB4QkRBMSwgMHhCREZFLCAweDA5MkIsIDB4QkVBMSwgMHhCRUZFLCAweDA5ODksIDB4QkZBMSwgMHhCRkZFLCAweDA5RTcsDQorICAgIDB4QzBBMSwgMHhDMEZFLCAweDBBNDUsIDB4QzFBMSwgMHhDMUZFLCAweDBBQTMsIDB4QzJBMSwgMHhDMkZFLCAweDBCMDEsDQorICAgIDB4QzNBMSwgMHhDM0ZFLCAweDBCNUYsIDB4QzRBMSwgMHhDNEZFLCAweDBCQkQsIDB4QzVBMSwgMHhDNUZFLCAweDBDMUIsDQorICAgIDB4QzZBMSwgMHhDNkZFLCAweDBDNzksIDB4QzdBMSwgMHhDN0ZFLCAweDBDRDcsIDB4QzhBMSwgMHhDOEZFLCAweDBEMzUsDQorICAgIDB4QzlBMSwgMHhDOUZFLCAweDBEOTMsIDB4Q0FBMSwgMHhDQUZFLCAweDBERjEsIDB4Q0JBMSwgMHhDQkZFLCAweDBFNEYsDQorICAgIDB4Q0NBMSwgMHhDQ0ZFLCAweDBFQUQsIDB4Q0RBMSwgMHhDREZFLCAweDBGMEIsIDB4Q0VBMSwgMHhDRUZFLCAweDBGNjksDQorICAgIDB4Q0ZBMSwgMHhDRkQzLCAweDBGQzcsIDB4RDBBMSwgMHhEMEZFLCAweDBGRkEsIDB4RDFBMSwgMHhEMUZFLCAweDEwNTgsDQorICAgIDB4RDJBMSwgMHhEMkZFLCAweDEwQjYsIDB4RDNBMSwgMHhEM0ZFLCAweDExMTQsIDB4RDRBMSwgMHhENEZFLCAweDExNzIsDQorICAgIDB4RDVBMSwgMHhENUZFLCAweDExRDAsIDB4RDZBMSwgMHhENkZFLCAweDEyMkUsIDB4RDdBMSwgMHhEN0ZFLCAweDEyOEMsDQorICAgIDB4RDhBMSwgMHhEOEZFLCAweDEyRUEsIDB4RDlBMSwgMHhEOUZFLCAweDEzNDgsIDB4REFBMSwgMHhEQUZFLCAweDEzQTYsDQorICAgIDB4REJBMSwgMHhEQkZFLCAweDE0MDQsIDB4RENBMSwgMHhEQ0ZFLCAweDE0NjIsIDB4RERBMSwgMHhEREZFLCAweDE0QzAsDQorICAgIDB4REVBMSwgMHhERUZFLCAweDE1MUUsIDB4REZBMSwgMHhERkZFLCAweDE1N0MsIDB4RTBBMSwgMHhFMEZFLCAweDE1REEsDQorICAgIDB4RTFBMSwgMHhFMUZFLCAweDE2MzgsIDB4RTJBMSwgMHhFMkZFLCAweDE2OTYsIDB4RTNBMSwgMHhFM0ZFLCAweDE2RjQsDQorICAgIDB4RTRBMSwgMHhFNEZFLCAweDE3NTIsIDB4RTVBMSwgMHhFNUZFLCAweDE3QjAsIDB4RTZBMSwgMHhFNkZFLCAweDE4MEUsDQorICAgIDB4RTdBMSwgMHhFN0ZFLCAweDE4NkMsIDB4RThBMSwgMHhFOEZFLCAweDE4Q0EsIDB4RTlBMSwgMHhFOUZFLCAweDE5MjgsDQorICAgIDB4RUFBMSwgMHhFQUZFLCAweDE5ODYsIDB4RUJBMSwgMHhFQkZFLCAweDE5RTQsIDB4RUNBMSwgMHhFQ0ZFLCAweDFBNDIsDQorICAgIDB4RURBMSwgMHhFREZFLCAweDFBQTAsIDB4RUVBMSwgMHhFRUZFLCAweDFBRkUsIDB4RUZBMSwgMHhFRkZFLCAweDFCNUMsDQorICAgIDB4RjBBMSwgMHhGMEZFLCAweDFCQkEsIDB4RjFBMSwgMHhGMUZFLCAweDFDMTgsIDB4RjJBMSwgMHhGMkZFLCAweDFDNzYsDQorICAgIDB4RjNBMSwgMHhGM0ZFLCAweDFDRDQsIDB4RjRBMSwgMHhGNEE0LCAweDFEMzIsIDB4RjRBNSwgMHhGNEE2LCAweDIwNUMsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL0VVQy1WXzEuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9FVUMtVl8xLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjRmYjc5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9FVUMtVl8xLmNwcApAQCAtMCwwICsxLDE3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfRVVDX1ZfMVsyNyAqIDNdID0geworICAgIDB4QTFBMiwgMHhBMUEzLCAweDFFQ0YsIDB4QTFCMSwgMHhBMUIyLCAweDFFRDEsIDB4QTFCQywgMHhBMUJFLCAweDFFRDMsCisgICAgMHhBMUMxLCAweEExQzUsIDB4MUVENiwgMHhBMUNBLCAweEExREIsIDB4MUVEQiwgMHhBMUUxLCAweEExRTEsIDB4MUVFRCwKKyAgICAweEE0QTEsIDB4QTRBMSwgMHgxRUVFLCAweEE0QTMsIDB4QTRBMywgMHgxRUVGLCAweEE0QTUsIDB4QTRBNSwgMHgxRUYwLAorICAgIDB4QTRBNywgMHhBNEE3LCAweDFFRjEsIDB4QTRBOSwgMHhBNEE5LCAweDFFRjIsIDB4QTRDMywgMHhBNEMzLCAweDFFRjMsCisgICAgMHhBNEUzLCAweEE0RTMsIDB4MUVGNCwgMHhBNEU1LCAweEE0RTUsIDB4MUVGNSwgMHhBNEU3LCAweEE0RTcsIDB4MUVGNiwKKyAgICAweEE0RUUsIDB4QTRFRSwgMHgxRUY3LCAweEE1QTEsIDB4QTVBMSwgMHgxRUY4LCAweEE1QTMsIDB4QTVBMywgMHgxRUY5LAorICAgIDB4QTVBNSwgMHhBNUE1LCAweDFFRkEsIDB4QTVBNywgMHhBNUE3LCAweDFFRkIsIDB4QTVBOSwgMHhBNUE5LCAweDFFRkMsCisgICAgMHhBNUMzLCAweEE1QzMsIDB4MUVGRCwgMHhBNUUzLCAweEE1RTMsIDB4MUVGRSwgMHhBNUU1LCAweEE1RTUsIDB4MUVGRiwKKyAgICAweEE1RTcsIDB4QTVFNywgMHgxRjAwLCAweEE1RUUsIDB4QTVFRSwgMHgxRjAxLCAweEE1RjUsIDB4QTVGNiwgMHgxRjAyLAorfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvRXh0LVJLU0otSF8yLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvRXh0LVJLU0otSF8yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjY5YmE2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9FeHQtUktTSi1IXzIuY3BwCkBAIC0wLDAgKzEsMjMwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfRXh0X1JLU0pfSF8yWzY2NSAqIDNdID0geworICAgIDB4MDAyMCwgMHgwMDdFLCAweDAwRTcsIDB4MDBBMCwgMHgwMERGLCAweDAxNDYsIDB4ODE0MCwgMHg4MTdFLCAweDAyNzksCisgICAgMHg4MTgwLCAweDgxODgsIDB4MDJCOCwgMHg4MTg5LCAweDgxODksIDB4MUQzNiwgMHg4MThBLCAweDgxQUMsIDB4MDJDMiwKKyAgICAweDgyNEYsIDB4ODI1OCwgMHgwMzBDLCAweDgyNjAsIDB4ODI3OSwgMHgwMzE2LCAweDgyODEsIDB4ODI5QSwgMHgwMzMwLAorICAgIDB4ODI5RiwgMHg4MkYxLCAweDAzNEEsIDB4ODM0MCwgMHg4MzdFLCAweDAzOUQsIDB4ODM4MCwgMHg4Mzk2LCAweDAzREMsCisgICAgMHg4MzlGLCAweDgzQjYsIDB4MDNGMywgMHg4M0JGLCAweDgzRDYsIDB4MDQwQiwgMHg4NDQwLCAweDg0NjAsIDB4MDQyMywKKyAgICAweDg0NzAsIDB4ODQ3RSwgMHgwNDQ0LCAweDg0ODAsIDB4ODQ5MSwgMHgwNDUzLCAweDg1NDAsIDB4ODU3RSwgMHgwMEU4LAorICAgIDB4ODU4MCwgMHg4NTgwLCAweDAxODYsIDB4ODU4MSwgMHg4NTlFLCAweDAxMjgsIDB4ODU5RiwgMHg4NURELCAweDAxNDcsCisgICAgMHg4NURFLCAweDg1RkMsIDB4MDE4NywgMHg4NjQwLCAweDg2N0UsIDB4MDFBNiwgMHg4NjgwLCAweDg2OTEsIDB4MDFFNSwKKyAgICAweDg2OTIsIDB4ODY5MiwgMHgwMTI3LCAweDg2OTMsIDB4ODY5RSwgMHgwMUY3LCAweDg2QTIsIDB4ODZFRCwgMHgxRDM3LAorICAgIDB4ODc0MCwgMHg4NzVELCAweDFEODMsIDB4ODc1RiwgMHg4Nzc1LCAweDFEQTEsIDB4ODc3RSwgMHg4NzdFLCAweDIwODMsCisgICAgMHg4NzgwLCAweDg3OEYsIDB4MURCOCwgMHg4NzkwLCAweDg3OTAsIDB4MDJGQSwgMHg4NzkxLCAweDg3OTEsIDB4MDJGOSwKKyAgICAweDg3OTIsIDB4ODc5MiwgMHgwMzAxLCAweDg3OTMsIDB4ODc5OSwgMHgxREM4LCAweDg3OUEsIDB4ODc5QSwgMHgwMzAwLAorICAgIDB4ODc5QiwgMHg4NzlDLCAweDFEQ0YsIDB4ODg5RiwgMHg4ODlGLCAweDA0NjUsIDB4ODhBMCwgMHg4OEEwLCAweDFERDEsCisgICAgMHg4OEExLCAweDg4QjAsIDB4MDQ2NywgMHg4OEIxLCAweDg4QjEsIDB4MUNBMiwgMHg4OEIyLCAweDg4QjgsIDB4MDQ3OCwKKyAgICAweDg4QjksIDB4ODhCOSwgMHgxREQyLCAweDg4QkEsIDB4ODhFQiwgMHgwNDgwLCAweDg4RUMsIDB4ODhFQywgMHgxREQzLAorICAgIDB4ODhFRCwgMHg4OEYwLCAweDA0QjMsIDB4ODhGMSwgMHg4OEYxLCAweDFERDQsIDB4ODhGMiwgMHg4OEY5LCAweDA0QjgsCisgICAgMHg4OEZBLCAweDg4RkEsIDB4MURENSwgMHg4OEZCLCAweDg4RkMsIDB4MDRDMSwgMHg4OTQwLCAweDg5NDgsIDB4MDRDMywKKyAgICAweDg5NDksIDB4ODk0OSwgMHgxREQ2LCAweDg5NEEsIDB4ODk1MywgMHgwNENELCAweDg5NTQsIDB4ODk1NCwgMHgxREQ3LAorICAgIDB4ODk1NSwgMHg4OTU3LCAweDA0RDgsIDB4ODk1OCwgMHg4OTU4LCAweDFERDgsIDB4ODk1OSwgMHg4OTVBLCAweDA0REMsCisgICAgMHg4OTVCLCAweDg5NUMsIDB4MUREOSwgMHg4OTVELCAweDg5NjAsIDB4MDRFMCwgMHg4OTYxLCAweDg5NjEsIDB4MUREQiwKKyAgICAweDg5NjIsIDB4ODk3RSwgMHgwNEU1LCAweDg5ODAsIDB4ODk4QSwgMHgwNTAyLCAweDg5OEIsIDB4ODk4QiwgMHgxRERDLAorICAgIDB4ODk4QywgMHg4OUE1LCAweDA1MEUsIDB4ODlBNiwgMHg4OUE2LCAweDFEREQsIDB4ODlBNywgMHg4OUE3LCAweDFDQzksCisgICAgMHg4OUE4LCAweDg5QTgsIDB4MURERSwgMHg4OUE5LCAweDg5REQsIDB4MDUyQiwgMHg4OURFLCAweDg5REUsIDB4MURERiwKKyAgICAweDg5REYsIDB4ODlGNywgMHgwNTYxLCAweDg5RjgsIDB4ODlGOCwgMHgxREUwLCAweDg5RjksIDB4ODlGQSwgMHgwNTdCLAorICAgIDB4ODlGQiwgMHg4OUZCLCAweDFERTEsIDB4ODlGQywgMHg4OUZDLCAweDA1N0UsIDB4OEE0MCwgMHg4QTQwLCAweDA1N0YsCisgICAgMHg4QTQxLCAweDhBNDEsIDB4MURFMiwgMHg4QTQyLCAweDhBNjAsIDB4MDU4MSwgMHg4QTYxLCAweDhBNjEsIDB4MTk2MSwKKyAgICAweDhBNjIsIDB4OEE2NywgMHgwNUExLCAweDhBNjgsIDB4OEE2OCwgMHgxMzlGLCAweDhBNjksIDB4OEE3RSwgMHgwNUE4LAorICAgIDB4OEE4MCwgMHg4QTg0LCAweDA1QkUsIDB4OEE4NSwgMHg4QTg1LCAweDFERTMsIDB4OEE4NiwgMHg4QThBLCAweDA1QzQsCisgICAgMHg4QThCLCAweDhBOEIsIDB4MURFNCwgMHg4QThDLCAweDhBOTIsIDB4MDVDQSwgMHg4QTkzLCAweDhBOTMsIDB4MURFNSwKKyAgICAweDhBOTQsIDB4OEE5NSwgMHgwNUQyLCAweDhBOTYsIDB4OEE5NiwgMHgxNzMxLCAweDhBOTcsIDB4OEE5OSwgMHgwNUQ1LAorICAgIDB4OEE5QSwgMHg4QTlBLCAweDFERTYsIDB4OEE5QiwgMHg4QUJGLCAweDA1RDksIDB4OEFDMCwgMHg4QUMwLCAweDFERTcsCisgICAgMHg4QUMxLCAweDhBQzEsIDB4MTU3MiwgMHg4QUMyLCAweDhBQ0EsIDB4MDYwMCwgMHg4QUNCLCAweDhBQ0IsIDB4MURFOCwKKyAgICAweDhBQ0MsIDB4OEFDRiwgMHgwNjBBLCAweDhBRDAsIDB4OEFEMCwgMHgxQTIwLCAweDhBRDEsIDB4OEFFMiwgMHgwNjBGLAorICAgIDB4OEFFMywgMHg4QUUzLCAweDFERTksIDB4OEFFNCwgMHg4QUZDLCAweDA2MjIsIDB4OEI0MCwgMHg4QjQ5LCAweDA2M0IsCisgICAgMHg4QjRBLCAweDhCNEEsIDB4MURFQSwgMHg4QjRCLCAweDhCNUUsIDB4MDY0NiwgMHg4QjVGLCAweDhCNUYsIDB4MURFQiwKKyAgICAweDhCNjAsIDB4OEI3RSwgMHgwNjVCLCAweDhCODAsIDB4OEI5RiwgMHgwNjdBLCAweDhCQTAsIDB4OEJBMCwgMHgxREVDLAorICAgIDB4OEJBMSwgMHg4QkE3LCAweDA2OUIsIDB4OEJBOCwgMHg4QkE4LCAweDFERUQsIDB4OEJBOSwgMHg4QkMzLCAweDA2QTMsCisgICAgMHg4QkM0LCAweDhCQzQsIDB4MUQzMiwgMHg4QkM1LCAweDhCQ0MsIDB4MDZCRiwgMHg4QkNELCAweDhCQ0QsIDB4MURFRSwKKyAgICAweDhCQ0UsIDB4OEJFQSwgMHgwNkM4LCAweDhCRUIsIDB4OEJFQiwgMHgxREVGLCAweDhCRUMsIDB4OEJGMSwgMHgwNkU2LAorICAgIDB4OEJGMiwgMHg4QkYyLCAweDFERjAsIDB4OEJGMywgMHg4QkY4LCAweDA2RUQsIDB4OEJGOSwgMHg4QkY5LCAweDFERjEsCisgICAgMHg4QkZBLCAweDhCRkEsIDB4MDZGNCwgMHg4QkZCLCAweDhCRkIsIDB4MURGMiwgMHg4QkZDLCAweDhCRkMsIDB4MDZGNiwKKyAgICAweDhDNDAsIDB4OEM0MiwgMHgwNkY3LCAweDhDNDMsIDB4OEM0MywgMHgxREYzLCAweDhDNDQsIDB4OEM1NSwgMHgwNkZCLAorICAgIDB4OEM1NiwgMHg4QzU2LCAweDFERjQsIDB4OEM1NywgMHg4QzYzLCAweDA3MEUsIDB4OEM2NCwgMHg4QzY0LCAweDFERjUsCisgICAgMHg4QzY1LCAweDhDNkMsIDB4MDcxQywgMHg4QzZELCAweDhDNkQsIDB4MURGNiwgMHg4QzZFLCAweDhDNzAsIDB4MDcyNSwKKyAgICAweDhDNzEsIDB4OEM3MSwgMHgxREY3LCAweDhDNzIsIDB4OEM3MywgMHgwNzI5LCAweDhDNzQsIDB4OEM3NCwgMHgxREY4LAorICAgIDB4OEM3NSwgMHg4Qzc5LCAweDA3MkMsIDB4OEM3QSwgMHg4QzdBLCAweDFDMEQsIDB4OEM3QiwgMHg4QzdFLCAweDA3MzIsCisgICAgMHg4QzgwLCAweDhDODMsIDB4MDczNiwgMHg4Qzg0LCAweDhDODQsIDB4MURGOSwgMHg4Qzg1LCAweDhDOTAsIDB4MDczQiwKKyAgICAweDhDOTEsIDB4OEM5MSwgMHgxREZBLCAweDhDOTIsIDB4OEM5OCwgMHgwNzQ4LCAweDhDOTksIDB4OEM5OSwgMHgxREZCLAorICAgIDB4OEM5QSwgMHg4QzlELCAweDA3NTAsIDB4OEM5RSwgMHg4QzlFLCAweDFERkMsIDB4OEM5RiwgMHg4Q0IxLCAweDA3NTUsCisgICAgMHg4Q0IyLCAweDhDQjIsIDB4MURGRCwgMHg4Q0IzLCAweDhDQkUsIDB4MDc2OSwgMHg4Q0JGLCAweDhDQkYsIDB4MURGRSwKKyAgICAweDhDQzAsIDB4OENGQywgMHgwNzc2LCAweDhENDAsIDB4OEQ0OSwgMHgwN0IzLCAweDhENEEsIDB4OEQ0QSwgMHgxREZGLAorICAgIDB4OEQ0QiwgMHg4RDU1LCAweDA3QkUsIDB4OEQ1NiwgMHg4RDU2LCAweDFFMDAsIDB4OEQ1NywgMHg4RDYwLCAweDA3Q0EsCisgICAgMHg4RDYxLCAweDhENjEsIDB4MUUwMSwgMHg4RDYyLCAweDhEN0EsIDB4MDdENSwgMHg4RDdCLCAweDhEN0IsIDB4MTZERCwKKyAgICAweDhEN0MsIDB4OEQ3RSwgMHgwN0VGLCAweDhEODAsIDB4OEQ4QywgMHgwN0YyLCAweDhEOEQsIDB4OEQ4RCwgMHgxRTAyLAorICAgIDB4OEQ4RSwgMHg4RDkzLCAweDA4MDAsIDB4OEQ5NCwgMHg4RDk0LCAweDFFMDMsIDB4OEQ5NSwgMHg4RDk4LCAweDA4MDcsCisgICAgMHg4RDk5LCAweDhEOTksIDB4MUUwNCwgMHg4RDlBLCAweDhERDAsIDB4MDgwQywgMHg4REQxLCAweDhERDEsIDB4MUUwNSwKKyAgICAweDhERDIsIDB4OERFNCwgMHgwODQ0LCAweDhERTUsIDB4OERFNSwgMHgxRTA2LCAweDhERTYsIDB4OERGMSwgMHgwODU4LAorICAgIDB4OERGMiwgMHg4REYyLCAweDFFMDcsIDB4OERGMywgMHg4REZDLCAweDA4NjUsIDB4OEU0MCwgMHg4RTQ1LCAweDA4NkYsCisgICAgMHg4RTQ2LCAweDhFNDYsIDB4MUUwOCwgMHg4RTQ3LCAweDhFNDgsIDB4MDg3NiwgMHg4RTQ5LCAweDhFNDksIDB4MUUwOSwKKyAgICAweDhFNEEsIDB4OEU0QSwgMHgwODc5LCAweDhFNEIsIDB4OEU0QiwgMHgxRTBBLCAweDhFNEMsIDB4OEU1NywgMHgwODdCLAorICAgIDB4OEU1OCwgMHg4RTU4LCAweDFFMEIsIDB4OEU1OSwgMHg4RTdFLCAweDA4ODgsIDB4OEU4MCwgMHg4RUI1LCAweDA4QUUsCisgICAgMHg4RUI2LCAweDhFQjYsIDB4MUUwQywgMHg4RUI3LCAweDhFQzUsIDB4MDhFNSwgMHg4RUM2LCAweDhFQzYsIDB4MUUwRCwKKyAgICAweDhFQzcsIDB4OEVDNywgMHgxOTI5LCAweDhFQzgsIDB4OEVENCwgMHgwOEY2LCAweDhFRDUsIDB4OEVENSwgMHgxRTBFLAorICAgIDB4OEVENiwgMHg4RURBLCAweDA5MDQsIDB4OEVEQiwgMHg4RURDLCAweDFFMEYsIDB4OEVERCwgMHg4RUZDLCAweDA5MEIsCisgICAgMHg4RjQwLCAweDhGNDksIDB4MDkyQiwgMHg4RjRBLCAweDhGNEEsIDB4MUUxMSwgMHg4RjRCLCAweDhGNTQsIDB4MDkzNiwKKyAgICAweDhGNTUsIDB4OEY1NSwgMHgxRTEyLCAweDhGNTYsIDB4OEY3RSwgMHgwOTQxLCAweDhGODAsIDB4OEY4QiwgMHgwOTZBLAorICAgIDB4OEY4QywgMHg4RjhELCAweDFFMTMsIDB4OEY4RSwgMHg4RjkxLCAweDA5NzgsIDB4OEY5MiwgMHg4RjkzLCAweDFFMTUsCisgICAgMHg4Rjk0LCAweDhGQTIsIDB4MDk3RSwgMHg4RkEzLCAweDhGQTMsIDB4MUUxNywgMHg4RkE0LCAweDhGQjAsIDB4MDk4RSwKKyAgICAweDhGQjEsIDB4OEZCMSwgMHgxRTE4LCAweDhGQjIsIDB4OEZCQywgMHgwOTlDLCAweDhGQkQsIDB4OEZCRCwgMHgxRTE5LAorICAgIDB4OEZCRSwgMHg4RkQyLCAweDA5QTgsIDB4OEZEMywgMHg4RkQzLCAweDFFMUEsIDB4OEZENCwgMHg4RkRDLCAweDA5QkUsCisgICAgMHg4RkRELCAweDhGREQsIDB4MUUxQiwgMHg4RkRFLCAweDhGRTEsIDB4MDlDOCwgMHg4RkUyLCAweDhGRTIsIDB4MUUxQywKKyAgICAweDhGRTMsIDB4OEZGQywgMHgwOUNELCAweDkwNDAsIDB4OTA0OCwgMHgwOUU3LCAweDkwNDksIDB4OTA0OSwgMHgxRTFELAorICAgIDB4OTA0QSwgMHg5MDc3LCAweDA5RjEsIDB4OTA3OCwgMHg5MDc4LCAweDFFMUUsIDB4OTA3OSwgMHg5MDdFLCAweDBBMjAsCisgICAgMHg5MDgwLCAweDkwODAsIDB4MUUxRiwgMHg5MDgxLCAweDkwODgsIDB4MEEyNywgMHg5MDg5LCAweDkwODksIDB4MUUyMCwKKyAgICAweDkwOEEsIDB4OTA5RiwgMHgwQTMwLCAweDkwQTAsIDB4OTBBMCwgMHgxRTIxLCAweDkwQTEsIDB4OTBCRiwgMHgwQTQ3LAorICAgIDB4OTBDMCwgMHg5MEMwLCAweDFFMjIsIDB4OTBDMSwgMHg5MEUzLCAweDBBNjcsIDB4OTBFNCwgMHg5MEU0LCAweDFFMjMsCisgICAgMHg5MEU1LCAweDkwRUUsIDB4MEE4QiwgMHg5MEVGLCAweDkwRjAsIDB4MUUyNCwgMHg5MEYxLCAweDkwRjYsIDB4MEE5NywKKyAgICAweDkwRjcsIDB4OTBGOCwgMHgxRTI2LCAweDkwRjksIDB4OTBGQywgMHgwQTlGLCAweDkxNDAsIDB4OTE0NSwgMHgwQUEzLAorICAgIDB4OTE0NiwgMHg5MTQ2LCAweDFFMjgsIDB4OTE0NywgMHg5MTQ3LCAweDFBNkUsIDB4OTE0OCwgMHg5MTU3LCAweDBBQUIsCisgICAgMHg5MTU4LCAweDkxNTgsIDB4MUUyOSwgMHg5MTU5LCAweDkxNkEsIDB4MEFCQywgMHg5MTZCLCAweDkxNkIsIDB4MUUyQSwKKyAgICAweDkxNkMsIDB4OTE2RCwgMHgwQUNGLCAweDkxNkUsIDB4OTE2RSwgMHgxRTJCLCAweDkxNkYsIDB4OTE3RCwgMHgwQUQyLAorICAgIDB4OTE3RSwgMHg5MTdFLCAweDFFMkMsIDB4OTE4MCwgMHg5MTg4LCAweDBBRTIsIDB4OTE4OSwgMHg5MTg5LCAweDFFMkQsCisgICAgMHg5MThBLCAweDkxQkEsIDB4MEFFQywgMHg5MUJCLCAweDkxQkIsIDB4MUUyRSwgMHg5MUJDLCAweDkxQ0EsIDB4MEIxRSwKKyAgICAweDkxQ0IsIDB4OTFDQiwgMHgxRTJGLCAweDkxQ0MsIDB4OTFEOSwgMHgwQjJFLCAweDkxREEsIDB4OTFEQSwgMHgxRTMwLAorICAgIDB4OTFEQiwgMHg5MUUwLCAweDBCM0QsIDB4OTFFMSwgMHg5MUUxLCAweDFFMzEsIDB4OTFFMiwgMHg5MUVDLCAweDBCNDQsCisgICAgMHg5MUVELCAweDkxRUQsIDB4MUUzMiwgMHg5MUVFLCAweDkxRjIsIDB4MEI1MCwgMHg5MUYzLCAweDkxRjQsIDB4MUUzMywKKyAgICAweDkxRjUsIDB4OTFGQSwgMHgwQjU3LCAweDkxRkIsIDB4OTFGQiwgMHgxRTM1LCAweDkxRkMsIDB4OTFGQywgMHgwQjVFLAorICAgIDB4OTI0MCwgMHg5MjQ1LCAweDBCNUYsIDB4OTI0NiwgMHg5MjQ2LCAweDFFMzYsIDB4OTI0NywgMHg5MjQ3LCAweDBCNjYsCisgICAgMHg5MjQ4LCAweDkyNDksIDB4MUUzNywgMHg5MjRBLCAweDkyNEIsIDB4MEI2OSwgMHg5MjRDLCAweDkyNEQsIDB4MUUzOSwKKyAgICAweDkyNEUsIDB4OTI1QiwgMHgwQjZELCAweDkyNUMsIDB4OTI1QywgMHgxRTNCLCAweDkyNUQsIDB4OTI3RSwgMHgwQjdDLAorICAgIDB4OTI4MCwgMHg5MjhGLCAweDBCOUUsIDB4OTI5MCwgMHg5MjkwLCAweDFFM0MsIDB4OTI5MSwgMHg5Mjk0LCAweDBCQUYsCisgICAgMHg5Mjk1LCAweDkyOTUsIDB4MUUzRCwgMHg5Mjk2LCAweDkyOUIsIDB4MEJCNCwgMHg5MjlDLCAweDkyOUMsIDB4MUUzRSwKKyAgICAweDkyOUQsIDB4OTJCQSwgMHgwQkJCLCAweDkyQkIsIDB4OTJCQiwgMHgxRTNGLCAweDkyQkMsIDB4OTJDNSwgMHgwQkRBLAorICAgIDB4OTJDNiwgMHg5MkM2LCAweDFFNDAsIDB4OTJDNywgMHg5MkM3LCAweDBCRTUsIDB4OTJDOCwgMHg5MkM4LCAweDFFNDEsCisgICAgMHg5MkM5LCAweDkyQ0EsIDB4MEJFNywgMHg5MkNCLCAweDkyQ0IsIDB4MUU0MiwgMHg5MkNDLCAweDkyQ0MsIDB4MEJFQSwKKyAgICAweDkyQ0QsIDB4OTJDRCwgMHgxRTQzLCAweDkyQ0UsIDB4OTJEOCwgMHgwQkVDLCAweDkyRDksIDB4OTJEOSwgMHgxMUI1LAorICAgIDB4OTJEQSwgMHg5MkZDLCAweDBCRjgsIDB4OTM0MCwgMHg5MzQwLCAweDBDMUIsIDB4OTM0MSwgMHg5MzQxLCAweDFFNDQsCisgICAgMHg5MzQyLCAweDkzNDUsIDB4MEMxRCwgMHg5MzQ2LCAweDkzNDYsIDB4MUU0NSwgMHg5MzQ3LCAweDkzNEMsIDB4MEMyMiwKKyAgICAweDkzNEQsIDB4OTM0RCwgMHgxRTQ2LCAweDkzNEUsIDB4OTM1NCwgMHgwQzI5LCAweDkzNTUsIDB4OTM1NSwgMHgxRTQ3LAorICAgIDB4OTM1NiwgMHg5MzVELCAweDBDMzEsIDB4OTM1RSwgMHg5MzVFLCAweDFFNDgsIDB4OTM1RiwgMHg5MzY2LCAweDBDM0EsCisgICAgMHg5MzY3LCAweDkzNjcsIDB4MUU0OSwgMHg5MzY4LCAweDkzNjksIDB4MEM0MywgMHg5MzZBLCAweDkzNkEsIDB4MUU0QSwKKyAgICAweDkzNkIsIDB4OTM2RiwgMHgwQzQ2LCAweDkzNzAsIDB4OTM3MSwgMHgxRTRCLCAweDkzNzIsIDB4OTM3NSwgMHgwQzRELAorICAgIDB4OTM3NiwgMHg5Mzc2LCAweDE2REYsIDB4OTM3NywgMHg5MzdFLCAweDBDNTIsIDB4OTM4MCwgMHg5MzgzLCAweDBDNUEsCisgICAgMHg5Mzg0LCAweDkzODQsIDB4MUU0RCwgMHg5Mzg1LCAweDkzOEQsIDB4MEM1RiwgMHg5MzhFLCAweDkzOEUsIDB4MTQ1MCwKKyAgICAweDkzOEYsIDB4OTM5MiwgMHgwQzY5LCAweDkzOTMsIDB4OTM5MywgMHgxNTM2LCAweDkzOTQsIDB4OTM5NywgMHgwQzZFLAorICAgIDB4OTM5OCwgMHg5Mzk4LCAweDFFNEUsIDB4OTM5OSwgMHg5M0JCLCAweDBDNzMsIDB4OTNCQywgMHg5M0JDLCAweDFFNEYsCisgICAgMHg5M0JELCAweDkzQkYsIDB4MEM5NywgMHg5M0MwLCAweDkzQzAsIDB4MUU1MCwgMHg5M0MxLCAweDkzRDEsIDB4MEM5QiwKKyAgICAweDkzRDIsIDB4OTNEMywgMHgxRTUxLCAweDkzRDQsIDB4OTNEOCwgMHgwQ0FFLCAweDkzRDksIDB4OTNEQSwgMHgxRTUzLAorICAgIDB4OTNEQiwgMHg5M0RFLCAweDBDQjUsIDB4OTNERiwgMHg5M0RGLCAweDFFNTUsIDB4OTNFMCwgMHg5M0UzLCAweDBDQkEsCisgICAgMHg5M0U0LCAweDkzRTUsIDB4MUU1NiwgMHg5M0U2LCAweDkzRTcsIDB4MENDMCwgMHg5M0U4LCAweDkzRTgsIDB4MUU1OCwKKyAgICAweDkzRTksIDB4OTNGMywgMHgwQ0MzLCAweDkzRjQsIDB4OTNGNCwgMHgxQUVELCAweDkzRjUsIDB4OTNGQywgMHgwQ0NGLAorICAgIDB4OTQ0MCwgMHg5NDQ3LCAweDBDRDcsIDB4OTQ0OCwgMHg5NDQ4LCAweDFFNTksIDB4OTQ0OSwgMHg5NDU3LCAweDBDRTAsCisgICAgMHg5NDU4LCAweDk0NTgsIDB4MUU1QSwgMHg5NDU5LCAweDk0NzUsIDB4MENGMCwgMHg5NDc2LCAweDk0NzYsIDB4MUU1QiwKKyAgICAweDk0NzcsIDB4OTQ3RSwgMHgwRDBFLCAweDk0ODAsIDB4OTQ4NiwgMHgwRDE2LCAweDk0ODcsIDB4OTQ4NywgMHgxRTVDLAorICAgIDB4OTQ4OCwgMHg5NDg4LCAweDE5ODksIDB4OTQ4OSwgMHg5NDg5LCAweDFFNUQsIDB4OTQ4QSwgMHg5NDhDLCAweDBEMjAsCisgICAgMHg5NDhELCAweDk0OEQsIDB4MUU1RSwgMHg5NDhFLCAweDk0QTEsIDB4MEQyNCwgMHg5NEEyLCAweDk0QTIsIDB4MUU1RiwKKyAgICAweDk0QTMsIDB4OTRBQiwgMHgwRDM5LCAweDk0QUMsIDB4OTRBQywgMHgxRTYwLCAweDk0QUQsIDB4OTRBRCwgMHgwRDQzLAorICAgIDB4OTRBRSwgMHg5NEFFLCAweDFFNjEsIDB4OTRBRiwgMHg5NEQxLCAweDBENDUsIDB4OTREMiwgMHg5NEQyLCAweDFFNjIsCisgICAgMHg5NEQzLCAweDk0REYsIDB4MEQ2OSwgMHg5NEUwLCAweDk0RTAsIDB4MUU2MywgMHg5NEUxLCAweDk0RjIsIDB4MEQ3NywKKyAgICAweDk0RjMsIDB4OTRGMywgMHgxRTY0LCAweDk0RjQsIDB4OTRGQywgMHgwRDhBLCAweDk1NDAsIDB4OTU0MCwgMHgwRDkzLAorICAgIDB4OTU0MSwgMHg5NTQyLCAweDFFNjUsIDB4OTU0MywgMHg5NTRELCAweDBEOTYsIDB4OTU0RSwgMHg5NTRFLCAweDFFNjcsCisgICAgMHg5NTRGLCAweDk1NEYsIDB4MTQzQiwgMHg5NTUwLCAweDk1NTAsIDB4MERBMywgMHg5NTUxLCAweDk1NTEsIDB4MUU2OCwKKyAgICAweDk1NTIsIDB4OTU1MywgMHgwREE1LCAweDk1NTQsIDB4OTU1NCwgMHgxRTY5LCAweDk1NTUsIDB4OTU1RSwgMHgwREE4LAorICAgIDB4OTU1RiwgMHg5NTVGLCAweDFFNkEsIDB4OTU2MCwgMHg5NTZDLCAweDBEQjMsIDB4OTU2RCwgMHg5NTZELCAweDFFNkIsCisgICAgMHg5NTZFLCAweDk1NkYsIDB4MERDMSwgMHg5NTcwLCAweDk1NzAsIDB4MUU2QywgMHg5NTcxLCAweDk1N0UsIDB4MERDNCwKKyAgICAweDk1ODAsIDB4OTVDMCwgMHgwREQyLCAweDk1QzEsIDB4OTVDMSwgMHgxRTZELCAweDk1QzIsIDB4OTVDQSwgMHgwRTE0LAorICAgIDB4OTVDQiwgMHg5NUNCLCAweDFFNkUsIDB4OTVDQywgMHg5NUQ3LCAweDBFMUUsIDB4OTVEOCwgMHg5NUQ4LCAweDFFNkYsCisgICAgMHg5NUQ5LCAweDk1RjYsIDB4MEUyQiwgMHg5NUY3LCAweDk1RjcsIDB4MUU3MCwgMHg5NUY4LCAweDk1RkMsIDB4MEU0QSwKKyAgICAweDk2NDAsIDB4OTY0MCwgMHgwRTRGLCAweDk2NDEsIDB4OTY0MSwgMHgxRTcxLCAweDk2NDIsIDB4OTY0NywgMHgwRTUxLAorICAgIDB4OTY0OCwgMHg5NjQ4LCAweDFFNzIsIDB4OTY0OSwgMHg5NjY5LCAweDBFNTgsIDB4OTY2QSwgMHg5NjZBLCAweDFFNzMsCisgICAgMHg5NjZCLCAweDk2N0UsIDB4MEU3QSwgMHg5NjgwLCAweDk2ODksIDB4MEU4RSwgMHg5NjhBLCAweDk2OEEsIDB4MUQzMywKKyAgICAweDk2OEIsIDB4OTY4RiwgMHgwRTk5LCAweDk2OTAsIDB4OTY5MCwgMHgxRTc0LCAweDk2OTEsIDB4OTY5OCwgMHgwRTlGLAorICAgIDB4OTY5OSwgMHg5Njk5LCAweDEwMkYsIDB4OTY5QSwgMHg5NkNBLCAweDBFQTgsIDB4OTZDQiwgMHg5NkNCLCAweDFFNzUsCisgICAgMHg5NkNDLCAweDk2RDYsIDB4MEVEQSwgMHg5NkQ3LCAweDk2RDcsIDB4MUU3NiwgMHg5NkQ4LCAweDk2REMsIDB4MEVFNiwKKyAgICAweDk2REQsIDB4OTZERCwgMHgxRTc3LCAweDk2REUsIDB4OTZERiwgMHgwRUVDLCAweDk2RTAsIDB4OTZFMCwgMHgxRTc4LAorICAgIDB4OTZFMSwgMHg5NkY2LCAweDBFRUYsIDB4OTZGNywgMHg5NkY3LCAweDE5MzUsIDB4OTZGOCwgMHg5NkY4LCAweDFFNzksCisgICAgMHg5NkY5LCAweDk2RjksIDB4MEYwNywgMHg5NkZBLCAweDk2RkEsIDB4MUU3QSwgMHg5NkZCLCAweDk2RkIsIDB4MEYwOSwKKyAgICAweDk2RkMsIDB4OTZGQywgMHgxRTdCLCAweDk3NDAsIDB4OTc1MCwgMHgwRjBCLCAweDk3NTEsIDB4OTc1MSwgMHgxRTdDLAorICAgIDB4OTc1MiwgMHg5NzZFLCAweDBGMUQsIDB4OTc2RiwgMHg5NzZGLCAweDFFN0QsIDB4OTc3MCwgMHg5NzcyLCAweDBGM0IsCisgICAgMHg5NzczLCAweDk3NzMsIDB4MUU3RSwgMHg5Nzc0LCAweDk3NzgsIDB4MEYzRiwgMHg5Nzc5LCAweDk3NzksIDB4MUQzNCwKKyAgICAweDk3N0EsIDB4OTc3RSwgMHgwRjQ1LCAweDk3ODAsIDB4OTc4OCwgMHgwRjRBLCAweDk3ODksIDB4OTc4OSwgMHgxRTdGLAorICAgIDB4OTc4QSwgMHg5N0M4LCAweDBGNTQsIDB4OTdDOSwgMHg5N0M5LCAweDFFODAsIDB4OTdDQSwgMHg5N0Y3LCAweDBGOTQsCisgICAgMHg5N0Y4LCAweDk3RjksIDB4MUU4MSwgMHg5N0ZBLCAweDk3RkMsIDB4MEZDNCwgMHg5ODQwLCAweDk4NDAsIDB4MUU4MywKKyAgICAweDk4NDEsIDB4OTg0RiwgMHgwRkM4LCAweDk4NTAsIDB4OTg1MCwgMHgxRTg0LCAweDk4NTEsIDB4OTg1NCwgMHgwRkQ4LAorICAgIDB4OTg1NSwgMHg5ODU1LCAweDE3NzcsIDB4OTg1NiwgMHg5ODU3LCAweDBGREQsIDB4OTg1OCwgMHg5ODU4LCAweDFFODUsCisgICAgMHg5ODU5LCAweDk4NzIsIDB4MEZFMCwgMHg5ODlGLCAweDk4RDMsIDB4MEZGQSwgMHg5OEQ0LCAweDk4RDQsIDB4MEVBNywKKyAgICAweDk4RDUsIDB4OThGQywgMHgxMDMwLCAweDk5NDAsIDB4OTk1QiwgMHgxMDU4LCAweDk5NUMsIDB4OTk1QywgMHgxRTg2LAorICAgIDB4OTk1RCwgMHg5OTY1LCAweDEwNzUsIDB4OTk2NiwgMHg5OTY2LCAweDFFODcsIDB4OTk2NywgMHg5OTY5LCAweDEwN0YsCisgICAgMHg5OTZBLCAweDk5NkEsIDB4MUU4OCwgMHg5OTZCLCAweDk5NkIsIDB4MTA4MywgMHg5OTZDLCAweDk5NkMsIDB4MUU4OSwKKyAgICAweDk5NkQsIDB4OTk3RSwgMHgxMDg1LCAweDk5ODAsIDB4OTlGQywgMHgxMDk3LCAweDlBNDAsIDB4OUE0RSwgMHgxMTE0LAorICAgIDB4OUE0RiwgMHg5QTRGLCAweDFFOEEsIDB4OUE1MCwgMHg5QTU4LCAweDExMjQsIDB4OUE1OSwgMHg5QTU5LCAweDFFOEIsCisgICAgMHg5QTVBLCAweDlBNkUsIDB4MTEyRSwgMHg5QTZGLCAweDlBNkYsIDB4MUU4QywgMHg5QTcwLCAweDlBN0MsIDB4MTE0NCwKKyAgICAweDlBN0QsIDB4OUE3RCwgMHgxRThELCAweDlBN0UsIDB4OUE3RSwgMHgxMTUyLCAweDlBODAsIDB4OUE4QSwgMHgxMTUzLAorICAgIDB4OUE4QiwgMHg5QThCLCAweDFFOEUsIDB4OUE4QywgMHg5QUMxLCAweDExNUYsIDB4OUFDMiwgMHg5QUMyLCAweDFFOEYsCisgICAgMHg5QUMzLCAweDlBRTEsIDB4MTE5NiwgMHg5QUUyLCAweDlBRTIsIDB4MEJGNywgMHg5QUUzLCAweDlBRkMsIDB4MTFCNiwKKyAgICAweDlCNDAsIDB4OUI1QiwgMHgxMUQwLCAweDlCNUMsIDB4OUI1QywgMHgxRTkwLCAweDlCNUQsIDB4OUI3RSwgMHgxMUVELAorICAgIDB4OUI4MCwgMHg5QjgyLCAweDEyMEYsIDB4OUI4MywgMHg5QjgzLCAweDFFOTEsIDB4OUI4NCwgMHg5QjlGLCAweDEyMTMsCisgICAgMHg5QkEwLCAweDlCQTAsIDB4MUU5MiwgMHg5QkExLCAweDlCRUYsIDB4MTIzMCwgMHg5QkYwLCAweDlCRjAsIDB4MUU5MywKKyAgICAweDlCRjEsIDB4OUJGQywgMHgxMjgwLCAweDlDNDAsIDB4OUM3RSwgMHgxMjhDLCAweDlDODAsIDB4OUNBMSwgMHgxMkNCLAorICAgIDB4OUNBMiwgMHg5Q0EyLCAweDFFOTQsIDB4OUNBMywgMHg5Q0ZDLCAweDEyRUUsIDB4OUQ0MCwgMHg5RDdFLCAweDEzNDgsCisgICAgMHg5RDgwLCAweDlEODAsIDB4MUU5NSwgMHg5RDgxLCAweDlEOEIsIDB4MTM4OCwgMHg5RDhDLCAweDlEOEMsIDB4MUU5NiwKKyAgICAweDlEOEQsIDB4OUQ5NywgMHgxMzk0LCAweDlEOTgsIDB4OUQ5OCwgMHgwNUE3LCAweDlEOTksIDB4OURCNiwgMHgxM0EwLAorICAgIDB4OURCNywgMHg5REI3LCAweDFFOTcsIDB4OURCOCwgMHg5RENBLCAweDEzQkYsIDB4OURDQiwgMHg5RENCLCAweDFFOTgsCisgICAgMHg5RENDLCAweDlERkMsIDB4MTNEMywgMHg5RTQwLCAweDlFNjMsIDB4MTQwNCwgMHg5RTY0LCAweDlFNjQsIDB4MUU5OSwKKyAgICAweDlFNjUsIDB4OUU2OCwgMHgxNDI5LCAweDlFNjksIDB4OUU2OSwgMHgxRTlBLCAweDlFNkEsIDB4OUU3NiwgMHgxNDJFLAorICAgIDB4OUU3NywgMHg5RTc3LCAweDBEQTIsIDB4OUU3OCwgMHg5RTdFLCAweDE0M0MsIDB4OUU4MCwgMHg5RThBLCAweDE0NDMsCisgICAgMHg5RThCLCAweDlFOEIsIDB4MUU5QiwgMHg5RThDLCAweDlFOEMsIDB4MTQ0RiwgMHg5RThELCAweDlFOEQsIDB4MEM2OCwKKyAgICAweDlFOEUsIDB4OUU5MywgMHgxNDUxLCAweDlFOTQsIDB4OUU5NCwgMHgxRTlDLCAweDlFOTUsIDB4OUVGQywgMHgxNDU4LAorICAgIDB4OUY0MCwgMHg5RjdFLCAweDE0QzAsIDB4OUY4MCwgMHg5RkI2LCAweDE0RkYsIDB4OUZCNywgMHg5RkI3LCAweDBDNkQsCisgICAgMHg5RkI4LCAweDlGQ0QsIDB4MTUzNywgMHg5RkNFLCAweDlGQ0UsIDB4MUU5RCwgMHg5RkNGLCAweDlGRjIsIDB4MTU0RSwKKyAgICAweDlGRjMsIDB4OUZGMywgMHgwNUZGLCAweDlGRjQsIDB4OUZGQywgMHgxNTczLCAweEUwNDAsIDB4RTA3RSwgMHgxNTdDLAorICAgIDB4RTA4MCwgMHhFMDkyLCAweDE1QkIsIDB4RTA5MywgMHhFMDkzLCAweDFFOUUsIDB4RTA5NCwgMHhFMEEzLCAweDE1Q0YsCisgICAgMHhFMEE0LCAweEUwQTQsIDB4MUU5RiwgMHhFMEE1LCAweEUwREMsIDB4MTVFMCwgMHhFMERELCAweEUwREQsIDB4MUVBMCwKKyAgICAweEUwREUsIDB4RTBGMywgMHgxNjE5LCAweEUwRjQsIDB4RTBGNCwgMHgxRDM1LCAweEUwRjUsIDB4RTBGQywgMHgxNjMwLAorICAgIDB4RTE0MCwgMHhFMTQ5LCAweDE2MzgsIDB4RTE0QSwgMHhFMTRBLCAweDFFQTEsIDB4RTE0QiwgMHhFMTRFLCAweDE2NDMsCisgICAgMHhFMTRGLCAweEUxNTAsIDB4MUVBMiwgMHhFMTUxLCAweEUxN0UsIDB4MTY0OSwgMHhFMTgwLCAweEUxQTgsIDB4MTY3NywKKyAgICAweEUxQTksIDB4RTFBOSwgMHgxRUE0LCAweEUxQUEsIDB4RTFFNSwgMHgxNkExLCAweEUxRTYsIDB4RTFFNiwgMHgwN0VFLAorICAgIDB4RTFFNywgMHhFMUU3LCAweDE2REUsIDB4RTFFOCwgMHhFMUU4LCAweDBDNTEsIDB4RTFFOSwgMHhFMUVDLCAweDE2RTAsCisgICAgMHhFMUVELCAweEUxRUQsIDB4MUVBNSwgMHhFMUVFLCAweEUxRkMsIDB4MTZFNSwgMHhFMjQwLCAweEUyNjgsIDB4MTZGNCwKKyAgICAweEUyNjksIDB4RTI2OSwgMHgxRUE2LCAweEUyNkEsIDB4RTI3MiwgMHgxNzFFLCAweEUyNzMsIDB4RTI3MywgMHgxRUE3LAorICAgIDB4RTI3NCwgMHhFMjdDLCAweDE3MjgsIDB4RTI3RCwgMHhFMjdELCAweDA1RDQsIDB4RTI3RSwgMHhFMjdFLCAweDE3MzIsCisgICAgMHhFMjgwLCAweEUyQjYsIDB4MTczMywgMHhFMkI3LCAweEUyQjcsIDB4MUVBOCwgMHhFMkI4LCAweEUyQzMsIDB4MTc2QiwKKyAgICAweEUyQzQsIDB4RTJDNCwgMHgwRkRDLCAweEUyQzUsIDB4RTJFMSwgMHgxNzc4LCAweEUyRTIsIDB4RTJFMiwgMHgxRUE5LAorICAgIDB4RTJFMywgMHhFMkVCLCAweDE3OTYsIDB4RTJFQywgMHhFMkVDLCAweDFFQUEsIDB4RTJFRCwgMHhFMkZDLCAweDE3QTAsCisgICAgMHhFMzQwLCAweEUzNTcsIDB4MTdCMCwgMHhFMzU4LCAweEUzNTgsIDB4MUVBQiwgMHhFMzU5LCAweEUzNTksIDB4MTdDOSwKKyAgICAweEUzNUEsIDB4RTM1QSwgMHgxRUFDLCAweEUzNUIsIDB4RTM2NCwgMHgxN0NCLCAweEUzNjUsIDB4RTM2NSwgMHgxRUFELAorICAgIDB4RTM2NiwgMHhFMzdFLCAweDE3RDYsIDB4RTM4MCwgMHhFM0MzLCAweDE3RUYsIDB4RTNDNCwgMHhFM0M0LCAweDFFQUUsCisgICAgMHhFM0M1LCAweEUzRkMsIDB4MTgzNCwgMHhFNDQwLCAweEU0N0UsIDB4MTg2QywgMHhFNDgwLCAweEU0ODMsIDB4MThBQiwKKyAgICAweEU0ODQsIDB4RTQ4NCwgMHgxRUFGLCAweEU0ODUsIDB4RTQ4OCwgMHgxOEIwLCAweEU0ODksIDB4RTQ4OSwgMHgxRUIwLAorICAgIDB4RTQ4QSwgMHhFNDkxLCAweDE4QjUsIDB4RTQ5MiwgMHhFNDkyLCAweDFFQjEsIDB4RTQ5MywgMHhFNEIxLCAweDE4QkUsCisgICAgMHhFNEIyLCAweEU0QjIsIDB4MUVCMiwgMHhFNEIzLCAweEU0QjgsIDB4MThERSwgMHhFNEI5LCAweEU0QjksIDB4MUVCMywKKyAgICAweEU0QkEsIDB4RTRGMSwgMHgxOEU1LCAweEU0RjIsIDB4RTRGMiwgMHgxRUI0LCAweEU0RjMsIDB4RTRGQywgMHgxOTFFLAorICAgIDB4RTU0MCwgMHhFNTQwLCAweDE5MjgsIDB4RTU0MSwgMHhFNTQxLCAweDA4RjUsIDB4RTU0MiwgMHhFNTRDLCAweDE5MkEsCisgICAgMHhFNTRELCAweEU1NEQsIDB4MEYwNSwgMHhFNTRFLCAweEU1NUEsIDB4MTkzNiwgMHhFNTVCLCAweEU1NUIsIDB4MUVCNSwKKyAgICAweEU1NUMsIDB4RTU3OCwgMHgxOTQ0LCAweEU1NzksIDB4RTU3OSwgMHgwNUEwLCAweEU1N0EsIDB4RTU3RSwgMHgxOTYyLAorICAgIDB4RTU4MCwgMHhFNUExLCAweDE5NjcsIDB4RTVBMiwgMHhFNUEyLCAweDBEMUUsIDB4RTVBMywgMHhFNUE0LCAweDE5OEEsCisgICAgMHhFNUE1LCAweEU1QTUsIDB4MUVCNiwgMHhFNUE2LCAweEU1QkEsIDB4MTk4RCwgMHhFNUJCLCAweEU1QkIsIDB4MUVCNywKKyAgICAweEU1QkMsIDB4RTVFQywgMHgxOUEzLCAweEU1RUQsIDB4RTVFRCwgMHgxRUI4LCAweEU1RUUsIDB4RTVGQywgMHgxOUQ1LAorICAgIDB4RTY0MCwgMHhFNjUwLCAweDE5RTQsIDB4RTY1MSwgMHhFNjUxLCAweDFFQjksIDB4RTY1MiwgMHhFNjdCLCAweDE5RjYsCisgICAgMHhFNjdDLCAweEU2N0MsIDB4MDYwRSwgMHhFNjdELCAweEU2N0UsIDB4MUEyMSwgMHhFNjgwLCAweEU2ODUsIDB4MUEyMywKKyAgICAweEU2ODYsIDB4RTY4NiwgMHgxRUJBLCAweEU2ODcsIDB4RTY5NSwgMHgxQTJBLCAweEU2OTYsIDB4RTY5NiwgMHgxRUJCLAorICAgIDB4RTY5NywgMHhFNkNBLCAweDFBM0EsIDB4RTZDQiwgMHhFNkNCLCAweDBBQUEsIDB4RTZDQywgMHhFNkU2LCAweDFBNkYsCisgICAgMHhFNkU3LCAweEU2RTcsIDB4MUVCQywgMHhFNkU4LCAweEU2RjEsIDB4MUE4QiwgMHhFNkYyLCAweEU2RjIsIDB4MUVCRCwKKyAgICAweEU2RjMsIDB4RTZGQywgMHgxQTk2LCAweEU3NDAsIDB4RTc2QywgMHgxQUEwLCAweEU3NkQsIDB4RTc2RCwgMHgxRUJFLAorICAgIDB4RTc2RSwgMHhFNzdFLCAweDFBQ0UsIDB4RTc4MCwgMHhFNzhCLCAweDFBREYsIDB4RTc4QywgMHhFNzhDLCAweDFFQkYsCisgICAgMHhFNzhELCAweEU3OEQsIDB4MUFFQywgMHhFNzhFLCAweEU3OEUsIDB4MUVDMCwgMHhFNzhGLCAweEU3QTYsIDB4MUFFRSwKKyAgICAweEU3QTcsIDB4RTdBNywgMHgxRUMxLCAweEU3QTgsIDB4RTdCQSwgMHgxQjA3LCAweEU3QkIsIDB4RTdCQiwgMHgxRUMyLAorICAgIDB4RTdCQywgMHhFN0Q0LCAweDFCMUIsIDB4RTdENSwgMHhFN0Q1LCAweDFFQzMsIDB4RTdENiwgMHhFN0ZDLCAweDFCMzUsCisgICAgMHhFODQwLCAweEU4N0UsIDB4MUI1QywgMHhFODgwLCAweEU4ODQsIDB4MUI5QiwgMHhFODg1LCAweEU4ODUsIDB4MUVDNCwKKyAgICAweEU4ODYsIDB4RThCMCwgMHgxQkExLCAweEU4QjEsIDB4RThCMSwgMHgxRUM1LCAweEU4QjIsIDB4RThDMiwgMHgxQkNELAorICAgIDB4RThDMywgMHhFOEMzLCAweDFFQzYsIDB4RThDNCwgMHhFOENFLCAweDFCREYsIDB4RThDRiwgMHhFOENGLCAweDFFQzcsCisgICAgMHhFOEQwLCAweEU4RDQsIDB4MUJFQiwgMHhFOEQ1LCAweEU4RDUsIDB4MUVDOCwgMHhFOEQ2LCAweEU4RjEsIDB4MUJGMSwKKyAgICAweEU4RjIsIDB4RThGMiwgMHgwNzMxLCAweEU4RjMsIDB4RThGMywgMHgxRUM5LCAweEU4RjQsIDB4RThGQywgMHgxQzBGLAorICAgIDB4RTk0MCwgMHhFOTdFLCAweDFDMTgsIDB4RTk4MCwgMHhFOUFBLCAweDFDNTcsIDB4RTlBQiwgMHhFOUFCLCAweDFFQ0EsCisgICAgMHhFOUFDLCAweEU5QjksIDB4MUM4MywgMHhFOUJBLCAweEU5QkEsIDB4MUVDQiwgMHhFOUJCLCAweEU5Q0EsIDB4MUM5MiwKKyAgICAweEU5Q0IsIDB4RTlDQiwgMHgwNDc3LCAweEU5Q0MsIDB4RTlDQywgMHgxRUNDLCAweEU5Q0QsIDB4RTlGMSwgMHgxQ0E0LAorICAgIDB4RTlGMiwgMHhFOUYyLCAweDA1MjksIDB4RTlGMywgMHhFOUZDLCAweDFDQ0EsIDB4RUE0MCwgMHhFQTZGLCAweDFDRDQsCisgICAgMHhFQTcwLCAweEVBNzAsIDB4MUVDRCwgMHhFQTcxLCAweEVBN0UsIDB4MUQwNSwgMHhFQTgwLCAweEVBOUMsIDB4MUQxMywKKyAgICAweEVBOUQsIDB4RUE5RCwgMHgxRUNFLCAweEVBOUUsIDB4RUE5RSwgMHgxRDMxLCAweEVENDAsIDB4RUQ3RSwgMHgyMEE3LAorICAgIDB4RUQ4MCwgMHhFREIzLCAweDIwRTYsIDB4RURCNCwgMHhFREI0LCAweDA3QzksIDB4RURCNSwgMHhFREZDLCAweDIxMUEsCisgICAgMHhFRTQwLCAweEVFN0UsIDB4MjE2MiwgMHhFRTgwLCAweEVFRUMsIDB4MjFBMSwgMHhFRUVGLCAweEVFRjgsIDB4MUY5QywKKyAgICAweEVFRjksIDB4RUVGOSwgMHgwMkVGLCAweEVFRkEsIDB4RUVGQywgMHgxRjQ1LAorfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvRXh0LVJLU0otVl8yLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvRXh0LVJLU0otVl8yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTdkY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9FeHQtUktTSi1WXzIuY3BwCkBAIC0wLDAgKzEsMjEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9FeHRfUktTSl9WXzJbMzkgKiAzXSA9IHsKKyAgICAweDgxNDEsIDB4ODE0MiwgMHgxRUNGLCAweDgxNDMsIDB4ODE0MywgMHgyMDRDLCAweDgxNDQsIDB4ODE0NCwgMHgyMDUyLAorICAgIDB4ODE0QSwgMHg4MTRBLCAweDIwNTAsIDB4ODE0QiwgMHg4MTRCLCAweDIwNEYsIDB4ODE1QiwgMHg4MTVELCAweDFFRDMsCisgICAgMHg4MTYwLCAweDgxNjQsIDB4MUVENiwgMHg4MTY1LCAweDgxNjUsIDB4MjA1OSwgMHg4MTY2LCAweDgxNjYsIDB4MjA1NCwKKyAgICAweDgxNjcsIDB4ODE2NywgMHgyMDU3LCAweDgxNjgsIDB4ODE2OCwgMHgyMDU2LCAweDgxNjksIDB4ODE3QSwgMHgxRURCLAorICAgIDB4ODE4QiwgMHg4MThCLCAweDIwNEQsIDB4ODE4QywgMHg4MThDLCAweDIwNTEsIDB4ODE4RCwgMHg4MThELCAweDIwNUIsCisgICAgMHg4MUFDLCAweDgxQUMsIDB4MjA0RSwgMHg4MjlGLCAweDgyOUYsIDB4MUVFRSwgMHg4MkExLCAweDgyQTEsIDB4MUVFRiwKKyAgICAweDgyQTMsIDB4ODJBMywgMHgxRUYwLCAweDgyQTUsIDB4ODJBNSwgMHgxRUYxLCAweDgyQTcsIDB4ODJBNywgMHgxRUYyLAorICAgIDB4ODJDMSwgMHg4MkMxLCAweDFFRjMsIDB4ODJFMSwgMHg4MkUxLCAweDFFRjQsIDB4ODJFMywgMHg4MkUzLCAweDFFRjUsCisgICAgMHg4MkU1LCAweDgyRTUsIDB4MUVGNiwgMHg4MkVDLCAweDgyRUMsIDB4MUVGNywgMHg4MzQwLCAweDgzNDAsIDB4MUVGOCwKKyAgICAweDgzNDIsIDB4ODM0MiwgMHgxRUY5LCAweDgzNDQsIDB4ODM0NCwgMHgxRUZBLCAweDgzNDYsIDB4ODM0NiwgMHgxRUZCLAorICAgIDB4ODM0OCwgMHg4MzQ4LCAweDFFRkMsIDB4ODM2MiwgMHg4MzYyLCAweDFFRkQsIDB4ODM4MywgMHg4MzgzLCAweDFFRkUsCisgICAgMHg4Mzg1LCAweDgzODUsIDB4MUVGRiwgMHg4Mzg3LCAweDgzODcsIDB4MUYwMCwgMHg4MzhFLCAweDgzOEUsIDB4MUYwMSwKKyAgICAweDgzOTUsIDB4ODM5NiwgMHgxRjAyLCAweDg3NUYsIDB4ODc2RSwgMHgxRjA0LCAweDg3ODAsIDB4ODc4MSwgMHgxRjE0LAorfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvSF8xLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvSF8xLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTRlNjk5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9IXzEuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9IXzFbMTE4ICogM10gPSB7DQorICAgIDB4MjEyMSwgMHgyMTdFLCAweDAyNzksIDB4MjIyMSwgMHgyMjJFLCAweDAyRDcsIDB4MjIzQSwgMHgyMjQxLCAweDAyRTUsDQorICAgIDB4MjI0QSwgMHgyMjUwLCAweDAyRUQsIDB4MjI1QywgMHgyMjZBLCAweDAyRjQsIDB4MjI3MiwgMHgyMjc5LCAweDAzMDMsDQorICAgIDB4MjI3RSwgMHgyMjdFLCAweDAzMEIsIDB4MjMzMCwgMHgyMzM5LCAweDAzMEMsIDB4MjM0MSwgMHgyMzVBLCAweDAzMTYsDQorICAgIDB4MjM2MSwgMHgyMzdBLCAweDAzMzAsIDB4MjQyMSwgMHgyNDczLCAweDAzNEEsIDB4MjUyMSwgMHgyNTc2LCAweDAzOUQsDQorICAgIDB4MjYyMSwgMHgyNjM4LCAweDAzRjMsIDB4MjY0MSwgMHgyNjU4LCAweDA0MEIsIDB4MjcyMSwgMHgyNzQxLCAweDA0MjMsDQorICAgIDB4Mjc1MSwgMHgyNzcxLCAweDA0NDQsIDB4MjgyMSwgMHgyODIxLCAweDFEMzcsIDB4MjgyMiwgMHgyODIyLCAweDFEMzksDQorICAgIDB4MjgyMywgMHgyODIzLCAweDFENDMsIDB4MjgyNCwgMHgyODI0LCAweDFENDcsIDB4MjgyNSwgMHgyODI1LCAweDFENEYsDQorICAgIDB4MjgyNiwgMHgyODI2LCAweDFENEIsIDB4MjgyNywgMHgyODI3LCAweDFENTMsIDB4MjgyOCwgMHgyODI4LCAweDFENjMsDQorICAgIDB4MjgyOSwgMHgyODI5LCAweDFENUIsIDB4MjgyQSwgMHgyODJBLCAweDFENkIsIDB4MjgyQiwgMHgyODJCLCAweDFENzMsDQorICAgIDB4MjgyQywgMHgyODJDLCAweDFEMzgsIDB4MjgyRCwgMHgyODJELCAweDFEM0EsIDB4MjgyRSwgMHgyODJFLCAweDFENDYsDQorICAgIDB4MjgyRiwgMHgyODJGLCAweDFENEEsIDB4MjgzMCwgMHgyODMwLCAweDFENTIsIDB4MjgzMSwgMHgyODMxLCAweDFENEUsDQorICAgIDB4MjgzMiwgMHgyODMyLCAweDFENUEsIDB4MjgzMywgMHgyODMzLCAweDFENkEsIDB4MjgzNCwgMHgyODM0LCAweDFENjIsDQorICAgIDB4MjgzNSwgMHgyODM1LCAweDFENzIsIDB4MjgzNiwgMHgyODM2LCAweDFEODIsIDB4MjgzNywgMHgyODM3LCAweDFENTcsDQorICAgIDB4MjgzOCwgMHgyODM4LCAweDFENjYsIDB4MjgzOSwgMHgyODM5LCAweDFENUYsIDB4MjgzQSwgMHgyODNBLCAweDFENkUsDQorICAgIDB4MjgzQiwgMHgyODNCLCAweDFENzYsIDB4MjgzQywgMHgyODNDLCAweDFENTQsIDB4MjgzRCwgMHgyODNELCAweDFENjcsDQorICAgIDB4MjgzRSwgMHgyODNFLCAweDFENUMsIDB4MjgzRiwgMHgyODNGLCAweDFENkYsIDB4Mjg0MCwgMHgyODQwLCAweDFENzksDQorICAgIDB4MzAyMSwgMHgzMDdFLCAweDA0NjUsIDB4MzEyMSwgMHgzMTdFLCAweDA0QzMsIDB4MzIyMSwgMHgzMjdFLCAweDA1MjEsDQorICAgIDB4MzMyMSwgMHgzMzdFLCAweDA1N0YsIDB4MzQyMSwgMHgzNDdFLCAweDA1REQsIDB4MzUyMSwgMHgzNTdFLCAweDA2M0IsDQorICAgIDB4MzYyMSwgMHgzNjdFLCAweDA2OTksIDB4MzcyMSwgMHgzNzdFLCAweDA2RjcsIDB4MzgyMSwgMHgzODdFLCAweDA3NTUsDQorICAgIDB4MzkyMSwgMHgzOTdFLCAweDA3QjMsIDB4M0EyMSwgMHgzQTdFLCAweDA4MTEsIDB4M0IyMSwgMHgzQjdFLCAweDA4NkYsDQorICAgIDB4M0MyMSwgMHgzQzdFLCAweDA4Q0QsIDB4M0QyMSwgMHgzRDdFLCAweDA5MkIsIDB4M0UyMSwgMHgzRTdFLCAweDA5ODksDQorICAgIDB4M0YyMSwgMHgzRjdFLCAweDA5RTcsIDB4NDAyMSwgMHg0MDdFLCAweDBBNDUsIDB4NDEyMSwgMHg0MTdFLCAweDBBQTMsDQorICAgIDB4NDIyMSwgMHg0MjdFLCAweDBCMDEsIDB4NDMyMSwgMHg0MzdFLCAweDBCNUYsIDB4NDQyMSwgMHg0NDdFLCAweDBCQkQsDQorICAgIDB4NDUyMSwgMHg0NTdFLCAweDBDMUIsIDB4NDYyMSwgMHg0NjdFLCAweDBDNzksIDB4NDcyMSwgMHg0NzdFLCAweDBDRDcsDQorICAgIDB4NDgyMSwgMHg0ODdFLCAweDBEMzUsIDB4NDkyMSwgMHg0OTdFLCAweDBEOTMsIDB4NEEyMSwgMHg0QTdFLCAweDBERjEsDQorICAgIDB4NEIyMSwgMHg0QjdFLCAweDBFNEYsIDB4NEMyMSwgMHg0QzdFLCAweDBFQUQsIDB4NEQyMSwgMHg0RDdFLCAweDBGMEIsDQorICAgIDB4NEUyMSwgMHg0RTdFLCAweDBGNjksIDB4NEYyMSwgMHg0RjUzLCAweDBGQzcsIDB4NTAyMSwgMHg1MDdFLCAweDBGRkEsDQorICAgIDB4NTEyMSwgMHg1MTdFLCAweDEwNTgsIDB4NTIyMSwgMHg1MjdFLCAweDEwQjYsIDB4NTMyMSwgMHg1MzdFLCAweDExMTQsDQorICAgIDB4NTQyMSwgMHg1NDdFLCAweDExNzIsIDB4NTUyMSwgMHg1NTdFLCAweDExRDAsIDB4NTYyMSwgMHg1NjdFLCAweDEyMkUsDQorICAgIDB4NTcyMSwgMHg1NzdFLCAweDEyOEMsIDB4NTgyMSwgMHg1ODdFLCAweDEyRUEsIDB4NTkyMSwgMHg1OTdFLCAweDEzNDgsDQorICAgIDB4NUEyMSwgMHg1QTdFLCAweDEzQTYsIDB4NUIyMSwgMHg1QjdFLCAweDE0MDQsIDB4NUMyMSwgMHg1QzdFLCAweDE0NjIsDQorICAgIDB4NUQyMSwgMHg1RDdFLCAweDE0QzAsIDB4NUUyMSwgMHg1RTdFLCAweDE1MUUsIDB4NUYyMSwgMHg1RjdFLCAweDE1N0MsDQorICAgIDB4NjAyMSwgMHg2MDdFLCAweDE1REEsIDB4NjEyMSwgMHg2MTdFLCAweDE2MzgsIDB4NjIyMSwgMHg2MjdFLCAweDE2OTYsDQorICAgIDB4NjMyMSwgMHg2MzdFLCAweDE2RjQsIDB4NjQyMSwgMHg2NDdFLCAweDE3NTIsIDB4NjUyMSwgMHg2NTdFLCAweDE3QjAsDQorICAgIDB4NjYyMSwgMHg2NjdFLCAweDE4MEUsIDB4NjcyMSwgMHg2NzdFLCAweDE4NkMsIDB4NjgyMSwgMHg2ODdFLCAweDE4Q0EsDQorICAgIDB4NjkyMSwgMHg2OTdFLCAweDE5MjgsIDB4NkEyMSwgMHg2QTdFLCAweDE5ODYsIDB4NkIyMSwgMHg2QjdFLCAweDE5RTQsDQorICAgIDB4NkMyMSwgMHg2QzdFLCAweDFBNDIsIDB4NkQyMSwgMHg2RDdFLCAweDFBQTAsIDB4NkUyMSwgMHg2RTdFLCAweDFBRkUsDQorICAgIDB4NkYyMSwgMHg2RjdFLCAweDFCNUMsIDB4NzAyMSwgMHg3MDdFLCAweDFCQkEsIDB4NzEyMSwgMHg3MTdFLCAweDFDMTgsDQorICAgIDB4NzIyMSwgMHg3MjdFLCAweDFDNzYsIDB4NzMyMSwgMHg3MzdFLCAweDFDRDQsIDB4NzQyMSwgMHg3NDI0LCAweDFEMzIsDQorICAgIDB4NzQyNSwgMHg3NDI2LCAweDIwNUMsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL1VuaUpJUy1VQ1MyLUhXLUhfNC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL1VuaUpJUy1VQ1MyLUhXLUhfNC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk4Mzc1OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvVW5pSklTLVVDUzItSFctSF80LmNwcApAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfVW5pSklTX1VDUzJfSFdfSF80WzQgKiAzXSA9IHsKKyAgICAweDAwMjAsIDB4MDA1QiwgMHgwMEU3LCAweDAwNUMsIDB4MDA1QywgMHgyMjBGLCAweDAwNUQsIDB4MDA3RSwgMHgwMTI0LAorICAgIDB4MDBBNSwgMHgwMEE1LCAweDAxMjMsCit9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9VbmlKSVMtVUNTMi1IVy1WXzQuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9VbmlKSVMtVUNTMi1IVy1WXzQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OTQyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL1VuaUpJUy1VQ1MyLUhXLVZfNC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX1VuaUpJU19VQ1MyX0hXX1ZfNFsxOTkgKiAzXSA9IHsNCisgICAgMHgwMDIwLCAweDAwNUIsIDB4MDBFNywgMHgwMDVDLCAweDAwNUMsIDB4MjIwRiwgMHgwMDVELCAweDAwN0UsIDB4MDEyNCwNCisgICAgMHgwMEE1LCAweDAwQTUsIDB4MDEyMywgMHgwMEIwLCAweDAwQjAsIDB4MjA0RCwgMHgyMDEwLCAweDIwMTAsIDB4MUVENSwNCisgICAgMHgyMDE1LCAweDIwMTUsIDB4MUVENCwgMHgyMDE2LCAweDIwMTYsIDB4MUVENywgMHgyMDE4LCAweDIwMTksIDB4MjA1OSwNCisgICAgMHgyMDFDLCAweDIwMUQsIDB4MjA1NywgMHgyMDI1LCAweDIwMjUsIDB4MUVEQSwgMHgyMDI2LCAweDIwMjYsIDB4MUVEOSwNCisgICAgMHgyMDMyLCAweDIwMzIsIDB4MjA1MSwgMHgyMDMzLCAweDIwMzMsIDB4MjA1QiwgMHgyMTkwLCAweDIxOTAsIDB4MDJFMiwNCisgICAgMHgyMTkxLCAweDIxOTEsIDB4MDJFMCwgMHgyMTkyLCAweDIxOTIsIDB4MDJFMywgMHgyMTkzLCAweDIxOTMsIDB4MDJFMSwNCisgICAgMHgyMTk1LCAweDIxOTUsIDB4MkZCNiwgMHgyMUM0LCAweDIxQzQsIDB4MjA3NywgMHgyMUM1LCAweDIxQzUsIDB4MjA3NiwNCisgICAgMHgyMUM2LCAweDIxQzYsIDB4MjA3OCwgMHgyMUU2LCAweDIxRTYsIDB4MUY0QywgMHgyMUU3LCAweDIxRTcsIDB4MUY0RSwNCisgICAgMHgyMUU4LCAweDIxRTgsIDB4MUY0QiwgMHgyMUU5LCAweDIxRTksIDB4MUY0RCwgMHgyMjI1LCAweDIyMjUsIDB4MUVENywNCisgICAgMHgyMjNDLCAweDIyM0MsIDB4MUVENiwgMHgyMkVGLCAweDIyRUYsIDB4MUVEOSwgMHgyNTAwLCAweDI1MDEsIDB4MUQzOSwNCisgICAgMHgyNTAyLCAweDI1MDMsIDB4MUQzNywgMHgyNTA0LCAweDI1MDUsIDB4MUQzRCwgMHgyNTA2LCAweDI1MDcsIDB4MUQzQiwNCisgICAgMHgyNTA4LCAweDI1MDksIDB4MUQ0MSwgMHgyNTBBLCAweDI1MEIsIDB4MUQzRiwgMHgyNTBDLCAweDI1MEMsIDB4MUQ0NywNCisgICAgMHgyNTBELCAweDI1MEQsIDB4MUQ0OSwgMHgyNTBFLCAweDI1MEUsIDB4MUQ0OCwgMHgyNTBGLCAweDI1MEYsIDB4MUQ0QSwNCisgICAgMHgyNTEwLCAweDI1MTAsIDB4MUQ0RiwgMHgyNTExLCAweDI1MTEsIDB4MUQ1MSwgMHgyNTEyLCAweDI1MTIsIDB4MUQ1MCwNCisgICAgMHgyNTEzLCAweDI1MTMsIDB4MUQ1MiwgMHgyNTE0LCAweDI1MTQsIDB4MUQ0MywgMHgyNTE1LCAweDI1MTUsIDB4MUQ0NSwNCisgICAgMHgyNTE2LCAweDI1MTYsIDB4MUQ0NCwgMHgyNTE3LCAweDI1MTcsIDB4MUQ0NiwgMHgyNTE4LCAweDI1MTgsIDB4MUQ0QiwNCisgICAgMHgyNTE5LCAweDI1MTksIDB4MUQ0RCwgMHgyNTFBLCAweDI1MUEsIDB4MUQ0QywgMHgyNTFCLCAweDI1MUIsIDB4MUQ0RSwNCisgICAgMHgyNTFDLCAweDI1MUMsIDB4MUQ2MywgMHgyNTFELCAweDI1MUQsIDB4MUQ2NywgMHgyNTFFLCAweDI1MUUsIDB4MUQ2NSwNCisgICAgMHgyNTFGLCAweDI1MUYsIDB4MUQ2NCwgMHgyNTIwLCAweDI1MjAsIDB4MUQ2NiwgMHgyNTIxLCAweDI1MjEsIDB4MUQ2OSwNCisgICAgMHgyNTIyLCAweDI1MjIsIDB4MUQ2OCwgMHgyNTIzLCAweDI1MjQsIDB4MUQ2QSwgMHgyNTI1LCAweDI1MjUsIDB4MUQ2RiwNCisgICAgMHgyNTI2LCAweDI1MjYsIDB4MUQ2RCwgMHgyNTI3LCAweDI1MjcsIDB4MUQ2QywgMHgyNTI4LCAweDI1MjgsIDB4MUQ2RSwNCisgICAgMHgyNTI5LCAweDI1MjksIDB4MUQ3MSwgMHgyNTJBLCAweDI1MkEsIDB4MUQ3MCwgMHgyNTJCLCAweDI1MkIsIDB4MUQ3MiwNCisgICAgMHgyNTJDLCAweDI1MkMsIDB4MUQ1QiwgMHgyNTJELCAweDI1MkYsIDB4MUQ1RCwgMHgyNTMwLCAweDI1MzAsIDB4MUQ1QywNCisgICAgMHgyNTMxLCAweDI1MzMsIDB4MUQ2MCwgMHgyNTM0LCAweDI1MzQsIDB4MUQ1MywgMHgyNTM1LCAweDI1MzcsIDB4MUQ1NSwNCisgICAgMHgyNTM4LCAweDI1MzgsIDB4MUQ1NCwgMHgyNTM5LCAweDI1M0IsIDB4MUQ1OCwgMHgyNTNELCAweDI1M0YsIDB4MUQ3NywNCisgICAgMHgyNTQwLCAweDI1NDAsIDB4MUQ3NSwgMHgyNTQxLCAweDI1NDEsIDB4MUQ3NCwgMHgyNTQyLCAweDI1NDIsIDB4MUQ3NiwNCisgICAgMHgyNTQzLCAweDI1NDMsIDB4MUQ3QiwgMHgyNTQ0LCAweDI1NDQsIDB4MUQ3RCwgMHgyNTQ1LCAweDI1NDUsIDB4MUQ3QSwNCisgICAgMHgyNTQ2LCAweDI1NDYsIDB4MUQ3QywgMHgyNTQ3LCAweDI1NDcsIDB4MUQ4MSwgMHgyNTQ4LCAweDI1NDgsIDB4MUQ4MCwNCisgICAgMHgyNTQ5LCAweDI1NEEsIDB4MUQ3RSwgMHgyNjFDLCAweDI2MUMsIDB4MjAxRCwgMHgyNjFELCAweDI2MUQsIDB4MjAxQiwNCisgICAgMHgyNjFFLCAweDI2MUUsIDB4MjAxRSwgMHgyNjFGLCAweDI2MUYsIDB4MjAxQywgMHgyNzAyLCAweDI3MDIsIDB4MkY5MiwNCisgICAgMHgyN0ExLCAweDI3QTEsIDB4MjAxMSwgMHgzMDAxLCAweDMwMDIsIDB4MUVDRiwgMHgzMDA4LCAweDMwMTEsIDB4MUVFMywNCisgICAgMHgzMDEzLCAweDMwMTMsIDB4MjA0RSwgMHgzMDE0LCAweDMwMTUsIDB4MUVERCwgMHgzMDFDLCAweDMwMUMsIDB4MUVENiwNCisgICAgMHgzMDFELCAweDMwMUQsIDB4MUYxNCwgMHgzMDFGLCAweDMwMUYsIDB4MUYxNSwgMHgzMDQxLCAweDMwNDEsIDB4MUVFRSwNCisgICAgMHgzMDQzLCAweDMwNDMsIDB4MUVFRiwgMHgzMDQ1LCAweDMwNDUsIDB4MUVGMCwgMHgzMDQ3LCAweDMwNDcsIDB4MUVGMSwNCisgICAgMHgzMDQ5LCAweDMwNDksIDB4MUVGMiwgMHgzMDYzLCAweDMwNjMsIDB4MUVGMywgMHgzMDgzLCAweDMwODMsIDB4MUVGNCwNCisgICAgMHgzMDg1LCAweDMwODUsIDB4MUVGNSwgMHgzMDg3LCAweDMwODcsIDB4MUVGNiwgMHgzMDhFLCAweDMwOEUsIDB4MUVGNywNCisgICAgMHgzMDlCLCAweDMwOUIsIDB4MjA1MCwgMHgzMDlDLCAweDMwOUMsIDB4MjA0RiwgMHgzMEExLCAweDMwQTEsIDB4MUVGOCwNCisgICAgMHgzMEEzLCAweDMwQTMsIDB4MUVGOSwgMHgzMEE1LCAweDMwQTUsIDB4MUVGQSwgMHgzMEE3LCAweDMwQTcsIDB4MUVGQiwNCisgICAgMHgzMEE5LCAweDMwQTksIDB4MUVGQywgMHgzMEMzLCAweDMwQzMsIDB4MUVGRCwgMHgzMEUzLCAweDMwRTMsIDB4MUVGRSwNCisgICAgMHgzMEU1LCAweDMwRTUsIDB4MUVGRiwgMHgzMEU3LCAweDMwRTcsIDB4MUYwMCwgMHgzMEVFLCAweDMwRUUsIDB4MUYwMSwNCisgICAgMHgzMEY1LCAweDMwRjYsIDB4MUYwMiwgMHgzMEZDLCAweDMwRkMsIDB4MUVEMywgMHgzMzAwLCAweDMzMDAsIDB4MjA5RSwNCisgICAgMHgzMzAxLCAweDMzMDIsIDB4MkVCNiwgMHgzMzAzLCAweDMzMDMsIDB4MjA5MiwgMHgzMzA0LCAweDMzMDQsIDB4MkVCOCwNCisgICAgMHgzMzA1LCAweDMzMDUsIDB4MjA4RCwgMHgzMzA2LCAweDMzMDYsIDB4MkVCOSwgMHgzMzA3LCAweDMzMDcsIDB4MkVCRCwNCisgICAgMHgzMzA4LCAweDMzMDgsIDB4MkVCQiwgMHgzMzA5LCAweDMzMDksIDB4MkVDMCwgMHgzMzBBLCAweDMzMEEsIDB4MkVCRSwNCisgICAgMHgzMzBCLCAweDMzMEIsIDB4MkVDMiwgMHgzMzBDLCAweDMzMEMsIDB4MkVDNCwgMHgzMzBELCAweDMzMEQsIDB4MUYwRSwNCisgICAgMHgzMzBFLCAweDMzMTMsIDB4MkVDNSwgMHgzMzE0LCAweDMzMTQsIDB4MUYwNSwgMHgzMzE1LCAweDMzMTUsIDB4MjA5NCwNCisgICAgMHgzMzE2LCAweDMzMTYsIDB4MjA4QSwgMHgzMzE3LCAweDMzMTcsIDB4MkVDQywgMHgzMzE4LCAweDMzMTgsIDB4MjA5MywNCisgICAgMHgzMzE5LCAweDMzMTksIDB4MkVDRSwgMHgzMzFBLCAweDMzMUQsIDB4MkVEMCwgMHgzMzFFLCAweDMzMUUsIDB4MjBBMSwNCisgICAgMHgzMzFGLCAweDMzMjEsIDB4MkVENCwgMHgzMzIyLCAweDMzMjIsIDB4MjA4OSwgMHgzMzIzLCAweDMzMjMsIDB4MjA5QywNCisgICAgMHgzMzI0LCAweDMzMjQsIDB4MkVENywgMHgzMzI1LCAweDMzMjUsIDB4MkVEOSwgMHgzMzI2LCAweDMzMjYsIDB4MUYwRiwNCisgICAgMHgzMzI3LCAweDMzMjcsIDB4MUYwOSwgMHgzMzI4LCAweDMzMjksIDB4MkVEQywgMHgzMzJBLCAweDMzMkEsIDB4MjBBNCwNCisgICAgMHgzMzJCLCAweDMzMkIsIDB4MUYxMSwgMHgzMzJELCAweDMzMkQsIDB4MkVERiwgMHgzMzJFLCAweDMzMzAsIDB4MkVFMiwNCisgICAgMHgzMzMxLCAweDMzMzEsIDB4MjBBNiwgMHgzMzMyLCAweDMzMzIsIDB4MkVFNSwgMHgzMzMzLCAweDMzMzMsIDB4MjA4RSwNCisgICAgMHgzMzM0LCAweDMzMzUsIDB4MkVFOCwgMHgzMzM2LCAweDMzMzYsIDB4MUYwQiwgMHgzMzM3LCAweDMzMzcsIDB4MkVFRSwNCisgICAgMHgzMzM4LCAweDMzMzgsIDB4MkVGMCwgMHgzMzM5LCAweDMzMzksIDB4MjA5NywgMHgzMzNBLCAweDMzM0EsIDB4MkVGMSwNCisgICAgMHgzMzNCLCAweDMzM0IsIDB4MjA5RCwgMHgzMzNDLCAweDMzM0MsIDB4MkVFQSwgMHgzMzNELCAweDMzM0QsIDB4MkVGMiwNCisgICAgMHgzMzNFLCAweDMzNDAsIDB4MkVGNCwgMHgzMzQxLCAweDMzNDEsIDB4MkVGMywgMHgzMzQyLCAweDMzNDIsIDB4MjA5QiwNCisgICAgMHgzMzQzLCAweDMzNDYsIDB4MkVGNywgMHgzMzQ3LCAweDMzNDcsIDB4MjBBNSwgMHgzMzQ4LCAweDMzNDgsIDB4MkVGQiwNCisgICAgMHgzMzQ5LCAweDMzNDksIDB4MUYwNCwgMHgzMzRBLCAweDMzNEEsIDB4MUYxMiwgMHgzMzRCLCAweDMzNEMsIDB4MkVGQywNCisgICAgMHgzMzRELCAweDMzNEQsIDB4MUYwNywgMHgzMzRFLCAweDMzNEUsIDB4MjA5MSwgMHgzMzRGLCAweDMzNTAsIDB4MkVGRSwNCisgICAgMHgzMzUxLCAweDMzNTEsIDB4MUYwQywgMHgzMzUyLCAweDMzNTIsIDB4MkYwMiwgMHgzMzUzLCAweDMzNTMsIDB4MkYwNiwNCisgICAgMHgzMzU0LCAweDMzNTQsIDB4MkYwMywgMHgzMzU1LCAweDMzNTYsIDB4MkYwNywgMHgzMzU3LCAweDMzNTcsIDB4MjA5OCwNCisgICAgMHgzMzdGLCAweDMzN0YsIDB4MjA4NCwgMHhGRjA4LCAweEZGMDksIDB4MUVEQiwgMHhGRjBDLCAweEZGMEMsIDB4MjA0QywNCisgICAgMHhGRjBFLCAweEZGMEUsIDB4MjA1MiwgMHhGRjFELCAweEZGMUQsIDB4MUVFRCwgMHhGRjNCLCAweEZGM0IsIDB4MUVERiwNCisgICAgMHhGRjNELCAweEZGM0QsIDB4MUVFMCwgMHhGRjNGLCAweEZGM0YsIDB4MUVEMiwgMHhGRjVCLCAweEZGNUIsIDB4MUVFMSwNCisgICAgMHhGRjVDLCAweEZGNUMsIDB4MUVEOCwgMHhGRjVELCAweEZGNUQsIDB4MUVFMiwgMHhGRjVFLCAweEZGNUUsIDB4MUVENiwNCisgICAgMHhGRkUzLCAweEZGRTMsIDB4MUVEMSwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvVW5pSklTLVVDUzItSF80LmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvVW5pSklTLVVDUzItSF80LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWYwYjcxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9VbmlKSVMtVUNTMi1IXzQuY3BwCkBAIC0wLDAgKzEsMjQ1MSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX1VuaUpJU19VQ1MyX0hfNFs5NzcyICogMl0gPSB7DQorICAgIDB4MDAyMCwgMHgwMDAxLCAweDAwMjEsIDB4MDAwMiwgMHgwMDIyLCAweDAwMDMsIDB4MDAyMywgMHgwMDA0LA0KKyAgICAweDAwMjQsIDB4MDAwNSwgMHgwMDI1LCAweDAwMDYsIDB4MDAyNiwgMHgwMDA3LCAweDAwMjcsIDB4MDAwOCwNCisgICAgMHgwMDI4LCAweDAwMDksIDB4MDAyOSwgMHgwMDBBLCAweDAwMkEsIDB4MDAwQiwgMHgwMDJCLCAweDAwMEMsDQorICAgIDB4MDAyQywgMHgwMDBELCAweDAwMkQsIDB4MDAwRSwgMHgwMDJFLCAweDAwMEYsIDB4MDAyRiwgMHgwMDEwLA0KKyAgICAweDAwMzAsIDB4MDAxMSwgMHgwMDMxLCAweDAwMTIsIDB4MDAzMiwgMHgwMDEzLCAweDAwMzMsIDB4MDAxNCwNCisgICAgMHgwMDM0LCAweDAwMTUsIDB4MDAzNSwgMHgwMDE2LCAweDAwMzYsIDB4MDAxNywgMHgwMDM3LCAweDAwMTgsDQorICAgIDB4MDAzOCwgMHgwMDE5LCAweDAwMzksIDB4MDAxQSwgMHgwMDNBLCAweDAwMUIsIDB4MDAzQiwgMHgwMDFDLA0KKyAgICAweDAwM0MsIDB4MDAxRCwgMHgwMDNELCAweDAwMUUsIDB4MDAzRSwgMHgwMDFGLCAweDAwM0YsIDB4MDAyMCwNCisgICAgMHgwMDQwLCAweDAwMjEsIDB4MDA0MSwgMHgwMDIyLCAweDAwNDIsIDB4MDAyMywgMHgwMDQzLCAweDAwMjQsDQorICAgIDB4MDA0NCwgMHgwMDI1LCAweDAwNDUsIDB4MDAyNiwgMHgwMDQ2LCAweDAwMjcsIDB4MDA0NywgMHgwMDI4LA0KKyAgICAweDAwNDgsIDB4MDAyOSwgMHgwMDQ5LCAweDAwMkEsIDB4MDA0QSwgMHgwMDJCLCAweDAwNEIsIDB4MDAyQywNCisgICAgMHgwMDRDLCAweDAwMkQsIDB4MDA0RCwgMHgwMDJFLCAweDAwNEUsIDB4MDAyRiwgMHgwMDRGLCAweDAwMzAsDQorICAgIDB4MDA1MCwgMHgwMDMxLCAweDAwNTEsIDB4MDAzMiwgMHgwMDUyLCAweDAwMzMsIDB4MDA1MywgMHgwMDM0LA0KKyAgICAweDAwNTQsIDB4MDAzNSwgMHgwMDU1LCAweDAwMzYsIDB4MDA1NiwgMHgwMDM3LCAweDAwNTcsIDB4MDAzOCwNCisgICAgMHgwMDU4LCAweDAwMzksIDB4MDA1OSwgMHgwMDNBLCAweDAwNUEsIDB4MDAzQiwgMHgwMDVCLCAweDAwM0MsDQorICAgIDB4MDA1QywgMHgwMDYxLCAweDAwNUQsIDB4MDAzRSwgMHgwMDVFLCAweDAwM0YsIDB4MDA1RiwgMHgwMDQwLA0KKyAgICAweDAwNjAsIDB4MDA0MSwgMHgwMDYxLCAweDAwNDIsIDB4MDA2MiwgMHgwMDQzLCAweDAwNjMsIDB4MDA0NCwNCisgICAgMHgwMDY0LCAweDAwNDUsIDB4MDA2NSwgMHgwMDQ2LCAweDAwNjYsIDB4MDA0NywgMHgwMDY3LCAweDAwNDgsDQorICAgIDB4MDA2OCwgMHgwMDQ5LCAweDAwNjksIDB4MDA0QSwgMHgwMDZBLCAweDAwNEIsIDB4MDA2QiwgMHgwMDRDLA0KKyAgICAweDAwNkMsIDB4MDA0RCwgMHgwMDZELCAweDAwNEUsIDB4MDA2RSwgMHgwMDRGLCAweDAwNkYsIDB4MDA1MCwNCisgICAgMHgwMDcwLCAweDAwNTEsIDB4MDA3MSwgMHgwMDUyLCAweDAwNzIsIDB4MDA1MywgMHgwMDczLCAweDAwNTQsDQorICAgIDB4MDA3NCwgMHgwMDU1LCAweDAwNzUsIDB4MDA1NiwgMHgwMDc2LCAweDAwNTcsIDB4MDA3NywgMHgwMDU4LA0KKyAgICAweDAwNzgsIDB4MDA1OSwgMHgwMDc5LCAweDAwNUEsIDB4MDA3QSwgMHgwMDVCLCAweDAwN0IsIDB4MDA1QywNCisgICAgMHgwMDdDLCAweDAwNUQsIDB4MDA3RCwgMHgwMDVFLCAweDAwN0UsIDB4MDA1RiwgMHgwMEExLCAweDAwNjUsDQorICAgIDB4MDBBMiwgMHgwMDY2LCAweDAwQTMsIDB4MDA2NywgMHgwMEE0LCAweDAwNkIsIDB4MDBBNSwgMHgwMDNELA0KKyAgICAweDAwQTYsIDB4MDA2MywgMHgwMEE3LCAweDAyRDAsIDB4MDBBOCwgMHgwMjg3LCAweDAwQTksIDB4MDA5OCwNCisgICAgMHgwMEFBLCAweDAwOEMsIDB4MDBBQiwgMHgwMDZELCAweDAwQUMsIDB4MDA5OSwgMHgwMEFELCAweDAwOTcsDQorICAgIDB4MDBBRSwgMHgwMDlBLCAweDAwQUYsIDB4MDA4MSwgMHgwMEIwLCAweDAyQzMsIDB4MDBCMSwgMHgwMkI2LA0KKyAgICAweDAwQjIsIDB4MDA5RCwgMHgwMEIzLCAweDAwOUUsIDB4MDBCNCwgMHgwMjg1LCAweDAwQjUsIDB4MDA5RiwNCisgICAgMHgwMEI2LCAweDAzMEEsIDB4MDBCNywgMHgwMDc1LCAweDAwQjgsIDB4MDA4NiwgMHgwMEI5LCAweDAwQTAsDQorICAgIDB4MDBCQSwgMHgwMDkwLCAweDAwQkIsIDB4MDA3QiwgMHgwMEJDLCAweDAwQTEsIDB4MDBCRCwgMHgwMEEyLA0KKyAgICAweDAwQkUsIDB4MDBBMywgMHgwMEJGLCAweDAwN0UsIDB4MDBDMCwgMHgwMEE0LCAweDAwQzEsIDB4MDBBNSwNCisgICAgMHgwMEMyLCAweDAwQTYsIDB4MDBDMywgMHgwMEE3LCAweDAwQzQsIDB4MDBBOCwgMHgwMEM1LCAweDAwQTksDQorICAgIDB4MDBDNiwgMHgwMDhCLCAweDAwQzcsIDB4MDBBQSwgMHgwMEM4LCAweDAwQUIsIDB4MDBDOSwgMHgwMEFDLA0KKyAgICAweDAwQ0EsIDB4MDBBRCwgMHgwMENCLCAweDAwQUUsIDB4MDBDQywgMHgwMEFGLCAweDAwQ0QsIDB4MDBCMCwNCisgICAgMHgwMENFLCAweDAwQjEsIDB4MDBDRiwgMHgwMEIyLCAweDAwRDAsIDB4MDBCMywgMHgwMEQxLCAweDAwQjQsDQorICAgIDB4MDBEMiwgMHgwMEI1LCAweDAwRDMsIDB4MDBCNiwgMHgwMEQ0LCAweDAwQjcsIDB4MDBENSwgMHgwMEI4LA0KKyAgICAweDAwRDYsIDB4MDBCOSwgMHgwMEQ3LCAweDAyQjcsIDB4MDBEOCwgMHgwMDhFLCAweDAwRDksIDB4MDBCQiwNCisgICAgMHgwMERBLCAweDAwQkMsIDB4MDBEQiwgMHgwMEJELCAweDAwREMsIDB4MDBCRSwgMHgwMERELCAweDAwQkYsDQorICAgIDB4MDBERSwgMHgwMEMwLCAweDAwREYsIDB4MDA5NiwgMHgwMEUwLCAweDAwQzEsIDB4MDBFMSwgMHgwMEMyLA0KKyAgICAweDAwRTIsIDB4MDBDMywgMHgwMEUzLCAweDAwQzQsIDB4MDBFNCwgMHgwMEM1LCAweDAwRTUsIDB4MDBDNiwNCisgICAgMHgwMEU2LCAweDAwOTEsIDB4MDBFNywgMHgwMEM3LCAweDAwRTgsIDB4MDBDOCwgMHgwMEU5LCAweDAwQzksDQorICAgIDB4MDBFQSwgMHgwMENBLCAweDAwRUIsIDB4MDBDQiwgMHgwMEVDLCAweDAwQ0MsIDB4MDBFRCwgMHgwMENELA0KKyAgICAweDAwRUUsIDB4MDBDRSwgMHgwMEVGLCAweDAwQ0YsIDB4MDBGMCwgMHgwMEQwLCAweDAwRjEsIDB4MDBEMSwNCisgICAgMHgwMEYyLCAweDAwRDIsIDB4MDBGMywgMHgwMEQzLCAweDAwRjQsIDB4MDBENCwgMHgwMEY1LCAweDAwRDUsDQorICAgIDB4MDBGNiwgMHgwMEQ2LCAweDAwRjcsIDB4MDJCOCwgMHgwMEY4LCAweDAwOTQsIDB4MDBGOSwgMHgwMEQ4LA0KKyAgICAweDAwRkEsIDB4MDBEOSwgMHgwMEZCLCAweDAwREEsIDB4MDBGQywgMHgwMERCLCAweDAwRkQsIDB4MDBEQywNCisgICAgMHgwMEZFLCAweDAwREQsIDB4MDBGRiwgMHgwMERFLCAweDAxMDAsIDB4MjQ5NiwgMHgwMTAxLCAweDI0OTEsDQorICAgIDB4MDExMiwgMHgyNDk5LCAweDAxMTMsIDB4MjQ5NCwgMHgwMTFBLCAweDI0QjMsIDB4MDExQiwgMHgyNEJGLA0KKyAgICAweDAxMjcsIDB4MkYzQywgMHgwMTI4LCAweDI0QjgsIDB4MDEyOSwgMHgyNEM0LCAweDAxMkEsIDB4MjQ5NywNCisgICAgMHgwMTJCLCAweDI0OTIsIDB4MDEzMSwgMHgwMDkyLCAweDAxNDEsIDB4MDA4RCwgMHgwMTQyLCAweDAwOTMsDQorICAgIDB4MDE0QiwgMHgyNERDLCAweDAxNEMsIDB4MjQ5QSwgMHgwMTRELCAweDI0OTUsIDB4MDE1MiwgMHgwMDhGLA0KKyAgICAweDAxNTMsIDB4MDA5NSwgMHgwMTYwLCAweDAwREYsIDB4MDE2MSwgMHgwMEUzLCAweDAxNjgsIDB4MjRCRCwNCisgICAgMHgwMTY5LCAweDI0QzksIDB4MDE2QSwgMHgyNDk4LCAweDAxNkIsIDB4MjQ5MywgMHgwMTZFLCAweDI0QkMsDQorICAgIDB4MDE2RiwgMHgyNEM4LCAweDAxNzgsIDB4MDBFMCwgMHgwMTdELCAweDAwRTEsIDB4MDE3RSwgMHgwMEU1LA0KKyAgICAweDAxQzAsIDB4MDA2MywgMHgwMUNELCAweDI0QjIsIDB4MDFDRSwgMHgyNEJFLCAweDAxQ0YsIDB4MjRCNiwNCisgICAgMHgwMUQwLCAweDI0QzIsIDB4MDFEMSwgMHgyNEI5LCAweDAxRDIsIDB4MjRDNSwgMHgwMUQzLCAweDI0QkIsDQorICAgIDB4MDFENCwgMHgyNEM3LCAweDAxRkQsIDB4MjRDRCwgMHgwMjUxLCAweDI0Q0EsIDB4MDI1NCwgMHgyNENGLA0KKyAgICAweDAyNTksIDB4MjREMiwgMHgwMjVBLCAweDI0RDUsIDB4MDI1QiwgMHgyNEQ4LCAweDAyNzUsIDB4MjRERCwNCisgICAgMHgwMjgzLCAweDI0RTIsIDB4MDI4QywgMHgyNERFLCAweDAyOTIsIDB4MjRFMSwgMHgwMkQwLCAweDI0RTMsDQorICAgIDB4MDMwMCwgMHgwMDQxLCAweDAzMDEsIDB4MDA3RiwgMHgwMzAyLCAweDAwODAsIDB4MDMwMywgMHgwMDVGLA0KKyAgICAweDAzMDQsIDB4MDA4MSwgMHgwMzA1LCAweDAwRTIsIDB4MDMwNiwgMHgwMDgyLCAweDAzMDcsIDB4MDA4MywNCisgICAgMHgwMzA4LCAweDAwODQsIDB4MDMwQSwgMHgwMDg1LCAweDAzMEIsIDB4MDA4NywgMHgwMzBDLCAweDAwODksDQorICAgIDB4MDMyNywgMHgwMDg2LCAweDAzMjgsIDB4MDA4OCwgMHgwMzMyLCAweDAwNDAsIDB4MDMzNiwgMHgwMDhBLA0KKyAgICAweDAzNjEsIDB4MDJGNiwgMHgwMzkxLCAweDAzRjMsIDB4MDM5MiwgMHgwM0Y0LCAweDAzOTMsIDB4MDNGNSwNCisgICAgMHgwMzk0LCAweDAzRjYsIDB4MDM5NSwgMHgwM0Y3LCAweDAzOTYsIDB4MDNGOCwgMHgwMzk3LCAweDAzRjksDQorICAgIDB4MDM5OCwgMHgwM0ZBLCAweDAzOTksIDB4MDNGQiwgMHgwMzlBLCAweDAzRkMsIDB4MDM5QiwgMHgwM0ZELA0KKyAgICAweDAzOUMsIDB4MDNGRSwgMHgwMzlELCAweDAzRkYsIDB4MDM5RSwgMHgwNDAwLCAweDAzOUYsIDB4MDQwMSwNCisgICAgMHgwM0EwLCAweDA0MDIsIDB4MDNBMSwgMHgwNDAzLCAweDAzQTMsIDB4MDQwNCwgMHgwM0E0LCAweDA0MDUsDQorICAgIDB4MDNBNSwgMHgwNDA2LCAweDAzQTYsIDB4MDQwNywgMHgwM0E3LCAweDA0MDgsIDB4MDNBOCwgMHgwNDA5LA0KKyAgICAweDAzQTksIDB4MDQwQSwgMHgwM0IxLCAweDA0MEIsIDB4MDNCMiwgMHgwNDBDLCAweDAzQjMsIDB4MDQwRCwNCisgICAgMHgwM0I0LCAweDA0MEUsIDB4MDNCNSwgMHgwNDBGLCAweDAzQjYsIDB4MDQxMCwgMHgwM0I3LCAweDA0MTEsDQorICAgIDB4MDNCOCwgMHgwNDEyLCAweDAzQjksIDB4MDQxMywgMHgwM0JBLCAweDA0MTQsIDB4MDNCQiwgMHgwNDE1LA0KKyAgICAweDAzQkMsIDB4MDQxNiwgMHgwM0JELCAweDA0MTcsIDB4MDNCRSwgMHgwNDE4LCAweDAzQkYsIDB4MDQxOSwNCisgICAgMHgwM0MwLCAweDA0MUEsIDB4MDNDMSwgMHgwNDFCLCAweDAzQzMsIDB4MDQxQywgMHgwM0M0LCAweDA0MUQsDQorICAgIDB4MDNDNSwgMHgwNDFFLCAweDAzQzYsIDB4MDQxRiwgMHgwM0M3LCAweDA0MjAsIDB4MDNDOCwgMHgwNDIxLA0KKyAgICAweDAzQzksIDB4MDQyMiwgMHgwM0QwLCAweDJGM0EsIDB4MDNEMSwgMHgyRjQwLCAweDAzREIsIDB4MkYzRiwNCisgICAgMHgwNDAxLCAweDA0MjksIDB4MDQxMCwgMHgwNDIzLCAweDA0MTEsIDB4MDQyNCwgMHgwNDEyLCAweDA0MjUsDQorICAgIDB4MDQxMywgMHgwNDI2LCAweDA0MTQsIDB4MDQyNywgMHgwNDE1LCAweDA0MjgsIDB4MDQxNiwgMHgwNDJBLA0KKyAgICAweDA0MTcsIDB4MDQyQiwgMHgwNDE4LCAweDA0MkMsIDB4MDQxOSwgMHgwNDJELCAweDA0MUEsIDB4MDQyRSwNCisgICAgMHgwNDFCLCAweDA0MkYsIDB4MDQxQywgMHgwNDMwLCAweDA0MUQsIDB4MDQzMSwgMHgwNDFFLCAweDA0MzIsDQorICAgIDB4MDQxRiwgMHgwNDMzLCAweDA0MjAsIDB4MDQzNCwgMHgwNDIxLCAweDA0MzUsIDB4MDQyMiwgMHgwNDM2LA0KKyAgICAweDA0MjMsIDB4MDQzNywgMHgwNDI0LCAweDA0MzgsIDB4MDQyNSwgMHgwNDM5LCAweDA0MjYsIDB4MDQzQSwNCisgICAgMHgwNDI3LCAweDA0M0IsIDB4MDQyOCwgMHgwNDNDLCAweDA0MjksIDB4MDQzRCwgMHgwNDJBLCAweDA0M0UsDQorICAgIDB4MDQyQiwgMHgwNDNGLCAweDA0MkMsIDB4MDQ0MCwgMHgwNDJELCAweDA0NDEsIDB4MDQyRSwgMHgwNDQyLA0KKyAgICAweDA0MkYsIDB4MDQ0MywgMHgwNDMwLCAweDA0NDQsIDB4MDQzMSwgMHgwNDQ1LCAweDA0MzIsIDB4MDQ0NiwNCisgICAgMHgwNDMzLCAweDA0NDcsIDB4MDQzNCwgMHgwNDQ4LCAweDA0MzUsIDB4MDQ0OSwgMHgwNDM2LCAweDA0NEIsDQorICAgIDB4MDQzNywgMHgwNDRDLCAweDA0MzgsIDB4MDQ0RCwgMHgwNDM5LCAweDA0NEUsIDB4MDQzQSwgMHgwNDRGLA0KKyAgICAweDA0M0IsIDB4MDQ1MCwgMHgwNDNDLCAweDA0NTEsIDB4MDQzRCwgMHgwNDUyLCAweDA0M0UsIDB4MDQ1MywNCisgICAgMHgwNDNGLCAweDA0NTQsIDB4MDQ0MCwgMHgwNDU1LCAweDA0NDEsIDB4MDQ1NiwgMHgwNDQyLCAweDA0NTcsDQorICAgIDB4MDQ0MywgMHgwNDU4LCAweDA0NDQsIDB4MDQ1OSwgMHgwNDQ1LCAweDA0NUEsIDB4MDQ0NiwgMHgwNDVCLA0KKyAgICAweDA0NDcsIDB4MDQ1QywgMHgwNDQ4LCAweDA0NUQsIDB4MDQ0OSwgMHgwNDVFLCAweDA0NEEsIDB4MDQ1RiwNCisgICAgMHgwNDRCLCAweDA0NjAsIDB4MDQ0QywgMHgwNDYxLCAweDA0NEQsIDB4MDQ2MiwgMHgwNDRFLCAweDA0NjMsDQorICAgIDB4MDQ0RiwgMHgwNDY0LCAweDA0NTEsIDB4MDQ0QSwgMHgwNDVCLCAweDJGM0MsIDB4MUVCQywgMHgyNEI1LA0KKyAgICAweDFFQkQsIDB4MjRDMSwgMHgyMDAyLCAweDAwRTcsIDB4MjAwMywgMHgwMjc5LCAweDIwMTAsIDB4MDI5NiwNCisgICAgMHgyMDExLCAweDAwMEUsIDB4MjAxMiwgMHgwMDcyLCAweDIwMTMsIDB4MDA3MiwgMHgyMDE0LCAweDAwOEEsDQorICAgIDB4MjAxNSwgMHgwMjk1LCAweDIwMTYsIDB4MDI5QSwgMHgyMDE4LCAweDAyOUUsIDB4MjAxOSwgMHgwMjlGLA0KKyAgICAweDIwMUEsIDB4MDA3OCwgMHgyMDFDLCAweDAyQTAsIDB4MjAxRCwgMHgwMkExLCAweDIwMUUsIDB4MDA3OSwNCisgICAgMHgyMDIwLCAweDAzMDgsIDB4MjAyMSwgMHgwMzA5LCAweDIwMjIsIDB4MDA3NywgMHgyMDI1LCAweDAyOUQsDQorICAgIDB4MjAyNiwgMHgwMjlDLCAweDIwMzAsIDB4MDMwNCwgMHgyMDMyLCAweDAyQzQsIDB4MjAzMywgMHgwMkM1LA0KKyAgICAweDIwMzksIDB4MDA2RSwgMHgyMDNBLCAweDAwNkYsIDB4MjAzQiwgMHgwMkRFLCAweDIwM0MsIDB4MkY0RiwNCisgICAgMHgyMDNFLCAweDAxNDUsIDB4MjA0NCwgMHgwMDY4LCAweDIwNDksIDB4MkY1MCwgMHgyMDcwLCAweDI0QTEsDQorICAgIDB4MjA3NCwgMHgyNEEyLCAweDIwNzUsIDB4MjRBMywgMHgyMDc2LCAweDI0QTQsIDB4MjA3NywgMHgyNEE1LA0KKyAgICAweDIwNzgsIDB4MjRBNiwgMHgyMDc5LCAweDI0QTcsIDB4MjA4MCwgMHgyNEE4LCAweDIwODEsIDB4MjRBOSwNCisgICAgMHgyMDgyLCAweDI0QUEsIDB4MjA4MywgMHgyNEFCLCAweDIwODQsIDB4MjRBQywgMHgyMDg1LCAweDI0QUQsDQorICAgIDB4MjA4NiwgMHgyNEFFLCAweDIwODcsIDB4MjRBRiwgMHgyMDg4LCAweDI0QjAsIDB4MjA4OSwgMHgyNEIxLA0KKyAgICAweDIwQUMsIDB4MjQ4QSwgMHgyMERELCAweDAzMEIsIDB4MjEwMCwgMHgyRTRGLCAweDIxMDMsIDB4MDJDNiwNCisgICAgMHgyMTA1LCAweDJFNTMsIDB4MjEwOSwgMHgyMDcxLCAweDIxMEEsIDB4MjA3MCwgMHgyMTBGLCAweDJGM0MsDQorICAgIDB4MjExMywgMHgxRjU5LCAweDIxMTYsIDB4MURCQSwgMHgyMTIxLCAweDFGNzcsIDB4MjEyMiwgMHgwMEU0LA0KKyAgICAweDIxMjYsIDB4MjQ4QiwgMHgyMTJCLCAweDAzMDMsIDB4MjEzNSwgMHgyRjM5LCAweDIxNTMsIDB4MjQ5RiwNCisgICAgMHgyMTU0LCAweDI0QTAsIDB4MjE1QiwgMHgyNDlCLCAweDIxNUMsIDB4MjQ5QywgMHgyMTVELCAweDI0OUQsDQorICAgIDB4MjE1RSwgMHgyNDlFLCAweDIxNjAsIDB4MUQ5NywgMHgyMTYxLCAweDFEOTgsIDB4MjE2MiwgMHgxRDk5LA0KKyAgICAweDIxNjMsIDB4MUQ5QSwgMHgyMTY0LCAweDFEOUIsIDB4MjE2NSwgMHgxRDlDLCAweDIxNjYsIDB4MUQ5RCwNCisgICAgMHgyMTY3LCAweDFEOUUsIDB4MjE2OCwgMHgxRDlGLCAweDIxNjksIDB4MURBMCwgMHgyMTZBLCAweDIwMjEsDQorICAgIDB4MjE2QiwgMHgyMDIyLCAweDIxNzAsIDB4MUY5QywgMHgyMTcxLCAweDFGOUQsIDB4MjE3MiwgMHgxRjlFLA0KKyAgICAweDIxNzMsIDB4MUY5RiwgMHgyMTc0LCAweDFGQTAsIDB4MjE3NSwgMHgxRkExLCAweDIxNzYsIDB4MUZBMiwNCisgICAgMHgyMTc3LCAweDFGQTMsIDB4MjE3OCwgMHgxRkE0LCAweDIxNzksIDB4MUZBNSwgMHgyMTdBLCAweDIwNkEsDQorICAgIDB4MjE3QiwgMHgyMDZCLCAweDIxN0YsIDB4MjA2RiwgMHgyMTkwLCAweDAyRTEsIDB4MjE5MSwgMHgwMkUyLA0KKyAgICAweDIxOTIsIDB4MDJFMCwgMHgyMTkzLCAweDAyRTMsIDB4MjE5NCwgMHgyRkE5LCAweDIxOTUsIDB4MkZCNywNCisgICAgMHgyMTk2LCAweDJGQUMsIDB4MjE5NywgMHgyRkFELCAweDIxOTgsIDB4MkZBQSwgMHgyMTk5LCAweDJGQUIsDQorICAgIDB4MjFDNCwgMHgyMDc2LCAweDIxQzUsIDB4MjA3NywgMHgyMUM2LCAweDIwNzUsIDB4MjFDQywgMHgyRkFFLA0KKyAgICAweDIxRDAsIDB4MkZBOCwgMHgyMUQyLCAweDAyRjAsIDB4MjFENCwgMHgwMkYxLCAweDIxRTYsIDB4MUY0RCwNCisgICAgMHgyMUU3LCAweDFGNEMsIDB4MjFFOCwgMHgxRjRFLCAweDIxRTksIDB4MUY0QiwgMHgyMjAwLCAweDAyRjIsDQorICAgIDB4MjIwMiwgMHgwMkY3LCAweDIyMDMsIDB4MDJGMywgMHgyMjA1LCAweDJGOTgsIDB4MjIwNywgMHgwMkY4LA0KKyAgICAweDIyMDgsIDB4MDJFNSwgMHgyMjBBLCAweDJGM0IsIDB4MjIwQiwgMHgwMkU2LCAweDIyMTEsIDB4MURDOSwNCisgICAgMHgyMjEyLCAweDAyQjUsIDB4MjIxMywgMHgyRjU2LCAweDIyMUEsIDB4MDJGRCwgMHgyMjFELCAweDAyRkYsDQorICAgIDB4MjIxRSwgMHgwMkJGLCAweDIyMUYsIDB4MURDRCwgMHgyMjIwLCAweDAyRjQsIDB4MjIyNSwgMHgwMjlBLA0KKyAgICAweDIyMjcsIDB4MDJFRCwgMHgyMjI4LCAweDAyRUUsIDB4MjIyOSwgMHgwMkVDLCAweDIyMkEsIDB4MDJFQiwNCisgICAgMHgyMjJCLCAweDAzMDEsIDB4MjIyQywgMHgwMzAyLCAweDIyMkQsIDB4MjAwMywgMHgyMjJFLCAweDFEQzgsDQorICAgIDB4MjIzNCwgMHgwMkMwLCAweDIyMzUsIDB4MDMwMCwgMHgyMjNDLCAweDAyOTksIDB4MjIzRCwgMHgwMkZFLA0KKyAgICAweDIyNDMsIDB4MkY1OCwgMHgyMjUyLCAweDAyRkEsIDB4MjI2MCwgMHgwMkJBLCAweDIyNjEsIDB4MDJGOSwNCisgICAgMHgyMjY2LCAweDAyQkQsIDB4MjI2NywgMHgwMkJFLCAweDIyNkEsIDB4MDJGQiwgMHgyMjZCLCAweDAyRkMsDQorICAgIDB4MjI3MiwgMHgyRjU5LCAweDIyNzMsIDB4MkY1QSwgMHgyMjgyLCAweDAyRTksIDB4MjI4MywgMHgwMkVBLA0KKyAgICAweDIyODYsIDB4MDJFNywgMHgyMjg3LCAweDAyRTgsIDB4MjI5NSwgMHgyRjlDLCAweDIyOTYsIDB4MkY5QSwNCisgICAgMHgyMjk3LCAweDJGOUQsIDB4MjI5OCwgMHgyRjlCLCAweDIyOUQsIDB4MkY5QSwgMHgyMjlFLCAweDJGOUUsDQorICAgIDB4MjJBMCwgMHgyRjk5LCAweDIyQTUsIDB4MDJGNSwgMHgyMkJGLCAweDFEQ0UsIDB4MjJFRSwgMHgxRUQ5LA0KKyAgICAweDIyRUYsIDB4MDI5QywgMHgyMzAwLCAweDJGOTgsIDB4MjMwNywgMHgyRkJCLCAweDIzMTIsIDB4MDJGNiwNCisgICAgMHgyNDRBLCAweDJGNTQsIDB4MjQ2MCwgMHgxRDgzLCAweDI0NjEsIDB4MUQ4NCwgMHgyNDYyLCAweDFEODUsDQorICAgIDB4MjQ2MywgMHgxRDg2LCAweDI0NjQsIDB4MUQ4NywgMHgyNDY1LCAweDFEODgsIDB4MjQ2NiwgMHgxRDg5LA0KKyAgICAweDI0NjcsIDB4MUQ4QSwgMHgyNDY4LCAweDFEOEIsIDB4MjQ2OSwgMHgxRDhDLCAweDI0NkEsIDB4MUQ4RCwNCisgICAgMHgyNDZCLCAweDFEOEUsIDB4MjQ2QywgMHgxRDhGLCAweDI0NkQsIDB4MUQ5MCwgMHgyNDZFLCAweDFEOTEsDQorICAgIDB4MjQ2RiwgMHgxRDkyLCAweDI0NzAsIDB4MUQ5MywgMHgyNDcxLCAweDFEOTQsIDB4MjQ3MiwgMHgxRDk1LA0KKyAgICAweDI0NzMsIDB4MUQ5NiwgMHgyNDc0LCAweDFGODcsIDB4MjQ3NSwgMHgxRjg4LCAweDI0NzYsIDB4MUY4OSwNCisgICAgMHgyNDc3LCAweDFGOEEsIDB4MjQ3OCwgMHgxRjhCLCAweDI0NzksIDB4MUY4QywgMHgyNDdBLCAweDFGOEQsDQorICAgIDB4MjQ3QiwgMHgxRjhFLCAweDI0N0MsIDB4MUY4RiwgMHgyNDdELCAweDFGOTAsIDB4MjQ3RSwgMHgxRjkxLA0KKyAgICAweDI0N0YsIDB4MUY5MiwgMHgyNDgwLCAweDFGOTMsIDB4MjQ4MSwgMHgxRjk0LCAweDI0ODIsIDB4MUY5NSwNCisgICAgMHgyNDgzLCAweDFGOTYsIDB4MjQ4NCwgMHgxRjk3LCAweDI0ODUsIDB4MUY5OCwgMHgyNDg2LCAweDFGOTksDQorICAgIDB4MjQ4NywgMHgxRjlBLCAweDI0ODgsIDB4MUY3RSwgMHgyNDg5LCAweDFGN0YsIDB4MjQ4QSwgMHgxRjgwLA0KKyAgICAweDI0OEIsIDB4MUY4MSwgMHgyNDhDLCAweDFGODIsIDB4MjQ4RCwgMHgxRjgzLCAweDI0OEUsIDB4MUY4NCwNCisgICAgMHgyNDhGLCAweDFGODUsIDB4MjQ5MCwgMHgxRjg2LCAweDI0OUMsIDB4MUZCMCwgMHgyNDlELCAweDFGQjEsDQorICAgIDB4MjQ5RSwgMHgxRkIyLCAweDI0OUYsIDB4MUZCMywgMHgyNEEwLCAweDFGQjQsIDB4MjRBMSwgMHgxRkI1LA0KKyAgICAweDI0QTIsIDB4MUZCNiwgMHgyNEEzLCAweDFGQjcsIDB4MjRBNCwgMHgxRkI4LCAweDI0QTUsIDB4MUZCOSwNCisgICAgMHgyNEE2LCAweDFGQkEsIDB4MjRBNywgMHgxRkJCLCAweDI0QTgsIDB4MUZCQywgMHgyNEE5LCAweDFGQkQsDQorICAgIDB4MjRBQSwgMHgxRkJFLCAweDI0QUIsIDB4MUZCRiwgMHgyNEFDLCAweDFGQzAsIDB4MjRBRCwgMHgxRkMxLA0KKyAgICAweDI0QUUsIDB4MUZDMiwgMHgyNEFGLCAweDFGQzMsIDB4MjRCMCwgMHgxRkM0LCAweDI0QjEsIDB4MUZDNSwNCisgICAgMHgyNEIyLCAweDFGQzYsIDB4MjRCMywgMHgxRkM3LCAweDI0QjQsIDB4MUZDOCwgMHgyNEI1LCAweDFGQzksDQorICAgIDB4MjRCNiwgMHgyODYzLCAweDI0QjcsIDB4Mjg2NCwgMHgyNEI4LCAweDI4NjUsIDB4MjRCOSwgMHgyODY2LA0KKyAgICAweDI0QkEsIDB4Mjg2NywgMHgyNEJCLCAweDI4NjgsIDB4MjRCQywgMHgyODY5LCAweDI0QkQsIDB4Mjg2QSwNCisgICAgMHgyNEJFLCAweDI4NkIsIDB4MjRCRiwgMHgyODZDLCAweDI0QzAsIDB4Mjg2RCwgMHgyNEMxLCAweDI4NkUsDQorICAgIDB4MjRDMiwgMHgyODZGLCAweDI0QzMsIDB4Mjg3MCwgMHgyNEM0LCAweDI4NzEsIDB4MjRDNSwgMHgyODcyLA0KKyAgICAweDI0QzYsIDB4Mjg3MywgMHgyNEM3LCAweDI4NzQsIDB4MjRDOCwgMHgyODc1LCAweDI0QzksIDB4Mjg3NiwNCisgICAgMHgyNENBLCAweDI4NzcsIDB4MjRDQiwgMHgyODc4LCAweDI0Q0MsIDB4Mjg3OSwgMHgyNENELCAweDI4N0EsDQorICAgIDB4MjRDRSwgMHgyODdCLCAweDI0Q0YsIDB4Mjg3QywgMHgyNEQwLCAweDI4NDksIDB4MjREMSwgMHgyODRBLA0KKyAgICAweDI0RDIsIDB4Mjg0QiwgMHgyNEQzLCAweDI4NEMsIDB4MjRENCwgMHgyODRELCAweDI0RDUsIDB4Mjg0RSwNCisgICAgMHgyNEQ2LCAweDI4NEYsIDB4MjRENywgMHgyODUwLCAweDI0RDgsIDB4Mjg1MSwgMHgyNEQ5LCAweDI4NTIsDQorICAgIDB4MjREQSwgMHgyODUzLCAweDI0REIsIDB4Mjg1NCwgMHgyNERDLCAweDI4NTUsIDB4MjRERCwgMHgyODU2LA0KKyAgICAweDI0REUsIDB4Mjg1NywgMHgyNERGLCAweDI4NTgsIDB4MjRFMCwgMHgyODU5LCAweDI0RTEsIDB4Mjg1QSwNCisgICAgMHgyNEUyLCAweDI4NUIsIDB4MjRFMywgMHgyODVDLCAweDI0RTQsIDB4Mjg1RCwgMHgyNEU1LCAweDI4NUUsDQorICAgIDB4MjRFNiwgMHgyODVGLCAweDI0RTcsIDB4Mjg2MCwgMHgyNEU4LCAweDI4NjEsIDB4MjRFOSwgMHgyODYyLA0KKyAgICAweDI0RUEsIDB4MjAyMCwgMHgyNTAwLCAweDFEMzcsIDB4MjUwMSwgMHgxRDM4LCAweDI1MDIsIDB4MUQzOSwNCisgICAgMHgyNTAzLCAweDFEM0EsIDB4MjUwNCwgMHgxRDNCLCAweDI1MDUsIDB4MUQzQywgMHgyNTA2LCAweDFEM0QsDQorICAgIDB4MjUwNywgMHgxRDNFLCAweDI1MDgsIDB4MUQzRiwgMHgyNTA5LCAweDFENDAsIDB4MjUwQSwgMHgxRDQxLA0KKyAgICAweDI1MEIsIDB4MUQ0MiwgMHgyNTBDLCAweDFENDMsIDB4MjUwRCwgMHgxRDQ0LCAweDI1MEUsIDB4MUQ0NSwNCisgICAgMHgyNTBGLCAweDFENDYsIDB4MjUxMCwgMHgxRDQ3LCAweDI1MTEsIDB4MUQ0OCwgMHgyNTEyLCAweDFENDksDQorICAgIDB4MjUxMywgMHgxRDRBLCAweDI1MTQsIDB4MUQ0QiwgMHgyNTE1LCAweDFENEMsIDB4MjUxNiwgMHgxRDRELA0KKyAgICAweDI1MTcsIDB4MUQ0RSwgMHgyNTE4LCAweDFENEYsIDB4MjUxOSwgMHgxRDUwLCAweDI1MUEsIDB4MUQ1MSwNCisgICAgMHgyNTFCLCAweDFENTIsIDB4MjUxQywgMHgxRDUzLCAweDI1MUQsIDB4MUQ1NCwgMHgyNTFFLCAweDFENTUsDQorICAgIDB4MjUxRiwgMHgxRDU2LCAweDI1MjAsIDB4MUQ1NywgMHgyNTIxLCAweDFENTgsIDB4MjUyMiwgMHgxRDU5LA0KKyAgICAweDI1MjMsIDB4MUQ1QSwgMHgyNTI0LCAweDFENUIsIDB4MjUyNSwgMHgxRDVDLCAweDI1MjYsIDB4MUQ1RCwNCisgICAgMHgyNTI3LCAweDFENUUsIDB4MjUyOCwgMHgxRDVGLCAweDI1MjksIDB4MUQ2MCwgMHgyNTJBLCAweDFENjEsDQorICAgIDB4MjUyQiwgMHgxRDYyLCAweDI1MkMsIDB4MUQ2MywgMHgyNTJELCAweDFENjQsIDB4MjUyRSwgMHgxRDY1LA0KKyAgICAweDI1MkYsIDB4MUQ2NiwgMHgyNTMwLCAweDFENjcsIDB4MjUzMSwgMHgxRDY4LCAweDI1MzIsIDB4MUQ2OSwNCisgICAgMHgyNTMzLCAweDFENkEsIDB4MjUzNCwgMHgxRDZCLCAweDI1MzUsIDB4MUQ2QywgMHgyNTM2LCAweDFENkQsDQorICAgIDB4MjUzNywgMHgxRDZFLCAweDI1MzgsIDB4MUQ2RiwgMHgyNTM5LCAweDFENzAsIDB4MjUzQSwgMHgxRDcxLA0KKyAgICAweDI1M0IsIDB4MUQ3MiwgMHgyNTNDLCAweDFENzMsIDB4MjUzRCwgMHgxRDc0LCAweDI1M0UsIDB4MUQ3NSwNCisgICAgMHgyNTNGLCAweDFENzYsIDB4MjU0MCwgMHgxRDc3LCAweDI1NDEsIDB4MUQ3OCwgMHgyNTQyLCAweDFENzksDQorICAgIDB4MjU0MywgMHgxRDdBLCAweDI1NDQsIDB4MUQ3QiwgMHgyNTQ1LCAweDFEN0MsIDB4MjU0NiwgMHgxRDdELA0KKyAgICAweDI1NDcsIDB4MUQ3RSwgMHgyNTQ4LCAweDFEN0YsIDB4MjU0OSwgMHgxRDgwLCAweDI1NEEsIDB4MUQ4MSwNCisgICAgMHgyNTRCLCAweDFEODIsIDB4MjU1MCwgMHgyMDNCLCAweDI1NUUsIDB4MjAzQywgMHgyNTYxLCAweDIwM0UsDQorICAgIDB4MjU2QSwgMHgyMDNELCAweDI1NkQsIDB4MjAzNywgMHgyNTZFLCAweDIwMzgsIDB4MjU2RiwgMHgyMDNBLA0KKyAgICAweDI1NzAsIDB4MjAzOSwgMHgyNTcxLCAweDIwNDUsIDB4MjU3MiwgMHgyMDQ2LCAweDI1NzMsIDB4MjA0NywNCisgICAgMHgyNTgxLCAweDIwMjYsIDB4MjU4MiwgMHgyMDI3LCAweDI1ODMsIDB4MjAyOCwgMHgyNTg0LCAweDIwMjksDQorICAgIDB4MjU4NSwgMHgyMDJBLCAweDI1ODYsIDB4MjAyQiwgMHgyNTg3LCAweDIwMkMsIDB4MjU4OCwgMHgyMDJELA0KKyAgICAweDI1ODksIDB4MjAzNCwgMHgyNThBLCAweDIwMzMsIDB4MjU4QiwgMHgyMDMyLCAweDI1OEMsIDB4MjAzMSwNCisgICAgMHgyNThELCAweDIwMzAsIDB4MjU4RSwgMHgyMDJGLCAweDI1OEYsIDB4MjAyRSwgMHgyNTk0LCAweDIwMzUsDQorICAgIDB4MjU5NSwgMHgyMDM2LCAweDI1QTAsIDB4MDJEOSwgMHgyNUExLCAweDAyRDgsIDB4MjVBMiwgMHgxRjRGLA0KKyAgICAweDI1QUEsIDB4MkZDRiwgMHgyNUFCLCAweDJGQ0QsIDB4MjVCMiwgMHgwMkRCLCAweDI1QjMsIDB4MDJEQSwNCisgICAgMHgyNUI2LCAweDJGQTMsIDB4MjVCNywgMHgxRjRBLCAweDI1QkMsIDB4MDJERCwgMHgyNUJELCAweDAyREMsDQorICAgIDB4MjVDMCwgMHgyRkEyLCAweDI1QzEsIDB4MUY0OSwgMHgyNUM2LCAweDAyRDcsIDB4MjVDNywgMHgwMkQ2LA0KKyAgICAweDI1QzksIDB4MjAxMiwgMHgyNUNCLCAweDAyRDMsIDB4MjVDQywgMHgyOTA2LCAweDI1Q0UsIDB4MDJENSwNCisgICAgMHgyNUNGLCAweDAyRDQsIDB4MjVFMiwgMHgyMDNGLCAweDI1RTMsIDB4MjA0MCwgMHgyNUU0LCAweDIwNDIsDQorICAgIDB4MjVFNSwgMHgyMDQxLCAweDI1RTYsIDB4MkZERSwgMHgyNUVGLCAweDAzMEIsIDB4MjYwMCwgMHgyMDE3LA0KKyAgICAweDI2MDEsIDB4MjAxOCwgMHgyNjAyLCAweDIwMTksIDB4MjYwMywgMHgyMDFBLCAweDI2MDUsIDB4MDJEMiwNCisgICAgMHgyNjA2LCAweDAyRDEsIDB4MjYwRSwgMHgxRjc4LCAweDI2MTIsIDB4MkY5OSwgMHgyNjFDLCAweDIwMUMsDQorICAgIDB4MjYxRCwgMHgyMDFELCAweDI2MUUsIDB4MjAxQiwgMHgyNjFGLCAweDIwMUUsIDB4MjY0MCwgMHgwMkMyLA0KKyAgICAweDI2NDIsIDB4MDJDMSwgMHgyNjYwLCAweDIwMTMsIDB4MjY2MSwgMHgxRjUxLCAweDI2NjIsIDB4MUY1MywNCisgICAgMHgyNjYzLCAweDIwMTUsIDB4MjY2NCwgMHgxRjUyLCAweDI2NjUsIDB4MjAxNCwgMHgyNjY2LCAweDIwMTYsDQorICAgIDB4MjY2NywgMHgxRjUwLCAweDI2NjgsIDB4MkY0MiwgMHgyNjY5LCAweDJGNDMsIDB4MjY2QSwgMHgwMzA3LA0KKyAgICAweDI2NkMsIDB4MkY0NCwgMHgyNjZELCAweDAzMDYsIDB4MjY2RiwgMHgwMzA1LCAweDI3MDIsIDB4MkY5MCwNCisgICAgMHgyNzFBLCAweDJGRDEsIDB4Mjc1NiwgMHgyRkUzLCAweDI3NzYsIDB4MjA1RSwgMHgyNzc3LCAweDIwNUYsDQorICAgIDB4Mjc3OCwgMHgyMDYwLCAweDI3NzksIDB4MjA2MSwgMHgyNzdBLCAweDIwNjIsIDB4Mjc3QiwgMHgyMDYzLA0KKyAgICAweDI3N0MsIDB4MjA2NCwgMHgyNzdELCAweDIwNjUsIDB4Mjc3RSwgMHgyMDY2LCAweDI3QTEsIDB4MjAwRSwNCisgICAgMHgyRTgzLCAweDM3RTEsIDB4MkU4NSwgMHgzNjIwLCAweDJFODcsIDB4MzcxOSwgMHgyRTg5LCAweDM4MTQsDQorICAgIDB4MkU4QiwgMHgzNzFFLCAweDJFOEMsIDB4MzYwOSwgMHgyRThELCAweDM2MEEsIDB4MkU4RSwgMHgxMDcxLA0KKyAgICAweDJFOEYsIDB4Mzg4QywgMHgyRTkwLCAweDEyMjYsIDB4MkU5MiwgMHgwRUIyLCAweDJFOTMsIDB4MTI4MywNCisgICAgMHgyRTk0LCAweDEyQUIsIDB4MkU5NSwgMHgzQzFGLCAweDJFOTYsIDB4MzhDMiwgMHgyRTk3LCAweDM2MUMsDQorICAgIDB4MkU5OCwgMHgzOEUxLCAweDJFOTksIDB4MTNDMywgMHgyRTlCLCAweDEzRTEsIDB4MkU5RiwgMHgwRTNDLA0KKyAgICAweDJFQTAsIDB4MEVCRCwgMHgyRUExLCAweDM5NjEsIDB4MkVBMiwgMHgzOTYyLCAweDJFQTMsIDB4Mzk5RCwNCisgICAgMHgyRUE0LCAweDNDMjYsIDB4MkVBNiwgMHgzNzRELCAweDJFQTgsIDB4MzlCQywgMHgyRUE5LCAweDM1QTEsDQorICAgIDB4MkVBQSwgMHgzNkFCLCAweDJFQUIsIDB4M0E5NywgMHgyRUFDLCAweDA4RDQsIDB4MkVBRCwgMHgzQTM5LA0KKyAgICAweDJFQUUsIDB4MzY2MiwgMHgyRUIxLCAweDNBOTgsIDB4MkVCMiwgMHgzQTk3LCAweDJFQjMsIDB4Mzc2RCwNCisgICAgMHgyRUI3LCAweDM2RkUsIDB4MkVCOSwgMHgzNzEzLCAweDJFQkMsIDB4MzVCMywgMHgyRUJELCAweDM1NEUsDQorICAgIDB4MkVCRSwgMHgzNzc1LCAweDJFQkYsIDB4Mzc3NiwgMHgyRUMwLCAweDM3NzcsIDB4MkVDMSwgMHgwNzhCLA0KKyAgICAweDJFQzIsIDB4M0IwQSwgMHgyRUMzLCAweDM2MkUsIDB4MkVDNCwgMHgwQTYyLCAweDJFQzYsIDB4MzU3MiwNCisgICAgMHgyRUNBLCAweDM2NEEsIDB4MkVDQywgMHgzQzJCLCAweDJFQ0QsIDB4M0I1MCwgMHgyRUNGLCAweDNCOUUsDQorICAgIDB4MkVEMSwgMHgwQkQ1LCAweDJFRDIsIDB4M0I5NywgMHgyRUQ2LCAweDNCOUUsIDB4MkVENywgMHgzNTRELA0KKyAgICAweDJFRDgsIDB4MEE2OCwgMHgyRURELCAweDM2MTcsIDB4MkVERSwgMHgzNjE5LCAweDJFREYsIDB4MzYxOCwNCisgICAgMHgyRUU0LCAweDA2NEUsIDB4MkVFOCwgMHgwRDM0LCAweDJFRTksIDB4MDUyQiwgMHgyRUVCLCAweDBBNkEsDQorICAgIDB4MkVFRCwgMHgwOEMzLCAweDJFRUYsIDB4MEY3RCwgMHgyRUYyLCAweDA2NEYsIDB4MkYwMCwgMHgwNEIwLA0KKyAgICAweDJGMDEsIDB4MjBCMywgMHgyRjAyLCAweDBGRkYsIDB4MkYwMywgMHgxMDAxLCAweDJGMDQsIDB4MDUzNSwNCisgICAgMHgyRjA1LCAweDEwMDYsIDB4MkYwNiwgMHgwQ0NCLCAweDJGMDcsIDB4MTAwRSwgMHgyRjA4LCAweDBBMTMsDQorICAgIDB4MkYwOSwgMHgxMDcwLCAweDJGMEEsIDB4MENENiwgMHgyRjBCLCAweDBENDAsIDB4MkYwQywgMHgxMDdCLA0KKyAgICAweDJGMEQsIDB4MTA4MywgMHgyRjBFLCAweDEwODksIDB4MkYwRiwgMHgxMDkzLCAweDJGMTAsIDB4MTA5OCwNCisgICAgMHgyRjExLCAweDBDNUIsIDB4MkYxMiwgMHgwRjk3LCAweDJGMTMsIDB4MTBDNiwgMHgyRjE0LCAweDEwQ0QsDQorICAgIDB4MkYxNSwgMHgxMENFLCAweDJGMTYsIDB4MTBEMywgMHgyRjE3LCAweDA5NDcsIDB4MkYxOCwgMHgwRTdDLA0KKyAgICAweDJGMTksIDB4MTBEQywgMHgyRjFBLCAweDEwRTEsIDB4MkYxQiwgMHgxMEU4LCAweDJGMUMsIDB4MEVBMiwNCisgICAgMHgyRjFELCAweDA3QjEsIDB4MkYxRSwgMHgxMTZCLCAweDJGMUYsIDB4MEM1NCwgMHgyRjIwLCAweDA4OUMsDQorICAgIDB4MkYyMSwgMHgxMUJBLCAweDJGMjIsIDB4MTFCQiwgMHgyRjIzLCAweDBGMjYsIDB4MkYyNCwgMHgwQjQ3LA0KKyAgICAweDJGMjUsIDB4MDk4MSwgMHgyRjI2LCAweDA4QTAsIDB4MkYyNywgMHgxMjBFLCAweDJGMjgsIDB4MEE0NywNCisgICAgMHgyRjI5LCAweDA5OTYsIDB4MkYyQSwgMHgxMjI2LCAweDJGMkIsIDB4MTIyOCwgMHgyRjJDLCAweDEyMzIsDQorICAgIDB4MkYyRCwgMHgwODgxLCAweDJGMkUsIDB4MTI2QywgMHgyRjJGLCAweDA3QkIsIDB4MkYzMCwgMHgwNzdFLA0KKyAgICAweDJGMzEsIDB4MDZDQSwgMHgyRjMyLCAweDA1RUYsIDB4MkYzMywgMHgxMjgzLCAweDJGMzQsIDB4MTI4NSwNCisgICAgMHgyRjM1LCAweDEyOTksIDB4MkYzNiwgMHgxMjlCLCAweDJGMzcsIDB4MTJBMCwgMHgyRjM4LCAweDA2NzcsDQorICAgIDB4MkYzOSwgMHgzOEI5LCAweDJGM0EsIDB4MTJBRiwgMHgyRjNCLCAweDEyQjEsIDB4MkYzQywgMHgwOUZBLA0KKyAgICAweDJGM0QsIDB4MTM0MiwgMHgyRjNFLCAweDA3ODEsIDB4MkYzRiwgMHgwOTE2LCAweDJGNDAsIDB4MDhBNywNCisgICAgMHgyRjQxLCAweDEzQzIsIDB4MkY0MiwgMHgwRTA4LCAweDJGNDMsIDB4MEM0NywgMHgyRjQ0LCAweDA2Q0MsDQorICAgIDB4MkY0NSwgMHgwRTRELCAweDJGNDYsIDB4MTNFMCwgMHgyRjQ3LCAweDBDRDQsIDB4MkY0OCwgMHgxNDBDLA0KKyAgICAweDJGNDksIDB4MDc0NCwgMHgyRjRBLCAweDBFRTYsIDB4MkY0QiwgMHgwNzNELCAweDJGNEMsIDB4MDhBRCwNCisgICAgMHgyRjRELCAweDE0RTUsIDB4MkY0RSwgMHgxNEY0LCAweDJGNEYsIDB4MTRGOCwgMHgyRjUwLCAweDBEN0EsDQorICAgIDB4MkY1MSwgMHgwRURGLCAweDJGNTIsIDB4MDhBRiwgMHgyRjUzLCAweDE1MDIsIDB4MkY1NCwgMHgwQTJCLA0KKyAgICAweDJGNTUsIDB4MDU1MCwgMHgyRjU2LCAweDBCRkEsIDB4MkY1NywgMHgwREQ1LCAweDJGNTgsIDB4MTVFNCwNCisgICAgMHgyRjU5LCAweDE1RTYsIDB4MkY1QSwgMHgwRTIyLCAweDJGNUIsIDB4MDU2NywgMHgyRjVDLCAweDA2ODcsDQorICAgIDB4MkY1RCwgMHgwNzU4LCAweDJGNUUsIDB4MDc3MCwgMHgyRjVGLCAweDA2QzQsIDB4MkY2MCwgMHgwNERELA0KKyAgICAweDJGNjEsIDB4MDVFMCwgMHgyRjYyLCAweDA2MDEsIDB4MkY2MywgMHgwQTVDLCAweDJGNjQsIDB4MEYzQiwNCisgICAgMHgyRjY1LCAweDBDM0UsIDB4MkY2NiwgMHgwRDk3LCAweDJGNjcsIDB4M0EwMCwgMHgyRjY4LCAweDE2OTcsDQorICAgIDB4MkY2OSwgMHgwRDI4LCAweDJGNkEsIDB4MEQ3RCwgMHgyRjZCLCAweDA4N0MsIDB4MkY2QywgMHgwRUU4LA0KKyAgICAweDJGNkQsIDB4MEVDMywgMHgyRjZFLCAweDBFRkMsIDB4MkY2RiwgMHgwQTc0LCAweDJGNzAsIDB4MDhENCwNCisgICAgMHgyRjcxLCAweDNBNDEsIDB4MkY3MiwgMHgwNTUzLCAweDJGNzMsIDB4MDc0MCwgMHgyRjc0LCAweDBGNzEsDQorICAgIDB4MkY3NSwgMHgwQjlCLCAweDJGNzYsIDB4MEUxNiwgMHgyRjc3LCAweDA4QjMsIDB4MkY3OCwgMHgwNjA4LA0KKyAgICAweDJGNzksIDB4MTgxMywgMHgyRjdBLCAweDBGM0QsIDB4MkY3QiwgMHgwNENCLCAweDJGN0MsIDB4MEZERCwNCisgICAgMHgyRjdELCAweDA4RDUsIDB4MkY3RSwgMHgxODNELCAweDJGN0YsIDB4MDhENiwgMHgyRjgwLCAweDE4NTMsDQorICAgIDB4MkY4MSwgMHgwQ0QxLCAweDJGODIsIDB4MEEwOSwgMHgyRjgzLCAweDA4RDcsIDB4MkY4NCwgMHgwOEI4LA0KKyAgICAweDJGODUsIDB4MDREMywgMHgyRjg2LCAweDBBODksIDB4MkY4NywgMHgwQUE2LCAweDJGODgsIDB4MDkzOCwNCisgICAgMHgyRjg5LCAweDA4MjEsIDB4MkY4QSwgMHgwOUVELCAweDJGOEIsIDB4MThCMiwgMHgyRjhDLCAweDE5NEYsDQorICAgIDB4MkY4RCwgMHgwQkFDLCAweDJGOEUsIDB4MDc0MiwgMHgyRjhGLCAweDA3RTYsIDB4MkY5MCwgMHgwNEE1LA0KKyAgICAweDJGOTEsIDB4MTlFQiwgMHgyRjkyLCAweDA3NUYsIDB4MkY5MywgMHgwNUFGLCAweDJGOTQsIDB4MDc3NCwNCisgICAgMHgyRjk1LCAweDBCNjksIDB4MkY5NiwgMHgwQzdFLCAweDJGOTcsIDB4MUE1NiwgMHgyRjk4LCAweDFBNTksDQorICAgIDB4MkY5OSwgMHgwNThCLCAweDJGOUEsIDB4MEE3QSwgMHgyRjlCLCAweDBBRjgsIDB4MkY5QywgMHgwQjBELA0KKyAgICAweDJGOUQsIDB4MEEwRSwgMHgyRjlFLCAweDA5MDIsIDB4MkY5RiwgMHgwQTBGLCAweDJGQTAsIDB4MEI2MiwNCisgICAgMHgyRkExLCAweDNCNEYsIDB4MkZBMiwgMHgwRjIyLCAweDJGQTMsIDB4MENBQiwgMHgyRkE0LCAweDBENjQsDQorICAgIDB4MkZBNSwgMHgwRjZDLCAweDJGQTYsIDB4MDZEQSwgMHgyRkE3LCAweDBCRDUsIDB4MkZBOCwgMHgwRUYzLA0KKyAgICAweDJGQTksIDB4MERERSwgMHgyRkFBLCAweDFCQzksIDB4MkZBQiwgMHgxQkNCLCAweDJGQUMsIDB4MDRDRCwNCisgICAgMHgyRkFELCAweDIxRjcsIDB4MkZBRSwgMHgwRDg3LCAweDJGQUYsIDB4MEVEOCwgMHgyRkIwLCAweDA1QjUsDQorICAgIDB4MkZCMSwgMHgxQzAzLCAweDJGQjIsIDB4MUMwNSwgMHgyRkIzLCAweDA1M0IsIDB4MkZCNCwgMHgwRTE3LA0KKyAgICAweDJGQjUsIDB4MERFOSwgMHgyRkI2LCAweDBEODgsIDB4MkZCNywgMHgwOUVGLCAweDJGQjgsIDB4MDkxRiwNCisgICAgMHgyRkI5LCAweDA3RjMsIDB4MkZCQSwgMHgwRDA1LCAweDJGQkIsIDB4MDgwRSwgMHgyRkJDLCAweDA3RjQsDQorICAgIDB4MkZCRCwgMHgxQzZDLCAweDJGQkUsIDB4MUM3RCwgMHgyRkJGLCAweDFDODMsIDB4MkZDMCwgMHgxQzg0LA0KKyAgICAweDJGQzEsIDB4MDY0RSwgMHgyRkMyLCAweDA2OTUsIDB4MkZDMywgMHgwQkQ3LCAweDJGQzQsIDB4MUNGNiwNCisgICAgMHgyRkM1LCAweDA4REIsIDB4MkZDNiwgMHgxRDAxLCAweDJGQzcsIDB4MEU5MSwgMHgyRkM4LCAweDM0MEIsDQorICAgIDB4MkZDOSwgMHgwNjZBLCAweDJGQ0EsIDB4MDgwNywgMHgyRkNCLCAweDFEMTYsIDB4MkZDQywgMHgxRDE5LA0KKyAgICAweDJGQ0QsIDB4MEMxRSwgMHgyRkNFLCAweDA3OTEsIDB4MkZDRiwgMHgwQUNGLCAweDJGRDAsIDB4MEQ5MywNCisgICAgMHgyRkQxLCAweDFEMjEsIDB4MkZEMiwgMHgxRDIyLCAweDJGRDMsIDB4MEY3RSwgMHgyRkQ0LCAweDFEMzAsDQorICAgIDB4MkZENSwgMHgxRDMxLCAweDMwMDAsIDB4MDI3OSwgMHgzMDAxLCAweDAyN0EsIDB4MzAwMiwgMHgwMjdCLA0KKyAgICAweDMwMDMsIDB4MDI4RiwgMHgzMDA0LCAweDIwNzQsIDB4MzAwNSwgMHgwMjkxLCAweDMwMDYsIDB4MDI5MiwNCisgICAgMHgzMDA3LCAweDAyOTMsIDB4MzAwOCwgMHgwMkFBLCAweDMwMDksIDB4MDJBQiwgMHgzMDBBLCAweDAyQUMsDQorICAgIDB4MzAwQiwgMHgwMkFELCAweDMwMEMsIDB4MDJBRSwgMHgzMDBELCAweDAyQUYsIDB4MzAwRSwgMHgwMkIwLA0KKyAgICAweDMwMEYsIDB4MDJCMSwgMHgzMDEwLCAweDAyQjIsIDB4MzAxMSwgMHgwMkIzLCAweDMwMTIsIDB4MDJERiwNCisgICAgMHgzMDEzLCAweDAyRTQsIDB4MzAxNCwgMHgwMkE0LCAweDMwMTUsIDB4MDJBNSwgMHgzMDFDLCAweDAyOTksDQorICAgIDB4MzAxRCwgMHgxREI4LCAweDMwMUYsIDB4MURCOSwgMHgzMDIwLCAweDFGN0EsIDB4MzAzMCwgMHgyRkJBLA0KKyAgICAweDMwMzMsIDB4MkY0QywgMHgzMDM0LCAweDJGNEQsIDB4MzAzNSwgMHgyRjRFLCAweDMwMzYsIDB4MUY3OSwNCisgICAgMHgzMDQxLCAweDAzNEEsIDB4MzA0MiwgMHgwMzRCLCAweDMwNDMsIDB4MDM0QywgMHgzMDQ0LCAweDAzNEQsDQorICAgIDB4MzA0NSwgMHgwMzRFLCAweDMwNDYsIDB4MDM0RiwgMHgzMDQ3LCAweDAzNTAsIDB4MzA0OCwgMHgwMzUxLA0KKyAgICAweDMwNDksIDB4MDM1MiwgMHgzMDRBLCAweDAzNTMsIDB4MzA0QiwgMHgwMzU0LCAweDMwNEMsIDB4MDM1NSwNCisgICAgMHgzMDRELCAweDAzNTYsIDB4MzA0RSwgMHgwMzU3LCAweDMwNEYsIDB4MDM1OCwgMHgzMDUwLCAweDAzNTksDQorICAgIDB4MzA1MSwgMHgwMzVBLCAweDMwNTIsIDB4MDM1QiwgMHgzMDUzLCAweDAzNUMsIDB4MzA1NCwgMHgwMzVELA0KKyAgICAweDMwNTUsIDB4MDM1RSwgMHgzMDU2LCAweDAzNUYsIDB4MzA1NywgMHgwMzYwLCAweDMwNTgsIDB4MDM2MSwNCisgICAgMHgzMDU5LCAweDAzNjIsIDB4MzA1QSwgMHgwMzYzLCAweDMwNUIsIDB4MDM2NCwgMHgzMDVDLCAweDAzNjUsDQorICAgIDB4MzA1RCwgMHgwMzY2LCAweDMwNUUsIDB4MDM2NywgMHgzMDVGLCAweDAzNjgsIDB4MzA2MCwgMHgwMzY5LA0KKyAgICAweDMwNjEsIDB4MDM2QSwgMHgzMDYyLCAweDAzNkIsIDB4MzA2MywgMHgwMzZDLCAweDMwNjQsIDB4MDM2RCwNCisgICAgMHgzMDY1LCAweDAzNkUsIDB4MzA2NiwgMHgwMzZGLCAweDMwNjcsIDB4MDM3MCwgMHgzMDY4LCAweDAzNzEsDQorICAgIDB4MzA2OSwgMHgwMzcyLCAweDMwNkEsIDB4MDM3MywgMHgzMDZCLCAweDAzNzQsIDB4MzA2QywgMHgwMzc1LA0KKyAgICAweDMwNkQsIDB4MDM3NiwgMHgzMDZFLCAweDAzNzcsIDB4MzA2RiwgMHgwMzc4LCAweDMwNzAsIDB4MDM3OSwNCisgICAgMHgzMDcxLCAweDAzN0EsIDB4MzA3MiwgMHgwMzdCLCAweDMwNzMsIDB4MDM3QywgMHgzMDc0LCAweDAzN0QsDQorICAgIDB4MzA3NSwgMHgwMzdFLCAweDMwNzYsIDB4MDM3RiwgMHgzMDc3LCAweDAzODAsIDB4MzA3OCwgMHgwMzgxLA0KKyAgICAweDMwNzksIDB4MDM4MiwgMHgzMDdBLCAweDAzODMsIDB4MzA3QiwgMHgwMzg0LCAweDMwN0MsIDB4MDM4NSwNCisgICAgMHgzMDdELCAweDAzODYsIDB4MzA3RSwgMHgwMzg3LCAweDMwN0YsIDB4MDM4OCwgMHgzMDgwLCAweDAzODksDQorICAgIDB4MzA4MSwgMHgwMzhBLCAweDMwODIsIDB4MDM4QiwgMHgzMDgzLCAweDAzOEMsIDB4MzA4NCwgMHgwMzhELA0KKyAgICAweDMwODUsIDB4MDM4RSwgMHgzMDg2LCAweDAzOEYsIDB4MzA4NywgMHgwMzkwLCAweDMwODgsIDB4MDM5MSwNCisgICAgMHgzMDg5LCAweDAzOTIsIDB4MzA4QSwgMHgwMzkzLCAweDMwOEIsIDB4MDM5NCwgMHgzMDhDLCAweDAzOTUsDQorICAgIDB4MzA4RCwgMHgwMzk2LCAweDMwOEUsIDB4MDM5NywgMHgzMDhGLCAweDAzOTgsIDB4MzA5MCwgMHgwMzk5LA0KKyAgICAweDMwOTEsIDB4MDM5QSwgMHgzMDkyLCAweDAzOUIsIDB4MzA5MywgMHgwMzlDLCAweDMwOTQsIDB4MUYxNiwNCisgICAgMHgzMDlCLCAweDAyODMsIDB4MzA5QywgMHgwMjg0LCAweDMwOUQsIDB4MDI4RCwgMHgzMDlFLCAweDAyOEUsDQorICAgIDB4MzBBMSwgMHgwMzlELCAweDMwQTIsIDB4MDM5RSwgMHgzMEEzLCAweDAzOUYsIDB4MzBBNCwgMHgwM0EwLA0KKyAgICAweDMwQTUsIDB4MDNBMSwgMHgzMEE2LCAweDAzQTIsIDB4MzBBNywgMHgwM0EzLCAweDMwQTgsIDB4MDNBNCwNCisgICAgMHgzMEE5LCAweDAzQTUsIDB4MzBBQSwgMHgwM0E2LCAweDMwQUIsIDB4MDNBNywgMHgzMEFDLCAweDAzQTgsDQorICAgIDB4MzBBRCwgMHgwM0E5LCAweDMwQUUsIDB4MDNBQSwgMHgzMEFGLCAweDAzQUIsIDB4MzBCMCwgMHgwM0FDLA0KKyAgICAweDMwQjEsIDB4MDNBRCwgMHgzMEIyLCAweDAzQUUsIDB4MzBCMywgMHgwM0FGLCAweDMwQjQsIDB4MDNCMCwNCisgICAgMHgzMEI1LCAweDAzQjEsIDB4MzBCNiwgMHgwM0IyLCAweDMwQjcsIDB4MDNCMywgMHgzMEI4LCAweDAzQjQsDQorICAgIDB4MzBCOSwgMHgwM0I1LCAweDMwQkEsIDB4MDNCNiwgMHgzMEJCLCAweDAzQjcsIDB4MzBCQywgMHgwM0I4LA0KKyAgICAweDMwQkQsIDB4MDNCOSwgMHgzMEJFLCAweDAzQkEsIDB4MzBCRiwgMHgwM0JCLCAweDMwQzAsIDB4MDNCQywNCisgICAgMHgzMEMxLCAweDAzQkQsIDB4MzBDMiwgMHgwM0JFLCAweDMwQzMsIDB4MDNCRiwgMHgzMEM0LCAweDAzQzAsDQorICAgIDB4MzBDNSwgMHgwM0MxLCAweDMwQzYsIDB4MDNDMiwgMHgzMEM3LCAweDAzQzMsIDB4MzBDOCwgMHgwM0M0LA0KKyAgICAweDMwQzksIDB4MDNDNSwgMHgzMENBLCAweDAzQzYsIDB4MzBDQiwgMHgwM0M3LCAweDMwQ0MsIDB4MDNDOCwNCisgICAgMHgzMENELCAweDAzQzksIDB4MzBDRSwgMHgwM0NBLCAweDMwQ0YsIDB4MDNDQiwgMHgzMEQwLCAweDAzQ0MsDQorICAgIDB4MzBEMSwgMHgwM0NELCAweDMwRDIsIDB4MDNDRSwgMHgzMEQzLCAweDAzQ0YsIDB4MzBENCwgMHgwM0QwLA0KKyAgICAweDMwRDUsIDB4MDNEMSwgMHgzMEQ2LCAweDAzRDIsIDB4MzBENywgMHgwM0QzLCAweDMwRDgsIDB4MDNENCwNCisgICAgMHgzMEQ5LCAweDAzRDUsIDB4MzBEQSwgMHgwM0Q2LCAweDMwREIsIDB4MDNENywgMHgzMERDLCAweDAzRDgsDQorICAgIDB4MzBERCwgMHgwM0Q5LCAweDMwREUsIDB4MDNEQSwgMHgzMERGLCAweDAzREIsIDB4MzBFMCwgMHgwM0RDLA0KKyAgICAweDMwRTEsIDB4MDNERCwgMHgzMEUyLCAweDAzREUsIDB4MzBFMywgMHgwM0RGLCAweDMwRTQsIDB4MDNFMCwNCisgICAgMHgzMEU1LCAweDAzRTEsIDB4MzBFNiwgMHgwM0UyLCAweDMwRTcsIDB4MDNFMywgMHgzMEU4LCAweDAzRTQsDQorICAgIDB4MzBFOSwgMHgwM0U1LCAweDMwRUEsIDB4MDNFNiwgMHgzMEVCLCAweDAzRTcsIDB4MzBFQywgMHgwM0U4LA0KKyAgICAweDMwRUQsIDB4MDNFOSwgMHgzMEVFLCAweDAzRUEsIDB4MzBFRiwgMHgwM0VCLCAweDMwRjAsIDB4MDNFQywNCisgICAgMHgzMEYxLCAweDAzRUQsIDB4MzBGMiwgMHgwM0VFLCAweDMwRjMsIDB4MDNFRiwgMHgzMEY0LCAweDAzRjAsDQorICAgIDB4MzBGNSwgMHgwM0YxLCAweDMwRjYsIDB4MDNGMiwgMHgzMEY3LCAweDIwNzksIDB4MzBGOCwgMHgyMDdBLA0KKyAgICAweDMwRjksIDB4MjA3QiwgMHgzMEZBLCAweDIwN0MsIDB4MzBGQiwgMHgwMjdFLCAweDMwRkMsIDB4MDI5NCwNCisgICAgMHgzMEZELCAweDAyOEIsIDB4MzBGRSwgMHgwMjhDLCAweDMyMjAsIDB4Mjc4RSwgMHgzMjIxLCAweDI3OEYsDQorICAgIDB4MzIyMiwgMHgyNzkwLCAweDMyMjMsIDB4Mjc5MSwgMHgzMjI0LCAweDI3OTIsIDB4MzIyNSwgMHgyNzkzLA0KKyAgICAweDMyMjYsIDB4Mjc5NCwgMHgzMjI3LCAweDI3OTUsIDB4MzIyOCwgMHgyNzk2LCAweDMyMjksIDB4Mjc5NywNCisgICAgMHgzMjJBLCAweDIwMDYsIDB4MzIyQiwgMHgyMDA3LCAweDMyMkMsIDB4MjAwOCwgMHgzMjJELCAweDIwMDksDQorICAgIDB4MzIyRSwgMHgyMDBBLCAweDMyMkYsIDB4MjAwQiwgMHgzMjMwLCAweDIwMDUsIDB4MzIzMSwgMHgxREMyLA0KKyAgICAweDMyMzIsIDB4MURDMywgMHgzMjMzLCAweDFGQ0YsIDB4MzIzNCwgMHgxRkNELCAweDMyMzUsIDB4MUZENCwNCisgICAgMHgzMjM2LCAweDFGRDMsIDB4MzIzNywgMHgyMDBDLCAweDMyMzgsIDB4MUZDRSwgMHgzMjM5LCAweDFEQzQsDQorICAgIDB4MzIzQSwgMHgxRkQ3LCAweDMyM0IsIDB4MUZENSwgMHgzMjNDLCAweDFGRDAsIDB4MzIzRCwgMHgxRkNCLA0KKyAgICAweDMyM0UsIDB4MUZEMiwgMHgzMjNGLCAweDFGQ0MsIDB4MzI0MCwgMHgxRkQ2LCAweDMyNDEsIDB4MjAwRCwNCisgICAgMHgzMjQyLCAweDFGRDEsIDB4MzI0MywgMHgxRkNBLCAweDMyODAsIDB4MjhERCwgMHgzMjgxLCAweDI4REUsDQorICAgIDB4MzI4MiwgMHgyOERGLCAweDMyODMsIDB4MjhFMCwgMHgzMjg0LCAweDI4RTEsIDB4MzI4NSwgMHgyOEUyLA0KKyAgICAweDMyODYsIDB4MjhFMywgMHgzMjg3LCAweDI4RTQsIDB4MzI4OCwgMHgyOEU1LCAweDMyODksIDB4MjhFNiwNCisgICAgMHgzMjhBLCAweDI4RTgsIDB4MzI4QiwgMHgyOEU5LCAweDMyOEMsIDB4MjhFQSwgMHgzMjhELCAweDI4RUIsDQorICAgIDB4MzI4RSwgMHgyOEVDLCAweDMyOEYsIDB4MjhFRCwgMHgzMjkwLCAweDI4RTcsIDB4MzI5MSwgMHgxRkUxLA0KKyAgICAweDMyOTIsIDB4MUZFMCwgMHgzMjkzLCAweDFGRTIsIDB4MzI5NCwgMHgxRkRDLCAweDMyOTUsIDB4MjhGRiwNCisgICAgMHgzMjk2LCAweDFGRTUsIDB4MzI5NywgMHgyOEZDLCAweDMyOTgsIDB4MUZERSwgMHgzMjk5LCAweDIwMUYsDQorICAgIDB4MzI5QSwgMHgyOEY5LCAweDMyOUIsIDB4MjhGOCwgMHgzMjlDLCAweDI4RkUsIDB4MzI5RCwgMHgyMDdGLA0KKyAgICAweDMyOUUsIDB4MUZGRiwgMHgzMjlGLCAweDI4RUYsIDB4MzJBMCwgMHgyOEY2LCAweDMyQTEsIDB4MjhGNywNCisgICAgMHgzMkEyLCAweDI4RkIsIDB4MzJBMywgMHgyOEZBLCAweDMyQTQsIDB4MURCRCwgMHgzMkE1LCAweDFEQkUsDQorICAgIDB4MzJBNiwgMHgxREJGLCAweDMyQTcsIDB4MURDMCwgMHgzMkE4LCAweDFEQzEsIDB4MzJBOSwgMHgxRkRBLA0KKyAgICAweDMyQUEsIDB4MUZERCwgMHgzMkFCLCAweDFGREYsIDB4MzJBQywgMHgxRkUzLCAweDMyQUQsIDB4MUZEOSwNCisgICAgMHgzMkFFLCAweDFGRTQsIDB4MzJBRiwgMHgxRkRCLCAweDMyQjAsIDB4MUZEOCwgMHgzMkQwLCAweDI4QUQsDQorICAgIDB4MzJEMSwgMHgyOEFFLCAweDMyRDIsIDB4MjhBRiwgMHgzMkQzLCAweDI4QjAsIDB4MzJENCwgMHgyOEIxLA0KKyAgICAweDMyRDUsIDB4MjhCMiwgMHgzMkQ2LCAweDI4QjMsIDB4MzJENywgMHgyOEI0LCAweDMyRDgsIDB4MjhCNSwNCisgICAgMHgzMkQ5LCAweDI4QjYsIDB4MzJEQSwgMHgyOEI3LCAweDMyREIsIDB4MjhCOCwgMHgzMkRDLCAweDI4QjksDQorICAgIDB4MzJERCwgMHgyOEJBLCAweDMyREUsIDB4MjhCQiwgMHgzMkRGLCAweDI4QkMsIDB4MzJFMCwgMHgyOEJELA0KKyAgICAweDMyRTEsIDB4MjhCRSwgMHgzMkUyLCAweDI4QkYsIDB4MzJFMywgMHgyOEMwLCAweDMyRTQsIDB4MjhDMSwNCisgICAgMHgzMkU1LCAweDI4QzIsIDB4MzJFNiwgMHgyOEMzLCAweDMyRTcsIDB4MjhDNCwgMHgzMkU4LCAweDI4QzUsDQorICAgIDB4MzJFOSwgMHgyOEM2LCAweDMyRUEsIDB4MjhDNywgMHgzMkVCLCAweDI4QzgsIDB4MzJFQywgMHgyOEM5LA0KKyAgICAweDMyRUQsIDB4MjhDQSwgMHgzMkVFLCAweDI4Q0IsIDB4MzJFRiwgMHgyOENDLCAweDMyRjAsIDB4MjhDRCwNCisgICAgMHgzMkYxLCAweDI4Q0UsIDB4MzJGMiwgMHgyOENGLCAweDMyRjMsIDB4MjhEMCwgMHgzMkY0LCAweDI4RDEsDQorICAgIDB4MzJGNSwgMHgyOEQyLCAweDMyRjYsIDB4MjhEMywgMHgzMkY3LCAweDI4RDQsIDB4MzJGOCwgMHgyOEQ1LA0KKyAgICAweDMyRjksIDB4MjhENiwgMHgzMkZBLCAweDI4RDcsIDB4MzJGQiwgMHgyOEQ4LCAweDMyRkMsIDB4MjhEOSwNCisgICAgMHgzMkZELCAweDI4REEsIDB4MzJGRSwgMHgyOERCLCAweDMzMDAsIDB4MUY3MCwgMHgzMzAxLCAweDJFNjIsDQorICAgIDB4MzMwMiwgMHgyRTYzLCAweDMzMDMsIDB4MUY2QSwgMHgzMzA0LCAweDJFNjQsIDB4MzMwNSwgMHgxRkY3LA0KKyAgICAweDMzMDYsIDB4MkU2NSwgMHgzMzA3LCAweDJFNjksIDB4MzMwOCwgMHgyRTY3LCAweDMzMDksIDB4MkU2QywNCisgICAgMHgzMzBBLCAweDJFNkEsIDB4MzMwQiwgMHgyRTZFLCAweDMzMEMsIDB4MkU3MCwgMHgzMzBELCAweDFEQUIsDQorICAgIDB4MzMwRSwgMHgyRTcxLCAweDMzMEYsIDB4MkU3MiwgMHgzMzEwLCAweDJFNzMsIDB4MzMxMSwgMHgyRTc0LA0KKyAgICAweDMzMTIsIDB4MkU3NSwgMHgzMzEzLCAweDJFNzYsIDB4MzMxNCwgMHgxREEyLCAweDMzMTUsIDB4MUY2OSwNCisgICAgMHgzMzE2LCAweDFGNjcsIDB4MzMxNywgMHgyRTc4LCAweDMzMTgsIDB4MUY2OCwgMHgzMzE5LCAweDJFN0EsDQorICAgIDB4MzMxQSwgMHgyRTdDLCAweDMzMUIsIDB4MkU3RCwgMHgzMzFDLCAweDJFN0UsIDB4MzMxRCwgMHgyRTdGLA0KKyAgICAweDMzMUUsIDB4MUY3MywgMHgzMzFGLCAweDJFODAsIDB4MzMyMCwgMHgyRTgxLCAweDMzMjEsIDB4MkU4MiwNCisgICAgMHgzMzIyLCAweDFGNjYsIDB4MzMyMywgMHgxRjZCLCAweDMzMjQsIDB4MkU4MywgMHgzMzI1LCAweDJFODUsDQorICAgIDB4MzMyNiwgMHgxREFDLCAweDMzMjcsIDB4MURBNiwgMHgzMzI4LCAweDJFODgsIDB4MzMyOSwgMHgyRTg5LA0KKyAgICAweDMzMkEsIDB4MUY3NCwgMHgzMzJCLCAweDFEQUUsIDB4MzMyRCwgMHgyRThCLCAweDMzMkUsIDB4MkU4RSwNCisgICAgMHgzMzJGLCAweDJFOEYsIDB4MzMzMCwgMHgyRTkwLCAweDMzMzEsIDB4MUY3MSwgMHgzMzMyLCAweDJFOTEsDQorICAgIDB4MzMzMywgMHgyMDg3LCAweDMzMzQsIDB4MkU5NCwgMHgzMzM1LCAweDJFOTUsIDB4MzMzNiwgMHgxREE4LA0KKyAgICAweDMzMzcsIDB4MkU5QSwgMHgzMzM4LCAweDJFOUMsIDB4MzMzOSwgMHgxRjZFLCAweDMzM0EsIDB4MkU5RCwNCisgICAgMHgzMzNCLCAweDFGNkYsIDB4MzMzQywgMHgyRTk2LCAweDMzM0QsIDB4MkU5RSwgMHgzMzNFLCAweDJFQTAsDQorICAgIDB4MzMzRiwgMHgyRUExLCAweDMzNDAsIDB4MkVBMiwgMHgzMzQxLCAweDJFOUYsIDB4MzM0MiwgMHgxRjZELA0KKyAgICAweDMzNDMsIDB4MkVBMywgMHgzMzQ0LCAweDJFQTQsIDB4MzM0NSwgMHgyRUE1LCAweDMzNDYsIDB4MkVBNiwNCisgICAgMHgzMzQ3LCAweDFGNzIsIDB4MzM0OCwgMHgyRUE3LCAweDMzNDksIDB4MURBMSwgMHgzMzRBLCAweDFEQUYsDQorICAgIDB4MzM0QiwgMHgyRUE4LCAweDMzNEMsIDB4MkVBOSwgMHgzMzRELCAweDFEQTQsIDB4MzM0RSwgMHgyMDg4LA0KKyAgICAweDMzNEYsIDB4MkVBQSwgMHgzMzUwLCAweDJFQUIsIDB4MzM1MSwgMHgxREE5LCAweDMzNTIsIDB4MkVBRSwNCisgICAgMHgzMzUzLCAweDJFQjIsIDB4MzM1NCwgMHgyRUFGLCAweDMzNTUsIDB4MkVCMywgMHgzMzU2LCAweDJFQjQsDQorICAgIDB4MzM1NywgMHgxRjZDLCAweDMzNzEsIDB4MkU1NSwgMHgzMzdCLCAweDIwODMsIDB4MzM3QywgMHgxREM3LA0KKyAgICAweDMzN0QsIDB4MURDNiwgMHgzMzdFLCAweDFEQzUsIDB4MzM3RiwgMHgxRjc2LCAweDMzODUsIDB4MUY1RiwNCisgICAgMHgzMzg2LCAweDFGNjAsIDB4MzM4NywgMHgxRjYxLCAweDMzODgsIDB4MjAwMCwgMHgzMzg5LCAweDIwMDEsDQorICAgIDB4MzM4RCwgMHgyRTU4LCAweDMzOEUsIDB4MURCNCwgMHgzMzhGLCAweDFEQjUsIDB4MzM5MCwgMHgxRjYzLA0KKyAgICAweDMzOTYsIDB4MUY2NSwgMHgzMzk3LCAweDFGNTgsIDB4MzM5OCwgMHgxRjVBLCAweDMzOUIsIDB4MkU1OSwNCisgICAgMHgzMzlDLCAweDFEQjEsIDB4MzM5RCwgMHgxREIyLCAweDMzOUUsIDB4MURCMywgMHgzMzlGLCAweDFGRkEsDQorICAgIDB4MzNBMCwgMHgxRjU0LCAweDMzQTEsIDB4MURCNywgMHgzM0EyLCAweDFGNTUsIDB4MzNBMywgMHgxRkZCLA0KKyAgICAweDMzQTQsIDB4MUY1NiwgMHgzM0E1LCAweDFGNTcsIDB4MzNBNiwgMHgxRkZDLCAweDMzQjAsIDB4MUY1RSwNCisgICAgMHgzM0IxLCAweDFGNUQsIDB4MzNCMiwgMHgxRjVDLCAweDMzQjMsIDB4MUY1QiwgMHgzM0MyLCAweDJFNTAsDQorICAgIDB4MzNDNCwgMHgxREI2LCAweDMzQzgsIDB4MjAwMiwgMHgzM0NCLCAweDFGNjIsIDB4MzNDQywgMHgxRkY2LA0KKyAgICAweDMzQ0QsIDB4MURCQiwgMHgzM0Q0LCAweDFGNjQsIDB4MzNENywgMHgyRTVELCAweDMzRDgsIDB4MkU1RSwNCisgICAgMHgzM0RBLCAweDJFNEIsIDB4MzQwMiwgMHgzNTgyLCAweDM0MDUsIDB4M0MxQiwgMHgzNDI3LCAweDM2NTYsDQorICAgIDB4MzQ4OCwgMHgzQzUyLCAweDM0REIsIDB4M0M0MSwgMHgzNTFGLCAweDM2MjksIDB4MzUzRSwgMHgzNzFFLA0KKyAgICAweDM3OEQsIDB4MzYxQSwgMHgzN0UyLCAweDM3MkIsIDB4M0FGMywgMHgzQzQwLCAweDNCMjIsIDB4M0M0OSwNCisgICAgMHgzQjg4LCAweDM2OEQsIDB4M0U4QSwgMHgzQzQzLCAweDNFREEsIDB4M0M0OCwgMHgzRkIxLCAweDM3NTQsDQorICAgIDB4NDA5MywgMHgzQzRDLCAweDQxMDMsIDB4M0M0RiwgMHg0MjY0LCAweDM3NjAsIDB4NDI5MywgMHgzQzUwLA0KKyAgICAweDQ0MEMsIDB4M0M0MiwgMHg0NDUzLCAweDM3NzMsIDB4NDU3QSwgMHgzQzRCLCAweDQ2NjUsIDB4M0M0RSwNCisgICAgMHg0NkFFLCAweDNDNTEsIDB4NEJFOCwgMHgzQzQ2LCAweDRFMDAsIDB4MDRCMCwgMHg0RTAxLCAweDBCQjgsDQorICAgIDB4NEUwMywgMHgwOEUzLCAweDRFMDQsIDB4MzdEOCwgMHg0RTA1LCAweDM3RDksIDB4NEUwNywgMHgwRUFBLA0KKyAgICAweDRFMDgsIDB4MDlDRSwgMHg0RTA5LCAweDA4N0UsIDB4NEUwQSwgMHgwOUNELCAweDRFMEIsIDB4MDUzQywNCisgICAgMHg0RTBELCAweDBEQzYsIDB4NEUwRSwgMHgwRjI5LCAweDRFMTAsIDB4MEZGQiwgMHg0RTExLCAweDA0RDEsDQorICAgIDB4NEUxNCwgMHgwNUNDLCAweDRFMTUsIDB4MEZGQywgMHg0RTE2LCAweDBBNDgsIDB4NEUxNywgMHgxMEQ3LA0KKyAgICAweDRFMTgsIDB4MDY3MCwgMHg0RTE5LCAweDBFMEEsIDB4NEUxRSwgMHgwOUNGLCAweDRFMUYsIDB4MzdEQSwNCisgICAgMHg0RTIxLCAweDBGODYsIDB4NEUyNiwgMHgwRTEyLCAweDRFMjgsIDB4MjBCMywgMHg0RTJBLCAweDBGRkQsDQorICAgIDB4NEUyQiwgMHgzN0RCLCAweDRFMkMsIDB4Mzc0RCwgMHg0RTJELCAweDBCQTQsIDB4NEUyRiwgMHgzN0RDLA0KKyAgICAweDRFMzAsIDB4MzdERCwgMHg0RTMxLCAweDBGRkUsIDB4NEUzMiwgMHgwNkYyLCAweDRFMzYsIDB4MEZGRiwNCisgICAgMHg0RTM3LCAweDM2OUQsIDB4NEUzOCwgMHgwNjE5LCAweDRFMzksIDB4MEI2RSwgMHg0RTNCLCAweDA5MTMsDQorICAgIDB4NEUzQywgMHgxMDAwLCAweDRFM0YsIDB4MTAwMSwgMHg0RTQwLCAweDM3REUsIDB4NEU0MSwgMHgzN0RGLA0KKyAgICAweDRFNDIsIDB4MTAwMiwgMHg0RTQzLCAweDBDRUIsIDB4NEU0NCwgMHgzN0UwLCAweDRFNDUsIDB4MDY3MSwNCisgICAgMHg0RTQ4LCAweDM3MkUsIDB4NEU0QiwgMHgwQ0VELCAweDRFNEQsIDB4MENCQiwgMHg0RTRFLCAweDA3NzcsDQorICAgIDB4NEU0RiwgMHgwRTYxLCAweDRFNTUsIDB4MTk1MCwgMHg0RTU2LCAweDEwMDMsIDB4NEU1NywgMHgwOUQwLA0KKyAgICAweDRFNTgsIDB4MTAwNCwgMHg0RTU5LCAweDA1MzUsIDB4NEU1QSwgMHgzN0UxLCAweDRFNUQsIDB4MDZERCwNCisgICAgMHg0RTVFLCAweDA3QTQsIDB4NEU1RiwgMHgwRUY1LCAweDRFNjIsIDB4MTIzMywgMHg0RTcxLCAweDBGNUEsDQorICAgIDB4NEU3MywgMHgwQ0Q1LCAweDRFN0UsIDB4MDVFMSwgMHg0RTdGLCAweDM3RTIsIDB4NEU4MCwgMHgwNjRGLA0KKyAgICAweDRFODIsIDB4MTAwNSwgMHg0RTg1LCAweDEwMDYsIDB4NEU4NiwgMHgwRjgzLCAweDRFODgsIDB4MEYyNywNCisgICAgMHg0RTg5LCAweDBBRUEsIDB4NEU4QSwgMHgxMDA4LCAweDRFOEIsIDB4MDhDNCwgMHg0RThDLCAweDBDQ0IsDQorICAgIDB4NEU4RCwgMHgzN0UzLCAweDRFOEUsIDB4MTAwQiwgMHg0RTkxLCAweDA0RTAsIDB4NEU5MiwgMHgwNzkzLA0KKyAgICAweDRFOTQsIDB4MDc5MiwgMHg0RTk1LCAweDA0QUEsIDB4NEU5NiwgMHgzN0U0LCAweDRFOTgsIDB4MEZGMSwNCisgICAgMHg0RTk5LCAweDBGRjAsIDB4NEU5QiwgMHgwODIzLCAweDRFOUMsIDB4MDQ2NSwgMHg0RTlFLCAweDEwMEMsDQorICAgIDB4NEU5RiwgMHgxMDBELCAweDRFQTAsIDB4MTAwRSwgMHg0RUExLCAweDBFNjIsIDB4NEVBMiwgMHgxMDBGLA0KKyAgICAweDRFQTQsIDB4MDdBNiwgMHg0RUE1LCAweDA0QUIsIDB4NEVBNiwgMHgwRUEwLCAweDRFQTgsIDB4MDY5NiwNCisgICAgMHg0RUFCLCAweDA2OTcsIDB4NEVBQywgMHgwNjk4LCAweDRFQUQsIDB4MEJGRSwgMHg0RUFFLCAweDBGODQsDQorICAgIDB4NEVCMCwgMHgxMDEwLCAweDRFQjMsIDB4MTAxMSwgMHg0RUI2LCAweDEwMTIsIDB4NEVCOSwgMHgzN0U1LA0KKyAgICAweDRFQkEsIDB4MEExMywgMHg0RUJCLCAweDM2MjAsIDB4NEVDMCwgMHgwOTQ0LCAweDRFQzEsIDB4MEExNCwNCisgICAgMHg0RUMyLCAweDEwMTcsIDB4NEVDNCwgMHgxMDE1LCAweDRFQzYsIDB4MTAxNiwgMHg0RUM3LCAweDA2NzIsDQorICAgIDB4NEVDQSwgMHgwODEzLCAweDRFQ0IsIDB4MDU3MCwgMHg0RUNELCAweDEwMTQsIDB4NEVDRSwgMHgxMDEzLA0KKyAgICAweDRFQ0YsIDB4MERGOSwgMHg0RUQwLCAweDM3RTYsIDB4NEVENCwgMHgwODk0LCAweDRFRDUsIDB4MDg5MywNCisgICAgMHg0RUQ2LCAweDBCMUUsIDB4NEVENywgMHgxMDE4LCAweDRFRDgsIDB4MERDNywgMHg0RUQ5LCAweDBBOEIsDQorICAgIDB4NEVERCwgMHgwMjkwLCAweDRFREUsIDB4MTAxOSwgMHg0RURGLCAweDEwMUIsIDB4NEVFMCwgMHgzN0U3LA0KKyAgICAweDRFRTEsIDB4MjBCNCwgMHg0RUUzLCAweDBCNDUsIDB4NEVFNCwgMHgwRkE5LCAweDRFRTUsIDB4MDQ4RSwNCisgICAgMHg0RUVELCAweDEwMUEsIDB4NEVFRSwgMHgwNTNFLCAweDRFRjAsIDB4MDZCQywgMHg0RUYyLCAweDBCQTUsDQorICAgIDB4NEVGNiwgMHgwNzQ1LCAweDRFRjcsIDB4MTAxQywgMHg0RUZCLCAweDBDREEsIDB4NEVGQywgMHgyMEI1LA0KKyAgICAweDRFRkQsIDB4MzdFOCwgMHg0RUZGLCAweDM3RTksIDB4NEYwMCwgMHgyMEI2LCAweDRGMDEsIDB4MDYyNywNCisgICAgMHg0RjAzLCAweDIwQjcsIDB4NEYwOSwgMHgxMDFELCAweDRGMEEsIDB4MDQ4RiwgMHg0RjBCLCAweDM3RUEsDQorICAgIDB4NEYwRCwgMHgwNzk0LCAweDRGMEUsIDB4MDYyOCwgMHg0RjBGLCAweDBERUMsIDB4NEYxMCwgMHgwRDQ2LA0KKyAgICAweDRGMTEsIDB4MDY3MywgMHg0RjE1LCAweDM3RUIsIDB4NEYxQSwgMHgwNTcxLCAweDRGMUMsIDB4MTA0MCwNCisgICAgMHg0RjFELCAweDBDM0IsIDB4NEYyRiwgMHgwRDIyLCAweDRGMzAsIDB4MTAxRiwgMHg0RjM0LCAweDBENTAsDQorICAgIDB4NEYzNiwgMHgwRkFBLCAweDRGMzgsIDB4MDlGMywgMHg0RjM5LCAweDIwQjgsIDB4NEYzQSwgMHgwODk1LA0KKyAgICAweDRGM0IsIDB4MzdFRCwgMHg0RjNDLCAweDA4QzUsIDB4NEYzRCwgMHgwNTQwLCAweDRGNDMsIDB4MEJFRCwNCisgICAgMHg0RjQ2LCAweDBCNjAsIDB4NEY0NywgMHgxMDIzLCAweDRGNDksIDB4MzdFRSwgMHg0RjRELCAweDA0OTAsDQorICAgIDB4NEY0RSwgMHgwQkZGLCAweDRGNEYsIDB4MDk0NSwgMHg0RjUwLCAweDA4MjQsIDB4NEY1MSwgMHgwRjBFLA0KKyAgICAweDRGNTMsIDB4MEIyRSwgMHg0RjU0LCAweDM3RUYsIDB4NEY1NSwgMHgwNTNGLCAweDRGNTYsIDB4MjBCOSwNCisgICAgMHg0RjU3LCAweDEwMjIsIDB4NEY1OSwgMHgwRjI4LCAweDRGNUEsIDB4MTAxRSwgMHg0RjVCLCAweDEwMjAsDQorICAgIDB4NEY1QywgMHgwODVFLCAweDRGNUQsIDB4MTAyMSwgMHg0RjVFLCAweDExRDMsIDB4NEY2MCwgMHgzN0VDLA0KKyAgICAweDRGNjksIDB4MTAyOSwgMHg0RjZGLCAweDEwMkMsIDB4NEY3MCwgMHgxMDJBLCAweDRGNzMsIDB4MDU0MiwNCisgICAgMHg0Rjc1LCAweDBFMEIsIDB4NEY3NiwgMHgxMDI0LCAweDRGN0EsIDB4MzdGMCwgMHg0RjdCLCAweDEwMjgsDQorICAgIDB4NEY3QywgMHgwN0E3LCAweDRGN0QsIDB4MzdGMSwgMHg0RjdFLCAweDM3RjIsIDB4NEY3RiwgMHgwODk2LA0KKyAgICAweDRGODMsIDB4MDVFMiwgMHg0Rjg2LCAweDEwMkQsIDB4NEY4OCwgMHgxMDI1LCAweDRGOEEsIDB4MjBCQiwNCisgICAgMHg0RjhCLCAweDBGQUIsIDB4NEY4RCwgMHgwOEM2LCAweDRGOEYsIDB4MTAyNiwgMHg0RjkxLCAweDEwMkIsDQorICAgIDB4NEY5MiwgMHgyMEJBLCAweDRGOTQsIDB4MjBCRCwgMHg0Rjk2LCAweDEwMkUsIDB4NEY5NywgMHgzN0YzLA0KKyAgICAweDRGOTgsIDB4MTAyNywgMHg0RjlBLCAweDIwQkMsIDB4NEY5QiwgMHgwNjk5LCAweDRGOUQsIDB4MDQ5MSwNCisgICAgMHg0RkEwLCAweDA2OUEsIDB4NEZBMSwgMHgwNTQxLCAweDRGQUIsIDB4MTFENCwgMHg0RkFELCAweDBFQTcsDQorICAgIDB4NEZBRSwgMHgwREUwLCAweDRGQUYsIDB4MDdBOCwgMHg0RkI1LCAweDA5RjUsIDB4NEZCNiwgMHgwRjdGLA0KKyAgICAweDRGQkUsIDB4MzdGNCwgMHg0RkJGLCAweDBFMjgsIDB4NEZDMiwgMHgwNzBFLCAweDRGQzMsIDB4MEIwNSwNCisgICAgMHg0RkM0LCAweDA1NjQsIDB4NEZDOSwgMHgyMEFDLCAweDRGQ0EsIDB4MDk1RCwgMHg0RkNELCAweDIwQkUsDQorICAgIDB4NEZDRSwgMHgxMDMyLCAweDRGQ0YsIDB4MzdGNSwgMHg0RkQwLCAweDEwMzcsIDB4NEZEMSwgMHgxMDM1LA0KKyAgICAweDRGRDMsIDB4M0MyRiwgMHg0RkQ0LCAweDEwMzAsIDB4NEZENywgMHgwQjBGLCAweDRGRDgsIDB4MTAzMywNCisgICAgMHg0RkRBLCAweDEwMzYsIDB4NEZEQiwgMHgxMDM0LCAweDRGREQsIDB4MEUyRCwgMHg0RkRGLCAweDEwMzEsDQorICAgIDB4NEZFMCwgMHgxREVDLCAweDRGRTEsIDB4MDlGNCwgMHg0RkUzLCAweDBFQTEsIDB4NEZFNCwgMHgxMDM4LA0KKyAgICAweDRGRTUsIDB4MTAzOSwgMHg0RkVFLCAweDA5MkUsIDB4NEZFRiwgMHgxMDQ2LCAweDRGRjMsIDB4MEQwNiwNCisgICAgMHg0RkY1LCAweDBEQTgsIDB4NEZGNiwgMHgxMDQxLCAweDRGRjgsIDB4MEU0MCwgMHg0RkZBLCAweDA1MzYsDQorICAgIDB4NEZGRCwgMHgzN0Y2LCAweDRGRkUsIDB4MTA0NSwgMHg0RkZGLCAweDIwQzEsIDB4NTAwMCwgMHgzN0Y3LA0KKyAgICAweDUwMDEsIDB4MzdGOCwgMHg1MDAyLCAweDM0NDcsIDB4NTAwNSwgMHgxMDNGLCAweDUwMDYsIDB4MTA0OCwNCisgICAgMHg1MDA5LCAweDBBRDQsIDB4NTAwQiwgMHgwNzc4LCAweDUwMEQsIDB4MEQxMiwgMHg1MDBGLCAweDE2MDAsDQorICAgIDB4NTAxMCwgMHgzN0Y5LCAweDUwMTEsIDB4MTA0NywgMHg1MDEyLCAweDBDNTcsIDB4NTAxNCwgMHgxMDNDLA0KKyAgICAweDUwMTYsIDB4MDdBQSwgMHg1MDE5LCAweDA3QTksIDB4NTAxQSwgMHgxMDNBLCAweDUwMUIsIDB4MzdGQSwNCisgICAgMHg1MDFFLCAweDIwQzIsIDB4NTAxRiwgMHgwOTA2LCAweDUwMjEsIDB4MTA0MiwgMHg1MDIyLCAweDIwQzAsDQorICAgIDB4NTAyMywgMHgwRTNGLCAweDUwMjQsIDB4MEI4QiwgMHg1MDI1LCAweDEwM0UsIDB4NTAyNiwgMHgwNzQ3LA0KKyAgICAweDUwMjcsIDB4MzdGQiwgMHg1MDI4LCAweDEwM0IsIDB4NTAyOSwgMHgxMDQzLCAweDUwMkEsIDB4MTAzRCwNCisgICAgMHg1MDJCLCAweDBGOTksIDB4NTAyQywgMHgxMDQ0LCAweDUwMkQsIDB4MEZFNywgMHg1MDJFLCAweDM3RkMsDQorICAgIDB4NTAzNiwgMHgwNkRFLCAweDUwMzksIDB4MDc0NiwgMHg1MDNCLCAweDM4MDAsIDB4NTA0MCwgMHgyMEJGLA0KKyAgICAweDUwNDIsIDB4MjBDNSwgMHg1MDQzLCAweDEwNDksIDB4NTA0NiwgMHgyMEMzLCAweDUwNDcsIDB4MTA0QSwNCisgICAgMHg1MDQ4LCAweDEwNEUsIDB4NTA0OSwgMHgwNDkyLCAweDUwNEYsIDB4MEUyMCwgMHg1MDUwLCAweDEwNEQsDQorICAgIDB4NTA1NSwgMHgxMDRDLCAweDUwNTYsIDB4MTA1MCwgMHg1MDU3LCAweDM3RkQsIDB4NTA1QSwgMHgxMDRGLA0KKyAgICAweDUwNUMsIDB4MEMwMCwgMHg1MDY1LCAweDA3NDgsIDB4NTA2NiwgMHgzN0ZFLCAweDUwNkEsIDB4MzdGRiwNCisgICAgMHg1MDZDLCAweDEwNTEsIDB4NTA3MCwgMHgyMEM0LCAweDUwNzIsIDB4MDhGMSwgMHg1MDc0LCAweDBCMDYsDQorICAgIDB4NTA3NSwgMHgwQzAxLCAweDUwNzYsIDB4MDZFRSwgMHg1MDc4LCAweDEwNTIsIDB4NTA3RCwgMHgwNjUwLA0KKyAgICAweDUwODAsIDB4MTA1MywgMHg1MDg1LCAweDEwNTUsIDB4NTA4RCwgMHgwRTYzLCAweDUwOEYsIDB4MzgwMSwNCisgICAgMHg1MDkxLCAweDA3M0MsIDB4NTA5NCwgMHgyMEM2LCAweDUwOTYsIDB4MzgwMiwgMHg1MDk4LCAweDA4N0YsDQorICAgIDB4NTA5OSwgMHgwRDhCLCAweDUwOUEsIDB4MTA1NCwgMHg1MDlDLCAweDM4MDMsIDB4NTBBQywgMHgwODM1LA0KKyAgICAweDUwQUQsIDB4MEYyRCwgMHg1MEIyLCAweDEwNTcsIDB4NTBCMywgMHgxMDVBLCAweDUwQjQsIDB4MTA1NiwNCisgICAgMHg1MEI1LCAweDA4MzQsIDB4NTBCNywgMHgwOTg3LCAweDUwQkUsIDB4MDcwRiwgMHg1MEMyLCAweDEwNUIsDQorICAgIDB4NTBDNSwgMHgwNkM3LCAweDUwQzksIDB4MTA1OCwgMHg1MENBLCAweDEwNTksIDB4NTBDQywgMHgzODA0LA0KKyAgICAweDUwQ0QsIDB4MEM4NywgMHg1MENGLCAweDBBRkUsIDB4NTBEMSwgMHgwNjlCLCAweDUwRDUsIDB4MEU3QiwNCisgICAgMHg1MEQ2LCAweDEwNUMsIDB4NTBEOCwgMHgyMEM4LCAweDUwRDksIDB4M0MzMCwgMHg1MERBLCAweDBGODUsDQorICAgIDB4NTBERSwgMHgxMDVELCAweDUwRTMsIDB4MTA2MCwgMHg1MEU1LCAweDEwNUUsIDB4NTBFNiwgMHgzODA1LA0KKyAgICAweDUwRTcsIDB4MEFEMCwgMHg1MEU5LCAweDM4MDYsIDB4NTBFRCwgMHgxMDVGLCAweDUwRUUsIDB4MTA2MSwNCisgICAgMHg1MEVGLCAweDM4MDcsIDB4NTBGMCwgMHgzQzMxLCAweDUwRjQsIDB4MjBDNywgMHg1MEY1LCAweDEwNjMsDQorICAgIDB4NTBGOSwgMHgxMDYyLCAweDUwRkIsIDB4MEUxOCwgMHg1MTAwLCAweDA2NTEsIDB4NTEwMSwgMHgxMDY1LA0KKyAgICAweDUxMDIsIDB4MTA2NiwgMHg1MTA0LCAweDA1MkYsIDB4NTEwOCwgMHgzODA4LCAweDUxMDksIDB4MTA2NCwNCisgICAgMHg1MTBCLCAweDM4MDksIDB4NTExMCwgMHgzODBBLCAweDUxMTIsIDB4MDkyMCwgMHg1MTE0LCAweDEwNjksDQorICAgIDB4NTExNSwgMHgxMDY4LCAweDUxMTYsIDB4MTA2NywgMHg1MTE4LCAweDEwMkYsIDB4NTExQSwgMHgxMDZBLA0KKyAgICAweDUxMUIsIDB4MzgwQiwgMHg1MTFFLCAweDM4MEMsIDB4NTExRiwgMHgwOTg4LCAweDUxMjEsIDB4MTA2QiwNCisgICAgMHg1MTJBLCAweDBGMEYsIDB4NTEzMiwgMHgwRUU1LCAweDUxMzcsIDB4MTA2RCwgMHg1MTNBLCAweDEwNkMsDQorICAgIDB4NTEzQiwgMHgxMDZGLCAweDUxM0MsIDB4MTA2RSwgMHg1MTNGLCAweDEwNzAsIDB4NTE0MCwgMHgxMDcxLA0KKyAgICAweDUxNDEsIDB4MDRCOCwgMHg1MTQzLCAweDA3NjksIDB4NTE0NCwgMHgwNzExLCAweDUxNDUsIDB4MDk0NiwNCisgICAgMHg1MTQ2LCAweDBCQjksIDB4NTE0NywgMHgwNjlDLCAweDUxNDgsIDB4MEE4QywgMHg1MTQ5LCAweDA3QUIsDQorICAgIDB4NTE0QSwgMHgyMEM5LCAweDUxNEIsIDB4MDgwMCwgMHg1MTRDLCAweDEwNzMsIDB4NTE0RCwgMHgwRUQ0LA0KKyAgICAweDUxNEUsIDB4MEM0MCwgMHg1MTUwLCAweDA4QzcsIDB4NTE1MiwgMHgxMDcyLCAweDUxNTQsIDB4MTA3NCwNCisgICAgMHg1MTVBLCAweDBDNTgsIDB4NTE1QywgMHgwNUQzLCAweDUxNUYsIDB4MzgwRCwgMHg1MTYyLCAweDEwNzUsDQorICAgIDB4NTE2NCwgMHgyMENBLCAweDUxNjUsIDB4MENENiwgMHg1MTY3LCAweDM2OEUsIDB4NTE2OCwgMHgwQUI2LA0KKyAgICAweDUxNjksIDB4MTA3NywgMHg1MTZBLCAweDEwNzgsIDB4NTE2QiwgMHgwRDQwLCAweDUxNkMsIDB4MDdBQywNCisgICAgMHg1MTZELCAweDBGRTEsIDB4NTE2RSwgMHgxMDc5LCAweDUxNzEsIDB4MDY5RSwgMHg1MTc1LCAweDBFMEMsDQorICAgIDB4NTE3NiwgMHgwQjE2LCAweDUxNzcsIDB4MDZFOSwgMHg1MTc4LCAweDBDMkYsIDB4NTE3OSwgMHgzNzc5LA0KKyAgICAweDUxN0MsIDB4MDc0OSwgMHg1MTgwLCAweDEwN0EsIDB4NTE4MiwgMHgxMDdCLCAweDUxODUsIDB4MENCQSwNCisgICAgMHg1MTg2LCAweDA1MDEsIDB4NTE4OSwgMHgxMDdFLCAweDUxOEEsIDB4MDg2RCwgMHg1MThDLCAweDEwN0QsDQorICAgIDB4NTE4RCwgMHgwODM2LCAweDUxOEYsIDB4MTA3RiwgMHg1MTkwLCAweDE4NUIsIDB4NTE5MSwgMHgxMDgwLA0KKyAgICAweDUxOTIsIDB4MEU2RiwgMHg1MTkzLCAweDEwODEsIDB4NTE5NSwgMHgxMDgyLCAweDUxOTYsIDB4MTA4MywNCisgICAgMHg1MTk3LCAweDA5RDEsIDB4NTE5OSwgMHgwOEY4LCAweDUxOUQsIDB4MjBDQiwgMHg1MUEwLCAweDA1RTMsDQorICAgIDB4NTFBMSwgMHgzODBFLCAweDUxQTIsIDB4MTA4NiwgMHg1MUE0LCAweDEwODQsIDB4NTFBNSwgMHgwRUM5LA0KKyAgICAweDUxQTYsIDB4MTA4NSwgMHg1MUE4LCAweDBEQ0MsIDB4NTFBOSwgMHgxMDg3LCAweDUxQUEsIDB4MTA4OCwNCisgICAgMHg1MUFCLCAweDEwODksIDB4NTFBQywgMHgwQzU5LCAweDUxQjAsIDB4MTA4RCwgMHg1MUIxLCAweDEwOEIsDQorICAgIDB4NTFCMiwgMHgxMDhDLCAweDUxQjMsIDB4MTA4QSwgMHg1MUI0LCAweDA4NTMsIDB4NTFCNSwgMHgxMDhFLA0KKyAgICAweDUxQjYsIDB4MEVGNiwgMHg1MUI3LCAweDBGQUMsIDB4NTFCQywgMHgzODBGLCAweDUxQkQsIDB4MTA4RiwNCisgICAgMHg1MUJFLCAweDIwQ0MsIDB4NTFDMywgMHgzQzMyLCAweDUxQzQsIDB4MEE0QywgMHg1MUM1LCAweDEwOTAsDQorICAgIDB4NTFDNiwgMHgwOTY0LCAweDUxQzksIDB4MTA5MSwgMHg1MUNCLCAweDBCQkEsIDB4NTFDQywgMHgwRjg3LA0KKyAgICAweDUxQ0QsIDB4MEM1QSwgMHg1MUQ2LCAweDEwREEsIDB4NTFEQiwgMHgxMDkyLCAweDUxREMsIDB4MjA1QywNCisgICAgMHg1MURELCAweDA2QkQsIDB4NTFERSwgMHgzODEwLCAweDUxRTAsIDB4MTA5MywgMHg1MUUxLCAweDBFOEMsDQorICAgIDB4NTFFNiwgMHgwOTcyLCAweDUxRTcsIDB4MEI1QywgMHg1MUU5LCAweDEwOTUsIDB4NTFFQSwgMHgwQ0JDLA0KKyAgICAweDUxRUMsIDB4MjBDRCwgMHg1MUVELCAweDEwOTYsIDB4NTFFRSwgMHgzODExLCAweDUxRjAsIDB4MTA5NywNCisgICAgMHg1MUYxLCAweDA1OEMsIDB4NTFGNCwgMHgzODEyLCAweDUxRjUsIDB4MTA5OCwgMHg1MUY2LCAweDA2OUYsDQorICAgIDB4NTFGOCwgMHgwQ0E0LCAweDUxRjksIDB4MDUxQywgMHg1MUZBLCAweDA5NUEsIDB4NTFGRCwgMHgwRDM1LA0KKyAgICAweDUxRkUsIDB4MTA5OSwgMHg1MjAwLCAweDBDNUIsIDB4NTIwMSwgMHgzODEzLCAweDUyMDIsIDB4MzgxNCwNCisgICAgMHg1MjAzLCAweDBBMTUsIDB4NTIwNCwgMHgxMDlBLCAweDUyMDYsIDB4MERGQywgMHg1MjA3LCAweDBBN0UsDQorICAgIDB4NTIwOCwgMHgwNURFLCAweDUyMEEsIDB4MDVFNSwgMHg1MjBCLCAweDEwOUIsIDB4NTIwRSwgMHgxMDlELA0KKyAgICAweDUyMTEsIDB4MDcxMCwgMHg1MjEzLCAweDM4MTUsIDB4NTIxNCwgMHgxMDlDLCAweDUyMTUsIDB4MjBDRSwNCisgICAgMHg1MjE3LCAweDBGQkIsIDB4NTIxRCwgMHgwOTczLCAweDUyMjQsIDB4MEQ1MSwgMHg1MjI1LCAweDBFMUMsDQorICAgIDB4NTIyNywgMHgxMDlFLCAweDUyMjksIDB4MEY2MiwgMHg1MjJBLCAweDEwOUYsIDB4NTIyRSwgMHgxMEEwLA0KKyAgICAweDUyMzAsIDB4MEM3OCwgMHg1MjMzLCAweDEwQTEsIDB4NTIzNiwgMHgwQTRELCAweDUyMzcsIDB4MDg2RSwNCisgICAgMHg1MjM4LCAweDA3NEEsIDB4NTIzOSwgMHgxMEEyLCAweDUyM0EsIDB4MDg5NywgMHg1MjNCLCAweDA4MDEsDQorICAgIDB4NTI0MywgMHgwQzAyLCAweDUyNDQsIDB4MTBBNCwgMHg1MjQ3LCAweDBCMDcsIDB4NTI0OSwgMHgzODE2LA0KKyAgICAweDUyNEEsIDB4MDg1RiwgMHg1MjRCLCAweDEwQTUsIDB4NTI0QywgMHgxMEE2LCAweDUyNEQsIDB4MEFCMiwNCisgICAgMHg1MjRGLCAweDEwQTMsIDB4NTI1NCwgMHgxMEE4LCAweDUyNTYsIDB4MEU2NCwgMHg1MjVCLCAweDA3RjYsDQorICAgIDB4NTI1RCwgMHgxRTVFLCAweDUyNUUsIDB4MTBBNywgMHg1MjYxLCAweDM4MTcsIDB4NTI2MywgMHgwNzRCLA0KKyAgICAweDUyNjQsIDB4MDg0RSwgMHg1MjY1LCAweDBEMjMsIDB4NTI2NiwgMHgzODE4LCAweDUyNjksIDB4MTBBQiwNCisgICAgMHg1MjZBLCAweDEwQTksIDB4NTI2RiwgMHgwREVELCAweDUyNzAsIDB4MDlEMiwgMHg1MjcxLCAweDEwQjIsDQorICAgIDB4NTI3MiwgMHgwNUMyLCAweDUyNzMsIDB4MTBBQywgMHg1Mjc0LCAweDEwQUEsIDB4NTI3NSwgMHgwQUQxLA0KKyAgICAweDUyN0QsIDB4MTBBRSwgMHg1MjdGLCAweDEwQUQsIDB4NTI4MywgMHgwNUEyLCAweDUyODcsIDB4MDczNiwNCisgICAgMHg1Mjg4LCAweDEwQjMsIDB4NTI4OSwgMHgwRjc1LCAweDUyOEQsIDB4MTBBRiwgMHg1MjkxLCAweDEwQjQsDQorICAgIDB4NTI5MiwgMHgxMEIxLCAweDUyOTMsIDB4MzgxOSwgMHg1Mjk0LCAweDEwQjAsIDB4NTI5QiwgMHgwRjk3LA0KKyAgICAweDUyOUMsIDB4MjBDRiwgMHg1MjlGLCAweDA3QUQsIDB4NTJBMCwgMHgwNTQzLCAweDUyQTMsIDB4MEZCQywNCisgICAgMHg1MkE2LCAweDIwRDAsIDB4NTJBOSwgMHgwOTdGLCAweDUyQUEsIDB4MEM1MiwgMHg1MkFCLCAweDA3RjcsDQorICAgIDB4NTJBQywgMHgxMEI3LCAweDUyQUQsIDB4MTBCOCwgMHg1MkFGLCAweDIxN0QsIDB4NTJCMSwgMHgwRkFELA0KKyAgICAweDUyQjQsIDB4MEZEMSwgMHg1MkI1LCAweDEwQkEsIDB4NTJCOSwgMHgwN0FFLCAweDUyQkMsIDB4MTBCOSwNCisgICAgMHg1MkJFLCAweDA1OEQsIDB4NTJDMCwgMHgyMEQxLCAweDUyQzEsIDB4MTBCQiwgMHg1MkMzLCAweDBFODQsDQorICAgIDB4NTJDNSwgMHgwQkQ4LCAweDUyQzcsIDB4MEYxMCwgMHg1MkM4LCAweDM4MUEsIDB4NTJDOSwgMHgwRTI5LA0KKyAgICAweDUyQ0QsIDB4MTBCQywgMHg1MkQwLCAweDM2RTgsIDB4NTJEMiwgMHgxQkVFLCAweDUyRDUsIDB4MEM4OCwNCisgICAgMHg1MkQ3LCAweDEwQkQsIDB4NTJEOCwgMHgwNUU2LCAweDUyRDksIDB4MEVCRiwgMHg1MkRCLCAweDIwRDIsDQorICAgIDB4NTJERCwgMHgwOTg5LCAweDUyREUsIDB4MTBCRSwgMHg1MkRGLCAweDBFMzcsIDB4NTJFMCwgMHgxMEMyLA0KKyAgICAweDUyRTIsIDB4MEE0RSwgMHg1MkUzLCAweDEwQkYsIDB4NTJFNCwgMHgwNkM4LCAweDUyRTYsIDB4MTBDMCwNCisgICAgMHg1MkU3LCAweDA1RTcsIDB4NTJGMCwgMHgzODFCLCAweDUyRjIsIDB4MDcwNCwgMHg1MkYzLCAweDEwQzMsDQorICAgIDB4NTJGNSwgMHgxMEM0LCAweDUyRjgsIDB4MTBDNSwgMHg1MkY5LCAweDEwQzYsIDB4NTJGQSwgMHgwOTA3LA0KKyAgICAweDUyRkUsIDB4MDdBRiwgMHg1MkZGLCAweDBFRUEsIDB4NTMwMCwgMHgyMEQzLCAweDUzMDEsIDB4MEVGNCwNCisgICAgMHg1MzAyLCAweDBDQ0YsIDB4NTMwNSwgMHgwRTQxLCAweDUzMDYsIDB4MTBDNywgMHg1MzA3LCAweDIwRDQsDQorICAgIDB4NTMwOCwgMHgxMEM4LCAweDUzMEEsIDB4MzgxQywgMHg1MzBCLCAweDM4MUQsIDB4NTMwRCwgMHgxMENBLA0KKyAgICAweDUzMEYsIDB4MTBDQywgMHg1MzEwLCAweDEwQ0IsIDB4NTMxNSwgMHgxMENELCAweDUzMTYsIDB4MDUzRCwNCisgICAgMHg1MzE3LCAweDBFN0EsIDB4NTMxOSwgMHgwODZDLCAweDUzMUEsIDB4MTBDRSwgMHg1MzFELCAweDBBREIsDQorICAgIDB4NTMyMCwgMHgwOThBLCAweDUzMjEsIDB4MDZBMSwgMHg1MzIzLCAweDEwQ0YsIDB4NTMyNCwgMHgyMEQ1LA0KKyAgICAweDUzMkEsIDB4MEQ2RiwgMHg1MzJGLCAweDEwRDAsIDB4NTMzMSwgMHgxMEQxLCAweDUzMzMsIDB4MTBEMiwNCisgICAgMHg1MzM4LCAweDEwRDMsIDB4NTMzOSwgMHgwRDk2LCAweDUzM0EsIDB4MDZFMCwgMHg1MzNCLCAweDA0QTksDQorICAgIDB4NTMzRSwgMHgzODFFLCAweDUzM0YsIDB4MEM5NywgMHg1MzQwLCAweDEwRDQsIDB4NTM0MSwgMHgwOTQ3LA0KKyAgICAweDUzNDMsIDB4MEE4RCwgMHg1MzQ1LCAweDEwRDYsIDB4NTM0NiwgMHgxMEQ1LCAweDUzNDcsIDB4MDk4QiwNCisgICAgMHg1MzQ4LCAweDA3OTUsIDB4NTM0OSwgMHgxMEQ4LCAweDUzNEEsIDB4MEQ1MiwgMHg1MzRCLCAweDM4MjAsDQorICAgIDB4NTM0QywgMHgzODFGLCAweDUzNEQsIDB4MTBEOSwgMHg1MzUxLCAweDBENzAsIDB4NTM1MiwgMHgwQjE0LA0KKyAgICAweDUzNTMsIDB4MEI0RSwgMHg1MzU0LCAweDA2QTAsIDB4NTM1NywgMHgwQ0M2LCAweDUzNTgsIDB4MEI2RiwNCisgICAgMHg1MzVBLCAweDBEMjQsIDB4NTM1QywgMHgwRTdDLCAweDUzNUUsIDB4MTBEQiwgMHg1MzYwLCAweDBBOEUsDQorICAgIDB4NTM2MSwgMHgzODIxLCAweDUzNjYsIDB4MDcwQiwgMHg1MzY5LCAweDEwREMsIDB4NTM2QywgMHgzODIyLA0KKyAgICAweDUzNkUsIDB4MTBERCwgMHg1MzZGLCAweDA0Q0UsIDB4NTM3MCwgMHgwNEI5LCAweDUzNzEsIDB4MDYyOSwNCisgICAgMHg1MzcyLCAweDIwRDYsIDB4NTM3MywgMHgwQjA4LCAweDUzNzQsIDB4MDY2QiwgMHg1Mzc1LCAweDBGNUIsDQorICAgIDB4NTM3NywgMHgxMEUwLCAweDUzNzgsIDB4MDUzNywgMHg1MzdCLCAweDEwREYsIDB4NTM3RCwgMHgzNDM1LA0KKyAgICAweDUzN0YsIDB4MDZBMiwgMHg1MzgyLCAweDEwRTEsIDB4NTM4NCwgMHgwRUZELCAweDUzODksIDB4MzdEMCwNCisgICAgMHg1MzkzLCAweDIwRDcsIDB4NTM5NiwgMHgxMEUyLCAweDUzOTgsIDB4MEY5QSwgMHg1MzlBLCAweDA3QjAsDQorICAgIDB4NTM5RiwgMHgwNzZBLCAweDUzQTAsIDB4MTBFMywgMHg1M0E1LCAweDEwRTUsIDB4NTNBNiwgMHgxMEU0LA0KKyAgICAweDUzQTgsIDB4MEEyNSwgMHg1M0E5LCAweDA0REIsIDB4NTNBQiwgMHgzODIzLCAweDUzQUQsIDB4MDUwMCwNCisgICAgMHg1M0FFLCAweDEwRTYsIDB4NTNCMCwgMHgxMEU3LCAweDUzQjIsIDB4MjBEOCwgMHg1M0IzLCAweDA3NkIsDQorICAgIDB4NTNCNiwgMHgxMEU4LCAweDUzQkIsIDB4MDY4OCwgMHg1M0MyLCAweDA4ODAsIDB4NTNDMywgMHgxMEU5LA0KKyAgICAweDUzQzgsIDB4MEVBMiwgMHg1M0M5LCAweDA4MjUsIDB4NTNDQSwgMHgwNjc0LCAweDUzQ0IsIDB4MEYxMSwNCisgICAgMHg1M0NDLCAweDBBRDIsIDB4NTNDRCwgMHgwRDUzLCAweDUzQ0UsIDB4MDkyOSwgMHg1M0Q0LCAweDA5NTEsDQorICAgIDB4NTNENiwgMHgwOTE0LCAweDUzRDcsIDB4MDkyMSwgMHg1M0Q5LCAweDA5ODAsIDB4NTNEQSwgMHgzODI0LA0KKyAgICAweDUzREIsIDB4MEQ1NCwgMHg1M0RELCAweDIwRDksIDB4NTNERiwgMHgxMEVDLCAweDUzRTEsIDB4MDRFNSwNCisgICAgMHg1M0UyLCAweDBBRDMsIDB4NTNFMywgMHgwN0IxLCAweDUzRTQsIDB4MDc3OSwgMHg1M0U1LCAweDA2REYsDQorICAgIDB4NTNFNiwgMHgzODI1LCAweDUzRTgsIDB4MTBGMCwgMHg1M0U5LCAweDBCNUYsIDB4NTNFQSwgMHgwQjVFLA0KKyAgICAweDUzRUIsIDB4MDZBMywgMHg1M0VDLCAweDA5OEMsIDB4NTNFRCwgMHgxMEYxLCAweDUzRUUsIDB4MTBFRiwNCisgICAgMHg1M0VGLCAweDA1NDQsIDB4NTNGMCwgMHgwQjQ2LCAweDUzRjEsIDB4MDhFNCwgMHg1M0YyLCAweDA4OTksDQorICAgIDB4NTNGMywgMHgwNEM4LCAweDUzRjUsIDB4MzgyNiwgMHg1M0Y2LCAweDA1Q0UsIDB4NTNGNywgMHgwN0Y4LA0KKyAgICAweDUzRjgsIDB4MDg5OCwgMHg1M0ZBLCAweDEwRjIsIDB4NTQwMSwgMHgxMEYzLCAweDU0MDMsIDB4MDY2MywNCisgICAgMHg1NDA0LCAweDA1QTQsIDB4NTQwOCwgMHgwN0Y5LCAweDU0MDksIDB4MDY2MiwgMHg1NDBBLCAweDBCRkIsDQorICAgIDB4NTQwQiwgMHgwNEM3LCAweDU0MEMsIDB4MEM4OSwgMHg1NDBELCAweDBFQ0EsIDB4NTQwRSwgMHgwN0IzLA0KKyAgICAweDU0MEYsIDB4MEY2MywgMHg1NDEwLCAweDBDNDEsIDB4NTQxMSwgMHgwN0IyLCAweDU0MUIsIDB4MDcwNSwNCisgICAgMHg1NDFELCAweDEwRkMsIDB4NTQxRiwgMHgwNkRCLCAweDU0MjAsIDB4MEU3OCwgMHg1NDI2LCAweDBENzEsDQorICAgIDB4NTQyNywgMHgzODI3LCAweDU0MjksIDB4MTBGQiwgMHg1NDJCLCAweDA2MUEsIDB4NTQyQywgMHgxMEY2LA0KKyAgICAweDU0MkQsIDB4MTBGNywgMHg1NDJFLCAweDEwRjksIDB4NTQzMywgMHgzNUMwLCAweDU0MzYsIDB4MTBGQSwNCisgICAgMHg1NDM4LCAweDA2NzUsIDB4NTQzOSwgMHgwQTI3LCAweDU0M0IsIDB4MERGRCwgMHg1NDNDLCAweDEwRjgsDQorICAgIDB4NTQzRCwgMHgxMEY0LCAweDU0M0UsIDB4MDc5NywgMHg1NDNGLCAweDM1Q0YsIDB4NTQ0MCwgMHgxMEY1LA0KKyAgICAweDU0NDIsIDB4MEZDQSwgMHg1NDQ2LCAweDBFNDIsIDB4NTQ0OCwgMHgwQzA0LCAweDU0NDksIDB4MDc5NiwNCisgICAgMHg1NDRBLCAweDA4MDIsIDB4NTQ0RCwgMHgzODI4LCAweDU0NEUsIDB4MTBGRCwgMHg1NDUxLCAweDBDQjUsDQorICAgIDB4NTQ1NSwgMHgzNzIzLCAweDU0NUYsIDB4MTEwMSwgMHg1NDY2LCAweDM4MjksIDB4NTQ2OCwgMHgwOTJBLA0KKyAgICAweDU0NkEsIDB4MDkyMiwgMHg1NDZCLCAweDM4MkEsIDB4NTQ3MCwgMHgxMTA0LCAweDU0NzEsIDB4MTEwMiwNCisgICAgMHg1NDczLCAweDBFQUYsIDB4NTQ3NCwgMHgzODJCLCAweDU0NzUsIDB4MTBGRiwgMHg1NDc2LCAweDExMDgsDQorICAgIDB4NTQ3NywgMHgxMTAzLCAweDU0N0IsIDB4MTEwNiwgMHg1NDdDLCAweDA3N0EsIDB4NTQ3RCwgMHgwRUNCLA0KKyAgICAweDU0ODAsIDB4MTEwNywgMHg1NDg0LCAweDExMDksIDB4NTQ4NiwgMHgxMTBCLCAweDU0OEEsIDB4MjBEQywNCisgICAgMHg1NDhCLCAweDA4NjAsIDB4NTQ4QywgMHgwRkU4LCAweDU0OEQsIDB4MzgyQywgMHg1NDhFLCAweDExMDAsDQorICAgIDB4NTQ4RiwgMHgxMEZFLCAweDU0OTAsIDB4MTEwQSwgMHg1NDkyLCAweDExMDUsIDB4NTQ5NiwgMHgzODJELA0KKyAgICAweDU0OUMsIDB4MjBEQiwgMHg1NEExLCAweDM4MkUsIDB4NTRBMiwgMHgxMTBELCAweDU0QTQsIDB4MTExNiwNCisgICAgMHg1NEE1LCAweDExMEYsIDB4NTRBOCwgMHgxMTEzLCAweDU0QTksIDB4MjBERCwgMHg1NEFCLCAweDExMTQsDQorICAgIDB4NTRBQywgMHgxMTEwLCAweDU0QUQsIDB4MzgyRiwgMHg1NEFGLCAweDExMzEsIDB4NTRCMiwgMHgwODU5LA0KKyAgICAweDU0QjMsIDB4MDU4RiwgMHg1NEI4LCAweDExMEUsIDB4NTRCOSwgMHgzODMwLCAweDU0QkMsIDB4MTExOCwNCisgICAgMHg1NEJELCAweDA0QkEsIDB4NTRCRSwgMHgxMTE3LCAweDU0QkYsIDB4MzgzMSwgMHg1NEMwLCAweDA0NjksDQorICAgIDB4NTRDMSwgMHgwREJDLCAweDU0QzIsIDB4MTExNSwgMHg1NEM0LCAweDExMTEsIDB4NTRDNiwgMHgzODMyLA0KKyAgICAweDU0QzcsIDB4MTEwQywgMHg1NEM4LCAweDExMTIsIDB4NTRDOSwgMHgwODM4LCAweDU0Q0QsIDB4MzgzMywNCisgICAgMHg1NEQ4LCAweDExMTksIDB4NTRFMSwgMHgwNEJCLCAweDU0RTIsIDB4MTEyMiwgMHg1NEU1LCAweDExMUEsDQorICAgIDB4NTRFNiwgMHgxMTFCLCAweDU0RTgsIDB4MDk4RCwgMHg1NEU5LCAweDBFOTcsIDB4NTRFRCwgMHgxMTIwLA0KKyAgICAweDU0RUUsIDB4MTExRiwgMHg1NEYyLCAweDBDMjksIDB4NTRGQSwgMHgxMTIxLCAweDU0RkQsIDB4MTExRSwNCisgICAgMHg1NEZGLCAweDIwREUsIDB4NTUwNCwgMHgwNEQ2LCAweDU1MDYsIDB4MDgyNiwgMHg1NTA3LCAweDA5RjYsDQorICAgIDB4NTUwRSwgMHgzODM0LCAweDU1MEYsIDB4MTExQywgMHg1NTEwLCAweDBDNUMsIDB4NTUxNCwgMHgxMTFELA0KKyAgICAweDU1MTYsIDB4MDQ2NiwgMHg1NTJCLCAweDM4MzUsIDB4NTUyRSwgMHgxMTI3LCAweDU1MkYsIDB4MEYwRCwNCisgICAgMHg1NTMxLCAweDA5OEYsIDB4NTUzMywgMHgxMTJELCAweDU1MzUsIDB4MzgzNiwgMHg1NTM4LCAweDExMkMsDQorICAgIDB4NTUzOSwgMHgxMTIzLCAweDU1M0UsIDB4MEIyMywgMHg1NTQwLCAweDExMjQsIDB4NTU0NCwgMHgwQjRGLA0KKyAgICAweDU1NDUsIDB4MTEyOSwgMHg1NTQ2LCAweDA5OEUsIDB4NTU0QSwgMHgzODM3LCAweDU1NEMsIDB4MTEyNiwNCisgICAgMHg1NTRGLCAweDBFRjAsIDB4NTU1MywgMHgwNzEyLCAweDU1NTYsIDB4MTEyQSwgMHg1NTU3LCAweDExMkIsDQorICAgIDB4NTU1QywgMHgxMTI4LCAweDU1NUQsIDB4MTEyRSwgMHg1NTVFLCAweDFERDEsIDB4NTU2MCwgMHgzODM4LA0KKyAgICAweDU1NjEsIDB4MzgzOSwgMHg1NTYzLCAweDExMjUsIDB4NTU3QiwgMHgxMTM0LCAweDU1N0MsIDB4MTEzOSwNCisgICAgMHg1NTdFLCAweDExMzUsIDB4NTU4MCwgMHgxMTMwLCAweDU1ODMsIDB4MTEzQSwgMHg1NTg0LCAweDBBQjMsDQorICAgIDB4NTU4NiwgMHgyMERGLCAweDU1ODcsIDB4MTEzQywgMHg1NTg4LCAweDM4M0EsIDB4NTU4OSwgMHgwN0I0LA0KKyAgICAweDU1OEEsIDB4MTEzMiwgMHg1NThCLCAweDBCQkIsIDB4NTU4RSwgMHgzODNCLCAweDU1OTgsIDB4MTEzNiwNCisgICAgMHg1NTk5LCAweDExMkYsIDB4NTU5QSwgMHgwNUU5LCAweDU1OUMsIDB4MDYyQSwgMHg1NTlELCAweDA1QzMsDQorICAgIDB4NTU5RSwgMHgxMTM3LCAweDU1OUYsIDB4MTEzMywgMHg1NUE3LCAweDA3NEMsIDB4NTVBOCwgMHgxMTNELA0KKyAgICAweDU1QTksIDB4MTEzQiwgMHg1NUFBLCAweDBBRDUsIDB4NTVBQiwgMHgwNjY0LCAweDU1QUMsIDB4MDZBNCwNCisgICAgMHg1NUFFLCAweDExMzgsIDB4NTVCMCwgMHgwNkVDLCAweDU1QjYsIDB4MDRFNiwgMHg1NUM0LCAweDExNDEsDQorICAgIDB4NTVDNSwgMHgxMTNGLCAweDU1QzcsIDB4MTE3OCwgMHg1NUQ0LCAweDExNDQsIDB4NTVEQSwgMHgxMTNFLA0KKyAgICAweDU1REMsIDB4MTE0MiwgMHg1NURGLCAweDExNDAsIDB4NTVFMywgMHgwODlBLCAweDU1RTQsIDB4MTE0MywNCisgICAgMHg1NUY3LCAweDExNDYsIDB4NTVGOSwgMHgxMTRCLCAweDU1RkQsIDB4MTE0OSwgMHg1NUZFLCAweDExNDgsDQorICAgIDB4NTYwNiwgMHgwQjcwLCAweDU2MDgsIDB4MzgzQywgMHg1NjA5LCAweDA1NDUsIDB4NTYwRSwgMHgzODNELA0KKyAgICAweDU2MEYsIDB4MzgzRSwgMHg1NjE0LCAweDExNDUsIDB4NTYxNiwgMHgxMTQ3LCAweDU2MTcsIDB4MDk5MCwNCisgICAgMHg1NjE4LCAweDA0RDUsIDB4NTYxQiwgMHgxMTRBLCAweDU2MjAsIDB4M0MxRCwgMHg1NjI5LCAweDA1NUUsDQorICAgIDB4NTYyRiwgMHgxMTU1LCAweDU2MzEsIDB4MDlFNCwgMHg1NjMyLCAweDExNTEsIDB4NTYzNCwgMHgxMTRGLA0KKyAgICAweDU2MzYsIDB4MTE1MCwgMHg1NjM3LCAweDM4M0YsIDB4NTYzOCwgMHgxMTUyLCAweDU2M0YsIDB4Mzg0MCwNCisgICAgMHg1NjQyLCAweDA0REYsIDB4NTY0OSwgMHgzODQxLCAweDU2NEIsIDB4Mzg0MiwgMHg1NjRDLCAweDBBQkIsDQorICAgIDB4NTY0RSwgMHgxMTRDLCAweDU2NEYsIDB4Mzg0MywgMHg1NjUwLCAweDExNEQsIDB4NTY1MywgMHgxRjFCLA0KKyAgICAweDU2NUIsIDB4MDVEOCwgMHg1NjY0LCAweDExNTQsIDB4NTY2NiwgMHgzODQ0LCAweDU2NjgsIDB4MDYyQiwNCisgICAgMHg1NjY5LCAweDM4NDUsIDB4NTY2QSwgMHgxMTU3LCAweDU2NkIsIDB4MTE1MywgMHg1NjZDLCAweDExNTYsDQorICAgIDB4NTY2RiwgMHgzODQ2LCAweDU2NzEsIDB4Mzg0NywgMHg1NjcyLCAweDM4NDgsIDB4NTY3NCwgMHgwREZFLA0KKyAgICAweDU2NzYsIDB4M0MzMywgMHg1Njc4LCAweDBDQUQsIDB4NTY3QSwgMHgwRDRDLCAweDU2ODAsIDB4MTE1OSwNCisgICAgMHg1Njg2LCAweDExNTgsIDB4NTY4NywgMHgwNUEzLCAweDU2OEEsIDB4MTE1QSwgMHg1NjhGLCAweDExNUQsDQorICAgIDB4NTY5NCwgMHgxMTVDLCAweDU2OTUsIDB4Mzg0OSwgMHg1Njk5LCAweDFERTYsIDB4NTY5QSwgMHgzODRBLA0KKyAgICAweDU2QTAsIDB4MTE1QiwgMHg1NkEyLCAweDBDRUYsIDB4NTZBNSwgMHgxMTVFLCAweDU2QUMsIDB4Mzg0QiwNCisgICAgMHg1NkFELCAweDM4NEMsIDB4NTZBRSwgMHgxMTVGLCAweDU2QjEsIDB4Mzg0RCwgMHg1NkI0LCAweDExNjEsDQorICAgIDB4NTZCNiwgMHgxMTYwLCAweDU2QkMsIDB4MTE2MywgMHg1NkMwLCAweDExNjYsIDB4NTZDMSwgMHgxMTY0LA0KKyAgICAweDU2QzIsIDB4MTE2MiwgMHg1NkMzLCAweDExNjUsIDB4NTZDOCwgMHgxMTY3LCAweDU2QzksIDB4Mzg0RSwNCisgICAgMHg1NkNBLCAweDFFNUEsIDB4NTZDRSwgMHgxMTY4LCAweDU2RDEsIDB4MTE2OSwgMHg1NkQzLCAweDExNkEsDQorICAgIDB4NTZENywgMHgxMTZCLCAweDU2RDgsIDB4MTA3QywgMHg1NkRBLCAweDA5MjgsIDB4NTZEQiwgMHgwODlCLA0KKyAgICAweDU2REQsIDB4Mzg0RiwgMHg1NkRFLCAweDA1NzMsIDB4NTZFMCwgMHgwNEJDLCAweDU2RTMsIDB4MEI4MiwNCisgICAgMHg1NkU0LCAweDM4NTAsIDB4NTZFRSwgMHgxMTZDLCAweDU2RjAsIDB4MDgxNCwgMHg1NkYyLCAweDA0OTMsDQorICAgIDB4NTZGMywgMHgwQTI0LCAweDU2RjksIDB4MTE2RCwgMHg1NkZBLCAweDA3N0IsIDB4NTZGRCwgMHgwODAzLA0KKyAgICAweDU2RkYsIDB4MTE2RiwgMHg1NzAwLCAweDExNkUsIDB4NTcwMywgMHgwRTMwLCAweDU3MDQsIDB4MTE3MCwNCisgICAgMHg1NzA4LCAweDExNzIsIDB4NTcwOSwgMHgxMTcxLCAweDU3MEEsIDB4Mzg1MSwgMHg1NzBCLCAweDExNzMsDQorICAgIDB4NTcwRCwgMHgxMTc0LCAweDU3MEYsIDB4MDc0RCwgMHg1NzEyLCAweDA1MDIsIDB4NTcxMywgMHgxMTc1LA0KKyAgICAweDU3MTUsIDB4Mzg1MiwgMHg1NzE2LCAweDExNzcsIDB4NTcxOCwgMHgxMTc2LCAweDU3MUMsIDB4MTE3OSwNCisgICAgMHg1NzFGLCAweDBDNTQsIDB4NTcyMSwgMHgzNjgwLCAweDU3MjMsIDB4Mzg1MywgMHg1NzI2LCAweDExN0EsDQorICAgIDB4NTcyNywgMHgwNDc5LCAweDU3MjgsIDB4MDg0RiwgMHg1NzJELCAweDA3MTMsIDB4NTcyRiwgMHgzODU0LA0KKyAgICAweDU3MzAsIDB4MEI4RCwgMHg1NzMzLCAweDM4NTUsIDB4NTczNCwgMHgzODU2LCAweDU3MzcsIDB4MTE3QiwNCisgICAgMHg1NzM4LCAweDExN0MsIDB4NTczQiwgMHgxMTdFLCAweDU3NDAsIDB4MTE3RiwgMHg1NzQyLCAweDA4NTQsDQorICAgIDB4NTc0NywgMHgwNkM5LCAweDU3NEEsIDB4MEU2NSwgMHg1NzRDLCAweDM4NTcsIDB4NTc0RSwgMHgxMTdELA0KKyAgICAweDU3NEYsIDB4MTE4MCwgMHg1NzUwLCAweDA4MzEsIDB4NTc1MSwgMHgwN0I1LCAweDU3NTksIDB4MjBFMCwNCisgICAgMHg1NzYxLCAweDExODQsIDB4NTc2NCwgMHgwODE1LCAweDU3NjUsIDB4MjBFMSwgMHg1NzY2LCAweDBCNzEsDQorICAgIDB4NTc2OSwgMHgxMTgxLCAweDU3NkEsIDB4MEJGNiwgMHg1NzcwLCAweDM4NTgsIDB4NTc3RiwgMHgxMTg1LA0KKyAgICAweDU3ODIsIDB4MEEyOCwgMHg1Nzg4LCAweDExODMsIDB4NTc4OSwgMHgxMTg2LCAweDU3OEIsIDB4MDcxNSwNCisgICAgMHg1NzhDLCAweDM4NTksIDB4NTc5MywgMHgxMTg3LCAweDU3OUMsIDB4Mzg1QSwgMHg1N0EwLCAweDExODgsDQorICAgIDB4NTdBMiwgMHgwN0I2LCAweDU3QTMsIDB4MDU5RSwgMHg1N0E0LCAweDExOEEsIDB4NTdBQSwgMHgxMThCLA0KKyAgICAweDU3QUMsIDB4MjBFMiwgMHg1N0IwLCAweDExOEMsIDB4NTdCMywgMHgxMTg5LCAweDU3QjgsIDB4Mzg1QiwNCisgICAgMHg1N0MwLCAweDExODIsIDB4NTdDMywgMHgxMThELCAweDU3QzYsIDB4MTE4RSwgMHg1N0M3LCAweDIwRTQsDQorICAgIDB4NTdDOCwgMHgyMEUzLCAweDU3Q0IsIDB4MEU5MiwgMHg1N0NFLCAweDA5RDMsIDB4NTdEMiwgMHgxMTkwLA0KKyAgICAweDU3RDMsIDB4MTE5MSwgMHg1N0Q0LCAweDExOEYsIDB4NTdENiwgMHgxMTkzLCAweDU3REMsIDB4MENFRSwNCisgICAgMHg1N0RGLCAweDA0QUMsIDB4NTdFMCwgMHgwREM4LCAweDU3RTMsIDB4MTE5NCwgMHg1N0U2LCAweDM4NUMsDQorICAgIDB4NTdFRCwgMHgzODVELCAweDU3RjQsIDB4MDlFNSwgMHg1N0Y1LCAweDM4NUUsIDB4NTdGNiwgMHgzODVGLA0KKyAgICAweDU3RjcsIDB4MDhFNSwgMHg1N0Y5LCAweDBEMTMsIDB4NTdGQSwgMHgwNjJDLCAweDU3RkMsIDB4MDg1QiwNCisgICAgMHg1N0ZGLCAweDM4NjAsIDB4NTgwMCwgMHgwRTg3LCAweDU4MDIsIDB4MEM4QSwgMHg1ODA1LCAweDA3NEUsDQorICAgIDB4NTgwNiwgMHgwQjJGLCAweDU4MDksIDB4Mzg2MSwgMHg1ODBBLCAweDExOTIsIDB4NTgwQiwgMHgxMTk1LA0KKyAgICAweDU4MTUsIDB4MEIyNCwgMHg1ODE5LCAweDExOTYsIDB4NTgxRCwgMHgxMTk3LCAweDU4MjAsIDB4Mzg2MiwNCisgICAgMHg1ODIxLCAweDExOTksIDB4NTgyNCwgMHgwQzA1LCAweDU4MkEsIDB4MDVFQSwgMHg1ODJGLCAweDFEMzIsDQorICAgIDB4NTgzMCwgMHgwNTAzLCAweDU4MzEsIDB4MEU0MywgMHg1ODMyLCAweDM4NjMsIDB4NTgzNCwgMHgwOUQ0LA0KKyAgICAweDU4MzUsIDB4MEM0MiwgMHg1ODNBLCAweDA4NTYsIDB4NTgzRCwgMHgxMTlGLCAweDU4NDAsIDB4MEUwRCwNCisgICAgMHg1ODQxLCAweDBGQTUsIDB4NTg0QSwgMHgwNTc0LCAweDU4NEIsIDB4MTE5QiwgMHg1ODUxLCAweDBBQkMsDQorICAgIDB4NTg1MiwgMHgxMTlFLCAweDU4NTQsIDB4MEM1RCwgMHg1ODU3LCAweDBDNDMsIDB4NTg1OCwgMHgwQzVFLA0KKyAgICAweDU4NTksIDB4MEQ0RCwgMHg1ODVBLCAweDBCRTksIDB4NTg1RSwgMHgwODM5LCAweDU4NjEsIDB4MUU0NywNCisgICAgMHg1ODYyLCAweDExOUEsIDB4NTg2OSwgMHgwNTE4LCAweDU4NkIsIDB4MEMzMCwgMHg1ODcwLCAweDExOUMsDQorICAgIDB4NTg3MiwgMHgxMTk4LCAweDU4NzUsIDB4MEExNiwgMHg1ODc5LCAweDExQTAsIDB4NTg3QywgMHgzODY0LA0KKyAgICAweDU4N0UsIDB4MDk1OCwgMHg1ODgwLCAweDM4NjUsIDB4NTg4MywgMHgwNkE1LCAweDU4ODUsIDB4MTFBMSwNCisgICAgMHg1ODkzLCAweDBFMzgsIDB4NTg5NywgMHgwQUZGLCAweDU4OUMsIDB4MEJFMiwgMHg1ODlFLCAweDIwRTcsDQorICAgIDB4NTg5RiwgMHgxMUEzLCAweDU4QTgsIDB4MEU3RCwgMHg1OEE5LCAweDM4NjYsIDB4NThBQiwgMHgxMUE0LA0KKyAgICAweDU4QUUsIDB4MTFBOSwgMHg1OEIyLCAweDIwRTgsIDB4NThCMywgMHgwREZGLCAweDU4QjgsIDB4MTFBOCwNCisgICAgMHg1OEI5LCAweDExQTIsIDB4NThCQSwgMHgxMUE1LCAweDU4QkIsIDB4MTFBNywgMHg1OEJFLCAweDA4MTYsDQorICAgIDB4NThDMSwgMHgwRTE5LCAweDU4QzUsIDB4MTFBQSwgMHg1OEM3LCAweDBCODMsIDB4NThDQSwgMHgwNTc1LA0KKyAgICAweDU4Q0MsIDB4MDlENSwgMHg1OENFLCAweDM4NjcsIDB4NThEMCwgMHgzODY4LCAweDU4RDEsIDB4MTFBQywNCisgICAgMHg1OEQzLCAweDExQUIsIDB4NThENCwgMHgzODY5LCAweDU4RDUsIDB4MDdGQSwgMHg1OEQ3LCAweDExQUQsDQorICAgIDB4NThEOCwgMHgxMUFGLCAweDU4RDksIDB4MTFBRSwgMHg1OERBLCAweDM4NkEsIDB4NThEQywgMHgxMUIxLA0KKyAgICAweDU4REUsIDB4MTFBNiwgMHg1OERGLCAweDExQjMsIDB4NThFNCwgMHgxMUIyLCAweDU4RTUsIDB4MTFCMCwNCisgICAgMHg1OEU5LCAweDM4NkIsIDB4NThFQiwgMHgwODlDLCAweDU4RUMsIDB4MEExNywgMHg1OEVFLCAweDBBRDYsDQorICAgIDB4NThFRiwgMHgxMUI0LCAweDU4RjAsIDB4MEE2MCwgMHg1OEYxLCAweDA0QjEsIDB4NThGMiwgMHgwRDFBLA0KKyAgICAweDU4RjcsIDB4MEJGNywgMHg1OEY5LCAweDExQjYsIDB4NThGQSwgMHgxMUI1LCAweDU4RkIsIDB4MTFCNywNCisgICAgMHg1OEZDLCAweDExQjgsIDB4NThGRCwgMHgxMUI5LCAweDU5MDIsIDB4MTFCQSwgMHg1OTA5LCAweDBFMjEsDQorICAgIDB4NTkwQSwgMHgxMUJCLCAweDU5MEIsIDB4MjBFOSwgMHg1OTBDLCAweDM4NkMsIDB4NTkwRiwgMHgwNTQ2LA0KKyAgICAweDU5MTAsIDB4MTFCQywgMHg1OTE1LCAweDBGMjYsIDB4NTkxNiwgMHgwNThFLCAweDU5MTgsIDB4MTBERSwNCisgICAgMHg1OTE5LCAweDA5NTIsIDB4NTkxQSwgMHgwQjFGLCAweDU5MUIsIDB4MTFCRCwgMHg1OTFDLCAweDBFRjcsDQorICAgIDB4NTkyMiwgMHgwRUMwLCAweDU5MjQsIDB4Mzg2RCwgMHg1OTI1LCAweDExQkYsIDB4NTkyNywgMHgwQjQ3LA0KKyAgICAweDU5MjksIDB4MEMzMSwgMHg1OTJBLCAweDBCMjAsIDB4NTkyQiwgMHgwREM5LCAweDU5MkMsIDB4MTFDMCwNCisgICAgMHg1OTJELCAweDExQzEsIDB4NTkyRSwgMHgwNTFELCAweDU5MkYsIDB4Mzg2RSwgMHg1OTMxLCAweDA4RTYsDQorICAgIDB4NTkzMiwgMHgxMUMyLCAweDU5MzcsIDB4MDQ5NCwgMHg1OTM4LCAweDExQzMsIDB4NTkzOSwgMHgzNzI1LA0KKyAgICAweDU5M0UsIDB4MTFDNCwgMHg1OTQ0LCAweDA1MDQsIDB4NTk0NywgMHgwNjJELCAweDU5NDgsIDB4MENCOCwNCisgICAgMHg1OTQ5LCAweDBFNDQsIDB4NTk0RSwgMHgxMUM4LCAweDU5NEYsIDB4MEFENywgMHg1OTUwLCAweDExQzcsDQorICAgIDB4NTk1MSwgMHgwNzE2LCAweDU5NTMsIDB4MjBFQSwgMHg1OTU0LCAweDBFODksIDB4NTk1NSwgMHgxMUM2LA0KKyAgICAweDU5NTcsIDB4MEM1RiwgMHg1OTU4LCAweDExQ0EsIDB4NTk1QSwgMHgxMUM5LCAweDU5NUIsIDB4MjBFQiwNCisgICAgMHg1OTVELCAweDIwRUMsIDB4NTk2MCwgMHgxMUNDLCAweDU5NjEsIDB4Mzg2RiwgMHg1OTYyLCAweDExQ0IsDQorICAgIDB4NTk2MywgMHgyMEVELCAweDU5NjUsIDB4MDUxRSwgMHg1OTY3LCAweDExQ0QsIDB4NTk2OCwgMHgwOTkxLA0KKyAgICAweDU5NjksIDB4MTFDRiwgMHg1OTZBLCAweDBCNjMsIDB4NTk2QywgMHgxMUNFLCAweDU5NkQsIDB4Mzg3MCwNCisgICAgMHg1OTZFLCAweDBFMDMsIDB4NTk3MywgMHgwOTgxLCAweDU5NzQsIDB4MEM1NSwgMHg1OTc4LCAweDExRDAsDQorICAgIDB4NTk3RCwgMHgwN0I3LCAweDU5ODEsIDB4MTFEMSwgMHg1OTgyLCAweDBDRDcsIDB4NTk4MywgMHgwRDcyLA0KKyAgICAweDU5ODQsIDB4MEVERCwgMHg1OThBLCAweDBDREIsIDB4NTk4RCwgMHgxMURBLCAweDU5OTMsIDB4MDY1MiwNCisgICAgMHg1OTk2LCAweDBGMkYsIDB4NTk5OSwgMHgwRUJCLCAweDU5OUIsIDB4MTIzOSwgMHg1OTlELCAweDExRDIsDQorICAgIDB4NTlBMywgMHgxMUQ1LCAweDU5QTQsIDB4MjBFRSwgMHg1OUE1LCAweDBCMjUsIDB4NTlBOCwgMHgwRTY2LA0KKyAgICAweDU5QUMsIDB4MEM0NCwgMHg1OUIyLCAweDExRDYsIDB4NTlCOSwgMHgwRTkzLCAweDU5QkEsIDB4MjBFRiwNCisgICAgMHg1OUJCLCAweDA4M0EsIDB4NTlCRSwgMHgwOTkyLCAweDU5QzYsIDB4MTFENywgMHg1OUM5LCAweDA4OUUsDQorICAgIDB4NTlDQSwgMHgzODcxLCAweDU5Q0IsIDB4MDg5RCwgMHg1OUQwLCAweDA0N0QsIDB4NTlEMSwgMHgwNzdDLA0KKyAgICAweDU5RDIsIDB4Mzg3MiwgMHg1OUQzLCAweDBBNEYsIDB4NTlENCwgMHgwNDk1LCAweDU5RDksIDB4MTFEQiwNCisgICAgMHg1OURBLCAweDExREMsIDB4NTlEQywgMHgxMUQ5LCAweDU5REQsIDB4Mzg3MywgMHg1OUUzLCAweDM4NzQsDQorICAgIDB4NTlFNCwgMHgzODc1LCAweDU5RTUsIDB4MDREQSwgMHg1OUU2LCAweDA1RUIsIDB4NTlFOCwgMHgxMUQ4LA0KKyAgICAweDU5RUEsIDB4MEVEMSwgMHg1OUVCLCAweDBEQTMsIDB4NTlFQywgMHgzNkFELCAweDU5RjYsIDB4MDQ2QywNCisgICAgMHg1OUZCLCAweDA0QkQsIDB4NTlGRiwgMHgwODlGLCAweDVBMDEsIDB4MDQ5NiwgMHg1QTAzLCAweDA0NjcsDQorICAgIDB4NUEwNCwgMHgzODc2LCAweDVBMDksIDB4MTFFMSwgMHg1QTBDLCAweDM4NzcsIDB4NUExMSwgMHgxMURGLA0KKyAgICAweDVBMTgsIDB4MEVDOCwgMHg1QTFBLCAweDExRTIsIDB4NUExQiwgMHgzNUMxLCAweDVBMUMsIDB4MTFFMCwNCisgICAgMHg1QTFGLCAweDExREUsIDB4NUEyMCwgMHgwOUY3LCAweDVBMjMsIDB4Mzg3OCwgMHg1QTI1LCAweDExREQsDQorICAgIDB4NUEyOSwgMHgwRTJBLCAweDVBMkYsIDB4MDc5OCwgMHg1QTM1LCAweDExRTYsIDB4NUEzNiwgMHgxMUU3LA0KKyAgICAweDVBM0MsIDB4MDk5MywgMHg1QTQwLCAweDExRTMsIDB4NUE0MSwgMHgwRkQyLCAweDVBNDYsIDB4MEQwMiwNCisgICAgMHg1QTQ3LCAweDM4NzksIDB4NUE0OSwgMHgxMUU1LCAweDVBNTUsIDB4Mzg3QSwgMHg1QTVBLCAweDA4MTcsDQorICAgIDB4NUE2MiwgMHgxMUU4LCAweDVBNjMsIDB4Mzg3QiwgMHg1QTY2LCAweDBEQ0EsIDB4NUE2QSwgMHgxMUU5LA0KKyAgICAweDVBNkMsIDB4MTFFNCwgMHg1QTZELCAweDM4N0MsIDB4NUE3RSwgMHgzODdELCAweDVBN0YsIDB4MEVDNywNCisgICAgMHg1QTkyLCAweDBEMTQsIDB4NUE5QSwgMHgxMUVBLCAweDVBOUIsIDB4MERBNCwgMHg1QTlFLCAweDM4N0UsDQorICAgIDB4NUFBNywgMHgzODdGLCAweDVBQUMsIDB4Mzg4MCwgMHg1QUIzLCAweDM4ODEsIDB4NUFCQywgMHgxMUVCLA0KKyAgICAweDVBQkQsIDB4MTFFRiwgMHg1QUJFLCAweDExRUMsIDB4NUFDMSwgMHgwNTQ3LCAweDVBQzIsIDB4MTFFRSwNCisgICAgMHg1QUM5LCAweDA4RTcsIDB4NUFDQiwgMHgxMUVELCAweDVBQ0MsIDB4MDc0RiwgMHg1QUQwLCAweDExRkIsDQorICAgIDB4NUFENiwgMHgxMUY0LCAweDVBRDcsIDB4MTFGMSwgMHg1QUUwLCAweDM4ODIsIDB4NUFFMSwgMHgwQkEyLA0KKyAgICAweDVBRTMsIDB4MTFGMCwgMHg1QUU2LCAweDExRjIsIDB4NUFFOSwgMHgxMUYzLCAweDVBRkEsIDB4MTFGNSwNCisgICAgMHg1QUZCLCAweDExRjYsIDB4NUIwMCwgMHgzODgzLCAweDVCMDksIDB4MDYyRSwgMHg1QjBCLCAweDExRjgsDQorICAgIDB4NUIwQywgMHgxMUY3LCAweDVCMTYsIDB4MTFGOSwgMHg1QjE5LCAweDM4ODQsIDB4NUIyMiwgMHgwOUQ2LA0KKyAgICAweDVCMjUsIDB4Mzg4NSwgMHg1QjJBLCAweDExRkMsIDB4NUIyQywgMHgwQkY4LCAweDVCMkQsIDB4Mzg4NiwNCisgICAgMHg1QjMwLCAweDA0RTcsIDB4NUIzMiwgMHgxMUZBLCAweDVCMzYsIDB4MTFGRCwgMHg1QjNFLCAweDExRkUsDQorICAgIDB4NUI0MCwgMHgxMjAxLCAweDVCNDEsIDB4Mzg4NywgMHg1QjQzLCAweDExRkYsIDB4NUI0NSwgMHgxMjAwLA0KKyAgICAweDVCNTAsIDB4MDhBMCwgMHg1QjUxLCAweDEyMDIsIDB4NUI1NCwgMHgwN0I4LCAweDVCNTUsIDB4MTIwMywNCisgICAgMHg1QjU2LCAweDIwRjAsIDB4NUI1NywgMHgwOEM4LCAweDVCNTgsIDB4MEIxOCwgMHg1QjVBLCAweDEyMDQsDQorICAgIDB4NUI1QiwgMHgxMjA1LCAweDVCNUMsIDB4MDhBOCwgMHg1QjVELCAweDA3QjksIDB4NUI1RiwgMHgwRURFLA0KKyAgICAweDVCNjMsIDB4MDY0MiwgMHg1QjY0LCAweDA3N0QsIDB4NUI2NSwgMHgxMjA2LCAweDVCNjYsIDB4MDVCNiwNCisgICAgMHg1QjY5LCAweDEyMDcsIDB4NUI2QiwgMHgwQjE5LCAweDVCNzAsIDB4MTIwOCwgMHg1QjcxLCAweDEyMzAsDQorICAgIDB4NUI3MywgMHgxMjA5LCAweDVCNzUsIDB4MTIwQSwgMHg1Qjc4LCAweDEyMEIsIDB4NUI3QSwgMHgxMjBELA0KKyAgICAweDVCN0MsIDB4Mzg4OCwgMHg1QjdFLCAweDM4ODksIDB4NUI3RiwgMHgzODhBLCAweDVCODAsIDB4MTIwRSwNCisgICAgMHg1QjgyLCAweDM2MTAsIDB4NUI4MywgMHgxMjBGLCAweDVCODUsIDB4MEI1MCwgMHg1Qjg3LCAweDA0QzksDQorICAgIDB4NUI4OCwgMHgwOTE1LCAweDVCODksIDB4MDQ4NiwgMHg1QjhBLCAweDM4OEIsIDB4NUI4QiwgMHgwQUQ5LA0KKyAgICAweDVCOEMsIDB4MDVFQywgMHg1QjhELCAweDA4RTEsIDB4NUI4RiwgMHgwN0JBLCAweDVCOTUsIDB4MEM2MCwNCisgICAgMHg1Qjk3LCAweDA5MkIsIDB4NUI5OCwgMHgwNUVELCAweDVCOTksIDB4MEJBNiwgMHg1QjlBLCAweDBDMDYsDQorICAgIDB4NUI5QiwgMHgwNDdDLCAweDVCOUMsIDB4MDY1MywgMHg1QjlELCAweDBFNDUsIDB4NUI5RiwgMHgwOEVFLA0KKyAgICAweDVCQTIsIDB4MDY2QywgMHg1QkEzLCAweDBBOEYsIDB4NUJBNCwgMHgwOEU4LCAweDVCQTUsIDB4MEYxMiwNCisgICAgMHg1QkE2LCAweDEyMTAsIDB4NUJBRSwgMHgwNjc2LCAweDVCQjAsIDB4MDgzQiwgMHg1QkIzLCAweDA1OTAsDQorICAgIDB4NUJCNCwgMHgwNTA1LCAweDVCQjUsIDB4MDk5NCwgMHg1QkI2LCAweDA1NDgsIDB4NUJCOCwgMHgxMjExLA0KKyAgICAweDVCQjksIDB4MEYzMCwgMHg1QkJGLCAweDA5NTMsIDB4NUJDMCwgMHgyMEYxLCAweDVCQzIsIDB4MDkxMCwNCisgICAgMHg1QkMzLCAweDEyMTIsIDB4NUJDNCwgMHgwNjJGLCAweDVCQzUsIDB4MENBQSwgMHg1QkM2LCAweDBFQjUsDQorICAgIDB4NUJDNywgMHgxMjEzLCAweDVCQzksIDB4MTIxNCwgMHg1QkNDLCAweDBEQ0IsIDB4NUJEMCwgMHgxMjE2LA0KKyAgICAweDVCRDIsIDB4MDVFNCwgMHg1QkQzLCAweDA2RUYsIDB4NUJENCwgMHgxMjE1LCAweDVCRDgsIDB4MjBGMywNCisgICAgMHg1QkRCLCAweDA1RUUsIDB4NUJERCwgMHgwOUY4LCAweDVCREUsIDB4MTIxQSwgMHg1QkRGLCAweDA4NkYsDQorICAgIDB4NUJFMSwgMHgwNTQ5LCAweDVCRTIsIDB4MTIxOSwgMHg1QkU0LCAweDEyMTcsIDB4NUJFNSwgMHgxMjFCLA0KKyAgICAweDVCRTYsIDB4MTIxOCwgMHg1QkU3LCAweDBDRTEsIDB4NUJFOCwgMHgxNDhFLCAweDVCRTksIDB4MDlGOSwNCisgICAgMHg1QkVCLCAweDEyMUMsIDB4NUJFQywgMHgyMEY0LCAweDVCRUUsIDB4MEY4OCwgMHg1QkYwLCAweDEyMUQsDQorICAgIDB4NUJGMywgMHgxMjFGLCAweDVCRjUsIDB4MEJCQywgMHg1QkY2LCAweDEyMUUsIDB4NUJGOCwgMHgwQTQ3LA0KKyAgICAweDVCRkEsIDB4MDhDOSwgMHg1QkZFLCAweDBCMzAsIDB4NUJGRiwgMHgwOTIzLCAweDVDMDEsIDB4MERFNywNCisgICAgMHg1QzAyLCAweDBBOTAsIDB4NUMwNCwgMHgwOEY5LCAweDVDMDUsIDB4MTIyMCwgMHg1QzA2LCAweDA5OTUsDQorICAgIDB4NUMwNywgMHgxMjIxLCAweDVDMDgsIDB4MTIyMiwgMHg1QzA5LCAweDA0OTcsIDB4NUMwQSwgMHgwQjFBLA0KKyAgICAweDVDMEIsIDB4MEExOCwgMHg1QzBELCAweDEyMjMsIDB4NUMwRSwgMHgwQzhCLCAweDVDMEYsIDB4MDk5NiwNCisgICAgMHg1QzExLCAweDA5OTcsIDB4NUMxMywgMHgxMjI0LCAweDVDMTQsIDB4MzcyQSwgMHg1QzE2LCAweDBBOTEsDQorICAgIDB4NUMxOSwgMHgzNjBCLCAweDVDMUEsIDB4MDk5OCwgMHg1QzFFLCAweDIwRjUsIDB4NUMyMCwgMHgxMjI1LA0KKyAgICAweDVDMjIsIDB4MTIyNiwgMHg1QzIzLCAweDM4OEMsIDB4NUMyNCwgMHgwRUVDLCAweDVDMjgsIDB4MTIyNywNCisgICAgMHg1QzJCLCAweDM4OEQsIDB4NUMyRCwgMHgwNkJFLCAweDVDMzAsIDB4Mzg4RSwgMHg1QzMxLCAweDA5MkMsDQorICAgIDB4NUMzOCwgMHgxMjI4LCAweDVDMzksIDB4MTIyOSwgMHg1QzNBLCAweDA5MDgsIDB4NUMzQiwgMHgwOUYyLA0KKyAgICAweDVDM0MsIDB4MENDQywgMHg1QzNELCAweDBBMUEsIDB4NUMzRSwgMHgwRDhDLCAweDVDM0YsIDB4MENEOCwNCisgICAgMHg1QzQwLCAweDA2QzEsIDB4NUM0MSwgMHgxMjJBLCAweDVDNDUsIDB4MDY4OSwgMHg1QzQ2LCAweDEyMkIsDQorICAgIDB4NUM0OCwgMHgwNkY2LCAweDVDNEEsIDB4MENBNywgMHg1QzRCLCAweDA1MzAsIDB4NUM0RCwgMHgwOEExLA0KKyAgICAweDVDNEUsIDB4MTIyQywgMHg1QzRGLCAweDEyMkYsIDB4NUM1MCwgMHgxMjJFLCAweDVDNTEsIDB4MDZGNSwNCisgICAgMHg1QzUzLCAweDEyMkQsIDB4NUM1NSwgMHgwQzMyLCAweDVDNUIsIDB4MUU5MiwgMHg1QzVFLCAweDBCMTAsDQorICAgIDB4NUM2MCwgMHgwQzQ1LCAweDVDNjEsIDB4MDhGNCwgMHg1QzYyLCAweDFFMEQsIDB4NUM2MywgMHgzODhGLA0KKyAgICAweDVDNjQsIDB4MEFEQSwgMHg1QzY1LCAweDBGNjQsIDB4NUM2OSwgMHgzODkwLCAweDVDNkMsIDB4MTIzMSwNCisgICAgMHg1QzZFLCAweDEyMzIsIDB4NUM2RiwgMHgwQ0FFLCAweDVDNzEsIDB4MDg4MSwgMHg1Qzc2LCAweDEyMzQsDQorICAgIDB4NUM3OSwgMHgxMjM1LCAweDVDN0MsIDB4Mzg5MSwgMHg1QzhDLCAweDEyMzYsIDB4NUM5MCwgMHgwNjMwLA0KKyAgICAweDVDOTEsIDB4MTIzNywgMHg1Qzk0LCAweDEyMzgsIDB4NUNBMSwgMHgwNTJDLCAweDVDQTYsIDB4MjBGNiwNCisgICAgMHg1Q0E4LCAweDBBQkQsIDB4NUNBOSwgMHgwNjIwLCAweDVDQUIsIDB4MTIzQSwgMHg1Q0FDLCAweDBFQjQsDQorICAgIDB4NUNCMSwgMHgwQjMyLCAweDVDQjMsIDB4MDVCNywgMHg1Q0I2LCAweDEyM0MsIDB4NUNCNywgMHgxMjNFLA0KKyAgICAweDVDQjgsIDB4MDYxQiwgMHg1Q0JBLCAweDIwRjcsIDB4NUNCQiwgMHgxMjNCLCAweDVDQkMsIDB4MTIzRCwNCisgICAgMHg1Q0JFLCAweDEyNDAsIDB4NUNDNSwgMHgxMjNGLCAweDVDQzcsIDB4MTI0MSwgMHg1Q0NCLCAweDM4OTIsDQorICAgIDB4NUNEMiwgMHgzODkzLCAweDVDRDksIDB4MTI0MiwgMHg1Q0UwLCAweDBDOTUsIDB4NUNFMSwgMHgwNkE2LA0KKyAgICAweDVDRTYsIDB4MzcyQywgMHg1Q0U4LCAweDA1NjUsIDB4NUNFOSwgMHgxMjQzLCAweDVDRUEsIDB4MTI0OCwNCisgICAgMHg1Q0VELCAweDEyNDYsIDB4NUNFRiwgMHgwRTQ3LCAweDVDRjAsIDB4MEU0NiwgMHg1Q0Y0LCAweDM4OTQsDQorICAgIDB4NUNGNSwgMHgyMEY4LCAweDVDRjYsIDB4MEM2MSwgMHg1Q0ZBLCAweDEyNDUsIDB4NUNGQiwgMHgwOTVFLA0KKyAgICAweDVDRkQsIDB4MTI0NCwgMHg1RDA3LCAweDBBMzgsIDB4NUQwQiwgMHgxMjQ5LCAweDVEMEUsIDB4MDg1QSwNCisgICAgMHg1RDExLCAweDEyNEYsIDB4NUQxNCwgMHgxMjUwLCAweDVEMTUsIDB4MTI0QSwgMHg1RDE2LCAweDA1OTEsDQorICAgIDB4NUQxNywgMHgxMjRCLCAweDVEMTgsIDB4MTI1NCwgMHg1RDE5LCAweDEyNTMsIDB4NUQxQSwgMHgxMjUyLA0KKyAgICAweDVEMUIsIDB4MTI0RSwgMHg1RDFGLCAweDEyNEQsIDB4NUQyMiwgMHgxMjUxLCAweDVEMjQsIDB4Mzg5NSwNCisgICAgMHg1RDI2LCAweDM4OTYsIDB4NUQyNywgMHgyMEY5LCAweDVEMjksIDB4MEU0OCwgMHg1RDQyLCAweDIwRkMsDQorICAgIDB4NUQ0MywgMHgzODk3LCAweDVENDYsIDB4Mzg5OCwgMHg1RDRBLCAweDM4OTksIDB4NUQ0QiwgMHgxMjU4LA0KKyAgICAweDVENEMsIDB4MTI1NSwgMHg1RDRFLCAweDEyNTcsIDB4NUQ1MCwgMHgwRjVDLCAweDVENTIsIDB4MTI1NiwNCisgICAgMHg1RDUzLCAweDIwRkEsIDB4NUQ1QywgMHgxMjRDLCAweDVENjksIDB4MEEzOSwgMHg1RDZDLCAweDEyNTksDQorICAgIDB4NUQ2RCwgMHgyMEZELCAweDVENkYsIDB4MDgyNywgMHg1RDczLCAweDEyNUEsIDB4NUQ3NiwgMHgxMjVCLA0KKyAgICAweDVEODIsIDB4MTI1RSwgMHg1RDg0LCAweDEyNUQsIDB4NUQ4NywgMHgxMjVDLCAweDVEOEIsIDB4MEM2MiwNCisgICAgMHg1RDhDLCAweDEyNDcsIDB4NUQ5MCwgMHgxMjY0LCAweDVEOTIsIDB4Mzg5QSwgMHg1RDk0LCAweDM4OUIsDQorICAgIDB4NUQ5OSwgMHgzODlDLCAweDVEOUQsIDB4MTI2MCwgMHg1REEwLCAweDM4OUQsIDB4NURBMiwgMHgxMjVGLA0KKyAgICAweDVEQUMsIDB4MTI2MSwgMHg1REFFLCAweDEyNjIsIDB4NURCMiwgMHgzQkE1LCAweDVEQjcsIDB4MTI2NSwNCisgICAgMHg1REI4LCAweDIwRkUsIDB4NURCOSwgMHgyMEZGLCAweDVEQkEsIDB4MEZBRSwgMHg1REJDLCAweDEyNjYsDQorICAgIDB4NURCRCwgMHgxMjYzLCAweDVEQzksIDB4MTI2NywgMHg1RENDLCAweDA2MUMsIDB4NURDRCwgMHgxMjY4LA0KKyAgICAweDVERDAsIDB4MjEwMCwgMHg1REQyLCAweDEyNkEsIDB4NUREMywgMHgxMjY5LCAweDVERDYsIDB4MTI2QiwNCisgICAgMHg1REQ4LCAweDM4OUUsIDB4NUREQiwgMHgxMjZDLCAweDVEREQsIDB4MEE5MiwgMHg1RERFLCAweDA5MkQsDQorICAgIDB4NURFMCwgMHgzODlGLCAweDVERTEsIDB4MDk2RSwgMHg1REUyLCAweDM0MzIsIDB4NURFMywgMHgwQUU1LA0KKyAgICAweDVERTUsIDB4MDdCQiwgMHg1REU2LCAweDA4MjgsIDB4NURFNywgMHgwN0JDLCAweDVERTgsIDB4MDY4QSwNCisgICAgMHg1REVCLCAweDEyNkQsIDB4NURFRSwgMHgwODI5LCAweDVERjEsIDB4MDc3RSwgMHg1REYyLCAweDEyNkUsDQorICAgIDB4NURGMywgMHgwRUIyLCAweDVERjQsIDB4MENGOSwgMHg1REY1LCAweDEyNkYsIDB4NURGNywgMHgwN0JELA0KKyAgICAweDVERjgsIDB4MzhBMCwgMHg1REZCLCAweDA1RTgsIDB4NURGRCwgMHgwQjY1LCAweDVERkUsIDB4MDZDQSwNCisgICAgMHg1REZGLCAweDM1RTIsIDB4NUUwMCwgMHgzOEExLCAweDVFMDIsIDB4MDhBMiwgMHg1RTAzLCAweDBEQ0QsDQorICAgIDB4NUUwNiwgMHgwRDU1LCAweDVFMEIsIDB4MTI3MCwgMHg1RTBDLCAweDA2MzEsIDB4NUUxMSwgMHgxMjczLA0KKyAgICAweDVFMTIsIDB4MzhBMiwgMHg1RTE0LCAweDM4QTMsIDB4NUUxNSwgMHgzOEE0LCAweDVFMTYsIDB4MEJCRCwNCisgICAgMHg1RTE4LCAweDM4QTUsIDB4NUUxOSwgMHgxMjcyLCAweDVFMUEsIDB4MTI3MSwgMHg1RTFCLCAweDEyNzQsDQorICAgIDB4NUUxRCwgMHgwQzA3LCAweDVFMjUsIDB4MEEyOSwgMHg1RTJCLCAweDA4QTMsIDB4NUUyRCwgMHgwQTZFLA0KKyAgICAweDVFMkUsIDB4MzhBNiwgMHg1RTJGLCAweDBCMzMsIDB4NUUzMCwgMHgwNjNDLCAweDVFMzMsIDB4MEJCRSwNCisgICAgMHg1RTM2LCAweDEyNzUsIDB4NUUzNywgMHgxMjc2LCAweDVFMzgsIDB4MDlENywgMHg1RTNELCAweDBFNjcsDQorICAgIDB4NUU0MCwgMHgxMjc5LCAweDVFNDMsIDB4MTI3OCwgMHg1RTQ0LCAweDEyNzcsIDB4NUU0NSwgMHgwREVGLA0KKyAgICAweDVFNDcsIDB4MTI4MCwgMHg1RTRDLCAweDBFODgsIDB4NUU0RSwgMHgxMjdBLCAweDVFNTQsIDB4MTI3QywNCisgICAgMHg1RTU1LCAweDBFOTksIDB4NUU1NywgMHgxMjdCLCAweDVFNTgsIDB4MzhBNywgMHg1RTVGLCAweDEyN0QsDQorICAgIDB4NUU2MSwgMHgwRDNDLCAweDVFNjIsIDB4MTI3RSwgMHg1RTYzLCAweDBFMEUsIDB4NUU2NCwgMHgxMjdGLA0KKyAgICAweDVFNkIsIDB4MzhBOCwgMHg1RTZDLCAweDM4QTksIDB4NUU3MiwgMHgwNUVGLCAweDVFNzMsIDB4MEUwRiwNCisgICAgMHg1RTc0LCAweDBDRTUsIDB4NUU3NSwgMHgxMjgxLCAweDVFNzYsIDB4MTI4MiwgMHg1RTc4LCAweDA3QkUsDQorICAgIDB4NUU3OSwgMHgwNUYwLCAweDVFN0EsIDB4MTI4MywgMHg1RTdCLCAweDA3NkMsIDB4NUU3QywgMHgwRjJFLA0KKyAgICAweDVFN0QsIDB4MEYxMywgMHg1RTdFLCAweDA2MzIsIDB4NUU3RiwgMHgxMjg1LCAweDVFODEsIDB4MEJCRiwNCisgICAgMHg1RTgzLCAweDA3QkYsIDB4NUU4NCwgMHgwOTk5LCAweDVFODcsIDB4MEQ3MywgMHg1RThBLCAweDA5OUEsDQorICAgIDB4NUU4RiwgMHgwOTgyLCAweDVFOTUsIDB4MEMwOCwgMHg1RTk2LCAweDBFNDksIDB4NUU5NywgMHgwQzMzLA0KKyAgICAweDVFOTksIDB4MzZCMCwgMHg1RTlBLCAweDA3QzAsIDB4NUU5QywgMHgwRENFLCAweDVFQTAsIDB4MTI4NiwNCisgICAgMHg1RUE2LCAweDBDNTMsIDB4NUVBNywgMHgwODMyLCAweDVFQTgsIDB4MzhBQSwgMHg1RUFBLCAweDM4QUIsDQorICAgIDB4NUVBQiwgMHgwNzdGLCAweDVFQUQsIDB4MEMwOSwgMHg1RUI1LCAweDA0ODcsIDB4NUVCNiwgMHgwOTc4LA0KKyAgICAweDVFQjcsIDB4MDdDMSwgMHg1RUI4LCAweDBGMzEsIDB4NUVCRSwgMHgzOEFDLCAweDVFQkYsIDB4MzhBRCwNCisgICAgMHg1RUMxLCAweDEyODcsIDB4NUVDMiwgMHgxMjg4LCAweDVFQzMsIDB4MEQwNywgMHg1RUM4LCAweDEyODksDQorICAgIDB4NUVDOSwgMHgwRkJGLCAweDVFQ0EsIDB4MEZEMywgMHg1RUNCLCAweDM4QUUsIDB4NUVDRiwgMHgxMjhCLA0KKyAgICAweDVFRDAsIDB4MTI4QSwgMHg1RUQyLCAweDM4QUYsIDB4NUVEMywgMHgwNUE1LCAweDVFRDYsIDB4MTI4QywNCisgICAgMHg1RURBLCAweDEyOEYsIDB4NUVEQiwgMHgxMjkwLCAweDVFREQsIDB4MTI4RSwgMHg1RURGLCAweDBEQjIsDQorICAgIDB4NUVFMCwgMHgwOTlCLCAweDVFRTEsIDB4MTI5MiwgMHg1RUUyLCAweDEyOTEsIDB4NUVFMywgMHgxMjhELA0KKyAgICAweDVFRTgsIDB4MTI5MywgMHg1RUU5LCAweDEyOTQsIDB4NUVFQywgMHgxMjk1LCAweDVFRjAsIDB4MTI5OCwNCisgICAgMHg1RUYxLCAweDEyOTYsIDB4NUVGMywgMHgxMjk3LCAweDVFRjQsIDB4MTI5OSwgMHg1RUY2LCAweDA1MDYsDQorICAgIDB4NUVGNywgMHgwQzBBLCAweDVFRjgsIDB4MTI5QSwgMHg1RUZBLCAweDA3NTAsIDB4NUVGQiwgMHgwNTc2LA0KKyAgICAweDVFRkMsIDB4MENFQywgMHg1RUZFLCAweDEyOUIsIDB4NUVGRiwgMHgwQ0QzLCAweDVGMDEsIDB4MEUyQiwNCisgICAgMHg1RjAzLCAweDEyOUMsIDB4NUYwNCwgMHgwRkQ0LCAweDVGMDcsIDB4MzhCMCwgMHg1RjA5LCAweDEyOUQsDQorICAgIDB4NUYwQSwgMHgwRTEwLCAweDVGMEIsIDB4MTJBMCwgMHg1RjBDLCAweDBGRkEsIDB4NUYwRCwgMHgxMDBBLA0KKyAgICAweDVGMEUsIDB4MzhCMSwgMHg1RjBGLCAweDA4REMsIDB4NUYxMCwgMHgwQ0NELCAweDVGMTEsIDB4MTJBMSwNCisgICAgMHg1RjEzLCAweDA2NzcsIDB4NUYxNCwgMHgwQkMwLCAweDVGMTUsIDB4MDRCRSwgMHg1RjE2LCAweDEyQTIsDQorICAgIDB4NUYxNywgMHgwREY2LCAweDVGMTgsIDB4MDdDMiwgMHg1RjFCLCAweDBCOEUsIDB4NUYxQywgMHgzOEIyLA0KKyAgICAweDVGMUQsIDB4MzhCMywgMHg1RjFGLCAweDBDMEIsIDB4NUYyMSwgMHgyMTAxLCAweDVGMjIsIDB4MzhCNCwNCisgICAgMHg1RjI1LCAweDBFRkIsIDB4NUYyNiwgMHgwNzZELCAweDVGMjcsIDB4MDc4MCwgMHg1RjI4LCAweDM4QjUsDQorICAgIDB4NUYyOSwgMHgxMkEzLCAweDVGMkQsIDB4MTJBNCwgMHg1RjJGLCAweDEyQUEsIDB4NUYzMSwgMHgwOTExLA0KKyAgICAweDVGMzQsIDB4MjEwMiwgMHg1RjM1LCAweDBCQzEsIDB4NUYzNiwgMHgzOEI2LCAweDVGMzcsIDB4MDZBNywNCisgICAgMHg1RjM4LCAweDEyQTUsIDB4NUYzQSwgMHgzNTk4LCAweDVGM0IsIDB4MzhCNywgMHg1RjNDLCAweDBEOUQsDQorICAgIDB4NUYzRSwgMHgwQjg0LCAweDVGNDAsIDB4MzhCOCwgMHg1RjQxLCAweDEyQTYsIDB4NUY0NSwgMHgyMEIyLA0KKyAgICAweDVGNDgsIDB4MTJBNywgMHg1RjRBLCAweDA2QTgsIDB4NUY0QywgMHgxMkE4LCAweDVGNEUsIDB4MTJBOSwNCisgICAgMHg1RjUwLCAweDM4QjksIDB4NUY1MSwgMHgxMkFCLCAweDVGNTMsIDB4MEM3MCwgMHg1RjU2LCAweDEyQUMsDQorICAgIDB4NUY1NywgMHgxMkFELCAweDVGNTgsIDB4MzhCQSwgMHg1RjU5LCAweDEyQUUsIDB4NUY1QywgMHgxMjlGLA0KKyAgICAweDVGNUQsIDB4MTI5RSwgMHg1RjYxLCAweDEyQUYsIDB4NUY2MiwgMHgwNzE3LCAweDVGNjQsIDB4MzhCQiwNCisgICAgMHg1RjY1LCAweDM2QUMsIDB4NUY2NiwgMHgwRDk5LCAweDVGNjcsIDB4MjEwMywgMHg1RjY5LCAweDA4M0MsDQorICAgIDB4NUY2QSwgMHgwREE5LCAweDVGNkIsIDB4MEJDMiwgMHg1RjZDLCAweDBEQkQsIDB4NUY2RCwgMHgxMkIwLA0KKyAgICAweDVGNzAsIDB4MDk5QywgMHg1RjcxLCAweDA0RTgsIDB4NUY3MywgMHgxMkIxLCAweDVGNzcsIDB4MTJCMiwNCisgICAgMHg1Rjc5LCAweDBFRkUsIDB4NUY3QywgMHgwRDc0LCAweDVGN0YsIDB4MTJCNSwgMHg1RjgwLCAweDA1MUYsDQorICAgIDB4NUY4MSwgMHgwQTUwLCAweDVGODIsIDB4MTJCNCwgMHg1RjgzLCAweDEyQjMsIDB4NUY4NCwgMHgwNzE4LA0KKyAgICAweDVGODUsIDB4MEIzNCwgMHg1Rjg3LCAweDEyQjksIDB4NUY4OCwgMHgxMkI3LCAweDVGODksIDB4MzhCQywNCisgICAgMHg1RjhBLCAweDEyQjYsIDB4NUY4QiwgMHgwRjZGLCAweDVGOEMsIDB4MDc5OSwgMHg1RjkwLCAweDA5ODMsDQorICAgIDB4NUY5MSwgMHgxMkI4LCAweDVGOTIsIDB4MEM0NiwgMHg1RjkzLCAweDA5NDgsIDB4NUY5NywgMHgwQzk4LA0KKyAgICAweDVGOTgsIDB4MTJCQywgMHg1Rjk5LCAweDEyQkIsIDB4NUY5QywgMHgzOEJELCAweDVGOUUsIDB4MTJCQSwNCisgICAgMHg1RkEwLCAweDEyQkQsIDB4NUZBMSwgMHgwNzlBLCAweDVGQTQsIDB4MzhCRiwgMHg1RkE3LCAweDM4QkUsDQorICAgIDB4NUZBOCwgMHgxMkJFLCAweDVGQTksIDB4MERFRSwgMHg1RkFBLCAweDA5NjUsIDB4NUZBRCwgMHgxMkJGLA0KKyAgICAweDVGQUUsIDB4MEQ4RCwgMHg1RkFGLCAweDM4QzAsIDB4NUZCMywgMHgwQzk5LCAweDVGQjQsIDB4MEJDMywNCisgICAgMHg1RkI1LCAweDM0MzgsIDB4NUZCNywgMHgyMTA0LCAweDVGQjgsIDB4MzhDMSwgMHg1RkI5LCAweDBDMkEsDQorICAgIDB4NUZCQywgMHgxMkMwLCAweDVGQkQsIDB4MDY0NSwgMHg1RkMzLCAweDA5RkEsIDB4NUZDNCwgMHgzOEMyLA0KKyAgICAweDVGQzUsIDB4MEQ5RSwgMHg1RkM5LCAweDM4QzMsIDB4NUZDQywgMHgwNjMzLCAweDVGQ0QsIDB4MENEQywNCisgICAgMHg1RkQ2LCAweDEyQzEsIDB4NUZENywgMHgwOEE0LCAweDVGRDgsIDB4MEU2OCwgMHg1RkQ5LCAweDBFNjksDQorICAgIDB4NUZEQywgMHgwNTIwLCAweDVGREQsIDB4MTJDNiwgMHg1RkRFLCAweDIxMDUsIDB4NUZFMCwgMHgwQkE3LA0KKyAgICAweDVGRTEsIDB4MzhDNCwgMHg1RkU0LCAweDEyQzMsIDB4NUZFOSwgMHgzOEM1LCAweDVGRUIsIDB4MDU3NywNCisgICAgMHg1RkVELCAweDM4QzYsIDB4NUZGMCwgMHgxMkY2LCAweDVGRjEsIDB4MTJDNSwgMHg1RkY1LCAweDBDRTYsDQorICAgIDB4NUZGOCwgMHgxMkM0LCAweDVGRkIsIDB4MTJDMiwgMHg1RkZDLCAweDM4QzcsIDB4NUZGRCwgMHgwODBDLA0KKyAgICAweDVGRkYsIDB4MTJDOCwgMHg2MDBFLCAweDEyQ0UsIDB4NjAwRiwgMHgxMkQ0LCAweDYwMTAsIDB4MTJDQywNCisgICAgMHg2MDEyLCAweDBDNTYsIDB4NjAxNSwgMHgxMkQxLCAweDYwMTYsIDB4MERDRiwgMHg2MDE3LCAweDM4QzgsDQorICAgIDB4NjAxOSwgMHgxMkNCLCAweDYwMUEsIDB4MzhDOSwgMHg2MDFCLCAweDEyRDAsIDB4NjAxQywgMHgwRkFGLA0KKyAgICAweDYwMUQsIDB4MDhBNSwgMHg2MDIwLCAweDBCMzUsIDB4NjAyMSwgMHgxMkM5LCAweDYwMjUsIDB4MDY3OCwNCisgICAgMHg2MDI2LCAweDEyRDMsIDB4NjAyNywgMHgwQTUxLCAweDYwMjgsIDB4MDUwNywgMHg2MDI5LCAweDEyQ0QsDQorICAgIDB4NjAyQSwgMHgwNTc4LCAweDYwMkIsIDB4MTJEMiwgMHg2MDJGLCAweDA2QTksIDB4NjAzMSwgMHgxMkNGLA0KKyAgICAweDYwMzMsIDB4MzhDQSwgMHg2MDNBLCAweDEyRDUsIDB4NjA0MSwgMHgxMkQ3LCAweDYwNDIsIDB4MTJFMSwNCisgICAgMHg2MDQzLCAweDEyREYsIDB4NjA0NiwgMHgxMkRDLCAweDYwNEEsIDB4MTJEQiwgMHg2MDRCLCAweDBGQzAsDQorICAgIDB4NjA0RCwgMHgxMkRELCAweDYwNTAsIDB4MDZBQSwgMHg2MDUyLCAweDA3QzMsIDB4NjA1NSwgMHgwOTg0LA0KKyAgICAweDYwNTksIDB4MTJFNCwgMHg2MDVBLCAweDEyRDYsIDB4NjA1RCwgMHgyMTA2LCAweDYwNUYsIDB4MTJEQSwNCisgICAgMHg2MDYwLCAweDEyQ0EsIDB4NjA2MSwgMHgzOENCLCAweDYwNjIsIDB4MDU3QSwgMHg2MDYzLCAweDEyREUsDQorICAgIDB4NjA2NCwgMHgxMkUwLCAweDYwNjUsIDB4MEI4RiwgMHg2MDY4LCAweDA4MTgsIDB4NjA2OSwgMHgwNTM4LA0KKyAgICAweDYwNkEsIDB4MTJEOCwgMHg2MDZCLCAweDEyRTMsIDB4NjA2QywgMHgxMkUyLCAweDYwNkQsIDB4MDZBQiwNCisgICAgMHg2MDZGLCAweDBCMDksIDB4NjA3MCwgMHgwNUM0LCAweDYwNzUsIDB4MDcxOSwgMHg2MDc3LCAweDEyRDksDQorICAgIDB4NjA3RiwgMHgzOENDLCAweDYwODEsIDB4MTJFNSwgMHg2MDgzLCAweDEyRTgsIDB4NjA4NCwgMHgxMkVBLA0KKyAgICAweDYwODUsIDB4MjEwNywgMHg2MDg5LCAweDA4RTksIDB4NjA4QSwgMHgyMTA4LCAweDYwOEIsIDB4MTJGMCwNCisgICAgMHg2MDhDLCAweDBDMEMsIDB4NjA4RCwgMHgxMkU2LCAweDYwOTIsIDB4MTJFRSwgMHg2MDk0LCAweDA1NzksDQorICAgIDB4NjA5NiwgMHgxMkVDLCAweDYwOTcsIDB4MTJFRCwgMHg2MDlBLCAweDEyRTksIDB4NjA5QiwgMHgxMkVCLA0KKyAgICAweDYwOUUsIDB4MzhDRCwgMHg2MDlGLCAweDA3OUIsIDB4NjBBMCwgMHgwRjE0LCAweDYwQTMsIDB4MDVGMSwNCisgICAgMHg2MEE0LCAweDM4Q0UsIDB4NjBBNiwgMHgwNEZCLCAweDYwQTcsIDB4MTJFRiwgMHg2MEE5LCAweDBDRjAsDQorICAgIDB4NjBBQSwgMHgwNDcxLCAweDYwQjAsIDB4MzhDRiwgMHg2MEIyLCAweDBENzUsIDB4NjBCMywgMHgxMkM3LA0KKyAgICAweDYwQjQsIDB4MTJGNSwgMHg2MEI1LCAweDEyRjksIDB4NjBCNiwgMHgwRUYxLCAweDYwQjgsIDB4MTJGMiwNCisgICAgMHg2MEJDLCAweDBDNjMsIDB4NjBCRCwgMHgxMkY3LCAweDYwQzUsIDB4MDlEOCwgMHg2MEM2LCAweDEyRjgsDQorICAgIDB4NjBDNywgMHgwQ0FGLCAweDYwQ0IsIDB4MzhEMCwgMHg2MEQxLCAweDBGRUQsIDB4NjBEMywgMHgxMkY0LA0KKyAgICAweDYwRDUsIDB4MjEwQSwgMHg2MEQ4LCAweDEyRkEsIDB4NjBEQSwgMHgwODBELCAweDYwREIsIDB4MzhEMSwNCisgICAgMHg2MERDLCAweDBBNkYsIDB4NjBERSwgMHgyMTA5LCAweDYwREYsIDB4MDQ5OCwgMHg2MEUwLCAweDEyRjMsDQorICAgIDB4NjBFMSwgMHgxMkYxLCAweDYwRTMsIDB4MEFEQywgMHg2MEU3LCAweDEyRTcsIDB4NjBFOCwgMHgwODgyLA0KKyAgICAweDYwRjAsIDB4MEIyNiwgMHg2MEYxLCAweDEzMDYsIDB4NjBGMiwgMHgyMTBDLCAweDYwRjMsIDB4MEFERCwNCisgICAgMHg2MEY0LCAweDEzMDEsIDB4NjBGNiwgMHgxMkZFLCAweDYwRjcsIDB4MTJGRiwgMHg2MEY4LCAweDM4RDIsDQorICAgIDB4NjBGOSwgMHgwOTEyLCAweDYwRkEsIDB4MTMwMiwgMHg2MEZCLCAweDEzMDUsIDB4NjEwMCwgMHgxMzAwLA0KKyAgICAweDYxMDEsIDB4MDkyRiwgMHg2MTAzLCAweDEzMDMsIDB4NjEwNiwgMHgxMkZELCAweDYxMDgsIDB4MEYwOCwNCisgICAgMHg2MTA5LCAweDBGMDcsIDB4NjEwRCwgMHgxMzA3LCAweDYxMEUsIDB4MTMwOCwgMHg2MTBGLCAweDA0OTksDQorICAgIDB4NjExMSwgMHgyMTBELCAweDYxMTIsIDB4MzhEMywgMHg2MTEzLCAweDM4RDQsIDB4NjExNCwgMHgzOEQ1LA0KKyAgICAweDYxMTUsIDB4MTJGQywgMHg2MTFBLCAweDA2RUEsIDB4NjExQiwgMHgwNDZBLCAweDYxMUMsIDB4MzhENiwNCisgICAgMHg2MTFGLCAweDA1RjIsIDB4NjEyMCwgMHgyMTBCLCAweDYxMjEsIDB4MTMwNCwgMHg2MTI3LCAweDEzMEMsDQorICAgIDB4NjEyOCwgMHgxMzBCLCAweDYxMkMsIDB4MTMxMCwgMHg2MTMwLCAweDIxMEYsIDB4NjEzNCwgMHgxMzExLA0KKyAgICAweDYxMzcsIDB4MjEwRSwgMHg2MTNDLCAweDEzMEYsIDB4NjEzRCwgMHgxMzEyLCAweDYxM0UsIDB4MTMwQSwNCisgICAgMHg2MTNGLCAweDEzMEUsIDB4NjE0MiwgMHgxMzEzLCAweDYxNDQsIDB4MTMxNCwgMHg2MTQ3LCAweDEzMDksDQorICAgIDB4NjE0OCwgMHgwOENBLCAweDYxNEEsIDB4MTMwRCwgMHg2MTRCLCAweDBCMzYsIDB4NjE0QywgMHgwN0M0LA0KKyAgICAweDYxNEQsIDB4MTJGQiwgMHg2MTRFLCAweDA5RkIsIDB4NjE1MywgMHgxMzIxLCAweDYxNTUsIDB4MEUzOSwNCisgICAgMHg2MTU4LCAweDEzMTcsIDB4NjE1OSwgMHgxMzE4LCAweDYxNUEsIDB4MTMxOSwgMHg2MTVELCAweDEzMjAsDQorICAgIDB4NjE1RiwgMHgxMzFGLCAweDYxNjIsIDB4MEVBQiwgMHg2MTYzLCAweDA1RjMsIDB4NjE2NSwgMHgxMzFELA0KKyAgICAweDYxNjcsIDB4MDcxQiwgMHg2MTY4LCAweDA1OTIsIDB4NjE2QiwgMHgxMzFBLCAweDYxNkUsIDB4MEY4MCwNCisgICAgMHg2MTZGLCAweDEzMUMsIDB4NjE3MCwgMHgwNDlBLCAweDYxNzEsIDB4MTMxRSwgMHg2MTczLCAweDEzMTUsDQorICAgIDB4NjE3NCwgMHgxMzFCLCAweDYxNzUsIDB4MTMyMiwgMHg2MTc2LCAweDA3MUEsIDB4NjE3NywgMHgxMzE2LA0KKyAgICAweDYxN0MsIDB4MzhENywgMHg2MTdFLCAweDBGNDcsIDB4NjE4MiwgMHgwRjE1LCAweDYxODcsIDB4MTMyNSwNCisgICAgMHg2MThBLCAweDEzMjksIDB4NjE4RCwgMHgzOEQ4LCAweDYxOEUsIDB4MEIwMCwgMHg2MTkwLCAweDBGQzEsDQorICAgIDB4NjE5MSwgMHgxMzJBLCAweDYxOTQsIDB4MTMyNywgMHg2MTk2LCAweDEzMjQsIDB4NjE5OCwgMHgyMTEwLA0KKyAgICAweDYxOTksIDB4MTMyMywgMHg2MTlBLCAweDEzMjgsIDB4NjE5RiwgMHgzOEQ5LCAweDYxQTQsIDB4MEUwMCwNCisgICAgMHg2MUE3LCAweDBDOEMsIDB4NjFBOCwgMHgzOERBLCAweDYxQTksIDB4MDcxQywgMHg2MUFCLCAweDEzMkIsDQorICAgIDB4NjFBQywgMHgxMzI2LCAweDYxQUUsIDB4MTMyQywgMHg2MUIyLCAweDA3NTEsIDB4NjFCNiwgMHgwNTMxLA0KKyAgICAweDYxQkEsIDB4MTMzNCwgMHg2MUJFLCAweDA1RjQsIDB4NjFDMiwgMHgzOERCLCAweDYxQzMsIDB4MTMzMiwNCisgICAgMHg2MUM2LCAweDEzMzMsIDB4NjFDNywgMHgwODE5LCAweDYxQzgsIDB4MTMzMSwgMHg2MUM5LCAweDEzMkYsDQorICAgIDB4NjFDQSwgMHgxMzJFLCAweDYxQ0IsIDB4MTMzNSwgMHg2MUNDLCAweDEzMkQsIDB4NjFDRCwgMHgxMzM3LA0KKyAgICAweDYxRDAsIDB4MDU3QiwgMHg2MURGLCAweDM4REMsIDB4NjFFMywgMHgxMzM5LCAweDYxRTYsIDB4MTMzOCwNCisgICAgMHg2MUYyLCAweDBCQzQsIDB4NjFGNCwgMHgxMzNDLCAweDYxRjYsIDB4MTMzQSwgMHg2MUY3LCAweDEzMzAsDQorICAgIDB4NjFGOCwgMHgwNzUyLCAweDYxRkEsIDB4MTMzQiwgMHg2MUZDLCAweDEzM0YsIDB4NjFGRCwgMHgxMzNFLA0KKyAgICAweDYxRkUsIDB4MTM0MCwgMHg2MUZGLCAweDEzM0QsIDB4NjIwMCwgMHgxMzQxLCAweDYyMDgsIDB4MTM0MiwNCisgICAgMHg2MjA5LCAweDEzNDMsIDB4NjIwQSwgMHgwRTNBLCAweDYyMEMsIDB4MTM0NSwgMHg2MjBELCAweDEzNDQsDQorICAgIDB4NjIwRSwgMHgwOTQ5LCAweDYyMTAsIDB4MEE1MiwgMHg2MjExLCAweDA1NjYsIDB4NjIxMiwgMHgwNTdDLA0KKyAgICAweDYyMTMsIDB4MjExMSwgMHg2MjE0LCAweDEzNDYsIDB4NjIxNSwgMHgzOERELCAweDYyMTYsIDB4MDQ4MywNCisgICAgMHg2MjFBLCAweDBBNzAsIDB4NjIxQiwgMHgxMzQ3LCAweDYyMUQsIDB4MUE2NCwgMHg2MjFFLCAweDEzNDgsDQorICAgIDB4NjIxRiwgMHgwNzM3LCAweDYyMjEsIDB4MTM0OSwgMHg2MjI2LCAweDBBOTMsIDB4NjIyOSwgMHgzOERFLA0KKyAgICAweDYyMkEsIDB4MTM0QSwgMHg2MjJFLCAweDEzNEIsIDB4NjIyRiwgMHgwNjU0LCAweDYyMzAsIDB4MTM0QywNCisgICAgMHg2MjMyLCAweDEzNEQsIDB4NjIzMywgMHgxMzRFLCAweDYyMzQsIDB4MEIzNywgMHg2MjM2LCAweDM1QkQsDQorICAgIDB4NjIzOCwgMHgwNzgxLCAweDYyM0IsIDB4MEVFRCwgMHg2MjNFLCAweDM0NEUsIDB4NjIzRiwgMHgwRTZBLA0KKyAgICAweDYyNDAsIDB4MDk3NCwgMHg2MjQxLCAweDEzNEYsIDB4NjI0MywgMHgzOERGLCAweDYyNDYsIDB4MzhFMCwNCisgICAgMHg2MjQ3LCAweDBBOTQsIDB4NjI0OCwgMHgxQjFBLCAweDYyNDksIDB4MEQ3NiwgMHg2MjRCLCAweDA5MTYsDQorICAgIDB4NjI0QywgMHgzOEUxLCAweDYyNEQsIDB4MDgzRCwgMHg2MjRFLCAweDEzNTAsIDB4NjI1MSwgMHgzOEUyLA0KKyAgICAweDYyNTMsIDB4MEIyNywgMHg2MjU1LCAweDBERjcsIDB4NjI1NiwgMHgzOEUzLCAweDYyNTgsIDB4MEI1MSwNCisgICAgMHg2MjVCLCAweDEzNTMsIDB4NjI1RSwgMHgxMzUxLCAweDYyNjAsIDB4MTM1NCwgMHg2MjYzLCAweDEzNTIsDQorICAgIDB4NjI2OCwgMHgxMzU1LCAweDYyNkUsIDB4MEUwMSwgMHg2MjcxLCAweDA0N0IsIDB4NjI3NiwgMHgwREQwLA0KKyAgICAweDYyNzksIDB4MEQ3NywgMHg2MjdDLCAweDEzNTYsIDB4NjI3RSwgMHgxMzU5LCAweDYyN0YsIDB4MDk5RCwNCisgICAgMHg2MjgwLCAweDA2NTUsIDB4NjI4MiwgMHgxMzU3LCAweDYyODMsIDB4MTM1RSwgMHg2Mjg0LCAweDA5OUUsDQorICAgIDB4NjI4NSwgMHgzNUM1LCAweDYyODksIDB4MTM1OCwgMHg2MjhBLCAweDBDRkEsIDB4NjI5MSwgMHgwRjQ4LA0KKyAgICAweDYyOTIsIDB4MTM1QSwgMHg2MjkzLCAweDEzNUIsIDB4NjI5NCwgMHgxMzVGLCAweDYyOTUsIDB4MEM2NCwNCisgICAgMHg2Mjk2LCAweDEzNUMsIDB4NjI5NywgMHgwN0M1LCAweDYyOTgsIDB4MEE4MiwgMHg2MjlCLCAweDEzNkQsDQorICAgIDB4NjI5QywgMHgwRDQ4LCAweDYyOUUsIDB4MEI1MiwgMHg2MkE2LCAweDIxMTIsIDB4NjJBQiwgMHgwRDc4LA0KKyAgICAweDYyQUMsIDB4MTNCMiwgMHg2MkIxLCAweDBFNEEsIDB4NjJCNSwgMHgwQzBELCAweDYyQjksIDB4MEVBMywNCisgICAgMHg2MkJCLCAweDEzNjIsIDB4NjJCQywgMHgwNTIxLCAweDYyQkQsIDB4MEJBOCwgMHg2MkMyLCAweDEzNkIsDQorICAgIDB4NjJDNCwgMHgzOEU0LCAweDYyQzUsIDB4MEI3MiwgMHg2MkM2LCAweDEzNjUsIDB4NjJDNywgMHgxMzZDLA0KKyAgICAweDYyQzgsIDB4MTM2NywgMHg2MkM5LCAweDEzNkUsIDB4NjJDQSwgMHgxMzZBLCAweDYyQ0MsIDB4MTM2OSwNCisgICAgMHg2MkNELCAweDBEMjUsIDB4NjJDRiwgMHgxMzYzLCAweDYyRDAsIDB4MDU3RCwgMHg2MkQxLCAweDEzNjEsDQorICAgIDB4NjJEMiwgMHgwNjhCLCAweDYyRDMsIDB4MEI1MywgMHg2MkQ0LCAweDEzNUQsIDB4NjJENywgMHgxMzYwLA0KKyAgICAweDYyRDgsIDB4MDdDNiwgMHg2MkQ5LCAweDBBN0YsIDB4NjJEQiwgMHgwOTlGLCAweDYyREMsIDB4MTM2OCwNCisgICAgMHg2MkRELCAweDBEMDgsIDB4NjJFMCwgMHgwNjhDLCAweDYyRTEsIDB4MDVBNiwgMHg2MkVDLCAweDA1QzUsDQorICAgIDB4NjJFRCwgMHgwOUU3LCAweDYyRUUsIDB4MTM3MCwgMHg2MkVGLCAweDEzNzUsIDB4NjJGMSwgMHgxMzcxLA0KKyAgICAweDYyRjMsIDB4MDc1MywgMHg2MkY1LCAweDEzNzYsIDB4NjJGNiwgMHgwODcwLCAweDYyRjcsIDB4MDdGQiwNCisgICAgMHg2MkZDLCAweDM4RTUsIDB4NjJGRSwgMHgwOTMwLCAweDYyRkYsIDB4MTM2NCwgMHg2MzAxLCAweDA4Q0IsDQorICAgIDB4NjMwMiwgMHgxMzczLCAweDYzMDcsIDB4MDhBNiwgMHg2MzA4LCAweDEzNzQsIDB4NjMwOSwgMHgwNDg4LA0KKyAgICAweDYzMEEsIDB4MzhFNiwgMHg2MzBDLCAweDEzNkYsIDB4NjMwRCwgMHgzOEU3LCAweDYzMTEsIDB4MEJDNSwNCisgICAgMHg2MzE4LCAweDM4RTgsIDB4NjMxOSwgMHgwNjhELCAweDYzMUIsIDB4MzczNywgMHg2MzFGLCAweDA2QUMsDQorICAgIDB4NjMyNywgMHgxMzcyLCAweDYzMjgsIDB4MDQ2QiwgMHg2MzJCLCAweDA4MzMsIDB4NjMyRiwgMHgwOUZDLA0KKyAgICAweDYzMzksIDB4MzhFOSwgMHg2MzNBLCAweDBDMEUsIDB4NjMzRCwgMHgwRDY4LCAweDYzM0UsIDB4MTM3OCwNCisgICAgMHg2MzNGLCAweDBBRTAsIDB4NjM0MiwgMHgzOEVBLCAweDYzNDMsIDB4MzhFQiwgMHg2MzQ5LCAweDBCMEEsDQorICAgIDB4NjM0QywgMHgwODc5LCAweDYzNEQsIDB4MTM3OSwgMHg2MzRGLCAweDEzN0IsIDB4NjM1MCwgMHgxMzc3LA0KKyAgICAweDYzNTUsIDB4MEUzMSwgMHg2MzU3LCAweDBCRDksIDB4NjM1QywgMHgwQURFLCAweDYzNjUsIDB4MzhFQywNCisgICAgMHg2MzY3LCAweDBFNEIsIDB4NjM2OCwgMHgwOEZBLCAweDYzNjksIDB4MTM4NywgMHg2MzZCLCAweDEzODYsDQorICAgIDB4NjM2RSwgMHgwQTNFLCAweDYzNzIsIDB4MDc1NCwgMHg2Mzc0LCAweDM4RUQsIDB4NjM3NiwgMHgxMzgwLA0KKyAgICAweDYzNzcsIDB4MDlBMSwgMHg2MzdBLCAweDBDQzAsIDB4NjM3QiwgMHgwQ0U3LCAweDYzN0QsIDB4MzhFRSwNCisgICAgMHg2MzgwLCAweDEzN0UsIDB4NjM4MywgMHgwQURGLCAweDYzODQsIDB4MzhFRiwgMHg2Mzg3LCAweDM4RjAsDQorICAgIDB4NjM4OCwgMHgwOTI0LCAweDYzODksIDB4MTM4MywgMHg2MzhDLCAweDA5QTAsIDB4NjM4RSwgMHgxMzdELA0KKyAgICAweDYzOEYsIDB4MTM4MiwgMHg2MzkwLCAweDM4RjEsIDB4NjM5MiwgMHgwRDA5LCAweDYzOTYsIDB4MTM3QywNCisgICAgMHg2Mzk4LCAweDA2RjcsIDB4NjM5QiwgMHgwNUJCLCAweDYzOUUsIDB4MzhGMiwgMHg2MzlGLCAweDEzODQsDQorICAgIDB4NjNBMCwgMHgwRjczLCAweDYzQTEsIDB4MDgzRSwgMHg2M0EyLCAweDBCNzMsIDB4NjNBMywgMHgxMzgxLA0KKyAgICAweDYzQTUsIDB4MEE4MCwgMHg2M0E3LCAweDA3QzcsIDB4NjNBOCwgMHgwQTJBLCAweDYzQTksIDB4MDUwOCwNCisgICAgMHg2M0FBLCAweDBBQkUsIDB4NjNBQiwgMHgxMzdGLCAweDYzQUMsIDB4MDY1RiwgMHg2M0IyLCAweDA3MUQsDQorICAgIDB4NjNCNCwgMHgwQkVCLCAweDYzQjUsIDB4MTM4NSwgMHg2M0JCLCAweDBBRTEsIDB4NjNCRSwgMHgxMzg4LA0KKyAgICAweDYzQzAsIDB4MTM4QSwgMHg2M0MzLCAweDBCMTcsIDB4NjNDNCwgMHgxMzkwLCAweDYzQzYsIDB4MTM4QiwNCisgICAgMHg2M0M5LCAweDEzOEQsIDB4NjNDRiwgMHgwREIzLCAweDYzRDAsIDB4MEMwRiwgMHg2M0QxLCAweDM4RjMsDQorICAgIDB4NjNEMiwgMHgxMzhFLCAweDYzRDYsIDB4MEYxNiwgMHg2M0RBLCAweDBGMzIsIDB4NjNEQiwgMHgwNUY1LA0KKyAgICAweDYzREMsIDB4MzhGNCwgMHg2M0UxLCAweDA0NzIsIDB4NjNFMywgMHgxMzhDLCAweDYzRTksIDB4MTM4OSwNCisgICAgMHg2M0VELCAweDM0MUMsIDB4NjNFRSwgMHgwNjM0LCAweDYzRjQsIDB4MDUwOSwgMHg2M0Y1LCAweDIxMTMsDQorICAgIDB4NjNGNiwgMHgxMzhGLCAweDYzRjcsIDB4MzY0NCwgMHg2M0ZBLCAweDBGMzMsIDB4NjQwNiwgMHgxMzkzLA0KKyAgICAweDY0MDksIDB4MzhGNSwgMHg2NDBELCAweDBCMUIsIDB4NjQwRiwgMHgxMzlBLCAweDY0MTAsIDB4MzhGNiwNCisgICAgMHg2NDEzLCAweDEzOTQsIDB4NjQxNCwgMHgxRTJDLCAweDY0MTYsIDB4MTM5MSwgMHg2NDE3LCAweDEzOTgsDQorICAgIDB4NjQxQywgMHgxMzdBLCAweDY0MjIsIDB4MzhGNywgMHg2NDI2LCAweDEzOTUsIDB4NjQyOCwgMHgxMzk5LA0KKyAgICAweDY0MkMsIDB4MEQ1NiwgMHg2NDJELCAweDBDNjUsIDB4NjQzNCwgMHgxMzkyLCAweDY0MzYsIDB4MTM5NiwNCisgICAgMHg2NDNBLCAweDA3MUUsIDB4NjQzRSwgMHgwODYxLCAweDY0NDIsIDB4MEE4MSwgMHg2NDRFLCAweDEzOUUsDQorICAgIDB4NjQ1MSwgMHgxRTQzLCAweDY0NTQsIDB4MzhGOCwgMHg2NDU4LCAweDBDMjAsIDB4NjQ1QiwgMHgzOEY5LA0KKyAgICAweDY0NjAsIDB4MjExNCwgMHg2NDY3LCAweDEzOUIsIDB4NjQ2OSwgMHgwRThFLCAweDY0NkQsIDB4MzhGQSwNCisgICAgMHg2NDZGLCAweDEzOUMsIDB4NjQ3NiwgMHgxMzlELCAweDY0NzgsIDB4MEVEQSwgMHg2NDdBLCAweDBBNDYsDQorICAgIDB4NjQ3QiwgMHgzOEZCLCAweDY0ODMsIDB4MDczOCwgMHg2NDg4LCAweDEzQTQsIDB4NjQ5MiwgMHgwODgzLA0KKyAgICAweDY0OTMsIDB4MTNBMSwgMHg2NDk1LCAweDEzQTAsIDB4NjQ5QSwgMHgwQ0U4LCAweDY0OUQsIDB4MjExNSwNCisgICAgMHg2NDlFLCAweDBDOEQsIDB4NjRBNCwgMHgwQzJCLCAweDY0QTUsIDB4MTNBMiwgMHg2NEE5LCAweDEzQTMsDQorICAgIDB4NjRBQiwgMHgwREUxLCAweDY0QUQsIDB4MENGQiwgMHg2NEFFLCAweDA4NzEsIDB4NjRCMCwgMHgwQTk1LA0KKyAgICAweDY0QjIsIDB4MEU3RSwgMHg2NEI5LCAweDA1QTcsIDB4NjRCQiwgMHgxM0FBLCAweDY0QkMsIDB4MTNBNSwNCisgICAgMHg2NEJFLCAweDM4RkMsIDB4NjRCRiwgMHgzOEZELCAweDY0QzEsIDB4MEYzNCwgMHg2NEMyLCAweDEzQUMsDQorICAgIDB4NjRDNSwgMHgxM0E4LCAweDY0QzcsIDB4MTNBOSwgMHg2NENBLCAweDM0MUQsIDB4NjRDRCwgMHgwQUUyLA0KKyAgICAweDY0Q0UsIDB4MjExNiwgMHg2NEQyLCAweDEzQTcsIDB4NjRENCwgMHgxMzY2LCAweDY0RDgsIDB4MTNBQiwNCisgICAgMHg2NERBLCAweDEzQTYsIDB4NjRFMCwgMHgxM0IwLCAweDY0RTEsIDB4MTNCMSwgMHg2NEUyLCAweDBDMjEsDQorICAgIDB4NjRFMywgMHgxM0IzLCAweDY0RTUsIDB4MzhGRSwgMHg2NEU2LCAweDA4NzIsIDB4NjRFNywgMHgxM0FFLA0KKyAgICAweDY0RUMsIDB4MDY1NiwgMHg2NEVGLCAweDEzQjQsIDB4NjRGMSwgMHgxM0FELCAweDY0RjIsIDB4MTNCOCwNCisgICAgMHg2NEY0LCAweDEzQjcsIDB4NjRGNiwgMHgxM0I2LCAweDY0RjcsIDB4MzhGRiwgMHg2NEZBLCAweDEzQjksDQorICAgIDB4NjRGQiwgMHgzOTAwLCAweDY0RkQsIDB4MTNCQiwgMHg2NEZFLCAweDA5RDksIDB4NjUwMCwgMHgxM0JBLA0KKyAgICAweDY1MDQsIDB4MzkwMSwgMHg2NTA1LCAweDEzQkUsIDB4NjUxNiwgMHgzOTAyLCAweDY1MTgsIDB4MTNCQywNCisgICAgMHg2NTE5LCAweDM5MDMsIDB4NjUxQywgMHgxM0JELCAweDY1MUQsIDB4MTM5NywgMHg2NTIyLCAweDFFOTcsDQorICAgIDB4NjUyMywgMHgxM0MwLCAweDY1MjQsIDB4MTNCRiwgMHg2NTJBLCAweDEzOUYsIDB4NjUyQiwgMHgxM0MxLA0KKyAgICAweDY1MkMsIDB4MTNCNSwgMHg2NTJGLCAweDA4QTcsIDB4NjUzNCwgMHgxM0MyLCAweDY1MzUsIDB4MTNDMywNCisgICAgMHg2NTM2LCAweDEzQzUsIDB4NjUzNywgMHgxM0M0LCAweDY1MzgsIDB4MTNDNiwgMHg2NTM5LCAweDA1N0UsDQorICAgIDB4NjUzQiwgMHgwN0M4LCAweDY1M0UsIDB4MEU0QywgMHg2NTNGLCAweDBBNTMsIDB4NjU0NSwgMHgwNzgyLA0KKyAgICAweDY1NDcsIDB4MzkwNCwgMHg2NTQ4LCAweDEzQzgsIDB4NjU0RCwgMHgxM0NCLCAweDY1NEUsIDB4MjExNywNCisgICAgMHg2NTRGLCAweDBEQzQsIDB4NjU1MSwgMHgwNjc5LCAweDY1NTUsIDB4MTNDQSwgMHg2NTU2LCAweDEzQzksDQorICAgIDB4NjU1NywgMHgwRDBBLCAweDY1NTgsIDB4MTNDQywgMHg2NTU5LCAweDA2QUQsIDB4NjU1RCwgMHgxM0NFLA0KKyAgICAweDY1NUUsIDB4MTNDRCwgMHg2NTYyLCAweDA1RjYsIDB4NjU2MywgMHgwODg0LCAweDY1NjYsIDB4MENCMCwNCisgICAgMHg2NTY3LCAweDM5MDUsIDB4NjU2QywgMHgwNzFGLCAweDY1NzAsIDB4MEEzQSwgMHg2NTcyLCAweDEzQ0YsDQorICAgIDB4NjU3NCwgMHgwQTU0LCAweDY1NzUsIDB4MEMyMiwgMHg2NTc3LCAweDBERDEsIDB4NjU3OCwgMHgxM0QwLA0KKyAgICAweDY1ODEsIDB4MzkwNiwgMHg2NTgyLCAweDEzRDEsIDB4NjU4MywgMHgxM0QyLCAweDY1ODUsIDB4MzkwNywNCisgICAgMHg2NTg3LCAweDBFMDgsIDB4NjU4OCwgMHgxMjBDLCAweDY1ODksIDB4MEE2QSwgMHg2NThDLCAweDBEQkUsDQorICAgIDB4NjU4RSwgMHgwODQ4LCAweDY1OTAsIDB4MEQ3OSwgMHg2NTkxLCAweDBENTcsIDB4NjU5NywgMHgwQzQ3LA0KKyAgICAweDY1OTksIDB4MEY4OSwgMHg2NTlCLCAweDEzRDQsIDB4NjU5QywgMHgwOEZDLCAweDY1OUYsIDB4MTNENSwNCisgICAgMHg2NUExLCAweDA0N0EsIDB4NjVBNCwgMHgwNkNDLCAweDY1QTUsIDB4MEE3MSwgMHg2NUE3LCAweDBERDIsDQorICAgIDB4NjVBQiwgMHgxM0Q2LCAweDY1QUMsIDB4MDg5MCwgMHg2NUFELCAweDBCODUsIDB4NjVBRiwgMHgwOEE5LA0KKyAgICAweDY1QjAsIDB4MDlGRCwgMHg2NUI3LCAweDEzRDcsIDB4NjVCOSwgMHgwRTRELCAweDY1QkMsIDB4MDUxOSwNCisgICAgMHg2NUJELCAweDA4QUEsIDB4NjVDMSwgMHgxM0RBLCAweDY1QzIsIDB4MzkwOCwgMHg2NUMzLCAweDEzRDgsDQorICAgIDB4NjVDNCwgMHgxM0RCLCAweDY1QzUsIDB4MEY4MSwgMHg2NUM2LCAweDEzRDksIDB4NjVDQiwgMHgwQTlGLA0KKyAgICAweDY1Q0MsIDB4MTNEQywgMHg2NUNGLCAweDBCMTIsIDB4NjVEMiwgMHgxM0RELCAweDY1RDcsIDB4MDYzNiwNCisgICAgMHg2NUQ5LCAweDEzREYsIDB4NjVEQiwgMHgxM0RFLCAweDY1RTAsIDB4MTNFMCwgMHg2NUUxLCAweDEzRTEsDQorICAgIDB4NjVFMiwgMHgwNjM3LCAweDY1RTMsIDB4MzU4NSwgMHg2NUU1LCAweDBDRDQsIDB4NjVFNiwgMHgwQjc0LA0KKyAgICAweDY1RTcsIDB4MDY4NiwgMHg2NUU4LCAweDA4QUIsIDB4NjVFOSwgMHgwQUUzLCAweDY1RUMsIDB4MDk2NiwNCisgICAgMHg2NUVELCAweDA0NzQsIDB4NjVGMCwgMHgzOTA5LCAweDY1RjEsIDB4MTNFMiwgMHg2NUYyLCAweDM5MEEsDQorICAgIDB4NjVGQSwgMHgwNTIyLCAweDY1RkIsIDB4MTNFNiwgMHg2NjAwLCAweDIxMTgsIDB4NjYwMiwgMHgwN0M5LA0KKyAgICAweDY2MDMsIDB4MTNFNSwgMHg2NjA2LCAweDA4MUIsIDB4NjYwNywgMHgwOUEyLCAweDY2MDksIDB4MjExQSwNCisgICAgMHg2NjBBLCAweDEzRTQsIDB4NjYwQywgMHgwOUEzLCAweDY2MEUsIDB4MEVDQywgMHg2NjBGLCAweDA4MUEsDQorICAgIDB4NjYxMywgMHgwNDlCLCAweDY2MTQsIDB4MEE3MiwgMHg2NjE1LCAweDIxMTksIDB4NjYxQywgMHgxM0VCLA0KKyAgICAweDY2MUUsIDB4MjExQywgMHg2NjFGLCAweDBBNTUsIDB4NjYyMCwgMHgwNEU5LCAweDY2MjQsIDB4MjExRCwNCisgICAgMHg2NjI1LCAweDA5NUYsIDB4NjYyNywgMHgwRTk0LCAweDY2MjgsIDB4MDg2MiwgMHg2NjJDLCAweDM5MEIsDQorICAgIDB4NjYyRCwgMHgwOUE0LCAweDY2MkUsIDB4MjExQiwgMHg2NjJGLCAweDBBNEIsIDB4NjYzMSwgMHgyMEFFLA0KKyAgICAweDY2MzQsIDB4MTNFQSwgMHg2NjM1LCAweDEzRTgsIDB4NjYzNiwgMHgxM0U5LCAweDY2M0IsIDB4MUUwMCwNCisgICAgMHg2NjNDLCAweDBCQTksIDB4NjYzRiwgMHgxNDA5LCAweDY2NDEsIDB4MTNFRiwgMHg2NjQyLCAweDA4Q0MsDQorICAgIDB4NjY0MywgMHgwN0NBLCAweDY2NDQsIDB4MTNFRCwgMHg2NjQ5LCAweDEzRUUsIDB4NjY0QiwgMHgwOUZFLA0KKyAgICAweDY2NEMsIDB4MzkwQywgMHg2NjRGLCAweDEzRUMsIDB4NjY1MiwgMHgwODdELCAweDY2NTcsIDB4MjExRiwNCisgICAgMHg2NjU5LCAweDIxMjAsIDB4NjY1QiwgMHgzOTBELCAweDY2NUMsIDB4MzkwRSwgMHg2NjVELCAweDEzRjEsDQorICAgIDB4NjY1RSwgMHgxM0YwLCAweDY2NUYsIDB4MTNGNSwgMHg2NjYxLCAweDM5MEYsIDB4NjY2MiwgMHgxM0Y2LA0KKyAgICAweDY2NjMsIDB4MzczQSwgMHg2NjY0LCAweDEzRjIsIDB4NjY2NSwgMHgyMTFFLCAweDY2NjYsIDB4MDU4MCwNCisgICAgMHg2NjY3LCAweDEzRjMsIDB4NjY2OCwgMHgxM0Y0LCAweDY2NjksIDB4MEQ2OSwgMHg2NjZCLCAweDM5MTAsDQorICAgIDB4NjY2RSwgMHgwREQzLCAweDY2NkYsIDB4MDcyMCwgMHg2NjcwLCAweDEzRjcsIDB4NjY3MywgMHgyMTIyLA0KKyAgICAweDY2NzQsIDB4MEE1NiwgMHg2Njc2LCAweDA5QTUsIDB4NjY3NywgMHgzOTExLCAweDY2N0EsIDB4MEI5MCwNCisgICAgMHg2NjgxLCAweDA2QkYsIDB4NjY4MywgMHgxM0Y4LCAweDY2ODQsIDB4MTNGQywgMHg2Njg3LCAweDA1NEIsDQorICAgIDB4NjY4OCwgMHgxM0Y5LCAweDY2ODksIDB4MTNGQiwgMHg2NjhFLCAweDEzRkEsIDB4NjY5MSwgMHgwOTc1LA0KKyAgICAweDY2OTYsIDB4MEI4NiwgMHg2Njk3LCAweDA0ODksIDB4NjY5OCwgMHgxM0ZELCAweDY2OTksIDB4MjEyMywNCisgICAgMHg2NjlELCAweDEzRkUsIDB4NjZBMCwgMHgyMTI0LCAweDY2QTIsIDB4MEJDNiwgMHg2NkE0LCAweDM5MTIsDQorICAgIDB4NjZBNiwgMHgwRkI5LCAweDY2QUIsIDB4MDg5MSwgMHg2NkFFLCAweDBFM0IsIDB4NjZCMiwgMHgyMTI1LA0KKyAgICAweDY2QjQsIDB4MEU2QiwgMHg2NkI4LCAweDE0MDUsIDB4NjZCOSwgMHgxNDAwLCAweDY2QkMsIDB4MTQwMywNCisgICAgMHg2NkJFLCAweDE0MDIsIDB4NjZCRiwgMHgyMTI2LCAweDY2QzEsIDB4MTNGRiwgMHg2NkM0LCAweDE0MDQsDQorICAgIDB4NjZDNiwgMHgzNDU1LCAweDY2QzcsIDB4MENCNiwgMHg2NkM4LCAweDM5MTMsIDB4NjZDOSwgMHgxNDAxLA0KKyAgICAweDY2RDYsIDB4MTQwNiwgMHg2NkQ5LCAweDA5NzYsIDB4NjZEQSwgMHgxNDA3LCAweDY2REMsIDB4MEYzNSwNCisgICAgMHg2NkRELCAweDBEMkUsIDB4NjZFMCwgMHgxNDA4LCAweDY2RTYsIDB4MTQwQSwgMHg2NkU5LCAweDE0MEIsDQorICAgIDB4NjZFQywgMHgzOTE0LCAweDY2RjAsIDB4MTQwQywgMHg2NkYyLCAweDA2QzIsIDB4NjZGMywgMHgwNEVBLA0KKyAgICAweDY2RjQsIDB4MDdDQiwgMHg2NkY1LCAweDE0MEQsIDB4NjZGNywgMHgxNDBFLCAweDY2RjgsIDB4MDk3QiwNCisgICAgMHg2NkY5LCAweDBBRTQsIDB4NjZGQSwgMHgyMTI3LCAweDY2RkIsIDB4MjBCMSwgMHg2NkZDLCAweDEwRUQsDQorICAgIDB4NjZGRCwgMHgwQUMwLCAweDY2RkUsIDB4MEFCRiwgMHg2NkZGLCAweDBCMzgsIDB4NjcwMCwgMHgwODM3LA0KKyAgICAweDY3MDMsIDB4MTA0QiwgMHg2NzA1LCAweDM5MTUsIDB4NjcwOCwgMHgwNzQ0LCAweDY3MDksIDB4MEYxNywNCisgICAgMHg2NzBCLCAweDBFNEUsIDB4NjcwRCwgMHgwREYwLCAweDY3MEUsIDB4MjEyOCwgMHg2NzBGLCAweDE0MEYsDQorICAgIDB4NjcxMywgMHgzOTE2LCAweDY3MTQsIDB4MDg2MywgMHg2NzE1LCAweDBCREIsIDB4NjcxNiwgMHgxNDEwLA0KKyAgICAweDY3MTcsIDB4MEZENSwgMHg2NzFCLCAweDBFNkMsIDB4NjcxRCwgMHgwQkM3LCAweDY3MUUsIDB4MTQxMSwNCisgICAgMHg2NzFGLCAweDA2MzgsIDB4NjcyNiwgMHgxNDEyLCAweDY3MjcsIDB4MTQxMywgMHg2NzI4LCAweDBFRTYsDQorICAgIDB4NjcyQSwgMHgwRUIwLCAweDY3MkIsIDB4MEVBNCwgMHg2NzJDLCAweDBFOEEsIDB4NjcyRCwgMHgwODczLA0KKyAgICAweDY3MkUsIDB4MTQxNSwgMHg2NzMxLCAweDA5MTcsIDB4NjczMywgMHgzOTE3LCAweDY3MzQsIDB4MEU3RiwNCisgICAgMHg2NzM2LCAweDE0MTcsIDB4NjczNywgMHgxNDFBLCAweDY3MzgsIDB4MTQxOSwgMHg2NzNBLCAweDA2MzUsDQorICAgIDB4NjczRCwgMHgwNjdBLCAweDY3M0YsIDB4MTQxNiwgMHg2NzQxLCAweDE0MTgsIDB4Njc0MywgMHgzNUI3LA0KKyAgICAweDY3NDYsIDB4MTQxQiwgMHg2NzQ4LCAweDM5MTgsIDB4Njc0OSwgMHgwQTNGLCAweDY3NEMsIDB4MzkxOSwNCisgICAgMHg2NzRFLCAweDBGNjUsIDB4Njc0RiwgMHgwNDhELCAweDY3NTAsIDB4MDg1MCwgMHg2NzUxLCAweDBCMUMsDQorICAgIDB4Njc1MywgMHgwOTA5LCAweDY3NTYsIDB4MDlEQiwgMHg2NzU5LCAweDE0MUUsIDB4Njc1QywgMHgwQzQ4LA0KKyAgICAweDY3NUUsIDB4MTQxQywgMHg2NzVGLCAweDBCMEIsIDB4Njc2MCwgMHgxNDFELCAweDY3NjEsIDB4MDlEQSwNCisgICAgMHg2NzYyLCAweDBFRTksIDB4Njc2MywgMHgxNDFGLCAweDY3NjQsIDB4MTQyMCwgMHg2NzY1LCAweDBGNTIsDQorICAgIDB4Njc2NiwgMHgyMTJBLCAweDY3NkEsIDB4MTQyNSwgMHg2NzZELCAweDA3Q0MsIDB4Njc2RSwgMHgzNTcxLA0KKyAgICAweDY3NkYsIDB4MEQwQiwgMHg2NzcwLCAweDE0MjIsIDB4Njc3MSwgMHgwQzY2LCAweDY3NzIsIDB4MTNFMywNCisgICAgMHg2NzczLCAweDEzRTcsIDB4Njc3NSwgMHgwNjY5LCAweDY3NzYsIDB4MzkxQSwgMHg2Nzc3LCAweDBDRkQsDQorICAgIDB4Njc3QiwgMHgzOTFCLCAweDY3N0MsIDB4MTQyNCwgMHg2NzdFLCAweDA5QTYsIDB4Njc3RiwgMHgwRDU4LA0KKyAgICAweDY3ODUsIDB4MTQyQSwgMHg2Nzg3LCAweDBEOEUsIDB4Njc4OSwgMHgxNDIxLCAweDY3OEIsIDB4MTQyNywNCisgICAgMHg2NzhDLCAweDE0MjYsIDB4Njc5MCwgMHgwQTczLCAweDY3OTUsIDB4MEU5QiwgMHg2Nzk3LCAweDBGOUIsDQorICAgIDB4Njc5QSwgMHgwRTk1LCAweDY3OUMsIDB4MDU0QywgMHg2NzlELCAweDA4QUMsIDB4NjdBMCwgMHgwRkVFLA0KKyAgICAweDY3QTEsIDB4MTQyOSwgMHg2N0EyLCAweDBBM0IsIDB4NjdBNiwgMHgxNDI4LCAweDY3QTksIDB4MTQyMywNCisgICAgMHg2N0FGLCAweDA3ODMsIDB4NjdCMCwgMHgzOTFDLCAweDY3QjIsIDB4MzkxRCwgMHg2N0IzLCAweDE0MkYsDQorICAgIDB4NjdCNCwgMHgxNDJELCAweDY3QjYsIDB4MDU0RCwgMHg2N0I3LCAweDE0MkIsIDB4NjdCOCwgMHgxNDMxLA0KKyAgICAweDY3QjksIDB4MTQzNywgMHg2N0JCLCAweDIxMkIsIDB4NjdDMCwgMHgyMTJELCAweDY3QzEsIDB4MEIyOCwNCisgICAgMHg2N0M0LCAweDBFMTEsIDB4NjdDNiwgMHgxNDM5LCAweDY3Q0EsIDB4MEQ5NCwgMHg2N0NFLCAweDE0MzgsDQorICAgIDB4NjdDRiwgMHgwRDI2LCAweDY3RDAsIDB4MEU2RCwgMHg2N0QxLCAweDA1RjcsIDB4NjdEMywgMHgwQTlCLA0KKyAgICAweDY3RDQsIDB4MDk0QSwgMHg2N0Q3LCAweDM5MUYsIDB4NjdEOCwgMHgwQkVGLCAweDY3RDksIDB4MzkyMCwNCisgICAgMHg2N0RBLCAweDBGMTgsIDB4NjdERCwgMHgxNDM0LCAweDY3REUsIDB4MTQzMywgMHg2N0UyLCAweDE0MzUsDQorICAgIDB4NjdFNCwgMHgxNDMyLCAweDY3RTcsIDB4MTQzQSwgMHg2N0U5LCAweDE0MzAsIDB4NjdFQywgMHgxNDJFLA0KKyAgICAweDY3RUUsIDB4MTQzNiwgMHg2N0VGLCAweDE0MkMsIDB4NjdGMCwgMHgzOTIxLCAweDY3RjEsIDB4MEJBQSwNCisgICAgMHg2N0YzLCAweDBGMDQsIDB4NjdGNCwgMHgwOEYyLCAweDY3RjUsIDB4MDg2NCwgMHg2N0Y5LCAweDM5MUUsDQorICAgIDB4NjdGQiwgMHgwODJBLCAweDY3RkUsIDB4MEU5RCwgMHg2N0ZGLCAweDA1OUYsIDB4NjgwMSwgMHgyMTJFLA0KKyAgICAweDY4MDIsIDB4MEJFQSwgMHg2ODAzLCAweDBDQTIsIDB4NjgwNCwgMHgwNEVCLCAweDY4MDUsIDB4MUUwNywNCisgICAgMHg2ODEzLCAweDBBOTYsIDB4NjgxNiwgMHgwQTU4LCAweDY4MTcsIDB4MDcwMCwgMHg2ODFFLCAweDE0M0MsDQorICAgIDB4NjgyMSwgMHgwN0NELCAweDY4MjIsIDB4MDVEQSwgMHg2ODI5LCAweDE0M0UsIDB4NjgyQSwgMHgwNUQyLA0KKyAgICAweDY4MkIsIDB4MTQ0NCwgMHg2ODJDLCAweDM5MjIsIDB4NjgzMCwgMHgzOTIzLCAweDY4MzEsIDB4MzkyNCwNCisgICAgMHg2ODMyLCAweDE0NDEsIDB4NjgzNCwgMHgwQTk3LCAweDY4MzgsIDB4MDVBOSwgMHg2ODM5LCAweDA4MUMsDQorICAgIDB4NjgzQywgMHgwNUE4LCAweDY4M0QsIDB4MDgzRiwgMHg2ODQwLCAweDE0M0YsIDB4Njg0MSwgMHgwNzNCLA0KKyAgICAweDY4NDIsIDB4MDcyMSwgMHg2ODQzLCAweDBDNjcsIDB4Njg0NCwgMHgyMTJGLCAweDY4NDYsIDB4MTQzRCwNCisgICAgMHg2ODQ4LCAweDA0OEEsIDB4Njg0RCwgMHgxNDQwLCAweDY4NEUsIDB4MTQ0MiwgMHg2ODUwLCAweDA2QzUsDQorICAgIDB4Njg1MSwgMHgwNzAyLCAweDY4NTIsIDB4MjEyQywgMHg2ODUzLCAweDA1RjgsIDB4Njg1NCwgMHgwNjY1LA0KKyAgICAweDY4NTksIDB4MTQ0NSwgMHg2ODVCLCAweDM5MjUsIDB4Njg1QywgMHgwODY5LCAweDY4NUQsIDB4MEU5RiwNCisgICAgMHg2ODVGLCAweDA4ODUsIDB4Njg2MywgMHgxNDQ2LCAweDY4NjcsIDB4MERBMiwgMHg2ODcyLCAweDM5MjYsDQorICAgIDB4Njg3NCwgMHgxNDUyLCAweDY4NzUsIDB4MzkyNywgMHg2ODc2LCAweDA1MzMsIDB4Njg3NywgMHgxNDQ3LA0KKyAgICAweDY4N0EsIDB4MzkyOCwgMHg2ODdFLCAweDE0NTgsIDB4Njg3RiwgMHgxNDQ4LCAweDY4ODEsIDB4MEY4QSwNCisgICAgMHg2ODgzLCAweDE0NEYsIDB4Njg4NCwgMHgzOTI5LCAweDY4ODUsIDB4MEQxNSwgMHg2ODhELCAweDE0NTcsDQorICAgIDB4Njg4RSwgMHgxRTlDLCAweDY4OEYsIDB4MTQ0QSwgMHg2ODkzLCAweDA0NzgsIDB4Njg5NCwgMHgxNDRDLA0KKyAgICAweDY4OTcsIDB4MDdDRSwgMHg2ODlCLCAweDE0NEUsIDB4Njg5RCwgMHgxNDRELCAweDY4OUYsIDB4MTQ0OSwNCisgICAgMHg2OEEwLCAweDE0NTQsIDB4NjhBMiwgMHgwOUE3LCAweDY4QTUsIDB4MzkyQSwgMHg2OEE2LCAweDExQkUsDQorICAgIDB4NjhBNywgMHgwNzlDLCAweDY4QTgsIDB4MEY2NiwgMHg2OEFELCAweDE0NEIsIDB4NjhBRiwgMHgwQzEwLA0KKyAgICAweDY4QjAsIDB4MDU4MSwgMHg2OEIxLCAweDA4MUQsIDB4NjhCMiwgMHgzOTJCLCAweDY4QjMsIDB4MTQ0MywNCisgICAgMHg2OEI1LCAweDE0NTMsIDB4NjhCNiwgMHgwNUJGLCAweDY4QjksIDB4MTQ1MSwgMHg2OEJBLCAweDE0NTUsDQorICAgIDB4NjhCQywgMHgwQzY4LCAweDY4QzQsIDB4MDYzQSwgMHg2OEM2LCAweDE0NzMsIDB4NjhDOCwgMHgyMEFGLA0KKyAgICAweDY4QzksIDB4MEVENSwgMHg2OENBLCAweDE0NUEsIDB4NjhDQiwgMHgwNjM5LCAweDY4Q0QsIDB4MTQ2MSwNCisgICAgMHg2OENGLCAweDIxMzAsIDB4NjhEMCwgMHgzOTJDLCAweDY4RDIsIDB4MEU2RSwgMHg2OEQ0LCAweDE0NjIsDQorICAgIDB4NjhENSwgMHgxNDY0LCAweDY4RDYsIDB4MzkyRCwgMHg2OEQ3LCAweDE0NjgsIDB4NjhEOCwgMHgxNDVDLA0KKyAgICAweDY4REEsIDB4MEI2OCwgMHg2OERGLCAweDBDNjksIDB4NjhFMCwgMHgxNDZDLCAweDY4RTEsIDB4MTQ1RiwNCisgICAgMHg2OEUzLCAweDE0NjksIDB4NjhFNywgMHgxNDYzLCAweDY4RTgsIDB4MzkyRSwgMHg2OEVELCAweDM5MkYsDQorICAgIDB4NjhFRSwgMHgwOUZGLCAweDY4RUYsIDB4MTQ2RCwgMHg2OEYwLCAweDM5MzAsIDB4NjhGMSwgMHgzOTMxLA0KKyAgICAweDY4RjIsIDB4MEE1NywgMHg2OEY5LCAweDE0NkIsIDB4NjhGQSwgMHgwNUY5LCAweDY4RkMsIDB4MzkzMiwNCisgICAgMHg2OTAwLCAweDBGRjYsIDB4NjkwMSwgMHgxNDU5LCAweDY5MDQsIDB4MTQ2NywgMHg2OTA1LCAweDA0OUMsDQorICAgIDB4NjkwOCwgMHgxNDVCLCAweDY5MEIsIDB4MEVDNiwgMHg2OTBDLCAweDE0NjAsIDB4NjkwRCwgMHgwOUU4LA0KKyAgICAweDY5MEUsIDB4MEJFMywgMHg2OTBGLCAweDE0NTYsIDB4NjkxMSwgMHgzOTMzLCAweDY5MTIsIDB4MTQ2NiwNCisgICAgMHg2OTEzLCAweDM5MzQsIDB4NjkxOSwgMHgwQTQwLCAweDY5MUEsIDB4MTQ3MCwgMHg2OTFCLCAweDA1Q0YsDQorICAgIDB4NjkxQywgMHgwNzU1LCAweDY5MjEsIDB4MTQ3MiwgMHg2OTIyLCAweDE0NUQsIDB4NjkyMywgMHgxNDcxLA0KKyAgICAweDY5MjUsIDB4MTQ2QSwgMHg2OTI2LCAweDE0NUUsIDB4NjkyOCwgMHgxNDZFLCAweDY5MkEsIDB4MTQ2RiwNCisgICAgMHg2OTMwLCAweDE0ODAsIDB4NjkzNCwgMHgwQ0E2LCAweDY5MzUsIDB4MzkzNSwgMHg2OTM2LCAweDE0NjUsDQorICAgIDB4NjkzOSwgMHgxNDdDLCAweDY5M0IsIDB4MzkzNiwgMHg2OTNELCAweDE0N0UsIDB4NjkzRiwgMHgwQkY0LA0KKyAgICAweDY5NEEsIDB4MEYzNiwgMHg2OTUzLCAweDBERTgsIDB4Njk1NCwgMHgxNDc5LCAweDY5NTUsIDB4MEIyQSwNCisgICAgMHg2OTU3LCAweDM5MzcsIDB4Njk1OSwgMHgxNDdGLCAweDY5NUEsIDB4MEFDMSwgMHg2OTVDLCAweDE0NzYsDQorICAgIDB4Njk1RCwgMHgxNDgzLCAweDY5NUUsIDB4MTQ4MiwgMHg2OTYwLCAweDBDQzcsIDB4Njk2MSwgMHgxNDgxLA0KKyAgICAweDY5NjIsIDB4MENDMiwgMHg2OTYzLCAweDM5MzgsIDB4Njk2OCwgMHgyMTMyLCAweDY5NkEsIDB4MTQ4NSwNCisgICAgMHg2OTZCLCAweDE0NzgsIDB4Njk2RCwgMHgwNkMwLCAweDY5NkUsIDB4MTQ3QiwgMHg2OTZGLCAweDA5NjcsDQorICAgIDB4Njk3MiwgMHgzOTM5LCAweDY5NzMsIDB4MEQxNiwgMHg2OTc0LCAweDE0N0QsIDB4Njk3NSwgMHgwNkMzLA0KKyAgICAweDY5NzcsIDB4MTQ3NSwgMHg2OTc4LCAweDE0NzcsIDB4Njk3OSwgMHgxNDc0LCAweDY5N0MsIDB4MEZENiwNCisgICAgMHg2OTdELCAweDA1QjgsIDB4Njk3RSwgMHgxNDdBLCAweDY5N0YsIDB4MzkzQSwgMHg2OTgwLCAweDM5M0IsDQorICAgIDB4Njk4MSwgMHgxNDg0LCAweDY5ODIsIDB4MDU5MywgMHg2OThBLCAweDA4NTcsIDB4Njk4RSwgMHgwNEZGLA0KKyAgICAweDY5OTEsIDB4MTQ5NSwgMHg2OTk0LCAweDBGRDcsIDB4Njk5NSwgMHgxNDk4LCAweDY5OTgsIDB4MjEzNCwNCisgICAgMHg2OTlCLCAweDBBMDAsIDB4Njk5QywgMHgxNDk3LCAweDY5QTAsIDB4MTQ5NiwgMHg2OUE2LCAweDM5M0MsDQorICAgIDB4NjlBNywgMHgxNDkzLCAweDY5QUQsIDB4MzkzRCwgMHg2OUFFLCAweDE0ODcsIDB4NjlCMSwgMHgxNEE0LA0KKyAgICAweDY5QjIsIDB4MTQ4NiwgMHg2OUI0LCAweDE0OTksIDB4NjlCNywgMHgzOTNFLCAweDY5QkIsIDB4MTQ5MSwNCisgICAgMHg2OUJFLCAweDE0OEMsIDB4NjlCRiwgMHgxNDg5LCAweDY5QzEsIDB4MTQ4QSwgMHg2OUMzLCAweDE0OTIsDQorICAgIDB4NjlDNywgMHgxRDMzLCAweDY5Q0EsIDB4MTQ4RiwgMHg2OUNCLCAweDA3Q0YsIDB4NjlDQywgMHgwQkU0LA0KKyAgICAweDY5Q0QsIDB4MEFFNiwgMHg2OUNFLCAweDE0OEQsIDB4NjlEMCwgMHgxNDg4LCAweDY5RDMsIDB4MTQ4QiwNCisgICAgMHg2OUQ2LCAweDM5M0YsIDB4NjlENywgMHgzOTQwLCAweDY5RDgsIDB4MEYzNywgMHg2OUQ5LCAweDBFOTgsDQorICAgIDB4NjlERCwgMHgxNDkwLCAweDY5REUsIDB4MTQ5QSwgMHg2OUUyLCAweDIxMzUsIDB4NjlFNywgMHgxNEEyLA0KKyAgICAweDY5RTgsIDB4MTQ5QiwgMHg2OUVBLCAweDM1NkYsIDB4NjlFQiwgMHgxNEE4LCAweDY5RUQsIDB4MTRBNiwNCisgICAgMHg2OUYyLCAweDE0QTEsIDB4NjlGNiwgMHgzNzNGLCAweDY5RjksIDB4MTRBMCwgMHg2OUZCLCAweDBCRUMsDQorICAgIDB4NjlGRCwgMHgwQUU3LCAweDY5RkYsIDB4MTQ5RSwgMHg2QTAxLCAweDM5NDEsIDB4NkEwMiwgMHgxNDlDLA0KKyAgICAweDZBMDUsIDB4MTRBMywgMHg2QTBBLCAweDE0QTksIDB4NkEwQiwgMHgwRDg5LCAweDZBMEMsIDB4MTRBRiwNCisgICAgMHg2QTBGLCAweDM5NDIsIDB4NkExMiwgMHgxNEFBLCAweDZBMTMsIDB4MTRBRCwgMHg2QTE0LCAweDE0QTcsDQorICAgIDB4NkExNSwgMHgzOTQzLCAweDZBMTcsIDB4MEJCMiwgMHg2QTE5LCAweDBEQUEsIDB4NkExQiwgMHgxNDlELA0KKyAgICAweDZBMUUsIDB4MTRBNSwgMHg2QTFGLCAweDA5QTgsIDB4NkEyMSwgMHgwRURCLCAweDZBMjIsIDB4MTRCOSwNCisgICAgMHg2QTIzLCAweDE0QUMsIDB4NkEyOCwgMHgzOTQ0LCAweDZBMjksIDB4MDc1NiwgMHg2QTJBLCAweDA1MjMsDQorICAgIDB4NkEyQiwgMHgwNUJELCAweDZBMkUsIDB4MTQ5NCwgMHg2QTMwLCAweDIxMzYsIDB4NkEzNCwgMHgzOTQ1LA0KKyAgICAweDZBMzUsIDB4MDlBOSwgMHg2QTM2LCAweDE0QjEsIDB4NkEzOCwgMHgxNEI4LCAweDZBMzksIDB4MDkyNSwNCisgICAgMHg2QTNBLCAweDA1RDAsIDB4NkEzRCwgMHgwQjZDLCAweDZBM0UsIDB4Mzk0NiwgMHg2QTQ0LCAweDE0QUUsDQorICAgIDB4NkE0NSwgMHgzOTQ3LCAweDZBNDYsIDB4MjEzOCwgMHg2QTQ3LCAweDE0QjMsIDB4NkE0OCwgMHgxNEI3LA0KKyAgICAweDZBNEIsIDB4MDZBRSwgMHg2QTUwLCAweDM5NDgsIDB4NkE1MSwgMHgzOTQ5LCAweDZBNTQsIDB4M0MzNCwNCisgICAgMHg2QTU2LCAweDM5NEEsIDB4NkE1OCwgMHgwNjY2LCAweDZBNTksIDB4MTRCNSwgMHg2QTVCLCAweDM5NEIsDQorICAgIDB4NkE1RiwgMHgwNjNCLCAweDZBNjEsIDB4MENBMywgMHg2QTYyLCAweDE0QjQsIDB4NkE2NiwgMHgxNEI2LA0KKyAgICAweDZBNkIsIDB4MjEzNywgMHg2QTcyLCAweDE0QjAsIDB4NkE3MywgMHgyMTM5LCAweDZBNzgsIDB4MTRCMiwNCisgICAgMHg2QTdFLCAweDIxM0EsIDB4NkE3RiwgMHgwNUJFLCAweDZBODAsIDB4MEI4NywgMHg2QTgzLCAweDM5NEMsDQorICAgIDB4NkE4NCwgMHgxNEJELCAweDZBODksIDB4Mzk0RCwgMHg2QThELCAweDE0QkIsIDB4NkE4RSwgMHgwNzlELA0KKyAgICAweDZBOTAsIDB4MTRCQSwgMHg2QTkxLCAweDM5NEUsIDB4NkE5NywgMHgxNEMwLCAweDZBOUMsIDB4MTQzQiwNCisgICAgMHg2QTlELCAweDM5NEYsIDB4NkE5RSwgMHgzOTUwLCAweDZBOUYsIDB4Mzk1MSwgMHg2QUEwLCAweDE0QkMsDQorICAgIDB4NkFBMiwgMHgxNEJFLCAweDZBQTMsIDB4MTRCRiwgMHg2QUFBLCAweDE0Q0IsIDB4NkFBQywgMHgxNEM3LA0KKyAgICAweDZBQUUsIDB4MTQ1MCwgMHg2QUIzLCAweDE0QzYsIDB4NkFCOCwgMHgxNEM1LCAweDZBQkIsIDB4MTRDMiwNCisgICAgMHg2QUMxLCAweDE0QUIsIDB4NkFDMiwgMHgxNEM0LCAweDZBQzMsIDB4MTRDMywgMHg2QUQxLCAweDE0QzksDQorICAgIDB4NkFEMywgMHgwRkNDLCAweDZBREEsIDB4MTRDQywgMHg2QURCLCAweDA2RjMsIDB4NkFEQywgMHgzOTUyLA0KKyAgICAweDZBREUsIDB4MTRDOCwgMHg2QURGLCAweDE0Q0EsIDB4NkFFMiwgMHgyMTNCLCAweDZBRTQsIDB4MjEzQywNCisgICAgMHg2QUU3LCAweDM5NTMsIDB4NkFFOCwgMHgwRDNCLCAweDZBRUEsIDB4MTRDRCwgMHg2QUVDLCAweDM5NTQsDQorICAgIDB4NkFGQSwgMHgxNEQxLCAweDZBRkIsIDB4MTRDRSwgMHg2QjA0LCAweDBGNUQsIDB4NkIwNSwgMHgxNENGLA0KKyAgICAweDZCMEEsIDB4MTQ5RiwgMHg2QjEyLCAweDE0RDIsIDB4NkIxNiwgMHgxNEQzLCAweDZCMUQsIDB4MDRENywNCisgICAgMHg2QjFFLCAweDM5NTUsIDB4NkIxRiwgMHgxNEQ1LCAweDZCMjAsIDB4MDczRCwgMHg2QjIxLCAweDA4Q0QsDQorICAgIDB4NkIyMywgMHgwNkNELCAweDZCMjQsIDB4Mzk1NiwgMHg2QjI3LCAweDA1MjQsIDB4NkIzMiwgMHgwRjQ5LA0KKyAgICAweDZCMzUsIDB4Mzk1NywgMHg2QjM3LCAweDE0RDcsIDB4NkIzOCwgMHgxNEQ2LCAweDZCMzksIDB4MTREOSwNCisgICAgMHg2QjNBLCAweDA2NTcsIDB4NkIzRCwgMHgwNkNFLCAweDZCM0UsIDB4MDVGQSwgMHg2QjQzLCAweDE0REMsDQorICAgIDB4NkI0NiwgMHgzOTU4LCAweDZCNDcsIDB4MTREQiwgMHg2QjQ5LCAweDE0REQsIDB4NkI0QywgMHgwNTRFLA0KKyAgICAweDZCNEUsIDB4MEI3NSwgMHg2QjUwLCAweDE0REUsIDB4NkI1MywgMHgwNUZCLCAweDZCNTQsIDB4MTRFMCwNCisgICAgMHg2QjU2LCAweDM5NTksIDB4NkI1OSwgMHgxNERGLCAweDZCNUIsIDB4MTRFMSwgMHg2QjVGLCAweDE0RTIsDQorICAgIDB4NkI2MCwgMHgzOTVBLCAweDZCNjEsIDB4MTRFMywgMHg2QjYyLCAweDA4QUQsIDB4NkI2MywgMHgwQTU5LA0KKyAgICAweDZCNjQsIDB4MDgxMSwgMHg2QjY1LCAweDM0NEEsIDB4NkI2NiwgMHgwREUyLCAweDZCNjksIDB4MEUzMiwNCisgICAgMHg2QjZBLCAweDBGRUEsIDB4NkI2RiwgMHgwOEMzLCAweDZCNzIsIDB4MzVEOSwgMHg2QjczLCAweDA4NDAsDQorICAgIDB4NkI3NCwgMHgwRkJBLCAweDZCNzcsIDB4MzQ1NiwgMHg2Qjc4LCAweDE0RTQsIDB4NkI3OSwgMHgxNEU1LA0KKyAgICAweDZCN0IsIDB4MDhBRSwgMHg2QjdGLCAweDE0RTYsIDB4NkI4MCwgMHgxNEU3LCAweDZCODIsIDB4Mzk1QiwNCisgICAgMHg2QjgzLCAweDE0RTksIDB4NkI4NCwgMHgxNEU4LCAweDZCODYsIDB4MEU4NiwgMHg2Qjg5LCAweDA5NjgsDQorICAgIDB4NkI4QSwgMHgwOTE4LCAweDZCOEIsIDB4MDg5MiwgMHg2QjhELCAweDE0RUEsIDB4NkI5NSwgMHgxNEVDLA0KKyAgICAweDZCOTYsIDB4MDlFOSwgMHg2Qjk4LCAweDE0RUIsIDB4NkI5RSwgMHgxNEVELCAweDZCQTQsIDB4MTRFRSwNCisgICAgMHg2QkFBLCAweDE0RUYsIDB4NkJBQiwgMHgxNEYwLCAweDZCQUYsIDB4MTRGMSwgMHg2QkIxLCAweDE0RjMsDQorICAgIDB4NkJCMiwgMHgxNEYyLCAweDZCQjMsIDB4MTRGNCwgMHg2QkI0LCAweDA1MjUsIDB4NkJCNSwgMHgwQjg4LA0KKyAgICAweDZCQjcsIDB4MTRGNSwgMHg2QkJBLCAweDA4NzQsIDB4NkJCQiwgMHgwNUFBLCAweDZCQkMsIDB4MTRGNiwNCisgICAgMHg2QkJFLCAweDM5NUMsIDB4NkJCRiwgMHgwQzNDLCAweDZCQzAsIDB4MTE5RCwgMHg2QkM1LCAweDA2M0QsDQorICAgIDB4NkJDNiwgMHgxNEY3LCAweDZCQ0IsIDB4MTRGOCwgMHg2QkNDLCAweDM3NDQsIDB4NkJDRCwgMHgwRTNDLA0KKyAgICAweDZCQ0UsIDB4MEU5NiwgMHg2QkNGLCAweDM0NEMsIDB4NkJEMiwgMHgwQzlGLCAweDZCRDMsIDB4MTRGOSwNCisgICAgMHg2QkQ0LCAweDBEN0EsIDB4NkJENiwgMHgyMTNELCAweDZCRDgsIDB4MEQ4RiwgMHg2QkRCLCAweDBFREYsDQorICAgIDB4NkJERiwgMHgxNEZBLCAweDZCRTEsIDB4Mzk1RCwgMHg2QkVCLCAweDE0RkMsIDB4NkJFQywgMHgxNEZCLA0KKyAgICAweDZCRUYsIDB4MTRGRSwgMHg2QkYxLCAweDM5NUUsIDB4NkJGMywgMHgxNEZELCAweDZDMDgsIDB4MTUwMCwNCisgICAgMHg2QzBGLCAweDA4QUYsIDB4NkMxMCwgMHgzOTVGLCAweDZDMTEsIDB4MEVCRCwgMHg2QzEzLCAweDE1MDEsDQorICAgIDB4NkMxNCwgMHgxNTAyLCAweDZDMTcsIDB4MDYzRSwgMHg2QzFCLCAweDE1MDMsIDB4NkMyMywgMHgxNTA1LA0KKyAgICAweDZDMjQsIDB4MTUwNCwgMHg2QzMzLCAweDM5NjAsIDB4NkMzNCwgMHgwQTJCLCAweDZDMzUsIDB4Mzk2MSwNCisgICAgMHg2QzM3LCAweDBEQUIsIDB4NkMzOCwgMHgwNEVDLCAweDZDM0EsIDB4Mzk2MiwgMHg2QzNFLCAweDBENTksDQorICAgIDB4NkMzRiwgMHgyMTNFLCAweDZDNDAsIDB4MEMxMSwgMHg2QzQxLCAweDA5NEIsIDB4NkM0MiwgMHgwNjdCLA0KKyAgICAweDZDNEUsIDB4MEQ1QSwgMHg2QzUwLCAweDA4REEsIDB4NkM1NSwgMHgxNTA3LCAweDZDNTcsIDB4MDVGQywNCisgICAgMHg2QzU5LCAweDM5NjMsIDB4NkM1QSwgMHgwNTFBLCAweDZDNUMsIDB4MjEzRiwgMHg2QzVELCAweDBDQ0EsDQorICAgIDB4NkM1RSwgMHgxNTA2LCAweDZDNUYsIDB4MDdEMCwgMHg2QzYwLCAweDBCOTEsIDB4NkM2MiwgMHgxNTA4LA0KKyAgICAweDZDNjgsIDB4MTUxMCwgMHg2QzZBLCAweDE1MDksIDB4NkM2RiwgMHgyMTQxLCAweDZDNzAsIDB4MEIyMSwNCisgICAgMHg2QzcyLCAweDA2N0MsIDB4NkM3MywgMHgxNTExLCAweDZDNzYsIDB4Mzk2NCwgMHg2QzdBLCAweDA3M0UsDQorICAgIDB4NkM3QiwgMHgzOTY1LCAweDZDN0QsIDB4MDYzRiwgMHg2QzdFLCAweDE1MEYsIDB4NkM4MSwgMHgxNTBELA0KKyAgICAweDZDODIsIDB4MTUwQSwgMHg2QzgzLCAweDBGNEEsIDB4NkM4NSwgMHgzOTY2LCAweDZDODYsIDB4MjE0MCwNCisgICAgMHg2Qzg4LCAweDBCREMsIDB4NkM4QywgMHgwQ0IxLCAweDZDOEQsIDB4MTUwQiwgMHg2QzkwLCAweDE1MTMsDQorICAgIDB4NkM5MiwgMHgxNTEyLCAweDZDOTMsIDB4MDZGOSwgMHg2Qzk1LCAweDM5NjcsIDB4NkM5NiwgMHgwNTJELA0KKyAgICAweDZDOTksIDB4MDgyQiwgMHg2QzlBLCAweDE1MEMsIDB4NkM5QiwgMHgxNTBFLCAweDZDOUMsIDB4Mzk2OCwNCisgICAgMHg2Q0ExLCAweDBFODUsIDB4NkNBMiwgMHgwQjU0LCAweDZDQUEsIDB4Mzc0OSwgMHg2Q0FCLCAweDBFQTUsDQorICAgIDB4NkNBRSwgMHgxNTFCLCAweDZDQjEsIDB4MTUxQywgMHg2Q0IzLCAweDA1NEYsIDB4NkNCOCwgMHgwREY4LA0KKyAgICAweDZDQjksIDB4MEYwOSwgMHg2Q0JBLCAweDE1MUUsIDB4NkNCQiwgMHgwOENGLCAweDZDQkMsIDB4MDlBQSwNCisgICAgMHg2Q0JELCAweDE1MTcsIDB4NkNCRSwgMHgxNTFELCAweDZDQkYsIDB4MDUwQSwgMHg2Q0MxLCAweDA2QUYsDQorICAgIDB4NkNDNCwgMHgxNTE0LCAweDZDQzUsIDB4MTUxOSwgMHg2Q0M5LCAweDBBOTgsIDB4NkNDQSwgMHgwRDI3LA0KKyAgICAweDZDQ0MsIDB4MEQ3QiwgMHg2Q0QwLCAweDM5NjksIDB4NkNEMywgMHgxNTE2LCAweDZDRDQsIDB4Mzk2QSwNCisgICAgMHg2Q0Q1LCAweDBFNEYsIDB4NkNENiwgMHgzOTZCLCAweDZDRDcsIDB4MTUxOCwgMHg2Q0Q5LCAweDE1MjEsDQorICAgIDB4NkNEQSwgMHgyMTQyLCAweDZDREIsIDB4MTUxRiwgMHg2Q0RELCAweDE1MUEsIDB4NkNFMCwgMHgzOTZDLA0KKyAgICAweDZDRTEsIDB4MEU1MCwgMHg2Q0UyLCAweDBDRkUsIDB4NkNFMywgMHgwNjdELCAweDZDRTUsIDB4MEMxRiwNCisgICAgMHg2Q0U4LCAweDBCQUIsIDB4NkNFQSwgMHgxNTIyLCAweDZDRUIsIDB4Mzk2RCwgMHg2Q0VDLCAweDM5NkUsDQorICAgIDB4NkNFRSwgMHgzOTZGLCAweDZDRUYsIDB4MTUyMCwgMHg2Q0YwLCAweDBCMzksIDB4NkNGMSwgMHgxNTE1LA0KKyAgICAweDZDRjMsIDB4MDRFRCwgMHg2RDAxLCAweDNDMzUsIDB4NkQwNCwgMHgyMTQzLCAweDZEMEEsIDB4Mzk3MCwNCisgICAgMHg2RDBCLCAweDBGMzgsIDB4NkQwQywgMHgxNTJELCAweDZEMEUsIDB4Mzk3MSwgMHg2RDExLCAweDM5NzIsDQorICAgIDB4NkQxMiwgMHgxNTJDLCAweDZEMTcsIDB4MEE5QSwgMHg2RDE5LCAweDE1MjksIDB4NkQxQiwgMHgwRjU2LA0KKyAgICAweDZEMUUsIDB4MEM4RSwgMHg2RDFGLCAweDE1MjMsIDB4NkQyNSwgMHgwQkUxLCAweDZEMjksIDB4MDRFRSwNCisgICAgMHg2RDJBLCAweDA3RDEsIDB4NkQyQiwgMHgxNTI2LCAweDZEMkUsIDB4Mzk3MywgMHg2RDMyLCAweDA5MzEsDQorICAgIDB4NkQzMywgMHgxNTJCLCAweDZEMzUsIDB4MTUyQSwgMHg2RDM2LCAweDE1MjUsIDB4NkQzOCwgMHgxNTI4LA0KKyAgICAweDZEM0IsIDB4MDVDNiwgMHg2RDNELCAweDE1MjcsIDB4NkQzRSwgMHgwQ0ZGLCAweDZENDEsIDB4MEY3NiwNCisgICAgMHg2RDQ0LCAweDA5REMsIDB4NkQ0NSwgMHgwQTk5LCAweDZENTcsIDB4Mzk3NCwgMHg2RDU5LCAweDE1MzMsDQorICAgIDB4NkQ1QSwgMHgxNTMxLCAweDZENUMsIDB4MERCRiwgMHg2RDVFLCAweDM5NzUsIDB4NkQ2MywgMHgxNTJFLA0KKyAgICAweDZENjQsIDB4MTUzMCwgMHg2RDY1LCAweDM5NzYsIDB4NkQ2NiwgMHgwNERDLCAweDZENjksIDB4MDdEMiwNCisgICAgMHg2RDZBLCAweDBGRDgsIDB4NkQ2QywgMHgwNTlCLCAweDZENkUsIDB4MERENCwgMHg2RDZGLCAweDIxNDUsDQorICAgIDB4NkQ3NCwgMHgwRjRCLCAweDZENzcsIDB4MDU4MiwgMHg2RDc4LCAweDBBMDEsIDB4NkQ3OSwgMHgxNTMyLA0KKyAgICAweDZEODIsIDB4Mzk3NywgMHg2RDg1LCAweDE1MzcsIDB4NkQ4NywgMHgyMTQ0LCAweDZEODgsIDB4MDlBQiwNCisgICAgMHg2RDg5LCAweDM0MkEsIDB4NkQ4QywgMHgwRjFBLCAweDZEOEUsIDB4MTUzNCwgMHg2RDkzLCAweDE1MkYsDQorICAgIDB4NkQ5NSwgMHgxNTM1LCAweDZEOTYsIDB4MjE0NiwgMHg2RDk5LCAweDBGQTYsIDB4NkQ5QiwgMHgwQzZELA0KKyAgICAweDZEOUMsIDB4MEM5QSwgMHg2REFDLCAweDIxNDcsIDB4NkRBRiwgMHgwNTk0LCAweDZEQjIsIDB4MDRGNywNCisgICAgMHg2REI1LCAweDE1M0IsIDB4NkRCOCwgMHgxNTNFLCAweDZEQkMsIDB4MEY4QiwgMHg2REJGLCAweDM5NzgsDQorICAgIDB4NkRDMCwgMHgwRjRFLCAweDZEQzQsIDB4Mzk3OSwgMHg2REM1LCAweDE1NDUsIDB4NkRDNiwgMHgxNTNGLA0KKyAgICAweDZEQzcsIDB4MTUzQywgMHg2RENBLCAweDM5N0EsIDB4NkRDQiwgMHgwRjlDLCAweDZEQ0MsIDB4MTU0MiwNCisgICAgMHg2RENGLCAweDIxNDgsIDB4NkREMCwgMHgzQzM2LCAweDZERDEsIDB4MDk1NCwgMHg2REQyLCAweDE1NDQsDQorICAgIDB4NkRENSwgMHgxNTQ5LCAweDZERDYsIDB4Mzk3QiwgMHg2REQ4LCAweDBDNkIsIDB4NkREOSwgMHgxNTQ3LA0KKyAgICAweDZEREEsIDB4MzQ1MywgMHg2RERFLCAweDE1NDEsIDB4NkRFMSwgMHgwQjc2LCAweDZERTQsIDB4MTU0OCwNCisgICAgMHg2REU2LCAweDE1M0QsIDB4NkRFOCwgMHgxNTQzLCAweDZERTksIDB4Mzk3QywgMHg2REVBLCAweDE1NEEsDQorICAgIDB4NkRFQiwgMHgwNEMwLCAweDZERUMsIDB4MTU0MCwgMHg2REVFLCAweDE1NEIsIDB4NkRGMSwgMHgwQTAyLA0KKyAgICAweDZERjIsIDB4MjE0QSwgMHg2REYzLCAweDA5NjksIDB4NkRGNSwgMHgwREY1LCAweDZERjcsIDB4MDgxRSwNCisgICAgMHg2REY4LCAweDIxNDksIDB4NkRGOSwgMHgxNTM4LCAweDZERkEsIDB4MTU0NiwgMHg2REZCLCAweDBDMzQsDQorICAgIDB4NkRGQywgMHgyMTRCLCAweDZFMDUsIDB4MEE1QSwgMHg2RTA3LCAweDA1QzcsIDB4NkUwOCwgMHgwODQxLA0KKyAgICAweDZFMDksIDB4MDlBQywgMHg2RTBBLCAweDE1M0EsIDB4NkUwQiwgMHgwOTRDLCAweDZFMTMsIDB4MDcyMiwNCisgICAgMHg2RTE1LCAweDE1MzksIDB4NkUxNywgMHgzNzQ2LCAweDZFMTksIDB4MTU0RiwgMHg2RTFBLCAweDA5NzcsDQorICAgIDB4NkUxQiwgMHgwNzZFLCAweDZFMUQsIDB4MTU1RSwgMHg2RTFGLCAweDE1NTgsIDB4NkUyMCwgMHgwNjhFLA0KKyAgICAweDZFMjEsIDB4MEM0OSwgMHg2RTIyLCAweDM5N0QsIDB4NkUyMywgMHgxNTUzLCAweDZFMjQsIDB4MTU1QywNCisgICAgMHg2RTI1LCAweDA0NzMsIDB4NkUyNiwgMHgwNEQ0LCAweDZFMjcsIDB4MjE0RSwgMHg2RTI5LCAweDA1MzksDQorICAgIDB4NkUyQiwgMHgxNTU1LCAweDZFMkMsIDB4MEIwQywgMHg2RTJELCAweDE1NEMsIDB4NkUyRSwgMHgxNTRFLA0KKyAgICAweDZFMkYsIDB4MDdEMywgMHg2RTM0LCAweDM0MTIsIDB4NkUzOCwgMHgxNTVGLCAweDZFMzksIDB4MjE0QywNCisgICAgMHg2RTNBLCAweDE1NUEsIDB4NkUzQywgMHgyMTRGLCAweDZFM0UsIDB4MTU1MiwgMHg2RTQyLCAweDNDMzcsDQorICAgIDB4NkU0MywgMHgxNTU5LCAweDZFNEEsIDB4MEVCNywgMHg2RTRELCAweDE1NTcsIDB4NkU0RSwgMHgxNTVCLA0KKyAgICAweDZFNTEsIDB4Mzk3RSwgMHg2RTU2LCAweDA3ODQsIDB4NkU1OCwgMHgwOUFELCAweDZFNUIsIDB4MEI3NywNCisgICAgMHg2RTVDLCAweDIxNEQsIDB4NkU1RiwgMHgxNTUxLCAweDZFNjcsIDB4MEYxOSwgMHg2RTZCLCAweDE1NTQsDQorICAgIDB4NkU2RSwgMHgxNTRELCAweDZFNkYsIDB4MEM2QywgMHg2RTcyLCAweDE1NTAsIDB4NkU3NiwgMHgxNTU2LA0KKyAgICAweDZFN0UsIDB4MEZGNywgMHg2RTdGLCAweDA4RUEsIDB4NkU4MCwgMHgwRUFDLCAweDZFODIsIDB4MTU2MCwNCisgICAgMHg2RThDLCAweDBENDIsIDB4NkU4RiwgMHgxNTZDLCAweDZFOTAsIDB4MDc2RiwgMHg2RTk2LCAweDA5NkEsDQorICAgIDB4NkU5OCwgMHgxNTYyLCAweDZFOUMsIDB4MEY3NywgMHg2RTlELCAweDA3RDQsIDB4NkU5RiwgMHgxNTZGLA0KKyAgICAweDZFQTIsIDB4MDRCMiwgMHg2RUE1LCAweDE1NkQsIDB4NkVBQSwgMHgxNTYxLCAweDZFQUIsIDB4MzQwQywNCisgICAgMHg2RUFGLCAweDE1NjcsIDB4NkVCMiwgMHgxNTY5LCAweDZFQjYsIDB4MEYzOSwgMHg2RUI3LCAweDE1NjQsDQorICAgIDB4NkVCQSwgMHgwQzI4LCAweDZFQkQsIDB4MTU2NiwgMHg2RUJGLCAweDIxNTAsIDB4NkVDMiwgMHgxNTZFLA0KKyAgICAweDZFQzQsIDB4MTU2OCwgMHg2RUM1LCAweDBFRDMsIDB4NkVDNywgMHgzOTdGLCAweDZFQzksIDB4MTU2MywNCisgICAgMHg2RUNBLCAweDM5ODAsIDB4NkVDQiwgMHgwOENFLCAweDZFQ0MsIDB4MTU3QiwgMHg2RUNFLCAweDM5ODEsDQorICAgIDB4NkVEMSwgMHgwNUM4LCAweDZFRDMsIDB4MTU2NSwgMHg2RUQ0LCAweDE1NkEsIDB4NkVENSwgMHgxNTZCLA0KKyAgICAweDZFRDksIDB4M0MzOCwgMHg2RURELCAweDBCNEMsIDB4NkVERSwgMHgwQjNBLCAweDZFRTYsIDB4M0MyNCwNCisgICAgMHg2RUVDLCAweDE1NzMsIDB4NkVFRiwgMHgxNTc5LCAweDZFRjIsIDB4MTU3NywgMHg2RUY0LCAweDBDMjMsDQorICAgIDB4NkVGNywgMHgxNTdFLCAweDZFRjgsIDB4MTU3NCwgMHg2RUZELCAweDM5ODIsIDB4NkVGRSwgMHgxNTc1LA0KKyAgICAweDZFRkYsIDB4MTU1RCwgMHg2RjAxLCAweDA2OTMsIDB4NkYwMiwgMHgwREFDLCAweDZGMDYsIDB4MDhFQiwNCisgICAgMHg2RjA5LCAweDA4MDksIDB4NkYwRiwgMHgwRkQ5LCAweDZGMTEsIDB4MTU3MSwgMHg2RjEzLCAweDE1N0QsDQorICAgIDB4NkYxNCwgMHgwNTBCLCAweDZGMTUsIDB4MEFFOCwgMHg2RjFBLCAweDM5ODMsIDB4NkYyMCwgMHgwRDJGLA0KKyAgICAweDZGMjIsIDB4MDVGRCwgMHg2RjIzLCAweDBGQzIsIDB4NkYyQSwgMHgzOTg0LCAweDZGMkIsIDB4MEVBRCwNCisgICAgMHg2RjJDLCAweDBCRUUsIDB4NkYyRiwgMHgzOTg1LCAweDZGMzEsIDB4MTU3OCwgMHg2RjMyLCAweDE1N0EsDQorICAgIDB4NkYzMywgMHgzOTg2LCAweDZGMzgsIDB4MEFCNCwgMHg2RjNFLCAweDE1N0MsIDB4NkYzRiwgMHgxNTc2LA0KKyAgICAweDZGNDEsIDB4MTU3MCwgMHg2RjQ1LCAweDA1RkYsIDB4NkY1MSwgMHgxRTYwLCAweDZGNTQsIDB4MDczRiwNCisgICAgMHg2RjU4LCAweDE1OEEsIDB4NkY1QSwgMHgzOTg3LCAweDZGNUIsIDB4MTU4NSwgMHg2RjVDLCAweDBBOUMsDQorICAgIDB4NkY1RSwgMHgzOTg4LCAweDZGNUYsIDB4MDVDMSwgMHg2RjYyLCAweDM5ODksIDB4NkY2NCwgMHgwOTZCLA0KKyAgICAweDZGNjYsIDB4MTU4RSwgMHg2RjZELCAweDE1ODcsIDB4NkY2RSwgMHgwQkM4LCAweDZGNkYsIDB4MTU4NCwNCisgICAgMHg2RjcwLCAweDBCRjUsIDB4NkY3NCwgMHgxNUE3LCAweDZGNzgsIDB4MTU4MSwgMHg2RjdBLCAweDE1ODAsDQorICAgIDB4NkY3QywgMHgxNTg5LCAweDZGN0QsIDB4Mzk4QSwgMHg2RjgwLCAweDE1ODMsIDB4NkY4MSwgMHgxNTgyLA0KKyAgICAweDZGODIsIDB4MTU4OCwgMHg2Rjg0LCAweDBBNDUsIDB4NkY4NiwgMHgxNTdGLCAweDZGODgsIDB4MjE1MSwNCisgICAgMHg2RjhCLCAweDM5OEIsIDB4NkY4RCwgMHgzOThDLCAweDZGOEUsIDB4MTU4QiwgMHg2RjkxLCAweDE1OEMsDQorICAgIDB4NkY5MiwgMHgzOThELCAweDZGOTQsIDB4Mzk4RSwgMHg2Rjk3LCAweDA1RkUsIDB4NkY5OCwgMHgzNjNDLA0KKyAgICAweDZGOUEsIDB4Mzk4RiwgMHg2RkExLCAweDE1OTEsIDB4NkZBMywgMHgxNTkwLCAweDZGQTQsIDB4MTU5MiwNCisgICAgMHg2RkE3LCAweDM5OTAsIDB4NkZBOCwgMHgzOTkxLCAweDZGQUEsIDB4MTU5NSwgMHg2RkIxLCAweDBDM0QsDQorICAgIDB4NkZCMywgMHgxNThGLCAweDZGQjUsIDB4MjE1MiwgMHg2RkI2LCAweDM5OTIsIDB4NkZCOSwgMHgxNTkzLA0KKyAgICAweDZGQzAsIDB4MDczOSwgMHg2RkMxLCAweDBCNTksIDB4NkZDMiwgMHgxNThELCAweDZGQzMsIDB4MENGMSwNCisgICAgMHg2RkM2LCAweDE1OTQsIDB4NkZENCwgMHgxNTk5LCAweDZGRDUsIDB4MTU5NywgMHg2RkQ4LCAweDE1OUEsDQorICAgIDB4NkZEQSwgMHgzOTkzLCAweDZGREIsIDB4MTU5RCwgMHg2RkRFLCAweDM5OTQsIDB4NkZERiwgMHgxNTk2LA0KKyAgICAweDZGRTAsIDB4MDdGQywgMHg2RkUxLCAweDBDREUsIDB4NkZFNCwgMHgxNTM2LCAweDZGRUIsIDB4MEY1RSwNCisgICAgMHg2RkVDLCAweDE1OTgsIDB4NkZFRSwgMHgxNTlDLCAweDZGRUYsIDB4MEI1NSwgMHg2RkYxLCAweDE1OUIsDQorICAgIDB4NkZGMywgMHgxNTg2LCAweDZGRjUsIDB4MjE1MywgMHg2RkY2LCAweDFCQTQsIDB4NkZGOSwgMHgzOTk1LA0KKyAgICAweDZGRkEsIDB4MTVBMCwgMHg2RkZFLCAweDE1QTQsIDB4NzAwMSwgMHgxNUEyLCAweDcwMDUsIDB4MjE1NCwNCisgICAgMHg3MDA2LCAweDFFNTAsIDB4NzAwNywgMHgyMTU1LCAweDcwMDksIDB4MTU5RSwgMHg3MDBCLCAweDE1OUYsDQorICAgIDB4NzAwRiwgMHgxNUEzLCAweDcwMTEsIDB4MTVBMSwgMHg3MDE1LCAweDBEQzAsIDB4NzAxOCwgMHgxNUE5LA0KKyAgICAweDcwMUEsIDB4MTVBNiwgMHg3MDFCLCAweDE1QTUsIDB4NzAxRCwgMHgxNUE4LCAweDcwMUUsIDB4MENBQywNCisgICAgMHg3MDFGLCAweDE1QUEsIDB4NzAyNiwgMHgwQkIzLCAweDcwMjcsIDB4MEI0RCwgMHg3MDI4LCAweDIxNTYsDQorICAgIDB4NzAyQywgMHgwQTQ5LCAweDcwMzAsIDB4MTVBQiwgMHg3MDMyLCAweDE1QUQsIDB4NzAzOSwgMHgzOTk2LA0KKyAgICAweDcwM0MsIDB4Mzk5NywgMHg3MDNFLCAweDE1QUMsIDB4NzA0QSwgMHgzOTk4LCAweDcwNEMsIDB4MTU3MiwNCisgICAgMHg3MDUxLCAweDE1QUUsIDB4NzA1NCwgMHgzOTk5LCAweDcwNTgsIDB4MENCRiwgMHg3MDVELCAweDM5OUEsDQorICAgIDB4NzA1RSwgMHgzOTlCLCAweDcwNjMsIDB4MTVBRiwgMHg3MDY0LCAweDM5OUMsIDB4NzA2QiwgMHgwNTUwLA0KKyAgICAweDcwNkMsIDB4Mzk5RCwgMHg3MDZGLCAweDBDNkUsIDB4NzA3MCwgMHgwNTgzLCAweDcwNzgsIDB4MDY3RSwNCisgICAgMHg3MDdDLCAweDA5MEEsIDB4NzA3RCwgMHgwODQyLCAweDcwN0UsIDB4Mzk5RSwgMHg3MDgxLCAweDM5OUYsDQorICAgIDB4NzA4NSwgMHgyMTU3LCAweDcwODksIDB4MEZDRCwgMHg3MDhBLCAweDBBMkMsIDB4NzA4RSwgMHgwNTBDLA0KKyAgICAweDcwOTIsIDB4MTVCMSwgMHg3MDk1LCAweDM5QTAsIDB4NzA5OSwgMHgxNUIwLCAweDcwQUIsIDB4MjE1OCwNCisgICAgMHg3MEFDLCAweDE1QjQsIDB4NzBBRCwgMHgwQjc4LCAweDcwQUUsIDB4MTVCNywgMHg3MEFGLCAweDE1QjIsDQorICAgIDB4NzBCMywgMHgxNUI2LCAweDcwQjcsIDB4MzlBMSwgMHg3MEI4LCAweDE1QjUsIDB4NzBCOSwgMHgwQzNBLA0KKyAgICAweDcwQkEsIDB4MDQ5RCwgMHg3MEJCLCAweDIwQUQsIDB4NzBDOCwgMHgwRkJELCAweDcwQ0IsIDB4MTVCOSwNCisgICAgMHg3MENGLCAweDA0Q0EsIDB4NzBEMywgMHgzOUEyLCAweDcwRDQsIDB4MzlBMywgMHg3MEQ4LCAweDM5QTQsDQorICAgIDB4NzBEOSwgMHgxNUJCLCAweDcwREMsIDB4MzlBNSwgMHg3MERELCAweDE1QkEsIDB4NzBERiwgMHgxNUI4LA0KKyAgICAweDcwRjEsIDB4MTVCMywgMHg3MEY5LCAweDBFNTEsIDB4NzBGRCwgMHgxNUJELCAweDcxMDQsIDB4MjE1QSwNCisgICAgMHg3MTA3LCAweDM5QTYsIDB4NzEwOSwgMHgxNUJDLCAweDcxMEYsIDB4MjE1OSwgMHg3MTE0LCAweDA1MEQsDQorICAgIDB4NzExOSwgMHgxNUJGLCAweDcxMUEsIDB4MEUwMiwgMHg3MTFDLCAweDE1QkUsIDB4NzEyMCwgMHgzOUE3LA0KKyAgICAweDcxMjEsIDB4MEVDMSwgMHg3MTI2LCAweDA5QUYsIDB4NzEzMCwgMHgxRERDLCAweDcxMzEsIDB4MzlBOCwNCisgICAgMHg3MTM2LCAweDBBQjUsIDB4NzEzQywgMHgwOUFFLCAweDcxNDYsIDB4MjE1QywgMHg3MTQ3LCAweDIxNUQsDQorICAgIDB4NzE0OSwgMHgwRkMzLCAweDcxNEEsIDB4MzlBOSwgMHg3MTRDLCAweDE1QzUsIDB4NzE0RSwgMHgwQTlELA0KKyAgICAweDcxNTIsIDB4MzlBQSwgMHg3MTU1LCAweDE1QzEsIDB4NzE1NiwgMHgxNUM2LCAweDcxNTksIDB4MDUwRSwNCisgICAgMHg3MTVDLCAweDIxNUIsIDB4NzE2MCwgMHgzOUFCLCAweDcxNjIsIDB4MTVDNCwgMHg3MTY0LCAweDBEMTcsDQorICAgIDB4NzE2NSwgMHgxNUMwLCAweDcxNjYsIDB4MTVDMywgMHg3MTY3LCAweDA5QjAsIDB4NzE2OSwgMHgwRDY1LA0KKyAgICAweDcxNkMsIDB4MTVDNywgMHg3MTZFLCAweDA4RkQsIDB4NzE3OSwgMHgzOUFDLCAweDcxN0QsIDB4MEE5RSwNCisgICAgMHg3MTg0LCAweDE1Q0EsIDB4NzE4OCwgMHgxNUMyLCAweDcxOEEsIDB4MDZGRCwgMHg3MThGLCAweDE1QzgsDQorICAgIDB4NzE5MiwgMHgzOUFELCAweDcxOTQsIDB4MEYzQSwgMHg3MTk1LCAweDE1Q0IsIDB4NzE5OSwgMHgyMDVELA0KKyAgICAweDcxOUYsIDB4MDk1OSwgMHg3MUE4LCAweDE1Q0MsIDB4NzFBQywgMHgxNUNELCAweDcxQjEsIDB4MENFNCwNCisgICAgMHg3MUIzLCAweDM5QUUsIDB4NzFCOSwgMHgxNUNGLCAweDcxQkUsIDB4MTVEMCwgMHg3MUMxLCAweDIxNUYsDQorICAgIDB4NzFDMywgMHgwQ0U5LCAweDcxQzgsIDB4MEM2RiwgMHg3MUM5LCAweDE1RDIsIDB4NzFDQiwgMHgzOUFGLA0KKyAgICAweDcxQ0UsIDB4MTVENCwgMHg3MUQwLCAweDBGOUQsIDB4NzFEMiwgMHgxNUQxLCAweDcxRDMsIDB4MzlCMCwNCisgICAgMHg3MUQ0LCAweDE1RDMsIDB4NzFENSwgMHgwNTBGLCAweDcxRDYsIDB4MzlCMSwgMHg3MUQ3LCAweDE1Q0UsDQorICAgIDB4NzFERiwgMHgxMTRFLCAweDcxRTAsIDB4MTVENSwgMHg3MUU1LCAweDBBRTksIDB4NzFFNiwgMHgwODg2LA0KKyAgICAweDcxRTcsIDB4MTVENywgMHg3MUVDLCAweDE1RDYsIDB4NzFFRCwgMHgwOUVBLCAweDcxRUUsIDB4MTBFRSwNCisgICAgMHg3MUY1LCAweDE1RDgsIDB4NzFGOSwgMHgxNURBLCAweDcxRkIsIDB4MTVDOSwgMHg3MUZDLCAweDE1RDksDQorICAgIDB4NzFGRSwgMHgyMTYwLCAweDcxRkYsIDB4MTVEQiwgMHg3MjAwLCAweDM5QjIsIDB4NzIwNiwgMHgwRDMwLA0KKyAgICAweDcyMEQsIDB4MTVEQywgMHg3MjEwLCAweDE1REQsIDB4NzIxQiwgMHgxNURFLCAweDcyMUQsIDB4MzlCMywNCisgICAgMHg3MjI4LCAweDE1REYsIDB4NzIyQSwgMHgwQkZBLCAweDcyMkIsIDB4MzlCNCwgMHg3MjJDLCAweDE1RTEsDQorICAgIDB4NzIyRCwgMHgxNUUwLCAweDcyMzAsIDB4MTVFMiwgMHg3MjMyLCAweDE1RTMsIDB4NzIzNSwgMHgwOTBCLA0KKyAgICAweDcyMzYsIDB4MERENSwgMHg3MjM4LCAweDM5QjUsIDB4NzIzQSwgMHgwRUY4LCAweDcyM0IsIDB4MTVFNCwNCisgICAgMHg3MjNDLCAweDE1RTUsIDB4NzIzRCwgMHgwQUQ4LCAweDcyM0UsIDB4MDhEMCwgMHg3MjNGLCAweDE1RTYsDQorICAgIDB4NzI0MCwgMHgxNUU3LCAweDcyNDEsIDB4MzlCNiwgMHg3MjQ2LCAweDE1RTgsIDB4NzI0NywgMHgwRTIyLA0KKyAgICAweDcyNDgsIDB4MEQ1QiwgMHg3MjRCLCAweDE1RTksIDB4NzI0QywgMHgwRDBELCAweDcyNTIsIDB4MEJDOSwNCisgICAgMHg3MjUzLCAweDM5QjcsIDB4NzI1NSwgMHgzOUI4LCAweDcyNTYsIDB4MzlCOSwgMHg3MjU4LCAweDE1RUEsDQorICAgIDB4NzI1OSwgMHgwNTY3LCAweDcyNUIsIDB4MDY4NywgMHg3MjVDLCAweDM5QkEsIDB4NzI1RCwgMHgwRUQyLA0KKyAgICAweDcyNUYsIDB4MEVDMiwgMHg3MjYxLCAweDA1MzQsIDB4NzI2MiwgMHgwRkRBLCAweDcyNjcsIDB4MEU4MCwNCisgICAgMHg3MjY5LCAweDBERkEsIDB4NzI3MiwgMHgwQTVCLCAweDcyNzQsIDB4MTVFQiwgMHg3Mjc5LCAweDBDOUIsDQorICAgIDB4NzI3RCwgMHgwNzU3LCAweDcyN0UsIDB4MTVFQywgMHg3MjgwLCAweDA4NDQsIDB4NzI4MSwgMHgxNUVFLA0KKyAgICAweDcyODIsIDB4MTVFRCwgMHg3Mjg3LCAweDE1RUYsIDB4NzI4RCwgMHgzOUJCLCAweDcyOTIsIDB4MTVGMCwNCisgICAgMHg3Mjk2LCAweDE1RjEsIDB4NzJBMCwgMHgwNjU4LCAweDcyQTIsIDB4MTVGMiwgMHg3MkE3LCAweDE1RjMsDQorICAgIDB4NzJBQywgMHgwNzU4LCAweDcyQUQsIDB4MzlCQywgMHg3MkFGLCAweDBENUMsIDB4NzJCMSwgMHgyMTYxLA0KKyAgICAweDcyQjIsIDB4MTVGNSwgMHg3MkI0LCAweDM5QkQsIDB4NzJCNiwgMHgwOURELCAweDcyQjksIDB4MTVGNCwNCisgICAgMHg3MkJFLCAweDIxNjIsIDB4NzJDMCwgMHgzNDJCLCAweDcyQzIsIDB4MDZCMCwgMHg3MkMzLCAweDE1RjYsDQorICAgIDB4NzJDNCwgMHgxNUY4LCAweDcyQzYsIDB4MTVGNywgMHg3MkM3LCAweDM5QkUsIDB4NzJDRSwgMHgxNUY5LA0KKyAgICAweDcyRDAsIDB4MDc4NSwgMHg3MkQyLCAweDE1RkEsIDB4NzJENywgMHgwNkUxLCAweDcyRDksIDB4MEFDMiwNCisgICAgMHg3MkRCLCAweDA4MEYsIDB4NzJFMCwgMHgxNUZDLCAweDcyRTEsIDB4MTVGRCwgMHg3MkUyLCAweDE1RkIsDQorICAgIDB4NzJFOSwgMHgwOTE5LCAweDcyRUMsIDB4MENBMCwgMHg3MkVELCAweDA2QjEsIDB4NzJGNywgMHgxNUZGLA0KKyAgICAweDcyRjgsIDB4MEI2QSwgMHg3MkY5LCAweDE1RkUsIDB4NzJGQiwgMHgzOUJGLCAweDcyRkMsIDB4MEZEQiwNCisgICAgMHg3MkZELCAweDBEMTgsIDB4NzMwNCwgMHgzOUMwLCAweDczMDUsIDB4MzlDMSwgMHg3MzBBLCAweDE2MDIsDQorICAgIDB4NzMxNiwgMHgxNjA0LCAweDczMTcsIDB4MTYwMSwgMHg3MzFCLCAweDBFRTAsIDB4NzMxQywgMHgxNjAzLA0KKyAgICAweDczMUQsIDB4MTYwNSwgMHg3MzFGLCAweDBGOEMsIDB4NzMyNCwgMHgyMTYzLCAweDczMjUsIDB4MTYwOSwNCisgICAgMHg3MzI4LCAweDM5QzIsIDB4NzMyOSwgMHgxNjA4LCAweDczMkEsIDB4MEJCNCwgMHg3MzJCLCAweDBDRTMsDQorICAgIDB4NzMyRSwgMHgwNzU5LCAweDczMkYsIDB4MTYwNywgMHg3MzMxLCAweDM5QzMsIDB4NzMzNCwgMHgxNjA2LA0KKyAgICAweDczMzYsIDB4MEYxQiwgMHg3MzM3LCAweDBGMUMsIDB4NzMzRSwgMHgxNjBBLCAweDczM0YsIDB4MDUxMCwNCisgICAgMHg3MzQzLCAweDM5QzQsIDB4NzM0NCwgMHgwODA4LCAweDczNDUsIDB4MDhCMCwgMHg3MzRFLCAweDE2MEIsDQorICAgIDB4NzM0RiwgMHgxNjBDLCAweDczNTcsIDB4MTYwRSwgMHg3MzYzLCAweDA5NEQsIDB4NzM2OCwgMHgxNjEwLA0KKyAgICAweDczNkEsIDB4MTYwRiwgMHg3MzZDLCAweDM5QzUsIDB4NzM3MCwgMHgxNjExLCAweDczNzIsIDB4MDVBQiwNCisgICAgMHg3Mzc1LCAweDE2MTMsIDB4NzM3NywgMHgyMTY1LCAweDczNzgsIDB4MTYxMiwgMHg3MzdBLCAweDE2MTUsDQorICAgIDB4NzM3QiwgMHgxNjE0LCAweDczN0MsIDB4MzlDNiwgMHg3MzgzLCAweDM5QzcsIDB4NzM4NCwgMHgwNzcwLA0KKyAgICAweDczODUsIDB4MzlDOCwgMHg3Mzg2LCAweDM5QzksIDB4NzM4NywgMHgwRjcwLCAweDczODksIDB4MDZDNCwNCisgICAgMHg3MzhCLCAweDA1MjYsIDB4NzM5NSwgMHgzOUNBLCAweDczOTYsIDB4MDZFMiwgMHg3MzlFLCAweDM5Q0IsDQorICAgIDB4NzM5RiwgMHgzOUNDLCAweDczQTAsIDB4MzlDRCwgMHg3M0E2LCAweDM5Q0UsIDB4NzNBOCwgMHgzQzNGLA0KKyAgICAweDczQTksIDB4MDYxRCwgMHg3M0FCLCAweDM5Q0YsIDB4NzNCMiwgMHgwRkIwLCAweDczQjMsIDB4MTYxNywNCisgICAgMHg3M0I1LCAweDM5RDAsIDB4NzNCNywgMHgzOUQxLCAweDczQkEsIDB4MzVFQSwgMHg3M0JCLCAweDE2MTksDQorICAgIDB4NzNCQywgMHgzOUQyLCAweDczQkQsIDB4MjE2NiwgMHg3M0MwLCAweDE2MUEsIDB4NzNDMiwgMHgwNTUxLA0KKyAgICAweDczQzgsIDB4MTYxNiwgMHg3M0M5LCAweDIxNjcsIDB4NzNDQSwgMHgwODg3LCAweDczQ0QsIDB4MEJERCwNCisgICAgMHg3M0NFLCAweDE2MTgsIDB4NzNDRiwgMHgzOUQzLCAweDczRDIsIDB4MjE2QSwgMHg3M0Q2LCAweDIxNjgsDQorICAgIDB4NzNEOSwgMHgzOUQ0LCAweDczREUsIDB4MTYxRCwgMHg3M0UwLCAweDA5MUEsIDB4NzNFMywgMHgyMTY5LA0KKyAgICAweDczRTQsIDB4M0MzOSwgMHg3M0U1LCAweDE2MUIsIDB4NzNFOSwgMHgzOUQ1LCAweDczRUEsIDB4MDcxNCwNCisgICAgMHg3M0VELCAweDBENUQsIDB4NzNFRSwgMHgxNjFDLCAweDczRjEsIDB4MTYzNywgMHg3M0Y0LCAweDM5RDYsDQorICAgIDB4NzNGNSwgMHgyMTZDLCAweDczRjgsIDB4MTYyMiwgMHg3M0ZELCAweDM5RDcsIDB4NzNGRSwgMHgwNzcxLA0KKyAgICAweDc0MDMsIDB4MDY3RiwgMHg3NDA0LCAweDM5RDgsIDB4NzQwNSwgMHgxNjFGLCAweDc0MDYsIDB4MEY2NywNCisgICAgMHg3NDA3LCAweDIxNkIsIDB4NzQwOSwgMHgwRjc4LCAweDc0MEEsIDB4MzlEOSwgMHg3NDFBLCAweDM5REEsDQorICAgIDB4NzQxQiwgMHgzOURCLCAweDc0MjEsIDB4M0MzQSwgMHg3NDIyLCAweDBCNTYsIDB4NzQyNCwgMHgzOURDLA0KKyAgICAweDc0MjUsIDB4MTYyMSwgMHg3NDI2LCAweDIxNkQsIDB4NzQyOCwgMHgzOURELCAweDc0MjksIDB4MjE2RiwNCisgICAgMHg3NDJBLCAweDIxNkUsIDB4NzQyQywgMHgzOURFLCAweDc0MkUsIDB4MjE3MCwgMHg3NDJGLCAweDM5REYsDQorICAgIDB4NzQzMCwgMHgzOUUwLCAweDc0MzEsIDB4MzlFMSwgMHg3NDMyLCAweDE2MjMsIDB4NzQzMywgMHgwRjlFLA0KKyAgICAweDc0MzQsIDB4MDZDRiwgMHg3NDM1LCAweDBEOTAsIDB4NzQzNiwgMHgwRDAwLCAweDc0MzksIDB4MzlFMiwNCisgICAgMHg3NDNBLCAweDE2MjQsIDB4NzQzRiwgMHgxNjI2LCAweDc0NDEsIDB4MTYyOSwgMHg3NDQ0LCAweDM5RTMsDQorICAgIDB4NzQ0NywgMHgzOUU0LCAweDc0NEIsIDB4MzlFNSwgMHg3NDRELCAweDM5RTYsIDB4NzQ1MSwgMHgzOUU3LA0KKyAgICAweDc0NTUsIDB4MTYyNSwgMHg3NDU3LCAweDM5RTgsIDB4NzQ1OSwgMHgxNjI4LCAweDc0NUEsIDB4MDc5RSwNCisgICAgMHg3NDVCLCAweDA0RUYsIDB4NzQ1QywgMHgxNjJBLCAweDc0NUUsIDB4MEEzNiwgMHg3NDVGLCAweDE2MjcsDQorICAgIDB4NzQ2MCwgMHgwRkE0LCAweDc0NjIsIDB4MjE3MSwgMHg3NDYzLCAweDE2MkQsIDB4NzQ2NCwgMHgxRDM1LA0KKyAgICAweDc0NjYsIDB4MzlFOSwgMHg3NDY5LCAweDE2MkIsIDB4NzQ2QSwgMHgxNjJFLCAweDc0NkIsIDB4MzlFQSwNCisgICAgMHg3NDZGLCAweDE2MjAsIDB4NzQ3MCwgMHgxNjJDLCAweDc0NzEsIDB4MzlFQiwgMHg3NDczLCAweDA4MkMsDQorICAgIDB4NzQ3NiwgMHgxNjJGLCAweDc0N0UsIDB4MTYzMCwgMHg3NDgwLCAweDM5RUMsIDB4NzQ4MywgMHgwRjY4LA0KKyAgICAweDc0ODUsIDB4MzlFRCwgMHg3NDg2LCAweDM5RUUsIDB4NzQ4NywgMHgzOUVGLCAweDc0ODksIDB4MjE3MiwNCisgICAgMHg3NDhCLCAweDE2MzEsIDB4NzQ5MCwgMHgzOUYwLCAweDc0OTgsIDB4MzlGMSwgMHg3NDlDLCAweDM5RjIsDQorICAgIDB4NzQ5RSwgMHgxNjMyLCAweDc0OUYsIDB4MjE3MywgMHg3NEEwLCAweDM5RjMsIDB4NzRBMiwgMHgxNjFFLA0KKyAgICAweDc0QTMsIDB4MzlGNCwgMHg3NEE3LCAweDE2MzMsIDB4NzRBOCwgMHgzOUY1LCAweDc0QUIsIDB4MzlGNiwNCisgICAgMHg3NEIwLCAweDA2MDAsIDB4NzRCNSwgMHgzOUY3LCAweDc0QkQsIDB4MDhEMSwgMHg3NEJGLCAweDM5RjgsDQorICAgIDB4NzRDOCwgMHgzOUY5LCAweDc0Q0EsIDB4MTYzNCwgMHg3NENGLCAweDE2MzUsIDB4NzRENCwgMHgxNjM2LA0KKyAgICAweDc0REEsIDB4MzlGQSwgMHg3NERDLCAweDA0REQsIDB4NzRERSwgMHgzOUZCLCAweDc0RTAsIDB4MTYzOCwNCisgICAgMHg3NEUyLCAweDBEQUQsIDB4NzRFMywgMHgxNjM5LCAweDc0RTYsIDB4MDVFMCwgMHg3NEU3LCAweDE2M0EsDQorICAgIDB4NzRFOSwgMHgxNjNCLCAweDc0RUUsIDB4MTYzQywgMHg3NEVGLCAweDM3NTAsIDB4NzRGMCwgMHgxNjNFLA0KKyAgICAweDc0RjEsIDB4MTYzRiwgMHg3NEYyLCAweDE2M0QsIDB4NzRGNiwgMHgwREM1LCAweDc0RjcsIDB4MTY0MSwNCisgICAgMHg3NEY4LCAweDE2NDAsIDB4NzUwMSwgMHgyMTc0LCAweDc1MDMsIDB4MTY0MywgMHg3NTA0LCAweDE2NDIsDQorICAgIDB4NzUwNSwgMHgxNjQ0LCAweDc1MEMsIDB4MTY0NSwgMHg3NTBELCAweDE2NDcsIDB4NzUwRSwgMHgxNjQ2LA0KKyAgICAweDc1MTEsIDB4MDgwQiwgMHg3NTEzLCAweDE2NDksIDB4NzUxNSwgMHgxNjQ4LCAweDc1MTgsIDB4MDYwMSwNCisgICAgMHg3NTFBLCAweDBBMTksIDB4NzUxQywgMHgwQzM2LCAweDc1MUUsIDB4MTY0QSwgMHg3NTFGLCAweDBBNUMsDQorICAgIDB4NzUyMiwgMHgzNURFLCAweDc1MjMsIDB4MDg4OCwgMHg3NTI1LCAweDA1MUIsIDB4NzUyNiwgMHgxNjRCLA0KKyAgICAweDc1MjgsIDB4MEYzQiwgMHg3NTJCLCAweDBFMzMsIDB4NzUyQywgMHgxNjRDLCAweDc1MkYsIDB4MjBGMiwNCisgICAgMHg3NTMwLCAweDBDM0UsIDB4NzUzMSwgMHgwRjFELCAweDc1MzIsIDB4MDdENSwgMHg3NTMzLCAweDBBMDMsDQorICAgIDB4NzUzNywgMHgwQjg5LCAweDc1MzgsIDB4MTBDOSwgMHg3NTNBLCAweDBCQ0EsIDB4NzUzQiwgMHgwNTY4LA0KKyAgICAweDc1M0MsIDB4MTY0RCwgMHg3NTQ0LCAweDE2NEUsIDB4NzU0NiwgMHgxNjUzLCAweDc1NDksIDB4MTY1MSwNCisgICAgMHg3NTRBLCAweDE2NTAsIDB4NzU0QiwgMHgxM0M3LCAweDc1NEMsIDB4MDU4NCwgMHg3NTRELCAweDE2NEYsDQorICAgIDB4NzU0RSwgMHgzOUZDLCAweDc1NEYsIDB4MDQ5RSwgMHg3NTUxLCAweDBEM0UsIDB4NzU1NCwgMHgwRDVFLA0KKyAgICAweDc1NTksIDB4MEY3OSwgMHg3NTVBLCAweDE2NTQsIDB4NzU1QiwgMHgxNjUyLCAweDc1NUMsIDB4MEI5QSwNCisgICAgMHg3NTVELCAweDBBNEEsIDB4NzU2MCwgMHgwRDNGLCAweDc1NjIsIDB4MEQ5RiwgMHg3NTY0LCAweDE2NTYsDQorICAgIDB4NzU2NSwgMHgwRjc0LCAweDc1NjYsIDB4MDcyMywgMHg3NTY3LCAweDE2NTcsIDB4NzU2OSwgMHgxNjU1LA0KKyAgICAweDc1NkEsIDB4MEQ2QSwgMHg3NTZCLCAweDE2NTgsIDB4NzU2QywgMHgzQzNCLCAweDc1NkQsIDB4MTY1OSwNCisgICAgMHg3NTZGLCAweDIxNzUsIDB4NzU3MCwgMHgwNDlGLCAweDc1NzMsIDB4MDlERSwgMHg3NTc0LCAweDE2NUUsDQorICAgIDB4NzU3NSwgMHgzNzUxLCAweDc1NzYsIDB4MTY1QiwgMHg3NTc3LCAweDBDQzUsIDB4NzU3OCwgMHgxNjVBLA0KKyAgICAweDc1NzksIDB4MzlGRCwgMHg3NTdGLCAweDA2NDAsIDB4NzU4MSwgMHgzOUZFLCAweDc1ODIsIDB4MTY2MSwNCisgICAgMHg3NTg2LCAweDE2NUMsIDB4NzU4NywgMHgxNjVELCAweDc1ODksIDB4MTY2MCwgMHg3NThBLCAweDE2NUYsDQorICAgIDB4NzU4QiwgMHgwRDk3LCAweDc1OEUsIDB4MEFDNCwgMHg3NThGLCAweDBBQzMsIDB4NzU5MCwgMHgzOUZGLA0KKyAgICAweDc1OTEsIDB4MDY1OSwgMHg3NTkyLCAweDNBMDAsIDB4NzU5MywgMHgzQTAxLCAweDc1OTQsIDB4MTY2MiwNCisgICAgMHg3NTlBLCAweDE2NjMsIDB4NzU5RCwgMHgxNjY0LCAweDc1QTMsIDB4MTY2NiwgMHg3NUE1LCAweDE2NjUsDQorICAgIDB4NzVBQiwgMHgwNEY4LCAweDc1QjEsIDB4MTY2RSwgMHg3NUIyLCAweDBEN0MsIDB4NzVCMywgMHgxNjY4LA0KKyAgICAweDc1QjQsIDB4M0EwMiwgMHg3NUI1LCAweDE2NkEsIDB4NzVCOCwgMHgxNjZDLCAweDc1QjksIDB4MEEwNCwNCisgICAgMHg3NUJDLCAweDE2NkQsIDB4NzVCRCwgMHgxNjZCLCAweDc1QkUsIDB4MDhFQywgMHg3NUMyLCAweDE2NjcsDQorICAgIDB4NzVDMywgMHgxNjY5LCAweDc1QzUsIDB4MERCNCwgMHg3NUM3LCAweDA5QjEsIDB4NzVDQSwgMHgxNjcwLA0KKyAgICAweDc1Q0QsIDB4MTY2RiwgMHg3NUQyLCAweDE2NzEsIDB4NzVENCwgMHgwOEQyLCAweDc1RDUsIDB4MDgxRiwNCisgICAgMHg3NUQ4LCAweDBDNzEsIDB4NzVEOSwgMHgxNjcyLCAweDc1REIsIDB4MEJFNywgMHg3NURFLCAweDE2NzQsDQorICAgIDB4NzVFMiwgMHgwRjY5LCAweDc1RTMsIDB4MTY3MywgMHg3NUU0LCAweDNBMDMsIDB4NzVFOSwgMHgwQUVCLA0KKyAgICAweDc1RUMsIDB4Mzc1MiwgMHg3NUYwLCAweDE2NzksIDB4NzVGMiwgMHgxNjdCLCAweDc1RjMsIDB4MTY3QywNCisgICAgMHg3NUY0LCAweDBCOTIsIDB4NzVGOSwgMHgzQTA0LCAweDc1RkEsIDB4MTY3QSwgMHg3NUZDLCAweDE2NzcsDQorICAgIDB4NzVGRSwgMHgxNjc1LCAweDc1RkYsIDB4MTY3NiwgMHg3NjAwLCAweDNBMDUsIDB4NzYwMSwgMHgxNjc4LA0KKyAgICAweDc2MDksIDB4MTY3RiwgMHg3NjBBLCAweDNBMDYsIDB4NzYwQiwgMHgxNjdELCAweDc2MEQsIDB4MTY3RSwNCisgICAgMHg3NjE1LCAweDNBMDcsIDB4NzYxNiwgMHgzQTA4LCAweDc2MTksIDB4M0EwOSwgMHg3NjFFLCAweDNBMEEsDQorICAgIDB4NzYxRiwgMHgxNjgwLCAweDc2MjAsIDB4MTY4MiwgMHg3NjIxLCAweDE2ODMsIDB4NzYyMiwgMHgxNjg0LA0KKyAgICAweDc2MjQsIDB4MTY4NSwgMHg3NjI2LCAweDFFMkQsIDB4NzYyNywgMHgxNjgxLCAweDc2MkQsIDB4M0EwQiwNCisgICAgMHg3NjMwLCAweDE2ODcsIDB4NzYzNCwgMHgxNjg2LCAweDc2MzUsIDB4M0EwQywgMHg3NjNCLCAweDE2ODgsDQorICAgIDB4NzY0MiwgMHgwRjhELCAweDc2NDMsIDB4M0EwRCwgMHg3NjQ2LCAweDE2OEIsIDB4NzY0NywgMHgxNjg5LA0KKyAgICAweDc2NDgsIDB4MTY4QSwgMHg3NjRCLCAweDNBMEUsIDB4NzY0QywgMHgwNjFFLCAweDc2NEUsIDB4Mzc1MywNCisgICAgMHg3NjUyLCAweDBGMEEsIDB4NzY1NiwgMHgwRTFBLCAweDc2NTgsIDB4MTY4RCwgMHg3NjVDLCAweDE2OEMsDQorICAgIDB4NzY2MSwgMHgxNjhFLCAweDc2NjIsIDB4MTY4RiwgMHg3NjY1LCAweDNBMEYsIDB4NzY2NywgMHgxNjkzLA0KKyAgICAweDc2NjgsIDB4MTY5MCwgMHg3NjY5LCAweDE2OTEsIDB4NzY2QSwgMHgxNjkyLCAweDc2NkMsIDB4MTY5NCwNCisgICAgMHg3NjZELCAweDNBMTAsIDB4NzY2RiwgMHgzQTExLCAweDc2NzAsIDB4MTY5NSwgMHg3NjcxLCAweDNBMTIsDQorICAgIDB4NzY3MiwgMHgxNjk2LCAweDc2NzQsIDB4M0ExMywgMHg3Njc2LCAweDE2OTcsIDB4NzY3OCwgMHgxNjk4LA0KKyAgICAweDc2N0EsIDB4MEQ0MywgMHg3NjdCLCAweDBDNEEsIDB4NzY3QywgMHgxNjk5LCAweDc2N0QsIDB4MEQyOCwNCisgICAgMHg3NjdFLCAweDBEQTYsIDB4NzY4MCwgMHgxNjlBLCAweDc2ODIsIDB4MjE3NiwgMHg3NjgzLCAweDE2OUIsDQorICAgIDB4NzY4NCwgMHgwQzI0LCAweDc2ODYsIDB4MDU4NSwgMHg3Njg3LCAweDA3RDYsIDB4NzY4OCwgMHgxNjlDLA0KKyAgICAweDc2OEIsIDB4MTY5RCwgMHg3NjhFLCAweDE2OUUsIDB4NzY5MCwgMHgwODc3LCAweDc2OTMsIDB4MTZBMCwNCisgICAgMHg3Njk2LCAweDE2OUYsIDB4NzY5OSwgMHgxNkExLCAweDc2OUEsIDB4MTZBMiwgMHg3NjlCLCAweDIxNzksDQorICAgIDB4NzY5QywgMHgyMTc3LCAweDc2OUUsIDB4MjE3OCwgMHg3NkE0LCAweDNBMTQsIDB4NzZBNSwgMHgzQTE1LA0KKyAgICAweDc2QTYsIDB4MjE3QSwgMHg3NkFFLCAweDBEN0QsIDB4NzZCMCwgMHgxNkEzLCAweDc2QjQsIDB4MTZBNCwNCisgICAgMHg3NkI3LCAweDFEMUMsIDB4NzZCOCwgMHgxNkE1LCAweDc2QjksIDB4MTZBNiwgMHg3NkJBLCAweDE2QTcsDQorICAgIDB4NzZCRiwgMHgwODdDLCAweDc2QzIsIDB4MTZBOCwgMHg3NkMzLCAweDBEMEMsIDB4NzZDNSwgMHgzQTE2LA0KKyAgICAweDc2QzYsIDB4MEU4RCwgMHg3NkM4LCAweDA0RjAsIDB4NzZDQSwgMHgwNEY5LCAweDc2Q0MsIDB4M0ExNywNCisgICAgMHg3NkNELCAweDE2QTksIDB4NzZEMiwgMHgxNkFCLCAweDc2RDYsIDB4MTZBQSwgMHg3NkQ3LCAweDBDNkEsDQorICAgIDB4NzZEQiwgMHgwQTVELCAweDc2REMsIDB4MTREOCwgMHg3NkRFLCAweDE2QUMsIDB4NzZERiwgMHgwRUNELA0KKyAgICAweDc2RTEsIDB4MTZBRCwgMHg3NkUzLCAweDA2MDIsIDB4NzZFNCwgMHgwRDZCLCAweDc2RTUsIDB4MTZBRSwNCisgICAgMHg3NkU3LCAweDE2QUYsIDB4NzZFQSwgMHgxNkIwLCAweDc2RUMsIDB4M0ExOCwgMHg3NkVFLCAweDBFRTgsDQorICAgIDB4NzZGMiwgMHgwRUUxLCAweDc2RjQsIDB4MEJEQSwgMHg3NkY4LCAweDBBRUMsIDB4NzZGQiwgMHgxNkIyLA0KKyAgICAweDc2RkMsIDB4M0ExOSwgMHg3NkZFLCAweDA5NkMsIDB4NzcwMSwgMHgwOUIyLCAweDc3MDQsIDB4MTZCNSwNCisgICAgMHg3NzA3LCAweDE2QjQsIDB4NzcwOCwgMHgxNkIzLCAweDc3MDksIDB4MEQ5MSwgMHg3NzBCLCAweDA2MDMsDQorICAgIDB4NzcwQywgMHgwNzVELCAweDc3MUIsIDB4MTZCQiwgMHg3NzFFLCAweDE2QjgsIDB4NzcxRiwgMHgwQTA1LA0KKyAgICAweDc3MjAsIDB4MEVCRSwgMHg3NzI0LCAweDE2QjcsIDB4NzcyNSwgMHgxNkI5LCAweDc3MjYsIDB4MTZCQSwNCisgICAgMHg3NzI5LCAweDE2QjYsIDB4NzczNCwgMHgzQTFBLCAweDc3MzYsIDB4M0ExQiwgMHg3NzM3LCAweDE2QkMsDQorICAgIDB4NzczOCwgMHgxNkJELCAweDc3M0EsIDB4MEJDQiwgMHg3NzNDLCAweDA2MUYsIDB4Nzc0MCwgMHgwQkEzLA0KKyAgICAweDc3NDYsIDB4MjE3QywgMHg3NzQ3LCAweDE2QkUsIDB4Nzc1QSwgMHgxNkJGLCAweDc3NUIsIDB4MTZDMiwNCisgICAgMHg3NzVDLCAweDNBMUMsIDB4Nzc1RiwgMHgzQTFELCAweDc3NjAsIDB4M0ExRSwgMHg3NzYxLCAweDBBMkQsDQorICAgIDB4Nzc2MiwgMHgxRUM1LCAweDc3NjMsIDB4MEM5QywgMHg3NzY1LCAweDE2QzMsIDB4Nzc2NiwgMHgwRTgxLA0KKyAgICAweDc3NjgsIDB4MTZDMCwgMHg3NzZBLCAweDM3NTUsIDB4Nzc2QiwgMHgxNkMxLCAweDc3NzIsIDB4M0ExRiwNCisgICAgMHg3Nzc5LCAweDE2QzYsIDB4Nzc3RCwgMHgzQTIwLCAweDc3N0UsIDB4MTZDNSwgMHg3NzdGLCAweDE2QzQsDQorICAgIDB4Nzc4QiwgMHgxNkM4LCAweDc3OEUsIDB4MTZDNywgMHg3NzkxLCAweDE2QzksIDB4Nzc5NSwgMHgzQTIxLA0KKyAgICAweDc3OUUsIDB4MTZDQiwgMHg3N0EwLCAweDE2Q0EsIDB4NzdBNSwgMHgwRTFELCAweDc3QTksIDB4Mzc1NiwNCisgICAgMHg3N0FBLCAweDNBMjIsIDB4NzdBQywgMHgwOTYwLCAweDc3QUQsIDB4MEY4RSwgMHg3N0IwLCAweDE2Q0MsDQorICAgIDB4NzdCMywgMHgwQzhGLCAweDc3QjYsIDB4MTZDRCwgMHg3N0I5LCAweDE2Q0UsIDB4NzdCQiwgMHgxNkQyLA0KKyAgICAweDc3QkMsIDB4MTZEMCwgMHg3N0JELCAweDE2RDEsIDB4NzdCRiwgMHgxNkNGLCAweDc3QzcsIDB4MTZEMywNCisgICAgMHg3N0NELCAweDE2RDQsIDB4NzdENywgMHgxNkQ1LCAweDc3REEsIDB4MTZENiwgMHg3N0RCLCAweDBFQzMsDQorICAgIDB4NzdEQywgMHgxNkQ3LCAweDc3RTIsIDB4MEVGQywgMHg3N0UzLCAweDE2RDgsIDB4NzdFNSwgMHgwQjhDLA0KKyAgICAweDc3RTYsIDB4M0EyMywgMHg3N0U3LCAweDBEMjAsIDB4NzdFOSwgMHgwNkUzLCAweDc3RUQsIDB4MEI3OSwNCisgICAgMHg3N0VFLCAweDE2RDksIDB4NzdFRiwgMHgwNkIyLCAweDc3RjAsIDB4M0EyNCwgMHg3N0YzLCAweDBBNzQsDQorICAgIDB4NzdGNCwgMHgzQTI1LCAweDc3RkMsIDB4MTZEQSwgMHg3ODAyLCAweDA4MkQsIDB4NzgwNiwgMHgzQTI2LA0KKyAgICAweDc4MEMsIDB4MTZEQiwgMHg3ODEyLCAweDE2REMsIDB4NzgxNCwgMHgwNzVBLCAweDc4MTUsIDB4MDg0NSwNCisgICAgMHg3ODIwLCAweDE2REUsIDB4NzgyMSwgMHgyMTdFLCAweDc4MjIsIDB4M0EyNywgMHg3ODI1LCAweDBDNTAsDQorICAgIDB4NzgyNiwgMHgwODQ2LCAweDc4MjcsIDB4MDY2OCwgMHg3ODJELCAweDNBMjgsIDB4NzgyRSwgMHgzQTI5LA0KKyAgICAweDc4MzAsIDB4M0EyQSwgMHg3ODMyLCAweDBFNTIsIDB4NzgzNCwgMHgwRDAxLCAweDc4MzUsIDB4M0EyQiwNCisgICAgMHg3ODNBLCAweDBDNTEsIDB4NzgzRiwgMHgwN0VFLCAweDc4NDUsIDB4MTZFMCwgMHg3ODRFLCAweDIxN0YsDQorICAgIDB4Nzg0RiwgMHgzNDFFLCAweDc4NTEsIDB4M0MzQywgMHg3ODVELCAweDA5QjMsIDB4Nzg2NCwgMHgyMTgwLA0KKyAgICAweDc4NjgsIDB4M0EyQywgMHg3ODZCLCAweDBGN0EsIDB4Nzg2QywgMHgwN0Q3LCAweDc4NkYsIDB4MDc1QiwNCisgICAgMHg3ODcyLCAweDBEMzcsIDB4Nzg3NCwgMHgxNkUyLCAweDc4N0EsIDB4MjE4MSwgMHg3ODdDLCAweDE2RTQsDQorICAgIDB4Nzg4MSwgMHgwNzlGLCAweDc4ODYsIDB4MTZFMywgMHg3ODg3LCAweDBDMTIsIDB4Nzg4QywgMHgxNkU2LA0KKyAgICAweDc4OEQsIDB4MDU5NSwgMHg3ODhFLCAweDE2RTEsIDB4Nzg5MSwgMHgwRDdFLCAweDc4OTMsIDB4MDREMiwNCisgICAgMHg3ODk1LCAweDA4NUMsIDB4Nzg5NywgMHgwRkY4LCAweDc4OUEsIDB4MTZFNSwgMHg3ODlFLCAweDNBMkQsDQorICAgIDB4NzhBMywgMHgxNkU3LCAweDc4QTcsIDB4MEUxQiwgMHg3OEE5LCAweDBBN0QsIDB4NzhBQSwgMHgxNkU5LA0KKyAgICAweDc4QUYsIDB4MTZFQSwgMHg3OEI1LCAweDE2RTgsIDB4NzhCQSwgMHgwNUFDLCAweDc4QkMsIDB4MTZGMCwNCisgICAgMHg3OEJFLCAweDE2RUYsIDB4NzhDMSwgMHgwOEQzLCAweDc4QzUsIDB4MTZGMSwgMHg3OEM2LCAweDE2RUMsDQorICAgIDB4NzhDOCwgMHgzQTJFLCAweDc4Q0EsIDB4MTZGMiwgMHg3OENCLCAweDE2RUQsIDB4NzhDQywgMHgzQTJGLA0KKyAgICAweDc4Q0UsIDB4M0EzMCwgMHg3OEQwLCAweDBENkMsIDB4NzhEMSwgMHgxNkVCLCAweDc4RDQsIDB4MTZFRSwNCisgICAgMHg3OERBLCAweDE2RjUsIDB4NzhFMCwgMHgzQTMyLCAweDc4RTEsIDB4M0EzMywgMHg3OEU0LCAweDNBMzEsDQorICAgIDB4NzhFNywgMHgxNkY0LCAweDc4RTgsIDB4MEU4RiwgMHg3OEVDLCAweDE2RjMsIDB4NzhFRiwgMHgwNEFGLA0KKyAgICAweDc4RjIsIDB4M0EzNCwgMHg3OEY0LCAweDE2RjcsIDB4NzhGNywgMHgzQTM1LCAweDc4RkIsIDB4M0EzNiwNCisgICAgMHg3OEZELCAweDE2RjYsIDB4NzkwMSwgMHgwOUI0LCAweDc5MDcsIDB4MTZGOCwgMHg3OTBFLCAweDBBQzUsDQorICAgIDB4NzkxMSwgMHgxNkZBLCAweDc5MTIsIDB4MTZGOSwgMHg3OTE5LCAweDE2RkIsIDB4NzkyNiwgMHgxNkRELA0KKyAgICAweDc5MkEsIDB4MTZERiwgMHg3OTJCLCAweDE2RkQsIDB4NzkyQywgMHgxNkZDLCAweDc5MzAsIDB4MjE4MiwNCisgICAgMHg3OTMxLCAweDNBMzcsIDB4NzkzNCwgMHgzQTM4LCAweDc5M0EsIDB4MDhENCwgMHg3OTNCLCAweDNBMzksDQorICAgIDB4NzkzQywgMHgwRkIxLCAweDc5M0QsIDB4M0EzQSwgMHg3OTNFLCAweDA4RkUsIDB4Nzk0MCwgMHgxNkZFLA0KKyAgICAweDc5NDEsIDB4MDcwRCwgMHg3OTQ1LCAweDNBM0IsIDB4Nzk0NywgMHgwNjVBLCAweDc5NDgsIDB4MDY0MSwNCisgICAgMHg3OTQ5LCAweDA4QjEsIDB4Nzk1MCwgMHgwRjFFLCAweDc5NTMsIDB4MTcwNCwgMHg3OTU1LCAweDE3MDMsDQorICAgIDB4Nzk1NiwgMHgwQUM2LCAweDc5NTcsIDB4MTcwMCwgMHg3OTVBLCAweDE3MDIsIDB4Nzk1QiwgMHgzQTNDLA0KKyAgICAweDc5NUMsIDB4M0EzRCwgMHg3OTVELCAweDA5NTUsIDB4Nzk1RSwgMHgwQTA2LCAweDc5NUYsIDB4MTcwMSwNCisgICAgMHg3OTYwLCAweDE2RkYsIDB4Nzk2MiwgMHgwQ0UwLCAweDc5NjUsIDB4MDlCNSwgMHg3OTY4LCAweDBEQUUsDQorICAgIDB4Nzk2RCwgMHgwODQ3LCAweDc5NzcsIDB4MEM3MiwgMHg3OTdBLCAweDE3MDUsIDB4Nzk3RiwgMHgxNzA2LA0KKyAgICAweDc5ODAsIDB4MTcxQywgMHg3OTgxLCAweDA2RDAsIDB4Nzk4NCwgMHgwRkUzLCAweDc5ODUsIDB4MEFCNywNCisgICAgMHg3OThBLCAweDE3MDcsIDB4Nzk4QiwgMHgzQTNFLCAweDc5OEQsIDB4MDU1MiwgMHg3OThFLCAweDBDMTMsDQorICAgIDB4Nzk4RiwgMHgwREYxLCAweDc5OTQsIDB4MjE4NiwgMHg3OTk2LCAweDNBM0YsIDB4Nzk5OCwgMHgzQTQwLA0KKyAgICAweDc5OUIsIDB4MjE4OCwgMHg3OTlELCAweDE3MDgsIDB4NzlBNiwgMHgwNjk0LCAweDc5QTcsIDB4MTcwOSwNCisgICAgMHg3OUFBLCAweDE3MEIsIDB4NzlBRSwgMHgxNzBDLCAweDc5QjAsIDB4MENERiwgMHg3OUIxLCAweDFFNEUsDQorICAgIDB4NzlCMywgMHgxNzBELCAweDc5QjgsIDB4M0E0MSwgMHg3OUI5LCAweDE3MEUsIDB4NzlCQSwgMHgxNzBGLA0KKyAgICAweDc5QkIsIDB4M0E0MiwgMHg3OUJELCAweDA2RDEsIDB4NzlCRSwgMHgwNTUzLCAweDc5QkYsIDB4MEM5RCwNCisgICAgMHg3OUMwLCAweDA5MzIsIDB4NzlDMSwgMHgwOEIyLCAweDc5QzksIDB4MTcxMCwgMHg3OUNBLCAweDNBNDMsDQorICAgIDB4NzlDQiwgMHgwOTMzLCAweDc5RDEsIDB4MDU0QSwgMHg3OUQyLCAweDBEQjUsIDB4NzlENSwgMHgxNzExLA0KKyAgICAweDc5RDgsIDB4MEQ3RiwgMHg3OURBLCAweDNBNDQsIDB4NzlERiwgMHgwQUM3LCAweDc5RTEsIDB4MTcxNCwNCisgICAgMHg3OUUzLCAweDE3MTUsIDB4NzlFNCwgMHgwRDFGLCAweDc5RTYsIDB4MEEwNywgMHg3OUU3LCAweDE3MTIsDQorICAgIDB4NzlFOSwgMHgwQjlGLCAweDc5RUMsIDB4MTcxMywgMHg3OUYwLCAweDA5QjYsIDB4NzlGQiwgMHgwNEEwLA0KKyAgICAweDdBMDAsIDB4MDY0MywgMHg3QTAzLCAweDNBNDUsIDB4N0EwNSwgMHgzNjMzLCAweDdBMDgsIDB4MTcxNiwNCisgICAgMHg3QTA5LCAweDNBNDYsIDB4N0EwQiwgMHgwQzE0LCAweDdBMEQsIDB4MTcxNywgMHg3QTBFLCAweDBBNkIsDQorICAgIDB4N0ExMSwgMHgzQTQ3LCAweDdBMTQsIDB4MEVCOSwgMHg3QTE3LCAweDBEOTUsIDB4N0ExOCwgMHgxNzE4LA0KKyAgICAweDdBMTksIDB4MTcxOSwgMHg3QTFBLCAweDBCOTMsIDB4N0ExQywgMHgwRjhGLCAweDdBMUUsIDB4M0E0OCwNCisgICAgMHg3QTFGLCAweDE3MUIsIDB4N0EyMCwgMHgxNzFBLCAweDdBMkQsIDB4M0E0OSwgMHg3QTJFLCAweDA5MUIsDQorICAgIDB4N0EzMSwgMHgxNzFELCAweDdBMzIsIDB4MDRCNCwgMHg3QTM3LCAweDE3MjAsIDB4N0EzOSwgMHgzQTRBLA0KKyAgICAweDdBM0IsIDB4MTcxRSwgMHg3QTNDLCAweDA1NTQsIDB4N0EzRCwgMHgwNzI0LCAweDdBM0UsIDB4MTcxRiwNCisgICAgMHg3QTNGLCAweDA3RDgsIDB4N0E0MCwgMHgwODA0LCAweDdBNDIsIDB4MEUzNiwgMHg3QTQzLCAweDE3MjEsDQorICAgIDB4N0E0NSwgMHgzQTRCLCAweDdBNDYsIDB4MEU4MiwgMHg3QTQ5LCAweDE3MjMsIDB4N0E0QywgMHgzQTRDLA0KKyAgICAweDdBNEQsIDB4MEE3NSwgMHg3QTRFLCAweDA0RjEsIDB4N0E0RiwgMHgwNTNBLCAweDdBNTAsIDB4MDQ3MCwNCisgICAgMHg3QTU3LCAweDE3MjIsIDB4N0E1RCwgMHgzQTRELCAweDdBNjAsIDB4M0E0RSwgMHg3QTYxLCAweDE3MjQsDQorICAgIDB4N0E2MiwgMHgxNzI1LCAweDdBNjMsIDB4MDlERiwgMHg3QTY5LCAweDE3MjYsIDB4N0E2QiwgMHgwNUFELA0KKyAgICAweDdBNkQsIDB4M0E0RiwgMHg3QTcwLCAweDE3MjgsIDB4N0E3NCwgMHgwNzQwLCAweDdBNzYsIDB4MDY4MCwNCisgICAgMHg3QTc4LCAweDNBNTAsIDB4N0E3OSwgMHgxNzI5LCAweDdBN0EsIDB4MDZFRCwgMHg3QTdELCAweDE3MkEsDQorICAgIDB4N0E3RiwgMHgwQUEwLCAweDdBODEsIDB4MENBNSwgMHg3QTgzLCAweDBBODQsIDB4N0E4NCwgMHgwODY1LA0KKyAgICAweDdBODgsIDB4MTcyQiwgMHg3QTkyLCAweDBCQTAsIDB4N0E5MywgMHgwQUVELCAweDdBOTUsIDB4MTcyRCwNCisgICAgMHg3QTk2LCAweDE3MkYsIDB4N0E5NywgMHgxNzJDLCAweDdBOTgsIDB4MTcyRSwgMHg3QTlGLCAweDA2RjgsDQorICAgIDB4N0FBMCwgMHgzQTUxLCAweDdBQTMsIDB4M0E1MiwgMHg3QUE5LCAweDE3MzAsIDB4N0FBQSwgMHgwNkZDLA0KKyAgICAweDdBQUUsIDB4MDY4MSwgMHg3QUFGLCAweDBGM0MsIDB4N0FCMCwgMHgxNzMyLCAweDdBQjMsIDB4M0E1MywNCisgICAgMHg3QUI2LCAweDE3MzMsIDB4N0FCQSwgMHgwNEQwLCAweDdBQkIsIDB4M0E1NCwgMHg3QUJDLCAweDNBNTUsDQorICAgIDB4N0FCRiwgMHgxNzM2LCAweDdBQzMsIDB4MDVENCwgMHg3QUM0LCAweDE3MzUsIDB4N0FDNSwgMHgxNzM0LA0KKyAgICAweDdBQzYsIDB4M0E1NiwgMHg3QUM3LCAweDE3MzgsIDB4N0FDOCwgMHgxNzMxLCAweDdBQ0EsIDB4MTczOSwNCisgICAgMHg3QUNCLCAweDBGNzEsIDB4N0FDRCwgMHgxNzNBLCAweDdBQ0YsIDB4MTczQiwgMHg3QUQxLCAweDIxODksDQorICAgIDB4N0FEMiwgMHgxMUM1LCAweDdBRDMsIDB4MTczRCwgMHg3QUQ1LCAweDE3M0MsIDB4N0FEOSwgMHgxNzNFLA0KKyAgICAweDdBREEsIDB4MTczRiwgMHg3QURDLCAweDBGN0QsIDB4N0FERCwgMHgxNzQwLCAweDdBREYsIDB4MUMwOCwNCisgICAgMHg3QUUwLCAweDA5QjcsIDB4N0FFMSwgMHgxNzQxLCAweDdBRTIsIDB4MTc0MiwgMHg3QUUzLCAweDA5NjEsDQorICAgIDB4N0FFNSwgMHgwQzkwLCAweDdBRTYsIDB4MTc0MywgMHg3QUU3LCAweDIxOEEsIDB4N0FFQSwgMHgwQjY2LA0KKyAgICAweDdBRUIsIDB4MjE4QywgMHg3QUVELCAweDE3NDQsIDB4N0FFRiwgMHgwQjdBLCAweDdBRjAsIDB4MTc0NSwNCisgICAgMHg3QUY2LCAweDA2OUQsIDB4N0FGOCwgMHgxMDc2LCAweDdBRjksIDB4MEI5QiwgMHg3QUZBLCAweDA4REYsDQorICAgIDB4N0FGRiwgMHgwNjA0LCAweDdCMDIsIDB4MTc0NiwgMHg3QjA0LCAweDE3NTMsIDB4N0IwNiwgMHgxNzQ5LA0KKyAgICAweDdCMDcsIDB4M0E1NywgMHg3QjA4LCAweDA2ODIsIDB4N0IwQSwgMHgxNzQ4LCAweDdCMEIsIDB4MTc1NSwNCisgICAgMHg3QjBGLCAweDE3NDcsIDB4N0IxMSwgMHgwOUI4LCAweDdCMTQsIDB4M0E1OCwgMHg3QjE4LCAweDE3NEIsDQorICAgIDB4N0IxOSwgMHgxNzRDLCAweDdCMUIsIDB4MEMyNSwgMHg3QjFFLCAweDE3NEQsIDB4N0IyMCwgMHgwNUJDLA0KKyAgICAweDdCMjUsIDB4MEEyMCwgMHg3QjI2LCAweDBERDYsIDB4N0IyNywgMHgzQTU5LCAweDdCMjgsIDB4MTc0RiwNCisgICAgMHg3QjJDLCAweDBCNDgsIDB4N0IzMSwgMHgzQTVBLCAweDdCMzMsIDB4MTc0QSwgMHg3QjM1LCAweDE3NEUsDQorICAgIDB4N0IzNiwgMHgxNzUwLCAweDdCMzksIDB4MDg2QiwgMHg3QjQ1LCAweDE3NTcsIDB4N0I0NiwgMHgwREEwLA0KKyAgICAweDdCNDcsIDB4M0E1QiwgMHg3QjQ4LCAweDBEM0EsIDB4N0I0OSwgMHgwQzczLCAweDdCNEIsIDB4MDZEMiwNCisgICAgMHg3QjRDLCAweDE3NTYsIDB4N0I0RCwgMHgxNzU0LCAweDdCNEUsIDB4M0E1QywgMHg3QjRGLCAweDBENDksDQorICAgIDB4N0I1MCwgMHgxNzUxLCAweDdCNTEsIDB4MEI5QywgMHg3QjUyLCAweDBDNzUsIDB4N0I1MywgMHgzNzVELA0KKyAgICAweDdCNTQsIDB4MEM3NCwgMHg3QjU2LCAweDA4NjYsIDB4N0I1RCwgMHgxNzY5LCAweDdCNjAsIDB4M0E1RCwNCisgICAgMHg3QjY1LCAweDE3NTksIDB4N0I2NywgMHgxNzVCLCAweDdCNjksIDB4M0E1RSwgMHg3QjZDLCAweDE3NUUsDQorICAgIDB4N0I2RCwgMHgzQTVGLCAweDdCNkUsIDB4MTc1RiwgMHg3QjcwLCAweDE3NUMsIDB4N0I3MSwgMHgxNzVELA0KKyAgICAweDdCNzIsIDB4M0E2MCwgMHg3Qjc0LCAweDE3NUEsIDB4N0I3NSwgMHgxNzU4LCAweDdCN0EsIDB4MTc1MiwNCisgICAgMHg3Qjg2LCAweDBFMUYsIDB4N0I4NywgMHgwNTU1LCAweDdCOEIsIDB4MTc2NiwgMHg3QjhELCAweDE3NjMsDQorICAgIDB4N0I4RiwgMHgxNzY4LCAweDdCOTEsIDB4M0E2MSwgMHg3QjkyLCAweDE3NjcsIDB4N0I5NCwgMHgwRDI5LA0KKyAgICAweDdCOTUsIDB4MEVCMywgMHg3Qjk3LCAweDA4ODksIDB4N0I5OCwgMHgxNzYxLCAweDdCOTksIDB4MTc2QSwNCisgICAgMHg3QjlBLCAweDE3NjUsIDB4N0I5QywgMHgxNzY0LCAweDdCOUQsIDB4MTc2MCwgMHg3QjlFLCAweDIxOEQsDQorICAgIDB4N0I5RiwgMHgxNzYyLCAweDdCQTEsIDB4MDYwNSwgMHg3QkFBLCAweDBCN0IsIDB4N0JBRCwgMHgwQUExLA0KKyAgICAweDdCQUYsIDB4M0E2MiwgMHg3QkIxLCAweDBEMzYsIDB4N0JCNCwgMHgxNzZGLCAweDdCQjgsIDB4MEQzOCwNCisgICAgMHg3QkMwLCAweDBBODUsIDB4N0JDMSwgMHgxNzZDLCAweDdCQzQsIDB4MEQ2MywgMHg3QkM2LCAweDE3NzAsDQorICAgIDB4N0JDNywgMHgwRTIzLCAweDdCQzksIDB4MEI5OSwgMHg3QkNCLCAweDE3NkIsIDB4N0JDQywgMHgxNzZELA0KKyAgICAweDdCQ0YsIDB4MTc2RSwgMHg3QkQ3LCAweDNBNjMsIDB4N0JEOSwgMHgzQTY0LCAweDdCREQsIDB4MTc3MSwNCisgICAgMHg3QkUwLCAweDA4RjAsIDB4N0JFNCwgMHgwQzlFLCAweDdCRTUsIDB4MTc3NiwgMHg3QkU2LCAweDE3NzUsDQorICAgIDB4N0JFOSwgMHgxNzcyLCAweDdCRUQsIDB4MEZEQywgMHg3QkYzLCAweDE3N0IsIDB4N0JGNiwgMHgxNzdGLA0KKyAgICAweDdCRjcsIDB4MTc3QywgMHg3QzAwLCAweDE3NzgsIDB4N0MwNywgMHgxNzc5LCAweDdDMEIsIDB4M0E2NSwNCisgICAgMHg3QzBELCAweDE3N0UsIDB4N0MwRiwgMHgzQTY2LCAweDdDMTEsIDB4MTc3MywgMHg3QzEyLCAweDEwRUEsDQorICAgIDB4N0MxMywgMHgxNzdBLCAweDdDMTQsIDB4MTc3NCwgMHg3QzE3LCAweDE3N0QsIDB4N0MxRSwgMHgxRTNCLA0KKyAgICAweDdDMUYsIDB4MTc4MywgMHg3QzIwLCAweDNBNjcsIDB4N0MyMSwgMHgwNjA2LCAweDdDMjMsIDB4MTc4MCwNCisgICAgMHg3QzI2LCAweDNBNjgsIDB4N0MyNywgMHgxNzgxLCAweDdDMkEsIDB4MTc4MiwgMHg3QzJCLCAweDE3ODUsDQorICAgIDB4N0MzMSwgMHgzQTY5LCAweDdDMzYsIDB4M0E2QSwgMHg3QzM3LCAweDE3ODQsIDB4N0MzOCwgMHgwRDhBLA0KKyAgICAweDdDM0QsIDB4MTc4NiwgMHg3QzNFLCAweDBGQzQsIDB4N0MzRiwgMHgwRTNELCAweDdDNDAsIDB4MTc4QiwNCisgICAgMHg3QzQzLCAweDE3ODgsIDB4N0M0QywgMHgxNzg3LCAweDdDNEQsIDB4MEE3NiwgMHg3QzRGLCAweDE3OEEsDQorICAgIDB4N0M1MCwgMHgxNzhDLCAweDdDNTEsIDB4M0E2QiwgMHg3QzU0LCAweDE3ODksIDB4N0M1NiwgMHgxNzkwLA0KKyAgICAweDdDNTgsIDB4MTc4RCwgMHg3QzU5LCAweDNBNkMsIDB4N0M1RiwgMHgxNzhFLCAweDdDNjAsIDB4MTc3NywNCisgICAgMHg3QzY0LCAweDE3OEYsIDB4N0M2NSwgMHgxNzkxLCAweDdDNjcsIDB4M0E2RCwgMHg3QzZDLCAweDE3OTIsDQorICAgIDB4N0M2RSwgMHgzQTZFLCAweDdDNzAsIDB4M0E2RiwgMHg3QzczLCAweDBFMTYsIDB4N0M3NSwgMHgxNzkzLA0KKyAgICAweDdDN0IsIDB4MzcwRSwgMHg3QzdFLCAweDBFRUUsIDB4N0M4MSwgMHgwNkM2LCAweDdDODIsIDB4MDZGRiwNCisgICAgMHg3QzgzLCAweDE3OTQsIDB4N0M4OSwgMHgwRTA0LCAweDdDOEIsIDB4MEEyRSwgMHg3QzhELCAweDBFQkMsDQorICAgIDB4N0M5MCwgMHgxNzk1LCAweDdDOTIsIDB4MEY3QiwgMHg3Qzk1LCAweDBEMkEsIDB4N0M5NywgMHgwQUM4LA0KKyAgICAweDdDOTgsIDB4MENFQSwgMHg3QzlCLCAweDA5NTcsIDB4N0M5RiwgMHgwNDg0LCAweDdDQTEsIDB4MTc5QSwNCisgICAgMHg3Q0EyLCAweDE3OTgsIDB4N0NBNCwgMHgxNzk2LCAweDdDQTUsIDB4MDVERCwgMHg3Q0E3LCAweDA5QjksDQorICAgIDB4N0NBOCwgMHgxNzlCLCAweDdDQUIsIDB4MTc5OSwgMHg3Q0FELCAweDE3OTcsIDB4N0NBRSwgMHgxNzlGLA0KKyAgICAweDdDQjEsIDB4MTc5RSwgMHg3Q0IyLCAweDE3OUQsIDB4N0NCMywgMHgxNzlDLCAweDdDQjksIDB4MTdBMCwNCisgICAgMHg3Q0JDLCAweDNBNzAsIDB4N0NCRCwgMHgxN0ExLCAweDdDQkUsIDB4MEE1RSwgMHg3Q0JGLCAweDNBNzEsDQorICAgIDB4N0NDMCwgMHgxN0EyLCAweDdDQzIsIDB4MTdBNCwgMHg3Q0M1LCAweDE3QTMsIDB4N0NDOCwgMHgzQTcyLA0KKyAgICAweDdDQzksIDB4M0E3MywgMHg3Q0NBLCAweDA3ODYsIDB4N0NDRSwgMHgwQUJBLCAweDdDRDIsIDB4MTdBNiwNCisgICAgMHg3Q0Q2LCAweDBDNzYsIDB4N0NENywgMHgzQTc0LCAweDdDRDgsIDB4MTdBNSwgMHg3Q0Q5LCAweDNBNzUsDQorICAgIDB4N0NEQywgMHgxN0E3LCAweDdDREQsIDB4M0E3NiwgMHg3Q0RFLCAweDBFMDUsIDB4N0NERiwgMHgwQUVFLA0KKyAgICAweDdDRTAsIDB4MDdEOSwgMHg3Q0UyLCAweDE3QTgsIDB4N0NFNywgMHgwRjkwLCAweDdDRUIsIDB4M0E3NywNCisgICAgMHg3Q0VGLCAweDE3QUEsIDB4N0NGMiwgMHgxN0FCLCAweDdDRjQsIDB4MTdBQywgMHg3Q0Y2LCAweDE3QUQsDQorICAgIDB4N0NGOCwgMHgwOEIzLCAweDdDRkEsIDB4MTdBRSwgMHg3Q0ZCLCAweDA3MjUsIDB4N0NGRSwgMHgwNjg0LA0KKyAgICAweDdEMDAsIDB4MDY0NCwgMHg3RDAyLCAweDE3QjAsIDB4N0QwNCwgMHgwRUZGLCAweDdEMDUsIDB4MDdEQSwNCisgICAgMHg3RDA2LCAweDE3QUYsIDB4N0QwNywgMHgzQTc4LCAweDdEMDgsIDB4M0E3OSwgMHg3RDA5LCAweDNBN0EsDQorICAgIDB4N0QwQSwgMHgxN0IzLCAweDdEMEIsIDB4MEVGMiwgMHg3RDBELCAweDBDRjIsIDB4N0QxMCwgMHgwREE1LA0KKyAgICAweDdEMTMsIDB4M0E3QiwgMHg3RDE0LCAweDA5NkQsIDB4N0QxNSwgMHgxN0IyLCAweDdEMTcsIDB4MDhGRiwNCisgICAgMHg3RDE4LCAweDA3REIsIDB4N0QxOSwgMHgwOEI0LCAweDdEMUEsIDB4MDY4MywgMHg3RDFCLCAweDBFMDYsDQorICAgIDB4N0QxQywgMHgxN0IxLCAweDdEMUQsIDB4M0E3QywgMHg3RDIwLCAweDBBQzksIDB4N0QyMSwgMHgwRTcwLA0KKyAgICAweDdEMjIsIDB4MDg2NywgMHg3RDIzLCAweDNBN0QsIDB4N0QyQiwgMHgwOEI1LCAweDdEMkMsIDB4MEJGOSwNCisgICAgMHg3RDJFLCAweDE3QjYsIDB4N0QyRiwgMHgwRkE3LCAweDdEMzAsIDB4MDg0OSwgMHg3RDMyLCAweDE3QjcsDQorICAgIDB4N0QzMywgMHgwQTA4LCAweDdEMzUsIDB4MTdCOSwgMHg3RDM5LCAweDA5QkEsIDB4N0QzQSwgMHgwODIwLA0KKyAgICAweDdEM0YsIDB4MTdCOCwgMHg3RDQxLCAweDNBN0UsIDB4N0Q0MiwgMHgwOTM0LCAweDdENDMsIDB4MDc3MiwNCisgICAgMHg3RDQ0LCAweDBBQ0EsIDB4N0Q0NSwgMHgxN0I0LCAweDdENDYsIDB4MTdCQSwgMHg3RDQ4LCAweDIxOEYsDQorICAgIDB4N0Q0QiwgMHgxN0I1LCAweDdENEMsIDB4MDcyNiwgMHg3RDRFLCAweDE3QkQsIDB4N0Q0RiwgMHgxN0MxLA0KKyAgICAweDdENTAsIDB4MDc0MSwgMHg3RDUzLCAweDNBN0YsIDB4N0Q1NiwgMHgxN0JDLCAweDdENTksIDB4M0E4MCwNCisgICAgMHg3RDVCLCAweDE3QzUsIDB4N0Q1QywgMHgyMTkwLCAweDdENUQsIDB4M0E4MSwgMHg3RDVFLCAweDA3REMsDQorICAgIDB4N0Q2MSwgMHgwRjU3LCAweDdENjIsIDB4MDQ4MCwgMHg3RDYzLCAweDE3QzIsIDB4N0Q2NiwgMHgwNjg1LA0KKyAgICAweDdENjgsIDB4MTdCRiwgMHg3RDZFLCAweDE3QzAsIDB4N0Q3MSwgMHgwQzc3LCAweDdENzIsIDB4MTdCRSwNCisgICAgMHg3RDczLCAweDE3QkIsIDB4N0Q3NSwgMHgwNTg2LCAweDdENzYsIDB4MEE4OCwgMHg3RDc5LCAweDA3NUMsDQorICAgIDB4N0Q3QSwgMHgzQTgyLCAweDdEN0QsIDB4MTdDNywgMHg3RDg2LCAweDNBODMsIDB4N0Q4OSwgMHgxN0M0LA0KKyAgICAweDdEOEIsIDB4M0E4NCwgMHg3RDhDLCAweDNBODUsIDB4N0Q4RiwgMHgxN0M2LCAweDdEOTMsIDB4MTdDMywNCisgICAgMHg3RDk5LCAweDA3MjcsIDB4N0Q5QSwgMHgwQjEzLCAweDdEOUIsIDB4MTdDOCwgMHg3RDlDLCAweDBBRjAsDQorICAgIDB4N0Q5RiwgMHgxN0Q1LCAweDdEQTAsIDB4MjE5MiwgMHg3REEyLCAweDE3RDEsIDB4N0RBMywgMHgxN0NCLA0KKyAgICAweDdEQUIsIDB4MTdDRiwgMHg3REFDLCAweDA5MjYsIDB4N0RBRCwgMHgwNEExLCAweDdEQUUsIDB4MTdDQSwNCisgICAgMHg3REFGLCAweDE3RDIsIDB4N0RCMCwgMHgxN0Q2LCAweDdEQjEsIDB4MDdERCwgMHg3REIyLCAweDBFRTIsDQorICAgIDB4N0RCNCwgMHgwQkYyLCAweDdEQjUsIDB4MTdDQywgMHg3REI3LCAweDIxOTEsIDB4N0RCOCwgMHgxN0Q0LA0KKyAgICAweDdEQkEsIDB4MTdDOSwgMHg3REJCLCAweDBCN0MsIDB4N0RCRCwgMHgxN0NFLCAweDdEQkUsIDB4MDQ4MSwNCisgICAgMHg3REJGLCAweDBFRDYsIDB4N0RDNywgMHgxN0NELCAweDdEQ0EsIDB4MDZEMywgMHg3RENCLCAweDBEODAsDQorICAgIDB4N0RDQywgMHgzQTg2LCAweDdEQ0YsIDB4MEFFRiwgMHg3REQxLCAweDBGOTgsIDB4N0REMiwgMHgwOTc5LA0KKyAgICAweDdERDUsIDB4MTdGRCwgMHg3REQ2LCAweDIxOTMsIDB4N0REOCwgMHgxN0Q3LCAweDdEREEsIDB4MEFBMiwNCisgICAgMHg3RERDLCAweDE3RDMsIDB4N0RERCwgMHgxN0Q4LCAweDdEREUsIDB4MTdEQSwgMHg3REUwLCAweDBDMTUsDQorICAgIDB4N0RFMSwgMHgxN0RELCAweDdERTMsIDB4MzQwQSwgMHg3REU0LCAweDE3RDksIDB4N0RFOCwgMHgwRTI0LA0KKyAgICAweDdERTksIDB4MDYwNywgMHg3REVCLCAweDNBODcsIDB4N0RFQywgMHgwRUQ3LCAweDdERUYsIDB4MDRBMiwNCisgICAgMHg3REYxLCAweDNBODgsIDB4N0RGMiwgMHgxN0RDLCAweDdERjQsIDB4MEZDNSwgMHg3REY5LCAweDNBODksDQorICAgIDB4N0RGQiwgMHgxN0RCLCAweDdFMDEsIDB4MDUxMSwgMHg3RTA0LCAweDBDQzQsIDB4N0UwNSwgMHgxN0RFLA0KKyAgICAweDdFMDgsIDB4M0E4QSwgMHg3RTA5LCAweDE3RTUsIDB4N0UwQSwgMHgxN0RGLCAweDdFMEIsIDB4MTdFNiwNCisgICAgMHg3RTExLCAweDNBOEIsIDB4N0UxMiwgMHgxN0UyLCAweDdFMTUsIDB4M0E4QywgMHg3RTFCLCAweDBEMzEsDQorICAgIDB4N0UxRSwgMHgwOEY2LCAweDdFMUYsIDB4MTdFNCwgMHg3RTIwLCAweDNBOEQsIDB4N0UyMSwgMHgxN0UxLA0KKyAgICAweDdFMjIsIDB4MTdFNywgMHg3RTIzLCAweDE3RTAsIDB4N0UyNiwgMHgwOTRFLCAweDdFMkIsIDB4MEU1MywNCisgICAgMHg3RTJFLCAweDA5NTYsIDB4N0UzMSwgMHgxN0UzLCAweDdFMzIsIDB4MTdFRiwgMHg3RTM1LCAweDE3RUIsDQorICAgIDB4N0UzNywgMHgxN0VFLCAweDdFMzksIDB4MTdFQywgMHg3RTNBLCAweDE3RjAsIDB4N0UzQiwgMHgxN0VBLA0KKyAgICAweDdFM0QsIDB4MTdEMCwgMHg3RTNFLCAweDBBNzcsIDB4N0U0MSwgMHgwRDVGLCAweDdFNDMsIDB4MTdFRCwNCisgICAgMHg3RTQ2LCAweDE3RTgsIDB4N0U0NywgMHgzQThFLCAweDdFNDgsIDB4Mzc2NywgMHg3RTRBLCAweDBBQTMsDQorICAgIDB4N0U0QiwgMHgwNzI4LCAweDdFNEQsIDB4MDkzNSwgMHg3RTUyLCAweDIxOTQsIDB4N0U1NCwgMHgwOUVCLA0KKyAgICAweDdFNTUsIDB4MEFCOCwgMHg3RTU2LCAweDE3RjMsIDB4N0U1OSwgMHgxN0Y1LCAweDdFNUEsIDB4MTdGNiwNCisgICAgMHg3RTVELCAweDE3RjIsIDB4N0U1RSwgMHgxN0Y0LCAweDdFNjEsIDB4MUUxMSwgMHg3RTYyLCAweDNBOEYsDQorICAgIDB4N0U2NiwgMHgxN0U5LCAweDdFNjcsIDB4MTdGMSwgMHg3RTY5LCAweDE3RjksIDB4N0U2QSwgMHgxN0Y4LA0KKyAgICAweDdFNkIsIDB4MURGNywgMHg3RTZELCAweDBFQTgsIDB4N0U2RSwgMHgzQTkwLCAweDdFNzAsIDB4MDcwMSwNCisgICAgMHg3RTczLCAweDNBOTEsIDB4N0U3OSwgMHgxN0Y3LCAweDdFN0IsIDB4MTdGQiwgMHg3RTdDLCAweDE3RkEsDQorICAgIDB4N0U3RCwgMHgxN0ZFLCAweDdFN0YsIDB4MTgwMCwgMHg3RTgyLCAweDA4OEEsIDB4N0U4MywgMHgxN0ZDLA0KKyAgICAweDdFODgsIDB4MTgwMSwgMHg3RTg5LCAweDE4MDIsIDB4N0U4QSwgMHgyMEE3LCAweDdFOEMsIDB4MTgwMywNCisgICAgMHg3RThELCAweDNBOTIsIDB4N0U4RSwgMHgxODA5LCAweDdFOEYsIDB4MEMzNSwgMHg3RTkwLCAweDE4MDUsDQorICAgIDB4N0U5MSwgMHgzQTkzLCAweDdFOTIsIDB4MTgwNCwgMHg3RTkzLCAweDE4MDYsIDB4N0U5NCwgMHgxODA3LA0KKyAgICAweDdFOTYsIDB4MTgwOCwgMHg3RTk4LCAweDNBOTQsIDB4N0U5QiwgMHgxODBBLCAweDdFOUMsIDB4MTgwQiwNCisgICAgMHg3RjM2LCAweDA2MDgsIDB4N0YzOCwgMHgxODBDLCAweDdGM0EsIDB4MTgwRCwgMHg3RjQ0LCAweDNBOTUsDQorICAgIDB4N0Y0NSwgMHgxODBFLCAweDdGNDcsIDB4MjE5NSwgMHg3RjRDLCAweDE4MEYsIDB4N0Y0RCwgMHgxODEwLA0KKyAgICAweDdGNEUsIDB4MTgxMSwgMHg3RjRGLCAweDNBOTYsIDB4N0Y1MCwgMHgxODEyLCAweDdGNTEsIDB4MTgxMywNCisgICAgMHg3RjUyLCAweDNBOTcsIDB4N0Y1MywgMHgzQTk4LCAweDdGNTQsIDB4MTgxNSwgMHg3RjU1LCAweDE4MTQsDQorICAgIDB4N0Y1OCwgMHgxODE2LCAweDdGNUYsIDB4MTgxNywgMHg3RjYwLCAweDE4MTgsIDB4N0Y2MSwgMHgzQTk5LA0KKyAgICAweDdGNjcsIDB4MTgxQiwgMHg3RjY4LCAweDE4MTksIDB4N0Y2OSwgMHgxODFBLCAweDdGNkEsIDB4MDg1MSwNCisgICAgMHg3RjZCLCAweDA3MjksIDB4N0Y2RSwgMHgwQjk0LCAweDdGNzAsIDB4MEQ0NywgMHg3RjcyLCAweDA5N0EsDQorICAgIDB4N0Y3NSwgMHgwRDAzLCAweDdGNzcsIDB4MEQ4MSwgMHg3Rjc4LCAweDE4MUMsIDB4N0Y3OSwgMHgxMzM2LA0KKyAgICAweDdGODIsIDB4MTgxRCwgMHg3RjgzLCAweDE4MUYsIDB4N0Y4NSwgMHgwRjRGLCAweDdGODYsIDB4MTgxRSwNCisgICAgMHg3Rjg3LCAweDE4MjEsIDB4N0Y4OCwgMHgxODIwLCAweDdGOEEsIDB4MEYzRCwgMHg3RjhDLCAweDE4MjIsDQorICAgIDB4N0Y4RSwgMHgwRDkyLCAweDdGOTEsIDB4M0E5QSwgMHg3Rjk0LCAweDE4MjMsIDB4N0Y5QSwgMHgxODI2LA0KKyAgICAweDdGOUQsIDB4MTgyNSwgMHg3RjlFLCAweDE4MjQsIDB4N0ZBMSwgMHgyMTk2LCAweDdGQTMsIDB4MTgyNywNCisgICAgMHg3RkE0LCAweDA3MDgsIDB4N0ZBOCwgMHgwQUE0LCAweDdGQTksIDB4MDY1QiwgMHg3RkFFLCAweDE4MkIsDQorICAgIDB4N0ZBRiwgMHgxODI4LCAweDdGQjIsIDB4MTgyOSwgMHg3RkI2LCAweDE4MkMsIDB4N0ZCOCwgMHgxODJELA0KKyAgICAweDdGQjksIDB4MTgyQSwgMHg3RkJELCAweDA0Q0IsIDB4N0ZCRiwgMHgzQTlCLCAweDdGQzEsIDB4MDUyNywNCisgICAgMHg3RkM1LCAweDE4MkYsIDB4N0ZDNiwgMHgxODMwLCAweDdGQ0EsIDB4MTgzMSwgMHg3RkNDLCAweDBGNEMsDQorICAgIDB4N0ZDRSwgMHgzQTlDLCAweDdGRDIsIDB4MDkzNiwgMHg3RkQ0LCAweDE4MzMsIDB4N0ZENSwgMHgxODMyLA0KKyAgICAweDdGREYsIDB4M0E5RCwgMHg3RkUwLCAweDBBMkYsIDB4N0ZFMSwgMHgxODM0LCAweDdGRTUsIDB4M0E5RSwNCisgICAgMHg3RkU2LCAweDE4MzUsIDB4N0ZFOSwgMHgxODM2LCAweDdGRUIsIDB4MDYyMSwgMHg3RkVDLCAweDNBOUYsDQorICAgIDB4N0ZFRSwgMHgzQUEwLCAweDdGRUYsIDB4M0FBMSwgMHg3RkYwLCAweDA2MDksIDB4N0ZGMywgMHgxODM3LA0KKyAgICAweDdGRjksIDB4MTgzOCwgMHg3RkZBLCAweDNBQTIsIDB4N0ZGQiwgMHgwRThCLCAweDdGRkMsIDB4MEY0RCwNCisgICAgMHg4MDAwLCAweDBGM0UsIDB4ODAwMSwgMHgwRkRELCAweDgwMDIsIDB4MzcxMywgMHg4MDAzLCAweDA3REYsDQorICAgIDB4ODAwNCwgMHgxODNCLCAweDgwMDUsIDB4MDkwMCwgMHg4MDA2LCAweDE4M0EsIDB4ODAwQiwgMHgxODNDLA0KKyAgICAweDgwMEMsIDB4MDhENSwgMHg4MDBFLCAweDNBQTMsIDB4ODAxMCwgMHgwQjMxLCAweDgwMTEsIDB4M0FBNCwNCisgICAgMHg4MDEyLCAweDE4M0QsIDB4ODAxNCwgMHgzQUE1LCAweDgwMTUsIDB4MDdERSwgMHg4MDE3LCAweDBFRTMsDQorICAgIDB4ODAxOCwgMHgxODNFLCAweDgwMTksIDB4MTgzRiwgMHg4MDFDLCAweDE4NDAsIDB4ODAyMSwgMHgxODQxLA0KKyAgICAweDgwMjQsIDB4M0FBNiwgMHg4MDI2LCAweDNBQTcsIDB4ODAyOCwgMHgxODQyLCAweDgwMzMsIDB4MDhENiwNCisgICAgMHg4MDM2LCAweDBFRjksIDB4ODAzQSwgMHgzQUE4LCAweDgwM0IsIDB4MTg0NCwgMHg4MDNDLCAweDNBQTksDQorICAgIDB4ODAzRCwgMHgwQjdELCAweDgwM0YsIDB4MTg0MywgMHg4MDQ2LCAweDE4NDYsIDB4ODA0QSwgMHgxODQ1LA0KKyAgICAweDgwNTIsIDB4MTg0NywgMHg4MDU2LCAweDBBNUYsIDB4ODA1OCwgMHgxODQ4LCAweDgwNUEsIDB4MTg0OSwNCisgICAgMHg4MDVFLCAweDBFMDksIDB4ODA1RiwgMHgxODRBLCAweDgwNjAsIDB4M0FBQSwgMHg4MDYxLCAweDBBRjEsDQorICAgIDB4ODA2MiwgMHgxODRCLCAweDgwNjgsIDB4MTg0QywgMHg4MDZGLCAweDBGQzYsIDB4ODA3MCwgMHgxODRGLA0KKyAgICAweDgwNzEsIDB4M0FBQiwgMHg4MDcyLCAweDE4NEUsIDB4ODA3MywgMHgxODRELCAweDgwNzQsIDB4MEJDQywNCisgICAgMHg4MDc1LCAweDNBQUMsIDB4ODA3NiwgMHgxODUwLCAweDgwNzcsIDB4MDlFQywgMHg4MDc5LCAweDE4NTEsDQorICAgIDB4ODA3RCwgMHgxODUyLCAweDgwN0UsIDB4MEZERSwgMHg4MDdGLCAweDE4NTMsIDB4ODA4NCwgMHgxODU0LA0KKyAgICAweDgwODUsIDB4MTg1NiwgMHg4MDg2LCAweDE4NTUsIDB4ODA4NywgMHgwRDM5LCAweDgwODksIDB4MENEMSwNCisgICAgMHg4MDhCLCAweDBGRTQsIDB4ODA4QywgMHgwRDNELCAweDgwOTMsIDB4MTg1OCwgMHg4MDk2LCAweDA5QkIsDQorICAgIDB4ODA5OCwgMHgwRDlDLCAweDgwOUEsIDB4MTg1OSwgMHg4MDlCLCAweDE4NTcsIDB4ODA5RCwgMHgwNjBBLA0KKyAgICAweDgwOUUsIDB4M0FBRCwgMHg4MEExLCAweDA3ODgsIDB4ODBBMiwgMHgwOEI2LCAweDgwQTUsIDB4MEQ4MiwNCisgICAgMHg4MEE2LCAweDNBQUUsIDB4ODBBOSwgMHgwNzVFLCAweDgwQUEsIDB4MEU3MSwgMHg4MEFCLCAweDNBQUYsDQorICAgIDB4ODBBQywgMHgxODVDLCAweDgwQUQsIDB4MTg1QSwgMHg4MEFGLCAweDA3RTAsIDB4ODBCMSwgMHgwN0UxLA0KKyAgICAweDgwQjIsIDB4MDRBRCwgMHg4MEI0LCAweDA4NTgsIDB4ODBCQSwgMHgwRDBGLCAweDgwQzMsIDB4MDRBMywNCisgICAgMHg4MEM0LCAweDE4NjEsIDB4ODBDNiwgMHgwQjdFLCAweDgwQ0MsIDB4MEQwRSwgMHg4MENFLCAweDBCM0IsDQorICAgIDB4ODBENiwgMHgxODYzLCAweDgwRDcsIDB4M0FCMCwgMHg4MEQ4LCAweDNBQjEsIDB4ODBEOSwgMHgxODVGLA0KKyAgICAweDgwREEsIDB4MTg2MiwgMHg4MERCLCAweDE4NUQsIDB4ODBERCwgMHgxODYwLCAweDgwREUsIDB4MEU1NCwNCisgICAgMHg4MEUxLCAweDA3ODksIDB4ODBFNCwgMHgwNEMxLCAweDgwRTUsIDB4MTg1RSwgMHg4MEVGLCAweDE4NjUsDQorICAgIDB4ODBGMSwgMHgxODY2LCAweDgwRjQsIDB4MEM5MSwgMHg4MEY4LCAweDA2QjMsIDB4ODBGQywgMHgxODcxLA0KKyAgICAweDgwRkQsIDB4MENGMywgMHg4MTAyLCAweDA4QjcsIDB4ODEwNSwgMHgwNkI0LCAweDgxMDYsIDB4MEE2QywNCisgICAgMHg4MTA3LCAweDBGRUMsIDB4ODEwOCwgMHgwRUJBLCAweDgxMDksIDB4MTg2NCwgMHg4MTBBLCAweDBBNzgsDQorICAgIDB4ODExNiwgMHgzQUIyLCAweDgxMTgsIDB4M0FCMywgMHg4MTFBLCAweDA2NkQsIDB4ODExQiwgMHgxODY3LA0KKyAgICAweDgxMjMsIDB4MTg2OSwgMHg4MTI5LCAweDE4NjgsIDB4ODEyQiwgMHgzNjU5LCAweDgxMkYsIDB4MTg2QSwNCisgICAgMHg4MTMxLCAweDBCNjQsIDB4ODEzMywgMHgwQ0Y0LCAweDgxMzksIDB4MEJDRCwgMHg4MTNBLCAweDNBQjQsDQorICAgIDB4ODEzRSwgMHgxODZFLCAweDgxNDEsIDB4Mzc3MiwgMHg4MTQ2LCAweDE4NkQsIDB4ODE0QSwgMHgzQUI1LA0KKyAgICAweDgxNEIsIDB4MTg2QiwgMHg4MTRDLCAweDNBQjYsIDB4ODE0RSwgMHgwQTFCLCAweDgxNTAsIDB4MERENywNCisgICAgMHg4MTUxLCAweDE4NzAsIDB4ODE1MywgMHgxODZGLCAweDgxNTQsIDB4MDdFMiwgMHg4MTU1LCAweDBGRjksDQorICAgIDB4ODE1RiwgMHgxODgwLCAweDgxNjUsIDB4MTg3NCwgMHg4MTY2LCAweDE4NzUsIDB4ODE2QiwgMHgwOTFDLA0KKyAgICAweDgxNkUsIDB4MTg3MywgMHg4MTcwLCAweDA4MEEsIDB4ODE3MSwgMHgxODcyLCAweDgxNzQsIDB4MTg3NiwNCisgICAgMHg4MTc4LCAweDBCQ0UsIDB4ODE3OSwgMHgwREYyLCAweDgxN0EsIDB4MEFBNSwgMHg4MTdGLCAweDBCM0MsDQorICAgIDB4ODE4MCwgMHgxODdBLCAweDgxODEsIDB4M0FCNywgMHg4MTgyLCAweDE4N0IsIDB4ODE4MywgMHgxODc3LA0KKyAgICAweDgxODQsIDB4M0FCOCwgMHg4MTg4LCAweDE4NzgsIDB4ODE4QSwgMHgxODc5LCAweDgxOEYsIDB4MDdFMywNCisgICAgMHg4MTkzLCAweDE4ODEsIDB4ODE5NSwgMHgxODdELCAweDgxOUEsIDB4MEREOCwgMHg4MTlDLCAweDBFOUEsDQorICAgIDB4ODE5RCwgMHgwRDlBLCAweDgxQTAsIDB4MTg3QywgMHg4MUEzLCAweDE4N0YsIDB4ODFBNCwgMHgxODdFLA0KKyAgICAweDgxQTgsIDB4MEU3MiwgMHg4MUE5LCAweDE4ODIsIDB4ODFCMCwgMHgxODgzLCAweDgxQjMsIDB4MEFCOSwNCisgICAgMHg4MUI0LCAweDNBQjksIDB4ODFCNSwgMHgxODg0LCAweDgxQjgsIDB4MTg4NiwgMHg4MUJBLCAweDE4OEEsDQorICAgIDB4ODFCRCwgMHgxODg3LCAweDgxQkUsIDB4MTg4NSwgMHg4MUJGLCAweDBDRjUsIDB4ODFDMCwgMHgxODg4LA0KKyAgICAweDgxQzIsIDB4MTg4OSwgMHg4MUM2LCAweDA1MzIsIDB4ODFDOCwgMHgxODkwLCAweDgxQzksIDB4MTg4QiwNCisgICAgMHg4MUNELCAweDE4OEMsIDB4ODFDRiwgMHgzQUJBLCAweDgxRDEsIDB4MTg4RCwgMHg4MUQzLCAweDBCMDEsDQorICAgIDB4ODFEOCwgMHgxODhGLCAweDgxRDksIDB4MTg4RSwgMHg4MURBLCAweDE4OTEsIDB4ODFERiwgMHgxODkyLA0KKyAgICAweDgxRTAsIDB4MTg5MywgMHg4MUUzLCAweDBBMDksIDB4ODFFNSwgMHgwNTY5LCAweDgxRTcsIDB4MTg5NCwNCisgICAgMHg4MUU4LCAweDBGOUYsIDB4ODFFQSwgMHgwOEQ3LCAweDgxRUQsIDB4MDkzNywgMHg4MUYzLCAweDA4QjgsDQorICAgIDB4ODFGNCwgMHgwQjk1LCAweDgxRjksIDB4M0FCQiwgMHg4MUZBLCAweDE4OTUsIDB4ODFGQiwgMHgxODk2LA0KKyAgICAweDgxRkMsIDB4MDREMywgMHg4MUZFLCAweDE4OTcsIDB4ODIwMSwgMHgxODk4LCAweDgyMDIsIDB4MTg5OSwNCisgICAgMHg4MjAzLCAweDNBQkMsIDB4ODIwNSwgMHgxODlBLCAweDgyMDcsIDB4MTg5QiwgMHg4MjA4LCAweDA2QjUsDQorICAgIDB4ODIwOSwgMHgxM0FGLCAweDgyMEEsIDB4MTg5QywgMHg4MjBDLCAweDBBODksIDB4ODIwRCwgMHgxODlELA0KKyAgICAweDgyMEUsIDB4MDhGNywgMHg4MjEwLCAweDE4OUUsIDB4ODIxMiwgMHgxMDA5LCAweDgyMTYsIDB4MTg5RiwNCisgICAgMHg4MjE3LCAweDBFMkUsIDB4ODIxOCwgMHgwNjE4LCAweDgyMUIsIDB4MEFBNiwgMHg4MjFDLCAweDA5NjIsDQorICAgIDB4ODIxRSwgMHgwREUzLCAweDgyMUYsIDB4MDkzOCwgMHg4MjIxLCAweDNBQkQsIDB4ODIyOSwgMHgxOEEwLA0KKyAgICAweDgyMkEsIDB4MDdFNCwgMHg4MjJCLCAweDE4QTEsIDB4ODIyQywgMHgwRDYwLCAweDgyMkUsIDB4MThBRiwNCisgICAgMHg4MjMyLCAweDNBQkUsIDB4ODIzMywgMHgxOEEzLCAweDgyMzQsIDB4M0FCRiwgMHg4MjM1LCAweDBCMjksDQorICAgIDB4ODIzNiwgMHgwRDJCLCAweDgyMzcsIDB4MDc3MywgMHg4MjM4LCAweDE4QTIsIDB4ODIzOSwgMHgwQUE3LA0KKyAgICAweDgyNDAsIDB4MThBNCwgMHg4MjQ2LCAweDNBQzAsIDB4ODI0NywgMHgwQzE2LCAweDgyNEIsIDB4M0FDMSwNCisgICAgMHg4MjRGLCAweDNBQzIsIDB4ODI1OCwgMHgxOEE2LCAweDgyNTksIDB4MThBNSwgMHg4MjVBLCAweDE4QTgsDQorICAgIDB4ODI1RCwgMHgxOEE3LCAweDgyNUYsIDB4MThBOSwgMHg4MjYyLCAweDE4QUIsIDB4ODI2NCwgMHgxOEFBLA0KKyAgICAweDgyNjYsIDB4MDYwQiwgMHg4MjY4LCAweDE4QUMsIDB4ODI2QSwgMHgxOEFELCAweDgyNkIsIDB4MThBRSwNCisgICAgMHg4MjZFLCAweDA4MjEsIDB4ODI2RiwgMHgwRjkxLCAweDgyNzEsIDB4MThCMCwgMHg4MjcyLCAweDA5RUQsDQorICAgIDB4ODI3NiwgMHgwNTEyLCAweDgyNzcsIDB4MThCMSwgMHg4Mjc4LCAweDE4QjIsIDB4ODI3OSwgMHgzNzc1LA0KKyAgICAweDgyN0UsIDB4MThCMywgMHg4MjhCLCAweDA0QjYsIDB4ODI4RCwgMHgxOEI0LCAweDgyOEUsIDB4M0FDMywNCisgICAgMHg4MjkyLCAweDE4QjUsIDB4ODI5OSwgMHgwREQ5LCAweDgyOUQsIDB4MDhGMywgMHg4MjlGLCAweDE4QjcsDQorICAgIDB4ODJBNSwgMHgwNTg3LCAweDgyQTYsIDB4MDQ3NiwgMHg4MkFCLCAweDE4QjYsIDB4ODJBQywgMHgxOEI5LA0KKyAgICAweDgyQUQsIDB4MEQwNCwgMHg4MkFFLCAweDNBQzQsIDB4ODJBRiwgMHgwQTBBLCAweDgyQjEsIDB4MDU1NiwNCisgICAgMHg4MkIzLCAweDBFNTUsIDB4ODJCNywgMHgzQUM1LCAweDgyQjgsIDB4MDczMywgMHg4MkI5LCAweDA2RDQsDQorICAgIDB4ODJCQiwgMHgxOEI4LCAweDgyQkQsIDB4MDU2QSwgMHg4MkJFLCAweDNBQzYsIDB4ODJDNSwgMHgwNURGLA0KKyAgICAweDgyQzYsIDB4M0FDNywgMHg4MkQxLCAweDA1MTMsIDB4ODJEMiwgMHgxOEJELCAweDgyRDMsIDB4MEZCMiwNCisgICAgMHg4MkQ0LCAweDBCM0QsIDB4ODJENywgMHgwREI2LCAweDgyRDksIDB4MThDOSwgMHg4MkRCLCAweDA1NTcsDQorICAgIDB4ODJEQywgMHgxOEM3LCAweDgyREUsIDB4MThDNSwgMHg4MkRGLCAweDE4QkMsIDB4ODJFMSwgMHgxOEJBLA0KKyAgICAweDgyRTMsIDB4MThCQiwgMHg4MkU1LCAweDA5MEYsIDB4ODJFNiwgMHgwNkU0LCAweDgyRTcsIDB4MEJCNSwNCisgICAgMHg4MkVCLCAweDBDQTksIDB4ODJGMSwgMHgwNEYzLCAweDgyRjMsIDB4MThCRiwgMHg4MkY0LCAweDE4QkUsDQorICAgIDB4ODJGOSwgMHgxOEM0LCAweDgyRkEsIDB4MThDMCwgMHg4MkZCLCAweDE4QzMsIDB4ODJGRSwgMHgzQUM4LA0KKyAgICAweDgzMDEsIDB4MjE5OCwgMHg4MzAyLCAweDBFREMsIDB4ODMwMywgMHgxOEMyLCAweDgzMDQsIDB4MDU1OCwNCisgICAgMHg4MzA1LCAweDA1REIsIDB4ODMwNiwgMHgxOEM2LCAweDgzMDksIDB4MThDOCwgMHg4MzBFLCAweDA3MkEsDQorICAgIDB4ODMxNiwgMHgxOENDLCAweDgzMTcsIDB4MThENSwgMHg4MzE4LCAweDE4RDYsIDB4ODMxQywgMHgwNDZGLA0KKyAgICAweDgzMjMsIDB4MThERCwgMHg4MzI4LCAweDA0QjUsIDB4ODMyQiwgMHgxOEQ0LCAweDgzMkYsIDB4MThEMywNCisgICAgMHg4MzMxLCAweDE4Q0UsIDB4ODMzMiwgMHgxOENELCAweDgzMzQsIDB4MThDQiwgMHg4MzM1LCAweDE4Q0EsDQorICAgIDB4ODMzNiwgMHgwQkExLCAweDgzMzgsIDB4MEI1QiwgMHg4MzM5LCAweDE4RDAsIDB4ODM0MCwgMHgxOENGLA0KKyAgICAweDgzNDMsIDB4M0FDOSwgMHg4MzQ1LCAweDE4RDIsIDB4ODM0OSwgMHgwQUYyLCAweDgzNEEsIDB4MDcyQiwNCisgICAgMHg4MzRGLCAweDA0RTMsIDB4ODM1MCwgMHgxOEQxLCAweDgzNTEsIDB4M0FDQSwgMHg4MzUyLCAweDA3RTUsDQorICAgIDB4ODM1NSwgMHgzQUNCLCAweDgzNTgsIDB4MEFGMywgMHg4MzYyLCAweDIxOTksIDB4ODM3MywgMHgxOEUzLA0KKyAgICAweDgzNzUsIDB4MThFNCwgMHg4Mzc3LCAweDA1NTksIDB4ODM3QiwgMHgwNTJFLCAweDgzN0MsIDB4MThFMSwNCisgICAgMHg4MzdGLCAweDIxOUEsIDB4ODM4NSwgMHgxOEQ3LCAweDgzODYsIDB4M0FDQywgMHg4Mzg3LCAweDE4REYsDQorICAgIDB4ODM4OSwgMHgxOEU2LCAweDgzOEEsIDB4MThFMCwgMHg4MzhELCAweDNBQ0QsIDB4ODM4RSwgMHgxOERFLA0KKyAgICAweDgzOTIsIDB4M0FDRSwgMHg4MzkzLCAweDE4QzEsIDB4ODM5NiwgMHgxOERDLCAweDgzOTgsIDB4M0FDRiwNCisgICAgMHg4MzlBLCAweDE4RDgsIDB4ODM5RSwgMHgwNjBDLCAweDgzOUYsIDB4MThEQSwgMHg4M0EwLCAweDE4RTUsDQorICAgIDB4ODNBMiwgMHgxOERCLCAweDgzQTgsIDB4MThFNywgMHg4M0E5LCAweDNBRDAsIDB4ODNBQSwgMHgxOEQ5LA0KKyAgICAweDgzQUIsIDB4MEQzMiwgMHg4M0IxLCAweDBGNTMsIDB4ODNCNSwgMHgxOEUyLCAweDgzQkQsIDB4MThGOCwNCisgICAgMHg4M0JGLCAweDNBRDEsIDB4ODNDMCwgMHgzQUQyLCAweDgzQzEsIDB4MThGMCwgMHg4M0M1LCAweDBBNDEsDQorICAgIDB4ODNDNywgMHgyMTlCLCAweDgzQ0EsIDB4MDY2MCwgMHg4M0NDLCAweDA2RDUsIDB4ODNDRSwgMHgxOEVCLA0KKyAgICAweDgzRDMsIDB4MDU1QiwgMHg4M0Q2LCAweDA5QkMsIDB4ODNEOCwgMHgxOEVFLCAweDgzREMsIDB4MDg0QSwNCisgICAgMHg4M0RGLCAweDBDNEIsIDB4ODNFMCwgMHgxOEYzLCAweDgzRTksIDB4MEUzRSwgMHg4M0VBLCAweDNBRDMsDQorICAgIDB4ODNFQiwgMHgxOEVBLCAweDgzRUYsIDB4MDU1QSwgMHg4M0YwLCAweDA3OEEsIDB4ODNGMSwgMHgwRDlCLA0KKyAgICAweDgzRjIsIDB4MThGNCwgMHg4M0Y0LCAweDE4RTgsIDB4ODNGNiwgMHgyMTlDLCAweDgzRjcsIDB4MThGMSwNCisgICAgMHg4M0ZCLCAweDE4RkIsIDB4ODNGRCwgMHgxOEVDLCAweDg0MDMsIDB4MThFRCwgMHg4NDA0LCAweDBDOTIsDQorICAgIDB4ODQwNywgMHgxOEYyLCAweDg0MEEsIDB4MUU3RiwgMHg4NDBCLCAweDE4RUYsIDB4ODQwQywgMHgwRTU2LA0KKyAgICAweDg0MEQsIDB4MThGNSwgMHg4NDBFLCAweDA0QTQsIDB4ODQwRiwgMHgzQUQ0LCAweDg0MTEsIDB4M0FENSwNCisgICAgMHg4NDEzLCAweDE4RTksIDB4ODQyMCwgMHgxOEY3LCAweDg0MjIsIDB4MThGNiwgMHg4NDI5LCAweDBEMjEsDQorICAgIDB4ODQyQSwgMHgxOEZELCAweDg0MkMsIDB4MTkwOCwgMHg4NDMxLCAweDA1REMsIDB4ODQzNSwgMHgxOTBCLA0KKyAgICAweDg0MzgsIDB4MThGOSwgMHg4NDNDLCAweDE4RkUsIDB4ODQzRCwgMHgwRjU4LCAweDg0NDYsIDB4MTkwNywNCisgICAgMHg4NDQ4LCAweDIxOUQsIDB4ODQ0OSwgMHgwRjNGLCAweDg0NEEsIDB4M0FENiwgMHg4NDRFLCAweDBGNzIsDQorICAgIDB4ODQ1NywgMHgwQkI2LCAweDg0NUIsIDB4MDVDOSwgMHg4NDYxLCAweDBERTQsIDB4ODQ2MiwgMHgxOTBELA0KKyAgICAweDg0NjMsIDB4MEM3OSwgMHg4NDY2LCAweDA0NzUsIDB4ODQ2OSwgMHgxOTA2LCAweDg0NkIsIDB4MTkwMiwNCisgICAgMHg4NDZDLCAweDBBRjQsIDB4ODQ2RCwgMHgxOEZDLCAweDg0NkUsIDB4MTkwNCwgMHg4NDZGLCAweDE5MDksDQorICAgIDB4ODQ3MSwgMHgwQ0UyLCAweDg0NzUsIDB4MDQ2RSwgMHg4NDc2LCAweDNBRDcsIDB4ODQ3NywgMHgxOTAxLA0KKyAgICAweDg0NzksIDB4MTkwQSwgMHg4NDdBLCAweDBERUEsIDB4ODQ4MiwgMHgxOTA1LCAweDg0ODQsIDB4MTkwMCwNCisgICAgMHg4NDhCLCAweDA5QkQsIDB4ODQ5MCwgMHgwOTM5LCAweDg0OTQsIDB4MDhEOCwgMHg4NDk5LCAweDBFRTQsDQorICAgIDB4ODQ5QywgMHgwREI5LCAweDg0OUYsIDB4MTkxMCwgMHg4NEExLCAweDE5MTksIDB4ODRBOCwgMHgzQUQ4LA0KKyAgICAweDg0QUQsIDB4MTkwMywgMHg4NEFGLCAweDNBRDksIDB4ODRCMiwgMHgwNUQ1LCAweDg0QjQsIDB4MjE5RSwNCisgICAgMHg4NEI4LCAweDA5RTAsIDB4ODRCOSwgMHgxOTBFLCAweDg0QkIsIDB4MTkxMywgMHg4NEJDLCAweDBBRjUsDQorICAgIDB4ODRCRiwgMHgxOTBGLCAweDg0QzAsIDB4M0FEQSwgMHg4NEMxLCAweDE5MTYsIDB4ODRDMiwgMHgzQURCLA0KKyAgICAweDg0QzQsIDB4MEI5RCwgMHg4NEM2LCAweDE5MTcsIDB4ODRDOSwgMHgwRjQwLCAweDg0Q0EsIDB4MTkwQywNCisgICAgMHg4NENCLCAweDA1OTYsIDB4ODRDRCwgMHgxOTEyLCAweDg0RDAsIDB4MTkxNSwgMHg4NEQxLCAweDBFQjgsDQorICAgIDB4ODRENiwgMHgxOTE4LCAweDg0RDksIDB4MTkxMSwgMHg4NERBLCAweDE5MTQsIDB4ODREQywgMHgyMEFCLA0KKyAgICAweDg0RUMsIDB4MEU1NywgMHg4NEVFLCAweDBGQzcsIDB4ODRGMCwgMHgzQURDLCAweDg0RjQsIDB4MTkxQywNCisgICAgMHg4NEZDLCAweDE5MjMsIDB4ODRGRCwgMHgzQURELCAweDg0RkYsIDB4MTkxQiwgMHg4NTAwLCAweDA4RUYsDQorICAgIDB4ODUwNiwgMHgxOEZBLCAweDg1MEMsIDB4M0FERSwgMHg4NTExLCAweDBFMUUsIDB4ODUxMywgMHgwRUFFLA0KKyAgICAweDg1MTQsIDB4MTkyMiwgMHg4NTE1LCAweDE5MjEsIDB4ODUxNywgMHgxOTFELCAweDg1MTgsIDB4MTkxRSwNCisgICAgMHg4NTFBLCAweDA0RDgsIDB4ODUxRiwgMHgxOTIwLCAweDg1MjEsIDB4MTkxQSwgMHg4NTIzLCAweDFFMUEsDQorICAgIDB4ODUyNiwgMHgwQkYxLCAweDg1MkMsIDB4MTkxRiwgMHg4NTJELCAweDA0QzIsIDB4ODUzNCwgMHgzQURGLA0KKyAgICAweDg1MzUsIDB4MEIwMiwgMHg4NTNELCAweDBFMTMsIDB4ODUzRSwgMHgxRUI1LCAweDg1NDAsIDB4MTkyNCwNCisgICAgMHg4NTQxLCAweDE5MjgsIDB4ODU0MywgMHgwRDZELCAweDg1NDgsIDB4MTkyNywgMHg4NTQ5LCAweDA5QkUsDQorICAgIDB4ODU0QSwgMHgwOEY1LCAweDg1NEIsIDB4MTkyQSwgMHg4NTRFLCAweDA2QjYsIDB4ODU1MywgMHgyMTlGLA0KKyAgICAweDg1NTUsIDB4MTkyQiwgMHg4NTU3LCAweDBERUIsIDB4ODU1OCwgMHgxOTI2LCAweDg1NTksIDB4MjFBMCwNCisgICAgMHg4NTVBLCAweDE4RkYsIDB4ODU1RSwgMHgzQUUwLCAweDg1NjMsIDB4MTkyNSwgMHg4NTY4LCAweDBGRjUsDQorICAgIDB4ODU2OSwgMHgwQzdBLCAweDg1NkEsIDB4MERFNSwgMHg4NTZCLCAweDIxQTEsIDB4ODU2RCwgMHgxOTMyLA0KKyAgICAweDg1NzcsIDB4MTkzOCwgMHg4NTdFLCAweDE5MzksIDB4ODU4MCwgMHgxOTJDLCAweDg1ODQsIDB4MEQyQywNCisgICAgMHg4NTg3LCAweDE5MzYsIDB4ODU4OCwgMHgxOTJFLCAweDg1OEEsIDB4MTkzMCwgMHg4NThGLCAweDNBRTEsDQorICAgIDB4ODU5MCwgMHgxOTNBLCAweDg1OTEsIDB4MTkyRiwgMHg4NTk0LCAweDE5MzMsIDB4ODU5NywgMHgwNTE0LA0KKyAgICAweDg1OTksIDB4MENCRCwgMHg4NTlCLCAweDE5MzQsIDB4ODU5QywgMHgxOTM3LCAweDg1QTQsIDB4MTkyRCwNCisgICAgMHg4NUE2LCAweDBBQTgsIDB4ODVBOCwgMHgxOTMxLCAweDg1QTksIDB4MDg3NSwgMHg4NUFBLCAweDBBMEIsDQorICAgIDB4ODVBQiwgMHgwNzA2LCAweDg1QUMsIDB4MEYwMCwgMHg4NUFELCAweDNBRTQsIDB4ODVBRSwgMHgwRjA1LA0KKyAgICAweDg1QUYsIDB4MDk3QywgMHg4NUIwLCAweDIxQTMsIDB4ODVCNywgMHgzQUUyLCAweDg1QjksIDB4MTkzRSwNCisgICAgMHg4NUJBLCAweDE5M0MsIDB4ODVDMSwgMHgwRkY0LCAweDg1QzksIDB4MTkzQiwgMHg4NUNELCAweDBGNUYsDQorICAgIDB4ODVDRSwgMHgzQUUzLCAweDg1Q0YsIDB4MTkzRCwgMHg4NUQwLCAweDE5M0YsIDB4ODVENSwgMHgxOTQwLA0KKyAgICAweDg1REMsIDB4MTk0MywgMHg4NURELCAweDE5NDEsIDB4ODVFNCwgMHgwQzdCLCAweDg1RTUsIDB4MTk0MiwNCisgICAgMHg4NUU5LCAweDBENjEsIDB4ODVFQSwgMHgxOTM1LCAweDg1RjQsIDB4Mzc4MCwgMHg4NUY3LCAweDA5N0QsDQorICAgIDB4ODVGOSwgMHgxOTQ0LCAweDg1RkEsIDB4MTk0OSwgMHg4NUZCLCAweDBBRjYsIDB4ODVGRSwgMHgxOTQ4LA0KKyAgICAweDg2MDIsIDB4MTkyOSwgMHg4NjA2LCAweDE5NEEsIDB4ODYwNywgMHgwQUNCLCAweDg2MEEsIDB4MTk0NSwNCisgICAgMHg4NjBCLCAweDE5NDcsIDB4ODYxMiwgMHgzQUU1LCAweDg2MTMsIDB4MTk0NiwgMHg4NjE2LCAweDE0RDAsDQorICAgIDB4ODYxNywgMHgxNEMxLCAweDg2MUEsIDB4MTk0QywgMHg4NjIyLCAweDE5NEIsIDB4ODYyOSwgMHgzQUU2LA0KKyAgICAweDg2MkQsIDB4MEY2MCwgMHg4NjJGLCAweDE2QjEsIDB4ODYzMCwgMHgxOTRELCAweDg2M0YsIDB4MTk0RSwNCisgICAgMHg4NjRELCAweDE5NEYsIDB4ODY0RSwgMHgwNzhCLCAweDg2NTAsIDB4MDY2RSwgMHg4NjUyLCAweDNBRTcsDQorICAgIDB4ODY1NCwgMHgxOTUxLCAweDg2NTUsIDB4MTA5NCwgMHg4NjVBLCAweDA2OEYsIDB4ODY1QiwgMHgzNDE4LA0KKyAgICAweDg2NUMsIDB4MEY4MiwgMHg4NjVFLCAweDA2RUIsIDB4ODY1RiwgMHgxOTUyLCAweDg2NjMsIDB4M0FFOCwNCisgICAgMHg4NjY3LCAweDE5NTMsIDB4ODY2QiwgMHgwQkFDLCAweDg2NkMsIDB4M0FFOSwgMHg4NjZGLCAweDNBRUEsDQorICAgIDB4ODY3MSwgMHgxOTU0LCAweDg2NzksIDB4MENEMiwgMHg4NjdBLCAweDNBRUIsIDB4ODY3QiwgMHgwNDdFLA0KKyAgICAweDg2N0QsIDB4Mzc4NiwgMHg4NjhBLCAweDA1NjMsIDB4ODY4QiwgMHgxOTU5LCAweDg2OEMsIDB4MTk1QSwNCisgICAgMHg4NjhELCAweDNBRUMsIDB4ODY5MSwgMHgzQUVELCAweDg2OTMsIDB4MTk1NSwgMHg4Njk1LCAweDA4OEIsDQorICAgIDB4ODY5OCwgMHgzQUVFLCAweDg2QTMsIDB4MTk1NiwgMHg4NkE0LCAweDBDRjgsIDB4ODZBNywgMHgzQUVGLA0KKyAgICAweDg2QTgsIDB4M0FGMCwgMHg4NkE5LCAweDE5NTcsIDB4ODZBQSwgMHgxOTU4LCAweDg2QUIsIDB4MTk2MiwNCisgICAgMHg4NkFGLCAweDE5NUMsIDB4ODZCMCwgMHgxOTVGLCAweDg2QjYsIDB4MTk1QiwgMHg4NkM0LCAweDE5NUQsDQorICAgIDB4ODZDNiwgMHgxOTVFLCAweDg2QzcsIDB4MDkwNCwgMHg4NkM5LCAweDE5NjAsIDB4ODZDQiwgMHgwQjdGLA0KKyAgICAweDg2Q0QsIDB4MDcyQywgMHg4NkNFLCAweDA1QTAsIDB4ODZENCwgMHgxOTYzLCAweDg2RDksIDB4MDU5RCwNCisgICAgMHg4NkRCLCAweDE5NjgsIDB4ODZERSwgMHgxOTY0LCAweDg2REYsIDB4MTk2NywgMHg4NkU0LCAweDBENEUsDQorICAgIDB4ODZFOSwgMHgxOTY1LCAweDg2RUMsIDB4MTk2NiwgMHg4NkVELCAweDBEQkEsIDB4ODZFRSwgMHgwRDZFLA0KKyAgICAweDg2RUYsIDB4MTk2OSwgMHg4NkY4LCAweDBCNUQsIDB4ODZGOSwgMHgxOTczLCAweDg2RkEsIDB4M0FGMSwNCisgICAgMHg4NkZCLCAweDE5NkYsIDB4ODZGRCwgMHgzQUYyLCAweDg2RkUsIDB4MDU2QiwgMHg4NzAwLCAweDE5NkQsDQorICAgIDB4ODcwMiwgMHgwRTU4LCAweDg3MDMsIDB4MTk2RSwgMHg4NzA2LCAweDE5NkIsIDB4ODcwOCwgMHgxOTZDLA0KKyAgICAweDg3MDksIDB4MTk3MSwgMHg4NzBBLCAweDE5NzQsIDB4ODcwQiwgMHgzQUYzLCAweDg3MEQsIDB4MTk3MiwNCisgICAgMHg4NzExLCAweDE5NzAsIDB4ODcxMiwgMHgxOTZBLCAweDg3MTMsIDB4M0FGNCwgMHg4NzE4LCAweDBCOTYsDQorICAgIDB4ODcxOSwgMHgzQUY1LCAweDg3MUEsIDB4MTk3QiwgMHg4NzFDLCAweDBFQjYsIDB4ODcxRSwgMHgzQUY2LA0KKyAgICAweDg3MjUsIDB4MTk3OSwgMHg4NzI4LCAweDNBRjcsIDB4ODcyOSwgMHgxOTdBLCAweDg3MzQsIDB4MTk3NSwNCisgICAgMHg4NzM3LCAweDE5NzcsIDB4ODczQiwgMHgxOTc4LCAweDg3M0UsIDB4M0FGOCwgMHg4NzNGLCAweDE5NzYsDQorICAgIDB4ODc0OSwgMHgwQThBLCAweDg3NEIsIDB4MEZERiwgMHg4NzRDLCAweDE5N0YsIDB4ODc0RSwgMHgxOTgwLA0KKyAgICAweDg3NTMsIDB4MTk4NiwgMHg4NzU1LCAweDA5RjAsIDB4ODc1NywgMHgxOTgyLCAweDg3NTksIDB4MTk4NSwNCisgICAgMHg4NzVGLCAweDE5N0QsIDB4ODc2MCwgMHgxOTdDLCAweDg3NjMsIDB4MTk4NywgMHg4NzY2LCAweDA1NUMsDQorICAgIDB4ODc2OCwgMHgxOTgzLCAweDg3NkEsIDB4MTk4OCwgMHg4NzZFLCAweDE5ODQsIDB4ODc3MSwgMHgzQUY5LA0KKyAgICAweDg3NzQsIDB4MTk4MSwgMHg4Nzc2LCAweDBCQ0YsIDB4ODc3OCwgMHgxOTdFLCAweDg3N0YsIDB4MEQxRSwNCisgICAgMHg4NzgyLCAweDE5OEMsIDB4ODc4OCwgMHgzQUZBLCAweDg3OEQsIDB4MEYyNSwgMHg4Nzk5LCAweDNBRkIsDQorICAgIDB4ODc5RiwgMHgxOThCLCAweDg3QTIsIDB4MTk4QSwgMHg4N0FCLCAweDE5OTMsIDB4ODdBQywgMHgzQUZDLA0KKyAgICAweDg3QUQsIDB4M0FGRCwgMHg4N0FGLCAweDE5OEQsIDB4ODdCMywgMHgxOTk1LCAweDg3QjUsIDB4M0FGRSwNCisgICAgMHg4N0JBLCAweDBGNTAsIDB4ODdCQiwgMHgxOTk4LCAweDg3QkQsIDB4MTk4RiwgMHg4N0MwLCAweDE5OTAsDQorICAgIDB4ODdDNCwgMHgxOTk0LCAweDg3QzYsIDB4MTk5NywgMHg4N0M3LCAweDE5OTYsIDB4ODdDQiwgMHgxOThFLA0KKyAgICAweDg3RDAsIDB4MTk5MSwgMHg4N0QyLCAweDE5QTIsIDB4ODdENiwgMHgzQUZGLCAweDg3RTAsIDB4MTk5QiwNCisgICAgMHg4N0VCLCAweDNCMDAsIDB4ODdFQywgMHgxRTIzLCAweDg3RUQsIDB4M0IwMSwgMHg4N0VGLCAweDE5OTksDQorICAgIDB4ODdGMiwgMHgxOTlBLCAweDg3RjUsIDB4M0MzRCwgMHg4N0Y2LCAweDE5OUYsIDB4ODdGNywgMHgxOUEwLA0KKyAgICAweDg3RjksIDB4MDU4OCwgMHg4N0ZCLCAweDA2NUMsIDB4ODdGRSwgMHgxOTlFLCAweDg4MDEsIDB4M0IwMiwNCisgICAgMHg4ODAzLCAweDNCMDMsIDB4ODgwNSwgMHgxOTg5LCAweDg4MDYsIDB4M0IwNCwgMHg4ODA3LCAweDIxQTYsDQorICAgIDB4ODgwQiwgMHgzQjA1LCAweDg4MEQsIDB4MTk5RCwgMHg4ODBFLCAweDE5QTEsIDB4ODgwRiwgMHgxOTlDLA0KKyAgICAweDg4MTEsIDB4MTlBMywgMHg4ODE0LCAweDNCMDYsIDB4ODgxNSwgMHgxOUE1LCAweDg4MTYsIDB4MTlBNCwNCisgICAgMHg4ODFDLCAweDNCMDcsIDB4ODgxRiwgMHgxRTg1LCAweDg4MjEsIDB4MTlBNywgMHg4ODIyLCAweDE5QTYsDQorICAgIDB4ODgyMywgMHgxOTYxLCAweDg4MjcsIDB4MTlBQiwgMHg4ODMxLCAweDE5QTgsIDB4ODgzNiwgMHgxOUE5LA0KKyAgICAweDg4MzksIDB4MTlBQSwgMHg4ODNCLCAweDE5QUMsIDB4ODg0MCwgMHgwNzQyLCAweDg4NDIsIDB4MTlBRSwNCisgICAgMHg4ODQ0LCAweDE5QUQsIDB4ODg0NiwgMHgwOTNBLCAweDg4NEMsIDB4MDdFNiwgMHg4ODRELCAweDE1MjQsDQorICAgIDB4ODg1MiwgMHgxOUFGLCAweDg4NTMsIDB4MDk1QiwgMHg4ODU2LCAweDNCMDgsIDB4ODg1NywgMHgwNTk3LA0KKyAgICAweDg4NTksIDB4MTlCMCwgMHg4ODVCLCAweDA0RjQsIDB4ODg1RCwgMHgwOUJGLCAweDg4NUUsIDB4MTlCMSwNCisgICAgMHg4ODVGLCAweDNCMDksIDB4ODg2MSwgMHgwN0U3LCAweDg4NjIsIDB4MTlCMiwgMHg4ODYzLCAweDA0QTUsDQorICAgIDB4ODg2NCwgMHgzQjBBLCAweDg4NjgsIDB4MERBRiwgMHg4ODZCLCAweDE5QjMsIDB4ODg3MCwgMHgwQTMwLA0KKyAgICAweDg4NzIsIDB4MTlCQSwgMHg4ODc1LCAweDE5QjcsIDB4ODg3NywgMHgwQkFELCAweDg4N0QsIDB4MTlCOCwNCisgICAgMHg4ODdFLCAweDE5QjUsIDB4ODg3RiwgMHgwNkQ2LCAweDg4ODEsIDB4MTlCNCwgMHg4ODgyLCAweDE5QkIsDQorICAgIDB4ODg4OCwgMHgwNzBDLCAweDg4OEIsIDB4MEIzRSwgMHg4ODhELCAweDE5QzEsIDB4ODg5MiwgMHgxOUJELA0KKyAgICAweDg4OTYsIDB4MEIxNSwgMHg4ODk3LCAweDE5QkMsIDB4ODg5OCwgMHgzQjBCLCAweDg4OTksIDB4MTlCRiwNCisgICAgMHg4ODlFLCAweDE5QjYsIDB4ODhBMiwgMHgxOUMwLCAweDg4QTQsIDB4MTlDMiwgMHg4OEFBLCAweDNCMEMsDQorICAgIDB4ODhBQiwgMHgwRDgzLCAweDg4QUUsIDB4MTlCRSwgMHg4OEIwLCAweDE5QzMsIDB4ODhCMSwgMHgxOUM1LA0KKyAgICAweDg4QjQsIDB4MDc4NywgMHg4OEI1LCAweDE5QjksIDB4ODhCNywgMHgwNDg1LCAweDg4QkQsIDB4M0IwRCwNCisgICAgMHg4OEJFLCAweDNCMEUsIDB4ODhCRiwgMHgxOUM0LCAweDg4QzEsIDB4MDg0QiwgMHg4OEMyLCAweDBGQkUsDQorICAgIDB4ODhDMywgMHgxOUM2LCAweDg4QzQsIDB4MTlDNywgMHg4OEM1LCAweDBBRjcsIDB4ODhDNiwgMHgzNzg5LA0KKyAgICAweDg4Q0EsIDB4M0IwRiwgMHg4OENGLCAweDBGNkEsIDB4ODhEMiwgMHgzQjEwLCAweDg4RDQsIDB4MTlDOCwNCisgICAgMHg4OEQ1LCAweDBGMUYsIDB4ODhEOCwgMHgxOUM5LCAweDg4RDksIDB4MTlDQSwgMHg4OERCLCAweDNCMTEsDQorICAgIDB4ODhEQywgMHgwRTM0LCAweDg4REQsIDB4MTlDQiwgMHg4OERGLCAweDA4MzAsIDB4ODhFMSwgMHgwRjZCLA0KKyAgICAweDg4RTgsIDB4MTlEMCwgMHg4OEYwLCAweDNCMTIsIDB4ODhGMSwgMHgzQjEzLCAweDg4RjIsIDB4MTlEMSwNCisgICAgMHg4OEYzLCAweDA5QzAsIDB4ODhGNCwgMHgxOUNGLCAweDg4RjUsIDB4MjFBNywgMHg4OEY4LCAweDBGNTEsDQorICAgIDB4ODhGOSwgMHgxOUNDLCAweDg4RkMsIDB4MTlDRSwgMHg4OEZELCAweDBBNjEsIDB4ODhGRSwgMHgwQTQ0LA0KKyAgICAweDg5MDIsIDB4MTlDRCwgMHg4OTA0LCAweDE5RDIsIDB4ODkwNiwgMHgzQjE0LCAweDg5MDcsIDB4MERGMywNCisgICAgMHg4OTBBLCAweDE5RDQsIDB4ODkwQywgMHgxOUQzLCAweDg5MTAsIDB4MDVDQSwgMHg4OTEyLCAweDBFNTksDQorICAgIDB4ODkxMywgMHgxOUQ1LCAweDg5MTgsIDB4M0IxNSwgMHg4OTE5LCAweDNCMTYsIDB4ODkxQSwgMHgzQjE3LA0KKyAgICAweDg5MUMsIDB4MjBBOCwgMHg4OTFELCAweDE5RTEsIDB4ODkxRSwgMHgxOUQ3LCAweDg5MjUsIDB4MTlEOCwNCisgICAgMHg4OTI3LCAweDNCMTgsIDB4ODkyQSwgMHgxOUQ5LCAweDg5MkIsIDB4MTlEQSwgMHg4OTMwLCAweDNCMTksDQorICAgIDB4ODkzNiwgMHgxOURFLCAweDg5MzgsIDB4MTlERiwgMHg4OTNCLCAweDE5REQsIDB4ODkzRSwgMHgzQjFBLA0KKyAgICAweDg5NDEsIDB4MTlEQiwgMHg4OTQzLCAweDE5RDYsIDB4ODk0NCwgMHgxOURDLCAweDg5NEMsIDB4MTlFMCwNCisgICAgMHg4OTRELCAweDFCRDAsIDB4ODk1NiwgMHgwNTI4LCAweDg5NUUsIDB4MTlFMywgMHg4OTVGLCAweDA2RDcsDQorICAgIDB4ODk2MCwgMHgxOUUyLCAweDg5NjQsIDB4MTlFNSwgMHg4OTY2LCAweDE5RTQsIDB4ODk2QSwgMHgxOUU3LA0KKyAgICAweDg5NkQsIDB4MTlFNiwgMHg4OTZGLCAweDE5RTgsIDB4ODk3MiwgMHgwOTNCLCAweDg5NzQsIDB4MTlFOSwNCisgICAgMHg4OTc3LCAweDE5RUEsIDB4ODk3QiwgMHgzQjFCLCAweDg5N0UsIDB4MTlFQiwgMHg4OTdGLCAweDBBNjIsDQorICAgIDB4ODk4MCwgMHgzNjJFLCAweDg5ODEsIDB4MEY0MSwgMHg4OTgzLCAweDE5RUMsIDB4ODk4NiwgMHgwREY0LA0KKyAgICAweDg5ODcsIDB4MENGQywgMHg4OTg4LCAweDE5RUQsIDB4ODk4QSwgMHgxOUVFLCAweDg5OEIsIDB4MDc1RiwNCisgICAgMHg4OThGLCAweDA2NDYsIDB4ODk5MywgMHgxOUVGLCAweDg5OTYsIDB4MDhCOSwgMHg4OTk3LCAweDBDRjcsDQorICAgIDB4ODk5OCwgMHgxOUYwLCAweDg5OUEsIDB4MDVBRSwgMHg4OUExLCAweDE5RjEsIDB4ODlBNiwgMHgxOUYzLA0KKyAgICAweDg5QTcsIDB4MEY2MSwgMHg4OUE5LCAweDE5RjIsIDB4ODlBQSwgMHgwQTBDLCAweDg5QUMsIDB4MTlGNCwNCisgICAgMHg4OUFGLCAweDE5RjUsIDB4ODlCMiwgMHgxOUY2LCAweDg5QjMsIDB4MDYwRCwgMHg4OUJBLCAweDE5RjcsDQorICAgIDB4ODlCRCwgMHgxOUY4LCAweDg5QkYsIDB4MTlGOSwgMHg4OUMwLCAweDE5RkEsIDB4ODlEMiwgMHgwNUFGLA0KKyAgICAweDg5RDQsIDB4M0IxQywgMHg4OUQ2LCAweDNCMUQsIDB4ODlEQSwgMHgxOUZCLCAweDg5REMsIDB4MTlGQywNCisgICAgMHg4OURELCAweDE5RkQsIDB4ODlFMywgMHgwNTcyLCAweDg5RTUsIDB4M0IxRSwgMHg4OUU2LCAweDA5RUUsDQorICAgIDB4ODlFNywgMHgxOUZFLCAweDg5RjEsIDB4M0IxRiwgMHg4OUY0LCAweDE5RkYsIDB4ODlGOCwgMHgxQTAwLA0KKyAgICAweDhBMDAsIDB4MDc3NCwgMHg4QTAxLCAweDM1QkMsIDB4OEEwMiwgMHgwQzE3LCAweDhBMDMsIDB4MUEwMSwNCisgICAgMHg4QTA3LCAweDNCMjAsIDB4OEEwOCwgMHgwNzJELCAweDhBMEEsIDB4MEExQywgMHg4QTBDLCAweDFBMDQsDQorICAgIDB4OEEwRSwgMHgwQzdDLCAweDhBMEYsIDB4M0IyMSwgMHg4QTEwLCAweDFBMDMsIDB4OEExMiwgMHgyMUE4LA0KKyAgICAweDhBMTMsIDB4MDcwNywgMHg4QTE1LCAweDNCMjIsIDB4OEExNiwgMHgxQTAyLCAweDhBMTcsIDB4MEI1NywNCisgICAgMHg4QTE4LCAweDA2NDcsIDB4OEExQiwgMHgxQTA1LCAweDhBMUQsIDB4MUEwNiwgMHg4QTFGLCAweDA5QzEsDQorICAgIDB4OEEyMiwgMHgzQjIzLCAweDhBMjMsIDB4MDc0MywgMHg4QTI1LCAweDFBMDcsIDB4OEEyQSwgMHgwRTVBLA0KKyAgICAweDhBMkQsIDB4MEE4MywgMHg4QTMxLCAweDA2OTAsIDB4OEEzMywgMHgwRjAxLCAweDhBMzQsIDB4MEFDQywNCisgICAgMHg4QTM2LCAweDFBMDgsIDB4OEEzNywgMHgyMUE5LCAweDhBM0EsIDB4MEEwRCwgMHg4QTNCLCAweDBCQUUsDQorICAgIDB4OEEzQywgMHgwOUMyLCAweDhBNDEsIDB4MUEwOSwgMHg4QTQ2LCAweDFBMEMsIDB4OEE0OCwgMHgxQTBELA0KKyAgICAweDhBNEUsIDB4M0IyNCwgMHg4QTUwLCAweDA4MkUsIDB4OEE1MSwgMHgwQjIyLCAweDhBNTIsIDB4MUEwQiwNCisgICAgMHg4QTU0LCAweDA5QzMsIDB4OEE1NSwgMHgwREIwLCAweDhBNUIsIDB4MUEwQSwgMHg4QTVFLCAweDA4QkEsDQorICAgIDB4OEE2MCwgMHgwNEY1LCAweDhBNjIsIDB4MUExMSwgMHg4QTYzLCAweDA3MkUsIDB4OEE2NiwgMHgwOEJDLA0KKyAgICAweDhBNjksIDB4MDhCQiwgMHg4QTZCLCAweDBGRjMsIDB4OEE2QywgMHgxQTEwLCAweDhBNkQsIDB4MUEwRiwNCisgICAgMHg4QTZFLCAweDBBQTksIDB4OEE3MCwgMHgwNjY3LCAweDhBNzEsIDB4MEZFOSwgMHg4QTcyLCAweDA1OTgsDQorICAgIDB4OEE3MywgMHgwOUM0LCAweDhBNzksIDB4MjFBQSwgMHg4QTdDLCAweDFBMEUsIDB4OEE3RiwgMHgzQjI1LA0KKyAgICAweDhBODIsIDB4MUExMywgMHg4QTg0LCAweDFBMTQsIDB4OEE4NSwgMHgxQTEyLCAweDhBODcsIDB4MDc4QywNCisgICAgMHg4QTg5LCAweDBGMkEsIDB4OEE4QywgMHgwOEJELCAweDhBOEQsIDB4MENERCwgMHg4QTkxLCAweDFBMTcsDQorICAgIDB4OEE5MywgMHgwQTY0LCAweDhBOTUsIDB4MEI4MCwgMHg4QTk4LCAweDBGMjAsIDB4OEE5QSwgMHgxQTFBLA0KKyAgICAweDhBOUUsIDB4MDdBMCwgMHg4QUEwLCAweDBBNjMsIDB4OEFBMSwgMHgxQTE2LCAweDhBQTMsIDB4MUExQiwNCisgICAgMHg4QUE0LCAweDA3QTEsIDB4OEFBNSwgMHgxQTE4LCAweDhBQTYsIDB4MUExOSwgMHg4QUE3LCAweDIxQUIsDQorICAgIDB4OEFBOCwgMHgxQTE1LCAweDhBQUEsIDB4MzYzOCwgMHg4QUFDLCAweDBBODYsIDB4OEFBRCwgMHgwQ0ExLA0KKyAgICAweDhBQjAsIDB4MEI2RCwgMHg4QUIyLCAweDA1NUQsIDB4OEFCOSwgMHgwRDg0LCAweDhBQkMsIDB4MDY1RCwNCisgICAgMHg4QUJFLCAweDIxQUMsIDB4OEFCRiwgMHgwQkQwLCAweDhBQzIsIDB4MUExRSwgMHg4QUM0LCAweDFBMUMsDQorICAgIDB4OEFDNywgMHgwQjhBLCAweDhBQ0IsIDB4MEE2NSwgMHg4QUNDLCAweDA2MEUsIDB4OEFDRCwgMHgxQTFELA0KKyAgICAweDhBQ0YsIDB4MEEyMSwgMHg4QUQyLCAweDBGOTIsIDB4OEFENiwgMHgwRkU2LCAweDhBREEsIDB4MUExRiwNCisgICAgMHg4QURCLCAweDFBMkEsIDB4OEFEQywgMHgwQkQxLCAweDhBREUsIDB4MUEyOSwgMHg4QURGLCAweDIxQUQsDQorICAgIDB4OEFFMCwgMHgxQTI2LCAweDhBRTEsIDB4MUEyRSwgMHg4QUUyLCAweDFBMjcsIDB4OEFFNCwgMHgxQTIzLA0KKyAgICAweDhBRTYsIDB4MEMxOCwgMHg4QUU3LCAweDFBMjIsIDB4OEFFQiwgMHgxQTIwLCAweDhBRUQsIDB4MEYwQiwNCisgICAgMHg4QUVFLCAweDA4QkUsIDB4OEFGMSwgMHgxQTI0LCAweDhBRjMsIDB4MUEyMSwgMHg4QUY0LCAweDNCMjYsDQorICAgIDB4OEFGNiwgMHgyMUFGLCAweDhBRjcsIDB4MUEyOCwgMHg4QUY4LCAweDA5N0UsIDB4OEFGQSwgMHgwNzc1LA0KKyAgICAweDhBRkUsIDB4MEI1QSwgMHg4QjAwLCAweDBFNzMsIDB4OEIwMSwgMHgwNEZDLCAweDhCMDIsIDB4MDRBNiwNCisgICAgMHg4QjA0LCAweDBDN0QsIDB4OEIwNywgMHgxQTJDLCAweDhCMEMsIDB4MUEyQiwgMHg4QjBFLCAweDBDQkUsDQorICAgIDB4OEIxMCwgMHgxQTMwLCAweDhCMTQsIDB4MUEyNSwgMHg4QjE2LCAweDFBMkYsIDB4OEIxNywgMHgxQTMxLA0KKyAgICAweDhCMTksIDB4MDc2MCwgMHg4QjFBLCAweDFBMkQsIDB4OEIxQiwgMHgwN0U4LCAweDhCMUQsIDB4MDkwMSwNCisgICAgMHg4QjFGLCAweDNCMjcsIDB4OEIyMCwgMHgxQTMyLCAweDhCMjEsIDB4MEY0MiwgMHg4QjI2LCAweDFBMzUsDQorICAgIDB4OEIyOCwgMHgxQTM4LCAweDhCMkIsIDB4MUEzNiwgMHg4QjJDLCAweDBEQTcsIDB4OEIzMywgMHgxQTMzLA0KKyAgICAweDhCMzcsIDB4M0IyOCwgMHg4QjM5LCAweDA2RDgsIDB4OEIzRSwgMHgxQTM3LCAweDhCNDEsIDB4MUEzOSwNCisgICAgMHg4QjQzLCAweDNCMjksIDB4OEI0NCwgMHgzQjJBLCAweDhCNDksIDB4MUEzRCwgMHg4QjRDLCAweDFBM0EsDQorICAgIDB4OEI0RSwgMHgxQTNDLCAweDhCNEYsIDB4MUEzQiwgMHg4QjUzLCAweDIxQjAsIDB4OEI1NCwgMHgzQjJCLA0KKyAgICAweDhCNTYsIDB4MUEzRSwgMHg4QjU4LCAweDA4REQsIDB4OEI1QSwgMHgxQTQwLCAweDhCNUIsIDB4MUEzRiwNCisgICAgMHg4QjVDLCAweDBEREEsIDB4OEI1RiwgMHgxQTQyLCAweDhCNjYsIDB4MDcyRiwgMHg4QjZCLCAweDFBNDEsDQorICAgIDB4OEI2QywgMHgxQTQzLCAweDhCNkYsIDB4MUE0NCwgMHg4QjcwLCAweDA2NUUsIDB4OEI3MSwgMHgxODJFLA0KKyAgICAweDhCNzIsIDB4MDlFMSwgMHg4Qjc0LCAweDFBNDUsIDB4OEI3NywgMHgwN0EyLCAweDhCN0QsIDB4MUE0NiwNCisgICAgMHg4QjdGLCAweDIxQjEsIDB4OEI4MCwgMHgxQTQ3LCAweDhCODMsIDB4MDg4QywgMHg4QjhBLCAweDEzRDMsDQorICAgIDB4OEI4QywgMHgxQTQ4LCAweDhCOEUsIDB4MUE0OSwgMHg4QjkwLCAweDA5M0MsIDB4OEI5MiwgMHgxQTRBLA0KKyAgICAweDhCOTMsIDB4MUE0QiwgMHg4Qjk2LCAweDFBNEMsIDB4OEI5OSwgMHgxQTRELCAweDhCOUEsIDB4MUE0RSwNCisgICAgMHg4QjlDLCAweDNCMkMsIDB4OEI5RSwgMHgzQjJELCAweDhDMzcsIDB4MEI2OSwgMHg4QzNBLCAweDFBNEYsDQorICAgIDB4OEMzRiwgMHgxQTUxLCAweDhDNDEsIDB4MUE1MCwgMHg4QzQ2LCAweDBDN0UsIDB4OEM0NywgMHgzQjJFLA0KKyAgICAweDhDNDgsIDB4MUE1MiwgMHg4QzRBLCAweDBFNUIsIDB4OEM0QywgMHgxQTUzLCAweDhDNEUsIDB4MUE1NCwNCisgICAgMHg4QzUwLCAweDFBNTUsIDB4OEM1NCwgMHgzQjJGLCAweDhDNTUsIDB4MUE1NiwgMHg4QzVBLCAweDBDQjIsDQorICAgIDB4OEM2MSwgMHgwOUM1LCAweDhDNjIsIDB4MUE1NywgMHg4QzZBLCAweDA3RkQsIDB4OEM2QiwgMHgxMDA3LA0KKyAgICAweDhDNkMsIDB4MUE1OCwgMHg4QzczLCAweDNCMzAsIDB4OEM3OCwgMHgxQTU5LCAweDhDNzksIDB4MERCMSwNCisgICAgMHg4QzdBLCAweDFBNUEsIDB4OEM3QywgMHgxQTYyLCAweDhDODIsIDB4MUE1QiwgMHg4Qzg1LCAweDFBNUQsDQorICAgIDB4OEM4OSwgMHgxQTVDLCAweDhDOEEsIDB4MUE1RSwgMHg4QzhDLCAweDBFNzQsIDB4OEM4RCwgMHgxQTVGLA0KKyAgICAweDhDOEUsIDB4MUE2MCwgMHg4Qzk0LCAweDFBNjEsIDB4OEM5OCwgMHgxQTYzLCAweDhDOUQsIDB4MDU4QiwNCisgICAgMHg4QzlFLCAweDBDMDMsIDB4OENBMCwgMHgwRERCLCAweDhDQTEsIDB4MDg1MiwgMHg4Q0EyLCAweDA3RTksDQorICAgIDB4OENBNCwgMHgzQjMxLCAweDhDQTcsIDB4MERDMSwgMHg4Q0E4LCAweDA1NUYsIDB4OENBOSwgMHgwRDYyLA0KKyAgICAweDhDQUEsIDB4MUE2NiwgMHg4Q0FCLCAweDA2MEYsIDB4OENBQywgMHgwQTc5LCAweDhDQUQsIDB4MUE2NSwNCisgICAgMHg4Q0FFLCAweDFBNkEsIDB4OENBRiwgMHgwQkI3LCAweDhDQjAsIDB4MEVFRiwgMHg4Q0IyLCAweDFBNjgsDQorICAgIDB4OENCMywgMHgxQTY5LCAweDhDQjQsIDB4MDY0OCwgMHg4Q0I2LCAweDFBNkIsIDB4OENCNywgMHgwRDE5LA0KKyAgICAweDhDQjgsIDB4MEIzRiwgMHg4Q0JCLCAweDBEODUsIDB4OENCQywgMHgwQzM3LCAweDhDQkQsIDB4MUE2NywNCisgICAgMHg4Q0JGLCAweDBFNzUsIDB4OENDMCwgMHgwNTZDLCAweDhDQzEsIDB4MUE2RCwgMHg4Q0MyLCAweDBGQ0UsDQorICAgIDB4OENDMywgMHgwQkRFLCAweDhDQzQsIDB4MEZFQiwgMHg4Q0M3LCAweDA4QkYsIDB4OENDOCwgMHgxQTZDLA0KKyAgICAweDhDQ0EsIDB4MEIxMSwgMHg4Q0NELCAweDFBN0QsIDB4OENDRSwgMHgwQUFBLCAweDhDRDEsIDB4MENEMCwNCisgICAgMHg4Q0QzLCAweDBEQzIsIDB4OENEOSwgMHgzQjMyLCAweDhDREEsIDB4MUE3MCwgMHg4Q0RCLCAweDA4OEQsDQorICAgIDB4OENEQywgMHgwOEMwLCAweDhDREUsIDB4MDlDNiwgMHg4Q0UwLCAweDBEMUIsIDB4OENFMSwgMHgzQjMzLA0KKyAgICAweDhDRTIsIDB4MDc2MSwgMHg4Q0UzLCAweDFBNkYsIDB4OENFNCwgMHgxQTZFLCAweDhDRTYsIDB4MEREQywNCisgICAgMHg4Q0VBLCAweDA4RUQsIDB4OENFRCwgMHgwQzRDLCAweDhDRjAsIDB4MjFCMiwgMHg4Q0Y0LCAweDIxQjMsDQorICAgIDB4OENGOCwgMHgzQjM0LCAweDhDRkEsIDB4MUE3MiwgMHg4Q0ZCLCAweDFBNzMsIDB4OENGQywgMHgwN0VBLA0KKyAgICAweDhDRkQsIDB4MUE3MSwgMHg4Q0ZFLCAweDNCMzUsIDB4OEQwNCwgMHgxQTc0LCAweDhEMDUsIDB4MUE3NSwNCisgICAgMHg4RDA3LCAweDFBNzcsIDB4OEQwOCwgMHgwQjAzLCAweDhEMEEsIDB4MUE3NiwgMHg4RDBCLCAweDA2MjIsDQorICAgIDB4OEQwRCwgMHgxQTc5LCAweDhEMEYsIDB4MUE3OCwgMHg4RDEwLCAweDFBN0EsIDB4OEQxMiwgMHgyMUI0LA0KKyAgICAweDhEMTMsIDB4MUE3QywgMHg4RDE0LCAweDFBN0UsIDB4OEQxNiwgMHgxQTdGLCAweDhEMUIsIDB4M0IzNiwNCisgICAgMHg4RDY0LCAweDBBN0EsIDB4OEQ2NiwgMHgwOEZCLCAweDhENjcsIDB4MUE4MCwgMHg4RDY5LCAweDNCMzcsDQorICAgIDB4OEQ2QiwgMHgwNUIwLCAweDhENkMsIDB4M0IzOCwgMHg4RDZELCAweDFBODEsIDB4OEQ3MCwgMHgwQUY4LA0KKyAgICAweDhENzEsIDB4MUE4MiwgMHg4RDczLCAweDFBODMsIDB4OEQ3NCwgMHgwRERELCAweDhENzYsIDB4MjFCNSwNCisgICAgMHg4RDc3LCAweDA2NDksIDB4OEQ4MSwgMHgxQTg0LCAweDhEODQsIDB4M0IzOSwgMHg4RDg1LCAweDBCRDIsDQorICAgIDB4OEQ4QSwgMHgwNEZELCAweDhEOEQsIDB4M0IzQSwgMHg4RDk1LCAweDNCM0IsIDB4OEQ5OSwgMHgxQTg1LA0KKyAgICAweDhEQTMsIDB4MDkxRCwgMHg4REE2LCAweDNCM0MsIDB4OERBOCwgMHgwQTNDLCAweDhEQjMsIDB4MEIwRCwNCisgICAgMHg4REJBLCAweDFBODgsIDB4OERCRSwgMHgxQTg3LCAweDhEQzIsIDB4MUE4NiwgMHg4REM2LCAweDNCM0QsDQorICAgIDB4OERDQiwgMHgxQThFLCAweDhEQ0MsIDB4MUE4QywgMHg4RENFLCAweDNCM0UsIDB4OERDRiwgMHgxQTg5LA0KKyAgICAweDhERDYsIDB4MUE4QiwgMHg4RERBLCAweDFBOEEsIDB4OEREQiwgMHgxQThELCAweDhEREQsIDB4MDY5MSwNCisgICAgMHg4RERGLCAweDFBOTEsIDB4OERFMSwgMHgwQTdCLCAweDhERTMsIDB4MUE5MiwgMHg4REU0LCAweDNCM0YsDQorICAgIDB4OERFOCwgMHgwNzhELCAweDhERUEsIDB4MUE4RiwgMHg4REVCLCAweDFBOTAsIDB4OERFQywgMHgzQjQwLA0KKyAgICAweDhERUYsIDB4MEZDRiwgMHg4REYzLCAweDBCRDMsIDB4OERGNSwgMHgwQUFCLCAweDhERkMsIDB4MUE5MywNCisgICAgMHg4REZGLCAweDFBOTYsIDB4OEUwOCwgMHgxQTk0LCAweDhFMDksIDB4MUE5NSwgMHg4RTBBLCAweDBGNDMsDQorICAgIDB4OEUwRiwgMHgwQzdGLCAweDhFMTAsIDB4MUE5OSwgMHg4RTFELCAweDFBOTcsIDB4OEUxRSwgMHgxQTk4LA0KKyAgICAweDhFMUYsIDB4MUE5QSwgMHg4RTIwLCAweDNCNDEsIDB4OEUyQSwgMHgxQUE4LCAweDhFMzAsIDB4MUE5RCwNCisgICAgMHg4RTM0LCAweDFBOUUsIDB4OEUzNSwgMHgxQTlDLCAweDhFNDIsIDB4MUE5QiwgMHg4RTQ0LCAweDBDMTksDQorICAgIDB4OEU0NywgMHgxQUEwLCAweDhFNDgsIDB4MUFBNCwgMHg4RTQ5LCAweDFBQTEsIDB4OEU0QSwgMHgxQTlGLA0KKyAgICAweDhFNEIsIDB4M0I0MiwgMHg4RTRDLCAweDFBQTIsIDB4OEU1MCwgMHgxQUEzLCAweDhFNTUsIDB4MUFBQSwNCisgICAgMHg4RTU5LCAweDFBQTUsIDB4OEU1RiwgMHgwQTdDLCAweDhFNjAsIDB4MUFBNywgMHg4RTYzLCAweDFBQTksDQorICAgIDB4OEU2NCwgMHgxQUE2LCAweDhFNkMsIDB4M0I0MywgMHg4RTcwLCAweDNCNDQsIDB4OEU3MiwgMHgxQUFDLA0KKyAgICAweDhFNzQsIDB4MDkzRCwgMHg4RTc2LCAweDFBQUIsIDB4OEU3QSwgMHgzQjQ1LCAweDhFN0MsIDB4MUFBRCwNCisgICAgMHg4RTgxLCAweDFBQUUsIDB4OEU4NCwgMHgxQUIxLCAweDhFODUsIDB4MUFCMCwgMHg4RTg3LCAweDFBQUYsDQorICAgIDB4OEU4QSwgMHgxQUIzLCAweDhFOEIsIDB4MUFCMiwgMHg4RThELCAweDBGMDIsIDB4OEU5MSwgMHgxQUI1LA0KKyAgICAweDhFOTIsIDB4M0I0NiwgMHg4RTkzLCAweDFBQjQsIDB4OEU5NCwgMHgxQUI2LCAweDhFOTksIDB4MUFCNywNCisgICAgMHg4RUExLCAweDFBQjksIDB4OEVBQSwgMHgxQUI4LCAweDhFQUIsIDB4MEEwRSwgMHg4RUFDLCAweDFBQkEsDQorICAgIDB4OEVBRSwgMHgzQjQ3LCAweDhFQUYsIDB4MDZFNSwgMHg4RUIwLCAweDFBQkIsIDB4OEVCMSwgMHgxQUJELA0KKyAgICAweDhFQjMsIDB4M0I0OCwgMHg4RUI2LCAweDM3MDMsIDB4OEVCRSwgMHgxQUJFLCAweDhFQzAsIDB4MURFRiwNCisgICAgMHg4RUM1LCAweDFBQkYsIDB4OEVDNiwgMHgxQUJDLCAweDhFQzgsIDB4MUFDMCwgMHg4RUNBLCAweDA5MDIsDQorICAgIDB4OEVDQiwgMHgxQUMxLCAweDhFQ0MsIDB4MDY0QSwgMHg4RUNELCAweDA3MDksIDB4OEVDRiwgMHgyMUI3LA0KKyAgICAweDhFRDEsIDB4M0I0OSwgMHg4RUQyLCAweDA3NjIsIDB4OEVENCwgMHgzQjRBLCAweDhFREIsIDB4MUFDMiwNCisgICAgMHg4RURGLCAweDBDQzgsIDB4OEVFMiwgMHgwQzM4LCAweDhFRTMsIDB4MUFDMywgMHg4RUVCLCAweDFBQzYsDQorICAgIDB4OEVGOCwgMHgwOEUwLCAweDhFRjksIDB4M0I0QiwgMHg4RUZCLCAweDFBQzUsIDB4OEVGQywgMHgxQUM0LA0KKyAgICAweDhFRkQsIDB4MDczMCwgMHg4RUZFLCAweDFBQzcsIDB4OEYwMywgMHgwNUIxLCAweDhGMDUsIDB4MUFDOSwNCisgICAgMHg4RjA5LCAweDA4NEMsIDB4OEYwQSwgMHgxQUM4LCAweDhGMEMsIDB4MUFEMSwgMHg4RjEyLCAweDFBQ0IsDQorICAgIDB4OEYxMywgMHgxQUNELCAweDhGMTQsIDB4MEUzNSwgMHg4RjE1LCAweDFBQ0EsIDB4OEYxNywgMHgzQjRDLA0KKyAgICAweDhGMTksIDB4MUFDQywgMHg4RjFCLCAweDFBRDAsIDB4OEYxQywgMHgxQUNFLCAweDhGMUQsIDB4MDY0QiwNCisgICAgMHg4RjFGLCAweDFBQ0YsIDB4OEYyNiwgMHgxQUQyLCAweDhGMjksIDB4MEQxMCwgMHg4RjJBLCAweDBGQTAsDQorICAgIDB4OEYyRiwgMHgwOTNFLCAweDhGMzMsIDB4MUFEMywgMHg4RjM2LCAweDNCNEQsIDB4OEYzOCwgMHgwRjBDLA0KKyAgICAweDhGMzksIDB4MUFENSwgMHg4RjNCLCAweDFBRDQsIDB4OEYzRSwgMHgxQUQ4LCAweDhGM0YsIDB4MEYyQiwNCisgICAgMHg4RjQyLCAweDFBRDcsIDB4OEY0NCwgMHgwNUNCLCAweDhGNDUsIDB4MUFENiwgMHg4RjQ2LCAweDFBREIsDQorICAgIDB4OEY0OSwgMHgxQURBLCAweDhGNEMsIDB4MUFEOSwgMHg4RjRELCAweDBDMkMsIDB4OEY0RSwgMHgxQURDLA0KKyAgICAweDhGNTcsIDB4MUFERCwgMHg4RjVDLCAweDFBREUsIDB4OEY1RiwgMHgwN0ZFLCAweDhGNjEsIDB4MDZGQiwNCisgICAgMHg4RjYyLCAweDFBREYsIDB4OEY2MywgMHgxQUUwLCAweDhGNjQsIDB4MUFFMSwgMHg4RjlCLCAweDBBMEYsDQorICAgIDB4OEY5QywgMHgxQUUyLCAweDhGOUUsIDB4MDhEOSwgMHg4RjlGLCAweDFBRTMsIDB4OEZBMywgMHgxQUU0LA0KKyAgICAweDhGQTYsIDB4M0I0RSwgMHg4RkE3LCAweDEwQjYsIDB4OEZBOCwgMHgxMEI1LCAweDhGQUQsIDB4MUFFNSwNCisgICAgMHg4RkFFLCAweDE3RkYsIDB4OEZBRiwgMHgxQUU2LCAweDhGQjAsIDB4MEI2MiwgMHg4RkIxLCAweDA5RjEsDQorICAgIDB4OEZCMiwgMHgwQ0Y2LCAweDhGQjUsIDB4M0I0RiwgMHg4RkI2LCAweDNCNTAsIDB4OEZCNywgMHgxQUU3LA0KKyAgICAweDhGQkEsIDB4MEUyNSwgMHg4RkJCLCAweDBCRjAsIDB4OEZCQywgMHgwODEwLCAweDhGQkYsIDB4MEI2NywNCisgICAgMHg4RkMyLCAweDA0Q0MsIDB4OEZDNCwgMHgwRUE2LCAweDhGQzUsIDB4MEExRCwgMHg4RkM2LCAweDNCNTEsDQorICAgIDB4OEZDOCwgMHgzNzk5LCAweDhGQ0UsIDB4MDczNCwgMHg4RkQxLCAweDA2RDksIDB4OEZENCwgMHgwRTI2LA0KKyAgICAweDhGREEsIDB4MUFFOCwgMHg4RkUwLCAweDNCNTIsIDB4OEZFMiwgMHgxQUVBLCAweDhGRTQsIDB4M0I1MywNCisgICAgMHg4RkU1LCAweDFBRTksIDB4OEZFNiwgMHgwNTYwLCAweDhGRTksIDB4MENDRSwgMHg4RkVBLCAweDFBRUIsDQorICAgIDB4OEZFQiwgMHgwRDJELCAweDhGRUQsIDB4MEMyRCwgMHg4RkVGLCAweDFBRUMsIDB4OEZGMCwgMHgwOTVDLA0KKyAgICAweDhGRjQsIDB4MUFFRSwgMHg4RkY2LCAweDNCNTQsIDB4OEZGNywgMHgwRUNFLCAweDhGRjgsIDB4MUFGRCwNCisgICAgMHg4RkY5LCAweDFBRjAsIDB4OEZGQSwgMHgxQUYxLCAweDhGRkQsIDB4MEJFNSwgMHg5MDAwLCAweDBCNDAsDQorICAgIDB4OTAwMSwgMHgwQUY5LCAweDkwMDIsIDB4M0I1NSwgMHg5MDAzLCAweDBDODAsIDB4OTAwNSwgMHgxQUVGLA0KKyAgICAweDkwMDYsIDB4MDY2RiwgMHg5MDBCLCAweDFBRjgsIDB4OTAwRCwgMHgxQUY1LCAweDkwMEUsIDB4MUIwMiwNCisgICAgMHg5MDBGLCAweDBDODEsIDB4OTAxMCwgMHgwQjlFLCAweDkwMTEsIDB4MUFGMiwgMHg5MDEzLCAweDBDMUEsDQorICAgIDB4OTAxNCwgMHgwQzRELCAweDkwMTUsIDB4MUFGMywgMHg5MDE2LCAweDFBRjcsIDB4OTAxNywgMHgwQTI2LA0KKyAgICAweDkwMTksIDB4MEQxRCwgMHg5MDFBLCAweDBCRTgsIDB4OTAxRCwgMHgwQTY2LCAweDkwMUUsIDB4MUFGNiwNCisgICAgMHg5MDFGLCAweDBCMEUsIDB4OTAyMCwgMHgwQjA0LCAweDkwMjEsIDB4MUFGNCwgMHg5MDIyLCAweDA0NkQsDQorICAgIDB4OTAyMywgMHgwRkM4LCAweDkwMjcsIDB4MUFGOSwgMHg5MDJDLCAweDNCNTYsIDB4OTAyRSwgMHgwQjQxLA0KKyAgICAweDkwMzEsIDB4MDkzRiwgMHg5MDMyLCAweDBBMTAsIDB4OTAzNSwgMHgxQUZCLCAweDkwMzYsIDB4MUFGQSwNCisgICAgMHg5MDM4LCAweDA0QjMsIDB4OTAzOSwgMHgxQUZDLCAweDkwM0MsIDB4MERBMSwgMHg5MDNFLCAweDFCMDQsDQorICAgIDB4OTA0MSwgMHgwQ0IzLCAweDkwNDIsIDB4MEEzMSwgMHg5MDQ0LCAweDNCNTcsIDB4OTA0NSwgMHgwQjk3LA0KKyAgICAweDkwNDcsIDB4MDZGMCwgMHg5MDQ5LCAweDFCMDMsIDB4OTA0QSwgMHgwRjIxLCAweDkwNEIsIDB4MDRFMSwNCisgICAgMHg5MDRELCAweDBFMjcsIDB4OTA0RSwgMHgwNTYxLCAweDkwNEYsIDB4MUFGRSwgMHg5MDUwLCAweDFBRkYsDQorICAgIDB4OTA1MSwgMHgxQjAwLCAweDkwNTIsIDB4MUIwMSwgMHg5MDUzLCAweDBDOTMsIDB4OTA1NCwgMHgwQjYxLA0KKyAgICAweDkwNTUsIDB4MDRBNywgMHg5MDU2LCAweDFCMDUsIDB4OTA1OCwgMHgxQjA2LCAweDkwNTksIDB4MUQzNCwNCisgICAgMHg5MDVDLCAweDBCMUQsIDB4OTA1RSwgMHgxQjA3LCAweDkwNjAsIDB4MDUxNSwgMHg5MDYxLCAweDBBQ0UsDQorICAgIDB4OTA2MywgMHgwNzYzLCAweDkwNjUsIDB4MEY0NCwgMHg5MDY3LCAweDIxQkEsIDB4OTA2OCwgMHgxQjA4LA0KKyAgICAweDkwNjksIDB4MEMyNiwgMHg5MDZELCAweDBBRkEsIDB4OTA2RSwgMHgwOTAzLCAweDkwNkYsIDB4MUIwOSwNCisgICAgMHg5MDcyLCAweDFCMEMsIDB4OTA3NSwgMHgwOTZGLCAweDkwNzYsIDB4MUIwQSwgMHg5MDc3LCAweDBBQUQsDQorICAgIDB4OTA3OCwgMHgwQUFDLCAweDkwN0EsIDB4MDRBOCwgMHg5MDdDLCAweDBGOTMsIDB4OTA3RCwgMHgxQjBFLA0KKyAgICAweDkwN0YsIDB4MEQ4NiwgMHg5MDgwLCAweDFCMTAsIDB4OTA4MSwgMHgxQjBGLCAweDkwODIsIDB4MUIwRCwNCisgICAgMHg5MDgzLCAweDE3MzcsIDB4OTA4NCwgMHgwNjEwLCAweDkwODcsIDB4MUFFRCwgMHg5MDg4LCAweDNCNTgsDQorICAgIDB4OTA4OSwgMHgxQjEyLCAweDkwOEEsIDB4MUIxMSwgMHg5MDhGLCAweDFCMTMsIDB4OTA5MSwgMHgwRjIyLA0KKyAgICAweDkwOTUsIDB4M0I1OSwgMHg5MDk5LCAweDNCNUEsIDB4OTA5QiwgMHgzQjVCLCAweDkwQTIsIDB4M0I1QywNCisgICAgMHg5MEEzLCAweDBDQjksIDB4OTBBNiwgMHgwRTVDLCAweDkwQTgsIDB4MUIxNCwgMHg5MEFBLCAweDA5MDUsDQorICAgIDB4OTBBRiwgMHgxQjE1LCAweDkwQjEsIDB4MUIxNiwgMHg5MEI0LCAweDNCNUQsIDB4OTBCNSwgMHgxQjE3LA0KKyAgICAweDkwQjgsIDB4MEMxQiwgMHg5MEMxLCAweDA0QUUsIDB4OTBDQSwgMHgwN0VCLCAweDkwQ0UsIDB4MEZFMCwNCisgICAgMHg5MEQ3LCAweDNCNUUsIDB4OTBEQiwgMHgxQjFCLCAweDkwREQsIDB4M0I1RiwgMHg5MERFLCAweDIxQkIsDQorICAgIDB4OTBFMSwgMHgwNzBBLCAweDkwRTIsIDB4MUIxOCwgMHg5MEU0LCAweDFCMTksIDB4OTBFOCwgMHgwREU2LA0KKyAgICAweDkwRUQsIDB4MDVCMiwgMHg5MEY0LCAweDNCNjAsIDB4OTBGNSwgMHgwRjIzLCAweDkwRjcsIDB4MDZCNywNCisgICAgMHg5MEZELCAweDBDNEUsIDB4OTEwMiwgMHgxQjFDLCAweDkxMTIsIDB4MUIxRCwgMHg5MTE1LCAweDIxQkQsDQorICAgIDB4OTExNywgMHgzQjYxLCAweDkxMTksIDB4MUIxRSwgMHg5MTFDLCAweDNCNjIsIDB4OTEyNywgMHgyMUJFLA0KKyAgICAweDkxMkQsIDB4MEMxQywgMHg5MTMwLCAweDFCMjAsIDB4OTEzMSwgMHgzQjYzLCAweDkxMzIsIDB4MUIxRiwNCisgICAgMHg5MTNBLCAweDNCNjQsIDB4OTEzRCwgMHgzQjY1LCAweDkxNDgsIDB4M0I2NiwgMHg5MTQ5LCAweDBDQUIsDQorICAgIDB4OTE0QSwgMHgxQjIxLCAweDkxNEIsIDB4MDk0MCwgMHg5MTRDLCAweDA5MEMsIDB4OTE0RCwgMHgwRDExLA0KKyAgICAweDkxNEUsIDB4MEJBRiwgMHg5MTUyLCAweDA5MUUsIDB4OTE1NCwgMHgwQTMyLCAweDkxNTYsIDB4MUIyMiwNCisgICAgMHg5MTU4LCAweDFCMjMsIDB4OTE1QiwgMHgzQjY3LCAweDkxNjEsIDB4M0I2OCwgMHg5MTYyLCAweDBBMjMsDQorICAgIDB4OTE2MywgMHgxQjI0LCAweDkxNjQsIDB4M0I2OSwgMHg5MTY1LCAweDFCMjUsIDB4OTE2OSwgMHgxQjI2LA0KKyAgICAweDkxNkEsIDB4MEY1OSwgMHg5MTZDLCAweDA5NDEsIDB4OTE3MiwgMHgxQjI4LCAweDkxNzMsIDB4MUIyNywNCisgICAgMHg5MTc1LCAweDA3RUMsIDB4OTE3NywgMHgwODA1LCAweDkxNzgsIDB4MDg4RSwgMHg5MTgyLCAweDFCMkIsDQorICAgIDB4OTE4NywgMHgwOTcwLCAweDkxODksIDB4MUIyQSwgMHg5MThCLCAweDFCMjksIDB4OTE4RCwgMHgwQjQ5LA0KKyAgICAweDkxOEUsIDB4M0I2QSwgMHg5MTkwLCAweDA3QTMsIDB4OTE5MiwgMHgwQTY3LCAweDkxOTcsIDB4MEQ0NCwNCisgICAgMHg5MTlDLCAweDA5NDMsIDB4OTE5RSwgMHgzQjZCLCAweDkxQTIsIDB4MUIyQywgMHg5MUE0LCAweDA5QzcsDQorICAgIDB4OTFBOCwgMHgzQjZDLCAweDkxQUEsIDB4MUIyRiwgMHg5MUFCLCAweDFCMkQsIDB4OTFBQywgMHgxRTFCLA0KKyAgICAweDkxQUQsIDB4M0I2RCwgMHg5MUFFLCAweDNCNkUsIDB4OTFBRiwgMHgxQjJFLCAweDkxQjEsIDB4MUU2MSwNCisgICAgMHg5MUIyLCAweDNCNkYsIDB4OTFCNCwgMHgxQjMxLCAweDkxQjUsIDB4MUIzMCwgMHg5MUI4LCAweDA5RTIsDQorICAgIDB4OTFCQSwgMHgxQjMyLCAweDkxQkMsIDB4M0I3MCwgMHg5MUMwLCAweDFCMzMsIDB4OTFDMSwgMHgxQjM0LA0KKyAgICAweDkxQzYsIDB4MEQ2NCwgMHg5MUM3LCAweDA4NDMsIDB4OTFDOCwgMHgwOTBELCAweDkxQzksIDB4MUIzNSwNCisgICAgMHg5MUNCLCAweDFCMzYsIDB4OTFDQywgMHgwRjZDLCAweDkxQ0QsIDB4MDk0RiwgMHg5MUNFLCAweDBFRkEsDQorICAgIDB4OTFDRiwgMHgwRjk0LCAweDkxRDAsIDB4MUIzNywgMHg5MUQxLCAweDA2REEsIDB4OTFENiwgMHgxQjM4LA0KKyAgICAweDkxRDcsIDB4MjFDMCwgMHg5MUQ4LCAweDBDMUQsIDB4OTFEQSwgMHgyMUJGLCAweDkxREIsIDB4MUIzQiwNCisgICAgMHg5MURDLCAweDA1RDYsIDB4OTFERCwgMHgwQTExLCAweDkxREUsIDB4MjFDMSwgMHg5MURGLCAweDFCMzksDQorICAgIDB4OTFFMSwgMHgxQjNBLCAweDkxRTMsIDB4MEJGQywgMHg5MUU0LCAweDIxQzQsIDB4OTFFNSwgMHgyMUM1LA0KKyAgICAweDkxRTYsIDB4MEU4MywgMHg5MUU3LCAweDA2RjQsIDB4OTFFRCwgMHgyMUMyLCAweDkxRUUsIDB4MjFDMywNCisgICAgMHg5MUYwLCAweDNCNzEsIDB4OTFGNSwgMHgxQjNELCAweDkxRjYsIDB4MUIzRSwgMHg5MUY3LCAweDNCNzIsDQorICAgIDB4OTFGQiwgMHgzQjczLCAweDkxRkMsIDB4MUIzQywgMHg5MUZGLCAweDFCNDAsIDB4OTIwNiwgMHgyMUM2LA0KKyAgICAweDkyMDcsIDB4M0I3NCwgMHg5MjBBLCAweDIxQzgsIDB4OTIwRCwgMHgwQ0I3LCAweDkyMEUsIDB4MDVBMSwNCisgICAgMHg5MjEwLCAweDIxQzcsIDB4OTIxMSwgMHgxQjQ0LCAweDkyMTQsIDB4MUI0MSwgMHg5MjE1LCAweDFCNDMsDQorICAgIDB4OTIxRSwgMHgxQjNGLCAweDkyMjgsIDB4M0I3NSwgMHg5MjI5LCAweDFCOEEsIDB4OTIyQywgMHgxQjQyLA0KKyAgICAweDkyMzMsIDB4M0I3NiwgMHg5MjM0LCAweDBGQjMsIDB4OTIzNywgMHgwNzhFLCAweDkyMzgsIDB4M0I3NywNCisgICAgMHg5MjM5LCAweDIxQ0YsIDB4OTIzQSwgMHgyMUM5LCAweDkyM0MsIDB4MjFDQiwgMHg5MjNGLCAweDFCNEMsDQorICAgIDB4OTI0MCwgMHgyMUNBLCAweDkyNDMsIDB4M0I3OCwgMHg5MjQ0LCAweDBDMkUsIDB4OTI0NSwgMHgxQjQ3LA0KKyAgICAweDkyNDcsIDB4M0I3OSwgMHg5MjQ4LCAweDFCNEEsIDB4OTI0OSwgMHgxQjQ4LCAweDkyNEIsIDB4MUI0RCwNCisgICAgMHg5MjRFLCAweDIxQ0MsIDB4OTI0RiwgMHgzQjdBLCAweDkyNTAsIDB4MUI0RSwgMHg5MjUxLCAweDIxQ0UsDQorICAgIDB4OTI1NywgMHgxQjQ2LCAweDkyNTksIDB4MjFDRCwgMHg5MjVBLCAweDFCNTMsIDB4OTI1QiwgMHgwNTE2LA0KKyAgICAweDkyNUUsIDB4MUI0NSwgMHg5MjYwLCAweDNCN0IsIDB4OTI2MiwgMHgwRDQxLCAweDkyNjQsIDB4MUI0OSwNCisgICAgMHg5MjY2LCAweDA5QzgsIDB4OTI2NywgMHgyMUQwLCAweDkyNzEsIDB4MDdFRCwgMHg5Mjc3LCAweDIxRDIsDQorICAgIDB4OTI3OCwgMHgyMUQzLCAweDkyN0UsIDB4MEU3NiwgMHg5MjgwLCAweDA2REMsIDB4OTI4MywgMHgwOTUwLA0KKyAgICAweDkyODUsIDB4MEM5NCwgMHg5Mjg4LCAweDIwQUEsIDB4OTI5MSwgMHgwQUFGLCAweDkyOTMsIDB4MUI1MSwNCisgICAgMHg5Mjk1LCAweDFCNEIsIDB4OTI5NiwgMHgxQjUwLCAweDkyOTgsIDB4MEVDRiwgMHg5MjlBLCAweDBCRDQsDQorICAgIDB4OTI5QiwgMHgxQjUyLCAweDkyOUMsIDB4MUI0RiwgMHg5MkE3LCAweDIxRDEsIDB4OTJBRCwgMHgwQUFFLA0KKyAgICAweDkyQjMsIDB4MzU1NCwgMHg5MkI3LCAweDFCNTYsIDB4OTJCOSwgMHgxQjU1LCAweDkyQzIsIDB4M0I3QywNCisgICAgMHg5MkNCLCAweDNCN0QsIDB4OTJDQywgMHgzQjdFLCAweDkyQ0YsIDB4MUI1NCwgMHg5MkQwLCAweDIxRDcsDQorICAgIDB4OTJEMiwgMHgwRTVELCAweDkyRDMsIDB4MjFEQiwgMHg5MkQ1LCAweDIxRDksIDB4OTJENywgMHgyMUQ1LA0KKyAgICAweDkyRDksIDB4MjFENiwgMHg5MkRGLCAweDNCN0YsIDB4OTJFMCwgMHgyMURBLCAweDkyRTQsIDB4MDk4NSwNCisgICAgMHg5MkU3LCAweDIxRDQsIDB4OTJFOSwgMHgxQjU3LCAweDkyRUEsIDB4MEUyRiwgMHg5MkVELCAweDA0RjYsDQorICAgIDB4OTJGMiwgMHgwREI4LCAweDkyRjMsIDB4MEJCMCwgMHg5MkY4LCAweDA2OTIsIDB4OTJGOSwgMHgyMEIwLA0KKyAgICAweDkyRkEsIDB4MUI1OSwgMHg5MkZCLCAweDIxREUsIDB4OTJGQywgMHgwN0VGLCAweDkyRkYsIDB4MjFFMSwNCisgICAgMHg5MzAyLCAweDIxRTMsIDB4OTMwNCwgMHgzNDVBLCAweDkzMDYsIDB4MDg3QSwgMHg5MzBELCAweDNCODAsDQorICAgIDB4OTMwRiwgMHgxQjU4LCAweDkzMTAsIDB4MEEzMywgMHg5MzE1LCAweDNCODEsIDB4OTMxOCwgMHgwQTM0LA0KKyAgICAweDkzMTksIDB4MUI1QywgMHg5MzFBLCAweDFCNUUsIDB4OTMxRCwgMHgyMUUyLCAweDkzMUUsIDB4MjFFMCwNCisgICAgMHg5MzFGLCAweDNCODIsIDB4OTMyMCwgMHgwOUUzLCAweDkzMjEsIDB4MjFERCwgMHg5MzIyLCAweDFCNUQsDQorICAgIDB4OTMyMywgMHgxQjVGLCAweDkzMjUsIDB4MjFEQywgMHg5MzI2LCAweDA2Q0IsIDB4OTMyNywgMHgzQjgzLA0KKyAgICAweDkzMjgsIDB4MERCNywgMHg5MzJCLCAweDA5MEUsIDB4OTMyQywgMHgwRkM5LCAweDkzMkUsIDB4MUI1QiwNCisgICAgMHg5MzJGLCAweDA4NjgsIDB4OTMzMiwgMHgwRkU1LCAweDkzMzUsIDB4MUI2MSwgMHg5MzNBLCAweDFCNjAsDQorICAgIDB4OTMzQiwgMHgxQjYyLCAweDkzNDQsIDB4MUI1QSwgMHg5MzQ3LCAweDNCODQsIDB4OTM0OCwgMHgyMEE5LA0KKyAgICAweDkzNEEsIDB4MzQ1OCwgMHg5MzRCLCAweDBDQzEsIDB4OTM0RCwgMHgwQzRGLCAweDkzNTIsIDB4M0I4NSwNCisgICAgMHg5MzU0LCAweDBCRjMsIDB4OTM1NiwgMHgxQjY3LCAweDkzNTcsIDB4MjFFNSwgMHg5MzVCLCAweDBCODEsDQorICAgIDB4OTM1QywgMHgxQjYzLCAweDkzNjAsIDB4MUI2NCwgMHg5MzY1LCAweDNCODYsIDB4OTM2QSwgMHgzQjg3LA0KKyAgICAweDkzNkMsIDB4MDcwMywgMHg5MzZELCAweDNCODgsIDB4OTM2RSwgMHgxQjY2LCAweDkzNzAsIDB4MjFFNCwNCisgICAgMHg5Mzc1LCAweDA3NjQsIDB4OTM3QywgMHgxQjY1LCAweDkzN0UsIDB4MDlDOSwgMHg5MzhDLCAweDA1RDcsDQorICAgIDB4OTM5NCwgMHgxQjZCLCAweDkzOTYsIDB4MDgyRiwgMHg5Mzk3LCAweDBBRkIsIDB4OTM5QSwgMHgwQkU2LA0KKyAgICAweDkzOUIsIDB4M0I4OSwgMHg5M0E0LCAweDIxRTYsIDB4OTNBNywgMHgwNTk5LCAweDkzQTksIDB4M0I4QiwNCisgICAgMHg5M0FDLCAweDFCNjksIDB4OTNBRCwgMHgxQjZBLCAweDkzQUUsIDB4MEJERiwgMHg5M0IwLCAweDFCNjgsDQorICAgIDB4OTNCOSwgMHgxQjZDLCAweDkzQkEsIDB4M0I4QSwgMHg5M0MxLCAweDNCOEMsIDB4OTNDMywgMHgxQjcyLA0KKyAgICAweDkzQzYsIDB4MjFFNywgMHg5M0M4LCAweDFCNzUsIDB4OTNDQSwgMHgzQjhELCAweDkzRDAsIDB4MUI3NCwNCisgICAgMHg5M0QxLCAweDBDMjcsIDB4OTNENiwgMHgxQjZELCAweDkzRDcsIDB4MUI2RSwgMHg5M0Q4LCAweDFCNzEsDQorICAgIDB4OTNERCwgMHgxQjczLCAweDkzREUsIDB4MjFFOCwgMHg5M0UxLCAweDA2QjgsIDB4OTNFMiwgMHgzQjhFLA0KKyAgICAweDkzRTQsIDB4MUI3NiwgMHg5M0U1LCAweDFCNzAsIDB4OTNFOCwgMHgxQjZGLCAweDkzRjgsIDB4MjFFOSwNCisgICAgMHg5M0ZBLCAweDNCOEYsIDB4OTNGRCwgMHgzQjkwLCAweDk0MDMsIDB4MUI3QSwgMHg5NDA3LCAweDFCN0IsDQorICAgIDB4OTQwRiwgMHgzQjkxLCAweDk0MTAsIDB4MUI3QywgMHg5NDEzLCAweDFCNzksIDB4OTQxNCwgMHgxQjc4LA0KKyAgICAweDk0MTgsIDB4MDlDQSwgMHg5NDE5LCAweDBDODIsIDB4OTQxQSwgMHgxQjc3LCAweDk0MjEsIDB4MUI4MCwNCisgICAgMHg5NDJCLCAweDFCN0UsIDB4OTQzMSwgMHgyMUVBLCAweDk0MzQsIDB4M0I5MiwgMHg5NDM1LCAweDFCN0YsDQorICAgIDB4OTQzNiwgMHgxQjdELCAweDk0MzgsIDB4MEI1OCwgMHg5NDNBLCAweDFCODEsIDB4OTQzRiwgMHgzQjkzLA0KKyAgICAweDk0NDEsIDB4MUI4MiwgMHg5NDQ0LCAweDFCODQsIDB4OTQ0NSwgMHgyMUVCLCAweDk0NDgsIDB4MjFFQywNCisgICAgMHg5NDUxLCAweDA2MTEsIDB4OTQ1MiwgMHgxQjgzLCAweDk0NTMsIDB4MEYwNiwgMHg5NDU1LCAweDNCOTQsDQorICAgIDB4OTQ1QSwgMHgxQjhGLCAweDk0NUIsIDB4MUI4NSwgMHg5NDVFLCAweDFCODgsIDB4OTQ2MCwgMHgxQjg2LA0KKyAgICAweDk0NjIsIDB4MUI4NywgMHg5NDZBLCAweDFCODksIDB4OTQ2QiwgMHgzQjk1LCAweDk0NzAsIDB4MUI4QiwNCisgICAgMHg5NDcyLCAweDNCOTYsIDB4OTQ3NSwgMHgxQjhDLCAweDk0NzcsIDB4MUI4RCwgMHg5NDdDLCAweDFCOTAsDQorICAgIDB4OTQ3RCwgMHgxQjhFLCAweDk0N0UsIDB4MUI5MSwgMHg5NDdGLCAweDFCOTMsIDB4OTQ4MSwgMHgxQjkyLA0KKyAgICAweDk1NzcsIDB4MEJENSwgMHg5NTc4LCAweDNCOTcsIDB4OTU4MCwgMHgwRUYzLCAweDk1ODIsIDB4MUI5NCwNCisgICAgMHg5NTgzLCAweDBBQjAsIDB4OTU4NywgMHgxQjk1LCAweDk1ODksIDB4MEUxNCwgMHg5NThBLCAweDFCOTYsDQorICAgIDB4OTU4QiwgMHgwNTg5LCAweDk1OEYsIDB4MDRERSwgMHg5NTkxLCAweDA2MTMsIDB4OTU5MiwgMHgyMUVELA0KKyAgICAweDk1OTMsIDB4MDYxMiwgMHg5NTk0LCAweDFCOTcsIDB4OTU5NiwgMHgxQjk4LCAweDk1OTgsIDB4MUI5OSwNCisgICAgMHg5NTk5LCAweDFCOUEsIDB4OTVBMCwgMHgxQjlCLCAweDk1QTIsIDB4MDYxNCwgMHg5NUEzLCAweDA1QjMsDQorICAgIDB4OTVBNCwgMHgwN0YwLCAweDk1QTUsIDB4MEQ0QSwgMHg5NUE2LCAweDNCOTgsIDB4OTVBNywgMHgxQjlELA0KKyAgICAweDk1QTgsIDB4MUI5QywgMHg5NUE5LCAweDNCOTksIDB4OTVBQiwgMHgzQjlBLCAweDk1QUQsIDB4MUI5RSwNCisgICAgMHg5NUIxLCAweDM1NTUsIDB4OTVCMiwgMHgwNEZFLCAweDk1QjQsIDB4M0I5QiwgMHg5NUI5LCAweDFCQTEsDQorICAgIDB4OTVCQiwgMHgxQkEwLCAweDk1QkMsIDB4MUI5RiwgMHg5NUJELCAweDNCOUMsIDB4OTVCRSwgMHgxQkEyLA0KKyAgICAweDk1QzMsIDB4MUJBNSwgMHg5NUM3LCAweDA0OEIsIDB4OTVDQSwgMHgxQkEzLCAweDk1Q0MsIDB4MUJBNywNCisgICAgMHg5NUNELCAweDFCQTYsIDB4OTVENCwgMHgxQkE5LCAweDk1RDUsIDB4MUJBOCwgMHg5NUQ2LCAweDFCQUEsDQorICAgIDB4OTVEOCwgMHgwQzg2LCAweDk1REEsIDB4M0I5RCwgMHg5NURDLCAweDFCQUIsIDB4OTVFMSwgMHgxQkFDLA0KKyAgICAweDk1RTIsIDB4MUJBRSwgMHg5NUU1LCAweDFCQUQsIDB4OTYxQywgMHgwRERFLCAweDk2MUQsIDB4M0I5RSwNCisgICAgMHg5NjIxLCAweDFCQUYsIDB4OTYyOCwgMHgxQkIwLCAweDk2MkEsIDB4MDg1NSwgMHg5NjJFLCAweDFCQjEsDQorICAgIDB4OTYyRiwgMHgxQkIyLCAweDk2MzIsIDB4MEU3NywgMHg5NjNCLCAweDBBQ0QsIDB4OTYzRiwgMHgwNDY4LA0KKyAgICAweDk2NDAsIDB4MEIyQiwgMHg5NjQxLCAweDNCOUYsIDB4OTY0MiwgMHgxQkIzLCAweDk2NDQsIDB4MERERiwNCisgICAgMHg5NjRCLCAweDFCQjYsIDB4OTY0QywgMHgxQkI0LCAweDk2NEQsIDB4MDdGMSwgMHg5NjRGLCAweDFCQjUsDQorICAgIDB4OTY1MCwgMHgwNzc2LCAweDk2NTgsIDB4M0JBMCwgMHg5NjVCLCAweDBFMTUsIDB4OTY1QywgMHgxQkI4LA0KKyAgICAweDk2NUQsIDB4MUJCQSwgMHg5NjVFLCAweDFCQjksIDB4OTY1RiwgMHgxQkJCLCAweDk2NjIsIDB4MDRDMywNCisgICAgMHg5NjYzLCAweDBBMUUsIDB4OTY2NCwgMHgwOTg2LCAweDk2NjUsIDB4MDYxNSwgMHg5NjY2LCAweDFCQkMsDQorICAgIDB4OTY2QSwgMHgwRDFDLCAweDk2NkMsIDB4MUJCRSwgMHg5NjcwLCAweDA0QzQsIDB4OTY3MiwgMHgxQkJELA0KKyAgICAweDk2NzMsIDB4MEJFMCwgMHg5Njc1LCAweDBGOTUsIDB4OTY3NiwgMHgwQzgzLCAweDk2NzcsIDB4MUJCNywNCisgICAgMHg5Njc4LCAweDBGNkUsIDB4OTY3QSwgMHgwNzY1LCAweDk2N0QsIDB4MEY0NSwgMHg5Njg0LCAweDNCQTEsDQorICAgIDB4OTY4NSwgMHgwNkYxLCAweDk2ODYsIDB4MEY3QywgMHg5Njg4LCAweDA2RkUsIDB4OTY4QSwgMHgwQjQyLA0KKyAgICAweDk2OEIsIDB4MTg2QywgMHg5NjhELCAweDFCQkYsIDB4OTY4RSwgMHgwNThBLCAweDk2OEYsIDB4MEEzNSwNCisgICAgMHg5Njk0LCAweDA1QjQsIDB4OTY5NSwgMHgxQkMxLCAweDk2OTcsIDB4MUJDMiwgMHg5Njk4LCAweDFCQzAsDQorICAgIDB4OTY5OSwgMHgwNzNBLCAweDk2OUIsIDB4MDg0RCwgMHg5NjlDLCAweDA5Q0IsIDB4OTY5RCwgMHgyMUYwLA0KKyAgICAweDk2QTAsIDB4MDRDNSwgMHg5NkEzLCAweDBGQTEsIDB4OTZBNCwgMHgzQkEyLCAweDk2QTcsIDB4MUJDNCwNCisgICAgMHg5NkE4LCAweDFCMEIsIDB4OTZBOSwgMHgzQkEzLCAweDk2QUEsIDB4MUJDMywgMHg5NkFGLCAweDIxRjEsDQorICAgIDB4OTZCMCwgMHgxQkM3LCAweDk2QjEsIDB4MUJDNSwgMHg5NkIyLCAweDFCQzYsIDB4OTZCNCwgMHgxQkM4LA0KKyAgICAweDk2QjYsIDB4MUJDOSwgMHg5NkI3LCAweDBGQjQsIDB4OTZCOCwgMHgxQkNBLCAweDk2QjksIDB4MUJDQiwNCisgICAgMHg5NkJCLCAweDBBNkQsIDB4OTZCQywgMHgwRDRGLCAweDk2QzAsIDB4MEE0MywgMHg5NkMxLCAweDA2MjMsDQorICAgIDB4OTZDNCwgMHgwRjI0LCAweDk2QzUsIDB4MDU2RCwgMHg5NkM2LCAweDA5NDIsIDB4OTZDNywgMHgwNzhGLA0KKyAgICAweDk2QzksIDB4MUJDRSwgMHg5NkNCLCAweDFCQ0QsIDB4OTZDQywgMHgwOEMxLCAweDk2Q0QsIDB4MUJDRiwNCisgICAgMHg5NkNFLCAweDFCQ0MsIDB4OTZEMSwgMHgwODc2LCAweDk2RDIsIDB4M0JBNCwgMHg5NkQ1LCAweDFCRDMsDQorICAgIDB4OTZENiwgMHgxOTkyLCAweDk2RDksIDB4MTBFQiwgMHg5NkRCLCAweDBBM0QsIDB4OTZEQywgMHgxQkQxLA0KKyAgICAweDk2REUsIDB4M0JBNiwgMHg5NkUyLCAweDBGNkQsIDB4OTZFMywgMHgwQ0M5LCAweDk2RTgsIDB4MDRDRCwNCisgICAgMHg5NkU5LCAweDNCQTcsIDB4OTZFQSwgMHgwQTg3LCAweDk2RUIsIDB4MDhFMiwgMHg5NkYwLCAweDBFMDcsDQorICAgIDB4OTZGMSwgMHgzQkE4LCAweDk2RjIsIDB4MDRFMiwgMHg5NkY2LCAweDBGQjUsIDB4OTZGNywgMHgwRjU1LA0KKyAgICAweDk2RjksIDB4MUJENCwgMHg5NkZCLCAweDBDM0YsIDB4OTcwMCwgMHgwOTI3LCAweDk3MDIsIDB4M0JBOSwNCisgICAgMHg5NzA0LCAweDFCRDUsIDB4OTcwNiwgMHgxQkQ2LCAweDk3MDcsIDB4MEExMiwgMHg5NzA4LCAweDFCRDcsDQorICAgIDB4OTcwOSwgMHgzQkFBLCAweDk3MEEsIDB4MEZCNiwgMHg5NzBELCAweDFCRDIsIDB4OTcwRSwgMHgxQkQ5LA0KKyAgICAweDk3MEYsIDB4MUJEQiwgMHg5NzExLCAweDFCREEsIDB4OTcxMywgMHgxQkQ4LCAweDk3MTYsIDB4MUJEQywNCisgICAgMHg5NzE5LCAweDFCREQsIDB4OTcxQywgMHgwQUZDLCAweDk3MUUsIDB4MDU2MiwgMHg5NzI0LCAweDFCREUsDQorICAgIDB4OTcyNywgMHgwRUM0LCAweDk3MkEsIDB4MUJERiwgMHg5NzMwLCAweDFCRTAsIDB4OTczMiwgMHgwRkQwLA0KKyAgICAweDk3MzMsIDB4MjFGMiwgMHg5NzM4LCAweDE0MTQsIDB4OTczOSwgMHgxQkUxLCAweDk3M0IsIDB4MjFGMywNCisgICAgMHg5NzNELCAweDFCRTIsIDB4OTczRSwgMHgxQkUzLCAweDk3NDIsIDB4MUJFNywgMHg5NzQzLCAweDIxRjQsDQorICAgIDB4OTc0NCwgMHgxQkU0LCAweDk3NDYsIDB4MUJFNSwgMHg5NzQ4LCAweDFCRTYsIDB4OTc0OSwgMHgxQkU4LA0KKyAgICAweDk3NEQsIDB4MjFGNSwgMHg5NzRGLCAweDIxRjYsIDB4OTc1MSwgMHgyMUY3LCAweDk3NTIsIDB4MEE2OCwNCisgICAgMHg5NzU1LCAweDIxRjgsIDB4OTc1NiwgMHgwRjAzLCAweDk3NTksIDB4MEE2OSwgMHg5NzVBLCAweDNCQUIsDQorICAgIDB4OTc1QywgMHgxQkU5LCAweDk3NUUsIDB4MEQ4NywgMHg5NzYwLCAweDFCRUEsIDB4OTc2MSwgMHgxRDA2LA0KKyAgICAweDk3NjIsIDB4MEVEOCwgMHg5NzYzLCAweDNCQUMsIDB4OTc2NCwgMHgxQkVCLCAweDk3NjYsIDB4MUJFQywNCisgICAgMHg5NzY4LCAweDFCRUQsIDB4OTc2OSwgMHgwNUI1LCAweDk3NkIsIDB4MUJFRiwgMHg5NzZELCAweDBBMUYsDQorICAgIDB4OTc2RSwgMHgzQkFELCAweDk3NzEsIDB4MUJGMCwgMHg5NzczLCAweDNCQUUsIDB4OTc3NCwgMHgwNkZBLA0KKyAgICAweDk3NzksIDB4MUJGMSwgMHg5NzdBLCAweDFCRjUsIDB4OTc3QywgMHgxQkYzLCAweDk3ODEsIDB4MUJGNCwNCisgICAgMHg5Nzg0LCAweDA1RDEsIDB4OTc4NSwgMHgxQkYyLCAweDk3ODYsIDB4MUJGNiwgMHg5NzhCLCAweDFCRjcsDQorICAgIDB4OTc4RCwgMHgwNDhDLCAweDk3OEYsIDB4MUJGOCwgMHg5NzkwLCAweDFCRjksIDB4OTc5OCwgMHgwOUNDLA0KKyAgICAweDk3OUEsIDB4M0JBRiwgMHg5NzlDLCAweDFCRkEsIDB4OTdBMCwgMHgwNjYxLCAweDk3QTIsIDB4M0JCMCwNCisgICAgMHg5N0EzLCAweDFCRkQsIDB4OTdBNiwgMHgxQkZDLCAweDk3QTgsIDB4MUJGQiwgMHg5N0FCLCAweDFBMzQsDQorICAgIDB4OTdBRCwgMHgwRTJDLCAweDk3QjMsIDB4MUJGRSwgMHg5N0I0LCAweDFCRkYsIDB4OTdCNSwgMHgzQkIxLA0KKyAgICAweDk3QjYsIDB4M0JCMiwgMHg5N0MzLCAweDFDMDAsIDB4OTdDNiwgMHgxQzAxLCAweDk3QzgsIDB4MUMwMiwNCisgICAgMHg5N0NCLCAweDFDMDMsIDB4OTdEMywgMHgwNjE2LCAweDk3RDksIDB4M0JCMywgMHg5N0RDLCAweDFDMDQsDQorICAgIDB4OTdERSwgMHgzQkI0LCAweDk3RUQsIDB4MUMwNSwgMHg5N0VFLCAweDBDRDksIDB4OTdGMiwgMHgxQzA3LA0KKyAgICAweDk3RjMsIDB4MDUzQiwgMHg5N0Y0LCAweDNCQjUsIDB4OTdGNSwgMHgxQzBBLCAweDk3RjYsIDB4MUMwOSwNCisgICAgMHg5N0ZCLCAweDA0QzYsIDB4OTdGRiwgMHgwNkI5LCAweDk4MDEsIDB4MEUxNywgMHg5ODAyLCAweDBCRDYsDQorICAgIDB4OTgwMywgMHgwODEyLCAweDk4MDUsIDB4MDdGMiwgMHg5ODA2LCAweDA5NzEsIDB4OTgwOCwgMHgwQTIyLA0KKyAgICAweDk4MEEsIDB4M0JCNiwgMHg5ODBDLCAweDFDMEMsIDB4OTgwRSwgMHgzQkI3LCAweDk4MEYsIDB4MUMwQiwNCisgICAgMHg5ODEwLCAweDBGMkMsIDB4OTgxMSwgMHgwNjI0LCAweDk4MTIsIDB4MEQ2NiwgMHg5ODEzLCAweDBDQjQsDQorICAgIDB4OTgxNywgMHgwQTQyLCAweDk4MTgsIDB4MEY5NiwgMHg5ODFBLCAweDA3MzEsIDB4OTgxRSwgMHgzQkI4LA0KKyAgICAweDk4MjEsIDB4MUMwRiwgMHg5ODIzLCAweDNCQjksIDB4OTgyNCwgMHgxQzBFLCAweDk4MkIsIDB4M0JCQSwNCisgICAgMHg5ODJDLCAweDBFNzksIDB4OTgyRCwgMHgwQzg0LCAweDk4MzAsIDB4MUU3MywgMHg5ODM0LCAweDA0RjIsDQorICAgIDB4OTgzNywgMHgxQzEwLCAweDk4MzgsIDB4MUMwRCwgMHg5ODM5LCAweDM3QjMsIDB4OTgzQiwgMHgwREMzLA0KKyAgICAweDk4M0MsIDB4MEY1NCwgMHg5ODNELCAweDFDMTEsIDB4OTgzRSwgMHgzQkJCLCAweDk4NDYsIDB4MUMxMiwNCisgICAgMHg5ODRCLCAweDFDMTQsIDB4OTg0QywgMHgwQjRBLCAweDk4NEQsIDB4MDVCOSwgMHg5ODRFLCAweDA1QkEsDQorICAgIDB4OTg0RiwgMHgxQzEzLCAweDk4NTIsIDB4M0JCQywgMHg5ODUzLCAweDNCQkQsIDB4OTg1NCwgMHgwNjI1LA0KKyAgICAweDk4NTUsIDB4MDc2NiwgMHg5ODU3LCAweDIxRjksIDB4OTg1OCwgMHgwNjI2LCAweDk4NTksIDB4M0JCRSwNCisgICAgMHg5ODVBLCAweDFFNDgsIDB4OTg1QiwgMHgwQzM5LCAweDk4NUUsIDB4MEZBOCwgMHg5ODY1LCAweDIxRkEsDQorICAgIDB4OTg2NywgMHgwNzkwLCAweDk4NkIsIDB4MUMxNSwgMHg5ODZDLCAweDNCQkYsIDB4OTg2RiwgMHgxQzE2LA0KKyAgICAweDk4NzAsIDB4MUMxNywgMHg5ODcxLCAweDFDMTgsIDB4OTg3MywgMHgxQzFBLCAweDk4NzQsIDB4MUMxOSwNCisgICAgMHg5OEE4LCAweDBERTksIDB4OThBQSwgMHgxQzFCLCAweDk4QUYsIDB4MUMxQywgMHg5OEIxLCAweDFDMUQsDQorICAgIDB4OThCNiwgMHgxQzFFLCAweDk4QjgsIDB4M0JDMCwgMHg5OEJBLCAweDNCQzEsIDB4OThCRiwgMHgzQkMyLA0KKyAgICAweDk4QzMsIDB4MUMyMCwgMHg5OEM0LCAweDFDMUYsIDB4OThDNiwgMHgxQzIxLCAweDk4QzgsIDB4M0JDMywNCisgICAgMHg5OERCLCAweDBEODgsIDB4OThEQywgMHgxODM5LCAweDk4REYsIDB4MDlFRiwgMHg5OEUwLCAweDM2MTgsDQorICAgIDB4OThFMiwgMHgwNjRDLCAweDk4RTUsIDB4M0JDNCwgMHg5OEU5LCAweDFDMjIsIDB4OThFQiwgMHgxQzIzLA0KKyAgICAweDk4RUQsIDB4MTBDMSwgMHg5OEVFLCAweDE0REEsIDB4OThFRiwgMHgwRDY3LCAweDk4RjIsIDB4MDRCRiwNCisgICAgMHg5OEY0LCAweDA0N0YsIDB4OThGQywgMHgwOEMyLCAweDk4RkQsIDB4MEU1RSwgMHg5OEZFLCAweDA5RTYsDQorICAgIDB4OTkwMywgMHgxQzI0LCAweDk5MDUsIDB4MEVFQiwgMHg5OTA5LCAweDFDMjUsIDB4OTkwQSwgMHgwRjQ2LA0KKyAgICAweDk5MEMsIDB4MDRFNCwgMHg5OTEwLCAweDA4OEYsIDB4OTkxMiwgMHgxQzI2LCAweDk5MTMsIDB4MDU2RSwNCisgICAgMHg5OTE0LCAweDFDMjcsIDB4OTkxOCwgMHgxQzI4LCAweDk5MUQsIDB4MUMyQSwgMHg5OTFFLCAweDFDMkIsDQorICAgIDB4OTkyMCwgMHgxQzJELCAweDk5MjEsIDB4MUMyOSwgMHg5OTI0LCAweDFDMkMsIDB4OTkyNywgMHgyMUZELA0KKyAgICAweDk5MjgsIDB4MDYxNywgMHg5OTJDLCAweDFDMkUsIDB4OTkyRSwgMHgxQzJGLCAweDk5MzIsIDB4M0JDNSwNCisgICAgMHg5OTMzLCAweDNCQzYsIDB4OTkzRCwgMHgxQzMwLCAweDk5M0UsIDB4MUMzMSwgMHg5OTQwLCAweDNCQzcsDQorICAgIDB4OTk0MiwgMHgxQzMyLCAweDk5NDUsIDB4MUMzNCwgMHg5OTQ5LCAweDFDMzMsIDB4OTk0QiwgMHgxQzM2LA0KKyAgICAweDk5NEMsIDB4MUMzOSwgMHg5OTRELCAweDNCQzgsIDB4OTk1MCwgMHgxQzM1LCAweDk5NTEsIDB4MUMzNywNCisgICAgMHg5OTUyLCAweDFDMzgsIDB4OTk1NSwgMHgxQzNBLCAweDk5NTcsIDB4MDZCQSwgMHg5OTVDLCAweDNCQzksDQorICAgIDB4OTk1RiwgMHgzQkNBLCAweDk5OTYsIDB4MDkxRiwgMHg5OTk3LCAweDFDM0IsIDB4OTk5OCwgMHgxQzNDLA0KKyAgICAweDk5OTksIDB4MDdGMywgMHg5OTlFLCAweDIxRkYsIDB4OTlBNSwgMHgxQzNELCAweDk5QTgsIDB4MDU5QywNCisgICAgMHg5OUFDLCAweDBEMDUsIDB4OTlBRCwgMHgxQzNFLCAweDk5QUUsIDB4MUMzRiwgMHg5OUIxLCAweDNCQ0IsDQorICAgIDB4OTlCMywgMHgwQjk4LCAweDk5QjQsIDB4MENDMywgMHg5OUI5LCAweDNCQ0MsIDB4OTlCQSwgMHgzQkNELA0KKyAgICAweDk5QkMsIDB4MUM0MCwgMHg5OUMxLCAweDBEMzMsIDB4OTlDNCwgMHgwQjJDLCAweDk5QzUsIDB4MDRGQSwNCisgICAgMHg5OUM2LCAweDA2RTYsIDB4OTlDOCwgMHgwNkU3LCAweDk5QzksIDB4M0JDRSwgMHg5OUQwLCAweDBCQjEsDQorICAgIDB4OTlEMSwgMHgxQzQ1LCAweDk5RDIsIDB4MDZFOCwgMHg5OUQ1LCAweDA1NkYsIDB4OTlEOCwgMHgxQzQ0LA0KKyAgICAweDk5REIsIDB4MUM0MiwgMHg5OURELCAweDFDNDMsIDB4OTlERiwgMHgxQzQxLCAweDk5RTIsIDB4MUM0RiwNCisgICAgMHg5OUVELCAweDFDNDYsIDB4OTlFRSwgMHgxQzQ3LCAweDk5RjEsIDB4MUM0OCwgMHg5OUYyLCAweDFDNDksDQorICAgIDB4OTlGOCwgMHgxQzRCLCAweDk5RkIsIDB4MUM0QSwgMHg5OUZGLCAweDA5NjMsIDB4OUEwMSwgMHgxQzRDLA0KKyAgICAweDlBMDIsIDB4M0JDRiwgMHg5QTA1LCAweDFDNEUsIDB4OUEwOCwgMHgzN0JBLCAweDlBMEUsIDB4MDY0RCwNCisgICAgMHg5QTBGLCAweDFDNEQsIDB4OUExMiwgMHgwQUZELCAweDlBMTMsIDB4MDc2NywgMHg5QTE2LCAweDNCRDAsDQorICAgIDB4OUExOSwgMHgxQzUwLCAweDlBMjQsIDB4M0JEMSwgMHg5QTI3LCAweDNCRDIsIDB4OUEyOCwgMHgwQjJELA0KKyAgICAweDlBMkIsIDB4MUM1MSwgMHg5QTJELCAweDNCRDMsIDB4OUEyRSwgMHgzQkQ0LCAweDlBMzAsIDB4MEM4NSwNCisgICAgMHg5QTM2LCAweDNCRDUsIDB4OUEzNywgMHgxQzUyLCAweDlBMzgsIDB4M0JENiwgMHg5QTNFLCAweDFDNTcsDQorICAgIDB4OUE0MCwgMHgxQzU1LCAweDlBNDIsIDB4MUM1NCwgMHg5QTQzLCAweDFDNTYsIDB4OUE0NSwgMHgxQzUzLA0KKyAgICAweDlBNEEsIDB4M0JENywgMHg5QTRELCAweDFDNTksIDB4OUE0RSwgMHgyMjAwLCAweDlBNTIsIDB4MUUyRiwNCisgICAgMHg5QTU1LCAweDFDNTgsIDB4OUE1NiwgMHgzQkQ4LCAweDlBNTcsIDB4MUM1QiwgMHg5QTVBLCAweDA2QkIsDQorICAgIDB4OUE1QiwgMHgxQzVBLCAweDlBNUYsIDB4MUM1QywgMHg5QTYyLCAweDFDNUQsIDB4OUE2NCwgMHgxQzVGLA0KKyAgICAweDlBNjUsIDB4MUM1RSwgMHg5QTY5LCAweDFDNjAsIDB4OUE2QSwgMHgxQzYyLCAweDlBNkIsIDB4MUM2MSwNCisgICAgMHg5QUE4LCAweDA4MEUsIDB4OUFBRCwgMHgxQzYzLCAweDlBQjAsIDB4MUM2NCwgMHg5QUI1LCAweDNCRDksDQorICAgIDB4OUFCNiwgMHgzQkRBLCAweDlBQjgsIDB4MDU5QSwgMHg5QUJDLCAweDFDNjUsIDB4OUFDMCwgMHgxQzY2LA0KKyAgICAweDlBQzQsIDB4MEEzNywgMHg5QUNGLCAweDFDNjcsIDB4OUFEMSwgMHgxQzY4LCAweDlBRDMsIDB4MUM2OSwNCisgICAgMHg5QUQ0LCAweDFDNkEsIDB4OUFEOCwgMHgwN0Y0LCAweDlBRDksIDB4MjIwMSwgMHg5QURDLCAweDIyMDIsDQorICAgIDB4OUFERSwgMHgxQzZCLCAweDlBREYsIDB4MUM2QywgMHg5QUUyLCAweDFDNkQsIDB4OUFFMywgMHgxQzZFLA0KKyAgICAweDlBRTYsIDB4MUM2RiwgMHg5QUVBLCAweDBENDUsIDB4OUFFQiwgMHgxQzcxLCAweDlBRUQsIDB4MEQ5OCwNCisgICAgMHg5QUVFLCAweDFDNzIsIDB4OUFFRiwgMHgxQzcwLCAweDlBRjEsIDB4MUM3NCwgMHg5QUY0LCAweDFDNzMsDQorICAgIDB4OUFGNywgMHgxQzc1LCAweDlBRjksIDB4M0JEQiwgMHg5QUZCLCAweDFDNzYsIDB4OUIwMywgMHgzQkRDLA0KKyAgICAweDlCMDYsIDB4MUM3NywgMHg5QjE4LCAweDFDNzgsIDB4OUIxQSwgMHgxQzc5LCAweDlCMUYsIDB4MUM3QSwNCisgICAgMHg5QjIwLCAweDNCREQsIDB4OUIyMiwgMHgxQzdCLCAweDlCMjMsIDB4MUM3QywgMHg5QjI1LCAweDFDN0QsDQorICAgIDB4OUIyNywgMHgxQzdFLCAweDlCMjgsIDB4MUM3RiwgMHg5QjI5LCAweDFDODAsIDB4OUIyQSwgMHgxQzgxLA0KKyAgICAweDlCMkQsIDB4MzQzQywgMHg5QjJFLCAweDFDODIsIDB4OUIyRiwgMHgxQzgzLCAweDlCMzEsIDB4MTRENCwNCisgICAgMHg5QjMyLCAweDFDODQsIDB4OUIzMywgMHgzQkRFLCAweDlCMzQsIDB4M0JERiwgMHg5QjNCLCAweDE3QTksDQorICAgIDB4OUIzQywgMHgwNjRFLCAweDlCNDEsIDB4MDU3RiwgMHg5QjQyLCAweDA4MjIsIDB4OUI0MywgMHgxQzg2LA0KKyAgICAweDlCNDQsIDB4MUM4NSwgMHg5QjQ1LCAweDBFQjEsIDB4OUI0RCwgMHgxQzg4LCAweDlCNEUsIDB4MUM4OSwNCisgICAgMHg5QjRGLCAweDFDODcsIDB4OUI1MSwgMHgxQzhBLCAweDlCNTQsIDB4MEU5MCwgMHg5QjU4LCAweDFDOEIsDQorICAgIDB4OUI1QSwgMHgwNjk1LCAweDlCNkYsIDB4MEZDQiwgMHg5QjcyLCAweDIyMDQsIDB4OUI3MywgMHgzQkUwLA0KKyAgICAweDlCNzQsIDB4MUM4QywgMHg5Qjc1LCAweDIyMDMsIDB4OUI3OSwgMHgzQkUxLCAweDlCODMsIDB4MUM4RSwNCisgICAgMHg5QjhFLCAweDA0ODIsIDB4OUI4RiwgMHgyMjA1LCAweDlCOTEsIDB4MUM4RiwgMHg5QjkyLCAweDBERkIsDQorICAgIDB4OUI5MywgMHgxQzhELCAweDlCOTYsIDB4MUM5MCwgMHg5Qjk3LCAweDFDOTEsIDB4OUI5RiwgMHgxQzkyLA0KKyAgICAweDlCQTAsIDB4MUM5MywgMHg5QkE3LCAweDNCRTIsIDB4OUJBOCwgMHgxQzk0LCAweDlCQUEsIDB4MEU5QywNCisgICAgMHg5QkFCLCAweDA4N0IsIDB4OUJBRCwgMHgwODZBLCAweDlCQUUsIDB4MEFCMSwgMHg5QkIxLCAweDIyMDYsDQorICAgIDB4OUJCNCwgMHgxQzk1LCAweDlCQjksIDB4MUM5OCwgMHg5QkJCLCAweDIyMDcsIDB4OUJDMCwgMHgxQzk2LA0KKyAgICAweDlCQzEsIDB4M0JFMywgMHg5QkM2LCAweDFDOTksIDB4OUJDNywgMHgzQkU0LCAweDlCQzksIDB4MDdBNSwNCisgICAgMHg5QkNBLCAweDFDOTcsIDB4OUJDRiwgMHgxQzlBLCAweDlCRDEsIDB4MUM5QiwgMHg5QkQyLCAweDFDOUMsDQorICAgIDB4OUJENCwgMHgxQ0EwLCAweDlCRDYsIDB4MDg3OCwgMHg5QkQ3LCAweDNCRTUsIDB4OUJEQiwgMHgwQjQ0LA0KKyAgICAweDlCREYsIDB4MzdCRiwgMHg5QkUxLCAweDFDQTEsIDB4OUJFMiwgMHgxQzlFLCAweDlCRTMsIDB4MUM5RCwNCisgICAgMHg5QkU0LCAweDFDOUYsIDB4OUJFNywgMHgzQkU2LCAweDlCRTgsIDB4MDczNSwgMHg5QkVCLCAweDNCRTcsDQorICAgIDB4OUJGMCwgMHgxQ0E1LCAweDlCRjEsIDB4MUNBNCwgMHg5QkYyLCAweDFDQTMsIDB4OUJGNSwgMHgwNDc3LA0KKyAgICAweDlCRjcsIDB4M0JFOCwgMHg5QkZBLCAweDNCRTksIDB4OUJGRCwgMHgzQkVBLCAweDlDMDAsIDB4MjIwOCwNCisgICAgMHg5QzA0LCAweDFDQUYsIDB4OUMwNiwgMHgxQ0FCLCAweDlDMDgsIDB4MUNBQywgMHg5QzA5LCAweDFDQTgsDQorICAgIDB4OUMwQSwgMHgxQ0FFLCAweDlDMEIsIDB4M0JFQiwgMHg5QzBDLCAweDFDQUEsIDB4OUMwRCwgMHgwNUMwLA0KKyAgICAweDlDMTAsIDB4MEZGMiwgMHg5QzEyLCAweDFDQUQsIDB4OUMxMywgMHgxQ0E5LCAweDlDMTQsIDB4MUNBNywNCisgICAgMHg5QzE1LCAweDFDQTYsIDB4OUMxQiwgMHgxQ0IxLCAweDlDMjEsIDB4MUNCNCwgMHg5QzI0LCAweDFDQjMsDQorICAgIDB4OUMyNSwgMHgxQ0IyLCAweDlDMjcsIDB4M0JFQywgMHg5QzJBLCAweDNCRUQsIDB4OUMyRCwgMHgwREJCLA0KKyAgICAweDlDMkUsIDB4MUNCMCwgMHg5QzJGLCAweDA0QjcsIDB4OUMzMCwgMHgxQ0I1LCAweDlDMzIsIDB4MUNCNywNCisgICAgMHg5QzM2LCAweDNCRUUsIDB4OUMzOSwgMHgwNUNELCAweDlDM0EsIDB4MUNBMiwgMHg5QzNCLCAweDA0RDksDQorICAgIDB4OUMzRSwgMHgxQ0I5LCAweDlDNDEsIDB4M0JFRiwgMHg5QzQ2LCAweDFDQjgsIDB4OUM0NywgMHgxQ0I2LA0KKyAgICAweDlDNDgsIDB4MEI2QiwgMHg5QzUyLCAweDBFOUUsIDB4OUM1MywgMHgzQkYwLCAweDlDNTcsIDB4MEZBMiwNCisgICAgMHg5QzVBLCAweDFDQkEsIDB4OUM2MCwgMHgxQ0JCLCAweDlDNjMsIDB4M0JGMSwgMHg5QzY3LCAweDFDQkMsDQorICAgIDB4OUM2QSwgMHgzQkYyLCAweDlDNzYsIDB4MUNCRCwgMHg5Qzc3LCAweDNCRjMsIDB4OUM3OCwgMHgxQ0JFLA0KKyAgICAweDlDRTUsIDB4MEJENywgMHg5Q0U3LCAweDFDQkYsIDB4OUNFOSwgMHgwRDRCLCAweDlDRUIsIDB4MUNDNCwNCisgICAgMHg5Q0VDLCAweDFDQzAsIDB4OUNGMCwgMHgxQ0MxLCAweDlDRjMsIDB4MEU1RiwgMHg5Q0Y0LCAweDBFRDAsDQorICAgIDB4OUNGNiwgMHgwQ0E4LCAweDlEMDIsIDB4M0JGNCwgMHg5RDAzLCAweDFDQzUsIDB4OUQwNiwgMHgxQ0M2LA0KKyAgICAweDlEMDcsIDB4MEM5NiwgMHg5RDA4LCAweDFDQzMsIDB4OUQwOSwgMHgxQ0MyLCAweDlEMEUsIDB4MDUyQSwNCisgICAgMHg5RDEyLCAweDFDQ0UsIDB4OUQxNSwgMHgxQ0NELCAweDlEMUIsIDB4MDUxNywgMHg5RDFGLCAweDFDQ0IsDQorICAgIDB4OUQyMywgMHgxQ0NBLCAweDlEMjYsIDB4MUNDOCwgMHg5RDI4LCAweDA1RDksIDB4OUQyQSwgMHgxQ0M3LA0KKyAgICAweDlEMkIsIDB4MDhERSwgMHg5RDJDLCAweDA1MjksIDB4OUQzQiwgMHgwN0Y1LCAweDlEM0UsIDB4MUNEMSwNCisgICAgMHg5RDNGLCAweDFDRDAsIDB4OUQ0MSwgMHgxQ0NGLCAweDlENDIsIDB4M0JGNSwgMHg5RDQ0LCAweDFDQ0MsDQorICAgIDB4OUQ0NiwgMHgxQ0QyLCAweDlENDcsIDB4M0JGNiwgMHg5RDQ4LCAweDFDRDMsIDB4OUQ1MCwgMHgxQ0Q4LA0KKyAgICAweDlENTEsIDB4MUNENywgMHg5RDU5LCAweDFDRDksIDB4OUQ1QywgMHgwNENGLCAweDlENUQsIDB4MUNENCwNCisgICAgMHg5RDVFLCAweDFDRDUsIDB4OUQ2MCwgMHgwODA2LCAweDlENjEsIDB4MEVDNSwgMHg5RDYzLCAweDNCRjcsDQorICAgIDB4OUQ2NCwgMHgxQ0Q2LCAweDlENjksIDB4M0JGOCwgMHg5RDZCLCAweDIyMEEsIDB4OUQ2QywgMHgwRTYwLA0KKyAgICAweDlENkYsIDB4MUNERSwgMHg5RDcwLCAweDIyMDksIDB4OUQ3MiwgMHgxQ0RBLCAweDlEN0EsIDB4MUNERiwNCisgICAgMHg5RDdDLCAweDNCRjksIDB4OUQ3RSwgMHgzQkZBLCAweDlEODcsIDB4MUNEQywgMHg5RDg5LCAweDFDREIsDQorICAgIDB4OUQ4RCwgMHgzQkZCLCAweDlEOEYsIDB4MDczMiwgMHg5RDlBLCAweDFDRTAsIDB4OURBNCwgMHgxQ0UxLA0KKyAgICAweDlEQTksIDB4MUNFMiwgMHg5REFCLCAweDFDREQsIDB4OURBRiwgMHgxQ0M5LCAweDlEQjEsIDB4M0JGQywNCisgICAgMHg5REIyLCAweDFDRTMsIDB4OURCNCwgMHgwQkZELCAweDlEQjgsIDB4MUNFNywgMHg5REJBLCAweDFDRTgsDQorICAgIDB4OURCQiwgMHgxQ0U2LCAweDlEQzEsIDB4MUNFNSwgMHg5REMyLCAweDFDRUIsIDB4OURDMywgMHgzQkZELA0KKyAgICAweDlEQzQsIDB4MUNFNCwgMHg5REM2LCAweDFDRTksIDB4OURDNywgMHgzQkZFLCAweDlEQ0YsIDB4MUNFQSwNCisgICAgMHg5REQzLCAweDFDRUQsIDB4OURENiwgMHgzQkZGLCAweDlERDcsIDB4MURERSwgMHg5REQ5LCAweDFDRUMsDQorICAgIDB4OURERiwgMHgzQzAwLCAweDlERTYsIDB4MUNFRiwgMHg5REVCLCAweDNDMDEsIDB4OURFRCwgMHgxQ0YwLA0KKyAgICAweDlERUYsIDB4MUNGMSwgMHg5REYyLCAweDBGRUYsIDB4OURGNCwgMHgzQzAyLCAweDlERjgsIDB4MUNFRSwNCisgICAgMHg5REY5LCAweDBCNEIsIDB4OURGQSwgMHgwODVELCAweDlERkQsIDB4MUNGMiwgMHg5RTE1LCAweDNDMDMsDQorICAgIDB4OUUxOSwgMHgyMjBDLCAweDlFMUEsIDB4MUNGMywgMHg5RTFCLCAweDFDRjQsIDB4OUUxRCwgMHgzQzA0LA0KKyAgICAweDlFMUUsIDB4MUNGNSwgMHg5RTc1LCAweDFDRjYsIDB4OUU3OCwgMHgwNzY4LCAweDlFNzksIDB4MUNGNywNCisgICAgMHg5RTdDLCAweDFERkQsIDB4OUU3RCwgMHgxQ0Y4LCAweDlFN0YsIDB4MDhEQiwgMHg5RTgxLCAweDFDRjksDQorICAgIDB4OUU4OCwgMHgxQ0ZBLCAweDlFOEIsIDB4MUNGQiwgMHg5RThDLCAweDFDRkMsIDB4OUU5MSwgMHgxQ0ZGLA0KKyAgICAweDlFOTIsIDB4MUNGRCwgMHg5RTkzLCAweDBGRTIsIDB4OUU5NSwgMHgxQ0ZFLCAweDlFOTcsIDB4MEZCNywNCisgICAgMHg5RTlELCAweDFEMDAsIDB4OUU5RiwgMHgwRkEzLCAweDlFQTQsIDB4M0MwNSwgMHg5RUE1LCAweDFEMDEsDQorICAgIDB4OUVBNiwgMHgwRDM0LCAweDlFQTgsIDB4M0MwNiwgMHg5RUE5LCAweDFEMDIsIDB4OUVBQSwgMHgxRDA0LA0KKyAgICAweDlFQUMsIDB4M0MwNywgMHg5RUFELCAweDFEMDUsIDB4OUVCNCwgMHgxRTAyLCAweDlFQjUsIDB4MUU3NSwNCisgICAgMHg5RUI4LCAweDFEMDMsIDB4OUVCOSwgMHgwN0ZGLCAweDlFQkEsIDB4MEVEOSwgMHg5RUJCLCAweDBFOTEsDQorICAgIDB4OUVCQywgMHgxMjg0LCAweDlFQkUsIDB4MTRGRiwgMHg5RUJGLCAweDBFQTksIDB4OUVDMywgMHgzNDBCLA0KKyAgICAweDlFQzQsIDB4MDUyQiwgMHg5RUNDLCAweDFEMDcsIDB4OUVDRCwgMHgwNjZBLCAweDlFQ0UsIDB4MUQwOCwNCisgICAgMHg5RUNGLCAweDFEMDksIDB4OUVEMCwgMHgxRDBBLCAweDlFRDEsIDB4MjIwRCwgMHg5RUQyLCAweDA4MDcsDQorICAgIDB4OUVENCwgMHgxRDBCLCAweDlFRDgsIDB4MTYwRCwgMHg5RUQ5LCAweDBFRTcsIDB4OUVEQiwgMHgwQjQzLA0KKyAgICAweDlFREMsIDB4MUQwQywgMHg5RURELCAweDFEMEUsIDB4OUVERSwgMHgxRDBELCAweDlFRTAsIDB4MUQwRiwNCisgICAgMHg5RUU1LCAweDFEMTAsIDB4OUVFNywgMHgzQzA4LCAweDlFRTgsIDB4MUQxMSwgMHg5RUVFLCAweDNDMDksDQorICAgIDB4OUVFRiwgMHgxRDEyLCAweDlFRjQsIDB4MUQxMywgMHg5RUY2LCAweDFEMTQsIDB4OUVGNywgMHgxRDE1LA0KKyAgICAweDlFRjksIDB4MUQxNiwgMHg5RUZCLCAweDFEMTcsIDB4OUVGQywgMHgxRDE4LCAweDlFRkQsIDB4MUQxOSwNCisgICAgMHg5RjA3LCAweDFEMUEsIDB4OUYwOCwgMHgxRDFCLCAweDlGMEUsIDB4MEMxRSwgMHg5RjEwLCAweDNDMEEsDQorICAgIDB4OUYxMiwgMHgzQzBCLCAweDlGMTMsIDB4MDc5MSwgMHg5RjE1LCAweDFEMUQsIDB4OUYxNywgMHgzQzBDLA0KKyAgICAweDlGMTksIDB4M0MwRCwgMHg5RjIwLCAweDBBQ0YsIDB4OUYyMSwgMHgxRDFFLCAweDlGMkMsIDB4MUQxRiwNCisgICAgMHg5RjJGLCAweDNDMEUsIDB4OUYzNywgMHgzQzBGLCAweDlGMzksIDB4M0MxMCwgMHg5RjNCLCAweDBEOTMsDQorICAgIDB4OUYzRSwgMHgxRDIwLCAweDlGNDEsIDB4M0MxMSwgMHg5RjQ1LCAweDNDMTIsIDB4OUY0QSwgMHgxRDIxLA0KKyAgICAweDlGNEIsIDB4MTcwQSwgMHg5RjRFLCAweDFBN0IsIDB4OUY0RiwgMHgxQzA2LCAweDlGNTIsIDB4MUQyMiwNCisgICAgMHg5RjU0LCAweDFEMjMsIDB4OUY1NywgMHgzQzEzLCAweDlGNUYsIDB4MUQyNSwgMHg5RjYwLCAweDFEMjYsDQorICAgIDB4OUY2MSwgMHgxRDI3LCAweDlGNjIsIDB4MEZCOCwgMHg5RjYzLCAweDFEMjQsIDB4OUY2NiwgMHgxRDI4LA0KKyAgICAweDlGNjcsIDB4MUQyOSwgMHg5RjY4LCAweDNDMTQsIDB4OUY2QSwgMHgxRDJCLCAweDlGNkMsIDB4MUQyQSwNCisgICAgMHg5RjcxLCAweDNDMTUsIDB4OUY3MiwgMHgxRDJELCAweDlGNzUsIDB4M0MxNiwgMHg5Rjc2LCAweDFEMkUsDQorICAgIDB4OUY3NywgMHgxRDJDLCAweDlGOEQsIDB4MEY3RSwgMHg5RjkwLCAweDNDMTcsIDB4OUY5NCwgMHgzQzE4LA0KKyAgICAweDlGOTUsIDB4MUQyRiwgMHg5RjlDLCAweDFEMzAsIDB4OUY5RCwgMHgxNzI3LCAweDlGQTAsIDB4MUQzMSwNCisgICAgMHg5RkEyLCAweDNDMTksIDB4RjkyOSwgMHgyMTI5LCAweEY5REMsIDB4MjFFRSwgMHhGQTBFLCAweDIwREEsDQorICAgIDB4RkEwRiwgMHgyMEU1LCAweEZBMTAsIDB4MjBFNiwgMHhGQTExLCAweDIwRkIsIDB4RkExMiwgMHgyMTIxLA0KKyAgICAweEZBMTMsIDB4MjEzMSwgMHhGQTE0LCAweDIxMzMsIDB4RkExNSwgMHgyMTVFLCAweEZBMTYsIDB4MjE2NCwNCisgICAgMHhGQTE3LCAweDIxN0IsIDB4RkExOCwgMHgyMTgzLCAweEZBMTksIDB4MjE4NCwgMHhGQTFBLCAweDIxODUsDQorICAgIDB4RkExQiwgMHgyMTg3LCAweEZBMUMsIDB4MjE4QiwgMHhGQTFELCAweDIxOEUsIDB4RkExRSwgMHgyMTk3LA0KKyAgICAweEZBMUYsIDB4MjFBMiwgMHhGQTIwLCAweDIxQTQsIDB4RkEyMSwgMHgyMUE1LCAweEZBMjIsIDB4MjFBRSwNCisgICAgMHhGQTIzLCAweDIxQjYsIDB4RkEyNCwgMHgyMUI4LCAweEZBMjUsIDB4MjFCOSwgMHhGQTI2LCAweDIxQkMsDQorICAgIDB4RkEyNywgMHgyMUQ4LCAweEZBMjgsIDB4MjFERiwgMHhGQTI5LCAweDIxRUYsIDB4RkEyQSwgMHgyMUZCLA0KKyAgICAweEZBMkIsIDB4MjFGQywgMHhGQTJDLCAweDIxRkUsIDB4RkEyRCwgMHgyMjBCLCAweEZCMDAsIDB4MjQ4RSwNCisgICAgMHhGQjAxLCAweDAwNzAsIDB4RkIwMiwgMHgwMDcxLCAweEZCMDMsIDB4MjQ4RiwgMHhGQjA0LCAweDI0OTAsDQorICAgIDB4RkUzMCwgMHgxRURBLCAweEZFMzEsIDB4MUVENCwgMHhGRTMyLCAweDFFRDUsIDB4RkUzMywgMHgxRUQyLA0KKyAgICAweEZFMzUsIDB4MUVEQiwgMHhGRTM2LCAweDFFREMsIDB4RkUzNywgMHgxRUUxLCAweEZFMzgsIDB4MUVFMiwNCisgICAgMHhGRTM5LCAweDFFREQsIDB4RkUzQSwgMHgxRURFLCAweEZFM0IsIDB4MUVFQiwgMHhGRTNDLCAweDFFRUMsDQorICAgIDB4RkUzRCwgMHgxRUU1LCAweEZFM0UsIDB4MUVFNiwgMHhGRTNGLCAweDFFRTMsIDB4RkU0MCwgMHgxRUU0LA0KKyAgICAweEZFNDEsIDB4MUVFNywgMHhGRTQyLCAweDFFRTgsIDB4RkU0MywgMHgxRUU5LCAweEZFNDQsIDB4MUVFQSwNCisgICAgMHhGRjAxLCAweDAyODIsIDB4RkYwMiwgMHgxRjQ3LCAweEZGMDMsIDB4MDJDQywgMHhGRjA0LCAweDAyQzgsDQorICAgIDB4RkYwNSwgMHgwMkNCLCAweEZGMDYsIDB4MDJDRCwgMHhGRjA3LCAweDFGNDYsIDB4RkYwOCwgMHgwMkEyLA0KKyAgICAweEZGMDksIDB4MDJBMywgMHhGRjBBLCAweDAyQ0UsIDB4RkYwQiwgMHgwMkI0LCAweEZGMEMsIDB4MDI3QywNCisgICAgMHhGRjBELCAweDAyQjUsIDB4RkYwRSwgMHgwMjdELCAweEZGMEYsIDB4MDI5NywgMHhGRjEwLCAweDAzMEMsDQorICAgIDB4RkYxMSwgMHgwMzBELCAweEZGMTIsIDB4MDMwRSwgMHhGRjEzLCAweDAzMEYsIDB4RkYxNCwgMHgwMzEwLA0KKyAgICAweEZGMTUsIDB4MDMxMSwgMHhGRjE2LCAweDAzMTIsIDB4RkYxNywgMHgwMzEzLCAweEZGMTgsIDB4MDMxNCwNCisgICAgMHhGRjE5LCAweDAzMTUsIDB4RkYxQSwgMHgwMjdGLCAweEZGMUIsIDB4MDI4MCwgMHhGRjFDLCAweDAyQkIsDQorICAgIDB4RkYxRCwgMHgwMkI5LCAweEZGMUUsIDB4MDJCQywgMHhGRjFGLCAweDAyODEsIDB4RkYyMCwgMHgwMkNGLA0KKyAgICAweEZGMjEsIDB4MDMxNiwgMHhGRjIyLCAweDAzMTcsIDB4RkYyMywgMHgwMzE4LCAweEZGMjQsIDB4MDMxOSwNCisgICAgMHhGRjI1LCAweDAzMUEsIDB4RkYyNiwgMHgwMzFCLCAweEZGMjcsIDB4MDMxQywgMHhGRjI4LCAweDAzMUQsDQorICAgIDB4RkYyOSwgMHgwMzFFLCAweEZGMkEsIDB4MDMxRiwgMHhGRjJCLCAweDAzMjAsIDB4RkYyQywgMHgwMzIxLA0KKyAgICAweEZGMkQsIDB4MDMyMiwgMHhGRjJFLCAweDAzMjMsIDB4RkYyRiwgMHgwMzI0LCAweEZGMzAsIDB4MDMyNSwNCisgICAgMHhGRjMxLCAweDAzMjYsIDB4RkYzMiwgMHgwMzI3LCAweEZGMzMsIDB4MDMyOCwgMHhGRjM0LCAweDAzMjksDQorICAgIDB4RkYzNSwgMHgwMzJBLCAweEZGMzYsIDB4MDMyQiwgMHhGRjM3LCAweDAzMkMsIDB4RkYzOCwgMHgwMzJELA0KKyAgICAweEZGMzksIDB4MDMyRSwgMHhGRjNBLCAweDAzMkYsIDB4RkYzQiwgMHgwMkE2LCAweEZGM0MsIDB4MDI5OCwNCisgICAgMHhGRjNELCAweDAyQTcsIDB4RkYzRSwgMHgwMjg4LCAweEZGM0YsIDB4MDI4QSwgMHhGRjQwLCAweDAyODYsDQorICAgIDB4RkY0MSwgMHgwMzMwLCAweEZGNDIsIDB4MDMzMSwgMHhGRjQzLCAweDAzMzIsIDB4RkY0NCwgMHgwMzMzLA0KKyAgICAweEZGNDUsIDB4MDMzNCwgMHhGRjQ2LCAweDAzMzUsIDB4RkY0NywgMHgwMzM2LCAweEZGNDgsIDB4MDMzNywNCisgICAgMHhGRjQ5LCAweDAzMzgsIDB4RkY0QSwgMHgwMzM5LCAweEZGNEIsIDB4MDMzQSwgMHhGRjRDLCAweDAzM0IsDQorICAgIDB4RkY0RCwgMHgwMzNDLCAweEZGNEUsIDB4MDMzRCwgMHhGRjRGLCAweDAzM0UsIDB4RkY1MCwgMHgwMzNGLA0KKyAgICAweEZGNTEsIDB4MDM0MCwgMHhGRjUyLCAweDAzNDEsIDB4RkY1MywgMHgwMzQyLCAweEZGNTQsIDB4MDM0MywNCisgICAgMHhGRjU1LCAweDAzNDQsIDB4RkY1NiwgMHgwMzQ1LCAweEZGNTcsIDB4MDM0NiwgMHhGRjU4LCAweDAzNDcsDQorICAgIDB4RkY1OSwgMHgwMzQ4LCAweEZGNUEsIDB4MDM0OSwgMHhGRjVCLCAweDAyQTgsIDB4RkY1QywgMHgwMjlCLA0KKyAgICAweEZGNUQsIDB4MDJBOSwgMHhGRjVFLCAweDAyOTksIDB4RkY2MSwgMHgwMTQ3LCAweEZGNjIsIDB4MDE0OCwNCisgICAgMHhGRjYzLCAweDAxNDksIDB4RkY2NCwgMHgwMTRBLCAweEZGNjUsIDB4MDE0QiwgMHhGRjY2LCAweDAxNEMsDQorICAgIDB4RkY2NywgMHgwMTRELCAweEZGNjgsIDB4MDE0RSwgMHhGRjY5LCAweDAxNEYsIDB4RkY2QSwgMHgwMTUwLA0KKyAgICAweEZGNkIsIDB4MDE1MSwgMHhGRjZDLCAweDAxNTIsIDB4RkY2RCwgMHgwMTUzLCAweEZGNkUsIDB4MDE1NCwNCisgICAgMHhGRjZGLCAweDAxNTUsIDB4RkY3MCwgMHgwMTU2LCAweEZGNzEsIDB4MDE1NywgMHhGRjcyLCAweDAxNTgsDQorICAgIDB4RkY3MywgMHgwMTU5LCAweEZGNzQsIDB4MDE1QSwgMHhGRjc1LCAweDAxNUIsIDB4RkY3NiwgMHgwMTVDLA0KKyAgICAweEZGNzcsIDB4MDE1RCwgMHhGRjc4LCAweDAxNUUsIDB4RkY3OSwgMHgwMTVGLCAweEZGN0EsIDB4MDE2MCwNCisgICAgMHhGRjdCLCAweDAxNjEsIDB4RkY3QywgMHgwMTYyLCAweEZGN0QsIDB4MDE2MywgMHhGRjdFLCAweDAxNjQsDQorICAgIDB4RkY3RiwgMHgwMTY1LCAweEZGODAsIDB4MDE2NiwgMHhGRjgxLCAweDAxNjcsIDB4RkY4MiwgMHgwMTY4LA0KKyAgICAweEZGODMsIDB4MDE2OSwgMHhGRjg0LCAweDAxNkEsIDB4RkY4NSwgMHgwMTZCLCAweEZGODYsIDB4MDE2QywNCisgICAgMHhGRjg3LCAweDAxNkQsIDB4RkY4OCwgMHgwMTZFLCAweEZGODksIDB4MDE2RiwgMHhGRjhBLCAweDAxNzAsDQorICAgIDB4RkY4QiwgMHgwMTcxLCAweEZGOEMsIDB4MDE3MiwgMHhGRjhELCAweDAxNzMsIDB4RkY4RSwgMHgwMTc0LA0KKyAgICAweEZGOEYsIDB4MDE3NSwgMHhGRjkwLCAweDAxNzYsIDB4RkY5MSwgMHgwMTc3LCAweEZGOTIsIDB4MDE3OCwNCisgICAgMHhGRjkzLCAweDAxNzksIDB4RkY5NCwgMHgwMTdBLCAweEZGOTUsIDB4MDE3QiwgMHhGRjk2LCAweDAxN0MsDQorICAgIDB4RkY5NywgMHgwMTdELCAweEZGOTgsIDB4MDE3RSwgMHhGRjk5LCAweDAxN0YsIDB4RkY5QSwgMHgwMTgwLA0KKyAgICAweEZGOUIsIDB4MDE4MSwgMHhGRjlDLCAweDAxODIsIDB4RkY5RCwgMHgwMTgzLCAweEZGOUUsIDB4MDE4NCwNCisgICAgMHhGRjlGLCAweDAxODUsIDB4RkZFMCwgMHgwMkM5LCAweEZGRTEsIDB4MDJDQSwgMHhGRkUyLCAweDAyRUYsDQorICAgIDB4RkZFMywgMHgwMjg5LCAweEZGRTQsIDB4MUY0NSwgMHhGRkU1LCAweDAyQzcsIDB4RkZFOCwgMHgwMTQzLA0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9VbmlKSVMtVUNTMi1WXzQuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9VbmlKSVMtVUNTMi1WXzQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZjEwMDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL1VuaUpJUy1VQ1MyLVZfNC5jcHAKQEAgLTAsMCArMSw3MSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX1VuaUpJU19VQ1MyX1ZfNFsyNTEgKiAyXSA9IHsNCisgICAgMHgwMEIwLCAweDIwNEQsIDB4MjAxMCwgMHgxRUQ1LCAweDIwMTUsIDB4MUVENCwgMHgyMDE2LCAweDFFRDcsDQorICAgIDB4MjAxOCwgMHgyMDU5LCAweDIwMTksIDB4MjA1QSwgMHgyMDFDLCAweDIwNTcsIDB4MjAxRCwgMHgyMDU4LA0KKyAgICAweDIwMjUsIDB4MUVEQSwgMHgyMDI2LCAweDFFRDksIDB4MjAzMiwgMHgyMDUxLCAweDIwMzMsIDB4MjA1QiwNCisgICAgMHgyMTkwLCAweDAyRTIsIDB4MjE5MSwgMHgwMkUwLCAweDIxOTIsIDB4MDJFMywgMHgyMTkzLCAweDAyRTEsDQorICAgIDB4MjE5NSwgMHgyRkI2LCAweDIxQzQsIDB4MjA3NywgMHgyMUM1LCAweDIwNzYsIDB4MjFDNiwgMHgyMDc4LA0KKyAgICAweDIxRTYsIDB4MUY0QywgMHgyMUU3LCAweDFGNEUsIDB4MjFFOCwgMHgxRjRCLCAweDIxRTksIDB4MUY0RCwNCisgICAgMHgyMjI1LCAweDFFRDcsIDB4MjIzQywgMHgxRUQ2LCAweDIyRUYsIDB4MUVEOSwgMHgyNTAwLCAweDFEMzksDQorICAgIDB4MjUwMSwgMHgxRDNBLCAweDI1MDIsIDB4MUQzNywgMHgyNTAzLCAweDFEMzgsIDB4MjUwNCwgMHgxRDNELA0KKyAgICAweDI1MDUsIDB4MUQzRSwgMHgyNTA2LCAweDFEM0IsIDB4MjUwNywgMHgxRDNDLCAweDI1MDgsIDB4MUQ0MSwNCisgICAgMHgyNTA5LCAweDFENDIsIDB4MjUwQSwgMHgxRDNGLCAweDI1MEIsIDB4MUQ0MCwgMHgyNTBDLCAweDFENDcsDQorICAgIDB4MjUwRCwgMHgxRDQ5LCAweDI1MEUsIDB4MUQ0OCwgMHgyNTBGLCAweDFENEEsIDB4MjUxMCwgMHgxRDRGLA0KKyAgICAweDI1MTEsIDB4MUQ1MSwgMHgyNTEyLCAweDFENTAsIDB4MjUxMywgMHgxRDUyLCAweDI1MTQsIDB4MUQ0MywNCisgICAgMHgyNTE1LCAweDFENDUsIDB4MjUxNiwgMHgxRDQ0LCAweDI1MTcsIDB4MUQ0NiwgMHgyNTE4LCAweDFENEIsDQorICAgIDB4MjUxOSwgMHgxRDRELCAweDI1MUEsIDB4MUQ0QywgMHgyNTFCLCAweDFENEUsIDB4MjUxQywgMHgxRDYzLA0KKyAgICAweDI1MUQsIDB4MUQ2NywgMHgyNTFFLCAweDFENjUsIDB4MjUxRiwgMHgxRDY0LCAweDI1MjAsIDB4MUQ2NiwNCisgICAgMHgyNTIxLCAweDFENjksIDB4MjUyMiwgMHgxRDY4LCAweDI1MjMsIDB4MUQ2QSwgMHgyNTI0LCAweDFENkIsDQorICAgIDB4MjUyNSwgMHgxRDZGLCAweDI1MjYsIDB4MUQ2RCwgMHgyNTI3LCAweDFENkMsIDB4MjUyOCwgMHgxRDZFLA0KKyAgICAweDI1MjksIDB4MUQ3MSwgMHgyNTJBLCAweDFENzAsIDB4MjUyQiwgMHgxRDcyLCAweDI1MkMsIDB4MUQ1QiwNCisgICAgMHgyNTJELCAweDFENUQsIDB4MjUyRSwgMHgxRDVFLCAweDI1MkYsIDB4MUQ1RiwgMHgyNTMwLCAweDFENUMsDQorICAgIDB4MjUzMSwgMHgxRDYwLCAweDI1MzIsIDB4MUQ2MSwgMHgyNTMzLCAweDFENjIsIDB4MjUzNCwgMHgxRDUzLA0KKyAgICAweDI1MzUsIDB4MUQ1NSwgMHgyNTM2LCAweDFENTYsIDB4MjUzNywgMHgxRDU3LCAweDI1MzgsIDB4MUQ1NCwNCisgICAgMHgyNTM5LCAweDFENTgsIDB4MjUzQSwgMHgxRDU5LCAweDI1M0IsIDB4MUQ1QSwgMHgyNTNELCAweDFENzcsDQorICAgIDB4MjUzRSwgMHgxRDc4LCAweDI1M0YsIDB4MUQ3OSwgMHgyNTQwLCAweDFENzUsIDB4MjU0MSwgMHgxRDc0LA0KKyAgICAweDI1NDIsIDB4MUQ3NiwgMHgyNTQzLCAweDFEN0IsIDB4MjU0NCwgMHgxRDdELCAweDI1NDUsIDB4MUQ3QSwNCisgICAgMHgyNTQ2LCAweDFEN0MsIDB4MjU0NywgMHgxRDgxLCAweDI1NDgsIDB4MUQ4MCwgMHgyNTQ5LCAweDFEN0UsDQorICAgIDB4MjU0QSwgMHgxRDdGLCAweDI2MUMsIDB4MjAxRCwgMHgyNjFELCAweDIwMUIsIDB4MjYxRSwgMHgyMDFFLA0KKyAgICAweDI2MUYsIDB4MjAxQywgMHgyNzAyLCAweDJGOTIsIDB4MjdBMSwgMHgyMDExLCAweDMwMDEsIDB4MUVDRiwNCisgICAgMHgzMDAyLCAweDFFRDAsIDB4MzAwOCwgMHgxRUUzLCAweDMwMDksIDB4MUVFNCwgMHgzMDBBLCAweDFFRTUsDQorICAgIDB4MzAwQiwgMHgxRUU2LCAweDMwMEMsIDB4MUVFNywgMHgzMDBELCAweDFFRTgsIDB4MzAwRSwgMHgxRUU5LA0KKyAgICAweDMwMEYsIDB4MUVFQSwgMHgzMDEwLCAweDFFRUIsIDB4MzAxMSwgMHgxRUVDLCAweDMwMTMsIDB4MjA0RSwNCisgICAgMHgzMDE0LCAweDFFREQsIDB4MzAxNSwgMHgxRURFLCAweDMwMUMsIDB4MUVENiwgMHgzMDFELCAweDFGMTQsDQorICAgIDB4MzAxRiwgMHgxRjE1LCAweDMwNDEsIDB4MUVFRSwgMHgzMDQzLCAweDFFRUYsIDB4MzA0NSwgMHgxRUYwLA0KKyAgICAweDMwNDcsIDB4MUVGMSwgMHgzMDQ5LCAweDFFRjIsIDB4MzA2MywgMHgxRUYzLCAweDMwODMsIDB4MUVGNCwNCisgICAgMHgzMDg1LCAweDFFRjUsIDB4MzA4NywgMHgxRUY2LCAweDMwOEUsIDB4MUVGNywgMHgzMDlCLCAweDIwNTAsDQorICAgIDB4MzA5QywgMHgyMDRGLCAweDMwQTEsIDB4MUVGOCwgMHgzMEEzLCAweDFFRjksIDB4MzBBNSwgMHgxRUZBLA0KKyAgICAweDMwQTcsIDB4MUVGQiwgMHgzMEE5LCAweDFFRkMsIDB4MzBDMywgMHgxRUZELCAweDMwRTMsIDB4MUVGRSwNCisgICAgMHgzMEU1LCAweDFFRkYsIDB4MzBFNywgMHgxRjAwLCAweDMwRUUsIDB4MUYwMSwgMHgzMEY1LCAweDFGMDIsDQorICAgIDB4MzBGNiwgMHgxRjAzLCAweDMwRkMsIDB4MUVEMywgMHgzMzAwLCAweDIwOUUsIDB4MzMwMSwgMHgyRUI2LA0KKyAgICAweDMzMDIsIDB4MkVCNywgMHgzMzAzLCAweDIwOTIsIDB4MzMwNCwgMHgyRUI4LCAweDMzMDUsIDB4MjA4RCwNCisgICAgMHgzMzA2LCAweDJFQjksIDB4MzMwNywgMHgyRUJELCAweDMzMDgsIDB4MkVCQiwgMHgzMzA5LCAweDJFQzAsDQorICAgIDB4MzMwQSwgMHgyRUJFLCAweDMzMEIsIDB4MkVDMiwgMHgzMzBDLCAweDJFQzQsIDB4MzMwRCwgMHgxRjBFLA0KKyAgICAweDMzMEUsIDB4MkVDNSwgMHgzMzBGLCAweDJFQzYsIDB4MzMxMCwgMHgyRUM3LCAweDMzMTEsIDB4MkVDOCwNCisgICAgMHgzMzEyLCAweDJFQzksIDB4MzMxMywgMHgyRUNBLCAweDMzMTQsIDB4MUYwNSwgMHgzMzE1LCAweDIwOTQsDQorICAgIDB4MzMxNiwgMHgyMDhBLCAweDMzMTcsIDB4MkVDQywgMHgzMzE4LCAweDIwOTMsIDB4MzMxOSwgMHgyRUNFLA0KKyAgICAweDMzMUEsIDB4MkVEMCwgMHgzMzFCLCAweDJFRDEsIDB4MzMxQywgMHgyRUQyLCAweDMzMUQsIDB4MkVEMywNCisgICAgMHgzMzFFLCAweDIwQTEsIDB4MzMxRiwgMHgyRUQ0LCAweDMzMjAsIDB4MkVENSwgMHgzMzIxLCAweDJFRDYsDQorICAgIDB4MzMyMiwgMHgyMDg5LCAweDMzMjMsIDB4MjA5QywgMHgzMzI0LCAweDJFRDcsIDB4MzMyNSwgMHgyRUQ5LA0KKyAgICAweDMzMjYsIDB4MUYwRiwgMHgzMzI3LCAweDFGMDksIDB4MzMyOCwgMHgyRURDLCAweDMzMjksIDB4MkVERCwNCisgICAgMHgzMzJBLCAweDIwQTQsIDB4MzMyQiwgMHgxRjExLCAweDMzMkQsIDB4MkVERiwgMHgzMzJFLCAweDJFRTIsDQorICAgIDB4MzMyRiwgMHgyRUUzLCAweDMzMzAsIDB4MkVFNCwgMHgzMzMxLCAweDIwQTYsIDB4MzMzMiwgMHgyRUU1LA0KKyAgICAweDMzMzMsIDB4MjA4RSwgMHgzMzM0LCAweDJFRTgsIDB4MzMzNSwgMHgyRUU5LCAweDMzMzYsIDB4MUYwQiwNCisgICAgMHgzMzM3LCAweDJFRUUsIDB4MzMzOCwgMHgyRUYwLCAweDMzMzksIDB4MjA5NywgMHgzMzNBLCAweDJFRjEsDQorICAgIDB4MzMzQiwgMHgyMDlELCAweDMzM0MsIDB4MkVFQSwgMHgzMzNELCAweDJFRjIsIDB4MzMzRSwgMHgyRUY0LA0KKyAgICAweDMzM0YsIDB4MkVGNSwgMHgzMzQwLCAweDJFRjYsIDB4MzM0MSwgMHgyRUYzLCAweDMzNDIsIDB4MjA5QiwNCisgICAgMHgzMzQzLCAweDJFRjcsIDB4MzM0NCwgMHgyRUY4LCAweDMzNDUsIDB4MkVGOSwgMHgzMzQ2LCAweDJFRkEsDQorICAgIDB4MzM0NywgMHgyMEE1LCAweDMzNDgsIDB4MkVGQiwgMHgzMzQ5LCAweDFGMDQsIDB4MzM0QSwgMHgxRjEyLA0KKyAgICAweDMzNEIsIDB4MkVGQywgMHgzMzRDLCAweDJFRkQsIDB4MzM0RCwgMHgxRjA3LCAweDMzNEUsIDB4MjA5MSwNCisgICAgMHgzMzRGLCAweDJFRkUsIDB4MzM1MCwgMHgyRUZGLCAweDMzNTEsIDB4MUYwQywgMHgzMzUyLCAweDJGMDIsDQorICAgIDB4MzM1MywgMHgyRjA2LCAweDMzNTQsIDB4MkYwMywgMHgzMzU1LCAweDJGMDcsIDB4MzM1NiwgMHgyRjA4LA0KKyAgICAweDMzNTcsIDB4MjA5OCwgMHgzMzdGLCAweDIwODQsIDB4RkYwOCwgMHgxRURCLCAweEZGMDksIDB4MUVEQywNCisgICAgMHhGRjBDLCAweDIwNEMsIDB4RkYwRSwgMHgyMDUyLCAweEZGMUQsIDB4MUVFRCwgMHhGRjNCLCAweDFFREYsDQorICAgIDB4RkYzRCwgMHgxRUUwLCAweEZGM0YsIDB4MUVEMiwgMHhGRjVCLCAweDFFRTEsIDB4RkY1QywgMHgxRUQ4LA0KKyAgICAweEZGNUQsIDB4MUVFMiwgMHhGRjVFLCAweDFFRDYsIDB4RkZFMywgMHgxRUQxLA0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9VbmlKSVMtVVRGMTYtSF81LmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvVW5pSklTLVVURjE2LUhfNS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNjMjMxMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvVW5pSklTLVVURjE2LUhfNS5jcHAKQEAgLTAsMCArMSwzNDQ5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfVW5pSklTX1VURjE2X0hfNVsxMzI0MSAqIDJdID0gew0KKyAgICAweDAwMjAsIDB4MDAwMSwgMHgwMDIxLCAweDAwMDIsIDB4MDAyMiwgMHgwMDAzLCAweDAwMjMsIDB4MDAwNCwNCisgICAgMHgwMDI0LCAweDAwMDUsIDB4MDAyNSwgMHgwMDA2LCAweDAwMjYsIDB4MDAwNywgMHgwMDI3LCAweDAwMDgsDQorICAgIDB4MDAyOCwgMHgwMDA5LCAweDAwMjksIDB4MDAwQSwgMHgwMDJBLCAweDAwMEIsIDB4MDAyQiwgMHgwMDBDLA0KKyAgICAweDAwMkMsIDB4MDAwRCwgMHgwMDJELCAweDAwMEUsIDB4MDAyRSwgMHgwMDBGLCAweDAwMkYsIDB4MDAxMCwNCisgICAgMHgwMDMwLCAweDAwMTEsIDB4MDAzMSwgMHgwMDEyLCAweDAwMzIsIDB4MDAxMywgMHgwMDMzLCAweDAwMTQsDQorICAgIDB4MDAzNCwgMHgwMDE1LCAweDAwMzUsIDB4MDAxNiwgMHgwMDM2LCAweDAwMTcsIDB4MDAzNywgMHgwMDE4LA0KKyAgICAweDAwMzgsIDB4MDAxOSwgMHgwMDM5LCAweDAwMUEsIDB4MDAzQSwgMHgwMDFCLCAweDAwM0IsIDB4MDAxQywNCisgICAgMHgwMDNDLCAweDAwMUQsIDB4MDAzRCwgMHgwMDFFLCAweDAwM0UsIDB4MDAxRiwgMHgwMDNGLCAweDAwMjAsDQorICAgIDB4MDA0MCwgMHgwMDIxLCAweDAwNDEsIDB4MDAyMiwgMHgwMDQyLCAweDAwMjMsIDB4MDA0MywgMHgwMDI0LA0KKyAgICAweDAwNDQsIDB4MDAyNSwgMHgwMDQ1LCAweDAwMjYsIDB4MDA0NiwgMHgwMDI3LCAweDAwNDcsIDB4MDAyOCwNCisgICAgMHgwMDQ4LCAweDAwMjksIDB4MDA0OSwgMHgwMDJBLCAweDAwNEEsIDB4MDAyQiwgMHgwMDRCLCAweDAwMkMsDQorICAgIDB4MDA0QywgMHgwMDJELCAweDAwNEQsIDB4MDAyRSwgMHgwMDRFLCAweDAwMkYsIDB4MDA0RiwgMHgwMDMwLA0KKyAgICAweDAwNTAsIDB4MDAzMSwgMHgwMDUxLCAweDAwMzIsIDB4MDA1MiwgMHgwMDMzLCAweDAwNTMsIDB4MDAzNCwNCisgICAgMHgwMDU0LCAweDAwMzUsIDB4MDA1NSwgMHgwMDM2LCAweDAwNTYsIDB4MDAzNywgMHgwMDU3LCAweDAwMzgsDQorICAgIDB4MDA1OCwgMHgwMDM5LCAweDAwNTksIDB4MDAzQSwgMHgwMDVBLCAweDAwM0IsIDB4MDA1QiwgMHgwMDNDLA0KKyAgICAweDAwNUMsIDB4MDA2MSwgMHgwMDVELCAweDAwM0UsIDB4MDA1RSwgMHgwMDNGLCAweDAwNUYsIDB4MDA0MCwNCisgICAgMHgwMDYwLCAweDAwNDEsIDB4MDA2MSwgMHgwMDQyLCAweDAwNjIsIDB4MDA0MywgMHgwMDYzLCAweDAwNDQsDQorICAgIDB4MDA2NCwgMHgwMDQ1LCAweDAwNjUsIDB4MDA0NiwgMHgwMDY2LCAweDAwNDcsIDB4MDA2NywgMHgwMDQ4LA0KKyAgICAweDAwNjgsIDB4MDA0OSwgMHgwMDY5LCAweDAwNEEsIDB4MDA2QSwgMHgwMDRCLCAweDAwNkIsIDB4MDA0QywNCisgICAgMHgwMDZDLCAweDAwNEQsIDB4MDA2RCwgMHgwMDRFLCAweDAwNkUsIDB4MDA0RiwgMHgwMDZGLCAweDAwNTAsDQorICAgIDB4MDA3MCwgMHgwMDUxLCAweDAwNzEsIDB4MDA1MiwgMHgwMDcyLCAweDAwNTMsIDB4MDA3MywgMHgwMDU0LA0KKyAgICAweDAwNzQsIDB4MDA1NSwgMHgwMDc1LCAweDAwNTYsIDB4MDA3NiwgMHgwMDU3LCAweDAwNzcsIDB4MDA1OCwNCisgICAgMHgwMDc4LCAweDAwNTksIDB4MDA3OSwgMHgwMDVBLCAweDAwN0EsIDB4MDA1QiwgMHgwMDdCLCAweDAwNUMsDQorICAgIDB4MDA3QywgMHgwMDYzLCAweDAwN0QsIDB4MDA1RSwgMHgwMDdFLCAweDAwNjQsIDB4MDBBMCwgMHgwMDAxLA0KKyAgICAweDAwQTEsIDB4MDA2NSwgMHgwMEEyLCAweDAwNjYsIDB4MDBBMywgMHgwMDY3LCAweDAwQTQsIDB4MDA2QiwNCisgICAgMHgwMEE1LCAweDAwM0QsIDB4MDBBNiwgMHgwMDVELCAweDAwQTcsIDB4MDJEMCwgMHgwMEE4LCAweDAyODcsDQorICAgIDB4MDBBOSwgMHgwMDk4LCAweDAwQUEsIDB4MDA4QywgMHgwMEFCLCAweDAwNkQsIDB4MDBBQywgMHgwMDk5LA0KKyAgICAweDAwQUQsIDB4MDA5NywgMHgwMEFFLCAweDAwOUEsIDB4MDBBRiwgMHgwMDgxLCAweDAwQjAsIDB4MDJDMywNCisgICAgMHgwMEIxLCAweDAyQjYsIDB4MDBCMiwgMHgwMDlELCAweDAwQjMsIDB4MDA5RSwgMHgwMEI0LCAweDAyODUsDQorICAgIDB4MDBCNSwgMHgwMDlGLCAweDAwQjYsIDB4MDMwQSwgMHgwMEI3LCAweDAwNzUsIDB4MDBCOCwgMHgwMDg2LA0KKyAgICAweDAwQjksIDB4MDBBMCwgMHgwMEJBLCAweDAwOTAsIDB4MDBCQiwgMHgwMDdCLCAweDAwQkMsIDB4MDBBMSwNCisgICAgMHgwMEJELCAweDAwQTIsIDB4MDBCRSwgMHgwMEEzLCAweDAwQkYsIDB4MDA3RSwgMHgwMEMwLCAweDAwQTQsDQorICAgIDB4MDBDMSwgMHgwMEE1LCAweDAwQzIsIDB4MDBBNiwgMHgwMEMzLCAweDAwQTcsIDB4MDBDNCwgMHgwMEE4LA0KKyAgICAweDAwQzUsIDB4MDBBOSwgMHgwMEM2LCAweDAwOEIsIDB4MDBDNywgMHgwMEFBLCAweDAwQzgsIDB4MDBBQiwNCisgICAgMHgwMEM5LCAweDAwQUMsIDB4MDBDQSwgMHgwMEFELCAweDAwQ0IsIDB4MDBBRSwgMHgwMENDLCAweDAwQUYsDQorICAgIDB4MDBDRCwgMHgwMEIwLCAweDAwQ0UsIDB4MDBCMSwgMHgwMENGLCAweDAwQjIsIDB4MDBEMCwgMHgwMEIzLA0KKyAgICAweDAwRDEsIDB4MDBCNCwgMHgwMEQyLCAweDAwQjUsIDB4MDBEMywgMHgwMEI2LCAweDAwRDQsIDB4MDBCNywNCisgICAgMHgwMEQ1LCAweDAwQjgsIDB4MDBENiwgMHgwMEI5LCAweDAwRDcsIDB4MDJCNywgMHgwMEQ4LCAweDAwOEUsDQorICAgIDB4MDBEOSwgMHgwMEJCLCAweDAwREEsIDB4MDBCQywgMHgwMERCLCAweDAwQkQsIDB4MDBEQywgMHgwMEJFLA0KKyAgICAweDAwREQsIDB4MDBCRiwgMHgwMERFLCAweDAwQzAsIDB4MDBERiwgMHgwMDk2LCAweDAwRTAsIDB4MDBDMSwNCisgICAgMHgwMEUxLCAweDAwQzIsIDB4MDBFMiwgMHgwMEMzLCAweDAwRTMsIDB4MDBDNCwgMHgwMEU0LCAweDAwQzUsDQorICAgIDB4MDBFNSwgMHgwMEM2LCAweDAwRTYsIDB4MDA5MSwgMHgwMEU3LCAweDAwQzcsIDB4MDBFOCwgMHgwMEM4LA0KKyAgICAweDAwRTksIDB4MDBDOSwgMHgwMEVBLCAweDAwQ0EsIDB4MDBFQiwgMHgwMENCLCAweDAwRUMsIDB4MDBDQywNCisgICAgMHgwMEVELCAweDAwQ0QsIDB4MDBFRSwgMHgwMENFLCAweDAwRUYsIDB4MDBDRiwgMHgwMEYwLCAweDAwRDAsDQorICAgIDB4MDBGMSwgMHgwMEQxLCAweDAwRjIsIDB4MDBEMiwgMHgwMEYzLCAweDAwRDMsIDB4MDBGNCwgMHgwMEQ0LA0KKyAgICAweDAwRjUsIDB4MDBENSwgMHgwMEY2LCAweDAwRDYsIDB4MDBGNywgMHgwMkI4LCAweDAwRjgsIDB4MDA5NCwNCisgICAgMHgwMEY5LCAweDAwRDgsIDB4MDBGQSwgMHgwMEQ5LCAweDAwRkIsIDB4MDBEQSwgMHgwMEZDLCAweDAwREIsDQorICAgIDB4MDBGRCwgMHgwMERDLCAweDAwRkUsIDB4MDBERCwgMHgwMEZGLCAweDAwREUsIDB4MDEwMCwgMHgyNDk2LA0KKyAgICAweDAxMDEsIDB4MjQ5MSwgMHgwMTAyLCAweDNEOEMsIDB4MDEwMywgMHgzRDk5LCAweDAxMDQsIDB4M0Q3OSwNCisgICAgMHgwMTA1LCAweDNEODEsIDB4MDEwNiwgMHgzRDhFLCAweDAxMDcsIDB4M0Q5QiwgMHgwMTA4LCAweDNEQTcsDQorICAgIDB4MDEwOSwgMHgzREFELCAweDAxMEMsIDB4M0Q4RiwgMHgwMTBELCAweDNEOUMsIDB4MDEwRSwgMHgzRDkxLA0KKyAgICAweDAxMEYsIDB4M0Q5RSwgMHgwMTExLCAweDNEOUYsIDB4MDExMiwgMHgyNDk5LCAweDAxMTMsIDB4MjQ5NCwNCisgICAgMHgwMTE4LCAweDNEOTAsIDB4MDExOSwgMHgzRDlELCAweDAxMUEsIDB4MjRCMywgMHgwMTFCLCAweDI0QkYsDQorICAgIDB4MDExQywgMHgzREE4LCAweDAxMUQsIDB4M0RBRSwgMHgwMTI0LCAweDNEQTksIDB4MDEyNSwgMHgzREFGLA0KKyAgICAweDAxMjcsIDB4M0RDOCwgMHgwMTI4LCAweDI0QjgsIDB4MDEyOSwgMHgyNEM0LCAweDAxMkEsIDB4MjQ5NywNCisgICAgMHgwMTJCLCAweDI0OTIsIDB4MDEzMSwgMHgwMDkyLCAweDAxMzQsIDB4M0RBQSwgMHgwMTM1LCAweDNEQjAsDQorICAgIDB4MDEzOSwgMHgzRDhELCAweDAxM0EsIDB4M0Q5QSwgMHgwMTNELCAweDNEN0IsIDB4MDEzRSwgMHgzRDgzLA0KKyAgICAweDAxNDEsIDB4MDA4RCwgMHgwMTQyLCAweDAwOTMsIDB4MDE0MywgMHgzRDkyLCAweDAxNDQsIDB4M0RBMCwNCisgICAgMHgwMTQ3LCAweDNEOTMsIDB4MDE0OCwgMHgzREExLCAweDAxNEIsIDB4MjREQywgMHgwMTRDLCAweDI0OUEsDQorICAgIDB4MDE0RCwgMHgyNDk1LCAweDAxNTAsIDB4M0Q5NCwgMHgwMTUxLCAweDNEQTIsIDB4MDE1MiwgMHgwMDhGLA0KKyAgICAweDAxNTMsIDB4MDA5NSwgMHgwMTU0LCAweDNEOEIsIDB4MDE1NSwgMHgzRDk4LCAweDAxNTgsIDB4M0Q5NSwNCisgICAgMHgwMTU5LCAweDNEQTMsIDB4MDE1QSwgMHgzRDdDLCAweDAxNUIsIDB4M0Q4NCwgMHgwMTVDLCAweDNEQUIsDQorICAgIDB4MDE1RCwgMHgzREIxLCAweDAxNUUsIDB4M0Q3RCwgMHgwMTVGLCAweDNEODYsIDB4MDE2MCwgMHgwMERGLA0KKyAgICAweDAxNjEsIDB4MDBFMywgMHgwMTYyLCAweDNEOTcsIDB4MDE2MywgMHgzREE1LCAweDAxNjQsIDB4M0Q3RSwNCisgICAgMHgwMTY1LCAweDNEODcsIDB4MDE2OCwgMHgyNEJELCAweDAxNjksIDB4MjRDOSwgMHgwMTZBLCAweDI0OTgsDQorICAgIDB4MDE2QiwgMHgyNDkzLCAweDAxNkMsIDB4M0RBQywgMHgwMTZELCAweDNEQjIsIDB4MDE2RSwgMHgyNEJDLA0KKyAgICAweDAxNkYsIDB4MjRDOCwgMHgwMTcwLCAweDNEOTYsIDB4MDE3MSwgMHgzREE0LCAweDAxNzgsIDB4MDBFMCwNCisgICAgMHgwMTc5LCAweDNEN0YsIDB4MDE3QSwgMHgzRDg4LCAweDAxN0IsIDB4M0Q4MCwgMHgwMTdDLCAweDNEOEEsDQorICAgIDB4MDE3RCwgMHgwMEUxLCAweDAxN0UsIDB4MDBFNSwgMHgwMTkyLCAweDAwNjksIDB4MDE5MywgMHgzREQyLA0KKyAgICAweDAxQzIsIDB4M0RDRCwgMHgwMUNELCAweDI0QjIsIDB4MDFDRSwgMHgyNEJFLCAweDAxQ0YsIDB4MjRCNiwNCisgICAgMHgwMUQwLCAweDI0QzIsIDB4MDFEMSwgMHgyNEI5LCAweDAxRDIsIDB4MjRDNSwgMHgwMUQzLCAweDI0QkIsDQorICAgIDB4MDFENCwgMHgyNEM3LCAweDAxRDYsIDB4M0Q3NSwgMHgwMUQ4LCAweDNENzYsIDB4MDFEQSwgMHgzRDc3LA0KKyAgICAweDAxREMsIDB4M0Q3OCwgMHgwMUY4LCAweDNENzMsIDB4MDFGOSwgMHgzRDc0LCAweDAxRkQsIDB4MjRDRCwNCisgICAgMHgwMjUwLCAweDNERDgsIDB4MDI1MSwgMHgyNENBLCAweDAyNTIsIDB4M0REQywgMHgwMjUzLCAweDNEQ0UsDQorICAgIDB4MDI1NCwgMHgyNENGLCAweDAyNTUsIDB4M0RFMSwgMHgwMjU2LCAweDNEQkEsIDB4MDI1NywgMHgzRENGLA0KKyAgICAweDAyNTgsIDB4M0RENSwgMHgwMjU5LCAweDI0RDIsIDB4MDI1QSwgMHgyNEQ1LCAweDAyNUIsIDB4MjREOCwNCisgICAgMHgwMjVDLCAweDNERDYsIDB4MDI1RSwgMHgzREQ3LCAweDAyNUYsIDB4M0RDMSwgMHgwMjYwLCAweDNERDEsDQorICAgIDB4MDI2MSwgMHgzREM1LCAweDAyNjIsIDB4M0UwQiwgMHgwMjYzLCAweDNFMEMsIDB4MDI2NCwgMHgzRERCLA0KKyAgICAweDAyNjUsIDB4M0RERSwgMHgwMjY2LCAweDNEQ0IsIDB4MDI2NywgMHgzREU0LCAweDAyNjgsIDB4M0REMywNCisgICAgMHgwMjZBLCAweDNFMEQsIDB4MDI2QywgMHgzREI2LCAweDAyNkQsIDB4M0RDMCwgMHgwMjZFLCAweDNEQjcsDQorICAgIDB4MDI2RiwgMHgzREQ5LCAweDAyNzAsIDB4M0RDNiwgMHgwMjcxLCAweDNEQjMsIDB4MDI3MiwgMHgzREMyLA0KKyAgICAweDAyNzMsIDB4M0RCQiwgMHgwMjc0LCAweDNFMEUsIDB4MDI3NSwgMHgyNERELCAweDAyNzYsIDB4M0UwRiwNCisgICAgMHgwMjc4LCAweDNFMTAsIDB4MDI3OSwgMHgzREI4LCAweDAyN0EsIDB4M0RFMywgMHgwMjdCLCAweDNEQkYsDQorICAgIDB4MDI3RCwgMHgzREJDLCAweDAyN0UsIDB4M0RCNSwgMHgwMjgwLCAweDNFMTEsIDB4MDI4MSwgMHgzREM3LA0KKyAgICAweDAyODIsIDB4M0RCRCwgMHgwMjgzLCAweDI0RTIsIDB4MDI4NCwgMHgzREQwLCAweDAyODgsIDB4M0RCOSwNCisgICAgMHgwMjg5LCAweDNERDQsIDB4MDI4QSwgMHgzRERBLCAweDAyOEIsIDB4M0RCNCwgMHgwMjhDLCAweDI0REUsDQorICAgIDB4MDI4RCwgMHgzRERELCAweDAyOEUsIDB4M0RDNCwgMHgwMjhGLCAweDNFMTIsIDB4MDI5MCwgMHgzREJFLA0KKyAgICAweDAyOTEsIDB4M0RFMiwgMHgwMjkyLCAweDI0RTEsIDB4MDI5NCwgMHgzRENBLCAweDAyOTUsIDB4M0RDOSwNCisgICAgMHgwMjk4LCAweDNEQ0MsIDB4MDI5OSwgMHgzRTEzLCAweDAyOUMsIDB4M0UxNCwgMHgwMjlELCAweDNEQzMsDQorICAgIDB4MDI5RiwgMHgzRTE1LCAweDAyQTEsIDB4M0RFMCwgMHgwMkEyLCAweDNEREYsIDB4MDJCMCwgMHgzRTE2LA0KKyAgICAweDAyQjIsIDB4M0UxNywgMHgwMkI3LCAweDNFMTgsIDB4MDJCQiwgMHgwMDYyLCAweDAyQkMsIDB4MDA2MCwNCisgICAgMHgwMkMxLCAweDNFMTksIDB4MDJDNiwgMHgwMDgwLCAweDAyQzcsIDB4M0Q4NSwgMHgwMkM4LCAweDNERTYsDQorICAgIDB4MDJDQywgMHgzREU3LCAweDAyRDAsIDB4MjRFMywgMHgwMkQxLCAweDNERTgsIDB4MDJEOCwgMHgzRDdBLA0KKyAgICAweDAyRDksIDB4M0RBNiwgMHgwMkRBLCAweDAwODUsIDB4MDJEQiwgMHgzRDgyLCAweDAyREMsIDB4MDA1RiwNCisgICAgMHgwMkRELCAweDNEODksIDB4MDJERSwgMHgzREZCLCAweDAyRTAsIDB4M0UxQSwgMHgwMkUxLCAweDNFMUIsDQorICAgIDB4MDJFNSwgMHgzREVCLCAweDAyRTYsIDB4M0RFQywgMHgwMkU3LCAweDNERUQsIDB4MDJFOCwgMHgzREVFLA0KKyAgICAweDAyRTksIDB4M0RFRiwgMHgwMzAwLCAweDAwNDEsIDB4MDMwMSwgMHgwMDdGLCAweDAzMDIsIDB4MDA4MCwNCisgICAgMHgwMzAzLCAweDAwNUYsIDB4MDMwNCwgMHgwMDgxLCAweDAzMDUsIDB4MDBFMiwgMHgwMzA2LCAweDAwODIsDQorICAgIDB4MDMwNywgMHgwMDgzLCAweDAzMDgsIDB4MDA4NCwgMHgwMzBBLCAweDAwODUsIDB4MDMwQiwgMHgwMDg3LA0KKyAgICAweDAzMEMsIDB4MDA4OSwgMHgwMzBGLCAweDNERUEsIDB4MDMxOCwgMHgzRTAyLCAweDAzMTksIDB4M0UwMywNCisgICAgMHgwMzFBLCAweDNFMDcsIDB4MDMxQywgMHgzREY1LCAweDAzMUQsIDB4M0UwMCwgMHgwMzFFLCAweDNFMDEsDQorICAgIDB4MDMxRiwgMHgzREY2LCAweDAzMjAsIDB4M0RGNywgMHgwMzI0LCAweDNERkMsIDB4MDMyNSwgMHgzREYyLA0KKyAgICAweDAzMjcsIDB4MDA4NiwgMHgwMzI4LCAweDAwODgsIDB4MDMyOSwgMHgzREY5LCAweDAzMkEsIDB4M0UwNCwNCisgICAgMHgwMzJDLCAweDNERjMsIDB4MDMyRiwgMHgzREZBLCAweDAzMzAsIDB4M0RGRCwgMHgwMzMyLCAweDAwNDAsDQorICAgIDB4MDMzNCwgMHgzREZGLCAweDAzMzYsIDB4MDA4QSwgMHgwMzM5LCAweDNERjQsIDB4MDMzQSwgMHgzRTA1LA0KKyAgICAweDAzM0IsIDB4M0UwNiwgMHgwMzNDLCAweDNERkUsIDB4MDMzRCwgMHgzREY4LCAweDAzNjEsIDB4M0RFNSwNCisgICAgMHgwMzkxLCAweDAzRjMsIDB4MDM5MiwgMHgwM0Y0LCAweDAzOTMsIDB4MDNGNSwgMHgwMzk0LCAweDAzRjYsDQorICAgIDB4MDM5NSwgMHgwM0Y3LCAweDAzOTYsIDB4MDNGOCwgMHgwMzk3LCAweDAzRjksIDB4MDM5OCwgMHgwM0ZBLA0KKyAgICAweDAzOTksIDB4MDNGQiwgMHgwMzlBLCAweDAzRkMsIDB4MDM5QiwgMHgwM0ZELCAweDAzOUMsIDB4MDNGRSwNCisgICAgMHgwMzlELCAweDAzRkYsIDB4MDM5RSwgMHgwNDAwLCAweDAzOUYsIDB4MDQwMSwgMHgwM0EwLCAweDA0MDIsDQorICAgIDB4MDNBMSwgMHgwNDAzLCAweDAzQTMsIDB4MDQwNCwgMHgwM0E0LCAweDA0MDUsIDB4MDNBNSwgMHgwNDA2LA0KKyAgICAweDAzQTYsIDB4MDQwNywgMHgwM0E3LCAweDA0MDgsIDB4MDNBOCwgMHgwNDA5LCAweDAzQTksIDB4MDQwQSwNCisgICAgMHgwM0IxLCAweDA0MEIsIDB4MDNCMiwgMHgwNDBDLCAweDAzQjMsIDB4MDQwRCwgMHgwM0I0LCAweDA0MEUsDQorICAgIDB4MDNCNSwgMHgwNDBGLCAweDAzQjYsIDB4MDQxMCwgMHgwM0I3LCAweDA0MTEsIDB4MDNCOCwgMHgwNDEyLA0KKyAgICAweDAzQjksIDB4MDQxMywgMHgwM0JBLCAweDA0MTQsIDB4MDNCQiwgMHgwNDE1LCAweDAzQkMsIDB4MDQxNiwNCisgICAgMHgwM0JELCAweDA0MTcsIDB4MDNCRSwgMHgwNDE4LCAweDAzQkYsIDB4MDQxOSwgMHgwM0MwLCAweDA0MUEsDQorICAgIDB4MDNDMSwgMHgwNDFCLCAweDAzQzIsIDB4M0Y1RSwgMHgwM0MzLCAweDA0MUMsIDB4MDNDNCwgMHgwNDFELA0KKyAgICAweDAzQzUsIDB4MDQxRSwgMHgwM0M2LCAweDA0MUYsIDB4MDNDNywgMHgwNDIwLCAweDAzQzgsIDB4MDQyMSwNCisgICAgMHgwM0M5LCAweDA0MjIsIDB4MDNEMCwgMHgyRjNBLCAweDAzRDEsIDB4MkY0MCwgMHgwM0Q1LCAweDJGM0UsDQorICAgIDB4MDNEQiwgMHgyRjNGLCAweDA0MDEsIDB4MDQyOSwgMHgwNDEwLCAweDA0MjMsIDB4MDQxMSwgMHgwNDI0LA0KKyAgICAweDA0MTIsIDB4MDQyNSwgMHgwNDEzLCAweDA0MjYsIDB4MDQxNCwgMHgwNDI3LCAweDA0MTUsIDB4MDQyOCwNCisgICAgMHgwNDE2LCAweDA0MkEsIDB4MDQxNywgMHgwNDJCLCAweDA0MTgsIDB4MDQyQywgMHgwNDE5LCAweDA0MkQsDQorICAgIDB4MDQxQSwgMHgwNDJFLCAweDA0MUIsIDB4MDQyRiwgMHgwNDFDLCAweDA0MzAsIDB4MDQxRCwgMHgwNDMxLA0KKyAgICAweDA0MUUsIDB4MDQzMiwgMHgwNDFGLCAweDA0MzMsIDB4MDQyMCwgMHgwNDM0LCAweDA0MjEsIDB4MDQzNSwNCisgICAgMHgwNDIyLCAweDA0MzYsIDB4MDQyMywgMHgwNDM3LCAweDA0MjQsIDB4MDQzOCwgMHgwNDI1LCAweDA0MzksDQorICAgIDB4MDQyNiwgMHgwNDNBLCAweDA0MjcsIDB4MDQzQiwgMHgwNDI4LCAweDA0M0MsIDB4MDQyOSwgMHgwNDNELA0KKyAgICAweDA0MkEsIDB4MDQzRSwgMHgwNDJCLCAweDA0M0YsIDB4MDQyQywgMHgwNDQwLCAweDA0MkQsIDB4MDQ0MSwNCisgICAgMHgwNDJFLCAweDA0NDIsIDB4MDQyRiwgMHgwNDQzLCAweDA0MzAsIDB4MDQ0NCwgMHgwNDMxLCAweDA0NDUsDQorICAgIDB4MDQzMiwgMHgwNDQ2LCAweDA0MzMsIDB4MDQ0NywgMHgwNDM0LCAweDA0NDgsIDB4MDQzNSwgMHgwNDQ5LA0KKyAgICAweDA0MzYsIDB4MDQ0QiwgMHgwNDM3LCAweDA0NEMsIDB4MDQzOCwgMHgwNDRELCAweDA0MzksIDB4MDQ0RSwNCisgICAgMHgwNDNBLCAweDA0NEYsIDB4MDQzQiwgMHgwNDUwLCAweDA0M0MsIDB4MDQ1MSwgMHgwNDNELCAweDA0NTIsDQorICAgIDB4MDQzRSwgMHgwNDUzLCAweDA0M0YsIDB4MDQ1NCwgMHgwNDQwLCAweDA0NTUsIDB4MDQ0MSwgMHgwNDU2LA0KKyAgICAweDA0NDIsIDB4MDQ1NywgMHgwNDQzLCAweDA0NTgsIDB4MDQ0NCwgMHgwNDU5LCAweDA0NDUsIDB4MDQ1QSwNCisgICAgMHgwNDQ2LCAweDA0NUIsIDB4MDQ0NywgMHgwNDVDLCAweDA0NDgsIDB4MDQ1RCwgMHgwNDQ5LCAweDA0NUUsDQorICAgIDB4MDQ0QSwgMHgwNDVGLCAweDA0NEIsIDB4MDQ2MCwgMHgwNDRDLCAweDA0NjEsIDB4MDQ0RCwgMHgwNDYyLA0KKyAgICAweDA0NEUsIDB4MDQ2MywgMHgwNDRGLCAweDA0NjQsIDB4MDQ1MSwgMHgwNDRBLCAweDFFM0UsIDB4M0Q3MSwNCisgICAgMHgxRTNGLCAweDNENzIsIDB4MUVCQywgMHgyNEI1LCAweDFFQkQsIDB4MjRDMSwgMHgxRjcwLCAweDI0Q0MsDQorICAgIDB4MUY3MSwgMHgyNENCLCAweDFGNzIsIDB4MjREQSwgMHgxRjczLCAweDI0RDksIDB4MjAwMiwgMHgwMEU3LA0KKyAgICAweDIwMDMsIDB4MDI3OSwgMHgyMDEwLCAweDAyOTYsIDB4MjAxMSwgMHgwMDBFLCAweDIwMTIsIDB4MDA3MiwNCisgICAgMHgyMDEzLCAweDAwNzIsIDB4MjAxNCwgMHgwMDhBLCAweDIwMTUsIDB4MDI5NSwgMHgyMDE2LCAweDAyOUEsDQorICAgIDB4MjAxOCwgMHgwMDYyLCAweDIwMTksIDB4MDA2MCwgMHgyMDFBLCAweDAwNzgsIDB4MjAxQywgMHgwMDZDLA0KKyAgICAweDIwMUQsIDB4MDA3QSwgMHgyMDFFLCAweDAwNzksIDB4MjAyMCwgMHgwMzA4LCAweDIwMjEsIDB4MDMwOSwNCisgICAgMHgyMDIyLCAweDAwNzcsIDB4MjAyNSwgMHgwMjlELCAweDIwMjYsIDB4MDI5QywgMHgyMDMwLCAweDAzMDQsDQorICAgIDB4MjAzMiwgMHgwMkM0LCAweDIwMzMsIDB4MDJDNSwgMHgyMDM5LCAweDAwNkUsIDB4MjAzQSwgMHgwMDZGLA0KKyAgICAweDIwM0IsIDB4MDJERSwgMHgyMDNDLCAweDJGNEYsIDB4MjAzRSwgMHgwMEUyLCAweDIwM0YsIDB4M0RFOSwNCisgICAgMHgyMDQyLCAweDNGOUEsIDB4MjA0NCwgMHgwMDY4LCAweDIwNDcsIDB4M0Y5NiwgMHgyMDQ4LCAweDNGOTcsDQorICAgIDB4MjA0OSwgMHgyRjUwLCAweDIwNTEsIDB4M0Y5OSwgMHgyMDcwLCAweDI0QTEsIDB4MjA3NCwgMHgyNEEyLA0KKyAgICAweDIwNzUsIDB4MjRBMywgMHgyMDc2LCAweDI0QTQsIDB4MjA3NywgMHgyNEE1LCAweDIwNzgsIDB4MjRBNiwNCisgICAgMHgyMDc5LCAweDI0QTcsIDB4MjA4MCwgMHgyNEE4LCAweDIwODEsIDB4MjRBOSwgMHgyMDgyLCAweDI0QUEsDQorICAgIDB4MjA4MywgMHgyNEFCLCAweDIwODQsIDB4MjRBQywgMHgyMDg1LCAweDI0QUQsIDB4MjA4NiwgMHgyNEFFLA0KKyAgICAweDIwODcsIDB4MjRBRiwgMHgyMDg4LCAweDI0QjAsIDB4MjA4OSwgMHgyNEIxLCAweDIwQUMsIDB4MjQ4QSwNCisgICAgMHgyMERELCAweDNGQzgsIDB4MjBERSwgMHgyQjFCLCAweDIxMDAsIDB4MkU0RiwgMHgyMTAzLCAweDAyQzYsDQorICAgIDB4MjEwNSwgMHgyRTUzLCAweDIxMDksIDB4MjA3MSwgMHgyMTBBLCAweDIwNzAsIDB4MjEwRiwgMHgyRjNDLA0KKyAgICAweDIxMTMsIDB4MUY1OSwgMHgyMTE2LCAweDFEQkEsIDB4MjEyMSwgMHgxRjc3LCAweDIxMjIsIDB4MDBFNCwNCisgICAgMHgyMTI2LCAweDI0OEIsIDB4MjEyNywgMHgzQzlCLCAweDIxMkIsIDB4MDMwMywgMHgyMTM1LCAweDJGMzksDQorICAgIDB4MjEzQiwgMHgyMDczLCAweDIxNTMsIDB4MjQ5RiwgMHgyMTU0LCAweDI0QTAsIDB4MjE1NSwgMHgzRDZGLA0KKyAgICAweDIxNTYsIDB4MjYzOSwgMHgyMTU3LCAweDI2M0EsIDB4MjE1OCwgMHgyNjNCLCAweDIxNTksIDB4MjYzQywNCisgICAgMHgyMTVBLCAweDI2M0QsIDB4MjE1QiwgMHgyNDlCLCAweDIxNUMsIDB4MjQ5QywgMHgyMTVELCAweDI0OUQsDQorICAgIDB4MjE1RSwgMHgyNDlFLCAweDIxNjAsIDB4MUQ5NywgMHgyMTYxLCAweDFEOTgsIDB4MjE2MiwgMHgxRDk5LA0KKyAgICAweDIxNjMsIDB4MUQ5QSwgMHgyMTY0LCAweDFEOUIsIDB4MjE2NSwgMHgxRDlDLCAweDIxNjYsIDB4MUQ5RCwNCisgICAgMHgyMTY3LCAweDFEOUUsIDB4MjE2OCwgMHgxRDlGLCAweDIxNjksIDB4MURBMCwgMHgyMTZBLCAweDIwMjEsDQorICAgIDB4MjE2QiwgMHgyMDIyLCAweDIxNzAsIDB4MUY5QywgMHgyMTcxLCAweDFGOUQsIDB4MjE3MiwgMHgxRjlFLA0KKyAgICAweDIxNzMsIDB4MUY5RiwgMHgyMTc0LCAweDFGQTAsIDB4MjE3NSwgMHgxRkExLCAweDIxNzYsIDB4MUZBMiwNCisgICAgMHgyMTc3LCAweDFGQTMsIDB4MjE3OCwgMHgxRkE0LCAweDIxNzksIDB4MUZBNSwgMHgyMTdBLCAweDIwNkEsDQorICAgIDB4MjE3QiwgMHgyMDZCLCAweDIxN0YsIDB4MjA2RiwgMHgyMTkwLCAweDAyRTEsIDB4MjE5MSwgMHgwMkUyLA0KKyAgICAweDIxOTIsIDB4MDJFMCwgMHgyMTkzLCAweDAyRTMsIDB4MjE5NCwgMHgyRkE5LCAweDIxOTYsIDB4MkZBQywNCisgICAgMHgyMTk3LCAweDJGQUQsIDB4MjE5OCwgMHgyRkFBLCAweDIxOTksIDB4MkZBQiwgMHgyMUM0LCAweDIwNzYsDQorICAgIDB4MjFDNSwgMHgyMDc3LCAweDIxQzYsIDB4MjA3NSwgMHgyMUNCLCAweDJGQUYsIDB4MjFDQywgMHgyRkFFLA0KKyAgICAweDIxRDAsIDB4MkZBOCwgMHgyMUQyLCAweDAyRjAsIDB4MjFENCwgMHgwMkYxLCAweDIxRTYsIDB4MUY0RCwNCisgICAgMHgyMUU3LCAweDFGNEMsIDB4MjFFOCwgMHgxRjRFLCAweDIxRTksIDB4MUY0QiwgMHgyMjAwLCAweDAyRjIsDQorICAgIDB4MjIwMiwgMHgwMkY3LCAweDIyMDMsIDB4MDJGMywgMHgyMjA1LCAweDJGOTgsIDB4MjIwNywgMHgwMkY4LA0KKyAgICAweDIyMDgsIDB4MDJFNSwgMHgyMjA5LCAweDNDNzQsIDB4MjIwQSwgMHgyRjNCLCAweDIyMEIsIDB4MDJFNiwNCisgICAgMHgyMjExLCAweDFEQzksIDB4MjIxMiwgMHgwMkI1LCAweDIyMTMsIDB4MkY1NiwgMHgyMjE5LCAweDAwNzUsDQorICAgIDB4MjIxQSwgMHgwMkZELCAweDIyMUQsIDB4MDJGRiwgMHgyMjFFLCAweDAyQkYsIDB4MjIxRiwgMHgxRENELA0KKyAgICAweDIyMjAsIDB4MDJGNCwgMHgyMjI1LCAweDNDODEsIDB4MjIyNiwgMHgzQzgyLCAweDIyMjcsIDB4MDJFRCwNCisgICAgMHgyMjI4LCAweDAyRUUsIDB4MjIyOSwgMHgwMkVDLCAweDIyMkEsIDB4MDJFQiwgMHgyMjJCLCAweDAzMDEsDQorICAgIDB4MjIyQywgMHgwMzAyLCAweDIyMkQsIDB4MjAwMywgMHgyMjJFLCAweDFEQzgsIDB4MjIzNCwgMHgwMkMwLA0KKyAgICAweDIyMzUsIDB4MDMwMCwgMHgyMjNDLCAweDAwNjQsIDB4MjIzRCwgMHgwMkZFLCAweDIyNDMsIDB4MkY1OCwNCisgICAgMHgyMjQ1LCAweDNDOTMsIDB4MjI0OCwgMHgzQzk0LCAweDIyNTIsIDB4MDJGQSwgMHgyMjYwLCAweDAyQkEsDQorICAgIDB4MjI2MSwgMHgwMkY5LCAweDIyNjIsIDB4M0M5MSwgMHgyMjY2LCAweDAyQkQsIDB4MjI2NywgMHgwMkJFLA0KKyAgICAweDIyNkEsIDB4MDJGQiwgMHgyMjZCLCAweDAyRkMsIDB4MjI3MiwgMHgyRjU5LCAweDIyNzMsIDB4MkY1QSwNCisgICAgMHgyMjc2LCAweDNDOTUsIDB4MjI3NywgMHgzQzk2LCAweDIyODIsIDB4MDJFOSwgMHgyMjgzLCAweDAyRUEsDQorICAgIDB4MjI4NCwgMHgzQzcwLCAweDIyODUsIDB4M0M3MSwgMHgyMjg2LCAweDAyRTcsIDB4MjI4NywgMHgwMkU4LA0KKyAgICAweDIyOEEsIDB4M0M3MiwgMHgyMjhCLCAweDNDNzMsIDB4MjI5NSwgMHgyRjlDLCAweDIyOTYsIDB4MkY5QSwNCisgICAgMHgyMjk3LCAweDJGOUQsIDB4MjI5OCwgMHgyRjlCLCAweDIyOUUsIDB4M0UyMiwgMHgyMkEwLCAweDJGOTksDQorICAgIDB4MjJBNSwgMHgwMkY1LCAweDIyQkYsIDB4MURDRSwgMHgyMkRBLCAweDNENkQsIDB4MjJEQiwgMHgzRDZFLA0KKyAgICAweDIzMDUsIDB4M0M3NiwgMHgyMzA2LCAweDNDNzcsIDB4MjMwNywgMHgyRkJCLCAweDIzMTIsIDB4MDJGNiwNCisgICAgMHgyMzE4LCAweDNENzAsIDB4MjM5QiwgMHgyRjZGLCAweDIzOUMsIDB4MkY4NywgMHgyMzlELCAweDJGNzAsDQorICAgIDB4MjM5RSwgMHgyRjcxLCAweDIzOUYsIDB4MkY4NywgMHgyM0EwLCAweDJGNzIsIDB4MjNBMSwgMHgyRjc3LA0KKyAgICAweDIzQTIsIDB4MkY4NywgMHgyM0EzLCAweDJGNzgsIDB4MjNBNCwgMHgyRjc5LCAweDIzQTUsIDB4MkY4NywNCisgICAgMHgyM0E2LCAweDJGN0EsIDB4MjNBNywgMHgxRkYyLCAweDIzQTgsIDB4MUZGMywgMHgyM0E5LCAweDFGRjQsDQorICAgIDB4MjNBQSwgMHgyRjg3LCAweDIzQUIsIDB4MUZFRSwgMHgyM0FDLCAweDFGRUYsIDB4MjNBRCwgMHgxRkYwLA0KKyAgICAweDIzQjAsIDB4M0ZCOCwgMHgyM0IxLCAweDNGQjksIDB4MjNCRSwgMHgzRjdELCAweDIzQkYsIDB4M0Y3RSwNCisgICAgMHgyM0MwLCAweDNGN0YsIDB4MjNDMSwgMHgzRjgwLCAweDIzQzIsIDB4M0Y4MSwgMHgyM0MzLCAweDNGODIsDQorICAgIDB4MjNDNCwgMHgzRjgzLCAweDIzQzUsIDB4M0Y4NCwgMHgyM0M2LCAweDNGODUsIDB4MjNDNywgMHgzRjg2LA0KKyAgICAweDIzQzgsIDB4M0Y4NywgMHgyM0M5LCAweDNGODgsIDB4MjNDQSwgMHgzRjg5LCAweDIzQ0IsIDB4M0Y4QSwNCisgICAgMHgyM0NDLCAweDNGOEIsIDB4MjNDRSwgMHgzRjkxLCAweDI0MjMsIDB4M0Y5MCwgMHgyNDYwLCAweDFEODMsDQorICAgIDB4MjQ2MSwgMHgxRDg0LCAweDI0NjIsIDB4MUQ4NSwgMHgyNDYzLCAweDFEODYsIDB4MjQ2NCwgMHgxRDg3LA0KKyAgICAweDI0NjUsIDB4MUQ4OCwgMHgyNDY2LCAweDFEODksIDB4MjQ2NywgMHgxRDhBLCAweDI0NjgsIDB4MUQ4QiwNCisgICAgMHgyNDY5LCAweDFEOEMsIDB4MjQ2QSwgMHgxRDhELCAweDI0NkIsIDB4MUQ4RSwgMHgyNDZDLCAweDFEOEYsDQorICAgIDB4MjQ2RCwgMHgxRDkwLCAweDI0NkUsIDB4MUQ5MSwgMHgyNDZGLCAweDFEOTIsIDB4MjQ3MCwgMHgxRDkzLA0KKyAgICAweDI0NzEsIDB4MUQ5NCwgMHgyNDcyLCAweDFEOTUsIDB4MjQ3MywgMHgxRDk2LCAweDI0NzQsIDB4MUY4NywNCisgICAgMHgyNDc1LCAweDFGODgsIDB4MjQ3NiwgMHgxRjg5LCAweDI0NzcsIDB4MUY4QSwgMHgyNDc4LCAweDFGOEIsDQorICAgIDB4MjQ3OSwgMHgxRjhDLCAweDI0N0EsIDB4MUY4RCwgMHgyNDdCLCAweDFGOEUsIDB4MjQ3QywgMHgxRjhGLA0KKyAgICAweDI0N0QsIDB4MUY5MCwgMHgyNDdFLCAweDFGOTEsIDB4MjQ3RiwgMHgxRjkyLCAweDI0ODAsIDB4MUY5MywNCisgICAgMHgyNDgxLCAweDFGOTQsIDB4MjQ4MiwgMHgxRjk1LCAweDI0ODMsIDB4MUY5NiwgMHgyNDg0LCAweDFGOTcsDQorICAgIDB4MjQ4NSwgMHgxRjk4LCAweDI0ODYsIDB4MUY5OSwgMHgyNDg3LCAweDFGOUEsIDB4MjQ4OCwgMHgxRjdFLA0KKyAgICAweDI0ODksIDB4MUY3RiwgMHgyNDhBLCAweDFGODAsIDB4MjQ4QiwgMHgxRjgxLCAweDI0OEMsIDB4MUY4MiwNCisgICAgMHgyNDhELCAweDFGODMsIDB4MjQ4RSwgMHgxRjg0LCAweDI0OEYsIDB4MUY4NSwgMHgyNDkwLCAweDFGODYsDQorICAgIDB4MjQ5QywgMHgxRkIwLCAweDI0OUQsIDB4MUZCMSwgMHgyNDlFLCAweDFGQjIsIDB4MjQ5RiwgMHgxRkIzLA0KKyAgICAweDI0QTAsIDB4MUZCNCwgMHgyNEExLCAweDFGQjUsIDB4MjRBMiwgMHgxRkI2LCAweDI0QTMsIDB4MUZCNywNCisgICAgMHgyNEE0LCAweDFGQjgsIDB4MjRBNSwgMHgxRkI5LCAweDI0QTYsIDB4MUZCQSwgMHgyNEE3LCAweDFGQkIsDQorICAgIDB4MjRBOCwgMHgxRkJDLCAweDI0QTksIDB4MUZCRCwgMHgyNEFBLCAweDFGQkUsIDB4MjRBQiwgMHgxRkJGLA0KKyAgICAweDI0QUMsIDB4MUZDMCwgMHgyNEFELCAweDFGQzEsIDB4MjRBRSwgMHgxRkMyLCAweDI0QUYsIDB4MUZDMywNCisgICAgMHgyNEIwLCAweDFGQzQsIDB4MjRCMSwgMHgxRkM1LCAweDI0QjIsIDB4MUZDNiwgMHgyNEIzLCAweDFGQzcsDQorICAgIDB4MjRCNCwgMHgxRkM4LCAweDI0QjUsIDB4MUZDOSwgMHgyNEI2LCAweDI4NjMsIDB4MjRCNywgMHgyODY0LA0KKyAgICAweDI0QjgsIDB4Mjg2NSwgMHgyNEI5LCAweDI4NjYsIDB4MjRCQSwgMHgyODY3LCAweDI0QkIsIDB4Mjg2OCwNCisgICAgMHgyNEJDLCAweDI4NjksIDB4MjRCRCwgMHgyODZBLCAweDI0QkUsIDB4Mjg2QiwgMHgyNEJGLCAweDI4NkMsDQorICAgIDB4MjRDMCwgMHgyODZELCAweDI0QzEsIDB4Mjg2RSwgMHgyNEMyLCAweDI4NkYsIDB4MjRDMywgMHgyODcwLA0KKyAgICAweDI0QzQsIDB4Mjg3MSwgMHgyNEM1LCAweDI4NzIsIDB4MjRDNiwgMHgyODczLCAweDI0QzcsIDB4Mjg3NCwNCisgICAgMHgyNEM4LCAweDI4NzUsIDB4MjRDOSwgMHgyODc2LCAweDI0Q0EsIDB4Mjg3NywgMHgyNENCLCAweDI4NzgsDQorICAgIDB4MjRDQywgMHgyODc5LCAweDI0Q0QsIDB4Mjg3QSwgMHgyNENFLCAweDI4N0IsIDB4MjRDRiwgMHgyODdDLA0KKyAgICAweDI0RDAsIDB4Mjg0OSwgMHgyNEQxLCAweDI4NEEsIDB4MjREMiwgMHgyODRCLCAweDI0RDMsIDB4Mjg0QywNCisgICAgMHgyNEQ0LCAweDI4NEQsIDB4MjRENSwgMHgyODRFLCAweDI0RDYsIDB4Mjg0RiwgMHgyNEQ3LCAweDI4NTAsDQorICAgIDB4MjREOCwgMHgyODUxLCAweDI0RDksIDB4Mjg1MiwgMHgyNERBLCAweDI4NTMsIDB4MjREQiwgMHgyODU0LA0KKyAgICAweDI0REMsIDB4Mjg1NSwgMHgyNERELCAweDI4NTYsIDB4MjRERSwgMHgyODU3LCAweDI0REYsIDB4Mjg1OCwNCisgICAgMHgyNEUwLCAweDI4NTksIDB4MjRFMSwgMHgyODVBLCAweDI0RTIsIDB4Mjg1QiwgMHgyNEUzLCAweDI4NUMsDQorICAgIDB4MjRFNCwgMHgyODVELCAweDI0RTUsIDB4Mjg1RSwgMHgyNEU2LCAweDI4NUYsIDB4MjRFNywgMHgyODYwLA0KKyAgICAweDI0RTgsIDB4Mjg2MSwgMHgyNEU5LCAweDI4NjIsIDB4MjRFQSwgMHgyMDIwLCAweDI0RUIsIDB4MjkxMywNCisgICAgMHgyNEVDLCAweDI5MTQsIDB4MjRFRCwgMHgyOTE1LCAweDI0RUUsIDB4MjkxNiwgMHgyNEVGLCAweDI5MTcsDQorICAgIDB4MjRGMCwgMHgyOTE4LCAweDI0RjEsIDB4MjkxOSwgMHgyNEYyLCAweDI5MUEsIDB4MjRGMywgMHgyOTFCLA0KKyAgICAweDI0RjQsIDB4MjkxQywgMHgyNEY1LCAweDNGNUYsIDB4MjRGNiwgMHgzRjYwLCAweDI0RjcsIDB4M0Y2MSwNCisgICAgMHgyNEY4LCAweDNGNjIsIDB4MjRGOSwgMHgzRjYzLCAweDI0RkEsIDB4M0Y2NCwgMHgyNEZCLCAweDNGNjUsDQorICAgIDB4MjRGQywgMHgzRjY2LCAweDI0RkQsIDB4M0Y2NywgMHgyNEZFLCAweDNGNjgsIDB4MjRGRiwgMHgyOTA3LA0KKyAgICAweDI1MDAsIDB4MUQzNywgMHgyNTAxLCAweDFEMzgsIDB4MjUwMiwgMHgxRDM5LCAweDI1MDMsIDB4MUQzQSwNCisgICAgMHgyNTA0LCAweDFEM0IsIDB4MjUwNSwgMHgxRDNDLCAweDI1MDYsIDB4MUQzRCwgMHgyNTA3LCAweDFEM0UsDQorICAgIDB4MjUwOCwgMHgxRDNGLCAweDI1MDksIDB4MUQ0MCwgMHgyNTBBLCAweDFENDEsIDB4MjUwQiwgMHgxRDQyLA0KKyAgICAweDI1MEMsIDB4MUQ0MywgMHgyNTBELCAweDFENDQsIDB4MjUwRSwgMHgxRDQ1LCAweDI1MEYsIDB4MUQ0NiwNCisgICAgMHgyNTEwLCAweDFENDcsIDB4MjUxMSwgMHgxRDQ4LCAweDI1MTIsIDB4MUQ0OSwgMHgyNTEzLCAweDFENEEsDQorICAgIDB4MjUxNCwgMHgxRDRCLCAweDI1MTUsIDB4MUQ0QywgMHgyNTE2LCAweDFENEQsIDB4MjUxNywgMHgxRDRFLA0KKyAgICAweDI1MTgsIDB4MUQ0RiwgMHgyNTE5LCAweDFENTAsIDB4MjUxQSwgMHgxRDUxLCAweDI1MUIsIDB4MUQ1MiwNCisgICAgMHgyNTFDLCAweDFENTMsIDB4MjUxRCwgMHgxRDU0LCAweDI1MUUsIDB4MUQ1NSwgMHgyNTFGLCAweDFENTYsDQorICAgIDB4MjUyMCwgMHgxRDU3LCAweDI1MjEsIDB4MUQ1OCwgMHgyNTIyLCAweDFENTksIDB4MjUyMywgMHgxRDVBLA0KKyAgICAweDI1MjQsIDB4MUQ1QiwgMHgyNTI1LCAweDFENUMsIDB4MjUyNiwgMHgxRDVELCAweDI1MjcsIDB4MUQ1RSwNCisgICAgMHgyNTI4LCAweDFENUYsIDB4MjUyOSwgMHgxRDYwLCAweDI1MkEsIDB4MUQ2MSwgMHgyNTJCLCAweDFENjIsDQorICAgIDB4MjUyQywgMHgxRDYzLCAweDI1MkQsIDB4MUQ2NCwgMHgyNTJFLCAweDFENjUsIDB4MjUyRiwgMHgxRDY2LA0KKyAgICAweDI1MzAsIDB4MUQ2NywgMHgyNTMxLCAweDFENjgsIDB4MjUzMiwgMHgxRDY5LCAweDI1MzMsIDB4MUQ2QSwNCisgICAgMHgyNTM0LCAweDFENkIsIDB4MjUzNSwgMHgxRDZDLCAweDI1MzYsIDB4MUQ2RCwgMHgyNTM3LCAweDFENkUsDQorICAgIDB4MjUzOCwgMHgxRDZGLCAweDI1MzksIDB4MUQ3MCwgMHgyNTNBLCAweDFENzEsIDB4MjUzQiwgMHgxRDcyLA0KKyAgICAweDI1M0MsIDB4MUQ3MywgMHgyNTNELCAweDFENzQsIDB4MjUzRSwgMHgxRDc1LCAweDI1M0YsIDB4MUQ3NiwNCisgICAgMHgyNTQwLCAweDFENzcsIDB4MjU0MSwgMHgxRDc4LCAweDI1NDIsIDB4MUQ3OSwgMHgyNTQzLCAweDFEN0EsDQorICAgIDB4MjU0NCwgMHgxRDdCLCAweDI1NDUsIDB4MUQ3QywgMHgyNTQ2LCAweDFEN0QsIDB4MjU0NywgMHgxRDdFLA0KKyAgICAweDI1NDgsIDB4MUQ3RiwgMHgyNTQ5LCAweDFEODAsIDB4MjU0QSwgMHgxRDgxLCAweDI1NEIsIDB4MUQ4MiwNCisgICAgMHgyNTUwLCAweDIwM0IsIDB4MjU1RSwgMHgyMDNDLCAweDI1NjEsIDB4MjAzRSwgMHgyNTZBLCAweDIwM0QsDQorICAgIDB4MjU2RCwgMHgyMDM3LCAweDI1NkUsIDB4MjAzOCwgMHgyNTZGLCAweDIwM0EsIDB4MjU3MCwgMHgyMDM5LA0KKyAgICAweDI1NzEsIDB4MjA0NSwgMHgyNTcyLCAweDIwNDYsIDB4MjU3MywgMHgyMDQ3LCAweDI1ODEsIDB4MjAyNiwNCisgICAgMHgyNTgyLCAweDIwMjcsIDB4MjU4MywgMHgyMDI4LCAweDI1ODQsIDB4MjAyOSwgMHgyNTg1LCAweDIwMkEsDQorICAgIDB4MjU4NiwgMHgyMDJCLCAweDI1ODcsIDB4MjAyQywgMHgyNTg4LCAweDIwMkQsIDB4MjU4OSwgMHgyMDM0LA0KKyAgICAweDI1OEEsIDB4MjAzMywgMHgyNThCLCAweDIwMzIsIDB4MjU4QywgMHgyMDMxLCAweDI1OEQsIDB4MjAzMCwNCisgICAgMHgyNThFLCAweDIwMkYsIDB4MjU4RiwgMHgyMDJFLCAweDI1OTQsIDB4MjAzNSwgMHgyNTk1LCAweDIwMzYsDQorICAgIDB4MjVBMCwgMHgwMkQ5LCAweDI1QTEsIDB4MDJEOCwgMHgyNUEyLCAweDFGNEYsIDB4MjVBQSwgMHgyRkNGLA0KKyAgICAweDI1QUIsIDB4MkZDRCwgMHgyNUIxLCAweDNGNkIsIDB4MjVCMiwgMHgwMkRCLCAweDI1QjMsIDB4MDJEQSwNCisgICAgMHgyNUI2LCAweDJGQTMsIDB4MjVCNywgMHgxRjRBLCAweDI1QkMsIDB4MDJERCwgMHgyNUJELCAweDAyREMsDQorICAgIDB4MjVDMCwgMHgyRkEyLCAweDI1QzEsIDB4MUY0OSwgMHgyNUM2LCAweDAyRDcsIDB4MjVDNywgMHgwMkQ2LA0KKyAgICAweDI1QzksIDB4MjAxMiwgMHgyNUNCLCAweDAyRDMsIDB4MjVDQywgMHgyOTA2LCAweDI1Q0UsIDB4MDJENSwNCisgICAgMHgyNUNGLCAweDAyRDQsIDB4MjVEMCwgMHgzRjkyLCAweDI1RDEsIDB4M0Y5MywgMHgyNUQyLCAweDNGOTQsDQorICAgIDB4MjVEMywgMHgzRjk1LCAweDI1RTIsIDB4MjAzRiwgMHgyNUUzLCAweDIwNDAsIDB4MjVFNCwgMHgyMDQyLA0KKyAgICAweDI1RTUsIDB4MjA0MSwgMHgyNUU2LCAweDJGREUsIDB4MjVFRiwgMHgwMzBCLCAweDI2MDAsIDB4MjAxNywNCisgICAgMHgyNjAxLCAweDIwMTgsIDB4MjYwMiwgMHgyMDE5LCAweDI2MDMsIDB4MjAxQSwgMHgyNjA1LCAweDAyRDIsDQorICAgIDB4MjYwNiwgMHgwMkQxLCAweDI2MEUsIDB4MUY3OCwgMHgyNjE2LCAweDNGNjksIDB4MjYxNywgMHgzRjZBLA0KKyAgICAweDI2MUMsIDB4MjAxQywgMHgyNjFELCAweDIwMUQsIDB4MjYxRSwgMHgyMDFCLCAweDI2MUYsIDB4MjAxRSwNCisgICAgMHgyNjQwLCAweDAyQzIsIDB4MjY0MiwgMHgwMkMxLCAweDI2NjAsIDB4MjAxMywgMHgyNjYxLCAweDFGNTEsDQorICAgIDB4MjY2MiwgMHgxRjUzLCAweDI2NjMsIDB4MjAxNSwgMHgyNjY0LCAweDFGNTIsIDB4MjY2NSwgMHgyMDE0LA0KKyAgICAweDI2NjYsIDB4MjAxNiwgMHgyNjY3LCAweDFGNTAsIDB4MjY2OCwgMHgyRjQyLCAweDI2NjksIDB4MkY0MywNCisgICAgMHgyNjZBLCAweDAzMDcsIDB4MjY2QiwgMHgzRjQ4LCAweDI2NkMsIDB4MkY0NCwgMHgyNjZELCAweDAzMDYsDQorICAgIDB4MjY2RSwgMHgzRjQ3LCAweDI2NkYsIDB4MDMwNSwgMHgyNjcyLCAweDNGQkEsIDB4MjY3MywgMHgzRkJCLA0KKyAgICAweDI2NzQsIDB4M0ZCQywgMHgyNjc1LCAweDNGQkQsIDB4MjY3NiwgMHgzRkJFLCAweDI2NzcsIDB4M0ZCRiwNCisgICAgMHgyNjc4LCAweDNGQzAsIDB4MjY3OSwgMHgzRkMxLCAweDI2N0EsIDB4M0ZDMiwgMHgyNjdCLCAweDNGQzMsDQorICAgIDB4MjY3QywgMHgzRkM0LCAweDI2N0QsIDB4M0ZDNSwgMHgyNkEwLCAweDJGQTAsIDB4MjcwMiwgMHgyRjkwLA0KKyAgICAweDI3MTMsIDB4M0Y4RSwgMHgyNzFBLCAweDJGRDEsIDB4MjczRiwgMHgyRkM1LCAweDI3NDAsIDB4MkZDNCwNCisgICAgMHgyNzU2LCAweDJGRTMsIDB4Mjc3NiwgMHgyMDVFLCAweDI3NzcsIDB4MjA1RiwgMHgyNzc4LCAweDIwNjAsDQorICAgIDB4Mjc3OSwgMHgyMDYxLCAweDI3N0EsIDB4MjA2MiwgMHgyNzdCLCAweDIwNjMsIDB4Mjc3QywgMHgyMDY0LA0KKyAgICAweDI3N0QsIDB4MjA2NSwgMHgyNzdFLCAweDIwNjYsIDB4Mjc3RiwgMHgyOTEyLCAweDI3QTEsIDB4MjAwRSwNCisgICAgMHgyOTM0LCAweDNGNDksIDB4MjkzNSwgMHgzRjRBLCAweDI5QkYsIDB4M0Y0QiwgMHgyOUZBLCAweDNGNEYsDQorICAgIDB4MjlGQiwgMHgzRjUwLCAweDJCMDUsIDB4MjAwRiwgMHgyQjA2LCAweDIwMTAsIDB4MkIwNywgMHgyMDExLA0KKyAgICAweDJFODMsIDB4MzdFMSwgMHgyRTg1LCAweDM2MjAsIDB4MkU4NywgMHgzNzE5LCAweDJFODksIDB4MzgxNCwNCisgICAgMHgyRThCLCAweDM3MUUsIDB4MkU4QywgMHgzNjA5LCAweDJFOEQsIDB4MzYwQSwgMHgyRThFLCAweDEwNzEsDQorICAgIDB4MkU4RiwgMHgzODhDLCAweDJFOTAsIDB4MTIyNiwgMHgyRTkyLCAweDBFQjIsIDB4MkU5MywgMHgxMjgzLA0KKyAgICAweDJFOTQsIDB4MTJBQiwgMHgyRTk1LCAweDNDMUYsIDB4MkU5NiwgMHgzOEMyLCAweDJFOTcsIDB4MzYxQywNCisgICAgMHgyRTk4LCAweDM4RTEsIDB4MkU5OSwgMHgxM0MzLCAweDJFOUIsIDB4MTNFMSwgMHgyRTlFLCAweDQ1RTUsDQorICAgIDB4MkU5RiwgMHgwRTNDLCAweDJFQTAsIDB4MEVCRCwgMHgyRUExLCAweDM5NjEsIDB4MkVBMiwgMHgzOTYyLA0KKyAgICAweDJFQTMsIDB4Mzk5RCwgMHgyRUE0LCAweDNDMjYsIDB4MkVBNiwgMHgzNzRELCAweDJFQTgsIDB4MzlCQywNCisgICAgMHgyRUE5LCAweDM1QTEsIDB4MkVBQSwgMHgzNkFCLCAweDJFQUIsIDB4M0E5NywgMHgyRUFDLCAweDRBQkEsDQorICAgIDB4MkVBRCwgMHgzQTM5LCAweDJFQUUsIDB4MzY2MiwgMHgyRUIxLCAweDNBOTgsIDB4MkVCMiwgMHgzQTk3LA0KKyAgICAweDJFQjMsIDB4Mzc2RCwgMHgyRUI3LCAweDM2RkUsIDB4MkVCOSwgMHgzNzEzLCAweDJFQkMsIDB4MzVCMywNCisgICAgMHgyRUJELCAweDM1NEUsIDB4MkVCRSwgMHgzNzc1LCAweDJFQkYsIDB4Mzc3NiwgMHgyRUMwLCAweDM3NzcsDQorICAgIDB4MkVDMSwgMHgwNzhCLCAweDJFQzIsIDB4M0IwQSwgMHgyRUMzLCAweDM2MkUsIDB4MkVDNCwgMHgwQTYyLA0KKyAgICAweDJFQzYsIDB4MzU3MiwgMHgyRUNBLCAweDM2NEEsIDB4MkVDQywgMHgzQzJCLCAweDJFQ0QsIDB4M0I1MCwNCisgICAgMHgyRUNGLCAweDNCOUUsIDB4MkVEMSwgMHgwQkQ1LCAweDJFRDIsIDB4M0I5NywgMHgyRUQ2LCAweDNCOUUsDQorICAgIDB4MkVENywgMHgzNTRELCAweDJFRDgsIDB4MEE2OCwgMHgyRURELCAweDM2MTcsIDB4MkVERSwgMHgzNjE5LA0KKyAgICAweDJFREYsIDB4MzYxOCwgMHgyRUU0LCAweDA2NEUsIDB4MkVFOCwgMHgwRDM0LCAweDJFRTksIDB4MDUyQiwNCisgICAgMHgyRUVCLCAweDBBNkEsIDB4MkVFRCwgMHgwOEMzLCAweDJFRUYsIDB4MEY3RCwgMHgyRUYyLCAweDA2NEYsDQorICAgIDB4MkYwMCwgMHgwNEIwLCAweDJGMDEsIDB4MjBCMywgMHgyRjAyLCAweDBGRkYsIDB4MkYwMywgMHgxMDAxLA0KKyAgICAweDJGMDQsIDB4MDUzNSwgMHgyRjA1LCAweDEwMDYsIDB4MkYwNiwgMHgwQ0NCLCAweDJGMDcsIDB4MTAwRSwNCisgICAgMHgyRjA4LCAweDBBMTMsIDB4MkYwOSwgMHgxMDcwLCAweDJGMEEsIDB4MENENiwgMHgyRjBCLCAweDBENDAsDQorICAgIDB4MkYwQywgMHgxMDdCLCAweDJGMEQsIDB4MTA4MywgMHgyRjBFLCAweDEwODksIDB4MkYwRiwgMHgxMDkzLA0KKyAgICAweDJGMTAsIDB4MTA5OCwgMHgyRjExLCAweDBDNUIsIDB4MkYxMiwgMHgwRjk3LCAweDJGMTMsIDB4MTBDNiwNCisgICAgMHgyRjE0LCAweDEwQ0QsIDB4MkYxNSwgMHgxMENFLCAweDJGMTYsIDB4MTBEMywgMHgyRjE3LCAweDA5NDcsDQorICAgIDB4MkYxOCwgMHgwRTdDLCAweDJGMTksIDB4MTBEQywgMHgyRjFBLCAweDEwRTEsIDB4MkYxQiwgMHgxMEU4LA0KKyAgICAweDJGMUMsIDB4MEVBMiwgMHgyRjFELCAweDA3QjEsIDB4MkYxRSwgMHgxMTZCLCAweDJGMUYsIDB4MEM1NCwNCisgICAgMHgyRjIwLCAweDA4OUMsIDB4MkYyMSwgMHgxMUJBLCAweDJGMjIsIDB4MTFCQiwgMHgyRjIzLCAweDBGMjYsDQorICAgIDB4MkYyNCwgMHgwQjQ3LCAweDJGMjUsIDB4MDk4MSwgMHgyRjI2LCAweDA4QTAsIDB4MkYyNywgMHgxMjBFLA0KKyAgICAweDJGMjgsIDB4MEE0NywgMHgyRjI5LCAweDA5OTYsIDB4MkYyQSwgMHgxMjI2LCAweDJGMkIsIDB4MTIyOCwNCisgICAgMHgyRjJDLCAweDEyMzIsIDB4MkYyRCwgMHgwODgxLCAweDJGMkUsIDB4MTI2QywgMHgyRjJGLCAweDA3QkIsDQorICAgIDB4MkYzMCwgMHgwNzdFLCAweDJGMzEsIDB4MDZDQSwgMHgyRjMyLCAweDA1RUYsIDB4MkYzMywgMHgxMjgzLA0KKyAgICAweDJGMzQsIDB4MTI4NSwgMHgyRjM1LCAweDEyOTksIDB4MkYzNiwgMHgxMjlCLCAweDJGMzcsIDB4MTJBMCwNCisgICAgMHgyRjM4LCAweDA2NzcsIDB4MkYzOSwgMHgzOEI5LCAweDJGM0EsIDB4MTJBRiwgMHgyRjNCLCAweDEyQjEsDQorICAgIDB4MkYzQywgMHgwOUZBLCAweDJGM0QsIDB4MTM0MiwgMHgyRjNFLCAweDA3ODEsIDB4MkYzRiwgMHgwOTE2LA0KKyAgICAweDJGNDAsIDB4MDhBNywgMHgyRjQxLCAweDEzQzIsIDB4MkY0MiwgMHgwRTA4LCAweDJGNDMsIDB4MEM0NywNCisgICAgMHgyRjQ0LCAweDA2Q0MsIDB4MkY0NSwgMHgwRTRELCAweDJGNDYsIDB4MTNFMCwgMHgyRjQ3LCAweDBDRDQsDQorICAgIDB4MkY0OCwgMHgxNDBDLCAweDJGNDksIDB4MDc0NCwgMHgyRjRBLCAweDBFRTYsIDB4MkY0QiwgMHgwNzNELA0KKyAgICAweDJGNEMsIDB4MDhBRCwgMHgyRjRELCAweDE0RTUsIDB4MkY0RSwgMHgxNEY0LCAweDJGNEYsIDB4MTRGOCwNCisgICAgMHgyRjUwLCAweDBEN0EsIDB4MkY1MSwgMHgwRURGLCAweDJGNTIsIDB4MDhBRiwgMHgyRjUzLCAweDE1MDIsDQorICAgIDB4MkY1NCwgMHgwQTJCLCAweDJGNTUsIDB4MDU1MCwgMHgyRjU2LCAweDBCRkEsIDB4MkY1NywgMHgwREQ1LA0KKyAgICAweDJGNTgsIDB4MTVFNCwgMHgyRjU5LCAweDE1RTYsIDB4MkY1QSwgMHgwRTIyLCAweDJGNUIsIDB4MDU2NywNCisgICAgMHgyRjVDLCAweDA2ODcsIDB4MkY1RCwgMHgwNzU4LCAweDJGNUUsIDB4MDc3MCwgMHgyRjVGLCAweDA2QzQsDQorICAgIDB4MkY2MCwgMHgwNERELCAweDJGNjEsIDB4MDVFMCwgMHgyRjYyLCAweDA2MDEsIDB4MkY2MywgMHgwQTVDLA0KKyAgICAweDJGNjQsIDB4MEYzQiwgMHgyRjY1LCAweDBDM0UsIDB4MkY2NiwgMHgwRDk3LCAweDJGNjcsIDB4M0EwMCwNCisgICAgMHgyRjY4LCAweDE2OTcsIDB4MkY2OSwgMHgwRDI4LCAweDJGNkEsIDB4MEQ3RCwgMHgyRjZCLCAweDA4N0MsDQorICAgIDB4MkY2QywgMHgwRUU4LCAweDJGNkQsIDB4MEVDMywgMHgyRjZFLCAweDBFRkMsIDB4MkY2RiwgMHgwQTc0LA0KKyAgICAweDJGNzAsIDB4MDhENCwgMHgyRjcxLCAweDNBNDEsIDB4MkY3MiwgMHgwNTUzLCAweDJGNzMsIDB4MDc0MCwNCisgICAgMHgyRjc0LCAweDBGNzEsIDB4MkY3NSwgMHgwQjlCLCAweDJGNzYsIDB4MEUxNiwgMHgyRjc3LCAweDA4QjMsDQorICAgIDB4MkY3OCwgMHgwNjA4LCAweDJGNzksIDB4MTgxMywgMHgyRjdBLCAweDBGM0QsIDB4MkY3QiwgMHgwNENCLA0KKyAgICAweDJGN0MsIDB4MEZERCwgMHgyRjdELCAweDA4RDUsIDB4MkY3RSwgMHgxODNELCAweDJGN0YsIDB4MDhENiwNCisgICAgMHgyRjgwLCAweDE4NTMsIDB4MkY4MSwgMHgwQ0QxLCAweDJGODIsIDB4MEEwOSwgMHgyRjgzLCAweDA4RDcsDQorICAgIDB4MkY4NCwgMHgwOEI4LCAweDJGODUsIDB4MDREMywgMHgyRjg2LCAweDBBODksIDB4MkY4NywgMHgwQUE2LA0KKyAgICAweDJGODgsIDB4MDkzOCwgMHgyRjg5LCAweDA4MjEsIDB4MkY4QSwgMHgwOUVELCAweDJGOEIsIDB4MThCMiwNCisgICAgMHgyRjhDLCAweDE5NEYsIDB4MkY4RCwgMHgwQkFDLCAweDJGOEUsIDB4MDc0MiwgMHgyRjhGLCAweDA3RTYsDQorICAgIDB4MkY5MCwgMHgwNEE1LCAweDJGOTEsIDB4MTlFQiwgMHgyRjkyLCAweDA3NUYsIDB4MkY5MywgMHgwNUFGLA0KKyAgICAweDJGOTQsIDB4MDc3NCwgMHgyRjk1LCAweDBCNjksIDB4MkY5NiwgMHgwQzdFLCAweDJGOTcsIDB4MUE1NiwNCisgICAgMHgyRjk4LCAweDFBNTksIDB4MkY5OSwgMHgwNThCLCAweDJGOUEsIDB4MEE3QSwgMHgyRjlCLCAweDBBRjgsDQorICAgIDB4MkY5QywgMHgwQjBELCAweDJGOUQsIDB4MEEwRSwgMHgyRjlFLCAweDA5MDIsIDB4MkY5RiwgMHgwQTBGLA0KKyAgICAweDJGQTAsIDB4MEI2MiwgMHgyRkExLCAweDNCNEYsIDB4MkZBMiwgMHgwRjIyLCAweDJGQTMsIDB4MENBQiwNCisgICAgMHgyRkE0LCAweDBENjQsIDB4MkZBNSwgMHgwRjZDLCAweDJGQTYsIDB4MDZEQSwgMHgyRkE3LCAweDBCRDUsDQorICAgIDB4MkZBOCwgMHgwRUYzLCAweDJGQTksIDB4MERERSwgMHgyRkFBLCAweDFCQzksIDB4MkZBQiwgMHgxQkNCLA0KKyAgICAweDJGQUMsIDB4MDRDRCwgMHgyRkFELCAweDIxRjcsIDB4MkZBRSwgMHgwRDg3LCAweDJGQUYsIDB4MEVEOCwNCisgICAgMHgyRkIwLCAweDA1QjUsIDB4MkZCMSwgMHgxQzAzLCAweDJGQjIsIDB4MUMwNSwgMHgyRkIzLCAweDA1M0IsDQorICAgIDB4MkZCNCwgMHgwRTE3LCAweDJGQjUsIDB4MERFOSwgMHgyRkI2LCAweDBEODgsIDB4MkZCNywgMHgwOUVGLA0KKyAgICAweDJGQjgsIDB4MDkxRiwgMHgyRkI5LCAweDA3RjMsIDB4MkZCQSwgMHgwRDA1LCAweDJGQkIsIDB4MDgwRSwNCisgICAgMHgyRkJDLCAweDA3RjQsIDB4MkZCRCwgMHgxQzZDLCAweDJGQkUsIDB4MUM3RCwgMHgyRkJGLCAweDFDODMsDQorICAgIDB4MkZDMCwgMHgxQzg0LCAweDJGQzEsIDB4MDY0RSwgMHgyRkMyLCAweDA2OTUsIDB4MkZDMywgMHgwQkQ3LA0KKyAgICAweDJGQzQsIDB4MUNGNiwgMHgyRkM1LCAweDA4REIsIDB4MkZDNiwgMHgxRDAxLCAweDJGQzcsIDB4MEU5MSwNCisgICAgMHgyRkM4LCAweDM0MEIsIDB4MkZDOSwgMHgwNjZBLCAweDJGQ0EsIDB4MDgwNywgMHgyRkNCLCAweDFEMTYsDQorICAgIDB4MkZDQywgMHgxRDE5LCAweDJGQ0QsIDB4MEMxRSwgMHgyRkNFLCAweDA3OTEsIDB4MkZDRiwgMHgwQUNGLA0KKyAgICAweDJGRDAsIDB4MEQ5MywgMHgyRkQxLCAweDFEMjEsIDB4MkZEMiwgMHgxRDIyLCAweDJGRDMsIDB4MEY3RSwNCisgICAgMHgyRkQ0LCAweDFEMzAsIDB4MkZENSwgMHgxRDMxLCAweDMwMDAsIDB4MDI3OSwgMHgzMDAxLCAweDAyN0EsDQorICAgIDB4MzAwMiwgMHgwMjdCLCAweDMwMDMsIDB4MDI4RiwgMHgzMDA0LCAweDIwNzQsIDB4MzAwNSwgMHgwMjkxLA0KKyAgICAweDMwMDYsIDB4MDI5MiwgMHgzMDA3LCAweDAyOTMsIDB4MzAwOCwgMHgwMkFBLCAweDMwMDksIDB4MDJBQiwNCisgICAgMHgzMDBBLCAweDAyQUMsIDB4MzAwQiwgMHgwMkFELCAweDMwMEMsIDB4MDJBRSwgMHgzMDBELCAweDAyQUYsDQorICAgIDB4MzAwRSwgMHgwMkIwLCAweDMwMEYsIDB4MDJCMSwgMHgzMDEwLCAweDAyQjIsIDB4MzAxMSwgMHgwMkIzLA0KKyAgICAweDMwMTIsIDB4MDJERiwgMHgzMDEzLCAweDAyRTQsIDB4MzAxNCwgMHgwMkE0LCAweDMwMTUsIDB4MDJBNSwNCisgICAgMHgzMDE2LCAweDNGNDUsIDB4MzAxNywgMHgzRjQ2LCAweDMwMTgsIDB4MkY2MSwgMHgzMDE5LCAweDJGNjIsDQorICAgIDB4MzAxQywgMHgwMjk5LCAweDMwMUQsIDB4MURCOCwgMHgzMDFGLCAweDFEQjksIDB4MzAyMCwgMHgxRjdBLA0KKyAgICAweDMwMzAsIDB4MkZCQSwgMHgzMDMzLCAweDJGNEMsIDB4MzAzNCwgMHgyRjRELCAweDMwMzUsIDB4MkY0RSwNCisgICAgMHgzMDM2LCAweDFGNzksIDB4MzAzQiwgMHgyRjRBLCAweDMwM0MsIDB4M0Y0MiwgMHgzMDNELCAweDJGOTMsDQorICAgIDB4MzA0MSwgMHgwMzRBLCAweDMwNDIsIDB4MDM0QiwgMHgzMDQzLCAweDAzNEMsIDB4MzA0NCwgMHgwMzRELA0KKyAgICAweDMwNDUsIDB4MDM0RSwgMHgzMDQ2LCAweDAzNEYsIDB4MzA0NywgMHgwMzUwLCAweDMwNDgsIDB4MDM1MSwNCisgICAgMHgzMDQ5LCAweDAzNTIsIDB4MzA0QSwgMHgwMzUzLCAweDMwNEIsIDB4MDM1NCwgMHgzMDRDLCAweDAzNTUsDQorICAgIDB4MzA0RCwgMHgwMzU2LCAweDMwNEUsIDB4MDM1NywgMHgzMDRGLCAweDAzNTgsIDB4MzA1MCwgMHgwMzU5LA0KKyAgICAweDMwNTEsIDB4MDM1QSwgMHgzMDUyLCAweDAzNUIsIDB4MzA1MywgMHgwMzVDLCAweDMwNTQsIDB4MDM1RCwNCisgICAgMHgzMDU1LCAweDAzNUUsIDB4MzA1NiwgMHgwMzVGLCAweDMwNTcsIDB4MDM2MCwgMHgzMDU4LCAweDAzNjEsDQorICAgIDB4MzA1OSwgMHgwMzYyLCAweDMwNUEsIDB4MDM2MywgMHgzMDVCLCAweDAzNjQsIDB4MzA1QywgMHgwMzY1LA0KKyAgICAweDMwNUQsIDB4MDM2NiwgMHgzMDVFLCAweDAzNjcsIDB4MzA1RiwgMHgwMzY4LCAweDMwNjAsIDB4MDM2OSwNCisgICAgMHgzMDYxLCAweDAzNkEsIDB4MzA2MiwgMHgwMzZCLCAweDMwNjMsIDB4MDM2QywgMHgzMDY0LCAweDAzNkQsDQorICAgIDB4MzA2NSwgMHgwMzZFLCAweDMwNjYsIDB4MDM2RiwgMHgzMDY3LCAweDAzNzAsIDB4MzA2OCwgMHgwMzcxLA0KKyAgICAweDMwNjksIDB4MDM3MiwgMHgzMDZBLCAweDAzNzMsIDB4MzA2QiwgMHgwMzc0LCAweDMwNkMsIDB4MDM3NSwNCisgICAgMHgzMDZELCAweDAzNzYsIDB4MzA2RSwgMHgwMzc3LCAweDMwNkYsIDB4MDM3OCwgMHgzMDcwLCAweDAzNzksDQorICAgIDB4MzA3MSwgMHgwMzdBLCAweDMwNzIsIDB4MDM3QiwgMHgzMDczLCAweDAzN0MsIDB4MzA3NCwgMHgwMzdELA0KKyAgICAweDMwNzUsIDB4MDM3RSwgMHgzMDc2LCAweDAzN0YsIDB4MzA3NywgMHgwMzgwLCAweDMwNzgsIDB4MDM4MSwNCisgICAgMHgzMDc5LCAweDAzODIsIDB4MzA3QSwgMHgwMzgzLCAweDMwN0IsIDB4MDM4NCwgMHgzMDdDLCAweDAzODUsDQorICAgIDB4MzA3RCwgMHgwMzg2LCAweDMwN0UsIDB4MDM4NywgMHgzMDdGLCAweDAzODgsIDB4MzA4MCwgMHgwMzg5LA0KKyAgICAweDMwODEsIDB4MDM4QSwgMHgzMDgyLCAweDAzOEIsIDB4MzA4MywgMHgwMzhDLCAweDMwODQsIDB4MDM4RCwNCisgICAgMHgzMDg1LCAweDAzOEUsIDB4MzA4NiwgMHgwMzhGLCAweDMwODcsIDB4MDM5MCwgMHgzMDg4LCAweDAzOTEsDQorICAgIDB4MzA4OSwgMHgwMzkyLCAweDMwOEEsIDB4MDM5MywgMHgzMDhCLCAweDAzOTQsIDB4MzA4QywgMHgwMzk1LA0KKyAgICAweDMwOEQsIDB4MDM5NiwgMHgzMDhFLCAweDAzOTcsIDB4MzA4RiwgMHgwMzk4LCAweDMwOTAsIDB4MDM5OSwNCisgICAgMHgzMDkxLCAweDAzOUEsIDB4MzA5MiwgMHgwMzlCLCAweDMwOTMsIDB4MDM5QywgMHgzMDk0LCAweDFGMTYsDQorICAgIDB4MzA5NSwgMHgxRjE3LCAweDMwOTYsIDB4MUYxOCwgMHgzMDk5LCAweDNGQzYsIDB4MzA5QSwgMHgzRkM3LA0KKyAgICAweDMwOUIsIDB4MDI4MywgMHgzMDlDLCAweDAyODQsIDB4MzA5RCwgMHgwMjhELCAweDMwOUUsIDB4MDI4RSwNCisgICAgMHgzMDlGLCAweDJGOTUsIDB4MzBBMCwgMHgzRjRELCAweDMwQTEsIDB4MDM5RCwgMHgzMEEyLCAweDAzOUUsDQorICAgIDB4MzBBMywgMHgwMzlGLCAweDMwQTQsIDB4MDNBMCwgMHgzMEE1LCAweDAzQTEsIDB4MzBBNiwgMHgwM0EyLA0KKyAgICAweDMwQTcsIDB4MDNBMywgMHgzMEE4LCAweDAzQTQsIDB4MzBBOSwgMHgwM0E1LCAweDMwQUEsIDB4MDNBNiwNCisgICAgMHgzMEFCLCAweDAzQTcsIDB4MzBBQywgMHgwM0E4LCAweDMwQUQsIDB4MDNBOSwgMHgzMEFFLCAweDAzQUEsDQorICAgIDB4MzBBRiwgMHgwM0FCLCAweDMwQjAsIDB4MDNBQywgMHgzMEIxLCAweDAzQUQsIDB4MzBCMiwgMHgwM0FFLA0KKyAgICAweDMwQjMsIDB4MDNBRiwgMHgzMEI0LCAweDAzQjAsIDB4MzBCNSwgMHgwM0IxLCAweDMwQjYsIDB4MDNCMiwNCisgICAgMHgzMEI3LCAweDAzQjMsIDB4MzBCOCwgMHgwM0I0LCAweDMwQjksIDB4MDNCNSwgMHgzMEJBLCAweDAzQjYsDQorICAgIDB4MzBCQiwgMHgwM0I3LCAweDMwQkMsIDB4MDNCOCwgMHgzMEJELCAweDAzQjksIDB4MzBCRSwgMHgwM0JBLA0KKyAgICAweDMwQkYsIDB4MDNCQiwgMHgzMEMwLCAweDAzQkMsIDB4MzBDMSwgMHgwM0JELCAweDMwQzIsIDB4MDNCRSwNCisgICAgMHgzMEMzLCAweDAzQkYsIDB4MzBDNCwgMHgwM0MwLCAweDMwQzUsIDB4MDNDMSwgMHgzMEM2LCAweDAzQzIsDQorICAgIDB4MzBDNywgMHgwM0MzLCAweDMwQzgsIDB4MDNDNCwgMHgzMEM5LCAweDAzQzUsIDB4MzBDQSwgMHgwM0M2LA0KKyAgICAweDMwQ0IsIDB4MDNDNywgMHgzMENDLCAweDAzQzgsIDB4MzBDRCwgMHgwM0M5LCAweDMwQ0UsIDB4MDNDQSwNCisgICAgMHgzMENGLCAweDAzQ0IsIDB4MzBEMCwgMHgwM0NDLCAweDMwRDEsIDB4MDNDRCwgMHgzMEQyLCAweDAzQ0UsDQorICAgIDB4MzBEMywgMHgwM0NGLCAweDMwRDQsIDB4MDNEMCwgMHgzMEQ1LCAweDAzRDEsIDB4MzBENiwgMHgwM0QyLA0KKyAgICAweDMwRDcsIDB4MDNEMywgMHgzMEQ4LCAweDAzRDQsIDB4MzBEOSwgMHgwM0Q1LCAweDMwREEsIDB4MDNENiwNCisgICAgMHgzMERCLCAweDAzRDcsIDB4MzBEQywgMHgwM0Q4LCAweDMwREQsIDB4MDNEOSwgMHgzMERFLCAweDAzREEsDQorICAgIDB4MzBERiwgMHgwM0RCLCAweDMwRTAsIDB4MDNEQywgMHgzMEUxLCAweDAzREQsIDB4MzBFMiwgMHgwM0RFLA0KKyAgICAweDMwRTMsIDB4MDNERiwgMHgzMEU0LCAweDAzRTAsIDB4MzBFNSwgMHgwM0UxLCAweDMwRTYsIDB4MDNFMiwNCisgICAgMHgzMEU3LCAweDAzRTMsIDB4MzBFOCwgMHgwM0U0LCAweDMwRTksIDB4MDNFNSwgMHgzMEVBLCAweDAzRTYsDQorICAgIDB4MzBFQiwgMHgwM0U3LCAweDMwRUMsIDB4MDNFOCwgMHgzMEVELCAweDAzRTksIDB4MzBFRSwgMHgwM0VBLA0KKyAgICAweDMwRUYsIDB4MDNFQiwgMHgzMEYwLCAweDAzRUMsIDB4MzBGMSwgMHgwM0VELCAweDMwRjIsIDB4MDNFRSwNCisgICAgMHgzMEYzLCAweDAzRUYsIDB4MzBGNCwgMHgwM0YwLCAweDMwRjUsIDB4MDNGMSwgMHgzMEY2LCAweDAzRjIsDQorICAgIDB4MzBGNywgMHgyMDc5LCAweDMwRjgsIDB4MjA3QSwgMHgzMEY5LCAweDIwN0IsIDB4MzBGQSwgMHgyMDdDLA0KKyAgICAweDMwRkIsIDB4MDI3RSwgMHgzMEZDLCAweDAyOTQsIDB4MzBGRCwgMHgwMjhCLCAweDMwRkUsIDB4MDI4QywNCisgICAgMHgzMEZGLCAweDNGNDMsIDB4MzE5MCwgMHgzRjlCLCAweDMxOTEsIDB4M0Y5QywgMHgzMTkyLCAweDNGOUQsDQorICAgIDB4MzE5MywgMHgzRjlFLCAweDMxOTQsIDB4M0Y5RiwgMHgzMTk1LCAweDNGQTAsIDB4MzE5NiwgMHgzRkExLA0KKyAgICAweDMxOTcsIDB4M0ZBMiwgMHgzMTk4LCAweDNGQTMsIDB4MzE5OSwgMHgzRkE0LCAweDMxOUEsIDB4M0ZBNSwNCisgICAgMHgzMTlCLCAweDNGQTYsIDB4MzE5QywgMHgzRkE3LCAweDMxOUQsIDB4M0ZBOCwgMHgzMTlFLCAweDNGQTksDQorICAgIDB4MzE5RiwgMHgzRkFBLCAweDMxRjAsIDB4M0Y2QywgMHgzMUYxLCAweDNGNkQsIDB4MzFGMiwgMHgzRjZFLA0KKyAgICAweDMxRjMsIDB4M0Y2RiwgMHgzMUY0LCAweDNGNzAsIDB4MzFGNSwgMHgzRjcxLCAweDMxRjYsIDB4M0Y3MiwNCisgICAgMHgzMUY3LCAweDNGNzMsIDB4MzFGOCwgMHgzRjc0LCAweDMxRjksIDB4M0Y3NSwgMHgzMUZBLCAweDNGNzcsDQorICAgIDB4MzFGQiwgMHgzRjc4LCAweDMxRkMsIDB4M0Y3OSwgMHgzMUZELCAweDNGN0EsIDB4MzFGRSwgMHgzRjdCLA0KKyAgICAweDMxRkYsIDB4M0Y3QywgMHgzMjIwLCAweDI3OEUsIDB4MzIyMSwgMHgyNzhGLCAweDMyMjIsIDB4Mjc5MCwNCisgICAgMHgzMjIzLCAweDI3OTEsIDB4MzIyNCwgMHgyNzkyLCAweDMyMjUsIDB4Mjc5MywgMHgzMjI2LCAweDI3OTQsDQorICAgIDB4MzIyNywgMHgyNzk1LCAweDMyMjgsIDB4Mjc5NiwgMHgzMjI5LCAweDI3OTcsIDB4MzIyQSwgMHgyMDA2LA0KKyAgICAweDMyMkIsIDB4MjAwNywgMHgzMjJDLCAweDIwMDgsIDB4MzIyRCwgMHgyMDA5LCAweDMyMkUsIDB4MjAwQSwNCisgICAgMHgzMjJGLCAweDIwMEIsIDB4MzIzMCwgMHgyMDA1LCAweDMyMzEsIDB4MURDMiwgMHgzMjMyLCAweDFEQzMsDQorICAgIDB4MzIzMywgMHgxRkNGLCAweDMyMzQsIDB4MUZDRCwgMHgzMjM1LCAweDFGRDQsIDB4MzIzNiwgMHgxRkQzLA0KKyAgICAweDMyMzcsIDB4MjAwQywgMHgzMjM4LCAweDFGQ0UsIDB4MzIzOSwgMHgxREM0LCAweDMyM0EsIDB4MUZENywNCisgICAgMHgzMjNCLCAweDFGRDUsIDB4MzIzQywgMHgxRkQwLCAweDMyM0QsIDB4MUZDQiwgMHgzMjNFLCAweDFGRDIsDQorICAgIDB4MzIzRiwgMHgxRkNDLCAweDMyNDAsIDB4MUZENiwgMHgzMjQxLCAweDIwMEQsIDB4MzI0MiwgMHgxRkQxLA0KKyAgICAweDMyNDMsIDB4MUZDQSwgMHgzMjUxLCAweDFGOUIsIDB4MzI1MiwgMHgxRkE2LCAweDMyNTMsIDB4MUZBNywNCisgICAgMHgzMjU0LCAweDFGQTgsIDB4MzI1NSwgMHgxRkE5LCAweDMyNTYsIDB4MUZBQSwgMHgzMjU3LCAweDFGQUIsDQorICAgIDB4MzI1OCwgMHgxRkFDLCAweDMyNTksIDB4MUZBRCwgMHgzMjVBLCAweDFGQUUsIDB4MzI1QiwgMHgxRkFGLA0KKyAgICAweDMyNUMsIDB4MjgwNCwgMHgzMjVELCAweDI4MDUsIDB4MzI1RSwgMHgyODA2LCAweDMyNUYsIDB4MjgwNywNCisgICAgMHgzMjgwLCAweDI4REQsIDB4MzI4MSwgMHgyOERFLCAweDMyODIsIDB4MjhERiwgMHgzMjgzLCAweDI4RTAsDQorICAgIDB4MzI4NCwgMHgyOEUxLCAweDMyODUsIDB4MjhFMiwgMHgzMjg2LCAweDI4RTMsIDB4MzI4NywgMHgyOEU0LA0KKyAgICAweDMyODgsIDB4MjhFNSwgMHgzMjg5LCAweDI4RTYsIDB4MzI4QSwgMHgyOEU4LCAweDMyOEIsIDB4MjhFOSwNCisgICAgMHgzMjhDLCAweDI4RUEsIDB4MzI4RCwgMHgyOEVCLCAweDMyOEUsIDB4MjhFQywgMHgzMjhGLCAweDI4RUQsDQorICAgIDB4MzI5MCwgMHgyOEU3LCAweDMyOTEsIDB4MUZFMSwgMHgzMjkyLCAweDFGRTAsIDB4MzI5MywgMHgxRkUyLA0KKyAgICAweDMyOTQsIDB4MUZEQywgMHgzMjk1LCAweDI4RkYsIDB4MzI5NiwgMHgxRkU1LCAweDMyOTcsIDB4MjhGQywNCisgICAgMHgzMjk4LCAweDFGREUsIDB4MzI5OSwgMHgyMDFGLCAweDMyOUEsIDB4MjhGOSwgMHgzMjlCLCAweDI4RjgsDQorICAgIDB4MzI5QywgMHgyOEZFLCAweDMyOUQsIDB4MjA3RiwgMHgzMjlFLCAweDFGRkYsIDB4MzI5RiwgMHgyOEVGLA0KKyAgICAweDMyQTAsIDB4MjhGNiwgMHgzMkExLCAweDI4RjcsIDB4MzJBMiwgMHgyOEZCLCAweDMyQTMsIDB4MjhGQSwNCisgICAgMHgzMkE0LCAweDFEQkQsIDB4MzJBNSwgMHgxREJFLCAweDMyQTYsIDB4MURCRiwgMHgzMkE3LCAweDFEQzAsDQorICAgIDB4MzJBOCwgMHgxREMxLCAweDMyQTksIDB4MUZEQSwgMHgzMkFBLCAweDFGREQsIDB4MzJBQiwgMHgxRkRGLA0KKyAgICAweDMyQUMsIDB4MUZFMywgMHgzMkFELCAweDFGRDksIDB4MzJBRSwgMHgxRkU0LCAweDMyQUYsIDB4MUZEQiwNCisgICAgMHgzMkIwLCAweDFGRDgsIDB4MzJCMSwgMHgyODA4LCAweDMyQjIsIDB4MjgwOSwgMHgzMkIzLCAweDI4MEEsDQorICAgIDB4MzJCNCwgMHgyODBCLCAweDMyQjUsIDB4MjgwQywgMHgzMkI2LCAweDI4MEQsIDB4MzJCNywgMHgyODBFLA0KKyAgICAweDMyQjgsIDB4MjgwRiwgMHgzMkI5LCAweDI4MTAsIDB4MzJCQSwgMHgyODExLCAweDMyQkIsIDB4MjgxMiwNCisgICAgMHgzMkJDLCAweDI4MTMsIDB4MzJCRCwgMHgyODE0LCAweDMyQkUsIDB4MjgxNSwgMHgzMkJGLCAweDI4MTYsDQorICAgIDB4MzJEMCwgMHgyOEFELCAweDMyRDEsIDB4MjhBRSwgMHgzMkQyLCAweDI4QUYsIDB4MzJEMywgMHgyOEIwLA0KKyAgICAweDMyRDQsIDB4MjhCMSwgMHgzMkQ1LCAweDI4QjIsIDB4MzJENiwgMHgyOEIzLCAweDMyRDcsIDB4MjhCNCwNCisgICAgMHgzMkQ4LCAweDI4QjUsIDB4MzJEOSwgMHgyOEI2LCAweDMyREEsIDB4MjhCNywgMHgzMkRCLCAweDI4QjgsDQorICAgIDB4MzJEQywgMHgyOEI5LCAweDMyREQsIDB4MjhCQSwgMHgzMkRFLCAweDI4QkIsIDB4MzJERiwgMHgyOEJDLA0KKyAgICAweDMyRTAsIDB4MjhCRCwgMHgzMkUxLCAweDI4QkUsIDB4MzJFMiwgMHgyOEJGLCAweDMyRTMsIDB4MjhDMCwNCisgICAgMHgzMkU0LCAweDI4QzEsIDB4MzJFNSwgMHgyOEMyLCAweDMyRTYsIDB4MjhDMywgMHgzMkU3LCAweDI4QzQsDQorICAgIDB4MzJFOCwgMHgyOEM1LCAweDMyRTksIDB4MjhDNiwgMHgzMkVBLCAweDI4QzcsIDB4MzJFQiwgMHgyOEM4LA0KKyAgICAweDMyRUMsIDB4MjhDOSwgMHgzMkVELCAweDI4Q0EsIDB4MzJFRSwgMHgyOENCLCAweDMyRUYsIDB4MjhDQywNCisgICAgMHgzMkYwLCAweDI4Q0QsIDB4MzJGMSwgMHgyOENFLCAweDMyRjIsIDB4MjhDRiwgMHgzMkYzLCAweDI4RDAsDQorICAgIDB4MzJGNCwgMHgyOEQxLCAweDMyRjUsIDB4MjhEMiwgMHgzMkY2LCAweDI4RDMsIDB4MzJGNywgMHgyOEQ0LA0KKyAgICAweDMyRjgsIDB4MjhENSwgMHgzMkY5LCAweDI4RDYsIDB4MzJGQSwgMHgyOEQ3LCAweDMyRkIsIDB4MjhEOCwNCisgICAgMHgzMkZDLCAweDI4RDksIDB4MzJGRCwgMHgyOERBLCAweDMyRkUsIDB4MjhEQiwgMHgzMzAwLCAweDFGNzAsDQorICAgIDB4MzMwMSwgMHgyRTYyLCAweDMzMDIsIDB4MkU2MywgMHgzMzAzLCAweDFGNkEsIDB4MzMwNCwgMHgyRTY0LA0KKyAgICAweDMzMDUsIDB4MUZGNywgMHgzMzA2LCAweDJFNjUsIDB4MzMwNywgMHgyRTY5LCAweDMzMDgsIDB4MkU2NywNCisgICAgMHgzMzA5LCAweDJFNkMsIDB4MzMwQSwgMHgyRTZBLCAweDMzMEIsIDB4MkU2RSwgMHgzMzBDLCAweDJFNzAsDQorICAgIDB4MzMwRCwgMHgxREFCLCAweDMzMEUsIDB4MkU3MSwgMHgzMzBGLCAweDJFNzIsIDB4MzMxMCwgMHgyRTczLA0KKyAgICAweDMzMTEsIDB4MkU3NCwgMHgzMzEyLCAweDJFNzUsIDB4MzMxMywgMHgyRTc2LCAweDMzMTQsIDB4MURBMiwNCisgICAgMHgzMzE1LCAweDFGNjksIDB4MzMxNiwgMHgxRjY3LCAweDMzMTcsIDB4MkU3OCwgMHgzMzE4LCAweDFGNjgsDQorICAgIDB4MzMxOSwgMHgyRTdBLCAweDMzMUEsIDB4MkU3QywgMHgzMzFCLCAweDJFN0QsIDB4MzMxQywgMHgyRTdFLA0KKyAgICAweDMzMUQsIDB4MkU3RiwgMHgzMzFFLCAweDFGNzMsIDB4MzMxRiwgMHgyRTgwLCAweDMzMjAsIDB4MkU4MSwNCisgICAgMHgzMzIxLCAweDJFODIsIDB4MzMyMiwgMHgxRjY2LCAweDMzMjMsIDB4MUY2QiwgMHgzMzI0LCAweDJFODMsDQorICAgIDB4MzMyNSwgMHgyRTg1LCAweDMzMjYsIDB4MURBQywgMHgzMzI3LCAweDFEQTYsIDB4MzMyOCwgMHgyRTg4LA0KKyAgICAweDMzMjksIDB4MkU4OSwgMHgzMzJBLCAweDFGNzQsIDB4MzMyQiwgMHgxREFFLCAweDMzMkQsIDB4MkU4QiwNCisgICAgMHgzMzJFLCAweDJFOEUsIDB4MzMyRiwgMHgyRThGLCAweDMzMzAsIDB4MkU5MCwgMHgzMzMxLCAweDFGNzEsDQorICAgIDB4MzMzMiwgMHgyRTkxLCAweDMzMzMsIDB4MjA4NywgMHgzMzM0LCAweDJFOTQsIDB4MzMzNSwgMHgyRTk1LA0KKyAgICAweDMzMzYsIDB4MURBOCwgMHgzMzM3LCAweDJFOUEsIDB4MzMzOCwgMHgyRTlDLCAweDMzMzksIDB4MUY2RSwNCisgICAgMHgzMzNBLCAweDJFOUQsIDB4MzMzQiwgMHgxRjZGLCAweDMzM0MsIDB4MkU5NiwgMHgzMzNELCAweDJFOUUsDQorICAgIDB4MzMzRSwgMHgyRUEwLCAweDMzM0YsIDB4MkVBMSwgMHgzMzQwLCAweDJFQTIsIDB4MzM0MSwgMHgyRTlGLA0KKyAgICAweDMzNDIsIDB4MUY2RCwgMHgzMzQzLCAweDJFQTMsIDB4MzM0NCwgMHgyRUE0LCAweDMzNDUsIDB4MkVBNSwNCisgICAgMHgzMzQ2LCAweDJFQTYsIDB4MzM0NywgMHgxRjcyLCAweDMzNDgsIDB4MkVBNywgMHgzMzQ5LCAweDFEQTEsDQorICAgIDB4MzM0QSwgMHgxREFGLCAweDMzNEIsIDB4MkVBOCwgMHgzMzRDLCAweDJFQTksIDB4MzM0RCwgMHgxREE0LA0KKyAgICAweDMzNEUsIDB4MjA4OCwgMHgzMzRGLCAweDJFQUEsIDB4MzM1MCwgMHgyRUFCLCAweDMzNTEsIDB4MURBOSwNCisgICAgMHgzMzUyLCAweDJFQUUsIDB4MzM1MywgMHgyRUIyLCAweDMzNTQsIDB4MkVBRiwgMHgzMzU1LCAweDJFQjMsDQorICAgIDB4MzM1NiwgMHgyRUI0LCAweDMzNTcsIDB4MUY2QywgMHgzMzcxLCAweDJFNTUsIDB4MzM3QiwgMHgyMDgzLA0KKyAgICAweDMzN0MsIDB4MURDNywgMHgzMzdELCAweDFEQzYsIDB4MzM3RSwgMHgxREM1LCAweDMzN0YsIDB4MUY3NiwNCisgICAgMHgzMzg1LCAweDFGNUYsIDB4MzM4NiwgMHgxRjYwLCAweDMzODcsIDB4MUY2MSwgMHgzMzg4LCAweDIwMDAsDQorICAgIDB4MzM4OSwgMHgyMDAxLCAweDMzOEQsIDB4MkU1OCwgMHgzMzhFLCAweDFEQjQsIDB4MzM4RiwgMHgxREI1LA0KKyAgICAweDMzOTAsIDB4MUY2MywgMHgzMzk2LCAweDFGNjUsIDB4MzM5NywgMHgxRjU4LCAweDMzOTgsIDB4MUY1QSwNCisgICAgMHgzMzlCLCAweDJFNTksIDB4MzM5QywgMHgxREIxLCAweDMzOUQsIDB4MURCMiwgMHgzMzlFLCAweDFEQjMsDQorICAgIDB4MzM5RiwgMHgxRkZBLCAweDMzQTAsIDB4MUY1NCwgMHgzM0ExLCAweDFEQjcsIDB4MzNBMiwgMHgxRjU1LA0KKyAgICAweDMzQTMsIDB4MUZGQiwgMHgzM0E0LCAweDFGNTYsIDB4MzNBNSwgMHgxRjU3LCAweDMzQTYsIDB4MUZGQywNCisgICAgMHgzM0IwLCAweDFGNUUsIDB4MzNCMSwgMHgxRjVELCAweDMzQjIsIDB4MUY1QywgMHgzM0IzLCAweDFGNUIsDQorICAgIDB4MzNDMiwgMHgyRTUwLCAweDMzQzQsIDB4MURCNiwgMHgzM0M4LCAweDIwMDIsIDB4MzNDQiwgMHgxRjYyLA0KKyAgICAweDMzQ0MsIDB4MUZGNiwgMHgzM0NELCAweDFEQkIsIDB4MzNENCwgMHgxRjY0LCAweDMzRDcsIDB4MkU1RCwNCisgICAgMHgzM0Q4LCAweDJFNUUsIDB4MzNEQSwgMHgyRTRCLCAweDM0MDIsIDB4MzU4MiwgMHgzNDA1LCAweDNDMUIsDQorICAgIDB4MzQwNiwgMHg0MzVBLCAweDM0MjcsIDB4MzY1NiwgMHgzNDJDLCAweDQzNUUsIDB4MzQyRSwgMHgzNzg4LA0KKyAgICAweDM0NjgsIDB4MzZERiwgMHgzNDZBLCAweDQzNzUsIDB4MzQ4OCwgMHgzQzUyLCAweDM0OTIsIDB4NDM4RSwNCisgICAgMHgzNEI1LCAweDQxOTksIDB4MzRCQywgMHg0Mzk3LCAweDM0QzEsIDB4NDdEMCwgMHgzNEM3LCAweDQzOUIsDQorICAgIDB4MzREQiwgMHgzQzQxLCAweDM1MUYsIDB4MzYyOSwgMHgzNTNFLCAweDM3MUUsIDB4MzU1RCwgMHg0M0JELA0KKyAgICAweDM1NUUsIDB4NDNCRSwgMHgzNTYzLCAweDQzQzAsIDB4MzU2RSwgMHg0M0M0LCAweDM1QTYsIDB4NDNEOSwNCisgICAgMHgzNUE4LCAweDQzREIsIDB4MzVDNSwgMHg0M0UxLCAweDM1REEsIDB4NDNFQSwgMHgzNURFLCAweDRFNjMsDQorICAgIDB4MzVGNCwgMHg0M0YzLCAweDM2MDUsIDB4NDNGQSwgMHgzNjE0LCAweDRBQkIsIDB4MzY0QSwgMHg0NDIxLA0KKyAgICAweDM2OTEsIDB4NDQ0MSwgMHgzNjk2LCAweDQ0NDUsIDB4MzY5OSwgMHg0NDQzLCAweDM2Q0YsIDB4NDQ1NiwNCisgICAgMHgzNzYxLCAweDQ0NzgsIDB4Mzc2MiwgMHg0NDc5LCAweDM3NkIsIDB4NDQ3RCwgMHgzNzZDLCAweDQ0N0MsDQorICAgIDB4Mzc3NSwgMHg0NDgwLCAweDM3OEQsIDB4MzYxQSwgMHgzN0MxLCAweDQ0OEUsIDB4MzdFMiwgMHgzNzJCLA0KKyAgICAweDM3RTgsIDB4NDRBMiwgMHgzN0Y0LCAweDQ0QTUsIDB4MzdGRCwgMHg0NEE4LCAweDM4MDAsIDB4NDRBQSwNCisgICAgMHgzODJGLCAweDQ0QjQsIDB4MzgzNiwgMHg0NEI1LCAweDM4NDAsIDB4NDRCNiwgMHgzODVDLCAweDQ0QkEsDQorICAgIDB4Mzg2MSwgMHg0NEJDLCAweDM4QTEsIDB4NEVDQiwgMHgzOEFELCAweDRBQkMsIDB4MzhGQSwgMHgzNjFDLA0KKyAgICAweDM5MTcsIDB4NDREOSwgMHgzOTFBLCAweDQ0REMsIDB4Mzk2RiwgMHg0NEVCLCAweDM5QTQsIDB4NEU5QSwNCisgICAgMHgzOUI4LCAweDRFOUIsIDB4M0E1QywgMHg0RTlGLCAweDNBNkUsIDB4NDUzMSwgMHgzQTczLCAweDQ1MzQsDQorICAgIDB4M0E4NSwgMHg0RUFFLCAweDNBQzQsIDB4NEVBNywgMHgzQUNCLCAweDRFQTgsIDB4M0FENiwgMHg0NTQzLA0KKyAgICAweDNBRDcsIDB4NDU1RSwgMHgzQUVBLCAweDQ1NEQsIDB4M0FGMywgMHgzQzQwLCAweDNCMEUsIDB4NDU1OCwNCisgICAgMHgzQjFBLCAweDQ1NUMsIDB4M0IxQywgMHg0NTVELCAweDNCMjIsIDB4M0M0OSwgMHgzQjZELCAweDQ1OEMsDQorICAgIDB4M0I3NywgMHg0NTg1LCAweDNCODcsIDB4NDVBMiwgMHgzQjg4LCAweDM2OEQsIDB4M0I4RCwgMHg0NUE0LA0KKyAgICAweDNCQTQsIDB4NDVBQSwgMHgzQkI2LCAweDQyMEUsIDB4M0JDMywgMHg0MjBGLCAweDNCQ0QsIDB4NDVCOCwNCisgICAgMHgzQkYwLCAweDQ1QzksIDB4M0JGMywgMHg0RUI3LCAweDNDMEYsIDB4NDIxNywgMHgzQzI2LCAweDQ1REYsDQorICAgIDB4M0NDMywgMHg0NUZDLCAweDNDRDIsIDB4NDYwMSwgMHgzRDExLCAweDQ2MjUsIDB4M0QxRSwgMHg0NjMwLA0KKyAgICAweDNEMzEsIDB4NEVCRSwgMHgzRDRFLCAweDFERTcsIDB4M0Q2NCwgMHg0NjRBLCAweDNEOUEsIDB4NDY1OCwNCisgICAgMHgzREMwLCAweDQ2NkEsIDB4M0RDQywgMHg0QUJELCAweDNERDQsIDB4NDY2RiwgMHgzRTA1LCAweDQ2N0IsDQorICAgIDB4M0UzRiwgMHg0MjQ4LCAweDNFNDAsIDB4NEVDQSwgMHgzRTYwLCAweDQ2OEIsIDB4M0U2NiwgMHg0NjhELA0KKyAgICAweDNFNjgsIDB4NDY4RSwgMHgzRTgzLCAweDQ2OTUsIDB4M0U4QSwgMHgzQzQzLCAweDNFOTQsIDB4NDY5QiwNCisgICAgMHgzRURBLCAweDNDNDgsIDB4M0Y1NywgMHg0NkNCLCAweDNGNzIsIDB4NDI1OCwgMHgzRjc1LCAweDQ2RDksDQorICAgIDB4M0Y3NywgMHg0NkRCLCAweDNGQUUsIDB4NDZFRCwgMHgzRkIxLCAweDM3NTQsIDB4M0ZDOSwgMHg0NkY4LA0KKyAgICAweDNGRDcsIDB4NDZGRCwgMHgzRkRDLCAweDRBQkUsIDB4NDAzOSwgMHg0NzBGLCAweDQwNTgsIDB4NDcxNiwNCisgICAgMHg0MDkzLCAweDNDNEMsIDB4NDEwMywgMHgzQzRGLCAweDQxMDUsIDB4NDczQiwgMHg0MTQ4LCAweDQ3NDcsDQorICAgIDB4NDE0RiwgMHg0NzRBLCAweDQxNjMsIDB4NDc0RSwgMHg0MUI0LCAweDQ3NUQsIDB4NDFCRiwgMHg0NzYwLA0KKyAgICAweDQxRTYsIDB4NDc2QiwgMHg0MUVFLCAweDQ3NkYsIDB4NDFGMywgMHg0NzZDLCAweDQyMDcsIDB4NDc3NiwNCisgICAgMHg0MjBFLCAweDQ3NzksIDB4NDI2NCwgMHgzNzYwLCAweDQyOTMsIDB4M0M1MCwgMHg0MkM2LCAweDQ3OUYsDQorICAgIDB4NDJENiwgMHg0N0FBLCAweDQyREQsIDB4NDdBRSwgMHg0MzAyLCAweDQ3QkMsIDB4NDMyQiwgMHg0N0M5LA0KKyAgICAweDQzNDMsIDB4NDdDQiwgMHg0M0VFLCAweDQ3RjcsIDB4NDNGMCwgMHg0N0ZBLCAweDQ0MDgsIDB4NDgwMCwNCisgICAgMHg0NDBDLCAweDNDNDIsIDB4NDQxNywgMHg0ODAyLCAweDQ0MUMsIDB4NDgwMywgMHg0NDIyLCAweDQ4MDUsDQorICAgIDB4NDQ1MywgMHgzNzczLCAweDQ0NUIsIDB4NDJBNCwgMHg0NDc2LCAweDQ4MUMsIDB4NDQ3QSwgMHg0ODFELA0KKyAgICAweDQ0OTEsIDB4NDgyMywgMHg0NEIzLCAweDQ4M0UsIDB4NDRCRSwgMHg0ODNDLCAweDQ0RDQsIDB4NDgzRCwNCisgICAgMHg0NTA4LCAweDQ4NUMsIDB4NDUwRCwgMHg0ODU4LCAweDQ1MjUsIDB4Mzc3RSwgMHg0NTQzLCAweDQ4NkMsDQorICAgIDB4NDU3QSwgMHgzQzRCLCAweDQ1OUQsIDB4NDJENCwgMHg0NUI4LCAweDQ4QTAsIDB4NDVCRSwgMHg0QUJGLA0KKyAgICAweDQ1RTUsIDB4NDhCQSwgMHg0NUVBLCAweDQyRDksIDB4NDYwRiwgMHg0OENBLCAweDQ2MTAsIDB4NEFDMCwNCisgICAgMHg0NjQxLCAweDQ4RDgsIDB4NDY2NSwgMHgzQzRFLCAweDQ2QTEsIDB4NDhFOSwgMHg0NkFFLCAweDNDNTEsDQorICAgIDB4NDZBRiwgMHg0OEVELCAweDQ3MEMsIDB4NDkwMiwgMHg0NzFGLCAweDRFRkIsIDB4NDc2NCwgMHg0OTE4LA0KKyAgICAweDQ3RTYsIDB4Mzc5MCwgMHg0N0ZELCAweDQ5MjQsIDB4NDgxNiwgMHg0OTJFLCAweDQ4MUUsIDB4NEYwMSwNCisgICAgMHg0ODQ0LCAweDQyRjUsIDB4NDg0RSwgMHg0OTNBLCAweDQ4QjUsIDB4NDk1QiwgMHg0OUIwLCAweDQzMUYsDQorICAgIDB4NDlFNywgMHg0OUQyLCAweDQ5RkEsIDB4NDlENiwgMHg0QTA0LCAweDQ5REIsIDB4NEEyOSwgMHg0OURFLA0KKyAgICAweDRBQkMsIDB4NDlGNiwgMHg0QjM4LCAweDM1REYsIDB4NEIzQiwgMHg0QTBFLCAweDRCN0UsIDB4NEFDMSwNCisgICAgMHg0QkMyLCAweDRBMzMsIDB4NEJDQSwgMHg0QTM1LCAweDRCRDIsIDB4NEEzNywgMHg0QkU4LCAweDNDNDYsDQorICAgIDB4NEMxNywgMHg0MzM0LCAweDRDMjAsIDB4NEE0OCwgMHg0QzM4LCAweDRBQzIsIDB4NENDNCwgMHg0QTg0LA0KKyAgICAweDRDRDEsIDB4NEE4NywgMHg0Q0UxLCAweDRBQzMsIDB4NEQwNywgMHg0QTlCLCAweDRENzcsIDB4NEFBQiwNCisgICAgMHg0RTAwLCAweDA0QjAsIDB4NEUwMSwgMHgwQkI4LCAweDRFMDIsIDB4NDM1MiwgMHg0RTAzLCAweDA4RTMsDQorICAgIDB4NEUwNCwgMHgzN0Q4LCAweDRFMDUsIDB4MzdEOSwgMHg0RTA3LCAweDBFQUEsIDB4NEUwOCwgMHgwOUNFLA0KKyAgICAweDRFMDksIDB4MDg3RSwgMHg0RTBBLCAweDA5Q0QsIDB4NEUwQiwgMHgwNTNDLCAweDRFMEMsIDB4NEFDNCwNCisgICAgMHg0RTBELCAweDBEQzYsIDB4NEUwRSwgMHgwRjI5LCAweDRFMEYsIDB4NDM1MywgMHg0RTEwLCAweDBGRkIsDQorICAgIDB4NEUxMSwgMHgwNEQxLCAweDRFMTIsIDB4NDM1NCwgMHg0RTE0LCAweDA1Q0MsIDB4NEUxNSwgMHgwRkZDLA0KKyAgICAweDRFMTYsIDB4MEE0OCwgMHg0RTE3LCAweDEwRDcsIDB4NEUxOCwgMHgwNjcwLCAweDRFMTksIDB4MEUwQSwNCisgICAgMHg0RTFFLCAweDA5Q0YsIDB4NEUxRiwgMHgzN0RBLCAweDRFMjEsIDB4MEY4NiwgMHg0RTIzLCAweDRBQzUsDQorICAgIDB4NEUyNCwgMHg0QUM2LCAweDRFMjYsIDB4MEUxMiwgMHg0RTI4LCAweDIwQjMsIDB4NEUyOSwgMHg0MzU1LA0KKyAgICAweDRFMkEsIDB4MEZGRCwgMHg0RTJCLCAweDM3REIsIDB4NEUyQywgMHgzNzRELCAweDRFMkQsIDB4MEJBNCwNCisgICAgMHg0RTJFLCAweDQzNTYsIDB4NEUyRiwgMHgzN0RDLCAweDRFMzAsIDB4MzdERCwgMHg0RTMxLCAweDBGRkUsDQorICAgIDB4NEUzMiwgMHgwNkYyLCAweDRFMzYsIDB4MEZGRiwgMHg0RTM3LCAweDM2OUQsIDB4NEUzOCwgMHgwNjE5LA0KKyAgICAweDRFMzksIDB4MEI2RSwgMHg0RTNCLCAweDA5MTMsIDB4NEUzQywgMHgxMDAwLCAweDRFM0YsIDB4MTAwMSwNCisgICAgMHg0RTQwLCAweDM3REUsIDB4NEU0MSwgMHgzN0RGLCAweDRFNDIsIDB4MTAwMiwgMHg0RTQzLCAweDBDRUIsDQorICAgIDB4NEU0NCwgMHgzN0UwLCAweDRFNDUsIDB4MDY3MSwgMHg0RTQ3LCAweDQzNTcsIDB4NEU0OCwgMHgzNzJFLA0KKyAgICAweDRFNEIsIDB4MENFRCwgMHg0RTRELCAweDBDQkIsIDB4NEU0RSwgMHgwNzc3LCAweDRFNEYsIDB4MEU2MSwNCisgICAgMHg0RTUxLCAweDQzNTksIDB4NEU1NSwgMHgxOTUwLCAweDRFNTYsIDB4MTAwMywgMHg0RTU3LCAweDA5RDAsDQorICAgIDB4NEU1OCwgMHgxMDA0LCAweDRFNTksIDB4MDUzNSwgMHg0RTVBLCAweDM3RTEsIDB4NEU1RCwgMHgwNkRELA0KKyAgICAweDRFNUUsIDB4MDdBNCwgMHg0RTVGLCAweDBFRjUsIDB4NEU2MiwgMHgxMjMzLCAweDRFNjksIDB4NDM1QywNCisgICAgMHg0RTcxLCAweDBGNUEsIDB4NEU3MywgMHgwQ0Q1LCAweDRFNzksIDB4NEFDNywgMHg0RTdFLCAweDA1RTEsDQorICAgIDB4NEU3RiwgMHgzN0UyLCAweDRFODAsIDB4MDY0RiwgMHg0RTgyLCAweDEwMDUsIDB4NEU4NSwgMHgxMDA2LA0KKyAgICAweDRFODYsIDB4MEY4MywgMHg0RTg4LCAweDBGMjcsIDB4NEU4OSwgMHgwQUVBLCAweDRFOEEsIDB4MTAwOCwNCisgICAgMHg0RThCLCAweDA4QzQsIDB4NEU4QywgMHgwQ0NCLCAweDRFOEQsIDB4MzdFMywgMHg0RThFLCAweDEwMEIsDQorICAgIDB4NEU5MSwgMHgwNEUwLCAweDRFOTIsIDB4MDc5MywgMHg0RTk0LCAweDA3OTIsIDB4NEU5NSwgMHgwNEFBLA0KKyAgICAweDRFOTYsIDB4MzdFNCwgMHg0RTk4LCAweDBGRjEsIDB4NEU5OSwgMHgwRkYwLCAweDRFOUIsIDB4MDgyMywNCisgICAgMHg0RTlDLCAweDA0NjUsIDB4NEU5RCwgMHg0MzVELCAweDRFOUUsIDB4MTAwQywgMHg0RTlGLCAweDEwMEQsDQorICAgIDB4NEVBMCwgMHgxMDBFLCAweDRFQTEsIDB4MEU2MiwgMHg0RUEyLCAweDEwMEYsIDB4NEVBNCwgMHgwN0E2LA0KKyAgICAweDRFQTUsIDB4MDRBQiwgMHg0RUE2LCAweDBFQTAsIDB4NEVBOCwgMHgwNjk2LCAweDRFQUIsIDB4MDY5NywNCisgICAgMHg0RUFDLCAweDA2OTgsIDB4NEVBRCwgMHgwQkZFLCAweDRFQUUsIDB4MEY4NCwgMHg0RUIwLCAweDEwMTAsDQorICAgIDB4NEVCMywgMHgxMDExLCAweDRFQjYsIDB4MTAxMiwgMHg0RUI5LCAweDM3RTUsIDB4NEVCQSwgMHgwQTEzLA0KKyAgICAweDRFQkIsIDB4MzYyMCwgMHg0RUJDLCAweDQzNUYsIDB4NEVDMCwgMHgwOTQ0LCAweDRFQzEsIDB4MEExNCwNCisgICAgMHg0RUMyLCAweDEwMTcsIDB4NEVDMywgMHg0MzYwLCAweDRFQzQsIDB4MTAxNSwgMHg0RUM2LCAweDEwMTYsDQorICAgIDB4NEVDNywgMHgwNjcyLCAweDRFQzgsIDB4NDM2MSwgMHg0RUNBLCAweDA4MTMsIDB4NEVDQiwgMHgwNTcwLA0KKyAgICAweDRFQ0QsIDB4MTAxNCwgMHg0RUNFLCAweDEwMTMsIDB4NEVDRiwgMHgwREY5LCAweDRFRDAsIDB4MzdFNiwNCisgICAgMHg0RUQ0LCAweDA4OTQsIDB4NEVENSwgMHgwODkzLCAweDRFRDYsIDB4MEIxRSwgMHg0RUQ3LCAweDEwMTgsDQorICAgIDB4NEVEOCwgMHgwREM3LCAweDRFRDksIDB4MEE4QiwgMHg0RURBLCAweDQzNjMsIDB4NEVERCwgMHgwMjkwLA0KKyAgICAweDRFREUsIDB4MTAxOSwgMHg0RURGLCAweDEwMUIsIDB4NEVFMCwgMHgzN0U3LCAweDRFRTEsIDB4MjBCNCwNCisgICAgMHg0RUUzLCAweDBCNDUsIDB4NEVFNCwgMHgwRkE5LCAweDRFRTUsIDB4MDQ4RSwgMHg0RUVCLCAweDQzNjIsDQorICAgIDB4NEVFRCwgMHgxMDFBLCAweDRFRUUsIDB4MDUzRSwgMHg0RUYwLCAweDA2QkMsIDB4NEVGMSwgMHg0MzY0LA0KKyAgICAweDRFRjIsIDB4MEJBNSwgMHg0RUYzLCAweDRBQzgsIDB4NEVGNSwgMHg0MzY1LCAweDRFRjYsIDB4MDc0NSwNCisgICAgMHg0RUY3LCAweDEwMUMsIDB4NEVGQiwgMHgwQ0RBLCAweDRFRkMsIDB4MjBCNSwgMHg0RUZELCAweDM3RTgsDQorICAgIDB4NEVGRiwgMHgzN0U5LCAweDRGMDAsIDB4MjBCNiwgMHg0RjAxLCAweDA2MjcsIDB4NEYwMywgMHgyMEI3LA0KKyAgICAweDRGMDksIDB4MTAxRCwgMHg0RjBBLCAweDA0OEYsIDB4NEYwQiwgMHgzN0VBLCAweDRGMEMsIDB4NEFDOSwNCisgICAgMHg0RjBELCAweDA3OTQsIDB4NEYwRSwgMHgwNjI4LCAweDRGMEYsIDB4MERFQywgMHg0RjEwLCAweDBENDYsDQorICAgIDB4NEYxMSwgMHgwNjczLCAweDRGMTUsIDB4MzdFQiwgMHg0RjE2LCAweDQzNjYsIDB4NEYxOSwgMHg0QUNBLA0KKyAgICAweDRGMUEsIDB4MDU3MSwgMHg0RjFDLCAweDEwNDAsIDB4NEYxRCwgMHgwQzNCLCAweDRGMkIsIDB4NEFDQiwNCisgICAgMHg0RjJFLCAweDRBQ0MsIDB4NEYyRiwgMHgwRDIyLCAweDRGMzAsIDB4MTAxRiwgMHg0RjMxLCAweDRBQ0QsDQorICAgIDB4NEYzNCwgMHgwRDUwLCAweDRGMzYsIDB4MEZBQSwgMHg0RjM3LCAweDQzNjgsIDB4NEYzOCwgMHgwOUYzLA0KKyAgICAweDRGMzksIDB4MjBCOCwgMHg0RjNBLCAweDA4OTUsIDB4NEYzQiwgMHgzN0VELCAweDRGM0MsIDB4MDhDNSwNCisgICAgMHg0RjNELCAweDA1NDAsIDB4NEYzRSwgMHg0MzY5LCAweDRGNDMsIDB4MEJFRCwgMHg0RjQ2LCAweDBCNjAsDQorICAgIDB4NEY0NywgMHgxMDIzLCAweDRGNDgsIDB4NDE4QiwgMHg0RjQ5LCAweDM3RUUsIDB4NEY0RCwgMHgwNDkwLA0KKyAgICAweDRGNEUsIDB4MEJGRiwgMHg0RjRGLCAweDA5NDUsIDB4NEY1MCwgMHgwODI0LCAweDRGNTEsIDB4MEYwRSwNCisgICAgMHg0RjUzLCAweDBCMkUsIDB4NEY1NCwgMHgzN0VGLCAweDRGNTUsIDB4MDUzRiwgMHg0RjU2LCAweDIwQjksDQorICAgIDB4NEY1NywgMHgxMDIyLCAweDRGNTgsIDB4NDM2QSwgMHg0RjU5LCAweDBGMjgsIDB4NEY1QSwgMHgxMDFFLA0KKyAgICAweDRGNUIsIDB4MTAyMCwgMHg0RjVDLCAweDA4NUUsIDB4NEY1RCwgMHgxMDIxLCAweDRGNUUsIDB4MTFEMywNCisgICAgMHg0RjVGLCAweDQxOEMsIDB4NEY2MCwgMHgzN0VDLCAweDRGNjQsIDB4NDM2NywgMHg0RjY5LCAweDEwMjksDQorICAgIDB4NEY2QSwgMHg0MThELCAweDRGNkMsIDB4NDE4RSwgMHg0RjZGLCAweDEwMkMsIDB4NEY3MCwgMHgxMDJBLA0KKyAgICAweDRGNzMsIDB4MDU0MiwgMHg0Rjc1LCAweDBFMEIsIDB4NEY3NiwgMHgxMDI0LCAweDRGNzcsIDB4NDM2QywNCisgICAgMHg0Rjc4LCAweDQzNkQsIDB4NEY3QSwgMHgzN0YwLCAweDRGN0IsIDB4MTAyOCwgMHg0RjdDLCAweDA3QTcsDQorICAgIDB4NEY3RCwgMHgzN0YxLCAweDRGN0UsIDB4MzdGMiwgMHg0RjdGLCAweDA4OTYsIDB4NEY4MiwgMHg0MzZFLA0KKyAgICAweDRGODMsIDB4MDVFMiwgMHg0Rjg0LCAweDRBQ0UsIDB4NEY4NSwgMHg0MzZGLCAweDRGODYsIDB4MTAyRCwNCisgICAgMHg0Rjg4LCAweDEwMjUsIDB4NEY4QSwgMHgyMEJCLCAweDRGOEIsIDB4MEZBQiwgMHg0RjhELCAweDA4QzYsDQorICAgIDB4NEY4RiwgMHgxMDI2LCAweDRGOTEsIDB4MTAyQiwgMHg0RjkyLCAweDIwQkEsIDB4NEY5NCwgMHgyMEJELA0KKyAgICAweDRGOTYsIDB4MTAyRSwgMHg0Rjk3LCAweDM3RjMsIDB4NEY5OCwgMHgxMDI3LCAweDRGOUEsIDB4MjBCQywNCisgICAgMHg0RjlCLCAweDA2OTksIDB4NEY5RCwgMHgwNDkxLCAweDRGOUUsIDB4NEFDRiwgMHg0RkEwLCAweDA2OUEsDQorICAgIDB4NEZBMSwgMHgwNTQxLCAweDRGQUIsIDB4MTFENCwgMHg0RkFELCAweDBFQTcsIDB4NEZBRSwgMHgwREUwLA0KKyAgICAweDRGQUYsIDB4MDdBOCwgMHg0RkIyLCAweDQzNzEsIDB4NEZCNSwgMHgwOUY1LCAweDRGQjYsIDB4MEY3RiwNCisgICAgMHg0RkI3LCAweDRBRDAsIDB4NEZCRSwgMHgzN0Y0LCAweDRGQkYsIDB4MEUyOCwgMHg0RkMyLCAweDA3MEUsDQorICAgIDB4NEZDMywgMHgwQjA1LCAweDRGQzQsIDB4MDU2NCwgMHg0RkM1LCAweDQzNzIsIDB4NEZDOSwgMHgyMEFDLA0KKyAgICAweDRGQ0EsIDB4MDk1RCwgMHg0RkNCLCAweDQzNzMsIDB4NEZDRCwgMHgyMEJFLCAweDRGQ0UsIDB4MTAzMiwNCisgICAgMHg0RkNGLCAweDM3RjUsIDB4NEZEMCwgMHgxMDM3LCAweDRGRDEsIDB4MTAzNSwgMHg0RkQyLCAweDQzNzQsDQorICAgIDB4NEZEMywgMHgzQzJGLCAweDRGRDQsIDB4MTAzMCwgMHg0RkQ3LCAweDBCMEYsIDB4NEZEOCwgMHgxMDMzLA0KKyAgICAweDRGREEsIDB4MTAzNiwgMHg0RkRCLCAweDEwMzQsIDB4NEZERCwgMHgwRTJELCAweDRGREYsIDB4MTAzMSwNCisgICAgMHg0RkUwLCAweDFERUMsIDB4NEZFMSwgMHgwOUY0LCAweDRGRTMsIDB4MEVBMSwgMHg0RkU0LCAweDEwMzgsDQorICAgIDB4NEZFNSwgMHgxMDM5LCAweDRGRTYsIDB4NDM3MCwgMHg0RkVFLCAweDA5MkUsIDB4NEZFRiwgMHgxMDQ2LA0KKyAgICAweDRGRjEsIDB4MzVBMywgMHg0RkYyLCAweDQzNzYsIDB4NEZGMywgMHgwRDA2LCAweDRGRjUsIDB4MERBOCwNCisgICAgMHg0RkY2LCAweDEwNDEsIDB4NEZGOCwgMHgwRTQwLCAweDRGRkEsIDB4MDUzNiwgMHg0RkZELCAweDM3RjYsDQorICAgIDB4NEZGRSwgMHgxMDQ1LCAweDRGRkYsIDB4MjBDMSwgMHg1MDAwLCAweDM3RjcsIDB4NTAwMSwgMHgzN0Y4LA0KKyAgICAweDUwMDIsIDB4NEY0QiwgMHg1MDA0LCAweDRBRDEsIDB4NTAwNSwgMHgxMDNGLCAweDUwMDYsIDB4MTA0OCwNCisgICAgMHg1MDA5LCAweDBBRDQsIDB4NTAwQiwgMHgwNzc4LCAweDUwMEMsIDB4NEFEMiwgMHg1MDBELCAweDBEMTIsDQorICAgIDB4NTAwRSwgMHg0MThGLCAweDUwMEYsIDB4MTYwMCwgMHg1MDEwLCAweDM3RjksIDB4NTAxMSwgMHgxMDQ3LA0KKyAgICAweDUwMTIsIDB4MEM1NywgMHg1MDEzLCAweDQzNzcsIDB4NTAxNCwgMHgxMDNDLCAweDUwMTYsIDB4MDdBQSwNCisgICAgMHg1MDE4LCAweDQxOTAsIDB4NTAxOSwgMHgwN0E5LCAweDUwMUEsIDB4MTAzQSwgMHg1MDFCLCAweDM3RkEsDQorICAgIDB4NTAxQywgMHg0Mzc4LCAweDUwMUUsIDB4MjBDMiwgMHg1MDFGLCAweDA5MDYsIDB4NTAyMSwgMHgxMDQyLA0KKyAgICAweDUwMjIsIDB4MjBDMCwgMHg1MDIzLCAweDBFM0YsIDB4NTAyNCwgMHgwQjhCLCAweDUwMjUsIDB4MTAzRSwNCisgICAgMHg1MDI2LCAweDA3NDcsIDB4NTAyNywgMHgzN0ZCLCAweDUwMjgsIDB4MTAzQiwgMHg1MDI5LCAweDEwNDMsDQorICAgIDB4NTAyQSwgMHgxMDNELCAweDUwMkIsIDB4MEY5OSwgMHg1MDJDLCAweDEwNDQsIDB4NTAyRCwgMHgwRkU3LA0KKyAgICAweDUwMkUsIDB4MzdGQywgMHg1MDM2LCAweDA2REUsIDB4NTAzOSwgMHgwNzQ2LCAweDUwM0IsIDB4MzgwMCwNCisgICAgMHg1MDQwLCAweDIwQkYsIDB4NTA0MSwgMHg0MTkxLCAweDUwNDIsIDB4MjBDNSwgMHg1MDQzLCAweDEwNDksDQorICAgIDB4NTA0NiwgMHgyMEMzLCAweDUwNDcsIDB4MTA0QSwgMHg1MDQ4LCAweDEwNEUsIDB4NTA0OSwgMHgwNDkyLA0KKyAgICAweDUwNEMsIDB4NEFEMywgMHg1MDRFLCAweDQzNzksIDB4NTA0RiwgMHgwRTIwLCAweDUwNTAsIDB4MTA0RCwNCisgICAgMHg1MDUzLCAweDQzN0EsIDB4NTA1NSwgMHgxMDRDLCAweDUwNTYsIDB4MTA1MCwgMHg1MDU3LCAweDM3RkQsDQorICAgIDB4NTA1QSwgMHgxMDRGLCAweDUwNUMsIDB4MEMwMCwgMHg1MDVGLCAweDRBRDQsIDB4NTA2MiwgMHg0QUQ1LA0KKyAgICAweDUwNjMsIDB4NDM3QiwgMHg1MDY1LCAweDA3NDgsIDB4NTA2NiwgMHgzN0ZFLCAweDUwNkEsIDB4MzdGRiwNCisgICAgMHg1MDZDLCAweDEwNTEsIDB4NTA3MCwgMHgyMEM0LCAweDUwNzIsIDB4MDhGMSwgMHg1MDc0LCAweDBCMDYsDQorICAgIDB4NTA3NSwgMHgwQzAxLCAweDUwNzYsIDB4MDZFRSwgMHg1MDc3LCAweDRBRDYsIDB4NTA3OCwgMHgxMDUyLA0KKyAgICAweDUwN0QsIDB4MDY1MCwgMHg1MDgwLCAweDEwNTMsIDB4NTA4NSwgMHgxMDU1LCAweDUwODgsIDB4NDM3RCwNCisgICAgMHg1MDhELCAweDBFNjMsIDB4NTA4RSwgMHg0QUQ3LCAweDUwOEYsIDB4MzgwMSwgMHg1MDkxLCAweDA3M0MsDQorICAgIDB4NTA5MiwgMHg0MzdFLCAweDUwOTMsIDB4NDM3RiwgMHg1MDk0LCAweDIwQzYsIDB4NTA5NSwgMHg0MzgwLA0KKyAgICAweDUwOTYsIDB4MzgwMiwgMHg1MDk4LCAweDA4N0YsIDB4NTA5OSwgMHgwRDhCLCAweDUwOUEsIDB4MTA1NCwNCisgICAgMHg1MDlDLCAweDM4MDMsIDB4NTA5RSwgMHg0QUQ4LCAweDUwQTIsIDB4NEFEOSwgMHg1MEEzLCAweDQzN0MsDQorICAgIDB4NTBBQSwgMHg0MzgxLCAweDUwQUMsIDB4MDgzNSwgMHg1MEFELCAweDBGMkQsIDB4NTBCMSwgMHg0MzgzLA0KKyAgICAweDUwQjIsIDB4MTA1NywgMHg1MEIzLCAweDEwNUEsIDB4NTBCNCwgMHgxMDU2LCAweDUwQjUsIDB4MDgzNCwNCisgICAgMHg1MEI3LCAweDA5ODcsIDB4NTBCQSwgMHg0Mzg0LCAweDUwQkIsIDB4NDM4NSwgMHg1MEJFLCAweDA3MEYsDQorICAgIDB4NTBDMiwgMHgxMDVCLCAweDUwQzMsIDB4NEFEQSwgMHg1MEM0LCAweDQzODYsIDB4NTBDNSwgMHgwNkM3LA0KKyAgICAweDUwQzcsIDB4NDM4NywgMHg1MEM5LCAweDEwNTgsIDB4NTBDQSwgMHgxMDU5LCAweDUwQ0MsIDB4MzgwNCwNCisgICAgMHg1MENELCAweDBDODcsIDB4NTBDRSwgMHg0MzhBLCAweDUwQ0YsIDB4MEFGRSwgMHg1MEQwLCAweDQxOTMsDQorICAgIDB4NTBEMSwgMHgwNjlCLCAweDUwRDQsIDB4NDM4QywgMHg1MEQ1LCAweDBFN0IsIDB4NTBENiwgMHgxMDVDLA0KKyAgICAweDUwRDgsIDB4MjBDOCwgMHg1MEQ5LCAweDNDMzAsIDB4NTBEQSwgMHgwRjg1LCAweDUwREUsIDB4MTA1RCwNCisgICAgMHg1MEUxLCAweDQzOEQsIDB4NTBFMywgMHgxMDYwLCAweDUwRTUsIDB4MTA1RSwgMHg1MEU2LCAweDM4MDUsDQorICAgIDB4NTBFNywgMHgwQUQwLCAweDUwRTgsIDB4NEFEQiwgMHg1MEU5LCAweDM4MDYsIDB4NTBFRCwgMHgxMDVGLA0KKyAgICAweDUwRUUsIDB4MTA2MSwgMHg1MEVGLCAweDM4MDcsIDB4NTBGMCwgMHgzQzMxLCAweDUwRjEsIDB4NEFEQywNCisgICAgMHg1MEYyLCAweDQxOTIsIDB4NTBGMywgMHg0Mzg4LCAweDUwRjQsIDB4MjBDNywgMHg1MEY1LCAweDEwNjMsDQorICAgIDB4NTBGOSwgMHgxMDYyLCAweDUwRkIsIDB4MEUxOCwgMHg1MEZFLCAweDRBREQsIDB4NTEwMCwgMHgwNjUxLA0KKyAgICAweDUxMDEsIDB4MTA2NSwgMHg1MTAyLCAweDEwNjYsIDB4NTEwMywgMHg0MTk1LCAweDUxMDQsIDB4MDUyRiwNCisgICAgMHg1MTA2LCAweDQxOTQsIDB4NTEwNywgMHg0QURFLCAweDUxMDgsIDB4MzgwOCwgMHg1MTA5LCAweDEwNjQsDQorICAgIDB4NTEwQiwgMHgzODA5LCAweDUxMEMsIDB4NEFERiwgMHg1MTBELCAweDRBRTAsIDB4NTEwRSwgMHg0QUUxLA0KKyAgICAweDUxMTAsIDB4MzgwQSwgMHg1MTEyLCAweDA5MjAsIDB4NTExNCwgMHgxMDY5LCAweDUxMTUsIDB4MTA2OCwNCisgICAgMHg1MTE2LCAweDEwNjcsIDB4NTExNywgMHg0MzkwLCAweDUxMTgsIDB4MTAyRiwgMHg1MTFBLCAweDEwNkEsDQorICAgIDB4NTExQiwgMHgzODBCLCAweDUxMUUsIDB4MzgwQywgMHg1MTFGLCAweDA5ODgsIDB4NTEyMSwgMHgxMDZCLA0KKyAgICAweDUxMkEsIDB4MEYwRiwgMHg1MTMyLCAweDBFRTUsIDB4NTEzMywgMHg0QUUyLCAweDUxMzUsIDB4NDE5NiwNCisgICAgMHg1MTM3LCAweDEwNkQsIDB4NTEzOCwgMHg0QUUzLCAweDUxM0EsIDB4MTA2QywgMHg1MTNCLCAweDEwNkYsDQorICAgIDB4NTEzQywgMHgxMDZFLCAweDUxM0YsIDB4MTA3MCwgMHg1MTQwLCAweDEwNzEsIDB4NTE0MSwgMHgwNEI4LA0KKyAgICAweDUxNDMsIDB4MDc2OSwgMHg1MTQ0LCAweDA3MTEsIDB4NTE0NSwgMHgwOTQ2LCAweDUxNDYsIDB4MEJCOSwNCisgICAgMHg1MTQ3LCAweDA2OUMsIDB4NTE0OCwgMHgwQThDLCAweDUxNDksIDB4MDdBQiwgMHg1MTRBLCAweDIwQzksDQorICAgIDB4NTE0QiwgMHgwODAwLCAweDUxNEMsIDB4MTA3MywgMHg1MTRELCAweDBFRDQsIDB4NTE0RSwgMHgwQzQwLA0KKyAgICAweDUxNTAsIDB4MDhDNywgMHg1MTUyLCAweDEwNzIsIDB4NTE1NCwgMHgxMDc0LCAweDUxNTUsIDB4NDE5NywNCisgICAgMHg1MTU3LCAweDQxOTgsIDB4NTE1QSwgMHgwQzU4LCAweDUxNUMsIDB4MDVEMywgMHg1MTVGLCAweDM4MEQsDQorICAgIDB4NTE2MCwgMHg0MzkyLCAweDUxNjIsIDB4MTA3NSwgMHg1MTY0LCAweDIwQ0EsIDB4NTE2NSwgMHgwQ0Q2LA0KKyAgICAweDUxNjcsIDB4MzY4RSwgMHg1MTY4LCAweDBBQjYsIDB4NTE2OSwgMHgxMDc3LCAweDUxNkEsIDB4MTA3OCwNCisgICAgMHg1MTZCLCAweDBENDAsIDB4NTE2QywgMHgwN0FDLCAweDUxNkQsIDB4MEZFMSwgMHg1MTZFLCAweDEwNzksDQorICAgIDB4NTE3MSwgMHgwNjlFLCAweDUxNzMsIDB4NDM5NCwgMHg1MTc0LCAweDRBRTQsIDB4NTE3NSwgMHgwRTBDLA0KKyAgICAweDUxNzYsIDB4MEIxNiwgMHg1MTc3LCAweDA2RTksIDB4NTE3OCwgMHgwQzJGLCAweDUxNzksIDB4Mzc3OSwNCisgICAgMHg1MTdCLCAweDQ3RDksIDB4NTE3QywgMHgwNzQ5LCAweDUxODAsIDB4MTA3QSwgMHg1MTgyLCAweDEwN0IsDQorICAgIDB4NTE4MywgMHg0Mzk1LCAweDUxODQsIDB4NEFFNSwgMHg1MTg1LCAweDBDQkEsIDB4NTE4NiwgMHgwNTAxLA0KKyAgICAweDUxODksIDB4MTA3RSwgMHg1MThBLCAweDA4NkQsIDB4NTE4QiwgMHg0Mzk2LCAweDUxOEMsIDB4MTA3RCwNCisgICAgMHg1MThELCAweDA4MzYsIDB4NTE4RiwgMHgxMDdGLCAweDUxOTAsIDB4MTg1QiwgMHg1MTkxLCAweDEwODAsDQorICAgIDB4NTE5MiwgMHgwRTZGLCAweDUxOTMsIDB4MTA4MSwgMHg1MTk1LCAweDEwODIsIDB4NTE5NiwgMHgxMDgzLA0KKyAgICAweDUxOTcsIDB4MDlEMSwgMHg1MTk4LCAweDQzOTgsIDB4NTE5OSwgMHgwOEY4LCAweDUxOUQsIDB4MjBDQiwNCisgICAgMHg1MUEwLCAweDA1RTMsIDB4NTFBMSwgMHgzODBFLCAweDUxQTIsIDB4MTA4NiwgMHg1MUEzLCAweDQzOTksDQorICAgIDB4NTFBNCwgMHgxMDg0LCAweDUxQTUsIDB4MEVDOSwgMHg1MUE2LCAweDEwODUsIDB4NTFBOCwgMHgwRENDLA0KKyAgICAweDUxQTksIDB4MTA4NywgMHg1MUFBLCAweDEwODgsIDB4NTFBQiwgMHgxMDg5LCAweDUxQUMsIDB4MEM1OSwNCisgICAgMHg1MUFELCAweDQzOUEsIDB4NTFCMCwgMHgxMDhELCAweDUxQjEsIDB4MTA4QiwgMHg1MUIyLCAweDEwOEMsDQorICAgIDB4NTFCMywgMHgxMDhBLCAweDUxQjQsIDB4MDg1MywgMHg1MUI1LCAweDEwOEUsIDB4NTFCNiwgMHgwRUY2LA0KKyAgICAweDUxQjcsIDB4MEZBQywgMHg1MUI4LCAweDRBRTYsIDB4NTFCQSwgMHg0QUU3LCAweDUxQkMsIDB4MzgwRiwNCisgICAgMHg1MUJELCAweDEwOEYsIDB4NTFCRSwgMHgyMENDLCAweDUxQzMsIDB4M0MzMiwgMHg1MUM0LCAweDBBNEMsDQorICAgIDB4NTFDNSwgMHgxMDkwLCAweDUxQzYsIDB4MDk2NCwgMHg1MUM4LCAweDRBRTgsIDB4NTFDOSwgMHgxMDkxLA0KKyAgICAweDUxQ0EsIDB4NDE5QSwgMHg1MUNCLCAweDBCQkEsIDB4NTFDQywgMHgwRjg3LCAweDUxQ0QsIDB4MEM1QSwNCisgICAgMHg1MUNGLCAweDRBRTksIDB4NTFEMSwgMHg0QUVBLCAweDUxRDMsIDB4NEFFQiwgMHg1MUQ0LCAweDRBRUMsDQorICAgIDB4NTFENiwgMHgxMERBLCAweDUxRDgsIDB4NEFFRCwgMHg1MURCLCAweDEwOTIsIDB4NTFEQywgMHgyMDVDLA0KKyAgICAweDUxREQsIDB4MDZCRCwgMHg1MURFLCAweDRGNEMsIDB4NTFERiwgMHg0QUVFLCAweDUxRTAsIDB4MTA5MywNCisgICAgMHg1MUUxLCAweDBFOEMsIDB4NTFFMiwgMHg0MTlCLCAweDUxRTYsIDB4MDk3MiwgMHg1MUU3LCAweDBCNUMsDQorICAgIDB4NTFFOSwgMHgxMDk1LCAweDUxRUEsIDB4MENCQywgMHg1MUVDLCAweDIwQ0QsIDB4NTFFRCwgMHgxMDk2LA0KKyAgICAweDUxRUUsIDB4MzgxMSwgMHg1MUYwLCAweDEwOTcsIDB4NTFGMSwgMHgwNThDLCAweDUxRjMsIDB4NDM5RCwNCisgICAgMHg1MUY0LCAweDM4MTIsIDB4NTFGNSwgMHgxMDk4LCAweDUxRjYsIDB4MDY5RiwgMHg1MUY4LCAweDBDQTQsDQorICAgIDB4NTFGOSwgMHgwNTFDLCAweDUxRkEsIDB4MDk1QSwgMHg1MUZELCAweDBEMzUsIDB4NTFGRSwgMHgxMDk5LA0KKyAgICAweDUyMDAsIDB4MEM1QiwgMHg1MjAxLCAweDM4MTMsIDB4NTIwMiwgMHgzODE0LCAweDUyMDMsIDB4MEExNSwNCisgICAgMHg1MjA0LCAweDEwOUEsIDB4NTIwNSwgMHg0QUVGLCAweDUyMDYsIDB4MERGQywgMHg1MjA3LCAweDBBN0UsDQorICAgIDB4NTIwOCwgMHgwNURFLCAweDUyMEEsIDB4MDVFNSwgMHg1MjBCLCAweDEwOUIsIDB4NTIwRSwgMHgxMDlELA0KKyAgICAweDUyMTEsIDB4MDcxMCwgMHg1MjEyLCAweDQzOUUsIDB4NTIxMywgMHgzODE1LCAweDUyMTQsIDB4MTA5QywNCisgICAgMHg1MjE1LCAweDIwQ0UsIDB4NTIxNiwgMHg0MzlGLCAweDUyMTcsIDB4MEZCQiwgMHg1MjFELCAweDA5NzMsDQorICAgIDB4NTIyNCwgMHgwRDUxLCAweDUyMjUsIDB4MEUxQywgMHg1MjI2LCAweDRBRjAsIDB4NTIyNywgMHgxMDlFLA0KKyAgICAweDUyMjgsIDB4NEFGMSwgMHg1MjI5LCAweDBGNjIsIDB4NTIyQSwgMHgxMDlGLCAweDUyMkIsIDB4NEFGMiwNCisgICAgMHg1MjJFLCAweDEwQTAsIDB4NTIzMCwgMHgwQzc4LCAweDUyMzEsIDB4NEFGMywgMHg1MjMyLCAweDRBRjQsDQorICAgIDB4NTIzMywgMHgxMEExLCAweDUyMzUsIDB4NEFGNSwgMHg1MjM2LCAweDBBNEQsIDB4NTIzNywgMHgwODZFLA0KKyAgICAweDUyMzgsIDB4MDc0QSwgMHg1MjM5LCAweDEwQTIsIDB4NTIzQSwgMHgwODk3LCAweDUyM0IsIDB4MDgwMSwNCisgICAgMHg1MjNDLCAweDRBRjYsIDB4NTI0MywgMHgwQzAyLCAweDUyNDQsIDB4MTBBNCwgMHg1MjQ3LCAweDBCMDcsDQorICAgIDB4NTI0OSwgMHgzODE2LCAweDUyNEEsIDB4MDg1RiwgMHg1MjRCLCAweDEwQTUsIDB4NTI0QywgMHgxMEE2LA0KKyAgICAweDUyNEQsIDB4MEFCMiwgMHg1MjRGLCAweDEwQTMsIDB4NTI1NCwgMHgxMEE4LCAweDUyNTUsIDB4NDNBMSwNCisgICAgMHg1MjU2LCAweDBFNjQsIDB4NTI1NywgMHg0MTlDLCAweDUyNUEsIDB4NEFGNywgMHg1MjVCLCAweDA3RjYsDQorICAgIDB4NTI1QywgMHg0M0EyLCAweDUyNUQsIDB4MUU1RSwgMHg1MjVFLCAweDEwQTcsIDB4NTI2MCwgMHg0QUY4LA0KKyAgICAweDUyNjEsIDB4MzgxNywgMHg1MjYzLCAweDA3NEIsIDB4NTI2NCwgMHgwODRFLCAweDUyNjUsIDB4MEQyMywNCisgICAgMHg1MjY2LCAweDM4MTgsIDB4NTI2OSwgMHgxMEFCLCAweDUyNkEsIDB4MTBBOSwgMHg1MjZDLCAweDQzQTMsDQorICAgIDB4NTI2RSwgMHg0QUY5LCAweDUyNkYsIDB4MERFRCwgMHg1MjcwLCAweDA5RDIsIDB4NTI3MSwgMHgxMEIyLA0KKyAgICAweDUyNzIsIDB4MDVDMiwgMHg1MjczLCAweDEwQUMsIDB4NTI3NCwgMHgxMEFBLCAweDUyNzUsIDB4MEFEMSwNCisgICAgMHg1Mjc3LCAweDQzQTQsIDB4NTI3OCwgMHg0QUZBLCAweDUyNzksIDB4NEFGQiwgMHg1MjdELCAweDEwQUUsDQorICAgIDB4NTI3RiwgMHgxMEFELCAweDUyODIsIDB4NDNBNiwgMHg1MjgzLCAweDA1QTIsIDB4NTI4NCwgMHg0M0E1LA0KKyAgICAweDUyODcsIDB4MDczNiwgMHg1Mjg4LCAweDEwQjMsIDB4NTI4OSwgMHgwRjc1LCAweDUyOEEsIDB4NEFGQywNCisgICAgMHg1MjhDLCAweDRBRkQsIDB4NTI4RCwgMHgxMEFGLCAweDUyOTEsIDB4MTBCNCwgMHg1MjkyLCAweDEwQjEsDQorICAgIDB4NTI5MywgMHgzODE5LCAweDUyOTQsIDB4MTBCMCwgMHg1Mjk4LCAweDQzQTgsIDB4NTI5QiwgMHgwRjk3LA0KKyAgICAweDUyOUMsIDB4MjBDRiwgMHg1MjlGLCAweDA3QUQsIDB4NTJBMCwgMHgwNTQzLCAweDUyQTMsIDB4MEZCQywNCisgICAgMHg1MkE0LCAweDQzQUEsIDB4NTJBNiwgMHgyMEQwLCAweDUyQTksIDB4MDk3RiwgMHg1MkFBLCAweDBDNTIsDQorICAgIDB4NTJBQiwgMHgwN0Y3LCAweDUyQUMsIDB4MTBCNywgMHg1MkFELCAweDEwQjgsIDB4NTJBRiwgMHgyMTdELA0KKyAgICAweDUyQjEsIDB4MEZBRCwgMHg1MkI0LCAweDBGRDEsIDB4NTJCNSwgMHgxMEJBLCAweDUyQjksIDB4MDdBRSwNCisgICAgMHg1MkJBLCAweDQzQUIsIDB4NTJCQiwgMHg0M0FDLCAweDUyQkMsIDB4MTBCOSwgMHg1MkJFLCAweDA1OEQsDQorICAgIDB4NTJDMCwgMHgyMEQxLCAweDUyQzEsIDB4MTBCQiwgMHg1MkMzLCAweDBFODQsIDB4NTJDNSwgMHgwQkQ4LA0KKyAgICAweDUyQzcsIDB4MEYxMCwgMHg1MkM4LCAweDM4MUEsIDB4NTJDOSwgMHgwRTI5LCAweDUyQ0EsIDB4NDNBRCwNCisgICAgMHg1MkNDLCAweDQxOUQsIDB4NTJDRCwgMHgxMEJDLCAweDUyRDAsIDB4MzZFOCwgMHg1MkQxLCAweDQzQUUsDQorICAgIDB4NTJEMiwgMHgxQkVFLCAweDUyRDUsIDB4MEM4OCwgMHg1MkQ2LCAweDQxOUUsIDB4NTJENywgMHgxMEJELA0KKyAgICAweDUyRDgsIDB4MDVFNiwgMHg1MkQ5LCAweDBFQkYsIDB4NTJEQiwgMHgyMEQyLCAweDUyREQsIDB4MDk4OSwNCisgICAgMHg1MkRFLCAweDEwQkUsIDB4NTJERiwgMHgwRTM3LCAweDUyRTAsIDB4MTBDMiwgMHg1MkUxLCAweDRBRkUsDQorICAgIDB4NTJFMiwgMHgwQTRFLCAweDUyRTMsIDB4MTBCRiwgMHg1MkU0LCAweDA2QzgsIDB4NTJFNiwgMHgxMEMwLA0KKyAgICAweDUyRTcsIDB4MDVFNywgMHg1MkU5LCAweDRBRkYsIDB4NTJGMCwgMHgzODFCLCAweDUyRjEsIDB4NEIwMCwNCisgICAgMHg1MkYyLCAweDA3MDQsIDB4NTJGMywgMHgxMEMzLCAweDUyRjUsIDB4MTBDNCwgMHg1MkY3LCAweDQzQjAsDQorICAgIDB4NTJGOCwgMHgxMEM1LCAweDUyRjksIDB4MTBDNiwgMHg1MkZBLCAweDA5MDcsIDB4NTJGQiwgMHg0MTlGLA0KKyAgICAweDUyRkUsIDB4MDdBRiwgMHg1MkZGLCAweDBFRUEsIDB4NTMwMCwgMHgyMEQzLCAweDUzMDEsIDB4MEVGNCwNCisgICAgMHg1MzAyLCAweDBDQ0YsIDB4NTMwMywgMHg0QjAxLCAweDUzMDUsIDB4MEU0MSwgMHg1MzA2LCAweDEwQzcsDQorICAgIDB4NTMwNywgMHg0RjRELCAweDUzMDgsIDB4MTBDOCwgMHg1MzBBLCAweDM4MUMsIDB4NTMwQiwgMHgzODFELA0KKyAgICAweDUzMEQsIDB4MTBDQSwgMHg1MzBGLCAweDEwQ0MsIDB4NTMxMCwgMHgxMENCLCAweDUzMTEsIDB4NEIwMiwNCisgICAgMHg1MzE1LCAweDEwQ0QsIDB4NTMxNiwgMHgwNTNELCAweDUzMTcsIDB4MEU3QSwgMHg1MzE5LCAweDA4NkMsDQorICAgIDB4NTMxQSwgMHgxMENFLCAweDUzMUMsIDB4NDFBMCwgMHg1MzFELCAweDBBREIsIDB4NTMxRiwgMHg0QjAzLA0KKyAgICAweDUzMjAsIDB4MDk4QSwgMHg1MzIxLCAweDA2QTEsIDB4NTMyMywgMHgxMENGLCAweDUzMjQsIDB4MjBENSwNCisgICAgMHg1MzJBLCAweDBENkYsIDB4NTMyRCwgMHg0QjA0LCAweDUzMkYsIDB4MTBEMCwgMHg1MzMxLCAweDEwRDEsDQorICAgIDB4NTMzMiwgMHg0QjA1LCAweDUzMzMsIDB4MTBEMiwgMHg1MzM1LCAweDQzQjEsIDB4NTMzOCwgMHgxMEQzLA0KKyAgICAweDUzMzksIDB4MEQ5NiwgMHg1MzNBLCAweDA2RTAsIDB4NTMzQiwgMHgwNEE5LCAweDUzM0QsIDB4NEIwNiwNCisgICAgMHg1MzNFLCAweDM4MUUsIDB4NTMzRiwgMHgwQzk3LCAweDUzNDAsIDB4MTBENCwgMHg1MzQxLCAweDA5NDcsDQorICAgIDB4NTM0MiwgMHg0M0IyLCAweDUzNDMsIDB4MEE4RCwgMHg1MzQ1LCAweDEwRDYsIDB4NTM0NiwgMHgxMEQ1LA0KKyAgICAweDUzNDcsIDB4MDk4QiwgMHg1MzQ4LCAweDA3OTUsIDB4NTM0OSwgMHgxMEQ4LCAweDUzNEEsIDB4MEQ1MiwNCisgICAgMHg1MzRCLCAweDM4MjAsIDB4NTM0QywgMHgzODFGLCAweDUzNEQsIDB4MTBEOSwgMHg1MzUxLCAweDBENzAsDQorICAgIDB4NTM1MiwgMHgwQjE0LCAweDUzNTMsIDB4MEI0RSwgMHg1MzU0LCAweDA2QTAsIDB4NTM1NywgMHgwQ0M2LA0KKyAgICAweDUzNTgsIDB4MEI2RiwgMHg1MzVBLCAweDBEMjQsIDB4NTM1QywgMHgwRTdDLCAweDUzNUUsIDB4MTBEQiwNCisgICAgMHg1MzYwLCAweDBBOEUsIDB4NTM2MSwgMHgzODIxLCAweDUzNjMsIDB4NDFBMSwgMHg1MzY1LCAweDRCMDcsDQorICAgIDB4NTM2NiwgMHgwNzBCLCAweDUzNjcsIDB4NDNCNSwgMHg1MzY5LCAweDEwREMsIDB4NTM2QywgMHgzODIyLA0KKyAgICAweDUzNkQsIDB4NEIwOCwgMHg1MzZFLCAweDEwREQsIDB4NTM2RiwgMHgwNENFLCAweDUzNzAsIDB4MDRCOSwNCisgICAgMHg1MzcxLCAweDA2MjksIDB4NTM3MiwgMHgyMEQ2LCAweDUzNzMsIDB4MEIwOCwgMHg1Mzc0LCAweDA2NkIsDQorICAgIDB4NTM3NSwgMHgwRjVCLCAweDUzNzcsIDB4MTBFMCwgMHg1Mzc4LCAweDA1MzcsIDB4NTM3OSwgMHg0QjA5LA0KKyAgICAweDUzN0EsIDB4NDNCNiwgMHg1MzdCLCAweDEwREYsIDB4NTM3RCwgMHgzNDM1LCAweDUzN0UsIDB4NEIwQSwNCisgICAgMHg1MzdGLCAweDA2QTIsIDB4NTM4MiwgMHgxMEUxLCAweDUzODQsIDB4MEVGRCwgMHg1Mzg5LCAweDM3RDAsDQorICAgIDB4NTM5MywgMHgyMEQ3LCAweDUzOTQsIDB4NEIwQiwgMHg1Mzk2LCAweDEwRTIsIDB4NTM5OCwgMHgwRjlBLA0KKyAgICAweDUzOTksIDB4NEIwQywgMHg1MzlBLCAweDA3QjAsIDB4NTM5RCwgMHg0MUEyLCAweDUzOUYsIDB4MDc2QSwNCisgICAgMHg1M0EwLCAweDEwRTMsIDB4NTNBNCwgMHg0M0I3LCAweDUzQTUsIDB4MTBFNSwgMHg1M0E2LCAweDEwRTQsDQorICAgIDB4NTNBOCwgMHgwQTI1LCAweDUzQTksIDB4MDREQiwgMHg1M0FBLCAweDRCMEQsIDB4NTNBQiwgMHgzODIzLA0KKyAgICAweDUzQUQsIDB4MDUwMCwgMHg1M0FFLCAweDEwRTYsIDB4NTNBRiwgMHg0QjBFLCAweDUzQjAsIDB4MTBFNywNCisgICAgMHg1M0IyLCAweDIwRDgsIDB4NTNCMywgMHgwNzZCLCAweDUzQjQsIDB4NDNCOCwgMHg1M0I2LCAweDEwRTgsDQorICAgIDB4NTNCNywgMHg0M0JBLCAweDUzQkEsIDB4NEIwRiwgMHg1M0JCLCAweDA2ODgsIDB4NTNDMCwgMHg0M0JCLA0KKyAgICAweDUzQzEsIDB4NEIxMCwgMHg1M0MyLCAweDA4ODAsIDB4NTNDMywgMHgxMEU5LCAweDUzQzQsIDB4NEIxMSwNCisgICAgMHg1M0M1LCAweDRCMTIsIDB4NTNDOCwgMHgwRUEyLCAweDUzQzksIDB4MDgyNSwgMHg1M0NBLCAweDA2NzQsDQorICAgIDB4NTNDQiwgMHgwRjExLCAweDUzQ0MsIDB4MEFEMiwgMHg1M0NELCAweDBENTMsIDB4NTNDRSwgMHgwOTI5LA0KKyAgICAweDUzRDQsIDB4MDk1MSwgMHg1M0Q1LCAweDQzQkYsIDB4NTNENiwgMHgwOTE0LCAweDUzRDcsIDB4MDkyMSwNCisgICAgMHg1M0Q5LCAweDA5ODAsIDB4NTNEQSwgMHgzODI0LCAweDUzREIsIDB4MEQ1NCwgMHg1M0RELCAweDIwRDksDQorICAgIDB4NTNERiwgMHgxMEVDLCAweDUzRTAsIDB4NEIxMywgMHg1M0UxLCAweDA0RTUsIDB4NTNFMiwgMHgwQUQzLA0KKyAgICAweDUzRTMsIDB4MDdCMSwgMHg1M0U0LCAweDA3NzksIDB4NTNFNSwgMHgwNkRGLCAweDUzRTYsIDB4MzgyNSwNCisgICAgMHg1M0U4LCAweDEwRjAsIDB4NTNFOSwgMHgwQjVGLCAweDUzRUEsIDB4MEI1RSwgMHg1M0VCLCAweDA2QTMsDQorICAgIDB4NTNFQywgMHgwOThDLCAweDUzRUQsIDB4MTBGMSwgMHg1M0VFLCAweDEwRUYsIDB4NTNFRiwgMHgwNTQ0LA0KKyAgICAweDUzRjAsIDB4MEI0NiwgMHg1M0YxLCAweDA4RTQsIDB4NTNGMiwgMHgwODk5LCAweDUzRjMsIDB4MDRDOCwNCisgICAgMHg1M0Y0LCAweDQzQzEsIDB4NTNGNSwgMHgzODI2LCAweDUzRjYsIDB4MDVDRSwgMHg1M0Y3LCAweDA3RjgsDQorICAgIDB4NTNGOCwgMHgwODk4LCAweDUzRkEsIDB4MTBGMiwgMHg1NDAxLCAweDEwRjMsIDB4NTQwMywgMHgwNjYzLA0KKyAgICAweDU0MDQsIDB4MDVBNCwgMHg1NDA4LCAweDA3RjksIDB4NTQwOSwgMHgwNjYyLCAweDU0MEEsIDB4MEJGQiwNCisgICAgMHg1NDBCLCAweDA0QzcsIDB4NTQwQywgMHgwQzg5LCAweDU0MEQsIDB4MEVDQSwgMHg1NDBFLCAweDA3QjMsDQorICAgIDB4NTQwRiwgMHgwRjYzLCAweDU0MTAsIDB4MEM0MSwgMHg1NDExLCAweDA3QjIsIDB4NTQxMiwgMHg0MUEzLA0KKyAgICAweDU0MTMsIDB4NEIxNCwgMHg1NDFCLCAweDA3MDUsIDB4NTQxRCwgMHgxMEZDLCAweDU0MUUsIDB4MzY4QywNCisgICAgMHg1NDFGLCAweDA2REIsIDB4NTQyMCwgMHgwRTc4LCAweDU0MjQsIDB4NDNDMiwgMHg1NDI2LCAweDBENzEsDQorICAgIDB4NTQyNywgMHgzODI3LCAweDU0MjgsIDB4NDNDMywgMHg1NDI5LCAweDEwRkIsIDB4NTQyQSwgMHg0QjE1LA0KKyAgICAweDU0MkIsIDB4MDYxQSwgMHg1NDJDLCAweDEwRjYsIDB4NTQyRCwgMHgxMEY3LCAweDU0MkUsIDB4MTBGOSwNCisgICAgMHg1NDMxLCAweDRCMTYsIDB4NTQzMywgMHgzNUMwLCAweDU0MzQsIDB4NEIxNywgMHg1NDM1LCAweDRCMTgsDQorICAgIDB4NTQzNiwgMHgxMEZBLCAweDU0MzgsIDB4MDY3NSwgMHg1NDM5LCAweDBBMjcsIDB4NTQzQiwgMHgwREZELA0KKyAgICAweDU0M0MsIDB4MTBGOCwgMHg1NDNELCAweDEwRjQsIDB4NTQzRSwgMHgwNzk3LCAweDU0M0YsIDB4MzVDRiwNCisgICAgMHg1NDQwLCAweDEwRjUsIDB4NTQ0MiwgMHgwRkNBLCAweDU0NDMsIDB4NDNDNSwgMHg1NDQ2LCAweDBFNDIsDQorICAgIDB4NTQ0OCwgMHgwQzA0LCAweDU0NDksIDB4MDc5NiwgMHg1NDRBLCAweDA4MDIsIDB4NTQ0QywgMHg0QjE5LA0KKyAgICAweDU0NEQsIDB4MzgyOCwgMHg1NDRFLCAweDEwRkQsIDB4NTQ1MSwgMHgwQ0I1LCAweDU0NTUsIDB4MzcyMywNCisgICAgMHg1NDVGLCAweDExMDEsIDB4NTQ2MiwgMHg0M0M2LCAweDU0NjYsIDB4MzgyOSwgMHg1NDY4LCAweDA5MkEsDQorICAgIDB4NTQ2QSwgMHgwOTIyLCAweDU0NkIsIDB4MzgyQSwgMHg1NDZDLCAweDQzQzcsIDB4NTQ3MCwgMHgxMTA0LA0KKyAgICAweDU0NzEsIDB4MTEwMiwgMHg1NDczLCAweDBFQUYsIDB4NTQ3NCwgMHgzODJCLCAweDU0NzUsIDB4MTBGRiwNCisgICAgMHg1NDc2LCAweDExMDgsIDB4NTQ3NywgMHgxMTAzLCAweDU0N0IsIDB4MTEwNiwgMHg1NDdDLCAweDA3N0EsDQorICAgIDB4NTQ3RCwgMHgwRUNCLCAweDU0N0YsIDB4NDFBNCwgMHg1NDgwLCAweDExMDcsIDB4NTQ4NCwgMHgxMTA5LA0KKyAgICAweDU0ODYsIDB4MTEwQiwgMHg1NDg4LCAweDQxQTUsIDB4NTQ4QSwgMHgyMERDLCAweDU0OEIsIDB4MDg2MCwNCisgICAgMHg1NDhDLCAweDBGRTgsIDB4NTQ4RCwgMHgzODJDLCAweDU0OEUsIDB4MTEwMCwgMHg1NDhGLCAweDEwRkUsDQorICAgIDB4NTQ5MCwgMHgxMTBBLCAweDU0OTIsIDB4MTEwNSwgMHg1NDk1LCAweDQzQzgsIDB4NTQ5NiwgMHgzODJELA0KKyAgICAweDU0OUMsIDB4MjBEQiwgMHg1NEEwLCAweDQzQzksIDB4NTRBMSwgMHgzODJFLCAweDU0QTIsIDB4MTEwRCwNCisgICAgMHg1NEE0LCAweDExMTYsIDB4NTRBNSwgMHgxMTBGLCAweDU0QTYsIDB4NDNDQSwgMHg1NEE3LCAweDRCMUEsDQorICAgIDB4NTRBOCwgMHgxMTEzLCAweDU0QTksIDB4MjBERCwgMHg1NEFBLCAweDRCMUIsIDB4NTRBQiwgMHgxMTE0LA0KKyAgICAweDU0QUMsIDB4MTExMCwgMHg1NEFELCAweDM4MkYsIDB4NTRBRSwgMHg0M0NCLCAweDU0QUYsIDB4MTEzMSwNCisgICAgMHg1NEIxLCAweDRCMUMsIDB4NTRCMiwgMHgwODU5LCAweDU0QjMsIDB4MDU4RiwgMHg1NEI3LCAweDQzQ0MsDQorICAgIDB4NTRCOCwgMHgxMTBFLCAweDU0QjksIDB4MzgzMCwgMHg1NEJBLCAweDQzQ0QsIDB4NTRCQiwgMHg0QjFELA0KKyAgICAweDU0QkMsIDB4MTExOCwgMHg1NEJELCAweDA0QkEsIDB4NTRCRSwgMHgxMTE3LCAweDU0QkYsIDB4MzgzMSwNCisgICAgMHg1NEMwLCAweDA0NjksIDB4NTRDMSwgMHgwREJDLCAweDU0QzIsIDB4MTExNSwgMHg1NEMzLCAweDQzQ0UsDQorICAgIDB4NTRDNCwgMHgxMTExLCAweDU0QzYsIDB4MzgzMiwgMHg1NEM3LCAweDExMEMsIDB4NTRDOCwgMHgxMTEyLA0KKyAgICAweDU0QzksIDB4MDgzOCwgMHg1NENELCAweDM4MzMsIDB4NTRDRSwgMHg0QjFFLCAweDU0RDgsIDB4MTExOSwNCisgICAgMHg1NEUxLCAweDA0QkIsIDB4NTRFMiwgMHgxMTIyLCAweDU0RTUsIDB4MTExQSwgMHg1NEU2LCAweDExMUIsDQorICAgIDB4NTRFOCwgMHgwOThELCAweDU0RTksIDB4MEU5NywgMHg1NEVBLCAweDRCMUYsIDB4NTRFQywgMHg0M0QwLA0KKyAgICAweDU0RUQsIDB4MTEyMCwgMHg1NEVFLCAweDExMUYsIDB4NTRFRiwgMHg0M0QxLCAweDU0RjEsIDB4NDNEMiwNCisgICAgMHg1NEYyLCAweDBDMjksIDB4NTRGMywgMHg0M0QzLCAweDU0RkEsIDB4MTEyMSwgMHg1NEZDLCAweDRCMjAsDQorICAgIDB4NTRGRCwgMHgxMTFFLCAweDU0RkYsIDB4MjBERSwgMHg1NTAwLCAweDQzRDQsIDB4NTUwMSwgMHg0M0Q1LA0KKyAgICAweDU1MDQsIDB4MDRENiwgMHg1NTA1LCAweDRCMjEsIDB4NTUwNiwgMHgwODI2LCAweDU1MDcsIDB4MDlGNiwNCisgICAgMHg1NTA4LCAweDRCMjIsIDB4NTUwOSwgMHg0M0Q2LCAweDU1MEUsIDB4MzgzNCwgMHg1NTBGLCAweDExMUMsDQorICAgIDB4NTUxMCwgMHgwQzVDLCAweDU1MTQsIDB4MTExRCwgMHg1NTE1LCAweDRCMjMsIDB4NTUxNiwgMHgwNDY2LA0KKyAgICAweDU1MjcsIDB4NEIyNCwgMHg1NTJBLCAweDRCMjUsIDB4NTUyQiwgMHgzODM1LCAweDU1MkUsIDB4MTEyNywNCisgICAgMHg1NTJGLCAweDBGMEQsIDB4NTUzMSwgMHgwOThGLCAweDU1MzMsIDB4MTEyRCwgMHg1NTM1LCAweDM4MzYsDQorICAgIDB4NTUzNiwgMHg0QjI2LCAweDU1MzgsIDB4MTEyQywgMHg1NTM5LCAweDExMjMsIDB4NTUzQywgMHg0M0Q3LA0KKyAgICAweDU1M0UsIDB4MEIyMywgMHg1NTQwLCAweDExMjQsIDB4NTU0MSwgMHg0M0Q4LCAweDU1NDQsIDB4MEI0RiwNCisgICAgMHg1NTQ1LCAweDExMjksIDB4NTU0NiwgMHgwOThFLCAweDU1NDcsIDB4NDNEQSwgMHg1NTRBLCAweDM4MzcsDQorICAgIDB4NTU0QywgMHgxMTI2LCAweDU1NEYsIDB4MEVGMCwgMHg1NTUwLCAweDQxQTYsIDB4NTU1MSwgMHg0QjI3LA0KKyAgICAweDU1NTMsIDB4MDcxMiwgMHg1NTU2LCAweDExMkEsIDB4NTU1NywgMHgxMTJCLCAweDU1NUMsIDB4MTEyOCwNCisgICAgMHg1NTVELCAweDExMkUsIDB4NTU1RSwgMHgxREQxLCAweDU1NjAsIDB4MzgzOCwgMHg1NTYxLCAweDRGNTQsDQorICAgIDB4NTU2MywgMHgxMTI1LCAweDU1NjQsIDB4NDNEQywgMHg1NTY2LCAweDRCMjgsIDB4NTU3QiwgMHgxMTM0LA0KKyAgICAweDU1N0MsIDB4MTEzOSwgMHg1NTdELCAweDQzREUsIDB4NTU3RSwgMHgxMTM1LCAweDU1ODAsIDB4MTEzMCwNCisgICAgMHg1NTgxLCAweDQxQTcsIDB4NTU4MiwgMHg0M0RGLCAweDU1ODMsIDB4MTEzQSwgMHg1NTg0LCAweDBBQjMsDQorICAgIDB4NTU4NiwgMHgyMERGLCAweDU1ODcsIDB4MTEzQywgMHg1NTg4LCAweDM4M0EsIDB4NTU4OSwgMHgwN0I0LA0KKyAgICAweDU1OEEsIDB4MTEzMiwgMHg1NThCLCAweDBCQkIsIDB4NTU4RSwgMHgzODNCLCAweDU1OEYsIDB4NEIyOSwNCisgICAgMHg1NTkxLCAweDQzRTAsIDB4NTU5MiwgMHg0QjJBLCAweDU1OTQsIDB4NEIyQiwgMHg1NTk4LCAweDExMzYsDQorICAgIDB4NTU5OSwgMHgxMTJGLCAweDU1OUEsIDB4MDVFOSwgMHg1NTlDLCAweDA2MkEsIDB4NTU5RCwgMHgwNUMzLA0KKyAgICAweDU1OUUsIDB4MTEzNywgMHg1NTlGLCAweDExMzMsIDB4NTVBNCwgMHg0QjJDLCAweDU1QTcsIDB4MDc0QywNCisgICAgMHg1NUE4LCAweDExM0QsIDB4NTVBOSwgMHgxMTNCLCAweDU1QUEsIDB4MEFENSwgMHg1NUFCLCAweDA2NjQsDQorICAgIDB4NTVBQywgMHgwNkE0LCAweDU1QUQsIDB4NDFBOCwgMHg1NUFFLCAweDExMzgsIDB4NTVCMCwgMHgwNkVDLA0KKyAgICAweDU1QjIsIDB4NEIyRCwgMHg1NUI2LCAweDA0RTYsIDB4NTVCRiwgMHg0M0U1LCAweDU1QzMsIDB4NEIyRSwNCisgICAgMHg1NUM0LCAweDExNDEsIDB4NTVDNSwgMHgxMTNGLCAweDU1QzYsIDB4NEIyRiwgMHg1NUM3LCAweDExNzgsDQorICAgIDB4NTVDOSwgMHg0M0U2LCAweDU1Q0MsIDB4NDNFNywgMHg1NUNFLCAweDQxQTksIDB4NTVEMSwgMHg0M0U4LA0KKyAgICAweDU1RDIsIDB4NDNFMiwgMHg1NUQzLCAweDRCMzAsIDB4NTVENCwgMHgxMTQ0LCAweDU1REEsIDB4MTEzRSwNCisgICAgMHg1NURCLCAweDRCMzEsIDB4NTVEQywgMHgxMTQyLCAweDU1REQsIDB4NDNFOSwgMHg1NURGLCAweDExNDAsDQorICAgIDB4NTVFMiwgMHg0M0VCLCAweDU1RTMsIDB4MDg5QSwgMHg1NUU0LCAweDExNDMsIDB4NTVFOSwgMHg0M0VELA0KKyAgICAweDU1RUMsIDB4NEIzMiwgMHg1NUVFLCAweDRCMzMsIDB4NTVGMSwgMHg0QjM0LCAweDU1RjYsIDB4NEIzNSwNCisgICAgMHg1NUY3LCAweDExNDYsIDB4NTVGOCwgMHg0QjM2LCAweDU1RjksIDB4MTE0QiwgMHg1NUZELCAweDExNDksDQorICAgIDB4NTVGRSwgMHgxMTQ4LCAweDU2MDUsIDB4NEIzNywgMHg1NjA2LCAweDBCNzAsIDB4NTYwNywgMHg0M0YwLA0KKyAgICAweDU2MDgsIDB4MzgzQywgMHg1NjA5LCAweDA1NDUsIDB4NTYwRCwgMHg0QjM4LCAweDU2MEUsIDB4MzgzRCwNCisgICAgMHg1NjBGLCAweDM4M0UsIDB4NTYxMCwgMHg0M0YxLCAweDU2MTEsIDB4NEIzOSwgMHg1NjEyLCAweDRCM0EsDQorICAgIDB4NTYxNCwgMHgxMTQ1LCAweDU2MTYsIDB4MTE0NywgMHg1NjE3LCAweDA5OTAsIDB4NTYxOCwgMHgwNEQ1LA0KKyAgICAweDU2MUIsIDB4MTE0QSwgMHg1NjIwLCAweDNDMUQsIDB4NTYyOCwgMHg0M0VFLCAweDU2MjksIDB4MDU1RSwNCisgICAgMHg1NjJDLCAweDRCM0IsIDB4NTYyRiwgMHgxMTU1LCAweDU2MzAsIDB4NDNGMiwgMHg1NjMxLCAweDA5RTQsDQorICAgIDB4NTYzMiwgMHgxMTUxLCAweDU2MzQsIDB4MTE0RiwgMHg1NjM1LCAweDRCM0MsIDB4NTYzNiwgMHgxMTUwLA0KKyAgICAweDU2MzcsIDB4MzgzRiwgMHg1NjM4LCAweDExNTIsIDB4NTYzOSwgMHg0QjNELCAweDU2M0IsIDB4NDFBQSwNCisgICAgMHg1NjNELCAweDQzRjQsIDB4NTYzRiwgMHgzODQwLCAweDU2NDAsIDB4NDNGNSwgMHg1NjQyLCAweDA0REYsDQorICAgIDB4NTY0NywgMHg0M0Y2LCAweDU2NDksIDB4Mzg0MSwgMHg1NjRCLCAweDM4NDIsIDB4NTY0QywgMHgwQUJCLA0KKyAgICAweDU2NEQsIDB4NEIzRSwgMHg1NjRFLCAweDExNEMsIDB4NTY0RiwgMHgzODQzLCAweDU2NTAsIDB4MTE0RCwNCisgICAgMHg1NjUzLCAweDFGMUIsIDB4NTY1NCwgMHg0QjNGLCAweDU2NUIsIDB4MDVEOCwgMHg1NjVFLCAweDQzRjcsDQorICAgIDB4NTY2MCwgMHg0M0Y4LCAweDU2NjQsIDB4MTE1NCwgMHg1NjY2LCAweDM4NDQsIDB4NTY2OCwgMHgwNjJCLA0KKyAgICAweDU2NjksIDB4Mzg0NSwgMHg1NjZBLCAweDExNTcsIDB4NTY2QiwgMHgxMTUzLCAweDU2NkMsIDB4MTE1NiwNCisgICAgMHg1NjZELCAweDQzRjksIDB4NTY2RiwgMHgzODQ2LCAweDU2NzEsIDB4Mzg0NywgMHg1NjcyLCAweDM4NDgsDQorICAgIDB4NTY3NCwgMHgwREZFLCAweDU2NzYsIDB4M0MzMywgMHg1Njc4LCAweDBDQUQsIDB4NTY3QSwgMHgwRDRDLA0KKyAgICAweDU2ODAsIDB4MTE1OSwgMHg1Njg1LCAweDRCNDAsIDB4NTY4NiwgMHgxMTU4LCAweDU2ODcsIDB4MDVBMywNCisgICAgMHg1Njg4LCAweDQzRkIsIDB4NTY4QSwgMHgxMTVBLCAweDU2OEMsIDB4NDNGQywgMHg1NjhGLCAweDExNUQsDQorICAgIDB4NTY5NCwgMHgxMTVDLCAweDU2OTUsIDB4Mzg0OSwgMHg1Njk5LCAweDFERTYsIDB4NTY5QSwgMHgzODRBLA0KKyAgICAweDU2OUQsIDB4NDNGRCwgMHg1NjlFLCAweDQxQUIsIDB4NTY5RiwgMHg0QjQxLCAweDU2QTAsIDB4MTE1QiwNCisgICAgMHg1NkEyLCAweDBDRUYsIDB4NTZBNSwgMHgxMTVFLCAweDU2QTYsIDB4NEI0MiwgMHg1NkE4LCAweDQzRkUsDQorICAgIDB4NTZBOSwgMHg0MUFDLCAweDU2QUMsIDB4Mzg0QiwgMHg1NkFELCAweDM4NEMsIDB4NTZBRSwgMHgxMTVGLA0KKyAgICAweDU2QjEsIDB4Mzg0RCwgMHg1NkIyLCAweDQzRkYsIDB4NTZCMywgMHg0MUFELCAweDU2QjQsIDB4MTE2MSwNCisgICAgMHg1NkI2LCAweDExNjAsIDB4NTZCNywgMHg0QjQzLCAweDU2QkMsIDB4MTE2MywgMHg1NkMwLCAweDExNjYsDQorICAgIDB4NTZDMSwgMHgxMTY0LCAweDU2QzIsIDB4MTE2MiwgMHg1NkMzLCAweDExNjUsIDB4NTZDNSwgMHg0NDAwLA0KKyAgICAweDU2QzgsIDB4MTE2NywgMHg1NkM5LCAweDM4NEUsIDB4NTZDQSwgMHgxRTVBLCAweDU2Q0MsIDB4NEI0NCwNCisgICAgMHg1NkNELCAweDQ0MDEsIDB4NTZDRSwgMHgxMTY4LCAweDU2Q0YsIDB4NEI0NSwgMHg1NkQxLCAweDExNjksDQorICAgIDB4NTZEMywgMHgxMTZBLCAweDU2RDcsIDB4MTE2QiwgMHg1NkQ4LCAweDEwN0MsIDB4NTZEOSwgMHg0QjQ2LA0KKyAgICAweDU2REEsIDB4MDkyOCwgMHg1NkRCLCAweDA4OUIsIDB4NTZERCwgMHgzODRGLCAweDU2REUsIDB4MDU3MywNCisgICAgMHg1NkRGLCAweDQ0MDIsIDB4NTZFMCwgMHgwNEJDLCAweDU2RTEsIDB4NEI0NywgMHg1NkUzLCAweDBCODIsDQorICAgIDB4NTZFNCwgMHgzODUwLCAweDU2RTgsIDB4NDQwMywgMHg1NkVCLCAweDRCNDgsIDB4NTZFRCwgMHg0QjQ5LA0KKyAgICAweDU2RUUsIDB4MTE2QywgMHg1NkYwLCAweDA4MTQsIDB4NTZGMSwgMHg0QjRBLCAweDU2RjIsIDB4MDQ5MywNCisgICAgMHg1NkYzLCAweDBBMjQsIDB4NTZGNiwgMHg0NDA0LCAweDU2RjcsIDB4NDQwNSwgMHg1NkY5LCAweDExNkQsDQorICAgIDB4NTZGQSwgMHgwNzdCLCAweDU2RkQsIDB4MDgwMywgMHg1NkZGLCAweDExNkYsIDB4NTcwMCwgMHgxMTZFLA0KKyAgICAweDU3MDMsIDB4MEUzMCwgMHg1NzA0LCAweDExNzAsIDB4NTcwNywgMHg0QjRCLCAweDU3MDgsIDB4MTE3MiwNCisgICAgMHg1NzA5LCAweDExNzEsIDB4NTcwQSwgMHgzODUxLCAweDU3MEIsIDB4MTE3MywgMHg1NzBDLCAweDRCNEMsDQorICAgIDB4NTcwRCwgMHgxMTc0LCAweDU3MEYsIDB4MDc0RCwgMHg1NzEyLCAweDA1MDIsIDB4NTcxMywgMHgxMTc1LA0KKyAgICAweDU3MTUsIDB4Mzg1MiwgMHg1NzE2LCAweDExNzcsIDB4NTcxOCwgMHgxMTc2LCAweDU3MUEsIDB4NEI0RCwNCisgICAgMHg1NzFCLCAweDRCNEUsIDB4NTcxQywgMHgxMTc5LCAweDU3MUQsIDB4NEI0RiwgMHg1NzFGLCAweDBDNTQsDQorICAgIDB4NTcyMSwgMHgzNjgwLCAweDU3MjMsIDB4Mzg1MywgMHg1NzI2LCAweDExN0EsIDB4NTcyNywgMHgwNDc5LA0KKyAgICAweDU3MjgsIDB4MDg0RiwgMHg1NzI5LCAweDQ0MDgsIDB4NTcyQywgMHg0QjUwLCAweDU3MkQsIDB4MDcxMywNCisgICAgMHg1NzJFLCAweDRCNTEsIDB4NTcyRiwgMHgzODU0LCAweDU3MzAsIDB4MEI4RCwgMHg1NzMzLCAweDM4NTUsDQorICAgIDB4NTczNCwgMHgzODU2LCAweDU3MzcsIDB4MTE3QiwgMHg1NzM4LCAweDExN0MsIDB4NTczQiwgMHgxMTdFLA0KKyAgICAweDU3M0QsIDB4NEI1MiwgMHg1NzNFLCAweDRCNTMsIDB4NTc0MCwgMHgxMTdGLCAweDU3NDIsIDB4MDg1NCwNCisgICAgMHg1NzQ1LCAweDQ0MEEsIDB4NTc0NiwgMHg0NDBCLCAweDU3NDcsIDB4MDZDOSwgMHg1NzRBLCAweDBFNjUsDQorICAgIDB4NTc0QywgMHgzODU3LCAweDU3NEQsIDB4NDQwQywgMHg1NzRFLCAweDExN0QsIDB4NTc0RiwgMHgxMTgwLA0KKyAgICAweDU3NTAsIDB4MDgzMSwgMHg1NzUxLCAweDA3QjUsIDB4NTc1OSwgMHgyMEUwLCAweDU3NUYsIDB4NEI1NCwNCisgICAgMHg1NzYxLCAweDExODQsIDB4NTc2NCwgMHgwODE1LCAweDU3NjUsIDB4MjBFMSwgMHg1NzY2LCAweDBCNzEsDQorICAgIDB4NTc2OCwgMHg0NDBFLCAweDU3NjksIDB4MTE4MSwgMHg1NzZBLCAweDBCRjYsIDB4NTc2QiwgMHg0QjU1LA0KKyAgICAweDU3NkQsIDB4NEI1NiwgMHg1NzZGLCAweDQ0MEYsIDB4NTc3MCwgMHgzODU4LCAweDU3NzMsIDB4NDQxMCwNCisgICAgMHg1Nzc0LCAweDQ0MTEsIDB4NTc3NSwgMHg0NDEyLCAweDU3NzcsIDB4NDFBRSwgMHg1NzdBLCAweDRCNTcsDQorICAgIDB4NTc3QiwgMHg0NDEzLCAweDU3N0MsIDB4NDFBRiwgMHg1NzdGLCAweDExODUsIDB4NTc4MiwgMHgwQTI4LA0KKyAgICAweDU3ODMsIDB4NEI1OCwgMHg1Nzg4LCAweDExODMsIDB4NTc4OSwgMHgxMTg2LCAweDU3OEIsIDB4MDcxNSwNCisgICAgMHg1NzhDLCAweDM4NTksIDB4NTc5MywgMHgxMTg3LCAweDU3OTcsIDB4NEI1OSwgMHg1NzlBLCAweDQ0MTYsDQorICAgIDB4NTc5QywgMHgzODVBLCAweDU3OUQsIDB4NDQxNywgMHg1NzlFLCAweDQ0MTgsIDB4NTdBMCwgMHgxMTg4LA0KKyAgICAweDU3QTIsIDB4MDdCNiwgMHg1N0EzLCAweDA1OUUsIDB4NTdBNCwgMHgxMThBLCAweDU3QTgsIDB4NDQxOSwNCisgICAgMHg1N0FBLCAweDExOEIsIDB4NTdBQywgMHgyMEUyLCAweDU3QUUsIDB4NEI1QSwgMHg1N0IwLCAweDExOEMsDQorICAgIDB4NTdCMywgMHgxMTg5LCAweDU3QjgsIDB4Mzg1QiwgMHg1N0MwLCAweDExODIsIDB4NTdDMywgMHgxMThELA0KKyAgICAweDU3QzYsIDB4MTE4RSwgMHg1N0M3LCAweDIwRTQsIDB4NTdDOCwgMHgyMEUzLCAweDU3Q0IsIDB4MEU5MiwNCisgICAgMHg1N0NDLCAweDQ0MUMsIDB4NTdDRSwgMHgwOUQzLCAweDU3Q0YsIDB4NDFCMSwgMHg1N0QyLCAweDExOTAsDQorICAgIDB4NTdEMywgMHgxMTkxLCAweDU3RDQsIDB4MTE4RiwgMHg1N0Q1LCAweDRCNUIsIDB4NTdENiwgMHgxMTkzLA0KKyAgICAweDU3RDcsIDB4NDQxQSwgMHg1N0RDLCAweDBDRUUsIDB4NTdERSwgMHg0NDFGLCAweDU3REYsIDB4MDRBQywNCisgICAgMHg1N0UwLCAweDBEQzgsIDB4NTdFMywgMHgxMTk0LCAweDU3RTQsIDB4NDFCMiwgMHg1N0U2LCAweDM4NUMsDQorICAgIDB4NTdFNywgMHg0QjVDLCAweDU3RUQsIDB4Mzg1RCwgMHg1N0YwLCAweDQ0MjAsIDB4NTdGNCwgMHgwOUU1LA0KKyAgICAweDU3RjUsIDB4Mzg1RSwgMHg1N0Y2LCAweDM4NUYsIDB4NTdGNywgMHgwOEU1LCAweDU3RjgsIDB4NDQyMiwNCisgICAgMHg1N0Y5LCAweDBEMTMsIDB4NTdGQSwgMHgwNjJDLCAweDU3RkIsIDB4NDQyMywgMHg1N0ZDLCAweDA4NUIsDQorICAgIDB4NTdGRCwgMHg0NDI0LCAweDU3RkYsIDB4Mzg2MCwgMHg1ODAwLCAweDBFODcsIDB4NTgwMiwgMHgwQzhBLA0KKyAgICAweDU4MDQsIDB4NDQyNSwgMHg1ODA1LCAweDA3NEUsIDB4NTgwNiwgMHgwQjJGLCAweDU4MDksIDB4Mzg2MSwNCisgICAgMHg1ODBBLCAweDExOTIsIDB4NTgwQiwgMHgxMTk1LCAweDU4MEQsIDB4NEI1RCwgMHg1ODE1LCAweDBCMjQsDQorICAgIDB4NTgxOSwgMHgxMTk2LCAweDU4MUQsIDB4MTE5NywgMHg1ODFFLCAweDQ0MjYsIDB4NTgyMCwgMHgzODYyLA0KKyAgICAweDU4MjEsIDB4MTE5OSwgMHg1ODI0LCAweDBDMDUsIDB4NTgyNiwgMHg0QjVFLCAweDU4MjcsIDB4NDQyNywNCisgICAgMHg1ODJBLCAweDA1RUEsIDB4NTgyRiwgMHgxRDMyLCAweDU4MzAsIDB4MDUwMywgMHg1ODMxLCAweDBFNDMsDQorICAgIDB4NTgzMiwgMHgzODYzLCAweDU4MzQsIDB4MDlENCwgMHg1ODM1LCAweDBDNDIsIDB4NTgzOSwgMHg0NDI4LA0KKyAgICAweDU4M0EsIDB4MDg1NiwgMHg1ODNELCAweDExOUYsIDB4NTg0MCwgMHgwRTBELCAweDU4NDEsIDB4MEZBNSwNCisgICAgMHg1ODQ5LCAweDQ0MkEsIDB4NTg0QSwgMHgwNTc0LCAweDU4NEIsIDB4MTE5QiwgMHg1ODRDLCAweDQ0MkIsDQorICAgIDB4NTg0RCwgMHg0QjVGLCAweDU4NEYsIDB4NEI2MCwgMHg1ODUxLCAweDBBQkMsIDB4NTg1MiwgMHgxMTlFLA0KKyAgICAweDU4NTQsIDB4MEM1RCwgMHg1ODU3LCAweDBDNDMsIDB4NTg1OCwgMHgwQzVFLCAweDU4NTksIDB4MEQ0RCwNCisgICAgMHg1ODVBLCAweDBCRTksIDB4NTg1RSwgMHgwODM5LCAweDU4NUYsIDB4NEI2MSwgMHg1ODYxLCAweDFFNDcsDQorICAgIDB4NTg2MiwgMHgxMTlBLCAweDU4NjQsIDB4NDFCMywgMHg1ODY3LCAweDQ0MkMsIDB4NTg2OSwgMHgwNTE4LA0KKyAgICAweDU4NkIsIDB4MEMzMCwgMHg1ODZELCAweDRCNjIsIDB4NTg3MCwgMHgxMTlDLCAweDU4NzIsIDB4MTE5OCwNCisgICAgMHg1ODc1LCAweDBBMTYsIDB4NTg3OSwgMHgxMUEwLCAweDU4N0MsIDB4Mzg2NCwgMHg1ODdFLCAweDA5NTgsDQorICAgIDB4NTg3RiwgMHg0QjYzLCAweDU4ODAsIDB4Mzg2NSwgMHg1ODgxLCAweDRCNjQsIDB4NTg4MywgMHgwNkE1LA0KKyAgICAweDU4ODUsIDB4MTFBMSwgMHg1ODg5LCAweDQxQjQsIDB4NTg4QSwgMHg0NDJELCAweDU4OEIsIDB4NDQyRSwNCisgICAgMHg1ODhELCAweDQ0MkYsIDB4NTg4RiwgMHg0NDMwLCAweDU4OTAsIDB4NDQzMSwgMHg1ODkzLCAweDBFMzgsDQorICAgIDB4NTg5NCwgMHg0NDMyLCAweDU4OTcsIDB4MEFGRiwgMHg1ODk4LCAweDRCNjUsIDB4NTg5QywgMHgwQkUyLA0KKyAgICAweDU4OUQsIDB4NDQzMywgMHg1ODlFLCAweDIwRTcsIDB4NTg5RiwgMHgxMUEzLCAweDU4QTgsIDB4MEU3RCwNCisgICAgMHg1OEE5LCAweDM4NjYsIDB4NThBQSwgMHg0NDM0LCAweDU4QUIsIDB4MTFBNCwgMHg1OEFFLCAweDExQTksDQorICAgIDB4NThCMSwgMHg0NDM1LCAweDU4QjIsIDB4MjBFOCwgMHg1OEIzLCAweDBERkYsIDB4NThCOCwgMHgxMUE4LA0KKyAgICAweDU4QjksIDB4MTFBMiwgMHg1OEJBLCAweDExQTUsIDB4NThCQiwgMHgxMUE3LCAweDU4QkMsIDB4NEI2NiwNCisgICAgMHg1OEJFLCAweDA4MTYsIDB4NThDMSwgMHgwRTE5LCAweDU4QzMsIDB4NDQzNywgMHg1OEM1LCAweDExQUEsDQorICAgIDB4NThDNywgMHgwQjgzLCAweDU4Q0EsIDB4MDU3NSwgMHg1OENDLCAweDA5RDUsIDB4NThDRCwgMHg0NDM4LA0KKyAgICAweDU4Q0UsIDB4Mzg2NywgMHg1OEQwLCAweDM4NjgsIDB4NThEMSwgMHgxMUFDLCAweDU4RDIsIDB4NDFCNiwNCisgICAgMHg1OEQzLCAweDExQUIsIDB4NThENCwgMHgzODY5LCAweDU4RDUsIDB4MDdGQSwgMHg1OEQ3LCAweDExQUQsDQorICAgIDB4NThEOCwgMHgxMUFGLCAweDU4RDksIDB4MTFBRSwgMHg1OERBLCAweDM4NkEsIDB4NThEQywgMHgxMUIxLA0KKyAgICAweDU4REUsIDB4MTFBNiwgMHg1OERGLCAweDExQjMsIDB4NThFMCwgMHg0MUI3LCAweDU4RTIsIDB4NDQzOSwNCisgICAgMHg1OEU0LCAweDExQjIsIDB4NThFNSwgMHgxMUIwLCAweDU4RTksIDB4Mzg2QiwgMHg1OEVCLCAweDA4OUMsDQorICAgIDB4NThFQywgMHgwQTE3LCAweDU4RUUsIDB4MEFENiwgMHg1OEVGLCAweDExQjQsIDB4NThGMCwgMHgwQTYwLA0KKyAgICAweDU4RjEsIDB4MDRCMSwgMHg1OEYyLCAweDBEMUEsIDB4NThGMywgMHg0NDNBLCAweDU4RjQsIDB4NDQzQiwNCisgICAgMHg1OEY3LCAweDBCRjcsIDB4NThGOSwgMHgxMUI2LCAweDU4RkEsIDB4MTFCNSwgMHg1OEZCLCAweDExQjcsDQorICAgIDB4NThGQywgMHgxMUI4LCAweDU4RkQsIDB4MTFCOSwgMHg1OTAyLCAweDExQkEsIDB4NTkwNSwgMHg0NDNDLA0KKyAgICAweDU5MDYsIDB4NDQzRCwgMHg1OTA5LCAweDBFMjEsIDB4NTkwQSwgMHgxMUJCLCAweDU5MEIsIDB4MjBFOSwNCisgICAgMHg1OTBDLCAweDM4NkMsIDB4NTkwRCwgMHg0NDNFLCAweDU5MEYsIDB4MDU0NiwgMHg1OTEwLCAweDExQkMsDQorICAgIDB4NTkxNCwgMHg0NDNGLCAweDU5MTUsIDB4MEYyNiwgMHg1OTE2LCAweDA1OEUsIDB4NTkxOCwgMHgxMERFLA0KKyAgICAweDU5MTksIDB4MDk1MiwgMHg1OTFBLCAweDBCMUYsIDB4NTkxQiwgMHgxMUJELCAweDU5MUMsIDB4MEVGNywNCisgICAgMHg1OTFGLCAweDRCNjcsIDB4NTkyMiwgMHgwRUMwLCAweDU5MjMsIDB4NEI2OCwgMHg1OTI0LCAweDM4NkQsDQorICAgIDB4NTkyNSwgMHgxMUJGLCAweDU5MjcsIDB4MEI0NywgMHg1OTI5LCAweDBDMzEsIDB4NTkyQSwgMHgwQjIwLA0KKyAgICAweDU5MkIsIDB4MERDOSwgMHg1OTJDLCAweDExQzAsIDB4NTkyRCwgMHgxMUMxLCAweDU5MkUsIDB4MDUxRCwNCisgICAgMHg1OTJGLCAweDM4NkUsIDB4NTkzMSwgMHgwOEU2LCAweDU5MzIsIDB4MTFDMiwgMHg1OTM3LCAweDA0OTQsDQorICAgIDB4NTkzOCwgMHgxMUMzLCAweDU5MzksIDB4MzcyNSwgMHg1OTNELCAweDQ0NDIsIDB4NTkzRSwgMHgxMUM0LA0KKyAgICAweDU5NDQsIDB4MDUwNCwgMHg1OTQ2LCAweDQ0NDQsIDB4NTk0NywgMHgwNjJELCAweDU5NDgsIDB4MENCOCwNCisgICAgMHg1OTQ5LCAweDBFNDQsIDB4NTk0RSwgMHgxMUM4LCAweDU5NEYsIDB4MEFENywgMHg1OTUwLCAweDExQzcsDQorICAgIDB4NTk1MSwgMHgwNzE2LCAweDU5NTMsIDB4MjBFQSwgMHg1OTU0LCAweDBFODksIDB4NTk1NSwgMHgxMUM2LA0KKyAgICAweDU5NTcsIDB4MEM1RiwgMHg1OTU4LCAweDExQ0EsIDB4NTk1OSwgMHg0QjY5LCAweDU5NUEsIDB4MTFDOSwNCisgICAgMHg1OTVCLCAweDIwRUIsIDB4NTk1RCwgMHgyMEVDLCAweDU5NUYsIDB4NDQ0NywgMHg1OTYwLCAweDExQ0MsDQorICAgIDB4NTk2MSwgMHgzODZGLCAweDU5NjIsIDB4MTFDQiwgMHg1OTYzLCAweDIwRUQsIDB4NTk2NSwgMHgwNTFFLA0KKyAgICAweDU5NjcsIDB4MTFDRCwgMHg1OTY4LCAweDA5OTEsIDB4NTk2OSwgMHgxMUNGLCAweDU5NkEsIDB4MEI2MywNCisgICAgMHg1OTZDLCAweDExQ0UsIDB4NTk2RCwgMHgzODcwLCAweDU5NkUsIDB4MEUwMywgMHg1OTczLCAweDA5ODEsDQorICAgIDB4NTk3NCwgMHgwQzU1LCAweDU5NzUsIDB4NDQ0OSwgMHg1OTc2LCAweDQ0NEEsIDB4NTk3OCwgMHgxMUQwLA0KKyAgICAweDU5NzksIDB4NEI2QSwgMHg1OTdDLCAweDQ0NEIsIDB4NTk3RCwgMHgwN0I3LCAweDU5ODEsIDB4MTFEMSwNCisgICAgMHg1OTgyLCAweDBDRDcsIDB4NTk4MywgMHgwRDcyLCAweDU5ODQsIDB4MEVERCwgMHg1OThBLCAweDBDREIsDQorICAgIDB4NTk4QiwgMHg0MUI5LCAweDU5OEQsIDB4MTFEQSwgMHg1OTkyLCAweDQxQkEsIDB4NTk5MywgMHgwNjUyLA0KKyAgICAweDU5OTYsIDB4MEYyRiwgMHg1OTk3LCAweDRCNkIsIDB4NTk5OSwgMHgwRUJCLCAweDU5OUIsIDB4MTIzOSwNCisgICAgMHg1OTlELCAweDExRDIsIDB4NTk5RiwgMHg0NDRDLCAweDU5QTMsIDB4MTFENSwgMHg1OUE0LCAweDIwRUUsDQorICAgIDB4NTlBNSwgMHgwQjI1LCAweDU5QTgsIDB4MEU2NiwgMHg1OUFDLCAweDBDNDQsIDB4NTlBRSwgMHg0NDRELA0KKyAgICAweDU5QUYsIDB4NEI2QywgMHg1OUIyLCAweDExRDYsIDB4NTlCMywgMHg0QjZELCAweDU5QjksIDB4MEU5MywNCisgICAgMHg1OUJBLCAweDIwRUYsIDB4NTlCQiwgMHgwODNBLCAweDU5QkMsIDB4NDQ0RSwgMHg1OUJFLCAweDA5OTIsDQorICAgIDB4NTlDMywgMHg0MUJCLCAweDU5QzYsIDB4MTFENywgMHg1OUM4LCAweDQ0NEYsIDB4NTlDOSwgMHgwODlFLA0KKyAgICAweDU5Q0EsIDB4Mzg3MSwgMHg1OUNCLCAweDA4OUQsIDB4NTlDRCwgMHg0NDUwLCAweDU5RDAsIDB4MDQ3RCwNCisgICAgMHg1OUQxLCAweDA3N0MsIDB4NTlEMiwgMHgzODcyLCAweDU5RDMsIDB4MEE0RiwgMHg1OUQ0LCAweDA0OTUsDQorICAgIDB4NTlEOSwgMHgxMURCLCAweDU5REEsIDB4MTFEQywgMHg1OURDLCAweDExRDksIDB4NTlERCwgMHgzODczLA0KKyAgICAweDU5REUsIDB4NDQ1MSwgMHg1OURGLCAweDRCNkUsIDB4NTlFMywgMHgzODc0LCAweDU5RTQsIDB4Mzg3NSwNCisgICAgMHg1OUU1LCAweDA0REEsIDB4NTlFNiwgMHgwNUVCLCAweDU5RTcsIDB4NDQ1MiwgMHg1OUU4LCAweDExRDgsDQorICAgIDB4NTlFQSwgMHgwRUQxLCAweDU5RUIsIDB4MERBMywgMHg1OUVDLCAweDM2QUQsIDB4NTlFRSwgMHg0NDUzLA0KKyAgICAweDU5RjEsIDB4NEI2RiwgMHg1OUY2LCAweDA0NkMsIDB4NTlGOCwgMHg0QjcwLCAweDU5RkIsIDB4MDRCRCwNCisgICAgMHg1OUZGLCAweDA4OUYsIDB4NUEwMSwgMHgwNDk2LCAweDVBMDMsIDB4MDQ2NywgMHg1QTA0LCAweDM4NzYsDQorICAgIDB4NUEwOSwgMHgxMUUxLCAweDVBMEMsIDB4Mzg3NywgMHg1QTBELCAweDQ0NTcsIDB4NUExMSwgMHgxMURGLA0KKyAgICAweDVBMTMsIDB4NDFCQywgMHg1QTE3LCAweDQ0NTgsIDB4NUExOCwgMHgwRUM4LCAweDVBMUEsIDB4MTFFMiwNCisgICAgMHg1QTFCLCAweDM1QzEsIDB4NUExQywgMHgxMUUwLCAweDVBMUYsIDB4MTFERSwgMHg1QTIwLCAweDA5RjcsDQorICAgIDB4NUEyMywgMHgzODc4LCAweDVBMjUsIDB4MTFERCwgMHg1QTI3LCAweDQ0NTksIDB4NUEyOSwgMHgwRTJBLA0KKyAgICAweDVBMkQsIDB4NDQ1QSwgMHg1QTJGLCAweDA3OTgsIDB4NUEzNSwgMHgxMUU2LCAweDVBMzYsIDB4MTFFNywNCisgICAgMHg1QTNDLCAweDA5OTMsIDB4NUE0MCwgMHgxMUUzLCAweDVBNDEsIDB4MEZEMiwgMHg1QTQ2LCAweDBEMDIsDQorICAgIDB4NUE0NywgMHgzODc5LCAweDVBNDksIDB4MTFFNSwgMHg1QTU1LCAweDM4N0EsIDB4NUE1QSwgMHgwODE3LA0KKyAgICAweDVBNjIsIDB4MTFFOCwgMHg1QTYzLCAweDM4N0IsIDB4NUE2NSwgMHg0NDVCLCAweDVBNjYsIDB4MERDQSwNCisgICAgMHg1QTY3LCAweDQxQkQsIDB4NUE2QSwgMHgxMUU5LCAweDVBNkMsIDB4MTFFNCwgMHg1QTZELCAweDM4N0MsDQorICAgIDB4NUE3NywgMHg0MUJFLCAweDVBN0EsIDB4NDQ1QywgMHg1QTdFLCAweDM4N0QsIDB4NUE3RiwgMHgwRUM3LA0KKyAgICAweDVBODQsIDB4NDFCRiwgMHg1QThCLCAweDQ0NUQsIDB4NUE5MiwgMHgwRDE0LCAweDVBOUEsIDB4MTFFQSwNCisgICAgMHg1QTlCLCAweDBEQTQsIDB4NUE5QywgMHg0NDVFLCAweDVBOUUsIDB4Mzg3RSwgMHg1QTlGLCAweDQ0NUYsDQorICAgIDB4NUFBMCwgMHg0NDYwLCAweDVBQTIsIDB4NDQ2MSwgMHg1QUE3LCAweDM4N0YsIDB4NUFBQywgMHgzODgwLA0KKyAgICAweDVBQjEsIDB4NDQ2MiwgMHg1QUIyLCAweDRCNzEsIDB4NUFCMywgMHgzODgxLCAweDVBQjUsIDB4NDQ2MywNCisgICAgMHg1QUI4LCAweDRCNzIsIDB4NUFCQSwgMHg0NDY0LCAweDVBQkMsIDB4MTFFQiwgMHg1QUJELCAweDExRUYsDQorICAgIDB4NUFCRSwgMHgxMUVDLCAweDVBQkYsIDB4NDQ2NSwgMHg1QUMxLCAweDA1NDcsIDB4NUFDMiwgMHgxMUVFLA0KKyAgICAweDVBQzQsIDB4NDFDMCwgMHg1QUM5LCAweDA4RTcsIDB4NUFDQiwgMHgxMUVELCAweDVBQ0MsIDB4MDc0RiwNCisgICAgMHg1QUQwLCAweDExRkIsIDB4NUFENiwgMHgxMUY0LCAweDVBRDcsIDB4MTFGMSwgMHg1QURBLCAweDQ0NjYsDQorICAgIDB4NUFEQywgMHg0NDY3LCAweDVBRTAsIDB4Mzg4MiwgMHg1QUUxLCAweDBCQTIsIDB4NUFFMywgMHgxMUYwLA0KKyAgICAweDVBRTUsIDB4NDQ2OCwgMHg1QUU2LCAweDExRjIsIDB4NUFFOSwgMHgxMUYzLCAweDVBRUEsIDB4NEI3MywNCisgICAgMHg1QUVFLCAweDQ0NkEsIDB4NUFGMCwgMHg0NDY5LCAweDVBRjUsIDB4NDQ2QiwgMHg1QUY2LCAweDRCNzQsDQorICAgIDB4NUFGQSwgMHgxMUY1LCAweDVBRkIsIDB4MTFGNiwgMHg1QjAwLCAweDM4ODMsIDB4NUIwOCwgMHg0NDZDLA0KKyAgICAweDVCMDksIDB4MDYyRSwgMHg1QjBCLCAweDExRjgsIDB4NUIwQywgMHgxMUY3LCAweDVCMTYsIDB4MTFGOSwNCisgICAgMHg1QjE3LCAweDQ0NkQsIDB4NUIxOSwgMHgzODg0LCAweDVCMUIsIDB4NEI3NSwgMHg1QjFELCAweDRCNzYsDQorICAgIDB4NUIyMSwgMHg0Qjc3LCAweDVCMjIsIDB4MDlENiwgMHg1QjI1LCAweDM4ODUsIDB4NUIyQSwgMHgxMUZDLA0KKyAgICAweDVCMkMsIDB4MEJGOCwgMHg1QjJELCAweDM4ODYsIDB4NUIzMCwgMHgwNEU3LCAweDVCMzIsIDB4MTFGQSwNCisgICAgMHg1QjM0LCAweDQ0NkUsIDB4NUIzNiwgMHgxMUZELCAweDVCMzgsIDB4NEI3OCwgMHg1QjNFLCAweDExRkUsDQorICAgIDB4NUI0MCwgMHgxMjAxLCAweDVCNDEsIDB4Mzg4NywgMHg1QjQzLCAweDExRkYsIDB4NUI0NSwgMHgxMjAwLA0KKyAgICAweDVCNEMsIDB4NDQ2RiwgMHg1QjUwLCAweDA4QTAsIDB4NUI1MSwgMHgxMjAyLCAweDVCNTIsIDB4NDQ3MCwNCisgICAgMHg1QjU0LCAweDA3QjgsIDB4NUI1NSwgMHgxMjAzLCAweDVCNTYsIDB4MjBGMCwgMHg1QjU3LCAweDA4QzgsDQorICAgIDB4NUI1OCwgMHgwQjE4LCAweDVCNUEsIDB4MTIwNCwgMHg1QjVCLCAweDEyMDUsIDB4NUI1QywgMHgwOEE4LA0KKyAgICAweDVCNUQsIDB4MDdCOSwgMHg1QjVGLCAweDBFREUsIDB4NUI2MywgMHgwNjQyLCAweDVCNjQsIDB4MDc3RCwNCisgICAgMHg1QjY1LCAweDEyMDYsIDB4NUI2NiwgMHgwNUI2LCAweDVCNjgsIDB4NDQ3MSwgMHg1QjY5LCAweDEyMDcsDQorICAgIDB4NUI2QiwgMHgwQjE5LCAweDVCNkYsIDB4NDQ3MiwgMHg1QjcwLCAweDEyMDgsIDB4NUI3MSwgMHgxMjMwLA0KKyAgICAweDVCNzMsIDB4MTIwOSwgMHg1Qjc1LCAweDEyMEEsIDB4NUI3NiwgMHgzNzI4LCAweDVCNzgsIDB4MTIwQiwNCisgICAgMHg1QjdBLCAweDEyMEQsIDB4NUI3QywgMHgzODg4LCAweDVCN0QsIDB4NDFDMiwgMHg1QjdFLCAweDM4ODksDQorICAgIDB4NUI3RiwgMHgzODhBLCAweDVCODAsIDB4MTIwRSwgMHg1QjgxLCAweDQ0NzMsIDB4NUI4MiwgMHgzNjEwLA0KKyAgICAweDVCODMsIDB4MTIwRiwgMHg1Qjg0LCAweDQ0NzQsIDB4NUI4NSwgMHgwQjUwLCAweDVCODcsIDB4MDRDOSwNCisgICAgMHg1Qjg4LCAweDA5MTUsIDB4NUI4OSwgMHgwNDg2LCAweDVCOEEsIDB4Mzg4QiwgMHg1QjhCLCAweDBBRDksDQorICAgIDB4NUI4QywgMHgwNUVDLCAweDVCOEQsIDB4MDhFMSwgMHg1QjhGLCAweDA3QkEsIDB4NUI5MywgMHg0MUMzLA0KKyAgICAweDVCOTUsIDB4MEM2MCwgMHg1Qjk2LCAweDQ0NzYsIDB4NUI5NywgMHgwOTJCLCAweDVCOTgsIDB4MDVFRCwNCisgICAgMHg1Qjk5LCAweDBCQTYsIDB4NUI5QSwgMHgwQzA2LCAweDVCOUIsIDB4MDQ3QywgMHg1QjlDLCAweDA2NTMsDQorICAgIDB4NUI5RCwgMHgwRTQ1LCAweDVCOUYsIDB4MDhFRSwgMHg1QkEyLCAweDA2NkMsIDB4NUJBMywgMHgwQThGLA0KKyAgICAweDVCQTQsIDB4MDhFOCwgMHg1QkE1LCAweDBGMTIsIDB4NUJBNiwgMHgxMjEwLCAweDVCQUMsIDB4NDQ3NywNCisgICAgMHg1QkFFLCAweDA2NzYsIDB4NUJCMCwgMHgwODNCLCAweDVCQjMsIDB4MDU5MCwgMHg1QkI0LCAweDA1MDUsDQorICAgIDB4NUJCNSwgMHgwOTk0LCAweDVCQjYsIDB4MDU0OCwgMHg1QkI3LCAweDRCNzksIDB4NUJCOCwgMHgxMjExLA0KKyAgICAweDVCQjksIDB4MEYzMCwgMHg1QkJGLCAweDA5NTMsIDB4NUJDMCwgMHgyMEYxLCAweDVCQzIsIDB4MDkxMCwNCisgICAgMHg1QkMzLCAweDEyMTIsIDB4NUJDNCwgMHgwNjJGLCAweDVCQzUsIDB4MENBQSwgMHg1QkM2LCAweDBFQjUsDQorICAgIDB4NUJDNywgMHgxMjEzLCAweDVCQzksIDB4MTIxNCwgMHg1QkNDLCAweDBEQ0IsIDB4NUJDRSwgMHg0NDdBLA0KKyAgICAweDVCRDAsIDB4MTIxNiwgMHg1QkQyLCAweDA1RTQsIDB4NUJEMywgMHgwNkVGLCAweDVCRDQsIDB4MTIxNSwNCisgICAgMHg1QkQ2LCAweDQ0N0IsIDB4NUJENywgMHg0QjdBLCAweDVCRDgsIDB4MjBGMywgMHg1QkRCLCAweDA1RUUsDQorICAgIDB4NUJERCwgMHgwOUY4LCAweDVCREUsIDB4MTIxQSwgMHg1QkRGLCAweDA4NkYsIDB4NUJFMCwgMHg0QjdCLA0KKyAgICAweDVCRTEsIDB4MDU0OSwgMHg1QkUyLCAweDEyMTksIDB4NUJFNCwgMHgxMjE3LCAweDVCRTUsIDB4MTIxQiwNCisgICAgMHg1QkU2LCAweDEyMTgsIDB4NUJFNywgMHgwQ0UxLCAweDVCRTgsIDB4MTQ4RSwgMHg1QkU5LCAweDA5RjksDQorICAgIDB4NUJFQiwgMHgxMjFDLCAweDVCRUMsIDB4NEY0RSwgMHg1QkVFLCAweDBGODgsIDB4NUJGMCwgMHgxMjFELA0KKyAgICAweDVCRjEsIDB4NDQ3RSwgMHg1QkYzLCAweDEyMUYsIDB4NUJGNSwgMHgwQkJDLCAweDVCRjYsIDB4MTIxRSwNCisgICAgMHg1QkY4LCAweDBBNDcsIDB4NUJGQSwgMHgwOEM5LCAweDVCRkQsIDB4NDQ3RiwgMHg1QkZFLCAweDBCMzAsDQorICAgIDB4NUJGRiwgMHgwOTIzLCAweDVDMDEsIDB4MERFNywgMHg1QzAyLCAweDBBOTAsIDB4NUMwMywgMHg0NDgxLA0KKyAgICAweDVDMDQsIDB4MDhGOSwgMHg1QzA1LCAweDEyMjAsIDB4NUMwNiwgMHgwOTk1LCAweDVDMDcsIDB4MTIyMSwNCisgICAgMHg1QzA4LCAweDEyMjIsIDB4NUMwOSwgMHgwNDk3LCAweDVDMEEsIDB4MEIxQSwgMHg1QzBCLCAweDBBMTgsDQorICAgIDB4NUMwRCwgMHgxMjIzLCAweDVDMEUsIDB4MEM4QiwgMHg1QzBGLCAweDA5OTYsIDB4NUMxMSwgMHgwOTk3LA0KKyAgICAweDVDMTIsIDB4NDFDNCwgMHg1QzEzLCAweDEyMjQsIDB4NUMxNCwgMHgzNzJBLCAweDVDMTYsIDB4MEE5MSwNCisgICAgMHg1QzE5LCAweDM2MEIsIDB4NUMxQSwgMHgwOTk4LCAweDVDMUUsIDB4MjBGNSwgMHg1QzFGLCAweDRCN0MsDQorICAgIDB4NUMyMCwgMHgxMjI1LCAweDVDMjIsIDB4MTIyNiwgMHg1QzIzLCAweDM4OEMsIDB4NUMyNCwgMHgwRUVDLA0KKyAgICAweDVDMjgsIDB4MTIyNywgMHg1QzI5LCAweDQ0ODIsIDB4NUMyQSwgMHg0QjdELCAweDVDMkIsIDB4Mzg4RCwNCisgICAgMHg1QzJDLCAweDRCN0UsIDB4NUMyRCwgMHgwNkJFLCAweDVDMzAsIDB4Mzg4RSwgMHg1QzMxLCAweDA5MkMsDQorICAgIDB4NUMzNiwgMHg0QjdGLCAweDVDMzgsIDB4MTIyOCwgMHg1QzM5LCAweDEyMjksIDB4NUMzQSwgMHgwOTA4LA0KKyAgICAweDVDM0IsIDB4MDlGMiwgMHg1QzNDLCAweDBDQ0MsIDB4NUMzRCwgMHgwQTFBLCAweDVDM0UsIDB4MEQ4QywNCisgICAgMHg1QzNGLCAweDBDRDgsIDB4NUM0MCwgMHgwNkMxLCAweDVDNDEsIDB4MTIyQSwgMHg1QzQ1LCAweDA2ODksDQorICAgIDB4NUM0NiwgMHgxMjJCLCAweDVDNDgsIDB4MDZGNiwgMHg1QzRBLCAweDBDQTcsIDB4NUM0QiwgMHgwNTMwLA0KKyAgICAweDVDNEQsIDB4MDhBMSwgMHg1QzRFLCAweDEyMkMsIDB4NUM0RiwgMHgxMjJGLCAweDVDNTAsIDB4MTIyRSwNCisgICAgMHg1QzUxLCAweDA2RjUsIDB4NUM1MywgMHgxMjJELCAweDVDNTUsIDB4MEMzMiwgMHg1QzU5LCAweDRCODAsDQorICAgIDB4NUM1QiwgMHgxRTkyLCAweDVDNUMsIDB4NEI4MSwgMHg1QzVFLCAweDBCMTAsIDB4NUM1RiwgMHg0NDg0LA0KKyAgICAweDVDNjAsIDB4MEM0NSwgMHg1QzYxLCAweDA4RjQsIDB4NUM2MiwgMHgxRTBELCAweDVDNjMsIDB4Mzg4RiwNCisgICAgMHg1QzY0LCAweDBBREEsIDB4NUM2NSwgMHgwRjY0LCAweDVDNjcsIDB4NDQ4NSwgMHg1QzY4LCAweDQ0ODYsDQorICAgIDB4NUM2OSwgMHgzODkwLCAweDVDNkMsIDB4MTIzMSwgMHg1QzZELCAweDRCODIsIDB4NUM2RSwgMHgxMjMyLA0KKyAgICAweDVDNkYsIDB4MENBRSwgMHg1QzcwLCAweDQ0ODcsIDB4NUM3MSwgMHgwODgxLCAweDVDNzYsIDB4MTIzNCwNCisgICAgMHg1Qzc5LCAweDEyMzUsIDB4NUM3QSwgMHg0MUM3LCAweDVDN0MsIDB4Mzg5MSwgMHg1Qzg4LCAweDQ0OEMsDQorICAgIDB4NUM4QSwgMHg0NDhELCAweDVDOEMsIDB4MTIzNiwgMHg1QzhGLCAweDQxQzgsIDB4NUM5MCwgMHgwNjMwLA0KKyAgICAweDVDOTEsIDB4MTIzNywgMHg1Qzk0LCAweDEyMzgsIDB4NUM5RiwgMHg0MUM5LCAweDVDQTAsIDB4NDQ5MSwNCisgICAgMHg1Q0ExLCAweDA1MkMsIDB4NUNBMiwgMHg0NDkyLCAweDVDQTMsIDB4NDFDQSwgMHg1Q0E2LCAweDIwRjYsDQorICAgIDB4NUNBNywgMHg0NDkzLCAweDVDQTgsIDB4MEFCRCwgMHg1Q0E5LCAweDA2MjAsIDB4NUNBQSwgMHg0MUNCLA0KKyAgICAweDVDQUIsIDB4MTIzQSwgMHg1Q0FDLCAweDBFQjQsIDB4NUNBRCwgMHg0NDk1LCAweDVDQjEsIDB4MEIzMiwNCisgICAgMHg1Q0IzLCAweDA1QjcsIDB4NUNCNSwgMHg0NDk2LCAweDVDQjYsIDB4MTIzQywgMHg1Q0I3LCAweDEyM0UsDQorICAgIDB4NUNCOCwgMHgwNjFCLCAweDVDQkEsIDB4MjBGNywgMHg1Q0JCLCAweDEyM0IsIDB4NUNCQywgMHgxMjNELA0KKyAgICAweDVDQkUsIDB4MTI0MCwgMHg1Q0M1LCAweDEyM0YsIDB4NUNDNywgMHgxMjQxLCAweDVDQzksIDB4NDQ5OCwNCisgICAgMHg1Q0NCLCAweDM4OTIsIDB4NUNEMCwgMHg0MUNDLCAweDVDRDIsIDB4Mzg5MywgMHg1Q0Q5LCAweDEyNDIsDQorICAgIDB4NUNERCwgMHg0QjgzLCAweDVDRTAsIDB4MEM5NSwgMHg1Q0UxLCAweDA2QTYsIDB4NUNFNiwgMHgzNzJDLA0KKyAgICAweDVDRTgsIDB4MDU2NSwgMHg1Q0U5LCAweDEyNDMsIDB4NUNFQSwgMHgxMjQ4LCAweDVDRUQsIDB4MTI0NiwNCisgICAgMHg1Q0VGLCAweDBFNDcsIDB4NUNGMCwgMHgwRTQ2LCAweDVDRjQsIDB4Mzg5NCwgMHg1Q0Y1LCAweDIwRjgsDQorICAgIDB4NUNGNiwgMHgwQzYxLCAweDVDRkEsIDB4MTI0NSwgMHg1Q0ZCLCAweDA5NUUsIDB4NUNGRCwgMHgxMjQ0LA0KKyAgICAweDVEMDEsIDB4NEI4NCwgMHg1RDA2LCAweDQ0OUIsIDB4NUQwNywgMHgwQTM4LCAweDVEMEIsIDB4MTI0OSwNCisgICAgMHg1RDBELCAweDQxQ0UsIDB4NUQwRSwgMHgwODVBLCAweDVEMTAsIDB4NDQ5QywgMHg1RDExLCAweDEyNEYsDQorICAgIDB4NUQxNCwgMHgxMjUwLCAweDVEMTUsIDB4MTI0QSwgMHg1RDE2LCAweDA1OTEsIDB4NUQxNywgMHgxMjRCLA0KKyAgICAweDVEMTgsIDB4MTI1NCwgMHg1RDE5LCAweDEyNTMsIDB4NUQxQSwgMHgxMjUyLCAweDVEMUIsIDB4MTI0RSwNCisgICAgMHg1RDFELCAweDQ0OUUsIDB4NUQxRiwgMHgxMjRELCAweDVEMjAsIDB4NDQ5RiwgMHg1RDIyLCAweDEyNTEsDQorICAgIDB4NUQyNCwgMHgzODk1LCAweDVEMjYsIDB4Mzg5NiwgMHg1RDI3LCAweDIwRjksIDB4NUQyOSwgMHgwRTQ4LA0KKyAgICAweDVEMkIsIDB4NDQ5RCwgMHg1RDMxLCAweDQ0QTAsIDB4NUQzNCwgMHg0Qjg1LCAweDVEMzksIDB4NDRBMSwNCisgICAgMHg1RDNELCAweDRCODYsIDB4NUQ0MiwgMHgyMEZDLCAweDVENDMsIDB4Mzg5NywgMHg1RDQ2LCAweDM4OTgsDQorICAgIDB4NUQ0NywgMHg0MUNGLCAweDVENEEsIDB4Mzg5OSwgMHg1RDRCLCAweDEyNTgsIDB4NUQ0QywgMHgxMjU1LA0KKyAgICAweDVENEUsIDB4MTI1NywgMHg1RDUwLCAweDBGNUMsIDB4NUQ1MiwgMHgxMjU2LCAweDVENTMsIDB4MjBGQSwNCisgICAgMHg1RDU5LCAweDRCODcsIDB4NUQ1QywgMHgxMjRDLCAweDVENjEsIDB4NDRBMywgMHg1RDY5LCAweDBBMzksDQorICAgIDB4NUQ2QSwgMHg0NEE0LCAweDVENkMsIDB4MTI1OSwgMHg1RDZELCAweDIwRkQsIDB4NUQ2RiwgMHgwODI3LA0KKyAgICAweDVENzAsIDB4NDRBNiwgMHg1RDczLCAweDEyNUEsIDB4NUQ3NiwgMHgxMjVCLCAweDVEN0UsIDB4NEI4OCwNCisgICAgMHg1RDgxLCAweDQxRDAsIDB4NUQ4MiwgMHgxMjVFLCAweDVEODMsIDB4NEI4OSwgMHg1RDg0LCAweDEyNUQsDQorICAgIDB4NUQ4NywgMHgxMjVDLCAweDVEODgsIDB4NDRBOSwgMHg1RDhCLCAweDBDNjIsIDB4NUQ4QywgMHgxMjQ3LA0KKyAgICAweDVEOTAsIDB4MTI2NCwgMHg1RDkyLCAweDM4OUEsIDB4NUQ5NCwgMHgzODlCLCAweDVEOTcsIDB4NDRBQiwNCisgICAgMHg1RDk5LCAweDM4OUMsIDB4NUQ5RCwgMHgxMjYwLCAweDVEQTAsIDB4Mzg5RCwgMHg1REEyLCAweDEyNUYsDQorICAgIDB4NURBNCwgMHg0MUQxLCAweDVEQTcsIDB4NDFEMiwgMHg1REFDLCAweDEyNjEsIDB4NURBRSwgMHgxMjYyLA0KKyAgICAweDVEQjAsIDB4NDRBQywgMHg1REIyLCAweDNDMkQsIDB4NURCNCwgMHg0NEFELCAweDVEQjcsIDB4MTI2NSwNCisgICAgMHg1REI4LCAweDIwRkUsIDB4NURCOSwgMHgyMEZGLCAweDVEQkEsIDB4MEZBRSwgMHg1REJDLCAweDEyNjYsDQorICAgIDB4NURCRCwgMHgxMjYzLCAweDVEQzcsIDB4NEI4QSwgMHg1REM5LCAweDEyNjcsIDB4NURDQiwgMHg0MUQzLA0KKyAgICAweDVEQ0MsIDB4MDYxQywgMHg1RENELCAweDEyNjgsIDB4NUREMCwgMHgyMTAwLCAweDVERDEsIDB4NDRBRiwNCisgICAgMHg1REQyLCAweDEyNkEsIDB4NUREMywgMHgxMjY5LCAweDVERDYsIDB4MTI2QiwgMHg1REQ3LCAweDQ0QjAsDQorICAgIDB4NUREOCwgMHgzODlFLCAweDVEREIsIDB4MTI2QywgMHg1RERELCAweDBBOTIsIDB4NURERSwgMHgwOTJELA0KKyAgICAweDVERTAsIDB4Mzg5RiwgMHg1REUxLCAweDA5NkUsIDB4NURFMiwgMHgzNDMyLCAweDVERTMsIDB4MEFFNSwNCisgICAgMHg1REU0LCAweDQ0QjIsIDB4NURFNSwgMHgwN0JCLCAweDVERTYsIDB4MDgyOCwgMHg1REU3LCAweDA3QkMsDQorICAgIDB4NURFOCwgMHgwNjhBLCAweDVERTksIDB4NDRCMywgMHg1REVCLCAweDEyNkQsIDB4NURFRSwgMHgwODI5LA0KKyAgICAweDVERjEsIDB4MDc3RSwgMHg1REYyLCAweDEyNkUsIDB4NURGMywgMHgwRUIyLCAweDVERjQsIDB4MENGOSwNCisgICAgMHg1REY1LCAweDEyNkYsIDB4NURGNywgMHgwN0JELCAweDVERjgsIDB4MzhBMCwgMHg1REY5LCAweDRCOEIsDQorICAgIDB4NURGQiwgMHgwNUU4LCAweDVERkQsIDB4MEI2NSwgMHg1REZFLCAweDA2Q0EsIDB4NURGRiwgMHgzNUUyLA0KKyAgICAweDVFMDAsIDB4MzhBMSwgMHg1RTAyLCAweDA4QTIsIDB4NUUwMywgMHgwRENELCAweDVFMDYsIDB4MEQ1NSwNCisgICAgMHg1RTBCLCAweDEyNzAsIDB4NUUwQywgMHgwNjMxLCAweDVFMTEsIDB4MTI3MywgMHg1RTEyLCAweDM4QTIsDQorICAgIDB4NUUxNCwgMHgzOEEzLCAweDVFMTUsIDB4MzhBNCwgMHg1RTE2LCAweDBCQkQsIDB4NUUxOCwgMHgzOEE1LA0KKyAgICAweDVFMTksIDB4MTI3MiwgMHg1RTFBLCAweDEyNzEsIDB4NUUxQiwgMHgxMjc0LCAweDVFMUQsIDB4MEMwNywNCisgICAgMHg1RTFGLCAweDQ0QjcsIDB4NUUyNSwgMHgwQTI5LCAweDVFMjgsIDB4NEI4QywgMHg1RTJCLCAweDA4QTMsDQorICAgIDB4NUUyRCwgMHgwQTZFLCAweDVFMkUsIDB4MzhBNiwgMHg1RTJGLCAweDBCMzMsIDB4NUUzMCwgMHgwNjNDLA0KKyAgICAweDVFMzIsIDB4NEI4RCwgMHg1RTMzLCAweDBCQkUsIDB4NUUzNSwgMHg0QjhFLCAweDVFMzYsIDB4MTI3NSwNCisgICAgMHg1RTM3LCAweDEyNzYsIDB4NUUzOCwgMHgwOUQ3LCAweDVFM0QsIDB4MEU2NywgMHg1RTNFLCAweDQ0QjgsDQorICAgIDB4NUU0MCwgMHgxMjc5LCAweDVFNDMsIDB4MTI3OCwgMHg1RTQ0LCAweDEyNzcsIDB4NUU0NSwgMHgwREVGLA0KKyAgICAweDVFNDcsIDB4MTI4MCwgMHg1RTQ5LCAweDQ0QjksIDB4NUU0QywgMHgwRTg4LCAweDVFNEUsIDB4MTI3QSwNCisgICAgMHg1RTU0LCAweDEyN0MsIDB4NUU1NSwgMHgwRTk5LCAweDVFNTYsIDB4NDRCQiwgMHg1RTU3LCAweDEyN0IsDQorICAgIDB4NUU1OCwgMHgzOEE3LCAweDVFNUIsIDB4NEI4RiwgMHg1RTVFLCAweDQxRDQsIDB4NUU1RiwgMHgxMjdELA0KKyAgICAweDVFNjEsIDB4MEQzQywgMHg1RTYyLCAweDEyN0UsIDB4NUU2MywgMHgwRTBFLCAweDVFNjQsIDB4MTI3RiwNCisgICAgMHg1RTY4LCAweDRCOTAsIDB4NUU2QSwgMHg0QjkxLCAweDVFNkIsIDB4MzhBOCwgMHg1RTZDLCAweDM4QTksDQorICAgIDB4NUU2RCwgMHg0NEJELCAweDVFNkUsIDB4NDRCRSwgMHg1RTcyLCAweDA1RUYsIDB4NUU3MywgMHgwRTBGLA0KKyAgICAweDVFNzQsIDB4MENFNSwgMHg1RTc1LCAweDEyODEsIDB4NUU3NiwgMHgxMjgyLCAweDVFNzcsIDB4NEI5MiwNCisgICAgMHg1RTc4LCAweDA3QkUsIDB4NUU3OSwgMHgwNUYwLCAweDVFN0EsIDB4MTI4MywgMHg1RTdCLCAweDA3NkMsDQorICAgIDB4NUU3QywgMHgwRjJFLCAweDVFN0QsIDB4MEYxMywgMHg1RTdFLCAweDA2MzIsIDB4NUU3RiwgMHgxMjg1LA0KKyAgICAweDVFODAsIDB4NEI5MywgMHg1RTgxLCAweDBCQkYsIDB4NUU4MywgMHgwN0JGLCAweDVFODQsIDB4MDk5OSwNCisgICAgMHg1RTg3LCAweDBENzMsIDB4NUU4QSwgMHgwOTlBLCAweDVFOEIsIDB4NEI5NCwgMHg1RThGLCAweDA5ODIsDQorICAgIDB4NUU5NSwgMHgwQzA4LCAweDVFOTYsIDB4MEU0OSwgMHg1RTk3LCAweDBDMzMsIDB4NUU5OSwgMHgzNkIwLA0KKyAgICAweDVFOUEsIDB4MDdDMCwgMHg1RTlDLCAweDBEQ0UsIDB4NUVBMCwgMHgxMjg2LCAweDVFQTUsIDB4NDRDMCwNCisgICAgMHg1RUE2LCAweDBDNTMsIDB4NUVBNywgMHgwODMyLCAweDVFQTgsIDB4MzhBQSwgMHg1RUFBLCAweDM4QUIsDQorICAgIDB4NUVBQiwgMHgwNzdGLCAweDVFQUMsIDB4NDRDMSwgMHg1RUFELCAweDBDMDksIDB4NUVCMywgMHg0Qjk1LA0KKyAgICAweDVFQjUsIDB4MDQ4NywgMHg1RUI2LCAweDA5NzgsIDB4NUVCNywgMHgwN0MxLCAweDVFQjgsIDB4MEYzMSwNCisgICAgMHg1RUI5LCAweDQ0QzIsIDB4NUVCRCwgMHg0Qjk2LCAweDVFQkUsIDB4MzhBQywgMHg1RUJGLCAweDM4QUQsDQorICAgIDB4NUVDMSwgMHgxMjg3LCAweDVFQzIsIDB4MTI4OCwgMHg1RUMzLCAweDBEMDcsIDB4NUVDNiwgMHg0NEMzLA0KKyAgICAweDVFQzgsIDB4MTI4OSwgMHg1RUM5LCAweDBGQkYsIDB4NUVDQSwgMHgwRkQzLCAweDVFQ0IsIDB4M0MxRSwNCisgICAgMHg1RUNGLCAweDEyOEIsIDB4NUVEMCwgMHgxMjhBLCAweDVFRDEsIDB4NEI5NywgMHg1RUQyLCAweDM4QUYsDQorICAgIDB4NUVEMywgMHgwNUE1LCAweDVFRDQsIDB4NEI5OCwgMHg1RUQ1LCAweDRCOTksIDB4NUVENiwgMHgxMjhDLA0KKyAgICAweDVFRDksIDB4NDRDNCwgMHg1RURBLCAweDEyOEYsIDB4NUVEQiwgMHgxMjkwLCAweDVFREQsIDB4MTI4RSwNCisgICAgMHg1RURGLCAweDBEQjIsIDB4NUVFMCwgMHgwOTlCLCAweDVFRTEsIDB4MTI5MiwgMHg1RUUyLCAweDEyOTEsDQorICAgIDB4NUVFMywgMHgxMjhELCAweDVFRTgsIDB4MTI5MywgMHg1RUU5LCAweDEyOTQsIDB4NUVFQywgMHgxMjk1LA0KKyAgICAweDVFRjAsIDB4MTI5OCwgMHg1RUYxLCAweDEyOTYsIDB4NUVGMywgMHgxMjk3LCAweDVFRjQsIDB4MTI5OSwNCisgICAgMHg1RUY2LCAweDA1MDYsIDB4NUVGNywgMHgwQzBBLCAweDVFRjgsIDB4MTI5QSwgMHg1RUY5LCAweDQxRDUsDQorICAgIDB4NUVGQSwgMHgwNzUwLCAweDVFRkIsIDB4MDU3NiwgMHg1RUZDLCAweDBDRUMsIDB4NUVGRCwgMHg0NEM2LA0KKyAgICAweDVFRkUsIDB4MTI5QiwgMHg1RUZGLCAweDBDRDMsIDB4NUYwMCwgMHg0MUQ2LCAweDVGMDEsIDB4MEUyQiwNCisgICAgMHg1RjAyLCAweDQxRDcsIDB4NUYwMywgMHgxMjlDLCAweDVGMDQsIDB4MEZENCwgMHg1RjA3LCAweDM4QjAsDQorICAgIDB4NUYwOCwgMHg0NEM3LCAweDVGMDksIDB4MTI5RCwgMHg1RjBBLCAweDBFMTAsIDB4NUYwQiwgMHgxMkEwLA0KKyAgICAweDVGMEMsIDB4MEZGQSwgMHg1RjBELCAweDEwMEEsIDB4NUYwRSwgMHgzOEIxLCAweDVGMEYsIDB4MDhEQywNCisgICAgMHg1RjEwLCAweDBDQ0QsIDB4NUYxMSwgMHgxMkExLCAweDVGMTMsIDB4MDY3NywgMHg1RjE0LCAweDBCQzAsDQorICAgIDB4NUYxNSwgMHgwNEJFLCAweDVGMTYsIDB4MTJBMiwgMHg1RjE3LCAweDBERjYsIDB4NUYxOCwgMHgwN0MyLA0KKyAgICAweDVGMUIsIDB4MEI4RSwgMHg1RjFDLCAweDM4QjIsIDB4NUYxRCwgMHgzOEIzLCAweDVGMUUsIDB4NDRDOSwNCisgICAgMHg1RjFGLCAweDBDMEIsIDB4NUYyMSwgMHgyMTAxLCAweDVGMjIsIDB4MzhCNCwgMHg1RjIzLCAweDQxRDgsDQorICAgIDB4NUYyNSwgMHgwRUZCLCAweDVGMjYsIDB4MDc2RCwgMHg1RjI3LCAweDA3ODAsIDB4NUYyOCwgMHgzOEI1LA0KKyAgICAweDVGMjksIDB4MTJBMywgMHg1RjJELCAweDEyQTQsIDB4NUYyRiwgMHgxMkFBLCAweDVGMzEsIDB4MDkxMSwNCisgICAgMHg1RjM0LCAweDIxMDIsIDB4NUYzNSwgMHgwQkMxLCAweDVGMzYsIDB4MzhCNiwgMHg1RjM3LCAweDA2QTcsDQorICAgIDB4NUYzOCwgMHgxMkE1LCAweDVGM0EsIDB4MzU5OCwgMHg1RjNCLCAweDM4QjcsIDB4NUYzQywgMHgwRDlELA0KKyAgICAweDVGM0QsIDB4NDFEOSwgMHg1RjNFLCAweDBCODQsIDB4NUY0MCwgMHgzOEI4LCAweDVGNDEsIDB4MTJBNiwNCisgICAgMHg1RjQ1LCAweDIwQjIsIDB4NUY0NywgMHg0NENBLCAweDVGNDgsIDB4MTJBNywgMHg1RjRBLCAweDA2QTgsDQorICAgIDB4NUY0QywgMHgxMkE4LCAweDVGNEQsIDB4NEI5QSwgMHg1RjRFLCAweDEyQTksIDB4NUY1MCwgMHgzOEI5LA0KKyAgICAweDVGNTEsIDB4MTJBQiwgMHg1RjUzLCAweDBDNzAsIDB4NUY1NCwgMHg0MURBLCAweDVGNTYsIDB4MTJBQywNCisgICAgMHg1RjU3LCAweDEyQUQsIDB4NUY1OCwgMHgzOEJBLCAweDVGNTksIDB4MTJBRSwgMHg1RjVDLCAweDEyOUYsDQorICAgIDB4NUY1RCwgMHgxMjlFLCAweDVGNjEsIDB4MTJBRiwgMHg1RjYyLCAweDA3MTcsIDB4NUY2MywgMHg0NENCLA0KKyAgICAweDVGNjQsIDB4MzhCQiwgMHg1RjY1LCAweDM2QUMsIDB4NUY2NiwgMHgwRDk5LCAweDVGNjcsIDB4MjEwMywNCisgICAgMHg1RjY5LCAweDA4M0MsIDB4NUY2QSwgMHgwREE5LCAweDVGNkIsIDB4MEJDMiwgMHg1RjZDLCAweDBEQkQsDQorICAgIDB4NUY2RCwgMHgxMkIwLCAweDVGNzAsIDB4MDk5QywgMHg1RjcxLCAweDA0RTgsIDB4NUY3MiwgMHg0NENDLA0KKyAgICAweDVGNzMsIDB4MTJCMSwgMHg1Rjc3LCAweDEyQjIsIDB4NUY3OSwgMHgwRUZFLCAweDVGN0MsIDB4MEQ3NCwNCisgICAgMHg1RjdELCAweDQxREIsIDB4NUY3RSwgMHg0NENELCAweDVGN0YsIDB4MTJCNSwgMHg1RjgwLCAweDA1MUYsDQorICAgIDB4NUY4MSwgMHgwQTUwLCAweDVGODIsIDB4MTJCNCwgMHg1RjgzLCAweDEyQjMsIDB4NUY4NCwgMHgwNzE4LA0KKyAgICAweDVGODUsIDB4MEIzNCwgMHg1Rjg3LCAweDEyQjksIDB4NUY4OCwgMHgxMkI3LCAweDVGODksIDB4MzhCQywNCisgICAgMHg1RjhBLCAweDEyQjYsIDB4NUY4QiwgMHgwRjZGLCAweDVGOEMsIDB4MDc5OSwgMHg1RjhGLCAweDQ0Q0UsDQorICAgIDB4NUY5MCwgMHgwOTgzLCAweDVGOTEsIDB4MTJCOCwgMHg1RjkyLCAweDBDNDYsIDB4NUY5MywgMHgwOTQ4LA0KKyAgICAweDVGOTcsIDB4MEM5OCwgMHg1Rjk4LCAweDEyQkMsIDB4NUY5OSwgMHgxMkJCLCAweDVGOUMsIDB4MzhCRCwNCisgICAgMHg1RjlFLCAweDEyQkEsIDB4NUZBMCwgMHgxMkJELCAweDVGQTEsIDB4MDc5QSwgMHg1RkEyLCAweDQ0Q0YsDQorICAgIDB4NUZBNCwgMHgzOEJGLCAweDVGQTcsIDB4MzhCRSwgMHg1RkE4LCAweDEyQkUsIDB4NUZBOSwgMHgwREVFLA0KKyAgICAweDVGQUEsIDB4MDk2NSwgMHg1RkFDLCAweDRCOUIsIDB4NUZBRCwgMHgxMkJGLCAweDVGQUUsIDB4MEQ4RCwNCisgICAgMHg1RkFGLCAweDM4QzAsIDB4NUZCMywgMHgwQzk5LCAweDVGQjQsIDB4MEJDMywgMHg1RkI1LCAweDM0MzgsDQorICAgIDB4NUZCNywgMHgyMTA0LCAweDVGQjgsIDB4MzhDMSwgMHg1RkI5LCAweDBDMkEsIDB4NUZCQywgMHgxMkMwLA0KKyAgICAweDVGQkQsIDB4MDY0NSwgMHg1RkMzLCAweDA5RkEsIDB4NUZDNCwgMHgzOEMyLCAweDVGQzUsIDB4MEQ5RSwNCisgICAgMHg1RkM3LCAweDQ0RDAsIDB4NUZDOSwgMHgzOEMzLCAweDVGQ0IsIDB4NDREMSwgMHg1RkNDLCAweDA2MzMsDQorICAgIDB4NUZDRCwgMHgwQ0RDLCAweDVGRDIsIDB4NDREMiwgMHg1RkQzLCAweDQ0RDMsIDB4NUZENCwgMHg0NEQ0LA0KKyAgICAweDVGRDYsIDB4MTJDMSwgMHg1RkQ3LCAweDA4QTQsIDB4NUZEOCwgMHgwRTY4LCAweDVGRDksIDB4MEU2OSwNCisgICAgMHg1RkRDLCAweDA1MjAsIDB4NUZERCwgMHgxMkM2LCAweDVGREUsIDB4MjEwNSwgMHg1RkUwLCAweDBCQTcsDQorICAgIDB4NUZFMSwgMHgzOEM0LCAweDVGRTIsIDB4NDRENSwgMHg1RkU0LCAweDEyQzMsIDB4NUZFOSwgMHgzOEM1LA0KKyAgICAweDVGRUEsIDB4NEI5QywgMHg1RkVCLCAweDA1NzcsIDB4NUZFRCwgMHgzOEM2LCAweDVGRUUsIDB4NDRENiwNCisgICAgMHg1RkVGLCAweDQ0RDcsIDB4NUZGMCwgMHgxMkY2LCAweDVGRjEsIDB4MTJDNSwgMHg1RkYzLCAweDQ0RDgsDQorICAgIDB4NUZGNSwgMHgwQ0U2LCAweDVGRjgsIDB4MTJDNCwgMHg1RkZCLCAweDEyQzIsIDB4NUZGQywgMHgzOEM3LA0KKyAgICAweDVGRkQsIDB4MDgwQywgMHg1RkZGLCAweDEyQzgsIDB4NjAwNywgMHg0QjlELCAweDYwMEQsIDB4NDFEQywNCisgICAgMHg2MDBFLCAweDEyQ0UsIDB4NjAwRiwgMHgxMkQ0LCAweDYwMTAsIDB4MTJDQywgMHg2MDEyLCAweDBDNTYsDQorICAgIDB4NjAxNCwgMHg0MURELCAweDYwMTUsIDB4MTJEMSwgMHg2MDE2LCAweDBEQ0YsIDB4NjAxNywgMHgzOEM4LA0KKyAgICAweDYwMTgsIDB4NDFERSwgMHg2MDE5LCAweDEyQ0IsIDB4NjAxQSwgMHgzOEM5LCAweDYwMUIsIDB4MTJEMCwNCisgICAgMHg2MDFDLCAweDBGQUYsIDB4NjAxRCwgMHgwOEE1LCAweDYwMjAsIDB4MEIzNSwgMHg2MDIxLCAweDEyQzksDQorICAgIDB4NjAyMiwgMHg0NERBLCAweDYwMjQsIDB4NDREQiwgMHg2MDI1LCAweDA2NzgsIDB4NjAyNiwgMHgxMkQzLA0KKyAgICAweDYwMjcsIDB4MEE1MSwgMHg2MDI4LCAweDA1MDcsIDB4NjAyOSwgMHgxMkNELCAweDYwMkEsIDB4MDU3OCwNCisgICAgMHg2MDJCLCAweDEyRDIsIDB4NjAyRiwgMHgwNkE5LCAweDYwMzEsIDB4MTJDRiwgMHg2MDMzLCAweDM4Q0EsDQorICAgIDB4NjAzNSwgMHg0MURGLCAweDYwM0EsIDB4MTJENSwgMHg2MDQxLCAweDEyRDcsIDB4NjA0MiwgMHgxMkUxLA0KKyAgICAweDYwNDMsIDB4MTJERiwgMHg2MDQ2LCAweDEyREMsIDB4NjA0NywgMHg0MUUwLCAweDYwNDksIDB4NEI5RSwNCisgICAgMHg2MDRBLCAweDEyREIsIDB4NjA0QiwgMHgwRkMwLCAweDYwNEMsIDB4NDRERCwgMHg2MDRELCAweDEyREQsDQorICAgIDB4NjA1MCwgMHgwNkFBLCAweDYwNTIsIDB4MDdDMywgMHg2MDU0LCAweDRCOUYsIDB4NjA1NSwgMHgwOTg0LA0KKyAgICAweDYwNTksIDB4MTJFNCwgMHg2MDVBLCAweDEyRDYsIDB4NjA1RCwgMHgyMTA2LCAweDYwNUYsIDB4MTJEQSwNCisgICAgMHg2MDYwLCAweDEyQ0EsIDB4NjA2MSwgMHgzOENCLCAweDYwNjIsIDB4MDU3QSwgMHg2MDYzLCAweDEyREUsDQorICAgIDB4NjA2NCwgMHgxMkUwLCAweDYwNjUsIDB4MEI4RiwgMHg2MDY3LCAweDRCQTAsIDB4NjA2OCwgMHgwODE4LA0KKyAgICAweDYwNjksIDB4MDUzOCwgMHg2MDZBLCAweDEyRDgsIDB4NjA2QiwgMHgxMkUzLCAweDYwNkMsIDB4MTJFMiwNCisgICAgMHg2MDZELCAweDA2QUIsIDB4NjA2RiwgMHgwQjA5LCAweDYwNzAsIDB4MDVDNCwgMHg2MDc1LCAweDA3MTksDQorICAgIDB4NjA3NywgMHgxMkQ5LCAweDYwN0YsIDB4MzhDQywgMHg2MDgxLCAweDEyRTUsIDB4NjA4MywgMHgxMkU4LA0KKyAgICAweDYwODQsIDB4MTJFQSwgMHg2MDg1LCAweDIxMDcsIDB4NjA4OSwgMHgwOEU5LCAweDYwOEEsIDB4MjEwOCwNCisgICAgMHg2MDhCLCAweDEyRjAsIDB4NjA4QywgMHgwQzBDLCAweDYwOEQsIDB4MTJFNiwgMHg2MDkyLCAweDEyRUUsDQorICAgIDB4NjA5NCwgMHgwNTc5LCAweDYwOTUsIDB4NDRERSwgMHg2MDk2LCAweDEyRUMsIDB4NjA5NywgMHgxMkVELA0KKyAgICAweDYwOUEsIDB4MTJFOSwgMHg2MDlCLCAweDEyRUIsIDB4NjA5RCwgMHg0MUUxLCAweDYwOUUsIDB4MzhDRCwNCisgICAgMHg2MDlGLCAweDA3OUIsIDB4NjBBMCwgMHgwRjE0LCAweDYwQTMsIDB4MDVGMSwgMHg2MEE0LCAweDM4Q0UsDQorICAgIDB4NjBBNiwgMHgwNEZCLCAweDYwQTcsIDB4MTJFRiwgMHg2MEE4LCAweDQ0REYsIDB4NjBBOSwgMHgwQ0YwLA0KKyAgICAweDYwQUEsIDB4MDQ3MSwgMHg2MEIwLCAweDM4Q0YsIDB4NjBCMSwgMHg0NEUxLCAweDYwQjIsIDB4MEQ3NSwNCisgICAgMHg2MEIzLCAweDEyQzcsIDB4NjBCNCwgMHgxMkY1LCAweDYwQjUsIDB4MTJGOSwgMHg2MEI2LCAweDBFRjEsDQorICAgIDB4NjBCOCwgMHgxMkYyLCAweDYwQkIsIDB4NEJBMSwgMHg2MEJDLCAweDBDNjMsIDB4NjBCRCwgMHgxMkY3LA0KKyAgICAweDYwQkUsIDB4NDRFMiwgMHg2MEM0LCAweDRCQTIsIDB4NjBDNSwgMHgwOUQ4LCAweDYwQzYsIDB4MTJGOCwNCisgICAgMHg2MEM3LCAweDBDQUYsIDB4NjBDOCwgMHg0NEUzLCAweDYwQ0IsIDB4MzhEMCwgMHg2MEQxLCAweDBGRUQsDQorICAgIDB4NjBEMywgMHgxMkY0LCAweDYwRDQsIDB4NDFFMiwgMHg2MEQ1LCAweDIxMEEsIDB4NjBEOCwgMHgxMkZBLA0KKyAgICAweDYwRDksIDB4NDRFNCwgMHg2MERBLCAweDA4MEQsIDB4NjBEQiwgMHgzOEQxLCAweDYwREMsIDB4MEE2RiwNCisgICAgMHg2MERELCAweDQxRTMsIDB4NjBERSwgMHgyMTA5LCAweDYwREYsIDB4MDQ5OCwgMHg2MEUwLCAweDEyRjMsDQorICAgIDB4NjBFMSwgMHgxMkYxLCAweDYwRTMsIDB4MEFEQywgMHg2MEU3LCAweDEyRTcsIDB4NjBFOCwgMHgwODgyLA0KKyAgICAweDYwRUUsIDB4NDRFNSwgMHg2MEYwLCAweDBCMjYsIDB4NjBGMSwgMHgxMzA2LCAweDYwRjIsIDB4MjEwQywNCisgICAgMHg2MEYzLCAweDBBREQsIDB4NjBGNCwgMHgxMzAxLCAweDYwRjUsIDB4NDRFNiwgMHg2MEY2LCAweDEyRkUsDQorICAgIDB4NjBGNywgMHgxMkZGLCAweDYwRjgsIDB4MzhEMiwgMHg2MEY5LCAweDA5MTIsIDB4NjBGQSwgMHgxMzAyLA0KKyAgICAweDYwRkIsIDB4MTMwNSwgMHg2MEZELCAweDRCQTMsIDB4NjEwMCwgMHgxMzAwLCAweDYxMDEsIDB4MDkyRiwNCisgICAgMHg2MTAzLCAweDEzMDMsIDB4NjEwNiwgMHgxMkZELCAweDYxMDgsIDB4MEYwOCwgMHg2MTA5LCAweDBGMDcsDQorICAgIDB4NjEwQSwgMHg0QkE0LCAweDYxMEQsIDB4MTMwNywgMHg2MTBFLCAweDEzMDgsIDB4NjEwRiwgMHgwNDk5LA0KKyAgICAweDYxMTAsIDB4NDRFNywgMHg2MTExLCAweDIxMEQsIDB4NjExMiwgMHgzOEQzLCAweDYxMTMsIDB4MzhENCwNCisgICAgMHg2MTE0LCAweDM4RDUsIDB4NjExNSwgMHgxMkZDLCAweDYxMTYsIDB4NEJBNSwgMHg2MTE5LCAweDQ0RTgsDQorICAgIDB4NjExQSwgMHgwNkVBLCAweDYxMUIsIDB4MDQ2QSwgMHg2MTFDLCAweDM4RDYsIDB4NjExRSwgMHg0NEU5LA0KKyAgICAweDYxMUYsIDB4MDVGMiwgMHg2MTIwLCAweDIxMEIsIDB4NjEyMSwgMHgxMzA0LCAweDYxMjcsIDB4MTMwQywNCisgICAgMHg2MTI4LCAweDEzMEIsIDB4NjEyQSwgMHg0QkE2LCAweDYxMkIsIDB4NDFFNCwgMHg2MTJDLCAweDEzMTAsDQorICAgIDB4NjEzMCwgMHgyMTBGLCAweDYxMzQsIDB4MTMxMSwgMHg2MTM2LCAweDRCQTcsIDB4NjEzNywgMHgyMTBFLA0KKyAgICAweDYxM0EsIDB4NDRFQSwgMHg2MTNDLCAweDEzMEYsIDB4NjEzRCwgMHgxMzEyLCAweDYxM0UsIDB4MTMwQSwNCisgICAgMHg2MTNGLCAweDEzMEUsIDB4NjE0MSwgMHg0NEVDLCAweDYxNDIsIDB4MTMxMywgMHg2MTQ0LCAweDEzMTQsDQorICAgIDB4NjE0NiwgMHg0NEVELCAweDYxNDcsIDB4MTMwOSwgMHg2MTQ4LCAweDA4Q0EsIDB4NjE0QSwgMHgxMzBELA0KKyAgICAweDYxNEIsIDB4MEIzNiwgMHg2MTRDLCAweDA3QzQsIDB4NjE0RCwgMHgxMkZCLCAweDYxNEUsIDB4MDlGQiwNCisgICAgMHg2MTUzLCAweDEzMjEsIDB4NjE1NSwgMHgwRTM5LCAweDYxNTgsIDB4MTMxNywgMHg2MTU5LCAweDEzMTgsDQorICAgIDB4NjE1QSwgMHgxMzE5LCAweDYxNUQsIDB4MTMyMCwgMHg2MTVFLCAweDRCQTgsIDB4NjE1RiwgMHgxMzFGLA0KKyAgICAweDYxNjAsIDB4NDRFRSwgMHg2MTYyLCAweDBFQUIsIDB4NjE2MywgMHgwNUYzLCAweDYxNjQsIDB4NEJBOSwNCisgICAgMHg2MTY1LCAweDEzMUQsIDB4NjE2NywgMHgwNzFCLCAweDYxNjgsIDB4MDU5MiwgMHg2MTZCLCAweDEzMUEsDQorICAgIDB4NjE2RSwgMHgwRjgwLCAweDYxNkYsIDB4MTMxQywgMHg2MTcwLCAweDA0OUEsIDB4NjE3MSwgMHgxMzFFLA0KKyAgICAweDYxNzMsIDB4MTMxNSwgMHg2MTc0LCAweDEzMUIsIDB4NjE3NSwgMHgxMzIyLCAweDYxNzYsIDB4MDcxQSwNCisgICAgMHg2MTc3LCAweDEzMTYsIDB4NjE3QiwgMHg0QkFBLCAweDYxN0MsIDB4MzhENywgMHg2MTdELCAweDRCQUIsDQorICAgIDB4NjE3RSwgMHgwRjQ3LCAweDYxN0YsIDB4NEJBQywgMHg2MTgyLCAweDBGMTUsIDB4NjE4NywgMHgxMzI1LA0KKyAgICAweDYxOEEsIDB4MTMyOSwgMHg2MThELCAweDM4RDgsIDB4NjE4RSwgMHgwQjAwLCAweDYxOTAsIDB4MEZDMSwNCisgICAgMHg2MTkxLCAweDEzMkEsIDB4NjE5MiwgMHg0NEYwLCAweDYxOTMsIDB4NDRGMSwgMHg2MTk0LCAweDEzMjcsDQorICAgIDB4NjE5NiwgMHgxMzI0LCAweDYxOTcsIDB4NDRGMiwgMHg2MTk4LCAweDIxMTAsIDB4NjE5OSwgMHgxMzIzLA0KKyAgICAweDYxOUEsIDB4MTMyOCwgMHg2MTlELCAweDRCQUQsIDB4NjE5RiwgMHgzOEQ5LCAweDYxQTQsIDB4MEUwMCwNCisgICAgMHg2MUE1LCAweDQ0RjMsIDB4NjFBNywgMHgwQzhDLCAweDYxQTgsIDB4MzhEQSwgMHg2MUE5LCAweDA3MUMsDQorICAgIDB4NjFBQiwgMHgxMzJCLCAweDYxQUMsIDB4MTMyNiwgMHg2MUFELCAweDQ0RjQsIDB4NjFBRSwgMHgxMzJDLA0KKyAgICAweDYxQjIsIDB4MDc1MSwgMHg2MUI2LCAweDA1MzEsIDB4NjFCOCwgMHg0QkFFLCAweDYxQjksIDB4NDFFNiwNCisgICAgMHg2MUJBLCAweDEzMzQsIDB4NjFCQywgMHg0MUU1LCAweDYxQkUsIDB4MDVGNCwgMHg2MUMyLCAweDM4REIsDQorICAgIDB4NjFDMywgMHgxMzMyLCAweDYxQzYsIDB4MTMzMywgMHg2MUM3LCAweDA4MTksIDB4NjFDOCwgMHgxMzMxLA0KKyAgICAweDYxQzksIDB4MTMyRiwgMHg2MUNBLCAweDEzMkUsIDB4NjFDQiwgMHgxMzM1LCAweDYxQ0MsIDB4MTMyRCwNCisgICAgMHg2MUNELCAweDEzMzcsIDB4NjFEMCwgMHgwNTdCLCAweDYxRDUsIDB4NDRGNiwgMHg2MURDLCAweDRCQUYsDQorICAgIDB4NjFERCwgMHg0NEY3LCAweDYxREYsIDB4MzhEQywgMHg2MUUyLCAweDRCQjAsIDB4NjFFMywgMHgxMzM5LA0KKyAgICAweDYxRTUsIDB4NEJCMSwgMHg2MUU2LCAweDEzMzgsIDB4NjFFOCwgMHg0QkIyLCAweDYxRjIsIDB4MEJDNCwNCisgICAgMHg2MUY0LCAweDEzM0MsIDB4NjFGNSwgMHg0NEY4LCAweDYxRjYsIDB4MTMzQSwgMHg2MUY3LCAweDEzMzAsDQorICAgIDB4NjFGOCwgMHgwNzUyLCAweDYxRkEsIDB4MTMzQiwgMHg2MUZDLCAweDEzM0YsIDB4NjFGRCwgMHgxMzNFLA0KKyAgICAweDYxRkUsIDB4MTM0MCwgMHg2MUZGLCAweDEzM0QsIDB4NjIwMCwgMHgxMzQxLCAweDYyMDQsIDB4NEJCMywNCisgICAgMHg2MjA3LCAweDRCQjQsIDB4NjIwOCwgMHgxMzQyLCAweDYyMDksIDB4MTM0MywgMHg2MjBBLCAweDBFM0EsDQorICAgIDB4NjIwQywgMHgxMzQ1LCAweDYyMEQsIDB4MTM0NCwgMHg2MjBFLCAweDA5NDksIDB4NjIxMCwgMHgwQTUyLA0KKyAgICAweDYyMTEsIDB4MDU2NiwgMHg2MjEyLCAweDA1N0MsIDB4NjIxMywgMHgyMTExLCAweDYyMTQsIDB4MTM0NiwNCisgICAgMHg2MjE1LCAweDM4REQsIDB4NjIxNiwgMHgwNDgzLCAweDYyMUEsIDB4MEE3MCwgMHg2MjFCLCAweDEzNDcsDQorICAgIDB4NjIxRCwgMHgxQTY0LCAweDYyMUUsIDB4MTM0OCwgMHg2MjFGLCAweDA3MzcsIDB4NjIyMSwgMHgxMzQ5LA0KKyAgICAweDYyMjIsIDB4NDFFNywgMHg2MjIzLCAweDQ0RkEsIDB4NjIyNiwgMHgwQTkzLCAweDYyMjksIDB4MzhERSwNCisgICAgMHg2MjJBLCAweDEzNEEsIDB4NjIyRSwgMHgxMzRCLCAweDYyMkYsIDB4MDY1NCwgMHg2MjMwLCAweDEzNEMsDQorICAgIDB4NjIzMSwgMHg0QkI1LCAweDYyMzIsIDB4MTM0RCwgMHg2MjMzLCAweDEzNEUsIDB4NjIzNCwgMHgwQjM3LA0KKyAgICAweDYyMzYsIDB4MzVCRCwgMHg2MjM4LCAweDA3ODEsIDB4NjIzOSwgMHg0QkI2LCAweDYyM0IsIDB4MEVFRCwNCisgICAgMHg2MjNELCAweDRCQjcsIDB4NjIzRSwgMHgzNDRFLCAweDYyM0YsIDB4MEU2QSwgMHg2MjQwLCAweDA5NzQsDQorICAgIDB4NjI0MSwgMHgxMzRGLCAweDYyNDMsIDB4MzhERiwgMHg2MjQ2LCAweDM4RTAsIDB4NjI0NywgMHgwQTk0LA0KKyAgICAweDYyNDgsIDB4MUIxQSwgMHg2MjQ5LCAweDBENzYsIDB4NjI0QiwgMHgwOTE2LCAweDYyNEMsIDB4MzhFMSwNCisgICAgMHg2MjRELCAweDA4M0QsIDB4NjI0RSwgMHgxMzUwLCAweDYyNTEsIDB4MzhFMiwgMHg2MjUyLCAweDQ0RkIsDQorICAgIDB4NjI1MywgMHgwQjI3LCAweDYyNTUsIDB4MERGNywgMHg2MjU2LCAweDM4RTMsIDB4NjI1OCwgMHgwQjUxLA0KKyAgICAweDYyNUEsIDB4NDFFOCwgMHg2MjVCLCAweDEzNTMsIDB4NjI1RSwgMHgxMzUxLCAweDYyNjAsIDB4MTM1NCwNCisgICAgMHg2MjYxLCAweDQ0RkMsIDB4NjI2MywgMHgxMzUyLCAweDYyNjQsIDB4NDRGRCwgMHg2MjY4LCAweDEzNTUsDQorICAgIDB4NjI2RCwgMHg0NEZGLCAweDYyNkUsIDB4MEUwMSwgMHg2MjZGLCAweDQxRTksIDB4NjI3MSwgMHgwNDdCLA0KKyAgICAweDYyNzMsIDB4NDUwMCwgMHg2Mjc2LCAweDBERDAsIDB4NjI3OSwgMHgwRDc3LCAweDYyN0EsIDB4NEJCOCwNCisgICAgMHg2MjdCLCAweDQ0RkUsIDB4NjI3QywgMHgxMzU2LCAweDYyN0UsIDB4MTM1OSwgMHg2MjdGLCAweDA5OUQsDQorICAgIDB4NjI4MCwgMHgwNjU1LCAweDYyODIsIDB4MTM1NywgMHg2MjgzLCAweDEzNUUsIDB4NjI4NCwgMHgwOTlFLA0KKyAgICAweDYyODUsIDB4MzVDNSwgMHg2Mjg5LCAweDEzNTgsIDB4NjI4QSwgMHgwQ0ZBLCAweDYyOTAsIDB4NEJCOSwNCisgICAgMHg2MjkxLCAweDBGNDgsIDB4NjI5MiwgMHgxMzVBLCAweDYyOTMsIDB4MTM1QiwgMHg2Mjk0LCAweDEzNUYsDQorICAgIDB4NjI5NSwgMHgwQzY0LCAweDYyOTYsIDB4MTM1QywgMHg2Mjk3LCAweDA3QzUsIDB4NjI5OCwgMHgwQTgyLA0KKyAgICAweDYyOTksIDB4NDUwMSwgMHg2MjlCLCAweDEzNkQsIDB4NjI5QywgMHgwRDQ4LCAweDYyOUUsIDB4MEI1MiwNCisgICAgMHg2MkE2LCAweDIxMTIsIDB4NjJBOCwgMHg0QkJBLCAweDYyQUIsIDB4MEQ3OCwgMHg2MkFDLCAweDEzQjIsDQorICAgIDB4NjJCMSwgMHgwRTRBLCAweDYyQjUsIDB4MEMwRCwgMHg2MkI5LCAweDBFQTMsIDB4NjJCQiwgMHgxMzYyLA0KKyAgICAweDYyQkMsIDB4MDUyMSwgMHg2MkJELCAweDBCQTgsIDB4NjJDMiwgMHgxMzZCLCAweDYyQzQsIDB4MzhFNCwNCisgICAgMHg2MkM1LCAweDBCNzIsIDB4NjJDNiwgMHgxMzY1LCAweDYyQzcsIDB4MTM2QywgMHg2MkM4LCAweDEzNjcsDQorICAgIDB4NjJDOSwgMHgxMzZFLCAweDYyQ0EsIDB4MTM2QSwgMHg2MkNDLCAweDEzNjksIDB4NjJDRCwgMHgwRDI1LA0KKyAgICAweDYyQ0YsIDB4MTM2MywgMHg2MkQwLCAweDA1N0QsIDB4NjJEMSwgMHgxMzYxLCAweDYyRDIsIDB4MDY4QiwNCisgICAgMHg2MkQzLCAweDBCNTMsIDB4NjJENCwgMHgxMzVELCAweDYyRDUsIDB4NDUwMiwgMHg2MkQ2LCAweDQxRUEsDQorICAgIDB4NjJENywgMHgxMzYwLCAweDYyRDgsIDB4MDdDNiwgMHg2MkQ5LCAweDBBN0YsIDB4NjJEQSwgMHg0QkJCLA0KKyAgICAweDYyREIsIDB4MDk5RiwgMHg2MkRDLCAweDEzNjgsIDB4NjJERCwgMHgwRDA4LCAweDYyRTAsIDB4MDY4QywNCisgICAgMHg2MkUxLCAweDA1QTYsIDB4NjJFQywgMHgwNUM1LCAweDYyRUQsIDB4MDlFNywgMHg2MkVFLCAweDEzNzAsDQorICAgIDB4NjJFRiwgMHgxMzc1LCAweDYyRjEsIDB4MTM3MSwgMHg2MkYzLCAweDA3NTMsIDB4NjJGNCwgMHg0QkJDLA0KKyAgICAweDYyRjUsIDB4MTM3NiwgMHg2MkY2LCAweDA4NzAsIDB4NjJGNywgMHgwN0ZCLCAweDYyRkMsIDB4MzhFNSwNCisgICAgMHg2MkZELCAweDQ1MDQsIDB4NjJGRSwgMHgwOTMwLCAweDYyRkYsIDB4MTM2NCwgMHg2MzAxLCAweDA4Q0IsDQorICAgIDB4NjMwMiwgMHgxMzczLCAweDYzMDMsIDB4NDUwNSwgMHg2MzA3LCAweDA4QTYsIDB4NjMwOCwgMHgxMzc0LA0KKyAgICAweDYzMDksIDB4MDQ4OCwgMHg2MzBBLCAweDM4RTYsIDB4NjMwQywgMHgxMzZGLCAweDYzMEQsIDB4MzhFNywNCisgICAgMHg2MzEwLCAweDQ1MDYsIDB4NjMxMSwgMHgwQkM1LCAweDYzMTYsIDB4NEJCRCwgMHg2MzE4LCAweDM4RTgsDQorICAgIDB4NjMxOSwgMHgwNjhELCAweDYzMUIsIDB4MzczNywgMHg2MzFGLCAweDA2QUMsIDB4NjMyNywgMHgxMzcyLA0KKyAgICAweDYzMjgsIDB4MDQ2QiwgMHg2MzJBLCAweDRCQkUsIDB4NjMyQiwgMHgwODMzLCAweDYzMkYsIDB4MDlGQywNCisgICAgMHg2MzMyLCAweDQ1MDksIDB4NjMzNSwgMHg0NTBBLCAweDYzMzYsIDB4NEJCRiwgMHg2MzM5LCAweDM4RTksDQorICAgIDB4NjMzQSwgMHgwQzBFLCAweDYzM0IsIDB4NDUwQiwgMHg2MzNDLCAweDQ1MEMsIDB4NjMzRCwgMHgwRDY4LA0KKyAgICAweDYzM0UsIDB4MTM3OCwgMHg2MzNGLCAweDBBRTAsIDB4NjM0MSwgMHg0NTBELCAweDYzNDIsIDB4MzhFQSwNCisgICAgMHg2MzQzLCAweDM4RUIsIDB4NjM0NCwgMHg0NTBFLCAweDYzNDYsIDB4NEJDMCwgMHg2MzQ5LCAweDBCMEEsDQorICAgIDB4NjM0QiwgMHg0QkMxLCAweDYzNEMsIDB4MDg3OSwgMHg2MzRELCAweDEzNzksIDB4NjM0RSwgMHg0NTBGLA0KKyAgICAweDYzNEYsIDB4MTM3QiwgMHg2MzUwLCAweDEzNzcsIDB4NjM1MywgMHg0QkMyLCAweDYzNTUsIDB4MEUzMSwNCisgICAgMHg2MzU3LCAweDBCRDksIDB4NjM1OSwgMHg0NTExLCAweDYzNUMsIDB4MEFERSwgMHg2MzY1LCAweDM4RUMsDQorICAgIDB4NjM2NywgMHgwRTRCLCAweDYzNjgsIDB4MDhGQSwgMHg2MzY5LCAweDEzODcsIDB4NjM2QiwgMHgxMzg2LA0KKyAgICAweDYzNkMsIDB4NDUxNCwgMHg2MzZFLCAweDBBM0UsIDB4NjM3MSwgMHg0QkMzLCAweDYzNzIsIDB4MDc1NCwNCisgICAgMHg2Mzc0LCAweDM4RUQsIDB4NjM3NSwgMHg0QkM0LCAweDYzNzYsIDB4MTM4MCwgMHg2Mzc3LCAweDA5QTEsDQorICAgIDB4NjM3QSwgMHgwQ0MwLCAweDYzN0IsIDB4MENFNywgMHg2MzdDLCAweDQxRUIsIDB4NjM3RCwgMHgzOEVFLA0KKyAgICAweDYzN0YsIDB4NEJDNSwgMHg2MzgwLCAweDEzN0UsIDB4NjM4MiwgMHg0QkM2LCAweDYzODMsIDB4MEFERiwNCisgICAgMHg2Mzg0LCAweDM4RUYsIDB4NjM4NywgMHgzOEYwLCAweDYzODgsIDB4MDkyNCwgMHg2Mzg5LCAweDEzODMsDQorICAgIDB4NjM4QSwgMHg0QkM3LCAweDYzOEMsIDB4MDlBMCwgMHg2MzhFLCAweDEzN0QsIDB4NjM4RiwgMHgxMzgyLA0KKyAgICAweDYzOTAsIDB4MzhGMSwgMHg2MzkyLCAweDBEMDksIDB4NjM5NCwgMHg0NTE3LCAweDYzOTYsIDB4MTM3QywNCisgICAgMHg2Mzk4LCAweDA2RjcsIDB4NjM5OSwgMHg0NTE1LCAweDYzOUIsIDB4MDVCQiwgMHg2MzlFLCAweDM4RjIsDQorICAgIDB4NjM5RiwgMHgxMzg0LCAweDYzQTAsIDB4MEY3MywgMHg2M0ExLCAweDA4M0UsIDB4NjNBMiwgMHgwQjczLA0KKyAgICAweDYzQTMsIDB4MTM4MSwgMHg2M0E1LCAweDBBODAsIDB4NjNBNywgMHgwN0M3LCAweDYzQTgsIDB4MEEyQSwNCisgICAgMHg2M0E5LCAweDA1MDgsIDB4NjNBQSwgMHgwQUJFLCAweDYzQUIsIDB4MTM3RiwgMHg2M0FDLCAweDA2NUYsDQorICAgIDB4NjNBRSwgMHg0QkM4LCAweDYzQUYsIDB4NEJDOSwgMHg2M0IyLCAweDA3MUQsIDB4NjNCNCwgMHgwQkVCLA0KKyAgICAweDYzQjUsIDB4MTM4NSwgMHg2M0JCLCAweDBBRTEsIDB4NjNCRCwgMHg0NTE4LCAweDYzQkUsIDB4MTM4OCwNCisgICAgMHg2M0MwLCAweDEzOEEsIDB4NjNDMywgMHgwQjE3LCAweDYzQzQsIDB4MTM5MCwgMHg2M0M2LCAweDEzOEIsDQorICAgIDB4NjNDOSwgMHgxMzhELCAweDYzQ0YsIDB4MERCMywgMHg2M0QwLCAweDBDMEYsIDB4NjNEMSwgMHgzOEYzLA0KKyAgICAweDYzRDIsIDB4MTM4RSwgMHg2M0Q0LCAweDQ1MTksIDB4NjNENSwgMHg0NTFBLCAweDYzRDYsIDB4MEYxNiwNCisgICAgMHg2M0RBLCAweDBGMzIsIDB4NjNEQiwgMHgwNUY1LCAweDYzREMsIDB4MzhGNCwgMHg2M0UwLCAweDQ1MUIsDQorICAgIDB4NjNFMSwgMHgwNDcyLCAweDYzRTMsIDB4MTM4QywgMHg2M0U1LCAweDQxRUMsIDB4NjNFOSwgMHgxMzg5LA0KKyAgICAweDYzRUEsIDB4NEJDQSwgMHg2M0VCLCAweDQ1MUMsIDB4NjNFQywgMHg0NTFELCAweDYzRUQsIDB4MzQxQywNCisgICAgMHg2M0VFLCAweDA2MzQsIDB4NjNGMiwgMHg0NTFFLCAweDYzRjQsIDB4MDUwOSwgMHg2M0Y1LCAweDIxMTMsDQorICAgIDB4NjNGNiwgMHgxMzhGLCAweDYzRjcsIDB4MzY0NCwgMHg2M0Y4LCAweDRCQ0IsIDB4NjNGOSwgMHg0QkNDLA0KKyAgICAweDYzRkEsIDB4MEYzMywgMHg2NDA2LCAweDEzOTMsIDB4NjQwOSwgMHgzOEY1LCAweDY0MEQsIDB4MEIxQiwNCisgICAgMHg2NDBGLCAweDEzOUEsIDB4NjQxMCwgMHgzOEY2LCAweDY0MTIsIDB4NEJDRCwgMHg2NDEzLCAweDEzOTQsDQorICAgIDB4NjQxNCwgMHgxRTJDLCAweDY0MTYsIDB4MTM5MSwgMHg2NDE3LCAweDEzOTgsIDB4NjQxOCwgMHg0QkNFLA0KKyAgICAweDY0MUMsIDB4MTM3QSwgMHg2NDFFLCAweDQ1MUYsIDB4NjQyMCwgMHg0QkNGLCAweDY0MjIsIDB4MzhGNywNCisgICAgMHg2NDI0LCAweDRCRDAsIDB4NjQyNSwgMHg0NTIwLCAweDY0MjYsIDB4MTM5NSwgMHg2NDI4LCAweDEzOTksDQorICAgIDB4NjQyOSwgMHg0NTIxLCAweDY0MkEsIDB4NEJEMSwgMHg2NDJDLCAweDBENTYsIDB4NjQyRCwgMHgwQzY1LA0KKyAgICAweDY0MkYsIDB4NDUyMiwgMHg2NDM0LCAweDEzOTIsIDB4NjQzNSwgMHg0QkQyLCAweDY0MzYsIDB4MTM5NiwNCisgICAgMHg2NDNBLCAweDA3MUUsIDB4NjQzRCwgMHg0QkQzLCAweDY0M0UsIDB4MDg2MSwgMHg2NDNGLCAweDRCRDQsDQorICAgIDB4NjQ0MiwgMHgwQTgxLCAweDY0NEUsIDB4MTM5RSwgMHg2NDUxLCAweDFFNDMsIDB4NjQ1MiwgMHg0QkQ1LA0KKyAgICAweDY0NTQsIDB4MzhGOCwgMHg2NDU4LCAweDBDMjAsIDB4NjQ1QSwgMHg0NTIzLCAweDY0NUIsIDB4MzhGOSwNCisgICAgMHg2NDVELCAweDQ1MjQsIDB4NjQ1RiwgMHg0QkQ2LCAweDY0NjAsIDB4MjExNCwgMHg2NDY3LCAweDEzOUIsDQorICAgIDB4NjQ2OSwgMHgwRThFLCAweDY0NkQsIDB4MzhGQSwgMHg2NDZGLCAweDEzOUMsIDB4NjQ3MywgMHg0NTI1LA0KKyAgICAweDY0NzQsIDB4NEJENywgMHg2NDc2LCAweDEzOUQsIDB4NjQ3OCwgMHgwRURBLCAweDY0NzksIDB4NDFFRCwNCisgICAgMHg2NDdBLCAweDBBNDYsIDB4NjQ3QiwgMHgzOEZCLCAweDY0N0QsIDB4NDUyNiwgMHg2NDgzLCAweDA3MzgsDQorICAgIDB4NjQ4NywgMHg0NTI3LCAweDY0ODgsIDB4MTNBNCwgMHg2NDkwLCAweDRCRDgsIDB4NjQ5MSwgMHg0NTI4LA0KKyAgICAweDY0OTIsIDB4MDg4MywgMHg2NDkzLCAweDEzQTEsIDB4NjQ5NSwgMHgxM0EwLCAweDY0OTgsIDB4NEJEOSwNCisgICAgMHg2NDk5LCAweDRCREEsIDB4NjQ5QSwgMHgwQ0U4LCAweDY0OUQsIDB4MjExNSwgMHg2NDlFLCAweDBDOEQsDQorICAgIDB4NjQ5RiwgMHg0NTI5LCAweDY0QTQsIDB4MEMyQiwgMHg2NEE1LCAweDEzQTIsIDB4NjRBOSwgMHgxM0EzLA0KKyAgICAweDY0QUIsIDB4MERFMSwgMHg2NEFDLCAweDRCREIsIDB4NjRBRCwgMHgwQ0ZCLCAweDY0QUUsIDB4MDg3MSwNCisgICAgMHg2NEIwLCAweDBBOTUsIDB4NjRCMiwgMHgwRTdFLCAweDY0QjMsIDB4NEJEQywgMHg2NEI5LCAweDA1QTcsDQorICAgIDB4NjRCQiwgMHgxM0FBLCAweDY0QkMsIDB4MTNBNSwgMHg2NEJFLCAweDM4RkMsIDB4NjRCRiwgMHgzOEZELA0KKyAgICAweDY0QzEsIDB4MEYzNCwgMHg2NEMyLCAweDEzQUMsIDB4NjRDNCwgMHg0MUVFLCAweDY0QzUsIDB4MTNBOCwNCisgICAgMHg2NEM3LCAweDEzQTksIDB4NjRDQSwgMHgzNDFELCAweDY0Q0IsIDB4NDUyQSwgMHg2NENDLCAweDQ1MkIsDQorICAgIDB4NjRDRCwgMHgwQUUyLCAweDY0Q0UsIDB4MjExNiwgMHg2NEQwLCAweDQxRUYsIDB4NjREMiwgMHgxM0E3LA0KKyAgICAweDY0RDQsIDB4MTM2NiwgMHg2NEQ1LCAweDQ1MkMsIDB4NjRENywgMHg0NTJELCAweDY0RDgsIDB4MTNBQiwNCisgICAgMHg2NERBLCAweDEzQTYsIDB4NjRFMCwgMHgxM0IwLCAweDY0RTEsIDB4MTNCMSwgMHg2NEUyLCAweDBDMjEsDQorICAgIDB4NjRFMywgMHgxM0IzLCAweDY0RTQsIDB4NDUyRiwgMHg2NEU1LCAweDM4RkUsIDB4NjRFNiwgMHgwODcyLA0KKyAgICAweDY0RTcsIDB4MTNBRSwgMHg2NEVDLCAweDA2NTYsIDB4NjRFRCwgMHg0QkRELCAweDY0RUYsIDB4MTNCNCwNCisgICAgMHg2NEYwLCAweDRCREUsIDB4NjRGMSwgMHgxM0FELCAweDY0RjIsIDB4MTNCOCwgMHg2NEY0LCAweDEzQjcsDQorICAgIDB4NjRGNiwgMHgxM0I2LCAweDY0RjcsIDB4MzhGRiwgMHg2NEZBLCAweDEzQjksIDB4NjRGQiwgMHgzOTAwLA0KKyAgICAweDY0RkQsIDB4MTNCQiwgMHg2NEZFLCAweDA5RDksIDB4NjRGRiwgMHg0NTMwLCAweDY1MDAsIDB4MTNCQSwNCisgICAgMHg2NTA0LCAweDM5MDEsIDB4NjUwNSwgMHgxM0JFLCAweDY1MEYsIDB4NDUzMiwgMHg2NTE0LCAweDQ1MzMsDQorICAgIDB4NjUxNiwgMHgzOTAyLCAweDY1MTgsIDB4MTNCQywgMHg2NTE5LCAweDM5MDMsIDB4NjUxQiwgMHg0QkRGLA0KKyAgICAweDY1MUMsIDB4MTNCRCwgMHg2NTFELCAweDEzOTcsIDB4NjUxRSwgMHg0NTM1LCAweDY1MUYsIDB4NEJFMCwNCisgICAgMHg2NTIyLCAweDFFOTcsIDB4NjUyMywgMHgxM0MwLCAweDY1MjQsIDB4MTNCRiwgMHg2NTI5LCAweDQxRjAsDQorICAgIDB4NjUyQSwgMHgxMzlGLCAweDY1MkIsIDB4MTNDMSwgMHg2NTJDLCAweDEzQjUsIDB4NjUyRSwgMHg0QkUxLA0KKyAgICAweDY1MkYsIDB4MDhBNywgMHg2NTMyLCAweDQ1MzYsIDB4NjUzNCwgMHgxM0MyLCAweDY1MzUsIDB4MTNDMywNCisgICAgMHg2NTM2LCAweDEzQzUsIDB4NjUzNywgMHgxM0M0LCAweDY1MzgsIDB4MTNDNiwgMHg2NTM5LCAweDA1N0UsDQorICAgIDB4NjUzQiwgMHgwN0M4LCAweDY1M0UsIDB4MEU0QywgMHg2NTNGLCAweDBBNTMsIDB4NjU0NCwgMHg0NTM3LA0KKyAgICAweDY1NDUsIDB4MDc4MiwgMHg2NTQ3LCAweDM5MDQsIDB4NjU0OCwgMHgxM0M4LCAweDY1NDksIDB4NEJFMiwNCisgICAgMHg2NTRELCAweDEzQ0IsIDB4NjU0RSwgMHgyMTE3LCAweDY1NEYsIDB4MERDNCwgMHg2NTUxLCAweDA2NzksDQorICAgIDB4NjU1NCwgMHg0NTM4LCAweDY1NTUsIDB4MTNDQSwgMHg2NTU2LCAweDEzQzksIDB4NjU1NywgMHgwRDBBLA0KKyAgICAweDY1NTgsIDB4MTNDQywgMHg2NTU5LCAweDA2QUQsIDB4NjU1RCwgMHgxM0NFLCAweDY1NUUsIDB4MTNDRCwNCisgICAgMHg2NTYwLCAweDRCRTMsIDB4NjU2MiwgMHgwNUY2LCAweDY1NjMsIDB4MDg4NCwgMHg2NTY2LCAweDBDQjAsDQorICAgIDB4NjU2NywgMHgzOTA1LCAweDY1NkIsIDB4NDUzOSwgMHg2NTZDLCAweDA3MUYsIDB4NjU3MCwgMHgwQTNBLA0KKyAgICAweDY1NzIsIDB4MTNDRiwgMHg2NTc0LCAweDBBNTQsIDB4NjU3NSwgMHgwQzIyLCAweDY1NzcsIDB4MEREMSwNCisgICAgMHg2NTc4LCAweDEzRDAsIDB4NjU3QSwgMHg0NTNBLCAweDY1ODEsIDB4MzkwNiwgMHg2NTgyLCAweDEzRDEsDQorICAgIDB4NjU4MywgMHgxM0QyLCAweDY1ODQsIDB4NDUzQiwgMHg2NTg1LCAweDM5MDcsIDB4NjU4NywgMHgwRTA4LA0KKyAgICAweDY1ODgsIDB4MTIwQywgMHg2NTg5LCAweDBBNkEsIDB4NjU4QSwgMHg0NTNDLCAweDY1OEMsIDB4MERCRSwNCisgICAgMHg2NThFLCAweDA4NDgsIDB4NjU5MCwgMHgwRDc5LCAweDY1OTEsIDB4MEQ1NywgMHg2NTkyLCAweDRCRTQsDQorICAgIDB4NjU5NSwgMHg0QkU1LCAweDY1OTcsIDB4MEM0NywgMHg2NTk5LCAweDBGODksIDB4NjU5QiwgMHgxM0Q0LA0KKyAgICAweDY1OUMsIDB4MDhGQywgMHg2NTlELCAweDQxRjEsIDB4NjU5RiwgMHgxM0Q1LCAweDY1QTEsIDB4MDQ3QSwNCisgICAgMHg2NUE0LCAweDA2Q0MsIDB4NjVBNSwgMHgwQTcxLCAweDY1QTcsIDB4MEREMiwgMHg2NUFCLCAweDEzRDYsDQorICAgIDB4NjVBQywgMHgwODkwLCAweDY1QUQsIDB4MEI4NSwgMHg2NUFGLCAweDA4QTksIDB4NjVCMCwgMHgwOUZELA0KKyAgICAweDY1QjIsIDB4NDUzRCwgMHg2NUI0LCAweDRCRTYsIDB4NjVCNSwgMHg0NTNFLCAweDY1QjcsIDB4MTNENywNCisgICAgMHg2NUI4LCAweDQ1M0YsIDB4NjVCOSwgMHgwRTRELCAweDY1QkMsIDB4MDUxOSwgMHg2NUJELCAweDA4QUEsDQorICAgIDB4NjVCRSwgMHg0QkU3LCAweDY1QkYsIDB4NDU0MCwgMHg2NUMxLCAweDEzREEsIDB4NjVDMiwgMHgzOTA4LA0KKyAgICAweDY1QzMsIDB4MTNEOCwgMHg2NUM0LCAweDEzREIsIDB4NjVDNSwgMHgwRjgxLCAweDY1QzYsIDB4MTNEOSwNCisgICAgMHg2NUM4LCAweDRCRTgsIDB4NjVDOSwgMHg0NTQxLCAweDY1Q0IsIDB4MEE5RiwgMHg2NUNDLCAweDEzREMsDQorICAgIDB4NjVDRSwgMHg0QkU5LCAweDY1Q0YsIDB4MEIxMiwgMHg2NUQwLCAweDRCRUEsIDB4NjVEMiwgMHgxM0RELA0KKyAgICAweDY1RDQsIDB4NDU0MiwgMHg2NUQ3LCAweDA2MzYsIDB4NjVEOSwgMHgxM0RGLCAweDY1REIsIDB4MTNERSwNCisgICAgMHg2NURGLCAweDRCRUIsIDB4NjVFMCwgMHgxM0UwLCAweDY1RTEsIDB4MTNFMSwgMHg2NUUyLCAweDA2MzcsDQorICAgIDB4NjVFMywgMHgzNTg1LCAweDY1RTUsIDB4MENENCwgMHg2NUU2LCAweDBCNzQsIDB4NjVFNywgMHgwNjg2LA0KKyAgICAweDY1RTgsIDB4MDhBQiwgMHg2NUU5LCAweDBBRTMsIDB4NjVFQywgMHgwOTY2LCAweDY1RUQsIDB4MDQ3NCwNCisgICAgMHg2NUYwLCAweDM5MDksIDB4NjVGMSwgMHgxM0UyLCAweDY1RjIsIDB4MzkwQSwgMHg2NUY5LCAweDQ1NDQsDQorICAgIDB4NjVGQSwgMHgwNTIyLCAweDY1RkIsIDB4MTNFNiwgMHg2NUZDLCAweDQ1NDUsIDB4NjYwMCwgMHgyMTE4LA0KKyAgICAweDY2MDIsIDB4MDdDOSwgMHg2NjAzLCAweDEzRTUsIDB4NjYwNCwgMHg0NTQ2LCAweDY2MDYsIDB4MDgxQiwNCisgICAgMHg2NjA3LCAweDA5QTIsIDB4NjYwOCwgMHg0NTQ3LCAweDY2MDksIDB4MjExQSwgMHg2NjBBLCAweDEzRTQsDQorICAgIDB4NjYwQywgMHgwOUEzLCAweDY2MEUsIDB4MEVDQywgMHg2NjBGLCAweDA4MUEsIDB4NjYxMywgMHgwNDlCLA0KKyAgICAweDY2MTQsIDB4MEE3MiwgMHg2NjE1LCAweDIxMTksIDB4NjYxQywgMHgxM0VCLCAweDY2MUUsIDB4NEY1MCwNCisgICAgMHg2NjFGLCAweDBBNTUsIDB4NjYyMCwgMHgwNEU5LCAweDY2MjEsIDB4NDU0OCwgMHg2NjIyLCAweDQxRjMsDQorICAgIDB4NjYyNCwgMHgyMTFELCAweDY2MjUsIDB4MDk1RiwgMHg2NjI3LCAweDBFOTQsIDB4NjYyOCwgMHgwODYyLA0KKyAgICAweDY2MkEsIDB4NDU0OSwgMHg2NjJCLCAweDQxRjQsIDB4NjYyQywgMHgzOTBCLCAweDY2MkQsIDB4MDlBNCwNCisgICAgMHg2NjJFLCAweDIxMUIsIDB4NjYyRiwgMHgwQTRCLCAweDY2MzAsIDB4NDFGNSwgMHg2NjMxLCAweDIwQUUsDQorICAgIDB4NjYzMywgMHg0MUY2LCAweDY2MzQsIDB4MTNFQSwgMHg2NjM1LCAweDEzRTgsIDB4NjYzNiwgMHgxM0U5LA0KKyAgICAweDY2M0EsIDB4NDFGMiwgMHg2NjNCLCAweDFFMDAsIDB4NjYzQywgMHgwQkE5LCAweDY2M0YsIDB4MTQwOSwNCisgICAgMHg2NjQxLCAweDEzRUYsIDB4NjY0MiwgMHgwOENDLCAweDY2NDMsIDB4MDdDQSwgMHg2NjQ0LCAweDEzRUQsDQorICAgIDB4NjY0NSwgMHg0NTRBLCAweDY2NDgsIDB4NDFGNywgMHg2NjQ5LCAweDEzRUUsIDB4NjY0QiwgMHgwOUZFLA0KKyAgICAweDY2NEMsIDB4MzkwQywgMHg2NjRFLCAweDQ1NEMsIDB4NjY0RiwgMHgxM0VDLCAweDY2NTEsIDB4NDU0QiwNCisgICAgMHg2NjUyLCAweDA4N0QsIDB4NjY1NywgMHgyMTFGLCAweDY2NTksIDB4MjEyMCwgMHg2NjVBLCAweDM0NDEsDQorICAgIDB4NjY1QiwgMHgzOTBELCAweDY2NUMsIDB4MzkwRSwgMHg2NjVELCAweDEzRjEsIDB4NjY1RSwgMHgxM0YwLA0KKyAgICAweDY2NUYsIDB4MTNGNSwgMHg2NjYxLCAweDM5MEYsIDB4NjY2MiwgMHgxM0Y2LCAweDY2NjMsIDB4MzczQSwNCisgICAgMHg2NjY0LCAweDEzRjIsIDB4NjY2NSwgMHgyMTFFLCAweDY2NjYsIDB4MDU4MCwgMHg2NjY3LCAweDEzRjMsDQorICAgIDB4NjY2OCwgMHgxM0Y0LCAweDY2NjksIDB4MEQ2OSwgMHg2NjZBLCAweDQ1NTEsIDB4NjY2QiwgMHgzOTEwLA0KKyAgICAweDY2NkMsIDB4NDU1MiwgMHg2NjZELCAweDQ1NTMsIDB4NjY2RSwgMHgwREQzLCAweDY2NkYsIDB4MDcyMCwNCisgICAgMHg2NjcwLCAweDEzRjcsIDB4NjY3MywgMHgyMTIyLCAweDY2NzQsIDB4MEE1NiwgMHg2Njc2LCAweDA5QTUsDQorICAgIDB4NjY3NywgMHg0MUY5LCAweDY2NzgsIDB4NDFGQSwgMHg2NjdBLCAweDBCOTAsIDB4NjY3QiwgMHg0NTU0LA0KKyAgICAweDY2N0UsIDB4NEJFQywgMHg2NjgwLCAweDQ1NTUsIDB4NjY4MSwgMHgwNkJGLCAweDY2ODMsIDB4MTNGOCwNCisgICAgMHg2Njg0LCAweDEzRkMsIDB4NjY4NywgMHgwNTRCLCAweDY2ODgsIDB4MTNGOSwgMHg2Njg5LCAweDEzRkIsDQorICAgIDB4NjY4QiwgMHg0QkVELCAweDY2OEMsIDB4NEJFRSwgMHg2NjhELCAweDQxRkIsIDB4NjY4RSwgMHgxM0ZBLA0KKyAgICAweDY2OTAsIDB4NDU1NiwgMHg2NjkxLCAweDA5NzUsIDB4NjY5MiwgMHg0NTU3LCAweDY2OTYsIDB4MEI4NiwNCisgICAgMHg2Njk3LCAweDA0ODksIDB4NjY5OCwgMHgxM0ZELCAweDY2OTksIDB4MjEyMywgMHg2NjlELCAweDEzRkUsDQorICAgIDB4NjZBMCwgMHgyMTI0LCAweDY2QTIsIDB4MEJDNiwgMHg2NkE0LCAweDM5MTIsIDB4NjZBNiwgMHgwRkI5LA0KKyAgICAweDY2QUIsIDB4MDg5MSwgMHg2NkFELCAweDQ1NTksIDB4NjZBRSwgMHgwRTNCLCAweDY2QjEsIDB4NDU1QSwNCisgICAgMHg2NkIyLCAweDIxMjUsIDB4NjZCMywgMHg0QkVGLCAweDY2QjQsIDB4MEU2QiwgMHg2NkI1LCAweDQ1NUIsDQorICAgIDB4NjZCOCwgMHgxNDA1LCAweDY2QjksIDB4MTQwMCwgMHg2NkJCLCAweDQxRkMsIDB4NjZCQywgMHgxNDAzLA0KKyAgICAweDY2QkUsIDB4MTQwMiwgMHg2NkJGLCAweDIxMjYsIDB4NjZDMCwgMHg0QkYwLCAweDY2QzEsIDB4MTNGRiwNCisgICAgMHg2NkM0LCAweDE0MDQsIDB4NjZDNiwgMHgzNDU1LCAweDY2QzcsIDB4MENCNiwgMHg2NkM4LCAweDM5MTMsDQorICAgIDB4NjZDOSwgMHgxNDAxLCAweDY2Q0YsIDB4NEJGMSwgMHg2NkQ2LCAweDE0MDYsIDB4NjZEOSwgMHgwOTc2LA0KKyAgICAweDY2REEsIDB4MTQwNywgMHg2NkRCLCAweDQxRkQsIDB4NjZEQywgMHgwRjM1LCAweDY2REQsIDB4MEQyRSwNCisgICAgMHg2NkUwLCAweDE0MDgsIDB4NjZFNiwgMHgxNDBBLCAweDY2RTgsIDB4NDFGRSwgMHg2NkU5LCAweDE0MEIsDQorICAgIDB4NjZFQywgMHgzOTE0LCAweDY2RjAsIDB4MTQwQywgMHg2NkYyLCAweDA2QzIsIDB4NjZGMywgMHgwNEVBLA0KKyAgICAweDY2RjQsIDB4MDdDQiwgMHg2NkY1LCAweDE0MEQsIDB4NjZGNywgMHgxNDBFLCAweDY2RjgsIDB4MDk3QiwNCisgICAgMHg2NkY5LCAweDBBRTQsIDB4NjZGQSwgMHgyMTI3LCAweDY2RkIsIDB4MjBCMSwgMHg2NkZDLCAweDEwRUQsDQorICAgIDB4NjZGRCwgMHgwQUMwLCAweDY2RkUsIDB4MEFCRiwgMHg2NkZGLCAweDBCMzgsIDB4NjcwMCwgMHgwODM3LA0KKyAgICAweDY3MDEsIDB4NDU1RiwgMHg2NzAzLCAweDEwNEIsIDB4NjcwNSwgMHgzOTE1LCAweDY3MDgsIDB4MDc0NCwNCisgICAgMHg2NzA5LCAweDBGMTcsIDB4NjcwQiwgMHgwRTRFLCAweDY3MEQsIDB4MERGMCwgMHg2NzBFLCAweDIxMjgsDQorICAgIDB4NjcwRiwgMHgxNDBGLCAweDY3MTIsIDB4NDU2MCwgMHg2NzEzLCAweDM5MTYsIDB4NjcxNCwgMHgwODYzLA0KKyAgICAweDY3MTUsIDB4MEJEQiwgMHg2NzE2LCAweDE0MTAsIDB4NjcxNywgMHgwRkQ1LCAweDY3MTksIDB4NDU2MiwNCisgICAgMHg2NzFCLCAweDBFNkMsIDB4NjcxRCwgMHgwQkM3LCAweDY3MUUsIDB4MTQxMSwgMHg2NzFGLCAweDA2MzgsDQorICAgIDB4NjcyNSwgMHg0QkYyLCAweDY3MjYsIDB4MTQxMiwgMHg2NzI3LCAweDE0MTMsIDB4NjcyOCwgMHgwRUU2LA0KKyAgICAweDY3MkEsIDB4MEVCMCwgMHg2NzJCLCAweDBFQTQsIDB4NjcyQywgMHgwRThBLCAweDY3MkQsIDB4MDg3MywNCisgICAgMHg2NzJFLCAweDE0MTUsIDB4NjczMSwgMHgwOTE3LCAweDY3MzMsIDB4MzkxNywgMHg2NzM0LCAweDBFN0YsDQorICAgIDB4NjczNSwgMHg0QkYzLCAweDY3MzYsIDB4MTQxNywgMHg2NzM3LCAweDE0MUEsIDB4NjczOCwgMHgxNDE5LA0KKyAgICAweDY3M0EsIDB4MDYzNSwgMHg2NzNELCAweDA2N0EsIDB4NjczRiwgMHgxNDE2LCAweDY3NDEsIDB4MTQxOCwNCisgICAgMHg2NzQzLCAweDM1QjcsIDB4Njc0NiwgMHgxNDFCLCAweDY3NDcsIDB4NDFGRiwgMHg2NzQ4LCAweDM5MTgsDQorICAgIDB4Njc0OSwgMHgwQTNGLCAweDY3NEMsIDB4MzkxOSwgMHg2NzRELCAweDQ1NjUsIDB4Njc0RSwgMHgwRjY1LA0KKyAgICAweDY3NEYsIDB4MDQ4RCwgMHg2NzUwLCAweDA4NTAsIDB4Njc1MSwgMHgwQjFDLCAweDY3NTMsIDB4MDkwOSwNCisgICAgMHg2NzU0LCAweDQ1NjYsIDB4Njc1NSwgMHg0QkY0LCAweDY3NTYsIDB4MDlEQiwgMHg2NzU5LCAweDE0MUUsDQorICAgIDB4Njc1QywgMHgwQzQ4LCAweDY3NUQsIDB4NDU2NywgMHg2NzVFLCAweDE0MUMsIDB4Njc1RiwgMHgwQjBCLA0KKyAgICAweDY3NjAsIDB4MTQxRCwgMHg2NzYxLCAweDA5REEsIDB4Njc2MiwgMHgwRUU5LCAweDY3NjMsIDB4MTQxRiwNCisgICAgMHg2NzY0LCAweDE0MjAsIDB4Njc2NSwgMHgwRjUyLCAweDY3NjYsIDB4MjEyQSwgMHg2NzZBLCAweDE0MjUsDQorICAgIDB4Njc2RCwgMHgwN0NDLCAweDY3NkUsIDB4MzU3MSwgMHg2NzZGLCAweDBEMEIsIDB4Njc3MCwgMHgxNDIyLA0KKyAgICAweDY3NzEsIDB4MEM2NiwgMHg2NzcyLCAweDEzRTMsIDB4Njc3MywgMHgxM0U3LCAweDY3NzQsIDB4NDU2QiwNCisgICAgMHg2Nzc1LCAweDA2NjksIDB4Njc3NiwgMHgzOTFBLCAweDY3NzcsIDB4MENGRCwgMHg2NzdCLCAweDM5MUIsDQorICAgIDB4Njc3QywgMHgxNDI0LCAweDY3N0UsIDB4MDlBNiwgMHg2NzdGLCAweDBENTgsIDB4Njc4MCwgMHg0QkY1LA0KKyAgICAweDY3ODEsIDB4NDIwMCwgMHg2Nzg1LCAweDE0MkEsIDB4Njc4NywgMHgwRDhFLCAweDY3ODksIDB4MTQyMSwNCisgICAgMHg2NzhCLCAweDE0MjcsIDB4Njc4QywgMHgxNDI2LCAweDY3OEYsIDB4NEJGNiwgMHg2NzkwLCAweDBBNzMsDQorICAgIDB4Njc5MSwgMHg0QkY3LCAweDY3OTIsIDB4NDU2RCwgMHg2NzkzLCAweDQyMDEsIDB4Njc5NSwgMHgwRTlCLA0KKyAgICAweDY3OTcsIDB4MEY5QiwgMHg2Nzk4LCAweDQyMDIsIDB4Njc5QSwgMHgwRTk1LCAweDY3OUIsIDB4NDIwMywNCisgICAgMHg2NzlDLCAweDA1NEMsIDB4Njc5RCwgMHgwOEFDLCAweDY3QTAsIDB4MEZFRSwgMHg2N0ExLCAweDE0MjksDQorICAgIDB4NjdBMiwgMHgwQTNCLCAweDY3QTQsIDB4NEJGOCwgMHg2N0E2LCAweDE0MjgsIDB4NjdBOSwgMHgxNDIzLA0KKyAgICAweDY3QUYsIDB4MDc4MywgMHg2N0IwLCAweDM5MUMsIDB4NjdCMSwgMHg0QkY5LCAweDY3QjIsIDB4MzkxRCwNCisgICAgMHg2N0IzLCAweDE0MkYsIDB4NjdCNCwgMHgxNDJELCAweDY3QjUsIDB4NEJGQSwgMHg2N0I2LCAweDA1NEQsDQorICAgIDB4NjdCNywgMHgxNDJCLCAweDY3QjgsIDB4MTQzMSwgMHg2N0I5LCAweDE0MzcsIDB4NjdCQiwgMHgyMTJCLA0KKyAgICAweDY3QkUsIDB4NEJGQiwgMHg2N0MwLCAweDIxMkQsIDB4NjdDMSwgMHgwQjI4LCAweDY3QzMsIDB4NDU3MSwNCisgICAgMHg2N0M0LCAweDBFMTEsIDB4NjdDNiwgMHgxNDM5LCAweDY3QzgsIDB4NDU3MiwgMHg2N0NBLCAweDBEOTQsDQorICAgIDB4NjdDRSwgMHgxNDM4LCAweDY3Q0YsIDB4MEQyNiwgMHg2N0QwLCAweDBFNkQsIDB4NjdEMSwgMHgwNUY3LA0KKyAgICAweDY3RDIsIDB4NDU3MywgMHg2N0QzLCAweDBBOUIsIDB4NjdENCwgMHgwOTRBLCAweDY3RDcsIDB4MzkxRiwNCisgICAgMHg2N0Q4LCAweDBCRUYsIDB4NjdEOSwgMHgzOTIwLCAweDY3REEsIDB4MEYxOCwgMHg2N0RCLCAweDQ1NzQsDQorICAgIDB4NjdERCwgMHgxNDM0LCAweDY3REUsIDB4MTQzMywgMHg2N0UyLCAweDE0MzUsIDB4NjdFNCwgMHgxNDMyLA0KKyAgICAweDY3RTcsIDB4MTQzQSwgMHg2N0U5LCAweDE0MzAsIDB4NjdFQywgMHgxNDJFLCAweDY3RUUsIDB4MTQzNiwNCisgICAgMHg2N0VGLCAweDE0MkMsIDB4NjdGMCwgMHgzOTIxLCAweDY3RjEsIDB4MEJBQSwgMHg2N0YzLCAweDBGMDQsDQorICAgIDB4NjdGNCwgMHgwOEYyLCAweDY3RjUsIDB4MDg2NCwgMHg2N0Y3LCAweDQ1NzUsIDB4NjdGOSwgMHgzOTFFLA0KKyAgICAweDY3RkEsIDB4MUU5QSwgMHg2N0ZCLCAweDA4MkEsIDB4NjdGQywgMHg0MjA0LCAweDY3RkUsIDB4MEU5RCwNCisgICAgMHg2N0ZGLCAweDA1OUYsIDB4NjgwMSwgMHgzNkYyLCAweDY4MDIsIDB4MEJFQSwgMHg2ODAzLCAweDBDQTIsDQorICAgIDB4NjgwNCwgMHgwNEVCLCAweDY4MDUsIDB4MUUwNywgMHg2ODEwLCAweDQ1NzAsIDB4NjgxMywgMHgwQTk2LA0KKyAgICAweDY4MTYsIDB4MEE1OCwgMHg2ODE3LCAweDA3MDAsIDB4NjgxOCwgMHg0NTc5LCAweDY4MUQsIDB4NDIwNSwNCisgICAgMHg2ODFFLCAweDE0M0MsIDB4NjgxRiwgMHg0NTdBLCAweDY4MjEsIDB4MDdDRCwgMHg2ODIyLCAweDA1REEsDQorICAgIDB4NjgyOCwgMHg0QkZDLCAweDY4MjksIDB4MTQzRSwgMHg2ODJBLCAweDA1RDIsIDB4NjgyQiwgMHgxNDQ0LA0KKyAgICAweDY4MkMsIDB4MzkyMiwgMHg2ODJELCAweDQ1N0IsIDB4NjgzMCwgMHgzOTIzLCAweDY4MzEsIDB4MzkyNCwNCisgICAgMHg2ODMyLCAweDE0NDEsIDB4NjgzMywgMHg0NTdELCAweDY4MzQsIDB4MEE5NywgMHg2ODM4LCAweDA1QTksDQorICAgIDB4NjgzOSwgMHgwODFDLCAweDY4M0IsIDB4NDU3RSwgMHg2ODNDLCAweDA1QTgsIDB4NjgzRCwgMHgwODNGLA0KKyAgICAweDY4M0UsIDB4NDU3RiwgMHg2ODQwLCAweDE0M0YsIDB4Njg0MSwgMHgwNzNCLCAweDY4NDIsIDB4MDcyMSwNCisgICAgMHg2ODQzLCAweDBDNjcsIDB4Njg0NCwgMHgyMTJGLCAweDY4NDUsIDB4NDU4MCwgMHg2ODQ2LCAweDE0M0QsDQorICAgIDB4Njg0OCwgMHgwNDhBLCAweDY4NDksIDB4NDU4MSwgMHg2ODRDLCAweDQ1ODIsIDB4Njg0RCwgMHgxNDQwLA0KKyAgICAweDY4NEUsIDB4MTQ0MiwgMHg2ODUwLCAweDA2QzUsIDB4Njg1MSwgMHgwNzAyLCAweDY4NTIsIDB4MjEyQywNCisgICAgMHg2ODUzLCAweDA1RjgsIDB4Njg1NCwgMHgwNjY1LCAweDY4NTUsIDB4NDU4MywgMHg2ODU3LCAweDQ1ODQsDQorICAgIDB4Njg1OSwgMHgxNDQ1LCAweDY4NUIsIDB4MzkyNSwgMHg2ODVDLCAweDA4NjksIDB4Njg1RCwgMHgwRTlGLA0KKyAgICAweDY4NUYsIDB4MDg4NSwgMHg2ODYzLCAweDE0NDYsIDB4Njg2NywgMHgwREEyLCAweDY4NkIsIDB4NDU4NiwNCisgICAgMHg2ODZFLCAweDQ1ODcsIDB4Njg3MiwgMHgzOTI2LCAweDY4NzQsIDB4MTQ1MiwgMHg2ODc1LCAweDM5MjcsDQorICAgIDB4Njg3NiwgMHgwNTMzLCAweDY4NzcsIDB4MTQ0NywgMHg2ODdBLCAweDM5MjgsIDB4Njg3QywgMHg0NTg4LA0KKyAgICAweDY4N0UsIDB4MTQ1OCwgMHg2ODdGLCAweDE0NDgsIDB4Njg4MSwgMHgwRjhBLCAweDY4ODIsIDB4NDU4OSwNCisgICAgMHg2ODgzLCAweDE0NEYsIDB4Njg4NCwgMHgzOTI5LCAweDY4ODUsIDB4MEQxNSwgMHg2ODg2LCAweDRCRkQsDQorICAgIDB4Njg4RCwgMHgxNDU3LCAweDY4OEUsIDB4MUU5QywgMHg2ODhGLCAweDE0NEEsIDB4Njg5MCwgMHg0NThBLA0KKyAgICAweDY4OTMsIDB4MDQ3OCwgMHg2ODk0LCAweDE0NEMsIDB4Njg5NiwgMHg0NThCLCAweDY4OTcsIDB4MDdDRSwNCisgICAgMHg2ODk4LCAweDQ1OEQsIDB4Njg5OSwgMHg0NThFLCAweDY4OUEsIDB4NDU4RiwgMHg2ODlCLCAweDE0NEUsDQorICAgIDB4Njg5QywgMHg0NTkwLCAweDY4OUQsIDB4MTQ0RCwgMHg2ODlGLCAweDE0NDksIDB4NjhBMCwgMHgxNDU0LA0KKyAgICAweDY4QTIsIDB4MDlBNywgMHg2OEEzLCAweDQyMDYsIDB4NjhBNSwgMHgzOTJBLCAweDY4QTYsIDB4MTFCRSwNCisgICAgMHg2OEE3LCAweDA3OUMsIDB4NjhBOCwgMHgwRjY2LCAweDY4QUEsIDB4NDU5MSwgMHg2OEFCLCAweDQ1OTIsDQorICAgIDB4NjhBRCwgMHgxNDRCLCAweDY4QUYsIDB4MEMxMCwgMHg2OEIwLCAweDA1ODEsIDB4NjhCMSwgMHgwODFELA0KKyAgICAweDY4QjIsIDB4MzkyQiwgMHg2OEIzLCAweDE0NDMsIDB4NjhCNCwgMHg0NTkzLCAweDY4QjUsIDB4MTQ1MywNCisgICAgMHg2OEI2LCAweDA1QkYsIDB4NjhCOSwgMHgxNDUxLCAweDY4QkEsIDB4MTQ1NSwgMHg2OEJCLCAweDQ1OTQsDQorICAgIDB4NjhCQywgMHgwQzY4LCAweDY4QzMsIDB4NDU5OCwgMHg2OEM0LCAweDA2M0EsIDB4NjhDNSwgMHg0NTk5LA0KKyAgICAweDY4QzYsIDB4MTQ3MywgMHg2OEM4LCAweDIwQUYsIDB4NjhDOSwgMHgwRUQ1LCAweDY4Q0EsIDB4MTQ1QSwNCisgICAgMHg2OENCLCAweDA2MzksIDB4NjhDQywgMHg0NTlBLCAweDY4Q0QsIDB4MTQ2MSwgMHg2OENGLCAweDIxMzAsDQorICAgIDB4NjhEMCwgMHgzOTJDLCAweDY4RDIsIDB4MEU2RSwgMHg2OEQ0LCAweDE0NjIsIDB4NjhENSwgMHgxNDY0LA0KKyAgICAweDY4RDYsIDB4MzkyRCwgMHg2OEQ3LCAweDE0NjgsIDB4NjhEOCwgMHgxNDVDLCAweDY4RDksIDB4NDU5QiwNCisgICAgMHg2OERBLCAweDBCNjgsIDB4NjhERiwgMHgwQzY5LCAweDY4RTAsIDB4MTQ2QywgMHg2OEUxLCAweDE0NUYsDQorICAgIDB4NjhFMywgMHgxNDY5LCAweDY4RTQsIDB4NDU5QywgMHg2OEU1LCAweDQ1OUQsIDB4NjhFNywgMHgxNDYzLA0KKyAgICAweDY4RTgsIDB4MzkyRSwgMHg2OEVCLCAweDRCRkUsIDB4NjhFQywgMHg0NTlFLCAweDY4RUQsIDB4MzkyRiwNCisgICAgMHg2OEVFLCAweDA5RkYsIDB4NjhFRiwgMHgxNDZELCAweDY4RjAsIDB4MzkzMCwgMHg2OEYxLCAweDM5MzEsDQorICAgIDB4NjhGMiwgMHgwQTU3LCAweDY4RjUsIDB4NEJGRiwgMHg2OEY3LCAweDQ1OUYsIDB4NjhGOSwgMHgxNDZCLA0KKyAgICAweDY4RkEsIDB4MDVGOSwgMHg2OEZCLCAweDQ1OTUsIDB4NjhGQywgMHgzOTMyLCAweDY5MDAsIDB4MEZGNiwNCisgICAgMHg2OTAxLCAweDE0NTksIDB4NjkwMywgMHg0NUEwLCAweDY5MDQsIDB4MTQ2NywgMHg2OTA1LCAweDA0OUMsDQorICAgIDB4NjkwNywgMHg0NUExLCAweDY5MDgsIDB4MTQ1QiwgMHg2OTBBLCAweDQyMDcsIDB4NjkwQiwgMHgwRUM2LA0KKyAgICAweDY5MEMsIDB4MTQ2MCwgMHg2OTBELCAweDA5RTgsIDB4NjkwRSwgMHgwQkUzLCAweDY5MEYsIDB4MTQ1NiwNCisgICAgMHg2OTExLCAweDM5MzMsIDB4NjkxMiwgMHgxNDY2LCAweDY5MTMsIDB4MzkzNCwgMHg2OTE3LCAweDRDMDAsDQorICAgIDB4NjkxOSwgMHgwQTQwLCAweDY5MUEsIDB4MTQ3MCwgMHg2OTFCLCAweDA1Q0YsIDB4NjkxQywgMHgwNzU1LA0KKyAgICAweDY5MjEsIDB4MTQ3MiwgMHg2OTIyLCAweDE0NUQsIDB4NjkyMywgMHgxNDcxLCAweDY5MjUsIDB4MTQ2QSwNCisgICAgMHg2OTI2LCAweDE0NUUsIDB4NjkyOCwgMHgxNDZFLCAweDY5MkEsIDB4MTQ2RiwgMHg2OTMwLCAweDE0ODAsDQorICAgIDB4NjkzMywgMHg0QzAxLCAweDY5MzQsIDB4MENBNiwgMHg2OTM1LCAweDM5MzUsIDB4NjkzNiwgMHgxNDY1LA0KKyAgICAweDY5MzgsIDB4NEMwMiwgMHg2OTM5LCAweDE0N0MsIDB4NjkzQiwgMHgzOTM2LCAweDY5M0QsIDB4MTQ3RSwNCisgICAgMHg2OTNGLCAweDBCRjQsIDB4Njk0MiwgMHg0MjBBLCAweDY5NDYsIDB4NDVBNSwgMHg2OTQ5LCAweDQyMDgsDQorICAgIDB4Njk0QSwgMHgwRjM2LCAweDY5NTMsIDB4MERFOCwgMHg2OTU0LCAweDE0NzksIDB4Njk1NSwgMHgwQjJBLA0KKyAgICAweDY5NTcsIDB4MzkzNywgMHg2OTU5LCAweDE0N0YsIDB4Njk1QSwgMHgwQUMxLCAweDY5NUIsIDB4NEMwMywNCisgICAgMHg2OTVDLCAweDE0NzYsIDB4Njk1RCwgMHgxNDgzLCAweDY5NUUsIDB4MTQ4MiwgMHg2OTYwLCAweDBDQzcsDQorICAgIDB4Njk2MSwgMHgxNDgxLCAweDY5NjIsIDB4MENDMiwgMHg2OTYzLCAweDM5MzgsIDB4Njk2NCwgMHg0MjBCLA0KKyAgICAweDY5NjUsIDB4NEMwNCwgMHg2OTY4LCAweDIxMzIsIDB4Njk2OSwgMHg0NUE2LCAweDY5NkEsIDB4MTQ4NSwNCisgICAgMHg2OTZCLCAweDE0NzgsIDB4Njk2QywgMHg0NUE3LCAweDY5NkQsIDB4MDZDMCwgMHg2OTZFLCAweDE0N0IsDQorICAgIDB4Njk2RiwgMHgwOTY3LCAweDY5NzIsIDB4MzkzOSwgMHg2OTczLCAweDBEMTYsIDB4Njk3NCwgMHgxNDdELA0KKyAgICAweDY5NzUsIDB4MDZDMywgMHg2OTc3LCAweDE0NzUsIDB4Njk3OCwgMHgxNDc3LCAweDY5NzksIDB4MTQ3NCwNCisgICAgMHg2OTdBLCAweDQ1QTgsIDB4Njk3QywgMHgwRkQ2LCAweDY5N0QsIDB4MDVCOCwgMHg2OTdFLCAweDE0N0EsDQorICAgIDB4Njk3RiwgMHgzOTNBLCAweDY5ODAsIDB4MzkzQiwgMHg2OTgxLCAweDE0ODQsIDB4Njk4MiwgMHgwNTkzLA0KKyAgICAweDY5ODYsIDB4Mzc0MCwgMHg2OThBLCAweDA4NTcsIDB4Njk4RSwgMHgwNEZGLCAweDY5OTEsIDB4MTQ5NSwNCisgICAgMHg2OTkyLCAweDQ1QTksIDB4Njk5NCwgMHgwRkQ3LCAweDY5OTUsIDB4MTQ5OCwgMHg2OTk2LCAweDQ1QUIsDQorICAgIDB4Njk5OCwgMHgyMTM0LCAweDY5OUIsIDB4MEEwMCwgMHg2OTlDLCAweDE0OTcsIDB4NjlBMCwgMHgxNDk2LA0KKyAgICAweDY5QTUsIDB4NDIwQywgMHg2OUE2LCAweDM5M0MsIDB4NjlBNywgMHgxNDkzLCAweDY5QTgsIDB4NEMwNSwNCisgICAgMHg2OUFCLCAweDRDMDYsIDB4NjlBRCwgMHgzOTNELCAweDY5QUUsIDB4MTQ4NywgMHg2OUFGLCAweDRDMDcsDQorICAgIDB4NjlCMCwgMHg0NUFDLCAweDY5QjEsIDB4MTRBNCwgMHg2OUIyLCAweDE0ODYsIDB4NjlCNCwgMHgxNDk5LA0KKyAgICAweDY5QjcsIDB4MzkzRSwgMHg2OUJBLCAweDQ1QUQsIDB4NjlCQiwgMHgxNDkxLCAweDY5QkMsIDB4NDVBRSwNCisgICAgMHg2OUJFLCAweDE0OEMsIDB4NjlCRiwgMHgxNDg5LCAweDY5QzAsIDB4NDVBRiwgMHg2OUMxLCAweDE0OEEsDQorICAgIDB4NjlDMywgMHgxNDkyLCAweDY5QzcsIDB4MUQzMywgMHg2OUNBLCAweDE0OEYsIDB4NjlDQiwgMHgwN0NGLA0KKyAgICAweDY5Q0MsIDB4MEJFNCwgMHg2OUNELCAweDBBRTYsIDB4NjlDRSwgMHgxNDhELCAweDY5Q0YsIDB4NDIwRCwNCisgICAgMHg2OUQwLCAweDE0ODgsIDB4NjlEMSwgMHg0NUIwLCAweDY5RDMsIDB4MTQ4QiwgMHg2OUQ2LCAweDM5M0YsDQorICAgIDB4NjlENywgMHgzOTQwLCAweDY5RDgsIDB4MEYzNywgMHg2OUQ5LCAweDBFOTgsIDB4NjlERCwgMHgxNDkwLA0KKyAgICAweDY5REUsIDB4MTQ5QSwgMHg2OUUyLCAweDIxMzUsIDB4NjlFMywgMHg0NUI0LCAweDY5RTUsIDB4NEMwOCwNCisgICAgMHg2OUU3LCAweDE0QTIsIDB4NjlFOCwgMHgxNDlCLCAweDY5RTksIDB4NDIxMCwgMHg2OUVBLCAweDM0MTEsDQorICAgIDB4NjlFQiwgMHgxNEE4LCAweDY5RUQsIDB4MTRBNiwgMHg2OUVFLCAweDQ1QjUsIDB4NjlFRiwgMHg0NUI2LA0KKyAgICAweDY5RjEsIDB4NEMwOSwgMHg2OUYyLCAweDE0QTEsIDB4NjlGMywgMHg0NUI3LCAweDY5RjQsIDB4NDVCOSwNCisgICAgMHg2OUY1LCAweDQyMTEsIDB4NjlGNiwgMHgzNzNGLCAweDY5RjksIDB4MTRBMCwgMHg2OUZCLCAweDBCRUMsDQorICAgIDB4NjlGRCwgMHgwQUU3LCAweDY5RkUsIDB4NDVCQSwgMHg2OUZGLCAweDE0OUUsIDB4NkEwMSwgMHgzOTQxLA0KKyAgICAweDZBMDIsIDB4MTQ5QywgMHg2QTA1LCAweDE0QTMsIDB4NkEwQSwgMHgxNEE5LCAweDZBMEIsIDB4MEQ4OSwNCisgICAgMHg2QTBDLCAweDE0QUYsIDB4NkEwRiwgMHgzOTQyLCAweDZBMTEsIDB4NDVCQiwgMHg2QTEyLCAweDE0QUEsDQorICAgIDB4NkExMywgMHgxNEFELCAweDZBMTQsIDB4MTRBNywgMHg2QTE1LCAweDM5NDMsIDB4NkExNywgMHgwQkIyLA0KKyAgICAweDZBMTksIDB4MERBQSwgMHg2QTFBLCAweDQ1QkMsIDB4NkExQiwgMHgxNDlELCAweDZBMUQsIDB4NDVCRCwNCisgICAgMHg2QTFFLCAweDE0QTUsIDB4NkExRiwgMHgwOUE4LCAweDZBMjEsIDB4MEVEQiwgMHg2QTIyLCAweDE0QjksDQorICAgIDB4NkEyMywgMHgxNEFDLCAweDZBMjgsIDB4Mzk0NCwgMHg2QTI5LCAweDA3NTYsIDB4NkEyQSwgMHgwNTIzLA0KKyAgICAweDZBMkIsIDB4MDVCRCwgMHg2QTJFLCAweDE0OTQsIDB4NkEzMCwgMHgyMTM2LCAweDZBMzIsIDB4NDVCRiwNCisgICAgMHg2QTMzLCAweDQ1QzAsIDB4NkEzNCwgMHgzOTQ1LCAweDZBMzUsIDB4MDlBOSwgMHg2QTM2LCAweDE0QjEsDQorICAgIDB4NkEzOCwgMHgxNEI4LCAweDZBMzksIDB4MDkyNSwgMHg2QTNBLCAweDA1RDAsIDB4NkEzQiwgMHg0MjEzLA0KKyAgICAweDZBM0QsIDB4MEI2QywgMHg2QTNFLCAweDM5NDYsIDB4NkEzRiwgMHg0NUMxLCAweDZBNDQsIDB4MTRBRSwNCisgICAgMHg2QTQ1LCAweDM5NDcsIDB4NkE0NiwgMHgyMTM4LCAweDZBNDcsIDB4MTRCMywgMHg2QTQ4LCAweDE0QjcsDQorICAgIDB4NkE0OSwgMHg0NUMyLCAweDZBNEEsIDB4NEMwQSwgMHg2QTRCLCAweDA2QUUsIDB4NkE0RSwgMHg0NUM0LA0KKyAgICAweDZBNTAsIDB4Mzk0OCwgMHg2QTUxLCAweDM5NDksIDB4NkE1MiwgMHg0NUM1LCAweDZBNTQsIDB4M0MzNCwNCisgICAgMHg2QTU1LCAweDRDMEIsIDB4NkE1NiwgMHgzOTRBLCAweDZBNTgsIDB4MDY2NiwgMHg2QTU5LCAweDE0QjUsDQorICAgIDB4NkE1QiwgMHgzOTRCLCAweDZBNUYsIDB4MDYzQiwgMHg2QTYxLCAweDBDQTMsIDB4NkE2MiwgMHgxNEI0LA0KKyAgICAweDZBNjQsIDB4NDVDNiwgMHg2QTY2LCAweDE0QjYsIDB4NkE2NywgMHg0QzBDLCAweDZBNkIsIDB4MjEzNywNCisgICAgMHg2QTcxLCAweDRDMEQsIDB4NkE3MiwgMHgxNEIwLCAweDZBNzMsIDB4MjEzOSwgMHg2QTc4LCAweDE0QjIsDQorICAgIDB4NkE3QSwgMHg0NUMzLCAweDZBN0UsIDB4MjEzQSwgMHg2QTdGLCAweDA1QkUsIDB4NkE4MCwgMHgwQjg3LA0KKyAgICAweDZBODMsIDB4Mzk0QywgMHg2QTg0LCAweDE0QkQsIDB4NkE4OSwgMHgzOTRELCAweDZBOEIsIDB4NDVDOCwNCisgICAgMHg2QThELCAweDE0QkIsIDB4NkE4RSwgMHgwNzlELCAweDZBOTAsIDB4MTRCQSwgMHg2QTkxLCAweDM5NEUsDQorICAgIDB4NkE5NCwgMHg0MjE1LCAweDZBOTcsIDB4MTRDMCwgMHg2QTlDLCAweDE0M0IsIDB4NkE5RCwgMHgzOTRGLA0KKyAgICAweDZBOUUsIDB4Mzk1MCwgMHg2QTlGLCAweDM5NTEsIDB4NkFBMCwgMHgxNEJDLCAweDZBQTEsIDB4NDVDQSwNCisgICAgMHg2QUEyLCAweDE0QkUsIDB4NkFBMywgMHgxNEJGLCAweDZBQTUsIDB4NDIxNiwgMHg2QUFBLCAweDE0Q0IsDQorICAgIDB4NkFBQiwgMHg0NUNDLCAweDZBQUMsIDB4MTRDNywgMHg2QUFFLCAweDE0NTAsIDB4NkFBRiwgMHg0QzBFLA0KKyAgICAweDZBQjMsIDB4MTRDNiwgMHg2QUI4LCAweDE0QzUsIDB4NkFCQiwgMHgxNEMyLCAweDZBQkQsIDB4NDVDRCwNCisgICAgMHg2QUMxLCAweDE0QUIsIDB4NkFDMiwgMHgxNEM0LCAweDZBQzMsIDB4MTRDMywgMHg2QUM2LCAweDQ1Q0UsDQorICAgIDB4NkFDOCwgMHg0QzBGLCAweDZBQzksIDB4NEMxMCwgMHg2QUQwLCAweDQ1RDAsIDB4NkFEMSwgMHgxNEM5LA0KKyAgICAweDZBRDMsIDB4MEZDQywgMHg2QUQ0LCAweDQ1Q0YsIDB4NkFEQSwgMHgxNENDLCAweDZBREIsIDB4MDZGMywNCisgICAgMHg2QURDLCAweDM5NTIsIDB4NkFERCwgMHg0NUQxLCAweDZBREUsIDB4MTRDOCwgMHg2QURGLCAweDE0Q0EsDQorICAgIDB4NkFFMiwgMHgyMTNCLCAweDZBRTQsIDB4MjEzQywgMHg2QUU3LCAweDM5NTMsIDB4NkFFOCwgMHgwRDNCLA0KKyAgICAweDZBRUEsIDB4MTRDRCwgMHg2QUVDLCAweDM5NTQsIDB4NkFGMSwgMHg0NUQ0LCAweDZBRjIsIDB4NDVENSwNCisgICAgMHg2QUYzLCAweDQ1RDYsIDB4NkFGOCwgMHg0RUI4LCAweDZBRkEsIDB4MTREMSwgMHg2QUZCLCAweDE0Q0UsDQorICAgIDB4NkFGRCwgMHg0NUQ3LCAweDZCMDMsIDB4NEMxMSwgMHg2QjA0LCAweDBGNUQsIDB4NkIwNSwgMHgxNENGLA0KKyAgICAweDZCMEEsIDB4MTQ5RiwgMHg2QjBCLCAweDQ1RDksIDB4NkIwRiwgMHg0NURBLCAweDZCMTAsIDB4NDVEQiwNCisgICAgMHg2QjExLCAweDQ1REMsIDB4NkIxMiwgMHgxNEQyLCAweDZCMTYsIDB4MTREMywgMHg2QjE3LCAweDQ1REUsDQorICAgIDB4NkIxQiwgMHg0MjE4LCAweDZCMUQsIDB4MDRENywgMHg2QjFFLCAweDM5NTUsIDB4NkIxRiwgMHgxNEQ1LA0KKyAgICAweDZCMjAsIDB4MDczRCwgMHg2QjIxLCAweDA4Q0QsIDB4NkIyMywgMHgwNkNELCAweDZCMjQsIDB4Mzk1NiwNCisgICAgMHg2QjI3LCAweDA1MjQsIDB4NkIyQywgMHg0MjE5LCAweDZCMkYsIDB4NDVFMCwgMHg2QjMyLCAweDBGNDksDQorICAgIDB4NkIzNSwgMHgzOTU3LCAweDZCMzcsIDB4MTRENywgMHg2QjM4LCAweDE0RDYsIDB4NkIzOSwgMHgxNEQ5LA0KKyAgICAweDZCM0EsIDB4MDY1NywgMHg2QjNCLCAweDRDMTIsIDB4NkIzRCwgMHgwNkNFLCAweDZCM0UsIDB4MDVGQSwNCisgICAgMHg2QjNGLCAweDRDMTMsIDB4NkI0MywgMHgxNERDLCAweDZCNDYsIDB4Mzk1OCwgMHg2QjQ3LCAweDE0REIsDQorICAgIDB4NkI0OSwgMHgxNERELCAweDZCNEEsIDB4NDVFMSwgMHg2QjRDLCAweDA1NEUsIDB4NkI0RSwgMHgwQjc1LA0KKyAgICAweDZCNTAsIDB4MTRERSwgMHg2QjUzLCAweDA1RkIsIDB4NkI1NCwgMHgxNEUwLCAweDZCNTYsIDB4Mzk1OSwNCisgICAgMHg2QjU4LCAweDQ1RTIsIDB4NkI1OSwgMHgxNERGLCAweDZCNUIsIDB4MTRFMSwgMHg2QjVGLCAweDE0RTIsDQorICAgIDB4NkI2MCwgMHgzOTVBLCAweDZCNjEsIDB4MTRFMywgMHg2QjYyLCAweDA4QUQsIDB4NkI2MywgMHgwQTU5LA0KKyAgICAweDZCNjQsIDB4MDgxMSwgMHg2QjY1LCAweDM0NEEsIDB4NkI2NiwgMHgwREUyLCAweDZCNjcsIDB4NDIxQSwNCisgICAgMHg2QjY5LCAweDBFMzIsIDB4NkI2QSwgMHgwRkVBLCAweDZCNkMsIDB4NDVFMywgMHg2QjZGLCAweDA4QzMsDQorICAgIDB4NkI3MiwgMHgzNUQ5LCAweDZCNzMsIDB4MDg0MCwgMHg2Qjc0LCAweDBGQkEsIDB4NkI3NSwgMHg0NUU0LA0KKyAgICAweDZCNzcsIDB4MzQ1NiwgMHg2Qjc4LCAweDE0RTQsIDB4NkI3OSwgMHgxNEU1LCAweDZCN0EsIDB4NDVFNSwNCisgICAgMHg2QjdCLCAweDA4QUUsIDB4NkI3RCwgMHg0QzE0LCAweDZCN0UsIDB4NEMxNSwgMHg2QjdGLCAweDE0RTYsDQorICAgIDB4NkI4MCwgMHgxNEU3LCAweDZCODEsIDB4NDVFNiwgMHg2QjgyLCAweDM5NUIsIDB4NkI4MywgMHgxNEU5LA0KKyAgICAweDZCODQsIDB4MTRFOCwgMHg2Qjg2LCAweDBFODYsIDB4NkI4OSwgMHgwOTY4LCAweDZCOEEsIDB4MDkxOCwNCisgICAgMHg2QjhCLCAweDA4OTIsIDB4NkI4RCwgMHgxNEVBLCAweDZCOTUsIDB4MTRFQywgMHg2Qjk2LCAweDA5RTksDQorICAgIDB4NkI5OCwgMHgxNEVCLCAweDZCOUIsIDB4NDVFNywgMHg2QjlFLCAweDE0RUQsIDB4NkJBNCwgMHgxNEVFLA0KKyAgICAweDZCQTksIDB4NDIxQiwgMHg2QkFBLCAweDE0RUYsIDB4NkJBQiwgMHgxNEYwLCAweDZCQUQsIDB4NDIxQywNCisgICAgMHg2QkFFLCAweDQ1RTgsIDB4NkJBRiwgMHgxNEYxLCAweDZCQjAsIDB4NEMxNiwgMHg2QkIxLCAweDE0RjMsDQorICAgIDB4NkJCMiwgMHgxNEYyLCAweDZCQjMsIDB4MTRGNCwgMHg2QkI0LCAweDA1MjUsIDB4NkJCNSwgMHgwQjg4LA0KKyAgICAweDZCQjcsIDB4MTRGNSwgMHg2QkJBLCAweDA4NzQsIDB4NkJCQiwgMHgwNUFBLCAweDZCQkMsIDB4MTRGNiwNCisgICAgMHg2QkJELCAweDQ1RUEsIDB4NkJCRSwgMHgzOTVDLCAweDZCQkYsIDB4MEMzQywgMHg2QkMwLCAweDExOUQsDQorICAgIDB4NkJDNSwgMHgwNjNELCAweDZCQzYsIDB4MTRGNywgMHg2QkM3LCAweDQ1RUIsIDB4NkJDOCwgMHg0NUVDLA0KKyAgICAweDZCQzksIDB4NDVFRCwgMHg2QkNCLCAweDE0RjgsIDB4NkJDQywgMHgzNzQ0LCAweDZCQ0QsIDB4MEUzQywNCisgICAgMHg2QkNFLCAweDBFOTYsIDB4NkJDRiwgMHgzNDRDLCAweDZCRDIsIDB4MEM5RiwgMHg2QkQzLCAweDE0RjksDQorICAgIDB4NkJENCwgMHgwRDdBLCAweDZCRDYsIDB4MjEzRCwgMHg2QkQ3LCAweDQyMUQsIDB4NkJEOCwgMHgwRDhGLA0KKyAgICAweDZCREEsIDB4NDVFRSwgMHg2QkRCLCAweDBFREYsIDB4NkJERiwgMHgxNEZBLCAweDZCRTEsIDB4Mzk1RCwNCisgICAgMHg2QkU2LCAweDQ1RUYsIDB4NkJFNywgMHg0NUYwLCAweDZCRUIsIDB4MTRGQywgMHg2QkVDLCAweDE0RkIsDQorICAgIDB4NkJFRSwgMHg0NUYxLCAweDZCRUYsIDB4MTRGRSwgMHg2QkYxLCAweDM5NUUsIDB4NkJGMywgMHgxNEZELA0KKyAgICAweDZCRjcsIDB4NEMxNywgMHg2QkY5LCAweDRDMTgsIDB4NkJGRiwgMHg0MjFFLCAweDZDMDIsIDB4NDVGMiwNCisgICAgMHg2QzA0LCAweDRDMTksIDB4NkMwNSwgMHg0MjFGLCAweDZDMDgsIDB4MTUwMCwgMHg2QzA5LCAweDRDMUEsDQorICAgIDB4NkMwQSwgMHg0NUYzLCAweDZDMEQsIDB4NEMxQiwgMHg2QzBFLCAweDQ1RjQsIDB4NkMwRiwgMHgwOEFGLA0KKyAgICAweDZDMTAsIDB4Mzk1RiwgMHg2QzExLCAweDBFQkQsIDB4NkMxMywgMHgxNTAxLCAweDZDMTQsIDB4MTUwMiwNCisgICAgMHg2QzE3LCAweDA2M0UsIDB4NkMxQiwgMHgxNTAzLCAweDZDMjMsIDB4MTUwNSwgMHg2QzI0LCAweDE1MDQsDQorICAgIDB4NkMyQywgMHg0QzFDLCAweDZDMzMsIDB4Mzk2MCwgMHg2QzM0LCAweDBBMkIsIDB4NkMzNSwgMHgzOTYxLA0KKyAgICAweDZDMzYsIDB4NDVGNSwgMHg2QzM3LCAweDBEQUIsIDB4NkMzOCwgMHgwNEVDLCAweDZDM0EsIDB4NEY1NSwNCisgICAgMHg2QzNFLCAweDBENTksIDB4NkMzRiwgMHgyMTNFLCAweDZDNDAsIDB4MEMxMSwgMHg2QzQxLCAweDA5NEIsDQorICAgIDB4NkM0MiwgMHgwNjdCLCAweDZDNEEsIDB4NEMxRCwgMHg2QzRELCAweDQ1RjcsIDB4NkM0RSwgMHgwRDVBLA0KKyAgICAweDZDNTAsIDB4MDhEQSwgMHg2QzUyLCAweDRDMUUsIDB4NkM1NCwgMHg0QzFGLCAweDZDNTUsIDB4MTUwNywNCisgICAgMHg2QzU3LCAweDA1RkMsIDB4NkM1OSwgMHgzOTYzLCAweDZDNUEsIDB4MDUxQSwgMHg2QzVCLCAweDQ1RjgsDQorICAgIDB4NkM1QywgMHgyMTNGLCAweDZDNUQsIDB4MENDQSwgMHg2QzVFLCAweDE1MDYsIDB4NkM1RiwgMHgwN0QwLA0KKyAgICAweDZDNjAsIDB4MEI5MSwgMHg2QzYyLCAweDE1MDgsIDB4NkM2NywgMHg0NjBBLCAweDZDNjgsIDB4MTUxMCwNCisgICAgMHg2QzZBLCAweDE1MDksIDB4NkM2RCwgMHg0NUY5LCAweDZDNkYsIDB4MjE0MSwgMHg2QzcwLCAweDBCMjEsDQorICAgIDB4NkM3MiwgMHgwNjdDLCAweDZDNzMsIDB4MTUxMSwgMHg2Qzc0LCAweDQyMjAsIDB4NkM3NiwgMHgzOTY0LA0KKyAgICAweDZDNzksIDB4NEMyMCwgMHg2QzdBLCAweDA3M0UsIDB4NkM3QiwgMHgzOTY1LCAweDZDN0QsIDB4MDYzRiwNCisgICAgMHg2QzdFLCAweDE1MEYsIDB4NkM4MSwgMHgxNTBELCAweDZDODIsIDB4MTUwQSwgMHg2QzgzLCAweDBGNEEsDQorICAgIDB4NkM4NCwgMHg0NUZBLCAweDZDODUsIDB4Mzk2NiwgMHg2Qzg2LCAweDIxNDAsIDB4NkM4OCwgMHgwQkRDLA0KKyAgICAweDZDODksIDB4NDVGQiwgMHg2QzhDLCAweDBDQjEsIDB4NkM4RCwgMHgxNTBCLCAweDZDOTAsIDB4MTUxMywNCisgICAgMHg2QzkyLCAweDE1MTIsIDB4NkM5MywgMHgwNkY5LCAweDZDOTQsIDB4NDVGRCwgMHg2Qzk1LCAweDM5NjcsDQorICAgIDB4NkM5NiwgMHgwNTJELCAweDZDOTcsIDB4NDVGRSwgMHg2Qzk4LCAweDQyMjEsIDB4NkM5OSwgMHgwODJCLA0KKyAgICAweDZDOUEsIDB4MTUwQywgMHg2QzlCLCAweDE1MEUsIDB4NkM5QywgMHgzOTY4LCAweDZDQTEsIDB4MEU4NSwNCisgICAgMHg2Q0EyLCAweDBCNTQsIDB4NkNBQSwgMHgzNzQ5LCAweDZDQUIsIDB4MEVBNSwgMHg2Q0FDLCAweDRDMjEsDQorICAgIDB4NkNBRCwgMHg0NUZGLCAweDZDQUUsIDB4MTUxQiwgMHg2Q0IxLCAweDE1MUMsIDB4NkNCMywgMHgwNTRGLA0KKyAgICAweDZDQjQsIDB4NEMyMiwgMHg2Q0I4LCAweDBERjgsIDB4NkNCOSwgMHgwRjA5LCAweDZDQkEsIDB4MTUxRSwNCisgICAgMHg2Q0JCLCAweDA4Q0YsIDB4NkNCQywgMHgwOUFBLCAweDZDQkQsIDB4MTUxNywgMHg2Q0JFLCAweDE1MUQsDQorICAgIDB4NkNCRiwgMHgwNTBBLCAweDZDQzEsIDB4MDZBRiwgMHg2Q0MyLCAweDQ2MDAsIDB4NkNDNCwgMHgxNTE0LA0KKyAgICAweDZDQzUsIDB4MTUxOSwgMHg2Q0M2LCAweDQyMjMsIDB4NkNDOSwgMHgwQTk4LCAweDZDQ0EsIDB4MEQyNywNCisgICAgMHg2Q0NDLCAweDBEN0IsIDB4NkNEMCwgMHgzOTY5LCAweDZDRDIsIDB4NEMyMywgMHg2Q0QzLCAweDE1MTYsDQorICAgIDB4NkNENCwgMHgzOTZBLCAweDZDRDUsIDB4MEU0RiwgMHg2Q0Q2LCAweDM5NkIsIDB4NkNENywgMHgxNTE4LA0KKyAgICAweDZDRDksIDB4MTUyMSwgMHg2Q0RBLCAweDIxNDIsIDB4NkNEQiwgMHgxNTFGLCAweDZDREMsIDB4NDYwMiwNCisgICAgMHg2Q0RELCAweDE1MUEsIDB4NkNFMCwgMHgzOTZDLCAweDZDRTEsIDB4MEU1MCwgMHg2Q0UyLCAweDBDRkUsDQorICAgIDB4NkNFMywgMHgwNjdELCAweDZDRTUsIDB4MEMxRiwgMHg2Q0U4LCAweDBCQUIsIDB4NkNFOSwgMHg0NjAzLA0KKyAgICAweDZDRUEsIDB4MTUyMiwgMHg2Q0VCLCAweDM5NkQsIDB4NkNFQywgMHgzOTZFLCAweDZDRUQsIDB4NDYwNCwNCisgICAgMHg2Q0VFLCAweDM5NkYsIDB4NkNFRiwgMHgxNTIwLCAweDZDRjAsIDB4MEIzOSwgMHg2Q0YxLCAweDE1MTUsDQorICAgIDB4NkNGMywgMHgwNEVELCAweDZDRkIsIDB4NDIyMiwgMHg2RDAwLCAweDQ2MDYsIDB4NkQwMSwgMHgzQzM1LA0KKyAgICAweDZEMDQsIDB4MjE0MywgMHg2RDBBLCAweDM5NzAsIDB4NkQwQiwgMHgwRjM4LCAweDZEMEMsIDB4MTUyRCwNCisgICAgMHg2RDBFLCAweDM5NzEsIDB4NkQxMSwgMHgzOTcyLCAweDZEMTIsIDB4MTUyQywgMHg2RDE3LCAweDBBOUEsDQorICAgIDB4NkQxOSwgMHgxNTI5LCAweDZEMUIsIDB4MEY1NiwgMHg2RDFFLCAweDBDOEUsIDB4NkQxRiwgMHgxNTIzLA0KKyAgICAweDZEMjQsIDB4NDYwNywgMHg2RDI1LCAweDBCRTEsIDB4NkQyNiwgMHg0NjA4LCAweDZEMjcsIDB4NDYwOSwNCisgICAgMHg2RDI5LCAweDA0RUUsIDB4NkQyQSwgMHgwN0QxLCAweDZEMkIsIDB4MTUyNiwgMHg2RDJFLCAweDM5NzMsDQorICAgIDB4NkQyRiwgMHg0NjBCLCAweDZEMzEsIDB4NDIyNCwgMHg2RDMyLCAweDA5MzEsIDB4NkQzMywgMHgxNTJCLA0KKyAgICAweDZEMzQsIDB4NDYxRSwgMHg2RDM1LCAweDE1MkEsIDB4NkQzNiwgMHgxNTI1LCAweDZEMzgsIDB4MTUyOCwNCisgICAgMHg2RDM5LCAweDQyMjUsIDB4NkQzQiwgMHgwNUM2LCAweDZEM0MsIDB4NDYwQywgMHg2RDNELCAweDE1MjcsDQorICAgIDB4NkQzRSwgMHgwQ0ZGLCAweDZEM0YsIDB4NDIyNiwgMHg2RDQxLCAweDBGNzYsIDB4NkQ0NCwgMHgwOURDLA0KKyAgICAweDZENDUsIDB4MEE5OSwgMHg2RDU3LCAweDM5NzQsIDB4NkQ1OCwgMHg0MjI3LCAweDZENTksIDB4MTUzMywNCisgICAgMHg2RDVBLCAweDE1MzEsIDB4NkQ1QiwgMHg0NjBELCAweDZENUMsIDB4MERCRiwgMHg2RDVFLCAweDM5NzUsDQorICAgIDB4NkQ2MCwgMHg0NjBFLCAweDZENjEsIDB4NEMyNCwgMHg2RDYzLCAweDE1MkUsIDB4NkQ2NCwgMHgxNTMwLA0KKyAgICAweDZENjUsIDB4Mzk3NiwgMHg2RDY2LCAweDA0REMsIDB4NkQ2OSwgMHgwN0QyLCAweDZENkEsIDB4MEZEOCwNCisgICAgMHg2RDZDLCAweDA1OUIsIDB4NkQ2RSwgMHgwREQ0LCAweDZENkYsIDB4MjE0NSwgMHg2RDcwLCAweDQ2MEYsDQorICAgIDB4NkQ3NCwgMHgwRjRCLCAweDZENzcsIDB4MDU4MiwgMHg2RDc4LCAweDBBMDEsIDB4NkQ3OSwgMHgxNTMyLA0KKyAgICAweDZEN0MsIDB4NEMyNSwgMHg2RDgwLCAweDQ2MTAsIDB4NkQ4MSwgMHg0NjExLCAweDZEODIsIDB4Mzk3NywNCisgICAgMHg2RDg1LCAweDE1MzcsIDB4NkQ4NywgMHgyMTQ0LCAweDZEODgsIDB4MDlBQiwgMHg2RDg5LCAweDM0MkEsDQorICAgIDB4NkQ4QSwgMHg0NjEyLCAweDZEOEMsIDB4MEYxQSwgMHg2RDhELCAweDQ2MTMsIDB4NkQ4RSwgMHgxNTM0LA0KKyAgICAweDZEOTEsIDB4NDYxNCwgMHg2RDkzLCAweDE1MkYsIDB4NkQ5NCwgMHg0MjI4LCAweDZEOTUsIDB4MTUzNSwNCisgICAgMHg2RDk2LCAweDIxNDYsIDB4NkQ5OCwgMHg0NjE1LCAweDZEOTksIDB4MEZBNiwgMHg2RDlCLCAweDBDNkQsDQorICAgIDB4NkQ5QywgMHgwQzlBLCAweDZEQUEsIDB4NDIyOSwgMHg2REFCLCAweDQ2MUEsIDB4NkRBQywgMHgyMTQ3LA0KKyAgICAweDZEQUUsIDB4NDYxQiwgMHg2REFGLCAweDA1OTQsIDB4NkRCMiwgMHgwNEY3LCAweDZEQjQsIDB4NDYxQywNCisgICAgMHg2REI1LCAweDE1M0IsIDB4NkRCOCwgMHgxNTNFLCAweDZEQjksIDB4NEMyNiwgMHg2REJDLCAweDBGOEIsDQorICAgIDB4NkRCRiwgMHgzOTc4LCAweDZEQzAsIDB4MEY0RSwgMHg2REMyLCAweDQ2MUQsIDB4NkRDNCwgMHgzOTc5LA0KKyAgICAweDZEQzUsIDB4MTU0NSwgMHg2REM2LCAweDE1M0YsIDB4NkRDNywgMHgxNTNDLCAweDZEQzgsIDB4NDYxRiwNCisgICAgMHg2RENBLCAweDM5N0EsIDB4NkRDQiwgMHgwRjlDLCAweDZEQ0MsIDB4MTU0MiwgMHg2RENFLCAweDQ2MjAsDQorICAgIDB4NkRDRiwgMHgyMTQ4LCAweDZERDAsIDB4M0MzNiwgMHg2REQxLCAweDA5NTQsIDB4NkREMiwgMHgxNTQ0LA0KKyAgICAweDZERDUsIDB4MTU0OSwgMHg2REQ2LCAweDM5N0IsIDB4NkREOCwgMHgwQzZCLCAweDZERDksIDB4MTU0NywNCisgICAgMHg2RERBLCAweDM0NTMsIDB4NkREQiwgMHg0MjJBLCAweDZEREQsIDB4NDIyQiwgMHg2RERFLCAweDE1NDEsDQorICAgIDB4NkRERiwgMHg0NjIxLCAweDZERTEsIDB4MEI3NiwgMHg2REU0LCAweDE1NDgsIDB4NkRFNiwgMHgxNTNELA0KKyAgICAweDZERTgsIDB4MTU0MywgMHg2REU5LCAweDM5N0MsIDB4NkRFQSwgMHgxNTRBLCAweDZERUIsIDB4MDRDMCwNCisgICAgMHg2REVDLCAweDE1NDAsIDB4NkRFRSwgMHgxNTRCLCAweDZERjAsIDB4NEMyNywgMHg2REYxLCAweDBBMDIsDQorICAgIDB4NkRGMiwgMHgyMTRBLCAweDZERjMsIDB4MDk2OSwgMHg2REY1LCAweDBERjUsIDB4NkRGNiwgMHg0NjIyLA0KKyAgICAweDZERjcsIDB4MDgxRSwgMHg2REY4LCAweDIxNDksIDB4NkRGOSwgMHgxNTM4LCAweDZERkEsIDB4MTU0NiwNCisgICAgMHg2REZCLCAweDBDMzQsIDB4NkRGQywgMHgyMTRCLCAweDZFMDUsIDB4MEE1QSwgMHg2RTA3LCAweDA1QzcsDQorICAgIDB4NkUwOCwgMHgwODQxLCAweDZFMDksIDB4MDlBQywgMHg2RTBBLCAweDE1M0EsIDB4NkUwQiwgMHgwOTRDLA0KKyAgICAweDZFMTMsIDB4MDcyMiwgMHg2RTE1LCAweDE1MzksIDB4NkUxNywgMHgzNzQ2LCAweDZFMTksIDB4MTU0RiwNCisgICAgMHg2RTFBLCAweDA5NzcsIDB4NkUxQiwgMHgwNzZFLCAweDZFMUQsIDB4MTU1RSwgMHg2RTFFLCAweDQ2MjQsDQorICAgIDB4NkUxRiwgMHgxNTU4LCAweDZFMjAsIDB4MDY4RSwgMHg2RTIxLCAweDBDNDksIDB4NkUyMiwgMHgzOTdELA0KKyAgICAweDZFMjMsIDB4MTU1MywgMHg2RTI0LCAweDE1NUMsIDB4NkUyNSwgMHgwNDczLCAweDZFMjYsIDB4MDRENCwNCisgICAgMHg2RTI3LCAweDIxNEUsIDB4NkUyOSwgMHgwNTM5LCAweDZFMkIsIDB4MTU1NSwgMHg2RTJDLCAweDBCMEMsDQorICAgIDB4NkUyRCwgMHgxNTRDLCAweDZFMkUsIDB4MTU0RSwgMHg2RTJGLCAweDA3RDMsIDB4NkUzMiwgMHg0NjI2LA0KKyAgICAweDZFMzQsIDB4MzQxMiwgMHg2RTM2LCAweDQ2MjMsIDB4NkUzOCwgMHgxNTVGLCAweDZFMzksIDB4MjE0QywNCisgICAgMHg2RTNBLCAweDE1NUEsIDB4NkUzQywgMHgyMTRGLCAweDZFM0UsIDB4MTU1MiwgMHg2RTQyLCAweDNDMzcsDQorICAgIDB4NkU0MywgMHgxNTU5LCAweDZFNDQsIDB4NDIyQywgMHg2RTQ1LCAweDRDMjgsIDB4NkU0OCwgMHg0NjI3LA0KKyAgICAweDZFNDksIDB4NDYyOCwgMHg2RTRBLCAweDBFQjcsIDB4NkU0QiwgMHg0NjI5LCAweDZFNEMsIDB4NDYyQSwNCisgICAgMHg2RTRELCAweDE1NTcsIDB4NkU0RSwgMHgxNTVCLCAweDZFNEYsIDB4NDYyQiwgMHg2RTUxLCAweDM5N0UsDQorICAgIDB4NkU1MywgMHg0NjJDLCAweDZFNTQsIDB4NDYyRCwgMHg2RTU2LCAweDA3ODQsIDB4NkU1NywgMHg0NjJFLA0KKyAgICAweDZFNTgsIDB4MDlBRCwgMHg2RTVCLCAweDBCNzcsIDB4NkU1QywgMHgyMTRELCAweDZFNUUsIDB4NDIyRCwNCisgICAgMHg2RTVGLCAweDE1NTEsIDB4NkU2MywgMHg0NjJGLCAweDZFNjcsIDB4MEYxOSwgMHg2RTZCLCAweDE1NTQsDQorICAgIDB4NkU2RSwgMHgxNTRELCAweDZFNkYsIDB4MEM2QywgMHg2RTcyLCAweDE1NTAsIDB4NkU3MywgMHg0QzI5LA0KKyAgICAweDZFNzYsIDB4MTU1NiwgMHg2RTdCLCAweDRDMkEsIDB4NkU3RCwgMHg0QzJCLCAweDZFN0UsIDB4MEZGNywNCisgICAgMHg2RTdGLCAweDA4RUEsIDB4NkU4MCwgMHgwRUFDLCAweDZFODIsIDB4MTU2MCwgMHg2RTg5LCAweDRDMkMsDQorICAgIDB4NkU4QywgMHgwRDQyLCAweDZFOEYsIDB4MTU2QywgMHg2RTkwLCAweDA3NkYsIDB4NkU5MywgMHg0NjMxLA0KKyAgICAweDZFOTYsIDB4MDk2QSwgMHg2RTk4LCAweDE1NjIsIDB4NkU5QywgMHgwRjc3LCAweDZFOUQsIDB4MDdENCwNCisgICAgMHg2RTlGLCAweDE1NkYsIDB4NkVBMiwgMHgwNEIyLCAweDZFQTUsIDB4MTU2RCwgMHg2RUE3LCAweDQ2MzIsDQorICAgIDB4NkVBQSwgMHgxNTYxLCAweDZFQUIsIDB4MzQwQywgMHg2RUFGLCAweDE1NjcsIDB4NkVCMSwgMHg0MjJFLA0KKyAgICAweDZFQjIsIDB4MTU2OSwgMHg2RUI0LCAweDQ2MzMsIDB4NkVCNiwgMHgwRjM5LCAweDZFQjcsIDB4MTU2NCwNCisgICAgMHg2RUJBLCAweDBDMjgsIDB4NkVCQywgMHg0QzJELCAweDZFQkQsIDB4MTU2NiwgMHg2RUJGLCAweDIxNTAsDQorICAgIDB4NkVDMSwgMHg0MjJGLCAweDZFQzIsIDB4MTU2RSwgMHg2RUMzLCAweDQ2MzQsIDB4NkVDNCwgMHgxNTY4LA0KKyAgICAweDZFQzUsIDB4MEVEMywgMHg2RUM3LCAweDM5N0YsIDB4NkVDOSwgMHgxNTYzLCAweDZFQ0EsIDB4Mzk4MCwNCisgICAgMHg2RUNCLCAweDA4Q0UsIDB4NkVDQywgMHgxNTdCLCAweDZFQ0UsIDB4Mzk4MSwgMHg2RUQxLCAweDA1QzgsDQorICAgIDB4NkVEMywgMHgxNTY1LCAweDZFRDQsIDB4MTU2QSwgMHg2RUQ1LCAweDE1NkIsIDB4NkVEOSwgMHgzQzM4LA0KKyAgICAweDZFREEsIDB4NEMyRSwgMHg2RURCLCAweDRDMkYsIDB4NkVERCwgMHgwQjRDLCAweDZFREUsIDB4MEIzQSwNCisgICAgMHg2RUU2LCAweDNDMjQsIDB4NkVFQiwgMHg0NjM2LCAweDZFRUMsIDB4MTU3MywgMHg2RUVGLCAweDE1NzksDQorICAgIDB4NkVGMiwgMHgxNTc3LCAweDZFRjQsIDB4MEMyMywgMHg2RUY3LCAweDE1N0UsIDB4NkVGOCwgMHgxNTc0LA0KKyAgICAweDZFRjksIDB4NDYzNywgMHg2RUZCLCAweDQ2MzgsIDB4NkVGRCwgMHgzOTgyLCAweDZFRkUsIDB4MTU3NSwNCisgICAgMHg2RUZGLCAweDE1NUQsIDB4NkYwMSwgMHgwNjkzLCAweDZGMDIsIDB4MERBQywgMHg2RjA2LCAweDA4RUIsDQorICAgIDB4NkYwOSwgMHgwODA5LCAweDZGMEEsIDB4NDYzOSwgMHg2RjBDLCAweDQ2M0EsIDB4NkYwRiwgMHgwRkQ5LA0KKyAgICAweDZGMTAsIDB4NDIzMCwgMHg2RjExLCAweDE1NzEsIDB4NkYxMywgMHgxNTdELCAweDZGMTQsIDB4MDUwQiwNCisgICAgMHg2RjE1LCAweDBBRTgsIDB4NkYxOCwgMHg0NjNCLCAweDZGMUEsIDB4Mzk4MywgMHg2RjIwLCAweDBEMkYsDQorICAgIDB4NkYyMiwgMHgwNUZELCAweDZGMjMsIDB4MEZDMiwgMHg2RjI1LCAweDQ2M0MsIDB4NkYyNiwgMHg0QzMwLA0KKyAgICAweDZGMjksIDB4NEMzMSwgMHg2RjJBLCAweDM5ODQsIDB4NkYyQiwgMHgwRUFELCAweDZGMkMsIDB4MEJFRSwNCisgICAgMHg2RjJGLCAweDM5ODUsIDB4NkYzMCwgMHg0QzMyLCAweDZGMzEsIDB4MTU3OCwgMHg2RjMyLCAweDE1N0EsDQorICAgIDB4NkYzMywgMHgzOTg2LCAweDZGMzUsIDB4NDYzNSwgMHg2RjM2LCAweDQ2M0QsIDB4NkYzOCwgMHgwQUI0LA0KKyAgICAweDZGM0MsIDB4NDYzRSwgMHg2RjNFLCAweDE1N0MsIDB4NkYzRiwgMHgxNTc2LCAweDZGNDEsIDB4MTU3MCwNCisgICAgMHg2RjQ1LCAweDA1RkYsIDB4NkY1MSwgMHgxRTYwLCAweDZGNTIsIDB4NDY0MCwgMHg2RjU0LCAweDA3M0YsDQorICAgIDB4NkY1NywgMHg0NjQxLCAweDZGNTgsIDB4MTU4QSwgMHg2RjU5LCAweDQyMzEsIDB4NkY1QSwgMHgzOTg3LA0KKyAgICAweDZGNUIsIDB4MTU4NSwgMHg2RjVDLCAweDBBOUMsIDB4NkY1RSwgMHgzOTg4LCAweDZGNUYsIDB4MDVDMSwNCisgICAgMHg2RjYwLCAweDQ2NDIsIDB4NkY2MSwgMHg0MjMyLCAweDZGNjIsIDB4Mzk4OSwgMHg2RjY0LCAweDA5NkIsDQorICAgIDB4NkY2NiwgMHgxNThFLCAweDZGNjgsIDB4NDY0MywgMHg2RjZELCAweDE1ODcsIDB4NkY2RSwgMHgwQkM4LA0KKyAgICAweDZGNkYsIDB4MTU4NCwgMHg2RjcwLCAweDBCRjUsIDB4NkY3NCwgMHgxNUE3LCAweDZGNzgsIDB4MTU4MSwNCisgICAgMHg2RjdBLCAweDE1ODAsIDB4NkY3QywgMHgxNTg5LCAweDZGN0QsIDB4Mzk4QSwgMHg2RjdFLCAweDQyMzMsDQorICAgIDB4NkY4MCwgMHgxNTgzLCAweDZGODEsIDB4MTU4MiwgMHg2RjgyLCAweDE1ODgsIDB4NkY4NCwgMHgwQTQ1LA0KKyAgICAweDZGODYsIDB4MTU3RiwgMHg2Rjg3LCAweDRDMzMsIDB4NkY4OCwgMHgyMTUxLCAweDZGOEIsIDB4Mzk4QiwNCisgICAgMHg2RjhDLCAweDQyMzQsIDB4NkY4RCwgMHgzOThDLCAweDZGOEUsIDB4MTU4QiwgMHg2RjkwLCAweDQ2NDQsDQorICAgIDB4NkY5MSwgMHgxNThDLCAweDZGOTIsIDB4Mzk4RCwgMHg2Rjk0LCAweDM5OEUsIDB4NkY5NiwgMHg0NjQ1LA0KKyAgICAweDZGOTcsIDB4MDVGRSwgMHg2Rjk4LCAweDM2M0MsIDB4NkY5QSwgMHgzOThGLCAweDZGOUQsIDB4NEMzNCwNCisgICAgMHg2RjlGLCAweDQ2NDcsIDB4NkZBMCwgMHg0MjM1LCAweDZGQTEsIDB4MTU5MSwgMHg2RkEzLCAweDE1OTAsDQorICAgIDB4NkZBNCwgMHgxNTkyLCAweDZGQTUsIDB4NDY0OCwgMHg2RkE3LCAweDM5OTAsIDB4NkZBOCwgMHgzOTkxLA0KKyAgICAweDZGQUEsIDB4MTU5NSwgMHg2RkFFLCAweDRDMzUsIDB4NkZBRiwgMHg0NjQ5LCAweDZGQjEsIDB4MEMzRCwNCisgICAgMHg2RkIzLCAweDE1OEYsIDB4NkZCNSwgMHgyMTUyLCAweDZGQjYsIDB4Mzk5MiwgMHg2RkI3LCAweDRDMzYsDQorICAgIDB4NkZCOSwgMHgxNTkzLCAweDZGQkMsIDB4NDIzNiwgMHg2RkJFLCAweDQ2NDYsIDB4NkZDMCwgMHgwNzM5LA0KKyAgICAweDZGQzEsIDB4MEI1OSwgMHg2RkMyLCAweDE1OEQsIDB4NkZDMywgMHgwQ0YxLCAweDZGQzYsIDB4MTU5NCwNCisgICAgMHg2RkM3LCAweDQyMzcsIDB4NkZDOCwgMHg0NjRCLCAweDZGQzksIDB4NDY0QywgMHg2RkNBLCAweDQyMzgsDQorICAgIDB4NkZENCwgMHgxNTk5LCAweDZGRDUsIDB4MTU5NywgMHg2RkQ4LCAweDE1OUEsIDB4NkZEQSwgMHgzOTkzLA0KKyAgICAweDZGREIsIDB4MTU5RCwgMHg2RkRFLCAweDM5OTQsIDB4NkZERiwgMHgxNTk2LCAweDZGRTAsIDB4MDdGQywNCisgICAgMHg2RkUxLCAweDBDREUsIDB4NkZFNCwgMHgxNTM2LCAweDZGRTksIDB4NDY0RCwgMHg2RkVCLCAweDBGNUUsDQorICAgIDB4NkZFQywgMHgxNTk4LCAweDZGRUUsIDB4MTU5QywgMHg2RkVGLCAweDBCNTUsIDB4NkZGMCwgMHg0MjM5LA0KKyAgICAweDZGRjEsIDB4MTU5QiwgMHg2RkYzLCAweDE1ODYsIDB4NkZGNSwgMHgyMTUzLCAweDZGRjYsIDB4MUJBNCwNCisgICAgMHg2RkY5LCAweDNDMjMsIDB4NkZGQSwgMHgxNUEwLCAweDZGRkMsIDB4NDY0RiwgMHg2RkZFLCAweDE1QTQsDQorICAgIDB4NzAwMCwgMHg0NjUwLCAweDcwMDEsIDB4MTVBMiwgMHg3MDA1LCAweDIxNTQsIDB4NzAwNiwgMHgxRTUwLA0KKyAgICAweDcwMDcsIDB4MjE1NSwgMHg3MDA5LCAweDE1OUUsIDB4NzAwQSwgMHg0NjUxLCAweDcwMEIsIDB4MTU5RiwNCisgICAgMHg3MDBELCAweDRDMzcsIDB4NzAwRiwgMHgxNUEzLCAweDcwMTEsIDB4MTVBMSwgMHg3MDE1LCAweDBEQzAsDQorICAgIDB4NzAxOCwgMHgxNUE5LCAweDcwMUEsIDB4MTVBNiwgMHg3MDFCLCAweDE1QTUsIDB4NzAxRCwgMHgxNUE4LA0KKyAgICAweDcwMUUsIDB4MENBQywgMHg3MDFGLCAweDE1QUEsIDB4NzAyMCwgMHg0QzM4LCAweDcwMjMsIDB4NDY1MiwNCisgICAgMHg3MDI2LCAweDBCQjMsIDB4NzAyNywgMHgwQjRELCAweDcwMjgsIDB4MjE1NiwgMHg3MDJDLCAweDBBNDksDQorICAgIDB4NzAzMCwgMHgxNUFCLCAweDcwMzIsIDB4MTVBRCwgMHg3MDM5LCAweDM5OTYsIDB4NzAzQSwgMHg0NjU0LA0KKyAgICAweDcwM0MsIDB4Mzk5NywgMHg3MDNFLCAweDE1QUMsIDB4NzA0MywgMHg0NjU1LCAweDcwNDcsIDB4NDY1NiwNCisgICAgMHg3MDQ5LCAweDRDMzksIDB4NzA0QSwgMHg0RjUyLCAweDcwNEIsIDB4NDY1NywgMHg3MDRDLCAweDE1NzIsDQorICAgIDB4NzA0RSwgMHg0MjNBLCAweDcwNTEsIDB4MTVBRSwgMHg3MDU0LCAweDM5OTksIDB4NzA1OCwgMHgwQ0JGLA0KKyAgICAweDcwNUQsIDB4Mzk5QSwgMHg3MDVFLCAweDM5OUIsIDB4NzA2MywgMHgxNUFGLCAweDcwNjQsIDB4Mzk5QywNCisgICAgMHg3MDY1LCAweDQ2NTksIDB4NzA2OSwgMHg0NjVBLCAweDcwNkIsIDB4MDU1MCwgMHg3MDZDLCAweDM5OUQsDQorICAgIDB4NzA2RSwgMHg0NjVCLCAweDcwNkYsIDB4MEM2RSwgMHg3MDcwLCAweDA1ODMsIDB4NzA3NSwgMHg0MjNCLA0KKyAgICAweDcwNzYsIDB4NDY1QywgMHg3MDc4LCAweDA2N0UsIDB4NzA3QywgMHgwOTBBLCAweDcwN0QsIDB4MDg0MiwNCisgICAgMHg3MDdFLCAweDM5OUUsIDB4NzA4MSwgMHgzOTlGLCAweDcwODUsIDB4MjE1NywgMHg3MDg2LCAweDQ2NUQsDQorICAgIDB4NzA4OSwgMHgwRkNELCAweDcwOEEsIDB4MEEyQywgMHg3MDhFLCAweDA1MEMsIDB4NzA5MiwgMHgxNUIxLA0KKyAgICAweDcwOTUsIDB4MzlBMCwgMHg3MDk3LCAweDQ2NUUsIDB4NzA5OCwgMHg0QzNBLCAweDcwOTksIDB4MTVCMCwNCisgICAgMHg3MDlGLCAweDQ2NjAsIDB4NzBBNCwgMHg0MjNDLCAweDcwQUIsIDB4MjE1OCwgMHg3MEFDLCAweDE1QjQsDQorICAgIDB4NzBBRCwgMHgwQjc4LCAweDcwQUUsIDB4MTVCNywgMHg3MEFGLCAweDE1QjIsIDB4NzBCMCwgMHg0QzNCLA0KKyAgICAweDcwQjEsIDB4NDY2MSwgMHg3MEIzLCAweDE1QjYsIDB4NzBCNywgMHgzOUExLCAweDcwQjgsIDB4MTVCNSwNCisgICAgMHg3MEI5LCAweDBDM0EsIDB4NzBCQSwgMHgwNDlELCAweDcwQkIsIDB4MjBBRCwgMHg3MEM4LCAweDBGQkQsDQorICAgIDB4NzBDQSwgMHg0NjY0LCAweDcwQ0IsIDB4MTVCOSwgMHg3MENGLCAweDA0Q0EsIDB4NzBEMSwgMHg0NjY1LA0KKyAgICAweDcwRDMsIDB4MzlBMiwgMHg3MEQ0LCAweDM5QTMsIDB4NzBENSwgMHg0QzNDLCAweDcwRDYsIDB4NEMzRCwNCisgICAgMHg3MEQ4LCAweDM5QTQsIDB4NzBEOSwgMHgxNUJCLCAweDcwREMsIDB4MzlBNSwgMHg3MERELCAweDE1QkEsDQorICAgIDB4NzBERiwgMHgxNUI4LCAweDcwRTQsIDB4NDIzRCwgMHg3MEVDLCAweDQ2NjMsIDB4NzBGMSwgMHgxNUIzLA0KKyAgICAweDcwRjksIDB4MEU1MSwgMHg3MEZELCAweDE1QkQsIDB4NzEwMywgMHg0NjY2LCAweDcxMDQsIDB4MjE1QSwNCisgICAgMHg3MTA2LCAweDQ2NjcsIDB4NzEwNywgMHgzOUE2LCAweDcxMDgsIDB4NDY2OCwgMHg3MTA5LCAweDE1QkMsDQorICAgIDB4NzEwQywgMHg0NjY5LCAweDcxMEYsIDB4MjE1OSwgMHg3MTE0LCAweDA1MEQsIDB4NzExOSwgMHgxNUJGLA0KKyAgICAweDcxMUEsIDB4MEUwMiwgMHg3MTFDLCAweDE1QkUsIDB4NzExRSwgMHg0MjNGLCAweDcxMjAsIDB4MzlBNywNCisgICAgMHg3MTIxLCAweDBFQzEsIDB4NzEyNiwgMHgwOUFGLCAweDcxMkIsIDB4NDIzRSwgMHg3MTJFLCAweDQyNDAsDQorICAgIDB4NzEyRiwgMHg0NjZCLCAweDcxMzAsIDB4MUREQywgMHg3MTMxLCAweDM5QTgsIDB4NzEzNiwgMHgwQUI1LA0KKyAgICAweDcxM0MsIDB4MDlBRSwgMHg3MTQ1LCAweDRDM0UsIDB4NzE0NiwgMHgyMTVDLCAweDcxNDcsIDB4MjE1RCwNCisgICAgMHg3MTQ5LCAweDBGQzMsIDB4NzE0QSwgMHgzOUE5LCAweDcxNEMsIDB4MTVDNSwgMHg3MTRFLCAweDBBOUQsDQorICAgIDB4NzE1MCwgMHg0NjZDLCAweDcxNTEsIDB4NDI0MSwgMHg3MTUyLCAweDM5QUEsIDB4NzE1MywgMHg0NjZELA0KKyAgICAweDcxNTUsIDB4MTVDMSwgMHg3MTU2LCAweDE1QzYsIDB4NzE1OSwgMHgwNTBFLCAweDcxNUMsIDB4MjE1QiwNCisgICAgMHg3MTVFLCAweDQ2NkUsIDB4NzE2MCwgMHgzOUFCLCAweDcxNjIsIDB4MTVDNCwgMHg3MTY0LCAweDBEMTcsDQorICAgIDB4NzE2NSwgMHgxNUMwLCAweDcxNjYsIDB4MTVDMywgMHg3MTY3LCAweDA5QjAsIDB4NzE2OCwgMHg0MjQyLA0KKyAgICAweDcxNjksIDB4MEQ2NSwgMHg3MTZDLCAweDE1QzcsIDB4NzE2RSwgMHgwOEZELCAweDcxNzksIDB4MzlBQywNCisgICAgMHg3MTdELCAweDBBOUUsIDB4NzE4MCwgMHg0NjcxLCAweDcxODQsIDB4MTVDQSwgMHg3MTg1LCAweDQyNDMsDQorICAgIDB4NzE4NywgMHg0MjQ0LCAweDcxODgsIDB4MTVDMiwgMHg3MThBLCAweDA2RkQsIDB4NzE4RiwgMHgxNUM4LA0KKyAgICAweDcxOTIsIDB4MzlBRCwgMHg3MTk0LCAweDBGM0EsIDB4NzE5NSwgMHgxNUNCLCAweDcxOTYsIDB4NDY3MCwNCisgICAgMHg3MTk5LCAweDIwNUQsIDB4NzE5QiwgMHg0NjcyLCAweDcxOUYsIDB4MDk1OSwgMHg3MUEwLCAweDQ2NzMsDQorICAgIDB4NzFBMiwgMHg0Njc0LCAweDcxQTgsIDB4MTVDQywgMHg3MUFDLCAweDE1Q0QsIDB4NzFBRSwgMHg0Njc1LA0KKyAgICAweDcxQUYsIDB4NDY3NiwgMHg3MUIxLCAweDBDRTQsIDB4NzFCMiwgMHg0QzNGLCAweDcxQjMsIDB4M0MyNSwNCisgICAgMHg3MUI5LCAweDE1Q0YsIDB4NzFCQSwgMHg0MjQ1LCAweDcxQkUsIDB4MTVEMCwgMHg3MUMxLCAweDIxNUYsDQorICAgIDB4NzFDMywgMHgwQ0U5LCAweDcxQzQsIDB4NDI0NiwgMHg3MUM4LCAweDBDNkYsIDB4NzFDOSwgMHgxNUQyLA0KKyAgICAweDcxQ0IsIDB4MzlBRiwgMHg3MUNFLCAweDE1RDQsIDB4NzFEMCwgMHgwRjlELCAweDcxRDIsIDB4MTVEMSwNCisgICAgMHg3MUQzLCAweDM5QjAsIDB4NzFENCwgMHgxNUQzLCAweDcxRDUsIDB4MDUwRiwgMHg3MUQ2LCAweDM5QjEsDQorICAgIDB4NzFENywgMHgxNUNFLCAweDcxRDksIDB4NDY3OCwgMHg3MURDLCAweDQ2NzksIDB4NzFERiwgMHgxMTRFLA0KKyAgICAweDcxRTAsIDB4MTVENSwgMHg3MUU1LCAweDBBRTksIDB4NzFFNiwgMHgwODg2LCAweDcxRTcsIDB4MTVENywNCisgICAgMHg3MUVDLCAweDE1RDYsIDB4NzFFRCwgMHgwOUVBLCAweDcxRUUsIDB4MTBFRSwgMHg3MUY0LCAweDRDNDAsDQorICAgIDB4NzFGNSwgMHgxNUQ4LCAweDcxRjksIDB4MTVEQSwgMHg3MUZCLCAweDE1QzksIDB4NzFGQywgMHgxNUQ5LA0KKyAgICAweDcxRkUsIDB4MjE2MCwgMHg3MUZGLCAweDE1REIsIDB4NzIwMCwgMHgzOUIyLCAweDcyMDYsIDB4MEQzMCwNCisgICAgMHg3MjA3LCAweDQ2N0EsIDB4NzIwRCwgMHgxNURDLCAweDcyMTAsIDB4MTVERCwgMHg3MjE1LCAweDQyNDcsDQorICAgIDB4NzIxNywgMHg0QzQxLCAweDcyMUIsIDB4MTVERSwgMHg3MjFELCAweDM5QjMsIDB4NzIxRiwgMHg0QzQyLA0KKyAgICAweDcyMjgsIDB4MTVERiwgMHg3MjJBLCAweDBCRkEsIDB4NzIyQiwgMHgzOUI0LCAweDcyMkMsIDB4MTVFMSwNCisgICAgMHg3MjJELCAweDE1RTAsIDB4NzIzMCwgMHgxNUUyLCAweDcyMzIsIDB4MTVFMywgMHg3MjM0LCAweDQ2N0MsDQorICAgIDB4NzIzNSwgMHgwOTBCLCAweDcyMzYsIDB4MERENSwgMHg3MjM4LCAweDM5QjUsIDB4NzIzOSwgMHg0NjdELA0KKyAgICAweDcyM0EsIDB4MEVGOCwgMHg3MjNCLCAweDE1RTQsIDB4NzIzQywgMHgxNUU1LCAweDcyM0QsIDB4MEFEOCwNCisgICAgMHg3MjNFLCAweDA4RDAsIDB4NzIzRiwgMHgxNUU2LCAweDcyNDAsIDB4MTVFNywgMHg3MjQxLCAweDM5QjYsDQorICAgIDB4NzI0MiwgMHg0NjdFLCAweDcyNDMsIDB4NEM0MywgMHg3MjQ2LCAweDE1RTgsIDB4NzI0NywgMHgwRTIyLA0KKyAgICAweDcyNDgsIDB4MEQ1QiwgMHg3MjRCLCAweDE1RTksIDB4NzI0QywgMHgwRDBELCAweDcyNEYsIDB4NEM0NCwNCisgICAgMHg3MjUwLCAweDRDNDUsIDB4NzI1MiwgMHgwQkM5LCAweDcyNTMsIDB4MzlCNywgMHg3MjU1LCAweDM5QjgsDQorICAgIDB4NzI1NiwgMHgzOUI5LCAweDcyNTcsIDB4NDY3RiwgMHg3MjU4LCAweDE1RUEsIDB4NzI1OSwgMHgwNTY3LA0KKyAgICAweDcyNUEsIDB4NEM0NiwgMHg3MjVCLCAweDA2ODcsIDB4NzI1QywgMHgzOUJBLCAweDcyNUQsIDB4MEVEMiwNCisgICAgMHg3MjVGLCAweDBFQzIsIDB4NzI2MCwgMHg0QzQ3LCAweDcyNjEsIDB4MDUzNCwgMHg3MjYyLCAweDBGREEsDQorICAgIDB4NzI2MywgMHg0NjgwLCAweDcyNjcsIDB4MEU4MCwgMHg3MjY4LCAweDRDNDgsIDB4NzI2OSwgMHgwREZBLA0KKyAgICAweDcyNkUsIDB4NDY4MiwgMHg3MjZGLCAweDQ2ODMsIDB4NzI3MiwgMHgwQTVCLCAweDcyNzQsIDB4MTVFQiwNCisgICAgMHg3Mjc3LCAweDRDNDksIDB4NzI3OCwgMHg0Njg0LCAweDcyNzksIDB4MEM5QiwgMHg3MjdELCAweDA3NTcsDQorICAgIDB4NzI3RSwgMHgxNUVDLCAweDcyN0YsIDB4NDY4NSwgMHg3MjgwLCAweDA4NDQsIDB4NzI4MSwgMHgxNUVFLA0KKyAgICAweDcyODIsIDB4MTVFRCwgMHg3Mjg0LCAweDRDNEEsIDB4NzI4NywgMHgxNUVGLCAweDcyOEQsIDB4MzlCQiwNCisgICAgMHg3MjhFLCAweDQ2ODYsIDB4NzI5MiwgMHgxNUYwLCAweDcyOTYsIDB4MTVGMSwgMHg3MjlCLCAweDQyNDksDQorICAgIDB4NzJBMCwgMHgwNjU4LCAweDcyQTIsIDB4MTVGMiwgMHg3MkE3LCAweDE1RjMsIDB4NzJBQywgMHgwNzU4LA0KKyAgICAweDcyQUQsIDB4MzlCQywgMHg3MkFFLCAweDQ2ODgsIDB4NzJBRiwgMHgwRDVDLCAweDcyQjAsIDB4NDY4OSwNCisgICAgMHg3MkIxLCAweDIxNjEsIDB4NzJCMiwgMHgxNUY1LCAweDcyQjQsIDB4MzlCRCwgMHg3MkI2LCAweDA5REQsDQorICAgIDB4NzJCOSwgMHgxNUY0LCAweDcyQkUsIDB4MjE2MiwgMHg3MkMwLCAweDM0MkIsIDB4NzJDMSwgMHg0NjhBLA0KKyAgICAweDcyQzIsIDB4MDZCMCwgMHg3MkMzLCAweDE1RjYsIDB4NzJDNCwgMHgxNUY4LCAweDcyQzYsIDB4MTVGNywNCisgICAgMHg3MkM3LCAweDM5QkUsIDB4NzJDOSwgMHg0QzRCLCAweDcyQ0MsIDB4NDY4QywgMHg3MkNFLCAweDE1RjksDQorICAgIDB4NzJEMCwgMHgwNzg1LCAweDcyRDIsIDB4MTVGQSwgMHg3MkQ3LCAweDA2RTEsIDB4NzJEOSwgMHgwQUMyLA0KKyAgICAweDcyREIsIDB4MDgwRiwgMHg3MkUwLCAweDE1RkMsIDB4NzJFMSwgMHgxNUZELCAweDcyRTIsIDB4MTVGQiwNCisgICAgMHg3MkU1LCAweDRDNEMsIDB4NzJFOSwgMHgwOTE5LCAweDcyRUMsIDB4MENBMCwgMHg3MkVELCAweDA2QjEsDQorICAgIDB4NzJGMywgMHg0NjhGLCAweDcyRjQsIDB4NEM0RCwgMHg3MkY3LCAweDE1RkYsIDB4NzJGOCwgMHgwQjZBLA0KKyAgICAweDcyRjksIDB4MTVGRSwgMHg3MkZBLCAweDQ2OTAsIDB4NzJGQiwgMHgzOUJGLCAweDcyRkMsIDB4MEZEQiwNCisgICAgMHg3MkZELCAweDBEMTgsIDB4NzMwMiwgMHg0QzRFLCAweDczMDQsIDB4MzlDMCwgMHg3MzA1LCAweDM5QzEsDQorICAgIDB4NzMwNywgMHg0NjkxLCAweDczMEEsIDB4MTYwMiwgMHg3MzBCLCAweDRDNEYsIDB4NzMxMiwgMHg0NjkyLA0KKyAgICAweDczMTYsIDB4MTYwNCwgMHg3MzE3LCAweDE2MDEsIDB4NzMxOCwgMHg0NjkzLCAweDczMTksIDB4NDY5NCwNCisgICAgMHg3MzFCLCAweDBFRTAsIDB4NzMxQywgMHgxNjAzLCAweDczMUQsIDB4MTYwNSwgMHg3MzFFLCAweDRDNTAsDQorICAgIDB4NzMxRiwgMHgwRjhDLCAweDczMjIsIDB4NEM1MSwgMHg3MzI0LCAweDIxNjMsIDB4NzMyNSwgMHgxNjA5LA0KKyAgICAweDczMjcsIDB4NDI0QiwgMHg3MzI4LCAweDM5QzIsIDB4NzMyOSwgMHgxNjA4LCAweDczMkEsIDB4MEJCNCwNCisgICAgMHg3MzJCLCAweDBDRTMsIDB4NzMyQywgMHg0Njk3LCAweDczMkUsIDB4MDc1OSwgMHg3MzJGLCAweDE2MDcsDQorICAgIDB4NzMzMSwgMHgzOUMzLCAweDczMzMsIDB4NDY5OCwgMHg3MzM0LCAweDE2MDYsIDB4NzMzNiwgMHgwRjFCLA0KKyAgICAweDczMzcsIDB4MEYxQywgMHg3MzM5LCAweDQ2OTYsIDB4NzMzQSwgMHg0QzUyLCAweDczM0IsIDB4NEM1MywNCisgICAgMHg3MzNELCAweDQ2OTksIDB4NzMzRSwgMHgxNjBBLCAweDczM0YsIDB4MDUxMCwgMHg3MzQzLCAweDM5QzQsDQorICAgIDB4NzM0NCwgMHgwODA4LCAweDczNDUsIDB4MDhCMCwgMHg3MzRELCAweDRDNTQsIDB4NzM0RSwgMHgxNjBCLA0KKyAgICAweDczNEYsIDB4MTYwQywgMHg3MzUwLCAweDQyNEMsIDB4NzM1MiwgMHg0NjlBLCAweDczNTcsIDB4MTYwRSwNCisgICAgMHg3MzU4LCAweDRDNTUsIDB4NzM2MywgMHgwOTRELCAweDczNjYsIDB4NDI0RCwgMHg3MzY3LCAweDRDNTYsDQorICAgIDB4NzM2OCwgMHgxNjEwLCAweDczNkEsIDB4MTYwRiwgMHg3MzZCLCAweDQ2OUMsIDB4NzM2QywgMHgzOUM1LA0KKyAgICAweDczNkUsIDB4NDY5RSwgMHg3MzZGLCAweDQ2OUYsIDB4NzM3MCwgMHgxNjExLCAweDczNzEsIDB4NDZBMCwNCisgICAgMHg3MzcyLCAweDA1QUIsIDB4NzM3NSwgMHgxNjEzLCAweDczNzcsIDB4MjE2NSwgMHg3Mzc4LCAweDE2MTIsDQorICAgIDB4NzM3QSwgMHgxNjE1LCAweDczN0IsIDB4MTYxNCwgMHg3MzdDLCAweDM5QzYsIDB4NzM4MSwgMHg0NkExLA0KKyAgICAweDczODMsIDB4MzlDNywgMHg3Mzg0LCAweDA3NzAsIDB4NzM4NSwgMHgzOUM4LCAweDczODYsIDB4MzlDOSwNCisgICAgMHg3Mzg3LCAweDBGNzAsIDB4NzM4OSwgMHgwNkM0LCAweDczOEEsIDB4NDZBMiwgMHg3MzhCLCAweDA1MjYsDQorICAgIDB4NzM5NCwgMHg0NkEzLCAweDczOTUsIDB4MzlDQSwgMHg3Mzk2LCAweDA2RTIsIDB4NzM5OCwgMHg0NkE0LA0KKyAgICAweDczOUMsIDB4NDZBNSwgMHg3MzlFLCAweDM5Q0IsIDB4NzM5RiwgMHgzOUNDLCAweDczQTAsIDB4MzlDRCwNCisgICAgMHg3M0EyLCAweDQyNEUsIDB4NzNBNSwgMHg0NkE2LCAweDczQTYsIDB4MzlDRSwgMHg3M0E4LCAweDNDM0YsDQorICAgIDB4NzNBOSwgMHgwNjFELCAweDczQUIsIDB4MzlDRiwgMHg3M0IyLCAweDBGQjAsIDB4NzNCMywgMHgxNjE3LA0KKyAgICAweDczQjUsIDB4MzlEMCwgMHg3M0I3LCAweDM5RDEsIDB4NzNCOSwgMHg0NkE3LCAweDczQkEsIDB4MzVFQSwNCisgICAgMHg3M0JCLCAweDE2MTksIDB4NzNCQywgMHgzOUQyLCAweDczQkQsIDB4MjE2NiwgMHg3M0JGLCAweDQ2QTgsDQorICAgIDB4NzNDMCwgMHgxNjFBLCAweDczQzIsIDB4MDU1MSwgMHg3M0M1LCAweDQ2QTksIDB4NzNDOCwgMHgxNjE2LA0KKyAgICAweDczQzksIDB4MjE2NywgMHg3M0NBLCAweDA4ODcsIDB4NzNDQiwgMHg0NkFBLCAweDczQ0QsIDB4MEJERCwNCisgICAgMHg3M0NFLCAweDE2MTgsIDB4NzNDRiwgMHgzOUQzLCAweDczRDIsIDB4MjE2QSwgMHg3M0Q2LCAweDIxNjgsDQorICAgIDB4NzNEOSwgMHgzOUQ0LCAweDczREUsIDB4MTYxRCwgMHg3M0UwLCAweDA5MUEsIDB4NzNFMSwgMHg0NkFCLA0KKyAgICAweDczRTMsIDB4MjE2OSwgMHg3M0U0LCAweDNDMzksIDB4NzNFNSwgMHgxNjFCLCAweDczRTcsIDB4NDZBQywNCisgICAgMHg3M0U5LCAweDM5RDUsIDB4NzNFQSwgMHgwNzE0LCAweDczRUQsIDB4MEQ1RCwgMHg3M0VFLCAweDE2MUMsDQorICAgIDB4NzNGMSwgMHgxNjM3LCAweDczRjQsIDB4MzlENiwgMHg3M0Y1LCAweDIxNkMsIDB4NzNGOCwgMHgxNjIyLA0KKyAgICAweDczRjksIDB4NDZBRCwgMHg3M0ZBLCAweDQ2QUYsIDB4NzNGRCwgMHgzOUQ3LCAweDczRkUsIDB4MDc3MSwNCisgICAgMHg3NDAxLCAweDQ2QjAsIDB4NzQwMywgMHgwNjdGLCAweDc0MDQsIDB4MzlEOCwgMHg3NDA1LCAweDE2MUYsDQorICAgIDB4NzQwNiwgMHgwRjY3LCAweDc0MDcsIDB4MjE2QiwgMHg3NDA5LCAweDBGNzgsIDB4NzQwQSwgMHgzOUQ5LA0KKyAgICAweDc0MTMsIDB4NDZBRSwgMHg3NDFBLCAweDM5REEsIDB4NzQxQiwgMHgzOURCLCAweDc0MjEsIDB4M0MzQSwNCisgICAgMHg3NDIyLCAweDBCNTYsIDB4NzQyNCwgMHgzOURDLCAweDc0MjUsIDB4MTYyMSwgMHg3NDI2LCAweDIxNkQsDQorICAgIDB4NzQyOCwgMHgzOURELCAweDc0MjksIDB4MjE2RiwgMHg3NDJBLCAweDIxNkUsIDB4NzQyQiwgMHg0MjRGLA0KKyAgICAweDc0MkMsIDB4MzlERSwgMHg3NDJFLCAweDIxNzAsIDB4NzQyRiwgMHgzOURGLCAweDc0MzAsIDB4MzlFMCwNCisgICAgMHg3NDMxLCAweDM5RTEsIDB4NzQzMiwgMHgxNjIzLCAweDc0MzMsIDB4MEY5RSwgMHg3NDM0LCAweDA2Q0YsDQorICAgIDB4NzQzNSwgMHgwRDkwLCAweDc0MzYsIDB4MEQwMCwgMHg3NDM5LCAweDM5RTIsIDB4NzQzQSwgMHgxNjI0LA0KKyAgICAweDc0M0YsIDB4MTYyNiwgMHg3NDQwLCAweDQ2QjIsIDB4NzQ0MSwgMHgxNjI5LCAweDc0NDMsIDB4NDZCMywNCisgICAgMHg3NDQ0LCAweDM5RTMsIDB4NzQ0NiwgMHg0MjUwLCAweDc0NDcsIDB4MzlFNCwgMHg3NDRCLCAweDM5RTUsDQorICAgIDB4NzQ0RCwgMHgzOUU2LCAweDc0NTEsIDB4MzlFNywgMHg3NDUyLCAweDQ2QjQsIDB4NzQ1MywgMHg0NkIxLA0KKyAgICAweDc0NTUsIDB4MTYyNSwgMHg3NDU3LCAweDM5RTgsIDB4NzQ1OSwgMHgxNjI4LCAweDc0NUEsIDB4MDc5RSwNCisgICAgMHg3NDVCLCAweDA0RUYsIDB4NzQ1QywgMHgxNjJBLCAweDc0NUQsIDB4NDZCNSwgMHg3NDVFLCAweDBBMzYsDQorICAgIDB4NzQ1RiwgMHgxNjI3LCAweDc0NjAsIDB4MEZBNCwgMHg3NDYyLCAweDQyNTEsIDB4NzQ2MywgMHgxNjJELA0KKyAgICAweDc0NjQsIDB4MUQzNSwgMHg3NDY2LCAweDM5RTksIDB4NzQ2OSwgMHgxNjJCLCAweDc0NkEsIDB4MTYyRSwNCisgICAgMHg3NDZCLCAweDM5RUEsIDB4NzQ2RCwgMHg0MjUyLCAweDc0NkYsIDB4MTYyMCwgMHg3NDcwLCAweDE2MkMsDQorICAgIDB4NzQ3MSwgMHgzOUVCLCAweDc0NzIsIDB4NEM1NywgMHg3NDczLCAweDA4MkMsIDB4NzQ3NiwgMHgxNjJGLA0KKyAgICAweDc0N0UsIDB4MTYzMCwgMHg3NDgwLCAweDM5RUMsIDB4NzQ4MSwgMHg0NkI2LCAweDc0ODMsIDB4MEY2OCwNCisgICAgMHg3NDg1LCAweDM5RUQsIDB4NzQ4NiwgMHgzOUVFLCAweDc0ODcsIDB4MzlFRiwgMHg3NDg4LCAweDQ2QjcsDQorICAgIDB4NzQ4OSwgMHgyMTcyLCAweDc0OEIsIDB4MTYzMSwgMHg3NDkwLCAweDM5RjAsIDB4NzQ5MiwgMHg0NkI5LA0KKyAgICAweDc0OTcsIDB4NDZCQSwgMHg3NDk4LCAweDM5RjEsIDB4NzQ5OSwgMHg0NkJCLCAweDc0OUMsIDB4MzlGMiwNCisgICAgMHg3NDlFLCAweDE2MzIsIDB4NzQ5RiwgMHgyMTczLCAweDc0QTAsIDB4MzlGMywgMHg3NEExLCAweDQ2QkMsDQorICAgIDB4NzRBMiwgMHgxNjFFLCAweDc0QTMsIDB4MzlGNCwgMHg3NEE1LCAweDQ2QkQsIDB4NzRBNiwgMHg0MjUzLA0KKyAgICAweDc0QTcsIDB4MTYzMywgMHg3NEE4LCAweDM5RjUsIDB4NzRBOSwgMHg0MjU0LCAweDc0QUEsIDB4NDZCRSwNCisgICAgMHg3NEFCLCAweDM5RjYsIDB4NzRBRiwgMHg0QzU4LCAweDc0QjAsIDB4MDYwMCwgMHg3NEI1LCAweDM5RjcsDQorICAgIDB4NzRCOSwgMHg0NkJGLCAweDc0QkEsIDB4NDZDMSwgMHg3NEJCLCAweDQ2QzAsIDB4NzRCRCwgMHgwOEQxLA0KKyAgICAweDc0QkYsIDB4MzlGOCwgMHg3NEM4LCAweDM5RjksIDB4NzRDOSwgMHg0MjU1LCAweDc0Q0EsIDB4MTYzNCwNCisgICAgMHg3NENGLCAweDE2MzUsIDB4NzRENCwgMHgxNjM2LCAweDc0RDYsIDB4NDZDMiwgMHg3NEQ4LCAweDQ2QzMsDQorICAgIDB4NzREQSwgMHgzOUZBLCAweDc0REMsIDB4MDRERCwgMHg3NERFLCAweDM5RkIsIDB4NzRERiwgMHg0QzU5LA0KKyAgICAweDc0RTAsIDB4MTYzOCwgMHg3NEUyLCAweDBEQUQsIDB4NzRFMywgMHgxNjM5LCAweDc0RTQsIDB4NEM1QSwNCisgICAgMHg3NEU2LCAweDA1RTAsIDB4NzRFNywgMHgxNjNBLCAweDc0RTksIDB4MTYzQiwgMHg3NEVCLCAweDQ2QzQsDQorICAgIDB4NzRFRSwgMHgxNjNDLCAweDc0RUYsIDB4Mzc1MCwgMHg3NEYwLCAweDE2M0UsIDB4NzRGMSwgMHgxNjNGLA0KKyAgICAweDc0RjIsIDB4MTYzRCwgMHg3NEY0LCAweDRDNUIsIDB4NzRGNiwgMHgwREM1LCAweDc0RjcsIDB4MTY0MSwNCisgICAgMHg3NEY4LCAweDE2NDAsIDB4NzRGQSwgMHg0NkM2LCAweDc0RkIsIDB4NEM1QywgMHg3NEZGLCAweDQyNTYsDQorICAgIDB4NzUwMSwgMHgyMTc0LCAweDc1MDMsIDB4MTY0MywgMHg3NTA0LCAweDE2NDIsIDB4NzUwNSwgMHgxNjQ0LA0KKyAgICAweDc1MEMsIDB4MTY0NSwgMHg3NTBELCAweDE2NDcsIDB4NzUwRSwgMHgxNjQ2LCAweDc1MTEsIDB4MDgwQiwNCisgICAgMHg3NTEzLCAweDE2NDksIDB4NzUxNSwgMHgxNjQ4LCAweDc1MTYsIDB4NEM1RCwgMHg3NTE3LCAweDQyNTcsDQorICAgIDB4NzUxOCwgMHgwNjAxLCAweDc1MUEsIDB4MEExOSwgMHg3NTFDLCAweDBDMzYsIDB4NzUxRSwgMHgxNjRBLA0KKyAgICAweDc1MUYsIDB4MEE1QywgMHg3NTIwLCAweDQ2QzgsIDB4NzUyMSwgMHg0QzVFLCAweDc1MjIsIDB4MzVERSwNCisgICAgMHg3NTIzLCAweDA4ODgsIDB4NzUyNCwgMHg0NkM5LCAweDc1MjUsIDB4MDUxQiwgMHg3NTI2LCAweDE2NEIsDQorICAgIDB4NzUyOCwgMHgwRjNCLCAweDc1MkEsIDB4NDZDQSwgMHg3NTJCLCAweDBFMzMsIDB4NzUyQywgMHgxNjRDLA0KKyAgICAweDc1MkYsIDB4MjBGMiwgMHg3NTMwLCAweDBDM0UsIDB4NzUzMSwgMHgwRjFELCAweDc1MzIsIDB4MDdENSwNCisgICAgMHg3NTMzLCAweDBBMDMsIDB4NzUzNywgMHgwQjg5LCAweDc1MzgsIDB4MTBDOSwgMHg3NTNBLCAweDBCQ0EsDQorICAgIDB4NzUzQiwgMHgwNTY4LCAweDc1M0MsIDB4MTY0RCwgMHg3NTNELCAweDQ2Q0QsIDB4NzUzRSwgMHg0NkNFLA0KKyAgICAweDc1M0YsIDB4NEM1RiwgMHg3NTQwLCAweDQ2Q0YsIDB4NzU0NCwgMHgxNjRFLCAweDc1NDYsIDB4MTY1MywNCisgICAgMHg3NTQ4LCAweDQ2RDAsIDB4NzU0OSwgMHgxNjUxLCAweDc1NEEsIDB4MTY1MCwgMHg3NTRCLCAweDEzQzcsDQorICAgIDB4NzU0QywgMHgwNTg0LCAweDc1NEQsIDB4MTY0RiwgMHg3NTRFLCAweDM5RkMsIDB4NzU0RiwgMHgwNDlFLA0KKyAgICAweDc1NTAsIDB4NDZEMSwgMHg3NTUxLCAweDBEM0UsIDB4NzU1MiwgMHg0NkQyLCAweDc1NTQsIDB4MEQ1RSwNCisgICAgMHg3NTU5LCAweDBGNzksIDB4NzU1QSwgMHgxNjU0LCAweDc1NUIsIDB4MTY1MiwgMHg3NTVDLCAweDBCOUEsDQorICAgIDB4NzU1RCwgMHgwQTRBLCAweDc1NUUsIDB4NEM2MCwgMHg3NTYwLCAweDBEM0YsIDB4NzU2MiwgMHgwRDlGLA0KKyAgICAweDc1NjQsIDB4MTY1NiwgMHg3NTY1LCAweDBGNzQsIDB4NzU2NiwgMHgwNzIzLCAweDc1NjcsIDB4MTY1NywNCisgICAgMHg3NTY5LCAweDE2NTUsIDB4NzU2QSwgMHgwRDZBLCAweDc1NkIsIDB4MTY1OCwgMHg3NTZDLCAweDNDM0IsDQorICAgIDB4NzU2RCwgMHgxNjU5LCAweDc1NkYsIDB4MjE3NSwgMHg3NTcwLCAweDA0OUYsIDB4NzU3MSwgMHg0NkQ0LA0KKyAgICAweDc1NzIsIDB4NDZEMywgMHg3NTczLCAweDA5REUsIDB4NzU3NCwgMHgxNjVFLCAweDc1NzUsIDB4Mzc1MSwNCisgICAgMHg3NTc2LCAweDE2NUIsIDB4NzU3NywgMHgwQ0M1LCAweDc1NzgsIDB4MTY1QSwgMHg3NTc5LCAweDM5RkQsDQorICAgIDB4NzU3QSwgMHg0NkQ1LCAweDc1N0QsIDB4NDZENiwgMHg3NTdFLCAweDQ2RDcsIDB4NzU3RiwgMHgwNjQwLA0KKyAgICAweDc1ODEsIDB4MzlGRSwgMHg3NTgyLCAweDE2NjEsIDB4NzU4NiwgMHgxNjVDLCAweDc1ODcsIDB4MTY1RCwNCisgICAgMHg3NTg5LCAweDE2NjAsIDB4NzU4QSwgMHgxNjVGLCAweDc1OEIsIDB4MEQ5NywgMHg3NThDLCAweDQ2RDgsDQorICAgIDB4NzU4RSwgMHgwQUM0LCAweDc1OEYsIDB4MEFDMywgMHg3NTkwLCAweDM5RkYsIDB4NzU5MSwgMHgwNjU5LA0KKyAgICAweDc1OTIsIDB4M0EwMCwgMHg3NTkzLCAweDNBMDEsIDB4NzU5NCwgMHgxNjYyLCAweDc1OTksIDB4NEM2MSwNCisgICAgMHg3NTlBLCAweDE2NjMsIDB4NzU5RCwgMHgxNjY0LCAweDc1QTIsIDB4NDZEQSwgMHg3NUEzLCAweDE2NjYsDQorICAgIDB4NzVBNCwgMHg0QzYyLCAweDc1QTUsIDB4MTY2NSwgMHg3NUFCLCAweDA0RjgsIDB4NzVCMCwgMHg0NkRDLA0KKyAgICAweDc1QjEsIDB4MTY2RSwgMHg3NUIyLCAweDBEN0MsIDB4NzVCMywgMHgxNjY4LCAweDc1QjQsIDB4M0EwMiwNCisgICAgMHg3NUI1LCAweDE2NkEsIDB4NzVCNywgMHg0NkRELCAweDc1QjgsIDB4MTY2QywgMHg3NUI5LCAweDBBMDQsDQorICAgIDB4NzVCQywgMHgxNjZELCAweDc1QkQsIDB4MTY2QiwgMHg3NUJFLCAweDA4RUMsIDB4NzVCRiwgMHg0NkRFLA0KKyAgICAweDc1QzAsIDB4NDZERiwgMHg3NUMxLCAweDRDNjMsIDB4NzVDMiwgMHgxNjY3LCAweDc1QzMsIDB4MTY2OSwNCisgICAgMHg3NUM0LCAweDRDNjQsIDB4NzVDNSwgMHgwREI0LCAweDc1QzYsIDB4NDZFMCwgMHg3NUM3LCAweDA5QjEsDQorICAgIDB4NzVDQSwgMHgxNjcwLCAweDc1Q0MsIDB4NEM2NSwgMHg3NUNELCAweDE2NkYsIDB4NzVDRSwgMHg0MjU5LA0KKyAgICAweDc1Q0YsIDB4NDZFMSwgMHg3NUQyLCAweDE2NzEsIDB4NzVEMywgMHg0NkUyLCAweDc1RDQsIDB4MDhEMiwNCisgICAgMHg3NUQ1LCAweDA4MUYsIDB4NzVENywgMHg0QzY2LCAweDc1RDgsIDB4MEM3MSwgMHg3NUQ5LCAweDE2NzIsDQorICAgIDB4NzVEQiwgMHgwQkU3LCAweDc1REMsIDB4NEM2NywgMHg3NURELCAweDQ2RTMsIDB4NzVERSwgMHgxNjc0LA0KKyAgICAweDc1REYsIDB4NDZFNCwgMHg3NUUwLCAweDQ2RTUsIDB4NzVFMSwgMHg0QzY4LCAweDc1RTIsIDB4MEY2OSwNCisgICAgMHg3NUUzLCAweDE2NzMsIDB4NzVFNCwgMHgzQTAzLCAweDc1RTcsIDB4NDZFNiwgMHg3NUU5LCAweDBBRUIsDQorICAgIDB4NzVFQywgMHgzNzUyLCAweDc1RUUsIDB4NDZFNywgMHg3NUVGLCAweDRDNjksIDB4NzVGMCwgMHgxNjc5LA0KKyAgICAweDc1RjEsIDB4NDZFOCwgMHg3NUYyLCAweDE2N0IsIDB4NzVGMywgMHgxNjdDLCAweDc1RjQsIDB4MEI5MiwNCisgICAgMHg3NUY5LCAweDNBMDQsIDB4NzVGQSwgMHgxNjdBLCAweDc1RkMsIDB4MTY3NywgMHg3NUZFLCAweDE2NzUsDQorICAgIDB4NzVGRiwgMHgxNjc2LCAweDc2MDAsIDB4M0EwNSwgMHg3NjAxLCAweDE2NzgsIDB4NzYwMiwgMHg0MjVBLA0KKyAgICAweDc2MDMsIDB4NDZFOSwgMHg3NjA0LCAweDRDNkEsIDB4NzYwNywgMHg0NkVCLCAweDc2MDgsIDB4NDI1QiwNCisgICAgMHg3NjA5LCAweDE2N0YsIDB4NzYwQSwgMHgzQTA2LCAweDc2MEIsIDB4MTY3RCwgMHg3NjBDLCAweDRDNkIsDQorICAgIDB4NzYwRCwgMHgxNjdFLCAweDc2MEYsIDB4NDZFQywgMHg3NjEzLCAweDQ2RUYsIDB4NzYxNSwgMHgzQTA3LA0KKyAgICAweDc2MTYsIDB4M0EwOCwgMHg3NjE4LCAweDQ2RUEsIDB4NzYxOSwgMHgzQTA5LCAweDc2MUIsIDB4NDZGMCwNCisgICAgMHg3NjFDLCAweDQ2RjEsIDB4NzYxRCwgMHg0QzZDLCAweDc2MUUsIDB4M0EwQSwgMHg3NjFGLCAweDE2ODAsDQorICAgIDB4NzYyMCwgMHgxNjgyLCAweDc2MjEsIDB4MTY4MywgMHg3NjIyLCAweDE2ODQsIDB4NzYyNCwgMHgxNjg1LA0KKyAgICAweDc2MjUsIDB4NDZGMywgMHg3NjI2LCAweDM2NDUsIDB4NzYyNywgMHgxNjgxLCAweDc2MjgsIDB4NDZGNCwNCisgICAgMHg3NjJELCAweDNBMEIsIDB4NzYzMCwgMHgxNjg3LCAweDc2MzIsIDB4NEM2RCwgMHg3NjMzLCAweDQ2RjYsDQorICAgIDB4NzYzNCwgMHgxNjg2LCAweDc2MzUsIDB4M0EwQywgMHg3NjM4LCAweDRDNkUsIDB4NzYzQiwgMHgxNjg4LA0KKyAgICAweDc2M0MsIDB4NDZGNSwgMHg3NjQxLCAweDQ2RjksIDB4NzY0MiwgMHgwRjhELCAweDc2NDMsIDB4M0EwRCwNCisgICAgMHg3NjQ1LCAweDRDNkYsIDB4NzY0NiwgMHgxNjhCLCAweDc2NDcsIDB4MTY4OSwgMHg3NjQ4LCAweDE2OEEsDQorICAgIDB4NzY0OSwgMHg0NkZCLCAweDc2NEEsIDB4NEM3MCwgMHg3NjRCLCAweDNBMEUsIDB4NzY0QywgMHgwNjFFLA0KKyAgICAweDc2NEUsIDB4Mzc1MywgMHg3NjUyLCAweDBGMEEsIDB4NzY1NSwgMHg0NkZDLCAweDc2NTYsIDB4MEUxQSwNCisgICAgMHg3NjU4LCAweDE2OEQsIDB4NzY1QywgMHgxNjhDLCAweDc2NUYsIDB4NEM3MSwgMHg3NjYxLCAweDE2OEUsDQorICAgIDB4NzY2MiwgMHgxNjhGLCAweDc2NjQsIDB4NDI1QywgMHg3NjY1LCAweDNBMEYsIDB4NzY2NywgMHgxNjkzLA0KKyAgICAweDc2NjgsIDB4MTY5MCwgMHg3NjY5LCAweDE2OTEsIDB4NzY2QSwgMHgxNjkyLCAweDc2NkMsIDB4MTY5NCwNCisgICAgMHg3NjZELCAweDNBMTAsIDB4NzY2RSwgMHg0NkZFLCAweDc2NkYsIDB4M0ExMSwgMHg3NjcwLCAweDE2OTUsDQorICAgIDB4NzY3MSwgMHgzQTEyLCAweDc2NzIsIDB4MTY5NiwgMHg3Njc0LCAweDNBMTMsIDB4NzY3NiwgMHgxNjk3LA0KKyAgICAweDc2NzgsIDB4MTY5OCwgMHg3NjdBLCAweDBENDMsIDB4NzY3QiwgMHgwQzRBLCAweDc2N0MsIDB4MTY5OSwNCisgICAgMHg3NjdELCAweDBEMjgsIDB4NzY3RSwgMHgwREE2LCAweDc2ODAsIDB4MTY5QSwgMHg3NjgxLCAweDQyNUQsDQorICAgIDB4NzY4MiwgMHgyMTc2LCAweDc2ODMsIDB4MTY5QiwgMHg3Njg0LCAweDBDMjQsIDB4NzY4NiwgMHgwNTg1LA0KKyAgICAweDc2ODcsIDB4MDdENiwgMHg3Njg4LCAweDE2OUMsIDB4NzY4QiwgMHgxNjlELCAweDc2OEUsIDB4MTY5RSwNCisgICAgMHg3NjkwLCAweDA4NzcsIDB4NzY5MywgMHgxNkEwLCAweDc2OTUsIDB4NDZGRiwgMHg3Njk2LCAweDE2OUYsDQorICAgIDB4NzY5OSwgMHgxNkExLCAweDc2OUEsIDB4MTZBMiwgMHg3NjlCLCAweDIxNzksIDB4NzY5QywgMHgyMTc3LA0KKyAgICAweDc2OUQsIDB4NDI1RSwgMHg3NjlFLCAweDIxNzgsIDB4NzZBMCwgMHg0NzAxLCAweDc2QTEsIDB4NDcwMCwNCisgICAgMHg3NkE0LCAweDNBMTQsIDB4NzZBNSwgMHgzQTE1LCAweDc2QTYsIDB4MjE3QSwgMHg3NkE3LCAweDQ3MDIsDQorICAgIDB4NzZBOCwgMHg0NzAzLCAweDc2QUEsIDB4NDI1RiwgMHg3NkFELCAweDRDNzIsIDB4NzZBRSwgMHgwRDdELA0KKyAgICAweDc2QUYsIDB4NDcwNCwgMHg3NkIwLCAweDE2QTMsIDB4NzZCNCwgMHgxNkE0LCAweDc2QjYsIDB4NDI2MCwNCisgICAgMHg3NkI3LCAweDFEMUMsIDB4NzZCOCwgMHgxNkE1LCAweDc2QjksIDB4MTZBNiwgMHg3NkJBLCAweDE2QTcsDQorICAgIDB4NzZCRCwgMHg0QzczLCAweDc2QkYsIDB4MDg3QywgMHg3NkMyLCAweDE2QTgsIDB4NzZDMywgMHgwRDBDLA0KKyAgICAweDc2QzUsIDB4M0ExNiwgMHg3NkM2LCAweDBFOEQsIDB4NzZDOCwgMHgwNEYwLCAweDc2QzksIDB4NDcwNiwNCisgICAgMHg3NkNBLCAweDA0RjksIDB4NzZDQywgMHgzQTE3LCAweDc2Q0QsIDB4MTZBOSwgMHg3NkNFLCAweDQyNjEsDQorICAgIDB4NzZEMiwgMHgxNkFCLCAweDc2RDQsIDB4NDI2MiwgMHg3NkQ2LCAweDE2QUEsIDB4NzZENywgMHgwQzZBLA0KKyAgICAweDc2RDksIDB4NEM3NCwgMHg3NkRCLCAweDBBNUQsIDB4NzZEQywgMHgxNEQ4LCAweDc2REUsIDB4MTZBQywNCisgICAgMHg3NkRGLCAweDBFQ0QsIDB4NzZFMSwgMHgxNkFELCAweDc2RTMsIDB4MDYwMiwgMHg3NkU0LCAweDBENkIsDQorICAgIDB4NzZFNSwgMHgxNkFFLCAweDc2RTYsIDB4NDI2MywgMHg3NkU3LCAweDE2QUYsIDB4NzZFOCwgMHg0NzA4LA0KKyAgICAweDc2RUEsIDB4MTZCMCwgMHg3NkVCLCAweDRDNzUsIDB4NzZFQywgMHgzQTE4LCAweDc2RUUsIDB4MEVFOCwNCisgICAgMHg3NkYwLCAweDRDNzYsIDB4NzZGMSwgMHg0MjY0LCAweDc2RjIsIDB4MEVFMSwgMHg3NkY0LCAweDBCREEsDQorICAgIDB4NzZGOCwgMHgwQUVDLCAweDc2RjksIDB4NEM3NywgMHg3NkZCLCAweDE2QjIsIDB4NzZGQywgMHgzQTE5LA0KKyAgICAweDc2RkUsIDB4MDk2QywgMHg3NzAwLCAweDRDNzgsIDB4NzcwMSwgMHgwOUIyLCAweDc3MDQsIDB4MTZCNSwNCisgICAgMHg3NzA3LCAweDE2QjQsIDB4NzcwOCwgMHgxNkIzLCAweDc3MDksIDB4MEQ5MSwgMHg3NzBBLCAweDQyNjUsDQorICAgIDB4NzcwQiwgMHgwNjAzLCAweDc3MEMsIDB4MDc1RCwgMHg3NzBFLCAweDRDNzksIDB4NzcxNywgMHg0NzBBLA0KKyAgICAweDc3MTksIDB4NDI2NiwgMHg3NzFBLCAweDQ3MEIsIDB4NzcxQiwgMHgxNkJCLCAweDc3MUUsIDB4MTZCOCwNCisgICAgMHg3NzFGLCAweDBBMDUsIDB4NzcyMCwgMHgwRUJFLCAweDc3MjIsIDB4NEM3QSwgMHg3NzI0LCAweDE2QjcsDQorICAgIDB4NzcyNSwgMHgxNkI5LCAweDc3MjYsIDB4MTZCQSwgMHg3NzI4LCAweDRDN0IsIDB4NzcyOSwgMHgxNkI2LA0KKyAgICAweDc3MkQsIDB4NDcwQywgMHg3NzJGLCAweDRDN0MsIDB4NzczNCwgMHgzQTFBLCAweDc3MzUsIDB4NDcwRCwNCisgICAgMHg3NzM2LCAweDNBMUIsIDB4NzczNywgMHgxNkJDLCAweDc3MzgsIDB4MTZCRCwgMHg3NzM5LCAweDRDN0QsDQorICAgIDB4NzczQSwgMHgwQkNCLCAweDc3M0MsIDB4MDYxRiwgMHg3NzNFLCAweDRDN0UsIDB4Nzc0MCwgMHgwQkEzLA0KKyAgICAweDc3NDUsIDB4NEM3RiwgMHg3NzQ2LCAweDIxN0MsIDB4Nzc0NywgMHgxNkJFLCAweDc3NEEsIDB4NEM4MCwNCisgICAgMHg3NzRELCAweDQyNjcsIDB4Nzc0RSwgMHg0MjY4LCAweDc3NEYsIDB4NEM4MSwgMHg3NzU4LCAweDQ3MTIsDQorICAgIDB4Nzc1QSwgMHgxNkJGLCAweDc3NUIsIDB4MTZDMiwgMHg3NzVDLCAweDNBMUMsIDB4Nzc1RSwgMHg0QzgyLA0KKyAgICAweDc3NUYsIDB4M0ExRCwgMHg3NzYwLCAweDNBMUUsIDB4Nzc2MSwgMHgwQTJELCAweDc3NjIsIDB4MUVDNSwNCisgICAgMHg3NzYzLCAweDBDOUMsIDB4Nzc2NCwgMHg0QzgzLCAweDc3NjUsIDB4MTZDMywgMHg3NzY2LCAweDBFODEsDQorICAgIDB4Nzc2NywgMHg0Qzg0LCAweDc3NjgsIDB4MTZDMCwgMHg3NzZBLCAweDM3NTUsIDB4Nzc2QiwgMHgxNkMxLA0KKyAgICAweDc3NkMsIDB4NEM4NSwgMHg3NzcyLCAweDNBMUYsIDB4Nzc3OSwgMHgxNkM2LCAweDc3N0EsIDB4NDI2OSwNCisgICAgMHg3NzdDLCAweDQ3MTQsIDB4Nzc3RCwgMHgzQTIwLCAweDc3N0UsIDB4MTZDNSwgMHg3NzdGLCAweDE2QzQsDQorICAgIDB4Nzc4MCwgMHg0MjZBLCAweDc3ODQsIDB4NEM4NiwgMHg3NzhCLCAweDE2QzgsIDB4Nzc4QywgMHg0Qzg3LA0KKyAgICAweDc3OEQsIDB4NEM4OCwgMHg3NzhFLCAweDE2QzcsIDB4Nzc5MSwgMHgxNkM5LCAweDc3OTQsIDB4NDI2QiwNCisgICAgMHg3Nzk1LCAweDNBMjEsIDB4Nzc5NiwgMHg0Qzg5LCAweDc3OUEsIDB4NDcxNywgMHg3NzlFLCAweDE2Q0IsDQorICAgIDB4Nzc5RiwgMHg0NzE4LCAweDc3QTAsIDB4MTZDQSwgMHg3N0EyLCAweDQ3MTksIDB4NzdBNCwgMHg0NzFBLA0KKyAgICAweDc3QTUsIDB4MEUxRCwgMHg3N0E3LCAweDRDOEEsIDB4NzdBOSwgMHgzNzU2LCAweDc3QUEsIDB4M0EyMiwNCisgICAgMHg3N0FDLCAweDA5NjAsIDB4NzdBRCwgMHgwRjhFLCAweDc3QUYsIDB4NEM4QiwgMHg3N0IwLCAweDE2Q0MsDQorICAgIDB4NzdCMywgMHgwQzhGLCAweDc3QjYsIDB4MTZDRCwgMHg3N0I3LCAweDRDOEMsIDB4NzdCOSwgMHgxNkNFLA0KKyAgICAweDc3QkIsIDB4MTZEMiwgMHg3N0JDLCAweDE2RDAsIDB4NzdCRCwgMHgxNkQxLCAweDc3QkUsIDB4NEM4RCwNCisgICAgMHg3N0JGLCAweDE2Q0YsIDB4NzdDNywgMHgxNkQzLCAweDc3QzksIDB4NEM4RSwgMHg3N0NELCAweDE2RDQsDQorICAgIDB4NzdEMSwgMHg0QzhGLCAweDc3RDcsIDB4MTZENSwgMHg3N0Q5LCAweDRDOTAsIDB4NzdEQSwgMHgxNkQ2LA0KKyAgICAweDc3REIsIDB4MEVDMywgMHg3N0RDLCAweDE2RDcsIDB4NzdERSwgMHg0NzFCLCAweDc3REYsIDB4NDcxQywNCisgICAgMHg3N0UwLCAweDQyNkMsIDB4NzdFMiwgMHgwRUZDLCAweDc3RTMsIDB4MTZEOCwgMHg3N0U0LCAweDQ3MUQsDQorICAgIDB4NzdFNSwgMHgwQjhDLCAweDc3RTYsIDB4M0EyMywgMHg3N0U3LCAweDBEMjAsIDB4NzdFOSwgMHgwNkUzLA0KKyAgICAweDc3RUEsIDB4NDcxRSwgMHg3N0VDLCAweDQ3MUYsIDB4NzdFRCwgMHgwQjc5LCAweDc3RUUsIDB4MTZEOSwNCisgICAgMHg3N0VGLCAweDA2QjIsIDB4NzdGMCwgMHgzQTI0LCAweDc3RjEsIDB4NEM5MSwgMHg3N0YzLCAweDBBNzQsDQorICAgIDB4NzdGNCwgMHgzQTI1LCAweDc3RkIsIDB4NDcyMCwgMHg3N0ZDLCAweDE2REEsIDB4NzgwMiwgMHgwODJELA0KKyAgICAweDc4MDUsIDB4NDcyMiwgMHg3ODA2LCAweDNBMjYsIDB4NzgwOSwgMHg0NzIzLCAweDc4MEMsIDB4MTZEQiwNCisgICAgMHg3ODBELCAweDQ3MjQsIDB4NzgxMiwgMHgxNkRDLCAweDc4MTQsIDB4MDc1QSwgMHg3ODE1LCAweDA4NDUsDQorICAgIDB4NzgxOSwgMHg0NzI1LCAweDc4MjAsIDB4MTZERSwgMHg3ODIxLCAweDIxN0UsIDB4NzgyMiwgMHgzQTI3LA0KKyAgICAweDc4MjUsIDB4MEM1MCwgMHg3ODI2LCAweDA4NDYsIDB4NzgyNywgMHgwNjY4LCAweDc4MkMsIDB4NDcyNiwNCisgICAgMHg3ODJELCAweDNBMjgsIDB4NzgyRSwgMHgzQTI5LCAweDc4MzAsIDB4M0EyQSwgMHg3ODMyLCAweDBFNTIsDQorICAgIDB4NzgzNCwgMHgwRDAxLCAweDc4MzUsIDB4M0EyQiwgMHg3ODM3LCAweDRDOTIsIDB4NzgzQSwgMHgwQzUxLA0KKyAgICAweDc4M0YsIDB4MDdFRSwgMHg3ODQzLCAweDQyNkUsIDB4Nzg0NSwgMHgxNkUwLCAweDc4NDcsIDB4NDcyNywNCisgICAgMHg3ODRFLCAweDIxN0YsIDB4Nzg0RiwgMHgzNDFFLCAweDc4NTEsIDB4M0MzQywgMHg3ODVDLCAweDRDOTMsDQorICAgIDB4Nzg1RCwgMHgwOUIzLCAweDc4NjQsIDB4MjE4MCwgMHg3ODY4LCAweDNBMkMsIDB4Nzg2QSwgMHg0NzI4LA0KKyAgICAweDc4NkIsIDB4MEY3QSwgMHg3ODZDLCAweDA3RDcsIDB4Nzg2RSwgMHg0MjZGLCAweDc4NkYsIDB4MDc1QiwNCisgICAgMHg3ODcyLCAweDBEMzcsIDB4Nzg3NCwgMHgxNkUyLCAweDc4N0EsIDB4MjE4MSwgMHg3ODdDLCAweDE2RTQsDQorICAgIDB4Nzg3RSwgMHg0Qzk0LCAweDc4ODEsIDB4MDc5RiwgMHg3ODg2LCAweDE2RTMsIDB4Nzg4NywgMHgwQzEyLA0KKyAgICAweDc4OEEsIDB4NDcyQSwgMHg3ODhDLCAweDE2RTYsIDB4Nzg4RCwgMHgwNTk1LCAweDc4OEUsIDB4MTZFMSwNCisgICAgMHg3ODkxLCAweDBEN0UsIDB4Nzg5MywgMHgwNEQyLCAweDc4OTQsIDB4NDcyQiwgMHg3ODk1LCAweDA4NUMsDQorICAgIDB4Nzg5NywgMHgwRkY4LCAweDc4OTgsIDB4NEM5NSwgMHg3ODlBLCAweDE2RTUsIDB4Nzg5RCwgMHg0NzJELA0KKyAgICAweDc4OUUsIDB4M0EyRCwgMHg3ODlGLCAweDQ3MkUsIDB4NzhBMSwgMHg0Qzk2LCAweDc4QTMsIDB4MTZFNywNCisgICAgMHg3OEE0LCAweDQ3MkMsIDB4NzhBNywgMHgwRTFCLCAweDc4QTksIDB4MEE3RCwgMHg3OEFBLCAweDE2RTksDQorICAgIDB4NzhBRCwgMHg0MjcyLCAweDc4QUYsIDB4MTZFQSwgMHg3OEIwLCAweDQyNzAsIDB4NzhCMSwgMHg0Qzk3LA0KKyAgICAweDc4QjMsIDB4NEM5OCwgMHg3OEI1LCAweDE2RTgsIDB4NzhCQSwgMHgwNUFDLCAweDc4QkIsIDB4NDcyRiwNCisgICAgMHg3OEJDLCAweDE2RjAsIDB4NzhCRSwgMHgxNkVGLCAweDc4QzEsIDB4MDhEMywgMHg3OEM1LCAweDE2RjEsDQorICAgIDB4NzhDNiwgMHgxNkVDLCAweDc4QzgsIDB4M0EyRSwgMHg3OEM5LCAweDRDOTksIDB4NzhDQSwgMHgxNkYyLA0KKyAgICAweDc4Q0IsIDB4MTZFRCwgMHg3OENDLCAweDNBMkYsIDB4NzhDRSwgMHgzQTMwLCAweDc4RDAsIDB4MEQ2QywNCisgICAgMHg3OEQxLCAweDE2RUIsIDB4NzhEMywgMHg0QzlBLCAweDc4RDQsIDB4MTZFRSwgMHg3OEQ1LCAweDQ3MzAsDQorICAgIDB4NzhEQSwgMHgxNkY1LCAweDc4RTAsIDB4M0EzMiwgMHg3OEUxLCAweDNBMzMsIDB4NzhFNCwgMHgzQTMxLA0KKyAgICAweDc4RTYsIDB4NDczMSwgMHg3OEU3LCAweDE2RjQsIDB4NzhFOCwgMHgwRThGLCAweDc4RUMsIDB4MTZGMywNCisgICAgMHg3OEVGLCAweDA0QUYsIDB4NzhGMiwgMHgzQTM0LCAweDc4RjQsIDB4MTZGNywgMHg3OEY3LCAweDNBMzUsDQorICAgIDB4NzhGOSwgMHg0NzMyLCAweDc4RkEsIDB4NDczMywgMHg3OEZCLCAweDNBMzYsIDB4NzhGRCwgMHgxNkY2LA0KKyAgICAweDc4RkUsIDB4NDczNCwgMHg3OTAwLCAweDQyNzMsIDB4NzkwMSwgMHgwOUI0LCAweDc5MDcsIDB4MTZGOCwNCisgICAgMHg3OTBDLCAweDRDOUIsIDB4NzkwRSwgMHgwQUM1LCAweDc5MTAsIDB4NDczNiwgMHg3OTExLCAweDE2RkEsDQorICAgIDB4NzkxMiwgMHgxNkY5LCAweDc5MTksIDB4MTZGQiwgMHg3OTFCLCAweDQ3MzcsIDB4NzkxQywgMHg0Mjc0LA0KKyAgICAweDc5MUYsIDB4NEM5QywgMHg3OTI1LCAweDQ3MzgsIDB4NzkyNiwgMHgxNkRELCAweDc5MjcsIDB4NEM5RCwNCisgICAgMHg3OTI4LCAweDRDOUUsIDB4NzkyQSwgMHgxNkRGLCAweDc5MkIsIDB4MTZGRCwgMHg3OTJDLCAweDE2RkMsDQorICAgIDB4NzkyRSwgMHg0Mjc1LCAweDc5MzAsIDB4MjE4MiwgMHg3OTMxLCAweDNBMzcsIDB4NzkzNCwgMHg0Mjc2LA0KKyAgICAweDc5M0EsIDB4MDhENCwgMHg3OTNCLCAweDNBMzksIDB4NzkzQywgMHgwRkIxLCAweDc5M0QsIDB4M0EzQSwNCisgICAgMHg3OTNFLCAweDA4RkUsIDB4NzkzRiwgMHg0QzlGLCAweDc5NDAsIDB4MTZGRSwgMHg3OTQxLCAweDA3MEQsDQorICAgIDB4Nzk0MiwgMHg0Q0EwLCAweDc5NDUsIDB4M0EzQiwgMHg3OTQ2LCAweDQyNzcsIDB4Nzk0NywgMHgwNjVBLA0KKyAgICAweDc5NDgsIDB4MDY0MSwgMHg3OTQ5LCAweDA4QjEsIDB4Nzk0QSwgMHg0NzM5LCAweDc5NTAsIDB4MEYxRSwNCisgICAgMHg3OTUzLCAweDE3MDQsIDB4Nzk1NCwgMHg0Q0ExLCAweDc5NTUsIDB4MTcwMywgMHg3OTU2LCAweDBBQzYsDQorICAgIDB4Nzk1NywgMHgxNzAwLCAweDc5NTgsIDB4NDczQSwgMHg3OTVBLCAweDE3MDIsIDB4Nzk1QiwgMHgzQTNDLA0KKyAgICAweDc5NUMsIDB4M0EzRCwgMHg3OTVELCAweDA5NTUsIDB4Nzk1RSwgMHgwQTA2LCAweDc5NUYsIDB4MTcwMSwNCisgICAgMHg3OTYwLCAweDE2RkYsIDB4Nzk2MiwgMHgwQ0UwLCAweDc5NjUsIDB4MDlCNSwgMHg3OTY3LCAweDQ3M0MsDQorICAgIDB4Nzk2OCwgMHgwREFFLCAweDc5NkIsIDB4NENBMiwgMHg3OTZELCAweDA4NDcsIDB4Nzk3MiwgMHg0NzNELA0KKyAgICAweDc5NzcsIDB4MEM3MiwgMHg3OTc5LCAweDQyNzgsIDB4Nzk3QSwgMHgxNzA1LCAweDc5N0MsIDB4NENBMywNCisgICAgMHg3OTdGLCAweDE3MDYsIDB4Nzk4MCwgMHgxNzFDLCAweDc5ODEsIDB4MDZEMCwgMHg3OTg0LCAweDBGRTMsDQorICAgIDB4Nzk4NSwgMHgwQUI3LCAweDc5OEEsIDB4MTcwNywgMHg3OThCLCAweDNBM0UsIDB4Nzk4RCwgMHgwNTUyLA0KKyAgICAweDc5OEUsIDB4MEMxMywgMHg3OThGLCAweDBERjEsIDB4Nzk5NCwgMHgyMTg2LCAweDc5OTUsIDB4NDczRSwNCisgICAgMHg3OTk2LCAweDNBM0YsIDB4Nzk5OCwgMHgzQTQwLCAweDc5OUIsIDB4MjE4OCwgMHg3OTlELCAweDE3MDgsDQorICAgIDB4NzlBMSwgMHg0NzNGLCAweDc5QTYsIDB4MDY5NCwgMHg3OUE3LCAweDE3MDksIDB4NzlBOSwgMHg0NzQwLA0KKyAgICAweDc5QUEsIDB4MTcwQiwgMHg3OUFCLCAweDRDQTQsIDB4NzlBRSwgMHgxNzBDLCAweDc5QjAsIDB4MENERiwNCisgICAgMHg3OUIxLCAweDFFNEUsIDB4NzlCMywgMHgxNzBELCAweDc5QjQsIDB4NDc0MSwgMHg3OUI4LCAweDNBNDEsDQorICAgIDB4NzlCOSwgMHgxNzBFLCAweDc5QkEsIDB4MTcwRiwgMHg3OUJCLCAweDNBNDIsIDB4NzlCRCwgMHgwNkQxLA0KKyAgICAweDc5QkUsIDB4MDU1MywgMHg3OUJGLCAweDBDOUQsIDB4NzlDMCwgMHgwOTMyLCAweDc5QzEsIDB4MDhCMiwNCisgICAgMHg3OUMyLCAweDQ3NDIsIDB4NzlDNCwgMHg0Q0E1LCAweDc5QzcsIDB4NDc0MywgMHg3OUM4LCAweDQyNzksDQorICAgIDB4NzlDOSwgMHgxNzEwLCAweDc5Q0EsIDB4M0E0MywgMHg3OUNCLCAweDA5MzMsIDB4NzlDQywgMHg0NzQ0LA0KKyAgICAweDc5Q0QsIDB4NDc0NSwgMHg3OUQxLCAweDA1NEEsIDB4NzlEMiwgMHgwREI1LCAweDc5RDQsIDB4NDI3QiwNCisgICAgMHg3OUQ1LCAweDE3MTEsIDB4NzlENiwgMHg0NzQ2LCAweDc5RDgsIDB4MEQ3RiwgMHg3OURBLCAweDNBNDQsDQorICAgIDB4NzlERSwgMHg0MjdDLCAweDc5REYsIDB4MEFDNywgMHg3OUUxLCAweDE3MTQsIDB4NzlFMywgMHgxNzE1LA0KKyAgICAweDc5RTQsIDB4MEQxRiwgMHg3OUU2LCAweDBBMDcsIDB4NzlFNywgMHgxNzEyLCAweDc5RTksIDB4MEI5RiwNCisgICAgMHg3OUVBLCAweDRDQTYsIDB4NzlFQiwgMHg0MjdELCAweDc5RUMsIDB4MTcxMywgMHg3OUVELCAweDQyN0UsDQorICAgIDB4NzlGMCwgMHgwOUI2LCAweDc5RkIsIDB4MDRBMCwgMHg3QTAwLCAweDA2NDMsIDB4N0EwMiwgMHg0Q0E3LA0KKyAgICAweDdBMDMsIDB4M0E0NSwgMHg3QTA1LCAweDM2MzMsIDB4N0EwOCwgMHgxNzE2LCAweDdBMDksIDB4M0E0NiwNCisgICAgMHg3QTBBLCAweDQ3NEIsIDB4N0EwQiwgMHgwQzE0LCAweDdBMEMsIDB4NENBOCwgMHg3QTBELCAweDE3MTcsDQorICAgIDB4N0EwRSwgMHgwQTZCLCAweDdBMTEsIDB4M0E0NywgMHg3QTE0LCAweDBFQjksIDB4N0ExNSwgMHg0NzRDLA0KKyAgICAweDdBMTcsIDB4MEQ5NSwgMHg3QTE4LCAweDE3MTgsIDB4N0ExOSwgMHgxNzE5LCAweDdBMUEsIDB4MEI5MywNCisgICAgMHg3QTFCLCAweDQ3NEQsIDB4N0ExQywgMHgwRjhGLCAweDdBMUUsIDB4M0E0OCwgMHg3QTFGLCAweDE3MUIsDQorICAgIDB4N0EyMCwgMHgxNzFBLCAweDdBMkQsIDB4M0E0OSwgMHg3QTJFLCAweDA5MUIsIDB4N0EzMCwgMHg0Q0E5LA0KKyAgICAweDdBMzEsIDB4MTcxRCwgMHg3QTMyLCAweDA0QjQsIDB4N0EzNywgMHgxNzIwLCAweDdBMzgsIDB4NDc0RiwNCisgICAgMHg3QTM5LCAweDNBNEEsIDB4N0EzQSwgMHg0Q0FBLCAweDdBM0IsIDB4MTcxRSwgMHg3QTNDLCAweDA1NTQsDQorICAgIDB4N0EzRCwgMHgwNzI0LCAweDdBM0UsIDB4MTcxRiwgMHg3QTNGLCAweDA3RDgsIDB4N0E0MCwgMHgwODA0LA0KKyAgICAweDdBNDIsIDB4MEUzNiwgMHg3QTQzLCAweDE3MjEsIDB4N0E0NCwgMHg0Q0FCLCAweDdBNDUsIDB4M0E0QiwNCisgICAgMHg3QTQ2LCAweDBFODIsIDB4N0E0NywgMHg0NzUwLCAweDdBNDksIDB4MTcyMywgMHg3QTRDLCAweDNBNEMsDQorICAgIDB4N0E0RCwgMHgwQTc1LCAweDdBNEUsIDB4MDRGMSwgMHg3QTRGLCAweDA1M0EsIDB4N0E1MCwgMHgwNDcwLA0KKyAgICAweDdBNTYsIDB4NDc1MSwgMHg3QTU3LCAweDE3MjIsIDB4N0E1OSwgMHg0NzUyLCAweDdBNUMsIDB4NDc1MywNCisgICAgMHg3QTVELCAweDNBNEQsIDB4N0E1RiwgMHg0NzU0LCAweDdBNjAsIDB4NEY1NiwgMHg3QTYxLCAweDE3MjQsDQorICAgIDB4N0E2MiwgMHgxNzI1LCAweDdBNjMsIDB4MDlERiwgMHg3QTY3LCAweDQ3NTUsIDB4N0E2OSwgMHgxNzI2LA0KKyAgICAweDdBNkEsIDB4NDc1NiwgMHg3QTZCLCAweDA1QUQsIDB4N0E2RCwgMHgzQTRGLCAweDdBNzAsIDB4MTcyOCwNCisgICAgMHg3QTc0LCAweDA3NDAsIDB4N0E3NSwgMHg0NzU3LCAweDdBNzYsIDB4MDY4MCwgMHg3QTc4LCAweDNBNTAsDQorICAgIDB4N0E3OSwgMHgxNzI5LCAweDdBN0EsIDB4MDZFRCwgMHg3QTdELCAweDE3MkEsIDB4N0E3RiwgMHgwQUEwLA0KKyAgICAweDdBODAsIDB4NENBQywgMHg3QTgxLCAweDBDQTUsIDB4N0E4MiwgMHg0NzU4LCAweDdBODMsIDB4MEE4NCwNCisgICAgMHg3QTg0LCAweDA4NjUsIDB4N0E4NSwgMHg0MjdGLCAweDdBODYsIDB4NENBRCwgMHg3QTg4LCAweDE3MkIsDQorICAgIDB4N0E4QSwgMHg0NzU5LCAweDdBOTAsIDB4NDc1QSwgMHg3QTkyLCAweDBCQTAsIDB4N0E5MywgMHgwQUVELA0KKyAgICAweDdBOTQsIDB4NENBRSwgMHg3QTk1LCAweDE3MkQsIDB4N0E5NiwgMHgxNzJGLCAweDdBOTcsIDB4MTcyQywNCisgICAgMHg3QTk4LCAweDE3MkUsIDB4N0E5RiwgMHgwNkY4LCAweDdBQTAsIDB4M0E1MSwgMHg3QUEzLCAweDNBNTIsDQorICAgIDB4N0FBOSwgMHgxNzMwLCAweDdBQUEsIDB4MDZGQywgMHg3QUFDLCAweDQ3NUIsIDB4N0FBRSwgMHgwNjgxLA0KKyAgICAweDdBQUYsIDB4MEYzQywgMHg3QUIwLCAweDE3MzIsIDB4N0FCMywgMHgzQTUzLCAweDdBQjUsIDB4NENBRiwNCisgICAgMHg3QUI2LCAweDE3MzMsIDB4N0FCOSwgMHg0NzVFLCAweDdBQkEsIDB4MDREMCwgMHg3QUJCLCAweDNBNTQsDQorICAgIDB4N0FCQywgMHgzQTU1LCAweDdBQkQsIDB4NENCMCwgMHg3QUJFLCAweDQ3NUYsIDB4N0FCRiwgMHgxNzM2LA0KKyAgICAweDdBQzMsIDB4MDVENCwgMHg3QUM0LCAweDE3MzUsIDB4N0FDNSwgMHgxNzM0LCAweDdBQzYsIDB4M0E1NiwNCisgICAgMHg3QUM3LCAweDE3MzgsIDB4N0FDOCwgMHgxNzMxLCAweDdBQ0EsIDB4MTczOSwgMHg3QUNCLCAweDBGNzEsDQorICAgIDB4N0FDQywgMHg0NzYxLCAweDdBQ0QsIDB4MTczQSwgMHg3QUNFLCAweDQyODEsIDB4N0FDRiwgMHgxNzNCLA0KKyAgICAweDdBRDEsIDB4MjE4OSwgMHg3QUQyLCAweDExQzUsIDB4N0FEMywgMHgxNzNELCAweDdBRDUsIDB4MTczQywNCisgICAgMHg3QUQ5LCAweDE3M0UsIDB4N0FEQSwgMHgxNzNGLCAweDdBREMsIDB4MEY3RCwgMHg3QURELCAweDE3NDAsDQorICAgIDB4N0FERiwgMHgxQzA4LCAweDdBRTAsIDB4MDlCNywgMHg3QUUxLCAweDE3NDEsIDB4N0FFMiwgMHgxNzQyLA0KKyAgICAweDdBRTMsIDB4MDk2MSwgMHg3QUU1LCAweDBDOTAsIDB4N0FFNiwgMHgxNzQzLCAweDdBRTcsIDB4MjE4QSwNCisgICAgMHg3QUU4LCAweDQ3NjIsIDB4N0FFQSwgMHgwQjY2LCAweDdBRUIsIDB4MjE4QywgMHg3QUVELCAweDE3NDQsDQorICAgIDB4N0FFRiwgMHgwQjdBLCAweDdBRjAsIDB4MTc0NSwgMHg3QUY0LCAweDQ3NjMsIDB4N0FGNiwgMHgwNjlELA0KKyAgICAweDdBRjgsIDB4MTA3NiwgMHg3QUY5LCAweDBCOUIsIDB4N0FGQSwgMHgwOERGLCAweDdBRkQsIDB4NDI4MiwNCisgICAgMHg3QUZFLCAweDRDQjEsIDB4N0FGRiwgMHgwNjA0LCAweDdCMDIsIDB4MTc0NiwgMHg3QjA0LCAweDE3NTMsDQorICAgIDB4N0IwNiwgMHgxNzQ5LCAweDdCMDcsIDB4M0E1NywgMHg3QjA4LCAweDA2ODIsIDB4N0IwQSwgMHgxNzQ4LA0KKyAgICAweDdCMEIsIDB4MTc1NSwgMHg3QjBGLCAweDE3NDcsIDB4N0IxMSwgMHgwOUI4LCAweDdCMTIsIDB4NDI4MywNCisgICAgMHg3QjE0LCAweDNBNTgsIDB4N0IxOCwgMHgxNzRCLCAweDdCMTksIDB4MTc0QywgMHg3QjFCLCAweDBDMjUsDQorICAgIDB4N0IxRSwgMHgxNzRELCAweDdCMjAsIDB4MDVCQywgMHg3QjI1LCAweDBBMjAsIDB4N0IyNiwgMHgwREQ2LA0KKyAgICAweDdCMjcsIDB4M0E1OSwgMHg3QjI4LCAweDE3NEYsIDB4N0IyQSwgMHg0NzY4LCAweDdCMkIsIDB4NENCMiwNCisgICAgMHg3QjJDLCAweDBCNDgsIDB4N0IyRCwgMHg0Mjg0LCAweDdCMkUsIDB4NDc2OSwgMHg3QjJGLCAweDQ3NkEsDQorICAgIDB4N0IzMSwgMHgzQTVBLCAweDdCMzMsIDB4MTc0QSwgMHg3QjM1LCAweDE3NEUsIDB4N0IzNiwgMHgxNzUwLA0KKyAgICAweDdCMzksIDB4MDg2QiwgMHg3QjNCLCAweDQyODUsIDB4N0IzRCwgMHg0NzY3LCAweDdCNDEsIDB4NDc2RSwNCisgICAgMHg3QjQ1LCAweDE3NTcsIDB4N0I0NiwgMHgwREEwLCAweDdCNDcsIDB4M0E1QiwgMHg3QjQ4LCAweDBEM0EsDQorICAgIDB4N0I0OSwgMHgwQzczLCAweDdCNEIsIDB4MDZEMiwgMHg3QjRDLCAweDE3NTYsIDB4N0I0RCwgMHgxNzU0LA0KKyAgICAweDdCNEUsIDB4M0E1QywgMHg3QjRGLCAweDBENDksIDB4N0I1MCwgMHgxNzUxLCAweDdCNTEsIDB4MEI5QywNCisgICAgMHg3QjUyLCAweDBDNzUsIDB4N0I1MywgMHgzNzVELCAweDdCNTQsIDB4MEM3NCwgMHg3QjU1LCAweDQ3NzAsDQorICAgIDB4N0I1NiwgMHgwODY2LCAweDdCNUQsIDB4MTc2OSwgMHg3QjYwLCAweDNBNUQsIDB4N0I2NCwgMHg0NzcyLA0KKyAgICAweDdCNjUsIDB4MTc1OSwgMHg3QjY2LCAweDQ3NzMsIDB4N0I2NywgMHgxNzVCLCAweDdCNjksIDB4M0E1RSwNCisgICAgMHg3QjZDLCAweDE3NUUsIDB4N0I2RCwgMHgzQTVGLCAweDdCNkUsIDB4MTc1RiwgMHg3QjZGLCAweDQyODYsDQorICAgIDB4N0I3MCwgMHgxNzVDLCAweDdCNzEsIDB4MTc1RCwgMHg3QjcyLCAweDNBNjAsIDB4N0I3MywgMHg0Nzc0LA0KKyAgICAweDdCNzQsIDB4MTc1QSwgMHg3Qjc1LCAweDE3NTgsIDB4N0I3NywgMHg0Q0IzLCAweDdCNzksIDB4NDc3MSwNCisgICAgMHg3QjdBLCAweDE3NTIsIDB4N0I3RiwgMHg0NzZELCAweDdCODYsIDB4MEUxRiwgMHg3Qjg3LCAweDA1NTUsDQorICAgIDB4N0I4QiwgMHgxNzY2LCAweDdCOEQsIDB4MTc2MywgMHg3QjhGLCAweDE3NjgsIDB4N0I5MCwgMHg0Nzc3LA0KKyAgICAweDdCOTEsIDB4M0E2MSwgMHg3QjkyLCAweDE3NjcsIDB4N0I5NCwgMHgwRDI5LCAweDdCOTUsIDB4MEVCMywNCisgICAgMHg3Qjk3LCAweDA4ODksIDB4N0I5OCwgMHgxNzYxLCAweDdCOTksIDB4MTc2QSwgMHg3QjlBLCAweDE3NjUsDQorICAgIDB4N0I5QiwgMHg0Nzc4LCAweDdCOUMsIDB4MTc2NCwgMHg3QjlELCAweDE3NjAsIDB4N0I5RSwgMHgyMThELA0KKyAgICAweDdCOUYsIDB4MTc2MiwgMHg3QkEwLCAweDRDQjQsIDB4N0JBMSwgMHgwNjA1LCAweDdCQUEsIDB4MEI3QiwNCisgICAgMHg3QkFDLCAweDRDQjUsIDB4N0JBRCwgMHgwQUExLCAweDdCQUYsIDB4M0E2MiwgMHg3QkIwLCAweDRDQjYsDQorICAgIDB4N0JCMSwgMHgwRDM2LCAweDdCQjQsIDB4MTc2RiwgMHg3QkI1LCAweDQ3N0EsIDB4N0JCOCwgMHgwRDM4LA0KKyAgICAweDdCQkMsIDB4NDc3QiwgMHg3QkMwLCAweDBBODUsIDB4N0JDMSwgMHgxNzZDLCAweDdCQzQsIDB4MEQ2MywNCisgICAgMHg3QkM1LCAweDQ3N0MsIDB4N0JDNiwgMHgxNzcwLCAweDdCQzcsIDB4MEUyMywgMHg3QkM5LCAweDBCOTksDQorICAgIDB4N0JDQSwgMHg0NzdELCAweDdCQ0IsIDB4MTc2QiwgMHg3QkNDLCAweDE3NkQsIDB4N0JDRiwgMHgxNzZFLA0KKyAgICAweDdCRDQsIDB4NDc4MCwgMHg3QkQ2LCAweDQ3ODEsIDB4N0JENywgMHgzQTYzLCAweDdCRDksIDB4M0E2NCwNCisgICAgMHg3QkRBLCAweDQ3ODIsIDB4N0JERCwgMHgxNzcxLCAweDdCRTAsIDB4MDhGMCwgMHg3QkU0LCAweDBDOUUsDQorICAgIDB4N0JFNSwgMHgxNzc2LCAweDdCRTYsIDB4MTc3NSwgMHg3QkU4LCAweDRDQjcsIDB4N0JFOSwgMHgxNzcyLA0KKyAgICAweDdCRUEsIDB4NDc4MywgMHg3QkVELCAweDBGREMsIDB4N0JGMCwgMHg0Nzg0LCAweDdCRjIsIDB4NENCOCwNCisgICAgMHg3QkYzLCAweDE3N0IsIDB4N0JGNiwgMHgxNzdGLCAweDdCRjcsIDB4MTc3QywgMHg3QkY4LCAweDRDQjksDQorICAgIDB4N0JGQywgMHg0Q0JBLCAweDdCRkUsIDB4NENCQiwgMHg3QzAwLCAweDE3NzgsIDB4N0MwMSwgMHg0Mjg3LA0KKyAgICAweDdDMDMsIDB4NDc4NSwgMHg3QzA3LCAweDE3NzksIDB4N0MwOSwgMHg0Q0JDLCAweDdDMEIsIDB4M0E2NSwNCisgICAgMHg3QzBELCAweDE3N0UsIDB4N0MwRSwgMHg0Nzg2LCAweDdDMEYsIDB4M0E2NiwgMHg3QzExLCAweDE3NzMsDQorICAgIDB4N0MxMiwgMHgxMEVBLCAweDdDMTMsIDB4MTc3QSwgMHg3QzE0LCAweDE3NzQsIDB4N0MxNywgMHgxNzdELA0KKyAgICAweDdDMUUsIDB4MUUzQiwgMHg3QzFGLCAweDE3ODMsIDB4N0MyMCwgMHgzQTY3LCAweDdDMjEsIDB4MDYwNiwNCisgICAgMHg3QzIzLCAweDE3ODAsIDB4N0MyNiwgMHgzQTY4LCAweDdDMjcsIDB4MTc4MSwgMHg3QzI4LCAweDRDQkQsDQorICAgIDB4N0MyQSwgMHgxNzgyLCAweDdDMkIsIDB4MTc4NSwgMHg3QzJGLCAweDRDQkUsIDB4N0MzMSwgMHgzQTY5LA0KKyAgICAweDdDMzMsIDB4NDI4OCwgMHg3QzM2LCAweDNBNkEsIDB4N0MzNywgMHgxNzg0LCAweDdDMzgsIDB4MEQ4QSwNCisgICAgMHg3QzNELCAweDE3ODYsIDB4N0MzRSwgMHgwRkM0LCAweDdDM0YsIDB4MEUzRCwgMHg3QzQwLCAweDE3OEIsDQorICAgIDB4N0M0MiwgMHg0Q0JGLCAweDdDNDMsIDB4MTc4OCwgMHg3QzQ1LCAweDQ3ODcsIDB4N0M0QSwgMHg0Nzg4LA0KKyAgICAweDdDNEMsIDB4MTc4NywgMHg3QzRELCAweDBBNzYsIDB4N0M0RiwgMHgxNzhBLCAweDdDNTAsIDB4MTc4QywNCisgICAgMHg3QzUxLCAweDNBNkIsIDB4N0M1MiwgMHg0Q0MwLCAweDdDNTMsIDB4NENDMSwgMHg3QzU0LCAweDE3ODksDQorICAgIDB4N0M1NiwgMHgxNzkwLCAweDdDNTcsIDB4NDc4OSwgMHg3QzU4LCAweDE3OEQsIDB4N0M1OSwgMHgzQTZDLA0KKyAgICAweDdDNUIsIDB4NENDMiwgMHg3QzVDLCAweDRDQzMsIDB4N0M1RCwgMHg0Q0M0LCAweDdDNUUsIDB4NDc4QSwNCisgICAgMHg3QzVGLCAweDE3OEUsIDB4N0M2MCwgMHgxNzc3LCAweDdDNjEsIDB4NDc4QiwgMHg3QzY0LCAweDE3OEYsDQorICAgIDB4N0M2NSwgMHgxNzkxLCAweDdDNjcsIDB4M0E2RCwgMHg3QzY5LCAweDQ3OEMsIDB4N0M2QywgMHgxNzkyLA0KKyAgICAweDdDNkQsIDB4NDI4QSwgMHg3QzZFLCAweDNBNkUsIDB4N0M2RiwgMHg0NzhELCAweDdDNzAsIDB4M0E2RiwNCisgICAgMHg3QzcyLCAweDRDQzUsIDB4N0M3MywgMHgwRTE2LCAweDdDNzUsIDB4MTc5MywgMHg3Qzc5LCAweDQyOEIsDQorICAgIDB4N0M3QiwgMHgzNzBFLCAweDdDN0QsIDB4NENDNiwgMHg3QzdFLCAweDBFRUUsIDB4N0M4MSwgMHgwNkM2LA0KKyAgICAweDdDODIsIDB4MDZGRiwgMHg3QzgzLCAweDE3OTQsIDB4N0M4NywgMHg0Q0M3LCAweDdDODksIDB4MEUwNCwNCisgICAgMHg3QzhCLCAweDBBMkUsIDB4N0M4RCwgMHgwRUJDLCAweDdDOEYsIDB4NDI4QywgMHg3QzkwLCAweDE3OTUsDQorICAgIDB4N0M5MiwgMHgwRjdCLCAweDdDOTQsIDB4NDI4RCwgMHg3Qzk1LCAweDBEMkEsIDB4N0M5NywgMHgwQUM4LA0KKyAgICAweDdDOTgsIDB4MENFQSwgMHg3QzlCLCAweDA5NTcsIDB4N0M5RSwgMHg0Q0M4LCAweDdDOUYsIDB4MDQ4NCwNCisgICAgMHg3Q0EwLCAweDQyOEUsIDB4N0NBMSwgMHgxNzlBLCAweDdDQTIsIDB4MTc5OCwgMHg3Q0E0LCAweDE3OTYsDQorICAgIDB4N0NBNSwgMHgwNURELCAweDdDQTYsIDB4NDc5MSwgMHg3Q0E3LCAweDA5QjksIDB4N0NBOCwgMHgxNzlCLA0KKyAgICAweDdDQUIsIDB4MTc5OSwgMHg3Q0FELCAweDE3OTcsIDB4N0NBRSwgMHgxNzlGLCAweDdDQjEsIDB4MTc5RSwNCisgICAgMHg3Q0IyLCAweDE3OUQsIDB4N0NCMywgMHgxNzlDLCAweDdDQjYsIDB4NDc5MywgMHg3Q0I3LCAweDQ3OTQsDQorICAgIDB4N0NCOSwgMHgxN0EwLCAweDdDQkEsIDB4NENDOSwgMHg3Q0JDLCAweDNBNzAsIDB4N0NCRCwgMHgxN0ExLA0KKyAgICAweDdDQkUsIDB4MEE1RSwgMHg3Q0JGLCAweDNBNzEsIDB4N0NDMCwgMHgxN0EyLCAweDdDQzIsIDB4MTdBNCwNCisgICAgMHg3Q0M0LCAweDQ3OTYsIDB4N0NDNSwgMHgxN0EzLCAweDdDQzcsIDB4NENDQSwgMHg3Q0M4LCAweDNBNzIsDQorICAgIDB4N0NDOSwgMHgzQTczLCAweDdDQ0EsIDB4MDc4NiwgMHg3Q0NELCAweDQ3OTgsIDB4N0NDRSwgMHgwQUJBLA0KKyAgICAweDdDRDIsIDB4MTdBNiwgMHg3Q0QzLCAweDRDQ0IsIDB4N0NENSwgMHg0MjhGLCAweDdDRDYsIDB4MEM3NiwNCisgICAgMHg3Q0Q3LCAweDNBNzQsIDB4N0NEOCwgMHgxN0E1LCAweDdDRDksIDB4M0E3NSwgMHg3Q0RBLCAweDRDQ0MsDQorICAgIDB4N0NEQywgMHgxN0E3LCAweDdDREQsIDB4M0E3NiwgMHg3Q0RFLCAweDBFMDUsIDB4N0NERiwgMHgwQUVFLA0KKyAgICAweDdDRTAsIDB4MDdEOSwgMHg3Q0UyLCAweDE3QTgsIDB4N0NFNiwgMHg0NzlCLCAweDdDRTcsIDB4MEY5MCwNCisgICAgMHg3Q0VCLCAweDNBNzcsIDB4N0NFRiwgMHgxN0FBLCAweDdDRjIsIDB4MTdBQiwgMHg3Q0Y0LCAweDE3QUMsDQorICAgIDB4N0NGNSwgMHg0NzlELCAweDdDRjYsIDB4MTdBRCwgMHg3Q0Y4LCAweDA4QjMsIDB4N0NGQSwgMHgxN0FFLA0KKyAgICAweDdDRkIsIDB4MDcyNSwgMHg3Q0ZFLCAweDA2ODQsIDB4N0QwMCwgMHgwNjQ0LCAweDdEMDIsIDB4MTdCMCwNCisgICAgMHg3RDAzLCAweDQ3OUUsIDB4N0QwNCwgMHgwRUZGLCAweDdEMDUsIDB4MDdEQSwgMHg3RDA2LCAweDE3QUYsDQorICAgIDB4N0QwNywgMHgzQTc4LCAweDdEMDgsIDB4M0E3OSwgMHg3RDA5LCAweDNBN0EsIDB4N0QwQSwgMHgxN0IzLA0KKyAgICAweDdEMEIsIDB4MEVGMiwgMHg3RDBELCAweDBDRjIsIDB4N0QxMCwgMHgwREE1LCAweDdEMTIsIDB4NDdBMCwNCisgICAgMHg3RDEzLCAweDNBN0IsIDB4N0QxNCwgMHgwOTZELCAweDdEMTUsIDB4MTdCMiwgMHg3RDE3LCAweDA4RkYsDQorICAgIDB4N0QxOCwgMHgwN0RCLCAweDdEMTksIDB4MDhCNCwgMHg3RDFBLCAweDA2ODMsIDB4N0QxQiwgMHgwRTA2LA0KKyAgICAweDdEMUMsIDB4MTdCMSwgMHg3RDFELCAweDNBN0MsIDB4N0QxRSwgMHg0N0ExLCAweDdEMjAsIDB4MEFDOSwNCisgICAgMHg3RDIxLCAweDBFNzAsIDB4N0QyMiwgMHgwODY3LCAweDdEMjMsIDB4M0E3RCwgMHg3RDJCLCAweDA4QjUsDQorICAgIDB4N0QyQywgMHgwQkY5LCAweDdEMkUsIDB4MTdCNiwgMHg3RDJGLCAweDBGQTcsIDB4N0QzMCwgMHgwODQ5LA0KKyAgICAweDdEMzEsIDB4NDI5MCwgMHg3RDMyLCAweDE3QjcsIDB4N0QzMywgMHgwQTA4LCAweDdEMzUsIDB4MTdCOSwNCisgICAgMHg3RDM5LCAweDA5QkEsIDB4N0QzQSwgMHgwODIwLCAweDdEM0MsIDB4NENDRCwgMHg3RDNELCAweDQ3QTQsDQorICAgIDB4N0QzRSwgMHg0N0E1LCAweDdEM0YsIDB4MTdCOCwgMHg3RDQwLCAweDQ3QTYsIDB4N0Q0MSwgMHgzQTdFLA0KKyAgICAweDdENDIsIDB4MDkzNCwgMHg3RDQzLCAweDA3NzIsIDB4N0Q0NCwgMHgwQUNBLCAweDdENDUsIDB4MTdCNCwNCisgICAgMHg3RDQ2LCAweDE3QkEsIDB4N0Q0NywgMHg0N0E3LCAweDdENDgsIDB4MjE4RiwgMHg3RDRCLCAweDE3QjUsDQorICAgIDB4N0Q0QywgMHgwNzI2LCAweDdENEQsIDB4NENDRSwgMHg3RDRFLCAweDE3QkQsIDB4N0Q0RiwgMHgxN0MxLA0KKyAgICAweDdENTAsIDB4MDc0MSwgMHg3RDUzLCAweDNBN0YsIDB4N0Q1NSwgMHgzNjNBLCAweDdENTYsIDB4MTdCQywNCisgICAgMHg3RDU5LCAweDNBODAsIDB4N0Q1QSwgMHg0N0FCLCAweDdENUIsIDB4MTdDNSwgMHg3RDVDLCAweDQyOTEsDQorICAgIDB4N0Q1RCwgMHgzQTgxLCAweDdENUUsIDB4MDdEQywgMHg3RDYxLCAweDBGNTcsIDB4N0Q2MiwgMHgwNDgwLA0KKyAgICAweDdENjMsIDB4MTdDMiwgMHg3RDY2LCAweDA2ODUsIDB4N0Q2OCwgMHgxN0JGLCAweDdENkEsIDB4NDdBQywNCisgICAgMHg3RDZFLCAweDE3QzAsIDB4N0Q3MCwgMHg0N0FELCAweDdENzEsIDB4MEM3NywgMHg3RDcyLCAweDE3QkUsDQorICAgIDB4N0Q3MywgMHgxN0JCLCAweDdENzUsIDB4MDU4NiwgMHg3RDc2LCAweDBBODgsIDB4N0Q3OSwgMHgwNzVDLA0KKyAgICAweDdEN0EsIDB4M0E4MiwgMHg3RDdELCAweDE3QzcsIDB4N0Q3RiwgMHg0N0FGLCAweDdEODIsIDB4NENDRiwNCisgICAgMHg3RDgzLCAweDQyOTIsIDB4N0Q4NSwgMHg0Q0QwLCAweDdEODYsIDB4M0E4MywgMHg3RDg4LCAweDQ3QjEsDQorICAgIDB4N0Q4OSwgMHgxN0M0LCAweDdEOEIsIDB4M0E4NCwgMHg3RDhDLCAweDNBODUsIDB4N0Q4RCwgMHg0Q0QxLA0KKyAgICAweDdEOEYsIDB4MTdDNiwgMHg3RDkxLCAweDRDRDIsIDB4N0Q5MywgMHgxN0MzLCAweDdEOTcsIDB4NDdCMiwNCisgICAgMHg3RDk5LCAweDA3MjcsIDB4N0Q5QSwgMHgwQjEzLCAweDdEOUIsIDB4MTdDOCwgMHg3RDlDLCAweDBBRjAsDQorICAgIDB4N0Q5RCwgMHg0N0I0LCAweDdEOUUsIDB4NENEMywgMHg3RDlGLCAweDE3RDUsIDB4N0RBMCwgMHgyMTkyLA0KKyAgICAweDdEQTIsIDB4MTdEMSwgMHg3REEzLCAweDE3Q0IsIDB4N0RBNiwgMHg0MjkzLCAweDdEQTcsIDB4NDdCNSwNCisgICAgMHg3REFBLCAweDQ3QjYsIDB4N0RBQiwgMHgxN0NGLCAweDdEQUMsIDB4MDkyNiwgMHg3REFELCAweDA0QTEsDQorICAgIDB4N0RBRSwgMHgxN0NBLCAweDdEQUYsIDB4MTdEMiwgMHg3REIwLCAweDE3RDYsIDB4N0RCMSwgMHgwN0RELA0KKyAgICAweDdEQjIsIDB4MEVFMiwgMHg3REIzLCAweDRDRDQsIDB4N0RCNCwgMHgwQkYyLCAweDdEQjUsIDB4MTdDQywNCisgICAgMHg3REI2LCAweDQ3QjcsIDB4N0RCNywgMHgyMTkxLCAweDdEQjgsIDB4MTdENCwgMHg3REI5LCAweDRDRDUsDQorICAgIDB4N0RCQSwgMHgxN0M5LCAweDdEQkIsIDB4MEI3QywgMHg3REJELCAweDE3Q0UsIDB4N0RCRSwgMHgwNDgxLA0KKyAgICAweDdEQkYsIDB4MEVENiwgMHg3REMwLCAweDQ3QjgsIDB4N0RDMiwgMHg0Mjk0LCAweDdEQzcsIDB4MTdDRCwNCisgICAgMHg3RENBLCAweDA2RDMsIDB4N0RDQiwgMHgwRDgwLCAweDdEQ0MsIDB4M0E4NiwgMHg3RENGLCAweDBBRUYsDQorICAgIDB4N0REMCwgMHg0Q0Q2LCAweDdERDEsIDB4MEY5OCwgMHg3REQyLCAweDA5NzksIDB4N0RENSwgMHgxN0ZELA0KKyAgICAweDdERDYsIDB4MjE5MywgMHg3REQ3LCAweDQ3QjksIDB4N0REOCwgMHgxN0Q3LCAweDdERDksIDB4NDdCQSwNCisgICAgMHg3RERBLCAweDBBQTIsIDB4N0REQywgMHgxN0QzLCAweDdEREQsIDB4MTdEOCwgMHg3RERFLCAweDE3REEsDQorICAgIDB4N0RFMCwgMHgwQzE1LCAweDdERTEsIDB4MTdERCwgMHg3REUzLCAweDM0MEEsIDB4N0RFNCwgMHgxN0Q5LA0KKyAgICAweDdERTUsIDB4NENENywgMHg3REU2LCAweDQ3QkIsIDB4N0RFOCwgMHgwRTI0LCAweDdERTksIDB4MDYwNywNCisgICAgMHg3REVCLCAweDNBODcsIDB4N0RFQywgMHgwRUQ3LCAweDdERUYsIDB4MDRBMiwgMHg3REYxLCAweDNBODgsDQorICAgIDB4N0RGMiwgMHgxN0RDLCAweDdERjQsIDB4MEZDNSwgMHg3REY1LCAweDRDRDgsIDB4N0RGNiwgMHg0Q0Q5LA0KKyAgICAweDdERjksIDB4M0E4OSwgMHg3REZCLCAweDE3REIsIDB4N0UwMSwgMHgwNTExLCAweDdFMDQsIDB4MENDNCwNCisgICAgMHg3RTA1LCAweDE3REUsIDB4N0UwOCwgMHgzQThBLCAweDdFMDksIDB4MTdFNSwgMHg3RTBBLCAweDE3REYsDQorICAgIDB4N0UwQiwgMHgxN0U2LCAweDdFMTAsIDB4NDdCRiwgMHg3RTExLCAweDNBOEIsIDB4N0UxMiwgMHgxN0UyLA0KKyAgICAweDdFMTUsIDB4M0E4QywgMHg3RTE3LCAweDQ3QzAsIDB4N0UxQiwgMHgwRDMxLCAweDdFMUQsIDB4NDdDMSwNCisgICAgMHg3RTFFLCAweDA4RjYsIDB4N0UxRiwgMHgxN0U0LCAweDdFMjAsIDB4M0E4RCwgMHg3RTIxLCAweDE3RTEsDQorICAgIDB4N0UyMiwgMHgxN0U3LCAweDdFMjMsIDB4MTdFMCwgMHg3RTI2LCAweDA5NEUsIDB4N0UyNywgMHg0N0MyLA0KKyAgICAweDdFMjgsIDB4NDI5NSwgMHg3RTJCLCAweDBFNTMsIDB4N0UyQywgMHg0N0MzLCAweDdFMkUsIDB4MDk1NiwNCisgICAgMHg3RTJGLCAweDRDREEsIDB4N0UzMSwgMHgxN0UzLCAweDdFMzIsIDB4MTdFRiwgMHg3RTM1LCAweDE3RUIsDQorICAgIDB4N0UzNiwgMHg0Q0RCLCAweDdFMzcsIDB4MTdFRSwgMHg3RTM5LCAweDE3RUMsIDB4N0UzQSwgMHgxN0YwLA0KKyAgICAweDdFM0IsIDB4MTdFQSwgMHg3RTNELCAweDE3RDAsIDB4N0UzRSwgMHgwQTc3LCAweDdFNDEsIDB4MEQ1RiwNCisgICAgMHg3RTQzLCAweDE3RUQsIDB4N0U0NCwgMHg0Q0RDLCAweDdFNDUsIDB4NDdDNCwgMHg3RTQ2LCAweDE3RTgsDQorICAgIDB4N0U0NywgMHgzQThFLCAweDdFNDgsIDB4Mzc2NywgMHg3RTRBLCAweDBBQTMsIDB4N0U0QiwgMHgwNzI4LA0KKyAgICAweDdFNEQsIDB4MDkzNSwgMHg3RTUyLCAweDIxOTQsIDB4N0U1NCwgMHgwOUVCLCAweDdFNTUsIDB4MEFCOCwNCisgICAgMHg3RTU2LCAweDE3RjMsIDB4N0U1OSwgMHgxN0Y1LCAweDdFNUEsIDB4MTdGNiwgMHg3RTVELCAweDE3RjIsDQorICAgIDB4N0U1RSwgMHgxN0Y0LCAweDdFNjEsIDB4MUUxMSwgMHg3RTYyLCAweDNBOEYsIDB4N0U2NiwgMHgxN0U5LA0KKyAgICAweDdFNjcsIDB4MTdGMSwgMHg3RTY5LCAweDE3RjksIDB4N0U2QSwgMHgxN0Y4LCAweDdFNkIsIDB4MURGNywNCisgICAgMHg3RTZELCAweDBFQTgsIDB4N0U2RSwgMHgzQTkwLCAweDdFNkYsIDB4NENERCwgMHg3RTcwLCAweDA3MDEsDQorICAgIDB4N0U3MywgMHgzQTkxLCAweDdFNzUsIDB4NDdDNSwgMHg3RTc4LCAweDRDREUsIDB4N0U3OSwgMHgxN0Y3LA0KKyAgICAweDdFN0IsIDB4MTdGQiwgMHg3RTdDLCAweDE3RkEsIDB4N0U3RCwgMHgxN0ZFLCAweDdFN0UsIDB4NDdDNiwNCisgICAgMHg3RTdGLCAweDE4MDAsIDB4N0U4MSwgMHg0Q0RGLCAweDdFODIsIDB4MDg4QSwgMHg3RTgzLCAweDE3RkMsDQorICAgIDB4N0U4NiwgMHg0N0M3LCAweDdFODcsIDB4NDdDOCwgMHg3RTg4LCAweDE4MDEsIDB4N0U4OSwgMHgxODAyLA0KKyAgICAweDdFOEEsIDB4MjBBNywgMHg3RThDLCAweDE4MDMsIDB4N0U4RCwgMHgzQTkyLCAweDdFOEUsIDB4MTgwOSwNCisgICAgMHg3RThGLCAweDBDMzUsIDB4N0U5MCwgMHgxODA1LCAweDdFOTEsIDB4M0E5MywgMHg3RTkyLCAweDE4MDQsDQorICAgIDB4N0U5MywgMHgxODA2LCAweDdFOTQsIDB4MTgwNywgMHg3RTk2LCAweDE4MDgsIDB4N0U5OCwgMHgzQTk0LA0KKyAgICAweDdFOUEsIDB4NDdDQSwgMHg3RTlCLCAweDE4MEEsIDB4N0U5QywgMHgxODBCLCAweDdGMzYsIDB4MDYwOCwNCisgICAgMHg3RjM4LCAweDE4MEMsIDB4N0YzQSwgMHgxODBELCAweDdGM0IsIDB4NDdDRCwgMHg3RjNDLCAweDQ3Q0MsDQorICAgIDB4N0YzRCwgMHg0Q0UwLCAweDdGM0UsIDB4NDdDRSwgMHg3RjQzLCAweDQ3Q0YsIDB4N0Y0NCwgMHgzQTk1LA0KKyAgICAweDdGNDUsIDB4MTgwRSwgMHg3RjQ3LCAweDIxOTUsIDB4N0Y0QywgMHgxODBGLCAweDdGNEQsIDB4MTgxMCwNCisgICAgMHg3RjRFLCAweDE4MTEsIDB4N0Y0RiwgMHgzQTk2LCAweDdGNTAsIDB4MTgxMiwgMHg3RjUxLCAweDE4MTMsDQorICAgIDB4N0Y1MiwgMHgzQTk3LCAweDdGNTMsIDB4M0E5OCwgMHg3RjU0LCAweDE4MTUsIDB4N0Y1NSwgMHgxODE0LA0KKyAgICAweDdGNTgsIDB4MTgxNiwgMHg3RjVCLCAweDRDRTEsIDB4N0Y1RCwgMHg0Q0UyLCAweDdGNUYsIDB4MTgxNywNCisgICAgMHg3RjYwLCAweDE4MTgsIDB4N0Y2MSwgMHgzQTk5LCAweDdGNjMsIDB4NDdEMywgMHg3RjY0LCAweDQ3RDQsDQorICAgIDB4N0Y2NSwgMHg0Q0UzLCAweDdGNjcsIDB4MTgxQiwgMHg3RjY4LCAweDE4MTksIDB4N0Y2OSwgMHgxODFBLA0KKyAgICAweDdGNkEsIDB4MDg1MSwgMHg3RjZCLCAweDA3MjksIDB4N0Y2RCwgMHg0N0Q1LCAweDdGNkUsIDB4MEI5NCwNCisgICAgMHg3RjcwLCAweDBENDcsIDB4N0Y3MSwgMHg0Q0U0LCAweDdGNzIsIDB4MDk3QSwgMHg3Rjc1LCAweDBEMDMsDQorICAgIDB4N0Y3NywgMHgwRDgxLCAweDdGNzgsIDB4MTgxQywgMHg3Rjc5LCAweDEzMzYsIDB4N0Y3RCwgMHg0N0Q2LA0KKyAgICAweDdGN0UsIDB4NDdENywgMHg3RjdGLCAweDRDRTUsIDB4N0Y4MCwgMHg0Q0U2LCAweDdGODIsIDB4MTgxRCwNCisgICAgMHg3RjgzLCAweDE4MUYsIDB4N0Y4NSwgMHgwRjRGLCAweDdGODYsIDB4MTgxRSwgMHg3Rjg3LCAweDE4MjEsDQorICAgIDB4N0Y4OCwgMHgxODIwLCAweDdGOEEsIDB4MEYzRCwgMHg3RjhCLCAweDRDRTcsIDB4N0Y4QywgMHgxODIyLA0KKyAgICAweDdGOEUsIDB4MEQ5MiwgMHg3RjkwLCAweDQ3RDgsIDB4N0Y5MSwgMHgzQTlBLCAweDdGOTQsIDB4MTgyMywNCisgICAgMHg3Rjk2LCAweDQ3REIsIDB4N0Y5NywgMHg0Mjk2LCAweDdGOUEsIDB4MTgyNiwgMHg3RjlDLCAweDQ3REMsDQorICAgIDB4N0Y5RCwgMHgxODI1LCAweDdGOUUsIDB4MTgyNCwgMHg3RkExLCAweDIxOTYsIDB4N0ZBMiwgMHg0Q0U4LA0KKyAgICAweDdGQTMsIDB4MTgyNywgMHg3RkE0LCAweDA3MDgsIDB4N0ZBOCwgMHgwQUE0LCAweDdGQTksIDB4MDY1QiwNCisgICAgMHg3RkFELCAweDQ3REQsIDB4N0ZBRSwgMHgxODJCLCAweDdGQUYsIDB4MTgyOCwgMHg3RkIyLCAweDE4MjksDQorICAgIDB4N0ZCNiwgMHgxODJDLCAweDdGQjgsIDB4MTgyRCwgMHg3RkI5LCAweDE4MkEsIDB4N0ZCRCwgMHgwNENCLA0KKyAgICAweDdGQkYsIDB4M0E5QiwgMHg3RkMxLCAweDA1MjcsIDB4N0ZDMywgMHg0N0RGLCAweDdGQzUsIDB4MTgyRiwNCisgICAgMHg3RkM2LCAweDE4MzAsIDB4N0ZDQSwgMHgxODMxLCAweDdGQ0MsIDB4MEY0QywgMHg3RkNFLCAweDNBOUMsDQorICAgIDB4N0ZDRiwgMHg0N0UwLCAweDdGRDIsIDB4MDkzNiwgMHg3RkQ0LCAweDE4MzMsIDB4N0ZENSwgMHgxODMyLA0KKyAgICAweDdGREIsIDB4NDI5NywgMHg3RkRGLCAweDNBOUQsIDB4N0ZFMCwgMHgwQTJGLCAweDdGRTEsIDB4MTgzNCwNCisgICAgMHg3RkUzLCAweDQ3RTEsIDB4N0ZFNSwgMHgzQTlFLCAweDdGRTYsIDB4MTgzNSwgMHg3RkU5LCAweDE4MzYsDQorICAgIDB4N0ZFQiwgMHgwNjIxLCAweDdGRUMsIDB4M0E5RiwgMHg3RkVFLCAweDNBQTAsIDB4N0ZFRiwgMHgzQUExLA0KKyAgICAweDdGRjAsIDB4MDYwOSwgMHg3RkYyLCAweDQ3RTIsIDB4N0ZGMywgMHgxODM3LCAweDdGRjksIDB4MTgzOCwNCisgICAgMHg3RkZBLCAweDNBQTIsIDB4N0ZGQiwgMHgwRThCLCAweDdGRkMsIDB4MEY0RCwgMHg3RkZELCAweDRDRTksDQorICAgIDB4N0ZGRSwgMHg0Q0VBLCAweDdGRkYsIDB4NENFQiwgMHg4MDAwLCAweDBGM0UsIDB4ODAwMSwgMHgwRkRELA0KKyAgICAweDgwMDIsIDB4MzcxMywgMHg4MDAzLCAweDA3REYsIDB4ODAwNCwgMHgxODNCLCAweDgwMDUsIDB4MDkwMCwNCisgICAgMHg4MDA2LCAweDE4M0EsIDB4ODAwNywgMHg0Q0VDLCAweDgwMDgsIDB4NDdFNCwgMHg4MDBBLCAweDQ3RTMsDQorICAgIDB4ODAwQiwgMHgxODNDLCAweDgwMEMsIDB4MDhENSwgMHg4MDBELCAweDRDRUQsIDB4ODAwRSwgMHgzQUEzLA0KKyAgICAweDgwMTAsIDB4MEIzMSwgMHg4MDExLCAweDNBQTQsIDB4ODAxMiwgMHgxODNELCAweDgwMTQsIDB4M0FBNSwNCisgICAgMHg4MDE1LCAweDA3REUsIDB4ODAxNiwgMHg0N0U1LCAweDgwMTcsIDB4MEVFMywgMHg4MDE4LCAweDE4M0UsDQorICAgIDB4ODAxOSwgMHgxODNGLCAweDgwMUMsIDB4MTg0MCwgMHg4MDFFLCAweDRDRUUsIDB4ODAyMSwgMHgxODQxLA0KKyAgICAweDgwMjQsIDB4M0FBNiwgMHg4MDI2LCAweDNBQTcsIDB4ODAyOCwgMHgxODQyLCAweDgwMkMsIDB4NDdFNiwNCisgICAgMHg4MDMwLCAweDQ3RTcsIDB4ODAzMywgMHgwOEQ2LCAweDgwMzUsIDB4NDI5OCwgMHg4MDM2LCAweDBFRjksDQorICAgIDB4ODAzNywgMHg0Mjk5LCAweDgwMzksIDB4NENFRiwgMHg4MDNBLCAweDNBQTgsIDB4ODAzQiwgMHgxODQ0LA0KKyAgICAweDgwM0MsIDB4M0FBOSwgMHg4MDNELCAweDBCN0QsIDB4ODAzRiwgMHgxODQzLCAweDgwNDMsIDB4NDdFOCwNCisgICAgMHg4MDQ2LCAweDE4NDYsIDB4ODA0QSwgMHgxODQ1LCAweDgwNTIsIDB4MTg0NywgMHg4MDU2LCAweDBBNUYsDQorICAgIDB4ODA1OCwgMHgxODQ4LCAweDgwNUEsIDB4MTg0OSwgMHg4MDVFLCAweDBFMDksIDB4ODA1RiwgMHgxODRBLA0KKyAgICAweDgwNjAsIDB4M0FBQSwgMHg4MDYxLCAweDBBRjEsIDB4ODA2MiwgMHgxODRCLCAweDgwNjYsIDB4NDdFOSwNCisgICAgMHg4MDY4LCAweDE4NEMsIDB4ODA2RiwgMHgwRkM2LCAweDgwNzAsIDB4MTg0RiwgMHg4MDcxLCAweDNBQUIsDQorICAgIDB4ODA3MiwgMHgxODRFLCAweDgwNzMsIDB4MTg0RCwgMHg4MDc0LCAweDBCQ0MsIDB4ODA3NSwgMHgzQUFDLA0KKyAgICAweDgwNzYsIDB4MTg1MCwgMHg4MDc3LCAweDA5RUMsIDB4ODA3OSwgMHgxODUxLCAweDgwN0IsIDB4NDdFQSwNCisgICAgMHg4MDdELCAweDE4NTIsIDB4ODA3RSwgMHgwRkRFLCAweDgwN0YsIDB4MTg1MywgMHg4MDg0LCAweDE4NTQsDQorICAgIDB4ODA4NSwgMHgxODU2LCAweDgwODYsIDB4MTg1NSwgMHg4MDg3LCAweDBEMzksIDB4ODA4OCwgMHg0Q0YwLA0KKyAgICAweDgwODksIDB4MENEMSwgMHg4MDhCLCAweDBGRTQsIDB4ODA4QywgMHgwRDNELCAweDgwOEUsIDB4NENGMSwNCisgICAgMHg4MDkzLCAweDE4NTgsIDB4ODA5NiwgMHgwOUJCLCAweDgwOTgsIDB4MEQ5QywgMHg4MDk5LCAweDQ3RUIsDQorICAgIDB4ODA5QSwgMHgxODU5LCAweDgwOUIsIDB4MTg1NywgMHg4MDlDLCAweDQ3RUMsIDB4ODA5RCwgMHgwNjBBLA0KKyAgICAweDgwOUUsIDB4M0FBRCwgMHg4MEExLCAweDA3ODgsIDB4ODBBMiwgMHgwOEI2LCAweDgwQTQsIDB4NDdFRCwNCisgICAgMHg4MEE1LCAweDBEODIsIDB4ODBBNiwgMHgzQUFFLCAweDgwQTcsIDB4NDdFRSwgMHg4MEE5LCAweDA3NUUsDQorICAgIDB4ODBBQSwgMHgwRTcxLCAweDgwQUIsIDB4M0FBRiwgMHg4MEFDLCAweDE4NUMsIDB4ODBBRCwgMHgxODVBLA0KKyAgICAweDgwQUYsIDB4MDdFMCwgMHg4MEIxLCAweDA3RTEsIDB4ODBCMiwgMHgwNEFELCAweDgwQjQsIDB4MDg1OCwNCisgICAgMHg4MEI4LCAweDQ3RUYsIDB4ODBCQSwgMHgwRDBGLCAweDgwQzMsIDB4MDRBMywgMHg4MEM0LCAweDE4NjEsDQorICAgIDB4ODBDNSwgMHg0N0YxLCAweDgwQzYsIDB4MEI3RSwgMHg4MENBLCAweDQyOUEsIDB4ODBDQywgMHgwRDBFLA0KKyAgICAweDgwQ0UsIDB4MEIzQiwgMHg4MENGLCAweDRDRjIsIDB4ODBENCwgMHg0Q0YzLCAweDgwRDUsIDB4NDdGMiwNCisgICAgMHg4MEQ2LCAweDE4NjMsIDB4ODBENywgMHgzQUIwLCAweDgwRDgsIDB4M0FCMSwgMHg4MEQ5LCAweDE4NUYsDQorICAgIDB4ODBEQSwgMHgxODYyLCAweDgwREIsIDB4MTg1RCwgMHg4MERELCAweDE4NjAsIDB4ODBERSwgMHgwRTU0LA0KKyAgICAweDgwRTAsIDB4NDI5QiwgMHg4MEUxLCAweDA3ODksIDB4ODBFNCwgMHgwNEMxLCAweDgwRTUsIDB4MTg1RSwNCisgICAgMHg4MEU2LCAweDQ3RjMsIDB4ODBFRCwgMHg0Q0Y0LCAweDgwRUYsIDB4MTg2NSwgMHg4MEYwLCAweDRDRjUsDQorICAgIDB4ODBGMSwgMHgxODY2LCAweDgwRjMsIDB4NDI5QywgMHg4MEY0LCAweDBDOTEsIDB4ODBGNSwgMHg0N0Y1LA0KKyAgICAweDgwRjcsIDB4NENGNiwgMHg4MEY4LCAweDA2QjMsIDB4ODBGQSwgMHg0Q0Y3LCAweDgwRkIsIDB4NDdGNiwNCisgICAgMHg4MEZDLCAweDE4NzEsIDB4ODBGRCwgMHgwQ0YzLCAweDgwRkUsIDB4NENGOCwgMHg4MTAyLCAweDA4QjcsDQorICAgIDB4ODEwMywgMHg0Q0Y5LCAweDgxMDUsIDB4MDZCNCwgMHg4MTA2LCAweDBBNkMsIDB4ODEwNywgMHgwRkVDLA0KKyAgICAweDgxMDgsIDB4MEVCQSwgMHg4MTA5LCAweDE4NjQsIDB4ODEwQSwgMHgwQTc4LCAweDgxMEQsIDB4NDdGNCwNCisgICAgMHg4MTE2LCAweDNBQjIsIDB4ODExNywgMHg0Q0ZBLCAweDgxMTgsIDB4M0FCMywgMHg4MTFBLCAweDA2NkQsDQorICAgIDB4ODExQiwgMHgxODY3LCAweDgxMUUsIDB4NDdGOSwgMHg4MTIzLCAweDE4NjksIDB4ODEyNCwgMHg0N0ZCLA0KKyAgICAweDgxMjcsIDB4NDdGQywgMHg4MTI5LCAweDE4NjgsIDB4ODEyQiwgMHgzNjU5LCAweDgxMkMsIDB4NDdGRCwNCisgICAgMHg4MTJGLCAweDE4NkEsIDB4ODEzMCwgMHg0Q0ZCLCAweDgxMzEsIDB4MEI2NCwgMHg4MTMzLCAweDBDRjQsDQorICAgIDB4ODEzNSwgMHg0N0Y4LCAweDgxMzksIDB4MEJDRCwgMHg4MTNBLCAweDNBQjQsIDB4ODEzRCwgMHg0N0ZGLA0KKyAgICAweDgxM0UsIDB4MTg2RSwgMHg4MTQxLCAweDM3NzIsIDB4ODE0NiwgMHgxODZELCAweDgxNEEsIDB4M0FCNSwNCisgICAgMHg4MTRCLCAweDE4NkIsIDB4ODE0QywgMHgzQUI2LCAweDgxNEUsIDB4MEExQiwgMHg4MTUwLCAweDBERDcsDQorICAgIDB4ODE1MSwgMHgxODcwLCAweDgxNTMsIDB4MTg2RiwgMHg4MTU0LCAweDA3RTIsIDB4ODE1NSwgMHgwRkY5LA0KKyAgICAweDgxNTcsIDB4NENGQywgMHg4MTVGLCAweDE4ODAsIDB4ODE2MCwgMHg0MjlELCAweDgxNjUsIDB4MTg3NCwNCisgICAgMHg4MTY2LCAweDE4NzUsIDB4ODE2NywgMHg0MjlFLCAweDgxNjgsIDB4NDI5RiwgMHg4MTY5LCAweDQ4MDEsDQorICAgIDB4ODE2QiwgMHgwOTFDLCAweDgxNkQsIDB4NDJBMCwgMHg4MTZFLCAweDE4NzMsIDB4ODE2RiwgMHg0Q0ZELA0KKyAgICAweDgxNzAsIDB4MDgwQSwgMHg4MTcxLCAweDE4NzIsIDB4ODE3MywgMHg0Q0ZFLCAweDgxNzQsIDB4MTg3NiwNCisgICAgMHg4MTc4LCAweDBCQ0UsIDB4ODE3OSwgMHgwREYyLCAweDgxN0EsIDB4MEFBNSwgMHg4MTdGLCAweDBCM0MsDQorICAgIDB4ODE4MCwgMHgxODdBLCAweDgxODEsIDB4M0FCNywgMHg4MTgyLCAweDE4N0IsIDB4ODE4MywgMHgxODc3LA0KKyAgICAweDgxODQsIDB4M0FCOCwgMHg4MTg1LCAweDQ4MDQsIDB4ODE4OCwgMHgxODc4LCAweDgxOEEsIDB4MTg3OSwNCisgICAgMHg4MThCLCAweDRDRkYsIDB4ODE4RiwgMHgwN0UzLCAweDgxOTAsIDB4NEQwMCwgMHg4MTkzLCAweDE4ODEsDQorICAgIDB4ODE5NSwgMHgxODdELCAweDgxOTgsIDB4NDgwNiwgMHg4MTlBLCAweDBERDgsIDB4ODE5QiwgMHg0RDAxLA0KKyAgICAweDgxOUMsIDB4MEU5QSwgMHg4MTlELCAweDBEOUEsIDB4ODE5RSwgMHg0RDAyLCAweDgxQTAsIDB4MTg3QywNCisgICAgMHg4MUEzLCAweDE4N0YsIDB4ODFBNCwgMHgxODdFLCAweDgxQTgsIDB4MEU3MiwgMHg4MUE5LCAweDE4ODIsDQorICAgIDB4ODFCMCwgMHgxODgzLCAweDgxQjIsIDB4NDgwNywgMHg4MUIzLCAweDBBQjksIDB4ODFCNCwgMHgzQUI5LA0KKyAgICAweDgxQjUsIDB4MTg4NCwgMHg4MUI4LCAweDE4ODYsIDB4ODFCQSwgMHgxODhBLCAweDgxQkIsIDB4NDJBMSwNCisgICAgMHg4MUJELCAweDE4ODcsIDB4ODFCRSwgMHgxODg1LCAweDgxQkYsIDB4MENGNSwgMHg4MUMwLCAweDE4ODgsDQorICAgIDB4ODFDMSwgMHg0ODA4LCAweDgxQzIsIDB4MTg4OSwgMHg4MUMzLCAweDQ4MDksIDB4ODFDNiwgMHgwNTMyLA0KKyAgICAweDgxQzgsIDB4MTg5MCwgMHg4MUM5LCAweDE4OEIsIDB4ODFDQSwgMHg0MkEyLCAweDgxQ0IsIDB4NEQwMywNCisgICAgMHg4MUNELCAweDE4OEMsIDB4ODFDRiwgMHgzQUJBLCAweDgxRDEsIDB4MTg4RCwgMHg4MUQzLCAweDBCMDEsDQorICAgIDB4ODFENSwgMHg0RDA0LCAweDgxRDYsIDB4NDgwQSwgMHg4MUQ3LCAweDQyQTMsIDB4ODFEOCwgMHgxODhGLA0KKyAgICAweDgxRDksIDB4MTg4RSwgMHg4MURBLCAweDE4OTEsIDB4ODFEQiwgMHg0ODBCLCAweDgxREQsIDB4NEQwNSwNCisgICAgMHg4MURFLCAweDREMDYsIDB4ODFERiwgMHgxODkyLCAweDgxRTAsIDB4MTg5MywgMHg4MUUxLCAweDREMDcsDQorICAgIDB4ODFFMywgMHgwQTA5LCAweDgxRTQsIDB4NDgwRCwgMHg4MUU1LCAweDA1NjksIDB4ODFFNywgMHgxODk0LA0KKyAgICAweDgxRTgsIDB4MEY5RiwgMHg4MUVBLCAweDA4RDcsIDB4ODFFQywgMHg0ODBGLCAweDgxRUQsIDB4MDkzNywNCisgICAgMHg4MUVGLCAweDREMDgsIDB4ODFGMywgMHgwOEI4LCAweDgxRjQsIDB4MEI5NSwgMHg4MUY2LCAweDREMDksDQorICAgIDB4ODFGOSwgMHgzQUJCLCAweDgxRkEsIDB4MTg5NSwgMHg4MUZCLCAweDE4OTYsIDB4ODFGQywgMHgwNEQzLA0KKyAgICAweDgxRkQsIDB4NDgxMCwgMHg4MUZFLCAweDE4OTcsIDB4ODFGRiwgMHg0ODExLCAweDgyMDAsIDB4NEQwQSwNCisgICAgMHg4MjAxLCAweDE4OTgsIDB4ODIwMiwgMHgxODk5LCAweDgyMDMsIDB4M0FCQywgMHg4MjA0LCAweDQ4MTMsDQorICAgIDB4ODIwNSwgMHgxODlBLCAweDgyMDcsIDB4MTg5QiwgMHg4MjA4LCAweDA2QjUsIDB4ODIwOSwgMHgxM0FGLA0KKyAgICAweDgyMEEsIDB4MTg5QywgMHg4MjBCLCAweDREMEIsIDB4ODIwQywgMHgwQTg5LCAweDgyMEQsIDB4MTg5RCwNCisgICAgMHg4MjBFLCAweDA4RjcsIDB4ODIxMCwgMHgxODlFLCAweDgyMTIsIDB4MTAwOSwgMHg4MjEzLCAweDREMEMsDQorICAgIDB4ODIxNCwgMHg0RDBELCAweDgyMTYsIDB4MTg5RiwgMHg4MjE3LCAweDBFMkUsIDB4ODIxOCwgMHgwNjE4LA0KKyAgICAweDgyMTksIDB4NDgxNSwgMHg4MjFBLCAweDREMEUsIDB4ODIxQiwgMHgwQUE2LCAweDgyMUMsIDB4MDk2MiwNCisgICAgMHg4MjFFLCAweDBERTMsIDB4ODIxRiwgMHgwOTM4LCAweDgyMjEsIDB4M0FCRCwgMHg4MjIyLCAweDQ4MTYsDQorICAgIDB4ODIyOSwgMHgxOEEwLCAweDgyMkEsIDB4MDdFNCwgMHg4MjJCLCAweDE4QTEsIDB4ODIyQywgMHgwRDYwLA0KKyAgICAweDgyMkUsIDB4MThBRiwgMHg4MjMyLCAweDNBQkUsIDB4ODIzMywgMHgxOEEzLCAweDgyMzQsIDB4M0FCRiwNCisgICAgMHg4MjM1LCAweDBCMjksIDB4ODIzNiwgMHgwRDJCLCAweDgyMzcsIDB4MDc3MywgMHg4MjM4LCAweDE4QTIsDQorICAgIDB4ODIzOSwgMHgwQUE3LCAweDgyM0EsIDB4NEQwRiwgMHg4MjNDLCAweDQ4MTgsIDB4ODI0MCwgMHgxOEE0LA0KKyAgICAweDgyNDQsIDB4NEQxMCwgMHg4MjQ1LCAweDQ4MUEsIDB4ODI0NiwgMHgzQUMwLCAweDgyNDcsIDB4MEMxNiwNCisgICAgMHg4MjQ5LCAweDQ4MTksIDB4ODI0QiwgMHgzQUMxLCAweDgyNEYsIDB4M0FDMiwgMHg4MjU3LCAweDQ4MUUsDQorICAgIDB4ODI1OCwgMHgxOEE2LCAweDgyNTksIDB4MThBNSwgMHg4MjVBLCAweDE4QTgsIDB4ODI1QywgMHg0ODIwLA0KKyAgICAweDgyNUQsIDB4MThBNywgMHg4MjVGLCAweDE4QTksIDB4ODI2MCwgMHg0MkE1LCAweDgyNjIsIDB4MThBQiwNCisgICAgMHg4MjYzLCAweDQ4MjEsIDB4ODI2NCwgMHgxOEFBLCAweDgyNjYsIDB4MDYwQiwgMHg4MjY4LCAweDE4QUMsDQorICAgIDB4ODI2QSwgMHgxOEFELCAweDgyNkIsIDB4MThBRSwgMHg4MjZELCAweDREMTEsIDB4ODI2RSwgMHgwODIxLA0KKyAgICAweDgyNkYsIDB4MEY5MSwgMHg4MjcxLCAweDE4QjAsIDB4ODI3MiwgMHgwOUVELCAweDgyNzQsIDB4NDJBNiwNCisgICAgMHg4Mjc2LCAweDA1MTIsIDB4ODI3NywgMHgxOEIxLCAweDgyNzgsIDB4MThCMiwgMHg4Mjc5LCAweDM3NzUsDQorICAgIDB4ODI3RCwgMHg0ODI0LCAweDgyN0UsIDB4MThCMywgMHg4MjdGLCAweDQ4MjUsIDB4ODI4MywgMHg0ODI2LA0KKyAgICAweDgyODQsIDB4NEQxMiwgMHg4Mjg5LCAweDREMTMsIDB4ODI4QSwgMHg0ODI3LCAweDgyOEIsIDB4MDRCNiwNCisgICAgMHg4MjhELCAweDE4QjQsIDB4ODI4RSwgMHgzQUMzLCAweDgyOTEsIDB4NEQxNCwgMHg4MjkyLCAweDE4QjUsDQorICAgIDB4ODI5MywgMHg0ODI4LCAweDgyOTksIDB4MEREOSwgMHg4MjlELCAweDA4RjMsIDB4ODI5RiwgMHgxOEI3LA0KKyAgICAweDgyQTEsIDB4NDJBOCwgMHg4MkEzLCAweDQyQTksIDB4ODJBNCwgMHg0MkFBLCAweDgyQTUsIDB4MDU4NywNCisgICAgMHg4MkE2LCAweDA0NzYsIDB4ODJBNywgMHg0ODI5LCAweDgyQTgsIDB4NDgyQSwgMHg4MkE5LCAweDQyQUIsDQorICAgIDB4ODJBQSwgMHg0RDE1LCAweDgyQUIsIDB4MThCNiwgMHg4MkFDLCAweDE4QjksIDB4ODJBRCwgMHgwRDA0LA0KKyAgICAweDgyQUUsIDB4M0FDNCwgMHg4MkFGLCAweDBBMEEsIDB4ODJCMCwgMHg0RDE2LCAweDgyQjEsIDB4MDU1NiwNCisgICAgMHg4MkIyLCAweDQ4MkIsIDB4ODJCMywgMHgwRTU1LCAweDgyQjQsIDB4NDgyQywgMHg4MkI3LCAweDNBQzUsDQorICAgIDB4ODJCOCwgMHgwNzMzLCAweDgyQjksIDB4MDZENCwgMHg4MkJBLCAweDQ4MkQsIDB4ODJCQiwgMHgxOEI4LA0KKyAgICAweDgyQkMsIDB4NDgyRSwgMHg4MkJELCAweDA1NkEsIDB4ODJCRSwgMHgzQUM2LCAweDgyQkYsIDB4NDJBQywNCisgICAgMHg4MkM1LCAweDA1REYsIDB4ODJDNiwgMHgzQUM3LCAweDgyRDAsIDB4NEQxNywgMHg4MkQxLCAweDA1MTMsDQorICAgIDB4ODJEMiwgMHgxOEJELCAweDgyRDMsIDB4MEZCMiwgMHg4MkQ0LCAweDBCM0QsIDB4ODJENSwgMHg0MkFELA0KKyAgICAweDgyRDcsIDB4MERCNiwgMHg4MkQ5LCAweDE4QzksIDB4ODJEQiwgMHgwNTU3LCAweDgyREMsIDB4MThDNywNCisgICAgMHg4MkRFLCAweDE4QzUsIDB4ODJERiwgMHgxOEJDLCAweDgyRTEsIDB4MThCQSwgMHg4MkUyLCAweDQ4MkYsDQorICAgIDB4ODJFMywgMHgxOEJCLCAweDgyRTUsIDB4MDkwRiwgMHg4MkU2LCAweDA2RTQsIDB4ODJFNywgMHgwQkI1LA0KKyAgICAweDgyRTgsIDB4NDgzMCwgMHg4MkVBLCAweDREMTgsIDB4ODJFQiwgMHgwQ0E5LCAweDgyRUYsIDB4NEQxOSwNCisgICAgMHg4MkYxLCAweDA0RjMsIDB4ODJGMywgMHgxOEJGLCAweDgyRjQsIDB4MThCRSwgMHg4MkY2LCAweDREMUEsDQorICAgIDB4ODJGNywgMHg0ODMxLCAweDgyRjksIDB4MThDNCwgMHg4MkZBLCAweDE4QzAsIDB4ODJGQiwgMHgxOEMzLA0KKyAgICAweDgyRkQsIDB4NDJBRSwgMHg4MkZFLCAweDNBQzgsIDB4ODMwMCwgMHg0MkFGLCAweDgzMDEsIDB4MjE5OCwNCisgICAgMHg4MzAyLCAweDBFREMsIDB4ODMwMywgMHgxOEMyLCAweDgzMDQsIDB4MDU1OCwgMHg4MzA1LCAweDA1REIsDQorICAgIDB4ODMwNiwgMHgxOEM2LCAweDgzMDcsIDB4NDgzMiwgMHg4MzA4LCAweDQ4MzMsIDB4ODMwOSwgMHgxOEM4LA0KKyAgICAweDgzMEMsIDB4NDgzNCwgMHg4MzBFLCAweDA3MkEsIDB4ODMxNiwgMHgxOENDLCAweDgzMTcsIDB4MThENSwNCisgICAgMHg4MzE4LCAweDE4RDYsIDB4ODMxQiwgMHg0ODM2LCAweDgzMUMsIDB4MDQ2RiwgMHg4MzFELCAweDQ4MzcsDQorICAgIDB4ODMyMiwgMHg0MkIwLCAweDgzMjMsIDB4MThERCwgMHg4MzI4LCAweDA0QjUsIDB4ODMyQiwgMHgxOEQ0LA0KKyAgICAweDgzMkQsIDB4NDJCMSwgMHg4MzJGLCAweDE4RDMsIDB4ODMzMCwgMHg0ODM4LCAweDgzMzEsIDB4MThDRSwNCisgICAgMHg4MzMyLCAweDE4Q0QsIDB4ODMzNCwgMHgxOENCLCAweDgzMzUsIDB4MThDQSwgMHg4MzM2LCAweDBCQTEsDQorICAgIDB4ODMzOCwgMHgwQjVCLCAweDgzMzksIDB4MThEMCwgMHg4MzNBLCAweDQyQjIsIDB4ODMzQywgMHg0ODM5LA0KKyAgICAweDgzNDAsIDB4MThDRiwgMHg4MzQzLCAweDNBQzksIDB4ODM0NCwgMHg0ODNBLCAweDgzNDUsIDB4MThEMiwNCisgICAgMHg4MzQ2LCAweDFERjgsIDB4ODM0NywgMHg0MkIzLCAweDgzNDksIDB4MEFGMiwgMHg4MzRBLCAweDA3MkIsDQorICAgIDB4ODM0RiwgMHgwNEUzLCAweDgzNTAsIDB4MThEMSwgMHg4MzUxLCAweDNBQ0EsIDB4ODM1MiwgMHgwN0U1LA0KKyAgICAweDgzNTQsIDB4NDgzNSwgMHg4MzU1LCAweDNBQ0IsIDB4ODM1NiwgMHg0RDFCLCAweDgzNTcsIDB4NDgzQiwNCisgICAgMHg4MzU4LCAweDBBRjMsIDB4ODM1QSwgMHgzNzdBLCAweDgzNjIsIDB4MjE5OSwgMHg4MzYzLCAweDQ1NkYsDQorICAgIDB4ODM3MywgMHgxOEUzLCAweDgzNzUsIDB4MThFNCwgMHg4Mzc3LCAweDA1NTksIDB4ODM3OCwgMHg0RDFDLA0KKyAgICAweDgzN0IsIDB4MDUyRSwgMHg4MzdDLCAweDE4RTEsIDB4ODM3RCwgMHg0MkI0LCAweDgzN0YsIDB4MjE5QSwNCisgICAgMHg4Mzg1LCAweDE4RDcsIDB4ODM4NiwgMHgzQUNDLCAweDgzODcsIDB4MThERiwgMHg4Mzg5LCAweDE4RTYsDQorICAgIDB4ODM4QSwgMHgxOEUwLCAweDgzOEQsIDB4M0FDRCwgMHg4MzhFLCAweDE4REUsIDB4ODM5MiwgMHgzQUNFLA0KKyAgICAweDgzOTMsIDB4MThDMSwgMHg4Mzk0LCAweDQ4M0YsIDB4ODM5NSwgMHg0ODQwLCAweDgzOTYsIDB4MThEQywNCisgICAgMHg4Mzk4LCAweDNBQ0YsIDB4ODM5QSwgMHgxOEQ4LCAweDgzOUIsIDB4NDg0MSwgMHg4MzlELCAweDQ4NDIsDQorICAgIDB4ODM5RSwgMHgwNjBDLCAweDgzOUYsIDB4MThEQSwgMHg4M0EwLCAweDE4RTUsIDB4ODNBMiwgMHgxOERCLA0KKyAgICAweDgzQTcsIDB4NDJCNSwgMHg4M0E4LCAweDE4RTcsIDB4ODNBOSwgMHgzQUQwLCAweDgzQUEsIDB4MThEOSwNCisgICAgMHg4M0FCLCAweDBEMzIsIDB4ODNCMSwgMHgwRjUzLCAweDgzQjUsIDB4MThFMiwgMHg4M0JELCAweDE4RjgsDQorICAgIDB4ODNCRiwgMHgzQUQxLCAweDgzQzAsIDB4M0FEMiwgMHg4M0MxLCAweDE4RjAsIDB4ODNDNSwgMHgwQTQxLA0KKyAgICAweDgzQzcsIDB4MjE5QiwgMHg4M0M5LCAweDQ4NDMsIDB4ODNDQSwgMHgwNjYwLCAweDgzQ0MsIDB4MDZENSwNCisgICAgMHg4M0NFLCAweDE4RUIsIDB4ODNDRiwgMHg0MkI2LCAweDgzRDAsIDB4NDg0NCwgMHg4M0QxLCAweDQyQjcsDQorICAgIDB4ODNEMywgMHgwNTVCLCAweDgzRDQsIDB4NDg0NSwgMHg4M0Q2LCAweDA5QkMsIDB4ODNEOCwgMHgxOEVFLA0KKyAgICAweDgzREMsIDB4MDg0QSwgMHg4M0RELCAweDQ4NDYsIDB4ODNERiwgMHgwQzRCLCAweDgzRTAsIDB4MThGMywNCisgICAgMHg4M0UxLCAweDQyQjgsIDB4ODNFNSwgMHg0ODQ3LCAweDgzRTksIDB4MEUzRSwgMHg4M0VBLCAweDNBRDMsDQorICAgIDB4ODNFQiwgMHgxOEVBLCAweDgzRUYsIDB4MDU1QSwgMHg4M0YwLCAweDA3OEEsIDB4ODNGMSwgMHgwRDlCLA0KKyAgICAweDgzRjIsIDB4MThGNCwgMHg4M0Y0LCAweDE4RTgsIDB4ODNGNiwgMHgyMTlDLCAweDgzRjcsIDB4MThGMSwNCisgICAgMHg4M0Y4LCAweDREMUQsIDB4ODNGOSwgMHg0ODQ4LCAweDgzRkIsIDB4MThGQiwgMHg4M0ZDLCAweDREMUUsDQorICAgIDB4ODNGRCwgMHgxOEVDLCAweDg0MDEsIDB4NDJCOSwgMHg4NDAzLCAweDE4RUQsIDB4ODQwNCwgMHgwQzkyLA0KKyAgICAweDg0MDYsIDB4NDJCQSwgMHg4NDA3LCAweDE4RjIsIDB4ODQwQSwgMHgxRTdGLCAweDg0MEIsIDB4MThFRiwNCisgICAgMHg4NDBDLCAweDBFNTYsIDB4ODQwRCwgMHgxOEY1LCAweDg0MEUsIDB4MDRBNCwgMHg4NDBGLCAweDNBRDQsDQorICAgIDB4ODQxMSwgMHgzQUQ1LCAweDg0MTMsIDB4MThFOSwgMHg4NDE1LCAweDQ4NDksIDB4ODQxNywgMHg0ODRCLA0KKyAgICAweDg0MjAsIDB4MThGNywgMHg4NDIyLCAweDE4RjYsIDB4ODQyOSwgMHgwRDIxLCAweDg0MkEsIDB4MThGRCwNCisgICAgMHg4NDJDLCAweDE5MDgsIDB4ODQzMSwgMHgwNURDLCAweDg0MzUsIDB4MTkwQiwgMHg4NDM4LCAweDE4RjksDQorICAgIDB4ODQzOSwgMHg0ODRDLCAweDg0M0MsIDB4MThGRSwgMHg4NDNELCAweDBGNTgsIDB4ODQ0NiwgMHgxOTA3LA0KKyAgICAweDg0NDgsIDB4MjE5RCwgMHg4NDQ5LCAweDBGM0YsIDB4ODQ0QSwgMHgzQUQ2LCAweDg0NEUsIDB4MEY3MiwNCisgICAgMHg4NDRGLCAweDQ4NEQsIDB4ODQ1MSwgMHg0ODRFLCAweDg0NTIsIDB4NDg0RiwgMHg4NDU3LCAweDBCQjYsDQorICAgIDB4ODQ1OCwgMHg0RDFGLCAweDg0NTksIDB4NDg1MCwgMHg4NDVBLCAweDQ4NTEsIDB4ODQ1QiwgMHgwNUM5LA0KKyAgICAweDg0NUMsIDB4NDg1MiwgMHg4NDVGLCAweDQyQkIsIDB4ODQ2MSwgMHgwREU0LCAweDg0NjIsIDB4MTkwRCwNCisgICAgMHg4NDYzLCAweDBDNzksIDB4ODQ2NSwgMHg0ODU0LCAweDg0NjYsIDB4MDQ3NSwgMHg4NDY5LCAweDE5MDYsDQorICAgIDB4ODQ2QiwgMHgxOTAyLCAweDg0NkMsIDB4MEFGNCwgMHg4NDZELCAweDE4RkMsIDB4ODQ2RSwgMHgxOTA0LA0KKyAgICAweDg0NkYsIDB4MTkwOSwgMHg4NDcwLCAweDQyQkMsIDB4ODQ3MSwgMHgwQ0UyLCAweDg0NzMsIDB4NDJCRCwNCisgICAgMHg4NDc1LCAweDA0NkUsIDB4ODQ3NiwgMHgzQUQ3LCAweDg0NzcsIDB4MTkwMSwgMHg4NDc4LCAweDQ4NTUsDQorICAgIDB4ODQ3OSwgMHgxOTBBLCAweDg0N0EsIDB4MERFQSwgMHg4NDdDLCAweDQ4NTYsIDB4ODQ4MSwgMHg0ODU3LA0KKyAgICAweDg0ODIsIDB4MTkwNSwgMHg4NDg0LCAweDE5MDAsIDB4ODQ4NSwgMHg0MkJFLCAweDg0OEIsIDB4MDlCRCwNCisgICAgMHg4NDkwLCAweDA5MzksIDB4ODQ5MywgMHg0RDIwLCAweDg0OTQsIDB4MDhEOCwgMHg4NDk3LCAweDQ4NTksDQorICAgIDB4ODQ5OSwgMHgwRUU0LCAweDg0OUMsIDB4MERCOSwgMHg4NDlFLCAweDQyQkYsIDB4ODQ5RiwgMHgxOTEwLA0KKyAgICAweDg0QTEsIDB4MTkxOSwgMHg4NEE2LCAweDQ4NUEsIDB4ODRBOCwgMHgzQUQ4LCAweDg0QUQsIDB4MTkwMywNCisgICAgMHg4NEFGLCAweDNBRDksIDB4ODRCMSwgMHg0RDIxLCAweDg0QjIsIDB4MDVENSwgMHg4NEI0LCAweDIxOUUsDQorICAgIDB4ODRCOCwgMHgwOUUwLCAweDg0QjksIDB4MTkwRSwgMHg4NEJBLCAweDQyQzAsIDB4ODRCQiwgMHgxOTEzLA0KKyAgICAweDg0QkMsIDB4MEFGNSwgMHg4NEJELCAweDREMjIsIDB4ODRCRSwgMHg0ODVCLCAweDg0QkYsIDB4MTkwRiwNCisgICAgMHg4NEMwLCAweDNBREEsIDB4ODRDMSwgMHgxOTE2LCAweDg0QzIsIDB4M0FEQiwgMHg4NEM0LCAweDBCOUQsDQorICAgIDB4ODRDNiwgMHgxOTE3LCAweDg0QzksIDB4MEY0MCwgMHg4NENBLCAweDE5MEMsIDB4ODRDQiwgMHgwNTk2LA0KKyAgICAweDg0Q0QsIDB4MTkxMiwgMHg4NENFLCAweDQ4NUQsIDB4ODRDRiwgMHg0ODVFLCAweDg0RDAsIDB4MTkxNSwNCisgICAgMHg4NEQxLCAweDBFQjgsIDB4ODREMywgMHg0ODVGLCAweDg0RDYsIDB4MTkxOCwgMHg4NEQ5LCAweDE5MTEsDQorICAgIDB4ODREQSwgMHgxOTE0LCAweDg0REMsIDB4MjBBQiwgMHg4NEU3LCAweDQ4NjEsIDB4ODRFQSwgMHg0ODYyLA0KKyAgICAweDg0RUMsIDB4MEU1NywgMHg4NEVFLCAweDBGQzcsIDB4ODRFRiwgMHg0ODYzLCAweDg0RjAsIDB4M0FEQywNCisgICAgMHg4NEYxLCAweDQ4NjQsIDB4ODRGNCwgMHgxOTFDLCAweDg0RkEsIDB4NDg2NSwgMHg4NEZCLCAweDREMjMsDQorICAgIDB4ODRGQywgMHgxOTIzLCAweDg0RkQsIDB4M0FERCwgMHg4NEZGLCAweDE5MUIsIDB4ODUwMCwgMHgwOEVGLA0KKyAgICAweDg1MDYsIDB4MThGQSwgMHg4NTBDLCAweDNBREUsIDB4ODUxMSwgMHgwRTFFLCAweDg1MTMsIDB4MEVBRSwNCisgICAgMHg4NTE0LCAweDE5MjIsIDB4ODUxNSwgMHgxOTIxLCAweDg1MTcsIDB4MTkxRCwgMHg4NTE4LCAweDE5MUUsDQorICAgIDB4ODUxQSwgMHgwNEQ4LCAweDg1MUIsIDB4NDg2NiwgMHg4NTFFLCAweDQyQzMsIDB4ODUxRiwgMHgxOTIwLA0KKyAgICAweDg1MjEsIDB4MTkxQSwgMHg4NTIzLCAweDFFMUEsIDB4ODUyNCwgMHg0ODY3LCAweDg1MjUsIDB4NDg2OCwNCisgICAgMHg4NTI2LCAweDBCRjEsIDB4ODUyQiwgMHg0ODY5LCAweDg1MkMsIDB4MTkxRiwgMHg4NTJELCAweDA0QzIsDQorICAgIDB4ODUyRiwgMHg0MkM0LCAweDg1MzIsIDB4NDJDMiwgMHg4NTM0LCAweDNBREYsIDB4ODUzNSwgMHgwQjAyLA0KKyAgICAweDg1M0QsIDB4MEUxMywgMHg4NTNFLCAweDFFQjUsIDB4ODU0MCwgMHgxOTI0LCAweDg1NDEsIDB4MTkyOCwNCisgICAgMHg4NTQzLCAweDBENkQsIDB4ODU0NiwgMHg0RDI0LCAweDg1NDgsIDB4MTkyNywgMHg4NTQ5LCAweDA5QkUsDQorICAgIDB4ODU0QSwgMHgwOEY1LCAweDg1NEIsIDB4MTkyQSwgMHg4NTRFLCAweDA2QjYsIDB4ODU0RiwgMHg0ODZBLA0KKyAgICAweDg1NTEsIDB4NDg2RCwgMHg4NTUzLCAweDIxOUYsIDB4ODU1NSwgMHgxOTJCLCAweDg1NTYsIDB4NEQyNSwNCisgICAgMHg4NTU3LCAweDBERUIsIDB4ODU1OCwgMHgxOTI2LCAweDg1NTksIDB4MjFBMCwgMHg4NTVBLCAweDE4RkYsDQorICAgIDB4ODU1RCwgMHg0RDI2LCAweDg1NUUsIDB4M0FFMCwgMHg4NTYxLCAweDQ4NkUsIDB4ODU2MiwgMHg0ODZGLA0KKyAgICAweDg1NjMsIDB4MTkyNSwgMHg4NTY0LCAweDQyQzUsIDB4ODU2OCwgMHgwRkY1LCAweDg1NjksIDB4MEM3QSwNCisgICAgMHg4NTZBLCAweDBERTUsIDB4ODU2QiwgMHgyMUExLCAweDg1NkQsIDB4MTkzMiwgMHg4NTZGLCAweDQ4NkIsDQorICAgIDB4ODU3NywgMHgxOTM4LCAweDg1N0EsIDB4NDJDNiwgMHg4NTdCLCAweDQ4NzEsIDB4ODU3RCwgMHg0ODcyLA0KKyAgICAweDg1N0UsIDB4MTkzOSwgMHg4NTdGLCAweDQ4NzMsIDB4ODU4MCwgMHgxOTJDLCAweDg1ODEsIDB4NDg3NCwNCisgICAgMHg4NTg0LCAweDBEMkMsIDB4ODU4NSwgMHg0RDI3LCAweDg1ODYsIDB4NDg3NSwgMHg4NTg3LCAweDE5MzYsDQorICAgIDB4ODU4OCwgMHgxOTJFLCAweDg1OEEsIDB4MTkzMCwgMHg4NThDLCAweDQyQzcsIDB4ODU4RiwgMHgzQUUxLA0KKyAgICAweDg1OTAsIDB4MTkzQSwgMHg4NTkxLCAweDE5MkYsIDB4ODU5MywgMHg0ODc2LCAweDg1OTQsIDB4MTkzMywNCisgICAgMHg4NTk3LCAweDA1MTQsIDB4ODU5OCwgMHg0RDI4LCAweDg1OTksIDB4MENCRCwgMHg4NTlCLCAweDE5MzQsDQorICAgIDB4ODU5QywgMHgxOTM3LCAweDg1OUQsIDB4NDg3NywgMHg4NTlGLCAweDQ4NzgsIDB4ODVBMiwgMHg0MkM4LA0KKyAgICAweDg1QTQsIDB4MTkyRCwgMHg4NUE2LCAweDBBQTgsIDB4ODVBOCwgMHgxOTMxLCAweDg1QTksIDB4MDg3NSwNCisgICAgMHg4NUFBLCAweDBBMEIsIDB4ODVBQiwgMHgwNzA2LCAweDg1QUMsIDB4MEYwMCwgMHg4NUFELCAweDNBRTQsDQorICAgIDB4ODVBRSwgMHgwRjA1LCAweDg1QUYsIDB4MDk3QywgMHg4NUIwLCAweDIxQTMsIDB4ODVCNywgMHgzQUUyLA0KKyAgICAweDg1QjksIDB4MTkzRSwgMHg4NUJBLCAweDE5M0MsIDB4ODVCQywgMHg0ODdDLCAweDg1QzEsIDB4MEZGNCwNCisgICAgMHg4NUM3LCAweDQ4N0QsIDB4ODVDOSwgMHgxOTNCLCAweDg1Q0EsIDB4NDg3RSwgMHg4NUNCLCAweDQyQzksDQorICAgIDB4ODVDRCwgMHgwRjVGLCAweDg1Q0UsIDB4M0FFMywgMHg4NUNGLCAweDE5M0QsIDB4ODVEMCwgMHgxOTNGLA0KKyAgICAweDg1RDUsIDB4MTk0MCwgMHg4NUQ4LCAweDQ4N0YsIDB4ODVEOSwgMHg0ODgwLCAweDg1REMsIDB4MTk0MywNCisgICAgMHg4NURELCAweDE5NDEsIDB4ODVERiwgMHg0ODgxLCAweDg1RTEsIDB4NDg4MiwgMHg4NUU0LCAweDBDN0IsDQorICAgIDB4ODVFNSwgMHgxOTQyLCAweDg1RTYsIDB4NDg4MywgMHg4NUU5LCAweDBENjEsIDB4ODVFQSwgMHgxOTM1LA0KKyAgICAweDg1RUQsIDB4NDJDQSwgMHg4NUY0LCAweDM3ODAsIDB4ODVGNiwgMHg0ODg0LCAweDg1RjcsIDB4MDk3RCwNCisgICAgMHg4NUY5LCAweDE5NDQsIDB4ODVGQSwgMHgxOTQ5LCAweDg1RkIsIDB4MEFGNiwgMHg4NUZFLCAweDE5NDgsDQorICAgIDB4ODVGRiwgMHg0MkNCLCAweDg2MDAsIDB4NDg4NSwgMHg4NjAyLCAweDE5MjksIDB4ODYwNCwgMHg0MkNDLA0KKyAgICAweDg2MDUsIDB4NDJDRCwgMHg4NjA2LCAweDE5NEEsIDB4ODYwNywgMHgwQUNCLCAweDg2MEEsIDB4MTk0NSwNCisgICAgMHg4NjBCLCAweDE5NDcsIDB4ODYxMCwgMHg0MkNFLCAweDg2MTEsIDB4NDg4NiwgMHg4NjEyLCAweDNBRTUsDQorICAgIDB4ODYxMywgMHgxOTQ2LCAweDg2MTYsIDB4MTREMCwgMHg4NjE3LCAweDE0QzEsIDB4ODYxOCwgMHg0MkQwLA0KKyAgICAweDg2MUEsIDB4MTk0QywgMHg4NjFFLCAweDQ4ODcsIDB4ODYyMSwgMHg0ODg4LCAweDg2MjIsIDB4MTk0QiwNCisgICAgMHg4NjI0LCAweDQ4ODksIDB4ODYyNywgMHg0ODhBLCAweDg2MjksIDB4M0FFNiwgMHg4NjJELCAweDBGNjAsDQorICAgIDB4ODYyRiwgMHgxNkIxLCAweDg2MzAsIDB4MTk0RCwgMHg4NjM4LCAweDQyRDEsIDB4ODYzOSwgMHg0ODhDLA0KKyAgICAweDg2M0MsIDB4NDg4RCwgMHg4NjNGLCAweDE5NEUsIDB4ODY0MCwgMHg0ODhGLCAweDg2NDEsIDB4NDFCOCwNCisgICAgMHg4NjQyLCAweDREMjksIDB4ODY0NiwgMHg0RDJBLCAweDg2NEQsIDB4MTk0RiwgMHg4NjRFLCAweDA3OEIsDQorICAgIDB4ODY1MCwgMHgwNjZFLCAweDg2NTIsIDB4M0FFNywgMHg4NjUzLCAweDQ4OTAsIDB4ODY1NCwgMHgxOTUxLA0KKyAgICAweDg2NTUsIDB4MTA5NCwgMHg4NjU2LCAweDQ4OTEsIDB4ODY1NywgMHg0MkQyLCAweDg2NUEsIDB4MDY4RiwNCisgICAgMHg4NjVCLCAweDM0MTgsIDB4ODY1QywgMHgwRjgyLCAweDg2NUUsIDB4MDZFQiwgMHg4NjVGLCAweDE5NTIsDQorICAgIDB4ODY2MiwgMHg0MkQzLCAweDg2NjMsIDB4M0FFOCwgMHg4NjY3LCAweDE5NTMsIDB4ODY2QiwgMHgwQkFDLA0KKyAgICAweDg2NkMsIDB4M0FFOSwgMHg4NjZGLCAweDNBRUEsIDB4ODY3MSwgMHgxOTU0LCAweDg2NzUsIDB4NDJENSwNCisgICAgMHg4Njc3LCAweDQ4OTIsIDB4ODY3OSwgMHgwQ0QyLCAweDg2N0EsIDB4M0FFQiwgMHg4NjdCLCAweDA0N0UsDQorICAgIDB4ODY3RCwgMHgzNzg2LCAweDg2ODcsIDB4NDg5MywgMHg4Njg5LCAweDQ4OTQsIDB4ODY4QSwgMHgwNTYzLA0KKyAgICAweDg2OEIsIDB4MTk1OSwgMHg4NjhDLCAweDE5NUEsIDB4ODY4RCwgMHgzQUVDLCAweDg2OTEsIDB4M0FFRCwNCisgICAgMHg4NjkzLCAweDE5NTUsIDB4ODY5NSwgMHgwODhCLCAweDg2OTgsIDB4M0FFRSwgMHg4NjlDLCAweDQ4OTUsDQorICAgIDB4ODY5RCwgMHg0ODk2LCAweDg2QTMsIDB4MTk1NiwgMHg4NkE0LCAweDBDRjgsIDB4ODZBNywgMHgzQUVGLA0KKyAgICAweDg2QTgsIDB4M0FGMCwgMHg4NkE5LCAweDE5NTcsIDB4ODZBQSwgMHgxOTU4LCAweDg2QUIsIDB4MTk2MiwNCisgICAgMHg4NkFGLCAweDE5NUMsIDB4ODZCMCwgMHgxOTVGLCAweDg2QjEsIDB4NDg5NywgMHg4NkIzLCAweDQ4OTgsDQorICAgIDB4ODZCNiwgMHgxOTVCLCAweDg2QjgsIDB4NDJENiwgMHg4NkMwLCAweDREMkIsIDB4ODZDMSwgMHg0ODk5LA0KKyAgICAweDg2QzMsIDB4NDg5QSwgMHg4NkM0LCAweDE5NUQsIDB4ODZDNiwgMHgxOTVFLCAweDg2QzcsIDB4MDkwNCwNCisgICAgMHg4NkM5LCAweDE5NjAsIDB4ODZDQiwgMHgwQjdGLCAweDg2Q0QsIDB4MDcyQywgMHg4NkNFLCAweDA1QTAsDQorICAgIDB4ODZEMSwgMHg0ODlCLCAweDg2RDQsIDB4MTk2MywgMHg4NkQ1LCAweDQ4OUMsIDB4ODZENywgMHg0ODlELA0KKyAgICAweDg2RDksIDB4MDU5RCwgMHg4NkRCLCAweDE5NjgsIDB4ODZERSwgMHgxOTY0LCAweDg2REYsIDB4MTk2NywNCisgICAgMHg4NkUzLCAweDQ4OUUsIDB4ODZFNCwgMHgwRDRFLCAweDg2RTYsIDB4NDg5RiwgMHg4NkU5LCAweDE5NjUsDQorICAgIDB4ODZFQywgMHgxOTY2LCAweDg2RUQsIDB4MERCQSwgMHg4NkVFLCAweDBENkUsIDB4ODZFRiwgMHgxOTY5LA0KKyAgICAweDg2RjgsIDB4MEI1RCwgMHg4NkY5LCAweDE5NzMsIDB4ODZGQSwgMHgzQUYxLCAweDg2RkIsIDB4MTk2RiwNCisgICAgMHg4NkZDLCAweDQyRDcsIDB4ODZGRCwgMHgzQUYyLCAweDg2RkUsIDB4MDU2QiwgMHg4NzAwLCAweDE5NkQsDQorICAgIDB4ODcwMiwgMHgwRTU4LCAweDg3MDMsIDB4MTk2RSwgMHg4NzA1LCAweDQ4QTEsIDB4ODcwNiwgMHgxOTZCLA0KKyAgICAweDg3MDcsIDB4NDhBMiwgMHg4NzA4LCAweDE5NkMsIDB4ODcwOSwgMHgxOTcxLCAweDg3MEEsIDB4MTk3NCwNCisgICAgMHg4NzBCLCAweDNBRjMsIDB4ODcwRCwgMHgxOTcyLCAweDg3MEUsIDB4NDhBMywgMHg4NzEwLCAweDQ4QTQsDQorICAgIDB4ODcxMSwgMHgxOTcwLCAweDg3MTIsIDB4MTk2QSwgMHg4NzEzLCAweDNBRjQsIDB4ODcxNCwgMHg0RDJDLA0KKyAgICAweDg3MTgsIDB4MEI5NiwgMHg4NzE5LCAweDNBRjUsIDB4ODcxQSwgMHgxOTdCLCAweDg3MUMsIDB4MEVCNiwNCisgICAgMHg4NzFFLCAweDNBRjYsIDB4ODcxRiwgMHg0OEE1LCAweDg3MjEsIDB4NDhBNiwgMHg4NzIyLCAweDREMkQsDQorICAgIDB4ODcyMywgMHg0OEE3LCAweDg3MjUsIDB4MTk3OSwgMHg4NzI4LCAweDNBRjcsIDB4ODcyOSwgMHgxOTdBLA0KKyAgICAweDg3MkUsIDB4NEQyRSwgMHg4NzMxLCAweDQ4QTgsIDB4ODczNCwgMHgxOTc1LCAweDg3MzcsIDB4MTk3NywNCisgICAgMHg4NzM5LCAweDREMkYsIDB4ODczQSwgMHg0OEE5LCAweDg3M0IsIDB4MTk3OCwgMHg4NzNFLCAweDNBRjgsDQorICAgIDB4ODczRiwgMHgxOTc2LCAweDg3NDAsIDB4NDhBQSwgMHg4NzQzLCAweDQ4QUIsIDB4ODc0OSwgMHgwQThBLA0KKyAgICAweDg3NEIsIDB4MEZERiwgMHg4NzRDLCAweDE5N0YsIDB4ODc0RSwgMHgxOTgwLCAweDg3NTEsIDB4NDhBQywNCisgICAgMHg4NzUzLCAweDE5ODYsIDB4ODc1NSwgMHgwOUYwLCAweDg3NTcsIDB4MTk4MiwgMHg4NzU4LCAweDQ4QUQsDQorICAgIDB4ODc1OSwgMHgxOTg1LCAweDg3NUQsIDB4NEQzMCwgMHg4NzVGLCAweDE5N0QsIDB4ODc2MCwgMHgxOTdDLA0KKyAgICAweDg3NjMsIDB4MTk4NywgMHg4NzY0LCAweDQ4QUUsIDB4ODc2NSwgMHg0OEFGLCAweDg3NjYsIDB4MDU1QywNCisgICAgMHg4NzY4LCAweDE5ODMsIDB4ODc2QSwgMHgxOTg4LCAweDg3NkUsIDB4MTk4NCwgMHg4NzcxLCAweDNBRjksDQorICAgIDB4ODc3MiwgMHg0OEIwLCAweDg3NzQsIDB4MTk4MSwgMHg4Nzc2LCAweDBCQ0YsIDB4ODc3OCwgMHgxOTdFLA0KKyAgICAweDg3N0IsIDB4NEQzMSwgMHg4NzdDLCAweDQ4QjEsIDB4ODc3RiwgMHgwRDFFLCAweDg3ODIsIDB4MTk4QywNCisgICAgMHg4Nzg3LCAweDQyRDgsIDB4ODc4OCwgMHgzQUZBLCAweDg3ODksIDB4NDhCNSwgMHg4NzhCLCAweDQ4QjYsDQorICAgIDB4ODc4QywgMHg0RDMyLCAweDg3OEQsIDB4MEYyNSwgMHg4NzhFLCAweDREMzMsIDB4ODc5MywgMHg0OEI3LA0KKyAgICAweDg3OTcsIDB4NEQzNCwgMHg4Nzk4LCAweDREMzUsIDB4ODc5OSwgMHgzQUZCLCAweDg3OUUsIDB4NEQzNiwNCisgICAgMHg4NzlGLCAweDE5OEIsIDB4ODdBMCwgMHg0OEI4LCAweDg3QTIsIDB4MTk4QSwgMHg4N0EzLCAweDREMzcsDQorICAgIDB4ODdBNywgMHg0OEI0LCAweDg3QUIsIDB4MTk5MywgMHg4N0FDLCAweDNBRkMsIDB4ODdBRCwgMHgzQUZELA0KKyAgICAweDg3QUUsIDB4NEQzOCwgMHg4N0FGLCAweDE5OEQsIDB4ODdCMywgMHgxOTk1LCAweDg3QjUsIDB4M0FGRSwNCisgICAgMHg4N0JBLCAweDBGNTAsIDB4ODdCQiwgMHgxOTk4LCAweDg3QkQsIDB4MTk4RiwgMHg4N0JFLCAweDQ4QkIsDQorICAgIDB4ODdCRiwgMHg0RDM5LCAweDg3QzAsIDB4MTk5MCwgMHg4N0MxLCAweDQ4QkQsIDB4ODdDNCwgMHgxOTk0LA0KKyAgICAweDg3QzYsIDB4MTk5NywgMHg4N0M3LCAweDE5OTYsIDB4ODdDOSwgMHg0RDNBLCAweDg3Q0IsIDB4MTk4RSwNCisgICAgMHg4N0NFLCAweDQ4QkUsIDB4ODdEMCwgMHgxOTkxLCAweDg3RDIsIDB4MTlBMiwgMHg4N0Q2LCAweDNBRkYsDQorICAgIDB4ODdEQSwgMHg0RDNCLCAweDg3REYsIDB4NDhCRiwgMHg4N0UwLCAweDE5OUIsIDB4ODdFMywgMHg0OEMxLA0KKyAgICAweDg3RTUsIDB4NDhDMiwgMHg4N0U2LCAweDQ4QzMsIDB4ODdFQSwgMHg0OEM0LCAweDg3RUIsIDB4M0IwMCwNCisgICAgMHg4N0VDLCAweDFFMjMsIDB4ODdFRCwgMHgzQjAxLCAweDg3RUYsIDB4MTk5OSwgMHg4N0YyLCAweDE5OUEsDQorICAgIDB4ODdGNSwgMHgzQzNELCAweDg3RjYsIDB4MTk5RiwgMHg4N0Y3LCAweDE5QTAsIDB4ODdGOSwgMHgwNTg4LA0KKyAgICAweDg3RkIsIDB4MDY1QywgMHg4N0ZFLCAweDE5OUUsIDB4ODgwMSwgMHgzQjAyLCAweDg4MDMsIDB4NEY1OCwNCisgICAgMHg4ODA1LCAweDE5ODksIDB4ODgwNiwgMHgzQjA0LCAweDg4MDcsIDB4MjFBNiwgMHg4ODBBLCAweDQyREEsDQorICAgIDB4ODgwQiwgMHgzQjA1LCAweDg4MEQsIDB4MTk5RCwgMHg4ODBFLCAweDE5QTEsIDB4ODgwRiwgMHgxOTlDLA0KKyAgICAweDg4MTAsIDB4NDJEQiwgMHg4ODExLCAweDE5QTMsIDB4ODgxMywgMHg0OEM1LCAweDg4MTQsIDB4M0IwNiwNCisgICAgMHg4ODE1LCAweDE5QTUsIDB4ODgxNiwgMHgxOUE0LCAweDg4MTgsIDB4NEQzQywgMHg4ODFCLCAweDREM0QsDQorICAgIDB4ODgxQywgMHgzQjA3LCAweDg4MUYsIDB4MUU4NSwgMHg4ODIxLCAweDE5QTcsIDB4ODgyMiwgMHgxOUE2LA0KKyAgICAweDg4MjMsIDB4MTk2MSwgMHg4ODI3LCAweDE5QUIsIDB4ODgyOCwgMHg0OEM2LCAweDg4MkQsIDB4NEQzRSwNCisgICAgMHg4ODJFLCAweDQ4QzcsIDB4ODgzMSwgMHgxOUE4LCAweDg4MzIsIDB4NDhDOCwgMHg4ODM2LCAweDE5QTksDQorICAgIDB4ODgzOSwgMHgxOUFBLCAweDg4M0EsIDB4NEQzRiwgMHg4ODNCLCAweDE5QUMsIDB4ODgzQywgMHg0OEM5LA0KKyAgICAweDg4NDAsIDB4MDc0MiwgMHg4ODQyLCAweDE5QUUsIDB4ODg0NCwgMHgxOUFELCAweDg4NDUsIDB4NEQ0MCwNCisgICAgMHg4ODQ2LCAweDA5M0EsIDB4ODg0QSwgMHg0OENCLCAweDg4NEIsIDB4NEQ0MSwgMHg4ODRDLCAweDA3RTYsDQorICAgIDB4ODg0RCwgMHgxNTI0LCAweDg4NEUsIDB4NEQ0MiwgMHg4ODUyLCAweDE5QUYsIDB4ODg1MywgMHgwOTVCLA0KKyAgICAweDg4NTUsIDB4NEQ0MywgMHg4ODU2LCAweDNCMDgsIDB4ODg1NywgMHgwNTk3LCAweDg4NTgsIDB4NDhDQywNCisgICAgMHg4ODU5LCAweDE5QjAsIDB4ODg1QSwgMHg0RDQ0LCAweDg4NUIsIDB4MDRGNCwgMHg4ODVELCAweDA5QkYsDQorICAgIDB4ODg1RSwgMHgxOUIxLCAweDg4NUYsIDB4M0IwOSwgMHg4ODYxLCAweDA3RTcsIDB4ODg2MiwgMHgxOUIyLA0KKyAgICAweDg4NjMsIDB4MDRBNSwgMHg4ODY0LCAweDNCMEEsIDB4ODg2OCwgMHgwREFGLCAweDg4NjksIDB4NDhDRiwNCisgICAgMHg4ODZCLCAweDE5QjMsIDB4ODg2RSwgMHg0RDQ1LCAweDg4NkYsIDB4NDhEMSwgMHg4ODcwLCAweDBBMzAsDQorICAgIDB4ODg3MiwgMHgxOUJBLCAweDg4NzUsIDB4MTlCNywgMHg4ODc3LCAweDBCQUQsIDB4ODg3RCwgMHgxOUI4LA0KKyAgICAweDg4N0UsIDB4MTlCNSwgMHg4ODdGLCAweDA2RDYsIDB4ODg4MSwgMHgxOUI0LCAweDg4ODIsIDB4MTlCQiwNCisgICAgMHg4ODg4LCAweDA3MEMsIDB4ODg4QiwgMHgwQjNFLCAweDg4OEQsIDB4MTlDMSwgMHg4ODkyLCAweDE5QkQsDQorICAgIDB4ODg5NiwgMHgwQjE1LCAweDg4OTcsIDB4MTlCQywgMHg4ODk4LCAweDNCMEIsIDB4ODg5OSwgMHgxOUJGLA0KKyAgICAweDg4OUEsIDB4NEQ0NiwgMHg4ODlCLCAweDRENDcsIDB4ODg5QywgMHg0RDQ4LCAweDg4OUUsIDB4MTlCNiwNCisgICAgMHg4OEEwLCAweDQ4RDIsIDB4ODhBMiwgMHgxOUMwLCAweDg4QTQsIDB4MTlDMiwgMHg4OEFBLCAweDNCMEMsDQorICAgIDB4ODhBQiwgMHgwRDgzLCAweDg4QUUsIDB4MTlCRSwgMHg4OEIwLCAweDE5QzMsIDB4ODhCMSwgMHgxOUM1LA0KKyAgICAweDg4QjQsIDB4MDc4NywgMHg4OEI1LCAweDE5QjksIDB4ODhCNywgMHgwNDg1LCAweDg4QkMsIDB4NDhEMywNCisgICAgMHg4OEJELCAweDNCMEQsIDB4ODhCRSwgMHgzQjBFLCAweDg4QkYsIDB4MTlDNCwgMHg4OEMwLCAweDQ4RDQsDQorICAgIDB4ODhDMSwgMHgwODRCLCAweDg4QzIsIDB4MEZCRSwgMHg4OEMzLCAweDE5QzYsIDB4ODhDNCwgMHgxOUM3LA0KKyAgICAweDg4QzUsIDB4MEFGNywgMHg4OEM2LCAweDM3ODksIDB4ODhDQSwgMHgzQjBGLCAweDg4Q0QsIDB4NEQ0OSwNCisgICAgMHg4OENFLCAweDQyREMsIDB4ODhDRiwgMHgwRjZBLCAweDg4RDEsIDB4NDhENiwgMHg4OEQyLCAweDNCMTAsDQorICAgIDB4ODhEMywgMHg0OEQ3LCAweDg4RDQsIDB4MTlDOCwgMHg4OEQ1LCAweDBGMUYsIDB4ODhEOCwgMHgxOUM5LA0KKyAgICAweDg4RDksIDB4MTlDQSwgMHg4OERCLCAweDNCMTEsIDB4ODhEQywgMHgwRTM0LCAweDg4REQsIDB4MTlDQiwNCisgICAgMHg4OERGLCAweDA4MzAsIDB4ODhFMCwgMHg0RDRBLCAweDg4RTEsIDB4MEY2QiwgMHg4OEU4LCAweDE5RDAsDQorICAgIDB4ODhFRiwgMHg0RDRCLCAweDg4RjAsIDB4M0IxMiwgMHg4OEYxLCAweDNCMTMsIDB4ODhGMiwgMHgxOUQxLA0KKyAgICAweDg4RjMsIDB4MDlDMCwgMHg4OEY0LCAweDE5Q0YsIDB4ODhGNSwgMHgyMUE3LCAweDg4RjgsIDB4MEY1MSwNCisgICAgMHg4OEY5LCAweDE5Q0MsIDB4ODhGQywgMHgxOUNFLCAweDg4RkQsIDB4MEE2MSwgMHg4OEZFLCAweDBBNDQsDQorICAgIDB4ODkwMSwgMHg0OEQ5LCAweDg5MDIsIDB4MTlDRCwgMHg4OTA0LCAweDE5RDIsIDB4ODkwNiwgMHgzQjE0LA0KKyAgICAweDg5MDcsIDB4MERGMywgMHg4OTBBLCAweDE5RDQsIDB4ODkwQywgMHgxOUQzLCAweDg5MEUsIDB4NEQ0QywNCisgICAgMHg4OTBGLCAweDRENEQsIDB4ODkxMCwgMHgwNUNBLCAweDg5MTIsIDB4MEU1OSwgMHg4OTEzLCAweDE5RDUsDQorICAgIDB4ODkxOCwgMHgzQjE1LCAweDg5MTksIDB4M0IxNiwgMHg4OTFBLCAweDNCMTcsIDB4ODkxQywgMHgyMEE4LA0KKyAgICAweDg5MUQsIDB4MTlFMSwgMHg4OTFFLCAweDE5RDcsIDB4ODkyNSwgMHgxOUQ4LCAweDg5MjYsIDB4NEQ0RSwNCisgICAgMHg4OTI3LCAweDNCMTgsIDB4ODkyQSwgMHgxOUQ5LCAweDg5MkIsIDB4MTlEQSwgMHg4OTMwLCAweDNCMTksDQorICAgIDB4ODkzMiwgMHg0MkRFLCAweDg5MzUsIDB4NEQ0RiwgMHg4OTM2LCAweDE5REUsIDB4ODkzNywgMHg0OERCLA0KKyAgICAweDg5MzgsIDB4MTlERiwgMHg4OTM5LCAweDQyREYsIDB4ODkzQiwgMHgxOURELCAweDg5M0UsIDB4M0IxQSwNCisgICAgMHg4OTQwLCAweDQyRTAsIDB4ODk0MSwgMHgxOURCLCAweDg5NDIsIDB4NDhERCwgMHg4OTQzLCAweDE5RDYsDQorICAgIDB4ODk0NCwgMHgxOURDLCAweDg5NDUsIDB4NDhERSwgMHg4OTQ5LCAweDQ4REYsIDB4ODk0QywgMHgxOUUwLA0KKyAgICAweDg5NEQsIDB4MUJEMCwgMHg4OTU2LCAweDA1MjgsIDB4ODk1QSwgMHg0RDUwLCAweDg5NUMsIDB4NEQ1MSwNCisgICAgMHg4OTVFLCAweDE5RTMsIDB4ODk1RiwgMHgwNkQ3LCAweDg5NjAsIDB4MTlFMiwgMHg4OTYyLCAweDQ4RTEsDQorICAgIDB4ODk2NCwgMHgxOUU1LCAweDg5NjYsIDB4MTlFNCwgMHg4OTZBLCAweDE5RTcsIDB4ODk2QiwgMHg0RDUyLA0KKyAgICAweDg5NkQsIDB4MTlFNiwgMHg4OTZGLCAweDE5RTgsIDB4ODk3MCwgMHg0RDUzLCAweDg5NzIsIDB4MDkzQiwNCisgICAgMHg4OTc0LCAweDE5RTksIDB4ODk3NywgMHgxOUVBLCAweDg5N0IsIDB4M0IxQiwgMHg4OTdDLCAweDRENTQsDQorICAgIDB4ODk3RSwgMHgxOUVCLCAweDg5N0YsIDB4MEE2MiwgMHg4OTgwLCAweDM2MkUsIDB4ODk4MSwgMHgwRjQxLA0KKyAgICAweDg5ODMsIDB4MTlFQywgMHg4OTg2LCAweDBERjQsIDB4ODk4NywgMHgwQ0ZDLCAweDg5ODgsIDB4MTlFRCwNCisgICAgMHg4OTg5LCAweDQ4RTIsIDB4ODk4QSwgMHgxOUVFLCAweDg5OEIsIDB4MDc1RiwgMHg4OThGLCAweDA2NDYsDQorICAgIDB4ODk5MCwgMHg0OEUzLCAweDg5OTMsIDB4MTlFRiwgMHg4OTk0LCAweDQyRTEsIDB4ODk5NiwgMHgwOEI5LA0KKyAgICAweDg5OTcsIDB4MENGNywgMHg4OTk4LCAweDE5RjAsIDB4ODk5QSwgMHgwNUFFLCAweDg5OUYsIDB4NDhFNCwNCisgICAgMHg4OUExLCAweDE5RjEsIDB4ODlBNSwgMHg0RDU1LCAweDg5QTYsIDB4MTlGMywgMHg4OUE3LCAweDBGNjEsDQorICAgIDB4ODlBOSwgMHgxOUYyLCAweDg5QUEsIDB4MEEwQywgMHg4OUFDLCAweDE5RjQsIDB4ODlBRiwgMHgxOUY1LA0KKyAgICAweDg5QjAsIDB4NDhFNSwgMHg4OUIyLCAweDE5RjYsIDB4ODlCMywgMHgwNjBELCAweDg5QjUsIDB4NEQ1NiwNCisgICAgMHg4OUI3LCAweDQ4RTYsIDB4ODlCQSwgMHgxOUY3LCAweDg5QkMsIDB4NEQ1NywgMHg4OUJELCAweDE5RjgsDQorICAgIDB4ODlCRiwgMHgxOUY5LCAweDg5QzAsIDB4MTlGQSwgMHg4OUQyLCAweDA1QUYsIDB4ODlENCwgMHgzQjFDLA0KKyAgICAweDg5RDUsIDB4NEQ1OCwgMHg4OUQ2LCAweDNCMUQsIDB4ODlEOCwgMHg0OEU3LCAweDg5REEsIDB4MTlGQiwNCisgICAgMHg4OURDLCAweDE5RkMsIDB4ODlERCwgMHgxOUZELCAweDg5RTMsIDB4MDU3MiwgMHg4OUU1LCAweDNCMUUsDQorICAgIDB4ODlFNiwgMHgwOUVFLCAweDg5RTcsIDB4MTlGRSwgMHg4OUVCLCAweDQ4RTgsIDB4ODlGMSwgMHgzQjFGLA0KKyAgICAweDg5RjMsIDB4NDhFQSwgMHg4OUY0LCAweDE5RkYsIDB4ODlGNiwgMHg0MkUyLCAweDg5RjgsIDB4MUEwMCwNCisgICAgMHg4OUZELCAweDQ4RUIsIDB4ODlGRiwgMHg0OEVDLCAweDhBMDAsIDB4MDc3NCwgMHg4QTAxLCAweDM1QkMsDQorICAgIDB4OEEwMiwgMHgwQzE3LCAweDhBMDMsIDB4MUEwMSwgMHg4QTA3LCAweDNCMjAsIDB4OEEwOCwgMHgwNzJELA0KKyAgICAweDhBMEEsIDB4MEExQywgMHg4QTBDLCAweDFBMDQsIDB4OEEwRSwgMHgwQzdDLCAweDhBMEYsIDB4M0IyMSwNCisgICAgMHg4QTEwLCAweDFBMDMsIDB4OEExMSwgMHg0OEVFLCAweDhBMTIsIDB4MjFBOCwgMHg4QTEzLCAweDA3MDcsDQorICAgIDB4OEExNCwgMHg0OEVGLCAweDhBMTUsIDB4M0IyMiwgMHg4QTE2LCAweDFBMDIsIDB4OEExNywgMHgwQjU3LA0KKyAgICAweDhBMTgsIDB4MDY0NywgMHg4QTFCLCAweDFBMDUsIDB4OEExRCwgMHgxQTA2LCAweDhBMUYsIDB4MDlDMSwNCisgICAgMHg4QTIxLCAweDQ4RjEsIDB4OEEyMiwgMHgzQjIzLCAweDhBMjMsIDB4MDc0MywgMHg4QTI1LCAweDFBMDcsDQorICAgIDB4OEEyQSwgMHgwRTVBLCAweDhBMkQsIDB4MEE4MywgMHg4QTMxLCAweDA2OTAsIDB4OEEzMywgMHgwRjAxLA0KKyAgICAweDhBMzQsIDB4MEFDQywgMHg4QTM1LCAweDQ4RjIsIDB4OEEzNiwgMHgxQTA4LCAweDhBMzcsIDB4MjFBOSwNCisgICAgMHg4QTNBLCAweDBBMEQsIDB4OEEzQiwgMHgwQkFFLCAweDhBM0MsIDB4MDlDMiwgMHg4QTNFLCAweDQ4RjMsDQorICAgIDB4OEE0MSwgMHgxQTA5LCAweDhBNDUsIDB4NDhGNCwgMHg4QTQ2LCAweDFBMEMsIDB4OEE0NywgMHg0MkUzLA0KKyAgICAweDhBNDgsIDB4MUEwRCwgMHg4QTQ5LCAweDRENTksIDB4OEE0RCwgMHg0OEY1LCAweDhBNEUsIDB4M0IyNCwNCisgICAgMHg4QTUwLCAweDA4MkUsIDB4OEE1MSwgMHgwQjIyLCAweDhBNTIsIDB4MUEwQiwgMHg4QTU0LCAweDA5QzMsDQorICAgIDB4OEE1NSwgMHgwREIwLCAweDhBNTcsIDB4NEQ1QSwgMHg4QTU4LCAweDQ4RjYsIDB4OEE1QiwgMHgxQTBBLA0KKyAgICAweDhBNUQsIDB4NDJFNCwgMHg4QTVFLCAweDA4QkEsIDB4OEE2MCwgMHgwNEY1LCAweDhBNjEsIDB4NDJFNSwNCisgICAgMHg4QTYyLCAweDFBMTEsIDB4OEE2MywgMHgwNzJFLCAweDhBNjYsIDB4MDhCQywgMHg4QTY3LCAweDRENUIsDQorICAgIDB4OEE2OSwgMHgwOEJCLCAweDhBNkIsIDB4MEZGMywgMHg4QTZDLCAweDFBMTAsIDB4OEE2RCwgMHgxQTBGLA0KKyAgICAweDhBNkUsIDB4MEFBOSwgMHg4QTcwLCAweDA2NjcsIDB4OEE3MSwgMHgwRkU5LCAweDhBNzIsIDB4MDU5OCwNCisgICAgMHg4QTczLCAweDA5QzQsIDB4OEE3NSwgMHg0MkU2LCAweDhBNzksIDB4MjFBQSwgMHg4QTdDLCAweDFBMEUsDQorICAgIDB4OEE3RSwgMHg0RDVDLCAweDhBN0YsIDB4M0IyNSwgMHg4QTgyLCAweDFBMTMsIDB4OEE4NCwgMHgxQTE0LA0KKyAgICAweDhBODUsIDB4MUExMiwgMHg4QTg2LCAweDRENUQsIDB4OEE4NywgMHgwNzhDLCAweDhBODksIDB4MEYyQSwNCisgICAgMHg4QThDLCAweDA4QkQsIDB4OEE4RCwgMHgwQ0RELCAweDhBOTAsIDB4NDhGOCwgMHg4QTkxLCAweDFBMTcsDQorICAgIDB4OEE5MywgMHgwQTY0LCAweDhBOTUsIDB4MEI4MCwgMHg4QTk2LCAweDRENUUsIDB4OEE5OCwgMHgwRjIwLA0KKyAgICAweDhBOUEsIDB4MUExQSwgMHg4QTlFLCAweDA3QTAsIDB4OEFBMCwgMHgwQTYzLCAweDhBQTEsIDB4MUExNiwNCisgICAgMHg4QUEzLCAweDFBMUIsIDB4OEFBNCwgMHgwN0ExLCAweDhBQTUsIDB4MUExOCwgMHg4QUE2LCAweDFBMTksDQorICAgIDB4OEFBNywgMHgyMUFCLCAweDhBQTgsIDB4MUExNSwgMHg4QUFBLCAweDM2MzgsIDB4OEFBQywgMHgwQTg2LA0KKyAgICAweDhBQUQsIDB4MENBMSwgMHg4QUFFLCAweDQ4RjcsIDB4OEFCMCwgMHgwQjZELCAweDhBQjIsIDB4MDU1RCwNCisgICAgMHg4QUI2LCAweDRENUYsIDB4OEFCNywgMHg0OEY5LCAweDhBQjksIDB4MEQ4NCwgMHg4QUJDLCAweDA2NUQsDQorICAgIDB4OEFCRSwgMHgyMUFDLCAweDhBQkYsIDB4MEJEMCwgMHg4QUMyLCAweDFBMUUsIDB4OEFDNCwgMHgxQTFDLA0KKyAgICAweDhBQzcsIDB4MEI4QSwgMHg4QUM5LCAweDRENjAsIDB4OEFDQiwgMHgwQTY1LCAweDhBQ0MsIDB4MDYwRSwNCisgICAgMHg4QUNELCAweDFBMUQsIDB4OEFDRiwgMHgwQTIxLCAweDhBRDAsIDB4NDJFNywgMHg4QUQxLCAweDRENjEsDQorICAgIDB4OEFEMiwgMHgwRjkyLCAweDhBRDYsIDB4MEZFNiwgMHg4QUQ3LCAweDQ4RkEsIDB4OEFEQSwgMHgxQTFGLA0KKyAgICAweDhBREIsIDB4MUEyQSwgMHg4QURDLCAweDBCRDEsIDB4OEFERCwgMHg0RDYyLCAweDhBREUsIDB4MUEyOSwNCisgICAgMHg4QURGLCAweDIxQUQsIDB4OEFFMCwgMHgxQTI2LCAweDhBRTEsIDB4MUEyRSwgMHg4QUUyLCAweDFBMjcsDQorICAgIDB4OEFFNCwgMHgxQTIzLCAweDhBRTYsIDB4MEMxOCwgMHg4QUU3LCAweDFBMjIsIDB4OEFFQiwgMHgxQTIwLA0KKyAgICAweDhBRUMsIDB4NEQ2MywgMHg4QUVELCAweDBGMEIsIDB4OEFFRSwgMHgwOEJFLCAweDhBRjEsIDB4MUEyNCwNCisgICAgMHg4QUYzLCAweDFBMjEsIDB4OEFGNCwgMHgzQjI2LCAweDhBRjUsIDB4NEQ2NCwgMHg4QUY2LCAweDIxQUYsDQorICAgIDB4OEFGNywgMHgxQTI4LCAweDhBRjgsIDB4MDk3RSwgMHg4QUZBLCAweDA3NzUsIDB4OEFGQywgMHg0OEZCLA0KKyAgICAweDhBRkUsIDB4MEI1QSwgMHg4QjAwLCAweDBFNzMsIDB4OEIwMSwgMHgwNEZDLCAweDhCMDIsIDB4MDRBNiwNCisgICAgMHg4QjA0LCAweDBDN0QsIDB4OEIwNSwgMHg0OEZFLCAweDhCMDYsIDB4NEQ2NSwgMHg4QjA3LCAweDFBMkMsDQorICAgIDB4OEIwQSwgMHg0OEZELCAweDhCMEMsIDB4MUEyQiwgMHg4QjBELCAweDQ4RkYsIDB4OEIwRSwgMHgwQ0JFLA0KKyAgICAweDhCMEYsIDB4NEQ2NiwgMHg4QjEwLCAweDFBMzAsIDB4OEIxMSwgMHg0RDY3LCAweDhCMTQsIDB4MUEyNSwNCisgICAgMHg4QjE2LCAweDFBMkYsIDB4OEIxNywgMHgxQTMxLCAweDhCMTksIDB4MDc2MCwgMHg4QjFBLCAweDFBMkQsDQorICAgIDB4OEIxQiwgMHgwN0U4LCAweDhCMUMsIDB4NDkwMCwgMHg4QjFELCAweDA5MDEsIDB4OEIxRiwgMHgzQjI3LA0KKyAgICAweDhCMjAsIDB4MUEzMiwgMHg4QjIxLCAweDBGNDIsIDB4OEIyNiwgMHgxQTM1LCAweDhCMjgsIDB4MUEzOCwNCisgICAgMHg4QjJCLCAweDFBMzYsIDB4OEIyQywgMHgwREE3LCAweDhCMkQsIDB4NDkwMSwgMHg4QjMzLCAweDFBMzMsDQorICAgIDB4OEIzNywgMHgzQjI4LCAweDhCMzksIDB4MDZEOCwgMHg4QjNFLCAweDFBMzcsIDB4OEI0MSwgMHgxQTM5LA0KKyAgICAweDhCNDMsIDB4M0IyOSwgMHg4QjQ0LCAweDNCMkEsIDB4OEI0NSwgMHg0RDY4LCAweDhCNDYsIDB4NDJFOCwNCisgICAgMHg4QjQ5LCAweDFBM0QsIDB4OEI0QywgMHgxQTNBLCAweDhCNEUsIDB4MUEzQywgMHg4QjRGLCAweDFBM0IsDQorICAgIDB4OEI1MSwgMHg0OTAzLCAweDhCNTIsIDB4NEQ2OSwgMHg4QjUzLCAweDIxQjAsIDB4OEI1NCwgMHgzQjJCLA0KKyAgICAweDhCNTYsIDB4MUEzRSwgMHg4QjU4LCAweDA4REQsIDB4OEI1OSwgMHg0MkU5LCAweDhCNUEsIDB4MUE0MCwNCisgICAgMHg4QjVCLCAweDFBM0YsIDB4OEI1QywgMHgwRERBLCAweDhCNUUsIDB4NDkwNCwgMHg4QjVGLCAweDFBNDIsDQorICAgIDB4OEI2NiwgMHgwNzJGLCAweDhCNjksIDB4NDJFQSwgMHg4QjZCLCAweDFBNDEsIDB4OEI2QywgMHgxQTQzLA0KKyAgICAweDhCNkQsIDB4NEQ2QSwgMHg4QjZGLCAweDFBNDQsIDB4OEI3MCwgMHgwNjVFLCAweDhCNzEsIDB4MTgyRSwNCisgICAgMHg4QjcyLCAweDA5RTEsIDB4OEI3NCwgMHgxQTQ1LCAweDhCNzYsIDB4NDkwNSwgMHg4Qjc3LCAweDA3QTIsDQorICAgIDB4OEI3OCwgMHg0RDZCLCAweDhCN0MsIDB4NEQ2QywgMHg4QjdELCAweDFBNDYsIDB4OEI3RSwgMHg0RDZELA0KKyAgICAweDhCN0YsIDB4MjFCMSwgMHg4QjgwLCAweDFBNDcsIDB4OEI4MSwgMHg0OTA2LCAweDhCODMsIDB4MDg4QywNCisgICAgMHg4Qjg1LCAweDRENkUsIDB4OEI4QSwgMHgxM0QzLCAweDhCOEIsIDB4NDkwNywgMHg4QjhDLCAweDFBNDgsDQorICAgIDB4OEI4RSwgMHgxQTQ5LCAweDhCOTAsIDB4MDkzQywgMHg4QjkyLCAweDFBNEEsIDB4OEI5MywgMHgxQTRCLA0KKyAgICAweDhCOTQsIDB4NDkwOCwgMHg4Qjk1LCAweDQ5MDksIDB4OEI5NiwgMHgxQTRDLCAweDhCOTksIDB4MUE0RCwNCisgICAgMHg4QjlBLCAweDFBNEUsIDB4OEI5QywgMHgzQjJDLCAweDhCOUQsIDB4NDJFQiwgMHg4QjlFLCAweDNCMkQsDQorICAgIDB4OEI5RiwgMHg0RDZGLCAweDhDMzcsIDB4MEI2OSwgMHg4QzM5LCAweDQ5MEEsIDB4OEMzQSwgMHgxQTRGLA0KKyAgICAweDhDM0QsIDB4NDkwQywgMHg4QzNGLCAweDFBNTEsIDB4OEM0MSwgMHgxQTUwLCAweDhDNDUsIDB4NDkwRiwNCisgICAgMHg4QzQ2LCAweDBDN0UsIDB4OEM0NywgMHgzQjJFLCAweDhDNDgsIDB4MUE1MiwgMHg4QzQ5LCAweDQyRUMsDQorICAgIDB4OEM0QSwgMHgwRTVCLCAweDhDNEIsIDB4NEQ3MCwgMHg4QzRDLCAweDFBNTMsIDB4OEM0RSwgMHgxQTU0LA0KKyAgICAweDhDNEYsIDB4NDkxMCwgMHg4QzUwLCAweDFBNTUsIDB4OEM1MywgMHg0RDcxLCAweDhDNTQsIDB4M0IyRiwNCisgICAgMHg4QzU1LCAweDFBNTYsIDB4OEM1NywgMHg0OTExLCAweDhDNUEsIDB4MENCMiwgMHg4QzYxLCAweDA5QzUsDQorICAgIDB4OEM2MiwgMHgxQTU3LCAweDhDNjgsIDB4NDJFRCwgMHg4QzY5LCAweDQ5MTIsIDB4OEM2QSwgMHgwN0ZELA0KKyAgICAweDhDNkIsIDB4MTAwNywgMHg4QzZDLCAweDFBNTgsIDB4OEM2RCwgMHg0OTEzLCAweDhDNzMsIDB4M0IzMCwNCisgICAgMHg4Qzc4LCAweDFBNTksIDB4OEM3OSwgMHgwREIxLCAweDhDN0EsIDB4MUE1QSwgMHg4QzdCLCAweDRENzIsDQorICAgIDB4OEM3QywgMHgxQTYyLCAweDhDODIsIDB4MUE1QiwgMHg4Qzg1LCAweDFBNUQsIDB4OEM4OSwgMHgxQTVDLA0KKyAgICAweDhDOEEsIDB4MUE1RSwgMHg4QzhDLCAweDBFNzQsIDB4OEM4RCwgMHgxQTVGLCAweDhDOEUsIDB4MUE2MCwNCisgICAgMHg4QzkyLCAweDQ5MTYsIDB4OEM5MywgMHg0OTE1LCAweDhDOTQsIDB4MUE2MSwgMHg4Qzk4LCAweDFBNjMsDQorICAgIDB4OEM5OSwgMHg0OTE3LCAweDhDOUIsIDB4NDkxOSwgMHg4QzlELCAweDA1OEIsIDB4OEM5RSwgMHgwQzAzLA0KKyAgICAweDhDOUYsIDB4MzU0QywgMHg4Q0EwLCAweDBEREIsIDB4OENBMSwgMHgwODUyLCAweDhDQTIsIDB4MDdFOSwNCisgICAgMHg4Q0E0LCAweDNCMzEsIDB4OENBNywgMHgwREMxLCAweDhDQTgsIDB4MDU1RiwgMHg4Q0E5LCAweDBENjIsDQorICAgIDB4OENBQSwgMHgxQTY2LCAweDhDQUIsIDB4MDYwRiwgMHg4Q0FDLCAweDBBNzksIDB4OENBRCwgMHgxQTY1LA0KKyAgICAweDhDQUUsIDB4MUE2QSwgMHg4Q0FGLCAweDBCQjcsIDB4OENCMCwgMHgwRUVGLCAweDhDQjIsIDB4MUE2OCwNCisgICAgMHg4Q0IzLCAweDFBNjksIDB4OENCNCwgMHgwNjQ4LCAweDhDQjYsIDB4MUE2QiwgMHg4Q0I3LCAweDBEMTksDQorICAgIDB4OENCOCwgMHgwQjNGLCAweDhDQkEsIDB4NEQ3MywgMHg4Q0JCLCAweDBEODUsIDB4OENCQywgMHgwQzM3LA0KKyAgICAweDhDQkQsIDB4MUE2NywgMHg4Q0JGLCAweDBFNzUsIDB4OENDMCwgMHgwNTZDLCAweDhDQzEsIDB4MUE2RCwNCisgICAgMHg4Q0MyLCAweDBGQ0UsIDB4OENDMywgMHgwQkRFLCAweDhDQzQsIDB4MEZFQiwgMHg4Q0M1LCAweDRENzQsDQorICAgIDB4OENDNywgMHgwOEJGLCAweDhDQzgsIDB4MUE2QywgMHg4Q0M5LCAweDRENzUsIDB4OENDQSwgMHgwQjExLA0KKyAgICAweDhDQ0QsIDB4MUE3RCwgMHg4Q0NFLCAweDBBQUEsIDB4OENEMSwgMHgwQ0QwLCAweDhDRDIsIDB4NEQ3NiwNCisgICAgMHg4Q0QzLCAweDBEQzIsIDB4OENENSwgMHg0OTFCLCAweDhDRDYsIDB4NDkxQSwgMHg4Q0Q5LCAweDNCMzIsDQorICAgIDB4OENEQSwgMHgxQTcwLCAweDhDREIsIDB4MDg4RCwgMHg4Q0RDLCAweDA4QzAsIDB4OENERSwgMHgwOUM2LA0KKyAgICAweDhDRTAsIDB4MEQxQiwgMHg4Q0UxLCAweDNCMzMsIDB4OENFMiwgMHgwNzYxLCAweDhDRTMsIDB4MUE2RiwNCisgICAgMHg4Q0U0LCAweDFBNkUsIDB4OENFNiwgMHgwRERDLCAweDhDRUEsIDB4MDhFRCwgMHg4Q0VDLCAweDRENzcsDQorICAgIDB4OENFRCwgMHgwQzRDLCAweDhDRjAsIDB4MjFCMiwgMHg4Q0YxLCAweDQ5MUQsIDB4OENGNCwgMHgyMUIzLA0KKyAgICAweDhDRjUsIDB4NEQ3OCwgMHg4Q0Y3LCAweDRENzksIDB4OENGOCwgMHgzQjM0LCAweDhDRkEsIDB4MUE3MiwNCisgICAgMHg4Q0ZCLCAweDFBNzMsIDB4OENGQywgMHgwN0VBLCAweDhDRkQsIDB4MUE3MSwgMHg4Q0ZFLCAweDNCMzUsDQorICAgIDB4OEQwMSwgMHg0RDdBLCAweDhEMDMsIDB4NEQ3QiwgMHg4RDA0LCAweDFBNzQsIDB4OEQwNSwgMHgxQTc1LA0KKyAgICAweDhEMDcsIDB4MUE3NywgMHg4RDA4LCAweDBCMDMsIDB4OEQwOSwgMHg0OTFGLCAweDhEMEEsIDB4MUE3NiwNCisgICAgMHg4RDBCLCAweDA2MjIsIDB4OEQwRCwgMHgxQTc5LCAweDhEMEUsIDB4NDkyMCwgMHg4RDBGLCAweDFBNzgsDQorICAgIDB4OEQxMCwgMHgxQTdBLCAweDhEMTIsIDB4MjFCNCwgMHg4RDEzLCAweDFBN0MsIDB4OEQxNCwgMHgxQTdFLA0KKyAgICAweDhEMTYsIDB4MUE3RiwgMHg4RDE3LCAweDREN0MsIDB4OEQxQiwgMHgzQjM2LCAweDhEMUMsIDB4NEQ3RCwNCisgICAgMHg4RDY0LCAweDBBN0EsIDB4OEQ2NiwgMHgwOEZCLCAweDhENjcsIDB4MUE4MCwgMHg4RDY5LCAweDNCMzcsDQorICAgIDB4OEQ2QiwgMHgwNUIwLCAweDhENkMsIDB4M0IzOCwgMHg4RDZELCAweDFBODEsIDB4OEQ2RSwgMHg0RDdFLA0KKyAgICAweDhENzAsIDB4MEFGOCwgMHg4RDcxLCAweDFBODIsIDB4OEQ3MywgMHgxQTgzLCAweDhENzQsIDB4MERERCwNCisgICAgMHg4RDc2LCAweDIxQjUsIDB4OEQ3NywgMHgwNjQ5LCAweDhEODEsIDB4MUE4NCwgMHg4RDg0LCAweDNCMzksDQorICAgIDB4OEQ4NSwgMHgwQkQyLCAweDhEOEEsIDB4MDRGRCwgMHg4RDhELCAweDNCM0EsIDB4OEQ5MSwgMHg0RDdGLA0KKyAgICAweDhEOTUsIDB4M0IzQiwgMHg4RDk5LCAweDFBODUsIDB4OEQ5RiwgMHg0RDgwLCAweDhEQTMsIDB4MDkxRCwNCisgICAgMHg4REE2LCAweDNCM0MsIDB4OERBOCwgMHgwQTNDLCAweDhEQUIsIDB4NEQ4MSwgMHg4REFGLCAweDQyRUUsDQorICAgIDB4OERCMiwgMHg0RDgyLCAweDhEQjMsIDB4MEIwRCwgMHg4REJBLCAweDFBODgsIDB4OERCRSwgMHgxQTg3LA0KKyAgICAweDhEQzIsIDB4MUE4NiwgMHg4REM2LCAweDNCM0QsIDB4OERDOCwgMHg0OTIxLCAweDhEQ0IsIDB4MUE4RSwNCisgICAgMHg4RENDLCAweDFBOEMsIDB4OERDRSwgMHgzQjNFLCAweDhEQ0YsIDB4MUE4OSwgMHg4REQxLCAweDQyRUYsDQorICAgIDB4OERENSwgMHg0RDgzLCAweDhERDYsIDB4MUE4QiwgMHg4REQ3LCAweDQyRjAsIDB4OEREOSwgMHg0OTIyLA0KKyAgICAweDhEREEsIDB4MUE4QSwgMHg4RERCLCAweDFBOEQsIDB4OERERCwgMHgwNjkxLCAweDhEREYsIDB4MUE5MSwNCisgICAgMHg4REUxLCAweDBBN0IsIDB4OERFMywgMHgxQTkyLCAweDhERTQsIDB4M0IzRiwgMHg4REU3LCAweDREODQsDQorICAgIDB4OERFOCwgMHgwNzhELCAweDhERUEsIDB4MUE4RiwgMHg4REVCLCAweDFBOTAsIDB4OERFQywgMHgzQjQwLA0KKyAgICAweDhERUYsIDB4MEZDRiwgMHg4REYxLCAweDREODUsIDB4OERGMiwgMHg0RDg2LCAweDhERjMsIDB4MEJEMywNCisgICAgMHg4REY0LCAweDREODcsIDB4OERGNSwgMHgwQUFCLCAweDhERkMsIDB4MUE5MywgMHg4REZELCAweDQ5MjUsDQorICAgIDB4OERGRiwgMHgxQTk2LCAweDhFMDEsIDB4NEQ4OCwgMHg4RTA2LCAweDQ5MjYsIDB4OEUwOCwgMHgxQTk0LA0KKyAgICAweDhFMDksIDB4MUE5NSwgMHg4RTBBLCAweDBGNDMsIDB4OEUwQiwgMHg0RDg5LCAweDhFMEMsIDB4NDkyMywNCisgICAgMHg4RTBGLCAweDBDN0YsIDB4OEUxMCwgMHgxQTk5LCAweDhFMTQsIDB4NDkyOCwgMHg4RTE2LCAweDQ5MjksDQorICAgIDB4OEUxRCwgMHgxQTk3LCAweDhFMUUsIDB4MUE5OCwgMHg4RTFGLCAweDFBOUEsIDB4OEUyMCwgMHgzQjQxLA0KKyAgICAweDhFMjEsIDB4NDkyQSwgMHg4RTIyLCAweDQ5MkIsIDB4OEUyMywgMHg0MkYxLCAweDhFMjYsIDB4NEQ4QSwNCisgICAgMHg4RTI3LCAweDQ5MkMsIDB4OEUyQSwgMHgxQUE4LCAweDhFMzAsIDB4MUE5RCwgMHg4RTMxLCAweDREOEIsDQorICAgIDB4OEUzNCwgMHgxQTlFLCAweDhFMzUsIDB4MUE5QywgMHg4RTM2LCAweDQ5MkYsIDB4OEUzOSwgMHg0OTMwLA0KKyAgICAweDhFM0QsIDB4NDJGMiwgMHg4RTQwLCAweDREOEMsIDB4OEU0MSwgMHg0RDhELCAweDhFNDIsIDB4MUE5QiwNCisgICAgMHg4RTQ0LCAweDBDMTksIDB4OEU0NywgMHgxQUEwLCAweDhFNDgsIDB4MUFBNCwgMHg4RTQ5LCAweDFBQTEsDQorICAgIDB4OEU0QSwgMHgxQTlGLCAweDhFNEIsIDB4M0I0MiwgMHg4RTRDLCAweDFBQTIsIDB4OEU0RCwgMHg0RDhFLA0KKyAgICAweDhFNEYsIDB4NEQ4RiwgMHg4RTUwLCAweDFBQTMsIDB4OEU1NCwgMHg0OTMxLCAweDhFNTUsIDB4MUFBQSwNCisgICAgMHg4RTU5LCAweDFBQTUsIDB4OEU1QywgMHg0RDkwLCAweDhFNUYsIDB4MEE3QywgMHg4RTYwLCAweDFBQTcsDQorICAgIDB4OEU2MSwgMHg0RDkxLCAweDhFNjIsIDB4NDkzMiwgMHg4RTYzLCAweDFBQTksIDB4OEU2NCwgMHgxQUE2LA0KKyAgICAweDhFNjksIDB4NEQ5MiwgMHg4RTZDLCAweDNCNDMsIDB4OEU2RCwgMHg0OTMzLCAweDhFNkYsIDB4NDkzNCwNCisgICAgMHg4RTcwLCAweDNCNDQsIDB4OEU3MSwgMHg0RDkzLCAweDhFNzIsIDB4MUFBQywgMHg4RTc0LCAweDA5M0QsDQorICAgIDB4OEU3NSwgMHg0RDk0LCAweDhFNzYsIDB4MUFBQiwgMHg4RTc3LCAweDREOTUsIDB4OEU3QSwgMHgzQjQ1LA0KKyAgICAweDhFN0IsIDB4NDJGMywgMHg4RTdDLCAweDFBQUQsIDB4OEU4MSwgMHgxQUFFLCAweDhFODQsIDB4MUFCMSwNCisgICAgMHg4RTg1LCAweDFBQjAsIDB4OEU4NywgMHgxQUFGLCAweDhFODksIDB4NEQ5NiwgMHg4RThBLCAweDFBQjMsDQorICAgIDB4OEU4QiwgMHgxQUIyLCAweDhFOEQsIDB4MEYwMiwgMHg4RTkwLCAweDREOTcsIDB4OEU5MSwgMHgxQUI1LA0KKyAgICAweDhFOTIsIDB4M0I0NiwgMHg4RTkzLCAweDFBQjQsIDB4OEU5NCwgMHgxQUI2LCAweDhFOTUsIDB4NEQ5OCwNCisgICAgMHg4RTk4LCAweDQ5MzUsIDB4OEU5OSwgMHgxQUI3LCAweDhFOUEsIDB4NEQ5OSwgMHg4RTlFLCAweDQ5MzYsDQorICAgIDB4OEVBMSwgMHgxQUI5LCAweDhFQTcsIDB4NEQ5QSwgMHg4RUE5LCAweDREOUIsIDB4OEVBQSwgMHgxQUI4LA0KKyAgICAweDhFQUIsIDB4MEEwRSwgMHg4RUFDLCAweDFBQkEsIDB4OEVBRCwgMHg0RDlDLCAweDhFQUUsIDB4M0I0NywNCisgICAgMHg4RUFGLCAweDA2RTUsIDB4OEVCMCwgMHgxQUJCLCAweDhFQjEsIDB4MUFCRCwgMHg4RUIzLCAweDNCNDgsDQorICAgIDB4OEVCNSwgMHg0OTM3LCAweDhFQjYsIDB4MzcwMywgMHg4RUJCLCAweDQ5MzgsIDB4OEVCRSwgMHgxQUJFLA0KKyAgICAweDhFQzAsIDB4MURFRiwgMHg4RUM1LCAweDFBQkYsIDB4OEVDNiwgMHgxQUJDLCAweDhFQzgsIDB4MUFDMCwNCisgICAgMHg4RUNBLCAweDA5MDIsIDB4OEVDQiwgMHgxQUMxLCAweDhFQ0MsIDB4MDY0QSwgMHg4RUNELCAweDA3MDksDQorICAgIDB4OEVDRiwgMHgyMUI3LCAweDhFRDEsIDB4M0I0OSwgMHg4RUQyLCAweDA3NjIsIDB4OEVENCwgMHgzQjRBLA0KKyAgICAweDhFREIsIDB4MUFDMiwgMHg4RURGLCAweDBDQzgsIDB4OEVFMiwgMHgwQzM4LCAweDhFRTMsIDB4MUFDMywNCisgICAgMHg4RUU4LCAweDREOUQsIDB4OEVFQiwgMHgxQUM2LCAweDhFRjAsIDB4NEQ5RSwgMHg4RUY4LCAweDA4RTAsDQorICAgIDB4OEVGOSwgMHgzQjRCLCAweDhFRkEsIDB4NDJGNiwgMHg4RUZCLCAweDFBQzUsIDB4OEVGQywgMHgxQUM0LA0KKyAgICAweDhFRkQsIDB4MDczMCwgMHg4RUZFLCAweDFBQzcsIDB4OEYwMCwgMHg0OTNDLCAweDhGMDMsIDB4MDVCMSwNCisgICAgMHg4RjA1LCAweDFBQzksIDB4OEYwNywgMHg0RDlGLCAweDhGMDgsIDB4NDkzRCwgMHg4RjA5LCAweDA4NEMsDQorICAgIDB4OEYwQSwgMHgxQUM4LCAweDhGMEMsIDB4MUFEMSwgMHg4RjEyLCAweDFBQ0IsIDB4OEYxMywgMHgxQUNELA0KKyAgICAweDhGMTQsIDB4MEUzNSwgMHg4RjE1LCAweDFBQ0EsIDB4OEYxNywgMHgzQjRDLCAweDhGMTgsIDB4NERBMCwNCisgICAgMHg4RjE5LCAweDFBQ0MsIDB4OEYxQiwgMHgxQUQwLCAweDhGMUMsIDB4MUFDRSwgMHg4RjFELCAweDA2NEIsDQorICAgIDB4OEYxRSwgMHg0MkY3LCAweDhGMUYsIDB4MUFDRiwgMHg4RjI1LCAweDREQTEsIDB4OEYyNiwgMHgxQUQyLA0KKyAgICAweDhGMjcsIDB4NERBMiwgMHg4RjI5LCAweDBEMTAsIDB4OEYyQSwgMHgwRkEwLCAweDhGMkIsIDB4NDkzRSwNCisgICAgMHg4RjJDLCAweDREQTMsIDB4OEYyRCwgMHg0MkY4LCAweDhGMkYsIDB4MDkzRSwgMHg4RjMzLCAweDFBRDMsDQorICAgIDB4OEYzNSwgMHg0REE0LCAweDhGMzYsIDB4M0I0RCwgMHg4RjM4LCAweDBGMEMsIDB4OEYzOSwgMHgxQUQ1LA0KKyAgICAweDhGM0EsIDB4NERBNSwgMHg4RjNCLCAweDFBRDQsIDB4OEYzRSwgMHgxQUQ4LCAweDhGM0YsIDB4MEYyQiwNCisgICAgMHg4RjQwLCAweDQ5M0YsIDB4OEY0MiwgMHgxQUQ3LCAweDhGNDMsIDB4NERBNiwgMHg4RjQ0LCAweDA1Q0IsDQorICAgIDB4OEY0NSwgMHgxQUQ2LCAweDhGNDYsIDB4MUFEQiwgMHg4RjQ3LCAweDREQTcsIDB4OEY0OSwgMHgxQURBLA0KKyAgICAweDhGNEEsIDB4NDk0MCwgMHg4RjRDLCAweDFBRDksIDB4OEY0RCwgMHgwQzJDLCAweDhGNEUsIDB4MUFEQywNCisgICAgMHg4RjUxLCAweDREQTgsIDB4OEY1NCwgMHg0MkY5LCAweDhGNTUsIDB4NERBOSwgMHg4RjU3LCAweDFBREQsDQorICAgIDB4OEY1OCwgMHg0OTQxLCAweDhGNUMsIDB4MUFERSwgMHg4RjVGLCAweDA3RkUsIDB4OEY2MSwgMHgwNkZCLA0KKyAgICAweDhGNjIsIDB4MUFERiwgMHg4RjYzLCAweDFBRTAsIDB4OEY2NCwgMHgxQUUxLCAweDhGOUIsIDB4MEEwRiwNCisgICAgMHg4RjlDLCAweDFBRTIsIDB4OEY5RSwgMHgwOEQ5LCAweDhGOUYsIDB4MUFFMywgMHg4RkEwLCAweDREQUEsDQorICAgIDB4OEZBMSwgMHg0REFCLCAweDhGQTIsIDB4NERBQywgMHg4RkEzLCAweDFBRTQsIDB4OEZBNCwgMHg0OTQzLA0KKyAgICAweDhGQTUsIDB4NERBRCwgMHg4RkE2LCAweDNCNEUsIDB4OEZBNywgMHgxMEI2LCAweDhGQTgsIDB4MTBCNSwNCisgICAgMHg4RkFELCAweDFBRTUsIDB4OEZBRSwgMHgxN0ZGLCAweDhGQUYsIDB4MUFFNiwgMHg4RkIwLCAweDBCNjIsDQorICAgIDB4OEZCMSwgMHgwOUYxLCAweDhGQjIsIDB4MENGNiwgMHg4RkI0LCAweDQ5NDQsIDB4OEZCNSwgMHgzQjRGLA0KKyAgICAweDhGQjYsIDB4M0I1MCwgMHg4RkI3LCAweDFBRTcsIDB4OEZCQSwgMHgwRTI1LCAweDhGQkIsIDB4MEJGMCwNCisgICAgMHg4RkJDLCAweDA4MTAsIDB4OEZCRiwgMHgwQjY3LCAweDhGQzEsIDB4NDk0NiwgMHg4RkMyLCAweDA0Q0MsDQorICAgIDB4OEZDNCwgMHgwRUE2LCAweDhGQzUsIDB4MEExRCwgMHg4RkM2LCAweDQ5NDcsIDB4OEZDOCwgMHgzNzk5LA0KKyAgICAweDhGQ0EsIDB4NDk0OSwgMHg4RkNELCAweDQ5NEEsIDB4OEZDRSwgMHgwNzM0LCAweDhGRDEsIDB4MDZEOSwNCisgICAgMHg4RkQzLCAweDQ5NEIsIDB4OEZENCwgMHgwRTI2LCAweDhGRDUsIDB4NDk0QywgMHg4RkRBLCAweDFBRTgsDQorICAgIDB4OEZFMCwgMHgzQjUyLCAweDhGRTIsIDB4MUFFQSwgMHg4RkU0LCAweDNCNTMsIDB4OEZFNSwgMHgxQUU5LA0KKyAgICAweDhGRTYsIDB4MDU2MCwgMHg4RkU4LCAweDQyRkIsIDB4OEZFOSwgMHgwQ0NFLCAweDhGRUEsIDB4MUFFQiwNCisgICAgMHg4RkVCLCAweDBEMkQsIDB4OEZFRCwgMHgwQzJELCAweDhGRUUsIDB4NDJGQywgMHg4RkVGLCAweDFBRUMsDQorICAgIDB4OEZGMCwgMHgwOTVDLCAweDhGRjEsIDB4NDk0RCwgMHg4RkY0LCAweDFBRUUsIDB4OEZGNSwgMHg0OTRFLA0KKyAgICAweDhGRjYsIDB4M0I1NCwgMHg4RkY3LCAweDBFQ0UsIDB4OEZGOCwgMHgxQUZELCAweDhGRjksIDB4MUFGMCwNCisgICAgMHg4RkZBLCAweDFBRjEsIDB4OEZGQiwgMHg0OTRGLCAweDhGRkQsIDB4MEJFNSwgMHg5MDAwLCAweDBCNDAsDQorICAgIDB4OTAwMSwgMHgwQUY5LCAweDkwMDIsIDB4M0I1NSwgMHg5MDAzLCAweDBDODAsIDB4OTAwNCwgMHg0REFFLA0KKyAgICAweDkwMDUsIDB4MUFFRiwgMHg5MDA2LCAweDA2NkYsIDB4OTAwOCwgMHg0MkZELCAweDkwMEIsIDB4MUFGOCwNCisgICAgMHg5MDBDLCAweDQ5NTAsIDB4OTAwRCwgMHgxQUY1LCAweDkwMEUsIDB4MUIwMiwgMHg5MDBGLCAweDBDODEsDQorICAgIDB4OTAxMCwgMHgwQjlFLCAweDkwMTEsIDB4MUFGMiwgMHg5MDEzLCAweDBDMUEsIDB4OTAxNCwgMHgwQzRELA0KKyAgICAweDkwMTUsIDB4MUFGMywgMHg5MDE2LCAweDFBRjcsIDB4OTAxNywgMHgwQTI2LCAweDkwMTksIDB4MEQxRCwNCisgICAgMHg5MDFBLCAweDBCRTgsIDB4OTAxQiwgMHg0REFGLCAweDkwMUQsIDB4MEE2NiwgMHg5MDFFLCAweDFBRjYsDQorICAgIDB4OTAxRiwgMHgwQjBFLCAweDkwMjAsIDB4MEIwNCwgMHg5MDIxLCAweDFBRjQsIDB4OTAyMiwgMHgwNDZELA0KKyAgICAweDkwMjMsIDB4MEZDOCwgMHg5MDI3LCAweDFBRjksIDB4OTAyQywgMHgzQjU2LCAweDkwMkQsIDB4NDJGRSwNCisgICAgMHg5MDJFLCAweDBCNDEsIDB4OTAyRiwgMHg0REIwLCAweDkwMzEsIDB4MDkzRiwgMHg5MDMyLCAweDBBMTAsDQorICAgIDB4OTAzNSwgMHgxQUZCLCAweDkwMzYsIDB4MUFGQSwgMHg5MDM3LCAweDQ5NTEsIDB4OTAzOCwgMHgwNEIzLA0KKyAgICAweDkwMzksIDB4MUFGQywgMHg5MDNDLCAweDBEQTEsIDB4OTAzRSwgMHgxQjA0LCAweDkwNDEsIDB4MENCMywNCisgICAgMHg5MDQyLCAweDBBMzEsIDB4OTA0MywgMHg0OTUzLCAweDkwNDQsIDB4M0I1NywgMHg5MDQ1LCAweDBCOTcsDQorICAgIDB4OTA0NywgMHgwNkYwLCAweDkwNDksIDB4MUIwMywgMHg5MDRBLCAweDBGMjEsIDB4OTA0QiwgMHgwNEUxLA0KKyAgICAweDkwNEMsIDB4NERCMSwgMHg5MDRELCAweDBFMjcsIDB4OTA0RSwgMHgwNTYxLCAweDkwNEYsIDB4MUFGRSwNCisgICAgMHg5MDUwLCAweDFBRkYsIDB4OTA1MSwgMHgxQjAwLCAweDkwNTIsIDB4MUIwMSwgMHg5MDUzLCAweDBDOTMsDQorICAgIDB4OTA1NCwgMHgwQjYxLCAweDkwNTUsIDB4MDRBNywgMHg5MDU2LCAweDFCMDUsIDB4OTA1OCwgMHgxQjA2LA0KKyAgICAweDkwNTksIDB4MUQzNCwgMHg5MDVCLCAweDREQjIsIDB4OTA1QywgMHgwQjFELCAweDkwNUQsIDB4NDk1NCwNCisgICAgMHg5MDVFLCAweDFCMDcsIDB4OTA2MCwgMHgwNTE1LCAweDkwNjEsIDB4MEFDRSwgMHg5MDYzLCAweDA3NjMsDQorICAgIDB4OTA2NSwgMHgwRjQ0LCAweDkwNjcsIDB4MjFCQSwgMHg5MDY4LCAweDFCMDgsIDB4OTA2OSwgMHgwQzI2LA0KKyAgICAweDkwNkQsIDB4MEFGQSwgMHg5MDZFLCAweDA5MDMsIDB4OTA2RiwgMHgxQjA5LCAweDkwNzAsIDB4NERCMywNCisgICAgMHg5MDcyLCAweDFCMEMsIDB4OTA3NCwgMHg0REI0LCAweDkwNzUsIDB4MDk2RiwgMHg5MDc2LCAweDFCMEEsDQorICAgIDB4OTA3NywgMHgwQUFELCAweDkwNzgsIDB4MEFBQywgMHg5MDc5LCAweDREQjUsIDB4OTA3QSwgMHgwNEE4LA0KKyAgICAweDkwN0MsIDB4MEY5MywgMHg5MDdELCAweDFCMEUsIDB4OTA3RiwgMHgwRDg2LCAweDkwODAsIDB4MUIxMCwNCisgICAgMHg5MDgxLCAweDFCMEYsIDB4OTA4MiwgMHgxQjBELCAweDkwODMsIDB4MTczNywgMHg5MDg0LCAweDA2MTAsDQorICAgIDB4OTA4NSwgMHg0OTU3LCAweDkwODcsIDB4MUFFRCwgMHg5MDg4LCAweDNCNTgsIDB4OTA4OSwgMHgxQjEyLA0KKyAgICAweDkwOEEsIDB4MUIxMSwgMHg5MDhCLCAweDREQjYsIDB4OTA4QywgMHg0OTU4LCAweDkwOEYsIDB4MUIxMywNCisgICAgMHg5MDkwLCAweDQ5NTksIDB4OTA5MSwgMHgwRjIyLCAweDkwOTUsIDB4M0I1OSwgMHg5MDk3LCAweDQyRkYsDQorICAgIDB4OTA5OCwgMHg0REI3LCAweDkwOTksIDB4M0I1QSwgMHg5MDlCLCAweDNCNUIsIDB4OTBBMCwgMHg0REI4LA0KKyAgICAweDkwQTEsIDB4NDk1QSwgMHg5MEEyLCAweDNCNUMsIDB4OTBBMywgMHgwQ0I5LCAweDkwQTYsIDB4MEU1QywNCisgICAgMHg5MEE4LCAweDFCMTQsIDB4OTBBQSwgMHgwOTA1LCAweDkwQUYsIDB4MUIxNSwgMHg5MEIwLCAweDQ5NUMsDQorICAgIDB4OTBCMSwgMHgxQjE2LCAweDkwQjIsIDB4NERCOSwgMHg5MEIzLCAweDQzMDAsIDB4OTBCNCwgMHgzQjVELA0KKyAgICAweDkwQjUsIDB4MUIxNywgMHg5MEI2LCAweDQ5NUQsIDB4OTBCOCwgMHgwQzFCLCAweDkwQkQsIDB4NERCQSwNCisgICAgMHg5MEJFLCAweDQzMDEsIDB4OTBDMSwgMHgwNEFFLCAweDkwQzMsIDB4NDk1RSwgMHg5MEM0LCAweDQzMDIsDQorICAgIDB4OTBDNSwgMHg0MzAzLCAweDkwQzcsIDB4NDMwNCwgMHg5MEM4LCAweDQ5NUYsIDB4OTBDOSwgMHg0REJCLA0KKyAgICAweDkwQ0EsIDB4MDdFQiwgMHg5MENFLCAweDBGRTAsIDB4OTBENywgMHgzQjVFLCAweDkwREIsIDB4MUIxQiwNCisgICAgMHg5MERDLCAweDQ5NjEsIDB4OTBERCwgMHgzQjVGLCAweDkwREUsIDB4MjFCQiwgMHg5MERGLCAweDQ5NjIsDQorICAgIDB4OTBFMSwgMHgwNzBBLCAweDkwRTIsIDB4MUIxOCwgMHg5MEU0LCAweDFCMTksIDB4OTBFOCwgMHgwREU2LA0KKyAgICAweDkwRUIsIDB4NDk2NywgMHg5MEVELCAweDA1QjIsIDB4OTBFRiwgMHg0MzA1LCAweDkwRjAsIDB4NERCQywNCisgICAgMHg5MEYyLCAweDQ5NjUsIDB4OTBGNCwgMHgzQjYwLCAweDkwRjUsIDB4MEYyMywgMHg5MEY2LCAweDQ5NjQsDQorICAgIDB4OTBGNywgMHgwNkI3LCAweDkwRkQsIDB4MEM0RSwgMHg5MEZFLCAweDQ5NjgsIDB4OTBGRiwgMHg0OTY5LA0KKyAgICAweDkxMDAsIDB4NDk2NiwgMHg5MTAyLCAweDFCMUMsIDB4OTEwNCwgMHg0OTZBLCAweDkxMDUsIDB4NERCRCwNCisgICAgMHg5MTA2LCAweDQ5NkIsIDB4OTExMiwgMHgxQjFELCAweDkxMTQsIDB4NDMwNiwgMHg5MTE1LCAweDIxQkQsDQorICAgIDB4OTExNiwgMHg0MzA3LCAweDkxMTcsIDB4M0I2MSwgMHg5MTE4LCAweDQ5NkMsIDB4OTExOSwgMHgxQjFFLA0KKyAgICAweDkxMUMsIDB4M0I2MiwgMHg5MTFFLCAweDQ5NkQsIDB4OTEyMiwgMHg0MzA4LCAweDkxMjMsIDB4NDMwOSwNCisgICAgMHg5MTI1LCAweDREQkUsIDB4OTEyNywgMHgyMUJFLCAweDkxMkQsIDB4MEMxQywgMHg5MTJGLCAweDQzMEEsDQorICAgIDB4OTEzMCwgMHgxQjIwLCAweDkxMzEsIDB4M0I2MywgMHg5MTMyLCAweDFCMUYsIDB4OTEzNCwgMHg0MzBCLA0KKyAgICAweDkxMzcsIDB4NDk2RSwgMHg5MTM5LCAweDQ5NkYsIDB4OTEzQSwgMHgzQjY0LCAweDkxM0QsIDB4M0I2NSwNCisgICAgMHg5MTQ2LCAweDQ5NzAsIDB4OTE0NywgMHg0OTcxLCAweDkxNDgsIDB4M0I2NiwgMHg5MTQ5LCAweDBDQUIsDQorICAgIDB4OTE0QSwgMHgxQjIxLCAweDkxNEIsIDB4MDk0MCwgMHg5MTRDLCAweDA5MEMsIDB4OTE0RCwgMHgwRDExLA0KKyAgICAweDkxNEUsIDB4MEJBRiwgMHg5MTUyLCAweDA5MUUsIDB4OTE1NCwgMHgwQTMyLCAweDkxNTYsIDB4MUIyMiwNCisgICAgMHg5MTU3LCAweDQ5NzIsIDB4OTE1OCwgMHgxQjIzLCAweDkxNTksIDB4NDk3MywgMHg5MTVBLCAweDREQkYsDQorICAgIDB4OTE1QiwgMHgzQjY3LCAweDkxNjEsIDB4M0I2OCwgMHg5MTYyLCAweDBBMjMsIDB4OTE2MywgMHgxQjI0LA0KKyAgICAweDkxNjQsIDB4M0I2OSwgMHg5MTY1LCAweDFCMjUsIDB4OTE2NywgMHg0REMwLCAweDkxNjksIDB4MUIyNiwNCisgICAgMHg5MTZBLCAweDBGNTksIDB4OTE2QywgMHgwOTQxLCAweDkxNzIsIDB4MUIyOCwgMHg5MTczLCAweDFCMjcsDQorICAgIDB4OTE3NCwgMHg0OTc0LCAweDkxNzUsIDB4MDdFQywgMHg5MTc3LCAweDA4MDUsIDB4OTE3OCwgMHgwODhFLA0KKyAgICAweDkxNzksIDB4NDk3NSwgMHg5MTdBLCAweDREQzEsIDB4OTE4MiwgMHgxQjJCLCAweDkxODMsIDB4NDMwQywNCisgICAgMHg5MTg1LCAweDQ5NzYsIDB4OTE4NywgMHgwOTcwLCAweDkxODksIDB4MUIyQSwgMHg5MThBLCAweDREQzIsDQorICAgIDB4OTE4QiwgMHgxQjI5LCAweDkxOEQsIDB4MEI0OSwgMHg5MThFLCAweDNCNkEsIDB4OTE5MCwgMHgwN0EzLA0KKyAgICAweDkxOTEsIDB4NERDMywgMHg5MTkyLCAweDBBNjcsIDB4OTE5NSwgMHg0REM0LCAweDkxOTcsIDB4MEQ0NCwNCisgICAgMHg5MTlDLCAweDA5NDMsIDB4OTE5RSwgMHgzQjZCLCAweDkxQTIsIDB4MUIyQywgMHg5MUE0LCAweDA5QzcsDQorICAgIDB4OTFBOCwgMHgzQjZDLCAweDkxQUEsIDB4MUIyRiwgMHg5MUFCLCAweDFCMkQsIDB4OTFBQywgMHgxRTFCLA0KKyAgICAweDkxQUQsIDB4M0I2RCwgMHg5MUFFLCAweDNCNkUsIDB4OTFBRiwgMHgxQjJFLCAweDkxQjAsIDB4NERDNSwNCisgICAgMHg5MUIxLCAweDFFNjEsIDB4OTFCMiwgMHgzQjZGLCAweDkxQjMsIDB4NDk3NywgMHg5MUI0LCAweDFCMzEsDQorICAgIDB4OTFCNSwgMHgxQjMwLCAweDkxQjYsIDB4NDk3OCwgMHg5MUI4LCAweDA5RTIsIDB4OTFCQSwgMHgxQjMyLA0KKyAgICAweDkxQkIsIDB4NERDNiwgMHg5MUJDLCAweDNCNzAsIDB4OTFCRCwgMHg0REM3LCAweDkxQzAsIDB4MUIzMywNCisgICAgMHg5MUMxLCAweDFCMzQsIDB4OTFDMiwgMHg0REM4LCAweDkxQzMsIDB4NDk3OSwgMHg5MUM0LCAweDQ5N0EsDQorICAgIDB4OTFDNSwgMHg0REM5LCAweDkxQzYsIDB4MEQ2NCwgMHg5MUM3LCAweDA4NDMsIDB4OTFDOCwgMHgwOTBELA0KKyAgICAweDkxQzksIDB4MUIzNSwgMHg5MUNCLCAweDFCMzYsIDB4OTFDQywgMHgwRjZDLCAweDkxQ0QsIDB4MDk0RiwNCisgICAgMHg5MUNFLCAweDBFRkEsIDB4OTFDRiwgMHgwRjk0LCAweDkxRDAsIDB4MUIzNywgMHg5MUQxLCAweDA2REEsDQorICAgIDB4OTFENiwgMHgxQjM4LCAweDkxRDcsIDB4MjFDMCwgMHg5MUQ4LCAweDBDMUQsIDB4OTFEQSwgMHgyMUJGLA0KKyAgICAweDkxREIsIDB4MUIzQiwgMHg5MURDLCAweDA1RDYsIDB4OTFERCwgMHgwQTExLCAweDkxREUsIDB4MjFDMSwNCisgICAgMHg5MURGLCAweDFCMzksIDB4OTFFMSwgMHgxQjNBLCAweDkxRTMsIDB4MEJGQywgMHg5MUU0LCAweDIxQzQsDQorICAgIDB4OTFFNSwgMHgyMUM1LCAweDkxRTYsIDB4MEU4MywgMHg5MUU3LCAweDA2RjQsIDB4OTFFQywgMHg0OTdELA0KKyAgICAweDkxRUQsIDB4MjFDMiwgMHg5MUVFLCAweDIxQzMsIDB4OTFGMCwgMHgzQjcxLCAweDkxRjEsIDB4NDMwRCwNCisgICAgMHg5MUY1LCAweDFCM0QsIDB4OTFGNiwgMHgxQjNFLCAweDkxRjcsIDB4M0I3MiwgMHg5MUZCLCAweDNCNzMsDQorICAgIDB4OTFGQywgMHgxQjNDLCAweDkxRkYsIDB4MUI0MCwgMHg5MjAwLCAweDREQ0EsIDB4OTIwMSwgMHg0OTdFLA0KKyAgICAweDkyMDYsIDB4MjFDNiwgMHg5MjA3LCAweDNCNzQsIDB4OTIwOSwgMHg0RENCLCAweDkyMEEsIDB4MjFDOCwNCisgICAgMHg5MjBELCAweDBDQjcsIDB4OTIwRSwgMHgwNUExLCAweDkyMTAsIDB4MjFDNywgMHg5MjExLCAweDFCNDQsDQorICAgIDB4OTIxNCwgMHgxQjQxLCAweDkyMTUsIDB4MUI0MywgMHg5MjE2LCAweDQ5N0YsIDB4OTIxNywgMHg0OTgwLA0KKyAgICAweDkyMUUsIDB4MUIzRiwgMHg5MjIzLCAweDREQ0MsIDB4OTIyOCwgMHgzQjc1LCAweDkyMjksIDB4MUI4QSwNCisgICAgMHg5MjJDLCAweDFCNDIsIDB4OTIzMywgMHgzQjc2LCAweDkyMzQsIDB4MEZCMywgMHg5MjM3LCAweDA3OEUsDQorICAgIDB4OTIzOCwgMHgzQjc3LCAweDkyMzksIDB4MjFDRiwgMHg5MjNBLCAweDIxQzksIDB4OTIzQywgMHgyMUNCLA0KKyAgICAweDkyM0YsIDB4MUI0QywgMHg5MjQwLCAweDIxQ0EsIDB4OTI0MiwgMHg0OTgyLCAweDkyNDMsIDB4M0I3OCwNCisgICAgMHg5MjQ0LCAweDBDMkUsIDB4OTI0NSwgMHgxQjQ3LCAweDkyNDcsIDB4M0I3OSwgMHg5MjQ4LCAweDFCNEEsDQorICAgIDB4OTI0OSwgMHgxQjQ4LCAweDkyNEEsIDB4NDk4MywgMHg5MjRCLCAweDFCNEQsIDB4OTI0RSwgMHgyMUNDLA0KKyAgICAweDkyNEYsIDB4M0I3QSwgMHg5MjUwLCAweDFCNEUsIDB4OTI1MSwgMHgyMUNFLCAweDkyNTYsIDB4NDk4NCwNCisgICAgMHg5MjU3LCAweDFCNDYsIDB4OTI1OSwgMHgyMUNELCAweDkyNUEsIDB4MUI1MywgMHg5MjVCLCAweDA1MTYsDQorICAgIDB4OTI1RSwgMHgxQjQ1LCAweDkyNjAsIDB4M0I3QiwgMHg5MjYxLCAweDQ5ODUsIDB4OTI2MiwgMHgwRDQxLA0KKyAgICAweDkyNjQsIDB4MUI0OSwgMHg5MjY1LCAweDQ5ODYsIDB4OTI2NiwgMHgwOUM4LCAweDkyNjcsIDB4MjFEMCwNCisgICAgMHg5MjY4LCAweDQ5ODcsIDB4OTI3MSwgMHgwN0VELCAweDkyNzYsIDB4NERDRCwgMHg5Mjc3LCAweDIxRDIsDQorICAgIDB4OTI3OCwgMHgyMUQzLCAweDkyN0MsIDB4NDk4OSwgMHg5MjdELCAweDQ5OEEsIDB4OTI3RSwgMHgwRTc2LA0KKyAgICAweDkyN0YsIDB4NDk4QiwgMHg5MjgwLCAweDA2REMsIDB4OTI4MywgMHgwOTUwLCAweDkyODUsIDB4MEM5NCwNCisgICAgMHg5Mjg4LCAweDIwQUEsIDB4OTI4OSwgMHg0OThDLCAweDkyOEQsIDB4NDk4RCwgMHg5MjhFLCAweDREQ0UsDQorICAgIDB4OTI5MSwgMHgwQUFGLCAweDkyOTMsIDB4MUI1MSwgMHg5Mjk1LCAweDFCNEIsIDB4OTI5NiwgMHgxQjUwLA0KKyAgICAweDkyOTcsIDB4NDk4RSwgMHg5Mjk4LCAweDBFQ0YsIDB4OTI5OSwgMHg0OThGLCAweDkyOUEsIDB4MEJENCwNCisgICAgMHg5MjlCLCAweDFCNTIsIDB4OTI5QywgMHgxQjRGLCAweDkyOUYsIDB4NDk5MCwgMHg5MkE3LCAweDIxRDEsDQorICAgIDB4OTJBQiwgMHg0OTkxLCAweDkyQUQsIDB4MEFBRSwgMHg5MkFGLCAweDREQ0YsIDB4OTJCMiwgMHg0OTk0LA0KKyAgICAweDkyQjMsIDB4MzU1NCwgMHg5MkI3LCAweDFCNTYsIDB4OTJCOSwgMHgxQjU1LCAweDkyQkIsIDB4NEREMCwNCisgICAgMHg5MkJDLCAweDRERDEsIDB4OTJCRiwgMHg0OTk1LCAweDkyQzAsIDB4NDk5NiwgMHg5MkMxLCAweDRERDIsDQorICAgIDB4OTJDMiwgMHgzQjdDLCAweDkyQzMsIDB4NEREMywgMHg5MkM1LCAweDRERDQsIDB4OTJDNiwgMHg0OTk3LA0KKyAgICAweDkyQzgsIDB4NERENSwgMHg5MkNCLCAweDNCN0QsIDB4OTJDQywgMHgzQjdFLCAweDkyQ0UsIDB4NDk5OCwNCisgICAgMHg5MkNGLCAweDFCNTQsIDB4OTJEMCwgMHgyMUQ3LCAweDkyRDIsIDB4MEU1RCwgMHg5MkQzLCAweDIxREIsDQorICAgIDB4OTJENSwgMHgyMUQ5LCAweDkyRDcsIDB4MjFENSwgMHg5MkQ5LCAweDIxRDYsIDB4OTJERiwgMHgzQjdGLA0KKyAgICAweDkyRTAsIDB4MjFEQSwgMHg5MkU0LCAweDA5ODUsIDB4OTJFNSwgMHg0OTk5LCAweDkyRTcsIDB4MjFENCwNCisgICAgMHg5MkU5LCAweDFCNTcsIDB4OTJFQSwgMHgwRTJGLCAweDkyRUQsIDB4MDRGNiwgMHg5MkYyLCAweDBEQjgsDQorICAgIDB4OTJGMywgMHgwQkIwLCAweDkyRjcsIDB4NDk5RCwgMHg5MkY4LCAweDA2OTIsIDB4OTJGOSwgMHgyMEIwLA0KKyAgICAweDkyRkEsIDB4MUI1OSwgMHg5MkZCLCAweDIxREUsIDB4OTJGQywgMHgwN0VGLCAweDkyRkYsIDB4MjFFMSwNCisgICAgMHg5MzAyLCAweDIxRTMsIDB4OTMwNCwgMHgzNDVBLCAweDkzMDYsIDB4MDg3QSwgMHg5MzBELCAweDNCODAsDQorICAgIDB4OTMwRiwgMHgxQjU4LCAweDkzMTAsIDB4MEEzMywgMHg5MzExLCAweDQ5OUEsIDB4OTMxNCwgMHg0REQ2LA0KKyAgICAweDkzMTUsIDB4M0I4MSwgMHg5MzE4LCAweDBBMzQsIDB4OTMxOSwgMHgxQjVDLCAweDkzMUEsIDB4MUI1RSwNCisgICAgMHg5MzFELCAweDIxRTIsIDB4OTMxRSwgMHgyMUUwLCAweDkzMUYsIDB4M0I4MiwgMHg5MzIwLCAweDA5RTMsDQorICAgIDB4OTMyMSwgMHgyMURELCAweDkzMjIsIDB4MUI1RCwgMHg5MzIzLCAweDFCNUYsIDB4OTMyNSwgMHgyMURDLA0KKyAgICAweDkzMjYsIDB4MDZDQiwgMHg5MzI3LCAweDNCODMsIDB4OTMyOCwgMHgwREI3LCAweDkzMjksIDB4NDk5RSwNCisgICAgMHg5MzJCLCAweDA5MEUsIDB4OTMyQywgMHgwRkM5LCAweDkzMkUsIDB4MUI1QiwgMHg5MzJGLCAweDA4NjgsDQorICAgIDB4OTMzMiwgMHgwRkU1LCAweDkzMzMsIDB4NERENywgMHg5MzM1LCAweDFCNjEsIDB4OTMzNiwgMHg0REQ4LA0KKyAgICAweDkzM0EsIDB4MUI2MCwgMHg5MzNCLCAweDFCNjIsIDB4OTM0NCwgMHgxQjVBLCAweDkzNDcsIDB4M0I4NCwNCisgICAgMHg5MzQ4LCAweDIwQTksIDB4OTM0OSwgMHg0MzBFLCAweDkzNEEsIDB4MzQ1OCwgMHg5MzRCLCAweDBDQzEsDQorICAgIDB4OTM0RCwgMHgwQzRGLCAweDkzNTEsIDB4NDlBMSwgMHg5MzUyLCAweDNCODUsIDB4OTM1NCwgMHgwQkYzLA0KKyAgICAweDkzNTYsIDB4MUI2NywgMHg5MzU3LCAweDIxRTUsIDB4OTM1OCwgMHg0REQ5LCAweDkzNUEsIDB4NDlBMiwNCisgICAgMHg5MzVCLCAweDBCODEsIDB4OTM1QywgMHgxQjYzLCAweDkzNjAsIDB4MUI2NCwgMHg5MzY0LCAweDQzMEYsDQorICAgIDB4OTM2NSwgMHg0MzEwLCAweDkzNkEsIDB4M0I4NywgMHg5MzZCLCAweDQ5QTMsIDB4OTM2QywgMHgwNzAzLA0KKyAgICAweDkzNkQsIDB4M0I4OCwgMHg5MzZFLCAweDFCNjYsIDB4OTM3MCwgMHgyMUU0LCAweDkzNzEsIDB4NDlBNCwNCisgICAgMHg5MzczLCAweDQ5QTUsIDB4OTM3NSwgMHgwNzY0LCAweDkzN0MsIDB4MUI2NSwgMHg5MzdFLCAweDA5QzksDQorICAgIDB4OTM3RiwgMHg0RERBLCAweDkzODIsIDB4NEREQiwgMHg5Mzg4LCAweDQ5QTksIDB4OTM4QSwgMHg0RERDLA0KKyAgICAweDkzOEIsIDB4NDlBQSwgMHg5MzhDLCAweDA1RDcsIDB4OTM4RiwgMHg0OUFCLCAweDkzOTQsIDB4MUI2QiwNCisgICAgMHg5Mzk2LCAweDA4MkYsIDB4OTM5NywgMHgwQUZCLCAweDkzOUEsIDB4MEJFNiwgMHg5MzlCLCAweDNCODksDQorICAgIDB4OTM5RSwgMHg0OUFDLCAweDkzQTEsIDB4NDlBNiwgMHg5M0EzLCAweDQzMTEsIDB4OTNBNCwgMHgyMUU2LA0KKyAgICAweDkzQTcsIDB4MDU5OSwgMHg5M0E5LCAweDNCOEIsIDB4OTNBQywgMHgxQjY5LCAweDkzQUQsIDB4MUI2QSwNCisgICAgMHg5M0FFLCAweDBCREYsIDB4OTNCMCwgMHgxQjY4LCAweDkzQjksIDB4MUI2QywgMHg5M0JBLCAweDNCOEEsDQorICAgIDB4OTNCQiwgMHg0RERELCAweDkzQzEsIDB4M0I4QywgMHg5M0MzLCAweDFCNzIsIDB4OTNDNiwgMHgyMUU3LA0KKyAgICAweDkzQzcsIDB4NDlCMSwgMHg5M0M4LCAweDFCNzUsIDB4OTNDQSwgMHgzQjhELCAweDkzQ0MsIDB4NERERSwNCisgICAgMHg5M0QwLCAweDFCNzQsIDB4OTNEMSwgMHgwQzI3LCAweDkzRDYsIDB4MUI2RCwgMHg5M0Q3LCAweDFCNkUsDQorICAgIDB4OTNEOCwgMHgxQjcxLCAweDkzREMsIDB4NDlCMiwgMHg5M0RELCAweDFCNzMsIDB4OTNERSwgMHgyMUU4LA0KKyAgICAweDkzREYsIDB4NDMxMiwgMHg5M0UxLCAweDA2QjgsIDB4OTNFMiwgMHgzQjhFLCAweDkzRTQsIDB4MUI3NiwNCisgICAgMHg5M0U1LCAweDFCNzAsIDB4OTNFNiwgMHg0RERGLCAweDkzRTcsIDB4NDlCMywgMHg5M0U4LCAweDFCNkYsDQorICAgIDB4OTNGMSwgMHg0OUIwLCAweDkzRjUsIDB4NDlBRCwgMHg5M0Y4LCAweDIxRTksIDB4OTNGOSwgMHg0REUwLA0KKyAgICAweDkzRkEsIDB4M0I4RiwgMHg5M0ZCLCAweDQ5QjcsIDB4OTNGRCwgMHgzQjkwLCAweDk0MDIsIDB4NERFMSwNCisgICAgMHg5NDAzLCAweDFCN0EsIDB4OTQwNCwgMHg0MzEzLCAweDk0MDcsIDB4MUI3QiwgMHg5NDA5LCAweDQ5QjQsDQorICAgIDB4OTQwRCwgMHg0REUyLCAweDk0MEUsIDB4NERFMywgMHg5NDBGLCAweDNCOTEsIDB4OTQxMCwgMHgxQjdDLA0KKyAgICAweDk0MTMsIDB4MUI3OSwgMHg5NDE0LCAweDFCNzgsIDB4OTQxNiwgMHg0OUI1LCAweDk0MTcsIDB4NDlCNiwNCisgICAgMHg5NDE4LCAweDA5Q0EsIDB4OTQxOSwgMHgwQzgyLCAweDk0MUEsIDB4MUI3NywgMHg5NDIxLCAweDFCODAsDQorICAgIDB4OTQyQiwgMHgxQjdFLCAweDk0MkUsIDB4NERFNCwgMHg5NDMxLCAweDIxRUEsIDB4OTQzMiwgMHg0OUI4LA0KKyAgICAweDk0MzMsIDB4NDMxNCwgMHg5NDM0LCAweDNCOTIsIDB4OTQzNSwgMHgxQjdGLCAweDk0MzYsIDB4MUI3RCwNCisgICAgMHg5NDM4LCAweDBCNTgsIDB4OTQzQSwgMHgxQjgxLCAweDk0M0IsIDB4NDlCOSwgMHg5NDNGLCAweDNCOTMsDQorICAgIDB4OTQ0MSwgMHgxQjgyLCAweDk0NDQsIDB4MUI4NCwgMHg5NDQ1LCAweDIxRUIsIDB4OTQ0OCwgMHgyMUVDLA0KKyAgICAweDk0NEEsIDB4NDMxNSwgMHg5NDRDLCAweDRERTUsIDB4OTQ1MSwgMHgwNjExLCAweDk0NTIsIDB4MUI4MywNCisgICAgMHg5NDUzLCAweDBGMDYsIDB4OTQ1NSwgMHgzQjk0LCAweDk0NUEsIDB4MUI4RiwgMHg5NDVCLCAweDFCODUsDQorICAgIDB4OTQ1RSwgMHgxQjg4LCAweDk0NjAsIDB4MUI4NiwgMHg5NDYyLCAweDFCODcsIDB4OTQ2MywgMHg0MzE2LA0KKyAgICAweDk0NkEsIDB4MUI4OSwgMHg5NDZCLCAweDNCOTUsIDB4OTQ2RCwgMHg0OUJDLCAweDk0NkYsIDB4NDlCRCwNCisgICAgMHg5NDcwLCAweDFCOEIsIDB4OTQ3MSwgMHg0MzE3LCAweDk0NzIsIDB4M0I5NiwgMHg5NDc1LCAweDFCOEMsDQorICAgIDB4OTQ3NywgMHgxQjhELCAweDk0N0MsIDB4MUI5MCwgMHg5NDdELCAweDFCOEUsIDB4OTQ3RSwgMHgxQjkxLA0KKyAgICAweDk0N0YsIDB4MUI5MywgMHg5NDgxLCAweDFCOTIsIDB4OTU3NywgMHgwQkQ1LCAweDk1NzgsIDB4M0I5NywNCisgICAgMHg5NTc5LCAweDQ5QkUsIDB4OTU4MCwgMHgwRUYzLCAweDk1ODIsIDB4MUI5NCwgMHg5NTgzLCAweDBBQjAsDQorICAgIDB4OTU4NiwgMHg0OUJGLCAweDk1ODcsIDB4MUI5NSwgMHg5NTg4LCAweDRERTYsIDB4OTU4OSwgMHgwRTE0LA0KKyAgICAweDk1OEEsIDB4MUI5NiwgMHg5NThCLCAweDA1ODksIDB4OTU4QywgMHg0OUMwLCAweDk1OEQsIDB4NDlDMSwNCisgICAgMHg5NThFLCAweDQzMTgsIDB4OTU4RiwgMHgwNERFLCAweDk1OTEsIDB4MDYxMywgMHg5NTkyLCAweDIxRUQsDQorICAgIDB4OTU5MywgMHgwNjEyLCAweDk1OTQsIDB4MUI5NywgMHg5NTk2LCAweDFCOTgsIDB4OTU5OCwgMHgxQjk5LA0KKyAgICAweDk1OTksIDB4MUI5QSwgMHg5NTlGLCAweDQzMTksIDB4OTVBMCwgMHgxQjlCLCAweDk1QTEsIDB4NERFNywNCisgICAgMHg5NUEyLCAweDA2MTQsIDB4OTVBMywgMHgwNUIzLCAweDk1QTQsIDB4MDdGMCwgMHg5NUE1LCAweDBENEEsDQorICAgIDB4OTVBNiwgMHgzQjk4LCAweDk1QTcsIDB4MUI5RCwgMHg5NUE4LCAweDFCOUMsIDB4OTVBOSwgMHgzQjk5LA0KKyAgICAweDk1QUIsIDB4NEY1OSwgMHg5NUFDLCAweDQzMUEsIDB4OTVBRCwgMHgxQjlFLCAweDk1QjEsIDB4MzU1NSwNCisgICAgMHg5NUIyLCAweDA0RkUsIDB4OTVCNCwgMHgzQjlCLCAweDk1QjYsIDB4NDMxQiwgMHg5NUI5LCAweDFCQTEsDQorICAgIDB4OTVCQiwgMHgxQkEwLCAweDk1QkMsIDB4MUI5RiwgMHg5NUJELCAweDNCOUMsIDB4OTVCRSwgMHgxQkEyLA0KKyAgICAweDk1QkYsIDB4NERFOCwgMHg5NUMzLCAweDFCQTUsIDB4OTVDNiwgMHg0REU5LCAweDk1QzcsIDB4MDQ4QiwNCisgICAgMHg5NUM4LCAweDQ5QzQsIDB4OTVDOSwgMHg0REVBLCAweDk1Q0EsIDB4MUJBMywgMHg5NUNCLCAweDQzMUMsDQorICAgIDB4OTVDQywgMHgxQkE3LCAweDk1Q0QsIDB4MUJBNiwgMHg5NUQwLCAweDQzMUQsIDB4OTVEMSwgMHg0REVCLA0KKyAgICAweDk1RDIsIDB4NERFQywgMHg5NUQzLCAweDQzMUUsIDB4OTVENCwgMHgxQkE5LCAweDk1RDUsIDB4MUJBOCwNCisgICAgMHg5NUQ2LCAweDFCQUEsIDB4OTVEOCwgMHgwQzg2LCAweDk1REEsIDB4M0I5RCwgMHg5NURDLCAweDFCQUIsDQorICAgIDB4OTVERSwgMHg0MzIwLCAweDk1RTAsIDB4NERFRCwgMHg5NUUxLCAweDFCQUMsIDB4OTVFMiwgMHgxQkFFLA0KKyAgICAweDk1RTQsIDB4NERFRSwgMHg5NUU1LCAweDFCQUQsIDB4OTVFNiwgMHg0REVGLCAweDk2MUMsIDB4MERERSwNCisgICAgMHg5NjFELCAweDNCOUUsIDB4OTYyMSwgMHgxQkFGLCAweDk2MjQsIDB4NERGMCwgMHg5NjI4LCAweDFCQjAsDQorICAgIDB4OTYyQSwgMHgwODU1LCAweDk2MkMsIDB4NDlDNywgMHg5NjJFLCAweDFCQjEsIDB4OTYyRiwgMHgxQkIyLA0KKyAgICAweDk2MzEsIDB4NERGMSwgMHg5NjMyLCAweDBFNzcsIDB4OTYzMywgMHg0OUM4LCAweDk2MzQsIDB4NDlDOSwNCisgICAgMHg5NjM4LCAweDRERjIsIDB4OTYzQiwgMHgwQUNELCAweDk2M0MsIDB4NDlDQiwgMHg5NjNELCAweDRERjMsDQorICAgIDB4OTYzRiwgMHgwNDY4LCAweDk2NDAsIDB4MEIyQiwgMHg5NjQxLCAweDNCOUYsIDB4OTY0MiwgMHgxQkIzLA0KKyAgICAweDk2NDQsIDB4MERERiwgMHg5NjRCLCAweDFCQjYsIDB4OTY0QywgMHgxQkI0LCAweDk2NEQsIDB4MDdGMSwNCisgICAgMHg5NjRGLCAweDFCQjUsIDB4OTY1MCwgMHgwNzc2LCAweDk2NTQsIDB4NERGNCwgMHg5NjU4LCAweDNCQTAsDQorICAgIDB4OTY1QiwgMHgwRTE1LCAweDk2NUMsIDB4MUJCOCwgMHg5NjVELCAweDFCQkEsIDB4OTY1RSwgMHgxQkI5LA0KKyAgICAweDk2NUYsIDB4MUJCQiwgMHg5NjYxLCAweDQ5Q0MsIDB4OTY2MiwgMHgwNEMzLCAweDk2NjMsIDB4MEExRSwNCisgICAgMHg5NjY0LCAweDA5ODYsIDB4OTY2NSwgMHgwNjE1LCAweDk2NjYsIDB4MUJCQywgMHg5NjZBLCAweDBEMUMsDQorICAgIDB4OTY2QywgMHgxQkJFLCAweDk2NzAsIDB4MDRDNCwgMHg5NjcyLCAweDFCQkQsIDB4OTY3MywgMHgwQkUwLA0KKyAgICAweDk2NzQsIDB4NERGNSwgMHg5Njc1LCAweDBGOTUsIDB4OTY3NiwgMHgwQzgzLCAweDk2NzcsIDB4MUJCNywNCisgICAgMHg5Njc4LCAweDBGNkUsIDB4OTY3QSwgMHgwNzY1LCAweDk2N0IsIDB4NERGNiwgMHg5NjdELCAweDBGNDUsDQorICAgIDB4OTY3RiwgMHg0REY3LCAweDk2ODEsIDB4NERGOCwgMHg5NjgyLCAweDQ5Q0UsIDB4OTY4MywgMHg0REY5LA0KKyAgICAweDk2ODQsIDB4M0JBMSwgMHg5Njg1LCAweDA2RjEsIDB4OTY4NiwgMHgwRjdDLCAweDk2ODgsIDB4MDZGRSwNCisgICAgMHg5Njg5LCAweDRERkEsIDB4OTY4QSwgMHgwQjQyLCAweDk2OEIsIDB4MTg2QywgMHg5NjhELCAweDFCQkYsDQorICAgIDB4OTY4RSwgMHgwNThBLCAweDk2OEYsIDB4MEEzNSwgMHg5Njk0LCAweDA1QjQsIDB4OTY5NSwgMHgxQkMxLA0KKyAgICAweDk2OTYsIDB4NERGQiwgMHg5Njk3LCAweDFCQzIsIDB4OTY5OCwgMHgxQkMwLCAweDk2OTksIDB4MDczQSwNCisgICAgMHg5NjlBLCAweDQ5RDAsIDB4OTY5QiwgMHgwODRELCAweDk2OUMsIDB4MDlDQiwgMHg5NjlELCAweDIxRjAsDQorICAgIDB4OTZBMCwgMHgwNEM1LCAweDk2QTMsIDB4MEZBMSwgMHg5NkE0LCAweDNCQTIsIDB4OTZBNSwgMHg0MzIxLA0KKyAgICAweDk2QTcsIDB4MUJDNCwgMHg5NkE4LCAweDFCMEIsIDB4OTZBOSwgMHgzQkEzLCAweDk2QUEsIDB4MUJDMywNCisgICAgMHg5NkFFLCAweDRERkMsIDB4OTZBRiwgMHgyMUYxLCAweDk2QjAsIDB4MUJDNywgMHg5NkIxLCAweDFCQzUsDQorICAgIDB4OTZCMiwgMHgxQkM2LCAweDk2QjMsIDB4NDlEMywgMHg5NkI0LCAweDFCQzgsIDB4OTZCNiwgMHgxQkM5LA0KKyAgICAweDk2QjcsIDB4MEZCNCwgMHg5NkI4LCAweDFCQ0EsIDB4OTZCOSwgMHgxQkNCLCAweDk2QkEsIDB4NDlENCwNCisgICAgMHg5NkJCLCAweDBBNkQsIDB4OTZCQywgMHgwRDRGLCAweDk2QkQsIDB4NDlENSwgMHg5NkMwLCAweDBBNDMsDQorICAgIDB4OTZDMSwgMHgwNjIzLCAweDk2QzQsIDB4MEYyNCwgMHg5NkM1LCAweDA1NkQsIDB4OTZDNiwgMHgwOTQyLA0KKyAgICAweDk2QzcsIDB4MDc4RiwgMHg5NkM5LCAweDFCQ0UsIDB4OTZDQiwgMHgxQkNELCAweDk2Q0MsIDB4MDhDMSwNCisgICAgMHg5NkNELCAweDFCQ0YsIDB4OTZDRSwgMHgxQkNDLCAweDk2RDEsIDB4MDg3NiwgMHg5NkQyLCAweDNCQTQsDQorICAgIDB4OTZENSwgMHgxQkQzLCAweDk2RDYsIDB4MTk5MiwgMHg5NkQ4LCAweDQ5RDgsIDB4OTZEOSwgMHgxMEVCLA0KKyAgICAweDk2REEsIDB4NDlEOSwgMHg5NkRCLCAweDBBM0QsIDB4OTZEQywgMHgxQkQxLCAweDk2REQsIDB4NDlEQSwNCisgICAgMHg5NkRFLCAweDNCQTYsIDB4OTZFMiwgMHgwRjZELCAweDk2RTMsIDB4MENDOSwgMHg5NkU4LCAweDA0Q0QsDQorICAgIDB4OTZFOSwgMHgzQkE3LCAweDk2RUEsIDB4MEE4NywgMHg5NkVCLCAweDA4RTIsIDB4OTZFRiwgMHg0MzIyLA0KKyAgICAweDk2RjAsIDB4MEUwNywgMHg5NkYxLCAweDNCQTgsIDB4OTZGMiwgMHgwNEUyLCAweDk2RjYsIDB4MEZCNSwNCisgICAgMHg5NkY3LCAweDBGNTUsIDB4OTZGOSwgMHgxQkQ0LCAweDk2RkIsIDB4MEMzRiwgMHg5NzAwLCAweDA5MjcsDQorICAgIDB4OTcwMiwgMHgzQkE5LCAweDk3MDMsIDB4NERGRCwgMHg5NzA0LCAweDFCRDUsIDB4OTcwNiwgMHgxQkQ2LA0KKyAgICAweDk3MDcsIDB4MEExMiwgMHg5NzA4LCAweDFCRDcsIDB4OTcwOSwgMHgzQkFBLCAweDk3MEEsIDB4MEZCNiwNCisgICAgMHg5NzBELCAweDFCRDIsIDB4OTcwRSwgMHgxQkQ5LCAweDk3MEYsIDB4MUJEQiwgMHg5NzExLCAweDFCREEsDQorICAgIDB4OTcxMywgMHgxQkQ4LCAweDk3MTQsIDB4NDlEQywgMHg5NzE2LCAweDFCREMsIDB4OTcxOSwgMHgxQkRELA0KKyAgICAweDk3MUIsIDB4NERGRSwgMHg5NzFDLCAweDBBRkMsIDB4OTcxRSwgMHgwNTYyLCAweDk3MjEsIDB4NERGRiwNCisgICAgMHg5NzIyLCAweDRFMDAsIDB4OTcyMywgMHg0OURELCAweDk3MjQsIDB4MUJERSwgMHg5NzI3LCAweDBFQzQsDQorICAgIDB4OTcyOCwgMHg0RTAxLCAweDk3MkEsIDB4MUJERiwgMHg5NzMwLCAweDFCRTAsIDB4OTczMSwgMHg0RTAyLA0KKyAgICAweDk3MzIsIDB4MEZEMCwgMHg5NzMzLCAweDIxRjIsIDB4OTczNiwgMHg0OURGLCAweDk3MzgsIDB4MTQxNCwNCisgICAgMHg5NzM5LCAweDFCRTEsIDB4OTczQiwgMHgyMUYzLCAweDk3M0QsIDB4MUJFMiwgMHg5NzNFLCAweDFCRTMsDQorICAgIDB4OTc0MSwgMHg0OUUwLCAweDk3NDIsIDB4MUJFNywgMHg5NzQzLCAweDIxRjQsIDB4OTc0NCwgMHgxQkU0LA0KKyAgICAweDk3NDYsIDB4MUJFNSwgMHg5NzQ3LCAweDQ5RTEsIDB4OTc0OCwgMHgxQkU2LCAweDk3NDksIDB4MUJFOCwNCisgICAgMHg5NzRELCAweDIxRjUsIDB4OTc0RSwgMHg0MzIzLCAweDk3NEYsIDB4MjFGNiwgMHg5NzUxLCAweDIxRjcsDQorICAgIDB4OTc1MiwgMHgwQTY4LCAweDk3NTUsIDB4NEY1QSwgMHg5NzU2LCAweDBGMDMsIDB4OTc1NywgMHg0OUUyLA0KKyAgICAweDk3NTksIDB4MEE2OSwgMHg5NzVBLCAweDNCQUIsIDB4OTc1QiwgMHg0OUUzLCAweDk3NUMsIDB4MUJFOSwNCisgICAgMHg5NzVFLCAweDBEODcsIDB4OTc2MCwgMHgxQkVBLCAweDk3NjEsIDB4MUQwNiwgMHg5NzYyLCAweDBFRDgsDQorICAgIDB4OTc2MywgMHgzQkFDLCAweDk3NjQsIDB4MUJFQiwgMHg5NzY2LCAweDFCRUMsIDB4OTc2NywgMHg0RTAzLA0KKyAgICAweDk3NjgsIDB4MUJFRCwgMHg5NzY5LCAweDA1QjUsIDB4OTc2QSwgMHg0OUU0LCAweDk3NkIsIDB4MUJFRiwNCisgICAgMHg5NzZELCAweDBBMUYsIDB4OTc2RSwgMHgzQkFELCAweDk3NzEsIDB4MUJGMCwgMHg5NzczLCAweDNCQUUsDQorICAgIDB4OTc3NCwgMHgwNkZBLCAweDk3NzYsIDB4NEUwNCwgMHg5Nzc5LCAweDFCRjEsIDB4OTc3QSwgMHgxQkY1LA0KKyAgICAweDk3N0MsIDB4MUJGMywgMHg5NzdELCAweDRFMDUsIDB4OTc3RiwgMHg0RTA2LCAweDk3ODEsIDB4MUJGNCwNCisgICAgMHg5Nzg0LCAweDA1RDEsIDB4OTc4NSwgMHgxQkYyLCAweDk3ODYsIDB4MUJGNiwgMHg5NzhCLCAweDFCRjcsDQorICAgIDB4OTc4RCwgMHgwNDhDLCAweDk3OEYsIDB4MUJGOCwgMHg5NzkwLCAweDFCRjksIDB4OTc5NSwgMHg0MzI0LA0KKyAgICAweDk3OTYsIDB4NDlFNywgMHg5Nzk4LCAweDA5Q0MsIDB4OTc5OSwgMHg0RTA3LCAweDk3OUEsIDB4M0JBRiwNCisgICAgMHg5NzlDLCAweDFCRkEsIDB4OTc5RSwgMHg0OUU4LCAweDk3OUYsIDB4NEUwOCwgMHg5N0EwLCAweDA2NjEsDQorICAgIDB4OTdBMiwgMHgzQkIwLCAweDk3QTMsIDB4MUJGRCwgMHg5N0E2LCAweDFCRkMsIDB4OTdBOCwgMHgxQkZCLA0KKyAgICAweDk3QUIsIDB4MUEzNCwgMHg5N0FDLCAweDRFMDksIDB4OTdBRCwgMHgwRTJDLCAweDk3QUUsIDB4NDMyNSwNCisgICAgMHg5N0IxLCAweDQ5RTksIDB4OTdCMiwgMHg0OUVBLCAweDk3QjMsIDB4MUJGRSwgMHg5N0I0LCAweDFCRkYsDQorICAgIDB4OTdCNSwgMHgzQkIxLCAweDk3QjYsIDB4M0JCMiwgMHg5N0I5LCAweDRFMEEsIDB4OTdCQSwgMHg0MzI2LA0KKyAgICAweDk3QkUsIDB4NDlFQiwgMHg5N0MxLCAweDQzMjcsIDB4OTdDMywgMHgxQzAwLCAweDk3QzYsIDB4MUMwMSwNCisgICAgMHg5N0M4LCAweDFDMDIsIDB4OTdDOSwgMHg0MzI4LCAweDk3Q0IsIDB4MUMwMywgMHg5N0NDLCAweDQ5RUMsDQorICAgIDB4OTdDRCwgMHg0RTBCLCAweDk3RDEsIDB4NDlFRCwgMHg5N0QzLCAweDA2MTYsIDB4OTdENCwgMHg0OUVFLA0KKyAgICAweDk3RDgsIDB4NDlFRiwgMHg5N0Q5LCAweDNCQjMsIDB4OTdEQiwgMHg0MzI5LCAweDk3REMsIDB4MUMwNCwNCisgICAgMHg5N0RFLCAweDNCQjQsIDB4OTdFMCwgMHg0RTBDLCAweDk3RTEsIDB4NDlGMCwgMHg5N0VELCAweDFDMDUsDQorICAgIDB4OTdFRSwgMHgwQ0Q5LCAweDk3RUYsIDB4NEUwRCwgMHg5N0YxLCAweDQ5RjEsIDB4OTdGMiwgMHgxQzA3LA0KKyAgICAweDk3RjMsIDB4MDUzQiwgMHg5N0Y0LCAweDNCQjUsIDB4OTdGNSwgMHgxQzBBLCAweDk3RjYsIDB4MUMwOSwNCisgICAgMHg5N0ZCLCAweDA0QzYsIDB4OTdGRiwgMHgwNkI5LCAweDk4MDEsIDB4MEUxNywgMHg5ODAyLCAweDBCRDYsDQorICAgIDB4OTgwMywgMHgwODEyLCAweDk4MDQsIDB4NDlGMiwgMHg5ODA1LCAweDA3RjIsIDB4OTgwNiwgMHgwOTcxLA0KKyAgICAweDk4MDcsIDB4NEUwRSwgMHg5ODA4LCAweDBBMjIsIDB4OTgwQSwgMHgzQkI2LCAweDk4MEMsIDB4MUMwQywNCisgICAgMHg5ODBELCAweDQ5RjMsIDB4OTgwRSwgMHgzQkI3LCAweDk4MEYsIDB4MUMwQiwgMHg5ODEwLCAweDBGMkMsDQorICAgIDB4OTgxMSwgMHgwNjI0LCAweDk4MTIsIDB4MEQ2NiwgMHg5ODEzLCAweDBDQjQsIDB4OTgxNCwgMHg0OUY0LA0KKyAgICAweDk4MTYsIDB4NDlGNSwgMHg5ODE3LCAweDBBNDIsIDB4OTgxOCwgMHgwRjk2LCAweDk4MUEsIDB4MDczMSwNCisgICAgMHg5ODFFLCAweDNCQjgsIDB4OTgyMSwgMHgxQzBGLCAweDk4MjMsIDB4M0JCOSwgMHg5ODI0LCAweDFDMEUsDQorICAgIDB4OTgyNSwgMHg0OUZBLCAweDk4MjYsIDB4NEUwRiwgMHg5ODJCLCAweDNCQkEsIDB4OTgyQywgMHgwRTc5LA0KKyAgICAweDk4MkQsIDB4MEM4NCwgMHg5ODJFLCAweDRFMTAsIDB4OTgzMCwgMHgxRTczLCAweDk4MzIsIDB4NDlGOCwNCisgICAgMHg5ODMzLCAweDQ5RjksIDB4OTgzNCwgMHgwNEYyLCAweDk4MzcsIDB4MUMxMCwgMHg5ODM4LCAweDFDMEQsDQorICAgIDB4OTgzOSwgMHgzN0IzLCAweDk4M0IsIDB4MERDMywgMHg5ODNDLCAweDBGNTQsIDB4OTgzRCwgMHgxQzExLA0KKyAgICAweDk4M0UsIDB4M0JCQiwgMHg5ODQ2LCAweDFDMTIsIDB4OTg0NywgMHg0OUZCLCAweDk4NEIsIDB4MUMxNCwNCisgICAgMHg5ODRDLCAweDBCNEEsIDB4OTg0RCwgMHgwNUI5LCAweDk4NEUsIDB4MDVCQSwgMHg5ODRGLCAweDFDMTMsDQorICAgIDB4OTg1MiwgMHgzQkJDLCAweDk4NTMsIDB4M0JCRCwgMHg5ODU0LCAweDA2MjUsIDB4OTg1NSwgMHgwNzY2LA0KKyAgICAweDk4NTYsIDB4NDMyQSwgMHg5ODU3LCAweDIxRjksIDB4OTg1OCwgMHgwNjI2LCAweDk4NTksIDB4M0JCRSwNCisgICAgMHg5ODVBLCAweDFFNDgsIDB4OTg1QiwgMHgwQzM5LCAweDk4NUUsIDB4MEZBOCwgMHg5ODYyLCAweDRFMTEsDQorICAgIDB4OTg2MywgMHg0RTEyLCAweDk4NjUsIDB4MjFGQSwgMHg5ODY2LCAweDQ5RkMsIDB4OTg2NywgMHgwNzkwLA0KKyAgICAweDk4NkIsIDB4MUMxNSwgMHg5ODZDLCAweDNCQkYsIDB4OTg2RiwgMHgxQzE2LCAweDk4NzAsIDB4MUMxNywNCisgICAgMHg5ODcxLCAweDFDMTgsIDB4OTg3MywgMHgxQzFBLCAweDk4NzQsIDB4MUMxOSwgMHg5OEE4LCAweDBERTksDQorICAgIDB4OThBQSwgMHgxQzFCLCAweDk4QUIsIDB4NDlGRCwgMHg5OEFELCAweDQ5RkUsIDB4OThBRiwgMHgxQzFDLA0KKyAgICAweDk4QjAsIDB4NDlGRiwgMHg5OEIxLCAweDFDMUQsIDB4OThCNCwgMHg0RTEzLCAweDk4QjYsIDB4MUMxRSwNCisgICAgMHg5OEI3LCAweDRBMDEsIDB4OThCOCwgMHgzQkMwLCAweDk4QkEsIDB4M0JDMSwgMHg5OEJCLCAweDRBMDIsDQorICAgIDB4OThCQywgMHg0QTAzLCAweDk4QkYsIDB4M0JDMiwgMHg5OEMyLCAweDRBMDQsIDB4OThDMywgMHgxQzIwLA0KKyAgICAweDk4QzQsIDB4MUMxRiwgMHg5OEM1LCAweDRFMTQsIDB4OThDNiwgMHgxQzIxLCAweDk4QzcsIDB4NEEwNSwNCisgICAgMHg5OEM4LCAweDNCQzMsIDB4OThDQiwgMHg0QTA2LCAweDk4REIsIDB4MEQ4OCwgMHg5OERDLCAweDE4MzksDQorICAgIDB4OThERiwgMHgwOUVGLCAweDk4RTAsIDB4MzYxOCwgMHg5OEUxLCAweDRBMDcsIDB4OThFMiwgMHgwNjRDLA0KKyAgICAweDk4RTMsIDB4NEEwOCwgMHg5OEU1LCAweDNCQzQsIDB4OThFNywgMHg0MzJCLCAweDk4RTksIDB4MUMyMiwNCisgICAgMHg5OEVBLCAweDRBMDksIDB4OThFQiwgMHgxQzIzLCAweDk4RUQsIDB4MTBDMSwgMHg5OEVFLCAweDE0REEsDQorICAgIDB4OThFRiwgMHgwRDY3LCAweDk4RjAsIDB4NEEwQSwgMHg5OEYxLCAweDRBMEIsIDB4OThGMiwgMHgwNEJGLA0KKyAgICAweDk4RjMsIDB4NEEwQywgMHg5OEY0LCAweDA0N0YsIDB4OThGQywgMHgwOEMyLCAweDk4RkQsIDB4MEU1RSwNCisgICAgMHg5OEZFLCAweDA5RTYsIDB4OTkwMiwgMHg0RTE1LCAweDk5MDMsIDB4MUMyNCwgMHg5OTA1LCAweDBFRUIsDQorICAgIDB4OTkwOCwgMHg0QTBELCAweDk5MDksIDB4MUMyNSwgMHg5OTBBLCAweDBGNDYsIDB4OTkwQywgMHgwNEU0LA0KKyAgICAweDk5MTAsIDB4MDg4RiwgMHg5OTExLCAweDRFMTYsIDB4OTkxMiwgMHgxQzI2LCAweDk5MTMsIDB4MDU2RSwNCisgICAgMHg5OTE0LCAweDFDMjcsIDB4OTkxNSwgMHg0RTE3LCAweDk5MTYsIDB4NEExMCwgMHg5OTE3LCAweDRBMTEsDQorICAgIDB4OTkxOCwgMHgxQzI4LCAweDk5MUEsIDB4NEExMywgMHg5OTFCLCAweDRBMTQsIDB4OTkxQywgMHg0QTE1LA0KKyAgICAweDk5MUQsIDB4MUMyQSwgMHg5OTFFLCAweDFDMkIsIDB4OTkyMCwgMHgxQzJELCAweDk5MjEsIDB4MUMyOSwNCisgICAgMHg5OTI0LCAweDFDMkMsIDB4OTkyNywgMHgyMUZELCAweDk5MjgsIDB4MDYxNywgMHg5OTJDLCAweDFDMkUsDQorICAgIDB4OTkyRSwgMHgxQzJGLCAweDk5MzEsIDB4NEExNywgMHg5OTMyLCAweDNCQzUsIDB4OTkzMywgMHgzQkM2LA0KKyAgICAweDk5MzUsIDB4NEUxOCwgMHg5OTNBLCAweDRBMTgsIDB4OTkzQiwgMHg0QTE5LCAweDk5M0MsIDB4NEExQSwNCisgICAgMHg5OTNELCAweDFDMzAsIDB4OTkzRSwgMHgxQzMxLCAweDk5NDAsIDB4M0JDNywgMHg5OTQxLCAweDRBMUIsDQorICAgIDB4OTk0MiwgMHgxQzMyLCAweDk5NDUsIDB4MUMzNCwgMHg5OTQ2LCAweDRBMUMsIDB4OTk0OCwgMHg0RTE5LA0KKyAgICAweDk5NDksIDB4MUMzMywgMHg5OTRCLCAweDFDMzYsIDB4OTk0QywgMHgxQzM5LCAweDk5NEQsIDB4M0JDOCwNCisgICAgMHg5OTRFLCAweDRBMUQsIDB4OTk1MCwgMHgxQzM1LCAweDk5NTEsIDB4MUMzNywgMHg5OTUyLCAweDFDMzgsDQorICAgIDB4OTk1NCwgMHg0RTFBLCAweDk5NTUsIDB4MUMzQSwgMHg5OTU3LCAweDA2QkEsIDB4OTk1OCwgMHg0MzJDLA0KKyAgICAweDk5NUMsIDB4M0JDOSwgMHg5OTVFLCAweDRFMUIsIDB4OTk1RiwgMHgzQkNBLCAweDk5NjAsIDB4NEExRSwNCisgICAgMHg5OTk2LCAweDA5MUYsIDB4OTk5NywgMHgxQzNCLCAweDk5OTgsIDB4MUMzQywgMHg5OTk5LCAweDA3RjMsDQorICAgIDB4OTk5RSwgMHgyMUZGLCAweDk5QTMsIDB4NEExRiwgMHg5OUE1LCAweDFDM0QsIDB4OTlBNiwgMHg0QTIwLA0KKyAgICAweDk5QTgsIDB4MDU5QywgMHg5OUFDLCAweDBEMDUsIDB4OTlBRCwgMHgxQzNFLCAweDk5QUUsIDB4MUMzRiwNCisgICAgMHg5OUIxLCAweDNCQ0IsIDB4OTlCMywgMHgwQjk4LCAweDk5QjQsIDB4MENDMywgMHg5OUI5LCAweDNCQ0MsDQorICAgIDB4OTlCQSwgMHgzQkNELCAweDk5QkMsIDB4MUM0MCwgMHg5OUJELCAweDRBMjEsIDB4OTlCRiwgMHg0QTIyLA0KKyAgICAweDk5QzEsIDB4MEQzMywgMHg5OUMzLCAweDRBMjMsIDB4OTlDNCwgMHgwQjJDLCAweDk5QzUsIDB4MDRGQSwNCisgICAgMHg5OUM2LCAweDA2RTYsIDB4OTlDOCwgMHgwNkU3LCAweDk5QzksIDB4M0JDRSwgMHg5OUQwLCAweDBCQjEsDQorICAgIDB4OTlEMSwgMHgxQzQ1LCAweDk5RDIsIDB4MDZFOCwgMHg5OUQ0LCAweDRBMjQsIDB4OTlENSwgMHgwNTZGLA0KKyAgICAweDk5RDgsIDB4MUM0NCwgMHg5OUQ5LCAweDRBMjUsIDB4OTlEQiwgMHgxQzQyLCAweDk5REQsIDB4MUM0MywNCisgICAgMHg5OURFLCAweDRBMjYsIDB4OTlERiwgMHgxQzQxLCAweDk5RTEsIDB4NEUxQywgMHg5OUUyLCAweDFDNEYsDQorICAgIDB4OTlFRCwgMHgxQzQ2LCAweDk5RUUsIDB4MUM0NywgMHg5OUYwLCAweDRBMjgsIDB4OTlGMSwgMHgxQzQ4LA0KKyAgICAweDk5RjIsIDB4MUM0OSwgMHg5OUY4LCAweDFDNEIsIDB4OTlGOSwgMHg0QTI5LCAweDk5RkIsIDB4MUM0QSwNCisgICAgMHg5OUZDLCAweDRBMkEsIDB4OTlGRiwgMHgwOTYzLCAweDlBMDEsIDB4MUM0QywgMHg5QTAyLCAweDNCQ0YsDQorICAgIDB4OUEwMywgMHg0MzJELCAweDlBMDUsIDB4MUM0RSwgMHg5QTA4LCAweDM3QkEsIDB4OUEwQSwgMHg0QTJCLA0KKyAgICAweDlBMEMsIDB4NEUxRCwgMHg5QTBFLCAweDA2NEQsIDB4OUEwRiwgMHgxQzRELCAweDlBMTAsIDB4NEUxRSwNCisgICAgMHg5QTExLCAweDRBMkMsIDB4OUExMiwgMHgwQUZELCAweDlBMTMsIDB4MDc2NywgMHg5QTE2LCAweDNCRDAsDQorICAgIDB4OUExOSwgMHgxQzUwLCAweDlBMUEsIDB4NEEyRCwgMHg5QTIwLCAweDRBMkUsIDB4OUEyMywgMHg0RTFGLA0KKyAgICAweDlBMjQsIDB4M0JEMSwgMHg5QTI3LCAweDNCRDIsIDB4OUEyOCwgMHgwQjJELCAweDlBMkIsIDB4MUM1MSwNCisgICAgMHg5QTJELCAweDNCRDMsIDB4OUEyRSwgMHgzQkQ0LCAweDlBMzAsIDB4MEM4NSwgMHg5QTMxLCAweDRBMkYsDQorICAgIDB4OUEzNiwgMHgzQkQ1LCAweDlBMzcsIDB4MUM1MiwgMHg5QTM4LCAweDNCRDYsIDB4OUEzRSwgMHgxQzU3LA0KKyAgICAweDlBNDAsIDB4MUM1NSwgMHg5QTQxLCAweDRFMjAsIDB4OUE0MiwgMHgxQzU0LCAweDlBNDMsIDB4MUM1NiwNCisgICAgMHg5QTQ0LCAweDRBMzAsIDB4OUE0NSwgMHgxQzUzLCAweDlBNEEsIDB4M0JENywgMHg5QTRDLCAweDRBMzEsDQorICAgIDB4OUE0RCwgMHgxQzU5LCAweDlBNEUsIDB4MjIwMCwgMHg5QTUxLCAweDRFMjEsIDB4OUE1MiwgMHgxRTJGLA0KKyAgICAweDlBNTUsIDB4MUM1OCwgMHg5QTU2LCAweDNCRDgsIDB4OUE1NywgMHgxQzVCLCAweDlBNTgsIDB4NEEzMiwNCisgICAgMHg5QTVBLCAweDA2QkIsIDB4OUE1QiwgMHgxQzVBLCAweDlBNUYsIDB4MUM1QywgMHg5QTYyLCAweDFDNUQsDQorICAgIDB4OUE2NCwgMHgxQzVGLCAweDlBNjUsIDB4MUM1RSwgMHg5QTY5LCAweDFDNjAsIDB4OUE2QSwgMHgxQzYyLA0KKyAgICAweDlBNkIsIDB4MUM2MSwgMHg5QUE4LCAweDA4MEUsIDB4OUFBRCwgMHgxQzYzLCAweDlBQUYsIDB4NEEzNCwNCisgICAgMHg5QUIwLCAweDFDNjQsIDB4OUFCNSwgMHgzQkQ5LCAweDlBQjYsIDB4M0JEQSwgMHg5QUI3LCAweDRBMzYsDQorICAgIDB4OUFCOCwgMHgwNTlBLCAweDlBQjksIDB4NEEzOCwgMHg5QUJDLCAweDFDNjUsIDB4OUFCRCwgMHg0RTIyLA0KKyAgICAweDlBQkUsIDB4NEUyMywgMHg5QUMwLCAweDFDNjYsIDB4OUFDMSwgMHg0MzJFLCAweDlBQzMsIDB4NDMyRiwNCisgICAgMHg5QUM0LCAweDBBMzcsIDB4OUFDNiwgMHg0QTNBLCAweDlBQ0UsIDB4NDMzMCwgMHg5QUNGLCAweDFDNjcsDQorICAgIDB4OUFEMCwgMHg0QTNCLCAweDlBRDEsIDB4MUM2OCwgMHg5QUQyLCAweDRBM0MsIDB4OUFEMywgMHgxQzY5LA0KKyAgICAweDlBRDQsIDB4MUM2QSwgMHg5QUQ1LCAweDRBM0QsIDB4OUFENiwgMHg0MzMxLCAweDlBRDgsIDB4MDdGNCwNCisgICAgMHg5QUQ5LCAweDIyMDEsIDB4OUFEQywgMHgyMjAyLCAweDlBREUsIDB4MUM2QiwgMHg5QURGLCAweDFDNkMsDQorICAgIDB4OUFFMCwgMHg0QTNFLCAweDlBRTIsIDB4MUM2RCwgMHg5QUUzLCAweDFDNkUsIDB4OUFFNSwgMHg0QTNGLA0KKyAgICAweDlBRTYsIDB4MUM2RiwgMHg5QUU5LCAweDRBNDAsIDB4OUFFQSwgMHgwRDQ1LCAweDlBRUIsIDB4MUM3MSwNCisgICAgMHg5QUVELCAweDBEOTgsIDB4OUFFRSwgMHgxQzcyLCAweDlBRUYsIDB4MUM3MCwgMHg5QUYxLCAweDFDNzQsDQorICAgIDB4OUFGNCwgMHgxQzczLCAweDlBRjcsIDB4MUM3NSwgMHg5QUY5LCAweDNCREIsIDB4OUFGQiwgMHgxQzc2LA0KKyAgICAweDlCMDEsIDB4NEUyNCwgMHg5QjAyLCAweDQzMzIsIDB4OUIwMywgMHgzQkRDLCAweDlCMDYsIDB4MUM3NywNCisgICAgMHg5QjA4LCAweDQzMzMsIDB4OUIwOSwgMHg0RTI1LCAweDlCMEIsIDB4NEUyNiwgMHg5QjBDLCAweDRBNDEsDQorICAgIDB4OUIwRCwgMHg0RTI3LCAweDlCMEUsIDB4NEUyOCwgMHg5QjEwLCAweDRBNDIsIDB4OUIxMiwgMHg0QTQzLA0KKyAgICAweDlCMTYsIDB4NEE0NCwgMHg5QjE4LCAweDFDNzgsIDB4OUIxOSwgMHg0RTI5LCAweDlCMUEsIDB4MUM3OSwNCisgICAgMHg5QjFDLCAweDRBNDUsIDB4OUIxRCwgMHg0RjQ5LCAweDlCMUYsIDB4MUM3QSwgMHg5QjIwLCAweDNCREQsDQorICAgIDB4OUIyMiwgMHgxQzdCLCAweDlCMjMsIDB4MUM3QywgMHg5QjI1LCAweDFDN0QsIDB4OUIyNywgMHgxQzdFLA0KKyAgICAweDlCMjgsIDB4MUM3RiwgMHg5QjI5LCAweDFDODAsIDB4OUIyQSwgMHgxQzgxLCAweDlCMkIsIDB4NEE0NiwNCisgICAgMHg5QjJDLCAweDRGNEEsIDB4OUIyRCwgMHg0MzM1LCAweDlCMkUsIDB4MUM4MiwgMHg5QjJGLCAweDFDODMsDQorICAgIDB4OUIzMSwgMHgxNEQ0LCAweDlCMzIsIDB4MUM4NCwgMHg5QjMzLCAweDNCREUsIDB4OUIzNCwgMHgzQkRGLA0KKyAgICAweDlCMzUsIDB4NEUyQSwgMHg5QjNCLCAweDE3QTksIDB4OUIzQywgMHgwNjRFLCAweDlCM0QsIDB4NEE0NywNCisgICAgMHg5QjQxLCAweDA1N0YsIDB4OUI0MiwgMHgwODIyLCAweDlCNDMsIDB4MUM4NiwgMHg5QjQ0LCAweDFDODUsDQorICAgIDB4OUI0NSwgMHgwRUIxLCAweDlCNDgsIDB4NEUyQiwgMHg5QjRCLCAweDRBNDksIDB4OUI0RCwgMHgxQzg4LA0KKyAgICAweDlCNEUsIDB4MUM4OSwgMHg5QjRGLCAweDFDODcsIDB4OUI1MSwgMHgxQzhBLCAweDlCNTQsIDB4MEU5MCwNCisgICAgMHg5QjU1LCAweDRFMkMsIDB4OUI1OCwgMHgxQzhCLCAweDlCNUEsIDB4MDY5NSwgMHg5QjVFLCAweDQzMzYsDQorICAgIDB4OUI2MywgMHg0QTRBLCAweDlCNjUsIDB4NEE0QiwgMHg5QjY2LCAweDQzMzcsIDB4OUI2OCwgMHg0RTJELA0KKyAgICAweDlCNkIsIDB4NEE0QywgMHg5QjZDLCAweDRBNEQsIDB4OUI2RiwgMHgwRkNCLCAweDlCNzIsIDB4MjIwNCwNCisgICAgMHg5QjczLCAweDNCRTAsIDB4OUI3NCwgMHgxQzhDLCAweDlCNzUsIDB4MjIwMywgMHg5Qjc2LCAweDRBNEUsDQorICAgIDB4OUI3NywgMHg0QTRGLCAweDlCNzksIDB4M0JFMSwgMHg5QjgwLCAweDRFMkUsIDB4OUI4MywgMHgxQzhFLA0KKyAgICAweDlCODQsIDB4NDMzOCwgMHg5Qjg2LCAweDRFMkYsIDB4OUI4QSwgMHg0MzM5LCAweDlCOEUsIDB4MDQ4MiwNCisgICAgMHg5QjhGLCAweDIyMDUsIDB4OUI5MCwgMHg0RTMwLCAweDlCOTEsIDB4MUM4RiwgMHg5QjkyLCAweDBERkIsDQorICAgIDB4OUI5MywgMHgxQzhELCAweDlCOTYsIDB4MUM5MCwgMHg5Qjk3LCAweDFDOTEsIDB4OUI5RCwgMHg0RTMxLA0KKyAgICAweDlCOUUsIDB4NDMzQSwgMHg5QjlGLCAweDFDOTIsIDB4OUJBMCwgMHgxQzkzLCAweDlCQTYsIDB4NEE1MCwNCisgICAgMHg5QkE3LCAweDNCRTIsIDB4OUJBOCwgMHgxQzk0LCAweDlCQUEsIDB4MEU5QywgMHg5QkFCLCAweDA4N0IsDQorICAgIDB4OUJBQywgMHg0QTUxLCAweDlCQUQsIDB4MDg2QSwgMHg5QkFFLCAweDBBQjEsIDB4OUJCMCwgMHg0RTMyLA0KKyAgICAweDlCQjEsIDB4MjIwNiwgMHg5QkIyLCAweDRBNTMsIDB4OUJCNCwgMHgxQzk1LCAweDlCQjgsIDB4NEE1NCwNCisgICAgMHg5QkI5LCAweDFDOTgsIDB4OUJCQiwgMHgyMjA3LCAweDlCQkUsIDB4NEE1NSwgMHg5QkJGLCAweDRFMzMsDQorICAgIDB4OUJDMCwgMHgxQzk2LCAweDlCQzEsIDB4M0JFMywgMHg5QkM2LCAweDFDOTksIDB4OUJDNywgMHgzQkU0LA0KKyAgICAweDlCQzgsIDB4NEUzNCwgMHg5QkM5LCAweDA3QTUsIDB4OUJDQSwgMHgxQzk3LCAweDlCQ0UsIDB4NDMzQiwNCisgICAgMHg5QkNGLCAweDFDOUEsIDB4OUJEMSwgMHgxQzlCLCAweDlCRDIsIDB4MUM5QywgMHg5QkQ0LCAweDFDQTAsDQorICAgIDB4OUJENiwgMHgwODc4LCAweDlCRDcsIDB4M0JFNSwgMHg5QkQ4LCAweDRBNTcsIDB4OUJEQiwgMHgwQjQ0LA0KKyAgICAweDlCREQsIDB4NEE1OCwgMHg5QkRGLCAweDM3QkYsIDB4OUJFMSwgMHgxQ0ExLCAweDlCRTIsIDB4MUM5RSwNCisgICAgMHg5QkUzLCAweDFDOUQsIDB4OUJFNCwgMHgxQzlGLCAweDlCRTUsIDB4NDMzQywgMHg5QkU3LCAweDNCRTYsDQorICAgIDB4OUJFOCwgMHgwNzM1LCAweDlCRUEsIDB4NEE1OSwgMHg5QkVCLCAweDNCRTcsIDB4OUJFRSwgMHg0QTVCLA0KKyAgICAweDlCRUYsIDB4NEE1QSwgMHg5QkYwLCAweDFDQTUsIDB4OUJGMSwgMHgxQ0E0LCAweDlCRjIsIDB4MUNBMywNCisgICAgMHg5QkYzLCAweDRBNTYsIDB4OUJGNSwgMHgwNDc3LCAweDlCRjcsIDB4M0JFOCwgMHg5QkY4LCAweDQzM0QsDQorICAgIDB4OUJGQSwgMHgzQkU5LCAweDlCRkQsIDB4M0JFQSwgMHg5QkZGLCAweDRFMzUsIDB4OUMwMCwgMHgyMjA4LA0KKyAgICAweDlDMDIsIDB4NEUzNiwgMHg5QzA0LCAweDFDQUYsIDB4OUMwNiwgMHgxQ0FCLCAweDlDMDgsIDB4MUNBQywNCisgICAgMHg5QzA5LCAweDFDQTgsIDB4OUMwQSwgMHgxQ0FFLCAweDlDMEIsIDB4M0JFQiwgMHg5QzBDLCAweDFDQUEsDQorICAgIDB4OUMwRCwgMHgwNUMwLCAweDlDMTAsIDB4MEZGMiwgMHg5QzEyLCAweDFDQUQsIDB4OUMxMywgMHgxQ0E5LA0KKyAgICAweDlDMTQsIDB4MUNBNywgMHg5QzE1LCAweDFDQTYsIDB4OUMxNiwgMHg0QTVGLCAweDlDMTgsIDB4NEE2MCwNCisgICAgMHg5QzE5LCAweDRBNjEsIDB4OUMxQSwgMHg0QTYyLCAweDlDMUIsIDB4MUNCMSwgMHg5QzFDLCAweDRFMzcsDQorICAgIDB4OUMxRCwgMHg0QTYzLCAweDlDMjEsIDB4MUNCNCwgMHg5QzIyLCAweDRBNjQsIDB4OUMyMywgMHg0MzNFLA0KKyAgICAweDlDMjQsIDB4MUNCMywgMHg5QzI1LCAweDFDQjIsIDB4OUMyNywgMHgzQkVDLCAweDlDMjksIDB4NEE2NSwNCisgICAgMHg5QzJBLCAweDNCRUQsIDB4OUMyRCwgMHgwREJCLCAweDlDMkUsIDB4MUNCMCwgMHg5QzJGLCAweDA0QjcsDQorICAgIDB4OUMzMCwgMHgxQ0I1LCAweDlDMzEsIDB4NEE2NywgMHg5QzMyLCAweDFDQjcsIDB4OUMzNSwgMHg0RTM4LA0KKyAgICAweDlDMzYsIDB4M0JFRSwgMHg5QzM3LCAweDRBNjgsIDB4OUMzOSwgMHgwNUNELCAweDlDM0EsIDB4MUNBMiwNCisgICAgMHg5QzNCLCAweDA0RDksIDB4OUMzRSwgMHgxQ0I5LCAweDlDNDEsIDB4M0JFRiwgMHg5QzQ0LCAweDRFMzksDQorICAgIDB4OUM0NSwgMHg0QTY5LCAweDlDNDYsIDB4MUNCOCwgMHg5QzQ3LCAweDFDQjYsIDB4OUM0OCwgMHgwQjZCLA0KKyAgICAweDlDNDksIDB4NEE2QywgMHg5QzRBLCAweDRBNkQsIDB4OUM0RiwgMHg0MzNGLCAweDlDNTAsIDB4NDM0MCwNCisgICAgMHg5QzUyLCAweDBFOUUsIDB4OUM1MywgMHgzQkYwLCAweDlDNTQsIDB4NEE2RiwgMHg5QzU2LCAweDRFM0EsDQorICAgIDB4OUM1NywgMHgwRkEyLCAweDlDNTgsIDB4NEE3MCwgMHg5QzVBLCAweDFDQkEsIDB4OUM1QiwgMHg0QTcxLA0KKyAgICAweDlDNUMsIDB4NEE2QSwgMHg5QzVELCAweDRBNzIsIDB4OUM1RiwgMHg0QTczLCAweDlDNjAsIDB4MUNCQiwNCisgICAgMHg5QzYxLCAweDRFM0IsIDB4OUM2MywgMHgzQkYxLCAweDlDNjUsIDB4NDM0MSwgMHg5QzY3LCAweDFDQkMsDQorICAgIDB4OUM2OCwgMHg0RTNDLCAweDlDNjksIDB4NEE3NCwgMHg5QzZBLCAweDRBNzUsIDB4OUM2QiwgMHg0QTc2LA0KKyAgICAweDlDNkQsIDB4NEE3NywgMHg5QzZFLCAweDRBNzgsIDB4OUM3MCwgMHgzQkYyLCAweDlDNzIsIDB4NEE3OSwNCisgICAgMHg5Qzc1LCAweDRBN0EsIDB4OUM3NiwgMHgxQ0JELCAweDlDNzcsIDB4M0JGMywgMHg5Qzc4LCAweDFDQkUsDQorICAgIDB4OUM3QSwgMHg0QTdCLCAweDlDRTUsIDB4MEJENywgMHg5Q0U2LCAweDRBN0MsIDB4OUNFNywgMHgxQ0JGLA0KKyAgICAweDlDRTksIDB4MEQ0QiwgMHg5Q0VCLCAweDFDQzQsIDB4OUNFQywgMHgxQ0MwLCAweDlDRjAsIDB4MUNDMSwNCisgICAgMHg5Q0YyLCAweDRBN0QsIDB4OUNGMywgMHgwRTVGLCAweDlDRjQsIDB4MEVEMCwgMHg5Q0Y2LCAweDBDQTgsDQorICAgIDB4OUQwMiwgMHgzQkY0LCAweDlEMDMsIDB4MUNDNSwgMHg5RDA2LCAweDFDQzYsIDB4OUQwNywgMHgwQzk2LA0KKyAgICAweDlEMDgsIDB4MUNDMywgMHg5RDA5LCAweDFDQzIsIDB4OUQwQiwgMHg0QTdFLCAweDlEMEUsIDB4MDUyQSwNCisgICAgMHg5RDExLCAweDRBODAsIDB4OUQxMiwgMHgxQ0NFLCAweDlEMTUsIDB4MUNDRCwgMHg5RDE3LCAweDRBODEsDQorICAgIDB4OUQxOCwgMHg0QTgyLCAweDlEMUIsIDB4MDUxNywgMHg5RDFELCAweDQzNDIsIDB4OUQxRSwgMHg0MzQzLA0KKyAgICAweDlEMUYsIDB4MUNDQiwgMHg5RDIzLCAweDFDQ0EsIDB4OUQyNiwgMHgxQ0M4LCAweDlEMjgsIDB4MDVEOSwNCisgICAgMHg5RDJBLCAweDFDQzcsIDB4OUQyQiwgMHgwOERFLCAweDlEMkMsIDB4MDUyOSwgMHg5RDMwLCAweDRFM0QsDQorICAgIDB4OUQzMiwgMHg0QTg2LCAweDlEM0IsIDB4MDdGNSwgMHg5RDNELCAweDRFM0UsIDB4OUQzRSwgMHgxQ0QxLA0KKyAgICAweDlEM0YsIDB4MUNEMCwgMHg5RDQxLCAweDFDQ0YsIDB4OUQ0MiwgMHgzQkY1LCAweDlENDMsIDB4NDM0NCwNCisgICAgMHg5RDQ0LCAweDFDQ0MsIDB4OUQ0NiwgMHgxQ0QyLCAweDlENDcsIDB4M0JGNiwgMHg5RDQ4LCAweDFDRDMsDQorICAgIDB4OUQ0QSwgMHg0QTg4LCAweDlENTAsIDB4MUNEOCwgMHg5RDUxLCAweDFDRDcsIDB4OUQ1MiwgMHg0MzQ1LA0KKyAgICAweDlENTksIDB4MUNEOSwgMHg5RDVDLCAweDA0Q0YsIDB4OUQ1RCwgMHgxQ0Q0LCAweDlENUUsIDB4MUNENSwNCisgICAgMHg5RDVGLCAweDRBODksIDB4OUQ2MCwgMHgwODA2LCAweDlENjEsIDB4MEVDNSwgMHg5RDYyLCAweDRBOEEsDQorICAgIDB4OUQ2MywgMHgzQkY3LCAweDlENjQsIDB4MUNENiwgMHg5RDY5LCAweDNCRjgsIDB4OUQ2QSwgMHg0RTNGLA0KKyAgICAweDlENkIsIDB4MjIwQSwgMHg5RDZDLCAweDBFNjAsIDB4OUQ2RiwgMHgxQ0RFLCAweDlENzAsIDB4MjIwOSwNCisgICAgMHg5RDcyLCAweDFDREEsIDB4OUQ3MywgMHg0QThELCAweDlENzYsIDB4NEE4RSwgMHg5RDc3LCAweDRBOEYsDQorICAgIDB4OUQ3QSwgMHgxQ0RGLCAweDlEN0IsIDB4NEU0MCwgMHg5RDdDLCAweDNCRjksIDB4OUQ3RSwgMHgzQkZBLA0KKyAgICAweDlEODQsIDB4NEE5MCwgMHg5RDg3LCAweDFDREMsIDB4OUQ4OSwgMHgxQ0RCLCAweDlEOEEsIDB4NDM0NiwNCisgICAgMHg5RDhELCAweDNCRkIsIDB4OUQ4RiwgMHgwNzMyLCAweDlEOTYsIDB4NDM0NywgMHg5RDk5LCAweDRBOTEsDQorICAgIDB4OUQ5QSwgMHgxQ0UwLCAweDlEQTEsIDB4NEE5MiwgMHg5REE0LCAweDFDRTEsIDB4OURBOSwgMHgxQ0UyLA0KKyAgICAweDlEQUIsIDB4MUNERCwgMHg5REFDLCAweDQzNDksIDB4OURBRiwgMHgxQ0M5LCAweDlEQjEsIDB4M0JGQywNCisgICAgMHg5REIyLCAweDFDRTMsIDB4OURCNCwgMHgwQkZELCAweDlEQjUsIDB4NEE5NCwgMHg5REI4LCAweDFDRTcsDQorICAgIDB4OURCOSwgMHg0QTk1LCAweDlEQkEsIDB4MUNFOCwgMHg5REJCLCAweDFDRTYsIDB4OURCQywgMHg0MzRBLA0KKyAgICAweDlEQkQsIDB4NEE5NiwgMHg5REJGLCAweDRBOTMsIDB4OURDMCwgMHg0MzQ4LCAweDlEQzEsIDB4MUNFNSwNCisgICAgMHg5REMyLCAweDFDRUIsIDB4OURDMywgMHgzQkZELCAweDlEQzQsIDB4MUNFNCwgMHg5REM2LCAweDFDRTksDQorICAgIDB4OURDNywgMHgzQkZFLCAweDlEQzksIDB4NEE5NywgMHg5RENGLCAweDFDRUEsIDB4OUREMywgMHgxQ0VELA0KKyAgICAweDlERDYsIDB4M0JGRiwgMHg5REQ3LCAweDFEREUsIDB4OUREOSwgMHgxQ0VDLCAweDlEREEsIDB4NEE5OCwNCisgICAgMHg5RERGLCAweDNDMDAsIDB4OURFMCwgMHg0QTk5LCAweDlERTMsIDB4NEE5QSwgMHg5REU1LCAweDRFNDEsDQorICAgIDB4OURFNiwgMHgxQ0VGLCAweDlERTcsIDB4NDM0QywgMHg5REU5LCAweDRFNDIsIDB4OURFQiwgMHgzQzAxLA0KKyAgICAweDlERUQsIDB4MUNGMCwgMHg5REVGLCAweDFDRjEsIDB4OURGMiwgMHgwRkVGLCAweDlERjMsIDB4NEU0MywNCisgICAgMHg5REY0LCAweDNDMDIsIDB4OURGOCwgMHgxQ0VFLCAweDlERjksIDB4MEI0QiwgMHg5REZBLCAweDA4NUQsDQorICAgIDB4OURGRCwgMHgxQ0YyLCAweDlFMDIsIDB4NEE5RCwgMHg5RTA3LCAweDQzNEQsIDB4OUUwQSwgMHg0QTlDLA0KKyAgICAweDlFMEQsIDB4NEE5RSwgMHg5RTE1LCAweDNDMDMsIDB4OUUxOSwgMHgyMjBDLCAweDlFMUEsIDB4MUNGMywNCisgICAgMHg5RTFCLCAweDFDRjQsIDB4OUUxQywgMHg0QTlGLCAweDlFMUQsIDB4M0MwNCwgMHg5RTFFLCAweDFDRjUsDQorICAgIDB4OUU3NSwgMHgxQ0Y2LCAweDlFNzgsIDB4MDc2OCwgMHg5RTc5LCAweDFDRjcsIDB4OUU3QSwgMHg0RTQ0LA0KKyAgICAweDlFN0IsIDB4NEFBMCwgMHg5RTdDLCAweDFERkQsIDB4OUU3RCwgMHgxQ0Y4LCAweDlFN0YsIDB4MDhEQiwNCisgICAgMHg5RTgwLCAweDRBQTIsIDB4OUU4MSwgMHgxQ0Y5LCAweDlFODIsIDB4NEU0NSwgMHg5RTgzLCAweDRFNDYsDQorICAgIDB4OUU4NCwgMHg0RTQ3LCAweDlFODUsIDB4NEFBMywgMHg5RTg4LCAweDFDRkEsIDB4OUU4QiwgMHgxQ0ZCLA0KKyAgICAweDlFOEMsIDB4MUNGQywgMHg5RTkxLCAweDFDRkYsIDB4OUU5MiwgMHgxQ0ZELCAweDlFOTMsIDB4MEZFMiwNCisgICAgMHg5RTk1LCAweDFDRkUsIDB4OUU5NywgMHgwRkI3LCAweDlFOUIsIDB4NEFBNCwgMHg5RTlELCAweDFEMDAsDQorICAgIDB4OUU5RSwgMHg0MzRFLCAweDlFOUYsIDB4MEZBMywgMHg5RUE0LCAweDNDMDUsIDB4OUVBNSwgMHgxRDAxLA0KKyAgICAweDlFQTYsIDB4MEQzNCwgMHg5RUE4LCAweDNDMDYsIDB4OUVBOSwgMHgxRDAyLCAweDlFQUEsIDB4MUQwNCwNCisgICAgMHg5RUFDLCAweDNDMDcsIDB4OUVBRCwgMHgxRDA1LCAweDlFQUYsIDB4NDM0RiwgMHg5RUIwLCAweDRFNDgsDQorICAgIDB4OUVCNCwgMHgxRTAyLCAweDlFQjUsIDB4MUU3NSwgMHg5RUI4LCAweDFEMDMsIDB4OUVCOSwgMHgwN0ZGLA0KKyAgICAweDlFQkEsIDB4MEVEOSwgMHg5RUJCLCAweDBFOTEsIDB4OUVCQywgMHgxMjg0LCAweDlFQkQsIDB4NEFBNiwNCisgICAgMHg5RUJFLCAweDE0RkYsIDB4OUVCRiwgMHgwRUE5LCAweDlFQzMsIDB4MzQwQiwgMHg5RUM0LCAweDA1MkIsDQorICAgIDB4OUVDQywgMHgxRDA3LCAweDlFQ0QsIDB4MDY2QSwgMHg5RUNFLCAweDFEMDgsIDB4OUVDRiwgMHgxRDA5LA0KKyAgICAweDlFRDAsIDB4MUQwQSwgMHg5RUQxLCAweDIyMEQsIDB4OUVEMiwgMHgwODA3LCAweDlFRDQsIDB4MUQwQiwNCisgICAgMHg5RUQ4LCAweDE2MEQsIDB4OUVEOSwgMHgwRUU3LCAweDlFREIsIDB4MEI0MywgMHg5RURDLCAweDFEMEMsDQorICAgIDB4OUVERCwgMHgxRDBFLCAweDlFREUsIDB4MUQwRCwgMHg5RURGLCAweDRBQTgsIDB4OUVFMCwgMHgxRDBGLA0KKyAgICAweDlFRTQsIDB4NEU0OSwgMHg5RUU1LCAweDFEMTAsIDB4OUVFNywgMHgzQzA4LCAweDlFRTgsIDB4MUQxMSwNCisgICAgMHg5RUVFLCAweDNDMDksIDB4OUVFRiwgMHgxRDEyLCAweDlFRjAsIDB4NEU0QSwgMHg5RUYyLCAweDRFNEIsDQorICAgIDB4OUVGNCwgMHgxRDEzLCAweDlFRjYsIDB4MUQxNCwgMHg5RUY3LCAweDFEMTUsIDB4OUVGOSwgMHgxRDE2LA0KKyAgICAweDlFRkIsIDB4MUQxNywgMHg5RUZDLCAweDFEMTgsIDB4OUVGRCwgMHgxRDE5LCAweDlFRkYsIDB4NEFBOSwNCisgICAgMHg5RjAyLCAweDRBQUEsIDB4OUYwMywgMHg0QUFDLCAweDlGMDcsIDB4MUQxQSwgMHg5RjA4LCAweDFEMUIsDQorICAgIDB4OUYwOSwgMHg0RTRDLCAweDlGMEUsIDB4MEMxRSwgMHg5RjBGLCAweDRFNEQsIDB4OUYxMCwgMHgzQzBBLA0KKyAgICAweDlGMTIsIDB4M0MwQiwgMHg5RjEzLCAweDA3OTEsIDB4OUYxNCwgMHg0RTRFLCAweDlGMTUsIDB4MUQxRCwNCisgICAgMHg5RjE3LCAweDNDMEMsIDB4OUYxOSwgMHgzQzBELCAweDlGMUIsIDB4NEU0RiwgMHg5RjIwLCAweDBBQ0YsDQorICAgIDB4OUYyMSwgMHgxRDFFLCAweDlGMjIsIDB4NEU1MCwgMHg5RjI2LCAweDRFNTEsIDB4OUYyQSwgMHg0RTUyLA0KKyAgICAweDlGMkIsIDB4NEU1MywgMHg5RjJDLCAweDFEMUYsIDB4OUYyRiwgMHgzQzBFLCAweDlGMzQsIDB4NEU1NCwNCisgICAgMHg5RjM3LCAweDNDMEYsIDB4OUYzOSwgMHgzQzEwLCAweDlGM0EsIDB4NEFBRCwgMHg5RjNCLCAweDBEOTMsDQorICAgIDB4OUYzRCwgMHg0QUFFLCAweDlGM0UsIDB4MUQyMCwgMHg5RjQxLCAweDNDMTEsIDB4OUY0NSwgMHgzQzEyLA0KKyAgICAweDlGNDYsIDB4NEFBRiwgMHg5RjRBLCAweDFEMjEsIDB4OUY0QiwgMHgxNzBBLCAweDlGNEUsIDB4MUE3QiwNCisgICAgMHg5RjRGLCAweDFDMDYsIDB4OUY1MiwgMHgxRDIyLCAweDlGNTMsIDB4NEFCMCwgMHg5RjU0LCAweDFEMjMsDQorICAgIDB4OUY1NSwgMHg0QUIxLCAweDlGNTcsIDB4M0MxMywgMHg5RjU4LCAweDRBQjIsIDB4OUY1QSwgMHg0RTU1LA0KKyAgICAweDlGNUQsIDB4NEFCNCwgMHg5RjVGLCAweDFEMjUsIDB4OUY2MCwgMHgxRDI2LCAweDlGNjEsIDB4MUQyNywNCisgICAgMHg5RjYyLCAweDBGQjgsIDB4OUY2MywgMHgxRDI0LCAweDlGNjYsIDB4MUQyOCwgMHg5RjY3LCAweDFEMjksDQorICAgIDB4OUY2OCwgMHgzQzE0LCAweDlGNjksIDB4NEFCNiwgMHg5RjZBLCAweDFEMkIsIDB4OUY2QywgMHgxRDJBLA0KKyAgICAweDlGNkQsIDB4NEFCNywgMHg5RjZGLCAweDRFNTYsIDB4OUY3MCwgMHg0QUI4LCAweDlGNzEsIDB4M0MxNSwNCisgICAgMHg5RjcyLCAweDFEMkQsIDB4OUY3NSwgMHgzQzE2LCAweDlGNzYsIDB4MUQyRSwgMHg5Rjc3LCAweDFEMkMsDQorICAgIDB4OUY4RCwgMHgwRjdFLCAweDlGOTAsIDB4M0MxNywgMHg5Rjk0LCAweDNDMTgsIDB4OUY5NSwgMHgxRDJGLA0KKyAgICAweDlGOTcsIDB4NDM1MCwgMHg5RjlDLCAweDFEMzAsIDB4OUY5RCwgMHgxNzI3LCAweDlGOUUsIDB4NEU1NywNCisgICAgMHg5RkEwLCAweDFEMzEsIDB4OUZBMiwgMHgzQzE5LCAweDlGQTUsIDB4NEU1OCwgMHhGODYwLCAweDNDNTQsDQorICAgIDB4Rjg2MSwgMHgzQzU1LCAweEY4NjIsIDB4M0M1NiwgMHhGODdBLCAweDNDNTcsIDB4Rjg3RiwgMHgzQzU4LA0KKyAgICAweEY5MDksIDB4MzVBQiwgMHhGOTFELCAweDM0NTAsIDB4RjkxRiwgMHgzNzA0LCAweEY5MjgsIDB4NEY0RiwNCisgICAgMHhGOTI5LCAweDRGNTEsIDB4RjkzNiwgMHgzNDUyLCAweEY5NUYsIDB4MzY5MywgMHhGOTcwLCAweDM0MjAsDQorICAgIDB4Rjk4MywgMHgzNzA4LCAweEY5OTIsIDB4MUU4MSwgMHhGOTkzLCAweDFFODIsIDB4Rjk5OSwgMHgxRTgzLA0KKyAgICAweEY5OUEsIDB4MzcxMSwgMHhGOUEyLCAweDM3MEYsIDB4RjlDMywgMHgxRTgwLCAweEY5RDAsIDB4MzQ1NCwNCisgICAgMHhGOURDLCAweDM0NTEsIDB4RjlFQywgMHgxRTQ2LCAweEZBMDMsIDB4MzY4NCwgMHhGQTBFLCAweDIwREEsDQorICAgIDB4RkEwRiwgMHgyMEU1LCAweEZBMTAsIDB4MUU0MiwgMHhGQTExLCAweDM3RDIsIDB4RkExMiwgMHgyMTIxLA0KKyAgICAweEZBMTMsIDB4MjEzMSwgMHhGQTE0LCAweDIxMzMsIDB4RkExNSwgMHg0RjUzLCAweEZBMTYsIDB4MjE2NCwNCisgICAgMHhGQTE3LCAweDIxN0IsIDB4RkExOCwgMHgyMTgzLCAweEZBMTksIDB4MjE4NCwgMHhGQTFBLCAweDIxODUsDQorICAgIDB4RkExQiwgMHgyMTg3LCAweEZBMUMsIDB4MjE4QiwgMHhGQTFELCAweDIxOEUsIDB4RkExRSwgMHgyMTk3LA0KKyAgICAweEZBMUYsIDB4MjFBMiwgMHhGQTIwLCAweDIxQTQsIDB4RkEyMSwgMHgyMUE1LCAweEZBMjIsIDB4MjFBRSwNCisgICAgMHhGQTIzLCAweDIxQjYsIDB4RkEyNCwgMHg0OTQ4LCAweEZBMjUsIDB4MjFCOSwgMHhGQTI2LCAweDIxQkMsDQorICAgIDB4RkEyNywgMHgyMUQ4LCAweEZBMjgsIDB4MjFERiwgMHhGQTI5LCAweDIxRUYsIDB4RkEyQSwgMHgyMUZCLA0KKyAgICAweEZBMkIsIDB4MjFGQywgMHhGQTJDLCAweDIxRkUsIDB4RkEyRCwgMHgyMjBCLCAweEZBMzAsIDB4MzQ0NiwNCisgICAgMHhGQTMxLCAweDM0MzAsIDB4RkEzMiwgMHgzNDRELCAweEZBMzMsIDB4MzQ0OSwgMHhGQTM0LCAweDM0MUEsDQorICAgIDB4RkEzNSwgMHgzNDQyLCAweEZBMzYsIDB4MURFMywgMHhGQTM3LCAweDM0MzYsIDB4RkEzOCwgMHgzNDE1LA0KKyAgICAweEZBMzksIDB4MzQ0OCwgMHhGQTNBLCAweDM0NEIsIDB4RkEzQiwgMHgzNDMxLCAweEZBM0MsIDB4NDFDNSwNCisgICAgMHhGQTNELCAweDM0MEUsIDB4RkEzRSwgMHgzNDEwLCAweEZBM0YsIDB4MzQzMywgMHhGQTQwLCAweDM0MzksDQorICAgIDB4RkE0MSwgMHgzNDQ1LCAweEZBNDIsIDB4MzQxNiwgMHhGQTQzLCAweDM0MjgsIDB4RkE0NCwgMHgzNDNGLA0KKyAgICAweEZBNDUsIDB4MzQwRiwgMHhGQTQ2LCAweDFFMTQsIDB4RkE0NywgMHgzNDE0LCAweEZBNDgsIDB4MzQyMywNCisgICAgMHhGQTQ5LCAweDNDMjYsIDB4RkE0QSwgMHgxRTM0LCAweEZBNEIsIDB4MzQ0MywgMHhGQTRDLCAweDM0MjQsDQorICAgIDB4RkE0RCwgMHgzNDIxLCAweEZBNEUsIDB4MzQxNywgMHhGQTRGLCAweDM0NEYsIDB4RkE1MCwgMHgzNDJGLA0KKyAgICAweEZBNTEsIDB4MzQyNywgMHhGQTUyLCAweDM0MEQsIDB4RkE1MywgMHgzNDNCLCAweEZBNTQsIDB4MzQxRiwNCisgICAgMHhGQTU1LCAweDM0M0QsIDB4RkE1NiwgMHgzNDJFLCAweEZBNTcsIDB4MzQ1NywgMHhGQTU4LCAweDQ3QkUsDQorICAgIDB4RkE1OSwgMHgzNDQwLCAweEZBNUEsIDB4MzQyOSwgMHhGQTVCLCAweDM0MjUsIDB4RkE1QywgMHgzNDI2LA0KKyAgICAweEZBNUQsIDB4Mzc3NywgMHhGQTVFLCAweDM3NzYsIDB4RkE1RiwgMHgzNDM3LCAweEZBNjAsIDB4MzQxMywNCisgICAgMHhGQTYxLCAweDM0MjIsIDB4RkE2MiwgMHgzNDA5LCAweEZBNjMsIDB4MzQxQiwgMHhGQTY0LCAweDM0NDQsDQorICAgIDB4RkE2NSwgMHgzNDM0LCAweEZBNjYsIDB4M0MyQiwgMHhGQTY3LCAweDM0MDgsIDB4RkE2OCwgMHgzNDNFLA0KKyAgICAweEZBNjksIDB4MzQxOSwgMHhGQTZBLCAweDFFNkMsIDB4RkIwMCwgMHgyNDhFLCAweEZCMDEsIDB4MDA3MCwNCisgICAgMHhGQjAyLCAweDAwNzEsIDB4RkIwMywgMHgyNDhGLCAweEZCMDQsIDB4MjQ5MCwgMHhGRTMwLCAweDFFREEsDQorICAgIDB4RkUzMSwgMHgxRUQ0LCAweEZFMzIsIDB4MUVENSwgMHhGRTMzLCAweDFFRDIsIDB4RkUzNSwgMHgxRURCLA0KKyAgICAweEZFMzYsIDB4MUVEQywgMHhGRTM3LCAweDFFRTEsIDB4RkUzOCwgMHgxRUUyLCAweEZFMzksIDB4MUVERCwNCisgICAgMHhGRTNBLCAweDFFREUsIDB4RkUzQiwgMHgxRUVCLCAweEZFM0MsIDB4MUVFQywgMHhGRTNELCAweDFFRTUsDQorICAgIDB4RkUzRSwgMHgxRUU2LCAweEZFM0YsIDB4MUVFMywgMHhGRTQwLCAweDFFRTQsIDB4RkU0MSwgMHgxRUU3LA0KKyAgICAweEZFNDIsIDB4MUVFOCwgMHhGRTQzLCAweDFFRTksIDB4RkU0NCwgMHgxRUVBLCAweEZFNDUsIDB4MzE1RiwNCisgICAgMHhGRTQ2LCAweDMxNjAsIDB4RkU0NywgMHgxRURGLCAweEZFNDgsIDB4MUVFMCwgMHhGRjAxLCAweDAyODIsDQorICAgIDB4RkYwMiwgMHgxRjQ3LCAweEZGMDMsIDB4MDJDQywgMHhGRjA0LCAweDAyQzgsIDB4RkYwNSwgMHgwMkNCLA0KKyAgICAweEZGMDYsIDB4MDJDRCwgMHhGRjA3LCAweDFGNDYsIDB4RkYwOCwgMHgwMkEyLCAweEZGMDksIDB4MDJBMywNCisgICAgMHhGRjBBLCAweDAyQ0UsIDB4RkYwQiwgMHgwMkI0LCAweEZGMEMsIDB4MDI3QywgMHhGRjBELCAweDAyQjUsDQorICAgIDB4RkYwRSwgMHgwMjdELCAweEZGMEYsIDB4MDI5NywgMHhGRjEwLCAweDAzMEMsIDB4RkYxMSwgMHgwMzBELA0KKyAgICAweEZGMTIsIDB4MDMwRSwgMHhGRjEzLCAweDAzMEYsIDB4RkYxNCwgMHgwMzEwLCAweEZGMTUsIDB4MDMxMSwNCisgICAgMHhGRjE2LCAweDAzMTIsIDB4RkYxNywgMHgwMzEzLCAweEZGMTgsIDB4MDMxNCwgMHhGRjE5LCAweDAzMTUsDQorICAgIDB4RkYxQSwgMHgwMjdGLCAweEZGMUIsIDB4MDI4MCwgMHhGRjFDLCAweDAyQkIsIDB4RkYxRCwgMHgwMkI5LA0KKyAgICAweEZGMUUsIDB4MDJCQywgMHhGRjFGLCAweDAyODEsIDB4RkYyMCwgMHgwMkNGLCAweEZGMjEsIDB4MDMxNiwNCisgICAgMHhGRjIyLCAweDAzMTcsIDB4RkYyMywgMHgwMzE4LCAweEZGMjQsIDB4MDMxOSwgMHhGRjI1LCAweDAzMUEsDQorICAgIDB4RkYyNiwgMHgwMzFCLCAweEZGMjcsIDB4MDMxQywgMHhGRjI4LCAweDAzMUQsIDB4RkYyOSwgMHgwMzFFLA0KKyAgICAweEZGMkEsIDB4MDMxRiwgMHhGRjJCLCAweDAzMjAsIDB4RkYyQywgMHgwMzIxLCAweEZGMkQsIDB4MDMyMiwNCisgICAgMHhGRjJFLCAweDAzMjMsIDB4RkYyRiwgMHgwMzI0LCAweEZGMzAsIDB4MDMyNSwgMHhGRjMxLCAweDAzMjYsDQorICAgIDB4RkYzMiwgMHgwMzI3LCAweEZGMzMsIDB4MDMyOCwgMHhGRjM0LCAweDAzMjksIDB4RkYzNSwgMHgwMzJBLA0KKyAgICAweEZGMzYsIDB4MDMyQiwgMHhGRjM3LCAweDAzMkMsIDB4RkYzOCwgMHgwMzJELCAweEZGMzksIDB4MDMyRSwNCisgICAgMHhGRjNBLCAweDAzMkYsIDB4RkYzQiwgMHgwMkE2LCAweEZGM0MsIDB4MDI5OCwgMHhGRjNELCAweDAyQTcsDQorICAgIDB4RkYzRSwgMHgwMjg4LCAweEZGM0YsIDB4MDI4QSwgMHhGRjQwLCAweDAyODYsIDB4RkY0MSwgMHgwMzMwLA0KKyAgICAweEZGNDIsIDB4MDMzMSwgMHhGRjQzLCAweDAzMzIsIDB4RkY0NCwgMHgwMzMzLCAweEZGNDUsIDB4MDMzNCwNCisgICAgMHhGRjQ2LCAweDAzMzUsIDB4RkY0NywgMHgwMzM2LCAweEZGNDgsIDB4MDMzNywgMHhGRjQ5LCAweDAzMzgsDQorICAgIDB4RkY0QSwgMHgwMzM5LCAweEZGNEIsIDB4MDMzQSwgMHhGRjRDLCAweDAzM0IsIDB4RkY0RCwgMHgwMzNDLA0KKyAgICAweEZGNEUsIDB4MDMzRCwgMHhGRjRGLCAweDAzM0UsIDB4RkY1MCwgMHgwMzNGLCAweEZGNTEsIDB4MDM0MCwNCisgICAgMHhGRjUyLCAweDAzNDEsIDB4RkY1MywgMHgwMzQyLCAweEZGNTQsIDB4MDM0MywgMHhGRjU1LCAweDAzNDQsDQorICAgIDB4RkY1NiwgMHgwMzQ1LCAweEZGNTcsIDB4MDM0NiwgMHhGRjU4LCAweDAzNDcsIDB4RkY1OSwgMHgwMzQ4LA0KKyAgICAweEZGNUEsIDB4MDM0OSwgMHhGRjVCLCAweDAyQTgsIDB4RkY1QywgMHgwMjlCLCAweEZGNUQsIDB4MDJBOSwNCisgICAgMHhGRjVFLCAweDAyOTksIDB4RkY1RiwgMHgyRjYzLCAweEZGNjAsIDB4MkY2NCwgMHhGRjYxLCAweDAxNDcsDQorICAgIDB4RkY2MiwgMHgwMTQ4LCAweEZGNjMsIDB4MDE0OSwgMHhGRjY0LCAweDAxNEEsIDB4RkY2NSwgMHgwMTRCLA0KKyAgICAweEZGNjYsIDB4MDE0QywgMHhGRjY3LCAweDAxNEQsIDB4RkY2OCwgMHgwMTRFLCAweEZGNjksIDB4MDE0RiwNCisgICAgMHhGRjZBLCAweDAxNTAsIDB4RkY2QiwgMHgwMTUxLCAweEZGNkMsIDB4MDE1MiwgMHhGRjZELCAweDAxNTMsDQorICAgIDB4RkY2RSwgMHgwMTU0LCAweEZGNkYsIDB4MDE1NSwgMHhGRjcwLCAweDAxNTYsIDB4RkY3MSwgMHgwMTU3LA0KKyAgICAweEZGNzIsIDB4MDE1OCwgMHhGRjczLCAweDAxNTksIDB4RkY3NCwgMHgwMTVBLCAweEZGNzUsIDB4MDE1QiwNCisgICAgMHhGRjc2LCAweDAxNUMsIDB4RkY3NywgMHgwMTVELCAweEZGNzgsIDB4MDE1RSwgMHhGRjc5LCAweDAxNUYsDQorICAgIDB4RkY3QSwgMHgwMTYwLCAweEZGN0IsIDB4MDE2MSwgMHhGRjdDLCAweDAxNjIsIDB4RkY3RCwgMHgwMTYzLA0KKyAgICAweEZGN0UsIDB4MDE2NCwgMHhGRjdGLCAweDAxNjUsIDB4RkY4MCwgMHgwMTY2LCAweEZGODEsIDB4MDE2NywNCisgICAgMHhGRjgyLCAweDAxNjgsIDB4RkY4MywgMHgwMTY5LCAweEZGODQsIDB4MDE2QSwgMHhGRjg1LCAweDAxNkIsDQorICAgIDB4RkY4NiwgMHgwMTZDLCAweEZGODcsIDB4MDE2RCwgMHhGRjg4LCAweDAxNkUsIDB4RkY4OSwgMHgwMTZGLA0KKyAgICAweEZGOEEsIDB4MDE3MCwgMHhGRjhCLCAweDAxNzEsIDB4RkY4QywgMHgwMTcyLCAweEZGOEQsIDB4MDE3MywNCisgICAgMHhGRjhFLCAweDAxNzQsIDB4RkY4RiwgMHgwMTc1LCAweEZGOTAsIDB4MDE3NiwgMHhGRjkxLCAweDAxNzcsDQorICAgIDB4RkY5MiwgMHgwMTc4LCAweEZGOTMsIDB4MDE3OSwgMHhGRjk0LCAweDAxN0EsIDB4RkY5NSwgMHgwMTdCLA0KKyAgICAweEZGOTYsIDB4MDE3QywgMHhGRjk3LCAweDAxN0QsIDB4RkY5OCwgMHgwMTdFLCAweEZGOTksIDB4MDE3RiwNCisgICAgMHhGRjlBLCAweDAxODAsIDB4RkY5QiwgMHgwMTgxLCAweEZGOUMsIDB4MDE4MiwgMHhGRjlELCAweDAxODMsDQorICAgIDB4RkY5RSwgMHgwMTg0LCAweEZGOUYsIDB4MDE4NSwgMHhGRkUwLCAweDAyQzksIDB4RkZFMSwgMHgwMkNBLA0KKyAgICAweEZGRTIsIDB4MDJFRiwgMHhGRkUzLCAweDAyODksIDB4RkZFNCwgMHgxRjQ1LCAweEZGRTUsIDB4MDJDNywNCisgICAgMHhGRkU4LCAweDAxNDMsDQorfTsNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfVW5pSklTX1VURjE2X0hfNV9EV29yZFszODQgKiAzXSA9IHsNCisgICAgMHhEODQwLCAweERDMEIsIDB4MzYwRiwgMHhEODQwLCAweERDODksIDB4NDM1MSwgMHhEODQwLCAweERDOEEsIDB4MzcxQywNCisgICAgMHhEODQwLCAweERDQTIsIDB4NDM1OCwgMHhEODQwLCAweERDQTQsIDB4NDM1QiwgMHhEODQwLCAweERDQjAsIDB4Mzc4MSwNCisgICAgMHhEODQwLCAweERDRjUsIDB4NEU1OSwgMHhEODQwLCAweERENTgsIDB4NEU2QiwgMHhEODQwLCAweEREQTIsIDB4MzYyMSwNCisgICAgMHhEODQwLCAweERFMTMsIDB4NDM2QiwgMHhEODQwLCAweERGMkIsIDB4NDM4MiwgMHhEODQwLCAweERGNzEsIDB4NDM4QiwNCisgICAgMHhEODQwLCAweERGODEsIDB4NDM4OSwgMHhEODQwLCAweERGRjksIDB4NDM4RiwgMHhEODQxLCAweERDNEEsIDB4NDM5MSwNCisgICAgMHhEODQxLCAweEREMDksIDB4NDM5MywgMHhEODQxLCAweEREQjEsIDB4NEU3MCwgMHhEODQxLCAweERERDYsIDB4NDM5QywNCisgICAgMHhEODQxLCAweERFMTEsIDB4MzdENiwgMHhEODQxLCAweERFMjgsIDB4MzcxOSwgMHhEODQxLCAweERFRUMsIDB4NEU3MywNCisgICAgMHhEODQxLCAweERGNEYsIDB4NDNBMCwgMHhEODQyLCAweERDMDcsIDB4NDNBNywgMHhEODQyLCAweERDM0EsIDB4NDNBOSwNCisgICAgMHhEODQyLCAweERDQjksIDB4NDNBRiwgMHhEODQyLCAweEREMEUsIDB4MzREMywgMHhEODQyLCAweEREN0MsIDB4NDNCMywNCisgICAgMHhEODQyLCAweEREOUQsIDB4NDNCNCwgMHhEODQyLCAweERFNjQsIDB4MzVCQiwgMHhEODQyLCAweERFRDMsIDB4NDNCOSwNCisgICAgMHhEODQyLCAweERGMUQsIDB4NDNCQywgMHhEODQyLCAweERGOUYsIDB4MzVFQiwgMHhEODQyLCAweERGQjcsIDB4MzU4QSwNCisgICAgMHhEODQzLCAweERENDUsIDB4NDNDRiwgMHhEODQzLCAweERENTgsIDB4NEU3QSwgMHhEODQzLCAweERERTEsIDB4NDNERCwNCisgICAgMHhEODQzLCAweERFNjQsIDB4NDNFQywgMHhEODQzLCAweERFNkQsIDB4NDNFNCwgMHhEODQzLCAweERFOTUsIDB4NDNFMywNCisgICAgMHhEODQzLCAweERGNUYsIDB4NDNFRiwgMHhEODQ0LCAweERFMDEsIDB4NDQwNiwgMHhEODQ0LCAweERFM0QsIDB4MzY4MSwNCisgICAgMHhEODQ0LCAweERFNTUsIDB4NDQwNywgMHhEODQ0LCAweERFNzQsIDB4NDQwRCwgMHhEODQ0LCAweERFN0IsIDB4NDQwOSwNCisgICAgMHhEODQ0LCAweERFRDcsIDB4NDQxNSwgMHhEODQ0LCAweERFRTQsIDB4NDQxNCwgMHhEODQ0LCAweERFRkQsIDB4NDQxQiwNCisgICAgMHhEODQ0LCAweERGMUIsIDB4NDFCMCwgMHhEODQ0LCAweERGMzYsIDB4NDQxRCwgMHhEODQ0LCAweERGNDQsIDB4NDQxRSwNCisgICAgMHhEODQ0LCAweERGQzQsIDB4NDQyOSwgMHhEODQ1LCAweERDNkQsIDB4NDQzNiwgMHhEODQ1LCAweERDNkUsIDB4NDFCNSwNCisgICAgMHhEODQ1LCAweERERDcsIDB4NDQ0MCwgMHhEODQ1LCAweERFNDcsIDB4NDQ0OCwgMHhEODQ1LCAweERFQjQsIDB4NDFDNiwNCisgICAgMHhEODQ1LCAweERGMDYsIDB4NDQ1NCwgMHhEODQ1LCAweERGNDIsIDB4NDQ1NSwgMHhEODQ2LCAweERDQkQsIDB4NDFDMSwNCisgICAgMHhEODQ2LCAweEREQzMsIDB4NDQ3NSwgMHhEODQ2LCAweERFMUEsIDB4MUU5MSwgMHhEODQ3LCAweERDNTYsIDB4NDQ4MywNCisgICAgMHhEODQ3LCAweEREMkQsIDB4NDQ4OCwgMHhEODQ3LCAweERENDUsIDB4NDQ4OSwgMHhEODQ3LCAweERENjIsIDB4NDQ4QiwNCisgICAgMHhEODQ3LCAweERENzgsIDB4NDQ4QSwgMHhEODQ3LCAweEREOTIsIDB4NDQ5NCwgMHhEODQ3LCAweEREOUMsIDB4NDQ5MCwNCisgICAgMHhEODQ3LCAweEREQTEsIDB4NDQ4RiwgMHhEODQ3LCAweEREQjcsIDB4NDQ5NywgMHhEODQ3LCAweERERTAsIDB4NDQ5OSwNCisgICAgMHhEODQ3LCAweERFMzMsIDB4NDQ5QSwgMHhEODQ3LCAweERFMzQsIDB4NDFDRCwgMHhEODQ3LCAweERGMUUsIDB4NDRBNywNCisgICAgMHhEODQ3LCAweERGNzYsIDB4NDRBRSwgMHhEODQ3LCAweERGRkEsIDB4NDRCMSwgMHhEODQ4LCAweEREN0IsIDB4NDRCRiwNCisgICAgMHhEODQ4LCAweERFMTgsIDB4NEFBMSwgMHhEODQ4LCAweERGMUUsIDB4NDRDNSwgMHhEODQ4LCAweERGQUQsIDB4NDRDOCwNCisgICAgMHhEODQ5LCAweERFMDksIDB4M0M1MywgMHhEODQ5LCAweERFRjMsIDB4NDRFMCwgMHhEODRBLCAweERDNUIsIDB4NDRFRiwNCisgICAgMHhEODRBLCAweERDQUIsIDB4NDRGNSwgMHhEODRBLCAweEREOEYsIDB4NDRGOSwgMHhEODRBLCAweERFQjgsIDB4NDUwMywNCisgICAgMHhEODRBLCAweERGNDYsIDB4NDUxMCwgMHhEODRBLCAweERGNEYsIDB4NDUwNywgMHhEODRBLCAweERGNTAsIDB4NDUwOCwNCisgICAgMHhEODRBLCAweERGQTYsIDB4NDUxMywgMHhEODRCLCAweERDMUQsIDB4NDUxMiwgMHhEODRCLCAweERDMjQsIDB4NDUxNiwNCisgICAgMHhEODRCLCAweERERTEsIDB4NDUyRSwgMHhEODRCLCAweERFNDIsIDB4NEU5QywgMHhEODRCLCAweERGRUIsIDB4NEVBMiwNCisgICAgMHhEODRDLCAweEREQjYsIDB4NDU1MCwgMHhEODRDLCAweEREQzMsIDB4NDU0RSwgMHhEODRDLCAweEREQzQsIDB4NDFGOCwNCisgICAgMHhEODRDLCAweERERjUsIDB4NDU0RiwgMHhEODRDLCAweERGNzIsIDB4NDU2MSwgMHhEODRDLCAweERGRDAsIDB4NDU2OCwNCisgICAgMHhEODRDLCAweERGRDIsIDB4NDU2NCwgMHhEODRDLCAweERGRDMsIDB4NDU2MywgMHhEODRDLCAweERGRDUsIDB4NDU2QSwNCisgICAgMHhEODRDLCAweERGREEsIDB4NDU2QywgMHhEODRDLCAweERGREYsIDB4NDU2RSwgMHhEODRDLCAweERGRTQsIDB4NDU2OSwNCisgICAgMHhEODRDLCAweERGRkUsIDB4M0MzRSwgMHhEODRELCAweERDNEEsIDB4NDU3NiwgMHhEODRELCAweERDNEIsIDB4NDU3OCwNCisgICAgMHhEODRELCAweERDNTEsIDB4NDU3NywgMHhEODRELCAweERDNjUsIDB4NDU3QywgMHhEODRELCAweERDRTQsIDB4NDU5NiwNCisgICAgMHhEODRELCAweERENUEsIDB4NDU5NywgMHhEODRELCAweEREOTQsIDB4NDVBMywgMHhEODRELCAweEREQzQsIDB4NDIwOSwNCisgICAgMHhEODRELCAweERFMzgsIDB4NDVCMywgMHhEODRELCAweERFMzksIDB4NDVCMSwgMHhEODRELCAweERFM0EsIDB4M0MyMSwNCisgICAgMHhEODRELCAweERFNDcsIDB4NDVCMiwgMHhEODRELCAweERGMEMsIDB4NDVDNywgMHhEODRELCAweERGMUMsIDB4NDVCRSwNCisgICAgMHhEODRELCAweERGM0YsIDB4NDIxMiwgMHhEODRELCAweERGNjMsIDB4NDIxNCwgMHhEODRELCAweERGNjQsIDB4NDVDQiwNCisgICAgMHhEODRELCAweERGRTcsIDB4NDVEMywgMHhEODRELCAweERGRkYsIDB4NDVEMiwgMHhEODRFLCAweERDMjQsIDB4NDVEOCwNCisgICAgMHhEODRFLCAweERDM0QsIDB4NDVERCwgMHhEODRFLCAweERFOTgsIDB4NDVFOSwgMHhEODRGLCAweERDN0YsIDB4NDVGNiwNCisgICAgMHhEODRGLCAweERDQkUsIDB4MzdENSwgMHhEODRGLCAweERDRkUsIDB4MzY1MCwgMHhEODRGLCAweEREMDAsIDB4NDYwNSwNCisgICAgMHhEODRGLCAweEREMEUsIDB4NDdEQSwgMHhEODRGLCAweERENDAsIDB4NDYxNiwgMHhEODRGLCAweERERDMsIDB4NDYxOSwNCisgICAgMHhEODRGLCAweERERjksIDB4NDYxOCwgMHhEODRGLCAweERERkEsIDB4NDYxNywgMHhEODRGLCAweERGN0UsIDB4NDYzRiwNCisgICAgMHhEODUwLCAweERDNEIsIDB4NEVDOCwgMHhEODUwLCAweERDOTYsIDB4NDY0RSwgMHhEODUwLCAweEREMDMsIDB4NDY1MywNCisgICAgMHhEODUwLCAweEREQzYsIDB4NDY1RiwgMHhEODUwLCAweERERkUsIDB4NDY2MiwgMHhEODUwLCAweERFRUUsIDB4MzdDQSwNCisgICAgMHhEODUwLCAweERGQkMsIDB4NDY3NywgMHhEODUwLCAweERGRDAsIDB4MUU5RSwgMHhEODUxLCAweERFMjksIDB4NDY4MSwNCisgICAgMHhEODUxLCAweERFQTUsIDB4NDY4NywgMHhEODUxLCAweERGRjEsIDB4NDI0QSwgMHhEODUyLCAweERDOTYsIDB4NDY5RCwNCisgICAgMHhEODUyLCAweERFNEQsIDB4NDZCOCwgMHhEODUyLCAweERGNTYsIDB4NDZDNSwgMHhEODUyLCAweERGNkYsIDB4NDZDNywNCisgICAgMHhEODUzLCAweERDMTYsIDB4NDZDQywgMHhEODUzLCAweEREMTQsIDB4MzZBQiwgMHhEODUzLCAweERFMDQsIDB4NEU1QSwNCisgICAgMHhEODUzLCAweERFMEUsIDB4NDZFRSwgMHhEODUzLCAweERFMzcsIDB4NDZGMiwgMHhEODUzLCAweERFNkEsIDB4NDZGNywNCisgICAgMHhEODUzLCAweERFOEIsIDB4NDZGQSwgMHhEODUzLCAweERGRjIsIDB4NEU1QiwgMHhEODU0LCAweERDNEEsIDB4NDcwNSwNCisgICAgMHhEODU0LCAweERDNTUsIDB4NDcwNywgMHhEODU0LCAweEREMjIsIDB4NDcwOSwgMHhEODU0LCAweEREQTksIDB4NDcwRSwNCisgICAgMHhEODU0LCAweEREQ0QsIDB4NDcxMSwgMHhEODU0LCAweERERTUsIDB4NDcxMCwgMHhEODU0LCAweERFMUUsIDB4NDcxMywNCisgICAgMHhEODU0LCAweERFNEMsIDB4NDcxNSwgMHhEODU1LCAweERDMkUsIDB4NDcyMSwgMHhEODU1LCAweERDOEUsIDB4NDI2RCwNCisgICAgMHhEODU1LCAweERDRDksIDB4NDcyOSwgMHhEODU1LCAweEREMEUsIDB4NDI3MSwgMHhEODU1LCAweEREQTcsIDB4NDczNSwNCisgICAgMHhEODU1LCAweERFN0YsIDB4MzZGQiwgMHhEODU1LCAweERGNzEsIDB4NDI3QSwgMHhEODU1LCAweERGQTksIDB4NDc0OCwNCisgICAgMHhEODU1LCAweERGQjQsIDB4NDc0OSwgMHhEODU2LCAweERDNzQsIDB4MURGNiwgMHhEODU2LCAweEREQzQsIDB4NDI4MCwNCisgICAgMHhEODU2LCAweEREQ0MsIDB4NEU5MCwgMHhEODU2LCAweERERDQsIDB4NDc1QywgMHhEODU2LCAweERFRTMsIDB4NDc2NSwNCisgICAgMHhEODU2LCAweERFRTQsIDB4NDc2NCwgMHhEODU2LCAweERFRjEsIDB4NDc2NiwgMHhEODU2LCAweERGQjIsIDB4NDc3NSwNCisgICAgMHhEODU3LCAweERDNEIsIDB4NDc3RSwgMHhEODU3LCAweERDNjQsIDB4NDc3RiwgMHhEODU3LCAweEREQTEsIDB4NDI4OSwNCisgICAgMHhEODU3LCAweERFMkUsIDB4NDc4RSwgMHhEODU3LCAweERFNTYsIDB4NDc4RiwgMHhEODU3LCAweERFNjIsIDB4NDc5MiwNCisgICAgMHhEODU3LCAweERFNjUsIDB4NDc5MCwgMHhEODU3LCAweERFQzIsIDB4NDc5NywgMHhEODU3LCAweERFRDgsIDB4NDc5NSwNCisgICAgMHhEODU3LCAweERFRTgsIDB4NDc5OSwgMHhEODU3LCAweERGMjMsIDB4NDc5QSwgMHhEODU3LCAweERGNUMsIDB4NDc5QywNCisgICAgMHhEODU3LCAweERGRDQsIDB4NDdBMywgMHhEODU3LCAweERGRTAsIDB4NDdBMiwgMHhEODU3LCAweERGRkIsIDB4NDdBOSwNCisgICAgMHhEODU4LCAweERDMEMsIDB4NDdBOCwgMHhEODU4LCAweERDMTcsIDB4NDdCMCwgMHhEODU4LCAweERDNjAsIDB4NDdCMywNCisgICAgMHhEODU4LCAweERDRUQsIDB4NDdCRCwgMHhEODU4LCAweERFNzAsIDB4NDdEMSwgMHhEODU4LCAweERFODYsIDB4NDdEMiwNCisgICAgMHhEODU4LCAweERGNEMsIDB4NEY1NywgMHhEODU5LCAweERDMDIsIDB4NDdERSwgMHhEODU5LCAweERFN0UsIDB4NDdGMCwNCisgICAgMHhEODU5LCAweERFQjAsIDB4MzcxNCwgMHhEODU5LCAweERGMUQsIDB4NDdGRSwgMHhEODVBLCAweERDREQsIDB4NDgwQywNCisgICAgMHhEODVBLCAweERDRUEsIDB4NDgwRSwgMHhEODVBLCAweERENTEsIDB4MzU0RSwgMHhEODVBLCAweERENkYsIDB4NDgxMiwNCisgICAgMHhEODVBLCAweEREOTksIDB4MzczNiwgMHhEODVBLCAweEREREQsIDB4NDgxNCwgMHhEODVBLCAweERFMUUsIDB4NDgxNywNCisgICAgMHhEODVBLCAweERFNTgsIDB4NDgxQiwgMHhEODVBLCAweERFOEMsIDB4NDgxRiwgMHhEODVBLCAweERFQjcsIDB4NDgyMiwNCisgICAgMHhEODVBLCAweERFRkYsIDB4NDJBNywgMHhEODVCLCAweERDMjksIDB4NDQ0NiwgMHhEODVCLCAweERDNzMsIDB4NDg0QSwNCisgICAgMHhEODVCLCAweERDOUUsIDB4NEVFRSwgMHhEODVCLCAweERDREQsIDB4NDg1MywgMHhEODVCLCAweERFNDAsIDB4NDJDMSwNCisgICAgMHhEODVCLCAweERFNjUsIDB4NDg2MCwgMHhEODVCLCAweERGOTQsIDB4NDg3MCwgMHhEODVCLCAweERGRjYsIDB4NDg3QSwNCisgICAgMHhEODVCLCAweERGRjcsIDB4NDg3QiwgMHhEODVCLCAweERGRjgsIDB4NDg3OSwgMHhEODVDLCAweERDRjQsIDB4NDJDRiwNCisgICAgMHhEODVDLCAweEREMEQsIDB4NDg4QiwgMHhEODVDLCAweEREMzksIDB4NDg4RSwgMHhEODVDLCAweERGREEsIDB4NDhCMywNCisgICAgMHhEODVDLCAweERGREIsIDB4NDhCMiwgMHhEODVDLCAweERGRkUsIDB4NDhCOSwgMHhEODVELCAweERDMTAsIDB4NDhCQywNCisgICAgMHhEODVELCAweERDNDksIDB4NDhDMCwgMHhEODVELCAweERFMTQsIDB4NDhDRSwgMHhEODVELCAweERFMTUsIDB4NDhDRCwNCisgICAgMHhEODVELCAweERFMzEsIDB4NDhEMCwgMHhEODVELCAweERFODQsIDB4NDJERCwgMHhEODVELCAweERFOTMsIDB4NDhENSwNCisgICAgMHhEODVELCAweERGMEUsIDB4NDhEQSwgMHhEODVELCAweERGMjMsIDB4NDhEQywgMHhEODVELCAweERGNTIsIDB4NDhFMCwNCisgICAgMHhEODVFLCAweEREODUsIDB4NDhGMCwgMHhEODVFLCAweEREQjQsIDB4NEVBNSwgMHhEODVFLCAweERFODQsIDB4NDhGQywNCisgICAgMHhEODVFLCAweERGQjMsIDB4NDkwQiwgMHhEODVFLCAweERGQkUsIDB4NDkwRCwgMHhEODVFLCAweERGQzcsIDB4NDkwRSwNCisgICAgMHhEODVGLCAweERDM0MsIDB4NEVGQywgMHhEODVGLCAweERDQjgsIDB4NDkxNCwgMHhEODVGLCAweERENzMsIDB4NEU1QywNCisgICAgMHhEODVGLCAweEREQTAsIDB4NDkxQywgMHhEODVGLCAweERFMTAsIDB4NDkxRSwgMHhEODVGLCAweERGQjcsIDB4MzY0QSwNCisgICAgMHhEODYwLCAweERDOEEsIDB4NDkyNywgMHhEODYwLCAweERDQkIsIDB4NDkyRCwgMHhEODYwLCAweERFNzcsIDB4NDJGNCwNCisgICAgMHhEODYwLCAweERFODIsIDB4NDkzOSwgMHhEODYwLCAweERFRjMsIDB4NDkzQiwgMHhEODYwLCAweERGQ0QsIDB4NDJGQSwNCisgICAgMHhEODYxLCAweERDMEMsIDB4NDk0MiwgMHhEODYxLCAweERDNTUsIDB4NDk0NSwgMHhEODYxLCAweERENkIsIDB4NDk1MiwNCisgICAgMHhEODYxLCAweEREQzgsIDB4NDk1NSwgMHhEODYxLCAweEREQzksIDB4NDk1NiwgMHhEODYxLCAweERFRDcsIDB4NDk2MCwNCisgICAgMHhEODYxLCAweERFRkEsIDB4NDk2MywgMHhEODYyLCAweERENDYsIDB4NDk3QywgMHhEODYyLCAweERENDksIDB4NDk3QiwNCisgICAgMHhEODYyLCAweERENkIsIDB4NDk4MSwgMHhEODYyLCAweEREODcsIDB4MzdBRCwgMHhEODYyLCAweEREODgsIDB4NDk4OCwNCisgICAgMHhEODYyLCAweEREQkEsIDB4NDk5MiwgMHhEODYyLCAweEREQkIsIDB4NDk5MywgMHhEODYyLCAweERFMUUsIDB4NDk5QiwNCisgICAgMHhEODYyLCAweERFMjksIDB4NDk5QywgMHhEODYyLCAweERFNDMsIDB4NDlBMCwgMHhEODYyLCAweERFNzEsIDB4NDk5RiwNCisgICAgMHhEODYyLCAweERFOTksIDB4NDlBNywgMHhEODYyLCAweERFQ0QsIDB4NDlBOCwgMHhEODYyLCAweERFREQsIDB4NDlBRiwNCisgICAgMHhEODYyLCAweERFRTQsIDB4NDlBRSwgMHhEODYyLCAweERGQzEsIDB4NDlCQSwgMHhEODYyLCAweERGRUYsIDB4NDlCQiwNCisgICAgMHhEODYzLCAweERDREQsIDB4MUREOSwgMHhEODYzLCAweEREMTAsIDB4NDlDMiwgMHhEODYzLCAweERENzEsIDB4NDlDMywNCisgICAgMHhEODYzLCAweERERkIsIDB4NDlDNSwgMHhEODYzLCAweERFMTcsIDB4MzdCMCwgMHhEODYzLCAweERFMUYsIDB4NDlDNiwNCisgICAgMHhEODYzLCAweERFMzYsIDB4NDlDQSwgMHhEODYzLCAweERFODksIDB4NDlDRCwgMHhEODYzLCAweERFRUIsIDB4NDlDRiwNCisgICAgMHhEODYzLCAweERFRjYsIDB4MURGOSwgMHhEODYzLCAweERGMzIsIDB4NDlEMSwgMHhEODYzLCAweERGRjgsIDB4NDlENywNCisgICAgMHhEODY0LCAweERFQTAsIDB4NDlFNSwgMHhEODY0LCAweERFQjEsIDB4NDlFNiwgMHhEODY1LCAweERDOTAsIDB4NDlGNywNCisgICAgMHhEODY1LCAweEREQ0YsIDB4NEEwMCwgMHhEODY1LCAweERFN0YsIDB4MzYxOSwgMHhEODY1LCAweERFRjAsIDB4NEEwRiwNCisgICAgMHhEODY1LCAweERGMTksIDB4NEExMiwgMHhEODY1LCAweERGNTAsIDB4NEExNiwgMHhEODY2LCAweERDQzYsIDB4NEEyNywNCisgICAgMHhEODY2LCAweERFNzIsIDB4NEEzOSwgMHhEODY3LCAweERENEIsIDB4MzU5NSwgMHhEODY3LCAweEREREIsIDB4NEE1MiwNCisgICAgMHhEODY3LCAweERFMTUsIDB4NEE1QywgMHhEODY3LCAweERFM0QsIDB4NEY1QiwgMHhEODY3LCAweERFNDksIDB4NEE1RSwNCisgICAgMHhEODY3LCAweERFOEEsIDB4NEE1RCwgMHhEODY3LCAweERFQzQsIDB4NEE2NiwgMHhEODY3LCAweERFREIsIDB4NEE2RSwNCisgICAgMHhEODY3LCAweERFRTksIDB4NEE2QiwgMHhEODY3LCAweERGQ0UsIDB4NEE3RiwgMHhEODY3LCAweERGRDcsIDB4NEE3RiwNCisgICAgMHhEODY4LCAweERDMUEsIDB4NEE4NSwgMHhEODY4LCAweERDMkYsIDB4NEE4MywgMHhEODY4LCAweERDODIsIDB4NEE4QywNCisgICAgMHhEODY4LCAweERDRjksIDB4NEE4QiwgMHhEODY4LCAweEREOTAsIDB4NDM0QiwgMHhEODY4LCAweERFQjIsIDB4NEU2OCwNCisgICAgMHhEODY4LCAweERGOEMsIDB4NEFBNSwgMHhEODY5LCAweERDMzcsIDB4NEFBNywgMHhEODY5LCAweERERjEsIDB4NEFCMywNCisgICAgMHhEODY5LCAweERFMDIsIDB4NEFCNSwgMHhEODY5LCAweERFMUEsIDB4NEY1QywgMHhEODY5LCAweERFQjIsIDB4NEFCOSwNCisgICAgMHhEODdFLCAweERDMDQsIDB4M0MxQywgMHhEODdFLCAweERDMEYsIDB4MUU4NiwgMHhEODdFLCAweERDMTUsIDB4NEU1RCwNCisgICAgMHhEODdFLCAweERDMTgsIDB4MUU4OSwgMHhEODdFLCAweERDMUEsIDB4MzY4MiwgMHhEODdFLCAweERDMjIsIDB4MzU3NCwNCisgICAgMHhEODdFLCAweERDMjgsIDB4MzVFRiwgMHhEODdFLCAweERDMkMsIDB4MzcxRCwgMHhEODdFLCAweERDMzMsIDB4MzU5NywNCisgICAgMHhEODdFLCAweERDM0YsIDB4MzVGNywgMHhEODdFLCAweERDNDYsIDB4NEU1RSwgMHhEODdFLCAweERDNTIsIDB4MzYxMSwNCisgICAgMHhEODdFLCAweERDNjIsIDB4MzZBRSwgMHhEODdFLCAweERDNkQsIDB4MzcyOSwgMHhEODdFLCAweERDNzMsIDB4MzYwOCwNCisgICAgMHhEODdFLCAweERDNzcsIDB4MUU0QSwgMHhEODdFLCAweERDODQsIDB4MUUzNiwgMHhEODdFLCAweERDOTksIDB4NEU1RiwNCisgICAgMHhEODdFLCAweERDOUEsIDB4MzY2OCwgMHhEODdFLCAweERDQTYsIDB4NEU2MCwgMHhEODdFLCAweERDQUMsIDB4MzVCNiwNCisgICAgMHhEODdFLCAweERDQjIsIDB4MzYyQiwgMHhEODdFLCAweERDQjYsIDB4MzczMSwgMHhEODdFLCAweERDRDMsIDB4MUU4OCwNCisgICAgMHhEODdFLCAweERDREIsIDB4MzczQywgMHhEODdFLCAweERDREMsIDB4MUUwRiwgMHhEODdFLCAweERDRTEsIDB4MzdEMywNCisgICAgMHhEODdFLCAweERDRTUsIDB4NEU2MSwgMHhEODdFLCAweERDRUEsIDB4MzU2RiwgMHhEODdFLCAweERDRUQsIDB4MURGMSwNCisgICAgMHhEODdFLCAweERDRkMsIDB4MzU1OCwgMHhEODdFLCAweEREMDMsIDB4MzVDOCwgMHhEODdFLCAweEREMEIsIDB4MzVFOSwNCisgICAgMHhEODdFLCAweEREMEYsIDB4MzY2QywgMHhEODdFLCAweEREMUEsIDB4MzY1QywgMHhEODdFLCAweEREMjAsIDB4MUU5RiwNCisgICAgMHhEODdFLCAweEREMjEsIDB4MzVGMSwgMHhEODdFLCAweERENDUsIDB4MzQyRCwgMHhEODdFLCAweERENDcsIDB4MzYxRSwNCisgICAgMHhEODdFLCAweERENkMsIDB4Mzc2NCwgMHhEODdFLCAweEREOTUsIDB4MzU2NiwgMHhEODdFLCAweERERDAsIDB4MzZGNCwNCisgICAgMHhEODdFLCAweEREREUsIDB4NEU2MiwgMHhEODdFLCAweEREREYsIDB4MzZGNSwgMHhEODdFLCAweERERjQsIDB4M0JBNSwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvVW5pSklTLVVURjE2LVZfNS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL1VuaUpJUy1VVEYxNi1WXzUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODNjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL1VuaUpJUy1VVEYxNi1WXzUuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9VbmlKSVNfVVRGMTZfVl81WzI4OSAqIDJdID0gew0KKyAgICAweDAwQjAsIDB4MjA0RCwgMHgyMDEwLCAweDFFRDUsIDB4MjAxNSwgMHgxRUQ0LCAweDIwMTYsIDB4MUVENywNCisgICAgMHgyMDI1LCAweDFFREEsIDB4MjAyNiwgMHgxRUQ5LCAweDIwMzIsIDB4MjA1MSwgMHgyMDMzLCAweDIwNUIsDQorICAgIDB4MjE5MCwgMHgwMkUyLCAweDIxOTEsIDB4MDJFMCwgMHgyMTkyLCAweDAyRTMsIDB4MjE5MywgMHgwMkUxLA0KKyAgICAweDIxQzQsIDB4MjA3NywgMHgyMUM1LCAweDIwNzYsIDB4MjFDNiwgMHgyMDc4LCAweDIxRTYsIDB4MUY0QywNCisgICAgMHgyMUU3LCAweDFGNEUsIDB4MjFFOCwgMHgxRjRCLCAweDIxRTksIDB4MUY0RCwgMHgyMzlCLCAweDJGNzQsDQorICAgIDB4MjM5QywgMHgyRjg4LCAweDIzOUQsIDB4MkY3MywgMHgyMzlFLCAweDJGNzYsIDB4MjM5RiwgMHgyRjg4LA0KKyAgICAweDIzQTAsIDB4MkY3NSwgMHgyM0ExLCAweDJGN0MsIDB4MjNBMiwgMHgyRjg4LCAweDIzQTMsIDB4MkY3QiwNCisgICAgMHgyM0E0LCAweDJGN0UsIDB4MjNBNSwgMHgyRjg4LCAweDIzQTYsIDB4MkY3RCwgMHgyM0E3LCAweDFGRTgsDQorICAgIDB4MjNBOCwgMHgxRkU3LCAweDIzQTksIDB4MUZFNiwgMHgyM0FBLCAweDJGODgsIDB4MjNBQiwgMHgxRkVDLA0KKyAgICAweDIzQUMsIDB4MUZFQiwgMHgyM0FELCAweDFGRUEsIDB4MjNCMCwgMHgzRkRFLCAweDIzQjEsIDB4M0ZERiwNCisgICAgMHgyNTAwLCAweDFEMzksIDB4MjUwMSwgMHgxRDNBLCAweDI1MDIsIDB4MUQzNywgMHgyNTAzLCAweDFEMzgsDQorICAgIDB4MjUwNCwgMHgxRDNELCAweDI1MDUsIDB4MUQzRSwgMHgyNTA2LCAweDFEM0IsIDB4MjUwNywgMHgxRDNDLA0KKyAgICAweDI1MDgsIDB4MUQ0MSwgMHgyNTA5LCAweDFENDIsIDB4MjUwQSwgMHgxRDNGLCAweDI1MEIsIDB4MUQ0MCwNCisgICAgMHgyNTBDLCAweDFENDcsIDB4MjUwRCwgMHgxRDQ5LCAweDI1MEUsIDB4MUQ0OCwgMHgyNTBGLCAweDFENEEsDQorICAgIDB4MjUxMCwgMHgxRDRGLCAweDI1MTEsIDB4MUQ1MSwgMHgyNTEyLCAweDFENTAsIDB4MjUxMywgMHgxRDUyLA0KKyAgICAweDI1MTQsIDB4MUQ0MywgMHgyNTE1LCAweDFENDUsIDB4MjUxNiwgMHgxRDQ0LCAweDI1MTcsIDB4MUQ0NiwNCisgICAgMHgyNTE4LCAweDFENEIsIDB4MjUxOSwgMHgxRDRELCAweDI1MUEsIDB4MUQ0QywgMHgyNTFCLCAweDFENEUsDQorICAgIDB4MjUxQywgMHgxRDYzLCAweDI1MUQsIDB4MUQ2NywgMHgyNTFFLCAweDFENjUsIDB4MjUxRiwgMHgxRDY0LA0KKyAgICAweDI1MjAsIDB4MUQ2NiwgMHgyNTIxLCAweDFENjksIDB4MjUyMiwgMHgxRDY4LCAweDI1MjMsIDB4MUQ2QSwNCisgICAgMHgyNTI0LCAweDFENkIsIDB4MjUyNSwgMHgxRDZGLCAweDI1MjYsIDB4MUQ2RCwgMHgyNTI3LCAweDFENkMsDQorICAgIDB4MjUyOCwgMHgxRDZFLCAweDI1MjksIDB4MUQ3MSwgMHgyNTJBLCAweDFENzAsIDB4MjUyQiwgMHgxRDcyLA0KKyAgICAweDI1MkMsIDB4MUQ1QiwgMHgyNTJELCAweDFENUQsIDB4MjUyRSwgMHgxRDVFLCAweDI1MkYsIDB4MUQ1RiwNCisgICAgMHgyNTMwLCAweDFENUMsIDB4MjUzMSwgMHgxRDYwLCAweDI1MzIsIDB4MUQ2MSwgMHgyNTMzLCAweDFENjIsDQorICAgIDB4MjUzNCwgMHgxRDUzLCAweDI1MzUsIDB4MUQ1NSwgMHgyNTM2LCAweDFENTYsIDB4MjUzNywgMHgxRDU3LA0KKyAgICAweDI1MzgsIDB4MUQ1NCwgMHgyNTM5LCAweDFENTgsIDB4MjUzQSwgMHgxRDU5LCAweDI1M0IsIDB4MUQ1QSwNCisgICAgMHgyNTNELCAweDFENzcsIDB4MjUzRSwgMHgxRDc4LCAweDI1M0YsIDB4MUQ3OSwgMHgyNTQwLCAweDFENzUsDQorICAgIDB4MjU0MSwgMHgxRDc0LCAweDI1NDIsIDB4MUQ3NiwgMHgyNTQzLCAweDFEN0IsIDB4MjU0NCwgMHgxRDdELA0KKyAgICAweDI1NDUsIDB4MUQ3QSwgMHgyNTQ2LCAweDFEN0MsIDB4MjU0NywgMHgxRDgxLCAweDI1NDgsIDB4MUQ4MCwNCisgICAgMHgyNTQ5LCAweDFEN0UsIDB4MjU0QSwgMHgxRDdGLCAweDI2MUMsIDB4MjAxRCwgMHgyNjFELCAweDIwMUIsDQorICAgIDB4MjYxRSwgMHgyMDFFLCAweDI2MUYsIDB4MjAxQywgMHgyNzAyLCAweDJGOTIsIDB4MjdBMSwgMHgyMDExLA0KKyAgICAweDMwMDEsIDB4MUVDRiwgMHgzMDAyLCAweDFFRDAsIDB4MzAwOCwgMHgxRUUzLCAweDMwMDksIDB4MUVFNCwNCisgICAgMHgzMDBBLCAweDFFRTUsIDB4MzAwQiwgMHgxRUU2LCAweDMwMEMsIDB4MUVFNywgMHgzMDBELCAweDFFRTgsDQorICAgIDB4MzAwRSwgMHgxRUU5LCAweDMwMEYsIDB4MUVFQSwgMHgzMDEwLCAweDFFRUIsIDB4MzAxMSwgMHgxRUVDLA0KKyAgICAweDMwMTQsIDB4MUVERCwgMHgzMDE1LCAweDFFREUsIDB4MzAxNiwgMHgzRkM5LCAweDMwMTcsIDB4M0ZDQSwNCisgICAgMHgzMDE4LCAweDJGNkIsIDB4MzAxOSwgMHgyRjZDLCAweDMwMUMsIDB4MUVENiwgMHgzMDFELCAweDFGMTQsDQorICAgIDB4MzAxRiwgMHgxRjE1LCAweDMwM0IsIDB4MkY0QiwgMHgzMDQxLCAweDFFRUUsIDB4MzA0MywgMHgxRUVGLA0KKyAgICAweDMwNDUsIDB4MUVGMCwgMHgzMDQ3LCAweDFFRjEsIDB4MzA0OSwgMHgxRUYyLCAweDMwNjMsIDB4MUVGMywNCisgICAgMHgzMDgzLCAweDFFRjQsIDB4MzA4NSwgMHgxRUY1LCAweDMwODcsIDB4MUVGNiwgMHgzMDhFLCAweDFFRjcsDQorICAgIDB4MzA5NSwgMHgyMDQ4LCAweDMwOTYsIDB4MjA0OSwgMHgzMDlCLCAweDIwNTAsIDB4MzA5QywgMHgyMDRGLA0KKyAgICAweDMwQTAsIDB4M0ZDQiwgMHgzMEExLCAweDFFRjgsIDB4MzBBMywgMHgxRUY5LCAweDMwQTUsIDB4MUVGQSwNCisgICAgMHgzMEE3LCAweDFFRkIsIDB4MzBBOSwgMHgxRUZDLCAweDMwQzMsIDB4MUVGRCwgMHgzMEUzLCAweDFFRkUsDQorICAgIDB4MzBFNSwgMHgxRUZGLCAweDMwRTcsIDB4MUYwMCwgMHgzMEVFLCAweDFGMDEsIDB4MzBGNSwgMHgxRjAyLA0KKyAgICAweDMwRjYsIDB4MUYwMywgMHgzMEZDLCAweDFFRDMsIDB4MzFGMCwgMHgzRkNELCAweDMxRjEsIDB4M0ZDRSwNCisgICAgMHgzMUYyLCAweDNGQ0YsIDB4MzFGMywgMHgzRkQwLCAweDMxRjQsIDB4M0ZEMSwgMHgzMUY1LCAweDNGRDIsDQorICAgIDB4MzFGNiwgMHgzRkQzLCAweDMxRjcsIDB4M0ZENCwgMHgzMUY4LCAweDNGRDUsIDB4MzFGOSwgMHgzRkQ2LA0KKyAgICAweDMxRkEsIDB4M0ZEOCwgMHgzMUZCLCAweDNGRDksIDB4MzFGQywgMHgzRkRBLCAweDMxRkQsIDB4M0ZEQiwNCisgICAgMHgzMUZFLCAweDNGREMsIDB4MzFGRiwgMHgzRkRELCAweDMzMDAsIDB4MjA5RSwgMHgzMzAxLCAweDJFQjYsDQorICAgIDB4MzMwMiwgMHgyRUI3LCAweDMzMDMsIDB4MjA5MiwgMHgzMzA0LCAweDJFQjgsIDB4MzMwNSwgMHgyMDhELA0KKyAgICAweDMzMDYsIDB4MkVCOSwgMHgzMzA3LCAweDJFQkQsIDB4MzMwOCwgMHgyRUJCLCAweDMzMDksIDB4MkVDMCwNCisgICAgMHgzMzBBLCAweDJFQkUsIDB4MzMwQiwgMHgyRUMyLCAweDMzMEMsIDB4MkVDNCwgMHgzMzBELCAweDFGMEUsDQorICAgIDB4MzMwRSwgMHgyRUM1LCAweDMzMEYsIDB4MkVDNiwgMHgzMzEwLCAweDJFQzcsIDB4MzMxMSwgMHgyRUM4LA0KKyAgICAweDMzMTIsIDB4MkVDOSwgMHgzMzEzLCAweDJFQ0EsIDB4MzMxNCwgMHgxRjA1LCAweDMzMTUsIDB4MjA5NCwNCisgICAgMHgzMzE2LCAweDIwOEEsIDB4MzMxNywgMHgyRUNDLCAweDMzMTgsIDB4MjA5MywgMHgzMzE5LCAweDJFQ0UsDQorICAgIDB4MzMxQSwgMHgyRUQwLCAweDMzMUIsIDB4MkVEMSwgMHgzMzFDLCAweDJFRDIsIDB4MzMxRCwgMHgyRUQzLA0KKyAgICAweDMzMUUsIDB4MjBBMSwgMHgzMzFGLCAweDJFRDQsIDB4MzMyMCwgMHgyRUQ1LCAweDMzMjEsIDB4MkVENiwNCisgICAgMHgzMzIyLCAweDIwODksIDB4MzMyMywgMHgyMDlDLCAweDMzMjQsIDB4MkVENywgMHgzMzI1LCAweDJFRDksDQorICAgIDB4MzMyNiwgMHgxRjBGLCAweDMzMjcsIDB4MUYwOSwgMHgzMzI4LCAweDJFREMsIDB4MzMyOSwgMHgyRURELA0KKyAgICAweDMzMkEsIDB4MjBBNCwgMHgzMzJCLCAweDFGMTEsIDB4MzMyRCwgMHgyRURGLCAweDMzMkUsIDB4MkVFMiwNCisgICAgMHgzMzJGLCAweDJFRTMsIDB4MzMzMCwgMHgyRUU0LCAweDMzMzEsIDB4MjBBNiwgMHgzMzMyLCAweDJFRTUsDQorICAgIDB4MzMzMywgMHgyMDhFLCAweDMzMzQsIDB4MkVFOCwgMHgzMzM1LCAweDJFRTksIDB4MzMzNiwgMHgxRjBCLA0KKyAgICAweDMzMzcsIDB4MkVFRSwgMHgzMzM4LCAweDJFRjAsIDB4MzMzOSwgMHgyMDk3LCAweDMzM0EsIDB4MkVGMSwNCisgICAgMHgzMzNCLCAweDIwOUQsIDB4MzMzQywgMHgyRUVBLCAweDMzM0QsIDB4MkVGMiwgMHgzMzNFLCAweDJFRjQsDQorICAgIDB4MzMzRiwgMHgyRUY1LCAweDMzNDAsIDB4MkVGNiwgMHgzMzQxLCAweDJFRjMsIDB4MzM0MiwgMHgyMDlCLA0KKyAgICAweDMzNDMsIDB4MkVGNywgMHgzMzQ0LCAweDJFRjgsIDB4MzM0NSwgMHgyRUY5LCAweDMzNDYsIDB4MkVGQSwNCisgICAgMHgzMzQ3LCAweDIwQTUsIDB4MzM0OCwgMHgyRUZCLCAweDMzNDksIDB4MUYwNCwgMHgzMzRBLCAweDFGMTIsDQorICAgIDB4MzM0QiwgMHgyRUZDLCAweDMzNEMsIDB4MkVGRCwgMHgzMzRELCAweDFGMDcsIDB4MzM0RSwgMHgyMDkxLA0KKyAgICAweDMzNEYsIDB4MkVGRSwgMHgzMzUwLCAweDJFRkYsIDB4MzM1MSwgMHgxRjBDLCAweDMzNTIsIDB4MkYwMiwNCisgICAgMHgzMzUzLCAweDJGMDYsIDB4MzM1NCwgMHgyRjAzLCAweDMzNTUsIDB4MkYwNywgMHgzMzU2LCAweDJGMDgsDQorICAgIDB4MzM1NywgMHgyMDk4LCAweDMzN0YsIDB4MjA4NCwgMHhGRjA4LCAweDFFREIsIDB4RkYwOSwgMHgxRURDLA0KKyAgICAweEZGMEMsIDB4MjA0QywgMHhGRjBFLCAweDIwNTIsIDB4RkYxRCwgMHgxRUVELCAweEZGM0IsIDB4MUVERiwNCisgICAgMHhGRjNELCAweDFFRTAsIDB4RkYzRiwgMHgxRUQyLCAweEZGNUIsIDB4MUVFMSwgMHhGRjVDLCAweDFFRDgsDQorICAgIDB4RkY1RCwgMHgxRUUyLCAweEZGNUUsIDB4MUVENiwgMHhGRjVGLCAweDJGNkQsIDB4RkY2MCwgMHgyRjZFLA0KKyAgICAweEZGRTMsIDB4MUVEMSwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvVl8xLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvVl8xLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWMwMGI2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0phcGFuMS9WXzEuY3BwCkBAIC0wLDAgKzEsMTcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9WXzFbMjcgKiAzXSA9IHsKKyAgICAweDIxMjIsIDB4MjEyMywgMHgxRUNGLCAweDIxMzEsIDB4MjEzMiwgMHgxRUQxLCAweDIxM0MsIDB4MjEzRSwgMHgxRUQzLAorICAgIDB4MjE0MSwgMHgyMTQ1LCAweDFFRDYsIDB4MjE0QSwgMHgyMTVCLCAweDFFREIsIDB4MjE2MSwgMHgyMTYxLCAweDFFRUQsCisgICAgMHgyNDIxLCAweDI0MjEsIDB4MUVFRSwgMHgyNDIzLCAweDI0MjMsIDB4MUVFRiwgMHgyNDI1LCAweDI0MjUsIDB4MUVGMCwKKyAgICAweDI0MjcsIDB4MjQyNywgMHgxRUYxLCAweDI0MjksIDB4MjQyOSwgMHgxRUYyLCAweDI0NDMsIDB4MjQ0MywgMHgxRUYzLAorICAgIDB4MjQ2MywgMHgyNDYzLCAweDFFRjQsIDB4MjQ2NSwgMHgyNDY1LCAweDFFRjUsIDB4MjQ2NywgMHgyNDY3LCAweDFFRjYsCisgICAgMHgyNDZFLCAweDI0NkUsIDB4MUVGNywgMHgyNTIxLCAweDI1MjEsIDB4MUVGOCwgMHgyNTIzLCAweDI1MjMsIDB4MUVGOSwKKyAgICAweDI1MjUsIDB4MjUyNSwgMHgxRUZBLCAweDI1MjcsIDB4MjUyNywgMHgxRUZCLCAweDI1MjksIDB4MjUyOSwgMHgxRUZDLAorICAgIDB4MjU0MywgMHgyNTQzLCAweDFFRkQsIDB4MjU2MywgMHgyNTYzLCAweDFFRkUsIDB4MjU2NSwgMHgyNTY1LCAweDFFRkYsCisgICAgMHgyNTY3LCAweDI1NjcsIDB4MUYwMCwgMHgyNTZFLCAweDI1NkUsIDB4MUYwMSwgMHgyNTc1LCAweDI1NzYsIDB4MUYwMiwKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL2NtYXBzX2phcGFuMS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvSmFwYW4xL2NtYXBzX2phcGFuMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBhNDdjYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9KYXBhbjEvY21hcHNfamFwYW4xLmNwcApAQCAtMCwwICsxLDYyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcmVzb3VyY2UuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCIKKyNpbmNsdWRlICIuLi8uLi9mcGRmX2ZvbnQvZm9udF9pbnQuaCIKKyNpbmNsdWRlICIuLi9jbWFwX2ludC5oIgorZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfODNwdl9SS1NKX0hfMVtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfOTBtc19SS1NKX0hfMltdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfOTBtc19SS1NKX1ZfMltdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfOTBtc3BfUktTSl9IXzJbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQXzkwbXNwX1JLU0pfVl8yW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF85MHB2X1JLU0pfSF8xW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9BZGRfUktTSl9IXzFbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0FkZF9SS1NKX1ZfMVtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfRVVDX0hfMVtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfRVVDX1ZfMVtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfRXh0X1JLU0pfSF8yW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9FeHRfUktTSl9WXzJbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0hfMVtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfVl8xW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9VbmlKSVNfVUNTMl9IXzRbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX1VuaUpJU19VQ1MyX1ZfNFtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfVW5pSklTX1VDUzJfSFdfSF80W107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9VbmlKSVNfVUNTMl9IV19WXzRbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX1VuaUpJU19VVEYxNl9IXzBbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX1VuaUpJU19VVEYxNl9IXzBfRFdvcmRbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX1VuaUpJU19VVEYxNl9WXzBbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0phcGFuMUNJRDJVbmljb2RlXzRbXTsKK3N0YXRpYyBjb25zdCBGWENNQVBfQ01hcCBnX0ZYQ01BUF9KYXBhbjFfY21hcHNbXSA9IHsKKyAgICB7ICI4M3B2LVJLU0otSCIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfODNwdl9SS1NKX0hfMSwgMjIyLCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIjkwbXMtUktTSi1IIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF85MG1zX1JLU0pfSF8yLCAxNzEsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAwIH0sCisgICAgeyAiOTBtcy1SS1NKLVYiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQXzkwbXNfUktTSl9WXzIsIDc4LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICI5MG1zcC1SS1NKLUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQXzkwbXNwX1JLU0pfSF8yLCAxNzAsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMiB9LAorICAgIHsgIjkwbXNwLVJLU0otViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfOTBtc3BfUktTSl9WXzIsIDc4LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICI5MHB2LVJLU0otSCIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfOTBwdl9SS1NKX0hfMSwgMjYzLCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIkFkZC1SS1NKLUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0FkZF9SS1NKX0hfMSwgNjM1LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIkFkZC1SS1NKLVYiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0FkZF9SS1NKX1ZfMSwgNTcsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIkVVQy1IIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9FVUNfSF8xLCAxMjAsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAwIH0sCisgICAgeyAiRVVDLVYiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0VVQ19WXzEsIDI3LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICJFeHQtUktTSi1IIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9FeHRfUktTSl9IXzIsIDY2NSwgRlhDTUFQX0NNYXA6Ok5vbmUsIE5VTEwsIDAsIC00IH0sCisgICAgeyAiRXh0LVJLU0otViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfRXh0X1JLU0pfVl8yLCAzOSwgRlhDTUFQX0NNYXA6Ok5vbmUsIE5VTEwsIDAsIC0xIH0sCisgICAgeyAiSCIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfSF8xLCAxMTgsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAwIH0sCisgICAgeyAiViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfVl8xLCAyNywgRlhDTUFQX0NNYXA6Ok5vbmUsIE5VTEwsIDAsIC0xIH0sCisgICAgeyAiVW5pSklTLVVDUzItSCIsIEZYQ01BUF9DTWFwOjpTaW5nbGUsIGdfRlhDTUFQX1VuaUpJU19VQ1MyX0hfNCwgOTc3MiwgRlhDTUFQX0NNYXA6Ok5vbmUsIE5VTEwsIDAsIDAgfSwKKyAgICB7ICJVbmlKSVMtVUNTMi1WIiwgRlhDTUFQX0NNYXA6OlNpbmdsZSwgZ19GWENNQVBfVW5pSklTX1VDUzJfVl80LCAyNTEsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIlVuaUpJUy1VQ1MyLUhXLUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX1VuaUpJU19VQ1MyX0hXX0hfNCwgNCwgRlhDTUFQX0NNYXA6Ok5vbmUsIE5VTEwsIDAsIC0yIH0sCisgICAgeyAiVW5pSklTLVVDUzItSFctViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfVW5pSklTX1VDUzJfSFdfVl80LCAxOTksIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIlVuaUpJUy1VVEYxNi1IIiwgRlhDTUFQX0NNYXA6OlNpbmdsZSwgZ19GWENNQVBfVW5pSklTX1VDUzJfSF80LCA5NzcyLCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIlVuaUpJUy1VVEYxNi1WIiwgRlhDTUFQX0NNYXA6OlNpbmdsZSwgZ19GWENNQVBfVW5pSklTX1VDUzJfVl80LCAyNTEsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorfTsKK3ZvaWQgQ1BERl9Nb2R1bGVNZ3I6OkxvYWRFbWJlZGRlZEphcGFuMUNNYXBzKCkKK3sKKyAgICBDUERGX0ZvbnRHbG9iYWxzKiBwRm9udEdsb2JhbHMgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldFBhZ2VNb2R1bGUoKS0+R2V0Rm9udEdsb2JhbHMoKTsKKyAgICBwRm9udEdsb2JhbHMtPm1fRW1iZWRkZWRDaGFyc2V0c1tDSURTRVRfSkFQQU4xXS5tX3BNYXBMaXN0ID0gZ19GWENNQVBfSmFwYW4xX2NtYXBzOworICAgIHBGb250R2xvYmFscy0+bV9FbWJlZGRlZENoYXJzZXRzW0NJRFNFVF9KQVBBTjFdLm1fQ291bnQgPSBzaXplb2YgZ19GWENNQVBfSmFwYW4xX2NtYXBzIC8gc2l6ZW9mIChGWENNQVBfQ01hcCk7CisgICAgcEZvbnRHbG9iYWxzLT5tX0VtYmVkZGVkVG9Vbmljb2Rlc1tDSURTRVRfSkFQQU4xXS5tX3BNYXAgPSBnX0ZYQ01BUF9KYXBhbjFDSUQyVW5pY29kZV80OworICAgIHBGb250R2xvYmFscy0+bV9FbWJlZGRlZFRvVW5pY29kZXNbQ0lEU0VUX0pBUEFOMV0ubV9Db3VudCA9IDE1NDQ0OworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0tvcmVhMS9BZG9iZS1Lb3JlYTEtVUNTMl8yLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvQWRvYmUtS29yZWExLVVDUzJfMi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVmN2E5OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvQWRvYmUtS29yZWExLVVDUzJfMi5jcHAKQEAgLTAsMCArMSwyMzAyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfS29yZWExQ0lEMlVuaWNvZGVfMlsxODM1Ml0gPSB7DQorICAgIDB4RkZGRCwgMHgwMDIwLCAweDAwMjEsIDB4MDAyMiwgMHgwMDIzLCAweDAwMjQsIDB4MDAyNSwgMHgwMDI2LA0KKyAgICAweDAwMjcsIDB4MDAyOCwgMHgwMDI5LCAweDAwMkEsIDB4MDAyQiwgMHgwMDJDLCAweDAwMkQsIDB4MDAyRSwNCisgICAgMHgwMDJGLCAweDAwMzAsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzMsIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsDQorICAgIDB4MDAzNywgMHgwMDM4LCAweDAwMzksIDB4MDAzQSwgMHgwMDNCLCAweDAwM0MsIDB4MDAzRCwgMHgwMDNFLA0KKyAgICAweDAwM0YsIDB4MDA0MCwgMHgwMDQxLCAweDAwNDIsIDB4MDA0MywgMHgwMDQ0LCAweDAwNDUsIDB4MDA0NiwNCisgICAgMHgwMDQ3LCAweDAwNDgsIDB4MDA0OSwgMHgwMDRBLCAweDAwNEIsIDB4MDA0QywgMHgwMDRELCAweDAwNEUsDQorICAgIDB4MDA0RiwgMHgwMDUwLCAweDAwNTEsIDB4MDA1MiwgMHgwMDUzLCAweDAwNTQsIDB4MDA1NSwgMHgwMDU2LA0KKyAgICAweDAwNTcsIDB4MDA1OCwgMHgwMDU5LCAweDAwNUEsIDB4MDA1QiwgMHgwMDVDLCAweDAwNUQsIDB4MDA1RSwNCisgICAgMHgwMDVGLCAweDAwNjAsIDB4MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDA2NCwgMHgwMDY1LCAweDAwNjYsDQorICAgIDB4MDA2NywgMHgwMDY4LCAweDAwNjksIDB4MDA2QSwgMHgwMDZCLCAweDAwNkMsIDB4MDA2RCwgMHgwMDZFLA0KKyAgICAweDAwNkYsIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4MDA3MywgMHgwMDc0LCAweDAwNzUsIDB4MDA3NiwNCisgICAgMHgwMDc3LCAweDAwNzgsIDB4MDA3OSwgMHgwMDdBLCAweDAwN0IsIDB4MDA3QywgMHgwMDdELCAweDAwN0UsDQorICAgIDB4MjBBOSwgMHgyMDEwLCAweDAwQTksIDB4MjEyMiwgMHgyMkVGLCAweDMwMDAsIDB4MzAwMSwgMHgzMDAyLA0KKyAgICAweDAwQjcsIDB4MjAyNSwgMHgyMDI2LCAweDAwQTgsIDB4MzAwMywgMHgyMDEzLCAweDIwMTQsIDB4MjAxNiwNCisgICAgMHhGRjNDLCAweDIyM0MsIDB4MjAxOCwgMHgyMDE5LCAweDIwMUMsIDB4MjAxRCwgMHgzMDE0LCAweDMwMTUsDQorICAgIDB4MzAwOCwgMHgzMDA5LCAweDMwMEEsIDB4MzAwQiwgMHgzMDBDLCAweDMwMEQsIDB4MzAwRSwgMHgzMDBGLA0KKyAgICAweDMwMTAsIDB4MzAxMSwgMHgwMEIxLCAweDAwRDcsIDB4MDBGNywgMHgyMjYwLCAweDIyNjQsIDB4MjI2NSwNCisgICAgMHgyMjFFLCAweDIyMzQsIDB4MDBCMCwgMHgyMDMyLCAweDIwMzMsIDB4MjEwMywgMHgyMTJCLCAweEZGRTAsDQorICAgIDB4RkZFMSwgMHhGRkU1LCAweDI2NDIsIDB4MjY0MCwgMHgyMjIwLCAweDIyQTUsIDB4MjMxMiwgMHgyMjAyLA0KKyAgICAweDIyMDcsIDB4MjI2MSwgMHgyMjUyLCAweDAwQTcsIDB4MjAzQiwgMHgyNjA2LCAweDI2MDUsIDB4MjVDQiwNCisgICAgMHgyNUNGLCAweDI1Q0UsIDB4MjVDNywgMHgyNUM2LCAweDI1QTEsIDB4MjVBMCwgMHgyNUIzLCAweDI1QjIsDQorICAgIDB4MjVCRCwgMHgyNUJDLCAweDIxOTIsIDB4MjE5MCwgMHgyMTkxLCAweDIxOTMsIDB4MjE5NCwgMHgzMDEzLA0KKyAgICAweDIyNkEsIDB4MjI2QiwgMHgyMjFBLCAweDIyM0QsIDB4MjIxRCwgMHgyMjM1LCAweDIyMkIsIDB4MjIyQywNCisgICAgMHgyMjA4LCAweDIyMEIsIDB4MjI4NiwgMHgyMjg3LCAweDIyODIsIDB4MjI4MywgMHgyMjJBLCAweDIyMjksDQorICAgIDB4MjIyNywgMHgyMjI4LCAweEZGRTIsIDB4MjFEMiwgMHgyMUQ0LCAweDIyMDAsIDB4MjIwMywgMHgwMEI0LA0KKyAgICAweDAyREMsIDB4MDJDNywgMHgwMkQ4LCAweDAyREQsIDB4MDJEQSwgMHgwMkQ5LCAweDAwQjgsIDB4MDJEQiwNCisgICAgMHgwMEExLCAweDAwQkYsIDB4MjIzNiwgMHgyMjJFLCAweDIyMTEsIDB4MjIwRiwgMHgwMEE0LCAweDIxMDksDQorICAgIDB4MjAzMCwgMHgyNUMxLCAweDI1QzAsIDB4MjVCNywgMHgyNUI2LCAweDI2NjQsIDB4MjY2MCwgMHgyNjYxLA0KKyAgICAweDI2NjUsIDB4MjY2NywgMHgyNjYzLCAweDIyOTksIDB4MjVDOCwgMHgyNUEzLCAweDI1RDAsIDB4MjVEMSwNCisgICAgMHgyNTkyLCAweDI1QTQsIDB4MjVBNSwgMHgyNUE4LCAweDI1QTcsIDB4MjVBNiwgMHgyNUE5LCAweDI2NjgsDQorICAgIDB4MjYwRiwgMHgyNjBFLCAweDI2MUMsIDB4MjYxRSwgMHgwMEI2LCAweDIwMjAsIDB4MjAyMSwgMHgyMTk1LA0KKyAgICAweDIxOTcsIDB4MjE5OSwgMHgyMTk2LCAweDIxOTgsIDB4MjY2RCwgMHgyNjY5LCAweDI2NkEsIDB4MjY2QywNCisgICAgMHgzMjdGLCAweDMyMUMsIDB4MjExNiwgMHgzM0M3LCAweDIxMjIsIDB4MzNDMiwgMHgzM0Q4LCAweDIxMjEsDQorICAgIDB4RkYwMSwgMHhGRjAyLCAweEZGMDMsIDB4RkYwNCwgMHhGRjA1LCAweEZGMDYsIDB4RkYwNywgMHhGRjA4LA0KKyAgICAweEZGMDksIDB4RkYwQSwgMHhGRjBCLCAweEZGMEMsIDB4RkYwRCwgMHhGRjBFLCAweEZGMEYsIDB4RkYxMCwNCisgICAgMHhGRjExLCAweEZGMTIsIDB4RkYxMywgMHhGRjE0LCAweEZGMTUsIDB4RkYxNiwgMHhGRjE3LCAweEZGMTgsDQorICAgIDB4RkYxOSwgMHhGRjFBLCAweEZGMUIsIDB4RkYxQywgMHhGRjFELCAweEZGMUUsIDB4RkYxRiwgMHhGRjIwLA0KKyAgICAweEZGMjEsIDB4RkYyMiwgMHhGRjIzLCAweEZGMjQsIDB4RkYyNSwgMHhGRjI2LCAweEZGMjcsIDB4RkYyOCwNCisgICAgMHhGRjI5LCAweEZGMkEsIDB4RkYyQiwgMHhGRjJDLCAweEZGMkQsIDB4RkYyRSwgMHhGRjJGLCAweEZGMzAsDQorICAgIDB4RkYzMSwgMHhGRjMyLCAweEZGMzMsIDB4RkYzNCwgMHhGRjM1LCAweEZGMzYsIDB4RkYzNywgMHhGRjM4LA0KKyAgICAweEZGMzksIDB4RkYzQSwgMHhGRjNCLCAweEZGRTYsIDB4RkYzRCwgMHhGRjNFLCAweEZGM0YsIDB4RkY0MCwNCisgICAgMHhGRjQxLCAweEZGNDIsIDB4RkY0MywgMHhGRjQ0LCAweEZGNDUsIDB4RkY0NiwgMHhGRjQ3LCAweEZGNDgsDQorICAgIDB4RkY0OSwgMHhGRjRBLCAweEZGNEIsIDB4RkY0QywgMHhGRjRELCAweEZGNEUsIDB4RkY0RiwgMHhGRjUwLA0KKyAgICAweEZGNTEsIDB4RkY1MiwgMHhGRjUzLCAweEZGNTQsIDB4RkY1NSwgMHhGRjU2LCAweEZGNTcsIDB4RkY1OCwNCisgICAgMHhGRjU5LCAweEZGNUEsIDB4RkY1QiwgMHhGRjVDLCAweEZGNUQsIDB4RkZFMywgMHgzMTMxLCAweDMxMzIsDQorICAgIDB4MzEzMywgMHgzMTM0LCAweDMxMzUsIDB4MzEzNiwgMHgzMTM3LCAweDMxMzgsIDB4MzEzOSwgMHgzMTNBLA0KKyAgICAweDMxM0IsIDB4MzEzQywgMHgzMTNELCAweDMxM0UsIDB4MzEzRiwgMHgzMTQwLCAweDMxNDEsIDB4MzE0MiwNCisgICAgMHgzMTQzLCAweDMxNDQsIDB4MzE0NSwgMHgzMTQ2LCAweDMxNDcsIDB4MzE0OCwgMHgzMTQ5LCAweDMxNEEsDQorICAgIDB4MzE0QiwgMHgzMTRDLCAweDMxNEQsIDB4MzE0RSwgMHgzMTRGLCAweDMxNTAsIDB4MzE1MSwgMHgzMTUyLA0KKyAgICAweDMxNTMsIDB4MzE1NCwgMHgzMTU1LCAweDMxNTYsIDB4MzE1NywgMHgzMTU4LCAweDMxNTksIDB4MzE1QSwNCisgICAgMHgzMTVCLCAweDMxNUMsIDB4MzE1RCwgMHgzMTVFLCAweDMxNUYsIDB4MzE2MCwgMHgzMTYxLCAweDMxNjIsDQorICAgIDB4MzE2MywgMHgzMTY1LCAweDMxNjYsIDB4MzE2NywgMHgzMTY4LCAweDMxNjksIDB4MzE2QSwgMHgzMTZCLA0KKyAgICAweDMxNkMsIDB4MzE2RCwgMHgzMTZFLCAweDMxNkYsIDB4MzE3MCwgMHgzMTcxLCAweDMxNzIsIDB4MzE3MywNCisgICAgMHgzMTc0LCAweDMxNzUsIDB4MzE3NiwgMHgzMTc3LCAweDMxNzgsIDB4MzE3OSwgMHgzMTdBLCAweDMxN0IsDQorICAgIDB4MzE3QywgMHgzMTdELCAweDMxN0UsIDB4MzE3RiwgMHgzMTgwLCAweDMxODEsIDB4MzE4MiwgMHgzMTgzLA0KKyAgICAweDMxODQsIDB4MzE4NSwgMHgzMTg2LCAweDMxODcsIDB4MzE4OCwgMHgzMTg5LCAweDMxOEEsIDB4MzE4QiwNCisgICAgMHgzMThDLCAweDMxOEQsIDB4MzE4RSwgMHgyMTcwLCAweDIxNzEsIDB4MjE3MiwgMHgyMTczLCAweDIxNzQsDQorICAgIDB4MjE3NSwgMHgyMTc2LCAweDIxNzcsIDB4MjE3OCwgMHgyMTc5LCAweDIxNjAsIDB4MjE2MSwgMHgyMTYyLA0KKyAgICAweDIxNjMsIDB4MjE2NCwgMHgyMTY1LCAweDIxNjYsIDB4MjE2NywgMHgyMTY4LCAweDIxNjksIDB4MDM5MSwNCisgICAgMHgwMzkyLCAweDAzOTMsIDB4MDM5NCwgMHgwMzk1LCAweDAzOTYsIDB4MDM5NywgMHgwMzk4LCAweDAzOTksDQorICAgIDB4MDM5QSwgMHgwMzlCLCAweDAzOUMsIDB4MDM5RCwgMHgwMzlFLCAweDAzOUYsIDB4MDNBMCwgMHgwM0ExLA0KKyAgICAweDAzQTMsIDB4MDNBNCwgMHgwM0E1LCAweDAzQTYsIDB4MDNBNywgMHgwM0E4LCAweDAzQTksIDB4MDNCMSwNCisgICAgMHgwM0IyLCAweDAzQjMsIDB4MDNCNCwgMHgwM0I1LCAweDAzQjYsIDB4MDNCNywgMHgwM0I4LCAweDAzQjksDQorICAgIDB4MDNCQSwgMHgwM0JCLCAweDAzQkMsIDB4MDNCRCwgMHgwM0JFLCAweDAzQkYsIDB4MDNDMCwgMHgwM0MxLA0KKyAgICAweDAzQzMsIDB4MDNDNCwgMHgwM0M1LCAweDAzQzYsIDB4MDNDNywgMHgwM0M4LCAweDAzQzksIDB4MjUwMCwNCisgICAgMHgyNTAyLCAweDI1MEMsIDB4MjUxMCwgMHgyNTE4LCAweDI1MTQsIDB4MjUxQywgMHgyNTJDLCAweDI1MjQsDQorICAgIDB4MjUzNCwgMHgyNTNDLCAweDI1MDEsIDB4MjUwMywgMHgyNTBGLCAweDI1MTMsIDB4MjUxQiwgMHgyNTE3LA0KKyAgICAweDI1MjMsIDB4MjUzMywgMHgyNTJCLCAweDI1M0IsIDB4MjU0QiwgMHgyNTIwLCAweDI1MkYsIDB4MjUyOCwNCisgICAgMHgyNTM3LCAweDI1M0YsIDB4MjUxRCwgMHgyNTMwLCAweDI1MjUsIDB4MjUzOCwgMHgyNTQyLCAweDI1MTIsDQorICAgIDB4MjUxMSwgMHgyNTFBLCAweDI1MTksIDB4MjUxNiwgMHgyNTE1LCAweDI1MEUsIDB4MjUwRCwgMHgyNTFFLA0KKyAgICAweDI1MUYsIDB4MjUyMSwgMHgyNTIyLCAweDI1MjYsIDB4MjUyNywgMHgyNTI5LCAweDI1MkEsIDB4MjUyRCwNCisgICAgMHgyNTJFLCAweDI1MzEsIDB4MjUzMiwgMHgyNTM1LCAweDI1MzYsIDB4MjUzOSwgMHgyNTNBLCAweDI1M0QsDQorICAgIDB4MjUzRSwgMHgyNTQwLCAweDI1NDEsIDB4MjU0MywgMHgyNTQ0LCAweDI1NDUsIDB4MjU0NiwgMHgyNTQ3LA0KKyAgICAweDI1NDgsIDB4MjU0OSwgMHgyNTRBLCAweDMzOTUsIDB4MzM5NiwgMHgzMzk3LCAweDIxMTMsIDB4MzM5OCwNCisgICAgMHgzM0M0LCAweDMzQTMsIDB4MzNBNCwgMHgzM0E1LCAweDMzQTYsIDB4MzM5OSwgMHgzMzlBLCAweDMzOUIsDQorICAgIDB4MzM5QywgMHgzMzlELCAweDMzOUUsIDB4MzM5RiwgMHgzM0EwLCAweDMzQTEsIDB4MzNBMiwgMHgzM0NBLA0KKyAgICAweDMzOEQsIDB4MzM4RSwgMHgzMzhGLCAweDMzQ0YsIDB4MzM4OCwgMHgzMzg5LCAweDMzQzgsIDB4MzNBNywNCisgICAgMHgzM0E4LCAweDMzQjAsIDB4MzNCMSwgMHgzM0IyLCAweDMzQjMsIDB4MzNCNCwgMHgzM0I1LCAweDMzQjYsDQorICAgIDB4MzNCNywgMHgzM0I4LCAweDMzQjksIDB4MzM4MCwgMHgzMzgxLCAweDMzODIsIDB4MzM4MywgMHgzMzg0LA0KKyAgICAweDMzQkEsIDB4MzNCQiwgMHgzM0JDLCAweDMzQkQsIDB4MzNCRSwgMHgzM0JGLCAweDMzOTAsIDB4MzM5MSwNCisgICAgMHgzMzkyLCAweDMzOTMsIDB4MzM5NCwgMHgyMTI2LCAweDMzQzAsIDB4MzNDMSwgMHgzMzhBLCAweDMzOEIsDQorICAgIDB4MzM4QywgMHgzM0Q2LCAweDMzQzUsIDB4MzNBRCwgMHgzM0FFLCAweDMzQUYsIDB4MzNEQiwgMHgzM0E5LA0KKyAgICAweDMzQUEsIDB4MzNBQiwgMHgzM0FDLCAweDMzREQsIDB4MzNEMCwgMHgzM0QzLCAweDMzQzMsIDB4MzNDOSwNCisgICAgMHgzM0RDLCAweDMzQzYsIDB4MDBDNiwgMHgwMEQwLCAweDAwQUEsIDB4MDEyNiwgMHgwMTMyLCAweDAxM0YsDQorICAgIDB4MDE0MSwgMHgwMEQ4LCAweDAxNTIsIDB4MDBCQSwgMHgwMERFLCAweDAxNjYsIDB4MDE0QSwgMHgzMjYwLA0KKyAgICAweDMyNjEsIDB4MzI2MiwgMHgzMjYzLCAweDMyNjQsIDB4MzI2NSwgMHgzMjY2LCAweDMyNjcsIDB4MzI2OCwNCisgICAgMHgzMjY5LCAweDMyNkEsIDB4MzI2QiwgMHgzMjZDLCAweDMyNkQsIDB4MzI2RSwgMHgzMjZGLCAweDMyNzAsDQorICAgIDB4MzI3MSwgMHgzMjcyLCAweDMyNzMsIDB4MzI3NCwgMHgzMjc1LCAweDMyNzYsIDB4MzI3NywgMHgzMjc4LA0KKyAgICAweDMyNzksIDB4MzI3QSwgMHgzMjdCLCAweDI0RDAsIDB4MjREMSwgMHgyNEQyLCAweDI0RDMsIDB4MjRENCwNCisgICAgMHgyNEQ1LCAweDI0RDYsIDB4MjRENywgMHgyNEQ4LCAweDI0RDksIDB4MjREQSwgMHgyNERCLCAweDI0REMsDQorICAgIDB4MjRERCwgMHgyNERFLCAweDI0REYsIDB4MjRFMCwgMHgyNEUxLCAweDI0RTIsIDB4MjRFMywgMHgyNEU0LA0KKyAgICAweDI0RTUsIDB4MjRFNiwgMHgyNEU3LCAweDI0RTgsIDB4MjRFOSwgMHgyNDYwLCAweDI0NjEsIDB4MjQ2MiwNCisgICAgMHgyNDYzLCAweDI0NjQsIDB4MjQ2NSwgMHgyNDY2LCAweDI0NjcsIDB4MjQ2OCwgMHgyNDY5LCAweDI0NkEsDQorICAgIDB4MjQ2QiwgMHgyNDZDLCAweDI0NkQsIDB4MjQ2RSwgMHgwMEJELCAweDIxNTMsIDB4MjE1NCwgMHgwMEJDLA0KKyAgICAweDAwQkUsIDB4MjE1QiwgMHgyMTVDLCAweDIxNUQsIDB4MjE1RSwgMHgwMEU2LCAweDAxMTEsIDB4MDBGMCwNCisgICAgMHgwMTI3LCAweDAxMzEsIDB4MDEzMywgMHgwMTM4LCAweDAxNDAsIDB4MDE0MiwgMHgwMEY4LCAweDAxNTMsDQorICAgIDB4MDBERiwgMHgwMEZFLCAweDAxNjcsIDB4MDE0QiwgMHgwMTQ5LCAweDMyMDAsIDB4MzIwMSwgMHgzMjAyLA0KKyAgICAweDMyMDMsIDB4MzIwNCwgMHgzMjA1LCAweDMyMDYsIDB4MzIwNywgMHgzMjA4LCAweDMyMDksIDB4MzIwQSwNCisgICAgMHgzMjBCLCAweDMyMEMsIDB4MzIwRCwgMHgzMjBFLCAweDMyMEYsIDB4MzIxMCwgMHgzMjExLCAweDMyMTIsDQorICAgIDB4MzIxMywgMHgzMjE0LCAweDMyMTUsIDB4MzIxNiwgMHgzMjE3LCAweDMyMTgsIDB4MzIxOSwgMHgzMjFBLA0KKyAgICAweDMyMUIsIDB4MjQ5QywgMHgyNDlELCAweDI0OUUsIDB4MjQ5RiwgMHgyNEEwLCAweDI0QTEsIDB4MjRBMiwNCisgICAgMHgyNEEzLCAweDI0QTQsIDB4MjRBNSwgMHgyNEE2LCAweDI0QTcsIDB4MjRBOCwgMHgyNEE5LCAweDI0QUEsDQorICAgIDB4MjRBQiwgMHgyNEFDLCAweDI0QUQsIDB4MjRBRSwgMHgyNEFGLCAweDI0QjAsIDB4MjRCMSwgMHgyNEIyLA0KKyAgICAweDI0QjMsIDB4MjRCNCwgMHgyNEI1LCAweDI0NzQsIDB4MjQ3NSwgMHgyNDc2LCAweDI0NzcsIDB4MjQ3OCwNCisgICAgMHgyNDc5LCAweDI0N0EsIDB4MjQ3QiwgMHgyNDdDLCAweDI0N0QsIDB4MjQ3RSwgMHgyNDdGLCAweDI0ODAsDQorICAgIDB4MjQ4MSwgMHgyNDgyLCAweDAwQjksIDB4MDBCMiwgMHgwMEIzLCAweDIwNzQsIDB4MjA3RiwgMHgyMDgxLA0KKyAgICAweDIwODIsIDB4MjA4MywgMHgyMDg0LCAweDMwNDEsIDB4MzA0MiwgMHgzMDQzLCAweDMwNDQsIDB4MzA0NSwNCisgICAgMHgzMDQ2LCAweDMwNDcsIDB4MzA0OCwgMHgzMDQ5LCAweDMwNEEsIDB4MzA0QiwgMHgzMDRDLCAweDMwNEQsDQorICAgIDB4MzA0RSwgMHgzMDRGLCAweDMwNTAsIDB4MzA1MSwgMHgzMDUyLCAweDMwNTMsIDB4MzA1NCwgMHgzMDU1LA0KKyAgICAweDMwNTYsIDB4MzA1NywgMHgzMDU4LCAweDMwNTksIDB4MzA1QSwgMHgzMDVCLCAweDMwNUMsIDB4MzA1RCwNCisgICAgMHgzMDVFLCAweDMwNUYsIDB4MzA2MCwgMHgzMDYxLCAweDMwNjIsIDB4MzA2MywgMHgzMDY0LCAweDMwNjUsDQorICAgIDB4MzA2NiwgMHgzMDY3LCAweDMwNjgsIDB4MzA2OSwgMHgzMDZBLCAweDMwNkIsIDB4MzA2QywgMHgzMDZELA0KKyAgICAweDMwNkUsIDB4MzA2RiwgMHgzMDcwLCAweDMwNzEsIDB4MzA3MiwgMHgzMDczLCAweDMwNzQsIDB4MzA3NSwNCisgICAgMHgzMDc2LCAweDMwNzcsIDB4MzA3OCwgMHgzMDc5LCAweDMwN0EsIDB4MzA3QiwgMHgzMDdDLCAweDMwN0QsDQorICAgIDB4MzA3RSwgMHgzMDdGLCAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAweDMwODMsIDB4MzA4NCwgMHgzMDg1LA0KKyAgICAweDMwODYsIDB4MzA4NywgMHgzMDg4LCAweDMwODksIDB4MzA4QSwgMHgzMDhCLCAweDMwOEMsIDB4MzA4RCwNCisgICAgMHgzMDhFLCAweDMwOEYsIDB4MzA5MCwgMHgzMDkxLCAweDMwOTIsIDB4MzA5MywgMHgzMEExLCAweDMwQTIsDQorICAgIDB4MzBBMywgMHgzMEE0LCAweDMwQTUsIDB4MzBBNiwgMHgzMEE3LCAweDMwQTgsIDB4MzBBOSwgMHgzMEFBLA0KKyAgICAweDMwQUIsIDB4MzBBQywgMHgzMEFELCAweDMwQUUsIDB4MzBBRiwgMHgzMEIwLCAweDMwQjEsIDB4MzBCMiwNCisgICAgMHgzMEIzLCAweDMwQjQsIDB4MzBCNSwgMHgzMEI2LCAweDMwQjcsIDB4MzBCOCwgMHgzMEI5LCAweDMwQkEsDQorICAgIDB4MzBCQiwgMHgzMEJDLCAweDMwQkQsIDB4MzBCRSwgMHgzMEJGLCAweDMwQzAsIDB4MzBDMSwgMHgzMEMyLA0KKyAgICAweDMwQzMsIDB4MzBDNCwgMHgzMEM1LCAweDMwQzYsIDB4MzBDNywgMHgzMEM4LCAweDMwQzksIDB4MzBDQSwNCisgICAgMHgzMENCLCAweDMwQ0MsIDB4MzBDRCwgMHgzMENFLCAweDMwQ0YsIDB4MzBEMCwgMHgzMEQxLCAweDMwRDIsDQorICAgIDB4MzBEMywgMHgzMEQ0LCAweDMwRDUsIDB4MzBENiwgMHgzMEQ3LCAweDMwRDgsIDB4MzBEOSwgMHgzMERBLA0KKyAgICAweDMwREIsIDB4MzBEQywgMHgzMERELCAweDMwREUsIDB4MzBERiwgMHgzMEUwLCAweDMwRTEsIDB4MzBFMiwNCisgICAgMHgzMEUzLCAweDMwRTQsIDB4MzBFNSwgMHgzMEU2LCAweDMwRTcsIDB4MzBFOCwgMHgzMEU5LCAweDMwRUEsDQorICAgIDB4MzBFQiwgMHgzMEVDLCAweDMwRUQsIDB4MzBFRSwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLA0KKyAgICAweDMwRjMsIDB4MzBGNCwgMHgzMEY1LCAweDMwRjYsIDB4MDQxMCwgMHgwNDExLCAweDA0MTIsIDB4MDQxMywNCisgICAgMHgwNDE0LCAweDA0MTUsIDB4MDQwMSwgMHgwNDE2LCAweDA0MTcsIDB4MDQxOCwgMHgwNDE5LCAweDA0MUEsDQorICAgIDB4MDQxQiwgMHgwNDFDLCAweDA0MUQsIDB4MDQxRSwgMHgwNDFGLCAweDA0MjAsIDB4MDQyMSwgMHgwNDIyLA0KKyAgICAweDA0MjMsIDB4MDQyNCwgMHgwNDI1LCAweDA0MjYsIDB4MDQyNywgMHgwNDI4LCAweDA0MjksIDB4MDQyQSwNCisgICAgMHgwNDJCLCAweDA0MkMsIDB4MDQyRCwgMHgwNDJFLCAweDA0MkYsIDB4MDQzMCwgMHgwNDMxLCAweDA0MzIsDQorICAgIDB4MDQzMywgMHgwNDM0LCAweDA0MzUsIDB4MDQ1MSwgMHgwNDM2LCAweDA0MzcsIDB4MDQzOCwgMHgwNDM5LA0KKyAgICAweDA0M0EsIDB4MDQzQiwgMHgwNDNDLCAweDA0M0QsIDB4MDQzRSwgMHgwNDNGLCAweDA0NDAsIDB4MDQ0MSwNCisgICAgMHgwNDQyLCAweDA0NDMsIDB4MDQ0NCwgMHgwNDQ1LCAweDA0NDYsIDB4MDQ0NywgMHgwNDQ4LCAweDA0NDksDQorICAgIDB4MDQ0QSwgMHgwNDRCLCAweDA0NEMsIDB4MDQ0RCwgMHgwNDRFLCAweDA0NEYsIDB4QUMwMCwgMHhBQzAxLA0KKyAgICAweEFDMDQsIDB4QUMwNywgMHhBQzA4LCAweEFDMDksIDB4QUMwQSwgMHhBQzEwLCAweEFDMTEsIDB4QUMxMiwNCisgICAgMHhBQzEzLCAweEFDMTQsIDB4QUMxNSwgMHhBQzE2LCAweEFDMTcsIDB4QUMxOSwgMHhBQzFBLCAweEFDMUIsDQorICAgIDB4QUMxQywgMHhBQzFELCAweEFDMjAsIDB4QUMyNCwgMHhBQzJDLCAweEFDMkQsIDB4QUMyRiwgMHhBQzMwLA0KKyAgICAweEFDMzEsIDB4QUMzOCwgMHhBQzM5LCAweEFDM0MsIDB4QUM0MCwgMHhBQzRCLCAweEFDNEQsIDB4QUM1NCwNCisgICAgMHhBQzU4LCAweEFDNUMsIDB4QUM3MCwgMHhBQzcxLCAweEFDNzQsIDB4QUM3NywgMHhBQzc4LCAweEFDN0EsDQorICAgIDB4QUM4MCwgMHhBQzgxLCAweEFDODMsIDB4QUM4NCwgMHhBQzg1LCAweEFDODYsIDB4QUM4OSwgMHhBQzhBLA0KKyAgICAweEFDOEIsIDB4QUM4QywgMHhBQzkwLCAweEFDOTQsIDB4QUM5QywgMHhBQzlELCAweEFDOUYsIDB4QUNBMCwNCisgICAgMHhBQ0ExLCAweEFDQTgsIDB4QUNBOSwgMHhBQ0FBLCAweEFDQUMsIDB4QUNBRiwgMHhBQ0IwLCAweEFDQjgsDQorICAgIDB4QUNCOSwgMHhBQ0JCLCAweEFDQkMsIDB4QUNCRCwgMHhBQ0MxLCAweEFDQzQsIDB4QUNDOCwgMHhBQ0NDLA0KKyAgICAweEFDRDUsIDB4QUNENywgMHhBQ0UwLCAweEFDRTEsIDB4QUNFNCwgMHhBQ0U3LCAweEFDRTgsIDB4QUNFQSwNCisgICAgMHhBQ0VDLCAweEFDRUYsIDB4QUNGMCwgMHhBQ0YxLCAweEFDRjMsIDB4QUNGNSwgMHhBQ0Y2LCAweEFDRkMsDQorICAgIDB4QUNGRCwgMHhBRDAwLCAweEFEMDQsIDB4QUQwNiwgMHhBRDBDLCAweEFEMEQsIDB4QUQwRiwgMHhBRDExLA0KKyAgICAweEFEMTgsIDB4QUQxQywgMHhBRDIwLCAweEFEMjksIDB4QUQyQywgMHhBRDJELCAweEFEMzQsIDB4QUQzNSwNCisgICAgMHhBRDM4LCAweEFEM0MsIDB4QUQ0NCwgMHhBRDQ1LCAweEFENDcsIDB4QUQ0OSwgMHhBRDUwLCAweEFENTQsDQorICAgIDB4QUQ1OCwgMHhBRDYxLCAweEFENjMsIDB4QUQ2QywgMHhBRDZELCAweEFENzAsIDB4QUQ3MywgMHhBRDc0LA0KKyAgICAweEFENzUsIDB4QUQ3NiwgMHhBRDdCLCAweEFEN0MsIDB4QUQ3RCwgMHhBRDdGLCAweEFEODEsIDB4QUQ4MiwNCisgICAgMHhBRDg4LCAweEFEODksIDB4QUQ4QywgMHhBRDkwLCAweEFEOUMsIDB4QUQ5RCwgMHhBREE0LCAweEFEQjcsDQorICAgIDB4QURDMCwgMHhBREMxLCAweEFEQzQsIDB4QURDOCwgMHhBREQwLCAweEFERDEsIDB4QUREMywgMHhBRERDLA0KKyAgICAweEFERTAsIDB4QURFNCwgMHhBREY4LCAweEFERjksIDB4QURGQywgMHhBREZGLCAweEFFMDAsIDB4QUUwMSwNCisgICAgMHhBRTA4LCAweEFFMDksIDB4QUUwQiwgMHhBRTBELCAweEFFMTQsIDB4QUUzMCwgMHhBRTMxLCAweEFFMzQsDQorICAgIDB4QUUzNywgMHhBRTM4LCAweEFFM0EsIDB4QUU0MCwgMHhBRTQxLCAweEFFNDMsIDB4QUU0NSwgMHhBRTQ2LA0KKyAgICAweEFFNEEsIDB4QUU0QywgMHhBRTRELCAweEFFNEUsIDB4QUU1MCwgMHhBRTU0LCAweEFFNTYsIDB4QUU1QywNCisgICAgMHhBRTVELCAweEFFNUYsIDB4QUU2MCwgMHhBRTYxLCAweEFFNjUsIDB4QUU2OCwgMHhBRTY5LCAweEFFNkMsDQorICAgIDB4QUU3MCwgMHhBRTc4LCAweEFFNzksIDB4QUU3QiwgMHhBRTdDLCAweEFFN0QsIDB4QUU4NCwgMHhBRTg1LA0KKyAgICAweEFFOEMsIDB4QUVCQywgMHhBRUJELCAweEFFQkUsIDB4QUVDMCwgMHhBRUM0LCAweEFFQ0MsIDB4QUVDRCwNCisgICAgMHhBRUNGLCAweEFFRDAsIDB4QUVEMSwgMHhBRUQ4LCAweEFFRDksIDB4QUVEQywgMHhBRUU4LCAweEFFRUIsDQorICAgIDB4QUVFRCwgMHhBRUY0LCAweEFFRjgsIDB4QUVGQywgMHhBRjA3LCAweEFGMDgsIDB4QUYwRCwgMHhBRjEwLA0KKyAgICAweEFGMkMsIDB4QUYyRCwgMHhBRjMwLCAweEFGMzIsIDB4QUYzNCwgMHhBRjNDLCAweEFGM0QsIDB4QUYzRiwNCisgICAgMHhBRjQxLCAweEFGNDIsIDB4QUY0MywgMHhBRjQ4LCAweEFGNDksIDB4QUY1MCwgMHhBRjVDLCAweEFGNUQsDQorICAgIDB4QUY2NCwgMHhBRjY1LCAweEFGNzksIDB4QUY4MCwgMHhBRjg0LCAweEFGODgsIDB4QUY5MCwgMHhBRjkxLA0KKyAgICAweEFGOTUsIDB4QUY5QywgMHhBRkI4LCAweEFGQjksIDB4QUZCQywgMHhBRkMwLCAweEFGQzcsIDB4QUZDOCwNCisgICAgMHhBRkM5LCAweEFGQ0IsIDB4QUZDRCwgMHhBRkNFLCAweEFGRDQsIDB4QUZEQywgMHhBRkU4LCAweEFGRTksDQorICAgIDB4QUZGMCwgMHhBRkYxLCAweEFGRjQsIDB4QUZGOCwgMHhCMDAwLCAweEIwMDEsIDB4QjAwNCwgMHhCMDBDLA0KKyAgICAweEIwMTAsIDB4QjAxNCwgMHhCMDFDLCAweEIwMUQsIDB4QjAyOCwgMHhCMDQ0LCAweEIwNDUsIDB4QjA0OCwNCisgICAgMHhCMDRBLCAweEIwNEMsIDB4QjA0RSwgMHhCMDUzLCAweEIwNTQsIDB4QjA1NSwgMHhCMDU3LCAweEIwNTksDQorICAgIDB4QjA1RCwgMHhCMDdDLCAweEIwN0QsIDB4QjA4MCwgMHhCMDg0LCAweEIwOEMsIDB4QjA4RCwgMHhCMDhGLA0KKyAgICAweEIwOTEsIDB4QjA5OCwgMHhCMDk5LCAweEIwOUEsIDB4QjA5QywgMHhCMDlGLCAweEIwQTAsIDB4QjBBMSwNCisgICAgMHhCMEEyLCAweEIwQTgsIDB4QjBBOSwgMHhCMEFCLCAweEIwQUMsIDB4QjBBRCwgMHhCMEFFLCAweEIwQUYsDQorICAgIDB4QjBCMSwgMHhCMEIzLCAweEIwQjQsIDB4QjBCNSwgMHhCMEI4LCAweEIwQkMsIDB4QjBDNCwgMHhCMEM1LA0KKyAgICAweEIwQzcsIDB4QjBDOCwgMHhCMEM5LCAweEIwRDAsIDB4QjBEMSwgMHhCMEQ0LCAweEIwRDgsIDB4QjBFMCwNCisgICAgMHhCMEU1LCAweEIxMDgsIDB4QjEwOSwgMHhCMTBCLCAweEIxMEMsIDB4QjExMCwgMHhCMTEyLCAweEIxMTMsDQorICAgIDB4QjExOCwgMHhCMTE5LCAweEIxMUIsIDB4QjExQywgMHhCMTFELCAweEIxMjMsIDB4QjEyNCwgMHhCMTI1LA0KKyAgICAweEIxMjgsIDB4QjEyQywgMHhCMTM0LCAweEIxMzUsIDB4QjEzNywgMHhCMTM4LCAweEIxMzksIDB4QjE0MCwNCisgICAgMHhCMTQxLCAweEIxNDQsIDB4QjE0OCwgMHhCMTUwLCAweEIxNTEsIDB4QjE1NCwgMHhCMTU1LCAweEIxNTgsDQorICAgIDB4QjE1QywgMHhCMTYwLCAweEIxNzgsIDB4QjE3OSwgMHhCMTdDLCAweEIxODAsIDB4QjE4MiwgMHhCMTg4LA0KKyAgICAweEIxODksIDB4QjE4QiwgMHhCMThELCAweEIxOTIsIDB4QjE5MywgMHhCMTk0LCAweEIxOTgsIDB4QjE5QywNCisgICAgMHhCMUE4LCAweEIxQ0MsIDB4QjFEMCwgMHhCMUQ0LCAweEIxREMsIDB4QjFERCwgMHhCMURGLCAweEIxRTgsDQorICAgIDB4QjFFOSwgMHhCMUVDLCAweEIxRjAsIDB4QjFGOSwgMHhCMUZCLCAweEIxRkQsIDB4QjIwNCwgMHhCMjA1LA0KKyAgICAweEIyMDgsIDB4QjIwQiwgMHhCMjBDLCAweEIyMTQsIDB4QjIxNSwgMHhCMjE3LCAweEIyMTksIDB4QjIyMCwNCisgICAgMHhCMjM0LCAweEIyM0MsIDB4QjI1OCwgMHhCMjVDLCAweEIyNjAsIDB4QjI2OCwgMHhCMjY5LCAweEIyNzQsDQorICAgIDB4QjI3NSwgMHhCMjdDLCAweEIyODQsIDB4QjI4NSwgMHhCMjg5LCAweEIyOTAsIDB4QjI5MSwgMHhCMjk0LA0KKyAgICAweEIyOTgsIDB4QjI5OSwgMHhCMjlBLCAweEIyQTAsIDB4QjJBMSwgMHhCMkEzLCAweEIyQTUsIDB4QjJBNiwNCisgICAgMHhCMkFBLCAweEIyQUMsIDB4QjJCMCwgMHhCMkI0LCAweEIyQzgsIDB4QjJDOSwgMHhCMkNDLCAweEIyRDAsDQorICAgIDB4QjJEMiwgMHhCMkQ4LCAweEIyRDksIDB4QjJEQiwgMHhCMkRELCAweEIyRTIsIDB4QjJFNCwgMHhCMkU1LA0KKyAgICAweEIyRTYsIDB4QjJFOCwgMHhCMkVCLCAweEIyRUMsIDB4QjJFRCwgMHhCMkVFLCAweEIyRUYsIDB4QjJGMywNCisgICAgMHhCMkY0LCAweEIyRjUsIDB4QjJGNywgMHhCMkY4LCAweEIyRjksIDB4QjJGQSwgMHhCMkZCLCAweEIyRkYsDQorICAgIDB4QjMwMCwgMHhCMzAxLCAweEIzMDQsIDB4QjMwOCwgMHhCMzEwLCAweEIzMTEsIDB4QjMxMywgMHhCMzE0LA0KKyAgICAweEIzMTUsIDB4QjMxQywgMHhCMzU0LCAweEIzNTUsIDB4QjM1NiwgMHhCMzU4LCAweEIzNUIsIDB4QjM1QywNCisgICAgMHhCMzVFLCAweEIzNUYsIDB4QjM2NCwgMHhCMzY1LCAweEIzNjcsIDB4QjM2OSwgMHhCMzZCLCAweEIzNkUsDQorICAgIDB4QjM3MCwgMHhCMzcxLCAweEIzNzQsIDB4QjM3OCwgMHhCMzgwLCAweEIzODEsIDB4QjM4MywgMHhCMzg0LA0KKyAgICAweEIzODUsIDB4QjM4QywgMHhCMzkwLCAweEIzOTQsIDB4QjNBMCwgMHhCM0ExLCAweEIzQTgsIDB4QjNBQywNCisgICAgMHhCM0M0LCAweEIzQzUsIDB4QjNDOCwgMHhCM0NCLCAweEIzQ0MsIDB4QjNDRSwgMHhCM0QwLCAweEIzRDQsDQorICAgIDB4QjNENSwgMHhCM0Q3LCAweEIzRDksIDB4QjNEQiwgMHhCM0RELCAweEIzRTAsIDB4QjNFNCwgMHhCM0U4LA0KKyAgICAweEIzRkMsIDB4QjQxMCwgMHhCNDE4LCAweEI0MUMsIDB4QjQyMCwgMHhCNDI4LCAweEI0MjksIDB4QjQyQiwNCisgICAgMHhCNDM0LCAweEI0NTAsIDB4QjQ1MSwgMHhCNDU0LCAweEI0NTgsIDB4QjQ2MCwgMHhCNDYxLCAweEI0NjMsDQorICAgIDB4QjQ2NSwgMHhCNDZDLCAweEI0ODAsIDB4QjQ4OCwgMHhCNDlELCAweEI0QTQsIDB4QjRBOCwgMHhCNEFDLA0KKyAgICAweEI0QjUsIDB4QjRCNywgMHhCNEI5LCAweEI0QzAsIDB4QjRDNCwgMHhCNEM4LCAweEI0RDAsIDB4QjRENSwNCisgICAgMHhCNERDLCAweEI0REQsIDB4QjRFMCwgMHhCNEUzLCAweEI0RTQsIDB4QjRFNiwgMHhCNEVDLCAweEI0RUQsDQorICAgIDB4QjRFRiwgMHhCNEYxLCAweEI0RjgsIDB4QjUxNCwgMHhCNTE1LCAweEI1MTgsIDB4QjUxQiwgMHhCNTFDLA0KKyAgICAweEI1MjQsIDB4QjUyNSwgMHhCNTI3LCAweEI1MjgsIDB4QjUyOSwgMHhCNTJBLCAweEI1MzAsIDB4QjUzMSwNCisgICAgMHhCNTM0LCAweEI1MzgsIDB4QjU0MCwgMHhCNTQxLCAweEI1NDMsIDB4QjU0NCwgMHhCNTQ1LCAweEI1NEIsDQorICAgIDB4QjU0QywgMHhCNTRELCAweEI1NTAsIDB4QjU1NCwgMHhCNTVDLCAweEI1NUQsIDB4QjU1RiwgMHhCNTYwLA0KKyAgICAweEI1NjEsIDB4QjVBMCwgMHhCNUExLCAweEI1QTQsIDB4QjVBOCwgMHhCNUFBLCAweEI1QUIsIDB4QjVCMCwNCisgICAgMHhCNUIxLCAweEI1QjMsIDB4QjVCNCwgMHhCNUI1LCAweEI1QkIsIDB4QjVCQywgMHhCNUJELCAweEI1QzAsDQorICAgIDB4QjVDNCwgMHhCNUNDLCAweEI1Q0QsIDB4QjVDRiwgMHhCNUQwLCAweEI1RDEsIDB4QjVEOCwgMHhCNUVDLA0KKyAgICAweEI2MTAsIDB4QjYxMSwgMHhCNjE0LCAweEI2MTgsIDB4QjYyNSwgMHhCNjJDLCAweEI2MzQsIDB4QjY0OCwNCisgICAgMHhCNjY0LCAweEI2NjgsIDB4QjY5QywgMHhCNjlELCAweEI2QTAsIDB4QjZBNCwgMHhCNkFCLCAweEI2QUMsDQorICAgIDB4QjZCMSwgMHhCNkQ0LCAweEI2RjAsIDB4QjZGNCwgMHhCNkY4LCAweEI3MDAsIDB4QjcwMSwgMHhCNzA1LA0KKyAgICAweEI3MjgsIDB4QjcyOSwgMHhCNzJDLCAweEI3MkYsIDB4QjczMCwgMHhCNzM4LCAweEI3MzksIDB4QjczQiwNCisgICAgMHhCNzQ0LCAweEI3NDgsIDB4Qjc0QywgMHhCNzU0LCAweEI3NTUsIDB4Qjc2MCwgMHhCNzY0LCAweEI3NjgsDQorICAgIDB4Qjc3MCwgMHhCNzcxLCAweEI3NzMsIDB4Qjc3NSwgMHhCNzdDLCAweEI3N0QsIDB4Qjc4MCwgMHhCNzg0LA0KKyAgICAweEI3OEMsIDB4Qjc4RCwgMHhCNzhGLCAweEI3OTAsIDB4Qjc5MSwgMHhCNzkyLCAweEI3OTYsIDB4Qjc5NywNCisgICAgMHhCNzk4LCAweEI3OTksIDB4Qjc5QywgMHhCN0EwLCAweEI3QTgsIDB4QjdBOSwgMHhCN0FCLCAweEI3QUMsDQorICAgIDB4QjdBRCwgMHhCN0I0LCAweEI3QjUsIDB4QjdCOCwgMHhCN0M3LCAweEI3QzksIDB4QjdFQywgMHhCN0VELA0KKyAgICAweEI3RjAsIDB4QjdGNCwgMHhCN0ZDLCAweEI3RkQsIDB4QjdGRiwgMHhCODAwLCAweEI4MDEsIDB4QjgwNywNCisgICAgMHhCODA4LCAweEI4MDksIDB4QjgwQywgMHhCODEwLCAweEI4MTgsIDB4QjgxOSwgMHhCODFCLCAweEI4MUQsDQorICAgIDB4QjgyNCwgMHhCODI1LCAweEI4MjgsIDB4QjgyQywgMHhCODM0LCAweEI4MzUsIDB4QjgzNywgMHhCODM4LA0KKyAgICAweEI4MzksIDB4Qjg0MCwgMHhCODQ0LCAweEI4NTEsIDB4Qjg1MywgMHhCODVDLCAweEI4NUQsIDB4Qjg2MCwNCisgICAgMHhCODY0LCAweEI4NkMsIDB4Qjg2RCwgMHhCODZGLCAweEI4NzEsIDB4Qjg3OCwgMHhCODdDLCAweEI4OEQsDQorICAgIDB4QjhBOCwgMHhCOEIwLCAweEI4QjQsIDB4QjhCOCwgMHhCOEMwLCAweEI4QzEsIDB4QjhDMywgMHhCOEM1LA0KKyAgICAweEI4Q0MsIDB4QjhEMCwgMHhCOEQ0LCAweEI4REQsIDB4QjhERiwgMHhCOEUxLCAweEI4RTgsIDB4QjhFOSwNCisgICAgMHhCOEVDLCAweEI4RjAsIDB4QjhGOCwgMHhCOEY5LCAweEI4RkIsIDB4QjhGRCwgMHhCOTA0LCAweEI5MTgsDQorICAgIDB4QjkyMCwgMHhCOTNDLCAweEI5M0QsIDB4Qjk0MCwgMHhCOTQ0LCAweEI5NEMsIDB4Qjk0RiwgMHhCOTUxLA0KKyAgICAweEI5NTgsIDB4Qjk1OSwgMHhCOTVDLCAweEI5NjAsIDB4Qjk2OCwgMHhCOTY5LCAweEI5NkIsIDB4Qjk2RCwNCisgICAgMHhCOTc0LCAweEI5NzUsIDB4Qjk3OCwgMHhCOTdDLCAweEI5ODQsIDB4Qjk4NSwgMHhCOTg3LCAweEI5ODksDQorICAgIDB4Qjk4QSwgMHhCOThELCAweEI5OEUsIDB4QjlBQywgMHhCOUFELCAweEI5QjAsIDB4QjlCNCwgMHhCOUJDLA0KKyAgICAweEI5QkQsIDB4QjlCRiwgMHhCOUMxLCAweEI5QzgsIDB4QjlDOSwgMHhCOUNDLCAweEI5Q0UsIDB4QjlDRiwNCisgICAgMHhCOUQwLCAweEI5RDEsIDB4QjlEMiwgMHhCOUQ4LCAweEI5RDksIDB4QjlEQiwgMHhCOURELCAweEI5REUsDQorICAgIDB4QjlFMSwgMHhCOUUzLCAweEI5RTQsIDB4QjlFNSwgMHhCOUU4LCAweEI5RUMsIDB4QjlGNCwgMHhCOUY1LA0KKyAgICAweEI5RjcsIDB4QjlGOCwgMHhCOUY5LCAweEI5RkEsIDB4QkEwMCwgMHhCQTAxLCAweEJBMDgsIDB4QkExNSwNCisgICAgMHhCQTM4LCAweEJBMzksIDB4QkEzQywgMHhCQTQwLCAweEJBNDIsIDB4QkE0OCwgMHhCQTQ5LCAweEJBNEIsDQorICAgIDB4QkE0RCwgMHhCQTRFLCAweEJBNTMsIDB4QkE1NCwgMHhCQTU1LCAweEJBNTgsIDB4QkE1QywgMHhCQTY0LA0KKyAgICAweEJBNjUsIDB4QkE2NywgMHhCQTY4LCAweEJBNjksIDB4QkE3MCwgMHhCQTcxLCAweEJBNzQsIDB4QkE3OCwNCisgICAgMHhCQTgzLCAweEJBODQsIDB4QkE4NSwgMHhCQTg3LCAweEJBOEMsIDB4QkFBOCwgMHhCQUE5LCAweEJBQUIsDQorICAgIDB4QkFBQywgMHhCQUIwLCAweEJBQjIsIDB4QkFCOCwgMHhCQUI5LCAweEJBQkIsIDB4QkFCRCwgMHhCQUM0LA0KKyAgICAweEJBQzgsIDB4QkFEOCwgMHhCQUQ5LCAweEJBRkMsIDB4QkIwMCwgMHhCQjA0LCAweEJCMEQsIDB4QkIwRiwNCisgICAgMHhCQjExLCAweEJCMTgsIDB4QkIxQywgMHhCQjIwLCAweEJCMjksIDB4QkIyQiwgMHhCQjM0LCAweEJCMzUsDQorICAgIDB4QkIzNiwgMHhCQjM4LCAweEJCM0IsIDB4QkIzQywgMHhCQjNELCAweEJCM0UsIDB4QkI0NCwgMHhCQjQ1LA0KKyAgICAweEJCNDcsIDB4QkI0OSwgMHhCQjRELCAweEJCNEYsIDB4QkI1MCwgMHhCQjU0LCAweEJCNTgsIDB4QkI2MSwNCisgICAgMHhCQjYzLCAweEJCNkMsIDB4QkI4OCwgMHhCQjhDLCAweEJCOTAsIDB4QkJBNCwgMHhCQkE4LCAweEJCQUMsDQorICAgIDB4QkJCNCwgMHhCQkI3LCAweEJCQzAsIDB4QkJDNCwgMHhCQkM4LCAweEJCRDAsIDB4QkJEMywgMHhCQkY4LA0KKyAgICAweEJCRjksIDB4QkJGQywgMHhCQkZGLCAweEJDMDAsIDB4QkMwMiwgMHhCQzA4LCAweEJDMDksIDB4QkMwQiwNCisgICAgMHhCQzBDLCAweEJDMEQsIDB4QkMwRiwgMHhCQzExLCAweEJDMTQsIDB4QkMxNSwgMHhCQzE2LCAweEJDMTcsDQorICAgIDB4QkMxOCwgMHhCQzFCLCAweEJDMUMsIDB4QkMxRCwgMHhCQzFFLCAweEJDMUYsIDB4QkMyNCwgMHhCQzI1LA0KKyAgICAweEJDMjcsIDB4QkMyOSwgMHhCQzJELCAweEJDMzAsIDB4QkMzMSwgMHhCQzM0LCAweEJDMzgsIDB4QkM0MCwNCisgICAgMHhCQzQxLCAweEJDNDMsIDB4QkM0NCwgMHhCQzQ1LCAweEJDNDksIDB4QkM0QywgMHhCQzRELCAweEJDNTAsDQorICAgIDB4QkM1RCwgMHhCQzg0LCAweEJDODUsIDB4QkM4OCwgMHhCQzhCLCAweEJDOEMsIDB4QkM4RSwgMHhCQzk0LA0KKyAgICAweEJDOTUsIDB4QkM5NywgMHhCQzk5LCAweEJDOUEsIDB4QkNBMCwgMHhCQ0ExLCAweEJDQTQsIDB4QkNBNywNCisgICAgMHhCQ0E4LCAweEJDQjAsIDB4QkNCMSwgMHhCQ0IzLCAweEJDQjQsIDB4QkNCNSwgMHhCQ0JDLCAweEJDQkQsDQorICAgIDB4QkNDMCwgMHhCQ0M0LCAweEJDQ0QsIDB4QkNDRiwgMHhCQ0QwLCAweEJDRDEsIDB4QkNENSwgMHhCQ0Q4LA0KKyAgICAweEJDREMsIDB4QkNGNCwgMHhCQ0Y1LCAweEJDRjYsIDB4QkNGOCwgMHhCQ0ZDLCAweEJEMDQsIDB4QkQwNSwNCisgICAgMHhCRDA3LCAweEJEMDksIDB4QkQxMCwgMHhCRDE0LCAweEJEMjQsIDB4QkQyQywgMHhCRDQwLCAweEJENDgsDQorICAgIDB4QkQ0OSwgMHhCRDRDLCAweEJENTAsIDB4QkQ1OCwgMHhCRDU5LCAweEJENjQsIDB4QkQ2OCwgMHhCRDgwLA0KKyAgICAweEJEODEsIDB4QkQ4NCwgMHhCRDg3LCAweEJEODgsIDB4QkQ4OSwgMHhCRDhBLCAweEJEOTAsIDB4QkQ5MSwNCisgICAgMHhCRDkzLCAweEJEOTUsIDB4QkQ5OSwgMHhCRDlBLCAweEJEOUMsIDB4QkRBNCwgMHhCREIwLCAweEJEQjgsDQorICAgIDB4QkRENCwgMHhCREQ1LCAweEJERDgsIDB4QkREQywgMHhCREU5LCAweEJERjAsIDB4QkRGNCwgMHhCREY4LA0KKyAgICAweEJFMDAsIDB4QkUwMywgMHhCRTA1LCAweEJFMEMsIDB4QkUwRCwgMHhCRTEwLCAweEJFMTQsIDB4QkUxQywNCisgICAgMHhCRTFELCAweEJFMUYsIDB4QkU0NCwgMHhCRTQ1LCAweEJFNDgsIDB4QkU0QywgMHhCRTRFLCAweEJFNTQsDQorICAgIDB4QkU1NSwgMHhCRTU3LCAweEJFNTksIDB4QkU1QSwgMHhCRTVCLCAweEJFNjAsIDB4QkU2MSwgMHhCRTY0LA0KKyAgICAweEJFNjgsIDB4QkU2QSwgMHhCRTcwLCAweEJFNzEsIDB4QkU3MywgMHhCRTc0LCAweEJFNzUsIDB4QkU3QiwNCisgICAgMHhCRTdDLCAweEJFN0QsIDB4QkU4MCwgMHhCRTg0LCAweEJFOEMsIDB4QkU4RCwgMHhCRThGLCAweEJFOTAsDQorICAgIDB4QkU5MSwgMHhCRTk4LCAweEJFOTksIDB4QkVBOCwgMHhCRUQwLCAweEJFRDEsIDB4QkVENCwgMHhCRUQ3LA0KKyAgICAweEJFRDgsIDB4QkVFMCwgMHhCRUUzLCAweEJFRTQsIDB4QkVFNSwgMHhCRUVDLCAweEJGMDEsIDB4QkYwOCwNCisgICAgMHhCRjA5LCAweEJGMTgsIDB4QkYxOSwgMHhCRjFCLCAweEJGMUMsIDB4QkYxRCwgMHhCRjQwLCAweEJGNDEsDQorICAgIDB4QkY0NCwgMHhCRjQ4LCAweEJGNTAsIDB4QkY1MSwgMHhCRjU1LCAweEJGOTQsIDB4QkZCMCwgMHhCRkM1LA0KKyAgICAweEJGQ0MsIDB4QkZDRCwgMHhCRkQwLCAweEJGRDQsIDB4QkZEQywgMHhCRkRGLCAweEJGRTEsIDB4QzAzQywNCisgICAgMHhDMDUxLCAweEMwNTgsIDB4QzA1QywgMHhDMDYwLCAweEMwNjgsIDB4QzA2OSwgMHhDMDkwLCAweEMwOTEsDQorICAgIDB4QzA5NCwgMHhDMDk4LCAweEMwQTAsIDB4QzBBMSwgMHhDMEEzLCAweEMwQTUsIDB4QzBBQywgMHhDMEFELA0KKyAgICAweEMwQUYsIDB4QzBCMCwgMHhDMEIzLCAweEMwQjQsIDB4QzBCNSwgMHhDMEI2LCAweEMwQkMsIDB4QzBCRCwNCisgICAgMHhDMEJGLCAweEMwQzAsIDB4QzBDMSwgMHhDMEM1LCAweEMwQzgsIDB4QzBDOSwgMHhDMENDLCAweEMwRDAsDQorICAgIDB4QzBEOCwgMHhDMEQ5LCAweEMwREIsIDB4QzBEQywgMHhDMERELCAweEMwRTQsIDB4QzBFNSwgMHhDMEU4LA0KKyAgICAweEMwRUMsIDB4QzBGNCwgMHhDMEY1LCAweEMwRjcsIDB4QzBGOSwgMHhDMTAwLCAweEMxMDQsIDB4QzEwOCwNCisgICAgMHhDMTEwLCAweEMxMTUsIDB4QzExQywgMHhDMTFELCAweEMxMUUsIDB4QzExRiwgMHhDMTIwLCAweEMxMjMsDQorICAgIDB4QzEyNCwgMHhDMTI2LCAweEMxMjcsIDB4QzEyQywgMHhDMTJELCAweEMxMkYsIDB4QzEzMCwgMHhDMTMxLA0KKyAgICAweEMxMzYsIDB4QzEzOCwgMHhDMTM5LCAweEMxM0MsIDB4QzE0MCwgMHhDMTQ4LCAweEMxNDksIDB4QzE0QiwNCisgICAgMHhDMTRDLCAweEMxNEQsIDB4QzE1NCwgMHhDMTU1LCAweEMxNTgsIDB4QzE1QywgMHhDMTY0LCAweEMxNjUsDQorICAgIDB4QzE2NywgMHhDMTY4LCAweEMxNjksIDB4QzE3MCwgMHhDMTc0LCAweEMxNzgsIDB4QzE4NSwgMHhDMThDLA0KKyAgICAweEMxOEQsIDB4QzE4RSwgMHhDMTkwLCAweEMxOTQsIDB4QzE5NiwgMHhDMTlDLCAweEMxOUQsIDB4QzE5RiwNCisgICAgMHhDMUExLCAweEMxQTUsIDB4QzFBOCwgMHhDMUE5LCAweEMxQUMsIDB4QzFCMCwgMHhDMUJELCAweEMxQzQsDQorICAgIDB4QzFDOCwgMHhDMUNDLCAweEMxRDQsIDB4QzFENywgMHhDMUQ4LCAweEMxRTAsIDB4QzFFNCwgMHhDMUU4LA0KKyAgICAweEMxRjAsIDB4QzFGMSwgMHhDMUYzLCAweEMxRkMsIDB4QzFGRCwgMHhDMjAwLCAweEMyMDQsIDB4QzIwQywNCisgICAgMHhDMjBELCAweEMyMEYsIDB4QzIxMSwgMHhDMjE4LCAweEMyMTksIDB4QzIxQywgMHhDMjFGLCAweEMyMjAsDQorICAgIDB4QzIyOCwgMHhDMjI5LCAweEMyMkIsIDB4QzIyRCwgMHhDMjJGLCAweEMyMzEsIDB4QzIzMiwgMHhDMjM0LA0KKyAgICAweEMyNDgsIDB4QzI1MCwgMHhDMjUxLCAweEMyNTQsIDB4QzI1OCwgMHhDMjYwLCAweEMyNjUsIDB4QzI2QywNCisgICAgMHhDMjZELCAweEMyNzAsIDB4QzI3NCwgMHhDMjdDLCAweEMyN0QsIDB4QzI3RiwgMHhDMjgxLCAweEMyODgsDQorICAgIDB4QzI4OSwgMHhDMjkwLCAweEMyOTgsIDB4QzI5QiwgMHhDMjlELCAweEMyQTQsIDB4QzJBNSwgMHhDMkE4LA0KKyAgICAweEMyQUMsIDB4QzJBRCwgMHhDMkI0LCAweEMyQjUsIDB4QzJCNywgMHhDMkI5LCAweEMyREMsIDB4QzJERCwNCisgICAgMHhDMkUwLCAweEMyRTMsIDB4QzJFNCwgMHhDMkVCLCAweEMyRUMsIDB4QzJFRCwgMHhDMkVGLCAweEMyRjEsDQorICAgIDB4QzJGNiwgMHhDMkY4LCAweEMyRjksIDB4QzJGQiwgMHhDMkZDLCAweEMzMDAsIDB4QzMwOCwgMHhDMzA5LA0KKyAgICAweEMzMEMsIDB4QzMwRCwgMHhDMzEzLCAweEMzMTQsIDB4QzMxNSwgMHhDMzE4LCAweEMzMUMsIDB4QzMyNCwNCisgICAgMHhDMzI1LCAweEMzMjgsIDB4QzMyOSwgMHhDMzQ1LCAweEMzNjgsIDB4QzM2OSwgMHhDMzZDLCAweEMzNzAsDQorICAgIDB4QzM3MiwgMHhDMzc4LCAweEMzNzksIDB4QzM3QywgMHhDMzdELCAweEMzODQsIDB4QzM4OCwgMHhDMzhDLA0KKyAgICAweEMzQzAsIDB4QzNEOCwgMHhDM0Q5LCAweEMzREMsIDB4QzNERiwgMHhDM0UwLCAweEMzRTIsIDB4QzNFOCwNCisgICAgMHhDM0U5LCAweEMzRUQsIDB4QzNGNCwgMHhDM0Y1LCAweEMzRjgsIDB4QzQwOCwgMHhDNDEwLCAweEM0MjQsDQorICAgIDB4QzQyQywgMHhDNDMwLCAweEM0MzQsIDB4QzQzQywgMHhDNDNELCAweEM0NDgsIDB4QzQ2NCwgMHhDNDY1LA0KKyAgICAweEM0NjgsIDB4QzQ2QywgMHhDNDc0LCAweEM0NzUsIDB4QzQ3OSwgMHhDNDgwLCAweEM0OTQsIDB4QzQ5QywNCisgICAgMHhDNEI4LCAweEM0QkMsIDB4QzRFOSwgMHhDNEYwLCAweEM0RjEsIDB4QzRGNCwgMHhDNEY4LCAweEM0RkEsDQorICAgIDB4QzRGRiwgMHhDNTAwLCAweEM1MDEsIDB4QzUwQywgMHhDNTEwLCAweEM1MTQsIDB4QzUxQywgMHhDNTI4LA0KKyAgICAweEM1MjksIDB4QzUyQywgMHhDNTMwLCAweEM1MzgsIDB4QzUzOSwgMHhDNTNCLCAweEM1M0QsIDB4QzU0NCwNCisgICAgMHhDNTQ1LCAweEM1NDgsIDB4QzU0OSwgMHhDNTRBLCAweEM1NEMsIDB4QzU0RCwgMHhDNTRFLCAweEM1NTMsDQorICAgIDB4QzU1NCwgMHhDNTU1LCAweEM1NTcsIDB4QzU1OCwgMHhDNTU5LCAweEM1NUQsIDB4QzU1RSwgMHhDNTYwLA0KKyAgICAweEM1NjEsIDB4QzU2NCwgMHhDNTY4LCAweEM1NzAsIDB4QzU3MSwgMHhDNTczLCAweEM1NzQsIDB4QzU3NSwNCisgICAgMHhDNTdDLCAweEM1N0QsIDB4QzU4MCwgMHhDNTg0LCAweEM1ODcsIDB4QzU4QywgMHhDNThELCAweEM1OEYsDQorICAgIDB4QzU5MSwgMHhDNTk1LCAweEM1OTcsIDB4QzU5OCwgMHhDNTlDLCAweEM1QTAsIDB4QzVBOSwgMHhDNUI0LA0KKyAgICAweEM1QjUsIDB4QzVCOCwgMHhDNUI5LCAweEM1QkIsIDB4QzVCQywgMHhDNUJELCAweEM1QkUsIDB4QzVDNCwNCisgICAgMHhDNUM1LCAweEM1QzYsIDB4QzVDNywgMHhDNUM4LCAweEM1QzksIDB4QzVDQSwgMHhDNUNDLCAweEM1Q0UsDQorICAgIDB4QzVEMCwgMHhDNUQxLCAweEM1RDQsIDB4QzVEOCwgMHhDNUUwLCAweEM1RTEsIDB4QzVFMywgMHhDNUU1LA0KKyAgICAweEM1RUMsIDB4QzVFRCwgMHhDNUVFLCAweEM1RjAsIDB4QzVGNCwgMHhDNUY2LCAweEM1RjcsIDB4QzVGQywNCisgICAgMHhDNUZELCAweEM1RkUsIDB4QzVGRiwgMHhDNjAwLCAweEM2MDEsIDB4QzYwNSwgMHhDNjA2LCAweEM2MDcsDQorICAgIDB4QzYwOCwgMHhDNjBDLCAweEM2MTAsIDB4QzYxOCwgMHhDNjE5LCAweEM2MUIsIDB4QzYxQywgMHhDNjI0LA0KKyAgICAweEM2MjUsIDB4QzYyOCwgMHhDNjJDLCAweEM2MkQsIDB4QzYyRSwgMHhDNjMwLCAweEM2MzMsIDB4QzYzNCwNCisgICAgMHhDNjM1LCAweEM2MzcsIDB4QzYzOSwgMHhDNjNCLCAweEM2NDAsIDB4QzY0MSwgMHhDNjQ0LCAweEM2NDgsDQorICAgIDB4QzY1MCwgMHhDNjUxLCAweEM2NTMsIDB4QzY1NCwgMHhDNjU1LCAweEM2NUMsIDB4QzY1RCwgMHhDNjYwLA0KKyAgICAweEM2NkMsIDB4QzY2RiwgMHhDNjcxLCAweEM2NzgsIDB4QzY3OSwgMHhDNjdDLCAweEM2ODAsIDB4QzY4OCwNCisgICAgMHhDNjg5LCAweEM2OEIsIDB4QzY4RCwgMHhDNjk0LCAweEM2OTUsIDB4QzY5OCwgMHhDNjlDLCAweEM2QTQsDQorICAgIDB4QzZBNSwgMHhDNkE3LCAweEM2QTksIDB4QzZCMCwgMHhDNkIxLCAweEM2QjQsIDB4QzZCOCwgMHhDNkI5LA0KKyAgICAweEM2QkEsIDB4QzZDMCwgMHhDNkMxLCAweEM2QzMsIDB4QzZDNSwgMHhDNkNDLCAweEM2Q0QsIDB4QzZEMCwNCisgICAgMHhDNkQ0LCAweEM2REMsIDB4QzZERCwgMHhDNkUwLCAweEM2RTEsIDB4QzZFOCwgMHhDNkU5LCAweEM2RUMsDQorICAgIDB4QzZGMCwgMHhDNkY4LCAweEM2RjksIDB4QzZGRCwgMHhDNzA0LCAweEM3MDUsIDB4QzcwOCwgMHhDNzBDLA0KKyAgICAweEM3MTQsIDB4QzcxNSwgMHhDNzE3LCAweEM3MTksIDB4QzcyMCwgMHhDNzIxLCAweEM3MjQsIDB4QzcyOCwNCisgICAgMHhDNzMwLCAweEM3MzEsIDB4QzczMywgMHhDNzM1LCAweEM3MzcsIDB4QzczQywgMHhDNzNELCAweEM3NDAsDQorICAgIDB4Qzc0NCwgMHhDNzRBLCAweEM3NEMsIDB4Qzc0RCwgMHhDNzRGLCAweEM3NTEsIDB4Qzc1MiwgMHhDNzUzLA0KKyAgICAweEM3NTQsIDB4Qzc1NSwgMHhDNzU2LCAweEM3NTcsIDB4Qzc1OCwgMHhDNzVDLCAweEM3NjAsIDB4Qzc2OCwNCisgICAgMHhDNzZCLCAweEM3NzQsIDB4Qzc3NSwgMHhDNzc4LCAweEM3N0MsIDB4Qzc3RCwgMHhDNzdFLCAweEM3ODMsDQorICAgIDB4Qzc4NCwgMHhDNzg1LCAweEM3ODcsIDB4Qzc4OCwgMHhDNzg5LCAweEM3OEEsIDB4Qzc4RSwgMHhDNzkwLA0KKyAgICAweEM3OTEsIDB4Qzc5NCwgMHhDNzk2LCAweEM3OTcsIDB4Qzc5OCwgMHhDNzlBLCAweEM3QTAsIDB4QzdBMSwNCisgICAgMHhDN0EzLCAweEM3QTQsIDB4QzdBNSwgMHhDN0E2LCAweEM3QUMsIDB4QzdBRCwgMHhDN0IwLCAweEM3QjQsDQorICAgIDB4QzdCQywgMHhDN0JELCAweEM3QkYsIDB4QzdDMCwgMHhDN0MxLCAweEM3QzgsIDB4QzdDOSwgMHhDN0NDLA0KKyAgICAweEM3Q0UsIDB4QzdEMCwgMHhDN0Q4LCAweEM3REQsIDB4QzdFNCwgMHhDN0U4LCAweEM3RUMsIDB4QzgwMCwNCisgICAgMHhDODAxLCAweEM4MDQsIDB4QzgwOCwgMHhDODBBLCAweEM4MTAsIDB4QzgxMSwgMHhDODEzLCAweEM4MTUsDQorICAgIDB4QzgxNiwgMHhDODFDLCAweEM4MUQsIDB4QzgyMCwgMHhDODI0LCAweEM4MkMsIDB4QzgyRCwgMHhDODJGLA0KKyAgICAweEM4MzEsIDB4QzgzOCwgMHhDODNDLCAweEM4NDAsIDB4Qzg0OCwgMHhDODQ5LCAweEM4NEMsIDB4Qzg0RCwNCisgICAgMHhDODU0LCAweEM4NzAsIDB4Qzg3MSwgMHhDODc0LCAweEM4NzgsIDB4Qzg3QSwgMHhDODgwLCAweEM4ODEsDQorICAgIDB4Qzg4MywgMHhDODg1LCAweEM4ODYsIDB4Qzg4NywgMHhDODhCLCAweEM4OEMsIDB4Qzg4RCwgMHhDODk0LA0KKyAgICAweEM4OUQsIDB4Qzg5RiwgMHhDOEExLCAweEM4QTgsIDB4QzhCQywgMHhDOEJELCAweEM4QzQsIDB4QzhDOCwNCisgICAgMHhDOENDLCAweEM4RDQsIDB4QzhENSwgMHhDOEQ3LCAweEM4RDksIDB4QzhFMCwgMHhDOEUxLCAweEM4RTQsDQorICAgIDB4QzhGNSwgMHhDOEZDLCAweEM4RkQsIDB4QzkwMCwgMHhDOTA0LCAweEM5MDUsIDB4QzkwNiwgMHhDOTBDLA0KKyAgICAweEM5MEQsIDB4QzkwRiwgMHhDOTExLCAweEM5MTgsIDB4QzkyQywgMHhDOTM0LCAweEM5NTAsIDB4Qzk1MSwNCisgICAgMHhDOTU0LCAweEM5NTgsIDB4Qzk2MCwgMHhDOTYxLCAweEM5NjMsIDB4Qzk2QywgMHhDOTcwLCAweEM5NzQsDQorICAgIDB4Qzk3QywgMHhDOTg4LCAweEM5ODksIDB4Qzk4QywgMHhDOTkwLCAweEM5OTgsIDB4Qzk5OSwgMHhDOTlCLA0KKyAgICAweEM5OUQsIDB4QzlDMCwgMHhDOUMxLCAweEM5QzQsIDB4QzlDNywgMHhDOUM4LCAweEM5Q0EsIDB4QzlEMCwNCisgICAgMHhDOUQxLCAweEM5RDMsIDB4QzlENSwgMHhDOUQ2LCAweEM5RDksIDB4QzlEQSwgMHhDOURDLCAweEM5REQsDQorICAgIDB4QzlFMCwgMHhDOUUyLCAweEM5RTQsIDB4QzlFNywgMHhDOUVDLCAweEM5RUQsIDB4QzlFRiwgMHhDOUYwLA0KKyAgICAweEM5RjEsIDB4QzlGOCwgMHhDOUY5LCAweEM5RkMsIDB4Q0EwMCwgMHhDQTA4LCAweENBMDksIDB4Q0EwQiwNCisgICAgMHhDQTBDLCAweENBMEQsIDB4Q0ExNCwgMHhDQTE4LCAweENBMjksIDB4Q0E0QywgMHhDQTRELCAweENBNTAsDQorICAgIDB4Q0E1NCwgMHhDQTVDLCAweENBNUQsIDB4Q0E1RiwgMHhDQTYwLCAweENBNjEsIDB4Q0E2OCwgMHhDQTdELA0KKyAgICAweENBODQsIDB4Q0E5OCwgMHhDQUJDLCAweENBQkQsIDB4Q0FDMCwgMHhDQUM0LCAweENBQ0MsIDB4Q0FDRCwNCisgICAgMHhDQUNGLCAweENBRDEsIDB4Q0FEMywgMHhDQUQ4LCAweENBRDksIDB4Q0FFMCwgMHhDQUVDLCAweENBRjQsDQorICAgIDB4Q0IwOCwgMHhDQjEwLCAweENCMTQsIDB4Q0IxOCwgMHhDQjIwLCAweENCMjEsIDB4Q0I0MSwgMHhDQjQ4LA0KKyAgICAweENCNDksIDB4Q0I0QywgMHhDQjUwLCAweENCNTgsIDB4Q0I1OSwgMHhDQjVELCAweENCNjQsIDB4Q0I3OCwNCisgICAgMHhDQjc5LCAweENCOUMsIDB4Q0JCOCwgMHhDQkQ0LCAweENCRTQsIDB4Q0JFNywgMHhDQkU5LCAweENDMEMsDQorICAgIDB4Q0MwRCwgMHhDQzEwLCAweENDMTQsIDB4Q0MxQywgMHhDQzFELCAweENDMjEsIDB4Q0MyMiwgMHhDQzI3LA0KKyAgICAweENDMjgsIDB4Q0MyOSwgMHhDQzJDLCAweENDMkUsIDB4Q0MzMCwgMHhDQzM4LCAweENDMzksIDB4Q0MzQiwNCisgICAgMHhDQzNDLCAweENDM0QsIDB4Q0MzRSwgMHhDQzQ0LCAweENDNDUsIDB4Q0M0OCwgMHhDQzRDLCAweENDNTQsDQorICAgIDB4Q0M1NSwgMHhDQzU3LCAweENDNTgsIDB4Q0M1OSwgMHhDQzYwLCAweENDNjQsIDB4Q0M2NiwgMHhDQzY4LA0KKyAgICAweENDNzAsIDB4Q0M3NSwgMHhDQzk4LCAweENDOTksIDB4Q0M5QywgMHhDQ0EwLCAweENDQTgsIDB4Q0NBOSwNCisgICAgMHhDQ0FCLCAweENDQUMsIDB4Q0NBRCwgMHhDQ0I0LCAweENDQjUsIDB4Q0NCOCwgMHhDQ0JDLCAweENDQzQsDQorICAgIDB4Q0NDNSwgMHhDQ0M3LCAweENDQzksIDB4Q0NEMCwgMHhDQ0Q0LCAweENDRTQsIDB4Q0NFQywgMHhDQ0YwLA0KKyAgICAweENEMDEsIDB4Q0QwOCwgMHhDRDA5LCAweENEMEMsIDB4Q0QxMCwgMHhDRDE4LCAweENEMTksIDB4Q0QxQiwNCisgICAgMHhDRDFELCAweENEMjQsIDB4Q0QyOCwgMHhDRDJDLCAweENEMzksIDB4Q0Q1QywgMHhDRDYwLCAweENENjQsDQorICAgIDB4Q0Q2QywgMHhDRDZELCAweENENkYsIDB4Q0Q3MSwgMHhDRDc4LCAweENEODgsIDB4Q0Q5NCwgMHhDRDk1LA0KKyAgICAweENEOTgsIDB4Q0Q5QywgMHhDREE0LCAweENEQTUsIDB4Q0RBNywgMHhDREE5LCAweENEQjAsIDB4Q0RDNCwNCisgICAgMHhDRENDLCAweENERDAsIDB4Q0RFOCwgMHhDREVDLCAweENERjAsIDB4Q0RGOCwgMHhDREY5LCAweENERkIsDQorICAgIDB4Q0RGRCwgMHhDRTA0LCAweENFMDgsIDB4Q0UwQywgMHhDRTE0LCAweENFMTksIDB4Q0UyMCwgMHhDRTIxLA0KKyAgICAweENFMjQsIDB4Q0UyOCwgMHhDRTMwLCAweENFMzEsIDB4Q0UzMywgMHhDRTM1LCAweENFNTgsIDB4Q0U1OSwNCisgICAgMHhDRTVDLCAweENFNUYsIDB4Q0U2MCwgMHhDRTYxLCAweENFNjgsIDB4Q0U2OSwgMHhDRTZCLCAweENFNkQsDQorICAgIDB4Q0U3NCwgMHhDRTc1LCAweENFNzgsIDB4Q0U3QywgMHhDRTg0LCAweENFODUsIDB4Q0U4NywgMHhDRTg5LA0KKyAgICAweENFOTAsIDB4Q0U5MSwgMHhDRTk0LCAweENFOTgsIDB4Q0VBMCwgMHhDRUExLCAweENFQTMsIDB4Q0VBNCwNCisgICAgMHhDRUE1LCAweENFQUMsIDB4Q0VBRCwgMHhDRUMxLCAweENFRTQsIDB4Q0VFNSwgMHhDRUU4LCAweENFRUIsDQorICAgIDB4Q0VFQywgMHhDRUY0LCAweENFRjUsIDB4Q0VGNywgMHhDRUY4LCAweENFRjksIDB4Q0YwMCwgMHhDRjAxLA0KKyAgICAweENGMDQsIDB4Q0YwOCwgMHhDRjEwLCAweENGMTEsIDB4Q0YxMywgMHhDRjE1LCAweENGMUMsIDB4Q0YyMCwNCisgICAgMHhDRjI0LCAweENGMkMsIDB4Q0YyRCwgMHhDRjJGLCAweENGMzAsIDB4Q0YzMSwgMHhDRjM4LCAweENGNTQsDQorICAgIDB4Q0Y1NSwgMHhDRjU4LCAweENGNUMsIDB4Q0Y2NCwgMHhDRjY1LCAweENGNjcsIDB4Q0Y2OSwgMHhDRjcwLA0KKyAgICAweENGNzEsIDB4Q0Y3NCwgMHhDRjc4LCAweENGODAsIDB4Q0Y4NSwgMHhDRjhDLCAweENGQTEsIDB4Q0ZBOCwNCisgICAgMHhDRkIwLCAweENGQzQsIDB4Q0ZFMCwgMHhDRkUxLCAweENGRTQsIDB4Q0ZFOCwgMHhDRkYwLCAweENGRjEsDQorICAgIDB4Q0ZGMywgMHhDRkY1LCAweENGRkMsIDB4RDAwMCwgMHhEMDA0LCAweEQwMTEsIDB4RDAxOCwgMHhEMDJELA0KKyAgICAweEQwMzQsIDB4RDAzNSwgMHhEMDM4LCAweEQwM0MsIDB4RDA0NCwgMHhEMDQ1LCAweEQwNDcsIDB4RDA0OSwNCisgICAgMHhEMDUwLCAweEQwNTQsIDB4RDA1OCwgMHhEMDYwLCAweEQwNkMsIDB4RDA2RCwgMHhEMDcwLCAweEQwNzQsDQorICAgIDB4RDA3QywgMHhEMDdELCAweEQwODEsIDB4RDBBNCwgMHhEMEE1LCAweEQwQTgsIDB4RDBBQywgMHhEMEI0LA0KKyAgICAweEQwQjUsIDB4RDBCNywgMHhEMEI5LCAweEQwQzAsIDB4RDBDMSwgMHhEMEM0LCAweEQwQzgsIDB4RDBDOSwNCisgICAgMHhEMEQwLCAweEQwRDEsIDB4RDBEMywgMHhEMEQ0LCAweEQwRDUsIDB4RDBEQywgMHhEMERELCAweEQwRTAsDQorICAgIDB4RDBFNCwgMHhEMEVDLCAweEQwRUQsIDB4RDBFRiwgMHhEMEYwLCAweEQwRjEsIDB4RDBGOCwgMHhEMTBELA0KKyAgICAweEQxMzAsIDB4RDEzMSwgMHhEMTM0LCAweEQxMzgsIDB4RDEzQSwgMHhEMTQwLCAweEQxNDEsIDB4RDE0MywNCisgICAgMHhEMTQ0LCAweEQxNDUsIDB4RDE0QywgMHhEMTRELCAweEQxNTAsIDB4RDE1NCwgMHhEMTVDLCAweEQxNUQsDQorICAgIDB4RDE1RiwgMHhEMTYxLCAweEQxNjgsIDB4RDE2QywgMHhEMTdDLCAweEQxODQsIDB4RDE4OCwgMHhEMUEwLA0KKyAgICAweEQxQTEsIDB4RDFBNCwgMHhEMUE4LCAweEQxQjAsIDB4RDFCMSwgMHhEMUIzLCAweEQxQjUsIDB4RDFCQSwNCisgICAgMHhEMUJDLCAweEQxQzAsIDB4RDFEOCwgMHhEMUY0LCAweEQxRjgsIDB4RDIwNywgMHhEMjA5LCAweEQyMTAsDQorICAgIDB4RDIyQywgMHhEMjJELCAweEQyMzAsIDB4RDIzNCwgMHhEMjNDLCAweEQyM0QsIDB4RDIzRiwgMHhEMjQxLA0KKyAgICAweEQyNDgsIDB4RDI1QywgMHhEMjY0LCAweEQyODAsIDB4RDI4MSwgMHhEMjg0LCAweEQyODgsIDB4RDI5MCwNCisgICAgMHhEMjkxLCAweEQyOTUsIDB4RDI5QywgMHhEMkEwLCAweEQyQTQsIDB4RDJBQywgMHhEMkIxLCAweEQyQjgsDQorICAgIDB4RDJCOSwgMHhEMkJDLCAweEQyQkYsIDB4RDJDMCwgMHhEMkMyLCAweEQyQzgsIDB4RDJDOSwgMHhEMkNCLA0KKyAgICAweEQyRDQsIDB4RDJEOCwgMHhEMkRDLCAweEQyRTQsIDB4RDJFNSwgMHhEMkYwLCAweEQyRjEsIDB4RDJGNCwNCisgICAgMHhEMkY4LCAweEQzMDAsIDB4RDMwMSwgMHhEMzAzLCAweEQzMDUsIDB4RDMwQywgMHhEMzBELCAweEQzMEUsDQorICAgIDB4RDMxMCwgMHhEMzE0LCAweEQzMTYsIDB4RDMxQywgMHhEMzFELCAweEQzMUYsIDB4RDMyMCwgMHhEMzIxLA0KKyAgICAweEQzMjUsIDB4RDMyOCwgMHhEMzI5LCAweEQzMkMsIDB4RDMzMCwgMHhEMzM4LCAweEQzMzksIDB4RDMzQiwNCisgICAgMHhEMzNDLCAweEQzM0QsIDB4RDM0NCwgMHhEMzQ1LCAweEQzN0MsIDB4RDM3RCwgMHhEMzgwLCAweEQzODQsDQorICAgIDB4RDM4QywgMHhEMzhELCAweEQzOEYsIDB4RDM5MCwgMHhEMzkxLCAweEQzOTgsIDB4RDM5OSwgMHhEMzlDLA0KKyAgICAweEQzQTAsIDB4RDNBOCwgMHhEM0E5LCAweEQzQUIsIDB4RDNBRCwgMHhEM0I0LCAweEQzQjgsIDB4RDNCQywNCisgICAgMHhEM0M0LCAweEQzQzUsIDB4RDNDOCwgMHhEM0M5LCAweEQzRDAsIDB4RDNEOCwgMHhEM0UxLCAweEQzRTMsDQorICAgIDB4RDNFQywgMHhEM0VELCAweEQzRjAsIDB4RDNGNCwgMHhEM0ZDLCAweEQzRkQsIDB4RDNGRiwgMHhENDAxLA0KKyAgICAweEQ0MDgsIDB4RDQxRCwgMHhENDQwLCAweEQ0NDQsIDB4RDQ1QywgMHhENDYwLCAweEQ0NjQsIDB4RDQ2RCwNCisgICAgMHhENDZGLCAweEQ0NzgsIDB4RDQ3OSwgMHhENDdDLCAweEQ0N0YsIDB4RDQ4MCwgMHhENDgyLCAweEQ0ODgsDQorICAgIDB4RDQ4OSwgMHhENDhCLCAweEQ0OEQsIDB4RDQ5NCwgMHhENEE5LCAweEQ0Q0MsIDB4RDREMCwgMHhENEQ0LA0KKyAgICAweEQ0REMsIDB4RDRERiwgMHhENEU4LCAweEQ0RUMsIDB4RDRGMCwgMHhENEY4LCAweEQ0RkIsIDB4RDRGRCwNCisgICAgMHhENTA0LCAweEQ1MDgsIDB4RDUwQywgMHhENTE0LCAweEQ1MTUsIDB4RDUxNywgMHhENTNDLCAweEQ1M0QsDQorICAgIDB4RDU0MCwgMHhENTQ0LCAweEQ1NEMsIDB4RDU0RCwgMHhENTRGLCAweEQ1NTEsIDB4RDU1OCwgMHhENTU5LA0KKyAgICAweEQ1NUMsIDB4RDU2MCwgMHhENTY1LCAweEQ1NjgsIDB4RDU2OSwgMHhENTZCLCAweEQ1NkQsIDB4RDU3NCwNCisgICAgMHhENTc1LCAweEQ1NzgsIDB4RDU3QywgMHhENTg0LCAweEQ1ODUsIDB4RDU4NywgMHhENTg4LCAweEQ1ODksDQorICAgIDB4RDU5MCwgMHhENUE1LCAweEQ1QzgsIDB4RDVDOSwgMHhENUNDLCAweEQ1RDAsIDB4RDVEMiwgMHhENUQ4LA0KKyAgICAweEQ1RDksIDB4RDVEQiwgMHhENURELCAweEQ1RTQsIDB4RDVFNSwgMHhENUU4LCAweEQ1RUMsIDB4RDVGNCwNCisgICAgMHhENUY1LCAweEQ1RjcsIDB4RDVGOSwgMHhENjAwLCAweEQ2MDEsIDB4RDYwNCwgMHhENjA4LCAweEQ2MTAsDQorICAgIDB4RDYxMSwgMHhENjEzLCAweEQ2MTQsIDB4RDYxNSwgMHhENjFDLCAweEQ2MjAsIDB4RDYyNCwgMHhENjJELA0KKyAgICAweEQ2MzgsIDB4RDYzOSwgMHhENjNDLCAweEQ2NDAsIDB4RDY0NSwgMHhENjQ4LCAweEQ2NDksIDB4RDY0QiwNCisgICAgMHhENjRELCAweEQ2NTEsIDB4RDY1NCwgMHhENjU1LCAweEQ2NTgsIDB4RDY1QywgMHhENjY3LCAweEQ2NjksDQorICAgIDB4RDY3MCwgMHhENjcxLCAweEQ2NzQsIDB4RDY4MywgMHhENjg1LCAweEQ2OEMsIDB4RDY4RCwgMHhENjkwLA0KKyAgICAweEQ2OTQsIDB4RDY5RCwgMHhENjlGLCAweEQ2QTEsIDB4RDZBOCwgMHhENkFDLCAweEQ2QjAsIDB4RDZCOSwNCisgICAgMHhENkJCLCAweEQ2QzQsIDB4RDZDNSwgMHhENkM4LCAweEQ2Q0MsIDB4RDZEMSwgMHhENkQ0LCAweEQ2RDcsDQorICAgIDB4RDZEOSwgMHhENkUwLCAweEQ2RTQsIDB4RDZFOCwgMHhENkYwLCAweEQ2RjUsIDB4RDZGQywgMHhENkZELA0KKyAgICAweEQ3MDAsIDB4RDcwNCwgMHhENzExLCAweEQ3MTgsIDB4RDcxOSwgMHhENzFDLCAweEQ3MjAsIDB4RDcyOCwNCisgICAgMHhENzI5LCAweEQ3MkIsIDB4RDcyRCwgMHhENzM0LCAweEQ3MzUsIDB4RDczOCwgMHhENzNDLCAweEQ3NDQsDQorICAgIDB4RDc0NywgMHhENzQ5LCAweEQ3NTAsIDB4RDc1MSwgMHhENzU0LCAweEQ3NTYsIDB4RDc1NywgMHhENzU4LA0KKyAgICAweEQ3NTksIDB4RDc2MCwgMHhENzYxLCAweEQ3NjMsIDB4RDc2NSwgMHhENzY5LCAweEQ3NkMsIDB4RDc3MCwNCisgICAgMHhENzc0LCAweEQ3N0MsIDB4RDc3RCwgMHhENzgxLCAweEQ3ODgsIDB4RDc4OSwgMHhENzhDLCAweEQ3OTAsDQorICAgIDB4RDc5OCwgMHhENzk5LCAweEQ3OUIsIDB4RDc5RCwgMHg0RjNELCAweDRGNzMsIDB4NTA0NywgMHg1MEY5LA0KKyAgICAweDUyQTAsIDB4NTNFRiwgMHg1NDc1LCAweDU0RTUsIDB4NTYwOSwgMHg1QUMxLCAweDVCQjYsIDB4NjY4NywNCisgICAgMHg2N0I2LCAweDY3QjcsIDB4NjdFRiwgMHg2QjRDLCAweDczQzIsIDB4NzVDMiwgMHg3QTNDLCAweDgyREIsDQorICAgIDB4ODMwNCwgMHg4ODU3LCAweDg4ODgsIDB4OEEzNiwgMHg4Q0M4LCAweDhEQ0YsIDB4OEVGQiwgMHg4RkU2LA0KKyAgICAweDk5RDUsIDB4NTIzQiwgMHg1Mzc0LCAweDU0MDQsIDB4NjA2QSwgMHg2MTY0LCAweDZCQkMsIDB4NzNDRiwNCisgICAgMHg4MTFBLCAweDg5QkEsIDB4ODlEMiwgMHg5NUEzLCAweDRGODMsIDB4NTIwQSwgMHg1OEJFLCAweDU5NzgsDQorICAgIDB4NTlFNiwgMHg1RTcyLCAweDVFNzksIDB4NjFDNywgMHg2M0MwLCAweDY3NDYsIDB4NjdFQywgMHg2ODdGLA0KKyAgICAweDZGOTcsIDB4NzY0RSwgMHg3NzBCLCAweDc4RjUsIDB4N0EwOCwgMHg3QUZGLCAweDdDMjEsIDB4ODA5RCwNCisgICAgMHg4MjZFLCAweDgyNzEsIDB4OEFFQiwgMHg5NTkzLCAweDRFNkIsIDB4NTU5RCwgMHg2NkY3LCAweDZFMzQsDQorICAgIDB4NzhBMywgMHg3QUVELCAweDg0NUIsIDB4ODkxMCwgMHg4NzRFLCAweDk3QTgsIDB4NTJEOCwgMHg1NzRFLA0KKyAgICAweDU4MkEsIDB4NUQ0QywgMHg2MTFGLCAweDYxQkUsIDB4NjIyMSwgMHg2NTYyLCAweDY3RDEsIDB4NkE0NCwNCisgICAgMHg2RTFCLCAweDc1MTgsIDB4NzVCMywgMHg3NkUzLCAweDc3QjAsIDB4N0QzQSwgMHg5MEFGLCAweDk0NTEsDQorICAgIDB4OTQ1MiwgMHg5Rjk1LCAweDUzMjMsIDB4NUNBQywgMHg3NTMyLCAweDgwREIsIDB4OTI0MCwgMHg5NTk4LA0KKyAgICAweDUyNUIsIDB4NTgwOCwgMHg1OURDLCAweDVDQTEsIDB4NUQxNywgMHg1RUI3LCAweDVGM0EsIDB4NUY0QSwNCisgICAgMHg2MTc3LCAweDZDNUYsIDB4NzU3QSwgMHg3NTg2LCAweDdDRTAsIDB4N0Q3MywgMHg3REIxLCAweDdGOEMsDQorICAgIDB4ODE1NCwgMHg4MjIxLCAweDg1OTEsIDB4ODk0MSwgMHg4QjFCLCAweDkyRkMsIDB4OTY0RCwgMHg5QzQ3LA0KKyAgICAweDRFQ0IsIDB4NEVGNywgMHg1MDBCLCAweDUxRjEsIDB4NTg0RiwgMHg2MTM3LCAweDYxM0UsIDB4NjE2OCwNCisgICAgMHg2NTM5LCAweDY5RUEsIDB4NkYxMSwgMHg3NUE1LCAweDc2ODYsIDB4NzZENiwgMHg3Qjg3LCAweDgyQTUsDQorICAgIDB4ODRDQiwgMHg5M0E3LCAweDk1OEIsIDB4NTU4MCwgMHg1QkEyLCAweDU3NTEsIDB4N0NCMywgMHg3RkI5LA0KKyAgICAweDkxQjUsIDB4NTAyOCwgMHg1M0JCLCAweDVDNDUsIDB4NURFOCwgMHg2MkQyLCAweDYzNkUsIDB4NjREQSwNCisgICAgMHg2NEU3LCAweDZFMjAsIDB4NzBBQywgMHg3OTVCLCAweDhEREQsIDB4OEUxRSwgMHg5MDdELCAweDkyNDUsDQorICAgIDB4OTJGOCwgMHg0RTdFLCAweDRFRjYsIDB4NTA2NSwgMHg1REZFLCAweDVFRkEsIDB4NjEwNiwgMHg2OTU3LA0KKyAgICAweDgxNzEsIDB4ODY1NCwgMHg4RTQ3LCAweDkzNzUsIDB4OUEyQiwgMHg0RTVFLCAweDUwOTEsIDB4Njc3MCwNCisgICAgMHg2ODQwLCAweDUxMDksIDB4NTI4RCwgMHg1MjkyLCAweDZBQTIsIDB4NzdCQywgMHg5MjEwLCAweDlFRDQsDQorICAgIDB4NTJBQiwgMHg2MDJGLCAweDhGRjIsIDB4NTA0OCwgMHg2MUE5LCAweDYzRUQsIDB4NjRDQSwgMHg2ODNDLA0KKyAgICAweDZBODQsIDB4NkZDMCwgMHg4MTg4LCAweDg5QTEsIDB4OTY5NCwgMHg1ODA1LCAweDcyN0QsIDB4NzJBQywNCisgICAgMHg3NTA0LCAweDdENzksIDB4N0U2RCwgMHg4MEE5LCAweDg5OEIsIDB4OEI3NCwgMHg5MDYzLCAweDlENTEsDQorICAgIDB4NjI4OSwgMHg2QzdBLCAweDZGNTQsIDB4N0Q1MCwgMHg3RjNBLCAweDhBMjMsIDB4NTE3QywgMHg2MTRBLA0KKyAgICAweDdCOUQsIDB4OEIxOSwgMHg5MjU3LCAweDkzOEMsIDB4NEVBQywgMHg0RkQzLCAweDUwMUUsIDB4NTBCRSwNCisgICAgMHg1MTA2LCAweDUyQzEsIDB4NTJDRCwgMHg1MzdGLCAweDU3NzAsIDB4NTg4MywgMHg1RTlBLCAweDVGOTEsDQorICAgIDB4NjE3NiwgMHg2MUFDLCAweDY0Q0UsIDB4NjU2QywgMHg2NjZGLCAweDY2QkIsIDB4NjZGNCwgMHg2ODk3LA0KKyAgICAweDZEODcsIDB4NzA4NSwgMHg3MEYxLCAweDc0OUYsIDB4NzRBNSwgMHg3NENBLCAweDc1RDksIDB4Nzg2QywNCisgICAgMHg3OEVDLCAweDdBREYsIDB4N0FGNiwgMHg3RDQ1LCAweDdEOTMsIDB4ODAxNSwgMHg4MDNGLCAweDgxMUIsDQorICAgIDB4ODM5NiwgMHg4QjY2LCAweDhGMTUsIDB4OTAxNSwgMHg5M0UxLCAweDk4MDMsIDB4OTgzOCwgMHg5QTVBLA0KKyAgICAweDlCRTgsIDB4NEZDMiwgMHg1NTUzLCAweDU4M0EsIDB4NTk1MSwgMHg1QjYzLCAweDVDNDYsIDB4NjBCOCwNCisgICAgMHg2MjEyLCAweDY4NDIsIDB4NjhCMCwgMHg2OEU4LCAweDZFQUEsIDB4NzU0QywgMHg3Njc4LCAweDc4Q0UsDQorICAgIDB4N0EzRCwgMHg3Q0ZCLCAweDdFNkIsIDB4N0U3QywgMHg4QTA4LCAweDhBQTEsIDB4OEMzRiwgMHg5NjhFLA0KKyAgICAweDlEQzQsIDB4NTNFNCwgMHg1M0U5LCAweDU0NEEsIDB4NTQ3MSwgMHg1NkZBLCAweDU5RDEsIDB4NUI2NCwNCisgICAgMHg1QzNCLCAweDVFQUIsIDB4NjJGNywgMHg2NTM3LCAweDY1NDUsIDB4NjU3MiwgMHg2NkEwLCAweDY3QUYsDQorICAgIDB4NjlDMSwgMHg2Q0JELCAweDc1RkMsIDB4NzY5MCwgMHg3NzdFLCAweDdBM0YsIDB4N0Y5NCwgMHg4MDAzLA0KKyAgICAweDgwQTEsIDB4ODE4RiwgMHg4MkU2LCAweDgyRkQsIDB4ODNGMCwgMHg4NUMxLCAweDg4MzEsIDB4ODhCNCwNCisgICAgMHg4QUE1LCAweDhGOUMsIDB4OTMyRSwgMHg5NkM3LCAweDk4NjcsIDB4OUFEOCwgMHg5RjEzLCAweDU0RUQsDQorICAgIDB4NjU5QiwgMHg2NkYyLCAweDY4OEYsIDB4N0E0MCwgMHg4QzM3LCAweDlENjAsIDB4NTZGMCwgMHg1NzY0LA0KKyAgICAweDVEMTEsIDB4NjYwNiwgMHg2OEIxLCAweDY4Q0QsIDB4NkVGRSwgMHg3NDI4LCAweDg4OUUsIDB4OUJFNCwNCisgICAgMHg2QzY4LCAweDlBQTgsIDB4NEY5QiwgMHg1MTZDLCAweDUxNzEsIDB4NTI5RiwgMHg1QjU0LCAweDVERTUsDQorICAgIDB4NjA1MCwgMHg2MDZELCAweDYyRjEsIDB4NjNBNywgMHg2NTNCLCAweDczRDksIDB4N0E3QSwgMHg4NkEzLA0KKyAgICAweDhDQTIsIDB4OTc4RiwgMHg0RTMyLCAweDVCRTEsIDB4NjIwOCwgMHg2NzlDLCAweDc0REMsIDB4NzlEMSwNCisgICAgMHg4M0QzLCAweDhBODcsIDB4OEFCMiwgMHg4REU4LCAweDkwNEUsIDB4OTM0QiwgMHg5ODQ2LCAweDVFRDMsDQorICAgIDB4NjlFOCwgMHg4NUZGLCAweDkwRUQsIDB4NTFBMCwgMHg1Qjk4LCAweDVCRUMsIDB4NjE2MywgMHg2OEZBLA0KKyAgICAweDZCM0UsIDB4NzA0QywgMHg3NDJGLCAweDc0RDgsIDB4N0JBMSwgMHg3RjUwLCAweDgzQzUsIDB4ODlDMCwNCisgICAgMHg4Q0FCLCAweDk1REMsIDB4OTkyOCwgMHg1MjJFLCAweDYwNUQsIDB4NjJFQywgMHg5MDAyLCAweDRGOEEsDQorICAgIDB4NTE0OSwgMHg1MzIxLCAweDU4RDksIDB4NUVFMywgMHg2NkUwLCAweDZEMzgsIDB4NzA5QSwgMHg3MkMyLA0KKyAgICAweDczRDYsIDB4N0I1MCwgMHg4MEYxLCAweDk0NUIsIDB4NTM2NiwgMHg2MzlCLCAweDdGNkIsIDB4NEU1NiwNCisgICAgMHg1MDgwLCAweDU4NEEsIDB4NThERSwgMHg2MDJBLCAweDYxMjcsIDB4NjJEMCwgMHg2OUQwLCAweDlCNDEsDQorICAgIDB4NUI4RiwgMHg3RDE4LCAweDgwQjEsIDB4OEY1RiwgMHg0RUE0LCAweDUwRDEsIDB4NTRBQywgMHg1NUFDLA0KKyAgICAweDVCMEMsIDB4NURBMCwgMHg1REU3LCAweDY1MkEsIDB4NjU0RSwgMHg2ODIxLCAweDZBNEIsIDB4NzJFMSwNCisgICAgMHg3NjhFLCAweDc3RUYsIDB4N0Q1RSwgMHg3RkY5LCAweDgxQTAsIDB4ODU0RSwgMHg4NkRGLCAweDhGMDMsDQorICAgIDB4OEY0RSwgMHg5MENBLCAweDk5MDMsIDB4OUE1NSwgMHg5QkFCLCAweDRFMTgsIDB4NEU0NSwgMHg0RTVELA0KKyAgICAweDRFQzcsIDB4NEZGMSwgMHg1MTc3LCAweDUyRkUsIDB4NTM0MCwgMHg1M0UzLCAweDUzRTUsIDB4NTQ4RSwNCisgICAgMHg1NjE0LCAweDU3NzUsIDB4NTdBMiwgMHg1QkM3LCAweDVEODcsIDB4NUVEMCwgMHg2MUZDLCAweDYyRDgsDQorICAgIDB4NjU1MSwgMHg2N0I4LCAweDY3RTksIDB4NjlDQiwgMHg2QjUwLCAweDZCQzYsIDB4NkJFQywgMHg2QzQyLA0KKyAgICAweDZFOUQsIDB4NzA3OCwgMHg3MkQ3LCAweDczOTYsIDB4NzQwMywgMHg3N0JGLCAweDc3RTksIDB4N0E3NiwNCisgICAgMHg3RDdGLCAweDgwMDksIDB4ODFGQywgMHg4MjA1LCAweDgyMEEsIDB4ODJERiwgMHg4ODYyLCAweDhCMzMsDQorICAgIDB4OENGQywgMHg4RUMwLCAweDkwMTEsIDB4OTBCMSwgMHg5MjY0LCAweDkyQjYsIDB4OTlEMiwgMHg5QTQ1LA0KKyAgICAweDlDRTksIDB4OURENywgMHg5RjlDLCAweDU3MEIsIDB4NUM0MCwgMHg4M0NBLCAweDk3QTAsIDB4OTdBQiwNCisgICAgMHg5RUI0LCAweDU0MUIsIDB4N0E5OCwgMHg3RkE0LCAweDg4RDksIDB4OEVDRCwgMHg5MEUxLCAweDU4MDAsDQorICAgIDB4NUM0OCwgMHg2Mzk4LCAweDdBOUYsIDB4NUJBRSwgMHg1RjEzLCAweDdBNzksIDB4N0FBRSwgMHg4MjhFLA0KKyAgICAweDhFQUMsIDB4NTAyNiwgMHg1MjM4LCAweDUyRjgsIDB4NTM3NywgMHg1NzA4LCAweDYyRjMsIDB4NjM3MiwNCisgICAgMHg2QjBBLCAweDZEQzMsIDB4NzczNywgMHg1M0E1LCAweDczNTcsIDB4ODU2OCwgMHg4RTc2LCAweDk1RDUsDQorICAgIDB4NjczQSwgMHg2QUMzLCAweDZGNzAsIDB4OEE2RCwgMHg4RUNDLCAweDk5NEIsIDB4NjY3NywgMHg2Qjc4LA0KKyAgICAweDhDQjQsIDB4OUIzQywgMHg1M0VCLCAweDU3MkQsIDB4NTk0RSwgMHg2M0M2LCAweDY5RkIsIDB4NzNFQSwNCisgICAgMHg3ODQ1LCAweDdBQkEsIDB4N0FDNSwgMHg3Q0ZFLCAweDg0NzUsIDB4ODk4RiwgMHg4RDczLCAweDkwMzUsDQorICAgIDB4OTVBOCwgMHg1MkZCLCAweDU3NDcsIDB4NzU0NywgMHg3QjYwLCAweDgzQ0MsIDB4OTIxRSwgMHg2QTU4LA0KKyAgICAweDUxNEIsIDB4NTI0QiwgMHg1Mjg3LCAweDYyMUYsIDB4NjhEOCwgMHg2OTc1LCAweDk2OTksIDB4NTBDNSwNCisgICAgMHg1MkE0LCAweDUyRTQsIDB4NjFDMywgMHg2NUE0LCAweDY4MzksIDB4NjlGRiwgMHg3NDdFLCAweDdCNEIsDQorICAgIDB4ODJCOSwgMHg4M0VCLCAweDg5QjIsIDB4OEIzOSwgMHg4RkQxLCAweDk5NDksIDB4NEVDQSwgMHg1OTk3LA0KKyAgICAweDY0RDIsIDB4NjYxMSwgMHg2QThFLCAweDc0MzQsIDB4Nzk4MSwgMHg3OUJELCAweDgyQTksIDB4ODg3RSwNCisgICAgMHg4ODdGLCAweDg5NUYsIDB4OTMyNiwgMHg0RjBCLCAweDUzQ0EsIDB4NjAyNSwgMHg2MjcxLCAweDZDNzIsDQorICAgIDB4N0QxQSwgMHg3RDY2LCAweDRFOTgsIDB4NTE2MiwgMHg3N0RDLCAweDgwQUYsIDB4NEYwMSwgMHg0RjBFLA0KKyAgICAweDUxNzYsIDB4NTE4MCwgMHg1NURDLCAweDU2NjgsIDB4NTczQiwgMHg1N0ZBLCAweDU3RkMsIDB4NTkxNCwNCisgICAgMHg1OTQ3LCAweDU5OTMsIDB4NUJDNCwgMHg1QzkwLCAweDVEMEUsIDB4NURGMSwgMHg1RTdFLCAweDVGQ0MsDQorICAgIDB4NjI4MCwgMHg2NUQ3LCAweDY1RTMsIDB4NjcxRSwgMHg2NzFGLCAweDY3NUUsIDB4NjhDQiwgMHg2OEM0LA0KKyAgICAweDZBNUYsIDB4NkIzQSwgMHg2QzIzLCAweDZDN0QsIDB4NkM4MiwgMHg2REM3LCAweDczOTgsIDB4NzQyNiwNCisgICAgMHg3NDJBLCAweDc0ODIsIDB4NzRBMywgMHg3NTc4LCAweDc1N0YsIDB4Nzg4MSwgMHg3OEVGLCAweDc5NDEsDQorICAgIDB4Nzk0NywgMHg3OTQ4LCAweDc5N0EsIDB4N0I5NSwgMHg3RDAwLCAweDdEQkEsIDB4N0Y4OCwgMHg4MDA2LA0KKyAgICAweDgwMkQsIDB4ODA4QywgMHg4QTE4LCAweDhCNEYsIDB4OEM0OCwgMHg4RDc3LCAweDkzMjEsIDB4OTMyNCwNCisgICAgMHg5OEUyLCAweDk5NTEsIDB4OUEwRSwgMHg5QTBGLCAweDlBNjUsIDB4OUU5MiwgMHg3RENBLCAweDRGNzYsDQorICAgIDB4NTQwOSwgMHg2MkVFLCAweDY4NTQsIDB4OTFEMSwgMHg1NUFCLCAweDUxM0EsIDB4NUExQywgMHg2MUU2LA0KKyAgICAweDYyQ0YsIDB4NjJGRiwgMHg5MEEzLCAweDhBRkUsIDB4NjY5NiwgMHg3MTU2LCAweDk2RTMsIDB4NjM0RiwNCisgICAgMHg2MzdBLCAweDUzNTcsIDB4Njc4RiwgMHg2OTYwLCAweDZFNzMsIDB4NzUzNywgMHg3RDBELCAweDg4NzIsDQorICAgIDB4NTZDQSwgMHg1QTE4LCAweDRFNDMsIDB4NTE2NywgMHg1OTQ4LCAweDY3RjAsIDB4ODAxMCwgMHg1OTczLA0KKyAgICAweDVFNzQsIDB4NjQ5QSwgMHg3OUNBLCAweDVGRjUsIDB4NjA2QywgMHg2MkM4LCAweDYzN0IsIDB4NUJFNywNCisgICAgMHg1QkQ3LCAweDUyQUEsIDB4NTk3NCwgMHg1RjI5LCAweDYwMTIsIDB4NzQ1OSwgMHg5OUQxLCAweDZGQzMsDQorICAgIDB4ODFCRiwgMHg4RkIyLCAweDYwRjEsIDB4ODE2NiwgMHg1QzNGLCAweDVBRTksIDB4OEEyNSwgMHg2NzdCLA0KKyAgICAweDdEMTAsIDB4ODBGRCwgMHg1QzNDLCAweDZDRTUsIDB4NTMzRiwgMHg2RUJBLCAweDU5MUEsIDB4ODMzNiwNCisgICAgMHg0RTM5LCAweDRFQjYsIDB4NEY0NiwgMHg1NUFFLCAweDU3MTgsIDB4NThDNywgMHg1RjU2LCAweDY1QjcsDQorICAgIDB4NjVFNiwgMHg2QTgwLCAweDZCQjUsIDB4NkU0RCwgMHg3N0VELCAweDdBRUYsIDB4N0MxRSwgMHg3RERFLA0KKyAgICAweDg2Q0IsIDB4ODg5MiwgMHg5MTMyLCAweDkzNUIsIDB4NjRCQiwgMHg2RkJFLCAweDczN0EsIDB4NzVCOCwNCisgICAgMHg5MDU0LCAweDU1NTYsIDB4NTc0RCwgMHg2MUJBLCAweDY0RDQsIDB4NjZDNywgMHg2REUxLCAweDZFNUIsDQorICAgIDB4NkY2RCwgMHg2RkI5LCAweDc1RjAsIDB4ODA0MywgMHg4MUJELCAweDg1NDEsIDB4ODk4MywgMHg4QUM3LA0KKyAgICAweDhCNUEsIDB4OTMxRiwgMHg2QzkzLCAweDc1NTMsIDB4N0I1NCwgMHg4RTBGLCAweDkwNUQsIDB4NTUxMCwNCisgICAgMHg1ODAyLCAweDU4NTgsIDB4NUU2MiwgMHg2MjA3LCAweDY0OUUsIDB4NjhFMCwgMHg3NTc2LCAweDdDRDYsDQorICAgIDB4ODdCMywgMHg5RUU4LCAweDRFRTMsIDB4NTc4OCwgMHg1NzZFLCAweDU5MjcsIDB4NUMwRCwgMHg1Q0IxLA0KKyAgICAweDVFMzYsIDB4NUY4NSwgMHg2MjM0LCAweDY0RTEsIDB4NzNCMywgMHg4MUZBLCAweDg4OEIsIDB4OENCOCwNCisgICAgMHg5NjhBLCAweDlFREIsIDB4NUI4NSwgMHg1RkI3LCAweDYwQjMsIDB4NTAxMiwgMHg1MjAwLCAweDUyMzAsDQorICAgIDB4NTcxNiwgMHg1ODM1LCAweDU4NTcsIDB4NUMwRSwgMHg1QzYwLCAweDVDRjYsIDB4NUQ4QiwgMHg1RUE2LA0KKyAgICAweDVGOTIsIDB4NjBCQywgMHg2MzExLCAweDYzODksIDB4NjQxNywgMHg2ODQzLCAweDY4RjksIDB4NkFDMiwNCisgICAgMHg2REQ4LCAweDZFMjEsIDB4NkVENCwgMHg2RkU0LCAweDcxRkUsIDB4NzZEQywgMHg3Nzc5LCAweDc5QjEsDQorICAgIDB4N0EzQiwgMHg4NDA0LCAweDg5QTksIDB4OENFRCwgMHg4REYzLCAweDhFNDgsIDB4OTAwMywgMHg5MDE0LA0KKyAgICAweDkwNTMsIDB4OTBGRCwgMHg5MzRELCAweDk2NzYsIDB4OTdEQywgMHg2QkQyLCAweDcwMDYsIDB4NzI1OCwNCisgICAgMHg3MkEyLCAweDczNjgsIDB4Nzc2MywgMHg3OUJGLCAweDdCRTQsIDB4N0U5QiwgMHg4QjgwLCAweDU4QTksDQorICAgIDB4NjBDNywgMHg2NTY2LCAweDY1RkQsIDB4NjZCRSwgMHg2QzhDLCAweDcxMUUsIDB4NzFDOSwgMHg4QzVBLA0KKyAgICAweDk4MTMsIDB4NEU2RCwgMHg3QTgxLCAweDRFREQsIDB4NTFBQywgMHg1MUNELCAweDUyRDUsIDB4NTQwQywNCisgICAgMHg2MUE3LCAweDY3NzEsIDB4Njg1MCwgMHg2OERGLCAweDZEMUUsIDB4NkY3QywgMHg3NUJDLCAweDc3QjMsDQorICAgIDB4N0FFNSwgMHg4MEY0LCAweDg0NjMsIDB4OTI4NSwgMHg1MTVDLCAweDY1OTcsIDB4Njc1QywgMHg2NzkzLA0KKyAgICAweDc1RDgsIDB4N0FDNywgMHg4MzczLCAweDhDNDYsIDB4OTAxNywgMHg5ODJELCAweDVDNkYsIDB4ODFDMCwNCisgICAgMHg4MjlBLCAweDkwNDEsIDB4OTA2RiwgMHg5MjBELCAweDVGOTcsIDB4NUQ5RCwgMHg2QTU5LCAweDcxQzgsDQorICAgIDB4NzY3QiwgMHg3QjQ5LCAweDg1RTQsIDB4OEIwNCwgMHg5MTI3LCAweDlBMzAsIDB4NTU4NywgMHg2MUY2LA0KKyAgICAweDc2NjksIDB4N0Y4NSwgMHg4NjNGLCAweDg3QkEsIDB4ODhGOCwgMHg5MDhGLCAweDZEMUIsIDB4NzBEOSwNCisgICAgMHg3M0RFLCAweDdENjEsIDB4ODQzRCwgMHg5MTZBLCAweDk5RjEsIDB4NEU4MiwgMHg1Mzc1LCAweDZCMDQsDQorICAgIDB4NkIxMiwgMHg3MDNFLCAweDcyMUIsIDB4ODYyRCwgMHg5RTFFLCAweDUyNEMsIDB4OEZBMywgMHg1RDUwLA0KKyAgICAweDY0RTUsIDB4NjUyQywgMHg2QjE2LCAweDZGRUIsIDB4N0M0MywgMHg3RTlDLCAweDg1Q0QsIDB4ODk2NCwNCisgICAgMHg4OUJELCAweDYyQzksIDB4ODFEOCwgMHg4ODFGLCAweDVFQ0EsIDB4NjcxNywgMHg2RDZBLCAweDcyRkMsDQorICAgIDB4NzQwNSwgMHg3NDZGLCAweDg3ODIsIDB4OTBERSwgMHg0Rjg2LCAweDVEMEQsIDB4NUZBMCwgMHg4NDBBLA0KKyAgICAweDUxQjcsIDB4NjNBMCwgMHg3NTY1LCAweDRFQUUsIDB4NTAwNiwgMHg1MTY5LCAweDUxQzksIDB4Njg4MSwNCisgICAgMHg2QTExLCAweDdDQUUsIDB4N0NCMSwgMHg3Q0U3LCAweDgyNkYsIDB4OEFEMiwgMHg4RjFCLCAweDkxQ0YsDQorICAgIDB4NEZCNiwgMHg1MTM3LCAweDUyRjUsIDB4NTQ0MiwgMHg1RUVDLCAweDYxNkUsIDB4NjIzRSwgMHg2NUM1LA0KKyAgICAweDZBREEsIDB4NkZGRSwgMHg3OTJBLCAweDg1REMsIDB4ODgyMywgMHg5NUFELCAweDlBNjIsIDB4OUE2QSwNCisgICAgMHg5RTk3LCAweDlFQ0UsIDB4NTI5QiwgMHg2NkM2LCAweDZCNzcsIDB4NzAxRCwgMHg3OTJCLCAweDhGNjIsDQorICAgIDB4OTc0MiwgMHg2MTkwLCAweDYyMDAsIDB4NjUyMywgMHg2RjIzLCAweDcxNDksIDB4NzQ4OSwgMHg3REY0LA0KKyAgICAweDgwNkYsIDB4ODRFRSwgMHg4RjI2LCAweDkwMjMsIDB4OTM0QSwgMHg1MUJELCAweDUyMTcsIDB4NTJBMywNCisgICAgMHg2RDBDLCAweDcwQzgsIDB4ODhDMiwgMHg1RUM5LCAweDY1ODIsIDB4NkJBRSwgMHg2RkMyLCAweDdDM0UsDQorICAgIDB4NzM3NSwgMHg0RUU0LCAweDRGMzYsIDB4NTZGOSwgMHg1Q0JBLCAweDVEQkEsIDB4NjAxQywgMHg3M0IyLA0KKyAgICAweDdCMkQsIDB4N0Y5QSwgMHg3RkNFLCAweDgwNDYsIDB4OTAxRSwgMHg5MjM0LCAweDk2RjYsIDB4OTc0OCwNCisgICAgMHg5ODE4LCAweDlGNjEsIDB4NEY4QiwgMHg2RkE3LCAweDc5QUUsIDB4OTFCNCwgMHg5NkI3LCAweDUyREUsDQorICAgIDB4NjQ4OCwgMHg2NEM0LCAweDZBRDMsIDB4NkY1RSwgMHg3MDE4LCAweDcyMTAsIDB4NzZFNywgMHg4MDAxLA0KKyAgICAweDg2MDYsIDB4ODY1QywgMHg4REVGLCAweDhGMDUsIDB4OTczMiwgMHg5QjZGLCAweDlERkEsIDB4OUU3NSwNCisgICAgMHg3ODhDLCAweDc5N0YsIDB4N0RBMCwgMHg4M0M5LCAweDkzMDQsIDB4OUU3RiwgMHg5RTkzLCAweDhBRDYsDQorICAgIDB4NThERiwgMHg1RjA0LCAweDY3MjcsIDB4NzAyNywgMHg3NENGLCAweDdDNjAsIDB4ODA3RSwgMHg1MTIxLA0KKyAgICAweDcwMjgsIDB4NzI2MiwgMHg3OENBLCAweDhDQzIsIDB4OENEQSwgMHg4Q0Y0LCAweDk2RjcsIDB4NEU4NiwNCisgICAgMHg1MERBLCAweDVCRUUsIDB4NUVENiwgMHg2NTk5LCAweDcxQ0UsIDB4NzY0MiwgMHg3N0FELCAweDgwNEEsDQorICAgIDB4ODRGQywgMHg5MDdDLCAweDlCMjcsIDB4OUY4RCwgMHg1OEQ4LCAweDVBNDEsIDB4NUM2MiwgMHg2QTEzLA0KKyAgICAweDZEREEsIDB4NkYwRiwgMHg3NjNCLCAweDdEMkYsIDB4N0UzNywgMHg4NTFFLCAweDg5MzgsIDB4OTNFNCwNCisgICAgMHg5NjRCLCAweDUyODksIDB4NjVEMiwgMHg2N0YzLCAweDY5QjQsIDB4NkQ0MSwgMHg2RTlDLCAweDcwMEYsDQorICAgIDB4NzQwOSwgMHg3NDYwLCAweDc1NTksIDB4NzYyNCwgMHg3ODZCLCAweDhCMkMsIDB4OTg1RSwgMHg1MTZELA0KKyAgICAweDYyMkUsIDB4OTY3OCwgMHg0Rjk2LCAweDUwMkIsIDB4NUQxOSwgMHg2REVBLCAweDdEQjgsIDB4OEYyQSwNCisgICAgMHg1RjhCLCAweDYxNDQsIDB4NjgxNywgMHg5Njg2LCAweDUyRDIsIDB4ODA4QiwgMHg1MURDLCAweDUxQ0MsDQorICAgIDB4Njk1RSwgMHg3QTFDLCAweDdEQkUsIDB4ODNGMSwgMHg5Njc1LCAweDRGREEsIDB4NTIyOSwgMHg1Mzk4LA0KKyAgICAweDU0MEYsIDB4NTUwRSwgMHg1QzY1LCAweDYwQTcsIDB4Njc0RSwgMHg2OEE4LCAweDZENkMsIDB4NzI4MSwNCisgICAgMHg3MkY4LCAweDc0MDYsIDB4NzQ4MywgMHg3NUUyLCAweDdDNkMsIDB4N0Y3OSwgMHg3RkI4LCAweDgzODksDQorICAgIDB4ODhDRiwgMHg4OEUxLCAweDkxQ0MsIDB4OTFEMCwgMHg5NkUyLCAweDlCQzksIDB4NTQxRCwgMHg2RjdFLA0KKyAgICAweDcxRDAsIDB4NzQ5OCwgMHg4NUZBLCAweDhFQUEsIDB4OTZBMywgMHg5QzU3LCAweDlFOUYsIDB4Njc5NywNCisgICAgMHg2RENCLCAweDc0MzMsIDB4ODFFOCwgMHg5NzE2LCAweDc4MkMsIDB4N0FDQiwgMHg3QjIwLCAweDdDOTIsDQorICAgIDB4NjQ2OSwgMHg3NDZBLCAweDc1RjIsIDB4NzhCQywgMHg3OEU4LCAweDk5QUMsIDB4OUI1NCwgMHg5RUJCLA0KKyAgICAweDVCREUsIDB4NUU1NSwgMHg2RjIwLCAweDgxOUMsIDB4ODNBQiwgMHg5MDg4LCAweDRFMDcsIDB4NTM0RCwNCisgICAgMHg1QTI5LCAweDVERDIsIDB4NUY0RSwgMHg2MTYyLCAweDYzM0QsIDB4NjY2OSwgMHg2NkZDLCAweDZFRkYsDQorICAgIDB4NkYyQiwgMHg3MDYzLCAweDc3OUUsIDB4ODQyQywgMHg4NTEzLCAweDg4M0IsIDB4OEYxMywgMHg5OTQ1LA0KKyAgICAweDlDM0IsIDB4NTUxQywgMHg2MkI5LCAweDY3MkIsIDB4NkNBQiwgMHg4MzA5LCAweDg5NkEsIDB4OTc3QSwNCisgICAgMHg0RUExLCAweDU5ODQsIDB4NUZEOCwgMHg1RkQ5LCAweDY3MUIsIDB4N0RCMiwgMHg3RjU0LCAweDgyOTIsDQorICAgIDB4ODMyQiwgMHg4M0JELCAweDhGMUUsIDB4OTA5OSwgMHg1N0NCLCAweDU5QjksIDB4NUE5MiwgMHg1QkQwLA0KKyAgICAweDY2MjcsIDB4Njc5QSwgMHg2ODg1LCAweDZCQ0YsIDB4NzE2NCwgMHg3Rjc1LCAweDhDQjcsIDB4OENFMywNCisgICAgMHg5MDgxLCAweDlCNDUsIDB4ODEwOCwgMHg4QzhBLCAweDk2NEMsIDB4OUE0MCwgMHg5RUE1LCAweDVCNUYsDQorICAgIDB4NkMxMywgMHg3MzFCLCAweDc2RjIsIDB4NzZERiwgMHg4NDBDLCAweDUxQUEsIDB4ODk5MywgMHg1MTRELA0KKyAgICAweDUxOTUsIDB4NTJDOSwgMHg2OEM5LCAweDZDOTQsIDB4NzcwNCwgMHg3NzIwLCAweDdEQkYsIDB4N0RFQywNCisgICAgMHg5NzYyLCAweDlFQjUsIDB4NkVDNSwgMHg4NTExLCAweDUxQTUsIDB4NTQwRCwgMHg1NDdELCAweDY2MEUsDQorICAgIDB4NjY5RCwgMHg2OTI3LCAweDZFOUYsIDB4NzZCRiwgMHg3NzkxLCAweDgzMTcsIDB4ODRDMiwgMHg4NzlGLA0KKyAgICAweDkxNjksIDB4OTI5OCwgMHg5Q0Y0LCAweDg4ODIsIDB4NEZBRSwgMHg1MTkyLCAweDUyREYsIDB4NTlDNiwNCisgICAgMHg1RTNELCAweDYxNTUsIDB4NjQ3OCwgMHg2NDc5LCAweDY2QUUsIDB4NjdEMCwgMHg2QTIxLCAweDZCQ0QsDQorICAgIDB4NkJEQiwgMHg3MjVGLCAweDcyNjEsIDB4NzQ0MSwgMHg3NzM4LCAweDc3REIsIDB4ODAxNywgMHg4MkJDLA0KKyAgICAweDgzMDUsIDB4OEIwMCwgMHg4QjI4LCAweDhDOEMsIDB4NjcyOCwgMHg2QzkwLCAweDcyNjcsIDB4NzZFRSwNCisgICAgMHg3NzY2LCAweDdBNDYsIDB4OURBOSwgMHg2QjdGLCAweDZDOTIsIDB4NTkyMiwgMHg2NzI2LCAweDg0OTksDQorICAgIDB4NTM2RiwgMHg1ODkzLCAweDU5OTksIDB4NUVERiwgMHg2M0NGLCAweDY2MzQsIDB4Njc3MywgMHg2RTNBLA0KKyAgICAweDczMkIsIDB4N0FENywgMHg4MkQ3LCAweDkzMjgsIDB4NTJEOSwgMHg1REVCLCAweDYxQUUsIDB4NjFDQiwNCisgICAgMHg2MjBBLCAweDYyQzcsIDB4NjRBQiwgMHg2NUUwLCAweDY5NTksIDB4NkI2NiwgMHg2QkNCLCAweDcxMjEsDQorICAgIDB4NzNGNywgMHg3NTVELCAweDdFNDYsIDB4ODIxRSwgMHg4MzAyLCAweDg1NkEsIDB4OEFBMywgMHg4Q0JGLA0KKyAgICAweDk3MjcsIDB4OUQ2MSwgMHg1OEE4LCAweDlFRDgsIDB4NTAxMSwgMHg1MjBFLCAweDU0M0IsIDB4NTU0RiwNCisgICAgMHg2NTg3LCAweDZDNzYsIDB4N0QwQSwgMHg3RDBCLCAweDgwNUUsIDB4ODY4QSwgMHg5NTgwLCAweDk2RUYsDQorICAgIDB4NTJGRiwgMHg2Qzk1LCAweDcyNjksIDB4NTQ3MywgMHg1QTlBLCAweDVDM0UsIDB4NUQ0QiwgMHg1RjRDLA0KKyAgICAweDVGQUUsIDB4NjcyQSwgMHg2OEI2LCAweDY5NjMsIDB4NkUzQywgMHg2RTQ0LCAweDc3MDksIDB4N0M3MywNCisgICAgMHg3RjhFLCAweDg1ODcsIDB4OEIwRSwgMHg4RkY3LCAweDk3NjEsIDB4OUVGNCwgMHg1Q0I3LCAweDYwQjYsDQorICAgIDB4NjEwRCwgMHg2MUFCLCAweDY1NEYsIDB4NjVGQiwgMHg2NUZDLCAweDZDMTEsIDB4NkNFRiwgMHg3MzlGLA0KKyAgICAweDczQzksIDB4N0RFMSwgMHg5NTk0LCAweDVCQzYsIDB4ODcxQywgMHg4QjEwLCAweDUyNUQsIDB4NTM1QSwNCisgICAgMHg2MkNELCAweDY0MEYsIDB4NjRCMiwgMHg2NzM0LCAweDZBMzgsIDB4NkNDQSwgMHg3M0MwLCAweDc0OUUsDQorICAgIDB4N0I5NCwgMHg3Qzk1LCAweDdFMUIsIDB4ODE4QSwgMHg4MjM2LCAweDg1ODQsIDB4OEZFQiwgMHg5NkY5LA0KKyAgICAweDk5QzEsIDB4NEYzNCwgMHg1MzRBLCAweDUzQ0QsIDB4NTNEQiwgMHg2MkNDLCAweDY0MkMsIDB4NjUwMCwNCisgICAgMHg2NTkxLCAweDY5QzMsIDB4NkNFRSwgMHg2RjU4LCAweDczRUQsIDB4NzU1NCwgMHg3NjIyLCAweDc2RTQsDQorICAgIDB4NzZGQywgMHg3OEQwLCAweDc4RkIsIDB4NzkyQywgMHg3RDQ2LCAweDgyMkMsIDB4ODdFMCwgMHg4RkQ0LA0KKyAgICAweDk4MTIsIDB4OThFRiwgMHg1MkMzLCAweDYyRDQsIDB4NjRBNSwgMHg2RTI0LCAweDZGNTEsIDB4NzY3QywNCisgICAgMHg4RENCLCAweDkxQjEsIDB4OTI2MiwgMHg5QUVFLCAweDlCNDMsIDB4NTAyMywgMHg1MDhELCAweDU3NEEsDQorICAgIDB4NTlBOCwgMHg1QzI4LCAweDVFNDcsIDB4NUY3NywgMHg2MjNGLCAweDY1M0UsIDB4NjVCOSwgMHg2NUMxLA0KKyAgICAweDY2MDksIDB4Njc4QiwgMHg2OTlDLCAweDZFQzIsIDB4NzhDNSwgMHg3RDIxLCAweDgwQUEsIDB4ODE4MCwNCisgICAgMHg4MjJCLCAweDgyQjMsIDB4ODRBMSwgMHg4NjhDLCAweDhBMkEsIDB4OEIxNywgMHg5MEE2LCAweDk2MzIsDQorICAgIDB4OUY5MCwgMHg1MDBELCAweDRGRjMsIDB4NTdGOSwgMHg1Rjk4LCAweDYyREMsIDB4NjM5MiwgMHg2NzZGLA0KKyAgICAweDZFNDMsIDB4NzExOSwgMHg3NkMzLCAweDgwQ0MsIDB4ODBEQSwgMHg4OEY0LCAweDg4RjUsIDB4ODkxOSwNCisgICAgMHg4Q0UwLCAweDhGMjksIDB4OTE0RCwgMHg5NjZBLCAweDRGMkYsIDB4NEY3MCwgMHg1RTFCLCAweDY3Q0YsDQorICAgIDB4NjgyMiwgMHg3NjdELCAweDc2N0UsIDB4OUI0NCwgMHg1RTYxLCAweDZBMEEsIDB4NzE2OSwgMHg3MUQ0LA0KKyAgICAweDc1NkEsIDB4N0U0MSwgMHg4NTQzLCAweDg1RTksIDB4OThEQywgMHg0RjEwLCAweDdCNEYsIDB4N0Y3MCwNCisgICAgMHg5NUE1LCAweDUxRTEsIDB4NUUwNiwgMHg2OEI1LCAweDZDM0UsIDB4NkM0RSwgMHg2Q0RCLCAweDcyQUYsDQorICAgIDB4N0JDNCwgMHg4MzAzLCAweDZDRDUsIDB4NzQzQSwgMHg1MEZCLCAweDUyODgsIDB4NThDMSwgMHg2NEQ4LA0KKyAgICAweDZBOTcsIDB4NzRBNywgMHg3NjU2LCAweDc4QTcsIDB4ODYxNywgMHg5NUUyLCAweDk3MzksIDB4NTM1RSwNCisgICAgMHg1RjAxLCAweDhCOEEsIDB4OEZBOCwgMHg4RkFGLCAweDkwOEEsIDB4NTIyNSwgMHg3N0E1LCAweDlDNDksDQorICAgIDB4OUYwOCwgMHg0RTE5LCAweDUwMDIsIDB4NTE3NSwgMHg1QzVCLCAweDVFNzcsIDB4NjYxRSwgMHg2NjNBLA0KKyAgICAweDY3QzQsIDB4NjhDNSwgMHg3MEIzLCAweDc1MDEsIDB4NzVDNSwgMHg3OUM5LCAweDdBREQsIDB4OEYyNywNCisgICAgMHg5OTIwLCAweDlBMDgsIDB4NEZERCwgMHg1ODIxLCAweDU4MzEsIDB4NUJGNiwgMHg2NjZFLCAweDZCNjUsDQorICAgIDB4NkQxMSwgMHg2RTdBLCAweDZGN0QsIDB4NzNFNCwgMHg3NTJCLCAweDgzRTksIDB4ODhEQywgMHg4OTEzLA0KKyAgICAweDhCNUMsIDB4OEYxNCwgMHg0RjBGLCAweDUwRDUsIDB4NTMxMCwgMHg1MzVDLCAweDVCOTMsIDB4NUZBOSwNCisgICAgMHg2NzBELCAweDc5OEYsIDB4ODE3OSwgMHg4MzJGLCAweDg1MTQsIDB4ODkwNywgMHg4OTg2LCAweDhGMzksDQorICAgIDB4OEYzQiwgMHg5OUE1LCAweDlDMTIsIDB4NjcyQywgMHg0RTc2LCAweDRGRjgsIDB4NTk0OSwgMHg1QzAxLA0KKyAgICAweDVDRUYsIDB4NUNGMCwgMHg2MzY3LCAweDY4RDIsIDB4NzBGRCwgMHg3MUEyLCAweDc0MkIsIDB4N0UyQiwNCisgICAgMHg4NEVDLCAweDg3MDIsIDB4OTAyMiwgMHg5MkQyLCAweDlDRjMsIDB4NEUwRCwgMHg0RUQ4LCAweDRGRUYsDQorICAgIDB4NTA4NSwgMHg1MjU2LCAweDUyNkYsIDB4NTQyNiwgMHg1NDkwLCAweDU3RTAsIDB4NTkyQiwgMHg1QTY2LA0KKyAgICAweDVCNUEsIDB4NUI3NSwgMHg1QkNDLCAweDVFOUMsIDB4NjI3NiwgMHg2NTc3LCAweDY1QTcsIDB4NkQ2RSwNCisgICAgMHg2RUE1LCAweDcyMzYsIDB4N0IyNiwgMHg3QzNGLCAweDdGMzYsIDB4ODE1MCwgMHg4MTUxLCAweDgxOUEsDQorICAgIDB4ODI0MCwgMHg4Mjk5LCAweDgzQTksIDB4OEEwMywgMHg4Q0EwLCAweDhDRTYsIDB4OENGQiwgMHg4RDc0LA0KKyAgICAweDhEQkEsIDB4OTBFOCwgMHg5MURDLCAweDk2MUMsIDB4OTY0NCwgMHg5OUQ5LCAweDlDRTcsIDB4NTMxNywNCisgICAgMHg1MjA2LCAweDU0MjksIDB4NTY3NCwgMHg1OEIzLCAweDU5NTQsIDB4NTk2RSwgMHg1RkZGLCAweDYxQTQsDQorICAgIDB4NjI2RSwgMHg2NjEwLCAweDZDN0UsIDB4NzExQSwgMHg3NkM2LCAweDdDODksIDB4N0NERSwgMHg3RDFCLA0KKyAgICAweDgyQUMsIDB4OENDMSwgMHg5NkYwLCAweDRGNUIsIDB4NUYxNywgMHg1RjdGLCAweDYyQzIsIDB4NUQyOSwNCisgICAgMHg2NzBCLCAweDY4REEsIDB4Nzg3QywgMHg3RTQzLCAweDlENkMsIDB4NEUxNSwgMHg1MDk5LCAweDUzMTUsDQorICAgIDB4NTMyQSwgMHg1MzUxLCAweDU5ODMsIDB4NUE2MiwgMHg1RTg3LCAweDYwQjIsIDB4NjE4QSwgMHg2MjQ5LA0KKyAgICAweDYyNzksIDB4NjU5MCwgMHg2Nzg3LCAweDY5QTcsIDB4NkJENCwgMHg2QkQ2LCAweDZCRDcsIDB4NkJEOCwNCisgICAgMHg2Q0I4LCAweDc0MzUsIDB4NzVGQSwgMHg3ODEyLCAweDc4OTEsIDB4NzlENSwgMHg3OUQ4LCAweDdDODMsDQorICAgIDB4N0RDQiwgMHg3RkUxLCAweDgwQTUsIDB4ODEzRSwgMHg4MUMyLCAweDgzRjIsIDB4ODcxQSwgMHg4OEU4LA0KKyAgICAweDhBQjksIDB4OEI2QywgMHg4Q0JCLCAweDkxMTksIDB4OTc1RSwgMHg5OERCLCAweDlGM0IsIDB4NTZBQywNCisgICAgMHg1QjJBLCAweDVGNkMsIDB4NjU4QywgMHg2QUIzLCAweDZCQUYsIDB4NkQ1QywgMHg2RkYxLCAweDcwMTUsDQorICAgIDB4NzI1RCwgMHg3M0FELCAweDhDQTcsIDB4OENEMywgMHg5ODNCLCAweDYxOTEsIDB4NkMzNywgMHg4MDU4LA0KKyAgICAweDlBMDEsIDB4NEU0RCwgMHg0RThCLCAweDRFOUIsIDB4NEVENSwgMHg0RjNBLCAweDRGM0MsIDB4NEY3RiwNCisgICAgMHg0RkRGLCAweDUwRkYsIDB4NTNGMiwgMHg1M0Y4LCAweDU1MDYsIDB4NTVFMywgMHg1NkRCLCAweDU4RUIsDQorICAgIDB4NTk2MiwgMHg1QTExLCAweDVCRUIsIDB4NUJGQSwgMHg1QzA0LCAweDVERjMsIDB4NUUyQiwgMHg1Rjk5LA0KKyAgICAweDYwMUQsIDB4NjM2OCwgMHg2NTlDLCAweDY1QUYsIDB4NjdGNiwgMHg2N0ZCLCAweDY4QUQsIDB4NkI3QiwNCisgICAgMHg2Qzk5LCAweDZDRDcsIDB4NkUyMywgMHg3MDA5LCAweDczNDUsIDB4NzgwMiwgMHg3OTNFLCAweDc5NDAsDQorICAgIDB4Nzk2MCwgMHg3OUMxLCAweDdCRTksIDB4N0QxNywgMHg3RDcyLCAweDgwODYsIDB4ODIwRCwgMHg4MzhFLA0KKyAgICAweDg0RDEsIDB4ODZDNywgMHg4OERGLCAweDhBNTAsIDB4OEE1RSwgMHg4QjFELCAweDhDREMsIDB4OEQ2NiwNCisgICAgMHg4RkFELCAweDkwQUEsIDB4OThGQywgMHg5OURGLCAweDlFOUQsIDB4NTI0QSwgMHg2NzE0LCAweDUwOTgsDQorICAgIDB4NTIyQSwgMHg1QzcxLCAweDY1NjMsIDB4NkM1NSwgMHg3M0NBLCAweDc1MjMsIDB4NzU5RCwgMHg3Qjk3LA0KKyAgICAweDg0OUMsIDB4OTE3OCwgMHg5NzMwLCAweDRFNzcsIDB4NjQ5MiwgMHg2QkJBLCAweDcxNUUsIDB4ODVBOSwNCisgICAgMHg0RTA5LCAweDY3NDksIDB4NjhFRSwgMHg2RTE3LCAweDgyOUYsIDB4ODUxOCwgMHg4ODZCLCAweDYzRjcsDQorICAgIDB4NkY4MSwgMHg5MjEyLCAweDk4QUYsIDB4NEUwQSwgMHg1MEI3LCAweDUwQ0YsIDB4NTExRiwgMHg1NTQ2LA0KKyAgICAweDU1QUEsIDB4NTYxNywgMHg1QjQwLCAweDVDMTksIDB4NUNFMCwgMHg1RTM4LCAweDVFOEEsIDB4NUVBMCwNCisgICAgMHg1RUMyLCAweDYwRjMsIDB4Njg1MSwgMHg2QTYxLCAweDZFNTgsIDB4NzIzRCwgMHg3MjQwLCAweDcyQzAsDQorICAgIDB4NzZGOCwgMHg3OTY1LCAweDdCQjEsIDB4N0ZENCwgMHg4OEYzLCAweDg5RjQsIDB4OEE3MywgMHg4QzYxLA0KKyAgICAweDhDREUsIDB4OTcxQywgMHg1ODVFLCAweDc0QkQsIDB4OENGRCwgMHg1NUM3LCAweDdBNjEsIDB4N0QyMiwNCisgICAgMHg4MjcyLCAweDcyNzIsIDB4NzUxRiwgMHg3NTI1LCAweDdCMTksIDB4NTg4NSwgMHg1OEZCLCAweDVEQkMsDQorICAgIDB4NUU4RiwgMHg1RUI2LCAweDVGOTAsIDB4NjA1NSwgMHg2MjkyLCAweDYzN0YsIDB4NjU0RCwgMHg2NjkxLA0KKyAgICAweDY2RDksIDB4NjZGOCwgMHg2ODE2LCAweDY4RjIsIDB4NzI4MCwgMHg3NDVFLCAweDdCNkUsIDB4N0Q2RSwNCisgICAgMHg3REQ2LCAweDdGNzIsIDB4ODBFNSwgMHg4MjEyLCAweDg1QUYsIDB4ODk3RiwgMHg4QTkzLCAweDkwMUQsDQorICAgIDB4OTJFNCwgMHg5RUNELCAweDlGMjAsIDB4NTkxNSwgMHg1OTZELCAweDVFMkQsIDB4NjBEQywgMHg2NjE0LA0KKyAgICAweDY2NzMsIDB4Njc5MCwgMHg2QzUwLCAweDZEQzUsIDB4NkY1RiwgMHg3N0YzLCAweDc4QTksIDB4ODRDNiwNCisgICAgMHg5MUNCLCAweDkzMkIsIDB4NEVEOSwgMHg1MENBLCAweDUxNDgsIDB4NTU4NCwgMHg1QjBCLCAweDVCQTMsDQorICAgIDB4NjI0NywgMHg2NTdFLCAweDY1Q0IsIDB4NkUzMiwgMHg3MTdELCAweDc0MDEsIDB4NzQ0NCwgMHg3NDg3LA0KKyAgICAweDc0QkYsIDB4NzY2QywgMHg3OUFBLCAweDdEREEsIDB4N0U1NSwgMHg3RkE4LCAweDgxN0EsIDB4ODFCMywNCisgICAgMHg4MjM5LCAweDg2MUEsIDB4ODdFQywgMHg4QTc1LCAweDhERTMsIDB4OTA3OCwgMHg5MjkxLCAweDk0MjUsDQorICAgIDB4OTk0RCwgMHg5QkFFLCAweDUzNjgsIDB4NUM1MSwgMHg2OTU0LCAweDZDQzQsIDB4NkQyOSwgMHg2RTJCLA0KKyAgICAweDgyMEMsIDB4ODU5QiwgMHg4OTNCLCAweDhBMkQsIDB4OEFBQSwgMHg5NkVBLCAweDlGNjcsIDB4NTI2MSwNCisgICAgMHg2NkI5LCAweDZCQjIsIDB4N0U5NiwgMHg4N0ZFLCAweDhEMEQsIDB4OTU4MywgMHg5NjVELCAweDY1MUQsDQorICAgIDB4NkQ4OSwgMHg3MUVFLCAweDU3Q0UsIDB4NTlEMywgMHg1QkFDLCAweDYwMjcsIDB4NjBGQSwgMHg2MjEwLA0KKyAgICAweDY2MUYsIDB4NjY1RiwgMHg3MzI5LCAweDczRjksIDB4NzZEQiwgMHg3NzAxLCAweDdCNkMsIDB4ODA1NiwNCisgICAgMHg4MDcyLCAweDgxNjUsIDB4OEFBMCwgMHg5MTkyLCAweDRFMTYsIDB4NTJFMiwgMHg2QjcyLCAweDZEMTcsDQorICAgIDB4N0EwNSwgMHg3QjM5LCAweDdEMzAsIDB4OENCMCwgMHg1M0VDLCAweDU2MkYsIDB4NTg1MSwgMHg1QkI1LA0KKyAgICAweDVDMEYsIDB4NUMxMSwgMHg1REUyLCAweDYyNDAsIDB4NjM4MywgMHg2NDE0LCAweDY2MkQsIDB4NjhCMywNCisgICAgMHg2Q0JDLCAweDZEODgsIDB4NkVBRiwgMHg3MDFGLCAweDcwQTQsIDB4NzFEMiwgMHg3NTI2LCAweDc1OEYsDQorICAgIDB4NzU4RSwgMHg3NjE5LCAweDdCMTEsIDB4N0JFMCwgMHg3QzJCLCAweDdEMjAsIDB4N0QzOSwgMHg4NTJDLA0KKyAgICAweDg1NkQsIDB4ODYwNywgMHg4QTM0LCAweDkwMEQsIDB4OTA2MSwgMHg5MEI1LCAweDkyQjcsIDB4OTdGNiwNCisgICAgMHg5QTM3LCAweDRGRDcsIDB4NUM2QywgMHg2NzVGLCAweDZEOTEsIDB4N0M5RiwgMHg3RThDLCAweDhCMTYsDQorICAgIDB4OEQxNiwgMHg5MDFGLCAweDVCNkIsIDB4NURGRCwgMHg2NDBELCAweDg0QzAsIDB4OTA1QywgMHg5OEUxLA0KKyAgICAweDczODcsIDB4NUI4QiwgMHg2MDlBLCAweDY3N0UsIDB4NkRERSwgMHg4QTFGLCAweDhBQTYsIDB4OTAwMSwNCisgICAgMHg5ODBDLCAweDUyMzcsIDB4NzA1MSwgMHg3ODhFLCAweDkzOTYsIDB4ODg3MCwgMHg5MUQ3LCAweDRGRUUsDQorICAgIDB4NTNENywgMHg1NUZELCAweDU2REEsIDB4NTc4MiwgMHg1OEZELCAweDVBQzIsIDB4NUI4OCwgMHg1Q0FCLA0KKyAgICAweDVDQzAsIDB4NUUyNSwgMHg2MTAxLCAweDYyMEQsIDB4NjI0QiwgMHg2Mzg4LCAweDY0MUMsIDB4NjUzNiwNCisgICAgMHg2NTc4LCAweDZBMzksIDB4NkI4QSwgMHg2QzM0LCAweDZEMTksIDB4NkYzMSwgMHg3MUU3LCAweDcyRTksDQorICAgIDB4NzM3OCwgMHg3NDA3LCAweDc0QjIsIDB4NzYyNiwgMHg3NzYxLCAweDc5QzAsIDB4N0E1NywgMHg3QUVBLA0KKyAgICAweDdDQjksIDB4N0Q4RiwgMHg3REFDLCAweDdFNjEsIDB4N0Y5RSwgMHg4MTI5LCAweDgzMzEsIDB4ODQ5MCwNCisgICAgMHg4NERBLCAweDg1RUEsIDB4ODg5NiwgMHg4QUIwLCAweDhCOTAsIDB4OEYzOCwgMHg5MDQyLCAweDkwODMsDQorICAgIDB4OTE2QywgMHg5Mjk2LCAweDkyQjksIDB4OTY4QiwgMHg5NkE3LCAweDk2QTgsIDB4OTZENiwgMHg5NzAwLA0KKyAgICAweDk4MDgsIDB4OTk5NiwgMHg5QUQzLCAweDlCMUEsIDB4NTNENCwgMHg1ODdFLCAweDU5MTksIDB4NUI3MCwNCisgICAgMHg1QkJGLCAweDZERDEsIDB4NkY1QSwgMHg3MTlGLCAweDc0MjEsIDB4NzRCOSwgMHg4MDg1LCAweDgzRkQsDQorICAgIDB4NURFMSwgMHg1Rjg3LCAweDVGQUEsIDB4NjA0MiwgMHg2NUVDLCAweDY4MTIsIDB4Njk2RiwgMHg2QTUzLA0KKyAgICAweDZCODksIDB4NkQzNSwgMHg2REYzLCAweDczRTMsIDB4NzZGRSwgMHg3N0FDLCAweDdCNEQsIDB4N0QxNCwNCisgICAgMHg4MTIzLCAweDgyMUMsIDB4ODM0MCwgMHg4NEY0LCAweDg1NjMsIDB4OEE2MiwgMHg4QUM0LCAweDkxODcsDQorICAgIDB4OTMxRSwgMHg5ODA2LCAweDk5QjQsIDB4NjIwQywgMHg4ODUzLCAweDhGRjAsIDB4OTI2NSwgMHg1RDA3LA0KKyAgICAweDVEMjcsIDB4NUQ2OSwgMHg3NDVGLCAweDgxOUQsIDB4ODc2OCwgMHg2RkQ1LCAweDYyRkUsIDB4N0ZEMiwNCisgICAgMHg4OTM2LCAweDg5NzIsIDB4NEUxRSwgMHg0RTU4LCAweDUwRTcsIDB4NTJERCwgMHg1MzQ3LCAweDYyN0YsDQorICAgIDB4NjYwNywgMHg3RTY5LCAweDg4MDUsIDB4OTY1RSwgMHg0RjhELCAweDUzMTksIDB4NTYzNiwgMHg1OUNCLA0KKyAgICAweDVBQTQsIDB4NUMzOCwgMHg1QzRFLCAweDVDNEQsIDB4NUUwMiwgMHg1RjExLCAweDYwNDMsIDB4NjVCRCwNCisgICAgMHg2NjJGLCAweDY2NDIsIDB4NjdCRSwgMHg2N0Y0LCAweDczMUMsIDB4NzdFMiwgMHg3OTNBLCAweDdGQzUsDQorICAgIDB4ODQ5NCwgMHg4NENELCAweDg5OTYsIDB4OEE2NiwgMHg4QTY5LCAweDhBRTEsIDB4OEM1NSwgMHg4QzdBLA0KKyAgICAweDU3RjQsIDB4NUJENCwgMHg1RjBGLCAweDYwNkYsIDB4NjJFRCwgMHg2OTBELCAweDZCOTYsIDB4NkU1QywNCisgICAgMHg3MTg0LCAweDdCRDIsIDB4ODc1NSwgMHg4QjU4LCAweDhFRkUsIDB4OThERiwgMHg5OEZFLCAweDRGMzgsDQorICAgIDB4NEY4MSwgMHg0RkUxLCAweDU0N0IsIDB4NUEyMCwgMHg1QkI4LCAweDYxM0MsIDB4NjVCMCwgMHg2NjY4LA0KKyAgICAweDcxRkMsIDB4NzUzMywgMHg3OTVFLCAweDdEMzMsIDB4ODE0RSwgMHg4MUUzLCAweDgzOTgsIDB4ODVBQSwNCisgICAgMHg4NUNFLCAweDg3MDMsIDB4OEEwQSwgMHg4RUFCLCAweDhGOUIsIDB4OEZDNSwgMHg1OTMxLCAweDVCQTQsDQorICAgIDB4NUJFNiwgMHg2MDg5LCAweDVCRTksIDB4NUMwQiwgMHg1RkMzLCAweDZDODEsIDB4NkRGMSwgMHg3MDBCLA0KKyAgICAweDc1MUEsIDB4ODJBRiwgMHg4QUY2LCAweDRFQzAsIDB4NTM0MSwgMHg5NkQ5LCAweDZDMEYsIDB4NEU5RSwNCisgICAgMHg0RkM0LCAweDUxNTIsIDB4NTU1RSwgMHg1QTI1LCAweDVDRTgsIDB4NjIxMSwgMHg3MjU5LCAweDgyQkQsDQorICAgIDB4ODNBQSwgMHg4NkZFLCAweDg4NTksIDB4OEExRCwgMHg5NjNGLCAweDk2QzUsIDB4OTkxMywgMHg5RDA5LA0KKyAgICAweDlENUQsIDB4NTgwQSwgMHg1Q0IzLCAweDVEQkQsIDB4NUU0NCwgMHg2MEUxLCAweDYxMTUsIDB4NjNFMSwNCisgICAgMHg2QTAyLCAweDZFMjUsIDB4OTEwMiwgMHg5MzU0LCAweDk4NEUsIDB4OUMxMCwgMHg5Rjc3LCAweDVCODksDQorICAgIDB4NUNCOCwgMHg2MzA5LCAweDY2NEYsIDB4Njg0OCwgMHg3NzNDLCAweDk2QzEsIDB4OTc4RCwgMHg5ODU0LA0KKyAgICAweDlCOUYsIDB4NjVBMSwgMHg4QjAxLCAweDhFQ0IsIDB4OTVCQywgMHg1NTM1LCAweDVDQTksIDB4NURENiwNCisgICAgMHg1RUI1LCAweDY2OTcsIDB4NzY0QywgMHg4M0Y0LCAweDk1QzcsIDB4NThEMywgMHg2MkJDLCAweDcyQ0UsDQorICAgIDB4OUQyOCwgMHg0RUYwLCAweDU5MkUsIDB4NjAwRiwgMHg2NjNCLCAweDZCODMsIDB4NzlFNywgMHg5RDI2LA0KKyAgICAweDUzOTMsIDB4NTRDMCwgMHg1N0MzLCAweDVEMTYsIDB4NjExQiwgMHg2NkQ2LCAweDZEQUYsIDB4Nzg4RCwNCisgICAgMHg4MjdFLCAweDk2OTgsIDB4OTc0NCwgMHg1Mzg0LCAweDYyN0MsIDB4NjM5NiwgMHg2REIyLCAweDdFMEEsDQorICAgIDB4ODE0QiwgMHg5ODRELCAweDZBRkIsIDB4N0Y0QywgMHg5REFGLCAweDlFMUEsIDB4NEU1RiwgMHg1MDNCLA0KKyAgICAweDUxQjYsIDB4NTkxQywgMHg2MEY5LCAweDYzRjYsIDB4NjkzMCwgMHg3MjNBLCAweDgwMzYsIDB4OTFDRSwNCisgICAgMHg1RjMxLCAweDdEMDQsIDB4ODJFNSwgMHg4NDZGLCAweDg0QkIsIDB4ODVFNSwgMHg4RThELCAweDRGNkYsDQorICAgIDB4NThFNCwgMHg1QjQzLCAweDYwNTksIDB4NjNEQSwgMHg2NTE4LCAweDY1NkQsIDB4NjY5OCwgMHg2OTRBLA0KKyAgICAweDZBMjMsIDB4NkQwQiwgMHg3MDAxLCAweDcxNkMsIDB4NzVEMiwgMHg3NjBELCAweDc5QjMsIDB4N0E3MCwNCisgICAgMHg3RjhBLCAweDg5NDQsIDB4OEI5MywgMHg5MUMwLCAweDk2N0QsIDB4OTkwQSwgMHg1NzA0LCAweDVGQTEsDQorICAgIDB4NjVCQywgMHg2RjAxLCAweDc2MDAsIDB4NzlBNiwgMHg4QTlFLCAweDk5QUQsIDB4OUI1QSwgMHg5RjZDLA0KKyAgICAweDUxMDQsIDB4NjFCNiwgMHg2MjkxLCAweDZBOEQsIDB4ODFDNiwgMHg1MDQzLCAweDU4MzAsIDB4NUY2NiwNCisgICAgMHg3MTA5LCAweDhBMDAsIDB4OEFGQSwgMHg1QjdDLCAweDg2MTYsIDB4NEZGQSwgMHg1MTNDLCAweDU2QjQsDQorICAgIDB4NTk0NCwgMHg2M0E5LCAweDZERjksIDB4NURBQSwgMHg2OTZELCAweDUxODYsIDB4NEU4OCwgMHg0RjU5LA0KKyAgICAweDU5ODIsIDB4NkI1RiwgMHg2QzVELCAweDc0QjUsIDB4NzkxNiwgMHg4MjA3LCAweDgyNDUsIDB4ODMzOSwNCisgICAgMHg4RjNGLCAweDhGNUQsIDB4OTkxOCwgMHg0RUE2LCAweDU3REYsIDB4NUY3OSwgMHg2NjEzLCAweDc1QUIsDQorICAgIDB4N0U3OSwgMHg4QjZGLCAweDkwMDYsIDB4OUE1QiwgMHg1NkE1LCAweDU4MjcsIDB4NTlGOCwgMHg1QTFGLA0KKyAgICAweDVCQjQsIDB4NUVGNiwgMHg2MzUwLCAweDYzM0IsIDB4NjkzRCwgMHg2Qzg3LCAweDZDQkYsIDB4NkQ4RSwNCisgICAgMHg2RDkzLCAweDZERjUsIDB4NkYxNCwgMHg3MERGLCAweDcxMzYsIDB4NzE1OSwgMHg3MUMzLCAweDcxRDUsDQorICAgIDB4Nzg0RiwgMHg3ODZGLCAweDdCNzUsIDB4N0RFMywgMHg3RTJGLCAweDg4NEQsIDB4OEVERiwgMHg5MjVCLA0KKyAgICAweDlDRjYsIDB4NjA4NSwgMHg2RDg1LCAweDcxQjEsIDB4OTVCMSwgMHg1M0FELCAweDY3RDMsIDB4NzA4RSwNCisgICAgMHg3MTMwLCAweDc0MzAsIDB4ODI3NiwgMHg4MkQyLCAweDk1QkIsIDB4OUFFNSwgMHg5RTdELCAweDY2QzQsDQorICAgIDB4NzFDMSwgMHg4NDQ5LCAweDU4NEIsIDB4NURCOCwgMHg1RjcxLCAweDY2MjAsIDB4NjY4RSwgMHg2OTc5LA0KKyAgICAweDY5QUUsIDB4NkMzOCwgMHg2Q0YzLCAweDZFMzYsIDB4NkY0MSwgMHg2RkRBLCAweDcwMUIsIDB4NzAyRiwNCisgICAgMHg3MTUwLCAweDcxREYsIDB4NzM3MCwgMHg3NDVCLCAweDc0RDQsIDB4NzZDOCwgMHg3QTRFLCAweDdFOTMsDQorICAgIDB4ODJGMSwgMHg4QTYwLCAweDhGQ0UsIDB4OTM0OCwgMHg5NzE5LCAweDRFNDIsIDB4NTAyQSwgMHg1MjA4LA0KKyAgICAweDUzRTEsIDB4NjZGMywgMHg2QzZELCAweDZGQ0EsIDB4NzMwQSwgMHg3NzdGLCAweDdBNjIsIDB4ODJBRSwNCisgICAgMHg4NURELCAweDg2MDIsIDB4ODhENCwgMHg4QTYzLCAweDhCN0QsIDB4OEM2QiwgMHg5MkIzLCAweDk3MTMsDQorICAgIDB4OTgxMCwgMHg0RTk0LCAweDRGMEQsIDB4NEZDOSwgMHg1MEIyLCAweDUzNDgsIDB4NTQzRSwgMHg1NDMzLA0KKyAgICAweDU1REEsIDB4NTg2MiwgMHg1OEJBLCAweDU5NjcsIDB4NUExQiwgMHg1QkU0LCAweDYwOUYsIDB4NjFDQSwNCisgICAgMHg2NTU2LCAweDY1RkYsIDB4NjY2NCwgMHg2OEE3LCAweDZDNUEsIDB4NkZCMywgMHg3MENGLCAweDcxQUMsDQorICAgIDB4NzM1MiwgMHg3QjdELCAweDg3MDgsIDB4OEFBNCwgMHg5QzMyLCAweDlGMDcsIDB4NUM0QiwgMHg2QzgzLA0KKyAgICAweDczNDQsIDB4NzM4OSwgMHg5MjNBLCAweDZFQUIsIDB4NzQ2NSwgMHg3NjFGLCAweDdBNjksIDB4N0UxNSwNCisgICAgMHg4NjBBLCAweDUxNDAsIDB4NThDNSwgMHg2NEMxLCAweDc0RUUsIDB4NzUxNSwgMHg3NjcwLCAweDdGQzEsDQorICAgIDB4OTA5NSwgMHg5NkNELCAweDk5NTQsIDB4NkUyNiwgMHg3NEU2LCAweDdBQTksIDB4N0FBQSwgMHg4MUU1LA0KKyAgICAweDg2RDksIDB4ODc3OCwgMHg4QTFCLCAweDVBNDksIDB4NUI4QywgMHg1QjlCLCAweDY4QTEsIDB4NjkwMCwNCisgICAgMHg2RDYzLCAweDczQTksIDB4NzQxMywgMHg3NDJDLCAweDc4OTcsIDB4N0RFOSwgMHg3RkVCLCAweDgxMTgsDQorICAgIDB4ODE1NSwgMHg4MzlFLCAweDhDNEMsIDB4OTYyRSwgMHg5ODExLCAweDY2RjAsIDB4NUY4MCwgMHg2NUZBLA0KKyAgICAweDY3ODksIDB4NkM2QSwgMHg3MzhCLCAweDUwMkQsIDB4NUEwMywgMHg2QjZBLCAweDc3RUUsIDB4NTkxNiwNCisgICAgMHg1RDZDLCAweDVEQ0QsIDB4NzMyNSwgMHg3NTRGLCAweDUwRTUsIDB4NTFGOSwgMHg1ODJGLCAweDU5MkQsDQorICAgIDB4NTk5NiwgMHg1OURBLCAweDVCRTUsIDB4NURBMiwgMHg2MkQ3LCAweDY0MTYsIDB4NjQ5MywgMHg2NEZFLA0KKyAgICAweDY2REMsIDB4NkE0OCwgMHg3MUZGLCAweDc0NjQsIDB4N0E4OCwgMHg3QUFGLCAweDdFNDcsIDB4N0U1RSwNCisgICAgMHg4MDAwLCAweDgxNzAsIDB4ODdFRiwgMHg4OTgxLCAweDhCMjAsIDB4OTA1OSwgMHg5MDgwLCAweDk5NTIsDQorICAgIDB4NjE3RSwgMHg2QjMyLCAweDZENzQsIDB4N0UxRiwgMHg4OTI1LCAweDhGQjEsIDB4NEZEMSwgMHg1MEFELA0KKyAgICAweDUxOTcsIDB4NTJDNywgMHg1N0M3LCAweDU4ODksIDB4NUJCOSwgMHg1RUI4LCAweDYxNDIsIDB4Njk5NSwNCisgICAgMHg2RDhDLCAweDZFNjcsIDB4NkVCNiwgMHg3MTk0LCAweDc0NjIsIDB4NzUyOCwgMHg3NTJDLCAweDgwNzMsDQorICAgIDB4ODMzOCwgMHg4NEM5LCAweDhFMEEsIDB4OTM5NCwgMHg5M0RFLCAweDRFOEUsIDB4NEY1MSwgMHg1MDc2LA0KKyAgICAweDUxMkEsIDB4NTNDOCwgMHg1M0NCLCAweDUzRjMsIDB4NUI4NywgMHg1QkQzLCAweDVDMjQsIDB4NjExQSwNCisgICAgMHg2MTgyLCAweDY1RjQsIDB4NzI1QiwgMHg3Mzk3LCAweDc0NDAsIDB4NzZDMiwgMHg3OTUwLCAweDc5OTEsDQorICAgIDB4NzlCOSwgMHg3RDA2LCAweDdGQkQsIDB4ODI4QiwgMHg4NUQ1LCAweDg2NUUsIDB4OEZDMiwgMHg5MDQ3LA0KKyAgICAweDkwRjUsIDB4OTFFQSwgMHg5Njg1LCAweDk2RTgsIDB4OTZFOSwgMHg1MkQ2LCAweDVGNjcsIDB4NjVFRCwNCisgICAgMHg2NjMxLCAweDY4MkYsIDB4NzE1QywgMHg3QTM2LCAweDkwQzEsIDB4OTgwQSwgMHg0RTkxLCAweDZBNTIsDQorICAgIDB4NkI5RSwgMHg2RjkwLCAweDcxODksIDB4ODAxOCwgMHg4MkI4LCAweDg1NTMsIDB4OTA0QiwgMHg5Njk1LA0KKyAgICAweDk2RjIsIDB4OTdGQiwgMHg4NTFBLCAweDlCMzEsIDB4NEU5MCwgMHg3MThBLCAweDk2QzQsIDB4NTE0MywNCisgICAgMHg1MzlGLCAweDU0RTEsIDB4NTcxMywgMHg1NzEyLCAweDU3QTMsIDB4NUE5QiwgMHg1QUM0LCAweDVCQzMsDQorICAgIDB4NjAyOCwgMHg2MTNGLCAweDYzRjQsIDB4NkM4NSwgMHg2RDM5LCAweDZFNzIsIDB4NkU5MCwgMHg3MjMwLA0KKyAgICAweDczM0YsIDB4NzQ1NywgMHg4MkQxLCAweDg4ODEsIDB4OEY0NSwgMHg5MDYwLCAweDk2NjIsIDB4OTg1OCwNCisgICAgMHg5RDFCLCAweDY3MDgsIDB4OEQ4QSwgMHg5MjVFLCAweDRGNEQsIDB4NTA0OSwgMHg1MERFLCAweDUzNzEsDQorICAgIDB4NTcwRCwgMHg1OUQ0LCAweDVBMDEsIDB4NUMwOSwgMHg2MTcwLCAweDY2OTAsIDB4NkUyRCwgMHg3MjMyLA0KKyAgICAweDc0NEIsIDB4N0RFRiwgMHg4MEMzLCAweDg0MEUsIDB4ODQ2NiwgMHg4NTNGLCAweDg3NUYsIDB4ODg1QiwNCisgICAgMHg4OTE4LCAweDhCMDIsIDB4OTA1NSwgMHg5N0NCLCAweDlCNEYsIDB4NEU3MywgMHg0RjkxLCAweDUxMTIsDQorICAgIDB4NTE2QSwgMHg1NTJGLCAweDU1QTksIDB4NUI3QSwgMHg1QkE1LCAweDVFN0MsIDB4NUU3RCwgMHg1RUJFLA0KKyAgICAweDYwQTAsIDB4NjBERiwgMHg2MTA4LCAweDYxMDksIDB4NjNDNCwgMHg2NTM4LCAweDY3MDksIDB4NjdENCwNCisgICAgMHg2N0RBLCAweDY5NjEsIDB4Njk2MiwgMHg2Q0I5LCAweDZEMjcsIDB4NkUzOCwgMHg2RkUxLCAweDczMzYsDQorICAgIDB4NzMzNywgMHg3NDVDLCAweDc1MzEsIDB4NzY1MiwgMHg3REFELCAweDgxRkUsIDB4ODQzOCwgMHg4OEQ1LA0KKyAgICAweDhBOTgsIDB4OEFEQiwgMHg4QUVELCAweDhFMzAsIDB4OEU0MiwgMHg5MDRBLCAweDkwM0UsIDB4OTA3QSwNCisgICAgMHg5MTQ5LCAweDkxQzksIDB4OTM2RSwgMHg1ODA5LCAweDZCRDMsIDB4ODA4OSwgMHg4MEIyLCAweDUxNDEsDQorICAgIDB4NTk2QiwgMHg1QzM5LCAweDZGNjQsIDB4NzNBNywgMHg4MEU0LCAweDhEMDcsIDB4OTIxNywgMHg5NThGLA0KKyAgICAweDgwN0YsIDB4NjIwRSwgMHg3MDFDLCAweDdENjgsIDB4ODc4RCwgMHg1N0EwLCAweDYwNjksIDB4NjE0NywNCisgICAgMHg2QkI3LCAweDhBQkUsIDB4OTI4MCwgMHg5NkIxLCAweDRFNTksIDB4NTQxRiwgMHg2REVCLCAweDg1MkQsDQorICAgIDB4OTY3MCwgMHg5N0YzLCAweDk4RUUsIDB4NjNENiwgMHg2Q0UzLCAweDkwOTEsIDB4NTFERCwgMHg2MUM5LA0KKyAgICAweDgxQkEsIDB4OURGOSwgMHg0RjlELCAweDUwMUEsIDB4NTEwMCwgMHg1QjlDLCAweDYxMEYsIDB4NjFGRiwNCisgICAgMHg2NEVDLCAweDY5MDUsIDB4NkJDNSwgMHg3NTkxLCAweDc3RTMsIDB4N0ZBOSwgMHg4MjY0LCAweDg1OEYsDQorICAgIDB4ODdGQiwgMHg4ODYzLCAweDhBQkMsIDB4OEI3MCwgMHg5MUFCLCAweDRFOEMsIDB4NEVFNSwgMHg0RjBBLA0KKyAgICAweDU5MzcsIDB4NTlFOCwgMHg1REYyLCAweDVGMUIsIDB4NUY1QiwgMHg2MDIxLCAweDcyM0UsIDB4NzNFNSwNCisgICAgMHg3NTcwLCAweDc1Q0QsIDB4NzlGQiwgMHg4MDBDLCAweDgwMzMsIDB4ODA4NCwgMHg4MkUxLCAweDgzNTEsDQorICAgIDB4OENCRCwgMHg4Q0IzLCAweDkwODcsIDB4OThGNCwgMHg5OTBDLCAweDcwMzcsIDB4NzZDQSwgMHg3RkNBLA0KKyAgICAweDdGQ0MsIDB4N0ZGQywgMHg4QjFBLCAweDRFQkEsIDB4NEVDMSwgMHg1MjAzLCAweDUzNzAsIDB4NTRCRCwNCisgICAgMHg1NkUwLCAweDU5RkIsIDB4NUJDNSwgMHg1RjE1LCAweDVGQ0QsIDB4NkU2RSwgMHg3RDZBLCAweDgzMzUsDQorICAgIDB4ODY5MywgMHg4QThELCAweDk3NkQsIDB4OTc3NywgMHg0RTAwLCAweDRGNUEsIDB4NEY3RSwgMHg1OEY5LA0KKyAgICAweDY1RTUsIDB4NkVBMiwgMHg5MDM4LCAweDkzQjAsIDB4OTlCOSwgMHg0RUZCLCAweDU4RUMsIDB4NTk4QSwNCisgICAgMHg1OUQ5LCAweDYwNDEsIDB4N0ExNCwgMHg4MzRGLCAweDhDQzMsIDB4NTE2NSwgMHg1MzQ0LCAweDRFQ0QsDQorICAgIDB4NTI2OSwgMHg1QjU1LCAweDgyQkYsIDB4NEVENCwgMHg1MjNBLCAweDU0QTgsIDB4NTlDOSwgMHg1OUZGLA0KKyAgICAweDVCNTAsIDB4NUI1NywgMHg1QjVDLCAweDYwNjMsIDB4NjE0OCwgMHg2RUNCLCAweDcwOTksIDB4NzE2RSwNCisgICAgMHg3Mzg2LCAweDc0RjcsIDB4NzVCNSwgMHg3OEMxLCAweDdEMkIsIDB4ODAwNSwgMHg4MUVBLCAweDgzMjgsDQorICAgIDB4ODUxNywgMHg4NUM5LCAweDhBRUUsIDB4OENDNywgMHg5NkNDLCAweDRGNUMsIDB4NTJGQSwgMHg1NkJDLA0KKyAgICAweDY1QUIsIDB4NjYyOCwgMHg3MDdDLCAweDcwQjgsIDB4NzIzNSwgMHg3REJELCAweDgyOEQsIDB4OTE0QywNCisgICAgMHg5NkMwLCAweDlENzIsIDB4NUI3MSwgMHg2OEU3LCAweDZCOTgsIDB4NkY3QSwgMHg3NkRFLCAweDVDOTEsDQorICAgIDB4NjZBQiwgMHg2RjVCLCAweDdCQjQsIDB4N0MyQSwgMHg4ODM2LCAweDk2REMsIDB4NEUwOCwgMHg0RUQ3LA0KKyAgICAweDUzMjAsIDB4NTgzNCwgMHg1OEJCLCAweDU4RUYsIDB4NTk2QywgMHg1QzA3LCAweDVFMzMsIDB4NUU4NCwNCisgICAgMHg1RjM1LCAweDYzOEMsIDB4NjZCMiwgMHg2NzU2LCAweDZBMUYsIDB4NkFBMywgMHg2QjBDLCAweDZGM0YsDQorICAgIDB4NzI0NiwgMHg3MzUwLCAweDc0OEIsIDB4N0FFMCwgMHg3Q0E3LCAweDgxNzgsIDB4ODFERiwgMHg4MUU3LA0KKyAgICAweDgzOEEsIDB4ODQ2QywgMHg4NTIzLCAweDg1OTQsIDB4ODVDRiwgMHg4OERELCAweDhEMTMsIDB4OTFBQywNCisgICAgMHg5NTc3LCAweDk2OUMsIDB4NTE4RCwgMHg1NEM5LCAweDU3MjgsIDB4NUJCMCwgMHg2MjRELCAweDY3NTAsDQorICAgIDB4NjgzRCwgMHg2ODkzLCAweDZFM0QsIDB4NkVEMywgMHg3MDdELCAweDdFMjEsIDB4ODhDMSwgMHg4Q0ExLA0KKyAgICAweDhGMDksIDB4OUY0QiwgMHg5RjRFLCAweDcyMkQsIDB4N0I4RiwgMHg4QUNELCAweDkzMUEsIDB4NEY0NywNCisgICAgMHg0RjRFLCAweDUxMzIsIDB4NTQ4MCwgMHg1OUQwLCAweDVFOTUsIDB4NjJCNSwgMHg2Nzc1LCAweDY5NkUsDQorICAgIDB4NkExNywgMHg2Q0FFLCAweDZFMUEsIDB4NzJEOSwgMHg3MzJBLCAweDc1QkQsIDB4N0JCOCwgMHg3RDM1LA0KKyAgICAweDgyRTcsIDB4ODNGOSwgMHg4NDU3LCAweDg1RjcsIDB4OEE1QiwgMHg4Q0FGLCAweDhFODcsIDB4OTAxOSwNCisgICAgMHg5MEI4LCAweDk2Q0UsIDB4OUY1RiwgMHg1MkUzLCAweDU0MEEsIDB4NUFFMSwgMHg1QkMyLCAweDY0NTgsDQorICAgIDB4NjU3NSwgMHg2RUY0LCAweDcyQzQsIDB4NzY4NCwgMHg3QTRELCAweDdCMUIsIDB4N0M0RCwgMHg3RTNFLA0KKyAgICAweDdGREYsIDB4ODM3QiwgMHg4QjJCLCAweDhDQ0EsIDB4OEQ2NCwgMHg4REUxLCAweDhFNUYsIDB4OEZFQSwNCisgICAgMHg4RkY5LCAweDkwNjksIDB4OTNEMSwgMHg0RjQzLCAweDRGN0EsIDB4NTBCMywgMHg1MTY4LCAweDUxNzgsDQorICAgIDB4NTI0RCwgMHg1MjZBLCAweDU4NjEsIDB4NTg3QywgMHg1OTYwLCAweDVDMDgsIDB4NUM1NSwgMHg1RURCLA0KKyAgICAweDYwOUIsIDB4NjIzMCwgMHg2ODEzLCAweDZCQkYsIDB4NkMwOCwgMHg2RkIxLCAweDcxNEUsIDB4NzQyMCwNCisgICAgMHg3NTMwLCAweDc1MzgsIDB4NzU1MSwgMHg3NjcyLCAweDdCNEMsIDB4N0I4QiwgMHg3QkFELCAweDdCQzYsDQorICAgIDB4N0U4RiwgMHg4QTZFLCAweDhGM0UsIDB4OEY0OSwgMHg5MjNGLCAweDkyOTMsIDB4OTMyMiwgMHg5NDJCLA0KKyAgICAweDk2RkIsIDB4OTg1QSwgMHg5ODZCLCAweDk5MUUsIDB4NTIwNywgMHg2MjJBLCAweDYyOTgsIDB4NkQ1OSwNCisgICAgMHg3NjY0LCAweDdBQ0EsIDB4N0JDMCwgMHg3RDc2LCAweDUzNjAsIDB4NUNCRSwgMHg1RTk3LCAweDZGMzgsDQorICAgIDB4NzBCOSwgMHg3Qzk4LCAweDk3MTEsIDB4OUI4RSwgMHg5RURFLCAweDYzQTUsIDB4NjQ3QSwgMHg4Nzc2LA0KKyAgICAweDRFMDEsIDB4NEU5NSwgMHg0RUFELCAweDUwNUMsIDB4NTA3NSwgMHg1NDQ4LCAweDU5QzMsIDB4NUI5QSwNCisgICAgMHg1RTQwLCAweDVFQUQsIDB4NUVGNywgMHg1RjgxLCAweDYwQzUsIDB4NjMzQSwgMHg2NTNGLCAweDY1NzQsDQorICAgIDB4NjVDQywgMHg2Njc2LCAweDY2NzgsIDB4NjdGRSwgMHg2OTY4LCAweDZBODksIDB4NkI2MywgMHg2QzQwLA0KKyAgICAweDZEQzAsIDB4NkRFOCwgMHg2RTFGLCAweDZFNUUsIDB4NzAxRSwgMHg3MEExLCAweDczOEUsIDB4NzNGRCwNCisgICAgMHg3NTNBLCAweDc3NUIsIDB4Nzg4NywgMHg3OThFLCAweDdBMEIsIDB4N0E3RCwgMHg3Q0JFLCAweDdEOEUsDQorICAgIDB4ODI0NywgMHg4QTAyLCAweDhBRUEsIDB4OEM5RSwgMHg5MTJELCAweDkxNEEsIDB4OTFEOCwgMHg5MjY2LA0KKyAgICAweDkyQ0MsIDB4OTMyMCwgMHg5NzA2LCAweDk3NTYsIDB4OTc1QywgMHg5ODAyLCAweDlGMEUsIDB4NTIzNiwNCisgICAgMHg1MjkxLCAweDU1N0MsIDB4NTgyNCwgMHg1RTFELCAweDVGMUYsIDB4NjA4QywgMHg2M0QwLCAweDY4QUYsDQorICAgIDB4NkZERiwgMHg3OTZELCAweDdCMkMsIDB4ODFDRCwgMHg4NUJBLCAweDg4RkQsIDB4OEFGOCwgMHg4RTQ0LA0KKyAgICAweDkxOEQsIDB4OTY2NCwgMHg5NjlCLCAweDk3M0QsIDB4OTg0QywgMHg5RjRBLCAweDRGQ0UsIDB4NTE0NiwNCisgICAgMHg1MUNCLCAweDUyQTksIDB4NTYzMiwgMHg1RjE0LCAweDVGNkIsIDB4NjNBQSwgMHg2NENELCAweDY1RTksDQorICAgIDB4NjY0MSwgMHg2NkZBLCAweDY2RjksIDB4NjcxRCwgMHg2ODlELCAweDY4RDcsIDB4NjlGRCwgMHg2RjE1LA0KKyAgICAweDZGNkUsIDB4NzE2NywgMHg3MUU1LCAweDcyMkEsIDB4NzRBQSwgMHg3NzNBLCAweDc5NTYsIDB4Nzk1QSwNCisgICAgMHg3OURGLCAweDdBMjAsIDB4N0E5NSwgMHg3Qzk3LCAweDdDREYsIDB4N0Q0NCwgMHg3RTcwLCAweDgwODcsDQorICAgIDB4ODVGQiwgMHg4NkE0LCAweDhBNTQsIDB4OEFCRiwgMHg4RDk5LCAweDhFODEsIDB4OTAyMCwgMHg5MDZELA0KKyAgICAweDkxRTMsIDB4OTYzQiwgMHg5NkQ1LCAweDlDRTUsIDB4NjVDRiwgMHg3QzA3LCAweDhEQjMsIDB4OTNDMywNCisgICAgMHg1QjU4LCAweDVDMEEsIDB4NTM1MiwgMHg2MkQ5LCAweDczMUQsIDB4NTAyNywgMHg1Qjk3LCAweDVGOUUsDQorICAgIDB4NjBCMCwgMHg2MTZCLCAweDY4RDUsIDB4NkREOSwgMHg3NDJFLCAweDdBMkUsIDB4N0Q0MiwgMHg3RDlDLA0KKyAgICAweDdFMzEsIDB4ODE2QiwgMHg4RTJBLCAweDhFMzUsIDB4OTM3RSwgMHg5NDE4LCAweDRGNTAsIDB4NTc1MCwNCisgICAgMHg1REU2LCAweDVFQTcsIDB4NjMyQiwgMHg3RjZBLCAweDRFM0IsIDB4NEY0RiwgMHg0RjhGLCAweDUwNUEsDQorICAgIDB4NTlERCwgMHg4MEM0LCAweDU0NkEsIDB4NTQ2OCwgMHg1NUZFLCAweDU5NEYsIDB4NUI5OSwgMHg1RERFLA0KKyAgICAweDVFREEsIDB4NjY1RCwgMHg2NzMxLCAweDY3RjEsIDB4NjgyQSwgMHg2Q0U4LCAweDZEMzIsIDB4NkU0QSwNCisgICAgMHg2RjhELCAweDcwQjcsIDB4NzNFMCwgMHg3NTg3LCAweDdDNEMsIDB4N0QwMiwgMHg3RDJDLCAweDdEQTIsDQorICAgIDB4ODIxRiwgMHg4NkRCLCAweDhBM0IsIDB4OEE4NSwgMHg4RDcwLCAweDhFOEEsIDB4OEYzMywgMHg5MDMxLA0KKyAgICAweDkxNEUsIDB4OTE1MiwgMHg5NDQ0LCAweDk5RDAsIDB4N0FGOSwgMHg3Q0E1LCAweDRGQ0EsIDB4NTEwMSwNCisgICAgMHg1MUM2LCAweDU3QzgsIDB4NUJFRiwgMHg1Q0ZCLCAweDY2NTksIDB4NkEzRCwgMHg2RDVBLCAweDZFOTYsDQorICAgIDB4NkZFQywgMHg3MTBDLCAweDc1NkYsIDB4N0FFMywgMHg4ODIyLCAweDkwMjEsIDB4OTA3NSwgMHg5NkNCLA0KKyAgICAweDk5RkYsIDB4ODMwMSwgMHg0RTJELCAweDRFRjIsIDB4ODg0NiwgMHg5MUNELCAweDUzN0QsIDB4NkFEQiwNCisgICAgMHg2OTZCLCAweDZDNDEsIDB4ODQ3QSwgMHg1ODlFLCAweDYxOEUsIDB4NjZGRSwgMHg2MkVGLCAweDcwREQsDQorICAgIDB4NzUxMSwgMHg3NUM3LCAweDdFNTIsIDB4ODRCOCwgMHg4QjQ5LCAweDhEMDgsIDB4NEU0QiwgMHg1M0VBLA0KKyAgICAweDU0QUIsIDB4NTczMCwgMHg1NzQwLCAweDVGRDcsIDB4NjMwMSwgMHg2MzA3LCAweDY0NkYsIDB4NjUyRiwNCisgICAgMHg2NUU4LCAweDY2N0EsIDB4Njc5RCwgMHg2N0IzLCAweDZCNjIsIDB4NkM2MCwgMHg2QzlBLCAweDZGMkMsDQorICAgIDB4NzdFNSwgMHg3ODI1LCAweDc5NDksIDB4Nzk1NywgMHg3RDE5LCAweDgwQTIsIDB4ODEwMiwgMHg4MUYzLA0KKyAgICAweDgyOUQsIDB4ODJCNywgMHg4NzE4LCAweDhBOEMsIDB4OEQwNCwgMHg4REJFLCAweDkwNzIsIDB4NzZGNCwNCisgICAgMHg3QTE5LCAweDdBMzcsIDB4N0U1NCwgMHg4MDc3LCAweDU1MDcsIDB4NTVENCwgMHg1ODc1LCAweDYzMkYsDQorICAgIDB4NjQyMiwgMHg2NjQ5LCAweDY2NEIsIDB4Njg2RCwgMHg2OTlCLCAweDZCODQsIDB4NkQyNSwgMHg2RUIxLA0KKyAgICAweDczQ0QsIDB4NzQ2OCwgMHg3NEExLCAweDc1NUIsIDB4NzVCOSwgMHg3NkUxLCAweDc3MUUsIDB4Nzc4QiwNCisgICAgMHg3OUU2LCAweDdFMDksIDB4N0UxRCwgMHg4MUZCLCAweDg1MkYsIDB4ODg5NywgMHg4QTNBLCAweDhDRDEsDQorICAgIDB4OEVFQiwgMHg4RkIwLCAweDkwMzIsIDB4OTNBRCwgMHg5NjYzLCAweDk2NzMsIDB4OTcwNywgMHg0Rjg0LA0KKyAgICAweDUzRjEsIDB4NTlFQSwgMHg1QUM5LCAweDVFMTksIDB4Njg0RSwgMHg3NEM2LCAweDc1QkUsIDB4NzlFOSwNCisgICAgMHg3QTkyLCAweDgxQTMsIDB4ODZFRCwgMHg4Q0VBLCAweDhEQ0MsIDB4OEZFRCwgMHg2NTlGLCAweDY3MTUsDQorICAgIDB4NTdGNywgMHg2RjU3LCAweDdEREQsIDB4OEYyRiwgMHg5M0Y2LCAweDk2QzYsIDB4NUZCNSwgMHg2MUYyLA0KKyAgICAweDZGODQsIDB4NEUxNCwgMHg0Rjk4LCAweDUwMUYsIDB4NTNDOSwgMHg1NURGLCAweDVENkYsIDB4NURFRSwNCisgICAgMHg2QjIxLCAweDZCNjQsIDB4NzhDQiwgMHg3QjlBLCAweDhFNDksIDB4OEVDQSwgMHg5MDZFLCAweDYzNDksDQorICAgIDB4NjQzRSwgMHg3NzQwLCAweDdBODQsIDB4OTMyRiwgMHg5NDdGLCAweDlGNkEsIDB4NjRCMCwgMHg2RkFGLA0KKyAgICAweDcxRTYsIDB4NzRBOCwgMHg3NERBLCAweDdBQzQsIDB4N0MxMiwgMHg3RTgyLCAweDdDQjIsIDB4N0U5OCwNCisgICAgMHg4QjlBLCAweDhEMEEsIDB4OTQ3RCwgMHg5OTEwLCAweDk5NEMsIDB4NTIzOSwgMHg1QkRGLCAweDY0RTYsDQorICAgIDB4NjcyRCwgMHg3RDJFLCAweDUwRUQsIDB4NTNDMywgMHg1ODc5LCAweDYxNTgsIDB4NjE1OSwgMHg2MUZBLA0KKyAgICAweDY1QUMsIDB4N0FEOSwgMHg4QjkyLCAweDhCOTYsIDB4NTAwOSwgMHg1MDIxLCAweDUyNzUsIDB4NTUzMSwNCisgICAgMHg1QTNDLCAweDVFRTAsIDB4NUY3MCwgMHg2MTM0LCAweDY1NUUsIDB4NjYwQywgMHg2NjM2LCAweDY2QTIsDQorICAgIDB4NjlDRCwgMHg2RUM0LCAweDZGMzIsIDB4NzMxNiwgMHg3NjIxLCAweDdBOTMsIDB4ODEzOSwgMHg4MjU5LA0KKyAgICAweDgzRDYsIDB4ODRCQywgMHg1MEI1LCAweDU3RjAsIDB4NUJDMCwgMHg1QkU4LCAweDVGNjksIDB4NjNBMSwNCisgICAgMHg3ODI2LCAweDdEQjUsIDB4ODNEQywgMHg4NTIxLCAweDkxQzcsIDB4OTFGNSwgMHg1MThBLCAweDY3RjUsDQorICAgIDB4N0I1NiwgMHg4Q0FDLCAweDUxQzQsIDB4NTlCQiwgMHg2MEJELCAweDg2NTUsIDB4NTAxQywgMHg1MjU0LA0KKyAgICAweDVDM0EsIDB4NjE3RCwgMHg2MjFBLCAweDYyRDMsIDB4NjRGMiwgMHg2NUE1LCAweDZFQ0MsIDB4NzYyMCwNCisgICAgMHg4MTBBLCAweDhFNjAsIDB4OTY1RiwgMHg5NkJCLCAweDRFREYsIDB4NTM0MywgMHg1NTk4LCAweDU5MjksDQorICAgIDB4NURERCwgMHg2NEM1LCAweDZDQzksIDB4NkRGQSwgMHg3Mzk0LCAweDdBN0YsIDB4ODIxQiwgMHg4NUE2LA0KKyAgICAweDhDRTQsIDB4OEUxMCwgMHg5MDc3LCAweDkxRTcsIDB4OTVFMSwgMHg5NjIxLCAweDk3QzYsIDB4NTFGOCwNCisgICAgMHg1NEYyLCAweDU1ODYsIDB4NUZCOSwgMHg2NEE0LCAweDZGODgsIDB4N0RCNCwgMHg4RjFGLCAweDhGNEQsDQorICAgIDB4OTQzNSwgMHg1MEM5LCAweDVDMTYsIDB4NkNCRSwgMHg2REZCLCAweDc1MUIsIDB4NzdCQiwgMHg3QzNELA0KKyAgICAweDdDNjQsIDB4OEE3OSwgMHg4QUMyLCAweDU4MUUsIDB4NTlCRSwgMHg1RTE2LCAweDYzNzcsIDB4NzI1MiwNCisgICAgMHg3NThBLCAweDc3NkIsIDB4OEFEQywgMHg4Q0JDLCAweDhGMTIsIDB4NUVGMywgMHg2Njc0LCAweDZERjgsDQorICAgIDB4ODA3RCwgMHg4M0MxLCAweDhBQ0IsIDB4OTc1MSwgMHg5QkQ2LCAweDUyNDMsIDB4NjZGRiwgMHg2RDk1LA0KKyAgICAweDZFRUYsIDB4N0RFMCwgMHg4QUU2LCAweDkwMkUsIDB4OTA1RSwgMHg5QUQ0LCAweDUyMUQsIDB4NTI3RiwNCisgICAgMHg1NEU4LCAweDYxOTQsIDB4NjI4NCwgMHg2MkRCLCAweDY4QTIsIDB4NjkxMiwgMHg2OTVBLCAweDZBMzUsDQorICAgIDB4NzA5MiwgMHg3MTI2LCAweDc4NUQsIDB4NzkwMSwgMHg3OTBFLCAweDc5RDIsIDB4N0EwRCwgMHg4MDk2LA0KKyAgICAweDgyNzgsIDB4ODJENSwgMHg4MzQ5LCAweDg1NDksIDB4OEM4MiwgMHg4RDg1LCAweDkxNjIsIDB4OTE4QiwNCisgICAgMHg5MUFFLCAweDRGQzMsIDB4NTZEMSwgMHg3MUVELCAweDc3RDcsIDB4ODcwMCwgMHg4OUY4LCAweDVCRjgsDQorICAgIDB4NUZENiwgMHg2NzUxLCAweDkwQTgsIDB4NTNFMiwgMHg1ODVBLCAweDVCRjUsIDB4NjBBNCwgMHg2MTgxLA0KKyAgICAweDY0NjAsIDB4N0UzRCwgMHg4MDcwLCAweDg1MjUsIDB4OTI4MywgMHg2NEFFLCAweDUwQUMsIDB4NUQxNCwNCisgICAgMHg2NzAwLCAweDU4OUMsIDB4NjJCRCwgMHg2M0E4LCAweDY5MEUsIDB4Njk3OCwgMHg2QTFFLCAweDZFNkIsDQorICAgIDB4NzZCQSwgMHg3OUNCLCAweDgyQkIsIDB4ODQyOSwgMHg4QUNGLCAweDhEQTgsIDB4OEZGRCwgMHg5MTEyLA0KKyAgICAweDkxNEIsIDB4OTE5QywgMHg5MzEwLCAweDkzMTgsIDB4OTM5QSwgMHg5NkRCLCAweDlBMzYsIDB4OUMwRCwNCisgICAgMHg0RTExLCAweDc1NUMsIDB4Nzk1RCwgMHg3QUZBLCAweDdCNTEsIDB4N0JDOSwgMHg3RTJFLCAweDg0QzQsDQorICAgIDB4OEU1OSwgMHg4RTc0LCAweDhFRjgsIDB4OTAxMCwgMHg2NjI1LCAweDY5M0YsIDB4NzQ0MywgMHg1MUZBLA0KKyAgICAweDY3MkUsIDB4OUVEQywgMHg1MTQ1LCAweDVGRTAsIDB4NkM5NiwgMHg4N0YyLCAweDg4NUQsIDB4ODg3NywNCisgICAgMHg2MEI0LCAweDgxQjUsIDB4ODQwMywgMHg4RDA1LCAweDUzRDYsIDB4NTQzOSwgMHg1NjM0LCAweDVBMzYsDQorICAgIDB4NUMzMSwgMHg3MDhBLCAweDdGRTAsIDB4ODA1QSwgMHg4MTA2LCAweDgxRUQsIDB4OERBMywgMHg5MTg5LA0KKyAgICAweDlBNUYsIDB4OURGMiwgMHg1MDc0LCAweDRFQzQsIDB4NTNBMCwgMHg2MEZCLCAweDZFMkMsIDB4NUM2NCwNCisgICAgMHg0Rjg4LCAweDUwMjQsIDB4NTVFNCwgMHg1Q0Q5LCAweDVFNUYsIDB4NjA2NSwgMHg2ODk0LCAweDZDQkIsDQorICAgIDB4NkRDNCwgMHg3MUJFLCAweDc1RDQsIDB4NzVGNCwgMHg3NjYxLCAweDdBMUEsIDB4N0E0OSwgMHg3REM3LA0KKyAgICAweDdERkIsIDB4N0Y2RSwgMHg4MUY0LCAweDg2QTksIDB4OEYxQywgMHg5NkM5LCAweDk5QjMsIDB4OUY1MiwNCisgICAgMHg1MjQ3LCAweDUyQzUsIDB4OThFRCwgMHg4OUFBLCAweDRFMDMsIDB4NjdEMiwgMHg2RjA2LCAweDRGQjUsDQorICAgIDB4NUJFMiwgMHg2Nzk1LCAweDZDODgsIDB4NkQ3OCwgMHg3NDFCLCAweDc4MjcsIDB4OTFERCwgMHg5MzdDLA0KKyAgICAweDg3QzQsIDB4NzlFNCwgMHg3QTMxLCAweDVGRUIsIDB4NEVENiwgMHg1NEE0LCAweDU1M0UsIDB4NThBRSwNCisgICAgMHg1OUE1LCAweDYwRjAsIDB4NjI1MywgMHg2MkQ2LCAweDY3MzYsIDB4Njk1NSwgMHg4MjM1LCAweDk2NDAsDQorICAgIDB4OTlCMSwgMHg5OURELCAweDUwMkMsIDB4NTM1MywgMHg1NTQ0LCAweDU3N0MsIDB4NjI1OCwgMHg2NEUyLA0KKyAgICAweDY2NkIsIDB4NjdERCwgMHg2RkMxLCAweDZGRUYsIDB4NzQyMiwgMHg3NDM4LCAweDhBMTcsIDB4OTQzOCwNCisgICAgMHg1NDUxLCAweDU2MDYsIDB4NTc2NiwgMHg1RjQ4LCAweDYxOUEsIDB4NkI0RSwgMHg3MDU4LCAweDcwQUQsDQorICAgIDB4N0RCQiwgMHg4QTk1LCAweDU5NkEsIDB4ODEyQiwgMHg2M0EyLCAweDc3MDgsIDB4ODAzRCwgMHg4Q0FBLA0KKyAgICAweDU4NTQsIDB4NjQyRCwgMHg2OUJCLCAweDVCOTUsIDB4NUUxMSwgMHg2RTZGLCAweDg1NjksIDB4NTE0QywNCisgICAgMHg1M0YwLCAweDU5MkEsIDB4NjAyMCwgMHg2MTRCLCAweDZCODYsIDB4NkM3MCwgMHg2Q0YwLCAweDdCMUUsDQorICAgIDB4ODBDRSwgMHg4MkQ0LCAweDhEQzYsIDB4OTBCMCwgMHg5OEIxLCAweDY0QzcsIDB4NkZBNCwgMHg2NDkxLA0KKyAgICAweDY1MDQsIDB4NTE0RSwgMHg1NDEwLCAweDU3MUYsIDB4OEEwRSwgMHg2MTVGLCAweDY4NzYsIDB4NzVEQiwNCisgICAgMHg3QjUyLCAweDdENzEsIDB4OTAxQSwgMHg1ODA2LCAweDY5Q0MsIDB4ODE3RiwgMHg4OTJBLCAweDkwMDAsDQorICAgIDB4OTgzOSwgMHg1MDc4LCAweDU5NTcsIDB4NTlBQywgMHg2Mjk1LCAweDkwMEYsIDB4OUIyQSwgMHg2MTVELA0KKyAgICAweDcyNzksIDB4OTVENiwgMHg1NzYxLCAweDVBNDYsIDB4NURGNCwgMHg2MjhBLCAweDY0QUQsIDB4NjRGQSwNCisgICAgMHg2Nzc3LCAweDZDRTIsIDB4NkQzRSwgMHg3MjJDLCAweDc0MzYsIDB4NzgzNCwgMHg3Rjc3LCAweDgyQUQsDQorICAgIDB4OEREQiwgMHg5ODE3LCAweDUyMjQsIDB4NTc0MiwgMHg2NzdGLCAweDcyNDgsIDB4NzRFMywgMHg4Q0E5LA0KKyAgICAweDhGQTYsIDB4OTIxMSwgMHg5NjJBLCAweDUxNkIsIDB4NTNFRCwgMHg2MzRDLCAweDRGNjksIDB4NTUwNCwNCisgICAgMHg2MDk2LCAweDY1NTcsIDB4NkM5QiwgMHg2RDdGLCAweDcyNEMsIDB4NzJGRCwgMHg3QTE3LCAweDg5ODcsDQorICAgIDB4OEM5RCwgMHg1RjZELCAweDZGOEUsIDB4NzBGOSwgMHg4MUE4LCAweDYxMEUsIDB4NEZCRiwgMHg1MDRGLA0KKyAgICAweDYyNDEsIDB4NzI0NywgMHg3QkM3LCAweDdERTgsIDB4N0ZFOSwgMHg5MDRELCAweDk3QUQsIDB4OUExOSwNCisgICAgMHg4Q0I2LCAweDU3NkEsIDB4NUU3MywgMHg2N0IwLCAweDg0MEQsIDB4OEE1NSwgMHg1NDIwLCAweDVCMTYsDQorICAgIDB4NUU2MywgMHg1RUUyLCAweDVGMEEsIDB4NjU4MywgMHg4MEJBLCAweDg1M0QsIDB4OTU4OSwgMHg5NjVCLA0KKyAgICAweDRGNDgsIDB4NTMwNSwgMHg1MzBELCAweDUzMEYsIDB4NTQ4NiwgMHg1NEZBLCAweDU3MDMsIDB4NUUwMywNCisgICAgMHg2MDE2LCAweDYyOUIsIDB4NjJCMSwgMHg2MzU1LCAweDZDRTEsIDB4NkQ2NiwgMHg3NUIxLCAweDc4MzIsDQorICAgIDB4ODBERSwgMHg4MTJGLCAweDgyREUsIDB4ODQ2MSwgMHg4NEIyLCAweDg4OEQsIDB4ODkxMiwgMHg5MDBCLA0KKyAgICAweDkyRUEsIDB4OThGRCwgMHg5QjkxLCAweDVFNDUsIDB4NjZCNCwgMHg2NkRELCAweDcwMTEsIDB4NzIwNiwNCisgICAgMHg0RkY1LCAweDUyN0QsIDB4NUY2QSwgMHg2MTUzLCAweDY3NTMsIDB4NkExOSwgMHg2RjAyLCAweDc0RTIsDQorICAgIDB4Nzk2OCwgMHg4ODY4LCAweDhDNzksIDB4OThDNywgMHg5OEM0LCAweDlBNDMsIDB4NTRDMSwgMHg3QTFGLA0KKyAgICAweDY5NTMsIDB4OEFGNywgMHg4QzRBLCAweDk4QTgsIDB4OTlBRSwgMHg1RjdDLCAweDYyQUIsIDB4NzVCMiwNCisgICAgMHg3NkFFLCAweDg4QUIsIDB4OTA3RiwgMHg5NjQyLCAweDUzMzksIDB4NUYzQywgMHg1RkM1LCAweDZDQ0MsDQorICAgIDB4NzNDQywgMHg3NTYyLCAweDc1OEIsIDB4N0I0NiwgMHg4MkZFLCAweDk5OUQsIDB4NEU0RiwgMHg5MDNDLA0KKyAgICAweDRFMEIsIDB4NEY1NSwgMHg1M0E2LCAweDU5MEYsIDB4NUVDOCwgMHg2NjMwLCAweDZDQjMsIDB4NzQ1NSwNCisgICAgMHg4Mzc3LCAweDg3NjYsIDB4OENDMCwgMHg5MDUwLCAweDk3MUUsIDB4OUMxNSwgMHg1OEQxLCAweDVCNzgsDQorICAgIDB4ODY1MCwgMHg4QjE0LCAweDlEQjQsIDB4NUJEMiwgMHg2MDY4LCAweDYwOEQsIDB4NjVGMSwgMHg2QzU3LA0KKyAgICAweDZGMjIsIDB4NkZBMywgMHg3MDFBLCAweDdGNTUsIDB4N0ZGMCwgMHg5NTkxLCAweDk1OTIsIDB4OTY1MCwNCisgICAgMHg5N0QzLCAweDUyNzIsIDB4OEY0NCwgMHg1MUZELCAweDU0MkIsIDB4NTRCOCwgMHg1NTYzLCAweDU1OEEsDQorICAgIDB4NkFCQiwgMHg2REI1LCAweDdERDgsIDB4ODI2NiwgMHg5MjlDLCAweDk2NzcsIDB4OUU3OSwgMHg1NDA4LA0KKyAgICAweDU0QzgsIDB4NzZEMiwgMHg4NkU0LCAweDk1QTQsIDB4OTVENCwgMHg5NjVDLCAweDRFQTIsIDB4NEYwOSwNCisgICAgMHg1OUVFLCAweDVBRTYsIDB4NURGNywgMHg2MDUyLCAweDYyOTcsIDB4Njc2RCwgMHg2ODQxLCAweDZDODYsDQorICAgIDB4NkUyRiwgMHg3RjM4LCAweDgwOUIsIDB4ODIyQSwgMHg5ODA1LCAweDRFQTUsIDB4NTA1NSwgMHg1NEIzLA0KKyAgICAweDU3OTMsIDB4NTk1QSwgMHg1QjY5LCAweDVCQjMsIDB4NjFDOCwgMHg2OTc3LCAweDZENzcsIDB4NzAyMywNCisgICAgMHg4N0Y5LCAweDg5RTMsIDB4OEE3MiwgMHg4QUU3LCAweDkwODIsIDB4OTlFRCwgMHg5QUI4LCAweDUyQkUsDQorICAgIDB4NjgzOCwgMHg1MDE2LCAweDVFNzgsIDB4Njc0RiwgMHg4MzQ3LCAweDg4NEMsIDB4NEVBQiwgMHg1NDExLA0KKyAgICAweDU2QUUsIDB4NzNFNiwgMHg5MTE1LCAweDk3RkYsIDB4OTkwOSwgMHg5OTU3LCAweDk5OTksIDB4NTY1MywNCisgICAgMHg1ODlGLCAweDg2NUIsIDB4OEEzMSwgMHg2MUIyLCAweDZBRjYsIDB4NzM3QiwgMHg4RUQyLCAweDZCNDcsDQorICAgIDB4OTZBQSwgMHg5QTU3LCAweDU5NTUsIDB4NzIwMCwgMHg4RDZCLCAweDk3NjksIDB4NEZENCwgMHg1Q0Y0LA0KKyAgICAweDVGMjYsIDB4NjFGOCwgMHg2NjVCLCAweDZDRUIsIDB4NzBBQiwgMHg3Mzg0LCAweDczQjksIDB4NzNGRSwNCisgICAgMHg3NzI5LCAweDc3NEQsIDB4N0Q0MywgMHg3RDYyLCAweDdFMjMsIDB4ODIzNywgMHg4ODUyLCAweDhDRTIsDQorICAgIDB4OTI0OSwgMHg5ODZGLCAweDVCNTEsIDB4N0E3NCwgMHg4ODQwLCAweDk4MDEsIDB4NUFDQywgMHg0RkUwLA0KKyAgICAweDUzNTQsIDB4NTkzRSwgMHg1Q0ZELCAweDYzM0UsIDB4NkQ3OSwgMHg3MkY5LCAweDgxMDUsIDB4ODEwNywNCisgICAgMHg4M0EyLCAweDkyQ0YsIDB4OTgzMCwgMHg0RUE4LCAweDUxNDQsIDB4NTIxMSwgMHg1NzhCLCAweDVGNjIsDQorICAgIDB4NkNDMiwgMHg2RUNFLCAweDcwMDUsIDB4NzA1MCwgMHg3MEFGLCAweDcxOTIsIDB4NzNFOSwgMHg3NDY5LA0KKyAgICAweDgzNEEsIDB4ODdBMiwgMHg4ODYxLCAweDkwMDgsIDB4OTBBMiwgMHg5M0EzLCAweDk5QTgsIDB4NTE2RSwNCisgICAgMHg1RjU3LCAweDYwRTAsIDB4NjE2NywgMHg2NkIzLCAweDg1NTksIDB4OEU0QSwgMHg5MUFGLCAweDk3OEIsDQorICAgIDB4NEU0RSwgMHg0RTkyLCAweDU0N0MsIDB4NThENSwgMHg1OEZBLCAweDU5N0QsIDB4NUNCNSwgMHg1RjI3LA0KKyAgICAweDYyMzYsIDB4NjI0OCwgMHg2NjBBLCAweDY2NjcsIDB4NkJFQiwgMHg2RDY5LCAweDZEQ0YsIDB4NkU1NiwNCisgICAgMHg2RUY4LCAweDZGOTQsIDB4NkZFMCwgMHg2RkU5LCAweDcwNUQsIDB4NzJEMCwgMHg3NDI1LCAweDc0NUEsDQorICAgIDB4NzRFMCwgMHg3NjkzLCAweDc5NUMsIDB4N0NDQSwgMHg3RTFFLCAweDgwRTEsIDB4ODJBNiwgMHg4NDZCLA0KKyAgICAweDg0QkYsIDB4ODY0RSwgMHg4NjVGLCAweDg3NzQsIDB4OEI3NywgMHg4QzZBLCAweDkzQUMsIDB4OTgwMCwNCisgICAgMHg5ODY1LCAweDYwRDEsIDB4NjIxNiwgMHg5MTc3LCAweDVBNUEsIDB4NjYwRiwgMHg2REY3LCAweDZFM0UsDQorICAgIDB4NzQzRiwgMHg5QjQyLCAweDVGRkQsIDB4NjBEQSwgMHg3QjBGLCAweDU0QzQsIDB4NUYxOCwgMHg2QzVFLA0KKyAgICAweDZDRDMsIDB4NkQyQSwgMHg3MEQ4LCAweDdEMDUsIDB4ODY3OSwgMHg4QTBDLCAweDlEM0IsIDB4NTMxNiwNCisgICAgMHg1NDhDLCAweDVCMDUsIDB4NkEzQSwgMHg3MDZCLCAweDc1NzUsIDB4Nzk4RCwgMHg3OUJFLCAweDgyQjEsDQorICAgIDB4ODNFRiwgMHg4QTcxLCAweDhCNDEsIDB4OENBOCwgMHg5Nzc0LCAweDY0RjQsIDB4NjUyQiwgMHg3OEJBLA0KKyAgICAweDc4QkIsIDB4N0E2QiwgMHg0RTM4LCAweDU1OUEsIDB4NTk1MCwgMHg1QkE2LCAweDVFN0IsIDB4NjBBMywNCisgICAgMHg2M0RCLCAweDZCNjEsIDB4NjY2NSwgMHg2ODUzLCAweDZFMTksIDB4NzE2NSwgMHg3NEIwLCAweDdEMDgsDQorICAgIDB4OTA4NCwgMHg5QTY5LCAweDlDMjUsIDB4NkQzQiwgMHg2RUQxLCAweDczM0UsIDB4OEM0MSwgMHg5NUNBLA0KKyAgICAweDUxRjAsIDB4NUU0QywgMHg1RkE4LCAweDYwNEQsIDB4NjBGNiwgMHg2MTMwLCAweDYxNEMsIDB4NjY0MywNCisgICAgMHg2NjQ0LCAweDY5QTUsIDB4NkNDMSwgMHg2RTVGLCAweDZFQzksIDB4NkY2MiwgMHg3MTRDLCAweDc0OUMsDQorICAgIDB4NzY4NywgMHg3QkMxLCAweDdDMjcsIDB4ODM1MiwgMHg4NzU3LCAweDkwNTEsIDB4OTY4RCwgMHg5RUMzLA0KKyAgICAweDUzMkYsIDB4NTZERSwgMHg1RUZCLCAweDVGOEEsIDB4NjA2MiwgMHg2MDk0LCAweDYxRjcsIDB4NjY2NiwNCisgICAgMHg2NzAzLCAweDZBOUMsIDB4NkRFRSwgMHg2RkFFLCAweDcwNzAsIDB4NzM2QSwgMHg3RTZBLCAweDgxQkUsDQorICAgIDB4ODMzNCwgMHg4NkQ0LCAweDhBQTgsIDB4OENDNCwgMHg1MjgzLCAweDczNzIsIDB4NUI5NiwgMHg2QTZCLA0KKyAgICAweDk0MDQsIDB4NTRFRSwgMHg1Njg2LCAweDVCNUQsIDB4NjU0OCwgMHg2NTg1LCAweDY2QzksIDB4Njg5RiwNCisgICAgMHg2RDhELCAweDZEQzYsIDB4NzIzQiwgMHg4MEI0LCAweDkxNzUsIDB4OUE0RCwgMHg0RkFGLCAweDUwMTksDQorICAgIDB4NTM5QSwgMHg1NDBFLCAweDU0M0MsIDB4NTU4OSwgMHg1NUM1LCAweDVFM0YsIDB4NUY4QywgMHg2NzNELA0KKyAgICAweDcxNjYsIDB4NzNERCwgMHg5MDA1LCAweDUyREIsIDB4NTJGMywgMHg1ODY0LCAweDU4Q0UsIDB4NzEwNCwNCisgICAgMHg3MThGLCAweDcxRkIsIDB4ODVCMCwgMHg4QTEzLCAweDY2ODgsIDB4ODVBOCwgMHg1NUE3LCAweDY2ODQsDQorICAgIDB4NzE0QSwgMHg4NDMxLCAweDUzNDksIDB4NTU5OSwgMHg2QkMxLCAweDVGNTksIDB4NUZCRCwgMHg2M0VFLA0KKyAgICAweDY2ODksIDB4NzE0NywgMHg4QUYxLCAweDhGMUQsIDB4OUVCRSwgMHg0RjExLCAweDY0M0EsIDB4NzBDQiwNCisgICAgMHg3NTY2LCAweDg2NjcsIDB4NjA2NCwgMHg4QjRFLCAweDlERjgsIDB4NTE0NywgMHg1MUY2LCAweDUzMDgsDQorICAgIDB4NkQzNiwgMHg4MEY4LCAweDlFRDEsIDB4NjYxNSwgMHg2QjIzLCAweDcwOTgsIDB4NzVENSwgMHg1NDAzLA0KKyAgICAweDVDNzksIDB4N0QwNywgMHg4QTE2LCAweDZCMjAsIDB4NkIzRCwgMHg2QjQ2LCAweDU0MzgsIDB4NjA3MCwNCisgICAgMHg2RDNELCAweDdGRDUsIDB4ODIwOCwgMHg1MEQ2LCAweDUxREUsIDB4NTU5QywgMHg1NjZCLCAweDU2Q0QsDQorICAgIDB4NTlFQywgMHg1QjA5LCAweDVFMEMsIDB4NjE5OSwgMHg2MTk4LCAweDYyMzEsIDB4NjY1RSwgMHg2NkU2LA0KKyAgICAweDcxOTksIDB4NzFCOSwgMHg3MUJBLCAweDcyQTcsIDB4NzlBNywgMHg3QTAwLCAweDdGQjIsIDB4OEE3MCwNCisgICAgMHgzMDAxLCAweDMwMDIsIDB4MjAyNSwgMHgwMEFELCAweDIwMTUsIDB4MjIyNSwgMHhGRjVFLCAweDMwMTQsDQorICAgIDB4MzAxNSwgMHgzMDA4LCAweDMwMDksIDB4MzAwQSwgMHgzMDBCLCAweDMwMEMsIDB4MzAwRCwgMHgzMDBFLA0KKyAgICAweDMwMEYsIDB4MzAxMCwgMHgzMDExLCAweDMwMTMsIDB4RkYwMSwgMHhGRjA4LCAweEZGMDksIDB4RkYwQywNCisgICAgMHhGRjBFLCAweEZGMUEsIDB4RkYxQiwgMHhGRjFDLCAweEZGMUQsIDB4RkYxRSwgMHhGRjFGLCAweEZGM0IsDQorICAgIDB4RkYzRCwgMHhGRjNGLCAweEZGNUIsIDB4RkY1QywgMHhGRjVELCAweEZGNUUsIDB4MDAyMCwgMHgwMDIxLA0KKyAgICAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwgMHgwMDI3LCAweDAwMjgsIDB4MDAyOSwNCisgICAgMHgwMDJBLCAweDAwMkIsIDB4MDAyQywgMHgwMDJELCAweDAwMkUsIDB4MDAyRiwgMHgwMDMwLCAweDAwMzEsDQorICAgIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LA0KKyAgICAweDAwM0EsIDB4MDAzQiwgMHgwMDNDLCAweDAwM0QsIDB4MDAzRSwgMHgwMDNGLCAweDAwNDAsIDB4MDA0MSwNCisgICAgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LCAweDAwNDYsIDB4MDA0NywgMHgwMDQ4LCAweDAwNDksDQorICAgIDB4MDA0QSwgMHgwMDRCLCAweDAwNEMsIDB4MDA0RCwgMHgwMDRFLCAweDAwNEYsIDB4MDA1MCwgMHgwMDUxLA0KKyAgICAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwgMHgwMDU3LCAweDAwNTgsIDB4MDA1OSwNCisgICAgMHgwMDVBLCAweDAwNUIsIDB4MDA1QywgMHgwMDVELCAweDAwNUUsIDB4MDA1RiwgMHgwMDYwLCAweDAwNjEsDQorICAgIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LA0KKyAgICAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLCAweDAwNkQsIDB4MDA2RSwgMHgwMDZGLCAweDAwNzAsIDB4MDA3MSwNCisgICAgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywgMHgwMDc4LCAweDAwNzksDQorICAgIDB4MDA3QSwgMHgwMDdCLCAweDAwN0MsIDB4MDA3RCwgMHgyMDNFLCAweDAwN0UsIDB4MDA1QywgMHgyMzFDLA0KKyAgICAweDIzMUYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgzMDBFLCAweDMwMEYsIDB4MzAwQSwNCisgICAgMHgzMDBCLCAweDMwMDgsIDB4MzAwOSwgMHgwMDI4LCAweDAwMjksIDB4MDAwMCwgMHgwMDAwLCAweDAwMjgsDQorICAgIDB4MDAyOSwgMHgwMDI4LCAweDAwMjksIDB4MDAwMCwgMHgwMDAwLCAweDAwMjgsIDB4MDAyOSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MzAxNiwgMHgzMDE3LCAweDMwMTYsIDB4MzAxNywgMHgzMDE4LCAweDMwMTksIDB4MDA1QiwNCisgICAgMHgwMDVELCAweDAwMDAsIDB4MDAwMCwgMHgyNjNFLCAweDI2M0QsIDB4MjAyMSwgMHgyMDIxLCAweDIwMjAsDQorICAgIDB4MjAyMSwgMHgwMDAwLCAweDIyMTcsIDB4MDAwMCwgMHgwMDAwLCAweDIwMUYsIDB4MjAxQiwgMHgwMkQ2LA0KKyAgICAweDAyRDcsIDB4MDBENywgMHgyMjFFLCAweDAwMDAsIDB4MDBCMSwgMHgyMjEzLCAweDAwM0UsIDB4MDAzQywNCisgICAgMHgwMDNELCAweDIyNjAsIDB4MjA3RCwgMHgyMDdFLCAweDAwN0IsIDB4MDA3RCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MjIyOSwgMHgyMjJBLCAweDIyODIsIDB4MjIwOCwgMHgwM0EzLCAweDAwMjEsIDB4MDAwMCwgMHgzMDIxLA0KKyAgICAweDMwMjIsIDB4MzAyMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg0RTAzLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg1MzQxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDI3LCAweDMwMTQsIDB4MzAxNSwgMHgwMDJBLCAweDAwMDAsDQorICAgIDB4MjIxNywgMHgwMDJBLCAweENEQ0QsIDB4MzAwMSwgMHgzMDAyLCAweDAwMjgsIDB4MDAyOSwgMHgwMDI4LA0KKyAgICAweDAwMjksIDB4MDAyOCwgMHgwMDI5LCAweDMwMTYsIDB4MzAxNywgMHgzMDEwLCAweDMwMTEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsDQorICAgIDB4MjBERSwgMHgyMERFLCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELA0KKyAgICAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMEI2LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgyMkVGLCAweDIyMzcsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsDQorICAgIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELA0KKyAgICAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDI3OEEsIDB4Mjc4QiwNCisgICAgMHgyNzhDLCAweDI3OEQsIDB4Mjc4RSwgMHgyNzhGLCAweDI3OTAsIDB4Mjc5MSwgMHgyNzkyLCAweDI3OTMsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwNCisgICAgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksDQorICAgIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LA0KKyAgICAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MjRCNiwgMHgyNEI3LCAweDI0QjgsIDB4MjRCOSwNCisgICAgMHgyNEJBLCAweDI0QkIsIDB4MjRCQywgMHgyNEJELCAweDI0QkUsIDB4MjRCRiwgMHgyNEMwLCAweDI0QzEsDQorICAgIDB4MjRDMiwgMHgyNEMzLCAweDI0QzQsIDB4MjRDNSwgMHgyNEM2LCAweDI0QzcsIDB4MjRDOCwgMHgyNEM5LA0KKyAgICAweDI0Q0EsIDB4MjRDQiwgMHgyNENDLCAweDI0Q0QsIDB4MjRDRSwgMHgyNENGLCAweDIwREUsIDB4MjBERSwNCisgICAgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDAwNUQsDQorICAgIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELA0KKyAgICAweDAwNUQsIDB4MDA1RCwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwNCisgICAgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsDQorICAgIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjJDRiwgMHgyMkNFLCAweDIyQ0YsIDB4MjJDRSwgMHgyMjgwLA0KKyAgICAweDIyODEsIDB4MjI3MCwgMHgyMjcxLCAweDIyNzIsIDB4MjI3MywgMHgwMDAwLCAweDIyOEEsIDB4MDAwMCwNCisgICAgMHgyMjhCLCAweDIyNzYsIDB4MjI3NywgMHgyMjc5LCAweDIyREEsIDB4MjJEQiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDIyMjEsIDB4MjI0NSwgMHgyMjQzLCAweDIyNDgsIDB4MDAwMCwgMHgyMkE0LA0KKyAgICAweDIyQUIsIDB4MDAwMCwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwNCisgICAgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDAwMDAsIDB4MjQ2MCwgMHgyNDYxLCAweDI0NjIsDQorICAgIDB4MjQ2MywgMHgyNDY0LCAweDI0NjUsIDB4MjQ2NiwgMHgyNDY3LCAweDI0NjgsIDB4MDAyOSwgMHgwMDI5LA0KKyAgICAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwNCisgICAgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksDQorICAgIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LA0KKyAgICAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwNCisgICAgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksDQorICAgIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LA0KKyAgICAweDAwMjksIDB4MDAyOSwgMHgwMDIxLCAweDAwQjAsIDB4MDAyNywgMHgwMDIyLCAweDIwMzQsIDB4MDAyOSwNCisgICAgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDAwLCAweDAwMDAsIDB4MjAyMCwgMHgyMDIwLCAweDIwMjEsDQorICAgIDB4MjAyMCwgMHgwMEE3LCAweDAwMjMsIDB4MDAyQSwgMHgwMDJBLCAweDAwMDAsIDB4MDAwMCwgMHgyMDQyLA0KKyAgICAweDAwMkEsIDB4MDAwMCwgMHgwMDAwLCAweDIwNDIsIDB4MDAyQSwgMHgwMDAwLCAweDAwMDAsIDB4MjAyMiwNCisgICAgMHgyMERGLCAweDIwREYsIDB4MDAwMCwgMHgyMERGLCAweDMwMDgsIDB4MzAwOSwgMHgzMDBBLCAweDMwMEIsDQorICAgIDB4MjYxQywgMHgyNjFFLCAweDAwMDAsIDB4MDAwMCwgMHgyMERFLCAweDAwMDAsIDB4MjBERSwgMHgyMERFLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjBERCwgMHgyMERELCAweDI3MUEsIDB4MjcxNiwNCisgICAgMHgwMDAwLCAweDI1RUYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDI1Q0MsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjBBOSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MjYyRiwgMHgwMDAwLCAweDI2MkYsIDB4MjYyRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgzMDIwLA0KKyAgICAweDAwMDAsIDB4Mjc3NiwgMHgyNzc3LCAweDI3NzgsIDB4Mjc3OSwgMHgyNzdBLCAweDI3N0IsIDB4Mjc3QywNCisgICAgMHgyNzdELCAweDI3N0UsIDB4Mjc3RiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LA0KKyAgICAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDI2NDIsIDB4MjJBOSwgMHgzMDM2LCAweDI1Q0IsIDB4MjVEMywNCisgICAgMHgyNUExLCAweDIzMDIsIDB4MDAwMCwgMHgyNUFELCAweDI1QUQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MjVDNywgMHgwMDAwLCAweDAwMDAsIDB4MjIwNiwgMHgyMkJGLCAweDIzMUUsIDB4MDAwMCwgMHgyMjI1LA0KKyAgICAweDIyMjYsIDB4MDAwMCwgMHgyMjUzLCAweDIyNTEsIDB4MjI2NiwgMHgyMjY3LCAweDIyMTMsIDB4MjI5NSwNCisgICAgMHgyMjk2LCAweDIyOTcsIDB4MjBERCwgMHgyMzE0LCAweDAwMDAsIDB4MDAwMCwgMHgyMjYyLCAweDAwMDAsDQorICAgIDB4MjVCMSwgMHgwMDAwLCAweDIyMjIsIDB4MjI1MCwgMHgwMEQ4LCAweDIzNEEsIDB4MjJBMywgMHgwMzM4LA0KKyAgICAweDAwMDAsIDB4MjI2RSwgMHgyMjZGLCAweDIyODUsIDB4MjI4NCwgMHgyMjA5LCAweDIyMEMsIDB4MjJCQiwNCisgICAgMHgwMDE2LCAweDIyNUEsIDB4MjMwNiwgMHgwMDI0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgzMjlFLCAweDAwMDAsIDB4MjAzQywgMHgwMDNGLCAweDAwMDAsIDB4MDAzRiwgMHgyMkM0LA0KKyAgICAweDI1QzcsIDB4MjJDNCwgMHgyNUM2LCAweDI1QUIsIDB4MjVBMSwgMHgyNUFCLCAweDI1QTAsIDB4MjVFNiwNCisgICAgMHgyNUNCLCAweDI1RTYsIDB4MjVDRiwgMHgyNUJELCAweDI1QjMsIDB4MjVCNywgMHgyNUMxLCAweDI3MjYsDQorICAgIDB4MjVDRiwgMHgyNUEwLCAweDAwMDAsIDB4MjVDQSwgMHgzMjMxLCAweDMyMzksIDB4MzNDQiwgMHgyNDgzLA0KKyAgICAweDI0OTQsIDB4MjQ5NSwgMHgyNDk2LCAweDI0OTcsIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwNCisgICAgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgyMTkyLCAweDIxOTAsDQorICAgIDB4MjE5MSwgMHgyMTkzLCAweDIxOTYsIDB4MjE5NywgMHgyMTk4LCAweDIxOTksIDB4MjFEMCwgMHgyMUNGLA0KKyAgICAweDIxQ0QsIDB4MjFENCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDI3OTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDI3OUMsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDI3QkEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMUQxLCAweDIxRDMsDQorICAgIDB4MDAwMCwgMHgyNzlFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDI3OUUsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDIxQjUsIDB4MjFCMSwgMHgwMDAwLCAweDIxQjQsIDB4MjFCMCwgMHgyMUIzLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MjFFNiwgMHgyMUU4LCAweDIxRTcsIDB4MjFFOSwgMHgyMUJDLCAweDIxQzAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgyMUMwLCAweDIxQkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgyMUM0LCAweDIxQzUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsDQorICAgIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLA0KKyAgICAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwNCisgICAgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsDQorICAgIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLA0KKyAgICAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwNCisgICAgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgyMERFLCAweDIwREUsDQorICAgIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLA0KKyAgICAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwNCisgICAgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsDQorICAgIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLA0KKyAgICAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwNCisgICAgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsDQorICAgIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLA0KKyAgICAweDIwREUsIDB4MjBERSwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwNCisgICAgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsDQorICAgIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELA0KKyAgICAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwNCisgICAgMHgyMERELCAweDIwREQsIDB4MjQ4MywgMHgyNDg0LCAweDI0ODUsIDB4MjQ4NiwgMHgyNDg3LCAweDAwMjksDQorICAgIDB4MDAyOSwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDIwREQsIDB4MjBERCwgMHgyMERELA0KKyAgICAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwNCisgICAgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsDQorICAgIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELA0KKyAgICAweDMyOTQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwNCisgICAgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsDQorICAgIDB4MzJBNSwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELA0KKyAgICAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwNCisgICAgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsDQorICAgIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELA0KKyAgICAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwNCisgICAgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsDQorICAgIDB4MjBERCwgMHgwMDI5LCAweDAwMjksIDB4MDAyOSwgMHgwMDI5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgyNzk0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMUUwLCAweDIxRTEsDQorICAgIDB4MjFFMiwgMHgyMUUzLCAweDAwMDAsIDB4MjdBMSwgMHgwMDAwLCAweDAwMDAsIDB4MjFFNiwgMHgyMUU4LA0KKyAgICAweDIxRTcsIDB4MjFFOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjYxRCwgMHgyNjFGLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgyMERELCAweDIwREQsIDB4MjBERCwgMHgyMERELCAweDIwREQsIDB4MjBERCwNCisgICAgMHgyMERELCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsDQorICAgIDB4MjBERSwgMHgyMERFLCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELA0KKyAgICAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgyMERFLCAweDIwREUsIDB4MjBERSwNCisgICAgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDAwNUQsDQorICAgIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELA0KKyAgICAweDAwNUQsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MjBERSwNCisgICAgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsDQorICAgIDB4MDA1RCwgMHgwMDVELCAweDAwNUQsIDB4MDA1RCwgMHgwMDVELCAweDIwREUsIDB4MjBERSwgMHgyMERFLA0KKyAgICAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsIDB4MzI5MCwgMHgzMjhBLCAweDMyOEIsIDB4MzI4QywNCisgICAgMHgzMjhELCAweDMyOEUsIDB4MzI4RiwgMHgyMERFLCAweDIwREUsIDB4MjBERSwgMHgyMERFLCAweDIwREUsDQorICAgIDB4MjBERSwgMHgyMERFLCAweDMwMEMsIDB4MzAwRCwgMHgzMDBFLCAweDMwMEYsIDB4MjFFOCwgMHgyMUU2LA0KKyAgICAweDIxRTcsIDB4MjFFOSwgMHgwMDIyLCAweDMwMUYsIDB4MzAxRCwgMHgyMDM2LCAweDAwNjAsIDB4MzAwMSwNCisgICAgMHgwMDAwLCAweDAwMjEsIDB4MzAyMSwgMHgwMDJDLCAweDMwMDIsIDB4QUMwMiwgMHhBQzAzLCAweEFDMDUsDQorICAgIDB4QUMwNiwgMHhBQzBCLCAweEFDMEMsIDB4QUMwRCwgMHhBQzBFLCAweEFDMEYsIDB4QUMxOCwgMHhBQzFFLA0KKyAgICAweEFDMUYsIDB4QUMyMSwgMHhBQzIyLCAweEFDMjMsIDB4QUMyNSwgMHhBQzI2LCAweEFDMjcsIDB4QUMyOCwNCisgICAgMHhBQzI5LCAweEFDMkEsIDB4QUMyQiwgMHhBQzJFLCAweEFDMzIsIDB4QUMzMywgMHhBQzM0LCAweEFDMzUsDQorICAgIDB4QUMzNiwgMHhBQzM3LCAweEFDM0EsIDB4QUMzQiwgMHhBQzNELCAweEFDM0UsIDB4QUMzRiwgMHhBQzQxLA0KKyAgICAweEFDNDIsIDB4QUM0MywgMHhBQzQ0LCAweEFDNDUsIDB4QUM0NiwgMHhBQzQ3LCAweEFDNDgsIDB4QUM0OSwNCisgICAgMHhBQzRBLCAweEFDNEMsIDB4QUM0RSwgMHhBQzRGLCAweEFDNTAsIDB4QUM1MSwgMHhBQzUyLCAweEFDNTMsDQorICAgIDB4QUM1NSwgMHhBQzU2LCAweEFDNTcsIDB4QUM1OSwgMHhBQzVBLCAweEFDNUIsIDB4QUM1RCwgMHhBQzVFLA0KKyAgICAweEFDNUYsIDB4QUM2MCwgMHhBQzYxLCAweEFDNjIsIDB4QUM2MywgMHhBQzY0LCAweEFDNjUsIDB4QUM2NiwNCisgICAgMHhBQzY3LCAweEFDNjgsIDB4QUM2OSwgMHhBQzZBLCAweEFDNkIsIDB4QUM2QywgMHhBQzZELCAweEFDNkUsDQorICAgIDB4QUM2RiwgMHhBQzcyLCAweEFDNzMsIDB4QUM3NSwgMHhBQzc2LCAweEFDNzksIDB4QUM3QiwgMHhBQzdDLA0KKyAgICAweEFDN0QsIDB4QUM3RSwgMHhBQzdGLCAweEFDODIsIDB4QUM4NywgMHhBQzg4LCAweEFDOEQsIDB4QUM4RSwNCisgICAgMHhBQzhGLCAweEFDOTEsIDB4QUM5MiwgMHhBQzkzLCAweEFDOTUsIDB4QUM5NiwgMHhBQzk3LCAweEFDOTgsDQorICAgIDB4QUM5OSwgMHhBQzlBLCAweEFDOUIsIDB4QUM5RSwgMHhBQ0EyLCAweEFDQTMsIDB4QUNBNCwgMHhBQ0E1LA0KKyAgICAweEFDQTYsIDB4QUNBNywgMHhBQ0FCLCAweEFDQUQsIDB4QUNBRSwgMHhBQ0IxLCAweEFDQjIsIDB4QUNCMywNCisgICAgMHhBQ0I0LCAweEFDQjUsIDB4QUNCNiwgMHhBQ0I3LCAweEFDQkEsIDB4QUNCRSwgMHhBQ0JGLCAweEFDQzAsDQorICAgIDB4QUNDMiwgMHhBQ0MzLCAweEFDQzUsIDB4QUNDNiwgMHhBQ0M3LCAweEFDQzksIDB4QUNDQSwgMHhBQ0NCLA0KKyAgICAweEFDQ0QsIDB4QUNDRSwgMHhBQ0NGLCAweEFDRDAsIDB4QUNEMSwgMHhBQ0QyLCAweEFDRDMsIDB4QUNENCwNCisgICAgMHhBQ0Q2LCAweEFDRDgsIDB4QUNEOSwgMHhBQ0RBLCAweEFDREIsIDB4QUNEQywgMHhBQ0RELCAweEFDREUsDQorICAgIDB4QUNERiwgMHhBQ0UyLCAweEFDRTMsIDB4QUNFNSwgMHhBQ0U2LCAweEFDRTksIDB4QUNFQiwgMHhBQ0VELA0KKyAgICAweEFDRUUsIDB4QUNGMiwgMHhBQ0Y0LCAweEFDRjcsIDB4QUNGOCwgMHhBQ0Y5LCAweEFDRkEsIDB4QUNGQiwNCisgICAgMHhBQ0ZFLCAweEFDRkYsIDB4QUQwMSwgMHhBRDAyLCAweEFEMDMsIDB4QUQwNSwgMHhBRDA3LCAweEFEMDgsDQorICAgIDB4QUQwOSwgMHhBRDBBLCAweEFEMEIsIDB4QUQwRSwgMHhBRDEwLCAweEFEMTIsIDB4QUQxMywgMHhBRDE0LA0KKyAgICAweEFEMTUsIDB4QUQxNiwgMHhBRDE3LCAweEFEMTksIDB4QUQxQSwgMHhBRDFCLCAweEFEMUQsIDB4QUQxRSwNCisgICAgMHhBRDFGLCAweEFEMjEsIDB4QUQyMiwgMHhBRDIzLCAweEFEMjQsIDB4QUQyNSwgMHhBRDI2LCAweEFEMjcsDQorICAgIDB4QUQyOCwgMHhBRDJBLCAweEFEMkIsIDB4QUQyRSwgMHhBRDJGLCAweEFEMzAsIDB4QUQzMSwgMHhBRDMyLA0KKyAgICAweEFEMzMsIDB4QUQzNiwgMHhBRDM3LCAweEFEMzksIDB4QUQzQSwgMHhBRDNCLCAweEFEM0QsIDB4QUQzRSwNCisgICAgMHhBRDNGLCAweEFENDAsIDB4QUQ0MSwgMHhBRDQyLCAweEFENDMsIDB4QUQ0NiwgMHhBRDQ4LCAweEFENEEsDQorICAgIDB4QUQ0QiwgMHhBRDRDLCAweEFENEQsIDB4QUQ0RSwgMHhBRDRGLCAweEFENTEsIDB4QUQ1MiwgMHhBRDUzLA0KKyAgICAweEFENTUsIDB4QUQ1NiwgMHhBRDU3LCAweEFENTksIDB4QUQ1QSwgMHhBRDVCLCAweEFENUMsIDB4QUQ1RCwNCisgICAgMHhBRDVFLCAweEFENUYsIDB4QUQ2MCwgMHhBRDYyLCAweEFENjQsIDB4QUQ2NSwgMHhBRDY2LCAweEFENjcsDQorICAgIDB4QUQ2OCwgMHhBRDY5LCAweEFENkEsIDB4QUQ2QiwgMHhBRDZFLCAweEFENkYsIDB4QUQ3MSwgMHhBRDcyLA0KKyAgICAweEFENzcsIDB4QUQ3OCwgMHhBRDc5LCAweEFEN0EsIDB4QUQ3RSwgMHhBRDgwLCAweEFEODMsIDB4QUQ4NCwNCisgICAgMHhBRDg1LCAweEFEODYsIDB4QUQ4NywgMHhBRDhBLCAweEFEOEIsIDB4QUQ4RCwgMHhBRDhFLCAweEFEOEYsDQorICAgIDB4QUQ5MSwgMHhBRDkyLCAweEFEOTMsIDB4QUQ5NCwgMHhBRDk1LCAweEFEOTYsIDB4QUQ5NywgMHhBRDk4LA0KKyAgICAweEFEOTksIDB4QUQ5QSwgMHhBRDlCLCAweEFEOUUsIDB4QUQ5RiwgMHhBREEwLCAweEFEQTEsIDB4QURBMiwNCisgICAgMHhBREEzLCAweEFEQTUsIDB4QURBNiwgMHhBREE3LCAweEFEQTgsIDB4QURBOSwgMHhBREFBLCAweEFEQUIsDQorICAgIDB4QURBQywgMHhBREFELCAweEFEQUUsIDB4QURBRiwgMHhBREIwLCAweEFEQjEsIDB4QURCMiwgMHhBREIzLA0KKyAgICAweEFEQjQsIDB4QURCNSwgMHhBREI2LCAweEFEQjgsIDB4QURCOSwgMHhBREJBLCAweEFEQkIsIDB4QURCQywNCisgICAgMHhBREJELCAweEFEQkUsIDB4QURCRiwgMHhBREMyLCAweEFEQzMsIDB4QURDNSwgMHhBREM2LCAweEFEQzcsDQorICAgIDB4QURDOSwgMHhBRENBLCAweEFEQ0IsIDB4QURDQywgMHhBRENELCAweEFEQ0UsIDB4QURDRiwgMHhBREQyLA0KKyAgICAweEFERDQsIDB4QURENSwgMHhBREQ2LCAweEFERDcsIDB4QUREOCwgMHhBREQ5LCAweEFEREEsIDB4QUREQiwNCisgICAgMHhBRERELCAweEFEREUsIDB4QURERiwgMHhBREUxLCAweEFERTIsIDB4QURFMywgMHhBREU1LCAweEFERTYsDQorICAgIDB4QURFNywgMHhBREU4LCAweEFERTksIDB4QURFQSwgMHhBREVCLCAweEFERUMsIDB4QURFRCwgMHhBREVFLA0KKyAgICAweEFERUYsIDB4QURGMCwgMHhBREYxLCAweEFERjIsIDB4QURGMywgMHhBREY0LCAweEFERjUsIDB4QURGNiwNCisgICAgMHhBREY3LCAweEFERkEsIDB4QURGQiwgMHhBREZELCAweEFERkUsIDB4QUUwMiwgMHhBRTAzLCAweEFFMDQsDQorICAgIDB4QUUwNSwgMHhBRTA2LCAweEFFMDcsIDB4QUUwQSwgMHhBRTBDLCAweEFFMEUsIDB4QUUwRiwgMHhBRTEwLA0KKyAgICAweEFFMTEsIDB4QUUxMiwgMHhBRTEzLCAweEFFMTUsIDB4QUUxNiwgMHhBRTE3LCAweEFFMTgsIDB4QUUxOSwNCisgICAgMHhBRTFBLCAweEFFMUIsIDB4QUUxQywgMHhBRTFELCAweEFFMUUsIDB4QUUxRiwgMHhBRTIwLCAweEFFMjEsDQorICAgIDB4QUUyMiwgMHhBRTIzLCAweEFFMjQsIDB4QUUyNSwgMHhBRTI2LCAweEFFMjcsIDB4QUUyOCwgMHhBRTI5LA0KKyAgICAweEFFMkEsIDB4QUUyQiwgMHhBRTJDLCAweEFFMkQsIDB4QUUyRSwgMHhBRTJGLCAweEFFMzIsIDB4QUUzMywNCisgICAgMHhBRTM1LCAweEFFMzYsIDB4QUUzOSwgMHhBRTNCLCAweEFFM0MsIDB4QUUzRCwgMHhBRTNFLCAweEFFM0YsDQorICAgIDB4QUU0MiwgMHhBRTQ0LCAweEFFNDcsIDB4QUU0OCwgMHhBRTQ5LCAweEFFNEIsIDB4QUU0RiwgMHhBRTUxLA0KKyAgICAweEFFNTIsIDB4QUU1MywgMHhBRTU1LCAweEFFNTcsIDB4QUU1OCwgMHhBRTU5LCAweEFFNUEsIDB4QUU1QiwNCisgICAgMHhBRTVFLCAweEFFNjIsIDB4QUU2MywgMHhBRTY0LCAweEFFNjYsIDB4QUU2NywgMHhBRTZBLCAweEFFNkIsDQorICAgIDB4QUU2RCwgMHhBRTZFLCAweEFFNkYsIDB4QUU3MSwgMHhBRTcyLCAweEFFNzMsIDB4QUU3NCwgMHhBRTc1LA0KKyAgICAweEFFNzYsIDB4QUU3NywgMHhBRTdBLCAweEFFN0UsIDB4QUU3RiwgMHhBRTgwLCAweEFFODEsIDB4QUU4MiwNCisgICAgMHhBRTgzLCAweEFFODYsIDB4QUU4NywgMHhBRTg4LCAweEFFODksIDB4QUU4QSwgMHhBRThCLCAweEFFOEQsDQorICAgIDB4QUU4RSwgMHhBRThGLCAweEFFOTAsIDB4QUU5MSwgMHhBRTkyLCAweEFFOTMsIDB4QUU5NCwgMHhBRTk1LA0KKyAgICAweEFFOTYsIDB4QUU5NywgMHhBRTk4LCAweEFFOTksIDB4QUU5QSwgMHhBRTlCLCAweEFFOUMsIDB4QUU5RCwNCisgICAgMHhBRTlFLCAweEFFOUYsIDB4QUVBMCwgMHhBRUExLCAweEFFQTIsIDB4QUVBMywgMHhBRUE0LCAweEFFQTUsDQorICAgIDB4QUVBNiwgMHhBRUE3LCAweEFFQTgsIDB4QUVBOSwgMHhBRUFBLCAweEFFQUIsIDB4QUVBQywgMHhBRUFELA0KKyAgICAweEFFQUUsIDB4QUVBRiwgMHhBRUIwLCAweEFFQjEsIDB4QUVCMiwgMHhBRUIzLCAweEFFQjQsIDB4QUVCNSwNCisgICAgMHhBRUI2LCAweEFFQjcsIDB4QUVCOCwgMHhBRUI5LCAweEFFQkEsIDB4QUVCQiwgMHhBRUJGLCAweEFFQzEsDQorICAgIDB4QUVDMiwgMHhBRUMzLCAweEFFQzUsIDB4QUVDNiwgMHhBRUM3LCAweEFFQzgsIDB4QUVDOSwgMHhBRUNBLA0KKyAgICAweEFFQ0IsIDB4QUVDRSwgMHhBRUQyLCAweEFFRDMsIDB4QUVENCwgMHhBRUQ1LCAweEFFRDYsIDB4QUVENywNCisgICAgMHhBRURBLCAweEFFREIsIDB4QUVERCwgMHhBRURFLCAweEFFREYsIDB4QUVFMCwgMHhBRUUxLCAweEFFRTIsDQorICAgIDB4QUVFMywgMHhBRUU0LCAweEFFRTUsIDB4QUVFNiwgMHhBRUU3LCAweEFFRTksIDB4QUVFQSwgMHhBRUVDLA0KKyAgICAweEFFRUUsIDB4QUVFRiwgMHhBRUYwLCAweEFFRjEsIDB4QUVGMiwgMHhBRUYzLCAweEFFRjUsIDB4QUVGNiwNCisgICAgMHhBRUY3LCAweEFFRjksIDB4QUVGQSwgMHhBRUZCLCAweEFFRkQsIDB4QUVGRSwgMHhBRUZGLCAweEFGMDAsDQorICAgIDB4QUYwMSwgMHhBRjAyLCAweEFGMDMsIDB4QUYwNCwgMHhBRjA1LCAweEFGMDYsIDB4QUYwOSwgMHhBRjBBLA0KKyAgICAweEFGMEIsIDB4QUYwQywgMHhBRjBFLCAweEFGMEYsIDB4QUYxMSwgMHhBRjEyLCAweEFGMTMsIDB4QUYxNCwNCisgICAgMHhBRjE1LCAweEFGMTYsIDB4QUYxNywgMHhBRjE4LCAweEFGMTksIDB4QUYxQSwgMHhBRjFCLCAweEFGMUMsDQorICAgIDB4QUYxRCwgMHhBRjFFLCAweEFGMUYsIDB4QUYyMCwgMHhBRjIxLCAweEFGMjIsIDB4QUYyMywgMHhBRjI0LA0KKyAgICAweEFGMjUsIDB4QUYyNiwgMHhBRjI3LCAweEFGMjgsIDB4QUYyOSwgMHhBRjJBLCAweEFGMkIsIDB4QUYyRSwNCisgICAgMHhBRjJGLCAweEFGMzEsIDB4QUYzMywgMHhBRjM1LCAweEFGMzYsIDB4QUYzNywgMHhBRjM4LCAweEFGMzksDQorICAgIDB4QUYzQSwgMHhBRjNCLCAweEFGM0UsIDB4QUY0MCwgMHhBRjQ0LCAweEFGNDUsIDB4QUY0NiwgMHhBRjQ3LA0KKyAgICAweEFGNEEsIDB4QUY0QiwgMHhBRjRDLCAweEFGNEQsIDB4QUY0RSwgMHhBRjRGLCAweEFGNTEsIDB4QUY1MiwNCisgICAgMHhBRjUzLCAweEFGNTQsIDB4QUY1NSwgMHhBRjU2LCAweEFGNTcsIDB4QUY1OCwgMHhBRjU5LCAweEFGNUEsDQorICAgIDB4QUY1QiwgMHhBRjVFLCAweEFGNUYsIDB4QUY2MCwgMHhBRjYxLCAweEFGNjIsIDB4QUY2MywgMHhBRjY2LA0KKyAgICAweEFGNjcsIDB4QUY2OCwgMHhBRjY5LCAweEFGNkEsIDB4QUY2QiwgMHhBRjZDLCAweEFGNkQsIDB4QUY2RSwNCisgICAgMHhBRjZGLCAweEFGNzAsIDB4QUY3MSwgMHhBRjcyLCAweEFGNzMsIDB4QUY3NCwgMHhBRjc1LCAweEFGNzYsDQorICAgIDB4QUY3NywgMHhBRjc4LCAweEFGN0EsIDB4QUY3QiwgMHhBRjdDLCAweEFGN0QsIDB4QUY3RSwgMHhBRjdGLA0KKyAgICAweEFGODEsIDB4QUY4MiwgMHhBRjgzLCAweEFGODUsIDB4QUY4NiwgMHhBRjg3LCAweEFGODksIDB4QUY4QSwNCisgICAgMHhBRjhCLCAweEFGOEMsIDB4QUY4RCwgMHhBRjhFLCAweEFGOEYsIDB4QUY5MiwgMHhBRjkzLCAweEFGOTQsDQorICAgIDB4QUY5NiwgMHhBRjk3LCAweEFGOTgsIDB4QUY5OSwgMHhBRjlBLCAweEFGOUIsIDB4QUY5RCwgMHhBRjlFLA0KKyAgICAweEFGOUYsIDB4QUZBMCwgMHhBRkExLCAweEFGQTIsIDB4QUZBMywgMHhBRkE0LCAweEFGQTUsIDB4QUZBNiwNCisgICAgMHhBRkE3LCAweEFGQTgsIDB4QUZBOSwgMHhBRkFBLCAweEFGQUIsIDB4QUZBQywgMHhBRkFELCAweEFGQUUsDQorICAgIDB4QUZBRiwgMHhBRkIwLCAweEFGQjEsIDB4QUZCMiwgMHhBRkIzLCAweEFGQjQsIDB4QUZCNSwgMHhBRkI2LA0KKyAgICAweEFGQjcsIDB4QUZCQSwgMHhBRkJCLCAweEFGQkQsIDB4QUZCRSwgMHhBRkJGLCAweEFGQzEsIDB4QUZDMiwNCisgICAgMHhBRkMzLCAweEFGQzQsIDB4QUZDNSwgMHhBRkM2LCAweEFGQ0EsIDB4QUZDQywgMHhBRkNGLCAweEFGRDAsDQorICAgIDB4QUZEMSwgMHhBRkQyLCAweEFGRDMsIDB4QUZENSwgMHhBRkQ2LCAweEFGRDcsIDB4QUZEOCwgMHhBRkQ5LA0KKyAgICAweEFGREEsIDB4QUZEQiwgMHhBRkRELCAweEFGREUsIDB4QUZERiwgMHhBRkUwLCAweEFGRTEsIDB4QUZFMiwNCisgICAgMHhBRkUzLCAweEFGRTQsIDB4QUZFNSwgMHhBRkU2LCAweEFGRTcsIDB4QUZFQSwgMHhBRkVCLCAweEFGRUMsDQorICAgIDB4QUZFRCwgMHhBRkVFLCAweEFGRUYsIDB4QUZGMiwgMHhBRkYzLCAweEFGRjUsIDB4QUZGNiwgMHhBRkY3LA0KKyAgICAweEFGRjksIDB4QUZGQSwgMHhBRkZCLCAweEFGRkMsIDB4QUZGRCwgMHhBRkZFLCAweEFGRkYsIDB4QjAwMiwNCisgICAgMHhCMDAzLCAweEIwMDUsIDB4QjAwNiwgMHhCMDA3LCAweEIwMDgsIDB4QjAwOSwgMHhCMDBBLCAweEIwMEIsDQorICAgIDB4QjAwRCwgMHhCMDBFLCAweEIwMEYsIDB4QjAxMSwgMHhCMDEyLCAweEIwMTMsIDB4QjAxNSwgMHhCMDE2LA0KKyAgICAweEIwMTcsIDB4QjAxOCwgMHhCMDE5LCAweEIwMUEsIDB4QjAxQiwgMHhCMDFFLCAweEIwMUYsIDB4QjAyMCwNCisgICAgMHhCMDIxLCAweEIwMjIsIDB4QjAyMywgMHhCMDI0LCAweEIwMjUsIDB4QjAyNiwgMHhCMDI3LCAweEIwMjksDQorICAgIDB4QjAyQSwgMHhCMDJCLCAweEIwMkMsIDB4QjAyRCwgMHhCMDJFLCAweEIwMkYsIDB4QjAzMCwgMHhCMDMxLA0KKyAgICAweEIwMzIsIDB4QjAzMywgMHhCMDM0LCAweEIwMzUsIDB4QjAzNiwgMHhCMDM3LCAweEIwMzgsIDB4QjAzOSwNCisgICAgMHhCMDNBLCAweEIwM0IsIDB4QjAzQywgMHhCMDNELCAweEIwM0UsIDB4QjAzRiwgMHhCMDQwLCAweEIwNDEsDQorICAgIDB4QjA0MiwgMHhCMDQzLCAweEIwNDYsIDB4QjA0NywgMHhCMDQ5LCAweEIwNEIsIDB4QjA0RCwgMHhCMDRGLA0KKyAgICAweEIwNTAsIDB4QjA1MSwgMHhCMDUyLCAweEIwNTYsIDB4QjA1OCwgMHhCMDVBLCAweEIwNUIsIDB4QjA1QywNCisgICAgMHhCMDVFLCAweEIwNUYsIDB4QjA2MCwgMHhCMDYxLCAweEIwNjIsIDB4QjA2MywgMHhCMDY0LCAweEIwNjUsDQorICAgIDB4QjA2NiwgMHhCMDY3LCAweEIwNjgsIDB4QjA2OSwgMHhCMDZBLCAweEIwNkIsIDB4QjA2QywgMHhCMDZELA0KKyAgICAweEIwNkUsIDB4QjA2RiwgMHhCMDcwLCAweEIwNzEsIDB4QjA3MiwgMHhCMDczLCAweEIwNzQsIDB4QjA3NSwNCisgICAgMHhCMDc2LCAweEIwNzcsIDB4QjA3OCwgMHhCMDc5LCAweEIwN0EsIDB4QjA3QiwgMHhCMDdFLCAweEIwN0YsDQorICAgIDB4QjA4MSwgMHhCMDgyLCAweEIwODMsIDB4QjA4NSwgMHhCMDg2LCAweEIwODcsIDB4QjA4OCwgMHhCMDg5LA0KKyAgICAweEIwOEEsIDB4QjA4QiwgMHhCMDhFLCAweEIwOTAsIDB4QjA5MiwgMHhCMDkzLCAweEIwOTQsIDB4QjA5NSwNCisgICAgMHhCMDk2LCAweEIwOTcsIDB4QjA5QiwgMHhCMDlELCAweEIwOUUsIDB4QjBBMywgMHhCMEE0LCAweEIwQTUsDQorICAgIDB4QjBBNiwgMHhCMEE3LCAweEIwQUEsIDB4QjBCMCwgMHhCMEIyLCAweEIwQjYsIDB4QjBCNywgMHhCMEI5LA0KKyAgICAweEIwQkEsIDB4QjBCQiwgMHhCMEJELCAweEIwQkUsIDB4QjBCRiwgMHhCMEMwLCAweEIwQzEsIDB4QjBDMiwNCisgICAgMHhCMEMzLCAweEIwQzYsIDB4QjBDQSwgMHhCMENCLCAweEIwQ0MsIDB4QjBDRCwgMHhCMENFLCAweEIwQ0YsDQorICAgIDB4QjBEMiwgMHhCMEQzLCAweEIwRDUsIDB4QjBENiwgMHhCMEQ3LCAweEIwRDksIDB4QjBEQSwgMHhCMERCLA0KKyAgICAweEIwREMsIDB4QjBERCwgMHhCMERFLCAweEIwREYsIDB4QjBFMSwgMHhCMEUyLCAweEIwRTMsIDB4QjBFNCwNCisgICAgMHhCMEU2LCAweEIwRTcsIDB4QjBFOCwgMHhCMEU5LCAweEIwRUEsIDB4QjBFQiwgMHhCMEVDLCAweEIwRUQsDQorICAgIDB4QjBFRSwgMHhCMEVGLCAweEIwRjAsIDB4QjBGMSwgMHhCMEYyLCAweEIwRjMsIDB4QjBGNCwgMHhCMEY1LA0KKyAgICAweEIwRjYsIDB4QjBGNywgMHhCMEY4LCAweEIwRjksIDB4QjBGQSwgMHhCMEZCLCAweEIwRkMsIDB4QjBGRCwNCisgICAgMHhCMEZFLCAweEIwRkYsIDB4QjEwMCwgMHhCMTAxLCAweEIxMDIsIDB4QjEwMywgMHhCMTA0LCAweEIxMDUsDQorICAgIDB4QjEwNiwgMHhCMTA3LCAweEIxMEEsIDB4QjEwRCwgMHhCMTBFLCAweEIxMEYsIDB4QjExMSwgMHhCMTE0LA0KKyAgICAweEIxMTUsIDB4QjExNiwgMHhCMTE3LCAweEIxMUEsIDB4QjExRSwgMHhCMTFGLCAweEIxMjAsIDB4QjEyMSwNCisgICAgMHhCMTIyLCAweEIxMjYsIDB4QjEyNywgMHhCMTI5LCAweEIxMkEsIDB4QjEyQiwgMHhCMTJELCAweEIxMkUsDQorICAgIDB4QjEyRiwgMHhCMTMwLCAweEIxMzEsIDB4QjEzMiwgMHhCMTMzLCAweEIxMzYsIDB4QjEzQSwgMHhCMTNCLA0KKyAgICAweEIxM0MsIDB4QjEzRCwgMHhCMTNFLCAweEIxM0YsIDB4QjE0MiwgMHhCMTQzLCAweEIxNDUsIDB4QjE0NiwNCisgICAgMHhCMTQ3LCAweEIxNDksIDB4QjE0QSwgMHhCMTRCLCAweEIxNEMsIDB4QjE0RCwgMHhCMTRFLCAweEIxNEYsDQorICAgIDB4QjE1MiwgMHhCMTUzLCAweEIxNTYsIDB4QjE1NywgMHhCMTU5LCAweEIxNUEsIDB4QjE1QiwgMHhCMTVELA0KKyAgICAweEIxNUUsIDB4QjE1RiwgMHhCMTYxLCAweEIxNjIsIDB4QjE2MywgMHhCMTY0LCAweEIxNjUsIDB4QjE2NiwNCisgICAgMHhCMTY3LCAweEIxNjgsIDB4QjE2OSwgMHhCMTZBLCAweEIxNkIsIDB4QjE2QywgMHhCMTZELCAweEIxNkUsDQorICAgIDB4QjE2RiwgMHhCMTcwLCAweEIxNzEsIDB4QjE3MiwgMHhCMTczLCAweEIxNzQsIDB4QjE3NSwgMHhCMTc2LA0KKyAgICAweEIxNzcsIDB4QjE3QSwgMHhCMTdCLCAweEIxN0QsIDB4QjE3RSwgMHhCMTdGLCAweEIxODEsIDB4QjE4MywNCisgICAgMHhCMTg0LCAweEIxODUsIDB4QjE4NiwgMHhCMTg3LCAweEIxOEEsIDB4QjE4QywgMHhCMThFLCAweEIxOEYsDQorICAgIDB4QjE5MCwgMHhCMTkxLCAweEIxOTUsIDB4QjE5NiwgMHhCMTk3LCAweEIxOTksIDB4QjE5QSwgMHhCMTlCLA0KKyAgICAweEIxOUQsIDB4QjE5RSwgMHhCMTlGLCAweEIxQTAsIDB4QjFBMSwgMHhCMUEyLCAweEIxQTMsIDB4QjFBNCwNCisgICAgMHhCMUE1LCAweEIxQTYsIDB4QjFBNywgMHhCMUE5LCAweEIxQUEsIDB4QjFBQiwgMHhCMUFDLCAweEIxQUQsDQorICAgIDB4QjFBRSwgMHhCMUFGLCAweEIxQjAsIDB4QjFCMSwgMHhCMUIyLCAweEIxQjMsIDB4QjFCNCwgMHhCMUI1LA0KKyAgICAweEIxQjYsIDB4QjFCNywgMHhCMUI4LCAweEIxQjksIDB4QjFCQSwgMHhCMUJCLCAweEIxQkMsIDB4QjFCRCwNCisgICAgMHhCMUJFLCAweEIxQkYsIDB4QjFDMCwgMHhCMUMxLCAweEIxQzIsIDB4QjFDMywgMHhCMUM0LCAweEIxQzUsDQorICAgIDB4QjFDNiwgMHhCMUM3LCAweEIxQzgsIDB4QjFDOSwgMHhCMUNBLCAweEIxQ0IsIDB4QjFDRCwgMHhCMUNFLA0KKyAgICAweEIxQ0YsIDB4QjFEMSwgMHhCMUQyLCAweEIxRDMsIDB4QjFENSwgMHhCMUQ2LCAweEIxRDcsIDB4QjFEOCwNCisgICAgMHhCMUQ5LCAweEIxREEsIDB4QjFEQiwgMHhCMURFLCAweEIxRTAsIDB4QjFFMSwgMHhCMUUyLCAweEIxRTMsDQorICAgIDB4QjFFNCwgMHhCMUU1LCAweEIxRTYsIDB4QjFFNywgMHhCMUVBLCAweEIxRUIsIDB4QjFFRCwgMHhCMUVFLA0KKyAgICAweEIxRUYsIDB4QjFGMSwgMHhCMUYyLCAweEIxRjMsIDB4QjFGNCwgMHhCMUY1LCAweEIxRjYsIDB4QjFGNywNCisgICAgMHhCMUY4LCAweEIxRkEsIDB4QjFGQywgMHhCMUZFLCAweEIxRkYsIDB4QjIwMCwgMHhCMjAxLCAweEIyMDIsDQorICAgIDB4QjIwMywgMHhCMjA2LCAweEIyMDcsIDB4QjIwOSwgMHhCMjBBLCAweEIyMEQsIDB4QjIwRSwgMHhCMjBGLA0KKyAgICAweEIyMTAsIDB4QjIxMSwgMHhCMjEyLCAweEIyMTMsIDB4QjIxNiwgMHhCMjE4LCAweEIyMUEsIDB4QjIxQiwNCisgICAgMHhCMjFDLCAweEIyMUQsIDB4QjIxRSwgMHhCMjFGLCAweEIyMjEsIDB4QjIyMiwgMHhCMjIzLCAweEIyMjQsDQorICAgIDB4QjIyNSwgMHhCMjI2LCAweEIyMjcsIDB4QjIyOCwgMHhCMjI5LCAweEIyMkEsIDB4QjIyQiwgMHhCMjJDLA0KKyAgICAweEIyMkQsIDB4QjIyRSwgMHhCMjJGLCAweEIyMzAsIDB4QjIzMSwgMHhCMjMyLCAweEIyMzMsIDB4QjIzNSwNCisgICAgMHhCMjM2LCAweEIyMzcsIDB4QjIzOCwgMHhCMjM5LCAweEIyM0EsIDB4QjIzQiwgMHhCMjNELCAweEIyM0UsDQorICAgIDB4QjIzRiwgMHhCMjQwLCAweEIyNDEsIDB4QjI0MiwgMHhCMjQzLCAweEIyNDQsIDB4QjI0NSwgMHhCMjQ2LA0KKyAgICAweEIyNDcsIDB4QjI0OCwgMHhCMjQ5LCAweEIyNEEsIDB4QjI0QiwgMHhCMjRDLCAweEIyNEQsIDB4QjI0RSwNCisgICAgMHhCMjRGLCAweEIyNTAsIDB4QjI1MSwgMHhCMjUyLCAweEIyNTMsIDB4QjI1NCwgMHhCMjU1LCAweEIyNTYsDQorICAgIDB4QjI1NywgMHhCMjU5LCAweEIyNUEsIDB4QjI1QiwgMHhCMjVELCAweEIyNUUsIDB4QjI1RiwgMHhCMjYxLA0KKyAgICAweEIyNjIsIDB4QjI2MywgMHhCMjY0LCAweEIyNjUsIDB4QjI2NiwgMHhCMjY3LCAweEIyNkEsIDB4QjI2QiwNCisgICAgMHhCMjZDLCAweEIyNkQsIDB4QjI2RSwgMHhCMjZGLCAweEIyNzAsIDB4QjI3MSwgMHhCMjcyLCAweEIyNzMsDQorICAgIDB4QjI3NiwgMHhCMjc3LCAweEIyNzgsIDB4QjI3OSwgMHhCMjdBLCAweEIyN0IsIDB4QjI3RCwgMHhCMjdFLA0KKyAgICAweEIyN0YsIDB4QjI4MCwgMHhCMjgxLCAweEIyODIsIDB4QjI4MywgMHhCMjg2LCAweEIyODcsIDB4QjI4OCwNCisgICAgMHhCMjhBLCAweEIyOEIsIDB4QjI4QywgMHhCMjhELCAweEIyOEUsIDB4QjI4RiwgMHhCMjkyLCAweEIyOTMsDQorICAgIDB4QjI5NSwgMHhCMjk2LCAweEIyOTcsIDB4QjI5QiwgMHhCMjlDLCAweEIyOUQsIDB4QjI5RSwgMHhCMjlGLA0KKyAgICAweEIyQTIsIDB4QjJBNCwgMHhCMkE3LCAweEIyQTgsIDB4QjJBOSwgMHhCMkFCLCAweEIyQUQsIDB4QjJBRSwNCisgICAgMHhCMkFGLCAweEIyQjEsIDB4QjJCMiwgMHhCMkIzLCAweEIyQjUsIDB4QjJCNiwgMHhCMkI3LCAweEIyQjgsDQorICAgIDB4QjJCOSwgMHhCMkJBLCAweEIyQkIsIDB4QjJCQywgMHhCMkJELCAweEIyQkUsIDB4QjJCRiwgMHhCMkMwLA0KKyAgICAweEIyQzEsIDB4QjJDMiwgMHhCMkMzLCAweEIyQzQsIDB4QjJDNSwgMHhCMkM2LCAweEIyQzcsIDB4QjJDQSwNCisgICAgMHhCMkNCLCAweEIyQ0QsIDB4QjJDRSwgMHhCMkNGLCAweEIyRDEsIDB4QjJEMywgMHhCMkQ0LCAweEIyRDUsDQorICAgIDB4QjJENiwgMHhCMkQ3LCAweEIyREEsIDB4QjJEQywgMHhCMkRFLCAweEIyREYsIDB4QjJFMCwgMHhCMkUxLA0KKyAgICAweEIyRTMsIDB4QjJFNywgMHhCMkU5LCAweEIyRUEsIDB4QjJGMCwgMHhCMkYxLCAweEIyRjIsIDB4QjJGNiwNCisgICAgMHhCMkZDLCAweEIyRkQsIDB4QjJGRSwgMHhCMzAyLCAweEIzMDMsIDB4QjMwNSwgMHhCMzA2LCAweEIzMDcsDQorICAgIDB4QjMwOSwgMHhCMzBBLCAweEIzMEIsIDB4QjMwQywgMHhCMzBELCAweEIzMEUsIDB4QjMwRiwgMHhCMzEyLA0KKyAgICAweEIzMTYsIDB4QjMxNywgMHhCMzE4LCAweEIzMTksIDB4QjMxQSwgMHhCMzFCLCAweEIzMUQsIDB4QjMxRSwNCisgICAgMHhCMzFGLCAweEIzMjAsIDB4QjMyMSwgMHhCMzIyLCAweEIzMjMsIDB4QjMyNCwgMHhCMzI1LCAweEIzMjYsDQorICAgIDB4QjMyNywgMHhCMzI4LCAweEIzMjksIDB4QjMyQSwgMHhCMzJCLCAweEIzMkMsIDB4QjMyRCwgMHhCMzJFLA0KKyAgICAweEIzMkYsIDB4QjMzMCwgMHhCMzMxLCAweEIzMzIsIDB4QjMzMywgMHhCMzM0LCAweEIzMzUsIDB4QjMzNiwNCisgICAgMHhCMzM3LCAweEIzMzgsIDB4QjMzOSwgMHhCMzNBLCAweEIzM0IsIDB4QjMzQywgMHhCMzNELCAweEIzM0UsDQorICAgIDB4QjMzRiwgMHhCMzQwLCAweEIzNDEsIDB4QjM0MiwgMHhCMzQzLCAweEIzNDQsIDB4QjM0NSwgMHhCMzQ2LA0KKyAgICAweEIzNDcsIDB4QjM0OCwgMHhCMzQ5LCAweEIzNEEsIDB4QjM0QiwgMHhCMzRDLCAweEIzNEQsIDB4QjM0RSwNCisgICAgMHhCMzRGLCAweEIzNTAsIDB4QjM1MSwgMHhCMzUyLCAweEIzNTMsIDB4QjM1NywgMHhCMzU5LCAweEIzNUEsDQorICAgIDB4QjM1RCwgMHhCMzYwLCAweEIzNjEsIDB4QjM2MiwgMHhCMzYzLCAweEIzNjYsIDB4QjM2OCwgMHhCMzZBLA0KKyAgICAweEIzNkMsIDB4QjM2RCwgMHhCMzZGLCAweEIzNzIsIDB4QjM3MywgMHhCMzc1LCAweEIzNzYsIDB4QjM3NywNCisgICAgMHhCMzc5LCAweEIzN0EsIDB4QjM3QiwgMHhCMzdDLCAweEIzN0QsIDB4QjM3RSwgMHhCMzdGLCAweEIzODIsDQorICAgIDB4QjM4NiwgMHhCMzg3LCAweEIzODgsIDB4QjM4OSwgMHhCMzhBLCAweEIzOEIsIDB4QjM4RCwgMHhCMzhFLA0KKyAgICAweEIzOEYsIDB4QjM5MSwgMHhCMzkyLCAweEIzOTMsIDB4QjM5NSwgMHhCMzk2LCAweEIzOTcsIDB4QjM5OCwNCisgICAgMHhCMzk5LCAweEIzOUEsIDB4QjM5QiwgMHhCMzlDLCAweEIzOUQsIDB4QjM5RSwgMHhCMzlGLCAweEIzQTIsDQorICAgIDB4QjNBMywgMHhCM0E0LCAweEIzQTUsIDB4QjNBNiwgMHhCM0E3LCAweEIzQTksIDB4QjNBQSwgMHhCM0FCLA0KKyAgICAweEIzQUQsIDB4QjNBRSwgMHhCM0FGLCAweEIzQjAsIDB4QjNCMSwgMHhCM0IyLCAweEIzQjMsIDB4QjNCNCwNCisgICAgMHhCM0I1LCAweEIzQjYsIDB4QjNCNywgMHhCM0I4LCAweEIzQjksIDB4QjNCQSwgMHhCM0JCLCAweEIzQkMsDQorICAgIDB4QjNCRCwgMHhCM0JFLCAweEIzQkYsIDB4QjNDMCwgMHhCM0MxLCAweEIzQzIsIDB4QjNDMywgMHhCM0M2LA0KKyAgICAweEIzQzcsIDB4QjNDOSwgMHhCM0NBLCAweEIzQ0QsIDB4QjNDRiwgMHhCM0QxLCAweEIzRDIsIDB4QjNEMywNCisgICAgMHhCM0Q2LCAweEIzRDgsIDB4QjNEQSwgMHhCM0RDLCAweEIzREUsIDB4QjNERiwgMHhCM0UxLCAweEIzRTIsDQorICAgIDB4QjNFMywgMHhCM0U1LCAweEIzRTYsIDB4QjNFNywgMHhCM0U5LCAweEIzRUEsIDB4QjNFQiwgMHhCM0VDLA0KKyAgICAweEIzRUQsIDB4QjNFRSwgMHhCM0VGLCAweEIzRjAsIDB4QjNGMSwgMHhCM0YyLCAweEIzRjMsIDB4QjNGNCwNCisgICAgMHhCM0Y1LCAweEIzRjYsIDB4QjNGNywgMHhCM0Y4LCAweEIzRjksIDB4QjNGQSwgMHhCM0ZCLCAweEIzRkQsDQorICAgIDB4QjNGRSwgMHhCM0ZGLCAweEI0MDAsIDB4QjQwMSwgMHhCNDAyLCAweEI0MDMsIDB4QjQwNCwgMHhCNDA1LA0KKyAgICAweEI0MDYsIDB4QjQwNywgMHhCNDA4LCAweEI0MDksIDB4QjQwQSwgMHhCNDBCLCAweEI0MEMsIDB4QjQwRCwNCisgICAgMHhCNDBFLCAweEI0MEYsIDB4QjQxMSwgMHhCNDEyLCAweEI0MTMsIDB4QjQxNCwgMHhCNDE1LCAweEI0MTYsDQorICAgIDB4QjQxNywgMHhCNDE5LCAweEI0MUEsIDB4QjQxQiwgMHhCNDFELCAweEI0MUUsIDB4QjQxRiwgMHhCNDIxLA0KKyAgICAweEI0MjIsIDB4QjQyMywgMHhCNDI0LCAweEI0MjUsIDB4QjQyNiwgMHhCNDI3LCAweEI0MkEsIDB4QjQyQywNCisgICAgMHhCNDJELCAweEI0MkUsIDB4QjQyRiwgMHhCNDMwLCAweEI0MzEsIDB4QjQzMiwgMHhCNDMzLCAweEI0MzUsDQorICAgIDB4QjQzNiwgMHhCNDM3LCAweEI0MzgsIDB4QjQzOSwgMHhCNDNBLCAweEI0M0IsIDB4QjQzQywgMHhCNDNELA0KKyAgICAweEI0M0UsIDB4QjQzRiwgMHhCNDQwLCAweEI0NDEsIDB4QjQ0MiwgMHhCNDQzLCAweEI0NDQsIDB4QjQ0NSwNCisgICAgMHhCNDQ2LCAweEI0NDcsIDB4QjQ0OCwgMHhCNDQ5LCAweEI0NEEsIDB4QjQ0QiwgMHhCNDRDLCAweEI0NEQsDQorICAgIDB4QjQ0RSwgMHhCNDRGLCAweEI0NTIsIDB4QjQ1MywgMHhCNDU1LCAweEI0NTYsIDB4QjQ1NywgMHhCNDU5LA0KKyAgICAweEI0NUEsIDB4QjQ1QiwgMHhCNDVDLCAweEI0NUQsIDB4QjQ1RSwgMHhCNDVGLCAweEI0NjIsIDB4QjQ2NCwNCisgICAgMHhCNDY2LCAweEI0NjcsIDB4QjQ2OCwgMHhCNDY5LCAweEI0NkEsIDB4QjQ2QiwgMHhCNDZELCAweEI0NkUsDQorICAgIDB4QjQ2RiwgMHhCNDcwLCAweEI0NzEsIDB4QjQ3MiwgMHhCNDczLCAweEI0NzQsIDB4QjQ3NSwgMHhCNDc2LA0KKyAgICAweEI0NzcsIDB4QjQ3OCwgMHhCNDc5LCAweEI0N0EsIDB4QjQ3QiwgMHhCNDdDLCAweEI0N0QsIDB4QjQ3RSwNCisgICAgMHhCNDdGLCAweEI0ODEsIDB4QjQ4MiwgMHhCNDgzLCAweEI0ODQsIDB4QjQ4NSwgMHhCNDg2LCAweEI0ODcsDQorICAgIDB4QjQ4OSwgMHhCNDhBLCAweEI0OEIsIDB4QjQ4QywgMHhCNDhELCAweEI0OEUsIDB4QjQ4RiwgMHhCNDkwLA0KKyAgICAweEI0OTEsIDB4QjQ5MiwgMHhCNDkzLCAweEI0OTQsIDB4QjQ5NSwgMHhCNDk2LCAweEI0OTcsIDB4QjQ5OCwNCisgICAgMHhCNDk5LCAweEI0OUEsIDB4QjQ5QiwgMHhCNDlDLCAweEI0OUUsIDB4QjQ5RiwgMHhCNEEwLCAweEI0QTEsDQorICAgIDB4QjRBMiwgMHhCNEEzLCAweEI0QTUsIDB4QjRBNiwgMHhCNEE3LCAweEI0QTksIDB4QjRBQSwgMHhCNEFCLA0KKyAgICAweEI0QUQsIDB4QjRBRSwgMHhCNEFGLCAweEI0QjAsIDB4QjRCMSwgMHhCNEIyLCAweEI0QjMsIDB4QjRCNCwNCisgICAgMHhCNEI2LCAweEI0QjgsIDB4QjRCQSwgMHhCNEJCLCAweEI0QkMsIDB4QjRCRCwgMHhCNEJFLCAweEI0QkYsDQorICAgIDB4QjRDMSwgMHhCNEMyLCAweEI0QzMsIDB4QjRDNSwgMHhCNEM2LCAweEI0QzcsIDB4QjRDOSwgMHhCNENBLA0KKyAgICAweEI0Q0IsIDB4QjRDQywgMHhCNENELCAweEI0Q0UsIDB4QjRDRiwgMHhCNEQxLCAweEI0RDIsIDB4QjREMywNCisgICAgMHhCNEQ0LCAweEI0RDYsIDB4QjRENywgMHhCNEQ4LCAweEI0RDksIDB4QjREQSwgMHhCNERCLCAweEI0REUsDQorICAgIDB4QjRERiwgMHhCNEUxLCAweEI0RTIsIDB4QjRFNSwgMHhCNEU3LCAweEI0RTgsIDB4QjRFOSwgMHhCNEVBLA0KKyAgICAweEI0RUIsIDB4QjRFRSwgMHhCNEYwLCAweEI0RjIsIDB4QjRGMywgMHhCNEY0LCAweEI0RjUsIDB4QjRGNiwNCisgICAgMHhCNEY3LCAweEI0RjksIDB4QjRGQSwgMHhCNEZCLCAweEI0RkMsIDB4QjRGRCwgMHhCNEZFLCAweEI0RkYsDQorICAgIDB4QjUwMCwgMHhCNTAxLCAweEI1MDIsIDB4QjUwMywgMHhCNTA0LCAweEI1MDUsIDB4QjUwNiwgMHhCNTA3LA0KKyAgICAweEI1MDgsIDB4QjUwOSwgMHhCNTBBLCAweEI1MEIsIDB4QjUwQywgMHhCNTBELCAweEI1MEUsIDB4QjUwRiwNCisgICAgMHhCNTEwLCAweEI1MTEsIDB4QjUxMiwgMHhCNTEzLCAweEI1MTYsIDB4QjUxNywgMHhCNTE5LCAweEI1MUEsDQorICAgIDB4QjUxRCwgMHhCNTFFLCAweEI1MUYsIDB4QjUyMCwgMHhCNTIxLCAweEI1MjIsIDB4QjUyMywgMHhCNTI2LA0KKyAgICAweEI1MkIsIDB4QjUyQywgMHhCNTJELCAweEI1MkUsIDB4QjUyRiwgMHhCNTMyLCAweEI1MzMsIDB4QjUzNSwNCisgICAgMHhCNTM2LCAweEI1MzcsIDB4QjUzOSwgMHhCNTNBLCAweEI1M0IsIDB4QjUzQywgMHhCNTNELCAweEI1M0UsDQorICAgIDB4QjUzRiwgMHhCNTQyLCAweEI1NDYsIDB4QjU0NywgMHhCNTQ4LCAweEI1NDksIDB4QjU0QSwgMHhCNTRFLA0KKyAgICAweEI1NEYsIDB4QjU1MSwgMHhCNTUyLCAweEI1NTMsIDB4QjU1NSwgMHhCNTU2LCAweEI1NTcsIDB4QjU1OCwNCisgICAgMHhCNTU5LCAweEI1NUEsIDB4QjU1QiwgMHhCNTVFLCAweEI1NjIsIDB4QjU2MywgMHhCNTY0LCAweEI1NjUsDQorICAgIDB4QjU2NiwgMHhCNTY3LCAweEI1NjgsIDB4QjU2OSwgMHhCNTZBLCAweEI1NkIsIDB4QjU2QywgMHhCNTZELA0KKyAgICAweEI1NkUsIDB4QjU2RiwgMHhCNTcwLCAweEI1NzEsIDB4QjU3MiwgMHhCNTczLCAweEI1NzQsIDB4QjU3NSwNCisgICAgMHhCNTc2LCAweEI1NzcsIDB4QjU3OCwgMHhCNTc5LCAweEI1N0EsIDB4QjU3QiwgMHhCNTdDLCAweEI1N0QsDQorICAgIDB4QjU3RSwgMHhCNTdGLCAweEI1ODAsIDB4QjU4MSwgMHhCNTgyLCAweEI1ODMsIDB4QjU4NCwgMHhCNTg1LA0KKyAgICAweEI1ODYsIDB4QjU4NywgMHhCNTg4LCAweEI1ODksIDB4QjU4QSwgMHhCNThCLCAweEI1OEMsIDB4QjU4RCwNCisgICAgMHhCNThFLCAweEI1OEYsIDB4QjU5MCwgMHhCNTkxLCAweEI1OTIsIDB4QjU5MywgMHhCNTk0LCAweEI1OTUsDQorICAgIDB4QjU5NiwgMHhCNTk3LCAweEI1OTgsIDB4QjU5OSwgMHhCNTlBLCAweEI1OUIsIDB4QjU5QywgMHhCNTlELA0KKyAgICAweEI1OUUsIDB4QjU5RiwgMHhCNUEyLCAweEI1QTMsIDB4QjVBNSwgMHhCNUE2LCAweEI1QTcsIDB4QjVBOSwNCisgICAgMHhCNUFDLCAweEI1QUQsIDB4QjVBRSwgMHhCNUFGLCAweEI1QjIsIDB4QjVCNiwgMHhCNUI3LCAweEI1QjgsDQorICAgIDB4QjVCOSwgMHhCNUJBLCAweEI1QkUsIDB4QjVCRiwgMHhCNUMxLCAweEI1QzIsIDB4QjVDMywgMHhCNUM1LA0KKyAgICAweEI1QzYsIDB4QjVDNywgMHhCNUM4LCAweEI1QzksIDB4QjVDQSwgMHhCNUNCLCAweEI1Q0UsIDB4QjVEMiwNCisgICAgMHhCNUQzLCAweEI1RDQsIDB4QjVENSwgMHhCNUQ2LCAweEI1RDcsIDB4QjVEOSwgMHhCNURBLCAweEI1REIsDQorICAgIDB4QjVEQywgMHhCNURELCAweEI1REUsIDB4QjVERiwgMHhCNUUwLCAweEI1RTEsIDB4QjVFMiwgMHhCNUUzLA0KKyAgICAweEI1RTQsIDB4QjVFNSwgMHhCNUU2LCAweEI1RTcsIDB4QjVFOCwgMHhCNUU5LCAweEI1RUEsIDB4QjVFQiwNCisgICAgMHhCNUVELCAweEI1RUUsIDB4QjVFRiwgMHhCNUYwLCAweEI1RjEsIDB4QjVGMiwgMHhCNUYzLCAweEI1RjQsDQorICAgIDB4QjVGNSwgMHhCNUY2LCAweEI1RjcsIDB4QjVGOCwgMHhCNUY5LCAweEI1RkEsIDB4QjVGQiwgMHhCNUZDLA0KKyAgICAweEI1RkQsIDB4QjVGRSwgMHhCNUZGLCAweEI2MDAsIDB4QjYwMSwgMHhCNjAyLCAweEI2MDMsIDB4QjYwNCwNCisgICAgMHhCNjA1LCAweEI2MDYsIDB4QjYwNywgMHhCNjA4LCAweEI2MDksIDB4QjYwQSwgMHhCNjBCLCAweEI2MEMsDQorICAgIDB4QjYwRCwgMHhCNjBFLCAweEI2MEYsIDB4QjYxMiwgMHhCNjEzLCAweEI2MTUsIDB4QjYxNiwgMHhCNjE3LA0KKyAgICAweEI2MTksIDB4QjYxQSwgMHhCNjFCLCAweEI2MUMsIDB4QjYxRCwgMHhCNjFFLCAweEI2MUYsIDB4QjYyMCwNCisgICAgMHhCNjIxLCAweEI2MjIsIDB4QjYyMywgMHhCNjI0LCAweEI2MjYsIDB4QjYyNywgMHhCNjI4LCAweEI2MjksDQorICAgIDB4QjYyQSwgMHhCNjJCLCAweEI2MkQsIDB4QjYyRSwgMHhCNjJGLCAweEI2MzAsIDB4QjYzMSwgMHhCNjMyLA0KKyAgICAweEI2MzMsIDB4QjYzNSwgMHhCNjM2LCAweEI2MzcsIDB4QjYzOCwgMHhCNjM5LCAweEI2M0EsIDB4QjYzQiwNCisgICAgMHhCNjNDLCAweEI2M0QsIDB4QjYzRSwgMHhCNjNGLCAweEI2NDAsIDB4QjY0MSwgMHhCNjQyLCAweEI2NDMsDQorICAgIDB4QjY0NCwgMHhCNjQ1LCAweEI2NDYsIDB4QjY0NywgMHhCNjQ5LCAweEI2NEEsIDB4QjY0QiwgMHhCNjRDLA0KKyAgICAweEI2NEQsIDB4QjY0RSwgMHhCNjRGLCAweEI2NTAsIDB4QjY1MSwgMHhCNjUyLCAweEI2NTMsIDB4QjY1NCwNCisgICAgMHhCNjU1LCAweEI2NTYsIDB4QjY1NywgMHhCNjU4LCAweEI2NTksIDB4QjY1QSwgMHhCNjVCLCAweEI2NUMsDQorICAgIDB4QjY1RCwgMHhCNjVFLCAweEI2NUYsIDB4QjY2MCwgMHhCNjYxLCAweEI2NjIsIDB4QjY2MywgMHhCNjY1LA0KKyAgICAweEI2NjYsIDB4QjY2NywgMHhCNjY5LCAweEI2NkEsIDB4QjY2QiwgMHhCNjZDLCAweEI2NkQsIDB4QjY2RSwNCisgICAgMHhCNjZGLCAweEI2NzAsIDB4QjY3MSwgMHhCNjcyLCAweEI2NzMsIDB4QjY3NCwgMHhCNjc1LCAweEI2NzYsDQorICAgIDB4QjY3NywgMHhCNjc4LCAweEI2NzksIDB4QjY3QSwgMHhCNjdCLCAweEI2N0MsIDB4QjY3RCwgMHhCNjdFLA0KKyAgICAweEI2N0YsIDB4QjY4MCwgMHhCNjgxLCAweEI2ODIsIDB4QjY4MywgMHhCNjg0LCAweEI2ODUsIDB4QjY4NiwNCisgICAgMHhCNjg3LCAweEI2ODgsIDB4QjY4OSwgMHhCNjhBLCAweEI2OEIsIDB4QjY4QywgMHhCNjhELCAweEI2OEUsDQorICAgIDB4QjY4RiwgMHhCNjkwLCAweEI2OTEsIDB4QjY5MiwgMHhCNjkzLCAweEI2OTQsIDB4QjY5NSwgMHhCNjk2LA0KKyAgICAweEI2OTcsIDB4QjY5OCwgMHhCNjk5LCAweEI2OUEsIDB4QjY5QiwgMHhCNjlFLCAweEI2OUYsIDB4QjZBMSwNCisgICAgMHhCNkEyLCAweEI2QTMsIDB4QjZBNSwgMHhCNkE2LCAweEI2QTcsIDB4QjZBOCwgMHhCNkE5LCAweEI2QUEsDQorICAgIDB4QjZBRCwgMHhCNkFFLCAweEI2QUYsIDB4QjZCMCwgMHhCNkIyLCAweEI2QjMsIDB4QjZCNCwgMHhCNkI1LA0KKyAgICAweEI2QjYsIDB4QjZCNywgMHhCNkI4LCAweEI2QjksIDB4QjZCQSwgMHhCNkJCLCAweEI2QkMsIDB4QjZCRCwNCisgICAgMHhCNkJFLCAweEI2QkYsIDB4QjZDMCwgMHhCNkMxLCAweEI2QzIsIDB4QjZDMywgMHhCNkM0LCAweEI2QzUsDQorICAgIDB4QjZDNiwgMHhCNkM3LCAweEI2QzgsIDB4QjZDOSwgMHhCNkNBLCAweEI2Q0IsIDB4QjZDQywgMHhCNkNELA0KKyAgICAweEI2Q0UsIDB4QjZDRiwgMHhCNkQwLCAweEI2RDEsIDB4QjZEMiwgMHhCNkQzLCAweEI2RDUsIDB4QjZENiwNCisgICAgMHhCNkQ3LCAweEI2RDgsIDB4QjZEOSwgMHhCNkRBLCAweEI2REIsIDB4QjZEQywgMHhCNkRELCAweEI2REUsDQorICAgIDB4QjZERiwgMHhCNkUwLCAweEI2RTEsIDB4QjZFMiwgMHhCNkUzLCAweEI2RTQsIDB4QjZFNSwgMHhCNkU2LA0KKyAgICAweEI2RTcsIDB4QjZFOCwgMHhCNkU5LCAweEI2RUEsIDB4QjZFQiwgMHhCNkVDLCAweEI2RUQsIDB4QjZFRSwNCisgICAgMHhCNkVGLCAweEI2RjEsIDB4QjZGMiwgMHhCNkYzLCAweEI2RjUsIDB4QjZGNiwgMHhCNkY3LCAweEI2RjksDQorICAgIDB4QjZGQSwgMHhCNkZCLCAweEI2RkMsIDB4QjZGRCwgMHhCNkZFLCAweEI2RkYsIDB4QjcwMiwgMHhCNzAzLA0KKyAgICAweEI3MDQsIDB4QjcwNiwgMHhCNzA3LCAweEI3MDgsIDB4QjcwOSwgMHhCNzBBLCAweEI3MEIsIDB4QjcwQywNCisgICAgMHhCNzBELCAweEI3MEUsIDB4QjcwRiwgMHhCNzEwLCAweEI3MTEsIDB4QjcxMiwgMHhCNzEzLCAweEI3MTQsDQorICAgIDB4QjcxNSwgMHhCNzE2LCAweEI3MTcsIDB4QjcxOCwgMHhCNzE5LCAweEI3MUEsIDB4QjcxQiwgMHhCNzFDLA0KKyAgICAweEI3MUQsIDB4QjcxRSwgMHhCNzFGLCAweEI3MjAsIDB4QjcyMSwgMHhCNzIyLCAweEI3MjMsIDB4QjcyNCwNCisgICAgMHhCNzI1LCAweEI3MjYsIDB4QjcyNywgMHhCNzJBLCAweEI3MkIsIDB4QjcyRCwgMHhCNzJFLCAweEI3MzEsDQorICAgIDB4QjczMiwgMHhCNzMzLCAweEI3MzQsIDB4QjczNSwgMHhCNzM2LCAweEI3MzcsIDB4QjczQSwgMHhCNzNDLA0KKyAgICAweEI3M0QsIDB4QjczRSwgMHhCNzNGLCAweEI3NDAsIDB4Qjc0MSwgMHhCNzQyLCAweEI3NDMsIDB4Qjc0NSwNCisgICAgMHhCNzQ2LCAweEI3NDcsIDB4Qjc0OSwgMHhCNzRBLCAweEI3NEIsIDB4Qjc0RCwgMHhCNzRFLCAweEI3NEYsDQorICAgIDB4Qjc1MCwgMHhCNzUxLCAweEI3NTIsIDB4Qjc1MywgMHhCNzU2LCAweEI3NTcsIDB4Qjc1OCwgMHhCNzU5LA0KKyAgICAweEI3NUEsIDB4Qjc1QiwgMHhCNzVDLCAweEI3NUQsIDB4Qjc1RSwgMHhCNzVGLCAweEI3NjEsIDB4Qjc2MiwNCisgICAgMHhCNzYzLCAweEI3NjUsIDB4Qjc2NiwgMHhCNzY3LCAweEI3NjksIDB4Qjc2QSwgMHhCNzZCLCAweEI3NkMsDQorICAgIDB4Qjc2RCwgMHhCNzZFLCAweEI3NkYsIDB4Qjc3MiwgMHhCNzc0LCAweEI3NzYsIDB4Qjc3NywgMHhCNzc4LA0KKyAgICAweEI3NzksIDB4Qjc3QSwgMHhCNzdCLCAweEI3N0UsIDB4Qjc3RiwgMHhCNzgxLCAweEI3ODIsIDB4Qjc4MywNCisgICAgMHhCNzg1LCAweEI3ODYsIDB4Qjc4NywgMHhCNzg4LCAweEI3ODksIDB4Qjc4QSwgMHhCNzhCLCAweEI3OEUsDQorICAgIDB4Qjc5MywgMHhCNzk0LCAweEI3OTUsIDB4Qjc5QSwgMHhCNzlCLCAweEI3OUQsIDB4Qjc5RSwgMHhCNzlGLA0KKyAgICAweEI3QTEsIDB4QjdBMiwgMHhCN0EzLCAweEI3QTQsIDB4QjdBNSwgMHhCN0E2LCAweEI3QTcsIDB4QjdBQSwNCisgICAgMHhCN0FFLCAweEI3QUYsIDB4QjdCMCwgMHhCN0IxLCAweEI3QjIsIDB4QjdCMywgMHhCN0I2LCAweEI3QjcsDQorICAgIDB4QjdCOSwgMHhCN0JBLCAweEI3QkIsIDB4QjdCQywgMHhCN0JELCAweEI3QkUsIDB4QjdCRiwgMHhCN0MwLA0KKyAgICAweEI3QzEsIDB4QjdDMiwgMHhCN0MzLCAweEI3QzQsIDB4QjdDNSwgMHhCN0M2LCAweEI3QzgsIDB4QjdDQSwNCisgICAgMHhCN0NCLCAweEI3Q0MsIDB4QjdDRCwgMHhCN0NFLCAweEI3Q0YsIDB4QjdEMCwgMHhCN0QxLCAweEI3RDIsDQorICAgIDB4QjdEMywgMHhCN0Q0LCAweEI3RDUsIDB4QjdENiwgMHhCN0Q3LCAweEI3RDgsIDB4QjdEOSwgMHhCN0RBLA0KKyAgICAweEI3REIsIDB4QjdEQywgMHhCN0RELCAweEI3REUsIDB4QjdERiwgMHhCN0UwLCAweEI3RTEsIDB4QjdFMiwNCisgICAgMHhCN0UzLCAweEI3RTQsIDB4QjdFNSwgMHhCN0U2LCAweEI3RTcsIDB4QjdFOCwgMHhCN0U5LCAweEI3RUEsDQorICAgIDB4QjdFQiwgMHhCN0VFLCAweEI3RUYsIDB4QjdGMSwgMHhCN0YyLCAweEI3RjMsIDB4QjdGNSwgMHhCN0Y2LA0KKyAgICAweEI3RjcsIDB4QjdGOCwgMHhCN0Y5LCAweEI3RkEsIDB4QjdGQiwgMHhCN0ZFLCAweEI4MDIsIDB4QjgwMywNCisgICAgMHhCODA0LCAweEI4MDUsIDB4QjgwNiwgMHhCODBBLCAweEI4MEIsIDB4QjgwRCwgMHhCODBFLCAweEI4MEYsDQorICAgIDB4QjgxMSwgMHhCODEyLCAweEI4MTMsIDB4QjgxNCwgMHhCODE1LCAweEI4MTYsIDB4QjgxNywgMHhCODFBLA0KKyAgICAweEI4MUMsIDB4QjgxRSwgMHhCODFGLCAweEI4MjAsIDB4QjgyMSwgMHhCODIyLCAweEI4MjMsIDB4QjgyNiwNCisgICAgMHhCODI3LCAweEI4MjksIDB4QjgyQSwgMHhCODJCLCAweEI4MkQsIDB4QjgyRSwgMHhCODJGLCAweEI4MzAsDQorICAgIDB4QjgzMSwgMHhCODMyLCAweEI4MzMsIDB4QjgzNiwgMHhCODNBLCAweEI4M0IsIDB4QjgzQywgMHhCODNELA0KKyAgICAweEI4M0UsIDB4QjgzRiwgMHhCODQxLCAweEI4NDIsIDB4Qjg0MywgMHhCODQ1LCAweEI4NDYsIDB4Qjg0NywNCisgICAgMHhCODQ4LCAweEI4NDksIDB4Qjg0QSwgMHhCODRCLCAweEI4NEMsIDB4Qjg0RCwgMHhCODRFLCAweEI4NEYsDQorICAgIDB4Qjg1MCwgMHhCODUyLCAweEI4NTQsIDB4Qjg1NSwgMHhCODU2LCAweEI4NTcsIDB4Qjg1OCwgMHhCODU5LA0KKyAgICAweEI4NUEsIDB4Qjg1QiwgMHhCODVFLCAweEI4NUYsIDB4Qjg2MSwgMHhCODYyLCAweEI4NjMsIDB4Qjg2NSwNCisgICAgMHhCODY2LCAweEI4NjcsIDB4Qjg2OCwgMHhCODY5LCAweEI4NkEsIDB4Qjg2QiwgMHhCODZFLCAweEI4NzAsDQorICAgIDB4Qjg3MiwgMHhCODczLCAweEI4NzQsIDB4Qjg3NSwgMHhCODc2LCAweEI4NzcsIDB4Qjg3OSwgMHhCODdBLA0KKyAgICAweEI4N0IsIDB4Qjg3RCwgMHhCODdFLCAweEI4N0YsIDB4Qjg4MCwgMHhCODgxLCAweEI4ODIsIDB4Qjg4MywNCisgICAgMHhCODg0LCAweEI4ODUsIDB4Qjg4NiwgMHhCODg3LCAweEI4ODgsIDB4Qjg4OSwgMHhCODhBLCAweEI4OEIsDQorICAgIDB4Qjg4QywgMHhCODhFLCAweEI4OEYsIDB4Qjg5MCwgMHhCODkxLCAweEI4OTIsIDB4Qjg5MywgMHhCODk0LA0KKyAgICAweEI4OTUsIDB4Qjg5NiwgMHhCODk3LCAweEI4OTgsIDB4Qjg5OSwgMHhCODlBLCAweEI4OUIsIDB4Qjg5QywNCisgICAgMHhCODlELCAweEI4OUUsIDB4Qjg5RiwgMHhCOEEwLCAweEI4QTEsIDB4QjhBMiwgMHhCOEEzLCAweEI4QTQsDQorICAgIDB4QjhBNSwgMHhCOEE2LCAweEI4QTcsIDB4QjhBOSwgMHhCOEFBLCAweEI4QUIsIDB4QjhBQywgMHhCOEFELA0KKyAgICAweEI4QUUsIDB4QjhBRiwgMHhCOEIxLCAweEI4QjIsIDB4QjhCMywgMHhCOEI1LCAweEI4QjYsIDB4QjhCNywNCisgICAgMHhCOEI5LCAweEI4QkEsIDB4QjhCQiwgMHhCOEJDLCAweEI4QkQsIDB4QjhCRSwgMHhCOEJGLCAweEI4QzIsDQorICAgIDB4QjhDNCwgMHhCOEM2LCAweEI4QzcsIDB4QjhDOCwgMHhCOEM5LCAweEI4Q0EsIDB4QjhDQiwgMHhCOENELA0KKyAgICAweEI4Q0UsIDB4QjhDRiwgMHhCOEQxLCAweEI4RDIsIDB4QjhEMywgMHhCOEQ1LCAweEI4RDYsIDB4QjhENywNCisgICAgMHhCOEQ4LCAweEI4RDksIDB4QjhEQSwgMHhCOERCLCAweEI4REMsIDB4QjhERSwgMHhCOEUwLCAweEI4RTIsDQorICAgIDB4QjhFMywgMHhCOEU0LCAweEI4RTUsIDB4QjhFNiwgMHhCOEU3LCAweEI4RUEsIDB4QjhFQiwgMHhCOEVELA0KKyAgICAweEI4RUUsIDB4QjhFRiwgMHhCOEYxLCAweEI4RjIsIDB4QjhGMywgMHhCOEY0LCAweEI4RjUsIDB4QjhGNiwNCisgICAgMHhCOEY3LCAweEI4RkEsIDB4QjhGQywgMHhCOEZFLCAweEI4RkYsIDB4QjkwMCwgMHhCOTAxLCAweEI5MDIsDQorICAgIDB4QjkwMywgMHhCOTA1LCAweEI5MDYsIDB4QjkwNywgMHhCOTA4LCAweEI5MDksIDB4QjkwQSwgMHhCOTBCLA0KKyAgICAweEI5MEMsIDB4QjkwRCwgMHhCOTBFLCAweEI5MEYsIDB4QjkxMCwgMHhCOTExLCAweEI5MTIsIDB4QjkxMywNCisgICAgMHhCOTE0LCAweEI5MTUsIDB4QjkxNiwgMHhCOTE3LCAweEI5MTksIDB4QjkxQSwgMHhCOTFCLCAweEI5MUMsDQorICAgIDB4QjkxRCwgMHhCOTFFLCAweEI5MUYsIDB4QjkyMSwgMHhCOTIyLCAweEI5MjMsIDB4QjkyNCwgMHhCOTI1LA0KKyAgICAweEI5MjYsIDB4QjkyNywgMHhCOTI4LCAweEI5MjksIDB4QjkyQSwgMHhCOTJCLCAweEI5MkMsIDB4QjkyRCwNCisgICAgMHhCOTJFLCAweEI5MkYsIDB4QjkzMCwgMHhCOTMxLCAweEI5MzIsIDB4QjkzMywgMHhCOTM0LCAweEI5MzUsDQorICAgIDB4QjkzNiwgMHhCOTM3LCAweEI5MzgsIDB4QjkzOSwgMHhCOTNBLCAweEI5M0IsIDB4QjkzRSwgMHhCOTNGLA0KKyAgICAweEI5NDEsIDB4Qjk0MiwgMHhCOTQzLCAweEI5NDUsIDB4Qjk0NiwgMHhCOTQ3LCAweEI5NDgsIDB4Qjk0OSwNCisgICAgMHhCOTRBLCAweEI5NEIsIDB4Qjk0RCwgMHhCOTRFLCAweEI5NTAsIDB4Qjk1MiwgMHhCOTUzLCAweEI5NTQsDQorICAgIDB4Qjk1NSwgMHhCOTU2LCAweEI5NTcsIDB4Qjk1QSwgMHhCOTVCLCAweEI5NUQsIDB4Qjk1RSwgMHhCOTVGLA0KKyAgICAweEI5NjEsIDB4Qjk2MiwgMHhCOTYzLCAweEI5NjQsIDB4Qjk2NSwgMHhCOTY2LCAweEI5NjcsIDB4Qjk2QSwNCisgICAgMHhCOTZDLCAweEI5NkUsIDB4Qjk2RiwgMHhCOTcwLCAweEI5NzEsIDB4Qjk3MiwgMHhCOTczLCAweEI5NzYsDQorICAgIDB4Qjk3NywgMHhCOTc5LCAweEI5N0EsIDB4Qjk3QiwgMHhCOTdELCAweEI5N0UsIDB4Qjk3RiwgMHhCOTgwLA0KKyAgICAweEI5ODEsIDB4Qjk4MiwgMHhCOTgzLCAweEI5ODYsIDB4Qjk4OCwgMHhCOThCLCAweEI5OEMsIDB4Qjk4RiwNCisgICAgMHhCOTkwLCAweEI5OTEsIDB4Qjk5MiwgMHhCOTkzLCAweEI5OTQsIDB4Qjk5NSwgMHhCOTk2LCAweEI5OTcsDQorICAgIDB4Qjk5OCwgMHhCOTk5LCAweEI5OUEsIDB4Qjk5QiwgMHhCOTlDLCAweEI5OUQsIDB4Qjk5RSwgMHhCOTlGLA0KKyAgICAweEI5QTAsIDB4QjlBMSwgMHhCOUEyLCAweEI5QTMsIDB4QjlBNCwgMHhCOUE1LCAweEI5QTYsIDB4QjlBNywNCisgICAgMHhCOUE4LCAweEI5QTksIDB4QjlBQSwgMHhCOUFCLCAweEI5QUUsIDB4QjlBRiwgMHhCOUIxLCAweEI5QjIsDQorICAgIDB4QjlCMywgMHhCOUI1LCAweEI5QjYsIDB4QjlCNywgMHhCOUI4LCAweEI5QjksIDB4QjlCQSwgMHhCOUJCLA0KKyAgICAweEI5QkUsIDB4QjlDMCwgMHhCOUMyLCAweEI5QzMsIDB4QjlDNCwgMHhCOUM1LCAweEI5QzYsIDB4QjlDNywNCisgICAgMHhCOUNBLCAweEI5Q0IsIDB4QjlDRCwgMHhCOUQzLCAweEI5RDQsIDB4QjlENSwgMHhCOUQ2LCAweEI5RDcsDQorICAgIDB4QjlEQSwgMHhCOURDLCAweEI5REYsIDB4QjlFMCwgMHhCOUUyLCAweEI5RTYsIDB4QjlFNywgMHhCOUU5LA0KKyAgICAweEI5RUEsIDB4QjlFQiwgMHhCOUVELCAweEI5RUUsIDB4QjlFRiwgMHhCOUYwLCAweEI5RjEsIDB4QjlGMiwNCisgICAgMHhCOUYzLCAweEI5RjYsIDB4QjlGQiwgMHhCOUZDLCAweEI5RkQsIDB4QjlGRSwgMHhCOUZGLCAweEJBMDIsDQorICAgIDB4QkEwMywgMHhCQTA0LCAweEJBMDUsIDB4QkEwNiwgMHhCQTA3LCAweEJBMDksIDB4QkEwQSwgMHhCQTBCLA0KKyAgICAweEJBMEMsIDB4QkEwRCwgMHhCQTBFLCAweEJBMEYsIDB4QkExMCwgMHhCQTExLCAweEJBMTIsIDB4QkExMywNCisgICAgMHhCQTE0LCAweEJBMTYsIDB4QkExNywgMHhCQTE4LCAweEJBMTksIDB4QkExQSwgMHhCQTFCLCAweEJBMUMsDQorICAgIDB4QkExRCwgMHhCQTFFLCAweEJBMUYsIDB4QkEyMCwgMHhCQTIxLCAweEJBMjIsIDB4QkEyMywgMHhCQTI0LA0KKyAgICAweEJBMjUsIDB4QkEyNiwgMHhCQTI3LCAweEJBMjgsIDB4QkEyOSwgMHhCQTJBLCAweEJBMkIsIDB4QkEyQywNCisgICAgMHhCQTJELCAweEJBMkUsIDB4QkEyRiwgMHhCQTMwLCAweEJBMzEsIDB4QkEzMiwgMHhCQTMzLCAweEJBMzQsDQorICAgIDB4QkEzNSwgMHhCQTM2LCAweEJBMzcsIDB4QkEzQSwgMHhCQTNCLCAweEJBM0QsIDB4QkEzRSwgMHhCQTNGLA0KKyAgICAweEJBNDEsIDB4QkE0MywgMHhCQTQ0LCAweEJBNDUsIDB4QkE0NiwgMHhCQTQ3LCAweEJBNEEsIDB4QkE0QywNCisgICAgMHhCQTRGLCAweEJBNTAsIDB4QkE1MSwgMHhCQTUyLCAweEJBNTYsIDB4QkE1NywgMHhCQTU5LCAweEJBNUEsDQorICAgIDB4QkE1QiwgMHhCQTVELCAweEJBNUUsIDB4QkE1RiwgMHhCQTYwLCAweEJBNjEsIDB4QkE2MiwgMHhCQTYzLA0KKyAgICAweEJBNjYsIDB4QkE2QSwgMHhCQTZCLCAweEJBNkMsIDB4QkE2RCwgMHhCQTZFLCAweEJBNkYsIDB4QkE3MiwNCisgICAgMHhCQTczLCAweEJBNzUsIDB4QkE3NiwgMHhCQTc3LCAweEJBNzksIDB4QkE3QSwgMHhCQTdCLCAweEJBN0MsDQorICAgIDB4QkE3RCwgMHhCQTdFLCAweEJBN0YsIDB4QkE4MCwgMHhCQTgxLCAweEJBODIsIDB4QkE4NiwgMHhCQTg4LA0KKyAgICAweEJBODksIDB4QkE4QSwgMHhCQThCLCAweEJBOEQsIDB4QkE4RSwgMHhCQThGLCAweEJBOTAsIDB4QkE5MSwNCisgICAgMHhCQTkyLCAweEJBOTMsIDB4QkE5NCwgMHhCQTk1LCAweEJBOTYsIDB4QkE5NywgMHhCQTk4LCAweEJBOTksDQorICAgIDB4QkE5QSwgMHhCQTlCLCAweEJBOUMsIDB4QkE5RCwgMHhCQTlFLCAweEJBOUYsIDB4QkFBMCwgMHhCQUExLA0KKyAgICAweEJBQTIsIDB4QkFBMywgMHhCQUE0LCAweEJBQTUsIDB4QkFBNiwgMHhCQUE3LCAweEJBQUEsIDB4QkFBRCwNCisgICAgMHhCQUFFLCAweEJBQUYsIDB4QkFCMSwgMHhCQUIzLCAweEJBQjQsIDB4QkFCNSwgMHhCQUI2LCAweEJBQjcsDQorICAgIDB4QkFCQSwgMHhCQUJDLCAweEJBQkUsIDB4QkFCRiwgMHhCQUMwLCAweEJBQzEsIDB4QkFDMiwgMHhCQUMzLA0KKyAgICAweEJBQzUsIDB4QkFDNiwgMHhCQUM3LCAweEJBQzksIDB4QkFDQSwgMHhCQUNCLCAweEJBQ0MsIDB4QkFDRCwNCisgICAgMHhCQUNFLCAweEJBQ0YsIDB4QkFEMCwgMHhCQUQxLCAweEJBRDIsIDB4QkFEMywgMHhCQUQ0LCAweEJBRDUsDQorICAgIDB4QkFENiwgMHhCQUQ3LCAweEJBREEsIDB4QkFEQiwgMHhCQURDLCAweEJBREQsIDB4QkFERSwgMHhCQURGLA0KKyAgICAweEJBRTAsIDB4QkFFMSwgMHhCQUUyLCAweEJBRTMsIDB4QkFFNCwgMHhCQUU1LCAweEJBRTYsIDB4QkFFNywNCisgICAgMHhCQUU4LCAweEJBRTksIDB4QkFFQSwgMHhCQUVCLCAweEJBRUMsIDB4QkFFRCwgMHhCQUVFLCAweEJBRUYsDQorICAgIDB4QkFGMCwgMHhCQUYxLCAweEJBRjIsIDB4QkFGMywgMHhCQUY0LCAweEJBRjUsIDB4QkFGNiwgMHhCQUY3LA0KKyAgICAweEJBRjgsIDB4QkFGOSwgMHhCQUZBLCAweEJBRkIsIDB4QkFGRCwgMHhCQUZFLCAweEJBRkYsIDB4QkIwMSwNCisgICAgMHhCQjAyLCAweEJCMDMsIDB4QkIwNSwgMHhCQjA2LCAweEJCMDcsIDB4QkIwOCwgMHhCQjA5LCAweEJCMEEsDQorICAgIDB4QkIwQiwgMHhCQjBDLCAweEJCMEUsIDB4QkIxMCwgMHhCQjEyLCAweEJCMTMsIDB4QkIxNCwgMHhCQjE1LA0KKyAgICAweEJCMTYsIDB4QkIxNywgMHhCQjE5LCAweEJCMUEsIDB4QkIxQiwgMHhCQjFELCAweEJCMUUsIDB4QkIxRiwNCisgICAgMHhCQjIxLCAweEJCMjIsIDB4QkIyMywgMHhCQjI0LCAweEJCMjUsIDB4QkIyNiwgMHhCQjI3LCAweEJCMjgsDQorICAgIDB4QkIyQSwgMHhCQjJDLCAweEJCMkQsIDB4QkIyRSwgMHhCQjJGLCAweEJCMzAsIDB4QkIzMSwgMHhCQjMyLA0KKyAgICAweEJCMzMsIDB4QkIzNywgMHhCQjM5LCAweEJCM0EsIDB4QkIzRiwgMHhCQjQwLCAweEJCNDEsIDB4QkI0MiwNCisgICAgMHhCQjQzLCAweEJCNDYsIDB4QkI0OCwgMHhCQjRBLCAweEJCNEIsIDB4QkI0QywgMHhCQjRFLCAweEJCNTEsDQorICAgIDB4QkI1MiwgMHhCQjUzLCAweEJCNTUsIDB4QkI1NiwgMHhCQjU3LCAweEJCNTksIDB4QkI1QSwgMHhCQjVCLA0KKyAgICAweEJCNUMsIDB4QkI1RCwgMHhCQjVFLCAweEJCNUYsIDB4QkI2MCwgMHhCQjYyLCAweEJCNjQsIDB4QkI2NSwNCisgICAgMHhCQjY2LCAweEJCNjcsIDB4QkI2OCwgMHhCQjY5LCAweEJCNkEsIDB4QkI2QiwgMHhCQjZELCAweEJCNkUsDQorICAgIDB4QkI2RiwgMHhCQjcwLCAweEJCNzEsIDB4QkI3MiwgMHhCQjczLCAweEJCNzQsIDB4QkI3NSwgMHhCQjc2LA0KKyAgICAweEJCNzcsIDB4QkI3OCwgMHhCQjc5LCAweEJCN0EsIDB4QkI3QiwgMHhCQjdDLCAweEJCN0QsIDB4QkI3RSwNCisgICAgMHhCQjdGLCAweEJCODAsIDB4QkI4MSwgMHhCQjgyLCAweEJCODMsIDB4QkI4NCwgMHhCQjg1LCAweEJCODYsDQorICAgIDB4QkI4NywgMHhCQjg5LCAweEJCOEEsIDB4QkI4QiwgMHhCQjhELCAweEJCOEUsIDB4QkI4RiwgMHhCQjkxLA0KKyAgICAweEJCOTIsIDB4QkI5MywgMHhCQjk0LCAweEJCOTUsIDB4QkI5NiwgMHhCQjk3LCAweEJCOTgsIDB4QkI5OSwNCisgICAgMHhCQjlBLCAweEJCOUIsIDB4QkI5QywgMHhCQjlELCAweEJCOUUsIDB4QkI5RiwgMHhCQkEwLCAweEJCQTEsDQorICAgIDB4QkJBMiwgMHhCQkEzLCAweEJCQTUsIDB4QkJBNiwgMHhCQkE3LCAweEJCQTksIDB4QkJBQSwgMHhCQkFCLA0KKyAgICAweEJCQUQsIDB4QkJBRSwgMHhCQkFGLCAweEJCQjAsIDB4QkJCMSwgMHhCQkIyLCAweEJCQjMsIDB4QkJCNSwNCisgICAgMHhCQkI2LCAweEJCQjgsIDB4QkJCOSwgMHhCQkJBLCAweEJCQkIsIDB4QkJCQywgMHhCQkJELCAweEJCQkUsDQorICAgIDB4QkJCRiwgMHhCQkMxLCAweEJCQzIsIDB4QkJDMywgMHhCQkM1LCAweEJCQzYsIDB4QkJDNywgMHhCQkM5LA0KKyAgICAweEJCQ0EsIDB4QkJDQiwgMHhCQkNDLCAweEJCQ0QsIDB4QkJDRSwgMHhCQkNGLCAweEJCRDEsIDB4QkJEMiwNCisgICAgMHhCQkQ0LCAweEJCRDUsIDB4QkJENiwgMHhCQkQ3LCAweEJCRDgsIDB4QkJEOSwgMHhCQkRBLCAweEJCREIsDQorICAgIDB4QkJEQywgMHhCQkRELCAweEJCREUsIDB4QkJERiwgMHhCQkUwLCAweEJCRTEsIDB4QkJFMiwgMHhCQkUzLA0KKyAgICAweEJCRTQsIDB4QkJFNSwgMHhCQkU2LCAweEJCRTcsIDB4QkJFOCwgMHhCQkU5LCAweEJCRUEsIDB4QkJFQiwNCisgICAgMHhCQkVDLCAweEJCRUQsIDB4QkJFRSwgMHhCQkVGLCAweEJCRjAsIDB4QkJGMSwgMHhCQkYyLCAweEJCRjMsDQorICAgIDB4QkJGNCwgMHhCQkY1LCAweEJCRjYsIDB4QkJGNywgMHhCQkZBLCAweEJCRkIsIDB4QkJGRCwgMHhCQkZFLA0KKyAgICAweEJDMDEsIDB4QkMwMywgMHhCQzA0LCAweEJDMDUsIDB4QkMwNiwgMHhCQzA3LCAweEJDMEEsIDB4QkMwRSwNCisgICAgMHhCQzEwLCAweEJDMTIsIDB4QkMxMywgMHhCQzE5LCAweEJDMUEsIDB4QkMyMCwgMHhCQzIxLCAweEJDMjIsDQorICAgIDB4QkMyMywgMHhCQzI2LCAweEJDMjgsIDB4QkMyQSwgMHhCQzJCLCAweEJDMkMsIDB4QkMyRSwgMHhCQzJGLA0KKyAgICAweEJDMzIsIDB4QkMzMywgMHhCQzM1LCAweEJDMzYsIDB4QkMzNywgMHhCQzM5LCAweEJDM0EsIDB4QkMzQiwNCisgICAgMHhCQzNDLCAweEJDM0QsIDB4QkMzRSwgMHhCQzNGLCAweEJDNDIsIDB4QkM0NiwgMHhCQzQ3LCAweEJDNDgsDQorICAgIDB4QkM0QSwgMHhCQzRCLCAweEJDNEUsIDB4QkM0RiwgMHhCQzUxLCAweEJDNTIsIDB4QkM1MywgMHhCQzU0LA0KKyAgICAweEJDNTUsIDB4QkM1NiwgMHhCQzU3LCAweEJDNTgsIDB4QkM1OSwgMHhCQzVBLCAweEJDNUIsIDB4QkM1QywNCisgICAgMHhCQzVFLCAweEJDNUYsIDB4QkM2MCwgMHhCQzYxLCAweEJDNjIsIDB4QkM2MywgMHhCQzY0LCAweEJDNjUsDQorICAgIDB4QkM2NiwgMHhCQzY3LCAweEJDNjgsIDB4QkM2OSwgMHhCQzZBLCAweEJDNkIsIDB4QkM2QywgMHhCQzZELA0KKyAgICAweEJDNkUsIDB4QkM2RiwgMHhCQzcwLCAweEJDNzEsIDB4QkM3MiwgMHhCQzczLCAweEJDNzQsIDB4QkM3NSwNCisgICAgMHhCQzc2LCAweEJDNzcsIDB4QkM3OCwgMHhCQzc5LCAweEJDN0EsIDB4QkM3QiwgMHhCQzdDLCAweEJDN0QsDQorICAgIDB4QkM3RSwgMHhCQzdGLCAweEJDODAsIDB4QkM4MSwgMHhCQzgyLCAweEJDODMsIDB4QkM4NiwgMHhCQzg3LA0KKyAgICAweEJDODksIDB4QkM4QSwgMHhCQzhELCAweEJDOEYsIDB4QkM5MCwgMHhCQzkxLCAweEJDOTIsIDB4QkM5MywNCisgICAgMHhCQzk2LCAweEJDOTgsIDB4QkM5QiwgMHhCQzlDLCAweEJDOUQsIDB4QkM5RSwgMHhCQzlGLCAweEJDQTIsDQorICAgIDB4QkNBMywgMHhCQ0E1LCAweEJDQTYsIDB4QkNBOSwgMHhCQ0FBLCAweEJDQUIsIDB4QkNBQywgMHhCQ0FELA0KKyAgICAweEJDQUUsIDB4QkNBRiwgMHhCQ0IyLCAweEJDQjYsIDB4QkNCNywgMHhCQ0I4LCAweEJDQjksIDB4QkNCQSwNCisgICAgMHhCQ0JCLCAweEJDQkUsIDB4QkNCRiwgMHhCQ0MxLCAweEJDQzIsIDB4QkNDMywgMHhCQ0M1LCAweEJDQzYsDQorICAgIDB4QkNDNywgMHhCQ0M4LCAweEJDQzksIDB4QkNDQSwgMHhCQ0NCLCAweEJDQ0MsIDB4QkNDRSwgMHhCQ0QyLA0KKyAgICAweEJDRDMsIDB4QkNENCwgMHhCQ0Q2LCAweEJDRDcsIDB4QkNEOSwgMHhCQ0RBLCAweEJDREIsIDB4QkNERCwNCisgICAgMHhCQ0RFLCAweEJDREYsIDB4QkNFMCwgMHhCQ0UxLCAweEJDRTIsIDB4QkNFMywgMHhCQ0U0LCAweEJDRTUsDQorICAgIDB4QkNFNiwgMHhCQ0U3LCAweEJDRTgsIDB4QkNFOSwgMHhCQ0VBLCAweEJDRUIsIDB4QkNFQywgMHhCQ0VELA0KKyAgICAweEJDRUUsIDB4QkNFRiwgMHhCQ0YwLCAweEJDRjEsIDB4QkNGMiwgMHhCQ0YzLCAweEJDRjcsIDB4QkNGOSwNCisgICAgMHhCQ0ZBLCAweEJDRkIsIDB4QkNGRCwgMHhCQ0ZFLCAweEJDRkYsIDB4QkQwMCwgMHhCRDAxLCAweEJEMDIsDQorICAgIDB4QkQwMywgMHhCRDA2LCAweEJEMDgsIDB4QkQwQSwgMHhCRDBCLCAweEJEMEMsIDB4QkQwRCwgMHhCRDBFLA0KKyAgICAweEJEMEYsIDB4QkQxMSwgMHhCRDEyLCAweEJEMTMsIDB4QkQxNSwgMHhCRDE2LCAweEJEMTcsIDB4QkQxOCwNCisgICAgMHhCRDE5LCAweEJEMUEsIDB4QkQxQiwgMHhCRDFDLCAweEJEMUQsIDB4QkQxRSwgMHhCRDFGLCAweEJEMjAsDQorICAgIDB4QkQyMSwgMHhCRDIyLCAweEJEMjMsIDB4QkQyNSwgMHhCRDI2LCAweEJEMjcsIDB4QkQyOCwgMHhCRDI5LA0KKyAgICAweEJEMkEsIDB4QkQyQiwgMHhCRDJELCAweEJEMkUsIDB4QkQyRiwgMHhCRDMwLCAweEJEMzEsIDB4QkQzMiwNCisgICAgMHhCRDMzLCAweEJEMzQsIDB4QkQzNSwgMHhCRDM2LCAweEJEMzcsIDB4QkQzOCwgMHhCRDM5LCAweEJEM0EsDQorICAgIDB4QkQzQiwgMHhCRDNDLCAweEJEM0QsIDB4QkQzRSwgMHhCRDNGLCAweEJENDEsIDB4QkQ0MiwgMHhCRDQzLA0KKyAgICAweEJENDQsIDB4QkQ0NSwgMHhCRDQ2LCAweEJENDcsIDB4QkQ0QSwgMHhCRDRCLCAweEJENEQsIDB4QkQ0RSwNCisgICAgMHhCRDRGLCAweEJENTEsIDB4QkQ1MiwgMHhCRDUzLCAweEJENTQsIDB4QkQ1NSwgMHhCRDU2LCAweEJENTcsDQorICAgIDB4QkQ1QSwgMHhCRDVCLCAweEJENUMsIDB4QkQ1RCwgMHhCRDVFLCAweEJENUYsIDB4QkQ2MCwgMHhCRDYxLA0KKyAgICAweEJENjIsIDB4QkQ2MywgMHhCRDY1LCAweEJENjYsIDB4QkQ2NywgMHhCRDY5LCAweEJENkEsIDB4QkQ2QiwNCisgICAgMHhCRDZDLCAweEJENkQsIDB4QkQ2RSwgMHhCRDZGLCAweEJENzAsIDB4QkQ3MSwgMHhCRDcyLCAweEJENzMsDQorICAgIDB4QkQ3NCwgMHhCRDc1LCAweEJENzYsIDB4QkQ3NywgMHhCRDc4LCAweEJENzksIDB4QkQ3QSwgMHhCRDdCLA0KKyAgICAweEJEN0MsIDB4QkQ3RCwgMHhCRDdFLCAweEJEN0YsIDB4QkQ4MiwgMHhCRDgzLCAweEJEODUsIDB4QkQ4NiwNCisgICAgMHhCRDhCLCAweEJEOEMsIDB4QkQ4RCwgMHhCRDhFLCAweEJEOEYsIDB4QkQ5MiwgMHhCRDk0LCAweEJEOTYsDQorICAgIDB4QkQ5NywgMHhCRDk4LCAweEJEOUIsIDB4QkQ5RCwgMHhCRDlFLCAweEJEOUYsIDB4QkRBMCwgMHhCREExLA0KKyAgICAweEJEQTIsIDB4QkRBMywgMHhCREE1LCAweEJEQTYsIDB4QkRBNywgMHhCREE4LCAweEJEQTksIDB4QkRBQSwNCisgICAgMHhCREFCLCAweEJEQUMsIDB4QkRBRCwgMHhCREFFLCAweEJEQUYsIDB4QkRCMSwgMHhCREIyLCAweEJEQjMsDQorICAgIDB4QkRCNCwgMHhCREI1LCAweEJEQjYsIDB4QkRCNywgMHhCREI5LCAweEJEQkEsIDB4QkRCQiwgMHhCREJDLA0KKyAgICAweEJEQkQsIDB4QkRCRSwgMHhCREJGLCAweEJEQzAsIDB4QkRDMSwgMHhCREMyLCAweEJEQzMsIDB4QkRDNCwNCisgICAgMHhCREM1LCAweEJEQzYsIDB4QkRDNywgMHhCREM4LCAweEJEQzksIDB4QkRDQSwgMHhCRENCLCAweEJEQ0MsDQorICAgIDB4QkRDRCwgMHhCRENFLCAweEJEQ0YsIDB4QkREMCwgMHhCREQxLCAweEJERDIsIDB4QkREMywgMHhCREQ2LA0KKyAgICAweEJERDcsIDB4QkREOSwgMHhCRERBLCAweEJEREIsIDB4QkRERCwgMHhCRERFLCAweEJEREYsIDB4QkRFMCwNCisgICAgMHhCREUxLCAweEJERTIsIDB4QkRFMywgMHhCREU0LCAweEJERTUsIDB4QkRFNiwgMHhCREU3LCAweEJERTgsDQorICAgIDB4QkRFQSwgMHhCREVCLCAweEJERUMsIDB4QkRFRCwgMHhCREVFLCAweEJERUYsIDB4QkRGMSwgMHhCREYyLA0KKyAgICAweEJERjMsIDB4QkRGNSwgMHhCREY2LCAweEJERjcsIDB4QkRGOSwgMHhCREZBLCAweEJERkIsIDB4QkRGQywNCisgICAgMHhCREZELCAweEJERkUsIDB4QkRGRiwgMHhCRTAxLCAweEJFMDIsIDB4QkUwNCwgMHhCRTA2LCAweEJFMDcsDQorICAgIDB4QkUwOCwgMHhCRTA5LCAweEJFMEEsIDB4QkUwQiwgMHhCRTBFLCAweEJFMEYsIDB4QkUxMSwgMHhCRTEyLA0KKyAgICAweEJFMTMsIDB4QkUxNSwgMHhCRTE2LCAweEJFMTcsIDB4QkUxOCwgMHhCRTE5LCAweEJFMUEsIDB4QkUxQiwNCisgICAgMHhCRTFFLCAweEJFMjAsIDB4QkUyMSwgMHhCRTIyLCAweEJFMjMsIDB4QkUyNCwgMHhCRTI1LCAweEJFMjYsDQorICAgIDB4QkUyNywgMHhCRTI4LCAweEJFMjksIDB4QkUyQSwgMHhCRTJCLCAweEJFMkMsIDB4QkUyRCwgMHhCRTJFLA0KKyAgICAweEJFMkYsIDB4QkUzMCwgMHhCRTMxLCAweEJFMzIsIDB4QkUzMywgMHhCRTM0LCAweEJFMzUsIDB4QkUzNiwNCisgICAgMHhCRTM3LCAweEJFMzgsIDB4QkUzOSwgMHhCRTNBLCAweEJFM0IsIDB4QkUzQywgMHhCRTNELCAweEJFM0UsDQorICAgIDB4QkUzRiwgMHhCRTQwLCAweEJFNDEsIDB4QkU0MiwgMHhCRTQzLCAweEJFNDYsIDB4QkU0NywgMHhCRTQ5LA0KKyAgICAweEJFNEEsIDB4QkU0QiwgMHhCRTRELCAweEJFNEYsIDB4QkU1MCwgMHhCRTUxLCAweEJFNTIsIDB4QkU1MywNCisgICAgMHhCRTU2LCAweEJFNTgsIDB4QkU1QywgMHhCRTVELCAweEJFNUUsIDB4QkU1RiwgMHhCRTYyLCAweEJFNjMsDQorICAgIDB4QkU2NSwgMHhCRTY2LCAweEJFNjcsIDB4QkU2OSwgMHhCRTZCLCAweEJFNkMsIDB4QkU2RCwgMHhCRTZFLA0KKyAgICAweEJFNkYsIDB4QkU3MiwgMHhCRTc2LCAweEJFNzcsIDB4QkU3OCwgMHhCRTc5LCAweEJFN0EsIDB4QkU3RSwNCisgICAgMHhCRTdGLCAweEJFODEsIDB4QkU4MiwgMHhCRTgzLCAweEJFODUsIDB4QkU4NiwgMHhCRTg3LCAweEJFODgsDQorICAgIDB4QkU4OSwgMHhCRThBLCAweEJFOEIsIDB4QkU4RSwgMHhCRTkyLCAweEJFOTMsIDB4QkU5NCwgMHhCRTk1LA0KKyAgICAweEJFOTYsIDB4QkU5NywgMHhCRTlBLCAweEJFOUIsIDB4QkU5QywgMHhCRTlELCAweEJFOUUsIDB4QkU5RiwNCisgICAgMHhCRUEwLCAweEJFQTEsIDB4QkVBMiwgMHhCRUEzLCAweEJFQTQsIDB4QkVBNSwgMHhCRUE2LCAweEJFQTcsDQorICAgIDB4QkVBOSwgMHhCRUFBLCAweEJFQUIsIDB4QkVBQywgMHhCRUFELCAweEJFQUUsIDB4QkVBRiwgMHhCRUIwLA0KKyAgICAweEJFQjEsIDB4QkVCMiwgMHhCRUIzLCAweEJFQjQsIDB4QkVCNSwgMHhCRUI2LCAweEJFQjcsIDB4QkVCOCwNCisgICAgMHhCRUI5LCAweEJFQkEsIDB4QkVCQiwgMHhCRUJDLCAweEJFQkQsIDB4QkVCRSwgMHhCRUJGLCAweEJFQzAsDQorICAgIDB4QkVDMSwgMHhCRUMyLCAweEJFQzMsIDB4QkVDNCwgMHhCRUM1LCAweEJFQzYsIDB4QkVDNywgMHhCRUM4LA0KKyAgICAweEJFQzksIDB4QkVDQSwgMHhCRUNCLCAweEJFQ0MsIDB4QkVDRCwgMHhCRUNFLCAweEJFQ0YsIDB4QkVEMiwNCisgICAgMHhCRUQzLCAweEJFRDUsIDB4QkVENiwgMHhCRUQ5LCAweEJFREEsIDB4QkVEQiwgMHhCRURDLCAweEJFREQsDQorICAgIDB4QkVERSwgMHhCRURGLCAweEJFRTEsIDB4QkVFMiwgMHhCRUU2LCAweEJFRTcsIDB4QkVFOCwgMHhCRUU5LA0KKyAgICAweEJFRUEsIDB4QkVFQiwgMHhCRUVELCAweEJFRUUsIDB4QkVFRiwgMHhCRUYwLCAweEJFRjEsIDB4QkVGMiwNCisgICAgMHhCRUYzLCAweEJFRjQsIDB4QkVGNSwgMHhCRUY2LCAweEJFRjcsIDB4QkVGOCwgMHhCRUY5LCAweEJFRkEsDQorICAgIDB4QkVGQiwgMHhCRUZDLCAweEJFRkQsIDB4QkVGRSwgMHhCRUZGLCAweEJGMDAsIDB4QkYwMiwgMHhCRjAzLA0KKyAgICAweEJGMDQsIDB4QkYwNSwgMHhCRjA2LCAweEJGMDcsIDB4QkYwQSwgMHhCRjBCLCAweEJGMEMsIDB4QkYwRCwNCisgICAgMHhCRjBFLCAweEJGMEYsIDB4QkYxMCwgMHhCRjExLCAweEJGMTIsIDB4QkYxMywgMHhCRjE0LCAweEJGMTUsDQorICAgIDB4QkYxNiwgMHhCRjE3LCAweEJGMUEsIDB4QkYxRSwgMHhCRjFGLCAweEJGMjAsIDB4QkYyMSwgMHhCRjIyLA0KKyAgICAweEJGMjMsIDB4QkYyNCwgMHhCRjI1LCAweEJGMjYsIDB4QkYyNywgMHhCRjI4LCAweEJGMjksIDB4QkYyQSwNCisgICAgMHhCRjJCLCAweEJGMkMsIDB4QkYyRCwgMHhCRjJFLCAweEJGMkYsIDB4QkYzMCwgMHhCRjMxLCAweEJGMzIsDQorICAgIDB4QkYzMywgMHhCRjM0LCAweEJGMzUsIDB4QkYzNiwgMHhCRjM3LCAweEJGMzgsIDB4QkYzOSwgMHhCRjNBLA0KKyAgICAweEJGM0IsIDB4QkYzQywgMHhCRjNELCAweEJGM0UsIDB4QkYzRiwgMHhCRjQyLCAweEJGNDMsIDB4QkY0NSwNCisgICAgMHhCRjQ2LCAweEJGNDcsIDB4QkY0OSwgMHhCRjRBLCAweEJGNEIsIDB4QkY0QywgMHhCRjRELCAweEJGNEUsDQorICAgIDB4QkY0RiwgMHhCRjUyLCAweEJGNTMsIDB4QkY1NCwgMHhCRjU2LCAweEJGNTcsIDB4QkY1OCwgMHhCRjU5LA0KKyAgICAweEJGNUEsIDB4QkY1QiwgMHhCRjVDLCAweEJGNUQsIDB4QkY1RSwgMHhCRjVGLCAweEJGNjAsIDB4QkY2MSwNCisgICAgMHhCRjYyLCAweEJGNjMsIDB4QkY2NCwgMHhCRjY1LCAweEJGNjYsIDB4QkY2NywgMHhCRjY4LCAweEJGNjksDQorICAgIDB4QkY2QSwgMHhCRjZCLCAweEJGNkMsIDB4QkY2RCwgMHhCRjZFLCAweEJGNkYsIDB4QkY3MCwgMHhCRjcxLA0KKyAgICAweEJGNzIsIDB4QkY3MywgMHhCRjc0LCAweEJGNzUsIDB4QkY3NiwgMHhCRjc3LCAweEJGNzgsIDB4QkY3OSwNCisgICAgMHhCRjdBLCAweEJGN0IsIDB4QkY3QywgMHhCRjdELCAweEJGN0UsIDB4QkY3RiwgMHhCRjgwLCAweEJGODEsDQorICAgIDB4QkY4MiwgMHhCRjgzLCAweEJGODQsIDB4QkY4NSwgMHhCRjg2LCAweEJGODcsIDB4QkY4OCwgMHhCRjg5LA0KKyAgICAweEJGOEEsIDB4QkY4QiwgMHhCRjhDLCAweEJGOEQsIDB4QkY4RSwgMHhCRjhGLCAweEJGOTAsIDB4QkY5MSwNCisgICAgMHhCRjkyLCAweEJGOTMsIDB4QkY5NSwgMHhCRjk2LCAweEJGOTcsIDB4QkY5OCwgMHhCRjk5LCAweEJGOUEsDQorICAgIDB4QkY5QiwgMHhCRjlDLCAweEJGOUQsIDB4QkY5RSwgMHhCRjlGLCAweEJGQTAsIDB4QkZBMSwgMHhCRkEyLA0KKyAgICAweEJGQTMsIDB4QkZBNCwgMHhCRkE1LCAweEJGQTYsIDB4QkZBNywgMHhCRkE4LCAweEJGQTksIDB4QkZBQSwNCisgICAgMHhCRkFCLCAweEJGQUMsIDB4QkZBRCwgMHhCRkFFLCAweEJGQUYsIDB4QkZCMSwgMHhCRkIyLCAweEJGQjMsDQorICAgIDB4QkZCNCwgMHhCRkI1LCAweEJGQjYsIDB4QkZCNywgMHhCRkI4LCAweEJGQjksIDB4QkZCQSwgMHhCRkJCLA0KKyAgICAweEJGQkMsIDB4QkZCRCwgMHhCRkJFLCAweEJGQkYsIDB4QkZDMCwgMHhCRkMxLCAweEJGQzIsIDB4QkZDMywNCisgICAgMHhCRkM0LCAweEJGQzYsIDB4QkZDNywgMHhCRkM4LCAweEJGQzksIDB4QkZDQSwgMHhCRkNCLCAweEJGQ0UsDQorICAgIDB4QkZDRiwgMHhCRkQxLCAweEJGRDIsIDB4QkZEMywgMHhCRkQ1LCAweEJGRDYsIDB4QkZENywgMHhCRkQ4LA0KKyAgICAweEJGRDksIDB4QkZEQSwgMHhCRkRCLCAweEJGREQsIDB4QkZERSwgMHhCRkUwLCAweEJGRTIsIDB4QkZFMywNCisgICAgMHhCRkU0LCAweEJGRTUsIDB4QkZFNiwgMHhCRkU3LCAweEJGRTgsIDB4QkZFOSwgMHhCRkVBLCAweEJGRUIsDQorICAgIDB4QkZFQywgMHhCRkVELCAweEJGRUUsIDB4QkZFRiwgMHhCRkYwLCAweEJGRjEsIDB4QkZGMiwgMHhCRkYzLA0KKyAgICAweEJGRjQsIDB4QkZGNSwgMHhCRkY2LCAweEJGRjcsIDB4QkZGOCwgMHhCRkY5LCAweEJGRkEsIDB4QkZGQiwNCisgICAgMHhCRkZDLCAweEJGRkQsIDB4QkZGRSwgMHhCRkZGLCAweEMwMDAsIDB4QzAwMSwgMHhDMDAyLCAweEMwMDMsDQorICAgIDB4QzAwNCwgMHhDMDA1LCAweEMwMDYsIDB4QzAwNywgMHhDMDA4LCAweEMwMDksIDB4QzAwQSwgMHhDMDBCLA0KKyAgICAweEMwMEMsIDB4QzAwRCwgMHhDMDBFLCAweEMwMEYsIDB4QzAxMCwgMHhDMDExLCAweEMwMTIsIDB4QzAxMywNCisgICAgMHhDMDE0LCAweEMwMTUsIDB4QzAxNiwgMHhDMDE3LCAweEMwMTgsIDB4QzAxOSwgMHhDMDFBLCAweEMwMUIsDQorICAgIDB4QzAxQywgMHhDMDFELCAweEMwMUUsIDB4QzAxRiwgMHhDMDIwLCAweEMwMjEsIDB4QzAyMiwgMHhDMDIzLA0KKyAgICAweEMwMjQsIDB4QzAyNSwgMHhDMDI2LCAweEMwMjcsIDB4QzAyOCwgMHhDMDI5LCAweEMwMkEsIDB4QzAyQiwNCisgICAgMHhDMDJDLCAweEMwMkQsIDB4QzAyRSwgMHhDMDJGLCAweEMwMzAsIDB4QzAzMSwgMHhDMDMyLCAweEMwMzMsDQorICAgIDB4QzAzNCwgMHhDMDM1LCAweEMwMzYsIDB4QzAzNywgMHhDMDM4LCAweEMwMzksIDB4QzAzQSwgMHhDMDNCLA0KKyAgICAweEMwM0QsIDB4QzAzRSwgMHhDMDNGLCAweEMwNDAsIDB4QzA0MSwgMHhDMDQyLCAweEMwNDMsIDB4QzA0NCwNCisgICAgMHhDMDQ1LCAweEMwNDYsIDB4QzA0NywgMHhDMDQ4LCAweEMwNDksIDB4QzA0QSwgMHhDMDRCLCAweEMwNEMsDQorICAgIDB4QzA0RCwgMHhDMDRFLCAweEMwNEYsIDB4QzA1MCwgMHhDMDUyLCAweEMwNTMsIDB4QzA1NCwgMHhDMDU1LA0KKyAgICAweEMwNTYsIDB4QzA1NywgMHhDMDU5LCAweEMwNUEsIDB4QzA1QiwgMHhDMDVELCAweEMwNUUsIDB4QzA1RiwNCisgICAgMHhDMDYxLCAweEMwNjIsIDB4QzA2MywgMHhDMDY0LCAweEMwNjUsIDB4QzA2NiwgMHhDMDY3LCAweEMwNkEsDQorICAgIDB4QzA2QiwgMHhDMDZDLCAweEMwNkQsIDB4QzA2RSwgMHhDMDZGLCAweEMwNzAsIDB4QzA3MSwgMHhDMDcyLA0KKyAgICAweEMwNzMsIDB4QzA3NCwgMHhDMDc1LCAweEMwNzYsIDB4QzA3NywgMHhDMDc4LCAweEMwNzksIDB4QzA3QSwNCisgICAgMHhDMDdCLCAweEMwN0MsIDB4QzA3RCwgMHhDMDdFLCAweEMwN0YsIDB4QzA4MCwgMHhDMDgxLCAweEMwODIsDQorICAgIDB4QzA4MywgMHhDMDg0LCAweEMwODUsIDB4QzA4NiwgMHhDMDg3LCAweEMwODgsIDB4QzA4OSwgMHhDMDhBLA0KKyAgICAweEMwOEIsIDB4QzA4QywgMHhDMDhELCAweEMwOEUsIDB4QzA4RiwgMHhDMDkyLCAweEMwOTMsIDB4QzA5NSwNCisgICAgMHhDMDk2LCAweEMwOTcsIDB4QzA5OSwgMHhDMDlBLCAweEMwOUIsIDB4QzA5QywgMHhDMDlELCAweEMwOUUsDQorICAgIDB4QzA5RiwgMHhDMEEyLCAweEMwQTQsIDB4QzBBNiwgMHhDMEE3LCAweEMwQTgsIDB4QzBBOSwgMHhDMEFBLA0KKyAgICAweEMwQUIsIDB4QzBBRSwgMHhDMEIxLCAweEMwQjIsIDB4QzBCNywgMHhDMEI4LCAweEMwQjksIDB4QzBCQSwNCisgICAgMHhDMEJCLCAweEMwQkUsIDB4QzBDMiwgMHhDMEMzLCAweEMwQzQsIDB4QzBDNiwgMHhDMEM3LCAweEMwQ0EsDQorICAgIDB4QzBDQiwgMHhDMENELCAweEMwQ0UsIDB4QzBDRiwgMHhDMEQxLCAweEMwRDIsIDB4QzBEMywgMHhDMEQ0LA0KKyAgICAweEMwRDUsIDB4QzBENiwgMHhDMEQ3LCAweEMwREEsIDB4QzBERSwgMHhDMERGLCAweEMwRTAsIDB4QzBFMSwNCisgICAgMHhDMEUyLCAweEMwRTMsIDB4QzBFNiwgMHhDMEU3LCAweEMwRTksIDB4QzBFQSwgMHhDMEVCLCAweEMwRUQsDQorICAgIDB4QzBFRSwgMHhDMEVGLCAweEMwRjAsIDB4QzBGMSwgMHhDMEYyLCAweEMwRjMsIDB4QzBGNiwgMHhDMEY4LA0KKyAgICAweEMwRkEsIDB4QzBGQiwgMHhDMEZDLCAweEMwRkQsIDB4QzBGRSwgMHhDMEZGLCAweEMxMDEsIDB4QzEwMiwNCisgICAgMHhDMTAzLCAweEMxMDUsIDB4QzEwNiwgMHhDMTA3LCAweEMxMDksIDB4QzEwQSwgMHhDMTBCLCAweEMxMEMsDQorICAgIDB4QzEwRCwgMHhDMTBFLCAweEMxMEYsIDB4QzExMSwgMHhDMTEyLCAweEMxMTMsIDB4QzExNCwgMHhDMTE2LA0KKyAgICAweEMxMTcsIDB4QzExOCwgMHhDMTE5LCAweEMxMUEsIDB4QzExQiwgMHhDMTIxLCAweEMxMjIsIDB4QzEyNSwNCisgICAgMHhDMTI4LCAweEMxMjksIDB4QzEyQSwgMHhDMTJCLCAweEMxMkUsIDB4QzEzMiwgMHhDMTMzLCAweEMxMzQsDQorICAgIDB4QzEzNSwgMHhDMTM3LCAweEMxM0EsIDB4QzEzQiwgMHhDMTNELCAweEMxM0UsIDB4QzEzRiwgMHhDMTQxLA0KKyAgICAweEMxNDIsIDB4QzE0MywgMHhDMTQ0LCAweEMxNDUsIDB4QzE0NiwgMHhDMTQ3LCAweEMxNEEsIDB4QzE0RSwNCisgICAgMHhDMTRGLCAweEMxNTAsIDB4QzE1MSwgMHhDMTUyLCAweEMxNTMsIDB4QzE1NiwgMHhDMTU3LCAweEMxNTksDQorICAgIDB4QzE1QSwgMHhDMTVCLCAweEMxNUQsIDB4QzE1RSwgMHhDMTVGLCAweEMxNjAsIDB4QzE2MSwgMHhDMTYyLA0KKyAgICAweEMxNjMsIDB4QzE2NiwgMHhDMTZBLCAweEMxNkIsIDB4QzE2QywgMHhDMTZELCAweEMxNkUsIDB4QzE2RiwNCisgICAgMHhDMTcxLCAweEMxNzIsIDB4QzE3MywgMHhDMTc1LCAweEMxNzYsIDB4QzE3NywgMHhDMTc5LCAweEMxN0EsDQorICAgIDB4QzE3QiwgMHhDMTdDLCAweEMxN0QsIDB4QzE3RSwgMHhDMTdGLCAweEMxODAsIDB4QzE4MSwgMHhDMTgyLA0KKyAgICAweEMxODMsIDB4QzE4NCwgMHhDMTg2LCAweEMxODcsIDB4QzE4OCwgMHhDMTg5LCAweEMxOEEsIDB4QzE4QiwNCisgICAgMHhDMThGLCAweEMxOTEsIDB4QzE5MiwgMHhDMTkzLCAweEMxOTUsIDB4QzE5NywgMHhDMTk4LCAweEMxOTksDQorICAgIDB4QzE5QSwgMHhDMTlCLCAweEMxOUUsIDB4QzFBMCwgMHhDMUEyLCAweEMxQTMsIDB4QzFBNCwgMHhDMUE2LA0KKyAgICAweEMxQTcsIDB4QzFBQSwgMHhDMUFCLCAweEMxQUQsIDB4QzFBRSwgMHhDMUFGLCAweEMxQjEsIDB4QzFCMiwNCisgICAgMHhDMUIzLCAweEMxQjQsIDB4QzFCNSwgMHhDMUI2LCAweEMxQjcsIDB4QzFCOCwgMHhDMUI5LCAweEMxQkEsDQorICAgIDB4QzFCQiwgMHhDMUJDLCAweEMxQkUsIDB4QzFCRiwgMHhDMUMwLCAweEMxQzEsIDB4QzFDMiwgMHhDMUMzLA0KKyAgICAweEMxQzUsIDB4QzFDNiwgMHhDMUM3LCAweEMxQzksIDB4QzFDQSwgMHhDMUNCLCAweEMxQ0QsIDB4QzFDRSwNCisgICAgMHhDMUNGLCAweEMxRDAsIDB4QzFEMSwgMHhDMUQyLCAweEMxRDMsIDB4QzFENSwgMHhDMUQ2LCAweEMxRDksDQorICAgIDB4QzFEQSwgMHhDMURCLCAweEMxREMsIDB4QzFERCwgMHhDMURFLCAweEMxREYsIDB4QzFFMSwgMHhDMUUyLA0KKyAgICAweEMxRTMsIDB4QzFFNSwgMHhDMUU2LCAweEMxRTcsIDB4QzFFOSwgMHhDMUVBLCAweEMxRUIsIDB4QzFFQywNCisgICAgMHhDMUVELCAweEMxRUUsIDB4QzFFRiwgMHhDMUYyLCAweEMxRjQsIDB4QzFGNSwgMHhDMUY2LCAweEMxRjcsDQorICAgIDB4QzFGOCwgMHhDMUY5LCAweEMxRkEsIDB4QzFGQiwgMHhDMUZFLCAweEMxRkYsIDB4QzIwMSwgMHhDMjAyLA0KKyAgICAweEMyMDMsIDB4QzIwNSwgMHhDMjA2LCAweEMyMDcsIDB4QzIwOCwgMHhDMjA5LCAweEMyMEEsIDB4QzIwQiwNCisgICAgMHhDMjBFLCAweEMyMTAsIDB4QzIxMiwgMHhDMjEzLCAweEMyMTQsIDB4QzIxNSwgMHhDMjE2LCAweEMyMTcsDQorICAgIDB4QzIxQSwgMHhDMjFCLCAweEMyMUQsIDB4QzIxRSwgMHhDMjIxLCAweEMyMjIsIDB4QzIyMywgMHhDMjI0LA0KKyAgICAweEMyMjUsIDB4QzIyNiwgMHhDMjI3LCAweEMyMkEsIDB4QzIyQywgMHhDMjJFLCAweEMyMzAsIDB4QzIzMywNCisgICAgMHhDMjM1LCAweEMyMzYsIDB4QzIzNywgMHhDMjM4LCAweEMyMzksIDB4QzIzQSwgMHhDMjNCLCAweEMyM0MsDQorICAgIDB4QzIzRCwgMHhDMjNFLCAweEMyM0YsIDB4QzI0MCwgMHhDMjQxLCAweEMyNDIsIDB4QzI0MywgMHhDMjQ0LA0KKyAgICAweEMyNDUsIDB4QzI0NiwgMHhDMjQ3LCAweEMyNDksIDB4QzI0QSwgMHhDMjRCLCAweEMyNEMsIDB4QzI0RCwNCisgICAgMHhDMjRFLCAweEMyNEYsIDB4QzI1MiwgMHhDMjUzLCAweEMyNTUsIDB4QzI1NiwgMHhDMjU3LCAweEMyNTksDQorICAgIDB4QzI1QSwgMHhDMjVCLCAweEMyNUMsIDB4QzI1RCwgMHhDMjVFLCAweEMyNUYsIDB4QzI2MSwgMHhDMjYyLA0KKyAgICAweEMyNjMsIDB4QzI2NCwgMHhDMjY2LCAweEMyNjcsIDB4QzI2OCwgMHhDMjY5LCAweEMyNkEsIDB4QzI2QiwNCisgICAgMHhDMjZFLCAweEMyNkYsIDB4QzI3MSwgMHhDMjcyLCAweEMyNzMsIDB4QzI3NSwgMHhDMjc2LCAweEMyNzcsDQorICAgIDB4QzI3OCwgMHhDMjc5LCAweEMyN0EsIDB4QzI3QiwgMHhDMjdFLCAweEMyODAsIDB4QzI4MiwgMHhDMjgzLA0KKyAgICAweEMyODQsIDB4QzI4NSwgMHhDMjg2LCAweEMyODcsIDB4QzI4QSwgMHhDMjhCLCAweEMyOEMsIDB4QzI4RCwNCisgICAgMHhDMjhFLCAweEMyOEYsIDB4QzI5MSwgMHhDMjkyLCAweEMyOTMsIDB4QzI5NCwgMHhDMjk1LCAweEMyOTYsDQorICAgIDB4QzI5NywgMHhDMjk5LCAweEMyOUEsIDB4QzI5QywgMHhDMjlFLCAweEMyOUYsIDB4QzJBMCwgMHhDMkExLA0KKyAgICAweEMyQTIsIDB4QzJBMywgMHhDMkE2LCAweEMyQTcsIDB4QzJBOSwgMHhDMkFBLCAweEMyQUIsIDB4QzJBRSwNCisgICAgMHhDMkFGLCAweEMyQjAsIDB4QzJCMSwgMHhDMkIyLCAweEMyQjMsIDB4QzJCNiwgMHhDMkI4LCAweEMyQkEsDQorICAgIDB4QzJCQiwgMHhDMkJDLCAweEMyQkQsIDB4QzJCRSwgMHhDMkJGLCAweEMyQzAsIDB4QzJDMSwgMHhDMkMyLA0KKyAgICAweEMyQzMsIDB4QzJDNCwgMHhDMkM1LCAweEMyQzYsIDB4QzJDNywgMHhDMkM4LCAweEMyQzksIDB4QzJDQSwNCisgICAgMHhDMkNCLCAweEMyQ0MsIDB4QzJDRCwgMHhDMkNFLCAweEMyQ0YsIDB4QzJEMCwgMHhDMkQxLCAweEMyRDIsDQorICAgIDB4QzJEMywgMHhDMkQ0LCAweEMyRDUsIDB4QzJENiwgMHhDMkQ3LCAweEMyRDgsIDB4QzJEOSwgMHhDMkRBLA0KKyAgICAweEMyREIsIDB4QzJERSwgMHhDMkRGLCAweEMyRTEsIDB4QzJFMiwgMHhDMkU1LCAweEMyRTYsIDB4QzJFNywNCisgICAgMHhDMkU4LCAweEMyRTksIDB4QzJFQSwgMHhDMkVFLCAweEMyRjAsIDB4QzJGMiwgMHhDMkYzLCAweEMyRjQsDQorICAgIDB4QzJGNSwgMHhDMkY3LCAweEMyRkEsIDB4QzJGRCwgMHhDMkZFLCAweEMyRkYsIDB4QzMwMSwgMHhDMzAyLA0KKyAgICAweEMzMDMsIDB4QzMwNCwgMHhDMzA1LCAweEMzMDYsIDB4QzMwNywgMHhDMzBBLCAweEMzMEIsIDB4QzMwRSwNCisgICAgMHhDMzBGLCAweEMzMTAsIDB4QzMxMSwgMHhDMzEyLCAweEMzMTYsIDB4QzMxNywgMHhDMzE5LCAweEMzMUEsDQorICAgIDB4QzMxQiwgMHhDMzFELCAweEMzMUUsIDB4QzMxRiwgMHhDMzIwLCAweEMzMjEsIDB4QzMyMiwgMHhDMzIzLA0KKyAgICAweEMzMjYsIDB4QzMyNywgMHhDMzJBLCAweEMzMkIsIDB4QzMyQywgMHhDMzJELCAweEMzMkUsIDB4QzMyRiwNCisgICAgMHhDMzMwLCAweEMzMzEsIDB4QzMzMiwgMHhDMzMzLCAweEMzMzQsIDB4QzMzNSwgMHhDMzM2LCAweEMzMzcsDQorICAgIDB4QzMzOCwgMHhDMzM5LCAweEMzM0EsIDB4QzMzQiwgMHhDMzNDLCAweEMzM0QsIDB4QzMzRSwgMHhDMzNGLA0KKyAgICAweEMzNDAsIDB4QzM0MSwgMHhDMzQyLCAweEMzNDMsIDB4QzM0NCwgMHhDMzQ2LCAweEMzNDcsIDB4QzM0OCwNCisgICAgMHhDMzQ5LCAweEMzNEEsIDB4QzM0QiwgMHhDMzRDLCAweEMzNEQsIDB4QzM0RSwgMHhDMzRGLCAweEMzNTAsDQorICAgIDB4QzM1MSwgMHhDMzUyLCAweEMzNTMsIDB4QzM1NCwgMHhDMzU1LCAweEMzNTYsIDB4QzM1NywgMHhDMzU4LA0KKyAgICAweEMzNTksIDB4QzM1QSwgMHhDMzVCLCAweEMzNUMsIDB4QzM1RCwgMHhDMzVFLCAweEMzNUYsIDB4QzM2MCwNCisgICAgMHhDMzYxLCAweEMzNjIsIDB4QzM2MywgMHhDMzY0LCAweEMzNjUsIDB4QzM2NiwgMHhDMzY3LCAweEMzNkEsDQorICAgIDB4QzM2QiwgMHhDMzZELCAweEMzNkUsIDB4QzM2RiwgMHhDMzcxLCAweEMzNzMsIDB4QzM3NCwgMHhDMzc1LA0KKyAgICAweEMzNzYsIDB4QzM3NywgMHhDMzdBLCAweEMzN0IsIDB4QzM3RSwgMHhDMzdGLCAweEMzODAsIDB4QzM4MSwNCisgICAgMHhDMzgyLCAweEMzODMsIDB4QzM4NSwgMHhDMzg2LCAweEMzODcsIDB4QzM4OSwgMHhDMzhBLCAweEMzOEIsDQorICAgIDB4QzM4RCwgMHhDMzhFLCAweEMzOEYsIDB4QzM5MCwgMHhDMzkxLCAweEMzOTIsIDB4QzM5MywgMHhDMzk0LA0KKyAgICAweEMzOTUsIDB4QzM5NiwgMHhDMzk3LCAweEMzOTgsIDB4QzM5OSwgMHhDMzlBLCAweEMzOUIsIDB4QzM5QywNCisgICAgMHhDMzlELCAweEMzOUUsIDB4QzM5RiwgMHhDM0EwLCAweEMzQTEsIDB4QzNBMiwgMHhDM0EzLCAweEMzQTQsDQorICAgIDB4QzNBNSwgMHhDM0E2LCAweEMzQTcsIDB4QzNBOCwgMHhDM0E5LCAweEMzQUEsIDB4QzNBQiwgMHhDM0FDLA0KKyAgICAweEMzQUQsIDB4QzNBRSwgMHhDM0FGLCAweEMzQjAsIDB4QzNCMSwgMHhDM0IyLCAweEMzQjMsIDB4QzNCNCwNCisgICAgMHhDM0I1LCAweEMzQjYsIDB4QzNCNywgMHhDM0I4LCAweEMzQjksIDB4QzNCQSwgMHhDM0JCLCAweEMzQkMsDQorICAgIDB4QzNCRCwgMHhDM0JFLCAweEMzQkYsIDB4QzNDMSwgMHhDM0MyLCAweEMzQzMsIDB4QzNDNCwgMHhDM0M1LA0KKyAgICAweEMzQzYsIDB4QzNDNywgMHhDM0M4LCAweEMzQzksIDB4QzNDQSwgMHhDM0NCLCAweEMzQ0MsIDB4QzNDRCwNCisgICAgMHhDM0NFLCAweEMzQ0YsIDB4QzNEMCwgMHhDM0QxLCAweEMzRDIsIDB4QzNEMywgMHhDM0Q0LCAweEMzRDUsDQorICAgIDB4QzNENiwgMHhDM0Q3LCAweEMzREEsIDB4QzNEQiwgMHhDM0RELCAweEMzREUsIDB4QzNFMSwgMHhDM0UzLA0KKyAgICAweEMzRTQsIDB4QzNFNSwgMHhDM0U2LCAweEMzRTcsIDB4QzNFQSwgMHhDM0VCLCAweEMzRUMsIDB4QzNFRSwNCisgICAgMHhDM0VGLCAweEMzRjAsIDB4QzNGMSwgMHhDM0YyLCAweEMzRjMsIDB4QzNGNiwgMHhDM0Y3LCAweEMzRjksDQorICAgIDB4QzNGQSwgMHhDM0ZCLCAweEMzRkMsIDB4QzNGRCwgMHhDM0ZFLCAweEMzRkYsIDB4QzQwMCwgMHhDNDAxLA0KKyAgICAweEM0MDIsIDB4QzQwMywgMHhDNDA0LCAweEM0MDUsIDB4QzQwNiwgMHhDNDA3LCAweEM0MDksIDB4QzQwQSwNCisgICAgMHhDNDBCLCAweEM0MEMsIDB4QzQwRCwgMHhDNDBFLCAweEM0MEYsIDB4QzQxMSwgMHhDNDEyLCAweEM0MTMsDQorICAgIDB4QzQxNCwgMHhDNDE1LCAweEM0MTYsIDB4QzQxNywgMHhDNDE4LCAweEM0MTksIDB4QzQxQSwgMHhDNDFCLA0KKyAgICAweEM0MUMsIDB4QzQxRCwgMHhDNDFFLCAweEM0MUYsIDB4QzQyMCwgMHhDNDIxLCAweEM0MjIsIDB4QzQyMywNCisgICAgMHhDNDI1LCAweEM0MjYsIDB4QzQyNywgMHhDNDI4LCAweEM0MjksIDB4QzQyQSwgMHhDNDJCLCAweEM0MkQsDQorICAgIDB4QzQyRSwgMHhDNDJGLCAweEM0MzEsIDB4QzQzMiwgMHhDNDMzLCAweEM0MzUsIDB4QzQzNiwgMHhDNDM3LA0KKyAgICAweEM0MzgsIDB4QzQzOSwgMHhDNDNBLCAweEM0M0IsIDB4QzQzRSwgMHhDNDNGLCAweEM0NDAsIDB4QzQ0MSwNCisgICAgMHhDNDQyLCAweEM0NDMsIDB4QzQ0NCwgMHhDNDQ1LCAweEM0NDYsIDB4QzQ0NywgMHhDNDQ5LCAweEM0NEEsDQorICAgIDB4QzQ0QiwgMHhDNDRDLCAweEM0NEQsIDB4QzQ0RSwgMHhDNDRGLCAweEM0NTAsIDB4QzQ1MSwgMHhDNDUyLA0KKyAgICAweEM0NTMsIDB4QzQ1NCwgMHhDNDU1LCAweEM0NTYsIDB4QzQ1NywgMHhDNDU4LCAweEM0NTksIDB4QzQ1QSwNCisgICAgMHhDNDVCLCAweEM0NUMsIDB4QzQ1RCwgMHhDNDVFLCAweEM0NUYsIDB4QzQ2MCwgMHhDNDYxLCAweEM0NjIsDQorICAgIDB4QzQ2MywgMHhDNDY2LCAweEM0NjcsIDB4QzQ2OSwgMHhDNDZBLCAweEM0NkIsIDB4QzQ2RCwgMHhDNDZFLA0KKyAgICAweEM0NkYsIDB4QzQ3MCwgMHhDNDcxLCAweEM0NzIsIDB4QzQ3MywgMHhDNDc2LCAweEM0NzcsIDB4QzQ3OCwNCisgICAgMHhDNDdBLCAweEM0N0IsIDB4QzQ3QywgMHhDNDdELCAweEM0N0UsIDB4QzQ3RiwgMHhDNDgxLCAweEM0ODIsDQorICAgIDB4QzQ4MywgMHhDNDg0LCAweEM0ODUsIDB4QzQ4NiwgMHhDNDg3LCAweEM0ODgsIDB4QzQ4OSwgMHhDNDhBLA0KKyAgICAweEM0OEIsIDB4QzQ4QywgMHhDNDhELCAweEM0OEUsIDB4QzQ4RiwgMHhDNDkwLCAweEM0OTEsIDB4QzQ5MiwNCisgICAgMHhDNDkzLCAweEM0OTUsIDB4QzQ5NiwgMHhDNDk3LCAweEM0OTgsIDB4QzQ5OSwgMHhDNDlBLCAweEM0OUIsDQorICAgIDB4QzQ5RCwgMHhDNDlFLCAweEM0OUYsIDB4QzRBMCwgMHhDNEExLCAweEM0QTIsIDB4QzRBMywgMHhDNEE0LA0KKyAgICAweEM0QTUsIDB4QzRBNiwgMHhDNEE3LCAweEM0QTgsIDB4QzRBOSwgMHhDNEFBLCAweEM0QUIsIDB4QzRBQywNCisgICAgMHhDNEFELCAweEM0QUUsIDB4QzRBRiwgMHhDNEIwLCAweEM0QjEsIDB4QzRCMiwgMHhDNEIzLCAweEM0QjQsDQorICAgIDB4QzRCNSwgMHhDNEI2LCAweEM0QjcsIDB4QzRCOSwgMHhDNEJBLCAweEM0QkIsIDB4QzRCRCwgMHhDNEJFLA0KKyAgICAweEM0QkYsIDB4QzRDMCwgMHhDNEMxLCAweEM0QzIsIDB4QzRDMywgMHhDNEM0LCAweEM0QzUsIDB4QzRDNiwNCisgICAgMHhDNEM3LCAweEM0QzgsIDB4QzRDOSwgMHhDNENBLCAweEM0Q0IsIDB4QzRDQywgMHhDNENELCAweEM0Q0UsDQorICAgIDB4QzRDRiwgMHhDNEQwLCAweEM0RDEsIDB4QzREMiwgMHhDNEQzLCAweEM0RDQsIDB4QzRENSwgMHhDNEQ2LA0KKyAgICAweEM0RDcsIDB4QzREOCwgMHhDNEQ5LCAweEM0REEsIDB4QzREQiwgMHhDNERDLCAweEM0REQsIDB4QzRERSwNCisgICAgMHhDNERGLCAweEM0RTAsIDB4QzRFMSwgMHhDNEUyLCAweEM0RTMsIDB4QzRFNCwgMHhDNEU1LCAweEM0RTYsDQorICAgIDB4QzRFNywgMHhDNEU4LCAweEM0RUEsIDB4QzRFQiwgMHhDNEVDLCAweEM0RUQsIDB4QzRFRSwgMHhDNEVGLA0KKyAgICAweEM0RjIsIDB4QzRGMywgMHhDNEY1LCAweEM0RjYsIDB4QzRGNywgMHhDNEY5LCAweEM0RkIsIDB4QzRGQywNCisgICAgMHhDNEZELCAweEM0RkUsIDB4QzUwMiwgMHhDNTAzLCAweEM1MDQsIDB4QzUwNSwgMHhDNTA2LCAweEM1MDcsDQorICAgIDB4QzUwOCwgMHhDNTA5LCAweEM1MEEsIDB4QzUwQiwgMHhDNTBELCAweEM1MEUsIDB4QzUwRiwgMHhDNTExLA0KKyAgICAweEM1MTIsIDB4QzUxMywgMHhDNTE1LCAweEM1MTYsIDB4QzUxNywgMHhDNTE4LCAweEM1MTksIDB4QzUxQSwNCisgICAgMHhDNTFCLCAweEM1MUQsIDB4QzUxRSwgMHhDNTFGLCAweEM1MjAsIDB4QzUyMSwgMHhDNTIyLCAweEM1MjMsDQorICAgIDB4QzUyNCwgMHhDNTI1LCAweEM1MjYsIDB4QzUyNywgMHhDNTJBLCAweEM1MkIsIDB4QzUyRCwgMHhDNTJFLA0KKyAgICAweEM1MkYsIDB4QzUzMSwgMHhDNTMyLCAweEM1MzMsIDB4QzUzNCwgMHhDNTM1LCAweEM1MzYsIDB4QzUzNywNCisgICAgMHhDNTNBLCAweEM1M0MsIDB4QzUzRSwgMHhDNTNGLCAweEM1NDAsIDB4QzU0MSwgMHhDNTQyLCAweEM1NDMsDQorICAgIDB4QzU0NiwgMHhDNTQ3LCAweEM1NEIsIDB4QzU0RiwgMHhDNTUwLCAweEM1NTEsIDB4QzU1MiwgMHhDNTU2LA0KKyAgICAweEM1NUEsIDB4QzU1QiwgMHhDNTVDLCAweEM1NUYsIDB4QzU2MiwgMHhDNTYzLCAweEM1NjUsIDB4QzU2NiwNCisgICAgMHhDNTY3LCAweEM1NjksIDB4QzU2QSwgMHhDNTZCLCAweEM1NkMsIDB4QzU2RCwgMHhDNTZFLCAweEM1NkYsDQorICAgIDB4QzU3MiwgMHhDNTc2LCAweEM1NzcsIDB4QzU3OCwgMHhDNTc5LCAweEM1N0EsIDB4QzU3QiwgMHhDNTdFLA0KKyAgICAweEM1N0YsIDB4QzU4MSwgMHhDNTgyLCAweEM1ODMsIDB4QzU4NSwgMHhDNTg2LCAweEM1ODgsIDB4QzU4OSwNCisgICAgMHhDNThBLCAweEM1OEIsIDB4QzU4RSwgMHhDNTkwLCAweEM1OTIsIDB4QzU5MywgMHhDNTk0LCAweEM1OTYsDQorICAgIDB4QzU5OSwgMHhDNTlBLCAweEM1OUIsIDB4QzU5RCwgMHhDNTlFLCAweEM1OUYsIDB4QzVBMSwgMHhDNUEyLA0KKyAgICAweEM1QTMsIDB4QzVBNCwgMHhDNUE1LCAweEM1QTYsIDB4QzVBNywgMHhDNUE4LCAweEM1QUEsIDB4QzVBQiwNCisgICAgMHhDNUFDLCAweEM1QUQsIDB4QzVBRSwgMHhDNUFGLCAweEM1QjAsIDB4QzVCMSwgMHhDNUIyLCAweEM1QjMsDQorICAgIDB4QzVCNiwgMHhDNUI3LCAweEM1QkEsIDB4QzVCRiwgMHhDNUMwLCAweEM1QzEsIDB4QzVDMiwgMHhDNUMzLA0KKyAgICAweEM1Q0IsIDB4QzVDRCwgMHhDNUNGLCAweEM1RDIsIDB4QzVEMywgMHhDNUQ1LCAweEM1RDYsIDB4QzVENywNCisgICAgMHhDNUQ5LCAweEM1REEsIDB4QzVEQiwgMHhDNURDLCAweEM1REQsIDB4QzVERSwgMHhDNURGLCAweEM1RTIsDQorICAgIDB4QzVFNCwgMHhDNUU2LCAweEM1RTcsIDB4QzVFOCwgMHhDNUU5LCAweEM1RUEsIDB4QzVFQiwgMHhDNUVGLA0KKyAgICAweEM1RjEsIDB4QzVGMiwgMHhDNUYzLCAweEM1RjUsIDB4QzVGOCwgMHhDNUY5LCAweEM1RkEsIDB4QzVGQiwNCisgICAgMHhDNjAyLCAweEM2MDMsIDB4QzYwNCwgMHhDNjA5LCAweEM2MEEsIDB4QzYwQiwgMHhDNjBELCAweEM2MEUsDQorICAgIDB4QzYwRiwgMHhDNjExLCAweEM2MTIsIDB4QzYxMywgMHhDNjE0LCAweEM2MTUsIDB4QzYxNiwgMHhDNjE3LA0KKyAgICAweEM2MUEsIDB4QzYxRCwgMHhDNjFFLCAweEM2MUYsIDB4QzYyMCwgMHhDNjIxLCAweEM2MjIsIDB4QzYyMywNCisgICAgMHhDNjI2LCAweEM2MjcsIDB4QzYyOSwgMHhDNjJBLCAweEM2MkIsIDB4QzYyRiwgMHhDNjMxLCAweEM2MzIsDQorICAgIDB4QzYzNiwgMHhDNjM4LCAweEM2M0EsIDB4QzYzQywgMHhDNjNELCAweEM2M0UsIDB4QzYzRiwgMHhDNjQyLA0KKyAgICAweEM2NDMsIDB4QzY0NSwgMHhDNjQ2LCAweEM2NDcsIDB4QzY0OSwgMHhDNjRBLCAweEM2NEIsIDB4QzY0QywNCisgICAgMHhDNjRELCAweEM2NEUsIDB4QzY0RiwgMHhDNjUyLCAweEM2NTYsIDB4QzY1NywgMHhDNjU4LCAweEM2NTksDQorICAgIDB4QzY1QSwgMHhDNjVCLCAweEM2NUUsIDB4QzY1RiwgMHhDNjYxLCAweEM2NjIsIDB4QzY2MywgMHhDNjY0LA0KKyAgICAweEM2NjUsIDB4QzY2NiwgMHhDNjY3LCAweEM2NjgsIDB4QzY2OSwgMHhDNjZBLCAweEM2NkIsIDB4QzY2RCwNCisgICAgMHhDNjZFLCAweEM2NzAsIDB4QzY3MiwgMHhDNjczLCAweEM2NzQsIDB4QzY3NSwgMHhDNjc2LCAweEM2NzcsDQorICAgIDB4QzY3QSwgMHhDNjdCLCAweEM2N0QsIDB4QzY3RSwgMHhDNjdGLCAweEM2ODEsIDB4QzY4MiwgMHhDNjgzLA0KKyAgICAweEM2ODQsIDB4QzY4NSwgMHhDNjg2LCAweEM2ODcsIDB4QzY4QSwgMHhDNjhDLCAweEM2OEUsIDB4QzY4RiwNCisgICAgMHhDNjkwLCAweEM2OTEsIDB4QzY5MiwgMHhDNjkzLCAweEM2OTYsIDB4QzY5NywgMHhDNjk5LCAweEM2OUEsDQorICAgIDB4QzY5QiwgMHhDNjlELCAweEM2OUUsIDB4QzY5RiwgMHhDNkEwLCAweEM2QTEsIDB4QzZBMiwgMHhDNkEzLA0KKyAgICAweEM2QTYsIDB4QzZBOCwgMHhDNkFBLCAweEM2QUIsIDB4QzZBQywgMHhDNkFELCAweEM2QUUsIDB4QzZBRiwNCisgICAgMHhDNkIyLCAweEM2QjMsIDB4QzZCNSwgMHhDNkI2LCAweEM2QjcsIDB4QzZCQiwgMHhDNkJDLCAweEM2QkQsDQorICAgIDB4QzZCRSwgMHhDNkJGLCAweEM2QzIsIDB4QzZDNCwgMHhDNkM2LCAweEM2QzcsIDB4QzZDOCwgMHhDNkM5LA0KKyAgICAweEM2Q0EsIDB4QzZDQiwgMHhDNkNFLCAweEM2Q0YsIDB4QzZEMSwgMHhDNkQyLCAweEM2RDMsIDB4QzZENSwNCisgICAgMHhDNkQ2LCAweEM2RDcsIDB4QzZEOCwgMHhDNkQ5LCAweEM2REEsIDB4QzZEQiwgMHhDNkRFLCAweEM2REYsDQorICAgIDB4QzZFMiwgMHhDNkUzLCAweEM2RTQsIDB4QzZFNSwgMHhDNkU2LCAweEM2RTcsIDB4QzZFQSwgMHhDNkVCLA0KKyAgICAweEM2RUQsIDB4QzZFRSwgMHhDNkVGLCAweEM2RjEsIDB4QzZGMiwgMHhDNkYzLCAweEM2RjQsIDB4QzZGNSwNCisgICAgMHhDNkY2LCAweEM2RjcsIDB4QzZGQSwgMHhDNkZCLCAweEM2RkMsIDB4QzZGRSwgMHhDNkZGLCAweEM3MDAsDQorICAgIDB4QzcwMSwgMHhDNzAyLCAweEM3MDMsIDB4QzcwNiwgMHhDNzA3LCAweEM3MDksIDB4QzcwQSwgMHhDNzBCLA0KKyAgICAweEM3MEQsIDB4QzcwRSwgMHhDNzBGLCAweEM3MTAsIDB4QzcxMSwgMHhDNzEyLCAweEM3MTMsIDB4QzcxNiwNCisgICAgMHhDNzE4LCAweEM3MUEsIDB4QzcxQiwgMHhDNzFDLCAweEM3MUQsIDB4QzcxRSwgMHhDNzFGLCAweEM3MjIsDQorICAgIDB4QzcyMywgMHhDNzI1LCAweEM3MjYsIDB4QzcyNywgMHhDNzI5LCAweEM3MkEsIDB4QzcyQiwgMHhDNzJDLA0KKyAgICAweEM3MkQsIDB4QzcyRSwgMHhDNzJGLCAweEM3MzIsIDB4QzczNCwgMHhDNzM2LCAweEM3MzgsIDB4QzczOSwNCisgICAgMHhDNzNBLCAweEM3M0IsIDB4QzczRSwgMHhDNzNGLCAweEM3NDEsIDB4Qzc0MiwgMHhDNzQzLCAweEM3NDUsDQorICAgIDB4Qzc0NiwgMHhDNzQ3LCAweEM3NDgsIDB4Qzc0OSwgMHhDNzRCLCAweEM3NEUsIDB4Qzc1MCwgMHhDNzU5LA0KKyAgICAweEM3NUEsIDB4Qzc1QiwgMHhDNzVELCAweEM3NUUsIDB4Qzc1RiwgMHhDNzYxLCAweEM3NjIsIDB4Qzc2MywNCisgICAgMHhDNzY0LCAweEM3NjUsIDB4Qzc2NiwgMHhDNzY3LCAweEM3NjksIDB4Qzc2QSwgMHhDNzZDLCAweEM3NkQsDQorICAgIDB4Qzc2RSwgMHhDNzZGLCAweEM3NzAsIDB4Qzc3MSwgMHhDNzcyLCAweEM3NzMsIDB4Qzc3NiwgMHhDNzc3LA0KKyAgICAweEM3NzksIDB4Qzc3QSwgMHhDNzdCLCAweEM3N0YsIDB4Qzc4MCwgMHhDNzgxLCAweEM3ODIsIDB4Qzc4NiwNCisgICAgMHhDNzhCLCAweEM3OEMsIDB4Qzc4RCwgMHhDNzhGLCAweEM3OTIsIDB4Qzc5MywgMHhDNzk1LCAweEM3OTksDQorICAgIDB4Qzc5QiwgMHhDNzlDLCAweEM3OUQsIDB4Qzc5RSwgMHhDNzlGLCAweEM3QTIsIDB4QzdBNywgMHhDN0E4LA0KKyAgICAweEM3QTksIDB4QzdBQSwgMHhDN0FCLCAweEM3QUUsIDB4QzdBRiwgMHhDN0IxLCAweEM3QjIsIDB4QzdCMywNCisgICAgMHhDN0I1LCAweEM3QjYsIDB4QzdCNywgMHhDN0I4LCAweEM3QjksIDB4QzdCQSwgMHhDN0JCLCAweEM3QkUsDQorICAgIDB4QzdDMiwgMHhDN0MzLCAweEM3QzQsIDB4QzdDNSwgMHhDN0M2LCAweEM3QzcsIDB4QzdDQSwgMHhDN0NCLA0KKyAgICAweEM3Q0QsIDB4QzdDRiwgMHhDN0QxLCAweEM3RDIsIDB4QzdEMywgMHhDN0Q0LCAweEM3RDUsIDB4QzdENiwNCisgICAgMHhDN0Q3LCAweEM3RDksIDB4QzdEQSwgMHhDN0RCLCAweEM3REMsIDB4QzdERSwgMHhDN0RGLCAweEM3RTAsDQorICAgIDB4QzdFMSwgMHhDN0UyLCAweEM3RTMsIDB4QzdFNSwgMHhDN0U2LCAweEM3RTcsIDB4QzdFOSwgMHhDN0VBLA0KKyAgICAweEM3RUIsIDB4QzdFRCwgMHhDN0VFLCAweEM3RUYsIDB4QzdGMCwgMHhDN0YxLCAweEM3RjIsIDB4QzdGMywNCisgICAgMHhDN0Y0LCAweEM3RjUsIDB4QzdGNiwgMHhDN0Y3LCAweEM3RjgsIDB4QzdGOSwgMHhDN0ZBLCAweEM3RkIsDQorICAgIDB4QzdGQywgMHhDN0ZELCAweEM3RkUsIDB4QzdGRiwgMHhDODAyLCAweEM4MDMsIDB4QzgwNSwgMHhDODA2LA0KKyAgICAweEM4MDcsIDB4QzgwOSwgMHhDODBCLCAweEM4MEMsIDB4QzgwRCwgMHhDODBFLCAweEM4MEYsIDB4QzgxMiwNCisgICAgMHhDODE0LCAweEM4MTcsIDB4QzgxOCwgMHhDODE5LCAweEM4MUEsIDB4QzgxQiwgMHhDODFFLCAweEM4MUYsDQorICAgIDB4QzgyMSwgMHhDODIyLCAweEM4MjMsIDB4QzgyNSwgMHhDODI2LCAweEM4MjcsIDB4QzgyOCwgMHhDODI5LA0KKyAgICAweEM4MkEsIDB4QzgyQiwgMHhDODJFLCAweEM4MzAsIDB4QzgzMiwgMHhDODMzLCAweEM4MzQsIDB4QzgzNSwNCisgICAgMHhDODM2LCAweEM4MzcsIDB4QzgzOSwgMHhDODNBLCAweEM4M0IsIDB4QzgzRCwgMHhDODNFLCAweEM4M0YsDQorICAgIDB4Qzg0MSwgMHhDODQyLCAweEM4NDMsIDB4Qzg0NCwgMHhDODQ1LCAweEM4NDYsIDB4Qzg0NywgMHhDODRBLA0KKyAgICAweEM4NEIsIDB4Qzg0RSwgMHhDODRGLCAweEM4NTAsIDB4Qzg1MSwgMHhDODUyLCAweEM4NTMsIDB4Qzg1NSwNCisgICAgMHhDODU2LCAweEM4NTcsIDB4Qzg1OCwgMHhDODU5LCAweEM4NUEsIDB4Qzg1QiwgMHhDODVDLCAweEM4NUQsDQorICAgIDB4Qzg1RSwgMHhDODVGLCAweEM4NjAsIDB4Qzg2MSwgMHhDODYyLCAweEM4NjMsIDB4Qzg2NCwgMHhDODY1LA0KKyAgICAweEM4NjYsIDB4Qzg2NywgMHhDODY4LCAweEM4NjksIDB4Qzg2QSwgMHhDODZCLCAweEM4NkMsIDB4Qzg2RCwNCisgICAgMHhDODZFLCAweEM4NkYsIDB4Qzg3MiwgMHhDODczLCAweEM4NzUsIDB4Qzg3NiwgMHhDODc3LCAweEM4NzksDQorICAgIDB4Qzg3QiwgMHhDODdDLCAweEM4N0QsIDB4Qzg3RSwgMHhDODdGLCAweEM4ODIsIDB4Qzg4NCwgMHhDODg4LA0KKyAgICAweEM4ODksIDB4Qzg4QSwgMHhDODhFLCAweEM4OEYsIDB4Qzg5MCwgMHhDODkxLCAweEM4OTIsIDB4Qzg5MywNCisgICAgMHhDODk1LCAweEM4OTYsIDB4Qzg5NywgMHhDODk4LCAweEM4OTksIDB4Qzg5QSwgMHhDODlCLCAweEM4OUMsDQorICAgIDB4Qzg5RSwgMHhDOEEwLCAweEM4QTIsIDB4QzhBMywgMHhDOEE0LCAweEM4QTUsIDB4QzhBNiwgMHhDOEE3LA0KKyAgICAweEM4QTksIDB4QzhBQSwgMHhDOEFCLCAweEM4QUMsIDB4QzhBRCwgMHhDOEFFLCAweEM4QUYsIDB4QzhCMCwNCisgICAgMHhDOEIxLCAweEM4QjIsIDB4QzhCMywgMHhDOEI0LCAweEM4QjUsIDB4QzhCNiwgMHhDOEI3LCAweEM4QjgsDQorICAgIDB4QzhCOSwgMHhDOEJBLCAweEM4QkIsIDB4QzhCRSwgMHhDOEJGLCAweEM4QzAsIDB4QzhDMSwgMHhDOEMyLA0KKyAgICAweEM4QzMsIDB4QzhDNSwgMHhDOEM2LCAweEM4QzcsIDB4QzhDOSwgMHhDOENBLCAweEM4Q0IsIDB4QzhDRCwNCisgICAgMHhDOENFLCAweEM4Q0YsIDB4QzhEMCwgMHhDOEQxLCAweEM4RDIsIDB4QzhEMywgMHhDOEQ2LCAweEM4RDgsDQorICAgIDB4QzhEQSwgMHhDOERCLCAweEM4REMsIDB4QzhERCwgMHhDOERFLCAweEM4REYsIDB4QzhFMiwgMHhDOEUzLA0KKyAgICAweEM4RTUsIDB4QzhFNiwgMHhDOEU3LCAweEM4RTgsIDB4QzhFOSwgMHhDOEVBLCAweEM4RUIsIDB4QzhFQywNCisgICAgMHhDOEVELCAweEM4RUUsIDB4QzhFRiwgMHhDOEYwLCAweEM4RjEsIDB4QzhGMiwgMHhDOEYzLCAweEM4RjQsDQorICAgIDB4QzhGNiwgMHhDOEY3LCAweEM4RjgsIDB4QzhGOSwgMHhDOEZBLCAweEM4RkIsIDB4QzhGRSwgMHhDOEZGLA0KKyAgICAweEM5MDEsIDB4QzkwMiwgMHhDOTAzLCAweEM5MDcsIDB4QzkwOCwgMHhDOTA5LCAweEM5MEEsIDB4QzkwQiwNCisgICAgMHhDOTBFLCAweEM5MTAsIDB4QzkxMiwgMHhDOTEzLCAweEM5MTQsIDB4QzkxNSwgMHhDOTE2LCAweEM5MTcsDQorICAgIDB4QzkxOSwgMHhDOTFBLCAweEM5MUIsIDB4QzkxQywgMHhDOTFELCAweEM5MUUsIDB4QzkxRiwgMHhDOTIwLA0KKyAgICAweEM5MjEsIDB4QzkyMiwgMHhDOTIzLCAweEM5MjQsIDB4QzkyNSwgMHhDOTI2LCAweEM5MjcsIDB4QzkyOCwNCisgICAgMHhDOTI5LCAweEM5MkEsIDB4QzkyQiwgMHhDOTJELCAweEM5MkUsIDB4QzkyRiwgMHhDOTMwLCAweEM5MzEsDQorICAgIDB4QzkzMiwgMHhDOTMzLCAweEM5MzUsIDB4QzkzNiwgMHhDOTM3LCAweEM5MzgsIDB4QzkzOSwgMHhDOTNBLA0KKyAgICAweEM5M0IsIDB4QzkzQywgMHhDOTNELCAweEM5M0UsIDB4QzkzRiwgMHhDOTQwLCAweEM5NDEsIDB4Qzk0MiwNCisgICAgMHhDOTQzLCAweEM5NDQsIDB4Qzk0NSwgMHhDOTQ2LCAweEM5NDcsIDB4Qzk0OCwgMHhDOTQ5LCAweEM5NEEsDQorICAgIDB4Qzk0QiwgMHhDOTRDLCAweEM5NEQsIDB4Qzk0RSwgMHhDOTRGLCAweEM5NTIsIDB4Qzk1MywgMHhDOTU1LA0KKyAgICAweEM5NTYsIDB4Qzk1NywgMHhDOTU5LCAweEM5NUEsIDB4Qzk1QiwgMHhDOTVDLCAweEM5NUQsIDB4Qzk1RSwNCisgICAgMHhDOTVGLCAweEM5NjIsIDB4Qzk2NCwgMHhDOTY1LCAweEM5NjYsIDB4Qzk2NywgMHhDOTY4LCAweEM5NjksDQorICAgIDB4Qzk2QSwgMHhDOTZCLCAweEM5NkQsIDB4Qzk2RSwgMHhDOTZGLCAweEM5NzEsIDB4Qzk3MiwgMHhDOTczLA0KKyAgICAweEM5NzUsIDB4Qzk3NiwgMHhDOTc3LCAweEM5NzgsIDB4Qzk3OSwgMHhDOTdBLCAweEM5N0IsIDB4Qzk3RCwNCisgICAgMHhDOTdFLCAweEM5N0YsIDB4Qzk4MCwgMHhDOTgxLCAweEM5ODIsIDB4Qzk4MywgMHhDOTg0LCAweEM5ODUsDQorICAgIDB4Qzk4NiwgMHhDOTg3LCAweEM5OEEsIDB4Qzk4QiwgMHhDOThELCAweEM5OEUsIDB4Qzk4RiwgMHhDOTkxLA0KKyAgICAweEM5OTIsIDB4Qzk5MywgMHhDOTk0LCAweEM5OTUsIDB4Qzk5NiwgMHhDOTk3LCAweEM5OUEsIDB4Qzk5QywNCisgICAgMHhDOTlFLCAweEM5OUYsIDB4QzlBMCwgMHhDOUExLCAweEM5QTIsIDB4QzlBMywgMHhDOUE0LCAweEM5QTUsDQorICAgIDB4QzlBNiwgMHhDOUE3LCAweEM5QTgsIDB4QzlBOSwgMHhDOUFBLCAweEM5QUIsIDB4QzlBQywgMHhDOUFELA0KKyAgICAweEM5QUUsIDB4QzlBRiwgMHhDOUIwLCAweEM5QjEsIDB4QzlCMiwgMHhDOUIzLCAweEM5QjQsIDB4QzlCNSwNCisgICAgMHhDOUI2LCAweEM5QjcsIDB4QzlCOCwgMHhDOUI5LCAweEM5QkEsIDB4QzlCQiwgMHhDOUJDLCAweEM5QkQsDQorICAgIDB4QzlCRSwgMHhDOUJGLCAweEM5QzIsIDB4QzlDMywgMHhDOUM1LCAweEM5QzYsIDB4QzlDOSwgMHhDOUNCLA0KKyAgICAweEM5Q0MsIDB4QzlDRCwgMHhDOUNFLCAweEM5Q0YsIDB4QzlEMiwgMHhDOUQ0LCAweEM5RDcsIDB4QzlEOCwNCisgICAgMHhDOURCLCAweEM5REUsIDB4QzlERiwgMHhDOUUxLCAweEM5RTMsIDB4QzlFNSwgMHhDOUU2LCAweEM5RTgsDQorICAgIDB4QzlFOSwgMHhDOUVBLCAweEM5RUIsIDB4QzlFRSwgMHhDOUYyLCAweEM5RjMsIDB4QzlGNCwgMHhDOUY1LA0KKyAgICAweEM5RjYsIDB4QzlGNywgMHhDOUZBLCAweEM5RkIsIDB4QzlGRCwgMHhDOUZFLCAweEM5RkYsIDB4Q0EwMSwNCisgICAgMHhDQTAyLCAweENBMDMsIDB4Q0EwNCwgMHhDQTA1LCAweENBMDYsIDB4Q0EwNywgMHhDQTBBLCAweENBMEUsDQorICAgIDB4Q0EwRiwgMHhDQTEwLCAweENBMTEsIDB4Q0ExMiwgMHhDQTEzLCAweENBMTUsIDB4Q0ExNiwgMHhDQTE3LA0KKyAgICAweENBMTksIDB4Q0ExQSwgMHhDQTFCLCAweENBMUMsIDB4Q0ExRCwgMHhDQTFFLCAweENBMUYsIDB4Q0EyMCwNCisgICAgMHhDQTIxLCAweENBMjIsIDB4Q0EyMywgMHhDQTI0LCAweENBMjUsIDB4Q0EyNiwgMHhDQTI3LCAweENBMjgsDQorICAgIDB4Q0EyQSwgMHhDQTJCLCAweENBMkMsIDB4Q0EyRCwgMHhDQTJFLCAweENBMkYsIDB4Q0EzMCwgMHhDQTMxLA0KKyAgICAweENBMzIsIDB4Q0EzMywgMHhDQTM0LCAweENBMzUsIDB4Q0EzNiwgMHhDQTM3LCAweENBMzgsIDB4Q0EzOSwNCisgICAgMHhDQTNBLCAweENBM0IsIDB4Q0EzQywgMHhDQTNELCAweENBM0UsIDB4Q0EzRiwgMHhDQTQwLCAweENBNDEsDQorICAgIDB4Q0E0MiwgMHhDQTQzLCAweENBNDQsIDB4Q0E0NSwgMHhDQTQ2LCAweENBNDcsIDB4Q0E0OCwgMHhDQTQ5LA0KKyAgICAweENBNEEsIDB4Q0E0QiwgMHhDQTRFLCAweENBNEYsIDB4Q0E1MSwgMHhDQTUyLCAweENBNTMsIDB4Q0E1NSwNCisgICAgMHhDQTU2LCAweENBNTcsIDB4Q0E1OCwgMHhDQTU5LCAweENBNUEsIDB4Q0E1QiwgMHhDQTVFLCAweENBNjIsDQorICAgIDB4Q0E2MywgMHhDQTY0LCAweENBNjUsIDB4Q0E2NiwgMHhDQTY3LCAweENBNjksIDB4Q0E2QSwgMHhDQTZCLA0KKyAgICAweENBNkMsIDB4Q0E2RCwgMHhDQTZFLCAweENBNkYsIDB4Q0E3MCwgMHhDQTcxLCAweENBNzIsIDB4Q0E3MywNCisgICAgMHhDQTc0LCAweENBNzUsIDB4Q0E3NiwgMHhDQTc3LCAweENBNzgsIDB4Q0E3OSwgMHhDQTdBLCAweENBN0IsDQorICAgIDB4Q0E3QywgMHhDQTdFLCAweENBN0YsIDB4Q0E4MCwgMHhDQTgxLCAweENBODIsIDB4Q0E4MywgMHhDQTg1LA0KKyAgICAweENBODYsIDB4Q0E4NywgMHhDQTg4LCAweENBODksIDB4Q0E4QSwgMHhDQThCLCAweENBOEMsIDB4Q0E4RCwNCisgICAgMHhDQThFLCAweENBOEYsIDB4Q0E5MCwgMHhDQTkxLCAweENBOTIsIDB4Q0E5MywgMHhDQTk0LCAweENBOTUsDQorICAgIDB4Q0E5NiwgMHhDQTk3LCAweENBOTksIDB4Q0E5QSwgMHhDQTlCLCAweENBOUMsIDB4Q0E5RCwgMHhDQTlFLA0KKyAgICAweENBOUYsIDB4Q0FBMCwgMHhDQUExLCAweENBQTIsIDB4Q0FBMywgMHhDQUE0LCAweENBQTUsIDB4Q0FBNiwNCisgICAgMHhDQUE3LCAweENBQTgsIDB4Q0FBOSwgMHhDQUFBLCAweENBQUIsIDB4Q0FBQywgMHhDQUFELCAweENBQUUsDQorICAgIDB4Q0FBRiwgMHhDQUIwLCAweENBQjEsIDB4Q0FCMiwgMHhDQUIzLCAweENBQjQsIDB4Q0FCNSwgMHhDQUI2LA0KKyAgICAweENBQjcsIDB4Q0FCOCwgMHhDQUI5LCAweENBQkEsIDB4Q0FCQiwgMHhDQUJFLCAweENBQkYsIDB4Q0FDMSwNCisgICAgMHhDQUMyLCAweENBQzMsIDB4Q0FDNSwgMHhDQUM2LCAweENBQzcsIDB4Q0FDOCwgMHhDQUM5LCAweENBQ0EsDQorICAgIDB4Q0FDQiwgMHhDQUNFLCAweENBRDAsIDB4Q0FEMiwgMHhDQUQ0LCAweENBRDUsIDB4Q0FENiwgMHhDQUQ3LA0KKyAgICAweENBREEsIDB4Q0FEQiwgMHhDQURDLCAweENBREQsIDB4Q0FERSwgMHhDQURGLCAweENBRTEsIDB4Q0FFMiwNCisgICAgMHhDQUUzLCAweENBRTQsIDB4Q0FFNSwgMHhDQUU2LCAweENBRTcsIDB4Q0FFOCwgMHhDQUU5LCAweENBRUEsDQorICAgIDB4Q0FFQiwgMHhDQUVELCAweENBRUUsIDB4Q0FFRiwgMHhDQUYwLCAweENBRjEsIDB4Q0FGMiwgMHhDQUYzLA0KKyAgICAweENBRjUsIDB4Q0FGNiwgMHhDQUY3LCAweENBRjgsIDB4Q0FGOSwgMHhDQUZBLCAweENBRkIsIDB4Q0FGQywNCisgICAgMHhDQUZELCAweENBRkUsIDB4Q0FGRiwgMHhDQjAwLCAweENCMDEsIDB4Q0IwMiwgMHhDQjAzLCAweENCMDQsDQorICAgIDB4Q0IwNSwgMHhDQjA2LCAweENCMDcsIDB4Q0IwOSwgMHhDQjBBLCAweENCMEIsIDB4Q0IwQywgMHhDQjBELA0KKyAgICAweENCMEUsIDB4Q0IwRiwgMHhDQjExLCAweENCMTIsIDB4Q0IxMywgMHhDQjE1LCAweENCMTYsIDB4Q0IxNywNCisgICAgMHhDQjE5LCAweENCMUEsIDB4Q0IxQiwgMHhDQjFDLCAweENCMUQsIDB4Q0IxRSwgMHhDQjFGLCAweENCMjIsDQorICAgIDB4Q0IyMywgMHhDQjI0LCAweENCMjUsIDB4Q0IyNiwgMHhDQjI3LCAweENCMjgsIDB4Q0IyOSwgMHhDQjJBLA0KKyAgICAweENCMkIsIDB4Q0IyQywgMHhDQjJELCAweENCMkUsIDB4Q0IyRiwgMHhDQjMwLCAweENCMzEsIDB4Q0IzMiwNCisgICAgMHhDQjMzLCAweENCMzQsIDB4Q0IzNSwgMHhDQjM2LCAweENCMzcsIDB4Q0IzOCwgMHhDQjM5LCAweENCM0EsDQorICAgIDB4Q0IzQiwgMHhDQjNDLCAweENCM0QsIDB4Q0IzRSwgMHhDQjNGLCAweENCNDAsIDB4Q0I0MiwgMHhDQjQzLA0KKyAgICAweENCNDQsIDB4Q0I0NSwgMHhDQjQ2LCAweENCNDcsIDB4Q0I0QSwgMHhDQjRCLCAweENCNEQsIDB4Q0I0RSwNCisgICAgMHhDQjRGLCAweENCNTEsIDB4Q0I1MiwgMHhDQjUzLCAweENCNTQsIDB4Q0I1NSwgMHhDQjU2LCAweENCNTcsDQorICAgIDB4Q0I1QSwgMHhDQjVCLCAweENCNUMsIDB4Q0I1RSwgMHhDQjVGLCAweENCNjAsIDB4Q0I2MSwgMHhDQjYyLA0KKyAgICAweENCNjMsIDB4Q0I2NSwgMHhDQjY2LCAweENCNjcsIDB4Q0I2OCwgMHhDQjY5LCAweENCNkEsIDB4Q0I2QiwNCisgICAgMHhDQjZDLCAweENCNkQsIDB4Q0I2RSwgMHhDQjZGLCAweENCNzAsIDB4Q0I3MSwgMHhDQjcyLCAweENCNzMsDQorICAgIDB4Q0I3NCwgMHhDQjc1LCAweENCNzYsIDB4Q0I3NywgMHhDQjdBLCAweENCN0IsIDB4Q0I3QywgMHhDQjdELA0KKyAgICAweENCN0UsIDB4Q0I3RiwgMHhDQjgwLCAweENCODEsIDB4Q0I4MiwgMHhDQjgzLCAweENCODQsIDB4Q0I4NSwNCisgICAgMHhDQjg2LCAweENCODcsIDB4Q0I4OCwgMHhDQjg5LCAweENCOEEsIDB4Q0I4QiwgMHhDQjhDLCAweENCOEQsDQorICAgIDB4Q0I4RSwgMHhDQjhGLCAweENCOTAsIDB4Q0I5MSwgMHhDQjkyLCAweENCOTMsIDB4Q0I5NCwgMHhDQjk1LA0KKyAgICAweENCOTYsIDB4Q0I5NywgMHhDQjk4LCAweENCOTksIDB4Q0I5QSwgMHhDQjlCLCAweENCOUQsIDB4Q0I5RSwNCisgICAgMHhDQjlGLCAweENCQTAsIDB4Q0JBMSwgMHhDQkEyLCAweENCQTMsIDB4Q0JBNCwgMHhDQkE1LCAweENCQTYsDQorICAgIDB4Q0JBNywgMHhDQkE4LCAweENCQTksIDB4Q0JBQSwgMHhDQkFCLCAweENCQUMsIDB4Q0JBRCwgMHhDQkFFLA0KKyAgICAweENCQUYsIDB4Q0JCMCwgMHhDQkIxLCAweENCQjIsIDB4Q0JCMywgMHhDQkI0LCAweENCQjUsIDB4Q0JCNiwNCisgICAgMHhDQkI3LCAweENCQjksIDB4Q0JCQSwgMHhDQkJCLCAweENCQkMsIDB4Q0JCRCwgMHhDQkJFLCAweENCQkYsDQorICAgIDB4Q0JDMCwgMHhDQkMxLCAweENCQzIsIDB4Q0JDMywgMHhDQkM0LCAweENCQzUsIDB4Q0JDNiwgMHhDQkM3LA0KKyAgICAweENCQzgsIDB4Q0JDOSwgMHhDQkNBLCAweENCQ0IsIDB4Q0JDQywgMHhDQkNELCAweENCQ0UsIDB4Q0JDRiwNCisgICAgMHhDQkQwLCAweENCRDEsIDB4Q0JEMiwgMHhDQkQzLCAweENCRDUsIDB4Q0JENiwgMHhDQkQ3LCAweENCRDgsDQorICAgIDB4Q0JEOSwgMHhDQkRBLCAweENCREIsIDB4Q0JEQywgMHhDQkRELCAweENCREUsIDB4Q0JERiwgMHhDQkUwLA0KKyAgICAweENCRTEsIDB4Q0JFMiwgMHhDQkUzLCAweENCRTUsIDB4Q0JFNiwgMHhDQkU4LCAweENCRUEsIDB4Q0JFQiwNCisgICAgMHhDQkVDLCAweENCRUQsIDB4Q0JFRSwgMHhDQkVGLCAweENCRjAsIDB4Q0JGMSwgMHhDQkYyLCAweENCRjMsDQorICAgIDB4Q0JGNCwgMHhDQkY1LCAweENCRjYsIDB4Q0JGNywgMHhDQkY4LCAweENCRjksIDB4Q0JGQSwgMHhDQkZCLA0KKyAgICAweENCRkMsIDB4Q0JGRCwgMHhDQkZFLCAweENCRkYsIDB4Q0MwMCwgMHhDQzAxLCAweENDMDIsIDB4Q0MwMywNCisgICAgMHhDQzA0LCAweENDMDUsIDB4Q0MwNiwgMHhDQzA3LCAweENDMDgsIDB4Q0MwOSwgMHhDQzBBLCAweENDMEIsDQorICAgIDB4Q0MwRSwgMHhDQzBGLCAweENDMTEsIDB4Q0MxMiwgMHhDQzEzLCAweENDMTUsIDB4Q0MxNiwgMHhDQzE3LA0KKyAgICAweENDMTgsIDB4Q0MxOSwgMHhDQzFBLCAweENDMUIsIDB4Q0MxRSwgMHhDQzFGLCAweENDMjAsIDB4Q0MyMywNCisgICAgMHhDQzI0LCAweENDMjUsIDB4Q0MyNiwgMHhDQzJBLCAweENDMkIsIDB4Q0MyRCwgMHhDQzJGLCAweENDMzEsDQorICAgIDB4Q0MzMiwgMHhDQzMzLCAweENDMzQsIDB4Q0MzNSwgMHhDQzM2LCAweENDMzcsIDB4Q0MzQSwgMHhDQzNGLA0KKyAgICAweENDNDAsIDB4Q0M0MSwgMHhDQzQyLCAweENDNDMsIDB4Q0M0NiwgMHhDQzQ3LCAweENDNDksIDB4Q0M0QSwNCisgICAgMHhDQzRCLCAweENDNEQsIDB4Q0M0RSwgMHhDQzRGLCAweENDNTAsIDB4Q0M1MSwgMHhDQzUyLCAweENDNTMsDQorICAgIDB4Q0M1NiwgMHhDQzVBLCAweENDNUIsIDB4Q0M1QywgMHhDQzVELCAweENDNUUsIDB4Q0M1RiwgMHhDQzYxLA0KKyAgICAweENDNjIsIDB4Q0M2MywgMHhDQzY1LCAweENDNjcsIDB4Q0M2OSwgMHhDQzZBLCAweENDNkIsIDB4Q0M2QywNCisgICAgMHhDQzZELCAweENDNkUsIDB4Q0M2RiwgMHhDQzcxLCAweENDNzIsIDB4Q0M3MywgMHhDQzc0LCAweENDNzYsDQorICAgIDB4Q0M3NywgMHhDQzc4LCAweENDNzksIDB4Q0M3QSwgMHhDQzdCLCAweENDN0MsIDB4Q0M3RCwgMHhDQzdFLA0KKyAgICAweENDN0YsIDB4Q0M4MCwgMHhDQzgxLCAweENDODIsIDB4Q0M4MywgMHhDQzg0LCAweENDODUsIDB4Q0M4NiwNCisgICAgMHhDQzg3LCAweENDODgsIDB4Q0M4OSwgMHhDQzhBLCAweENDOEIsIDB4Q0M4QywgMHhDQzhELCAweENDOEUsDQorICAgIDB4Q0M4RiwgMHhDQzkwLCAweENDOTEsIDB4Q0M5MiwgMHhDQzkzLCAweENDOTQsIDB4Q0M5NSwgMHhDQzk2LA0KKyAgICAweENDOTcsIDB4Q0M5QSwgMHhDQzlCLCAweENDOUQsIDB4Q0M5RSwgMHhDQzlGLCAweENDQTEsIDB4Q0NBMiwNCisgICAgMHhDQ0EzLCAweENDQTQsIDB4Q0NBNSwgMHhDQ0E2LCAweENDQTcsIDB4Q0NBQSwgMHhDQ0FFLCAweENDQUYsDQorICAgIDB4Q0NCMCwgMHhDQ0IxLCAweENDQjIsIDB4Q0NCMywgMHhDQ0I2LCAweENDQjcsIDB4Q0NCOSwgMHhDQ0JBLA0KKyAgICAweENDQkIsIDB4Q0NCRCwgMHhDQ0JFLCAweENDQkYsIDB4Q0NDMCwgMHhDQ0MxLCAweENDQzIsIDB4Q0NDMywNCisgICAgMHhDQ0M2LCAweENDQzgsIDB4Q0NDQSwgMHhDQ0NCLCAweENDQ0MsIDB4Q0NDRCwgMHhDQ0NFLCAweENDQ0YsDQorICAgIDB4Q0NEMSwgMHhDQ0QyLCAweENDRDMsIDB4Q0NENSwgMHhDQ0Q2LCAweENDRDcsIDB4Q0NEOCwgMHhDQ0Q5LA0KKyAgICAweENDREEsIDB4Q0NEQiwgMHhDQ0RDLCAweENDREQsIDB4Q0NERSwgMHhDQ0RGLCAweENDRTAsIDB4Q0NFMSwNCisgICAgMHhDQ0UyLCAweENDRTMsIDB4Q0NFNSwgMHhDQ0U2LCAweENDRTcsIDB4Q0NFOCwgMHhDQ0U5LCAweENDRUEsDQorICAgIDB4Q0NFQiwgMHhDQ0VELCAweENDRUUsIDB4Q0NFRiwgMHhDQ0YxLCAweENDRjIsIDB4Q0NGMywgMHhDQ0Y0LA0KKyAgICAweENDRjUsIDB4Q0NGNiwgMHhDQ0Y3LCAweENDRjgsIDB4Q0NGOSwgMHhDQ0ZBLCAweENDRkIsIDB4Q0NGQywNCisgICAgMHhDQ0ZELCAweENDRkUsIDB4Q0NGRiwgMHhDRDAwLCAweENEMDIsIDB4Q0QwMywgMHhDRDA0LCAweENEMDUsDQorICAgIDB4Q0QwNiwgMHhDRDA3LCAweENEMEEsIDB4Q0QwQiwgMHhDRDBELCAweENEMEUsIDB4Q0QwRiwgMHhDRDExLA0KKyAgICAweENEMTIsIDB4Q0QxMywgMHhDRDE0LCAweENEMTUsIDB4Q0QxNiwgMHhDRDE3LCAweENEMUEsIDB4Q0QxQywNCisgICAgMHhDRDFFLCAweENEMUYsIDB4Q0QyMCwgMHhDRDIxLCAweENEMjIsIDB4Q0QyMywgMHhDRDI1LCAweENEMjYsDQorICAgIDB4Q0QyNywgMHhDRDI5LCAweENEMkEsIDB4Q0QyQiwgMHhDRDJELCAweENEMkUsIDB4Q0QyRiwgMHhDRDMwLA0KKyAgICAweENEMzEsIDB4Q0QzMiwgMHhDRDMzLCAweENEMzQsIDB4Q0QzNSwgMHhDRDM2LCAweENEMzcsIDB4Q0QzOCwNCisgICAgMHhDRDNBLCAweENEM0IsIDB4Q0QzQywgMHhDRDNELCAweENEM0UsIDB4Q0QzRiwgMHhDRDQwLCAweENENDEsDQorICAgIDB4Q0Q0MiwgMHhDRDQzLCAweENENDQsIDB4Q0Q0NSwgMHhDRDQ2LCAweENENDcsIDB4Q0Q0OCwgMHhDRDQ5LA0KKyAgICAweENENEEsIDB4Q0Q0QiwgMHhDRDRDLCAweENENEQsIDB4Q0Q0RSwgMHhDRDRGLCAweENENTAsIDB4Q0Q1MSwNCisgICAgMHhDRDUyLCAweENENTMsIDB4Q0Q1NCwgMHhDRDU1LCAweENENTYsIDB4Q0Q1NywgMHhDRDU4LCAweENENTksDQorICAgIDB4Q0Q1QSwgMHhDRDVCLCAweENENUQsIDB4Q0Q1RSwgMHhDRDVGLCAweENENjEsIDB4Q0Q2MiwgMHhDRDYzLA0KKyAgICAweENENjUsIDB4Q0Q2NiwgMHhDRDY3LCAweENENjgsIDB4Q0Q2OSwgMHhDRDZBLCAweENENkIsIDB4Q0Q2RSwNCisgICAgMHhDRDcwLCAweENENzIsIDB4Q0Q3MywgMHhDRDc0LCAweENENzUsIDB4Q0Q3NiwgMHhDRDc3LCAweENENzksDQorICAgIDB4Q0Q3QSwgMHhDRDdCLCAweENEN0MsIDB4Q0Q3RCwgMHhDRDdFLCAweENEN0YsIDB4Q0Q4MCwgMHhDRDgxLA0KKyAgICAweENEODIsIDB4Q0Q4MywgMHhDRDg0LCAweENEODUsIDB4Q0Q4NiwgMHhDRDg3LCAweENEODksIDB4Q0Q4QSwNCisgICAgMHhDRDhCLCAweENEOEMsIDB4Q0Q4RCwgMHhDRDhFLCAweENEOEYsIDB4Q0Q5MCwgMHhDRDkxLCAweENEOTIsDQorICAgIDB4Q0Q5MywgMHhDRDk2LCAweENEOTcsIDB4Q0Q5OSwgMHhDRDlBLCAweENEOUIsIDB4Q0Q5RCwgMHhDRDlFLA0KKyAgICAweENEOUYsIDB4Q0RBMCwgMHhDREExLCAweENEQTIsIDB4Q0RBMywgMHhDREE2LCAweENEQTgsIDB4Q0RBQSwNCisgICAgMHhDREFCLCAweENEQUMsIDB4Q0RBRCwgMHhDREFFLCAweENEQUYsIDB4Q0RCMSwgMHhDREIyLCAweENEQjMsDQorICAgIDB4Q0RCNCwgMHhDREI1LCAweENEQjYsIDB4Q0RCNywgMHhDREI4LCAweENEQjksIDB4Q0RCQSwgMHhDREJCLA0KKyAgICAweENEQkMsIDB4Q0RCRCwgMHhDREJFLCAweENEQkYsIDB4Q0RDMCwgMHhDREMxLCAweENEQzIsIDB4Q0RDMywNCisgICAgMHhDREM1LCAweENEQzYsIDB4Q0RDNywgMHhDREM4LCAweENEQzksIDB4Q0RDQSwgMHhDRENCLCAweENEQ0QsDQorICAgIDB4Q0RDRSwgMHhDRENGLCAweENERDEsIDB4Q0REMiwgMHhDREQzLCAweENERDQsIDB4Q0RENSwgMHhDREQ2LA0KKyAgICAweENERDcsIDB4Q0REOCwgMHhDREQ5LCAweENEREEsIDB4Q0REQiwgMHhDRERDLCAweENEREQsIDB4Q0RERSwNCisgICAgMHhDRERGLCAweENERTAsIDB4Q0RFMSwgMHhDREUyLCAweENERTMsIDB4Q0RFNCwgMHhDREU1LCAweENERTYsDQorICAgIDB4Q0RFNywgMHhDREU5LCAweENERUEsIDB4Q0RFQiwgMHhDREVELCAweENERUUsIDB4Q0RFRiwgMHhDREYxLA0KKyAgICAweENERjIsIDB4Q0RGMywgMHhDREY0LCAweENERjUsIDB4Q0RGNiwgMHhDREY3LCAweENERkEsIDB4Q0RGQywNCisgICAgMHhDREZFLCAweENERkYsIDB4Q0UwMCwgMHhDRTAxLCAweENFMDIsIDB4Q0UwMywgMHhDRTA1LCAweENFMDYsDQorICAgIDB4Q0UwNywgMHhDRTA5LCAweENFMEEsIDB4Q0UwQiwgMHhDRTBELCAweENFMEUsIDB4Q0UwRiwgMHhDRTEwLA0KKyAgICAweENFMTEsIDB4Q0UxMiwgMHhDRTEzLCAweENFMTUsIDB4Q0UxNiwgMHhDRTE3LCAweENFMTgsIDB4Q0UxQSwNCisgICAgMHhDRTFCLCAweENFMUMsIDB4Q0UxRCwgMHhDRTFFLCAweENFMUYsIDB4Q0UyMiwgMHhDRTIzLCAweENFMjUsDQorICAgIDB4Q0UyNiwgMHhDRTI3LCAweENFMjksIDB4Q0UyQSwgMHhDRTJCLCAweENFMkMsIDB4Q0UyRCwgMHhDRTJFLA0KKyAgICAweENFMkYsIDB4Q0UzMiwgMHhDRTM0LCAweENFMzYsIDB4Q0UzNywgMHhDRTM4LCAweENFMzksIDB4Q0UzQSwNCisgICAgMHhDRTNCLCAweENFM0MsIDB4Q0UzRCwgMHhDRTNFLCAweENFM0YsIDB4Q0U0MCwgMHhDRTQxLCAweENFNDIsDQorICAgIDB4Q0U0MywgMHhDRTQ0LCAweENFNDUsIDB4Q0U0NiwgMHhDRTQ3LCAweENFNDgsIDB4Q0U0OSwgMHhDRTRBLA0KKyAgICAweENFNEIsIDB4Q0U0QywgMHhDRTRELCAweENFNEUsIDB4Q0U0RiwgMHhDRTUwLCAweENFNTEsIDB4Q0U1MiwNCisgICAgMHhDRTUzLCAweENFNTQsIDB4Q0U1NSwgMHhDRTU2LCAweENFNTcsIDB4Q0U1QSwgMHhDRTVCLCAweENFNUQsDQorICAgIDB4Q0U1RSwgMHhDRTYyLCAweENFNjMsIDB4Q0U2NCwgMHhDRTY1LCAweENFNjYsIDB4Q0U2NywgMHhDRTZBLA0KKyAgICAweENFNkMsIDB4Q0U2RSwgMHhDRTZGLCAweENFNzAsIDB4Q0U3MSwgMHhDRTcyLCAweENFNzMsIDB4Q0U3NiwNCisgICAgMHhDRTc3LCAweENFNzksIDB4Q0U3QSwgMHhDRTdCLCAweENFN0QsIDB4Q0U3RSwgMHhDRTdGLCAweENFODAsDQorICAgIDB4Q0U4MSwgMHhDRTgyLCAweENFODMsIDB4Q0U4NiwgMHhDRTg4LCAweENFOEEsIDB4Q0U4QiwgMHhDRThDLA0KKyAgICAweENFOEQsIDB4Q0U4RSwgMHhDRThGLCAweENFOTIsIDB4Q0U5MywgMHhDRTk1LCAweENFOTYsIDB4Q0U5NywNCisgICAgMHhDRTk5LCAweENFOUEsIDB4Q0U5QiwgMHhDRTlDLCAweENFOUQsIDB4Q0U5RSwgMHhDRTlGLCAweENFQTIsDQorICAgIDB4Q0VBNiwgMHhDRUE3LCAweENFQTgsIDB4Q0VBOSwgMHhDRUFBLCAweENFQUIsIDB4Q0VBRSwgMHhDRUFGLA0KKyAgICAweENFQjAsIDB4Q0VCMSwgMHhDRUIyLCAweENFQjMsIDB4Q0VCNCwgMHhDRUI1LCAweENFQjYsIDB4Q0VCNywNCisgICAgMHhDRUI4LCAweENFQjksIDB4Q0VCQSwgMHhDRUJCLCAweENFQkMsIDB4Q0VCRCwgMHhDRUJFLCAweENFQkYsDQorICAgIDB4Q0VDMCwgMHhDRUMyLCAweENFQzMsIDB4Q0VDNCwgMHhDRUM1LCAweENFQzYsIDB4Q0VDNywgMHhDRUM4LA0KKyAgICAweENFQzksIDB4Q0VDQSwgMHhDRUNCLCAweENFQ0MsIDB4Q0VDRCwgMHhDRUNFLCAweENFQ0YsIDB4Q0VEMCwNCisgICAgMHhDRUQxLCAweENFRDIsIDB4Q0VEMywgMHhDRUQ0LCAweENFRDUsIDB4Q0VENiwgMHhDRUQ3LCAweENFRDgsDQorICAgIDB4Q0VEOSwgMHhDRURBLCAweENFREIsIDB4Q0VEQywgMHhDRURELCAweENFREUsIDB4Q0VERiwgMHhDRUUwLA0KKyAgICAweENFRTEsIDB4Q0VFMiwgMHhDRUUzLCAweENFRTYsIDB4Q0VFNywgMHhDRUU5LCAweENFRUEsIDB4Q0VFRCwNCisgICAgMHhDRUVFLCAweENFRUYsIDB4Q0VGMCwgMHhDRUYxLCAweENFRjIsIDB4Q0VGMywgMHhDRUY2LCAweENFRkEsDQorICAgIDB4Q0VGQiwgMHhDRUZDLCAweENFRkQsIDB4Q0VGRSwgMHhDRUZGLCAweENGMDIsIDB4Q0YwMywgMHhDRjA1LA0KKyAgICAweENGMDYsIDB4Q0YwNywgMHhDRjA5LCAweENGMEEsIDB4Q0YwQiwgMHhDRjBDLCAweENGMEQsIDB4Q0YwRSwNCisgICAgMHhDRjBGLCAweENGMTIsIDB4Q0YxNCwgMHhDRjE2LCAweENGMTcsIDB4Q0YxOCwgMHhDRjE5LCAweENGMUEsDQorICAgIDB4Q0YxQiwgMHhDRjFELCAweENGMUUsIDB4Q0YxRiwgMHhDRjIxLCAweENGMjIsIDB4Q0YyMywgMHhDRjI1LA0KKyAgICAweENGMjYsIDB4Q0YyNywgMHhDRjI4LCAweENGMjksIDB4Q0YyQSwgMHhDRjJCLCAweENGMkUsIDB4Q0YzMiwNCisgICAgMHhDRjMzLCAweENGMzQsIDB4Q0YzNSwgMHhDRjM2LCAweENGMzcsIDB4Q0YzOSwgMHhDRjNBLCAweENGM0IsDQorICAgIDB4Q0YzQywgMHhDRjNELCAweENGM0UsIDB4Q0YzRiwgMHhDRjQwLCAweENGNDEsIDB4Q0Y0MiwgMHhDRjQzLA0KKyAgICAweENGNDQsIDB4Q0Y0NSwgMHhDRjQ2LCAweENGNDcsIDB4Q0Y0OCwgMHhDRjQ5LCAweENGNEEsIDB4Q0Y0QiwNCisgICAgMHhDRjRDLCAweENGNEQsIDB4Q0Y0RSwgMHhDRjRGLCAweENGNTAsIDB4Q0Y1MSwgMHhDRjUyLCAweENGNTMsDQorICAgIDB4Q0Y1NiwgMHhDRjU3LCAweENGNTksIDB4Q0Y1QSwgMHhDRjVCLCAweENGNUQsIDB4Q0Y1RSwgMHhDRjVGLA0KKyAgICAweENGNjAsIDB4Q0Y2MSwgMHhDRjYyLCAweENGNjMsIDB4Q0Y2NiwgMHhDRjY4LCAweENGNkEsIDB4Q0Y2QiwNCisgICAgMHhDRjZDLCAweENGNkQsIDB4Q0Y2RSwgMHhDRjZGLCAweENGNzIsIDB4Q0Y3MywgMHhDRjc1LCAweENGNzYsDQorICAgIDB4Q0Y3NywgMHhDRjc5LCAweENGN0EsIDB4Q0Y3QiwgMHhDRjdDLCAweENGN0QsIDB4Q0Y3RSwgMHhDRjdGLA0KKyAgICAweENGODEsIDB4Q0Y4MiwgMHhDRjgzLCAweENGODQsIDB4Q0Y4NiwgMHhDRjg3LCAweENGODgsIDB4Q0Y4OSwNCisgICAgMHhDRjhBLCAweENGOEIsIDB4Q0Y4RCwgMHhDRjhFLCAweENGOEYsIDB4Q0Y5MCwgMHhDRjkxLCAweENGOTIsDQorICAgIDB4Q0Y5MywgMHhDRjk0LCAweENGOTUsIDB4Q0Y5NiwgMHhDRjk3LCAweENGOTgsIDB4Q0Y5OSwgMHhDRjlBLA0KKyAgICAweENGOUIsIDB4Q0Y5QywgMHhDRjlELCAweENGOUUsIDB4Q0Y5RiwgMHhDRkEwLCAweENGQTIsIDB4Q0ZBMywNCisgICAgMHhDRkE0LCAweENGQTUsIDB4Q0ZBNiwgMHhDRkE3LCAweENGQTksIDB4Q0ZBQSwgMHhDRkFCLCAweENGQUMsDQorICAgIDB4Q0ZBRCwgMHhDRkFFLCAweENGQUYsIDB4Q0ZCMSwgMHhDRkIyLCAweENGQjMsIDB4Q0ZCNCwgMHhDRkI1LA0KKyAgICAweENGQjYsIDB4Q0ZCNywgMHhDRkI4LCAweENGQjksIDB4Q0ZCQSwgMHhDRkJCLCAweENGQkMsIDB4Q0ZCRCwNCisgICAgMHhDRkJFLCAweENGQkYsIDB4Q0ZDMCwgMHhDRkMxLCAweENGQzIsIDB4Q0ZDMywgMHhDRkM1LCAweENGQzYsDQorICAgIDB4Q0ZDNywgMHhDRkM4LCAweENGQzksIDB4Q0ZDQSwgMHhDRkNCLCAweENGQ0MsIDB4Q0ZDRCwgMHhDRkNFLA0KKyAgICAweENGQ0YsIDB4Q0ZEMCwgMHhDRkQxLCAweENGRDIsIDB4Q0ZEMywgMHhDRkQ0LCAweENGRDUsIDB4Q0ZENiwNCisgICAgMHhDRkQ3LCAweENGRDgsIDB4Q0ZEOSwgMHhDRkRBLCAweENGREIsIDB4Q0ZEQywgMHhDRkRELCAweENGREUsDQorICAgIDB4Q0ZERiwgMHhDRkUyLCAweENGRTMsIDB4Q0ZFNSwgMHhDRkU2LCAweENGRTcsIDB4Q0ZFOSwgMHhDRkVBLA0KKyAgICAweENGRUIsIDB4Q0ZFQywgMHhDRkVELCAweENGRUUsIDB4Q0ZFRiwgMHhDRkYyLCAweENGRjQsIDB4Q0ZGNiwNCisgICAgMHhDRkY3LCAweENGRjgsIDB4Q0ZGOSwgMHhDRkZBLCAweENGRkIsIDB4Q0ZGRCwgMHhDRkZFLCAweENGRkYsDQorICAgIDB4RDAwMSwgMHhEMDAyLCAweEQwMDMsIDB4RDAwNSwgMHhEMDA2LCAweEQwMDcsIDB4RDAwOCwgMHhEMDA5LA0KKyAgICAweEQwMEEsIDB4RDAwQiwgMHhEMDBDLCAweEQwMEQsIDB4RDAwRSwgMHhEMDBGLCAweEQwMTAsIDB4RDAxMiwNCisgICAgMHhEMDEzLCAweEQwMTQsIDB4RDAxNSwgMHhEMDE2LCAweEQwMTcsIDB4RDAxOSwgMHhEMDFBLCAweEQwMUIsDQorICAgIDB4RDAxQywgMHhEMDFELCAweEQwMUUsIDB4RDAxRiwgMHhEMDIwLCAweEQwMjEsIDB4RDAyMiwgMHhEMDIzLA0KKyAgICAweEQwMjQsIDB4RDAyNSwgMHhEMDI2LCAweEQwMjcsIDB4RDAyOCwgMHhEMDI5LCAweEQwMkEsIDB4RDAyQiwNCisgICAgMHhEMDJDLCAweEQwMkUsIDB4RDAyRiwgMHhEMDMwLCAweEQwMzEsIDB4RDAzMiwgMHhEMDMzLCAweEQwMzYsDQorICAgIDB4RDAzNywgMHhEMDM5LCAweEQwM0EsIDB4RDAzQiwgMHhEMDNELCAweEQwM0UsIDB4RDAzRiwgMHhEMDQwLA0KKyAgICAweEQwNDEsIDB4RDA0MiwgMHhEMDQzLCAweEQwNDYsIDB4RDA0OCwgMHhEMDRBLCAweEQwNEIsIDB4RDA0QywNCisgICAgMHhEMDRELCAweEQwNEUsIDB4RDA0RiwgMHhEMDUxLCAweEQwNTIsIDB4RDA1MywgMHhEMDU1LCAweEQwNTYsDQorICAgIDB4RDA1NywgMHhEMDU5LCAweEQwNUEsIDB4RDA1QiwgMHhEMDVDLCAweEQwNUQsIDB4RDA1RSwgMHhEMDVGLA0KKyAgICAweEQwNjEsIDB4RDA2MiwgMHhEMDYzLCAweEQwNjQsIDB4RDA2NSwgMHhEMDY2LCAweEQwNjcsIDB4RDA2OCwNCisgICAgMHhEMDY5LCAweEQwNkEsIDB4RDA2QiwgMHhEMDZFLCAweEQwNkYsIDB4RDA3MSwgMHhEMDcyLCAweEQwNzMsDQorICAgIDB4RDA3NSwgMHhEMDc2LCAweEQwNzcsIDB4RDA3OCwgMHhEMDc5LCAweEQwN0EsIDB4RDA3QiwgMHhEMDdFLA0KKyAgICAweEQwN0YsIDB4RDA4MCwgMHhEMDgyLCAweEQwODMsIDB4RDA4NCwgMHhEMDg1LCAweEQwODYsIDB4RDA4NywNCisgICAgMHhEMDg4LCAweEQwODksIDB4RDA4QSwgMHhEMDhCLCAweEQwOEMsIDB4RDA4RCwgMHhEMDhFLCAweEQwOEYsDQorICAgIDB4RDA5MCwgMHhEMDkxLCAweEQwOTIsIDB4RDA5MywgMHhEMDk0LCAweEQwOTUsIDB4RDA5NiwgMHhEMDk3LA0KKyAgICAweEQwOTgsIDB4RDA5OSwgMHhEMDlBLCAweEQwOUIsIDB4RDA5QywgMHhEMDlELCAweEQwOUUsIDB4RDA5RiwNCisgICAgMHhEMEEwLCAweEQwQTEsIDB4RDBBMiwgMHhEMEEzLCAweEQwQTYsIDB4RDBBNywgMHhEMEE5LCAweEQwQUEsDQorICAgIDB4RDBBQiwgMHhEMEFELCAweEQwQUUsIDB4RDBBRiwgMHhEMEIwLCAweEQwQjEsIDB4RDBCMiwgMHhEMEIzLA0KKyAgICAweEQwQjYsIDB4RDBCOCwgMHhEMEJBLCAweEQwQkIsIDB4RDBCQywgMHhEMEJELCAweEQwQkUsIDB4RDBCRiwNCisgICAgMHhEMEMyLCAweEQwQzMsIDB4RDBDNSwgMHhEMEM2LCAweEQwQzcsIDB4RDBDQSwgMHhEMENCLCAweEQwQ0MsDQorICAgIDB4RDBDRCwgMHhEMENFLCAweEQwQ0YsIDB4RDBEMiwgMHhEMEQ2LCAweEQwRDcsIDB4RDBEOCwgMHhEMEQ5LA0KKyAgICAweEQwREEsIDB4RDBEQiwgMHhEMERFLCAweEQwREYsIDB4RDBFMSwgMHhEMEUyLCAweEQwRTMsIDB4RDBFNSwNCisgICAgMHhEMEU2LCAweEQwRTcsIDB4RDBFOCwgMHhEMEU5LCAweEQwRUEsIDB4RDBFQiwgMHhEMEVFLCAweEQwRjIsDQorICAgIDB4RDBGMywgMHhEMEY0LCAweEQwRjUsIDB4RDBGNiwgMHhEMEY3LCAweEQwRjksIDB4RDBGQSwgMHhEMEZCLA0KKyAgICAweEQwRkMsIDB4RDBGRCwgMHhEMEZFLCAweEQwRkYsIDB4RDEwMCwgMHhEMTAxLCAweEQxMDIsIDB4RDEwMywNCisgICAgMHhEMTA0LCAweEQxMDUsIDB4RDEwNiwgMHhEMTA3LCAweEQxMDgsIDB4RDEwOSwgMHhEMTBBLCAweEQxMEIsDQorICAgIDB4RDEwQywgMHhEMTBFLCAweEQxMEYsIDB4RDExMCwgMHhEMTExLCAweEQxMTIsIDB4RDExMywgMHhEMTE0LA0KKyAgICAweEQxMTUsIDB4RDExNiwgMHhEMTE3LCAweEQxMTgsIDB4RDExOSwgMHhEMTFBLCAweEQxMUIsIDB4RDExQywNCisgICAgMHhEMTFELCAweEQxMUUsIDB4RDExRiwgMHhEMTIwLCAweEQxMjEsIDB4RDEyMiwgMHhEMTIzLCAweEQxMjQsDQorICAgIDB4RDEyNSwgMHhEMTI2LCAweEQxMjcsIDB4RDEyOCwgMHhEMTI5LCAweEQxMkEsIDB4RDEyQiwgMHhEMTJDLA0KKyAgICAweEQxMkQsIDB4RDEyRSwgMHhEMTJGLCAweEQxMzIsIDB4RDEzMywgMHhEMTM1LCAweEQxMzYsIDB4RDEzNywNCisgICAgMHhEMTM5LCAweEQxM0IsIDB4RDEzQywgMHhEMTNELCAweEQxM0UsIDB4RDEzRiwgMHhEMTQyLCAweEQxNDYsDQorICAgIDB4RDE0NywgMHhEMTQ4LCAweEQxNDksIDB4RDE0QSwgMHhEMTRCLCAweEQxNEUsIDB4RDE0RiwgMHhEMTUxLA0KKyAgICAweEQxNTIsIDB4RDE1MywgMHhEMTU1LCAweEQxNTYsIDB4RDE1NywgMHhEMTU4LCAweEQxNTksIDB4RDE1QSwNCisgICAgMHhEMTVCLCAweEQxNUUsIDB4RDE2MCwgMHhEMTYyLCAweEQxNjMsIDB4RDE2NCwgMHhEMTY1LCAweEQxNjYsDQorICAgIDB4RDE2NywgMHhEMTY5LCAweEQxNkEsIDB4RDE2QiwgMHhEMTZELCAweEQxNkUsIDB4RDE2RiwgMHhEMTcwLA0KKyAgICAweEQxNzEsIDB4RDE3MiwgMHhEMTczLCAweEQxNzQsIDB4RDE3NSwgMHhEMTc2LCAweEQxNzcsIDB4RDE3OCwNCisgICAgMHhEMTc5LCAweEQxN0EsIDB4RDE3QiwgMHhEMTdELCAweEQxN0UsIDB4RDE3RiwgMHhEMTgwLCAweEQxODEsDQorICAgIDB4RDE4MiwgMHhEMTgzLCAweEQxODUsIDB4RDE4NiwgMHhEMTg3LCAweEQxODksIDB4RDE4QSwgMHhEMThCLA0KKyAgICAweEQxOEMsIDB4RDE4RCwgMHhEMThFLCAweEQxOEYsIDB4RDE5MCwgMHhEMTkxLCAweEQxOTIsIDB4RDE5MywNCisgICAgMHhEMTk0LCAweEQxOTUsIDB4RDE5NiwgMHhEMTk3LCAweEQxOTgsIDB4RDE5OSwgMHhEMTlBLCAweEQxOUIsDQorICAgIDB4RDE5QywgMHhEMTlELCAweEQxOUUsIDB4RDE5RiwgMHhEMUEyLCAweEQxQTMsIDB4RDFBNSwgMHhEMUE2LA0KKyAgICAweEQxQTcsIDB4RDFBOSwgMHhEMUFBLCAweEQxQUIsIDB4RDFBQywgMHhEMUFELCAweEQxQUUsIDB4RDFBRiwNCisgICAgMHhEMUIyLCAweEQxQjQsIDB4RDFCNiwgMHhEMUI3LCAweEQxQjgsIDB4RDFCOSwgMHhEMUJCLCAweEQxQkQsDQorICAgIDB4RDFCRSwgMHhEMUJGLCAweEQxQzEsIDB4RDFDMiwgMHhEMUMzLCAweEQxQzQsIDB4RDFDNSwgMHhEMUM2LA0KKyAgICAweEQxQzcsIDB4RDFDOCwgMHhEMUM5LCAweEQxQ0EsIDB4RDFDQiwgMHhEMUNDLCAweEQxQ0QsIDB4RDFDRSwNCisgICAgMHhEMUNGLCAweEQxRDAsIDB4RDFEMSwgMHhEMUQyLCAweEQxRDMsIDB4RDFENCwgMHhEMUQ1LCAweEQxRDYsDQorICAgIDB4RDFENywgMHhEMUQ5LCAweEQxREEsIDB4RDFEQiwgMHhEMURDLCAweEQxREQsIDB4RDFERSwgMHhEMURGLA0KKyAgICAweEQxRTAsIDB4RDFFMSwgMHhEMUUyLCAweEQxRTMsIDB4RDFFNCwgMHhEMUU1LCAweEQxRTYsIDB4RDFFNywNCisgICAgMHhEMUU4LCAweEQxRTksIDB4RDFFQSwgMHhEMUVCLCAweEQxRUMsIDB4RDFFRCwgMHhEMUVFLCAweEQxRUYsDQorICAgIDB4RDFGMCwgMHhEMUYxLCAweEQxRjIsIDB4RDFGMywgMHhEMUY1LCAweEQxRjYsIDB4RDFGNywgMHhEMUY5LA0KKyAgICAweEQxRkEsIDB4RDFGQiwgMHhEMUZDLCAweEQxRkQsIDB4RDFGRSwgMHhEMUZGLCAweEQyMDAsIDB4RDIwMSwNCisgICAgMHhEMjAyLCAweEQyMDMsIDB4RDIwNCwgMHhEMjA1LCAweEQyMDYsIDB4RDIwOCwgMHhEMjBBLCAweEQyMEIsDQorICAgIDB4RDIwQywgMHhEMjBELCAweEQyMEUsIDB4RDIwRiwgMHhEMjExLCAweEQyMTIsIDB4RDIxMywgMHhEMjE0LA0KKyAgICAweEQyMTUsIDB4RDIxNiwgMHhEMjE3LCAweEQyMTgsIDB4RDIxOSwgMHhEMjFBLCAweEQyMUIsIDB4RDIxQywNCisgICAgMHhEMjFELCAweEQyMUUsIDB4RDIxRiwgMHhEMjIwLCAweEQyMjEsIDB4RDIyMiwgMHhEMjIzLCAweEQyMjQsDQorICAgIDB4RDIyNSwgMHhEMjI2LCAweEQyMjcsIDB4RDIyOCwgMHhEMjI5LCAweEQyMkEsIDB4RDIyQiwgMHhEMjJFLA0KKyAgICAweEQyMkYsIDB4RDIzMSwgMHhEMjMyLCAweEQyMzMsIDB4RDIzNSwgMHhEMjM2LCAweEQyMzcsIDB4RDIzOCwNCisgICAgMHhEMjM5LCAweEQyM0EsIDB4RDIzQiwgMHhEMjNFLCAweEQyNDAsIDB4RDI0MiwgMHhEMjQzLCAweEQyNDQsDQorICAgIDB4RDI0NSwgMHhEMjQ2LCAweEQyNDcsIDB4RDI0OSwgMHhEMjRBLCAweEQyNEIsIDB4RDI0QywgMHhEMjRELA0KKyAgICAweEQyNEUsIDB4RDI0RiwgMHhEMjUwLCAweEQyNTEsIDB4RDI1MiwgMHhEMjUzLCAweEQyNTQsIDB4RDI1NSwNCisgICAgMHhEMjU2LCAweEQyNTcsIDB4RDI1OCwgMHhEMjU5LCAweEQyNUEsIDB4RDI1QiwgMHhEMjVELCAweEQyNUUsDQorICAgIDB4RDI1RiwgMHhEMjYwLCAweEQyNjEsIDB4RDI2MiwgMHhEMjYzLCAweEQyNjUsIDB4RDI2NiwgMHhEMjY3LA0KKyAgICAweEQyNjgsIDB4RDI2OSwgMHhEMjZBLCAweEQyNkIsIDB4RDI2QywgMHhEMjZELCAweEQyNkUsIDB4RDI2RiwNCisgICAgMHhEMjcwLCAweEQyNzEsIDB4RDI3MiwgMHhEMjczLCAweEQyNzQsIDB4RDI3NSwgMHhEMjc2LCAweEQyNzcsDQorICAgIDB4RDI3OCwgMHhEMjc5LCAweEQyN0EsIDB4RDI3QiwgMHhEMjdDLCAweEQyN0QsIDB4RDI3RSwgMHhEMjdGLA0KKyAgICAweEQyODIsIDB4RDI4MywgMHhEMjg1LCAweEQyODYsIDB4RDI4NywgMHhEMjg5LCAweEQyOEEsIDB4RDI4QiwNCisgICAgMHhEMjhDLCAweEQyOEQsIDB4RDI4RSwgMHhEMjhGLCAweEQyOTIsIDB4RDI5MywgMHhEMjk0LCAweEQyOTYsDQorICAgIDB4RDI5NywgMHhEMjk4LCAweEQyOTksIDB4RDI5QSwgMHhEMjlCLCAweEQyOUQsIDB4RDI5RSwgMHhEMjlGLA0KKyAgICAweEQyQTEsIDB4RDJBMiwgMHhEMkEzLCAweEQyQTUsIDB4RDJBNiwgMHhEMkE3LCAweEQyQTgsIDB4RDJBOSwNCisgICAgMHhEMkFBLCAweEQyQUIsIDB4RDJBRCwgMHhEMkFFLCAweEQyQUYsIDB4RDJCMCwgMHhEMkIyLCAweEQyQjMsDQorICAgIDB4RDJCNCwgMHhEMkI1LCAweEQyQjYsIDB4RDJCNywgMHhEMkJBLCAweEQyQkIsIDB4RDJCRCwgMHhEMkJFLA0KKyAgICAweEQyQzEsIDB4RDJDMywgMHhEMkM0LCAweEQyQzUsIDB4RDJDNiwgMHhEMkM3LCAweEQyQ0EsIDB4RDJDQywNCisgICAgMHhEMkNELCAweEQyQ0UsIDB4RDJDRiwgMHhEMkQwLCAweEQyRDEsIDB4RDJEMiwgMHhEMkQzLCAweEQyRDUsDQorICAgIDB4RDJENiwgMHhEMkQ3LCAweEQyRDksIDB4RDJEQSwgMHhEMkRCLCAweEQyREQsIDB4RDJERSwgMHhEMkRGLA0KKyAgICAweEQyRTAsIDB4RDJFMSwgMHhEMkUyLCAweEQyRTMsIDB4RDJFNiwgMHhEMkU3LCAweEQyRTgsIDB4RDJFOSwNCisgICAgMHhEMkVBLCAweEQyRUIsIDB4RDJFQywgMHhEMkVELCAweEQyRUUsIDB4RDJFRiwgMHhEMkYyLCAweEQyRjMsDQorICAgIDB4RDJGNSwgMHhEMkY2LCAweEQyRjcsIDB4RDJGOSwgMHhEMkZBLCAweEQyRkIsIDB4RDJGQywgMHhEMkZELA0KKyAgICAweEQyRkUsIDB4RDJGRiwgMHhEMzAyLCAweEQzMDQsIDB4RDMwNiwgMHhEMzA3LCAweEQzMDgsIDB4RDMwOSwNCisgICAgMHhEMzBBLCAweEQzMEIsIDB4RDMwRiwgMHhEMzExLCAweEQzMTIsIDB4RDMxMywgMHhEMzE1LCAweEQzMTcsDQorICAgIDB4RDMxOCwgMHhEMzE5LCAweEQzMUEsIDB4RDMxQiwgMHhEMzFFLCAweEQzMjIsIDB4RDMyMywgMHhEMzI0LA0KKyAgICAweEQzMjYsIDB4RDMyNywgMHhEMzJBLCAweEQzMkIsIDB4RDMyRCwgMHhEMzJFLCAweEQzMkYsIDB4RDMzMSwNCisgICAgMHhEMzMyLCAweEQzMzMsIDB4RDMzNCwgMHhEMzM1LCAweEQzMzYsIDB4RDMzNywgMHhEMzNBLCAweEQzM0UsDQorICAgIDB4RDMzRiwgMHhEMzQwLCAweEQzNDEsIDB4RDM0MiwgMHhEMzQzLCAweEQzNDYsIDB4RDM0NywgMHhEMzQ4LA0KKyAgICAweEQzNDksIDB4RDM0QSwgMHhEMzRCLCAweEQzNEMsIDB4RDM0RCwgMHhEMzRFLCAweEQzNEYsIDB4RDM1MCwNCisgICAgMHhEMzUxLCAweEQzNTIsIDB4RDM1MywgMHhEMzU0LCAweEQzNTUsIDB4RDM1NiwgMHhEMzU3LCAweEQzNTgsDQorICAgIDB4RDM1OSwgMHhEMzVBLCAweEQzNUIsIDB4RDM1QywgMHhEMzVELCAweEQzNUUsIDB4RDM1RiwgMHhEMzYwLA0KKyAgICAweEQzNjEsIDB4RDM2MiwgMHhEMzYzLCAweEQzNjQsIDB4RDM2NSwgMHhEMzY2LCAweEQzNjcsIDB4RDM2OCwNCisgICAgMHhEMzY5LCAweEQzNkEsIDB4RDM2QiwgMHhEMzZDLCAweEQzNkQsIDB4RDM2RSwgMHhEMzZGLCAweEQzNzAsDQorICAgIDB4RDM3MSwgMHhEMzcyLCAweEQzNzMsIDB4RDM3NCwgMHhEMzc1LCAweEQzNzYsIDB4RDM3NywgMHhEMzc4LA0KKyAgICAweEQzNzksIDB4RDM3QSwgMHhEMzdCLCAweEQzN0UsIDB4RDM3RiwgMHhEMzgxLCAweEQzODIsIDB4RDM4MywNCisgICAgMHhEMzg1LCAweEQzODYsIDB4RDM4NywgMHhEMzg4LCAweEQzODksIDB4RDM4QSwgMHhEMzhCLCAweEQzOEUsDQorICAgIDB4RDM5MiwgMHhEMzkzLCAweEQzOTQsIDB4RDM5NSwgMHhEMzk2LCAweEQzOTcsIDB4RDM5QSwgMHhEMzlCLA0KKyAgICAweEQzOUQsIDB4RDM5RSwgMHhEMzlGLCAweEQzQTEsIDB4RDNBMiwgMHhEM0EzLCAweEQzQTQsIDB4RDNBNSwNCisgICAgMHhEM0E2LCAweEQzQTcsIDB4RDNBQSwgMHhEM0FDLCAweEQzQUUsIDB4RDNBRiwgMHhEM0IwLCAweEQzQjEsDQorICAgIDB4RDNCMiwgMHhEM0IzLCAweEQzQjUsIDB4RDNCNiwgMHhEM0I3LCAweEQzQjksIDB4RDNCQSwgMHhEM0JCLA0KKyAgICAweEQzQkQsIDB4RDNCRSwgMHhEM0JGLCAweEQzQzAsIDB4RDNDMSwgMHhEM0MyLCAweEQzQzMsIDB4RDNDNiwNCisgICAgMHhEM0M3LCAweEQzQ0EsIDB4RDNDQiwgMHhEM0NDLCAweEQzQ0QsIDB4RDNDRSwgMHhEM0NGLCAweEQzRDEsDQorICAgIDB4RDNEMiwgMHhEM0QzLCAweEQzRDQsIDB4RDNENSwgMHhEM0Q2LCAweEQzRDcsIDB4RDNEOSwgMHhEM0RBLA0KKyAgICAweEQzREIsIDB4RDNEQywgMHhEM0RELCAweEQzREUsIDB4RDNERiwgMHhEM0UwLCAweEQzRTIsIDB4RDNFNCwNCisgICAgMHhEM0U1LCAweEQzRTYsIDB4RDNFNywgMHhEM0U4LCAweEQzRTksIDB4RDNFQSwgMHhEM0VCLCAweEQzRUUsDQorICAgIDB4RDNFRiwgMHhEM0YxLCAweEQzRjIsIDB4RDNGMywgMHhEM0Y1LCAweEQzRjYsIDB4RDNGNywgMHhEM0Y4LA0KKyAgICAweEQzRjksIDB4RDNGQSwgMHhEM0ZCLCAweEQzRkUsIDB4RDQwMCwgMHhENDAyLCAweEQ0MDMsIDB4RDQwNCwNCisgICAgMHhENDA1LCAweEQ0MDYsIDB4RDQwNywgMHhENDA5LCAweEQ0MEEsIDB4RDQwQiwgMHhENDBDLCAweEQ0MEQsDQorICAgIDB4RDQwRSwgMHhENDBGLCAweEQ0MTAsIDB4RDQxMSwgMHhENDEyLCAweEQ0MTMsIDB4RDQxNCwgMHhENDE1LA0KKyAgICAweEQ0MTYsIDB4RDQxNywgMHhENDE4LCAweEQ0MTksIDB4RDQxQSwgMHhENDFCLCAweEQ0MUMsIDB4RDQxRSwNCisgICAgMHhENDFGLCAweEQ0MjAsIDB4RDQyMSwgMHhENDIyLCAweEQ0MjMsIDB4RDQyNCwgMHhENDI1LCAweEQ0MjYsDQorICAgIDB4RDQyNywgMHhENDI4LCAweEQ0MjksIDB4RDQyQSwgMHhENDJCLCAweEQ0MkMsIDB4RDQyRCwgMHhENDJFLA0KKyAgICAweEQ0MkYsIDB4RDQzMCwgMHhENDMxLCAweEQ0MzIsIDB4RDQzMywgMHhENDM0LCAweEQ0MzUsIDB4RDQzNiwNCisgICAgMHhENDM3LCAweEQ0MzgsIDB4RDQzOSwgMHhENDNBLCAweEQ0M0IsIDB4RDQzQywgMHhENDNELCAweEQ0M0UsDQorICAgIDB4RDQzRiwgMHhENDQxLCAweEQ0NDIsIDB4RDQ0MywgMHhENDQ1LCAweEQ0NDYsIDB4RDQ0NywgMHhENDQ4LA0KKyAgICAweEQ0NDksIDB4RDQ0QSwgMHhENDRCLCAweEQ0NEMsIDB4RDQ0RCwgMHhENDRFLCAweEQ0NEYsIDB4RDQ1MCwNCisgICAgMHhENDUxLCAweEQ0NTIsIDB4RDQ1MywgMHhENDU0LCAweEQ0NTUsIDB4RDQ1NiwgMHhENDU3LCAweEQ0NTgsDQorICAgIDB4RDQ1OSwgMHhENDVBLCAweEQ0NUIsIDB4RDQ1RCwgMHhENDVFLCAweEQ0NUYsIDB4RDQ2MSwgMHhENDYyLA0KKyAgICAweEQ0NjMsIDB4RDQ2NSwgMHhENDY2LCAweEQ0NjcsIDB4RDQ2OCwgMHhENDY5LCAweEQ0NkEsIDB4RDQ2QiwNCisgICAgMHhENDZDLCAweEQ0NkUsIDB4RDQ3MCwgMHhENDcxLCAweEQ0NzIsIDB4RDQ3MywgMHhENDc0LCAweEQ0NzUsDQorICAgIDB4RDQ3NiwgMHhENDc3LCAweEQ0N0EsIDB4RDQ3QiwgMHhENDdELCAweEQ0N0UsIDB4RDQ4MSwgMHhENDgzLA0KKyAgICAweEQ0ODQsIDB4RDQ4NSwgMHhENDg2LCAweEQ0ODcsIDB4RDQ4QSwgMHhENDhDLCAweEQ0OEUsIDB4RDQ4RiwNCisgICAgMHhENDkwLCAweEQ0OTEsIDB4RDQ5MiwgMHhENDkzLCAweEQ0OTUsIDB4RDQ5NiwgMHhENDk3LCAweEQ0OTgsDQorICAgIDB4RDQ5OSwgMHhENDlBLCAweEQ0OUIsIDB4RDQ5QywgMHhENDlELCAweEQ0OUUsIDB4RDQ5RiwgMHhENEEwLA0KKyAgICAweEQ0QTEsIDB4RDRBMiwgMHhENEEzLCAweEQ0QTQsIDB4RDRBNSwgMHhENEE2LCAweEQ0QTcsIDB4RDRBOCwNCisgICAgMHhENEFBLCAweEQ0QUIsIDB4RDRBQywgMHhENEFELCAweEQ0QUUsIDB4RDRBRiwgMHhENEIwLCAweEQ0QjEsDQorICAgIDB4RDRCMiwgMHhENEIzLCAweEQ0QjQsIDB4RDRCNSwgMHhENEI2LCAweEQ0QjcsIDB4RDRCOCwgMHhENEI5LA0KKyAgICAweEQ0QkEsIDB4RDRCQiwgMHhENEJDLCAweEQ0QkQsIDB4RDRCRSwgMHhENEJGLCAweEQ0QzAsIDB4RDRDMSwNCisgICAgMHhENEMyLCAweEQ0QzMsIDB4RDRDNCwgMHhENEM1LCAweEQ0QzYsIDB4RDRDNywgMHhENEM4LCAweEQ0QzksDQorICAgIDB4RDRDQSwgMHhENENCLCAweEQ0Q0QsIDB4RDRDRSwgMHhENENGLCAweEQ0RDEsIDB4RDREMiwgMHhENEQzLA0KKyAgICAweEQ0RDUsIDB4RDRENiwgMHhENEQ3LCAweEQ0RDgsIDB4RDREOSwgMHhENERBLCAweEQ0REIsIDB4RDRERCwNCisgICAgMHhENERFLCAweEQ0RTAsIDB4RDRFMSwgMHhENEUyLCAweEQ0RTMsIDB4RDRFNCwgMHhENEU1LCAweEQ0RTYsDQorICAgIDB4RDRFNywgMHhENEU5LCAweEQ0RUEsIDB4RDRFQiwgMHhENEVELCAweEQ0RUUsIDB4RDRFRiwgMHhENEYxLA0KKyAgICAweEQ0RjIsIDB4RDRGMywgMHhENEY0LCAweEQ0RjUsIDB4RDRGNiwgMHhENEY3LCAweEQ0RjksIDB4RDRGQSwNCisgICAgMHhENEZDLCAweEQ0RkUsIDB4RDRGRiwgMHhENTAwLCAweEQ1MDEsIDB4RDUwMiwgMHhENTAzLCAweEQ1MDUsDQorICAgIDB4RDUwNiwgMHhENTA3LCAweEQ1MDksIDB4RDUwQSwgMHhENTBCLCAweEQ1MEQsIDB4RDUwRSwgMHhENTBGLA0KKyAgICAweEQ1MTAsIDB4RDUxMSwgMHhENTEyLCAweEQ1MTMsIDB4RDUxNiwgMHhENTE4LCAweEQ1MTksIDB4RDUxQSwNCisgICAgMHhENTFCLCAweEQ1MUMsIDB4RDUxRCwgMHhENTFFLCAweEQ1MUYsIDB4RDUyMCwgMHhENTIxLCAweEQ1MjIsDQorICAgIDB4RDUyMywgMHhENTI0LCAweEQ1MjUsIDB4RDUyNiwgMHhENTI3LCAweEQ1MjgsIDB4RDUyOSwgMHhENTJBLA0KKyAgICAweEQ1MkIsIDB4RDUyQywgMHhENTJELCAweEQ1MkUsIDB4RDUyRiwgMHhENTMwLCAweEQ1MzEsIDB4RDUzMiwNCisgICAgMHhENTMzLCAweEQ1MzQsIDB4RDUzNSwgMHhENTM2LCAweEQ1MzcsIDB4RDUzOCwgMHhENTM5LCAweEQ1M0EsDQorICAgIDB4RDUzQiwgMHhENTNFLCAweEQ1M0YsIDB4RDU0MSwgMHhENTQyLCAweEQ1NDMsIDB4RDU0NSwgMHhENTQ2LA0KKyAgICAweEQ1NDcsIDB4RDU0OCwgMHhENTQ5LCAweEQ1NEEsIDB4RDU0QiwgMHhENTRFLCAweEQ1NTAsIDB4RDU1MiwNCisgICAgMHhENTUzLCAweEQ1NTQsIDB4RDU1NSwgMHhENTU2LCAweEQ1NTcsIDB4RDU1QSwgMHhENTVCLCAweEQ1NUQsDQorICAgIDB4RDU1RSwgMHhENTVGLCAweEQ1NjEsIDB4RDU2MiwgMHhENTYzLCAweEQ1NjQsIDB4RDU2NiwgMHhENTY3LA0KKyAgICAweEQ1NkEsIDB4RDU2QywgMHhENTZFLCAweEQ1NkYsIDB4RDU3MCwgMHhENTcxLCAweEQ1NzIsIDB4RDU3MywNCisgICAgMHhENTc2LCAweEQ1NzcsIDB4RDU3OSwgMHhENTdBLCAweEQ1N0IsIDB4RDU3RCwgMHhENTdFLCAweEQ1N0YsDQorICAgIDB4RDU4MCwgMHhENTgxLCAweEQ1ODIsIDB4RDU4MywgMHhENTg2LCAweEQ1OEEsIDB4RDU4QiwgMHhENThDLA0KKyAgICAweEQ1OEQsIDB4RDU4RSwgMHhENThGLCAweEQ1OTEsIDB4RDU5MiwgMHhENTkzLCAweEQ1OTQsIDB4RDU5NSwNCisgICAgMHhENTk2LCAweEQ1OTcsIDB4RDU5OCwgMHhENTk5LCAweEQ1OUEsIDB4RDU5QiwgMHhENTlDLCAweEQ1OUQsDQorICAgIDB4RDU5RSwgMHhENTlGLCAweEQ1QTAsIDB4RDVBMSwgMHhENUEyLCAweEQ1QTMsIDB4RDVBNCwgMHhENUE2LA0KKyAgICAweEQ1QTcsIDB4RDVBOCwgMHhENUE5LCAweEQ1QUEsIDB4RDVBQiwgMHhENUFDLCAweEQ1QUQsIDB4RDVBRSwNCisgICAgMHhENUFGLCAweEQ1QjAsIDB4RDVCMSwgMHhENUIyLCAweEQ1QjMsIDB4RDVCNCwgMHhENUI1LCAweEQ1QjYsDQorICAgIDB4RDVCNywgMHhENUI4LCAweEQ1QjksIDB4RDVCQSwgMHhENUJCLCAweEQ1QkMsIDB4RDVCRCwgMHhENUJFLA0KKyAgICAweEQ1QkYsIDB4RDVDMCwgMHhENUMxLCAweEQ1QzIsIDB4RDVDMywgMHhENUM0LCAweEQ1QzUsIDB4RDVDNiwNCisgICAgMHhENUM3LCAweEQ1Q0EsIDB4RDVDQiwgMHhENUNELCAweEQ1Q0UsIDB4RDVDRiwgMHhENUQxLCAweEQ1RDMsDQorICAgIDB4RDVENCwgMHhENUQ1LCAweEQ1RDYsIDB4RDVENywgMHhENURBLCAweEQ1REMsIDB4RDVERSwgMHhENURGLA0KKyAgICAweEQ1RTAsIDB4RDVFMSwgMHhENUUyLCAweEQ1RTMsIDB4RDVFNiwgMHhENUU3LCAweEQ1RTksIDB4RDVFQSwNCisgICAgMHhENUVCLCAweEQ1RUQsIDB4RDVFRSwgMHhENUVGLCAweEQ1RjAsIDB4RDVGMSwgMHhENUYyLCAweEQ1RjMsDQorICAgIDB4RDVGNiwgMHhENUY4LCAweEQ1RkEsIDB4RDVGQiwgMHhENUZDLCAweEQ1RkQsIDB4RDVGRSwgMHhENUZGLA0KKyAgICAweEQ2MDIsIDB4RDYwMywgMHhENjA1LCAweEQ2MDYsIDB4RDYwNywgMHhENjA5LCAweEQ2MEEsIDB4RDYwQiwNCisgICAgMHhENjBDLCAweEQ2MEQsIDB4RDYwRSwgMHhENjBGLCAweEQ2MTIsIDB4RDYxNiwgMHhENjE3LCAweEQ2MTgsDQorICAgIDB4RDYxOSwgMHhENjFBLCAweEQ2MUIsIDB4RDYxRCwgMHhENjFFLCAweEQ2MUYsIDB4RDYyMSwgMHhENjIyLA0KKyAgICAweEQ2MjMsIDB4RDYyNSwgMHhENjI2LCAweEQ2MjcsIDB4RDYyOCwgMHhENjI5LCAweEQ2MkEsIDB4RDYyQiwNCisgICAgMHhENjJDLCAweEQ2MkUsIDB4RDYyRiwgMHhENjMwLCAweEQ2MzEsIDB4RDYzMiwgMHhENjMzLCAweEQ2MzQsDQorICAgIDB4RDYzNSwgMHhENjM2LCAweEQ2MzcsIDB4RDYzQSwgMHhENjNCLCAweEQ2M0QsIDB4RDYzRSwgMHhENjNGLA0KKyAgICAweEQ2NDEsIDB4RDY0MiwgMHhENjQzLCAweEQ2NDQsIDB4RDY0NiwgMHhENjQ3LCAweEQ2NEEsIDB4RDY0QywNCisgICAgMHhENjRFLCAweEQ2NEYsIDB4RDY1MCwgMHhENjUyLCAweEQ2NTMsIDB4RDY1NiwgMHhENjU3LCAweEQ2NTksDQorICAgIDB4RDY1QSwgMHhENjVCLCAweEQ2NUQsIDB4RDY1RSwgMHhENjVGLCAweEQ2NjAsIDB4RDY2MSwgMHhENjYyLA0KKyAgICAweEQ2NjMsIDB4RDY2NCwgMHhENjY1LCAweEQ2NjYsIDB4RDY2OCwgMHhENjZBLCAweEQ2NkIsIDB4RDY2QywNCisgICAgMHhENjZELCAweEQ2NkUsIDB4RDY2RiwgMHhENjcyLCAweEQ2NzMsIDB4RDY3NSwgMHhENjc2LCAweEQ2NzcsDQorICAgIDB4RDY3OCwgMHhENjc5LCAweEQ2N0EsIDB4RDY3QiwgMHhENjdDLCAweEQ2N0QsIDB4RDY3RSwgMHhENjdGLA0KKyAgICAweEQ2ODAsIDB4RDY4MSwgMHhENjgyLCAweEQ2ODQsIDB4RDY4NiwgMHhENjg3LCAweEQ2ODgsIDB4RDY4OSwNCisgICAgMHhENjhBLCAweEQ2OEIsIDB4RDY4RSwgMHhENjhGLCAweEQ2OTEsIDB4RDY5MiwgMHhENjkzLCAweEQ2OTUsDQorICAgIDB4RDY5NiwgMHhENjk3LCAweEQ2OTgsIDB4RDY5OSwgMHhENjlBLCAweEQ2OUIsIDB4RDY5QywgMHhENjlFLA0KKyAgICAweEQ2QTAsIDB4RDZBMiwgMHhENkEzLCAweEQ2QTQsIDB4RDZBNSwgMHhENkE2LCAweEQ2QTcsIDB4RDZBOSwNCisgICAgMHhENkFBLCAweEQ2QUIsIDB4RDZBRCwgMHhENkFFLCAweEQ2QUYsIDB4RDZCMSwgMHhENkIyLCAweEQ2QjMsDQorICAgIDB4RDZCNCwgMHhENkI1LCAweEQ2QjYsIDB4RDZCNywgMHhENkI4LCAweEQ2QkEsIDB4RDZCQywgMHhENkJELA0KKyAgICAweEQ2QkUsIDB4RDZCRiwgMHhENkMwLCAweEQ2QzEsIDB4RDZDMiwgMHhENkMzLCAweEQ2QzYsIDB4RDZDNywNCisgICAgMHhENkM5LCAweEQ2Q0EsIDB4RDZDQiwgMHhENkNELCAweEQ2Q0UsIDB4RDZDRiwgMHhENkQwLCAweEQ2RDIsDQorICAgIDB4RDZEMywgMHhENkQ1LCAweEQ2RDYsIDB4RDZEOCwgMHhENkRBLCAweEQ2REIsIDB4RDZEQywgMHhENkRELA0KKyAgICAweEQ2REUsIDB4RDZERiwgMHhENkUxLCAweEQ2RTIsIDB4RDZFMywgMHhENkU1LCAweEQ2RTYsIDB4RDZFNywNCisgICAgMHhENkU5LCAweEQ2RUEsIDB4RDZFQiwgMHhENkVDLCAweEQ2RUQsIDB4RDZFRSwgMHhENkVGLCAweEQ2RjEsDQorICAgIDB4RDZGMiwgMHhENkYzLCAweEQ2RjQsIDB4RDZGNiwgMHhENkY3LCAweEQ2RjgsIDB4RDZGOSwgMHhENkZBLA0KKyAgICAweEQ2RkIsIDB4RDZGRSwgMHhENkZGLCAweEQ3MDEsIDB4RDcwMiwgMHhENzAzLCAweEQ3MDUsIDB4RDcwNiwNCisgICAgMHhENzA3LCAweEQ3MDgsIDB4RDcwOSwgMHhENzBBLCAweEQ3MEIsIDB4RDcwQywgMHhENzBELCAweEQ3MEUsDQorICAgIDB4RDcwRiwgMHhENzEwLCAweEQ3MTIsIDB4RDcxMywgMHhENzE0LCAweEQ3MTUsIDB4RDcxNiwgMHhENzE3LA0KKyAgICAweEQ3MUEsIDB4RDcxQiwgMHhENzFELCAweEQ3MUUsIDB4RDcxRiwgMHhENzIxLCAweEQ3MjIsIDB4RDcyMywNCisgICAgMHhENzI0LCAweEQ3MjUsIDB4RDcyNiwgMHhENzI3LCAweEQ3MkEsIDB4RDcyQywgMHhENzJFLCAweEQ3MkYsDQorICAgIDB4RDczMCwgMHhENzMxLCAweEQ3MzIsIDB4RDczMywgMHhENzM2LCAweEQ3MzcsIDB4RDczOSwgMHhENzNBLA0KKyAgICAweEQ3M0IsIDB4RDczRCwgMHhENzNFLCAweEQ3M0YsIDB4RDc0MCwgMHhENzQxLCAweEQ3NDIsIDB4RDc0MywNCisgICAgMHhENzQ1LCAweEQ3NDYsIDB4RDc0OCwgMHhENzRBLCAweEQ3NEIsIDB4RDc0QywgMHhENzRELCAweEQ3NEUsDQorICAgIDB4RDc0RiwgMHhENzUyLCAweEQ3NTMsIDB4RDc1NSwgMHhENzVBLCAweEQ3NUIsIDB4RDc1QywgMHhENzVELA0KKyAgICAweEQ3NUUsIDB4RDc1RiwgMHhENzYyLCAweEQ3NjQsIDB4RDc2NiwgMHhENzY3LCAweEQ3NjgsIDB4RDc2QSwNCisgICAgMHhENzZCLCAweEQ3NkQsIDB4RDc2RSwgMHhENzZGLCAweEQ3NzEsIDB4RDc3MiwgMHhENzczLCAweEQ3NzUsDQorICAgIDB4RDc3NiwgMHhENzc3LCAweEQ3NzgsIDB4RDc3OSwgMHhENzdBLCAweEQ3N0IsIDB4RDc3RSwgMHhENzdGLA0KKyAgICAweEQ3ODAsIDB4RDc4MiwgMHhENzgzLCAweEQ3ODQsIDB4RDc4NSwgMHhENzg2LCAweEQ3ODcsIDB4RDc4QSwNCisgICAgMHhENzhCLCAweEQ3OEQsIDB4RDc4RSwgMHhENzhGLCAweEQ3OTEsIDB4RDc5MiwgMHhENzkzLCAweEQ3OTQsDQorICAgIDB4RDc5NSwgMHhENzk2LCAweEQ3OTcsIDB4RDc5QSwgMHhENzlDLCAweEQ3OUUsIDB4RDc5RiwgMHhEN0EwLA0KKyAgICAweEQ3QTEsIDB4RDdBMiwgMHhEN0EzLCAweDAwMjAsIDB4MDAyMSwgMHgwMDIyLCAweDAwMjMsIDB4MDAyNCwNCisgICAgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywgMHgwMDI4LCAweDAwMjksIDB4MDAyQSwgMHgwMDJCLCAweDAwMkMsDQorICAgIDB4MDAyRCwgMHgwMDJFLCAweDAwMkYsIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LA0KKyAgICAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgsIDB4MDAzOSwgMHgwMDNBLCAweDAwM0IsIDB4MDAzQywNCisgICAgMHgwMDNELCAweDAwM0UsIDB4MDAzRiwgMHgwMDQwLCAweDAwNDEsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDQsDQorICAgIDB4MDA0NSwgMHgwMDQ2LCAweDAwNDcsIDB4MDA0OCwgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwgMHgwMDRDLA0KKyAgICAweDAwNEQsIDB4MDA0RSwgMHgwMDRGLCAweDAwNTAsIDB4MDA1MSwgMHgwMDUyLCAweDAwNTMsIDB4MDA1NCwNCisgICAgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywgMHgwMDU4LCAweDAwNTksIDB4MDA1QSwgMHgwMDVCLCAweDAwNUMsDQorICAgIDB4MDA1RCwgMHgwMDVFLCAweDAwNUYsIDB4MDA2MCwgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LA0KKyAgICAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LCAweDAwNjgsIDB4MDA2OSwgMHgwMDZBLCAweDAwNkIsIDB4MDA2QywNCisgICAgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsDQorICAgIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LCAweDAwN0EsIDB4MDA3QiwgMHgwMDdDLA0KKyAgICAweDAwN0QsIDB4MDA3RSwgMHgyMEE5LCAweDIwMTAsIDB4MDBBOSwgMHgyMTIyLCAweDIyRUYsIDB4MDAyMCwNCisgICAgMHgwMDIxLCAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwgMHgwMDI3LCAweDAwMjgsDQorICAgIDB4MDAyOSwgMHgwMDJBLCAweDAwMkIsIDB4MDAyQywgMHgwMDJELCAweDAwMkUsIDB4MDAyRiwgMHgwMDMwLA0KKyAgICAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwNCisgICAgMHgwMDM5LCAweDAwM0EsIDB4MDAzQiwgMHgwMDNDLCAweDAwM0QsIDB4MDAzRSwgMHgwMDNGLCAweDAwNDAsDQorICAgIDB4MDA0MSwgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LCAweDAwNDYsIDB4MDA0NywgMHgwMDQ4LA0KKyAgICAweDAwNDksIDB4MDA0QSwgMHgwMDRCLCAweDAwNEMsIDB4MDA0RCwgMHgwMDRFLCAweDAwNEYsIDB4MDA1MCwNCisgICAgMHgwMDUxLCAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwgMHgwMDU3LCAweDAwNTgsDQorICAgIDB4MDA1OSwgMHgwMDVBLCAweDAwNUIsIDB4MDA1QywgMHgwMDVELCAweDAwNUUsIDB4MDA1RiwgMHgwMDYwLA0KKyAgICAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwNCisgICAgMHgwMDY5LCAweDAwNkEsIDB4MDA2QiwgMHgwMDZDLCAweDAwNkQsIDB4MDA2RSwgMHgwMDZGLCAweDAwNzAsDQorICAgIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywgMHgwMDc4LA0KKyAgICAweDAwNzksIDB4MDA3QSwgMHgwMDdCLCAweDAwN0MsIDB4MDA3RCwgMHgyMDNFLCAweDAwN0UsIDB4MDA1QywNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvS1NDLUVVQy1IXzAuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0tvcmVhMS9LU0MtRVVDLUhfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QyNjEyMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvS1NDLUVVQy1IXzAuY3BwCkBAIC0wLDAgKzEsMTY0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfS1NDX0VVQ19IXzBbNDY3ICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDFGOUUsIDB4QTFBMSwgMHhBMUZFLCAweDAwNjUsIDB4QTJBMSwgMHhBMkU1LCAweDAwQzMsDQorICAgIDB4QTNBMSwgMHhBM0ZFLCAweDAxMDgsIDB4QTRBMSwgMHhBNEQzLCAweDAxNjYsIDB4QTRENSwgMHhBNEZFLCAweDAxOTksDQorICAgIDB4QTVBMSwgMHhBNUFBLCAweDAxQzMsIDB4QTVCMCwgMHhBNUI5LCAweDAxQ0QsIDB4QTVDMSwgMHhBNUQ4LCAweDAxRDcsDQorICAgIDB4QTVFMSwgMHhBNUY4LCAweDAxRUYsIDB4QTZBMSwgMHhBNkU0LCAweDAyMDcsIDB4QTdBMSwgMHhBN0VGLCAweDAyNEIsDQorICAgIDB4QThBMSwgMHhBOEE0LCAweDAyOUEsIDB4QThBNiwgMHhBOEE2LCAweDAyOUUsIDB4QThBOCwgMHhBOEFGLCAweDAyOUYsDQorICAgIDB4QThCMSwgMHhBOEZFLCAweDAyQTcsIDB4QTlBMSwgMHhBOUZFLCAweDAyRjUsIDB4QUFBMSwgMHhBQUYzLCAweDAzNTMsDQorICAgIDB4QUJBMSwgMHhBQkY2LCAweDAzQTYsIDB4QUNBMSwgMHhBQ0MxLCAweDAzRkMsIDB4QUNEMSwgMHhBQ0YxLCAweDA0MUQsDQorICAgIDB4QjBBMSwgMHhCMEZFLCAweDA0M0UsIDB4QjFBMSwgMHhCMUZFLCAweDA0OUMsIDB4QjJBMSwgMHhCMkZFLCAweDA0RkEsDQorICAgIDB4QjNBMSwgMHhCM0ZFLCAweDA1NTgsIDB4QjRBMSwgMHhCNEZFLCAweDA1QjYsIDB4QjVBMSwgMHhCNUZFLCAweDA2MTQsDQorICAgIDB4QjZBMSwgMHhCNkZFLCAweDA2NzIsIDB4QjdBMSwgMHhCN0ZFLCAweDA2RDAsIDB4QjhBMSwgMHhCOEZFLCAweDA3MkUsDQorICAgIDB4QjlBMSwgMHhCOUZFLCAweDA3OEMsIDB4QkFBMSwgMHhCQUZFLCAweDA3RUEsIDB4QkJBMSwgMHhCQkZFLCAweDA4NDgsDQorICAgIDB4QkNBMSwgMHhCQ0ZFLCAweDA4QTYsIDB4QkRBMSwgMHhCREZFLCAweDA5MDQsIDB4QkVBMSwgMHhCRUZFLCAweDA5NjIsDQorICAgIDB4QkZBMSwgMHhCRkZFLCAweDA5QzAsIDB4QzBBMSwgMHhDMEZFLCAweDBBMUUsIDB4QzFBMSwgMHhDMUZFLCAweDBBN0MsDQorICAgIDB4QzJBMSwgMHhDMkZFLCAweDBBREEsIDB4QzNBMSwgMHhDM0ZFLCAweDBCMzgsIDB4QzRBMSwgMHhDNEZFLCAweDBCOTYsDQorICAgIDB4QzVBMSwgMHhDNUZFLCAweDBCRjQsIDB4QzZBMSwgMHhDNkZFLCAweDBDNTIsIDB4QzdBMSwgMHhDN0ZFLCAweDBDQjAsDQorICAgIDB4QzhBMSwgMHhDOEZFLCAweDBEMEUsIDB4Q0FBMSwgMHhDQUZFLCAweDBENkMsIDB4Q0JBMSwgMHhDQkNGLCAweDBEQ0EsDQorICAgIDB4Q0JEMCwgMHhDQkQwLCAweDEwMTQsIDB4Q0JEMSwgMHhDQkQ1LCAweDBERjksIDB4Q0JENiwgMHhDQkQ2LCAweDBFNUUsDQorICAgIDB4Q0JENywgMHhDQkU2LCAweDBERkUsIDB4Q0JFNywgMHhDQkU3LCAweDFCOEQsIDB4Q0JFOCwgMHhDQkZFLCAweDBFMEUsDQorICAgIDB4Q0NBMSwgMHhDQ0ZFLCAweDBFMjUsIDB4Q0RBMSwgMHhDRENFLCAweDBFODMsIDB4Q0RDRiwgMHhDRENGLCAweDBEODQsDQorICAgIDB4Q0REMCwgMHhDREU3LCAweDBFQjEsIDB4Q0RFOCwgMHhDREU4LCAweDFFREMsIDB4Q0RFOSwgMHhDREZFLCAweDBFQzksDQorICAgIDB4Q0VBMSwgMHhDRUFDLCAweDBFREYsIDB4Q0VBRCwgMHhDRUFELCAweDBFREEsIDB4Q0VBRSwgMHhDRUZFLCAweDBFRUIsDQorICAgIDB4Q0ZBMSwgMHhDRkZBLCAweDBGM0MsIDB4Q0ZGQiwgMHhDRkZCLCAweDBGM0UsIDB4Q0ZGQywgMHhDRkZFLCAweDBGOTYsDQorICAgIDB4RDBBMSwgMHhEMEExLCAweDBGOTksIDB4RDBBMiwgMHhEMEEyLCAweDBGNkEsIDB4RDBBMywgMHhEMEI3LCAweDBGOUEsDQorICAgIDB4RDBCOCwgMHhEMEI4LCAweDBGNkEsIDB4RDBCOSwgMHhEMENGLCAweDBGQUYsIDB4RDBEMCwgMHhEMEQwLCAweDBFN0MsDQorICAgIDB4RDBEMSwgMHhEMERDLCAweDBGQzYsIDB4RDBERCwgMHhEMERELCAweDEwMjMsIDB4RDBERSwgMHhEMEZFLCAweDBGRDIsDQorICAgIDB4RDFBMSwgMHhEMUQzLCAweDBGRjMsIDB4RDFENCwgMHhEMUQ0LCAweDExMTYsIDB4RDFENSwgMHhEMUQ1LCAweDEwM0MsDQorICAgIDB4RDFENiwgMHhEMUQ3LCAweDEwMjYsIDB4RDFEOCwgMHhEMUQ4LCAweDExMTcsIDB4RDFEOSwgMHhEMURBLCAweDEwMjgsDQorICAgIDB4RDFEQiwgMHhEMUUwLCAweDExMTgsIDB4RDFFMSwgMHhEMUUxLCAweDEwMkEsIDB4RDFFMiwgMHhEMUUyLCAweDE2QTgsDQorICAgIDB4RDFFMywgMHhEMUU1LCAweDExMUUsIDB4RDFFNiwgMHhEMUU2LCAweDExMjIsIDB4RDFFNywgMHhEMUU3LCAweDEwMkIsDQorICAgIDB4RDFFOCwgMHhEMUVCLCAweDExMjMsIDB4RDFFQywgMHhEMUVDLCAweDEwMkMsIDB4RDFFRCwgMHhEMUVELCAweDExMjcsDQorICAgIDB4RDFFRSwgMHhEMUVFLCAweDEwMkQsIDB4RDFFRiwgMHhEMUYwLCAweDExMkEsIDB4RDFGMSwgMHhEMUYxLCAweDEwMkUsDQorICAgIDB4RDFGMiwgMHhEMUYyLCAweDExMkMsIDB4RDFGMywgMHhEMUY1LCAweDEwMkYsIDB4RDFGNiwgMHhEMUY2LCAweDExMkYsDQorICAgIDB4RDFGNywgMHhEMUY5LCAweDEwMzIsIDB4RDFGQSwgMHhEMUZBLCAweDExMzMsIDB4RDFGQiwgMHhEMUZCLCAweDEwMzUsDQorICAgIDB4RDFGQywgMHhEMUZELCAweDExMzYsIDB4RDFGRSwgMHhEMUZFLCAweDExMzksIDB4RDJBMSwgMHhEMkExLCAweDEwMzYsDQorICAgIDB4RDJBMiwgMHhEMkEzLCAweDExM0EsIDB4RDJBNCwgMHhEMkE2LCAweDEwMzcsIDB4RDJBNywgMHhEMkFBLCAweDExM0MsDQorICAgIDB4RDJBQiwgMHhEMkFCLCAweDExNDMsIDB4RDJBQywgMHhEMkFDLCAweDEwM0EsIDB4RDJBRCwgMHhEMkFELCAweDExNDQsDQorICAgIDB4RDJBRSwgMHhEMkIxLCAweDEwM0IsIDB4RDJCMiwgMHhEMkIyLCAweDExNDgsIDB4RDJCMywgMHhEMkJELCAweDEwM0YsDQorICAgIDB4RDJCRSwgMHhEMkJFLCAweDExOUYsIDB4RDJCRiwgMHhEMkMxLCAweDEwNEEsIDB4RDJDMiwgMHhEMkMzLCAweDExQTEsDQorICAgIDB4RDJDNCwgMHhEMkM0LCAweDExQTUsIDB4RDJDNSwgMHhEMkM1LCAweDEwNEQsIDB4RDJDNiwgMHhEMkNBLCAweDExQTYsDQorICAgIDB4RDJDQiwgMHhEMkNCLCAweDExQUMsIDB4RDJDQywgMHhEMkNDLCAweDEwNEUsIDB4RDJDRCwgMHhEMkNFLCAweDExQUQsDQorICAgIDB4RDJDRiwgMHhEMkQ0LCAweDExQjAsIDB4RDJENSwgMHhEMkQ3LCAweDExQjcsIDB4RDJEOCwgMHhEMkQ4LCAweDEwNEYsDQorICAgIDB4RDJEOSwgMHhEMkRBLCAweDExQkQsIDB4RDJEQiwgMHhEMkRELCAweDEwNTAsIDB4RDJERSwgMHhEMkRGLCAweDExQzEsDQorICAgIDB4RDJFMCwgMHhEMkUwLCAweDEwNTMsIDB4RDJFMSwgMHhEMkUxLCAweDExQzMsIDB4RDJFMiwgMHhEMkUyLCAweDExQzYsDQorICAgIDB4RDJFMywgMHhEMkUzLCAweDEwNTQsIDB4RDJFNCwgMHhEMkU0LCAweDExRDQsIDB4RDJFNSwgMHhEMkU4LCAweDExRDYsDQorICAgIDB4RDJFOSwgMHhEMkVBLCAweDExREIsIDB4RDJFQiwgMHhEMkVCLCAweDExRTAsIDB4RDJFQywgMHhEMkVGLCAweDEwNTUsDQorICAgIDB4RDJGMCwgMHhEMkYzLCAweDExRkMsIDB4RDJGNCwgMHhEMkY1LCAweDEyMDEsIDB4RDJGNiwgMHhEMkY2LCAweDEwNTksDQorICAgIDB4RDJGNywgMHhEMkY4LCAweDEyMDMsIDB4RDJGOSwgMHhEMkZFLCAweDEwNUEsIDB4RDNBMSwgMHhEM0ZFLCAweDEwNjAsDQorICAgIDB4RDRBMSwgMHhENEU1LCAweDEwQkUsIDB4RDRFNiwgMHhENEU2LCAweDEwREUsIDB4RDRFNywgMHhENEZCLCAweDExMDMsDQorICAgIDB4RDRGQywgMHhENEZDLCAweDEwMjgsIDB4RDRGRCwgMHhENEZFLCAweDExMTgsIDB4RDVBMSwgMHhENUE0LCAweDExMUEsDQorICAgIDB4RDVBNSwgMHhENUE1LCAweDE2QTgsIDB4RDVBNiwgMHhENUFBLCAweDExMUUsIDB4RDVBQiwgMHhENUFCLCAweDEwMkIsDQorICAgIDB4RDVBQywgMHhENUFELCAweDExMjMsIDB4RDVBRSwgMHhENUFFLCAweDEwNjAsIDB4RDVBRiwgMHhENUZFLCAweDExMjUsDQorICAgIDB4RDZBMSwgMHhENkI3LCAweDExNzUsIDB4RDZCOCwgMHhENkI4LCAweDEwNDcsIDB4RDZCOSwgMHhENkNDLCAweDExOEMsDQorICAgIDB4RDZDRCwgMHhENkNELCAweDEwNEMsIDB4RDZDRSwgMHhENkZFLCAweDExQTAsIDB4RDdBMSwgMHhEN0NBLCAweDExRDEsDQorICAgIDB4RDdDQiwgMHhEN0NCLCAweDE1QjAsIDB4RDdDQywgMHhEN0UzLCAweDExRkIsIDB4RDdFNCwgMHhEN0U0LCAweDE5MTgsDQorICAgIDB4RDdFNSwgMHhEN0ZFLCAweDEyMTMsIDB4RDhBMSwgMHhEOEZFLCAweDEyMkQsIDB4RDlBMSwgMHhEOUZFLCAweDEyOEIsDQorICAgIDB4REFBMSwgMHhEQUZFLCAweDEyRTksIDB4REJBMSwgMHhEQkM0LCAweDEzNDcsIDB4REJDNSwgMHhEQkM1LCAweDE0MUYsDQorICAgIDB4REJDNiwgMHhEQkUzLCAweDEzNkIsIDB4REJFNCwgMHhEQkU0LCAweDEzM0EsIDB4REJFNSwgMHhEQkZFLCAweDEzODksDQorICAgIDB4RENBMSwgMHhEQ0E0LCAweDEzQTMsIDB4RENBNSwgMHhEQ0E1LCAweDFENUUsIDB4RENBNiwgMHhEQ0ZFLCAweDEzQTcsDQorICAgIDB4RERBMSwgMHhEREE0LCAweDE0MDAsIDB4RERBNSwgMHhEREE1LCAweDEzRDcsIDB4RERBNiwgMHhEREQ0LCAweDE0MDQsDQorICAgIDB4RERENSwgMHhEREQ1LCAweDEzRjUsIDB4RERENiwgMHhEREYzLCAweDE0MzMsIDB4RERGNCwgMHhEREY0LCAweDFEQjcsDQorICAgIDB4RERGNSwgMHhEREZFLCAweDE0NTEsIDB4REVBMSwgMHhERUZCLCAweDE0NUIsIDB4REVGQywgMHhERUZDLCAweDE1RDAsDQorICAgIDB4REVGRCwgMHhERUZELCAweDE0QjYsIDB4REVGRSwgMHhERUZFLCAweDE0RjcsIDB4REZBMSwgMHhERkIyLCAweDE0QjcsDQorICAgIDB4REZCMywgMHhERkIzLCAweDFCQUIsIDB4REZCNCwgMHhERkUwLCAweDE0QzksIDB4REZFMSwgMHhERkUxLCAweDE0RjIsDQorICAgIDB4REZFMiwgMHhERkU3LCAweDE0RjYsIDB4REZFOCwgMHhERkU4LCAweDE1NkQsIDB4REZFOSwgMHhERkZFLCAweDE0RkMsDQorICAgIDB4RTBBMSwgMHhFMEYwLCAweDE1MTIsIDB4RTBGMSwgMHhFMEYxLCAweDE3NzEsIDB4RTBGMiwgMHhFMEZFLCAweDE1NjIsDQorICAgIDB4RTFBMSwgMHhFMUFDLCAweDE1NkYsIDB4RTFBRCwgMHhFMUFELCAweDE1NTQsIDB4RTFBRSwgMHhFMUVDLCAweDE1N0IsDQorICAgIDB4RTFFRCwgMHhFMUVELCAweDE0QzUsIDB4RTFFRSwgMHhFMUZFLCAweDE1QkEsIDB4RTJBMSwgMHhFMkZFLCAweDE1Q0IsDQorICAgIDB4RTNBMSwgMHhFM0Y0LCAweDE2MjksIDB4RTNGNSwgMHhFM0Y1LCAweDFCNjEsIDB4RTNGNiwgMHhFM0ZFLCAweDE2N0QsDQorICAgIDB4RTRBMSwgMHhFNEExLCAweDFDQ0EsIDB4RTRBMiwgMHhFNEE4LCAweDE2ODYsIDB4RTRBOSwgMHhFNEE5LCAweDE2MkUsDQorICAgIDB4RTRBQSwgMHhFNEZFLCAweDE2OEQsIDB4RTVBMSwgMHhFNUFELCAweDE2RTIsIDB4RTVBRSwgMHhFNUFFLCAweDE2RjIsDQorICAgIDB4RTVBRiwgMHhFNUIwLCAweDE2RUYsIDB4RTVCMSwgMHhFNUIyLCAweDExNDksIDB4RTVCMywgMHhFNUI4LCAweDE2RjEsDQorICAgIDB4RTVCOSwgMHhFNUI5LCAweDExNEIsIDB4RTVCQSwgMHhFNUJBLCAweDE2RjcsIDB4RTVCQiwgMHhFNUJDLCAweDExNEQsDQorICAgIDB4RTVCRCwgMHhFNUMzLCAweDE2RjgsIDB4RTVDNCwgMHhFNUM0LCAweDExNEYsIDB4RTVDNSwgMHhFNUNELCAweDE2RkYsDQorICAgIDB4RTVDRSwgMHhFNUNFLCAweDExNTMsIDB4RTVDRiwgMHhFNUNGLCAweDE3MDgsIDB4RTVEMCwgMHhFNUQwLCAweDExNTQsDQorICAgIDB4RTVEMSwgMHhFNUQxLCAweDE3MDksIDB4RTVEMiwgMHhFNUQyLCAweDExNTUsIDB4RTVEMywgMHhFNUQ1LCAweDE3MEEsDQorICAgIDB4RTVENiwgMHhFNUQ2LCAweDExNTcsIDB4RTVENywgMHhFNUY5LCAweDE3MEQsIDB4RTVGQSwgMHhFNUZCLCAweDExNUEsDQorICAgIDB4RTVGQywgMHhFNUZDLCAweDEwM0YsIDB4RTVGRCwgMHhFNUZELCAweDE3MzAsIDB4RTVGRSwgMHhFNUZFLCAweDExNUMsDQorICAgIDB4RTZBMSwgMHhFNkExLCAweDExNUYsIDB4RTZBMiwgMHhFNkEzLCAweDE3MzEsIDB4RTZBNCwgMHhFNkE0LCAweDExNjEsDQorICAgIDB4RTZBNSwgMHhFNkE2LCAweDE3MzMsIDB4RTZBNywgMHhFNkE3LCAweDExNjIsIDB4RTZBOCwgMHhFNkFDLCAweDE3MzUsDQorICAgIDB4RTZBRCwgMHhFNkFELCAweDExNjUsIDB4RTZBRSwgMHhFNkFFLCAweDE3M0EsIDB4RTZBRiwgMHhFNkIxLCAweDExNjcsDQorICAgIDB4RTZCMiwgMHhFNkIyLCAweDE3M0IsIDB4RTZCMywgMHhFNkIzLCAweDExNkEsIDB4RTZCNCwgMHhFNkI2LCAweDE3M0MsDQorICAgIDB4RTZCNywgMHhFNkI4LCAweDExNkIsIDB4RTZCOSwgMHhFNkJCLCAweDE3M0YsIDB4RTZCQywgMHhFNkJDLCAweDExNkYsDQorICAgIDB4RTZCRCwgMHhFNkMzLCAweDE3NDIsIDB4RTZDNCwgMHhFNkM0LCAweDEwNDAsIDB4RTZDNSwgMHhFNkM1LCAweDE3NDksDQorICAgIDB4RTZDNiwgMHhFNkM3LCAweDExNzEsIDB4RTZDOCwgMHhFNkM5LCAweDE3NEEsIDB4RTZDQSwgMHhFNkNBLCAweDEwNDEsDQorICAgIDB4RTZDQiwgMHhFNkQxLCAweDE3NEMsIDB4RTZEMiwgMHhFNkQyLCAweDExNzQsIDB4RTZEMywgMHhFNkQ1LCAweDE3NTMsDQorICAgIDB4RTZENiwgMHhFNkQ2LCAweDExNzUsIDB4RTZENywgMHhFNkQ4LCAweDE3NTYsIDB4RTZEOSwgMHhFNkQ5LCAweDExNzYsDQorICAgIDB4RTZEQSwgMHhFNkRCLCAweDE3NTgsIDB4RTZEQywgMHhFNkRDLCAweDEwNDIsIDB4RTZERCwgMHhFNkRFLCAweDE3NUEsDQorICAgIDB4RTZERiwgMHhFNkRGLCAweDExNzcsIDB4RTZFMCwgMHhFNkUwLCAweDE3NUMsIDB4RTZFMSwgMHhFNkUxLCAweDExNzgsDQorICAgIDB4RTZFMiwgMHhFNkUzLCAweDE3NUQsIDB4RTZFNCwgMHhFNkU0LCAweDExN0EsIDB4RTZFNSwgMHhFNkU1LCAweDExNzksDQorICAgIDB4RTZFNiwgMHhFNkU2LCAweDExN0IsIDB4RTZFNywgMHhFNkU3LCAweDE3NUYsIDB4RTZFOCwgMHhFNkU4LCAweDExN0MsDQorICAgIDB4RTZFOSwgMHhFNkU5LCAweDE3NjAsIDB4RTZFQSwgMHhFNkVCLCAweDExN0UsIDB4RTZFQywgMHhFNkVDLCAweDE5MkYsDQorICAgIDB4RTZFRCwgMHhFNkVFLCAweDE3NjEsIDB4RTZFRiwgMHhFNkVGLCAweDExODEsIDB4RTZGMCwgMHhFNkYwLCAweDE3NjMsDQorICAgIDB4RTZGMSwgMHhFNkYxLCAweDExODIsIDB4RTZGMiwgMHhFNkYyLCAweDE1NTQsIDB4RTZGMywgMHhFNkY0LCAweDE3NjQsDQorICAgIDB4RTZGNSwgMHhFNkY1LCAweDExODMsIDB4RTZGNiwgMHhFNkY2LCAweDEwNDMsIDB4RTZGNywgMHhFNkY3LCAweDEwNDYsDQorICAgIDB4RTZGOCwgMHhFNkY4LCAweDE3NjYsIDB4RTZGOSwgMHhFNkY5LCAweDExODUsIDB4RTZGQSwgMHhFNkZFLCAweDE3NjcsDQorICAgIDB4RTdBMSwgMHhFN0ExLCAweDExODcsIDB4RTdBMiwgMHhFN0E1LCAweDE3NkMsIDB4RTdBNiwgMHhFN0E2LCAweDExODgsDQorICAgIDB4RTdBNywgMHhFN0E4LCAweDE3NzAsIDB4RTdBOSwgMHhFN0E5LCAweDExODksIDB4RTdBQSwgMHhFN0FBLCAweDExOEIsDQorICAgIDB4RTdBQiwgMHhFN0FCLCAweDE3NzIsIDB4RTdBQywgMHhFN0FDLCAweDEwNDcsIDB4RTdBRCwgMHhFN0FELCAweDExOEQsDQorICAgIDB4RTdBRSwgMHhFN0FGLCAweDE3NzMsIDB4RTdCMCwgMHhFN0IwLCAweDExOEUsIDB4RTdCMSwgMHhFN0JFLCAweDE3NzUsDQorICAgIDB4RTdCRiwgMHhFN0JGLCAweDExOEYsIDB4RTdDMCwgMHhFN0MwLCAweDE3ODMsIDB4RTdDMSwgMHhFN0MxLCAweDFFNjcsDQorICAgIDB4RTdDMiwgMHhFN0M1LCAweDE3ODQsIDB4RTdDNiwgMHhFN0M2LCAweDExOTEsIDB4RTdDNywgMHhFN0M3LCAweDExOTMsDQorICAgIDB4RTdDOCwgMHhFN0NBLCAweDE3ODgsIDB4RTdDQiwgMHhFN0NCLCAweDExOTUsIDB4RTdDQywgMHhFN0NDLCAweDE3OEIsDQorICAgIDB4RTdDRCwgMHhFN0NELCAweDExOTYsIDB4RTdDRSwgMHhFN0NFLCAweDE3OEMsIDB4RTdDRiwgMHhFN0QwLCAweDExOTcsDQorICAgIDB4RTdEMSwgMHhFN0QyLCAweDE3OEQsIDB4RTdEMywgMHhFN0QzLCAweDExOUEsIDB4RTdENCwgMHhFN0RFLCAweDE3OEYsDQorICAgIDB4RTdERiwgMHhFN0RGLCAweDExOUMsIDB4RTdFMCwgMHhFN0UzLCAweDE3OUEsIDB4RTdFNCwgMHhFN0U0LCAweDExOUQsDQorICAgIDB4RTdFNSwgMHhFN0U1LCAweDE3OUUsIDB4RTdFNiwgMHhFN0U2LCAweDExOUUsIDB4RTdFNywgMHhFN0Y2LCAweDE3OUYsDQorICAgIDB4RTdGNywgMHhFN0Y3LCAweDE2QTUsIDB4RTdGOCwgMHhFN0ZFLCAweDE3QUYsIDB4RThBMSwgMHhFOEU2LCAweDE3QjYsDQorICAgIDB4RThFNywgMHhFOEU4LCAweDExQzcsIDB4RThFOSwgMHhFOEVGLCAweDE3RkMsIDB4RThGMCwgMHhFOEYwLCAweDExQzksDQorICAgIDB4RThGMSwgMHhFOEYxLCAweDEwNTQsIDB4RThGMiwgMHhFOEY2LCAweDE4MDMsIDB4RThGNywgMHhFOEY3LCAweDExQ0IsDQorICAgIDB4RThGOCwgMHhFOEY4LCAweDE4MDgsIDB4RThGOSwgMHhFOEY5LCAweDE2QTgsIDB4RThGQSwgMHhFOEZBLCAweDE4MDksDQorICAgIDB4RThGQiwgMHhFOEZCLCAweDExQ0MsIDB4RThGQywgMHhFOEZELCAweDE4MEEsIDB4RThGRSwgMHhFOEZFLCAweDExQ0QsDQorICAgIDB4RTlBMSwgMHhFOUE2LCAweDE4MEMsIDB4RTlBNywgMHhFOUE3LCAweDExRDAsIDB4RTlBOCwgMHhFOUFCLCAweDE4MTIsDQorICAgIDB4RTlBQywgMHhFOUFDLCAweDExRDEsIDB4RTlBRCwgMHhFOUNCLCAweDE4MTYsIDB4RTlDQywgMHhFOUNDLCAweDExRDMsDQorICAgIDB4RTlDRCwgMHhFOUY2LCAweDE4MzUsIDB4RTlGNywgMHhFOUY3LCAweDFGMzQsIDB4RTlGOCwgMHhFOUZFLCAweDE4NUYsDQorICAgIDB4RUFBMSwgMHhFQUMwLCAweDE4NjYsIDB4RUFDMSwgMHhFQUMxLCAweDE3RUIsIDB4RUFDMiwgMHhFQUU0LCAweDE4ODYsDQorICAgIDB4RUFFNSwgMHhFQUU1LCAweDExRTEsIDB4RUFFNiwgMHhFQUYzLCAweDE4QTksIDB4RUFGNCwgMHhFQUY0LCAweDEwNTcsDQorICAgIDB4RUFGNSwgMHhFQUY2LCAweDE4QjcsIDB4RUFGNywgMHhFQUY3LCAweDExRTMsIDB4RUFGOCwgMHhFQUZCLCAweDE4QjksDQorICAgIDB4RUFGQywgMHhFQUZDLCAweDExRTUsIDB4RUFGRCwgMHhFQUZELCAweDE4QkQsIDB4RUFGRSwgMHhFQUZFLCAweDExRTYsDQorICAgIDB4RUJBMSwgMHhFQkEzLCAweDE4QkUsIDB4RUJBNCwgMHhFQkE0LCAweDExRTgsIDB4RUJBNSwgMHhFQkE2LCAweDE4QzEsDQorICAgIDB4RUJBNywgMHhFQkE3LCAweDExRUEsIDB4RUJBOCwgMHhFQkE4LCAweDE4QzMsIDB4RUJBOSwgMHhFQkE5LCAweDExRUMsDQorICAgIDB4RUJBQSwgMHhFQkFBLCAweDEwNTgsIDB4RUJBQiwgMHhFQkI5LCAweDE4QzQsIDB4RUJCQSwgMHhFQkJCLCAweDExRUUsDQorICAgIDB4RUJCQywgMHhFQkJDLCAweDE4RDMsIDB4RUJCRCwgMHhFQkJELCAweDExRjAsIDB4RUJCRSwgMHhFQkMwLCAweDE4RDQsDQorICAgIDB4RUJDMSwgMHhFQkMxLCAweDExRjEsIDB4RUJDMiwgMHhFQkMyLCAweDExRjMsIDB4RUJDMywgMHhFQkM1LCAweDE4RDcsDQorICAgIDB4RUJDNiwgMHhFQkM3LCAweDExRjQsIDB4RUJDOCwgMHhFQkNCLCAweDE4REEsIDB4RUJDQywgMHhFQkNDLCAweDExRjcsDQorICAgIDB4RUJDRCwgMHhFQkNFLCAweDE4REUsIDB4RUJDRiwgMHhFQkQxLCAweDExRjgsIDB4RUJEMiwgMHhFQkQyLCAweDE1QjAsDQorICAgIDB4RUJEMywgMHhFQkQ3LCAweDE4RTAsIDB4RUJEOCwgMHhFQkQ4LCAweDExRkIsIDB4RUJEOSwgMHhFQkZFLCAweDE4RTUsDQorICAgIDB4RUNBMSwgMHhFQ0E1LCAweDE5MEIsIDB4RUNBNiwgMHhFQ0E2LCAweDEyMDYsIDB4RUNBNywgMHhFQ0E3LCAweDEyMDgsDQorICAgIDB4RUNBOCwgMHhFQ0E5LCAweDE5MTAsIDB4RUNBQSwgMHhFQ0FBLCAweDEyMEEsIDB4RUNBQiwgMHhFQ0FFLCAweDE5MTIsDQorICAgIDB4RUNBRiwgMHhFQ0FGLCAweDE3M0UsIDB4RUNCMCwgMHhFQ0IxLCAweDEyMEMsIDB4RUNCMiwgMHhFQ0IyLCAweDEwNUIsDQorICAgIDB4RUNCMywgMHhFQ0I0LCAweDE5MTYsIDB4RUNCNSwgMHhFQ0I1LCAweDEyMTEsIDB4RUNCNiwgMHhFQ0I3LCAweDE5MTgsDQorICAgIDB4RUNCOCwgMHhFQ0I4LCAweDEyMTMsIDB4RUNCOSwgMHhFQ0I5LCAweDE5MUEsIDB4RUNCQSwgMHhFQ0JBLCAweDEyMTUsDQorICAgIDB4RUNCQiwgMHhFQ0JGLCAweDE5MUIsIDB4RUNDMCwgMHhFQ0MxLCAweDEyMTgsIDB4RUNDMiwgMHhFQ0M0LCAweDE5MjAsDQorICAgIDB4RUNDNSwgMHhFQ0M1LCAweDEyMUEsIDB4RUNDNiwgMHhFQ0M2LCAweDEyMUMsIDB4RUNDNywgMHhFQ0M4LCAweDE5MjMsDQorICAgIDB4RUNDOSwgMHhFQ0NBLCAweDEwNUMsIDB4RUNDQiwgMHhFQ0Q0LCAweDE5MjUsIDB4RUNENSwgMHhFQ0Q1LCAweDEyMUUsDQorICAgIDB4RUNENiwgMHhFQ0RDLCAweDE5MkYsIDB4RUNERCwgMHhFQ0RFLCAweDEyMjAsIDB4RUNERiwgMHhFQ0UwLCAweDE5MzYsDQorICAgIDB4RUNFMSwgMHhFQ0UxLCAweDEyMjIsIDB4RUNFMiwgMHhFQ0UzLCAweDE5MzgsIDB4RUNFNCwgMHhFQ0U0LCAweDEyMjQsDQorICAgIDB4RUNFNSwgMHhFQ0U2LCAweDE5M0EsIDB4RUNFNywgMHhFQ0U4LCAweDEyMjUsIDB4RUNFOSwgMHhFQ0Y2LCAweDE5M0MsDQorICAgIDB4RUNGNywgMHhFQ0Y4LCAweDEyMjcsIDB4RUNGOSwgMHhFQ0Y5LCAweDE5NEEsIDB4RUNGQSwgMHhFQ0ZBLCAweDEyMkEsDQorICAgIDB4RUNGQiwgMHhFQ0ZFLCAweDE5NEIsIDB4RURBMSwgMHhFREEzLCAweDEyMkQsIDB4RURBNCwgMHhFREVELCAweDE5NEYsDQorICAgIDB4RURFRSwgMHhFREVFLCAweDE0RTcsIDB4RURFRiwgMHhFREZFLCAweDE5OTksIDB4RUVBMSwgMHhFRURBLCAweDE5QTksDQorICAgIDB4RUVEQiwgMHhFRURCLCAweDE5NUUsIDB4RUVEQywgMHhFRUZFLCAweDE5RTMsIDB4RUZBMSwgMHhFRkZFLCAweDFBMDYsDQorICAgIDB4RjBBMSwgMHhGMEZFLCAweDFBNjQsIDB4RjFBMSwgMHhGMUZFLCAweDFBQzIsIDB4RjJBMSwgMHhGMkJDLCAweDFCMjAsDQorICAgIDB4RjJCRCwgMHhGMkJELCAweDE2NjMsIDB4RjJCRSwgMHhGMkY5LCAweDFCM0MsIDB4RjJGQSwgMHhGMkZBLCAweDE2OEIsDQorICAgIDB4RjJGQiwgMHhGMkZFLCAweDFCNzgsIDB4RjNBMSwgMHhGM0IwLCAweDFCN0MsIDB4RjNCMSwgMHhGM0IxLCAweDEwNUYsDQorICAgIDB4RjNCMiwgMHhGM0ZFLCAweDFCOEMsIDB4RjRBMSwgMHhGNEE2LCAweDFCRDksIDB4RjRBNywgMHhGNEE3LCAweDE5NTQsDQorICAgIDB4RjRBOCwgMHhGNEVELCAweDFCREYsIDB4RjRFRSwgMHhGNEVFLCAweDFBMUMsIDB4RjRFRiwgMHhGNEZFLCAweDFDMjUsDQorICAgIDB4RjVBMSwgMHhGNUZFLCAweDFDMzUsIDB4RjZBMSwgMHhGNkYzLCAweDFDOTMsIDB4RjZGNCwgMHhGNkY0LCAweDEwQjcsDQorICAgIDB4RjZGNSwgMHhGNkY1LCAweDFDRTYsIDB4RjZGNiwgMHhGNkY2LCAweDFCRTMsIDB4RjZGNywgMHhGNkZFLCAweDFDRTcsDQorICAgIDB4RjdBMSwgMHhGN0I3LCAweDFDRUYsIDB4RjdCOCwgMHhGN0I4LCAweDEwOTcsIDB4RjdCOSwgMHhGN0M3LCAweDFEMDYsDQorICAgIDB4RjdDOCwgMHhGN0M4LCAweDEwQUEsIDB4RjdDOSwgMHhGN0QyLCAweDFEMTUsIDB4RjdEMywgMHhGN0QzLCAweDEwRjQsDQorICAgIDB4RjdENCwgMHhGN0ZFLCAweDFEMUYsIDB4RjhBMSwgMHhGOERBLCAweDFENEEsIDB4RjhEQiwgMHhGOERCLCAweDFEOTQsDQorICAgIDB4RjhEQywgMHhGOEVGLCAweDFEODQsIDB4RjhGMCwgMHhGOEYwLCAweDEzRTAsIDB4RjhGMSwgMHhGOEZFLCAweDFEOTgsDQorICAgIDB4RjlBMSwgMHhGOUZFLCAweDFEQTYsIDB4RkFBMSwgMHhGQUExLCAweDFFMUQsIDB4RkFBMiwgMHhGQUEyLCAweDBERTYsDQorICAgIDB4RkFBMywgMHhGQUU1LCAweDFFMDQsIDB4RkFFNiwgMHhGQUU2LCAweDBFM0MsIDB4RkFFNywgMHhGQUZFLCAweDFFNDcsDQorICAgIDB4RkJBMSwgMHhGQkZFLCAweDFFNUYsIDB4RkNBMSwgMHhGQ0E4LCAweDFFQkQsIDB4RkNBOSwgMHhGQ0E5LCAweDBFRTcsDQorICAgIDB4RkNBQSwgMHhGQ0ZFLCAweDFFQzUsIDB4RkRBMSwgMHhGREZFLCAweDFGMUEsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL0tTQy1FVUMtVl8wLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvS1NDLUVVQy1WXzAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NWE2YTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL0tTQy1FVUMtVl8wLmNwcApAQCAtMCwwICsxLDE0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfS1NDX0VVQ19WXzBbMTYgKiAzXSA9IHsNCisgICAgMHhBMUEyLCAweEExQTMsIDB4MUY3OCwgMHhBMUE1LCAweEExQTUsIDB4MUY3QSwgMHhBMUE2LCAweEExQTYsIDB4MjA4MCwNCisgICAgMHhBMUE5LCAweEExQUIsIDB4MUY3QiwgMHhBMUFELCAweEExQUQsIDB4MUY3RSwgMHhBMUIyLCAweEExQkQsIDB4MUY3RiwNCisgICAgMHhBMUVCLCAweEExRUIsIDB4MUY4QiwgMHhBM0ExLCAweEEzQTEsIDB4MUY4QywgMHhBM0E4LCAweEEzQTksIDB4MUY4RCwNCisgICAgMHhBM0FDLCAweEEzQUMsIDB4MUY4RiwgMHhBM0FFLCAweEEzQUUsIDB4MUY5MCwgMHhBM0JBLCAweEEzQkYsIDB4MUY5MSwNCisgICAgMHhBM0RCLCAweEEzREIsIDB4MUY5NywgMHhBM0RELCAweEEzREQsIDB4MUY5OCwgMHhBM0RGLCAweEEzREYsIDB4MUY5OSwNCisgICAgMHhBM0ZCLCAweEEzRkUsIDB4MUY5QSwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvS1NDbXMtVUhDLUhXLUhfMS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL0tTQ21zLVVIQy1IVy1IXzEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NWJhYjgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL0tTQ21zLVVIQy1IVy1IXzEuY3BwCkBAIC0wLDAgKzEsMjMzIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfS1NDbXNfVUhDX0hXX0hfMVs2NzUgKiAzXSA9IHsNCisgICAgMHgwMDIwLCAweDAwN0UsIDB4MUY5RSwgMHg4MTQxLCAweDgxNUEsIDB4MjQ3NSwgMHg4MTYxLCAweDgxN0EsIDB4MjQ4RiwNCisgICAgMHg4MTgxLCAweDgxRkUsIDB4MjRBOSwgMHg4MjQxLCAweDgyNUEsIDB4MjUyNywgMHg4MjYxLCAweDgyN0EsIDB4MjU0MSwNCisgICAgMHg4MjgxLCAweDgyRkUsIDB4MjU1QiwgMHg4MzQxLCAweDgzNUEsIDB4MjVEOSwgMHg4MzYxLCAweDgzN0EsIDB4MjVGMywNCisgICAgMHg4MzgxLCAweDgzRkUsIDB4MjYwRCwgMHg4NDQxLCAweDg0NUEsIDB4MjY4QiwgMHg4NDYxLCAweDg0N0EsIDB4MjZBNSwNCisgICAgMHg4NDgxLCAweDg0RkUsIDB4MjZCRiwgMHg4NTQxLCAweDg1NUEsIDB4MjczRCwgMHg4NTYxLCAweDg1N0EsIDB4Mjc1NywNCisgICAgMHg4NTgxLCAweDg1RkUsIDB4Mjc3MSwgMHg4NjQxLCAweDg2NUEsIDB4MjdFRiwgMHg4NjYxLCAweDg2N0EsIDB4MjgwOSwNCisgICAgMHg4NjgxLCAweDg2RkUsIDB4MjgyMywgMHg4NzQxLCAweDg3NUEsIDB4MjhBMSwgMHg4NzYxLCAweDg3N0EsIDB4MjhCQiwNCisgICAgMHg4NzgxLCAweDg3RkUsIDB4MjhENSwgMHg4ODQxLCAweDg4NUEsIDB4Mjk1MywgMHg4ODYxLCAweDg4N0EsIDB4Mjk2RCwNCisgICAgMHg4ODgxLCAweDg4RkUsIDB4Mjk4NywgMHg4OTQxLCAweDg5NUEsIDB4MkEwNSwgMHg4OTYxLCAweDg5N0EsIDB4MkExRiwNCisgICAgMHg4OTgxLCAweDg5RkUsIDB4MkEzOSwgMHg4QTQxLCAweDhBNUEsIDB4MkFCNywgMHg4QTYxLCAweDhBN0EsIDB4MkFEMSwNCisgICAgMHg4QTgxLCAweDhBRkUsIDB4MkFFQiwgMHg4QjQxLCAweDhCNUEsIDB4MkI2OSwgMHg4QjYxLCAweDhCN0EsIDB4MkI4MywNCisgICAgMHg4QjgxLCAweDhCRkUsIDB4MkI5RCwgMHg4QzQxLCAweDhDNUEsIDB4MkMxQiwgMHg4QzYxLCAweDhDN0EsIDB4MkMzNSwNCisgICAgMHg4QzgxLCAweDhDRkUsIDB4MkM0RiwgMHg4RDQxLCAweDhENUEsIDB4MkNDRCwgMHg4RDYxLCAweDhEN0EsIDB4MkNFNywNCisgICAgMHg4RDgxLCAweDhERkUsIDB4MkQwMSwgMHg4RTQxLCAweDhFNUEsIDB4MkQ3RiwgMHg4RTYxLCAweDhFN0EsIDB4MkQ5OSwNCisgICAgMHg4RTgxLCAweDhFRkUsIDB4MkRCMywgMHg4RjQxLCAweDhGNUEsIDB4MkUzMSwgMHg4RjYxLCAweDhGN0EsIDB4MkU0QiwNCisgICAgMHg4RjgxLCAweDhGRkUsIDB4MkU2NSwgMHg5MDQxLCAweDkwNUEsIDB4MkVFMywgMHg5MDYxLCAweDkwN0EsIDB4MkVGRCwNCisgICAgMHg5MDgxLCAweDkwRkUsIDB4MkYxNywgMHg5MTQxLCAweDkxNUEsIDB4MkY5NSwgMHg5MTYxLCAweDkxN0EsIDB4MkZBRiwNCisgICAgMHg5MTgxLCAweDkxRkUsIDB4MkZDOSwgMHg5MjQxLCAweDkyNUEsIDB4MzA0NywgMHg5MjYxLCAweDkyN0EsIDB4MzA2MSwNCisgICAgMHg5MjgxLCAweDkyRkUsIDB4MzA3QiwgMHg5MzQxLCAweDkzNUEsIDB4MzBGOSwgMHg5MzYxLCAweDkzN0EsIDB4MzExMywNCisgICAgMHg5MzgxLCAweDkzRkUsIDB4MzEyRCwgMHg5NDQxLCAweDk0NUEsIDB4MzFBQiwgMHg5NDYxLCAweDk0N0EsIDB4MzFDNSwNCisgICAgMHg5NDgxLCAweDk0RkUsIDB4MzFERiwgMHg5NTQxLCAweDk1NUEsIDB4MzI1RCwgMHg5NTYxLCAweDk1N0EsIDB4MzI3NywNCisgICAgMHg5NTgxLCAweDk1RkUsIDB4MzI5MSwgMHg5NjQxLCAweDk2NUEsIDB4MzMwRiwgMHg5NjYxLCAweDk2N0EsIDB4MzMyOSwNCisgICAgMHg5NjgxLCAweDk2RkUsIDB4MzM0MywgMHg5NzQxLCAweDk3NUEsIDB4MzNDMSwgMHg5NzYxLCAweDk3N0EsIDB4MzNEQiwNCisgICAgMHg5NzgxLCAweDk3RkUsIDB4MzNGNSwgMHg5ODQxLCAweDk4NUEsIDB4MzQ3MywgMHg5ODYxLCAweDk4N0EsIDB4MzQ4RCwNCisgICAgMHg5ODgxLCAweDk4RkUsIDB4MzRBNywgMHg5OTQxLCAweDk5NUEsIDB4MzUyNSwgMHg5OTYxLCAweDk5N0EsIDB4MzUzRiwNCisgICAgMHg5OTgxLCAweDk5RkUsIDB4MzU1OSwgMHg5QTQxLCAweDlBNUEsIDB4MzVENywgMHg5QTYxLCAweDlBN0EsIDB4MzVGMSwNCisgICAgMHg5QTgxLCAweDlBRkUsIDB4MzYwQiwgMHg5QjQxLCAweDlCNUEsIDB4MzY4OSwgMHg5QjYxLCAweDlCN0EsIDB4MzZBMywNCisgICAgMHg5QjgxLCAweDlCRkUsIDB4MzZCRCwgMHg5QzQxLCAweDlDNUEsIDB4MzczQiwgMHg5QzYxLCAweDlDN0EsIDB4Mzc1NSwNCisgICAgMHg5QzgxLCAweDlDRkUsIDB4Mzc2RiwgMHg5RDQxLCAweDlENUEsIDB4MzdFRCwgMHg5RDYxLCAweDlEN0EsIDB4MzgwNywNCisgICAgMHg5RDgxLCAweDlERkUsIDB4MzgyMSwgMHg5RTQxLCAweDlFNUEsIDB4Mzg5RiwgMHg5RTYxLCAweDlFN0EsIDB4MzhCOSwNCisgICAgMHg5RTgxLCAweDlFRkUsIDB4MzhEMywgMHg5RjQxLCAweDlGNUEsIDB4Mzk1MSwgMHg5RjYxLCAweDlGN0EsIDB4Mzk2QiwNCisgICAgMHg5RjgxLCAweDlGRkUsIDB4Mzk4NSwgMHhBMDQxLCAweEEwNUEsIDB4M0EwMywgMHhBMDYxLCAweEEwN0EsIDB4M0ExRCwNCisgICAgMHhBMDgxLCAweEEwRkUsIDB4M0EzNywgMHhBMTQxLCAweEExNUEsIDB4M0FCNSwgMHhBMTYxLCAweEExN0EsIDB4M0FDRiwNCisgICAgMHhBMTgxLCAweEExQTAsIDB4M0FFOSwgMHhBMUExLCAweEExRkUsIDB4MDA2NSwgMHhBMjQxLCAweEEyNUEsIDB4M0IwOSwNCisgICAgMHhBMjYxLCAweEEyN0EsIDB4M0IyMywgMHhBMjgxLCAweEEyQTAsIDB4M0IzRCwgMHhBMkExLCAweEEyRTUsIDB4MDBDMywNCisgICAgMHhBMzQxLCAweEEzNUEsIDB4M0I1RCwgMHhBMzYxLCAweEEzN0EsIDB4M0I3NywgMHhBMzgxLCAweEEzQTAsIDB4M0I5MSwNCisgICAgMHhBM0ExLCAweEEzRkUsIDB4MDEwOCwgMHhBNDQxLCAweEE0NUEsIDB4M0JCMSwgMHhBNDYxLCAweEE0N0EsIDB4M0JDQiwNCisgICAgMHhBNDgxLCAweEE0QTAsIDB4M0JFNSwgMHhBNEExLCAweEE0RDMsIDB4MDE2NiwgMHhBNEQ1LCAweEE0RkUsIDB4MDE5OSwNCisgICAgMHhBNTQxLCAweEE1NUEsIDB4M0MwNSwgMHhBNTYxLCAweEE1N0EsIDB4M0MxRiwgMHhBNTgxLCAweEE1QTAsIDB4M0MzOSwNCisgICAgMHhBNUExLCAweEE1QUEsIDB4MDFDMywgMHhBNUIwLCAweEE1QjksIDB4MDFDRCwgMHhBNUMxLCAweEE1RDgsIDB4MDFENywNCisgICAgMHhBNUUxLCAweEE1RjgsIDB4MDFFRiwgMHhBNjQxLCAweEE2NUEsIDB4M0M1OSwgMHhBNjYxLCAweEE2N0EsIDB4M0M3MywNCisgICAgMHhBNjgxLCAweEE2QTAsIDB4M0M4RCwgMHhBNkExLCAweEE2RTQsIDB4MDIwNywgMHhBNzQxLCAweEE3NUEsIDB4M0NBRCwNCisgICAgMHhBNzYxLCAweEE3N0EsIDB4M0NDNywgMHhBNzgxLCAweEE3QTAsIDB4M0NFMSwgMHhBN0ExLCAweEE3RUYsIDB4MDI0QiwNCisgICAgMHhBODQxLCAweEE4NUEsIDB4M0QwMSwgMHhBODYxLCAweEE4N0EsIDB4M0QxQiwgMHhBODgxLCAweEE4QTAsIDB4M0QzNSwNCisgICAgMHhBOEExLCAweEE4QTQsIDB4MDI5QSwgMHhBOEE2LCAweEE4QTYsIDB4MDI5RSwgMHhBOEE4LCAweEE4QUYsIDB4MDI5RiwNCisgICAgMHhBOEIxLCAweEE4RkUsIDB4MDJBNywgMHhBOTQxLCAweEE5NUEsIDB4M0Q1NSwgMHhBOTYxLCAweEE5N0EsIDB4M0Q2RiwNCisgICAgMHhBOTgxLCAweEE5QTAsIDB4M0Q4OSwgMHhBOUExLCAweEE5RkUsIDB4MDJGNSwgMHhBQTQxLCAweEFBNUEsIDB4M0RBOSwNCisgICAgMHhBQTYxLCAweEFBN0EsIDB4M0RDMywgMHhBQTgxLCAweEFBQTAsIDB4M0RERCwgMHhBQUExLCAweEFBRjMsIDB4MDM1MywNCisgICAgMHhBQjQxLCAweEFCNUEsIDB4M0RGRCwgMHhBQjYxLCAweEFCN0EsIDB4M0UxNywgMHhBQjgxLCAweEFCQTAsIDB4M0UzMSwNCisgICAgMHhBQkExLCAweEFCRjYsIDB4MDNBNiwgMHhBQzQxLCAweEFDNUEsIDB4M0U1MSwgMHhBQzYxLCAweEFDN0EsIDB4M0U2QiwNCisgICAgMHhBQzgxLCAweEFDQTAsIDB4M0U4NSwgMHhBQ0ExLCAweEFDQzEsIDB4MDNGQywgMHhBQ0QxLCAweEFDRjEsIDB4MDQxRCwNCisgICAgMHhBRDQxLCAweEFENUEsIDB4M0VBNSwgMHhBRDYxLCAweEFEN0EsIDB4M0VCRiwgMHhBRDgxLCAweEFEQTAsIDB4M0VEOSwNCisgICAgMHhBRTQxLCAweEFFNUEsIDB4M0VGOSwgMHhBRTYxLCAweEFFN0EsIDB4M0YxMywgMHhBRTgxLCAweEFFQTAsIDB4M0YyRCwNCisgICAgMHhBRjQxLCAweEFGNUEsIDB4M0Y0RCwgMHhBRjYxLCAweEFGN0EsIDB4M0Y2NywgMHhBRjgxLCAweEFGQTAsIDB4M0Y4MSwNCisgICAgMHhCMDQxLCAweEIwNUEsIDB4M0ZBMSwgMHhCMDYxLCAweEIwN0EsIDB4M0ZCQiwgMHhCMDgxLCAweEIwQTAsIDB4M0ZENSwNCisgICAgMHhCMEExLCAweEIwRkUsIDB4MDQzRSwgMHhCMTQxLCAweEIxNUEsIDB4M0ZGNSwgMHhCMTYxLCAweEIxN0EsIDB4NDAwRiwNCisgICAgMHhCMTgxLCAweEIxQTAsIDB4NDAyOSwgMHhCMUExLCAweEIxRkUsIDB4MDQ5QywgMHhCMjQxLCAweEIyNUEsIDB4NDA0OSwNCisgICAgMHhCMjYxLCAweEIyN0EsIDB4NDA2MywgMHhCMjgxLCAweEIyQTAsIDB4NDA3RCwgMHhCMkExLCAweEIyRkUsIDB4MDRGQSwNCisgICAgMHhCMzQxLCAweEIzNUEsIDB4NDA5RCwgMHhCMzYxLCAweEIzN0EsIDB4NDBCNywgMHhCMzgxLCAweEIzQTAsIDB4NDBEMSwNCisgICAgMHhCM0ExLCAweEIzRkUsIDB4MDU1OCwgMHhCNDQxLCAweEI0NUEsIDB4NDBGMSwgMHhCNDYxLCAweEI0N0EsIDB4NDEwQiwNCisgICAgMHhCNDgxLCAweEI0QTAsIDB4NDEyNSwgMHhCNEExLCAweEI0RkUsIDB4MDVCNiwgMHhCNTQxLCAweEI1NUEsIDB4NDE0NSwNCisgICAgMHhCNTYxLCAweEI1N0EsIDB4NDE1RiwgMHhCNTgxLCAweEI1QTAsIDB4NDE3OSwgMHhCNUExLCAweEI1RkUsIDB4MDYxNCwNCisgICAgMHhCNjQxLCAweEI2NUEsIDB4NDE5OSwgMHhCNjYxLCAweEI2N0EsIDB4NDFCMywgMHhCNjgxLCAweEI2QTAsIDB4NDFDRCwNCisgICAgMHhCNkExLCAweEI2RkUsIDB4MDY3MiwgMHhCNzQxLCAweEI3NUEsIDB4NDFFRCwgMHhCNzYxLCAweEI3N0EsIDB4NDIwNywNCisgICAgMHhCNzgxLCAweEI3QTAsIDB4NDIyMSwgMHhCN0ExLCAweEI3RkUsIDB4MDZEMCwgMHhCODQxLCAweEI4NUEsIDB4NDI0MSwNCisgICAgMHhCODYxLCAweEI4N0EsIDB4NDI1QiwgMHhCODgxLCAweEI4QTAsIDB4NDI3NSwgMHhCOEExLCAweEI4RkUsIDB4MDcyRSwNCisgICAgMHhCOTQxLCAweEI5NUEsIDB4NDI5NSwgMHhCOTYxLCAweEI5N0EsIDB4NDJBRiwgMHhCOTgxLCAweEI5QTAsIDB4NDJDOSwNCisgICAgMHhCOUExLCAweEI5RkUsIDB4MDc4QywgMHhCQTQxLCAweEJBNUEsIDB4NDJFOSwgMHhCQTYxLCAweEJBN0EsIDB4NDMwMywNCisgICAgMHhCQTgxLCAweEJBQTAsIDB4NDMxRCwgMHhCQUExLCAweEJBRkUsIDB4MDdFQSwgMHhCQjQxLCAweEJCNUEsIDB4NDMzRCwNCisgICAgMHhCQjYxLCAweEJCN0EsIDB4NDM1NywgMHhCQjgxLCAweEJCQTAsIDB4NDM3MSwgMHhCQkExLCAweEJCRkUsIDB4MDg0OCwNCisgICAgMHhCQzQxLCAweEJDNUEsIDB4NDM5MSwgMHhCQzYxLCAweEJDN0EsIDB4NDNBQiwgMHhCQzgxLCAweEJDQTAsIDB4NDNDNSwNCisgICAgMHhCQ0ExLCAweEJDRkUsIDB4MDhBNiwgMHhCRDQxLCAweEJENUEsIDB4NDNFNSwgMHhCRDYxLCAweEJEN0EsIDB4NDNGRiwNCisgICAgMHhCRDgxLCAweEJEQTAsIDB4NDQxOSwgMHhCREExLCAweEJERkUsIDB4MDkwNCwgMHhCRTQxLCAweEJFNUEsIDB4NDQzOSwNCisgICAgMHhCRTYxLCAweEJFN0EsIDB4NDQ1MywgMHhCRTgxLCAweEJFQTAsIDB4NDQ2RCwgMHhCRUExLCAweEJFRkUsIDB4MDk2MiwNCisgICAgMHhCRjQxLCAweEJGNUEsIDB4NDQ4RCwgMHhCRjYxLCAweEJGN0EsIDB4NDRBNywgMHhCRjgxLCAweEJGQTAsIDB4NDRDMSwNCisgICAgMHhCRkExLCAweEJGRkUsIDB4MDlDMCwgMHhDMDQxLCAweEMwNUEsIDB4NDRFMSwgMHhDMDYxLCAweEMwN0EsIDB4NDRGQiwNCisgICAgMHhDMDgxLCAweEMwQTAsIDB4NDUxNSwgMHhDMEExLCAweEMwRkUsIDB4MEExRSwgMHhDMTQxLCAweEMxNUEsIDB4NDUzNSwNCisgICAgMHhDMTYxLCAweEMxN0EsIDB4NDU0RiwgMHhDMTgxLCAweEMxQTAsIDB4NDU2OSwgMHhDMUExLCAweEMxRkUsIDB4MEE3QywNCisgICAgMHhDMjQxLCAweEMyNUEsIDB4NDU4OSwgMHhDMjYxLCAweEMyN0EsIDB4NDVBMywgMHhDMjgxLCAweEMyQTAsIDB4NDVCRCwNCisgICAgMHhDMkExLCAweEMyRkUsIDB4MEFEQSwgMHhDMzQxLCAweEMzNUEsIDB4NDVERCwgMHhDMzYxLCAweEMzN0EsIDB4NDVGNywNCisgICAgMHhDMzgxLCAweEMzQTAsIDB4NDYxMSwgMHhDM0ExLCAweEMzRkUsIDB4MEIzOCwgMHhDNDQxLCAweEM0NUEsIDB4NDYzMSwNCisgICAgMHhDNDYxLCAweEM0N0EsIDB4NDY0QiwgMHhDNDgxLCAweEM0QTAsIDB4NDY2NSwgMHhDNEExLCAweEM0RkUsIDB4MEI5NiwNCisgICAgMHhDNTQxLCAweEM1NUEsIDB4NDY4NSwgMHhDNTYxLCAweEM1N0EsIDB4NDY5RiwgMHhDNTgxLCAweEM1QTAsIDB4NDZCOSwNCisgICAgMHhDNUExLCAweEM1RkUsIDB4MEJGNCwgMHhDNjQxLCAweEM2NTIsIDB4NDZEOSwgMHhDNkExLCAweEM2RkUsIDB4MEM1MiwNCisgICAgMHhDN0ExLCAweEM3RkUsIDB4MENCMCwgMHhDOEExLCAweEM4RkUsIDB4MEQwRSwgMHhDQUExLCAweENBRkUsIDB4MEQ2QywNCisgICAgMHhDQkExLCAweENCQ0YsIDB4MERDQSwgMHhDQkQwLCAweENCRDAsIDB4MTAxNCwgMHhDQkQxLCAweENCRDUsIDB4MERGOSwNCisgICAgMHhDQkQ2LCAweENCRDYsIDB4MEU1RSwgMHhDQkQ3LCAweENCRTYsIDB4MERGRSwgMHhDQkU3LCAweENCRTcsIDB4MUI4RCwNCisgICAgMHhDQkU4LCAweENCRkUsIDB4MEUwRSwgMHhDQ0ExLCAweENDRkUsIDB4MEUyNSwgMHhDREExLCAweENEQ0UsIDB4MEU4MywNCisgICAgMHhDRENGLCAweENEQ0YsIDB4MEQ4NCwgMHhDREQwLCAweENERTcsIDB4MEVCMSwgMHhDREU4LCAweENERTgsIDB4MUVEQywNCisgICAgMHhDREU5LCAweENERkUsIDB4MEVDOSwgMHhDRUExLCAweENFQUMsIDB4MEVERiwgMHhDRUFELCAweENFQUQsIDB4MEVEQSwNCisgICAgMHhDRUFFLCAweENFRkUsIDB4MEVFQiwgMHhDRkExLCAweENGRkEsIDB4MEYzQywgMHhDRkZCLCAweENGRkIsIDB4MEYzRSwNCisgICAgMHhDRkZDLCAweENGRkUsIDB4MEY5NiwgMHhEMEExLCAweEQwQTEsIDB4MEY5OSwgMHhEMEEyLCAweEQwQTIsIDB4MEY2QSwNCisgICAgMHhEMEEzLCAweEQwQjcsIDB4MEY5QSwgMHhEMEI4LCAweEQwQjgsIDB4MEY2QSwgMHhEMEI5LCAweEQwQ0YsIDB4MEZBRiwNCisgICAgMHhEMEQwLCAweEQwRDAsIDB4MEU3QywgMHhEMEQxLCAweEQwREMsIDB4MEZDNiwgMHhEMERELCAweEQwREQsIDB4MTAyMywNCisgICAgMHhEMERFLCAweEQwRkUsIDB4MEZEMiwgMHhEMUExLCAweEQxRDMsIDB4MEZGMywgMHhEMUQ0LCAweEQxRDQsIDB4MTExNiwNCisgICAgMHhEMUQ1LCAweEQxRDUsIDB4MTAzQywgMHhEMUQ2LCAweEQxRDcsIDB4MTAyNiwgMHhEMUQ4LCAweEQxRDgsIDB4MTExNywNCisgICAgMHhEMUQ5LCAweEQxREEsIDB4MTAyOCwgMHhEMURCLCAweEQxRTAsIDB4MTExOCwgMHhEMUUxLCAweEQxRTEsIDB4MTAyQSwNCisgICAgMHhEMUUyLCAweEQxRTIsIDB4MTZBOCwgMHhEMUUzLCAweEQxRTUsIDB4MTExRSwgMHhEMUU2LCAweEQxRTYsIDB4MTEyMiwNCisgICAgMHhEMUU3LCAweEQxRTcsIDB4MTAyQiwgMHhEMUU4LCAweEQxRUIsIDB4MTEyMywgMHhEMUVDLCAweEQxRUMsIDB4MTAyQywNCisgICAgMHhEMUVELCAweEQxRUQsIDB4MTEyNywgMHhEMUVFLCAweEQxRUUsIDB4MTAyRCwgMHhEMUVGLCAweEQxRjAsIDB4MTEyQSwNCisgICAgMHhEMUYxLCAweEQxRjEsIDB4MTAyRSwgMHhEMUYyLCAweEQxRjIsIDB4MTEyQywgMHhEMUYzLCAweEQxRjUsIDB4MTAyRiwNCisgICAgMHhEMUY2LCAweEQxRjYsIDB4MTEyRiwgMHhEMUY3LCAweEQxRjksIDB4MTAzMiwgMHhEMUZBLCAweEQxRkEsIDB4MTEzMywNCisgICAgMHhEMUZCLCAweEQxRkIsIDB4MTAzNSwgMHhEMUZDLCAweEQxRkQsIDB4MTEzNiwgMHhEMUZFLCAweEQxRkUsIDB4MTEzOSwNCisgICAgMHhEMkExLCAweEQyQTEsIDB4MTAzNiwgMHhEMkEyLCAweEQyQTMsIDB4MTEzQSwgMHhEMkE0LCAweEQyQTYsIDB4MTAzNywNCisgICAgMHhEMkE3LCAweEQyQUEsIDB4MTEzQywgMHhEMkFCLCAweEQyQUIsIDB4MTE0MywgMHhEMkFDLCAweEQyQUMsIDB4MTAzQSwNCisgICAgMHhEMkFELCAweEQyQUQsIDB4MTE0NCwgMHhEMkFFLCAweEQyQjEsIDB4MTAzQiwgMHhEMkIyLCAweEQyQjIsIDB4MTE0OCwNCisgICAgMHhEMkIzLCAweEQyQkQsIDB4MTAzRiwgMHhEMkJFLCAweEQyQkUsIDB4MTE5RiwgMHhEMkJGLCAweEQyQzEsIDB4MTA0QSwNCisgICAgMHhEMkMyLCAweEQyQzMsIDB4MTFBMSwgMHhEMkM0LCAweEQyQzQsIDB4MTFBNSwgMHhEMkM1LCAweEQyQzUsIDB4MTA0RCwNCisgICAgMHhEMkM2LCAweEQyQ0EsIDB4MTFBNiwgMHhEMkNCLCAweEQyQ0IsIDB4MTFBQywgMHhEMkNDLCAweEQyQ0MsIDB4MTA0RSwNCisgICAgMHhEMkNELCAweEQyQ0UsIDB4MTFBRCwgMHhEMkNGLCAweEQyRDQsIDB4MTFCMCwgMHhEMkQ1LCAweEQyRDcsIDB4MTFCNywNCisgICAgMHhEMkQ4LCAweEQyRDgsIDB4MTA0RiwgMHhEMkQ5LCAweEQyREEsIDB4MTFCRCwgMHhEMkRCLCAweEQyREQsIDB4MTA1MCwNCisgICAgMHhEMkRFLCAweEQyREYsIDB4MTFDMSwgMHhEMkUwLCAweEQyRTAsIDB4MTA1MywgMHhEMkUxLCAweEQyRTEsIDB4MTFDMywNCisgICAgMHhEMkUyLCAweEQyRTIsIDB4MTFDNiwgMHhEMkUzLCAweEQyRTMsIDB4MTA1NCwgMHhEMkU0LCAweEQyRTQsIDB4MTFENCwNCisgICAgMHhEMkU1LCAweEQyRTgsIDB4MTFENiwgMHhEMkU5LCAweEQyRUEsIDB4MTFEQiwgMHhEMkVCLCAweEQyRUIsIDB4MTFFMCwNCisgICAgMHhEMkVDLCAweEQyRUYsIDB4MTA1NSwgMHhEMkYwLCAweEQyRjMsIDB4MTFGQywgMHhEMkY0LCAweEQyRjUsIDB4MTIwMSwNCisgICAgMHhEMkY2LCAweEQyRjYsIDB4MTA1OSwgMHhEMkY3LCAweEQyRjgsIDB4MTIwMywgMHhEMkY5LCAweEQyRkUsIDB4MTA1QSwNCisgICAgMHhEM0ExLCAweEQzRkUsIDB4MTA2MCwgMHhENEExLCAweEQ0RTUsIDB4MTBCRSwgMHhENEU2LCAweEQ0RTYsIDB4MTBERSwNCisgICAgMHhENEU3LCAweEQ0RkIsIDB4MTEwMywgMHhENEZDLCAweEQ0RkMsIDB4MTAyOCwgMHhENEZELCAweEQ0RkUsIDB4MTExOCwNCisgICAgMHhENUExLCAweEQ1QTQsIDB4MTExQSwgMHhENUE1LCAweEQ1QTUsIDB4MTZBOCwgMHhENUE2LCAweEQ1QUEsIDB4MTExRSwNCisgICAgMHhENUFCLCAweEQ1QUIsIDB4MTAyQiwgMHhENUFDLCAweEQ1QUQsIDB4MTEyMywgMHhENUFFLCAweEQ1QUUsIDB4MTA2MCwNCisgICAgMHhENUFGLCAweEQ1RkUsIDB4MTEyNSwgMHhENkExLCAweEQ2QjcsIDB4MTE3NSwgMHhENkI4LCAweEQ2QjgsIDB4MTA0NywNCisgICAgMHhENkI5LCAweEQ2Q0MsIDB4MTE4QywgMHhENkNELCAweEQ2Q0QsIDB4MTA0QywgMHhENkNFLCAweEQ2RkUsIDB4MTFBMCwNCisgICAgMHhEN0ExLCAweEQ3Q0EsIDB4MTFEMSwgMHhEN0NCLCAweEQ3Q0IsIDB4MTVCMCwgMHhEN0NDLCAweEQ3RTMsIDB4MTFGQiwNCisgICAgMHhEN0U0LCAweEQ3RTQsIDB4MTkxOCwgMHhEN0U1LCAweEQ3RkUsIDB4MTIxMywgMHhEOEExLCAweEQ4RkUsIDB4MTIyRCwNCisgICAgMHhEOUExLCAweEQ5RkUsIDB4MTI4QiwgMHhEQUExLCAweERBRkUsIDB4MTJFOSwgMHhEQkExLCAweERCQzQsIDB4MTM0NywNCisgICAgMHhEQkM1LCAweERCQzUsIDB4MTQxRiwgMHhEQkM2LCAweERCRTMsIDB4MTM2QiwgMHhEQkU0LCAweERCRTQsIDB4MTMzQSwNCisgICAgMHhEQkU1LCAweERCRkUsIDB4MTM4OSwgMHhEQ0ExLCAweERDQTQsIDB4MTNBMywgMHhEQ0E1LCAweERDQTUsIDB4MUQ1RSwNCisgICAgMHhEQ0E2LCAweERDRkUsIDB4MTNBNywgMHhEREExLCAweEREQTQsIDB4MTQwMCwgMHhEREE1LCAweEREQTUsIDB4MTNENywNCisgICAgMHhEREE2LCAweERERDQsIDB4MTQwNCwgMHhEREQ1LCAweERERDUsIDB4MTNGNSwgMHhEREQ2LCAweERERjMsIDB4MTQzMywNCisgICAgMHhEREY0LCAweERERjQsIDB4MURCNywgMHhEREY1LCAweERERkUsIDB4MTQ1MSwgMHhERUExLCAweERFRkIsIDB4MTQ1QiwNCisgICAgMHhERUZDLCAweERFRkMsIDB4MTVEMCwgMHhERUZELCAweERFRkQsIDB4MTRCNiwgMHhERUZFLCAweERFRkUsIDB4MTRGNywNCisgICAgMHhERkExLCAweERGQjIsIDB4MTRCNywgMHhERkIzLCAweERGQjMsIDB4MUJBQiwgMHhERkI0LCAweERGRTAsIDB4MTRDOSwNCisgICAgMHhERkUxLCAweERGRTEsIDB4MTRGMiwgMHhERkUyLCAweERGRTcsIDB4MTRGNiwgMHhERkU4LCAweERGRTgsIDB4MTU2RCwNCisgICAgMHhERkU5LCAweERGRkUsIDB4MTRGQywgMHhFMEExLCAweEUwRjAsIDB4MTUxMiwgMHhFMEYxLCAweEUwRjEsIDB4MTc3MSwNCisgICAgMHhFMEYyLCAweEUwRkUsIDB4MTU2MiwgMHhFMUExLCAweEUxQUMsIDB4MTU2RiwgMHhFMUFELCAweEUxQUQsIDB4MTU1NCwNCisgICAgMHhFMUFFLCAweEUxRUMsIDB4MTU3QiwgMHhFMUVELCAweEUxRUQsIDB4MTRDNSwgMHhFMUVFLCAweEUxRkUsIDB4MTVCQSwNCisgICAgMHhFMkExLCAweEUyRkUsIDB4MTVDQiwgMHhFM0ExLCAweEUzRjQsIDB4MTYyOSwgMHhFM0Y1LCAweEUzRjUsIDB4MUI2MSwNCisgICAgMHhFM0Y2LCAweEUzRkUsIDB4MTY3RCwgMHhFNEExLCAweEU0QTEsIDB4MUNDQSwgMHhFNEEyLCAweEU0QTgsIDB4MTY4NiwNCisgICAgMHhFNEE5LCAweEU0QTksIDB4MTYyRSwgMHhFNEFBLCAweEU0RkUsIDB4MTY4RCwgMHhFNUExLCAweEU1QUQsIDB4MTZFMiwNCisgICAgMHhFNUFFLCAweEU1QUUsIDB4MTZGMiwgMHhFNUFGLCAweEU1QjAsIDB4MTZFRiwgMHhFNUIxLCAweEU1QjIsIDB4MTE0OSwNCisgICAgMHhFNUIzLCAweEU1QjgsIDB4MTZGMSwgMHhFNUI5LCAweEU1QjksIDB4MTE0QiwgMHhFNUJBLCAweEU1QkEsIDB4MTZGNywNCisgICAgMHhFNUJCLCAweEU1QkMsIDB4MTE0RCwgMHhFNUJELCAweEU1QzMsIDB4MTZGOCwgMHhFNUM0LCAweEU1QzQsIDB4MTE0RiwNCisgICAgMHhFNUM1LCAweEU1Q0QsIDB4MTZGRiwgMHhFNUNFLCAweEU1Q0UsIDB4MTE1MywgMHhFNUNGLCAweEU1Q0YsIDB4MTcwOCwNCisgICAgMHhFNUQwLCAweEU1RDAsIDB4MTE1NCwgMHhFNUQxLCAweEU1RDEsIDB4MTcwOSwgMHhFNUQyLCAweEU1RDIsIDB4MTE1NSwNCisgICAgMHhFNUQzLCAweEU1RDUsIDB4MTcwQSwgMHhFNUQ2LCAweEU1RDYsIDB4MTE1NywgMHhFNUQ3LCAweEU1RjksIDB4MTcwRCwNCisgICAgMHhFNUZBLCAweEU1RkIsIDB4MTE1QSwgMHhFNUZDLCAweEU1RkMsIDB4MTAzRiwgMHhFNUZELCAweEU1RkQsIDB4MTczMCwNCisgICAgMHhFNUZFLCAweEU1RkUsIDB4MTE1QywgMHhFNkExLCAweEU2QTEsIDB4MTE1RiwgMHhFNkEyLCAweEU2QTMsIDB4MTczMSwNCisgICAgMHhFNkE0LCAweEU2QTQsIDB4MTE2MSwgMHhFNkE1LCAweEU2QTYsIDB4MTczMywgMHhFNkE3LCAweEU2QTcsIDB4MTE2MiwNCisgICAgMHhFNkE4LCAweEU2QUMsIDB4MTczNSwgMHhFNkFELCAweEU2QUQsIDB4MTE2NSwgMHhFNkFFLCAweEU2QUUsIDB4MTczQSwNCisgICAgMHhFNkFGLCAweEU2QjEsIDB4MTE2NywgMHhFNkIyLCAweEU2QjIsIDB4MTczQiwgMHhFNkIzLCAweEU2QjMsIDB4MTE2QSwNCisgICAgMHhFNkI0LCAweEU2QjYsIDB4MTczQywgMHhFNkI3LCAweEU2QjgsIDB4MTE2QiwgMHhFNkI5LCAweEU2QkIsIDB4MTczRiwNCisgICAgMHhFNkJDLCAweEU2QkMsIDB4MTE2RiwgMHhFNkJELCAweEU2QzMsIDB4MTc0MiwgMHhFNkM0LCAweEU2QzQsIDB4MTA0MCwNCisgICAgMHhFNkM1LCAweEU2QzUsIDB4MTc0OSwgMHhFNkM2LCAweEU2QzcsIDB4MTE3MSwgMHhFNkM4LCAweEU2QzksIDB4MTc0QSwNCisgICAgMHhFNkNBLCAweEU2Q0EsIDB4MTA0MSwgMHhFNkNCLCAweEU2RDEsIDB4MTc0QywgMHhFNkQyLCAweEU2RDIsIDB4MTE3NCwNCisgICAgMHhFNkQzLCAweEU2RDUsIDB4MTc1MywgMHhFNkQ2LCAweEU2RDYsIDB4MTE3NSwgMHhFNkQ3LCAweEU2RDgsIDB4MTc1NiwNCisgICAgMHhFNkQ5LCAweEU2RDksIDB4MTE3NiwgMHhFNkRBLCAweEU2REIsIDB4MTc1OCwgMHhFNkRDLCAweEU2REMsIDB4MTA0MiwNCisgICAgMHhFNkRELCAweEU2REUsIDB4MTc1QSwgMHhFNkRGLCAweEU2REYsIDB4MTE3NywgMHhFNkUwLCAweEU2RTAsIDB4MTc1QywNCisgICAgMHhFNkUxLCAweEU2RTEsIDB4MTE3OCwgMHhFNkUyLCAweEU2RTMsIDB4MTc1RCwgMHhFNkU0LCAweEU2RTQsIDB4MTE3QSwNCisgICAgMHhFNkU1LCAweEU2RTUsIDB4MTE3OSwgMHhFNkU2LCAweEU2RTYsIDB4MTE3QiwgMHhFNkU3LCAweEU2RTcsIDB4MTc1RiwNCisgICAgMHhFNkU4LCAweEU2RTgsIDB4MTE3QywgMHhFNkU5LCAweEU2RTksIDB4MTc2MCwgMHhFNkVBLCAweEU2RUIsIDB4MTE3RSwNCisgICAgMHhFNkVDLCAweEU2RUMsIDB4MTkyRiwgMHhFNkVELCAweEU2RUUsIDB4MTc2MSwgMHhFNkVGLCAweEU2RUYsIDB4MTE4MSwNCisgICAgMHhFNkYwLCAweEU2RjAsIDB4MTc2MywgMHhFNkYxLCAweEU2RjEsIDB4MTE4MiwgMHhFNkYyLCAweEU2RjIsIDB4MTU1NCwNCisgICAgMHhFNkYzLCAweEU2RjQsIDB4MTc2NCwgMHhFNkY1LCAweEU2RjUsIDB4MTE4MywgMHhFNkY2LCAweEU2RjYsIDB4MTA0MywNCisgICAgMHhFNkY3LCAweEU2RjcsIDB4MTA0NiwgMHhFNkY4LCAweEU2RjgsIDB4MTc2NiwgMHhFNkY5LCAweEU2RjksIDB4MTE4NSwNCisgICAgMHhFNkZBLCAweEU2RkUsIDB4MTc2NywgMHhFN0ExLCAweEU3QTEsIDB4MTE4NywgMHhFN0EyLCAweEU3QTUsIDB4MTc2QywNCisgICAgMHhFN0E2LCAweEU3QTYsIDB4MTE4OCwgMHhFN0E3LCAweEU3QTgsIDB4MTc3MCwgMHhFN0E5LCAweEU3QTksIDB4MTE4OSwNCisgICAgMHhFN0FBLCAweEU3QUEsIDB4MTE4QiwgMHhFN0FCLCAweEU3QUIsIDB4MTc3MiwgMHhFN0FDLCAweEU3QUMsIDB4MTA0NywNCisgICAgMHhFN0FELCAweEU3QUQsIDB4MTE4RCwgMHhFN0FFLCAweEU3QUYsIDB4MTc3MywgMHhFN0IwLCAweEU3QjAsIDB4MTE4RSwNCisgICAgMHhFN0IxLCAweEU3QkUsIDB4MTc3NSwgMHhFN0JGLCAweEU3QkYsIDB4MTE4RiwgMHhFN0MwLCAweEU3QzAsIDB4MTc4MywNCisgICAgMHhFN0MxLCAweEU3QzEsIDB4MUU2NywgMHhFN0MyLCAweEU3QzUsIDB4MTc4NCwgMHhFN0M2LCAweEU3QzYsIDB4MTE5MSwNCisgICAgMHhFN0M3LCAweEU3QzcsIDB4MTE5MywgMHhFN0M4LCAweEU3Q0EsIDB4MTc4OCwgMHhFN0NCLCAweEU3Q0IsIDB4MTE5NSwNCisgICAgMHhFN0NDLCAweEU3Q0MsIDB4MTc4QiwgMHhFN0NELCAweEU3Q0QsIDB4MTE5NiwgMHhFN0NFLCAweEU3Q0UsIDB4MTc4QywNCisgICAgMHhFN0NGLCAweEU3RDAsIDB4MTE5NywgMHhFN0QxLCAweEU3RDIsIDB4MTc4RCwgMHhFN0QzLCAweEU3RDMsIDB4MTE5QSwNCisgICAgMHhFN0Q0LCAweEU3REUsIDB4MTc4RiwgMHhFN0RGLCAweEU3REYsIDB4MTE5QywgMHhFN0UwLCAweEU3RTMsIDB4MTc5QSwNCisgICAgMHhFN0U0LCAweEU3RTQsIDB4MTE5RCwgMHhFN0U1LCAweEU3RTUsIDB4MTc5RSwgMHhFN0U2LCAweEU3RTYsIDB4MTE5RSwNCisgICAgMHhFN0U3LCAweEU3RjYsIDB4MTc5RiwgMHhFN0Y3LCAweEU3RjcsIDB4MTZBNSwgMHhFN0Y4LCAweEU3RkUsIDB4MTdBRiwNCisgICAgMHhFOEExLCAweEU4RTYsIDB4MTdCNiwgMHhFOEU3LCAweEU4RTgsIDB4MTFDNywgMHhFOEU5LCAweEU4RUYsIDB4MTdGQywNCisgICAgMHhFOEYwLCAweEU4RjAsIDB4MTFDOSwgMHhFOEYxLCAweEU4RjEsIDB4MTA1NCwgMHhFOEYyLCAweEU4RjYsIDB4MTgwMywNCisgICAgMHhFOEY3LCAweEU4RjcsIDB4MTFDQiwgMHhFOEY4LCAweEU4RjgsIDB4MTgwOCwgMHhFOEY5LCAweEU4RjksIDB4MTZBOCwNCisgICAgMHhFOEZBLCAweEU4RkEsIDB4MTgwOSwgMHhFOEZCLCAweEU4RkIsIDB4MTFDQywgMHhFOEZDLCAweEU4RkQsIDB4MTgwQSwNCisgICAgMHhFOEZFLCAweEU4RkUsIDB4MTFDRCwgMHhFOUExLCAweEU5QTYsIDB4MTgwQywgMHhFOUE3LCAweEU5QTcsIDB4MTFEMCwNCisgICAgMHhFOUE4LCAweEU5QUIsIDB4MTgxMiwgMHhFOUFDLCAweEU5QUMsIDB4MTFEMSwgMHhFOUFELCAweEU5Q0IsIDB4MTgxNiwNCisgICAgMHhFOUNDLCAweEU5Q0MsIDB4MTFEMywgMHhFOUNELCAweEU5RjYsIDB4MTgzNSwgMHhFOUY3LCAweEU5RjcsIDB4MUYzNCwNCisgICAgMHhFOUY4LCAweEU5RkUsIDB4MTg1RiwgMHhFQUExLCAweEVBQzAsIDB4MTg2NiwgMHhFQUMxLCAweEVBQzEsIDB4MTdFQiwNCisgICAgMHhFQUMyLCAweEVBRTQsIDB4MTg4NiwgMHhFQUU1LCAweEVBRTUsIDB4MTFFMSwgMHhFQUU2LCAweEVBRjMsIDB4MThBOSwNCisgICAgMHhFQUY0LCAweEVBRjQsIDB4MTA1NywgMHhFQUY1LCAweEVBRjYsIDB4MThCNywgMHhFQUY3LCAweEVBRjcsIDB4MTFFMywNCisgICAgMHhFQUY4LCAweEVBRkIsIDB4MThCOSwgMHhFQUZDLCAweEVBRkMsIDB4MTFFNSwgMHhFQUZELCAweEVBRkQsIDB4MThCRCwNCisgICAgMHhFQUZFLCAweEVBRkUsIDB4MTFFNiwgMHhFQkExLCAweEVCQTMsIDB4MThCRSwgMHhFQkE0LCAweEVCQTQsIDB4MTFFOCwNCisgICAgMHhFQkE1LCAweEVCQTYsIDB4MThDMSwgMHhFQkE3LCAweEVCQTcsIDB4MTFFQSwgMHhFQkE4LCAweEVCQTgsIDB4MThDMywNCisgICAgMHhFQkE5LCAweEVCQTksIDB4MTFFQywgMHhFQkFBLCAweEVCQUEsIDB4MTA1OCwgMHhFQkFCLCAweEVCQjksIDB4MThDNCwNCisgICAgMHhFQkJBLCAweEVCQkIsIDB4MTFFRSwgMHhFQkJDLCAweEVCQkMsIDB4MThEMywgMHhFQkJELCAweEVCQkQsIDB4MTFGMCwNCisgICAgMHhFQkJFLCAweEVCQzAsIDB4MThENCwgMHhFQkMxLCAweEVCQzEsIDB4MTFGMSwgMHhFQkMyLCAweEVCQzIsIDB4MTFGMywNCisgICAgMHhFQkMzLCAweEVCQzUsIDB4MThENywgMHhFQkM2LCAweEVCQzcsIDB4MTFGNCwgMHhFQkM4LCAweEVCQ0IsIDB4MThEQSwNCisgICAgMHhFQkNDLCAweEVCQ0MsIDB4MTFGNywgMHhFQkNELCAweEVCQ0UsIDB4MThERSwgMHhFQkNGLCAweEVCRDEsIDB4MTFGOCwNCisgICAgMHhFQkQyLCAweEVCRDIsIDB4MTVCMCwgMHhFQkQzLCAweEVCRDcsIDB4MThFMCwgMHhFQkQ4LCAweEVCRDgsIDB4MTFGQiwNCisgICAgMHhFQkQ5LCAweEVCRkUsIDB4MThFNSwgMHhFQ0ExLCAweEVDQTUsIDB4MTkwQiwgMHhFQ0E2LCAweEVDQTYsIDB4MTIwNiwNCisgICAgMHhFQ0E3LCAweEVDQTcsIDB4MTIwOCwgMHhFQ0E4LCAweEVDQTksIDB4MTkxMCwgMHhFQ0FBLCAweEVDQUEsIDB4MTIwQSwNCisgICAgMHhFQ0FCLCAweEVDQUUsIDB4MTkxMiwgMHhFQ0FGLCAweEVDQUYsIDB4MTczRSwgMHhFQ0IwLCAweEVDQjEsIDB4MTIwQywNCisgICAgMHhFQ0IyLCAweEVDQjIsIDB4MTA1QiwgMHhFQ0IzLCAweEVDQjQsIDB4MTkxNiwgMHhFQ0I1LCAweEVDQjUsIDB4MTIxMSwNCisgICAgMHhFQ0I2LCAweEVDQjcsIDB4MTkxOCwgMHhFQ0I4LCAweEVDQjgsIDB4MTIxMywgMHhFQ0I5LCAweEVDQjksIDB4MTkxQSwNCisgICAgMHhFQ0JBLCAweEVDQkEsIDB4MTIxNSwgMHhFQ0JCLCAweEVDQkYsIDB4MTkxQiwgMHhFQ0MwLCAweEVDQzEsIDB4MTIxOCwNCisgICAgMHhFQ0MyLCAweEVDQzQsIDB4MTkyMCwgMHhFQ0M1LCAweEVDQzUsIDB4MTIxQSwgMHhFQ0M2LCAweEVDQzYsIDB4MTIxQywNCisgICAgMHhFQ0M3LCAweEVDQzgsIDB4MTkyMywgMHhFQ0M5LCAweEVDQ0EsIDB4MTA1QywgMHhFQ0NCLCAweEVDRDQsIDB4MTkyNSwNCisgICAgMHhFQ0Q1LCAweEVDRDUsIDB4MTIxRSwgMHhFQ0Q2LCAweEVDREMsIDB4MTkyRiwgMHhFQ0RELCAweEVDREUsIDB4MTIyMCwNCisgICAgMHhFQ0RGLCAweEVDRTAsIDB4MTkzNiwgMHhFQ0UxLCAweEVDRTEsIDB4MTIyMiwgMHhFQ0UyLCAweEVDRTMsIDB4MTkzOCwNCisgICAgMHhFQ0U0LCAweEVDRTQsIDB4MTIyNCwgMHhFQ0U1LCAweEVDRTYsIDB4MTkzQSwgMHhFQ0U3LCAweEVDRTgsIDB4MTIyNSwNCisgICAgMHhFQ0U5LCAweEVDRjYsIDB4MTkzQywgMHhFQ0Y3LCAweEVDRjgsIDB4MTIyNywgMHhFQ0Y5LCAweEVDRjksIDB4MTk0QSwNCisgICAgMHhFQ0ZBLCAweEVDRkEsIDB4MTIyQSwgMHhFQ0ZCLCAweEVDRkUsIDB4MTk0QiwgMHhFREExLCAweEVEQTMsIDB4MTIyRCwNCisgICAgMHhFREE0LCAweEVERUQsIDB4MTk0RiwgMHhFREVFLCAweEVERUUsIDB4MTRFNywgMHhFREVGLCAweEVERkUsIDB4MTk5OSwNCisgICAgMHhFRUExLCAweEVFREEsIDB4MTlBOSwgMHhFRURCLCAweEVFREIsIDB4MTk1RSwgMHhFRURDLCAweEVFRkUsIDB4MTlFMywNCisgICAgMHhFRkExLCAweEVGRkUsIDB4MUEwNiwgMHhGMEExLCAweEYwRkUsIDB4MUE2NCwgMHhGMUExLCAweEYxRkUsIDB4MUFDMiwNCisgICAgMHhGMkExLCAweEYyQkMsIDB4MUIyMCwgMHhGMkJELCAweEYyQkQsIDB4MTY2MywgMHhGMkJFLCAweEYyRjksIDB4MUIzQywNCisgICAgMHhGMkZBLCAweEYyRkEsIDB4MTY4QiwgMHhGMkZCLCAweEYyRkUsIDB4MUI3OCwgMHhGM0ExLCAweEYzQjAsIDB4MUI3QywNCisgICAgMHhGM0IxLCAweEYzQjEsIDB4MTA1RiwgMHhGM0IyLCAweEYzRkUsIDB4MUI4QywgMHhGNEExLCAweEY0QTYsIDB4MUJEOSwNCisgICAgMHhGNEE3LCAweEY0QTcsIDB4MTk1NCwgMHhGNEE4LCAweEY0RUQsIDB4MUJERiwgMHhGNEVFLCAweEY0RUUsIDB4MUExQywNCisgICAgMHhGNEVGLCAweEY0RkUsIDB4MUMyNSwgMHhGNUExLCAweEY1RkUsIDB4MUMzNSwgMHhGNkExLCAweEY2RjMsIDB4MUM5MywNCisgICAgMHhGNkY0LCAweEY2RjQsIDB4MTBCNywgMHhGNkY1LCAweEY2RjUsIDB4MUNFNiwgMHhGNkY2LCAweEY2RjYsIDB4MUJFMywNCisgICAgMHhGNkY3LCAweEY2RkUsIDB4MUNFNywgMHhGN0ExLCAweEY3QjcsIDB4MUNFRiwgMHhGN0I4LCAweEY3QjgsIDB4MTA5NywNCisgICAgMHhGN0I5LCAweEY3QzcsIDB4MUQwNiwgMHhGN0M4LCAweEY3QzgsIDB4MTBBQSwgMHhGN0M5LCAweEY3RDIsIDB4MUQxNSwNCisgICAgMHhGN0QzLCAweEY3RDMsIDB4MTBGNCwgMHhGN0Q0LCAweEY3RkUsIDB4MUQxRiwgMHhGOEExLCAweEY4REEsIDB4MUQ0QSwNCisgICAgMHhGOERCLCAweEY4REIsIDB4MUQ5NCwgMHhGOERDLCAweEY4RUYsIDB4MUQ4NCwgMHhGOEYwLCAweEY4RjAsIDB4MTNFMCwNCisgICAgMHhGOEYxLCAweEY4RkUsIDB4MUQ5OCwgMHhGOUExLCAweEY5RkUsIDB4MURBNiwgMHhGQUExLCAweEZBQTEsIDB4MUUxRCwNCisgICAgMHhGQUEyLCAweEZBQTIsIDB4MERFNiwgMHhGQUEzLCAweEZBRTUsIDB4MUUwNCwgMHhGQUU2LCAweEZBRTYsIDB4MEUzQywNCisgICAgMHhGQUU3LCAweEZBRkUsIDB4MUU0NywgMHhGQkExLCAweEZCRkUsIDB4MUU1RiwgMHhGQ0ExLCAweEZDQTgsIDB4MUVCRCwNCisgICAgMHhGQ0E5LCAweEZDQTksIDB4MEVFNywgMHhGQ0FBLCAweEZDRkUsIDB4MUVDNSwgMHhGREExLCAweEZERkUsIDB4MUYxQSwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvS1NDbXMtVUhDLUhXLVZfMS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL0tTQ21zLVVIQy1IVy1WXzEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MzA1NjEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL0tTQ21zLVVIQy1IVy1WXzEuY3BwCkBAIC0wLDAgKzEsMTQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9LU0Ntc19VSENfSFdfVl8xWzE2ICogM10gPSB7CisgICAgMHhBMUEyLCAweEExQTMsIDB4MUY3OCwgMHhBMUE1LCAweEExQTUsIDB4MUY3QSwgMHhBMUE2LCAweEExQTYsIDB4MjA4MCwKKyAgICAweEExQTksIDB4QTFBQiwgMHgxRjdCLCAweEExQUQsIDB4QTFBRCwgMHgxRjdFLCAweEExQjIsIDB4QTFCRCwgMHgxRjdGLAorICAgIDB4QTFFQiwgMHhBMUVCLCAweDFGOEIsIDB4QTNBMSwgMHhBM0ExLCAweDFGOEMsIDB4QTNBOCwgMHhBM0E5LCAweDFGOEQsCisgICAgMHhBM0FDLCAweEEzQUMsIDB4MUY4RiwgMHhBM0FFLCAweEEzQUUsIDB4MUY5MCwgMHhBM0JBLCAweEEzQkYsIDB4MUY5MSwKKyAgICAweEEzREIsIDB4QTNEQiwgMHgxRjk3LCAweEEzREQsIDB4QTNERCwgMHgxRjk4LCAweEEzREYsIDB4QTNERiwgMHgxRjk5LAorICAgIDB4QTNGQiwgMHhBM0ZFLCAweDFGOUEsCit9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0tvcmVhMS9LU0Ntcy1VSEMtSF8xLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvS1NDbXMtVUhDLUhfMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ2NGYyZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvS1NDbXMtVUhDLUhfMS5jcHAKQEAgLTAsMCArMSwyMzMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9LU0Ntc19VSENfSF8xWzY3NSAqIDNdID0gew0KKyAgICAweDAwMjAsIDB4MDA3RSwgMHgwMDAxLCAweDgxNDEsIDB4ODE1QSwgMHgyNDc1LCAweDgxNjEsIDB4ODE3QSwgMHgyNDhGLA0KKyAgICAweDgxODEsIDB4ODFGRSwgMHgyNEE5LCAweDgyNDEsIDB4ODI1QSwgMHgyNTI3LCAweDgyNjEsIDB4ODI3QSwgMHgyNTQxLA0KKyAgICAweDgyODEsIDB4ODJGRSwgMHgyNTVCLCAweDgzNDEsIDB4ODM1QSwgMHgyNUQ5LCAweDgzNjEsIDB4ODM3QSwgMHgyNUYzLA0KKyAgICAweDgzODEsIDB4ODNGRSwgMHgyNjBELCAweDg0NDEsIDB4ODQ1QSwgMHgyNjhCLCAweDg0NjEsIDB4ODQ3QSwgMHgyNkE1LA0KKyAgICAweDg0ODEsIDB4ODRGRSwgMHgyNkJGLCAweDg1NDEsIDB4ODU1QSwgMHgyNzNELCAweDg1NjEsIDB4ODU3QSwgMHgyNzU3LA0KKyAgICAweDg1ODEsIDB4ODVGRSwgMHgyNzcxLCAweDg2NDEsIDB4ODY1QSwgMHgyN0VGLCAweDg2NjEsIDB4ODY3QSwgMHgyODA5LA0KKyAgICAweDg2ODEsIDB4ODZGRSwgMHgyODIzLCAweDg3NDEsIDB4ODc1QSwgMHgyOEExLCAweDg3NjEsIDB4ODc3QSwgMHgyOEJCLA0KKyAgICAweDg3ODEsIDB4ODdGRSwgMHgyOEQ1LCAweDg4NDEsIDB4ODg1QSwgMHgyOTUzLCAweDg4NjEsIDB4ODg3QSwgMHgyOTZELA0KKyAgICAweDg4ODEsIDB4ODhGRSwgMHgyOTg3LCAweDg5NDEsIDB4ODk1QSwgMHgyQTA1LCAweDg5NjEsIDB4ODk3QSwgMHgyQTFGLA0KKyAgICAweDg5ODEsIDB4ODlGRSwgMHgyQTM5LCAweDhBNDEsIDB4OEE1QSwgMHgyQUI3LCAweDhBNjEsIDB4OEE3QSwgMHgyQUQxLA0KKyAgICAweDhBODEsIDB4OEFGRSwgMHgyQUVCLCAweDhCNDEsIDB4OEI1QSwgMHgyQjY5LCAweDhCNjEsIDB4OEI3QSwgMHgyQjgzLA0KKyAgICAweDhCODEsIDB4OEJGRSwgMHgyQjlELCAweDhDNDEsIDB4OEM1QSwgMHgyQzFCLCAweDhDNjEsIDB4OEM3QSwgMHgyQzM1LA0KKyAgICAweDhDODEsIDB4OENGRSwgMHgyQzRGLCAweDhENDEsIDB4OEQ1QSwgMHgyQ0NELCAweDhENjEsIDB4OEQ3QSwgMHgyQ0U3LA0KKyAgICAweDhEODEsIDB4OERGRSwgMHgyRDAxLCAweDhFNDEsIDB4OEU1QSwgMHgyRDdGLCAweDhFNjEsIDB4OEU3QSwgMHgyRDk5LA0KKyAgICAweDhFODEsIDB4OEVGRSwgMHgyREIzLCAweDhGNDEsIDB4OEY1QSwgMHgyRTMxLCAweDhGNjEsIDB4OEY3QSwgMHgyRTRCLA0KKyAgICAweDhGODEsIDB4OEZGRSwgMHgyRTY1LCAweDkwNDEsIDB4OTA1QSwgMHgyRUUzLCAweDkwNjEsIDB4OTA3QSwgMHgyRUZELA0KKyAgICAweDkwODEsIDB4OTBGRSwgMHgyRjE3LCAweDkxNDEsIDB4OTE1QSwgMHgyRjk1LCAweDkxNjEsIDB4OTE3QSwgMHgyRkFGLA0KKyAgICAweDkxODEsIDB4OTFGRSwgMHgyRkM5LCAweDkyNDEsIDB4OTI1QSwgMHgzMDQ3LCAweDkyNjEsIDB4OTI3QSwgMHgzMDYxLA0KKyAgICAweDkyODEsIDB4OTJGRSwgMHgzMDdCLCAweDkzNDEsIDB4OTM1QSwgMHgzMEY5LCAweDkzNjEsIDB4OTM3QSwgMHgzMTEzLA0KKyAgICAweDkzODEsIDB4OTNGRSwgMHgzMTJELCAweDk0NDEsIDB4OTQ1QSwgMHgzMUFCLCAweDk0NjEsIDB4OTQ3QSwgMHgzMUM1LA0KKyAgICAweDk0ODEsIDB4OTRGRSwgMHgzMURGLCAweDk1NDEsIDB4OTU1QSwgMHgzMjVELCAweDk1NjEsIDB4OTU3QSwgMHgzMjc3LA0KKyAgICAweDk1ODEsIDB4OTVGRSwgMHgzMjkxLCAweDk2NDEsIDB4OTY1QSwgMHgzMzBGLCAweDk2NjEsIDB4OTY3QSwgMHgzMzI5LA0KKyAgICAweDk2ODEsIDB4OTZGRSwgMHgzMzQzLCAweDk3NDEsIDB4OTc1QSwgMHgzM0MxLCAweDk3NjEsIDB4OTc3QSwgMHgzM0RCLA0KKyAgICAweDk3ODEsIDB4OTdGRSwgMHgzM0Y1LCAweDk4NDEsIDB4OTg1QSwgMHgzNDczLCAweDk4NjEsIDB4OTg3QSwgMHgzNDhELA0KKyAgICAweDk4ODEsIDB4OThGRSwgMHgzNEE3LCAweDk5NDEsIDB4OTk1QSwgMHgzNTI1LCAweDk5NjEsIDB4OTk3QSwgMHgzNTNGLA0KKyAgICAweDk5ODEsIDB4OTlGRSwgMHgzNTU5LCAweDlBNDEsIDB4OUE1QSwgMHgzNUQ3LCAweDlBNjEsIDB4OUE3QSwgMHgzNUYxLA0KKyAgICAweDlBODEsIDB4OUFGRSwgMHgzNjBCLCAweDlCNDEsIDB4OUI1QSwgMHgzNjg5LCAweDlCNjEsIDB4OUI3QSwgMHgzNkEzLA0KKyAgICAweDlCODEsIDB4OUJGRSwgMHgzNkJELCAweDlDNDEsIDB4OUM1QSwgMHgzNzNCLCAweDlDNjEsIDB4OUM3QSwgMHgzNzU1LA0KKyAgICAweDlDODEsIDB4OUNGRSwgMHgzNzZGLCAweDlENDEsIDB4OUQ1QSwgMHgzN0VELCAweDlENjEsIDB4OUQ3QSwgMHgzODA3LA0KKyAgICAweDlEODEsIDB4OURGRSwgMHgzODIxLCAweDlFNDEsIDB4OUU1QSwgMHgzODlGLCAweDlFNjEsIDB4OUU3QSwgMHgzOEI5LA0KKyAgICAweDlFODEsIDB4OUVGRSwgMHgzOEQzLCAweDlGNDEsIDB4OUY1QSwgMHgzOTUxLCAweDlGNjEsIDB4OUY3QSwgMHgzOTZCLA0KKyAgICAweDlGODEsIDB4OUZGRSwgMHgzOTg1LCAweEEwNDEsIDB4QTA1QSwgMHgzQTAzLCAweEEwNjEsIDB4QTA3QSwgMHgzQTFELA0KKyAgICAweEEwODEsIDB4QTBGRSwgMHgzQTM3LCAweEExNDEsIDB4QTE1QSwgMHgzQUI1LCAweEExNjEsIDB4QTE3QSwgMHgzQUNGLA0KKyAgICAweEExODEsIDB4QTFBMCwgMHgzQUU5LCAweEExQTEsIDB4QTFGRSwgMHgwMDY1LCAweEEyNDEsIDB4QTI1QSwgMHgzQjA5LA0KKyAgICAweEEyNjEsIDB4QTI3QSwgMHgzQjIzLCAweEEyODEsIDB4QTJBMCwgMHgzQjNELCAweEEyQTEsIDB4QTJFNSwgMHgwMEMzLA0KKyAgICAweEEzNDEsIDB4QTM1QSwgMHgzQjVELCAweEEzNjEsIDB4QTM3QSwgMHgzQjc3LCAweEEzODEsIDB4QTNBMCwgMHgzQjkxLA0KKyAgICAweEEzQTEsIDB4QTNGRSwgMHgwMTA4LCAweEE0NDEsIDB4QTQ1QSwgMHgzQkIxLCAweEE0NjEsIDB4QTQ3QSwgMHgzQkNCLA0KKyAgICAweEE0ODEsIDB4QTRBMCwgMHgzQkU1LCAweEE0QTEsIDB4QTREMywgMHgwMTY2LCAweEE0RDUsIDB4QTRGRSwgMHgwMTk5LA0KKyAgICAweEE1NDEsIDB4QTU1QSwgMHgzQzA1LCAweEE1NjEsIDB4QTU3QSwgMHgzQzFGLCAweEE1ODEsIDB4QTVBMCwgMHgzQzM5LA0KKyAgICAweEE1QTEsIDB4QTVBQSwgMHgwMUMzLCAweEE1QjAsIDB4QTVCOSwgMHgwMUNELCAweEE1QzEsIDB4QTVEOCwgMHgwMUQ3LA0KKyAgICAweEE1RTEsIDB4QTVGOCwgMHgwMUVGLCAweEE2NDEsIDB4QTY1QSwgMHgzQzU5LCAweEE2NjEsIDB4QTY3QSwgMHgzQzczLA0KKyAgICAweEE2ODEsIDB4QTZBMCwgMHgzQzhELCAweEE2QTEsIDB4QTZFNCwgMHgwMjA3LCAweEE3NDEsIDB4QTc1QSwgMHgzQ0FELA0KKyAgICAweEE3NjEsIDB4QTc3QSwgMHgzQ0M3LCAweEE3ODEsIDB4QTdBMCwgMHgzQ0UxLCAweEE3QTEsIDB4QTdFRiwgMHgwMjRCLA0KKyAgICAweEE4NDEsIDB4QTg1QSwgMHgzRDAxLCAweEE4NjEsIDB4QTg3QSwgMHgzRDFCLCAweEE4ODEsIDB4QThBMCwgMHgzRDM1LA0KKyAgICAweEE4QTEsIDB4QThBNCwgMHgwMjlBLCAweEE4QTYsIDB4QThBNiwgMHgwMjlFLCAweEE4QTgsIDB4QThBRiwgMHgwMjlGLA0KKyAgICAweEE4QjEsIDB4QThGRSwgMHgwMkE3LCAweEE5NDEsIDB4QTk1QSwgMHgzRDU1LCAweEE5NjEsIDB4QTk3QSwgMHgzRDZGLA0KKyAgICAweEE5ODEsIDB4QTlBMCwgMHgzRDg5LCAweEE5QTEsIDB4QTlGRSwgMHgwMkY1LCAweEFBNDEsIDB4QUE1QSwgMHgzREE5LA0KKyAgICAweEFBNjEsIDB4QUE3QSwgMHgzREMzLCAweEFBODEsIDB4QUFBMCwgMHgzRERELCAweEFBQTEsIDB4QUFGMywgMHgwMzUzLA0KKyAgICAweEFCNDEsIDB4QUI1QSwgMHgzREZELCAweEFCNjEsIDB4QUI3QSwgMHgzRTE3LCAweEFCODEsIDB4QUJBMCwgMHgzRTMxLA0KKyAgICAweEFCQTEsIDB4QUJGNiwgMHgwM0E2LCAweEFDNDEsIDB4QUM1QSwgMHgzRTUxLCAweEFDNjEsIDB4QUM3QSwgMHgzRTZCLA0KKyAgICAweEFDODEsIDB4QUNBMCwgMHgzRTg1LCAweEFDQTEsIDB4QUNDMSwgMHgwM0ZDLCAweEFDRDEsIDB4QUNGMSwgMHgwNDFELA0KKyAgICAweEFENDEsIDB4QUQ1QSwgMHgzRUE1LCAweEFENjEsIDB4QUQ3QSwgMHgzRUJGLCAweEFEODEsIDB4QURBMCwgMHgzRUQ5LA0KKyAgICAweEFFNDEsIDB4QUU1QSwgMHgzRUY5LCAweEFFNjEsIDB4QUU3QSwgMHgzRjEzLCAweEFFODEsIDB4QUVBMCwgMHgzRjJELA0KKyAgICAweEFGNDEsIDB4QUY1QSwgMHgzRjRELCAweEFGNjEsIDB4QUY3QSwgMHgzRjY3LCAweEFGODEsIDB4QUZBMCwgMHgzRjgxLA0KKyAgICAweEIwNDEsIDB4QjA1QSwgMHgzRkExLCAweEIwNjEsIDB4QjA3QSwgMHgzRkJCLCAweEIwODEsIDB4QjBBMCwgMHgzRkQ1LA0KKyAgICAweEIwQTEsIDB4QjBGRSwgMHgwNDNFLCAweEIxNDEsIDB4QjE1QSwgMHgzRkY1LCAweEIxNjEsIDB4QjE3QSwgMHg0MDBGLA0KKyAgICAweEIxODEsIDB4QjFBMCwgMHg0MDI5LCAweEIxQTEsIDB4QjFGRSwgMHgwNDlDLCAweEIyNDEsIDB4QjI1QSwgMHg0MDQ5LA0KKyAgICAweEIyNjEsIDB4QjI3QSwgMHg0MDYzLCAweEIyODEsIDB4QjJBMCwgMHg0MDdELCAweEIyQTEsIDB4QjJGRSwgMHgwNEZBLA0KKyAgICAweEIzNDEsIDB4QjM1QSwgMHg0MDlELCAweEIzNjEsIDB4QjM3QSwgMHg0MEI3LCAweEIzODEsIDB4QjNBMCwgMHg0MEQxLA0KKyAgICAweEIzQTEsIDB4QjNGRSwgMHgwNTU4LCAweEI0NDEsIDB4QjQ1QSwgMHg0MEYxLCAweEI0NjEsIDB4QjQ3QSwgMHg0MTBCLA0KKyAgICAweEI0ODEsIDB4QjRBMCwgMHg0MTI1LCAweEI0QTEsIDB4QjRGRSwgMHgwNUI2LCAweEI1NDEsIDB4QjU1QSwgMHg0MTQ1LA0KKyAgICAweEI1NjEsIDB4QjU3QSwgMHg0MTVGLCAweEI1ODEsIDB4QjVBMCwgMHg0MTc5LCAweEI1QTEsIDB4QjVGRSwgMHgwNjE0LA0KKyAgICAweEI2NDEsIDB4QjY1QSwgMHg0MTk5LCAweEI2NjEsIDB4QjY3QSwgMHg0MUIzLCAweEI2ODEsIDB4QjZBMCwgMHg0MUNELA0KKyAgICAweEI2QTEsIDB4QjZGRSwgMHgwNjcyLCAweEI3NDEsIDB4Qjc1QSwgMHg0MUVELCAweEI3NjEsIDB4Qjc3QSwgMHg0MjA3LA0KKyAgICAweEI3ODEsIDB4QjdBMCwgMHg0MjIxLCAweEI3QTEsIDB4QjdGRSwgMHgwNkQwLCAweEI4NDEsIDB4Qjg1QSwgMHg0MjQxLA0KKyAgICAweEI4NjEsIDB4Qjg3QSwgMHg0MjVCLCAweEI4ODEsIDB4QjhBMCwgMHg0Mjc1LCAweEI4QTEsIDB4QjhGRSwgMHgwNzJFLA0KKyAgICAweEI5NDEsIDB4Qjk1QSwgMHg0Mjk1LCAweEI5NjEsIDB4Qjk3QSwgMHg0MkFGLCAweEI5ODEsIDB4QjlBMCwgMHg0MkM5LA0KKyAgICAweEI5QTEsIDB4QjlGRSwgMHgwNzhDLCAweEJBNDEsIDB4QkE1QSwgMHg0MkU5LCAweEJBNjEsIDB4QkE3QSwgMHg0MzAzLA0KKyAgICAweEJBODEsIDB4QkFBMCwgMHg0MzFELCAweEJBQTEsIDB4QkFGRSwgMHgwN0VBLCAweEJCNDEsIDB4QkI1QSwgMHg0MzNELA0KKyAgICAweEJCNjEsIDB4QkI3QSwgMHg0MzU3LCAweEJCODEsIDB4QkJBMCwgMHg0MzcxLCAweEJCQTEsIDB4QkJGRSwgMHgwODQ4LA0KKyAgICAweEJDNDEsIDB4QkM1QSwgMHg0MzkxLCAweEJDNjEsIDB4QkM3QSwgMHg0M0FCLCAweEJDODEsIDB4QkNBMCwgMHg0M0M1LA0KKyAgICAweEJDQTEsIDB4QkNGRSwgMHgwOEE2LCAweEJENDEsIDB4QkQ1QSwgMHg0M0U1LCAweEJENjEsIDB4QkQ3QSwgMHg0M0ZGLA0KKyAgICAweEJEODEsIDB4QkRBMCwgMHg0NDE5LCAweEJEQTEsIDB4QkRGRSwgMHgwOTA0LCAweEJFNDEsIDB4QkU1QSwgMHg0NDM5LA0KKyAgICAweEJFNjEsIDB4QkU3QSwgMHg0NDUzLCAweEJFODEsIDB4QkVBMCwgMHg0NDZELCAweEJFQTEsIDB4QkVGRSwgMHgwOTYyLA0KKyAgICAweEJGNDEsIDB4QkY1QSwgMHg0NDhELCAweEJGNjEsIDB4QkY3QSwgMHg0NEE3LCAweEJGODEsIDB4QkZBMCwgMHg0NEMxLA0KKyAgICAweEJGQTEsIDB4QkZGRSwgMHgwOUMwLCAweEMwNDEsIDB4QzA1QSwgMHg0NEUxLCAweEMwNjEsIDB4QzA3QSwgMHg0NEZCLA0KKyAgICAweEMwODEsIDB4QzBBMCwgMHg0NTE1LCAweEMwQTEsIDB4QzBGRSwgMHgwQTFFLCAweEMxNDEsIDB4QzE1QSwgMHg0NTM1LA0KKyAgICAweEMxNjEsIDB4QzE3QSwgMHg0NTRGLCAweEMxODEsIDB4QzFBMCwgMHg0NTY5LCAweEMxQTEsIDB4QzFGRSwgMHgwQTdDLA0KKyAgICAweEMyNDEsIDB4QzI1QSwgMHg0NTg5LCAweEMyNjEsIDB4QzI3QSwgMHg0NUEzLCAweEMyODEsIDB4QzJBMCwgMHg0NUJELA0KKyAgICAweEMyQTEsIDB4QzJGRSwgMHgwQURBLCAweEMzNDEsIDB4QzM1QSwgMHg0NURELCAweEMzNjEsIDB4QzM3QSwgMHg0NUY3LA0KKyAgICAweEMzODEsIDB4QzNBMCwgMHg0NjExLCAweEMzQTEsIDB4QzNGRSwgMHgwQjM4LCAweEM0NDEsIDB4QzQ1QSwgMHg0NjMxLA0KKyAgICAweEM0NjEsIDB4QzQ3QSwgMHg0NjRCLCAweEM0ODEsIDB4QzRBMCwgMHg0NjY1LCAweEM0QTEsIDB4QzRGRSwgMHgwQjk2LA0KKyAgICAweEM1NDEsIDB4QzU1QSwgMHg0Njg1LCAweEM1NjEsIDB4QzU3QSwgMHg0NjlGLCAweEM1ODEsIDB4QzVBMCwgMHg0NkI5LA0KKyAgICAweEM1QTEsIDB4QzVGRSwgMHgwQkY0LCAweEM2NDEsIDB4QzY1MiwgMHg0NkQ5LCAweEM2QTEsIDB4QzZGRSwgMHgwQzUyLA0KKyAgICAweEM3QTEsIDB4QzdGRSwgMHgwQ0IwLCAweEM4QTEsIDB4QzhGRSwgMHgwRDBFLCAweENBQTEsIDB4Q0FGRSwgMHgwRDZDLA0KKyAgICAweENCQTEsIDB4Q0JDRiwgMHgwRENBLCAweENCRDAsIDB4Q0JEMCwgMHgxMDE0LCAweENCRDEsIDB4Q0JENSwgMHgwREY5LA0KKyAgICAweENCRDYsIDB4Q0JENiwgMHgwRTVFLCAweENCRDcsIDB4Q0JFNiwgMHgwREZFLCAweENCRTcsIDB4Q0JFNywgMHgxQjhELA0KKyAgICAweENCRTgsIDB4Q0JGRSwgMHgwRTBFLCAweENDQTEsIDB4Q0NGRSwgMHgwRTI1LCAweENEQTEsIDB4Q0RDRSwgMHgwRTgzLA0KKyAgICAweENEQ0YsIDB4Q0RDRiwgMHgwRDg0LCAweENERDAsIDB4Q0RFNywgMHgwRUIxLCAweENERTgsIDB4Q0RFOCwgMHgxRURDLA0KKyAgICAweENERTksIDB4Q0RGRSwgMHgwRUM5LCAweENFQTEsIDB4Q0VBQywgMHgwRURGLCAweENFQUQsIDB4Q0VBRCwgMHgwRURBLA0KKyAgICAweENFQUUsIDB4Q0VGRSwgMHgwRUVCLCAweENGQTEsIDB4Q0ZGQSwgMHgwRjNDLCAweENGRkIsIDB4Q0ZGQiwgMHgwRjNFLA0KKyAgICAweENGRkMsIDB4Q0ZGRSwgMHgwRjk2LCAweEQwQTEsIDB4RDBBMSwgMHgwRjk5LCAweEQwQTIsIDB4RDBBMiwgMHgwRjZBLA0KKyAgICAweEQwQTMsIDB4RDBCNywgMHgwRjlBLCAweEQwQjgsIDB4RDBCOCwgMHgwRjZBLCAweEQwQjksIDB4RDBDRiwgMHgwRkFGLA0KKyAgICAweEQwRDAsIDB4RDBEMCwgMHgwRTdDLCAweEQwRDEsIDB4RDBEQywgMHgwRkM2LCAweEQwREQsIDB4RDBERCwgMHgxMDIzLA0KKyAgICAweEQwREUsIDB4RDBGRSwgMHgwRkQyLCAweEQxQTEsIDB4RDFEMywgMHgwRkYzLCAweEQxRDQsIDB4RDFENCwgMHgxMTE2LA0KKyAgICAweEQxRDUsIDB4RDFENSwgMHgxMDNDLCAweEQxRDYsIDB4RDFENywgMHgxMDI2LCAweEQxRDgsIDB4RDFEOCwgMHgxMTE3LA0KKyAgICAweEQxRDksIDB4RDFEQSwgMHgxMDI4LCAweEQxREIsIDB4RDFFMCwgMHgxMTE4LCAweEQxRTEsIDB4RDFFMSwgMHgxMDJBLA0KKyAgICAweEQxRTIsIDB4RDFFMiwgMHgxNkE4LCAweEQxRTMsIDB4RDFFNSwgMHgxMTFFLCAweEQxRTYsIDB4RDFFNiwgMHgxMTIyLA0KKyAgICAweEQxRTcsIDB4RDFFNywgMHgxMDJCLCAweEQxRTgsIDB4RDFFQiwgMHgxMTIzLCAweEQxRUMsIDB4RDFFQywgMHgxMDJDLA0KKyAgICAweEQxRUQsIDB4RDFFRCwgMHgxMTI3LCAweEQxRUUsIDB4RDFFRSwgMHgxMDJELCAweEQxRUYsIDB4RDFGMCwgMHgxMTJBLA0KKyAgICAweEQxRjEsIDB4RDFGMSwgMHgxMDJFLCAweEQxRjIsIDB4RDFGMiwgMHgxMTJDLCAweEQxRjMsIDB4RDFGNSwgMHgxMDJGLA0KKyAgICAweEQxRjYsIDB4RDFGNiwgMHgxMTJGLCAweEQxRjcsIDB4RDFGOSwgMHgxMDMyLCAweEQxRkEsIDB4RDFGQSwgMHgxMTMzLA0KKyAgICAweEQxRkIsIDB4RDFGQiwgMHgxMDM1LCAweEQxRkMsIDB4RDFGRCwgMHgxMTM2LCAweEQxRkUsIDB4RDFGRSwgMHgxMTM5LA0KKyAgICAweEQyQTEsIDB4RDJBMSwgMHgxMDM2LCAweEQyQTIsIDB4RDJBMywgMHgxMTNBLCAweEQyQTQsIDB4RDJBNiwgMHgxMDM3LA0KKyAgICAweEQyQTcsIDB4RDJBQSwgMHgxMTNDLCAweEQyQUIsIDB4RDJBQiwgMHgxMTQzLCAweEQyQUMsIDB4RDJBQywgMHgxMDNBLA0KKyAgICAweEQyQUQsIDB4RDJBRCwgMHgxMTQ0LCAweEQyQUUsIDB4RDJCMSwgMHgxMDNCLCAweEQyQjIsIDB4RDJCMiwgMHgxMTQ4LA0KKyAgICAweEQyQjMsIDB4RDJCRCwgMHgxMDNGLCAweEQyQkUsIDB4RDJCRSwgMHgxMTlGLCAweEQyQkYsIDB4RDJDMSwgMHgxMDRBLA0KKyAgICAweEQyQzIsIDB4RDJDMywgMHgxMUExLCAweEQyQzQsIDB4RDJDNCwgMHgxMUE1LCAweEQyQzUsIDB4RDJDNSwgMHgxMDRELA0KKyAgICAweEQyQzYsIDB4RDJDQSwgMHgxMUE2LCAweEQyQ0IsIDB4RDJDQiwgMHgxMUFDLCAweEQyQ0MsIDB4RDJDQywgMHgxMDRFLA0KKyAgICAweEQyQ0QsIDB4RDJDRSwgMHgxMUFELCAweEQyQ0YsIDB4RDJENCwgMHgxMUIwLCAweEQyRDUsIDB4RDJENywgMHgxMUI3LA0KKyAgICAweEQyRDgsIDB4RDJEOCwgMHgxMDRGLCAweEQyRDksIDB4RDJEQSwgMHgxMUJELCAweEQyREIsIDB4RDJERCwgMHgxMDUwLA0KKyAgICAweEQyREUsIDB4RDJERiwgMHgxMUMxLCAweEQyRTAsIDB4RDJFMCwgMHgxMDUzLCAweEQyRTEsIDB4RDJFMSwgMHgxMUMzLA0KKyAgICAweEQyRTIsIDB4RDJFMiwgMHgxMUM2LCAweEQyRTMsIDB4RDJFMywgMHgxMDU0LCAweEQyRTQsIDB4RDJFNCwgMHgxMUQ0LA0KKyAgICAweEQyRTUsIDB4RDJFOCwgMHgxMUQ2LCAweEQyRTksIDB4RDJFQSwgMHgxMURCLCAweEQyRUIsIDB4RDJFQiwgMHgxMUUwLA0KKyAgICAweEQyRUMsIDB4RDJFRiwgMHgxMDU1LCAweEQyRjAsIDB4RDJGMywgMHgxMUZDLCAweEQyRjQsIDB4RDJGNSwgMHgxMjAxLA0KKyAgICAweEQyRjYsIDB4RDJGNiwgMHgxMDU5LCAweEQyRjcsIDB4RDJGOCwgMHgxMjAzLCAweEQyRjksIDB4RDJGRSwgMHgxMDVBLA0KKyAgICAweEQzQTEsIDB4RDNGRSwgMHgxMDYwLCAweEQ0QTEsIDB4RDRFNSwgMHgxMEJFLCAweEQ0RTYsIDB4RDRFNiwgMHgxMERFLA0KKyAgICAweEQ0RTcsIDB4RDRGQiwgMHgxMTAzLCAweEQ0RkMsIDB4RDRGQywgMHgxMDI4LCAweEQ0RkQsIDB4RDRGRSwgMHgxMTE4LA0KKyAgICAweEQ1QTEsIDB4RDVBNCwgMHgxMTFBLCAweEQ1QTUsIDB4RDVBNSwgMHgxNkE4LCAweEQ1QTYsIDB4RDVBQSwgMHgxMTFFLA0KKyAgICAweEQ1QUIsIDB4RDVBQiwgMHgxMDJCLCAweEQ1QUMsIDB4RDVBRCwgMHgxMTIzLCAweEQ1QUUsIDB4RDVBRSwgMHgxMDYwLA0KKyAgICAweEQ1QUYsIDB4RDVGRSwgMHgxMTI1LCAweEQ2QTEsIDB4RDZCNywgMHgxMTc1LCAweEQ2QjgsIDB4RDZCOCwgMHgxMDQ3LA0KKyAgICAweEQ2QjksIDB4RDZDQywgMHgxMThDLCAweEQ2Q0QsIDB4RDZDRCwgMHgxMDRDLCAweEQ2Q0UsIDB4RDZGRSwgMHgxMUEwLA0KKyAgICAweEQ3QTEsIDB4RDdDQSwgMHgxMUQxLCAweEQ3Q0IsIDB4RDdDQiwgMHgxNUIwLCAweEQ3Q0MsIDB4RDdFMywgMHgxMUZCLA0KKyAgICAweEQ3RTQsIDB4RDdFNCwgMHgxOTE4LCAweEQ3RTUsIDB4RDdGRSwgMHgxMjEzLCAweEQ4QTEsIDB4RDhGRSwgMHgxMjJELA0KKyAgICAweEQ5QTEsIDB4RDlGRSwgMHgxMjhCLCAweERBQTEsIDB4REFGRSwgMHgxMkU5LCAweERCQTEsIDB4REJDNCwgMHgxMzQ3LA0KKyAgICAweERCQzUsIDB4REJDNSwgMHgxNDFGLCAweERCQzYsIDB4REJFMywgMHgxMzZCLCAweERCRTQsIDB4REJFNCwgMHgxMzNBLA0KKyAgICAweERCRTUsIDB4REJGRSwgMHgxMzg5LCAweERDQTEsIDB4RENBNCwgMHgxM0EzLCAweERDQTUsIDB4RENBNSwgMHgxRDVFLA0KKyAgICAweERDQTYsIDB4RENGRSwgMHgxM0E3LCAweEREQTEsIDB4RERBNCwgMHgxNDAwLCAweEREQTUsIDB4RERBNSwgMHgxM0Q3LA0KKyAgICAweEREQTYsIDB4RERENCwgMHgxNDA0LCAweERERDUsIDB4RERENSwgMHgxM0Y1LCAweERERDYsIDB4RERGMywgMHgxNDMzLA0KKyAgICAweERERjQsIDB4RERGNCwgMHgxREI3LCAweERERjUsIDB4RERGRSwgMHgxNDUxLCAweERFQTEsIDB4REVGQiwgMHgxNDVCLA0KKyAgICAweERFRkMsIDB4REVGQywgMHgxNUQwLCAweERFRkQsIDB4REVGRCwgMHgxNEI2LCAweERFRkUsIDB4REVGRSwgMHgxNEY3LA0KKyAgICAweERGQTEsIDB4REZCMiwgMHgxNEI3LCAweERGQjMsIDB4REZCMywgMHgxQkFCLCAweERGQjQsIDB4REZFMCwgMHgxNEM5LA0KKyAgICAweERGRTEsIDB4REZFMSwgMHgxNEYyLCAweERGRTIsIDB4REZFNywgMHgxNEY2LCAweERGRTgsIDB4REZFOCwgMHgxNTZELA0KKyAgICAweERGRTksIDB4REZGRSwgMHgxNEZDLCAweEUwQTEsIDB4RTBGMCwgMHgxNTEyLCAweEUwRjEsIDB4RTBGMSwgMHgxNzcxLA0KKyAgICAweEUwRjIsIDB4RTBGRSwgMHgxNTYyLCAweEUxQTEsIDB4RTFBQywgMHgxNTZGLCAweEUxQUQsIDB4RTFBRCwgMHgxNTU0LA0KKyAgICAweEUxQUUsIDB4RTFFQywgMHgxNTdCLCAweEUxRUQsIDB4RTFFRCwgMHgxNEM1LCAweEUxRUUsIDB4RTFGRSwgMHgxNUJBLA0KKyAgICAweEUyQTEsIDB4RTJGRSwgMHgxNUNCLCAweEUzQTEsIDB4RTNGNCwgMHgxNjI5LCAweEUzRjUsIDB4RTNGNSwgMHgxQjYxLA0KKyAgICAweEUzRjYsIDB4RTNGRSwgMHgxNjdELCAweEU0QTEsIDB4RTRBMSwgMHgxQ0NBLCAweEU0QTIsIDB4RTRBOCwgMHgxNjg2LA0KKyAgICAweEU0QTksIDB4RTRBOSwgMHgxNjJFLCAweEU0QUEsIDB4RTRGRSwgMHgxNjhELCAweEU1QTEsIDB4RTVBRCwgMHgxNkUyLA0KKyAgICAweEU1QUUsIDB4RTVBRSwgMHgxNkYyLCAweEU1QUYsIDB4RTVCMCwgMHgxNkVGLCAweEU1QjEsIDB4RTVCMiwgMHgxMTQ5LA0KKyAgICAweEU1QjMsIDB4RTVCOCwgMHgxNkYxLCAweEU1QjksIDB4RTVCOSwgMHgxMTRCLCAweEU1QkEsIDB4RTVCQSwgMHgxNkY3LA0KKyAgICAweEU1QkIsIDB4RTVCQywgMHgxMTRELCAweEU1QkQsIDB4RTVDMywgMHgxNkY4LCAweEU1QzQsIDB4RTVDNCwgMHgxMTRGLA0KKyAgICAweEU1QzUsIDB4RTVDRCwgMHgxNkZGLCAweEU1Q0UsIDB4RTVDRSwgMHgxMTUzLCAweEU1Q0YsIDB4RTVDRiwgMHgxNzA4LA0KKyAgICAweEU1RDAsIDB4RTVEMCwgMHgxMTU0LCAweEU1RDEsIDB4RTVEMSwgMHgxNzA5LCAweEU1RDIsIDB4RTVEMiwgMHgxMTU1LA0KKyAgICAweEU1RDMsIDB4RTVENSwgMHgxNzBBLCAweEU1RDYsIDB4RTVENiwgMHgxMTU3LCAweEU1RDcsIDB4RTVGOSwgMHgxNzBELA0KKyAgICAweEU1RkEsIDB4RTVGQiwgMHgxMTVBLCAweEU1RkMsIDB4RTVGQywgMHgxMDNGLCAweEU1RkQsIDB4RTVGRCwgMHgxNzMwLA0KKyAgICAweEU1RkUsIDB4RTVGRSwgMHgxMTVDLCAweEU2QTEsIDB4RTZBMSwgMHgxMTVGLCAweEU2QTIsIDB4RTZBMywgMHgxNzMxLA0KKyAgICAweEU2QTQsIDB4RTZBNCwgMHgxMTYxLCAweEU2QTUsIDB4RTZBNiwgMHgxNzMzLCAweEU2QTcsIDB4RTZBNywgMHgxMTYyLA0KKyAgICAweEU2QTgsIDB4RTZBQywgMHgxNzM1LCAweEU2QUQsIDB4RTZBRCwgMHgxMTY1LCAweEU2QUUsIDB4RTZBRSwgMHgxNzNBLA0KKyAgICAweEU2QUYsIDB4RTZCMSwgMHgxMTY3LCAweEU2QjIsIDB4RTZCMiwgMHgxNzNCLCAweEU2QjMsIDB4RTZCMywgMHgxMTZBLA0KKyAgICAweEU2QjQsIDB4RTZCNiwgMHgxNzNDLCAweEU2QjcsIDB4RTZCOCwgMHgxMTZCLCAweEU2QjksIDB4RTZCQiwgMHgxNzNGLA0KKyAgICAweEU2QkMsIDB4RTZCQywgMHgxMTZGLCAweEU2QkQsIDB4RTZDMywgMHgxNzQyLCAweEU2QzQsIDB4RTZDNCwgMHgxMDQwLA0KKyAgICAweEU2QzUsIDB4RTZDNSwgMHgxNzQ5LCAweEU2QzYsIDB4RTZDNywgMHgxMTcxLCAweEU2QzgsIDB4RTZDOSwgMHgxNzRBLA0KKyAgICAweEU2Q0EsIDB4RTZDQSwgMHgxMDQxLCAweEU2Q0IsIDB4RTZEMSwgMHgxNzRDLCAweEU2RDIsIDB4RTZEMiwgMHgxMTc0LA0KKyAgICAweEU2RDMsIDB4RTZENSwgMHgxNzUzLCAweEU2RDYsIDB4RTZENiwgMHgxMTc1LCAweEU2RDcsIDB4RTZEOCwgMHgxNzU2LA0KKyAgICAweEU2RDksIDB4RTZEOSwgMHgxMTc2LCAweEU2REEsIDB4RTZEQiwgMHgxNzU4LCAweEU2REMsIDB4RTZEQywgMHgxMDQyLA0KKyAgICAweEU2REQsIDB4RTZERSwgMHgxNzVBLCAweEU2REYsIDB4RTZERiwgMHgxMTc3LCAweEU2RTAsIDB4RTZFMCwgMHgxNzVDLA0KKyAgICAweEU2RTEsIDB4RTZFMSwgMHgxMTc4LCAweEU2RTIsIDB4RTZFMywgMHgxNzVELCAweEU2RTQsIDB4RTZFNCwgMHgxMTdBLA0KKyAgICAweEU2RTUsIDB4RTZFNSwgMHgxMTc5LCAweEU2RTYsIDB4RTZFNiwgMHgxMTdCLCAweEU2RTcsIDB4RTZFNywgMHgxNzVGLA0KKyAgICAweEU2RTgsIDB4RTZFOCwgMHgxMTdDLCAweEU2RTksIDB4RTZFOSwgMHgxNzYwLCAweEU2RUEsIDB4RTZFQiwgMHgxMTdFLA0KKyAgICAweEU2RUMsIDB4RTZFQywgMHgxOTJGLCAweEU2RUQsIDB4RTZFRSwgMHgxNzYxLCAweEU2RUYsIDB4RTZFRiwgMHgxMTgxLA0KKyAgICAweEU2RjAsIDB4RTZGMCwgMHgxNzYzLCAweEU2RjEsIDB4RTZGMSwgMHgxMTgyLCAweEU2RjIsIDB4RTZGMiwgMHgxNTU0LA0KKyAgICAweEU2RjMsIDB4RTZGNCwgMHgxNzY0LCAweEU2RjUsIDB4RTZGNSwgMHgxMTgzLCAweEU2RjYsIDB4RTZGNiwgMHgxMDQzLA0KKyAgICAweEU2RjcsIDB4RTZGNywgMHgxMDQ2LCAweEU2RjgsIDB4RTZGOCwgMHgxNzY2LCAweEU2RjksIDB4RTZGOSwgMHgxMTg1LA0KKyAgICAweEU2RkEsIDB4RTZGRSwgMHgxNzY3LCAweEU3QTEsIDB4RTdBMSwgMHgxMTg3LCAweEU3QTIsIDB4RTdBNSwgMHgxNzZDLA0KKyAgICAweEU3QTYsIDB4RTdBNiwgMHgxMTg4LCAweEU3QTcsIDB4RTdBOCwgMHgxNzcwLCAweEU3QTksIDB4RTdBOSwgMHgxMTg5LA0KKyAgICAweEU3QUEsIDB4RTdBQSwgMHgxMThCLCAweEU3QUIsIDB4RTdBQiwgMHgxNzcyLCAweEU3QUMsIDB4RTdBQywgMHgxMDQ3LA0KKyAgICAweEU3QUQsIDB4RTdBRCwgMHgxMThELCAweEU3QUUsIDB4RTdBRiwgMHgxNzczLCAweEU3QjAsIDB4RTdCMCwgMHgxMThFLA0KKyAgICAweEU3QjEsIDB4RTdCRSwgMHgxNzc1LCAweEU3QkYsIDB4RTdCRiwgMHgxMThGLCAweEU3QzAsIDB4RTdDMCwgMHgxNzgzLA0KKyAgICAweEU3QzEsIDB4RTdDMSwgMHgxRTY3LCAweEU3QzIsIDB4RTdDNSwgMHgxNzg0LCAweEU3QzYsIDB4RTdDNiwgMHgxMTkxLA0KKyAgICAweEU3QzcsIDB4RTdDNywgMHgxMTkzLCAweEU3QzgsIDB4RTdDQSwgMHgxNzg4LCAweEU3Q0IsIDB4RTdDQiwgMHgxMTk1LA0KKyAgICAweEU3Q0MsIDB4RTdDQywgMHgxNzhCLCAweEU3Q0QsIDB4RTdDRCwgMHgxMTk2LCAweEU3Q0UsIDB4RTdDRSwgMHgxNzhDLA0KKyAgICAweEU3Q0YsIDB4RTdEMCwgMHgxMTk3LCAweEU3RDEsIDB4RTdEMiwgMHgxNzhELCAweEU3RDMsIDB4RTdEMywgMHgxMTlBLA0KKyAgICAweEU3RDQsIDB4RTdERSwgMHgxNzhGLCAweEU3REYsIDB4RTdERiwgMHgxMTlDLCAweEU3RTAsIDB4RTdFMywgMHgxNzlBLA0KKyAgICAweEU3RTQsIDB4RTdFNCwgMHgxMTlELCAweEU3RTUsIDB4RTdFNSwgMHgxNzlFLCAweEU3RTYsIDB4RTdFNiwgMHgxMTlFLA0KKyAgICAweEU3RTcsIDB4RTdGNiwgMHgxNzlGLCAweEU3RjcsIDB4RTdGNywgMHgxNkE1LCAweEU3RjgsIDB4RTdGRSwgMHgxN0FGLA0KKyAgICAweEU4QTEsIDB4RThFNiwgMHgxN0I2LCAweEU4RTcsIDB4RThFOCwgMHgxMUM3LCAweEU4RTksIDB4RThFRiwgMHgxN0ZDLA0KKyAgICAweEU4RjAsIDB4RThGMCwgMHgxMUM5LCAweEU4RjEsIDB4RThGMSwgMHgxMDU0LCAweEU4RjIsIDB4RThGNiwgMHgxODAzLA0KKyAgICAweEU4RjcsIDB4RThGNywgMHgxMUNCLCAweEU4RjgsIDB4RThGOCwgMHgxODA4LCAweEU4RjksIDB4RThGOSwgMHgxNkE4LA0KKyAgICAweEU4RkEsIDB4RThGQSwgMHgxODA5LCAweEU4RkIsIDB4RThGQiwgMHgxMUNDLCAweEU4RkMsIDB4RThGRCwgMHgxODBBLA0KKyAgICAweEU4RkUsIDB4RThGRSwgMHgxMUNELCAweEU5QTEsIDB4RTlBNiwgMHgxODBDLCAweEU5QTcsIDB4RTlBNywgMHgxMUQwLA0KKyAgICAweEU5QTgsIDB4RTlBQiwgMHgxODEyLCAweEU5QUMsIDB4RTlBQywgMHgxMUQxLCAweEU5QUQsIDB4RTlDQiwgMHgxODE2LA0KKyAgICAweEU5Q0MsIDB4RTlDQywgMHgxMUQzLCAweEU5Q0QsIDB4RTlGNiwgMHgxODM1LCAweEU5RjcsIDB4RTlGNywgMHgxRjM0LA0KKyAgICAweEU5RjgsIDB4RTlGRSwgMHgxODVGLCAweEVBQTEsIDB4RUFDMCwgMHgxODY2LCAweEVBQzEsIDB4RUFDMSwgMHgxN0VCLA0KKyAgICAweEVBQzIsIDB4RUFFNCwgMHgxODg2LCAweEVBRTUsIDB4RUFFNSwgMHgxMUUxLCAweEVBRTYsIDB4RUFGMywgMHgxOEE5LA0KKyAgICAweEVBRjQsIDB4RUFGNCwgMHgxMDU3LCAweEVBRjUsIDB4RUFGNiwgMHgxOEI3LCAweEVBRjcsIDB4RUFGNywgMHgxMUUzLA0KKyAgICAweEVBRjgsIDB4RUFGQiwgMHgxOEI5LCAweEVBRkMsIDB4RUFGQywgMHgxMUU1LCAweEVBRkQsIDB4RUFGRCwgMHgxOEJELA0KKyAgICAweEVBRkUsIDB4RUFGRSwgMHgxMUU2LCAweEVCQTEsIDB4RUJBMywgMHgxOEJFLCAweEVCQTQsIDB4RUJBNCwgMHgxMUU4LA0KKyAgICAweEVCQTUsIDB4RUJBNiwgMHgxOEMxLCAweEVCQTcsIDB4RUJBNywgMHgxMUVBLCAweEVCQTgsIDB4RUJBOCwgMHgxOEMzLA0KKyAgICAweEVCQTksIDB4RUJBOSwgMHgxMUVDLCAweEVCQUEsIDB4RUJBQSwgMHgxMDU4LCAweEVCQUIsIDB4RUJCOSwgMHgxOEM0LA0KKyAgICAweEVCQkEsIDB4RUJCQiwgMHgxMUVFLCAweEVCQkMsIDB4RUJCQywgMHgxOEQzLCAweEVCQkQsIDB4RUJCRCwgMHgxMUYwLA0KKyAgICAweEVCQkUsIDB4RUJDMCwgMHgxOEQ0LCAweEVCQzEsIDB4RUJDMSwgMHgxMUYxLCAweEVCQzIsIDB4RUJDMiwgMHgxMUYzLA0KKyAgICAweEVCQzMsIDB4RUJDNSwgMHgxOEQ3LCAweEVCQzYsIDB4RUJDNywgMHgxMUY0LCAweEVCQzgsIDB4RUJDQiwgMHgxOERBLA0KKyAgICAweEVCQ0MsIDB4RUJDQywgMHgxMUY3LCAweEVCQ0QsIDB4RUJDRSwgMHgxOERFLCAweEVCQ0YsIDB4RUJEMSwgMHgxMUY4LA0KKyAgICAweEVCRDIsIDB4RUJEMiwgMHgxNUIwLCAweEVCRDMsIDB4RUJENywgMHgxOEUwLCAweEVCRDgsIDB4RUJEOCwgMHgxMUZCLA0KKyAgICAweEVCRDksIDB4RUJGRSwgMHgxOEU1LCAweEVDQTEsIDB4RUNBNSwgMHgxOTBCLCAweEVDQTYsIDB4RUNBNiwgMHgxMjA2LA0KKyAgICAweEVDQTcsIDB4RUNBNywgMHgxMjA4LCAweEVDQTgsIDB4RUNBOSwgMHgxOTEwLCAweEVDQUEsIDB4RUNBQSwgMHgxMjBBLA0KKyAgICAweEVDQUIsIDB4RUNBRSwgMHgxOTEyLCAweEVDQUYsIDB4RUNBRiwgMHgxNzNFLCAweEVDQjAsIDB4RUNCMSwgMHgxMjBDLA0KKyAgICAweEVDQjIsIDB4RUNCMiwgMHgxMDVCLCAweEVDQjMsIDB4RUNCNCwgMHgxOTE2LCAweEVDQjUsIDB4RUNCNSwgMHgxMjExLA0KKyAgICAweEVDQjYsIDB4RUNCNywgMHgxOTE4LCAweEVDQjgsIDB4RUNCOCwgMHgxMjEzLCAweEVDQjksIDB4RUNCOSwgMHgxOTFBLA0KKyAgICAweEVDQkEsIDB4RUNCQSwgMHgxMjE1LCAweEVDQkIsIDB4RUNCRiwgMHgxOTFCLCAweEVDQzAsIDB4RUNDMSwgMHgxMjE4LA0KKyAgICAweEVDQzIsIDB4RUNDNCwgMHgxOTIwLCAweEVDQzUsIDB4RUNDNSwgMHgxMjFBLCAweEVDQzYsIDB4RUNDNiwgMHgxMjFDLA0KKyAgICAweEVDQzcsIDB4RUNDOCwgMHgxOTIzLCAweEVDQzksIDB4RUNDQSwgMHgxMDVDLCAweEVDQ0IsIDB4RUNENCwgMHgxOTI1LA0KKyAgICAweEVDRDUsIDB4RUNENSwgMHgxMjFFLCAweEVDRDYsIDB4RUNEQywgMHgxOTJGLCAweEVDREQsIDB4RUNERSwgMHgxMjIwLA0KKyAgICAweEVDREYsIDB4RUNFMCwgMHgxOTM2LCAweEVDRTEsIDB4RUNFMSwgMHgxMjIyLCAweEVDRTIsIDB4RUNFMywgMHgxOTM4LA0KKyAgICAweEVDRTQsIDB4RUNFNCwgMHgxMjI0LCAweEVDRTUsIDB4RUNFNiwgMHgxOTNBLCAweEVDRTcsIDB4RUNFOCwgMHgxMjI1LA0KKyAgICAweEVDRTksIDB4RUNGNiwgMHgxOTNDLCAweEVDRjcsIDB4RUNGOCwgMHgxMjI3LCAweEVDRjksIDB4RUNGOSwgMHgxOTRBLA0KKyAgICAweEVDRkEsIDB4RUNGQSwgMHgxMjJBLCAweEVDRkIsIDB4RUNGRSwgMHgxOTRCLCAweEVEQTEsIDB4RURBMywgMHgxMjJELA0KKyAgICAweEVEQTQsIDB4RURFRCwgMHgxOTRGLCAweEVERUUsIDB4RURFRSwgMHgxNEU3LCAweEVERUYsIDB4RURGRSwgMHgxOTk5LA0KKyAgICAweEVFQTEsIDB4RUVEQSwgMHgxOUE5LCAweEVFREIsIDB4RUVEQiwgMHgxOTVFLCAweEVFREMsIDB4RUVGRSwgMHgxOUUzLA0KKyAgICAweEVGQTEsIDB4RUZGRSwgMHgxQTA2LCAweEYwQTEsIDB4RjBGRSwgMHgxQTY0LCAweEYxQTEsIDB4RjFGRSwgMHgxQUMyLA0KKyAgICAweEYyQTEsIDB4RjJCQywgMHgxQjIwLCAweEYyQkQsIDB4RjJCRCwgMHgxNjYzLCAweEYyQkUsIDB4RjJGOSwgMHgxQjNDLA0KKyAgICAweEYyRkEsIDB4RjJGQSwgMHgxNjhCLCAweEYyRkIsIDB4RjJGRSwgMHgxQjc4LCAweEYzQTEsIDB4RjNCMCwgMHgxQjdDLA0KKyAgICAweEYzQjEsIDB4RjNCMSwgMHgxMDVGLCAweEYzQjIsIDB4RjNGRSwgMHgxQjhDLCAweEY0QTEsIDB4RjRBNiwgMHgxQkQ5LA0KKyAgICAweEY0QTcsIDB4RjRBNywgMHgxOTU0LCAweEY0QTgsIDB4RjRFRCwgMHgxQkRGLCAweEY0RUUsIDB4RjRFRSwgMHgxQTFDLA0KKyAgICAweEY0RUYsIDB4RjRGRSwgMHgxQzI1LCAweEY1QTEsIDB4RjVGRSwgMHgxQzM1LCAweEY2QTEsIDB4RjZGMywgMHgxQzkzLA0KKyAgICAweEY2RjQsIDB4RjZGNCwgMHgxMEI3LCAweEY2RjUsIDB4RjZGNSwgMHgxQ0U2LCAweEY2RjYsIDB4RjZGNiwgMHgxQkUzLA0KKyAgICAweEY2RjcsIDB4RjZGRSwgMHgxQ0U3LCAweEY3QTEsIDB4RjdCNywgMHgxQ0VGLCAweEY3QjgsIDB4RjdCOCwgMHgxMDk3LA0KKyAgICAweEY3QjksIDB4RjdDNywgMHgxRDA2LCAweEY3QzgsIDB4RjdDOCwgMHgxMEFBLCAweEY3QzksIDB4RjdEMiwgMHgxRDE1LA0KKyAgICAweEY3RDMsIDB4RjdEMywgMHgxMEY0LCAweEY3RDQsIDB4RjdGRSwgMHgxRDFGLCAweEY4QTEsIDB4RjhEQSwgMHgxRDRBLA0KKyAgICAweEY4REIsIDB4RjhEQiwgMHgxRDk0LCAweEY4REMsIDB4RjhFRiwgMHgxRDg0LCAweEY4RjAsIDB4RjhGMCwgMHgxM0UwLA0KKyAgICAweEY4RjEsIDB4RjhGRSwgMHgxRDk4LCAweEY5QTEsIDB4RjlGRSwgMHgxREE2LCAweEZBQTEsIDB4RkFBMSwgMHgxRTFELA0KKyAgICAweEZBQTIsIDB4RkFBMiwgMHgwREU2LCAweEZBQTMsIDB4RkFFNSwgMHgxRTA0LCAweEZBRTYsIDB4RkFFNiwgMHgwRTNDLA0KKyAgICAweEZBRTcsIDB4RkFGRSwgMHgxRTQ3LCAweEZCQTEsIDB4RkJGRSwgMHgxRTVGLCAweEZDQTEsIDB4RkNBOCwgMHgxRUJELA0KKyAgICAweEZDQTksIDB4RkNBOSwgMHgwRUU3LCAweEZDQUEsIDB4RkNGRSwgMHgxRUM1LCAweEZEQTEsIDB4RkRGRSwgMHgxRjFBLA0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0tvcmVhMS9LU0Ntcy1VSEMtVl8xLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvS1NDbXMtVUhDLVZfMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBmMWQ0NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvS1NDbXMtVUhDLVZfMS5jcHAKQEAgLTAsMCArMSwxNCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0tTQ21zX1VIQ19WXzFbMTYgKiAzXSA9IHsKKyAgICAweEExQTIsIDB4QTFBMywgMHgxRjc4LCAweEExQTUsIDB4QTFBNSwgMHgxRjdBLCAweEExQTYsIDB4QTFBNiwgMHgyMDgwLAorICAgIDB4QTFBOSwgMHhBMUFCLCAweDFGN0IsIDB4QTFBRCwgMHhBMUFELCAweDFGN0UsIDB4QTFCMiwgMHhBMUJELCAweDFGN0YsCisgICAgMHhBMUVCLCAweEExRUIsIDB4MUY4QiwgMHhBM0ExLCAweEEzQTEsIDB4MUY4QywgMHhBM0E4LCAweEEzQTksIDB4MUY4RCwKKyAgICAweEEzQUMsIDB4QTNBQywgMHgxRjhGLCAweEEzQUUsIDB4QTNBRSwgMHgxRjkwLCAweEEzQkEsIDB4QTNCRiwgMHgxRjkxLAorICAgIDB4QTNEQiwgMHhBM0RCLCAweDFGOTcsIDB4QTNERCwgMHhBM0RELCAweDFGOTgsIDB4QTNERiwgMHhBM0RGLCAweDFGOTksCisgICAgMHhBM0ZCLCAweEEzRkUsIDB4MUY5QSwKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL0tTQ3BjLUVVQy1IXzAuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0tvcmVhMS9LU0NwYy1FVUMtSF8wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDYyZmM2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2NtYXBzL0tvcmVhMS9LU0NwYy1FVUMtSF8wLmNwcApAQCAtMCwwICsxLDE3OCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGdfRlhDTUFQX0tTQ3BjX0VVQ19IXzBbNTA5ICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDAwMDEsIDB4MDA4MSwgMHgwMDgzLCAweDAwNjAsIDB4MDBGRSwgMHgwMEZGLCAweDAwNjMsDQorICAgIDB4QTE0MSwgMHhBMTdELCAweDFGRkYsIDB4QTE4MSwgMHhBMTlBLCAweDIwM0MsIDB4QTE5QywgMHhBMUEwLCAweDIwNTYsDQorICAgIDB4QTFBMSwgMHhBMUExLCAweDAwNjUsIDB4QTFBMiwgMHhBMUEzLCAweDIwNUIsIDB4QTFBNCwgMHhBMUZFLCAweDAwNjgsDQorICAgIDB4QTI0MSwgMHhBMjRDLCAweDIwNUQsIDB4QTJBMSwgMHhBMkU1LCAweDAwQzMsIDB4QTJFNiwgMHhBMkZFLCAweDIwNjksDQorICAgIDB4QTM0MSwgMHhBMzdELCAweDIwODIsIDB4QTM4MSwgMHhBMzlGLCAweDIwQkYsIDB4QTNBMSwgMHhBM0ZFLCAweDAxMDgsDQorICAgIDB4QTQ0MSwgMHhBNDdELCAweDIwREUsIDB4QTQ4MSwgMHhBNDlGLCAweDIxMUIsIDB4QTRBMSwgMHhBNEQzLCAweDAxNjYsDQorICAgIDB4QTRENSwgMHhBNEZFLCAweDAxOTksIDB4QTU0MSwgMHhBNTdELCAweDIxM0EsIDB4QTU4MSwgMHhBNThCLCAweDIxNzcsDQorICAgIDB4QTVBMSwgMHhBNUFBLCAweDAxQzMsIDB4QTVCMCwgMHhBNUI5LCAweDAxQ0QsIDB4QTVDMSwgMHhBNUQ4LCAweDAxRDcsDQorICAgIDB4QTVEQSwgMHhBNURFLCAweDIxODIsIDB4QTVFMSwgMHhBNUY4LCAweDAxRUYsIDB4QTVGOSwgMHhBNUZDLCAweDIxODcsDQorICAgIDB4QTY0MSwgMHhBNjdELCAweDIxOEIsIDB4QTY4MSwgMHhBNjhBLCAweDIxQzgsIDB4QTY4RCwgMHhBNjkzLCAweDIxRDIsDQorICAgIDB4QTY5NiwgMHhBNjlCLCAweDIxRDksIDB4QTY5RSwgMHhBNjlGLCAweDIxREYsIDB4QTZBMSwgMHhBNkU0LCAweDAyMDcsDQorICAgIDB4QTZFNSwgMHhBNkZFLCAweDIxRTEsIDB4QTc0MSwgMHhBNzdELCAweDIxRkIsIDB4QTc4MSwgMHhBNzlGLCAweDIyMzgsDQorICAgIDB4QTdBMSwgMHhBN0VGLCAweDAyNEIsIDB4QTdGMCwgMHhBN0ZFLCAweDIyNTcsIDB4QTg0MSwgMHhBODdELCAweDIyNjYsDQorICAgIDB4QTg4MSwgMHhBODlGLCAweDIyQTMsIDB4QThBMSwgMHhBOEE0LCAweDAyOUEsIDB4QThBNiwgMHhBOEE2LCAweDAyOUUsDQorICAgIDB4QThBOCwgMHhBOEFGLCAweDAyOUYsIDB4QThCMSwgMHhBOEZFLCAweDAyQTcsIDB4QTk0MSwgMHhBOTc0LCAweDIyQzIsDQorICAgIDB4QTlBMSwgMHhBOUZFLCAweDAyRjUsIDB4QUE0MSwgMHhBQTdELCAweDIyRjYsIDB4QUE4MSwgMHhBQTlGLCAweDIzMzMsDQorICAgIDB4QUFBMSwgMHhBQUYzLCAweDAzNTMsIDB4QUFGNCwgMHhBQUZFLCAweDIzNTIsIDB4QUI0MSwgMHhBQjdELCAweDIzNUQsDQorICAgIDB4QUI4MSwgMHhBQjlGLCAweDIzOUEsIDB4QUJBMSwgMHhBQkY2LCAweDAzQTYsIDB4QUJGNywgMHhBQkZBLCAweDIzQjksDQorICAgIDB4QUJGQiwgMHhBQkZELCAweDI0NzIsIDB4QUM0MSwgMHhBQzdELCAweDIzQkQsIDB4QUM4MSwgMHhBQzk3LCAweDIzRkEsDQorICAgIDB4QUNBMSwgMHhBQ0MxLCAweDAzRkMsIDB4QUNDMiwgMHhBQ0QwLCAweDI0MTEsIDB4QUNEMSwgMHhBQ0YxLCAweDA0MUQsDQorICAgIDB4QUNGMiwgMHhBQ0Y2LCAweDI0MjAsIDB4QUQ0MSwgMHhBRDdELCAweDI0MjUsIDB4QURBMSwgMHhBREIwLCAweDI0NjIsDQorICAgIDB4QjBBMSwgMHhCMEZFLCAweDA0M0UsIDB4QjFBMSwgMHhCMUZFLCAweDA0OUMsIDB4QjJBMSwgMHhCMkZFLCAweDA0RkEsDQorICAgIDB4QjNBMSwgMHhCM0ZFLCAweDA1NTgsIDB4QjRBMSwgMHhCNEZFLCAweDA1QjYsIDB4QjVBMSwgMHhCNUZFLCAweDA2MTQsDQorICAgIDB4QjZBMSwgMHhCNkZFLCAweDA2NzIsIDB4QjdBMSwgMHhCN0ZFLCAweDA2RDAsIDB4QjhBMSwgMHhCOEZFLCAweDA3MkUsDQorICAgIDB4QjlBMSwgMHhCOUZFLCAweDA3OEMsIDB4QkFBMSwgMHhCQUZFLCAweDA3RUEsIDB4QkJBMSwgMHhCQkZFLCAweDA4NDgsDQorICAgIDB4QkNBMSwgMHhCQ0ZFLCAweDA4QTYsIDB4QkRBMSwgMHhCREZFLCAweDA5MDQsIDB4QkVBMSwgMHhCRUZFLCAweDA5NjIsDQorICAgIDB4QkZBMSwgMHhCRkZFLCAweDA5QzAsIDB4QzBBMSwgMHhDMEZFLCAweDBBMUUsIDB4QzFBMSwgMHhDMUZFLCAweDBBN0MsDQorICAgIDB4QzJBMSwgMHhDMkZFLCAweDBBREEsIDB4QzNBMSwgMHhDM0ZFLCAweDBCMzgsIDB4QzRBMSwgMHhDNEZFLCAweDBCOTYsDQorICAgIDB4QzVBMSwgMHhDNUZFLCAweDBCRjQsIDB4QzZBMSwgMHhDNkZFLCAweDBDNTIsIDB4QzdBMSwgMHhDN0ZFLCAweDBDQjAsDQorICAgIDB4QzhBMSwgMHhDOEZFLCAweDBEMEUsIDB4Q0FBMSwgMHhDQUZFLCAweDBENkMsIDB4Q0JBMSwgMHhDQkNGLCAweDBEQ0EsDQorICAgIDB4Q0JEMCwgMHhDQkQwLCAweDEwMTQsIDB4Q0JEMSwgMHhDQkQ1LCAweDBERjksIDB4Q0JENiwgMHhDQkQ2LCAweDBFNUUsDQorICAgIDB4Q0JENywgMHhDQkU2LCAweDBERkUsIDB4Q0JFNywgMHhDQkU3LCAweDFCOEQsIDB4Q0JFOCwgMHhDQkZFLCAweDBFMEUsDQorICAgIDB4Q0NBMSwgMHhDQ0ZFLCAweDBFMjUsIDB4Q0RBMSwgMHhDRENFLCAweDBFODMsIDB4Q0RDRiwgMHhDRENGLCAweDBEODQsDQorICAgIDB4Q0REMCwgMHhDREU3LCAweDBFQjEsIDB4Q0RFOCwgMHhDREU4LCAweDFFREMsIDB4Q0RFOSwgMHhDREZFLCAweDBFQzksDQorICAgIDB4Q0VBMSwgMHhDRUFDLCAweDBFREYsIDB4Q0VBRCwgMHhDRUFELCAweDBFREEsIDB4Q0VBRSwgMHhDRUZFLCAweDBFRUIsDQorICAgIDB4Q0ZBMSwgMHhDRkZBLCAweDBGM0MsIDB4Q0ZGQiwgMHhDRkZCLCAweDBGM0UsIDB4Q0ZGQywgMHhDRkZFLCAweDBGOTYsDQorICAgIDB4RDBBMSwgMHhEMEExLCAweDBGOTksIDB4RDBBMiwgMHhEMEEyLCAweDBGNkEsIDB4RDBBMywgMHhEMEI3LCAweDBGOUEsDQorICAgIDB4RDBCOCwgMHhEMEI4LCAweDBGNkEsIDB4RDBCOSwgMHhEMENGLCAweDBGQUYsIDB4RDBEMCwgMHhEMEQwLCAweDBFN0MsDQorICAgIDB4RDBEMSwgMHhEMERDLCAweDBGQzYsIDB4RDBERCwgMHhEMERELCAweDEwMjMsIDB4RDBERSwgMHhEMEZFLCAweDBGRDIsDQorICAgIDB4RDFBMSwgMHhEMUQzLCAweDBGRjMsIDB4RDFENCwgMHhEMUQ0LCAweDExMTYsIDB4RDFENSwgMHhEMUQ1LCAweDEwM0MsDQorICAgIDB4RDFENiwgMHhEMUQ3LCAweDEwMjYsIDB4RDFEOCwgMHhEMUQ4LCAweDExMTcsIDB4RDFEOSwgMHhEMURBLCAweDEwMjgsDQorICAgIDB4RDFEQiwgMHhEMUUwLCAweDExMTgsIDB4RDFFMSwgMHhEMUUxLCAweDEwMkEsIDB4RDFFMiwgMHhEMUUyLCAweDE2QTgsDQorICAgIDB4RDFFMywgMHhEMUU1LCAweDExMUUsIDB4RDFFNiwgMHhEMUU2LCAweDExMjIsIDB4RDFFNywgMHhEMUU3LCAweDEwMkIsDQorICAgIDB4RDFFOCwgMHhEMUVCLCAweDExMjMsIDB4RDFFQywgMHhEMUVDLCAweDEwMkMsIDB4RDFFRCwgMHhEMUVELCAweDExMjcsDQorICAgIDB4RDFFRSwgMHhEMUVFLCAweDEwMkQsIDB4RDFFRiwgMHhEMUYwLCAweDExMkEsIDB4RDFGMSwgMHhEMUYxLCAweDEwMkUsDQorICAgIDB4RDFGMiwgMHhEMUYyLCAweDExMkMsIDB4RDFGMywgMHhEMUY1LCAweDEwMkYsIDB4RDFGNiwgMHhEMUY2LCAweDExMkYsDQorICAgIDB4RDFGNywgMHhEMUY5LCAweDEwMzIsIDB4RDFGQSwgMHhEMUZBLCAweDExMzMsIDB4RDFGQiwgMHhEMUZCLCAweDEwMzUsDQorICAgIDB4RDFGQywgMHhEMUZELCAweDExMzYsIDB4RDFGRSwgMHhEMUZFLCAweDExMzksIDB4RDJBMSwgMHhEMkExLCAweDEwMzYsDQorICAgIDB4RDJBMiwgMHhEMkEzLCAweDExM0EsIDB4RDJBNCwgMHhEMkE2LCAweDEwMzcsIDB4RDJBNywgMHhEMkFBLCAweDExM0MsDQorICAgIDB4RDJBQiwgMHhEMkFCLCAweDExNDMsIDB4RDJBQywgMHhEMkFDLCAweDEwM0EsIDB4RDJBRCwgMHhEMkFELCAweDExNDQsDQorICAgIDB4RDJBRSwgMHhEMkIxLCAweDEwM0IsIDB4RDJCMiwgMHhEMkIyLCAweDExNDgsIDB4RDJCMywgMHhEMkJELCAweDEwM0YsDQorICAgIDB4RDJCRSwgMHhEMkJFLCAweDExOUYsIDB4RDJCRiwgMHhEMkMxLCAweDEwNEEsIDB4RDJDMiwgMHhEMkMzLCAweDExQTEsDQorICAgIDB4RDJDNCwgMHhEMkM0LCAweDExQTUsIDB4RDJDNSwgMHhEMkM1LCAweDEwNEQsIDB4RDJDNiwgMHhEMkNBLCAweDExQTYsDQorICAgIDB4RDJDQiwgMHhEMkNCLCAweDExQUMsIDB4RDJDQywgMHhEMkNDLCAweDEwNEUsIDB4RDJDRCwgMHhEMkNFLCAweDExQUQsDQorICAgIDB4RDJDRiwgMHhEMkQ0LCAweDExQjAsIDB4RDJENSwgMHhEMkQ3LCAweDExQjcsIDB4RDJEOCwgMHhEMkQ4LCAweDEwNEYsDQorICAgIDB4RDJEOSwgMHhEMkRBLCAweDExQkQsIDB4RDJEQiwgMHhEMkRELCAweDEwNTAsIDB4RDJERSwgMHhEMkRGLCAweDExQzEsDQorICAgIDB4RDJFMCwgMHhEMkUwLCAweDEwNTMsIDB4RDJFMSwgMHhEMkUxLCAweDExQzMsIDB4RDJFMiwgMHhEMkUyLCAweDExQzYsDQorICAgIDB4RDJFMywgMHhEMkUzLCAweDEwNTQsIDB4RDJFNCwgMHhEMkU0LCAweDExRDQsIDB4RDJFNSwgMHhEMkU4LCAweDExRDYsDQorICAgIDB4RDJFOSwgMHhEMkVBLCAweDExREIsIDB4RDJFQiwgMHhEMkVCLCAweDExRTAsIDB4RDJFQywgMHhEMkVGLCAweDEwNTUsDQorICAgIDB4RDJGMCwgMHhEMkYzLCAweDExRkMsIDB4RDJGNCwgMHhEMkY1LCAweDEyMDEsIDB4RDJGNiwgMHhEMkY2LCAweDEwNTksDQorICAgIDB4RDJGNywgMHhEMkY4LCAweDEyMDMsIDB4RDJGOSwgMHhEMkZFLCAweDEwNUEsIDB4RDNBMSwgMHhEM0ZFLCAweDEwNjAsDQorICAgIDB4RDRBMSwgMHhENEU1LCAweDEwQkUsIDB4RDRFNiwgMHhENEU2LCAweDEwREUsIDB4RDRFNywgMHhENEZCLCAweDExMDMsDQorICAgIDB4RDRGQywgMHhENEZDLCAweDEwMjgsIDB4RDRGRCwgMHhENEZFLCAweDExMTgsIDB4RDVBMSwgMHhENUE0LCAweDExMUEsDQorICAgIDB4RDVBNSwgMHhENUE1LCAweDE2QTgsIDB4RDVBNiwgMHhENUFBLCAweDExMUUsIDB4RDVBQiwgMHhENUFCLCAweDEwMkIsDQorICAgIDB4RDVBQywgMHhENUFELCAweDExMjMsIDB4RDVBRSwgMHhENUFFLCAweDEwNjAsIDB4RDVBRiwgMHhENUZFLCAweDExMjUsDQorICAgIDB4RDZBMSwgMHhENkI3LCAweDExNzUsIDB4RDZCOCwgMHhENkI4LCAweDEwNDcsIDB4RDZCOSwgMHhENkNDLCAweDExOEMsDQorICAgIDB4RDZDRCwgMHhENkNELCAweDEwNEMsIDB4RDZDRSwgMHhENkZFLCAweDExQTAsIDB4RDdBMSwgMHhEN0NBLCAweDExRDEsDQorICAgIDB4RDdDQiwgMHhEN0NCLCAweDE1QjAsIDB4RDdDQywgMHhEN0UzLCAweDExRkIsIDB4RDdFNCwgMHhEN0U0LCAweDE5MTgsDQorICAgIDB4RDdFNSwgMHhEN0ZFLCAweDEyMTMsIDB4RDhBMSwgMHhEOEZFLCAweDEyMkQsIDB4RDlBMSwgMHhEOUZFLCAweDEyOEIsDQorICAgIDB4REFBMSwgMHhEQUZFLCAweDEyRTksIDB4REJBMSwgMHhEQkM0LCAweDEzNDcsIDB4REJDNSwgMHhEQkM1LCAweDE0MUYsDQorICAgIDB4REJDNiwgMHhEQkUzLCAweDEzNkIsIDB4REJFNCwgMHhEQkU0LCAweDEzM0EsIDB4REJFNSwgMHhEQkZFLCAweDEzODksDQorICAgIDB4RENBMSwgMHhEQ0E0LCAweDEzQTMsIDB4RENBNSwgMHhEQ0E1LCAweDFENUUsIDB4RENBNiwgMHhEQ0ZFLCAweDEzQTcsDQorICAgIDB4RERBMSwgMHhEREE0LCAweDE0MDAsIDB4RERBNSwgMHhEREE1LCAweDEzRDcsIDB4RERBNiwgMHhEREQ0LCAweDE0MDQsDQorICAgIDB4RERENSwgMHhEREQ1LCAweDEzRjUsIDB4RERENiwgMHhEREYzLCAweDE0MzMsIDB4RERGNCwgMHhEREY0LCAweDFEQjcsDQorICAgIDB4RERGNSwgMHhEREZFLCAweDE0NTEsIDB4REVBMSwgMHhERUZCLCAweDE0NUIsIDB4REVGQywgMHhERUZDLCAweDE1RDAsDQorICAgIDB4REVGRCwgMHhERUZELCAweDE0QjYsIDB4REVGRSwgMHhERUZFLCAweDE0RjcsIDB4REZBMSwgMHhERkIyLCAweDE0QjcsDQorICAgIDB4REZCMywgMHhERkIzLCAweDFCQUIsIDB4REZCNCwgMHhERkUwLCAweDE0QzksIDB4REZFMSwgMHhERkUxLCAweDE0RjIsDQorICAgIDB4REZFMiwgMHhERkU3LCAweDE0RjYsIDB4REZFOCwgMHhERkU4LCAweDE1NkQsIDB4REZFOSwgMHhERkZFLCAweDE0RkMsDQorICAgIDB4RTBBMSwgMHhFMEYwLCAweDE1MTIsIDB4RTBGMSwgMHhFMEYxLCAweDE3NzEsIDB4RTBGMiwgMHhFMEZFLCAweDE1NjIsDQorICAgIDB4RTFBMSwgMHhFMUFDLCAweDE1NkYsIDB4RTFBRCwgMHhFMUFELCAweDE1NTQsIDB4RTFBRSwgMHhFMUVDLCAweDE1N0IsDQorICAgIDB4RTFFRCwgMHhFMUVELCAweDE0QzUsIDB4RTFFRSwgMHhFMUZFLCAweDE1QkEsIDB4RTJBMSwgMHhFMkZFLCAweDE1Q0IsDQorICAgIDB4RTNBMSwgMHhFM0Y0LCAweDE2MjksIDB4RTNGNSwgMHhFM0Y1LCAweDFCNjEsIDB4RTNGNiwgMHhFM0ZFLCAweDE2N0QsDQorICAgIDB4RTRBMSwgMHhFNEExLCAweDFDQ0EsIDB4RTRBMiwgMHhFNEE4LCAweDE2ODYsIDB4RTRBOSwgMHhFNEE5LCAweDE2MkUsDQorICAgIDB4RTRBQSwgMHhFNEZFLCAweDE2OEQsIDB4RTVBMSwgMHhFNUFELCAweDE2RTIsIDB4RTVBRSwgMHhFNUFFLCAweDE2RjIsDQorICAgIDB4RTVBRiwgMHhFNUIwLCAweDE2RUYsIDB4RTVCMSwgMHhFNUIyLCAweDExNDksIDB4RTVCMywgMHhFNUI4LCAweDE2RjEsDQorICAgIDB4RTVCOSwgMHhFNUI5LCAweDExNEIsIDB4RTVCQSwgMHhFNUJBLCAweDE2RjcsIDB4RTVCQiwgMHhFNUJDLCAweDExNEQsDQorICAgIDB4RTVCRCwgMHhFNUMzLCAweDE2RjgsIDB4RTVDNCwgMHhFNUM0LCAweDExNEYsIDB4RTVDNSwgMHhFNUNELCAweDE2RkYsDQorICAgIDB4RTVDRSwgMHhFNUNFLCAweDExNTMsIDB4RTVDRiwgMHhFNUNGLCAweDE3MDgsIDB4RTVEMCwgMHhFNUQwLCAweDExNTQsDQorICAgIDB4RTVEMSwgMHhFNUQxLCAweDE3MDksIDB4RTVEMiwgMHhFNUQyLCAweDExNTUsIDB4RTVEMywgMHhFNUQ1LCAweDE3MEEsDQorICAgIDB4RTVENiwgMHhFNUQ2LCAweDExNTcsIDB4RTVENywgMHhFNUY5LCAweDE3MEQsIDB4RTVGQSwgMHhFNUZCLCAweDExNUEsDQorICAgIDB4RTVGQywgMHhFNUZDLCAweDEwM0YsIDB4RTVGRCwgMHhFNUZELCAweDE3MzAsIDB4RTVGRSwgMHhFNUZFLCAweDExNUMsDQorICAgIDB4RTZBMSwgMHhFNkExLCAweDExNUYsIDB4RTZBMiwgMHhFNkEzLCAweDE3MzEsIDB4RTZBNCwgMHhFNkE0LCAweDExNjEsDQorICAgIDB4RTZBNSwgMHhFNkE2LCAweDE3MzMsIDB4RTZBNywgMHhFNkE3LCAweDExNjIsIDB4RTZBOCwgMHhFNkFDLCAweDE3MzUsDQorICAgIDB4RTZBRCwgMHhFNkFELCAweDExNjUsIDB4RTZBRSwgMHhFNkFFLCAweDE3M0EsIDB4RTZBRiwgMHhFNkIxLCAweDExNjcsDQorICAgIDB4RTZCMiwgMHhFNkIyLCAweDE3M0IsIDB4RTZCMywgMHhFNkIzLCAweDExNkEsIDB4RTZCNCwgMHhFNkI2LCAweDE3M0MsDQorICAgIDB4RTZCNywgMHhFNkI4LCAweDExNkIsIDB4RTZCOSwgMHhFNkJCLCAweDE3M0YsIDB4RTZCQywgMHhFNkJDLCAweDExNkYsDQorICAgIDB4RTZCRCwgMHhFNkMzLCAweDE3NDIsIDB4RTZDNCwgMHhFNkM0LCAweDEwNDAsIDB4RTZDNSwgMHhFNkM1LCAweDE3NDksDQorICAgIDB4RTZDNiwgMHhFNkM3LCAweDExNzEsIDB4RTZDOCwgMHhFNkM5LCAweDE3NEEsIDB4RTZDQSwgMHhFNkNBLCAweDEwNDEsDQorICAgIDB4RTZDQiwgMHhFNkQxLCAweDE3NEMsIDB4RTZEMiwgMHhFNkQyLCAweDExNzQsIDB4RTZEMywgMHhFNkQ1LCAweDE3NTMsDQorICAgIDB4RTZENiwgMHhFNkQ2LCAweDExNzUsIDB4RTZENywgMHhFNkQ4LCAweDE3NTYsIDB4RTZEOSwgMHhFNkQ5LCAweDExNzYsDQorICAgIDB4RTZEQSwgMHhFNkRCLCAweDE3NTgsIDB4RTZEQywgMHhFNkRDLCAweDEwNDIsIDB4RTZERCwgMHhFNkRFLCAweDE3NUEsDQorICAgIDB4RTZERiwgMHhFNkRGLCAweDExNzcsIDB4RTZFMCwgMHhFNkUwLCAweDE3NUMsIDB4RTZFMSwgMHhFNkUxLCAweDExNzgsDQorICAgIDB4RTZFMiwgMHhFNkUzLCAweDE3NUQsIDB4RTZFNCwgMHhFNkU0LCAweDExN0EsIDB4RTZFNSwgMHhFNkU1LCAweDExNzksDQorICAgIDB4RTZFNiwgMHhFNkU2LCAweDExN0IsIDB4RTZFNywgMHhFNkU3LCAweDE3NUYsIDB4RTZFOCwgMHhFNkU4LCAweDExN0MsDQorICAgIDB4RTZFOSwgMHhFNkU5LCAweDE3NjAsIDB4RTZFQSwgMHhFNkVCLCAweDExN0UsIDB4RTZFQywgMHhFNkVDLCAweDE5MkYsDQorICAgIDB4RTZFRCwgMHhFNkVFLCAweDE3NjEsIDB4RTZFRiwgMHhFNkVGLCAweDExODEsIDB4RTZGMCwgMHhFNkYwLCAweDE3NjMsDQorICAgIDB4RTZGMSwgMHhFNkYxLCAweDExODIsIDB4RTZGMiwgMHhFNkYyLCAweDE1NTQsIDB4RTZGMywgMHhFNkY0LCAweDE3NjQsDQorICAgIDB4RTZGNSwgMHhFNkY1LCAweDExODMsIDB4RTZGNiwgMHhFNkY2LCAweDEwNDMsIDB4RTZGNywgMHhFNkY3LCAweDEwNDYsDQorICAgIDB4RTZGOCwgMHhFNkY4LCAweDE3NjYsIDB4RTZGOSwgMHhFNkY5LCAweDExODUsIDB4RTZGQSwgMHhFNkZFLCAweDE3NjcsDQorICAgIDB4RTdBMSwgMHhFN0ExLCAweDExODcsIDB4RTdBMiwgMHhFN0E1LCAweDE3NkMsIDB4RTdBNiwgMHhFN0E2LCAweDExODgsDQorICAgIDB4RTdBNywgMHhFN0E4LCAweDE3NzAsIDB4RTdBOSwgMHhFN0E5LCAweDExODksIDB4RTdBQSwgMHhFN0FBLCAweDExOEIsDQorICAgIDB4RTdBQiwgMHhFN0FCLCAweDE3NzIsIDB4RTdBQywgMHhFN0FDLCAweDEwNDcsIDB4RTdBRCwgMHhFN0FELCAweDExOEQsDQorICAgIDB4RTdBRSwgMHhFN0FGLCAweDE3NzMsIDB4RTdCMCwgMHhFN0IwLCAweDExOEUsIDB4RTdCMSwgMHhFN0JFLCAweDE3NzUsDQorICAgIDB4RTdCRiwgMHhFN0JGLCAweDExOEYsIDB4RTdDMCwgMHhFN0MwLCAweDE3ODMsIDB4RTdDMSwgMHhFN0MxLCAweDFFNjcsDQorICAgIDB4RTdDMiwgMHhFN0M1LCAweDE3ODQsIDB4RTdDNiwgMHhFN0M2LCAweDExOTEsIDB4RTdDNywgMHhFN0M3LCAweDExOTMsDQorICAgIDB4RTdDOCwgMHhFN0NBLCAweDE3ODgsIDB4RTdDQiwgMHhFN0NCLCAweDExOTUsIDB4RTdDQywgMHhFN0NDLCAweDE3OEIsDQorICAgIDB4RTdDRCwgMHhFN0NELCAweDExOTYsIDB4RTdDRSwgMHhFN0NFLCAweDE3OEMsIDB4RTdDRiwgMHhFN0QwLCAweDExOTcsDQorICAgIDB4RTdEMSwgMHhFN0QyLCAweDE3OEQsIDB4RTdEMywgMHhFN0QzLCAweDExOUEsIDB4RTdENCwgMHhFN0RFLCAweDE3OEYsDQorICAgIDB4RTdERiwgMHhFN0RGLCAweDExOUMsIDB4RTdFMCwgMHhFN0UzLCAweDE3OUEsIDB4RTdFNCwgMHhFN0U0LCAweDExOUQsDQorICAgIDB4RTdFNSwgMHhFN0U1LCAweDE3OUUsIDB4RTdFNiwgMHhFN0U2LCAweDExOUUsIDB4RTdFNywgMHhFN0Y2LCAweDE3OUYsDQorICAgIDB4RTdGNywgMHhFN0Y3LCAweDE2QTUsIDB4RTdGOCwgMHhFN0ZFLCAweDE3QUYsIDB4RThBMSwgMHhFOEU2LCAweDE3QjYsDQorICAgIDB4RThFNywgMHhFOEU4LCAweDExQzcsIDB4RThFOSwgMHhFOEVGLCAweDE3RkMsIDB4RThGMCwgMHhFOEYwLCAweDExQzksDQorICAgIDB4RThGMSwgMHhFOEYxLCAweDEwNTQsIDB4RThGMiwgMHhFOEY2LCAweDE4MDMsIDB4RThGNywgMHhFOEY3LCAweDExQ0IsDQorICAgIDB4RThGOCwgMHhFOEY4LCAweDE4MDgsIDB4RThGOSwgMHhFOEY5LCAweDE2QTgsIDB4RThGQSwgMHhFOEZBLCAweDE4MDksDQorICAgIDB4RThGQiwgMHhFOEZCLCAweDExQ0MsIDB4RThGQywgMHhFOEZELCAweDE4MEEsIDB4RThGRSwgMHhFOEZFLCAweDExQ0QsDQorICAgIDB4RTlBMSwgMHhFOUE2LCAweDE4MEMsIDB4RTlBNywgMHhFOUE3LCAweDExRDAsIDB4RTlBOCwgMHhFOUFCLCAweDE4MTIsDQorICAgIDB4RTlBQywgMHhFOUFDLCAweDExRDEsIDB4RTlBRCwgMHhFOUNCLCAweDE4MTYsIDB4RTlDQywgMHhFOUNDLCAweDExRDMsDQorICAgIDB4RTlDRCwgMHhFOUY2LCAweDE4MzUsIDB4RTlGNywgMHhFOUY3LCAweDFGMzQsIDB4RTlGOCwgMHhFOUZFLCAweDE4NUYsDQorICAgIDB4RUFBMSwgMHhFQUMwLCAweDE4NjYsIDB4RUFDMSwgMHhFQUMxLCAweDE3RUIsIDB4RUFDMiwgMHhFQUU0LCAweDE4ODYsDQorICAgIDB4RUFFNSwgMHhFQUU1LCAweDExRTEsIDB4RUFFNiwgMHhFQUYzLCAweDE4QTksIDB4RUFGNCwgMHhFQUY0LCAweDEwNTcsDQorICAgIDB4RUFGNSwgMHhFQUY2LCAweDE4QjcsIDB4RUFGNywgMHhFQUY3LCAweDExRTMsIDB4RUFGOCwgMHhFQUZCLCAweDE4QjksDQorICAgIDB4RUFGQywgMHhFQUZDLCAweDExRTUsIDB4RUFGRCwgMHhFQUZELCAweDE4QkQsIDB4RUFGRSwgMHhFQUZFLCAweDExRTYsDQorICAgIDB4RUJBMSwgMHhFQkEzLCAweDE4QkUsIDB4RUJBNCwgMHhFQkE0LCAweDExRTgsIDB4RUJBNSwgMHhFQkE2LCAweDE4QzEsDQorICAgIDB4RUJBNywgMHhFQkE3LCAweDExRUEsIDB4RUJBOCwgMHhFQkE4LCAweDE4QzMsIDB4RUJBOSwgMHhFQkE5LCAweDExRUMsDQorICAgIDB4RUJBQSwgMHhFQkFBLCAweDEwNTgsIDB4RUJBQiwgMHhFQkI5LCAweDE4QzQsIDB4RUJCQSwgMHhFQkJCLCAweDExRUUsDQorICAgIDB4RUJCQywgMHhFQkJDLCAweDE4RDMsIDB4RUJCRCwgMHhFQkJELCAweDExRjAsIDB4RUJCRSwgMHhFQkMwLCAweDE4RDQsDQorICAgIDB4RUJDMSwgMHhFQkMxLCAweDExRjEsIDB4RUJDMiwgMHhFQkMyLCAweDExRjMsIDB4RUJDMywgMHhFQkM1LCAweDE4RDcsDQorICAgIDB4RUJDNiwgMHhFQkM3LCAweDExRjQsIDB4RUJDOCwgMHhFQkNCLCAweDE4REEsIDB4RUJDQywgMHhFQkNDLCAweDExRjcsDQorICAgIDB4RUJDRCwgMHhFQkNFLCAweDE4REUsIDB4RUJDRiwgMHhFQkQxLCAweDExRjgsIDB4RUJEMiwgMHhFQkQyLCAweDE1QjAsDQorICAgIDB4RUJEMywgMHhFQkQ3LCAweDE4RTAsIDB4RUJEOCwgMHhFQkQ4LCAweDExRkIsIDB4RUJEOSwgMHhFQkZFLCAweDE4RTUsDQorICAgIDB4RUNBMSwgMHhFQ0E1LCAweDE5MEIsIDB4RUNBNiwgMHhFQ0E2LCAweDEyMDYsIDB4RUNBNywgMHhFQ0E3LCAweDEyMDgsDQorICAgIDB4RUNBOCwgMHhFQ0E5LCAweDE5MTAsIDB4RUNBQSwgMHhFQ0FBLCAweDEyMEEsIDB4RUNBQiwgMHhFQ0FFLCAweDE5MTIsDQorICAgIDB4RUNBRiwgMHhFQ0FGLCAweDE3M0UsIDB4RUNCMCwgMHhFQ0IxLCAweDEyMEMsIDB4RUNCMiwgMHhFQ0IyLCAweDEwNUIsDQorICAgIDB4RUNCMywgMHhFQ0I0LCAweDE5MTYsIDB4RUNCNSwgMHhFQ0I1LCAweDEyMTEsIDB4RUNCNiwgMHhFQ0I3LCAweDE5MTgsDQorICAgIDB4RUNCOCwgMHhFQ0I4LCAweDEyMTMsIDB4RUNCOSwgMHhFQ0I5LCAweDE5MUEsIDB4RUNCQSwgMHhFQ0JBLCAweDEyMTUsDQorICAgIDB4RUNCQiwgMHhFQ0JGLCAweDE5MUIsIDB4RUNDMCwgMHhFQ0MxLCAweDEyMTgsIDB4RUNDMiwgMHhFQ0M0LCAweDE5MjAsDQorICAgIDB4RUNDNSwgMHhFQ0M1LCAweDEyMUEsIDB4RUNDNiwgMHhFQ0M2LCAweDEyMUMsIDB4RUNDNywgMHhFQ0M4LCAweDE5MjMsDQorICAgIDB4RUNDOSwgMHhFQ0NBLCAweDEwNUMsIDB4RUNDQiwgMHhFQ0Q0LCAweDE5MjUsIDB4RUNENSwgMHhFQ0Q1LCAweDEyMUUsDQorICAgIDB4RUNENiwgMHhFQ0RDLCAweDE5MkYsIDB4RUNERCwgMHhFQ0RFLCAweDEyMjAsIDB4RUNERiwgMHhFQ0UwLCAweDE5MzYsDQorICAgIDB4RUNFMSwgMHhFQ0UxLCAweDEyMjIsIDB4RUNFMiwgMHhFQ0UzLCAweDE5MzgsIDB4RUNFNCwgMHhFQ0U0LCAweDEyMjQsDQorICAgIDB4RUNFNSwgMHhFQ0U2LCAweDE5M0EsIDB4RUNFNywgMHhFQ0U4LCAweDEyMjUsIDB4RUNFOSwgMHhFQ0Y2LCAweDE5M0MsDQorICAgIDB4RUNGNywgMHhFQ0Y4LCAweDEyMjcsIDB4RUNGOSwgMHhFQ0Y5LCAweDE5NEEsIDB4RUNGQSwgMHhFQ0ZBLCAweDEyMkEsDQorICAgIDB4RUNGQiwgMHhFQ0ZFLCAweDE5NEIsIDB4RURBMSwgMHhFREEzLCAweDEyMkQsIDB4RURBNCwgMHhFREVELCAweDE5NEYsDQorICAgIDB4RURFRSwgMHhFREVFLCAweDE0RTcsIDB4RURFRiwgMHhFREZFLCAweDE5OTksIDB4RUVBMSwgMHhFRURBLCAweDE5QTksDQorICAgIDB4RUVEQiwgMHhFRURCLCAweDE5NUUsIDB4RUVEQywgMHhFRUZFLCAweDE5RTMsIDB4RUZBMSwgMHhFRkZFLCAweDFBMDYsDQorICAgIDB4RjBBMSwgMHhGMEZFLCAweDFBNjQsIDB4RjFBMSwgMHhGMUZFLCAweDFBQzIsIDB4RjJBMSwgMHhGMkJDLCAweDFCMjAsDQorICAgIDB4RjJCRCwgMHhGMkJELCAweDE2NjMsIDB4RjJCRSwgMHhGMkY5LCAweDFCM0MsIDB4RjJGQSwgMHhGMkZBLCAweDE2OEIsDQorICAgIDB4RjJGQiwgMHhGMkZFLCAweDFCNzgsIDB4RjNBMSwgMHhGM0IwLCAweDFCN0MsIDB4RjNCMSwgMHhGM0IxLCAweDEwNUYsDQorICAgIDB4RjNCMiwgMHhGM0ZFLCAweDFCOEMsIDB4RjRBMSwgMHhGNEE2LCAweDFCRDksIDB4RjRBNywgMHhGNEE3LCAweDE5NTQsDQorICAgIDB4RjRBOCwgMHhGNEVELCAweDFCREYsIDB4RjRFRSwgMHhGNEVFLCAweDFBMUMsIDB4RjRFRiwgMHhGNEZFLCAweDFDMjUsDQorICAgIDB4RjVBMSwgMHhGNUZFLCAweDFDMzUsIDB4RjZBMSwgMHhGNkYzLCAweDFDOTMsIDB4RjZGNCwgMHhGNkY0LCAweDEwQjcsDQorICAgIDB4RjZGNSwgMHhGNkY1LCAweDFDRTYsIDB4RjZGNiwgMHhGNkY2LCAweDFCRTMsIDB4RjZGNywgMHhGNkZFLCAweDFDRTcsDQorICAgIDB4RjdBMSwgMHhGN0I3LCAweDFDRUYsIDB4RjdCOCwgMHhGN0I4LCAweDEwOTcsIDB4RjdCOSwgMHhGN0M3LCAweDFEMDYsDQorICAgIDB4RjdDOCwgMHhGN0M4LCAweDEwQUEsIDB4RjdDOSwgMHhGN0QyLCAweDFEMTUsIDB4RjdEMywgMHhGN0QzLCAweDEwRjQsDQorICAgIDB4RjdENCwgMHhGN0ZFLCAweDFEMUYsIDB4RjhBMSwgMHhGOERBLCAweDFENEEsIDB4RjhEQiwgMHhGOERCLCAweDFEOTQsDQorICAgIDB4RjhEQywgMHhGOEVGLCAweDFEODQsIDB4RjhGMCwgMHhGOEYwLCAweDEzRTAsIDB4RjhGMSwgMHhGOEZFLCAweDFEOTgsDQorICAgIDB4RjlBMSwgMHhGOUZFLCAweDFEQTYsIDB4RkFBMSwgMHhGQUExLCAweDFFMUQsIDB4RkFBMiwgMHhGQUEyLCAweDBERTYsDQorICAgIDB4RkFBMywgMHhGQUU1LCAweDFFMDQsIDB4RkFFNiwgMHhGQUU2LCAweDBFM0MsIDB4RkFFNywgMHhGQUZFLCAweDFFNDcsDQorICAgIDB4RkJBMSwgMHhGQkZFLCAweDFFNUYsIDB4RkNBMSwgMHhGQ0E4LCAweDFFQkQsIDB4RkNBOSwgMHhGQ0E5LCAweDBFRTcsDQorICAgIDB4RkNBQSwgMHhGQ0ZFLCAweDFFQzUsIDB4RkRBMSwgMHhGREZFLCAweDFGMUEsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL1VuaUtTLVVDUzItSF8xLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvVW5pS1MtVUNTMi1IXzEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyYjZlYTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL1VuaUtTLVVDUzItSF8xLmNwcApAQCAtMCwwICsxLDI4MDYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBnX0ZYQ01BUF9VbmlLU19VQ1MyX0hfMVs4Mzk0ICogM10gPSB7DQorICAgIDB4MDAyMCwgMHgwMDdFLCAweDAwMDEsIDB4MDBBMSwgMHgwMEExLCAweDAwRDAsIDB4MDBBNCwgMHgwMEE0LCAweDAwRDYsDQorICAgIDB4MDBBNywgMHgwMEE3LCAweDAwOUIsIDB4MDBBOCwgMHgwMEE4LCAweDAwNkIsIDB4MDBBQSwgMHgwMEFBLCAweDAyOUMsDQorICAgIDB4MDBBQiwgMHgwMEFCLCAweDAwQjAsIDB4MDBCMCwgMHgwMEIwLCAweDAwOEEsIDB4MDBCMSwgMHgwMEIxLCAweDAwODIsDQorICAgIDB4MDBCMiwgMHgwMEIzLCAweDAzNEIsIDB4MDBCNCwgMHgwMEI0LCAweDAwQzcsIDB4MDBCNiwgMHgwMEI2LCAweDAwRjQsDQorICAgIDB4MDBCOCwgMHgwMEI4LCAweDAwQ0UsIDB4MDBCOSwgMHgwMEI5LCAweDAzNEEsIDB4MDBCQSwgMHgwMEJBLCAweDAyQTMsDQorICAgIDB4MDBCQiwgMHgwMEJCLCAweDAwQjEsIDB4MDBCQywgMHgwMEJDLCAweDAyRUYsIDB4MDBCRCwgMHgwMEJELCAweDAyRUMsDQorICAgIDB4MDBCRSwgMHgwMEJFLCAweDAyRjAsIDB4MDBCRiwgMHgwMEJGLCAweDAwRDEsIDB4MDBDNiwgMHgwMEM2LCAweDAyOUEsDQorICAgIDB4MDBEMCwgMHgwMEQwLCAweDAyOUIsIDB4MDBENywgMHgwMEQ3LCAweDAwODMsIDB4MDBEOCwgMHgwMEQ4LCAweDAyQTEsDQorICAgIDB4MDBERSwgMHgwMERFLCAweDAyQTQsIDB4MDBERiwgMHgwMERGLCAweDAzMDAsIDB4MDBFNiwgMHgwMEU2LCAweDAyRjUsDQorICAgIDB4MDBGMCwgMHgwMEYwLCAweDAyRjcsIDB4MDBGNywgMHgwMEY3LCAweDAwODQsIDB4MDBGOCwgMHgwMEY4LCAweDAyRkUsDQorICAgIDB4MDBGRSwgMHgwMEZFLCAweDAzMDEsIDB4MDExMSwgMHgwMTExLCAweDAyRjYsIDB4MDEyNiwgMHgwMTI2LCAweDAyOUQsDQorICAgIDB4MDEyNywgMHgwMTI3LCAweDAyRjgsIDB4MDEzMSwgMHgwMTMxLCAweDAyRjksIDB4MDEzMiwgMHgwMTMyLCAweDAyOUUsDQorICAgIDB4MDEzMywgMHgwMTMzLCAweDAyRkEsIDB4MDEzOCwgMHgwMTM4LCAweDAyRkIsIDB4MDEzRiwgMHgwMTNGLCAweDAyOUYsDQorICAgIDB4MDE0MCwgMHgwMTQwLCAweDAyRkMsIDB4MDE0MSwgMHgwMTQxLCAweDAyQTAsIDB4MDE0MiwgMHgwMTQyLCAweDAyRkQsDQorICAgIDB4MDE0OSwgMHgwMTQ5LCAweDAzMDQsIDB4MDE0QSwgMHgwMTRBLCAweDAyQTYsIDB4MDE0QiwgMHgwMTRCLCAweDAzMDMsDQorICAgIDB4MDE1MiwgMHgwMTUyLCAweDAyQTIsIDB4MDE1MywgMHgwMTUzLCAweDAyRkYsIDB4MDE2NiwgMHgwMTY2LCAweDAyQTUsDQorICAgIDB4MDE2NywgMHgwMTY3LCAweDAzMDIsIDB4MDJCQywgMHgwMkJDLCAweDIwNTMsIDB4MDJDNywgMHgwMkM3LCAweDAwQzksDQorICAgIDB4MDJEOCwgMHgwMkQ4LCAweDAwQ0EsIDB4MDJEOSwgMHgwMkQ5LCAweDAwQ0QsIDB4MDJEQSwgMHgwMkRBLCAweDAwQ0MsDQorICAgIDB4MDJEQiwgMHgwMkRCLCAweDAwQ0YsIDB4MDJEQywgMHgwMkRDLCAweDAwQzgsIDB4MDJERCwgMHgwMkRELCAweDAwQ0IsDQorICAgIDB4MDM5MSwgMHgwM0ExLCAweDAxRDcsIDB4MDNBMywgMHgwM0E5LCAweDAxRTgsIDB4MDNCMSwgMHgwM0MxLCAweDAxRUYsDQorICAgIDB4MDNDMywgMHgwM0M5LCAweDAyMDAsIDB4MDQwMSwgMHgwNDAxLCAweDA0MDIsIDB4MDQxMCwgMHgwNDE1LCAweDAzRkMsDQorICAgIDB4MDQxNiwgMHgwNDM1LCAweDA0MDMsIDB4MDQzNiwgMHgwNDRGLCAweDA0MjQsIDB4MDQ1MSwgMHgwNDUxLCAweDA0MjMsDQorICAgIDB4MjAxMywgMHgyMDE0LCAweDAwNkQsIDB4MjAxNiwgMHgyMDE2LCAweDAwNkYsIDB4MjAxOCwgMHgyMDE5LCAweDAwNzIsDQorICAgIDB4MjAxQiwgMHgyMDFCLCAweDIwMkUsIDB4MjAxQywgMHgyMDFELCAweDAwNzQsIDB4MjAxRiwgMHgyMDFGLCAweDIwMkQsDQorICAgIDB4MjAyMCwgMHgyMDIxLCAweDAwRjUsIDB4MjAyMiwgMHgyMDIyLCAweDIxOUYsIDB4MjAyNSwgMHgyMDI2LCAweDAwNjksDQorICAgIDB4MjAzMCwgMHgyMDMwLCAweDAwRDgsIDB4MjAzMiwgMHgyMDMzLCAweDAwOEIsIDB4MjAzNCwgMHgyMDM0LCAweDIxODYsDQorICAgIDB4MjAzNSwgMHgyMDM1LCAweDI0NkUsIDB4MjAzNiwgMHgyMDM2LCAweDI0NkMsIDB4MjAzOSwgMHgyMDNBLCAweDIxQTQsDQorICAgIDB4MjAzQiwgMHgyMDNCLCAweDAwOUMsIDB4MjAzQywgMHgyMDNDLCAweDIyM0IsIDB4MjA0MiwgMHgyMDQyLCAweDIxOTcsDQorICAgIDB4MjA3NCwgMHgyMDc0LCAweDAzNEQsIDB4MjA3QSwgMHgyMDdCLCAweDIwMkYsIDB4MjA3QywgMHgyMDdDLCAweDIwMzgsDQorICAgIDB4MjA3RCwgMHgyMDdFLCAweDIwM0EsIDB4MjA3RiwgMHgyMDdGLCAweDAzNEUsIDB4MjA4MSwgMHgyMDg0LCAweDAzNEYsDQorICAgIDB4MjEwMywgMHgyMTAzLCAweDAwOEQsIDB4MjEwOSwgMHgyMTA5LCAweDAwRDcsIDB4MjExMywgMHgyMTEzLCAweDAyNEUsDQorICAgIDB4MjExNiwgMHgyMTE2LCAweDAxMDIsIDB4MjEyMSwgMHgyMTIxLCAweDAxMDcsIDB4MjEyMiwgMHgyMTIyLCAweDAxMDQsDQorICAgIDB4MjEyNiwgMHgyMTI2LCAweDAyODMsIDB4MjEyQiwgMHgyMTJCLCAweDAwOEUsIDB4MjE1MywgMHgyMTU0LCAweDAyRUQsDQorICAgIDB4MjE1QiwgMHgyMTVFLCAweDAyRjEsIDB4MjE2MCwgMHgyMTY5LCAweDAxQ0QsIDB4MjE3MCwgMHgyMTc5LCAweDAxQzMsDQorICAgIDB4MjE5MCwgMHgyMTkxLCAweDAwQUIsIDB4MjE5MiwgMHgyMTkyLCAweDAwQUEsIDB4MjE5MywgMHgyMTk0LCAweDAwQUQsDQorICAgIDB4MjE5NSwgMHgyMTk1LCAweDAwRjcsIDB4MjE5NiwgMHgyMTk2LCAweDAwRkEsIDB4MjE5NywgMHgyMTk3LCAweDAwRjgsDQorICAgIDB4MjE5OCwgMHgyMTk4LCAweDAwRkIsIDB4MjE5OSwgMHgyMTk5LCAweDAwRjksIDB4MjFCMCwgMHgyMUIwLCAweDIyQTQsDQorICAgIDB4MjFCMSwgMHgyMUIxLCAweDIyQTEsIDB4MjFCMiwgMHgyMUIyLCAweDIyQTAsIDB4MjFCMywgMHgyMUIzLCAweDIyQTUsDQorICAgIDB4MjFCNCwgMHgyMUI0LCAweDIyQTMsIDB4MjFCQywgMHgyMUJDLCAweDIyQjQsIDB4MjFDMCwgMHgyMUMwLCAweDIyQjUsDQorICAgIDB4MjFDNCwgMHgyMUM1LCAweDIyQzAsIDB4MjFDRCwgMHgyMUNELCAweDIyNzAsIDB4MjFDRiwgMHgyMUNGLCAweDIyNkYsDQorICAgIDB4MjFEMCwgMHgyMUQwLCAweDIyNkUsIDB4MjFEMSwgMHgyMUQxLCAweDIyOTYsIDB4MjFEMiwgMHgyMUQyLCAweDAwQzMsDQorICAgIDB4MjFEMywgMHgyMUQzLCAweDIyOTcsIDB4MjFENCwgMHgyMUQ0LCAweDAwQzQsIDB4MjFFMCwgMHgyMUUwLCAweDIzRTYsDQorICAgIDB4MjFFMSwgMHgyMUUxLCAweDIzRTgsIDB4MjFFMiwgMHgyMUUyLCAweDIzRTcsIDB4MjFFMywgMHgyMUUzLCAweDIzRTksDQorICAgIDB4MjFFNiwgMHgyMUU2LCAweDIzRUUsIDB4MjFFNywgMHgyMUU3LCAweDIzRjAsIDB4MjFFOCwgMHgyMUU4LCAweDIzRUYsDQorICAgIDB4MjFFOSwgMHgyMUU5LCAweDIzRjEsIDB4MjIwMCwgMHgyMjAwLCAweDAwQzUsIDB4MjIwMiwgMHgyMjAyLCAweDAwOTcsDQorICAgIDB4MjIwMywgMHgyMjAzLCAweDAwQzYsIDB4MjIwNiwgMHgyMjA2LCAweDIyMEIsIDB4MjIwNywgMHgyMjA3LCAweDAwOTgsDQorICAgIDB4MjIwOCwgMHgyMjA4LCAweDAwQjgsIDB4MjIwOSwgMHgyMjA5LCAweDIyMkQsIDB4MjIwQiwgMHgyMjBCLCAweDAwQjksDQorICAgIDB4MjIwQywgMHgyMjBDLCAweDIyMkUsIDB4MjIwRiwgMHgyMjBGLCAweDAwRDUsIDB4MjIxMSwgMHgyMjExLCAweDAwRDQsDQorICAgIDB4MjIxMywgMHgyMjEzLCAweDIyMTYsIDB4MjIxQSwgMHgyMjFBLCAweDAwQjIsIDB4MjIxRCwgMHgyMjFELCAweDAwQjQsDQorICAgIDB4MjIxRSwgMHgyMjFFLCAweDAwODgsIDB4MjIxRiwgMHgyMjFGLCAweDIyMEQsIDB4MjIyMCwgMHgyMjIwLCAweDAwOTQsDQorICAgIDB4MjIyMiwgMHgyMjIyLCAweDIyMjIsIDB4MjIyNSwgMHgyMjI2LCAweDIyMEYsIDB4MjIyNywgMHgyMjI4LCAweDAwQzAsDQorICAgIDB4MjIyOSwgMHgyMjI5LCAweDAwQkYsIDB4MjIyQSwgMHgyMjJBLCAweDAwQkUsIDB4MjIyQiwgMHgyMjJDLCAweDAwQjYsDQorICAgIDB4MjIyRSwgMHgyMjJFLCAweDAwRDMsIDB4MjIzNCwgMHgyMjM0LCAweDAwODksIDB4MjIzNSwgMHgyMjM1LCAweDAwQjUsDQorICAgIDB4MjIzNiwgMHgyMjM2LCAweDAwRDIsIDB4MjIzNywgMHgyMjM3LCAweDIwODEsIDB4MjIzRCwgMHgyMjNELCAweDAwQjMsDQorICAgIDB4MjI0MywgMHgyMjQzLCAweDIxMzQsIDB4MjI0NSwgMHgyMjQ1LCAweDIxMzMsIDB4MjI0OCwgMHgyMjQ4LCAweDIxMzUsDQorICAgIDB4MjI1MCwgMHgyMjUwLCAweDIyMjMsIDB4MjI1MSwgMHgyMjUxLCAweDIyMTMsIDB4MjI1MiwgMHgyMjUyLCAweDAwOUEsDQorICAgIDB4MjI1MywgMHgyMjUzLCAweDIyMTIsIDB4MjI1QSwgMHgyMjVBLCAweDIyMzEsIDB4MjI2MCwgMHgyMjYwLCAweDAwODUsDQorICAgIDB4MjI2MSwgMHgyMjYxLCAweDAwOTksIDB4MjI2MiwgMHgyMjYyLCAweDIyMUUsIDB4MjI2NCwgMHgyMjY1LCAweDAwODYsDQorICAgIDB4MjI2NiwgMHgyMjY3LCAweDIyMTQsIDB4MjI2RSwgMHgyMjZGLCAweDIyMjksIDB4MjI3MCwgMHgyMjczLCAweDIxMjEsDQorICAgIDB4MjI3NiwgMHgyMjc3LCAweDIxMjksIDB4MjI3OSwgMHgyMjc5LCAweDIxMkIsIDB4MjI3QSwgMHgyMjdCLCAweDIxMUIsDQorICAgIDB4MjI4MCwgMHgyMjgxLCAweDIxMUYsIDB4MjI4MiwgMHgyMjgzLCAweDAwQkMsIDB4MjI4NCwgMHgyMjg0LCAweDIyMkMsDQorICAgIDB4MjI4NSwgMHgyMjg1LCAweDIyMkIsIDB4MjI4NiwgMHgyMjg3LCAweDAwQkEsIDB4MjI4QSwgMHgyMjhBLCAweDIxMjYsDQorICAgIDB4MjI4QiwgMHgyMjhCLCAweDIxMjgsIDB4MjI5NSwgMHgyMjk3LCAweDIyMTcsIDB4MjJBMywgMHgyMkEzLCAweDIyMjYsDQorICAgIDB4MjJBNCwgMHgyMkE0LCAweDIxMzcsIDB4MjJBNSwgMHgyMkE1LCAweDAwOTUsIDB4MjJCQiwgMHgyMkJDLCAweDIyMkYsDQorICAgIDB4MjJDRSwgMHgyMkNGLCAweDIxMUQsIDB4MjJEQSwgMHgyMkRCLCAweDIxMkMsIDB4MjJFRSwgMHgyMkVFLCAweDIwODAsDQorICAgIDB4MjJFRiwgMHgyMkVGLCAweDAwNkEsIDB4MjMwNiwgMHgyMzA2LCAweDIyMzIsIDB4MjMxMiwgMHgyMzEyLCAweDAwOTYsDQorICAgIDB4MjMxNCwgMHgyMzE0LCAweDIyMUIsIDB4MjQ2MCwgMHgyNDZFLCAweDAyREQsIDB4MjQ2RiwgMHgyNDczLCAweDIyNTcsDQorICAgIDB4MjQ3NCwgMHgyNDgyLCAweDAzM0IsIDB4MjQ4MywgMHgyNDg3LCAweDIzNTIsIDB4MjQ5QywgMHgyNEI1LCAweDAzMjEsDQorICAgIDB4MjRCNiwgMHgyNENGLCAweDIwQzQsIDB4MjREMCwgMHgyNEU5LCAweDAyQzMsIDB4MjUwMCwgMHgyNTAwLCAweDAyMDcsDQorICAgIDB4MjUwMSwgMHgyNTAxLCAweDAyMTIsIDB4MjUwMiwgMHgyNTAyLCAweDAyMDgsIDB4MjUwMywgMHgyNTAzLCAweDAyMTMsDQorICAgIDB4MjUwQywgMHgyNTBDLCAweDAyMDksIDB4MjUwRCwgMHgyNTBELCAweDAyMkUsIDB4MjUwRSwgMHgyNTBFLCAweDAyMkQsDQorICAgIDB4MjUwRiwgMHgyNTBGLCAweDAyMTQsIDB4MjUxMCwgMHgyNTEwLCAweDAyMEEsIDB4MjUxMSwgMHgyNTExLCAweDAyMjgsDQorICAgIDB4MjUxMiwgMHgyNTEyLCAweDAyMjcsIDB4MjUxMywgMHgyNTEzLCAweDAyMTUsIDB4MjUxNCwgMHgyNTE0LCAweDAyMEMsDQorICAgIDB4MjUxNSwgMHgyNTE1LCAweDAyMkMsIDB4MjUxNiwgMHgyNTE2LCAweDAyMkIsIDB4MjUxNywgMHgyNTE3LCAweDAyMTcsDQorICAgIDB4MjUxOCwgMHgyNTE4LCAweDAyMEIsIDB4MjUxOSwgMHgyNTE5LCAweDAyMkEsIDB4MjUxQSwgMHgyNTFBLCAweDAyMjksDQorICAgIDB4MjUxQiwgMHgyNTFCLCAweDAyMTYsIDB4MjUxQywgMHgyNTFDLCAweDAyMEQsIDB4MjUxRCwgMHgyNTFELCAweDAyMjIsDQorICAgIDB4MjUxRSwgMHgyNTFGLCAweDAyMkYsIDB4MjUyMCwgMHgyNTIwLCAweDAyMUQsIDB4MjUyMSwgMHgyNTIyLCAweDAyMzEsDQorICAgIDB4MjUyMywgMHgyNTIzLCAweDAyMTgsIDB4MjUyNCwgMHgyNTI0LCAweDAyMEYsIDB4MjUyNSwgMHgyNTI1LCAweDAyMjQsDQorICAgIDB4MjUyNiwgMHgyNTI3LCAweDAyMzMsIDB4MjUyOCwgMHgyNTI4LCAweDAyMUYsIDB4MjUyOSwgMHgyNTJBLCAweDAyMzUsDQorICAgIDB4MjUyQiwgMHgyNTJCLCAweDAyMUEsIDB4MjUyQywgMHgyNTJDLCAweDAyMEUsIDB4MjUyRCwgMHgyNTJFLCAweDAyMzcsDQorICAgIDB4MjUyRiwgMHgyNTJGLCAweDAyMUUsIDB4MjUzMCwgMHgyNTMwLCAweDAyMjMsIDB4MjUzMSwgMHgyNTMyLCAweDAyMzksDQorICAgIDB4MjUzMywgMHgyNTMzLCAweDAyMTksIDB4MjUzNCwgMHgyNTM0LCAweDAyMTAsIDB4MjUzNSwgMHgyNTM2LCAweDAyM0IsDQorICAgIDB4MjUzNywgMHgyNTM3LCAweDAyMjAsIDB4MjUzOCwgMHgyNTM4LCAweDAyMjUsIDB4MjUzOSwgMHgyNTNBLCAweDAyM0QsDQorICAgIDB4MjUzQiwgMHgyNTNCLCAweDAyMUIsIDB4MjUzQywgMHgyNTNDLCAweDAyMTEsIDB4MjUzRCwgMHgyNTNFLCAweDAyM0YsDQorICAgIDB4MjUzRiwgMHgyNTNGLCAweDAyMjEsIDB4MjU0MCwgMHgyNTQxLCAweDAyNDEsIDB4MjU0MiwgMHgyNTQyLCAweDAyMjYsDQorICAgIDB4MjU0MywgMHgyNTRBLCAweDAyNDMsIDB4MjU0QiwgMHgyNTRCLCAweDAyMUMsIDB4MjU5MiwgMHgyNTkyLCAweDAwRTgsDQorICAgIDB4MjVBMCwgMHgyNUEwLCAweDAwQTUsIDB4MjVBMSwgMHgyNUExLCAweDAwQTQsIDB4MjVBMywgMHgyNUEzLCAweDAwRTUsDQorICAgIDB4MjVBNCwgMHgyNUE1LCAweDAwRTksIDB4MjVBNiwgMHgyNUE2LCAweDAwRUQsIDB4MjVBNywgMHgyNUE3LCAweDAwRUMsDQorICAgIDB4MjVBOCwgMHgyNUE4LCAweDAwRUIsIDB4MjVBOSwgMHgyNUE5LCAweDAwRUUsIDB4MjVCMSwgMHgyNUIxLCAweDIyMjAsDQorICAgIDB4MjVCMiwgMHgyNUIyLCAweDAwQTcsIDB4MjVCMywgMHgyNUIzLCAweDAwQTYsIDB4MjVCNSwgMHgyNUI1LCAweDIyNEMsDQorICAgIDB4MjVCNiwgMHgyNUI2LCAweDAwREMsIDB4MjVCNywgMHgyNUI3LCAweDAwREIsIDB4MjVCOSwgMHgyNUI5LCAweDIyNEQsDQorICAgIDB4MjVCQywgMHgyNUJDLCAweDAwQTksIDB4MjVCRCwgMHgyNUJELCAweDAwQTgsIDB4MjVCRiwgMHgyNUJGLCAweDIyNEIsDQorICAgIDB4MjVDMCwgMHgyNUMwLCAweDAwREEsIDB4MjVDMSwgMHgyNUMxLCAweDAwRDksIDB4MjVDMywgMHgyNUMzLCAweDIyNEUsDQorICAgIDB4MjVDNiwgMHgyNUM2LCAweDAwQTMsIDB4MjVDNywgMHgyNUM3LCAweDAwQTIsIDB4MjVDOCwgMHgyNUM4LCAweDAwRTQsDQorICAgIDB4MjVDOSwgMHgyNUM5LCAweDAwRTMsIDB4MjVDQSwgMHgyNUNBLCAweDIyNTMsIDB4MjVDQiwgMHgyNUNCLCAweDAwOUYsDQorICAgIDB4MjVDQywgMHgyNUNDLCAweDIxQkYsIDB4MjVDRSwgMHgyNUNFLCAweDAwQTEsIDB4MjVDRiwgMHgyNUNGLCAweDAwQTAsDQorICAgIDB4MjVEMCwgMHgyNUQxLCAweDAwRTYsIDB4MjVFNiwgMHgyNUU2LCAweDIyNDcsIDB4MjVFRiwgMHgyNUVGLCAweDIxQjksDQorICAgIDB4MjYwNSwgMHgyNjA1LCAweDAwOUUsIDB4MjYwNiwgMHgyNjA2LCAweDAwOUQsIDB4MjYwRSwgMHgyNjBFLCAweDAwRjEsDQorICAgIDB4MjYwRiwgMHgyNjBGLCAweDAwRjAsIDB4MjYxQywgMHgyNjFDLCAweDAwRjIsIDB4MjYxRCwgMHgyNjFELCAweDI0MDYsDQorICAgIDB4MjYxRSwgMHgyNjFFLCAweDAwRjMsIDB4MjYxRiwgMHgyNjFGLCAweDI0MDcsIDB4MjYyRiwgMHgyNjJGLCAweDIxRDgsDQorICAgIDB4MjY0MCwgMHgyNjQwLCAweDAwOTMsIDB4MjY0MiwgMHgyNjQyLCAweDAwOTIsIDB4MjY2MCwgMHgyNjYxLCAweDAwREUsDQorICAgIDB4MjY2MywgMHgyNjYzLCAweDAwRTIsIDB4MjY2NCwgMHgyNjY0LCAweDAwREQsIDB4MjY2NSwgMHgyNjY1LCAweDAwRTAsDQorICAgIDB4MjY2NywgMHgyNjY3LCAweDAwRTEsIDB4MjY2OCwgMHgyNjY4LCAweDAwRUYsIDB4MjY2OSwgMHgyNjZBLCAweDAwRkQsDQorICAgIDB4MjY2QywgMHgyNjZDLCAweDAwRkYsIDB4MjY2RCwgMHgyNjZELCAweDAwRkMsIDB4MjY2RiwgMHgyNjZGLCAweDIxOTIsDQorICAgIDB4MjcxNiwgMHgyNzE2LCAweDIxQjcsIDB4MjcxQSwgMHgyNzFBLCAweDIxQjYsIDB4MjczRCwgMHgyNzNELCAweDIxOUMsDQorICAgIDB4Mjc1NiwgMHgyNzU2LCAweDIxQkQsIDB4Mjc3NiwgMHgyNzdGLCAweDIxRTEsIDB4Mjc4QSwgMHgyNzkzLCAweDIwOTYsDQorICAgIDB4MzAwMCwgMHgzMDAyLCAweDAwNjUsIDB4MzAwMywgMHgzMDAzLCAweDAwNkMsIDB4MzAwOCwgMHgzMDExLCAweDAwNzgsDQorICAgIDB4MzAxMiwgMHgzMDEyLCAweDIxRkMsIDB4MzAxMywgMHgzMDEzLCAweDAwQUYsIDB4MzAxNCwgMHgzMDE1LCAweDAwNzYsDQorICAgIDB4MzAxNiwgMHgzMDE5LCAweDIwMUIsIDB4MzAxRSwgMHgzMDFGLCAweDI0NkEsIDB4MzAyMCwgMHgzMDIwLCAweDIxREYsDQorICAgIDB4MzAzNiwgMHgzMDM2LCAweDIxRkQsIDB4MzA0MSwgMHgzMDkzLCAweDAzNTMsIDB4MzBBMSwgMHgzMEY2LCAweDAzQTYsDQorICAgIDB4MzBGQiwgMHgzMEZCLCAweDAwNjgsIDB4MzBGQywgMHgzMEZDLCAweDI0NzIsIDB4MzEzMSwgMHgzMTYzLCAweDAxNjYsDQorICAgIDB4MzE2NCwgMHgzMTY0LCAweDAwNjUsIDB4MzE2NSwgMHgzMThFLCAweDAxOTksIDB4MzIwMCwgMHgzMjFCLCAweDAzMDUsDQorICAgIDB4MzIxQywgMHgzMjFDLCAweDAxMDEsIDB4MzIzMSwgMHgzMjMxLCAweDIyNTQsIDB4MzIzOSwgMHgzMjM5LCAweDIyNTUsDQorICAgIDB4MzI2MCwgMHgzMjdCLCAweDAyQTcsIDB4MzI3RiwgMHgzMjdGLCAweDAxMDAsIDB4MzI4QSwgMHgzMjhGLCAweDI0NTUsDQorICAgIDB4MzI5MCwgMHgzMjkwLCAweDI0NTQsIDB4MzI5NCwgMHgzMjk0LCAweDIzNzgsIDB4MzI5RSwgMHgzMjlFLCAweDIyMzksDQorICAgIDB4MzJBNSwgMHgzMkE1LCAweDIzODgsIDB4MzM4MCwgMHgzMzg0LCAweDAyNzMsIDB4MzM4OCwgMHgzMzg5LCAweDAyNjQsDQorICAgIDB4MzM4QSwgMHgzMzhDLCAweDAyODYsIDB4MzM4RCwgMHgzMzhGLCAweDAyNjAsIDB4MzM5MCwgMHgzMzk0LCAweDAyN0UsDQorICAgIDB4MzM5NSwgMHgzMzk3LCAweDAyNEIsIDB4MzM5OCwgMHgzMzk4LCAweDAyNEYsIDB4MzM5OSwgMHgzM0EyLCAweDAyNTUsDQorICAgIDB4MzNBMywgMHgzM0E2LCAweDAyNTEsIDB4MzNBNywgMHgzM0E4LCAweDAyNjcsIDB4MzNBOSwgMHgzM0FDLCAweDAyOEYsDQorICAgIDB4MzNBRCwgMHgzM0FGLCAweDAyOEIsIDB4MzNCMCwgMHgzM0I5LCAweDAyNjksIDB4MzNCQSwgMHgzM0JGLCAweDAyNzgsDQorICAgIDB4MzNDMCwgMHgzM0MxLCAweDAyODQsIDB4MzNDMiwgMHgzM0MyLCAweDAxMDUsIDB4MzNDMywgMHgzM0MzLCAweDAyOTYsDQorICAgIDB4MzNDNCwgMHgzM0M0LCAweDAyNTAsIDB4MzNDNSwgMHgzM0M1LCAweDAyOEEsIDB4MzNDNiwgMHgzM0M2LCAweDAyOTksDQorICAgIDB4MzNDNywgMHgzM0M3LCAweDAxMDMsIDB4MzNDOCwgMHgzM0M4LCAweDAyNjYsIDB4MzNDOSwgMHgzM0M5LCAweDAyOTcsDQorICAgIDB4MzNDQSwgMHgzM0NBLCAweDAyNUYsIDB4MzNDQiwgMHgzM0NCLCAweDIyNTYsIDB4MzNDRiwgMHgzM0NGLCAweDAyNjMsDQorICAgIDB4MzNEMCwgMHgzM0QwLCAweDAyOTQsIDB4MzNEMywgMHgzM0QzLCAweDAyOTUsIDB4MzNENiwgMHgzM0Q2LCAweDAyODksDQorICAgIDB4MzNEOCwgMHgzM0Q4LCAweDAxMDYsIDB4MzNEQiwgMHgzM0RCLCAweDAyOEUsIDB4MzNEQywgMHgzM0RDLCAweDAyOTgsDQorICAgIDB4MzNERCwgMHgzM0RELCAweDAyOTMsIDB4NEUwMCwgMHg0RTAwLCAweDE5M0MsIDB4NEUwMSwgMHg0RTAxLCAweDFBMzAsDQorICAgIDB4NEUwMywgMHg0RTAzLCAweDFDQzQsIDB4NEUwNywgMHg0RTA3LCAweDEyM0UsIDB4NEUwOCwgMHg0RTA4LCAweDE5ODYsDQorICAgIDB4NEUwOSwgMHg0RTA5LCAweDE0QzgsIDB4NEUwQSwgMHg0RTBBLCAweDE0RDMsIDB4NEUwQiwgMHg0RTBCLCAweDFEQzAsDQorICAgIDB4NEUwRCwgMHg0RTBELCAweDEzRjUsIDB4NEUxMSwgMHg0RTExLCAweDFDNzgsIDB4NEUxNCwgMHg0RTE0LCAweDFCODEsDQorICAgIDB4NEUxNSwgMHg0RTE1LCAweDE0M0QsIDB4NEUxNiwgMHg0RTE2LCAweDE1NzQsIDB4NEUxOCwgMHg0RTE4LCAweDBGMzUsDQorICAgIDB4NEUxOSwgMHg0RTE5LCAweDEzQjEsIDB4NEUxRSwgMHg0RTFFLCAweDE2MzIsIDB4NEUyRCwgMHg0RTJELCAweDFCMEEsDQorICAgIDB4NEUzMiwgMHg0RTMyLCAweDBFREEsIDB4NEUzOCwgMHg0RTM4LCAweDFFQ0EsIDB4NEUzOSwgMHg0RTM5LCAweDEwNjAsDQorICAgIDB4NEUzQiwgMHg0RTNCLCAweDFBQ0MsIDB4NEU0MiwgMHg0RTQyLCAweDE3OEQsIDB4NEU0MywgMHg0RTQzLCAweDEwM0EsDQorICAgIDB4NEU0NSwgMHg0RTQ1LCAweDBGMzYsIDB4NEU0QiwgMHg0RTRCLCAweDFCMUUsIDB4NEU0RCwgMHg0RTRELCAweDE0NzksDQorICAgIDB4NEU0RSwgMHg0RTRFLCAweDFFNzgsIDB4NEU0RiwgMHg0RTRGLCAweDFEQkUsIDB4NEU1NiwgMHg0RTU2LCAweDBGMEYsDQorICAgIDB4NEU1OCwgMHg0RTU4LCAweDE2MzMsIDB4NEU1OSwgMHg0RTU5LCAweDE4RUMsIDB4NEU1RCwgMHg0RTVELCAweDBGMzcsDQorICAgIDB4NEU1RSwgMHg0RTVFLCAweDBFMUQsIDB4NEU1RiwgMHg0RTVGLCAweDE2RTYsIDB4NEU2QiwgMHg0RTZCLCAweDBEQUMsDQorICAgIDB4NEU2RCwgMHg0RTZELCAweDEwRTksIDB4NEU3MywgMHg0RTczLCAweDE4QTUsIDB4NEU3NiwgMHg0RTc2LCAweDEzRTQsDQorICAgIDB4NEU3NywgMHg0RTc3LCAweDE0QzMsIDB4NEU3RSwgMHg0RTdFLCAweDBFMTEsIDB4NEU4MiwgMHg0RTgyLCAweDExMjUsDQorICAgIDB4NEU4NiwgMHg0RTg2LCAweDExQzcsIDB4NEU4OCwgMHg0RTg4LCAweDE3MkUsIDB4NEU4QiwgMHg0RThCLCAweDE0N0EsDQorICAgIDB4NEU4QywgMHg0RThDLCAweDE5MEQsIDB4NEU4RSwgMHg0RThFLCAweDE4MzUsIDB4NEU5MCwgMHg0RTkwLCAweDE4NkMsDQorICAgIDB4NEU5MSwgMHg0RTkxLCAweDE4NUUsIDB4NEU5MiwgMHg0RTkyLCAweDFFNzksIDB4NEU5NCwgMHg0RTk0LCAweDE3QTEsDQorICAgIDB4NEU5NSwgMHg0RTk1LCAweDFBMzEsIDB4NEU5OCwgMHg0RTk4LCAweDBGREEsIDB4NEU5QiwgMHg0RTlCLCAweDE0N0IsDQorICAgIDB4NEU5RSwgMHg0RTlFLCAweDE2OEYsIDB4NEVBMSwgMHg0RUExLCAweDEyNTgsIDB4NEVBMiwgMHg0RUEyLCAweDFERjYsDQorICAgIDB4NEVBNCwgMHg0RUE0LCAweDBGMUMsIDB4NEVBNSwgMHg0RUE1LCAweDFFMDUsIDB4NEVBNiwgMHg0RUE2LCAweDE3M0IsDQorICAgIDB4NEVBOCwgMHg0RUE4LCAweDFFNUIsIDB4NEVBQiwgMHg0RUFCLCAweDFFMUUsIDB4NEVBQywgMHg0RUFDLCAweDBFNEMsDQorICAgIDB4NEVBRCwgMHg0RUFELCAweDFBMzIsIDB4NEVBRSwgMHg0RUFFLCAweDExNEIsIDB4NEVCNiwgMHg0RUI2LCAweDEwNjEsDQorICAgIDB4NEVCQSwgMHg0RUJBLCAweDE5MkIsIDB4NEVDMCwgMHg0RUMwLCAweDE2OEIsIDB4NEVDMSwgMHg0RUMxLCAweDE5MkMsDQorICAgIDB4NEVDNCwgMHg0RUM0LCAweDFDQTMsIDB4NEVDNywgMHg0RUM3LCAweDBGMzgsIDB4NEVDQSwgMHg0RUNBLCAweDBGQzYsDQorICAgIDB4NEVDQiwgMHg0RUNCLCAweDBERTgsIDB4NEVDRCwgMHg0RUNELCAweDE5NEYsIDB4NEVENCwgMHg0RUQ0LCAweDE5NTMsDQorICAgIDB4NEVENSwgMHg0RUQ1LCAweDE0N0MsIDB4NEVENiwgMHg0RUQ2LCAweDFDRDQsIDB4NEVENywgMHg0RUQ3LCAweDE5ODcsDQorICAgIDB4NEVEOCwgMHg0RUQ4LCAweDEzRjYsIDB4NEVEOSwgMHg0RUQ5LCAweDE1MkEsIDB4NEVERCwgMHg0RURELCAweDEwRUIsDQorICAgIDB4NEVERiwgMHg0RURGLCAweDFCRUMsIDB4NEVFMywgMHg0RUUzLCAweDEwOUEsIDB4NEVFNCwgMHg0RUU0LCAweDExODksDQorICAgIDB4NEVFNSwgMHg0RUU1LCAweDE5MEUsIDB4NEVGMCwgMHg0RUYwLCAweDE2QzksIDB4NEVGMiwgMHg0RUYyLCAweDFCMEIsDQorICAgIDB4NEVGNiwgMHg0RUY2LCAweDBFMTIsIDB4NEVGNywgMHg0RUY3LCAweDBERTksIDB4NEVGQiwgMHg0RUZCLCAweDE5NDUsDQorICAgIDB4NEYwMSwgMHg0RjAxLCAweDBGREUsIDB4NEYwOSwgMHg0RjA5LCAweDFERjcsIDB4NEYwQSwgMHg0RjBBLCAweDE5MEYsDQorICAgIDB4NEYwQiwgMHg0RjBCLCAweDBGRDMsIDB4NEYwRCwgMHg0RjBELCAweDE3QTIsIDB4NEYwRSwgMHg0RjBFLCAweDBGREYsDQorICAgIDB4NEYwRiwgMHg0RjBGLCAweDEzRDIsIDB4NEYxMCwgMHg0RjEwLCAweDEzOEQsIDB4NEYxMSwgMHg0RjExLCAweDFGNDUsDQorICAgIDB4NEYyRiwgMHg0RjJGLCAweDEzN0MsIDB4NEYzNCwgMHg0RjM0LCAweDEzMjksIDB4NEYzNiwgMHg0RjM2LCAweDExOEEsDQorICAgIDB4NEYzOCwgMHg0RjM4LCAweDE2NjcsIDB4NEYzQSwgMHg0RjNBLCAweDE0N0QsIDB4NEYzQywgMHg0RjNDLCAweDE0N0UsDQorICAgIDB4NEYzRCwgMHg0RjNELCAweDBENkMsIDB4NEY0MywgMHg0RjQzLCAweDE5RjMsIDB4NEY0NiwgMHg0RjQ2LCAweDEwNjIsDQorICAgIDB4NEY0NywgMHg0RjQ3LCAweDE5QkYsIDB4NEY0OCwgMHg0RjQ4LCAweDFENzgsIDB4NEY0RCwgMHg0RjRELCAweDE4OEMsDQorICAgIDB4NEY0RSwgMHg0RjRFLCAweDE5QzAsIDB4NEY0RiwgMHg0RjRGLCAweDFBQ0QsIDB4NEY1MCwgMHg0RjUwLCAweDFBQzYsDQorICAgIDB4NEY1MSwgMHg0RjUxLCAweDE4MzYsIDB4NEY1NSwgMHg0RjU1LCAweDFEQzEsIDB4NEY1OSwgMHg0RjU5LCAweDE3MkYsDQorICAgIDB4NEY1QSwgMHg0RjVBLCAweDE5M0QsIDB4NEY1QiwgMHg0RjVCLCAweDE0MzMsIDB4NEY1QywgMHg0RjVDLCAweDE5NkQsDQorICAgIDB4NEY2OSwgMHg0RjY5LCAweDFENEUsIDB4NEY2RiwgMHg0RjZGLCAweDE2RjcsIDB4NEY3MCwgMHg0RjcwLCAweDEzN0QsDQorICAgIDB4NEY3MywgMHg0RjczLCAweDBENkQsIDB4NEY3NiwgMHg0Rjc2LCAweDEwMUYsIDB4NEY3QSwgMHg0RjdBLCAweDE5RjQsDQorICAgIDB4NEY3RSwgMHg0RjdFLCAweDE5M0UsIDB4NEY3RiwgMHg0RjdGLCAweDE0N0YsIDB4NEY4MSwgMHg0RjgxLCAweDE2NjgsDQorICAgIDB4NEY4MywgMHg0RjgzLCAweDBEOTQsIDB4NEY4NCwgMHg0Rjg0LCAweDFCNjcsIDB4NEY4NiwgMHg0Rjg2LCAweDExNDQsDQorICAgIDB4NEY4OCwgMHg0Rjg4LCAweDFDQTgsIDB4NEY4QSwgMHg0RjhBLCAweDBFRkYsIDB4NEY4QiwgMHg0RjhCLCAweDExOUEsDQorICAgIDB4NEY4RCwgMHg0RjhELCAweDE2M0MsIDB4NEY4RiwgMHg0RjhGLCAweDFBQ0UsIDB4NEY5MSwgMHg0RjkxLCAweDE4QTYsDQorICAgIDB4NEY5NiwgMHg0Rjk2LCAweDExRjIsIDB4NEY5OCwgMHg0Rjk4LCAweDFCODIsIDB4NEY5QiwgMHg0RjlCLCAweDBFQ0EsDQorICAgIDB4NEY5RCwgMHg0RjlELCAweDE4RkEsIDB4NEZBRSwgMHg0RkFFLCAweDEyOUMsIDB4NEZBRiwgMHg0RkFGLCAweDFGMUUsDQorICAgIDB4NEZCNSwgMHg0RkI1LCAweDFDQzcsIDB4NEZCNiwgMHg0RkI2LCAweDExNTgsIDB4NEZCRiwgMHg0RkJGLCAweDFENUUsDQorICAgIDB4NEZDMiwgMHg0RkMyLCAweDBFNzksIDB4NEZDMywgMHg0RkMzLCAweDFDNDksIDB4NEZDNCwgMHg0RkM0LCAweDE2OTAsDQorICAgIDB4NEZDOSwgMHg0RkM5LCAweDE3QTMsIDB4NEZDQSwgMHg0RkNBLCAweDFBRjYsIDB4NEZDRSwgMHg0RkNFLCAweDFBN0UsDQorICAgIDB4NEZEMSwgMHg0RkQxLCAweDE4MUUsIDB4NEZEMywgMHg0RkQzLCAweDBFNEQsIDB4NEZENCwgMHg0RkQ0LCAweDFFMzYsDQorICAgIDB4NEZENywgMHg0RkQ3LCAweDE1QTEsIDB4NEZEQSwgMHg0RkRBLCAweDEyMDUsIDB4NEZERCwgMHg0RkRELCAweDEzQzIsDQorICAgIDB4NEZERiwgMHg0RkRGLCAweDE0ODAsIDB4NEZFMCwgMHg0RkUwLCAweDFFNEYsIDB4NEZFMSwgMHg0RkUxLCAweDE2NjksDQorICAgIDB4NEZFRSwgMHg0RkVFLCAweDE1QkYsIDB4NEZFRiwgMHg0RkVGLCAweDEzRjcsIDB4NEZGMSwgMHg0RkYxLCAweDBGMzksDQorICAgIDB4NEZGMywgMHg0RkYzLCAweDEzNkEsIDB4NEZGNSwgMHg0RkY1LCAweDFEOTgsIDB4NEZGOCwgMHg0RkY4LCAweDEzRTUsDQorICAgIDB4NEZGQSwgMHg0RkZBLCAweDE3MjUsIDB4NTAwMiwgMHg1MDAyLCAweDEzQjIsIDB4NTAwNiwgMHg1MDA2LCAweDExNEMsDQorICAgIDB4NTAwOSwgMHg1MDA5LCAweDFCQjQsIDB4NTAwQiwgMHg1MDBCLCAweDBERUEsIDB4NTAwRCwgMHg1MDBELCAweDEzNjksDQorICAgIDB4NTAxMSwgMHg1MDExLCAweDEyRTQsIDB4NTAxMiwgMHg1MDEyLCAweDEwQUQsIDB4NTAxNiwgMHg1MDE2LCAweDFFMTksDQorICAgIDB4NTAxOSwgMHg1MDE5LCAweDFGMUYsIDB4NTAxQSwgMHg1MDFBLCAweDE4RkIsIDB4NTAxQywgMHg1MDFDLCAweDFCREUsDQorICAgIDB4NTAxRSwgMHg1MDFFLCAweDBFNEUsIDB4NTAxRiwgMHg1MDFGLCAweDFCODMsIDB4NTAyMSwgMHg1MDIxLCAweDFCQjUsDQorICAgIDB4NTAyMywgMHg1MDIzLCAweDEzNEQsIDB4NTAyNCwgMHg1MDI0LCAweDFDQTksIDB4NTAyNiwgMHg1MDI2LCAweDBGODEsDQorICAgIDB4NTAyNywgMHg1MDI3LCAweDFBQjUsIDB4NTAyOCwgMHg1MDI4LCAweDBFMDEsIDB4NTAyQSwgMHg1MDJBLCAweDE3OEUsDQorICAgIDB4NTAyQiwgMHg1MDJCLCAweDExRjMsIDB4NTAyQywgMHg1MDJDLCAweDFDRTIsIDB4NTAyRCwgMHg1MDJELCAweDE3RjMsDQorICAgIDB4NTAzQiwgMHg1MDNCLCAweDE2RTcsIDB4NTA0MywgMHg1MDQzLCAweDE3MUQsIDB4NTA0NywgMHg1MDQ3LCAweDBENkUsDQorICAgIDB4NTA0OCwgMHg1MDQ4LCAweDBFMkIsIDB4NTA0OSwgMHg1MDQ5LCAweDE4OEQsIDB4NTA0RiwgMHg1MDRGLCAweDFENUYsDQorICAgIDB4NTA1NSwgMHg1MDU1LCAweDFFMDYsIDB4NTA1QSwgMHg1MDVBLCAweDFBQ0YsIDB4NTA1QywgMHg1MDVDLCAweDFBMzMsDQorICAgIDB4NTA2NSwgMHg1MDY1LCAweDBFMTMsIDB4NTA3NCwgMHg1MDc0LCAweDFDQTIsIDB4NTA3NSwgMHg1MDc1LCAweDFBMzQsDQorICAgIDB4NTA3NiwgMHg1MDc2LCAweDE4MzcsIDB4NTA3OCwgMHg1MDc4LCAweDFEMjksIDB4NTA4MCwgMHg1MDgwLCAweDBGMTAsDQorICAgIDB4NTA4NSwgMHg1MDg1LCAweDEzRjgsIDB4NTA4RCwgMHg1MDhELCAweDEzNEUsIDB4NTA5MSwgMHg1MDkxLCAweDBFMUUsDQorICAgIDB4NTA5OCwgMHg1MDk4LCAweDE0QjcsIDB4NTA5OSwgMHg1MDk5LCAweDE0M0UsIDB4NTBBQywgMHg1MEFDLCAweDFDNUUsDQorICAgIDB4NTBBRCwgMHg1MEFELCAweDE4MUYsIDB4NTBCMiwgMHg1MEIyLCAweDE3QTQsIDB4NTBCMywgMHg1MEIzLCAweDE5RjUsDQorICAgIDB4NTBCNSwgMHg1MEI1LCAweDFCQ0EsIDB4NTBCNywgMHg1MEI3LCAweDE0RDQsIDB4NTBCRSwgMHg1MEJFLCAweDBFNEYsDQorICAgIDB4NTBDNSwgMHg1MEM1LCAweDBGQjcsIDB4NTBDOSwgMHg1MEM5LCAweDFDMDksIDB4NTBDQSwgMHg1MENBLCAweDE1MkIsDQorICAgIDB4NTBDRiwgMHg1MENGLCAweDE0RDUsIDB4NTBEMSwgMHg1MEQxLCAweDBGMUQsIDB4NTBENSwgMHg1MEQ1LCAweDEzRDMsDQorICAgIDB4NTBENiwgMHg1MEQ2LCAweDFGNjMsIDB4NTBEQSwgMHg1MERBLCAweDExQzgsIDB4NTBERSwgMHg1MERFLCAweDE4OEUsDQorICAgIDB4NTBFNSwgMHg1MEU1LCAweDE3RkMsIDB4NTBFNywgMHg1MEU3LCAweDE2MzQsIDB4NTBFRCwgMHg1MEVELCAweDFCQUEsDQorICAgIDB4NTBGOSwgMHg1MEY5LCAweDBENkYsIDB4NTBGQiwgMHg1MEZCLCAweDEzOUMsIDB4NTBGRiwgMHg1MEZGLCAweDE0ODEsDQorICAgIDB4NTEwMCwgMHg1MTAwLCAweDE4RkMsIDB4NTEwMSwgMHg1MTAxLCAweDFBRjcsIDB4NTEwNCwgMHg1MTA0LCAweDE3MTgsDQorICAgIDB4NTEwNiwgMHg1MTA2LCAweDBFNTAsIDB4NTEwOSwgMHg1MTA5LCAweDBFMjEsIDB4NTExMiwgMHg1MTEyLCAweDE4QTcsDQorICAgIDB4NTExRiwgMHg1MTFGLCAweDE0RDYsIDB4NTEyMSwgMHg1MTIxLCAweDExQkYsIDB4NTEyQSwgMHg1MTJBLCAweDE4MzgsDQorICAgIDB4NTEzMiwgMHg1MTMyLCAweDE5QzEsIDB4NTEzNywgMHg1MTM3LCAweDExNTksIDB4NTEzQSwgMHg1MTNBLCAweDEwMjUsDQorICAgIDB4NTEzQywgMHg1MTNDLCAweDE3MjYsIDB4NTE0MCwgMHg1MTQwLCAweDE3QzksIDB4NTE0MSwgMHg1MTQxLCAweDE4RDcsDQorICAgIDB4NTE0MywgMHg1MTQzLCAweDE4NkYsIDB4NTE0NCwgMHg1MTQ0LCAweDFFNUMsIDB4NTE0NSwgMHg1MTQ1LCAweDFDOEEsDQorICAgIDB4NTE0NiwgMHg1MTQ2LCAweDFBN0YsIDB4NTE0NywgMHg1MTQ3LCAweDFGNEQsIDB4NTE0OCwgMHg1MTQ4LCAweDE1MkMsDQorICAgIDB4NTE0OSwgMHg1MTQ5LCAweDBGMDAsIDB4NTE0QiwgMHg1MTRCLCAweDBGQjAsIDB4NTE0QywgMHg1MTRDLCAweDFEMDcsDQorICAgIDB4NTE0RCwgMHg1MTRELCAweDEyN0YsIDB4NTE0RSwgMHg1MTRFLCAweDFEMTksIDB4NTE1MiwgMHg1MTUyLCAweDE2OTEsDQorICAgIDB4NTE1QywgMHg1MTVDLCAweDEwRkMsIDB4NTE2MiwgMHg1MTYyLCAweDBGREIsIDB4NTE2NSwgMHg1MTY1LCAweDE5NEQsDQorICAgIDB4NTE2NywgMHg1MTY3LCAweDEwM0IsIDB4NTE2OCwgMHg1MTY4LCAweDE5RjYsIDB4NTE2OSwgMHg1MTY5LCAweDExNEQsDQorICAgIDB4NTE2QSwgMHg1MTZBLCAweDE4QTgsIDB4NTE2QiwgMHg1MTZCLCAweDFENEIsIDB4NTE2QywgMHg1MTZDLCAweDBFQ0IsDQorICAgIDB4NTE2RCwgMHg1MTZELCAweDExRUYsIDB4NTE2RSwgMHg1MTZFLCAweDFFNkYsIDB4NTE3MSwgMHg1MTcxLCAweDBFQ0MsDQorICAgIDB4NTE3NSwgMHg1MTc1LCAweDEzQjMsIDB4NTE3NiwgMHg1MTc2LCAweDBGRTAsIDB4NTE3NywgMHg1MTc3LCAweDBGM0EsDQorICAgIDB4NTE3OCwgMHg1MTc4LCAweDE5RjcsIDB4NTE3QywgMHg1MTdDLCAweDBFNDYsIDB4NTE4MCwgMHg1MTgwLCAweDBGRTEsDQorICAgIDB4NTE4NiwgMHg1MTg2LCAweDE3MkQsIDB4NTE4QSwgMHg1MThBLCAweDFCRDYsIDB4NTE4RCwgMHg1MThELCAweDE5QUEsDQorICAgIDB4NTE5MiwgMHg1MTkyLCAweDEyOUQsIDB4NTE5NSwgMHg1MTk1LCAweDEyODAsIDB4NTE5NywgMHg1MTk3LCAweDE4MjAsDQorICAgIDB4NTFBMCwgMHg1MUEwLCAweDBFRUIsIDB4NTFBNSwgMHg1MUE1LCAweDEyOEMsIDB4NTFBQSwgMHg1MUFBLCAweDEyN0QsDQorICAgIDB4NTFBQywgMHg1MUFDLCAweDEwRUMsIDB4NTFCNiwgMHg1MUI2LCAweDE2RTgsIDB4NTFCNywgMHg1MUI3LCAweDExNDgsDQorICAgIDB4NTFCRCwgMHg1MUJELCAweDExN0QsIDB4NTFDNCwgMHg1MUM0LCAweDFCREEsIDB4NTFDNiwgMHg1MUM2LCAweDFBRjgsDQorICAgIDB4NTFDOSwgMHg1MUM5LCAweDExNEUsIDB4NTFDQiwgMHg1MUNCLCAweDFBODAsIDB4NTFDQywgMHg1MUNDLCAweDExRkYsDQorICAgIDB4NTFDRCwgMHg1MUNELCAweDEwRUQsIDB4NTFEQywgMHg1MURDLCAweDExRkUsIDB4NTFERCwgMHg1MURELCAweDE4RjYsDQorICAgIDB4NTFERSwgMHg1MURFLCAweDFGNjQsIDB4NTFFMSwgMHg1MUUxLCAweDEzOTEsIDB4NTFGMCwgMHg1MUYwLCAweDFFRTAsDQorICAgIDB4NTFGMSwgMHg1MUYxLCAweDBERUIsIDB4NTFGNiwgMHg1MUY2LCAweDFGNEUsIDB4NTFGOCwgMHg1MUY4LCAweDFCRkYsDQorICAgIDB4NTFGOSwgMHg1MUY5LCAweDE3RkQsIDB4NTFGQSwgMHg1MUZBLCAweDFDODcsIDB4NTFGRCwgMHg1MUZELCAweDFERTMsDQorICAgIDB4NTIwMCwgMHg1MjAwLCAweDEwQUUsIDB4NTIwMywgMHg1MjAzLCAweDE5MkQsIDB4NTIwNiwgMHg1MjA2LCAweDE0MjAsDQorICAgIDB4NTIwNywgMHg1MjA3LCAweDFBMUMsIDB4NTIwOCwgMHg1MjA4LCAweDE3OEYsIDB4NTIwQSwgMHg1MjBBLCAweDBEOTUsDQorICAgIDB4NTIwRSwgMHg1MjBFLCAweDEyRTUsIDB4NTIxMSwgMHg1MjExLCAweDFFNUQsIDB4NTIxNywgMHg1MjE3LCAweDExN0UsDQorICAgIDB4NTIxRCwgMHg1MjFELCAweDFDMkUsIDB4NTIyNCwgMHg1MjI0LCAweDFENDIsIDB4NTIyNSwgMHg1MjI1LCAweDEzQUQsDQorICAgIDB4NTIyOSwgMHg1MjI5LCAweDEyMDYsIDB4NTIyQSwgMHg1MjJBLCAweDE0QjgsIDB4NTIyRSwgMHg1MjJFLCAweDBFRkIsDQorICAgIDB4NTIzMCwgMHg1MjMwLCAweDEwQUYsIDB4NTIzNiwgMHg1MjM2LCAweDFBNjcsIDB4NTIzNywgMHg1MjM3LCAweDE1QjksDQorICAgIDB4NTIzOCwgMHg1MjM4LCAweDBGODIsIDB4NTIzOSwgMHg1MjM5LCAweDFCQTUsIDB4NTIzQSwgMHg1MjNBLCAweDE5NTQsDQorICAgIDB4NTIzQiwgMHg1MjNCLCAweDBEODksIDB4NTI0MywgMHg1MjQzLCAweDFDMjUsIDB4NTI0NywgMHg1MjQ3LCAweDFDQzAsDQorICAgIDB4NTI0QSwgMHg1MjRBLCAweDE0QjUsIDB4NTI0QiwgMHg1MjRCLCAweDBGQjEsIDB4NTI0QywgMHg1MjRDLCAweDExMkQsDQorICAgIDB4NTI0RCwgMHg1MjRELCAweDE5RjgsIDB4NTI1NCwgMHg1MjU0LCAweDFCREYsIDB4NTI1NiwgMHg1MjU2LCAweDEzRjksDQorICAgIDB4NTI1QiwgMHg1MjVCLCAweDBERDAsIDB4NTI1RCwgMHg1MjVELCAweDEzMTYsIDB4NTI2MSwgMHg1MjYxLCAweDE1NTcsDQorICAgIDB4NTI2OSwgMHg1MjY5LCAweDE5NTAsIDB4NTI2QSwgMHg1MjZBLCAweDE5RjksIDB4NTI2RiwgMHg1MjZGLCAweDEzRkEsDQorICAgIDB4NTI3MiwgMHg1MjcyLCAweDFERTEsIDB4NTI3NSwgMHg1Mjc1LCAweDFCQjYsIDB4NTI3RCwgMHg1MjdELCAweDFEOTksDQorICAgIDB4NTI3RiwgMHg1MjdGLCAweDFDMkYsIDB4NTI4MywgMHg1MjgzLCAweDFGMEMsIDB4NTI4NywgMHg1Mjg3LCAweDBGQjIsDQorICAgIDB4NTI4OCwgMHg1Mjg4LCAweDEzOUQsIDB4NTI4OSwgMHg1Mjg5LCAweDExRTEsIDB4NTI4RCwgMHg1MjhELCAweDBFMjIsDQorICAgIDB4NTI5MSwgMHg1MjkxLCAweDFBNjgsIDB4NTI5MiwgMHg1MjkyLCAweDBFMjMsIDB4NTI5QiwgMHg1MjlCLCAweDExNkEsDQorICAgIDB4NTI5RiwgMHg1MjlGLCAweDBFQ0QsIDB4NTJBMCwgMHg1MkEwLCAweDBENzAsIDB4NTJBMywgMHg1MkEzLCAweDExN0YsDQorICAgIDB4NTJBNCwgMHg1MkE0LCAweDBGQjgsIDB4NTJBOSwgMHg1MkE5LCAweDFBODEsIDB4NTJBQSwgMHg1MkFBLCAweDEwNDksDQorICAgIDB4NTJBQiwgMHg1MkFCLCAweDBFMjgsIDB4NTJCRSwgMHg1MkJFLCAweDFFMTcsIDB4NTJDMSwgMHg1MkMxLCAweDBFNTEsDQorICAgIDB4NTJDMywgMHg1MkMzLCAweDEzNDIsIDB4NTJDNSwgMHg1MkM1LCAweDFDQzEsIDB4NTJDNywgMHg1MkM3LCAweDE4MjEsDQorICAgIDB4NTJDOSwgMHg1MkM5LCAweDEyODEsIDB4NTJDRCwgMHg1MkNELCAweDBFNTIsIDB4NTJEMiwgMHg1MkQyLCAweDExRkMsDQorICAgIDB4NTJENSwgMHg1MkQ1LCAweDEwRUUsIDB4NTJENiwgMHg1MkQ2LCAweDE4NTUsIDB4NTJEOCwgMHg1MkQ4LCAweDBEQjYsDQorICAgIDB4NTJEOSwgMHg1MkQ5LCAweDEyQ0MsIDB4NTJEQiwgMHg1MkRCLCAweDFGMkIsIDB4NTJERCwgMHg1MkRELCAweDE2MzUsDQorICAgIDB4NTJERSwgMHg1MkRFLCAweDExOUYsIDB4NTJERiwgMHg1MkRGLCAweDEyOUUsIDB4NTJFMiwgMHg1MkUyLCAweDE1NzUsDQorICAgIDB4NTJFMywgMHg1MkUzLCAweDE5REIsIDB4NTJFNCwgMHg1MkU0LCAweDBGQjksIDB4NTJGMywgMHg1MkYzLCAweDFGMkMsDQorICAgIDB4NTJGNSwgMHg1MkY1LCAweDExNUEsIDB4NTJGOCwgMHg1MkY4LCAweDBGODMsIDB4NTJGQSwgMHg1MkZBLCAweDE5NkUsDQorICAgIDB4NTJGQiwgMHg1MkZCLCAweDBGQTksIDB4NTJGRSwgMHg1MkZFLCAweDBGM0IsIDB4NTJGRiwgMHg1MkZGLCAweDEyRjAsDQorICAgIDB4NTMwNSwgMHg1MzA1LCAweDFENzksIDB4NTMwOCwgMHg1MzA4LCAweDFGNEYsIDB4NTMwRCwgMHg1MzBELCAweDFEN0EsDQorICAgIDB4NTMwRiwgMHg1MzBGLCAweDFEN0IsIDB4NTMxMCwgMHg1MzEwLCAweDEzRDQsIDB4NTMxNSwgMHg1MzE1LCAweDE0M0YsDQorICAgIDB4NTMxNiwgMHg1MzE2LCAweDFFQjcsIDB4NTMxNywgMHg1MzE3LCAweDE0MUYsIDB4NTMxOSwgMHg1MzE5LCAweDE2M0QsDQorICAgIDB4NTMyMCwgMHg1MzIwLCAweDE5ODgsIDB4NTMyMSwgMHg1MzIxLCAweDBGMDEsIDB4NTMyMywgMHg1MzIzLCAweDBEQ0EsDQorICAgIDB4NTMyQSwgMHg1MzJBLCAweDE0NDAsIDB4NTMyRiwgMHg1MzJGLCAweDFFRjgsIDB4NTMzOSwgMHg1MzM5LCAweDFEQjQsDQorICAgIDB4NTMzRiwgMHg1MzNGLCAweDEwNUMsIDB4NTM0MCwgMHg1MzQwLCAweDBGM0MsIDB4NTM0MSwgMHg1MzQxLCAweDE2OEMsDQorICAgIDB4NTM0MywgMHg1MzQzLCAweDFCRUQsIDB4NTM0NCwgMHg1MzQ0LCAweDE5NEUsIDB4NTM0NywgMHg1MzQ3LCAweDE2MzYsDQorICAgIDB4NTM0OCwgMHg1MzQ4LCAweDE3QTUsIDB4NTM0OSwgMHg1MzQ5LCAweDFGM0EsIDB4NTM0QSwgMHg1MzRBLCAweDEzMkEsDQorICAgIDB4NTM0RCwgMHg1MzRELCAweDEyM0YsIDB4NTM1MSwgMHg1MzUxLCAweDE0NDEsIDB4NTM1MiwgMHg1MzUyLCAweDFBQjIsDQorICAgIDB4NTM1MywgMHg1MzUzLCAweDFDRTMsIDB4NTM1NCwgMHg1MzU0LCAweDFFNTAsIDB4NTM1NywgMHg1MzU3LCAweDEwMzEsDQorICAgIDB4NTM1QSwgMHg1MzVBLCAweDEzMTcsIDB4NTM1QywgMHg1MzVDLCAweDEzRDUsIDB4NTM1RSwgMHg1MzVFLCAweDEzQTcsDQorICAgIDB4NTM2MCwgMHg1MzYwLCAweDFBMjQsIDB4NTM2NiwgMHg1MzY2LCAweDBGMEMsIDB4NTM2OCwgMHg1MzY4LCAweDE1NEEsDQorICAgIDB4NTM2RiwgMHg1MzZGLCAweDEyQzAsIDB4NTM3MCwgMHg1MzcwLCAweDE5MkUsIDB4NTM3MSwgMHg1MzcxLCAweDE4OEYsDQorICAgIDB4NTM3NCwgMHg1Mzc0LCAweDBEOEEsIDB4NTM3NSwgMHg1Mzc1LCAweDExMjYsIDB4NTM3NywgMHg1Mzc3LCAweDBGODQsDQorICAgIDB4NTM3RCwgMHg1MzdELCAweDFCMEUsIDB4NTM3RiwgMHg1MzdGLCAweDBFNTMsIDB4NTM4NCwgMHg1Mzg0LCAweDE2REIsDQorICAgIDB4NTM5MywgMHg1MzkzLCAweDE2RDAsIDB4NTM5OCwgMHg1Mzk4LCAweDEyMDcsIDB4NTM5QSwgMHg1MzlBLCAweDFGMjAsDQorICAgIDB4NTM5RiwgMHg1MzlGLCAweDE4NzAsIDB4NTNBMCwgMHg1M0EwLCAweDFDQTQsIDB4NTNBNSwgMHg1M0E1LCAweDBGOEIsDQorICAgIDB4NTNBNiwgMHg1M0E2LCAweDFEQzIsIDB4NTNBRCwgMHg1M0FELCAweDE3NjUsIDB4NTNCQiwgMHg1M0JCLCAweDBFMDIsDQorICAgIDB4NTNDMywgMHg1M0MzLCAweDFCQUIsIDB4NTNDOCwgMHg1M0M4LCAweDE4MzksIDB4NTNDOSwgMHg1M0M5LCAweDFCODQsDQorICAgIDB4NTNDQSwgMHg1M0NBLCAweDBGRDQsIDB4NTNDQiwgMHg1M0NCLCAweDE4M0EsIDB4NTNDRCwgMHg1M0NELCAweDEzMkIsDQorICAgIDB4NTNENCwgMHg1M0Q0LCAweDE1RkMsIDB4NTNENiwgMHg1M0Q2LCAweDFDOTQsIDB4NTNENywgMHg1M0Q3LCAweDE1QzAsDQorICAgIDB4NTNEQiwgMHg1M0RCLCAweDEzMkMsIDB4NTNFMSwgMHg1M0UxLCAweDE3OTAsIDB4NTNFMiwgMHg1M0UyLCAweDFDNTMsDQorICAgIDB4NTNFMywgMHg1M0UzLCAweDBGM0QsIDB4NTNFNCwgMHg1M0U0LCAweDBFOTEsIDB4NTNFNSwgMHg1M0U1LCAweDBGM0UsDQorICAgIDB4NTNFOSwgMHg1M0U5LCAweDBFOTIsIDB4NTNFQSwgMHg1M0VBLCAweDFCMUYsIDB4NTNFQiwgMHg1M0VCLCAweDBGOUEsDQorICAgIDB4NTNFQywgMHg1M0VDLCAweDE1N0MsIDB4NTNFRCwgMHg1M0VELCAweDFENEMsIDB4NTNFRiwgMHg1M0VGLCAweDBENzEsDQorICAgIDB4NTNGMCwgMHg1M0YwLCAweDFEMDgsIDB4NTNGMSwgMHg1M0YxLCAweDFCNjgsIDB4NTNGMiwgMHg1M0YyLCAweDE0ODIsDQorICAgIDB4NTNGMywgMHg1M0YzLCAweDE4M0IsIDB4NTNGOCwgMHg1M0Y4LCAweDE0ODMsIDB4NTQwMywgMHg1NDAzLCAweDFGNTcsDQorICAgIDB4NTQwNCwgMHg1NDA0LCAweDBEOEIsIDB4NTQwOCwgMHg1NDA4LCAweDFERUYsIDB4NTQwOSwgMHg1NDA5LCAweDEwMjAsDQorICAgIDB4NTQwQSwgMHg1NDBBLCAweDE5REMsIDB4NTQwQywgMHg1NDBDLCAweDEwRUYsIDB4NTQwRCwgMHg1NDBELCAweDEyOEQsDQorICAgIDB4NTQwRSwgMHg1NDBFLCAweDFGMjEsIDB4NTQwRiwgMHg1NDBGLCAweDEyMDgsIDB4NTQxMCwgMHg1NDEwLCAweDFEMUEsDQorICAgIDB4NTQxMSwgMHg1NDExLCAweDFFMUYsIDB4NTQxQiwgMHg1NDFCLCAweDBGNzEsIDB4NTQxRCwgMHg1NDFELCAweDEyMUUsDQorICAgIDB4NTQxRiwgMHg1NDFGLCAweDE4RUQsIDB4NTQyMCwgMHg1NDIwLCAweDFENkUsIDB4NTQyNiwgMHg1NDI2LCAweDEzRkIsDQorICAgIDB4NTQyOSwgMHg1NDI5LCAweDE0MjEsIDB4NTQyQiwgMHg1NDJCLCAweDFERTQsIDB4NTQzMywgMHg1NDMzLCAweDE3QTcsDQorICAgIDB4NTQzOCwgMHg1NDM4LCAweDFGNUUsIDB4NTQzOSwgMHg1NDM5LCAweDFDOTUsIDB4NTQzQiwgMHg1NDNCLCAweDEyRTYsDQorICAgIDB4NTQzQywgMHg1NDNDLCAweDFGMjIsIDB4NTQzRSwgMHg1NDNFLCAweDE3QTYsIDB4NTQ0MiwgMHg1NDQyLCAweDExNUIsDQorICAgIDB4NTQ0OCwgMHg1NDQ4LCAweDFBMzUsIDB4NTQ0QSwgMHg1NDRBLCAweDBFOTMsIDB4NTQ1MSwgMHg1NDUxLCAweDFDRjAsDQorICAgIDB4NTQ2OCwgMHg1NDY4LCAweDFBRDMsIDB4NTQ2QSwgMHg1NDZBLCAweDFBRDIsIDB4NTQ3MSwgMHg1NDcxLCAweDBFOTQsDQorICAgIDB4NTQ3MywgMHg1NDczLCAweDEyRjMsIDB4NTQ3NSwgMHg1NDc1LCAweDBENzIsIDB4NTQ3QiwgMHg1NDdCLCAweDE2NkEsDQorICAgIDB4NTQ3QywgMHg1NDdDLCAweDFFN0EsIDB4NTQ3RCwgMHg1NDdELCAweDEyOEUsIDB4NTQ4MCwgMHg1NDgwLCAweDE5QzIsDQorICAgIDB4NTQ4NiwgMHg1NDg2LCAweDFEN0MsIDB4NTQ4QywgMHg1NDhDLCAweDFFQjgsIDB4NTQ4RSwgMHg1NDhFLCAweDBGM0YsDQorICAgIDB4NTQ5MCwgMHg1NDkwLCAweDEzRkMsIDB4NTRBNCwgMHg1NEE0LCAweDFDRDUsIDB4NTRBOCwgMHg1NEE4LCAweDE5NTUsDQorICAgIDB4NTRBQiwgMHg1NEFCLCAweDFCMjAsIDB4NTRBQywgMHg1NEFDLCAweDBGMUUsIDB4NTRCMywgMHg1NEIzLCAweDFFMDcsDQorICAgIDB4NTRCOCwgMHg1NEI4LCAweDFERTUsIDB4NTRCRCwgMHg1NEJELCAweDE5MkYsIDB4NTRDMCwgMHg1NEMwLCAweDE2RDEsDQorICAgIDB4NTRDMSwgMHg1NEMxLCAweDFEQTYsIDB4NTRDNCwgMHg1NEM0LCAweDFFQUQsIDB4NTRDOCwgMHg1NEM4LCAweDFERjAsDQorICAgIDB4NTRDOSwgMHg1NEM5LCAweDE5QUIsIDB4NTRFMSwgMHg1NEUxLCAweDE4NzEsIDB4NTRFNSwgMHg1NEU1LCAweDBENzMsDQorICAgIDB4NTRFOCwgMHg1NEU4LCAweDFDMzAsIDB4NTRFRCwgMHg1NEVELCAweDBFQjcsIDB4NTRFRSwgMHg1NEVFLCAweDFGMTEsDQorICAgIDB4NTRGMiwgMHg1NEYyLCAweDFDMDAsIDB4NTRGQSwgMHg1NEZBLCAweDFEN0QsIDB4NTUwNCwgMHg1NTA0LCAweDFENEYsDQorICAgIDB4NTUwNiwgMHg1NTA2LCAweDE0ODQsIDB4NTUwNywgMHg1NTA3LCAweDFCNDQsIDB4NTUwRSwgMHg1NTBFLCAweDEyMDksDQorICAgIDB4NTUxMCwgMHg1NTEwLCAweDEwOEYsIDB4NTUxQywgMHg1NTFDLCAweDEyNTEsIDB4NTUyRiwgMHg1NTJGLCAweDE4QTksDQorICAgIDB4NTUzMSwgMHg1NTMxLCAweDFCQjcsIDB4NTUzNSwgMHg1NTM1LCAweDE2QkQsIDB4NTUzRSwgMHg1NTNFLCAweDFDRDYsDQorICAgIDB4NTU0NCwgMHg1NTQ0LCAweDFDRTQsIDB4NTU0NiwgMHg1NTQ2LCAweDE0RDcsIDB4NTU0RiwgMHg1NTRGLCAweDEyRTcsDQorICAgIDB4NTU1MywgMHg1NTUzLCAweDBFN0EsIDB4NTU1NiwgMHg1NTU2LCAweDEwNzksIDB4NTU1RSwgMHg1NTVFLCAweDE2OTIsDQorICAgIDB4NTU2MywgMHg1NTYzLCAweDFERTYsIDB4NTU3QywgMHg1NTdDLCAweDFBNjksIDB4NTU4MCwgMHg1NTgwLCAweDBERkIsDQorICAgIDB4NTU4NCwgMHg1NTg0LCAweDE1MkQsIDB4NTU4NiwgMHg1NTg2LCAweDFDMDEsIDB4NTU4NywgMHg1NTg3LCAweDExMTYsDQorICAgIDB4NTU4OSwgMHg1NTg5LCAweDFGMjMsIDB4NTU4QSwgMHg1NThBLCAweDFERTcsIDB4NTU5OCwgMHg1NTk4LCAweDFCRUUsDQorICAgIDB4NTU5OSwgMHg1NTk5LCAweDFGM0IsIDB4NTU5QSwgMHg1NTlBLCAweDFFQ0IsIDB4NTU5QywgMHg1NTlDLCAweDFGNjUsDQorICAgIDB4NTU5RCwgMHg1NTlELCAweDBEQUQsIDB4NTVBNywgMHg1NUE3LCAweDFGMzYsIDB4NTVBOSwgMHg1NUE5LCAweDE4QUEsDQorICAgIDB4NTVBQSwgMHg1NUFBLCAweDE0RDgsIDB4NTVBQiwgMHg1NUFCLCAweDEwMjQsIDB4NTVBQywgMHg1NUFDLCAweDBGMUYsDQorICAgIDB4NTVBRSwgMHg1NUFFLCAweDEwNjMsIDB4NTVDNSwgMHg1NUM1LCAweDFGMjQsIDB4NTVDNywgMHg1NUM3LCAweDE0RjUsDQorICAgIDB4NTVENCwgMHg1NUQ0LCAweDFCNDUsIDB4NTVEQSwgMHg1NURBLCAweDE3QTgsIDB4NTVEQywgMHg1NURDLCAweDBGRTIsDQorICAgIDB4NTVERiwgMHg1NURGLCAweDFCODUsIDB4NTVFMywgMHg1NUUzLCAweDE0ODUsIDB4NTVFNCwgMHg1NUU0LCAweDFDQUEsDQorICAgIDB4NTVGRCwgMHg1NUZELCAweDE1QzEsIDB4NTVGRSwgMHg1NUZFLCAweDFBRDQsIDB4NTYwNiwgMHg1NjA2LCAweDFDRjEsDQorICAgIDB4NTYwOSwgMHg1NjA5LCAweDBENzQsIDB4NTYxNCwgMHg1NjE0LCAweDBGNDAsIDB4NTYxNywgMHg1NjE3LCAweDE0RDksDQorICAgIDB4NTYyRiwgMHg1NjJGLCAweDE1N0QsIDB4NTYzMiwgMHg1NjMyLCAweDFBODIsIDB4NTYzNCwgMHg1NjM0LCAweDFDOTYsDQorICAgIDB4NTYzNiwgMHg1NjM2LCAweDE2M0UsIDB4NTY1MywgMHg1NjUzLCAweDFFMjcsIDB4NTY2OCwgMHg1NjY4LCAweDBGRTMsDQorICAgIDB4NTY2QiwgMHg1NjZCLCAweDFGNjYsIDB4NTY3NCwgMHg1Njc0LCAweDE0MjIsIDB4NTY4NiwgMHg1Njg2LCAweDFGMTIsDQorICAgIDB4NTZBNSwgMHg1NkE1LCAweDE3NDQsIDB4NTZBQywgMHg1NkFDLCAweDE0NjcsIDB4NTZBRSwgMHg1NkFFLCAweDFFMjAsDQorICAgIDB4NTZCNCwgMHg1NkI0LCAweDE3MjcsIDB4NTZCQywgMHg1NkJDLCAweDE5NkYsIDB4NTZDQSwgMHg1NkNBLCAweDEwMzgsDQorICAgIDB4NTZDRCwgMHg1NkNELCAweDFGNjcsIDB4NTZEMSwgMHg1NkQxLCAweDFDNEEsIDB4NTZEQSwgMHg1NkRBLCAweDE1QzIsDQorICAgIDB4NTZEQiwgMHg1NkRCLCAweDE0ODYsIDB4NTZERSwgMHg1NkRFLCAweDFFRjksIDB4NTZFMCwgMHg1NkUwLCAweDE5MzAsDQorICAgIDB4NTZGMCwgMHg1NkYwLCAweDBFQkUsIDB4NTZGOSwgMHg1NkY5LCAweDExOEIsIDB4NTZGQSwgMHg1NkZBLCAweDBFOTUsDQorICAgIDB4NTcwMywgMHg1NzAzLCAweDFEN0UsIDB4NTcwNCwgMHg1NzA0LCAweDE3MEUsIDB4NTcwOCwgMHg1NzA4LCAweDBGODUsDQorICAgIDB4NTcwQiwgMHg1NzBCLCAweDBGNkIsIDB4NTcwRCwgMHg1NzBELCAweDE4OTAsIDB4NTcxMiwgMHg1NzEyLCAweDE4NzMsDQorICAgIDB4NTcxMywgMHg1NzEzLCAweDE4NzIsIDB4NTcxNiwgMHg1NzE2LCAweDEwQjAsIDB4NTcxOCwgMHg1NzE4LCAweDEwNjQsDQorICAgIDB4NTcxRiwgMHg1NzFGLCAweDFEMUIsIDB4NTcyOCwgMHg1NzI4LCAweDE5QUMsIDB4NTcyRCwgMHg1NzJELCAweDBGOUIsDQorICAgIDB4NTczMCwgMHg1NzMwLCAweDFCMjEsIDB4NTczQiwgMHg1NzNCLCAweDBGRTQsIDB4NTc0MCwgMHg1NzQwLCAweDFCMjIsDQorICAgIDB4NTc0MiwgMHg1NzQyLCAweDFENDMsIDB4NTc0NywgMHg1NzQ3LCAweDBGQUEsIDB4NTc0QSwgMHg1NzRBLCAweDEzNEYsDQorICAgIDB4NTc0RCwgMHg1NzRELCAweDEwN0EsIDB4NTc0RSwgMHg1NzRFLCAweDBEQjcsIDB4NTc1MCwgMHg1NzUwLCAweDFBQzcsDQorICAgIDB4NTc1MSwgMHg1NzUxLCAweDBERkQsIDB4NTc2MSwgMHg1NzYxLCAweDFEMzIsIDB4NTc2NCwgMHg1NzY0LCAweDBFQkYsDQorICAgIDB4NTc2NiwgMHg1NzY2LCAweDFDRjIsIDB4NTc2QSwgMHg1NzZBLCAweDFENjksIDB4NTc2RSwgMHg1NzZFLCAweDEwOUMsDQorICAgIDB4NTc3MCwgMHg1NzcwLCAweDBFNTQsIDB4NTc3NSwgMHg1Nzc1LCAweDBGNDEsIDB4NTc3QywgMHg1NzdDLCAweDFDRTUsDQorICAgIDB4NTc4MiwgMHg1NzgyLCAweDE1QzMsIDB4NTc4OCwgMHg1Nzg4LCAweDEwOUIsIDB4NTc4QiwgMHg1NzhCLCAweDFFNUUsDQorICAgIDB4NTc5MywgMHg1NzkzLCAweDFFMDgsIDB4NTdBMCwgMHg1N0EwLCAweDE4RTUsIDB4NTdBMiwgMHg1N0EyLCAweDBGNDIsDQorICAgIDB4NTdBMywgMHg1N0EzLCAweDE4NzQsIDB4NTdDMywgMHg1N0MzLCAweDE2RDIsIDB4NTdDNywgMHg1N0M3LCAweDE4MjIsDQorICAgIDB4NTdDOCwgMHg1N0M4LCAweDFBRjksIDB4NTdDQiwgMHg1N0NCLCAweDEyNjQsIDB4NTdDRSwgMHg1N0NFLCAweDE1NjIsDQorICAgIDB4NTdERiwgMHg1N0RGLCAweDE3M0MsIDB4NTdFMCwgMHg1N0UwLCAweDEzRkQsIDB4NTdGMCwgMHg1N0YwLCAweDFCQ0IsDQorICAgIDB4NTdGNCwgMHg1N0Y0LCAweDE2NTgsIDB4NTdGNywgMHg1N0Y3LCAweDFCNzgsIDB4NTdGOSwgMHg1N0Y5LCAweDEzNkIsDQorICAgIDB4NTdGQSwgMHg1N0ZBLCAweDBGRTUsIDB4NTdGQywgMHg1N0ZDLCAweDBGRTYsIDB4NTgwMCwgMHg1ODAwLCAweDBGNzcsDQorICAgIDB4NTgwMiwgMHg1ODAyLCAweDEwOTAsIDB4NTgwNSwgMHg1ODA1LCAweDBFMzUsIDB4NTgwNiwgMHg1ODA2LCAweDFEMjMsDQorICAgIDB4NTgwOCwgMHg1ODA4LCAweDBERDEsIDB4NTgwOSwgMHg1ODA5LCAweDE4RDMsIDB4NTgwQSwgMHg1ODBBLCAweDE2QTEsDQorICAgIDB4NTgxRSwgMHg1ODFFLCAweDFDMTMsIDB4NTgyMSwgMHg1ODIxLCAweDEzQzMsIDB4NTgyNCwgMHg1ODI0LCAweDFBNkEsDQorICAgIDB4NTgyNywgMHg1ODI3LCAweDE3NDUsIDB4NTgyQSwgMHg1ODJBLCAweDBEQjgsIDB4NTgyRiwgMHg1ODJGLCAweDE3RkUsDQorICAgIDB4NTgzMCwgMHg1ODMwLCAweDE3MUUsIDB4NTgzMSwgMHg1ODMxLCAweDEzQzQsIDB4NTgzNCwgMHg1ODM0LCAweDE5ODksDQorICAgIDB4NTgzNSwgMHg1ODM1LCAweDEwQjEsIDB4NTgzQSwgMHg1ODNBLCAweDBFN0IsIDB4NTg0QSwgMHg1ODRBLCAweDBGMTEsDQorICAgIDB4NTg0QiwgMHg1ODRCLCAweDE3NzIsIDB4NTg0RiwgMHg1ODRGLCAweDBERUMsIDB4NTg1MSwgMHg1ODUxLCAweDE1N0UsDQorICAgIDB4NTg1NCwgMHg1ODU0LCAweDFEMDAsIDB4NTg1NywgMHg1ODU3LCAweDEwQjIsIDB4NTg1OCwgMHg1ODU4LCAweDEwOTEsDQorICAgIDB4NTg1QSwgMHg1ODVBLCAweDFDNTQsIDB4NTg1RSwgMHg1ODVFLCAweDE0RjIsIDB4NTg2MSwgMHg1ODYxLCAweDE5RkEsDQorICAgIDB4NTg2MiwgMHg1ODYyLCAweDE3QTksIDB4NTg2NCwgMHg1ODY0LCAweDFGMkQsIDB4NTg3NSwgMHg1ODc1LCAweDFCNDYsDQorICAgIDB4NTg3OSwgMHg1ODc5LCAweDFCQUMsIDB4NTg3QywgMHg1ODdDLCAweDE5RkIsIDB4NTg3RSwgMHg1ODdFLCAweDE1RkQsDQorICAgIDB4NTg4MywgMHg1ODgzLCAweDBFNTUsIDB4NTg4NSwgMHg1ODg1LCAweDE0RkQsIDB4NTg4OSwgMHg1ODg5LCAweDE4MjMsDQorICAgIDB4NTg5MywgMHg1ODkzLCAweDEyQzEsIDB4NTg5QywgMHg1ODlDLCAweDFDNjEsIDB4NTg5RSwgMHg1ODlFLCAweDFCMTMsDQorICAgIDB4NTg5RiwgMHg1ODlGLCAweDFFMjgsIDB4NThBOCwgMHg1OEE4LCAweDEyRTIsIDB4NThBOSwgMHg1OEE5LCAweDEwREYsDQorICAgIDB4NThBRSwgMHg1OEFFLCAweDFDRDcsIDB4NThCMywgMHg1OEIzLCAweDE0MjMsIDB4NThCQSwgMHg1OEJBLCAweDE3QUEsDQorICAgIDB4NThCQiwgMHg1OEJCLCAweDE5OEEsIDB4NThCRSwgMHg1OEJFLCAweDBEOTYsIDB4NThDMSwgMHg1OEMxLCAweDEzOUUsDQorICAgIDB4NThDNSwgMHg1OEM1LCAweDE3Q0EsIDB4NThDNywgMHg1OEM3LCAweDEwNjUsIDB4NThDRSwgMHg1OENFLCAweDFGMkUsDQorICAgIDB4NThEMSwgMHg1OEQxLCAweDFEQ0UsIDB4NThEMywgMHg1OEQzLCAweDE2QzUsIDB4NThENSwgMHg1OEQ1LCAweDFFN0IsDQorICAgIDB4NThEOCwgMHg1OEQ4LCAweDExRDQsIDB4NThEOSwgMHg1OEQ5LCAweDBGMDIsIDB4NThERSwgMHg1OERFLCAweDBGMTIsDQorICAgIDB4NThERiwgMHg1OERGLCAweDExQjgsIDB4NThFNCwgMHg1OEU0LCAweDE2RjgsIDB4NThFQiwgMHg1OEVCLCAweDE0ODcsDQorICAgIDB4NThFQywgMHg1OEVDLCAweDE5NDYsIDB4NThFRiwgMHg1OEVGLCAweDE5OEIsIDB4NThGOSwgMHg1OEY5LCAweDE5M0YsDQorICAgIDB4NThGQSwgMHg1OEZBLCAweDFFN0MsIDB4NThGQiwgMHg1OEZCLCAweDE0RkUsIDB4NThGRCwgMHg1OEZELCAweDE1QzQsDQorICAgIDB4NTkwRiwgMHg1OTBGLCAweDFEQzMsIDB4NTkxNCwgMHg1OTE0LCAweDBGRTcsIDB4NTkxNSwgMHg1OTE1LCAweDE1MUIsDQorICAgIDB4NTkxNiwgMHg1OTE2LCAweDE3RjcsIDB4NTkxOSwgMHg1OTE5LCAweDE1RkUsIDB4NTkxQSwgMHg1OTFBLCAweDEwNUUsDQorICAgIDB4NTkxQywgMHg1OTFDLCAweDE2RTksIDB4NTkyMiwgMHg1OTIyLCAweDEyQkQsIDB4NTkyNywgMHg1OTI3LCAweDEwOUQsDQorICAgIDB4NTkyOSwgMHg1OTI5LCAweDFCRUYsIDB4NTkyQSwgMHg1OTJBLCAweDFEMDksIDB4NTkyQiwgMHg1OTJCLCAweDEzRkUsDQorICAgIDB4NTkyRCwgMHg1OTJELCAweDE3RkYsIDB4NTkyRSwgMHg1OTJFLCAweDE2Q0EsIDB4NTkzMSwgMHg1OTMxLCAweDE2N0UsDQorICAgIDB4NTkzNywgMHg1OTM3LCAweDE5MTAsIDB4NTkzRSwgMHg1OTNFLCAweDFFNTEsIDB4NTk0NCwgMHg1OTQ0LCAweDE3MjgsDQorICAgIDB4NTk0NywgMHg1OTQ3LCAweDBGRTgsIDB4NTk0OCwgMHg1OTQ4LCAweDEwM0MsIDB4NTk0OSwgMHg1OTQ5LCAweDEzRTYsDQorICAgIDB4NTk0RSwgMHg1OTRFLCAweDBGOUMsIDB4NTk0RiwgMHg1OTRGLCAweDFBRDUsIDB4NTk1MCwgMHg1OTUwLCAweDFFQ0MsDQorICAgIDB4NTk1MSwgMHg1OTUxLCAweDBFN0MsIDB4NTk1NCwgMHg1OTU0LCAweDE0MjQsIDB4NTk1NSwgMHg1OTU1LCAweDFFMzIsDQorICAgIDB4NTk1NywgMHg1OTU3LCAweDFEMkEsIDB4NTk1QSwgMHg1OTVBLCAweDFFMDksIDB4NTk2MCwgMHg1OTYwLCAweDE5RkMsDQorICAgIDB4NTk2MiwgMHg1OTYyLCAweDE0ODgsIDB4NTk2NywgMHg1OTY3LCAweDE3QUIsIDB4NTk2QSwgMHg1OTZBLCAweDFDRkEsDQorICAgIDB4NTk2QiwgMHg1OTZCLCAweDE4RDgsIDB4NTk2QywgMHg1OTZDLCAweDE5OEMsIDB4NTk2RCwgMHg1OTZELCAweDE1MUMsDQorICAgIDB4NTk2RSwgMHg1OTZFLCAweDE0MjUsIDB4NTk3MywgMHg1OTczLCAweDEwM0YsIDB4NTk3NCwgMHg1OTc0LCAweDEwNEEsDQorICAgIDB4NTk3OCwgMHg1OTc4LCAweDBEOTcsIDB4NTk3RCwgMHg1OTdELCAweDFFN0QsIDB4NTk4MiwgMHg1OTgyLCAweDE3MzAsDQorICAgIDB4NTk4MywgMHg1OTgzLCAweDE0NDIsIDB4NTk4NCwgMHg1OTg0LCAweDEyNTksIDB4NTk4QSwgMHg1OThBLCAweDE5NDcsDQorICAgIDB4NTk5MywgMHg1OTkzLCAweDBGRTksIDB4NTk5NiwgMHg1OTk2LCAweDE4MDAsIDB4NTk5NywgMHg1OTk3LCAweDBGQzcsDQorICAgIDB4NTk5OSwgMHg1OTk5LCAweDEyQzIsIDB4NTlBNSwgMHg1OUE1LCAweDFDRDgsIDB4NTlBOCwgMHg1OUE4LCAweDEzNTAsDQorICAgIDB4NTlBQywgMHg1OUFDLCAweDFEMkIsIDB4NTlCOSwgMHg1OUI5LCAweDEyNjUsIDB4NTlCQiwgMHg1OUJCLCAweDFCREIsDQorICAgIDB4NTlCRSwgMHg1OUJFLCAweDFDMTQsIDB4NTlDMywgMHg1OUMzLCAweDFBMzYsIDB4NTlDNiwgMHg1OUM2LCAweDEyOUYsDQorICAgIDB4NTlDOSwgMHg1OUM5LCAweDE5NTYsIDB4NTlDQiwgMHg1OUNCLCAweDE2M0YsIDB4NTlEMCwgMHg1OUQwLCAweDE5QzMsDQorICAgIDB4NTlEMSwgMHg1OUQxLCAweDBFOTYsIDB4NTlEMywgMHg1OUQzLCAweDE1NjMsIDB4NTlENCwgMHg1OUQ0LCAweDE4OTEsDQorICAgIDB4NTlEOSwgMHg1OUQ5LCAweDE5NDgsIDB4NTlEQSwgMHg1OURBLCAweDE4MDEsIDB4NTlEQywgMHg1OURDLCAweDBERDIsDQorICAgIDB4NTlERCwgMHg1OURELCAweDFBRDAsIDB4NTlFNiwgMHg1OUU2LCAweDBEOTgsIDB4NTlFOCwgMHg1OUU4LCAweDE5MTEsDQorICAgIDB4NTlFQSwgMHg1OUVBLCAweDFCNjksIDB4NTlFQywgMHg1OUVDLCAweDFGNjgsIDB4NTlFRSwgMHg1OUVFLCAweDFERjgsDQorICAgIDB4NTlGOCwgMHg1OUY4LCAweDE3NDYsIDB4NTlGQiwgMHg1OUZCLCAweDE5MzEsIDB4NTlGRiwgMHg1OUZGLCAweDE5NTcsDQorICAgIDB4NUEwMSwgMHg1QTAxLCAweDE4OTIsIDB4NUEwMywgMHg1QTAzLCAweDE3RjQsIDB4NUExMSwgMHg1QTExLCAweDE0ODksDQorICAgIDB4NUExOCwgMHg1QTE4LCAweDEwMzksIDB4NUExQiwgMHg1QTFCLCAweDE3QUMsIDB4NUExQywgMHg1QTFDLCAweDEwMjYsDQorICAgIDB4NUExRiwgMHg1QTFGLCAweDE3NDcsIDB4NUEyMCwgMHg1QTIwLCAweDE2NkIsIDB4NUEyNSwgMHg1QTI1LCAweDE2OTMsDQorICAgIDB4NUEyOSwgMHg1QTI5LCAweDEyNDAsIDB4NUEzNiwgMHg1QTM2LCAweDFDOTcsIDB4NUEzQywgMHg1QTNDLCAweDFCQjgsDQorICAgIDB4NUE0MSwgMHg1QTQxLCAweDExRDUsIDB4NUE0NiwgMHg1QTQ2LCAweDFEMzMsIDB4NUE0OSwgMHg1QTQ5LCAweDE3REIsDQorICAgIDB4NUE1QSwgMHg1QTVBLCAweDFFQTQsIDB4NUE2MiwgMHg1QTYyLCAweDE0NDMsIDB4NUE2NiwgMHg1QTY2LCAweDEzRkYsDQorICAgIDB4NUE5MiwgMHg1QTkyLCAweDEyNjYsIDB4NUE5QSwgMHg1QTlBLCAweDEyRjQsIDB4NUE5QiwgMHg1QTlCLCAweDE4NzUsDQorICAgIDB4NUFBNCwgMHg1QUE0LCAweDE2NDAsIDB4NUFDMSwgMHg1QUMxLCAweDBENzUsIDB4NUFDMiwgMHg1QUMyLCAweDE1QzUsDQorICAgIDB4NUFDNCwgMHg1QUM0LCAweDE4NzYsIDB4NUFDOSwgMHg1QUM5LCAweDFCNkEsIDB4NUFDQywgMHg1QUNDLCAweDFFNEUsDQorICAgIDB4NUFFMSwgMHg1QUUxLCAweDE5REQsIDB4NUFFNiwgMHg1QUU2LCAweDFERjksIDB4NUFFOSwgMHg1QUU5LCAweDEwNTUsDQorICAgIDB4NUIwNSwgMHg1QjA1LCAweDFFQjksIDB4NUIwOSwgMHg1QjA5LCAweDFGNjksIDB4NUIwQiwgMHg1QjBCLCAweDE1MkUsDQorICAgIDB4NUIwQywgMHg1QjBDLCAweDBGMjAsIDB4NUIxNiwgMHg1QjE2LCAweDFENkYsIDB4NUIyQSwgMHg1QjJBLCAweDE0NjgsDQorICAgIDB4NUI0MCwgMHg1QjQwLCAweDE0REEsIDB4NUI0MywgMHg1QjQzLCAweDE2RjksIDB4NUI1MCwgMHg1QjUwLCAweDE5NTgsDQorICAgIDB4NUI1MSwgMHg1QjUxLCAweDFFNEEsIDB4NUI1NCwgMHg1QjU0LCAweDBFQ0UsIDB4NUI1NSwgMHg1QjU1LCAweDE5NTEsDQorICAgIDB4NUI1NywgMHg1QjU3LCAweDE5NTksIDB4NUI1OCwgMHg1QjU4LCAweDFBQjAsIDB4NUI1QSwgMHg1QjVBLCAweDE0MDAsDQorICAgIDB4NUI1QywgMHg1QjVDLCAweDE5NUEsIDB4NUI1RCwgMHg1QjVELCAweDFGMTMsIDB4NUI1RiwgMHg1QjVGLCAweDEyNzcsDQorICAgIDB4NUI2MywgMHg1QjYzLCAweDBFN0QsIDB4NUI2NCwgMHg1QjY0LCAweDBFOTcsIDB4NUI2OSwgMHg1QjY5LCAweDFFMEEsDQorICAgIDB4NUI2QiwgMHg1QjZCLCAweDE1QUEsIDB4NUI3MCwgMHg1QjcwLCAweDE1RkYsIDB4NUI3MSwgMHg1QjcxLCAweDE5N0EsDQorICAgIDB4NUI3NSwgMHg1Qjc1LCAweDE0MDEsIDB4NUI3OCwgMHg1Qjc4LCAweDFEQ0YsIDB4NUI3QSwgMHg1QjdBLCAweDE4QUIsDQorICAgIDB4NUI3QywgMHg1QjdDLCAweDE3MjMsIDB4NUI4NSwgMHg1Qjg1LCAweDEwQUEsIDB4NUI4NywgMHg1Qjg3LCAweDE4M0MsDQorICAgIDB4NUI4OCwgMHg1Qjg4LCAweDE1QzYsIDB4NUI4OSwgMHg1Qjg5LCAweDE2QUYsIDB4NUI4QiwgMHg1QjhCLCAweDE1QjEsDQorICAgIDB4NUI4QywgMHg1QjhDLCAweDE3REMsIDB4NUI4RiwgMHg1QjhGLCAweDBGMTgsIDB4NUI5MywgMHg1QjkzLCAweDEzRDYsDQorICAgIDB4NUI5NSwgMHg1Qjk1LCAweDFEMDMsIDB4NUI5NiwgMHg1Qjk2LCAweDFGMEUsIDB4NUI5NywgMHg1Qjk3LCAweDFBQjYsDQorICAgIDB4NUI5OCwgMHg1Qjk4LCAweDBFRUMsIDB4NUI5OSwgMHg1Qjk5LCAweDFBRDYsIDB4NUI5QSwgMHg1QjlBLCAweDFBMzcsDQorICAgIDB4NUI5QiwgMHg1QjlCLCAweDE3REQsIDB4NUI5QywgMHg1QjlDLCAweDE4RkQsIDB4NUJBMiwgMHg1QkEyLCAweDBERkMsDQorICAgIDB4NUJBMywgMHg1QkEzLCAweDE1MkYsIDB4NUJBNCwgMHg1QkE0LCAweDE2N0YsIDB4NUJBNSwgMHg1QkE1LCAweDE4QUMsDQorICAgIDB4NUJBNiwgMHg1QkE2LCAweDFFQ0QsIDB4NUJBQywgMHg1QkFDLCAweDE1NjQsIDB4NUJBRSwgMHg1QkFFLCAweDBGN0IsDQorICAgIDB4NUJCMCwgMHg1QkIwLCAweDE5QUQsIDB4NUJCMywgMHg1QkIzLCAweDFFMEIsIDB4NUJCNCwgMHg1QkI0LCAweDE3NDgsDQorICAgIDB4NUJCNSwgMHg1QkI1LCAweDE1N0YsIDB4NUJCNiwgMHg1QkI2LCAweDBENzYsIDB4NUJCOCwgMHg1QkI4LCAweDE2NkMsDQorICAgIDB4NUJCOSwgMHg1QkI5LCAweDE4MjQsIDB4NUJCRiwgMHg1QkJGLCAweDE2MDAsIDB4NUJDMCwgMHg1QkMwLCAweDFCQ0MsDQorICAgIDB4NUJDMiwgMHg1QkMyLCAweDE5REUsIDB4NUJDMywgMHg1QkMzLCAweDE4NzcsIDB4NUJDNCwgMHg1QkM0LCAweDBGRUEsDQorICAgIDB4NUJDNSwgMHg1QkM1LCAweDE5MzIsIDB4NUJDNiwgMHg1QkM2LCAweDEzMTMsIDB4NUJDNywgMHg1QkM3LCAweDBGNDMsDQorICAgIDB4NUJDQywgMHg1QkNDLCAweDE0MDIsIDB4NUJEMCwgMHg1QkQwLCAweDEyNjcsIDB4NUJEMiwgMHg1QkQyLCAweDFERDMsDQorICAgIDB4NUJEMywgMHg1QkQzLCAweDE4M0QsIDB4NUJENCwgMHg1QkQ0LCAweDE2NTksIDB4NUJENywgMHg1QkQ3LCAweDEwNDgsDQorICAgIDB4NUJERSwgMHg1QkRFLCAweDEyMzgsIDB4NUJERiwgMHg1QkRGLCAweDFCQTYsIDB4NUJFMSwgMHg1QkUxLCAweDBFREIsDQorICAgIDB4NUJFMiwgMHg1QkUyLCAweDFDQzgsIDB4NUJFNCwgMHg1QkU0LCAweDE3QUQsIDB4NUJFNSwgMHg1QkU1LCAweDE4MDIsDQorICAgIDB4NUJFNiwgMHg1QkU2LCAweDE2ODAsIDB4NUJFNywgMHg1QkU3LCAweDEwNDcsIDB4NUJFOCwgMHg1QkU4LCAweDFCQ0QsDQorICAgIDB4NUJFOSwgMHg1QkU5LCAweDE2ODIsIDB4NUJFQiwgMHg1QkVCLCAweDE0OEEsIDB4NUJFQywgMHg1QkVDLCAweDBFRUQsDQorICAgIDB4NUJFRSwgMHg1QkVFLCAweDExQzksIDB4NUJFRiwgMHg1QkVGLCAweDFBRkEsIDB4NUJGNSwgMHg1QkY1LCAweDFDNTUsDQorICAgIDB4NUJGNiwgMHg1QkY2LCAweDEzQzUsIDB4NUJGOCwgMHg1QkY4LCAweDFDNEYsIDB4NUJGQSwgMHg1QkZBLCAweDE0OEIsDQorICAgIDB4NUMwMSwgMHg1QzAxLCAweDEzRTcsIDB4NUMwNCwgMHg1QzA0LCAweDE0OEMsIDB4NUMwNywgMHg1QzA3LCAweDE5OEQsDQorICAgIDB4NUMwOCwgMHg1QzA4LCAweDE5RkQsIDB4NUMwOSwgMHg1QzA5LCAweDE4OTMsIDB4NUMwQSwgMHg1QzBBLCAweDFBQjEsDQorICAgIDB4NUMwQiwgMHg1QzBCLCAweDE2ODMsIDB4NUMwRCwgMHg1QzBELCAweDEwOUUsIDB4NUMwRSwgMHg1QzBFLCAweDEwQjMsDQorICAgIDB4NUMwRiwgMHg1QzBGLCAweDE1ODAsIDB4NUMxMSwgMHg1QzExLCAweDE1ODEsIDB4NUMxNiwgMHg1QzE2LCAweDFDMEEsDQorICAgIDB4NUMxOSwgMHg1QzE5LCAweDE0REIsIDB4NUMyNCwgMHg1QzI0LCAweDE4M0UsIDB4NUMyOCwgMHg1QzI4LCAweDEzNTEsDQorICAgIDB4NUMzMSwgMHg1QzMxLCAweDFDOTgsIDB4NUMzOCwgMHg1QzM4LCAweDE2NDEsIDB4NUMzOSwgMHg1QzM5LCAweDE4RDksDQorICAgIDB4NUMzQSwgMHg1QzNBLCAweDFCRTAsIDB4NUMzQiwgMHg1QzNCLCAweDBFOTgsIDB4NUMzQywgMHg1QzNDLCAweDEwNUEsDQorICAgIDB4NUMzRSwgMHg1QzNFLCAweDEyRjUsIDB4NUMzRiwgMHg1QzNGLCAweDEwNTQsIDB4NUM0MCwgMHg1QzQwLCAweDBGNkMsDQorICAgIDB4NUM0NSwgMHg1QzQ1LCAweDBFMDMsIDB4NUM0NiwgMHg1QzQ2LCAweDBFN0UsIDB4NUM0OCwgMHg1QzQ4LCAweDBGNzgsDQorICAgIDB4NUM0QiwgMHg1QzRCLCAweDE3QkUsIDB4NUM0RCwgMHg1QzRELCAweDE2NDMsIDB4NUM0RSwgMHg1QzRFLCAweDE2NDIsDQorICAgIDB4NUM1MSwgMHg1QzUxLCAweDE1NEIsIDB4NUM1NSwgMHg1QzU1LCAweDE5RkUsIDB4NUM1QiwgMHg1QzVCLCAweDEzQjQsDQorICAgIDB4NUM2MCwgMHg1QzYwLCAweDEwQjQsIDB4NUM2MiwgMHg1QzYyLCAweDExRDYsIDB4NUM2NCwgMHg1QzY0LCAweDFDQTcsDQorICAgIDB4NUM2NSwgMHg1QzY1LCAweDEyMEEsIDB4NUM2QywgMHg1QzZDLCAweDE1QTIsIDB4NUM2RiwgMHg1QzZGLCAweDExMDYsDQorICAgIDB4NUM3MSwgMHg1QzcxLCAweDE0QjksIDB4NUM3OSwgMHg1Qzc5LCAweDFGNTgsIDB4NUM5MCwgMHg1QzkwLCAweDBGRUIsDQorICAgIDB4NUM5MSwgMHg1QzkxLCAweDE5N0YsIDB4NUNBMSwgMHg1Q0ExLCAweDBERDMsIDB4NUNBOSwgMHg1Q0E5LCAweDE2QkUsDQorICAgIDB4NUNBQiwgMHg1Q0FCLCAweDE1QzcsIDB4NUNBQywgMHg1Q0FDLCAweDBEQ0IsIDB4NUNCMSwgMHg1Q0IxLCAweDEwOUYsDQorICAgIDB4NUNCMywgMHg1Q0IzLCAweDE2QTIsIDB4NUNCNSwgMHg1Q0I1LCAweDFFN0UsIDB4NUNCNywgMHg1Q0I3LCAweDEzMDYsDQorICAgIDB4NUNCOCwgMHg1Q0I4LCAweDE2QjAsIDB4NUNCQSwgMHg1Q0JBLCAweDExOEMsIDB4NUNCRSwgMHg1Q0JFLCAweDFBMjUsDQorICAgIDB4NUNDMCwgMHg1Q0MwLCAweDE1QzgsIDB4NUNEOSwgMHg1Q0Q5LCAweDFDQUIsIDB4NUNFMCwgMHg1Q0UwLCAweDE0REMsDQorICAgIDB4NUNFOCwgMHg1Q0U4LCAweDE2OTQsIDB4NUNFRiwgMHg1Q0YwLCAweDEzRTgsIDB4NUNGNCwgMHg1Q0Y0LCAweDFFMzcsDQorICAgIDB4NUNGNiwgMHg1Q0Y2LCAweDEwQjUsIDB4NUNGQiwgMHg1Q0ZCLCAweDFBRkIsIDB4NUNGRCwgMHg1Q0ZELCAweDFFNTIsDQorICAgIDB4NUQwNywgMHg1RDA3LCAweDE2MjcsIDB4NUQwRCwgMHg1RDBELCAweDExNDUsIDB4NUQwRSwgMHg1RDBFLCAweDBGRUMsDQorICAgIDB4NUQxMSwgMHg1RDExLCAweDBFQzAsIDB4NUQxNCwgMHg1RDE0LCAweDFDNUYsIDB4NUQxNiwgMHg1RDE2LCAweDE2RDMsDQorICAgIDB4NUQxNywgMHg1RDE3LCAweDBERDQsIDB4NUQxOSwgMHg1RDE5LCAweDExRjQsIDB4NUQyNywgMHg1RDI3LCAweDE2MjgsDQorICAgIDB4NUQyOSwgMHg1RDI5LCAweDE0MzcsIDB4NUQ0QiwgMHg1RDRCLCAweDEyRjYsIDB4NUQ0QywgMHg1RDRDLCAweDBEQjksDQorICAgIDB4NUQ1MCwgMHg1RDUwLCAweDExMkYsIDB4NUQ2OSwgMHg1RDY5LCAweDE2MjksIDB4NUQ2QywgMHg1RDZDLCAweDE3RjgsDQorICAgIDB4NUQ2RiwgMHg1RDZGLCAweDFCODYsIDB4NUQ4NywgMHg1RDg3LCAweDBGNDQsIDB4NUQ4QiwgMHg1RDhCLCAweDEwQjYsDQorICAgIDB4NUQ5RCwgMHg1RDlELCAweDExMEQsIDB4NURBMCwgMHg1REEwLCAweDBGMjEsIDB4NURBMiwgMHg1REEyLCAweDE4MDMsDQorICAgIDB4NURBQSwgMHg1REFBLCAweDE3MkIsIDB4NURCOCwgMHg1REI4LCAweDE3NzMsIDB4NURCQSwgMHg1REJBLCAweDExOEQsDQorICAgIDB4NURCQywgMHg1REJDLCAweDE0RkYsIDB4NURCRCwgMHg1REJELCAweDE2QTMsIDB4NURDRCwgMHg1RENELCAweDE3RjksDQorICAgIDB4NUREMiwgMHg1REQyLCAweDEyNDEsIDB4NURENiwgMHg1REQ2LCAweDE2QkYsIDB4NURERCwgMHg1RERELCAweDFCRjAsDQorICAgIDB4NURERSwgMHg1RERFLCAweDFBRDcsIDB4NURFMSwgMHg1REUxLCAweDE2MDgsIDB4NURFMiwgMHg1REUyLCAweDE1ODIsDQorICAgIDB4NURFNSwgMHg1REU1LCAweDBFQ0YsIDB4NURFNiwgMHg1REU2LCAweDFBQzgsIDB4NURFNywgMHg1REU3LCAweDBGMjIsDQorICAgIDB4NURFOCwgMHg1REU4LCAweDBFMDQsIDB4NURFQiwgMHg1REVCLCAweDEyQ0QsIDB4NURFRSwgMHg1REVFLCAweDFCODcsDQorICAgIDB4NURGMSwgMHg1REYxLCAweDBGRUQsIDB4NURGMiwgMHg1REYyLCAweDE5MTIsIDB4NURGMywgMHg1REYzLCAweDE0OEQsDQorICAgIDB4NURGNCwgMHg1REY0LCAweDFEMzQsIDB4NURGNywgMHg1REY3LCAweDFERkEsIDB4NURGRCwgMHg1REZELCAweDE1QUIsDQorICAgIDB4NURGRSwgMHg1REZFLCAweDBFMTQsIDB4NUUwMiwgMHg1RTAyLCAweDE2NDQsIDB4NUUwMywgMHg1RTAzLCAweDFEN0YsDQorICAgIDB4NUUwNiwgMHg1RTA2LCAweDEzOTIsIDB4NUUwQywgMHg1RTBDLCAweDFGNkEsIDB4NUUxMSwgMHg1RTExLCAweDFEMDQsDQorICAgIDB4NUUxNiwgMHg1RTE2LCAweDFDMTUsIDB4NUUxOSwgMHg1RTE5LCAweDFCNkIsIDB4NUUxQiwgMHg1RTFCLCAweDEzN0UsDQorICAgIDB4NUUxRCwgMHg1RTFELCAweDFBNkIsIDB4NUUyNSwgMHg1RTI1LCAweDE1QzksIDB4NUUyQiwgMHg1RTJCLCAweDE0OEUsDQorICAgIDB4NUUyRCwgMHg1RTJELCAweDE1MUQsIDB4NUUzMywgMHg1RTMzLCAweDE5OEUsIDB4NUUzNiwgMHg1RTM2LCAweDEwQTAsDQorICAgIDB4NUUzOCwgMHg1RTM4LCAweDE0REQsIDB4NUUzRCwgMHg1RTNELCAweDEyQTAsIDB4NUUzRiwgMHg1RTNGLCAweDFGMjUsDQorICAgIDB4NUU0MCwgMHg1RTQwLCAweDFBMzgsIDB4NUU0NCwgMHg1RTQ0LCAweDE2QTQsIDB4NUU0NSwgMHg1RTQ1LCAweDFEOTMsDQorICAgIDB4NUU0NywgMHg1RTQ3LCAweDEzNTIsIDB4NUU0QywgMHg1RTRDLCAweDFFRTEsIDB4NUU1NSwgMHg1RTU1LCAweDEyMzksDQorICAgIDB4NUU1RiwgMHg1RTVGLCAweDFDQUMsIDB4NUU2MSwgMHg1RTYxLCAweDEzODQsIDB4NUU2MiwgMHg1RTYyLCAweDEwOTIsDQorICAgIDB4NUU2MywgMHg1RTYzLCAweDFENzAsIDB4NUU3MiwgMHg1RTcyLCAweDBEOTksIDB4NUU3MywgMHg1RTczLCAweDFENkEsDQorICAgIDB4NUU3NCwgMHg1RTc0LCAweDEwNDAsIDB4NUU3NywgMHg1RTc3LCAweDEzQjUsIDB4NUU3OCwgMHg1RTc4LCAweDFFMUEsDQorICAgIDB4NUU3OSwgMHg1RTc5LCAweDBEOUEsIDB4NUU3QiwgMHg1RTdCLCAweDFFQ0UsIDB4NUU3QywgMHg1RTdELCAweDE4QUQsDQorICAgIDB4NUU3RSwgMHg1RTdFLCAweDBGRUUsIDB4NUU4NCwgMHg1RTg0LCAweDE5OEYsIDB4NUU4NywgMHg1RTg3LCAweDE0NDQsDQorICAgIDB4NUU4QSwgMHg1RThBLCAweDE0REUsIDB4NUU4RiwgMHg1RThGLCAweDE1MDAsIDB4NUU5NSwgMHg1RTk1LCAweDE5QzQsDQorICAgIDB4NUU5NywgMHg1RTk3LCAweDFBMjYsIDB4NUU5QSwgMHg1RTlBLCAweDBFNTYsIDB4NUU5QywgMHg1RTlDLCAweDE0MDMsDQorICAgIDB4NUVBMCwgMHg1RUEwLCAweDE0REYsIDB4NUVBNiwgMHg1RUE2LCAweDEwQjcsIDB4NUVBNywgMHg1RUE3LCAweDFBQzksDQorICAgIDB4NUVBQiwgMHg1RUFCLCAweDBFOTksIDB4NUVBRCwgMHg1RUFELCAweDFBMzksIDB4NUVCNSwgMHg1RUI1LCAweDE2QzAsDQorICAgIDB4NUVCNiwgMHg1RUI2LCAweDE1MDEsIDB4NUVCNywgMHg1RUI3LCAweDBERDUsIDB4NUVCOCwgMHg1RUI4LCAweDE4MjUsDQorICAgIDB4NUVCRSwgMHg1RUJFLCAweDE4QUYsIDB4NUVDMiwgMHg1RUMyLCAweDE0RTAsIDB4NUVDOCwgMHg1RUM4LCAweDFEQzQsDQorICAgIDB4NUVDOSwgMHg1RUM5LCAweDExODMsIDB4NUVDQSwgMHg1RUNBLCAweDExM0MsIDB4NUVEMCwgMHg1RUQwLCAweDBGNDUsDQorICAgIDB4NUVEMywgMHg1RUQzLCAweDBFRTcsIDB4NUVENiwgMHg1RUQ2LCAweDExQ0EsIDB4NUVEQSwgMHg1RURBLCAweDFBRDgsDQorICAgIDB4NUVEQiwgMHg1RURCLCAweDE5RkYsIDB4NUVERiwgMHg1RURGLCAweDEyQzMsIDB4NUVFMCwgMHg1RUUwLCAweDFCQjksDQorICAgIDB4NUVFMiwgMHg1RUUyLCAweDFENzEsIDB4NUVFMywgMHg1RUUzLCAweDBGMDMsIDB4NUVFQywgMHg1RUVDLCAweDExNUMsDQorICAgIDB4NUVGMywgMHg1RUYzLCAweDFDMUQsIDB4NUVGNiwgMHg1RUY2LCAweDE3NDksIDB4NUVGNywgMHg1RUY3LCAweDFBM0EsDQorICAgIDB4NUVGQSwgMHg1RUZBLCAweDBFMTUsIDB4NUVGQiwgMHg1RUZCLCAweDFFRkEsIDB4NUYwMSwgMHg1RjAxLCAweDEzQTgsDQorICAgIDB4NUYwNCwgMHg1RjA0LCAweDExQjksIDB4NUYwQSwgMHg1RjBBLCAweDFENzIsIDB4NUYwRiwgMHg1RjBGLCAweDE2NUEsDQorICAgIDB4NUYxMSwgMHg1RjExLCAweDE2NDUsIDB4NUYxMywgMHg1RjEzLCAweDBGN0MsIDB4NUYxNCwgMHg1RjE0LCAweDFBODMsDQorICAgIDB4NUYxNSwgMHg1RjE1LCAweDE5MzMsIDB4NUYxNywgMHg1RjE3LCAweDE0MzQsIDB4NUYxOCwgMHg1RjE4LCAweDFFQUUsDQorICAgIDB4NUYxQiwgMHg1RjFCLCAweDE5MTMsIDB4NUYxRiwgMHg1RjFGLCAweDFBNkMsIDB4NUYyNiwgMHg1RjI2LCAweDFFMzgsDQorICAgIDB4NUYyNywgMHg1RjI3LCAweDFFN0YsIDB4NUYyOSwgMHg1RjI5LCAweDEwNEIsIDB4NUYzMSwgMHg1RjMxLCAweDE2RjAsDQorICAgIDB4NUYzNSwgMHg1RjM1LCAweDE5OTAsIDB4NUYzQSwgMHg1RjNBLCAweDBERDYsIDB4NUYzQywgMHg1RjNDLCAweDFEQjUsDQorICAgIDB4NUY0OCwgMHg1RjQ4LCAweDFDRjMsIDB4NUY0QSwgMHg1RjRBLCAweDBERDcsIDB4NUY0QywgMHg1RjRDLCAweDEyRjcsDQorICAgIDB4NUY0RSwgMHg1RjRFLCAweDEyNDIsIDB4NUY1NiwgMHg1RjU2LCAweDEwNjYsIDB4NUY1NywgMHg1RjU3LCAweDFFNzAsDQorICAgIDB4NUY1OSwgMHg1RjU5LCAweDFGM0QsIDB4NUY1QiwgMHg1RjVCLCAweDE5MTQsIDB4NUY2MiwgMHg1RjYyLCAweDFFNUYsDQorICAgIDB4NUY2NiwgMHg1RjY2LCAweDE3MUYsIDB4NUY2NywgMHg1RjY3LCAweDE4NTYsIDB4NUY2OSwgMHg1RjY5LCAweDFCQ0UsDQorICAgIDB4NUY2QSwgMHg1RjZBLCAweDFEOUEsIDB4NUY2QiwgMHg1RjZCLCAweDFBODQsIDB4NUY2QywgMHg1RjZDLCAweDE0NjksDQorICAgIDB4NUY2RCwgMHg1RjZELCAweDFENTksIDB4NUY3MCwgMHg1RjcwLCAweDFCQkEsIDB4NUY3MSwgMHg1RjcxLCAweDE3NzQsDQorICAgIDB4NUY3NywgMHg1Rjc3LCAweDEzNTMsIDB4NUY3OSwgMHg1Rjc5LCAweDE3M0QsIDB4NUY3QywgMHg1RjdDLCAweDFEQUQsDQorICAgIDB4NUY3RiwgMHg1RjdGLCAweDE0MzUsIDB4NUY4MCwgMHg1RjgwLCAweDE3RUUsIDB4NUY4MSwgMHg1RjgxLCAweDFBM0IsDQorICAgIDB4NUY4NSwgMHg1Rjg1LCAweDEwQTEsIDB4NUY4NywgMHg1Rjg3LCAweDE2MDksIDB4NUY4QSwgMHg1RjhBLCAweDFFRkIsDQorICAgIDB4NUY4QiwgMHg1RjhCLCAweDExRjgsIDB4NUY4QywgMHg1RjhDLCAweDFGMjYsIDB4NUY5MCwgMHg1RjkwLCAweDE1MDIsDQorICAgIDB4NUY5MSwgMHg1RjkxLCAweDBFNTcsIDB4NUY5MiwgMHg1RjkyLCAweDEwQjgsIDB4NUY5NywgMHg1Rjk3LCAweDExMEMsDQorICAgIDB4NUY5OCwgMHg1Rjk4LCAweDEzNkMsIDB4NUY5OSwgMHg1Rjk5LCAweDE0OEYsIDB4NUY5RSwgMHg1RjlFLCAweDFBQjcsDQorICAgIDB4NUZBMCwgMHg1RkEwLCAweDExNDYsIDB4NUZBMSwgMHg1RkExLCAweDE3MEYsIDB4NUZBOCwgMHg1RkE4LCAweDFFRTIsDQorICAgIDB4NUZBOSwgMHg1RkE5LCAweDEzRDcsIDB4NUZBQSwgMHg1RkFBLCAweDE2MEEsIDB4NUZBRSwgMHg1RkFFLCAweDEyRjgsDQorICAgIDB4NUZCNSwgMHg1RkI1LCAweDFCN0UsIDB4NUZCNywgMHg1RkI3LCAweDEwQUIsIDB4NUZCOSwgMHg1RkI5LCAweDFDMDIsDQorICAgIDB4NUZCRCwgMHg1RkJELCAweDFGM0UsIDB4NUZDMywgMHg1RkMzLCAweDE2ODQsIDB4NUZDNSwgMHg1RkM1LCAweDFEQjYsDQorICAgIDB4NUZDQywgMHg1RkNDLCAweDBGRUYsIDB4NUZDRCwgMHg1RkNELCAweDE5MzQsIDB4NUZENiwgMHg1RkQ2LCAweDFDNTAsDQorICAgIDB4NUZENywgMHg1RkQ3LCAweDFCMjMsIDB4NUZEOCwgMHg1RkQ5LCAweDEyNUEsIDB4NUZFMCwgMHg1RkUwLCAweDFDOEIsDQorICAgIDB4NUZFQiwgMHg1RkVCLCAweDFDRDMsIDB4NUZGNSwgMHg1RkY1LCAweDEwNDMsIDB4NUZGRCwgMHg1RkZELCAweDFFQUEsDQorICAgIDB4NUZGRiwgMHg1RkZGLCAweDE0MjYsIDB4NjAwRiwgMHg2MDBGLCAweDE2Q0IsIDB4NjAxMiwgMHg2MDEyLCAweDEwNEMsDQorICAgIDB4NjAxNiwgMHg2MDE2LCAweDFEODAsIDB4NjAxQywgMHg2MDFDLCAweDExOEUsIDB4NjAxRCwgMHg2MDFELCAweDE0OTAsDQorICAgIDB4NjAyMCwgMHg2MDIwLCAweDFEMEEsIDB4NjAyMSwgMHg2MDIxLCAweDE5MTUsIDB4NjAyNSwgMHg2MDI1LCAweDBGRDUsDQorICAgIDB4NjAyNywgMHg2MDI3LCAweDE1NjUsIDB4NjAyOCwgMHg2MDI4LCAweDE4NzgsIDB4NjAyQSwgMHg2MDJBLCAweDBGMTMsDQorICAgIDB4NjAyRiwgMHg2MDJGLCAweDBFMjksIDB4NjA0MSwgMHg2MDQxLCAweDE5NDksIDB4NjA0MiwgMHg2MDQyLCAweDE2MEIsDQorICAgIDB4NjA0MywgMHg2MDQzLCAweDE2NDYsIDB4NjA0RCwgMHg2MDRELCAweDFFRTMsIDB4NjA1MCwgMHg2MDUwLCAweDBFRDAsDQorICAgIDB4NjA1MiwgMHg2MDUyLCAweDFERkIsIDB4NjA1NSwgMHg2MDU1LCAweDE1MDMsIDB4NjA1OSwgMHg2MDU5LCAweDE2RkEsDQorICAgIDB4NjA1RCwgMHg2MDVELCAweDBFRkMsIDB4NjA2MiwgMHg2MDYyLCAweDFFRkMsIDB4NjA2MywgMHg2MDYzLCAweDE5NUIsDQorICAgIDB4NjA2NCwgMHg2MDY0LCAweDFGNEEsIDB4NjA2NSwgMHg2MDY1LCAweDFDQUQsIDB4NjA2OCwgMHg2MDY4LCAweDFERDQsDQorICAgIDB4NjA2OSwgMHg2MDY5LCAweDE4RTYsIDB4NjA2QSwgMHg2MDZBLCAweDBEOEMsIDB4NjA2QywgMHg2MDZDLCAweDEwNDQsDQorICAgIDB4NjA2RCwgMHg2MDZELCAweDBFRDEsIDB4NjA2RiwgMHg2MDZGLCAweDE2NUIsIDB4NjA3MCwgMHg2MDcwLCAweDFGNUYsDQorICAgIDB4NjA4NSwgMHg2MDg1LCAweDE3NjEsIDB4NjA4OSwgMHg2MDg5LCAweDE2ODEsIDB4NjA4QywgMHg2MDhDLCAweDFBNkQsDQorICAgIDB4NjA4RCwgMHg2MDhELCAweDFERDUsIDB4NjA5NCwgMHg2MDk0LCAweDFFRkQsIDB4NjA5NiwgMHg2MDk2LCAweDFENTAsDQorICAgIDB4NjA5QSwgMHg2MDlBLCAweDE1QjIsIDB4NjA5QiwgMHg2MDlCLCAweDFBMDAsIDB4NjA5RiwgMHg2MDlGLCAweDE3QUUsDQorICAgIDB4NjBBMCwgMHg2MEEwLCAweDE4QjAsIDB4NjBBMywgMHg2MEEzLCAweDFFQ0YsIDB4NjBBNCwgMHg2MEE0LCAweDFDNTYsDQorICAgIDB4NjBBNywgMHg2MEE3LCAweDEyMEIsIDB4NjBCMCwgMHg2MEIwLCAweDFBQjgsIDB4NjBCMiwgMHg2MEIyLCAweDE0NDUsDQorICAgIDB4NjBCMywgMHg2MEIzLCAweDEwQUMsIDB4NjBCNCwgMHg2MEI0LCAweDFDOTAsIDB4NjBCNiwgMHg2MEI2LCAweDEzMDcsDQorICAgIDB4NjBCOCwgMHg2MEI4LCAweDBFN0YsIDB4NjBCQywgMHg2MEJDLCAweDEwQjksIDB4NjBCRCwgMHg2MEJELCAweDFCREMsDQorICAgIDB4NjBDNSwgMHg2MEM1LCAweDFBM0MsIDB4NjBDNywgMHg2MEM3LCAweDEwRTAsIDB4NjBEMSwgMHg2MEQxLCAweDFFQTEsDQorICAgIDB4NjBEQSwgMHg2MERBLCAweDFFQUIsIDB4NjBEQywgMHg2MERDLCAweDE1MUUsIDB4NjBERiwgMHg2MERGLCAweDE4QjEsDQorICAgIDB4NjBFMCwgMHg2MEUwLCAweDFFNzEsIDB4NjBFMSwgMHg2MEUxLCAweDE2QTUsIDB4NjBGMCwgMHg2MEYwLCAweDFDRDksDQorICAgIDB4NjBGMSwgMHg2MEYxLCAweDEwNTIsIDB4NjBGMywgMHg2MEYzLCAweDE0RTEsIDB4NjBGNiwgMHg2MEY2LCAweDFFRTQsDQorICAgIDB4NjBGOSwgMHg2MEY5LCAweDE2RUEsIDB4NjBGQSwgMHg2MEZBLCAweDE1NjYsIDB4NjBGQiwgMHg2MEZCLCAweDFDQTUsDQorICAgIDB4NjEwMSwgMHg2MTAxLCAweDE1Q0EsIDB4NjEwNiwgMHg2MTA2LCAweDBFMTYsIDB4NjEwOCwgMHg2MTA5LCAweDE4QjIsDQorICAgIDB4NjEwRCwgMHg2MTBELCAweDEzMDgsIDB4NjEwRSwgMHg2MTBFLCAweDFENUQsIDB4NjEwRiwgMHg2MTBGLCAweDE4RkUsDQorICAgIDB4NjExNSwgMHg2MTE1LCAweDE2QTYsIDB4NjExQSwgMHg2MTFBLCAweDE4M0YsIDB4NjExQiwgMHg2MTFCLCAweDE2RDQsDQorICAgIDB4NjExRiwgMHg2MTFGLCAweDBEQkEsIDB4NjEyNywgMHg2MTI3LCAweDBGMTQsIDB4NjEzMCwgMHg2MTMwLCAweDFFRTUsDQorICAgIDB4NjEzNCwgMHg2MTM0LCAweDFCQkIsIDB4NjEzNywgMHg2MTM3LCAweDBERUQsIDB4NjEzQywgMHg2MTNDLCAweDE2NkQsDQorICAgIDB4NjEzRSwgMHg2MTNFLCAweDBERUUsIDB4NjEzRiwgMHg2MTNGLCAweDE4NzksIDB4NjE0MiwgMHg2MTQyLCAweDE4MjYsDQorICAgIDB4NjE0NCwgMHg2MTQ0LCAweDExRjksIDB4NjE0NywgMHg2MTQ3LCAweDE4RTcsIDB4NjE0OCwgMHg2MTQ4LCAweDE5NUMsDQorICAgIDB4NjE0QSwgMHg2MTRBLCAweDBFNDcsIDB4NjE0QiwgMHg2MTRCLCAweDFEMEIsIDB4NjE0QywgMHg2MTRDLCAweDFFRTYsDQorICAgIDB4NjE1MywgMHg2MTUzLCAweDFEOUIsIDB4NjE1NSwgMHg2MTU1LCAweDEyQTEsIDB4NjE1OCwgMHg2MTU5LCAweDFCQUQsDQorICAgIDB4NjE1RCwgMHg2MTVELCAweDFEMkYsIDB4NjE1RiwgMHg2MTVGLCAweDFEMUQsIDB4NjE2MiwgMHg2MTYyLCAweDEyNDMsDQorICAgIDB4NjE2MywgMHg2MTYzLCAweDBFRUUsIDB4NjE2NCwgMHg2MTY0LCAweDBEOEQsIDB4NjE2NywgMHg2MTY3LCAweDFFNzIsDQorICAgIDB4NjE2OCwgMHg2MTY4LCAweDBERUYsIDB4NjE2QiwgMHg2MTZCLCAweDFBQjksIDB4NjE2RSwgMHg2MTZFLCAweDExNUQsDQorICAgIDB4NjE3MCwgMHg2MTcwLCAweDE4OTQsIDB4NjE3NiwgMHg2MTc2LCAweDBFNTgsIDB4NjE3NywgMHg2MTc3LCAweDBERDgsDQorICAgIDB4NjE3RCwgMHg2MTdELCAweDFCRTEsIDB4NjE3RSwgMHg2MTdFLCAweDE4MTgsIDB4NjE4MSwgMHg2MTgxLCAweDFDNTcsDQorICAgIDB4NjE4MiwgMHg2MTgyLCAweDE4NDAsIDB4NjE4QSwgMHg2MThBLCAweDE0NDYsIDB4NjE4RSwgMHg2MThFLCAweDFCMTQsDQorICAgIDB4NjE5MCwgMHg2MTkwLCAweDExNzEsIDB4NjE5MSwgMHg2MTkxLCAweDE0NzUsIDB4NjE5NCwgMHg2MTk0LCAweDFDMzEsDQorICAgIDB4NjE5OCwgMHg2MTk4LCAweDFGNkMsIDB4NjE5OSwgMHg2MTk5LCAweDFGNkIsIDB4NjE5QSwgMHg2MTlBLCAweDFDRjQsDQorICAgIDB4NjFBNCwgMHg2MUE0LCAweDE0MjcsIDB4NjFBNywgMHg2MUE3LCAweDEwRjAsIDB4NjFBOSwgMHg2MUE5LCAweDBFMkMsDQorICAgIDB4NjFBQiwgMHg2MUFCLCAweDEzMDksIDB4NjFBQywgMHg2MUFDLCAweDBFNTksIDB4NjFBRSwgMHg2MUFFLCAweDEyQ0UsDQorICAgIDB4NjFCMiwgMHg2MUIyLCAweDFFMkIsIDB4NjFCNiwgMHg2MUI2LCAweDE3MTksIDB4NjFCQSwgMHg2MUJBLCAweDEwN0IsDQorICAgIDB4NjFCRSwgMHg2MUJFLCAweDBEQkIsIDB4NjFDMywgMHg2MUMzLCAweDBGQkEsIDB4NjFDNywgMHg2MUM3LCAweDBEOUIsDQorICAgIDB4NjFDOCwgMHg2MUM4LCAweDFFMEMsIDB4NjFDOSwgMHg2MUM5LCAweDE4RjcsIDB4NjFDQSwgMHg2MUNBLCAweDE3QUYsDQorICAgIDB4NjFDQiwgMHg2MUNCLCAweDEyQ0YsIDB4NjFFNiwgMHg2MUU2LCAweDEwMjcsIDB4NjFGMiwgMHg2MUYyLCAweDFCN0YsDQorICAgIDB4NjFGNiwgMHg2MUY2LCAweDExMTcsIDB4NjFGNywgMHg2MUY3LCAweDFFRkUsIDB4NjFGOCwgMHg2MUY4LCAweDFFMzksDQorICAgIDB4NjFGQSwgMHg2MUZBLCAweDFCQUYsIDB4NjFGQywgMHg2MUZDLCAweDBGNDYsIDB4NjFGRiwgMHg2MUZGLCAweDE4RkYsDQorICAgIDB4NjIwMCwgMHg2MjAwLCAweDExNzIsIDB4NjIwNywgMHg2MjA3LCAweDEwOTMsIDB4NjIwOCwgMHg2MjA4LCAweDBFREMsDQorICAgIDB4NjIwQSwgMHg2MjBBLCAweDEyRDAsIDB4NjIwQywgMHg2MjBDLCAweDE2MjMsIDB4NjIwRCwgMHg2MjBELCAweDE1Q0IsDQorICAgIDB4NjIwRSwgMHg2MjBFLCAweDE4RTEsIDB4NjIxMCwgMHg2MjEwLCAweDE1NjcsIDB4NjIxMSwgMHg2MjExLCAweDE2OTUsDQorICAgIDB4NjIxMiwgMHg2MjEyLCAweDBFODAsIDB4NjIxNiwgMHg2MjE2LCAweDFFQTIsIDB4NjIxQSwgMHg2MjFBLCAweDFCRTIsDQorICAgIDB4NjIxRiwgMHg2MjFGLCAweDBGQjMsIDB4NjIyMSwgMHg2MjIxLCAweDBEQkMsIDB4NjIyQSwgMHg2MjJBLCAweDFBMUQsDQorICAgIDB4NjIyRSwgMHg2MjJFLCAweDExRjAsIDB4NjIzMCwgMHg2MjMwLCAweDFBMDEsIDB4NjIzMSwgMHg2MjMxLCAweDFGNkQsDQorICAgIDB4NjIzNCwgMHg2MjM0LCAweDEwQTIsIDB4NjIzNiwgMHg2MjM2LCAweDFFODAsIDB4NjIzRSwgMHg2MjNFLCAweDExNUUsDQorICAgIDB4NjIzRiwgMHg2MjNGLCAweDEzNTQsIDB4NjI0MCwgMHg2MjQwLCAweDE1ODMsIDB4NjI0MSwgMHg2MjQxLCAweDFENjAsDQorICAgIDB4NjI0NywgMHg2MjQ3LCAweDE1MzAsIDB4NjI0OCwgMHg2MjQ4LCAweDFFODEsIDB4NjI0OSwgMHg2MjQ5LCAweDE0NDcsDQorICAgIDB4NjI0QiwgMHg2MjRCLCAweDE1Q0MsIDB4NjI0RCwgMHg2MjRELCAweDE5QUUsIDB4NjI1MywgMHg2MjUzLCAweDFDREEsDQorICAgIDB4NjI1OCwgMHg2MjU4LCAweDFDRTYsIDB4NjI2RSwgMHg2MjZFLCAweDE0MjgsIDB4NjI3MSwgMHg2MjcxLCAweDBGRDYsDQorICAgIDB4NjI3NiwgMHg2Mjc2LCAweDE0MDQsIDB4NjI3OSwgMHg2Mjc5LCAweDE0NDgsIDB4NjI3QywgMHg2MjdDLCAweDE2REMsDQorICAgIDB4NjI3RiwgMHg2MjdGLCAweDE2MzcsIDB4NjI4MCwgMHg2MjgwLCAweDBGRjAsIDB4NjI4NCwgMHg2Mjg0LCAweDFDMzIsDQorICAgIDB4NjI4OSwgMHg2Mjg5LCAweDBFNDAsIDB4NjI4QSwgMHg2MjhBLCAweDFEMzUsIDB4NjI5MSwgMHg2MjkxLCAweDE3MUEsDQorICAgIDB4NjI5MiwgMHg2MjkyLCAweDE1MDQsIDB4NjI5NSwgMHg2Mjk1LCAweDFEMkMsIDB4NjI5NywgMHg2Mjk3LCAweDFERkMsDQorICAgIDB4NjI5OCwgMHg2Mjk4LCAweDFBMUUsIDB4NjI5QiwgMHg2MjlCLCAweDFEODEsIDB4NjJBQiwgMHg2MkFCLCAweDFEQUUsDQorICAgIDB4NjJCMSwgMHg2MkIxLCAweDFEODIsIDB4NjJCNSwgMHg2MkI1LCAweDE5QzUsIDB4NjJCOSwgMHg2MkI5LCAweDEyNTIsDQorICAgIDB4NjJCQywgMHg2MkJDLCAweDE2QzYsIDB4NjJCRCwgMHg2MkJELCAweDFDNjIsIDB4NjJDMiwgMHg2MkMyLCAweDE0MzYsDQorICAgIDB4NjJDNywgMHg2MkM3LCAweDEyRDEsIDB4NjJDOCwgMHg2MkM4LCAweDEwNDUsIDB4NjJDOSwgMHg2MkM5LCAweDExMzksDQorICAgIDB4NjJDQywgMHg2MkNDLCAweDEzMkQsIDB4NjJDRCwgMHg2MkNELCAweDEzMTgsIDB4NjJDRiwgMHg2MkNGLCAweDEwMjgsDQorICAgIDB4NjJEMCwgMHg2MkQwLCAweDBGMTUsIDB4NjJEMiwgMHg2MkQyLCAweDBFMDUsIDB4NjJEMywgMHg2MkQzLCAweDFCRTMsDQorICAgIDB4NjJENCwgMHg2MkQ0LCAweDEzNDMsIDB4NjJENiwgMHg2MkQ2LCAweDFDREIsIDB4NjJENywgMHg2MkQ3LCAweDE4MDQsDQorICAgIDB4NjJEOCwgMHg2MkQ4LCAweDBGNDcsIDB4NjJEOSwgMHg2MkQ5LCAweDFBQjMsIDB4NjJEQiwgMHg2MkRCLCAweDFDMzMsDQorICAgIDB4NjJEQywgMHg2MkRDLCAweDEzNkQsIDB4NjJFQywgMHg2MkVDLCAweDBFRkQsIDB4NjJFRCwgMHg2MkVELCAweDE2NUMsDQorICAgIDB4NjJFRSwgMHg2MkVFLCAweDEwMjEsIDB4NjJFRiwgMHg2MkVGLCAweDFCMTYsIDB4NjJGMSwgMHg2MkYxLCAweDBFRDIsDQorICAgIDB4NjJGMywgMHg2MkYzLCAweDBGODYsIDB4NjJGNywgMHg2MkY3LCAweDBFOUEsIDB4NjJGRSwgMHg2MkZFLCAweDE2MkUsDQorICAgIDB4NjJGRiwgMHg2MkZGLCAweDEwMjksIDB4NjMwMSwgMHg2MzAxLCAweDFCMjQsIDB4NjMwNywgMHg2MzA3LCAweDFCMjUsDQorICAgIDB4NjMwOSwgMHg2MzA5LCAweDE2QjEsIDB4NjMxMSwgMHg2MzExLCAweDEwQkEsIDB4NjMyQiwgMHg2MzJCLCAweDFBQ0EsDQorICAgIDB4NjMyRiwgMHg2MzJGLCAweDFCNDcsIDB4NjMzQSwgMHg2MzNBLCAweDFBM0QsIDB4NjMzQiwgMHg2MzNCLCAweDE3NEIsDQorICAgIDB4NjMzRCwgMHg2MzNELCAweDEyNDQsIDB4NjMzRSwgMHg2MzNFLCAweDFFNTMsIDB4NjM0OSwgMHg2MzQ5LCAweDFCOEYsDQorICAgIDB4NjM0QywgMHg2MzRDLCAweDFENEQsIDB4NjM0RiwgMHg2MzRGLCAweDEwMkYsIDB4NjM1MCwgMHg2MzUwLCAweDE3NEEsDQorICAgIDB4NjM1NSwgMHg2MzU1LCAweDFEODMsIDB4NjM2NywgMHg2MzY3LCAweDEzRUEsIDB4NjM2OCwgMHg2MzY4LCAweDE0OTEsDQorICAgIDB4NjM2RSwgMHg2MzZFLCAweDBFMDYsIDB4NjM3MiwgMHg2MzcyLCAweDBGODcsIDB4NjM3NywgMHg2Mzc3LCAweDFDMTYsDQorICAgIDB4NjM3QSwgMHg2MzdBLCAweDEwMzAsIDB4NjM3QiwgMHg2MzdCLCAweDEwNDYsIDB4NjM3RiwgMHg2MzdGLCAweDE1MDUsDQorICAgIDB4NjM4MywgMHg2MzgzLCAweDE1ODQsIDB4NjM4OCwgMHg2Mzg4LCAweDE1Q0QsIDB4NjM4OSwgMHg2Mzg5LCAweDEwQkIsDQorICAgIDB4NjM4QywgMHg2MzhDLCAweDE5OTEsIDB4NjM5MiwgMHg2MzkyLCAweDEzNkUsIDB4NjM5NiwgMHg2Mzk2LCAweDE2REQsDQorICAgIDB4NjM5OCwgMHg2Mzk4LCAweDBGNzksIDB4NjM5QiwgMHg2MzlCLCAweDBGMEQsIDB4NjNBMCwgMHg2M0EwLCAweDExNDksDQorICAgIDB4NjNBMSwgMHg2M0ExLCAweDFCQ0YsIDB4NjNBMiwgMHg2M0EyLCAweDFDRkMsIDB4NjNBNSwgMHg2M0E1LCAweDFBMkQsDQorICAgIDB4NjNBNywgMHg2M0E3LCAweDBFRDMsIDB4NjNBOCwgMHg2M0E4LCAweDFDNjMsIDB4NjNBOSwgMHg2M0E5LCAweDE3MjksDQorICAgIDB4NjNBQSwgMHg2M0FBLCAweDFBODUsIDB4NjNDMCwgMHg2M0MwLCAweDBEOUMsIDB4NjNDNCwgMHg2M0M0LCAweDE4QjQsDQorICAgIDB4NjNDNiwgMHg2M0M2LCAweDBGOUQsIDB4NjNDRiwgMHg2M0NGLCAweDEyQzQsIDB4NjNEMCwgMHg2M0QwLCAweDFBNkUsDQorICAgIDB4NjNENiwgMHg2M0Q2LCAweDE4RjMsIDB4NjNEQSwgMHg2M0RBLCAweDE2RkIsIDB4NjNEQiwgMHg2M0RCLCAweDFFRDAsDQorICAgIDB4NjNFMSwgMHg2M0UxLCAweDE2QTcsIDB4NjNFRCwgMHg2M0VELCAweDBFMkQsIDB4NjNFRSwgMHg2M0VFLCAweDFGM0YsDQorICAgIDB4NjNGNCwgMHg2M0Y0LCAweDE4N0EsIDB4NjNGNiwgMHg2M0Y2LCAweDE2RUIsIDB4NjNGNywgMHg2M0Y3LCAweDE0Q0YsDQorICAgIDB4NjQwRCwgMHg2NDBELCAweDE1QUMsIDB4NjQwRiwgMHg2NDBGLCAweDEzMTksIDB4NjQxNCwgMHg2NDE0LCAweDE1ODUsDQorICAgIDB4NjQxNiwgMHg2NDE2LCAweDE4MDUsIDB4NjQxNywgMHg2NDE3LCAweDEwQkMsIDB4NjQxQywgMHg2NDFDLCAweDE1Q0UsDQorICAgIDB4NjQyMiwgMHg2NDIyLCAweDFCNDgsIDB4NjQyQywgMHg2NDJDLCAweDEzMkUsIDB4NjQyRCwgMHg2NDJELCAweDFEMDEsDQorICAgIDB4NjQzQSwgMHg2NDNBLCAweDFGNDYsIDB4NjQzRSwgMHg2NDNFLCAweDFCOTAsIDB4NjQ1OCwgMHg2NDU4LCAweDE5REYsDQorICAgIDB4NjQ2MCwgMHg2NDYwLCAweDFDNTgsIDB4NjQ2OSwgMHg2NDY5LCAweDEyMzAsIDB4NjQ2RiwgMHg2NDZGLCAweDFCMjYsDQorICAgIDB4NjQ3OCwgMHg2NDc5LCAweDEyQTIsIDB4NjQ3QSwgMHg2NDdBLCAweDFBMkUsIDB4NjQ4OCwgMHg2NDg4LCAweDExQTAsDQorICAgIDB4NjQ5MSwgMHg2NDkxLCAweDFEMTcsIDB4NjQ5MiwgMHg2NDkyLCAweDE0QzQsIDB4NjQ5MywgMHg2NDkzLCAweDE4MDYsDQorICAgIDB4NjQ5QSwgMHg2NDlBLCAweDEwNDEsIDB4NjQ5RSwgMHg2NDlFLCAweDEwOTQsIDB4NjRBNCwgMHg2NEE0LCAweDFDMDMsDQorICAgIDB4NjRBNSwgMHg2NEE1LCAweDEzNDQsIDB4NjRBQiwgMHg2NEFCLCAweDEyRDIsIDB4NjRBRCwgMHg2NEFELCAweDFEMzYsDQorICAgIDB4NjRBRSwgMHg2NEFFLCAweDFDNUQsIDB4NjRCMCwgMHg2NEIwLCAweDFCOTYsIDB4NjRCMiwgMHg2NEIyLCAweDEzMUEsDQorICAgIDB4NjRCQiwgMHg2NEJCLCAweDEwNzQsIDB4NjRDMSwgMHg2NEMxLCAweDE3Q0IsIDB4NjRDNCwgMHg2NEM0LCAweDExQTEsDQorICAgIDB4NjRDNSwgMHg2NEM1LCAweDFCRjEsIDB4NjRDNywgMHg2NEM3LCAweDFEMTUsIDB4NjRDQSwgMHg2NENBLCAweDBFMkUsDQorICAgIDB4NjRDRCwgMHg2NENELCAweDFBODYsIDB4NjRDRSwgMHg2NENFLCAweDBFNUEsIDB4NjREMiwgMHg2NEQyLCAweDBGQzgsDQorICAgIDB4NjRENCwgMHg2NEQ0LCAweDEwN0MsIDB4NjREOCwgMHg2NEQ4LCAweDEzOUYsIDB4NjREQSwgMHg2NERBLCAweDBFMDcsDQorICAgIDB4NjRFMSwgMHg2NEUxLCAweDEwQTMsIDB4NjRFMiwgMHg2NEUyLCAweDFDRTcsIDB4NjRFNSwgMHg2NEU1LCAweDExMzAsDQorICAgIDB4NjRFNiwgMHg2NEU2LCAweDFCQTcsIDB4NjRFNywgMHg2NEU3LCAweDBFMDgsIDB4NjRFQywgMHg2NEVDLCAweDE5MDAsDQorICAgIDB4NjRGMiwgMHg2NEYyLCAweDFCRTQsIDB4NjRGNCwgMHg2NEY0LCAweDFFQzUsIDB4NjRGQSwgMHg2NEZBLCAweDFEMzcsDQorICAgIDB4NjRGRSwgMHg2NEZFLCAweDE4MDcsIDB4NjUwMCwgMHg2NTAwLCAweDEzMkYsIDB4NjUwNCwgMHg2NTA0LCAweDFEMTgsDQorICAgIDB4NjUxOCwgMHg2NTE4LCAweDE2RkMsIDB4NjUxRCwgMHg2NTFELCAweDE1NUYsIDB4NjUyMywgMHg2NTIzLCAweDExNzMsDQorICAgIDB4NjUyQSwgMHg2NTJBLCAweDBGMjMsIDB4NjUyQiwgMHg2NTJCLCAweDFFQzYsIDB4NjUyQywgMHg2NTJDLCAweDExMzEsDQorICAgIDB4NjUyRiwgMHg2NTJGLCAweDFCMjcsIDB4NjUzNiwgMHg2NTM2LCAweDE1Q0YsIDB4NjUzNywgMHg2NTM3LCAweDBFOUIsDQorICAgIDB4NjUzOCwgMHg2NTM4LCAweDE4QjUsIDB4NjUzOSwgMHg2NTM5LCAweDBERjAsIDB4NjUzQiwgMHg2NTNCLCAweDBFRDQsDQorICAgIDB4NjUzRSwgMHg2NTNFLCAweDEzNTUsIDB4NjUzRiwgMHg2NTNGLCAweDFBM0UsIDB4NjU0NSwgMHg2NTQ1LCAweDBFOUMsDQorICAgIDB4NjU0OCwgMHg2NTQ4LCAweDFGMTQsIDB4NjU0RCwgMHg2NTRELCAweDE1MDYsIDB4NjU0RSwgMHg2NTRFLCAweDBGMjQsDQorICAgIDB4NjU0RiwgMHg2NTRGLCAweDEzMEEsIDB4NjU1MSwgMHg2NTUxLCAweDBGNDgsIDB4NjU1NiwgMHg2NTU2LCAweDE3QjAsDQorICAgIDB4NjU1NywgMHg2NTU3LCAweDFENTEsIDB4NjU1RSwgMHg2NTVFLCAweDFCQkMsIDB4NjU2MiwgMHg2NTYyLCAweDBEQkQsDQorICAgIDB4NjU2MywgMHg2NTYzLCAweDE0QkEsIDB4NjU2NiwgMHg2NTY2LCAweDEwRTEsIDB4NjU2QywgMHg2NTZDLCAweDBFNUIsDQorICAgIDB4NjU2RCwgMHg2NTZELCAweDE2RkQsIDB4NjU3MiwgMHg2NTcyLCAweDBFOUQsIDB4NjU3NCwgMHg2NTc0LCAweDFBM0YsDQorICAgIDB4NjU3NSwgMHg2NTc1LCAweDE5RTAsIDB4NjU3NywgMHg2NTc3LCAweDE0MDUsIDB4NjU3OCwgMHg2NTc4LCAweDE1RDAsDQorICAgIDB4NjU3RSwgMHg2NTdFLCAweDE1MzEsIDB4NjU4MiwgMHg2NTgyLCAweDExODQsIDB4NjU4MywgMHg2NTgzLCAweDFENzMsDQorICAgIDB4NjU4NSwgMHg2NTg1LCAweDFGMTUsIDB4NjU4NywgMHg2NTg3LCAweDEyRTgsIDB4NjU4QywgMHg2NThDLCAweDE0NkEsDQorICAgIDB4NjU5MCwgMHg2NTkwLCAweDE0NDksIDB4NjU5MSwgMHg2NTkxLCAweDEzMzAsIDB4NjU5NywgMHg2NTk3LCAweDEwRkQsDQorICAgIDB4NjU5OSwgMHg2NTk5LCAweDExQ0IsIDB4NjU5QiwgMHg2NTlCLCAweDBFQjgsIDB4NjU5QywgMHg2NTlDLCAweDE0OTIsDQorICAgIDB4NjU5RiwgMHg2NTlGLCAweDFCNzYsIDB4NjVBMSwgMHg2NUExLCAweDE2QjksIDB4NjVBNCwgMHg2NUE0LCAweDBGQkIsDQorICAgIDB4NjVBNSwgMHg2NUE1LCAweDFCRTUsIDB4NjVBNywgMHg2NUE3LCAweDE0MDYsIDB4NjVBQiwgMHg2NUFCLCAweDE5NzAsDQorICAgIDB4NjVBQywgMHg2NUFDLCAweDFCQjAsIDB4NjVBRiwgMHg2NUFGLCAweDE0OTMsIDB4NjVCMCwgMHg2NUIwLCAweDE2NkUsDQorICAgIDB4NjVCNywgMHg2NUI3LCAweDEwNjcsIDB4NjVCOSwgMHg2NUI5LCAweDEzNTYsIDB4NjVCQywgMHg2NUJDLCAweDE3MTAsDQorICAgIDB4NjVCRCwgMHg2NUJELCAweDE2NDcsIDB4NjVDMSwgMHg2NUMxLCAweDEzNTcsIDB4NjVDNSwgMHg2NUM1LCAweDExNUYsDQorICAgIDB4NjVDQiwgMHg2NUNCLCAweDE1MzIsIDB4NjVDQywgMHg2NUNDLCAweDFBNDAsIDB4NjVDRiwgMHg2NUNGLCAweDFBQUMsDQorICAgIDB4NjVEMiwgMHg2NUQyLCAweDExRTIsIDB4NjVENywgMHg2NUQ3LCAweDBGRjEsIDB4NjVFMCwgMHg2NUUwLCAweDEyRDMsDQorICAgIDB4NjVFMywgMHg2NUUzLCAweDBGRjIsIDB4NjVFNSwgMHg2NUU1LCAweDE5NDAsIDB4NjVFNiwgMHg2NUU2LCAweDEwNjgsDQorICAgIDB4NjVFOCwgMHg2NUU4LCAweDFCMjgsIDB4NjVFOSwgMHg2NUU5LCAweDFBODcsIDB4NjVFQywgMHg2NUVDLCAweDE2MEMsDQorICAgIDB4NjVFRCwgMHg2NUVELCAweDE4NTcsIDB4NjVGMSwgMHg2NUYxLCAweDFERDYsIDB4NjVGNCwgMHg2NUY0LCAweDE4NDEsDQorICAgIDB4NjVGQSwgMHg2NUZBLCAweDE3RUYsIDB4NjVGQiwgMHg2NUZDLCAweDEzMEIsIDB4NjVGRCwgMHg2NUZELCAweDEwRTIsDQorICAgIDB4NjVGRiwgMHg2NUZGLCAweDE3QjEsIDB4NjYwNiwgMHg2NjA2LCAweDBFQzEsIDB4NjYwNywgMHg2NjA3LCAweDE2MzgsDQorICAgIDB4NjYwOSwgMHg2NjA5LCAweDEzNTgsIDB4NjYwQSwgMHg2NjBBLCAweDFFODIsIDB4NjYwQywgMHg2NjBDLCAweDFCQkQsDQorICAgIDB4NjYwRSwgMHg2NjBFLCAweDEyOEYsIDB4NjYwRiwgMHg2NjBGLCAweDFFQTUsIDB4NjYxMCwgMHg2NjEwLCAweDE0MjksDQorICAgIDB4NjYxMSwgMHg2NjExLCAweDBGQzksIDB4NjYxMywgMHg2NjEzLCAweDE3M0UsIDB4NjYxNCwgMHg2NjE0LCAweDE1MUYsDQorICAgIDB4NjYxNSwgMHg2NjE1LCAweDFGNTMsIDB4NjYxRSwgMHg2NjFFLCAweDEzQjYsIDB4NjYxRiwgMHg2NjFGLCAweDE1NjgsDQorICAgIDB4NjYyMCwgMHg2NjIwLCAweDE3NzUsIDB4NjYyNSwgMHg2NjI1LCAweDFDODQsIDB4NjYyNywgMHg2NjI3LCAweDEyNjgsDQorICAgIDB4NjYyOCwgMHg2NjI4LCAweDE5NzEsIDB4NjYyRCwgMHg2NjJELCAweDE1ODYsIDB4NjYyRiwgMHg2NjJGLCAweDE2NDgsDQorICAgIDB4NjYzMCwgMHg2NjMwLCAweDFEQzUsIDB4NjYzMSwgMHg2NjMxLCAweDE4NTgsIDB4NjYzNCwgMHg2NjM0LCAweDEyQzUsDQorICAgIDB4NjYzNiwgMHg2NjM2LCAweDFCQkUsIDB4NjYzQSwgMHg2NjNBLCAweDEzQjcsIDB4NjYzQiwgMHg2NjNCLCAweDE2Q0MsDQorICAgIDB4NjY0MSwgMHg2NjQxLCAweDFBODgsIDB4NjY0MiwgMHg2NjQyLCAweDE2NDksIDB4NjY0MywgMHg2NjQ0LCAweDFFRTcsDQorICAgIDB4NjY0OSwgMHg2NjQ5LCAweDFCNDksIDB4NjY0QiwgMHg2NjRCLCAweDFCNEEsIDB4NjY0RiwgMHg2NjRGLCAweDE2QjIsDQorICAgIDB4NjY1OSwgMHg2NjU5LCAweDFBRkMsIDB4NjY1QiwgMHg2NjVCLCAweDFFM0EsIDB4NjY1RCwgMHg2NjVELCAweDFBRDksDQorICAgIDB4NjY1RSwgMHg2NjVFLCAweDFGNkUsIDB4NjY1RiwgMHg2NjVGLCAweDE1NjksIDB4NjY2NCwgMHg2NjY0LCAweDE3QjIsDQorICAgIDB4NjY2NSwgMHg2NjY1LCAweDFFRDIsIDB4NjY2NiwgMHg2NjY2LCAweDFFRkYsIDB4NjY2NywgMHg2NjY3LCAweDFFODMsDQorICAgIDB4NjY2OCwgMHg2NjY4LCAweDE2NkYsIDB4NjY2OSwgMHg2NjY5LCAweDEyNDUsIDB4NjY2QiwgMHg2NjZCLCAweDFDRTgsDQorICAgIDB4NjY2RSwgMHg2NjZFLCAweDEzQzYsIDB4NjY2RiwgMHg2NjZGLCAweDBFNUMsIDB4NjY3MywgMHg2NjczLCAweDE1MjAsDQorICAgIDB4NjY3NCwgMHg2Njc0LCAweDFDMUUsIDB4NjY3NiwgMHg2Njc2LCAweDFBNDEsIDB4NjY3NywgMHg2Njc3LCAweDBGOTYsDQorICAgIDB4NjY3OCwgMHg2Njc4LCAweDFBNDIsIDB4NjY3QSwgMHg2NjdBLCAweDFCMjksIDB4NjY4NCwgMHg2Njg0LCAweDFGMzcsDQorICAgIDB4NjY4NywgMHg2Njg3LCAweDBENzcsIDB4NjY4OCwgMHg2Njg4LCAweDFGMzQsIDB4NjY4OSwgMHg2Njg5LCAweDFGNDAsDQorICAgIDB4NjY4RSwgMHg2NjhFLCAweDE3NzYsIDB4NjY5MCwgMHg2NjkwLCAweDE4OTUsIDB4NjY5MSwgMHg2NjkxLCAweDE1MDcsDQorICAgIDB4NjY5NiwgMHg2Njk2LCAweDEwMkMsIDB4NjY5NywgMHg2Njk3LCAweDE2QzEsIDB4NjY5OCwgMHg2Njk4LCAweDE2RkUsDQorICAgIDB4NjY5RCwgMHg2NjlELCAweDEyOTAsIDB4NjZBMCwgMHg2NkEwLCAweDBFOUUsIDB4NjZBMiwgMHg2NkEyLCAweDFCQkYsDQorICAgIDB4NjZBQiwgMHg2NkFCLCAweDE5ODAsIDB4NjZBRSwgMHg2NkFFLCAweDEyQTQsIDB4NjZCMiwgMHg2NkIyLCAweDE5OTIsDQorICAgIDB4NjZCMywgMHg2NkIzLCAweDFFNzMsIDB4NjZCNCwgMHg2NkI0LCAweDFEOTQsIDB4NjZCOSwgMHg2NkI5LCAweDE1NTgsDQorICAgIDB4NjZCQiwgMHg2NkJCLCAweDBFNUQsIDB4NjZCRSwgMHg2NkJFLCAweDEwRTMsIDB4NjZDNCwgMHg2NkM0LCAweDE3NkYsDQorICAgIDB4NjZDNiwgMHg2NkM2LCAweDExNkIsIDB4NjZDNywgMHg2NkM3LCAweDEwN0QsIDB4NjZDOSwgMHg2NkM5LCAweDFGMTYsDQorICAgIDB4NjZENiwgMHg2NkQ2LCAweDE2RDUsIDB4NjZEOSwgMHg2NkQ5LCAweDE1MDgsIDB4NjZEQywgMHg2NkRDLCAweDE4MDgsDQorICAgIDB4NjZERCwgMHg2NkRELCAweDFEOTUsIDB4NjZFMCwgMHg2NkUwLCAweDBGMDQsIDB4NjZFNiwgMHg2NkU2LCAweDFGNkYsDQorICAgIDB4NjZGMCwgMHg2NkYwLCAweDE3RUQsIDB4NjZGMiwgMHg2NkYyLCAweDBFQjksIDB4NjZGMywgMHg2NkYzLCAweDE3OTEsDQorICAgIDB4NjZGNCwgMHg2NkY0LCAweDBFNUUsIDB4NjZGNywgMHg2NkY3LCAweDBEQUUsIDB4NjZGOCwgMHg2NkY4LCAweDE1MDksDQorICAgIDB4NjZGOSwgMHg2NkY5LCAweDFBOEEsIDB4NjZGQSwgMHg2NkZBLCAweDFBODksIDB4NjZGQywgMHg2NkZDLCAweDEyNDYsDQorICAgIDB4NjZGRSwgMHg2NkZFLCAweDFCMTUsIDB4NjZGRiwgMHg2NkZGLCAweDFDMjYsIDB4NjcwMCwgMHg2NzAwLCAweDFDNjAsDQorICAgIDB4NjcwMywgMHg2NzAzLCAweDFGMDAsIDB4NjcwOCwgMHg2NzA4LCAweDE4ODksIDB4NjcwOSwgMHg2NzA5LCAweDE4QjYsDQorICAgIDB4NjcwQiwgMHg2NzBCLCAweDE0MzgsIDB4NjcwRCwgMHg2NzBELCAweDEzRDgsIDB4NjcxNCwgMHg2NzE0LCAweDE0QjYsDQorICAgIDB4NjcxNSwgMHg2NzE1LCAweDFCNzcsIDB4NjcxNywgMHg2NzE3LCAweDExM0QsIDB4NjcxQiwgMHg2NzFCLCAweDEyNUMsDQorICAgIDB4NjcxRCwgMHg2NzFELCAweDFBOEIsIDB4NjcxRSwgMHg2NzFGLCAweDBGRjMsIDB4NjcyNiwgMHg2NzI2LCAweDEyQkUsDQorICAgIDB4NjcyNywgMHg2NzI3LCAweDExQkEsIDB4NjcyOCwgMHg2NzI4LCAweDEyQjQsIDB4NjcyQSwgMHg2NzJBLCAweDEyRjksDQorICAgIDB4NjcyQiwgMHg2NzJCLCAweDEyNTMsIDB4NjcyQywgMHg2NzJDLCAweDEzRTMsIDB4NjcyRCwgMHg2NzJELCAweDFCQTgsDQorICAgIDB4NjcyRSwgMHg2NzJFLCAweDFDODgsIDB4NjczMSwgMHg2NzMxLCAweDFBREEsIDB4NjczNCwgMHg2NzM0LCAweDEzMUIsDQorICAgIDB4NjczNiwgMHg2NzM2LCAweDFDREMsIDB4NjczQSwgMHg2NzNBLCAweDBGOTAsIDB4NjczRCwgMHg2NzNELCAweDFGMjcsDQorICAgIDB4Njc0NiwgMHg2NzQ2LCAweDBEOUQsIDB4Njc0OSwgMHg2NzQ5LCAweDE0QzksIDB4Njc0RSwgMHg2NzRFLCAweDEyMEMsDQorICAgIDB4Njc0RiwgMHg2NzRGLCAweDFFMUIsIDB4Njc1MCwgMHg2NzUwLCAweDE5QUYsIDB4Njc1MSwgMHg2NzUxLCAweDFDNTEsDQorICAgIDB4Njc1MywgMHg2NzUzLCAweDFEOUMsIDB4Njc1NiwgMHg2NzU2LCAweDE5OTMsIDB4Njc1QywgMHg2NzVDLCAweDEwRkUsDQorICAgIDB4Njc1RSwgMHg2NzVFLCAweDBGRjUsIDB4Njc1RiwgMHg2NzVGLCAweDE1QTMsIDB4Njc2RCwgMHg2NzZELCAweDFERkQsDQorICAgIDB4Njc2RiwgMHg2NzZGLCAweDEzNkYsIDB4Njc3MCwgMHg2NzcwLCAweDBFMUYsIDB4Njc3MSwgMHg2NzcxLCAweDEwRjEsDQorICAgIDB4Njc3MywgMHg2NzczLCAweDEyQzYsIDB4Njc3NSwgMHg2Nzc1LCAweDE5QzYsIDB4Njc3NywgMHg2Nzc3LCAweDFEMzgsDQorICAgIDB4Njc3QiwgMHg2NzdCLCAweDEwNTcsIDB4Njc3RSwgMHg2NzdFLCAweDE1QjMsIDB4Njc3RiwgMHg2NzdGLCAweDFENDQsDQorICAgIDB4Njc4NywgMHg2Nzg3LCAweDE0NEEsIDB4Njc4OSwgMHg2Nzg5LCAweDE3RjAsIDB4Njc4QiwgMHg2NzhCLCAweDEzNTksDQorICAgIDB4Njc4RiwgMHg2NzhGLCAweDEwMzIsIDB4Njc5MCwgMHg2NzkwLCAweDE1MjEsIDB4Njc5MywgMHg2NzkzLCAweDEwRkYsDQorICAgIDB4Njc5NSwgMHg2Nzk1LCAweDFDQzksIDB4Njc5NywgMHg2Nzk3LCAweDEyMjcsIDB4Njc5QSwgMHg2NzlBLCAweDEyNjksDQorICAgIDB4Njc5QywgMHg2NzlDLCAweDBFREQsIDB4Njc5RCwgMHg2NzlELCAweDFCMkEsIDB4NjdBRiwgMHg2N0FGLCAweDBFOUYsDQorICAgIDB4NjdCMCwgMHg2N0IwLCAweDFENkIsIDB4NjdCMywgMHg2N0IzLCAweDFCMkIsIDB4NjdCNiwgMHg2N0I3LCAweDBENzgsDQorICAgIDB4NjdCOCwgMHg2N0I4LCAweDBGNDksIDB4NjdCRSwgMHg2N0JFLCAweDE2NEEsIDB4NjdDNCwgMHg2N0M0LCAweDEzQjgsDQorICAgIDB4NjdDRiwgMHg2N0NGLCAweDEzN0YsIDB4NjdEMCwgMHg2N0QwLCAweDEyQTUsIDB4NjdEMSwgMHg2N0QxLCAweDBEQkUsDQorICAgIDB4NjdEMiwgMHg2N0QyLCAweDFDQzUsIDB4NjdEMywgMHg2N0QzLCAweDE3NjYsIDB4NjdENCwgMHg2N0Q0LCAweDE4QjcsDQorICAgIDB4NjdEQSwgMHg2N0RBLCAweDE4QjgsIDB4NjdERCwgMHg2N0RELCAweDFDRTksIDB4NjdFOSwgMHg2N0U5LCAweDBGNEEsDQorICAgIDB4NjdFQywgMHg2N0VDLCAweDBEOUUsIDB4NjdFRiwgMHg2N0VGLCAweDBEN0EsIDB4NjdGMCwgMHg2N0YwLCAweDEwM0QsDQorICAgIDB4NjdGMSwgMHg2N0YxLCAweDFBREIsIDB4NjdGMywgMHg2N0YzLCAweDExRTMsIDB4NjdGNCwgMHg2N0Y0LCAweDE2NEIsDQorICAgIDB4NjdGNSwgMHg2N0Y1LCAweDFCRDcsIDB4NjdGNiwgMHg2N0Y2LCAweDE0OTQsIDB4NjdGQiwgMHg2N0ZCLCAweDE0OTUsDQorICAgIDB4NjdGRSwgMHg2N0ZFLCAweDFBNDMsIDB4NjgxMiwgMHg2ODEyLCAweDE2MEQsIDB4NjgxMywgMHg2ODEzLCAweDFBMDIsDQorICAgIDB4NjgxNiwgMHg2ODE2LCAweDE1MEEsIDB4NjgxNywgMHg2ODE3LCAweDExRkEsIDB4NjgyMSwgMHg2ODIxLCAweDBGMjUsDQorICAgIDB4NjgyMiwgMHg2ODIyLCAweDEzODAsIDB4NjgyQSwgMHg2ODJBLCAweDFBREMsIDB4NjgyRiwgMHg2ODJGLCAweDE4NTksDQorICAgIDB4NjgzOCwgMHg2ODM4LCAweDFFMTgsIDB4NjgzOSwgMHg2ODM5LCAweDBGQkMsIDB4NjgzQywgMHg2ODNDLCAweDBFMkYsDQorICAgIDB4NjgzRCwgMHg2ODNELCAweDE5QjAsIDB4Njg0MCwgMHg2ODQwLCAweDBFMjAsIDB4Njg0MSwgMHg2ODQxLCAweDFERkUsDQorICAgIDB4Njg0MiwgMHg2ODQyLCAweDBFODEsIDB4Njg0MywgMHg2ODQzLCAweDEwQkQsIDB4Njg0OCwgMHg2ODQ4LCAweDE2QjMsDQorICAgIDB4Njg0RSwgMHg2ODRFLCAweDFCNkMsIDB4Njg1MCwgMHg2ODUwLCAweDEwRjIsIDB4Njg1MSwgMHg2ODUxLCAweDE0RTIsDQorICAgIDB4Njg1MywgMHg2ODUzLCAweDFFRDMsIDB4Njg1NCwgMHg2ODU0LCAweDEwMjIsIDB4Njg2RCwgMHg2ODZELCAweDFCNEIsDQorICAgIDB4Njg3NiwgMHg2ODc2LCAweDFEMUUsIDB4Njg3RiwgMHg2ODdGLCAweDBEOUYsIDB4Njg4MSwgMHg2ODgxLCAweDExNEYsDQorICAgIDB4Njg4NSwgMHg2ODg1LCAweDEyNkEsIDB4Njg4RiwgMHg2ODhGLCAweDBFQkEsIDB4Njg5MywgMHg2ODkzLCAweDE5QjEsDQorICAgIDB4Njg5NCwgMHg2ODk0LCAweDFDQUUsIDB4Njg5NywgMHg2ODk3LCAweDBFNUYsIDB4Njg5RCwgMHg2ODlELCAweDFBOEMsDQorICAgIDB4Njg5RiwgMHg2ODlGLCAweDFGMTcsIDB4NjhBMSwgMHg2OEExLCAweDE3REUsIDB4NjhBMiwgMHg2OEEyLCAweDFDMzQsDQorICAgIDB4NjhBNywgMHg2OEE3LCAweDE3QjMsIDB4NjhBOCwgMHg2OEE4LCAweDEyMEQsIDB4NjhBRCwgMHg2OEFELCAweDE0OTYsDQorICAgIDB4NjhBRiwgMHg2OEFGLCAweDFBNkYsIDB4NjhCMCwgMHg2OEIwLCAweDBFODIsIDB4NjhCMSwgMHg2OEIxLCAweDBFQzIsDQorICAgIDB4NjhCMywgMHg2OEIzLCAweDE1ODcsIDB4NjhCNSwgMHg2OEI1LCAweDEzOTMsIDB4NjhCNiwgMHg2OEI2LCAweDEyRkEsDQorICAgIDB4NjhDNCwgMHg2OEM0LCAweDBGRjcsIDB4NjhDNSwgMHg2OEM1LCAweDEzQjksIDB4NjhDOSwgMHg2OEM5LCAweDEyODIsDQorICAgIDB4NjhDQiwgMHg2OENCLCAweDBGRjYsIDB4NjhDRCwgMHg2OENELCAweDBFQzMsIDB4NjhEMiwgMHg2OEQyLCAweDEzRUIsDQorICAgIDB4NjhENSwgMHg2OEQ1LCAweDFBQkEsIDB4NjhENywgMHg2OEQ3LCAweDFBOEQsIDB4NjhEOCwgMHg2OEQ4LCAweDBGQjQsDQorICAgIDB4NjhEQSwgMHg2OERBLCAweDE0MzksIDB4NjhERiwgMHg2OERGLCAweDEwRjMsIDB4NjhFMCwgMHg2OEUwLCAweDEwOTUsDQorICAgIDB4NjhFNywgMHg2OEU3LCAweDE5N0IsIDB4NjhFOCwgMHg2OEU4LCAweDBFODMsIDB4NjhFRSwgMHg2OEVFLCAweDE0Q0EsDQorICAgIDB4NjhGMiwgMHg2OEYyLCAweDE1MEIsIDB4NjhGOSwgMHg2OEY5LCAweDEwQkUsIDB4NjhGQSwgMHg2OEZBLCAweDBFRUYsDQorICAgIDB4NjkwMCwgMHg2OTAwLCAweDE3REYsIDB4NjkwNSwgMHg2OTA1LCAweDE5MDEsIDB4NjkwRCwgMHg2OTBELCAweDE2NUQsDQorICAgIDB4NjkwRSwgMHg2OTBFLCAweDFDNjQsIDB4NjkxMiwgMHg2OTEyLCAweDFDMzUsIDB4NjkyNywgMHg2OTI3LCAweDEyOTEsDQorICAgIDB4NjkzMCwgMHg2OTMwLCAweDE2RUMsIDB4NjkzRCwgMHg2OTNELCAweDE3NEMsIDB4NjkzRiwgMHg2OTNGLCAweDFDODUsDQorICAgIDB4Njk0QSwgMHg2OTRBLCAweDE2RkYsIDB4Njk1MywgMHg2OTUzLCAweDFEQTgsIDB4Njk1NCwgMHg2OTU0LCAweDE1NEMsDQorICAgIDB4Njk1NSwgMHg2OTU1LCAweDFDREQsIDB4Njk1NywgMHg2OTU3LCAweDBFMTcsIDB4Njk1OSwgMHg2OTU5LCAweDEyRDQsDQorICAgIDB4Njk1QSwgMHg2OTVBLCAweDFDMzYsIDB4Njk1RSwgMHg2OTVFLCAweDEyMDAsIDB4Njk2MCwgMHg2OTYwLCAweDEwMzMsDQorICAgIDB4Njk2MSwgMHg2OTYyLCAweDE4QjksIDB4Njk2MywgMHg2OTYzLCAweDEyRkIsIDB4Njk2OCwgMHg2OTY4LCAweDFBNDQsDQorICAgIDB4Njk2QiwgMHg2OTZCLCAweDFCMTAsIDB4Njk2RCwgMHg2OTZELCAweDE3MkMsIDB4Njk2RSwgMHg2OTZFLCAweDE5QzcsDQorICAgIDB4Njk2RiwgMHg2OTZGLCAweDE2MEUsIDB4Njk3NSwgMHg2OTc1LCAweDBGQjUsIDB4Njk3NywgMHg2OTc3LCAweDFFMEQsDQorICAgIDB4Njk3OCwgMHg2OTc4LCAweDFDNjUsIDB4Njk3OSwgMHg2OTc5LCAweDE3NzcsIDB4Njk5NSwgMHg2OTk1LCAweDE4MjcsDQorICAgIDB4Njk5QiwgMHg2OTlCLCAweDFCNEMsIDB4Njk5QywgMHg2OTlDLCAweDEzNUEsIDB4NjlBNSwgMHg2OUE1LCAweDFFRTksDQorICAgIDB4NjlBNywgMHg2OUE3LCAweDE0NEIsIDB4NjlBRSwgMHg2OUFFLCAweDE3NzgsIDB4NjlCNCwgMHg2OUI0LCAweDExRTQsDQorICAgIDB4NjlCQiwgMHg2OUJCLCAweDFEMDIsIDB4NjlDMSwgMHg2OUMxLCAweDBFQTAsIDB4NjlDMywgMHg2OUMzLCAweDEzMzEsDQorICAgIDB4NjlDQiwgMHg2OUNCLCAweDBGNEIsIDB4NjlDQywgMHg2OUNDLCAweDFEMjQsIDB4NjlDRCwgMHg2OUNELCAweDFCQzAsDQorICAgIDB4NjlEMCwgMHg2OUQwLCAweDBGMTYsIDB4NjlFOCwgMHg2OUU4LCAweDBFRTgsIDB4NjlFQSwgMHg2OUVBLCAweDBERjEsDQorICAgIDB4NjlGQiwgMHg2OUZCLCAweDBGOUUsIDB4NjlGRCwgMHg2OUZELCAweDFBOEUsIDB4NjlGRiwgMHg2OUZGLCAweDBGQkQsDQorICAgIDB4NkEwMiwgMHg2QTAyLCAweDE2QTgsIDB4NkEwQSwgMHg2QTBBLCAweDEzODUsIDB4NkExMSwgMHg2QTExLCAweDExNTAsDQorICAgIDB4NkExMywgMHg2QTEzLCAweDExRDcsIDB4NkExNywgMHg2QTE3LCAweDE5QzgsIDB4NkExOSwgMHg2QTE5LCAweDFEOUQsDQorICAgIDB4NkExRSwgMHg2QTFFLCAweDFDNjYsIDB4NkExRiwgMHg2QTFGLCAweDE5OTQsIDB4NkEyMSwgMHg2QTIxLCAweDEyQTYsDQorICAgIDB4NkEyMywgMHg2QTIzLCAweDE3MDAsIDB4NkEzNSwgMHg2QTM1LCAweDFDMzcsIDB4NkEzOCwgMHg2QTM4LCAweDEzMUMsDQorICAgIDB4NkEzOSwgMHg2QTM5LCAweDE1RDEsIDB4NkEzQSwgMHg2QTNBLCAweDFFQkEsIDB4NkEzRCwgMHg2QTNELCAweDFBRkQsDQorICAgIDB4NkE0NCwgMHg2QTQ0LCAweDBEQkYsIDB4NkE0OCwgMHg2QTQ4LCAweDE4MDksIDB4NkE0QiwgMHg2QTRCLCAweDBGMjYsDQorICAgIDB4NkE1MiwgMHg2QTUyLCAweDE4NUYsIDB4NkE1MywgMHg2QTUzLCAweDE2MEYsIDB4NkE1OCwgMHg2QTU4LCAweDBGQUYsDQorICAgIDB4NkE1OSwgMHg2QTU5LCAweDExMEUsIDB4NkE1RiwgMHg2QTVGLCAweDBGRjgsIDB4NkE2MSwgMHg2QTYxLCAweDE0RTMsDQorICAgIDB4NkE2QiwgMHg2QTZCLCAweDFGMEYsIDB4NkE4MCwgMHg2QTgwLCAweDEwNjksIDB4NkE4NCwgMHg2QTg0LCAweDBFMzAsDQorICAgIDB4NkE4OSwgMHg2QTg5LCAweDFBNDUsIDB4NkE4RCwgMHg2QThELCAweDE3MUIsIDB4NkE4RSwgMHg2QThFLCAweDBGQ0EsDQorICAgIDB4NkE5NywgMHg2QTk3LCAweDEzQTAsIDB4NkE5QywgMHg2QTlDLCAweDFGMDEsIDB4NkFBMiwgMHg2QUEyLCAweDBFMjQsDQorICAgIDB4NkFBMywgMHg2QUEzLCAweDE5OTUsIDB4NkFCMywgMHg2QUIzLCAweDE0NkIsIDB4NkFCQiwgMHg2QUJCLCAweDFERTgsDQorICAgIDB4NkFDMiwgMHg2QUMyLCAweDEwQkYsIDB4NkFDMywgMHg2QUMzLCAweDBGOTEsIDB4NkFEMywgMHg2QUQzLCAweDExQTIsDQorICAgIDB4NkFEQSwgMHg2QURBLCAweDExNjAsIDB4NkFEQiwgMHg2QURCLCAweDFCMEYsIDB4NkFGNiwgMHg2QUY2LCAweDFFMkMsDQorICAgIDB4NkFGQiwgMHg2QUZCLCAweDE2RTIsIDB4NkIwNCwgMHg2QjA0LCAweDExMjcsIDB4NkIwQSwgMHg2QjBBLCAweDBGODgsDQorICAgIDB4NkIwQywgMHg2QjBDLCAweDE5OTYsIDB4NkIxMiwgMHg2QjEyLCAweDExMjgsIDB4NkIxNiwgMHg2QjE2LCAweDExMzIsDQorICAgIDB4NkIyMCwgMHg2QjIwLCAweDFGNUIsIDB4NkIyMSwgMHg2QjIxLCAweDFCODgsIDB4NkIyMywgMHg2QjIzLCAweDFGNTQsDQorICAgIDB4NkIzMiwgMHg2QjMyLCAweDE4MTksIDB4NkIzQSwgMHg2QjNBLCAweDBGRjksIDB4NkIzRCwgMHg2QjNELCAweDFGNUMsDQorICAgIDB4NkIzRSwgMHg2QjNFLCAweDBFRjAsIDB4NkI0NiwgMHg2QjQ2LCAweDFGNUQsIDB4NkI0NywgMHg2QjQ3LCAweDFFMkYsDQorICAgIDB4NkI0QywgMHg2QjRDLCAweDBEN0IsIDB4NkI0RSwgMHg2QjRFLCAweDFDRjUsIDB4NkI1MCwgMHg2QjUwLCAweDBGNEMsDQorICAgIDB4NkI1RiwgMHg2QjVGLCAweDE3MzEsIDB4NkI2MSwgMHg2QjYxLCAweDFFRDEsIDB4NkI2MiwgMHg2QjYyLCAweDFCMkMsDQorICAgIDB4NkI2MywgMHg2QjYzLCAweDFBNDYsIDB4NkI2NCwgMHg2QjY0LCAweDFCODksIDB4NkI2NSwgMHg2QjY1LCAweDEzQzcsDQorICAgIDB4NkI2NiwgMHg2QjY2LCAweDEyRDUsIDB4NkI2QSwgMHg2QjZBLCAweDE3RjUsIDB4NkI3MiwgMHg2QjcyLCAweDE1NzYsDQorICAgIDB4NkI3NywgMHg2Qjc3LCAweDExNkMsIDB4NkI3OCwgMHg2Qjc4LCAweDBGOTcsIDB4NkI3QiwgMHg2QjdCLCAweDE0OTcsDQorICAgIDB4NkI3RiwgMHg2QjdGLCAweDEyQkIsIDB4NkI4MywgMHg2QjgzLCAweDE2Q0QsIDB4NkI4NCwgMHg2Qjg0LCAweDFCNEQsDQorICAgIDB4NkI4NiwgMHg2Qjg2LCAweDFEMEMsIDB4NkI4OSwgMHg2Qjg5LCAweDE2MTAsIDB4NkI4QSwgMHg2QjhBLCAweDE1RDIsDQorICAgIDB4NkI5NiwgMHg2Qjk2LCAweDE2NUUsIDB4NkI5OCwgMHg2Qjk4LCAweDE5N0MsIDB4NkI5RSwgMHg2QjlFLCAweDE4NjAsDQorICAgIDB4NkJBRSwgMHg2QkFFLCAweDExODUsIDB4NkJBRiwgMHg2QkFGLCAweDE0NkMsIDB4NkJCMiwgMHg2QkIyLCAweDE1NTksDQorICAgIDB4NkJCNSwgMHg2QkI1LCAweDEwNkEsIDB4NkJCNywgMHg2QkI3LCAweDE4RTgsIDB4NkJCQSwgMHg2QkJBLCAweDE0QzUsDQorICAgIDB4NkJCQywgMHg2QkJDLCAweDBEOEUsIDB4NkJCRiwgMHg2QkJGLCAweDFBMDMsIDB4NkJDMSwgMHg2QkMxLCAweDFGM0MsDQorICAgIDB4NkJDNSwgMHg2QkM1LCAweDE5MDIsIDB4NkJDNiwgMHg2QkM2LCAweDBGNEQsIDB4NkJDQiwgMHg2QkNCLCAweDEyRDYsDQorICAgIDB4NkJDRCwgMHg2QkNELCAweDEyQTcsIDB4NkJDRiwgMHg2QkNGLCAweDEyNkIsIDB4NkJEMiwgMHg2QkQyLCAweDEwRDUsDQorICAgIDB4NkJEMywgMHg2QkQzLCAweDE4RDQsIDB4NkJENCwgMHg2QkQ0LCAweDE0NEMsIDB4NkJENiwgMHg2QkQ4LCAweDE0NEQsDQorICAgIDB4NkJEQiwgMHg2QkRCLCAweDEyQTgsIDB4NkJFQiwgMHg2QkVCLCAweDFFODQsIDB4NkJFQywgMHg2QkVDLCAweDBGNEUsDQorICAgIDB4NkMwOCwgMHg2QzA4LCAweDFBMDQsIDB4NkMwRiwgMHg2QzBGLCAweDE2OEUsIDB4NkMxMSwgMHg2QzExLCAweDEzMEQsDQorICAgIDB4NkMxMywgMHg2QzEzLCAweDEyNzgsIDB4NkMyMywgMHg2QzIzLCAweDBGRkEsIDB4NkMzNCwgMHg2QzM0LCAweDE1RDMsDQorICAgIDB4NkMzNywgMHg2QzM3LCAweDE0NzYsIDB4NkMzOCwgMHg2QzM4LCAweDE3NzksIDB4NkMzRSwgMHg2QzNFLCAweDEzOTQsDQorICAgIDB4NkM0MCwgMHg2QzQwLCAweDFBNDcsIDB4NkM0MSwgMHg2QzQxLCAweDFCMTEsIDB4NkM0MiwgMHg2QzQyLCAweDBGNEYsDQorICAgIDB4NkM0RSwgMHg2QzRFLCAweDEzOTUsIDB4NkM1MCwgMHg2QzUwLCAweDE1MjIsIDB4NkM1NSwgMHg2QzU1LCAweDE0QkIsDQorICAgIDB4NkM1NywgMHg2QzU3LCAweDFERDcsIDB4NkM1QSwgMHg2QzVBLCAweDE3QjQsIDB4NkM1RCwgMHg2QzVELCAweDE3MzIsDQorICAgIDB4NkM1RSwgMHg2QzVFLCAweDFFQUYsIDB4NkM1RiwgMHg2QzVGLCAweDBERDksIDB4NkM2MCwgMHg2QzYwLCAweDFCMkQsDQorICAgIDB4NkM2OCwgMHg2QzY4LCAweDBFQzgsIDB4NkM2QSwgMHg2QzZBLCAweDE3RjEsIDB4NkM2RCwgMHg2QzZELCAweDE3OTIsDQorICAgIDB4NkM3MCwgMHg2QzcwLCAweDFEMEQsIDB4NkM3MiwgMHg2QzcyLCAweDBGRDcsIDB4NkM3NiwgMHg2Qzc2LCAweDEyRTksDQorICAgIDB4NkM3QSwgMHg2QzdBLCAweDBFNDEsIDB4NkM3RCwgMHg2QzdELCAweDBGRkIsIDB4NkM3RSwgMHg2QzdFLCAweDE0MkEsDQorICAgIDB4NkM4MSwgMHg2QzgxLCAweDE2ODUsIDB4NkM4MiwgMHg2QzgyLCAweDBGRkMsIDB4NkM4MywgMHg2QzgzLCAweDE3QkYsDQorICAgIDB4NkM4NSwgMHg2Qzg1LCAweDE4N0IsIDB4NkM4NiwgMHg2Qzg2LCAweDFERkYsIDB4NkM4NywgMHg2Qzg3LCAweDE3NEQsDQorICAgIDB4NkM4OCwgMHg2Qzg4LCAweDFDQ0EsIDB4NkM4QywgMHg2QzhDLCAweDEwRTQsIDB4NkM5MCwgMHg2QzkwLCAweDEyQjUsDQorICAgIDB4NkM5MiwgMHg2QzkyLCAweDEyQkMsIDB4NkM5MywgMHg2QzkzLCAweDEwOEEsIDB4NkM5NCwgMHg2Qzk0LCAweDEyODMsDQorICAgIDB4NkM5NSwgMHg2Qzk1LCAweDEyRjEsIDB4NkM5NiwgMHg2Qzk2LCAweDFDOEMsIDB4NkM5OSwgMHg2Qzk5LCAweDE0OTgsDQorICAgIDB4NkM5QSwgMHg2QzlBLCAweDFCMkUsIDB4NkM5QiwgMHg2QzlCLCAweDFENTIsIDB4NkNBQiwgMHg2Q0FCLCAweDEyNTQsDQorICAgIDB4NkNBRSwgMHg2Q0FFLCAweDE5QzksIDB4NkNCMywgMHg2Q0IzLCAweDFEQzYsIDB4NkNCOCwgMHg2Q0I4LCAweDE0NTAsDQorICAgIDB4NkNCOSwgMHg2Q0I5LCAweDE4QkIsIDB4NkNCQiwgMHg2Q0JCLCAweDFDQUYsIDB4NkNCQywgMHg2Q0JDLCAweDE1ODgsDQorICAgIDB4NkNCRCwgMHg2Q0JELCAweDBFQTEsIDB4NkNCRSwgMHg2Q0JFLCAweDFDMEIsIDB4NkNCRiwgMHg2Q0JGLCAweDE3NEUsDQorICAgIDB4NkNDMSwgMHg2Q0MxLCAweDFFRUEsIDB4NkNDMiwgMHg2Q0MyLCAweDFFNjAsIDB4NkNDNCwgMHg2Q0M0LCAweDE1NEQsDQorICAgIDB4NkNDOSwgMHg2Q0M5LCAweDFCRjIsIDB4NkNDQSwgMHg2Q0NBLCAweDEzMUQsIDB4NkNDQywgMHg2Q0NDLCAweDFEQjcsDQorICAgIDB4NkNEMywgMHg2Q0QzLCAweDFFQjAsIDB4NkNENSwgMHg2Q0Q1LCAweDEzOUEsIDB4NkNENywgMHg2Q0Q3LCAweDE0OTksDQorICAgIDB4NkNEQiwgMHg2Q0RCLCAweDEzOTYsIDB4NkNFMSwgMHg2Q0UxLCAweDFEODQsIDB4NkNFMiwgMHg2Q0UyLCAweDFEMzksDQorICAgIDB4NkNFMywgMHg2Q0UzLCAweDE4RjQsIDB4NkNFNSwgMHg2Q0U1LCAweDEwNUIsIDB4NkNFOCwgMHg2Q0U4LCAweDFBREQsDQorICAgIDB4NkNFQiwgMHg2Q0VCLCAweDFFM0IsIDB4NkNFRSwgMHg2Q0VFLCAweDEzMzIsIDB4NkNFRiwgMHg2Q0VGLCAweDEzMEUsDQorICAgIDB4NkNGMCwgMHg2Q0YwLCAweDFEMEUsIDB4NkNGMywgMHg2Q0YzLCAweDE3N0EsIDB4NkQwQiwgMHg2RDBCLCAweDE3MDEsDQorICAgIDB4NkQwQywgMHg2RDBDLCAweDExODAsIDB4NkQxMSwgMHg2RDExLCAweDEzQzgsIDB4NkQxNywgMHg2RDE3LCAweDE1NzcsDQorICAgIDB4NkQxOSwgMHg2RDE5LCAweDE1RDQsIDB4NkQxQiwgMHg2RDFCLCAweDExMUUsIDB4NkQxRSwgMHg2RDFFLCAweDEwRjQsDQorICAgIDB4NkQyNSwgMHg2RDI1LCAweDFCNEUsIDB4NkQyNywgMHg2RDI3LCAweDE4QkMsIDB4NkQyOSwgMHg2RDI5LCAweDE1NEUsDQorICAgIDB4NkQyQSwgMHg2RDJBLCAweDFFQjEsIDB4NkQzMiwgMHg2RDMyLCAweDFBREUsIDB4NkQzNSwgMHg2RDM1LCAweDE2MTEsDQorICAgIDB4NkQzNiwgMHg2RDM2LCAweDFGNTAsIDB4NkQzOCwgMHg2RDM4LCAweDBGMDUsIDB4NkQzOSwgMHg2RDM5LCAweDE4N0MsDQorICAgIDB4NkQzQiwgMHg2RDNCLCAweDFFREIsIDB4NkQzRCwgMHg2RDNELCAweDFGNjAsIDB4NkQzRSwgMHg2RDNFLCAweDFEM0EsDQorICAgIDB4NkQ0MSwgMHg2RDQxLCAweDExRTUsIDB4NkQ1OSwgMHg2RDU5LCAweDFBMUYsIDB4NkQ1QSwgMHg2RDVBLCAweDFBRkUsDQorICAgIDB4NkQ1QywgMHg2RDVDLCAweDE0NkQsIDB4NkQ2MywgMHg2RDYzLCAweDE3RTAsIDB4NkQ2NiwgMHg2RDY2LCAweDFEODUsDQorICAgIDB4NkQ2OSwgMHg2RDY5LCAweDFFODUsIDB4NkQ2QSwgMHg2RDZBLCAweDExM0UsIDB4NkQ2QywgMHg2RDZDLCAweDEyMEUsDQorICAgIDB4NkQ2RSwgMHg2RDZFLCAweDE0MDcsIDB4NkQ3NCwgMHg2RDc0LCAweDE4MUEsIDB4NkQ3NywgMHg2RDc3LCAweDFFMEUsDQorICAgIDB4NkQ3OCwgMHg2RDc4LCAweDFDQ0IsIDB4NkQ3OSwgMHg2RDc5LCAweDFFNTQsIDB4NkQ3RiwgMHg2RDdGLCAweDFENTMsDQorICAgIDB4NkQ4NSwgMHg2RDg1LCAweDE3NjIsIDB4NkQ4NywgMHg2RDg3LCAweDBFNjAsIDB4NkQ4OCwgMHg2RDg4LCAweDE1ODksDQorICAgIDB4NkQ4OSwgMHg2RDg5LCAweDE1NjAsIDB4NkQ4QywgMHg2RDhDLCAweDE4MjgsIDB4NkQ4RCwgMHg2RDhELCAweDFGMTgsDQorICAgIDB4NkQ4RSwgMHg2RDhFLCAweDE3NEYsIDB4NkQ5MSwgMHg2RDkxLCAweDE1QTQsIDB4NkQ5MywgMHg2RDkzLCAweDE3NTAsDQorICAgIDB4NkQ5NSwgMHg2RDk1LCAweDFDMjcsIDB4NkRBRiwgMHg2REFGLCAweDE2RDYsIDB4NkRCMiwgMHg2REIyLCAweDE2REUsDQorICAgIDB4NkRCNSwgMHg2REI1LCAweDFERTksIDB4NkRDMCwgMHg2REMwLCAweDFBNDgsIDB4NkRDMywgMHg2REMzLCAweDBGODksDQorICAgIDB4NkRDNCwgMHg2REM0LCAweDFDQjAsIDB4NkRDNSwgMHg2REM1LCAweDE1MjMsIDB4NkRDNiwgMHg2REM2LCAweDFGMTksDQorICAgIDB4NkRDNywgMHg2REM3LCAweDBGRkQsIDB4NkRDQiwgMHg2RENCLCAweDEyMjgsIDB4NkRDRiwgMHg2RENGLCAweDFFODYsDQorICAgIDB4NkREMSwgMHg2REQxLCAweDE2MDEsIDB4NkREOCwgMHg2REQ4LCAweDEwQzAsIDB4NkREOSwgMHg2REQ5LCAweDFBQkIsDQorICAgIDB4NkREQSwgMHg2RERBLCAweDExRDgsIDB4NkRERSwgMHg2RERFLCAweDE1QjQsIDB4NkRFMSwgMHg2REUxLCAweDEwN0UsDQorICAgIDB4NkRFOCwgMHg2REU4LCAweDFBNDksIDB4NkRFQSwgMHg2REVBLCAweDExRjUsIDB4NkRFQiwgMHg2REVCLCAweDE4RUUsDQorICAgIDB4NkRFRSwgMHg2REVFLCAweDFGMDIsIDB4NkRGMSwgMHg2REYxLCAweDE2ODYsIDB4NkRGMywgMHg2REYzLCAweDE2MTIsDQorICAgIDB4NkRGNSwgMHg2REY1LCAweDE3NTEsIDB4NkRGNywgMHg2REY3LCAweDFFQTYsIDB4NkRGOCwgMHg2REY4LCAweDFDMUYsDQorICAgIDB4NkRGOSwgMHg2REY5LCAweDE3MkEsIDB4NkRGQSwgMHg2REZBLCAweDFCRjMsIDB4NkRGQiwgMHg2REZCLCAweDFDMEMsDQorICAgIDB4NkUxNywgMHg2RTE3LCAweDE0Q0IsIDB4NkUxOSwgMHg2RTE5LCAweDFFRDQsIDB4NkUxQSwgMHg2RTFBLCAweDE5Q0EsDQorICAgIDB4NkUxQiwgMHg2RTFCLCAweDBEQzAsIDB4NkUxRiwgMHg2RTFGLCAweDFBNEEsIDB4NkUyMCwgMHg2RTIwLCAweDBFMDksDQorICAgIDB4NkUyMSwgMHg2RTIxLCAweDEwQzEsIDB4NkUyMywgMHg2RTIzLCAweDE0OUEsIDB4NkUyNCwgMHg2RTI0LCAweDEzNDUsDQorICAgIDB4NkUyNSwgMHg2RTI1LCAweDE2QTksIDB4NkUyNiwgMHg2RTI2LCAweDE3RDMsIDB4NkUyQiwgMHg2RTJCLCAweDE1NEYsDQorICAgIDB4NkUyQywgMHg2RTJDLCAweDFDQTYsIDB4NkUyRCwgMHg2RTJELCAweDE4OTYsIDB4NkUyRiwgMHg2RTJGLCAweDFFMDAsDQorICAgIDB4NkUzMiwgMHg2RTMyLCAweDE1MzMsIDB4NkUzNCwgMHg2RTM0LCAweDBEQUYsIDB4NkUzNiwgMHg2RTM2LCAweDE3N0IsDQorICAgIDB4NkUzOCwgMHg2RTM4LCAweDE4QkQsIDB4NkUzQSwgMHg2RTNBLCAweDEyQzcsIDB4NkUzQywgMHg2RTNDLCAweDEyRkMsDQorICAgIDB4NkUzRCwgMHg2RTNELCAweDE5QjIsIDB4NkUzRSwgMHg2RTNFLCAweDFFQTcsIDB4NkU0MywgMHg2RTQzLCAweDEzNzAsDQorICAgIDB4NkU0NCwgMHg2RTQ0LCAweDEyRkQsIDB4NkU0QSwgMHg2RTRBLCAweDFBREYsIDB4NkU0RCwgMHg2RTRELCAweDEwNkIsDQorICAgIDB4NkU1NiwgMHg2RTU2LCAweDFFODcsIDB4NkU1OCwgMHg2RTU4LCAweDE0RTQsIDB4NkU1QiwgMHg2RTVCLCAweDEwN0YsDQorICAgIDB4NkU1QywgMHg2RTVDLCAweDE2NUYsIDB4NkU1RSwgMHg2RTVFLCAweDFBNEIsIDB4NkU1RiwgMHg2RTVGLCAweDFFRUIsDQorICAgIDB4NkU2NywgMHg2RTY3LCAweDE4MjksIDB4NkU2QiwgMHg2RTZCLCAweDFDNjcsIDB4NkU2RSwgMHg2RTZFLCAweDE5MzUsDQorICAgIDB4NkU2RiwgMHg2RTZGLCAweDFEMDUsIDB4NkU3MiwgMHg2RTcyLCAweDE4N0QsIDB4NkU3MywgMHg2RTczLCAweDEwMzQsDQorICAgIDB4NkU3QSwgMHg2RTdBLCAweDEzQzksIDB4NkU5MCwgMHg2RTkwLCAweDE4N0UsIDB4NkU5NiwgMHg2RTk2LCAweDFBRkYsDQorICAgIDB4NkU5QywgMHg2RTlDLCAweDExRTYsIDB4NkU5RCwgMHg2RTlELCAweDBGNTAsIDB4NkU5RiwgMHg2RTlGLCAweDEyOTIsDQorICAgIDB4NkVBMiwgMHg2RUEyLCAweDE5NDEsIDB4NkVBNSwgMHg2RUE1LCAweDE0MDgsIDB4NkVBQSwgMHg2RUFBLCAweDBFODQsDQorICAgIDB4NkVBQiwgMHg2RUFCLCAweDE3QzMsIDB4NkVBRiwgMHg2RUFGLCAweDE1OEEsIDB4NkVCMSwgMHg2RUIxLCAweDFCNEYsDQorICAgIDB4NkVCNiwgMHg2RUI2LCAweDE4MkEsIDB4NkVCQSwgMHg2RUJBLCAweDEwNUQsIDB4NkVDMiwgMHg2RUMyLCAweDEzNUIsDQorICAgIDB4NkVDNCwgMHg2RUM0LCAweDFCQzEsIDB4NkVDNSwgMHg2RUM1LCAweDEyOEEsIDB4NkVDOSwgMHg2RUM5LCAweDFFRUMsDQorICAgIDB4NkVDQiwgMHg2RUNCLCAweDE5NUQsIDB4NkVDQywgMHg2RUNDLCAweDFCRTYsIDB4NkVDRSwgMHg2RUNFLCAweDFFNjEsDQorICAgIDB4NkVEMSwgMHg2RUQxLCAweDFFREMsIDB4NkVEMywgMHg2RUQzLCAweDE5QjMsIDB4NkVENCwgMHg2RUQ0LCAweDEwQzIsDQorICAgIDB4NkVFRiwgMHg2RUVGLCAweDFDMjgsIDB4NkVGNCwgMHg2RUY0LCAweDE5RTEsIDB4NkVGOCwgMHg2RUY4LCAweDFFODgsDQorICAgIDB4NkVGRSwgMHg2RUZFLCAweDBFQzQsIDB4NkVGRiwgMHg2RUZGLCAweDEyNDcsIDB4NkYwMSwgMHg2RjAxLCAweDE3MTEsDQorICAgIDB4NkYwMiwgMHg2RjAyLCAweDFEOUUsIDB4NkYwNiwgMHg2RjA2LCAweDFDQzYsIDB4NkYwRiwgMHg2RjBGLCAweDExRDksDQorICAgIDB4NkYxMSwgMHg2RjExLCAweDBERjIsIDB4NkYxNCwgMHg2RjE0LCAweDE3NTIsIDB4NkYxNSwgMHg2RjE1LCAweDFBOEYsDQorICAgIDB4NkYyMCwgMHg2RjIwLCAweDEyM0EsIDB4NkYyMiwgMHg2RjIyLCAweDFERDgsIDB4NkYyMywgMHg2RjIzLCAweDExNzQsDQorICAgIDB4NkYyQiwgMHg2RjJCLCAweDEyNDgsIDB4NkYyQywgMHg2RjJDLCAweDFCMkYsIDB4NkYzMSwgMHg2RjMxLCAweDE1RDUsDQorICAgIDB4NkYzMiwgMHg2RjMyLCAweDFCQzIsIDB4NkYzOCwgMHg2RjM4LCAweDFBMjcsIDB4NkYzRiwgMHg2RjNGLCAweDE5OTcsDQorICAgIDB4NkY0MSwgMHg2RjQxLCAweDE3N0MsIDB4NkY1MSwgMHg2RjUxLCAweDEzNDYsIDB4NkY1NCwgMHg2RjU0LCAweDBFNDIsDQorICAgIDB4NkY1NywgMHg2RjU3LCAweDFCNzksIDB4NkY1OCwgMHg2RjU4LCAweDEzMzMsIDB4NkY1QSwgMHg2RjVBLCAweDE2MDIsDQorICAgIDB4NkY1QiwgMHg2RjVCLCAweDE5ODEsIDB4NkY1RSwgMHg2RjVFLCAweDExQTMsIDB4NkY1RiwgMHg2RjVGLCAweDE1MjQsDQorICAgIDB4NkY2MiwgMHg2RjYyLCAweDFFRUQsIDB4NkY2NCwgMHg2RjY0LCAweDE4REEsIDB4NkY2RCwgMHg2RjZELCAweDEwODAsDQorICAgIDB4NkY2RSwgMHg2RjZFLCAweDFBOTAsIDB4NkY3MCwgMHg2RjcwLCAweDBGOTIsIDB4NkY3QSwgMHg2RjdBLCAweDE5N0QsDQorICAgIDB4NkY3QywgMHg2RjdDLCAweDEwRjUsIDB4NkY3RCwgMHg2RjdELCAweDEzQ0EsIDB4NkY3RSwgMHg2RjdFLCAweDEyMUYsDQorICAgIDB4NkY4MSwgMHg2RjgxLCAweDE0RDAsIDB4NkY4NCwgMHg2Rjg0LCAweDFCODAsIDB4NkY4OCwgMHg2Rjg4LCAweDFDMDQsDQorICAgIDB4NkY4RCwgMHg2RjhELCAweDFBRTAsIDB4NkY4RSwgMHg2RjhFLCAweDFENUEsIDB4NkY5MCwgMHg2RjkwLCAweDE4NjEsDQorICAgIDB4NkY5NCwgMHg2Rjk0LCAweDFFODksIDB4NkY5NywgMHg2Rjk3LCAweDBEQTAsIDB4NkZBMywgMHg2RkEzLCAweDFERDksDQorICAgIDB4NkZBNCwgMHg2RkE0LCAweDFEMTYsIDB4NkZBNywgMHg2RkE3LCAweDExOUIsIDB4NkZBRSwgMHg2RkFFLCAweDFGMDMsDQorICAgIDB4NkZBRiwgMHg2RkFGLCAweDFCOTcsIDB4NkZCMSwgMHg2RkIxLCAweDFBMDUsIDB4NkZCMywgMHg2RkIzLCAweDE3QjUsDQorICAgIDB4NkZCOSwgMHg2RkI5LCAweDEwODEsIDB4NkZCRSwgMHg2RkJFLCAweDEwNzUsIDB4NkZDMCwgMHg2RkMwLCAweDBFMzEsDQorICAgIDB4NkZDMSwgMHg2RkMxLCAweDFDRUEsIDB4NkZDMiwgMHg2RkMyLCAweDExODYsIDB4NkZDMywgMHg2RkMzLCAweDEwNEYsDQorICAgIDB4NkZDQSwgMHg2RkNBLCAweDE3OTMsIDB4NkZENSwgMHg2RkQ1LCAweDE2MkQsIDB4NkZEQSwgMHg2RkRBLCAweDE3N0QsDQorICAgIDB4NkZERiwgMHg2RkRGLCAweDFBNzAsIDB4NkZFMCwgMHg2RkUwLCAweDFFOEEsIDB4NkZFMSwgMHg2RkUxLCAweDE4QkUsDQorICAgIDB4NkZFNCwgMHg2RkU0LCAweDEwQzMsIDB4NkZFOSwgMHg2RkU5LCAweDFFOEIsIDB4NkZFQiwgMHg2RkVCLCAweDExMzMsDQorICAgIDB4NkZFQywgMHg2RkVDLCAweDFCMDAsIDB4NkZFRiwgMHg2RkVGLCAweDFDRUIsIDB4NkZGMSwgMHg2RkYxLCAweDE0NkUsDQorICAgIDB4NkZGRSwgMHg2RkZFLCAweDExNjEsIDB4NzAwMSwgMHg3MDAxLCAweDE3MDIsIDB4NzAwNSwgMHg3MDA1LCAweDFFNjIsDQorICAgIDB4NzAwNiwgMHg3MDA2LCAweDEwRDYsIDB4NzAwOSwgMHg3MDA5LCAweDE0OUIsIDB4NzAwQiwgMHg3MDBCLCAweDE2ODcsDQorICAgIDB4NzAwRiwgMHg3MDBGLCAweDExRTcsIDB4NzAxMSwgMHg3MDExLCAweDFEOTYsIDB4NzAxNSwgMHg3MDE1LCAweDE0NkYsDQorICAgIDB4NzAxOCwgMHg3MDE4LCAweDExQTQsIDB4NzAxQSwgMHg3MDFBLCAweDFEREEsIDB4NzAxQiwgMHg3MDFCLCAweDE3N0UsDQorICAgIDB4NzAxQywgMHg3MDFDLCAweDE4RTIsIDB4NzAxRCwgMHg3MDFELCAweDExNkQsIDB4NzAxRSwgMHg3MDFFLCAweDFBNEMsDQorICAgIDB4NzAxRiwgMHg3MDFGLCAweDE1OEIsIDB4NzAyMywgMHg3MDIzLCAweDFFMEYsIDB4NzAyNywgMHg3MDI3LCAweDExQkIsDQorICAgIDB4NzAyOCwgMHg3MDI4LCAweDExQzAsIDB4NzAyRiwgMHg3MDJGLCAweDE3N0YsIDB4NzAzNywgMHg3MDM3LCAweDE5MjUsDQorICAgIDB4NzAzRSwgMHg3MDNFLCAweDExMjksIDB4NzA0QywgMHg3MDRDLCAweDBFRjEsIDB4NzA1MCwgMHg3MDUwLCAweDFFNjMsDQorICAgIDB4NzA1MSwgMHg3MDUxLCAweDE1QkEsIDB4NzA1OCwgMHg3MDU4LCAweDFDRjYsIDB4NzA1RCwgMHg3MDVELCAweDFFOEMsDQorICAgIDB4NzA2MywgMHg3MDYzLCAweDEyNDksIDB4NzA2QiwgMHg3MDZCLCAweDFFQkIsIDB4NzA3MCwgMHg3MDcwLCAweDFGMDQsDQorICAgIDB4NzA3OCwgMHg3MDc4LCAweDBGNTEsIDB4NzA3QywgMHg3MDdDLCAweDE5NzIsIDB4NzA3RCwgMHg3MDdELCAweDE5QjQsDQorICAgIDB4NzA4NSwgMHg3MDg1LCAweDBFNjEsIDB4NzA4QSwgMHg3MDhBLCAweDFDOTksIDB4NzA4RSwgMHg3MDhFLCAweDE3NjcsDQorICAgIDB4NzA5MiwgMHg3MDkyLCAweDFDMzgsIDB4NzA5OCwgMHg3MDk4LCAweDFGNTUsIDB4NzA5OSwgMHg3MDk5LCAweDE5NUUsDQorICAgIDB4NzA5QSwgMHg3MDlBLCAweDBGMDYsIDB4NzBBMSwgMHg3MEExLCAweDFBNEQsIDB4NzBBNCwgMHg3MEE0LCAweDE1OEMsDQorICAgIDB4NzBBQiwgMHg3MEFCLCAweDFFM0MsIDB4NzBBQywgMHg3MEFDLCAweDBFMEEsIDB4NzBBRCwgMHg3MEFELCAweDFDRjcsDQorICAgIDB4NzBBRiwgMHg3MEFGLCAweDFFNjQsIDB4NzBCMywgMHg3MEIzLCAweDEzQkEsIDB4NzBCNywgMHg3MEI3LCAweDFBRTEsDQorICAgIDB4NzBCOCwgMHg3MEI4LCAweDE5NzMsIDB4NzBCOSwgMHg3MEI5LCAweDFBMjgsIDB4NzBDOCwgMHg3MEM4LCAweDExODEsDQorICAgIDB4NzBDQiwgMHg3MENCLCAweDFGNDcsIDB4NzBDRiwgMHg3MENGLCAweDE3QjYsIDB4NzBEOCwgMHg3MEQ4LCAweDFFQjIsDQorICAgIDB4NzBEOSwgMHg3MEQ5LCAweDExMUYsIDB4NzBERCwgMHg3MERELCAweDFCMTcsIDB4NzBERiwgMHg3MERGLCAweDE3NTMsDQorICAgIDB4NzBGMSwgMHg3MEYxLCAweDBFNjIsIDB4NzBGOSwgMHg3MEY5LCAweDFENUIsIDB4NzBGRCwgMHg3MEZELCAweDEzRUMsDQorICAgIDB4NzEwNCwgMHg3MTA0LCAweDFGMkYsIDB4NzEwOSwgMHg3MTA5LCAweDE3MjAsIDB4NzEwQywgMHg3MTBDLCAweDFCMDEsDQorICAgIDB4NzExOSwgMHg3MTE5LCAweDEzNzEsIDB4NzExQSwgMHg3MTFBLCAweDE0MkIsIDB4NzExRSwgMHg3MTFFLCAweDEwRTUsDQorICAgIDB4NzEyMSwgMHg3MTIxLCAweDEyRDcsIDB4NzEyNiwgMHg3MTI2LCAweDFDMzksIDB4NzEzMCwgMHg3MTMwLCAweDE3NjgsDQorICAgIDB4NzEzNiwgMHg3MTM2LCAweDE3NTQsIDB4NzE0NywgMHg3MTQ3LCAweDFGNDEsIDB4NzE0OSwgMHg3MTQ5LCAweDExNzUsDQorICAgIDB4NzE0QSwgMHg3MTRBLCAweDFGMzgsIDB4NzE0QywgMHg3MTRDLCAweDFFRUUsIDB4NzE0RSwgMHg3MTRFLCAweDFBMDYsDQorICAgIDB4NzE1MCwgMHg3MTUwLCAweDE3ODAsIDB4NzE1NiwgMHg3MTU2LCAweDEwMkQsIDB4NzE1OSwgMHg3MTU5LCAweDE3NTUsDQorICAgIDB4NzE1QywgMHg3MTVDLCAweDE4NUEsIDB4NzE1RSwgMHg3MTVFLCAweDE0QzYsIDB4NzE2NCwgMHg3MTY0LCAweDEyNkMsDQorICAgIDB4NzE2NSwgMHg3MTY1LCAweDFFRDUsIDB4NzE2NiwgMHg3MTY2LCAweDFGMjgsIDB4NzE2NywgMHg3MTY3LCAweDFBOTEsDQorICAgIDB4NzE2OSwgMHg3MTY5LCAweDEzODYsIDB4NzE2QywgMHg3MTZDLCAweDE3MDMsIDB4NzE2RSwgMHg3MTZFLCAweDE5NUYsDQorICAgIDB4NzE3RCwgMHg3MTdELCAweDE1MzQsIDB4NzE4NCwgMHg3MTg0LCAweDE2NjAsIDB4NzE4OSwgMHg3MTg5LCAweDE4NjIsDQorICAgIDB4NzE4QSwgMHg3MThBLCAweDE4NkQsIDB4NzE4RiwgMHg3MThGLCAweDFGMzAsIDB4NzE5MiwgMHg3MTkyLCAweDFFNjUsDQorICAgIDB4NzE5NCwgMHg3MTk0LCAweDE4MkIsIDB4NzE5OSwgMHg3MTk5LCAweDFGNzAsIDB4NzE5RiwgMHg3MTlGLCAweDE2MDMsDQorICAgIDB4NzFBMiwgMHg3MUEyLCAweDEzRUQsIDB4NzFBQywgMHg3MUFDLCAweDE3QjcsIDB4NzFCMSwgMHg3MUIxLCAweDE3NjMsDQorICAgIDB4NzFCOSwgMHg3MUJBLCAweDFGNzEsIDB4NzFCRSwgMHg3MUJFLCAweDFDQjEsIDB4NzFDMSwgMHg3MUMxLCAweDE3NzAsDQorICAgIDB4NzFDMywgMHg3MUMzLCAweDE3NTYsIDB4NzFDOCwgMHg3MUM4LCAweDExMEYsIDB4NzFDOSwgMHg3MUM5LCAweDEwRTYsDQorICAgIDB4NzFDRSwgMHg3MUNFLCAweDExQ0MsIDB4NzFEMCwgMHg3MUQwLCAweDEyMjAsIDB4NzFEMiwgMHg3MUQyLCAweDE1OEQsDQorICAgIDB4NzFENCwgMHg3MUQ0LCAweDEzODcsIDB4NzFENSwgMHg3MUQ1LCAweDE3NTcsIDB4NzFERiwgMHg3MURGLCAweDE3ODEsDQorICAgIDB4NzFFNSwgMHg3MUU1LCAweDFBOTIsIDB4NzFFNiwgMHg3MUU2LCAweDFCOTgsIDB4NzFFNywgMHg3MUU3LCAweDE1RDYsDQorICAgIDB4NzFFRCwgMHg3MUVELCAweDFDNEIsIDB4NzFFRSwgMHg3MUVFLCAweDE1NjEsIDB4NzFGQiwgMHg3MUZCLCAweDFGMzEsDQorICAgIDB4NzFGQywgMHg3MUZDLCAweDE2NzAsIDB4NzFGRSwgMHg3MUZFLCAweDEwQzQsIDB4NzFGRiwgMHg3MUZGLCAweDE4MEEsDQorICAgIDB4NzIwMCwgMHg3MjAwLCAweDFFMzMsIDB4NzIwNiwgMHg3MjA2LCAweDFEOTcsIDB4NzIxMCwgMHg3MjEwLCAweDExQTUsDQorICAgIDB4NzIxQiwgMHg3MjFCLCAweDExMkEsIDB4NzIyQSwgMHg3MjJBLCAweDFBOTMsIDB4NzIyQywgMHg3MjJDLCAweDFEM0IsDQorICAgIDB4NzIyRCwgMHg3MjJELCAweDE5QkIsIDB4NzIzMCwgMHg3MjMwLCAweDE4N0YsIDB4NzIzMiwgMHg3MjMyLCAweDE4OTcsDQorICAgIDB4NzIzNSwgMHg3MjM1LCAweDE5NzQsIDB4NzIzNiwgMHg3MjM2LCAweDE0MDksIDB4NzIzQSwgMHg3MjNBLCAweDE2RUQsDQorICAgIDB4NzIzQiwgMHg3MjNCLCAweDFGMUEsIDB4NzIzRCwgMHg3MjNELCAweDE0RTUsIDB4NzIzRSwgMHg3MjNFLCAweDE5MTYsDQorICAgIDB4NzI0MCwgMHg3MjQwLCAweDE0RTYsIDB4NzI0NiwgMHg3MjQ2LCAweDE5OTgsIDB4NzI0NywgMHg3MjQ3LCAweDFENjEsDQorICAgIDB4NzI0OCwgMHg3MjQ4LCAweDFENDUsIDB4NzI0QywgMHg3MjRDLCAweDFENTQsIDB4NzI1MiwgMHg3MjUyLCAweDFDMTcsDQorICAgIDB4NzI1OCwgMHg3MjU4LCAweDEwRDcsIDB4NzI1OSwgMHg3MjU5LCAweDE2OTYsIDB4NzI1QiwgMHg3MjVCLCAweDE4NDIsDQorICAgIDB4NzI1RCwgMHg3MjVELCAweDE0NzAsIDB4NzI1RiwgMHg3MjVGLCAweDEyQTksIDB4NzI2MSwgMHg3MjYxLCAweDEyQUEsDQorICAgIDB4NzI2MiwgMHg3MjYyLCAweDExQzEsIDB4NzI2NywgMHg3MjY3LCAweDEyQjYsIDB4NzI2OSwgMHg3MjY5LCAweDEyRjIsDQorICAgIDB4NzI3MiwgMHg3MjcyLCAweDE0RjksIDB4NzI3OSwgMHg3Mjc5LCAweDFEMzAsIDB4NzI3RCwgMHg3MjdELCAweDBFMzYsDQorICAgIDB4NzI4MCwgMHg3MjgwLCAweDE1MEMsIDB4NzI4MSwgMHg3MjgxLCAweDEyMEYsIDB4NzJBMiwgMHg3MkEyLCAweDEwRDgsDQorICAgIDB4NzJBNywgMHg3MkE3LCAweDFGNzMsIDB4NzJBQywgMHg3MkFDLCAweDBFMzcsIDB4NzJBRiwgMHg3MkFGLCAweDEzOTcsDQorICAgIDB4NzJDMCwgMHg3MkMwLCAweDE0RTcsIDB4NzJDMiwgMHg3MkMyLCAweDBGMDcsIDB4NzJDNCwgMHg3MkM0LCAweDE5RTIsDQorICAgIDB4NzJDRSwgMHg3MkNFLCAweDE2QzcsIDB4NzJEMCwgMHg3MkQwLCAweDFFOEQsIDB4NzJENywgMHg3MkQ3LCAweDBGNTIsDQorICAgIDB4NzJEOSwgMHg3MkQ5LCAweDE5Q0IsIDB4NzJFMSwgMHg3MkUxLCAweDBGMjcsIDB4NzJFOSwgMHg3MkU5LCAweDE1RDcsDQorICAgIDB4NzJGOCwgMHg3MkY4LCAweDEyMTAsIDB4NzJGOSwgMHg3MkY5LCAweDFFNTUsIDB4NzJGQywgMHg3MkZDLCAweDExM0YsDQorICAgIDB4NzJGRCwgMHg3MkZELCAweDFENTUsIDB4NzMwQSwgMHg3MzBBLCAweDE3OTQsIDB4NzMxNiwgMHg3MzE2LCAweDFCQzMsDQorICAgIDB4NzMxQiwgMHg3MzFCLCAweDEyNzksIDB4NzMxQywgMHg3MzFDLCAweDE2NEMsIDB4NzMxRCwgMHg3MzFELCAweDFBQjQsDQorICAgIDB4NzMyNSwgMHg3MzI1LCAweDE3RkEsIDB4NzMyOSwgMHg3MzI5LCAweDE1NkEsIDB4NzMyQSwgMHg3MzJBLCAweDE5Q0MsDQorICAgIDB4NzMyQiwgMHg3MzJCLCAweDEyQzgsIDB4NzMzNiwgMHg3MzM3LCAweDE4QkYsIDB4NzMzRSwgMHg3MzNFLCAweDFFREQsDQorICAgIDB4NzMzRiwgMHg3MzNGLCAweDE4ODAsIDB4NzM0NCwgMHg3MzQ0LCAweDE3QzAsIDB4NzM0NSwgMHg3MzQ1LCAweDE0OUMsDQorICAgIDB4NzM1MCwgMHg3MzUwLCAweDE5OTksIDB4NzM1MiwgMHg3MzUyLCAweDE3QjgsIDB4NzM1NywgMHg3MzU3LCAweDBGOEMsDQorICAgIDB4NzM2OCwgMHg3MzY4LCAweDEwRDksIDB4NzM2QSwgMHg3MzZBLCAweDFGMDUsIDB4NzM3MCwgMHg3MzcwLCAweDE3ODIsDQorICAgIDB4NzM3MiwgMHg3MzcyLCAweDFGMEQsIDB4NzM3NSwgMHg3Mzc1LCAweDExODgsIDB4NzM3OCwgMHg3Mzc4LCAweDE1RDgsDQorICAgIDB4NzM3QSwgMHg3MzdBLCAweDEwNzYsIDB4NzM3QiwgMHg3MzdCLCAweDFFMkQsIDB4NzM4NCwgMHg3Mzg0LCAweDFFM0QsDQorICAgIDB4NzM4NiwgMHg3Mzg2LCAweDE5NjAsIDB4NzM4NywgMHg3Mzg3LCAweDE1QjAsIDB4NzM4OSwgMHg3Mzg5LCAweDE3QzEsDQorICAgIDB4NzM4QiwgMHg3MzhCLCAweDE3RjIsIDB4NzM4RSwgMHg3MzhFLCAweDFBNEUsIDB4NzM5NCwgMHg3Mzk0LCAweDFCRjQsDQorICAgIDB4NzM5NiwgMHg3Mzk2LCAweDBGNTMsIDB4NzM5NywgMHg3Mzk3LCAweDE4NDMsIDB4NzM5OCwgMHg3Mzk4LCAweDBGRkUsDQorICAgIDB4NzM5RiwgMHg3MzlGLCAweDEzMEYsIDB4NzNBNywgMHg3M0E3LCAweDE4REIsIDB4NzNBOSwgMHg3M0E5LCAweDE3RTEsDQorICAgIDB4NzNBRCwgMHg3M0FELCAweDE0NzEsIDB4NzNCMiwgMHg3M0IyLCAweDExOEYsIDB4NzNCMywgMHg3M0IzLCAweDEwQTQsDQorICAgIDB4NzNCOSwgMHg3M0I5LCAweDFFM0UsIDB4NzNDMCwgMHg3M0MwLCAweDEzMUUsIDB4NzNDMiwgMHg3M0MyLCAweDBEN0MsDQorICAgIDB4NzNDOSwgMHg3M0M5LCAweDEzMTAsIDB4NzNDQSwgMHg3M0NBLCAweDE0QkMsIDB4NzNDQywgMHg3M0NDLCAweDFEQjgsDQorICAgIDB4NzNDRCwgMHg3M0NELCAweDFCNTAsIDB4NzNDRiwgMHg3M0NGLCAweDBEOEYsIDB4NzNENiwgMHg3M0Q2LCAweDBGMDgsDQorICAgIDB4NzNEOSwgMHg3M0Q5LCAweDBFRDUsIDB4NzNERCwgMHg3M0RELCAweDFGMjksIDB4NzNERSwgMHg3M0RFLCAweDExMjAsDQorICAgIDB4NzNFMCwgMHg3M0UwLCAweDFBRTIsIDB4NzNFMywgMHg3M0UzLCAweDE2MTMsIDB4NzNFNCwgMHg3M0U0LCAweDEzQ0IsDQorICAgIDB4NzNFNSwgMHg3M0U1LCAweDE5MTcsIDB4NzNFNiwgMHg3M0U2LCAweDFFMjEsIDB4NzNFOSwgMHg3M0U5LCAweDFFNjYsDQorICAgIDB4NzNFQSwgMHg3M0VBLCAweDBGOUYsIDB4NzNFRCwgMHg3M0VELCAweDEzMzQsIDB4NzNGNywgMHg3M0Y3LCAweDEyRDgsDQorICAgIDB4NzNGOSwgMHg3M0Y5LCAweDE1NkIsIDB4NzNGRCwgMHg3M0ZELCAweDFBNEYsIDB4NzNGRSwgMHg3M0ZFLCAweDFFM0YsDQorICAgIDB4NzQwMSwgMHg3NDAxLCAweDE1MzUsIDB4NzQwMywgMHg3NDAzLCAweDBGNTQsIDB4NzQwNSwgMHg3NDA1LCAweDExNDAsDQorICAgIDB4NzQwNiwgMHg3NDA2LCAweDEyMTEsIDB4NzQwNywgMHg3NDA3LCAweDE1RDksIDB4NzQwOSwgMHg3NDA5LCAweDExRTgsDQorICAgIDB4NzQxMywgMHg3NDEzLCAweDE3RTIsIDB4NzQxQiwgMHg3NDFCLCAweDFDQ0MsIDB4NzQyMCwgMHg3NDIwLCAweDFBMDcsDQorICAgIDB4NzQyMSwgMHg3NDIxLCAweDE2MDQsIDB4NzQyMiwgMHg3NDIyLCAweDFDRUMsIDB4NzQyNSwgMHg3NDI1LCAweDFFOEUsDQorICAgIDB4NzQyNiwgMHg3NDI2LCAweDBGRkYsIDB4NzQyOCwgMHg3NDI4LCAweDBFQzUsIDB4NzQyQSwgMHg3NDJBLCAweDEwMDAsDQorICAgIDB4NzQyQiwgMHg3NDJCLCAweDEzRUUsIDB4NzQyQywgMHg3NDJDLCAweDE3RTMsIDB4NzQyRSwgMHg3NDJFLCAweDFBQkMsDQorICAgIDB4NzQyRiwgMHg3NDJGLCAweDBFRjIsIDB4NzQzMCwgMHg3NDMwLCAweDE3NjksIDB4NzQzMywgMHg3NDMzLCAweDEyMjksDQorICAgIDB4NzQzNCwgMHg3NDM0LCAweDBGQ0IsIDB4NzQzNSwgMHg3NDM1LCAweDE0NTEsIDB4NzQzNiwgMHg3NDM2LCAweDFEM0MsDQorICAgIDB4NzQzOCwgMHg3NDM4LCAweDFDRUQsIDB4NzQzQSwgMHg3NDNBLCAweDEzOUIsIDB4NzQzRiwgMHg3NDNGLCAweDFFQTgsDQorICAgIDB4NzQ0MCwgMHg3NDQwLCAweDE4NDQsIDB4NzQ0MSwgMHg3NDQxLCAweDEyQUIsIDB4NzQ0MywgMHg3NDQzLCAweDFDODYsDQorICAgIDB4NzQ0NCwgMHg3NDQ0LCAweDE1MzYsIDB4NzQ0QiwgMHg3NDRCLCAweDE4OTgsIDB4NzQ1NSwgMHg3NDU1LCAweDFEQzcsDQorICAgIDB4NzQ1NywgMHg3NDU3LCAweDE4ODEsIDB4NzQ1OSwgMHg3NDU5LCAweDEwNEQsIDB4NzQ1QSwgMHg3NDVBLCAweDFFOEYsDQorICAgIDB4NzQ1QiwgMHg3NDVCLCAweDE3ODMsIDB4NzQ1QywgMHg3NDVDLCAweDE4QzEsIDB4NzQ1RSwgMHg3NDVFLCAweDE1MEQsDQorICAgIDB4NzQ1RiwgMHg3NDVGLCAweDE2MkEsIDB4NzQ2MCwgMHg3NDYwLCAweDExRTksIDB4NzQ2MiwgMHg3NDYyLCAweDE4MkMsDQorICAgIDB4NzQ2NCwgMHg3NDY0LCAweDE4MEIsIDB4NzQ2NSwgMHg3NDY1LCAweDE3QzQsIDB4NzQ2OCwgMHg3NDY4LCAweDFCNTEsDQorICAgIDB4NzQ2OSwgMHg3NDY5LCAweDFFNjcsIDB4NzQ2QSwgMHg3NDZBLCAweDEyMzEsIDB4NzQ2RiwgMHg3NDZGLCAweDExNDEsDQorICAgIDB4NzQ3RSwgMHg3NDdFLCAweDBGQkUsIDB4NzQ4MiwgMHg3NDgyLCAweDEwMDEsIDB4NzQ4MywgMHg3NDgzLCAweDEyMTIsDQorICAgIDB4NzQ4NywgMHg3NDg3LCAweDE1MzcsIDB4NzQ4OSwgMHg3NDg5LCAweDExNzYsIDB4NzQ4QiwgMHg3NDhCLCAweDE5OUEsDQorICAgIDB4NzQ5OCwgMHg3NDk4LCAweDEyMjEsIDB4NzQ5QywgMHg3NDlDLCAweDFFRUYsIDB4NzQ5RSwgMHg3NDlFLCAweDEzMUYsDQorICAgIDB4NzQ5RiwgMHg3NDlGLCAweDBFNjMsIDB4NzRBMSwgMHg3NEExLCAweDFCNTIsIDB4NzRBMywgMHg3NEEzLCAweDEwMDIsDQorICAgIDB4NzRBNSwgMHg3NEE1LCAweDBFNjQsIDB4NzRBNywgMHg3NEE3LCAweDEzQTEsIDB4NzRBOCwgMHg3NEE4LCAweDFCOTksDQorICAgIDB4NzRBQSwgMHg3NEFBLCAweDFBOTQsIDB4NzRCMCwgMHg3NEIwLCAweDFFRDYsIDB4NzRCMiwgMHg3NEIyLCAweDE1REEsDQorICAgIDB4NzRCNSwgMHg3NEI1LCAweDE3MzMsIDB4NzRCOSwgMHg3NEI5LCAweDE2MDUsIDB4NzRCRCwgMHg3NEJELCAweDE0RjMsDQorICAgIDB4NzRCRiwgMHg3NEJGLCAweDE1MzgsIDB4NzRDNiwgMHg3NEM2LCAweDFCNkQsIDB4NzRDQSwgMHg3NENBLCAweDBFNjUsDQorICAgIDB4NzRDRiwgMHg3NENGLCAweDExQkMsIDB4NzRENCwgMHg3NEQ0LCAweDE3ODQsIDB4NzREOCwgMHg3NEQ4LCAweDBFRjMsDQorICAgIDB4NzREQSwgMHg3NERBLCAweDFCOUEsIDB4NzREQywgMHg3NERDLCAweDBFREUsIDB4NzRFMCwgMHg3NEUwLCAweDFFOTAsDQorICAgIDB4NzRFMiwgMHg3NEUyLCAweDFEOUYsIDB4NzRFMywgMHg3NEUzLCAweDFENDYsIDB4NzRFNiwgMHg3NEU2LCAweDE3RDQsDQorICAgIDB4NzRFRSwgMHg3NEVFLCAweDE3Q0MsIDB4NzRGNywgMHg3NEY3LCAweDE5NjEsIDB4NzUwMSwgMHg3NTAxLCAweDEzQkIsDQorICAgIDB4NzUwNCwgMHg3NTA0LCAweDBFMzgsIDB4NzUxMSwgMHg3NTExLCAweDFCMTgsIDB4NzUxNSwgMHg3NTE1LCAweDE3Q0QsDQorICAgIDB4NzUxOCwgMHg3NTE4LCAweDBEQzEsIDB4NzUxQSwgMHg3NTFBLCAweDE2ODgsIDB4NzUxQiwgMHg3NTFCLCAweDFDMEQsDQorICAgIDB4NzUxRiwgMHg3NTFGLCAweDE0RkEsIDB4NzUyMywgMHg3NTIzLCAweDE0QkQsIDB4NzUyNSwgMHg3NTI1LCAweDE0RkIsDQorICAgIDB4NzUyNiwgMHg3NTI2LCAweDE1OEUsIDB4NzUyOCwgMHg3NTI4LCAweDE4MkQsIDB4NzUyQiwgMHg3NTJCLCAweDEzQ0MsDQorICAgIDB4NzUyQywgMHg3NTJDLCAweDE4MkUsIDB4NzUzMCwgMHg3NTMwLCAweDFBMDgsIDB4NzUzMSwgMHg3NTMxLCAweDE4QzIsDQorICAgIDB4NzUzMiwgMHg3NTMyLCAweDBEQ0MsIDB4NzUzMywgMHg3NTMzLCAweDE2NzEsIDB4NzUzNywgMHg3NTM3LCAweDEwMzUsDQorICAgIDB4NzUzOCwgMHg3NTM4LCAweDFBMDksIDB4NzUzQSwgMHg3NTNBLCAweDFBNTAsIDB4NzU0NywgMHg3NTQ3LCAweDBGQUIsDQorICAgIDB4NzU0QywgMHg3NTRDLCAweDBFODUsIDB4NzU0RiwgMHg3NTRGLCAweDE3RkIsIDB4NzU1MSwgMHg3NTUxLCAweDFBMEEsDQorICAgIDB4NzU1MywgMHg3NTUzLCAweDEwOEIsIDB4NzU1NCwgMHg3NTU0LCAweDEzMzUsIDB4NzU1OSwgMHg3NTU5LCAweDExRUEsDQorICAgIDB4NzU1QiwgMHg3NTVCLCAweDFCNTMsIDB4NzU1QywgMHg3NTVDLCAweDFDNzksIDB4NzU1RCwgMHg3NTVELCAweDEyRDksDQorICAgIDB4NzU2MiwgMHg3NTYyLCAweDFEQjksIDB4NzU2NSwgMHg3NTY1LCAweDExNEEsIDB4NzU2NiwgMHg3NTY2LCAweDFGNDgsDQorICAgIDB4NzU2QSwgMHg3NTZBLCAweDEzODgsIDB4NzU2RiwgMHg3NTZGLCAweDFCMDIsIDB4NzU3MCwgMHg3NTcwLCAweDE5MTgsDQorICAgIDB4NzU3NSwgMHg3NTc1LCAweDFFQkMsIDB4NzU3NiwgMHg3NTc2LCAweDEwOTYsIDB4NzU3OCwgMHg3NTc4LCAweDEwMDMsDQorICAgIDB4NzU3QSwgMHg3NTdBLCAweDBEREEsIDB4NzU3RiwgMHg3NTdGLCAweDEwMDQsIDB4NzU4NiwgMHg3NTg2LCAweDBEREIsDQorICAgIDB4NzU4NywgMHg3NTg3LCAweDFBRTMsIDB4NzU4QSwgMHg3NThBLCAweDFDMTgsIDB4NzU4QiwgMHg3NThCLCAweDFEQkEsDQorICAgIDB4NzU4RSwgMHg3NThFLCAweDE1OTAsIDB4NzU4RiwgMHg3NThGLCAweDE1OEYsIDB4NzU5MSwgMHg3NTkxLCAweDE5MDMsDQorICAgIDB4NzU5RCwgMHg3NTlELCAweDE0QkUsIDB4NzVBNSwgMHg3NUE1LCAweDBERjMsIDB4NzVBQiwgMHg3NUFCLCAweDE3M0YsDQorICAgIDB4NzVCMSwgMHg3NUIxLCAweDFEODYsIDB4NzVCMiwgMHg3NUIyLCAweDFEQUYsIDB4NzVCMywgMHg3NUIzLCAweDBEQzIsDQorICAgIDB4NzVCNSwgMHg3NUI1LCAweDE5NjIsIDB4NzVCOCwgMHg3NUI4LCAweDEwNzcsIDB4NzVCOSwgMHg3NUI5LCAweDFCNTQsDQorICAgIDB4NzVCQywgMHg3NUJDLCAweDEwRjYsIDB4NzVCRCwgMHg3NUJELCAweDE5Q0QsIDB4NzVCRSwgMHg3NUJFLCAweDFCNkUsDQorICAgIDB4NzVDMiwgMHg3NUMyLCAweDBEN0QsIDB4NzVDNSwgMHg3NUM1LCAweDEzQkMsIDB4NzVDNywgMHg3NUM3LCAweDFCMTksDQorICAgIDB4NzVDRCwgMHg3NUNELCAweDE5MTksIDB4NzVEMiwgMHg3NUQyLCAweDE3MDQsIDB4NzVENCwgMHg3NUQ0LCAweDFDQjIsDQorICAgIDB4NzVENSwgMHg3NUQ1LCAweDFGNTYsIDB4NzVEOCwgMHg3NUQ4LCAweDExMDAsIDB4NzVEOSwgMHg3NUQ5LCAweDBFNjYsDQorICAgIDB4NzVEQiwgMHg3NURCLCAweDFEMUYsIDB4NzVFMiwgMHg3NUUyLCAweDEyMTMsIDB4NzVGMCwgMHg3NUYwLCAweDEwODIsDQorICAgIDB4NzVGMiwgMHg3NUYyLCAweDEyMzIsIDB4NzVGNCwgMHg3NUY0LCAweDFDQjMsIDB4NzVGQSwgMHg3NUZBLCAweDE0NTIsDQorICAgIDB4NzVGQywgMHg3NUZDLCAweDBFQTIsIDB4NzYwMCwgMHg3NjAwLCAweDE3MTIsIDB4NzYwRCwgMHg3NjBELCAweDE3MDUsDQorICAgIDB4NzYxOSwgMHg3NjE5LCAweDE1OTEsIDB4NzYxRiwgMHg3NjFGLCAweDE3QzUsIDB4NzYyMCwgMHg3NjIwLCAweDFCRTcsDQorICAgIDB4NzYyMSwgMHg3NjIxLCAweDFCQzQsIDB4NzYyMiwgMHg3NjIyLCAweDEzMzYsIDB4NzYyNCwgMHg3NjI0LCAweDExRUIsDQorICAgIDB4NzYyNiwgMHg3NjI2LCAweDE1REIsIDB4NzYzQiwgMHg3NjNCLCAweDExREEsIDB4NzY0MiwgMHg3NjQyLCAweDExQ0QsDQorICAgIDB4NzY0QywgMHg3NjRDLCAweDE2QzIsIDB4NzY0RSwgMHg3NjRFLCAweDBEQTEsIDB4NzY1MiwgMHg3NjUyLCAweDE4QzMsDQorICAgIDB4NzY1NiwgMHg3NjU2LCAweDEzQTIsIDB4NzY2MSwgMHg3NjYxLCAweDFDQjQsIDB4NzY2NCwgMHg3NjY0LCAweDFBMjAsDQorICAgIDB4NzY2OSwgMHg3NjY5LCAweDExMTgsIDB4NzY2QywgMHg3NjZDLCAweDE1MzksIDB4NzY3MCwgMHg3NjcwLCAweDE3Q0UsDQorICAgIDB4NzY3MiwgMHg3NjcyLCAweDFBMEIsIDB4NzY3OCwgMHg3Njc4LCAweDBFODYsIDB4NzY3QiwgMHg3NjdCLCAweDExMTAsDQorICAgIDB4NzY3QywgMHg3NjdDLCAweDEzNDcsIDB4NzY3RCwgMHg3NjdFLCAweDEzODEsIDB4NzY4NCwgMHg3Njg0LCAweDE5RTMsDQorICAgIDB4NzY4NiwgMHg3Njg2LCAweDBERjQsIDB4NzY4NywgMHg3Njg3LCAweDFFRjAsIDB4NzY4RSwgMHg3NjhFLCAweDBGMjgsDQorICAgIDB4NzY5MCwgMHg3NjkwLCAweDBFQTMsIDB4NzY5MywgMHg3NjkzLCAweDFFOTEsIDB4NzZBRSwgMHg3NkFFLCAweDFEQjAsDQorICAgIDB4NzZCQSwgMHg3NkJBLCAweDFDNjgsIDB4NzZCRiwgMHg3NkJGLCAweDEyOTMsIDB4NzZDMiwgMHg3NkMyLCAweDE4NDUsDQorICAgIDB4NzZDMywgMHg3NkMzLCAweDEzNzIsIDB4NzZDNiwgMHg3NkM2LCAweDE0MkMsIDB4NzZDOCwgMHg3NkM4LCAweDE3ODUsDQorICAgIDB4NzZDQSwgMHg3NkNBLCAweDE5MjYsIDB4NzZEMiwgMHg3NkQyLCAweDFERjEsIDB4NzZENiwgMHg3NkQ2LCAweDBERjUsDQorICAgIDB4NzZEQiwgMHg3NkRCLCAweDE1NkMsIDB4NzZEQywgMHg3NkRDLCAweDEwQzUsIDB4NzZERSwgMHg3NkRFLCAweDE5N0UsDQorICAgIDB4NzZERiwgMHg3NkRGLCAweDEyN0IsIDB4NzZFMSwgMHg3NkUxLCAweDFCNTUsIDB4NzZFMywgMHg3NkUzLCAweDBEQzMsDQorICAgIDB4NzZFNCwgMHg3NkU0LCAweDEzMzcsIDB4NzZFNywgMHg3NkU3LCAweDExQTYsIDB4NzZFRSwgMHg3NkVFLCAweDEyQjcsDQorICAgIDB4NzZGMiwgMHg3NkYyLCAweDEyN0EsIDB4NzZGNCwgMHg3NkY0LCAweDFCM0YsIDB4NzZGOCwgMHg3NkY4LCAweDE0RTgsDQorICAgIDB4NzZGQywgMHg3NkZDLCAweDEzMzgsIDB4NzZGRSwgMHg3NkZFLCAweDE2MTQsIDB4NzcwMSwgMHg3NzAxLCAweDE1NkQsDQorICAgIDB4NzcwNCwgMHg3NzA0LCAweDEyODQsIDB4NzcwOCwgMHg3NzA4LCAweDFDRkQsIDB4NzcwOSwgMHg3NzA5LCAweDEyRkUsDQorICAgIDB4NzcwQiwgMHg3NzBCLCAweDBEQTIsIDB4NzcxRSwgMHg3NzFFLCAweDFCNTYsIDB4NzcyMCwgMHg3NzIwLCAweDEyODUsDQorICAgIDB4NzcyOSwgMHg3NzI5LCAweDFFNDAsIDB4NzczNywgMHg3NzM3LCAweDBGOEEsIDB4NzczOCwgMHg3NzM4LCAweDEyQUMsDQorICAgIDB4NzczQSwgMHg3NzNBLCAweDFBOTUsIDB4NzczQywgMHg3NzNDLCAweDE2QjQsIDB4Nzc0MCwgMHg3NzQwLCAweDFCOTEsDQorICAgIDB4Nzc0RCwgMHg3NzRELCAweDFFNDEsIDB4Nzc1QiwgMHg3NzVCLCAweDFBNTEsIDB4Nzc2MSwgMHg3NzYxLCAweDE1REMsDQorICAgIDB4Nzc2MywgMHg3NzYzLCAweDEwREEsIDB4Nzc2NiwgMHg3NzY2LCAweDEyQjgsIDB4Nzc2QiwgMHg3NzZCLCAweDFDMTksDQorICAgIDB4Nzc3OSwgMHg3Nzc5LCAweDEwQzYsIDB4Nzc3RSwgMHg3NzdFLCAweDBFQTQsIDB4Nzc3RiwgMHg3NzdGLCAweDE3OTUsDQorICAgIDB4Nzc4QiwgMHg3NzhCLCAweDFCNTcsIDB4Nzc5MSwgMHg3NzkxLCAweDEyOTQsIDB4Nzc5RSwgMHg3NzlFLCAweDEyNEEsDQorICAgIDB4NzdBNSwgMHg3N0E1LCAweDEzQUUsIDB4NzdBQywgMHg3N0FDLCAweDE2MTUsIDB4NzdBRCwgMHg3N0FELCAweDExQ0UsDQorICAgIDB4NzdCMCwgMHg3N0IwLCAweDBEQzQsIDB4NzdCMywgMHg3N0IzLCAweDEwRjcsIDB4NzdCQiwgMHg3N0JCLCAweDFDMEUsDQorICAgIDB4NzdCQywgMHg3N0JDLCAweDBFMjUsIDB4NzdCRiwgMHg3N0JGLCAweDBGNTUsIDB4NzdENywgMHg3N0Q3LCAweDFDNEMsDQorICAgIDB4NzdEQiwgMHg3N0RCLCAweDEyQUQsIDB4NzdEQywgMHg3N0RDLCAweDBGREMsIDB4NzdFMiwgMHg3N0UyLCAweDE2NEQsDQorICAgIDB4NzdFMywgMHg3N0UzLCAweDE5MDQsIDB4NzdFNSwgMHg3N0U1LCAweDFCMzAsIDB4NzdFOSwgMHg3N0U5LCAweDBGNTYsDQorICAgIDB4NzdFRCwgMHg3N0VELCAweDEwNkMsIDB4NzdFRSwgMHg3N0VFLCAweDE3RjYsIDB4NzdFRiwgMHg3N0VGLCAweDBGMjksDQorICAgIDB4NzdGMywgMHg3N0YzLCAweDE1MjUsIDB4NzgwMiwgMHg3ODAyLCAweDE0OUQsIDB4NzgxMiwgMHg3ODEyLCAweDE0NTMsDQorICAgIDB4NzgyNSwgMHg3ODI1LCAweDFCMzEsIDB4NzgyNiwgMHg3ODI2LCAweDFCRDAsIDB4NzgyNywgMHg3ODI3LCAweDFDQ0QsDQorICAgIDB4NzgyQywgMHg3ODJDLCAweDEyMkMsIDB4NzgzMiwgMHg3ODMyLCAweDFEODcsIDB4NzgzNCwgMHg3ODM0LCAweDFEM0QsDQorICAgIDB4Nzg0NSwgMHg3ODQ1LCAweDBGQTAsIDB4Nzg0RiwgMHg3ODRGLCAweDE3NTgsIDB4Nzg1RCwgMHg3ODVELCAweDFDM0EsDQorICAgIDB4Nzg2QiwgMHg3ODZCLCAweDExRUMsIDB4Nzg2QywgMHg3ODZDLCAweDBFNjcsIDB4Nzg2RiwgMHg3ODZGLCAweDE3NTksDQorICAgIDB4Nzg3QywgMHg3ODdDLCAweDE0M0EsIDB4Nzg4MSwgMHg3ODgxLCAweDEwMDUsIDB4Nzg4NywgMHg3ODg3LCAweDFBNTIsDQorICAgIDB4Nzg4QywgMHg3ODhDLCAweDExQjAsIDB4Nzg4RCwgMHg3ODhELCAweDE2RDcsIDB4Nzg4RSwgMHg3ODhFLCAweDE1QkIsDQorICAgIDB4Nzg5MSwgMHg3ODkxLCAweDE0NTQsIDB4Nzg5NywgMHg3ODk3LCAweDE3RTQsIDB4NzhBMywgMHg3OEEzLCAweDBEQjAsDQorICAgIDB4NzhBNywgMHg3OEE3LCAweDEzQTMsIDB4NzhBOSwgMHg3OEE5LCAweDE1MjYsIDB4NzhCQSwgMHg3OEJCLCAweDFFQzcsDQorICAgIDB4NzhCQywgMHg3OEJDLCAweDEyMzMsIDB4NzhDMSwgMHg3OEMxLCAweDE5NjMsIDB4NzhDNSwgMHg3OEM1LCAweDEzNUMsDQorICAgIDB4NzhDQSwgMHg3OENBLCAweDExQzIsIDB4NzhDQiwgMHg3OENCLCAweDFCOEEsIDB4NzhDRSwgMHg3OENFLCAweDBFODcsDQorICAgIDB4NzhEMCwgMHg3OEQwLCAweDEzMzksIDB4NzhFOCwgMHg3OEU4LCAweDEyMzQsIDB4NzhFQywgMHg3OEVDLCAweDBFNjgsDQorICAgIDB4NzhFRiwgMHg3OEVGLCAweDEwMDYsIDB4NzhGNSwgMHg3OEY1LCAweDBEQTMsIDB4NzhGQiwgMHg3OEZCLCAweDEzM0EsDQorICAgIDB4NzkwMSwgMHg3OTAxLCAweDFDM0IsIDB4NzkwRSwgMHg3OTBFLCAweDFDM0MsIDB4NzkxNiwgMHg3OTE2LCAweDE3MzQsDQorICAgIDB4NzkyQSwgMHg3OTJBLCAweDExNjIsIDB4NzkyQiwgMHg3OTJCLCAweDExNkUsIDB4NzkyQywgMHg3OTJDLCAweDEzM0IsDQorICAgIDB4NzkzQSwgMHg3OTNBLCAweDE2NEUsIDB4NzkzRSwgMHg3OTNFLCAweDE0OUUsIDB4Nzk0MCwgMHg3OTQwLCAweDE0OUYsDQorICAgIDB4Nzk0MSwgMHg3OTQxLCAweDEwMDcsIDB4Nzk0NywgMHg3OTQ4LCAweDEwMDgsIDB4Nzk0OSwgMHg3OTQ5LCAweDFCMzIsDQorICAgIDB4Nzk1MCwgMHg3OTUwLCAweDE4NDYsIDB4Nzk1NiwgMHg3OTU2LCAweDFBOTYsIDB4Nzk1NywgMHg3OTU3LCAweDFCMzMsDQorICAgIDB4Nzk1QSwgMHg3OTVBLCAweDFBOTcsIDB4Nzk1QiwgMHg3OTVCLCAweDBFMEIsIDB4Nzk1QywgMHg3OTVDLCAweDFFOTIsDQorICAgIDB4Nzk1RCwgMHg3OTVELCAweDFDN0EsIDB4Nzk1RSwgMHg3OTVFLCAweDE2NzIsIDB4Nzk2MCwgMHg3OTYwLCAweDE0QTAsDQorICAgIDB4Nzk2NSwgMHg3OTY1LCAweDE0RTksIDB4Nzk2OCwgMHg3OTY4LCAweDFEQTAsIDB4Nzk2RCwgMHg3OTZELCAweDFBNzEsDQorICAgIDB4Nzk3QSwgMHg3OTdBLCAweDEwMEEsIDB4Nzk3RiwgMHg3OTdGLCAweDExQjEsIDB4Nzk4MSwgMHg3OTgxLCAweDBGQ0MsDQorICAgIDB4Nzk4RCwgMHg3OThELCAweDFFQkQsIDB4Nzk4RSwgMHg3OThFLCAweDFBNTMsIDB4Nzk4RiwgMHg3OThGLCAweDEzRDksDQorICAgIDB4Nzk5MSwgMHg3OTkxLCAweDE4NDcsIDB4NzlBNiwgMHg3OUE2LCAweDE3MTMsIDB4NzlBNywgMHg3OUE3LCAweDFGNzQsDQorICAgIDB4NzlBQSwgMHg3OUFBLCAweDE1M0EsIDB4NzlBRSwgMHg3OUFFLCAweDExOUMsIDB4NzlCMSwgMHg3OUIxLCAweDEwQzcsDQorICAgIDB4NzlCMywgMHg3OUIzLCAweDE3MDYsIDB4NzlCOSwgMHg3OUI5LCAweDE4NDgsIDB4NzlCRCwgMHg3OUJELCAweDBGQ0QsDQorICAgIDB4NzlCRSwgMHg3OUJFLCAweDFFQkUsIDB4NzlCRiwgMHg3OUJGLCAweDEwREIsIDB4NzlDMCwgMHg3OUMwLCAweDE1REQsDQorICAgIDB4NzlDMSwgMHg3OUMxLCAweDE0QTEsIDB4NzlDOSwgMHg3OUM5LCAweDEzQkQsIDB4NzlDQSwgMHg3OUNBLCAweDEwNDIsDQorICAgIDB4NzlDQiwgMHg3OUNCLCAweDFDNjksIDB4NzlEMSwgMHg3OUQxLCAweDBFREYsIDB4NzlEMiwgMHg3OUQyLCAweDFDM0QsDQorICAgIDB4NzlENSwgMHg3OUQ1LCAweDE0NTUsIDB4NzlEOCwgMHg3OUQ4LCAweDE0NTYsIDB4NzlERiwgMHg3OURGLCAweDFBOTgsDQorICAgIDB4NzlFNCwgMHg3OUU0LCAweDFDRDEsIDB4NzlFNiwgMHg3OUU2LCAweDFCNTgsIDB4NzlFNywgMHg3OUU3LCAweDE2Q0UsDQorICAgIDB4NzlFOSwgMHg3OUU5LCAweDFCNkYsIDB4NzlGQiwgMHg3OUZCLCAweDE5MUEsIDB4N0EwMCwgMHg3QTAwLCAweDFGNzUsDQorICAgIDB4N0EwNSwgMHg3QTA1LCAweDE1NzgsIDB4N0EwOCwgMHg3QTA4LCAweDBEQTQsIDB4N0EwQiwgMHg3QTBCLCAweDFBNTQsDQorICAgIDB4N0EwRCwgMHg3QTBELCAweDFDM0UsIDB4N0ExNCwgMHg3QTE0LCAweDE5NEEsIDB4N0ExNywgMHg3QTE3LCAweDFENTYsDQorICAgIDB4N0ExOSwgMHg3QTE5LCAweDFCNDAsIDB4N0ExQSwgMHg3QTFBLCAweDFDQjUsIDB4N0ExQywgMHg3QTFDLCAweDEyMDEsDQorICAgIDB4N0ExRiwgMHg3QTFGLCAweDFEQTcsIDB4N0EyMCwgMHg3QTIwLCAweDFBOTksIDB4N0EyRSwgMHg3QTJFLCAweDFBQkQsDQorICAgIDB4N0EzMSwgMHg3QTMxLCAweDFDRDIsIDB4N0EzNiwgMHg3QTM2LCAweDE4NUIsIDB4N0EzNywgMHg3QTM3LCAweDFCNDEsDQorICAgIDB4N0EzQiwgMHg3QTNCLCAweDEwQzgsIDB4N0EzQywgMHg3QTNDLCAweDBEN0UsIDB4N0EzRCwgMHg3QTNELCAweDBFODgsDQorICAgIDB4N0EzRiwgMHg3QTNGLCAweDBFQTUsIDB4N0E0MCwgMHg3QTQwLCAweDBFQkIsIDB4N0E0NiwgMHg3QTQ2LCAweDEyQjksDQorICAgIDB4N0E0OSwgMHg3QTQ5LCAweDFDQjYsIDB4N0E0RCwgMHg3QTRELCAweDE5RTQsIDB4N0E0RSwgMHg3QTRFLCAweDE3ODYsDQorICAgIDB4N0E1NywgMHg3QTU3LCAweDE1REUsIDB4N0E2MSwgMHg3QTYxLCAweDE0RjYsIDB4N0E2MiwgMHg3QTYyLCAweDE3OTYsDQorICAgIDB4N0E2OSwgMHg3QTY5LCAweDE3QzYsIDB4N0E2QiwgMHg3QTZCLCAweDFFQzksIDB4N0E3MCwgMHg3QTcwLCAweDE3MDcsDQorICAgIDB4N0E3NCwgMHg3QTc0LCAweDFFNEIsIDB4N0E3NiwgMHg3QTc2LCAweDBGNTcsIDB4N0E3OSwgMHg3QTc5LCAweDBGN0QsDQorICAgIDB4N0E3QSwgMHg3QTdBLCAweDBFRDYsIDB4N0E3RCwgMHg3QTdELCAweDFBNTUsIDB4N0E3RiwgMHg3QTdGLCAweDFCRjUsDQorICAgIDB4N0E4MSwgMHg3QTgxLCAweDEwRUEsIDB4N0E4NCwgMHg3QTg0LCAweDFCOTIsIDB4N0E4OCwgMHg3QTg4LCAweDE4MEMsDQorICAgIDB4N0E5MiwgMHg3QTkyLCAweDFCNzAsIDB4N0E5MywgMHg3QTkzLCAweDFCQzUsIDB4N0E5NSwgMHg3QTk1LCAweDFBOUEsDQorICAgIDB4N0E5OCwgMHg3QTk4LCAweDBGNzIsIDB4N0E5RiwgMHg3QTlGLCAweDBGN0EsIDB4N0FBOSwgMHg3QUFBLCAweDE3RDUsDQorICAgIDB4N0FBRSwgMHg3QUFFLCAweDBGN0UsIDB4N0FBRiwgMHg3QUFGLCAweDE4MEQsIDB4N0FCQSwgMHg3QUJBLCAweDBGQTEsDQorICAgIDB4N0FDNCwgMHg3QUM0LCAweDFCOUIsIDB4N0FDNSwgMHg3QUM1LCAweDBGQTIsIDB4N0FDNywgMHg3QUM3LCAweDExMDEsDQorICAgIDB4N0FDQSwgMHg3QUNBLCAweDFBMjEsIDB4N0FDQiwgMHg3QUNCLCAweDEyMkQsIDB4N0FENywgMHg3QUQ3LCAweDEyQzksDQorICAgIDB4N0FEOSwgMHg3QUQ5LCAweDFCQjEsIDB4N0FERCwgMHg3QURELCAweDEzQkUsIDB4N0FERiwgMHg3QURGLCAweDBFNjksDQorICAgIDB4N0FFMCwgMHg3QUUwLCAweDE5OUIsIDB4N0FFMywgMHg3QUUzLCAweDFCMDMsIDB4N0FFNSwgMHg3QUU1LCAweDEwRjgsDQorICAgIDB4N0FFQSwgMHg3QUVBLCAweDE1REYsIDB4N0FFRCwgMHg3QUVELCAweDBEQjEsIDB4N0FFRiwgMHg3QUVGLCAweDEwNkQsDQorICAgIDB4N0FGNiwgMHg3QUY2LCAweDBFNkEsIDB4N0FGOSwgMHg3QUY5LCAweDFBRjQsIDB4N0FGQSwgMHg3QUZBLCAweDFDN0IsDQorICAgIDB4N0FGRiwgMHg3QUZGLCAweDBEQTUsIDB4N0IwRiwgMHg3QjBGLCAweDFFQUMsIDB4N0IxMSwgMHg3QjExLCAweDE1OTIsDQorICAgIDB4N0IxOSwgMHg3QjE5LCAweDE0RkMsIDB4N0IxQiwgMHg3QjFCLCAweDE5RTUsIDB4N0IxRSwgMHg3QjFFLCAweDFEMEYsDQorICAgIDB4N0IyMCwgMHg3QjIwLCAweDEyMkUsIDB4N0IyNiwgMHg3QjI2LCAweDE0MEEsIDB4N0IyQywgMHg3QjJDLCAweDFBNzIsDQorICAgIDB4N0IyRCwgMHg3QjJELCAweDExOTAsIDB4N0IzOSwgMHg3QjM5LCAweDE1NzksIDB4N0I0NiwgMHg3QjQ2LCAweDFEQkIsDQorICAgIDB4N0I0OSwgMHg3QjQ5LCAweDExMTEsIDB4N0I0QiwgMHg3QjRCLCAweDBGQkYsIDB4N0I0QywgMHg3QjRDLCAweDFBMEMsDQorICAgIDB4N0I0RCwgMHg3QjRELCAweDE2MTYsIDB4N0I0RiwgMHg3QjRGLCAweDEzOEUsIDB4N0I1MCwgMHg3QjUwLCAweDBGMDksDQorICAgIDB4N0I1MSwgMHg3QjUxLCAweDFDN0MsIDB4N0I1MiwgMHg3QjUyLCAweDFEMjAsIDB4N0I1NCwgMHg3QjU0LCAweDEwOEMsDQorICAgIDB4N0I1NiwgMHg3QjU2LCAweDFCRDgsIDB4N0I2MCwgMHg3QjYwLCAweDBGQUMsIDB4N0I2QywgMHg3QjZDLCAweDE1NkUsDQorICAgIDB4N0I2RSwgMHg3QjZFLCAweDE1MEUsIDB4N0I3NSwgMHg3Qjc1LCAweDE3NUEsIDB4N0I3RCwgMHg3QjdELCAweDE3QjksDQorICAgIDB4N0I4NywgMHg3Qjg3LCAweDBERjYsIDB4N0I4QiwgMHg3QjhCLCAweDFBMEQsIDB4N0I4RiwgMHg3QjhGLCAweDE5QkMsDQorICAgIDB4N0I5NCwgMHg3Qjk0LCAweDEzMjAsIDB4N0I5NSwgMHg3Qjk1LCAweDEwMEIsIDB4N0I5NywgMHg3Qjk3LCAweDE0QkYsDQorICAgIDB4N0I5QSwgMHg3QjlBLCAweDFCOEIsIDB4N0I5RCwgMHg3QjlELCAweDBFNDgsIDB4N0JBMSwgMHg3QkExLCAweDBFRjQsDQorICAgIDB4N0JBRCwgMHg3QkFELCAweDFBMEUsIDB4N0JCMSwgMHg3QkIxLCAweDE0RUEsIDB4N0JCNCwgMHg3QkI0LCAweDE5ODIsDQorICAgIDB4N0JCOCwgMHg3QkI4LCAweDE5Q0UsIDB4N0JDMCwgMHg3QkMwLCAweDFBMjIsIDB4N0JDMSwgMHg3QkMxLCAweDFFRjEsDQorICAgIDB4N0JDNCwgMHg3QkM0LCAweDEzOTgsIDB4N0JDNiwgMHg3QkM2LCAweDFBMEYsIDB4N0JDNywgMHg3QkM3LCAweDFENjIsDQorICAgIDB4N0JDOSwgMHg3QkM5LCAweDFDN0QsIDB4N0JEMiwgMHg3QkQyLCAweDE2NjEsIDB4N0JFMCwgMHg3QkUwLCAweDE1OTMsDQorICAgIDB4N0JFNCwgMHg3QkU0LCAweDEwREMsIDB4N0JFOSwgMHg3QkU5LCAweDE0QTIsIDB4N0MwNywgMHg3QzA3LCAweDFBQUQsDQorICAgIDB4N0MxMiwgMHg3QzEyLCAweDFCOUMsIDB4N0MxRSwgMHg3QzFFLCAweDEwNkUsIDB4N0MyMSwgMHg3QzIxLCAweDBEQTYsDQorICAgIDB4N0MyNywgMHg3QzI3LCAweDFFRjIsIDB4N0MyQSwgMHg3QzJBLCAweDE5ODMsIDB4N0MyQiwgMHg3QzJCLCAweDE1OTQsDQorICAgIDB4N0MzRCwgMHg3QzNELCAweDFDMEYsIDB4N0MzRSwgMHg3QzNFLCAweDExODcsIDB4N0MzRiwgMHg3QzNGLCAweDE0MEIsDQorICAgIDB4N0M0MywgMHg3QzQzLCAweDExMzQsIDB4N0M0QywgMHg3QzRDLCAweDFBRTQsIDB4N0M0RCwgMHg3QzRELCAweDE5RTYsDQorICAgIDB4N0M2MCwgMHg3QzYwLCAweDExQkQsIDB4N0M2NCwgMHg3QzY0LCAweDFDMTAsIDB4N0M2QywgMHg3QzZDLCAweDEyMTQsDQorICAgIDB4N0M3MywgMHg3QzczLCAweDEyRkYsIDB4N0M4MywgMHg3QzgzLCAweDE0NTcsIDB4N0M4OSwgMHg3Qzg5LCAweDE0MkQsDQorICAgIDB4N0M5MiwgMHg3QzkyLCAweDEyMkYsIDB4N0M5NSwgMHg3Qzk1LCAweDEzMjEsIDB4N0M5NywgMHg3Qzk3LCAweDFBOUIsDQorICAgIDB4N0M5OCwgMHg3Qzk4LCAweDFBMjksIDB4N0M5RiwgMHg3QzlGLCAweDE1QTUsIDB4N0NBNSwgMHg3Q0E1LCAweDFBRjUsDQorICAgIDB4N0NBNywgMHg3Q0E3LCAweDE5OUMsIDB4N0NBRSwgMHg3Q0FFLCAweDExNTEsIDB4N0NCMSwgMHg3Q0IxLCAweDExNTIsDQorICAgIDB4N0NCMiwgMHg3Q0IyLCAweDFCOUUsIDB4N0NCMywgMHg3Q0IzLCAweDBERkUsIDB4N0NCOSwgMHg3Q0I5LCAweDE1RTAsDQorICAgIDB4N0NCRSwgMHg3Q0JFLCAweDFBNTYsIDB4N0NDQSwgMHg3Q0NBLCAweDFFOTMsIDB4N0NENiwgMHg3Q0Q2LCAweDEwOTcsDQorICAgIDB4N0NERSwgMHg3Q0RFLCAweDE0MkUsIDB4N0NERiwgMHg3Q0RGLCAweDFBOUMsIDB4N0NFMCwgMHg3Q0UwLCAweDBEREMsDQorICAgIDB4N0NFNywgMHg3Q0U3LCAweDExNTMsIDB4N0NGQiwgMHg3Q0ZCLCAweDBFODksIDB4N0NGRSwgMHg3Q0ZFLCAweDBGQTMsDQorICAgIDB4N0QwMCwgMHg3RDAwLCAweDEwMEMsIDB4N0QwMiwgMHg3RDAyLCAweDFBRTUsIDB4N0QwNCwgMHg3RDA0LCAweDE2RjEsDQorICAgIDB4N0QwNSwgMHg3RDA1LCAweDFFQjMsIDB4N0QwNiwgMHg3RDA2LCAweDE4NDksIDB4N0QwNywgMHg3RDA3LCAweDFGNTksDQorICAgIDB4N0QwOCwgMHg3RDA4LCAweDFFRDcsIDB4N0QwQSwgMHg3RDBCLCAweDEyRUEsIDB4N0QwRCwgMHg3RDBELCAweDEwMzYsDQorICAgIDB4N0QxMCwgMHg3RDEwLCAweDEwNTgsIDB4N0QxNCwgMHg3RDE0LCAweDE2MTcsIDB4N0QxNywgMHg3RDE3LCAweDE0QTMsDQorICAgIDB4N0QxOCwgMHg3RDE4LCAweDBGMTksIDB4N0QxOSwgMHg3RDE5LCAweDFCMzQsIDB4N0QxQSwgMHg3RDFBLCAweDBGRDgsDQorICAgIDB4N0QxQiwgMHg3RDFCLCAweDE0MkYsIDB4N0QyMCwgMHg3RDIwLCAweDE1OTUsIDB4N0QyMSwgMHg3RDIxLCAweDEzNUQsDQorICAgIDB4N0QyMiwgMHg3RDIyLCAweDE0RjcsIDB4N0QyQiwgMHg3RDJCLCAweDE5NjQsIDB4N0QyQywgMHg3RDJDLCAweDFBRTYsDQorICAgIDB4N0QyRSwgMHg3RDJFLCAweDFCQTksIDB4N0QyRiwgMHg3RDJGLCAweDExREIsIDB4N0QzMCwgMHg3RDMwLCAweDE1N0EsDQorICAgIDB4N0QzMywgMHg3RDMzLCAweDE2NzMsIDB4N0QzNSwgMHg3RDM1LCAweDE5Q0YsIDB4N0QzOSwgMHg3RDM5LCAweDE1OTYsDQorICAgIDB4N0QzQSwgMHg3RDNBLCAweDBEQzUsIDB4N0Q0MiwgMHg3RDQyLCAweDFBQkUsIDB4N0Q0MywgMHg3RDQzLCAweDFFNDIsDQorICAgIDB4N0Q0NCwgMHg3RDQ0LCAweDFBOUQsIDB4N0Q0NSwgMHg3RDQ1LCAweDBFNkIsIDB4N0Q0NiwgMHg3RDQ2LCAweDEzM0MsDQorICAgIDB4N0Q1MCwgMHg3RDUwLCAweDBFNDMsIDB4N0Q1RSwgMHg3RDVFLCAweDBGMkEsIDB4N0Q2MSwgMHg3RDYxLCAweDExMjEsDQorICAgIDB4N0Q2MiwgMHg3RDYyLCAweDFFNDMsIDB4N0Q2NiwgMHg3RDY2LCAweDBGRDksIDB4N0Q2OCwgMHg3RDY4LCAweDE4RTMsDQorICAgIDB4N0Q2QSwgMHg3RDZBLCAweDE5MzYsIDB4N0Q2RSwgMHg3RDZFLCAweDE1MEYsIDB4N0Q3MSwgMHg3RDcxLCAweDFEMjEsDQorICAgIDB4N0Q3MiwgMHg3RDcyLCAweDE0QTQsIDB4N0Q3MywgMHg3RDczLCAweDBEREQsIDB4N0Q3NiwgMHg3RDc2LCAweDFBMjMsDQorICAgIDB4N0Q3OSwgMHg3RDc5LCAweDBFMzksIDB4N0Q3RiwgMHg3RDdGLCAweDBGNTgsIDB4N0Q4RSwgMHg3RDhFLCAweDFBNTcsDQorICAgIDB4N0Q4RiwgMHg3RDhGLCAweDE1RTEsIDB4N0Q5MywgMHg3RDkzLCAweDBFNkMsIDB4N0Q5QywgMHg3RDlDLCAweDFBQkYsDQorICAgIDB4N0RBMCwgMHg3REEwLCAweDExQjIsIDB4N0RBMiwgMHg3REEyLCAweDFBRTcsIDB4N0RBQywgMHg3REFDLCAweDE1RTIsDQorICAgIDB4N0RBRCwgMHg3REFELCAweDE4QzQsIDB4N0RCMSwgMHg3REIxLCAweDBEREUsIDB4N0RCMiwgMHg3REIyLCAweDEyNUQsDQorICAgIDB4N0RCNCwgMHg3REI0LCAweDFDMDUsIDB4N0RCNSwgMHg3REI1LCAweDFCRDEsIDB4N0RCOCwgMHg3REI4LCAweDExRjYsDQorICAgIDB4N0RCQSwgMHg3REJBLCAweDEwMEQsIDB4N0RCQiwgMHg3REJCLCAweDFDRjgsIDB4N0RCRCwgMHg3REJELCAweDE5NzUsDQorICAgIDB4N0RCRSwgMHg3REJFLCAweDEyMDIsIDB4N0RCRiwgMHg3REJGLCAweDEyODYsIDB4N0RDNywgMHg3REM3LCAweDFDQjcsDQorICAgIDB4N0RDQSwgMHg3RENBLCAweDEwMUUsIDB4N0RDQiwgMHg3RENCLCAweDE0NTgsIDB4N0RENiwgMHg3REQ2LCAweDE1MTAsDQorICAgIDB4N0REOCwgMHg3REQ4LCAweDFERUEsIDB4N0REQSwgMHg3RERBLCAweDE1M0IsIDB4N0RERCwgMHg3RERELCAweDFCN0EsDQorICAgIDB4N0RERSwgMHg3RERFLCAweDEwNkYsIDB4N0RFMCwgMHg3REUwLCAweDFDMjksIDB4N0RFMSwgMHg3REUxLCAweDEzMTEsDQorICAgIDB4N0RFMywgMHg3REUzLCAweDE3NUIsIDB4N0RFOCwgMHg3REU4LCAweDFENjMsIDB4N0RFOSwgMHg3REU5LCAweDE3RTUsDQorICAgIDB4N0RFQywgMHg3REVDLCAweDEyODcsIDB4N0RFRiwgMHg3REVGLCAweDE4OTksIDB4N0RGNCwgMHg3REY0LCAweDExNzcsDQorICAgIDB4N0RGQiwgMHg3REZCLCAweDFDQjgsIDB4N0UwOSwgMHg3RTA5LCAweDFCNTksIDB4N0UwQSwgMHg3RTBBLCAweDE2REYsDQorICAgIDB4N0UxNSwgMHg3RTE1LCAweDE3QzcsIDB4N0UxQiwgMHg3RTFCLCAweDEzMjIsIDB4N0UxRCwgMHg3RTFELCAweDFCNUEsDQorICAgIDB4N0UxRSwgMHg3RTFFLCAweDFFOTQsIDB4N0UxRiwgMHg3RTFGLCAweDE4MUIsIDB4N0UyMSwgMHg3RTIxLCAweDE5QjUsDQorICAgIDB4N0UyMywgMHg3RTIzLCAweDFFNDQsIDB4N0UyQiwgMHg3RTJCLCAweDEzRUYsIDB4N0UyRSwgMHg3RTJFLCAweDFDN0UsDQorICAgIDB4N0UyRiwgMHg3RTJGLCAweDE3NUMsIDB4N0UzMSwgMHg3RTMxLCAweDFBQzAsIDB4N0UzNywgMHg3RTM3LCAweDExREMsDQorICAgIDB4N0UzRCwgMHg3RTNELCAweDFDNTksIDB4N0UzRSwgMHg3RTNFLCAweDE5RTcsIDB4N0U0MSwgMHg3RTQxLCAweDEzODksDQorICAgIDB4N0U0MywgMHg3RTQzLCAweDE0M0IsIDB4N0U0NiwgMHg3RTQ2LCAweDEyREEsIDB4N0U0NywgMHg3RTQ3LCAweDE4MEUsDQorICAgIDB4N0U1MiwgMHg3RTUyLCAweDFCMUEsIDB4N0U1NCwgMHg3RTU0LCAweDFCNDIsIDB4N0U1NSwgMHg3RTU1LCAweDE1M0MsDQorICAgIDB4N0U1RSwgMHg3RTVFLCAweDE4MEYsIDB4N0U2MSwgMHg3RTYxLCAweDE1RTMsIDB4N0U2OSwgMHg3RTY5LCAweDE2MzksDQorICAgIDB4N0U2QSwgMHg3RTZBLCAweDFGMDYsIDB4N0U2QiwgMHg3RTZCLCAweDBFOEEsIDB4N0U2RCwgMHg3RTZELCAweDBFM0EsDQorICAgIDB4N0U3MCwgMHg3RTcwLCAweDFBOUUsIDB4N0U3OSwgMHg3RTc5LCAweDE3NDAsIDB4N0U3QywgMHg3RTdDLCAweDBFOEIsDQorICAgIDB4N0U4MiwgMHg3RTgyLCAweDFCOUQsIDB4N0U4QywgMHg3RThDLCAweDE1QTYsIDB4N0U4RiwgMHg3RThGLCAweDFBMTAsDQorICAgIDB4N0U5MywgMHg3RTkzLCAweDE3ODcsIDB4N0U5NiwgMHg3RTk2LCAweDE1NUEsIDB4N0U5OCwgMHg3RTk4LCAweDFCOUYsDQorICAgIDB4N0U5QiwgMHg3RTlCLCAweDEwREQsIDB4N0U5QywgMHg3RTlDLCAweDExMzUsIDB4N0YzNiwgMHg3RjM2LCAweDE0MEMsDQorICAgIDB4N0YzOCwgMHg3RjM4LCAweDFFMDEsIDB4N0YzQSwgMHg3RjNBLCAweDBFNDQsIDB4N0Y0QywgMHg3RjRDLCAweDE2RTMsDQorICAgIDB4N0Y1MCwgMHg3RjUwLCAweDBFRjUsIDB4N0Y1NCwgMHg3RjU0LCAweDEyNUUsIDB4N0Y1NSwgMHg3RjU1LCAweDFEREIsDQorICAgIDB4N0Y2QSwgMHg3RjZBLCAweDFBQ0IsIDB4N0Y2QiwgMHg3RjZCLCAweDBGMEUsIDB4N0Y2RSwgMHg3RjZFLCAweDFDQjksDQorICAgIDB4N0Y3MCwgMHg3RjcwLCAweDEzOEYsIDB4N0Y3MiwgMHg3RjcyLCAweDE1MTEsIDB4N0Y3NSwgMHg3Rjc1LCAweDEyNkQsDQorICAgIDB4N0Y3NywgMHg3Rjc3LCAweDFEM0UsIDB4N0Y3OSwgMHg3Rjc5LCAweDEyMTUsIDB4N0Y4NSwgMHg3Rjg1LCAweDExMTksDQorICAgIDB4N0Y4OCwgMHg3Rjg4LCAweDEwMEUsIDB4N0Y4QSwgMHg3RjhBLCAweDE3MDgsIDB4N0Y4QywgMHg3RjhDLCAweDBEREYsDQorICAgIDB4N0Y4RSwgMHg3RjhFLCAweDEzMDAsIDB4N0Y5NCwgMHg3Rjk0LCAweDBFQTYsIDB4N0Y5QSwgMHg3RjlBLCAweDExOTEsDQorICAgIDB4N0Y5RSwgMHg3RjlFLCAweDE1RTQsIDB4N0ZBNCwgMHg3RkE0LCAweDBGNzMsIDB4N0ZBOCwgMHg3RkE4LCAweDE1M0QsDQorICAgIDB4N0ZBOSwgMHg3RkE5LCAweDE5MDUsIDB4N0ZCMiwgMHg3RkIyLCAweDFGNzYsIDB4N0ZCOCwgMHg3RkI4LCAweDEyMTYsDQorICAgIDB4N0ZCOSwgMHg3RkI5LCAweDBERkYsIDB4N0ZCRCwgMHg3RkJELCAweDE4NEEsIDB4N0ZDMSwgMHg3RkMxLCAweDE3Q0YsDQorICAgIDB4N0ZDNSwgMHg3RkM1LCAweDE2NEYsIDB4N0ZDQSwgMHg3RkNBLCAweDE5MjcsIDB4N0ZDQywgMHg3RkNDLCAweDE5MjgsDQorICAgIDB4N0ZDRSwgMHg3RkNFLCAweDExOTIsIDB4N0ZEMiwgMHg3RkQyLCAweDE2MkYsIDB4N0ZENCwgMHg3RkQ0LCAweDE0RUIsDQorICAgIDB4N0ZENSwgMHg3RkQ1LCAweDFGNjEsIDB4N0ZERiwgMHg3RkRGLCAweDE5RTgsIDB4N0ZFMCwgMHg3RkUwLCAweDFDOUEsDQorICAgIDB4N0ZFMSwgMHg3RkUxLCAweDE0NTksIDB4N0ZFOSwgMHg3RkU5LCAweDFENjQsIDB4N0ZFQiwgMHg3RkVCLCAweDE3RTYsDQorICAgIDB4N0ZGMCwgMHg3RkYwLCAweDFEREMsIDB4N0ZGOSwgMHg3RkY5LCAweDBGMkIsIDB4N0ZGQywgMHg3RkZDLCAweDE5MjksDQorICAgIDB4ODAwMCwgMHg4MDAwLCAweDE4MTAsIDB4ODAwMSwgMHg4MDAxLCAweDExQTcsIDB4ODAwMywgMHg4MDAzLCAweDBFQTcsDQorICAgIDB4ODAwNSwgMHg4MDA1LCAweDE5NjUsIDB4ODAwNiwgMHg4MDA2LCAweDEwMEYsIDB4ODAwOSwgMHg4MDA5LCAweDBGNTksDQorICAgIDB4ODAwQywgMHg4MDBDLCAweDE5MUIsIDB4ODAxMCwgMHg4MDEwLCAweDEwM0UsIDB4ODAxNSwgMHg4MDE1LCAweDBFNkQsDQorICAgIDB4ODAxNywgMHg4MDE3LCAweDEyQUUsIDB4ODAxOCwgMHg4MDE4LCAweDE4NjMsIDB4ODAyRCwgMHg4MDJELCAweDEwMTAsDQorICAgIDB4ODAzMywgMHg4MDMzLCAweDE5MUMsIDB4ODAzNiwgMHg4MDM2LCAweDE2RUUsIDB4ODAzRCwgMHg4MDNELCAweDFDRkUsDQorICAgIDB4ODAzRiwgMHg4MDNGLCAweDBFNkUsIDB4ODA0MywgMHg4MDQzLCAweDEwODMsIDB4ODA0NiwgMHg4MDQ2LCAweDExOTMsDQorICAgIDB4ODA0QSwgMHg4MDRBLCAweDExQ0YsIDB4ODA1NiwgMHg4MDU2LCAweDE1NkYsIDB4ODA1OCwgMHg4MDU4LCAweDE0NzcsDQorICAgIDB4ODA1QSwgMHg4MDVBLCAweDFDOUIsIDB4ODA1RSwgMHg4MDVFLCAweDEyRUMsIDB4ODA2RiwgMHg4MDZGLCAweDExNzgsDQorICAgIDB4ODA3MCwgMHg4MDcwLCAweDFDNUEsIDB4ODA3MiwgMHg4MDcyLCAweDE1NzAsIDB4ODA3MywgMHg4MDczLCAweDE4MkYsDQorICAgIDB4ODA3NywgMHg4MDc3LCAweDFCNDMsIDB4ODA3RCwgMHg4MDdELCAweDFDMjAsIDB4ODA3RSwgMHg4MDdFLCAweDExQkUsDQorICAgIDB4ODA3RiwgMHg4MDdGLCAweDE4RTAsIDB4ODA4NCwgMHg4MDg0LCAweDE5MUQsIDB4ODA4NSwgMHg4MDg1LCAweDE2MDYsDQorICAgIDB4ODA4NiwgMHg4MDg2LCAweDE0QTUsIDB4ODA4NywgMHg4MDg3LCAweDFBOUYsIDB4ODA4OSwgMHg4MDg5LCAweDE4RDUsDQorICAgIDB4ODA4QiwgMHg4MDhCLCAweDExRkQsIDB4ODA4QywgMHg4MDhDLCAweDEwMTEsIDB4ODA5NiwgMHg4MDk2LCAweDFDM0YsDQorICAgIDB4ODA5QiwgMHg4MDlCLCAweDFFMDIsIDB4ODA5RCwgMHg4MDlELCAweDBEQTcsIDB4ODBBMSwgMHg4MEExLCAweDBFQTgsDQorICAgIDB4ODBBMiwgMHg4MEEyLCAweDFCMzUsIDB4ODBBNSwgMHg4MEE1LCAweDE0NUEsIDB4ODBBOSwgMHg4MEE5LCAweDBFM0IsDQorICAgIDB4ODBBQSwgMHg4MEFBLCAweDEzNUUsIDB4ODBBRiwgMHg4MEFGLCAweDBGREQsIDB4ODBCMSwgMHg4MEIxLCAweDBGMUEsDQorICAgIDB4ODBCMiwgMHg4MEIyLCAweDE4RDYsIDB4ODBCNCwgMHg4MEI0LCAweDFGMUIsIDB4ODBCQSwgMHg4MEJBLCAweDFENzQsDQorICAgIDB4ODBDMywgMHg4MEMzLCAweDE4OUEsIDB4ODBDNCwgMHg4MEM0LCAweDFBRDEsIDB4ODBDQywgMHg4MENDLCAweDEzNzMsDQorICAgIDB4ODBDRSwgMHg4MENFLCAweDFEMTAsIDB4ODBEQSwgMHg4MERBLCAweDEzNzQsIDB4ODBEQiwgMHg4MERCLCAweDBEQ0QsDQorICAgIDB4ODBERSwgMHg4MERFLCAweDFEODgsIDB4ODBFMSwgMHg4MEUxLCAweDFFOTUsIDB4ODBFNCwgMHg4MEU0LCAweDE4REMsDQorICAgIDB4ODBFNSwgMHg4MEU1LCAweDE1MTIsIDB4ODBGMSwgMHg4MEYxLCAweDBGMEEsIDB4ODBGNCwgMHg4MEY0LCAweDEwRjksDQorICAgIDB4ODBGOCwgMHg4MEY4LCAweDFGNTEsIDB4ODBGRCwgMHg4MEZELCAweDEwNTksIDB4ODEwMiwgMHg4MTAyLCAweDFCMzYsDQorICAgIDB4ODEwNSwgMHg4MTA1LCAweDFFNTYsIDB4ODEwNiwgMHg4MTA2LCAweDFDOUMsIDB4ODEwNywgMHg4MTA3LCAweDFFNTcsDQorICAgIDB4ODEwOCwgMHg4MTA4LCAweDEyNzIsIDB4ODEwQSwgMHg4MTBBLCAweDFCRTgsIDB4ODExOCwgMHg4MTE4LCAweDE3RTcsDQorICAgIDB4ODExQSwgMHg4MTFBLCAweDBEOTAsIDB4ODExQiwgMHg4MTFCLCAweDBFNkYsIDB4ODEyMywgMHg4MTIzLCAweDE2MTgsDQorICAgIDB4ODEyOSwgMHg4MTI5LCAweDE1RTUsIDB4ODEyQiwgMHg4MTJCLCAweDFDRkIsIDB4ODEyRiwgMHg4MTJGLCAweDFEODksDQorICAgIDB4ODEzOSwgMHg4MTM5LCAweDFCQzYsIDB4ODEzRSwgMHg4MTNFLCAweDE0NUIsIDB4ODE0QiwgMHg4MTRCLCAweDE2RTAsDQorICAgIDB4ODE0RSwgMHg4MTRFLCAweDE2NzQsIDB4ODE1MCwgMHg4MTUxLCAweDE0MEQsIDB4ODE1NCwgMHg4MTU0LCAweDBERTAsDQorICAgIDB4ODE1NSwgMHg4MTU1LCAweDE3RTgsIDB4ODE2NSwgMHg4MTY1LCAweDE1NzEsIDB4ODE2NiwgMHg4MTY2LCAweDEwNTMsDQorICAgIDB4ODE2QiwgMHg4MTZCLCAweDFBQzEsIDB4ODE3MCwgMHg4MTcwLCAweDE4MTEsIDB4ODE3MSwgMHg4MTcxLCAweDBFMTgsDQorICAgIDB4ODE3OCwgMHg4MTc4LCAweDE5OUQsIDB4ODE3OSwgMHg4MTc5LCAweDEzREEsIDB4ODE3QSwgMHg4MTdBLCAweDE1M0UsDQorICAgIDB4ODE3RiwgMHg4MTdGLCAweDFEMjUsIDB4ODE4MCwgMHg4MTgwLCAweDEzNUYsIDB4ODE4OCwgMHg4MTg4LCAweDBFMzIsDQorICAgIDB4ODE4QSwgMHg4MThBLCAweDEzMjMsIDB4ODE4RiwgMHg4MThGLCAweDBFQTksIDB4ODE5QSwgMHg4MTlBLCAweDE0MEYsDQorICAgIDB4ODE5QywgMHg4MTlDLCAweDEyM0IsIDB4ODE5RCwgMHg4MTlELCAweDE2MkIsIDB4ODFBMCwgMHg4MUEwLCAweDBGMkMsDQorICAgIDB4ODFBMywgMHg4MUEzLCAweDFCNzEsIDB4ODFBOCwgMHg4MUE4LCAweDFENUMsIDB4ODFCMywgMHg4MUIzLCAweDE1M0YsDQorICAgIDB4ODFCNSwgMHg4MUI1LCAweDFDOTEsIDB4ODFCQSwgMHg4MUJBLCAweDE4RjgsIDB4ODFCRCwgMHg4MUJELCAweDEwODQsDQorICAgIDB4ODFCRSwgMHg4MUJFLCAweDFGMDcsIDB4ODFCRiwgMHg4MUJGLCAweDEwNTAsIDB4ODFDMCwgMHg4MUMwLCAweDExMDcsDQorICAgIDB4ODFDMiwgMHg4MUMyLCAweDE0NUMsIDB4ODFDNiwgMHg4MUM2LCAweDE3MUMsIDB4ODFDRCwgMHg4MUNELCAweDFBNzMsDQorICAgIDB4ODFEOCwgMHg4MUQ4LCAweDExM0EsIDB4ODFERiwgMHg4MURGLCAweDE5OUUsIDB4ODFFMywgMHg4MUUzLCAweDE2NzUsDQorICAgIDB4ODFFNSwgMHg4MUU1LCAweDE3RDcsIDB4ODFFNywgMHg4MUU3LCAweDE5OUYsIDB4ODFFOCwgMHg4MUU4LCAweDEyMkEsDQorICAgIDB4ODFFQSwgMHg4MUVBLCAweDE5NjYsIDB4ODFFRCwgMHg4MUVELCAweDFDOUQsIDB4ODFGMywgMHg4MUYzLCAweDFCMzcsDQorICAgIDB4ODFGNCwgMHg4MUY0LCAweDFDQkEsIDB4ODFGQSwgMHg4MUZBLCAweDEwQTUsIDB4ODFGQiwgMHg4MUZCLCAweDFCNUIsDQorICAgIDB4ODFGQywgMHg4MUZDLCAweDBGNUEsIDB4ODFGRSwgMHg4MUZFLCAweDE4QzUsIDB4ODIwNSwgMHg4MjA1LCAweDBGNUIsDQorICAgIDB4ODIwNywgMHg4MjA3LCAweDE3MzUsIDB4ODIwOCwgMHg4MjA4LCAweDFGNjIsIDB4ODIwQSwgMHg4MjBBLCAweDBGNUMsDQorICAgIDB4ODIwQywgMHg4MjBDLCAweDE1NTAsIDB4ODIwRCwgMHg4MjBELCAweDE0QTYsIDB4ODIxMiwgMHg4MjEyLCAweDE1MTMsDQorICAgIDB4ODIxQiwgMHg4MjFCLCAweDFCRjYsIDB4ODIxQywgMHg4MjFDLCAweDE2MTksIDB4ODIxRSwgMHg4MjFFLCAweDEyREIsDQorICAgIDB4ODIxRiwgMHg4MjFGLCAweDFBRTgsIDB4ODIyMSwgMHg4MjIxLCAweDBERTEsIDB4ODIyQSwgMHg4MjJBLCAweDFFMDMsDQorICAgIDB4ODIyQiwgMHg4MjJCLCAweDEzNjAsIDB4ODIyQywgMHg4MjJDLCAweDEzM0QsIDB4ODIzNSwgMHg4MjM1LCAweDFDREUsDQorICAgIDB4ODIzNiwgMHg4MjM2LCAweDEzMjQsIDB4ODIzNywgMHg4MjM3LCAweDFFNDUsIDB4ODIzOSwgMHg4MjM5LCAweDE1NDAsDQorICAgIDB4ODI0MCwgMHg4MjQwLCAweDE0MTAsIDB4ODI0NSwgMHg4MjQ1LCAweDE3MzYsIDB4ODI0NywgMHg4MjQ3LCAweDFBNTgsDQorICAgIDB4ODI1OSwgMHg4MjU5LCAweDFCQzcsIDB4ODI2NCwgMHg4MjY0LCAweDE5MDYsIDB4ODI2NiwgMHg4MjY2LCAweDFERUIsDQorICAgIDB4ODI2RSwgMHg4MjZFLCAweDBEQTgsIDB4ODI2RiwgMHg4MjZGLCAweDExNTQsIDB4ODI3MSwgMHg4MjcxLCAweDBEQTksDQorICAgIDB4ODI3MiwgMHg4MjcyLCAweDE0RjgsIDB4ODI3NiwgMHg4Mjc2LCAweDE3NkEsIDB4ODI3OCwgMHg4Mjc4LCAweDFDNDAsDQorICAgIDB4ODI3RSwgMHg4MjdFLCAweDE2RDgsIDB4ODI4QiwgMHg4MjhCLCAweDE4NEIsIDB4ODI4RCwgMHg4MjhELCAweDE5NzYsDQorICAgIDB4ODI4RSwgMHg4MjhFLCAweDBGN0YsIDB4ODI5MiwgMHg4MjkyLCAweDEyNUYsIDB4ODI5OSwgMHg4Mjk5LCAweDE0MTEsDQorICAgIDB4ODI5QSwgMHg4MjlBLCAweDExMDgsIDB4ODI5RCwgMHg4MjlELCAweDFCMzgsIDB4ODI5RiwgMHg4MjlGLCAweDE0Q0MsDQorICAgIDB4ODJBNSwgMHg4MkE1LCAweDBERjcsIDB4ODJBNiwgMHg4MkE2LCAweDFFOTYsIDB4ODJBOSwgMHg4MkE5LCAweDBGQ0UsDQorICAgIDB4ODJBQywgMHg4MkFDLCAweDE0MzAsIDB4ODJBRCwgMHg4MkFELCAweDFEM0YsIDB4ODJBRSwgMHg4MkFFLCAweDE3OTcsDQorICAgIDB4ODJBRiwgMHg4MkFGLCAweDE2ODksIDB4ODJCMSwgMHg4MkIxLCAweDFFQkYsIDB4ODJCMywgMHg4MkIzLCAweDEzNjEsDQorICAgIDB4ODJCNywgMHg4MkI3LCAweDFCMzksIDB4ODJCOCwgMHg4MkI4LCAweDE4NjQsIDB4ODJCOSwgMHg4MkI5LCAweDBGQzAsDQorICAgIDB4ODJCQiwgMHg4MkJCLCAweDFDNkEsIDB4ODJCQywgMHg4MkJDLCAweDEyQUYsIDB4ODJCRCwgMHg4MkJELCAweDE2OTcsDQorICAgIDB4ODJCRiwgMHg4MkJGLCAweDE5NTIsIDB4ODJEMSwgMHg4MkQxLCAweDE4ODIsIDB4ODJEMiwgMHg4MkQyLCAweDE3NkIsDQorICAgIDB4ODJENCwgMHg4MkQ0LCAweDFEMTEsIDB4ODJENSwgMHg4MkQ1LCAweDFDNDEsIDB4ODJENywgMHg4MkQ3LCAweDEyQ0EsDQorICAgIDB4ODJEQiwgMHg4MkRCLCAweDBEN0YsIDB4ODJERSwgMHg4MkRFLCAweDFEOEEsIDB4ODJERiwgMHg4MkRGLCAweDBGNUQsDQorICAgIDB4ODJFMSwgMHg4MkUxLCAweDE5MUUsIDB4ODJFNSwgMHg4MkU1LCAweDE2RjIsIDB4ODJFNiwgMHg4MkU2LCAweDBFQUEsDQorICAgIDB4ODJFNywgMHg4MkU3LCAweDE5RDAsIDB4ODJGMSwgMHg4MkYxLCAweDE3ODgsIDB4ODJGRCwgMHg4MkZELCAweDBFQUIsDQorICAgIDB4ODJGRSwgMHg4MkZFLCAweDFEQkMsIDB4ODMwMSwgMHg4MzAxLCAweDFCMDksIDB4ODMwMiwgMHg4MzAyLCAweDEyREMsDQorICAgIDB4ODMwMywgMHg4MzAzLCAweDEzOTksIDB4ODMwNCwgMHg4MzA0LCAweDBEODAsIDB4ODMwNSwgMHg4MzA1LCAweDEyQjAsDQorICAgIDB4ODMwOSwgMHg4MzA5LCAweDEyNTUsIDB4ODMxNywgMHg4MzE3LCAweDEyOTUsIDB4ODMyOCwgMHg4MzI4LCAweDE5NjcsDQorICAgIDB4ODMyQiwgMHg4MzJCLCAweDEyNjAsIDB4ODMyRiwgMHg4MzJGLCAweDEzREIsIDB4ODMzMSwgMHg4MzMxLCAweDE1RTYsDQorICAgIDB4ODMzNCwgMHg4MzM0LCAweDFGMDgsIDB4ODMzNSwgMHg4MzM1LCAweDE5MzcsIDB4ODMzNiwgMHg4MzM2LCAweDEwNUYsDQorICAgIDB4ODMzOCwgMHg4MzM4LCAweDE4MzAsIDB4ODMzOSwgMHg4MzM5LCAweDE3MzcsIDB4ODM0MCwgMHg4MzQwLCAweDE2MUEsDQorICAgIDB4ODM0NywgMHg4MzQ3LCAweDFFMUMsIDB4ODM0OSwgMHg4MzQ5LCAweDFDNDIsIDB4ODM0QSwgMHg4MzRBLCAweDFFNjgsDQorICAgIDB4ODM0RiwgMHg4MzRGLCAweDE5NEIsIDB4ODM1MSwgMHg4MzUxLCAweDE5MUYsIDB4ODM1MiwgMHg4MzUyLCAweDFFRjMsDQorICAgIDB4ODM3MywgMHg4MzczLCAweDExMDIsIDB4ODM3NywgMHg4Mzc3LCAweDFEQzgsIDB4ODM3QiwgMHg4MzdCLCAweDE5RTksDQorICAgIDB4ODM4OSwgMHg4Mzg5LCAweDEyMTcsIDB4ODM4QSwgMHg4MzhBLCAweDE5QTAsIDB4ODM4RSwgMHg4MzhFLCAweDE0QTcsDQorICAgIDB4ODM5NiwgMHg4Mzk2LCAweDBFNzAsIDB4ODM5OCwgMHg4Mzk4LCAweDE2NzYsIDB4ODM5RSwgMHg4MzlFLCAweDE3RTksDQorICAgIDB4ODNBMiwgMHg4M0EyLCAweDFFNTgsIDB4ODNBOSwgMHg4M0E5LCAweDE0MTIsIDB4ODNBQSwgMHg4M0FBLCAweDE2OTgsDQorICAgIDB4ODNBQiwgMHg4M0FCLCAweDEyM0MsIDB4ODNCRCwgMHg4M0JELCAweDEyNjEsIDB4ODNDMSwgMHg4M0MxLCAweDFDMjEsDQorICAgIDB4ODNDNSwgMHg4M0M1LCAweDBFRjYsIDB4ODNDOSwgMHg4M0M5LCAweDExQjMsIDB4ODNDQSwgMHg4M0NBLCAweDBGNkQsDQorICAgIDB4ODNDQywgMHg4M0NDLCAweDBGQUQsIDB4ODNEMywgMHg4M0QzLCAweDBFRTAsIDB4ODNENiwgMHg4M0Q2LCAweDFCQzgsDQorICAgIDB4ODNEQywgMHg4M0RDLCAweDFCRDIsIDB4ODNFOSwgMHg4M0U5LCAweDEzQ0QsIDB4ODNFQiwgMHg4M0VCLCAweDBGQzEsDQorICAgIDB4ODNFRiwgMHg4M0VGLCAweDFFQzAsIDB4ODNGMCwgMHg4M0YwLCAweDBFQUMsIDB4ODNGMSwgMHg4M0YxLCAweDEyMDMsDQorICAgIDB4ODNGMiwgMHg4M0YyLCAweDE0NUQsIDB4ODNGNCwgMHg4M0Y0LCAweDE2QzMsIDB4ODNGOSwgMHg4M0Y5LCAweDE5RDEsDQorICAgIDB4ODNGRCwgMHg4M0ZELCAweDE2MDcsIDB4ODQwMywgMHg4NDAzLCAweDFDOTIsIDB4ODQwNCwgMHg4NDA0LCAweDEwQzksDQorICAgIDB4ODQwQSwgMHg4NDBBLCAweDExNDcsIDB4ODQwQywgMHg4NDBDLCAweDEyN0MsIDB4ODQwRCwgMHg4NDBELCAweDFENkMsDQorICAgIDB4ODQwRSwgMHg4NDBFLCAweDE4OUIsIDB4ODQyOSwgMHg4NDI5LCAweDFDNkIsIDB4ODQyQywgMHg4NDJDLCAweDEyNEIsDQorICAgIDB4ODQzMSwgMHg4NDMxLCAweDFGMzksIDB4ODQzOCwgMHg4NDM4LCAweDE4QzYsIDB4ODQzRCwgMHg4NDNELCAweDExMjIsDQorICAgIDB4ODQ0OSwgMHg4NDQ5LCAweDE3NzEsIDB4ODQ1NywgMHg4NDU3LCAweDE5RDIsIDB4ODQ1QiwgMHg4NDVCLCAweDBEQjIsDQorICAgIDB4ODQ2MSwgMHg4NDYxLCAweDFEOEIsIDB4ODQ2MywgMHg4NDYzLCAweDEwRkEsIDB4ODQ2NiwgMHg4NDY2LCAweDE4OUMsDQorICAgIDB4ODQ2QiwgMHg4NDZCLCAweDFFOTcsIDB4ODQ2QywgMHg4NDZDLCAweDE5QTEsIDB4ODQ2RiwgMHg4NDZGLCAweDE2RjMsDQorICAgIDB4ODQ3NSwgMHg4NDc1LCAweDBGQTQsIDB4ODQ3QSwgMHg4NDdBLCAweDFCMTIsIDB4ODQ5MCwgMHg4NDkwLCAweDE1RTcsDQorICAgIDB4ODQ5NCwgMHg4NDk0LCAweDE2NTAsIDB4ODQ5OSwgMHg4NDk5LCAweDEyQkYsIDB4ODQ5QywgMHg4NDlDLCAweDE0QzAsDQorICAgIDB4ODRBMSwgMHg4NEExLCAweDEzNjIsIDB4ODRCMiwgMHg4NEIyLCAweDFEOEMsIDB4ODRCOCwgMHg4NEI4LCAweDFCMUIsDQorICAgIDB4ODRCQiwgMHg4NEJCLCAweDE2RjQsIDB4ODRCQywgMHg4NEJDLCAweDFCQzksIDB4ODRCRiwgMHg4NEJGLCAweDFFOTgsDQorICAgIDB4ODRDMCwgMHg4NEMwLCAweDE1QUQsIDB4ODRDMiwgMHg4NEMyLCAweDEyOTYsIDB4ODRDNCwgMHg4NEM0LCAweDFDN0YsDQorICAgIDB4ODRDNiwgMHg4NEM2LCAweDE1MjcsIDB4ODRDOSwgMHg4NEM5LCAweDE4MzEsIDB4ODRDQiwgMHg4NENCLCAweDBERjgsDQorICAgIDB4ODRDRCwgMHg4NENELCAweDE2NTEsIDB4ODREMSwgMHg4NEQxLCAweDE0QTgsIDB4ODREQSwgMHg4NERBLCAweDE1RTgsDQorICAgIDB4ODRFQywgMHg4NEVDLCAweDEzRjAsIDB4ODRFRSwgMHg4NEVFLCAweDExNzksIDB4ODRGNCwgMHg4NEY0LCAweDE2MUIsDQorICAgIDB4ODRGQywgMHg4NEZDLCAweDExRDAsIDB4ODUxMSwgMHg4NTExLCAweDEyOEIsIDB4ODUxMywgMHg4NTEzLCAweDEyNEMsDQorICAgIDB4ODUxNCwgMHg4NTE0LCAweDEzREMsIDB4ODUxNywgMHg4NTE3LCAweDE5NjgsIDB4ODUxOCwgMHg4NTE4LCAweDE0Q0QsDQorICAgIDB4ODUxQSwgMHg4NTFBLCAweDE4NkEsIDB4ODUxRSwgMHg4NTFFLCAweDExREQsIDB4ODUyMSwgMHg4NTIxLCAweDFCRDMsDQorICAgIDB4ODUyMywgMHg4NTIzLCAweDE5QTIsIDB4ODUyNSwgMHg4NTI1LCAweDFDNUIsIDB4ODUyQywgMHg4NTJDLCAweDE1OTcsDQorICAgIDB4ODUyRCwgMHg4NTJELCAweDE4RUYsIDB4ODUyRiwgMHg4NTJGLCAweDFCNUMsIDB4ODUzRCwgMHg4NTNELCAweDFENzUsDQorICAgIDB4ODUzRiwgMHg4NTNGLCAweDE4OUQsIDB4ODU0MSwgMHg4NTQxLCAweDEwODUsIDB4ODU0MywgMHg4NTQzLCAweDEzOEEsDQorICAgIDB4ODU0OSwgMHg4NTQ5LCAweDFDNDMsIDB4ODU0RSwgMHg4NTRFLCAweDBGMkQsIDB4ODU1MywgMHg4NTUzLCAweDE4NjUsDQorICAgIDB4ODU1OSwgMHg4NTU5LCAweDFFNzQsIDB4ODU2MywgMHg4NTYzLCAweDE2MUMsIDB4ODU2OCwgMHg4NTY4LCAweDBGOEQsDQorICAgIDB4ODU2OSwgMHg4NTY5LCAweDFEMDYsIDB4ODU2QSwgMHg4NTZBLCAweDEyREQsIDB4ODU2RCwgMHg4NTZELCAweDE1OTgsDQorICAgIDB4ODU4NCwgMHg4NTg0LCAweDEzMjUsIDB4ODU4NywgMHg4NTg3LCAweDEzMDEsIDB4ODU4RiwgMHg4NThGLCAweDE5MDcsDQorICAgIDB4ODU5MSwgMHg4NTkxLCAweDBERTIsIDB4ODU5NCwgMHg4NTk0LCAweDE5QTMsIDB4ODU5QiwgMHg4NTlCLCAweDE1NTEsDQorICAgIDB4ODVBNiwgMHg4NUE2LCAweDFCRjcsIDB4ODVBOCwgMHg4NUE4LCAweDFGMzUsIDB4ODVBOSwgMHg4NUE5LCAweDE0QzcsDQorICAgIDB4ODVBQSwgMHg4NUFBLCAweDE2NzcsIDB4ODVBRiwgMHg4NUFGLCAweDE1MTQsIDB4ODVCMCwgMHg4NUIwLCAweDFGMzIsDQorICAgIDB4ODVCQSwgMHg4NUJBLCAweDFBNzQsIDB4ODVDMSwgMHg4NUMxLCAweDBFQUQsIDB4ODVDOSwgMHg4NUM5LCAweDE5NjksDQorICAgIDB4ODVDRCwgMHg4NUNELCAweDExMzYsIDB4ODVDRSwgMHg4NUNFLCAweDE2NzgsIDB4ODVDRiwgMHg4NUNGLCAweDE5QTQsDQorICAgIDB4ODVENSwgMHg4NUQ1LCAweDE4NEMsIDB4ODVEQywgMHg4NURDLCAweDExNjMsIDB4ODVERCwgMHg4NURELCAweDE3OTgsDQorICAgIDB4ODVFNCwgMHg4NUU0LCAweDExMTIsIDB4ODVFNSwgMHg4NUU1LCAweDE2RjUsIDB4ODVFOSwgMHg4NUU5LCAweDEzOEIsDQorICAgIDB4ODVFQSwgMHg4NUVBLCAweDE1RTksIDB4ODVGNywgMHg4NUY3LCAweDE5RDMsIDB4ODVGQSwgMHg4NUZBLCAweDEyMjIsDQorICAgIDB4ODVGQiwgMHg4NUZCLCAweDFBQTAsIDB4ODVGRiwgMHg4NUZGLCAweDBFRTksIDB4ODYwMiwgMHg4NjAyLCAweDE3OTksDQorICAgIDB4ODYwNiwgMHg4NjA2LCAweDExQTgsIDB4ODYwNywgMHg4NjA3LCAweDE1OTksIDB4ODYwQSwgMHg4NjBBLCAweDE3QzgsDQorICAgIDB4ODYxNiwgMHg4NjE2LCAweDE3MjQsIDB4ODYxNywgMHg4NjE3LCAweDEzQTQsIDB4ODYxQSwgMHg4NjFBLCAweDE1NDEsDQorICAgIDB4ODYyRCwgMHg4NjJELCAweDExMkIsIDB4ODYzRiwgMHg4NjNGLCAweDExMUEsIDB4ODY0RSwgMHg4NjRFLCAweDFFOTksDQorICAgIDB4ODY1MCwgMHg4NjUwLCAweDFERDAsIDB4ODY1NCwgMHg4NjU0LCAweDBFMTksIDB4ODY1NSwgMHg4NjU1LCAweDFCREQsDQorICAgIDB4ODY1QiwgMHg4NjVCLCAweDFFMjksIDB4ODY1QywgMHg4NjVDLCAweDExQTksIDB4ODY1RSwgMHg4NjVFLCAweDE4NEQsDQorICAgIDB4ODY1RiwgMHg4NjVGLCAweDFFOUEsIDB4ODY2NywgMHg4NjY3LCAweDFGNDksIDB4ODY3OSwgMHg4Njc5LCAweDFFQjQsDQorICAgIDB4ODY4QSwgMHg4NjhBLCAweDEyRUQsIDB4ODY4QywgMHg4NjhDLCAweDEzNjMsIDB4ODY5MywgMHg4NjkzLCAweDE5MzgsDQorICAgIDB4ODZBMywgMHg4NkEzLCAweDBFRDcsIDB4ODZBNCwgMHg4NkE0LCAweDFBQTEsIDB4ODZBOSwgMHg4NkE5LCAweDFDQkIsDQorICAgIDB4ODZDNywgMHg4NkM3LCAweDE0QTksIDB4ODZDQiwgMHg4NkNCLCAweDEwNzAsIDB4ODZENCwgMHg4NkQ0LCAweDFGMDksDQorICAgIDB4ODZEOSwgMHg4NkQ5LCAweDE3RDgsIDB4ODZEQiwgMHg4NkRCLCAweDFBRTksIDB4ODZERiwgMHg4NkRGLCAweDBGMkUsDQorICAgIDB4ODZFNCwgMHg4NkU0LCAweDFERjIsIDB4ODZFRCwgMHg4NkVELCAweDFCNzIsIDB4ODZGRSwgMHg4NkZFLCAweDE2OTksDQorICAgIDB4ODcwMCwgMHg4NzAwLCAweDFDNEQsIDB4ODcwMiwgMHg4NzAyLCAweDEzRjEsIDB4ODcwMywgMHg4NzAzLCAweDE2NzksDQorICAgIDB4ODcwOCwgMHg4NzA4LCAweDE3QkEsIDB4ODcxOCwgMHg4NzE4LCAweDFCM0EsIDB4ODcxQSwgMHg4NzFBLCAweDE0NUUsDQorICAgIDB4ODcxQywgMHg4NzFDLCAweDEzMTQsIDB4ODc0RSwgMHg4NzRFLCAweDBEQjQsIDB4ODc1NSwgMHg4NzU1LCAweDE2NjIsDQorICAgIDB4ODc1NywgMHg4NzU3LCAweDFFRjQsIDB4ODc1RiwgMHg4NzVGLCAweDE4OUUsIDB4ODc2NiwgMHg4NzY2LCAweDFEQzksDQorICAgIDB4ODc2OCwgMHg4NzY4LCAweDE2MkMsIDB4ODc3NCwgMHg4Nzc0LCAweDFFOUIsIDB4ODc3NiwgMHg4Nzc2LCAweDFBMkYsDQorICAgIDB4ODc3OCwgMHg4Nzc4LCAweDE3RDksIDB4ODc4MiwgMHg4NzgyLCAweDExNDIsIDB4ODc4RCwgMHg4NzhELCAweDE4RTQsDQorICAgIDB4ODc5RiwgMHg4NzlGLCAweDEyOTcsIDB4ODdBMiwgMHg4N0EyLCAweDFFNjksIDB4ODdCMywgMHg4N0IzLCAweDEwOTgsDQorICAgIDB4ODdCQSwgMHg4N0JBLCAweDExMUIsIDB4ODdDNCwgMHg4N0M0LCAweDFDRDAsIDB4ODdFMCwgMHg4N0UwLCAweDEzM0UsDQorICAgIDB4ODdFQywgMHg4N0VDLCAweDE1NDIsIDB4ODdFRiwgMHg4N0VGLCAweDE4MTIsIDB4ODdGMiwgMHg4N0YyLCAweDFDOEQsDQorICAgIDB4ODdGOSwgMHg4N0Y5LCAweDFFMTAsIDB4ODdGQiwgMHg4N0ZCLCAweDE5MDgsIDB4ODdGRSwgMHg4N0ZFLCAweDE1NUIsDQorICAgIDB4ODgwNSwgMHg4ODA1LCAweDE2M0EsIDB4ODgxRiwgMHg4ODFGLCAweDExM0IsIDB4ODgyMiwgMHg4ODIyLCAweDFCMDQsDQorICAgIDB4ODgyMywgMHg4ODIzLCAweDExNjQsIDB4ODgzMSwgMHg4ODMxLCAweDBFQUUsIDB4ODgzNiwgMHg4ODM2LCAweDE5ODQsDQorICAgIDB4ODgzQiwgMHg4ODNCLCAweDEyNEQsIDB4ODg0MCwgMHg4ODQwLCAweDFFNEMsIDB4ODg0NiwgMHg4ODQ2LCAweDFCMEMsDQorICAgIDB4ODg0QywgMHg4ODRDLCAweDFFMUQsIDB4ODg0RCwgMHg4ODRELCAweDE3NUQsIDB4ODg1MiwgMHg4ODUyLCAweDFFNDYsDQorICAgIDB4ODg1MywgMHg4ODUzLCAweDE2MjQsIDB4ODg1NywgMHg4ODU3LCAweDBEODEsIDB4ODg1OSwgMHg4ODU5LCAweDE2OUEsDQorICAgIDB4ODg1QiwgMHg4ODVCLCAweDE4OUYsIDB4ODg1RCwgMHg4ODVELCAweDFDOEUsIDB4ODg2MSwgMHg4ODYxLCAweDFFNkEsDQorICAgIDB4ODg2MiwgMHg4ODYyLCAweDBGNUUsIDB4ODg2MywgMHg4ODYzLCAweDE5MDksIDB4ODg2OCwgMHg4ODY4LCAweDFEQTEsDQorICAgIDB4ODg2QiwgMHg4ODZCLCAweDE0Q0UsIDB4ODg3MCwgMHg4ODcwLCAweDE1QkQsIDB4ODg3MiwgMHg4ODcyLCAweDEwMzcsDQorICAgIDB4ODg3NywgMHg4ODc3LCAweDFDOEYsIDB4ODg3RSwgMHg4ODdGLCAweDBGQ0YsIDB4ODg4MSwgMHg4ODgxLCAweDE4ODMsDQorICAgIDB4ODg4MiwgMHg4ODgyLCAweDEyOUIsIDB4ODg4OCwgMHg4ODg4LCAweDBEODIsIDB4ODg4QiwgMHg4ODhCLCAweDEwQTYsDQorICAgIDB4ODg4RCwgMHg4ODhELCAweDFEOEQsIDB4ODg5MiwgMHg4ODkyLCAweDEwNzEsIDB4ODg5NiwgMHg4ODk2LCAweDE1RUEsDQorICAgIDB4ODg5NywgMHg4ODk3LCAweDFCNUQsIDB4ODg5RSwgMHg4ODlFLCAweDBFQzYsIDB4ODhBQiwgMHg4OEFCLCAweDFEQjEsDQorICAgIDB4ODhCNCwgMHg4OEI0LCAweDBFQUYsIDB4ODhDMSwgMHg4OEMxLCAweDE5QjYsIDB4ODhDMiwgMHg4OEMyLCAweDExODIsDQorICAgIDB4ODhDRiwgMHg4OENGLCAweDEyMTgsIDB4ODhENCwgMHg4OEQ0LCAweDE3OUEsIDB4ODhENSwgMHg4OEQ1LCAweDE4QzcsDQorICAgIDB4ODhEOSwgMHg4OEQ5LCAweDBGNzQsIDB4ODhEQywgMHg4OERDLCAweDEzQ0UsIDB4ODhERCwgMHg4OERELCAweDE5QTUsDQorICAgIDB4ODhERiwgMHg4OERGLCAweDE0QUEsIDB4ODhFMSwgMHg4OEUxLCAweDEyMTksIDB4ODhFOCwgMHg4OEU4LCAweDE0NUYsDQorICAgIDB4ODhGMywgMHg4OEYzLCAweDE0RUMsIDB4ODhGNCwgMHg4OEY1LCAweDEzNzUsIDB4ODhGOCwgMHg4OEY4LCAweDExMUMsDQorICAgIDB4ODhGRCwgMHg4OEZELCAweDFBNzUsIDB4ODkwNywgMHg4OTA3LCAweDEzREQsIDB4ODkxMCwgMHg4OTEwLCAweDBEQjMsDQorICAgIDB4ODkxMiwgMHg4OTEyLCAweDFEOEUsIDB4ODkxMywgMHg4OTEzLCAweDEzQ0YsIDB4ODkxOCwgMHg4OTE4LCAweDE4QTAsDQorICAgIDB4ODkxOSwgMHg4OTE5LCAweDEzNzcsIDB4ODkyNSwgMHg4OTI1LCAweDE4MUMsIDB4ODkyQSwgMHg4OTJBLCAweDFEMjYsDQorICAgIDB4ODkzNiwgMHg4OTM2LCAweDE2MzAsIDB4ODkzOCwgMHg4OTM4LCAweDExREUsIDB4ODkzQiwgMHg4OTNCLCAweDE1NTIsDQorICAgIDB4ODk0MSwgMHg4OTQxLCAweDBERTMsIDB4ODk0NCwgMHg4OTQ0LCAweDE3MDksIDB4ODk1RiwgMHg4OTVGLCAweDBGRDEsDQorICAgIDB4ODk2NCwgMHg4OTY0LCAweDExMzcsIDB4ODk2QSwgMHg4OTZBLCAweDEyNTYsIDB4ODk3MiwgMHg4OTcyLCAweDE2MzEsDQorICAgIDB4ODk3RiwgMHg4OTdGLCAweDE1MTUsIDB4ODk4MSwgMHg4OTgxLCAweDE4MTMsIDB4ODk4MywgMHg4OTgzLCAweDEwODYsDQorICAgIDB4ODk4NiwgMHg4OTg2LCAweDEzREUsIDB4ODk4NywgMHg4OTg3LCAweDFENTcsIDB4ODk4QiwgMHg4OThCLCAweDBFM0MsDQorICAgIDB4ODk4RiwgMHg4OThGLCAweDBGQTUsIDB4ODk5MywgMHg4OTkzLCAweDEyN0UsIDB4ODk5NiwgMHg4OTk2LCAweDE2NTIsDQorICAgIDB4ODlBMSwgMHg4OUExLCAweDBFMzMsIDB4ODlBOSwgMHg4OUE5LCAweDEwQ0EsIDB4ODlBQSwgMHg4OUFBLCAweDFDQzMsDQorICAgIDB4ODlCMiwgMHg4OUIyLCAweDBGQzIsIDB4ODlCQSwgMHg4OUJBLCAweDBEOTEsIDB4ODlCRCwgMHg4OUJELCAweDExMzgsDQorICAgIDB4ODlDMCwgMHg4OUMwLCAweDBFRjcsIDB4ODlEMiwgMHg4OUQyLCAweDBEOTIsIDB4ODlFMywgMHg4OUUzLCAweDFFMTEsDQorICAgIDB4ODlGNCwgMHg4OUY0LCAweDE0RUQsIDB4ODlGOCwgMHg4OUY4LCAweDFDNEUsIDB4OEEwMCwgMHg4QTAwLCAweDE3MjEsDQorICAgIDB4OEEwMiwgMHg4QTAyLCAweDFBNTksIDB4OEEwMywgMHg4QTAzLCAweDE0MTMsIDB4OEEwOCwgMHg4QTA4LCAweDBFOEMsDQorICAgIDB4OEEwQSwgMHg4QTBBLCAweDE2N0EsIDB4OEEwQywgMHg4QTBDLCAweDFFQjUsIDB4OEEwRSwgMHg4QTBFLCAweDFEMUMsDQorICAgIDB4OEExMywgMHg4QTEzLCAweDFGMzMsIDB4OEExNiwgMHg4QTE2LCAweDFGNUEsIDB4OEExNywgMHg4QTE3LCAweDFDRUUsDQorICAgIDB4OEExOCwgMHg4QTE4LCAweDEwMTIsIDB4OEExQiwgMHg4QTFCLCAweDE3REEsIDB4OEExRCwgMHg4QTFELCAweDE2OUIsDQorICAgIDB4OEExRiwgMHg4QTFGLCAweDE1QjUsIDB4OEEyMywgMHg4QTIzLCAweDBFNDUsIDB4OEEyNSwgMHg4QTI1LCAweDEwNTYsDQorICAgIDB4OEEyQSwgMHg4QTJBLCAweDEzNjQsIDB4OEEyRCwgMHg4QTJELCAweDE1NTMsIDB4OEEzMSwgMHg4QTMxLCAweDFFMkEsDQorICAgIDB4OEEzNCwgMHg4QTM0LCAweDE1OUEsIDB4OEEzNiwgMHg4QTM2LCAweDBEODMsIDB4OEEzQSwgMHg4QTNBLCAweDFCNUUsDQorICAgIDB4OEEzQiwgMHg4QTNCLCAweDFBRUEsIDB4OEE1MCwgMHg4QTUwLCAweDE0QUIsIDB4OEE1NCwgMHg4QTU0LCAweDFBQTIsDQorICAgIDB4OEE1NSwgMHg4QTU1LCAweDFENkQsIDB4OEE1QiwgMHg4QTVCLCAweDE5RDQsIDB4OEE1RSwgMHg4QTVFLCAweDE0QUMsDQorICAgIDB4OEE2MCwgMHg4QTYwLCAweDE3ODksIDB4OEE2MiwgMHg4QTYyLCAweDE2MUQsIDB4OEE2MywgMHg4QTYzLCAweDE3OUIsDQorICAgIDB4OEE2NiwgMHg4QTY2LCAweDE2NTMsIDB4OEE2OSwgMHg4QTY5LCAweDE2NTQsIDB4OEE2RCwgMHg4QTZELCAweDBGOTMsDQorICAgIDB4OEE2RSwgMHg4QTZFLCAweDFBMTEsIDB4OEE3MCwgMHg4QTcwLCAweDFGNzcsIDB4OEE3MSwgMHg4QTcxLCAweDFFQzEsDQorICAgIDB4OEE3MiwgMHg4QTcyLCAweDFFMTIsIDB4OEE3MywgMHg4QTczLCAweDE0RUUsIDB4OEE3NSwgMHg4QTc1LCAweDE1NDMsDQorICAgIDB4OEE3OSwgMHg4QTc5LCAweDFDMTEsIDB4OEE4NSwgMHg4QTg1LCAweDFBRUIsIDB4OEE4NywgMHg4QTg3LCAweDBFRTEsDQorICAgIDB4OEE4QywgMHg4QThDLCAweDFCM0IsIDB4OEE4RCwgMHg4QThELCAweDE5MzksIDB4OEE5MywgMHg4QTkzLCAweDE1MTYsDQorICAgIDB4OEE5NSwgMHg4QTk1LCAweDFDRjksIDB4OEE5OCwgMHg4QTk4LCAweDE4QzgsIDB4OEE5RSwgMHg4QTlFLCAweDE3MTQsDQorICAgIDB4OEFBMCwgMHg4QUEwLCAweDE1NzIsIDB4OEFBMSwgMHg4QUExLCAweDBFOEQsIDB4OEFBMywgMHg4QUEzLCAweDEyREUsDQorICAgIDB4OEFBNCwgMHg4QUE0LCAweDE3QkIsIDB4OEFBNSwgMHg4QUE1LCAweDBFQjAsIDB4OEFBNiwgMHg4QUE2LCAweDE1QjYsDQorICAgIDB4OEFBOCwgMHg4QUE4LCAweDFGMEEsIDB4OEFBQSwgMHg4QUFBLCAweDE1NTQsIDB4OEFCMCwgMHg4QUIwLCAweDE1RUIsDQorICAgIDB4OEFCMiwgMHg4QUIyLCAweDBFRTIsIDB4OEFCOSwgMHg4QUI5LCAweDE0NjAsIDB4OEFCQywgMHg4QUJDLCAweDE5MEEsDQorICAgIDB4OEFCRSwgMHg4QUJFLCAweDE4RTksIDB4OEFCRiwgMHg4QUJGLCAweDFBQTMsIDB4OEFDMiwgMHg4QUMyLCAweDFDMTIsDQorICAgIDB4OEFDNCwgMHg4QUM0LCAweDE2MUUsIDB4OEFDNywgMHg4QUM3LCAweDEwODcsIDB4OEFDQiwgMHg4QUNCLCAweDFDMjIsDQorICAgIDB4OEFDRCwgMHg4QUNELCAweDE5QkQsIDB4OEFDRiwgMHg4QUNGLCAweDFDNkMsIDB4OEFEMiwgMHg4QUQyLCAweDExNTUsDQorICAgIDB4OEFENiwgMHg4QUQ2LCAweDExQjcsIDB4OEFEQiwgMHg4QURCLCAweDE4QzksIDB4OEFEQywgMHg4QURDLCAweDFDMUEsDQorICAgIDB4OEFFMSwgMHg4QUUxLCAweDE2NTUsIDB4OEFFNiwgMHg4QUU2LCAweDFDMkEsIDB4OEFFNywgMHg4QUU3LCAweDFFMTMsDQorICAgIDB4OEFFQSwgMHg4QUVBLCAweDFBNUEsIDB4OEFFQiwgMHg4QUVCLCAweDBEQUEsIDB4OEFFRCwgMHg4QUVELCAweDE4Q0EsDQorICAgIDB4OEFFRSwgMHg4QUVFLCAweDE5NkEsIDB4OEFGMSwgMHg4QUYxLCAweDFGNDIsIDB4OEFGNiwgMHg4QUY2LCAweDE2OEEsDQorICAgIDB4OEFGNywgMHg4QUY3LCAweDFEQTksIDB4OEFGOCwgMHg4QUY4LCAweDFBNzYsIDB4OEFGQSwgMHg4QUZBLCAweDE3MjIsDQorICAgIDB4OEFGRSwgMHg4QUZFLCAweDEwMkIsIDB4OEIwMCwgMHg4QjAwLCAweDEyQjEsIDB4OEIwMSwgMHg4QjAxLCAweDE2QkEsDQorICAgIDB4OEIwMiwgMHg4QjAyLCAweDE4QTEsIDB4OEIwNCwgMHg4QjA0LCAweDExMTMsIDB4OEIwRSwgMHg4QjBFLCAweDEzMDIsDQorICAgIDB4OEIxMCwgMHg4QjEwLCAweDEzMTUsIDB4OEIxNCwgMHg4QjE0LCAweDFERDEsIDB4OEIxNiwgMHg4QjE2LCAweDE1QTcsDQorICAgIDB4OEIxNywgMHg4QjE3LCAweDEzNjUsIDB4OEIxOSwgMHg4QjE5LCAweDBFNDksIDB4OEIxQSwgMHg4QjFBLCAweDE5MkEsDQorICAgIDB4OEIxQiwgMHg4QjFCLCAweDBERTQsIDB4OEIxRCwgMHg4QjFELCAweDE0QUQsIDB4OEIyMCwgMHg4QjIwLCAweDE4MTQsDQorICAgIDB4OEIyOCwgMHg4QjI4LCAweDEyQjIsIDB4OEIyQiwgMHg4QjJCLCAweDE5RUEsIDB4OEIyQywgMHg4QjJDLCAweDExRUQsDQorICAgIDB4OEIzMywgMHg4QjMzLCAweDBGNUYsIDB4OEIzOSwgMHg4QjM5LCAweDBGQzMsIDB4OEI0MSwgMHg4QjQxLCAweDFFQzIsDQorICAgIDB4OEI0OSwgMHg4QjQ5LCAweDFCMUMsIDB4OEI0RSwgMHg4QjRFLCAweDFGNEIsIDB4OEI0RiwgMHg4QjRGLCAweDEwMTMsDQorICAgIDB4OEI1OCwgMHg4QjU4LCAweDE2NjMsIDB4OEI1QSwgMHg4QjVBLCAweDEwODgsIDB4OEI1QywgMHg4QjVDLCAweDEzRDAsDQorICAgIDB4OEI2NiwgMHg4QjY2LCAweDBFNzEsIDB4OEI2QywgMHg4QjZDLCAweDE0NjEsIDB4OEI2RiwgMHg4QjZGLCAweDE3NDEsDQorICAgIDB4OEI3MCwgMHg4QjcwLCAweDE5MEIsIDB4OEI3NCwgMHg4Qjc0LCAweDBFM0QsIDB4OEI3NywgMHg4Qjc3LCAweDFFOUMsDQorICAgIDB4OEI3RCwgMHg4QjdELCAweDE3OUMsIDB4OEI4MCwgMHg4QjgwLCAweDEwREUsIDB4OEI4QSwgMHg4QjhBLCAweDEzQTksDQorICAgIDB4OEI5MCwgMHg4QjkwLCAweDE1RUMsIDB4OEI5MiwgMHg4QjkyLCAweDFCQjIsIDB4OEI5MywgMHg4QjkzLCAweDE3MEEsDQorICAgIDB4OEI5NiwgMHg4Qjk2LCAweDFCQjMsIDB4OEI5QSwgMHg4QjlBLCAweDFCQTAsIDB4OEMzNywgMHg4QzM3LCAweDBFQkMsDQorICAgIDB4OEMzRiwgMHg4QzNGLCAweDBFOEUsIDB4OEM0MSwgMHg4QzQxLCAweDFFREUsIDB4OEM0NiwgMHg4QzQ2LCAweDExMDMsDQorICAgIDB4OEM0OCwgMHg4QzQ4LCAweDEwMTQsIDB4OEM0QSwgMHg4QzRBLCAweDFEQUEsIDB4OEM0QywgMHg4QzRDLCAweDE3RUEsDQorICAgIDB4OEM1NSwgMHg4QzU1LCAweDE2NTYsIDB4OEM1QSwgMHg4QzVBLCAweDEwRTcsIDB4OEM2MSwgMHg4QzYxLCAweDE0RUYsDQorICAgIDB4OEM2QSwgMHg4QzZBLCAweDFFOUQsIDB4OEM2QiwgMHg4QzZCLCAweDE3OUQsIDB4OEM3OSwgMHg4Qzc5LCAweDFEQTIsDQorICAgIDB4OEM3QSwgMHg4QzdBLCAweDE2NTcsIDB4OEM4MiwgMHg4QzgyLCAweDFDNDQsIDB4OEM4QSwgMHg4QzhBLCAweDEyNzMsDQorICAgIDB4OEM4QywgMHg4QzhDLCAweDEyQjMsIDB4OEM5RCwgMHg4QzlELCAweDFENTgsIDB4OEM5RSwgMHg4QzlFLCAweDFBNUIsDQorICAgIDB4OENBMCwgMHg4Q0EwLCAweDE0MTQsIDB4OENBMSwgMHg4Q0ExLCAweDE5QjcsIDB4OENBMiwgMHg4Q0EyLCAweDBFRDgsDQorICAgIDB4OENBNywgMHg4Q0E3LCAweDE0NzIsIDB4OENBOCwgMHg4Q0E4LCAweDFFQzMsIDB4OENBOSwgMHg4Q0E5LCAweDFENDcsDQorICAgIDB4OENBQSwgMHg4Q0FBLCAweDFDRkYsIDB4OENBQiwgMHg4Q0FCLCAweDBFRjgsIDB4OENBQywgMHg4Q0FDLCAweDFCRDksDQorICAgIDB4OENBRiwgMHg4Q0FGLCAweDE5RDUsIDB4OENCMCwgMHg4Q0IwLCAweDE1N0IsIDB4OENCMywgMHg4Q0IzLCAweDE5MjEsDQorICAgIDB4OENCNCwgMHg4Q0I0LCAweDBGOTgsIDB4OENCNiwgMHg4Q0I2LCAweDFENjgsIDB4OENCNywgMHg4Q0I3LCAweDEyNkUsDQorICAgIDB4OENCOCwgMHg4Q0I4LCAweDEwQTcsIDB4OENCQiwgMHg4Q0JCLCAweDE0NjIsIDB4OENCQywgMHg4Q0JDLCAweDFDMUIsDQorICAgIDB4OENCRCwgMHg4Q0JELCAweDE5MjAsIDB4OENCRiwgMHg4Q0JGLCAweDEyREYsIDB4OENDMCwgMHg4Q0MwLCAweDFEQ0EsDQorICAgIDB4OENDMSwgMHg4Q0MxLCAweDE0MzEsIDB4OENDMiwgMHg4Q0MyLCAweDExQzMsIDB4OENDMywgMHg4Q0MzLCAweDE5NEMsDQorICAgIDB4OENDNCwgMHg4Q0M0LCAweDFGMEIsIDB4OENDNywgMHg4Q0M3LCAweDE5NkIsIDB4OENDOCwgMHg4Q0M4LCAweDBEODQsDQorICAgIDB4OENDQSwgMHg4Q0NBLCAweDE5RUIsIDB4OENEMSwgMHg4Q0QxLCAweDFCNUYsIDB4OENEMywgMHg4Q0QzLCAweDE0NzMsDQorICAgIDB4OENEQSwgMHg4Q0RBLCAweDExQzQsIDB4OENEQywgMHg4Q0RDLCAweDE0QUUsIDB4OENERSwgMHg4Q0RFLCAweDE0RjAsDQorICAgIDB4OENFMCwgMHg4Q0UwLCAweDEzNzgsIDB4OENFMiwgMHg4Q0UyLCAweDFFNDcsIDB4OENFMywgMHg4Q0UzLCAweDEyNkYsDQorICAgIDB4OENFNCwgMHg4Q0U0LCAweDFCRjgsIDB4OENFNiwgMHg4Q0U2LCAweDE0MTUsIDB4OENFQSwgMHg4Q0VBLCAweDFCNzMsDQorICAgIDB4OENFRCwgMHg4Q0VELCAweDEwQ0IsIDB4OENGNCwgMHg4Q0Y0LCAweDExQzUsIDB4OENGQiwgMHg4Q0ZCLCAweDE0MTYsDQorICAgIDB4OENGQywgMHg4Q0ZDLCAweDBGNjAsIDB4OENGRCwgMHg4Q0ZELCAweDE0RjQsIDB4OEQwNCwgMHg4RDA0LCAweDFCM0MsDQorICAgIDB4OEQwNSwgMHg4RDA1LCAweDFDOTMsIDB4OEQwNywgMHg4RDA3LCAweDE4REQsIDB4OEQwOCwgMHg4RDA4LCAweDFCMUQsDQorICAgIDB4OEQwQSwgMHg4RDBBLCAweDFCQTEsIDB4OEQwRCwgMHg4RDBELCAweDE1NUMsIDB4OEQxMywgMHg4RDEzLCAweDE5QTYsDQorICAgIDB4OEQxNiwgMHg4RDE2LCAweDE1QTgsIDB4OEQ2NCwgMHg4RDY0LCAweDE5RUMsIDB4OEQ2NiwgMHg4RDY2LCAweDE0QUYsDQorICAgIDB4OEQ2QiwgMHg4RDZCLCAweDFFMzQsIDB4OEQ3MCwgMHg4RDcwLCAweDFBRUMsIDB4OEQ3MywgMHg4RDczLCAweDBGQTYsDQorICAgIDB4OEQ3NCwgMHg4RDc0LCAweDE0MTcsIDB4OEQ3NywgMHg4RDc3LCAweDEwMTUsIDB4OEQ4NSwgMHg4RDg1LCAweDFDNDUsDQorICAgIDB4OEQ4QSwgMHg4RDhBLCAweDE4OEEsIDB4OEQ5OSwgMHg4RDk5LCAweDFBQTQsIDB4OERBMywgMHg4REEzLCAweDFDOUUsDQorICAgIDB4OERBOCwgMHg4REE4LCAweDFDNkQsIDB4OERCMywgMHg4REIzLCAweDFBQUUsIDB4OERCQSwgMHg4REJBLCAweDE0MTgsDQorICAgIDB4OERCRSwgMHg4REJFLCAweDFCM0QsIDB4OERDNiwgMHg4REM2LCAweDFEMTIsIDB4OERDQiwgMHg4RENCLCAweDEzNDgsDQorICAgIDB4OERDQywgMHg4RENDLCAweDFCNzQsIDB4OERDRiwgMHg4RENGLCAweDBEODUsIDB4OEREQiwgMHg4RERCLCAweDFENDAsDQorICAgIDB4OERERCwgMHg4RERELCAweDBFMEMsIDB4OERFMSwgMHg4REUxLCAweDE5RUQsIDB4OERFMywgMHg4REUzLCAweDE1NDQsDQorICAgIDB4OERFOCwgMHg4REU4LCAweDBFRTMsIDB4OERFRiwgMHg4REVGLCAweDExQUEsIDB4OERGMywgMHg4REYzLCAweDEwQ0MsDQorICAgIDB4OEUwQSwgMHg4RTBBLCAweDE4MzIsIDB4OEUwRiwgMHg4RTBGLCAweDEwOEQsIDB4OEUxMCwgMHg4RTEwLCAweDFCRjksDQorICAgIDB4OEUxRSwgMHg4RTFFLCAweDBFMEQsIDB4OEUyQSwgMHg4RTJBLCAweDFBQzIsIDB4OEUzMCwgMHg4RTMwLCAweDE4Q0IsDQorICAgIDB4OEUzNSwgMHg4RTM1LCAweDFBQzMsIDB4OEU0MiwgMHg4RTQyLCAweDE4Q0MsIDB4OEU0NCwgMHg4RTQ0LCAweDFBNzcsDQorICAgIDB4OEU0NywgMHg4RTQ3LCAweDBFMUEsIDB4OEU0OCwgMHg4RTQ4LCAweDEwQ0QsIDB4OEU0OSwgMHg4RTQ5LCAweDFCOEMsDQorICAgIDB4OEU0QSwgMHg4RTRBLCAweDFFNzUsIDB4OEU1OSwgMHg4RTU5LCAweDFDODAsIDB4OEU1RiwgMHg4RTVGLCAweDE5RUUsDQorICAgIDB4OEU2MCwgMHg4RTYwLCAweDFCRTksIDB4OEU3NCwgMHg4RTc0LCAweDFDODEsIDB4OEU3NiwgMHg4RTc2LCAweDBGOEUsDQorICAgIDB4OEU4MSwgMHg4RTgxLCAweDFBQTUsIDB4OEU4NywgMHg4RTg3LCAweDE5RDYsIDB4OEU4QSwgMHg4RThBLCAweDFBRUQsDQorICAgIDB4OEU4RCwgMHg4RThELCAweDE2RjYsIDB4OEVBQSwgMHg4RUFBLCAweDEyMjMsIDB4OEVBQiwgMHg4RUFCLCAweDE2N0IsDQorICAgIDB4OEVBQywgMHg4RUFDLCAweDBGODAsIDB4OEVDMCwgMHg4RUMwLCAweDBGNjEsIDB4OEVDQSwgMHg4RUNBLCAweDFCOEQsDQorICAgIDB4OEVDQiwgMHg4RUNCLCAweDE2QkIsIDB4OEVDQywgMHg4RUNDLCAweDBGOTQsIDB4OEVDRCwgMHg4RUNELCAweDBGNzUsDQorICAgIDB4OEVEMiwgMHg4RUQyLCAweDFFMkUsIDB4OEVERiwgMHg4RURGLCAweDE3NUUsIDB4OEVFQiwgMHg4RUVCLCAweDFCNjAsDQorICAgIDB4OEVGOCwgMHg4RUY4LCAweDFDODIsIDB4OEVGQiwgMHg4RUZCLCAweDBEODYsIDB4OEVGRSwgMHg4RUZFLCAweDE2NjQsDQorICAgIDB4OEYwMywgMHg4RjAzLCAweDBGMkYsIDB4OEYwNSwgMHg4RjA1LCAweDExQUIsIDB4OEYwOSwgMHg4RjA5LCAweDE5QjgsDQorICAgIDB4OEYxMiwgMHg4RjEyLCAweDFDMUMsIDB4OEYxMywgMHg4RjEzLCAweDEyNEUsIDB4OEYxNCwgMHg4RjE0LCAweDEzRDEsDQorICAgIDB4OEYxNSwgMHg4RjE1LCAweDBFNzIsIDB4OEYxQiwgMHg4RjFCLCAweDExNTYsIDB4OEYxQywgMHg4RjFDLCAweDFDQkMsDQorICAgIDB4OEYxRCwgMHg4RjFELCAweDFGNDMsIDB4OEYxRSwgMHg4RjFFLCAweDEyNjIsIDB4OEYxRiwgMHg4RjFGLCAweDFDMDYsDQorICAgIDB4OEYyNiwgMHg4RjI2LCAweDExN0EsIDB4OEYyNywgMHg4RjI3LCAweDEzQkYsIDB4OEYyOSwgMHg4RjI5LCAweDEzNzksDQorICAgIDB4OEYyQSwgMHg4RjJBLCAweDExRjcsIDB4OEYyRiwgMHg4RjJGLCAweDFCN0IsIDB4OEYzMywgMHg4RjMzLCAweDFBRUUsDQorICAgIDB4OEYzOCwgMHg4RjM4LCAweDE1RUQsIDB4OEYzOSwgMHg4RjM5LCAweDEzREYsIDB4OEYzQiwgMHg4RjNCLCAweDEzRTAsDQorICAgIDB4OEYzRSwgMHg4RjNFLCAweDFBMTIsIDB4OEYzRiwgMHg4RjNGLCAweDE3MzgsIDB4OEY0NCwgMHg4RjQ0LCAweDFERTIsDQorICAgIDB4OEY0NSwgMHg4RjQ1LCAweDE4ODQsIDB4OEY0OSwgMHg4RjQ5LCAweDFBMTMsIDB4OEY0RCwgMHg4RjRELCAweDFDMDcsDQorICAgIDB4OEY0RSwgMHg4RjRFLCAweDBGMzAsIDB4OEY1RCwgMHg4RjVELCAweDE3MzksIDB4OEY1RiwgMHg4RjVGLCAweDBGMUIsDQorICAgIDB4OEY2MiwgMHg4RjYyLCAweDExNkYsIDB4OEY5QiwgMHg4RjlCLCAweDE2N0MsIDB4OEY5QywgMHg4RjlDLCAweDBFQjEsDQorICAgIDB4OEZBMywgMHg4RkEzLCAweDExMkUsIDB4OEZBNiwgMHg4RkE2LCAweDFENDgsIDB4OEZBOCwgMHg4RkE4LCAweDEzQUEsDQorICAgIDB4OEZBRCwgMHg4RkFELCAweDE0QjAsIDB4OEZBRiwgMHg4RkFGLCAweDEzQUIsIDB4OEZCMCwgMHg4RkIwLCAweDFCNjEsDQorICAgIDB4OEZCMSwgMHg4RkIxLCAweDE4MUQsIDB4OEZCMiwgMHg4RkIyLCAweDEwNTEsIDB4OEZDMiwgMHg4RkMyLCAweDE4NEUsDQorICAgIDB4OEZDNSwgMHg4RkM1LCAweDE2N0QsIDB4OEZDRSwgMHg4RkNFLCAweDE3OEEsIDB4OEZEMSwgMHg4RkQxLCAweDBGQzQsDQorICAgIDB4OEZENCwgMHg4RkQ0LCAweDEzM0YsIDB4OEZFNiwgMHg4RkU2LCAweDBEODcsIDB4OEZFQSwgMHg4RkVBLCAweDE5RUYsDQorICAgIDB4OEZFQiwgMHg4RkVCLCAweDEzMjYsIDB4OEZFRCwgMHg4RkVELCAweDFCNzUsIDB4OEZGMCwgMHg4RkYwLCAweDE2MjUsDQorICAgIDB4OEZGMiwgMHg4RkYyLCAweDBFMkEsIDB4OEZGNywgMHg4RkY3LCAweDEzMDMsIDB4OEZGOSwgMHg4RkY5LCAweDE5RjAsDQorICAgIDB4OEZGRCwgMHg4RkZELCAweDFDNkUsIDB4OTAwMCwgMHg5MDAwLCAweDFEMjcsIDB4OTAwMSwgMHg5MDAxLCAweDE1QjcsDQorICAgIDB4OTAwMiwgMHg5MDAyLCAweDBFRkUsIDB4OTAwMywgMHg5MDAzLCAweDEwQ0UsIDB4OTAwNSwgMHg5MDA1LCAweDFGMkEsDQorICAgIDB4OTAwNiwgMHg5MDA2LCAweDE3NDIsIDB4OTAwOCwgMHg5MDA4LCAweDFFNkIsIDB4OTAwQiwgMHg5MDBCLCAweDFEOEYsDQorICAgIDB4OTAwRCwgMHg5MDBELCAweDE1OUIsIDB4OTAwRiwgMHg5MDBGLCAweDFEMkQsIDB4OTAxMCwgMHg5MDEwLCAweDFDODMsDQorICAgIDB4OTAxMSwgMHg5MDExLCAweDBGNjIsIDB4OTAxNCwgMHg5MDE0LCAweDEwQ0YsIDB4OTAxNSwgMHg5MDE1LCAweDBFNzMsDQorICAgIDB4OTAxNywgMHg5MDE3LCAweDExMDQsIDB4OTAxOSwgMHg5MDE5LCAweDE5RDcsIDB4OTAxQSwgMHg5MDFBLCAweDFEMjIsDQorICAgIDB4OTAxRCwgMHg5MDFELCAweDE1MTcsIDB4OTAxRSwgMHg5MDFFLCAweDExOTQsIDB4OTAxRiwgMHg5MDFGLCAweDE1QTksDQorICAgIDB4OTAyMCwgMHg5MDIwLCAweDFBQTYsIDB4OTAyMSwgMHg5MDIxLCAweDFCMDUsIDB4OTAyMiwgMHg5MDIyLCAweDEzRjIsDQorICAgIDB4OTAyMywgMHg5MDIzLCAweDExN0IsIDB4OTAyRSwgMHg5MDJFLCAweDFDMkIsIDB4OTAzMSwgMHg5MDMxLCAweDFBRUYsDQorICAgIDB4OTAzMiwgMHg5MDMyLCAweDFCNjIsIDB4OTAzNSwgMHg5MDM1LCAweDBGQTcsIDB4OTAzOCwgMHg5MDM4LCAweDE5NDIsDQorICAgIDB4OTAzQywgMHg5MDNDLCAweDFEQkYsIDB4OTAzRSwgMHg5MDNFLCAweDE4Q0UsIDB4OTA0MSwgMHg5MDQxLCAweDExMDksDQorICAgIDB4OTA0MiwgMHg5MDQyLCAweDE1RUUsIDB4OTA0NywgMHg5MDQ3LCAweDE4NEYsIDB4OTA0QSwgMHg5MDRBLCAweDE4Q0QsDQorICAgIDB4OTA0QiwgMHg5MDRCLCAweDE4NjYsIDB4OTA0RCwgMHg5MDRELCAweDFENjUsIDB4OTA0RSwgMHg5MDRFLCAweDBFRTQsDQorICAgIDB4OTA1MCwgMHg5MDUwLCAweDFEQ0IsIDB4OTA1MSwgMHg5MDUxLCAweDFFRjUsIDB4OTA1MywgMHg5MDUzLCAweDEwRDAsDQorICAgIDB4OTA1NCwgMHg5MDU0LCAweDEwNzgsIDB4OTA1NSwgMHg5MDU1LCAweDE4QTIsIDB4OTA1OSwgMHg5MDU5LCAweDE4MTUsDQorICAgIDB4OTA1QywgMHg5MDVDLCAweDE1QUUsIDB4OTA1RCwgMHg5MDVELCAweDEwOEUsIDB4OTA1RSwgMHg5MDVFLCAweDFDMkMsDQorICAgIDB4OTA2MCwgMHg5MDYwLCAweDE4ODUsIDB4OTA2MSwgMHg5MDYxLCAweDE1OUMsIDB4OTA2MywgMHg5MDYzLCAweDBFM0UsDQorICAgIDB4OTA2OSwgMHg5MDY5LCAweDE5RjEsIDB4OTA2RCwgMHg5MDZELCAweDFBQTcsIDB4OTA2RSwgMHg5MDZFLCAweDFCOEUsDQorICAgIDB4OTA2RiwgMHg5MDZGLCAweDExMEEsIDB4OTA3MiwgMHg5MDcyLCAweDFCM0UsIDB4OTA3NSwgMHg5MDc1LCAweDFCMDYsDQorICAgIDB4OTA3NywgMHg5MDc3LCAweDFCRkEsIDB4OTA3OCwgMHg5MDc4LCAweDE1NDUsIDB4OTA3QSwgMHg5MDdBLCAweDE4Q0YsDQorICAgIDB4OTA3QywgMHg5MDdDLCAweDExRDEsIDB4OTA3RCwgMHg5MDdELCAweDBFMEUsIDB4OTA3RiwgMHg5MDdGLCAweDFEQjIsDQorICAgIDB4OTA4MCwgMHg5MDgwLCAweDE4MTYsIDB4OTA4MSwgMHg5MDgxLCAweDEyNzAsIDB4OTA4MiwgMHg5MDgyLCAweDFFMTQsDQorICAgIDB4OTA4MywgMHg5MDgzLCAweDE1RUYsIDB4OTA4NCwgMHg5MDg0LCAweDFFRDgsIDB4OTA4NywgMHg5MDg3LCAweDE5MjIsDQorICAgIDB4OTA4OCwgMHg5MDg4LCAweDEyM0QsIDB4OTA4QSwgMHg5MDhBLCAweDEzQUMsIDB4OTA4RiwgMHg5MDhGLCAweDExMUQsDQorICAgIDB4OTA5MSwgMHg5MDkxLCAweDE4RjUsIDB4OTA5NSwgMHg5MDk1LCAweDE3RDAsIDB4OTA5OSwgMHg5MDk5LCAweDEyNjMsDQorICAgIDB4OTBBMiwgMHg5MEEyLCAweDFFNkMsIDB4OTBBMywgMHg5MEEzLCAweDEwMkEsIDB4OTBBNiwgMHg5MEE2LCAweDEzNjYsDQorICAgIDB4OTBBOCwgMHg5MEE4LCAweDFDNTIsIDB4OTBBQSwgMHg5MEFBLCAweDE0QjEsIDB4OTBBRiwgMHg5MEFGLCAweDBEQzYsDQorICAgIDB4OTBCMCwgMHg5MEIwLCAweDFEMTMsIDB4OTBCMSwgMHg5MEIxLCAweDBGNjMsIDB4OTBCNSwgMHg5MEI1LCAweDE1OUQsDQorICAgIDB4OTBCOCwgMHg5MEI4LCAweDE5RDgsIDB4OTBDMSwgMHg5MEMxLCAweDE4NUMsIDB4OTBDQSwgMHg5MENBLCAweDBGMzEsDQorICAgIDB4OTBERSwgMHg5MERFLCAweDExNDMsIDB4OTBFMSwgMHg5MEUxLCAweDBGNzYsIDB4OTBFOCwgMHg5MEU4LCAweDE0MTksDQorICAgIDB4OTBFRCwgMHg5MEVELCAweDBFRUEsIDB4OTBGNSwgMHg5MEY1LCAweDE4NTAsIDB4OTBGRCwgMHg5MEZELCAweDEwRDEsDQorICAgIDB4OTEwMiwgMHg5MTAyLCAweDE2QUEsIDB4OTExMiwgMHg5MTEyLCAweDFDNkYsIDB4OTExNSwgMHg5MTE1LCAweDFFMjIsDQorICAgIDB4OTExOSwgMHg5MTE5LCAweDE0NjMsIDB4OTEyNywgMHg5MTI3LCAweDExMTQsIDB4OTEyRCwgMHg5MTJELCAweDFBNUMsDQorICAgIDB4OTEzMiwgMHg5MTMyLCAweDEwNzIsIDB4OTE0OSwgMHg5MTQ5LCAweDE4RDAsIDB4OTE0QSwgMHg5MTRBLCAweDFBNUQsDQorICAgIDB4OTE0QiwgMHg5MTRCLCAweDFDNzAsIDB4OTE0QywgMHg5MTRDLCAweDE5NzcsIDB4OTE0RCwgMHg5MTRELCAweDEzN0EsDQorICAgIDB4OTE0RSwgMHg5MTRFLCAweDFBRjAsIDB4OTE1MiwgMHg5MTUyLCAweDFBRjEsIDB4OTE2MiwgMHg5MTYyLCAweDFDNDYsDQorICAgIDB4OTE2OSwgMHg5MTY5LCAweDEyOTgsIDB4OTE2QSwgMHg5MTZBLCAweDExMjMsIDB4OTE2QywgMHg5MTZDLCAweDE1RjAsDQorICAgIDB4OTE3NSwgMHg5MTc1LCAweDFGMUMsIDB4OTE3NywgMHg5MTc3LCAweDFFQTMsIDB4OTE3OCwgMHg5MTc4LCAweDE0QzEsDQorICAgIDB4OTE4NywgMHg5MTg3LCAweDE2MUYsIDB4OTE4OSwgMHg5MTg5LCAweDFDOUYsIDB4OTE4QiwgMHg5MThCLCAweDFDNDcsDQorICAgIDB4OTE4RCwgMHg5MThELCAweDFBNzgsIDB4OTE5MiwgMHg5MTkyLCAweDE1NzMsIDB4OTE5QywgMHg5MTlDLCAweDFDNzEsDQorICAgIDB4OTFBQiwgMHg5MUFCLCAweDE5MEMsIDB4OTFBQywgMHg5MUFDLCAweDE5QTcsIDB4OTFBRSwgMHg5MUFFLCAweDFDNDgsDQorICAgIDB4OTFBRiwgMHg5MUFGLCAweDFFNzYsIDB4OTFCMSwgMHg5MUIxLCAweDEzNDksIDB4OTFCNCwgMHg5MUI0LCAweDExOUQsDQorICAgIDB4OTFCNSwgMHg5MUI1LCAweDBFMDAsIDB4OTFDMCwgMHg5MUMwLCAweDE3MEIsIDB4OTFDNywgMHg5MUM3LCAweDFCRDQsDQorICAgIDB4OTFDOSwgMHg5MUM5LCAweDE4RDEsIDB4OTFDQiwgMHg5MUNCLCAweDE1MjgsIDB4OTFDQywgMHg5MUNDLCAweDEyMUEsDQorICAgIDB4OTFDRCwgMHg5MUNELCAweDFCMEQsIDB4OTFDRSwgMHg5MUNFLCAweDE2RUYsIDB4OTFDRiwgMHg5MUNGLCAweDExNTcsDQorICAgIDB4OTFEMCwgMHg5MUQwLCAweDEyMUIsIDB4OTFEMSwgMHg5MUQxLCAweDEwMjMsIDB4OTFENywgMHg5MUQ3LCAweDE1QkUsDQorICAgIDB4OTFEOCwgMHg5MUQ4LCAweDFBNUUsIDB4OTFEQywgMHg5MURDLCAweDE0MUEsIDB4OTFERCwgMHg5MURELCAweDFDQ0UsDQorICAgIDB4OTFFMywgMHg5MUUzLCAweDFBQTgsIDB4OTFFNywgMHg5MUU3LCAweDFCRkIsIDB4OTFFQSwgMHg5MUVBLCAweDE4NTEsDQorICAgIDB4OTFGNSwgMHg5MUY1LCAweDFCRDUsIDB4OTIwRCwgMHg5MjBELCAweDExMEIsIDB4OTIxMCwgMHg5MjEwLCAweDBFMjYsDQorICAgIDB4OTIxMSwgMHg5MjExLCAweDFENDksIDB4OTIxMiwgMHg5MjEyLCAweDE0RDEsIDB4OTIxNywgMHg5MjE3LCAweDE4REUsDQorICAgIDB4OTIxRSwgMHg5MjFFLCAweDBGQUUsIDB4OTIzNCwgMHg5MjM0LCAweDExOTUsIDB4OTIzQSwgMHg5MjNBLCAweDE3QzIsDQorICAgIDB4OTIzRiwgMHg5MjNGLCAweDFBMTQsIDB4OTI0MCwgMHg5MjQwLCAweDBEQ0UsIDB4OTI0NSwgMHg5MjQ1LCAweDBFMEYsDQorICAgIDB4OTI0OSwgMHg5MjQ5LCAweDFFNDgsIDB4OTI1NywgMHg5MjU3LCAweDBFNEEsIDB4OTI1QiwgMHg5MjVCLCAweDE3NUYsDQorICAgIDB4OTI1RSwgMHg5MjVFLCAweDE4OEIsIDB4OTI2MiwgMHg5MjYyLCAweDEzNEEsIDB4OTI2NCwgMHg5MjY0LCAweDBGNjQsDQorICAgIDB4OTI2NSwgMHg5MjY1LCAweDE2MjYsIDB4OTI2NiwgMHg5MjY2LCAweDFBNUYsIDB4OTI4MCwgMHg5MjgwLCAweDE4RUEsDQorICAgIDB4OTI4MywgMHg5MjgzLCAweDFDNUMsIDB4OTI4NSwgMHg5Mjg1LCAweDEwRkIsIDB4OTI5MSwgMHg5MjkxLCAweDE1NDYsDQorICAgIDB4OTI5MywgMHg5MjkzLCAweDFBMTUsIDB4OTI5NiwgMHg5Mjk2LCAweDE1RjEsIDB4OTI5OCwgMHg5Mjk4LCAweDEyOTksDQorICAgIDB4OTI5QywgMHg5MjlDLCAweDFERUMsIDB4OTJCMywgMHg5MkIzLCAweDE3OUUsIDB4OTJCNiwgMHg5MkI2LCAweDBGNjUsDQorICAgIDB4OTJCNywgMHg5MkI3LCAweDE1OUUsIDB4OTJCOSwgMHg5MkI5LCAweDE1RjIsIDB4OTJDQywgMHg5MkNDLCAweDFBNjAsDQorICAgIDB4OTJDRiwgMHg5MkNGLCAweDFFNTksIDB4OTJEMiwgMHg5MkQyLCAweDEzRjMsIDB4OTJFNCwgMHg5MkU0LCAweDE1MTgsDQorICAgIDB4OTJFQSwgMHg5MkVBLCAweDFEOTAsIDB4OTJGOCwgMHg5MkY4LCAweDBFMTAsIDB4OTJGQywgMHg5MkZDLCAweDBERTUsDQorICAgIDB4OTMwNCwgMHg5MzA0LCAweDExQjQsIDB4OTMxMCwgMHg5MzEwLCAweDFDNzIsIDB4OTMxOCwgMHg5MzE4LCAweDFDNzMsDQorICAgIDB4OTMxQSwgMHg5MzFBLCAweDE5QkUsIDB4OTMxRSwgMHg5MzFFLCAweDE2MjAsIDB4OTMxRiwgMHg5MzFGLCAweDEwODksDQorICAgIDB4OTMyMCwgMHg5MzIwLCAweDFBNjEsIDB4OTMyMSwgMHg5MzIxLCAweDEwMTYsIDB4OTMyMiwgMHg5MzIyLCAweDFBMTYsDQorICAgIDB4OTMyNCwgMHg5MzI0LCAweDEwMTcsIDB4OTMyNiwgMHg5MzI2LCAweDBGRDIsIDB4OTMyOCwgMHg5MzI4LCAweDEyQ0IsDQorICAgIDB4OTMyQiwgMHg5MzJCLCAweDE1MjksIDB4OTMyRSwgMHg5MzJFLCAweDBFQjIsIDB4OTMyRiwgMHg5MzJGLCAweDFCOTMsDQorICAgIDB4OTM0OCwgMHg5MzQ4LCAweDE3OEIsIDB4OTM0QSwgMHg5MzRBLCAweDExN0MsIDB4OTM0QiwgMHg5MzRCLCAweDBFRTUsDQorICAgIDB4OTM0RCwgMHg5MzRELCAweDEwRDIsIDB4OTM1NCwgMHg5MzU0LCAweDE2QUIsIDB4OTM1QiwgMHg5MzVCLCAweDEwNzMsDQorICAgIDB4OTM2RSwgMHg5MzZFLCAweDE4RDIsIDB4OTM3NSwgMHg5Mzc1LCAweDBFMUIsIDB4OTM3QywgMHg5MzdDLCAweDFDQ0YsDQorICAgIDB4OTM3RSwgMHg5MzdFLCAweDFBQzQsIDB4OTM4QywgMHg5MzhDLCAweDBFNEIsIDB4OTM5NCwgMHg5Mzk0LCAweDE4MzMsDQorICAgIDB4OTM5NiwgMHg5Mzk2LCAweDE1QkMsIDB4OTM5QSwgMHg5MzlBLCAweDFDNzQsIDB4OTNBMywgMHg5M0EzLCAweDFFNkQsDQorICAgIDB4OTNBNywgMHg5M0E3LCAweDBERjksIDB4OTNBQywgMHg5M0FDLCAweDFFOUUsIDB4OTNBRCwgMHg5M0FELCAweDFCNjMsDQorICAgIDB4OTNCMCwgMHg5M0IwLCAweDE5NDMsIDB4OTNDMywgMHg5M0MzLCAweDFBQUYsIDB4OTNEMSwgMHg5M0QxLCAweDE5RjIsDQorICAgIDB4OTNERSwgMHg5M0RFLCAweDE4MzQsIDB4OTNFMSwgMHg5M0UxLCAweDBFNzQsIDB4OTNFNCwgMHg5M0U0LCAweDExREYsDQorICAgIDB4OTNGNiwgMHg5M0Y2LCAweDFCN0MsIDB4OTQwNCwgMHg5NDA0LCAweDFGMTAsIDB4OTQxOCwgMHg5NDE4LCAweDFBQzUsDQorICAgIDB4OTQyNSwgMHg5NDI1LCAweDE1NDcsIDB4OTQyQiwgMHg5NDJCLCAweDFBMTcsIDB4OTQzNSwgMHg5NDM1LCAweDFDMDgsDQorICAgIDB4OTQzOCwgMHg5NDM4LCAweDFDRUYsIDB4OTQ0NCwgMHg5NDQ0LCAweDFBRjIsIDB4OTQ1MSwgMHg5NDUyLCAweDBEQzcsDQorICAgIDB4OTQ1QiwgMHg5NDVCLCAweDBGMEIsIDB4OTQ3RCwgMHg5NDdELCAweDFCQTIsIDB4OTQ3RiwgMHg5NDdGLCAweDFCOTQsDQorICAgIDB4OTU3NywgMHg5NTc3LCAweDE5QTgsIDB4OTU4MCwgMHg5NTgwLCAweDEyRUUsIDB4OTU4MywgMHg5NTgzLCAweDE1NUQsDQorICAgIDB4OTU4OSwgMHg5NTg5LCAweDFENzYsIDB4OTU4QiwgMHg5NThCLCAweDBERkEsIDB4OTU4RiwgMHg5NThGLCAweDE4REYsDQorICAgIDB4OTU5MSwgMHg5NTkyLCAweDFEREQsIDB4OTU5MywgMHg5NTkzLCAweDBEQUIsIDB4OTU5NCwgMHg5NTk0LCAweDEzMTIsDQorICAgIDB4OTU5OCwgMHg5NTk4LCAweDBEQ0YsIDB4OTVBMywgMHg5NUEzLCAweDBEOTMsIDB4OTVBNCwgMHg5NUE0LCAweDFERjMsDQorICAgIDB4OTVBNSwgMHg5NUE1LCAweDEzOTAsIDB4OTVBOCwgMHg5NUE4LCAweDBGQTgsIDB4OTVBRCwgMHg5NUFELCAweDExNjUsDQorICAgIDB4OTVCMSwgMHg5NUIxLCAweDE3NjQsIDB4OTVCQiwgMHg5NUJCLCAweDE3NkMsIDB4OTVCQywgMHg5NUJDLCAweDE2QkMsDQorICAgIDB4OTVDNywgMHg5NUM3LCAweDE2QzQsIDB4OTVDQSwgMHg5NUNBLCAweDFFREYsIDB4OTVENCwgMHg5NUQ0LCAweDFERjQsDQorICAgIDB4OTVENSwgMHg5NUQ1LCAweDBGOEYsIDB4OTVENiwgMHg5NUQ2LCAweDFEMzEsIDB4OTVEQywgMHg5NURDLCAweDBFRjksDQorICAgIDB4OTVFMSwgMHg5NUUxLCAweDFCRkMsIDB4OTVFMiwgMHg5NUUyLCAweDEzQTUsIDB4OTYxQywgMHg5NjFDLCAweDE0MUIsDQorICAgIDB4OTYyMSwgMHg5NjIxLCAweDFCRkQsIDB4OTYyQSwgMHg5NjJBLCAweDFENEEsIDB4OTYyRSwgMHg5NjJFLCAweDE3RUIsDQorICAgIDB4OTYzMiwgMHg5NjMyLCAweDEzNjcsIDB4OTYzQiwgMHg5NjNCLCAweDFBQTksIDB4OTYzRiwgMHg5NjNGLCAweDE2OUMsDQorICAgIDB4OTY0MCwgMHg5NjQwLCAweDFDREYsIDB4OTY0MiwgMHg5NjQyLCAweDFEQjMsIDB4OTY0NCwgMHg5NjQ0LCAweDE0MUMsDQorICAgIDB4OTY0QiwgMHg5NjRCLCAweDExRTAsIDB4OTY0QywgMHg5NjRDLCAweDEyNzQsIDB4OTY0RCwgMHg5NjRELCAweDBERTYsDQorICAgIDB4OTY1MCwgMHg5NjUwLCAweDFEREYsIDB4OTY1QiwgMHg5NjVCLCAweDFENzcsIDB4OTY1QywgMHg5NjVDLCAweDFERjUsDQorICAgIDB4OTY1RCwgMHg5NjVELCAweDE1NUUsIDB4OTY1RSwgMHg5NjVFLCAweDE2M0IsIDB4OTY1RiwgMHg5NjVGLCAweDFCRUEsDQorICAgIDB4OTY2MiwgMHg5NjYyLCAweDE4ODYsIDB4OTY2MywgMHg5NjYzLCAweDFCNjQsIDB4OTY2NCwgMHg5NjY0LCAweDFBNzksDQorICAgIDB4OTY2QSwgMHg5NjZBLCAweDEzN0IsIDB4OTY3MCwgMHg5NjcwLCAweDE4RjAsIDB4OTY3MywgMHg5NjczLCAweDFCNjUsDQorICAgIDB4OTY3NSwgMHg5Njc1LCAweDEyMDQsIDB4OTY3NiwgMHg5Njc2LCAweDEwRDMsIDB4OTY3NywgMHg5Njc3LCAweDFERUQsDQorICAgIDB4OTY3OCwgMHg5Njc4LCAweDExRjEsIDB4OTY3RCwgMHg5NjdELCAweDE3MEMsIDB4OTY4NSwgMHg5Njg1LCAweDE4NTIsDQorICAgIDB4OTY4NiwgMHg5Njg2LCAweDExRkIsIDB4OTY4QSwgMHg5NjhBLCAweDEwQTgsIDB4OTY4QiwgMHg5NjhCLCAweDE1RjMsDQorICAgIDB4OTY4RCwgMHg5NjhELCAweDFFRjYsIDB4OTY4RSwgMHg5NjhFLCAweDBFOEYsIDB4OTY5NCwgMHg5Njk0LCAweDBFMzQsDQorICAgIDB4OTY5NSwgMHg5Njk1LCAweDE4NjcsIDB4OTY5OCwgMHg5Njk4LCAweDE2RDksIDB4OTY5OSwgMHg5Njk5LCAweDBGQjYsDQorICAgIDB4OTY5QiwgMHg5NjlCLCAweDFBN0EsIDB4OTY5QywgMHg5NjlDLCAweDE5QTksIDB4OTZBMywgMHg5NkEzLCAweDEyMjQsDQorICAgIDB4OTZBNywgMHg5NkE4LCAweDE1RjQsIDB4OTZBQSwgMHg5NkFBLCAweDFFMzAsIDB4OTZCMSwgMHg5NkIxLCAweDE4RUIsDQorICAgIDB4OTZCNywgMHg5NkI3LCAweDExOUUsIDB4OTZCQiwgMHg5NkJCLCAweDFCRUIsIDB4OTZDMCwgMHg5NkMwLCAweDE5NzgsDQorICAgIDB4OTZDMSwgMHg5NkMxLCAweDE2QjUsIDB4OTZDNCwgMHg5NkM0LCAweDE4NkUsIDB4OTZDNSwgMHg5NkM1LCAweDE2OUQsDQorICAgIDB4OTZDNiwgMHg5NkM2LCAweDFCN0QsIDB4OTZDNywgMHg5NkM3LCAweDBFQjMsIDB4OTZDOSwgMHg5NkM5LCAweDFDQkQsDQorICAgIDB4OTZDQiwgMHg5NkNCLCAweDFCMDcsIDB4OTZDQywgMHg5NkNDLCAweDE5NkMsIDB4OTZDRCwgMHg5NkNELCAweDE3RDEsDQorICAgIDB4OTZDRSwgMHg5NkNFLCAweDE5RDksIDB4OTZENSwgMHg5NkQ1LCAweDFBQUEsIDB4OTZENiwgMHg5NkQ2LCAweDE1RjYsDQorICAgIDB4OTZEOSwgMHg5NkQ5LCAweDE2OEQsIDB4OTZEQiwgMHg5NkRCLCAweDFDNzUsIDB4OTZEQywgMHg5NkRDLCAweDE5ODUsDQorICAgIDB4OTZFMiwgMHg5NkUyLCAweDEyMUMsIDB4OTZFMywgMHg5NkUzLCAweDEwMkUsIDB4OTZFOCwgMHg5NkU5LCAweDE4NTMsDQorICAgIDB4OTZFQSwgMHg5NkVBLCAweDE1NTUsIDB4OTZFRiwgMHg5NkVGLCAweDEyRUYsIDB4OTZGMCwgMHg5NkYwLCAweDE0MzIsDQorICAgIDB4OTZGMiwgMHg5NkYyLCAweDE4NjgsIDB4OTZGNiwgMHg5NkY2LCAweDExOTYsIDB4OTZGNywgMHg5NkY3LCAweDExQzYsDQorICAgIDB4OTZGOSwgMHg5NkY5LCAweDEzMjcsIDB4OTZGQiwgMHg5NkZCLCAweDFBMTgsIDB4OTcwMCwgMHg5NzAwLCAweDE1RjcsDQorICAgIDB4OTcwNiwgMHg5NzA2LCAweDFBNjIsIDB4OTcwNywgMHg5NzA3LCAweDFCNjYsIDB4OTcxMSwgMHg5NzExLCAweDFBMkEsDQorICAgIDB4OTcxMywgMHg5NzEzLCAweDE3OUYsIDB4OTcxNiwgMHg5NzE2LCAweDEyMkIsIDB4OTcxOSwgMHg5NzE5LCAweDE3OEMsDQorICAgIDB4OTcxQywgMHg5NzFDLCAweDE0RjEsIDB4OTcxRSwgMHg5NzFFLCAweDFEQ0MsIDB4OTcyNywgMHg5NzI3LCAweDEyRTAsDQorICAgIDB4OTczMCwgMHg5NzMwLCAweDE0QzIsIDB4OTczMiwgMHg5NzMyLCAweDExQUMsIDB4OTczOSwgMHg5NzM5LCAweDEzQTYsDQorICAgIDB4OTczRCwgMHg5NzNELCAweDFBN0IsIDB4OTc0MiwgMHg5NzQyLCAweDExNzAsIDB4OTc0NCwgMHg5NzQ0LCAweDE2REEsDQorICAgIDB4OTc0OCwgMHg5NzQ4LCAweDExOTcsIDB4OTc1MSwgMHg5NzUxLCAweDFDMjMsIDB4OTc1NiwgMHg5NzU2LCAweDFBNjMsDQorICAgIDB4OTc1QywgMHg5NzVDLCAweDFBNjQsIDB4OTc1RSwgMHg5NzVFLCAweDE0NjQsIDB4OTc2MSwgMHg5NzYxLCAweDEzMDQsDQorICAgIDB4OTc2MiwgMHg5NzYyLCAweDEyODgsIDB4OTc2OSwgMHg5NzY5LCAweDFFMzUsIDB4OTc2RCwgMHg5NzZELCAweDE5M0EsDQorICAgIDB4OTc3NCwgMHg5Nzc0LCAweDFFQzQsIDB4OTc3NywgMHg5Nzc3LCAweDE5M0IsIDB4OTc3QSwgMHg5NzdBLCAweDEyNTcsDQorICAgIDB4OTc4QiwgMHg5NzhCLCAweDFFNzcsIDB4OTc4RCwgMHg5NzhELCAweDE2QjYsIDB4OTc4RiwgMHg5NzhGLCAweDBFRDksDQorICAgIDB4OTdBMCwgMHg5N0EwLCAweDBGNkUsIDB4OTdBOCwgMHg5N0E4LCAweDBEQjUsIDB4OTdBQiwgMHg5N0FCLCAweDBGNkYsDQorICAgIDB4OTdBRCwgMHg5N0FELCAweDFENjYsIDB4OTdDNiwgMHg5N0M2LCAweDFCRkUsIDB4OTdDQiwgMHg5N0NCLCAweDE4QTMsDQorICAgIDB4OTdEMywgMHg5N0QzLCAweDFERTAsIDB4OTdEQywgMHg5N0RDLCAweDEwRDQsIDB4OTdGMywgMHg5N0YzLCAweDE4RjEsDQorICAgIDB4OTdGNiwgMHg5N0Y2LCAweDE1OUYsIDB4OTdGQiwgMHg5N0ZCLCAweDE4NjksIDB4OTdGRiwgMHg5N0ZGLCAweDFFMjMsDQorICAgIDB4OTgwMCwgMHg5ODAwLCAweDFFOUYsIDB4OTgwMSwgMHg5ODAxLCAweDFFNEQsIDB4OTgwMiwgMHg5ODAyLCAweDFBNjUsDQorICAgIDB4OTgwMywgMHg5ODAzLCAweDBFNzUsIDB4OTgwNSwgMHg5ODA1LCAweDFFMDQsIDB4OTgwNiwgMHg5ODA2LCAweDE2MjEsDQorICAgIDB4OTgwOCwgMHg5ODA4LCAweDE1RjgsIDB4OTgwQSwgMHg5ODBBLCAweDE4NUQsIDB4OTgwQywgMHg5ODBDLCAweDE1QjgsDQorICAgIDB4OTgxMCwgMHg5ODEwLCAweDE3QTAsIDB4OTgxMSwgMHg5ODExLCAweDE3RUMsIDB4OTgxMiwgMHg5ODEyLCAweDEzNDAsDQorICAgIDB4OTgxMywgMHg5ODEzLCAweDEwRTgsIDB4OTgxNywgMHg5ODE3LCAweDFENDEsIDB4OTgxOCwgMHg5ODE4LCAweDExOTgsDQorICAgIDB4OTgyRCwgMHg5ODJELCAweDExMDUsIDB4OTgzMCwgMHg5ODMwLCAweDFFNUEsIDB4OTgzOCwgMHg5ODM4LCAweDBFNzYsDQorICAgIDB4OTgzOSwgMHg5ODM5LCAweDFEMjgsIDB4OTgzQiwgMHg5ODNCLCAweDE0NzQsIDB4OTg0NiwgMHg5ODQ2LCAweDBFRTYsDQorICAgIDB4OTg0QywgMHg5ODRDLCAweDFBN0MsIDB4OTg0RCwgMHg5ODRELCAweDE2RTEsIDB4OTg0RSwgMHg5ODRFLCAweDE2QUMsDQorICAgIDB4OTg1NCwgMHg5ODU0LCAweDE2QjcsIDB4OTg1OCwgMHg5ODU4LCAweDE4ODcsIDB4OTg1QSwgMHg5ODVBLCAweDFBMTksDQorICAgIDB4OTg1RSwgMHg5ODVFLCAweDExRUUsIDB4OTg2NSwgMHg5ODY1LCAweDFFQTAsIDB4OTg2NywgMHg5ODY3LCAweDBFQjQsDQorICAgIDB4OTg2QiwgMHg5ODZCLCAweDFBMUEsIDB4OTg2RiwgMHg5ODZGLCAweDFFNDksIDB4OThBOCwgMHg5OEE4LCAweDFEQUIsDQorICAgIDB4OThBRiwgMHg5OEFGLCAweDE0RDIsIDB4OThCMSwgMHg5OEIxLCAweDFEMTQsIDB4OThDNCwgMHg5OEM0LCAweDFEQTQsDQorICAgIDB4OThDNywgMHg5OEM3LCAweDFEQTMsIDB4OThEQiwgMHg5OERCLCAweDE0NjUsIDB4OThEQywgMHg5OERDLCAweDEzOEMsDQorICAgIDB4OThERiwgMHg5OERGLCAweDE2NjUsIDB4OThFMSwgMHg5OEUxLCAweDE1QUYsIDB4OThFMiwgMHg5OEUyLCAweDEwMTgsDQorICAgIDB4OThFRCwgMHg5OEVELCAweDFDQzIsIDB4OThFRSwgMHg5OEVFLCAweDE4RjIsIDB4OThFRiwgMHg5OEVGLCAweDEzNDEsDQorICAgIDB4OThGNCwgMHg5OEY0LCAweDE5MjMsIDB4OThGQywgMHg5OEZDLCAweDE0QjIsIDB4OThGRCwgMHg5OEZELCAweDFEOTEsDQorICAgIDB4OThGRSwgMHg5OEZFLCAweDE2NjYsIDB4OTkwMywgMHg5OTAzLCAweDBGMzIsIDB4OTkwOSwgMHg5OTA5LCAweDFFMjQsDQorICAgIDB4OTkwQSwgMHg5OTBBLCAweDE3MEQsIDB4OTkwQywgMHg5OTBDLCAweDE5MjQsIDB4OTkxMCwgMHg5OTEwLCAweDFCQTMsDQorICAgIDB4OTkxMywgMHg5OTEzLCAweDE2OUUsIDB4OTkxOCwgMHg5OTE4LCAweDE3M0EsIDB4OTkxRSwgMHg5OTFFLCAweDFBMUIsDQorICAgIDB4OTkyMCwgMHg5OTIwLCAweDEzQzAsIDB4OTkyOCwgMHg5OTI4LCAweDBFRkEsIDB4OTk0NSwgMHg5OTQ1LCAweDEyNEYsDQorICAgIDB4OTk0OSwgMHg5OTQ5LCAweDBGQzUsIDB4OTk0QiwgMHg5OTRCLCAweDBGOTUsIDB4OTk0QywgMHg5OTRDLCAweDFCQTQsDQorICAgIDB4OTk0RCwgMHg5OTRELCAweDE1NDgsIDB4OTk1MSwgMHg5OTUxLCAweDEwMTksIDB4OTk1MiwgMHg5OTUyLCAweDE4MTcsDQorICAgIDB4OTk1NCwgMHg5OTU0LCAweDE3RDIsIDB4OTk1NywgMHg5OTU3LCAweDFFMjUsIDB4OTk5NiwgMHg5OTk2LCAweDE1RjksDQorICAgIDB4OTk5OSwgMHg5OTk5LCAweDFFMjYsIDB4OTk5RCwgMHg5OTlELCAweDFEQkQsIDB4OTlBNSwgMHg5OUE1LCAweDEzRTEsDQorICAgIDB4OTlBOCwgMHg5OUE4LCAweDFFNkUsIDB4OTlBQywgMHg5OUFDLCAweDEyMzUsIDB4OTlBRCwgMHg5OUFELCAweDE3MTUsDQorICAgIDB4OTlBRSwgMHg5OUFFLCAweDFEQUMsIDB4OTlCMSwgMHg5OUIxLCAweDFDRTAsIDB4OTlCMywgMHg5OUIzLCAweDFDQkUsDQorICAgIDB4OTlCNCwgMHg5OUI0LCAweDE2MjIsIDB4OTlCOSwgMHg5OUI5LCAweDE5NDQsIDB4OTlDMSwgMHg5OUMxLCAweDEzMjgsDQorICAgIDB4OTlEMCwgMHg5OUQwLCAweDFBRjMsIDB4OTlEMSwgMHg5OUQxLCAweDEwNEUsIDB4OTlEMiwgMHg5OUQyLCAweDBGNjYsDQorICAgIDB4OTlENSwgMHg5OUQ1LCAweDBEODgsIDB4OTlEOSwgMHg5OUQ5LCAweDE0MUQsIDB4OTlERCwgMHg5OURELCAweDFDRTEsDQorICAgIDB4OTlERiwgMHg5OURGLCAweDE0QjMsIDB4OTlFRCwgMHg5OUVELCAweDFFMTUsIDB4OTlGMSwgMHg5OUYxLCAweDExMjQsDQorICAgIDB4OTlGRiwgMHg5OUZGLCAweDFCMDgsIDB4OUEwMSwgMHg5QTAxLCAweDE0NzgsIDB4OUEwOCwgMHg5QTA4LCAweDEzQzEsDQorICAgIDB4OUEwRSwgMHg5QTBGLCAweDEwMUEsIDB4OUExOSwgMHg5QTE5LCAweDFENjcsIDB4OUEyQiwgMHg5QTJCLCAweDBFMUMsDQorICAgIDB4OUEzMCwgMHg5QTMwLCAweDExMTUsIDB4OUEzNiwgMHg5QTM2LCAweDFDNzYsIDB4OUEzNywgMHg5QTM3LCAweDE1QTAsDQorICAgIDB4OUE0MCwgMHg5QTQwLCAweDEyNzUsIDB4OUE0MywgMHg5QTQzLCAweDFEQTUsIDB4OUE0NSwgMHg5QTQ1LCAweDBGNjcsDQorICAgIDB4OUE0RCwgMHg5QTRELCAweDFGMUQsIDB4OUE1NSwgMHg5QTU1LCAweDBGMzMsIDB4OUE1NywgMHg5QTU3LCAweDFFMzEsDQorICAgIDB4OUE1QSwgMHg5QTVBLCAweDBFNzcsIDB4OUE1QiwgMHg5QTVCLCAweDE3NDMsIDB4OUE1RiwgMHg5QTVGLCAweDFDQTAsDQorICAgIDB4OUE2MiwgMHg5QTYyLCAweDExNjYsIDB4OUE2NSwgMHg5QTY1LCAweDEwMUMsIDB4OUE2OSwgMHg5QTY5LCAweDFFRDksDQorICAgIDB4OUE2QSwgMHg5QTZBLCAweDExNjcsIDB4OUFBOCwgMHg5QUE4LCAweDBFQzksIDB4OUFCOCwgMHg5QUI4LCAweDFFMTYsDQorICAgIDB4OUFEMywgMHg5QUQzLCAweDE1RkEsIDB4OUFENCwgMHg5QUQ0LCAweDFDMkQsIDB4OUFEOCwgMHg5QUQ4LCAweDBFQjUsDQorICAgIDB4OUFFNSwgMHg5QUU1LCAweDE3NkQsIDB4OUFFRSwgMHg5QUVFLCAweDEzNEIsIDB4OUIxQSwgMHg5QjFBLCAweDE1RkIsDQorICAgIDB4OUIyNywgMHg5QjI3LCAweDExRDIsIDB4OUIyQSwgMHg5QjJBLCAweDFEMkUsIDB4OUIzMSwgMHg5QjMxLCAweDE4NkIsDQorICAgIDB4OUIzQywgMHg5QjNDLCAweDBGOTksIDB4OUI0MSwgMHg5QjQxLCAweDBGMTcsIDB4OUI0MiwgMHg5QjQyLCAweDFFQTksDQorICAgIDB4OUI0MywgMHg5QjQzLCAweDEzNEMsIDB4OUI0NCwgMHg5QjQ0LCAweDEzODMsIDB4OUI0NSwgMHg5QjQ1LCAweDEyNzEsDQorICAgIDB4OUI0RiwgMHg5QjRGLCAweDE4QTQsIDB4OUI1NCwgMHg5QjU0LCAweDEyMzYsIDB4OUI1QSwgMHg5QjVBLCAweDE3MTYsDQorICAgIDB4OUI2RiwgMHg5QjZGLCAweDExQUQsIDB4OUI4RSwgMHg5QjhFLCAweDFBMkIsIDB4OUI5MSwgMHg5QjkxLCAweDFEOTIsDQorICAgIDB4OUI5RiwgMHg5QjlGLCAweDE2QjgsIDB4OUJBQiwgMHg5QkFCLCAweDBGMzQsIDB4OUJBRSwgMHg5QkFFLCAweDE1NDksDQorICAgIDB4OUJDOSwgMHg5QkM5LCAweDEyMUQsIDB4OUJENiwgMHg5QkQ2LCAweDFDMjQsIDB4OUJFNCwgMHg5QkU0LCAweDBFQzcsDQorICAgIDB4OUJFOCwgMHg5QkU4LCAweDBFNzgsIDB4OUMwRCwgMHg5QzBELCAweDFDNzcsIDB4OUMxMCwgMHg5QzEwLCAweDE2QUQsDQorICAgIDB4OUMxMiwgMHg5QzEyLCAweDEzRTIsIDB4OUMxNSwgMHg5QzE1LCAweDFEQ0QsIDB4OUMyNSwgMHg5QzI1LCAweDFFREEsDQorICAgIDB4OUMzMiwgMHg5QzMyLCAweDE3QkMsIDB4OUMzQiwgMHg5QzNCLCAweDEyNTAsIDB4OUM0NywgMHg5QzQ3LCAweDBERTcsDQorICAgIDB4OUM0OSwgMHg5QzQ5LCAweDEzQUYsIDB4OUM1NywgMHg5QzU3LCAweDEyMjUsIDB4OUNFNSwgMHg5Q0U1LCAweDFBQUIsDQorICAgIDB4OUNFNywgMHg5Q0U3LCAweDE0MUUsIDB4OUNFOSwgMHg5Q0U5LCAweDBGNjgsIDB4OUNGMywgMHg5Q0YzLCAweDEzRjQsDQorICAgIDB4OUNGNCwgMHg5Q0Y0LCAweDEyOUEsIDB4OUNGNiwgMHg5Q0Y2LCAweDE3NjAsIDB4OUQwOSwgMHg5RDA5LCAweDE2OUYsDQorICAgIDB4OUQxQiwgMHg5RDFCLCAweDE4ODgsIDB4OUQyNiwgMHg5RDI2LCAweDE2Q0YsIDB4OUQyOCwgMHg5RDI4LCAweDE2QzgsDQorICAgIDB4OUQzQiwgMHg5RDNCLCAweDFFQjYsIDB4OUQ1MSwgMHg5RDUxLCAweDBFM0YsIDB4OUQ1RCwgMHg5RDVELCAweDE2QTAsDQorICAgIDB4OUQ2MCwgMHg5RDYwLCAweDBFQkQsIDB4OUQ2MSwgMHg5RDYxLCAweDEyRTEsIDB4OUQ2QywgMHg5RDZDLCAweDE0M0MsDQorICAgIDB4OUQ3MiwgMHg5RDcyLCAweDE5NzksIDB4OURBOSwgMHg5REE5LCAweDEyQkEsIDB4OURBRiwgMHg5REFGLCAweDE2RTQsDQorICAgIDB4OURCNCwgMHg5REI0LCAweDFERDIsIDB4OURDNCwgMHg5REM0LCAweDBFOTAsIDB4OURENywgMHg5REQ3LCAweDBGNjksDQorICAgIDB4OURGMiwgMHg5REYyLCAweDFDQTEsIDB4OURGOCwgMHg5REY4LCAweDFGNEMsIDB4OURGOSwgMHg5REY5LCAweDE4RjksDQorICAgIDB4OURGQSwgMHg5REZBLCAweDExQUUsIDB4OUUxQSwgMHg5RTFBLCAweDE2RTUsIDB4OUUxRSwgMHg5RTFFLCAweDExMkMsDQorICAgIDB4OUU3NSwgMHg5RTc1LCAweDExQUYsIDB4OUU3OSwgMHg5RTc5LCAweDFERUUsIDB4OUU3RCwgMHg5RTdELCAweDE3NkUsDQorICAgIDB4OUU3RiwgMHg5RTdGLCAweDExQjUsIDB4OUU5MiwgMHg5RTkyLCAweDEwMUQsIDB4OUU5MywgMHg5RTkzLCAweDExQjYsDQorICAgIDB4OUU5NywgMHg5RTk3LCAweDExNjgsIDB4OUU5RCwgMHg5RTlELCAweDE0QjQsIDB4OUU5RiwgMHg5RTlGLCAweDEyMjYsDQorICAgIDB4OUVBNSwgMHg5RUE1LCAweDEyNzYsIDB4OUVCNCwgMHg5RUI0LCAweDBGNzAsIDB4OUVCNSwgMHg5RUI1LCAweDEyODksDQorICAgIDB4OUVCQiwgMHg5RUJCLCAweDEyMzcsIDB4OUVCRSwgMHg5RUJFLCAweDFGNDQsIDB4OUVDMywgMHg5RUMzLCAweDFFRjcsDQorICAgIDB4OUVDRCwgMHg5RUNELCAweDE1MTksIDB4OUVDRSwgMHg5RUNFLCAweDExNjksIDB4OUVEMSwgMHg5RUQxLCAweDFGNTIsDQorICAgIDB4OUVENCwgMHg5RUQ0LCAweDBFMjcsIDB4OUVEOCwgMHg5RUQ4LCAweDEyRTMsIDB4OUVEQiwgMHg5RURCLCAweDEwQTksDQorICAgIDB4OUVEQywgMHg5RURDLCAweDFDODksIDB4OUVERSwgMHg5RURFLCAweDFBMkMsIDB4OUVFOCwgMHg5RUU4LCAweDEwOTksDQorICAgIDB4OUVGNCwgMHg5RUY0LCAweDEzMDUsIDB4OUYwNywgMHg5RjA3LCAweDE3QkQsIDB4OUYwOCwgMHg5RjA4LCAweDEzQjAsDQorICAgIDB4OUYwRSwgMHg5RjBFLCAweDFBNjYsIDB4OUYxMywgMHg5RjEzLCAweDBFQjYsIDB4OUYyMCwgMHg5RjIwLCAweDE1MUEsDQorICAgIDB4OUYzQiwgMHg5RjNCLCAweDE0NjYsIDB4OUY0QSwgMHg5RjRBLCAweDFBN0QsIDB4OUY0QiwgMHg5RjRCLCAweDE5QjksDQorICAgIDB4OUY0RSwgMHg5RjRFLCAweDE5QkEsIDB4OUY1MiwgMHg5RjUyLCAweDFDQkYsIDB4OUY1RiwgMHg5RjVGLCAweDE5REEsDQorICAgIDB4OUY2MSwgMHg5RjYxLCAweDExOTksIDB4OUY2NywgMHg5RjY3LCAweDE1NTYsIDB4OUY2QSwgMHg5RjZBLCAweDFCOTUsDQorICAgIDB4OUY2QywgMHg5RjZDLCAweDE3MTcsIDB4OUY3NywgMHg5Rjc3LCAweDE2QUUsIDB4OUY4RCwgMHg5RjhELCAweDExRDMsDQorICAgIDB4OUY5MCwgMHg5RjkwLCAweDEzNjgsIDB4OUY5NSwgMHg5Rjk1LCAweDBEQzksIDB4OUY5QywgMHg5RjlDLCAweDBGNkEsDQorICAgIDB4QUMwMCwgMHhBQzAxLCAweDA0M0UsIDB4QUMwMiwgMHhBQzAzLCAweDI0NzUsIDB4QUMwNCwgMHhBQzA0LCAweDA0NDAsDQorICAgIDB4QUMwNSwgMHhBQzA2LCAweDI0NzcsIDB4QUMwNywgMHhBQzBBLCAweDA0NDEsIDB4QUMwQiwgMHhBQzBGLCAweDI0NzksDQorICAgIDB4QUMxMCwgMHhBQzE3LCAweDA0NDUsIDB4QUMxOCwgMHhBQzE4LCAweDI0N0UsIDB4QUMxOSwgMHhBQzFELCAweDA0NEQsDQorICAgIDB4QUMxRSwgMHhBQzFGLCAweDI0N0YsIDB4QUMyMCwgMHhBQzIwLCAweDA0NTIsIDB4QUMyMSwgMHhBQzIzLCAweDI0ODEsDQorICAgIDB4QUMyNCwgMHhBQzI0LCAweDA0NTMsIDB4QUMyNSwgMHhBQzJCLCAweDI0ODQsIDB4QUMyQywgMHhBQzJELCAweDA0NTQsDQorICAgIDB4QUMyRSwgMHhBQzJFLCAweDI0OEIsIDB4QUMyRiwgMHhBQzMxLCAweDA0NTYsIDB4QUMzMiwgMHhBQzM3LCAweDI0OEMsDQorICAgIDB4QUMzOCwgMHhBQzM5LCAweDA0NTksIDB4QUMzQSwgMHhBQzNCLCAweDI0OTIsIDB4QUMzQywgMHhBQzNDLCAweDA0NUIsDQorICAgIDB4QUMzRCwgMHhBQzNGLCAweDI0OTQsIDB4QUM0MCwgMHhBQzQwLCAweDA0NUMsIDB4QUM0MSwgMHhBQzRBLCAweDI0OTcsDQorICAgIDB4QUM0QiwgMHhBQzRCLCAweDA0NUQsIDB4QUM0QywgMHhBQzRDLCAweDI0QTEsIDB4QUM0RCwgMHhBQzRELCAweDA0NUUsDQorICAgIDB4QUM0RSwgMHhBQzUzLCAweDI0QTIsIDB4QUM1NCwgMHhBQzU0LCAweDA0NUYsIDB4QUM1NSwgMHhBQzU3LCAweDI0QTgsDQorICAgIDB4QUM1OCwgMHhBQzU4LCAweDA0NjAsIDB4QUM1OSwgMHhBQzVCLCAweDI0QUIsIDB4QUM1QywgMHhBQzVDLCAweDA0NjEsDQorICAgIDB4QUM1RCwgMHhBQzZGLCAweDI0QUUsIDB4QUM3MCwgMHhBQzcxLCAweDA0NjIsIDB4QUM3MiwgMHhBQzczLCAweDI0QzEsDQorICAgIDB4QUM3NCwgMHhBQzc0LCAweDA0NjQsIDB4QUM3NSwgMHhBQzc2LCAweDI0QzMsIDB4QUM3NywgMHhBQzc4LCAweDA0NjUsDQorICAgIDB4QUM3OSwgMHhBQzc5LCAweDI0QzUsIDB4QUM3QSwgMHhBQzdBLCAweDA0NjcsIDB4QUM3QiwgMHhBQzdGLCAweDI0QzYsDQorICAgIDB4QUM4MCwgMHhBQzgxLCAweDA0NjgsIDB4QUM4MiwgMHhBQzgyLCAweDI0Q0IsIDB4QUM4MywgMHhBQzg2LCAweDA0NkEsDQorICAgIDB4QUM4NywgMHhBQzg4LCAweDI0Q0MsIDB4QUM4OSwgMHhBQzhDLCAweDA0NkUsIDB4QUM4RCwgMHhBQzhGLCAweDI0Q0UsDQorICAgIDB4QUM5MCwgMHhBQzkwLCAweDA0NzIsIDB4QUM5MSwgMHhBQzkzLCAweDI0RDEsIDB4QUM5NCwgMHhBQzk0LCAweDA0NzMsDQorICAgIDB4QUM5NSwgMHhBQzlCLCAweDI0RDQsIDB4QUM5QywgMHhBQzlELCAweDA0NzQsIDB4QUM5RSwgMHhBQzlFLCAweDI0REIsDQorICAgIDB4QUM5RiwgMHhBQ0ExLCAweDA0NzYsIDB4QUNBMiwgMHhBQ0E3LCAweDI0REMsIDB4QUNBOCwgMHhBQ0FBLCAweDA0NzksDQorICAgIDB4QUNBQiwgMHhBQ0FCLCAweDI0RTIsIDB4QUNBQywgMHhBQ0FDLCAweDA0N0MsIDB4QUNBRCwgMHhBQ0FFLCAweDI0RTMsDQorICAgIDB4QUNBRiwgMHhBQ0IwLCAweDA0N0QsIDB4QUNCMSwgMHhBQ0I3LCAweDI0RTUsIDB4QUNCOCwgMHhBQ0I5LCAweDA0N0YsDQorICAgIDB4QUNCQSwgMHhBQ0JBLCAweDI0RUMsIDB4QUNCQiwgMHhBQ0JELCAweDA0ODEsIDB4QUNCRSwgMHhBQ0MwLCAweDI0RUQsDQorICAgIDB4QUNDMSwgMHhBQ0MxLCAweDA0ODQsIDB4QUNDMiwgMHhBQ0MzLCAweDI0RjAsIDB4QUNDNCwgMHhBQ0M0LCAweDA0ODUsDQorICAgIDB4QUNDNSwgMHhBQ0M3LCAweDI0RjIsIDB4QUNDOCwgMHhBQ0M4LCAweDA0ODYsIDB4QUNDOSwgMHhBQ0NCLCAweDI0RjUsDQorICAgIDB4QUNDQywgMHhBQ0NDLCAweDA0ODcsIDB4QUNDRCwgMHhBQ0Q0LCAweDI0RjgsIDB4QUNENSwgMHhBQ0Q1LCAweDA0ODgsDQorICAgIDB4QUNENiwgMHhBQ0Q2LCAweDI1MDAsIDB4QUNENywgMHhBQ0Q3LCAweDA0ODksIDB4QUNEOCwgMHhBQ0RGLCAweDI1MDEsDQorICAgIDB4QUNFMCwgMHhBQ0UxLCAweDA0OEEsIDB4QUNFMiwgMHhBQ0UzLCAweDI1MDksIDB4QUNFNCwgMHhBQ0U0LCAweDA0OEMsDQorICAgIDB4QUNFNSwgMHhBQ0U2LCAweDI1MEIsIDB4QUNFNywgMHhBQ0U4LCAweDA0OEQsIDB4QUNFOSwgMHhBQ0U5LCAweDI1MEQsDQorICAgIDB4QUNFQSwgMHhBQ0VBLCAweDA0OEYsIDB4QUNFQiwgMHhBQ0VCLCAweDI1MEUsIDB4QUNFQywgMHhBQ0VDLCAweDA0OTAsDQorICAgIDB4QUNFRCwgMHhBQ0VFLCAweDI1MEYsIDB4QUNFRiwgMHhBQ0YxLCAweDA0OTEsIDB4QUNGMiwgMHhBQ0YyLCAweDI1MTEsDQorICAgIDB4QUNGMywgMHhBQ0YzLCAweDA0OTQsIDB4QUNGNCwgMHhBQ0Y0LCAweDI1MTIsIDB4QUNGNSwgMHhBQ0Y2LCAweDA0OTUsDQorICAgIDB4QUNGNywgMHhBQ0ZCLCAweDI1MTMsIDB4QUNGQywgMHhBQ0ZELCAweDA0OTcsIDB4QUNGRSwgMHhBQ0ZGLCAweDI1MTgsDQorICAgIDB4QUQwMCwgMHhBRDAwLCAweDA0OTksIDB4QUQwMSwgMHhBRDAzLCAweDI1MUEsIDB4QUQwNCwgMHhBRDA0LCAweDA0OUEsDQorICAgIDB4QUQwNSwgMHhBRDA1LCAweDI1MUQsIDB4QUQwNiwgMHhBRDA2LCAweDA0OUIsIDB4QUQwNywgMHhBRDBCLCAweDI1MUUsDQorICAgIDB4QUQwQywgMHhBRDBELCAweDA0OUMsIDB4QUQwRSwgMHhBRDBFLCAweDI1MjMsIDB4QUQwRiwgMHhBRDBGLCAweDA0OUUsDQorICAgIDB4QUQxMCwgMHhBRDEwLCAweDI1MjQsIDB4QUQxMSwgMHhBRDExLCAweDA0OUYsIDB4QUQxMiwgMHhBRDE3LCAweDI1MjUsDQorICAgIDB4QUQxOCwgMHhBRDE4LCAweDA0QTAsIDB4QUQxOSwgMHhBRDFCLCAweDI1MkIsIDB4QUQxQywgMHhBRDFDLCAweDA0QTEsDQorICAgIDB4QUQxRCwgMHhBRDFGLCAweDI1MkUsIDB4QUQyMCwgMHhBRDIwLCAweDA0QTIsIDB4QUQyMSwgMHhBRDI4LCAweDI1MzEsDQorICAgIDB4QUQyOSwgMHhBRDI5LCAweDA0QTMsIDB4QUQyQSwgMHhBRDJCLCAweDI1MzksIDB4QUQyQywgMHhBRDJELCAweDA0QTQsDQorICAgIDB4QUQyRSwgMHhBRDMzLCAweDI1M0IsIDB4QUQzNCwgMHhBRDM1LCAweDA0QTYsIDB4QUQzNiwgMHhBRDM3LCAweDI1NDEsDQorICAgIDB4QUQzOCwgMHhBRDM4LCAweDA0QTgsIDB4QUQzOSwgMHhBRDNCLCAweDI1NDMsIDB4QUQzQywgMHhBRDNDLCAweDA0QTksDQorICAgIDB4QUQzRCwgMHhBRDQzLCAweDI1NDYsIDB4QUQ0NCwgMHhBRDQ1LCAweDA0QUEsIDB4QUQ0NiwgMHhBRDQ2LCAweDI1NEQsDQorICAgIDB4QUQ0NywgMHhBRDQ3LCAweDA0QUMsIDB4QUQ0OCwgMHhBRDQ4LCAweDI1NEUsIDB4QUQ0OSwgMHhBRDQ5LCAweDA0QUQsDQorICAgIDB4QUQ0QSwgMHhBRDRGLCAweDI1NEYsIDB4QUQ1MCwgMHhBRDUwLCAweDA0QUUsIDB4QUQ1MSwgMHhBRDUzLCAweDI1NTUsDQorICAgIDB4QUQ1NCwgMHhBRDU0LCAweDA0QUYsIDB4QUQ1NSwgMHhBRDU3LCAweDI1NTgsIDB4QUQ1OCwgMHhBRDU4LCAweDA0QjAsDQorICAgIDB4QUQ1OSwgMHhBRDYwLCAweDI1NUIsIDB4QUQ2MSwgMHhBRDYxLCAweDA0QjEsIDB4QUQ2MiwgMHhBRDYyLCAweDI1NjMsDQorICAgIDB4QUQ2MywgMHhBRDYzLCAweDA0QjIsIDB4QUQ2NCwgMHhBRDZCLCAweDI1NjQsIDB4QUQ2QywgMHhBRDZELCAweDA0QjMsDQorICAgIDB4QUQ2RSwgMHhBRDZGLCAweDI1NkMsIDB4QUQ3MCwgMHhBRDcwLCAweDA0QjUsIDB4QUQ3MSwgMHhBRDcyLCAweDI1NkUsDQorICAgIDB4QUQ3MywgMHhBRDc2LCAweDA0QjYsIDB4QUQ3NywgMHhBRDdBLCAweDI1NzAsIDB4QUQ3QiwgMHhBRDdELCAweDA0QkEsDQorICAgIDB4QUQ3RSwgMHhBRDdFLCAweDI1NzQsIDB4QUQ3RiwgMHhBRDdGLCAweDA0QkQsIDB4QUQ4MCwgMHhBRDgwLCAweDI1NzUsDQorICAgIDB4QUQ4MSwgMHhBRDgyLCAweDA0QkUsIDB4QUQ4MywgMHhBRDg3LCAweDI1NzYsIDB4QUQ4OCwgMHhBRDg5LCAweDA0QzAsDQorICAgIDB4QUQ4QSwgMHhBRDhCLCAweDI1N0IsIDB4QUQ4QywgMHhBRDhDLCAweDA0QzIsIDB4QUQ4RCwgMHhBRDhGLCAweDI1N0QsDQorICAgIDB4QUQ5MCwgMHhBRDkwLCAweDA0QzMsIDB4QUQ5MSwgMHhBRDlCLCAweDI1ODAsIDB4QUQ5QywgMHhBRDlELCAweDA0QzQsDQorICAgIDB4QUQ5RSwgMHhBREEzLCAweDI1OEIsIDB4QURBNCwgMHhBREE0LCAweDA0QzYsIDB4QURBNSwgMHhBREI2LCAweDI1OTEsDQorICAgIDB4QURCNywgMHhBREI3LCAweDA0QzcsIDB4QURCOCwgMHhBREJGLCAweDI1QTMsIDB4QURDMCwgMHhBREMxLCAweDA0QzgsDQorICAgIDB4QURDMiwgMHhBREMzLCAweDI1QUIsIDB4QURDNCwgMHhBREM0LCAweDA0Q0EsIDB4QURDNSwgMHhBREM3LCAweDI1QUQsDQorICAgIDB4QURDOCwgMHhBREM4LCAweDA0Q0IsIDB4QURDOSwgMHhBRENGLCAweDI1QjAsIDB4QUREMCwgMHhBREQxLCAweDA0Q0MsDQorICAgIDB4QUREMiwgMHhBREQyLCAweDI1QjcsIDB4QUREMywgMHhBREQzLCAweDA0Q0UsIDB4QURENCwgMHhBRERCLCAweDI1QjgsDQorICAgIDB4QUREQywgMHhBRERDLCAweDA0Q0YsIDB4QURERCwgMHhBRERGLCAweDI1QzAsIDB4QURFMCwgMHhBREUwLCAweDA0RDAsDQorICAgIDB4QURFMSwgMHhBREUzLCAweDI1QzMsIDB4QURFNCwgMHhBREU0LCAweDA0RDEsIDB4QURFNSwgMHhBREY3LCAweDI1QzYsDQorICAgIDB4QURGOCwgMHhBREY5LCAweDA0RDIsIDB4QURGQSwgMHhBREZCLCAweDI1RDksIDB4QURGQywgMHhBREZDLCAweDA0RDQsDQorICAgIDB4QURGRCwgMHhBREZFLCAweDI1REIsIDB4QURGRiwgMHhBREZGLCAweDA0RDUsIDB4QUUwMCwgMHhBRTAxLCAweDA0RDYsDQorICAgIDB4QUUwMiwgMHhBRTA3LCAweDI1REQsIDB4QUUwOCwgMHhBRTA5LCAweDA0RDgsIDB4QUUwQSwgMHhBRTBBLCAweDI1RTMsDQorICAgIDB4QUUwQiwgMHhBRTBCLCAweDA0REEsIDB4QUUwQywgMHhBRTBDLCAweDI1RTQsIDB4QUUwRCwgMHhBRTBELCAweDA0REIsDQorICAgIDB4QUUwRSwgMHhBRTEzLCAweDI1RTUsIDB4QUUxNCwgMHhBRTE0LCAweDA0REMsIDB4QUUxNSwgMHhBRTJGLCAweDI1RUIsDQorICAgIDB4QUUzMCwgMHhBRTMxLCAweDA0REQsIDB4QUUzMiwgMHhBRTMzLCAweDI2MDYsIDB4QUUzNCwgMHhBRTM0LCAweDA0REYsDQorICAgIDB4QUUzNSwgMHhBRTM2LCAweDI2MDgsIDB4QUUzNywgMHhBRTM4LCAweDA0RTAsIDB4QUUzOSwgMHhBRTM5LCAweDI2MEEsDQorICAgIDB4QUUzQSwgMHhBRTNBLCAweDA0RTIsIDB4QUUzQiwgMHhBRTNGLCAweDI2MEIsIDB4QUU0MCwgMHhBRTQxLCAweDA0RTMsDQorICAgIDB4QUU0MiwgMHhBRTQyLCAweDI2MTAsIDB4QUU0MywgMHhBRTQzLCAweDA0RTUsIDB4QUU0NCwgMHhBRTQ0LCAweDI2MTEsDQorICAgIDB4QUU0NSwgMHhBRTQ2LCAweDA0RTYsIDB4QUU0NywgMHhBRTQ5LCAweDI2MTIsIDB4QUU0QSwgMHhBRTRBLCAweDA0RTgsDQorICAgIDB4QUU0QiwgMHhBRTRCLCAweDI2MTUsIDB4QUU0QywgMHhBRTRFLCAweDA0RTksIDB4QUU0RiwgMHhBRTRGLCAweDI2MTYsDQorICAgIDB4QUU1MCwgMHhBRTUwLCAweDA0RUMsIDB4QUU1MSwgMHhBRTUzLCAweDI2MTcsIDB4QUU1NCwgMHhBRTU0LCAweDA0RUQsDQorICAgIDB4QUU1NSwgMHhBRTU1LCAweDI2MUEsIDB4QUU1NiwgMHhBRTU2LCAweDA0RUUsIDB4QUU1NywgMHhBRTVCLCAweDI2MUIsDQorICAgIDB4QUU1QywgMHhBRTVELCAweDA0RUYsIDB4QUU1RSwgMHhBRTVFLCAweDI2MjAsIDB4QUU1RiwgMHhBRTYxLCAweDA0RjEsDQorICAgIDB4QUU2MiwgMHhBRTY0LCAweDI2MjEsIDB4QUU2NSwgMHhBRTY1LCAweDA0RjQsIDB4QUU2NiwgMHhBRTY3LCAweDI2MjQsDQorICAgIDB4QUU2OCwgMHhBRTY5LCAweDA0RjUsIDB4QUU2QSwgMHhBRTZCLCAweDI2MjYsIDB4QUU2QywgMHhBRTZDLCAweDA0RjcsDQorICAgIDB4QUU2RCwgMHhBRTZGLCAweDI2MjgsIDB4QUU3MCwgMHhBRTcwLCAweDA0RjgsIDB4QUU3MSwgMHhBRTc3LCAweDI2MkIsDQorICAgIDB4QUU3OCwgMHhBRTc5LCAweDA0RjksIDB4QUU3QSwgMHhBRTdBLCAweDI2MzIsIDB4QUU3QiwgMHhBRTdELCAweDA0RkIsDQorICAgIDB4QUU3RSwgMHhBRTgzLCAweDI2MzMsIDB4QUU4NCwgMHhBRTg1LCAweDA0RkUsIDB4QUU4NiwgMHhBRThCLCAweDI2MzksDQorICAgIDB4QUU4QywgMHhBRThDLCAweDA1MDAsIDB4QUU4RCwgMHhBRUJCLCAweDI2M0YsIDB4QUVCQywgMHhBRUJFLCAweDA1MDEsDQorICAgIDB4QUVCRiwgMHhBRUJGLCAweDI2NkUsIDB4QUVDMCwgMHhBRUMwLCAweDA1MDQsIDB4QUVDMSwgMHhBRUMzLCAweDI2NkYsDQorICAgIDB4QUVDNCwgMHhBRUM0LCAweDA1MDUsIDB4QUVDNSwgMHhBRUNCLCAweDI2NzIsIDB4QUVDQywgMHhBRUNELCAweDA1MDYsDQorICAgIDB4QUVDRSwgMHhBRUNFLCAweDI2NzksIDB4QUVDRiwgMHhBRUQxLCAweDA1MDgsIDB4QUVEMiwgMHhBRUQ3LCAweDI2N0EsDQorICAgIDB4QUVEOCwgMHhBRUQ5LCAweDA1MEIsIDB4QUVEQSwgMHhBRURCLCAweDI2ODAsIDB4QUVEQywgMHhBRURDLCAweDA1MEQsDQorICAgIDB4QUVERCwgMHhBRUU3LCAweDI2ODIsIDB4QUVFOCwgMHhBRUU4LCAweDA1MEUsIDB4QUVFOSwgMHhBRUVBLCAweDI2OEQsDQorICAgIDB4QUVFQiwgMHhBRUVCLCAweDA1MEYsIDB4QUVFQywgMHhBRUVDLCAweDI2OEYsIDB4QUVFRCwgMHhBRUVELCAweDA1MTAsDQorICAgIDB4QUVFRSwgMHhBRUYzLCAweDI2OTAsIDB4QUVGNCwgMHhBRUY0LCAweDA1MTEsIDB4QUVGNSwgMHhBRUY3LCAweDI2OTYsDQorICAgIDB4QUVGOCwgMHhBRUY4LCAweDA1MTIsIDB4QUVGOSwgMHhBRUZCLCAweDI2OTksIDB4QUVGQywgMHhBRUZDLCAweDA1MTMsDQorICAgIDB4QUVGRCwgMHhBRUZGLCAweDI2OUMsIDB4QUYwMCwgMHhBRjA2LCAweDI2OUYsIDB4QUYwNywgMHhBRjA4LCAweDA1MTQsDQorICAgIDB4QUYwOSwgMHhBRjBDLCAweDI2QTYsIDB4QUYwRCwgMHhBRjBELCAweDA1MTYsIDB4QUYwRSwgMHhBRjBGLCAweDI2QUEsDQorICAgIDB4QUYxMCwgMHhBRjEwLCAweDA1MTcsIDB4QUYxMSwgMHhBRjJCLCAweDI2QUMsIDB4QUYyQywgMHhBRjJELCAweDA1MTgsDQorICAgIDB4QUYyRSwgMHhBRjJGLCAweDI2QzcsIDB4QUYzMCwgMHhBRjMwLCAweDA1MUEsIDB4QUYzMSwgMHhBRjMxLCAweDI2QzksDQorICAgIDB4QUYzMiwgMHhBRjMyLCAweDA1MUIsIDB4QUYzMywgMHhBRjMzLCAweDI2Q0EsIDB4QUYzNCwgMHhBRjM0LCAweDA1MUMsDQorICAgIDB4QUYzNSwgMHhBRjNCLCAweDI2Q0IsIDB4QUYzQywgMHhBRjNELCAweDA1MUQsIDB4QUYzRSwgMHhBRjNFLCAweDI2RDIsDQorICAgIDB4QUYzRiwgMHhBRjNGLCAweDA1MUYsIDB4QUY0MCwgMHhBRjQwLCAweDI2RDMsIDB4QUY0MSwgMHhBRjQzLCAweDA1MjAsDQorICAgIDB4QUY0NCwgMHhBRjQ3LCAweDI2RDQsIDB4QUY0OCwgMHhBRjQ5LCAweDA1MjMsIDB4QUY0QSwgMHhBRjRGLCAweDI2RDgsDQorICAgIDB4QUY1MCwgMHhBRjUwLCAweDA1MjUsIDB4QUY1MSwgMHhBRjVCLCAweDI2REUsIDB4QUY1QywgMHhBRjVELCAweDA1MjYsDQorICAgIDB4QUY1RSwgMHhBRjYzLCAweDI2RTksIDB4QUY2NCwgMHhBRjY1LCAweDA1MjgsIDB4QUY2NiwgMHhBRjc4LCAweDI2RUYsDQorICAgIDB4QUY3OSwgMHhBRjc5LCAweDA1MkEsIDB4QUY3QSwgMHhBRjdGLCAweDI3MDIsIDB4QUY4MCwgMHhBRjgwLCAweDA1MkIsDQorICAgIDB4QUY4MSwgMHhBRjgzLCAweDI3MDgsIDB4QUY4NCwgMHhBRjg0LCAweDA1MkMsIDB4QUY4NSwgMHhBRjg3LCAweDI3MEIsDQorICAgIDB4QUY4OCwgMHhBRjg4LCAweDA1MkQsIDB4QUY4OSwgMHhBRjhGLCAweDI3MEUsIDB4QUY5MCwgMHhBRjkxLCAweDA1MkUsDQorICAgIDB4QUY5MiwgMHhBRjk0LCAweDI3MTUsIDB4QUY5NSwgMHhBRjk1LCAweDA1MzAsIDB4QUY5NiwgMHhBRjlCLCAweDI3MTgsDQorICAgIDB4QUY5QywgMHhBRjlDLCAweDA1MzEsIDB4QUY5RCwgMHhBRkI3LCAweDI3MUUsIDB4QUZCOCwgMHhBRkI5LCAweDA1MzIsDQorICAgIDB4QUZCQSwgMHhBRkJCLCAweDI3MzksIDB4QUZCQywgMHhBRkJDLCAweDA1MzQsIDB4QUZCRCwgMHhBRkJGLCAweDI3M0IsDQorICAgIDB4QUZDMCwgMHhBRkMwLCAweDA1MzUsIDB4QUZDMSwgMHhBRkM2LCAweDI3M0UsIDB4QUZDNywgMHhBRkM5LCAweDA1MzYsDQorICAgIDB4QUZDQSwgMHhBRkNBLCAweDI3NDQsIDB4QUZDQiwgMHhBRkNCLCAweDA1MzksIDB4QUZDQywgMHhBRkNDLCAweDI3NDUsDQorICAgIDB4QUZDRCwgMHhBRkNFLCAweDA1M0EsIDB4QUZDRiwgMHhBRkQzLCAweDI3NDYsIDB4QUZENCwgMHhBRkQ0LCAweDA1M0MsDQorICAgIDB4QUZENSwgMHhBRkRCLCAweDI3NEIsIDB4QUZEQywgMHhBRkRDLCAweDA1M0QsIDB4QUZERCwgMHhBRkU3LCAweDI3NTIsDQorICAgIDB4QUZFOCwgMHhBRkU5LCAweDA1M0UsIDB4QUZFQSwgMHhBRkVGLCAweDI3NUQsIDB4QUZGMCwgMHhBRkYxLCAweDA1NDAsDQorICAgIDB4QUZGMiwgMHhBRkYzLCAweDI3NjMsIDB4QUZGNCwgMHhBRkY0LCAweDA1NDIsIDB4QUZGNSwgMHhBRkY3LCAweDI3NjUsDQorICAgIDB4QUZGOCwgMHhBRkY4LCAweDA1NDMsIDB4QUZGOSwgMHhBRkZGLCAweDI3NjgsIDB4QjAwMCwgMHhCMDAxLCAweDA1NDQsDQorICAgIDB4QjAwMiwgMHhCMDAzLCAweDI3NkYsIDB4QjAwNCwgMHhCMDA0LCAweDA1NDYsIDB4QjAwNSwgMHhCMDBCLCAweDI3NzEsDQorICAgIDB4QjAwQywgMHhCMDBDLCAweDA1NDcsIDB4QjAwRCwgMHhCMDBGLCAweDI3NzgsIDB4QjAxMCwgMHhCMDEwLCAweDA1NDgsDQorICAgIDB4QjAxMSwgMHhCMDEzLCAweDI3N0IsIDB4QjAxNCwgMHhCMDE0LCAweDA1NDksIDB4QjAxNSwgMHhCMDFCLCAweDI3N0UsDQorICAgIDB4QjAxQywgMHhCMDFELCAweDA1NEEsIDB4QjAxRSwgMHhCMDI3LCAweDI3ODUsIDB4QjAyOCwgMHhCMDI4LCAweDA1NEMsDQorICAgIDB4QjAyOSwgMHhCMDQzLCAweDI3OEYsIDB4QjA0NCwgMHhCMDQ1LCAweDA1NEQsIDB4QjA0NiwgMHhCMDQ3LCAweDI3QUEsDQorICAgIDB4QjA0OCwgMHhCMDQ4LCAweDA1NEYsIDB4QjA0OSwgMHhCMDQ5LCAweDI3QUMsIDB4QjA0QSwgMHhCMDRBLCAweDA1NTAsDQorICAgIDB4QjA0QiwgMHhCMDRCLCAweDI3QUQsIDB4QjA0QywgMHhCMDRDLCAweDA1NTEsIDB4QjA0RCwgMHhCMDRELCAweDI3QUUsDQorICAgIDB4QjA0RSwgMHhCMDRFLCAweDA1NTIsIDB4QjA0RiwgMHhCMDUyLCAweDI3QUYsIDB4QjA1MywgMHhCMDU1LCAweDA1NTMsDQorICAgIDB4QjA1NiwgMHhCMDU2LCAweDI3QjMsIDB4QjA1NywgMHhCMDU3LCAweDA1NTYsIDB4QjA1OCwgMHhCMDU4LCAweDI3QjQsDQorICAgIDB4QjA1OSwgMHhCMDU5LCAweDA1NTcsIDB4QjA1QSwgMHhCMDVDLCAweDI3QjUsIDB4QjA1RCwgMHhCMDVELCAweDA1NTgsDQorICAgIDB4QjA1RSwgMHhCMDdCLCAweDI3QjgsIDB4QjA3QywgMHhCMDdELCAweDA1NTksIDB4QjA3RSwgMHhCMDdGLCAweDI3RDYsDQorICAgIDB4QjA4MCwgMHhCMDgwLCAweDA1NUIsIDB4QjA4MSwgMHhCMDgzLCAweDI3RDgsIDB4QjA4NCwgMHhCMDg0LCAweDA1NUMsDQorICAgIDB4QjA4NSwgMHhCMDhCLCAweDI3REIsIDB4QjA4QywgMHhCMDhELCAweDA1NUQsIDB4QjA4RSwgMHhCMDhFLCAweDI3RTIsDQorICAgIDB4QjA4RiwgMHhCMDhGLCAweDA1NUYsIDB4QjA5MCwgMHhCMDkwLCAweDI3RTMsIDB4QjA5MSwgMHhCMDkxLCAweDA1NjAsDQorICAgIDB4QjA5MiwgMHhCMDk3LCAweDI3RTQsIDB4QjA5OCwgMHhCMDlBLCAweDA1NjEsIDB4QjA5QiwgMHhCMDlCLCAweDI3RUEsDQorICAgIDB4QjA5QywgMHhCMDlDLCAweDA1NjQsIDB4QjA5RCwgMHhCMDlFLCAweDI3RUIsIDB4QjA5RiwgMHhCMEEyLCAweDA1NjUsDQorICAgIDB4QjBBMywgMHhCMEE3LCAweDI3RUQsIDB4QjBBOCwgMHhCMEE5LCAweDA1NjksIDB4QjBBQSwgMHhCMEFBLCAweDI3RjIsDQorICAgIDB4QjBBQiwgMHhCMEFGLCAweDA1NkIsIDB4QjBCMCwgMHhCMEIwLCAweDI3RjMsIDB4QjBCMSwgMHhCMEIxLCAweDA1NzAsDQorICAgIDB4QjBCMiwgMHhCMEIyLCAweDI3RjQsIDB4QjBCMywgMHhCMEI1LCAweDA1NzEsIDB4QjBCNiwgMHhCMEI3LCAweDI3RjUsDQorICAgIDB4QjBCOCwgMHhCMEI4LCAweDA1NzQsIDB4QjBCOSwgMHhCMEJCLCAweDI3RjcsIDB4QjBCQywgMHhCMEJDLCAweDA1NzUsDQorICAgIDB4QjBCRCwgMHhCMEMzLCAweDI3RkEsIDB4QjBDNCwgMHhCMEM1LCAweDA1NzYsIDB4QjBDNiwgMHhCMEM2LCAweDI4MDEsDQorICAgIDB4QjBDNywgMHhCMEM5LCAweDA1NzgsIDB4QjBDQSwgMHhCMENGLCAweDI4MDIsIDB4QjBEMCwgMHhCMEQxLCAweDA1N0IsDQorICAgIDB4QjBEMiwgMHhCMEQzLCAweDI4MDgsIDB4QjBENCwgMHhCMEQ0LCAweDA1N0QsIDB4QjBENSwgMHhCMEQ3LCAweDI4MEEsDQorICAgIDB4QjBEOCwgMHhCMEQ4LCAweDA1N0UsIDB4QjBEOSwgMHhCMERGLCAweDI4MEQsIDB4QjBFMCwgMHhCMEUwLCAweDA1N0YsDQorICAgIDB4QjBFMSwgMHhCMEU0LCAweDI4MTQsIDB4QjBFNSwgMHhCMEU1LCAweDA1ODAsIDB4QjBFNiwgMHhCMEZGLCAweDI4MTgsDQorICAgIDB4QjEwMCwgMHhCMTA3LCAweDI4MzIsIDB4QjEwOCwgMHhCMTA5LCAweDA1ODEsIDB4QjEwQSwgMHhCMTBBLCAweDI4M0EsDQorICAgIDB4QjEwQiwgMHhCMTBDLCAweDA1ODMsIDB4QjEwRCwgMHhCMTBGLCAweDI4M0IsIDB4QjExMCwgMHhCMTEwLCAweDA1ODUsDQorICAgIDB4QjExMSwgMHhCMTExLCAweDI4M0UsIDB4QjExMiwgMHhCMTEzLCAweDA1ODYsIDB4QjExNCwgMHhCMTE3LCAweDI4M0YsDQorICAgIDB4QjExOCwgMHhCMTE5LCAweDA1ODgsIDB4QjExQSwgMHhCMTFBLCAweDI4NDMsIDB4QjExQiwgMHhCMTFELCAweDA1OEEsDQorICAgIDB4QjExRSwgMHhCMTIyLCAweDI4NDQsIDB4QjEyMywgMHhCMTI1LCAweDA1OEQsIDB4QjEyNiwgMHhCMTI3LCAweDI4NDksDQorICAgIDB4QjEyOCwgMHhCMTI4LCAweDA1OTAsIDB4QjEyOSwgMHhCMTJCLCAweDI4NEIsIDB4QjEyQywgMHhCMTJDLCAweDA1OTEsDQorICAgIDB4QjEyRCwgMHhCMTMzLCAweDI4NEUsIDB4QjEzNCwgMHhCMTM1LCAweDA1OTIsIDB4QjEzNiwgMHhCMTM2LCAweDI4NTUsDQorICAgIDB4QjEzNywgMHhCMTM5LCAweDA1OTQsIDB4QjEzQSwgMHhCMTNGLCAweDI4NTYsIDB4QjE0MCwgMHhCMTQxLCAweDA1OTcsDQorICAgIDB4QjE0MiwgMHhCMTQzLCAweDI4NUMsIDB4QjE0NCwgMHhCMTQ0LCAweDA1OTksIDB4QjE0NSwgMHhCMTQ3LCAweDI4NUUsDQorICAgIDB4QjE0OCwgMHhCMTQ4LCAweDA1OUEsIDB4QjE0OSwgMHhCMTRGLCAweDI4NjEsIDB4QjE1MCwgMHhCMTUxLCAweDA1OUIsDQorICAgIDB4QjE1MiwgMHhCMTUzLCAweDI4NjgsIDB4QjE1NCwgMHhCMTU1LCAweDA1OUQsIDB4QjE1NiwgMHhCMTU3LCAweDI4NkEsDQorICAgIDB4QjE1OCwgMHhCMTU4LCAweDA1OUYsIDB4QjE1OSwgMHhCMTVCLCAweDI4NkMsIDB4QjE1QywgMHhCMTVDLCAweDA1QTAsDQorICAgIDB4QjE1RCwgMHhCMTVGLCAweDI4NkYsIDB4QjE2MCwgMHhCMTYwLCAweDA1QTEsIDB4QjE2MSwgMHhCMTc3LCAweDI4NzIsDQorICAgIDB4QjE3OCwgMHhCMTc5LCAweDA1QTIsIDB4QjE3QSwgMHhCMTdCLCAweDI4ODksIDB4QjE3QywgMHhCMTdDLCAweDA1QTQsDQorICAgIDB4QjE3RCwgMHhCMTdGLCAweDI4OEIsIDB4QjE4MCwgMHhCMTgwLCAweDA1QTUsIDB4QjE4MSwgMHhCMTgxLCAweDI4OEUsDQorICAgIDB4QjE4MiwgMHhCMTgyLCAweDA1QTYsIDB4QjE4MywgMHhCMTg3LCAweDI4OEYsIDB4QjE4OCwgMHhCMTg5LCAweDA1QTcsDQorICAgIDB4QjE4QSwgMHhCMThBLCAweDI4OTQsIDB4QjE4QiwgMHhCMThCLCAweDA1QTksIDB4QjE4QywgMHhCMThDLCAweDI4OTUsDQorICAgIDB4QjE4RCwgMHhCMThELCAweDA1QUEsIDB4QjE4RSwgMHhCMTkxLCAweDI4OTYsIDB4QjE5MiwgMHhCMTk0LCAweDA1QUIsDQorICAgIDB4QjE5NSwgMHhCMTk3LCAweDI4OUEsIDB4QjE5OCwgMHhCMTk4LCAweDA1QUUsIDB4QjE5OSwgMHhCMTlCLCAweDI4OUQsDQorICAgIDB4QjE5QywgMHhCMTlDLCAweDA1QUYsIDB4QjE5RCwgMHhCMUE3LCAweDI4QTAsIDB4QjFBOCwgMHhCMUE4LCAweDA1QjAsDQorICAgIDB4QjFBOSwgMHhCMUNCLCAweDI4QUIsIDB4QjFDQywgMHhCMUNDLCAweDA1QjEsIDB4QjFDRCwgMHhCMUNGLCAweDI4Q0UsDQorICAgIDB4QjFEMCwgMHhCMUQwLCAweDA1QjIsIDB4QjFEMSwgMHhCMUQzLCAweDI4RDEsIDB4QjFENCwgMHhCMUQ0LCAweDA1QjMsDQorICAgIDB4QjFENSwgMHhCMURCLCAweDI4RDQsIDB4QjFEQywgMHhCMURELCAweDA1QjQsIDB4QjFERSwgMHhCMURFLCAweDI4REIsDQorICAgIDB4QjFERiwgMHhCMURGLCAweDA1QjYsIDB4QjFFMCwgMHhCMUU3LCAweDI4REMsIDB4QjFFOCwgMHhCMUU5LCAweDA1QjcsDQorICAgIDB4QjFFQSwgMHhCMUVCLCAweDI4RTQsIDB4QjFFQywgMHhCMUVDLCAweDA1QjksIDB4QjFFRCwgMHhCMUVGLCAweDI4RTYsDQorICAgIDB4QjFGMCwgMHhCMUYwLCAweDA1QkEsIDB4QjFGMSwgMHhCMUY4LCAweDI4RTksIDB4QjFGOSwgMHhCMUY5LCAweDA1QkIsDQorICAgIDB4QjFGQSwgMHhCMUZBLCAweDI4RjEsIDB4QjFGQiwgMHhCMUZCLCAweDA1QkMsIDB4QjFGQywgMHhCMUZDLCAweDI4RjIsDQorICAgIDB4QjFGRCwgMHhCMUZELCAweDA1QkQsIDB4QjFGRSwgMHhCMUZGLCAweDI4RjMsIDB4QjIwMCwgMHhCMjAzLCAweDI4RjUsDQorICAgIDB4QjIwNCwgMHhCMjA1LCAweDA1QkUsIDB4QjIwNiwgMHhCMjA3LCAweDI4RjksIDB4QjIwOCwgMHhCMjA4LCAweDA1QzAsDQorICAgIDB4QjIwOSwgMHhCMjBBLCAweDI4RkIsIDB4QjIwQiwgMHhCMjBDLCAweDA1QzEsIDB4QjIwRCwgMHhCMjEzLCAweDI4RkQsDQorICAgIDB4QjIxNCwgMHhCMjE1LCAweDA1QzMsIDB4QjIxNiwgMHhCMjE2LCAweDI5MDQsIDB4QjIxNywgMHhCMjE3LCAweDA1QzUsDQorICAgIDB4QjIxOCwgMHhCMjE4LCAweDI5MDUsIDB4QjIxOSwgMHhCMjE5LCAweDA1QzYsIDB4QjIxQSwgMHhCMjFGLCAweDI5MDYsDQorICAgIDB4QjIyMCwgMHhCMjIwLCAweDA1QzcsIDB4QjIyMSwgMHhCMjMzLCAweDI5MEMsIDB4QjIzNCwgMHhCMjM0LCAweDA1QzgsDQorICAgIDB4QjIzNSwgMHhCMjNCLCAweDI5MUYsIDB4QjIzQywgMHhCMjNDLCAweDA1QzksIDB4QjIzRCwgMHhCMjU3LCAweDI5MjYsDQorICAgIDB4QjI1OCwgMHhCMjU4LCAweDA1Q0EsIDB4QjI1OSwgMHhCMjVCLCAweDI5NDEsIDB4QjI1QywgMHhCMjVDLCAweDA1Q0IsDQorICAgIDB4QjI1RCwgMHhCMjVGLCAweDI5NDQsIDB4QjI2MCwgMHhCMjYwLCAweDA1Q0MsIDB4QjI2MSwgMHhCMjY3LCAweDI5NDcsDQorICAgIDB4QjI2OCwgMHhCMjY5LCAweDA1Q0QsIDB4QjI2QSwgMHhCMjczLCAweDI5NEUsIDB4QjI3NCwgMHhCMjc1LCAweDA1Q0YsDQorICAgIDB4QjI3NiwgMHhCMjdCLCAweDI5NTgsIDB4QjI3QywgMHhCMjdDLCAweDA1RDEsIDB4QjI3RCwgMHhCMjgzLCAweDI5NUUsDQorICAgIDB4QjI4NCwgMHhCMjg1LCAweDA1RDIsIDB4QjI4NiwgMHhCMjg4LCAweDI5NjUsIDB4QjI4OSwgMHhCMjg5LCAweDA1RDQsDQorICAgIDB4QjI4QSwgMHhCMjhGLCAweDI5NjgsIDB4QjI5MCwgMHhCMjkxLCAweDA1RDUsIDB4QjI5MiwgMHhCMjkzLCAweDI5NkUsDQorICAgIDB4QjI5NCwgMHhCMjk0LCAweDA1RDcsIDB4QjI5NSwgMHhCMjk3LCAweDI5NzAsIDB4QjI5OCwgMHhCMjlBLCAweDA1RDgsDQorICAgIDB4QjI5QiwgMHhCMjlGLCAweDI5NzMsIDB4QjJBMCwgMHhCMkExLCAweDA1REIsIDB4QjJBMiwgMHhCMkEyLCAweDI5NzgsDQorICAgIDB4QjJBMywgMHhCMkEzLCAweDA1REQsIDB4QjJBNCwgMHhCMkE0LCAweDI5NzksIDB4QjJBNSwgMHhCMkE2LCAweDA1REUsDQorICAgIDB4QjJBNywgMHhCMkE5LCAweDI5N0EsIDB4QjJBQSwgMHhCMkFBLCAweDA1RTAsIDB4QjJBQiwgMHhCMkFCLCAweDI5N0QsDQorICAgIDB4QjJBQywgMHhCMkFDLCAweDA1RTEsIDB4QjJBRCwgMHhCMkFGLCAweDI5N0UsIDB4QjJCMCwgMHhCMkIwLCAweDA1RTIsDQorICAgIDB4QjJCMSwgMHhCMkIzLCAweDI5ODEsIDB4QjJCNCwgMHhCMkI0LCAweDA1RTMsIDB4QjJCNSwgMHhCMkM3LCAweDI5ODQsDQorICAgIDB4QjJDOCwgMHhCMkM5LCAweDA1RTQsIDB4QjJDQSwgMHhCMkNCLCAweDI5OTcsIDB4QjJDQywgMHhCMkNDLCAweDA1RTYsDQorICAgIDB4QjJDRCwgMHhCMkNGLCAweDI5OTksIDB4QjJEMCwgMHhCMkQwLCAweDA1RTcsIDB4QjJEMSwgMHhCMkQxLCAweDI5OUMsDQorICAgIDB4QjJEMiwgMHhCMkQyLCAweDA1RTgsIDB4QjJEMywgMHhCMkQ3LCAweDI5OUQsIDB4QjJEOCwgMHhCMkQ5LCAweDA1RTksDQorICAgIDB4QjJEQSwgMHhCMkRBLCAweDI5QTIsIDB4QjJEQiwgMHhCMkRCLCAweDA1RUIsIDB4QjJEQywgMHhCMkRDLCAweDI5QTMsDQorICAgIDB4QjJERCwgMHhCMkRELCAweDA1RUMsIDB4QjJERSwgMHhCMkUxLCAweDI5QTQsIDB4QjJFMiwgMHhCMkUyLCAweDA1RUQsDQorICAgIDB4QjJFMywgMHhCMkUzLCAweDI5QTgsIDB4QjJFNCwgMHhCMkU2LCAweDA1RUUsIDB4QjJFNywgMHhCMkU3LCAweDI5QTksDQorICAgIDB4QjJFOCwgMHhCMkU4LCAweDA1RjEsIDB4QjJFOSwgMHhCMkVBLCAweDI5QUEsIDB4QjJFQiwgMHhCMkVGLCAweDA1RjIsDQorICAgIDB4QjJGMCwgMHhCMkYyLCAweDI5QUMsIDB4QjJGMywgMHhCMkY1LCAweDA1RjcsIDB4QjJGNiwgMHhCMkY2LCAweDI5QUYsDQorICAgIDB4QjJGNywgMHhCMkZCLCAweDA1RkEsIDB4QjJGQywgMHhCMkZFLCAweDI5QjAsIDB4QjJGRiwgMHhCMkZGLCAweDA1RkYsDQorICAgIDB4QjMwMCwgMHhCMzAxLCAweDA2MDAsIDB4QjMwMiwgMHhCMzAzLCAweDI5QjMsIDB4QjMwNCwgMHhCMzA0LCAweDA2MDIsDQorICAgIDB4QjMwNSwgMHhCMzA3LCAweDI5QjUsIDB4QjMwOCwgMHhCMzA4LCAweDA2MDMsIDB4QjMwOSwgMHhCMzBGLCAweDI5QjgsDQorICAgIDB4QjMxMCwgMHhCMzExLCAweDA2MDQsIDB4QjMxMiwgMHhCMzEyLCAweDI5QkYsIDB4QjMxMywgMHhCMzE1LCAweDA2MDYsDQorICAgIDB4QjMxNiwgMHhCMzFCLCAweDI5QzAsIDB4QjMxQywgMHhCMzFDLCAweDA2MDksIDB4QjMxRCwgMHhCMzUzLCAweDI5QzYsDQorICAgIDB4QjM1NCwgMHhCMzU2LCAweDA2MEEsIDB4QjM1NywgMHhCMzU3LCAweDI5RkQsIDB4QjM1OCwgMHhCMzU4LCAweDA2MEQsDQorICAgIDB4QjM1OSwgMHhCMzVBLCAweDI5RkUsIDB4QjM1QiwgMHhCMzVDLCAweDA2MEUsIDB4QjM1RCwgMHhCMzVELCAweDJBMDAsDQorICAgIDB4QjM1RSwgMHhCMzVGLCAweDA2MTAsIDB4QjM2MCwgMHhCMzYzLCAweDJBMDEsIDB4QjM2NCwgMHhCMzY1LCAweDA2MTIsDQorICAgIDB4QjM2NiwgMHhCMzY2LCAweDJBMDUsIDB4QjM2NywgMHhCMzY3LCAweDA2MTQsIDB4QjM2OCwgMHhCMzY4LCAweDJBMDYsDQorICAgIDB4QjM2OSwgMHhCMzY5LCAweDA2MTUsIDB4QjM2QSwgMHhCMzZBLCAweDJBMDcsIDB4QjM2QiwgMHhCMzZCLCAweDA2MTYsDQorICAgIDB4QjM2QywgMHhCMzZELCAweDJBMDgsIDB4QjM2RSwgMHhCMzZFLCAweDA2MTcsIDB4QjM2RiwgMHhCMzZGLCAweDJBMEEsDQorICAgIDB4QjM3MCwgMHhCMzcxLCAweDA2MTgsIDB4QjM3MiwgMHhCMzczLCAweDJBMEIsIDB4QjM3NCwgMHhCMzc0LCAweDA2MUEsDQorICAgIDB4QjM3NSwgMHhCMzc3LCAweDJBMEQsIDB4QjM3OCwgMHhCMzc4LCAweDA2MUIsIDB4QjM3OSwgMHhCMzdGLCAweDJBMTAsDQorICAgIDB4QjM4MCwgMHhCMzgxLCAweDA2MUMsIDB4QjM4MiwgMHhCMzgyLCAweDJBMTcsIDB4QjM4MywgMHhCMzg1LCAweDA2MUUsDQorICAgIDB4QjM4NiwgMHhCMzhCLCAweDJBMTgsIDB4QjM4QywgMHhCMzhDLCAweDA2MjEsIDB4QjM4RCwgMHhCMzhGLCAweDJBMUUsDQorICAgIDB4QjM5MCwgMHhCMzkwLCAweDA2MjIsIDB4QjM5MSwgMHhCMzkzLCAweDJBMjEsIDB4QjM5NCwgMHhCMzk0LCAweDA2MjMsDQorICAgIDB4QjM5NSwgMHhCMzlGLCAweDJBMjQsIDB4QjNBMCwgMHhCM0ExLCAweDA2MjQsIDB4QjNBMiwgMHhCM0E3LCAweDJBMkYsDQorICAgIDB4QjNBOCwgMHhCM0E4LCAweDA2MjYsIDB4QjNBOSwgMHhCM0FCLCAweDJBMzUsIDB4QjNBQywgMHhCM0FDLCAweDA2MjcsDQorICAgIDB4QjNBRCwgMHhCM0MzLCAweDJBMzgsIDB4QjNDNCwgMHhCM0M1LCAweDA2MjgsIDB4QjNDNiwgMHhCM0M3LCAweDJBNEYsDQorICAgIDB4QjNDOCwgMHhCM0M4LCAweDA2MkEsIDB4QjNDOSwgMHhCM0NBLCAweDJBNTEsIDB4QjNDQiwgMHhCM0NDLCAweDA2MkIsDQorICAgIDB4QjNDRCwgMHhCM0NELCAweDJBNTMsIDB4QjNDRSwgMHhCM0NFLCAweDA2MkQsIDB4QjNDRiwgMHhCM0NGLCAweDJBNTQsDQorICAgIDB4QjNEMCwgMHhCM0QwLCAweDA2MkUsIDB4QjNEMSwgMHhCM0QzLCAweDJBNTUsIDB4QjNENCwgMHhCM0Q1LCAweDA2MkYsDQorICAgIDB4QjNENiwgMHhCM0Q2LCAweDJBNTgsIDB4QjNENywgMHhCM0Q3LCAweDA2MzEsIDB4QjNEOCwgMHhCM0Q4LCAweDJBNTksDQorICAgIDB4QjNEOSwgMHhCM0Q5LCAweDA2MzIsIDB4QjNEQSwgMHhCM0RBLCAweDJBNUEsIDB4QjNEQiwgMHhCM0RCLCAweDA2MzMsDQorICAgIDB4QjNEQywgMHhCM0RDLCAweDJBNUIsIDB4QjNERCwgMHhCM0RELCAweDA2MzQsIDB4QjNERSwgMHhCM0RGLCAweDJBNUMsDQorICAgIDB4QjNFMCwgMHhCM0UwLCAweDA2MzUsIDB4QjNFMSwgMHhCM0UzLCAweDJBNUUsIDB4QjNFNCwgMHhCM0U0LCAweDA2MzYsDQorICAgIDB4QjNFNSwgMHhCM0U3LCAweDJBNjEsIDB4QjNFOCwgMHhCM0U4LCAweDA2MzcsIDB4QjNFOSwgMHhCM0ZCLCAweDJBNjQsDQorICAgIDB4QjNGQywgMHhCM0ZDLCAweDA2MzgsIDB4QjNGRCwgMHhCM0ZGLCAweDJBNzcsIDB4QjQwMCwgMHhCNDBGLCAweDJBN0EsDQorICAgIDB4QjQxMCwgMHhCNDEwLCAweDA2MzksIDB4QjQxMSwgMHhCNDE3LCAweDJBOEEsIDB4QjQxOCwgMHhCNDE4LCAweDA2M0EsDQorICAgIDB4QjQxOSwgMHhCNDFCLCAweDJBOTEsIDB4QjQxQywgMHhCNDFDLCAweDA2M0IsIDB4QjQxRCwgMHhCNDFGLCAweDJBOTQsDQorICAgIDB4QjQyMCwgMHhCNDIwLCAweDA2M0MsIDB4QjQyMSwgMHhCNDI3LCAweDJBOTcsIDB4QjQyOCwgMHhCNDI5LCAweDA2M0QsDQorICAgIDB4QjQyQSwgMHhCNDJBLCAweDJBOUUsIDB4QjQyQiwgMHhCNDJCLCAweDA2M0YsIDB4QjQyQywgMHhCNDMzLCAweDJBOUYsDQorICAgIDB4QjQzNCwgMHhCNDM0LCAweDA2NDAsIDB4QjQzNSwgMHhCNDRGLCAweDJBQTcsIDB4QjQ1MCwgMHhCNDUxLCAweDA2NDEsDQorICAgIDB4QjQ1MiwgMHhCNDUzLCAweDJBQzIsIDB4QjQ1NCwgMHhCNDU0LCAweDA2NDMsIDB4QjQ1NSwgMHhCNDU3LCAweDJBQzQsDQorICAgIDB4QjQ1OCwgMHhCNDU4LCAweDA2NDQsIDB4QjQ1OSwgMHhCNDVGLCAweDJBQzcsIDB4QjQ2MCwgMHhCNDYxLCAweDA2NDUsDQorICAgIDB4QjQ2MiwgMHhCNDYyLCAweDJBQ0UsIDB4QjQ2MywgMHhCNDYzLCAweDA2NDcsIDB4QjQ2NCwgMHhCNDY0LCAweDJBQ0YsDQorICAgIDB4QjQ2NSwgMHhCNDY1LCAweDA2NDgsIDB4QjQ2NiwgMHhCNDZCLCAweDJBRDAsIDB4QjQ2QywgMHhCNDZDLCAweDA2NDksDQorICAgIDB4QjQ2RCwgMHhCNDdGLCAweDJBRDYsIDB4QjQ4MCwgMHhCNDgwLCAweDA2NEEsIDB4QjQ4MSwgMHhCNDg3LCAweDJBRTksDQorICAgIDB4QjQ4OCwgMHhCNDg4LCAweDA2NEIsIDB4QjQ4OSwgMHhCNDlDLCAweDJBRjAsIDB4QjQ5RCwgMHhCNDlELCAweDA2NEMsDQorICAgIDB4QjQ5RSwgMHhCNEEzLCAweDJCMDQsIDB4QjRBNCwgMHhCNEE0LCAweDA2NEQsIDB4QjRBNSwgMHhCNEE3LCAweDJCMEEsDQorICAgIDB4QjRBOCwgMHhCNEE4LCAweDA2NEUsIDB4QjRBOSwgMHhCNEFCLCAweDJCMEQsIDB4QjRBQywgMHhCNEFDLCAweDA2NEYsDQorICAgIDB4QjRBRCwgMHhCNEI0LCAweDJCMTAsIDB4QjRCNSwgMHhCNEI1LCAweDA2NTAsIDB4QjRCNiwgMHhCNEI2LCAweDJCMTgsDQorICAgIDB4QjRCNywgMHhCNEI3LCAweDA2NTEsIDB4QjRCOCwgMHhCNEI4LCAweDJCMTksIDB4QjRCOSwgMHhCNEI5LCAweDA2NTIsDQorICAgIDB4QjRCQSwgMHhCNEJGLCAweDJCMUEsIDB4QjRDMCwgMHhCNEMwLCAweDA2NTMsIDB4QjRDMSwgMHhCNEMzLCAweDJCMjAsDQorICAgIDB4QjRDNCwgMHhCNEM0LCAweDA2NTQsIDB4QjRDNSwgMHhCNEM3LCAweDJCMjMsIDB4QjRDOCwgMHhCNEM4LCAweDA2NTUsDQorICAgIDB4QjRDOSwgMHhCNENGLCAweDJCMjYsIDB4QjREMCwgMHhCNEQwLCAweDA2NTYsIDB4QjREMSwgMHhCNEQ0LCAweDJCMkQsDQorICAgIDB4QjRENSwgMHhCNEQ1LCAweDA2NTcsIDB4QjRENiwgMHhCNERCLCAweDJCMzEsIDB4QjREQywgMHhCNERELCAweDA2NTgsDQorICAgIDB4QjRERSwgMHhCNERGLCAweDJCMzcsIDB4QjRFMCwgMHhCNEUwLCAweDA2NUEsIDB4QjRFMSwgMHhCNEUyLCAweDJCMzksDQorICAgIDB4QjRFMywgMHhCNEU0LCAweDA2NUIsIDB4QjRFNSwgMHhCNEU1LCAweDJCM0IsIDB4QjRFNiwgMHhCNEU2LCAweDA2NUQsDQorICAgIDB4QjRFNywgMHhCNEVCLCAweDJCM0MsIDB4QjRFQywgMHhCNEVELCAweDA2NUUsIDB4QjRFRSwgMHhCNEVFLCAweDJCNDEsDQorICAgIDB4QjRFRiwgMHhCNEVGLCAweDA2NjAsIDB4QjRGMCwgMHhCNEYwLCAweDJCNDIsIDB4QjRGMSwgMHhCNEYxLCAweDA2NjEsDQorICAgIDB4QjRGMiwgMHhCNEY3LCAweDJCNDMsIDB4QjRGOCwgMHhCNEY4LCAweDA2NjIsIDB4QjRGOSwgMHhCNEZGLCAweDJCNDksDQorICAgIDB4QjUwMCwgMHhCNTEzLCAweDJCNTAsIDB4QjUxNCwgMHhCNTE1LCAweDA2NjMsIDB4QjUxNiwgMHhCNTE3LCAweDJCNjQsDQorICAgIDB4QjUxOCwgMHhCNTE4LCAweDA2NjUsIDB4QjUxOSwgMHhCNTFBLCAweDJCNjYsIDB4QjUxQiwgMHhCNTFDLCAweDA2NjYsDQorICAgIDB4QjUxRCwgMHhCNTIzLCAweDJCNjgsIDB4QjUyNCwgMHhCNTI1LCAweDA2NjgsIDB4QjUyNiwgMHhCNTI2LCAweDJCNkYsDQorICAgIDB4QjUyNywgMHhCNTJBLCAweDA2NkEsIDB4QjUyQiwgMHhCNTJGLCAweDJCNzAsIDB4QjUzMCwgMHhCNTMxLCAweDA2NkUsDQorICAgIDB4QjUzMiwgMHhCNTMzLCAweDJCNzUsIDB4QjUzNCwgMHhCNTM0LCAweDA2NzAsIDB4QjUzNSwgMHhCNTM3LCAweDJCNzcsDQorICAgIDB4QjUzOCwgMHhCNTM4LCAweDA2NzEsIDB4QjUzOSwgMHhCNTNGLCAweDJCN0EsIDB4QjU0MCwgMHhCNTQxLCAweDA2NzIsDQorICAgIDB4QjU0MiwgMHhCNTQyLCAweDJCODEsIDB4QjU0MywgMHhCNTQ1LCAweDA2NzQsIDB4QjU0NiwgMHhCNTRBLCAweDJCODIsDQorICAgIDB4QjU0QiwgMHhCNTRELCAweDA2NzcsIDB4QjU0RSwgMHhCNTRGLCAweDJCODcsIDB4QjU1MCwgMHhCNTUwLCAweDA2N0EsDQorICAgIDB4QjU1MSwgMHhCNTUzLCAweDJCODksIDB4QjU1NCwgMHhCNTU0LCAweDA2N0IsIDB4QjU1NSwgMHhCNTVCLCAweDJCOEMsDQorICAgIDB4QjU1QywgMHhCNTVELCAweDA2N0MsIDB4QjU1RSwgMHhCNTVFLCAweDJCOTMsIDB4QjU1RiwgMHhCNTYxLCAweDA2N0UsDQorICAgIDB4QjU2MiwgMHhCNTlGLCAweDJCOTQsIDB4QjVBMCwgMHhCNUExLCAweDA2ODEsIDB4QjVBMiwgMHhCNUEzLCAweDJCRDIsDQorICAgIDB4QjVBNCwgMHhCNUE0LCAweDA2ODMsIDB4QjVBNSwgMHhCNUE3LCAweDJCRDQsIDB4QjVBOCwgMHhCNUE4LCAweDA2ODQsDQorICAgIDB4QjVBOSwgMHhCNUE5LCAweDJCRDcsIDB4QjVBQSwgMHhCNUFCLCAweDA2ODUsIDB4QjVBQywgMHhCNUFGLCAweDJCRDgsDQorICAgIDB4QjVCMCwgMHhCNUIxLCAweDA2ODcsIDB4QjVCMiwgMHhCNUIyLCAweDJCREMsIDB4QjVCMywgMHhCNUI1LCAweDA2ODksDQorICAgIDB4QjVCNiwgMHhCNUJBLCAweDJCREQsIDB4QjVCQiwgMHhCNUJELCAweDA2OEMsIDB4QjVCRSwgMHhCNUJGLCAweDJCRTIsDQorICAgIDB4QjVDMCwgMHhCNUMwLCAweDA2OEYsIDB4QjVDMSwgMHhCNUMzLCAweDJCRTQsIDB4QjVDNCwgMHhCNUM0LCAweDA2OTAsDQorICAgIDB4QjVDNSwgMHhCNUNCLCAweDJCRTcsIDB4QjVDQywgMHhCNUNELCAweDA2OTEsIDB4QjVDRSwgMHhCNUNFLCAweDJCRUUsDQorICAgIDB4QjVDRiwgMHhCNUQxLCAweDA2OTMsIDB4QjVEMiwgMHhCNUQ3LCAweDJCRUYsIDB4QjVEOCwgMHhCNUQ4LCAweDA2OTYsDQorICAgIDB4QjVEOSwgMHhCNUVCLCAweDJCRjUsIDB4QjVFQywgMHhCNUVDLCAweDA2OTcsIDB4QjVFRCwgMHhCNUZGLCAweDJDMDgsDQorICAgIDB4QjYwMCwgMHhCNjBGLCAweDJDMUIsIDB4QjYxMCwgMHhCNjExLCAweDA2OTgsIDB4QjYxMiwgMHhCNjEzLCAweDJDMkIsDQorICAgIDB4QjYxNCwgMHhCNjE0LCAweDA2OUEsIDB4QjYxNSwgMHhCNjE3LCAweDJDMkQsIDB4QjYxOCwgMHhCNjE4LCAweDA2OUIsDQorICAgIDB4QjYxOSwgMHhCNjI0LCAweDJDMzAsIDB4QjYyNSwgMHhCNjI1LCAweDA2OUMsIDB4QjYyNiwgMHhCNjJCLCAweDJDM0MsDQorICAgIDB4QjYyQywgMHhCNjJDLCAweDA2OUQsIDB4QjYyRCwgMHhCNjMzLCAweDJDNDIsIDB4QjYzNCwgMHhCNjM0LCAweDA2OUUsDQorICAgIDB4QjYzNSwgMHhCNjQ3LCAweDJDNDksIDB4QjY0OCwgMHhCNjQ4LCAweDA2OUYsIDB4QjY0OSwgMHhCNjYzLCAweDJDNUMsDQorICAgIDB4QjY2NCwgMHhCNjY0LCAweDA2QTAsIDB4QjY2NSwgMHhCNjY3LCAweDJDNzcsIDB4QjY2OCwgMHhCNjY4LCAweDA2QTEsDQorICAgIDB4QjY2OSwgMHhCNjlCLCAweDJDN0EsIDB4QjY5QywgMHhCNjlELCAweDA2QTIsIDB4QjY5RSwgMHhCNjlGLCAweDJDQUQsDQorICAgIDB4QjZBMCwgMHhCNkEwLCAweDA2QTQsIDB4QjZBMSwgMHhCNkEzLCAweDJDQUYsIDB4QjZBNCwgMHhCNkE0LCAweDA2QTUsDQorICAgIDB4QjZBNSwgMHhCNkFBLCAweDJDQjIsIDB4QjZBQiwgMHhCNkFDLCAweDA2QTYsIDB4QjZBRCwgMHhCNkIwLCAweDJDQjgsDQorICAgIDB4QjZCMSwgMHhCNkIxLCAweDA2QTgsIDB4QjZCMiwgMHhCNkQzLCAweDJDQkMsIDB4QjZENCwgMHhCNkQ0LCAweDA2QTksDQorICAgIDB4QjZENSwgMHhCNkVGLCAweDJDREUsIDB4QjZGMCwgMHhCNkYwLCAweDA2QUEsIDB4QjZGMSwgMHhCNkYzLCAweDJDRjksDQorICAgIDB4QjZGNCwgMHhCNkY0LCAweDA2QUIsIDB4QjZGNSwgMHhCNkY3LCAweDJDRkMsIDB4QjZGOCwgMHhCNkY4LCAweDA2QUMsDQorICAgIDB4QjZGOSwgMHhCNkZGLCAweDJDRkYsIDB4QjcwMCwgMHhCNzAxLCAweDA2QUQsIDB4QjcwMiwgMHhCNzA0LCAweDJEMDYsDQorICAgIDB4QjcwNSwgMHhCNzA1LCAweDA2QUYsIDB4QjcwNiwgMHhCNzI3LCAweDJEMDksIDB4QjcyOCwgMHhCNzI5LCAweDA2QjAsDQorICAgIDB4QjcyQSwgMHhCNzJCLCAweDJEMkIsIDB4QjcyQywgMHhCNzJDLCAweDA2QjIsIDB4QjcyRCwgMHhCNzJFLCAweDJEMkQsDQorICAgIDB4QjcyRiwgMHhCNzMwLCAweDA2QjMsIDB4QjczMSwgMHhCNzM3LCAweDJEMkYsIDB4QjczOCwgMHhCNzM5LCAweDA2QjUsDQorICAgIDB4QjczQSwgMHhCNzNBLCAweDJEMzYsIDB4QjczQiwgMHhCNzNCLCAweDA2QjcsIDB4QjczQywgMHhCNzQzLCAweDJEMzcsDQorICAgIDB4Qjc0NCwgMHhCNzQ0LCAweDA2QjgsIDB4Qjc0NSwgMHhCNzQ3LCAweDJEM0YsIDB4Qjc0OCwgMHhCNzQ4LCAweDA2QjksDQorICAgIDB4Qjc0OSwgMHhCNzRCLCAweDJENDIsIDB4Qjc0QywgMHhCNzRDLCAweDA2QkEsIDB4Qjc0RCwgMHhCNzUzLCAweDJENDUsDQorICAgIDB4Qjc1NCwgMHhCNzU1LCAweDA2QkIsIDB4Qjc1NiwgMHhCNzVGLCAweDJENEMsIDB4Qjc2MCwgMHhCNzYwLCAweDA2QkQsDQorICAgIDB4Qjc2MSwgMHhCNzYzLCAweDJENTYsIDB4Qjc2NCwgMHhCNzY0LCAweDA2QkUsIDB4Qjc2NSwgMHhCNzY3LCAweDJENTksDQorICAgIDB4Qjc2OCwgMHhCNzY4LCAweDA2QkYsIDB4Qjc2OSwgMHhCNzZGLCAweDJENUMsIDB4Qjc3MCwgMHhCNzcxLCAweDA2QzAsDQorICAgIDB4Qjc3MiwgMHhCNzcyLCAweDJENjMsIDB4Qjc3MywgMHhCNzczLCAweDA2QzIsIDB4Qjc3NCwgMHhCNzc0LCAweDJENjQsDQorICAgIDB4Qjc3NSwgMHhCNzc1LCAweDA2QzMsIDB4Qjc3NiwgMHhCNzdCLCAweDJENjUsIDB4Qjc3QywgMHhCNzdELCAweDA2QzQsDQorICAgIDB4Qjc3RSwgMHhCNzdGLCAweDJENkIsIDB4Qjc4MCwgMHhCNzgwLCAweDA2QzYsIDB4Qjc4MSwgMHhCNzgzLCAweDJENkQsDQorICAgIDB4Qjc4NCwgMHhCNzg0LCAweDA2QzcsIDB4Qjc4NSwgMHhCNzhCLCAweDJENzAsIDB4Qjc4QywgMHhCNzhELCAweDA2QzgsDQorICAgIDB4Qjc4RSwgMHhCNzhFLCAweDJENzcsIDB4Qjc4RiwgMHhCNzkyLCAweDA2Q0EsIDB4Qjc5MywgMHhCNzk1LCAweDJENzgsDQorICAgIDB4Qjc5NiwgMHhCNzk5LCAweDA2Q0UsIDB4Qjc5QSwgMHhCNzlCLCAweDJEN0IsIDB4Qjc5QywgMHhCNzlDLCAweDA2RDIsDQorICAgIDB4Qjc5RCwgMHhCNzlGLCAweDJEN0QsIDB4QjdBMCwgMHhCN0EwLCAweDA2RDMsIDB4QjdBMSwgMHhCN0E3LCAweDJEODAsDQorICAgIDB4QjdBOCwgMHhCN0E5LCAweDA2RDQsIDB4QjdBQSwgMHhCN0FBLCAweDJEODcsIDB4QjdBQiwgMHhCN0FELCAweDA2RDYsDQorICAgIDB4QjdBRSwgMHhCN0IzLCAweDJEODgsIDB4QjdCNCwgMHhCN0I1LCAweDA2RDksIDB4QjdCNiwgMHhCN0I3LCAweDJEOEUsDQorICAgIDB4QjdCOCwgMHhCN0I4LCAweDA2REIsIDB4QjdCOSwgMHhCN0M2LCAweDJEOTAsIDB4QjdDNywgMHhCN0M3LCAweDA2REMsDQorICAgIDB4QjdDOCwgMHhCN0M4LCAweDJEOUUsIDB4QjdDOSwgMHhCN0M5LCAweDA2REQsIDB4QjdDQSwgMHhCN0VCLCAweDJEOUYsDQorICAgIDB4QjdFQywgMHhCN0VELCAweDA2REUsIDB4QjdFRSwgMHhCN0VGLCAweDJEQzEsIDB4QjdGMCwgMHhCN0YwLCAweDA2RTAsDQorICAgIDB4QjdGMSwgMHhCN0YzLCAweDJEQzMsIDB4QjdGNCwgMHhCN0Y0LCAweDA2RTEsIDB4QjdGNSwgMHhCN0ZCLCAweDJEQzYsDQorICAgIDB4QjdGQywgMHhCN0ZELCAweDA2RTIsIDB4QjdGRSwgMHhCN0ZFLCAweDJEQ0QsIDB4QjdGRiwgMHhCN0ZGLCAweDA2RTQsDQorICAgIDB4QjgwMCwgMHhCODAxLCAweDA2RTUsIDB4QjgwMiwgMHhCODA2LCAweDJEQ0UsIDB4QjgwNywgMHhCODA5LCAweDA2RTcsDQorICAgIDB4QjgwQSwgMHhCODBCLCAweDJERDMsIDB4QjgwQywgMHhCODBDLCAweDA2RUEsIDB4QjgwRCwgMHhCODBGLCAweDJERDUsDQorICAgIDB4QjgxMCwgMHhCODEwLCAweDA2RUIsIDB4QjgxMSwgMHhCODE3LCAweDJERDgsIDB4QjgxOCwgMHhCODE5LCAweDA2RUMsDQorICAgIDB4QjgxQSwgMHhCODFBLCAweDJEREYsIDB4QjgxQiwgMHhCODFCLCAweDA2RUUsIDB4QjgxQywgMHhCODFDLCAweDJERTAsDQorICAgIDB4QjgxRCwgMHhCODFELCAweDA2RUYsIDB4QjgxRSwgMHhCODIzLCAweDJERTEsIDB4QjgyNCwgMHhCODI1LCAweDA2RjAsDQorICAgIDB4QjgyNiwgMHhCODI3LCAweDJERTcsIDB4QjgyOCwgMHhCODI4LCAweDA2RjIsIDB4QjgyOSwgMHhCODJCLCAweDJERTksDQorICAgIDB4QjgyQywgMHhCODJDLCAweDA2RjMsIDB4QjgyRCwgMHhCODMzLCAweDJERUMsIDB4QjgzNCwgMHhCODM1LCAweDA2RjQsDQorICAgIDB4QjgzNiwgMHhCODM2LCAweDJERjMsIDB4QjgzNywgMHhCODM5LCAweDA2RjYsIDB4QjgzQSwgMHhCODNGLCAweDJERjQsDQorICAgIDB4Qjg0MCwgMHhCODQwLCAweDA2RjksIDB4Qjg0MSwgMHhCODQzLCAweDJERkEsIDB4Qjg0NCwgMHhCODQ0LCAweDA2RkEsDQorICAgIDB4Qjg0NSwgMHhCODUwLCAweDJERkQsIDB4Qjg1MSwgMHhCODUxLCAweDA2RkIsIDB4Qjg1MiwgMHhCODUyLCAweDJFMDksDQorICAgIDB4Qjg1MywgMHhCODUzLCAweDA2RkMsIDB4Qjg1NCwgMHhCODVCLCAweDJFMEEsIDB4Qjg1QywgMHhCODVELCAweDA2RkQsDQorICAgIDB4Qjg1RSwgMHhCODVGLCAweDJFMTIsIDB4Qjg2MCwgMHhCODYwLCAweDA2RkYsIDB4Qjg2MSwgMHhCODYzLCAweDJFMTQsDQorICAgIDB4Qjg2NCwgMHhCODY0LCAweDA3MDAsIDB4Qjg2NSwgMHhCODZCLCAweDJFMTcsIDB4Qjg2QywgMHhCODZELCAweDA3MDEsDQorICAgIDB4Qjg2RSwgMHhCODZFLCAweDJFMUUsIDB4Qjg2RiwgMHhCODZGLCAweDA3MDMsIDB4Qjg3MCwgMHhCODcwLCAweDJFMUYsDQorICAgIDB4Qjg3MSwgMHhCODcxLCAweDA3MDQsIDB4Qjg3MiwgMHhCODc3LCAweDJFMjAsIDB4Qjg3OCwgMHhCODc4LCAweDA3MDUsDQorICAgIDB4Qjg3OSwgMHhCODdCLCAweDJFMjYsIDB4Qjg3QywgMHhCODdDLCAweDA3MDYsIDB4Qjg3RCwgMHhCODhDLCAweDJFMjksDQorICAgIDB4Qjg4RCwgMHhCODhELCAweDA3MDcsIDB4Qjg4RSwgMHhCOEE3LCAweDJFMzksIDB4QjhBOCwgMHhCOEE4LCAweDA3MDgsDQorICAgIDB4QjhBOSwgMHhCOEFGLCAweDJFNTMsIDB4QjhCMCwgMHhCOEIwLCAweDA3MDksIDB4QjhCMSwgMHhCOEIzLCAweDJFNUEsDQorICAgIDB4QjhCNCwgMHhCOEI0LCAweDA3MEEsIDB4QjhCNSwgMHhCOEI3LCAweDJFNUQsIDB4QjhCOCwgMHhCOEI4LCAweDA3MEIsDQorICAgIDB4QjhCOSwgMHhCOEJGLCAweDJFNjAsIDB4QjhDMCwgMHhCOEMxLCAweDA3MEMsIDB4QjhDMiwgMHhCOEMyLCAweDJFNjcsDQorICAgIDB4QjhDMywgMHhCOEMzLCAweDA3MEUsIDB4QjhDNCwgMHhCOEM0LCAweDJFNjgsIDB4QjhDNSwgMHhCOEM1LCAweDA3MEYsDQorICAgIDB4QjhDNiwgMHhCOENCLCAweDJFNjksIDB4QjhDQywgMHhCOENDLCAweDA3MTAsIDB4QjhDRCwgMHhCOENGLCAweDJFNkYsDQorICAgIDB4QjhEMCwgMHhCOEQwLCAweDA3MTEsIDB4QjhEMSwgMHhCOEQzLCAweDJFNzIsIDB4QjhENCwgMHhCOEQ0LCAweDA3MTIsDQorICAgIDB4QjhENSwgMHhCOERDLCAweDJFNzUsIDB4QjhERCwgMHhCOERELCAweDA3MTMsIDB4QjhERSwgMHhCOERFLCAweDJFN0QsDQorICAgIDB4QjhERiwgMHhCOERGLCAweDA3MTQsIDB4QjhFMCwgMHhCOEUwLCAweDJFN0UsIDB4QjhFMSwgMHhCOEUxLCAweDA3MTUsDQorICAgIDB4QjhFMiwgMHhCOEU3LCAweDJFN0YsIDB4QjhFOCwgMHhCOEU5LCAweDA3MTYsIDB4QjhFQSwgMHhCOEVCLCAweDJFODUsDQorICAgIDB4QjhFQywgMHhCOEVDLCAweDA3MTgsIDB4QjhFRCwgMHhCOEVGLCAweDJFODcsIDB4QjhGMCwgMHhCOEYwLCAweDA3MTksDQorICAgIDB4QjhGMSwgMHhCOEY3LCAweDJFOEEsIDB4QjhGOCwgMHhCOEY5LCAweDA3MUEsIDB4QjhGQSwgMHhCOEZBLCAweDJFOTEsDQorICAgIDB4QjhGQiwgMHhCOEZCLCAweDA3MUMsIDB4QjhGQywgMHhCOEZDLCAweDJFOTIsIDB4QjhGRCwgMHhCOEZELCAweDA3MUQsDQorICAgIDB4QjhGRSwgMHhCOEZGLCAweDJFOTMsIDB4QjkwMCwgMHhCOTAzLCAweDJFOTUsIDB4QjkwNCwgMHhCOTA0LCAweDA3MUUsDQorICAgIDB4QjkwNSwgMHhCOTE3LCAweDJFOTksIDB4QjkxOCwgMHhCOTE4LCAweDA3MUYsIDB4QjkxOSwgMHhCOTFGLCAweDJFQUMsDQorICAgIDB4QjkyMCwgMHhCOTIwLCAweDA3MjAsIDB4QjkyMSwgMHhCOTNCLCAweDJFQjMsIDB4QjkzQywgMHhCOTNELCAweDA3MjEsDQorICAgIDB4QjkzRSwgMHhCOTNGLCAweDJFQ0UsIDB4Qjk0MCwgMHhCOTQwLCAweDA3MjMsIDB4Qjk0MSwgMHhCOTQzLCAweDJFRDAsDQorICAgIDB4Qjk0NCwgMHhCOTQ0LCAweDA3MjQsIDB4Qjk0NSwgMHhCOTRCLCAweDJFRDMsIDB4Qjk0QywgMHhCOTRDLCAweDA3MjUsDQorICAgIDB4Qjk0RCwgMHhCOTRFLCAweDJFREEsIDB4Qjk0RiwgMHhCOTRGLCAweDA3MjYsIDB4Qjk1MCwgMHhCOTUwLCAweDJFREMsDQorICAgIDB4Qjk1MSwgMHhCOTUxLCAweDA3MjcsIDB4Qjk1MiwgMHhCOTU3LCAweDJFREQsIDB4Qjk1OCwgMHhCOTU5LCAweDA3MjgsDQorICAgIDB4Qjk1QSwgMHhCOTVCLCAweDJFRTMsIDB4Qjk1QywgMHhCOTVDLCAweDA3MkEsIDB4Qjk1RCwgMHhCOTVGLCAweDJFRTUsDQorICAgIDB4Qjk2MCwgMHhCOTYwLCAweDA3MkIsIDB4Qjk2MSwgMHhCOTY3LCAweDJFRTgsIDB4Qjk2OCwgMHhCOTY5LCAweDA3MkMsDQorICAgIDB4Qjk2QSwgMHhCOTZBLCAweDJFRUYsIDB4Qjk2QiwgMHhCOTZCLCAweDA3MkUsIDB4Qjk2QywgMHhCOTZDLCAweDJFRjAsDQorICAgIDB4Qjk2RCwgMHhCOTZELCAweDA3MkYsIDB4Qjk2RSwgMHhCOTczLCAweDJFRjEsIDB4Qjk3NCwgMHhCOTc1LCAweDA3MzAsDQorICAgIDB4Qjk3NiwgMHhCOTc3LCAweDJFRjcsIDB4Qjk3OCwgMHhCOTc4LCAweDA3MzIsIDB4Qjk3OSwgMHhCOTdCLCAweDJFRjksDQorICAgIDB4Qjk3QywgMHhCOTdDLCAweDA3MzMsIDB4Qjk3RCwgMHhCOTgzLCAweDJFRkMsIDB4Qjk4NCwgMHhCOTg1LCAweDA3MzQsDQorICAgIDB4Qjk4NiwgMHhCOTg2LCAweDJGMDMsIDB4Qjk4NywgMHhCOTg3LCAweDA3MzYsIDB4Qjk4OCwgMHhCOTg4LCAweDJGMDQsDQorICAgIDB4Qjk4OSwgMHhCOThBLCAweDA3MzcsIDB4Qjk4QiwgMHhCOThDLCAweDJGMDUsIDB4Qjk4RCwgMHhCOThFLCAweDA3MzksDQorICAgIDB4Qjk4RiwgMHhCOUFCLCAweDJGMDcsIDB4QjlBQywgMHhCOUFELCAweDA3M0IsIDB4QjlBRSwgMHhCOUFGLCAweDJGMjQsDQorICAgIDB4QjlCMCwgMHhCOUIwLCAweDA3M0QsIDB4QjlCMSwgMHhCOUIzLCAweDJGMjYsIDB4QjlCNCwgMHhCOUI0LCAweDA3M0UsDQorICAgIDB4QjlCNSwgMHhCOUJCLCAweDJGMjksIDB4QjlCQywgMHhCOUJELCAweDA3M0YsIDB4QjlCRSwgMHhCOUJFLCAweDJGMzAsDQorICAgIDB4QjlCRiwgMHhCOUJGLCAweDA3NDEsIDB4QjlDMCwgMHhCOUMwLCAweDJGMzEsIDB4QjlDMSwgMHhCOUMxLCAweDA3NDIsDQorICAgIDB4QjlDMiwgMHhCOUM3LCAweDJGMzIsIDB4QjlDOCwgMHhCOUM5LCAweDA3NDMsIDB4QjlDQSwgMHhCOUNCLCAweDJGMzgsDQorICAgIDB4QjlDQywgMHhCOUNDLCAweDA3NDUsIDB4QjlDRCwgMHhCOUNELCAweDJGM0EsIDB4QjlDRSwgMHhCOUQyLCAweDA3NDYsDQorICAgIDB4QjlEMywgMHhCOUQ3LCAweDJGM0IsIDB4QjlEOCwgMHhCOUQ5LCAweDA3NEIsIDB4QjlEQSwgMHhCOURBLCAweDJGNDAsDQorICAgIDB4QjlEQiwgMHhCOURCLCAweDA3NEQsIDB4QjlEQywgMHhCOURDLCAweDJGNDEsIDB4QjlERCwgMHhCOURFLCAweDA3NEUsDQorICAgIDB4QjlERiwgMHhCOUUwLCAweDJGNDIsIDB4QjlFMSwgMHhCOUUxLCAweDA3NTAsIDB4QjlFMiwgMHhCOUUyLCAweDJGNDQsDQorICAgIDB4QjlFMywgMHhCOUU1LCAweDA3NTEsIDB4QjlFNiwgMHhCOUU3LCAweDJGNDUsIDB4QjlFOCwgMHhCOUU4LCAweDA3NTQsDQorICAgIDB4QjlFOSwgMHhCOUVCLCAweDJGNDcsIDB4QjlFQywgMHhCOUVDLCAweDA3NTUsIDB4QjlFRCwgMHhCOUYzLCAweDJGNEEsDQorICAgIDB4QjlGNCwgMHhCOUY1LCAweDA3NTYsIDB4QjlGNiwgMHhCOUY2LCAweDJGNTEsIDB4QjlGNywgMHhCOUZBLCAweDA3NTgsDQorICAgIDB4QjlGQiwgMHhCOUZGLCAweDJGNTIsIDB4QkEwMCwgMHhCQTAxLCAweDA3NUMsIDB4QkEwMiwgMHhCQTA3LCAweDJGNTcsDQorICAgIDB4QkEwOCwgMHhCQTA4LCAweDA3NUUsIDB4QkEwOSwgMHhCQTE0LCAweDJGNUQsIDB4QkExNSwgMHhCQTE1LCAweDA3NUYsDQorICAgIDB4QkExNiwgMHhCQTM3LCAweDJGNjksIDB4QkEzOCwgMHhCQTM5LCAweDA3NjAsIDB4QkEzQSwgMHhCQTNCLCAweDJGOEIsDQorICAgIDB4QkEzQywgMHhCQTNDLCAweDA3NjIsIDB4QkEzRCwgMHhCQTNGLCAweDJGOEQsIDB4QkE0MCwgMHhCQTQwLCAweDA3NjMsDQorICAgIDB4QkE0MSwgMHhCQTQxLCAweDJGOTAsIDB4QkE0MiwgMHhCQTQyLCAweDA3NjQsIDB4QkE0MywgMHhCQTQ3LCAweDJGOTEsDQorICAgIDB4QkE0OCwgMHhCQTQ5LCAweDA3NjUsIDB4QkE0QSwgMHhCQTRBLCAweDJGOTYsIDB4QkE0QiwgMHhCQTRCLCAweDA3NjcsDQorICAgIDB4QkE0QywgMHhCQTRDLCAweDJGOTcsIDB4QkE0RCwgMHhCQTRFLCAweDA3NjgsIDB4QkE0RiwgMHhCQTUyLCAweDJGOTgsDQorICAgIDB4QkE1MywgMHhCQTU1LCAweDA3NkEsIDB4QkE1NiwgMHhCQTU3LCAweDJGOUMsIDB4QkE1OCwgMHhCQTU4LCAweDA3NkQsDQorICAgIDB4QkE1OSwgMHhCQTVCLCAweDJGOUUsIDB4QkE1QywgMHhCQTVDLCAweDA3NkUsIDB4QkE1RCwgMHhCQTYzLCAweDJGQTEsDQorICAgIDB4QkE2NCwgMHhCQTY1LCAweDA3NkYsIDB4QkE2NiwgMHhCQTY2LCAweDJGQTgsIDB4QkE2NywgMHhCQTY5LCAweDA3NzEsDQorICAgIDB4QkE2QSwgMHhCQTZGLCAweDJGQTksIDB4QkE3MCwgMHhCQTcxLCAweDA3NzQsIDB4QkE3MiwgMHhCQTczLCAweDJGQUYsDQorICAgIDB4QkE3NCwgMHhCQTc0LCAweDA3NzYsIDB4QkE3NSwgMHhCQTc3LCAweDJGQjEsIDB4QkE3OCwgMHhCQTc4LCAweDA3NzcsDQorICAgIDB4QkE3OSwgMHhCQTgyLCAweDJGQjQsIDB4QkE4MywgMHhCQTg1LCAweDA3NzgsIDB4QkE4NiwgMHhCQTg2LCAweDJGQkUsDQorICAgIDB4QkE4NywgMHhCQTg3LCAweDA3N0IsIDB4QkE4OCwgMHhCQThCLCAweDJGQkYsIDB4QkE4QywgMHhCQThDLCAweDA3N0MsDQorICAgIDB4QkE4RCwgMHhCQUE3LCAweDJGQzMsIDB4QkFBOCwgMHhCQUE5LCAweDA3N0QsIDB4QkFBQSwgMHhCQUFBLCAweDJGREUsDQorICAgIDB4QkFBQiwgMHhCQUFDLCAweDA3N0YsIDB4QkFBRCwgMHhCQUFGLCAweDJGREYsIDB4QkFCMCwgMHhCQUIwLCAweDA3ODEsDQorICAgIDB4QkFCMSwgMHhCQUIxLCAweDJGRTIsIDB4QkFCMiwgMHhCQUIyLCAweDA3ODIsIDB4QkFCMywgMHhCQUI3LCAweDJGRTMsDQorICAgIDB4QkFCOCwgMHhCQUI5LCAweDA3ODMsIDB4QkFCQSwgMHhCQUJBLCAweDJGRTgsIDB4QkFCQiwgMHhCQUJCLCAweDA3ODUsDQorICAgIDB4QkFCQywgMHhCQUJDLCAweDJGRTksIDB4QkFCRCwgMHhCQUJELCAweDA3ODYsIDB4QkFCRSwgMHhCQUMzLCAweDJGRUEsDQorICAgIDB4QkFDNCwgMHhCQUM0LCAweDA3ODcsIDB4QkFDNSwgMHhCQUM3LCAweDJGRjAsIDB4QkFDOCwgMHhCQUM4LCAweDA3ODgsDQorICAgIDB4QkFDOSwgMHhCQUQ3LCAweDJGRjMsIDB4QkFEOCwgMHhCQUQ5LCAweDA3ODksIDB4QkFEQSwgMHhCQUZCLCAweDMwMDIsDQorICAgIDB4QkFGQywgMHhCQUZDLCAweDA3OEIsIDB4QkFGRCwgMHhCQUZGLCAweDMwMjQsIDB4QkIwMCwgMHhCQjAwLCAweDA3OEMsDQorICAgIDB4QkIwMSwgMHhCQjAzLCAweDMwMjcsIDB4QkIwNCwgMHhCQjA0LCAweDA3OEQsIDB4QkIwNSwgMHhCQjBDLCAweDMwMkEsDQorICAgIDB4QkIwRCwgMHhCQjBELCAweDA3OEUsIDB4QkIwRSwgMHhCQjBFLCAweDMwMzIsIDB4QkIwRiwgMHhCQjBGLCAweDA3OEYsDQorICAgIDB4QkIxMCwgMHhCQjEwLCAweDMwMzMsIDB4QkIxMSwgMHhCQjExLCAweDA3OTAsIDB4QkIxMiwgMHhCQjE3LCAweDMwMzQsDQorICAgIDB4QkIxOCwgMHhCQjE4LCAweDA3OTEsIDB4QkIxOSwgMHhCQjFCLCAweDMwM0EsIDB4QkIxQywgMHhCQjFDLCAweDA3OTIsDQorICAgIDB4QkIxRCwgMHhCQjFGLCAweDMwM0QsIDB4QkIyMCwgMHhCQjIwLCAweDA3OTMsIDB4QkIyMSwgMHhCQjI4LCAweDMwNDAsDQorICAgIDB4QkIyOSwgMHhCQjI5LCAweDA3OTQsIDB4QkIyQSwgMHhCQjJBLCAweDMwNDgsIDB4QkIyQiwgMHhCQjJCLCAweDA3OTUsDQorICAgIDB4QkIyQywgMHhCQjMzLCAweDMwNDksIDB4QkIzNCwgMHhCQjM2LCAweDA3OTYsIDB4QkIzNywgMHhCQjM3LCAweDMwNTEsDQorICAgIDB4QkIzOCwgMHhCQjM4LCAweDA3OTksIDB4QkIzOSwgMHhCQjNBLCAweDMwNTIsIDB4QkIzQiwgMHhCQjNFLCAweDA3OUEsDQorICAgIDB4QkIzRiwgMHhCQjQzLCAweDMwNTQsIDB4QkI0NCwgMHhCQjQ1LCAweDA3OUUsIDB4QkI0NiwgMHhCQjQ2LCAweDMwNTksDQorICAgIDB4QkI0NywgMHhCQjQ3LCAweDA3QTAsIDB4QkI0OCwgMHhCQjQ4LCAweDMwNUEsIDB4QkI0OSwgMHhCQjQ5LCAweDA3QTEsDQorICAgIDB4QkI0QSwgMHhCQjRDLCAweDMwNUIsIDB4QkI0RCwgMHhCQjRELCAweDA3QTIsIDB4QkI0RSwgMHhCQjRFLCAweDMwNUUsDQorICAgIDB4QkI0RiwgMHhCQjUwLCAweDA3QTMsIDB4QkI1MSwgMHhCQjUzLCAweDMwNUYsIDB4QkI1NCwgMHhCQjU0LCAweDA3QTUsDQorICAgIDB4QkI1NSwgMHhCQjU3LCAweDMwNjIsIDB4QkI1OCwgMHhCQjU4LCAweDA3QTYsIDB4QkI1OSwgMHhCQjYwLCAweDMwNjUsDQorICAgIDB4QkI2MSwgMHhCQjYxLCAweDA3QTcsIDB4QkI2MiwgMHhCQjYyLCAweDMwNkQsIDB4QkI2MywgMHhCQjYzLCAweDA3QTgsDQorICAgIDB4QkI2NCwgMHhCQjZCLCAweDMwNkUsIDB4QkI2QywgMHhCQjZDLCAweDA3QTksIDB4QkI2RCwgMHhCQjg3LCAweDMwNzYsDQorICAgIDB4QkI4OCwgMHhCQjg4LCAweDA3QUEsIDB4QkI4OSwgMHhCQjhCLCAweDMwOTEsIDB4QkI4QywgMHhCQjhDLCAweDA3QUIsDQorICAgIDB4QkI4RCwgMHhCQjhGLCAweDMwOTQsIDB4QkI5MCwgMHhCQjkwLCAweDA3QUMsIDB4QkI5MSwgMHhCQkEzLCAweDMwOTcsDQorICAgIDB4QkJBNCwgMHhCQkE0LCAweDA3QUQsIDB4QkJBNSwgMHhCQkE3LCAweDMwQUEsIDB4QkJBOCwgMHhCQkE4LCAweDA3QUUsDQorICAgIDB4QkJBOSwgMHhCQkFCLCAweDMwQUQsIDB4QkJBQywgMHhCQkFDLCAweDA3QUYsIDB4QkJBRCwgMHhCQkIzLCAweDMwQjAsDQorICAgIDB4QkJCNCwgMHhCQkI0LCAweDA3QjAsIDB4QkJCNSwgMHhCQkI2LCAweDMwQjcsIDB4QkJCNywgMHhCQkI3LCAweDA3QjEsDQorICAgIDB4QkJCOCwgMHhCQkJGLCAweDMwQjksIDB4QkJDMCwgMHhCQkMwLCAweDA3QjIsIDB4QkJDMSwgMHhCQkMzLCAweDMwQzEsDQorICAgIDB4QkJDNCwgMHhCQkM0LCAweDA3QjMsIDB4QkJDNSwgMHhCQkM3LCAweDMwQzQsIDB4QkJDOCwgMHhCQkM4LCAweDA3QjQsDQorICAgIDB4QkJDOSwgMHhCQkNGLCAweDMwQzcsIDB4QkJEMCwgMHhCQkQwLCAweDA3QjUsIDB4QkJEMSwgMHhCQkQyLCAweDMwQ0UsDQorICAgIDB4QkJEMywgMHhCQkQzLCAweDA3QjYsIDB4QkJENCwgMHhCQkY3LCAweDMwRDAsIDB4QkJGOCwgMHhCQkY5LCAweDA3QjcsDQorICAgIDB4QkJGQSwgMHhCQkZCLCAweDMwRjQsIDB4QkJGQywgMHhCQkZDLCAweDA3QjksIDB4QkJGRCwgMHhCQkZFLCAweDMwRjYsDQorICAgIDB4QkJGRiwgMHhCQkZGLCAweDA3QkEsIDB4QkMwMCwgMHhCQzAwLCAweDA3QkIsIDB4QkMwMSwgMHhCQzAxLCAweDMwRjgsDQorICAgIDB4QkMwMiwgMHhCQzAyLCAweDA3QkMsIDB4QkMwMywgMHhCQzA3LCAweDMwRjksIDB4QkMwOCwgMHhCQzA5LCAweDA3QkQsDQorICAgIDB4QkMwQSwgMHhCQzBBLCAweDMwRkUsIDB4QkMwQiwgMHhCQzBELCAweDA3QkYsIDB4QkMwRSwgMHhCQzBFLCAweDMwRkYsDQorICAgIDB4QkMwRiwgMHhCQzBGLCAweDA3QzIsIDB4QkMxMCwgMHhCQzEwLCAweDMxMDAsIDB4QkMxMSwgMHhCQzExLCAweDA3QzMsDQorICAgIDB4QkMxMiwgMHhCQzEzLCAweDMxMDEsIDB4QkMxNCwgMHhCQzE4LCAweDA3QzQsIDB4QkMxOSwgMHhCQzFBLCAweDMxMDMsDQorICAgIDB4QkMxQiwgMHhCQzFGLCAweDA3QzksIDB4QkMyMCwgMHhCQzIzLCAweDMxMDUsIDB4QkMyNCwgMHhCQzI1LCAweDA3Q0UsDQorICAgIDB4QkMyNiwgMHhCQzI2LCAweDMxMDksIDB4QkMyNywgMHhCQzI3LCAweDA3RDAsIDB4QkMyOCwgMHhCQzI4LCAweDMxMEEsDQorICAgIDB4QkMyOSwgMHhCQzI5LCAweDA3RDEsIDB4QkMyQSwgMHhCQzJDLCAweDMxMEIsIDB4QkMyRCwgMHhCQzJELCAweDA3RDIsDQorICAgIDB4QkMyRSwgMHhCQzJGLCAweDMxMEUsIDB4QkMzMCwgMHhCQzMxLCAweDA3RDMsIDB4QkMzMiwgMHhCQzMzLCAweDMxMTAsDQorICAgIDB4QkMzNCwgMHhCQzM0LCAweDA3RDUsIDB4QkMzNSwgMHhCQzM3LCAweDMxMTIsIDB4QkMzOCwgMHhCQzM4LCAweDA3RDYsDQorICAgIDB4QkMzOSwgMHhCQzNGLCAweDMxMTUsIDB4QkM0MCwgMHhCQzQxLCAweDA3RDcsIDB4QkM0MiwgMHhCQzQyLCAweDMxMUMsDQorICAgIDB4QkM0MywgMHhCQzQ1LCAweDA3RDksIDB4QkM0NiwgMHhCQzQ4LCAweDMxMUQsIDB4QkM0OSwgMHhCQzQ5LCAweDA3REMsDQorICAgIDB4QkM0QSwgMHhCQzRCLCAweDMxMjAsIDB4QkM0QywgMHhCQzRELCAweDA3REQsIDB4QkM0RSwgMHhCQzRGLCAweDMxMjIsDQorICAgIDB4QkM1MCwgMHhCQzUwLCAweDA3REYsIDB4QkM1MSwgMHhCQzVDLCAweDMxMjQsIDB4QkM1RCwgMHhCQzVELCAweDA3RTAsDQorICAgIDB4QkM1RSwgMHhCQzgzLCAweDMxMzAsIDB4QkM4NCwgMHhCQzg1LCAweDA3RTEsIDB4QkM4NiwgMHhCQzg3LCAweDMxNTYsDQorICAgIDB4QkM4OCwgMHhCQzg4LCAweDA3RTMsIDB4QkM4OSwgMHhCQzhBLCAweDMxNTgsIDB4QkM4QiwgMHhCQzhDLCAweDA3RTQsDQorICAgIDB4QkM4RCwgMHhCQzhELCAweDMxNUEsIDB4QkM4RSwgMHhCQzhFLCAweDA3RTYsIDB4QkM4RiwgMHhCQzkzLCAweDMxNUIsDQorICAgIDB4QkM5NCwgMHhCQzk1LCAweDA3RTcsIDB4QkM5NiwgMHhCQzk2LCAweDMxNjAsIDB4QkM5NywgMHhCQzk3LCAweDA3RTksDQorICAgIDB4QkM5OCwgMHhCQzk4LCAweDMxNjEsIDB4QkM5OSwgMHhCQzlBLCAweDA3RUEsIDB4QkM5QiwgMHhCQzlGLCAweDMxNjIsDQorICAgIDB4QkNBMCwgMHhCQ0ExLCAweDA3RUMsIDB4QkNBMiwgMHhCQ0EzLCAweDMxNjcsIDB4QkNBNCwgMHhCQ0E0LCAweDA3RUUsDQorICAgIDB4QkNBNSwgMHhCQ0E2LCAweDMxNjksIDB4QkNBNywgMHhCQ0E4LCAweDA3RUYsIDB4QkNBOSwgMHhCQ0FGLCAweDMxNkIsDQorICAgIDB4QkNCMCwgMHhCQ0IxLCAweDA3RjEsIDB4QkNCMiwgMHhCQ0IyLCAweDMxNzIsIDB4QkNCMywgMHhCQ0I1LCAweDA3RjMsDQorICAgIDB4QkNCNiwgMHhCQ0JCLCAweDMxNzMsIDB4QkNCQywgMHhCQ0JELCAweDA3RjYsIDB4QkNCRSwgMHhCQ0JGLCAweDMxNzksDQorICAgIDB4QkNDMCwgMHhCQ0MwLCAweDA3RjgsIDB4QkNDMSwgMHhCQ0MzLCAweDMxN0IsIDB4QkNDNCwgMHhCQ0M0LCAweDA3RjksDQorICAgIDB4QkNDNSwgMHhCQ0NDLCAweDMxN0UsIDB4QkNDRCwgMHhCQ0NELCAweDA3RkEsIDB4QkNDRSwgMHhCQ0NFLCAweDMxODYsDQorICAgIDB4QkNDRiwgMHhCQ0QxLCAweDA3RkIsIDB4QkNEMiwgMHhCQ0Q0LCAweDMxODcsIDB4QkNENSwgMHhCQ0Q1LCAweDA3RkUsDQorICAgIDB4QkNENiwgMHhCQ0Q3LCAweDMxOEEsIDB4QkNEOCwgMHhCQ0Q4LCAweDA3RkYsIDB4QkNEOSwgMHhCQ0RCLCAweDMxOEMsDQorICAgIDB4QkNEQywgMHhCQ0RDLCAweDA4MDAsIDB4QkNERCwgMHhCQ0YzLCAweDMxOEYsIDB4QkNGNCwgMHhCQ0Y2LCAweDA4MDEsDQorICAgIDB4QkNGNywgMHhCQ0Y3LCAweDMxQTYsIDB4QkNGOCwgMHhCQ0Y4LCAweDA4MDQsIDB4QkNGOSwgMHhCQ0ZCLCAweDMxQTcsDQorICAgIDB4QkNGQywgMHhCQ0ZDLCAweDA4MDUsIDB4QkNGRCwgMHhCQ0ZGLCAweDMxQUEsIDB4QkQwMCwgMHhCRDAzLCAweDMxQUQsDQorICAgIDB4QkQwNCwgMHhCRDA1LCAweDA4MDYsIDB4QkQwNiwgMHhCRDA2LCAweDMxQjEsIDB4QkQwNywgMHhCRDA3LCAweDA4MDgsDQorICAgIDB4QkQwOCwgMHhCRDA4LCAweDMxQjIsIDB4QkQwOSwgMHhCRDA5LCAweDA4MDksIDB4QkQwQSwgMHhCRDBGLCAweDMxQjMsDQorICAgIDB4QkQxMCwgMHhCRDEwLCAweDA4MEEsIDB4QkQxMSwgMHhCRDEzLCAweDMxQjksIDB4QkQxNCwgMHhCRDE0LCAweDA4MEIsDQorICAgIDB4QkQxNSwgMHhCRDIzLCAweDMxQkMsIDB4QkQyNCwgMHhCRDI0LCAweDA4MEMsIDB4QkQyNSwgMHhCRDJCLCAweDMxQ0IsDQorICAgIDB4QkQyQywgMHhCRDJDLCAweDA4MEQsIDB4QkQyRCwgMHhCRDNGLCAweDMxRDIsIDB4QkQ0MCwgMHhCRDQwLCAweDA4MEUsDQorICAgIDB4QkQ0MSwgMHhCRDQ3LCAweDMxRTUsIDB4QkQ0OCwgMHhCRDQ5LCAweDA4MEYsIDB4QkQ0QSwgMHhCRDRCLCAweDMxRUMsDQorICAgIDB4QkQ0QywgMHhCRDRDLCAweDA4MTEsIDB4QkQ0RCwgMHhCRDRGLCAweDMxRUUsIDB4QkQ1MCwgMHhCRDUwLCAweDA4MTIsDQorICAgIDB4QkQ1MSwgMHhCRDU3LCAweDMxRjEsIDB4QkQ1OCwgMHhCRDU5LCAweDA4MTMsIDB4QkQ1QSwgMHhCRDYzLCAweDMxRjgsDQorICAgIDB4QkQ2NCwgMHhCRDY0LCAweDA4MTUsIDB4QkQ2NSwgMHhCRDY3LCAweDMyMDIsIDB4QkQ2OCwgMHhCRDY4LCAweDA4MTYsDQorICAgIDB4QkQ2OSwgMHhCRDdGLCAweDMyMDUsIDB4QkQ4MCwgMHhCRDgxLCAweDA4MTcsIDB4QkQ4MiwgMHhCRDgzLCAweDMyMUMsDQorICAgIDB4QkQ4NCwgMHhCRDg0LCAweDA4MTksIDB4QkQ4NSwgMHhCRDg2LCAweDMyMUUsIDB4QkQ4NywgMHhCRDhBLCAweDA4MUEsDQorICAgIDB4QkQ4QiwgMHhCRDhGLCAweDMyMjAsIDB4QkQ5MCwgMHhCRDkxLCAweDA4MUUsIDB4QkQ5MiwgMHhCRDkyLCAweDMyMjUsDQorICAgIDB4QkQ5MywgMHhCRDkzLCAweDA4MjAsIDB4QkQ5NCwgMHhCRDk0LCAweDMyMjYsIDB4QkQ5NSwgMHhCRDk1LCAweDA4MjEsDQorICAgIDB4QkQ5NiwgMHhCRDk4LCAweDMyMjcsIDB4QkQ5OSwgMHhCRDlBLCAweDA4MjIsIDB4QkQ5QiwgMHhCRDlCLCAweDMyMkEsDQorICAgIDB4QkQ5QywgMHhCRDlDLCAweDA4MjQsIDB4QkQ5RCwgMHhCREEzLCAweDMyMkIsIDB4QkRBNCwgMHhCREE0LCAweDA4MjUsDQorICAgIDB4QkRBNSwgMHhCREFGLCAweDMyMzIsIDB4QkRCMCwgMHhCREIwLCAweDA4MjYsIDB4QkRCMSwgMHhCREI3LCAweDMyM0QsDQorICAgIDB4QkRCOCwgMHhCREI4LCAweDA4MjcsIDB4QkRCOSwgMHhCREQzLCAweDMyNDQsIDB4QkRENCwgMHhCREQ1LCAweDA4MjgsDQorICAgIDB4QkRENiwgMHhCREQ3LCAweDMyNUYsIDB4QkREOCwgMHhCREQ4LCAweDA4MkEsIDB4QkREOSwgMHhCRERCLCAweDMyNjEsDQorICAgIDB4QkREQywgMHhCRERDLCAweDA4MkIsIDB4QkRERCwgMHhCREU4LCAweDMyNjQsIDB4QkRFOSwgMHhCREU5LCAweDA4MkMsDQorICAgIDB4QkRFQSwgMHhCREVGLCAweDMyNzAsIDB4QkRGMCwgMHhCREYwLCAweDA4MkQsIDB4QkRGMSwgMHhCREYzLCAweDMyNzYsDQorICAgIDB4QkRGNCwgMHhCREY0LCAweDA4MkUsIDB4QkRGNSwgMHhCREY3LCAweDMyNzksIDB4QkRGOCwgMHhCREY4LCAweDA4MkYsDQorICAgIDB4QkRGOSwgMHhCREZGLCAweDMyN0MsIDB4QkUwMCwgMHhCRTAwLCAweDA4MzAsIDB4QkUwMSwgMHhCRTAyLCAweDMyODMsDQorICAgIDB4QkUwMywgMHhCRTAzLCAweDA4MzEsIDB4QkUwNCwgMHhCRTA0LCAweDMyODUsIDB4QkUwNSwgMHhCRTA1LCAweDA4MzIsDQorICAgIDB4QkUwNiwgMHhCRTBCLCAweDMyODYsIDB4QkUwQywgMHhCRTBELCAweDA4MzMsIDB4QkUwRSwgMHhCRTBGLCAweDMyOEMsDQorICAgIDB4QkUxMCwgMHhCRTEwLCAweDA4MzUsIDB4QkUxMSwgMHhCRTEzLCAweDMyOEUsIDB4QkUxNCwgMHhCRTE0LCAweDA4MzYsDQorICAgIDB4QkUxNSwgMHhCRTFCLCAweDMyOTEsIDB4QkUxQywgMHhCRTFELCAweDA4MzcsIDB4QkUxRSwgMHhCRTFFLCAweDMyOTgsDQorICAgIDB4QkUxRiwgMHhCRTFGLCAweDA4MzksIDB4QkUyMCwgMHhCRTQzLCAweDMyOTksIDB4QkU0NCwgMHhCRTQ1LCAweDA4M0EsDQorICAgIDB4QkU0NiwgMHhCRTQ3LCAweDMyQkQsIDB4QkU0OCwgMHhCRTQ4LCAweDA4M0MsIDB4QkU0OSwgMHhCRTRCLCAweDMyQkYsDQorICAgIDB4QkU0QywgMHhCRTRDLCAweDA4M0QsIDB4QkU0RCwgMHhCRTRELCAweDMyQzIsIDB4QkU0RSwgMHhCRTRFLCAweDA4M0UsDQorICAgIDB4QkU0RiwgMHhCRTUzLCAweDMyQzMsIDB4QkU1NCwgMHhCRTU1LCAweDA4M0YsIDB4QkU1NiwgMHhCRTU2LCAweDMyQzgsDQorICAgIDB4QkU1NywgMHhCRTU3LCAweDA4NDEsIDB4QkU1OCwgMHhCRTU4LCAweDMyQzksIDB4QkU1OSwgMHhCRTVCLCAweDA4NDIsDQorICAgIDB4QkU1QywgMHhCRTVGLCAweDMyQ0EsIDB4QkU2MCwgMHhCRTYxLCAweDA4NDUsIDB4QkU2MiwgMHhCRTYzLCAweDMyQ0UsDQorICAgIDB4QkU2NCwgMHhCRTY0LCAweDA4NDcsIDB4QkU2NSwgMHhCRTY3LCAweDMyRDAsIDB4QkU2OCwgMHhCRTY4LCAweDA4NDgsDQorICAgIDB4QkU2OSwgMHhCRTY5LCAweDMyRDMsIDB4QkU2QSwgMHhCRTZBLCAweDA4NDksIDB4QkU2QiwgMHhCRTZGLCAweDMyRDQsDQorICAgIDB4QkU3MCwgMHhCRTcxLCAweDA4NEEsIDB4QkU3MiwgMHhCRTcyLCAweDMyRDksIDB4QkU3MywgMHhCRTc1LCAweDA4NEMsDQorICAgIDB4QkU3NiwgMHhCRTdBLCAweDMyREEsIDB4QkU3QiwgMHhCRTdELCAweDA4NEYsIDB4QkU3RSwgMHhCRTdGLCAweDMyREYsDQorICAgIDB4QkU4MCwgMHhCRTgwLCAweDA4NTIsIDB4QkU4MSwgMHhCRTgzLCAweDMyRTEsIDB4QkU4NCwgMHhCRTg0LCAweDA4NTMsDQorICAgIDB4QkU4NSwgMHhCRThCLCAweDMyRTQsIDB4QkU4QywgMHhCRThELCAweDA4NTQsIDB4QkU4RSwgMHhCRThFLCAweDMyRUIsDQorICAgIDB4QkU4RiwgMHhCRTkxLCAweDA4NTYsIDB4QkU5MiwgMHhCRTk3LCAweDMyRUMsIDB4QkU5OCwgMHhCRTk5LCAweDA4NTksDQorICAgIDB4QkU5QSwgMHhCRUE3LCAweDMyRjIsIDB4QkVBOCwgMHhCRUE4LCAweDA4NUIsIDB4QkVBOSwgMHhCRUNGLCAweDMzMDAsDQorICAgIDB4QkVEMCwgMHhCRUQxLCAweDA4NUMsIDB4QkVEMiwgMHhCRUQzLCAweDMzMjcsIDB4QkVENCwgMHhCRUQ0LCAweDA4NUUsDQorICAgIDB4QkVENSwgMHhCRUQ2LCAweDMzMjksIDB4QkVENywgMHhCRUQ4LCAweDA4NUYsIDB4QkVEOSwgMHhCRURGLCAweDMzMkIsDQorICAgIDB4QkVFMCwgMHhCRUUwLCAweDA4NjEsIDB4QkVFMSwgMHhCRUUyLCAweDMzMzIsIDB4QkVFMywgMHhCRUU1LCAweDA4NjIsDQorICAgIDB4QkVFNiwgMHhCRUVCLCAweDMzMzQsIDB4QkVFQywgMHhCRUVDLCAweDA4NjUsIDB4QkVFRCwgMHhCRUZGLCAweDMzM0EsDQorICAgIDB4QkYwMCwgMHhCRjAwLCAweDMzNEQsIDB4QkYwMSwgMHhCRjAxLCAweDA4NjYsIDB4QkYwMiwgMHhCRjA3LCAweDMzNEUsDQorICAgIDB4QkYwOCwgMHhCRjA5LCAweDA4NjcsIDB4QkYwQSwgMHhCRjE3LCAweDMzNTQsIDB4QkYxOCwgMHhCRjE5LCAweDA4NjksDQorICAgIDB4QkYxQSwgMHhCRjFBLCAweDMzNjIsIDB4QkYxQiwgMHhCRjFELCAweDA4NkIsIDB4QkYxRSwgMHhCRjNGLCAweDMzNjMsDQorICAgIDB4QkY0MCwgMHhCRjQxLCAweDA4NkUsIDB4QkY0MiwgMHhCRjQzLCAweDMzODUsIDB4QkY0NCwgMHhCRjQ0LCAweDA4NzAsDQorICAgIDB4QkY0NSwgMHhCRjQ3LCAweDMzODcsIDB4QkY0OCwgMHhCRjQ4LCAweDA4NzEsIDB4QkY0OSwgMHhCRjRGLCAweDMzOEEsDQorICAgIDB4QkY1MCwgMHhCRjUxLCAweDA4NzIsIDB4QkY1MiwgMHhCRjU0LCAweDMzOTEsIDB4QkY1NSwgMHhCRjU1LCAweDA4NzQsDQorICAgIDB4QkY1NiwgMHhCRjkzLCAweDMzOTQsIDB4QkY5NCwgMHhCRjk0LCAweDA4NzUsIDB4QkY5NSwgMHhCRkFGLCAweDMzRDIsDQorICAgIDB4QkZCMCwgMHhCRkIwLCAweDA4NzYsIDB4QkZCMSwgMHhCRkM0LCAweDMzRUQsIDB4QkZDNSwgMHhCRkM1LCAweDA4NzcsDQorICAgIDB4QkZDNiwgMHhCRkNCLCAweDM0MDEsIDB4QkZDQywgMHhCRkNELCAweDA4NzgsIDB4QkZDRSwgMHhCRkNGLCAweDM0MDcsDQorICAgIDB4QkZEMCwgMHhCRkQwLCAweDA4N0EsIDB4QkZEMSwgMHhCRkQzLCAweDM0MDksIDB4QkZENCwgMHhCRkQ0LCAweDA4N0IsDQorICAgIDB4QkZENSwgMHhCRkRCLCAweDM0MEMsIDB4QkZEQywgMHhCRkRDLCAweDA4N0MsIDB4QkZERCwgMHhCRkRFLCAweDM0MTMsDQorICAgIDB4QkZERiwgMHhCRkRGLCAweDA4N0QsIDB4QkZFMCwgMHhCRkUwLCAweDM0MTUsIDB4QkZFMSwgMHhCRkUxLCAweDA4N0UsDQorICAgIDB4QkZFMiwgMHhCRkZGLCAweDM0MTYsIDB4QzAwMCwgMHhDMDNCLCAweDM0MzQsIDB4QzAzQywgMHhDMDNDLCAweDA4N0YsDQorICAgIDB4QzAzRCwgMHhDMDUwLCAweDM0NzAsIDB4QzA1MSwgMHhDMDUxLCAweDA4ODAsIDB4QzA1MiwgMHhDMDU3LCAweDM0ODQsDQorICAgIDB4QzA1OCwgMHhDMDU4LCAweDA4ODEsIDB4QzA1OSwgMHhDMDVCLCAweDM0OEEsIDB4QzA1QywgMHhDMDVDLCAweDA4ODIsDQorICAgIDB4QzA1RCwgMHhDMDVGLCAweDM0OEQsIDB4QzA2MCwgMHhDMDYwLCAweDA4ODMsIDB4QzA2MSwgMHhDMDY3LCAweDM0OTAsDQorICAgIDB4QzA2OCwgMHhDMDY5LCAweDA4ODQsIDB4QzA2QSwgMHhDMDhGLCAweDM0OTcsIDB4QzA5MCwgMHhDMDkxLCAweDA4ODYsDQorICAgIDB4QzA5MiwgMHhDMDkzLCAweDM0QkQsIDB4QzA5NCwgMHhDMDk0LCAweDA4ODgsIDB4QzA5NSwgMHhDMDk3LCAweDM0QkYsDQorICAgIDB4QzA5OCwgMHhDMDk4LCAweDA4ODksIDB4QzA5OSwgMHhDMDlGLCAweDM0QzIsIDB4QzBBMCwgMHhDMEExLCAweDA4OEEsDQorICAgIDB4QzBBMiwgMHhDMEEyLCAweDM0QzksIDB4QzBBMywgMHhDMEEzLCAweDA4OEMsIDB4QzBBNCwgMHhDMEE0LCAweDM0Q0EsDQorICAgIDB4QzBBNSwgMHhDMEE1LCAweDA4OEQsIDB4QzBBNiwgMHhDMEFCLCAweDM0Q0IsIDB4QzBBQywgMHhDMEFELCAweDA4OEUsDQorICAgIDB4QzBBRSwgMHhDMEFFLCAweDM0RDEsIDB4QzBBRiwgMHhDMEIwLCAweDA4OTAsIDB4QzBCMSwgMHhDMEIyLCAweDM0RDIsDQorICAgIDB4QzBCMywgMHhDMEI2LCAweDA4OTIsIDB4QzBCNywgMHhDMEJCLCAweDM0RDQsIDB4QzBCQywgMHhDMEJELCAweDA4OTYsDQorICAgIDB4QzBCRSwgMHhDMEJFLCAweDM0RDksIDB4QzBCRiwgMHhDMEMxLCAweDA4OTgsIDB4QzBDMiwgMHhDMEM0LCAweDM0REEsDQorICAgIDB4QzBDNSwgMHhDMEM1LCAweDA4OUIsIDB4QzBDNiwgMHhDMEM3LCAweDM0REQsIDB4QzBDOCwgMHhDMEM5LCAweDA4OUMsDQorICAgIDB4QzBDQSwgMHhDMENCLCAweDM0REYsIDB4QzBDQywgMHhDMENDLCAweDA4OUUsIDB4QzBDRCwgMHhDMENGLCAweDM0RTEsDQorICAgIDB4QzBEMCwgMHhDMEQwLCAweDA4OUYsIDB4QzBEMSwgMHhDMEQ3LCAweDM0RTQsIDB4QzBEOCwgMHhDMEQ5LCAweDA4QTAsDQorICAgIDB4QzBEQSwgMHhDMERBLCAweDM0RUIsIDB4QzBEQiwgMHhDMERELCAweDA4QTIsIDB4QzBERSwgMHhDMEUzLCAweDM0RUMsDQorICAgIDB4QzBFNCwgMHhDMEU1LCAweDA4QTUsIDB4QzBFNiwgMHhDMEU3LCAweDM0RjIsIDB4QzBFOCwgMHhDMEU4LCAweDA4QTcsDQorICAgIDB4QzBFOSwgMHhDMEVCLCAweDM0RjQsIDB4QzBFQywgMHhDMEVDLCAweDA4QTgsIDB4QzBFRCwgMHhDMEYzLCAweDM0RjcsDQorICAgIDB4QzBGNCwgMHhDMEY1LCAweDA4QTksIDB4QzBGNiwgMHhDMEY2LCAweDM0RkUsIDB4QzBGNywgMHhDMEY3LCAweDA4QUIsDQorICAgIDB4QzBGOCwgMHhDMEY4LCAweDM0RkYsIDB4QzBGOSwgMHhDMEY5LCAweDA4QUMsIDB4QzBGQSwgMHhDMEZGLCAweDM1MDAsDQorICAgIDB4QzEwMCwgMHhDMTAwLCAweDA4QUQsIDB4QzEwMSwgMHhDMTAzLCAweDM1MDYsIDB4QzEwNCwgMHhDMTA0LCAweDA4QUUsDQorICAgIDB4QzEwNSwgMHhDMTA3LCAweDM1MDksIDB4QzEwOCwgMHhDMTA4LCAweDA4QUYsIDB4QzEwOSwgMHhDMTBGLCAweDM1MEMsDQorICAgIDB4QzExMCwgMHhDMTEwLCAweDA4QjAsIDB4QzExMSwgMHhDMTE0LCAweDM1MTMsIDB4QzExNSwgMHhDMTE1LCAweDA4QjEsDQorICAgIDB4QzExNiwgMHhDMTFCLCAweDM1MTcsIDB4QzExQywgMHhDMTIwLCAweDA4QjIsIDB4QzEyMSwgMHhDMTIyLCAweDM1MUQsDQorICAgIDB4QzEyMywgMHhDMTI0LCAweDA4QjcsIDB4QzEyNSwgMHhDMTI1LCAweDM1MUYsIDB4QzEyNiwgMHhDMTI3LCAweDA4QjksDQorICAgIDB4QzEyOCwgMHhDMTJCLCAweDM1MjAsIDB4QzEyQywgMHhDMTJELCAweDA4QkIsIDB4QzEyRSwgMHhDMTJFLCAweDM1MjQsDQorICAgIDB4QzEyRiwgMHhDMTMxLCAweDA4QkQsIDB4QzEzMiwgMHhDMTM1LCAweDM1MjUsIDB4QzEzNiwgMHhDMTM2LCAweDA4QzAsDQorICAgIDB4QzEzNywgMHhDMTM3LCAweDM1MjksIDB4QzEzOCwgMHhDMTM5LCAweDA4QzEsIDB4QzEzQSwgMHhDMTNCLCAweDM1MkEsDQorICAgIDB4QzEzQywgMHhDMTNDLCAweDA4QzMsIDB4QzEzRCwgMHhDMTNGLCAweDM1MkMsIDB4QzE0MCwgMHhDMTQwLCAweDA4QzQsDQorICAgIDB4QzE0MSwgMHhDMTQ3LCAweDM1MkYsIDB4QzE0OCwgMHhDMTQ5LCAweDA4QzUsIDB4QzE0QSwgMHhDMTRBLCAweDM1MzYsDQorICAgIDB4QzE0QiwgMHhDMTRELCAweDA4QzcsIDB4QzE0RSwgMHhDMTUzLCAweDM1MzcsIDB4QzE1NCwgMHhDMTU1LCAweDA4Q0EsDQorICAgIDB4QzE1NiwgMHhDMTU3LCAweDM1M0QsIDB4QzE1OCwgMHhDMTU4LCAweDA4Q0MsIDB4QzE1OSwgMHhDMTVCLCAweDM1M0YsDQorICAgIDB4QzE1QywgMHhDMTVDLCAweDA4Q0QsIDB4QzE1RCwgMHhDMTYzLCAweDM1NDIsIDB4QzE2NCwgMHhDMTY1LCAweDA4Q0UsDQorICAgIDB4QzE2NiwgMHhDMTY2LCAweDM1NDksIDB4QzE2NywgMHhDMTY5LCAweDA4RDAsIDB4QzE2QSwgMHhDMTZGLCAweDM1NEEsDQorICAgIDB4QzE3MCwgMHhDMTcwLCAweDA4RDMsIDB4QzE3MSwgMHhDMTczLCAweDM1NTAsIDB4QzE3NCwgMHhDMTc0LCAweDA4RDQsDQorICAgIDB4QzE3NSwgMHhDMTc3LCAweDM1NTMsIDB4QzE3OCwgMHhDMTc4LCAweDA4RDUsIDB4QzE3OSwgMHhDMTg0LCAweDM1NTYsDQorICAgIDB4QzE4NSwgMHhDMTg1LCAweDA4RDYsIDB4QzE4NiwgMHhDMThCLCAweDM1NjIsIDB4QzE4QywgMHhDMThFLCAweDA4RDcsDQorICAgIDB4QzE4RiwgMHhDMThGLCAweDM1NjgsIDB4QzE5MCwgMHhDMTkwLCAweDA4REEsIDB4QzE5MSwgMHhDMTkzLCAweDM1NjksDQorICAgIDB4QzE5NCwgMHhDMTk0LCAweDA4REIsIDB4QzE5NSwgMHhDMTk1LCAweDM1NkMsIDB4QzE5NiwgMHhDMTk2LCAweDA4REMsDQorICAgIDB4QzE5NywgMHhDMTlCLCAweDM1NkQsIDB4QzE5QywgMHhDMTlELCAweDA4REQsIDB4QzE5RSwgMHhDMTlFLCAweDM1NzIsDQorICAgIDB4QzE5RiwgMHhDMTlGLCAweDA4REYsIDB4QzFBMCwgMHhDMUEwLCAweDM1NzMsIDB4QzFBMSwgMHhDMUExLCAweDA4RTAsDQorICAgIDB4QzFBMiwgMHhDMUE0LCAweDM1NzQsIDB4QzFBNSwgMHhDMUE1LCAweDA4RTEsIDB4QzFBNiwgMHhDMUE3LCAweDM1NzcsDQorICAgIDB4QzFBOCwgMHhDMUE5LCAweDA4RTIsIDB4QzFBQSwgMHhDMUFCLCAweDM1NzksIDB4QzFBQywgMHhDMUFDLCAweDA4RTQsDQorICAgIDB4QzFBRCwgMHhDMUFGLCAweDM1N0IsIDB4QzFCMCwgMHhDMUIwLCAweDA4RTUsIDB4QzFCMSwgMHhDMUJDLCAweDM1N0UsDQorICAgIDB4QzFCRCwgMHhDMUJELCAweDA4RTYsIDB4QzFCRSwgMHhDMUMzLCAweDM1OEEsIDB4QzFDNCwgMHhDMUM0LCAweDA4RTcsDQorICAgIDB4QzFDNSwgMHhDMUM3LCAweDM1OTAsIDB4QzFDOCwgMHhDMUM4LCAweDA4RTgsIDB4QzFDOSwgMHhDMUNCLCAweDM1OTMsDQorICAgIDB4QzFDQywgMHhDMUNDLCAweDA4RTksIDB4QzFDRCwgMHhDMUQzLCAweDM1OTYsIDB4QzFENCwgMHhDMUQ0LCAweDA4RUEsDQorICAgIDB4QzFENSwgMHhDMUQ2LCAweDM1OUQsIDB4QzFENywgMHhDMUQ4LCAweDA4RUIsIDB4QzFEOSwgMHhDMURGLCAweDM1OUYsDQorICAgIDB4QzFFMCwgMHhDMUUwLCAweDA4RUQsIDB4QzFFMSwgMHhDMUUzLCAweDM1QTYsIDB4QzFFNCwgMHhDMUU0LCAweDA4RUUsDQorICAgIDB4QzFFNSwgMHhDMUU3LCAweDM1QTksIDB4QzFFOCwgMHhDMUU4LCAweDA4RUYsIDB4QzFFOSwgMHhDMUVGLCAweDM1QUMsDQorICAgIDB4QzFGMCwgMHhDMUYxLCAweDA4RjAsIDB4QzFGMiwgMHhDMUYyLCAweDM1QjMsIDB4QzFGMywgMHhDMUYzLCAweDA4RjIsDQorICAgIDB4QzFGNCwgMHhDMUZCLCAweDM1QjQsIDB4QzFGQywgMHhDMUZELCAweDA4RjMsIDB4QzFGRSwgMHhDMUZGLCAweDM1QkMsDQorICAgIDB4QzIwMCwgMHhDMjAwLCAweDA4RjUsIDB4QzIwMSwgMHhDMjAzLCAweDM1QkUsIDB4QzIwNCwgMHhDMjA0LCAweDA4RjYsDQorICAgIDB4QzIwNSwgMHhDMjBCLCAweDM1QzEsIDB4QzIwQywgMHhDMjBELCAweDA4RjcsIDB4QzIwRSwgMHhDMjBFLCAweDM1QzgsDQorICAgIDB4QzIwRiwgMHhDMjBGLCAweDA4RjksIDB4QzIxMCwgMHhDMjEwLCAweDM1QzksIDB4QzIxMSwgMHhDMjExLCAweDA4RkEsDQorICAgIDB4QzIxMiwgMHhDMjE3LCAweDM1Q0EsIDB4QzIxOCwgMHhDMjE5LCAweDA4RkIsIDB4QzIxQSwgMHhDMjFCLCAweDM1RDAsDQorICAgIDB4QzIxQywgMHhDMjFDLCAweDA4RkQsIDB4QzIxRCwgMHhDMjFFLCAweDM1RDIsIDB4QzIxRiwgMHhDMjIwLCAweDA4RkUsDQorICAgIDB4QzIyMSwgMHhDMjI3LCAweDM1RDQsIDB4QzIyOCwgMHhDMjI5LCAweDA5MDAsIDB4QzIyQSwgMHhDMjJBLCAweDM1REIsDQorICAgIDB4QzIyQiwgMHhDMjJCLCAweDA5MDIsIDB4QzIyQywgMHhDMjJDLCAweDM1REMsIDB4QzIyRCwgMHhDMjJELCAweDA5MDMsDQorICAgIDB4QzIyRSwgMHhDMjJFLCAweDM1REQsIDB4QzIyRiwgMHhDMjJGLCAweDA5MDQsIDB4QzIzMCwgMHhDMjMwLCAweDM1REUsDQorICAgIDB4QzIzMSwgMHhDMjMyLCAweDA5MDUsIDB4QzIzMywgMHhDMjMzLCAweDM1REYsIDB4QzIzNCwgMHhDMjM0LCAweDA5MDcsDQorICAgIDB4QzIzNSwgMHhDMjQ3LCAweDM1RTAsIDB4QzI0OCwgMHhDMjQ4LCAweDA5MDgsIDB4QzI0OSwgMHhDMjRGLCAweDM1RjMsDQorICAgIDB4QzI1MCwgMHhDMjUxLCAweDA5MDksIDB4QzI1MiwgMHhDMjUzLCAweDM1RkEsIDB4QzI1NCwgMHhDMjU0LCAweDA5MEIsDQorICAgIDB4QzI1NSwgMHhDMjU3LCAweDM1RkMsIDB4QzI1OCwgMHhDMjU4LCAweDA5MEMsIDB4QzI1OSwgMHhDMjVGLCAweDM1RkYsDQorICAgIDB4QzI2MCwgMHhDMjYwLCAweDA5MEQsIDB4QzI2MSwgMHhDMjY0LCAweDM2MDYsIDB4QzI2NSwgMHhDMjY1LCAweDA5MEUsDQorICAgIDB4QzI2NiwgMHhDMjZCLCAweDM2MEEsIDB4QzI2QywgMHhDMjZELCAweDA5MEYsIDB4QzI2RSwgMHhDMjZGLCAweDM2MTAsDQorICAgIDB4QzI3MCwgMHhDMjcwLCAweDA5MTEsIDB4QzI3MSwgMHhDMjczLCAweDM2MTIsIDB4QzI3NCwgMHhDMjc0LCAweDA5MTIsDQorICAgIDB4QzI3NSwgMHhDMjdCLCAweDM2MTUsIDB4QzI3QywgMHhDMjdELCAweDA5MTMsIDB4QzI3RSwgMHhDMjdFLCAweDM2MUMsDQorICAgIDB4QzI3RiwgMHhDMjdGLCAweDA5MTUsIDB4QzI4MCwgMHhDMjgwLCAweDM2MUQsIDB4QzI4MSwgMHhDMjgxLCAweDA5MTYsDQorICAgIDB4QzI4MiwgMHhDMjg3LCAweDM2MUUsIDB4QzI4OCwgMHhDMjg5LCAweDA5MTcsIDB4QzI4QSwgMHhDMjhGLCAweDM2MjQsDQorICAgIDB4QzI5MCwgMHhDMjkwLCAweDA5MTksIDB4QzI5MSwgMHhDMjk3LCAweDM2MkEsIDB4QzI5OCwgMHhDMjk4LCAweDA5MUEsDQorICAgIDB4QzI5OSwgMHhDMjlBLCAweDM2MzEsIDB4QzI5QiwgMHhDMjlCLCAweDA5MUIsIDB4QzI5QywgMHhDMjlDLCAweDM2MzMsDQorICAgIDB4QzI5RCwgMHhDMjlELCAweDA5MUMsIDB4QzI5RSwgMHhDMkEzLCAweDM2MzQsIDB4QzJBNCwgMHhDMkE1LCAweDA5MUQsDQorICAgIDB4QzJBNiwgMHhDMkE3LCAweDM2M0EsIDB4QzJBOCwgMHhDMkE4LCAweDA5MUYsIDB4QzJBOSwgMHhDMkFCLCAweDM2M0MsDQorICAgIDB4QzJBQywgMHhDMkFELCAweDA5MjAsIDB4QzJBRSwgMHhDMkIzLCAweDM2M0YsIDB4QzJCNCwgMHhDMkI1LCAweDA5MjIsDQorICAgIDB4QzJCNiwgMHhDMkI2LCAweDM2NDUsIDB4QzJCNywgMHhDMkI3LCAweDA5MjQsIDB4QzJCOCwgMHhDMkI4LCAweDM2NDYsDQorICAgIDB4QzJCOSwgMHhDMkI5LCAweDA5MjUsIDB4QzJCQSwgMHhDMkRCLCAweDM2NDcsIDB4QzJEQywgMHhDMkRELCAweDA5MjYsDQorICAgIDB4QzJERSwgMHhDMkRGLCAweDM2NjksIDB4QzJFMCwgMHhDMkUwLCAweDA5MjgsIDB4QzJFMSwgMHhDMkUyLCAweDM2NkIsDQorICAgIDB4QzJFMywgMHhDMkU0LCAweDA5MjksIDB4QzJFNSwgMHhDMkVBLCAweDM2NkQsIDB4QzJFQiwgMHhDMkVELCAweDA5MkIsDQorICAgIDB4QzJFRSwgMHhDMkVFLCAweDM2NzMsIDB4QzJFRiwgMHhDMkVGLCAweDA5MkUsIDB4QzJGMCwgMHhDMkYwLCAweDM2NzQsDQorICAgIDB4QzJGMSwgMHhDMkYxLCAweDA5MkYsIDB4QzJGMiwgMHhDMkY1LCAweDM2NzUsIDB4QzJGNiwgMHhDMkY2LCAweDA5MzAsDQorICAgIDB4QzJGNywgMHhDMkY3LCAweDM2NzksIDB4QzJGOCwgMHhDMkY5LCAweDA5MzEsIDB4QzJGQSwgMHhDMkZBLCAweDM2N0EsDQorICAgIDB4QzJGQiwgMHhDMkZDLCAweDA5MzMsIDB4QzJGRCwgMHhDMkZGLCAweDM2N0IsIDB4QzMwMCwgMHhDMzAwLCAweDA5MzUsDQorICAgIDB4QzMwMSwgMHhDMzA3LCAweDM2N0UsIDB4QzMwOCwgMHhDMzA5LCAweDA5MzYsIDB4QzMwQSwgMHhDMzBCLCAweDM2ODUsDQorICAgIDB4QzMwQywgMHhDMzBELCAweDA5MzgsIDB4QzMwRSwgMHhDMzEyLCAweDM2ODcsIDB4QzMxMywgMHhDMzE1LCAweDA5M0EsDQorICAgIDB4QzMxNiwgMHhDMzE3LCAweDM2OEMsIDB4QzMxOCwgMHhDMzE4LCAweDA5M0QsIDB4QzMxOSwgMHhDMzFCLCAweDM2OEUsDQorICAgIDB4QzMxQywgMHhDMzFDLCAweDA5M0UsIDB4QzMxRCwgMHhDMzIzLCAweDM2OTEsIDB4QzMyNCwgMHhDMzI1LCAweDA5M0YsDQorICAgIDB4QzMyNiwgMHhDMzI3LCAweDM2OTgsIDB4QzMyOCwgMHhDMzI5LCAweDA5NDEsIDB4QzMyQSwgMHhDMzQ0LCAweDM2OUEsDQorICAgIDB4QzM0NSwgMHhDMzQ1LCAweDA5NDMsIDB4QzM0NiwgMHhDMzY3LCAweDM2QjUsIDB4QzM2OCwgMHhDMzY5LCAweDA5NDQsDQorICAgIDB4QzM2QSwgMHhDMzZCLCAweDM2RDcsIDB4QzM2QywgMHhDMzZDLCAweDA5NDYsIDB4QzM2RCwgMHhDMzZGLCAweDM2RDksDQorICAgIDB4QzM3MCwgMHhDMzcwLCAweDA5NDcsIDB4QzM3MSwgMHhDMzcxLCAweDM2REMsIDB4QzM3MiwgMHhDMzcyLCAweDA5NDgsDQorICAgIDB4QzM3MywgMHhDMzc3LCAweDM2REQsIDB4QzM3OCwgMHhDMzc5LCAweDA5NDksIDB4QzM3QSwgMHhDMzdCLCAweDM2RTIsDQorICAgIDB4QzM3QywgMHhDMzdELCAweDA5NEIsIDB4QzM3RSwgMHhDMzgzLCAweDM2RTQsIDB4QzM4NCwgMHhDMzg0LCAweDA5NEQsDQorICAgIDB4QzM4NSwgMHhDMzg3LCAweDM2RUEsIDB4QzM4OCwgMHhDMzg4LCAweDA5NEUsIDB4QzM4OSwgMHhDMzhCLCAweDM2RUQsDQorICAgIDB4QzM4QywgMHhDMzhDLCAweDA5NEYsIDB4QzM4RCwgMHhDM0JGLCAweDM2RjAsIDB4QzNDMCwgMHhDM0MwLCAweDA5NTAsDQorICAgIDB4QzNDMSwgMHhDM0Q3LCAweDM3MjMsIDB4QzNEOCwgMHhDM0Q5LCAweDA5NTEsIDB4QzNEQSwgMHhDM0RCLCAweDM3M0EsDQorICAgIDB4QzNEQywgMHhDM0RDLCAweDA5NTMsIDB4QzNERCwgMHhDM0RFLCAweDM3M0MsIDB4QzNERiwgMHhDM0UwLCAweDA5NTQsDQorICAgIDB4QzNFMSwgMHhDM0UxLCAweDM3M0UsIDB4QzNFMiwgMHhDM0UyLCAweDA5NTYsIDB4QzNFMywgMHhDM0U3LCAweDM3M0YsDQorICAgIDB4QzNFOCwgMHhDM0U5LCAweDA5NTcsIDB4QzNFQSwgMHhDM0VDLCAweDM3NDQsIDB4QzNFRCwgMHhDM0VELCAweDA5NTksDQorICAgIDB4QzNFRSwgMHhDM0YzLCAweDM3NDcsIDB4QzNGNCwgMHhDM0Y1LCAweDA5NUEsIDB4QzNGNiwgMHhDM0Y3LCAweDM3NEQsDQorICAgIDB4QzNGOCwgMHhDM0Y4LCAweDA5NUMsIDB4QzNGOSwgMHhDM0ZGLCAweDM3NEYsIDB4QzQwMCwgMHhDNDA3LCAweDM3NTYsDQorICAgIDB4QzQwOCwgMHhDNDA4LCAweDA5NUQsIDB4QzQwOSwgMHhDNDBGLCAweDM3NUUsIDB4QzQxMCwgMHhDNDEwLCAweDA5NUUsDQorICAgIDB4QzQxMSwgMHhDNDIzLCAweDM3NjUsIDB4QzQyNCwgMHhDNDI0LCAweDA5NUYsIDB4QzQyNSwgMHhDNDJCLCAweDM3NzgsDQorICAgIDB4QzQyQywgMHhDNDJDLCAweDA5NjAsIDB4QzQyRCwgMHhDNDJGLCAweDM3N0YsIDB4QzQzMCwgMHhDNDMwLCAweDA5NjEsDQorICAgIDB4QzQzMSwgMHhDNDMzLCAweDM3ODIsIDB4QzQzNCwgMHhDNDM0LCAweDA5NjIsIDB4QzQzNSwgMHhDNDNCLCAweDM3ODUsDQorICAgIDB4QzQzQywgMHhDNDNELCAweDA5NjMsIDB4QzQzRSwgMHhDNDQ3LCAweDM3OEMsIDB4QzQ0OCwgMHhDNDQ4LCAweDA5NjUsDQorICAgIDB4QzQ0OSwgMHhDNDYzLCAweDM3OTYsIDB4QzQ2NCwgMHhDNDY1LCAweDA5NjYsIDB4QzQ2NiwgMHhDNDY3LCAweDM3QjEsDQorICAgIDB4QzQ2OCwgMHhDNDY4LCAweDA5NjgsIDB4QzQ2OSwgMHhDNDZCLCAweDM3QjMsIDB4QzQ2QywgMHhDNDZDLCAweDA5NjksDQorICAgIDB4QzQ2RCwgMHhDNDczLCAweDM3QjYsIDB4QzQ3NCwgMHhDNDc1LCAweDA5NkEsIDB4QzQ3NiwgMHhDNDc4LCAweDM3QkQsDQorICAgIDB4QzQ3OSwgMHhDNDc5LCAweDA5NkMsIDB4QzQ3QSwgMHhDNDdGLCAweDM3QzAsIDB4QzQ4MCwgMHhDNDgwLCAweDA5NkQsDQorICAgIDB4QzQ4MSwgMHhDNDkzLCAweDM3QzYsIDB4QzQ5NCwgMHhDNDk0LCAweDA5NkUsIDB4QzQ5NSwgMHhDNDlCLCAweDM3RDksDQorICAgIDB4QzQ5QywgMHhDNDlDLCAweDA5NkYsIDB4QzQ5RCwgMHhDNEI3LCAweDM3RTAsIDB4QzRCOCwgMHhDNEI4LCAweDA5NzAsDQorICAgIDB4QzRCOSwgMHhDNEJCLCAweDM3RkIsIDB4QzRCQywgMHhDNEJDLCAweDA5NzEsIDB4QzRCRCwgMHhDNEU4LCAweDM3RkUsDQorICAgIDB4QzRFOSwgMHhDNEU5LCAweDA5NzIsIDB4QzRFQSwgMHhDNEVGLCAweDM4MkEsIDB4QzRGMCwgMHhDNEYxLCAweDA5NzMsDQorICAgIDB4QzRGMiwgMHhDNEYzLCAweDM4MzAsIDB4QzRGNCwgMHhDNEY0LCAweDA5NzUsIDB4QzRGNSwgMHhDNEY3LCAweDM4MzIsDQorICAgIDB4QzRGOCwgMHhDNEY4LCAweDA5NzYsIDB4QzRGOSwgMHhDNEY5LCAweDM4MzUsIDB4QzRGQSwgMHhDNEZBLCAweDA5NzcsDQorICAgIDB4QzRGQiwgMHhDNEZFLCAweDM4MzYsIDB4QzRGRiwgMHhDNEZGLCAweDA5NzgsIDB4QzUwMCwgMHhDNTAxLCAweDA5NzksDQorICAgIDB4QzUwMiwgMHhDNTBCLCAweDM4M0EsIDB4QzUwQywgMHhDNTBDLCAweDA5N0IsIDB4QzUwRCwgMHhDNTBGLCAweDM4NDQsDQorICAgIDB4QzUxMCwgMHhDNTEwLCAweDA5N0MsIDB4QzUxMSwgMHhDNTEzLCAweDM4NDcsIDB4QzUxNCwgMHhDNTE0LCAweDA5N0QsDQorICAgIDB4QzUxNSwgMHhDNTFCLCAweDM4NEEsIDB4QzUxQywgMHhDNTFDLCAweDA5N0UsIDB4QzUxRCwgMHhDNTI3LCAweDM4NTEsDQorICAgIDB4QzUyOCwgMHhDNTI5LCAweDA5N0YsIDB4QzUyQSwgMHhDNTJCLCAweDM4NUMsIDB4QzUyQywgMHhDNTJDLCAweDA5ODEsDQorICAgIDB4QzUyRCwgMHhDNTJGLCAweDM4NUUsIDB4QzUzMCwgMHhDNTMwLCAweDA5ODIsIDB4QzUzMSwgMHhDNTM3LCAweDM4NjEsDQorICAgIDB4QzUzOCwgMHhDNTM5LCAweDA5ODMsIDB4QzUzQSwgMHhDNTNBLCAweDM4NjgsIDB4QzUzQiwgMHhDNTNCLCAweDA5ODUsDQorICAgIDB4QzUzQywgMHhDNTNDLCAweDM4NjksIDB4QzUzRCwgMHhDNTNELCAweDA5ODYsIDB4QzUzRSwgMHhDNTQzLCAweDM4NkEsDQorICAgIDB4QzU0NCwgMHhDNTQ1LCAweDA5ODcsIDB4QzU0NiwgMHhDNTQ3LCAweDM4NzAsIDB4QzU0OCwgMHhDNTRBLCAweDA5ODksDQorICAgIDB4QzU0QiwgMHhDNTRCLCAweDM4NzIsIDB4QzU0QywgMHhDNTRFLCAweDA5OEMsIDB4QzU0RiwgMHhDNTUyLCAweDM4NzMsDQorICAgIDB4QzU1MywgMHhDNTU1LCAweDA5OEYsIDB4QzU1NiwgMHhDNTU2LCAweDM4NzcsIDB4QzU1NywgMHhDNTU5LCAweDA5OTIsDQorICAgIDB4QzU1QSwgMHhDNTVDLCAweDM4NzgsIDB4QzU1RCwgMHhDNTVFLCAweDA5OTUsIDB4QzU1RiwgMHhDNTVGLCAweDM4N0IsDQorICAgIDB4QzU2MCwgMHhDNTYxLCAweDA5OTcsIDB4QzU2MiwgMHhDNTYzLCAweDM4N0MsIDB4QzU2NCwgMHhDNTY0LCAweDA5OTksDQorICAgIDB4QzU2NSwgMHhDNTY3LCAweDM4N0UsIDB4QzU2OCwgMHhDNTY4LCAweDA5OUEsIDB4QzU2OSwgMHhDNTZGLCAweDM4ODEsDQorICAgIDB4QzU3MCwgMHhDNTcxLCAweDA5OUIsIDB4QzU3MiwgMHhDNTcyLCAweDM4ODgsIDB4QzU3MywgMHhDNTc1LCAweDA5OUQsDQorICAgIDB4QzU3NiwgMHhDNTdCLCAweDM4ODksIDB4QzU3QywgMHhDNTdELCAweDA5QTAsIDB4QzU3RSwgMHhDNTdGLCAweDM4OEYsDQorICAgIDB4QzU4MCwgMHhDNTgwLCAweDA5QTIsIDB4QzU4MSwgMHhDNTgzLCAweDM4OTEsIDB4QzU4NCwgMHhDNTg0LCAweDA5QTMsDQorICAgIDB4QzU4NSwgMHhDNTg2LCAweDM4OTQsIDB4QzU4NywgMHhDNTg3LCAweDA5QTQsIDB4QzU4OCwgMHhDNThCLCAweDM4OTYsDQorICAgIDB4QzU4QywgMHhDNThELCAweDA5QTUsIDB4QzU4RSwgMHhDNThFLCAweDM4OUEsIDB4QzU4RiwgMHhDNThGLCAweDA5QTcsDQorICAgIDB4QzU5MCwgMHhDNTkwLCAweDM4OUIsIDB4QzU5MSwgMHhDNTkxLCAweDA5QTgsIDB4QzU5MiwgMHhDNTk0LCAweDM4OUMsDQorICAgIDB4QzU5NSwgMHhDNTk1LCAweDA5QTksIDB4QzU5NiwgMHhDNTk2LCAweDM4OUYsIDB4QzU5NywgMHhDNTk4LCAweDA5QUEsDQorICAgIDB4QzU5OSwgMHhDNTlCLCAweDM4QTAsIDB4QzU5QywgMHhDNTlDLCAweDA5QUMsIDB4QzU5RCwgMHhDNTlGLCAweDM4QTMsDQorICAgIDB4QzVBMCwgMHhDNUEwLCAweDA5QUQsIDB4QzVBMSwgMHhDNUE4LCAweDM4QTYsIDB4QzVBOSwgMHhDNUE5LCAweDA5QUUsDQorICAgIDB4QzVBQSwgMHhDNUIzLCAweDM4QUUsIDB4QzVCNCwgMHhDNUI1LCAweDA5QUYsIDB4QzVCNiwgMHhDNUI3LCAweDM4QjgsDQorICAgIDB4QzVCOCwgMHhDNUI5LCAweDA5QjEsIDB4QzVCQSwgMHhDNUJBLCAweDM4QkEsIDB4QzVCQiwgMHhDNUJFLCAweDA5QjMsDQorICAgIDB4QzVCRiwgMHhDNUMzLCAweDM4QkIsIDB4QzVDNCwgMHhDNUNBLCAweDA5QjcsIDB4QzVDQiwgMHhDNUNCLCAweDM4QzAsDQorICAgIDB4QzVDQywgMHhDNUNDLCAweDA5QkUsIDB4QzVDRCwgMHhDNUNELCAweDM4QzEsIDB4QzVDRSwgMHhDNUNFLCAweDA5QkYsDQorICAgIDB4QzVDRiwgMHhDNUNGLCAweDM4QzIsIDB4QzVEMCwgMHhDNUQxLCAweDA5QzAsIDB4QzVEMiwgMHhDNUQzLCAweDM4QzMsDQorICAgIDB4QzVENCwgMHhDNUQ0LCAweDA5QzIsIDB4QzVENSwgMHhDNUQ3LCAweDM4QzUsIDB4QzVEOCwgMHhDNUQ4LCAweDA5QzMsDQorICAgIDB4QzVEOSwgMHhDNURGLCAweDM4QzgsIDB4QzVFMCwgMHhDNUUxLCAweDA5QzQsIDB4QzVFMiwgMHhDNUUyLCAweDM4Q0YsDQorICAgIDB4QzVFMywgMHhDNUUzLCAweDA5QzYsIDB4QzVFNCwgMHhDNUU0LCAweDM4RDAsIDB4QzVFNSwgMHhDNUU1LCAweDA5QzcsDQorICAgIDB4QzVFNiwgMHhDNUVCLCAweDM4RDEsIDB4QzVFQywgMHhDNUVFLCAweDA5QzgsIDB4QzVFRiwgMHhDNUVGLCAweDM4RDcsDQorICAgIDB4QzVGMCwgMHhDNUYwLCAweDA5Q0IsIDB4QzVGMSwgMHhDNUYzLCAweDM4RDgsIDB4QzVGNCwgMHhDNUY0LCAweDA5Q0MsDQorICAgIDB4QzVGNSwgMHhDNUY1LCAweDM4REIsIDB4QzVGNiwgMHhDNUY3LCAweDA5Q0QsIDB4QzVGOCwgMHhDNUZCLCAweDM4REMsDQorICAgIDB4QzVGQywgMHhDNUZGLCAweDA5Q0YsIDB4QzYwMCwgMHhDNjAxLCAweDA5RDMsIDB4QzYwMiwgMHhDNjA0LCAweDM4RTAsDQorICAgIDB4QzYwNSwgMHhDNjA4LCAweDA5RDUsIDB4QzYwOSwgMHhDNjBCLCAweDM4RTMsIDB4QzYwQywgMHhDNjBDLCAweDA5RDksDQorICAgIDB4QzYwRCwgMHhDNjBGLCAweDM4RTYsIDB4QzYxMCwgMHhDNjEwLCAweDA5REEsIDB4QzYxMSwgMHhDNjE3LCAweDM4RTksDQorICAgIDB4QzYxOCwgMHhDNjE5LCAweDA5REIsIDB4QzYxQSwgMHhDNjFBLCAweDM4RjAsIDB4QzYxQiwgMHhDNjFDLCAweDA5REQsDQorICAgIDB4QzYxRCwgMHhDNjIzLCAweDM4RjEsIDB4QzYyNCwgMHhDNjI1LCAweDA5REYsIDB4QzYyNiwgMHhDNjI3LCAweDM4RjgsDQorICAgIDB4QzYyOCwgMHhDNjI4LCAweDA5RTEsIDB4QzYyOSwgMHhDNjJCLCAweDM4RkEsIDB4QzYyQywgMHhDNjJFLCAweDA5RTIsDQorICAgIDB4QzYyRiwgMHhDNjJGLCAweDM4RkQsIDB4QzYzMCwgMHhDNjMwLCAweDA5RTUsIDB4QzYzMSwgMHhDNjMyLCAweDM4RkUsDQorICAgIDB4QzYzMywgMHhDNjM1LCAweDA5RTYsIDB4QzYzNiwgMHhDNjM2LCAweDM5MDAsIDB4QzYzNywgMHhDNjM3LCAweDA5RTksDQorICAgIDB4QzYzOCwgMHhDNjM4LCAweDM5MDEsIDB4QzYzOSwgMHhDNjM5LCAweDA5RUEsIDB4QzYzQSwgMHhDNjNBLCAweDM5MDIsDQorICAgIDB4QzYzQiwgMHhDNjNCLCAweDA5RUIsIDB4QzYzQywgMHhDNjNGLCAweDM5MDMsIDB4QzY0MCwgMHhDNjQxLCAweDA5RUMsDQorICAgIDB4QzY0MiwgMHhDNjQzLCAweDM5MDcsIDB4QzY0NCwgMHhDNjQ0LCAweDA5RUUsIDB4QzY0NSwgMHhDNjQ3LCAweDM5MDksDQorICAgIDB4QzY0OCwgMHhDNjQ4LCAweDA5RUYsIDB4QzY0OSwgMHhDNjRGLCAweDM5MEMsIDB4QzY1MCwgMHhDNjUxLCAweDA5RjAsDQorICAgIDB4QzY1MiwgMHhDNjUyLCAweDM5MTMsIDB4QzY1MywgMHhDNjU1LCAweDA5RjIsIDB4QzY1NiwgMHhDNjVCLCAweDM5MTQsDQorICAgIDB4QzY1QywgMHhDNjVELCAweDA5RjUsIDB4QzY1RSwgMHhDNjVGLCAweDM5MUEsIDB4QzY2MCwgMHhDNjYwLCAweDA5RjcsDQorICAgIDB4QzY2MSwgMHhDNjZCLCAweDM5MUMsIDB4QzY2QywgMHhDNjZDLCAweDA5RjgsIDB4QzY2RCwgMHhDNjZFLCAweDM5MjcsDQorICAgIDB4QzY2RiwgMHhDNjZGLCAweDA5RjksIDB4QzY3MCwgMHhDNjcwLCAweDM5MjksIDB4QzY3MSwgMHhDNjcxLCAweDA5RkEsDQorICAgIDB4QzY3MiwgMHhDNjc3LCAweDM5MkEsIDB4QzY3OCwgMHhDNjc5LCAweDA5RkIsIDB4QzY3QSwgMHhDNjdCLCAweDM5MzAsDQorICAgIDB4QzY3QywgMHhDNjdDLCAweDA5RkQsIDB4QzY3RCwgMHhDNjdGLCAweDM5MzIsIDB4QzY4MCwgMHhDNjgwLCAweDA5RkUsDQorICAgIDB4QzY4MSwgMHhDNjg3LCAweDM5MzUsIDB4QzY4OCwgMHhDNjg5LCAweDA5RkYsIDB4QzY4QSwgMHhDNjhBLCAweDM5M0MsDQorICAgIDB4QzY4QiwgMHhDNjhCLCAweDBBMDEsIDB4QzY4QywgMHhDNjhDLCAweDM5M0QsIDB4QzY4RCwgMHhDNjhELCAweDBBMDIsDQorICAgIDB4QzY4RSwgMHhDNjkzLCAweDM5M0UsIDB4QzY5NCwgMHhDNjk1LCAweDBBMDMsIDB4QzY5NiwgMHhDNjk3LCAweDM5NDQsDQorICAgIDB4QzY5OCwgMHhDNjk4LCAweDBBMDUsIDB4QzY5OSwgMHhDNjlCLCAweDM5NDYsIDB4QzY5QywgMHhDNjlDLCAweDBBMDYsDQorICAgIDB4QzY5RCwgMHhDNkEzLCAweDM5NDksIDB4QzZBNCwgMHhDNkE1LCAweDBBMDcsIDB4QzZBNiwgMHhDNkE2LCAweDM5NTAsDQorICAgIDB4QzZBNywgMHhDNkE3LCAweDBBMDksIDB4QzZBOCwgMHhDNkE4LCAweDM5NTEsIDB4QzZBOSwgMHhDNkE5LCAweDBBMEEsDQorICAgIDB4QzZBQSwgMHhDNkFGLCAweDM5NTIsIDB4QzZCMCwgMHhDNkIxLCAweDBBMEIsIDB4QzZCMiwgMHhDNkIzLCAweDM5NTgsDQorICAgIDB4QzZCNCwgMHhDNkI0LCAweDBBMEQsIDB4QzZCNSwgMHhDNkI3LCAweDM5NUEsIDB4QzZCOCwgMHhDNkJBLCAweDBBMEUsDQorICAgIDB4QzZCQiwgMHhDNkJGLCAweDM5NUQsIDB4QzZDMCwgMHhDNkMxLCAweDBBMTEsIDB4QzZDMiwgMHhDNkMyLCAweDM5NjIsDQorICAgIDB4QzZDMywgMHhDNkMzLCAweDBBMTMsIDB4QzZDNCwgMHhDNkM0LCAweDM5NjMsIDB4QzZDNSwgMHhDNkM1LCAweDBBMTQsDQorICAgIDB4QzZDNiwgMHhDNkNCLCAweDM5NjQsIDB4QzZDQywgMHhDNkNELCAweDBBMTUsIDB4QzZDRSwgMHhDNkNGLCAweDM5NkEsDQorICAgIDB4QzZEMCwgMHhDNkQwLCAweDBBMTcsIDB4QzZEMSwgMHhDNkQzLCAweDM5NkMsIDB4QzZENCwgMHhDNkQ0LCAweDBBMTgsDQorICAgIDB4QzZENSwgMHhDNkRCLCAweDM5NkYsIDB4QzZEQywgMHhDNkRELCAweDBBMTksIDB4QzZERSwgMHhDNkRGLCAweDM5NzYsDQorICAgIDB4QzZFMCwgMHhDNkUxLCAweDBBMUIsIDB4QzZFMiwgMHhDNkU3LCAweDM5NzgsIDB4QzZFOCwgMHhDNkU5LCAweDBBMUQsDQorICAgIDB4QzZFQSwgMHhDNkVCLCAweDM5N0UsIDB4QzZFQywgMHhDNkVDLCAweDBBMUYsIDB4QzZFRCwgMHhDNkVGLCAweDM5ODAsDQorICAgIDB4QzZGMCwgMHhDNkYwLCAweDBBMjAsIDB4QzZGMSwgMHhDNkY3LCAweDM5ODMsIDB4QzZGOCwgMHhDNkY5LCAweDBBMjEsDQorICAgIDB4QzZGQSwgMHhDNkZDLCAweDM5OEEsIDB4QzZGRCwgMHhDNkZELCAweDBBMjMsIDB4QzZGRSwgMHhDNkZGLCAweDM5OEQsDQorICAgIDB4QzcwMCwgMHhDNzAzLCAweDM5OEYsIDB4QzcwNCwgMHhDNzA1LCAweDBBMjQsIDB4QzcwNiwgMHhDNzA3LCAweDM5OTMsDQorICAgIDB4QzcwOCwgMHhDNzA4LCAweDBBMjYsIDB4QzcwOSwgMHhDNzBCLCAweDM5OTUsIDB4QzcwQywgMHhDNzBDLCAweDBBMjcsDQorICAgIDB4QzcwRCwgMHhDNzEzLCAweDM5OTgsIDB4QzcxNCwgMHhDNzE1LCAweDBBMjgsIDB4QzcxNiwgMHhDNzE2LCAweDM5OUYsDQorICAgIDB4QzcxNywgMHhDNzE3LCAweDBBMkEsIDB4QzcxOCwgMHhDNzE4LCAweDM5QTAsIDB4QzcxOSwgMHhDNzE5LCAweDBBMkIsDQorICAgIDB4QzcxQSwgMHhDNzFGLCAweDM5QTEsIDB4QzcyMCwgMHhDNzIxLCAweDBBMkMsIDB4QzcyMiwgMHhDNzIzLCAweDM5QTcsDQorICAgIDB4QzcyNCwgMHhDNzI0LCAweDBBMkUsIDB4QzcyNSwgMHhDNzI3LCAweDM5QTksIDB4QzcyOCwgMHhDNzI4LCAweDBBMkYsDQorICAgIDB4QzcyOSwgMHhDNzJGLCAweDM5QUMsIDB4QzczMCwgMHhDNzMxLCAweDBBMzAsIDB4QzczMiwgMHhDNzMyLCAweDM5QjMsDQorICAgIDB4QzczMywgMHhDNzMzLCAweDBBMzIsIDB4QzczNCwgMHhDNzM0LCAweDM5QjQsIDB4QzczNSwgMHhDNzM1LCAweDBBMzMsDQorICAgIDB4QzczNiwgMHhDNzM2LCAweDM5QjUsIDB4QzczNywgMHhDNzM3LCAweDBBMzQsIDB4QzczOCwgMHhDNzNCLCAweDM5QjYsDQorICAgIDB4QzczQywgMHhDNzNELCAweDBBMzUsIDB4QzczRSwgMHhDNzNGLCAweDM5QkEsIDB4Qzc0MCwgMHhDNzQwLCAweDBBMzcsDQorICAgIDB4Qzc0MSwgMHhDNzQzLCAweDM5QkMsIDB4Qzc0NCwgMHhDNzQ0LCAweDBBMzgsIDB4Qzc0NSwgMHhDNzQ5LCAweDM5QkYsDQorICAgIDB4Qzc0QSwgMHhDNzRBLCAweDBBMzksIDB4Qzc0QiwgMHhDNzRCLCAweDM5QzQsIDB4Qzc0QywgMHhDNzRELCAweDBBM0EsDQorICAgIDB4Qzc0RSwgMHhDNzRFLCAweDM5QzUsIDB4Qzc0RiwgMHhDNzRGLCAweDBBM0MsIDB4Qzc1MCwgMHhDNzUwLCAweDM5QzYsDQorICAgIDB4Qzc1MSwgMHhDNzU4LCAweDBBM0QsIDB4Qzc1OSwgMHhDNzVCLCAweDM5QzcsIDB4Qzc1QywgMHhDNzVDLCAweDBBNDUsDQorICAgIDB4Qzc1RCwgMHhDNzVGLCAweDM5Q0EsIDB4Qzc2MCwgMHhDNzYwLCAweDBBNDYsIDB4Qzc2MSwgMHhDNzY3LCAweDM5Q0QsDQorICAgIDB4Qzc2OCwgMHhDNzY4LCAweDBBNDcsIDB4Qzc2OSwgMHhDNzZBLCAweDM5RDQsIDB4Qzc2QiwgMHhDNzZCLCAweDBBNDgsDQorICAgIDB4Qzc2QywgMHhDNzczLCAweDM5RDYsIDB4Qzc3NCwgMHhDNzc1LCAweDBBNDksIDB4Qzc3NiwgMHhDNzc3LCAweDM5REUsDQorICAgIDB4Qzc3OCwgMHhDNzc4LCAweDBBNEIsIDB4Qzc3OSwgMHhDNzdCLCAweDM5RTAsIDB4Qzc3QywgMHhDNzdFLCAweDBBNEMsDQorICAgIDB4Qzc3RiwgMHhDNzgyLCAweDM5RTMsIDB4Qzc4MywgMHhDNzg1LCAweDBBNEYsIDB4Qzc4NiwgMHhDNzg2LCAweDM5RTcsDQorICAgIDB4Qzc4NywgMHhDNzhBLCAweDBBNTIsIDB4Qzc4QiwgMHhDNzhELCAweDM5RTgsIDB4Qzc4RSwgMHhDNzhFLCAweDBBNTYsDQorICAgIDB4Qzc4RiwgMHhDNzhGLCAweDM5RUIsIDB4Qzc5MCwgMHhDNzkxLCAweDBBNTcsIDB4Qzc5MiwgMHhDNzkzLCAweDM5RUMsDQorICAgIDB4Qzc5NCwgMHhDNzk0LCAweDBBNTksIDB4Qzc5NSwgMHhDNzk1LCAweDM5RUUsIDB4Qzc5NiwgMHhDNzk4LCAweDBBNUEsDQorICAgIDB4Qzc5OSwgMHhDNzk5LCAweDM5RUYsIDB4Qzc5QSwgMHhDNzlBLCAweDBBNUQsIDB4Qzc5QiwgMHhDNzlGLCAweDM5RjAsDQorICAgIDB4QzdBMCwgMHhDN0ExLCAweDBBNUUsIDB4QzdBMiwgMHhDN0EyLCAweDM5RjUsIDB4QzdBMywgMHhDN0E2LCAweDBBNjAsDQorICAgIDB4QzdBNywgMHhDN0FCLCAweDM5RjYsIDB4QzdBQywgMHhDN0FELCAweDBBNjQsIDB4QzdBRSwgMHhDN0FGLCAweDM5RkIsDQorICAgIDB4QzdCMCwgMHhDN0IwLCAweDBBNjYsIDB4QzdCMSwgMHhDN0IzLCAweDM5RkQsIDB4QzdCNCwgMHhDN0I0LCAweDBBNjcsDQorICAgIDB4QzdCNSwgMHhDN0JCLCAweDNBMDAsIDB4QzdCQywgMHhDN0JELCAweDBBNjgsIDB4QzdCRSwgMHhDN0JFLCAweDNBMDcsDQorICAgIDB4QzdCRiwgMHhDN0MxLCAweDBBNkEsIDB4QzdDMiwgMHhDN0M3LCAweDNBMDgsIDB4QzdDOCwgMHhDN0M5LCAweDBBNkQsDQorICAgIDB4QzdDQSwgMHhDN0NCLCAweDNBMEUsIDB4QzdDQywgMHhDN0NDLCAweDBBNkYsIDB4QzdDRCwgMHhDN0NELCAweDNBMTAsDQorICAgIDB4QzdDRSwgMHhDN0NFLCAweDBBNzAsIDB4QzdDRiwgMHhDN0NGLCAweDNBMTEsIDB4QzdEMCwgMHhDN0QwLCAweDBBNzEsDQorICAgIDB4QzdEMSwgMHhDN0Q3LCAweDNBMTIsIDB4QzdEOCwgMHhDN0Q4LCAweDBBNzIsIDB4QzdEOSwgMHhDN0RDLCAweDNBMTksDQorICAgIDB4QzdERCwgMHhDN0RELCAweDBBNzMsIDB4QzdERSwgMHhDN0UzLCAweDNBMUQsIDB4QzdFNCwgMHhDN0U0LCAweDBBNzQsDQorICAgIDB4QzdFNSwgMHhDN0U3LCAweDNBMjMsIDB4QzdFOCwgMHhDN0U4LCAweDBBNzUsIDB4QzdFOSwgMHhDN0VCLCAweDNBMjYsDQorICAgIDB4QzdFQywgMHhDN0VDLCAweDBBNzYsIDB4QzdFRCwgMHhDN0ZGLCAweDNBMjksIDB4QzgwMCwgMHhDODAxLCAweDBBNzcsDQorICAgIDB4QzgwMiwgMHhDODAzLCAweDNBM0MsIDB4QzgwNCwgMHhDODA0LCAweDBBNzksIDB4QzgwNSwgMHhDODA3LCAweDNBM0UsDQorICAgIDB4QzgwOCwgMHhDODA4LCAweDBBN0EsIDB4QzgwOSwgMHhDODA5LCAweDNBNDEsIDB4QzgwQSwgMHhDODBBLCAweDBBN0IsDQorICAgIDB4QzgwQiwgMHhDODBGLCAweDNBNDIsIDB4QzgxMCwgMHhDODExLCAweDBBN0MsIDB4QzgxMiwgMHhDODEyLCAweDNBNDcsDQorICAgIDB4QzgxMywgMHhDODEzLCAweDBBN0UsIDB4QzgxNCwgMHhDODE0LCAweDNBNDgsIDB4QzgxNSwgMHhDODE2LCAweDBBN0YsDQorICAgIDB4QzgxNywgMHhDODFCLCAweDNBNDksIDB4QzgxQywgMHhDODFELCAweDBBODEsIDB4QzgxRSwgMHhDODFGLCAweDNBNEUsDQorICAgIDB4QzgyMCwgMHhDODIwLCAweDBBODMsIDB4QzgyMSwgMHhDODIzLCAweDNBNTAsIDB4QzgyNCwgMHhDODI0LCAweDBBODQsDQorICAgIDB4QzgyNSwgMHhDODJCLCAweDNBNTMsIDB4QzgyQywgMHhDODJELCAweDBBODUsIDB4QzgyRSwgMHhDODJFLCAweDNBNUEsDQorICAgIDB4QzgyRiwgMHhDODJGLCAweDBBODcsIDB4QzgzMCwgMHhDODMwLCAweDNBNUIsIDB4QzgzMSwgMHhDODMxLCAweDBBODgsDQorICAgIDB4QzgzMiwgMHhDODM3LCAweDNBNUMsIDB4QzgzOCwgMHhDODM4LCAweDBBODksIDB4QzgzOSwgMHhDODNCLCAweDNBNjIsDQorICAgIDB4QzgzQywgMHhDODNDLCAweDBBOEEsIDB4QzgzRCwgMHhDODNGLCAweDNBNjUsIDB4Qzg0MCwgMHhDODQwLCAweDBBOEIsDQorICAgIDB4Qzg0MSwgMHhDODQ3LCAweDNBNjgsIDB4Qzg0OCwgMHhDODQ5LCAweDBBOEMsIDB4Qzg0QSwgMHhDODRCLCAweDNBNkYsDQorICAgIDB4Qzg0QywgMHhDODRELCAweDBBOEUsIDB4Qzg0RSwgMHhDODUzLCAweDNBNzEsIDB4Qzg1NCwgMHhDODU0LCAweDBBOTAsDQorICAgIDB4Qzg1NSwgMHhDODZGLCAweDNBNzcsIDB4Qzg3MCwgMHhDODcxLCAweDBBOTEsIDB4Qzg3MiwgMHhDODczLCAweDNBOTIsDQorICAgIDB4Qzg3NCwgMHhDODc0LCAweDBBOTMsIDB4Qzg3NSwgMHhDODc3LCAweDNBOTQsIDB4Qzg3OCwgMHhDODc4LCAweDBBOTQsDQorICAgIDB4Qzg3OSwgMHhDODc5LCAweDNBOTcsIDB4Qzg3QSwgMHhDODdBLCAweDBBOTUsIDB4Qzg3QiwgMHhDODdGLCAweDNBOTgsDQorICAgIDB4Qzg4MCwgMHhDODgxLCAweDBBOTYsIDB4Qzg4MiwgMHhDODgyLCAweDNBOUQsIDB4Qzg4MywgMHhDODgzLCAweDBBOTgsDQorICAgIDB4Qzg4NCwgMHhDODg0LCAweDNBOUUsIDB4Qzg4NSwgMHhDODg3LCAweDBBOTksIDB4Qzg4OCwgMHhDODhBLCAweDNBOUYsDQorICAgIDB4Qzg4QiwgMHhDODhELCAweDBBOUMsIDB4Qzg4RSwgMHhDODkzLCAweDNBQTIsIDB4Qzg5NCwgMHhDODk0LCAweDBBOUYsDQorICAgIDB4Qzg5NSwgMHhDODlDLCAweDNBQTgsIDB4Qzg5RCwgMHhDODlELCAweDBBQTAsIDB4Qzg5RSwgMHhDODlFLCAweDNBQjAsDQorICAgIDB4Qzg5RiwgMHhDODlGLCAweDBBQTEsIDB4QzhBMCwgMHhDOEEwLCAweDNBQjEsIDB4QzhBMSwgMHhDOEExLCAweDBBQTIsDQorICAgIDB4QzhBMiwgMHhDOEE3LCAweDNBQjIsIDB4QzhBOCwgMHhDOEE4LCAweDBBQTMsIDB4QzhBOSwgMHhDOEJCLCAweDNBQjgsDQorICAgIDB4QzhCQywgMHhDOEJELCAweDBBQTQsIDB4QzhCRSwgMHhDOEMzLCAweDNBQ0IsIDB4QzhDNCwgMHhDOEM0LCAweDBBQTYsDQorICAgIDB4QzhDNSwgMHhDOEM3LCAweDNBRDEsIDB4QzhDOCwgMHhDOEM4LCAweDBBQTcsIDB4QzhDOSwgMHhDOENCLCAweDNBRDQsDQorICAgIDB4QzhDQywgMHhDOENDLCAweDBBQTgsIDB4QzhDRCwgMHhDOEQzLCAweDNBRDcsIDB4QzhENCwgMHhDOEQ1LCAweDBBQTksDQorICAgIDB4QzhENiwgMHhDOEQ2LCAweDNBREUsIDB4QzhENywgMHhDOEQ3LCAweDBBQUIsIDB4QzhEOCwgMHhDOEQ4LCAweDNBREYsDQorICAgIDB4QzhEOSwgMHhDOEQ5LCAweDBBQUMsIDB4QzhEQSwgMHhDOERGLCAweDNBRTAsIDB4QzhFMCwgMHhDOEUxLCAweDBBQUQsDQorICAgIDB4QzhFMiwgMHhDOEUzLCAweDNBRTYsIDB4QzhFNCwgMHhDOEU0LCAweDBBQUYsIDB4QzhFNSwgMHhDOEY0LCAweDNBRTgsDQorICAgIDB4QzhGNSwgMHhDOEY1LCAweDBBQjAsIDB4QzhGNiwgMHhDOEZCLCAweDNBRjgsIDB4QzhGQywgMHhDOEZELCAweDBBQjEsDQorICAgIDB4QzhGRSwgMHhDOEZGLCAweDNBRkUsIDB4QzkwMCwgMHhDOTAwLCAweDBBQjMsIDB4QzkwMSwgMHhDOTAzLCAweDNCMDAsDQorICAgIDB4QzkwNCwgMHhDOTA2LCAweDBBQjQsIDB4QzkwNywgMHhDOTBCLCAweDNCMDMsIDB4QzkwQywgMHhDOTBELCAweDBBQjcsDQorICAgIDB4QzkwRSwgMHhDOTBFLCAweDNCMDgsIDB4QzkwRiwgMHhDOTBGLCAweDBBQjksIDB4QzkxMCwgMHhDOTEwLCAweDNCMDksDQorICAgIDB4QzkxMSwgMHhDOTExLCAweDBBQkEsIDB4QzkxMiwgMHhDOTE3LCAweDNCMEEsIDB4QzkxOCwgMHhDOTE4LCAweDBBQkIsDQorICAgIDB4QzkxOSwgMHhDOTJCLCAweDNCMTAsIDB4QzkyQywgMHhDOTJDLCAweDBBQkMsIDB4QzkyRCwgMHhDOTMzLCAweDNCMjMsDQorICAgIDB4QzkzNCwgMHhDOTM0LCAweDBBQkQsIDB4QzkzNSwgMHhDOTRGLCAweDNCMkEsIDB4Qzk1MCwgMHhDOTUxLCAweDBBQkUsDQorICAgIDB4Qzk1MiwgMHhDOTUzLCAweDNCNDUsIDB4Qzk1NCwgMHhDOTU0LCAweDBBQzAsIDB4Qzk1NSwgMHhDOTU3LCAweDNCNDcsDQorICAgIDB4Qzk1OCwgMHhDOTU4LCAweDBBQzEsIDB4Qzk1OSwgMHhDOTVGLCAweDNCNEEsIDB4Qzk2MCwgMHhDOTYxLCAweDBBQzIsDQorICAgIDB4Qzk2MiwgMHhDOTYyLCAweDNCNTEsIDB4Qzk2MywgMHhDOTYzLCAweDBBQzQsIDB4Qzk2NCwgMHhDOTZCLCAweDNCNTIsDQorICAgIDB4Qzk2QywgMHhDOTZDLCAweDBBQzUsIDB4Qzk2RCwgMHhDOTZGLCAweDNCNUEsIDB4Qzk3MCwgMHhDOTcwLCAweDBBQzYsDQorICAgIDB4Qzk3MSwgMHhDOTczLCAweDNCNUQsIDB4Qzk3NCwgMHhDOTc0LCAweDBBQzcsIDB4Qzk3NSwgMHhDOTdCLCAweDNCNjAsDQorICAgIDB4Qzk3QywgMHhDOTdDLCAweDBBQzgsIDB4Qzk3RCwgMHhDOTg3LCAweDNCNjcsIDB4Qzk4OCwgMHhDOTg5LCAweDBBQzksDQorICAgIDB4Qzk4QSwgMHhDOThCLCAweDNCNzIsIDB4Qzk4QywgMHhDOThDLCAweDBBQ0IsIDB4Qzk4RCwgMHhDOThGLCAweDNCNzQsDQorICAgIDB4Qzk5MCwgMHhDOTkwLCAweDBBQ0MsIDB4Qzk5MSwgMHhDOTk3LCAweDNCNzcsIDB4Qzk5OCwgMHhDOTk5LCAweDBBQ0QsDQorICAgIDB4Qzk5QSwgMHhDOTlBLCAweDNCN0UsIDB4Qzk5QiwgMHhDOTlCLCAweDBBQ0YsIDB4Qzk5QywgMHhDOTlDLCAweDNCN0YsDQorICAgIDB4Qzk5RCwgMHhDOTlELCAweDBBRDAsIDB4Qzk5RSwgMHhDOUJGLCAweDNCODAsIDB4QzlDMCwgMHhDOUMxLCAweDBBRDEsDQorICAgIDB4QzlDMiwgMHhDOUMzLCAweDNCQTIsIDB4QzlDNCwgMHhDOUM0LCAweDBBRDMsIDB4QzlDNSwgMHhDOUM2LCAweDNCQTQsDQorICAgIDB4QzlDNywgMHhDOUM4LCAweDBBRDQsIDB4QzlDOSwgMHhDOUM5LCAweDNCQTYsIDB4QzlDQSwgMHhDOUNBLCAweDBBRDYsDQorICAgIDB4QzlDQiwgMHhDOUNGLCAweDNCQTcsIDB4QzlEMCwgMHhDOUQxLCAweDBBRDcsIDB4QzlEMiwgMHhDOUQyLCAweDNCQUMsDQorICAgIDB4QzlEMywgMHhDOUQzLCAweDBBRDksIDB4QzlENCwgMHhDOUQ0LCAweDNCQUQsIDB4QzlENSwgMHhDOUQ2LCAweDBBREEsDQorICAgIDB4QzlENywgMHhDOUQ4LCAweDNCQUUsIDB4QzlEOSwgMHhDOURBLCAweDBBREMsIDB4QzlEQiwgMHhDOURCLCAweDNCQjAsDQorICAgIDB4QzlEQywgMHhDOURELCAweDBBREUsIDB4QzlERSwgMHhDOURGLCAweDNCQjEsIDB4QzlFMCwgMHhDOUUwLCAweDBBRTAsDQorICAgIDB4QzlFMSwgMHhDOUUxLCAweDNCQjMsIDB4QzlFMiwgMHhDOUUyLCAweDBBRTEsIDB4QzlFMywgMHhDOUUzLCAweDNCQjQsDQorICAgIDB4QzlFNCwgMHhDOUU0LCAweDBBRTIsIDB4QzlFNSwgMHhDOUU2LCAweDNCQjUsIDB4QzlFNywgMHhDOUU3LCAweDBBRTMsDQorICAgIDB4QzlFOCwgMHhDOUVCLCAweDNCQjcsIDB4QzlFQywgMHhDOUVELCAweDBBRTQsIDB4QzlFRSwgMHhDOUVFLCAweDNCQkIsDQorICAgIDB4QzlFRiwgMHhDOUYxLCAweDBBRTYsIDB4QzlGMiwgMHhDOUY3LCAweDNCQkMsIDB4QzlGOCwgMHhDOUY5LCAweDBBRTksDQorICAgIDB4QzlGQSwgMHhDOUZCLCAweDNCQzIsIDB4QzlGQywgMHhDOUZDLCAweDBBRUIsIDB4QzlGRCwgMHhDOUZGLCAweDNCQzQsDQorICAgIDB4Q0EwMCwgMHhDQTAwLCAweDBBRUMsIDB4Q0EwMSwgMHhDQTA3LCAweDNCQzcsIDB4Q0EwOCwgMHhDQTA5LCAweDBBRUQsDQorICAgIDB4Q0EwQSwgMHhDQTBBLCAweDNCQ0UsIDB4Q0EwQiwgMHhDQTBELCAweDBBRUYsIDB4Q0EwRSwgMHhDQTEzLCAweDNCQ0YsDQorICAgIDB4Q0ExNCwgMHhDQTE0LCAweDBBRjIsIDB4Q0ExNSwgMHhDQTE3LCAweDNCRDUsIDB4Q0ExOCwgMHhDQTE4LCAweDBBRjMsDQorICAgIDB4Q0ExOSwgMHhDQTI4LCAweDNCRDgsIDB4Q0EyOSwgMHhDQTI5LCAweDBBRjQsIDB4Q0EyQSwgMHhDQTRCLCAweDNCRTgsDQorICAgIDB4Q0E0QywgMHhDQTRELCAweDBBRjUsIDB4Q0E0RSwgMHhDQTRGLCAweDNDMEEsIDB4Q0E1MCwgMHhDQTUwLCAweDBBRjcsDQorICAgIDB4Q0E1MSwgMHhDQTUzLCAweDNDMEMsIDB4Q0E1NCwgMHhDQTU0LCAweDBBRjgsIDB4Q0E1NSwgMHhDQTVCLCAweDNDMEYsDQorICAgIDB4Q0E1QywgMHhDQTVELCAweDBBRjksIDB4Q0E1RSwgMHhDQTVFLCAweDNDMTYsIDB4Q0E1RiwgMHhDQTYxLCAweDBBRkIsDQorICAgIDB4Q0E2MiwgMHhDQTY3LCAweDNDMTcsIDB4Q0E2OCwgMHhDQTY4LCAweDBBRkUsIDB4Q0E2OSwgMHhDQTdDLCAweDNDMUQsDQorICAgIDB4Q0E3RCwgMHhDQTdELCAweDBBRkYsIDB4Q0E3RSwgMHhDQTgzLCAweDNDMzEsIDB4Q0E4NCwgMHhDQTg0LCAweDBCMDAsDQorICAgIDB4Q0E4NSwgMHhDQTk3LCAweDNDMzcsIDB4Q0E5OCwgMHhDQTk4LCAweDBCMDEsIDB4Q0E5OSwgMHhDQUJCLCAweDNDNEEsDQorICAgIDB4Q0FCQywgMHhDQUJELCAweDBCMDIsIDB4Q0FCRSwgMHhDQUJGLCAweDNDNkQsIDB4Q0FDMCwgMHhDQUMwLCAweDBCMDQsDQorICAgIDB4Q0FDMSwgMHhDQUMzLCAweDNDNkYsIDB4Q0FDNCwgMHhDQUM0LCAweDBCMDUsIDB4Q0FDNSwgMHhDQUNCLCAweDNDNzIsDQorICAgIDB4Q0FDQywgMHhDQUNELCAweDBCMDYsIDB4Q0FDRSwgMHhDQUNFLCAweDNDNzksIDB4Q0FDRiwgMHhDQUNGLCAweDBCMDgsDQorICAgIDB4Q0FEMCwgMHhDQUQwLCAweDNDN0EsIDB4Q0FEMSwgMHhDQUQxLCAweDBCMDksIDB4Q0FEMiwgMHhDQUQyLCAweDNDN0IsDQorICAgIDB4Q0FEMywgMHhDQUQzLCAweDBCMEEsIDB4Q0FENCwgMHhDQUQ3LCAweDNDN0MsIDB4Q0FEOCwgMHhDQUQ5LCAweDBCMEIsDQorICAgIDB4Q0FEQSwgMHhDQURGLCAweDNDODAsIDB4Q0FFMCwgMHhDQUUwLCAweDBCMEQsIDB4Q0FFMSwgMHhDQUVCLCAweDNDODYsDQorICAgIDB4Q0FFQywgMHhDQUVDLCAweDBCMEUsIDB4Q0FFRCwgMHhDQUYzLCAweDNDOTEsIDB4Q0FGNCwgMHhDQUY0LCAweDBCMEYsDQorICAgIDB4Q0FGNSwgMHhDQUZGLCAweDNDOTgsIDB4Q0IwMCwgMHhDQjA3LCAweDNDQTMsIDB4Q0IwOCwgMHhDQjA4LCAweDBCMTAsDQorICAgIDB4Q0IwOSwgMHhDQjBGLCAweDNDQUIsIDB4Q0IxMCwgMHhDQjEwLCAweDBCMTEsIDB4Q0IxMSwgMHhDQjEzLCAweDNDQjIsDQorICAgIDB4Q0IxNCwgMHhDQjE0LCAweDBCMTIsIDB4Q0IxNSwgMHhDQjE3LCAweDNDQjUsIDB4Q0IxOCwgMHhDQjE4LCAweDBCMTMsDQorICAgIDB4Q0IxOSwgMHhDQjFGLCAweDNDQjgsIDB4Q0IyMCwgMHhDQjIxLCAweDBCMTQsIDB4Q0IyMiwgMHhDQjQwLCAweDNDQkYsDQorICAgIDB4Q0I0MSwgMHhDQjQxLCAweDBCMTYsIDB4Q0I0MiwgMHhDQjQ3LCAweDNDREUsIDB4Q0I0OCwgMHhDQjQ5LCAweDBCMTcsDQorICAgIDB4Q0I0QSwgMHhDQjRCLCAweDNDRTQsIDB4Q0I0QywgMHhDQjRDLCAweDBCMTksIDB4Q0I0RCwgMHhDQjRGLCAweDNDRTYsDQorICAgIDB4Q0I1MCwgMHhDQjUwLCAweDBCMUEsIDB4Q0I1MSwgMHhDQjU3LCAweDNDRTksIDB4Q0I1OCwgMHhDQjU5LCAweDBCMUIsDQorICAgIDB4Q0I1QSwgMHhDQjVDLCAweDNDRjAsIDB4Q0I1RCwgMHhDQjVELCAweDBCMUQsIDB4Q0I1RSwgMHhDQjYzLCAweDNDRjMsDQorICAgIDB4Q0I2NCwgMHhDQjY0LCAweDBCMUUsIDB4Q0I2NSwgMHhDQjc3LCAweDNDRjksIDB4Q0I3OCwgMHhDQjc5LCAweDBCMUYsDQorICAgIDB4Q0I3QSwgMHhDQjlCLCAweDNEMEMsIDB4Q0I5QywgMHhDQjlDLCAweDBCMjEsIDB4Q0I5RCwgMHhDQkI3LCAweDNEMkUsDQorICAgIDB4Q0JCOCwgMHhDQkI4LCAweDBCMjIsIDB4Q0JCOSwgMHhDQkQzLCAweDNENDksIDB4Q0JENCwgMHhDQkQ0LCAweDBCMjMsDQorICAgIDB4Q0JENSwgMHhDQkUzLCAweDNENjQsIDB4Q0JFNCwgMHhDQkU0LCAweDBCMjQsIDB4Q0JFNSwgMHhDQkU2LCAweDNENzMsDQorICAgIDB4Q0JFNywgMHhDQkU3LCAweDBCMjUsIDB4Q0JFOCwgMHhDQkU4LCAweDNENzUsIDB4Q0JFOSwgMHhDQkU5LCAweDBCMjYsDQorICAgIDB4Q0JFQSwgMHhDQkZGLCAweDNENzYsIDB4Q0MwMCwgMHhDQzBCLCAweDNEOEMsIDB4Q0MwQywgMHhDQzBELCAweDBCMjcsDQorICAgIDB4Q0MwRSwgMHhDQzBGLCAweDNEOTgsIDB4Q0MxMCwgMHhDQzEwLCAweDBCMjksIDB4Q0MxMSwgMHhDQzEzLCAweDNEOUEsDQorICAgIDB4Q0MxNCwgMHhDQzE0LCAweDBCMkEsIDB4Q0MxNSwgMHhDQzFCLCAweDNEOUQsIDB4Q0MxQywgMHhDQzFELCAweDBCMkIsDQorICAgIDB4Q0MxRSwgMHhDQzIwLCAweDNEQTQsIDB4Q0MyMSwgMHhDQzIyLCAweDBCMkQsIDB4Q0MyMywgMHhDQzI2LCAweDNEQTcsDQorICAgIDB4Q0MyNywgMHhDQzI5LCAweDBCMkYsIDB4Q0MyQSwgMHhDQzJCLCAweDNEQUIsIDB4Q0MyQywgMHhDQzJDLCAweDBCMzIsDQorICAgIDB4Q0MyRCwgMHhDQzJELCAweDNEQUQsIDB4Q0MyRSwgMHhDQzJFLCAweDBCMzMsIDB4Q0MyRiwgMHhDQzJGLCAweDNEQUUsDQorICAgIDB4Q0MzMCwgMHhDQzMwLCAweDBCMzQsIDB4Q0MzMSwgMHhDQzM3LCAweDNEQUYsIDB4Q0MzOCwgMHhDQzM5LCAweDBCMzUsDQorICAgIDB4Q0MzQSwgMHhDQzNBLCAweDNEQjYsIDB4Q0MzQiwgMHhDQzNFLCAweDBCMzcsIDB4Q0MzRiwgMHhDQzQzLCAweDNEQjcsDQorICAgIDB4Q0M0NCwgMHhDQzQ1LCAweDBCM0IsIDB4Q0M0NiwgMHhDQzQ3LCAweDNEQkMsIDB4Q0M0OCwgMHhDQzQ4LCAweDBCM0QsDQorICAgIDB4Q0M0OSwgMHhDQzRCLCAweDNEQkUsIDB4Q0M0QywgMHhDQzRDLCAweDBCM0UsIDB4Q0M0RCwgMHhDQzUzLCAweDNEQzEsDQorICAgIDB4Q0M1NCwgMHhDQzU1LCAweDBCM0YsIDB4Q0M1NiwgMHhDQzU2LCAweDNEQzgsIDB4Q0M1NywgMHhDQzU5LCAweDBCNDEsDQorICAgIDB4Q0M1QSwgMHhDQzVGLCAweDNEQzksIDB4Q0M2MCwgMHhDQzYwLCAweDBCNDQsIDB4Q0M2MSwgMHhDQzYzLCAweDNEQ0YsDQorICAgIDB4Q0M2NCwgMHhDQzY0LCAweDBCNDUsIDB4Q0M2NSwgMHhDQzY1LCAweDNERDIsIDB4Q0M2NiwgMHhDQzY2LCAweDBCNDYsDQorICAgIDB4Q0M2NywgMHhDQzY3LCAweDNERDMsIDB4Q0M2OCwgMHhDQzY4LCAweDBCNDcsIDB4Q0M2OSwgMHhDQzZGLCAweDNERDQsDQorICAgIDB4Q0M3MCwgMHhDQzcwLCAweDBCNDgsIDB4Q0M3MSwgMHhDQzc0LCAweDNEREIsIDB4Q0M3NSwgMHhDQzc1LCAweDBCNDksDQorICAgIDB4Q0M3NiwgMHhDQzk3LCAweDNEREYsIDB4Q0M5OCwgMHhDQzk5LCAweDBCNEEsIDB4Q0M5QSwgMHhDQzlCLCAweDNFMDEsDQorICAgIDB4Q0M5QywgMHhDQzlDLCAweDBCNEMsIDB4Q0M5RCwgMHhDQzlGLCAweDNFMDMsIDB4Q0NBMCwgMHhDQ0EwLCAweDBCNEQsDQorICAgIDB4Q0NBMSwgMHhDQ0E3LCAweDNFMDYsIDB4Q0NBOCwgMHhDQ0E5LCAweDBCNEUsIDB4Q0NBQSwgMHhDQ0FBLCAweDNFMEQsDQorICAgIDB4Q0NBQiwgMHhDQ0FELCAweDBCNTAsIDB4Q0NBRSwgMHhDQ0IzLCAweDNFMEUsIDB4Q0NCNCwgMHhDQ0I1LCAweDBCNTMsDQorICAgIDB4Q0NCNiwgMHhDQ0I3LCAweDNFMTQsIDB4Q0NCOCwgMHhDQ0I4LCAweDBCNTUsIDB4Q0NCOSwgMHhDQ0JCLCAweDNFMTYsDQorICAgIDB4Q0NCQywgMHhDQ0JDLCAweDBCNTYsIDB4Q0NCRCwgMHhDQ0MzLCAweDNFMTksIDB4Q0NDNCwgMHhDQ0M1LCAweDBCNTcsDQorICAgIDB4Q0NDNiwgMHhDQ0M2LCAweDNFMjAsIDB4Q0NDNywgMHhDQ0M3LCAweDBCNTksIDB4Q0NDOCwgMHhDQ0M4LCAweDNFMjEsDQorICAgIDB4Q0NDOSwgMHhDQ0M5LCAweDBCNUEsIDB4Q0NDQSwgMHhDQ0NGLCAweDNFMjIsIDB4Q0NEMCwgMHhDQ0QwLCAweDBCNUIsDQorICAgIDB4Q0NEMSwgMHhDQ0QzLCAweDNFMjgsIDB4Q0NENCwgMHhDQ0Q0LCAweDBCNUMsIDB4Q0NENSwgMHhDQ0UzLCAweDNFMkIsDQorICAgIDB4Q0NFNCwgMHhDQ0U0LCAweDBCNUQsIDB4Q0NFNSwgMHhDQ0VCLCAweDNFM0EsIDB4Q0NFQywgMHhDQ0VDLCAweDBCNUUsDQorICAgIDB4Q0NFRCwgMHhDQ0VGLCAweDNFNDEsIDB4Q0NGMCwgMHhDQ0YwLCAweDBCNUYsIDB4Q0NGMSwgMHhDQ0ZGLCAweDNFNDQsDQorICAgIDB4Q0QwMCwgMHhDRDAwLCAweDNFNTMsIDB4Q0QwMSwgMHhDRDAxLCAweDBCNjAsIDB4Q0QwMiwgMHhDRDA3LCAweDNFNTQsDQorICAgIDB4Q0QwOCwgMHhDRDA5LCAweDBCNjEsIDB4Q0QwQSwgMHhDRDBCLCAweDNFNUEsIDB4Q0QwQywgMHhDRDBDLCAweDBCNjMsDQorICAgIDB4Q0QwRCwgMHhDRDBGLCAweDNFNUMsIDB4Q0QxMCwgMHhDRDEwLCAweDBCNjQsIDB4Q0QxMSwgMHhDRDE3LCAweDNFNUYsDQorICAgIDB4Q0QxOCwgMHhDRDE5LCAweDBCNjUsIDB4Q0QxQSwgMHhDRDFBLCAweDNFNjYsIDB4Q0QxQiwgMHhDRDFCLCAweDBCNjcsDQorICAgIDB4Q0QxQywgMHhDRDFDLCAweDNFNjcsIDB4Q0QxRCwgMHhDRDFELCAweDBCNjgsIDB4Q0QxRSwgMHhDRDIzLCAweDNFNjgsDQorICAgIDB4Q0QyNCwgMHhDRDI0LCAweDBCNjksIDB4Q0QyNSwgMHhDRDI3LCAweDNFNkUsIDB4Q0QyOCwgMHhDRDI4LCAweDBCNkEsDQorICAgIDB4Q0QyOSwgMHhDRDJCLCAweDNFNzEsIDB4Q0QyQywgMHhDRDJDLCAweDBCNkIsIDB4Q0QyRCwgMHhDRDM4LCAweDNFNzQsDQorICAgIDB4Q0QzOSwgMHhDRDM5LCAweDBCNkMsIDB4Q0QzQSwgMHhDRDVCLCAweDNFODAsIDB4Q0Q1QywgMHhDRDVDLCAweDBCNkQsDQorICAgIDB4Q0Q1RCwgMHhDRDVGLCAweDNFQTIsIDB4Q0Q2MCwgMHhDRDYwLCAweDBCNkUsIDB4Q0Q2MSwgMHhDRDYzLCAweDNFQTUsDQorICAgIDB4Q0Q2NCwgMHhDRDY0LCAweDBCNkYsIDB4Q0Q2NSwgMHhDRDZCLCAweDNFQTgsIDB4Q0Q2QywgMHhDRDZELCAweDBCNzAsDQorICAgIDB4Q0Q2RSwgMHhDRDZFLCAweDNFQUYsIDB4Q0Q2RiwgMHhDRDZGLCAweDBCNzIsIDB4Q0Q3MCwgMHhDRDcwLCAweDNFQjAsDQorICAgIDB4Q0Q3MSwgMHhDRDcxLCAweDBCNzMsIDB4Q0Q3MiwgMHhDRDc3LCAweDNFQjEsIDB4Q0Q3OCwgMHhDRDc4LCAweDBCNzQsDQorICAgIDB4Q0Q3OSwgMHhDRDg3LCAweDNFQjcsIDB4Q0Q4OCwgMHhDRDg4LCAweDBCNzUsIDB4Q0Q4OSwgMHhDRDkzLCAweDNFQzYsDQorICAgIDB4Q0Q5NCwgMHhDRDk1LCAweDBCNzYsIDB4Q0Q5NiwgMHhDRDk3LCAweDNFRDEsIDB4Q0Q5OCwgMHhDRDk4LCAweDBCNzgsDQorICAgIDB4Q0Q5OSwgMHhDRDlCLCAweDNFRDMsIDB4Q0Q5QywgMHhDRDlDLCAweDBCNzksIDB4Q0Q5RCwgMHhDREEzLCAweDNFRDYsDQorICAgIDB4Q0RBNCwgMHhDREE1LCAweDBCN0EsIDB4Q0RBNiwgMHhDREE2LCAweDNFREQsIDB4Q0RBNywgMHhDREE3LCAweDBCN0MsDQorICAgIDB4Q0RBOCwgMHhDREE4LCAweDNFREUsIDB4Q0RBOSwgMHhDREE5LCAweDBCN0QsIDB4Q0RBQSwgMHhDREFGLCAweDNFREYsDQorICAgIDB4Q0RCMCwgMHhDREIwLCAweDBCN0UsIDB4Q0RCMSwgMHhDREMzLCAweDNFRTUsIDB4Q0RDNCwgMHhDREM0LCAweDBCN0YsDQorICAgIDB4Q0RDNSwgMHhDRENCLCAweDNFRjgsIDB4Q0RDQywgMHhDRENDLCAweDBCODAsIDB4Q0RDRCwgMHhDRENGLCAweDNFRkYsDQorICAgIDB4Q0REMCwgMHhDREQwLCAweDBCODEsIDB4Q0REMSwgMHhDREU3LCAweDNGMDIsIDB4Q0RFOCwgMHhDREU4LCAweDBCODIsDQorICAgIDB4Q0RFOSwgMHhDREVCLCAweDNGMTksIDB4Q0RFQywgMHhDREVDLCAweDBCODMsIDB4Q0RFRCwgMHhDREVGLCAweDNGMUMsDQorICAgIDB4Q0RGMCwgMHhDREYwLCAweDBCODQsIDB4Q0RGMSwgMHhDREY3LCAweDNGMUYsIDB4Q0RGOCwgMHhDREY5LCAweDBCODUsDQorICAgIDB4Q0RGQSwgMHhDREZBLCAweDNGMjYsIDB4Q0RGQiwgMHhDREZCLCAweDBCODcsIDB4Q0RGQywgMHhDREZDLCAweDNGMjcsDQorICAgIDB4Q0RGRCwgMHhDREZELCAweDBCODgsIDB4Q0RGRSwgMHhDREZGLCAweDNGMjgsIDB4Q0UwMCwgMHhDRTAzLCAweDNGMkEsDQorICAgIDB4Q0UwNCwgMHhDRTA0LCAweDBCODksIDB4Q0UwNSwgMHhDRTA3LCAweDNGMkUsIDB4Q0UwOCwgMHhDRTA4LCAweDBCOEEsDQorICAgIDB4Q0UwOSwgMHhDRTBCLCAweDNGMzEsIDB4Q0UwQywgMHhDRTBDLCAweDBCOEIsIDB4Q0UwRCwgMHhDRTEzLCAweDNGMzQsDQorICAgIDB4Q0UxNCwgMHhDRTE0LCAweDBCOEMsIDB4Q0UxNSwgMHhDRTE4LCAweDNGM0IsIDB4Q0UxOSwgMHhDRTE5LCAweDBCOEQsDQorICAgIDB4Q0UxQSwgMHhDRTFGLCAweDNGM0YsIDB4Q0UyMCwgMHhDRTIxLCAweDBCOEUsIDB4Q0UyMiwgMHhDRTIzLCAweDNGNDUsDQorICAgIDB4Q0UyNCwgMHhDRTI0LCAweDBCOTAsIDB4Q0UyNSwgMHhDRTI3LCAweDNGNDcsIDB4Q0UyOCwgMHhDRTI4LCAweDBCOTEsDQorICAgIDB4Q0UyOSwgMHhDRTJGLCAweDNGNEEsIDB4Q0UzMCwgMHhDRTMxLCAweDBCOTIsIDB4Q0UzMiwgMHhDRTMyLCAweDNGNTEsDQorICAgIDB4Q0UzMywgMHhDRTMzLCAweDBCOTQsIDB4Q0UzNCwgMHhDRTM0LCAweDNGNTIsIDB4Q0UzNSwgMHhDRTM1LCAweDBCOTUsDQorICAgIDB4Q0UzNiwgMHhDRTU3LCAweDNGNTMsIDB4Q0U1OCwgMHhDRTU5LCAweDBCOTYsIDB4Q0U1QSwgMHhDRTVCLCAweDNGNzUsDQorICAgIDB4Q0U1QywgMHhDRTVDLCAweDBCOTgsIDB4Q0U1RCwgMHhDRTVFLCAweDNGNzcsIDB4Q0U1RiwgMHhDRTYxLCAweDBCOTksDQorICAgIDB4Q0U2MiwgMHhDRTY3LCAweDNGNzksIDB4Q0U2OCwgMHhDRTY5LCAweDBCOUMsIDB4Q0U2QSwgMHhDRTZBLCAweDNGN0YsDQorICAgIDB4Q0U2QiwgMHhDRTZCLCAweDBCOUUsIDB4Q0U2QywgMHhDRTZDLCAweDNGODAsIDB4Q0U2RCwgMHhDRTZELCAweDBCOUYsDQorICAgIDB4Q0U2RSwgMHhDRTczLCAweDNGODEsIDB4Q0U3NCwgMHhDRTc1LCAweDBCQTAsIDB4Q0U3NiwgMHhDRTc3LCAweDNGODcsDQorICAgIDB4Q0U3OCwgMHhDRTc4LCAweDBCQTIsIDB4Q0U3OSwgMHhDRTdCLCAweDNGODksIDB4Q0U3QywgMHhDRTdDLCAweDBCQTMsDQorICAgIDB4Q0U3RCwgMHhDRTgzLCAweDNGOEMsIDB4Q0U4NCwgMHhDRTg1LCAweDBCQTQsIDB4Q0U4NiwgMHhDRTg2LCAweDNGOTMsDQorICAgIDB4Q0U4NywgMHhDRTg3LCAweDBCQTYsIDB4Q0U4OCwgMHhDRTg4LCAweDNGOTQsIDB4Q0U4OSwgMHhDRTg5LCAweDBCQTcsDQorICAgIDB4Q0U4QSwgMHhDRThGLCAweDNGOTUsIDB4Q0U5MCwgMHhDRTkxLCAweDBCQTgsIDB4Q0U5MiwgMHhDRTkzLCAweDNGOUIsDQorICAgIDB4Q0U5NCwgMHhDRTk0LCAweDBCQUEsIDB4Q0U5NSwgMHhDRTk3LCAweDNGOUQsIDB4Q0U5OCwgMHhDRTk4LCAweDBCQUIsDQorICAgIDB4Q0U5OSwgMHhDRTlGLCAweDNGQTAsIDB4Q0VBMCwgMHhDRUExLCAweDBCQUMsIDB4Q0VBMiwgMHhDRUEyLCAweDNGQTcsDQorICAgIDB4Q0VBMywgMHhDRUE1LCAweDBCQUUsIDB4Q0VBNiwgMHhDRUFCLCAweDNGQTgsIDB4Q0VBQywgMHhDRUFELCAweDBCQjEsDQorICAgIDB4Q0VBRSwgMHhDRUMwLCAweDNGQUUsIDB4Q0VDMSwgMHhDRUMxLCAweDBCQjMsIDB4Q0VDMiwgMHhDRUUzLCAweDNGQzEsDQorICAgIDB4Q0VFNCwgMHhDRUU1LCAweDBCQjQsIDB4Q0VFNiwgMHhDRUU3LCAweDNGRTMsIDB4Q0VFOCwgMHhDRUU4LCAweDBCQjYsDQorICAgIDB4Q0VFOSwgMHhDRUVBLCAweDNGRTUsIDB4Q0VFQiwgMHhDRUVDLCAweDBCQjcsIDB4Q0VFRCwgMHhDRUYzLCAweDNGRTcsDQorICAgIDB4Q0VGNCwgMHhDRUY1LCAweDBCQjksIDB4Q0VGNiwgMHhDRUY2LCAweDNGRUUsIDB4Q0VGNywgMHhDRUY5LCAweDBCQkIsDQorICAgIDB4Q0VGQSwgMHhDRUZGLCAweDNGRUYsIDB4Q0YwMCwgMHhDRjAxLCAweDBCQkUsIDB4Q0YwMiwgMHhDRjAzLCAweDNGRjUsDQorICAgIDB4Q0YwNCwgMHhDRjA0LCAweDBCQzAsIDB4Q0YwNSwgMHhDRjA3LCAweDNGRjcsIDB4Q0YwOCwgMHhDRjA4LCAweDBCQzEsDQorICAgIDB4Q0YwOSwgMHhDRjBGLCAweDNGRkEsIDB4Q0YxMCwgMHhDRjExLCAweDBCQzIsIDB4Q0YxMiwgMHhDRjEyLCAweDQwMDEsDQorICAgIDB4Q0YxMywgMHhDRjEzLCAweDBCQzQsIDB4Q0YxNCwgMHhDRjE0LCAweDQwMDIsIDB4Q0YxNSwgMHhDRjE1LCAweDBCQzUsDQorICAgIDB4Q0YxNiwgMHhDRjFCLCAweDQwMDMsIDB4Q0YxQywgMHhDRjFDLCAweDBCQzYsIDB4Q0YxRCwgMHhDRjFGLCAweDQwMDksDQorICAgIDB4Q0YyMCwgMHhDRjIwLCAweDBCQzcsIDB4Q0YyMSwgMHhDRjIzLCAweDQwMEMsIDB4Q0YyNCwgMHhDRjI0LCAweDBCQzgsDQorICAgIDB4Q0YyNSwgMHhDRjJCLCAweDQwMEYsIDB4Q0YyQywgMHhDRjJELCAweDBCQzksIDB4Q0YyRSwgMHhDRjJFLCAweDQwMTYsDQorICAgIDB4Q0YyRiwgMHhDRjMxLCAweDBCQ0IsIDB4Q0YzMiwgMHhDRjM3LCAweDQwMTcsIDB4Q0YzOCwgMHhDRjM4LCAweDBCQ0UsDQorICAgIDB4Q0YzOSwgMHhDRjUzLCAweDQwMUQsIDB4Q0Y1NCwgMHhDRjU1LCAweDBCQ0YsIDB4Q0Y1NiwgMHhDRjU3LCAweDQwMzgsDQorICAgIDB4Q0Y1OCwgMHhDRjU4LCAweDBCRDEsIDB4Q0Y1OSwgMHhDRjVCLCAweDQwM0EsIDB4Q0Y1QywgMHhDRjVDLCAweDBCRDIsDQorICAgIDB4Q0Y1RCwgMHhDRjYzLCAweDQwM0QsIDB4Q0Y2NCwgMHhDRjY1LCAweDBCRDMsIDB4Q0Y2NiwgMHhDRjY2LCAweDQwNDQsDQorICAgIDB4Q0Y2NywgMHhDRjY3LCAweDBCRDUsIDB4Q0Y2OCwgMHhDRjY4LCAweDQwNDUsIDB4Q0Y2OSwgMHhDRjY5LCAweDBCRDYsDQorICAgIDB4Q0Y2QSwgMHhDRjZGLCAweDQwNDYsIDB4Q0Y3MCwgMHhDRjcxLCAweDBCRDcsIDB4Q0Y3MiwgMHhDRjczLCAweDQwNEMsDQorICAgIDB4Q0Y3NCwgMHhDRjc0LCAweDBCRDksIDB4Q0Y3NSwgMHhDRjc3LCAweDQwNEUsIDB4Q0Y3OCwgMHhDRjc4LCAweDBCREEsDQorICAgIDB4Q0Y3OSwgMHhDRjdGLCAweDQwNTEsIDB4Q0Y4MCwgMHhDRjgwLCAweDBCREIsIDB4Q0Y4MSwgMHhDRjg0LCAweDQwNTgsDQorICAgIDB4Q0Y4NSwgMHhDRjg1LCAweDBCREMsIDB4Q0Y4NiwgMHhDRjhCLCAweDQwNUMsIDB4Q0Y4QywgMHhDRjhDLCAweDBCREQsDQorICAgIDB4Q0Y4RCwgMHhDRkEwLCAweDQwNjIsIDB4Q0ZBMSwgMHhDRkExLCAweDBCREUsIDB4Q0ZBMiwgMHhDRkE3LCAweDQwNzYsDQorICAgIDB4Q0ZBOCwgMHhDRkE4LCAweDBCREYsIDB4Q0ZBOSwgMHhDRkFGLCAweDQwN0MsIDB4Q0ZCMCwgMHhDRkIwLCAweDBCRTAsDQorICAgIDB4Q0ZCMSwgMHhDRkMzLCAweDQwODMsIDB4Q0ZDNCwgMHhDRkM0LCAweDBCRTEsIDB4Q0ZDNSwgMHhDRkRGLCAweDQwOTYsDQorICAgIDB4Q0ZFMCwgMHhDRkUxLCAweDBCRTIsIDB4Q0ZFMiwgMHhDRkUzLCAweDQwQjEsIDB4Q0ZFNCwgMHhDRkU0LCAweDBCRTQsDQorICAgIDB4Q0ZFNSwgMHhDRkU3LCAweDQwQjMsIDB4Q0ZFOCwgMHhDRkU4LCAweDBCRTUsIDB4Q0ZFOSwgMHhDRkVGLCAweDQwQjYsDQorICAgIDB4Q0ZGMCwgMHhDRkYxLCAweDBCRTYsIDB4Q0ZGMiwgMHhDRkYyLCAweDQwQkQsIDB4Q0ZGMywgMHhDRkYzLCAweDBCRTgsDQorICAgIDB4Q0ZGNCwgMHhDRkY0LCAweDQwQkUsIDB4Q0ZGNSwgMHhDRkY1LCAweDBCRTksIDB4Q0ZGNiwgMHhDRkZCLCAweDQwQkYsDQorICAgIDB4Q0ZGQywgMHhDRkZDLCAweDBCRUEsIDB4Q0ZGRCwgMHhDRkZGLCAweDQwQzUsIDB4RDAwMCwgMHhEMDAwLCAweDBCRUIsDQorICAgIDB4RDAwMSwgMHhEMDAzLCAweDQwQzgsIDB4RDAwNCwgMHhEMDA0LCAweDBCRUMsIDB4RDAwNSwgMHhEMDEwLCAweDQwQ0IsDQorICAgIDB4RDAxMSwgMHhEMDExLCAweDBCRUQsIDB4RDAxMiwgMHhEMDE3LCAweDQwRDcsIDB4RDAxOCwgMHhEMDE4LCAweDBCRUUsDQorICAgIDB4RDAxOSwgMHhEMDJDLCAweDQwREQsIDB4RDAyRCwgMHhEMDJELCAweDBCRUYsIDB4RDAyRSwgMHhEMDMzLCAweDQwRjEsDQorICAgIDB4RDAzNCwgMHhEMDM1LCAweDBCRjAsIDB4RDAzNiwgMHhEMDM3LCAweDQwRjcsIDB4RDAzOCwgMHhEMDM4LCAweDBCRjIsDQorICAgIDB4RDAzOSwgMHhEMDNCLCAweDQwRjksIDB4RDAzQywgMHhEMDNDLCAweDBCRjMsIDB4RDAzRCwgMHhEMDQzLCAweDQwRkMsDQorICAgIDB4RDA0NCwgMHhEMDQ1LCAweDBCRjQsIDB4RDA0NiwgMHhEMDQ2LCAweDQxMDMsIDB4RDA0NywgMHhEMDQ3LCAweDBCRjYsDQorICAgIDB4RDA0OCwgMHhEMDQ4LCAweDQxMDQsIDB4RDA0OSwgMHhEMDQ5LCAweDBCRjcsIDB4RDA0QSwgMHhEMDRGLCAweDQxMDUsDQorICAgIDB4RDA1MCwgMHhEMDUwLCAweDBCRjgsIDB4RDA1MSwgMHhEMDUzLCAweDQxMEIsIDB4RDA1NCwgMHhEMDU0LCAweDBCRjksDQorICAgIDB4RDA1NSwgMHhEMDU3LCAweDQxMEUsIDB4RDA1OCwgMHhEMDU4LCAweDBCRkEsIDB4RDA1OSwgMHhEMDVGLCAweDQxMTEsDQorICAgIDB4RDA2MCwgMHhEMDYwLCAweDBCRkIsIDB4RDA2MSwgMHhEMDZCLCAweDQxMTgsIDB4RDA2QywgMHhEMDZELCAweDBCRkMsDQorICAgIDB4RDA2RSwgMHhEMDZGLCAweDQxMjMsIDB4RDA3MCwgMHhEMDcwLCAweDBCRkUsIDB4RDA3MSwgMHhEMDczLCAweDQxMjUsDQorICAgIDB4RDA3NCwgMHhEMDc0LCAweDBCRkYsIDB4RDA3NSwgMHhEMDdCLCAweDQxMjgsIDB4RDA3QywgMHhEMDdELCAweDBDMDAsDQorICAgIDB4RDA3RSwgMHhEMDgwLCAweDQxMkYsIDB4RDA4MSwgMHhEMDgxLCAweDBDMDIsIDB4RDA4MiwgMHhEMEEzLCAweDQxMzIsDQorICAgIDB4RDBBNCwgMHhEMEE1LCAweDBDMDMsIDB4RDBBNiwgMHhEMEE3LCAweDQxNTQsIDB4RDBBOCwgMHhEMEE4LCAweDBDMDUsDQorICAgIDB4RDBBOSwgMHhEMEFCLCAweDQxNTYsIDB4RDBBQywgMHhEMEFDLCAweDBDMDYsIDB4RDBBRCwgMHhEMEIzLCAweDQxNTksDQorICAgIDB4RDBCNCwgMHhEMEI1LCAweDBDMDcsIDB4RDBCNiwgMHhEMEI2LCAweDQxNjAsIDB4RDBCNywgMHhEMEI3LCAweDBDMDksDQorICAgIDB4RDBCOCwgMHhEMEI4LCAweDQxNjEsIDB4RDBCOSwgMHhEMEI5LCAweDBDMEEsIDB4RDBCQSwgMHhEMEJGLCAweDQxNjIsDQorICAgIDB4RDBDMCwgMHhEMEMxLCAweDBDMEIsIDB4RDBDMiwgMHhEMEMzLCAweDQxNjgsIDB4RDBDNCwgMHhEMEM0LCAweDBDMEQsDQorICAgIDB4RDBDNSwgMHhEMEM3LCAweDQxNkEsIDB4RDBDOCwgMHhEMEM5LCAweDBDMEUsIDB4RDBDQSwgMHhEMENGLCAweDQxNkQsDQorICAgIDB4RDBEMCwgMHhEMEQxLCAweDBDMTAsIDB4RDBEMiwgMHhEMEQyLCAweDQxNzMsIDB4RDBEMywgMHhEMEQ1LCAweDBDMTIsDQorICAgIDB4RDBENiwgMHhEMERCLCAweDQxNzQsIDB4RDBEQywgMHhEMERELCAweDBDMTUsIDB4RDBERSwgMHhEMERGLCAweDQxN0EsDQorICAgIDB4RDBFMCwgMHhEMEUwLCAweDBDMTcsIDB4RDBFMSwgMHhEMEUzLCAweDQxN0MsIDB4RDBFNCwgMHhEMEU0LCAweDBDMTgsDQorICAgIDB4RDBFNSwgMHhEMEVCLCAweDQxN0YsIDB4RDBFQywgMHhEMEVELCAweDBDMTksIDB4RDBFRSwgMHhEMEVFLCAweDQxODYsDQorICAgIDB4RDBFRiwgMHhEMEYxLCAweDBDMUIsIDB4RDBGMiwgMHhEMEY3LCAweDQxODcsIDB4RDBGOCwgMHhEMEY4LCAweDBDMUUsDQorICAgIDB4RDBGOSwgMHhEMEZGLCAweDQxOEQsIDB4RDEwMCwgMHhEMTBDLCAweDQxOTQsIDB4RDEwRCwgMHhEMTBELCAweDBDMUYsDQorICAgIDB4RDEwRSwgMHhEMTJGLCAweDQxQTEsIDB4RDEzMCwgMHhEMTMxLCAweDBDMjAsIDB4RDEzMiwgMHhEMTMzLCAweDQxQzMsDQorICAgIDB4RDEzNCwgMHhEMTM0LCAweDBDMjIsIDB4RDEzNSwgMHhEMTM3LCAweDQxQzUsIDB4RDEzOCwgMHhEMTM4LCAweDBDMjMsDQorICAgIDB4RDEzOSwgMHhEMTM5LCAweDQxQzgsIDB4RDEzQSwgMHhEMTNBLCAweDBDMjQsIDB4RDEzQiwgMHhEMTNGLCAweDQxQzksDQorICAgIDB4RDE0MCwgMHhEMTQxLCAweDBDMjUsIDB4RDE0MiwgMHhEMTQyLCAweDQxQ0UsIDB4RDE0MywgMHhEMTQ1LCAweDBDMjcsDQorICAgIDB4RDE0NiwgMHhEMTRCLCAweDQxQ0YsIDB4RDE0QywgMHhEMTRELCAweDBDMkEsIDB4RDE0RSwgMHhEMTRGLCAweDQxRDUsDQorICAgIDB4RDE1MCwgMHhEMTUwLCAweDBDMkMsIDB4RDE1MSwgMHhEMTUzLCAweDQxRDcsIDB4RDE1NCwgMHhEMTU0LCAweDBDMkQsDQorICAgIDB4RDE1NSwgMHhEMTVCLCAweDQxREEsIDB4RDE1QywgMHhEMTVELCAweDBDMkUsIDB4RDE1RSwgMHhEMTVFLCAweDQxRTEsDQorICAgIDB4RDE1RiwgMHhEMTVGLCAweDBDMzAsIDB4RDE2MCwgMHhEMTYwLCAweDQxRTIsIDB4RDE2MSwgMHhEMTYxLCAweDBDMzEsDQorICAgIDB4RDE2MiwgMHhEMTY3LCAweDQxRTMsIDB4RDE2OCwgMHhEMTY4LCAweDBDMzIsIDB4RDE2OSwgMHhEMTZCLCAweDQxRTksDQorICAgIDB4RDE2QywgMHhEMTZDLCAweDBDMzMsIDB4RDE2RCwgMHhEMTdCLCAweDQxRUMsIDB4RDE3QywgMHhEMTdDLCAweDBDMzQsDQorICAgIDB4RDE3RCwgMHhEMTgzLCAweDQxRkIsIDB4RDE4NCwgMHhEMTg0LCAweDBDMzUsIDB4RDE4NSwgMHhEMTg3LCAweDQyMDIsDQorICAgIDB4RDE4OCwgMHhEMTg4LCAweDBDMzYsIDB4RDE4OSwgMHhEMTlGLCAweDQyMDUsIDB4RDFBMCwgMHhEMUExLCAweDBDMzcsDQorICAgIDB4RDFBMiwgMHhEMUEzLCAweDQyMUMsIDB4RDFBNCwgMHhEMUE0LCAweDBDMzksIDB4RDFBNSwgMHhEMUE3LCAweDQyMUUsDQorICAgIDB4RDFBOCwgMHhEMUE4LCAweDBDM0EsIDB4RDFBOSwgMHhEMUFGLCAweDQyMjEsIDB4RDFCMCwgMHhEMUIxLCAweDBDM0IsDQorICAgIDB4RDFCMiwgMHhEMUIyLCAweDQyMjgsIDB4RDFCMywgMHhEMUIzLCAweDBDM0QsIDB4RDFCNCwgMHhEMUI0LCAweDQyMjksDQorICAgIDB4RDFCNSwgMHhEMUI1LCAweDBDM0UsIDB4RDFCNiwgMHhEMUI5LCAweDQyMkEsIDB4RDFCQSwgMHhEMUJBLCAweDBDM0YsDQorICAgIDB4RDFCQiwgMHhEMUJCLCAweDQyMkUsIDB4RDFCQywgMHhEMUJDLCAweDBDNDAsIDB4RDFCRCwgMHhEMUJGLCAweDQyMkYsDQorICAgIDB4RDFDMCwgMHhEMUMwLCAweDBDNDEsIDB4RDFDMSwgMHhEMUQ3LCAweDQyMzIsIDB4RDFEOCwgMHhEMUQ4LCAweDBDNDIsDQorICAgIDB4RDFEOSwgMHhEMUYzLCAweDQyNDksIDB4RDFGNCwgMHhEMUY0LCAweDBDNDMsIDB4RDFGNSwgMHhEMUY3LCAweDQyNjQsDQorICAgIDB4RDFGOCwgMHhEMUY4LCAweDBDNDQsIDB4RDFGOSwgMHhEMUZGLCAweDQyNjcsIDB4RDIwMCwgMHhEMjA2LCAweDQyNkUsDQorICAgIDB4RDIwNywgMHhEMjA3LCAweDBDNDUsIDB4RDIwOCwgMHhEMjA4LCAweDQyNzUsIDB4RDIwOSwgMHhEMjA5LCAweDBDNDYsDQorICAgIDB4RDIwQSwgMHhEMjBGLCAweDQyNzYsIDB4RDIxMCwgMHhEMjEwLCAweDBDNDcsIDB4RDIxMSwgMHhEMjJCLCAweDQyN0MsDQorICAgIDB4RDIyQywgMHhEMjJELCAweDBDNDgsIDB4RDIyRSwgMHhEMjJGLCAweDQyOTcsIDB4RDIzMCwgMHhEMjMwLCAweDBDNEEsDQorICAgIDB4RDIzMSwgMHhEMjMzLCAweDQyOTksIDB4RDIzNCwgMHhEMjM0LCAweDBDNEIsIDB4RDIzNSwgMHhEMjNCLCAweDQyOUMsDQorICAgIDB4RDIzQywgMHhEMjNELCAweDBDNEMsIDB4RDIzRSwgMHhEMjNFLCAweDQyQTMsIDB4RDIzRiwgMHhEMjNGLCAweDBDNEUsDQorICAgIDB4RDI0MCwgMHhEMjQwLCAweDQyQTQsIDB4RDI0MSwgMHhEMjQxLCAweDBDNEYsIDB4RDI0MiwgMHhEMjQ3LCAweDQyQTUsDQorICAgIDB4RDI0OCwgMHhEMjQ4LCAweDBDNTAsIDB4RDI0OSwgMHhEMjVCLCAweDQyQUIsIDB4RDI1QywgMHhEMjVDLCAweDBDNTEsDQorICAgIDB4RDI1RCwgMHhEMjYzLCAweDQyQkUsIDB4RDI2NCwgMHhEMjY0LCAweDBDNTIsIDB4RDI2NSwgMHhEMjdGLCAweDQyQzUsDQorICAgIDB4RDI4MCwgMHhEMjgxLCAweDBDNTMsIDB4RDI4MiwgMHhEMjgzLCAweDQyRTAsIDB4RDI4NCwgMHhEMjg0LCAweDBDNTUsDQorICAgIDB4RDI4NSwgMHhEMjg3LCAweDQyRTIsIDB4RDI4OCwgMHhEMjg4LCAweDBDNTYsIDB4RDI4OSwgMHhEMjhGLCAweDQyRTUsDQorICAgIDB4RDI5MCwgMHhEMjkxLCAweDBDNTcsIDB4RDI5MiwgMHhEMjk0LCAweDQyRUMsIDB4RDI5NSwgMHhEMjk1LCAweDBDNTksDQorICAgIDB4RDI5NiwgMHhEMjlCLCAweDQyRUYsIDB4RDI5QywgMHhEMjlDLCAweDBDNUEsIDB4RDI5RCwgMHhEMjlGLCAweDQyRjUsDQorICAgIDB4RDJBMCwgMHhEMkEwLCAweDBDNUIsIDB4RDJBMSwgMHhEMkEzLCAweDQyRjgsIDB4RDJBNCwgMHhEMkE0LCAweDBDNUMsDQorICAgIDB4RDJBNSwgMHhEMkFCLCAweDQyRkIsIDB4RDJBQywgMHhEMkFDLCAweDBDNUQsIDB4RDJBRCwgMHhEMkIwLCAweDQzMDIsDQorICAgIDB4RDJCMSwgMHhEMkIxLCAweDBDNUUsIDB4RDJCMiwgMHhEMkI3LCAweDQzMDYsIDB4RDJCOCwgMHhEMkI5LCAweDBDNUYsDQorICAgIDB4RDJCQSwgMHhEMkJCLCAweDQzMEMsIDB4RDJCQywgMHhEMkJDLCAweDBDNjEsIDB4RDJCRCwgMHhEMkJFLCAweDQzMEUsDQorICAgIDB4RDJCRiwgMHhEMkMwLCAweDBDNjIsIDB4RDJDMSwgMHhEMkMxLCAweDQzMTAsIDB4RDJDMiwgMHhEMkMyLCAweDBDNjQsDQorICAgIDB4RDJDMywgMHhEMkM3LCAweDQzMTEsIDB4RDJDOCwgMHhEMkM5LCAweDBDNjUsIDB4RDJDQSwgMHhEMkNBLCAweDQzMTYsDQorICAgIDB4RDJDQiwgMHhEMkNCLCAweDBDNjcsIDB4RDJDQywgMHhEMkQzLCAweDQzMTcsIDB4RDJENCwgMHhEMkQ0LCAweDBDNjgsDQorICAgIDB4RDJENSwgMHhEMkQ3LCAweDQzMUYsIDB4RDJEOCwgMHhEMkQ4LCAweDBDNjksIDB4RDJEOSwgMHhEMkRCLCAweDQzMjIsDQorICAgIDB4RDJEQywgMHhEMkRDLCAweDBDNkEsIDB4RDJERCwgMHhEMkUzLCAweDQzMjUsIDB4RDJFNCwgMHhEMkU1LCAweDBDNkIsDQorICAgIDB4RDJFNiwgMHhEMkVGLCAweDQzMkMsIDB4RDJGMCwgMHhEMkYxLCAweDBDNkQsIDB4RDJGMiwgMHhEMkYzLCAweDQzMzYsDQorICAgIDB4RDJGNCwgMHhEMkY0LCAweDBDNkYsIDB4RDJGNSwgMHhEMkY3LCAweDQzMzgsIDB4RDJGOCwgMHhEMkY4LCAweDBDNzAsDQorICAgIDB4RDJGOSwgMHhEMkZGLCAweDQzM0IsIDB4RDMwMCwgMHhEMzAxLCAweDBDNzEsIDB4RDMwMiwgMHhEMzAyLCAweDQzNDIsDQorICAgIDB4RDMwMywgMHhEMzAzLCAweDBDNzMsIDB4RDMwNCwgMHhEMzA0LCAweDQzNDMsIDB4RDMwNSwgMHhEMzA1LCAweDBDNzQsDQorICAgIDB4RDMwNiwgMHhEMzBCLCAweDQzNDQsIDB4RDMwQywgMHhEMzBFLCAweDBDNzUsIDB4RDMwRiwgMHhEMzBGLCAweDQzNEEsDQorICAgIDB4RDMxMCwgMHhEMzEwLCAweDBDNzgsIDB4RDMxMSwgMHhEMzEzLCAweDQzNEIsIDB4RDMxNCwgMHhEMzE0LCAweDBDNzksDQorICAgIDB4RDMxNSwgMHhEMzE1LCAweDQzNEUsIDB4RDMxNiwgMHhEMzE2LCAweDBDN0EsIDB4RDMxNywgMHhEMzFCLCAweDQzNEYsDQorICAgIDB4RDMxQywgMHhEMzFELCAweDBDN0IsIDB4RDMxRSwgMHhEMzFFLCAweDQzNTQsIDB4RDMxRiwgMHhEMzIxLCAweDBDN0QsDQorICAgIDB4RDMyMiwgMHhEMzI0LCAweDQzNTUsIDB4RDMyNSwgMHhEMzI1LCAweDBDODAsIDB4RDMyNiwgMHhEMzI3LCAweDQzNTgsDQorICAgIDB4RDMyOCwgMHhEMzI5LCAweDBDODEsIDB4RDMyQSwgMHhEMzJCLCAweDQzNUEsIDB4RDMyQywgMHhEMzJDLCAweDBDODMsDQorICAgIDB4RDMyRCwgMHhEMzJGLCAweDQzNUMsIDB4RDMzMCwgMHhEMzMwLCAweDBDODQsIDB4RDMzMSwgMHhEMzM3LCAweDQzNUYsDQorICAgIDB4RDMzOCwgMHhEMzM5LCAweDBDODUsIDB4RDMzQSwgMHhEMzNBLCAweDQzNjYsIDB4RDMzQiwgMHhEMzNELCAweDBDODcsDQorICAgIDB4RDMzRSwgMHhEMzQzLCAweDQzNjcsIDB4RDM0NCwgMHhEMzQ1LCAweDBDOEEsIDB4RDM0NiwgMHhEMzdCLCAweDQzNkQsDQorICAgIDB4RDM3QywgMHhEMzdELCAweDBDOEMsIDB4RDM3RSwgMHhEMzdGLCAweDQzQTMsIDB4RDM4MCwgMHhEMzgwLCAweDBDOEUsDQorICAgIDB4RDM4MSwgMHhEMzgzLCAweDQzQTUsIDB4RDM4NCwgMHhEMzg0LCAweDBDOEYsIDB4RDM4NSwgMHhEMzhCLCAweDQzQTgsDQorICAgIDB4RDM4QywgMHhEMzhELCAweDBDOTAsIDB4RDM4RSwgMHhEMzhFLCAweDQzQUYsIDB4RDM4RiwgMHhEMzkxLCAweDBDOTIsDQorICAgIDB4RDM5MiwgMHhEMzk3LCAweDQzQjAsIDB4RDM5OCwgMHhEMzk5LCAweDBDOTUsIDB4RDM5QSwgMHhEMzlCLCAweDQzQjYsDQorICAgIDB4RDM5QywgMHhEMzlDLCAweDBDOTcsIDB4RDM5RCwgMHhEMzlGLCAweDQzQjgsIDB4RDNBMCwgMHhEM0EwLCAweDBDOTgsDQorICAgIDB4RDNBMSwgMHhEM0E3LCAweDQzQkIsIDB4RDNBOCwgMHhEM0E5LCAweDBDOTksIDB4RDNBQSwgMHhEM0FBLCAweDQzQzIsDQorICAgIDB4RDNBQiwgMHhEM0FCLCAweDBDOUIsIDB4RDNBQywgMHhEM0FDLCAweDQzQzMsIDB4RDNBRCwgMHhEM0FELCAweDBDOUMsDQorICAgIDB4RDNBRSwgMHhEM0IzLCAweDQzQzQsIDB4RDNCNCwgMHhEM0I0LCAweDBDOUQsIDB4RDNCNSwgMHhEM0I3LCAweDQzQ0EsDQorICAgIDB4RDNCOCwgMHhEM0I4LCAweDBDOUUsIDB4RDNCOSwgMHhEM0JCLCAweDQzQ0QsIDB4RDNCQywgMHhEM0JDLCAweDBDOUYsDQorICAgIDB4RDNCRCwgMHhEM0MzLCAweDQzRDAsIDB4RDNDNCwgMHhEM0M1LCAweDBDQTAsIDB4RDNDNiwgMHhEM0M3LCAweDQzRDcsDQorICAgIDB4RDNDOCwgMHhEM0M5LCAweDBDQTIsIDB4RDNDQSwgMHhEM0NGLCAweDQzRDksIDB4RDNEMCwgMHhEM0QwLCAweDBDQTQsDQorICAgIDB4RDNEMSwgMHhEM0Q3LCAweDQzREYsIDB4RDNEOCwgMHhEM0Q4LCAweDBDQTUsIDB4RDNEOSwgMHhEM0UwLCAweDQzRTYsDQorICAgIDB4RDNFMSwgMHhEM0UxLCAweDBDQTYsIDB4RDNFMiwgMHhEM0UyLCAweDQzRUUsIDB4RDNFMywgMHhEM0UzLCAweDBDQTcsDQorICAgIDB4RDNFNCwgMHhEM0VCLCAweDQzRUYsIDB4RDNFQywgMHhEM0VELCAweDBDQTgsIDB4RDNFRSwgMHhEM0VGLCAweDQzRjcsDQorICAgIDB4RDNGMCwgMHhEM0YwLCAweDBDQUEsIDB4RDNGMSwgMHhEM0YzLCAweDQzRjksIDB4RDNGNCwgMHhEM0Y0LCAweDBDQUIsDQorICAgIDB4RDNGNSwgMHhEM0ZCLCAweDQzRkMsIDB4RDNGQywgMHhEM0ZELCAweDBDQUMsIDB4RDNGRSwgMHhEM0ZFLCAweDQ0MDMsDQorICAgIDB4RDNGRiwgMHhEM0ZGLCAweDBDQUUsIDB4RDQwMCwgMHhENDAwLCAweDQ0MDQsIDB4RDQwMSwgMHhENDAxLCAweDBDQUYsDQorICAgIDB4RDQwMiwgMHhENDA3LCAweDQ0MDUsIDB4RDQwOCwgMHhENDA4LCAweDBDQjAsIDB4RDQwOSwgMHhENDFDLCAweDQ0MEIsDQorICAgIDB4RDQxRCwgMHhENDFELCAweDBDQjEsIDB4RDQxRSwgMHhENDNGLCAweDQ0MUYsIDB4RDQ0MCwgMHhENDQwLCAweDBDQjIsDQorICAgIDB4RDQ0MSwgMHhENDQzLCAweDQ0NDEsIDB4RDQ0NCwgMHhENDQ0LCAweDBDQjMsIDB4RDQ0NSwgMHhENDVCLCAweDQ0NDQsDQorICAgIDB4RDQ1QywgMHhENDVDLCAweDBDQjQsIDB4RDQ1RCwgMHhENDVGLCAweDQ0NUIsIDB4RDQ2MCwgMHhENDYwLCAweDBDQjUsDQorICAgIDB4RDQ2MSwgMHhENDYzLCAweDQ0NUUsIDB4RDQ2NCwgMHhENDY0LCAweDBDQjYsIDB4RDQ2NSwgMHhENDZDLCAweDQ0NjEsDQorICAgIDB4RDQ2RCwgMHhENDZELCAweDBDQjcsIDB4RDQ2RSwgMHhENDZFLCAweDQ0NjksIDB4RDQ2RiwgMHhENDZGLCAweDBDQjgsDQorICAgIDB4RDQ3MCwgMHhENDc3LCAweDQ0NkEsIDB4RDQ3OCwgMHhENDc5LCAweDBDQjksIDB4RDQ3QSwgMHhENDdCLCAweDQ0NzIsDQorICAgIDB4RDQ3QywgMHhENDdDLCAweDBDQkIsIDB4RDQ3RCwgMHhENDdFLCAweDQ0NzQsIDB4RDQ3RiwgMHhENDgwLCAweDBDQkMsDQorICAgIDB4RDQ4MSwgMHhENDgxLCAweDQ0NzYsIDB4RDQ4MiwgMHhENDgyLCAweDBDQkUsIDB4RDQ4MywgMHhENDg3LCAweDQ0NzcsDQorICAgIDB4RDQ4OCwgMHhENDg5LCAweDBDQkYsIDB4RDQ4QSwgMHhENDhBLCAweDQ0N0MsIDB4RDQ4QiwgMHhENDhCLCAweDBDQzEsDQorICAgIDB4RDQ4QywgMHhENDhDLCAweDQ0N0QsIDB4RDQ4RCwgMHhENDhELCAweDBDQzIsIDB4RDQ4RSwgMHhENDkzLCAweDQ0N0UsDQorICAgIDB4RDQ5NCwgMHhENDk0LCAweDBDQzMsIDB4RDQ5NSwgMHhENEE4LCAweDQ0ODQsIDB4RDRBOSwgMHhENEE5LCAweDBDQzQsDQorICAgIDB4RDRBQSwgMHhENENCLCAweDQ0OTgsIDB4RDRDQywgMHhENENDLCAweDBDQzUsIDB4RDRDRCwgMHhENENGLCAweDQ0QkEsDQorICAgIDB4RDREMCwgMHhENEQwLCAweDBDQzYsIDB4RDREMSwgMHhENEQzLCAweDQ0QkQsIDB4RDRENCwgMHhENEQ0LCAweDBDQzcsDQorICAgIDB4RDRENSwgMHhENERCLCAweDQ0QzAsIDB4RDREQywgMHhENERDLCAweDBDQzgsIDB4RDRERCwgMHhENERFLCAweDQ0QzcsDQorICAgIDB4RDRERiwgMHhENERGLCAweDBDQzksIDB4RDRFMCwgMHhENEU3LCAweDQ0QzksIDB4RDRFOCwgMHhENEU4LCAweDBDQ0EsDQorICAgIDB4RDRFOSwgMHhENEVCLCAweDQ0RDEsIDB4RDRFQywgMHhENEVDLCAweDBDQ0IsIDB4RDRFRCwgMHhENEVGLCAweDQ0RDQsDQorICAgIDB4RDRGMCwgMHhENEYwLCAweDBDQ0MsIDB4RDRGMSwgMHhENEY3LCAweDQ0RDcsIDB4RDRGOCwgMHhENEY4LCAweDBDQ0QsDQorICAgIDB4RDRGOSwgMHhENEZBLCAweDQ0REUsIDB4RDRGQiwgMHhENEZCLCAweDBDQ0UsIDB4RDRGQywgMHhENEZDLCAweDQ0RTAsDQorICAgIDB4RDRGRCwgMHhENEZELCAweDBDQ0YsIDB4RDRGRSwgMHhENEZGLCAweDQ0RTEsIDB4RDUwMCwgMHhENTAzLCAweDQ0RTMsDQorICAgIDB4RDUwNCwgMHhENTA0LCAweDBDRDAsIDB4RDUwNSwgMHhENTA3LCAweDQ0RTcsIDB4RDUwOCwgMHhENTA4LCAweDBDRDEsDQorICAgIDB4RDUwOSwgMHhENTBCLCAweDQ0RUEsIDB4RDUwQywgMHhENTBDLCAweDBDRDIsIDB4RDUwRCwgMHhENTEzLCAweDQ0RUQsDQorICAgIDB4RDUxNCwgMHhENTE1LCAweDBDRDMsIDB4RDUxNiwgMHhENTE2LCAweDQ0RjQsIDB4RDUxNywgMHhENTE3LCAweDBDRDUsDQorICAgIDB4RDUxOCwgMHhENTNCLCAweDQ0RjUsIDB4RDUzQywgMHhENTNELCAweDBDRDYsIDB4RDUzRSwgMHhENTNGLCAweDQ1MTksDQorICAgIDB4RDU0MCwgMHhENTQwLCAweDBDRDgsIDB4RDU0MSwgMHhENTQzLCAweDQ1MUIsIDB4RDU0NCwgMHhENTQ0LCAweDBDRDksDQorICAgIDB4RDU0NSwgMHhENTRCLCAweDQ1MUUsIDB4RDU0QywgMHhENTRELCAweDBDREEsIDB4RDU0RSwgMHhENTRFLCAweDQ1MjUsDQorICAgIDB4RDU0RiwgMHhENTRGLCAweDBDREMsIDB4RDU1MCwgMHhENTUwLCAweDQ1MjYsIDB4RDU1MSwgMHhENTUxLCAweDBDREQsDQorICAgIDB4RDU1MiwgMHhENTU3LCAweDQ1MjcsIDB4RDU1OCwgMHhENTU5LCAweDBDREUsIDB4RDU1QSwgMHhENTVCLCAweDQ1MkQsDQorICAgIDB4RDU1QywgMHhENTVDLCAweDBDRTAsIDB4RDU1RCwgMHhENTVGLCAweDQ1MkYsIDB4RDU2MCwgMHhENTYwLCAweDBDRTEsDQorICAgIDB4RDU2MSwgMHhENTY0LCAweDQ1MzIsIDB4RDU2NSwgMHhENTY1LCAweDBDRTIsIDB4RDU2NiwgMHhENTY3LCAweDQ1MzYsDQorICAgIDB4RDU2OCwgMHhENTY5LCAweDBDRTMsIDB4RDU2QSwgMHhENTZBLCAweDQ1MzgsIDB4RDU2QiwgMHhENTZCLCAweDBDRTUsDQorICAgIDB4RDU2QywgMHhENTZDLCAweDQ1MzksIDB4RDU2RCwgMHhENTZELCAweDBDRTYsIDB4RDU2RSwgMHhENTczLCAweDQ1M0EsDQorICAgIDB4RDU3NCwgMHhENTc1LCAweDBDRTcsIDB4RDU3NiwgMHhENTc3LCAweDQ1NDAsIDB4RDU3OCwgMHhENTc4LCAweDBDRTksDQorICAgIDB4RDU3OSwgMHhENTdCLCAweDQ1NDIsIDB4RDU3QywgMHhENTdDLCAweDBDRUEsIDB4RDU3RCwgMHhENTgzLCAweDQ1NDUsDQorICAgIDB4RDU4NCwgMHhENTg1LCAweDBDRUIsIDB4RDU4NiwgMHhENTg2LCAweDQ1NEMsIDB4RDU4NywgMHhENTg5LCAweDBDRUQsDQorICAgIDB4RDU4QSwgMHhENThGLCAweDQ1NEQsIDB4RDU5MCwgMHhENTkwLCAweDBDRjAsIDB4RDU5MSwgMHhENUE0LCAweDQ1NTMsDQorICAgIDB4RDVBNSwgMHhENUE1LCAweDBDRjEsIDB4RDVBNiwgMHhENUM3LCAweDQ1NjcsIDB4RDVDOCwgMHhENUM5LCAweDBDRjIsDQorICAgIDB4RDVDQSwgMHhENUNCLCAweDQ1ODksIDB4RDVDQywgMHhENUNDLCAweDBDRjQsIDB4RDVDRCwgMHhENUNGLCAweDQ1OEIsDQorICAgIDB4RDVEMCwgMHhENUQwLCAweDBDRjUsIDB4RDVEMSwgMHhENUQxLCAweDQ1OEUsIDB4RDVEMiwgMHhENUQyLCAweDBDRjYsDQorICAgIDB4RDVEMywgMHhENUQ3LCAweDQ1OEYsIDB4RDVEOCwgMHhENUQ5LCAweDBDRjcsIDB4RDVEQSwgMHhENURBLCAweDQ1OTQsDQorICAgIDB4RDVEQiwgMHhENURCLCAweDBDRjksIDB4RDVEQywgMHhENURDLCAweDQ1OTUsIDB4RDVERCwgMHhENURELCAweDBDRkEsDQorICAgIDB4RDVERSwgMHhENUUzLCAweDQ1OTYsIDB4RDVFNCwgMHhENUU1LCAweDBDRkIsIDB4RDVFNiwgMHhENUU3LCAweDQ1OUMsDQorICAgIDB4RDVFOCwgMHhENUU4LCAweDBDRkQsIDB4RDVFOSwgMHhENUVCLCAweDQ1OUUsIDB4RDVFQywgMHhENUVDLCAweDBDRkUsDQorICAgIDB4RDVFRCwgMHhENUYzLCAweDQ1QTEsIDB4RDVGNCwgMHhENUY1LCAweDBDRkYsIDB4RDVGNiwgMHhENUY2LCAweDQ1QTgsDQorICAgIDB4RDVGNywgMHhENUY3LCAweDBEMDEsIDB4RDVGOCwgMHhENUY4LCAweDQ1QTksIDB4RDVGOSwgMHhENUY5LCAweDBEMDIsDQorICAgIDB4RDVGQSwgMHhENUZGLCAweDQ1QUEsIDB4RDYwMCwgMHhENjAxLCAweDBEMDMsIDB4RDYwMiwgMHhENjAzLCAweDQ1QjAsDQorICAgIDB4RDYwNCwgMHhENjA0LCAweDBEMDUsIDB4RDYwNSwgMHhENjA3LCAweDQ1QjIsIDB4RDYwOCwgMHhENjA4LCAweDBEMDYsDQorICAgIDB4RDYwOSwgMHhENjBGLCAweDQ1QjUsIDB4RDYxMCwgMHhENjExLCAweDBEMDcsIDB4RDYxMiwgMHhENjEyLCAweDQ1QkMsDQorICAgIDB4RDYxMywgMHhENjE1LCAweDBEMDksIDB4RDYxNiwgMHhENjFCLCAweDQ1QkQsIDB4RDYxQywgMHhENjFDLCAweDBEMEMsDQorICAgIDB4RDYxRCwgMHhENjFGLCAweDQ1QzMsIDB4RDYyMCwgMHhENjIwLCAweDBEMEQsIDB4RDYyMSwgMHhENjIzLCAweDQ1QzYsDQorICAgIDB4RDYyNCwgMHhENjI0LCAweDBEMEUsIDB4RDYyNSwgMHhENjJDLCAweDQ1QzksIDB4RDYyRCwgMHhENjJELCAweDBEMEYsDQorICAgIDB4RDYyRSwgMHhENjM3LCAweDQ1RDEsIDB4RDYzOCwgMHhENjM5LCAweDBEMTAsIDB4RDYzQSwgMHhENjNCLCAweDQ1REIsDQorICAgIDB4RDYzQywgMHhENjNDLCAweDBEMTIsIDB4RDYzRCwgMHhENjNGLCAweDQ1REQsIDB4RDY0MCwgMHhENjQwLCAweDBEMTMsDQorICAgIDB4RDY0MSwgMHhENjQ0LCAweDQ1RTAsIDB4RDY0NSwgMHhENjQ1LCAweDBEMTQsIDB4RDY0NiwgMHhENjQ3LCAweDQ1RTQsDQorICAgIDB4RDY0OCwgMHhENjQ5LCAweDBEMTUsIDB4RDY0QSwgMHhENjRBLCAweDQ1RTYsIDB4RDY0QiwgMHhENjRCLCAweDBEMTcsDQorICAgIDB4RDY0QywgMHhENjRDLCAweDQ1RTcsIDB4RDY0RCwgMHhENjRELCAweDBEMTgsIDB4RDY0RSwgMHhENjUwLCAweDQ1RTgsDQorICAgIDB4RDY1MSwgMHhENjUxLCAweDBEMTksIDB4RDY1MiwgMHhENjUzLCAweDQ1RUIsIDB4RDY1NCwgMHhENjU1LCAweDBEMUEsDQorICAgIDB4RDY1NiwgMHhENjU3LCAweDQ1RUQsIDB4RDY1OCwgMHhENjU4LCAweDBEMUMsIDB4RDY1OSwgMHhENjVCLCAweDQ1RUYsDQorICAgIDB4RDY1QywgMHhENjVDLCAweDBEMUQsIDB4RDY1RCwgMHhENjY2LCAweDQ1RjIsIDB4RDY2NywgMHhENjY3LCAweDBEMUUsDQorICAgIDB4RDY2OCwgMHhENjY4LCAweDQ1RkMsIDB4RDY2OSwgMHhENjY5LCAweDBEMUYsIDB4RDY2QSwgMHhENjZGLCAweDQ1RkQsDQorICAgIDB4RDY3MCwgMHhENjcxLCAweDBEMjAsIDB4RDY3MiwgMHhENjczLCAweDQ2MDMsIDB4RDY3NCwgMHhENjc0LCAweDBEMjIsDQorICAgIDB4RDY3NSwgMHhENjgyLCAweDQ2MDUsIDB4RDY4MywgMHhENjgzLCAweDBEMjMsIDB4RDY4NCwgMHhENjg0LCAweDQ2MTMsDQorICAgIDB4RDY4NSwgMHhENjg1LCAweDBEMjQsIDB4RDY4NiwgMHhENjhCLCAweDQ2MTQsIDB4RDY4QywgMHhENjhELCAweDBEMjUsDQorICAgIDB4RDY4RSwgMHhENjhGLCAweDQ2MUEsIDB4RDY5MCwgMHhENjkwLCAweDBEMjcsIDB4RDY5MSwgMHhENjkzLCAweDQ2MUMsDQorICAgIDB4RDY5NCwgMHhENjk0LCAweDBEMjgsIDB4RDY5NSwgMHhENjlDLCAweDQ2MUYsIDB4RDY5RCwgMHhENjlELCAweDBEMjksDQorICAgIDB4RDY5RSwgMHhENjlFLCAweDQ2MjcsIDB4RDY5RiwgMHhENjlGLCAweDBEMkEsIDB4RDZBMCwgMHhENkEwLCAweDQ2MjgsDQorICAgIDB4RDZBMSwgMHhENkExLCAweDBEMkIsIDB4RDZBMiwgMHhENkE3LCAweDQ2MjksIDB4RDZBOCwgMHhENkE4LCAweDBEMkMsDQorICAgIDB4RDZBOSwgMHhENkFCLCAweDQ2MkYsIDB4RDZBQywgMHhENkFDLCAweDBEMkQsIDB4RDZBRCwgMHhENkFGLCAweDQ2MzIsDQorICAgIDB4RDZCMCwgMHhENkIwLCAweDBEMkUsIDB4RDZCMSwgMHhENkI4LCAweDQ2MzUsIDB4RDZCOSwgMHhENkI5LCAweDBEMkYsDQorICAgIDB4RDZCQSwgMHhENkJBLCAweDQ2M0QsIDB4RDZCQiwgMHhENkJCLCAweDBEMzAsIDB4RDZCQywgMHhENkMzLCAweDQ2M0UsDQorICAgIDB4RDZDNCwgMHhENkM1LCAweDBEMzEsIDB4RDZDNiwgMHhENkM3LCAweDQ2NDYsIDB4RDZDOCwgMHhENkM4LCAweDBEMzMsDQorICAgIDB4RDZDOSwgMHhENkNCLCAweDQ2NDgsIDB4RDZDQywgMHhENkNDLCAweDBEMzQsIDB4RDZDRCwgMHhENkQwLCAweDQ2NEIsDQorICAgIDB4RDZEMSwgMHhENkQxLCAweDBEMzUsIDB4RDZEMiwgMHhENkQzLCAweDQ2NEYsIDB4RDZENCwgMHhENkQ0LCAweDBEMzYsDQorICAgIDB4RDZENSwgMHhENkQ2LCAweDQ2NTEsIDB4RDZENywgMHhENkQ3LCAweDBEMzcsIDB4RDZEOCwgMHhENkQ4LCAweDQ2NTMsDQorICAgIDB4RDZEOSwgMHhENkQ5LCAweDBEMzgsIDB4RDZEQSwgMHhENkRGLCAweDQ2NTQsIDB4RDZFMCwgMHhENkUwLCAweDBEMzksDQorICAgIDB4RDZFMSwgMHhENkUzLCAweDQ2NUEsIDB4RDZFNCwgMHhENkU0LCAweDBEM0EsIDB4RDZFNSwgMHhENkU3LCAweDQ2NUQsDQorICAgIDB4RDZFOCwgMHhENkU4LCAweDBEM0IsIDB4RDZFOSwgMHhENkVGLCAweDQ2NjAsIDB4RDZGMCwgMHhENkYwLCAweDBEM0MsDQorICAgIDB4RDZGMSwgMHhENkY0LCAweDQ2NjcsIDB4RDZGNSwgMHhENkY1LCAweDBEM0QsIDB4RDZGNiwgMHhENkZCLCAweDQ2NkIsDQorICAgIDB4RDZGQywgMHhENkZELCAweDBEM0UsIDB4RDZGRSwgMHhENkZGLCAweDQ2NzEsIDB4RDcwMCwgMHhENzAwLCAweDBENDAsDQorICAgIDB4RDcwMSwgMHhENzAzLCAweDQ2NzMsIDB4RDcwNCwgMHhENzA0LCAweDBENDEsIDB4RDcwNSwgMHhENzEwLCAweDQ2NzYsDQorICAgIDB4RDcxMSwgMHhENzExLCAweDBENDIsIDB4RDcxMiwgMHhENzE3LCAweDQ2ODIsIDB4RDcxOCwgMHhENzE5LCAweDBENDMsDQorICAgIDB4RDcxQSwgMHhENzFCLCAweDQ2ODgsIDB4RDcxQywgMHhENzFDLCAweDBENDUsIDB4RDcxRCwgMHhENzFGLCAweDQ2OEEsDQorICAgIDB4RDcyMCwgMHhENzIwLCAweDBENDYsIDB4RDcyMSwgMHhENzI3LCAweDQ2OEQsIDB4RDcyOCwgMHhENzI5LCAweDBENDcsDQorICAgIDB4RDcyQSwgMHhENzJBLCAweDQ2OTQsIDB4RDcyQiwgMHhENzJCLCAweDBENDksIDB4RDcyQywgMHhENzJDLCAweDQ2OTUsDQorICAgIDB4RDcyRCwgMHhENzJELCAweDBENEEsIDB4RDcyRSwgMHhENzMzLCAweDQ2OTYsIDB4RDczNCwgMHhENzM1LCAweDBENEIsDQorICAgIDB4RDczNiwgMHhENzM3LCAweDQ2OUMsIDB4RDczOCwgMHhENzM4LCAweDBENEQsIDB4RDczOSwgMHhENzNCLCAweDQ2OUUsDQorICAgIDB4RDczQywgMHhENzNDLCAweDBENEUsIDB4RDczRCwgMHhENzQzLCAweDQ2QTEsIDB4RDc0NCwgMHhENzQ0LCAweDBENEYsDQorICAgIDB4RDc0NSwgMHhENzQ2LCAweDQ2QTgsIDB4RDc0NywgMHhENzQ3LCAweDBENTAsIDB4RDc0OCwgMHhENzQ4LCAweDQ2QUEsDQorICAgIDB4RDc0OSwgMHhENzQ5LCAweDBENTEsIDB4RDc0QSwgMHhENzRGLCAweDQ2QUIsIDB4RDc1MCwgMHhENzUxLCAweDBENTIsDQorICAgIDB4RDc1MiwgMHhENzUzLCAweDQ2QjEsIDB4RDc1NCwgMHhENzU0LCAweDBENTQsIDB4RDc1NSwgMHhENzU1LCAweDQ2QjMsDQorICAgIDB4RDc1NiwgMHhENzU5LCAweDBENTUsIDB4RDc1QSwgMHhENzVGLCAweDQ2QjQsIDB4RDc2MCwgMHhENzYxLCAweDBENTksDQorICAgIDB4RDc2MiwgMHhENzYyLCAweDQ2QkEsIDB4RDc2MywgMHhENzYzLCAweDBENUIsIDB4RDc2NCwgMHhENzY0LCAweDQ2QkIsDQorICAgIDB4RDc2NSwgMHhENzY1LCAweDBENUMsIDB4RDc2NiwgMHhENzY4LCAweDQ2QkMsIDB4RDc2OSwgMHhENzY5LCAweDBENUQsDQorICAgIDB4RDc2QSwgMHhENzZCLCAweDQ2QkYsIDB4RDc2QywgMHhENzZDLCAweDBENUUsIDB4RDc2RCwgMHhENzZGLCAweDQ2QzEsDQorICAgIDB4RDc3MCwgMHhENzcwLCAweDBENUYsIDB4RDc3MSwgMHhENzczLCAweDQ2QzQsIDB4RDc3NCwgMHhENzc0LCAweDBENjAsDQorICAgIDB4RDc3NSwgMHhENzdCLCAweDQ2QzcsIDB4RDc3QywgMHhENzdELCAweDBENjEsIDB4RDc3RSwgMHhENzgwLCAweDQ2Q0UsDQorICAgIDB4RDc4MSwgMHhENzgxLCAweDBENjMsIDB4RDc4MiwgMHhENzg3LCAweDQ2RDEsIDB4RDc4OCwgMHhENzg5LCAweDBENjQsDQorICAgIDB4RDc4QSwgMHhENzhCLCAweDQ2RDcsIDB4RDc4QywgMHhENzhDLCAweDBENjYsIDB4RDc4RCwgMHhENzhGLCAweDQ2RDksDQorICAgIDB4RDc5MCwgMHhENzkwLCAweDBENjcsIDB4RDc5MSwgMHhENzk3LCAweDQ2REMsIDB4RDc5OCwgMHhENzk5LCAweDBENjgsDQorICAgIDB4RDc5QSwgMHhENzlBLCAweDQ2RTMsIDB4RDc5QiwgMHhENzlCLCAweDBENkEsIDB4RDc5QywgMHhENzlDLCAweDQ2RTQsDQorICAgIDB4RDc5RCwgMHhENzlELCAweDBENkIsIDB4RDc5RSwgMHhEN0EzLCAweDQ2RTUsIDB4RjkwMCwgMHhGOTAwLCAweDEwMTQsDQorICAgIDB4RjkwMSwgMHhGOTAxLCAweDBFNUUsIDB4RjkwMiwgMHhGOTAyLCAweDFCOEQsIDB4RjkwMywgMHhGOTAzLCAweDBEODQsDQorICAgIDB4RjkwNCwgMHhGOTA0LCAweDFFREMsIDB4RjkwNSwgMHhGOTA1LCAweDBFREEsIDB4RjkwNiwgMHhGOTA2LCAweDBGM0UsDQorICAgIDB4RjkwNywgMHhGOTA3LCAweDBGNkEsIDB4RjkwOCwgMHhGOTA4LCAweDBGNkEsIDB4RjkwOSwgMHhGOTA5LCAweDBFN0MsDQorICAgIDB4RjkwQSwgMHhGOTBBLCAweDEwMjMsIDB4RjkwQiwgMHhGOTBCLCAweDExMTYsIDB4RjkwQywgMHhGOTBDLCAweDEwM0MsDQorICAgIDB4RjkwRCwgMHhGOTEzLCAweDExMTcsIDB4RjkxNCwgMHhGOTE0LCAweDE2QTgsIDB4RjkxNSwgMHhGOTE3LCAweDExMUUsDQorICAgIDB4RjkxOCwgMHhGOTFELCAweDExMjIsIDB4RjkxRSwgMHhGOTIwLCAweDExMkEsIDB4RjkyMSwgMHhGOTIxLCAweDExMkYsDQorICAgIDB4RjkyMiwgMHhGOTIyLCAweDExMzMsIDB4RjkyMywgMHhGOTI0LCAweDExMzYsIDB4RjkyNSwgMHhGOTJCLCAweDExMzksDQorICAgIDB4RjkyQywgMHhGOTJELCAweDExNDMsIDB4RjkyRSwgMHhGOTJFLCAweDExNDgsIDB4RjkyRiwgMHhGOTJGLCAweDExOUYsDQorICAgIDB4RjkzMCwgMHhGOTMxLCAweDExQTEsIDB4RjkzMiwgMHhGOTM3LCAweDExQTUsIDB4RjkzOCwgMHhGOTNBLCAweDExQUMsDQorICAgIDB4RjkzQiwgMHhGOTQwLCAweDExQjAsIDB4Rjk0MSwgMHhGOTQzLCAweDExQjcsIDB4Rjk0NCwgMHhGOTQ1LCAweDExQkQsDQorICAgIDB4Rjk0NiwgMHhGOTQ4LCAweDExQzEsIDB4Rjk0OSwgMHhGOTQ5LCAweDExQzYsIDB4Rjk0QSwgMHhGOTRBLCAweDExRDQsDQorICAgIDB4Rjk0QiwgMHhGOTRFLCAweDExRDYsIDB4Rjk0RiwgMHhGOTUwLCAweDExREIsIDB4Rjk1MSwgMHhGOTUxLCAweDExRTAsDQorICAgIDB4Rjk1MiwgMHhGOTU1LCAweDExRkMsIDB4Rjk1NiwgMHhGOTU5LCAweDEyMDEsIDB4Rjk1QSwgMHhGOTVBLCAweDEwREUsDQorICAgIDB4Rjk1QiwgMHhGOTVCLCAweDEwMjgsIDB4Rjk1QywgMHhGOTVDLCAweDE2QTgsIDB4Rjk1RCwgMHhGOTVELCAweDEwMkIsDQorICAgIDB4Rjk1RSwgMHhGOTVFLCAweDEwNjAsIDB4Rjk1RiwgMHhGOTVGLCAweDEwNDcsIDB4Rjk2MCwgMHhGOTYwLCAweDEwNEMsDQorICAgIDB4Rjk2MSwgMHhGOTYxLCAweDE1QjAsIDB4Rjk2MiwgMHhGOTYyLCAweDE5MTgsIDB4Rjk2MywgMHhGOTYzLCAweDE0MUYsDQorICAgIDB4Rjk2NCwgMHhGOTY0LCAweDEzM0EsIDB4Rjk2NSwgMHhGOTY1LCAweDFENUUsIDB4Rjk2NiwgMHhGOTY2LCAweDEzRDcsDQorICAgIDB4Rjk2NywgMHhGOTY3LCAweDEzRjUsIDB4Rjk2OCwgMHhGOTY4LCAweDFEQjcsIDB4Rjk2OSwgMHhGOTY5LCAweDE1RDAsDQorICAgIDB4Rjk2QSwgMHhGOTZBLCAweDE0RjcsIDB4Rjk2QiwgMHhGOTZCLCAweDFCQUIsIDB4Rjk2QywgMHhGOTZDLCAweDE0RjIsDQorICAgIDB4Rjk2RCwgMHhGOTZELCAweDE1NkQsIDB4Rjk2RSwgMHhGOTZFLCAweDE3NzEsIDB4Rjk2RiwgMHhGOTZGLCAweDE1NTQsDQorICAgIDB4Rjk3MCwgMHhGOTcwLCAweDE0QzUsIDB4Rjk3MSwgMHhGOTcxLCAweDFCNjEsIDB4Rjk3MiwgMHhGOTcyLCAweDFDQ0EsDQorICAgIDB4Rjk3MywgMHhGOTczLCAweDE2MkUsIDB4Rjk3NCwgMHhGOTc0LCAweDE2RjIsIDB4Rjk3NSwgMHhGOTc3LCAweDExNDksDQorICAgIDB4Rjk3OCwgMHhGOTdBLCAweDExNEQsIDB4Rjk3QiwgMHhGOTdELCAweDExNTMsIDB4Rjk3RSwgMHhGOTdFLCAweDExNTcsDQorICAgIDB4Rjk3RiwgMHhGOTgwLCAweDExNUEsIDB4Rjk4MSwgMHhGOTgxLCAweDEwM0YsIDB4Rjk4MiwgMHhGOTgyLCAweDExNUMsDQorICAgIDB4Rjk4MywgMHhGOTgzLCAweDExNUYsIDB4Rjk4NCwgMHhGOTg1LCAweDExNjEsIDB4Rjk4NiwgMHhGOTg2LCAweDExNjUsDQorICAgIDB4Rjk4NywgMHhGOThDLCAweDExNjcsIDB4Rjk4RCwgMHhGOThELCAweDExNkYsIDB4Rjk4RSwgMHhGOThFLCAweDEwNDAsDQorICAgIDB4Rjk4RiwgMHhGOTkwLCAweDExNzEsIDB4Rjk5MSwgMHhGOTkxLCAweDEwNDEsIDB4Rjk5MiwgMHhGOTk0LCAweDExNzQsDQorICAgIDB4Rjk5NSwgMHhGOTk1LCAweDEwNDIsIDB4Rjk5NiwgMHhGOTk3LCAweDExNzcsIDB4Rjk5OCwgMHhGOTk4LCAweDExN0EsDQorICAgIDB4Rjk5OSwgMHhGOTk5LCAweDExNzksIDB4Rjk5QSwgMHhGOTlCLCAweDExN0IsIDB4Rjk5QywgMHhGOTlELCAweDExN0UsDQorICAgIDB4Rjk5RSwgMHhGOTlFLCAweDE5MkYsIDB4Rjk5RiwgMHhGOUEwLCAweDExODEsIDB4RjlBMSwgMHhGOUExLCAweDE1NTQsDQorICAgIDB4RjlBMiwgMHhGOUEyLCAweDExODMsIDB4RjlBMywgMHhGOUEzLCAweDEwNDMsIDB4RjlBNCwgMHhGOUE0LCAweDEwNDYsDQorICAgIDB4RjlBNSwgMHhGOUE1LCAweDExODUsIDB4RjlBNiwgMHhGOUE4LCAweDExODcsIDB4RjlBOSwgMHhGOUE5LCAweDExOEIsDQorICAgIDB4RjlBQSwgMHhGOUFBLCAweDEwNDcsIDB4RjlBQiwgMHhGOUFELCAweDExOEQsIDB4RjlBRSwgMHhGOUFFLCAweDFFNjcsDQorICAgIDB4RjlBRiwgMHhGOUFGLCAweDExOTEsIDB4RjlCMCwgMHhGOUIwLCAweDExOTMsIDB4RjlCMSwgMHhGOUI0LCAweDExOTUsDQorICAgIDB4RjlCNSwgMHhGOUI1LCAweDExOUEsIDB4RjlCNiwgMHhGOUI4LCAweDExOUMsIDB4RjlCOSwgMHhGOUI5LCAweDE2QTUsDQorICAgIDB4RjlCQSwgMHhGOUJDLCAweDExQzcsIDB4RjlCRCwgMHhGOUJELCAweDEwNTQsIDB4RjlCRSwgMHhGOUJFLCAweDExQ0IsDQorICAgIDB4RjlCRiwgMHhGOUJGLCAweDE2QTgsIDB4RjlDMCwgMHhGOUMxLCAweDExQ0MsIDB4RjlDMiwgMHhGOUMzLCAweDExRDAsDQorICAgIDB4RjlDNCwgMHhGOUM0LCAweDExRDMsIDB4RjlDNSwgMHhGOUM1LCAweDFGMzQsIDB4RjlDNiwgMHhGOUM2LCAweDE3RUIsDQorICAgIDB4RjlDNywgMHhGOUM3LCAweDExRTEsIDB4RjlDOCwgMHhGOUM4LCAweDEwNTcsIDB4RjlDOSwgMHhGOUM5LCAweDExRTMsDQorICAgIDB4RjlDQSwgMHhGOUNCLCAweDExRTUsIDB4RjlDQywgMHhGOUNDLCAweDExRTgsIDB4RjlDRCwgMHhGOUNELCAweDExRUEsDQorICAgIDB4RjlDRSwgMHhGOUNFLCAweDExRUMsIDB4RjlDRiwgMHhGOUNGLCAweDEwNTgsIDB4RjlEMCwgMHhGOUQzLCAweDExRUUsDQorICAgIDB4RjlENCwgMHhGOUQ2LCAweDExRjMsIDB4RjlENywgMHhGOURBLCAweDExRjcsIDB4RjlEQiwgMHhGOURCLCAweDE1QjAsDQorICAgIDB4RjlEQywgMHhGOURDLCAweDExRkIsIDB4RjlERCwgMHhGOURELCAweDEyMDYsIDB4RjlERSwgMHhGOURFLCAweDEyMDgsDQorICAgIDB4RjlERiwgMHhGOURGLCAweDEyMEEsIDB4RjlFMCwgMHhGOUUwLCAweDE3M0UsIDB4RjlFMSwgMHhGOUUyLCAweDEyMEMsDQorICAgIDB4RjlFMywgMHhGOUUzLCAweDEwNUIsIDB4RjlFNCwgMHhGOUU0LCAweDEyMTEsIDB4RjlFNSwgMHhGOUU1LCAweDEyMTMsDQorICAgIDB4RjlFNiwgMHhGOUU2LCAweDEyMTUsIDB4RjlFNywgMHhGOUU5LCAweDEyMTgsIDB4RjlFQSwgMHhGOUVBLCAweDEyMUMsDQorICAgIDB4RjlFQiwgMHhGOUVDLCAweDEwNUMsIDB4RjlFRCwgMHhGOUVELCAweDEyMUUsIDB4RjlFRSwgMHhGOUYwLCAweDEyMjAsDQorICAgIDB4RjlGMSwgMHhGOUY1LCAweDEyMjQsIDB4RjlGNiwgMHhGOUY2LCAweDEyMkEsIDB4RjlGNywgMHhGOUY5LCAweDEyMkQsDQorICAgIDB4RjlGQSwgMHhGOUZBLCAweDE0RTcsIDB4RjlGQiwgMHhGOUZCLCAweDE5NUUsIDB4RjlGQywgMHhGOUZDLCAweDE2NjMsDQorICAgIDB4RjlGRCwgMHhGOUZELCAweDE2OEIsIDB4RjlGRSwgMHhGOUZFLCAweDEwNUYsIDB4RjlGRiwgMHhGOUZGLCAweDE5NTQsDQorICAgIDB4RkEwMCwgMHhGQTAwLCAweDFBMUMsIDB4RkEwMSwgMHhGQTAxLCAweDEwQjcsIDB4RkEwMiwgMHhGQTAyLCAweDFCRTMsDQorICAgIDB4RkEwMywgMHhGQTAzLCAweDEwOTcsIDB4RkEwNCwgMHhGQTA0LCAweDEwQUEsIDB4RkEwNSwgMHhGQTA1LCAweDEwRjQsDQorICAgIDB4RkEwNiwgMHhGQTA2LCAweDFEOTQsIDB4RkEwNywgMHhGQTA3LCAweDEzRTAsIDB4RkEwOCwgMHhGQTA4LCAweDFFMUQsDQorICAgIDB4RkEwOSwgMHhGQTA5LCAweDBERTYsIDB4RkEwQSwgMHhGQTBBLCAweDBFM0MsIDB4RkEwQiwgMHhGQTBCLCAweDBFRTcsDQorICAgIDB4RkYwMSwgMHhGRjNCLCAweDAxMDgsIDB4RkYzQywgMHhGRjNDLCAweDAwNzAsIDB4RkYzRCwgMHhGRjVELCAweDAxNDQsDQorICAgIDB4RkY1RSwgMHhGRjVFLCAweDAwNzEsIDB4RkZFMCwgMHhGRkUxLCAweDAwOEYsIDB4RkZFMiwgMHhGRkUyLCAweDAwQzIsDQorICAgIDB4RkZFMywgMHhGRkUzLCAweDAxNjUsIDB4RkZFNSwgMHhGRkU1LCAweDAwOTEsIDB4RkZFNiwgMHhGRkU2LCAweDAxNDMsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL1VuaUtTLVVDUzItVl8xLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvVW5pS1MtVUNTMi1WXzEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNDY5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL1VuaUtTLVVDUzItVl8xLmNwcApAQCAtMCwwICsxLDE0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfVW5pS1NfVUNTMl9WXzFbMTggKiAzXSA9IHsKKyAgICAweDIwMTMsIDB4MjAxNCwgMHgxRjdCLCAweDIwMTYsIDB4MjAxNiwgMHgxRjdELCAweDIwMjUsIDB4MjAyNSwgMHgxRjdBLAorICAgIDB4MzAwMSwgMHgzMDAyLCAweDFGNzgsIDB4MzAwOCwgMHgzMDExLCAweDFGODEsIDB4MzAxMywgMHgzMDEzLCAweDFGOEIsCisgICAgMHgzMDE0LCAweDMwMTUsIDB4MUY3RiwgMHhGRjAxLCAweEZGMDEsIDB4MUY4QywgMHhGRjA4LCAweEZGMDksIDB4MUY4RCwKKyAgICAweEZGMEMsIDB4RkYwQywgMHgxRjhGLCAweEZGMEUsIDB4RkYwRSwgMHgxRjkwLCAweEZGMUEsIDB4RkYxRiwgMHgxRjkxLAorICAgIDB4RkYzQiwgMHhGRjNCLCAweDFGOTcsIDB4RkYzRCwgMHhGRjNELCAweDFGOTgsIDB4RkYzRiwgMHhGRjNGLCAweDFGOTksCisgICAgMHhGRjVCLCAweEZGNUQsIDB4MUY5QSwgMHhGRjVFLCAweEZGNUUsIDB4MUY3RSwgMHhGRkUzLCAweEZGRTMsIDB4MUY5RCwKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL1VuaUtTLVVURjE2LUhfMC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL1VuaUtTLVVURjE2LUhfMC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE1NGY1NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvVW5pS1MtVVRGMTYtSF8wLmNwcApAQCAtMCwwICsxLDQ4IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCitleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgZ19GWENNQVBfVW5pS1NfVVRGMTZfSF8wWzE1OCAqIDJdID0gew0KKyAgICAweDAwQTksIDB4MDA2MiwgMHgyMDEwLCAweDAwNjEsIDB4MjBBOSwgMHgwMDYwLCAweDJGMDAsIDB4MTkzQywNCisgICAgMHgyRjA0LCAweDE4RUMsIDB4MkYwNiwgMHgxOTBELCAweDJGMDgsIDB4MTkyQiwgMHgyRjBBLCAweDE5NEQsDQorICAgIDB4MkYwQiwgMHgxRDRCLCAweDJGMTEsIDB4MTBBRSwgMHgyRjEyLCAweDExNkEsIDB4MkYxNCwgMHgxNDNGLA0KKyAgICAweDJGMTcsIDB4MTY4QywgMHgyRjE4LCAweDEzRDUsIDB4MkYxQywgMHgxODM5LCAweDJGMUQsIDB4MEYzRCwNCisgICAgMHgyRjFGLCAweDFEMUIsIDB4MkYyMCwgMHgxNDg3LCAweDJGMjMsIDB4MTUxQiwgMHgyRjI0LCAweDEwOUQsDQorICAgIDB4MkYyNSwgMHgxMDNGLCAweDJGMjYsIDB4MTk1OCwgMHgyRjI4LCAweDFDNEYsIDB4MkYyOSwgMHgxNTgwLA0KKyAgICAweDJGMkIsIDB4MTY0MSwgMHgyRjJELCAweDE0QjksIDB4MkYyRiwgMHgwRUNGLCAweDJGMzAsIDB4MEZFRCwNCisgICAgMHgyRjMxLCAweDBFMTQsIDB4MkYzMiwgMHgwRDk5LCAweDJGMzgsIDB4MEY3QywgMHgyRjNDLCAweDE2ODQsDQorICAgIDB4MkYzRCwgMHgwRURDLCAweDJGM0UsIDB4MUU4MCwgMHgyRjNGLCAweDE1Q0MsIDB4MkY0MCwgMHgxQjI3LA0KKyAgICAweDJGNDIsIDB4MTJFOCwgMHgyRjQzLCAweDEwRkQsIDB4MkY0NCwgMHgwRkJCLCAweDJGNDUsIDB4MTM1NiwNCisgICAgMHgyRjQ2LCAweDEyRDMsIDB4MkY0NywgMHgxOTQwLCAweDJGNDgsIDB4MTdFRCwgMHgyRjQ5LCAweDE4ODksDQorICAgIDB4MkY0QSwgMHgxMkI0LCAweDJGNEIsIDB4MUY1QiwgMHgyRjRDLCAweDFCMkMsIDB4MkY0RiwgMHgxMkQ2LA0KKyAgICAweDJGNTAsIDB4MTQ0QywgMHgyRjUxLCAweDEyQTgsIDB4MkY1MiwgMHgxNjhFLCAweDJGNTQsIDB4MTVEMywNCisgICAgMHgyRjU1LCAweDFFQkIsIDB4MkY1NiwgMHgxQTkzLCAweDJGNTcsIDB4MTQwOSwgMHgyRjU4LCAweDFGMUEsDQorICAgIDB4MkY1QSwgMHgxRDYxLCAweDJGNUIsIDB4MTY5NiwgMHgyRjVDLCAweDE4NDIsIDB4MkY1RCwgMHgwRTM3LA0KKyAgICAweDJGNUUsIDB4MUUzRCwgMHgyRjVGLCAweDE3QzEsIDB4MkY2MCwgMHgwRURFLCAweDJGNjEsIDB4MTdENCwNCisgICAgMHgyRjYyLCAweDBEQzEsIDB4MkY2MywgMHgxNEZBLCAweDJGNjQsIDB4MTgyRCwgMHgyRjY1LCAweDFBMDgsDQorICAgIDB4MkY2NiwgMHgxREJBLCAweDJGNjksIDB4MTM4MSwgMHgyRjZBLCAweDFEQjAsIDB4MkY2QiwgMHgxMjkzLA0KKyAgICAweDJGNkMsIDB4MTJCNywgMHgyRjZELCAweDEyQUQsIDB4MkY2RSwgMHgxNjRELCAweDJGNkYsIDB4MTUyNSwNCisgICAgMHgyRjcwLCAweDE2NEUsIDB4MkY3MiwgMHgxRUJFLCAweDJGNzMsIDB4MUU0QiwgMHgyRjc0LCAweDEyMkQsDQorICAgIDB4MkY3NSwgMHgxQUY0LCAweDJGNzYsIDB4MTJGRiwgMHgyRjc4LCAweDE0MEMsIDB4MkY3QSwgMHgxNzA4LA0KKyAgICAweDJGN0IsIDB4MTg0QSwgMHgyRjdDLCAweDExQTcsIDB4MkY3RCwgMHgxOTFCLCAweDJGN0YsIDB4MTkxQywNCisgICAgMHgyRjgwLCAweDE4RTAsIDB4MkY4MSwgMHgxOEQ1LCAweDJGODIsIDB4MTY3NSwgMHgyRjgzLCAweDE5NjYsDQorICAgIDB4MkY4NCwgMHgxQjM3LCAweDJGODUsIDB4MEY1QSwgMHgyRjg2LCAweDE1NTAsIDB4MkY4NywgMHgxQkY2LA0KKyAgICAweDJGODgsIDB4MUFFOCwgMHgyRjg5LCAweDBEQTgsIDB4MkY4QSwgMHgxNEY4LCAweDJGOEIsIDB4MUM0MCwNCisgICAgMHgyRjhFLCAweDFFNEMsIDB4MkY4RiwgMHgxRTFELCAweDJGOTAsIDB4MTkwOSwgMHgyRjkyLCAweDBFM0MsDQorICAgIDB4MkY5MywgMHgwRDkyLCAweDJGOTQsIDB4MTcyMSwgMHgyRjk1LCAweDBFQkMsIDB4MkY5NiwgMHgxMTAzLA0KKyAgICAweDJGOTcsIDB4MTY1NiwgMHgyRjk5LCAweDFENTgsIDB4MkY5QSwgMHgxOUVDLCAweDJGOUIsIDB4MUFFQywNCisgICAgMHgyRjlDLCAweDFBQUUsIDB4MkY5RCwgMHgxNjdCLCAweDJGOUUsIDB4MUI4RCwgMHgyRjlGLCAweDE2N0MsDQorICAgIDB4MkZBMCwgMHgxQjYxLCAweDJGQTIsIDB4MThGNSwgMHgyRkEzLCAweDE4RDAsIDB4MkZBNSwgMHgxMjFBLA0KKyAgICAweDJGQTYsIDB4MTAyMywgMHgyRkE3LCAweDE5QTgsIDB4MkZBOCwgMHgxMkVFLCAweDJGQTksIDB4MTQxQiwNCisgICAgMHgyRkFDLCAweDE4NTMsIDB4MkZBRCwgMHgxQzIzLCAweDJGQUUsIDB4MTQ2NCwgMHgyRkFGLCAweDEyODgsDQorICAgIDB4MkZCMCwgMHgxRTM1LCAweDJGQjEsIDB4MThBMywgMHgyRkIzLCAweDE4RjEsIDB4MkZCNCwgMHgxRTRELA0KKyAgICAweDJGQjUsIDB4MURBQiwgMHgyRkI2LCAweDE0NjUsIDB4MkZCNywgMHgxNjY1LCAweDJGQjgsIDB4MTVGOSwNCisgICAgMHgyRkI5LCAweDFFMjYsIDB4MkZCQSwgMHgxMjM1LCAweDJGQkIsIDB4MEVDOSwgMHgyRkJDLCAweDBFQjUsDQorICAgIDB4MkZDMSwgMHgwRjk5LCAweDJGQzIsIDB4MTcxNiwgMHgyRkMzLCAweDFBQUIsIDB4MkZDNCwgMHgxMUFGLA0KKyAgICAweDJGQzUsIDB4MTFCNSwgMHgyRkM2LCAweDEyNzYsIDB4MkZDNywgMHgxMjM3LCAweDJGQzgsIDB4MUVGNywNCisgICAgMHgyRkM5LCAweDE1MTksIDB4MkZDQSwgMHgxRjUyLCAweDJGQ0QsIDB4MUE2NiwgMHgyRkNFLCAweDBFQjYsDQorICAgIDB4MkZDRiwgMHgxNTFBLCAweDJGRDAsIDB4MTQ2NiwgMHgyRkQxLCAweDFBN0QsIDB4MkZEMiwgMHgxQ0JGLA0KKyAgICAweDJGRDMsIDB4MTFEMywgMHgyRkQ0LCAweDBGNkEsDQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL2NtYXBzX2tvcmVhMS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvS29yZWExL2NtYXBzX2tvcmVhMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgwYjc0MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9Lb3JlYTEvY21hcHNfa29yZWExLmNwcApAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcmVzb3VyY2UuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCIKKyNpbmNsdWRlICIuLi8uLi9mcGRmX2ZvbnQvZm9udF9pbnQuaCIKKyNpbmNsdWRlICIuLi9jbWFwX2ludC5oIgorZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfS1NDX0VVQ19IXzBbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX0tTQ19FVUNfVl8wW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9LU0Ntc19VSENfSF8xW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9LU0Ntc19VSENfVl8xW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9LU0Ntc19VSENfSFdfSF8xW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9LU0Ntc19VSENfSFdfVl8xW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9LU0NwY19FVUNfSF8wW107CitleHRlcm4gY29uc3QgRlhfV09SRCBnX0ZYQ01BUF9VbmlLU19VQ1MyX0hfMVtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfVW5pS1NfVUNTMl9WXzFbXTsKK2V4dGVybiBjb25zdCBGWF9XT1JEIGdfRlhDTUFQX1VuaUtTX1VURjE2X0hfMFtdOworZXh0ZXJuIGNvbnN0IEZYX1dPUkQgZ19GWENNQVBfS29yZWExQ0lEMlVuaWNvZGVfMltdOworY29uc3QgRlhDTUFQX0NNYXAgZ19GWENNQVBfS29yZWExX2NtYXBzW10gPSB7CisgICAgeyAiS1NDLUVVQy1IIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9LU0NfRVVDX0hfMCwgNDY3LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIktTQy1FVUMtViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfS1NDX0VVQ19WXzAsIDE2LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICJLU0Ntcy1VSEMtSCIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfS1NDbXNfVUhDX0hfMSwgNjc1LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTIgfSwKKyAgICB7ICJLU0Ntcy1VSEMtViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfS1NDbXNfVUhDX1ZfMSwgMTYsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMSB9LAorICAgIHsgIktTQ21zLVVIQy1IVy1IIiwgRlhDTUFQX0NNYXA6OlJhbmdlLCBnX0ZYQ01BUF9LU0Ntc19VSENfSFdfSF8xLCA2NzUsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAwIH0sCisgICAgeyAiS1NDbXMtVUhDLUhXLVYiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX0tTQ21zX1VIQ19IV19WXzEsIDE2LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICJLU0NwYy1FVUMtSCIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfS1NDcGNfRVVDX0hfMCwgNTA5LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTYgfSwKKyAgICB7ICJVbmlLUy1VQ1MyLUgiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX1VuaUtTX1VDUzJfSF8xLCA4Mzk0LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgMCB9LAorICAgIHsgIlVuaUtTLVVDUzItViIsIEZYQ01BUF9DTWFwOjpSYW5nZSwgZ19GWENNQVBfVW5pS1NfVUNTMl9WXzEsIDE4LCBGWENNQVBfQ01hcDo6Tm9uZSwgTlVMTCwgMCwgLTEgfSwKKyAgICB7ICJVbmlLUy1VVEYxNi1IIiwgRlhDTUFQX0NNYXA6OlNpbmdsZSwgZ19GWENNQVBfVW5pS1NfVVRGMTZfSF8wLCAxNTgsIEZYQ01BUF9DTWFwOjpOb25lLCBOVUxMLCAwLCAtMiB9LAorICAgIHsgIlVuaUtTLVVURjE2LVYiLCBGWENNQVBfQ01hcDo6UmFuZ2UsIGdfRlhDTUFQX1VuaUtTX1VDUzJfVl8xLCAxOCwgRlhDTUFQX0NNYXA6Ok5vbmUsIE5VTEwsIDAsIC0xIH0sCit9Owordm9pZCBDUERGX01vZHVsZU1ncjo6TG9hZEVtYmVkZGVkS29yZWExQ01hcHMoKQoreworICAgIENQREZfRm9udEdsb2JhbHMqIHBGb250R2xvYmFscyA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UGFnZU1vZHVsZSgpLT5HZXRGb250R2xvYmFscygpOworICAgIHBGb250R2xvYmFscy0+bV9FbWJlZGRlZENoYXJzZXRzW0NJRFNFVF9LT1JFQTFdLm1fcE1hcExpc3QgPSBnX0ZYQ01BUF9Lb3JlYTFfY21hcHM7CisgICAgcEZvbnRHbG9iYWxzLT5tX0VtYmVkZGVkQ2hhcnNldHNbQ0lEU0VUX0tPUkVBMV0ubV9Db3VudCA9IHNpemVvZiBnX0ZYQ01BUF9Lb3JlYTFfY21hcHMgLyBzaXplb2YgKEZYQ01BUF9DTWFwKTsKKyAgICBwRm9udEdsb2JhbHMtPm1fRW1iZWRkZWRUb1VuaWNvZGVzW0NJRFNFVF9LT1JFQTFdLm1fcE1hcCA9IGdfRlhDTUFQX0tvcmVhMUNJRDJVbmljb2RlXzI7CisgICAgcEZvbnRHbG9iYWxzLT5tX0VtYmVkZGVkVG9Vbmljb2Rlc1tDSURTRVRfS09SRUExXS5tX0NvdW50ID0gMTgzNTI7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvY21hcF9pbnQuaCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9jbWFwX2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZTE1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvY21hcF9pbnQuaApAQCAtMCwwICsxLDIwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9GUERGQVBJX0NNQVBfSU5UX0hfDQorI2RlZmluZSBfRlBERkFQSV9DTUFQX0lOVF9IXw0KK3N0cnVjdCBGWENNQVBfQ01hcCB7DQorICAgIHR5cGVkZWYgZW51bSB7IE5vbmUsIFNpbmdsZSwgUmFuZ2UsIFJldmVyc2UgfSBNYXBUeXBlOw0KKyAgICBjb25zdCBjaGFyKgkJbV9OYW1lOw0KKyAgICBNYXBUeXBlCQkJbV9Xb3JkTWFwVHlwZTsNCisgICAgY29uc3QgRlhfV09SRCoJbV9wV29yZE1hcDsNCisgICAgaW50CQkJCW1fV29yZENvdW50Ow0KKyAgICBNYXBUeXBlCQkJbV9EV29yZE1hcFR5cGU7DQorICAgIGNvbnN0IEZYX1dPUkQqCW1fcERXb3JkTWFwOw0KKyAgICBpbnQJCQkJbV9EV29yZENvdW50Ow0KKyAgICBpbnQJCQkJbV9Vc2VPZmZzZXQ7DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvZnBkZl9jbWFwcy5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfY21hcHMvZnBkZl9jbWFwcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFiMzI0YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9jbWFwcy9mcGRmX2NtYXBzLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3Jlc291cmNlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX21vZHVsZS5oIg0KKyNpbmNsdWRlICIuLi9mcGRmX2ZvbnQvZm9udF9pbnQuaCINCisjaW5jbHVkZSAiY21hcF9pbnQuaCINCit2b2lkIEZQREZBUElfRmluZEVtYmVkZGVkQ01hcChjb25zdCBjaGFyKiBuYW1lLCBpbnQgY2hhcnNldCwgaW50IGNvZGluZywgY29uc3QgRlhDTUFQX0NNYXAqJiBwTWFwKQ0KK3sNCisgICAgcE1hcCA9IE5VTEw7DQorICAgIENQREZfRm9udEdsb2JhbHMqIHBGb250R2xvYmFscyA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UGFnZU1vZHVsZSgpLT5HZXRGb250R2xvYmFscygpOw0KKyAgICBjb25zdCBGWENNQVBfQ01hcCogcENNYXBzID0gcEZvbnRHbG9iYWxzLT5tX0VtYmVkZGVkQ2hhcnNldHNbY2hhcnNldF0ubV9wTWFwTGlzdDsNCisgICAgaW50IG5DTWFwcyA9IHBGb250R2xvYmFscy0+bV9FbWJlZGRlZENoYXJzZXRzW2NoYXJzZXRdLm1fQ291bnQ7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkNNYXBzOyBpICsrKSB7DQorICAgICAgICBpZiAoRlhTWVNfc3RyY21wKG5hbWUsIHBDTWFwc1tpXS5tX05hbWUpKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBwTWFwID0gJnBDTWFwc1tpXTsNCisgICAgICAgIGJyZWFrOw0KKyAgICB9DQorfQ0KK2V4dGVybiAiQyIgew0KKyAgICBzdGF0aWMgaW50IGNvbXBhcmVXb3JkKGNvbnN0IHZvaWQqIHAxLCBjb25zdCB2b2lkKiBwMikNCisgICAgew0KKyAgICAgICAgcmV0dXJuICgqKEZYX1dPUkQqKXAxKSAtICgqKEZYX1dPUkQqKXAyKTsNCisgICAgfQ0KK307DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyBpbnQgY29tcGFyZVdvcmRSYW5nZShjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIGVsZW1lbnQpDQorICAgIHsNCisgICAgICAgIGlmICgqKEZYX1dPUkQqKWtleSA8ICogKEZYX1dPUkQqKWVsZW1lbnQpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAoKihGWF9XT1JEKilrZXkgPiAoKEZYX1dPUkQqKWVsZW1lbnQpWzFdKSB7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KK307DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyBpbnQgY29tcGFyZURXb3JkUmFuZ2UoY29uc3Qgdm9pZCogcDEsIGNvbnN0IHZvaWQqIHAyKQ0KKyAgICB7DQorICAgICAgICBGWF9EV09SRCBrZXkgPSAqKEZYX0RXT1JEKilwMTsNCisgICAgICAgIEZYX1dPUkQgaGl3b3JkID0gKEZYX1dPUkQpKGtleSA+PiAxNik7DQorICAgICAgICBGWF9XT1JEKiBlbGVtZW50ID0gKEZYX1dPUkQqKXAyOw0KKyAgICAgICAgaWYgKGhpd29yZCA8IGVsZW1lbnRbMF0pIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAoaGl3b3JkID4gZWxlbWVudFswXSkgew0KKyAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfV09SRCBsb3dvcmQgPSAoRlhfV09SRClrZXk7DQorICAgICAgICBpZiAobG93b3JkIDwgZWxlbWVudFsxXSkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChsb3dvcmQgPiBlbGVtZW50WzJdKSB7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KK307DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyBpbnQgY29tcGFyZURXb3JkU2luZ2xlKGNvbnN0IHZvaWQqIHAxLCBjb25zdCB2b2lkKiBwMikNCisgICAgew0KKyAgICAgICAgRlhfRFdPUkQga2V5ID0gKihGWF9EV09SRCopcDE7DQorICAgICAgICBGWF9EV09SRCB2YWx1ZSA9ICgoKihGWF9XT1JEKilwMikgPDwgMTYpIHwgKChGWF9XT1JEKilwMilbMV07DQorICAgICAgICBpZiAoa2V5IDwgdmFsdWUpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAoa2V5ID4gdmFsdWUpIHsNCisgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorfTsNCitGWF9XT1JEIEZQREZBUElfQ0lERnJvbUNoYXJDb2RlKGNvbnN0IEZYQ01BUF9DTWFwKiBwTWFwLCBGWF9EV09SRCBjaGFyY29kZSkNCit7DQorICAgIGlmIChjaGFyY29kZSA+PiAxNikgew0KKyAgICAgICAgd2hpbGUgKDEpIHsNCisgICAgICAgICAgICBpZiAocE1hcC0+bV9EV29yZE1hcFR5cGUgPT0gRlhDTUFQX0NNYXA6OlJhbmdlKSB7DQorICAgICAgICAgICAgICAgIEZYX1dPUkQqIGZvdW5kID0gKEZYX1dPUkQqKUZYU1lTX2JzZWFyY2goJmNoYXJjb2RlLCBwTWFwLT5tX3BEV29yZE1hcCwgcE1hcC0+bV9EV29yZENvdW50LCA4LCBjb21wYXJlRFdvcmRSYW5nZSk7DQorICAgICAgICAgICAgICAgIGlmIChmb3VuZCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kWzNdICsgKEZYX1dPUkQpY2hhcmNvZGUgLSBmb3VuZFsxXTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAocE1hcC0+bV9EV29yZE1hcFR5cGUgPT0gRlhDTUFQX0NNYXA6OlNpbmdsZSkgew0KKyAgICAgICAgICAgICAgICBGWF9XT1JEKiBmb3VuZCA9IChGWF9XT1JEKilGWFNZU19ic2VhcmNoKCZjaGFyY29kZSwgcE1hcC0+bV9wRFdvcmRNYXAsIHBNYXAtPm1fRFdvcmRDb3VudCwgNiwgY29tcGFyZURXb3JkU2luZ2xlKTsNCisgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRbMl07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBNYXAtPm1fVXNlT2Zmc2V0ID09IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBNYXAgPSBwTWFwICsgcE1hcC0+bV9Vc2VPZmZzZXQ7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBGWF9XT1JEIGNvZGUgPSAoRlhfV09SRCljaGFyY29kZTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGlmIChwTWFwLT5tX3BXb3JkTWFwID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwTWFwLT5tX1dvcmRNYXBUeXBlID09IEZYQ01BUF9DTWFwOjpTaW5nbGUpIHsNCisgICAgICAgICAgICBGWF9XT1JEKiBmb3VuZCA9IChGWF9XT1JEKilGWFNZU19ic2VhcmNoKCZjb2RlLCBwTWFwLT5tX3BXb3JkTWFwLCBwTWFwLT5tX1dvcmRDb3VudCwgNCwgY29tcGFyZVdvcmQpOw0KKyAgICAgICAgICAgIGlmIChmb3VuZCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRbMV07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChwTWFwLT5tX1dvcmRNYXBUeXBlID09IEZYQ01BUF9DTWFwOjpSYW5nZSkgew0KKyAgICAgICAgICAgIEZYX1dPUkQqIGZvdW5kID0gKEZYX1dPUkQqKUZYU1lTX2JzZWFyY2goJmNvZGUsIHBNYXAtPm1fcFdvcmRNYXAsIHBNYXAtPm1fV29yZENvdW50LCA2LCBjb21wYXJlV29yZFJhbmdlKTsNCisgICAgICAgICAgICBpZiAoZm91bmQpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kWzJdICsgY29kZSAtIGZvdW5kWzBdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChwTWFwLT5tX1VzZU9mZnNldCA9PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICBwTWFwID0gcE1hcCArIHBNYXAtPm1fVXNlT2Zmc2V0Ow0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitGWF9EV09SRCBGUERGQVBJX0NoYXJDb2RlRnJvbUNJRChjb25zdCBGWENNQVBfQ01hcCogcE1hcCwgRlhfV09SRCBjaWQpDQorew0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgaWYgKHBNYXAtPm1fV29yZE1hcFR5cGUgPT0gRlhDTUFQX0NNYXA6OlNpbmdsZSkgew0KKyAgICAgICAgICAgIGNvbnN0IEZYX1dPUkQgKnBDdXIgPSBwTWFwLT5tX3BXb3JkTWFwOw0KKyAgICAgICAgICAgIGNvbnN0IEZYX1dPUkQgKnBFbmQgPSBwTWFwLT5tX3BXb3JkTWFwICsgcE1hcC0+bV9Xb3JkQ291bnQgKiAyOw0KKyAgICAgICAgICAgIHdoaWxlIChwQ3VyIDwgcEVuZCkgew0KKyAgICAgICAgICAgICAgICBpZiAocEN1clsxXSA9PSBjaWQpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwQ3VyWzBdOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBDdXIgKz0gMjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKHBNYXAtPm1fV29yZE1hcFR5cGUgPT0gRlhDTUFQX0NNYXA6OlJhbmdlKSB7DQorICAgICAgICAgICAgY29uc3QgRlhfV09SRCAqcEN1ciA9IHBNYXAtPm1fcFdvcmRNYXA7DQorICAgICAgICAgICAgY29uc3QgRlhfV09SRCAqcEVuZCA9IHBNYXAtPm1fcFdvcmRNYXAgKyBwTWFwLT5tX1dvcmRDb3VudCAqIDM7DQorICAgICAgICAgICAgd2hpbGUgKHBDdXIgPCBwRW5kKSB7DQorICAgICAgICAgICAgICAgIGlmIChjaWQgPj0gcEN1clsyXSAmJiBjaWQgPD0gcEN1clsyXSArIHBDdXJbMV0gLSBwQ3VyWzBdKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcEN1clswXSArIGNpZCAtIHBDdXJbMl07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcEN1ciArPSAzOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChwTWFwLT5tX1VzZU9mZnNldCA9PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICBwTWFwID0gcE1hcCArIHBNYXAtPm1fVXNlT2Zmc2V0Ow0KKyAgICB9DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpZiAocE1hcC0+bV9EV29yZE1hcFR5cGUgPT0gRlhDTUFQX0NNYXA6OlJhbmdlKSB7DQorICAgICAgICAgICAgY29uc3QgRlhfV09SRCAqcEN1ciA9IHBNYXAtPm1fcERXb3JkTWFwOw0KKyAgICAgICAgICAgIGNvbnN0IEZYX1dPUkQgKnBFbmQgPSBwTWFwLT5tX3BEV29yZE1hcCArIHBNYXAtPm1fRFdvcmRDb3VudCAqIDQ7DQorICAgICAgICAgICAgd2hpbGUgKHBDdXIgPCBwRW5kKSB7DQorICAgICAgICAgICAgICAgIGlmIChjaWQgPj0gcEN1clszXSAmJiBjaWQgPD0gcEN1clszXSArIHBDdXJbMl0gLSBwQ3VyWzFdKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgoRlhfRFdPUkQpcEN1clswXSA8PCAxNikgfCBwQ3VyWzFdKSArIGNpZCAtIHBDdXJbM107DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcEN1ciArPSA0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAocE1hcC0+bV9EV29yZE1hcFR5cGUgPT0gRlhDTUFQX0NNYXA6OlNpbmdsZSkgew0KKyAgICAgICAgICAgIGNvbnN0IEZYX1dPUkQgKnBDdXIgPSBwTWFwLT5tX3BEV29yZE1hcDsNCisgICAgICAgICAgICBjb25zdCBGWF9XT1JEICpwRW5kID0gcE1hcC0+bV9wRFdvcmRNYXAgKyBwTWFwLT5tX0RXb3JkQ291bnQgKiAzOw0KKyAgICAgICAgICAgIHdoaWxlIChwQ3VyIDwgcEVuZCkgew0KKyAgICAgICAgICAgICAgICBpZiAocEN1clsyXSA9PSBjaWQpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKEZYX0RXT1JEKXBDdXJbMF0gPDwgMTYpIHwgcEN1clsxXTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwQ3VyICs9IDM7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBNYXAtPm1fVXNlT2Zmc2V0ID09IDApIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIHBNYXAgPSBwTWFwICsgcE1hcC0+bV9Vc2VPZmZzZXQ7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK3ZvaWQgRlBERkFQSV9Mb2FkQ0lEMlVuaWNvZGVNYXAoaW50IGNoYXJzZXQsIGNvbnN0IEZYX1dPUkQqJiBwTWFwLCBGWF9EV09SRCYgY291bnQpDQorew0KKyAgICBDUERGX0ZvbnRHbG9iYWxzKiBwRm9udEdsb2JhbHMgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldFBhZ2VNb2R1bGUoKS0+R2V0Rm9udEdsb2JhbHMoKTsNCisgICAgcE1hcCA9IHBGb250R2xvYmFscy0+bV9FbWJlZGRlZFRvVW5pY29kZXNbY2hhcnNldF0ubV9wTWFwOw0KKyAgICBjb3VudCA9IHBGb250R2xvYmFscy0+bV9FbWJlZGRlZFRvVW5pY29kZXNbY2hhcnNldF0ubV9Db3VudDsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2VkaXQvZWRpdGludC5oIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2VkaXQvZWRpdGludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZWJhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZWRpdC9lZGl0aW50LmgKQEAgLTAsMCArMSw1OSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlBERl9FRElUSU5UXw0KKyNkZWZpbmUgX0ZQREZfRURJVElOVF8NCitjbGFzcyBDUERGX09iamVjdFN0cmVhbSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9PYmplY3RTdHJlYW0oKTsNCisNCisgICAgRlhfQk9PTAkJCQlTdGFydCgpOw0KKw0KKyAgICBGWF9JTlQzMgkJCUNvbXByZXNzSW5kaXJlY3RPYmplY3QoRlhfRFdPUkQgZHdPYmpOdW0sIGNvbnN0IENQREZfT2JqZWN0ICpwT2JqKTsNCisgICAgRlhfSU5UMzIJCQlDb21wcmVzc0luZGlyZWN0T2JqZWN0KEZYX0RXT1JEIGR3T2JqTnVtLCBGWF9MUENCWVRFIHBCdWZmZXIsIEZYX0RXT1JEIGR3U2l6ZSk7DQorDQorICAgIEZYX0ZJTEVTSVpFCQkJRW5kKENQREZfQ3JlYXRvciogcENyZWF0b3IpOw0KKw0KKyAgICBDRlhfRFdvcmRBcnJheQkJbV9PYmpOdW1BcnJheTsNCisNCisgICAgQ0ZYX0J5dGVUZXh0QnVmCQltX0J1ZmZlcjsNCisgICAgRlhfRFdPUkQJCQltX2R3T2JqTnVtOw0KKyAgICBGWF9JTlQzMgkJCW1faW5kZXg7DQorcHJvdGVjdGVkOg0KKw0KKyAgICBDRlhfRFdvcmRBcnJheQkJbV9PZmZzZXRBcnJheTsNCit9Ow0KK2NsYXNzIENQREZfWFJlZlN0cmVhbSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ1BERl9YUmVmU3RyZWFtKCk7DQorDQorICAgIEZYX0JPT0wJCQkJU3RhcnQoKTsNCisNCisgICAgRlhfSU5UMzIJCQlDb21wcmVzc0luZGlyZWN0T2JqZWN0KEZYX0RXT1JEIGR3T2JqTnVtLCBjb25zdCBDUERGX09iamVjdCAqcE9iaiwgQ1BERl9DcmVhdG9yICpwQ3JlYXRvcik7DQorDQorICAgIEZYX0lOVDMyCQkJQ29tcHJlc3NJbmRpcmVjdE9iamVjdChGWF9EV09SRCBkd09iak51bSwgRlhfTFBDQllURSBwQnVmZmVyLCBGWF9EV09SRCBkd1NpemUsIENQREZfQ3JlYXRvciAqcENyZWF0b3IpOw0KKw0KKyAgICBGWF9CT09MCQkJCUVuZChDUERGX0NyZWF0b3IgKnBDcmVhdG9yLCBGWF9CT09MIGJFT0YgPSBGQUxTRSk7DQorICAgIEZYX0JPT0wJCQkJQWRkT2JqZWN0TnVtYmVyVG9JbmRleEFycmF5KEZYX0RXT1JEIG9iam51bSk7DQorICAgIEZYX0JPT0wJCQkJRW5kWFJlZlN0cmVhbShDUERGX0NyZWF0b3IqIHBDcmVhdG9yKTsNCisNCisNCisgICAgQ0ZYX0RXb3JkQXJyYXkJCW1fSW5kZXhBcnJheTsNCisNCisgICAgRlhfRklMRVNJWkUJCQltX1ByZXZPZmZzZXQ7DQorICAgIEZYX0RXT1JECQkJbV9kd1RlbXBPYmpOdW07DQorDQorcHJvdGVjdGVkOg0KKyAgICBGWF9JTlQzMgkJCUVuZE9iamVjdFN0cmVhbShDUERGX0NyZWF0b3IgKnBDcmVhdG9yLCBGWF9CT09MIGJFT0YgPSBUUlVFKTsNCisgICAgRlhfQk9PTAkJCQlHZW5lcmF0ZVhSZWZTdHJlYW0oQ1BERl9DcmVhdG9yKiBwQ3JlYXRvciwgRlhfQk9PTCBiRU9GKTsNCisgICAgRlhfSU5UMzIJCQltX2lTZWc7DQorICAgIENQREZfT2JqZWN0U3RyZWFtCW1fT2JqU3RyZWFtOw0KKyAgICBDRlhfQnl0ZVRleHRCdWYJCW1fQnVmZmVyOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2VkaXQvZnBkZl9lZGl0X2NvbnRlbnQuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2VkaXQvZnBkZl9lZGl0X2NvbnRlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5OGM3NzIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZWRpdC9mcGRmX2VkaXRfY29udGVudC5jcHAKQEAgLTAsMCArMSwxNjQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3NlcmlhbC5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorI2luY2x1ZGUgIi4uL2ZwZGZfcGFnZS9wYWdlaW50LmgiDQorQ0ZYX0J5dGVUZXh0QnVmJiBvcGVyYXRvciA8PCAoQ0ZYX0J5dGVUZXh0QnVmJiBhciwgQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KQ0KK3sNCisgICAgYXIgPDwgbWF0cml4LmEgPDwgIiAiIDw8IG1hdHJpeC5iIDw8ICIgIiA8PCBtYXRyaXguYyA8PCAiICIgPDwgbWF0cml4LmQgPDwgIiAiIDw8IG1hdHJpeC5lIDw8ICIgIiA8PCBtYXRyaXguZjsNCisgICAgcmV0dXJuIGFyOw0KK30NCitDUERGX1BhZ2VDb250ZW50R2VuZXJhdGU6OkNQREZfUGFnZUNvbnRlbnRHZW5lcmF0ZShDUERGX1BhZ2UqIHBQYWdlKSA6IG1fcFBhZ2UocFBhZ2UpDQorew0KKyAgICBtX3BEb2N1bWVudCA9IE5VTEw7DQorICAgIGlmIChtX3BQYWdlKSB7DQorICAgICAgICBtX3BEb2N1bWVudCA9IG1fcFBhZ2UtPm1fcERvY3VtZW50Ow0KKyAgICB9DQorfQ0KK0NQREZfUGFnZUNvbnRlbnRHZW5lcmF0ZTo6fkNQREZfUGFnZUNvbnRlbnRHZW5lcmF0ZSgpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fcGFnZU9iamVjdHMuR2V0U2l6ZSgpOyArK2kpIHsNCisgICAgICAgIENQREZfUGFnZU9iamVjdCogcFBhZ2VPYmogPSAoQ1BERl9QYWdlT2JqZWN0KiltX3BhZ2VPYmplY3RzW2ldOw0KKyAgICAgICAgaWYgKHBQYWdlT2JqKSB7DQorICAgICAgICAgICAgcFBhZ2VPYmotPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfUGFnZUNvbnRlbnRHZW5lcmF0ZTo6SW5zZXJ0UGFnZU9iamVjdChDUERGX1BhZ2VPYmplY3QqIHBQYWdlT2JqZWN0KQ0KK3sNCisgICAgaWYgKCFwUGFnZU9iamVjdCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BhZ2VPYmplY3RzLkFkZChwUGFnZU9iamVjdCk7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlQ29udGVudEdlbmVyYXRlOjpHZW5lcmF0ZUNvbnRlbnQoKQ0KK3sNCisgICAgQ0ZYX0J5dGVUZXh0QnVmIGJ1ZjsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZURpY3QgPSBtX3BQYWdlLT5tX3BGb3JtRGljdDsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3BhZ2VPYmplY3RzLkdldFNpemUoKTsgKytpKSB7DQorICAgICAgICBDUERGX1BhZ2VPYmplY3QqIHBQYWdlT2JqID0gKENQREZfUGFnZU9iamVjdCopbV9wYWdlT2JqZWN0c1tpXTsNCisgICAgICAgIGlmICghcFBhZ2VPYmogfHwgcFBhZ2VPYmotPm1fVHlwZSAhPSBQREZQQUdFX0lNQUdFKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBQcm9jZXNzSW1hZ2UoYnVmLCAoQ1BERl9JbWFnZU9iamVjdCopcFBhZ2VPYmopOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwQ29udGVudCA9IHBQYWdlRGljdC0+R2V0RWxlbWVudFZhbHVlKCJDb250ZW50cyIpOw0KKyAgICBpZiAocENvbnRlbnQgIT0gTlVMTCkgew0KKyAgICAgICAgcFBhZ2VEaWN0LT5SZW1vdmVBdCgiQ29udGVudHMiKTsNCisgICAgfQ0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IEZYX05FVyBDUERGX1N0cmVhbShOVUxMLCAwLCBOVUxMKTsNCisgICAgcFN0cmVhbS0+U2V0RGF0YShidWYuR2V0QnVmZmVyKCksIGJ1Zi5HZXRMZW5ndGgoKSwgRkFMU0UsIEZBTFNFKTsNCisgICAgbV9wRG9jdW1lbnQtPkFkZEluZGlyZWN0T2JqZWN0KHBTdHJlYW0pOw0KKyAgICBwUGFnZURpY3QtPlNldEF0UmVmZXJlbmNlKCJDb250ZW50cyIsIG1fcERvY3VtZW50LCBwU3RyZWFtLT5HZXRPYmpOdW0oKSk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfUGFnZUNvbnRlbnRHZW5lcmF0ZTo6UmVhbGl6ZVJlc291cmNlKENQREZfT2JqZWN0KiBwUmVzb3VyY2VPYmosIGNvbnN0IEZYX0NIQVIqIHN6VHlwZSkNCit7DQorICAgIGlmIChtX3BQYWdlLT5tX3BSZXNvdXJjZXMgPT0gTlVMTCkgew0KKyAgICAgICAgbV9wUGFnZS0+bV9wUmVzb3VyY2VzID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgICAgIGludCBvYmpudW0gPSBtX3BEb2N1bWVudC0+QWRkSW5kaXJlY3RPYmplY3QobV9wUGFnZS0+bV9wUmVzb3VyY2VzKTsNCisgICAgICAgIG1fcFBhZ2UtPm1fcEZvcm1EaWN0LT5TZXRBdFJlZmVyZW5jZSgiUmVzb3VyY2VzIiwgbV9wRG9jdW1lbnQsIG9iam51bSk7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUmVzTGlzdCA9IG1fcFBhZ2UtPm1fcFJlc291cmNlcy0+R2V0RGljdChzelR5cGUpOw0KKyAgICBpZiAocFJlc0xpc3QgPT0gTlVMTCkgew0KKyAgICAgICAgcFJlc0xpc3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICAgICAgbV9wUGFnZS0+bV9wUmVzb3VyY2VzLT5TZXRBdChzelR5cGUsIHBSZXNMaXN0KTsNCisgICAgfQ0KKyAgICBtX3BEb2N1bWVudC0+QWRkSW5kaXJlY3RPYmplY3QocFJlc291cmNlT2JqKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgbmFtZTsNCisgICAgaW50IGlkbnVtID0gMTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIG5hbWUuRm9ybWF0KCJGWCVjJWQiLCBzelR5cGVbMF0sIGlkbnVtKTsNCisgICAgICAgIGlmICghcFJlc0xpc3QtPktleUV4aXN0KG5hbWUpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZG51bSArKzsNCisgICAgfQ0KKyAgICBwUmVzTGlzdC0+QWRkUmVmZXJlbmNlKG5hbWUsIG1fcERvY3VtZW50LCBwUmVzb3VyY2VPYmotPkdldE9iak51bSgpKTsNCisgICAgcmV0dXJuIG5hbWU7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlQ29udGVudEdlbmVyYXRlOjpQcm9jZXNzSW1hZ2UoQ0ZYX0J5dGVUZXh0QnVmJiBidWYsIENQREZfSW1hZ2VPYmplY3QqIHBJbWFnZU9iaikNCit7DQorICAgIGlmICgocEltYWdlT2JqLT5tX01hdHJpeC5hID09IDAgJiYgcEltYWdlT2JqLT5tX01hdHJpeC5iID09IDApIHx8DQorICAgICAgICAgICAgKHBJbWFnZU9iai0+bV9NYXRyaXguYyA9PSAwICYmIHBJbWFnZU9iai0+bV9NYXRyaXguZCA9PSAwKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGJ1ZiA8PCAicSAiIDw8IHBJbWFnZU9iai0+bV9NYXRyaXggPDwgIiBjbSAiOw0KKyAgICBpZiAoIXBJbWFnZU9iai0+bV9wSW1hZ2UtPklzSW5saW5lKCkpIHsNCisgICAgICAgIENQREZfU3RyZWFtKiBwU3RyZWFtID0gcEltYWdlT2JqLT5tX3BJbWFnZS0+R2V0U3RyZWFtKCk7DQorICAgICAgICBGWF9EV09SRCBkd1NhdmVkT2JqTnVtID0gcFN0cmVhbS0+R2V0T2JqTnVtKCk7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBuYW1lID0gUmVhbGl6ZVJlc291cmNlKHBTdHJlYW0sICJYT2JqZWN0Iik7DQorICAgICAgICBpZiAoZHdTYXZlZE9iak51bSA9PSAwKSB7DQorICAgICAgICAgICAgcEltYWdlT2JqLT5tX3BJbWFnZS0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgIHBJbWFnZU9iai0+bV9wSW1hZ2UgPSBtX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKS0+R2V0SW1hZ2UocFN0cmVhbSk7DQorICAgICAgICB9DQorICAgICAgICBidWYgPDwgIi8iIDw8IFBERl9OYW1lRW5jb2RlKG5hbWUpIDw8ICIgRG8gUVxuIjsNCisgICAgfQ0KK30NCit2b2lkIENQREZfUGFnZUNvbnRlbnRHZW5lcmF0ZTo6UHJvY2Vzc0Zvcm0oQ0ZYX0J5dGVUZXh0QnVmJiBidWYsIEZYX0xQQ0JZVEUgZGF0YSwgRlhfRFdPUkQgc2l6ZSwgQ0ZYX01hdHJpeCYgbWF0cml4KQ0KK3sNCisgICAgaWYgKCFkYXRhIHx8ICFzaXplKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW0gPSBGWF9ORVcgQ1BERl9TdHJlYW0oTlVMTCwgMCwgTlVMTCk7DQorICAgIENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0ID0gQ1BERl9EaWN0aW9uYXJ5OjpDcmVhdGUoKTsNCisgICAgcEZvcm1EaWN0LT5TZXRBdE5hbWUoRlhfQlNUUigiVHlwZSIpLCBGWF9CU1RSKCJYT2JqZWN0IikpOw0KKyAgICBwRm9ybURpY3QtPlNldEF0TmFtZShGWF9CU1RSKCJTdWJ0eXBlIiksIEZYX0JTVFIoIkZvcm0iKSk7DQorICAgIENGWF9GbG9hdFJlY3QgYmJveCA9IG1fcFBhZ2UtPkdldFBhZ2VCQm94KCk7DQorICAgIG1hdHJpeC5UcmFuc2Zvcm1SZWN0KGJib3gpOw0KKyAgICBwRm9ybURpY3QtPlNldEF0UmVjdChGWF9CU1RSKCJCQm94IiksIGJib3gpOw0KKyAgICBwU3RyZWFtLT5Jbml0U3RyZWFtKChGWF9MUEJZVEUpZGF0YSwgc2l6ZSwgcEZvcm1EaWN0KTsNCisgICAgYnVmIDw8ICJxICIgPDwgbWF0cml4IDw8ICIgY20gIjsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgbmFtZSA9IFJlYWxpemVSZXNvdXJjZShwU3RyZWFtLCAiWE9iamVjdCIpOw0KKyAgICBidWYgPDwgIi8iIDw8IFBERl9OYW1lRW5jb2RlKG5hbWUpIDw8ICIgRG8gUVxuIjsNCit9DQordm9pZCBDUERGX1BhZ2VDb250ZW50R2VuZXJhdGU6OlRyYW5zZm9ybUNvbnRlbnQoQ0ZYX01hdHJpeCYgbWF0cml4KQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBDb250ZW50ID0gbV9wUGFnZS0+bV9wRm9ybURpY3QtPkdldEVsZW1lbnRWYWx1ZSgiQ29udGVudHMiKTsNCisgICAgaWYgKCFwQ29udGVudCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9CeXRlVGV4dEJ1ZiBidWY7DQorICAgIGludCB0eXBlID0gcENvbnRlbnQtPkdldFR5cGUoKTsNCisgICAgaWYgKHR5cGUgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSAoQ1BERl9BcnJheSopcENvbnRlbnQ7DQorICAgICAgICBpbnQgaUNvdW50ID0gcEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgQ1BERl9TdHJlYW1BY2MqKiBwQ29udGVudEFycmF5ID0gKENQREZfU3RyZWFtQWNjKiopRlhfQWxsb2MoQ1BERl9TdHJlYW1BY2MqLCBpQ291bnQpOw0KKyAgICAgICAgaW50IHNpemUgPSAwOw0KKyAgICAgICAgaW50IGkgPSAwOw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGlDb3VudDsgKytpKSB7DQorICAgICAgICAgICAgcENvbnRlbnQgPSBwQXJyYXktPkdldEVsZW1lbnQoaSk7DQorICAgICAgICAgICAgaWYgKCFwQ29udGVudCB8fCBwQ29udGVudC0+R2V0VHlwZSgpICE9IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENQREZfU3RyZWFtQWNjKiBwU3RyZWFtID0gRlhfTkVXIENQREZfU3RyZWFtQWNjKCk7DQorICAgICAgICAgICAgcFN0cmVhbS0+TG9hZEFsbERhdGEoKENQREZfU3RyZWFtKilwQ29udGVudCk7DQorICAgICAgICAgICAgcENvbnRlbnRBcnJheVtpXSA9IHBTdHJlYW07DQorICAgICAgICAgICAgc2l6ZSArPSBwQ29udGVudEFycmF5W2ldLT5HZXRTaXplKCkgKyAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IHBvcyA9IDA7DQorICAgICAgICBGWF9MUEJZVEUgcEJ1ZiA9IEZYX0FsbG9jKEZYX0JZVEUsIHNpemUpOw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGlDb3VudDsgKytpKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIocEJ1ZiArIHBvcywgcENvbnRlbnRBcnJheVtpXS0+R2V0RGF0YSgpLCBwQ29udGVudEFycmF5W2ldLT5HZXRTaXplKCkpOw0KKyAgICAgICAgICAgIHBvcyArPSBwQ29udGVudEFycmF5W2ldLT5HZXRTaXplKCkgKyAxOw0KKyAgICAgICAgICAgIHBCdWZbcG9zIC0gMV0gPSAnICc7DQorICAgICAgICAgICAgZGVsZXRlIHBDb250ZW50QXJyYXlbaV07DQorICAgICAgICB9DQorICAgICAgICBQcm9jZXNzRm9ybShidWYsIHBCdWYsIHNpemUsIG1hdHJpeCk7DQorICAgICAgICBGWF9GcmVlKHBCdWYpOw0KKyAgICAgICAgRlhfRnJlZShwQ29udGVudEFycmF5KTsNCisgICAgfSBlbHNlIGlmICh0eXBlID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIENQREZfU3RyZWFtQWNjIGNvbnRlbnRTdHJlYW07DQorICAgICAgICBjb250ZW50U3RyZWFtLkxvYWRBbGxEYXRhKChDUERGX1N0cmVhbSopcENvbnRlbnQpOw0KKyAgICAgICAgUHJvY2Vzc0Zvcm0oYnVmLCBjb250ZW50U3RyZWFtLkdldERhdGEoKSwgY29udGVudFN0cmVhbS5HZXRTaXplKCksIG1hdHJpeCk7DQorICAgIH0NCisgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW0gPSBGWF9ORVcgQ1BERl9TdHJlYW0oTlVMTCwgMCwgTlVMTCk7DQorICAgIHBTdHJlYW0tPlNldERhdGEoYnVmLkdldEJ1ZmZlcigpLCBidWYuR2V0TGVuZ3RoKCksIEZBTFNFLCBGQUxTRSk7DQorICAgIG1fcERvY3VtZW50LT5BZGRJbmRpcmVjdE9iamVjdChwU3RyZWFtKTsNCisgICAgbV9wUGFnZS0+bV9wRm9ybURpY3QtPlNldEF0UmVmZXJlbmNlKCJDb250ZW50cyIsIG1fcERvY3VtZW50LCBwU3RyZWFtLT5HZXRPYmpOdW0oKSk7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9lZGl0L2ZwZGZfZWRpdF9jcmVhdGUuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2VkaXQvZnBkZl9lZGl0X2NyZWF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjM2FhNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9lZGl0L2ZwZGZfZWRpdF9jcmVhdGUuY3BwCkBAIC0wLDAgKzEsMjEzMSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3NlcmlhbC5oIg0KKyNpbmNsdWRlICJlZGl0aW50LmgiDQorI2RlZmluZSBQREZfT0JKRUNUU1RSRUFNX01BWExFTkdUSAkoMjU2ICogMTAyNCkNCisjZGVmaW5lIFBERl9YUkVGU1RSRUFNX01BWFNJWkUJCTEwMDAwDQorZXh0ZXJuIHZvaWQgRmxhdGVFbmNvZGUoY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX2RhdGEsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpOw0KK2V4dGVybiB2b2lkIEZsYXRlRW5jb2RlKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCBwcmVkaWN0b3IsIGludCBDb2xvcnMsIGludCBCaXRzUGVyQ29tcG9uZW50LCBpbnQgQ29sdW1ucywNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplKTsNCitleHRlcm4gRlhfQk9PTCBJc1NpZ25hdHVyZURpY3QoY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCk7DQorRlhfSU5UMzIgUERGX0NyZWF0b3JBcHBlbmRPYmplY3QoY29uc3QgQ1BERl9PYmplY3QqIHBPYmosIENGWF9GaWxlQnVmZmVyQXJjaGl2ZSAqcEZpbGUsIEZYX0ZJTEVTSVpFJiBvZmZzZXQpDQorew0KKyAgICBGWF9JTlQzMiBsZW4gPSAwOw0KKyAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICBpZiAocEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIG51bGwiKSkgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgb2Zmc2V0ICs9IDU7DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICBzd2l0Y2ggKHBPYmotPkdldFR5cGUoKSkgew0KKyAgICAgICAgY2FzZSBQREZPQkpfTlVMTDoNCisgICAgICAgICAgICBpZiAocEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIG51bGwiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgb2Zmc2V0ICs9IDU7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBERk9CSl9CT09MRUFOOg0KKyAgICAgICAgY2FzZSBQREZPQkpfTlVNQkVSOg0KKyAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZFN0cmluZyhwT2JqLT5HZXRTdHJpbmcoKSkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG9mZnNldCArPSBsZW4gKyAxOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQREZPQkpfU1RSSU5HOiB7DQorICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIHN0ciA9IHBPYmotPkdldFN0cmluZygpOw0KKyAgICAgICAgICAgICAgICBGWF9CT09MIGJIZXggPSAoKENQREZfU3RyaW5nKilwT2JqKS0+SXNIZXgoKTsNCisgICAgICAgICAgICAgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kU3RyaW5nKFBERl9FbmNvZGVTdHJpbmcoc3RyLCBiSGV4KSkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG9mZnNldCArPSBsZW47DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGT0JKX05BTUU6IHsNCisgICAgICAgICAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIi8iKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyID0gcE9iai0+R2V0U3RyaW5nKCk7DQorICAgICAgICAgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZFN0cmluZyhQREZfTmFtZUVuY29kZShzdHIpKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxlbiArIDE7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGT0JKX1JFRkVSRU5DRTogew0KKyAgICAgICAgICAgICAgICBpZiAocEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiICIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDUERGX1JlZmVyZW5jZSogcCA9IChDUERGX1JlZmVyZW5jZSopcE9iajsNCisgICAgICAgICAgICAgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kRFdvcmQocC0+R2V0UmVmT2JqTnVtKCkpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAocEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIDAgUiAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxlbiArIDY7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGT0JKX0FSUkFZOiB7DQorICAgICAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJbIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOw0KKyAgICAgICAgICAgICAgICBDUERGX0FycmF5KiBwID0gKENQREZfQXJyYXkqKXBPYmo7DQorICAgICAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwLT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBDUERGX09iamVjdCogcEVsZW1lbnQgPSBwLT5HZXRFbGVtZW50KGkpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBFbGVtZW50LT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZERXb3JkKHBFbGVtZW50LT5HZXRPYmpOdW0oKSkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgMCBSIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBsZW4gKyA1Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUERGX0NyZWF0b3JBcHBlbmRPYmplY3QocEVsZW1lbnQsIHBGaWxlLCBvZmZzZXQpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJdIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIFBERk9CSl9ESUNUSU9OQVJZOiB7DQorICAgICAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCI8PCIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMjsNCisgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwID0gKENQREZfRGljdGlvbmFyeSopcE9iajsNCisgICAgICAgICAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcC0+R2V0U3RhcnRQb3MoKTsNCisgICAgICAgICAgICAgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcga2V5Ow0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBWYWx1ZSA9IHAtPkdldE5leHRFbGVtZW50KHBvcywga2V5KTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIvIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZFN0cmluZyhQREZfTmFtZUVuY29kZShrZXkpKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGxlbiArIDE7DQorICAgICAgICAgICAgICAgICAgICBpZiAocFZhbHVlLT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZERXb3JkKHBWYWx1ZS0+R2V0T2JqTnVtKCkpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIDAgUiIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGVuICsgNTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBERl9DcmVhdG9yQXBwZW5kT2JqZWN0KHBWYWx1ZSwgcEZpbGUsIG9mZnNldCkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIj4+IikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG9mZnNldCArPSAyOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIFBERk9CSl9TVFJFQU06IHsNCisgICAgICAgICAgICAgICAgQ1BERl9TdHJlYW0qIHAgPSAoQ1BERl9TdHJlYW0qKXBPYmo7DQorICAgICAgICAgICAgICAgIGlmIChQREZfQ3JlYXRvckFwcGVuZE9iamVjdChwLT5HZXREaWN0KCksIHBGaWxlLCBvZmZzZXQpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJzdHJlYW1cclxuIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG9mZnNldCArPSA4Ow0KKyAgICAgICAgICAgICAgICBDUERGX1N0cmVhbUFjYyBhY2M7DQorICAgICAgICAgICAgICAgIGFjYy5Mb2FkQWxsRGF0YShwLCBUUlVFKTsNCisgICAgICAgICAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRCbG9jayhhY2MuR2V0RGF0YSgpLCBhY2MuR2V0U2l6ZSgpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gYWNjLkdldFNpemUoKTsNCisgICAgICAgICAgICAgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJcclxuZW5kc3RyZWFtIikpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbGVuOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIEFTU0VSVChGQUxTRSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgcmV0dXJuIDE7DQorfQ0KK0ZYX0lOVDMyIFBERl9DcmVhdG9yV3JpdGVUcmFpbGVyKENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgQ0ZYX0ZpbGVCdWZmZXJBcmNoaXZlKiBwRmlsZSwgQ1BERl9BcnJheSogcElEQXJyYXksIEZYX0JPT0wgYkNvbXByZXNzKQ0KK3sNCisgICAgRlhfRklMRVNJWkUgb2Zmc2V0ID0gMDsNCisgICAgRlhfSU5UMzIgbGVuID0gMDsNCisgICAgRlhTWVNfYXNzZXJ0KHBEb2N1bWVudCAmJiBwRmlsZSk7DQorICAgIENQREZfUGFyc2VyICpwUGFyc2VyID0gKENQREZfUGFyc2VyKilwRG9jdW1lbnQtPkdldFBhcnNlcigpOw0KKyAgICBpZiAocFBhcnNlcikgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwID0gcFBhcnNlci0+R2V0VHJhaWxlcigpOw0KKyAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcC0+R2V0U3RhcnRQb3MoKTsNCisgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBrZXk7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBWYWx1ZSA9IHAtPkdldE5leHRFbGVtZW50KHBvcywga2V5KTsNCisgICAgICAgICAgICBpZiAoa2V5ID09IEZYX0JTVFJDKCJFbmNyeXB0IikgfHwga2V5ID09IEZYX0JTVFJDKCJTaXplIikgfHwga2V5ID09IEZYX0JTVFJDKCJGaWx0ZXIiKSB8fA0KKyAgICAgICAgICAgICAgICAgICAga2V5ID09IEZYX0JTVFJDKCJJbmRleCIpIHx8IGtleSA9PSBGWF9CU1RSQygiTGVuZ3RoIikgfHwga2V5ID09IEZYX0JTVFJDKCJQcmV2IikgfHwNCisgICAgICAgICAgICAgICAgICAgIGtleSA9PSBGWF9CU1RSQygiVyIpIHx8IGtleSA9PSBGWF9CU1RSQygiWFJlZlN0bSIpIHx8IGtleSA9PSBGWF9CU1RSQygiVHlwZSIpIHx8IGtleSA9PSBGWF9CU1RSQygiSUQiKSkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGJDb21wcmVzcyAmJiBrZXkgPT0gRlhfQlNUUkMoIkRlY29kZVBhcm1zIikpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKChGWF9CU1RSQygiLyIpKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kU3RyaW5nKFBERl9OYW1lRW5jb2RlKGtleSkpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBvZmZzZXQgKz0gbGVuICsgMTsNCisgICAgICAgICAgICBpZiAocFZhbHVlLT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgICAgICAgICBpZiAocEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiICIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoKGxlbiA9IHBGaWxlLT5BcHBlbmREV29yZChwVmFsdWUtPkdldE9iak51bSgpKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAwIFIgIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG9mZnNldCArPSBsZW4gKyA2Ow0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmIChQREZfQ3JlYXRvckFwcGVuZE9iamVjdChwVmFsdWUsIHBGaWxlLCBvZmZzZXQpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBJREFycmF5KSB7DQorICAgICAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoKEZYX0JTVFJDKCIvSUQiKSkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG9mZnNldCArPSAzOw0KKyAgICAgICAgICAgIGlmIChQREZfQ3JlYXRvckFwcGVuZE9iamVjdChwSURBcnJheSwgcEZpbGUsIG9mZnNldCkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gb2Zmc2V0Ow0KKyAgICB9DQorICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJcclxuL1Jvb3QgIikpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZERXb3JkKHBEb2N1bWVudC0+R2V0Um9vdCgpLT5HZXRPYmpOdW0oKSkpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgMCBSXHJcbiIpKSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBvZmZzZXQgKz0gbGVuICsgMTQ7DQorICAgIGlmIChwRG9jdW1lbnQtPkdldEluZm8oKSkgew0KKyAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIi9JbmZvICIpKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAoKGxlbiA9IHBGaWxlLT5BcHBlbmREV29yZChwRG9jdW1lbnQtPkdldEluZm8oKS0+R2V0T2JqTnVtKCkpKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIDAgUlxyXG4iKSkgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgb2Zmc2V0ICs9IGxlbiArIDEyOw0KKyAgICB9DQorICAgIGlmIChwSURBcnJheSkgew0KKyAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoKEZYX0JTVFJDKCIvSUQiKSkpIDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIG9mZnNldCArPSAzOw0KKyAgICAgICAgaWYgKFBERl9DcmVhdG9yQXBwZW5kT2JqZWN0KHBJREFycmF5LCBwRmlsZSwgb2Zmc2V0KSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIG9mZnNldDsNCit9DQorRlhfSU5UMzIgUERGX0NyZWF0b3JXcml0ZUVuY3J5cHQoY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIEZYX0RXT1JEIGR3T2JqTnVtLCBDRlhfRmlsZUJ1ZmZlckFyY2hpdmUgKnBGaWxlKQ0KK3sNCisgICAgaWYgKCFwRW5jcnlwdERpY3QpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIEZYU1lTX2Fzc2VydChwRmlsZSk7DQorICAgIEZYX0ZJTEVTSVpFIG9mZnNldCA9IDA7DQorICAgIEZYX0lOVDMyIGxlbiA9IDA7DQorICAgIGlmIChwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIvRW5jcnlwdCIpKSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBvZmZzZXQgKz0gODsNCisgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAiKSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kRFdvcmQoZHdPYmpOdW0pKSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAocEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIDAgUiAiKSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgb2Zmc2V0ICs9IGxlbiArIDY7DQorICAgIHJldHVybiBvZmZzZXQ7DQorfQ0KK0ZYX0JPT0wgUERGX0dlbmVyYXRlRmlsZUlEKEZYX0RXT1JEIGR3U2VlZDEsIEZYX0RXT1JEIGR3U2VlZDIsIEZYX0xQRFdPUkQgcEJ1ZmZlcikNCit7DQorICAgIGlmICghcEJ1ZmZlcikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0xQVk9JRCBwQ29udGV4dCA9IEZYX1JhbmRvbV9NVF9TdGFydChkd1NlZWQxKTsNCisgICAgRlhfSU5UMzIgaSA9IDA7DQorICAgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsNCisgICAgICAgICpwQnVmZmVyKysgPSBGWF9SYW5kb21fTVRfR2VuZXJhdGUocENvbnRleHQpOw0KKyAgICB9DQorICAgIEZYX1JhbmRvbV9NVF9DbG9zZShwQ29udGV4dCk7DQorICAgIHBDb250ZXh0ID0gRlhfUmFuZG9tX01UX1N0YXJ0KGR3U2VlZDIpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7DQorICAgICAgICAqcEJ1ZmZlcisrID0gRlhfUmFuZG9tX01UX0dlbmVyYXRlKHBDb250ZXh0KTsNCisgICAgfQ0KKyAgICBGWF9SYW5kb21fTVRfQ2xvc2UocENvbnRleHQpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorY2xhc3MgQ1BERl9GbGF0ZUVuY29kZXINCit7DQorcHVibGljOg0KKyAgICBDUERGX0ZsYXRlRW5jb2RlcigpOw0KKyAgICB+Q1BERl9GbGF0ZUVuY29kZXIoKTsNCisgICAgRlhfQk9PTAkJSW5pdGlhbGl6ZShDUERGX1N0cmVhbSogcFN0cmVhbSwgRlhfQk9PTCBiRmxhdGVFbmNvZGUpOw0KKyAgICBGWF9CT09MCQlJbml0aWFsaXplKEZYX0xQQ0JZVEUgcEJ1ZmZlciwgRlhfRFdPUkQgc2l6ZSwgRlhfQk9PTCBiRmxhdGVFbmNvZGUsIEZYX0JPT0wgYlhSZWZTdHJlYW0gPSBGQUxTRSk7DQorICAgIHZvaWQJCUNsb25lRGljdCgpOw0KKyAgICBGWF9MUEJZVEUJCQltX3BEYXRhOw0KKyAgICBGWF9EV09SRAkJCW1fZHdTaXplOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCW1fcERpY3Q7DQorICAgIEZYX0JPT0wJCQkJbV9iQ2xvbmVkOw0KKyAgICBGWF9CT09MCQkJCW1fYk5ld0RhdGE7DQorICAgIENQREZfU3RyZWFtQWNjCQltX0FjYzsNCit9Ow0KK0NQREZfRmxhdGVFbmNvZGVyOjpDUERGX0ZsYXRlRW5jb2RlcigpDQorew0KKyAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgbV9kd1NpemUgPSAwOw0KKyAgICBtX3BEaWN0ID0gTlVMTDsNCisgICAgbV9iQ2xvbmVkID0gRkFMU0U7DQorICAgIG1fYk5ld0RhdGEgPSBGQUxTRTsNCit9DQordm9pZCBDUERGX0ZsYXRlRW5jb2Rlcjo6Q2xvbmVEaWN0KCkNCit7DQorICAgIGlmICghbV9iQ2xvbmVkKSB7DQorICAgICAgICBtX3BEaWN0ID0gKENQREZfRGljdGlvbmFyeSopbV9wRGljdC0+Q2xvbmUoKTsNCisgICAgICAgIG1fYkNsb25lZCA9IFRSVUU7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0ZsYXRlRW5jb2Rlcjo6SW5pdGlhbGl6ZShDUERGX1N0cmVhbSogcFN0cmVhbSwgRlhfQk9PTCBiRmxhdGVFbmNvZGUpDQorew0KKyAgICBtX0FjYy5Mb2FkQWxsRGF0YShwU3RyZWFtLCBUUlVFKTsNCisgICAgaWYgKHBTdHJlYW0tPkdldERpY3QoKS0+S2V5RXhpc3QoIkZpbHRlciIpIHx8ICFiRmxhdGVFbmNvZGUpIHsNCisgICAgICAgIGlmIChwU3RyZWFtLT5HZXREaWN0KCktPktleUV4aXN0KCJGaWx0ZXIiKSAmJiAhYkZsYXRlRW5jb2RlKSB7DQorICAgICAgICAgICAgQ1BERl9TdHJlYW1BY2MgZGVzdEFjYzsNCisgICAgICAgICAgICBkZXN0QWNjLkxvYWRBbGxEYXRhKHBTdHJlYW0pOw0KKyAgICAgICAgICAgIG1fZHdTaXplID0gZGVzdEFjYy5HZXRTaXplKCk7DQorICAgICAgICAgICAgbV9wRGF0YSA9IChGWF9MUEJZVEUpZGVzdEFjYy5EZXRhY2hEYXRhKCk7DQorICAgICAgICAgICAgbV9wRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKXBTdHJlYW0tPkdldERpY3QoKS0+Q2xvbmUoKTsNCisgICAgICAgICAgICBtX3BEaWN0LT5SZW1vdmVBdChGWF9CU1RSQygiRmlsdGVyIikpOw0KKyAgICAgICAgICAgIG1fYk5ld0RhdGEgPSBUUlVFOw0KKyAgICAgICAgICAgIG1fYkNsb25lZCA9IFRSVUU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fcERhdGEgPSAoRlhfTFBCWVRFKW1fQWNjLkdldERhdGEoKTsNCisgICAgICAgICAgICBtX2R3U2l6ZSA9IG1fQWNjLkdldFNpemUoKTsNCisgICAgICAgICAgICBtX3BEaWN0ID0gcFN0cmVhbS0+R2V0RGljdCgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgbV9wRGF0YSA9IE5VTEw7DQorICAgIG1fZHdTaXplID0gMDsNCisgICAgbV9iTmV3RGF0YSA9IFRSVUU7DQorICAgIG1fYkNsb25lZCA9IFRSVUU7DQorICAgIDo6RmxhdGVFbmNvZGUobV9BY2MuR2V0RGF0YSgpLCBtX0FjYy5HZXRTaXplKCksIG1fcERhdGEsIG1fZHdTaXplKTsNCisgICAgbV9wRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKXBTdHJlYW0tPkdldERpY3QoKS0+Q2xvbmUoKTsNCisgICAgbV9wRGljdC0+U2V0QXRJbnRlZ2VyKCJMZW5ndGgiLCBtX2R3U2l6ZSk7DQorICAgIG1fcERpY3QtPlNldEF0TmFtZSgiRmlsdGVyIiwgIkZsYXRlRGVjb2RlIik7DQorICAgIG1fcERpY3QtPlJlbW92ZUF0KCJEZWNvZGVQYXJtcyIpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0ZsYXRlRW5jb2Rlcjo6SW5pdGlhbGl6ZShGWF9MUENCWVRFIHBCdWZmZXIsIEZYX0RXT1JEIHNpemUsIEZYX0JPT0wgYkZsYXRlRW5jb2RlLCBGWF9CT09MIGJYUmVmU3RyZWFtKQ0KK3sNCisgICAgaWYgKCFiRmxhdGVFbmNvZGUpIHsNCisgICAgICAgIG1fcERhdGEgPSAoRlhfTFBCWVRFKXBCdWZmZXI7DQorICAgICAgICBtX2R3U2l6ZSA9IHNpemU7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBtX2JOZXdEYXRhID0gVFJVRTsNCisgICAgaWYgKGJYUmVmU3RyZWFtKSB7DQorICAgICAgICA6OkZsYXRlRW5jb2RlKHBCdWZmZXIsIHNpemUsIDEyLCAxLCA4LCA3LCBtX3BEYXRhLCBtX2R3U2l6ZSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICA6OkZsYXRlRW5jb2RlKHBCdWZmZXIsIHNpemUsIG1fcERhdGEsIG1fZHdTaXplKTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ1BERl9GbGF0ZUVuY29kZXI6On5DUERGX0ZsYXRlRW5jb2RlcigpDQorew0KKyAgICBpZiAobV9iQ2xvbmVkICYmIG1fcERpY3QpIHsNCisgICAgICAgIG1fcERpY3QtPlJlbGVhc2UoKTsNCisgICAgfQ0KKyAgICBpZiAobV9iTmV3RGF0YSAmJiBtX3BEYXRhKSB7DQorICAgICAgICBGWF9GcmVlKG1fcERhdGEpOw0KKyAgICB9DQorfQ0KK2NsYXNzIENQREZfRW5jcnlwdG9yDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9FbmNyeXB0b3IoKTsNCisgICAgfkNQREZfRW5jcnlwdG9yKCk7DQorICAgIEZYX0JPT0wJCUluaXRpYWxpemUoQ1BERl9DcnlwdG9IYW5kbGVyKiBwSGFuZGxlciwgaW50IG9iam51bSwgRlhfTFBCWVRFIHNyY19kYXRhLCBGWF9EV09SRCBzcmNfc2l6ZSk7DQorICAgIEZYX0xQQllURQkJCW1fcERhdGE7DQorICAgIEZYX0RXT1JECQkJbV9kd1NpemU7DQorICAgIEZYX0JPT0wJCQkJbV9iTmV3QnVmOw0KK307DQorQ1BERl9FbmNyeXB0b3I6OkNQREZfRW5jcnlwdG9yKCkNCit7DQorICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICBtX2R3U2l6ZSA9IDA7DQorICAgIG1fYk5ld0J1ZiA9IEZBTFNFOw0KK30NCitGWF9CT09MIENQREZfRW5jcnlwdG9yOjpJbml0aWFsaXplKENQREZfQ3J5cHRvSGFuZGxlciogcEhhbmRsZXIsIGludCBvYmpudW0sIEZYX0xQQllURSBzcmNfZGF0YSwgRlhfRFdPUkQgc3JjX3NpemUpDQorew0KKyAgICBpZiAoc3JjX3NpemUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKHBIYW5kbGVyID09IE5VTEwpIHsNCisgICAgICAgIG1fcERhdGEgPSAoRlhfTFBCWVRFKXNyY19kYXRhOw0KKyAgICAgICAgbV9kd1NpemUgPSBzcmNfc2l6ZTsNCisgICAgICAgIG1fYk5ld0J1ZiA9IEZBTFNFOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgbV9kd1NpemUgPSBwSGFuZGxlci0+RW5jcnlwdEdldFNpemUob2JqbnVtLCAwLCBzcmNfZGF0YSwgc3JjX3NpemUpOw0KKyAgICBtX3BEYXRhID0gRlhfQWxsb2MoRlhfQllURSwgbV9kd1NpemUpOw0KKyAgICBpZighbV9wRGF0YSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHBIYW5kbGVyLT5FbmNyeXB0Q29udGVudChvYmpudW0sIDAsIHNyY19kYXRhLCBzcmNfc2l6ZSwgbV9wRGF0YSwgbV9kd1NpemUpOw0KKyAgICBtX2JOZXdCdWYgPSBUUlVFOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ1BERl9FbmNyeXB0b3I6On5DUERGX0VuY3J5cHRvcigpDQorew0KKyAgICBpZiAobV9iTmV3QnVmKSB7DQorICAgICAgICBGWF9GcmVlKG1fcERhdGEpOw0KKyAgICB9DQorfQ0KK0NQREZfT2JqZWN0U3RyZWFtOjpDUERGX09iamVjdFN0cmVhbSgpDQorICAgIDogbV9kd09iak51bSgwKQ0KKyAgICAsIG1faW5kZXgoMCkNCit7DQorfQ0KK0ZYX0JPT0wgQ1BERl9PYmplY3RTdHJlYW06OlN0YXJ0KCkNCit7DQorICAgIG1fT2JqTnVtQXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgIG1fT2Zmc2V0QXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgIG1fQnVmZmVyLkNsZWFyKCk7DQorICAgIG1fZHdPYmpOdW0gPSAwOw0KKyAgICBtX2luZGV4ID0gMDsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0lOVDMyIENQREZfT2JqZWN0U3RyZWFtOjpDb21wcmVzc0luZGlyZWN0T2JqZWN0KEZYX0RXT1JEIGR3T2JqTnVtLCBjb25zdCBDUERGX09iamVjdCAqcE9iaikNCit7DQorICAgIG1fT2JqTnVtQXJyYXkuQWRkKGR3T2JqTnVtKTsNCisgICAgbV9PZmZzZXRBcnJheS5BZGQobV9CdWZmZXIuR2V0TGVuZ3RoKCkpOw0KKyAgICBtX0J1ZmZlciA8PCBwT2JqOw0KKyAgICByZXR1cm4gMTsNCit9DQorRlhfSU5UMzIgQ1BERl9PYmplY3RTdHJlYW06OkNvbXByZXNzSW5kaXJlY3RPYmplY3QoRlhfRFdPUkQgZHdPYmpOdW0sIEZYX0xQQ0JZVEUgcEJ1ZmZlciwgRlhfRFdPUkQgZHdTaXplKQ0KK3sNCisgICAgbV9PYmpOdW1BcnJheS5BZGQoZHdPYmpOdW0pOw0KKyAgICBtX09mZnNldEFycmF5LkFkZChtX0J1ZmZlci5HZXRMZW5ndGgoKSk7DQorICAgIG1fQnVmZmVyLkFwcGVuZEJsb2NrKHBCdWZmZXIsIGR3U2l6ZSk7DQorICAgIHJldHVybiAxOw0KK30NCitGWF9GSUxFU0laRSBDUERGX09iamVjdFN0cmVhbTo6RW5kKENQREZfQ3JlYXRvciogcENyZWF0b3IpDQorew0KKyAgICBGWFNZU19hc3NlcnQocENyZWF0b3IpOw0KKyAgICBpZiAobV9PYmpOdW1BcnJheS5HZXRTaXplKCkgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ0ZYX0ZpbGVCdWZmZXJBcmNoaXZlICpwRmlsZSA9ICZwQ3JlYXRvci0+bV9GaWxlOw0KKyAgICBDUERGX0NyeXB0b0hhbmRsZXIgKnBIYW5kbGVyID0gcENyZWF0b3ItPm1fcENyeXB0b0hhbmRsZXI7DQorICAgIEZYX0ZJTEVTSVpFIE9iak9mZnNldCA9IHBDcmVhdG9yLT5tX09mZnNldDsNCisgICAgaWYgKCFtX2R3T2JqTnVtKSB7DQorICAgICAgICBtX2R3T2JqTnVtID0gKytwQ3JlYXRvci0+bV9kd0xhc3RPYmpOdW07DQorICAgIH0NCisgICAgQ0ZYX0J5dGVUZXh0QnVmIHRlbXBCdWZmZXI7DQorICAgIEZYX0lOVDMyIGlDb3VudCA9IG1fT2JqTnVtQXJyYXkuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgaUNvdW50OyBpKyspIHsNCisgICAgICAgIHRlbXBCdWZmZXIgPDwgbV9PYmpOdW1BcnJheS5FbGVtZW50QXQoaSkgPDwgRlhfQlNUUkMoIiAiKSA8PCBtX09mZnNldEFycmF5LkVsZW1lbnRBdChpKSA8PCBGWF9CU1RSQygiICIpOw0KKyAgICB9DQorICAgIEZYX0ZJTEVTSVpFICZvZmZzZXQgPSBwQ3JlYXRvci0+bV9PZmZzZXQ7DQorICAgIEZYX0lOVDMyIGxlbiA9IHBGaWxlLT5BcHBlbmREV29yZChtX2R3T2JqTnVtKTsNCisgICAgaWYgKGxlbiA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBvZmZzZXQgKz0gbGVuOw0KKyAgICBpZiAoKGxlbiA9IHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAwIG9ialxyXG48PC9UeXBlIC9PYmpTdG0gL04gIikpKSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBvZmZzZXQgKz0gbGVuOw0KKyAgICBpZiAoKGxlbiA9IHBGaWxlLT5BcHBlbmREV29yZCgoRlhfRFdPUkQpaUNvdW50KSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgb2Zmc2V0ICs9IGxlbjsNCisgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIi9GaXJzdCAiKSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kRFdvcmQoKEZYX0RXT1JEKXRlbXBCdWZmZXIuR2V0TGVuZ3RoKCkpKSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAocEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiL0xlbmd0aCAiKSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgb2Zmc2V0ICs9IGxlbiArIDE1Ow0KKyAgICBpZiAoIXBDcmVhdG9yLT5tX2JDb21wcmVzcyAmJiAhcEhhbmRsZXIpIHsNCisgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZERXb3JkKChGWF9EV09SRCkodGVtcEJ1ZmZlci5HZXRMZW5ndGgoKSArIG1fQnVmZmVyLkdldExlbmd0aCgpKSkpIDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIG9mZnNldCArPSBsZW47DQorICAgICAgICBpZiAoKGxlbiA9IHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIj4+c3RyZWFtXHJcbiIpKSkgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRCbG9jayh0ZW1wQnVmZmVyLkdldEJ1ZmZlcigpLCB0ZW1wQnVmZmVyLkdldExlbmd0aCgpKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEZpbGUtPkFwcGVuZEJsb2NrKG1fQnVmZmVyLkdldEJ1ZmZlcigpLCBtX0J1ZmZlci5HZXRMZW5ndGgoKSkgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgb2Zmc2V0ICs9IGxlbiArIHRlbXBCdWZmZXIuR2V0TGVuZ3RoKCkgKyBtX0J1ZmZlci5HZXRMZW5ndGgoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHRlbXBCdWZmZXIgPDwgbV9CdWZmZXI7DQorICAgICAgICBDUERGX0ZsYXRlRW5jb2RlciBlbmNvZGVyOw0KKyAgICAgICAgZW5jb2Rlci5Jbml0aWFsaXplKHRlbXBCdWZmZXIuR2V0QnVmZmVyKCksIHRlbXBCdWZmZXIuR2V0TGVuZ3RoKCksIHBDcmVhdG9yLT5tX2JDb21wcmVzcyk7DQorICAgICAgICBDUERGX0VuY3J5cHRvciBlbmNyeXB0b3I7DQorICAgICAgICBlbmNyeXB0b3IuSW5pdGlhbGl6ZShwSGFuZGxlciwgbV9kd09iak51bSwgZW5jb2Rlci5tX3BEYXRhLCBlbmNvZGVyLm1fZHdTaXplKTsNCisgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZERXb3JkKGVuY3J5cHRvci5tX2R3U2l6ZSkpIDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIG9mZnNldCArPSBsZW47DQorICAgICAgICBpZiAocENyZWF0b3ItPm1fYkNvbXByZXNzKSB7DQorICAgICAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIi9GaWx0ZXIgL0ZsYXRlRGVjb2RlIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG9mZnNldCArPSAyMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiPj5zdHJlYW1cclxuIikpKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEZpbGUtPkFwcGVuZEJsb2NrKGVuY3J5cHRvci5tX3BEYXRhLCBlbmNyeXB0b3IubV9kd1NpemUpIDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIG9mZnNldCArPSBsZW4gKyBlbmNyeXB0b3IubV9kd1NpemU7DQorICAgIH0NCisgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJcclxuZW5kc3RyZWFtXHJcbmVuZG9ialxyXG4iKSkpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIG9mZnNldCArPSBsZW47DQorICAgIHJldHVybiBPYmpPZmZzZXQ7DQorfQ0KK0NQREZfWFJlZlN0cmVhbTo6Q1BERl9YUmVmU3RyZWFtKCkNCisgICAgOiBtX1ByZXZPZmZzZXQoMCkNCisgICAgLCBtX2lTZWcoMCkNCisgICAgLCBtX2R3VGVtcE9iak51bSgwKQ0KK3sNCit9DQorRlhfQk9PTCBDUERGX1hSZWZTdHJlYW06OlN0YXJ0KCkNCit7DQorICAgIG1fSW5kZXhBcnJheS5SZW1vdmVBbGwoKTsNCisgICAgbV9CdWZmZXIuQ2xlYXIoKTsNCisgICAgbV9pU2VnID0gMDsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0lOVDMyIENQREZfWFJlZlN0cmVhbTo6Q29tcHJlc3NJbmRpcmVjdE9iamVjdChGWF9EV09SRCBkd09iak51bSwgY29uc3QgQ1BERl9PYmplY3QgKnBPYmosIENQREZfQ3JlYXRvciAqcENyZWF0b3IpDQorew0KKyAgICBpZiAoIXBDcmVhdG9yKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBtX09ialN0cmVhbS5Db21wcmVzc0luZGlyZWN0T2JqZWN0KGR3T2JqTnVtLCBwT2JqKTsNCisgICAgaWYgKG1fT2JqU3RyZWFtLm1fT2JqTnVtQXJyYXkuR2V0U2l6ZSgpIDwgcENyZWF0b3ItPm1fT2JqZWN0U3RyZWFtU2l6ZSAmJg0KKyAgICAgICAgICAgIG1fT2JqU3RyZWFtLm1fQnVmZmVyLkdldExlbmd0aCgpIDwgUERGX09CSkVDVFNUUkVBTV9NQVhMRU5HVEgpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIHJldHVybiBFbmRPYmplY3RTdHJlYW0ocENyZWF0b3IpOw0KK30NCitGWF9JTlQzMiBDUERGX1hSZWZTdHJlYW06OkNvbXByZXNzSW5kaXJlY3RPYmplY3QoRlhfRFdPUkQgZHdPYmpOdW0sIEZYX0xQQ0JZVEUgcEJ1ZmZlciwgRlhfRFdPUkQgZHdTaXplLCBDUERGX0NyZWF0b3IgKnBDcmVhdG9yKQ0KK3sNCisgICAgaWYgKCFwQ3JlYXRvcikgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgbV9PYmpTdHJlYW0uQ29tcHJlc3NJbmRpcmVjdE9iamVjdChkd09iak51bSwgcEJ1ZmZlciwgZHdTaXplKTsNCisgICAgaWYgKG1fT2JqU3RyZWFtLm1fT2JqTnVtQXJyYXkuR2V0U2l6ZSgpIDwgcENyZWF0b3ItPm1fT2JqZWN0U3RyZWFtU2l6ZSAmJg0KKyAgICAgICAgICAgIG1fT2JqU3RyZWFtLm1fQnVmZmVyLkdldExlbmd0aCgpIDwgUERGX09CSkVDVFNUUkVBTV9NQVhMRU5HVEgpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIHJldHVybiBFbmRPYmplY3RTdHJlYW0ocENyZWF0b3IpOw0KK30NCitzdGF0aWMgdm9pZCBfQXBwZW5kSW5kZXgwKENGWF9CeXRlVGV4dEJ1ZiYgYnVmZmVyLCBGWF9CT09MIGJGaXJzdE9iamVjdCA9ICBUUlVFKQ0KK3sNCisgICAgYnVmZmVyLkFwcGVuZEJ5dGUoMCk7DQorICAgIGJ1ZmZlci5BcHBlbmRCeXRlKDApOw0KKyAgICBidWZmZXIuQXBwZW5kQnl0ZSgwKTsNCisgICAgYnVmZmVyLkFwcGVuZEJ5dGUoMCk7DQorICAgIGJ1ZmZlci5BcHBlbmRCeXRlKDApOw0KKyAgICBpZiAoYkZpcnN0T2JqZWN0KSB7DQorICAgICAgICBidWZmZXIuQXBwZW5kQnl0ZSgweEZGKTsNCisgICAgICAgIGJ1ZmZlci5BcHBlbmRCeXRlKDB4RkYpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgYnVmZmVyLkFwcGVuZEJ5dGUoMCk7DQorICAgICAgICBidWZmZXIuQXBwZW5kQnl0ZSgwKTsNCisgICAgfQ0KK30NCitzdGF0aWMgdm9pZCBfQXBwZW5kSW5kZXgxKENGWF9CeXRlVGV4dEJ1ZiYgYnVmZmVyLCBGWF9GSUxFU0laRSBvZmZzZXQpDQorew0KKyAgICBidWZmZXIuQXBwZW5kQnl0ZSgxKTsNCisgICAgYnVmZmVyLkFwcGVuZEJ5dGUoRlhfR0VUQllURU9GRlNFVDI0KG9mZnNldCkpOw0KKyAgICBidWZmZXIuQXBwZW5kQnl0ZShGWF9HRVRCWVRFT0ZGU0VUMTYob2Zmc2V0KSk7DQorICAgIGJ1ZmZlci5BcHBlbmRCeXRlKEZYX0dFVEJZVEVPRkZTRVQ4KG9mZnNldCkpOw0KKyAgICBidWZmZXIuQXBwZW5kQnl0ZShGWF9HRVRCWVRFT0ZGU0VUMChvZmZzZXQpKTsNCisgICAgYnVmZmVyLkFwcGVuZEJ5dGUoMCk7DQorICAgIGJ1ZmZlci5BcHBlbmRCeXRlKDApOw0KK30NCitzdGF0aWMgdm9pZCBfQXBwZW5kSW5kZXgyKENGWF9CeXRlVGV4dEJ1ZiYgYnVmZmVyLCBGWF9EV09SRCBvYmpudW0sIEZYX0lOVDMyIGluZGV4KQ0KK3sNCisgICAgYnVmZmVyLkFwcGVuZEJ5dGUoMik7DQorICAgIGJ1ZmZlci5BcHBlbmRCeXRlKEZYX0dFVEJZVEVPRkZTRVQyNChvYmpudW0pKTsNCisgICAgYnVmZmVyLkFwcGVuZEJ5dGUoRlhfR0VUQllURU9GRlNFVDE2KG9iam51bSkpOw0KKyAgICBidWZmZXIuQXBwZW5kQnl0ZShGWF9HRVRCWVRFT0ZGU0VUOChvYmpudW0pKTsNCisgICAgYnVmZmVyLkFwcGVuZEJ5dGUoRlhfR0VUQllURU9GRlNFVDAob2JqbnVtKSk7DQorICAgIGJ1ZmZlci5BcHBlbmRCeXRlKEZYX0dFVEJZVEVPRkZTRVQ4KGluZGV4KSk7DQorICAgIGJ1ZmZlci5BcHBlbmRCeXRlKEZYX0dFVEJZVEVPRkZTRVQwKGluZGV4KSk7DQorfQ0KK0ZYX0lOVDMyIENQREZfWFJlZlN0cmVhbTo6RW5kT2JqZWN0U3RyZWFtKENQREZfQ3JlYXRvciAqcENyZWF0b3IsIEZYX0JPT0wgYkVPRikNCit7DQorICAgIEZYX0ZJTEVTSVpFIG9iak9mZnNldCA9IDA7DQorICAgIGlmIChiRU9GKSB7DQorICAgICAgICBvYmpPZmZzZXQgPSBtX09ialN0cmVhbS5FbmQocENyZWF0b3IpOw0KKyAgICAgICAgaWYgKG9iak9mZnNldCA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfRFdPUkQgJmR3T2JqU3RtTnVtID0gbV9PYmpTdHJlYW0ubV9kd09iak51bTsNCisgICAgaWYgKCFkd09ialN0bU51bSkgew0KKyAgICAgICAgZHdPYmpTdG1OdW0gPSArK3BDcmVhdG9yLT5tX2R3TGFzdE9iak51bTsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBpU2l6ZSA9IG1fT2JqU3RyZWFtLm1fT2JqTnVtQXJyYXkuR2V0U2l6ZSgpOw0KKyAgICBGWF9JTlQzMiBpU2VnID0gbV9JbmRleEFycmF5LkdldFNpemUoKSAvIDI7DQorICAgIGlmICghKHBDcmVhdG9yLT5tX2R3RmxhZ3MgJiBGUERGQ1JFQVRFX0lOQ1JFTUVOVEFMKSkgew0KKyAgICAgICAgaWYgKG1fZHdUZW1wT2JqTnVtID09IDApIHsNCisgICAgICAgICAgICBfQXBwZW5kSW5kZXgwKG1fQnVmZmVyKTsNCisgICAgICAgICAgICBtX2R3VGVtcE9iak51bSsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgZW5kX251bSA9IG1fSW5kZXhBcnJheS5HZXRBdCgoaVNlZyAtIDEpICogMikgKyBtX0luZGV4QXJyYXkuR2V0QXQoKGlTZWcgLSAxKSAqIDIgKyAxKTsNCisgICAgICAgIGludCBpbmRleCA9IDA7DQorICAgICAgICBmb3IgKDsgbV9kd1RlbXBPYmpOdW0gPCBlbmRfbnVtOyBtX2R3VGVtcE9iak51bSsrKSB7DQorICAgICAgICAgICAgRlhfRklMRVNJWkUqIG9mZnNldCA9IHBDcmVhdG9yLT5tX09iamVjdE9mZnNldC5HZXRQdHJBdChtX2R3VGVtcE9iak51bSk7DQorICAgICAgICAgICAgaWYgKG9mZnNldCkgew0KKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gaVNpemUgfHwgbV9kd1RlbXBPYmpOdW0gIT0gbV9PYmpTdHJlYW0ubV9PYmpOdW1BcnJheVtpbmRleF0pIHsNCisgICAgICAgICAgICAgICAgICAgIF9BcHBlbmRJbmRleDEobV9CdWZmZXIsICpvZmZzZXQpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgX0FwcGVuZEluZGV4MihtX0J1ZmZlciwgZHdPYmpTdG1OdW0sIGluZGV4KyspOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgX0FwcGVuZEluZGV4MChtX0J1ZmZlciwgRkFMU0UpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChpU2l6ZSA+IDAgJiYgYkVPRikgew0KKyAgICAgICAgICAgIHBDcmVhdG9yLT5tX09iamVjdE9mZnNldC5BZGQoZHdPYmpTdG1OdW0sIDEpOw0KKyAgICAgICAgICAgIHBDcmVhdG9yLT5tX09iamVjdFNpemUuQWRkKGR3T2JqU3RtTnVtLCAxKTsNCisgICAgICAgICAgICBwQ3JlYXRvci0+bV9PYmplY3RPZmZzZXRbZHdPYmpTdG1OdW1dID0gb2JqT2Zmc2V0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9pU2VnID0gaVNlZzsNCisgICAgICAgIGlmIChiRU9GKSB7DQorICAgICAgICAgICAgbV9PYmpTdHJlYW0uU3RhcnQoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIEZYX0lOVDMyICZqID0gbV9PYmpTdHJlYW0ubV9pbmRleDsNCisgICAgZm9yIChpbnQgaSA9IG1faVNlZzsgaSA8IGlTZWc7IGkrKykgew0KKyAgICAgICAgRlhfRFdPUkQgc3RhcnQgPSBtX0luZGV4QXJyYXkuRWxlbWVudEF0KGkgKiAyKTsNCisgICAgICAgIEZYX0RXT1JEIGVuZCA9IG1fSW5kZXhBcnJheS5FbGVtZW50QXQoaSAqIDIgKyAxKSArIHN0YXJ0Ow0KKyAgICAgICAgZm9yIChGWF9EV09SRCBtID0gc3RhcnQ7IG0gPCBlbmQ7IG0rKykgew0KKyAgICAgICAgICAgIGlmIChqID49IGlTaXplIHx8IG0gIT0gbV9PYmpTdHJlYW0ubV9PYmpOdW1BcnJheS5FbGVtZW50QXQoaikpIHsNCisgICAgICAgICAgICAgICAgX0FwcGVuZEluZGV4MShtX0J1ZmZlciwgcENyZWF0b3ItPm1fT2JqZWN0T2Zmc2V0W21dKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBfQXBwZW5kSW5kZXgyKG1fQnVmZmVyLCBkd09ialN0bU51bSwgaisrKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGlTaXplID4gMCAmJiBiRU9GKSB7DQorICAgICAgICBfQXBwZW5kSW5kZXgxKG1fQnVmZmVyLCBvYmpPZmZzZXQpOw0KKyAgICAgICAgbV9JbmRleEFycmF5LkFkZChkd09ialN0bU51bSk7DQorICAgICAgICBtX0luZGV4QXJyYXkuQWRkKDEpOw0KKyAgICAgICAgaVNlZyArPSAxOw0KKyAgICB9DQorICAgIG1faVNlZyA9IGlTZWc7DQorICAgIGlmIChiRU9GKSB7DQorICAgICAgICBtX09ialN0cmVhbS5TdGFydCgpOw0KKyAgICB9DQorICAgIHJldHVybiAxOw0KK30NCitGWF9CT09MIENQREZfWFJlZlN0cmVhbTo6R2VuZXJhdGVYUmVmU3RyZWFtKENQREZfQ3JlYXRvciogcENyZWF0b3IsIEZYX0JPT0wgYkVPRikNCit7DQorICAgIEZYX0ZJTEVTSVpFIG9mZnNldF90bXAgPSBwQ3JlYXRvci0+bV9PZmZzZXQ7DQorICAgIEZYX0RXT1JEIG9iam51bSA9ICsrcENyZWF0b3ItPm1fZHdMYXN0T2JqTnVtOw0KKyAgICBDRlhfRmlsZUJ1ZmZlckFyY2hpdmUgKnBGaWxlID0gJnBDcmVhdG9yLT5tX0ZpbGU7DQorICAgIEZYX0JPT0wgYkluY3JlbWVudGFsID0gKHBDcmVhdG9yLT5tX2R3RmxhZ3MgJiBGUERGQ1JFQVRFX0lOQ1JFTUVOVEFMKSAhPSAwOw0KKyAgICBpZiAoYkluY3JlbWVudGFsKSB7DQorICAgICAgICBBZGRPYmplY3ROdW1iZXJUb0luZGV4QXJyYXkob2JqbnVtKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZvciAoOyBtX2R3VGVtcE9iak51bSA8IHBDcmVhdG9yLT5tX2R3TGFzdE9iak51bTsgbV9kd1RlbXBPYmpOdW0rKykgew0KKyAgICAgICAgICAgIEZYX0ZJTEVTSVpFKiBvZmZzZXQgPSBwQ3JlYXRvci0+bV9PYmplY3RPZmZzZXQuR2V0UHRyQXQobV9kd1RlbXBPYmpOdW0pOw0KKyAgICAgICAgICAgIGlmIChvZmZzZXQpIHsNCisgICAgICAgICAgICAgICAgX0FwcGVuZEluZGV4MShtX0J1ZmZlciwgKm9mZnNldCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgX0FwcGVuZEluZGV4MChtX0J1ZmZlciwgRkFMU0UpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBfQXBwZW5kSW5kZXgxKG1fQnVmZmVyLCBvZmZzZXRfdG1wKTsNCisgICAgRlhfRklMRVNJWkUgJm9mZnNldCA9IHBDcmVhdG9yLT5tX09mZnNldDsNCisgICAgRlhfSU5UMzIgbGVuID0gcEZpbGUtPkFwcGVuZERXb3JkKG9iam51bSk7DQorICAgIGlmIChsZW4gPCAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgb2Zmc2V0ICs9IGxlbjsNCisgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgMCBvYmpcclxuPDwvVHlwZSAvWFJlZi9XWzEgNCAyXS9JbmRleFsiKSkpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG9mZnNldCArPSBsZW47DQorICAgIGlmICghYkluY3JlbWVudGFsKSB7DQorICAgICAgICBpZiAoKGxlbiA9IHBGaWxlLT5BcHBlbmREV29yZCgwKSkgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgIikpKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBvZmZzZXQgKz0gbGVuICsgMTsNCisgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZERXb3JkKG9iam51bSArIDEpKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBvZmZzZXQgKz0gbGVuOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfSU5UMzIgaVNlZyA9IG1fSW5kZXhBcnJheS5HZXRTaXplKCkgLyAyOw0KKyAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gMDsgaSA8IGlTZWc7IGkrKykgew0KKyAgICAgICAgICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZERXb3JkKG1fSW5kZXhBcnJheS5FbGVtZW50QXQoaSAqIDIpKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgb2Zmc2V0ICs9IGxlbiArIDE7DQorICAgICAgICAgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kRFdvcmQobV9JbmRleEFycmF5LkVsZW1lbnRBdChpICogMiArIDEpKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgb2Zmc2V0ICs9IGxlbiArIDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIl0vU2l6ZSAiKSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kRFdvcmQob2JqbnVtICsgMSkpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG9mZnNldCArPSBsZW4gKyA3Ow0KKyAgICBpZiAobV9QcmV2T2Zmc2V0ID4gMCkgew0KKyAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIi9QcmV2ICIpKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBGWF9DSEFSIG9mZnNldF9idWZbMjBdOw0KKyAgICAgICAgRlhTWVNfbWVtc2V0MzIob2Zmc2V0X2J1ZiwgMCwgc2l6ZW9mKG9mZnNldF9idWYpKTsNCisgICAgICAgIEZYU1lTX2k2NHRvYShtX1ByZXZPZmZzZXQsIG9mZnNldF9idWYsIDEwKTsNCisgICAgICAgIEZYX0lOVDMyIGxlbiA9IChGWF9JTlQzMilGWFNZU19zdHJsZW4ob2Zmc2V0X2J1Zik7DQorICAgICAgICBpZiAocEZpbGUtPkFwcGVuZEJsb2NrKG9mZnNldF9idWYsIGxlbikgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgb2Zmc2V0ICs9IGxlbiArIDY7DQorICAgIH0NCisgICAgRlhfQk9PTCBiUHJlZGljdG9yID0gVFJVRTsNCisgICAgQ1BERl9GbGF0ZUVuY29kZXIgZW5jb2RlcjsNCisgICAgZW5jb2Rlci5Jbml0aWFsaXplKG1fQnVmZmVyLkdldEJ1ZmZlcigpLCBtX0J1ZmZlci5HZXRMZW5ndGgoKSwgcENyZWF0b3ItPm1fYkNvbXByZXNzLCBiUHJlZGljdG9yKTsNCisgICAgaWYgKHBDcmVhdG9yLT5tX2JDb21wcmVzcykgew0KKyAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIi9GaWx0ZXIgL0ZsYXRlRGVjb2RlIikpIDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIG9mZnNldCArPSAyMDsNCisgICAgICAgIGlmIChiUHJlZGljdG9yKSB7DQorICAgICAgICAgICAgaWYgKChsZW4gPSBwRmlsZS0+QXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIvRGVjb2RlUGFybXM8PC9Db2x1bW5zIDcvUHJlZGljdG9yIDEyPj4iKSkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG9mZnNldCArPSBsZW47DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIi9MZW5ndGggIikpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZERXb3JkKGVuY29kZXIubV9kd1NpemUpKSA8IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBvZmZzZXQgKz0gbGVuICsgODsNCisgICAgaWYgKGJFT0YpIHsNCisgICAgICAgIGlmICgobGVuID0gUERGX0NyZWF0b3JXcml0ZVRyYWlsZXIocENyZWF0b3ItPm1fcERvY3VtZW50LCBwRmlsZSwgcENyZWF0b3ItPm1fcElEQXJyYXksIHBDcmVhdG9yLT5tX2JDb21wcmVzcykpIDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIG9mZnNldCArPSBsZW47DQorICAgICAgICBpZiAocENyZWF0b3ItPm1fcEVuY3J5cHREaWN0KSB7DQorICAgICAgICAgICAgRlhfRFdPUkQgZHdFbmNyeXB0T2JqTnVtID0gcENyZWF0b3ItPm1fcEVuY3J5cHREaWN0LT5HZXRPYmpOdW0oKTsNCisgICAgICAgICAgICBpZiAoZHdFbmNyeXB0T2JqTnVtID09IDApIHsNCisgICAgICAgICAgICAgICAgZHdFbmNyeXB0T2JqTnVtID0gcENyZWF0b3ItPm1fZHdFbnJ5cHRPYmpOdW07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICgobGVuID0gUERGX0NyZWF0b3JXcml0ZUVuY3J5cHQocENyZWF0b3ItPm1fcEVuY3J5cHREaWN0LCBkd0VuY3J5cHRPYmpOdW0sIHBGaWxlKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgb2Zmc2V0ICs9IGxlbjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoKGxlbiA9IHBGaWxlLT5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIj4+c3RyZWFtXHJcbiIpKSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgb2Zmc2V0ICs9IGxlbjsNCisgICAgaWYgKHBGaWxlLT5BcHBlbmRCbG9jayhlbmNvZGVyLm1fcERhdGEsIGVuY29kZXIubV9kd1NpemUpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICgobGVuID0gcEZpbGUtPkFwcGVuZFN0cmluZyhGWF9CU1RSQygiXHJcbmVuZHN0cmVhbVxyXG5lbmRvYmpcclxuIikpKSA8IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBvZmZzZXQgKz0gZW5jb2Rlci5tX2R3U2l6ZSArIGxlbjsNCisgICAgbV9QcmV2T2Zmc2V0ID0gb2Zmc2V0X3RtcDsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9YUmVmU3RyZWFtOjpFbmQoQ1BERl9DcmVhdG9yICpwQ3JlYXRvciwgRlhfQk9PTCBiRU9GICkNCit7DQorICAgIGlmIChFbmRPYmplY3RTdHJlYW0ocENyZWF0b3IsIGJFT0YpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBHZW5lcmF0ZVhSZWZTdHJlYW0ocENyZWF0b3IsIGJFT0YpOw0KK30NCitGWF9CT09MIENQREZfWFJlZlN0cmVhbTo6RW5kWFJlZlN0cmVhbShDUERGX0NyZWF0b3IqIHBDcmVhdG9yKQ0KK3sNCisgICAgaWYgKCEocENyZWF0b3ItPm1fZHdGbGFncyAmIEZQREZDUkVBVEVfSU5DUkVNRU5UQUwpKSB7DQorICAgICAgICBfQXBwZW5kSW5kZXgwKG1fQnVmZmVyKTsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDE7IGkgPCBwQ3JlYXRvci0+bV9kd0xhc3RPYmpOdW0gKyAxOyBpKyspIHsNCisgICAgICAgICAgICBGWF9GSUxFU0laRSogb2Zmc2V0ID0gcENyZWF0b3ItPm1fT2JqZWN0T2Zmc2V0LkdldFB0ckF0KGkpOw0KKyAgICAgICAgICAgIGlmIChvZmZzZXQpIHsNCisgICAgICAgICAgICAgICAgX0FwcGVuZEluZGV4MShtX0J1ZmZlciwgKm9mZnNldCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgX0FwcGVuZEluZGV4MChtX0J1ZmZlciwgRkFMU0UpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX0lOVDMyIGlTZWcgPSBtX0luZGV4QXJyYXkuR2V0U2l6ZSgpIC8gMjsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaVNlZzsgaSsrKSB7DQorICAgICAgICAgICAgRlhfRFdPUkQgc3RhcnQgPSBtX0luZGV4QXJyYXkuRWxlbWVudEF0KGkgKiAyKTsNCisgICAgICAgICAgICBGWF9EV09SRCBlbmQgPSBtX0luZGV4QXJyYXkuRWxlbWVudEF0KGkgKiAyICsgMSkgKyBzdGFydDsNCisgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGogPSBzdGFydDsgaiA8IGVuZDsgaisrKSB7DQorICAgICAgICAgICAgICAgIF9BcHBlbmRJbmRleDEobV9CdWZmZXIsIHBDcmVhdG9yLT5tX09iamVjdE9mZnNldFtqXSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBHZW5lcmF0ZVhSZWZTdHJlYW0ocENyZWF0b3IsIEZBTFNFKTsNCit9DQorRlhfQk9PTCBDUERGX1hSZWZTdHJlYW06OkFkZE9iamVjdE51bWJlclRvSW5kZXhBcnJheShGWF9EV09SRCBvYmpudW0pDQorew0KKyAgICBGWF9JTlQzMiBpU2l6ZSA9IG1fSW5kZXhBcnJheS5HZXRTaXplKCk7DQorICAgIGlmIChpU2l6ZSA9PSAwKSB7DQorICAgICAgICBtX0luZGV4QXJyYXkuQWRkKG9iam51bSk7DQorICAgICAgICBtX0luZGV4QXJyYXkuQWRkKDEpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhTWVNfYXNzZXJ0KGlTaXplID4gMSk7DQorICAgICAgICBGWF9EV09SRCBzdGFydG9iam51bSA9IG1fSW5kZXhBcnJheS5FbGVtZW50QXQoaVNpemUgLSAyKTsNCisgICAgICAgIEZYX0lOVDMyIGlDb3VudCA9IG1fSW5kZXhBcnJheS5FbGVtZW50QXQoaVNpemUgLSAxKTsNCisgICAgICAgIGlmIChvYmpudW0gPT0gc3RhcnRvYmpudW0gKyBpQ291bnQpIHsNCisgICAgICAgICAgICBtX0luZGV4QXJyYXlbaVNpemUgLSAxXSA9IGlDb3VudCArIDE7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fSW5kZXhBcnJheS5BZGQob2JqbnVtKTsNCisgICAgICAgICAgICBtX0luZGV4QXJyYXkuQWRkKDEpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDUERGX0NyZWF0b3I6OkNQREZfQ3JlYXRvcihDUERGX0RvY3VtZW50KiBwRG9jKQ0KK3sNCisgICAgbV9wRG9jdW1lbnQgPSBwRG9jOw0KKyAgICBtX3BQYXJzZXIgPSAoQ1BERl9QYXJzZXIqKXBEb2MtPm1fcFBhcnNlcjsNCisgICAgbV9iQ29tcHJlc3MgPSBUUlVFOw0KKyAgICBpZiAobV9wUGFyc2VyKSB7DQorICAgICAgICBtX3BFbmNyeXB0RGljdCA9IG1fcFBhcnNlci0+R2V0RW5jcnlwdERpY3QoKTsNCisgICAgICAgIG1fcENyeXB0b0hhbmRsZXIgPSBtX3BQYXJzZXItPkdldENyeXB0b0hhbmRsZXIoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcEVuY3J5cHREaWN0ID0gTlVMTDsNCisgICAgICAgIG1fcENyeXB0b0hhbmRsZXIgPSBOVUxMOw0KKyAgICB9DQorICAgIG1fYlNlY3VyaXR5Q2hhbmdlZCA9IEZBTFNFOw0KKyAgICBtX2JTdGFuZGFyZFNlY3VyaXR5ID0gRkFMU0U7DQorICAgIG1fcE1ldGFkYXRhID0gTlVMTDsNCisgICAgbV9iRW5jcnlwdENsb25lZCA9IEZBTFNFOw0KKyAgICBtX2JFbmNyeXB0TWV0YWRhdGEgPSBGQUxTRTsNCisgICAgbV9PZmZzZXQgPSAwOw0KKyAgICBtX2lTdGFnZSA9IC0xOw0KKyAgICBtX2R3RmxhZ3MgPSAwOw0KKyAgICBtX1BvcyA9IE5VTEw7DQorICAgIG1fWHJlZlN0YXJ0ID0gMDsNCisgICAgbV9wWFJlZlN0cmVhbSA9IE5VTEw7DQorICAgIG1fT2JqZWN0U3RyZWFtU2l6ZSA9IDIwMDsNCisgICAgbV9kd0xhc3RPYmpOdW0gPSBtX3BEb2N1bWVudC0+R2V0TGFzdE9iak51bSgpOw0KKyAgICBtX3BJREFycmF5ID0gTlVMTDsNCisgICAgbV9GaWxlVmVyc2lvbiA9IDA7DQorICAgIG1fZHdFbnJ5cHRPYmpOdW0gPSAwOw0KKyAgICBtX2JOZXdDcnlwdG8gPSBGQUxTRTsNCit9DQorQ1BERl9DcmVhdG9yOjp+Q1BERl9DcmVhdG9yKCkNCit7DQorICAgIFJlc2V0U3RhbmRhcmRTZWN1cml0eSgpOw0KKyAgICBpZiAobV9iRW5jcnlwdENsb25lZCAmJiBtX3BFbmNyeXB0RGljdCkgew0KKyAgICAgICAgbV9wRW5jcnlwdERpY3QtPlJlbGVhc2UoKTsNCisgICAgICAgIG1fcEVuY3J5cHREaWN0ID0gTlVMTDsNCisgICAgfQ0KKyAgICBDbGVhcigpOw0KK30NCitzdGF0aWMgRlhfQk9PTCBfSXNYUmVmTmVlZEVuZChDUERGX1hSZWZTdHJlYW0qIHBYUmVmLCBGWF9EV09SRCBmbGFnKQ0KK3sNCisgICAgaWYgKCEoZmxhZyAmIEZQREZDUkVBVEVfSU5DUkVNRU5UQUwpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfSU5UMzIgaVNpemUgPSBwWFJlZi0+bV9JbmRleEFycmF5LkdldFNpemUoKSAvIDI7DQorICAgIEZYX0lOVDMyIGlDb3VudCA9IDA7DQorICAgIGZvciAoRlhfSU5UMzIgaSA9IDA7IGkgPCBpU2l6ZTsgaSsrKSB7DQorICAgICAgICBpQ291bnQgKz0gcFhSZWYtPm1fSW5kZXhBcnJheS5FbGVtZW50QXQoaSAqIDIgKyAxKTsNCisgICAgfQ0KKyAgICByZXR1cm4gKGlDb3VudCA+PSBQREZfWFJFRlNUUkVBTV9NQVhTSVpFKTsNCit9DQorRlhfSU5UMzIgQ1BERl9DcmVhdG9yOjpXcml0ZUluZGlyZWN0T2JqZWN0VG9TdHJlYW0oY29uc3QgQ1BERl9PYmplY3QqIHBPYmopDQorew0KKyAgICBpZiAoIW1fcFhSZWZTdHJlYW0pIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIG9iam51bSA9IHBPYmotPkdldE9iak51bSgpOw0KKyAgICBpZiAobV9wUGFyc2VyICYmIG1fcFBhcnNlci0+bV9PYmpWZXJzaW9uLkdldFNpemUoKSA+IChGWF9JTlQzMilvYmpudW0gJiYgbV9wUGFyc2VyLT5tX09ialZlcnNpb25bb2JqbnVtXSA+IDApIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIGlmIChwT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5ICpwRGljdCA9IHBPYmotPkdldERpY3QoKTsNCisgICAgaWYgKHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICBpZiAocERpY3QgJiYgcERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiVHlwZSIpKSA9PSBGWF9CU1RSQygiWFJlZiIpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICBpZiAocERpY3QpIHsNCisgICAgICAgIGlmIChwRGljdCA9PSBtX3BEb2N1bWVudC0+bV9wUm9vdERpY3QgfHwgcERpY3QgPT0gbV9wRW5jcnlwdERpY3QpIHsNCisgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChJc1NpZ25hdHVyZURpY3QocERpY3QpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICB9DQorICAgICAgICBpZiAocERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiVHlwZSIpKSA9PSBGWF9CU1RSQygiUGFnZSIpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wWFJlZlN0cmVhbS0+QWRkT2JqZWN0TnVtYmVyVG9JbmRleEFycmF5KG9iam51bSk7DQorICAgIGlmIChtX3BYUmVmU3RyZWFtLT5Db21wcmVzc0luZGlyZWN0T2JqZWN0KG9iam51bSwgcE9iaiwgdGhpcykgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaWYgKCFfSXNYUmVmTmVlZEVuZChtX3BYUmVmU3RyZWFtLCBtX2R3RmxhZ3MpKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAoIW1fcFhSZWZTdHJlYW0tPkVuZCh0aGlzKSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGlmICghbV9wWFJlZlN0cmVhbS0+U3RhcnQoKSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitGWF9JTlQzMiBDUERGX0NyZWF0b3I6OldyaXRlSW5kaXJlY3RPYmplY3RUb1N0cmVhbShGWF9EV09SRCBvYmpudW0sIEZYX0xQQ0JZVEUgcEJ1ZmZlciwgRlhfRFdPUkQgZHdTaXplKQ0KK3sNCisgICAgaWYgKCFtX3BYUmVmU3RyZWFtKSB7DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICBtX3BYUmVmU3RyZWFtLT5BZGRPYmplY3ROdW1iZXJUb0luZGV4QXJyYXkob2JqbnVtKTsNCisgICAgRlhfSU5UMzIgaVJldCA9IG1fcFhSZWZTdHJlYW0tPkNvbXByZXNzSW5kaXJlY3RPYmplY3Qob2JqbnVtLCBwQnVmZmVyLCBkd1NpemUsIHRoaXMpOw0KKyAgICBpZiAoaVJldCA8IDEpIHsNCisgICAgICAgIHJldHVybiBpUmV0Ow0KKyAgICB9DQorICAgIGlmICghX0lzWFJlZk5lZWRFbmQobV9wWFJlZlN0cmVhbSwgbV9kd0ZsYWdzKSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKCFtX3BYUmVmU3RyZWFtLT5FbmQodGhpcykpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAoIW1fcFhSZWZTdHJlYW0tPlN0YXJ0KCkpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorRlhfSU5UMzIgQ1BERl9DcmVhdG9yOjpBcHBlbmRPYmplY3ROdW1iZXJUb1hSZWYoRlhfRFdPUkQgb2JqbnVtKQ0KK3sNCisgICAgaWYgKCFtX3BYUmVmU3RyZWFtKSB7DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICBtX3BYUmVmU3RyZWFtLT5BZGRPYmplY3ROdW1iZXJUb0luZGV4QXJyYXkob2JqbnVtKTsNCisgICAgaWYgKCFfSXNYUmVmTmVlZEVuZChtX3BYUmVmU3RyZWFtLCBtX2R3RmxhZ3MpKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAoIW1fcFhSZWZTdHJlYW0tPkVuZCh0aGlzKSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGlmICghbV9wWFJlZlN0cmVhbS0+U3RhcnQoKSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitGWF9JTlQzMiBDUERGX0NyZWF0b3I6OldyaXRlU3RyZWFtKGNvbnN0IENQREZfT2JqZWN0KiBwU3RyZWFtLCBGWF9EV09SRCBvYmpudW0sIENQREZfQ3J5cHRvSGFuZGxlciogcENyeXB0bykNCit7DQorICAgIENQREZfRmxhdGVFbmNvZGVyIGVuY29kZXI7DQorICAgIGVuY29kZXIuSW5pdGlhbGl6ZSgoQ1BERl9TdHJlYW0qKXBTdHJlYW0sIHBTdHJlYW0gPT0gbV9wTWV0YWRhdGEgPyBGQUxTRSA6IG1fYkNvbXByZXNzKTsNCisgICAgQ1BERl9FbmNyeXB0b3IgZW5jcnlwdG9yOw0KKyAgICBpZighZW5jcnlwdG9yLkluaXRpYWxpemUocENyeXB0bywgb2JqbnVtLCBlbmNvZGVyLm1fcERhdGEsIGVuY29kZXIubV9kd1NpemUpKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaWYgKChGWF9EV09SRCllbmNvZGVyLm1fcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIkxlbmd0aCIpKSAhPSBlbmNyeXB0b3IubV9kd1NpemUpIHsNCisgICAgICAgIGVuY29kZXIuQ2xvbmVEaWN0KCk7DQorICAgICAgICBlbmNvZGVyLm1fcERpY3QtPlNldEF0SW50ZWdlcihGWF9CU1RSQygiTGVuZ3RoIiksIGVuY3J5cHRvci5tX2R3U2l6ZSk7DQorICAgIH0NCisgICAgaWYgKFdyaXRlRGlyZWN0T2JqKG9iam51bSwgZW5jb2Rlci5tX3BEaWN0KSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpbnQgbGVuID0gbV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygic3RyZWFtXHJcbiIpKTsNCisgICAgaWYgKGxlbiA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBtX09mZnNldCArPSBsZW47DQorICAgIGlmIChtX0ZpbGUuQXBwZW5kQmxvY2soZW5jcnlwdG9yLm1fcERhdGEsIGVuY3J5cHRvci5tX2R3U2l6ZSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgbV9PZmZzZXQgKz0gZW5jcnlwdG9yLm1fZHdTaXplOw0KKyAgICBpZiAoKGxlbiA9IG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIlxyXG5lbmRzdHJlYW0iKSkpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIG1fT2Zmc2V0ICs9IGxlbjsNCisgICAgcmV0dXJuIDE7DQorfQ0KK0ZYX0lOVDMyIENQREZfQ3JlYXRvcjo6V3JpdGVJbmRpcmVjdE9iaihGWF9EV09SRCBvYmpudW0sIGNvbnN0IENQREZfT2JqZWN0KiBwT2JqKQ0KK3sNCisgICAgRlhfSU5UMzIgbGVuID0gbV9GaWxlLkFwcGVuZERXb3JkKG9iam51bSk7DQorICAgIGlmIChsZW4gPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgbV9PZmZzZXQgKz0gbGVuOw0KKyAgICBpZiAoKGxlbiA9IG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAwIG9ialxyXG4iKSkpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIG1fT2Zmc2V0ICs9IGxlbjsNCisgICAgaWYgKHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICBDUERGX0NyeXB0b0hhbmRsZXIgKnBIYW5kbGVyID0gTlVMTDsNCisgICAgICAgIHBIYW5kbGVyID0gKHBPYmogPT0gbV9wTWV0YWRhdGEgJiYgIW1fYkVuY3J5cHRNZXRhZGF0YSkgPyBOVUxMIDogbV9wQ3J5cHRvSGFuZGxlcjsNCisgICAgICAgIGlmIChXcml0ZVN0cmVhbShwT2JqLCBvYmpudW0sIHBIYW5kbGVyKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAoV3JpdGVEaXJlY3RPYmoob2JqbnVtLCBwT2JqKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKChsZW4gPSBtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJcclxuZW5kb2JqXHJcbiIpKSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgbV9PZmZzZXQgKz0gbGVuOw0KKyAgICBpZiAoQXBwZW5kT2JqZWN0TnVtYmVyVG9YUmVmKG9iam51bSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX0lOVDMyIENQREZfQ3JlYXRvcjo6V3JpdGVJbmRpcmVjdE9iaihjb25zdCBDUERGX09iamVjdCogcE9iaikNCit7DQorICAgIEZYX0lOVDMyIGlSZXQgPSBXcml0ZUluZGlyZWN0T2JqZWN0VG9TdHJlYW0ocE9iaik7DQorICAgIGlmIChpUmV0IDwgMSkgew0KKyAgICAgICAgcmV0dXJuIGlSZXQ7DQorICAgIH0NCisgICAgcmV0dXJuIFdyaXRlSW5kaXJlY3RPYmoocE9iai0+R2V0T2JqTnVtKCksIHBPYmopOw0KK30NCitGWF9JTlQzMiBDUERGX0NyZWF0b3I6OldyaXRlRGlyZWN0T2JqKEZYX0RXT1JEIG9iam51bSwgY29uc3QgQ1BERl9PYmplY3QqIHBPYmosIEZYX0JPT0wgYkVuY3J5cHQpDQorew0KKyAgICBGWF9JTlQzMiBsZW4gPSAwOw0KKyAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIG51bGwiKSkgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9PZmZzZXQgKz0gNTsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIHN3aXRjaCAocE9iai0+R2V0VHlwZSgpKSB7DQorICAgICAgICBjYXNlIFBERk9CSl9OVUxMOg0KKyAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgbnVsbCIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX09mZnNldCArPSA1Ow0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQREZPQkpfQk9PTEVBTjoNCisgICAgICAgIGNhc2UgUERGT0JKX05VTUJFUjoNCisgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiICIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoKGxlbiA9IG1fRmlsZS5BcHBlbmRTdHJpbmcocE9iai0+R2V0U3RyaW5nKCkpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX09mZnNldCArPSBsZW4gKyAxOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQREZPQkpfU1RSSU5HOiB7DQorICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIHN0ciA9IHBPYmotPkdldFN0cmluZygpOw0KKyAgICAgICAgICAgICAgICBGWF9CT09MIGJIZXggPSAoKENQREZfU3RyaW5nKilwT2JqKS0+SXNIZXgoKTsNCisgICAgICAgICAgICAgICAgaWYgKG1fcENyeXB0b0hhbmRsZXIgPT0gTlVMTCB8fCAhYkVuY3J5cHQpIHsNCisgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGNvbnRlbnQgPSBQREZfRW5jb2RlU3RyaW5nKHN0ciwgYkhleCk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoKGxlbiA9IG1fRmlsZS5BcHBlbmRTdHJpbmcoY29udGVudCkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fT2Zmc2V0ICs9IGxlbjsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENQREZfRW5jcnlwdG9yIGVuY3J5cHRvcjsNCisgICAgICAgICAgICAgICAgZW5jcnlwdG9yLkluaXRpYWxpemUobV9wQ3J5cHRvSGFuZGxlciwgb2JqbnVtLCAoRlhfTFBCWVRFKShGWF9MUENTVFIpc3RyLCBzdHIuR2V0TGVuZ3RoKCkpOw0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBjb250ZW50ID0gUERGX0VuY29kZVN0cmluZyhDRlhfQnl0ZVN0cmluZygoRlhfTFBDU1RSKWVuY3J5cHRvci5tX3BEYXRhLCBlbmNyeXB0b3IubV9kd1NpemUpLCBiSGV4KTsNCisgICAgICAgICAgICAgICAgaWYgKChsZW4gPSBtX0ZpbGUuQXBwZW5kU3RyaW5nKGNvbnRlbnQpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX09mZnNldCArPSBsZW47DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGT0JKX1NUUkVBTTogew0KKyAgICAgICAgICAgICAgICBDUERGX0ZsYXRlRW5jb2RlciBlbmNvZGVyOw0KKyAgICAgICAgICAgICAgICBlbmNvZGVyLkluaXRpYWxpemUoKENQREZfU3RyZWFtKilwT2JqLCBtX2JDb21wcmVzcyk7DQorICAgICAgICAgICAgICAgIENQREZfRW5jcnlwdG9yIGVuY3J5cHRvcjsNCisgICAgICAgICAgICAgICAgQ1BERl9DcnlwdG9IYW5kbGVyKiBwSGFuZGxlciA9IG1fcENyeXB0b0hhbmRsZXI7DQorICAgICAgICAgICAgICAgIGVuY3J5cHRvci5Jbml0aWFsaXplKHBIYW5kbGVyLCBvYmpudW0sIGVuY29kZXIubV9wRGF0YSwgZW5jb2Rlci5tX2R3U2l6ZSk7DQorICAgICAgICAgICAgICAgIGlmICgoRlhfRFdPUkQpZW5jb2Rlci5tX3BEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJMZW5ndGgiKSkgIT0gZW5jcnlwdG9yLm1fZHdTaXplKSB7DQorICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLkNsb25lRGljdCgpOw0KKyAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci5tX3BEaWN0LT5TZXRBdEludGVnZXIoRlhfQlNUUkMoIkxlbmd0aCIpLCBlbmNyeXB0b3IubV9kd1NpemUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChXcml0ZURpcmVjdE9iaihvYmpudW0sIGVuY29kZXIubV9wRGljdCkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKChsZW4gPSBtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJzdHJlYW1cclxuIikpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX09mZnNldCArPSBsZW47DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kQmxvY2soZW5jcnlwdG9yLm1fcERhdGEsIGVuY3J5cHRvci5tX2R3U2l6ZSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9PZmZzZXQgKz0gZW5jcnlwdG9yLm1fZHdTaXplOw0KKyAgICAgICAgICAgICAgICBpZiAoKGxlbiA9IG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIlxyXG5lbmRzdHJlYW0iKSkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fT2Zmc2V0ICs9IGxlbjsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBQREZPQkpfTkFNRTogew0KKyAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiLyIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdHIgPSBwT2JqLT5HZXRTdHJpbmcoKTsNCisgICAgICAgICAgICAgICAgaWYgKChsZW4gPSBtX0ZpbGUuQXBwZW5kU3RyaW5nKFBERl9OYW1lRW5jb2RlKHN0cikpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX09mZnNldCArPSBsZW4gKyAxOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIFBERk9CSl9SRUZFUkVOQ0U6IHsNCisgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ1BERl9SZWZlcmVuY2UqIHAgPSAoQ1BERl9SZWZlcmVuY2UqKXBPYmo7DQorICAgICAgICAgICAgICAgIGlmICgobGVuID0gbV9GaWxlLkFwcGVuZERXb3JkKHAtPkdldFJlZk9iak51bSgpKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAwIFIiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9PZmZzZXQgKz0gbGVuICsgNTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBQREZPQkpfQVJSQVk6IHsNCisgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIlsiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9PZmZzZXQgKz0gMTsNCisgICAgICAgICAgICAgICAgQ1BERl9BcnJheSogcCA9IChDUERGX0FycmF5KilwT2JqOw0KKyAgICAgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcC0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBFbGVtZW50ID0gcC0+R2V0RWxlbWVudChpKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwRWxlbWVudC0+R2V0T2JqTnVtKCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiICIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxlbiA9IG1fRmlsZS5BcHBlbmREV29yZChwRWxlbWVudC0+R2V0T2JqTnVtKCkpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIDAgUiIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBtX09mZnNldCArPSBsZW4gKyA1Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoV3JpdGVEaXJlY3RPYmoob2JqbnVtLCBwRWxlbWVudCkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIl0iKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9PZmZzZXQgKz0gMTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBQREZPQkpfRElDVElPTkFSWTogew0KKyAgICAgICAgICAgICAgICBpZiAobV9wQ3J5cHRvSGFuZGxlciA9PSBOVUxMIHx8IHBPYmogPT0gbV9wRW5jcnlwdERpY3QpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBQREZfQ3JlYXRvckFwcGVuZE9iamVjdChwT2JqLCAmbV9GaWxlLCBtX09mZnNldCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIjw8IikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fT2Zmc2V0ICs9IDI7DQorICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcCA9IChDUERGX0RpY3Rpb25hcnkqKXBPYmo7DQorICAgICAgICAgICAgICAgIEZYX0JPT0wgYlNpZ25EaWN0ID0gSXNTaWduYXR1cmVEaWN0KHApOw0KKyAgICAgICAgICAgICAgICBGWF9QT1NJVElPTiBwb3MgPSBwLT5HZXRTdGFydFBvcygpOw0KKyAgICAgICAgICAgICAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJTaWduVmFsdWUgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGtleTsNCisgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwVmFsdWUgPSBwLT5HZXROZXh0RWxlbWVudChwb3MsIGtleSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiLyIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAoKGxlbiA9IG1fRmlsZS5BcHBlbmRTdHJpbmcoUERGX05hbWVFbmNvZGUoa2V5KSkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fT2Zmc2V0ICs9IGxlbiArIDE7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYlNpZ25EaWN0ICYmIGtleSA9PSBGWF9CU1RSQygiQ29udGVudHMiKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJTaWduVmFsdWUgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBWYWx1ZS0+R2V0T2JqTnVtKCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiICIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxlbiA9IG1fRmlsZS5BcHBlbmREV29yZChwVmFsdWUtPkdldE9iak51bSgpKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAwIFIgIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fT2Zmc2V0ICs9IGxlbiArIDY7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXcml0ZURpcmVjdE9iaihvYmpudW0sIHBWYWx1ZSwgIWJTaWduVmFsdWUpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCI+PiIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX09mZnNldCArPSAyOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIDE7DQorfQ0KK0ZYX0lOVDMyIENQREZfQ3JlYXRvcjo6V3JpdGVPbGRJbmRpcmVjdE9iamVjdChGWF9EV09SRCBvYmpudW0pDQorew0KKyAgICBpZihtX3BQYXJzZXItPm1fVjVUeXBlW29iam51bV0gPT0gMCB8fCBtX3BQYXJzZXItPm1fVjVUeXBlW29iam51bV0gPT0gMjU1KSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBtX09iamVjdE9mZnNldFtvYmpudW1dID0gbV9PZmZzZXQ7DQorICAgIEZYX0xQVk9JRCB2YWx1ZXRlbXAgPSBOVUxMOw0KKyAgICBGWF9CT09MIGJFeGlzdEluTWFwID0gbV9wRG9jdW1lbnQtPm1fSW5kaXJlY3RPYmpzLkxvb2t1cCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKW9iam51bSwgdmFsdWV0ZW1wKTsNCisgICAgRlhfQk9PTCBiT2JqU3RtID0gKG1fcFBhcnNlci0+bV9WNVR5cGVbb2JqbnVtXSA9PSAyKSAmJiBtX3BFbmNyeXB0RGljdCAmJiAhbV9wWFJlZlN0cmVhbTsNCisgICAgaWYobV9wUGFyc2VyLT5tX2JWZXJzaW9uVXBkYXRlZCB8fCBtX2JTZWN1cml0eUNoYW5nZWQgfHwgYkV4aXN0SW5NYXAgfHwgYk9ialN0bSkgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBtX3BEb2N1bWVudC0+R2V0SW5kaXJlY3RPYmplY3Qob2JqbnVtKTsNCisgICAgICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX09iamVjdE9mZnNldFtvYmpudW1dID0gMDsNCisgICAgICAgICAgICBtX09iamVjdFNpemVbb2JqbnVtXSA9IDA7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICBpZiAoV3JpdGVJbmRpcmVjdE9iaihwT2JqKSkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghYkV4aXN0SW5NYXApIHsNCisgICAgICAgICAgICBtX3BEb2N1bWVudC0+UmVsZWFzZUluZGlyZWN0T2JqZWN0KG9iam51bSk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWF9CWVRFKiBwQnVmZmVyOw0KKyAgICAgICAgRlhfRFdPUkQgc2l6ZTsNCisgICAgICAgIG1fcFBhcnNlci0+R2V0SW5kaXJlY3RCaW5hcnkob2JqbnVtLCBwQnVmZmVyLCBzaXplKTsNCisgICAgICAgIGlmIChwQnVmZmVyID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BQYXJzZXItPm1fVjVUeXBlW29iam51bV0gPT0gMikgew0KKyAgICAgICAgICAgIGlmIChtX3BYUmVmU3RyZWFtKSB7DQorICAgICAgICAgICAgICAgIGlmIChXcml0ZUluZGlyZWN0T2JqZWN0VG9TdHJlYW0ob2JqbnVtLCBwQnVmZmVyLCBzaXplKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0ZyZWUocEJ1ZmZlcik7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBGWF9JTlQzMiBsZW4gPSBtX0ZpbGUuQXBwZW5kRFdvcmQob2JqbnVtKTsNCisgICAgICAgICAgICAgICAgaWYgKGxlbiA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIDAgb2JqICIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX09mZnNldCArPSBsZW4gKyA3Ow0KKyAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZEJsb2NrKHBCdWZmZXIsIHNpemUpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fT2Zmc2V0ICs9IHNpemU7DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJcclxuZW5kb2JqXHJcbiIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX09mZnNldCArPSAxMDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kQmxvY2socEJ1ZmZlciwgc2l6ZSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9PZmZzZXQgKz0gc2l6ZTsNCisgICAgICAgICAgICBpZihBcHBlbmRPYmplY3ROdW1iZXJUb1hSZWYob2JqbnVtKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEZYX0ZyZWUocEJ1ZmZlcik7DQorICAgIH0NCisgICAgcmV0dXJuIDE7DQorfQ0KK0ZYX0lOVDMyIENQREZfQ3JlYXRvcjo6V3JpdGVPbGRPYmpzKElGWF9QYXVzZSAqcFBhdXNlKQ0KK3sNCisgICAgRlhfRFdPUkQgbk9sZFNpemUgPSBtX3BQYXJzZXItPm1fQ3Jvc3NSZWYuR2V0U2l6ZSgpOw0KKyAgICBGWF9EV09SRCBvYmpudW0gPSAoRlhfRFdPUkQpKEZYX1VJTlRQVFIpbV9Qb3M7DQorICAgIGZvcig7IG9iam51bSA8IG5PbGRTaXplOyBvYmpudW0gKyspIHsNCisgICAgICAgIEZYX0lOVDMyIGlSZXQgPSBXcml0ZU9sZEluZGlyZWN0T2JqZWN0KG9iam51bSk7DQorICAgICAgICBpZiAoIWlSZXQpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChpUmV0IDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiBpUmV0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9PYmplY3RTaXplW29iam51bV0gPSAoRlhfRFdPUkQpKG1fT2Zmc2V0IC0gbV9PYmplY3RPZmZzZXRbb2JqbnVtXSk7DQorICAgICAgICBpZiAocFBhdXNlICYmIHBQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgew0KKyAgICAgICAgICAgIG1fUG9zID0gKEZYX0xQVk9JRCkoRlhfVUlOVFBUUikob2JqbnVtICsgMSk7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX0lOVDMyIENQREZfQ3JlYXRvcjo6V3JpdGVOZXdPYmpzKEZYX0JPT0wgYkluY3JlbWVudGFsLCBJRlhfUGF1c2UgKnBQYXVzZSkNCit7DQorICAgIEZYX0lOVDMyIGlDb3VudCA9IG1fTmV3T2JqTnVtQXJyYXkuR2V0U2l6ZSgpOw0KKyAgICBGWF9JTlQzMiBpbmRleCA9IChGWF9JTlQzMikoRlhfVUlOVFBUUiltX1BvczsNCisgICAgd2hpbGUgKGluZGV4IDwgaUNvdW50KSB7DQorICAgICAgICBGWF9EV09SRCBvYmpudW0gPSBtX05ld09iak51bUFycmF5LkVsZW1lbnRBdChpbmRleCk7DQorICAgICAgICBDUERGX09iamVjdCAqcE9iaiA9IE5VTEw7DQorICAgICAgICBtX3BEb2N1bWVudC0+bV9JbmRpcmVjdE9ianMuTG9va3VwKChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpb2JqbnVtLCAoRlhfTFBWT0lEJilwT2JqKTsNCisgICAgICAgIGlmIChOVUxMID09IHBPYmopIHsNCisgICAgICAgICAgICArK2luZGV4Ow0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9PYmplY3RPZmZzZXRbb2JqbnVtXSA9IG1fT2Zmc2V0Ow0KKyAgICAgICAgaWYgKFdyaXRlSW5kaXJlY3RPYmoocE9iaikpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBtX09iamVjdFNpemVbb2JqbnVtXSA9IChGWF9EV09SRCkobV9PZmZzZXQgLSBtX09iamVjdE9mZnNldFtvYmpudW1dKTsNCisgICAgICAgIGluZGV4Kys7DQorICAgICAgICBpZiAocFBhdXNlICYmIHBQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgew0KKyAgICAgICAgICAgIG1fUG9zID0gKEZYX1BPU0lUSU9OKShGWF9VSU5UUFRSKWluZGV4Ow0KKyAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCit2b2lkIENQREZfQ3JlYXRvcjo6SW5pdE9sZE9iak51bU9mZnNldHMoKQ0KK3sNCisgICAgaWYgKCFtX3BQYXJzZXIpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBqID0gMDsNCisgICAgRlhfRFdPUkQgZHdTdGFydCA9IDA7DQorICAgIEZYX0RXT1JEIGR3RW5kID0gbV9wUGFyc2VyLT5HZXRMYXN0T2JqTnVtKCk7DQorICAgIHdoaWxlIChkd1N0YXJ0IDw9IGR3RW5kKSB7DQorICAgICAgICB3aGlsZSAoZHdTdGFydCA8PSBkd0VuZCAmJiAobV9wUGFyc2VyLT5tX1Y1VHlwZVtkd1N0YXJ0XSA9PSAwIHx8IG1fcFBhcnNlci0+bV9WNVR5cGVbZHdTdGFydF0gPT0gMjU1KSkgew0KKyAgICAgICAgICAgIGR3U3RhcnQrKzsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChkd1N0YXJ0ID4gZHdFbmQpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGogPSBkd1N0YXJ0Ow0KKyAgICAgICAgd2hpbGUgKGogPD0gZHdFbmQgJiYgbV9wUGFyc2VyLT5tX1Y1VHlwZVtqXSAhPSAwICYmIG1fcFBhcnNlci0+bV9WNVR5cGVbal0gIT0gMjU1KSB7DQorICAgICAgICAgICAgaisrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9PYmplY3RPZmZzZXQuQWRkKGR3U3RhcnQsIGogLSBkd1N0YXJ0KTsNCisgICAgICAgIG1fT2JqZWN0U2l6ZS5BZGQoZHdTdGFydCwgaiAtIGR3U3RhcnQpOw0KKyAgICAgICAgZHdTdGFydCA9IGo7DQorICAgIH0NCit9DQordm9pZCBDUERGX0NyZWF0b3I6OkluaXROZXdPYmpOdW1PZmZzZXRzKCkNCit7DQorICAgIEZYX0JPT0wgYkluY3JlbWVudGFsID0gKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfSU5DUkVNRU5UQUwpICE9IDA7DQorICAgIEZYX0JPT0wgYk5vT3JpZ2luYWwgPSAobV9kd0ZsYWdzICYgRlBERkNSRUFURV9OT19PUklHSU5BTCkgIT0gMDsNCisgICAgRlhfRFdPUkQgbk9sZFNpemUgPSBtX3BQYXJzZXIgPyBtX3BQYXJzZXItPm1fQ3Jvc3NSZWYuR2V0U2l6ZSgpIDogMDsNCisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9wRG9jdW1lbnQtPm1fSW5kaXJlY3RPYmpzLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgc2l6ZV90IGtleSA9IDA7DQorICAgICAgICBDUERGX09iamVjdCogcE9iajsNCisgICAgICAgIG1fcERvY3VtZW50LT5tX0luZGlyZWN0T2Jqcy5HZXROZXh0QXNzb2MocG9zLCAoRlhfTFBWT0lEJilrZXksIChGWF9MUFZPSUQmKXBPYmopOw0KKyAgICAgICAgRlhfRFdPUkQgb2JqbnVtID0gKEZYX0RXT1JEKWtleTsNCisgICAgICAgIGlmIChwT2JqLT5HZXRPYmpOdW0oKSA9PSAtMSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGJJbmNyZW1lbnRhbCkgew0KKyAgICAgICAgICAgIGlmICghcE9iai0+SXNNb2RpZmllZCgpKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKG9iam51bSA8IG5PbGRTaXplICYmIG1fcFBhcnNlci0+bV9WNVR5cGVbb2JqbnVtXSAhPSAwKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEFwcGVuZE5ld09iak51bShvYmpudW0pOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIGlDb3VudCA9IG1fTmV3T2JqTnVtQXJyYXkuR2V0U2l6ZSgpOw0KKyAgICBpZiAoaUNvdW50ID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBpID0gMDsNCisgICAgRlhfRFdPUkQgZHdTdGFydE9iak51bSA9IDA7DQorICAgIEZYX0JPT0wgYkNyb3NzUmVmVmFsaWQgPSBtX3BQYXJzZXIgJiYgbV9wUGFyc2VyLT5HZXRMYXN0WFJlZk9mZnNldCgpID4gMDsNCisgICAgd2hpbGUgKGkgPCBpQ291bnQpIHsNCisgICAgICAgIGR3U3RhcnRPYmpOdW0gPSBtX05ld09iak51bUFycmF5LkVsZW1lbnRBdChpKTsNCisgICAgICAgIGlmICgoYkluY3JlbWVudGFsICYmIChiTm9PcmlnaW5hbCB8fCBiQ3Jvc3NSZWZWYWxpZCkpIHx8ICFtX09iamVjdE9mZnNldC5HZXRQdHJBdChkd1N0YXJ0T2JqTnVtKSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaSsrOw0KKyAgICB9DQorICAgIGlmIChpID49IGlDb3VudCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3TGFzdE9iak51bSA9IGR3U3RhcnRPYmpOdW07DQorICAgIGkrKzsNCisgICAgRlhfQk9PTCBiTmV3U3RhcnQgPSBGQUxTRTsNCisgICAgZm9yICg7IGkgPCBpQ291bnQ7IGkrKykgew0KKyAgICAgICAgRlhfRFdPUkQgZHdDdXJPYmpOdW0gPSBtX05ld09iak51bUFycmF5LkVsZW1lbnRBdChpKTsNCisgICAgICAgIEZYX0JPT0wgYkV4aXN0ID0gKGR3Q3VyT2JqTnVtIDwgbk9sZFNpemUgJiYgbV9PYmplY3RPZmZzZXQuR2V0UHRyQXQoZHdDdXJPYmpOdW0pICE9IE5VTEwpOw0KKyAgICAgICAgaWYgKGJFeGlzdCB8fCBkd0N1ck9iak51bSAtIGR3TGFzdE9iak51bSA+IDEpIHsNCisgICAgICAgICAgICBpZiAoIWJOZXdTdGFydCkgew0KKyAgICAgICAgICAgICAgICBtX09iamVjdE9mZnNldC5BZGQoZHdTdGFydE9iak51bSwgZHdMYXN0T2JqTnVtIC0gZHdTdGFydE9iak51bSArIDEpOw0KKyAgICAgICAgICAgICAgICBtX09iamVjdFNpemUuQWRkKGR3U3RhcnRPYmpOdW0sIGR3TGFzdE9iak51bSAtIGR3U3RhcnRPYmpOdW0gKyAxKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZHdTdGFydE9iak51bSA9IGR3Q3VyT2JqTnVtOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGJOZXdTdGFydCkgew0KKyAgICAgICAgICAgIGR3U3RhcnRPYmpOdW0gPSBkd0N1ck9iak51bTsNCisgICAgICAgIH0NCisgICAgICAgIGJOZXdTdGFydCA9IGJFeGlzdDsNCisgICAgICAgIGR3TGFzdE9iak51bSA9IGR3Q3VyT2JqTnVtOw0KKyAgICB9DQorICAgIG1fT2JqZWN0T2Zmc2V0LkFkZChkd1N0YXJ0T2JqTnVtLCBkd0xhc3RPYmpOdW0gLSBkd1N0YXJ0T2JqTnVtICsgMSk7DQorICAgIG1fT2JqZWN0U2l6ZS5BZGQoZHdTdGFydE9iak51bSwgZHdMYXN0T2JqTnVtIC0gZHdTdGFydE9iak51bSArIDEpOw0KK30NCit2b2lkIENQREZfQ3JlYXRvcjo6QXBwZW5kTmV3T2JqTnVtKEZYX0RXT1JEIG9iamJ1bSkNCit7DQorICAgIEZYX0lOVDMyIGlTdGFydCA9IDAsIGlGaW5kID0gMDsNCisgICAgRlhfSU5UMzIgaUVuZCA9IG1fTmV3T2JqTnVtQXJyYXkuR2V0VXBwZXJCb3VuZCgpOw0KKyAgICB3aGlsZSAoaVN0YXJ0IDw9IGlFbmQpIHsNCisgICAgICAgIEZYX0lOVDMyIGlNaWQgPSAoaVN0YXJ0ICsgaUVuZCkgLyAyOw0KKyAgICAgICAgRlhfRFdPUkQgZHdNaWQgPSBtX05ld09iak51bUFycmF5LkVsZW1lbnRBdChpTWlkKTsNCisgICAgICAgIGlmIChvYmpidW0gPCBkd01pZCkgew0KKyAgICAgICAgICAgIGlFbmQgPSBpTWlkIC0gMTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKGlNaWQgPT0gaUVuZCkgew0KKyAgICAgICAgICAgICAgICBpRmluZCA9IGlNaWQgKyAxOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRFdPUkQgZHdOZXh0ID0gbV9OZXdPYmpOdW1BcnJheS5FbGVtZW50QXQoaU1pZCArIDEpOw0KKyAgICAgICAgICAgIGlmIChvYmpidW0gPCBkd05leHQpIHsNCisgICAgICAgICAgICAgICAgaUZpbmQgPSBpTWlkICsgMTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlTdGFydCA9IGlNaWQgKyAxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fTmV3T2JqTnVtQXJyYXkuSW5zZXJ0QXQoaUZpbmQsIG9iamJ1bSk7DQorfQ0KK0ZYX0lOVDMyIENQREZfQ3JlYXRvcjo6V3JpdGVEb2NfU3RhZ2UxKElGWF9QYXVzZSAqcFBhdXNlKQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KG1faVN0YWdlID4gLTEgfHwgbV9pU3RhZ2UgPCAyMCk7DQorICAgIGlmIChtX2lTdGFnZSA9PSAwKSB7DQorICAgICAgICBpZiAobV9wUGFyc2VyID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX2R3RmxhZ3MgJj0gfkZQREZDUkVBVEVfSU5DUkVNRU5UQUw7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9iU2VjdXJpdHlDaGFuZ2VkICYmIChtX2R3RmxhZ3MgJiBGUERGQ1JFQVRFX05PX09SSUdJTkFMKSA9PSAwKSB7DQorICAgICAgICAgICAgbV9kd0ZsYWdzICY9IH5GUERGQ1JFQVRFX0lOQ1JFTUVOVEFMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wTWV0YWRhdGEgPSBtX3BEb2N1bWVudC0+R2V0Um9vdCgpLT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIk1ldGFkYXRhIikpOw0KKyAgICAgICAgaWYgKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfT0JKRUNUU1RSRUFNKSB7DQorICAgICAgICAgICAgbV9wWFJlZlN0cmVhbSA9IEZYX05FVyBDUERGX1hSZWZTdHJlYW07DQorICAgICAgICAgICAgbV9wWFJlZlN0cmVhbS0+U3RhcnQoKTsNCisgICAgICAgICAgICBpZiAoKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfSU5DUkVNRU5UQUwpICE9IDAgJiYgbV9wUGFyc2VyKSB7DQorICAgICAgICAgICAgICAgIEZYX0ZJTEVTSVpFIHByZXYgPSBtX3BQYXJzZXItPkdldExhc3RYUmVmT2Zmc2V0KCk7DQorICAgICAgICAgICAgICAgIG1fcFhSZWZTdHJlYW0tPm1fUHJldk9mZnNldCA9IHByZXY7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9pU3RhZ2UgPSAxMDsNCisgICAgfQ0KKyAgICBpZiAobV9pU3RhZ2UgPT0gMTApIHsNCisgICAgICAgIGlmICgobV9kd0ZsYWdzICYgRlBERkNSRUFURV9JTkNSRU1FTlRBTCkgPT0gMCkgew0KKyAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIlUERGLTEuIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fT2Zmc2V0ICs9IDc7DQorICAgICAgICAgICAgRlhfSU5UMzIgdmVyc2lvbiA9IDc7DQorICAgICAgICAgICAgaWYgKG1fRmlsZVZlcnNpb24pIHsNCisgICAgICAgICAgICAgICAgdmVyc2lvbiA9IG1fRmlsZVZlcnNpb247DQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX3BQYXJzZXIpIHsNCisgICAgICAgICAgICAgICAgdmVyc2lvbiA9IG1fcFBhcnNlci0+R2V0RmlsZVZlcnNpb24oKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfSU5UMzIgbGVuID0gbV9GaWxlLkFwcGVuZERXb3JkKHZlcnNpb24gJSAxMCk7DQorICAgICAgICAgICAgaWYgKGxlbiA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX09mZnNldCArPSBsZW47DQorICAgICAgICAgICAgaWYgKChsZW4gPSBtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJcclxuJVx4QTFceEIzXHhDNVx4RDdcclxuIikpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX09mZnNldCArPSBsZW47DQorICAgICAgICAgICAgSW5pdE9sZE9iak51bU9mZnNldHMoKTsNCisgICAgICAgICAgICBtX2lTdGFnZSA9IDIwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBJRlhfRmlsZVJlYWQqIHBTcmNGaWxlID0gbV9wUGFyc2VyLT5HZXRGaWxlQWNjZXNzKCk7DQorICAgICAgICAgICAgbV9PZmZzZXQgPSBwU3JjRmlsZS0+R2V0U2l6ZSgpOw0KKyAgICAgICAgICAgIG1fUG9zID0gKEZYX0xQVk9JRCkoRlhfVUlOVFBUUiltX09mZnNldDsNCisgICAgICAgICAgICBtX2lTdGFnZSA9IDE1Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX2lTdGFnZSA9PSAxNSkgew0KKyAgICAgICAgaWYgKChtX2R3RmxhZ3MgJiBGUERGQ1JFQVRFX05PX09SSUdJTkFMKSA9PSAwICYmIG1fUG9zKSB7DQorICAgICAgICAgICAgSUZYX0ZpbGVSZWFkKiBwU3JjRmlsZSA9IG1fcFBhcnNlci0+R2V0RmlsZUFjY2VzcygpOw0KKyAgICAgICAgICAgIEZYX0JZVEUgYnVmZmVyWzQwOTZdOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIHNyY19zaXplID0gKEZYX0RXT1JEKShGWF9VSU5UUFRSKW1fUG9zOw0KKyAgICAgICAgICAgIHdoaWxlIChzcmNfc2l6ZSkgew0KKyAgICAgICAgICAgICAgICBGWF9EV09SRCBibG9ja19zaXplID0gc3JjX3NpemUgPiA0MDk2ID8gNDA5NiA6IHNyY19zaXplOw0KKyAgICAgICAgICAgICAgICBpZiAoIXBTcmNGaWxlLT5SZWFkQmxvY2soYnVmZmVyLCBtX09mZnNldCAtIHNyY19zaXplLCBibG9ja19zaXplKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kQmxvY2soYnVmZmVyLCBibG9ja19zaXplKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBzcmNfc2l6ZSAtPSBibG9ja19zaXplOw0KKyAgICAgICAgICAgICAgICBpZiAocFBhdXNlICYmIHBQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9Qb3MgPSAoRlhfTFBWT0lEKShGWF9VSU5UUFRSKXNyY19zaXplOw0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfTk9fT1JJR0lOQUwpID09IDAgJiYgbV9wUGFyc2VyLT5HZXRMYXN0WFJlZk9mZnNldCgpID09IDApIHsNCisgICAgICAgICAgICBJbml0T2xkT2JqTnVtT2Zmc2V0cygpOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIGR3RW5kID0gbV9wUGFyc2VyLT5HZXRMYXN0T2JqTnVtKCk7DQorICAgICAgICAgICAgRlhfQk9PTCBiT2JqU3RtID0gKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfT0JKRUNUU1RSRUFNKSAhPSAwOw0KKyAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgb2JqbnVtID0gMDsgb2JqbnVtIDw9IGR3RW5kOyBvYmpudW0rKykgew0KKyAgICAgICAgICAgICAgICBpZiAobV9wUGFyc2VyLT5tX1Y1VHlwZVtvYmpudW1dID09IDAgfHwgbV9wUGFyc2VyLT5tX1Y1VHlwZVtvYmpudW1dID09IDI1NSkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9PYmplY3RPZmZzZXRbb2JqbnVtXSA9IG1fcFBhcnNlci0+bV9Dcm9zc1JlZltvYmpudW1dOw0KKyAgICAgICAgICAgICAgICBpZiAoYk9ialN0bSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wWFJlZlN0cmVhbS0+QWRkT2JqZWN0TnVtYmVyVG9JbmRleEFycmF5KG9iam51bSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGJPYmpTdG0pIHsNCisgICAgICAgICAgICAgICAgbV9wWFJlZlN0cmVhbS0+RW5kWFJlZlN0cmVhbSh0aGlzKTsNCisgICAgICAgICAgICAgICAgbV9wWFJlZlN0cmVhbS0+U3RhcnQoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBtX2lTdGFnZSA9IDIwOw0KKyAgICB9DQorICAgIEluaXROZXdPYmpOdW1PZmZzZXRzKCk7DQorICAgIHJldHVybiBtX2lTdGFnZTsNCit9DQorRlhfSU5UMzIgQ1BERl9DcmVhdG9yOjpXcml0ZURvY19TdGFnZTIoSUZYX1BhdXNlICpwUGF1c2UpDQorew0KKyAgICBGWFNZU19hc3NlcnQobV9pU3RhZ2UgPj0gMjAgfHwgbV9pU3RhZ2UgPCAzMCk7DQorICAgIGlmIChtX2lTdGFnZSA9PSAyMCkgew0KKyAgICAgICAgaWYgKChtX2R3RmxhZ3MgJiBGUERGQ1JFQVRFX0lOQ1JFTUVOVEFMKSA9PSAwICYmIG1fcFBhcnNlcikgew0KKyAgICAgICAgICAgIG1fUG9zID0gKEZYX0xQVk9JRCkoRlhfVUlOVFBUUikwOw0KKyAgICAgICAgICAgIG1faVN0YWdlID0gMjE7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1faVN0YWdlID0gMjU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG1faVN0YWdlID09IDIxKSB7DQorICAgICAgICBGWF9JTlQzMiBpUmV0ID0gV3JpdGVPbGRPYmpzKHBQYXVzZSk7DQorICAgICAgICBpZiAoaVJldCkgew0KKyAgICAgICAgICAgIHJldHVybiBpUmV0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9pU3RhZ2UgPSAyNTsNCisgICAgfQ0KKyAgICBpZiAobV9pU3RhZ2UgPT0gMjUpIHsNCisgICAgICAgIG1fUG9zID0gKEZYX0xQVk9JRCkoRlhfVUlOVFBUUikwOw0KKyAgICAgICAgbV9pU3RhZ2UgPSAyNjsNCisgICAgfQ0KKyAgICBpZiAobV9pU3RhZ2UgPT0gMjYpIHsNCisgICAgICAgIEZYX0lOVDMyIGlSZXQgPSBXcml0ZU5ld09ianMoKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfSU5DUkVNRU5UQUwpICE9IDAsIHBQYXVzZSk7DQorICAgICAgICBpZiAoaVJldCkgew0KKyAgICAgICAgICAgIHJldHVybiBpUmV0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9pU3RhZ2UgPSAyNzsNCisgICAgfQ0KKyAgICBpZiAobV9pU3RhZ2UgPT0gMjcpIHsNCisgICAgICAgIGlmIChOVUxMICE9IG1fcEVuY3J5cHREaWN0ICYmIDAgPT0gbV9wRW5jcnlwdERpY3QtPkdldE9iak51bSgpKSB7DQorICAgICAgICAgICAgbV9kd0xhc3RPYmpOdW0gKz0gMTsNCisgICAgICAgICAgICBGWF9GSUxFU0laRSBzYXZlT2Zmc2V0ID0gbV9PZmZzZXQ7DQorICAgICAgICAgICAgaWYgKFdyaXRlSW5kaXJlY3RPYmoobV9kd0xhc3RPYmpOdW0sIG1fcEVuY3J5cHREaWN0KSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX09iamVjdE9mZnNldC5BZGQobV9kd0xhc3RPYmpOdW0sIDEpOw0KKyAgICAgICAgICAgIG1fT2JqZWN0T2Zmc2V0W21fZHdMYXN0T2JqTnVtXSA9IHNhdmVPZmZzZXQ7DQorICAgICAgICAgICAgbV9PYmplY3RTaXplLkFkZChtX2R3TGFzdE9iak51bSwgMSk7DQorICAgICAgICAgICAgbV9PYmplY3RTaXplW21fZHdMYXN0T2JqTnVtXSA9IG1fT2Zmc2V0IC0gc2F2ZU9mZnNldDsNCisgICAgICAgICAgICBtX2R3RW5yeXB0T2JqTnVtID0gbV9kd0xhc3RPYmpOdW07DQorICAgICAgICAgICAgaWYgKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfSU5DUkVNRU5UQUwpIHsNCisgICAgICAgICAgICAgICAgbV9OZXdPYmpOdW1BcnJheS5BZGQobV9kd0xhc3RPYmpOdW0pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1faVN0YWdlID0gODA7DQorICAgIH0NCisgICAgcmV0dXJuIG1faVN0YWdlOw0KK30NCitGWF9JTlQzMiBDUERGX0NyZWF0b3I6OldyaXRlRG9jX1N0YWdlMyhJRlhfUGF1c2UgKnBQYXVzZSkNCit7DQorICAgIEZYU1lTX2Fzc2VydChtX2lTdGFnZSA+PSA4MCB8fCBtX2lTdGFnZSA8IDkwKTsNCisgICAgRlhfRFdPUkQgZHdMYXN0T2JqTnVtID0gbV9kd0xhc3RPYmpOdW07DQorICAgIGlmIChtX2lTdGFnZSA9PSA4MCkgew0KKyAgICAgICAgbV9YcmVmU3RhcnQgPSBtX09mZnNldDsNCisgICAgICAgIGlmIChtX2R3RmxhZ3MgJiBGUERGQ1JFQVRFX09CSkVDVFNUUkVBTSkgew0KKyAgICAgICAgICAgIG1fcFhSZWZTdHJlYW0tPkVuZCh0aGlzLCBUUlVFKTsNCisgICAgICAgICAgICBtX1hyZWZTdGFydCA9IG1fcFhSZWZTdHJlYW0tPm1fUHJldk9mZnNldDsNCisgICAgICAgICAgICBtX2lTdGFnZSA9IDkwOw0KKyAgICAgICAgfSBlbHNlIGlmICgobV9kd0ZsYWdzICYgRlBERkNSRUFURV9JTkNSRU1FTlRBTCkgPT0gMCB8fCAhbV9wUGFyc2VyLT5Jc1hSZWZTdHJlYW0oKSkgew0KKyAgICAgICAgICAgIGlmICgobV9kd0ZsYWdzICYgRlBERkNSRUFURV9JTkNSRU1FTlRBTCkgPT0gMCB8fCBtX3BQYXJzZXItPkdldExhc3RYUmVmT2Zmc2V0KCkgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdHI7DQorICAgICAgICAgICAgICAgIHN0ciA9IG1fT2JqZWN0T2Zmc2V0LkdldFB0ckF0KDEpID8gRlhfQlNUUkMoInhyZWZcclxuIikgOiBGWF9CU1RSQygieHJlZlxyXG4wIDFcclxuMDAwMDAwMDAwMCA2NTUzNiBmXHJcbiIpOw0KKyAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhzdHIpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fUG9zID0gKEZYX0xQVk9JRCkoRlhfVUlOVFBUUikxOw0KKyAgICAgICAgICAgICAgICBtX2lTdGFnZSA9IDgxOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJ4cmVmXHJcbiIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX1BvcyA9IChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpMDsNCisgICAgICAgICAgICAgICAgbV9pU3RhZ2UgPSA4MjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1faVN0YWdlID0gOTA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG1faVN0YWdlID09IDgxKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdHI7DQorICAgICAgICBGWF9EV09SRCBpID0gKEZYX0RXT1JEKShGWF9VSU5UUFRSKW1fUG9zLCBqOw0KKyAgICAgICAgd2hpbGUgKGkgPD0gZHdMYXN0T2JqTnVtKSB7DQorICAgICAgICAgICAgd2hpbGUgKGkgPD0gZHdMYXN0T2JqTnVtICYmICFtX09iamVjdE9mZnNldC5HZXRQdHJBdChpKSkgew0KKyAgICAgICAgICAgICAgICBpKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChpID4gZHdMYXN0T2JqTnVtKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBqID0gaTsNCisgICAgICAgICAgICB3aGlsZSAoaiA8PSBkd0xhc3RPYmpOdW0gJiYgbV9PYmplY3RPZmZzZXQuR2V0UHRyQXQoaikpIHsNCisgICAgICAgICAgICAgICAgaisrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaSA9PSAxKSB7DQorICAgICAgICAgICAgICAgIHN0ci5Gb3JtYXQoIjAgJWRcclxuMDAwMDAwMDAwMCA2NTUzNiBmXHJcbiIsIGopOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHN0ci5Gb3JtYXQoIiVkICVkXHJcbiIsIGksIGogLSBpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRCbG9jaygoRlhfTFBDU1RSKXN0ciwgc3RyLkdldExlbmd0aCgpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB3aGlsZSAoaSA8IGopIHsNCisgICAgICAgICAgICAgICAgc3RyLkZvcm1hdCgiJTAxMGQgMDAwMDAgblxyXG4iLCBtX09iamVjdE9mZnNldFtpICsrXSk7DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kQmxvY2soKEZYX0xQQ1NUUilzdHIsIHN0ci5HZXRMZW5ndGgoKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGkgPiBkd0xhc3RPYmpOdW0pIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgICAgIG1fUG9zID0gKEZYX0xQVk9JRCkoRlhfVUlOVFBUUilpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBtX2lTdGFnZSA9IDkwOw0KKyAgICB9DQorICAgIGlmIChtX2lTdGFnZSA9PSA4Mikgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyOw0KKyAgICAgICAgRlhfSU5UMzIgaUNvdW50ID0gbV9OZXdPYmpOdW1BcnJheS5HZXRTaXplKCk7DQorICAgICAgICBGWF9JTlQzMiBpID0gKEZYX0lOVDMyKShGWF9VSU5UUFRSKW1fUG9zOw0KKyAgICAgICAgd2hpbGUgKGkgPCBpQ291bnQpIHsNCisgICAgICAgICAgICBGWF9JTlQzMiBqID0gaTsNCisgICAgICAgICAgICBGWF9EV09SRCBvYmpudW0gPSBtX05ld09iak51bUFycmF5LkVsZW1lbnRBdChpKTsNCisgICAgICAgICAgICB3aGlsZSAoaiA8IGlDb3VudCkgew0KKyAgICAgICAgICAgICAgICBpZiAoKytqID09IGlDb3VudCkgew0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgZHdDdXJyZW50ID0gbV9OZXdPYmpOdW1BcnJheS5FbGVtZW50QXQoaik7DQorICAgICAgICAgICAgICAgIGlmIChkd0N1cnJlbnQgLSBvYmpudW0gPiAxKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBvYmpudW0gPSBkd0N1cnJlbnQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG9iam51bSA9IG1fTmV3T2JqTnVtQXJyYXkuRWxlbWVudEF0KGkpOw0KKyAgICAgICAgICAgIGlmIChvYmpudW0gPT0gMSkgew0KKyAgICAgICAgICAgICAgICBzdHIuRm9ybWF0KCIwICVkXHJcbjAwMDAwMDAwMDAgNjU1MzYgZlxyXG4iLCBqIC0gaSArIDEpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHN0ci5Gb3JtYXQoIiVkICVkXHJcbiIsIG9iam51bSwgaiAtIGkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZEJsb2NrKChGWF9MUENTVFIpc3RyLCBzdHIuR2V0TGVuZ3RoKCkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHdoaWxlIChpIDwgaikgew0KKyAgICAgICAgICAgICAgICBvYmpudW0gPSBtX05ld09iak51bUFycmF5LkVsZW1lbnRBdChpKyspOw0KKyAgICAgICAgICAgICAgICBzdHIuRm9ybWF0KCIlMDEwZCAwMDAwMCBuXHJcbiIsIG1fT2JqZWN0T2Zmc2V0W29iam51bV0pOw0KKyAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZEJsb2NrKChGWF9MUENTVFIpc3RyLCBzdHIuR2V0TGVuZ3RoKCkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwUGF1c2UgJiYgKGkgJSAxMDApID09IDAgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgICAgIG1fUG9zID0gKEZYX0xQVk9JRCkoRlhfVUlOVFBUUilpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBtX2lTdGFnZSA9IDkwOw0KKyAgICB9DQorICAgIHJldHVybiBtX2lTdGFnZTsNCit9DQorc3RhdGljIEZYX0lOVDMyIF9PdXRQdXRJbmRleChDRlhfRmlsZUJ1ZmZlckFyY2hpdmUqIHBGaWxlLCBGWF9GSUxFU0laRSBvZmZzZXQpDQorew0KKyAgICBGWFNZU19hc3NlcnQocEZpbGUpOw0KKyAgICBpZiAoc2l6ZW9mKG9mZnNldCkgPiA0KSB7DQorICAgICAgICBpZiAoRlhfR0VUQllURU9GRlNFVDMyKG9mZnNldCkpIHsNCisgICAgICAgICAgICBpZiAocEZpbGUtPkFwcGVuZEJ5dGUoRlhfR0VUQllURU9GRlNFVDU2KG9mZnNldCkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwRmlsZS0+QXBwZW5kQnl0ZShGWF9HRVRCWVRFT0ZGU0VUNDgob2Zmc2V0KSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBGaWxlLT5BcHBlbmRCeXRlKEZYX0dFVEJZVEVPRkZTRVQ0MChvZmZzZXQpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAocEZpbGUtPkFwcGVuZEJ5dGUoRlhfR0VUQllURU9GRlNFVDMyKG9mZnNldCkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwRmlsZS0+QXBwZW5kQnl0ZShGWF9HRVRCWVRFT0ZGU0VUMjQob2Zmc2V0KSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaWYgKHBGaWxlLT5BcHBlbmRCeXRlKEZYX0dFVEJZVEVPRkZTRVQxNihvZmZzZXQpKSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAocEZpbGUtPkFwcGVuZEJ5dGUoRlhfR0VUQllURU9GRlNFVDgob2Zmc2V0KSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaWYgKHBGaWxlLT5BcHBlbmRCeXRlKEZYX0dFVEJZVEVPRkZTRVQwKG9mZnNldCkpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGlmIChwRmlsZS0+QXBwZW5kQnl0ZSgwKSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorRlhfSU5UMzIgQ1BERl9DcmVhdG9yOjpXcml0ZURvY19TdGFnZTQoSUZYX1BhdXNlICpwUGF1c2UpDQorew0KKyAgICBGWFNZU19hc3NlcnQobV9pU3RhZ2UgPj0gOTApOw0KKyAgICBpZiAoKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfT0JKRUNUU1RSRUFNKSA9PSAwKSB7DQorICAgICAgICBGWF9CT09MIGJYUmVmU3RyZWFtID0gKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfSU5DUkVNRU5UQUwpICE9IDAgJiYgbV9wUGFyc2VyLT5Jc1hSZWZTdHJlYW0oKTsNCisgICAgICAgIGlmICghYlhSZWZTdHJlYW0pIHsNCisgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygidHJhaWxlclxyXG48PCIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmREV29yZChtX3BEb2N1bWVudC0+bV9MYXN0T2JqTnVtICsgMSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAwIG9iaiA8PCIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BQYXJzZXIpIHsNCisgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHAgPSBtX3BQYXJzZXItPm1fcFRyYWlsZXI7DQorICAgICAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcC0+R2V0U3RhcnRQb3MoKTsNCisgICAgICAgICAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGtleTsNCisgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBWYWx1ZSA9IHAtPkdldE5leHRFbGVtZW50KHBvcywga2V5KTsNCisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBGWF9CU1RSQygiRW5jcnlwdCIpIHx8IGtleSA9PSBGWF9CU1RSQygiU2l6ZSIpIHx8IGtleSA9PSBGWF9CU1RSQygiRmlsdGVyIikgfHwNCisgICAgICAgICAgICAgICAgICAgICAgICBrZXkgPT0gRlhfQlNUUkMoIkluZGV4IikgfHwga2V5ID09IEZYX0JTVFJDKCJMZW5ndGgiKSB8fCBrZXkgPT0gRlhfQlNUUkMoIlByZXYiKSB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9PSBGWF9CU1RSQygiVyIpIHx8IGtleSA9PSBGWF9CU1RSQygiWFJlZlN0bSIpIHx8IGtleSA9PSBGWF9CU1RSQygiSUQiKSkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoKEZYX0JTVFJDKCIvIikpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhQREZfTmFtZUVuY29kZShrZXkpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAocFZhbHVlLT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmREV29yZChwVmFsdWUtPkdldE9iak51bSgpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIDAgUiAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgRlhfRklMRVNJWkUgb2Zmc2V0ID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGlmIChQREZfQ3JlYXRvckFwcGVuZE9iamVjdChwVmFsdWUsICZtX0ZpbGUsIG9mZnNldCkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiXHJcbi9Sb290ICIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZERXb3JkKG1fcERvY3VtZW50LT5tX3BSb290RGljdC0+R2V0T2JqTnVtKCkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgMCBSXHJcbiIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9wRG9jdW1lbnQtPm1fcEluZm9EaWN0KSB7DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIvSW5mbyAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmREV29yZChtX3BEb2N1bWVudC0+bV9wSW5mb0RpY3QtPkdldE9iak51bSgpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIDAgUlxyXG4iKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9wRW5jcnlwdERpY3QpIHsNCisgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiL0VuY3J5cHQiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRFdPUkQgZHdPYmpOdW0gPSBtX3BFbmNyeXB0RGljdC0+R2V0T2JqTnVtKCk7DQorICAgICAgICAgICAgaWYgKGR3T2JqTnVtID09IDApIHsNCisgICAgICAgICAgICAgICAgZHdPYmpOdW0gPSBtX3BEb2N1bWVudC0+R2V0TGFzdE9iak51bSgpICsgMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmREV29yZChkd09iak51bSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIiAwIFIgIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRTdHJpbmcoRlhfQlNUUkMoIi9TaXplICIpKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9GaWxlLkFwcGVuZERXb3JkKG1fZHdMYXN0T2JqTnVtICsgKGJYUmVmU3RyZWFtID8gMiA6IDEpKSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAoKG1fZHdGbGFncyAmIEZQREZDUkVBVEVfSU5DUkVNRU5UQUwpICE9IDApIHsNCisgICAgICAgICAgICBGWF9GSUxFU0laRSBwcmV2ID0gbV9wUGFyc2VyLT5HZXRMYXN0WFJlZk9mZnNldCgpOw0KKyAgICAgICAgICAgIGlmIChwcmV2KSB7DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIvUHJldiAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfQ0hBUiBvZmZzZXRfYnVmWzIwXTsNCisgICAgICAgICAgICAgICAgRlhTWVNfbWVtc2V0MzIob2Zmc2V0X2J1ZiwgMCwgc2l6ZW9mKG9mZnNldF9idWYpKTsNCisgICAgICAgICAgICAgICAgRlhTWVNfaTY0dG9hKHByZXYsIG9mZnNldF9idWYsIDEwKTsNCisgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmRCbG9jayhvZmZzZXRfYnVmLCBGWFNZU19zdHJsZW4ob2Zmc2V0X2J1ZikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fcElEQXJyYXkpIHsNCisgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZygoRlhfQlNUUkMoIi9JRCIpKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRklMRVNJWkUgb2Zmc2V0ID0gMDsNCisgICAgICAgICAgICBpZiAoUERGX0NyZWF0b3JBcHBlbmRPYmplY3QobV9wSURBcnJheSwgJm1fRmlsZSwgb2Zmc2V0KSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmICghYlhSZWZTdHJlYW0pIHsNCisgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiPj4iKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIvV1swIDQgMV0vSW5kZXhbIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICgobV9kd0ZsYWdzICYgRlBERkNSRUFURV9JTkNSRU1FTlRBTCkgIT0gMCAmJiBtX3BQYXJzZXIgJiYgbV9wUGFyc2VyLT5HZXRMYXN0WFJlZk9mZnNldCgpID09IDApIHsNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgaSA9IDA7DQorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX2R3TGFzdE9iak51bTsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fT2JqZWN0T2Zmc2V0LkdldFB0ckF0KGkpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZERXb3JkKGkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCIgMSAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCJdL0xlbmd0aCAiKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fRmlsZS5BcHBlbmREV29yZChtX2R3TGFzdE9iak51bSAqIDUpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kU3RyaW5nKEZYX0JTVFJDKCI+PnN0cmVhbVxyXG4iKSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fZHdMYXN0T2JqTnVtOyBpKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0ZJTEVTSVpFKiBvZmZzZXQgPSBtX09iamVjdE9mZnNldC5HZXRQdHJBdChpKTsNCisgICAgICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBfT3V0UHV0SW5kZXgoJm1fRmlsZSwgKm9mZnNldCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSBtX05ld09iak51bUFycmF5LkdldFNpemUoKTsNCisgICAgICAgICAgICAgICAgRlhfSU5UMzIgaSA9IDA7DQorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBvYmpudW0gPSBtX05ld09iak51bUFycmF5LkVsZW1lbnRBdChpKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kRFdvcmQob2JqbnVtKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiIDEgIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiXS9MZW5ndGggIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChtX0ZpbGUuQXBwZW5kRFdvcmQoY291bnQgKiA1KSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiPj5zdHJlYW1cclxuIikpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBvYmpudW0gPSBtX05ld09iak51bUFycmF5LkVsZW1lbnRBdChpKTsNCisgICAgICAgICAgICAgICAgICAgIEZYX0ZJTEVTSVpFIG9mZnNldCA9IG1fT2JqZWN0T2Zmc2V0W29iam51bV07DQorICAgICAgICAgICAgICAgICAgICBfT3V0UHV0SW5kZXgoJm1fRmlsZSwgb2Zmc2V0KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiXHJcbmVuZHN0cmVhbSIpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiXHJcbnN0YXJ0eHJlZlxyXG4iKSkgPCAwKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgRlhfQ0hBUiBvZmZzZXRfYnVmWzIwXTsNCisgICAgRlhTWVNfbWVtc2V0MzIob2Zmc2V0X2J1ZiwgMCwgc2l6ZW9mKG9mZnNldF9idWYpKTsNCisgICAgRlhTWVNfaTY0dG9hKG1fWHJlZlN0YXJ0LCBvZmZzZXRfYnVmLCAxMCk7DQorICAgIGlmIChtX0ZpbGUuQXBwZW5kQmxvY2sob2Zmc2V0X2J1ZiwgRlhTWVNfc3RybGVuKG9mZnNldF9idWYpKSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAobV9GaWxlLkFwcGVuZFN0cmluZyhGWF9CU1RSQygiXHJcbiUlRU9GXHJcbiIpKSA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBtX0ZpbGUuRmx1c2goKTsNCisgICAgcmV0dXJuIG1faVN0YWdlID0gMTAwOw0KK30NCit2b2lkIENQREZfQ3JlYXRvcjo6Q2xlYXIoKQ0KK3sNCisgICAgaWYgKG1fcFhSZWZTdHJlYW0pIHsNCisgICAgICAgIGRlbGV0ZSBtX3BYUmVmU3RyZWFtOw0KKyAgICAgICAgbV9wWFJlZlN0cmVhbSA9IE5VTEw7DQorICAgIH0NCisgICAgbV9GaWxlLkNsZWFyKCk7DQorICAgIG1fTmV3T2JqTnVtQXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgIGlmIChtX3BJREFycmF5KSB7DQorICAgICAgICBtX3BJREFycmF5LT5SZWxlYXNlKCk7DQorICAgICAgICBtX3BJREFycmF5ID0gTlVMTDsNCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfQ3JlYXRvcjo6Q3JlYXRlKEZYX0xQQ1NUUiBmaWxlbmFtZSwgRlhfRFdPUkQgZmxhZ3MpDQorew0KKyAgICBpZiAoIW1fRmlsZS5BdHRhY2hGaWxlKGZpbGVuYW1lKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0JPT0wgYlJldCA9IENyZWF0ZShmbGFncyk7DQorICAgIGlmICghYlJldCB8fCAhKGZsYWdzICYgRlBERkNSRUFURV9QUk9HUkVTU0lWRSkpIHsNCisgICAgICAgIENsZWFyKCk7DQorICAgIH0NCisgICAgcmV0dXJuIGJSZXQ7DQorfQ0KK0ZYX0JPT0wgQ1BERl9DcmVhdG9yOjpDcmVhdGUoRlhfTFBDV1NUUiBmaWxlbmFtZSwgRlhfRFdPUkQgZmxhZ3MpDQorew0KKyAgICBpZiAoIW1fRmlsZS5BdHRhY2hGaWxlKGZpbGVuYW1lKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0JPT0wgYlJldCA9IENyZWF0ZShmbGFncyk7DQorICAgIGlmICghYlJldCB8fCAhKGZsYWdzICYgRlBERkNSRUFURV9QUk9HUkVTU0lWRSkpIHsNCisgICAgICAgIENsZWFyKCk7DQorICAgIH0NCisgICAgcmV0dXJuIGJSZXQ7DQorfQ0KK0ZYX0JPT0wgQ1BERl9DcmVhdG9yOjpDcmVhdGUoSUZYX1N0cmVhbVdyaXRlKiBwRmlsZSwgRlhfRFdPUkQgZmxhZ3MpDQorew0KKyAgICBpZiAoIXBGaWxlKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKCFtX0ZpbGUuQXR0YWNoRmlsZShwRmlsZSwgRkFMU0UpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIENyZWF0ZShmbGFncyk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9DcmVhdG9yOjpDcmVhdGUoRlhfRFdPUkQgZmxhZ3MpDQorew0KKyAgICBtX2R3RmxhZ3MgPSBmbGFnczsNCisgICAgbV9pU3RhZ2UgPSAwOw0KKyAgICBtX09mZnNldCA9IDA7DQorICAgIG1fZHdMYXN0T2JqTnVtID0gbV9wRG9jdW1lbnQtPkdldExhc3RPYmpOdW0oKTsNCisgICAgbV9PYmplY3RPZmZzZXQuQ2xlYXIoKTsNCisgICAgbV9PYmplY3RTaXplLkNsZWFyKCk7DQorICAgIG1fTmV3T2JqTnVtQXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgIEluaXRJRCgpOw0KKyAgICBpZiAoZmxhZ3MgJiBGUERGQ1JFQVRFX1BST0dSRVNTSVZFKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gQ29udGludWUoTlVMTCkgPiAtMTsNCit9DQordm9pZCBDUERGX0NyZWF0b3I6OkluaXRJRChGWF9CT09MIGJEZWZhdWx0ICkNCit7DQorICAgIENQREZfQXJyYXkqIHBPbGRJREFycmF5ID0gbV9wUGFyc2VyID8gbV9wUGFyc2VyLT5HZXRJREFycmF5KCkgOiBOVUxMOw0KKyAgICBGWF9CT09MIGJOZXdJZCA9ICFtX3BJREFycmF5Ow0KKyAgICBpZiAoIW1fcElEQXJyYXkpIHsNCisgICAgICAgIEZYX0xQRFdPUkQgcEJ1ZmZlciA9IE5VTEw7DQorICAgICAgICBtX3BJREFycmF5ID0gQ1BERl9BcnJheTo6Q3JlYXRlKCk7DQorICAgICAgICBDUERGX09iamVjdCogcElEMSA9IHBPbGRJREFycmF5LT5HZXRFbGVtZW50KDApOw0KKyAgICAgICAgaWYgKHBJRDEpIHsNCisgICAgICAgICAgICBtX3BJREFycmF5LT5BZGQocElEMS0+Q2xvbmUoKSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBCdWZmZXIgPSBGWF9BbGxvYyhGWF9EV09SRCwgNCk7DQorICAgICAgICAgICAgUERGX0dlbmVyYXRlRmlsZUlEKChGWF9EV09SRCkoRlhfVUlOVFBUUil0aGlzLCBtX2R3TGFzdE9iak51bSwgcEJ1ZmZlcik7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmdDIGJzQnVmZmVyKChGWF9MUENCWVRFKXBCdWZmZXIsIDQgKiBzaXplb2YoRlhfRFdPUkQpKTsNCisgICAgICAgICAgICBtX3BJREFycmF5LT5BZGQoQ1BERl9TdHJpbmc6OkNyZWF0ZShic0J1ZmZlciwgVFJVRSksIG1fcERvY3VtZW50KTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwQnVmZmVyKSB7DQorICAgICAgICAgICAgRlhfRnJlZShwQnVmZmVyKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoIWJEZWZhdWx0KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBPbGRJREFycmF5KSB7DQorICAgICAgICBDUERGX09iamVjdCogcElEMiA9IHBPbGRJREFycmF5LT5HZXRFbGVtZW50KDEpOw0KKyAgICAgICAgaWYgKChtX2R3RmxhZ3MgJiBGUERGQ1JFQVRFX0lOQ1JFTUVOVEFMKSAmJiBtX3BFbmNyeXB0RGljdCAmJiBwSUQyKSB7DQorICAgICAgICAgICAgbV9wSURBcnJheS0+QWRkKHBJRDItPkNsb25lKCkpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQRFdPUkQgcEJ1ZmZlciA9IEZYX0FsbG9jKEZYX0RXT1JELCA0KTsNCisgICAgICAgIFBERl9HZW5lcmF0ZUZpbGVJRCgoRlhfRFdPUkQpKEZYX1VJTlRQVFIpdGhpcywgbV9kd0xhc3RPYmpOdW0sIHBCdWZmZXIpOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmdDIGJzQnVmZmVyKChGWF9MUENCWVRFKXBCdWZmZXIsIDQgKiBzaXplb2YoRlhfRFdPUkQpKTsNCisgICAgICAgIG1fcElEQXJyYXktPkFkZChDUERGX1N0cmluZzo6Q3JlYXRlKGJzQnVmZmVyLCBUUlVFKSwgbV9wRG9jdW1lbnQpOw0KKyAgICAgICAgRlhfRnJlZShwQnVmZmVyKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BJREFycmF5LT5BZGQobV9wSURBcnJheS0+R2V0RWxlbWVudCgwKS0+Q2xvbmUoKSk7DQorICAgIGlmIChtX3BFbmNyeXB0RGljdCAmJiAhcE9sZElEQXJyYXkgJiYgbV9wUGFyc2VyICYmIGJOZXdJZCkgew0KKyAgICAgICAgaWYgKG1fcEVuY3J5cHREaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIkZpbHRlciIpKSA9PSBGWF9CU1RSQygiU3RhbmRhcmQiKSkgew0KKyAgICAgICAgICAgIENQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXIgaGFuZGxlcjsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyB1c2VyX3Bhc3MgPSBtX3BQYXJzZXItPkdldFBhc3N3b3JkKCk7DQorICAgICAgICAgICAgRlhfRFdPUkQgZmxhZyA9IFBERl9FTkNSWVBUX0NPTlRFTlQ7DQorICAgICAgICAgICAgaGFuZGxlci5PbkNyZWF0ZShtX3BFbmNyeXB0RGljdCwgbV9wSURBcnJheSwgKEZYX0xQQ0JZVEUpdXNlcl9wYXNzLCB1c2VyX3Bhc3MuR2V0TGVuZ3RoKCksIGZsYWcpOw0KKyAgICAgICAgICAgIGlmIChtX3BDcnlwdG9IYW5kbGVyICYmIG1fYk5ld0NyeXB0bykgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgbV9wQ3J5cHRvSGFuZGxlcjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wQ3J5cHRvSGFuZGxlciA9IEZYX05FVyBDUERGX1N0YW5kYXJkQ3J5cHRvSGFuZGxlcjsNCisgICAgICAgICAgICBtX3BDcnlwdG9IYW5kbGVyLT5Jbml0KG1fcEVuY3J5cHREaWN0LCAmaGFuZGxlcik7DQorICAgICAgICAgICAgbV9iTmV3Q3J5cHRvID0gVFJVRTsNCisgICAgICAgICAgICBtX2JTZWN1cml0eUNoYW5nZWQgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0lOVDMyIENQREZfQ3JlYXRvcjo6Q29udGludWUoSUZYX1BhdXNlICpwUGF1c2UpDQorew0KKyAgICBpZiAobV9pU3RhZ2UgPCAwKSB7DQorICAgICAgICByZXR1cm4gbV9pU3RhZ2U7DQorICAgIH0NCisgICAgRlhfSU5UMzIgaVJldDsNCisgICAgd2hpbGUgKG1faVN0YWdlIDwgMTAwKSB7DQorICAgICAgICBpZiAobV9pU3RhZ2UgPCAyMCkgew0KKyAgICAgICAgICAgIGlSZXQgPSBXcml0ZURvY19TdGFnZTEocFBhdXNlKTsNCisgICAgICAgIH0gZWxzZSBpZiAobV9pU3RhZ2UgPCAzMCkgew0KKyAgICAgICAgICAgIGlSZXQgPSBXcml0ZURvY19TdGFnZTIocFBhdXNlKTsNCisgICAgICAgIH0gZWxzZSBpZiAobV9pU3RhZ2UgPCA5MCkgew0KKyAgICAgICAgICAgIGlSZXQgPSBXcml0ZURvY19TdGFnZTMocFBhdXNlKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaVJldCA9IFdyaXRlRG9jX1N0YWdlNChwUGF1c2UpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGlSZXQgPCBtX2lTdGFnZSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChpUmV0IDwgMSB8fCBtX2lTdGFnZSA9PSAxMDApIHsNCisgICAgICAgIG1faVN0YWdlID0gLTE7DQorICAgICAgICBDbGVhcigpOw0KKyAgICAgICAgcmV0dXJuIGlSZXQgPiA5OSA/IDAgOiAoaVJldCA8IDEgPyAtMSA6IGlSZXQpOw0KKyAgICB9DQorICAgIHJldHVybiBtX2lTdGFnZTsNCit9DQorRlhfQk9PTCBDUERGX0NyZWF0b3I6OlNldEZpbGVWZXJzaW9uKEZYX0lOVDMyIGZpbGVWZXJzaW9uICkNCit7DQorICAgIGlmIChmaWxlVmVyc2lvbiA8IDEwIHx8IGZpbGVWZXJzaW9uID4gMTcpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX0ZpbGVWZXJzaW9uID0gZmlsZVZlcnNpb247DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENQREZfQ3JlYXRvcjo6UmVzZXRTdGFuZGFyZFNlY3VyaXR5KCkNCit7DQorICAgIGlmICgobV9iU3RhbmRhcmRTZWN1cml0eSB8fCBtX2JOZXdDcnlwdG8pICYmIG1fcENyeXB0b0hhbmRsZXIpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BDcnlwdG9IYW5kbGVyOw0KKyAgICAgICAgbV9wQ3J5cHRvSGFuZGxlciA9IE5VTEw7DQorICAgIH0NCisgICAgbV9iTmV3Q3J5cHRvID0gRkFMU0U7DQorICAgIGlmICghbV9iU3RhbmRhcmRTZWN1cml0eSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX3BFbmNyeXB0RGljdCkgew0KKyAgICAgICAgbV9wRW5jcnlwdERpY3QtPlJlbGVhc2UoKTsNCisgICAgICAgIG1fcEVuY3J5cHREaWN0ID0gTlVMTDsNCisgICAgfQ0KKyAgICBtX2JTdGFuZGFyZFNlY3VyaXR5ID0gRkFMU0U7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9lZGl0L2ZwZGZfZWRpdF9kb2MuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2VkaXQvZnBkZl9lZGl0X2RvYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1N2I5NgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9lZGl0L2ZwZGZfZWRpdF9kb2MuY3BwCkBAIC0wLDAgKzEsMTIwNSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgiDQorI2luY2x1ZGUgIi4uL2ZwZGZfcGFnZS9wYWdlaW50LmgiDQorI2luY2x1ZGUgPGxpbWl0cy5oPg0KK0NQREZfRG9jdW1lbnQ6OkNQREZfRG9jdW1lbnQoKSA6IENQREZfSW5kaXJlY3RPYmplY3RzKE5VTEwpDQorew0KKyAgICBtX3BSb290RGljdCA9IE5VTEw7DQorICAgIG1fcEluZm9EaWN0ID0gTlVMTDsNCisgICAgbV9iTGluZWFyaXplZCA9IEZBTFNFOw0KKyAgICBtX2R3Rmlyc3RQYWdlTm8gPSAwOw0KKyAgICBtX2R3Rmlyc3RQYWdlT2JqTnVtID0gMDsNCisgICAgbV9wRG9jUGFnZSA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UGFnZU1vZHVsZSgpLT5DcmVhdGVEb2NEYXRhKHRoaXMpOw0KKyAgICBtX3BEb2NSZW5kZXIgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldFJlbmRlck1vZHVsZSgpLT5DcmVhdGVEb2NEYXRhKHRoaXMpOw0KK30NCit2b2lkIENQREZfRG9jdW1lbnQ6OkNyZWF0ZU5ld0RvYygpDQorew0KKyAgICBBU1NFUlQobV9wUm9vdERpY3QgPT0gTlVMTCAmJiBtX3BJbmZvRGljdCA9PSBOVUxMKTsNCisgICAgbV9wUm9vdERpY3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICBtX3BSb290RGljdC0+U2V0QXROYW1lKCJUeXBlIiwgIkNhdGFsb2ciKTsNCisgICAgaW50IG9iam51bSA9IEFkZEluZGlyZWN0T2JqZWN0KG1fcFJvb3REaWN0KTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZXMgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICBwUGFnZXMtPlNldEF0TmFtZSgiVHlwZSIsICJQYWdlcyIpOw0KKyAgICBwUGFnZXMtPlNldEF0TnVtYmVyKCJDb3VudCIsIDApOw0KKyAgICBwUGFnZXMtPlNldEF0KCJLaWRzIiwgRlhfTkVXIENQREZfQXJyYXkpOw0KKyAgICBvYmpudW0gPSBBZGRJbmRpcmVjdE9iamVjdChwUGFnZXMpOw0KKyAgICBtX3BSb290RGljdC0+U2V0QXRSZWZlcmVuY2UoIlBhZ2VzIiwgdGhpcywgb2JqbnVtKTsNCisgICAgbV9wSW5mb0RpY3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICBBZGRJbmRpcmVjdE9iamVjdChtX3BJbmZvRGljdCk7DQorfQ0KK3N0YXRpYyBjb25zdCBGWF9XQ0hBUiBnX0ZYX0NQODc0VW5pY29kZXNbMTI4XSA9IHsNCisgICAgMHgyMEFDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjAyNiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MjAxOCwgMHgyMDE5LCAweDIwMUMsIDB4MjAxRCwgMHgyMDIyLCAweDIwMTMsIDB4MjAxNCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDBBMCwgMHgwRTAxLCAweDBFMDIsIDB4MEUwMywgMHgwRTA0LCAweDBFMDUsIDB4MEUwNiwgMHgwRTA3LA0KKyAgICAweDBFMDgsIDB4MEUwOSwgMHgwRTBBLCAweDBFMEIsIDB4MEUwQywgMHgwRTBELCAweDBFMEUsIDB4MEUwRiwNCisgICAgMHgwRTEwLCAweDBFMTEsIDB4MEUxMiwgMHgwRTEzLCAweDBFMTQsIDB4MEUxNSwgMHgwRTE2LCAweDBFMTcsDQorICAgIDB4MEUxOCwgMHgwRTE5LCAweDBFMUEsIDB4MEUxQiwgMHgwRTFDLCAweDBFMUQsIDB4MEUxRSwgMHgwRTFGLA0KKyAgICAweDBFMjAsIDB4MEUyMSwgMHgwRTIyLCAweDBFMjMsIDB4MEUyNCwgMHgwRTI1LCAweDBFMjYsIDB4MEUyNywNCisgICAgMHgwRTI4LCAweDBFMjksIDB4MEUyQSwgMHgwRTJCLCAweDBFMkMsIDB4MEUyRCwgMHgwRTJFLCAweDBFMkYsDQorICAgIDB4MEUzMCwgMHgwRTMxLCAweDBFMzIsIDB4MEUzMywgMHgwRTM0LCAweDBFMzUsIDB4MEUzNiwgMHgwRTM3LA0KKyAgICAweDBFMzgsIDB4MEUzOSwgMHgwRTNBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MEUzRiwNCisgICAgMHgwRTQwLCAweDBFNDEsIDB4MEU0MiwgMHgwRTQzLCAweDBFNDQsIDB4MEU0NSwgMHgwRTQ2LCAweDBFNDcsDQorICAgIDB4MEU0OCwgMHgwRTQ5LCAweDBFNEEsIDB4MEU0QiwgMHgwRTRDLCAweDBFNEQsIDB4MEU0RSwgMHgwRTRGLA0KKyAgICAweDBFNTAsIDB4MEU1MSwgMHgwRTUyLCAweDBFNTMsIDB4MEU1NCwgMHgwRTU1LCAweDBFNTYsIDB4MEU1NywNCisgICAgMHgwRTU4LCAweDBFNTksIDB4MEU1QSwgMHgwRTVCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorfTsNCitzdGF0aWMgY29uc3QgRlhfV0NIQVIgZ19GWF9DUDEyNTBVbmljb2Rlc1sxMjhdID0gew0KKyAgICAweDIwQUMsIDB4MDAwMCwgMHgyMDFBLCAweDAwMDAsIDB4MjAxRSwgMHgyMDI2LCAweDIwMjAsIDB4MjAyMSwNCisgICAgMHgwMDAwLCAweDIwMzAsIDB4MDE2MCwgMHgyMDM5LCAweDAxNUEsIDB4MDE2NCwgMHgwMTdELCAweDAxNzksDQorICAgIDB4MDAwMCwgMHgyMDE4LCAweDIwMTksIDB4MjAxQywgMHgyMDFELCAweDIwMjIsIDB4MjAxMywgMHgyMDE0LA0KKyAgICAweDAwMDAsIDB4MjEyMiwgMHgwMTYxLCAweDIwM0EsIDB4MDE1QiwgMHgwMTY1LCAweDAxN0UsIDB4MDE3QSwNCisgICAgMHgwMEEwLCAweDAyQzcsIDB4MDJEOCwgMHgwMTQxLCAweDAwQTQsIDB4MDEwNCwgMHgwMEE2LCAweDAwQTcsDQorICAgIDB4MDBBOCwgMHgwMEE5LCAweDAxNUUsIDB4MDBBQiwgMHgwMEFDLCAweDAwQUQsIDB4MDBBRSwgMHgwMTdCLA0KKyAgICAweDAwQjAsIDB4MDBCMSwgMHgwMkRCLCAweDAxNDIsIDB4MDBCNCwgMHgwMEI1LCAweDAwQjYsIDB4MDBCNywNCisgICAgMHgwMEI4LCAweDAxMDUsIDB4MDE1RiwgMHgwMEJCLCAweDAxM0QsIDB4MDJERCwgMHgwMTNFLCAweDAxN0MsDQorICAgIDB4MDE1NCwgMHgwMEMxLCAweDAwQzIsIDB4MDEwMiwgMHgwMEM0LCAweDAxMzksIDB4MDEwNiwgMHgwMEM3LA0KKyAgICAweDAxMEMsIDB4MDBDOSwgMHgwMTE4LCAweDAwQ0IsIDB4MDExQSwgMHgwMENELCAweDAwQ0UsIDB4MDEwRSwNCisgICAgMHgwMTEwLCAweDAxNDMsIDB4MDE0NywgMHgwMEQzLCAweDAwRDQsIDB4MDE1MCwgMHgwMEQ2LCAweDAwRDcsDQorICAgIDB4MDE1OCwgMHgwMTZFLCAweDAwREEsIDB4MDE3MCwgMHgwMERDLCAweDAwREQsIDB4MDE2MiwgMHgwMERGLA0KKyAgICAweDAxNTUsIDB4MDBFMSwgMHgwMEUyLCAweDAxMDMsIDB4MDBFNCwgMHgwMTNBLCAweDAxMDcsIDB4MDBFNywNCisgICAgMHgwMTBELCAweDAwRTksIDB4MDExOSwgMHgwMEVCLCAweDAxMUIsIDB4MDBFRCwgMHgwMEVFLCAweDAxMEYsDQorICAgIDB4MDExMSwgMHgwMTQ0LCAweDAxNDgsIDB4MDBGMywgMHgwMEY0LCAweDAxNTEsIDB4MDBGNiwgMHgwMEY3LA0KKyAgICAweDAxNTksIDB4MDE2RiwgMHgwMEZBLCAweDAxNzEsIDB4MDBGQywgMHgwMEZELCAweDAxNjMsIDB4MDJEOSwNCit9Ow0KK3N0YXRpYyBjb25zdCBGWF9XQ0hBUiBnX0ZYX0NQMTI1MVVuaWNvZGVzWzEyOF0gPSB7DQorICAgIDB4MDQwMiwgMHgwNDAzLCAweDIwMUEsIDB4MDQ1MywgMHgyMDFFLCAweDIwMjYsIDB4MjAyMCwgMHgyMDIxLA0KKyAgICAweDIwQUMsIDB4MjAzMCwgMHgwNDA5LCAweDIwMzksIDB4MDQwQSwgMHgwNDBDLCAweDA0MEIsIDB4MDQwRiwNCisgICAgMHgwNDUyLCAweDIwMTgsIDB4MjAxOSwgMHgyMDFDLCAweDIwMUQsIDB4MjAyMiwgMHgyMDEzLCAweDIwMTQsDQorICAgIDB4MDAwMCwgMHgyMTIyLCAweDA0NTksIDB4MjAzQSwgMHgwNDVBLCAweDA0NUMsIDB4MDQ1QiwgMHgwNDVGLA0KKyAgICAweDAwQTAsIDB4MDQwRSwgMHgwNDVFLCAweDA0MDgsIDB4MDBBNCwgMHgwNDkwLCAweDAwQTYsIDB4MDBBNywNCisgICAgMHgwNDAxLCAweDAwQTksIDB4MDQwNCwgMHgwMEFCLCAweDAwQUMsIDB4MDBBRCwgMHgwMEFFLCAweDA0MDcsDQorICAgIDB4MDBCMCwgMHgwMEIxLCAweDA0MDYsIDB4MDQ1NiwgMHgwNDkxLCAweDAwQjUsIDB4MDBCNiwgMHgwMEI3LA0KKyAgICAweDA0NTEsIDB4MjExNiwgMHgwNDU0LCAweDAwQkIsIDB4MDQ1OCwgMHgwNDA1LCAweDA0NTUsIDB4MDQ1NywNCisgICAgMHgwNDEwLCAweDA0MTEsIDB4MDQxMiwgMHgwNDEzLCAweDA0MTQsIDB4MDQxNSwgMHgwNDE2LCAweDA0MTcsDQorICAgIDB4MDQxOCwgMHgwNDE5LCAweDA0MUEsIDB4MDQxQiwgMHgwNDFDLCAweDA0MUQsIDB4MDQxRSwgMHgwNDFGLA0KKyAgICAweDA0MjAsIDB4MDQyMSwgMHgwNDIyLCAweDA0MjMsIDB4MDQyNCwgMHgwNDI1LCAweDA0MjYsIDB4MDQyNywNCisgICAgMHgwNDI4LCAweDA0MjksIDB4MDQyQSwgMHgwNDJCLCAweDA0MkMsIDB4MDQyRCwgMHgwNDJFLCAweDA0MkYsDQorICAgIDB4MDQzMCwgMHgwNDMxLCAweDA0MzIsIDB4MDQzMywgMHgwNDM0LCAweDA0MzUsIDB4MDQzNiwgMHgwNDM3LA0KKyAgICAweDA0MzgsIDB4MDQzOSwgMHgwNDNBLCAweDA0M0IsIDB4MDQzQywgMHgwNDNELCAweDA0M0UsIDB4MDQzRiwNCisgICAgMHgwNDQwLCAweDA0NDEsIDB4MDQ0MiwgMHgwNDQzLCAweDA0NDQsIDB4MDQ0NSwgMHgwNDQ2LCAweDA0NDcsDQorICAgIDB4MDQ0OCwgMHgwNDQ5LCAweDA0NEEsIDB4MDQ0QiwgMHgwNDRDLCAweDA0NEQsIDB4MDQ0RSwgMHgwNDRGLA0KK307DQorc3RhdGljIGNvbnN0IEZYX1dDSEFSIGdfRlhfQ1AxMjUzVW5pY29kZXNbMTI4XSA9IHsNCisgICAgMHgyMEFDLCAweDAwMDAsIDB4MjAxQSwgMHgwMTkyLCAweDIwMUUsIDB4MjAyNiwgMHgyMDIwLCAweDIwMjEsDQorICAgIDB4MDAwMCwgMHgyMDMwLCAweDAwMDAsIDB4MjAzOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MjAxOCwgMHgyMDE5LCAweDIwMUMsIDB4MjAxRCwgMHgyMDIyLCAweDIwMTMsIDB4MjAxNCwNCisgICAgMHgwMDAwLCAweDIxMjIsIDB4MDAwMCwgMHgyMDNBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDBBMCwgMHgwMzg1LCAweDAzODYsIDB4MDBBMywgMHgwMEE0LCAweDAwQTUsIDB4MDBBNiwgMHgwMEE3LA0KKyAgICAweDAwQTgsIDB4MDBBOSwgMHgwMDAwLCAweDAwQUIsIDB4MDBBQywgMHgwMEFELCAweDAwQUUsIDB4MjAxNSwNCisgICAgMHgwMEIwLCAweDAwQjEsIDB4MDBCMiwgMHgwMEIzLCAweDAzODQsIDB4MDBCNSwgMHgwMEI2LCAweDAwQjcsDQorICAgIDB4MDM4OCwgMHgwMzg5LCAweDAzOEEsIDB4MDBCQiwgMHgwMzhDLCAweDAwQkQsIDB4MDM4RSwgMHgwMzhGLA0KKyAgICAweDAzOTAsIDB4MDM5MSwgMHgwMzkyLCAweDAzOTMsIDB4MDM5NCwgMHgwMzk1LCAweDAzOTYsIDB4MDM5NywNCisgICAgMHgwMzk4LCAweDAzOTksIDB4MDM5QSwgMHgwMzlCLCAweDAzOUMsIDB4MDM5RCwgMHgwMzlFLCAweDAzOUYsDQorICAgIDB4MDNBMCwgMHgwM0ExLCAweDAwMDAsIDB4MDNBMywgMHgwM0E0LCAweDAzQTUsIDB4MDNBNiwgMHgwM0E3LA0KKyAgICAweDAzQTgsIDB4MDNBOSwgMHgwM0FBLCAweDAzQUIsIDB4MDNBQywgMHgwM0FELCAweDAzQUUsIDB4MDNBRiwNCisgICAgMHgwM0IwLCAweDAzQjEsIDB4MDNCMiwgMHgwM0IzLCAweDAzQjQsIDB4MDNCNSwgMHgwM0I2LCAweDAzQjcsDQorICAgIDB4MDNCOCwgMHgwM0I5LCAweDAzQkEsIDB4MDNCQiwgMHgwM0JDLCAweDAzQkQsIDB4MDNCRSwgMHgwM0JGLA0KKyAgICAweDAzQzAsIDB4MDNDMSwgMHgwM0MyLCAweDAzQzMsIDB4MDNDNCwgMHgwM0M1LCAweDAzQzYsIDB4MDNDNywNCisgICAgMHgwM0M4LCAweDAzQzksIDB4MDNDQSwgMHgwM0NCLCAweDAzQ0MsIDB4MDNDRCwgMHgwM0NFLCAweDAwMDAsDQorfTsNCitzdGF0aWMgY29uc3QgRlhfV0NIQVIgZ19GWF9DUDEyNTRVbmljb2Rlc1sxMjhdID0gew0KKyAgICAweDIwQUMsIDB4MDAwMCwgMHgyMDFBLCAweDAxOTIsIDB4MjAxRSwgMHgyMDI2LCAweDIwMjAsIDB4MjAyMSwNCisgICAgMHgwMkM2LCAweDIwMzAsIDB4MDE2MCwgMHgyMDM5LCAweDAxNTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgyMDE4LCAweDIwMTksIDB4MjAxQywgMHgyMDFELCAweDIwMjIsIDB4MjAxMywgMHgyMDE0LA0KKyAgICAweDAyREMsIDB4MjEyMiwgMHgwMTYxLCAweDIwM0EsIDB4MDE1MywgMHgwMDAwLCAweDAwMDAsIDB4MDE3OCwNCisgICAgMHgwMEEwLCAweDAwQTEsIDB4MDBBMiwgMHgwMEEzLCAweDAwQTQsIDB4MDBBNSwgMHgwMEE2LCAweDAwQTcsDQorICAgIDB4MDBBOCwgMHgwMEE5LCAweDAwQUEsIDB4MDBBQiwgMHgwMEFDLCAweDAwQUQsIDB4MDBBRSwgMHgwMEFGLA0KKyAgICAweDAwQjAsIDB4MDBCMSwgMHgwMEIyLCAweDAwQjMsIDB4MDBCNCwgMHgwMEI1LCAweDAwQjYsIDB4MDBCNywNCisgICAgMHgwMEI4LCAweDAwQjksIDB4MDBCQSwgMHgwMEJCLCAweDAwQkMsIDB4MDBCRCwgMHgwMEJFLCAweDAwQkYsDQorICAgIDB4MDBDMCwgMHgwMEMxLCAweDAwQzIsIDB4MDBDMywgMHgwMEM0LCAweDAwQzUsIDB4MDBDNiwgMHgwMEM3LA0KKyAgICAweDAwQzgsIDB4MDBDOSwgMHgwMENBLCAweDAwQ0IsIDB4MDBDQywgMHgwMENELCAweDAwQ0UsIDB4MDBDRiwNCisgICAgMHgwMTFFLCAweDAwRDEsIDB4MDBEMiwgMHgwMEQzLCAweDAwRDQsIDB4MDBENSwgMHgwMEQ2LCAweDAwRDcsDQorICAgIDB4MDBEOCwgMHgwMEQ5LCAweDAwREEsIDB4MDBEQiwgMHgwMERDLCAweDAxMzAsIDB4MDE1RSwgMHgwMERGLA0KKyAgICAweDAwRTAsIDB4MDBFMSwgMHgwMEUyLCAweDAwRTMsIDB4MDBFNCwgMHgwMEU1LCAweDAwRTYsIDB4MDBFNywNCisgICAgMHgwMEU4LCAweDAwRTksIDB4MDBFQSwgMHgwMEVCLCAweDAwRUMsIDB4MDBFRCwgMHgwMEVFLCAweDAwRUYsDQorICAgIDB4MDExRiwgMHgwMEYxLCAweDAwRjIsIDB4MDBGMywgMHgwMEY0LCAweDAwRjUsIDB4MDBGNiwgMHgwMEY3LA0KKyAgICAweDAwRjgsIDB4MDBGOSwgMHgwMEZBLCAweDAwRkIsIDB4MDBGQywgMHgwMTMxLCAweDAxNUYsIDB4MDBGRiwNCit9Ow0KK3N0YXRpYyBjb25zdCBGWF9XQ0hBUiBnX0ZYX0NQMTI1NVVuaWNvZGVzWzEyOF0gPSB7DQorICAgIDB4MjBBQywgMHgwMDAwLCAweDIwMUEsIDB4MDE5MiwgMHgyMDFFLCAweDIwMjYsIDB4MjAyMCwgMHgyMDIxLA0KKyAgICAweDAyQzYsIDB4MjAzMCwgMHgwMDAwLCAweDIwMzksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDIwMTgsIDB4MjAxOSwgMHgyMDFDLCAweDIwMUQsIDB4MjAyMiwgMHgyMDEzLCAweDIwMTQsDQorICAgIDB4MDJEQywgMHgyMTIyLCAweDAwMDAsIDB4MjAzQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwQTAsIDB4MDBBMSwgMHgwMEEyLCAweDAwQTMsIDB4MjBBQSwgMHgwMEE1LCAweDAwQTYsIDB4MDBBNywNCisgICAgMHgwMEE4LCAweDAwQTksIDB4MDBENywgMHgwMEFCLCAweDAwQUMsIDB4MDBBRCwgMHgwMEFFLCAweDAwQUYsDQorICAgIDB4MDBCMCwgMHgwMEIxLCAweDAwQjIsIDB4MDBCMywgMHgwMEI0LCAweDAwQjUsIDB4MDBCNiwgMHgwMEI3LA0KKyAgICAweDAwQjgsIDB4MDBCOSwgMHgwMEY3LCAweDAwQkIsIDB4MDBCQywgMHgwMEJELCAweDAwQkUsIDB4MDBCRiwNCisgICAgMHgwNUIwLCAweDA1QjEsIDB4MDVCMiwgMHgwNUIzLCAweDA1QjQsIDB4MDVCNSwgMHgwNUI2LCAweDA1QjcsDQorICAgIDB4MDVCOCwgMHgwNUI5LCAweDAwMDAsIDB4MDVCQiwgMHgwNUJDLCAweDA1QkQsIDB4MDVCRSwgMHgwNUJGLA0KKyAgICAweDA1QzAsIDB4MDVDMSwgMHgwNUMyLCAweDA1QzMsIDB4MDVGMCwgMHgwNUYxLCAweDA1RjIsIDB4MDVGMywNCisgICAgMHgwNUY0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDVEMCwgMHgwNUQxLCAweDA1RDIsIDB4MDVEMywgMHgwNUQ0LCAweDA1RDUsIDB4MDVENiwgMHgwNUQ3LA0KKyAgICAweDA1RDgsIDB4MDVEOSwgMHgwNURBLCAweDA1REIsIDB4MDVEQywgMHgwNURELCAweDA1REUsIDB4MDVERiwNCisgICAgMHgwNUUwLCAweDA1RTEsIDB4MDVFMiwgMHgwNUUzLCAweDA1RTQsIDB4MDVFNSwgMHgwNUU2LCAweDA1RTcsDQorICAgIDB4MDVFOCwgMHgwNUU5LCAweDA1RUEsIDB4MDAwMCwgMHgwMDAwLCAweDIwMEUsIDB4MjAwRiwgMHgwMDAwLA0KK307DQorc3RhdGljIGNvbnN0IEZYX1dDSEFSIGdfRlhfQ1AxMjU2VW5pY29kZXNbMTI4XSA9IHsNCisgICAgMHgyMEFDLCAweDA2N0UsIDB4MjAxQSwgMHgwMTkyLCAweDIwMUUsIDB4MjAyNiwgMHgyMDIwLCAweDIwMjEsDQorICAgIDB4MDJDNiwgMHgyMDMwLCAweDA2NzksIDB4MjAzOSwgMHgwMTUyLCAweDA2ODYsIDB4MDY5OCwgMHgwNjg4LA0KKyAgICAweDA2QUYsIDB4MjAxOCwgMHgyMDE5LCAweDIwMUMsIDB4MjAxRCwgMHgyMDIyLCAweDIwMTMsIDB4MjAxNCwNCisgICAgMHgwNkE5LCAweDIxMjIsIDB4MDY5MSwgMHgyMDNBLCAweDAxNTMsIDB4MjAwQywgMHgyMDBELCAweDA2QkEsDQorICAgIDB4MDBBMCwgMHgwNjBDLCAweDAwQTIsIDB4MDBBMywgMHgwMEE0LCAweDAwQTUsIDB4MDBBNiwgMHgwMEE3LA0KKyAgICAweDAwQTgsIDB4MDBBOSwgMHgwNkJFLCAweDAwQUIsIDB4MDBBQywgMHgwMEFELCAweDAwQUUsIDB4MDBBRiwNCisgICAgMHgwMEIwLCAweDAwQjEsIDB4MDBCMiwgMHgwMEIzLCAweDAwQjQsIDB4MDBCNSwgMHgwMEI2LCAweDAwQjcsDQorICAgIDB4MDBCOCwgMHgwMEI5LCAweDA2MUIsIDB4MDBCQiwgMHgwMEJDLCAweDAwQkQsIDB4MDBCRSwgMHgwNjFGLA0KKyAgICAweDA2QzEsIDB4MDYyMSwgMHgwNjIyLCAweDA2MjMsIDB4MDYyNCwgMHgwNjI1LCAweDA2MjYsIDB4MDYyNywNCisgICAgMHgwNjI4LCAweDA2MjksIDB4MDYyQSwgMHgwNjJCLCAweDA2MkMsIDB4MDYyRCwgMHgwNjJFLCAweDA2MkYsDQorICAgIDB4MDYzMCwgMHgwNjMxLCAweDA2MzIsIDB4MDYzMywgMHgwNjM0LCAweDA2MzUsIDB4MDYzNiwgMHgwMEQ3LA0KKyAgICAweDA2MzcsIDB4MDYzOCwgMHgwNjM5LCAweDA2M0EsIDB4MDY0MCwgMHgwNjQxLCAweDA2NDIsIDB4MDY0MywNCisgICAgMHgwMEUwLCAweDA2NDQsIDB4MDBFMiwgMHgwNjQ1LCAweDA2NDYsIDB4MDY0NywgMHgwNjQ4LCAweDAwRTcsDQorICAgIDB4MDBFOCwgMHgwMEU5LCAweDAwRUEsIDB4MDBFQiwgMHgwNjQ5LCAweDA2NEEsIDB4MDBFRSwgMHgwMEVGLA0KKyAgICAweDA2NEIsIDB4MDY0QywgMHgwNjRELCAweDA2NEUsIDB4MDBGNCwgMHgwNjRGLCAweDA2NTAsIDB4MDBGNywNCisgICAgMHgwNjUxLCAweDAwRjksIDB4MDY1MiwgMHgwMEZCLCAweDAwRkMsIDB4MjAwRSwgMHgyMDBGLCAweDA2RDIsDQorfTsNCitzdGF0aWMgY29uc3QgRlhfV0NIQVIgZ19GWF9DUDEyNTdVbmljb2Rlc1sxMjhdID0gew0KKyAgICAweDIwQUMsIDB4MDAwMCwgMHgyMDFBLCAweDAwMDAsIDB4MjAxRSwgMHgyMDI2LCAweDIwMjAsIDB4MjAyMSwNCisgICAgMHgwMDAwLCAweDIwMzAsIDB4MDAwMCwgMHgyMDM5LCAweDAwMDAsIDB4MDBBOCwgMHgwMkM3LCAweDAwQjgsDQorICAgIDB4MDAwMCwgMHgyMDE4LCAweDIwMTksIDB4MjAxQywgMHgyMDFELCAweDIwMjIsIDB4MjAxMywgMHgyMDE0LA0KKyAgICAweDAwMDAsIDB4MjEyMiwgMHgwMDAwLCAweDIwM0EsIDB4MDAwMCwgMHgwMEFGLCAweDAyREIsIDB4MDAwMCwNCisgICAgMHgwMEEwLCAweDAwMDAsIDB4MDBBMiwgMHgwMEEzLCAweDAwQTQsIDB4MDAwMCwgMHgwMEE2LCAweDAwQTcsDQorICAgIDB4MDBEOCwgMHgwMEE5LCAweDAxNTYsIDB4MDBBQiwgMHgwMEFDLCAweDAwQUQsIDB4MDBBRSwgMHgwMEM2LA0KKyAgICAweDAwQjAsIDB4MDBCMSwgMHgwMEIyLCAweDAwQjMsIDB4MDBCNCwgMHgwMEI1LCAweDAwQjYsIDB4MDBCNywNCisgICAgMHgwMEY4LCAweDAwQjksIDB4MDE1NywgMHgwMEJCLCAweDAwQkMsIDB4MDBCRCwgMHgwMEJFLCAweDAwRTYsDQorICAgIDB4MDEwNCwgMHgwMTJFLCAweDAxMDAsIDB4MDEwNiwgMHgwMEM0LCAweDAwQzUsIDB4MDExOCwgMHgwMTEyLA0KKyAgICAweDAxMEMsIDB4MDBDOSwgMHgwMTc5LCAweDAxMTYsIDB4MDEyMiwgMHgwMTM2LCAweDAxMkEsIDB4MDEzQiwNCisgICAgMHgwMTYwLCAweDAxNDMsIDB4MDE0NSwgMHgwMEQzLCAweDAxNEMsIDB4MDBENSwgMHgwMEQ2LCAweDAwRDcsDQorICAgIDB4MDE3MiwgMHgwMTQxLCAweDAxNUEsIDB4MDE2QSwgMHgwMERDLCAweDAxN0IsIDB4MDE3RCwgMHgwMERGLA0KKyAgICAweDAxMDUsIDB4MDEyRiwgMHgwMTAxLCAweDAxMDcsIDB4MDBFNCwgMHgwMEU1LCAweDAxMTksIDB4MDExMywNCisgICAgMHgwMTBELCAweDAwRTksIDB4MDE3QSwgMHgwMTE3LCAweDAxMjMsIDB4MDEzNywgMHgwMTJCLCAweDAxM0MsDQorICAgIDB4MDE2MSwgMHgwMTQ0LCAweDAxNDYsIDB4MDBGMywgMHgwMTRELCAweDAwRjUsIDB4MDBGNiwgMHgwMEY3LA0KKyAgICAweDAxNzMsIDB4MDE0MiwgMHgwMTVCLCAweDAxNkIsIDB4MDBGQywgMHgwMTdDLCAweDAxN0UsIDB4MDJEOSwNCit9Ow0KK3R5cGVkZWYgc3RydWN0IHsNCisgICAgRlhfQllURQkJbV9DaGFyc2V0Ow0KKyAgICBjb25zdCBGWF9XQ0hBUioJbV9wVW5pY29kZXM7DQorfSBGWF9DaGFyc2V0VW5pY29kZXM7DQorY29uc3QgRlhfQ2hhcnNldFVuaWNvZGVzIGdfRlhfQ2hhcnNldFVuaWNvZGVzW10gPSB7DQorICAgIHsgRlhGT05UX1RIQUlfQ0hBUlNFVCwgZ19GWF9DUDg3NFVuaWNvZGVzIH0sDQorICAgIHsgRlhGT05UX0VBU1RFVVJPUEVfQ0hBUlNFVCwgZ19GWF9DUDEyNTBVbmljb2RlcyB9LA0KKyAgICB7IEZYRk9OVF9SVVNTSUFOX0NIQVJTRVQsIGdfRlhfQ1AxMjUxVW5pY29kZXMgfSwNCisgICAgeyBGWEZPTlRfR1JFRUtfQ0hBUlNFVCwgZ19GWF9DUDEyNTNVbmljb2RlcyB9LA0KKyAgICB7IEZYRk9OVF9UVVJLSVNIX0NIQVJTRVQsIGdfRlhfQ1AxMjU0VW5pY29kZXMgfSwNCisgICAgeyBGWEZPTlRfSEVCUkVXX0NIQVJTRVQsIGdfRlhfQ1AxMjU1VW5pY29kZXMgfSwNCisgICAgeyBGWEZPTlRfQVJBQklDX0NIQVJTRVQsIGdfRlhfQ1AxMjU2VW5pY29kZXMgfSwNCisgICAgeyBGWEZPTlRfQkFMVElDX0NIQVJTRVQsIGdfRlhfQ1AxMjU3VW5pY29kZXMgfSwNCit9Ow0KKyNpZiAoX0ZYX09TXyA9PSBfRlhfV0lOMzJfREVTS1RPUF8gfHwgX0ZYX09TXyA9PSBfRlhfV0lOMzJfTU9CSUxFXyB8fCBfRlhfT1NfID09IF9GWF9XSU42NF8pDQorc3RhdGljIHZvaWQgX0luc2VydFdpZHRoQXJyYXkoSERDIGhEQywgaW50IHN0YXJ0LCBpbnQgZW5kLCBDUERGX0FycmF5KiBwV2lkdGhBcnJheSkNCit7DQorICAgIGludCBzaXplID0gZW5kIC0gc3RhcnQgKyAxOw0KKyAgICBpbnQqIHdpZHRocyA9IEZYX0FsbG9jKGludCwgc2l6ZSk7DQorICAgIEdldENoYXJXaWR0aChoREMsIHN0YXJ0LCBlbmQsIHdpZHRocyk7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAxOyBpIDwgc2l6ZTsgaSArKykNCisgICAgICAgIGlmICh3aWR0aHNbaV0gIT0gKndpZHRocykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICBpZiAoaSA9PSBzaXplKSB7DQorICAgICAgICBpbnQgZmlyc3QgPSBwV2lkdGhBcnJheS0+R2V0SW50ZWdlcihwV2lkdGhBcnJheS0+R2V0Q291bnQoKSAtIDEpOw0KKyAgICAgICAgcFdpZHRoQXJyYXktPkFkZEludGVnZXIoZmlyc3QgKyBzaXplIC0gMSk7DQorICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcigqd2lkdGhzKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIENQREZfQXJyYXkqIHBXaWR0aEFycmF5MSA9IEZYX05FVyBDUERGX0FycmF5Ow0KKyAgICAgICAgcFdpZHRoQXJyYXktPkFkZChwV2lkdGhBcnJheTEpOw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkgKyspIHsNCisgICAgICAgICAgICBwV2lkdGhBcnJheTEtPkFkZEludGVnZXIod2lkdGhzW2ldKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9GcmVlKHdpZHRocyk7DQorfQ0KK0NQREZfRm9udCogQ1BERl9Eb2N1bWVudDo6QWRkV2luZG93c0ZvbnQoTE9HRk9OVFcqIHBMb2dGb250LCBGWF9CT09MIGJWZXJ0LCBGWF9CT09MIGJUcmFuc2xhdGVOYW1lKQ0KK3sNCisgICAgTE9HRk9OVEEgbGZhOw0KKyAgICBGWFNZU19tZW1jcHkzMigmbGZhLCBwTG9nRm9udCwgKGNoYXIqKWxmYS5sZkZhY2VOYW1lIC0gKGNoYXIqKSZsZmEpOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBmYWNlID0gQ0ZYX0J5dGVTdHJpbmc6OkZyb21Vbmljb2RlKHBMb2dGb250LT5sZkZhY2VOYW1lKTsNCisgICAgaWYgKGZhY2UuR2V0TGVuZ3RoKCkgPj0gTEZfRkFDRVNJWkUpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYU1lTX3N0cmNweShsZmEubGZGYWNlTmFtZSwgKEZYX0xQQ1NUUilmYWNlKTsNCisgICAgcmV0dXJuIEFkZFdpbmRvd3NGb250KCZsZmEsIGJWZXJ0LCBiVHJhbnNsYXRlTmFtZSk7DQorfQ0KK2V4dGVybiBDRlhfQnl0ZVN0cmluZyBfRlBERl9HZXROYW1lRnJvbVRUKEZYX0xQQ0JZVEUgbmFtZV90YWJsZSwgRlhfRFdPUkQgbmFtZSk7DQorQ0ZYX0J5dGVTdHJpbmcgX0ZQREZfR2V0UFNOYW1lRnJvbVRUKEhEQyBoREMpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyByZXN1bHQ7DQorICAgIERXT1JEIHNpemUgPSA6OkdldEZvbnREYXRhKGhEQywgJ2VtYW4nLCAwLCBOVUxMLCAwKTsNCisgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7DQorICAgICAgICBMUEJZVEUgYnVmZmVyID0gRlhfQWxsb2MoQllURSwgc2l6ZSk7DQorICAgICAgICA6OkdldEZvbnREYXRhKGhEQywgJ2VtYW4nLCAwLCBidWZmZXIsIHNpemUpOw0KKyAgICAgICAgcmVzdWx0ID0gX0ZQREZfR2V0TmFtZUZyb21UVChidWZmZXIsIDYpOw0KKyAgICAgICAgRlhfRnJlZShidWZmZXIpOw0KKyAgICB9DQorICAgIHJldHVybiByZXN1bHQ7DQorfQ0KK0NQREZfRm9udCogQ1BERl9Eb2N1bWVudDo6QWRkV2luZG93c0ZvbnQoTE9HRk9OVEEqIHBMb2dGb250LCBGWF9CT09MIGJWZXJ0LCBGWF9CT09MIGJUcmFuc2xhdGVOYW1lKQ0KK3sNCisgICAgcExvZ0ZvbnQtPmxmSGVpZ2h0ID0gLTEwMDA7DQorICAgIHBMb2dGb250LT5sZldpZHRoID0gMDsNCisgICAgSEdESU9CSiBoRm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdEEocExvZ0ZvbnQpOw0KKyAgICBIREMgaERDID0gQ3JlYXRlQ29tcGF0aWJsZURDKE5VTEwpOw0KKyAgICBoRm9udCA9IFNlbGVjdE9iamVjdChoREMsIGhGb250KTsNCisgICAgaW50IHRtX3NpemUgPSBHZXRPdXRsaW5lVGV4dE1ldHJpY3MoaERDLCAwLCBOVUxMKTsNCisgICAgaWYgKHRtX3NpemUgPT0gMCkgew0KKyAgICAgICAgaEZvbnQgPSBTZWxlY3RPYmplY3QoaERDLCBoRm9udCk7DQorICAgICAgICBEZWxldGVPYmplY3QoaEZvbnQpOw0KKyAgICAgICAgRGVsZXRlREMoaERDKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIExQQllURSB0bV9idWYgPSBGWF9BbGxvYyhCWVRFLCB0bV9zaXplKTsNCisgICAgT1VUTElORVRFWFRNRVRSSUMqIHB0bSA9IChPVVRMSU5FVEVYVE1FVFJJQyopdG1fYnVmOw0KKyAgICBHZXRPdXRsaW5lVGV4dE1ldHJpY3MoaERDLCB0bV9zaXplLCBwdG0pOw0KKyAgICBpbnQgZmxhZ3MgPSAwLCBpdGFsaWNhbmdsZSwgYXNjZW5kLCBkZXNjZW5kLCBjYXBoZWlnaHQsIGJib3hbNF07DQorICAgIGlmIChwTG9nRm9udC0+bGZJdGFsaWMpIHsNCisgICAgICAgIGZsYWdzIHw9IFBERkZPTlRfSVRBTElDOw0KKyAgICB9DQorICAgIGlmICgocExvZ0ZvbnQtPmxmUGl0Y2hBbmRGYW1pbHkgJiAzKSA9PSBGSVhFRF9QSVRDSCkgew0KKyAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9GSVhFRFBJVENIOw0KKyAgICB9DQorICAgIGlmICgocExvZ0ZvbnQtPmxmUGl0Y2hBbmRGYW1pbHkgJiAweGY4KSA9PSBGRl9ST01BTikgew0KKyAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9TRVJJRjsNCisgICAgfQ0KKyAgICBpZiAoKHBMb2dGb250LT5sZlBpdGNoQW5kRmFtaWx5ICYgMHhmOCkgPT0gRkZfU0NSSVBUKSB7DQorICAgICAgICBmbGFncyB8PSBQREZGT05UX1NDUklQVDsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJDSksgPSBwTG9nRm9udC0+bGZDaGFyU2V0ID09IENISU5FU0VCSUc1X0NIQVJTRVQgfHwgcExvZ0ZvbnQtPmxmQ2hhclNldCA9PSBHQjIzMTJfQ0hBUlNFVCB8fA0KKyAgICAgICAgICAgICAgICAgICBwTG9nRm9udC0+bGZDaGFyU2V0ID09IEhBTkdFVUxfQ0hBUlNFVCB8fCBwTG9nRm9udC0+bGZDaGFyU2V0ID09IFNISUZUSklTX0NIQVJTRVQ7DQorICAgIENGWF9CeXRlU3RyaW5nIGJhc2Vmb250Ow0KKyAgICBpZiAoYlRyYW5zbGF0ZU5hbWUgJiYgYkNKSykgew0KKyAgICAgICAgYmFzZWZvbnQgPSBfRlBERl9HZXRQU05hbWVGcm9tVFQoaERDKTsNCisgICAgfQ0KKyAgICBpZiAoYmFzZWZvbnQuSXNFbXB0eSgpKSB7DQorICAgICAgICBiYXNlZm9udCA9IHBMb2dGb250LT5sZkZhY2VOYW1lOw0KKyAgICB9DQorICAgIGl0YWxpY2FuZ2xlID0gcHRtLT5vdG1JdGFsaWNBbmdsZSAvIDEwOw0KKyAgICBhc2NlbmQgPSBwdG0tPm90bXJjRm9udEJveC50b3A7DQorICAgIGRlc2NlbmQgPSBwdG0tPm90bXJjRm9udEJveC5ib3R0b207DQorICAgIGNhcGhlaWdodCA9IHB0bS0+b3Rtc0NhcEVtSGVpZ2h0Ow0KKyAgICBiYm94WzBdID0gcHRtLT5vdG1yY0ZvbnRCb3gubGVmdDsNCisgICAgYmJveFsxXSA9IHB0bS0+b3RtcmNGb250Qm94LmJvdHRvbTsNCisgICAgYmJveFsyXSA9IHB0bS0+b3RtcmNGb250Qm94LnJpZ2h0Ow0KKyAgICBiYm94WzNdID0gcHRtLT5vdG1yY0ZvbnRCb3gudG9wOw0KKyAgICBGWF9GcmVlKHRtX2J1Zik7DQorICAgIGJhc2Vmb250LlJlcGxhY2UoIiAiLCAiIik7DQorICAgIENQREZfRGljdGlvbmFyeSogcEJhc2VEaWN0ID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgcEJhc2VEaWN0LT5TZXRBdE5hbWUoIlR5cGUiLCAiRm9udCIpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250RGljdCA9IHBCYXNlRGljdDsNCisgICAgaWYgKCFiQ0pLKSB7DQorICAgICAgICBpZiAocExvZ0ZvbnQtPmxmQ2hhclNldCA9PSBBTlNJX0NIQVJTRVQgfHwgcExvZ0ZvbnQtPmxmQ2hhclNldCA9PSBERUZBVUxUX0NIQVJTRVQgfHwNCisgICAgICAgICAgICAgICAgcExvZ0ZvbnQtPmxmQ2hhclNldCA9PSBTWU1CT0xfQ0hBUlNFVCkgew0KKyAgICAgICAgICAgIGlmIChwTG9nRm9udC0+bGZDaGFyU2V0ID09IFNZTUJPTF9DSEFSU0VUKSB7DQorICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBERkZPTlRfU1lNQk9MSUM7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9OT05TWU1CT0xJQzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcEJhc2VEaWN0LT5TZXRBdE5hbWUoRlhfQlNUUkMoIkVuY29kaW5nIiksICJXaW5BbnNpRW5jb2RpbmciKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9OT05TWU1CT0xJQzsNCisgICAgICAgICAgICBpbnQgaTsNCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIGdfRlhfQ2hhcnNldFVuaWNvZGVzIC8gc2l6ZW9mKEZYX0NoYXJzZXRVbmljb2Rlcyk7IGkgKyspDQorICAgICAgICAgICAgICAgIGlmIChnX0ZYX0NoYXJzZXRVbmljb2Rlc1tpXS5tX0NoYXJzZXQgPT0gcExvZ0ZvbnQtPmxmQ2hhclNldCkgew0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaSA8IHNpemVvZiBnX0ZYX0NoYXJzZXRVbmljb2RlcyAvIHNpemVvZihGWF9DaGFyc2V0VW5pY29kZXMpKSB7DQorICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcEVuY29kaW5nID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgICAgICAgICAgICAgcEVuY29kaW5nLT5TZXRBdE5hbWUoRlhfQlNUUkMoIkJhc2VFbmNvZGluZyIpLCAiV2luQW5zaUVuY29kaW5nIik7DQorICAgICAgICAgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IEZYX05FVyBDUERGX0FycmF5Ow0KKyAgICAgICAgICAgICAgICBwQXJyYXktPkFkZEludGVnZXIoMTI4KTsNCisgICAgICAgICAgICAgICAgY29uc3QgRlhfV0NIQVIqIHBVbmljb2RlcyA9IGdfRlhfQ2hhcnNldFVuaWNvZGVzW2ldLm1fcFVuaWNvZGVzOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDEyODsgaiArKykgew0KKyAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgbmFtZSA9IFBERl9BZG9iZU5hbWVGcm9tVW5pY29kZShwVW5pY29kZXNbal0pOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcEFycmF5LT5BZGROYW1lKEZYX0JTVFJDKCIubm90ZGVmIikpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwQXJyYXktPkFkZE5hbWUobmFtZSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcEVuY29kaW5nLT5TZXRBdChGWF9CU1RSQygiRGlmZmVyZW5jZXMiKSwgcEFycmF5KTsNCisgICAgICAgICAgICAgICAgQWRkSW5kaXJlY3RPYmplY3QocEVuY29kaW5nKTsNCisgICAgICAgICAgICAgICAgcEJhc2VEaWN0LT5TZXRBdFJlZmVyZW5jZShGWF9CU1RSQygiRW5jb2RpbmciKSwgdGhpcywgcEVuY29kaW5nKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAocExvZ0ZvbnQtPmxmV2VpZ2h0ID4gRldfTUVESVVNICYmIHBMb2dGb250LT5sZkl0YWxpYykgew0KKyAgICAgICAgICAgIGJhc2Vmb250ICs9ICIsQm9sZEl0YWxpYyI7DQorICAgICAgICB9IGVsc2UgaWYgKHBMb2dGb250LT5sZldlaWdodCA+IEZXX01FRElVTSkgew0KKyAgICAgICAgICAgIGJhc2Vmb250ICs9ICIsQm9sZCI7DQorICAgICAgICB9IGVsc2UgaWYgKHBMb2dGb250LT5sZkl0YWxpYykgew0KKyAgICAgICAgICAgIGJhc2Vmb250ICs9ICIsSXRhbGljIjsNCisgICAgICAgIH0NCisgICAgICAgIHBCYXNlRGljdC0+U2V0QXROYW1lKCJTdWJ0eXBlIiwgIlRydWVUeXBlIik7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TmFtZSgiQmFzZUZvbnQiLCBiYXNlZm9udCk7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TnVtYmVyKCJGaXJzdENoYXIiLCAzMik7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TnVtYmVyKCJMYXN0Q2hhciIsIDI1NSk7DQorICAgICAgICBpbnQgY2hhcl93aWR0aHNbMjI0XTsNCisgICAgICAgIEdldENoYXJXaWR0aChoREMsIDMyLCAyNTUsIGNoYXJfd2lkdGhzKTsNCisgICAgICAgIENQREZfQXJyYXkqIHBXaWR0aHMgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjI0OyBpICsrKSB7DQorICAgICAgICAgICAgcFdpZHRocy0+QWRkSW50ZWdlcihjaGFyX3dpZHRoc1tpXSk7DQorICAgICAgICB9DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0KCJXaWR0aHMiLCBwV2lkdGhzKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZsYWdzIHw9IFBERkZPTlRfTk9OU1lNQk9MSUM7DQorICAgICAgICBwRm9udERpY3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgY21hcDsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIG9yZGVyaW5nOw0KKyAgICAgICAgaW50IHN1cHBsZW1lbnQ7DQorICAgICAgICBDUERGX0FycmF5KiBwV2lkdGhBcnJheSA9IEZYX05FVyBDUERGX0FycmF5Ow0KKyAgICAgICAgc3dpdGNoIChwTG9nRm9udC0+bGZDaGFyU2V0KSB7DQorICAgICAgICAgICAgY2FzZSBDSElORVNFQklHNV9DSEFSU0VUOg0KKyAgICAgICAgICAgICAgICBjbWFwID0gYlZlcnQgPyAiRVRlbm1zLUI1LVYiIDogIkVUZW5tcy1CNS1IIjsNCisgICAgICAgICAgICAgICAgb3JkZXJpbmcgPSAiQ05TMSI7DQorICAgICAgICAgICAgICAgIHN1cHBsZW1lbnQgPSA0Ow0KKyAgICAgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcigxKTsNCisgICAgICAgICAgICAgICAgX0luc2VydFdpZHRoQXJyYXkoaERDLCAweDIwLCAweDdlLCBwV2lkdGhBcnJheSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgR0IyMzEyX0NIQVJTRVQ6DQorICAgICAgICAgICAgICAgIGNtYXAgPSBiVmVydCA/ICJHQkstRVVDLVYiIDogIkdCSy1FVUMtSCI7DQorICAgICAgICAgICAgICAgIG9yZGVyaW5nID0gIkdCMSIsIHN1cHBsZW1lbnQgPSAyOw0KKyAgICAgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcig3NzE2KTsNCisgICAgICAgICAgICAgICAgX0luc2VydFdpZHRoQXJyYXkoaERDLCAweDIwLCAweDIwLCBwV2lkdGhBcnJheSk7DQorICAgICAgICAgICAgICAgIHBXaWR0aEFycmF5LT5BZGRJbnRlZ2VyKDgxNCk7DQorICAgICAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5KGhEQywgMHgyMSwgMHg3ZSwgcFdpZHRoQXJyYXkpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEhBTkdFVUxfQ0hBUlNFVDoNCisgICAgICAgICAgICAgICAgY21hcCA9IGJWZXJ0ID8gIktTQ21zLVVIQy1WIiA6ICJLU0Ntcy1VSEMtSCI7DQorICAgICAgICAgICAgICAgIG9yZGVyaW5nID0gIktvcmVhMSI7DQorICAgICAgICAgICAgICAgIHN1cHBsZW1lbnQgPSAyOw0KKyAgICAgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcigxKTsNCisgICAgICAgICAgICAgICAgX0luc2VydFdpZHRoQXJyYXkoaERDLCAweDIwLCAweDdlLCBwV2lkdGhBcnJheSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgU0hJRlRKSVNfQ0hBUlNFVDoNCisgICAgICAgICAgICAgICAgY21hcCA9IGJWZXJ0ID8gIjkwbXMtUktTSi1WIiA6ICI5MG1zLVJLU0otSCI7DQorICAgICAgICAgICAgICAgIG9yZGVyaW5nID0gIkphcGFuMSI7DQorICAgICAgICAgICAgICAgIHN1cHBsZW1lbnQgPSA1Ow0KKyAgICAgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcigyMzEpOw0KKyAgICAgICAgICAgICAgICBfSW5zZXJ0V2lkdGhBcnJheShoREMsIDB4MjAsIDB4N2QsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICAgICAgcFdpZHRoQXJyYXktPkFkZEludGVnZXIoMzI2KTsNCisgICAgICAgICAgICAgICAgX0luc2VydFdpZHRoQXJyYXkoaERDLCAweGEwLCAweGEwLCBwV2lkdGhBcnJheSk7DQorICAgICAgICAgICAgICAgIHBXaWR0aEFycmF5LT5BZGRJbnRlZ2VyKDMyNyk7DQorICAgICAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5KGhEQywgMHhhMSwgMHhkZiwgcFdpZHRoQXJyYXkpOw0KKyAgICAgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcig2MzEpOw0KKyAgICAgICAgICAgICAgICBfSW5zZXJ0V2lkdGhBcnJheShoREMsIDB4N2UsIDB4N2UsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TmFtZSgiU3VidHlwZSIsICJUeXBlMCIpOw0KKyAgICAgICAgcEJhc2VEaWN0LT5TZXRBdE5hbWUoIkJhc2VGb250IiwgYmFzZWZvbnQpOw0KKyAgICAgICAgcEJhc2VEaWN0LT5TZXRBdE5hbWUoIkVuY29kaW5nIiwgY21hcCk7DQorICAgICAgICBwRm9udERpY3QtPlNldEF0KCJXIiwgcFdpZHRoQXJyYXkpOw0KKyAgICAgICAgcEZvbnREaWN0LT5TZXRBdE5hbWUoIlR5cGUiLCAiRm9udCIpOw0KKyAgICAgICAgcEZvbnREaWN0LT5TZXRBdE5hbWUoIlN1YnR5cGUiLCAiQ0lERm9udFR5cGUyIik7DQorICAgICAgICBwRm9udERpY3QtPlNldEF0TmFtZSgiQmFzZUZvbnQiLCBiYXNlZm9udCk7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBDSURTeXNJbmZvID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgICAgIHBDSURTeXNJbmZvLT5TZXRBdFN0cmluZygiUmVnaXN0cnkiLCAiQWRvYmUiKTsNCisgICAgICAgIHBDSURTeXNJbmZvLT5TZXRBdFN0cmluZygiT3JkZXJpbmciLCBvcmRlcmluZyk7DQorICAgICAgICBwQ0lEU3lzSW5mby0+U2V0QXRJbnRlZ2VyKCJTdXBwbGVtZW50Iiwgc3VwcGxlbWVudCk7DQorICAgICAgICBwRm9udERpY3QtPlNldEF0KCJDSURTeXN0ZW1JbmZvIiwgcENJRFN5c0luZm8pOw0KKyAgICAgICAgQ1BERl9BcnJheSogcEFycmF5ID0gRlhfTkVXIENQREZfQXJyYXk7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0KCJEZXNjZW5kYW50Rm9udHMiLCBwQXJyYXkpOw0KKyAgICAgICAgQWRkSW5kaXJlY3RPYmplY3QocEZvbnREaWN0KTsNCisgICAgICAgIHBBcnJheS0+QWRkUmVmZXJlbmNlKHRoaXMsIHBGb250RGljdCk7DQorICAgIH0NCisgICAgQWRkSW5kaXJlY3RPYmplY3QocEJhc2VEaWN0KTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udERlc2MgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICBwRm9udERlc2MtPlNldEF0TmFtZSgiVHlwZSIsICJGb250RGVzY3JpcHRvciIpOw0KKyAgICBwRm9udERlc2MtPlNldEF0TmFtZSgiRm9udE5hbWUiLCBiYXNlZm9udCk7DQorICAgIHBGb250RGVzYy0+U2V0QXRJbnRlZ2VyKCJGbGFncyIsIGZsYWdzKTsNCisgICAgQ1BERl9BcnJheSogcEJCb3ggPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpICsrKSB7DQorICAgICAgICBwQkJveC0+QWRkSW50ZWdlcihiYm94W2ldKTsNCisgICAgfQ0KKyAgICBwRm9udERlc2MtPlNldEF0KCJGb250QkJveCIsIHBCQm94KTsNCisgICAgcEZvbnREZXNjLT5TZXRBdEludGVnZXIoIkl0YWxpY0FuZ2xlIiwgaXRhbGljYW5nbGUpOw0KKyAgICBwRm9udERlc2MtPlNldEF0SW50ZWdlcigiQXNjZW50IiwgYXNjZW5kKTsNCisgICAgcEZvbnREZXNjLT5TZXRBdEludGVnZXIoIkRlc2NlbnQiLCBkZXNjZW5kKTsNCisgICAgcEZvbnREZXNjLT5TZXRBdEludGVnZXIoIkNhcEhlaWdodCIsIGNhcGhlaWdodCk7DQorICAgIHBGb250RGVzYy0+U2V0QXRJbnRlZ2VyKCJTdGVtViIsIHBMb2dGb250LT5sZldlaWdodCAvIDUpOw0KKyAgICBBZGRJbmRpcmVjdE9iamVjdChwRm9udERlc2MpOw0KKyAgICBwRm9udERpY3QtPlNldEF0UmVmZXJlbmNlKCJGb250RGVzY3JpcHRvciIsIHRoaXMsIHBGb250RGVzYyk7DQorICAgIGhGb250ID0gU2VsZWN0T2JqZWN0KGhEQywgaEZvbnQpOw0KKyAgICBEZWxldGVPYmplY3QoaEZvbnQpOw0KKyAgICBEZWxldGVEQyhoREMpOw0KKyAgICByZXR1cm4gTG9hZEZvbnQocEJhc2VEaWN0KTsNCit9DQorI2VuZGlmDQorI2lmIChfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8pDQorRlhfVUlOVDMyIEZYX0dldExhbmdIYXNoQ29kZSggRlhfTFBDU1RSIHBTdHIpDQorew0KKyAgICBGWFNZU19hc3NlcnQoIHBTdHIgIT0gTlVMTCk7DQorICAgIEZYX0lOVDMyIGlMZW5ndGggPSBGWFNZU19zdHJsZW4ocFN0cik7DQorICAgIEZYX0xQQ1NUUiBwU3RyRW5kID0gcFN0ciArIGlMZW5ndGg7DQorICAgIEZYX1VJTlQzMiB1SGFzaENvZGUgPSAwOw0KKyAgICB3aGlsZSAoIHBTdHIgPCBwU3RyRW5kKSB7DQorICAgICAgICB1SGFzaENvZGUgPSAzMSAqIHVIYXNoQ29kZSArIHRvbG93ZXIoKnBTdHIrKyk7DQorICAgIH0NCisgICAgcmV0dXJuIHVIYXNoQ29kZTsNCit9DQorc3RydWN0IEZYX0xBTkcyQ1Mgew0KKyAgICBGWF9EV09SRCAgICB1TGFuZzsNCisgICAgaW50ICAgICAgICAgdUNoYXJzZXQ7DQorfSpGWF9MUExBTkcyQ1M7DQorc3RhdGljIGNvbnN0IEZYX0xBTkcyQ1MgZ3NfRlhMYW5nMkNoYXJzZXRUYWJsZVtdID0gew0KKyAgICB7MzEwOSwgMH0sDQorICAgIHszMTIxLCAxNzh9LA0KKyAgICB7MzEyOSwgMTYyfSwNCisgICAgezMxMzksIDIwNH0sDQorICAgIHszMTQxLCAyMDR9LA0KKyAgICB7MzE2NiwgMH0sDQorICAgIHszMTg0LCAyMzh9LA0KKyAgICB7MzE5NywgMH0sDQorICAgIHszMjAxLCAwfSwNCisgICAgezMyMzksIDE2MX0sDQorICAgIHszMjQxLCAwfSwNCisgICAgezMyNDYsIDB9LA0KKyAgICB7MzI0NywgMTg2fSwNCisgICAgezMyNDgsIDB9LA0KKyAgICB7MzI1OSwgMTc4fSwNCisgICAgezMyNjcsIDB9LA0KKyAgICB7MzI3MywgMH0sDQorICAgIHszMjc2LCAwfSwNCisgICAgezMzMDEsIDB9LA0KKyAgICB7MzMxMCwgMX0sDQorICAgIHszMzI1LCAxNzd9LA0KKyAgICB7MzMyOSwgMX0sDQorICAgIHszMzM4LCAyMzh9LA0KKyAgICB7MzM0MSwgMjM4fSwNCisgICAgezMzNDUsIDF9LA0KKyAgICB7MzM1NSwgMH0sDQorICAgIHszMzcwLCAwfSwNCisgICAgezMzNzEsIDB9LA0KKyAgICB7MzM4MywgMTI4fSwNCisgICAgezM0MjQsIDIwNH0sDQorICAgIHszNDI3LCAxfSwNCisgICAgezM0MjgsIDEyOX0sDQorICAgIHszNDM2LCAxNzh9LA0KKyAgICB7MzQ2NCwgMTg2fSwNCisgICAgezM0NjYsIDE4Nn0sDQorICAgIHszNDg2LCAyMDR9LA0KKyAgICB7MzQ4NywgMH0sDQorICAgIHszNDkzLCAxfSwNCisgICAgezM0OTQsIDB9LA0KKyAgICB7MzUwOCwgMH0sDQorICAgIHszNTE4LCAwfSwNCisgICAgezM1MjAsIDB9LA0KKyAgICB7MzU2OSwgMX0sDQorICAgIHszNTgwLCAyMzh9LA0KKyAgICB7MzU4OCwgMH0sDQorICAgIHszNjQ1LCAyMzh9LA0KKyAgICB7MzY1MSwgMjA0fSwNCisgICAgezM2NzIsIDIzOH0sDQorICAgIHszNjczLCAyMzh9LA0KKyAgICB7MzY3OCwgMjM4fSwNCisgICAgezM2NzksIDIzOH0sDQorICAgIHszNjgzLCAwfSwNCisgICAgezM2ODQsIDB9LA0KKyAgICB7MzY5MywgMX0sDQorICAgIHszNjk3LCAxfSwNCisgICAgezM3MDAsIDIyMn0sDQorICAgIHszNzEwLCAxNjJ9LA0KKyAgICB7MzczNCwgMjA0fSwNCisgICAgezM3NDEsIDE3OH0sDQorICAgIHszNzQ5LCAxNjJ9LA0KKyAgICB7Mzc2MywgMTYzfSwNCisgICAgezM4ODYsIDEzNH0sDQorICAgIHsxMDU5NDMsIDB9LA0KKyAgICB7MTA2Mzc1LCAxfSwNCisgICAgezM5MjM0NTE4MzcsIDEzNH0sDQorICAgIHszOTIzNDUxODM4LCAxMzZ9LA0KK307DQorc3RhdGljIEZYX1dPUkQgRlhfR2V0Q3NGcm9tTGFuZ0NvZGUoRlhfVUlOVDMyIHVDb2RlKQ0KK3sNCisgICAgRlhfSU5UMzIgaVN0YXJ0ID0gMDsNCisgICAgRlhfSU5UMzIgaUVuZCA9IHNpemVvZihnc19GWExhbmcyQ2hhcnNldFRhYmxlKSAvIHNpemVvZihGWF9MQU5HMkNTKSAtIDE7DQorICAgIHdoaWxlIChpU3RhcnQgPD0gaUVuZCkgew0KKyAgICAgICAgRlhfSU5UMzIgaU1pZCA9IChpU3RhcnQgKyBpRW5kKSAvIDI7DQorICAgICAgICBjb25zdCBGWF9MQU5HMkNTICZjaGFyc2V0ID0gZ3NfRlhMYW5nMkNoYXJzZXRUYWJsZVtpTWlkXTsNCisgICAgICAgIGlmICh1Q29kZSA9PSBjaGFyc2V0LnVMYW5nKSB7DQorICAgICAgICAgICAgcmV0dXJuIGNoYXJzZXQudUNoYXJzZXQ7DQorICAgICAgICB9IGVsc2UgaWYgKHVDb2RlIDwgY2hhcnNldC51TGFuZykgew0KKyAgICAgICAgICAgIGlFbmQgPSBpTWlkIC0gMTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaVN0YXJ0ID0gaU1pZCArIDE7DQorICAgICAgICB9DQorICAgIH07DQorICAgIHJldHVybiAwOw0KK30NCitzdGF0aWMgRlhfV09SRCBGWF9HZXRDaGFyc2V0RnJvbUxhbmcoRlhfTFBDU1RSIHBMYW5nLCBGWF9JTlQzMiBpTGVuZ3RoKQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KHBMYW5nKTsNCisgICAgaWYgKGlMZW5ndGggPCAwKSB7DQorICAgICAgICBpTGVuZ3RoID0gRlhTWVNfc3RybGVuKHBMYW5nKTsNCisgICAgfQ0KKyAgICBGWF9VSU5UMzIgdUhhc2ggPSBGWF9HZXRMYW5nSGFzaENvZGUocExhbmcpOw0KKyAgICByZXR1cm4gRlhfR2V0Q3NGcm9tTGFuZ0NvZGUodUhhc2gpOw0KK30NCitzdGF0aWMgdm9pZCBfQ0ZTdHJpbmcyQ0ZYQnl0ZVN0cmluZyhDRlN0cmluZ1JlZiBzcmMsIENGWF9CeXRlU3RyaW5nICZkZXN0KQ0KK3sNCisgICAgU0ludDMyIGxlbiA9ICBDRlN0cmluZ0dldExlbmd0aChzcmMpOw0KKyAgICBDRlJhbmdlIHJhbmdlID0gQ0ZSYW5nZU1ha2UoMCwgbGVuKTsNCisgICAgQ0ZJbmRleCB1c2VkID0gMDsNCisgICAgVUludDgqIHBCdWZmZXIgPSAoVUludDgqKW1hbGxvYyhzaXplb2YoVUludDgpICogKGxlbiArIDEpKTsNCisgICAgRlhTWVNfbWVtc2V0MzIocEJ1ZmZlciwgMCwgc2l6ZW9mKFVJbnQ4KSAqIChsZW4gKyAxKSk7DQorICAgIENGU3RyaW5nR2V0Qnl0ZXMoc3JjLCByYW5nZSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgMCwgZmFsc2UsIHBCdWZmZXIsIGxlbiwgJnVzZWQpOw0KKyAgICBkZXN0ID0gKEZYX0xQU1RSKXBCdWZmZXI7DQorICAgIGZyZWUocEJ1ZmZlcik7DQorfQ0KK0ZYX0JPT0wgSXNIYXNDaGFyU2V0KENGQXJyYXlSZWYgbGFuZ3VhZ2VzLCBjb25zdCBDRlhfRFdvcmRBcnJheSAmY2hhclNldHMpDQorew0KKyAgICBpbnQgaUNvdW50ID0gY2hhclNldHMuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMpOyArK2kpIHsNCisgICAgICAgIENGU3RyaW5nUmVmIGxhbmd1YWdlID0gKENGU3RyaW5nUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLCBpKTsNCisgICAgICAgIEZYX0RXT1JEIENoYXJTZXQgPSBGWF9HZXRDaGFyc2V0RnJvbUxhbmcoQ0ZTdHJpbmdHZXRDU3RyaW5nUHRyKGxhbmd1YWdlLCBrQ0ZTdHJpbmdFbmNvZGluZ01hY1JvbWFuKSwgLTEpOw0KKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBpQ291bnQ7ICsraikgew0KKyAgICAgICAgICAgIGlmIChDaGFyU2V0ID09IGNoYXJTZXRzW2pdKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK3ZvaWQgRlhfR2V0Q2hhcldpZHRoKENURm9udFJlZiBmb250LCBVbmlDaGFyIHN0YXJ0LCBVbmlDaGFyIGVuZCwgaW50KiB3aWR0aCkNCit7DQorICAgIENHRmxvYXQgc2l6ZSA9IENURm9udEdldFNpemUoZm9udCk7DQorICAgIGZvciAoOyBzdGFydCA8PSBlbmQ7ICsrc3RhcnQpIHsNCisgICAgICAgIENHR2x5cGggcEdseXBoID0gTlVMTDsNCisgICAgICAgIENGSW5kZXggY291bnQgPSAxOw0KKyAgICAgICAgQ1RGb250R2V0R2x5cGhzRm9yQ2hhcmFjdGVycyhmb250LCAmc3RhcnQsICZwR2x5cGgsIGNvdW50KTsNCisgICAgICAgIENHU2l6ZSBhZHZhbmNlczsNCisgICAgICAgIENURm9udEdldEFkdmFuY2VzRm9yR2x5cGhzKGZvbnQsIGtDVEZvbnREZWZhdWx0T3JpZW50YXRpb24sICZwR2x5cGgsICZhZHZhbmNlcywgMSk7DQorICAgICAgICAqd2lkdGggPSAoaW50KShhZHZhbmNlcy53aWR0aCAvIHNpemUgKiAxMDAwKSA7DQorICAgICAgICB3aWR0aCsrOw0KKyAgICB9DQorfQ0KK3N0YXRpYyB2b2lkIF9JbnNlcnRXaWR0aEFycmF5KENURm9udFJlZiBmb250LCBpbnQgc3RhcnQsIGludCBlbmQsIENQREZfQXJyYXkqIHBXaWR0aEFycmF5KQ0KK3sNCisgICAgaW50IHNpemUgPSBlbmQgLSBzdGFydCArIDE7DQorICAgIGludCogd2lkdGhzID0gRlhfQWxsb2MoaW50LCBzaXplKTsNCisgICAgRlhfR2V0Q2hhcldpZHRoKGZvbnQsIHN0YXJ0LCBlbmQsIHdpZHRocyk7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAxOyBpIDwgc2l6ZTsgaSArKykNCisgICAgICAgIGlmICh3aWR0aHNbaV0gIT0gKndpZHRocykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICBpZiAoaSA9PSBzaXplKSB7DQorICAgICAgICBpbnQgZmlyc3QgPSBwV2lkdGhBcnJheS0+R2V0SW50ZWdlcihwV2lkdGhBcnJheS0+R2V0Q291bnQoKSAtIDEpOw0KKyAgICAgICAgcFdpZHRoQXJyYXktPkFkZEludGVnZXIoZmlyc3QgKyBzaXplIC0gMSk7DQorICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcigqd2lkdGhzKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIENQREZfQXJyYXkqIHBXaWR0aEFycmF5MSA9IEZYX05FVyBDUERGX0FycmF5Ow0KKyAgICAgICAgcFdpZHRoQXJyYXktPkFkZChwV2lkdGhBcnJheTEpOw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkgKyspIHsNCisgICAgICAgICAgICBwV2lkdGhBcnJheTEtPkFkZEludGVnZXIod2lkdGhzW2ldKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9GcmVlKHdpZHRocyk7DQorfQ0KK0NQREZfRm9udCogQ1BERl9Eb2N1bWVudDo6QWRkTWFjRm9udChDVEZvbnRSZWYgcEZvbnQsIEZYX0JPT0wgYlZlcnQsIEZYX0JPT0wgYlRyYW5zbGF0ZU5hbWUpDQorew0KKyAgICBDVEZvbnRSZWYgZm9udCA9IChDVEZvbnRSZWYpcEZvbnQ7DQorICAgIENURm9udERlc2NyaXB0b3JSZWYgZGVzY3JpcHRvciA9IENURm9udENvcHlGb250RGVzY3JpcHRvcihmb250KTsNCisgICAgaWYgKGRlc2NyaXB0b3IgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgYmFzZWZvbnQ7DQorICAgIEZYX0JPT0wgYkNKSyA9IEZBTFNFOw0KKyAgICBpbnQgZmxhZ3MgPSAwLCBpdGFsaWNhbmdsZSA9IDAsIGFzY2VuZCA9IDAsIGRlc2NlbmQgPSAwLCBjYXBoZWlnaHQgPSAwLCBiYm94WzRdOw0KKyAgICBGWFNZU19tZW1zZXQzMihiYm94LCAwLCBzaXplb2YoaW50KSAqIDQpOw0KKyAgICBDRkFycmF5UmVmIGxhbmd1YWdlcyA9IChDRkFycmF5UmVmKUNURm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlKGRlc2NyaXB0b3IsIGtDVEZvbnRMYW5ndWFnZXNBdHRyaWJ1dGUpOw0KKyAgICBpZiAobGFuZ3VhZ2VzID09IE5VTEwpIHsNCisgICAgICAgIENGUmVsZWFzZShkZXNjcmlwdG9yKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGWF9EV29yZEFycmF5IGNoYXJTZXRzOw0KKyAgICBjaGFyU2V0cy5BZGQoRlhGT05UX0NISU5FU0VCSUc1X0NIQVJTRVQpOw0KKyAgICBjaGFyU2V0cy5BZGQoRlhGT05UX0dCMjMxMl9DSEFSU0VUKTsNCisgICAgY2hhclNldHMuQWRkKEZYRk9OVF9IQU5HRVVMX0NIQVJTRVQpOw0KKyAgICBjaGFyU2V0cy5BZGQoRlhGT05UX1NISUZUSklTX0NIQVJTRVQpOw0KKyAgICBpZiAoSXNIYXNDaGFyU2V0KGxhbmd1YWdlcywgY2hhclNldHMpKSB7DQorICAgICAgICBiQ0pLID0gVFJVRTsNCisgICAgfQ0KKyAgICBDRlJlbGVhc2UoZGVzY3JpcHRvcik7DQorICAgIENGRGljdGlvbmFyeVJlZiB0cmFpdHMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNURm9udENvcHlUcmFpdHMoZm9udCk7DQorICAgIGlmICh0cmFpdHMgPT0gTlVMTCkgew0KKyAgICAgICAgQ0ZSZWxlYXNlKGxhbmd1YWdlcyk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRk51bWJlclJlZiBzeWJvbGljVHJhaXQgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodHJhaXRzLCBrQ1RGb250U3ltYm9saWNUcmFpdCk7DQorICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRyYWl0ID0gMDsNCisgICAgQ0ZOdW1iZXJHZXRWYWx1ZShzeWJvbGljVHJhaXQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZ0cmFpdCk7DQorICAgIGlmICh0cmFpdCAmIGtDVEZvbnRJdGFsaWNUcmFpdCkgew0KKyAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9JVEFMSUM7DQorICAgIH0NCisgICAgaWYgKHRyYWl0ICYga0NURm9udE1vbm9TcGFjZVRyYWl0KSB7DQorICAgICAgICBmbGFncyB8PSBQREZGT05UX0ZJWEVEUElUQ0g7DQorICAgIH0NCisgICAgaWYgKHRyYWl0ICYga0NURm9udE1vZGVyblNlcmlmc0NsYXNzKSB7DQorICAgICAgICBmbGFncyB8PSBQREZGT05UX1NFUklGOw0KKyAgICB9DQorICAgIGlmICh0cmFpdCAmIGtDVEZvbnRTY3JpcHRzQ2xhc3MpIHsNCisgICAgICAgIGZsYWdzIHw9IFBERkZPTlRfU0NSSVBUOw0KKyAgICB9DQorICAgIENGTnVtYmVyUmVmIHdlaWdodFRyYWl0ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHRyYWl0cywga0NURm9udFdlaWdodFRyYWl0KTsNCisgICAgRmxvYXQzMiB3ZWlnaHQgPSAwOw0KKyAgICBDRk51bWJlckdldFZhbHVlKHdlaWdodFRyYWl0LCBrQ0ZOdW1iZXJGbG9hdDMyVHlwZSwgJndlaWdodCk7DQorICAgIGl0YWxpY2FuZ2xlID0gQ1RGb250R2V0U2xhbnRBbmdsZShmb250KTsNCisgICAgYXNjZW5kICAgICAgPSBDVEZvbnRHZXRBc2NlbnQoZm9udCk7DQorICAgIGRlc2NlbmQgICAgID0gQ1RGb250R2V0RGVzY2VudChmb250KTsNCisgICAgY2FwaGVpZ2h0ICAgPSBDVEZvbnRHZXRDYXBIZWlnaHQoZm9udCk7DQorICAgIENHUmVjdCBib3ggID0gQ1RGb250R2V0Qm91bmRpbmdCb3goZm9udCk7DQorICAgIGJib3hbMF0gICAgID0gYm94Lm9yaWdpbi54Ow0KKyAgICBiYm94WzFdICAgICA9IGJveC5vcmlnaW4ueTsNCisgICAgYmJveFsyXSAgICAgPSBib3gub3JpZ2luLnggKyBib3guc2l6ZS53aWR0aDsNCisgICAgYmJveFszXSAgICAgPSBib3gub3JpZ2luLnkgKyBib3guc2l6ZS5oZWlnaHQ7DQorICAgIGlmIChiVHJhbnNsYXRlTmFtZSAmJiBiQ0pLKSB7DQorICAgICAgICBDRlN0cmluZ1JlZiBwb3N0TmFtZSA9IENURm9udENvcHlQb3N0U2NyaXB0TmFtZShmb250KTsNCisgICAgICAgIF9DRlN0cmluZzJDRlhCeXRlU3RyaW5nKHBvc3ROYW1lLCBiYXNlZm9udCk7DQorICAgICAgICBDRlJlbGVhc2UocG9zdE5hbWUpOw0KKyAgICB9DQorICAgIGlmIChiYXNlZm9udC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIENGU3RyaW5nUmVmIGZ1bGxOYW1lID0gQ1RGb250Q29weUZ1bGxOYW1lKGZvbnQpOw0KKyAgICAgICAgX0NGU3RyaW5nMkNGWEJ5dGVTdHJpbmcoZnVsbE5hbWUsIGJhc2Vmb250KTsNCisgICAgICAgIENGUmVsZWFzZShmdWxsTmFtZSk7DQorICAgIH0NCisgICAgYmFzZWZvbnQuUmVwbGFjZSgiICIsICIiKTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udERpY3QgPSBOVUxMOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBCYXNlRGljdCA9IEZYX05FVyBDUERGX0RpY3Rpb25hcnk7DQorICAgIHBGb250RGljdCA9IHBCYXNlRGljdDsNCisgICAgaWYgKCFiQ0pLKSB7DQorICAgICAgICBjaGFyU2V0cy5SZW1vdmVBbGwoKTsNCisgICAgICAgIGNoYXJTZXRzLkFkZChGWEZPTlRfQU5TSV9DSEFSU0VUKTsNCisgICAgICAgIGNoYXJTZXRzLkFkZChGWEZPTlRfREVGQVVMVF9DSEFSU0VUKTsNCisgICAgICAgIGNoYXJTZXRzLkFkZChGWEZPTlRfU1lNQk9MX0NIQVJTRVQpOw0KKyAgICAgICAgaWYgKElzSGFzQ2hhclNldChsYW5ndWFnZXMsIGNoYXJTZXRzKSkgew0KKyAgICAgICAgICAgIGNoYXJTZXRzLlJlbW92ZUFsbCgpOw0KKyAgICAgICAgICAgIGNoYXJTZXRzLkFkZChGWEZPTlRfU1lNQk9MX0NIQVJTRVQpOw0KKyAgICAgICAgICAgIGlmIChJc0hhc0NoYXJTZXQobGFuZ3VhZ2VzLCBjaGFyU2V0cykpIHsNCisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9TWU1CT0xJQzsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBmbGFncyB8PSBQREZGT05UX05PTlNZTUJPTElDOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwQmFzZURpY3QtPlNldEF0TmFtZShGWF9CU1RSQygiRW5jb2RpbmciKSwgIldpbkFuc2lFbmNvZGluZyIpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBmbGFncyB8PSBQREZGT05UX05PTlNZTUJPTElDOw0KKyAgICAgICAgICAgIGludCBpOw0KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgZ19GWF9DaGFyc2V0VW5pY29kZXMgLyBzaXplb2YoRlhfQ2hhcnNldFVuaWNvZGVzKTsgaSArKykgew0KKyAgICAgICAgICAgICAgICBjaGFyU2V0cy5SZW1vdmVBbGwoKTsNCisgICAgICAgICAgICAgICAgY2hhclNldHMuQWRkKGdfRlhfQ2hhcnNldFVuaWNvZGVzW2ldLm1fQ2hhcnNldCk7DQorICAgICAgICAgICAgICAgIGlmIChJc0hhc0NoYXJTZXQobGFuZ3VhZ2VzLCBjaGFyU2V0cykpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChpIDwgc2l6ZW9mIGdfRlhfQ2hhcnNldFVuaWNvZGVzIC8gc2l6ZW9mKEZYX0NoYXJzZXRVbmljb2RlcykpIHsNCisgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRW5jb2RpbmcgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICAgICAgICAgICAgICBwRW5jb2RpbmctPlNldEF0TmFtZShGWF9CU1RSQygiQmFzZUVuY29kaW5nIiksICJXaW5BbnNpRW5jb2RpbmciKTsNCisgICAgICAgICAgICAgICAgQ1BERl9BcnJheSogcEFycmF5ID0gRlhfTkVXIENQREZfQXJyYXk7DQorICAgICAgICAgICAgICAgIHBBcnJheS0+QWRkSW50ZWdlcigxMjgpOw0KKyAgICAgICAgICAgICAgICBjb25zdCBGWF9XQ0hBUiogcFVuaWNvZGVzID0gZ19GWF9DaGFyc2V0VW5pY29kZXNbaV0ubV9wVW5pY29kZXM7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMTI4OyBqICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBuYW1lID0gUERGX0Fkb2JlTmFtZUZyb21Vbmljb2RlKHBVbmljb2Rlc1tqXSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwQXJyYXktPkFkZE5hbWUoRlhfQlNUUkMoIi5ub3RkZWYiKSk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBBcnJheS0+QWRkTmFtZShuYW1lKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwRW5jb2RpbmctPlNldEF0KEZYX0JTVFJDKCJEaWZmZXJlbmNlcyIpLCBwQXJyYXkpOw0KKyAgICAgICAgICAgICAgICBBZGRJbmRpcmVjdE9iamVjdChwRW5jb2RpbmcpOw0KKyAgICAgICAgICAgICAgICBwQmFzZURpY3QtPlNldEF0UmVmZXJlbmNlKEZYX0JTVFJDKCJFbmNvZGluZyIpLCB0aGlzLCBwRW5jb2RpbmcpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmICh3ZWlnaHQgPiAwLjAgJiYgdHJhaXQgJiBrQ1RGb250SXRhbGljVHJhaXQpIHsNCisgICAgICAgICAgICBiYXNlZm9udCArPSAiLEJvbGRJdGFsaWMiOw0KKyAgICAgICAgfSBlbHNlIGlmICh3ZWlnaHQgPiAwLjApIHsNCisgICAgICAgICAgICBiYXNlZm9udCArPSAiLEJvbGQiOw0KKyAgICAgICAgfSBlbHNlIGlmICh0cmFpdCAmIGtDVEZvbnRJdGFsaWNUcmFpdCkgew0KKyAgICAgICAgICAgIGJhc2Vmb250ICs9ICIsSXRhbGljIjsNCisgICAgICAgIH0NCisgICAgICAgIHBCYXNlRGljdC0+U2V0QXROYW1lKCJTdWJ0eXBlIiwgIlRydWVUeXBlIik7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TmFtZSgiQmFzZUZvbnQiLCBiYXNlZm9udCk7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TnVtYmVyKCJGaXJzdENoYXIiLCAzMik7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TnVtYmVyKCJMYXN0Q2hhciIsIDI1NSk7DQorICAgICAgICBpbnQgY2hhcl93aWR0aHNbMjI0XTsNCisgICAgICAgIEZYX0dldENoYXJXaWR0aChmb250LCAzMiwgMjU1LCBjaGFyX3dpZHRocyk7DQorICAgICAgICBDUERGX0FycmF5KiBwV2lkdGhzID0gRlhfTkVXIENQREZfQXJyYXk7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDIyNDsgaSArKykgew0KKyAgICAgICAgICAgIHBXaWR0aHMtPkFkZEludGVnZXIoY2hhcl93aWR0aHNbaV0pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEJhc2VEaWN0LT5TZXRBdCgiV2lkdGhzIiwgcFdpZHRocyk7DQorICAgIH0gIGVsc2Ugew0KKyAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9OT05TWU1CT0xJQzsNCisgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IE5VTEw7DQorICAgICAgICBwRm9udERpY3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgY21hcDsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIG9yZGVyaW5nOw0KKyAgICAgICAgaW50IHN1cHBsZW1lbnQ7DQorICAgICAgICBGWF9CT09MIGJGb3VuZCA9IEZBTFNFOw0KKyAgICAgICAgQ1BERl9BcnJheSogcFdpZHRoQXJyYXkgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgIGNoYXJTZXRzLlJlbW92ZUFsbCgpOw0KKyAgICAgICAgY2hhclNldHMuQWRkKEZYRk9OVF9DSElORVNFQklHNV9DSEFSU0VUKTsNCisgICAgICAgIGlmIChJc0hhc0NoYXJTZXQobGFuZ3VhZ2VzLCBjaGFyU2V0cykpIHsNCisgICAgICAgICAgICBjbWFwID0gYlZlcnQgPyAiRVRlbm1zLUI1LVYiIDogIkVUZW5tcy1CNS1IIjsNCisgICAgICAgICAgICBvcmRlcmluZyA9ICJDTlMxIjsNCisgICAgICAgICAgICBzdXBwbGVtZW50ID0gNDsNCisgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcigxKTsNCisgICAgICAgICAgICBfSW5zZXJ0V2lkdGhBcnJheShmb250LCAweDIwLCAweDdlLCBwV2lkdGhBcnJheSk7DQorICAgICAgICAgICAgYkZvdW5kID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGNoYXJTZXRzLlJlbW92ZUFsbCgpOw0KKyAgICAgICAgY2hhclNldHMuQWRkKEZYRk9OVF9HQjIzMTJfQ0hBUlNFVCk7DQorICAgICAgICBpZiAoIWJGb3VuZCAmJiBJc0hhc0NoYXJTZXQobGFuZ3VhZ2VzLCBjaGFyU2V0cykpIHsNCisgICAgICAgICAgICBjbWFwID0gYlZlcnQgPyAiR0JLLUVVQy1WIiA6ICJHQkstRVVDLUgiOw0KKyAgICAgICAgICAgIG9yZGVyaW5nID0gIkdCMSIsIHN1cHBsZW1lbnQgPSAyOw0KKyAgICAgICAgICAgIHBXaWR0aEFycmF5LT5BZGRJbnRlZ2VyKDc3MTYpOw0KKyAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5KGZvbnQsIDB4MjAsIDB4MjAsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcig4MTQpOw0KKyAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5KGZvbnQsIDB4MjEsIDB4N2UsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICBiRm91bmQgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2hhclNldHMuUmVtb3ZlQWxsKCk7DQorICAgICAgICBjaGFyU2V0cy5BZGQoRlhGT05UX0hBTkdFVUxfQ0hBUlNFVCk7DQorICAgICAgICBpZiAoIWJGb3VuZCAmJiBJc0hhc0NoYXJTZXQobGFuZ3VhZ2VzLCBjaGFyU2V0cykpIHsNCisgICAgICAgICAgICBjbWFwID0gYlZlcnQgPyAiS1NDbXMtVUhDLVYiIDogIktTQ21zLVVIQy1IIjsNCisgICAgICAgICAgICBvcmRlcmluZyA9ICJLb3JlYTEiOw0KKyAgICAgICAgICAgIHN1cHBsZW1lbnQgPSAyOw0KKyAgICAgICAgICAgIHBXaWR0aEFycmF5LT5BZGRJbnRlZ2VyKDEpOw0KKyAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5KGZvbnQsIDB4MjAsIDB4N2UsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICBiRm91bmQgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2hhclNldHMuUmVtb3ZlQWxsKCk7DQorICAgICAgICBjaGFyU2V0cy5BZGQoRlhGT05UX1NISUZUSklTX0NIQVJTRVQpOw0KKyAgICAgICAgaWYgKCFiRm91bmQgJiYgSXNIYXNDaGFyU2V0KGxhbmd1YWdlcywgY2hhclNldHMpKSB7DQorICAgICAgICAgICAgY21hcCA9IGJWZXJ0ID8gIjkwbXMtUktTSi1WIiA6ICI5MG1zLVJLU0otSCI7DQorICAgICAgICAgICAgb3JkZXJpbmcgPSAiSmFwYW4xIjsNCisgICAgICAgICAgICBzdXBwbGVtZW50ID0gNTsNCisgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcigyMzEpOw0KKyAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5KGZvbnQsIDB4MjAsIDB4N2QsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcigzMjYpOw0KKyAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5KGZvbnQsIDB4YTAsIDB4YTAsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcigzMjcpOw0KKyAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5KGZvbnQsIDB4YTEsIDB4ZGYsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcig2MzEpOw0KKyAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5KGZvbnQsIDB4N2UsIDB4N2UsIHBXaWR0aEFycmF5KTsNCisgICAgICAgIH0NCisgICAgICAgIHBCYXNlRGljdC0+U2V0QXROYW1lKCJTdWJ0eXBlIiwgIlR5cGUwIik7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TmFtZSgiQmFzZUZvbnQiLCBiYXNlZm9udCk7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TmFtZSgiRW5jb2RpbmciLCBjbWFwKTsNCisgICAgICAgIHBGb250RGljdC0+U2V0QXQoIlciLCBwV2lkdGhBcnJheSk7DQorICAgICAgICBwRm9udERpY3QtPlNldEF0TmFtZSgiVHlwZSIsICJGb250Iik7DQorICAgICAgICBwRm9udERpY3QtPlNldEF0TmFtZSgiU3VidHlwZSIsICJDSURGb250VHlwZTIiKTsNCisgICAgICAgIHBGb250RGljdC0+U2V0QXROYW1lKCJCYXNlRm9udCIsIGJhc2Vmb250KTsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcENJRFN5c0luZm8gPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICAgICAgcENJRFN5c0luZm8tPlNldEF0U3RyaW5nKCJSZWdpc3RyeSIsICJBZG9iZSIpOw0KKyAgICAgICAgcENJRFN5c0luZm8tPlNldEF0U3RyaW5nKCJPcmRlcmluZyIsIG9yZGVyaW5nKTsNCisgICAgICAgIHBDSURTeXNJbmZvLT5TZXRBdEludGVnZXIoIlN1cHBsZW1lbnQiLCBzdXBwbGVtZW50KTsNCisgICAgICAgIHBGb250RGljdC0+U2V0QXQoIkNJRFN5c3RlbUluZm8iLCBwQ0lEU3lzSW5mbyk7DQorICAgICAgICBwQXJyYXkgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgIHBCYXNlRGljdC0+U2V0QXQoIkRlc2NlbmRhbnRGb250cyIsIHBBcnJheSk7DQorICAgICAgICBBZGRJbmRpcmVjdE9iamVjdChwRm9udERpY3QpOw0KKyAgICAgICAgcEFycmF5LT5BZGRSZWZlcmVuY2UodGhpcywgcEZvbnREaWN0KTsNCisgICAgfQ0KKyAgICBBZGRJbmRpcmVjdE9iamVjdChwQmFzZURpY3QpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250RGVzYyA9IEZYX05FVyBDUERGX0RpY3Rpb25hcnk7DQorICAgIHBGb250RGVzYy0+U2V0QXROYW1lKCJUeXBlIiwgIkZvbnREZXNjcmlwdG9yIik7DQorICAgIHBGb250RGVzYy0+U2V0QXROYW1lKCJGb250TmFtZSIsIGJhc2Vmb250KTsNCisgICAgcEZvbnREZXNjLT5TZXRBdEludGVnZXIoIkZsYWdzIiwgZmxhZ3MpOw0KKyAgICBDUERGX0FycmF5KiBwQkJveCA9IEZYX05FVyBDUERGX0FycmF5Ow0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkgKyspIHsNCisgICAgICAgIHBCQm94LT5BZGRJbnRlZ2VyKGJib3hbaV0pOw0KKyAgICB9DQorICAgIHBGb250RGVzYy0+U2V0QXQoIkZvbnRCQm94IiwgcEJCb3gpOw0KKyAgICBwRm9udERlc2MtPlNldEF0SW50ZWdlcigiSXRhbGljQW5nbGUiLCBpdGFsaWNhbmdsZSk7DQorICAgIHBGb250RGVzYy0+U2V0QXRJbnRlZ2VyKCJBc2NlbnQiLCBhc2NlbmQpOw0KKyAgICBwRm9udERlc2MtPlNldEF0SW50ZWdlcigiRGVzY2VudCIsIGRlc2NlbmQpOw0KKyAgICBwRm9udERlc2MtPlNldEF0SW50ZWdlcigiQ2FwSGVpZ2h0IiwgY2FwaGVpZ2h0KTsNCisgICAgQ0dGbG9hdCBmU3RlbVYgPSAwOw0KKyAgICBpbnQxNl90IG1pbl93aWR0aCA9IFNIUlRfTUFYOw0KKyAgICBzdGF0aWMgY29uc3QgVW5pQ2hhciBzdGVtX2NoYXJzW10gPSB7J2knLCAnSScsICchJywgJzEnfTsNCisgICAgY29uc3Qgc2l6ZV90IGNvdW50ID0gc2l6ZW9mKHN0ZW1fY2hhcnMpIC8gc2l6ZW9mKHN0ZW1fY2hhcnNbMF0pOw0KKyAgICBDR0dseXBoIGdseXBoc1tjb3VudF07DQorICAgIENHUmVjdCBib3VuZGluZ1JlY3RzW2NvdW50XTsNCisgICAgaWYgKENURm9udEdldEdseXBoc0ZvckNoYXJhY3RlcnMoZm9udCwgc3RlbV9jaGFycywgZ2x5cGhzLCBjb3VudCkpIHsNCisgICAgICAgIENURm9udEdldEJvdW5kaW5nUmVjdHNGb3JHbHlwaHMoZm9udCwga0NURm9udEhvcml6b250YWxPcmllbnRhdGlvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzLCBib3VuZGluZ1JlY3RzLCBjb3VudCk7DQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsNCisgICAgICAgICAgICBpbnQxNl90IHdpZHRoID0gYm91bmRpbmdSZWN0c1tpXS5zaXplLndpZHRoOw0KKyAgICAgICAgICAgIGlmICh3aWR0aCA+IDAgJiYgd2lkdGggPCBtaW5fd2lkdGgpIHsNCisgICAgICAgICAgICAgICAgbWluX3dpZHRoID0gd2lkdGg7DQorICAgICAgICAgICAgICAgIGZTdGVtViA9IG1pbl93aWR0aDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcEZvbnREZXNjLT5TZXRBdEludGVnZXIoIlN0ZW1WIiwgZlN0ZW1WKTsNCisgICAgQWRkSW5kaXJlY3RPYmplY3QocEZvbnREZXNjKTsNCisgICAgcEZvbnREaWN0LT5TZXRBdFJlZmVyZW5jZSgiRm9udERlc2NyaXB0b3IiLCB0aGlzLCBwRm9udERlc2MpOw0KKyAgICBDRlJlbGVhc2UodHJhaXRzKTsNCisgICAgQ0ZSZWxlYXNlKGxhbmd1YWdlcyk7DQorICAgIHJldHVybiBMb2FkRm9udChwQmFzZURpY3QpOw0KK30NCisjZW5kaWYNCitzdGF0aWMgdm9pZCBfSW5zZXJ0V2lkdGhBcnJheTEoQ0ZYX0ZvbnQqIHBGb250LCBJRlhfRm9udEVuY29kaW5nKiBwRW5jb2RpbmcsIEZYX1dDSEFSIHN0YXJ0LCBGWF9XQ0hBUiBlbmQsIENQREZfQXJyYXkqIHBXaWR0aEFycmF5KQ0KK3sNCisgICAgaW50IHNpemUgPSBlbmQgLSBzdGFydCArIDE7DQorICAgIGludCogd2lkdGhzID0gRlhfQWxsb2MoaW50LCBzaXplKTsNCisgICAgaW50IGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7DQorICAgICAgICBpbnQgZ2x5cGhfaW5kZXggPSBwRW5jb2RpbmctPkdseXBoRnJvbUNoYXJDb2RlKHN0YXJ0ICsgaSk7DQorICAgICAgICB3aWR0aHNbaV0gPSBwRm9udC0+R2V0R2x5cGhXaWR0aChnbHlwaF9pbmRleCk7DQorICAgIH0NCisgICAgZm9yIChpID0gMTsgaSA8IHNpemU7IGkgKyspDQorICAgICAgICBpZiAod2lkdGhzW2ldICE9ICp3aWR0aHMpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgaWYgKGkgPT0gc2l6ZSkgew0KKyAgICAgICAgaW50IGZpcnN0ID0gcFdpZHRoQXJyYXktPkdldEludGVnZXIocFdpZHRoQXJyYXktPkdldENvdW50KCkgLSAxKTsNCisgICAgICAgIHBXaWR0aEFycmF5LT5BZGRJbnRlZ2VyKGZpcnN0ICsgc2l6ZSAtIDEpOw0KKyAgICAgICAgcFdpZHRoQXJyYXktPkFkZEludGVnZXIoKndpZHRocyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDUERGX0FycmF5KiBwV2lkdGhBcnJheTEgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgIHBXaWR0aEFycmF5LT5BZGQocFdpZHRoQXJyYXkxKTsNCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7DQorICAgICAgICAgICAgcFdpZHRoQXJyYXkxLT5BZGRJbnRlZ2VyKHdpZHRoc1tpXSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfRnJlZSh3aWR0aHMpOw0KK30NCitDUERGX0ZvbnQqIENQREZfRG9jdW1lbnQ6OkFkZEZvbnQoQ0ZYX0ZvbnQqIHBGb250LCBpbnQgY2hhcnNldCwgRlhfQk9PTCBiVmVydCkNCit7DQorICAgIGlmIChwRm9udCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJDSksgPSBjaGFyc2V0ID09IEZYRk9OVF9DSElORVNFQklHNV9DSEFSU0VUIHx8IGNoYXJzZXQgPT0gRlhGT05UX0dCMjMxMl9DSEFSU0VUIHx8DQorICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPT0gRlhGT05UX0hBTkdFVUxfQ0hBUlNFVCB8fCBjaGFyc2V0ID09IEZYRk9OVF9TSElGVEpJU19DSEFSU0VUOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBiYXNlZm9udCA9IHBGb250LT5HZXRGYW1pbHlOYW1lKCk7DQorICAgIGJhc2Vmb250LlJlcGxhY2UoIiAiLCAiIik7DQorICAgIGludCBmbGFncyA9IDA7DQorICAgIGlmIChwRm9udC0+SXNCb2xkKCkpIHsNCisgICAgICAgIGZsYWdzIHw9IFBERkZPTlRfRk9SQ0VCT0xEOw0KKyAgICB9DQorICAgIGlmIChwRm9udC0+SXNJdGFsaWMoKSkgew0KKyAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9JVEFMSUM7DQorICAgIH0NCisgICAgaWYgKHBGb250LT5Jc0ZpeGVkV2lkdGgoKSkgew0KKyAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9GSVhFRFBJVENIOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcEJhc2VEaWN0ID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgcEJhc2VEaWN0LT5TZXRBdE5hbWUoIlR5cGUiLCAiRm9udCIpOw0KKyAgICBJRlhfRm9udEVuY29kaW5nKiBwRW5jb2RpbmcgPSBGWEdFX0NyZWF0ZVVuaWNvZGVFbmNvZGluZyhwRm9udCk7DQorICAgIENQREZfRGljdGlvbmFyeSogcEZvbnREaWN0ID0gcEJhc2VEaWN0Ow0KKyAgICBpZiAoIWJDSkspIHsNCisgICAgICAgIENQREZfQXJyYXkqIHBXaWR0aHMgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgIGludCBjaGFyY29kZTsNCisgICAgICAgIGZvciAoY2hhcmNvZGUgPSAzMjsgY2hhcmNvZGUgPCAxMjg7IGNoYXJjb2RlICsrKSB7DQorICAgICAgICAgICAgaW50IGdseXBoX2luZGV4ID0gcEVuY29kaW5nLT5HbHlwaEZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorICAgICAgICAgICAgaW50IGNoYXJfd2lkdGggPSBwRm9udC0+R2V0R2x5cGhXaWR0aChnbHlwaF9pbmRleCk7DQorICAgICAgICAgICAgcFdpZHRocy0+QWRkSW50ZWdlcihjaGFyX3dpZHRoKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjaGFyc2V0ID09IEZYRk9OVF9BTlNJX0NIQVJTRVQgfHwgY2hhcnNldCA9PSBGWEZPTlRfREVGQVVMVF9DSEFSU0VUIHx8DQorICAgICAgICAgICAgICAgIGNoYXJzZXQgPT0gRlhGT05UX1NZTUJPTF9DSEFSU0VUKSB7DQorICAgICAgICAgICAgaWYgKGNoYXJzZXQgPT0gRlhGT05UX1NZTUJPTF9DSEFSU0VUKSB7DQorICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBERkZPTlRfU1lNQk9MSUM7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUERGRk9OVF9OT05TWU1CT0xJQzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcEJhc2VEaWN0LT5TZXRBdE5hbWUoRlhfQlNUUkMoIkVuY29kaW5nIiksICJXaW5BbnNpRW5jb2RpbmciKTsNCisgICAgICAgICAgICBmb3IgKGNoYXJjb2RlID0gMTI4OyBjaGFyY29kZSA8PSAyNTU7IGNoYXJjb2RlICsrKSB7DQorICAgICAgICAgICAgICAgIGludCBnbHlwaF9pbmRleCA9IHBFbmNvZGluZy0+R2x5cGhGcm9tQ2hhckNvZGUoY2hhcmNvZGUpOw0KKyAgICAgICAgICAgICAgICBpbnQgY2hhcl93aWR0aCA9IHBGb250LT5HZXRHbHlwaFdpZHRoKGdseXBoX2luZGV4KTsNCisgICAgICAgICAgICAgICAgcFdpZHRocy0+QWRkSW50ZWdlcihjaGFyX3dpZHRoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGZsYWdzIHw9IFBERkZPTlRfTk9OU1lNQk9MSUM7DQorICAgICAgICAgICAgaW50IGk7DQorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiBnX0ZYX0NoYXJzZXRVbmljb2RlcyAvIHNpemVvZihGWF9DaGFyc2V0VW5pY29kZXMpOyBpICsrKQ0KKyAgICAgICAgICAgICAgICBpZiAoZ19GWF9DaGFyc2V0VW5pY29kZXNbaV0ubV9DaGFyc2V0ID09IGNoYXJzZXQpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGkgPCBzaXplb2YgZ19GWF9DaGFyc2V0VW5pY29kZXMgLyBzaXplb2YoRlhfQ2hhcnNldFVuaWNvZGVzKSkgew0KKyAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBFbmNvZGluZ0RpY3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICAgICAgICAgICAgICBwRW5jb2RpbmdEaWN0LT5TZXRBdE5hbWUoRlhfQlNUUkMoIkJhc2VFbmNvZGluZyIpLCAiV2luQW5zaUVuY29kaW5nIik7DQorICAgICAgICAgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IEZYX05FVyBDUERGX0FycmF5Ow0KKyAgICAgICAgICAgICAgICBwQXJyYXktPkFkZEludGVnZXIoMTI4KTsNCisgICAgICAgICAgICAgICAgY29uc3QgRlhfV0NIQVIqIHBVbmljb2RlcyA9IGdfRlhfQ2hhcnNldFVuaWNvZGVzW2ldLm1fcFVuaWNvZGVzOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDEyODsgaiArKykgew0KKyAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgbmFtZSA9IFBERl9BZG9iZU5hbWVGcm9tVW5pY29kZShwVW5pY29kZXNbal0pOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcEFycmF5LT5BZGROYW1lKEZYX0JTVFJDKCIubm90ZGVmIikpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwQXJyYXktPkFkZE5hbWUobmFtZSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpbnQgZ2x5cGhfaW5kZXggPSBwRW5jb2RpbmctPkdseXBoRnJvbUNoYXJDb2RlKHBVbmljb2Rlc1tqXSk7DQorICAgICAgICAgICAgICAgICAgICBpbnQgY2hhcl93aWR0aCA9IHBGb250LT5HZXRHbHlwaFdpZHRoKGdseXBoX2luZGV4KTsNCisgICAgICAgICAgICAgICAgICAgIHBXaWR0aHMtPkFkZEludGVnZXIoY2hhcl93aWR0aCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcEVuY29kaW5nRGljdC0+U2V0QXQoRlhfQlNUUkMoIkRpZmZlcmVuY2VzIiksIHBBcnJheSk7DQorICAgICAgICAgICAgICAgIEFkZEluZGlyZWN0T2JqZWN0KHBFbmNvZGluZ0RpY3QpOw0KKyAgICAgICAgICAgICAgICBwQmFzZURpY3QtPlNldEF0UmVmZXJlbmNlKEZYX0JTVFJDKCJFbmNvZGluZyIpLCB0aGlzLCBwRW5jb2RpbmdEaWN0KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAocEZvbnQtPklzQm9sZCgpICYmIHBGb250LT5Jc0l0YWxpYygpKSB7DQorICAgICAgICAgICAgYmFzZWZvbnQgKz0gIixCb2xkSXRhbGljIjsNCisgICAgICAgIH0gZWxzZSBpZiAocEZvbnQtPklzQm9sZCgpKSB7DQorICAgICAgICAgICAgYmFzZWZvbnQgKz0gIixCb2xkIjsNCisgICAgICAgIH0gZWxzZSBpZiAocEZvbnQtPklzSXRhbGljKCkpIHsNCisgICAgICAgICAgICBiYXNlZm9udCArPSAiLEl0YWxpYyI7DQorICAgICAgICB9DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TmFtZSgiU3VidHlwZSIsICJUcnVlVHlwZSIpOw0KKyAgICAgICAgcEJhc2VEaWN0LT5TZXRBdE5hbWUoIkJhc2VGb250IiwgYmFzZWZvbnQpOw0KKyAgICAgICAgcEJhc2VEaWN0LT5TZXRBdE51bWJlcigiRmlyc3RDaGFyIiwgMzIpOw0KKyAgICAgICAgcEJhc2VEaWN0LT5TZXRBdE51bWJlcigiTGFzdENoYXIiLCAyNTUpOw0KKyAgICAgICAgcEJhc2VEaWN0LT5TZXRBdCgiV2lkdGhzIiwgcFdpZHRocyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmbGFncyB8PSBQREZGT05UX05PTlNZTUJPTElDOw0KKyAgICAgICAgcEZvbnREaWN0ID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGNtYXA7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBvcmRlcmluZzsNCisgICAgICAgIGludCBzdXBwbGVtZW50Ow0KKyAgICAgICAgQ1BERl9BcnJheSogcFdpZHRoQXJyYXkgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgIHN3aXRjaCAoY2hhcnNldCkgew0KKyAgICAgICAgICAgIGNhc2UgRlhGT05UX0NISU5FU0VCSUc1X0NIQVJTRVQ6DQorICAgICAgICAgICAgICAgIGNtYXAgPSBiVmVydCA/ICJFVGVubXMtQjUtViIgOiAiRVRlbm1zLUI1LUgiOw0KKyAgICAgICAgICAgICAgICBvcmRlcmluZyA9ICJDTlMxIjsNCisgICAgICAgICAgICAgICAgc3VwcGxlbWVudCA9IDQ7DQorICAgICAgICAgICAgICAgIHBXaWR0aEFycmF5LT5BZGRJbnRlZ2VyKDEpOw0KKyAgICAgICAgICAgICAgICBfSW5zZXJ0V2lkdGhBcnJheTEocEZvbnQsIHBFbmNvZGluZywgMHgyMCwgMHg3ZSwgcFdpZHRoQXJyYXkpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEZYRk9OVF9HQjIzMTJfQ0hBUlNFVDoNCisgICAgICAgICAgICAgICAgY21hcCA9IGJWZXJ0ID8gIkdCSy1FVUMtViIgOiAiR0JLLUVVQy1IIjsNCisgICAgICAgICAgICAgICAgb3JkZXJpbmcgPSAiR0IxIiwgc3VwcGxlbWVudCA9IDI7DQorICAgICAgICAgICAgICAgIHBXaWR0aEFycmF5LT5BZGRJbnRlZ2VyKDc3MTYpOw0KKyAgICAgICAgICAgICAgICBfSW5zZXJ0V2lkdGhBcnJheTEocEZvbnQsIHBFbmNvZGluZywgMHgyMCwgMHgyMCwgcFdpZHRoQXJyYXkpOw0KKyAgICAgICAgICAgICAgICBwV2lkdGhBcnJheS0+QWRkSW50ZWdlcig4MTQpOw0KKyAgICAgICAgICAgICAgICBfSW5zZXJ0V2lkdGhBcnJheTEocEZvbnQsIHBFbmNvZGluZywgMHgyMSwgMHg3ZSwgcFdpZHRoQXJyYXkpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEZYRk9OVF9IQU5HRVVMX0NIQVJTRVQ6DQorICAgICAgICAgICAgICAgIGNtYXAgPSBiVmVydCA/ICJLU0Ntcy1VSEMtViIgOiAiS1NDbXMtVUhDLUgiOw0KKyAgICAgICAgICAgICAgICBvcmRlcmluZyA9ICJLb3JlYTEiOw0KKyAgICAgICAgICAgICAgICBzdXBwbGVtZW50ID0gMjsNCisgICAgICAgICAgICAgICAgcFdpZHRoQXJyYXktPkFkZEludGVnZXIoMSk7DQorICAgICAgICAgICAgICAgIF9JbnNlcnRXaWR0aEFycmF5MShwRm9udCwgcEVuY29kaW5nLCAweDIwLCAweDdlLCBwV2lkdGhBcnJheSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhGT05UX1NISUZUSklTX0NIQVJTRVQ6DQorICAgICAgICAgICAgICAgIGNtYXAgPSBiVmVydCA/ICI5MG1zLVJLU0otViIgOiAiOTBtcy1SS1NKLUgiOw0KKyAgICAgICAgICAgICAgICBvcmRlcmluZyA9ICJKYXBhbjEiOw0KKyAgICAgICAgICAgICAgICBzdXBwbGVtZW50ID0gNTsNCisgICAgICAgICAgICAgICAgcFdpZHRoQXJyYXktPkFkZEludGVnZXIoMjMxKTsNCisgICAgICAgICAgICAgICAgX0luc2VydFdpZHRoQXJyYXkxKHBGb250LCBwRW5jb2RpbmcsIDB4MjAsIDB4N2QsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICAgICAgcFdpZHRoQXJyYXktPkFkZEludGVnZXIoMzI2KTsNCisgICAgICAgICAgICAgICAgX0luc2VydFdpZHRoQXJyYXkxKHBGb250LCBwRW5jb2RpbmcsIDB4YTAsIDB4YTAsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICAgICAgcFdpZHRoQXJyYXktPkFkZEludGVnZXIoMzI3KTsNCisgICAgICAgICAgICAgICAgX0luc2VydFdpZHRoQXJyYXkxKHBGb250LCBwRW5jb2RpbmcsIDB4YTEsIDB4ZGYsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICAgICAgcFdpZHRoQXJyYXktPkFkZEludGVnZXIoNjMxKTsNCisgICAgICAgICAgICAgICAgX0luc2VydFdpZHRoQXJyYXkxKHBGb250LCBwRW5jb2RpbmcsIDB4N2UsIDB4N2UsIHBXaWR0aEFycmF5KTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0TmFtZSgiU3VidHlwZSIsICJUeXBlMCIpOw0KKyAgICAgICAgcEJhc2VEaWN0LT5TZXRBdE5hbWUoIkJhc2VGb250IiwgYmFzZWZvbnQpOw0KKyAgICAgICAgcEJhc2VEaWN0LT5TZXRBdE5hbWUoIkVuY29kaW5nIiwgY21hcCk7DQorICAgICAgICBwRm9udERpY3QtPlNldEF0KCJXIiwgcFdpZHRoQXJyYXkpOw0KKyAgICAgICAgcEZvbnREaWN0LT5TZXRBdE5hbWUoIlR5cGUiLCAiRm9udCIpOw0KKyAgICAgICAgcEZvbnREaWN0LT5TZXRBdE5hbWUoIlN1YnR5cGUiLCAiQ0lERm9udFR5cGUyIik7DQorICAgICAgICBwRm9udERpY3QtPlNldEF0TmFtZSgiQmFzZUZvbnQiLCBiYXNlZm9udCk7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBDSURTeXNJbmZvID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgICAgIHBDSURTeXNJbmZvLT5TZXRBdFN0cmluZygiUmVnaXN0cnkiLCAiQWRvYmUiKTsNCisgICAgICAgIHBDSURTeXNJbmZvLT5TZXRBdFN0cmluZygiT3JkZXJpbmciLCBvcmRlcmluZyk7DQorICAgICAgICBwQ0lEU3lzSW5mby0+U2V0QXRJbnRlZ2VyKCJTdXBwbGVtZW50Iiwgc3VwcGxlbWVudCk7DQorICAgICAgICBwRm9udERpY3QtPlNldEF0KCJDSURTeXN0ZW1JbmZvIiwgcENJRFN5c0luZm8pOw0KKyAgICAgICAgQ1BERl9BcnJheSogcEFycmF5ID0gRlhfTkVXIENQREZfQXJyYXk7DQorICAgICAgICBwQmFzZURpY3QtPlNldEF0KCJEZXNjZW5kYW50Rm9udHMiLCBwQXJyYXkpOw0KKyAgICAgICAgQWRkSW5kaXJlY3RPYmplY3QocEZvbnREaWN0KTsNCisgICAgICAgIHBBcnJheS0+QWRkUmVmZXJlbmNlKHRoaXMsIHBGb250RGljdCk7DQorICAgIH0NCisgICAgQWRkSW5kaXJlY3RPYmplY3QocEJhc2VEaWN0KTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udERlc2MgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICBwRm9udERlc2MtPlNldEF0TmFtZSgiVHlwZSIsICJGb250RGVzY3JpcHRvciIpOw0KKyAgICBwRm9udERlc2MtPlNldEF0TmFtZSgiRm9udE5hbWUiLCBiYXNlZm9udCk7DQorICAgIHBGb250RGVzYy0+U2V0QXRJbnRlZ2VyKCJGbGFncyIsIGZsYWdzKTsNCisgICAgcEZvbnREZXNjLT5TZXRBdEludGVnZXIoIkl0YWxpY0FuZ2xlIiwgcEZvbnQtPm1fcFN1YnN0Rm9udCA/IHBGb250LT5tX3BTdWJzdEZvbnQtPm1fSXRhbGljQW5nbGUgOiAwKTsNCisgICAgcEZvbnREZXNjLT5TZXRBdEludGVnZXIoIkFzY2VudCIsIHBGb250LT5HZXRBc2NlbnQoKSk7DQorICAgIHBGb250RGVzYy0+U2V0QXRJbnRlZ2VyKCJEZXNjZW50IiwgcEZvbnQtPkdldERlc2NlbnQoKSk7DQorICAgIEZYX1JFQ1QgYmJveDsNCisgICAgcEZvbnQtPkdldEJCb3goYmJveCk7DQorICAgIENQREZfQXJyYXkqIHBCQm94ID0gRlhfTkVXIENQREZfQXJyYXk7DQorICAgIHBCQm94LT5BZGRJbnRlZ2VyKGJib3gubGVmdCk7DQorICAgIHBCQm94LT5BZGRJbnRlZ2VyKGJib3guYm90dG9tKTsNCisgICAgcEJCb3gtPkFkZEludGVnZXIoYmJveC5yaWdodCk7DQorICAgIHBCQm94LT5BZGRJbnRlZ2VyKGJib3gudG9wKTsNCisgICAgcEZvbnREZXNjLT5TZXRBdCgiRm9udEJCb3giLCBwQkJveCk7DQorICAgIEZYX0lOVDMyIG5TdGVtViA9IDA7DQorICAgIGlmIChwRm9udC0+bV9wU3Vic3RGb250KSB7DQorICAgICAgICBuU3RlbVYgPSBwRm9udC0+bV9wU3Vic3RGb250LT5tX1dlaWdodCAvIDU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBzdGF0aWMgY29uc3QgRlhfQ0hBUiBzdGVtX2NoYXJzW10gPSB7J2knLCAnSScsICchJywgJzEnfTsNCisgICAgICAgIGNvbnN0IHNpemVfdCBjb3VudCA9IHNpemVvZihzdGVtX2NoYXJzKSAvIHNpemVvZihzdGVtX2NoYXJzWzBdKTsNCisgICAgICAgIEZYX0RXT1JEIGdseXBoID0gcEVuY29kaW5nLT5HbHlwaEZyb21DaGFyQ29kZShzdGVtX2NoYXJzWzBdKTsNCisgICAgICAgIG5TdGVtViA9IHBGb250LT5HZXRHbHlwaFdpZHRoKGdseXBoKTsNCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgY291bnQ7IGkrKykgew0KKyAgICAgICAgICAgIGdseXBoID0gcEVuY29kaW5nLT5HbHlwaEZyb21DaGFyQ29kZShzdGVtX2NoYXJzW2ldKTsNCisgICAgICAgICAgICBpbnQgd2lkdGggPSBwRm9udC0+R2V0R2x5cGhXaWR0aChnbHlwaCk7DQorICAgICAgICAgICAgaWYgKHdpZHRoID4gMCAmJiB3aWR0aCA8IG5TdGVtVikgew0KKyAgICAgICAgICAgICAgICBuU3RlbVYgPSB3aWR0aDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBFbmNvZGluZykgew0KKyAgICAgICAgZGVsZXRlIHBFbmNvZGluZzsNCisgICAgfQ0KKyAgICBwRm9udERlc2MtPlNldEF0SW50ZWdlcigiU3RlbVYiLCBuU3RlbVYpOw0KKyAgICBBZGRJbmRpcmVjdE9iamVjdChwRm9udERlc2MpOw0KKyAgICBwRm9udERpY3QtPlNldEF0UmVmZXJlbmNlKCJGb250RGVzY3JpcHRvciIsIHRoaXMsIHBGb250RGVzYyk7DQorICAgIHJldHVybiBMb2FkRm9udChwQmFzZURpY3QpOw0KK30NCitzdGF0aWMgQ1BERl9TdHJlYW0qIEdldEZvcm1TdHJlYW0oQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9PYmplY3QqIHBSZXNPYmopDQorew0KKyAgICBpZiAocFJlc09iai0+R2V0VHlwZSgpICE9IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfUmVmZXJlbmNlKiBwUmVmID0gKENQREZfUmVmZXJlbmNlKilwUmVzT2JqOw0KKyAgICBGWF9CT09MIGJGb3JtOw0KKyAgICBpZiAocERvYy0+SXNGb3JtU3RyZWFtKHBSZWYtPkdldFJlZk9iak51bSgpLCBiRm9ybSkgJiYgIWJGb3JtKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwUmVzT2JqID0gcFJlZi0+R2V0RGlyZWN0KCk7DQorICAgIGlmIChwUmVzT2JqLT5HZXRUeXBlKCkgIT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9TdHJlYW0qIHBYT2JqZWN0ID0gKENQREZfU3RyZWFtKilwUmVzT2JqOw0KKyAgICBpZiAocFhPYmplY3QtPkdldERpY3QoKS0+R2V0U3RyaW5nKEZYX0JTVFJDKCJTdWJ0eXBlIikpICE9IEZYX0JTVFJDKCJGb3JtIikpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBwWE9iamVjdDsNCit9DQorc3RhdGljIGludCBJbnNlcnREZWxldGVQREZQYWdlKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfRGljdGlvbmFyeSogcFBhZ2VzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgblBhZ2VzVG9HbywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZSwgRlhfQk9PTCBiSW5zZXJ0LCBDRlhfUHRyQXJyYXkmIHN0YWNrTGlzdCkNCit7DQorICAgIENQREZfQXJyYXkqIHBLaWRMaXN0ID0gcFBhZ2VzLT5HZXRBcnJheSgiS2lkcyIpOw0KKyAgICBpZiAoIXBLaWRMaXN0KSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaW50IG5LaWRzID0gcEtpZExpc3QtPkdldENvdW50KCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbktpZHM7IGkgKyspIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcEtpZCA9IHBLaWRMaXN0LT5HZXREaWN0KGkpOw0KKyAgICAgICAgaWYgKHBLaWQtPkdldFN0cmluZygiVHlwZSIpID09IEZYX0JTVFJDKCJQYWdlIikpIHsNCisgICAgICAgICAgICBpZiAoblBhZ2VzVG9HbyA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGlmIChiSW5zZXJ0KSB7DQorICAgICAgICAgICAgICAgICAgICBwS2lkTGlzdC0+SW5zZXJ0QXQoaSwgQ1BERl9SZWZlcmVuY2U6OkNyZWF0ZShwRG9jLCBwUGFnZS0+R2V0T2JqTnVtKCkpKTsNCisgICAgICAgICAgICAgICAgICAgIHBQYWdlLT5TZXRBdFJlZmVyZW5jZSgiUGFyZW50IiwgcERvYywgcFBhZ2VzLT5HZXRPYmpOdW0oKSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBwS2lkTGlzdC0+UmVtb3ZlQXQoaSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcFBhZ2VzLT5TZXRBdEludGVnZXIoIkNvdW50IiwgcFBhZ2VzLT5HZXRJbnRlZ2VyKCJDb3VudCIpICsgKGJJbnNlcnQgPyAxIDogLTEpKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG5QYWdlc1RvR28gLS07DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGludCBuUGFnZXMgPSBwS2lkLT5HZXRJbnRlZ2VyKCJDb3VudCIpOw0KKyAgICAgICAgICAgIGlmIChuUGFnZXNUb0dvIDwgblBhZ2VzKSB7DQorICAgICAgICAgICAgICAgIGludCBzdGFja0NvdW50ID0gc3RhY2tMaXN0LkdldFNpemUoKTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzdGFja0NvdW50OyArK2opIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwS2lkID09IHN0YWNrTGlzdFtqXSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBzdGFja0xpc3QuQWRkKHBLaWQpOw0KKyAgICAgICAgICAgICAgICBpZiAoSW5zZXJ0RGVsZXRlUERGUGFnZShwRG9jLCBwS2lkLCBuUGFnZXNUb0dvLCBwUGFnZSwgYkluc2VydCwgc3RhY2tMaXN0KSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBzdGFja0xpc3QuUmVtb3ZlQXQoc3RhY2tDb3VudCk7DQorICAgICAgICAgICAgICAgIHBQYWdlcy0+U2V0QXRJbnRlZ2VyKCJDb3VudCIsIHBQYWdlcy0+R2V0SW50ZWdlcigiQ291bnQiKSArIChiSW5zZXJ0ID8gMSA6IC0xKSk7DQorICAgICAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBuUGFnZXNUb0dvIC09IG5QYWdlczsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorc3RhdGljIGludCBJbnNlcnROZXdQYWdlKENQREZfRG9jdW1lbnQqIHBEb2MsIGludCBpUGFnZSwgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZURpY3QsIENGWF9EV29yZEFycmF5ICZwYWdlTGlzdCkNCit7DQorICAgIENQREZfRGljdGlvbmFyeSogcFJvb3QgPSBwRG9jLT5HZXRSb290KCk7DQorICAgIGlmICghcFJvb3QpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBQYWdlcyA9IHBSb290LT5HZXREaWN0KEZYX0JTVFJDKCJQYWdlcyIpKTsNCisgICAgaWYgKCFwUGFnZXMpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpbnQgblBhZ2VzID0gcERvYy0+R2V0UGFnZUNvdW50KCk7DQorICAgIGlmIChpUGFnZSA8IDAgfHwgaVBhZ2UgPiBuUGFnZXMpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAoaVBhZ2UgPT0gblBhZ2VzKSB7DQorICAgICAgICBDUERGX0FycmF5KiBwUGFnZXNMaXN0ID0gcFBhZ2VzLT5HZXRBcnJheShGWF9CU1RSQygiS2lkcyIpKTsNCisgICAgICAgIGlmICghcFBhZ2VzTGlzdCkgew0KKyAgICAgICAgICAgIHBQYWdlc0xpc3QgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgICAgICBwUGFnZXMtPlNldEF0KEZYX0JTVFJDKCJLaWRzIiksIHBQYWdlc0xpc3QpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFBhZ2VzTGlzdC0+QWRkKHBQYWdlRGljdCwgcERvYyk7DQorICAgICAgICBwUGFnZXMtPlNldEF0SW50ZWdlcihGWF9CU1RSQygiQ291bnQiKSwgblBhZ2VzICsgMSk7DQorICAgICAgICBwUGFnZURpY3QtPlNldEF0UmVmZXJlbmNlKEZYX0JTVFJDKCJQYXJlbnQiKSwgcERvYywgcFBhZ2VzLT5HZXRPYmpOdW0oKSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDRlhfUHRyQXJyYXkgc3RhY2s7DQorICAgICAgICBzdGFjay5BZGQocFBhZ2VzKTsNCisgICAgICAgIGlmIChJbnNlcnREZWxldGVQREZQYWdlKHBEb2MsIHBQYWdlcywgaVBhZ2UsIHBQYWdlRGljdCwgVFJVRSwgc3RhY2spIDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBwYWdlTGlzdC5JbnNlcnRBdChpUGFnZSwgcFBhZ2VEaWN0LT5HZXRPYmpOdW0oKSk7DQorICAgIHJldHVybiBpUGFnZTsNCit9DQorQ1BERl9EaWN0aW9uYXJ5KiBDUERGX0RvY3VtZW50OjpDcmVhdGVOZXdQYWdlKGludCBpUGFnZSkNCit7DQorICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICBwRGljdC0+U2V0QXROYW1lKCJUeXBlIiwgIlBhZ2UiKTsNCisgICAgRlhfRFdPUkQgZHdPYmpOdW0gPSBBZGRJbmRpcmVjdE9iamVjdChwRGljdCk7DQorICAgIGlmIChJbnNlcnROZXdQYWdlKHRoaXMsIGlQYWdlLCBwRGljdCwgbV9QYWdlTGlzdCkgPCAwKSB7DQorICAgICAgICBSZWxlYXNlSW5kaXJlY3RPYmplY3QoZHdPYmpOdW0pOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBEaWN0Ow0KK30NCitpbnQgX1BERl9HZXRTdGFuZGFyZEZvbnROYW1lKENGWF9CeXRlU3RyaW5nJiBuYW1lKTsNCitDUERGX0ZvbnQqIENQREZfRG9jdW1lbnQ6OkFkZFN0YW5kYXJkRm9udChGWF9MUENTVFIgZm9udCwgQ1BERl9Gb250RW5jb2RpbmcqIHBFbmNvZGluZykNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIG5hbWUoZm9udCwgLTEpOw0KKyAgICBpZiAoX1BERl9HZXRTdGFuZGFyZEZvbnROYW1lKG5hbWUpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIEdldFBhZ2VEYXRhKCktPkdldFN0YW5kYXJkRm9udChuYW1lLCBwRW5jb2RpbmcpOw0KK30NCit2b2lkIENQREZfRG9jdW1lbnQ6OkRlbGV0ZVBhZ2UoaW50IGlQYWdlKQ0KK3sNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUm9vdCA9IEdldFJvb3QoKTsNCisgICAgaWYgKHBSb290ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBQYWdlcyA9IHBSb290LT5HZXREaWN0KCJQYWdlcyIpOw0KKyAgICBpZiAocFBhZ2VzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgblBhZ2VzID0gcFBhZ2VzLT5HZXRJbnRlZ2VyKCJDb3VudCIpOw0KKyAgICBpZiAoaVBhZ2UgPCAwIHx8IGlQYWdlID49IG5QYWdlcykgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9QdHJBcnJheSBzdGFjazsNCisgICAgc3RhY2suQWRkKHBQYWdlcyk7DQorICAgIGlmIChJbnNlcnREZWxldGVQREZQYWdlKHRoaXMsIHBQYWdlcywgaVBhZ2UsIE5VTEwsIEZBTFNFLCBzdGFjaykgPCAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9QYWdlTGlzdC5SZW1vdmVBdChpUGFnZSk7DQorfQ0KK0NQREZfT2JqZWN0KiBGUERGQVBJX0dldFBhZ2VBdHRyKENQREZfRGljdGlvbmFyeSogcFBhZ2VEaWN0LCBGWF9CU1RSIG5hbWUpOw0KK3ZvaWQgRlBERkFQSV9GbGF0UGFnZUF0dHIoQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZURpY3QsIEZYX0JTVFIgbmFtZSkNCit7DQorICAgIGlmIChwUGFnZURpY3QtPktleUV4aXN0KG5hbWUpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBPYmogPSBGUERGQVBJX0dldFBhZ2VBdHRyKHBQYWdlRGljdCwgbmFtZSk7DQorICAgIGlmIChwT2JqKSB7DQorICAgICAgICBwUGFnZURpY3QtPlNldEF0KG5hbWUsIHBPYmotPkNsb25lKCkpOw0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9lZGl0L2ZwZGZfZWRpdF9pbWFnZS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZWRpdC9mcGRmX2VkaXRfaW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNTA2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZWRpdC9mcGRmX2VkaXRfaW1hZ2UuY3BwCkBAIC0wLDAgKzEsMzc0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3JlbmRlci5oIg0KKyNpbmNsdWRlICIuLi9mcGRmX3BhZ2UvcGFnZWludC5oIg0KKyNpbmNsdWRlICIuLi9mcGRmX3JlbmRlci9yZW5kZXJfaW50LmgiDQorQ1BERl9EaWN0aW9uYXJ5KiBDUERGX0ltYWdlOjpJbml0SlBFRyhGWF9MUEJZVEUgcERhdGEsIEZYX0RXT1JEIHNpemUpDQorew0KKyAgICBGWF9JTlQzMiB3aWR0aCwgaGVpZ2h0LCBjb2xvcl90cmFucywgbnVtX2NvbXBzLCBiaXRzOw0KKyAgICBpZiAoIUNQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SnBlZ01vZHVsZSgpLT4NCisgICAgICAgICAgICBMb2FkSW5mbyhwRGF0YSwgc2l6ZSwgd2lkdGgsIGhlaWdodCwgbnVtX2NvbXBzLCBiaXRzLCBjb2xvcl90cmFucykpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICBwRGljdC0+U2V0QXROYW1lKCJUeXBlIiwgIlhPYmplY3QiKTsNCisgICAgcERpY3QtPlNldEF0TmFtZSgiU3VidHlwZSIsICJJbWFnZSIpOw0KKyAgICBwRGljdC0+U2V0QXRJbnRlZ2VyKCJXaWR0aCIsIHdpZHRoKTsNCisgICAgcERpY3QtPlNldEF0SW50ZWdlcigiSGVpZ2h0IiwgaGVpZ2h0KTsNCisgICAgRlhfTFBDU1RSIGNzbmFtZSA9IE5VTEw7DQorICAgIGlmIChudW1fY29tcHMgPT0gMSkgew0KKyAgICAgICAgY3NuYW1lID0gIkRldmljZUdyYXkiOw0KKyAgICB9IGVsc2UgaWYgKG51bV9jb21wcyA9PSAzKSB7DQorICAgICAgICBjc25hbWUgPSAiRGV2aWNlUkdCIjsNCisgICAgfSBlbHNlIGlmIChudW1fY29tcHMgPT0gNCkgew0KKyAgICAgICAgY3NuYW1lID0gIkRldmljZUNNWUsiOw0KKyAgICAgICAgQ1BERl9BcnJheSogcERlY29kZSA9IENQREZfQXJyYXk6OkNyZWF0ZSgpOw0KKyAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCA0OyBuICsrKSB7DQorICAgICAgICAgICAgcERlY29kZS0+QWRkSW50ZWdlcigxKTsNCisgICAgICAgICAgICBwRGVjb2RlLT5BZGRJbnRlZ2VyKDApOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcERpY3QtPlNldEF0KEZYX0JTVFJDKCJEZWNvZGUiKSwgcERlY29kZSk7DQorICAgIH0NCisgICAgcERpY3QtPlNldEF0TmFtZSgiQ29sb3JTcGFjZSIsIGNzbmFtZSk7DQorICAgIHBEaWN0LT5TZXRBdEludGVnZXIoIkJpdHNQZXJDb21wb25lbnQiLCBiaXRzKTsNCisgICAgcERpY3QtPlNldEF0TmFtZSgiRmlsdGVyIiwgIkRDVERlY29kZSIpOw0KKyAgICBpZiAoIWNvbG9yX3RyYW5zKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBQYXJtcyA9IEZYX05FVyBDUERGX0RpY3Rpb25hcnk7DQorICAgICAgICBwRGljdC0+U2V0QXQoIkRlY29kZVBhcm1zIiwgcFBhcm1zKTsNCisgICAgICAgIHBQYXJtcy0+U2V0QXRJbnRlZ2VyKCJDb2xvclRyYW5zZm9ybSIsIDApOw0KKyAgICB9DQorICAgIG1fYklzTWFzayA9IEZBTFNFOw0KKyAgICBtX1dpZHRoID0gd2lkdGg7DQorICAgIG1fSGVpZ2h0ID0gaGVpZ2h0Ow0KKyAgICBpZiAobV9wU3RyZWFtID09IE5VTEwpIHsNCisgICAgICAgIG1fcFN0cmVhbSA9IEZYX05FVyBDUERGX1N0cmVhbShOVUxMLCAwLCBOVUxMKTsNCisgICAgfQ0KKyAgICByZXR1cm4gcERpY3Q7DQorfQ0KK3ZvaWQgQ1BERl9JbWFnZTo6U2V0SnBlZ0ltYWdlKEZYX0xQQllURSBwRGF0YSwgRlhfRFdPUkQgc2l6ZSkNCit7DQorICAgIENQREZfRGljdGlvbmFyeSAqcERpY3QgPSBJbml0SlBFRyhwRGF0YSwgc2l6ZSk7DQorICAgIGlmICghcERpY3QpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BTdHJlYW0tPkluaXRTdHJlYW0ocERhdGEsIHNpemUsIHBEaWN0KTsNCit9DQordm9pZCBDUERGX0ltYWdlOjpTZXRKcGVnSW1hZ2UoSUZYX0ZpbGVSZWFkICpwRmlsZSkNCit7DQorICAgIEZYX0RXT1JEIHNpemUgPSAoRlhfRFdPUkQpcEZpbGUtPkdldFNpemUoKTsNCisgICAgaWYgKCFzaXplKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfRFdPUkQgZHdFc3RpbWF0ZVNpemUgPSBzaXplOw0KKyAgICBpZiAoZHdFc3RpbWF0ZVNpemUgPiA4MTkyKSB7DQorICAgICAgICBkd0VzdGltYXRlU2l6ZSA9IDgxOTI7DQorICAgIH0NCisgICAgRlhfTFBCWVRFIHBEYXRhID0gRlhfQWxsb2MoRlhfQllURSwgZHdFc3RpbWF0ZVNpemUpOw0KKyAgICBpZiAoIXBEYXRhKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcEZpbGUtPlJlYWRCbG9jayhwRGF0YSwgMCwgZHdFc3RpbWF0ZVNpemUpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkgKnBEaWN0ID0gSW5pdEpQRUcocERhdGEsIGR3RXN0aW1hdGVTaXplKTsNCisgICAgRlhfRnJlZShwRGF0YSk7DQorICAgIGlmICghcERpY3QgJiYgc2l6ZSA+IGR3RXN0aW1hdGVTaXplKSB7DQorICAgICAgICBwRGF0YSA9IEZYX0FsbG9jKEZYX0JZVEUsIHNpemUpOw0KKyAgICAgICAgaWYgKCFwRGF0YSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHBGaWxlLT5SZWFkQmxvY2socERhdGEsIDAsIHNpemUpOw0KKyAgICAgICAgcERpY3QgPSBJbml0SlBFRyhwRGF0YSwgc2l6ZSk7DQorICAgICAgICBGWF9GcmVlKHBEYXRhKTsNCisgICAgfQ0KKyAgICBpZiAoIXBEaWN0KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wU3RyZWFtLT5Jbml0U3RyZWFtKHBGaWxlLCBwRGljdCk7DQorfQ0KK3ZvaWQgX0RDVEVuY29kZUJpdG1hcChDUERGX0RpY3Rpb25hcnkgKnBCaXRtYXBEaWN0LCBjb25zdCBDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBxdWFsaXR5LCBGWF9MUEJZVEUgJmJ1ZiwgRlhfU1RSU0laRSAmc2l6ZSkNCit7DQorfQ0KK3ZvaWQgX0pCSUcyRW5jb2RlQml0bWFwKENQREZfRGljdGlvbmFyeSAqcEJpdG1hcERpY3QsIGNvbnN0IENGWF9ESUJpdG1hcCAqcEJpdG1hcCwgQ1BERl9Eb2N1bWVudCAqcERvYywgRlhfTFBCWVRFICZidWYsIEZYX1NUUlNJWkUgJnNpemUsIEZYX0JPT0wgYkxvc3NMZXNzKQ0KK3sNCit9DQordm9pZCBDUERGX0ltYWdlOjpTZXRJbWFnZShjb25zdCBDRlhfRElCaXRtYXAqIHBCaXRtYXAsIEZYX0lOVDMyIGlDb21wcmVzcywgSUZYX0ZpbGVXcml0ZSAqcEZpbGVXcml0ZSwgSUZYX0ZpbGVSZWFkICpwRmlsZVJlYWQsIGNvbnN0IENGWF9ESUJpdG1hcCogcE1hc2ssIGNvbnN0IENQREZfSW1hZ2VTZXRQYXJhbSogcFBhcmFtKQ0KK3sNCisgICAgRlhfSU5UMzIgQml0bWFwV2lkdGggPSBwQml0bWFwLT5HZXRXaWR0aCgpOw0KKyAgICBGWF9JTlQzMiBCaXRtYXBIZWlnaHQgPSBwQml0bWFwLT5HZXRIZWlnaHQoKTsNCisgICAgaWYgKEJpdG1hcFdpZHRoIDwgMSB8fCBCaXRtYXBIZWlnaHQgPCAxKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfTFBCWVRFIHNyY19idWYgPSBwQml0bWFwLT5HZXRCdWZmZXIoKTsNCisgICAgRlhfSU5UMzIgc3JjX3BpdGNoID0gcEJpdG1hcC0+R2V0UGl0Y2goKTsNCisgICAgRlhfSU5UMzIgYnBwID0gcEJpdG1hcC0+R2V0QlBQKCk7DQorICAgIEZYX0JPT0wgYlVzZU1hdHRlID0gcFBhcmFtICYmIHBQYXJhbS0+cE1hdHRlQ29sb3IgJiYgKHBCaXRtYXAtPkdldEZvcm1hdCgpID09IEZYRElCX0FyZ2IpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgcERpY3QtPlNldEF0TmFtZShGWF9CU1RSQygiVHlwZSIpLCBGWF9CU1RSQygiWE9iamVjdCIpKTsNCisgICAgcERpY3QtPlNldEF0TmFtZShGWF9CU1RSQygiU3VidHlwZSIpLCBGWF9CU1RSQygiSW1hZ2UiKSk7DQorICAgIHBEaWN0LT5TZXRBdEludGVnZXIoRlhfQlNUUkMoIldpZHRoIiksIEJpdG1hcFdpZHRoKTsNCisgICAgcERpY3QtPlNldEF0SW50ZWdlcihGWF9CU1RSQygiSGVpZ2h0IiksIEJpdG1hcEhlaWdodCk7DQorICAgIEZYX0xQQllURSBkZXN0X2J1ZiA9IE5VTEw7DQorICAgIEZYX1NUUlNJWkUgZGVzdF9waXRjaCA9IDAsIGRlc3Rfc2l6ZSA9IDAsIG9wVHlwZSA9IC0xOw0KKyAgICBpZiAoYnBwID09IDEpIHsNCisgICAgICAgIEZYX0lOVDMyIHJlc2V0X2EgPSAwLCByZXNldF9yID0gMCwgcmVzZXRfZyA9IDAsIHJlc2V0X2IgPSAwOw0KKyAgICAgICAgRlhfSU5UMzIgc2V0X2EgPSAwLCBzZXRfciA9IDAsIHNldF9nID0gMCwgc2V0X2IgPSAwOw0KKyAgICAgICAgaWYgKCFwQml0bWFwLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICAgICAgQXJnYkRlY29kZShwQml0bWFwLT5HZXRQYWxldHRlQXJnYigwKSwgcmVzZXRfYSwgcmVzZXRfciwgcmVzZXRfZywgcmVzZXRfYik7DQorICAgICAgICAgICAgQXJnYkRlY29kZShwQml0bWFwLT5HZXRQYWxldHRlQXJnYigxKSwgc2V0X2EsIHNldF9yLCBzZXRfZywgc2V0X2IpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHNldF9hID09IDAgfHwgcmVzZXRfYSA9PSAwKSB7DQorICAgICAgICAgICAgcERpY3QtPlNldEF0KEZYX0JTVFJDKCJJbWFnZU1hc2siKSwgRlhfTkVXIENQREZfQm9vbGVhbihUUlVFKSk7DQorICAgICAgICAgICAgaWYgKHJlc2V0X2EgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgICAgICAgICAgcEFycmF5LT5BZGRJbnRlZ2VyKDEpOw0KKyAgICAgICAgICAgICAgICBwQXJyYXktPkFkZEludGVnZXIoMCk7DQorICAgICAgICAgICAgICAgIHBEaWN0LT5TZXRBdChGWF9CU1RSQygiRGVjb2RlIiksIHBBcnJheSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBDUERGX0FycmF5KiBwQ1MgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgICAgICBwQ1MtPkFkZE5hbWUoRlhfQlNUUkMoIkluZGV4ZWQiKSk7DQorICAgICAgICAgICAgcENTLT5BZGROYW1lKEZYX0JTVFJDKCJEZXZpY2VSR0IiKSk7DQorICAgICAgICAgICAgcENTLT5BZGRJbnRlZ2VyKDEpOw0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGN0Ow0KKyAgICAgICAgICAgIEZYX0xQU1RSIHBCdWYgPSBjdC5HZXRCdWZmZXIoNik7DQorICAgICAgICAgICAgcEJ1ZlswXSA9IChGWF9DSEFSKXJlc2V0X3I7DQorICAgICAgICAgICAgcEJ1ZlsxXSA9IChGWF9DSEFSKXJlc2V0X2c7DQorICAgICAgICAgICAgcEJ1ZlsyXSA9IChGWF9DSEFSKXJlc2V0X2I7DQorICAgICAgICAgICAgcEJ1ZlszXSA9IChGWF9DSEFSKXNldF9yOw0KKyAgICAgICAgICAgIHBCdWZbNF0gPSAoRlhfQ0hBUilzZXRfZzsNCisgICAgICAgICAgICBwQnVmWzVdID0gKEZYX0NIQVIpc2V0X2I7DQorICAgICAgICAgICAgY3QuUmVsZWFzZUJ1ZmZlcig2KTsNCisgICAgICAgICAgICBwQ1MtPkFkZChDUERGX1N0cmluZzo6Q3JlYXRlKGN0LCBUUlVFKSk7DQorICAgICAgICAgICAgcERpY3QtPlNldEF0KEZYX0JTVFJDKCJDb2xvclNwYWNlIiksIHBDUyk7DQorICAgICAgICB9DQorICAgICAgICBwRGljdC0+U2V0QXRJbnRlZ2VyKEZYX0JTVFJDKCJCaXRzUGVyQ29tcG9uZW50IiksIDEpOw0KKyAgICAgICAgZGVzdF9waXRjaCA9IChCaXRtYXBXaWR0aCArIDcpIC8gODsNCisgICAgICAgIGlmICgoaUNvbXByZXNzICYgMHgwMykgPT0gUERGX0lNQUdFX05PX0NPTVBSRVNTKSB7DQorICAgICAgICAgICAgb3BUeXBlID0gMTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgb3BUeXBlID0gMDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChicHAgPT0gOCkgew0KKyAgICAgICAgRlhfSU5UMzIgaVBhbGV0dGUgPSBwQml0bWFwLT5HZXRQYWxldHRlU2l6ZSgpOw0KKyAgICAgICAgaWYgKGlQYWxldHRlID4gMCkgew0KKyAgICAgICAgICAgIENQREZfQXJyYXkqIHBDUyA9IEZYX05FVyBDUERGX0FycmF5Ow0KKyAgICAgICAgICAgIG1fcERvY3VtZW50LT5BZGRJbmRpcmVjdE9iamVjdChwQ1MpOw0KKyAgICAgICAgICAgIHBDUy0+QWRkTmFtZShGWF9CU1RSQygiSW5kZXhlZCIpKTsNCisgICAgICAgICAgICBwQ1MtPkFkZE5hbWUoRlhfQlNUUkMoIkRldmljZVJHQiIpKTsNCisgICAgICAgICAgICBwQ1MtPkFkZEludGVnZXIoaVBhbGV0dGUgLSAxKTsNCisgICAgICAgICAgICBGWF9MUEJZVEUgcENvbG9yVGFibGUgPSBGWF9BbGxvYyhGWF9CWVRFLCBpUGFsZXR0ZSAqIDMpOw0KKyAgICAgICAgICAgIEZYX0xQQllURSBwdHIgPSBwQ29sb3JUYWJsZTsNCisgICAgICAgICAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgaVBhbGV0dGU7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgYXJnYiA9IHBCaXRtYXAtPkdldFBhbGV0dGVBcmdiKGkpOw0KKyAgICAgICAgICAgICAgICBwdHJbMF0gPSAoRlhfQllURSkoYXJnYiA+PiAxNik7DQorICAgICAgICAgICAgICAgIHB0clsxXSA9IChGWF9CWVRFKShhcmdiID4+IDgpOw0KKyAgICAgICAgICAgICAgICBwdHJbMl0gPSAoRlhfQllURSlhcmdiOw0KKyAgICAgICAgICAgICAgICBwdHIgKz0gMzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ1BERl9TdHJlYW0gKnBDVFMgPSBDUERGX1N0cmVhbTo6Q3JlYXRlKHBDb2xvclRhYmxlLCBpUGFsZXR0ZSAqIDMsIENQREZfRGljdGlvbmFyeTo6Q3JlYXRlKCkpOw0KKyAgICAgICAgICAgIG1fcERvY3VtZW50LT5BZGRJbmRpcmVjdE9iamVjdChwQ1RTKTsNCisgICAgICAgICAgICBwQ1MtPkFkZFJlZmVyZW5jZShtX3BEb2N1bWVudCwgcENUUyk7DQorICAgICAgICAgICAgcERpY3QtPlNldEF0UmVmZXJlbmNlKEZYX0JTVFJDKCJDb2xvclNwYWNlIiksIG1fcERvY3VtZW50LCBwQ1MpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwRGljdC0+U2V0QXROYW1lKEZYX0JTVFJDKCJDb2xvclNwYWNlIiksIEZYX0JTVFJDKCJEZXZpY2VHcmF5IikpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcERpY3QtPlNldEF0SW50ZWdlcihGWF9CU1RSQygiQml0c1BlckNvbXBvbmVudCIpLCA4KTsNCisgICAgICAgIGlmICgoaUNvbXByZXNzICYgMHgwMykgPT0gUERGX0lNQUdFX05PX0NPTVBSRVNTKSB7DQorICAgICAgICAgICAgZGVzdF9waXRjaCA9IEJpdG1hcFdpZHRoOw0KKyAgICAgICAgICAgIG9wVHlwZSA9IDE7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG9wVHlwZSA9IDA7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwRGljdC0+U2V0QXROYW1lKEZYX0JTVFJDKCJDb2xvclNwYWNlIiksIEZYX0JTVFJDKCJEZXZpY2VSR0IiKSk7DQorICAgICAgICBwRGljdC0+U2V0QXRJbnRlZ2VyKEZYX0JTVFJDKCJCaXRzUGVyQ29tcG9uZW50IiksIDgpOw0KKyAgICAgICAgaWYgKChpQ29tcHJlc3MgJiAweDAzKSA9PSBQREZfSU1BR0VfTk9fQ09NUFJFU1MpIHsNCisgICAgICAgICAgICBkZXN0X3BpdGNoID0gQml0bWFwV2lkdGggKiAzOw0KKyAgICAgICAgICAgIG9wVHlwZSA9IDI7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG9wVHlwZSA9IDA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgY29uc3QgQ0ZYX0RJQml0bWFwKiBwTWFza0JpdG1hcCA9IE5VTEw7DQorICAgIGlmIChwQml0bWFwLT5IYXNBbHBoYSgpKSB7DQorICAgICAgICBwTWFza0JpdG1hcCA9IHBCaXRtYXAtPkdldEFscGhhTWFzaygpOw0KKyAgICB9DQorICAgIGlmICghcE1hc2tCaXRtYXAgJiYgcE1hc2spIHsNCisgICAgICAgIEZYRElCX0Zvcm1hdCBtYXNrRm9ybWF0ID0gcE1hc2stPkdldEZvcm1hdCgpOw0KKyAgICAgICAgaWYgKG1hc2tGb3JtYXQgPT0gRlhESUJfMWJwcE1hc2sgfHwgbWFza0Zvcm1hdCA9PSBGWERJQl84YnBwTWFzaykgew0KKyAgICAgICAgICAgIHBNYXNrQml0bWFwID0gcE1hc2s7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBNYXNrQml0bWFwKSB7DQorICAgICAgICBGWF9JTlQzMiBtYXNrV2lkdGggPSBwTWFza0JpdG1hcC0+R2V0V2lkdGgoKTsNCisgICAgICAgIEZYX0lOVDMyIG1hc2tIZWlnaHQgPSBwTWFza0JpdG1hcC0+R2V0SGVpZ2h0KCk7DQorICAgICAgICBGWF9MUEJZVEUgbWFza19idWYgPSBOVUxMOw0KKyAgICAgICAgRlhfU1RSU0laRSBtYXNrX3NpemU7DQorICAgICAgICBGWF9CT09MIGJEZWxldGVNYXNrID0gVFJVRTsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcE1hc2tEaWN0ID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgICAgIHBNYXNrRGljdC0+U2V0QXROYW1lKEZYX0JTVFJDKCJUeXBlIiksIEZYX0JTVFJDKCJYT2JqZWN0IikpOw0KKyAgICAgICAgcE1hc2tEaWN0LT5TZXRBdE5hbWUoRlhfQlNUUkMoIlN1YnR5cGUiKSwgRlhfQlNUUkMoIkltYWdlIikpOw0KKyAgICAgICAgcE1hc2tEaWN0LT5TZXRBdEludGVnZXIoRlhfQlNUUkMoIldpZHRoIiksIG1hc2tXaWR0aCk7DQorICAgICAgICBwTWFza0RpY3QtPlNldEF0SW50ZWdlcihGWF9CU1RSQygiSGVpZ2h0IiksIG1hc2tIZWlnaHQpOw0KKyAgICAgICAgcE1hc2tEaWN0LT5TZXRBdE5hbWUoRlhfQlNUUkMoIkNvbG9yU3BhY2UiKSwgRlhfQlNUUkMoIkRldmljZUdyYXkiKSk7DQorICAgICAgICBwTWFza0RpY3QtPlNldEF0SW50ZWdlcihGWF9CU1RSQygiQml0c1BlckNvbXBvbmVudCIpLCA4KTsNCisgICAgICAgIGlmIChwTWFza0JpdG1hcC0+R2V0QlBQKCkgPT0gOCAmJiAoaUNvbXByZXNzICYgUERGX0lNQUdFX01BU0tfTE9TU1lfQ09NUFJFU1MpICE9IDApIHsNCisgICAgICAgICAgICBfRENURW5jb2RlQml0bWFwKHBNYXNrRGljdCwgcE1hc2tCaXRtYXAsIHBQYXJhbSA/IHBQYXJhbS0+blF1YWxpdHkgOiA3NSwgbWFza19idWYsIG1hc2tfc2l6ZSk7DQorICAgICAgICB9IGVsc2UgaWYgKHBNYXNrQml0bWFwLT5HZXRGb3JtYXQoKSA9PSBGWERJQl8xYnBwTWFzaykgew0KKyAgICAgICAgICAgIF9KQklHMkVuY29kZUJpdG1hcChwTWFza0RpY3QsIHBNYXNrQml0bWFwLCBtX3BEb2N1bWVudCwgbWFza19idWYsIG1hc2tfc2l6ZSwgVFJVRSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1hc2tfc2l6ZSA9IG1hc2tIZWlnaHQgKiBtYXNrV2lkdGg7DQorICAgICAgICAgICAgbWFza19idWYgPSBGWF9BbGxvYyhGWF9CWVRFLCBtYXNrX3NpemUpOw0KKyAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgYSA9IDA7IGEgPCBtYXNrSGVpZ2h0OyBhICsrKSB7DQorICAgICAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG1hc2tfYnVmICsgYSAqIG1hc2tXaWR0aCwgcE1hc2tCaXRtYXAtPkdldFNjYW5saW5lKGEpLCBtYXNrV2lkdGgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChwTWFza0RpY3QpIHsNCisgICAgICAgICAgICBwTWFza0RpY3QtPlNldEF0SW50ZWdlcihGWF9CU1RSQygiTGVuZ3RoIiksIG1hc2tfc2l6ZSk7DQorICAgICAgICAgICAgQ1BERl9TdHJlYW0qIHBNYXNrU3RyZWFtID0gTlVMTDsNCisgICAgICAgICAgICBpZiAoYlVzZU1hdHRlKSB7DQorICAgICAgICAgICAgICAgIGludCBhLCByLCBnLCBiOw0KKyAgICAgICAgICAgICAgICBBcmdiRGVjb2RlKCoocFBhcmFtLT5wTWF0dGVDb2xvciksIGEsIHIsIGcsIGIpOw0KKyAgICAgICAgICAgICAgICBDUERGX0FycmF5KiBwTWF0dGUgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgICAgICAgICAgICAgcE1hdHRlLT5BZGRJbnRlZ2VyKHIpOw0KKyAgICAgICAgICAgICAgICBwTWF0dGUtPkFkZEludGVnZXIoZyk7DQorICAgICAgICAgICAgICAgIHBNYXR0ZS0+QWRkSW50ZWdlcihiKTsNCisgICAgICAgICAgICAgICAgcE1hc2tEaWN0LT5TZXRBdChGWF9CU1RSQygiTWF0dGUiKSwgcE1hdHRlKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcE1hc2tTdHJlYW0gPSBGWF9ORVcgQ1BERl9TdHJlYW0obWFza19idWYsIG1hc2tfc2l6ZSwgcE1hc2tEaWN0KTsNCisgICAgICAgICAgICBtX3BEb2N1bWVudC0+QWRkSW5kaXJlY3RPYmplY3QocE1hc2tTdHJlYW0pOw0KKyAgICAgICAgICAgIGJEZWxldGVNYXNrID0gRkFMU0U7DQorICAgICAgICAgICAgcERpY3QtPlNldEF0UmVmZXJlbmNlKEZYX0JTVFJDKCJTTWFzayIpLCBtX3BEb2N1bWVudCwgcE1hc2tTdHJlYW0pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBCaXRtYXAtPkhhc0FscGhhKCkpIHsNCisgICAgICAgICAgICBkZWxldGUgcE1hc2tCaXRtYXA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfQk9PTCBiU3RyZWFtID0gcEZpbGVXcml0ZSAhPSBOVUxMICYmIHBGaWxlUmVhZCAhPSBOVUxMOw0KKyAgICBpZiAob3BUeXBlID09IDApIHsNCisgICAgICAgIGlmIChpQ29tcHJlc3MgJiBQREZfSU1BR0VfTE9TU0xFU1NfQ09NUFJFU1MpIHsNCisgICAgICAgICAgICBpZiAocEJpdG1hcC0+R2V0QlBQKCkgPT0gMSkgew0KKyAgICAgICAgICAgICAgICBfSkJJRzJFbmNvZGVCaXRtYXAocERpY3QsIHBCaXRtYXAsIG1fcERvY3VtZW50LCBkZXN0X2J1ZiwgZGVzdF9zaXplLCBUUlVFKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChwQml0bWFwLT5HZXRCUFAoKSA9PSAxKSB7DQorICAgICAgICAgICAgICAgIF9KQklHMkVuY29kZUJpdG1hcChwRGljdCwgcEJpdG1hcCwgbV9wRG9jdW1lbnQsIGRlc3RfYnVmLCBkZXN0X3NpemUsIEZBTFNFKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKHBCaXRtYXAtPkdldEJQUCgpID49IDggJiYgcEJpdG1hcC0+R2V0UGFsZXR0ZSgpICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgQ0ZYX0RJQml0bWFwICpwTmV3Qml0bWFwID0gRlhfTkVXIENGWF9ESUJpdG1hcCgpOw0KKyAgICAgICAgICAgICAgICBwTmV3Qml0bWFwLT5Db3B5KHBCaXRtYXApOw0KKyAgICAgICAgICAgICAgICBwTmV3Qml0bWFwLT5Db252ZXJ0Rm9ybWF0KEZYRElCX1JnYik7DQorICAgICAgICAgICAgICAgIFNldEltYWdlKHBOZXdCaXRtYXAsIGlDb21wcmVzcywgcEZpbGVXcml0ZSwgcEZpbGVSZWFkKTsNCisgICAgICAgICAgICAgICAgaWYgKHBEaWN0KSB7DQorICAgICAgICAgICAgICAgICAgICBwRGljdC0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgcERpY3QgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChkZXN0X2J1Zikgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfRnJlZShkZXN0X2J1Zik7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X2J1ZiA9IE5VTEw7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVzdF9zaXplID0gMDsNCisgICAgICAgICAgICAgICAgZGVsZXRlIHBOZXdCaXRtYXA7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAoYlVzZU1hdHRlKSB7DQorICAgICAgICAgICAgICAgICAgICBDRlhfRElCaXRtYXAgKnBOZXdCaXRtYXAgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwKCk7DQorICAgICAgICAgICAgICAgICAgICBwTmV3Qml0bWFwLT5DcmVhdGUoQml0bWFwV2lkdGgsIEJpdG1hcEhlaWdodCwgRlhESUJfQXJnYik7DQorICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZHN0X2J1ZiA9IHBOZXdCaXRtYXAtPkdldEJ1ZmZlcigpOw0KKyAgICAgICAgICAgICAgICAgICAgRlhfSU5UMzIgc3JjX29mZnNldCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKEZYX0lOVDMyIHJvdyA9IDA7IHJvdyA8IEJpdG1hcEhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3JjX29mZnNldCA9IHJvdyAqIHNyY19waXRjaDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEZYX0lOVDMyIGNvbHVtbiA9IDA7IGNvbHVtbiA8IEJpdG1hcFdpZHRoOyBjb2x1bW4gKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgYWxwaGEgPSBzcmNfYnVmW3NyY19vZmZzZXQgKyAzXSAvIDI1NS4wZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X2J1ZltzcmNfb2Zmc2V0XSA9IChGWF9CWVRFKShzcmNfYnVmW3NyY19vZmZzZXRdICogYWxwaGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RfYnVmW3NyY19vZmZzZXQgKyAxXSA9IChGWF9CWVRFKShzcmNfYnVmW3NyY19vZmZzZXQgKyAxXSAqIGFscGhhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X2J1ZltzcmNfb2Zmc2V0ICsgMl0gPSAoRlhfQllURSkoc3JjX2J1ZltzcmNfb2Zmc2V0ICsgMl0gKiBhbHBoYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9idWZbc3JjX29mZnNldCArIDNdID0gKEZYX0JZVEUpKHNyY19idWZbc3JjX29mZnNldCArIDNdKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX29mZnNldCArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIF9EQ1RFbmNvZGVCaXRtYXAocERpY3QsIHBOZXdCaXRtYXAsIHBQYXJhbSA/IHBQYXJhbS0+blF1YWxpdHkgOiA3NSwgZGVzdF9idWYsIGRlc3Rfc2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgcE5ld0JpdG1hcDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIF9EQ1RFbmNvZGVCaXRtYXAocERpY3QsIHBCaXRtYXAsIHBQYXJhbSA/IHBQYXJhbS0+blF1YWxpdHkgOiA3NSwgZGVzdF9idWYsIGRlc3Rfc2l6ZSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoYlN0cmVhbSkgew0KKyAgICAgICAgICAgIHBGaWxlV3JpdGUtPldyaXRlQmxvY2soZGVzdF9idWYsIGRlc3Rfc2l6ZSk7DQorICAgICAgICAgICAgRlhfRnJlZShkZXN0X2J1Zik7DQorICAgICAgICAgICAgZGVzdF9idWYgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKG9wVHlwZSA9PSAxKSB7DQorICAgICAgICBpZiAoIWJTdHJlYW0pIHsNCisgICAgICAgICAgICBkZXN0X3NpemUgPSBkZXN0X3BpdGNoICogQml0bWFwSGVpZ2h0Ow0KKyAgICAgICAgICAgIGRlc3RfYnVmID0gRlhfQWxsb2MoRlhfQllURSwgZGVzdF9zaXplKTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQQllURSBwRGVzdCA9IGRlc3RfYnVmOw0KKyAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gMDsgaSA8IEJpdG1hcEhlaWdodDsgaSArKykgew0KKyAgICAgICAgICAgIGlmICghYlN0cmVhbSkgew0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihwRGVzdCwgc3JjX2J1ZiwgZGVzdF9waXRjaCk7DQorICAgICAgICAgICAgICAgIHBEZXN0ICs9IGRlc3RfcGl0Y2g7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcEZpbGVXcml0ZS0+V3JpdGVCbG9jayhzcmNfYnVmLCBkZXN0X3BpdGNoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3JjX2J1ZiArPSBzcmNfcGl0Y2g7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAob3BUeXBlID09IDIpIHsNCisgICAgICAgIGlmICghYlN0cmVhbSkgew0KKyAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IGRlc3RfcGl0Y2ggKiBCaXRtYXBIZWlnaHQ7DQorICAgICAgICAgICAgZGVzdF9idWYgPSBGWF9BbGxvYyhGWF9CWVRFLCBkZXN0X3NpemUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBkZXN0X2J1ZiA9IEZYX0FsbG9jKEZYX0JZVEUsIGRlc3RfcGl0Y2gpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfTFBCWVRFIHBEZXN0ID0gZGVzdF9idWY7DQorICAgICAgICBGWF9JTlQzMiBzcmNfb2Zmc2V0ID0gMDsNCisgICAgICAgIEZYX0lOVDMyIGRlc3Rfb2Zmc2V0ID0gMDsNCisgICAgICAgIGZvciAoRlhfSU5UMzIgcm93ID0gMDsgcm93IDwgQml0bWFwSGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICBzcmNfb2Zmc2V0ID0gcm93ICogc3JjX3BpdGNoOw0KKyAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgY29sdW1uID0gMDsgY29sdW1uIDwgQml0bWFwV2lkdGg7IGNvbHVtbiArKykgew0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCBhbHBoYSA9IGJVc2VNYXR0ZSA/IHNyY19idWZbc3JjX29mZnNldCArIDNdIC8gMjU1LjBmIDogMTsNCisgICAgICAgICAgICAgICAgcERlc3RbZGVzdF9vZmZzZXRdID0gKEZYX0JZVEUpKHNyY19idWZbc3JjX29mZnNldCArIDJdICogYWxwaGEpOw0KKyAgICAgICAgICAgICAgICBwRGVzdFtkZXN0X29mZnNldCArIDFdID0gKEZYX0JZVEUpKHNyY19idWZbc3JjX29mZnNldCArIDFdICogYWxwaGEpOw0KKyAgICAgICAgICAgICAgICBwRGVzdFtkZXN0X29mZnNldCArIDJdID0gKEZYX0JZVEUpKHNyY19idWZbc3JjX29mZnNldF0gKiBhbHBoYSk7DQorICAgICAgICAgICAgICAgIGRlc3Rfb2Zmc2V0ICs9IDM7DQorICAgICAgICAgICAgICAgIHNyY19vZmZzZXQgKz0gYnBwID09IDI0ID8gMyA6IDQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChiU3RyZWFtKSB7DQorICAgICAgICAgICAgICAgIHBGaWxlV3JpdGUtPldyaXRlQmxvY2socERlc3QsIGRlc3RfcGl0Y2gpOw0KKyAgICAgICAgICAgICAgICBwRGVzdCA9IGRlc3RfYnVmOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBEZXN0ICs9IGRlc3RfcGl0Y2g7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfb2Zmc2V0ID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChiU3RyZWFtKSB7DQorICAgICAgICAgICAgRlhfRnJlZShkZXN0X2J1Zik7DQorICAgICAgICAgICAgZGVzdF9idWYgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX3BTdHJlYW0gPT0gTlVMTCkgew0KKyAgICAgICAgbV9wU3RyZWFtID0gRlhfTkVXIENQREZfU3RyZWFtKE5VTEwsIDAsIE5VTEwpOw0KKyAgICB9DQorICAgIGlmICghYlN0cmVhbSkgew0KKyAgICAgICAgbV9wU3RyZWFtLT5Jbml0U3RyZWFtKGRlc3RfYnVmLCBkZXN0X3NpemUsIHBEaWN0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBGaWxlV3JpdGUtPkZsdXNoKCk7DQorICAgICAgICBtX3BTdHJlYW0tPkluaXRTdHJlYW0ocEZpbGVSZWFkLCBwRGljdCk7DQorICAgIH0NCisgICAgbV9iSXNNYXNrID0gcEJpdG1hcC0+SXNBbHBoYU1hc2soKTsNCisgICAgbV9XaWR0aCA9IEJpdG1hcFdpZHRoOw0KKyAgICBtX0hlaWdodCA9IEJpdG1hcEhlaWdodDsNCisgICAgaWYgKGRlc3RfYnVmKSB7DQorICAgICAgICBGWF9GcmVlKGRlc3RfYnVmKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfSW1hZ2U6OlJlc2V0Q2FjaGUoQ1BERl9QYWdlKiBwUGFnZSwgY29uc3QgQ0ZYX0RJQml0bWFwKiBwQml0bWFwKQ0KK3sNCisgICAgcFBhZ2UtPkdldFJlbmRlckNhY2hlKCktPlJlc2V0Qml0bWFwKG1fcFN0cmVhbSwgcEJpdG1hcCk7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9mb250L2NvbW1vbi5oIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2ZvbnQvY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMxMWIyOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9mb250L2NvbW1vbi5oCkBAIC0wLDAgKzEsMTcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgQ09NTU9OX0gNCisjZGVmaW5lIENPTU1PTl9IDQordHlwZWRlZiBzaWduZWQgY2hhciBUVF9pbnQ4X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFRUX3VpbnQ4X3Q7DQordHlwZWRlZiBzaWduZWQgc2hvcnQgVFRfaW50MTZfdDsNCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFRUX3VpbnQxNl90Ow0KK3R5cGVkZWYgRlhfSU5UMzIgVFRfaW50MzJfdDsNCit0eXBlZGVmIEZYX0RXT1JEIFRUX3VpbnQzMl90Ow0KK3R5cGVkZWYgRlhfSU5UNjQgVFRfaW50NjRfdDsNCit0eXBlZGVmIEZYX1VJTlQ2NCBUVF91aW50NjRfdDsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZm9udC9mb250X2ludC5oIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2ZvbnQvZm9udF9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzlmNThlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2ZvbnQvZm9udF9pbnQuaApAQCAtMCwwICsxLDIwMSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQordHlwZWRlZiB2b2lkKiBGWEZUX0xpYnJhcnk7DQorY2xhc3MgQ1BERl9DTWFwTWFuYWdlciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9DTWFwTWFuYWdlcigpOw0KKyAgICB+Q1BERl9DTWFwTWFuYWdlcigpOw0KKyAgICBGWF9MUFZPSUQJCQkJR2V0UGFja2FnZShGWF9CT09MIGJQcm9tcHQpOw0KKyAgICBDUERGX0NNYXAqCQkJCUdldFByZWRlZmluZWRDTWFwKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lLCBGWF9CT09MIGJQcm9tcHQpOw0KKyAgICBDUERGX0NJRDJVbmljb2RlTWFwKglHZXRDSUQyVW5pY29kZU1hcChpbnQgY2hhcnNldCwgRlhfQk9PTCBiUHJvbXB0KTsNCisgICAgdm9pZAkJCQkJUmVsb2FkQWxsKCk7DQorcHJpdmF0ZToNCisgICAgQ1BERl9DTWFwKgkJCQlMb2FkUHJlZGVmaW5lZENNYXAoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUsICBGWF9CT09MIGJQcm9tcHQpOw0KKyAgICBDUERGX0NJRDJVbmljb2RlTWFwKglMb2FkQ0lEMlVuaWNvZGVNYXAoaW50IGNoYXJzZXQsIEZYX0JPT0wgYlByb21wdCk7DQorICAgIHZvaWQJCQkJCURyb3BBbGwoRlhfQk9PTCBiUmVsb2FkKTsNCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgIEZYX0JPT0wJCQkJCW1fYlByb21wdGVkOw0KKyAgICBGWF9MUFZPSUQJCQkJbV9wUGFja2FnZTsNCisjZW5kaWYNCisgICAgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cgltX0NNYXBzOw0KKyAgICBDUERGX0NJRDJVbmljb2RlTWFwKgltX0NJRDJVbmljb2RlTWFwc1s2XTsNCit9Ow0KK2NsYXNzIENQREZfRm9udEdsb2JhbHMgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfRm9udEdsb2JhbHMoKTsNCisgICAgfkNQREZfRm9udEdsb2JhbHMoKTsNCisgICAgdm9pZAkJCQlDbGVhckFsbCgpOw0KKyAgICB2b2lkCQkJCUNsZWFyKHZvaWQqIGtleSk7DQorICAgIENQREZfRm9udCoJCQlGaW5kKHZvaWQqIGtleSwgaW50IGluZGV4KTsNCisgICAgdm9pZAkJCQlTZXQodm9pZCoga2V5LCBpbnQgaW5kZXgsIENQREZfRm9udCogcEZvbnQpOw0KKyAgICBDRlhfTWFwUHRyVG9QdHIJCW1fcFN0b2NrTWFwOw0KKyAgICBDUERGX0NNYXBNYW5hZ2VyCW1fQ01hcE1hbmFnZXI7DQorICAgIHN0cnVjdCB7DQorICAgICAgICBjb25zdCBzdHJ1Y3QgRlhDTUFQX0NNYXAqCW1fcE1hcExpc3Q7DQorICAgICAgICBpbnQJCQkJbV9Db3VudDsNCisgICAgfSBtX0VtYmVkZGVkQ2hhcnNldHNbNV07DQorICAgIHN0cnVjdCB7DQorICAgICAgICBjb25zdCBGWF9XT1JEKgltX3BNYXA7DQorICAgICAgICBpbnQJCQkJbV9Db3VudDsNCisgICAgfSBtX0VtYmVkZGVkVG9Vbmljb2Rlc1s1XTsNCisgICAgRlhfTFBCWVRFCQkJbV9wQ29udHJhc3RSYW1wczsNCit9Ow0KK3N0cnVjdCBfQ01hcF9Db2RlUmFuZ2Ugew0KKyAgICBpbnQJCQltX0NoYXJTaXplOw0KKyAgICBGWF9CWVRFCQltX0xvd2VyWzRdOw0KKyAgICBGWF9CWVRFCQltX1VwcGVyWzRdOw0KK307DQorY2xhc3MgQ1BERl9DTWFwUGFyc2VyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX0NNYXBQYXJzZXIoKTsNCisgICAgfkNQREZfQ01hcFBhcnNlcigpIHt9DQorICAgIEZYX0JPT0wJSW5pdGlhbGl6ZShDUERGX0NNYXAqKTsNCisgICAgdm9pZAlQYXJzZVdvcmQoRlhfQlNUUiBzdHIpOw0KKyAgICBDRlhfQmluYXJ5QnVmCW1fQWRkTWFwczsNCitwcml2YXRlOg0KKyAgICBDUERGX0NNYXAqCW1fcENNYXA7DQorICAgIGludAkJCQltX1N0YXR1czsNCisgICAgaW50CQkJCW1fQ29kZVNlcTsNCisgICAgRlhfRFdPUkQJCW1fQ29kZVBvaW50c1s0XTsNCisgICAgQ0ZYX0FycmF5VGVtcGxhdGU8X0NNYXBfQ29kZVJhbmdlPgltX0NvZGVSYW5nZXM7DQorICAgIENGWF9CeXRlU3RyaW5nCW1fUmVnaXN0cnksIG1fT3JkZXJpbmcsIG1fU3VwcGxlbWVudDsNCisgICAgQ0ZYX0J5dGVTdHJpbmcJbV9MYXN0V29yZDsNCit9Ow0KKyNkZWZpbmUgQ0lEQ09ESU5HX1VOS05PV04JMA0KKyNkZWZpbmUgQ0lEQ09ESU5HX0dCCQkxDQorI2RlZmluZSBDSURDT0RJTkdfQklHNQkJMg0KKyNkZWZpbmUgQ0lEQ09ESU5HX0pJUwkJMw0KKyNkZWZpbmUgQ0lEQ09ESU5HX0tPUkVBCQk0DQorI2RlZmluZSBDSURDT0RJTkdfVUNTMgkJNQ0KKyNkZWZpbmUgQ0lEQ09ESU5HX0NJRAkJNg0KKyNkZWZpbmUgQ0lEQ09ESU5HX1VURjE2CQk3DQorY2xhc3MgQ1BERl9DTWFwIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX0NNYXAoKTsNCisgICAgRlhfQk9PTAkJCQkJTG9hZFByZWRlZmluZWQoQ1BERl9DTWFwTWFuYWdlciogcE1nciwgY29uc3QgRlhfQ0hBUiogbmFtZSwgRlhfQk9PTCBiUHJvbXB0Q0pLKTsNCisgICAgRlhfQk9PTAkJCQkJTG9hZEVtYmVkZGVkKEZYX0xQQ0JZVEUgcERhdGEsIEZYX0RXT1JEIGR3U2l6ZSk7DQorICAgIHZvaWQJCQkJCVJlbGVhc2UoKTsNCisgICAgRlhfQk9PTAkJCQkJSXNMb2FkZWQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iTG9hZGVkOw0KKyAgICB9DQorICAgIGludAkJCQkJCUdldENoYXJzZXQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9DaGFyc2V0Ow0KKyAgICB9DQorICAgIEZYX0JPT0wJCQkJCUlzVmVydFdyaXRpbmcoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iVmVydGljYWw7DQorICAgIH0NCisgICAgRlhfV09SRAkJCQkJQ0lERnJvbUNoYXJDb2RlKEZYX0RXT1JEIGNoYXJjb2RlKSBjb25zdDsNCisgICAgRlhfRFdPUkQJCQkJQ2hhckNvZGVGcm9tQ0lEKEZYX1dPUkQgQ0lEKSBjb25zdDsNCisgICAgaW50CQkJCQkJR2V0Q2hhclNpemUoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0Ow0KKyAgICBGWF9EV09SRAkJCQlHZXROZXh0Q2hhcihjb25zdCBGWF9DSEFSKiBwU3RyaW5nLCBpbnQmIG9mZnNldCkgY29uc3Q7DQorICAgIGludAkJCQkJCUNvdW50Q2hhcihjb25zdCBGWF9DSEFSKiBwU3RyaW5nLCBpbnQgc2l6ZSkgY29uc3Q7DQorICAgIGludAkJCQkJCUFwcGVuZENoYXIoRlhfTFBTVFIgc3RyLCBGWF9EV09SRCBjaGFyY29kZSkgY29uc3Q7DQorICAgIHR5cGVkZWYgZW51bSB7T25lQnl0ZSwgVHdvQnl0ZXMsIE1peGVkVHdvQnl0ZXMsIE1peGVkRm91ckJ5dGVzfSBDb2RpbmdTY2hlbWU7DQorcHJvdGVjdGVkOg0KKyAgICB+Q1BERl9DTWFwKCk7DQorICAgIGZyaWVuZCBjbGFzcwkJCUNQREZfQ01hcFBhcnNlcjsNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9DTWFwTWFuYWdlcjsNCisgICAgZnJpZW5kIGNsYXNzCQkJQ1BERl9DSURGb250Ow0KK3Byb3RlY3RlZDoNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQltX1ByZWRlZmluZWRDTWFwOw0KKyAgICBGWF9CT09MCQkJCQltX2JWZXJ0aWNhbDsNCisgICAgaW50CQkJCQkJbV9DaGFyc2V0LCBtX0NvZGluZzsNCisgICAgQ29kaW5nU2NoZW1lCQkJbV9Db2RpbmdTY2hlbWU7DQorICAgIGludAkJCQkJCW1fbkNvZGVSYW5nZXM7DQorICAgIEZYX0JZVEUqCQkJCW1fcExlYWRpbmdCeXRlczsNCisgICAgRlhfV09SRCoJCQkJbV9wTWFwcGluZzsNCisgICAgRlhfTFBCWVRFCQkJCW1fcEFkZE1hcHBpbmc7DQorICAgIEZYX0JPT0wJCQkJCW1fYkxvYWRlZDsNCisgICAgY29uc3QgRlhDTUFQX0NNYXAqCQltX3BFbWJlZE1hcDsNCisgICAgQ1BERl9DTWFwKgkJCQltX3BVc2VNYXA7DQorfTsNCitjbGFzcyBDUERGX1ByZWRlZmluZWRDTWFwDQorew0KK3B1YmxpYzoNCisgICAgRlhfTFBDU1RSCW1fcE5hbWU7DQorICAgIGludAkJCW1fQ2hhcnNldDsNCisgICAgaW50CQkJbV9Db2Rpbmc7DQorICAgIENQREZfQ01hcDo6Q29kaW5nU2NoZW1lCW1fQ29kaW5nU2NoZW1lOw0KKyAgICBGWF9EV09SRAltX0xlYWRpbmdTZWdDb3VudDsNCisgICAgRlhfQllURQkJbV9MZWFkaW5nU2Vnc1s0XTsNCit9Ow0KK3R5cGVkZWYgc3RydWN0IF9GaWxlSGVhZGVyIHsNCisgICAgRlhfQllURQkJYnRUYWdbNF07DQorICAgIEZYX0JZVEUJCWJ0VmVyc2lvbjsNCisgICAgRlhfQllURQkJYnRGb3JtYXQ7DQorICAgIEZYX0JZVEUJCWJ0UmVzZXJ2ZWQxWzJdOw0KKyAgICBGWF9EV09SRAlkd1N0YXJ0SW5kZXg7DQorICAgIEZYX0RXT1JECWR3RW5kSW5kZXg7DQorICAgIEZYX0RXT1JECWR3RGF0YVNpemU7DQorICAgIEZYX0RXT1JECWR3RGF0YU9mZnNldDsNCisgICAgRlhfRFdPUkQJZHdSZWNvcmRTaXplOw0KK30gRlhNUF9GSUxFSEVBREVSOw0KK2NsYXNzIENQREZfRlhNUCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9GWE1QKCkNCisgICAgew0KKyAgICAgICAgbV9wSGVhZGVyID0gTlVMTDsNCisgICAgICAgIG1fcFRhYmxlID0gTlVMTDsNCisgICAgfQ0KKyAgICB+Q1BERl9GWE1QKCkNCisgICAgew0KKyAgICAgICAgaWYgKG1fcEhlYWRlcikgew0KKyAgICAgICAgICAgIEZYX0ZyZWUobV9wSGVhZGVyKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9CT09MCQlJc0xvYWRlZCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BUYWJsZSAhPSBOVUxMOw0KKyAgICB9DQorICAgIEZYX0JPT0wJCUxvYWRGaWxlKEZYX0xQVk9JRCBwUGFja2FnZSwgRlhfTFBDU1RSIGZpbGVpZCk7DQorICAgIEZYX0xQQllURQlHZXRSZWNvcmQoRlhfRFdPUkQgaW5kZXgpOw0KK3ByaXZhdGU6DQorICAgIEZYTVBfRklMRUhFQURFUioJbV9wSGVhZGVyOw0KKyAgICBGWF9MUEJZVEUJbV9wVGFibGU7DQorfTsNCitjbGFzcyBDUERGX0NJRDJVbmljb2RlTWFwIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX0NJRDJVbmljb2RlTWFwKCk7DQorICAgIH5DUERGX0NJRDJVbmljb2RlTWFwKCk7DQorICAgIEZYX0JPT0wJCUluaXRpYWxpemUoKTsNCisgICAgRlhfQk9PTAkJSXNMb2FkZWQoKTsNCisgICAgdm9pZAkJTG9hZChDUERGX0NNYXBNYW5hZ2VyKiBwTWdyLCBpbnQgY2hhcnNldCwgRlhfQk9PTCBiUHJvbXB0Q0pLKTsNCisgICAgRlhfV0NIQVIJVW5pY29kZUZyb21DSUQoRlhfV09SRCBDSUQpOw0KK3Byb3RlY3RlZDoNCisgICAgaW50CQkJbV9DaGFyc2V0Ow0KKyAgICBjb25zdCBGWF9XT1JEKgltX3BFbWJlZGRlZE1hcDsNCisgICAgRlhfRFdPUkQJbV9FbWJlZGRlZENvdW50Ow0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgQ1BERl9GWE1QKgltX3BFeHRlcm5hbE1hcDsNCisjZW5kaWYNCit9Ow0KK2NsYXNzIENQREZfVG9Vbmljb2RlTWFwIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICB2b2lkCQkJCQlMb2FkKENQREZfU3RyZWFtKiBwU3RyZWFtKTsNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQlMb29rdXAoRlhfRFdPUkQgY2hhcmNvZGUpOw0KKyAgICBGWF9EV09SRAkJCQlSZXZlcnNlTG9va3VwKEZYX1dDSEFSIHVuaWNvZGUpOw0KK3Byb3RlY3RlZDoNCisgICAgQ0ZYX0NNYXBEV29yZFRvRFdvcmQJbV9NYXA7DQorICAgIENQREZfQ0lEMlVuaWNvZGVNYXAqCW1fcEJhc2VNYXA7DQorICAgIENGWF9XaWRlVGV4dEJ1ZgkJCW1fTXVsdGlDaGFyQnVmOw0KK307DQorY2xhc3MgQ1BERl9Gb250Q2hhck1hcCA6IHB1YmxpYyBDRlhfQ2hhck1hcCwgcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX0ZvbnRDaGFyTWFwKENQREZfRm9udCogcEZvbnQpOw0KKyAgICBDUERGX0ZvbnQqCQltX3BGb250Ow0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2ZvbnQvZnBkZl9mb250LmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9mb250L2ZwZGZfZm9udC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2MTk5YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9mb250L2ZwZGZfZm9udC5jcHAKQEAgLTAsMCArMSwxNzYzIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZW9iai5oIg0KKyNpbmNsdWRlICJmb250X2ludC5oIg0KKyNpbmNsdWRlICIuLi9mcGRmX3BhZ2UvcGFnZWludC5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZnJlZXR5cGUuaCINCitGWF9CT09MIEZUX1VzZVRUQ2hhcm1hcChGWEZUX0ZhY2UgZmFjZSwgaW50IHBsYXRmb3JtX2lkLCBpbnQgZW5jb2RpbmdfaWQpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcENvdW50KGZhY2UpOyBpICsrKSB7DQorICAgICAgICBpZiAoRlhGVF9HZXRfQ2hhcm1hcF9QbGF0Zm9ybUlEKEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcHMoZmFjZSlbaV0pID09IHBsYXRmb3JtX2lkICYmDQorICAgICAgICAgICAgICAgIEZYRlRfR2V0X0NoYXJtYXBfRW5jb2RpbmdJRChGWEZUX0dldF9GYWNlX0NoYXJtYXBzKGZhY2UpW2ldKSA9PSBlbmNvZGluZ19pZCkgew0KKyAgICAgICAgICAgIEZYRlRfU2V0X0NoYXJtYXAoZmFjZSwgRlhGVF9HZXRfRmFjZV9DaGFybWFwcyhmYWNlKVtpXSk7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitleHRlcm4gY29uc3QgRlhfV09SRCogUERGX1VuaWNvZGVzRm9yUHJlZGVmaW5lZENoYXJTZXQoaW50KTsNCitDUERGX0ZvbnRHbG9iYWxzOjpDUERGX0ZvbnRHbG9iYWxzKCkNCit7DQorICAgIEZYU1lTX21lbXNldDMyKG1fRW1iZWRkZWRDaGFyc2V0cywgMCwgc2l6ZW9mIG1fRW1iZWRkZWRDaGFyc2V0cyk7DQorICAgIEZYU1lTX21lbXNldDMyKG1fRW1iZWRkZWRUb1VuaWNvZGVzLCAwLCBzaXplb2YgbV9FbWJlZGRlZFRvVW5pY29kZXMpOw0KKyAgICBtX3BDb250cmFzdFJhbXBzID0gTlVMTDsNCit9DQorQ1BERl9Gb250R2xvYmFsczo6fkNQREZfRm9udEdsb2JhbHMoKQ0KK3sNCisgICAgQ2xlYXJBbGwoKTsNCisgICAgaWYgKG1fcENvbnRyYXN0UmFtcHMpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wQ29udHJhc3RSYW1wcyk7DQorICAgIH0NCit9DQorY2xhc3MgQ0ZYX1N0b2NrRm9udEFycmF5IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhfU3RvY2tGb250QXJyYXkoKQ0KKyAgICB7DQorICAgICAgICBGWFNZU19tZW1zZXQzMihtX3BTdG9ja0ZvbnRzLCAwLCBzaXplb2YoQ1BERl9Gb250KikgKiAxNCk7DQorICAgIH0NCisgICAgQ1BERl9Gb250KgkJCW1fcFN0b2NrRm9udHNbMTRdOw0KK307DQorQ1BERl9Gb250KiBDUERGX0ZvbnRHbG9iYWxzOjpGaW5kKHZvaWQqIGtleSwgaW50IGluZGV4KQ0KK3sNCisgICAgdm9pZCogdmFsdWUgPSBOVUxMOw0KKyAgICBpZiAoIW1fcFN0b2NrTWFwLkxvb2t1cChrZXksIHZhbHVlKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKCF2YWx1ZSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuICgoQ0ZYX1N0b2NrRm9udEFycmF5Kil2YWx1ZSktPm1fcFN0b2NrRm9udHNbaW5kZXhdOw0KK30NCit2b2lkIENQREZfRm9udEdsb2JhbHM6OlNldCh2b2lkKiBrZXksIGludCBpbmRleCwgQ1BERl9Gb250KiBwRm9udCkNCit7DQorICAgIHZvaWQqIHZhbHVlID0gTlVMTDsNCisgICAgaWYgKG1fcFN0b2NrTWFwLkxvb2t1cChrZXksIHZhbHVlKSkgew0KKyAgICAgICAgKChDRlhfU3RvY2tGb250QXJyYXkqKXZhbHVlKS0+bV9wU3RvY2tGb250c1tpbmRleF0gPSBwRm9udDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhfU3RvY2tGb250QXJyYXkqIHBGb250cyA9IEZYX05FVyBDRlhfU3RvY2tGb250QXJyYXkoKTsNCisgICAgaWYgKHBGb250cykgew0KKyAgICAgICAgcEZvbnRzLT5tX3BTdG9ja0ZvbnRzW2luZGV4XSA9IHBGb250Ow0KKyAgICB9DQorICAgIG1fcFN0b2NrTWFwLlNldEF0KGtleSwgcEZvbnRzKTsNCit9DQordm9pZCBDUERGX0ZvbnRHbG9iYWxzOjpDbGVhcih2b2lkKiBrZXkpDQorew0KKyAgICB2b2lkKiB2YWx1ZSA9IE5VTEw7DQorICAgIGlmICghbV9wU3RvY2tNYXAuTG9va3VwKGtleSwgdmFsdWUpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHZhbHVlKSB7DQorICAgICAgICBDRlhfU3RvY2tGb250QXJyYXkqIHBTdG9ja0ZvbnRzID0gKENGWF9TdG9ja0ZvbnRBcnJheSopdmFsdWU7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDE0OyBpICsrKSB7DQorICAgICAgICAgICAgaWYgKHBTdG9ja0ZvbnRzLT5tX3BTdG9ja0ZvbnRzW2ldKSB7DQorICAgICAgICAgICAgICAgIHBTdG9ja0ZvbnRzLT5tX3BTdG9ja0ZvbnRzW2ldLT5HZXRGb250RGljdCgpLT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBwU3RvY2tGb250cy0+bV9wU3RvY2tGb250c1tpXTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBkZWxldGUgcFN0b2NrRm9udHM7DQorICAgIH0NCisgICAgbV9wU3RvY2tNYXAuUmVtb3ZlS2V5KGtleSk7DQorfQ0KK3ZvaWQgQ1BERl9Gb250R2xvYmFsczo6Q2xlYXJBbGwoKQ0KK3sNCisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9wU3RvY2tNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICB2b2lkICprZXkgPSBOVUxMOw0KKyAgICAgICAgdm9pZCogdmFsdWUgPSBOVUxMOw0KKyAgICAgICAgbV9wU3RvY2tNYXAuR2V0TmV4dEFzc29jKHBvcywga2V5LCB2YWx1ZSk7DQorICAgICAgICBpZiAodmFsdWUpIHsNCisgICAgICAgICAgICBDRlhfU3RvY2tGb250QXJyYXkqIHBTdG9ja0ZvbnRzID0gKENGWF9TdG9ja0ZvbnRBcnJheSopdmFsdWU7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNDsgaSArKykgew0KKyAgICAgICAgICAgICAgICBpZiAocFN0b2NrRm9udHMtPm1fcFN0b2NrRm9udHNbaV0pIHsNCisgICAgICAgICAgICAgICAgICAgIHBTdG9ja0ZvbnRzLT5tX3BTdG9ja0ZvbnRzW2ldLT5HZXRGb250RGljdCgpLT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgcFN0b2NrRm9udHMtPm1fcFN0b2NrRm9udHNbaV07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVsZXRlIHBTdG9ja0ZvbnRzOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wU3RvY2tNYXAuUmVtb3ZlS2V5KGtleSk7DQorICAgIH0NCit9DQorQ1BERl9Gb250OjpDUERGX0ZvbnQoKQ0KK3sNCisgICAgbV9Gb250VHlwZSA9IDA7DQorICAgIG1fRm9udEJCb3gubGVmdCA9IG1fRm9udEJCb3gucmlnaHQgPSBtX0ZvbnRCQm94LnRvcCA9IG1fRm9udEJCb3guYm90dG9tID0gMDsNCisgICAgbV9TdGVtViA9IG1fQXNjZW50ID0gbV9EZXNjZW50ID0gbV9JdGFsaWNBbmdsZSA9IDA7DQorICAgIG1fcEZvbnRGaWxlID0gTlVMTDsNCisgICAgbV9GbGFncyA9IDA7DQorICAgIG1fcFRvVW5pY29kZU1hcCA9IE5VTEw7DQorICAgIG1fYlRvVW5pY29kZUxvYWRlZCA9IEZBTFNFOw0KKyAgICBtX3BDaGFyTWFwID0gTlVMTDsNCit9DQorRlhfQk9PTCBDUERGX0ZvbnQ6OkluaXRpYWxpemUoKQ0KK3sNCisgICAgbV9wQ2hhck1hcCA9IEZYX05FVyBDUERGX0ZvbnRDaGFyTWFwKHRoaXMpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ1BERl9Gb250Ojp+Q1BERl9Gb250KCkNCit7DQorICAgIGlmIChtX3BDaGFyTWFwKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENoYXJNYXApOw0KKyAgICAgICAgbV9wQ2hhck1hcCA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKG1fcFRvVW5pY29kZU1hcCkgew0KKyAgICAgICAgZGVsZXRlIG1fcFRvVW5pY29kZU1hcDsNCisgICAgICAgIG1fcFRvVW5pY29kZU1hcCA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKG1fcEZvbnRGaWxlKSB7DQorICAgICAgICBtX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKS0+UmVsZWFzZUZvbnRGaWxlU3RyZWFtQWNjKChDUERGX1N0cmVhbSopbV9wRm9udEZpbGUtPkdldFN0cmVhbSgpKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfRm9udDo6SXNWZXJ0V3JpdGluZygpIGNvbnN0DQorew0KKyAgICBGWF9CT09MIGJWZXJ0V3JpdGluZyA9IEZBTFNFOw0KKyAgICBDUERGX0NJREZvbnQqIHBDSURGb250ID0gR2V0Q0lERm9udCgpOw0KKyAgICBpZiAocENJREZvbnQpIHsNCisgICAgICAgIGJWZXJ0V3JpdGluZyA9IHBDSURGb250LT5Jc1ZlcnRXcml0aW5nKCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBiVmVydFdyaXRpbmcgPSBtX0ZvbnQuSXNWZXJ0aWNhbCgpOw0KKyAgICB9DQorICAgIHJldHVybiBiVmVydFdyaXRpbmc7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfRm9udDo6R2V0Rm9udFR5cGVOYW1lKCkgY29uc3QNCit7DQorICAgIHN3aXRjaCAobV9Gb250VHlwZSkgew0KKyAgICAgICAgY2FzZSBQREZGT05UX1RZUEUxOg0KKyAgICAgICAgICAgIHJldHVybiBGWF9CU1RSQygiVHlwZTEiKTsNCisgICAgICAgIGNhc2UgUERGRk9OVF9UUlVFVFlQRToNCisgICAgICAgICAgICByZXR1cm4gRlhfQlNUUkMoIlRydWVUeXBlIik7DQorICAgICAgICBjYXNlIFBERkZPTlRfVFlQRTM6DQorICAgICAgICAgICAgcmV0dXJuIEZYX0JTVFJDKCJUeXBlMyIpOw0KKyAgICAgICAgY2FzZSBQREZGT05UX0NJREZPTlQ6DQorICAgICAgICAgICAgcmV0dXJuIEZYX0JTVFJDKCJUeXBlMCIpOw0KKyAgICB9DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KK30NCit2b2lkIENQREZfRm9udDo6QXBwZW5kQ2hhcihDRlhfQnl0ZVN0cmluZyYgc3RyLCBGWF9EV09SRCBjaGFyY29kZSkgY29uc3QNCit7DQorICAgIGNoYXIgYnVmWzRdOw0KKyAgICBpbnQgbGVuID0gQXBwZW5kQ2hhcihidWYsIGNoYXJjb2RlKTsNCisgICAgaWYgKGxlbiA9PSAxKSB7DQorICAgICAgICBzdHIgKz0gYnVmWzBdOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgc3RyICs9IENGWF9CeXRlU3RyaW5nKGJ1ZiwgbGVuKTsNCisgICAgfQ0KK30NCitDRlhfV2lkZVN0cmluZyBDUERGX0ZvbnQ6OlVuaWNvZGVGcm9tQ2hhckNvZGUoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0DQorew0KKyAgICBpZiAoIW1fYlRvVW5pY29kZUxvYWRlZCkgew0KKyAgICAgICAgKChDUERGX0ZvbnQqKXRoaXMpLT5Mb2FkVW5pY29kZU1hcCgpOw0KKyAgICB9DQorICAgIGlmIChtX3BUb1VuaWNvZGVNYXApIHsNCisgICAgICAgIENGWF9XaWRlU3RyaW5nIHdzUmV0ID0gbV9wVG9Vbmljb2RlTWFwLT5Mb29rdXAoY2hhcmNvZGUpOw0KKyAgICAgICAgaWYgKCF3c1JldC5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICByZXR1cm4gd3NSZXQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfV0NIQVIgdW5pY29kZSA9IF9Vbmljb2RlRnJvbUNoYXJDb2RlKGNoYXJjb2RlKTsNCisgICAgaWYgKHVuaWNvZGUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgcmV0dXJuIHVuaWNvZGU7DQorfQ0KK0ZYX0RXT1JEIENQREZfRm9udDo6Q2hhckNvZGVGcm9tVW5pY29kZShGWF9XQ0hBUiB1bmljb2RlKSBjb25zdA0KK3sNCisgICAgaWYgKCFtX2JUb1VuaWNvZGVMb2FkZWQpIHsNCisgICAgICAgICgoQ1BERl9Gb250Kil0aGlzKS0+TG9hZFVuaWNvZGVNYXAoKTsNCisgICAgfQ0KKyAgICBpZiAobV9wVG9Vbmljb2RlTWFwKSB7DQorICAgICAgICBGWF9EV09SRCBjaGFyY29kZSA9IG1fcFRvVW5pY29kZU1hcC0+UmV2ZXJzZUxvb2t1cCh1bmljb2RlKTsNCisgICAgICAgIGlmIChjaGFyY29kZSkgew0KKyAgICAgICAgICAgIHJldHVybiBjaGFyY29kZTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gX0NoYXJDb2RlRnJvbVVuaWNvZGUodW5pY29kZSk7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENQREZfRm9udDo6RGVjb2RlU3RyaW5nKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIpIGNvbnN0DQorew0KKyAgICBDRlhfV2lkZVN0cmluZyByZXN1bHQ7DQorICAgIGludCBzcmNfbGVuID0gc3RyLkdldExlbmd0aCgpOw0KKyAgICByZXN1bHQuUmVzZXJ2ZShzcmNfbGVuKTsNCisgICAgRlhfTFBDU1RSIHNyY19idWYgPSBzdHI7DQorICAgIGludCBzcmNfcG9zID0gMDsNCisgICAgd2hpbGUgKHNyY19wb3MgPCBzcmNfbGVuKSB7DQorICAgICAgICBGWF9EV09SRCBjaGFyY29kZSA9IEdldE5leHRDaGFyKHNyY19idWYsIHNyY19wb3MpOw0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgdW5pY29kZSA9IFVuaWNvZGVGcm9tQ2hhckNvZGUoY2hhcmNvZGUpOw0KKyAgICAgICAgaWYgKCF1bmljb2RlLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIHJlc3VsdCArPSB1bmljb2RlOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXN1bHQgKz0gKEZYX1dDSEFSKWNoYXJjb2RlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiByZXN1bHQ7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfRm9udDo6RW5jb2RlU3RyaW5nKGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzdHIpIGNvbnN0DQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyByZXN1bHQ7DQorICAgIGludCBzcmNfbGVuID0gc3RyLkdldExlbmd0aCgpOw0KKyAgICBGWF9MUFNUUiBkZXN0X2J1ZiA9IHJlc3VsdC5HZXRCdWZmZXIoc3JjX2xlbiAqIDIpOw0KKyAgICBGWF9MUENXU1RSIHNyY19idWYgPSBzdHI7DQorICAgIGludCBkZXN0X3BvcyA9IDA7DQorICAgIGZvciAoaW50IHNyY19wb3MgPSAwOyBzcmNfcG9zIDwgc3JjX2xlbjsgc3JjX3BvcyArKykgew0KKyAgICAgICAgRlhfRFdPUkQgY2hhcmNvZGUgPSBDaGFyQ29kZUZyb21Vbmljb2RlKHNyY19idWZbc3JjX3Bvc10pOw0KKyAgICAgICAgZGVzdF9wb3MgKz0gQXBwZW5kQ2hhcihkZXN0X2J1ZiArIGRlc3RfcG9zLCBjaGFyY29kZSk7DQorICAgIH0NCisgICAgcmVzdWx0LlJlbGVhc2VCdWZmZXIoZGVzdF9wb3MpOw0KKyAgICByZXR1cm4gcmVzdWx0Ow0KK30NCit2b2lkIENQREZfRm9udDo6TG9hZEZvbnREZXNjcmlwdG9yKENQREZfRGljdGlvbmFyeSogcEZvbnREZXNjKQ0KK3sNCisgICAgbV9GbGFncyA9IHBGb250RGVzYy0+R2V0SW50ZWdlcihGWF9CU1RSQygiRmxhZ3MiKSwgUERGRk9OVF9OT05TWU1CT0xJQyk7DQorICAgIGludCBJdGFsaWNBbmdsZSA9IDA7DQorICAgIEZYX0JPT0wgYkV4aXN0SXRhbGljQW5nbGUgPSBGQUxTRTsNCisgICAgaWYgKHBGb250RGVzYy0+S2V5RXhpc3QoRlhfQlNUUkMoIkl0YWxpY0FuZ2xlIikpKSB7DQorICAgICAgICBJdGFsaWNBbmdsZSA9IHBGb250RGVzYy0+R2V0SW50ZWdlcihGWF9CU1RSQygiSXRhbGljQW5nbGUiKSk7DQorICAgICAgICBiRXhpc3RJdGFsaWNBbmdsZSA9IFRSVUU7DQorICAgIH0NCisgICAgaWYgKEl0YWxpY0FuZ2xlIDwgMCkgew0KKyAgICAgICAgbV9GbGFncyB8PSBQREZGT05UX0lUQUxJQzsNCisgICAgICAgIG1fSXRhbGljQW5nbGUgPSBJdGFsaWNBbmdsZTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJFeGlzdFN0ZW1WID0gRkFMU0U7DQorICAgIGlmIChwRm9udERlc2MtPktleUV4aXN0KEZYX0JTVFJDKCJTdGVtViIpKSkgew0KKyAgICAgICAgbV9TdGVtViA9IHBGb250RGVzYy0+R2V0SW50ZWdlcihGWF9CU1RSQygiU3RlbVYiKSk7DQorICAgICAgICBiRXhpc3RTdGVtViA9IFRSVUU7DQorICAgIH0NCisgICAgRlhfQk9PTCBiRXhpc3RBc2NlbnQgPSBGQUxTRTsNCisgICAgaWYgKHBGb250RGVzYy0+S2V5RXhpc3QoRlhfQlNUUkMoIkFzY2VudCIpKSkgew0KKyAgICAgICAgbV9Bc2NlbnQgPSBwRm9udERlc2MtPkdldEludGVnZXIoRlhfQlNUUkMoIkFzY2VudCIpKTsNCisgICAgICAgIGJFeGlzdEFzY2VudCA9IFRSVUU7DQorICAgIH0NCisgICAgRlhfQk9PTCBiRXhpc3REZXNjZW50ID0gRkFMU0U7DQorICAgIGlmIChwRm9udERlc2MtPktleUV4aXN0KEZYX0JTVFJDKCJEZXNjZW50IikpKSB7DQorICAgICAgICBtX0Rlc2NlbnQgPSBwRm9udERlc2MtPkdldEludGVnZXIoRlhfQlNUUkMoIkRlc2NlbnQiKSk7DQorICAgICAgICBiRXhpc3REZXNjZW50ID0gVFJVRTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJFeGlzdENhcEhlaWdodCA9IEZBTFNFOw0KKyAgICBpZiAocEZvbnREZXNjLT5LZXlFeGlzdChGWF9CU1RSQygiQ2FwSGVpZ2h0IikpKSB7DQorICAgICAgICBiRXhpc3RDYXBIZWlnaHQgPSBUUlVFOw0KKyAgICB9DQorICAgIGlmIChiRXhpc3RJdGFsaWNBbmdsZSAmJiBiRXhpc3RBc2NlbnQgJiYgYkV4aXN0Q2FwSGVpZ2h0ICYmIGJFeGlzdERlc2NlbnQgJiYgYkV4aXN0U3RlbVYpIHsNCisgICAgICAgIG1fRmxhZ3MgfD0gUERGRk9OVF9VU0VFWFRFUk5BVFRSOw0KKyAgICB9DQorICAgIGlmIChtX0Rlc2NlbnQgPiAxMCkgew0KKyAgICAgICAgbV9EZXNjZW50ID0gLW1fRGVzY2VudDsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwQkJveCA9IHBGb250RGVzYy0+R2V0QXJyYXkoRlhfQlNUUkMoIkZvbnRCQm94IikpOw0KKyAgICBpZiAocEJCb3gpIHsNCisgICAgICAgIG1fRm9udEJCb3gubGVmdCA9IHBCQm94LT5HZXRJbnRlZ2VyKDApOw0KKyAgICAgICAgbV9Gb250QkJveC5ib3R0b20gPSBwQkJveC0+R2V0SW50ZWdlcigxKTsNCisgICAgICAgIG1fRm9udEJCb3gucmlnaHQgPSBwQkJveC0+R2V0SW50ZWdlcigyKTsNCisgICAgICAgIG1fRm9udEJCb3gudG9wID0gcEJCb3gtPkdldEludGVnZXIoMyk7DQorICAgIH0NCisgICAgQ1BERl9TdHJlYW0qIHBGb250RmlsZSA9IHBGb250RGVzYy0+R2V0U3RyZWFtKEZYX0JTVFJDKCJGb250RmlsZSIpKTsNCisgICAgaWYgKHBGb250RmlsZSA9PSBOVUxMKSB7DQorICAgICAgICBwRm9udEZpbGUgPSBwRm9udERlc2MtPkdldFN0cmVhbShGWF9CU1RSQygiRm9udEZpbGUyIikpOw0KKyAgICB9DQorICAgIGlmIChwRm9udEZpbGUgPT0gTlVMTCkgew0KKyAgICAgICAgcEZvbnRGaWxlID0gcEZvbnREZXNjLT5HZXRTdHJlYW0oRlhfQlNUUkMoIkZvbnRGaWxlMyIpKTsNCisgICAgfQ0KKyAgICBpZiAocEZvbnRGaWxlKSB7DQorICAgICAgICBtX3BGb250RmlsZSA9IG1fcERvY3VtZW50LT5Mb2FkRm9udEZpbGUocEZvbnRGaWxlKTsNCisgICAgICAgIGlmIChtX3BGb250RmlsZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfTFBDQllURSBwRm9udERhdGEgPSBtX3BGb250RmlsZS0+R2V0RGF0YSgpOw0KKyAgICAgICAgRlhfRFdPUkQgZHdGb250U2l6ZSA9IG1fcEZvbnRGaWxlLT5HZXRTaXplKCk7DQorICAgICAgICBtX0ZvbnQuTG9hZEVtYmVkZGVkKHBGb250RGF0YSwgZHdGb250U2l6ZSk7DQorICAgICAgICBpZiAobV9Gb250Lm1fRmFjZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgbV9wRm9udEZpbGUgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3Nob3J0IFRUMlBERihpbnQgbSwgRlhGVF9GYWNlIGZhY2UpDQorew0KKyAgICBpbnQgdXBtID0gRlhGVF9HZXRfRmFjZV9Vbml0c1BlckVNKGZhY2UpOw0KKyAgICBpZiAodXBtID09IDApIHsNCisgICAgICAgIHJldHVybiAoc2hvcnQpbTsNCisgICAgfQ0KKyAgICByZXR1cm4gKG0gKiAxMDAwICsgdXBtIC8gMikgLyB1cG07DQorfQ0KK3ZvaWQgQ1BERl9Gb250OjpDaGVja0ZvbnRNZXRyaWNzKCkNCit7DQorICAgIGlmIChtX0ZvbnRCQm94LnRvcCA9PSAwICYmIG1fRm9udEJCb3guYm90dG9tID09IDAgJiYgbV9Gb250QkJveC5sZWZ0ID09IDAgJiYgbV9Gb250QkJveC5yaWdodCA9PSAwKSB7DQorICAgICAgICBpZiAobV9Gb250Lm1fRmFjZSkgew0KKyAgICAgICAgICAgIG1fRm9udEJCb3gubGVmdCA9IFRUMlBERihGWEZUX0dldF9GYWNlX3hNaW4obV9Gb250Lm1fRmFjZSksIG1fRm9udC5tX0ZhY2UpOw0KKyAgICAgICAgICAgIG1fRm9udEJCb3guYm90dG9tID0gVFQyUERGKEZYRlRfR2V0X0ZhY2VfeU1pbihtX0ZvbnQubV9GYWNlKSwgbV9Gb250Lm1fRmFjZSk7DQorICAgICAgICAgICAgbV9Gb250QkJveC5yaWdodCA9IFRUMlBERihGWEZUX0dldF9GYWNlX3hNYXgobV9Gb250Lm1fRmFjZSksIG1fRm9udC5tX0ZhY2UpOw0KKyAgICAgICAgICAgIG1fRm9udEJCb3gudG9wID0gVFQyUERGKEZYRlRfR2V0X0ZhY2VfeU1heChtX0ZvbnQubV9GYWNlKSwgbV9Gb250Lm1fRmFjZSk7DQorICAgICAgICAgICAgbV9Bc2NlbnQgPSBUVDJQREYoRlhGVF9HZXRfRmFjZV9Bc2NlbmRlcihtX0ZvbnQubV9GYWNlKSwgbV9Gb250Lm1fRmFjZSk7DQorICAgICAgICAgICAgbV9EZXNjZW50ID0gVFQyUERGKEZYRlRfR2V0X0ZhY2VfRGVzY2VuZGVyKG1fRm9udC5tX0ZhY2UpLCBtX0ZvbnQubV9GYWNlKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgRlhfQk9PTCBiRmlyc3QgPSBUUlVFOw0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX1JFQ1QgcmVjdDsNCisgICAgICAgICAgICAgICAgR2V0Q2hhckJCb3goaSwgcmVjdCk7DQorICAgICAgICAgICAgICAgIGlmIChyZWN0LmxlZnQgPT0gcmVjdC5yaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGJGaXJzdCkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9Gb250QkJveCA9IHJlY3Q7DQorICAgICAgICAgICAgICAgICAgICBiRmlyc3QgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZvbnRCQm94LnRvcCA8IHJlY3QudG9wKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9Gb250QkJveC50b3AgPSByZWN0LnRvcDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZvbnRCQm94LnJpZ2h0IDwgcmVjdC5yaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fRm9udEJCb3gucmlnaHQgPSByZWN0LnJpZ2h0Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fRm9udEJCb3gubGVmdCA+IHJlY3QubGVmdCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fRm9udEJCb3gubGVmdCA9IHJlY3QubGVmdDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZvbnRCQm94LmJvdHRvbSA+IHJlY3QuYm90dG9tKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9Gb250QkJveC5ib3R0b20gPSByZWN0LmJvdHRvbTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9Bc2NlbnQgPT0gMCAmJiBtX0Rlc2NlbnQgPT0gMCkgew0KKyAgICAgICAgRlhfUkVDVCByZWN0Ow0KKyAgICAgICAgR2V0Q2hhckJCb3goJ0EnLCByZWN0KTsNCisgICAgICAgIGlmIChyZWN0LmJvdHRvbSA9PSByZWN0LnRvcCkgew0KKyAgICAgICAgICAgIG1fQXNjZW50ID0gbV9Gb250QkJveC50b3A7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fQXNjZW50ID0gcmVjdC50b3A7DQorICAgICAgICB9DQorICAgICAgICBHZXRDaGFyQkJveCgnZycsIHJlY3QpOw0KKyAgICAgICAgaWYgKHJlY3QuYm90dG9tID09IHJlY3QudG9wKSB7DQorICAgICAgICAgICAgbV9EZXNjZW50ID0gbV9Gb250QkJveC5ib3R0b207DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fRGVzY2VudCA9IHJlY3QuYm90dG9tOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9Gb250OjpMb2FkVW5pY29kZU1hcCgpDQorew0KKyAgICBtX2JUb1VuaWNvZGVMb2FkZWQgPSBUUlVFOw0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IG1fcEZvbnREaWN0LT5HZXRTdHJlYW0oRlhfQlNUUkMoIlRvVW5pY29kZSIpKTsNCisgICAgaWYgKHBTdHJlYW0gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcFRvVW5pY29kZU1hcCA9IEZYX05FVyBDUERGX1RvVW5pY29kZU1hcDsNCisgICAgbV9wVG9Vbmljb2RlTWFwLT5Mb2FkKHBTdHJlYW0pOw0KK30NCitpbnQgQ1BERl9Gb250OjpHZXRTdHJpbmdXaWR0aChGWF9MUENTVFIgcFN0cmluZywgaW50IHNpemUpDQorew0KKyAgICBpbnQgb2Zmc2V0ID0gMDsNCisgICAgaW50IHdpZHRoID0gMDsNCisgICAgd2hpbGUgKG9mZnNldCA8IHNpemUpIHsNCisgICAgICAgIEZYX0RXT1JEIGNoYXJjb2RlID0gR2V0TmV4dENoYXIocFN0cmluZywgb2Zmc2V0KTsNCisgICAgICAgIHdpZHRoICs9IEdldENoYXJXaWR0aEYoY2hhcmNvZGUpOw0KKyAgICB9DQorICAgIHJldHVybiB3aWR0aDsNCit9DQoraW50IENQREZfRm9udDo6R2V0Q2hhclR5cGVXaWR0aChGWF9EV09SRCBjaGFyY29kZSkNCit7DQorICAgIGlmIChtX0ZvbnQubV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGludCBnbHlwaF9pbmRleCA9IEdseXBoRnJvbUNoYXJDb2RlKGNoYXJjb2RlKTsNCisgICAgaWYgKGdseXBoX2luZGV4ID09IDB4ZmZmZikgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIG1fRm9udC5HZXRHbHlwaFdpZHRoKGdseXBoX2luZGV4KTsNCit9DQoraW50IF9QREZfR2V0U3RhbmRhcmRGb250TmFtZShDRlhfQnl0ZVN0cmluZyYgbmFtZSk7DQorQ1BERl9Gb250KiBDUERGX0ZvbnQ6OkdldFN0b2NrRm9udChDUERGX0RvY3VtZW50KiBwRG9jLCBGWF9CU1RSIG5hbWUpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBmb250bmFtZShuYW1lKTsNCisgICAgaW50IGZvbnRfaWQgPSBfUERGX0dldFN0YW5kYXJkRm9udE5hbWUoZm9udG5hbWUpOw0KKyAgICBpZiAoZm9udF9pZCA8IDApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRm9udEdsb2JhbHMqIHBGb250R2xvYmFscyA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UGFnZU1vZHVsZSgpLT5HZXRGb250R2xvYmFscygpOw0KKyAgICBDUERGX0ZvbnQqIHBGb250ID0gcEZvbnRHbG9iYWxzLT5GaW5kKHBEb2MsIGZvbnRfaWQpOw0KKyAgICBpZiAocEZvbnQpIHsNCisgICAgICAgIHJldHVybiBwRm9udDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gQ1BERl9EaWN0aW9uYXJ5OjpDcmVhdGUoKTsNCisgICAgcERpY3QtPlNldEF0TmFtZShGWF9CU1RSQygiVHlwZSIpLCBGWF9CU1RSQygiRm9udCIpKTsNCisgICAgcERpY3QtPlNldEF0TmFtZShGWF9CU1RSQygiU3VidHlwZSIpLCBGWF9CU1RSQygiVHlwZTEiKSk7DQorICAgIHBEaWN0LT5TZXRBdE5hbWUoRlhfQlNUUkMoIkJhc2VGb250IiksIGZvbnRuYW1lKTsNCisgICAgcERpY3QtPlNldEF0TmFtZShGWF9CU1RSQygiRW5jb2RpbmciKSwgRlhfQlNUUkMoIldpbkFuc2lFbmNvZGluZyIpKTsNCisgICAgcEZvbnQgPSBDUERGX0ZvbnQ6OkNyZWF0ZUZvbnRGKE5VTEwsIHBEaWN0KTsNCisgICAgcEZvbnRHbG9iYWxzLT5TZXQocERvYywgZm9udF9pZCwgcEZvbnQpOw0KKyAgICByZXR1cm4gcEZvbnQ7DQorfQ0KK2NvbnN0IEZYX0JZVEUgQ2hpbmVzZUZvbnROYW1lc1tdWzVdID0gew0KKyAgICB7MHhDQiwgMHhDRSwgMHhDQywgMHhFNSwgMHgwMH0sDQorICAgIHsweEJGLCAweEFDLCAweENDLCAweEU1LCAweDAwfSwNCisgICAgezB4QkEsIDB4REEsIDB4Q0MsIDB4RTUsIDB4MDB9LA0KKyAgICB7MHhCNywgMHhDMiwgMHhDQiwgMHhDRSwgMHgwMH0sDQorICAgIHsweEQwLCAweEMyLCAweENCLCAweENFLCAweDAwfQ0KK307DQorQ1BERl9Gb250KiBDUERGX0ZvbnQ6OkNyZWF0ZUZvbnRGKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfRGljdGlvbmFyeSogcEZvbnREaWN0KQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgdHlwZSA9IHBGb250RGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJTdWJ0eXBlIikpOw0KKyAgICBDUERGX0ZvbnQqIHBGb250Ow0KKyAgICBpZiAodHlwZSA9PSBGWF9CU1RSQygiVHJ1ZVR5cGUiKSkgew0KKyAgICAgICAgew0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9XSU5ET1dTXyB8fCBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX0xJTlVYXyB8fCBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX0FORFJPSURfIHx8IF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgYmFzZWZvbnQgPSBwRm9udERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiQmFzZUZvbnQiKSk7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgdGFnID0gYmFzZWZvbnQuTGVmdCg0KTsNCisgICAgICAgICAgICBpbnQgaTsNCisgICAgICAgICAgICBpbnQgY291bnQgPSBzaXplb2YoQ2hpbmVzZUZvbnROYW1lcykgLyBzaXplb2YoQ2hpbmVzZUZvbnROYW1lc1swXSk7DQorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsNCisgICAgICAgICAgICAgICAgaWYgKHRhZyA9PSBDRlhfQnl0ZVN0cmluZygoRlhfTFBDU1RSKUNoaW5lc2VGb250TmFtZXNbaV0pKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaSA8IGNvdW50KSB7DQorICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcEZvbnREZXNjID0gcEZvbnREaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJGb250RGVzY3JpcHRvciIpKTsNCisgICAgICAgICAgICAgICAgaWYgKHBGb250RGVzYyA9PSBOVUxMIHx8ICFwRm9udERlc2MtPktleUV4aXN0KEZYX0JTVFJDKCJGb250RmlsZTIiKSkpIHsNCisgICAgICAgICAgICAgICAgICAgIHBGb250ID0gRlhfTkVXIENQREZfQ0lERm9udDsNCisgICAgICAgICAgICAgICAgICAgIHBGb250LT5Jbml0aWFsaXplKCk7DQorICAgICAgICAgICAgICAgICAgICBwRm9udC0+bV9Gb250VHlwZSA9IFBERkZPTlRfQ0lERk9OVDsNCisgICAgICAgICAgICAgICAgICAgIHBGb250LT5tX3BGb250RGljdCA9IHBGb250RGljdDsNCisgICAgICAgICAgICAgICAgICAgIHBGb250LT5tX3BEb2N1bWVudCA9IHBEb2M7DQorICAgICAgICAgICAgICAgICAgICBpZiAoIXBGb250LT5Mb2FkKCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcEZvbnQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcEZvbnQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorI2VuZGlmDQorICAgICAgICB9DQorICAgICAgICBwRm9udCA9IEZYX05FVyBDUERGX1RydWVUeXBlRm9udDsNCisgICAgICAgIHBGb250LT5Jbml0aWFsaXplKCk7DQorICAgICAgICBwRm9udC0+bV9Gb250VHlwZSA9IFBERkZPTlRfVFJVRVRZUEU7DQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSBGWF9CU1RSQygiVHlwZTMiKSkgew0KKyAgICAgICAgcEZvbnQgPSBGWF9ORVcgQ1BERl9UeXBlM0ZvbnQ7DQorICAgICAgICBwRm9udC0+SW5pdGlhbGl6ZSgpOw0KKyAgICAgICAgcEZvbnQtPm1fRm9udFR5cGUgPSBQREZGT05UX1RZUEUzOw0KKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gRlhfQlNUUkMoIlR5cGUwIikpIHsNCisgICAgICAgIHBGb250ID0gRlhfTkVXIENQREZfQ0lERm9udDsNCisgICAgICAgIHBGb250LT5Jbml0aWFsaXplKCk7DQorICAgICAgICBwRm9udC0+bV9Gb250VHlwZSA9IFBERkZPTlRfQ0lERk9OVDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBGb250ID0gRlhfTkVXIENQREZfVHlwZTFGb250Ow0KKyAgICAgICAgcEZvbnQtPkluaXRpYWxpemUoKTsNCisgICAgICAgIHBGb250LT5tX0ZvbnRUeXBlID0gUERGRk9OVF9UWVBFMTsNCisgICAgfQ0KKyAgICBwRm9udC0+bV9wRm9udERpY3QgPSBwRm9udERpY3Q7DQorICAgIHBGb250LT5tX3BEb2N1bWVudCA9IHBEb2M7DQorICAgIGlmICghcEZvbnQtPkxvYWQoKSkgew0KKyAgICAgICAgZGVsZXRlIHBGb250Ow0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBGb250Ow0KK30NCitGWF9CT09MIENQREZfRm9udDo6TG9hZCgpDQorew0KKyAgICBpZiAobV9wRm9udERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIHR5cGUgPSBtX3BGb250RGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJTdWJ0eXBlIikpOw0KKyAgICBtX0Jhc2VGb250ID0gbV9wRm9udERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiQmFzZUZvbnQiKSk7DQorICAgIGlmICh0eXBlID09IEZYX0JTVFJDKCJNTVR5cGUxIikpIHsNCisgICAgICAgIHR5cGUgPSBGWF9CU1RSQygiVHlwZTEiKTsNCisgICAgfQ0KKyAgICByZXR1cm4gX0xvYWQoKTsNCit9DQorc3RhdGljIENGWF9XaWRlU3RyaW5nIF9Gb250TWFwX0dldFdpZGVTdHJpbmcoQ0ZYX0NoYXJNYXAqIHBNYXAsIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBieXRlc3RyKQ0KK3sNCisgICAgcmV0dXJuICgoQ1BERl9Gb250Q2hhck1hcCopcE1hcCktPm1fcEZvbnQtPkRlY29kZVN0cmluZyhieXRlc3RyKTsNCit9DQorc3RhdGljIENGWF9CeXRlU3RyaW5nIF9Gb250TWFwX0dldEJ5dGVTdHJpbmcoQ0ZYX0NoYXJNYXAqIHBNYXAsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiB3aWRlc3RyKQ0KK3sNCisgICAgcmV0dXJuICgoQ1BERl9Gb250Q2hhck1hcCopcE1hcCktPm1fcEZvbnQtPkVuY29kZVN0cmluZyh3aWRlc3RyKTsNCit9DQorQ1BERl9Gb250Q2hhck1hcDo6Q1BERl9Gb250Q2hhck1hcChDUERGX0ZvbnQqIHBGb250KQ0KK3sNCisgICAgbV9HZXRCeXRlU3RyaW5nID0gX0ZvbnRNYXBfR2V0Qnl0ZVN0cmluZzsNCisgICAgbV9HZXRXaWRlU3RyaW5nID0gX0ZvbnRNYXBfR2V0V2lkZVN0cmluZzsNCisgICAgbV9wRm9udCA9IHBGb250Ow0KK30NCitDRlhfV2lkZVN0cmluZyBDUERGX1RvVW5pY29kZU1hcDo6TG9va3VwKEZYX0RXT1JEIGNoYXJjb2RlKQ0KK3sNCisgICAgRlhfRFdPUkQgdmFsdWU7DQorICAgIGlmIChtX01hcC5Mb29rdXAoY2hhcmNvZGUsIHZhbHVlKSkgew0KKyAgICAgICAgRlhfV0NIQVIgdW5pY29kZSA9IChGWF9XQ0hBUikodmFsdWUgJiAweGZmZmYpOw0KKyAgICAgICAgaWYgKHVuaWNvZGUgIT0gMHhmZmZmKSB7DQorICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGU7DQorICAgICAgICB9DQorICAgICAgICBGWF9MUENXU1RSIGJ1ZiA9IG1fTXVsdGlDaGFyQnVmLkdldEJ1ZmZlcigpOw0KKyAgICAgICAgRlhfRFdPUkQgYnVmX2xlbiA9IG1fTXVsdGlDaGFyQnVmLkdldExlbmd0aCgpOw0KKyAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMIHx8IGJ1Zl9sZW4gPT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZygpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgaW5kZXggPSB2YWx1ZSA+PiAxNjsNCisgICAgICAgIGlmIChpbmRleCA+PSBidWZfbGVuKSB7DQorICAgICAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCBsZW4gPSBidWZbaW5kZXhdOw0KKyAgICAgICAgaWYgKGluZGV4ICsgbGVuIDwgaW5kZXggfHwgaW5kZXggKyBsZW4gPj0gYnVmX2xlbikgew0KKyAgICAgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZygpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKGJ1ZiArIGluZGV4ICsgMSwgbGVuKTsNCisgICAgfQ0KKyAgICBpZiAobV9wQmFzZU1hcCkgew0KKyAgICAgICAgcmV0dXJuIG1fcEJhc2VNYXAtPlVuaWNvZGVGcm9tQ0lEKChGWF9XT1JEKWNoYXJjb2RlKTsNCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoKTsNCit9DQorRlhfRFdPUkQgQ1BERl9Ub1VuaWNvZGVNYXA6OlJldmVyc2VMb29rdXAoRlhfV0NIQVIgdW5pY29kZSkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgRlhfRFdPUkQga2V5LCB2YWx1ZTsNCisgICAgICAgIG1fTWFwLkdldE5leHRBc3NvYyhwb3MsIGtleSwgdmFsdWUpOw0KKyAgICAgICAgaWYgKChGWF9XQ0hBUil2YWx1ZSA9PSB1bmljb2RlKSB7DQorICAgICAgICAgICAgcmV0dXJuIGtleTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorc3RhdGljIEZYX0RXT1JEIF9TdHJpbmdUb0NvZGUoRlhfQlNUUiBzdHIpDQorew0KKyAgICBGWF9MUENTVFIgYnVmID0gc3RyLkdldENTdHIoKTsNCisgICAgaW50IGxlbiA9IHN0ci5HZXRMZW5ndGgoKTsNCisgICAgaWYgKGxlbiA9PSAwKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpbnQgcmVzdWx0ID0gMDsNCisgICAgaWYgKGJ1ZlswXSA9PSAnPCcpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbGVuOyBpICsrKSB7DQorICAgICAgICAgICAgaW50IGRpZ2l0Ow0KKyAgICAgICAgICAgIGlmIChidWZbaV0gPj0gJzAnICYmIGJ1ZltpXSA8PSAnOScpIHsNCisgICAgICAgICAgICAgICAgZGlnaXQgPSBidWZbaV0gLSAnMCc7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChidWZbaV0gPj0gJ2EnICYmIGJ1ZltpXSA8PSAnZicpIHsNCisgICAgICAgICAgICAgICAgZGlnaXQgPSBidWZbaV0gLSAnYScgKyAxMDsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKGJ1ZltpXSA+PSAnQScgJiYgYnVmW2ldIDw9ICdGJykgew0KKyAgICAgICAgICAgICAgICBkaWdpdCA9IGJ1ZltpXSAtICdBJyArIDEwOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiArIGRpZ2l0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpICsrKSB7DQorICAgICAgICAgICAgaWYgKGJ1ZltpXSA8ICcwJyB8fCBidWZbaV0gPiAnOScpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDEwICsgYnVmW2ldIC0gJzAnOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiByZXN1bHQ7DQorfQ0KK3N0YXRpYyBDRlhfV2lkZVN0cmluZyBfU3RyaW5nRGF0YUFkZChDRlhfV2lkZVN0cmluZyBzdHIpDQorew0KKyAgICBDRlhfV2lkZVN0cmluZyByZXQ7DQorICAgIGludCBsZW4gPSBzdHIuR2V0TGVuZ3RoKCk7DQorICAgIEZYX1dDSEFSIHZhbHVlID0gMTsNCisgICAgZm9yIChpbnQgaSA9IGxlbiAtIDE7IGkgPj0gMCA7IC0taSkgew0KKyAgICAgICAgRlhfV0NIQVIgY2ggPSBzdHJbaV0gKyB2YWx1ZTsNCisgICAgICAgIGlmIChjaCA8IHN0cltpXSkgew0KKyAgICAgICAgICAgIHJldC5JbnNlcnQoMCwgMCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldC5JbnNlcnQoMCwgY2gpOw0KKyAgICAgICAgICAgIHZhbHVlID0gMDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAodmFsdWUpIHsNCisgICAgICAgIHJldC5JbnNlcnQoMCwgdmFsdWUpOw0KKyAgICB9DQorICAgIHJldHVybiByZXQ7DQorfQ0KK3N0YXRpYyBDRlhfV2lkZVN0cmluZyBfU3RyaW5nVG9XaWRlU3RyaW5nKEZYX0JTVFIgc3RyKQ0KK3sNCisgICAgRlhfTFBDU1RSIGJ1ZiA9IHN0ci5HZXRDU3RyKCk7DQorICAgIGludCBsZW4gPSBzdHIuR2V0TGVuZ3RoKCk7DQorICAgIGlmIChsZW4gPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgcmVzdWx0Ow0KKyAgICBpZiAoYnVmWzBdID09ICc8Jykgew0KKyAgICAgICAgaW50IGJ5dGVfcG9zID0gMDsNCisgICAgICAgIEZYX1dDSEFSIGNoID0gMDsNCisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbGVuOyBpICsrKSB7DQorICAgICAgICAgICAgaW50IGRpZ2l0Ow0KKyAgICAgICAgICAgIGlmIChidWZbaV0gPj0gJzAnICYmIGJ1ZltpXSA8PSAnOScpIHsNCisgICAgICAgICAgICAgICAgZGlnaXQgPSBidWZbaV0gLSAnMCc7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChidWZbaV0gPj0gJ2EnICYmIGJ1ZltpXSA8PSAnZicpIHsNCisgICAgICAgICAgICAgICAgZGlnaXQgPSBidWZbaV0gLSAnYScgKyAxMDsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKGJ1ZltpXSA+PSAnQScgJiYgYnVmW2ldIDw9ICdGJykgew0KKyAgICAgICAgICAgICAgICBkaWdpdCA9IGJ1ZltpXSAtICdBJyArIDEwOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaCA9IGNoICogMTYgKyBkaWdpdDsNCisgICAgICAgICAgICBieXRlX3BvcyArKzsNCisgICAgICAgICAgICBpZiAoYnl0ZV9wb3MgPT0gNCkgew0KKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gY2g7DQorICAgICAgICAgICAgICAgIGJ5dGVfcG9zID0gMDsNCisgICAgICAgICAgICAgICAgY2ggPSAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiByZXN1bHQ7DQorICAgIH0NCisgICAgaWYgKGJ1ZlswXSA9PSAnKCcpIHsNCisgICAgfQ0KKyAgICByZXR1cm4gcmVzdWx0Ow0KK30NCit2b2lkIENQREZfVG9Vbmljb2RlTWFwOjpMb2FkKENQREZfU3RyZWFtKiBwU3RyZWFtKQ0KK3sNCisgICAgaW50IENJRFNldCA9IDA7DQorICAgIENQREZfU3RyZWFtQWNjIHN0cmVhbTsNCisgICAgc3RyZWFtLkxvYWRBbGxEYXRhKHBTdHJlYW0sIEZBTFNFKTsNCisgICAgQ1BERl9TaW1wbGVQYXJzZXIgcGFyc2VyKHN0cmVhbS5HZXREYXRhKCksIHN0cmVhbS5HZXRTaXplKCkpOw0KKyAgICBtX01hcC5Fc3RpbWF0ZVNpemUoc3RyZWFtLkdldFNpemUoKSAvIDgsIDEwMjQpOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmdDIHdvcmQgPSBwYXJzZXIuR2V0V29yZCgpOw0KKyAgICAgICAgaWYgKHdvcmQuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZiAod29yZCA9PSBGWF9CU1RSQygiYmVnaW5iZmNoYXIiKSkgew0KKyAgICAgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgICAgIHdvcmQgPSBwYXJzZXIuR2V0V29yZCgpOw0KKyAgICAgICAgICAgICAgICBpZiAod29yZC5Jc0VtcHR5KCkgfHwgd29yZCA9PSBGWF9CU1RSQygiZW5kYmZjaGFyIikpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIHNyY2NvZGUgPSBfU3RyaW5nVG9Db2RlKHdvcmQpOw0KKyAgICAgICAgICAgICAgICB3b3JkID0gcGFyc2VyLkdldFdvcmQoKTsNCisgICAgICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgZGVzdGNvZGUgPSBfU3RyaW5nVG9XaWRlU3RyaW5nKHdvcmQpOw0KKyAgICAgICAgICAgICAgICBpbnQgbGVuID0gZGVzdGNvZGUuR2V0TGVuZ3RoKCk7DQorICAgICAgICAgICAgICAgIGlmIChsZW4gPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGxlbiA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICBtX01hcC5TZXRBdChzcmNjb2RlLCBkZXN0Y29kZS5HZXRBdCgwKSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBtX01hcC5TZXRBdChzcmNjb2RlLCBtX011bHRpQ2hhckJ1Zi5HZXRMZW5ndGgoKSAqIDB4MTAwMDAgKyAweGZmZmYpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9NdWx0aUNoYXJCdWYuQXBwZW5kQ2hhcihkZXN0Y29kZS5HZXRMZW5ndGgoKSk7DQorICAgICAgICAgICAgICAgICAgICBtX011bHRpQ2hhckJ1ZiA8PCBkZXN0Y29kZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAod29yZCA9PSBGWF9CU1RSQygiYmVnaW5iZnJhbmdlIikpIHsNCisgICAgICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBsb3csIGhpZ2g7DQorICAgICAgICAgICAgICAgIGxvdyA9IHBhcnNlci5HZXRXb3JkKCk7DQorICAgICAgICAgICAgICAgIGlmIChsb3cuSXNFbXB0eSgpIHx8IGxvdyA9PSBGWF9CU1RSQygiZW5kYmZyYW5nZSIpKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBoaWdoID0gcGFyc2VyLkdldFdvcmQoKTsNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgbG93Y29kZSA9IF9TdHJpbmdUb0NvZGUobG93KTsNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgaGlnaGNvZGUgPSAobG93Y29kZSAmIDB4ZmZmZmZmMDApIHwgKF9TdHJpbmdUb0NvZGUoaGlnaCkgJiAweGZmKTsNCisgICAgICAgICAgICAgICAgaWYgKGhpZ2hjb2RlID09IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdGFydCA9IHBhcnNlci5HZXRXb3JkKCk7DQorICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PSBGWF9CU1RSQygiWyIpKSB7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGNvZGUgPSBsb3djb2RlOyBjb2RlIDw9IGhpZ2hjb2RlOyBjb2RlICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgZGVzdCA9IHBhcnNlci5HZXRXb3JkKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgZGVzdGNvZGUgPSBfU3RyaW5nVG9XaWRlU3RyaW5nKGRlc3QpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW4gPSBkZXN0Y29kZS5HZXRMZW5ndGgoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX01hcC5TZXRBdChjb2RlLCBkZXN0Y29kZS5HZXRBdCgwKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9NYXAuU2V0QXQoY29kZSwgbV9NdWx0aUNoYXJCdWYuR2V0TGVuZ3RoKCkgKiAweDEwMDAwICsgMHhmZmZmKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9NdWx0aUNoYXJCdWYuQXBwZW5kQ2hhcihkZXN0Y29kZS5HZXRMZW5ndGgoKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fTXVsdGlDaGFyQnVmIDw8IGRlc3Rjb2RlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHBhcnNlci5HZXRXb3JkKCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBkZXN0Y29kZSA9IF9TdHJpbmdUb1dpZGVTdHJpbmcoc3RhcnQpOw0KKyAgICAgICAgICAgICAgICAgICAgaW50IGxlbiA9IGRlc3Rjb2RlLkdldExlbmd0aCgpOw0KKyAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgdmFsdWUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBfU3RyaW5nVG9Db2RlKHN0YXJ0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGNvZGUgPSBsb3djb2RlOyBjb2RlIDw9IGhpZ2hjb2RlOyBjb2RlICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fTWFwLlNldEF0KGNvZGUsIHZhbHVlKyspOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChGWF9EV09SRCBjb2RlID0gbG93Y29kZTsgY29kZSA8PSBoaWdoY29kZTsgY29kZSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyByZXRjb2RlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA9PSBsb3djb2RlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRjb2RlID0gZGVzdGNvZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRjb2RlID0gX1N0cmluZ0RhdGFBZGQoZGVzdGNvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fTWFwLlNldEF0KGNvZGUsIG1fTXVsdGlDaGFyQnVmLkdldExlbmd0aCgpICogMHgxMDAwMCArIDB4ZmZmZik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fTXVsdGlDaGFyQnVmLkFwcGVuZENoYXIocmV0Y29kZS5HZXRMZW5ndGgoKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fTXVsdGlDaGFyQnVmIDw8IHJldGNvZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rjb2RlID0gcmV0Y29kZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKHdvcmQgPT0gRlhfQlNUUkMoIi9BZG9iZS1Lb3JlYTEtVUNTMiIpKSB7DQorICAgICAgICAgICAgQ0lEU2V0ID0gQ0lEU0VUX0tPUkVBMTsNCisgICAgICAgIH0gZWxzZSBpZiAod29yZCA9PSBGWF9CU1RSQygiL0Fkb2JlLUphcGFuMS1VQ1MyIikpIHsNCisgICAgICAgICAgICBDSURTZXQgPSBDSURTRVRfSkFQQU4xOw0KKyAgICAgICAgfSBlbHNlIGlmICh3b3JkID09IEZYX0JTVFJDKCIvQWRvYmUtQ05TMS1VQ1MyIikpIHsNCisgICAgICAgICAgICBDSURTZXQgPSBDSURTRVRfQ05TMTsNCisgICAgICAgIH0gZWxzZSBpZiAod29yZCA9PSBGWF9CU1RSQygiL0Fkb2JlLUdCMS1VQ1MyIikpIHsNCisgICAgICAgICAgICBDSURTZXQgPSBDSURTRVRfR0IxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChDSURTZXQpIHsNCisgICAgICAgIG1fcEJhc2VNYXAgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldFBhZ2VNb2R1bGUoKS0+R2V0Rm9udEdsb2JhbHMoKS0+bV9DTWFwTWFuYWdlci5HZXRDSUQyVW5pY29kZU1hcChDSURTZXQsIEZBTFNFKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcEJhc2VNYXAgPSBOVUxMOw0KKyAgICB9DQorfQ0KK3N0YXRpYyBGWF9CT09MIEdldFByZWRlZmluZWRFbmNvZGluZyhpbnQmIGJhc2VtYXAsIGNvbnN0IENGWF9CeXRlU3RyaW5nJiB2YWx1ZSkNCit7DQorICAgIGlmICh2YWx1ZSA9PSBGWF9CU1RSQygiV2luQW5zaUVuY29kaW5nIikpIHsNCisgICAgICAgIGJhc2VtYXAgPSBQREZGT05UX0VOQ09ESU5HX1dJTkFOU0k7DQorICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gRlhfQlNUUkMoIk1hY1JvbWFuRW5jb2RpbmciKSkgew0KKyAgICAgICAgYmFzZW1hcCA9IFBERkZPTlRfRU5DT0RJTkdfTUFDUk9NQU47DQorICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gRlhfQlNUUkMoIk1hY0V4cGVydEVuY29kaW5nIikpIHsNCisgICAgICAgIGJhc2VtYXAgPSBQREZGT05UX0VOQ09ESU5HX01BQ0VYUEVSVDsNCisgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBGWF9CU1RSQygiUERGRG9jRW5jb2RpbmciKSkgew0KKyAgICAgICAgYmFzZW1hcCA9IFBERkZPTlRfRU5DT0RJTkdfUERGRE9DOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENQREZfRm9udDo6TG9hZFBERkVuY29kaW5nKENQREZfT2JqZWN0KiBwRW5jb2RpbmcsIGludCYgaUJhc2VFbmNvZGluZywgQ0ZYX0J5dGVTdHJpbmcqJiBwQ2hhck5hbWVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiRW1iZWRkZWQsIEZYX0JPT0wgYlRydWVUeXBlKQ0KK3sNCisgICAgaWYgKHBFbmNvZGluZyA9PSBOVUxMKSB7DQorICAgICAgICBpZiAobV9CYXNlRm9udCA9PSBGWF9CU1RSQygiU3ltYm9sIikpIHsNCisgICAgICAgICAgICBpQmFzZUVuY29kaW5nID0gYlRydWVUeXBlID8gUERGRk9OVF9FTkNPRElOR19NU19TWU1CT0wgOiBQREZGT05UX0VOQ09ESU5HX0FET0JFX1NZTUJPTDsNCisgICAgICAgIH0gZWxzZSBpZiAoIWJFbWJlZGRlZCAmJiBpQmFzZUVuY29kaW5nID09IFBERkZPTlRfRU5DT0RJTkdfQlVJTFRJTikgew0KKyAgICAgICAgICAgIGlCYXNlRW5jb2RpbmcgPSBQREZGT05UX0VOQ09ESU5HX1dJTkFOU0k7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBFbmNvZGluZy0+R2V0VHlwZSgpID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICBpZiAoaUJhc2VFbmNvZGluZyA9PSBQREZGT05UX0VOQ09ESU5HX0FET0JFX1NZTUJPTCB8fCBpQmFzZUVuY29kaW5nID09IFBERkZPTlRfRU5DT0RJTkdfWkFQRkRJTkdCQVRTKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKChtX0ZsYWdzICYgUERGRk9OVF9TWU1CT0xJQykgJiYgbV9CYXNlRm9udCA9PSBGWF9CU1RSQygiU3ltYm9sIikpIHsNCisgICAgICAgICAgICBpZiAoIWJUcnVlVHlwZSkgew0KKyAgICAgICAgICAgICAgICBpQmFzZUVuY29kaW5nID0gUERGRk9OVF9FTkNPRElOR19BRE9CRV9TWU1CT0w7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGJzRW5jb2RpbmcgPSBwRW5jb2RpbmctPkdldFN0cmluZygpOw0KKyAgICAgICAgaWYgKGJzRW5jb2RpbmcuQ29tcGFyZShGWF9CU1RSQygiTWFjRXhwZXJ0RW5jb2RpbmciKSkgPT0gMCkgew0KKyAgICAgICAgICAgIGJzRW5jb2RpbmcgPSBGWF9CU1RSQygiV2luQW5zaUVuY29kaW5nIik7DQorICAgICAgICB9DQorICAgICAgICBHZXRQcmVkZWZpbmVkRW5jb2RpbmcoaUJhc2VFbmNvZGluZywgYnNFbmNvZGluZyk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBFbmNvZGluZy0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKXBFbmNvZGluZzsNCisgICAgaWYgKGlCYXNlRW5jb2RpbmcgIT0gUERGRk9OVF9FTkNPRElOR19BRE9CRV9TWU1CT0wgJiYgaUJhc2VFbmNvZGluZyAhPSBQREZGT05UX0VOQ09ESU5HX1pBUEZESU5HQkFUUykgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgYnNFbmNvZGluZyA9IHBEaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIkJhc2VFbmNvZGluZyIpKTsNCisgICAgICAgIGlmIChic0VuY29kaW5nLkNvbXBhcmUoRlhfQlNUUkMoIk1hY0V4cGVydEVuY29kaW5nIikpID09IDAgJiYgYlRydWVUeXBlKSB7DQorICAgICAgICAgICAgYnNFbmNvZGluZyA9IEZYX0JTVFJDKCJXaW5BbnNpRW5jb2RpbmciKTsNCisgICAgICAgIH0NCisgICAgICAgIEdldFByZWRlZmluZWRFbmNvZGluZyhpQmFzZUVuY29kaW5nLCBic0VuY29kaW5nKTsNCisgICAgfQ0KKyAgICBpZiAoKCFiRW1iZWRkZWQgfHwgYlRydWVUeXBlKSAmJiBpQmFzZUVuY29kaW5nID09IFBERkZPTlRfRU5DT0RJTkdfQlVJTFRJTikgew0KKyAgICAgICAgaUJhc2VFbmNvZGluZyA9IFBERkZPTlRfRU5DT0RJTkdfU1RBTkRBUkQ7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcERpZmZzID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJEaWZmZXJlbmNlcyIpKTsNCisgICAgaWYgKHBEaWZmcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfTkVXX1ZFQ1RPUihwQ2hhck5hbWVzLCBDRlhfQnl0ZVN0cmluZywgMjU2KTsNCisgICAgRlhfRFdPUkQgY3VyX2NvZGUgPSAwOw0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcERpZmZzLT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICBDUERGX09iamVjdCogcEVsZW1lbnQgPSBwRGlmZnMtPkdldEVsZW1lbnRWYWx1ZShpKTsNCisgICAgICAgIGlmIChwRWxlbWVudCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEVsZW1lbnQtPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgICAgIGlmIChjdXJfY29kZSA8IDI1Nikgew0KKyAgICAgICAgICAgICAgICBwQ2hhck5hbWVzW2N1cl9jb2RlXSA9ICgoQ1BERl9OYW1lKilwRWxlbWVudCktPkdldFN0cmluZygpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjdXJfY29kZSArKzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgY3VyX2NvZGUgPSBwRWxlbWVudC0+R2V0SW50ZWdlcigpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9Gb250OjpJc1N0YW5kYXJkRm9udCgpIGNvbnN0DQorew0KKyAgICBpZiAobV9Gb250VHlwZSAhPSBQREZGT05UX1RZUEUxKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fcEZvbnRGaWxlICE9IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoKChDUERGX1R5cGUxRm9udCopdGhpcyktPkdldEJhc2UxNEZvbnQoKSA8IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorZXh0ZXJuIEZYX0xQQ1NUUiBQREZfQ2hhck5hbWVGcm9tUHJlZGVmaW5lZENoYXJTZXQoaW50IGVuY29kaW5nLCBGWF9CWVRFIGNoYXJjb2RlKTsNCitDUERGX1NpbXBsZUZvbnQ6OkNQREZfU2ltcGxlRm9udCgpDQorew0KKyAgICBGWFNZU19tZW1zZXQ4KG1fQ2hhckJCb3gsIDB4ZmYsIHNpemVvZiBtX0NoYXJCQm94KTsNCisgICAgRlhTWVNfbWVtc2V0OChtX0NoYXJXaWR0aCwgMHhmZiwgc2l6ZW9mIG1fQ2hhcldpZHRoKTsNCisgICAgRlhTWVNfbWVtc2V0OChtX0dseXBoSW5kZXgsIDB4ZmYsIHNpemVvZiBtX0dseXBoSW5kZXgpOw0KKyAgICBGWFNZU19tZW1zZXQ4KG1fRXh0R0lELCAweGZmLCBzaXplb2YgbV9FeHRHSUQpOw0KKyAgICBtX3BDaGFyTmFtZXMgPSBOVUxMOw0KKyAgICBtX0Jhc2VFbmNvZGluZyA9IFBERkZPTlRfRU5DT0RJTkdfQlVJTFRJTjsNCit9DQorQ1BERl9TaW1wbGVGb250Ojp+Q1BERl9TaW1wbGVGb250KCkNCit7DQorICAgIGlmIChtX3BDaGFyTmFtZXMpIHsNCisgICAgICAgIEZYX0RFTEVURV9WRUNUT1IobV9wQ2hhck5hbWVzLCBDRlhfQnl0ZVN0cmluZywgMjU2KTsNCisgICAgfQ0KK30NCitpbnQgQ1BERl9TaW1wbGVGb250OjpHbHlwaEZyb21DaGFyQ29kZShGWF9EV09SRCBjaGFyY29kZSwgRlhfQk9PTCAqcFZlcnRHbHlwaCkNCit7DQorICAgIGlmIChwVmVydEdseXBoKSB7DQorICAgICAgICAqcFZlcnRHbHlwaCA9IEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChjaGFyY29kZSA+IDB4ZmYpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpbnQgaW5kZXggPSBtX0dseXBoSW5kZXhbKEZYX0JZVEUpY2hhcmNvZGVdOw0KKyAgICBpZiAoaW5kZXggPT0gMHhmZmZmKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgcmV0dXJuIGluZGV4Ow0KK30NCit2b2lkIENQREZfU2ltcGxlRm9udDo6TG9hZENoYXJNZXRyaWNzKGludCBjaGFyY29kZSkNCit7DQorICAgIGlmIChtX0ZvbnQubV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoY2hhcmNvZGUgPCAwIHx8IGNoYXJjb2RlID4gMHhmZikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBnbHlwaF9pbmRleCA9IG1fR2x5cGhJbmRleFtjaGFyY29kZV07DQorICAgIGlmIChnbHlwaF9pbmRleCA9PSAweGZmZmYpIHsNCisgICAgICAgIGlmIChtX3BGb250RmlsZSA9PSBOVUxMICYmIGNoYXJjb2RlICE9IDMyKSB7DQorICAgICAgICAgICAgTG9hZENoYXJNZXRyaWNzKDMyKTsNCisgICAgICAgICAgICBtX0NoYXJCQm94W2NoYXJjb2RlXSA9IG1fQ2hhckJCb3hbMzJdOw0KKyAgICAgICAgICAgIGlmIChtX2JVc2VGb250V2lkdGgpIHsNCisgICAgICAgICAgICAgICAgbV9DaGFyV2lkdGhbY2hhcmNvZGVdID0gbV9DaGFyV2lkdGhbMzJdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgZXJyID0gRlhGVF9Mb2FkX0dseXBoKG1fRm9udC5tX0ZhY2UsIGdseXBoX2luZGV4LCBGWEZUX0xPQURfTk9fU0NBTEUgfCBGWEZUX0xPQURfSUdOT1JFX0dMT0JBTF9BRFZBTkNFX1dJRFRIKTsNCisgICAgaWYgKGVycikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fQ2hhckJCb3hbY2hhcmNvZGVdLkxlZnQgPSBUVDJQREYoRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdYKG1fRm9udC5tX0ZhY2UpLCBtX0ZvbnQubV9GYWNlKTsNCisgICAgbV9DaGFyQkJveFtjaGFyY29kZV0uUmlnaHQgPSBUVDJQREYoRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdYKG1fRm9udC5tX0ZhY2UpICsgRlhGVF9HZXRfR2x5cGhfV2lkdGgobV9Gb250Lm1fRmFjZSksIG1fRm9udC5tX0ZhY2UpOw0KKyAgICBtX0NoYXJCQm94W2NoYXJjb2RlXS5Ub3AgPSBUVDJQREYoRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdZKG1fRm9udC5tX0ZhY2UpLCBtX0ZvbnQubV9GYWNlKTsNCisgICAgbV9DaGFyQkJveFtjaGFyY29kZV0uQm90dG9tID0gVFQyUERGKEZYRlRfR2V0X0dseXBoX0hvcmlCZWFyaW5nWShtX0ZvbnQubV9GYWNlKSAtIEZYRlRfR2V0X0dseXBoX0hlaWdodChtX0ZvbnQubV9GYWNlKSwgbV9Gb250Lm1fRmFjZSk7DQorICAgIGlmIChtX2JVc2VGb250V2lkdGgpIHsNCisgICAgICAgIGludCBUVF9XaWR0aCA9IFRUMlBERihGWEZUX0dldF9HbHlwaF9Ib3JpQWR2YW5jZShtX0ZvbnQubV9GYWNlKSwgbV9Gb250Lm1fRmFjZSk7DQorICAgICAgICBpZiAobV9DaGFyV2lkdGhbY2hhcmNvZGVdID09IDB4ZmZmZikgew0KKyAgICAgICAgICAgIG1fQ2hhcldpZHRoW2NoYXJjb2RlXSA9IFRUX1dpZHRoOw0KKyAgICAgICAgfSBlbHNlIGlmIChUVF9XaWR0aCAmJiAhSXNFbWJlZGRlZCgpKSB7DQorICAgICAgICAgICAgbV9DaGFyQkJveFtjaGFyY29kZV0uUmlnaHQgPSBtX0NoYXJCQm94W2NoYXJjb2RlXS5SaWdodCAqIG1fQ2hhcldpZHRoW2NoYXJjb2RlXSAvIFRUX1dpZHRoOw0KKyAgICAgICAgICAgIG1fQ2hhckJCb3hbY2hhcmNvZGVdLkxlZnQgPSBtX0NoYXJCQm94W2NoYXJjb2RlXS5MZWZ0ICogbV9DaGFyV2lkdGhbY2hhcmNvZGVdIC8gVFRfV2lkdGg7DQorICAgICAgICB9DQorICAgIH0NCit9DQoraW50IENQREZfU2ltcGxlRm9udDo6R2V0Q2hhcldpZHRoRihGWF9EV09SRCBjaGFyY29kZSwgaW50IGxldmVsKQ0KK3sNCisgICAgaWYgKGNoYXJjb2RlID4gMHhmZikgew0KKyAgICAgICAgY2hhcmNvZGUgPSAwOw0KKyAgICB9DQorICAgIGlmIChtX0NoYXJXaWR0aFtjaGFyY29kZV0gPT0gMHhmZmZmKSB7DQorICAgICAgICBMb2FkQ2hhck1ldHJpY3MoY2hhcmNvZGUpOw0KKyAgICAgICAgaWYgKG1fQ2hhcldpZHRoW2NoYXJjb2RlXSA9PSAweGZmZmYpIHsNCisgICAgICAgICAgICBtX0NoYXJXaWR0aFtjaGFyY29kZV0gPSAwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAoRlhfSU5UMTYpbV9DaGFyV2lkdGhbY2hhcmNvZGVdOw0KK30NCit2b2lkIENQREZfU2ltcGxlRm9udDo6R2V0Q2hhckJCb3goRlhfRFdPUkQgY2hhcmNvZGUsIEZYX1JFQ1QmIHJlY3QsIGludCBsZXZlbCkNCit7DQorICAgIGlmIChjaGFyY29kZSA+IDB4ZmYpIHsNCisgICAgICAgIGNoYXJjb2RlID0gMDsNCisgICAgfQ0KKyAgICBpZiAobV9DaGFyQkJveFtjaGFyY29kZV0uTGVmdCA9PSAoRlhfU0hPUlQpMHhmZmZmKSB7DQorICAgICAgICBMb2FkQ2hhck1ldHJpY3MoY2hhcmNvZGUpOw0KKyAgICB9DQorICAgIHJlY3QubGVmdCA9IG1fQ2hhckJCb3hbY2hhcmNvZGVdLkxlZnQ7DQorICAgIHJlY3QucmlnaHQgPSBtX0NoYXJCQm94W2NoYXJjb2RlXS5SaWdodDsNCisgICAgcmVjdC5ib3R0b20gPSBtX0NoYXJCQm94W2NoYXJjb2RlXS5Cb3R0b207DQorICAgIHJlY3QudG9wID0gbV9DaGFyQkJveFtjaGFyY29kZV0uVG9wOw0KK30NCitGWF9MUENTVFIgR2V0QWRvYmVDaGFyTmFtZShpbnQgaUJhc2VFbmNvZGluZywgY29uc3QgQ0ZYX0J5dGVTdHJpbmcqIHBDaGFyTmFtZXMsIGludCBjaGFyY29kZSkNCit7DQorICAgIEFTU0VSVChjaGFyY29kZSA+PSAwICYmIGNoYXJjb2RlIDwgMjU2KTsNCisgICAgaWYgKGNoYXJjb2RlIDwgMCB8fCBjaGFyY29kZSA+PSAyNTYpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0xQQ1NUUiBuYW1lID0gTlVMTDsNCisgICAgaWYgKHBDaGFyTmFtZXMpIHsNCisgICAgICAgIG5hbWUgPSBwQ2hhck5hbWVzW2NoYXJjb2RlXTsNCisgICAgfQ0KKyAgICBpZiAoKG5hbWUgPT0gTlVMTCB8fCBuYW1lWzBdID09IDApICYmIGlCYXNlRW5jb2RpbmcpIHsNCisgICAgICAgIG5hbWUgPSBQREZfQ2hhck5hbWVGcm9tUHJlZGVmaW5lZENoYXJTZXQoaUJhc2VFbmNvZGluZywgY2hhcmNvZGUpOw0KKyAgICB9DQorICAgIGlmIChuYW1lID09IE5VTEwgfHwgbmFtZVswXSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gbmFtZTsNCit9DQorRlhfQk9PTCBDUERGX1NpbXBsZUZvbnQ6OkxvYWRDb21tb24oKQ0KK3sNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udERlc2MgPSBtX3BGb250RGljdC0+R2V0RGljdChGWF9CU1RSQygiRm9udERlc2NyaXB0b3IiKSk7DQorICAgIGlmIChwRm9udERlc2MpIHsNCisgICAgICAgIExvYWRGb250RGVzY3JpcHRvcihwRm9udERlc2MpOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBXaWR0aEFycmF5ID0gbV9wRm9udERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJXaWR0aHMiKSk7DQorICAgIGludCB3aWR0aF9zdGFydCA9IDAsIHdpZHRoX2VuZCA9IC0xOw0KKyAgICBtX2JVc2VGb250V2lkdGggPSBUUlVFOw0KKyAgICBpZiAocFdpZHRoQXJyYXkpIHsNCisgICAgICAgIG1fYlVzZUZvbnRXaWR0aCA9IEZBTFNFOw0KKyAgICAgICAgaWYgKHBGb250RGVzYyAmJiBwRm9udERlc2MtPktleUV4aXN0KEZYX0JTVFJDKCJNaXNzaW5nV2lkdGgiKSkpIHsNCisgICAgICAgICAgICBpbnQgTWlzc2luZ1dpZHRoID0gcEZvbnREZXNjLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJNaXNzaW5nV2lkdGgiKSk7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgbV9DaGFyV2lkdGhbaV0gPSBNaXNzaW5nV2lkdGg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgd2lkdGhfc3RhcnQgPSBtX3BGb250RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiRmlyc3RDaGFyIiksIDApOw0KKyAgICAgICAgd2lkdGhfZW5kID0gbV9wRm9udERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIkxhc3RDaGFyIiksIDApOw0KKyAgICAgICAgaWYgKHdpZHRoX3N0YXJ0ID49IDAgJiYgd2lkdGhfc3RhcnQgPD0gMjU1KSB7DQorICAgICAgICAgICAgaWYgKHdpZHRoX2VuZCA8PSAwIHx8IHdpZHRoX2VuZCA+PSB3aWR0aF9zdGFydCArIChpbnQpcFdpZHRoQXJyYXktPkdldENvdW50KCkpIHsNCisgICAgICAgICAgICAgICAgd2lkdGhfZW5kID0gd2lkdGhfc3RhcnQgKyBwV2lkdGhBcnJheS0+R2V0Q291bnQoKSAtIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICh3aWR0aF9lbmQgPiAyNTUpIHsNCisgICAgICAgICAgICAgICAgd2lkdGhfZW5kID0gMjU1Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKGludCBpID0gd2lkdGhfc3RhcnQ7IGkgPD0gd2lkdGhfZW5kOyBpICsrKSB7DQorICAgICAgICAgICAgICAgIG1fQ2hhcldpZHRoW2ldID0gcFdpZHRoQXJyYXktPkdldEludGVnZXIoaSAtIHdpZHRoX3N0YXJ0KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG1fcEZvbnRGaWxlID09IE5VTEwpIHsNCisgICAgICAgIExvYWRTdWJzdEZvbnQoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChtX0Jhc2VGb250LkdldExlbmd0aCgpID4gOCAmJiBtX0Jhc2VGb250WzddID09ICcrJykgew0KKyAgICAgICAgICAgIG1fQmFzZUZvbnQgPSBtX0Jhc2VGb250Lk1pZCg4KTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoIShtX0ZsYWdzICYgUERGRk9OVF9TWU1CT0xJQykpIHsNCisgICAgICAgIG1fQmFzZUVuY29kaW5nID0gUERGRk9OVF9FTkNPRElOR19TVEFOREFSRDsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcEVuY29kaW5nID0gbV9wRm9udERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiRW5jb2RpbmciKSk7DQorICAgIExvYWRQREZFbmNvZGluZyhwRW5jb2RpbmcsIG1fQmFzZUVuY29kaW5nLCBtX3BDaGFyTmFtZXMsIG1fcEZvbnRGaWxlICE9IE5VTEwsIG1fRm9udC5Jc1RURm9udCgpKTsNCisgICAgTG9hZEdseXBoTWFwKCk7DQorICAgIGlmIChtX3BDaGFyTmFtZXMpIHsNCisgICAgICAgIEZYX0RFTEVURV9WRUNUT1IobV9wQ2hhck5hbWVzLCBDRlhfQnl0ZVN0cmluZywgMjU2KTsNCisgICAgICAgIG1fcENoYXJOYW1lcyA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKG1fRm9udC5tX0ZhY2UgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKG1fRmxhZ3MgJiBQREZGT05UX0FMTENBUCkgew0KKyAgICAgICAgdW5zaWduZWQgY2hhciBsb3dlcmNhc2VzW10gPSB7J2EnLCAneicsIDB4ZTAsIDB4ZjYsIDB4ZjgsIDB4ZmR9Ow0KKyAgICAgICAgZm9yIChpbnQgcmFuZ2UgPSAwOyByYW5nZSA8IHNpemVvZiBsb3dlcmNhc2VzIC8gMjsgcmFuZ2UgKyspIHsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gbG93ZXJjYXNlc1tyYW5nZSAqIDJdOyBpIDw9IGxvd2VyY2FzZXNbcmFuZ2UgKiAyICsgMV07IGkgKyspIHsNCisgICAgICAgICAgICAgICAgaWYgKG1fR2x5cGhJbmRleFtpXSAhPSAweGZmZmYgJiYgbV9wRm9udEZpbGUgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2ldID0gbV9HbHlwaEluZGV4W2kgLSAzMl07DQorICAgICAgICAgICAgICAgIGlmIChtX0NoYXJXaWR0aFtpIC0gMzJdKSB7DQorICAgICAgICAgICAgICAgICAgICBtX0NoYXJXaWR0aFtpXSA9IG1fQ2hhcldpZHRoW2kgLSAzMl07DQorICAgICAgICAgICAgICAgICAgICBtX0NoYXJCQm94W2ldID0gbV9DaGFyQkJveFtpIC0gMzJdOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENoZWNrRm9udE1ldHJpY3MoKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ1BERl9TaW1wbGVGb250OjpMb2FkU3Vic3RGb250KCkNCit7DQorICAgIGlmICghbV9iVXNlRm9udFdpZHRoICYmICEobV9GbGFncyAmIFBERkZPTlRfRklYRURQSVRDSCkpIHsNCisgICAgICAgIGludCB3aWR0aCA9IDAsIGk7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgaWYgKG1fQ2hhcldpZHRoW2ldID09IDAgfHwgbV9DaGFyV2lkdGhbaV0gPT0gMHhmZmZmKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAod2lkdGggPT0gMCkgew0KKyAgICAgICAgICAgICAgICB3aWR0aCA9IG1fQ2hhcldpZHRoW2ldOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2lkdGggIT0gbV9DaGFyV2lkdGhbaV0pIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGkgPT0gMjU2ICYmIHdpZHRoKSB7DQorICAgICAgICAgICAgbV9GbGFncyB8PSBQREZGT05UX0ZJWEVEUElUQ0g7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IHdlaWdodCA9IG1fU3RlbVYgPCAxNDAgPyBtX1N0ZW1WICogNSA6IChtX1N0ZW1WICogNCArIDE0MCk7DQorICAgIG1fRm9udC5Mb2FkU3Vic3QobV9CYXNlRm9udCwgbV9Gb250VHlwZSA9PSBQREZGT05UX1RSVUVUWVBFLCBtX0ZsYWdzLCB3ZWlnaHQsIG1fSXRhbGljQW5nbGUsIDApOw0KKyAgICBpZiAobV9Gb250Lm1fcFN1YnN0Rm9udC0+bV9TdWJzdEZsYWdzICYgRlhGT05UX1NVQlNUX05PTlNZTUJPTCkgew0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9TaW1wbGVGb250OjpJc1VuaWNvZGVDb21wYXRpYmxlKCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX0Jhc2VFbmNvZGluZyAhPSBQREZGT05UX0VOQ09ESU5HX0JVSUxUSU4gJiYgbV9CYXNlRW5jb2RpbmcgIT0gUERGRk9OVF9FTkNPRElOR19BRE9CRV9TWU1CT0wgJiYNCisgICAgICAgICAgIG1fQmFzZUVuY29kaW5nICE9IFBERkZPTlRfRU5DT0RJTkdfWkFQRkRJTkdCQVRTOw0KK30NCitDUERGX1R5cGUxRm9udDo6Q1BERl9UeXBlMUZvbnQoKQ0KK3sNCisgICAgbV9CYXNlMTRGb250ID0gLTE7DQorfQ0KK0ZYX0JPT0wgQ1BERl9UeXBlMUZvbnQ6Ol9Mb2FkKCkNCit7DQorICAgIG1fQmFzZTE0Rm9udCA9IF9QREZfR2V0U3RhbmRhcmRGb250TmFtZShtX0Jhc2VGb250KTsNCisgICAgaWYgKG1fQmFzZTE0Rm9udCA+PSAwKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250RGVzYyA9IG1fcEZvbnREaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJGb250RGVzY3JpcHRvciIpKTsNCisgICAgICAgIGlmIChwRm9udERlc2MgJiYgcEZvbnREZXNjLT5LZXlFeGlzdChGWF9CU1RSQygiRmxhZ3MiKSkpIHsNCisgICAgICAgICAgICBtX0ZsYWdzID0gcEZvbnREZXNjLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJGbGFncyIpKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9GbGFncyA9IG1fQmFzZTE0Rm9udCA+PSAxMiA/IFBERkZPTlRfU1lNQk9MSUMgOiBQREZGT05UX05PTlNZTUJPTElDOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fQmFzZTE0Rm9udCA8IDQpDQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgbV9DaGFyV2lkdGhbaV0gPSA2MDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fQmFzZTE0Rm9udCA9PSAxMikgew0KKyAgICAgICAgICAgIG1fQmFzZUVuY29kaW5nID0gUERGRk9OVF9FTkNPRElOR19BRE9CRV9TWU1CT0w7DQorICAgICAgICB9IGVsc2UgaWYgKG1fQmFzZTE0Rm9udCA9PSAxMykgew0KKyAgICAgICAgICAgIG1fQmFzZUVuY29kaW5nID0gUERGRk9OVF9FTkNPRElOR19aQVBGRElOR0JBVFM7DQorICAgICAgICB9IGVsc2UgaWYgKG1fRmxhZ3MgJiBQREZGT05UX05PTlNZTUJPTElDKSB7DQorICAgICAgICAgICAgbV9CYXNlRW5jb2RpbmcgPSBQREZGT05UX0VOQ09ESU5HX1NUQU5EQVJEOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBMb2FkQ29tbW9uKCk7DQorfQ0KK3N0YXRpYyBGWF9CT09MIEZUX1VzZVR5cGUxQ2hhcm1hcChGWEZUX0ZhY2UgZmFjZSkNCit7DQorICAgIGlmIChGWEZUX0dldF9GYWNlX0NoYXJtYXBDb3VudChmYWNlKSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcENvdW50KGZhY2UpID09IDEgJiYNCisgICAgICAgICAgICBGWEZUX0dldF9DaGFybWFwX0VuY29kaW5nKEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcHMoZmFjZSlbMF0pID09IEZYRlRfRU5DT0RJTkdfVU5JQ09ERSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChGWEZUX0dldF9DaGFybWFwX0VuY29kaW5nKEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcHMoZmFjZSlbMF0pID09IEZYRlRfRU5DT0RJTkdfVU5JQ09ERSkgew0KKyAgICAgICAgRlhGVF9TZXRfQ2hhcm1hcChmYWNlLCBGWEZUX0dldF9GYWNlX0NoYXJtYXBzKGZhY2UpWzFdKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYRlRfU2V0X0NoYXJtYXAoZmFjZSwgRlhGVF9HZXRfRmFjZV9DaGFybWFwcyhmYWNlKVswXSk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2V4dGVybiBGWF9XQ0hBUiBGVF9Vbmljb2RlRnJvbUNoYXJDb2RlKGludCBlbmNvZGluZywgRlhfRFdPUkQgY2hhcmNvZGUpOw0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisjaW5jbHVkZSAiLi4vLi4vZnhnZS9hcHBsZS9hcHBsZV9pbnQuaCINCisjZW5kaWYNCitpbnQgQ1BERl9UeXBlMUZvbnQ6OkdseXBoRnJvbUNoYXJDb2RlRXh0KEZYX0RXT1JEIGNoYXJjb2RlKQ0KK3sNCisgICAgaWYgKGNoYXJjb2RlID4gMHhmZikgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGludCBpbmRleCA9IG1fRXh0R0lEWyhGWF9CWVRFKWNoYXJjb2RlXTsNCisgICAgaWYgKGluZGV4ID09IDB4ZmZmZikgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIHJldHVybiBpbmRleDsNCit9DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KK3N0cnVjdCBfR2x5cGhOYW1lTWFwIHsNCisgICAgRlhfTFBDU1RSIG1fcFN0ckFkb2JlOw0KKyAgICBGWF9MUENTVFIgbV9wU3RyVW5pY29kZTsNCit9Ow0KK3N0YXRpYyBjb25zdCBfR2x5cGhOYW1lTWFwIGdfR2x5cGhOYW1lU3Vic3RzW10gPSB7DQorICAgIHsiZmYiLCAidW5pRkIwMCJ9LA0KKyAgICB7ImZpIiwgInVuaUZCMDEifSwNCisgICAgeyJmbCIsICJ1bmlGQjAyIn0sDQorICAgIHsiZmZpIiwgInVuaUZCMDMifSwNCisgICAgeyJmZmwiLCAidW5pRkIwNCJ9DQorfTsNCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIGludCBjb21wYXJlU3RyaW5nKGNvbnN0IHZvaWQqIGtleSwgY29uc3Qgdm9pZCogZWxlbWVudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYU1lTX3N0cmljbXAoKEZYX0xQQ1NUUilrZXksICgoX0dseXBoTmFtZU1hcCopZWxlbWVudCktPm1fcFN0ckFkb2JlKTsNCisgICAgfQ0KK30NCitzdGF0aWMgRlhfTFBDU1RSIF9HbHlwaE5hbWVSZW1hcChGWF9MUENTVFIgcFN0ckFkb2JlKQ0KK3sNCisgICAgX0dseXBoTmFtZU1hcCogZm91bmQgPSAoX0dseXBoTmFtZU1hcCopRlhTWVNfYnNlYXJjaChwU3RyQWRvYmUsIGdfR2x5cGhOYW1lU3Vic3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiBnX0dseXBoTmFtZVN1YnN0cyAvIHNpemVvZihfR2x5cGhOYW1lTWFwKSwgc2l6ZW9mKF9HbHlwaE5hbWVNYXApLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVTdHJpbmcpOw0KKyAgICBpZiAoZm91bmQpIHsNCisgICAgICAgIHJldHVybiBmb3VuZC0+bV9wU3RyVW5pY29kZTsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorI2VuZGlmDQordm9pZCBDUERGX1R5cGUxRm9udDo6TG9hZEdseXBoTWFwKCkNCit7DQorICAgIGlmIChtX0ZvbnQubV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgRlhfQk9PTCBiQ29yZVRleHQgPSBUUlVFOw0KKyAgICBDUXVhcnR6MkQgJiBxdWFydHoyZCA9ICgoQ0FwcGxlUGxhdGZvcm0gKikgQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5fcXVhcnR6MmQ7DQorICAgIGlmICghbV9Gb250Lm1fcFBsYXRmb3JtRm9udCkgew0KKyAgICAgICAgaWYgKG1fRm9udC5HZXRQc05hbWUoKSA9PSBDRlhfV2lkZVN0cmluZzo6RnJvbUxvY2FsKCJERkhlaVN0ZC1XNSIpKSB7DQorICAgICAgICAgICAgYkNvcmVUZXh0ID0gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX0ZvbnQubV9wUGxhdGZvcm1Gb250ID0gcXVhcnR6MmQuQ3JlYXRlRm9udChtX0ZvbnQubV9wRm9udERhdGEsIG1fRm9udC5tX2R3U2l6ZSk7DQorICAgICAgICBpZiAoTlVMTCA9PSBtX0ZvbnQubV9wUGxhdGZvcm1Gb250KSB7DQorICAgICAgICAgICAgYkNvcmVUZXh0ID0gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisjZW5kaWYNCisgICAgaWYgKCFJc0VtYmVkZGVkKCkgJiYgKG1fQmFzZTE0Rm9udCA8IDEyKSAmJiBtX0ZvbnQuSXNUVEZvbnQoKSkgew0KKyAgICAgICAgaWYgKEZUX1VzZVRUQ2hhcm1hcChtX0ZvbnQubV9GYWNlLCAzLCAwKSkgew0KKyAgICAgICAgICAgIEZYX0JPT0wgYkdvdE9uZSA9IEZBTFNFOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNoYXJjb2RlID0gMDsgY2hhcmNvZGUgPCAyNTY7IGNoYXJjb2RlICsrKSB7DQorICAgICAgICAgICAgICAgIGNvbnN0IEZYX0JZVEUgcHJlZml4WzRdID0gezB4MDAsIDB4ZjAsIDB4ZjEsIDB4ZjJ9Ow0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGogKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX1dPUkQgdW5pY29kZSA9IHByZWZpeFtqXSAqIDI1NiArIGNoYXJjb2RlOw0KKyAgICAgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgdW5pY29kZSk7DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICAgICAgICAgICAgICAgICAgRlhfQ0hBUiBuYW1lX2dseXBoWzI1Nl07DQorICAgICAgICAgICAgICAgICAgICBGWEZUX0dldF9HbHlwaF9OYW1lKG1fRm9udC5tX0ZhY2UsIG1fR2x5cGhJbmRleFtjaGFyY29kZV0sIG5hbWVfZ2x5cGgsIDI1Nik7DQorICAgICAgICAgICAgICAgICAgICBuYW1lX2dseXBoWzI1NV0gPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgbmFtZV9jdCA9IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZV9nbHlwaCwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwga0NGQWxsb2NhdG9yTnVsbCk7DQorICAgICAgICAgICAgICAgICAgICBtX0V4dEdJRFtjaGFyY29kZV0gPSBDR0ZvbnRHZXRHbHlwaFdpdGhHbHlwaE5hbWUoKENHRm9udFJlZiltX0ZvbnQubV9wUGxhdGZvcm1Gb250LCBuYW1lX2N0KTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lX2N0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKG5hbWVfY3QpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fR2x5cGhJbmRleFtjaGFyY29kZV0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiR290T25lID0gVFJVRTsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoYkdvdE9uZSkgew0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgICAgICAgICAgICAgaWYgKCFiQ29yZVRleHQpIHsNCisgICAgICAgICAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG1fRXh0R0lELCBtX0dseXBoSW5kZXgsIDI1Nik7DQorICAgICAgICAgICAgICAgIH0NCisjZW5kaWYNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEZYRlRfU2VsZWN0X0NoYXJtYXAobV9Gb250Lm1fRmFjZSwgRlhGVF9FTkNPRElOR19VTklDT0RFKTsNCisgICAgICAgIGlmIChtX0Jhc2VFbmNvZGluZyA9PSAwKSB7DQorICAgICAgICAgICAgbV9CYXNlRW5jb2RpbmcgPSBQREZGT05UX0VOQ09ESU5HX1NUQU5EQVJEOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgY2hhcmNvZGUgPSAwOyBjaGFyY29kZSA8IDI1NjsgY2hhcmNvZGUgKyspIHsNCisgICAgICAgICAgICBGWF9MUENTVFIgbmFtZSA9IEdldEFkb2JlQ2hhck5hbWUobV9CYXNlRW5jb2RpbmcsIG1fcENoYXJOYW1lcywgY2hhcmNvZGUpOw0KKyAgICAgICAgICAgIGlmIChuYW1lID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0gPSBQREZfVW5pY29kZUZyb21BZG9iZU5hbWUobmFtZSk7DQorICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgbV9FbmNvZGluZy5tX1VuaWNvZGVzW2NoYXJjb2RlXSk7DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICAgICAgICAgIEZYX0NIQVIgbmFtZV9nbHlwaFsyNTZdOw0KKyAgICAgICAgICAgIEZYRlRfR2V0X0dseXBoX05hbWUobV9Gb250Lm1fRmFjZSwgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSwgbmFtZV9nbHlwaCwgMjU2KTsNCisgICAgICAgICAgICBuYW1lX2dseXBoWzI1NV0gPSAwOw0KKyAgICAgICAgICAgIENGU3RyaW5nUmVmIG5hbWVfY3QgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWVfZ2x5cGgsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGtDRkFsbG9jYXRvck51bGwpOw0KKyAgICAgICAgICAgIG1fRXh0R0lEW2NoYXJjb2RlXSA9IENHRm9udEdldEdseXBoV2l0aEdseXBoTmFtZSgoQ0dGb250UmVmKW1fRm9udC5tX3BQbGF0Zm9ybUZvbnQsIG5hbWVfY3QpOw0KKyAgICAgICAgICAgIGlmIChuYW1lX2N0KSB7DQorICAgICAgICAgICAgICAgIENGUmVsZWFzZShuYW1lX2N0KTsNCisgICAgICAgICAgICB9DQorI2VuZGlmDQorICAgICAgICAgICAgaWYgKG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPT0gMCAmJiBGWFNZU19zdHJjbXAobmFtZSwgIi5ub3RkZWYiKSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0gPSAweDIwOw0KKyAgICAgICAgICAgICAgICBtX0dseXBoSW5kZXhbY2hhcmNvZGVdID0gRlhGVF9HZXRfQ2hhcl9JbmRleChtX0ZvbnQubV9GYWNlLCAweDIwKTsNCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgICAgICAgICAgICAgIEZYX0NIQVIgbmFtZV9nbHlwaFsyNTZdOw0KKyAgICAgICAgICAgICAgICBGWEZUX0dldF9HbHlwaF9OYW1lKG1fRm9udC5tX0ZhY2UsIG1fR2x5cGhJbmRleFtjaGFyY29kZV0sIG5hbWVfZ2x5cGgsIDI1Nik7DQorICAgICAgICAgICAgICAgIG5hbWVfZ2x5cGhbMjU1XSA9IDA7DQorICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG5hbWVfY3QgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWVfZ2x5cGgsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGtDRkFsbG9jYXRvck51bGwpOw0KKyAgICAgICAgICAgICAgICBtX0V4dEdJRFtjaGFyY29kZV0gPSBDR0ZvbnRHZXRHbHlwaFdpdGhHbHlwaE5hbWUoKENHRm9udFJlZiltX0ZvbnQubV9wUGxhdGZvcm1Gb250LCBuYW1lX2N0KTsNCisgICAgICAgICAgICAgICAgaWYgKG5hbWVfY3QpIHsNCisgICAgICAgICAgICAgICAgICAgIENGUmVsZWFzZShuYW1lX2N0KTsNCisgICAgICAgICAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgICAgICBpZiAoIWJDb3JlVGV4dCkgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG1fRXh0R0lELCBtX0dseXBoSW5kZXgsIDI1Nik7DQorICAgICAgICB9DQorI2VuZGlmDQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlRfVXNlVHlwZTFDaGFybWFwKG1fRm9udC5tX0ZhY2UpOw0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgaWYgKGJDb3JlVGV4dCkgew0KKyAgICAgICAgaWYgKG1fRmxhZ3MgJiBQREZGT05UX1NZTUJPTElDKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgY2hhcmNvZGUgPSAwOyBjaGFyY29kZSA8IDI1NjsgY2hhcmNvZGUgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfTFBDU1RSIG5hbWUgPSBHZXRBZG9iZUNoYXJOYW1lKG1fQmFzZUVuY29kaW5nLCBtX3BDaGFyTmFtZXMsIGNoYXJjb2RlKTsNCisgICAgICAgICAgICAgICAgaWYgKG5hbWUpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0gPSBQREZfVW5pY29kZUZyb21BZG9iZU5hbWUobmFtZSk7DQorICAgICAgICAgICAgICAgICAgICBtX0dseXBoSW5kZXhbY2hhcmNvZGVdID0gRlhGVF9HZXRfTmFtZV9JbmRleChtX0ZvbnQubV9GYWNlLCAoY2hhciopbmFtZSk7DQorICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBuYW1lX2N0ID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBuYW1lLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBrQ0ZBbGxvY2F0b3JOdWxsKTsNCisgICAgICAgICAgICAgICAgICAgIG1fRXh0R0lEW2NoYXJjb2RlXSA9IENHRm9udEdldEdseXBoV2l0aEdseXBoTmFtZSgoQ0dGb250UmVmKW1fRm9udC5tX3BQbGF0Zm9ybUZvbnQsIG5hbWVfY3QpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWVfY3QpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBDRlJlbGVhc2UobmFtZV9jdCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBtX0dseXBoSW5kZXhbY2hhcmNvZGVdID0gRlhGVF9HZXRfQ2hhcl9JbmRleChtX0ZvbnQubV9GYWNlLCBjaGFyY29kZSk7DQorICAgICAgICAgICAgICAgICAgICBGWF9XQ0hBUiB1bmljb2RlID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGlmIChtX0dseXBoSW5kZXhbY2hhcmNvZGVdKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSA9IEZUX1VuaWNvZGVGcm9tQ2hhckNvZGUoUERGRk9OVF9FTkNPRElOR19TVEFOREFSRCwgY2hhcmNvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgRlhfQ0hBUiBuYW1lX2dseXBoWzI1Nl07DQorICAgICAgICAgICAgICAgICAgICBGWFNZU19tZW1zZXQzMihuYW1lX2dseXBoLCAwLCBzaXplb2YobmFtZV9nbHlwaCkpOw0KKyAgICAgICAgICAgICAgICAgICAgRlhGVF9HZXRfR2x5cGhfTmFtZShtX0ZvbnQubV9GYWNlLCBtX0dseXBoSW5kZXhbY2hhcmNvZGVdLCBuYW1lX2dseXBoLCAyNTYpOw0KKyAgICAgICAgICAgICAgICAgICAgbmFtZV9nbHlwaFsyNTVdID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlID09IDAgJiYgbmFtZV9nbHlwaFswXSAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSA9IFBERl9Vbmljb2RlRnJvbUFkb2JlTmFtZShuYW1lX2dseXBoKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0gPSB1bmljb2RlOw0KKyAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgbmFtZV9jdCA9IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZV9nbHlwaCwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwga0NGQWxsb2NhdG9yTnVsbCk7DQorICAgICAgICAgICAgICAgICAgICBtX0V4dEdJRFtjaGFyY29kZV0gPSBDR0ZvbnRHZXRHbHlwaFdpdGhHbHlwaE5hbWUoKENHRm9udFJlZiltX0ZvbnQubV9wUGxhdGZvcm1Gb250LCBuYW1lX2N0KTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lX2N0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKG5hbWVfY3QpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JPT0wgYlVuaWNvZGUgPSBGQUxTRTsNCisgICAgICAgIGlmICgwID09IEZYRlRfU2VsZWN0X0NoYXJtYXAobV9Gb250Lm1fRmFjZSwgRlhGVF9FTkNPRElOR19VTklDT0RFKSkgew0KKyAgICAgICAgICAgIGJVbmljb2RlID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IGNoYXJjb2RlID0gMDsgY2hhcmNvZGUgPCAyNTY7IGNoYXJjb2RlICsrKSB7DQorICAgICAgICAgICAgRlhfTFBDU1RSIG5hbWUgPSBHZXRBZG9iZUNoYXJOYW1lKG1fQmFzZUVuY29kaW5nLCBtX3BDaGFyTmFtZXMsIGNoYXJjb2RlKTsNCisgICAgICAgICAgICBpZiAobmFtZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX0VuY29kaW5nLm1fVW5pY29kZXNbY2hhcmNvZGVdID0gUERGX1VuaWNvZGVGcm9tQWRvYmVOYW1lKG5hbWUpOw0KKyAgICAgICAgICAgIEZYX0xQQ1NUUiBwU3RyVW5pY29kZSA9IF9HbHlwaE5hbWVSZW1hcChuYW1lKTsNCisgICAgICAgICAgICBpZiAocFN0clVuaWNvZGUgJiYgMCA9PSBGWEZUX0dldF9OYW1lX0luZGV4KG1fRm9udC5tX0ZhY2UsIChjaGFyKiluYW1lKSkgew0KKyAgICAgICAgICAgICAgICBuYW1lID0gcFN0clVuaWNvZGU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPSBGWEZUX0dldF9OYW1lX0luZGV4KG1fRm9udC5tX0ZhY2UsIChjaGFyKiluYW1lKTsNCisgICAgICAgICAgICBDRlN0cmluZ1JlZiBuYW1lX2N0ID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBuYW1lLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBrQ0ZBbGxvY2F0b3JOdWxsKTsNCisgICAgICAgICAgICBtX0V4dEdJRFtjaGFyY29kZV0gPSBDR0ZvbnRHZXRHbHlwaFdpdGhHbHlwaE5hbWUoKENHRm9udFJlZiltX0ZvbnQubV9wUGxhdGZvcm1Gb250LCBuYW1lX2N0KTsNCisgICAgICAgICAgICBpZiAobmFtZV9jdCkgew0KKyAgICAgICAgICAgICAgICBDRlJlbGVhc2UobmFtZV9jdCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX0dseXBoSW5kZXhbY2hhcmNvZGVdID09IDApIHsNCisgICAgICAgICAgICAgICAgaWYgKEZYU1lTX3N0cmNtcChuYW1lLCAiLm5vdGRlZiIpICE9IDAgJiYgRlhTWVNfc3RyY21wKG5hbWUsICJzcGFjZSIpICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAgIG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPSBGWEZUX0dldF9DaGFyX0luZGV4KG1fRm9udC5tX0ZhY2UsIGJVbmljb2RlID8gbV9FbmNvZGluZy5tX1VuaWNvZGVzW2NoYXJjb2RlXSA6IGNoYXJjb2RlKTsNCisgICAgICAgICAgICAgICAgICAgIEZYX0NIQVIgbmFtZV9nbHlwaFsyNTZdOw0KKyAgICAgICAgICAgICAgICAgICAgRlhGVF9HZXRfR2x5cGhfTmFtZShtX0ZvbnQubV9GYWNlLCBtX0dseXBoSW5kZXhbY2hhcmNvZGVdLCBuYW1lX2dseXBoLCAyNTYpOw0KKyAgICAgICAgICAgICAgICAgICAgbmFtZV9nbHlwaFsyNTVdID0gMDsNCisgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG5hbWVfY3QgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWVfZ2x5cGgsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGtDRkFsbG9jYXRvck51bGwpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9FeHRHSURbY2hhcmNvZGVdID0gQ0dGb250R2V0R2x5cGhXaXRoR2x5cGhOYW1lKChDR0ZvbnRSZWYpbV9Gb250Lm1fcFBsYXRmb3JtRm9udCwgbmFtZV9jdCk7DQorICAgICAgICAgICAgICAgICAgICBpZiAobmFtZV9jdCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENGUmVsZWFzZShuYW1lX2N0KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0gPSAweDIwOw0KKyAgICAgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IGJVbmljb2RlID8gRlhGVF9HZXRfQ2hhcl9JbmRleChtX0ZvbnQubV9GYWNlLCAweDIwKSA6IDB4ZmZmZjsNCisgICAgICAgICAgICAgICAgICAgIEZYX0NIQVIgbmFtZV9nbHlwaFsyNTZdOw0KKyAgICAgICAgICAgICAgICAgICAgRlhGVF9HZXRfR2x5cGhfTmFtZShtX0ZvbnQubV9GYWNlLCBtX0dseXBoSW5kZXhbY2hhcmNvZGVdLCBuYW1lX2dseXBoLCAyNTYpOw0KKyAgICAgICAgICAgICAgICAgICAgbmFtZV9nbHlwaFsyNTVdID0gMDsNCisgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG5hbWVfY3QgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWVfZ2x5cGgsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGtDRkFsbG9jYXRvck51bGwpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9FeHRHSURbY2hhcmNvZGVdID0gQ0dGb250R2V0R2x5cGhXaXRoR2x5cGhOYW1lKChDR0ZvbnRSZWYpbV9Gb250Lm1fcFBsYXRmb3JtRm9udCwgbmFtZV9jdCk7DQorICAgICAgICAgICAgICAgICAgICBpZiAobmFtZV9jdCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENGUmVsZWFzZShuYW1lX2N0KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyNlbmRpZg0KKyAgICBpZiAobV9GbGFncyAmIFBERkZPTlRfU1lNQk9MSUMpIHsNCisgICAgICAgIGZvciAoaW50IGNoYXJjb2RlID0gMDsgY2hhcmNvZGUgPCAyNTY7IGNoYXJjb2RlICsrKSB7DQorICAgICAgICAgICAgRlhfTFBDU1RSIG5hbWUgPSBHZXRBZG9iZUNoYXJOYW1lKG1fQmFzZUVuY29kaW5nLCBtX3BDaGFyTmFtZXMsIGNoYXJjb2RlKTsNCisgICAgICAgICAgICBpZiAobmFtZSkgew0KKyAgICAgICAgICAgICAgICBtX0VuY29kaW5nLm1fVW5pY29kZXNbY2hhcmNvZGVdID0gUERGX1VuaWNvZGVGcm9tQWRvYmVOYW1lKG5hbWUpOw0KKyAgICAgICAgICAgICAgICBtX0dseXBoSW5kZXhbY2hhcmNvZGVdID0gRlhGVF9HZXRfTmFtZV9JbmRleChtX0ZvbnQubV9GYWNlLCAoY2hhciopbmFtZSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgY2hhcmNvZGUpOw0KKyAgICAgICAgICAgICAgICBpZiAobV9HbHlwaEluZGV4W2NoYXJjb2RlXSkgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfV0NIQVIgdW5pY29kZSA9IEZUX1VuaWNvZGVGcm9tQ2hhckNvZGUoUERGRk9OVF9FTkNPRElOR19TVEFOREFSRCwgY2hhcmNvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0NIQVIgbmFtZV9nbHlwaFsyNTZdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX21lbXNldDMyKG5hbWVfZ2x5cGgsIDAsIHNpemVvZihuYW1lX2dseXBoKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhGVF9HZXRfR2x5cGhfTmFtZShtX0ZvbnQubV9GYWNlLCBtX0dseXBoSW5kZXhbY2hhcmNvZGVdLCBuYW1lX2dseXBoLCAyNTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfZ2x5cGhbMjU1XSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWVfZ2x5cGhbMF0gIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlID0gUERGX1VuaWNvZGVGcm9tQWRvYmVOYW1lKG5hbWVfZ2x5cGgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0gPSB1bmljb2RlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgICAgIGlmICghYkNvcmVUZXh0KSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9FeHRHSUQsIG1fR2x5cGhJbmRleCwgMjU2KTsNCisgICAgICAgIH0NCisjZW5kaWYNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJVbmljb2RlID0gRkFMU0U7DQorICAgIGlmICgwID09IEZYRlRfU2VsZWN0X0NoYXJtYXAobV9Gb250Lm1fRmFjZSwgRlhGVF9FTkNPRElOR19VTklDT0RFKSkgew0KKyAgICAgICAgYlVuaWNvZGUgPSBUUlVFOw0KKyAgICB9DQorICAgIGZvciAoaW50IGNoYXJjb2RlID0gMDsgY2hhcmNvZGUgPCAyNTY7IGNoYXJjb2RlICsrKSB7DQorICAgICAgICBGWF9MUENTVFIgbmFtZSA9IEdldEFkb2JlQ2hhck5hbWUobV9CYXNlRW5jb2RpbmcsIG1fcENoYXJOYW1lcywgY2hhcmNvZGUpOw0KKyAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9FbmNvZGluZy5tX1VuaWNvZGVzW2NoYXJjb2RlXSA9IFBERl9Vbmljb2RlRnJvbUFkb2JlTmFtZShuYW1lKTsNCisgICAgICAgIG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPSBGWEZUX0dldF9OYW1lX0luZGV4KG1fRm9udC5tX0ZhY2UsIChjaGFyKiluYW1lKTsNCisgICAgICAgIGlmIChtX0dseXBoSW5kZXhbY2hhcmNvZGVdID09IDApIHsNCisgICAgICAgICAgICBpZiAoRlhTWVNfc3RyY21wKG5hbWUsICIubm90ZGVmIikgIT0gMCAmJiBGWFNZU19zdHJjbXAobmFtZSwgInNwYWNlIikgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBtX0dseXBoSW5kZXhbY2hhcmNvZGVdID0gRlhGVF9HZXRfQ2hhcl9JbmRleChtX0ZvbnQubV9GYWNlLCBiVW5pY29kZSA/IG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0gOiBjaGFyY29kZSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9FbmNvZGluZy5tX1VuaWNvZGVzW2NoYXJjb2RlXSA9IDB4MjA7DQorICAgICAgICAgICAgICAgIG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPSAweGZmZmY7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICBpZiAoIWJDb3JlVGV4dCkgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9FeHRHSUQsIG1fR2x5cGhJbmRleCwgMjU2KTsNCisgICAgfQ0KKyNlbmRpZg0KK30NCitDUERGX0ZvbnRFbmNvZGluZzo6Q1BERl9Gb250RW5jb2RpbmcoKQ0KK3sNCisgICAgRlhTWVNfbWVtc2V0MzIobV9Vbmljb2RlcywgMCwgc2l6ZW9mKG1fVW5pY29kZXMpKTsNCit9DQoraW50IENQREZfRm9udEVuY29kaW5nOjpDaGFyQ29kZUZyb21Vbmljb2RlKEZYX1dDSEFSIHVuaWNvZGUpIGNvbnN0DQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSArKykNCisgICAgICAgIGlmIChtX1VuaWNvZGVzW2ldID09IHVuaWNvZGUpIHsNCisgICAgICAgICAgICByZXR1cm4gaTsNCisgICAgICAgIH0NCisgICAgcmV0dXJuIC0xOw0KK30NCitDUERGX0ZvbnRFbmNvZGluZzo6Q1BERl9Gb250RW5jb2RpbmcoaW50IFByZWRlZmluZWRFbmNvZGluZykNCit7DQorICAgIGNvbnN0IEZYX1dPUkQqIHBTcmMgPSBQREZfVW5pY29kZXNGb3JQcmVkZWZpbmVkQ2hhclNldChQcmVkZWZpbmVkRW5jb2RpbmcpOw0KKyAgICBpZiAoIXBTcmMpIHsNCisgICAgICAgIEZYU1lTX21lbXNldDMyKG1fVW5pY29kZXMsIDAsIHNpemVvZihtX1VuaWNvZGVzKSk7DQorICAgIH0gZWxzZQ0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkrKykgew0KKyAgICAgICAgICAgIG1fVW5pY29kZXNbaV0gPSBwU3JjW2ldOw0KKyAgICAgICAgfQ0KK30NCitGWF9CT09MIENQREZfRm9udEVuY29kaW5nOjpJc0lkZW50aWNhbChDUERGX0ZvbnRFbmNvZGluZyogcEFub3RoZXIpIGNvbnN0DQorew0KKyAgICByZXR1cm4gRlhTWVNfbWVtY21wMzIobV9Vbmljb2RlcywgcEFub3RoZXItPm1fVW5pY29kZXMsIHNpemVvZihtX1VuaWNvZGVzKSkgPT0gMDsNCit9DQorQ1BERl9PYmplY3QqIENQREZfRm9udEVuY29kaW5nOjpSZWFsaXplKCkNCit7DQorICAgIGludCBwcmVkZWZpbmVkID0gMDsNCisgICAgZm9yIChpbnQgY3MgPSBQREZGT05UX0VOQ09ESU5HX1dJTkFOU0k7IGNzIDwgUERGRk9OVF9FTkNPRElOR19aQVBGRElOR0JBVFM7IGNzICsrKSB7DQorICAgICAgICBjb25zdCBGWF9XT1JEKiBwU3JjID0gUERGX1VuaWNvZGVzRm9yUHJlZGVmaW5lZENoYXJTZXQoY3MpOw0KKyAgICAgICAgRlhfQk9PTCBtYXRjaCA9IFRSVUU7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgKytpKSB7DQorICAgICAgICAgICAgaWYgKG1fVW5pY29kZXNbaV0gIT0gcFNyY1tpXSkgew0KKyAgICAgICAgICAgICAgICBtYXRjaCA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAobWF0Y2gpIHsNCisgICAgICAgICAgICBwcmVkZWZpbmVkID0gY3M7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHByZWRlZmluZWQpIHsNCisgICAgICAgIGlmIChwcmVkZWZpbmVkID09IFBERkZPTlRfRU5DT0RJTkdfV0lOQU5TSSkgew0KKyAgICAgICAgICAgIHJldHVybiBDUERGX05hbWU6OkNyZWF0ZSgiV2luQW5zaUVuY29kaW5nIik7DQorICAgICAgICB9DQorICAgICAgICBpZiAocHJlZGVmaW5lZCA9PSBQREZGT05UX0VOQ09ESU5HX01BQ1JPTUFOKSB7DQorICAgICAgICAgICAgcmV0dXJuIENQREZfTmFtZTo6Q3JlYXRlKCJNYWNSb21hbkVuY29kaW5nIik7DQorICAgICAgICB9DQorICAgICAgICBpZiAocHJlZGVmaW5lZCA9PSBQREZGT05UX0VOQ09ESU5HX01BQ0VYUEVSVCkgew0KKyAgICAgICAgICAgIHJldHVybiBDUERGX05hbWU6OkNyZWF0ZSgiTWFjRXhwZXJ0RW5jb2RpbmciKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBDUERGX0RpY3Rpb25hcnk6OkNyZWF0ZSgpOw0KKyAgICBwRGljdC0+U2V0QXROYW1lKEZYX0JTVFJDKCJCYXNlRW5jb2RpbmciKSwgRlhfQlNUUkMoIldpbkFuc2lFbmNvZGluZyIpKTsNCisgICAgY29uc3QgRlhfV09SRCogcFN0YW5kYXJkID0gUERGX1VuaWNvZGVzRm9yUHJlZGVmaW5lZENoYXJTZXQoUERGRk9OVF9FTkNPRElOR19XSU5BTlNJKTsNCisgICAgQ1BERl9BcnJheSogcERpZmYgPSBDUERGX0FycmF5OjpDcmVhdGUoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgIGlmIChwU3RhbmRhcmRbaV0gPT0gbV9Vbmljb2Rlc1tpXSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcERpZmYtPkFkZChDUERGX051bWJlcjo6Q3JlYXRlKGkpKTsNCisgICAgICAgIHBEaWZmLT5BZGQoQ1BERl9OYW1lOjpDcmVhdGUoUERGX0Fkb2JlTmFtZUZyb21Vbmljb2RlKG1fVW5pY29kZXNbaV0pKSk7DQorICAgIH0NCisgICAgcERpY3QtPlNldEF0KEZYX0JTVFJDKCJEaWZmZXJlbmNlcyIpLCBwRGlmZik7DQorICAgIHJldHVybiBwRGljdDsNCit9DQorQ1BERl9UcnVlVHlwZUZvbnQ6OkNQREZfVHJ1ZVR5cGVGb250KCkNCit7DQorfQ0KK0ZYX0JPT0wgQ1BERl9UcnVlVHlwZUZvbnQ6Ol9Mb2FkKCkNCit7DQorICAgIHJldHVybiBMb2FkQ29tbW9uKCk7DQorfQ0KK2V4dGVybiBGWF9EV09SRCBGVF9DaGFyQ29kZUZyb21Vbmljb2RlKGludCBlbmNvZGluZywgRlhfV0NIQVIgdW5pY29kZSk7DQordm9pZCBDUERGX1RydWVUeXBlRm9udDo6TG9hZEdseXBoTWFwKCkNCit7DQorICAgIGlmIChtX0ZvbnQubV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgYmFzZUVuY29kaW5nID0gbV9CYXNlRW5jb2Rpbmc7DQorICAgIGlmIChtX3BGb250RmlsZSAmJiBtX0ZvbnQubV9GYWNlLT5udW1fY2hhcm1hcHMgPiAwDQorICAgICAgICAgICAgJiYgKGJhc2VFbmNvZGluZyA9PSBQREZGT05UX0VOQ09ESU5HX01BQ1JPTUFOIHx8IGJhc2VFbmNvZGluZyA9PSBQREZGT05UX0VOQ09ESU5HX1dJTkFOU0kpDQorICAgICAgICAgICAgJiYgKG1fRmxhZ3MgJiBQREZGT05UX1NZTUJPTElDKSkgew0KKyAgICAgICAgRlhfQk9PTCBiU3VwcG9ydFdpbiA9IEZBTFNFOw0KKyAgICAgICAgRlhfQk9PTCBiU3VwcG9ydE1hYyA9IEZBTFNFOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBGWEZUX0dldF9GYWNlX0NoYXJtYXBDb3VudChtX0ZvbnQubV9GYWNlKTsgaSsrKSB7DQorICAgICAgICAgICAgaW50IHBsYXRmb3JtX2lkID0gRlhGVF9HZXRfQ2hhcm1hcF9QbGF0Zm9ybUlEKEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcHMobV9Gb250Lm1fRmFjZSlbaV0pOw0KKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybV9pZCA9PSAwIHx8IHBsYXRmb3JtX2lkID09IDMpIHsNCisgICAgICAgICAgICAgICAgYlN1cHBvcnRXaW4gPSBUUlVFOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhdGZvcm1faWQgPT0gMCB8fCBwbGF0Zm9ybV9pZCA9PSAxKSB7DQorICAgICAgICAgICAgICAgIGJTdXBwb3J0TWFjID0gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoYmFzZUVuY29kaW5nID09IFBERkZPTlRfRU5DT0RJTkdfV0lOQU5TSSAmJiAhYlN1cHBvcnRXaW4pIHsNCisgICAgICAgICAgICBiYXNlRW5jb2RpbmcgPSBiU3VwcG9ydE1hYyA/IFBERkZPTlRfRU5DT0RJTkdfTUFDUk9NQU4gOiBQREZGT05UX0VOQ09ESU5HX0JVSUxUSU47DQorICAgICAgICB9IGVsc2UgaWYgKGJhc2VFbmNvZGluZyA9PSBQREZGT05UX0VOQ09ESU5HX01BQ1JPTUFOICYmICFiU3VwcG9ydE1hYykgew0KKyAgICAgICAgICAgIGJhc2VFbmNvZGluZyA9IGJTdXBwb3J0V2luID8gUERGRk9OVF9FTkNPRElOR19XSU5BTlNJIDogUERGRk9OVF9FTkNPRElOR19CVUlMVElOOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICgoKGJhc2VFbmNvZGluZyA9PSBQREZGT05UX0VOQ09ESU5HX01BQ1JPTUFOIHx8IGJhc2VFbmNvZGluZyA9PSBQREZGT05UX0VOQ09ESU5HX1dJTkFOU0kpDQorICAgICAgICAgICAgJiYgbV9wQ2hhck5hbWVzID09IE5VTEwpIHx8IChtX0ZsYWdzICYgUERGRk9OVF9OT05TWU1CT0xJQykpIHsNCisgICAgICAgIGlmICghRlhGVF9IYXNfR2x5cGhfTmFtZXMobV9Gb250Lm1fRmFjZSkgJiYgKCFtX0ZvbnQubV9GYWNlLT5udW1fY2hhcm1hcHMgfHwgIW1fRm9udC5tX0ZhY2UtPmNoYXJtYXBzKSkgew0KKyAgICAgICAgICAgIGludCBuU3RhcnRDaGFyID0gbV9wRm9udERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIkZpcnN0Q2hhciIpKTsNCisgICAgICAgICAgICBpbnQgY2hhcmNvZGUgPSAwOw0KKyAgICAgICAgICAgIGZvciAoOyBjaGFyY29kZSA8IG5TdGFydENoYXI7IGNoYXJjb2RlICsrKSB7DQorICAgICAgICAgICAgICAgIG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPSAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9XT1JEIG5HbHlwaCA9IGNoYXJjb2RlIC0gblN0YXJ0Q2hhciArIDM7DQorICAgICAgICAgICAgZm9yICg7IGNoYXJjb2RlIDwgMjU2OyBjaGFyY29kZSArKywgbkdseXBoICsrKSB7DQorICAgICAgICAgICAgICAgIG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPSBuR2x5cGg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JPT0wgYk1TVW5pY29kZSA9IEZUX1VzZVRUQ2hhcm1hcChtX0ZvbnQubV9GYWNlLCAzLCAxKTsNCisgICAgICAgIEZYX0JPT0wgYk1hY1JvbWFuID0gRkFMU0UsIGJNU1N5bWJvbCA9IEZBTFNFOw0KKyAgICAgICAgaWYgKCFiTVNVbmljb2RlKSB7DQorICAgICAgICAgICAgaWYgKG1fRmxhZ3MgJiBQREZGT05UX05PTlNZTUJPTElDKSB7DQorICAgICAgICAgICAgICAgIGJNYWNSb21hbiA9IEZUX1VzZVRUQ2hhcm1hcChtX0ZvbnQubV9GYWNlLCAxLCAwKTsNCisgICAgICAgICAgICAgICAgYk1TU3ltYm9sID0gIWJNYWNSb21hbiAmJiBGVF9Vc2VUVENoYXJtYXAobV9Gb250Lm1fRmFjZSwgMywgMCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgYk1TU3ltYm9sID0gRlRfVXNlVFRDaGFybWFwKG1fRm9udC5tX0ZhY2UsIDMsIDApOw0KKyAgICAgICAgICAgICAgICBiTWFjUm9tYW4gPSAhYk1TU3ltYm9sICYmIEZUX1VzZVRUQ2hhcm1hcChtX0ZvbnQubV9GYWNlLCAxLCAwKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBGWF9CT09MIGJUb1VuaWNvZGUgPSBtX3BGb250RGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIlRvVW5pY29kZSIpKTsNCisgICAgICAgIGZvciAoaW50IGNoYXJjb2RlID0gMDsgY2hhcmNvZGUgPCAyNTY7IGNoYXJjb2RlICsrKSB7DQorICAgICAgICAgICAgRlhfTFBDU1RSIG5hbWUgPSBHZXRBZG9iZUNoYXJOYW1lKGJhc2VFbmNvZGluZywgbV9wQ2hhck5hbWVzLCBjaGFyY29kZSk7DQorICAgICAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBtX0dseXBoSW5kZXhbY2hhcmNvZGVdID0gbV9wRm9udEZpbGUgPyBGWEZUX0dldF9DaGFyX0luZGV4KG1fRm9udC5tX0ZhY2UsIGNoYXJjb2RlKSA6IC0xOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9FbmNvZGluZy5tX1VuaWNvZGVzW2NoYXJjb2RlXSA9IFBERl9Vbmljb2RlRnJvbUFkb2JlTmFtZShuYW1lKTsNCisgICAgICAgICAgICBpZiAoYk1TU3ltYm9sKSB7DQorICAgICAgICAgICAgICAgIGNvbnN0IEZYX0JZVEUgcHJlZml4WzRdID0gezB4MDAsIDB4ZjAsIDB4ZjEsIDB4ZjJ9Ow0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGogKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX1dPUkQgdW5pY29kZSA9IHByZWZpeFtqXSAqIDI1NiArIGNoYXJjb2RlOw0KKyAgICAgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgdW5pY29kZSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAobV9HbHlwaEluZGV4W2NoYXJjb2RlXSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX0VuY29kaW5nLm1fVW5pY29kZXNbY2hhcmNvZGVdKSB7DQorICAgICAgICAgICAgICAgIGlmIChiTVNVbmljb2RlKSB7DQorICAgICAgICAgICAgICAgICAgICBtX0dseXBoSW5kZXhbY2hhcmNvZGVdID0gRlhGVF9HZXRfQ2hhcl9JbmRleChtX0ZvbnQubV9GYWNlLCBtX0VuY29kaW5nLm1fVW5pY29kZXNbY2hhcmNvZGVdKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiTWFjUm9tYW4pIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIG1hY2NvZGUgPSBGVF9DaGFyQ29kZUZyb21Vbmljb2RlKEZYRlRfRU5DT0RJTkdfQVBQTEVfUk9NQU4sIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0pOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYWNjb2RlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X05hbWVfSW5kZXgobV9Gb250Lm1fRmFjZSwgKGNoYXIgKiluYW1lKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgbWFjY29kZSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKChtX0dseXBoSW5kZXhbY2hhcmNvZGVdID09IDAgfHwgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9PSAweGZmZmYpICYmIG5hbWUgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBpZiAobmFtZVswXSA9PSAnLicgJiYgRlhTWVNfc3RyY21wKG5hbWUsICIubm90ZGVmIikgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgMzIpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X05hbWVfSW5kZXgobV9Gb250Lm1fRmFjZSwgKGNoYXIqKW5hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiVG9Vbmljb2RlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHdzVW5pY29kZSA9IFVuaWNvZGVGcm9tQ2hhckNvZGUoY2hhcmNvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdzVW5pY29kZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPSBGWEZUX0dldF9DaGFyX0luZGV4KG1fRm9udC5tX0ZhY2UsIHdzVW5pY29kZVswXSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0VuY29kaW5nLm1fVW5pY29kZXNbY2hhcmNvZGVdID0gd3NVbmljb2RlWzBdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0dseXBoSW5kZXhbY2hhcmNvZGVdID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgY2hhcmNvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoRlRfVXNlVFRDaGFybWFwKG1fRm9udC5tX0ZhY2UsIDMsIDApKSB7DQorICAgICAgICBjb25zdCBGWF9CWVRFIHByZWZpeFs0XSA9IHsweDAwLCAweGYwLCAweGYxLCAweGYyfTsNCisgICAgICAgIEZYX0JPT0wgYkdvdE9uZSA9IEZBTFNFOw0KKyAgICAgICAgZm9yIChpbnQgY2hhcmNvZGUgPSAwOyBjaGFyY29kZSA8IDI1NjsgY2hhcmNvZGUgKyspIHsNCisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGogKyspIHsNCisgICAgICAgICAgICAgICAgRlhfV09SRCB1bmljb2RlID0gcHJlZml4W2pdICogMjU2ICsgY2hhcmNvZGU7DQorICAgICAgICAgICAgICAgIG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPSBGWEZUX0dldF9DaGFyX0luZGV4KG1fRm9udC5tX0ZhY2UsIHVuaWNvZGUpOw0KKyAgICAgICAgICAgICAgICBpZiAobV9HbHlwaEluZGV4W2NoYXJjb2RlXSkgew0KKyAgICAgICAgICAgICAgICAgICAgYkdvdE9uZSA9IFRSVUU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChiR290T25lKSB7DQorICAgICAgICAgICAgaWYgKGJhc2VFbmNvZGluZyAhPSBQREZGT05UX0VOQ09ESU5HX0JVSUxUSU4pIHsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY2hhcmNvZGUgPSAwOyBjaGFyY29kZSA8IDI1NjsgY2hhcmNvZGUgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0xQQ1NUUiBuYW1lID0gR2V0QWRvYmVDaGFyTmFtZShiYXNlRW5jb2RpbmcsIG1fcENoYXJOYW1lcywgY2hhcmNvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9FbmNvZGluZy5tX1VuaWNvZGVzW2NoYXJjb2RlXSA9IFBERl9Vbmljb2RlRnJvbUFkb2JlTmFtZShuYW1lKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoRlRfVXNlVFRDaGFybWFwKG1fRm9udC5tX0ZhY2UsIDEsIDApKSB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNoYXJjb2RlID0gMDsgY2hhcmNvZGUgPCAyNTY7IGNoYXJjb2RlICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBtX0VuY29kaW5nLm1fVW5pY29kZXNbY2hhcmNvZGVdID0gRlRfVW5pY29kZUZyb21DaGFyQ29kZShGWEZUX0VOQ09ESU5HX0FQUExFX1JPTUFOLCBjaGFyY29kZSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChGVF9Vc2VUVENoYXJtYXAobV9Gb250Lm1fRmFjZSwgMSwgMCkpIHsNCisgICAgICAgIEZYX0JPT0wgYkdvdE9uZSA9IEZBTFNFOw0KKyAgICAgICAgZm9yIChpbnQgY2hhcmNvZGUgPSAwOyBjaGFyY29kZSA8IDI1NjsgY2hhcmNvZGUgKyspIHsNCisgICAgICAgICAgICBtX0dseXBoSW5kZXhbY2hhcmNvZGVdID0gRlhGVF9HZXRfQ2hhcl9JbmRleChtX0ZvbnQubV9GYWNlLCBjaGFyY29kZSk7DQorICAgICAgICAgICAgbV9FbmNvZGluZy5tX1VuaWNvZGVzW2NoYXJjb2RlXSA9IEZUX1VuaWNvZGVGcm9tQ2hhckNvZGUoRlhGVF9FTkNPRElOR19BUFBMRV9ST01BTiwgY2hhcmNvZGUpOw0KKyAgICAgICAgICAgIGlmIChtX0dseXBoSW5kZXhbY2hhcmNvZGVdKSB7DQorICAgICAgICAgICAgICAgIGJHb3RPbmUgPSBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BGb250RmlsZSB8fCBiR290T25lKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChGWEZUX1NlbGVjdF9DaGFybWFwKG1fRm9udC5tX0ZhY2UsIEZYRlRfRU5DT0RJTkdfVU5JQ09ERSkgPT0gMCkgew0KKyAgICAgICAgRlhfQk9PTCBiR290T25lID0gRkFMU0U7DQorICAgICAgICBjb25zdCBGWF9XT1JEKiBwVW5pY29kZXMgPSBQREZfVW5pY29kZXNGb3JQcmVkZWZpbmVkQ2hhclNldChiYXNlRW5jb2RpbmcpOw0KKyAgICAgICAgZm9yIChpbnQgY2hhcmNvZGUgPSAwOyBjaGFyY29kZSA8IDI1NjsgY2hhcmNvZGUgKyspIHsNCisgICAgICAgICAgICBpZiAobV9wRm9udEZpbGUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBGWF9MUENTVFIgbmFtZSA9IEdldEFkb2JlQ2hhck5hbWUoMCwgbV9wQ2hhck5hbWVzLCBjaGFyY29kZSk7DQorICAgICAgICAgICAgICAgIGlmIChuYW1lICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0gPSBQREZfVW5pY29kZUZyb21BZG9iZU5hbWUobmFtZSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocFVuaWNvZGVzKSB7DQorICAgICAgICAgICAgICAgICAgICBtX0VuY29kaW5nLm1fVW5pY29kZXNbY2hhcmNvZGVdID0gcFVuaWNvZGVzW2NoYXJjb2RlXTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tjaGFyY29kZV0gPSBjaGFyY29kZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9HbHlwaEluZGV4W2NoYXJjb2RlXSA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgbV9FbmNvZGluZy5tX1VuaWNvZGVzW2NoYXJjb2RlXSk7DQorICAgICAgICAgICAgaWYgKG1fR2x5cGhJbmRleFtjaGFyY29kZV0pIHsNCisgICAgICAgICAgICAgICAgYkdvdE9uZSA9IFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGJHb3RPbmUpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0NCisgICAgZm9yIChpbnQgY2hhcmNvZGUgPSAwOyBjaGFyY29kZSA8IDI1NjsgY2hhcmNvZGUgKyspIHsNCisgICAgICAgIG1fR2x5cGhJbmRleFtjaGFyY29kZV0gPSBjaGFyY29kZTsNCisgICAgfQ0KK30NCitDUERGX1R5cGUzRm9udDo6Q1BERl9UeXBlM0ZvbnQoKQ0KK3sNCisgICAgbV9wUGFnZVJlc291cmNlcyA9IE5VTEw7DQorICAgIEZYU1lTX21lbXNldDMyKG1fQ2hhcldpZHRoTCwgMCwgc2l6ZW9mIG1fQ2hhcldpZHRoTCk7DQorfQ0KK0NQREZfVHlwZTNGb250Ojp+Q1BERl9UeXBlM0ZvbnQoKQ0KK3sNCisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9DYWNoZU1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIEZYX0xQVk9JRCBrZXksIHZhbHVlOw0KKyAgICAgICAgbV9DYWNoZU1hcC5HZXROZXh0QXNzb2MocG9zLCBrZXksIHZhbHVlKTsNCisgICAgICAgIGRlbGV0ZSAoQ1BERl9UeXBlM0NoYXIqKXZhbHVlOw0KKyAgICB9DQorICAgIG1fQ2FjaGVNYXAuUmVtb3ZlQWxsKCk7DQorICAgIHBvcyA9IG1fRGVsZXRlZE1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIEZYX0xQVk9JRCBrZXksIHZhbHVlOw0KKyAgICAgICAgbV9EZWxldGVkTWFwLkdldE5leHRBc3NvYyhwb3MsIGtleSwgdmFsdWUpOw0KKyAgICAgICAgZGVsZXRlIChDUERGX1R5cGUzQ2hhciopa2V5Ow0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9UeXBlM0ZvbnQ6Ol9Mb2FkKCkNCit7DQorICAgIG1fcEZvbnRSZXNvdXJjZXMgPSBtX3BGb250RGljdC0+R2V0RGljdChGWF9CU1RSQygiUmVzb3VyY2VzIikpOw0KKyAgICBDUERGX0FycmF5KiBwTWF0cml4ID0gbV9wRm9udERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJGb250TWF0cml4IikpOw0KKyAgICBGWF9GTE9BVCB4c2NhbGUgPSAxLjBmLCB5c2NhbGUgPSAxLjBmOw0KKyAgICBpZiAocE1hdHJpeCkgew0KKyAgICAgICAgbV9Gb250TWF0cml4ID0gcE1hdHJpeC0+R2V0TWF0cml4KCk7DQorICAgICAgICB4c2NhbGUgPSBtX0ZvbnRNYXRyaXguYTsNCisgICAgICAgIHlzY2FsZSA9IG1fRm9udE1hdHJpeC5kOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBCQm94ID0gbV9wRm9udERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJGb250QkJveCIpKTsNCisgICAgaWYgKHBCQm94KSB7DQorICAgICAgICBtX0ZvbnRCQm94LmxlZnQgPSAoRlhfSU5UMzIpKEZYU1lTX011bChwQkJveC0+R2V0TnVtYmVyKDApLCB4c2NhbGUpICogMTAwMCk7DQorICAgICAgICBtX0ZvbnRCQm94LmJvdHRvbSA9IChGWF9JTlQzMikoRlhTWVNfTXVsKHBCQm94LT5HZXROdW1iZXIoMSksIHlzY2FsZSkgKiAxMDAwKTsNCisgICAgICAgIG1fRm9udEJCb3gucmlnaHQgPSAoRlhfSU5UMzIpKEZYU1lTX011bChwQkJveC0+R2V0TnVtYmVyKDIpLCB4c2NhbGUpICogMTAwMCk7DQorICAgICAgICBtX0ZvbnRCQm94LnRvcCA9IChGWF9JTlQzMikoRlhTWVNfTXVsKHBCQm94LT5HZXROdW1iZXIoMyksIHlzY2FsZSkgKiAxMDAwKTsNCisgICAgfQ0KKyAgICBpbnQgU3RhcnRDaGFyID0gbV9wRm9udERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIkZpcnN0Q2hhciIpKTsNCisgICAgQ1BERl9BcnJheSogcFdpZHRoQXJyYXkgPSBtX3BGb250RGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIldpZHRocyIpKTsNCisgICAgaWYgKHBXaWR0aEFycmF5ICYmIChTdGFydENoYXIgPj0gMCAmJiBTdGFydENoYXIgPCAyNTYpKSB7DQorICAgICAgICBGWF9EV09SRCBjb3VudCA9IHBXaWR0aEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgaWYgKGNvdW50ID4gMjU2KSB7DQorICAgICAgICAgICAgY291bnQgPSAyNTY7DQorICAgICAgICB9DQorICAgICAgICBpZiAoU3RhcnRDaGFyICsgY291bnQgPiAyNTYpIHsNCisgICAgICAgICAgICBjb3VudCA9IDI1NiAtIFN0YXJ0Q2hhcjsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBjb3VudDsgaSArKykgew0KKyAgICAgICAgICAgIG1fQ2hhcldpZHRoTFtTdGFydENoYXIgKyBpXSA9IEZYU1lTX3JvdW5kKEZYU1lTX011bChwV2lkdGhBcnJheS0+R2V0TnVtYmVyKGkpLCB4c2NhbGUpICogMTAwMCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wQ2hhclByb2NzID0gbV9wRm9udERpY3QtPkdldERpY3QoRlhfQlNUUkMoIkNoYXJQcm9jcyIpKTsNCisgICAgQ1BERl9PYmplY3QqIHBFbmNvZGluZyA9IG1fcEZvbnREaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkVuY29kaW5nIikpOw0KKyAgICBpZiAocEVuY29kaW5nKSB7DQorICAgICAgICBMb2FkUERGRW5jb2RpbmcocEVuY29kaW5nLCBtX0Jhc2VFbmNvZGluZywgbV9wQ2hhck5hbWVzLCBGQUxTRSwgRkFMU0UpOw0KKyAgICAgICAgaWYgKG1fcENoYXJOYW1lcykgew0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tpXSA9IFBERl9Vbmljb2RlRnJvbUFkb2JlTmFtZShtX3BDaGFyTmFtZXNbaV0pOw0KKyAgICAgICAgICAgICAgICBpZiAobV9FbmNvZGluZy5tX1VuaWNvZGVzW2ldID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIG1fRW5jb2RpbmcubV9Vbmljb2Rlc1tpXSA9IGk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ1BERl9UeXBlM0ZvbnQ6OkNoZWNrVHlwZTNGb250TWV0cmljcygpDQorew0KKyAgICBDaGVja0ZvbnRNZXRyaWNzKCk7DQorfQ0KK0NQREZfVHlwZTNDaGFyKiBDUERGX1R5cGUzRm9udDo6TG9hZENoYXIoRlhfRFdPUkQgY2hhcmNvZGUsIGludCBsZXZlbCkNCit7DQorICAgIGlmIChsZXZlbCA+PSBfRlBERl9NQVhfVFlQRTNfRk9STV9MRVZFTF8pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfVHlwZTNDaGFyKiBwQ2hhciA9IE5VTEw7DQorICAgIGlmIChtX0NhY2hlTWFwLkxvb2t1cCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKWNoYXJjb2RlLCAoRlhfTFBWT0lEJilwQ2hhcikpIHsNCisgICAgICAgIGlmIChwQ2hhci0+bV9iUGFnZVJlcXVpcmVkICYmIG1fcFBhZ2VSZXNvdXJjZXMpIHsNCisgICAgICAgICAgICBkZWxldGUgcENoYXI7DQorICAgICAgICAgICAgbV9DYWNoZU1hcC5SZW1vdmVLZXkoKEZYX0xQVk9JRCkoRlhfVUlOVFBUUiljaGFyY29kZSk7DQorICAgICAgICAgICAgcmV0dXJuIExvYWRDaGFyKGNoYXJjb2RlLCBsZXZlbCArIDEpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHBDaGFyOw0KKyAgICB9DQorICAgIEZYX0xQQ1NUUiBuYW1lID0gR2V0QWRvYmVDaGFyTmFtZShtX0Jhc2VFbmNvZGluZywgbV9wQ2hhck5hbWVzLCBjaGFyY29kZSk7DQorICAgIGlmIChuYW1lID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfU3RyZWFtKiBwU3RyZWFtID0gKENQREZfU3RyZWFtKiltX3BDaGFyUHJvY3MtPkdldEVsZW1lbnRWYWx1ZShuYW1lKTsNCisgICAgaWYgKHBTdHJlYW0gPT0gTlVMTCB8fCBwU3RyZWFtLT5HZXRUeXBlKCkgIT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcENoYXIgPSBGWF9ORVcgQ1BERl9UeXBlM0NoYXI7DQorICAgIHBDaGFyLT5tX3BGb3JtID0gRlhfTkVXIENQREZfRm9ybShtX3BEb2N1bWVudCwgbV9wRm9udFJlc291cmNlcyA/IG1fcEZvbnRSZXNvdXJjZXMgOiBtX3BQYWdlUmVzb3VyY2VzLCBwU3RyZWFtLCBOVUxMKTsNCisgICAgcENoYXItPm1fcEZvcm0tPlBhcnNlQ29udGVudChOVUxMLCBOVUxMLCBwQ2hhciwgTlVMTCwgbGV2ZWwgKyAxKTsNCisgICAgRlhfRkxPQVQgc2NhbGUgPSBtX0ZvbnRNYXRyaXguR2V0WFVuaXQoKTsNCisgICAgcENoYXItPm1fV2lkdGggPSAoRlhfSU5UMzIpKHBDaGFyLT5tX1dpZHRoICogc2NhbGUgKyAwLjVmKTsNCisgICAgRlhfUkVDVCAmcmNCQm94ID0gcENoYXItPm1fQkJveDsNCisgICAgQ0ZYX0Zsb2F0UmVjdCBjaGFyX3JlY3QoKEZYX0ZMT0FUKXJjQkJveC5sZWZ0IC8gMTAwMC4wZiwgKEZYX0ZMT0FUKXJjQkJveC5ib3R0b20gLyAxMDAwLjBmLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlhfRkxPQVQpcmNCQm94LnJpZ2h0IC8gMTAwMC4wZiwgKEZYX0ZMT0FUKXJjQkJveC50b3AgLyAxMDAwLjBmKTsNCisgICAgaWYgKHJjQkJveC5yaWdodCA8PSByY0JCb3gubGVmdCB8fCByY0JCb3guYm90dG9tID49IHJjQkJveC50b3ApIHsNCisgICAgICAgIGNoYXJfcmVjdCA9IHBDaGFyLT5tX3BGb3JtLT5DYWxjQm91bmRpbmdCb3goKTsNCisgICAgfQ0KKyAgICBjaGFyX3JlY3QuVHJhbnNmb3JtKCZtX0ZvbnRNYXRyaXgpOw0KKyAgICByY0JCb3gubGVmdCA9IEZYU1lTX3JvdW5kKGNoYXJfcmVjdC5sZWZ0ICogMTAwMCk7DQorICAgIHJjQkJveC5yaWdodCA9IEZYU1lTX3JvdW5kKGNoYXJfcmVjdC5yaWdodCAqIDEwMDApOw0KKyAgICByY0JCb3gudG9wID0gRlhTWVNfcm91bmQoY2hhcl9yZWN0LnRvcCAqIDEwMDApOw0KKyAgICByY0JCb3guYm90dG9tID0gRlhTWVNfcm91bmQoY2hhcl9yZWN0LmJvdHRvbSAqIDEwMDApOw0KKyAgICBtX0NhY2hlTWFwLlNldEF0KChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpY2hhcmNvZGUsIHBDaGFyKTsNCisgICAgaWYgKHBDaGFyLT5tX3BGb3JtLT5Db3VudE9iamVjdHMoKSA9PSAwKSB7DQorICAgICAgICBkZWxldGUgcENoYXItPm1fcEZvcm07DQorICAgICAgICBwQ2hhci0+bV9wRm9ybSA9IE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBDaGFyOw0KK30NCitpbnQgQ1BERl9UeXBlM0ZvbnQ6OkdldENoYXJXaWR0aEYoRlhfRFdPUkQgY2hhcmNvZGUsIGludCBsZXZlbCkNCit7DQorICAgIGlmIChjaGFyY29kZSA+IDB4ZmYpIHsNCisgICAgICAgIGNoYXJjb2RlID0gMDsNCisgICAgfQ0KKyAgICBpZiAobV9DaGFyV2lkdGhMW2NoYXJjb2RlXSkgew0KKyAgICAgICAgcmV0dXJuIG1fQ2hhcldpZHRoTFtjaGFyY29kZV07DQorICAgIH0NCisgICAgQ1BERl9UeXBlM0NoYXIqIHBDaGFyID0gTG9hZENoYXIoY2hhcmNvZGUsIGxldmVsKTsNCisgICAgaWYgKHBDaGFyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiBwQ2hhci0+bV9XaWR0aDsNCit9DQordm9pZCBDUERGX1R5cGUzRm9udDo6R2V0Q2hhckJCb3goRlhfRFdPUkQgY2hhcmNvZGUsIEZYX1JFQ1QmIHJlY3QsIGludCBsZXZlbCkNCit7DQorICAgIENQREZfVHlwZTNDaGFyKiBwQ2hhciA9IExvYWRDaGFyKGNoYXJjb2RlLCBsZXZlbCk7DQorICAgIGlmIChwQ2hhciA9PSBOVUxMKSB7DQorICAgICAgICByZWN0LmxlZnQgPSByZWN0LnJpZ2h0ID0gcmVjdC50b3AgPSByZWN0LmJvdHRvbSA9IDA7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcmVjdCA9IHBDaGFyLT5tX0JCb3g7DQorfQ0KK0NQREZfVHlwZTNDaGFyOjpDUERGX1R5cGUzQ2hhcigpDQorew0KKyAgICBtX3BGb3JtID0gTlVMTDsNCisgICAgbV9wQml0bWFwID0gTlVMTDsNCisgICAgbV9iUGFnZVJlcXVpcmVkID0gRkFMU0U7DQorICAgIG1fYkNvbG9yZWQgPSBGQUxTRTsNCit9DQorQ1BERl9UeXBlM0NoYXI6On5DUERGX1R5cGUzQ2hhcigpDQorew0KKyAgICBpZiAobV9wRm9ybSkgew0KKyAgICAgICAgZGVsZXRlIG1fcEZvcm07DQorICAgIH0NCisgICAgaWYgKG1fcEJpdG1hcCkgew0KKyAgICAgICAgZGVsZXRlIG1fcEJpdG1hcDsNCisgICAgfQ0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZm9udC9mcGRmX2ZvbnRfY2hhcnNldC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZm9udC9mcGRmX2ZvbnRfY2hhcnNldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQwOWNmYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9mb250L2ZwZGZfZm9udF9jaGFyc2V0LmNwcApAQCAtMCwwICsxLDYyNSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2ZyZWV0eXBlLmgiDQorZXh0ZXJuIEZYX1dDSEFSIFBERl9Vbmljb2RlRnJvbUFkb2JlTmFtZShjb25zdCBGWF9DSEFSKik7DQorY29uc3Qgc3RydWN0IF9Vbmljb2RlQWx0IHsNCisgICAgRlhfV09SRAltX1VuaWNvZGU7DQorICAgIGNvbnN0IEZYX0NIQVIqIG1fQWx0ZXI7DQorfQ0KK1VuaWNvZGVBbHRzW10gPSB7DQorICAgIHsweDAwYTAsICIgIn0sIHsweDAwYTEsICIhIn0sIHsweDAwYTIsICJjIn0sIHsweDAwYTMsICJQIn0sIHsweDAwYTQsICJvIn0sDQorICAgIHsweDAwYTUsICJZIn0sIHsweDAwYTYsICJ8In0sIHsweDAwYTcsICJTIn0sIHsweDAwYTksICIoQykifSwgezB4MDBhYSwgImEifSwNCisgICAgezB4MDBhYiwgIjw8In0sIHsweDAwYWMsICItfCJ9LCB7MHgwMGFlLCAiKFIpIn0sIHsweDAwYWYsICItIn0sDQorICAgIHsweDAwYjAsICJvIn0sIHsweDAwYjEsICIrLy0ifSwgezB4MDBiMiwgIl4yIn0sIHsgMHgwMGIzLCAiXjMifSwNCisgICAgezB4MDBiNCwgIicifSwgezB4MDBiNSwgInUifSwgezB4MDBiNiwgIlAifSwgezB4MDBiNywgIi4ifSwNCisgICAgezB4MDBiOSwgIl4xIn0sIHsweDAwYmEsICJvIn0sIHsweDAwYmIsICI+PiJ9LCB7MHgwMGJjLCAiMS80In0sDQorICAgIHsweDAwYmQsICIxLzIifSwgezB4MDBiZSwgIjMvNCJ9LCAgezB4MDBiZiwgIj8ifSwgezB4MDBjMCwgIkEifSwNCisgICAgezB4MDBjMSwgIkEifSwgezB4MDBjMiwgIkEifSwgezB4MDBjMywgIkEifSwgezB4MDBjNCwgIkEifSwNCisgICAgezB4MDBjNSwgIkEifSwgezB4MDBjNiwgIkFFIn0sIHsweDAwYzcsICJDIn0sIHsweDAwYzgsICJFIn0sDQorICAgIHsweDAwYzksICJFIn0sIHsweDAwY2EsICJFIn0sIHsweDAwY2IsICJFIn0sIHsweDAwY2MsICJJIn0sDQorICAgIHsweDAwY2QsICJJIn0sIHsweDAwY2UsICJJIn0sIHsweDAwY2YsICJJIn0sDQorICAgIHsweDAwZDEsICJOIn0sIHsweDAwZDIsICJPIn0sIHsweDAwZDMsICJPIn0sIHsweDAwZDQsICJPIn0sDQorICAgIHsweDAwZDUsICJPIn0sIHsweDAwZDYsICJPIn0sIHsweDAwZDcsICJ4In0sIHsweDAwZDgsICJPIn0sDQorICAgIHsweDAwZDksICJVIn0sIHsweDAwZGEsICJVIn0sIHsweDAwZGIsICJVIn0sIHsweDAwZGMsICJVIn0sDQorICAgIHsweDAwZGQsICJZIn0sIHsweDAwZGYsICJTIn0sIHsweDAwZTAsICJhIn0sDQorICAgIHsweDAwZTEsICJhIn0sIHsweDAwZTIsICJhIn0sIHsweDAwZTMsICJhIn0sIHsweDAwZTQsICJhIn0sDQorICAgIHsweDAwZTUsICJhIn0sIHsweDAwZTYsICJhZSJ9LCB7MHgwMGU3LCAiYyJ9LCB7MHgwMGU4LCAiZSJ9LA0KKyAgICB7MHgwMGU5LCAiZSJ9LCB7MHgwMGVhLCAiZSJ9LCB7MHgwMGViLCAiZSJ9LCB7MHgwMGVjLCAiaSJ9LA0KKyAgICB7MHgwMGVkLCAiaSJ9LCB7MHgwMGVlLCAiaSJ9LCB7MHgwMGVmLCAiaSJ9LA0KKyAgICB7MHgwMGYxLCAibiJ9LCB7MHgwMGYyLCAibyJ9LCB7MHgwMGYzLCAibyJ9LCB7MHgwMGY0LCAibyJ9LA0KKyAgICB7MHgwMGY1LCAibyJ9LCB7MHgwMGY2LCAibyJ9LCB7MHgwMGY3LCAiLyJ9LCB7MHgwMGY4LCAibyJ9LA0KKyAgICB7MHgwMGY5LCAidSJ9LCB7MHgwMGZhLCAidSJ9LCB7MHgwMGZiLCAidSJ9LCB7MHgwMGZjLCAidSJ9LA0KKyAgICB7MHgwMGZkLCAieSJ9LCB7MHgwMGZmLCAieSJ9LA0KKyAgICB7MHgwMmIwLCAiaCJ9LCB7MHgwMmIyLCAiaiJ9LCB7MHgwMmIzLCAiciJ9LCB7MHgwMmI3LCAidyJ9LA0KKyAgICB7MHgwMmI4LCAieSJ9LCB7MHgwMmI5LCAiJyJ9LCB7MHgwMmJhLCAiXCIifSwgezB4MDJiYiwgIicifSwNCisgICAgezB4MDJiYywgIicifSwgezB4MDJiZCwgIicifSwgezB4MDJiZSwgIicifSwgezB4MDJiZiwgIicifSwNCisgICAgezB4MDJjMiwgIjwifSwgezB4MDJjMywgIj4ifSwgezB4MDJjNCwgIl4ifSwgezB4MDJjNSwgInYifSwNCisgICAgezB4MDJjNiwgIl4ifSwgezB4MDJjNywgInYifSwgezB4MDJjOCwgIicifSwgezB4MDJjOSwgIi0ifSwNCisgICAgezB4MDJjYSwgIicifSwgezB4MDJjYiwgIicifSwgezB4MDJjYywgIi4ifSwgezB4MDJjZCwgIl8ifSwNCisgICAgezB4MjAxMCwgIi0ifSwgezB4MjAxMiwgIi0ifSwgezB4MjAxMywgIi0ifSwgezB4MjAxNCwgIi0tIn0sDQorICAgIHsweDIwMTUsICItLSJ9LCB7MHgyMDE2LCAifCJ9LCB7MHgyMDE3LCAiXyJ9LA0KKyAgICB7MHgyMDE4LCAiJyJ9LCB7MHgyMDE5LCAiJyJ9LCB7MHgyMDFhLCAiLCJ9LCB7MHgyMDFiLCAiJyJ9LA0KKyAgICB7MHgyMDFjLCAiXCIifSwgezB4MjAxZCwgIlwiIn0sIHsweDIwMWUsICIsIn0sIHsweDIwMWYsICInIn0sDQorICAgIHsweDIwMjAsICIrIn0sIHsweDIwMjEsICIrIn0sIHsweDIwMjIsICIqIn0sIHsweDIwMjMsICI+In0sDQorICAgIHsweDIwMjQsICIuIn0sIHsweDIwMjUsICIuLiJ9LCB7MHgyMDI3LCAiLiJ9LCB7MHgyMDMyLCAiJyJ9LA0KKyAgICB7MHgyMDMzLCAiXCIifSwgezB4MjAzNSwgIicifSwgezB4MjAzNiwgIlwiIn0sIHsweDIwMzgsICJeIn0sDQorICAgIHsweDIwMzksICI8In0sIHsweDIwM2EsICI+In0sIHsweDIwM2IsICIqIn0sIHsweDIwM2MsICIhISJ9LA0KKyAgICB7MHgyMDNkLCAiPyEifSwgezB4MjAzZSwgIi0ifSwgezB4MjA0NCwgIi8ifSwgezB4MjA0NywgIj8/In0sDQorICAgIHsweDIwNDgsICI/ISJ9LCB7MHgyMDQ5LCAiIT8ifSwgezB4MjA0ZSwgIioifSwgezB4MjA1MiwgIiUifSwNCisgICAgezB4MjEyMiwgIihUTSkifSwNCisgICAgezB4MjIxMiwgIi0ifSwgezB4MjIxNSwgIi8ifSwgezB4MjIxNiwgIlxcIn0sIHsweDIyMTcsICIqIn0sDQorICAgIHsweDIyMTgsICIqIn0sIHsweDIyMTksICIqIn0sIHsweDIyMjMsICJ8In0sIHsweDIyYzUsICIuIn0sDQorICAgIHsweDI2NmYsICIjIn0sDQorICAgIHswWEY2RDksICIoQykifSwgezBYRjZEQSwgIihDKSJ9LCB7MFhGNkRCLCAiKFRNKSJ9LA0KKyAgICB7MFhGOEU4LCAiKEMpIn0sIHsweGY4ZTksICIoQykifSwgezBYRjhFQSwgIihUTSkifSwNCisNCisgICAgezB4ZmIwMSwgImZpIn0sIHsweGZiMDIsICJmbCJ9DQorfTsNCitjb25zdCBGWF9DSEFSKiBGQ1NfR2V0QWx0U3RyKEZYX1dDSEFSIHVuaWNvZGUpDQorew0KKyAgICBpbnQgYmVnaW4gPSAwOw0KKyAgICBpbnQgZW5kID0gc2l6ZW9mIFVuaWNvZGVBbHRzIC8gc2l6ZW9mKHN0cnVjdCBfVW5pY29kZUFsdCkgLSAxOw0KKyAgICB3aGlsZSAoYmVnaW4gPD0gZW5kKSB7DQorICAgICAgICBpbnQgbWlkZGxlID0gKGJlZ2luICsgZW5kKSAvIDI7DQorICAgICAgICBGWF9XT1JEIG1pZGRsZWNvZGUgPSBVbmljb2RlQWx0c1ttaWRkbGVdLm1fVW5pY29kZTsNCisgICAgICAgIGlmIChtaWRkbGVjb2RlID4gdW5pY29kZSkgew0KKyAgICAgICAgICAgIGVuZCA9IG1pZGRsZSAtIDE7DQorICAgICAgICB9IGVsc2UgaWYgKG1pZGRsZWNvZGUgPCB1bmljb2RlKSB7DQorICAgICAgICAgICAgYmVnaW4gPSBtaWRkbGUgKyAxOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXR1cm4gVW5pY29kZUFsdHNbbWlkZGxlXS5tX0FsdGVyOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitjb25zdCBGWF9XT1JEIFN0YW5kYXJkRW5jb2RpbmdbMjU2XSA9IHsNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAyMCwgMHgwMDIxLCAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwgMHgyMDE5LA0KKyAgICAweDAwMjgsIDB4MDAyOSwgMHgwMDJhLCAweDAwMmIsIDB4MDAyYywgMHgwMDJkLCAweDAwMmUsIDB4MDAyZiwgMHgwMDMwLCAweDAwMzEsDQorICAgIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwM2EsIDB4MDAzYiwNCisgICAgMHgwMDNjLCAweDAwM2QsIDB4MDAzZSwgMHgwMDNmLCAweDAwNDAsIDB4MDA0MSwgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LA0KKyAgICAweDAwNDYsIDB4MDA0NywgMHgwMDQ4LCAweDAwNDksIDB4MDA0YSwgMHgwMDRiLCAweDAwNGMsIDB4MDA0ZCwgMHgwMDRlLCAweDAwNGYsDQorICAgIDB4MDA1MCwgMHgwMDUxLCAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwgMHgwMDU3LCAweDAwNTgsIDB4MDA1OSwNCisgICAgMHgwMDVhLCAweDAwNWIsIDB4MDA1YywgMHgwMDVkLCAweDAwNWUsIDB4MDA1ZiwgMHgyMDE4LCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLA0KKyAgICAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNmEsIDB4MDA2YiwgMHgwMDZjLCAweDAwNmQsDQorICAgIDB4MDA2ZSwgMHgwMDZmLCAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywNCisgICAgMHgwMDc4LCAweDAwNzksIDB4MDA3YSwgMHgwMDdiLCAweDAwN2MsIDB4MDA3ZCwgMHgwMDdlLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDBhMSwgMHgwMGEyLCAweDAwYTMsIDB4MjA0NCwgMHgwMGE1LCAweDAxOTIsIDB4MDBhNywgMHgwMGE0LCAweDAwMjcsDQorICAgIDB4MjAxYywgMHgwMGFiLCAweDIwMzksIDB4MjAzYSwgMHhmYjAxLCAweGZiMDIsIDB4MDAwMCwgMHgyMDEzLCAweDIwMjAsIDB4MjAyMSwNCisgICAgMHgwMGI3LCAweDAwMDAsIDB4MDBiNiwgMHgyMDIyLCAweDIwMWEsIDB4MjAxZSwgMHgyMDFkLCAweDAwYmIsIDB4MjAyNiwgMHgyMDMwLA0KKyAgICAweDAwMDAsIDB4MDBiZiwgMHgwMDAwLCAweDAwNjAsIDB4MDBiNCwgMHgwMmM2LCAweDAyZGMsIDB4MDBhZiwgMHgwMmQ4LCAweDAyZDksDQorICAgIDB4MDBhOCwgMHgwMDAwLCAweDAyZGEsIDB4MDBiOCwgMHgwMDAwLCAweDAyZGQsIDB4MDJkYiwgMHgwMmM3LCAweDIwMTQsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMGM2LCAweDAwMDAsIDB4MDBhYSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAxNDEsIDB4MDBkOCwgMHgwMTUyLCAweDAwYmEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwZTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDEzMSwgMHgwMDAwLCAweDAwMDAsIDB4MDE0MiwgMHgwMGY4LA0KKyAgICAweDAxNTMsIDB4MDBkZiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwDQorfTsNCitjb25zdCBGWF9XT1JEIE1hY1JvbWFuRW5jb2RpbmdbMjU2XSA9IHsNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAyMCwgMHgwMDIxLCAweDAwMjIsIDB4MDAyMywgMHgwMDI0LCAweDAwMjUsIDB4MDAyNiwgMHgwMDI3LA0KKyAgICAweDAwMjgsIDB4MDAyOSwgMHgwMDJhLCAweDAwMmIsIDB4MDAyYywgMHgwMDJkLCAweDAwMmUsIDB4MDAyZiwgMHgwMDMwLCAweDAwMzEsDQorICAgIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwM2EsIDB4MDAzYiwNCisgICAgMHgwMDNjLCAweDAwM2QsIDB4MDAzZSwgMHgwMDNmLCAweDAwNDAsIDB4MDA0MSwgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LA0KKyAgICAweDAwNDYsIDB4MDA0NywgMHgwMDQ4LCAweDAwNDksIDB4MDA0YSwgMHgwMDRiLCAweDAwNGMsIDB4MDA0ZCwgMHgwMDRlLCAweDAwNGYsDQorICAgIDB4MDA1MCwgMHgwMDUxLCAweDAwNTIsIDB4MDA1MywgMHgwMDU0LCAweDAwNTUsIDB4MDA1NiwgMHgwMDU3LCAweDAwNTgsIDB4MDA1OSwNCisgICAgMHgwMDVhLCAweDAwNWIsIDB4MDA1YywgMHgwMDVkLCAweDAwNWUsIDB4MDA1ZiwgMHgwMDYwLCAweDAwNjEsIDB4MDA2MiwgMHgwMDYzLA0KKyAgICAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIDB4MDA2OCwgMHgwMDY5LCAweDAwNmEsIDB4MDA2YiwgMHgwMDZjLCAweDAwNmQsDQorICAgIDB4MDA2ZSwgMHgwMDZmLCAweDAwNzAsIDB4MDA3MSwgMHgwMDcyLCAweDAwNzMsIDB4MDA3NCwgMHgwMDc1LCAweDAwNzYsIDB4MDA3NywNCisgICAgMHgwMDc4LCAweDAwNzksIDB4MDA3YSwgMHgwMDdiLCAweDAwN2MsIDB4MDA3ZCwgMHgwMDdlLCAweDAwMDAsIDB4MDBjNCwgMHgwMGM1LA0KKyAgICAweDAwYzcsIDB4MDBjOSwgMHgwMGQxLCAweDAwZDYsIDB4MDBkYywgMHgwMGUxLCAweDAwZTAsIDB4MDBlMiwgMHgwMGU0LCAweDAwZTMsDQorICAgIDB4MDBlNSwgMHgwMGU3LCAweDAwZTksIDB4MDBlOCwgMHgwMGVhLCAweDAwZWIsIDB4MDBlZCwgMHgwMGVjLCAweDAwZWUsIDB4MDBlZiwNCisgICAgMHgwMGYxLCAweDAwZjMsIDB4MDBmMiwgMHgwMGY0LCAweDAwZjYsIDB4MDBmNSwgMHgwMGZhLCAweDAwZjksIDB4MDBmYiwgMHgwMGZjLA0KKyAgICAweDIwMjAsIDB4MDBiMCwgMHgwMGEyLCAweDAwYTMsIDB4MDBhNywgMHgyMDIyLCAweDAwYjYsIDB4MDBkZiwgMHgwMGFlLCAweDAwYTksDQorICAgIDB4MjEyMiwgMHgwMGI0LCAweDAwYTgsIDB4MDAwMCwgMHgwMGM2LCAweDAwZDgsIDB4MDAwMCwgMHgwMGIxLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMGE1LCAweDAwYjUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwYWEsIDB4MDBiYSwgMHgwMDAwLA0KKyAgICAweDAwZTYsIDB4MDBmOCwgMHgwMGJmLCAweDAwYTMsIDB4MDBhYywgMHgwMDAwLCAweDAxOTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwYWIsDQorICAgIDB4MDBiYiwgMHgyMDI2LCAweDAwMjAsIDB4MDBjMCwgMHgwMGMzLCAweDAwZDUsIDB4MDE1MiwgMHgwMTUzLCAweDIwMTMsIDB4MjAxNCwNCisgICAgMHgyMDFjLCAweDIwMWQsIDB4MjAxOCwgMHgyMDE5LCAweDAwZjcsIDB4MDAwMCwgMHgwMGZmLCAweDAxNzgsIDB4MjA0NCwgMHgwMGE0LA0KKyAgICAweDIwMzksIDB4MjAzYSwgMHhmYjAxLCAweGZiMDIsIDB4MjAyMSwgMHgwMGI3LCAweDIwMWEsIDB4MjAxZSwgMHgyMDMwLCAweDAwYzIsDQorICAgIDB4MDBjYSwgMHgwMGMxLCAweDAwY2IsIDB4MDBjOCwgMHgwMGNkLCAweDAwY2UsIDB4MDBjZiwgMHgwMGNjLCAweDAwZDMsIDB4MDBkNCwNCisgICAgMHgwMDAwLCAweDAwZDIsIDB4MDBkYSwgMHgwMGRiLCAweDAwZDksIDB4MDEzMSwgMHgwMmM2LCAweDAyZGMsIDB4MDBhZiwgMHgwMmQ4LA0KKyAgICAweDAyZDksIDB4MDJkYSwgMHgwMGI4LCAweDAyZGQsIDB4MDJkYiwgMHgwMmM3DQorfTsNCitjb25zdCBGWF9XT1JEIEFkb2JlV2luQW5zaUVuY29kaW5nWzI1Nl0gPSB7DQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMjAsIDB4MDAyMSwgMHgwMDIyLCAweDAwMjMsIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywNCisgICAgMHgwMDI4LCAweDAwMjksIDB4MDAyYSwgMHgwMDJiLCAweDAwMmMsIDB4MDAyZCwgMHgwMDJlLCAweDAwMmYsDQorICAgIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LA0KKyAgICAweDAwMzgsIDB4MDAzOSwgMHgwMDNhLCAweDAwM2IsIDB4MDAzYywgMHgwMDNkLCAweDAwM2UsIDB4MDAzZiwNCisgICAgMHgwMDQwLCAweDAwNDEsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDQsIDB4MDA0NSwgMHgwMDQ2LCAweDAwNDcsDQorICAgIDB4MDA0OCwgMHgwMDQ5LCAweDAwNGEsIDB4MDA0YiwgMHgwMDRjLCAweDAwNGQsIDB4MDA0ZSwgMHgwMDRmLA0KKyAgICAweDAwNTAsIDB4MDA1MSwgMHgwMDUyLCAweDAwNTMsIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywNCisgICAgMHgwMDU4LCAweDAwNTksIDB4MDA1YSwgMHgwMDViLCAweDAwNWMsIDB4MDA1ZCwgMHgwMDVlLCAweDAwNWYsDQorICAgIDB4MDA2MCwgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LA0KKyAgICAweDAwNjgsIDB4MDA2OSwgMHgwMDZhLCAweDAwNmIsIDB4MDA2YywgMHgwMDZkLCAweDAwNmUsIDB4MDA2ZiwNCisgICAgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsDQorICAgIDB4MDA3OCwgMHgwMDc5LCAweDAwN2EsIDB4MDA3YiwgMHgwMDdjLCAweDAwN2QsIDB4MDA3ZSwgMHgyMDIyLA0KKyAgICAweDIwYWMsIDB4MjAyMiwgMHgyMDFhLCAweDAxOTIsIDB4MjAxZSwgMHgyMDI2LCAweDIwMjAsIDB4MjAyMSwNCisgICAgMHgwMmM2LCAweDIwMzAsIDB4MDE2MCwgMHgyMDM5LAkweDAxNTIsIDB4MjAyMiwgMHgwMTdkLCAweDIwMjIsDQorICAgIDB4MjAyMiwgMHgyMDE4LCAweDIwMTksIDB4MjAxYywgMHgyMDFkLCAweDIwMjIsIDB4MjAxMywgMHgyMDE0LA0KKyAgICAweDAyZGMsIDB4MjEyMiwgMHgwMTYxLCAweDIwM2EsIDB4MDE1MywgMHgyMDIyLCAweDAxN2UsIDB4MDE3OCwNCisgICAgMHgwMDIwLCAweDAwYTEsIDB4MDBhMiwgMHgwMGEzLCAweDAwYTQsIDB4MDBhNSwgMHgwMGE2LCAweDAwYTcsDQorICAgIDB4MDBhOCwgMHgwMGE5LCAweDAwYWEsIDB4MDBhYiwgMHgwMGFjLCAweDAwMmQsIDB4MDBhZSwgMHgwMGFmLA0KKyAgICAweDAwYjAsIDB4MDBiMSwgMHgwMGIyLCAweDAwYjMsIDB4MDBiNCwgMHgwMGI1LCAweDAwYjYsIDB4MDBiNywNCisgICAgMHgwMGI4LCAweDAwYjksIDB4MDBiYSwgMHgwMGJiLCAweDAwYmMsIDB4MDBiZCwgMHgwMGJlLCAweDAwYmYsDQorICAgIDB4MDBjMCwgMHgwMGMxLCAweDAwYzIsIDB4MDBjMywgMHgwMGM0LCAweDAwYzUsIDB4MDBjNiwgMHgwMGM3LA0KKyAgICAweDAwYzgsIDB4MDBjOSwgMHgwMGNhLCAweDAwY2IsIDB4MDBjYywgMHgwMGNkLCAweDAwY2UsIDB4MDBjZiwNCisgICAgMHgwMGQwLCAweDAwZDEsIDB4MDBkMiwgMHgwMGQzLCAweDAwZDQsIDB4MDBkNSwgMHgwMGQ2LCAweDAwZDcsDQorICAgIDB4MDBkOCwgMHgwMGQ5LCAweDAwZGEsIDB4MDBkYiwgMHgwMGRjLCAweDAwZGQsIDB4MDBkZSwgMHgwMGRmLA0KKyAgICAweDAwZTAsIDB4MDBlMSwgMHgwMGUyLCAweDAwZTMsIDB4MDBlNCwgMHgwMGU1LCAweDAwZTYsIDB4MDBlNywNCisgICAgMHgwMGU4LCAweDAwZTksIDB4MDBlYSwgMHgwMGViLCAweDAwZWMsIDB4MDBlZCwgMHgwMGVlLCAweDAwZWYsDQorICAgIDB4MDBmMCwgMHgwMGYxLCAweDAwZjIsIDB4MDBmMywgMHgwMGY0LCAweDAwZjUsIDB4MDBmNiwgMHgwMGY3LA0KKyAgICAweDAwZjgsIDB4MDBmOSwgMHgwMGZhLCAweDAwZmIsIDB4MDBmYywgMHgwMGZkLCAweDAwZmUsIDB4MDBmZg0KK307DQorZXh0ZXJuIGNvbnN0IEZYX1dPUkQgUERGRG9jRW5jb2RpbmdbMjU2XTsNCitjb25zdCBGWF9XT1JEIE1hY0V4cGVydEVuY29kaW5nWzI1Nl0gPSB7DQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMjAsIDB4ZjcyMSwgMHhmNmY4LCAweGY3YTIsIDB4ZjcyNCwgMHhmNmU0LCAweGY3MjYsIDB4ZjdiNCwNCisgICAgMHgyMDdkLCAweDIwN2UsIDB4MjAyNSwgMHgyMDI0LCAweDAwMmMsIDB4MDAyZCwgMHgwMDJlLCAweDIwNDQsIDB4ZjczMCwgMHhmNzMxLA0KKyAgICAweGY3MzIsIDB4ZjczMywgMHhmNzM0LCAweGY3MzUsIDB4ZjczNiwgMHhmNzM3LCAweGY3MzgsIDB4ZjczOSwgMHgwMDNhLCAweDAwM2IsDQorICAgIDB4MDAwMCwgMHhmNmRlLCAweDAwMDAsIDB4ZjczZiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweGY3ZjAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwYmMsIDB4MDBiZCwgMHgwMGJlLCAweDIxNWIsIDB4MjE1YywgMHgyMTVkLCAweDIxNWUsIDB4MjE1MywgMHgyMTU0LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweGZiMDAsIDB4ZmIwMSwgMHhmYjAyLCAweGZiMDMsDQorICAgIDB4ZmIwNCwgMHgyMDhkLCAweDAwMDAsIDB4MjA4ZSwgMHhmNmY2LCAweGY2ZTUsIDB4Zjc2MCwgMHhmNzYxLCAweGY3NjIsIDB4Zjc2MywNCisgICAgMHhmNzY0LCAweGY3NjUsIDB4Zjc2NiwgMHhmNzY3LCAweGY3NjgsIDB4Zjc2OSwgMHhmNzZhLCAweGY3NmIsIDB4Zjc2YywgMHhmNzZkLA0KKyAgICAweGY3NmUsIDB4Zjc2ZiwgMHhmNzcwLCAweGY3NzEsIDB4Zjc3MiwgMHhmNzczLCAweGY3NzQsIDB4Zjc3NSwgMHhmNzc2LCAweGY3NzcsDQorICAgIDB4Zjc3OCwgMHhmNzc5LCAweGY3N2EsIDB4MjBhMSwgMHhmNmRjLCAweGY2ZGQsIDB4ZjZmZSwgMHgwMDAwLCAweDAwMDAsIDB4ZjZlOSwNCisgICAgMHhmNmUwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ZjdlMSwgMHhmN2UwLCAweGY3ZTIsIDB4ZjdlNCwgMHhmN2UzLA0KKyAgICAweGY3ZTUsIDB4ZjdlNywgMHhmN2U5LCAweGY3ZTgsIDB4ZjdlYSwgMHhmN2ViLCAweGY3ZWQsIDB4ZjdlYywgMHhmN2VlLCAweGY3ZWYsDQorICAgIDB4ZjdmMSwgMHhmN2YzLCAweGY3ZjIsIDB4ZjdmNCwgMHhmN2Y2LCAweGY3ZjUsIDB4ZjdmYSwgMHhmN2Y5LCAweGY3ZmIsIDB4ZjdmYywNCisgICAgMHgwMDAwLCAweDIwNzgsIDB4MjA4NCwgMHgyMDgzLCAweDIwODYsIDB4MjA4OCwgMHgyMDg3LCAweGY2ZmQsIDB4MDAwMCwgMHhmNmRmLA0KKyAgICAweDIwODIsIDB4MDAwMCwgMHhmN2E4LCAweDAwMDAsIDB4ZjZmNSwgMHhmNmZkLCAweDIwODUsIDB4MDAwMCwgMHhmNmUxLCAweGY2ZTcsDQorICAgIDB4ZjdmZCwgMHgwMDAwLCAweGY2ZTMsIDB4MDAwMCwgMHgwMDAwLCAweGY3ZmUsIDB4MDAwMCwgMHgyMDg5LCAweDIwODAsIDB4ZjZmZiwNCisgICAgMHhmN2U2LCAweGY3ZjgsIDB4ZjdiZiwgMHgyMDgxLCAweGY2ZTksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ZjdiOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ZjZmYSwgMHgyMDEyLCAweGY2ZTYsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHhmN2ExLCAweDAwMDAsIDB4ZjdmZiwgMHgwMDAwLCAweDAwYjksIDB4MDBiMiwNCisgICAgMHgwMGIzLCAweDIwNzQsIDB4MjA3NSwgMHgyMDc2LCAweDIwNzcsIDB4MjA3OSwgMHgyMDcwLCAweDAwMDAsIDB4ZjZlYywgMHhmNmYxLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweGY2ZWQsIDB4ZjZmMiwgMHhmNmViLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHhmNmVlLCAweGY2ZmIsIDB4ZjZmNCwgMHhmN2FmLCAweGY2ZWEsIDB4MjA3ZiwgMHhmNmVmLCAweGY2ZTIsIDB4ZjZlOCwNCisgICAgMHhmNmY3LCAweGY2ZmMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMA0KK307DQorY29uc3QgRlhfV09SRCBBZG9iZVN5bWJvbEVuY29kaW5nWzI1Nl0gPSB7DQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMjAsIDB4MDAyMSwgMHgyMjAwLCAweDAwMjMsIDB4MjIwMywgMHgwMDI1LCAweDAwMjYsIDB4MjIwQiwNCisgICAgMHgwMDI4LCAweDAwMjksIDB4MjIxNywgMHgwMDJCLCAweDAwMkMsIDB4MjIxMiwgMHgwMDJFLCAweDAwMkYsDQorICAgIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LA0KKyAgICAweDAwMzgsIDB4MDAzOSwgMHgwMDNBLCAweDAwM0IsIDB4MDAzQywgMHgwMDNELCAweDAwM0UsIDB4MDAzRiwNCisgICAgMHgyMjQ1LCAweDAzOTEsIDB4MDM5MiwgMHgwM0E3LCAweDAzOTQsIDB4MDM5NSwgMHgwM0E2LCAweDAzOTMsDQorICAgIDB4MDM5NywgMHgwMzk5LCAweDAzRDEsIDB4MDM5QSwgMHgwMzlCLCAweDAzOUMsIDB4MDM5RCwgMHgwMzlGLA0KKyAgICAweDAzQTAsIDB4MDM5OCwgMHgwM0ExLCAweDAzQTMsIDB4MDNBNCwgMHgwM0E1LCAweDAzQzIsIDB4MDNBOSwNCisgICAgMHgwMzlFLCAweDAzQTgsIDB4MDM5NiwgMHgwMDVCLCAweDIyMzQsIDB4MDA1RCwgMHgyMkE1LCAweDAwNUYsDQorICAgIDB4RjhFNSwgMHgwM0IxLCAweDAzQjIsIDB4MDNDNywgMHgwM0I0LCAweDAzQjUsIDB4MDNDNiwgMHgwM0IzLA0KKyAgICAweDAzQjcsIDB4MDNCOSwgMHgwM0Q1LCAweDAzQkEsIDB4MDNCQiwgMHgwM0JDLCAweDAzQkQsIDB4MDNCRiwNCisgICAgMHgwM0MwLCAweDAzQjgsIDB4MDNDMSwgMHgwM0MzLCAweDAzQzQsIDB4MDNDNSwgMHgwM0Q2LCAweDAzQzksDQorICAgIDB4MDNCRSwgMHgwM0M4LCAweDAzQjYsIDB4MDA3QiwgMHgwMDdDLCAweDAwN0QsIDB4MjIzQywgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgyMEFDLCAweDAzRDIsIDB4MjAzMiwgMHgyMjY0LCAweDIwNDQsIDB4MjIxRSwgMHgwMTkyLCAweDI2NjMsDQorICAgIDB4MjY2NiwgMHgyNjY1LCAweDI2NjAsIDB4MjE5NCwgMHgyMTkwLCAweDIxOTEsIDB4MjE5MiwgMHgyMTkzLA0KKyAgICAweDAwQjAsIDB4MDBCMSwgMHgyMDMzLCAweDIyNjUsIDB4MDBENywgMHgyMjFELCAweDIyMDIsIDB4MjAyMiwNCisgICAgMHgwMEY3LCAweDIyNjAsIDB4MjI2MSwgMHgyMjQ4LCAweDIwMjYsIDB4RjhFNiwgMHhGOEU3LCAweDIxQjUsDQorICAgIDB4MjEzNSwgMHgyMTExLCAweDIxMUMsIDB4MjExOCwgMHgyMjk3LCAweDIyOTUsIDB4MjIwNSwgMHgyMjI5LA0KKyAgICAweDIyMkEsIDB4MjI4MywgMHgyMjg3LCAweDIyODQsIDB4MjI4MiwgMHgyMjg2LCAweDIyMDgsIDB4MjIwOSwNCisgICAgMHgyMjIwLCAweDIyMDcsIDB4RjZEQSwgMHhGNkQ5LCAweEY2REIsIDB4MjIwRiwgMHgyMjFBLCAweDIyQzUsDQorICAgIDB4MDBBQywgMHgyMjI3LCAweDIyMjgsIDB4MjFENCwgMHgyMUQwLCAweDIxRDEsIDB4MjFEMiwgMHgyMUQzLA0KKyAgICAweDI1Q0EsIDB4MjMyOSwgMHhGOEU4LCAweEY4RTksIDB4RjhFQSwgMHgyMjExLCAweEY4RUIsIDB4RjhFQywNCisgICAgMHhGOEVELCAweEY4RUUsIDB4RjhFRiwgMHhGOEYwLCAweEY4RjEsIDB4RjhGMiwgMHhGOEYzLCAweEY4RjQsDQorICAgIDB4MDAwMCwgMHgyMzJBLCAweDIyMkIsIDB4MjMyMCwgMHhGOEY1LCAweDIzMjEsIDB4RjhGNiwgMHhGOEY3LA0KKyAgICAweEY4RjgsIDB4RjhGOSwgMHhGOEZBLCAweEY4RkIsIDB4RjhGQywgMHhGOEZELCAweEY4RkUsIDB4MDAwMCwNCit9Ow0KK2NvbnN0IEZYX1dPUkQgWmFwZkVuY29kaW5nWzI1Nl0gPSB7DQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMjAsIDB4MjcwMSwgMHgyNzAyLCAweDI3MDMsIDB4MjcwNCwgMHgyNjBFLCAweDI3MDYsIDB4MjcwNywNCisgICAgMHgyNzA4LCAweDI3MDksIDB4MjYxQiwgMHgyNjFFLCAweDI3MEMsIDB4MjcwRCwgMHgyNzBFLCAweDI3MEYsDQorICAgIDB4MjcxMCwgMHgyNzExLCAweDI3MTIsIDB4MjcxMywgMHgyNzE0LCAweDI3MTUsIDB4MjcxNiwgMHgyNzE3LA0KKyAgICAweDI3MTgsIDB4MjcxOSwgMHgyNzFBLCAweDI3MUIsIDB4MjcxQywgMHgyNzFELCAweDI3MUUsIDB4MjcxRiwNCisgICAgMHgyNzIwLCAweDI3MjEsIDB4MjcyMiwgMHgyNzIzLCAweDI3MjQsIDB4MjcyNSwgMHgyNzI2LCAweDI3MjcsDQorICAgIDB4MjYwNSwgMHgyNzI5LCAweDI3MkEsIDB4MjcyQiwgMHgyNzJDLCAweDI3MkQsIDB4MjcyRSwgMHgyNzJGLA0KKyAgICAweDI3MzAsIDB4MjczMSwgMHgyNzMyLCAweDI3MzMsIDB4MjczNCwgMHgyNzM1LCAweDI3MzYsIDB4MjczNywNCisgICAgMHgyNzM4LCAweDI3MzksIDB4MjczQSwgMHgyNzNCLCAweDI3M0MsIDB4MjczRCwgMHgyNzNFLCAweDI3M0YsDQorICAgIDB4Mjc0MCwgMHgyNzQxLCAweDI3NDIsIDB4Mjc0MywgMHgyNzQ0LCAweDI3NDUsIDB4Mjc0NiwgMHgyNzQ3LA0KKyAgICAweDI3NDgsIDB4Mjc0OSwgMHgyNzRBLCAweDI3NEIsIDB4MjVDRiwgMHgyNzRELCAweDI1QTAsIDB4Mjc0RiwNCisgICAgMHgyNzUwLCAweDI3NTEsIDB4Mjc1MiwgMHgyNUIyLCAweDI1QkMsIDB4MjVDNiwgMHgyNzU2LCAweDI1RDcsDQorICAgIDB4Mjc1OCwgMHgyNzU5LCAweDI3NUEsIDB4Mjc1QiwgMHgyNzVDLCAweDI3NUQsIDB4Mjc1RSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDI3NjEsIDB4Mjc2MiwgMHgyNzYzLCAweDI3NjQsIDB4Mjc2NSwgMHgyNzY2LCAweDI3NjcsDQorICAgIDB4MjY2MywgMHgyNjY2LCAweDI2NjUsIDB4MjY2MCwgMHgyNDYwLCAweDI0NjEsIDB4MjQ2MiwgMHgyNDYzLA0KKyAgICAweDI0NjQsIDB4MjQ2NSwgMHgyNDY2LCAweDI0NjcsIDB4MjQ2OCwgMHgyNDY5LCAweDI3NzYsIDB4Mjc3NywNCisgICAgMHgyNzc4LCAweDI3NzksIDB4Mjc3QSwgMHgyNzdCLCAweDI3N0MsIDB4Mjc3RCwgMHgyNzdFLCAweDI3N0YsDQorICAgIDB4Mjc4MCwgMHgyNzgxLCAweDI3ODIsIDB4Mjc4MywgMHgyNzg0LCAweDI3ODUsIDB4Mjc4NiwgMHgyNzg3LA0KKyAgICAweDI3ODgsIDB4Mjc4OSwgMHgyNzhBLCAweDI3OEIsIDB4Mjc4QywgMHgyNzhELCAweDI3OEUsIDB4Mjc4RiwNCisgICAgMHgyNzkwLCAweDI3OTEsIDB4Mjc5MiwgMHgyNzkzLCAweDI3OTQsIDB4MjE5MiwgMHgyMTk0LCAweDIxOTUsDQorICAgIDB4Mjc5OCwgMHgyNzk5LCAweDI3OUEsIDB4Mjc5QiwgMHgyNzlDLCAweDI3OUQsIDB4Mjc5RSwgMHgyNzlGLA0KKyAgICAweDI3QTAsIDB4MjdBMSwgMHgyN0EyLCAweDI3QTMsIDB4MjdBNCwgMHgyN0E1LCAweDI3QTYsIDB4MjdBNywNCisgICAgMHgyN0E4LCAweDI3QTksIDB4MjdBQSwgMHgyN0FCLCAweDI3QUMsIDB4MjdBRCwgMHgyN0FFLCAweDI3QUYsDQorICAgIDB4MDAwMCwgMHgyN0IxLCAweDI3QjIsIDB4MjdCMywgMHgyN0I0LCAweDI3QjUsIDB4MjdCNiwgMHgyN0I3LA0KKyAgICAweDI3QjgsIDB4MjdCOSwgMHgyN0JBLCAweDI3QkIsIDB4MjdCQywgMHgyN0JELCAweDI3QkUsIDB4MDAwMCwNCit9Ow0KK2NvbnN0IEZYX0xQQ1NUUiBTdGFuZGFyZEVuY29kaW5nTmFtZXNbMjI0XSA9IHsNCisgICAgInNwYWNlIiwgImV4Y2xhbSIsICJxdW90ZWRibCIsICJudW1iZXJzaWduIiwgImRvbGxhciIsICJwZXJjZW50IiwgImFtcGVyc2FuZCIsICJxdW90ZXJpZ2h0IiwNCisgICAgInBhcmVubGVmdCIsICJwYXJlbnJpZ2h0IiwgImFzdGVyaXNrIiwgInBsdXMiLCAiY29tbWEiLCAiaHlwaGVuIiwgInBlcmlvZCIsICJzbGFzaCIsDQorICAgICJ6ZXJvIiwgIm9uZSIsICJ0d28iLCAidGhyZWUiLCAiZm91ciIsICJmaXZlIiwgInNpeCIsICJzZXZlbiIsDQorICAgICJlaWdodCIsICJuaW5lIiwgImNvbG9uIiwgInNlbWljb2xvbiIsICJsZXNzIiwgImVxdWFsIiwgImdyZWF0ZXIiLCAicXVlc3Rpb24iLA0KKyAgICAiYXQiLCAiQSIsICJCIiwgIkMiLCAiRCIsICJFIiwgIkYiLCAiRyIsDQorICAgICJIIiwgIkkiLCAiSiIsICJLIiwgIkwiLCAiTSIsICJOIiwgIk8iLA0KKyAgICAiUCIsICJRIiwgIlIiLCAiUyIsICJUIiwgIlUiLCAiViIsICJXIiwNCisgICAgIlgiLCAiWSIsICJaIiwgImJyYWNrZXRsZWZ0IiwgImJhY2tzbGFzaCIsICJicmFja2V0cmlnaHQiLCAiYXNjaWljaXJjdW0iLCAidW5kZXJzY29yZSIsDQorICAgICJxdW90ZWxlZnQiLCAiYSIsICJiIiwgImMiLCAiZCIsICJlIiwgImYiLCAiZyIsDQorICAgICJoIiwgImkiLCAiaiIsICJrIiwgImwiLCAibSIsICJuIiwgIm8iLA0KKyAgICAicCIsICJxIiwgInIiLCAicyIsICJ0IiwgInUiLCAidiIsICJ3IiwNCisgICAgIngiLCAieSIsICJ6IiwgImJyYWNlbGVmdCIsICJiYXIiLCAiYnJhY2VyaWdodCIsICJhc2NpaXRpbGRlIiwgTlVMTCwNCisgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgImV4Y2xhbWRvd24iLCAiY2VudCIsICJzdGVybGluZyIsICJmcmFjdGlvbiIsICJ5ZW4iLCAiZmxvcmluIiwgInNlY3Rpb24iLA0KKyAgICAiY3VycmVuY3kiLCAicXVvdGVzaW5nbGUiLCAicXVvdGVkYmxsZWZ0IiwgImd1aWxsZW1vdGxlZnQiLCAiZ3VpbHNpbmdsbGVmdCIsICJndWlsc2luZ2xyaWdodCIsICJmaSIsICJmbCIsDQorICAgIE5VTEwsICJlbmRhc2giLCAiZGFnZ2VyIiwgImRhZ2dlcmRibCIsICJwZXJpb2RjZW50ZXJlZCIsIE5VTEwsICJwYXJhZ3JhcGgiLCAiYnVsbGV0IiwNCisgICAgInF1b3Rlc2luZ2xiYXNlIiwgInF1b3RlZGJsYmFzZSIsICJxdW90ZWRibHJpZ2h0IiwgImd1aWxsZW1vdHJpZ2h0IiwgImVsbGlwc2lzIiwgInBlcnRob3VzYW5kIiwgTlVMTCwgInF1ZXN0aW9uZG93biIsDQorICAgIE5VTEwsICJncmF2ZSIsICJhY3V0ZSIsICJjaXJjdW1mbGV4IiwgInRpbGRlIiwgIm1hY3JvbiIsICJicmV2ZSIsICJkb3RhY2NlbnQiLA0KKyAgICAiZGllcmVzaXMiLCBOVUxMLCAicmluZyIsICJjZWRpbGxhIiwgTlVMTCwgImh1bmdhcnVtbGF1dCIsICJvZ29uZWsiLCAiY2Fyb24iLA0KKyAgICAiZW1kYXNoIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgIkFFIiwgTlVMTCwgIm9yZGZlbWluaW5lIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgIkxzbGFzaCIsICJPc2xhc2giLCAiT0UiLCAib3JkbWFzY3VsaW5lIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgImFlIiwgTlVMTCwgTlVMTCwgTlVMTCwgImRvdGxlc3NpIiwgTlVMTCwgTlVMTCwNCisgICAgImxzbGFzaCIsICJvc2xhc2giLCAib2UiLCAiZ2VybWFuZGJscyIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsDQorfTsNCitjb25zdCBGWF9MUENTVFIgQWRvYmVXaW5BbnNpRW5jb2RpbmdOYW1lc1syMjRdID0gew0KKyAgICAic3BhY2UiLCAiZXhjbGFtIiwgInF1b3RlZGJsIiwgIm51bWJlcnNpZ24iLCAiZG9sbGFyIiwgInBlcmNlbnQiLCAiYW1wZXJzYW5kIiwgInF1b3Rlc2luZ2xlIiwNCisgICAgInBhcmVubGVmdCIsICJwYXJlbnJpZ2h0IiwgImFzdGVyaXNrIiwgInBsdXMiLCAiY29tbWEiLCAiaHlwaGVuIiwgInBlcmlvZCIsICJzbGFzaCIsDQorICAgICJ6ZXJvIiwgIm9uZSIsICJ0d28iLCAidGhyZWUiLCAiZm91ciIsICJmaXZlIiwgInNpeCIsICJzZXZlbiIsDQorICAgICJlaWdodCIsICJuaW5lIiwgImNvbG9uIiwgInNlbWljb2xvbiIsICJsZXNzIiwgImVxdWFsIiwgImdyZWF0ZXIiLCAicXVlc3Rpb24iLA0KKyAgICAiYXQiLCAiQSIsICJCIiwgIkMiLCAiRCIsICJFIiwgIkYiLCAiRyIsDQorICAgICJIIiwgIkkiLCAiSiIsICJLIiwgIkwiLCAiTSIsICJOIiwgIk8iLA0KKyAgICAiUCIsICJRIiwgIlIiLCAiUyIsICJUIiwgIlUiLCAiViIsICJXIiwNCisgICAgIlgiLCAiWSIsICJaIiwgImJyYWNrZXRsZWZ0IiwgImJhY2tzbGFzaCIsICJicmFja2V0cmlnaHQiLCAiYXNjaWljaXJjdW0iLCAidW5kZXJzY29yZSIsDQorICAgICJncmF2ZSIsICJhIiwgImIiLCAiYyIsICJkIiwgImUiLCAiZiIsICJnIiwNCisgICAgImgiLCAiaSIsICJqIiwgImsiLCAibCIsICJtIiwgIm4iLCAibyIsDQorICAgICJwIiwgInEiLCAiciIsICJzIiwgInQiLCAidSIsICJ2IiwgInciLA0KKyAgICAieCIsICJ5IiwgInoiLCAiYnJhY2VsZWZ0IiwgImJhciIsICJicmFjZXJpZ2h0IiwgImFzY2lpdGlsZGUiLCAiYnVsbGV0IiwNCisgICAgIkV1cm8iLCAiYnVsbGV0IiwgInF1b3Rlc2luZ2xiYXNlIiwgImZsb3JpbiIsICJxdW90ZWRibGJhc2UiLCAiZWxsaXBzaXMiLCAiZGFnZ2VyIiwgImRhZ2dlcmRibCIsDQorICAgICJjaXJjdW1mbGV4IiwgInBlcnRob3VzYW5kIiwgIlNjYXJvbiIsICJndWlsc2luZ2xsZWZ0IiwgIk9FIiwgImJ1bGxldCIsICJaY2Fyb24iLCAiYnVsbGV0IiwNCisgICAgImJ1bGxldCIsICJxdW90ZWxlZnQiLCAicXVvdGVyaWdodCIsICJxdW90ZWRibGxlZnQiLCAicXVvdGVkYmxyaWdodCIsICJidWxsZXQiLCAiZW5kYXNoIiwgImVtZGFzaCIsDQorICAgICJ0aWxkZSIsICJ0cmFkZW1hcmsiLCAic2Nhcm9uIiwgImd1aWxzaW5nbHJpZ2h0IiwgIm9lIiwgImJ1bGxldCIsICJ6Y2Fyb24iLCAiWWRpZXJlc2lzIiwNCisgICAgInNwYWNlIiwgImV4Y2xhbWRvd24iLCAiY2VudCIsICJzdGVybGluZyIsICJjdXJyZW5jeSIsICJ5ZW4iLCAiYnJva2VuYmFyIiwgInNlY3Rpb24iLA0KKyAgICAiZGllcmVzaXMiLCAiY29weXJpZ2h0IiwgIm9yZGZlbWluaW5lIiwgImd1aWxsZW1vdGxlZnQiLCAibG9naWNhbG5vdCIsICJoeXBoZW4iLCAicmVnaXN0ZXJlZCIsICJtYWNyb24iLA0KKyAgICAiZGVncmVlIiwgInBsdXNtaW51cyIsICJ0d29zdXBlcmlvciIsICJ0aHJlZXN1cGVyaW9yIiwgImFjdXRlIiwgIm11IiwgInBhcmFncmFwaCIsICJwZXJpb2RjZW50ZXJlZCIsDQorICAgICJjZWRpbGxhIiwgIm9uZXN1cGVyaW9yIiwgIm9yZG1hc2N1bGluZSIsICJndWlsbGVtb3RyaWdodCIsICJvbmVxdWFydGVyIiwgIm9uZWhhbGYiLCAidGhyZWVxdWFydGVycyIsICJxdWVzdGlvbmRvd24iLA0KKyAgICAiQWdyYXZlIiwgIkFhY3V0ZSIsICJBY2lyY3VtZmxleCIsICJBdGlsZGUiLCAiQWRpZXJlc2lzIiwgIkFyaW5nIiwgIkFFIiwgIkNjZWRpbGxhIiwNCisgICAgIkVncmF2ZSIsICJFYWN1dGUiLCAiRWNpcmN1bWZsZXgiLCAiRWRpZXJlc2lzIiwgIklncmF2ZSIsICJJYWN1dGUiLCAiSWNpcmN1bWZsZXgiLCAiSWRpZXJlc2lzIiwNCisgICAgIkV0aCIsICJOdGlsZGUiLCAiT2dyYXZlIiwgIk9hY3V0ZSIsICJPY2lyY3VtZmxleCIsICJPdGlsZGUiLCAiT2RpZXJlc2lzIiwgIm11bHRpcGx5IiwNCisgICAgIk9zbGFzaCIsICJVZ3JhdmUiLCAiVWFjdXRlIiwgIlVjaXJjdW1mbGV4IiwgIlVkaWVyZXNpcyIsICJZYWN1dGUiLCAiVGhvcm4iLCAiZ2VybWFuZGJscyIsDQorICAgICJhZ3JhdmUiLCAiYWFjdXRlIiwgImFjaXJjdW1mbGV4IiwgImF0aWxkZSIsICJhZGllcmVzaXMiLCAiYXJpbmciLCAiYWUiLCAiY2NlZGlsbGEiLA0KKyAgICAiZWdyYXZlIiwgImVhY3V0ZSIsICJlY2lyY3VtZmxleCIsICJlZGllcmVzaXMiLCAiaWdyYXZlIiwgImlhY3V0ZSIsICJpY2lyY3VtZmxleCIsICJpZGllcmVzaXMiLA0KKyAgICAiZXRoIiwgIm50aWxkZSIsICJvZ3JhdmUiLCAib2FjdXRlIiwgIm9jaXJjdW1mbGV4IiwgIm90aWxkZSIsICJvZGllcmVzaXMiLCAiZGl2aWRlIiwNCisgICAgIm9zbGFzaCIsICJ1Z3JhdmUiLCAidWFjdXRlIiwgInVjaXJjdW1mbGV4IiwgInVkaWVyZXNpcyIsICJ5YWN1dGUiLCAidGhvcm4iLCAieWRpZXJlc2lzIiwNCit9Ow0KK2NvbnN0IEZYX0xQQ1NUUiAgTWFjUm9tYW5FbmNvZGluZ05hbWVzWzIyNF0gPSB7DQorICAgICJzcGFjZSIsICJleGNsYW0iLCAicXVvdGVkYmwiLCAibnVtYmVyc2lnbiIsICJkb2xsYXIiLCAicGVyY2VudCIsICJhbXBlcnNhbmQiLCAicXVvdGVzaW5nbGUiLA0KKyAgICAicGFyZW5sZWZ0IiwgInBhcmVucmlnaHQiLCAiYXN0ZXJpc2siLCAicGx1cyIsICJjb21tYSIsICJoeXBoZW4iLCAicGVyaW9kIiwgInNsYXNoIiwNCisgICAgInplcm8iLCAib25lIiwgInR3byIsICJ0aHJlZSIsICJmb3VyIiwgImZpdmUiLCAic2l4IiwgInNldmVuIiwNCisgICAgImVpZ2h0IiwgIm5pbmUiLCAiY29sb24iLCAic2VtaWNvbG9uIiwgImxlc3MiLCAiZXF1YWwiLCAiZ3JlYXRlciIsICJxdWVzdGlvbiIsDQorICAgICJhdCIsICJBIiwgIkIiLCAiQyIsICJEIiwgIkUiLCAiRiIsICJHIiwNCisgICAgIkgiLCAiSSIsICJKIiwgIksiLCAiTCIsICJNIiwgIk4iLCAiTyIsDQorICAgICJQIiwgIlEiLCAiUiIsICJTIiwgIlQiLCAiVSIsICJWIiwgIlciLA0KKyAgICAiWCIsICJZIiwgIloiLCAiYnJhY2tldGxlZnQiLCAiYmFja3NsYXNoIiwgImJyYWNrZXRyaWdodCIsICJhc2NpaWNpcmN1bSIsICJ1bmRlcnNjb3JlIiwNCisgICAgImdyYXZlIiwgImEiLCAiYiIsICJjIiwgImQiLCAiZSIsICJmIiwgImciLA0KKyAgICAiaCIsICJpIiwgImoiLCAiayIsICJsIiwgIm0iLCAibiIsICJvIiwNCisgICAgInAiLCAicSIsICJyIiwgInMiLCAidCIsICJ1IiwgInYiLCAidyIsDQorICAgICJ4IiwgInkiLCAieiIsICJicmFjZWxlZnQiLCAiYmFyIiwgImJyYWNlcmlnaHQiLCAiYXNjaWl0aWxkZSIsIE5VTEwsDQorICAgICJBZGllcmVzaXMiLCAiQXJpbmciLCAiQ2NlZGlsbGEiLCAiRWFjdXRlIiwgIk50aWxkZSIsICJPZGllcmVzaXMiLCAiVWRpZXJlc2lzIiwgImFhY3V0ZSIsDQorICAgICJhZ3JhdmUiLCAiYWNpcmN1bWZsZXgiLCAiYWRpZXJlc2lzIiwgImF0aWxkZSIsICJhcmluZyIsICJjY2VkaWxsYSIsICJlYWN1dGUiLCAiZWdyYXZlIiwNCisgICAgImVjaXJjdW1mbGV4IiwgImVkaWVyZXNpcyIsICJpYWN1dGUiLCAiaWdyYXZlIiwgImljaXJjdW1mbGV4IiwgImlkaWVyZXNpcyIsICJudGlsZGUiLCAib2FjdXRlIiwNCisgICAgIm9ncmF2ZSIsICJvY2lyY3VtZmxleCIsICJvZGllcmVzaXMiLCAib3RpbGRlIiwgInVhY3V0ZSIsICJ1Z3JhdmUiLCAidWNpcmN1bWZsZXgiLCAidWRpZXJlc2lzIiwNCisgICAgImRhZ2dlciIsICJkZWdyZWUiLCAiY2VudCIsICJzdGVybGluZyIsICJzZWN0aW9uIiwgImJ1bGxldCIsICJwYXJhZ3JhcGgiLCAiZ2VybWFuZGJscyIsDQorICAgICJyZWdpc3RlcmVkIiwgImNvcHlyaWdodCIsICJ0cmFkZW1hcmsiLCAiYWN1dGUiLCAiZGllcmVzaXMiLCAibm90ZXF1YWwiLCAiQUUiLCAiT3NsYXNoIiwNCisgICAgImluZmluaXR5IiwgInBsdXNtaW51cyIsICJsZXNzZXF1YWwiLCAiZ3JlYXRlcmVxdWFsIiwgInllbiIsICJtdSIsICJwYXJ0aWFsZGlmZiIsICJzdW1tYXRpb24iLA0KKyAgICAicHJvZHVjdCIsICJwaSIsICJpbnRlZ3JhbCIsICJvcmRmZW1pbmluZSIsICJvcmRtYXNjdWxpbmUiLCAiT21lZ2EiLCAiYWUiLCAib3NsYXNoIiwNCisgICAgInF1ZXN0aW9uZG93biIsICJleGNsYW1kb3duIiwgImxvZ2ljYWxub3QiLCAicmFkaWNhbCIsICJmbG9yaW4iLCAiYXBwcm94ZXF1YWwiLCAiRGVsdGEiLCAiZ3VpbGxlbW90bGVmdCIsDQorICAgICJndWlsbGVtb3RyaWdodCIsICJlbGxpcHNpcyIsICJzcGFjZSIsICJBZ3JhdmUiLCAiQXRpbGRlIiwgIk90aWxkZSIsICJPRSIsICJvZSIsDQorICAgICJlbmRhc2giLCAiZW1kYXNoIiwgInF1b3RlZGJsbGVmdCIsICJxdW90ZWRibHJpZ2h0IiwgInF1b3RlbGVmdCIsICJxdW90ZXJpZ2h0IiwgImRpdmlkZSIsICJsb3plbmdlIiwNCisgICAgInlkaWVyZXNpcyIsICJZZGllcmVzaXMiLCAiZnJhY3Rpb24iLCAiY3VycmVuY3kiLCAiZ3VpbHNpbmdsbGVmdCIsICJndWlsc2luZ2xyaWdodCIsICJmaSIsICJmbCIsDQorICAgICJkYWdnZXJkYmwiLCAicGVyaW9kY2VudGVyZWQiLCAicXVvdGVzaW5nbGJhc2UiLCAicXVvdGVkYmxiYXNlIiwgInBlcnRob3VzYW5kIiwgIkFjaXJjdW1mbGV4IiwgIkVjaXJjdW1mbGV4IiwgIkFhY3V0ZSIsDQorICAgICJFZGllcmVzaXMiLCAiRWdyYXZlIiwgIklhY3V0ZSIsICJJY2lyY3VtZmxleCIsICJJZGllcmVzaXMiLCAiSWdyYXZlIiwgIk9hY3V0ZSIsICJPY2lyY3VtZmxleCIsDQorICAgICJhcHBsZSIsICJPZ3JhdmUiLCAiVWFjdXRlIiwgIlVjaXJjdW1mbGV4IiwgIlVncmF2ZSIsICJkb3RsZXNzaSIsICJjaXJjdW1mbGV4IiwgInRpbGRlIiwNCisgICAgIm1hY3JvbiIsICJicmV2ZSIsICJkb3RhY2NlbnQiLCAicmluZyIsICJjZWRpbGxhIiwgImh1bmdhcnVtbGF1dCIsICJvZ29uZWsiLCAiY2Fyb24iLA0KK307DQorY29uc3QgRlhfTFBDU1RSICBNYWNFeHBlcnRFbmNvZGluZ05hbWVzWzIyNF0gPSB7DQorICAgICJzcGFjZSIsICJleGNsYW1zbWFsbCIsICJIdW5nYXJ1bWxhdXRzbWFsbCIsICJjZW50b2xkc3R5bGUiLCAiZG9sbGFyb2xkc3R5bGUiLCAiZG9sbGFyc3VwZXJpb3IiLCAiYW1wZXJzYW5kc21hbGwiLCAiQWN1dGVzbWFsbCIsDQorICAgICJwYXJlbmxlZnRzdXBlcmlvciIsICJwYXJlbnJpZ2h0c3VwZXJpb3IiLCAidHdvZG90ZW5sZWFkZXIiLCAib25lZG90ZW5sZWFkZXIiLCAiY29tbWEiLCAiaHlwaGVuIiwgInBlcmlvZCIsICJmcmFjdGlvbiIsDQorICAgICJ6ZXJvb2xkc3R5bGUiLCAib25lb2xkc3R5bGUiLCAidHdvb2xkc3R5bGUiLCAidGhyZWVvbGRzdHlsZSIsICJmb3Vyb2xkc3R5bGUiLCAiZml2ZW9sZHN0eWxlIiwgInNpeG9sZHN0eWxlIiwgInNldmVub2xkc3R5bGUiLA0KKyAgICAiZWlnaHRvbGRzdHlsZSIsICJuaW5lb2xkc3R5bGUiLCAiY29sb24iLCAic2VtaWNvbG9uIiwgTlVMTCwgInRocmVlcXVhcnRlcnNlbWRhc2giLCBOVUxMLCAicXVlc3Rpb25zbWFsbCIsDQorICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsICJFdGhzbWFsbCIsIE5VTEwsIE5VTEwsICJvbmVxdWFydGVyIiwNCisgICAgIm9uZWhhbGYiLCAidGhyZWVxdWFydGVycyIsICJvbmVlaWdodGgiLCAidGhyZWVlaWdodGhzIiwgImZpdmVlaWdodGhzIiwgInNldmVuZWlnaHRocyIsICJvbmV0aGlyZCIsICJ0d290aGlyZHMiLA0KKyAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCAiZmYiLCAiZmkiLA0KKyAgICAiZmwiLCAiZmZpIiwgImZmbCIsICJwYXJlbmxlZnRpbmZlcmlvciIsIE5VTEwsICJwYXJlbnJpZ2h0aW5mZXJpb3IiLCAiQ2lyY3VtZmxleHNtYWxsIiwgImh5cGhlbmluZmVyaW9yIiwNCisgICAgIkdyYXZlc21hbGwiLCAiQXNtYWxsIiwgIkJzbWFsbCIsICJDc21hbGwiLCAiRHNtYWxsIiwgIkVzbWFsbCIsICJGc21hbGwiLCAiR3NtYWxsIiwNCisgICAgIkhzbWFsbCIsICJJc21hbGwiLCAiSnNtYWxsIiwgIktzbWFsbCIsICJMc21hbGwiLCAiTXNtYWxsIiwgIk5zbWFsbCIsICJPc21hbGwiLA0KKyAgICAiUHNtYWxsIiwgIlFzbWFsbCIsICJSc21hbGwiLCAiU3NtYWxsIiwgIlRzbWFsbCIsICJVc21hbGwiLCAiVnNtYWxsIiwgIldzbWFsbCIsDQorICAgICJYc21hbGwiLCAiWXNtYWxsIiwgIlpzbWFsbCIsICJjb2xvbm1vbmV0YXJ5IiwgIm9uZWZpdHRlZCIsICJydXBpYWgiLCAiVGlsZGVzbWFsbCIsIE5VTEwsDQorICAgIE5VTEwsICJhc3VwZXJpb3IiLCAiY2VudHN1cGVyaW9yIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgIkFhY3V0ZXNtYWxsIiwNCisgICAgIkFncmF2ZXNtYWxsIiwgIkFjaXJjdW1mbGV4c21hbGwiLCAiQWRpZXJlc2lzc21hbGwiLCAiQXRpbGRlc21hbGwiLCAiQXJpbmdzbWFsbCIsICJDY2VkaWxsYXNtYWxsIiwgIkVhY3V0ZXNtYWxsIiwgIkVncmF2ZXNtYWxsIiwNCisgICAgIkVjaXJjdW1mbGV4c21hbGwiLCAiRWRpZXJlc2lzc21hbGwiLCAiSWFjdXRlc21hbGwiLCAiSWdyYXZlc21hbGwiLCAiSWNpcmN1bWZsZXhzbWFsbCIsICJJZGllcmVzaXNzbWFsbCIsICJOdGlsZGVzbWFsbCIsICJPYWN1dGVzbWFsbCIsDQorICAgICJPZ3JhdmVzbWFsbCIsICJPY2lyY3VtZmxleHNtYWxsIiwgIk9kaWVyZXNpc3NtYWxsIiwgIk90aWxkZXNtYWxsIiwgIlVhY3V0ZXNtYWxsIiwgIlVncmF2ZXNtYWxsIiwgIlVjaXJjdW1mbGV4c21hbGwiLCAiVWRpZXJlc2lzc21hbGwiLA0KKyAgICBOVUxMLCAiZWlnaHRzdXBlcmlvciIsICJmb3VyaW5mZXJpb3IiLCAidGhyZWVpbmZlcmlvciIsICJzaXhpbmZlcmlvciIsICJlaWdodGluZmVyaW9yIiwgInNldmVuaW5mZXJpb3IiLCAiU2Nhcm9uc21hbGwiLA0KKyAgICBOVUxMLCAiY2VudGluZmVyaW9yIiwgInR3b2luZmVyaW9yIiwgTlVMTCwgIkRpZXJlc2lzc21hbGwiLCBOVUxMLCAiQ2Fyb25zbWFsbCIsICJTY2Fyb25zbWFsbCIsDQorICAgICJmaXZlaW5mZXJpb3IiLCBOVUxMLCAiY29tbWFpbmZlcmlvciIsICJwZXJpb2RpbmZlcmlvciIsICJZYWN1dGVzbWFsbCIsIE5VTEwsICJkb2xsYXJpbmZlcmlvciIsIE5VTEwsDQorICAgIE5VTEwsICJUaG9ybnNtYWxsIiwgTlVMTCwgIm5pbmVpbmZlcmlvciIsICJ6ZXJvaW5mZXJpb3IiLCAiWmNhcm9uc21hbGwiLCAiQUVzbWFsbCIsICJPc2xhc2hzbWFsbCIsDQorICAgICJxdWVzdGlvbmRvd25zbWFsbCIsICJvbmVpbmZlcmlvciIsICJhc3VwZXJpb3IiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLA0KKyAgICBOVUxMLCAiQ2VkaWxsYXNtYWxsIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgIk9Fc21hbGwiLA0KKyAgICAiZmlndXJlZGFzaCIsICJoeXBoZW5zdXBlcmlvciIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsICJleGNsYW1kb3duc21hbGwiLCBOVUxMLA0KKyAgICAiWWRpZXJlc2lzc21hbGwiLCBOVUxMLCAib25lc3VwZXJpb3IiLCAidHdvc3VwZXJpb3IiLCAidGhyZWVzdXBlcmlvciIsICJmb3Vyc3VwZXJpb3IiLCAiZml2ZXN1cGVyaW9yIiwgInNpeHN1cGVyaW9yIiwNCisgICAgInNldmVuc3VwZXJpb3IiLCAibmluZXN1cGVyaW9yIiwgInplcm9zdXBlcmlvciIsIE5VTEwsICJlc3VwZXJpb3IiLCAicnN1cGVyaW9yIiwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgImlzdXBlcmlvciIsICJzc3VwZXJpb3IiLCAiZHN1cGVyaW9yIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgImxzdXBlcmlvciIsICJPZ29uZWtzbWFsbCIsICJCcmV2ZXNtYWxsIiwgIk1hY3JvbnNtYWxsIiwgImJzdXBlcmlvciIsICJuc3VwZXJpb3IiLCAibXN1cGVyaW9yIiwNCisgICAgImNvbW1hc3VwZXJpb3IiLCAicGVyaW9kc3VwZXJpb3IiLCAiRG90YWNjZW50c21hbGwiLCAiUmluZ3NtYWxsIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCit9Ow0KK2NvbnN0IEZYX0xQQ1NUUiAgUERGRG9jRW5jb2RpbmdOYW1lc1syMzJdID0gew0KKyAgICAiYnJldmUiLCAiY2Fyb24iLCAiY2lyY3VtZmxleCIsICJkb3RhY2NlbnQiLCAiaHVuZ2FydW1sYXV0IiwgIm9nb25layIsICJyaW5nIiwgInRpbGRlIiwNCisgICAgInNwYWNlIiwgImV4Y2xhbSIsICJxdW90ZWRibCIsICJudW1iZXJzaWduIiwgImRvbGxhciIsICJwZXJjZW50IiwgImFtcGVyc2FuZCIsICJxdW90ZXNpbmdsZSIsDQorICAgICJwYXJlbmxlZnQiLCAicGFyZW5yaWdodCIsICJhc3RlcmlzayIsICJwbHVzIiwgImNvbW1hIiwgImh5cGhlbiIsICJwZXJpb2QiLCAic2xhc2giLA0KKyAgICAiemVybyIsICJvbmUiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLCAiZml2ZSIsICJzaXgiLCAic2V2ZW4iLA0KKyAgICAiZWlnaHQiLCAibmluZSIsICJjb2xvbiIsICJzZW1pY29sb24iLCAibGVzcyIsICJlcXVhbCIsICJncmVhdGVyIiwgInF1ZXN0aW9uIiwNCisgICAgImF0IiwgIkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJGIiwgIkciLA0KKyAgICAiSCIsICJJIiwgIkoiLCAiSyIsICJMIiwgIk0iLCAiTiIsICJPIiwNCisgICAgIlAiLCAiUSIsICJSIiwgIlMiLCAiVCIsICJVIiwgIlYiLCAiVyIsDQorICAgICJYIiwgIlkiLCAiWiIsICJicmFja2V0bGVmdCIsICJiYWNrc2xhc2giLCAiYnJhY2tldHJpZ2h0IiwgImFzY2lpY2lyY3VtIiwgInVuZGVyc2NvcmUiLA0KKyAgICAiZ3JhdmUiLCAiYSIsICJiIiwgImMiLCAiZCIsICJlIiwgImYiLCAiZyIsDQorICAgICJoIiwgImkiLCAiaiIsICJrIiwgImwiLCAibSIsICJuIiwgIm8iLA0KKyAgICAicCIsICJxIiwgInIiLCAicyIsICJ0IiwgInUiLCAidiIsICJ3IiwNCisgICAgIngiLCAieSIsICJ6IiwgImJyYWNlbGVmdCIsICJiYXIiLCAiYnJhY2VyaWdodCIsICJhc2NpaXRpbGRlIiwgTlVMTCwNCisgICAgImJ1bGxldDMiLCAiZGFnZ2VyIiwgImRhZ2dlcmRibCIsICJlbGxpcHNpcyIsICJlbWRhc2giLCAiZW5kYXNoIiwgImZsb3JpbiIsICJmcmFjdGlvbiIsDQorICAgICJndWlsc2luZ2xsZWZ0IiwgImd1aWxzaW5nbHJpZ2h0IiwgIm1pbnVzIiwgInBlcnRob3VzYW5kIiwgInF1b3RlZGJsYmFzZSIsICJxdW90ZWRibGxlZnQiLCAicXVvdGVkYmxyaWdodCIsICJxdW90ZWxlZnQiLA0KKyAgICAicXVvdGVyaWdodCIsICJxdW90ZXNpbmdsYmFzZSIsICJ0cmFkZW1hcmsiLCAiZmkiLCAiZmwiLCAiTHNsYXNoIiwgIk9FIiwgIlNjYXJvbiIsDQorICAgICJZZGllcmVzaXMiLCAiWmNhcm9uMiIsICJkb3RsZXNzaSIsICJsc2xhc2giLCAib2UiLCAic2Nhcm9uIiwgInpjYXJvbjIiLCBOVUxMLA0KKyAgICAiRXVybyIsICJleGNsYW1kb3duIiwgImNlbnQiLCAic3RlcmxpbmciLCAiY3VycmVuY3kiLCAieWVuIiwgImJyb2tlbmJhciIsICJzZWN0aW9uIiwNCisgICAgImRpZXJlc2lzIiwgImNvcHlyaWdodCIsICJvcmRmZW1pbmluZSIsICJndWlsbGVtb3RsZWZ0NCIsICJsb2dpY2Fsbm90IiwgTlVMTCwgInJlZ2lzdGVyZWQiLCAibWFjcm9uIiwNCisgICAgImRlZ3JlZSIsICJwbHVzbWludXMiLCAidHdvc3VwZXJpb3IiLCAidGhyZWVzdXBlcmlvciIsICJhY3V0ZSIsICJtdSIsICJwYXJhZ3JhcGgiLCAicGVyaW9kY2VudGVyZWQiLA0KKyAgICAiY2VkaWxsYSIsICJvbmVzdXBlcmlvciIsICJvcmRtYXNjdWxpbmUiLCAiZ3VpbGxlbW90cmlnaHQ0IiwgIm9uZXF1YXJ0ZXIiLCAib25laGFsZiIsICJ0aHJlZXF1YXJ0ZXJzIiwgInF1ZXN0aW9uZG93biIsDQorICAgICJBZ3JhdmUiLCAiQWFjdXRlIiwgIkFjaXJjdW1mbGV4IiwgIkF0aWxkZSIsICJBZGllcmVzaXMiLCAiQXJpbmciLCAiQUUiLCAiQ2NlZGlsbGEiLA0KKyAgICAiRWdyYXZlIiwgIkVhY3V0ZSIsICJFY2lyY3VtZmxleCIsICJFZGllcmVzaXMiLCAiSWdyYXZlIiwgIklhY3V0ZSIsICJJY2lyY3VtZmxleCIsICJJZGllcmVzaXMiLA0KKyAgICAiRXRoIiwgIk50aWxkZSIsICJPZ3JhdmUiLCAiT2FjdXRlIiwgIk9jaXJjdW1mbGV4IiwgIk90aWxkZSIsICJPZGllcmVzaXMiLCAibXVsdGlwbHkiLA0KKyAgICAiT3NsYXNoIiwgIlVncmF2ZSIsICJVYWN1dGUiLCAiVWNpcmN1bWZsZXgiLCAiVWRpZXJlc2lzIiwgIllhY3V0ZSIsICJUaG9ybiIsICJnZXJtYW5kYmxzIiwNCisgICAgImFncmF2ZSIsICJhYWN1dGUiLCAiYWNpcmN1bWZsZXgiLCAiYXRpbGRlIiwgImFkaWVyZXNpcyIsICJhcmluZyIsICJhZSIsICJjY2VkaWxsYSIsDQorICAgICJlZ3JhdmUiLCAiZWFjdXRlIiwgImVjaXJjdW1mbGV4IiwgImVkaWVyZXNpcyIsICJpZ3JhdmUiLCAiaWFjdXRlIiwgImljaXJjdW1mbGV4IiwgImlkaWVyZXNpcyIsDQorICAgICJldGgiLCAibnRpbGRlIiwgIm9ncmF2ZSIsICJvYWN1dGUiLCAib2NpcmN1bWZsZXgiLCAib3RpbGRlIiwgIm9kaWVyZXNpcyIsICJkaXZpZGUiLA0KKyAgICAib3NsYXNoIiwgInVncmF2ZSIsICJ1YWN1dGUiLCAidWNpcmN1bWZsZXgiLCAidWRpZXJlc2lzIiwgInlhY3V0ZSIsICJ0aG9ybiIsICJ5ZGllcmVzaXMiLA0KK307DQorY29uc3QgRlhfTFBDU1RSICBBZG9iZVN5bWJvbEVuY29kaW5nTmFtZXNbMjI0XSA9IHsNCisgICAgInNwYWNlIiwgImV4Y2xhbSIsICJ1bml2ZXJzYWwiLCAibnVtYmVyc2lnbiIsICJleGlzdGVudGlhbCIsICJwZXJjZW50IiwgImFtcGVyc2FuZCIsICJzdWNodGhhdCIsDQorICAgICJwYXJlbmxlZnQiLCAicGFyZW5yaWdodCIsICJhc3Rlcmlza21hdGgiLCAicGx1cyIsICJjb21tYSIsICJtaW51cyIsICJwZXJpb2QiLCAic2xhc2giLA0KKyAgICAiemVybyIsICJvbmUiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLCAiZml2ZSIsICJzaXgiLCAic2V2ZW4iLA0KKyAgICAiZWlnaHQiLCAibmluZSIsICJjb2xvbiIsICJzZW1pY29sb24iLCAibGVzcyIsICJlcXVhbCIsICJncmVhdGVyIiwgInF1ZXN0aW9uIiwNCisgICAgImNvbmdydWVudCIsICJBbHBoYSIsICJCZXRhIiwgIkNoaSIsICJEZWx0YSIsICJFcHNpbG9uIiwgIlBoaSIsICJHYW1tYSIsDQorICAgICJFdGEiLCAiSW90YSIsICJ0aGV0YTEiLCAiS2FwcGEiLCAiTGFtYmRhIiwgIk11IiwgIk51IiwgIk9taWNyb24iLA0KKyAgICAiUGkiLCAiVGhldGEiLCAiUmhvIiwgIlNpZ21hIiwgIlRhdSIsICJVcHNpbG9uIiwgInNpZ21hMSIsICJPbWVnYSIsDQorICAgICJYaSIsICJQc2kiLCAiWmV0YSIsICJicmFja2V0bGVmdCIsICJ0aGVyZWZvcmUiLCAiYnJhY2tldHJpZ2h0IiwgInBlcnBlbmRpY3VsYXIiLCAidW5kZXJzY29yZSIsDQorICAgICJyYWRpY2FsZXgiLCAiYWxwaGEiLCAiYmV0YSIsICJjaGkiLCAiZGVsdGEiLCAiZXBzaWxvbiIsICJwaGkiLCAiZ2FtbWEiLA0KKyAgICAiZXRhIiwgImlvdGEiLCAicGhpMSIsICJrYXBwYSIsICJsYW1iZGEiLCAibXUiLCAibnUiLCAib21pY3JvbiIsDQorICAgICJwaSIsICJ0aGV0YSIsICJyaG8iLCAic2lnbWEiLCAidGF1IiwgInVwc2lsb24iLCAib21lZ2ExIiwgIm9tZWdhIiwNCisgICAgInhpIiwgInBzaSIsICJ6ZXRhIiwgImJyYWNlbGVmdCIsICJiYXIiLCAiYnJhY2VyaWdodCIsICJzaW1pbGFyIiwgTlVMTCwNCisgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgIkV1cm8iLCAiVXBzaWxvbjEiLCAibWludXRlIiwgImxlc3NlcXVhbCIsICJmcmFjdGlvbiIsICJpbmZpbml0eSIsICJmbG9yaW4iLCAiY2x1YiIsDQorICAgICJkaWFtb25kIiwgImhlYXJ0IiwgInNwYWRlIiwgImFycm93Ym90aCIsICJhcnJvd2xlZnQiLCAiYXJyb3d1cCIsICJhcnJvd3JpZ2h0IiwgImFycm93ZG93biIsDQorICAgICJkZWdyZWUiLCAicGx1c21pbnVzIiwgInNlY29uZCIsICJncmVhdGVyZXF1YWwiLCAibXVsdGlwbHkiLCAicHJvcG9ydGlvbmFsIiwgInBhcnRpYWxkaWZmIiwgImJ1bGxldCIsDQorICAgICJkaXZpZGUiLCAibm90ZXF1YWwiLCAiZXF1aXZhbGVuY2UiLCAiYXBwcm94ZXF1YWwiLCAiZWxsaXBzaXMiLCAiYXJyb3d2ZXJ0ZXgiLCAiYXJyb3dob3JpemV4IiwgImNhcnJpYWdlcmV0dXJuIiwNCisgICAgImFsZXBoIiwgIklmcmFrdHVyIiwgIlJmcmFrdHVyIiwgIndlaWVyc3RyYXNzIiwgImNpcmNsZW11bHRpcGx5IiwgImNpcmNsZXBsdXMiLCAiZW1wdHlzZXQiLCAiaW50ZXJzZWN0aW9uIiwNCisgICAgInVuaW9uIiwgInByb3BlcnN1cGVyc2V0IiwgInJlZmxleHN1cGVyc2V0IiwgIm5vdHN1YnNldCIsICJwcm9wZXJzdWJzZXQiLCAicmVmbGV4c3Vic2V0IiwgImVsZW1lbnQiLCAibm90ZWxlbWVudCIsDQorICAgICJhbmdsZSIsICJncmFkaWVudCIsICJyZWdpc3RlcnNlcmlmIiwgImNvcHlyaWdodHNlcmlmIiwgInRyYWRlbWFya3NlcmlmIiwgInByb2R1Y3QiLCAicmFkaWNhbCIsICJkb3RtYXRoIiwNCisgICAgImxvZ2ljYWxub3QiLCAibG9naWNhbGFuZCIsICJsb2dpY2Fsb3IiLCAiYXJyb3dkYmxib3RoIiwgImFycm93ZGJsbGVmdCIsICJhcnJvd2RibHVwIiwgImFycm93ZGJscmlnaHQiLCAiYXJyb3dkYmxkb3duIiwNCisgICAgImxvemVuZ2UiLCAiYW5nbGVsZWZ0IiwgInJlZ2lzdGVyc2FucyIsICJjb3B5cmlnaHRzYW5zIiwgInRyYWRlbWFya3NhbnMiLCAic3VtbWF0aW9uIiwgInBhcmVubGVmdHRwIiwgInBhcmVubGVmdGV4IiwNCisgICAgInBhcmVubGVmdGJ0IiwgImJyYWNrZXRsZWZ0dHAiLCAiYnJhY2tldGxlZnRleCIsICJicmFja2V0bGVmdGJ0IiwgImJyYWNlbGVmdHRwIiwgImJyYWNlbGVmdG1pZCIsICJicmFjZWxlZnRidCIsICJicmFjZWV4IiwNCisgICAgTlVMTCwgImFuZ2xlcmlnaHQiLCAiaW50ZWdyYWwiLCAiaW50ZWdyYWx0cCIsICJpbnRlZ3JhbGV4IiwgImludGVncmFsYnQiLCAicGFyZW5yaWdodHRwIiwgInBhcmVucmlnaHRleCIsDQorICAgICJwYXJlbnJpZ2h0YnQiLCAiYnJhY2tldHJpZ2h0dHAiLCAiYnJhY2tldHJpZ2h0ZXgiLCAiYnJhY2tldHJpZ2h0YnQiLCAiYnJhY2VyaWdodHRwIiwgImJyYWNlcmlnaHRtaWQiLCAiYnJhY2VyaWdodGJ0IiwgTlVMTCwNCit9Ow0KK2NvbnN0IEZYX0xQQ1NUUiAgWmFwZkVuY29kaW5nTmFtZXNbMjI0XSA9IHsNCisgICAgInNwYWNlIiwgImExIiwgImEyIiwgImEyMDIiLCAiYTMiLCAiYTQiLCAiYTUiLCAiYTExOSIsDQorICAgICJhMTE4IiwgImExMTciLCAiYTExIiwgImExMiIsICJhMTMiLCAiYTE0IiwgImExNSIsICJhMTYiLA0KKyAgICAiYTEwNSIsICJhMTciLCAiYTE4IiwgImExOSIsICJhMjAiLCAiYTIxIiwgImEyMiIsICJhMjMiLA0KKyAgICAiYTI0IiwgImEyNSIsICJhMjYiLCAiYTI3IiwgImEyOCIsICJhNiIsICJhNyIsICJhOCIsDQorICAgICJhOSIsICJhMTAiLCAiYTI5IiwgImEzMCIsICJhMzEiLCAiYTMyIiwgImEzMyIsICJhMzQiLA0KKyAgICAiYTM1IiwgImEzNiIsICJhMzciLCAiYTM4IiwgImEzOSIsICJhNDAiLCAiYTQxIiwgImE0MiIsDQorICAgICJhNDMiLCAiYTQ0IiwgImE0NSIsICJhNDYiLCAiYTQ3IiwgImE0OCIsICJhNDkiLCAiYTUwIiwNCisgICAgImE1MSIsICJhNTIiLCAiYTUzIiwgImE1NCIsICJhNTUiLCAiYTU2IiwgImE1NyIsICJhNTgiLA0KKyAgICAiYTU5IiwgImE2MCIsICJhNjEiLCAiYTYyIiwgImE2MyIsICJhNjQiLCAiYTY1IiwgImE2NiIsDQorICAgICJhNjciLCAiYTY4IiwgImE2OSIsICJhNzAiLCAiYTcxIiwgImE3MiIsICJhNzMiLCAiYTc0IiwNCisgICAgImEyMDMiLCAiYTc1IiwgImEyMDQiLCAiYTc2IiwgImE3NyIsICJhNzgiLCAiYTc5IiwgImE4MSIsDQorICAgICJhODIiLCAiYTgzIiwgImE4NCIsICJhOTciLCAiYTk4IiwgImE5OSIsICJhMTAwIiwgTlVMTCwNCisgICAgImE4OSIsICJhOTAiLCAiYTkzIiwgImE5NCIsICJhOTEiLCAiYTkyIiwgImEyMDUiLCAiYTg1IiwNCisgICAgImEyMDYiLCAiYTg2IiwgImE4NyIsICJhODgiLCAiYTk1IiwgImE5NiIsIE5VTEwsIE5VTEwsDQorICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsDQorICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsDQorICAgIE5VTEwsICJhMTAxIiwgImExMDIiLCAiYTEwMyIsICJhMTA0IiwgImExMDYiLCAiYTEwNyIsICJhMTA4IiwNCisgICAgImExMTIiLCAiYTExMSIsICJhMTEwIiwgImExMDkiLCAiYTEyMCIsICJhMTIxIiwgImExMjIiLCAiYTEyMyIsDQorICAgICJhMTI0IiwgImExMjUiLCAiYTEyNiIsICJhMTI3IiwgImExMjgiLCAiYTEyOSIsICJhMTMwIiwgImExMzEiLA0KKyAgICAiYTEzMiIsICJhMTMzIiwgImExMzQiLCAiYTEzNSIsICJhMTM2IiwgImExMzciLCAiYTEzOCIsICJhMTM5IiwNCisgICAgImExNDAiLCAiYTE0MSIsICJhMTQyIiwgImExNDMiLCAiYTE0NCIsICJhMTQ1IiwgImExNDYiLCAiYTE0NyIsDQorICAgICJhMTQ4IiwgImExNDkiLCAiYTE1MCIsICJhMTUxIiwgImExNTIiLCAiYTE1MyIsICJhMTU0IiwgImExNTUiLA0KKyAgICAiYTE1NiIsICJhMTU3IiwgImExNTgiLCAiYTE1OSIsICJhMTYwIiwgImExNjEiLCAiYTE2MyIsICJhMTY0IiwNCisgICAgImExOTYiLCAiYTE2NSIsICJhMTkyIiwgImExNjYiLCAiYTE2NyIsICJhMTY4IiwgImExNjkiLCAiYTE3MCIsDQorICAgICJhMTcxIiwgImExNzIiLCAiYTE3MyIsICJhMTYyIiwgImExNzQiLCAiYTE3NSIsICJhMTc2IiwgImExNzciLA0KKyAgICAiYTE3OCIsICJhMTc5IiwgImExOTMiLCAiYTE4MCIsICJhMTk5IiwgImExODEiLCAiYTIwMCIsICJhMTgyIiwNCisgICAgTlVMTCwgImEyMDEiLCAiYTE4MyIsICJhMTg0IiwgImExOTciLCAiYTE4NSIsICJhMTk0IiwgImExOTgiLA0KKyAgICAiYTE4NiIsICJhMTk1IiwgImExODciLCAiYTE4OCIsICJhMTg5IiwgImExOTAiLCAiYTE5MSIsIE5VTEwNCit9Ow0KK2NvbnN0IEZYX0NIQVIqICBQREZfQ2hhck5hbWVGcm9tUHJlZGVmaW5lZENoYXJTZXQoaW50IGVuY29kaW5nLCBGWF9CWVRFIGNoYXJjb2RlKQ0KK3sNCisgICAgaWYgKGVuY29kaW5nID09IFBERkZPTlRfRU5DT0RJTkdfUERGRE9DKSB7DQorICAgICAgICBpZiAoY2hhcmNvZGUgPCAyNCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2hhcmNvZGUgLT0gMjQ7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAoY2hhcmNvZGUgPCAzMikgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2hhcmNvZGUgLT0gMzI7DQorICAgIH0NCisgICAgc3dpdGNoIChlbmNvZGluZykgew0KKyAgICAgICAgY2FzZSBQREZGT05UX0VOQ09ESU5HX1dJTkFOU0k6DQorICAgICAgICAgICAgcmV0dXJuIEFkb2JlV2luQW5zaUVuY29kaW5nTmFtZXNbY2hhcmNvZGVdOw0KKyAgICAgICAgY2FzZSBQREZGT05UX0VOQ09ESU5HX01BQ1JPTUFOOg0KKyAgICAgICAgICAgIHJldHVybiBNYWNSb21hbkVuY29kaW5nTmFtZXNbY2hhcmNvZGVdOw0KKyAgICAgICAgY2FzZSBQREZGT05UX0VOQ09ESU5HX01BQ0VYUEVSVDoNCisgICAgICAgICAgICByZXR1cm4gTWFjRXhwZXJ0RW5jb2RpbmdOYW1lc1tjaGFyY29kZV07DQorICAgICAgICBjYXNlIFBERkZPTlRfRU5DT0RJTkdfU1RBTkRBUkQ6DQorICAgICAgICAgICAgcmV0dXJuIFN0YW5kYXJkRW5jb2RpbmdOYW1lc1tjaGFyY29kZV07DQorICAgICAgICBjYXNlIFBERkZPTlRfRU5DT0RJTkdfQURPQkVfU1lNQk9MOg0KKyAgICAgICAgICAgIHJldHVybiBBZG9iZVN5bWJvbEVuY29kaW5nTmFtZXNbY2hhcmNvZGVdOw0KKyAgICAgICAgY2FzZSBQREZGT05UX0VOQ09ESU5HX1pBUEZESU5HQkFUUzoNCisgICAgICAgICAgICByZXR1cm4gWmFwZkVuY29kaW5nTmFtZXNbY2hhcmNvZGVdOw0KKyAgICAgICAgY2FzZSBQREZGT05UX0VOQ09ESU5HX1BERkRPQzoNCisgICAgICAgICAgICByZXR1cm4gUERGRG9jRW5jb2RpbmdOYW1lc1tjaGFyY29kZV07DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0ZYX1dDSEFSIEZUX1VuaWNvZGVGcm9tQ2hhckNvZGUoaW50IGVuY29kaW5nLCBGWF9EV09SRCBjaGFyY29kZSkNCit7DQorICAgIHN3aXRjaCAoZW5jb2RpbmcpIHsNCisgICAgICAgIGNhc2UgRlhGVF9FTkNPRElOR19VTklDT0RFOg0KKyAgICAgICAgICAgIHJldHVybiAoRlhfV09SRCljaGFyY29kZTsNCisgICAgICAgIGNhc2UgRlhGVF9FTkNPRElOR19BRE9CRV9TVEFOREFSRDoNCisgICAgICAgICAgICByZXR1cm4gU3RhbmRhcmRFbmNvZGluZ1soRlhfQllURSljaGFyY29kZV07DQorICAgICAgICBjYXNlIEZYRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJUOg0KKyAgICAgICAgICAgIHJldHVybiBNYWNFeHBlcnRFbmNvZGluZ1soRlhfQllURSljaGFyY29kZV07DQorICAgICAgICBjYXNlIEZYRlRfRU5DT0RJTkdfQURPQkVfTEFUSU5fMToNCisgICAgICAgICAgICByZXR1cm4gQWRvYmVXaW5BbnNpRW5jb2RpbmdbKEZYX0JZVEUpY2hhcmNvZGVdOw0KKyAgICAgICAgY2FzZSBGWEZUX0VOQ09ESU5HX0FQUExFX1JPTUFOOg0KKyAgICAgICAgICAgIHJldHVybiBNYWNSb21hbkVuY29kaW5nWyhGWF9CWVRFKWNoYXJjb2RlXTsNCisgICAgICAgIGNhc2UgUERGRk9OVF9FTkNPRElOR19QREZET0M6DQorICAgICAgICAgICAgcmV0dXJuIFBERkRvY0VuY29kaW5nWyhGWF9CWVRFKWNoYXJjb2RlXTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorc3RhdGljIEZYX0RXT1JEIFBERl9GaW5kQ29kZShjb25zdCBGWF9XT1JEKiBwQ29kZXMsIEZYX1dPUkQgdW5pY29kZSkNCit7DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCAyNTY7IGkgKyspDQorICAgICAgICBpZiAocENvZGVzW2ldID09IHVuaWNvZGUpIHsNCisgICAgICAgICAgICByZXR1cm4gaTsNCisgICAgICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK2NvbnN0IEZYX1dPUkQgTVNTeW1ib2xFbmNvZGluZ1syNTZdID0gew0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMzIsIDMzLCA4NzA0LCAzNSwgODcwNywgMzcsIDM4LCA4NzE1LA0KKyAgICA0MCwgNDEsIDg3MjcsIDQzLCA0NCwgODcyMiwgNDYsIDQ3LCA0OCwgNDksDQorICAgIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LA0KKyAgICA2MCwgNjEsIDYyLCA2MywgODc3MywgOTEzLCA5MTQsIDkzNSwgOTE2LCA5MTcsDQorICAgIDkzNCwgOTE1LCA5MTksIDkyMSwgOTc3LCA5MjIsIDkyMywgOTI0LCA5MjUsIDkyNywNCisgICAgOTI4LCA5MjAsIDkyOSwgOTMxLCA5MzIsIDkzMywgOTYyLCA5MzcsIDkyNiwgOTM2LA0KKyAgICA5MTgsIDkxLCA4NzU2LCA5MywgODg2OSwgOTUsIDgyNTQsIDk0NSwgOTQ2LCA5NjcsDQorICAgIDk0OCwgOTQ5LCA5NjYsIDk0NywgOTUxLCA5NTMsIDk4MSwgOTU0LCA5NTUsIDk1NiwNCisgICAgOTU3LCA5NTksIDk2MCwgOTUyLCA5NjEsIDk2MywgOTY0LCA5NjUsIDk4MiwgOTY5LA0KKyAgICA5NTgsIDk2OCwgOTUwLCAxMjMsIDEyNCwgMTI1LCA4NzY0LCAwLCAwLCAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDk3OCwgODI0MiwgODgwNCwgODcyNSwgODczNCwgNDAyLCA5ODI3LCA5ODMwLCA5ODI4LA0KKyAgICA5ODI0LCA4NTk2LCA4NTkyLCA4NTkzLCA4NTk0LCA4NTk1LCAxNzYsIDE3NywgODI0MywgODgwNSwNCisgICAgMjE1LCA4NzMzLCA4NzA2LCA4NzI5LCAyNDcsIDg4MDAsIDg4MDEsIDg3NzYsIDg5NDMsIDAsDQorICAgIDAsIDg2MjksIDAsIDg0NjUsIDg0NzYsIDg0NzIsIDg4NTUsIDg4NTMsIDg3MDksIDg3NDUsDQorICAgIDg3NDYsIDg4MzUsIDg4MzksIDg4MzYsIDg4MzQsIDg4MzgsIDg3MTIsIDg3MTMsIDg3MzYsIDg3MTEsDQorICAgIDE3NCwgMTY5LCA4NDgyLCA4NzE5LCA4NzMwLCA4OTAxLCAxNzIsIDg3NDMsIDg3NDQsIDg2NjAsDQorICAgIDg2NTYsIDg2NTcsIDg2NTgsIDg2NTksIDk2NzQsIDkwMDEsIDAsIDAsIDAsIDg3MjEsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDB4MDAwMCwgOTAwMiwgODc0NywgODk5MiwgMCwgODk5MywgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwDQorfTsNCitGWF9EV09SRCBGVF9DaGFyQ29kZUZyb21Vbmljb2RlKGludCBlbmNvZGluZywgRlhfV0NIQVIgdW5pY29kZSkNCit7DQorICAgIHN3aXRjaCAoZW5jb2RpbmcpIHsNCisgICAgICAgIGNhc2UgRlhGVF9FTkNPRElOR19VTklDT0RFOg0KKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlOw0KKyAgICAgICAgY2FzZSBGWEZUX0VOQ09ESU5HX0FET0JFX1NUQU5EQVJEOg0KKyAgICAgICAgICAgIHJldHVybiBQREZfRmluZENvZGUoU3RhbmRhcmRFbmNvZGluZywgdW5pY29kZSk7DQorICAgICAgICBjYXNlIEZYRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJUOg0KKyAgICAgICAgICAgIHJldHVybiBQREZfRmluZENvZGUoTWFjRXhwZXJ0RW5jb2RpbmcsIHVuaWNvZGUpOw0KKyAgICAgICAgY2FzZSBGWEZUX0VOQ09ESU5HX0FET0JFX0xBVElOXzE6DQorICAgICAgICAgICAgcmV0dXJuIFBERl9GaW5kQ29kZShBZG9iZVdpbkFuc2lFbmNvZGluZywgdW5pY29kZSk7DQorICAgICAgICBjYXNlIEZYRlRfRU5DT0RJTkdfQVBQTEVfUk9NQU46DQorICAgICAgICAgICAgcmV0dXJuIFBERl9GaW5kQ29kZShNYWNSb21hbkVuY29kaW5nLCB1bmljb2RlKTsNCisgICAgICAgIGNhc2UgRlhGVF9FTkNPRElOR19BRE9CRV9DVVNUT006DQorICAgICAgICAgICAgcmV0dXJuIFBERl9GaW5kQ29kZShQREZEb2NFbmNvZGluZywgdW5pY29kZSk7DQorICAgICAgICBjYXNlIEZYRlRfRU5DT0RJTkdfTVNfU1lNQk9MOg0KKyAgICAgICAgICAgIHJldHVybiBQREZfRmluZENvZGUoTVNTeW1ib2xFbmNvZGluZywgdW5pY29kZSk7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK2NvbnN0IEZYX1dPUkQqIFBERl9Vbmljb2Rlc0ZvclByZWRlZmluZWRDaGFyU2V0KGludCBlbmNvZGluZykNCit7DQorICAgIHN3aXRjaCAoZW5jb2RpbmcpIHsNCisgICAgICAgIGNhc2UgUERGRk9OVF9FTkNPRElOR19XSU5BTlNJOg0KKyAgICAgICAgICAgIHJldHVybiBBZG9iZVdpbkFuc2lFbmNvZGluZzsNCisgICAgICAgIGNhc2UgUERGRk9OVF9FTkNPRElOR19NQUNST01BTjoNCisgICAgICAgICAgICByZXR1cm4gTWFjUm9tYW5FbmNvZGluZzsNCisgICAgICAgIGNhc2UgUERGRk9OVF9FTkNPRElOR19NQUNFWFBFUlQ6DQorICAgICAgICAgICAgcmV0dXJuIE1hY0V4cGVydEVuY29kaW5nOw0KKyAgICAgICAgY2FzZSBQREZGT05UX0VOQ09ESU5HX1NUQU5EQVJEOg0KKyAgICAgICAgICAgIHJldHVybiBTdGFuZGFyZEVuY29kaW5nOw0KKyAgICAgICAgY2FzZSBQREZGT05UX0VOQ09ESU5HX0FET0JFX1NZTUJPTDoNCisgICAgICAgICAgICByZXR1cm4gQWRvYmVTeW1ib2xFbmNvZGluZzsNCisgICAgICAgIGNhc2UgUERGRk9OVF9FTkNPRElOR19aQVBGRElOR0JBVFM6DQorICAgICAgICAgICAgcmV0dXJuIFphcGZFbmNvZGluZzsNCisgICAgICAgIGNhc2UgUERGRk9OVF9FTkNPRElOR19QREZET0M6DQorICAgICAgICAgICAgcmV0dXJuIFBERkRvY0VuY29kaW5nOw0KKyAgICAgICAgY2FzZSBQREZGT05UX0VOQ09ESU5HX01TX1NZTUJPTDoNCisgICAgICAgICAgICByZXR1cm4gTVNTeW1ib2xFbmNvZGluZzsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorRlhfRFdPUkQgUERGX1ByZWRlZmluZWRDaGFyQ29kZUZyb21Vbmljb2RlKGludCBlbmNvZGluZywgRlhfV0NIQVIgdW5pY29kZSkNCit7DQorICAgIHJldHVybiBQREZfRmluZENvZGUoUERGX1VuaWNvZGVzRm9yUHJlZGVmaW5lZENoYXJTZXQoZW5jb2RpbmcpLCB1bmljb2RlKTsNCit9DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorZXh0ZXJuIGludCBGWEZUX3VuaWNvZGVfZnJvbV9hZG9iZV9uYW1lKGNvbnN0IGNoYXIqIG5hbWUpOw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCitGWF9XQ0hBUiBQREZfVW5pY29kZUZyb21BZG9iZU5hbWUoY29uc3QgRlhfQ0hBUiogbmFtZSkNCit7DQorICAgIHJldHVybiAoRlhfV0NIQVIpKEZYRlRfdW5pY29kZV9mcm9tX2Fkb2JlX25hbWUobmFtZSkgJiAweDdGRkZGRkZGKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgUERGX0Fkb2JlTmFtZUZyb21Vbmljb2RlKEZYX1dDSEFSIHVuaWNvZGUpDQorew0KKyAgICBjaGFyIGdseXBoX25hbWVbNjRdOw0KKyAgICBGWEZUX2Fkb2JlX25hbWVfZnJvbV91bmljb2RlKGdseXBoX25hbWUsIHVuaWNvZGUpOw0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoZ2x5cGhfbmFtZSwgLTEpOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZm9udC9mcGRmX2ZvbnRfY2lkLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9mb250L2ZwZGZfZm9udF9jaWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MWQ4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZm9udC9mcGRmX2ZvbnRfY2lkLmNwcApAQCAtMCwwICsxLDE3MTYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZS5oIg0KKyNpbmNsdWRlICJmb250X2ludC5oIg0KKyNpbmNsdWRlICIuLi9mcGRmX2NtYXBzL2NtYXBfaW50LmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZnJlZXR5cGUuaCINCitleHRlcm4gRlhfRFdPUkQgRlRfQ2hhckNvZGVGcm9tVW5pY29kZShpbnQgZW5jb2RpbmcsIEZYX1dDSEFSIHVuaWNvZGUpOw0KK2V4dGVybiBGWF9MUFZPSUQgRlhGQ19Mb2FkUGFja2FnZShGWF9MUENTVFIgbmFtZSk7DQorZXh0ZXJuIEZYX0JPT0wgRlhGQ19Mb2FkRmlsZShGWF9MUFZPSUQgcFBhY2thZ2UsIEZYX0xQQ1NUUiBuYW1lLCBGWF9MUEJZVEUmIHBCdWZmZXIsIEZYX0RXT1JEJiBzaXplKTsNCitleHRlcm4gdm9pZCBGWEZDX0Nsb3NlUGFja2FnZShGWF9MUFZPSUQgcFBhY2thZ2UpOw0KK2V4dGVybiBzaG9ydCBUVDJQREYoaW50IG0sIEZYRlRfRmFjZSBmYWNlKTsNCitleHRlcm4gRlhfQk9PTCBGVF9Vc2VUVENoYXJtYXAoRlhGVF9GYWNlIGZhY2UsIGludCBwbGF0Zm9ybV9pZCwgaW50IGVuY29kaW5nX2lkKTsNCitleHRlcm4gRlhfTFBDU1RSIEdldEFkb2JlQ2hhck5hbWUoaW50IGlCYXNlRW5jb2RpbmcsIGNvbnN0IENGWF9CeXRlU3RyaW5nKiBwQ2hhck5hbWVzLCBpbnQgY2hhcmNvZGUpOw0KK0NQREZfQ01hcE1hbmFnZXI6OkNQREZfQ01hcE1hbmFnZXIoKQ0KK3sNCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgIG1fYlByb21wdGVkID0gRkFMU0U7DQorICAgIG1fcFBhY2thZ2UgPSBOVUxMOw0KKyNlbmRpZg0KKyAgICBGWFNZU19tZW1zZXQzMihtX0NJRDJVbmljb2RlTWFwcywgMCwgc2l6ZW9mIG1fQ0lEMlVuaWNvZGVNYXBzKTsNCit9DQorQ1BERl9DTWFwTWFuYWdlcjo6fkNQREZfQ01hcE1hbmFnZXIoKQ0KK3sNCisgICAgRHJvcEFsbChGQUxTRSk7DQorI2lmbmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICBpZiAobV9wUGFja2FnZSkgew0KKyAgICAgICAgRlhGQ19DbG9zZVBhY2thZ2UobV9wUGFja2FnZSk7DQorICAgIH0NCisjZW5kaWYNCit9DQorI2lmbmRlZiBfRlBERkFQSV9NSU5JXw0KK0ZYX0xQVk9JRCBDUERGX0NNYXBNYW5hZ2VyOjpHZXRQYWNrYWdlKEZYX0JPT0wgYlByb21wdCkNCit7DQorI2lmbmRlZiBGT1hJVF9DSFJPTUVfQlVJTEQNCisgICAgaWYgKG1fcFBhY2thZ2UgPT0gTlVMTCkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgZmlsZW5hbWUgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldE1vZHVsZUZpbGVQYXRoKEFERElOX05BTUVfQ0pLLCAiRlBERkNKSy5CSU4iKTsNCisgICAgICAgIG1fcFBhY2thZ2UgPSBGWEZDX0xvYWRQYWNrYWdlKGZpbGVuYW1lKTsNCisgICAgICAgIGlmIChiUHJvbXB0ICYmIG1fcFBhY2thZ2UgPT0gTlVMTCAmJiAhbV9iUHJvbXB0ZWQpIHsNCisgICAgICAgICAgICBtX2JQcm9tcHRlZCA9IFRSVUU7DQorICAgICAgICAgICAgaWYgKCFDUERGX01vZHVsZU1ncjo6R2V0KCktPkRvd25sb2FkTW9kdWxlKEFERElOX05BTUVfQ0pLKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wUGFja2FnZSA9IEZYRkNfTG9hZFBhY2thZ2UoZmlsZW5hbWUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorI2VuZGlmDQorICAgIHJldHVybiBtX3BQYWNrYWdlOw0KK30NCisjZW5kaWYNCitDUERGX0NNYXAqIENQREZfQ01hcE1hbmFnZXI6OkdldFByZWRlZmluZWRDTWFwKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lLCBGWF9CT09MIGJQcm9tcHRDSkspDQorew0KKyAgICBDUERGX0NNYXAqIHBDTWFwOw0KKyAgICBpZiAobV9DTWFwcy5Mb29rdXAobmFtZSwgKEZYX0xQVk9JRCYpcENNYXApKSB7DQorICAgICAgICByZXR1cm4gcENNYXA7DQorICAgIH0NCisgICAgcENNYXAgPSBMb2FkUHJlZGVmaW5lZENNYXAobmFtZSwgYlByb21wdENKSyk7DQorICAgIGlmIChuYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIHBDTWFwOw0KKyAgICB9DQorICAgIG1fQ01hcHMuU2V0QXQobmFtZSwgcENNYXApOw0KKyAgICByZXR1cm4gcENNYXA7DQorfQ0KK0NQREZfQ01hcCogQ1BERl9DTWFwTWFuYWdlcjo6TG9hZFByZWRlZmluZWRDTWFwKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lLCBGWF9CT09MIGJQcm9tcHRDSkspDQorew0KKyAgICBDUERGX0NNYXAqIHBDTWFwID0gRlhfTkVXIENQREZfQ01hcDsNCisgICAgRlhfTFBDU1RSIHBuYW1lID0gbmFtZTsNCisgICAgaWYgKCpwbmFtZSA9PSAnLycpIHsNCisgICAgICAgIHBuYW1lICsrOw0KKyAgICB9DQorICAgIHBDTWFwLT5Mb2FkUHJlZGVmaW5lZCh0aGlzLCBwbmFtZSwgYlByb21wdENKSyk7DQorICAgIHJldHVybiBwQ01hcDsNCit9DQorY29uc3QgRlhfTFBDU1RSIGdfQ2hhcnNldE5hbWVzW10gPSB7TlVMTCwgIkdCMSIsICJDTlMxIiwgIkphcGFuMSIsICJLb3JlYTEiLCAiVUNTIiwgTlVMTH07DQorY29uc3QgaW50IGdfQ2hhcnNldENQc1tdID0gezAsIDkzNiwgOTUwLCA5MzIsIDk0OSwgMTIwMCwgMH07DQoraW50IF9DaGFyc2V0RnJvbU9yZGVyaW5nKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBPcmRlcmluZykNCit7DQorICAgIGludCBjaGFyc2V0ID0gMTsNCisgICAgd2hpbGUgKGdfQ2hhcnNldE5hbWVzW2NoYXJzZXRdICYmIE9yZGVyaW5nICE9IENGWF9CeXRlU3RyaW5nQyhnX0NoYXJzZXROYW1lc1tjaGFyc2V0XSkpIHsNCisgICAgICAgIGNoYXJzZXQgKys7DQorICAgIH0NCisgICAgaWYgKGdfQ2hhcnNldE5hbWVzW2NoYXJzZXRdID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBDSURTRVRfVU5LTk9XTjsNCisgICAgfQ0KKyAgICByZXR1cm4gY2hhcnNldDsNCit9DQordm9pZCBDUERGX0NNYXBNYW5hZ2VyOjpSZWxvYWRBbGwoKQ0KK3sNCisgICAgRHJvcEFsbChUUlVFKTsNCit9DQordm9pZCBDUERGX0NNYXBNYW5hZ2VyOjpEcm9wQWxsKEZYX0JPT0wgYlJlbG9hZCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fQ01hcHMuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBuYW1lOw0KKyAgICAgICAgQ1BERl9DTWFwKiBwQ01hcDsNCisgICAgICAgIG1fQ01hcHMuR2V0TmV4dEFzc29jKHBvcywgbmFtZSwgKEZYX0xQVk9JRCYpcENNYXApOw0KKyAgICAgICAgaWYgKHBDTWFwID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChiUmVsb2FkKSB7DQorICAgICAgICAgICAgcENNYXAtPkxvYWRQcmVkZWZpbmVkKHRoaXMsIG5hbWUsIEZBTFNFKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZGVsZXRlIHBDTWFwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9mIG1fQ0lEMlVuaWNvZGVNYXBzIC8gc2l6ZW9mKENQREZfQ0lEMlVuaWNvZGVNYXAqKTsgaSArKykgew0KKyAgICAgICAgQ1BERl9DSUQyVW5pY29kZU1hcCogcE1hcCA9IG1fQ0lEMlVuaWNvZGVNYXBzW2ldOw0KKyAgICAgICAgaWYgKHBNYXAgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGJSZWxvYWQpIHsNCisgICAgICAgICAgICBwTWFwLT5Mb2FkKHRoaXMsIGksIEZBTFNFKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZGVsZXRlIHBNYXA7DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ1BERl9DSUQyVW5pY29kZU1hcCogQ1BERl9DTWFwTWFuYWdlcjo6R2V0Q0lEMlVuaWNvZGVNYXAoaW50IGNoYXJzZXQsIEZYX0JPT0wgYlByb21wdENKSykNCit7DQorICAgIGlmIChtX0NJRDJVbmljb2RlTWFwc1tjaGFyc2V0XSA9PSBOVUxMKSB7DQorICAgICAgICBtX0NJRDJVbmljb2RlTWFwc1tjaGFyc2V0XSA9IExvYWRDSUQyVW5pY29kZU1hcChjaGFyc2V0LCBiUHJvbXB0Q0pLKTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9DSUQyVW5pY29kZU1hcHNbY2hhcnNldF07DQorfQ0KK0NQREZfQ0lEMlVuaWNvZGVNYXAqIENQREZfQ01hcE1hbmFnZXI6OkxvYWRDSUQyVW5pY29kZU1hcChpbnQgY2hhcnNldCwgRlhfQk9PTCBiUHJvbXB0Q0pLKQ0KK3sNCisgICAgQ1BERl9DSUQyVW5pY29kZU1hcCogcE1hcCA9IEZYX05FVyBDUERGX0NJRDJVbmljb2RlTWFwKCk7DQorICAgIGlmICghcE1hcC0+SW5pdGlhbGl6ZSgpKSB7DQorICAgICAgICBkZWxldGUgcE1hcDsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBNYXAtPkxvYWQodGhpcywgY2hhcnNldCwgYlByb21wdENKSyk7DQorICAgIHJldHVybiBwTWFwOw0KK30NCitDUERGX0NNYXBQYXJzZXI6OkNQREZfQ01hcFBhcnNlcigpDQorew0KKyAgICBtX3BDTWFwID0gTlVMTDsNCisgICAgbV9TdGF0dXMgPSAwOw0KKyAgICBtX0NvZGVTZXEgPSAwOw0KK30NCitGWF9CT09MCUNQREZfQ01hcFBhcnNlcjo6SW5pdGlhbGl6ZShDUERGX0NNYXAqIHBDTWFwKQ0KK3sNCisgICAgbV9wQ01hcCA9IHBDTWFwOw0KKyAgICBtX1N0YXR1cyA9IDA7DQorICAgIG1fQ29kZVNlcSA9IDA7DQorICAgIG1fQWRkTWFwcy5Fc3RpbWF0ZVNpemUoMCwgMTAyNDApOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorc3RhdGljIEZYX0RXT1JEIENNYXBfR2V0Q29kZShGWF9CU1RSIHdvcmQpDQorew0KKyAgICBpbnQgbnVtID0gMDsNCisgICAgaWYgKHdvcmQuR2V0QXQoMCkgPT0gJzwnKSB7DQorICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHdvcmQuR2V0TGVuZ3RoKCk7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9CWVRFIGRpZ2l0ID0gd29yZC5HZXRBdChpKTsNCisgICAgICAgICAgICBpZiAoZGlnaXQgPj0gJzAnICYmIGRpZ2l0IDw9ICc5Jykgew0KKyAgICAgICAgICAgICAgICBkaWdpdCA9IGRpZ2l0IC0gJzAnOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlnaXQgPj0gJ2EnICYmIGRpZ2l0IDw9ICdmJykgew0KKyAgICAgICAgICAgICAgICBkaWdpdCA9IGRpZ2l0IC0gJ2EnICsgMTA7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChkaWdpdCA+PSAnQScgJiYgZGlnaXQgPD0gJ0YnKSB7DQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gZGlnaXQgLSAnQScgKyAxMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICByZXR1cm4gbnVtOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBudW0gPSBudW0gKiAxNiArIGRpZ2l0Ow0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3b3JkLkdldExlbmd0aCgpOyBpICsrKSB7DQorICAgICAgICAgICAgaWYgKHdvcmQuR2V0QXQoaSkgPCAnMCcgfHwgd29yZC5HZXRBdChpKSA+ICc5Jykgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gbnVtOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBudW0gPSBudW0gKiAxMCArIHdvcmQuR2V0QXQoaSkgLSAnMCc7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIG51bTsNCit9DQorc3RhdGljIEZYX0JPT0wgX0NNYXBfR2V0Q29kZVJhbmdlKF9DTWFwX0NvZGVSYW5nZSYgcmFuZ2UsIEZYX0JTVFIgZmlyc3QsIEZYX0JTVFIgc2Vjb25kKQ0KK3sNCisgICAgaWYgKGZpcnN0LkdldExlbmd0aCgpID09IDAgfHwgZmlyc3QuR2V0QXQoMCkgIT0gJzwnKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IG51bSA9IDA7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAxOyBpIDwgZmlyc3QuR2V0TGVuZ3RoKCk7IGkgKyspDQorICAgICAgICBpZiAoZmlyc3QuR2V0QXQoaSkgPT0gJz4nKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIHJhbmdlLm1fQ2hhclNpemUgPSAoaSAtIDEpIC8gMjsNCisgICAgaWYgKHJhbmdlLm1fQ2hhclNpemUgPiA0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgZm9yIChpID0gMDsgaSA8IHJhbmdlLm1fQ2hhclNpemU7IGkgKyspIHsNCisgICAgICAgIEZYX0JZVEUgZGlnaXQxID0gZmlyc3QuR2V0QXQoaSAqIDIgKyAxKTsNCisgICAgICAgIEZYX0JZVEUgZGlnaXQyID0gZmlyc3QuR2V0QXQoaSAqIDIgKyAyKTsNCisgICAgICAgIEZYX0JZVEUgYnl0ZSA9IChkaWdpdDEgPj0gJzAnICYmIGRpZ2l0MSA8PSAnOScpID8gKGRpZ2l0MSAtICcwJykgOiAoKGRpZ2l0MSAmIDB4ZGYpIC0gJ0EnICsgMTApOw0KKyAgICAgICAgYnl0ZSA9IGJ5dGUgKiAxNiArICgoZGlnaXQyID49ICcwJyAmJiBkaWdpdDIgPD0gJzknKSA/IChkaWdpdDIgLSAnMCcpIDogKChkaWdpdDIgJiAweGRmKSAtICdBJyArIDEwKSk7DQorICAgICAgICByYW5nZS5tX0xvd2VyW2ldID0gYnl0ZTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBzaXplID0gc2Vjb25kLkdldExlbmd0aCgpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgcmFuZ2UubV9DaGFyU2l6ZTsgaSArKykgew0KKyAgICAgICAgRlhfQllURSBkaWdpdDEgPSAoKEZYX0RXT1JEKWkgKiAyICsgMSA8IHNpemUpID8gc2Vjb25kLkdldEF0KChGWF9TVFJTSVpFKWkgKiAyICsgMSkgOiAwOw0KKyAgICAgICAgRlhfQllURSBkaWdpdDIgPSAoKEZYX0RXT1JEKWkgKiAyICsgMiA8IHNpemUpID8gc2Vjb25kLkdldEF0KChGWF9TVFJTSVpFKWkgKiAyICsgMikgOiAwOw0KKyAgICAgICAgRlhfQllURSBieXRlID0gKGRpZ2l0MSA+PSAnMCcgJiYgZGlnaXQxIDw9ICc5JykgPyAoZGlnaXQxIC0gJzAnKSA6ICgoZGlnaXQxICYgMHhkZikgLSAnQScgKyAxMCk7DQorICAgICAgICBieXRlID0gYnl0ZSAqIDE2ICsgKChkaWdpdDIgPj0gJzAnICYmIGRpZ2l0MiA8PSAnOScpID8gKGRpZ2l0MiAtICcwJykgOiAoKGRpZ2l0MiAmIDB4ZGYpIC0gJ0EnICsgMTApKTsNCisgICAgICAgIHJhbmdlLm1fVXBwZXJbaV0gPSBieXRlOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitzdGF0aWMgQ0ZYX0J5dGVTdHJpbmcgQ01hcF9HZXRTdHJpbmcoRlhfQlNUUiB3b3JkKQ0KK3sNCisgICAgcmV0dXJuIHdvcmQuTWlkKDEsIHdvcmQuR2V0TGVuZ3RoKCkgLSAyKTsNCit9DQordm9pZCBDUERGX0NNYXBQYXJzZXI6OlBhcnNlV29yZChGWF9CU1RSIHdvcmQpDQorew0KKyAgICBpZiAod29yZC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAod29yZCA9PSBGWF9CU1RSQygiYmVnaW5jaWRjaGFyIikpIHsNCisgICAgICAgIG1fU3RhdHVzID0gMTsNCisgICAgICAgIG1fQ29kZVNlcSA9IDA7DQorICAgIH0gZWxzZSBpZiAod29yZCA9PSBGWF9CU1RSQygiYmVnaW5jaWRyYW5nZSIpKSB7DQorICAgICAgICBtX1N0YXR1cyA9IDI7DQorICAgICAgICBtX0NvZGVTZXEgPSAwOw0KKyAgICB9IGVsc2UgaWYgKHdvcmQgPT0gRlhfQlNUUkMoImVuZGNpZHJhbmdlIikgfHwgd29yZCA9PSBGWF9CU1RSQygiZW5kY2lkY2hhciIpKSB7DQorICAgICAgICBtX1N0YXR1cyA9IDA7DQorICAgIH0gZWxzZSBpZiAod29yZCA9PSBGWF9CU1RSQygiL1dNb2RlIikpIHsNCisgICAgICAgIG1fU3RhdHVzID0gNjsNCisgICAgfSBlbHNlIGlmICh3b3JkID09IEZYX0JTVFJDKCIvUmVnaXN0cnkiKSkgew0KKyAgICAgICAgbV9TdGF0dXMgPSAzOw0KKyAgICB9IGVsc2UgaWYgKHdvcmQgPT0gRlhfQlNUUkMoIi9PcmRlcmluZyIpKSB7DQorICAgICAgICBtX1N0YXR1cyA9IDQ7DQorICAgIH0gZWxzZSBpZiAod29yZCA9PSBGWF9CU1RSQygiL1N1cHBsZW1lbnQiKSkgew0KKyAgICAgICAgbV9TdGF0dXMgPSA1Ow0KKyAgICB9IGVsc2UgaWYgKHdvcmQgPT0gRlhfQlNUUkMoImJlZ2luY29kZXNwYWNlcmFuZ2UiKSkgew0KKyAgICAgICAgbV9TdGF0dXMgPSA3Ow0KKyAgICAgICAgbV9Db2RlU2VxID0gMDsNCisgICAgfSBlbHNlIGlmICh3b3JkID09IEZYX0JTVFJDKCJ1c2VjbWFwIikpIHsNCisgICAgfSBlbHNlIGlmIChtX1N0YXR1cyA9PSAxIHx8IG1fU3RhdHVzID09IDIpIHsNCisgICAgICAgIG1fQ29kZVBvaW50c1ttX0NvZGVTZXFdID0gQ01hcF9HZXRDb2RlKHdvcmQpOw0KKyAgICAgICAgbV9Db2RlU2VxICsrOw0KKyAgICAgICAgRlhfRFdPUkQgU3RhcnRDb2RlLCBFbmRDb2RlOw0KKyAgICAgICAgRlhfV09SRCBTdGFydENJRDsNCisgICAgICAgIGlmIChtX1N0YXR1cyA9PSAxKSB7DQorICAgICAgICAgICAgaWYgKG1fQ29kZVNlcSA8IDIpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBFbmRDb2RlID0gU3RhcnRDb2RlID0gbV9Db2RlUG9pbnRzWzBdOw0KKyAgICAgICAgICAgIFN0YXJ0Q0lEID0gKEZYX1dPUkQpbV9Db2RlUG9pbnRzWzFdOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAobV9Db2RlU2VxIDwgMykgew0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIFN0YXJ0Q29kZSA9IG1fQ29kZVBvaW50c1swXTsNCisgICAgICAgICAgICBFbmRDb2RlID0gbV9Db2RlUG9pbnRzWzFdOw0KKyAgICAgICAgICAgIFN0YXJ0Q0lEID0gKEZYX1dPUkQpbV9Db2RlUG9pbnRzWzJdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKEVuZENvZGUgPCAweDEwMDAwKSB7DQorICAgICAgICAgICAgZm9yIChGWF9EV09SRCBjb2RlID0gU3RhcnRDb2RlOyBjb2RlIDw9IEVuZENvZGU7IGNvZGUgKyspIHsNCisgICAgICAgICAgICAgICAgbV9wQ01hcC0+bV9wTWFwcGluZ1tjb2RlXSA9IChGWF9XT1JEKShTdGFydENJRCArIGNvZGUgLSBTdGFydENvZGUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgRlhfRFdPUkQgYnVmWzJdOw0KKyAgICAgICAgICAgIGJ1ZlswXSA9IFN0YXJ0Q29kZTsNCisgICAgICAgICAgICBidWZbMV0gPSAoKEVuZENvZGUgLSBTdGFydENvZGUpIDw8IDE2KSArIFN0YXJ0Q0lEOw0KKyAgICAgICAgICAgIG1fQWRkTWFwcy5BcHBlbmRCbG9jayhidWYsIHNpemVvZiBidWYpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9Db2RlU2VxID0gMDsNCisgICAgfSBlbHNlIGlmIChtX1N0YXR1cyA9PSAzKSB7DQorICAgICAgICBDTWFwX0dldFN0cmluZyh3b3JkKTsNCisgICAgICAgIG1fU3RhdHVzID0gMDsNCisgICAgfSBlbHNlIGlmIChtX1N0YXR1cyA9PSA0KSB7DQorICAgICAgICBtX3BDTWFwLT5tX0NoYXJzZXQgPSBfQ2hhcnNldEZyb21PcmRlcmluZyhDTWFwX0dldFN0cmluZyh3b3JkKSk7DQorICAgICAgICBtX1N0YXR1cyA9IDA7DQorICAgIH0gZWxzZSBpZiAobV9TdGF0dXMgPT0gNSkgew0KKyAgICAgICAgQ01hcF9HZXRDb2RlKHdvcmQpOw0KKyAgICAgICAgbV9TdGF0dXMgPSAwOw0KKyAgICB9IGVsc2UgaWYgKG1fU3RhdHVzID09IDYpIHsNCisgICAgICAgIG1fcENNYXAtPm1fYlZlcnRpY2FsID0gQ01hcF9HZXRDb2RlKHdvcmQpOw0KKyAgICAgICAgbV9TdGF0dXMgPSAwOw0KKyAgICB9IGVsc2UgaWYgKG1fU3RhdHVzID09IDcpIHsNCisgICAgICAgIGlmICh3b3JkID09IEZYX0JTVFJDKCJlbmRjb2Rlc3BhY2VyYW5nZSIpKSB7DQorICAgICAgICAgICAgaW50IG5TZWdzID0gbV9Db2RlUmFuZ2VzLkdldFNpemUoKTsNCisgICAgICAgICAgICBpZiAoblNlZ3MgPiAxKSB7DQorICAgICAgICAgICAgICAgIG1fcENNYXAtPm1fQ29kaW5nU2NoZW1lID0gQ1BERl9DTWFwOjpNaXhlZEZvdXJCeXRlczsNCisgICAgICAgICAgICAgICAgbV9wQ01hcC0+bV9uQ29kZVJhbmdlcyA9IG5TZWdzOw0KKyAgICAgICAgICAgICAgICBtX3BDTWFwLT5tX3BMZWFkaW5nQnl0ZXMgPSBGWF9BbGxvYyhGWF9CWVRFLCBuU2VncyAqIHNpemVvZihfQ01hcF9Db2RlUmFuZ2UpKTsNCisgICAgICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wQ01hcC0+bV9wTGVhZGluZ0J5dGVzLCBtX0NvZGVSYW5nZXMuR2V0RGF0YSgpLCBuU2VncyAqIHNpemVvZihfQ01hcF9Db2RlUmFuZ2UpKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKG5TZWdzID09IDEpIHsNCisgICAgICAgICAgICAgICAgbV9wQ01hcC0+bV9Db2RpbmdTY2hlbWUgPSAobV9Db2RlUmFuZ2VzWzBdLm1fQ2hhclNpemUgPT0gMikgPyBDUERGX0NNYXA6OlR3b0J5dGVzIDogQ1BERl9DTWFwOjpPbmVCeXRlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX1N0YXR1cyA9IDA7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmICh3b3JkLkdldExlbmd0aCgpID09IDAgfHwgd29yZC5HZXRBdCgwKSAhPSAnPCcpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9Db2RlU2VxICUgMikgew0KKyAgICAgICAgICAgICAgICBfQ01hcF9Db2RlUmFuZ2UgcmFuZ2U7DQorICAgICAgICAgICAgICAgIGlmIChfQ01hcF9HZXRDb2RlUmFuZ2UocmFuZ2UsIG1fTGFzdFdvcmQsIHdvcmQpKSB7DQorICAgICAgICAgICAgICAgICAgICBtX0NvZGVSYW5nZXMuQWRkKHJhbmdlKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX0NvZGVTZXEgKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9MYXN0V29yZCA9IHdvcmQ7DQorfQ0KK0NQREZfQ01hcDo6Q1BERl9DTWFwKCkNCit7DQorICAgIG1fQ2hhcnNldCA9IENJRFNFVF9VTktOT1dOOw0KKyAgICBtX0NvZGluZyA9IENJRENPRElOR19VTktOT1dOOw0KKyAgICBtX0NvZGluZ1NjaGVtZSA9IFR3b0J5dGVzOw0KKyAgICBtX2JWZXJ0aWNhbCA9IDA7DQorICAgIG1fYkxvYWRlZCA9IEZBTFNFOw0KKyAgICBtX3BNYXBwaW5nID0gTlVMTDsNCisgICAgbV9wTGVhZGluZ0J5dGVzID0gTlVMTDsNCisgICAgbV9wQWRkTWFwcGluZyA9IE5VTEw7DQorICAgIG1fcEVtYmVkTWFwID0gTlVMTDsNCisgICAgbV9wVXNlTWFwID0gTlVMTDsNCisgICAgbV9uQ29kZVJhbmdlcyA9IDA7DQorfQ0KK0NQREZfQ01hcDo6fkNQREZfQ01hcCgpDQorew0KKyAgICBpZiAobV9wTWFwcGluZykgew0KKyAgICAgICAgRlhfRnJlZShtX3BNYXBwaW5nKTsNCisgICAgfQ0KKyAgICBpZiAobV9wQWRkTWFwcGluZykgew0KKyAgICAgICAgRlhfRnJlZShtX3BBZGRNYXBwaW5nKTsNCisgICAgfQ0KKyAgICBpZiAobV9wTGVhZGluZ0J5dGVzKSB7DQorICAgICAgICBGWF9GcmVlKG1fcExlYWRpbmdCeXRlcyk7DQorICAgIH0NCisgICAgaWYgKG1fcFVzZU1hcCkgew0KKyAgICAgICAgZGVsZXRlIG1fcFVzZU1hcDsNCisgICAgfQ0KK30NCit2b2lkIENQREZfQ01hcDo6UmVsZWFzZSgpDQorew0KKyAgICBpZiAobV9QcmVkZWZpbmVkQ01hcC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIGRlbGV0ZSB0aGlzOw0KKyAgICB9DQorfQ0KK2NvbnN0IENQREZfUHJlZGVmaW5lZENNYXAgZ19QcmVkZWZpbmVkQ01hcHNbXSA9IHsNCisgICAgeyAiR0ItRVVDIiwgQ0lEU0VUX0dCMSwgQ0lEQ09ESU5HX0dCLCBDUERGX0NNYXA6Ok1peGVkVHdvQnl0ZXMsIDEsIHsweGExLCAweGZlfSB9LA0KKyAgICB7ICJHQnBjLUVVQyIsIENJRFNFVF9HQjEsIENJRENPRElOR19HQiwgQ1BERl9DTWFwOjpNaXhlZFR3b0J5dGVzLCAxLCB7MHhhMSwgMHhmY30gfSwNCisgICAgeyAiR0JLLUVVQyIsIENJRFNFVF9HQjEsIENJRENPRElOR19HQiwgQ1BERl9DTWFwOjpNaXhlZFR3b0J5dGVzLCAxLCB7MHg4MSwgMHhmZX0gfSwNCisgICAgeyAiR0JLcC1FVUMiLCBDSURTRVRfR0IxLCBDSURDT0RJTkdfR0IsIENQREZfQ01hcDo6TWl4ZWRUd29CeXRlcywgMSwgezB4ODEsIDB4ZmV9IH0sDQorICAgIHsgIkdCSzJLLUVVQyIsIENJRFNFVF9HQjEsIENJRENPRElOR19HQiwgQ1BERl9DTWFwOjpNaXhlZFR3b0J5dGVzLCAxLCB7MHg4MSwgMHhmZX0gfSwNCisgICAgeyAiR0JLMksiLCBDSURTRVRfR0IxLCBDSURDT0RJTkdfR0IsIENQREZfQ01hcDo6TWl4ZWRUd29CeXRlcywgMSwgezB4ODEsIDB4ZmV9IH0sDQorICAgIHsgIlVuaUdCLVVDUzIiLCBDSURTRVRfR0IxLCBDSURDT0RJTkdfVUNTMiwgQ1BERl9DTWFwOjpUd29CeXRlcyB9LA0KKyAgICB7ICJVbmlHQi1VVEYxNiIsIENJRFNFVF9HQjEsIENJRENPRElOR19VVEYxNiwgQ1BERl9DTWFwOjpUd29CeXRlcyB9LA0KKyAgICB7ICJCNXBjIiwgQ0lEU0VUX0NOUzEsIENJRENPRElOR19CSUc1LCBDUERGX0NNYXA6Ok1peGVkVHdvQnl0ZXMsIDEsIHsweGExLCAweGZjfSB9LA0KKyAgICB7ICJIS3Njcy1CNSIsIENJRFNFVF9DTlMxLCBDSURDT0RJTkdfQklHNSwgQ1BERl9DTWFwOjpNaXhlZFR3b0J5dGVzLCAxLCB7MHg4OCwgMHhmZX0gfSwNCisgICAgeyAiRVRlbi1CNSIsIENJRFNFVF9DTlMxLCBDSURDT0RJTkdfQklHNSwgQ1BERl9DTWFwOjpNaXhlZFR3b0J5dGVzLCAxLCB7MHhhMSwgMHhmZX0gfSwNCisgICAgeyAiRVRlbm1zLUI1IiwgQ0lEU0VUX0NOUzEsIENJRENPRElOR19CSUc1LCBDUERGX0NNYXA6Ok1peGVkVHdvQnl0ZXMsIDEsIHsweGExLCAweGZlfSB9LA0KKyAgICB7ICJVbmlDTlMtVUNTMiIsIENJRFNFVF9DTlMxLCBDSURDT0RJTkdfVUNTMiwgQ1BERl9DTWFwOjpUd29CeXRlcyB9LA0KKyAgICB7ICJVbmlDTlMtVVRGMTYiLCBDSURTRVRfQ05TMSwgQ0lEQ09ESU5HX1VURjE2LCBDUERGX0NNYXA6OlR3b0J5dGVzIH0sDQorICAgIHsgIjgzcHYtUktTSiIsIENJRFNFVF9KQVBBTjEsIENJRENPRElOR19KSVMsIENQREZfQ01hcDo6TWl4ZWRUd29CeXRlcywgMiwgezB4ODEsIDB4OWYsIDB4ZTAsIDB4ZmN9IH0sDQorICAgIHsgIjkwbXMtUktTSiIsIENJRFNFVF9KQVBBTjEsIENJRENPRElOR19KSVMsIENQREZfQ01hcDo6TWl4ZWRUd29CeXRlcywgMiwgezB4ODEsIDB4OWYsIDB4ZTAsIDB4ZmN9IH0sDQorICAgIHsgIjkwbXNwLVJLU0oiLCBDSURTRVRfSkFQQU4xLCBDSURDT0RJTkdfSklTLCBDUERGX0NNYXA6Ok1peGVkVHdvQnl0ZXMsIDIsIHsweDgxLCAweDlmLCAweGUwLCAweGZjfSB9LA0KKyAgICB7ICI5MHB2LVJLU0oiLCBDSURTRVRfSkFQQU4xLCBDSURDT0RJTkdfSklTLCBDUERGX0NNYXA6Ok1peGVkVHdvQnl0ZXMsIDIsIHsweDgxLCAweDlmLCAweGUwLCAweGZjfSB9LA0KKyAgICB7ICJBZGQtUktTSiIsIENJRFNFVF9KQVBBTjEsIENJRENPRElOR19KSVMsIENQREZfQ01hcDo6TWl4ZWRUd29CeXRlcywgMiwgezB4ODEsIDB4OWYsIDB4ZTAsIDB4ZmN9IH0sDQorICAgIHsgIkVVQyIsIENJRFNFVF9KQVBBTjEsIENJRENPRElOR19KSVMsIENQREZfQ01hcDo6TWl4ZWRUd29CeXRlcywgMiwgezB4OGUsIDB4OGUsIDB4YTEsIDB4ZmV9IH0sDQorICAgIHsgIkgiLCBDSURTRVRfSkFQQU4xLCBDSURDT0RJTkdfSklTLCBDUERGX0NNYXA6OlR3b0J5dGVzLCAxLCB7MHgyMSwgMHg3ZX0gfSwNCisgICAgeyAiViIsIENJRFNFVF9KQVBBTjEsIENJRENPRElOR19KSVMsIENQREZfQ01hcDo6VHdvQnl0ZXMsIDEsIHsweDIxLCAweDdlfSB9LA0KKyAgICB7ICJFeHQtUktTSiIsIENJRFNFVF9KQVBBTjEsIENJRENPRElOR19KSVMsIENQREZfQ01hcDo6TWl4ZWRUd29CeXRlcywgMiwgezB4ODEsIDB4OWYsIDB4ZTAsIDB4ZmN9IH0sDQorICAgIHsgIlVuaUpJUy1VQ1MyIiwgQ0lEU0VUX0pBUEFOMSwgQ0lEQ09ESU5HX1VDUzIsIENQREZfQ01hcDo6VHdvQnl0ZXMgfSwNCisgICAgeyAiVW5pSklTLVVDUzItSFciLCBDSURTRVRfSkFQQU4xLCBDSURDT0RJTkdfVUNTMiwgQ1BERl9DTWFwOjpUd29CeXRlcyB9LA0KKyAgICB7ICJVbmlKSVMtVVRGMTYiLCBDSURTRVRfSkFQQU4xLCBDSURDT0RJTkdfVVRGMTYsIENQREZfQ01hcDo6VHdvQnl0ZXMgfSwNCisgICAgeyAiS1NDLUVVQyIsIENJRFNFVF9LT1JFQTEsIENJRENPRElOR19LT1JFQSwgQ1BERl9DTWFwOjpNaXhlZFR3b0J5dGVzLCAxLCB7MHhhMSwgMHhmZX0gfSwNCisgICAgeyAiS1NDbXMtVUhDIiwgQ0lEU0VUX0tPUkVBMSwgQ0lEQ09ESU5HX0tPUkVBLCBDUERGX0NNYXA6Ok1peGVkVHdvQnl0ZXMsIDEsIHsweDgxLCAweGZlfSB9LA0KKyAgICB7ICJLU0Ntcy1VSEMtSFciLCBDSURTRVRfS09SRUExLCBDSURDT0RJTkdfS09SRUEsIENQREZfQ01hcDo6TWl4ZWRUd29CeXRlcywgMSwgezB4ODEsIDB4ZmV9IH0sDQorICAgIHsgIktTQ3BjLUVVQyIsIENJRFNFVF9LT1JFQTEsIENJRENPRElOR19LT1JFQSwgQ1BERl9DTWFwOjpNaXhlZFR3b0J5dGVzLCAxLCB7MHhhMSwgMHhmZH0gfSwNCisgICAgeyAiVW5pS1MtVUNTMiIsIENJRFNFVF9LT1JFQTEsIENJRENPRElOR19VQ1MyLCBDUERGX0NNYXA6OlR3b0J5dGVzIH0sDQorICAgIHsgIlVuaUtTLVVURjE2IiwgQ0lEU0VUX0tPUkVBMSwgQ0lEQ09ESU5HX1VURjE2LCBDUERGX0NNYXA6OlR3b0J5dGVzIH0sDQorICAgIHsgTlVMTCwgMCwgMCB9DQorfTsNCitleHRlcm4gdm9pZCBGUERGQVBJX0ZpbmRFbWJlZGRlZENNYXAoY29uc3QgY2hhciogbmFtZSwgaW50IGNoYXJzZXQsIGludCBjb2RpbmcsIGNvbnN0IEZYQ01BUF9DTWFwKiYgcE1hcCk7DQorZXh0ZXJuIEZYX1dPUkQgRlBERkFQSV9DSURGcm9tQ2hhckNvZGUoY29uc3QgRlhDTUFQX0NNYXAqIHBNYXAsIEZYX0RXT1JEIGNoYXJjb2RlKTsNCitGWF9CT09MIENQREZfQ01hcDo6TG9hZFByZWRlZmluZWQoQ1BERl9DTWFwTWFuYWdlciogcE1nciwgRlhfTFBDU1RSIHBOYW1lLCBGWF9CT09MIGJQcm9tcHRDSkspDQorew0KKyAgICBtX1ByZWRlZmluZWRDTWFwID0gcE5hbWU7DQorICAgIGlmIChtX1ByZWRlZmluZWRDTWFwID09IEZYX0JTVFJDKCJJZGVudGl0eS1IIikgfHwgbV9QcmVkZWZpbmVkQ01hcCA9PSBGWF9CU1RSQygiSWRlbnRpdHktViIpKSB7DQorICAgICAgICBtX0NvZGluZyA9IENJRENPRElOR19DSUQ7DQorICAgICAgICBtX2JWZXJ0aWNhbCA9IHBOYW1lWzldID09ICdWJzsNCisgICAgICAgIG1fYkxvYWRlZCA9IFRSVUU7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBjbWFwaWQgPSBtX1ByZWRlZmluZWRDTWFwOw0KKyAgICBtX2JWZXJ0aWNhbCA9IGNtYXBpZC5SaWdodCgxKSA9PSBGWF9CU1RSQygiViIpOw0KKyAgICBpZiAoY21hcGlkLkdldExlbmd0aCgpID4gMikgew0KKyAgICAgICAgY21hcGlkID0gY21hcGlkLkxlZnQoY21hcGlkLkdldExlbmd0aCgpIC0gMik7DQorICAgIH0NCisgICAgaW50IGluZGV4ID0gMDsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGlmIChnX1ByZWRlZmluZWRDTWFwc1tpbmRleF0ubV9wTmFtZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNtYXBpZCA9PSBDRlhfQnl0ZVN0cmluZ0MoZ19QcmVkZWZpbmVkQ01hcHNbaW5kZXhdLm1fcE5hbWUpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpbmRleCArKzsNCisgICAgfQ0KKyAgICBjb25zdCBDUERGX1ByZWRlZmluZWRDTWFwJiBtYXAgPSBnX1ByZWRlZmluZWRDTWFwc1tpbmRleF07DQorICAgIG1fQ2hhcnNldCA9IG1hcC5tX0NoYXJzZXQ7DQorICAgIG1fQ29kaW5nID0gbWFwLm1fQ29kaW5nOw0KKyAgICBtX0NvZGluZ1NjaGVtZSA9IG1hcC5tX0NvZGluZ1NjaGVtZTsNCisgICAgaWYgKG1fQ29kaW5nU2NoZW1lID09IE1peGVkVHdvQnl0ZXMpIHsNCisgICAgICAgIG1fcExlYWRpbmdCeXRlcyA9IEZYX0FsbG9jKEZYX0JZVEUsIDI1Nik7DQorICAgICAgICBGWFNZU19tZW1zZXQzMihtX3BMZWFkaW5nQnl0ZXMsIDAsIDI1Nik7DQorICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgbWFwLm1fTGVhZGluZ1NlZ0NvdW50OyBpICsrKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgYiA9IG1hcC5tX0xlYWRpbmdTZWdzW2kgKiAyXTsgYiA8PSBtYXAubV9MZWFkaW5nU2Vnc1tpICogMiArIDFdOyBiICsrKSB7DQorICAgICAgICAgICAgICAgIG1fcExlYWRpbmdCeXRlc1tiXSA9IDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZQREZBUElfRmluZEVtYmVkZGVkQ01hcChwTmFtZSwgbV9DaGFyc2V0LCBtX0NvZGluZywgbV9wRW1iZWRNYXApOw0KKyAgICBpZiAobV9wRW1iZWRNYXApIHsNCisgICAgICAgIG1fYkxvYWRlZCA9IFRSVUU7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgRlhfTFBWT0lEIHBQYWNrYWdlID0gcE1nci0+R2V0UGFja2FnZShiUHJvbXB0Q0pLKTsNCisgICAgRlhfTFBCWVRFIHBCdWZmZXI7DQorICAgIEZYX0RXT1JEIHNpemU7DQorICAgIGlmIChwUGFja2FnZSA9PSBOVUxMIHx8ICFGWEZDX0xvYWRGaWxlKHBQYWNrYWdlLCBtX1ByZWRlZmluZWRDTWFwLCBwQnVmZmVyLCBzaXplKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fcE1hcHBpbmcgPSBGWF9BbGxvYyhGWF9XT1JELCA2NTUzNik7DQorICAgIEZYU1lTX21lbXNldDMyKG1fcE1hcHBpbmcsIDAsIDY1NTM2ICogc2l6ZW9mKEZYX1dPUkQpKTsNCisgICAgRlhfRFdPUkQgZHdSZWNvZGVFbmRQb3MgPSAwOw0KKyAgICBpZiAocEJ1ZmZlcls1XSA9PSAwKSB7DQorICAgICAgICBGWF9EV09SRCBkd1N0YXJ0SW5kZXggPSAqKEZYX0RXT1JEKikocEJ1ZmZlciArIDgpOw0KKyAgICAgICAgRlhfRFdPUkQgZHdSZWNvcmRDb3VudCA9ICooRlhfRFdPUkQqKShwQnVmZmVyICsgMTYpOw0KKyAgICAgICAgRlhfRFdPUkQgZHdEYXRhT2Zmc2V0ID0gKihGWF9EV09SRCopKHBCdWZmZXIgKyAyMCk7DQorICAgICAgICBpZiAoZHdSZWNvcmRDb3VudCAqIDIgKyBkd1N0YXJ0SW5kZXggKiAyIDwgNjU1MzYpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BNYXBwaW5nICsgZHdTdGFydEluZGV4ICogMiwgcEJ1ZmZlciArIGR3RGF0YU9mZnNldCwgZHdSZWNvcmRDb3VudCAqIDIpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZHdSZWNvZGVFbmRQb3MgPSBkd0RhdGFPZmZzZXQgKyBkd1JlY29yZENvdW50ICogMjsNCisgICAgfSBlbHNlIGlmIChwQnVmZmVyWzVdID09IDIpIHsNCisgICAgICAgIEZYX0RXT1JEIG5TZWdtZW50cyA9ICooRlhfRFdPUkQqKShwQnVmZmVyICsgMTYpOw0KKyAgICAgICAgRlhfRFdPUkQgZHdEYXRhT2Zmc2V0ID0gKihGWF9EV09SRCopKHBCdWZmZXIgKyAyMCk7DQorICAgICAgICBkd1JlY29kZUVuZFBvcyA9IGR3RGF0YU9mZnNldCArIDYgKiBuU2VnbWVudHM7DQorICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgblNlZ21lbnRzOyBpICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIHBSZWNvcmQgPSBwQnVmZmVyICsgZHdEYXRhT2Zmc2V0ICsgaSAqIDY7DQorICAgICAgICAgICAgRlhfV09SRCBJbmRleFN0YXJ0ID0gKihGWF9XT1JEKilwUmVjb3JkOw0KKyAgICAgICAgICAgIEZYX1dPUkQgSW5kZXhDb3VudCA9ICooRlhfV09SRCopKHBSZWNvcmQgKyAyKTsNCisgICAgICAgICAgICBGWF9XT1JEIENvZGVTdGFydCA9ICooRlhfV09SRCopKHBSZWNvcmQgKyA0KTsNCisgICAgICAgICAgICBpZiAoSW5kZXhTdGFydCArIEluZGV4Q291bnQgPCA2NTUzNikNCisgICAgICAgICAgICAgICAgZm9yIChGWF9EV09SRCBqID0gMDsgaiA8IEluZGV4Q291bnQ7IGogKyspIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcE1hcHBpbmdbSW5kZXhTdGFydCArIGogXSA9IChGWF9XT1JEKShDb2RlU3RhcnQgKyBqKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChkd1JlY29kZUVuZFBvcyA8IHNpemUpIHsNCisgICAgICAgIEZYX0RXT1JEIGR3TWFwTGVuID0gKihGWF9EV09SRCopKHBCdWZmZXIgKyBkd1JlY29kZUVuZFBvcyk7DQorICAgICAgICBpZiAoZHdNYXBMZW4pIHsNCisgICAgICAgICAgICBtX3BVc2VNYXAgPSBGWF9ORVcgQ1BERl9DTWFwOw0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGJzTmFtZShwQnVmZmVyICsgZHdSZWNvZGVFbmRQb3MgKyA0ICwgZHdNYXBMZW4pOw0KKyAgICAgICAgICAgIGlmIChtX3BVc2VNYXApIHsNCisgICAgICAgICAgICAgICAgbV9wVXNlTWFwLT5Mb2FkUHJlZGVmaW5lZChwTWdyLCBic05hbWUsIGJQcm9tcHRDSkspOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9GcmVlKHBCdWZmZXIpOw0KKyAgICBtX2JMb2FkZWQgPSBUUlVFOw0KKyNlbmRpZg0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyBpbnQgY29tcGFyZV9kd29yZChjb25zdCB2b2lkKiBkYXRhMSwgY29uc3Qgdm9pZCogZGF0YTIpDQorICAgIHsNCisgICAgICAgIHJldHVybiAoKihGWF9EV09SRCopZGF0YTEpIC0gKCooRlhfRFdPUkQqKWRhdGEyKTsNCisgICAgfQ0KK307DQorRlhfQk9PTCBDUERGX0NNYXA6OkxvYWRFbWJlZGRlZChGWF9MUENCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplKQ0KK3sNCisgICAgbV9wTWFwcGluZyA9IEZYX0FsbG9jKEZYX1dPUkQsIDY1NTM2KTsNCisgICAgRlhTWVNfbWVtc2V0MzIobV9wTWFwcGluZywgMCwgNjU1MzYgKiBzaXplb2YoRlhfV09SRCkpOw0KKyAgICBDUERGX0NNYXBQYXJzZXIgcGFyc2VyOw0KKyAgICBwYXJzZXIuSW5pdGlhbGl6ZSh0aGlzKTsNCisgICAgQ1BERl9TaW1wbGVQYXJzZXIgc3ludGF4KHBEYXRhLCBzaXplKTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nQyB3b3JkID0gc3ludGF4LkdldFdvcmQoKTsNCisgICAgICAgIGlmICh3b3JkLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcGFyc2VyLlBhcnNlV29yZCh3b3JkKTsNCisgICAgfQ0KKyAgICBpZiAobV9Db2RpbmdTY2hlbWUgPT0gTWl4ZWRGb3VyQnl0ZXMgJiYgcGFyc2VyLm1fQWRkTWFwcy5HZXRTaXplKCkpIHsNCisgICAgICAgIG1fcEFkZE1hcHBpbmcgPSBGWF9BbGxvYyhGWF9CWVRFLCBwYXJzZXIubV9BZGRNYXBzLkdldFNpemUoKSArIDQpOw0KKyAgICAgICAgKihGWF9EV09SRCopbV9wQWRkTWFwcGluZyA9IHBhcnNlci5tX0FkZE1hcHMuR2V0U2l6ZSgpIC8gODsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcEFkZE1hcHBpbmcgKyA0LCBwYXJzZXIubV9BZGRNYXBzLkdldEJ1ZmZlcigpLCBwYXJzZXIubV9BZGRNYXBzLkdldFNpemUoKSk7DQorICAgICAgICBGWFNZU19xc29ydChtX3BBZGRNYXBwaW5nICsgNCwgcGFyc2VyLm1fQWRkTWFwcy5HZXRTaXplKCkgLyA4LCA4LCBjb21wYXJlX2R3b3JkKTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyBpbnQgY29tcGFyZUNJRChjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIGVsZW1lbnQpDQorICAgIHsNCisgICAgICAgIGlmICgoKihGWF9EV09SRCopa2V5KSA8ICgqKEZYX0RXT1JEKillbGVtZW50KSkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICgoKihGWF9EV09SRCopa2V5KSA+ICgqKEZYX0RXT1JEKillbGVtZW50KSArICgoRlhfRFdPUkQqKWVsZW1lbnQpWzFdIC8gNjU1MzYpIHsNCisgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorfTsNCitGWF9XT1JEIENQREZfQ01hcDo6Q0lERnJvbUNoYXJDb2RlKEZYX0RXT1JEIGNoYXJjb2RlKSBjb25zdA0KK3sNCisgICAgaWYgKG1fQ29kaW5nID09IENJRENPRElOR19DSUQpIHsNCisgICAgICAgIHJldHVybiAoRlhfV09SRCljaGFyY29kZTsNCisgICAgfQ0KKyAgICBpZiAobV9wRW1iZWRNYXApIHsNCisgICAgICAgIHJldHVybiBGUERGQVBJX0NJREZyb21DaGFyQ29kZShtX3BFbWJlZE1hcCwgY2hhcmNvZGUpOw0KKyAgICB9DQorICAgIGlmIChtX3BNYXBwaW5nID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAoRlhfV09SRCljaGFyY29kZTsNCisgICAgfQ0KKyAgICBpZiAoY2hhcmNvZGUgPj4gMTYpIHsNCisgICAgICAgIGlmIChtX3BBZGRNYXBwaW5nKSB7DQorICAgICAgICAgICAgdm9pZCogZm91bmQgPSBGWFNZU19ic2VhcmNoKCZjaGFyY29kZSwgbV9wQWRkTWFwcGluZyArIDQsICooRlhfRFdPUkQqKW1fcEFkZE1hcHBpbmcsIDgsIGNvbXBhcmVDSUQpOw0KKyAgICAgICAgICAgIGlmIChmb3VuZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGlmIChtX3BVc2VNYXApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX3BVc2VNYXAtPkNJREZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiAoRlhfV09SRCkoKChGWF9EV09SRCopZm91bmQpWzFdICUgNjU1MzYgKyBjaGFyY29kZSAtICogKEZYX0RXT1JEKilmb3VuZCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9wVXNlTWFwKSB7DQorICAgICAgICAgICAgcmV0dXJuIG1fcFVzZU1hcC0+Q0lERnJvbUNoYXJDb2RlKGNoYXJjb2RlKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIENJRCA9IG1fcE1hcHBpbmdbY2hhcmNvZGVdOw0KKyAgICBpZiAoIUNJRCAmJiBtX3BVc2VNYXApIHsNCisgICAgICAgIHJldHVybiBtX3BVc2VNYXAtPkNJREZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorICAgIH0NCisgICAgcmV0dXJuIChGWF9XT1JEKUNJRDsNCit9DQorc3RhdGljIGludCBfQ2hlY2tDb2RlUmFuZ2UoRlhfTFBCWVRFIGNvZGVzLCBpbnQgc2l6ZSwgX0NNYXBfQ29kZVJhbmdlKiBwUmFuZ2VzLCBpbnQgblJhbmdlcykNCit7DQorICAgIGludCBpU2VnID0gblJhbmdlcyAtIDE7DQorICAgIHdoaWxlIChpU2VnID49IDApIHsNCisgICAgICAgIGlmIChwUmFuZ2VzW2lTZWddLm1fQ2hhclNpemUgPCBzaXplKSB7DQorICAgICAgICAgICAgaVNlZyAtLTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBpQ2hhciA9IDA7DQorICAgICAgICB3aGlsZSAoaUNoYXIgPCBzaXplKSB7DQorICAgICAgICAgICAgaWYgKGNvZGVzW2lDaGFyXSA8IHBSYW5nZXNbaVNlZ10ubV9Mb3dlcltpQ2hhcl0gfHwNCisgICAgICAgICAgICAgICAgICAgIGNvZGVzW2lDaGFyXSA+IHBSYW5nZXNbaVNlZ10ubV9VcHBlcltpQ2hhcl0pIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlDaGFyICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGlDaGFyID09IHBSYW5nZXNbaVNlZ10ubV9DaGFyU2l6ZSkgew0KKyAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGlDaGFyKSB7DQorICAgICAgICAgICAgaWYgKHNpemUgPT0gcFJhbmdlc1tpU2VnXS5tX0NoYXJTaXplKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgIH0NCisgICAgICAgIGlTZWcgLS07DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX0RXT1JEIENQREZfQ01hcDo6R2V0TmV4dENoYXIoRlhfTFBDU1RSIHBTdHJpbmcsIGludCYgb2Zmc2V0KSBjb25zdA0KK3sNCisgICAgc3dpdGNoIChtX0NvZGluZ1NjaGVtZSkgew0KKyAgICAgICAgY2FzZSBPbmVCeXRlOg0KKyAgICAgICAgICAgIHJldHVybiAoKEZYX0xQQllURSlwU3RyaW5nKVtvZmZzZXQrK107DQorICAgICAgICBjYXNlIFR3b0J5dGVzOg0KKyAgICAgICAgICAgIG9mZnNldCArPSAyOw0KKyAgICAgICAgICAgIHJldHVybiAoKEZYX0xQQllURSlwU3RyaW5nKVtvZmZzZXQgLSAyXSAqIDI1NiArICgoRlhfTFBCWVRFKXBTdHJpbmcpW29mZnNldCAtIDFdOw0KKyAgICAgICAgY2FzZSBNaXhlZFR3b0J5dGVzOiB7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgYnl0ZTEgPSAoKEZYX0xQQllURSlwU3RyaW5nKVtvZmZzZXQrK107DQorICAgICAgICAgICAgICAgIGlmICghbV9wTGVhZGluZ0J5dGVzW2J5dGUxXSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ5dGUxOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgYnl0ZTIgPSAoKEZYX0xQQllURSlwU3RyaW5nKVtvZmZzZXQrK107DQorICAgICAgICAgICAgICAgIHJldHVybiBieXRlMSAqIDI1NiArIGJ5dGUyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgTWl4ZWRGb3VyQnl0ZXM6IHsNCisgICAgICAgICAgICAgICAgRlhfQllURSBjb2Rlc1s0XTsNCisgICAgICAgICAgICAgICAgaW50IGNoYXJfc2l6ZSA9IDE7DQorICAgICAgICAgICAgICAgIGNvZGVzWzBdID0gKChGWF9MUEJZVEUpcFN0cmluZylbb2Zmc2V0KytdOw0KKyAgICAgICAgICAgICAgICBfQ01hcF9Db2RlUmFuZ2UqIHBSYW5nZXMgPSAoX0NNYXBfQ29kZVJhbmdlKiltX3BMZWFkaW5nQnl0ZXM7DQorICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgcmV0ID0gX0NoZWNrQ29kZVJhbmdlKGNvZGVzLCBjaGFyX3NpemUsIHBSYW5nZXMsIG1fbkNvZGVSYW5nZXMpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDIpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBjaGFyY29kZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGFyX3NpemU7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmNvZGUgPSAoY2hhcmNvZGUgPDwgOCkgKyBjb2Rlc1tpXTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYXJjb2RlOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJfc2l6ZSA9PSA0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBjb2Rlc1tjaGFyX3NpemUgKytdID0gKChGWF9MUEJZVEUpcFN0cmluZylbb2Zmc2V0KytdOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQoraW50IENQREZfQ01hcDo6R2V0Q2hhclNpemUoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0DQorew0KKyAgICBzd2l0Y2ggKG1fQ29kaW5nU2NoZW1lKSB7DQorICAgICAgICBjYXNlIE9uZUJ5dGU6DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICBjYXNlIFR3b0J5dGVzOg0KKyAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgY2FzZSBNaXhlZFR3b0J5dGVzOg0KKyAgICAgICAgY2FzZSBNaXhlZEZvdXJCeXRlczoNCisgICAgICAgICAgICBpZiAoY2hhcmNvZGUgPCAweDEwMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGNoYXJjb2RlIDwgMHgxMDAwMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gMjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGNoYXJjb2RlIDwgMHgxMDAwMDAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAzOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gNDsNCisgICAgfQ0KKyAgICByZXR1cm4gMTsNCit9DQoraW50IENQREZfQ01hcDo6Q291bnRDaGFyKEZYX0xQQ1NUUiBwU3RyaW5nLCBpbnQgc2l6ZSkgY29uc3QNCit7DQorICAgIHN3aXRjaCAobV9Db2RpbmdTY2hlbWUpIHsNCisgICAgICAgIGNhc2UgT25lQnl0ZToNCisgICAgICAgICAgICByZXR1cm4gc2l6ZTsNCisgICAgICAgIGNhc2UgVHdvQnl0ZXM6DQorICAgICAgICAgICAgcmV0dXJuIChzaXplICsgMSkgLyAyOw0KKyAgICAgICAgY2FzZSBNaXhlZFR3b0J5dGVzOiB7DQorICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDA7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgY291bnQgKys7DQorICAgICAgICAgICAgICAgICAgICBpZiAobV9wTGVhZGluZ0J5dGVzWygoRlhfTFBCWVRFKXBTdHJpbmcpW2ldXSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGkgKys7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgTWl4ZWRGb3VyQnl0ZXM6IHsNCisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMCwgb2Zmc2V0ID0gMDsNCisgICAgICAgICAgICAgICAgd2hpbGUgKG9mZnNldCA8IHNpemUpIHsNCisgICAgICAgICAgICAgICAgICAgIEdldE5leHRDaGFyKHBTdHJpbmcsIG9mZnNldCk7DQorICAgICAgICAgICAgICAgICAgICBjb3VudCArKzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gY291bnQ7DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBzaXplOw0KK30NCitpbnQgX0dldENoYXJTaXplKEZYX0RXT1JEIGNoYXJjb2RlLCBfQ01hcF9Db2RlUmFuZ2UqIHBSYW5nZXMsIGludCBpUmFuZ2VzU2l6ZSkNCit7DQorICAgIGlmICghaVJhbmdlc1NpemUpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIEZYX0JZVEUgY29kZXNbNF07DQorICAgIGNvZGVzWzBdID0gY29kZXNbMV0gPSAweDAwOw0KKyAgICBjb2Rlc1syXSA9IChGWF9CWVRFKShjaGFyY29kZSA+PiA4ICYgMHhGRik7DQorICAgIGNvZGVzWzNdID0gKEZYX0JZVEUpY2hhcmNvZGU7DQorICAgIGludCBvZmZzZXQgPSAwLCBzaXplID0gNDsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpIHsNCisgICAgICAgIGludCBpU2VnID0gaVJhbmdlc1NpemUgLSAxOw0KKyAgICAgICAgd2hpbGUgKGlTZWcgPj0gMCkgew0KKyAgICAgICAgICAgIGlmIChwUmFuZ2VzW2lTZWddLm1fQ2hhclNpemUgPCBzaXplKSB7DQorICAgICAgICAgICAgICAgIGlTZWcgLS07DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgaUNoYXIgPSAwOw0KKyAgICAgICAgICAgIHdoaWxlIChpQ2hhciA8IHNpemUpIHsNCisgICAgICAgICAgICAgICAgaWYgKGNvZGVzW29mZnNldCArIGlDaGFyXSA8IHBSYW5nZXNbaVNlZ10ubV9Mb3dlcltpQ2hhcl0gfHwNCisgICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc1tvZmZzZXQgKyBpQ2hhcl0gPiBwUmFuZ2VzW2lTZWddLm1fVXBwZXJbaUNoYXJdKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpQ2hhciArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGlDaGFyID09IHBSYW5nZXNbaVNlZ10ubV9DaGFyU2l6ZSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaVNlZyAtLTsNCisgICAgICAgIH0NCisgICAgICAgIHNpemUgLS07DQorICAgICAgICBvZmZzZXQgKys7DQorICAgIH0NCisgICAgcmV0dXJuIDE7DQorfQ0KK2ludCBDUERGX0NNYXA6OkFwcGVuZENoYXIoRlhfTFBTVFIgc3RyLCBGWF9EV09SRCBjaGFyY29kZSkgY29uc3QNCit7DQorICAgIHN3aXRjaCAobV9Db2RpbmdTY2hlbWUpIHsNCisgICAgICAgIGNhc2UgT25lQnl0ZToNCisgICAgICAgICAgICBzdHJbMF0gPSAoRlhfQllURSljaGFyY29kZTsNCisgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgIGNhc2UgVHdvQnl0ZXM6DQorICAgICAgICAgICAgc3RyWzBdID0gKEZYX0JZVEUpKGNoYXJjb2RlIC8gMjU2KTsNCisgICAgICAgICAgICBzdHJbMV0gPSAoRlhfQllURSkoY2hhcmNvZGUgJSAyNTYpOw0KKyAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgY2FzZSBNaXhlZFR3b0J5dGVzOg0KKyAgICAgICAgY2FzZSBNaXhlZEZvdXJCeXRlczoNCisgICAgICAgICAgICBpZiAoY2hhcmNvZGUgPCAweDEwMCkgew0KKyAgICAgICAgICAgICAgICBfQ01hcF9Db2RlUmFuZ2UqIHBSYW5nZXMgPSAoX0NNYXBfQ29kZVJhbmdlKiltX3BMZWFkaW5nQnl0ZXM7DQorICAgICAgICAgICAgICAgIGludCBpU2l6ZSA9IF9HZXRDaGFyU2l6ZShjaGFyY29kZSwgcFJhbmdlcywgbV9uQ29kZVJhbmdlcyk7DQorICAgICAgICAgICAgICAgIGlmIChpU2l6ZSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBpU2l6ZSA9IDE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGlTaXplID4gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgRlhTWVNfbWVtc2V0MzIoc3RyLCAwLCBzaXplb2YoRlhfQllURSkgKiBpU2l6ZSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgc3RyW2lTaXplIC0gMV0gPSAoRlhfQllURSljaGFyY29kZTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGlTaXplOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhcmNvZGUgPCAweDEwMDAwKSB7DQorICAgICAgICAgICAgICAgIHN0clswXSA9IChGWF9CWVRFKShjaGFyY29kZSA+PiA4KTsNCisgICAgICAgICAgICAgICAgc3RyWzFdID0gKEZYX0JZVEUpY2hhcmNvZGU7DQorICAgICAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhcmNvZGUgPCAweDEwMDAwMDApIHsNCisgICAgICAgICAgICAgICAgc3RyWzBdID0gKEZYX0JZVEUpKGNoYXJjb2RlID4+IDE2KTsNCisgICAgICAgICAgICAgICAgc3RyWzFdID0gKEZYX0JZVEUpKGNoYXJjb2RlID4+IDgpOw0KKyAgICAgICAgICAgICAgICBzdHJbMl0gPSAoRlhfQllURSljaGFyY29kZTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDM7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgc3RyWzBdID0gKEZYX0JZVEUpKGNoYXJjb2RlID4+IDI0KTsNCisgICAgICAgICAgICAgICAgc3RyWzFdID0gKEZYX0JZVEUpKGNoYXJjb2RlID4+IDE2KTsNCisgICAgICAgICAgICAgICAgc3RyWzJdID0gKEZYX0JZVEUpKGNoYXJjb2RlID4+IDgpOw0KKyAgICAgICAgICAgICAgICBzdHJbM10gPSAoRlhfQllURSljaGFyY29kZTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDQ7DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitDUERGX0NJRDJVbmljb2RlTWFwOjpDUERGX0NJRDJVbmljb2RlTWFwKCkNCit7DQorICAgIG1fRW1iZWRkZWRDb3VudCA9IDA7DQorI2lmbmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICBtX3BFeHRlcm5hbE1hcCA9IE5VTEw7DQorI2VuZGlmDQorfQ0KK0NQREZfQ0lEMlVuaWNvZGVNYXA6On5DUERGX0NJRDJVbmljb2RlTWFwKCkNCit7DQorI2lmbmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICBpZiAobV9wRXh0ZXJuYWxNYXApIHsNCisgICAgICAgIGRlbGV0ZSBtX3BFeHRlcm5hbE1hcDsNCisgICAgfQ0KKyNlbmRpZg0KK30NCitGWF9CT09MIENQREZfQ0lEMlVuaWNvZGVNYXA6OkluaXRpYWxpemUoKQ0KK3sNCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgIG1fcEV4dGVybmFsTWFwID0gRlhfTkVXIENQREZfRlhNUDsNCisjZW5kaWYNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9DSUQyVW5pY29kZU1hcDo6SXNMb2FkZWQoKQ0KK3sNCisjaWZkZWYgX0ZQREZBUElfTUlOSV8NCisgICAgcmV0dXJuIG1fRW1iZWRkZWRDb3VudCAhPSAwOw0KKyNlbHNlDQorICAgIHJldHVybiBtX0VtYmVkZGVkQ291bnQgIT0gMCB8fCAobV9wRXh0ZXJuYWxNYXAgIT0gTlVMTCAmJiBtX3BFeHRlcm5hbE1hcC0+SXNMb2FkZWQoKSk7DQorI2VuZGlmDQorfQ0KK0ZYX1dDSEFSIENQREZfQ0lEMlVuaWNvZGVNYXA6OlVuaWNvZGVGcm9tQ0lEKEZYX1dPUkQgQ0lEKQ0KK3sNCisgICAgaWYgKG1fQ2hhcnNldCA9PSBDSURTRVRfVU5JQ09ERSkgew0KKyAgICAgICAgcmV0dXJuIENJRDsNCisgICAgfQ0KKyAgICBpZiAoQ0lEIDwgbV9FbWJlZGRlZENvdW50KSB7DQorICAgICAgICByZXR1cm4gbV9wRW1iZWRkZWRNYXBbQ0lEXTsNCisgICAgfQ0KKyNpZmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICByZXR1cm4gMDsNCisjZWxzZQ0KKyAgICBGWF9MUENCWVRFIHJlY29yZCA9IG1fcEV4dGVybmFsTWFwLT5HZXRSZWNvcmQoQ0lEKTsNCisgICAgaWYgKHJlY29yZCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gKihGWF9XT1JEKilyZWNvcmQ7DQorI2VuZGlmDQorfQ0KK3ZvaWQgRlBERkFQSV9Mb2FkQ0lEMlVuaWNvZGVNYXAoaW50IGNoYXJzZXQsIGNvbnN0IEZYX1dPUkQqJiBwTWFwLCBGWF9EV09SRCYgY291bnQpOw0KK3ZvaWQgQ1BERl9DSUQyVW5pY29kZU1hcDo6TG9hZChDUERGX0NNYXBNYW5hZ2VyKiBwTWdyLCBpbnQgY2hhcnNldCwgRlhfQk9PTCBiUHJvbXB0Q0pLKQ0KK3sNCisgICAgbV9DaGFyc2V0ID0gY2hhcnNldDsNCisgICAgRlBERkFQSV9Mb2FkQ0lEMlVuaWNvZGVNYXAoY2hhcnNldCwgbV9wRW1iZWRkZWRNYXAsIG1fRW1iZWRkZWRDb3VudCk7DQorICAgIGlmIChtX0VtYmVkZGVkQ291bnQpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgRlhfTFBWT0lEIHBQYWNrYWdlID0gcE1nci0+R2V0UGFja2FnZShiUHJvbXB0Q0pLKTsNCisgICAgaWYgKHBQYWNrYWdlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BFeHRlcm5hbE1hcC0+TG9hZEZpbGUocFBhY2thZ2UsIEZYX0JTVFJDKCJDSURJbmZvXyIpICsgZ19DaGFyc2V0TmFtZXNbY2hhcnNldF0pOw0KKyNlbmRpZg0KK30NCisjaW5jbHVkZSAidHRnc3VidGFibGUuaCINCitDUERGX0NJREZvbnQ6OkNQREZfQ0lERm9udCgpDQorew0KKyAgICBtX3BDTWFwID0gTlVMTDsNCisgICAgbV9wQWxsb2NhdGVkQ01hcCA9IE5VTEw7DQorICAgIG1fcENJRDJVbmljb2RlTWFwID0gTlVMTDsNCisgICAgbV9wQW5zaVdpZHRocyA9IE5VTEw7DQorICAgIG1fcENJRFRvR0lETWFwID0gTlVMTDsNCisgICAgbV9iQ0lESXNHSUQgPSBGQUxTRTsNCisgICAgbV9iQWRvYmVDb3VyaWVyU3RkID0gRkFMU0U7DQorICAgIG1fcFRUR1NVQlRhYmxlID0gTlVMTDsNCisgICAgRlhTWVNfbWVtc2V0OChtX0NoYXJCQm94LCAweGZmLCAyNTYgKiBzaXplb2YoRlhfU01BTExfUkVDVCkpOw0KK30NCitDUERGX0NJREZvbnQ6On5DUERGX0NJREZvbnQoKQ0KK3sNCisgICAgaWYgKG1fcEFuc2lXaWR0aHMpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wQW5zaVdpZHRocyk7DQorICAgIH0NCisgICAgaWYgKG1fcEFsbG9jYXRlZENNYXApIHsNCisgICAgICAgIGRlbGV0ZSBtX3BBbGxvY2F0ZWRDTWFwOw0KKyAgICB9DQorICAgIGlmIChtX3BDSURUb0dJRE1hcCkgew0KKyAgICAgICAgZGVsZXRlIG1fcENJRFRvR0lETWFwOw0KKyAgICB9DQorICAgIGlmIChtX3BUVEdTVUJUYWJsZSkgew0KKyAgICAgICAgZGVsZXRlIG1fcFRUR1NVQlRhYmxlOw0KKyAgICB9DQorfQ0KK0ZYX1dPUkQgQ1BERl9DSURGb250OjpDSURGcm9tQ2hhckNvZGUoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0DQorew0KKyAgICBpZiAobV9wQ01hcCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gKEZYX1dPUkQpY2hhcmNvZGU7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcENNYXAtPkNJREZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9DSURGb250OjpJc1ZlcnRXcml0aW5nKCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX3BDTWFwID8gbV9wQ01hcC0+SXNWZXJ0V3JpdGluZygpIDogRkFMU0U7DQorfQ0KK2V4dGVybiBGWF9EV09SRCBGUERGQVBJX0NoYXJDb2RlRnJvbUNJRChjb25zdCBGWENNQVBfQ01hcCogcE1hcCwgRlhfV09SRCBjaWQpOw0KK3N0YXRpYyBGWF9EV09SRCBfRW1iZWRkZWRDaGFyY29kZUZyb21Vbmljb2RlKGNvbnN0IEZYQ01BUF9DTWFwKiBwRW1iZWRNYXAsIGludCBjaGFyc2V0LCBGWF9XQ0hBUiB1bmljb2RlKQ0KK3sNCisgICAgaWYgKGNoYXJzZXQgPD0gMCB8fCBjaGFyc2V0ID4gNCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ1BERl9Gb250R2xvYmFscyogcEZvbnRHbG9iYWxzID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRQYWdlTW9kdWxlKCktPkdldEZvbnRHbG9iYWxzKCk7DQorICAgIGNvbnN0IEZYX1dPUkQqIHBDb2RlcyA9IHBGb250R2xvYmFscy0+bV9FbWJlZGRlZFRvVW5pY29kZXNbY2hhcnNldF0ubV9wTWFwOw0KKyAgICBpZiAocENvZGVzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGludCBuQ29kZXMgPSBwRm9udEdsb2JhbHMtPm1fRW1iZWRkZWRUb1VuaWNvZGVzW2NoYXJzZXRdLm1fQ291bnQ7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkNvZGVzOyBpKyspIHsNCisgICAgICAgIGlmIChwQ29kZXNbaV0gPT0gdW5pY29kZSkgew0KKyAgICAgICAgICAgIEZYX0RXT1JEIENoYXJDb2RlID0gRlBERkFQSV9DaGFyQ29kZUZyb21DSUQocEVtYmVkTWFwLCBpKTsNCisgICAgICAgICAgICBpZiAoQ2hhckNvZGUgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIENoYXJDb2RlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitzdGF0aWMgRlhfV0NIQVIgX0VtYmVkZGVkVW5pY29kZUZyb21DaGFyY29kZShjb25zdCBGWENNQVBfQ01hcCogcEVtYmVkTWFwLCBpbnQgY2hhcnNldCwgRlhfRFdPUkQgY2hhcmNvZGUpDQorew0KKyAgICBpZiAoY2hhcnNldCA8PSAwIHx8IGNoYXJzZXQgPiA0KSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBGWF9XT1JEIGNpZCA9IEZQREZBUElfQ0lERnJvbUNoYXJDb2RlKHBFbWJlZE1hcCwgY2hhcmNvZGUpOw0KKyAgICBpZiAoY2lkID09IDApIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIENQREZfRm9udEdsb2JhbHMqIHBGb250R2xvYmFscyA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UGFnZU1vZHVsZSgpLT5HZXRGb250R2xvYmFscygpOw0KKyAgICBjb25zdCBGWF9XT1JEKiBwQ29kZXMgPSBwRm9udEdsb2JhbHMtPm1fRW1iZWRkZWRUb1VuaWNvZGVzW2NoYXJzZXRdLm1fcE1hcDsNCisgICAgaWYgKHBDb2RlcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAoY2lkIDwgcEZvbnRHbG9iYWxzLT5tX0VtYmVkZGVkVG9Vbmljb2Rlc1tjaGFyc2V0XS5tX0NvdW50KSB7DQorICAgICAgICByZXR1cm4gcENvZGVzW2NpZF07DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX1dDSEFSIENQREZfQ0lERm9udDo6X1VuaWNvZGVGcm9tQ2hhckNvZGUoRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0DQorew0KKyAgICBzd2l0Y2ggKG1fcENNYXAtPm1fQ29kaW5nKSB7DQorICAgICAgICBjYXNlIENJRENPRElOR19VQ1MyOg0KKyAgICAgICAgY2FzZSBDSURDT0RJTkdfVVRGMTY6DQorICAgICAgICAgICAgcmV0dXJuIChGWF9XQ0hBUiljaGFyY29kZTsNCisgICAgICAgIGNhc2UgQ0lEQ09ESU5HX0NJRDoNCisgICAgICAgICAgICBpZiAobV9wQ0lEMlVuaWNvZGVNYXAgPT0gTlVMTCB8fCAhbV9wQ0lEMlVuaWNvZGVNYXAtPklzTG9hZGVkKCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBtX3BDSUQyVW5pY29kZU1hcC0+VW5pY29kZUZyb21DSUQoKEZYX1dPUkQpY2hhcmNvZGUpOw0KKyAgICB9DQorICAgIGlmICghbV9wQ01hcC0+SXNMb2FkZWQoKSB8fCBtX3BDSUQyVW5pY29kZU1hcCA9PSBOVUxMIHx8ICFtX3BDSUQyVW5pY29kZU1hcC0+SXNMb2FkZWQoKSkgew0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorICAgICAgICBGWF9XQ0hBUiB1bmljb2RlOw0KKyAgICAgICAgaW50IGNoYXJzaXplID0gMTsNCisgICAgICAgIGlmIChjaGFyY29kZSA+IDI1NSkgew0KKyAgICAgICAgICAgIGNoYXJjb2RlID0gKGNoYXJjb2RlICUgMjU2KSAqIDI1NiArIChjaGFyY29kZSAvIDI1Nik7DQorICAgICAgICAgICAgY2hhcnNpemUgPSAyOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IHJldCA9IEZYU1lTX011bHRpQnl0ZVRvV2lkZUNoYXIoZ19DaGFyc2V0Q1BzW21fcENNYXAtPm1fQ29kaW5nXSwgMCwgKEZYX0xQQ1NUUikmY2hhcmNvZGUsIGNoYXJzaXplLCAmdW5pY29kZSwgMSk7DQorICAgICAgICBpZiAocmV0ICE9IDEpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiB1bmljb2RlOw0KKyNlbmRpZg0KKyAgICAgICAgaWYgKG1fcENNYXAtPm1fcEVtYmVkTWFwKSB7DQorICAgICAgICAgICAgcmV0dXJuIF9FbWJlZGRlZFVuaWNvZGVGcm9tQ2hhcmNvZGUobV9wQ01hcC0+bV9wRW1iZWRNYXAsIG1fcENNYXAtPm1fQ2hhcnNldCwgY2hhcmNvZGUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gbV9wQ0lEMlVuaWNvZGVNYXAtPlVuaWNvZGVGcm9tQ0lEKENJREZyb21DaGFyQ29kZShjaGFyY29kZSkpOw0KK30NCitGWF9EV09SRCBDUERGX0NJREZvbnQ6Ol9DaGFyQ29kZUZyb21Vbmljb2RlKEZYX1dDSEFSIHVuaWNvZGUpIGNvbnN0DQorew0KKyAgICBzd2l0Y2ggKG1fcENNYXAtPm1fQ29kaW5nKSB7DQorICAgICAgICBjYXNlIENJRENPRElOR19VTktOT1dOOg0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgY2FzZSBDSURDT0RJTkdfVUNTMjoNCisgICAgICAgIGNhc2UgQ0lEQ09ESU5HX1VURjE2Og0KKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlOw0KKyAgICAgICAgY2FzZSBDSURDT0RJTkdfQ0lEOiB7DQorICAgICAgICAgICAgICAgIGlmIChtX3BDSUQyVW5pY29kZU1hcCA9PSBOVUxMIHx8ICFtX3BDSUQyVW5pY29kZU1hcC0+SXNMb2FkZWQoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgQ0lEID0gMDsNCisgICAgICAgICAgICAgICAgd2hpbGUgKENJRCA8IDY1NTM2KSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9XQ0hBUiB0aGlzX3VuaWNvZGUgPSBtX3BDSUQyVW5pY29kZU1hcC0+VW5pY29kZUZyb21DSUQoKEZYX1dPUkQpQ0lEKTsNCisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzX3VuaWNvZGUgPT0gdW5pY29kZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDSUQ7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBDSUQgKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgRlhfQllURSBidWZmZXJbMzJdOw0KKyAgICBpbnQgcmV0ID0gRlhTWVNfV2lkZUNoYXJUb011bHRpQnl0ZShnX0NoYXJzZXRDUHNbbV9wQ01hcC0+bV9Db2RpbmddLCAwLCAmdW5pY29kZSwgMSwgKGNoYXIqKWJ1ZmZlciwgNCwgTlVMTCwgTlVMTCk7DQorICAgIGlmIChyZXQgPT0gMSkgew0KKyAgICAgICAgcmV0dXJuIGJ1ZmZlclswXTsNCisgICAgfSBlbHNlIGlmIChyZXQgPT0gMikgew0KKyAgICAgICAgcmV0dXJuIGJ1ZmZlclswXSAqIDI1NiArIGJ1ZmZlclsxXTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCisjZW5kaWYNCisgICAgaWYgKHVuaWNvZGUgPCAweDgwKSB7DQorICAgICAgICByZXR1cm4gKEZYX0RXT1JEKXVuaWNvZGU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAobV9wQ01hcC0+bV9wRW1iZWRNYXApIHsNCisgICAgICAgICAgICByZXR1cm4gX0VtYmVkZGVkQ2hhcmNvZGVGcm9tVW5pY29kZShtX3BDTWFwLT5tX3BFbWJlZE1hcCwgbV9wQ01hcC0+bV9DaGFyc2V0LCB1bmljb2RlKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgIH0NCit9DQorc3RhdGljIHZvaWQgRlRfVXNlQ0lEQ2hhcm1hcChGWEZUX0ZhY2UgZmFjZSwgaW50IGNvZGluZykNCit7DQorICAgIGludCBlbmNvZGluZzsNCisgICAgc3dpdGNoIChjb2RpbmcpIHsNCisgICAgICAgIGNhc2UgQ0lEQ09ESU5HX0dCOg0KKyAgICAgICAgICAgIGVuY29kaW5nID0gRlhGVF9FTkNPRElOR19HQjIzMTI7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIENJRENPRElOR19CSUc1Og0KKyAgICAgICAgICAgIGVuY29kaW5nID0gRlhGVF9FTkNPRElOR19CSUc1Ow0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBDSURDT0RJTkdfSklTOg0KKyAgICAgICAgICAgIGVuY29kaW5nID0gRlhGVF9FTkNPRElOR19TSklTOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBDSURDT0RJTkdfS09SRUE6DQorICAgICAgICAgICAgZW5jb2RpbmcgPSBGWEZUX0VOQ09ESU5HX0pPSEFCOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBlbmNvZGluZyA9IEZYRlRfRU5DT0RJTkdfVU5JQ09ERTsNCisgICAgfQ0KKyAgICBpbnQgZXJyID0gRlhGVF9TZWxlY3RfQ2hhcm1hcChmYWNlLCBlbmNvZGluZyk7DQorICAgIGlmIChlcnIpIHsNCisgICAgICAgIGVyciA9IEZYRlRfU2VsZWN0X0NoYXJtYXAoZmFjZSwgRlhGVF9FTkNPRElOR19VTklDT0RFKTsNCisgICAgfQ0KKyAgICBpZiAoZXJyICYmIEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcHMoZmFjZSkpIHsNCisgICAgICAgIEZYRlRfU2V0X0NoYXJtYXAoZmFjZSwgKkZYRlRfR2V0X0ZhY2VfQ2hhcm1hcHMoZmFjZSkpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9DSURGb250OjpfTG9hZCgpDQorew0KKyAgICBpZiAobV9wRm9udERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiU3VidHlwZSIpKSA9PSBGWF9CU1RSQygiVHJ1ZVR5cGUiKSkgew0KKyAgICAgICAgcmV0dXJuIExvYWRHQjIzMTIoKTsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwRm9udHMgPSBtX3BGb250RGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkRlc2NlbmRhbnRGb250cyIpKTsNCisgICAgaWYgKHBGb250cyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHBGb250cy0+R2V0Q291bnQoKSAhPSAxKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwQ0lERm9udERpY3QgPSBwRm9udHMtPkdldERpY3QoMCk7DQorICAgIGlmIChwQ0lERm9udERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fQmFzZUZvbnQgPSBwQ0lERm9udERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiQmFzZUZvbnQiKSk7DQorICAgIGlmICgobV9CYXNlRm9udC5Db21wYXJlKCJDb3VyaWVyU3RkIikgPT0gMCB8fCBtX0Jhc2VGb250LkNvbXBhcmUoIkNvdXJpZXJTdGQtQm9sZCIpID09IDANCisgICAgICAgICAgICB8fCBtX0Jhc2VGb250LkNvbXBhcmUoIkNvdXJpZXJTdGQtQm9sZE9ibGlxdWUiKSA9PSAwIHx8IG1fQmFzZUZvbnQuQ29tcGFyZSgiQ291cmllclN0ZC1PYmxpcXVlIikgPT0gMCkNCisgICAgICAgICAgICAmJiAhSXNFbWJlZGRlZCgpKSB7DQorICAgICAgICBtX2JBZG9iZUNvdXJpZXJTdGQgPSBUUlVFOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcEZvbnREZXNjID0gcENJREZvbnREaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJGb250RGVzY3JpcHRvciIpKTsNCisgICAgaWYgKHBGb250RGVzYykgew0KKyAgICAgICAgTG9hZEZvbnREZXNjcmlwdG9yKHBGb250RGVzYyk7DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBFbmNvZGluZyA9IG1fcEZvbnREaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkVuY29kaW5nIikpOw0KKyAgICBpZiAocEVuY29kaW5nID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBzdWJ0eXBlID0gcENJREZvbnREaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlN1YnR5cGUiKSk7DQorICAgIG1fYlR5cGUxID0gRkFMU0U7DQorICAgIGlmIChzdWJ0eXBlID09IEZYX0JTVFJDKCJDSURGb250VHlwZTAiKSkgew0KKyAgICAgICAgbV9iVHlwZTEgPSBUUlVFOw0KKyAgICB9DQorICAgIGlmIChwRW5jb2RpbmctPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgY21hcCA9IHBFbmNvZGluZy0+R2V0U3RyaW5nKCk7DQorICAgICAgICBtX3BDTWFwID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRQYWdlTW9kdWxlKCktPkdldEZvbnRHbG9iYWxzKCktPm1fQ01hcE1hbmFnZXIuR2V0UHJlZGVmaW5lZENNYXAoY21hcCwNCisgICAgICAgICAgICAgICAgICBtX3BGb250RmlsZSAmJiBtX2JUeXBlMSk7DQorICAgIH0gZWxzZSBpZiAocEVuY29kaW5nLT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgbV9wQWxsb2NhdGVkQ01hcCA9IG1fcENNYXAgPSBGWF9ORVcgQ1BERl9DTWFwOw0KKyAgICAgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW0gPSAoQ1BERl9TdHJlYW0qKXBFbmNvZGluZzsNCisgICAgICAgIENQREZfU3RyZWFtQWNjIGFjYzsNCisgICAgICAgIGFjYy5Mb2FkQWxsRGF0YShwU3RyZWFtLCBGQUxTRSk7DQorICAgICAgICBtX3BDTWFwLT5Mb2FkRW1iZWRkZWQoYWNjLkdldERhdGEoKSwgYWNjLkdldFNpemUoKSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fcENNYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fQ2hhcnNldCA9IG1fcENNYXAtPm1fQ2hhcnNldDsNCisgICAgaWYgKG1fQ2hhcnNldCA9PSBDSURTRVRfVU5LTk9XTikgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwQ0lESW5mbyA9IHBDSURGb250RGljdC0+R2V0RGljdChGWF9CU1RSQygiQ0lEU3lzdGVtSW5mbyIpKTsNCisgICAgICAgIGlmIChwQ0lESW5mbykgew0KKyAgICAgICAgICAgIG1fQ2hhcnNldCA9IF9DaGFyc2V0RnJvbU9yZGVyaW5nKHBDSURJbmZvLT5HZXRTdHJpbmcoRlhfQlNUUkMoIk9yZGVyaW5nIikpKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9DaGFyc2V0ICE9IENJRFNFVF9VTktOT1dOKQ0KKyAgICAgICAgbV9wQ0lEMlVuaWNvZGVNYXAgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldFBhZ2VNb2R1bGUoKS0+R2V0Rm9udEdsb2JhbHMoKS0+bV9DTWFwTWFuYWdlci5HZXRDSUQyVW5pY29kZU1hcChtX0NoYXJzZXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcEZvbnRGaWxlID09IE5VTEwgJiYgKG1fcENNYXAtPm1fQ29kaW5nID09IENJRENPRElOR19DSUQgfHwgcENJREZvbnREaWN0LT5LZXlFeGlzdChGWF9CU1RSQygiVyIpKSkpOw0KKyAgICBpZiAobV9Gb250LkdldEZhY2UoKSkgew0KKyAgICAgICAgaWYgKG1fYlR5cGUxKSB7DQorICAgICAgICAgICAgRlhGVF9TZWxlY3RfQ2hhcm1hcChtX0ZvbnQuR2V0RmFjZSgpLCBGWEZUX0VOQ09ESU5HX1VOSUNPREUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBGVF9Vc2VDSURDaGFybWFwKG1fRm9udC5HZXRGYWNlKCksIG1fcENNYXAtPm1fQ29kaW5nKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX0RlZmF1bHRXaWR0aCA9IHBDSURGb250RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiRFciKSwgMTAwMCk7DQorICAgIENQREZfQXJyYXkqIHBXaWR0aEFycmF5ID0gcENJREZvbnREaWN0LT5HZXRBcnJheShGWF9CU1RSQygiVyIpKTsNCisgICAgaWYgKHBXaWR0aEFycmF5KSB7DQorICAgICAgICBMb2FkTWV0cmljc0FycmF5KHBXaWR0aEFycmF5LCBtX1dpZHRoTGlzdCwgMSk7DQorICAgIH0NCisgICAgaWYgKCFJc0VtYmVkZGVkKCkpIHsNCisgICAgICAgIExvYWRTdWJzdEZvbnQoKTsNCisgICAgfQ0KKyAgICBpZiAoMSkgew0KKyAgICAgICAgaWYgKG1fcEZvbnRGaWxlIHx8IChHZXRTdWJzdEZvbnQoKS0+bV9TdWJzdEZsYWdzICYgRlhGT05UX1NVQlNUX0VYQUNUKSkgew0KKyAgICAgICAgICAgIENQREZfT2JqZWN0KiBwbWFwID0gcENJREZvbnREaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkNJRFRvR0lETWFwIikpOw0KKyAgICAgICAgICAgIGlmIChwbWFwKSB7DQorICAgICAgICAgICAgICAgIGlmIChwbWFwLT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wQ0lEVG9HSURNYXAgPSBGWF9ORVcgQ1BERl9TdHJlYW1BY2M7DQorICAgICAgICAgICAgICAgICAgICBtX3BDSURUb0dJRE1hcC0+TG9hZEFsbERhdGEoKENQREZfU3RyZWFtKilwbWFwLCBGQUxTRSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocG1hcC0+R2V0U3RyaW5nKCkgPT0gRlhfQlNUUkMoIklkZW50aXR5IikpIHsNCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgICAgICAgICAgICAgICAgICBpZiAobV9wRm9udEZpbGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX2JDSURJc0dJRCA9IFRSVUU7DQorICAgICAgICAgICAgICAgICAgICB9DQorI2Vsc2UNCisgICAgICAgICAgICAgICAgICAgIG1fYkNJRElzR0lEID0gVFJVRTsNCisjZW5kaWYNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDaGVja0ZvbnRNZXRyaWNzKCk7DQorICAgIGlmIChJc1ZlcnRXcml0aW5nKCkpIHsNCisgICAgICAgIHBXaWR0aEFycmF5ID0gcENJREZvbnREaWN0LT5HZXRBcnJheShGWF9CU1RSQygiVzIiKSk7DQorICAgICAgICBpZiAocFdpZHRoQXJyYXkpIHsNCisgICAgICAgICAgICBMb2FkTWV0cmljc0FycmF5KHBXaWR0aEFycmF5LCBtX1ZlcnRNZXRyaWNzLCAzKTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfQXJyYXkqIHBEZWZhdWx0QXJyYXkgPSBwQ0lERm9udERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJEVzIiKSk7DQorICAgICAgICBpZiAocERlZmF1bHRBcnJheSkgew0KKyAgICAgICAgICAgIG1fRGVmYXVsdFZZID0gcERlZmF1bHRBcnJheS0+R2V0SW50ZWdlcigwKTsNCisgICAgICAgICAgICBtX0RlZmF1bHRXMSA9IHBEZWZhdWx0QXJyYXktPkdldEludGVnZXIoMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fRGVmYXVsdFZZID0gODgwOw0KKyAgICAgICAgICAgIG1fRGVmYXVsdFcxID0gLTEwMDA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0ZMT0FUIF9DSURUcmFuc2Zvcm1Ub0Zsb2F0KEZYX0JZVEUgY2gpDQorew0KKyAgICBpZiAoY2ggPCAxMjgpIHsNCisgICAgICAgIHJldHVybiBjaCAqIDEuMGYgLyAxMjc7DQorICAgIH0NCisgICAgcmV0dXJuICgtMjU1ICsgY2gpICogMS4wZiAvIDEyNzsNCit9DQordm9pZCBDUERGX0NJREZvbnQ6OkdldENoYXJCQm94KEZYX0RXT1JEIGNoYXJjb2RlLCBGWF9SRUNUJiByZWN0LCBpbnQgbGV2ZWwpDQorew0KKyAgICBpZiAoY2hhcmNvZGUgPCAyNTYgJiYgbV9DaGFyQkJveFtjaGFyY29kZV0uUmlnaHQgIT0gLTEpIHsNCisgICAgICAgIHJlY3QuYm90dG9tID0gbV9DaGFyQkJveFtjaGFyY29kZV0uQm90dG9tOw0KKyAgICAgICAgcmVjdC5sZWZ0ID0gbV9DaGFyQkJveFtjaGFyY29kZV0uTGVmdDsNCisgICAgICAgIHJlY3QucmlnaHQgPSBtX0NoYXJCQm94W2NoYXJjb2RlXS5SaWdodDsNCisgICAgICAgIHJlY3QudG9wID0gbV9DaGFyQkJveFtjaGFyY29kZV0uVG9wOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0JPT0wgYlZlcnQgPSBGQUxTRTsNCisgICAgaW50IGdseXBoX2luZGV4ID0gR2x5cGhGcm9tQ2hhckNvZGUoY2hhcmNvZGUsICZiVmVydCk7DQorICAgIGlmIChtX0ZvbnQubV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJlY3QgPSBGWF9SRUNUKDAsIDAsIDAsIDApOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmVjdC5sZWZ0ID0gcmVjdC5ib3R0b20gPSByZWN0LnJpZ2h0ID0gcmVjdC50b3AgPSAwOw0KKyAgICAgICAgRlhGVF9GYWNlIGZhY2UgPSBtX0ZvbnQubV9GYWNlOw0KKyAgICAgICAgaWYgKEZYRlRfSXNfRmFjZV9Ucmlja3koZmFjZSkpIHsNCisgICAgICAgICAgICBpbnQgZXJyID0gRlhGVF9Mb2FkX0dseXBoKGZhY2UsIGdseXBoX2luZGV4LCBGWEZUX0xPQURfSUdOT1JFX0dMT0JBTF9BRFZBTkNFX1dJRFRIKTsNCisgICAgICAgICAgICBpZiAoIWVycikgew0KKyAgICAgICAgICAgICAgICBGWEZUX0JCb3ggY2JveDsNCisgICAgICAgICAgICAgICAgRlhGVF9HbHlwaCBnbHlwaDsNCisgICAgICAgICAgICAgICAgZXJyID0gRlhGVF9HZXRfR2x5cGgoKChGWEZUX0ZhY2UpZmFjZSktPmdseXBoLCAmZ2x5cGgpOw0KKyAgICAgICAgICAgICAgICBpZiAoIWVycikgew0KKyAgICAgICAgICAgICAgICAgICAgRlhGVF9HbHlwaF9HZXRfQ0JveChnbHlwaCwgRlhGVF9HTFlQSF9CQk9YX1BJWEVMUywgJmNib3gpOw0KKyAgICAgICAgICAgICAgICAgICAgaW50IHBpeGVsX3NpemVfeCA9ICgoRlhGVF9GYWNlKWZhY2UpLT5zaXplLT5tZXRyaWNzLnhfcHBlbTsNCisgICAgICAgICAgICAgICAgICAgIGludAlwaXhlbF9zaXplX3kgPSAoKEZYRlRfRmFjZSlmYWNlKS0+c2l6ZS0+bWV0cmljcy55X3BwZW07DQorICAgICAgICAgICAgICAgICAgICBpZiAocGl4ZWxfc2l6ZV94ID09IDAgfHwgcGl4ZWxfc2l6ZV95ID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmxlZnQgPSBjYm94LnhNaW47DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5yaWdodCA9IGNib3gueE1heDsNCisgICAgICAgICAgICAgICAgICAgICAgICByZWN0LnRvcCA9IGNib3gueU1heDsNCisgICAgICAgICAgICAgICAgICAgICAgICByZWN0LmJvdHRvbSA9IGNib3gueU1pbjsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5sZWZ0ID0gY2JveC54TWluICogMTAwMCAvIHBpeGVsX3NpemVfeDsNCisgICAgICAgICAgICAgICAgICAgICAgICByZWN0LnJpZ2h0ID0gY2JveC54TWF4ICogMTAwMCAvIHBpeGVsX3NpemVfeDsNCisgICAgICAgICAgICAgICAgICAgICAgICByZWN0LnRvcCA9IGNib3gueU1heCAqIDEwMDAgLyBwaXhlbF9zaXplX3k7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBjYm94LnlNaW4gKiAxMDAwIC8gcGl4ZWxfc2l6ZV95Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlY3QudG9wID4gRlhGVF9HZXRfRmFjZV9Bc2NlbmRlcihmYWNlKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QudG9wID0gRlhGVF9HZXRfRmFjZV9Bc2NlbmRlcihmYWNlKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChyZWN0LmJvdHRvbSA8IEZYRlRfR2V0X0ZhY2VfRGVzY2VuZGVyKGZhY2UpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBGWEZUX0dldF9GYWNlX0Rlc2NlbmRlcihmYWNlKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIEZYRlRfRG9uZV9HbHlwaChnbHlwaCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGludCBlcnIgPSBGWEZUX0xvYWRfR2x5cGgoZmFjZSwgZ2x5cGhfaW5kZXgsIEZYRlRfTE9BRF9OT19TQ0FMRSk7DQorICAgICAgICAgICAgaWYgKGVyciA9PSAwKSB7DQorICAgICAgICAgICAgICAgIHJlY3QubGVmdCA9IFRUMlBERihGWEZUX0dldF9HbHlwaF9Ib3JpQmVhcmluZ1goZmFjZSksIGZhY2UpOw0KKyAgICAgICAgICAgICAgICByZWN0LnJpZ2h0ID0gVFQyUERGKEZYRlRfR2V0X0dseXBoX0hvcmlCZWFyaW5nWChmYWNlKSArIEZYRlRfR2V0X0dseXBoX1dpZHRoKGZhY2UpLCBmYWNlKTsNCisgICAgICAgICAgICAgICAgcmVjdC50b3AgPSBUVDJQREYoRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdZKGZhY2UpLCBmYWNlKTsNCisgICAgICAgICAgICAgICAgcmVjdC50b3AgKz0gcmVjdC50b3AgLyA2NDsNCisgICAgICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBUVDJQREYoRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdZKGZhY2UpIC0gRlhGVF9HZXRfR2x5cGhfSGVpZ2h0KGZhY2UpLCBmYWNlKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG1fcEZvbnRGaWxlID09IE5VTEwgJiYgbV9DaGFyc2V0ID09IENJRFNFVF9KQVBBTjEpIHsNCisgICAgICAgIEZYX1dPUkQgQ0lEID0gQ0lERnJvbUNoYXJDb2RlKGNoYXJjb2RlKTsNCisgICAgICAgIEZYX0xQQ0JZVEUgcFRyYW5zZm9ybSA9IEdldENJRFRyYW5zZm9ybShDSUQpOw0KKyAgICAgICAgaWYgKHBUcmFuc2Zvcm0gJiYgIWJWZXJ0KSB7DQorICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXgoX0NJRFRyYW5zZm9ybVRvRmxvYXQocFRyYW5zZm9ybVswXSksIF9DSURUcmFuc2Zvcm1Ub0Zsb2F0KHBUcmFuc2Zvcm1bMV0pLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9DSURUcmFuc2Zvcm1Ub0Zsb2F0KHBUcmFuc2Zvcm1bMl0pLCBfQ0lEVHJhbnNmb3JtVG9GbG9hdChwVHJhbnNmb3JtWzNdKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ0lEVHJhbnNmb3JtVG9GbG9hdChwVHJhbnNmb3JtWzRdKSAqIDEwMDAgLCBfQ0lEVHJhbnNmb3JtVG9GbG9hdChwVHJhbnNmb3JtWzVdKSAqIDEwMDApOw0KKyAgICAgICAgICAgIENGWF9GbG9hdFJlY3QgcmVjdF9mKHJlY3QpOw0KKyAgICAgICAgICAgIHJlY3RfZi5UcmFuc2Zvcm0oJm1hdHJpeCk7DQorICAgICAgICAgICAgcmVjdCA9IHJlY3RfZi5HZXRPdXR0ZXJSZWN0KCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGNoYXJjb2RlIDwgMjU2KSB7DQorICAgICAgICBtX0NoYXJCQm94W2NoYXJjb2RlXS5Cb3R0b20gPSAoc2hvcnQpcmVjdC5ib3R0b207DQorICAgICAgICBtX0NoYXJCQm94W2NoYXJjb2RlXS5MZWZ0ID0gKHNob3J0KXJlY3QubGVmdDsNCisgICAgICAgIG1fQ2hhckJCb3hbY2hhcmNvZGVdLlJpZ2h0ID0gKHNob3J0KXJlY3QucmlnaHQ7DQorICAgICAgICBtX0NoYXJCQm94W2NoYXJjb2RlXS5Ub3AgPSAoc2hvcnQpcmVjdC50b3A7DQorICAgIH0NCit9DQoraW50IENQREZfQ0lERm9udDo6R2V0Q2hhcldpZHRoRihGWF9EV09SRCBjaGFyY29kZSwgaW50IGxldmVsKQ0KK3sNCisgICAgaWYgKG1fcEFuc2lXaWR0aHMgJiYgY2hhcmNvZGUgPCAweDgwKSB7DQorICAgICAgICByZXR1cm4gbV9wQW5zaVdpZHRoc1tjaGFyY29kZV07DQorICAgIH0NCisgICAgRlhfV09SRCBjaWQgPSBDSURGcm9tQ2hhckNvZGUoY2hhcmNvZGUpOw0KKyAgICBpbnQgc2l6ZSA9IG1fV2lkdGhMaXN0LkdldFNpemUoKTsNCisgICAgRlhfRFdPUkQqIGxpc3QgPSBtX1dpZHRoTGlzdC5HZXREYXRhKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAzKSB7DQorICAgICAgICBpZiAoY2lkID49IGxpc3RbaV0gJiYgY2lkIDw9IGxpc3RbaSArIDFdKSB7DQorICAgICAgICAgICAgcmV0dXJuIChpbnQpbGlzdFtpICsgMl07DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIG1fRGVmYXVsdFdpZHRoOw0KK30NCitzaG9ydCBDUERGX0NJREZvbnQ6OkdldFZlcnRXaWR0aChGWF9XT1JEIENJRCkgY29uc3QNCit7DQorICAgIEZYX0RXT1JEIHZlcnRzaXplID0gbV9WZXJ0TWV0cmljcy5HZXRTaXplKCkgLyA1Ow0KKyAgICBpZiAodmVydHNpemUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIG1fRGVmYXVsdFcxOw0KKyAgICB9DQorICAgIGNvbnN0IEZYX0RXT1JEKiBwVGFibGUgPSBtX1ZlcnRNZXRyaWNzLkdldERhdGEoKTsNCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHZlcnRzaXplOyBpICsrKQ0KKyAgICAgICAgaWYgKHBUYWJsZVtpICogNV0gPD0gQ0lEICYmIHBUYWJsZVtpICogNSArIDFdID49IENJRCkgew0KKyAgICAgICAgICAgIHJldHVybiAoc2hvcnQpKGludClwVGFibGVbaSAqIDUgKyAyXTsNCisgICAgICAgIH0NCisgICAgcmV0dXJuIG1fRGVmYXVsdFcxOw0KK30NCit2b2lkIENQREZfQ0lERm9udDo6R2V0VmVydE9yaWdpbihGWF9XT1JEIENJRCwgc2hvcnQmIHZ4LCBzaG9ydCAmdnkpIGNvbnN0DQorew0KKyAgICBGWF9EV09SRCB2ZXJ0c2l6ZSA9IG1fVmVydE1ldHJpY3MuR2V0U2l6ZSgpIC8gNTsNCisgICAgaWYgKHZlcnRzaXplKSB7DQorICAgICAgICBjb25zdCBGWF9EV09SRCogcFRhYmxlID0gbV9WZXJ0TWV0cmljcy5HZXREYXRhKCk7DQorICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgdmVydHNpemU7IGkgKyspDQorICAgICAgICAgICAgaWYgKHBUYWJsZVtpICogNV0gPD0gQ0lEICYmIHBUYWJsZVtpICogNSArIDFdID49IENJRCkgew0KKyAgICAgICAgICAgICAgICB2eCA9IChzaG9ydCkoaW50KXBUYWJsZVtpICogNSArIDNdOw0KKyAgICAgICAgICAgICAgICB2eSA9IChzaG9ydCkoaW50KXBUYWJsZVtpICogNSArIDRdOw0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3V2lkdGggPSBtX0RlZmF1bHRXaWR0aDsNCisgICAgaW50IHNpemUgPSBtX1dpZHRoTGlzdC5HZXRTaXplKCk7DQorICAgIGNvbnN0IEZYX0RXT1JEKiBsaXN0ID0gbV9XaWR0aExpc3QuR2V0RGF0YSgpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKz0gMykgew0KKyAgICAgICAgaWYgKENJRCA+PSBsaXN0W2ldICYmIENJRCA8PSBsaXN0W2kgKyAxXSkgew0KKyAgICAgICAgICAgIGR3V2lkdGggPSAoRlhfV09SRClsaXN0W2kgKyAyXTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB2eCA9IChzaG9ydClkd1dpZHRoIC8gMjsNCisgICAgdnkgPSAoc2hvcnQpbV9EZWZhdWx0Vlk7DQorfQ0KK2ludAlDUERGX0NJREZvbnQ6OkdldEdseXBoSW5kZXgoRlhfRFdPUkQgdW5pY29kZSwgRlhfQk9PTCAqcFZlcnRHbHlwaCkNCit7DQorICAgIGlmIChwVmVydEdseXBoKSB7DQorICAgICAgICAqcFZlcnRHbHlwaCA9IEZBTFNFOw0KKyAgICB9DQorICAgIGludCBpbmRleCA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgdW5pY29kZSApOw0KKyAgICBpZiAodW5pY29kZSA9PSAweDI1MDIpIHsNCisgICAgICAgIHJldHVybiBpbmRleDsNCisgICAgfQ0KKyAgICBpZiAoaW5kZXggJiYgSXNWZXJ0V3JpdGluZygpKSB7DQorICAgICAgICBpZiAobV9wVFRHU1VCVGFibGUpIHsNCisgICAgICAgICAgICBUVF91aW50MzJfdCB2aW5kZXggPSAwOw0KKyAgICAgICAgICAgIG1fcFRUR1NVQlRhYmxlLT5HZXRWZXJ0aWNhbEdseXBoKGluZGV4LCAmdmluZGV4KTsNCisgICAgICAgICAgICBpZiAodmluZGV4KSB7DQorICAgICAgICAgICAgICAgIGluZGV4ID0gdmluZGV4Ow0KKyAgICAgICAgICAgICAgICBpZiAocFZlcnRHbHlwaCkgew0KKyAgICAgICAgICAgICAgICAgICAgKnBWZXJ0R2x5cGggPSBUUlVFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBpbmRleDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChOVUxMID09IG1fRm9udC5tX3BHc3ViRGF0YSkgew0KKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gMDsNCisgICAgICAgICAgICBpbnQgZXJyb3IgPSBGWEZUX0xvYWRfU2ZudF9UYWJsZSggbV9Gb250Lm1fRmFjZSwgRlRfTUFLRV9UQUcoJ0cnLCAnUycsICdVJywgJ0InKSwgMCwgTlVMTCwgJmxlbmd0aCk7DQorICAgICAgICAgICAgaWYgKCFlcnJvcikgew0KKyAgICAgICAgICAgICAgICBtX0ZvbnQubV9wR3N1YkRhdGEgPSAodW5zaWduZWQgY2hhciopRlhfQWxsb2MoRlhfQllURSwgbGVuZ3RoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpbnQgZXJyb3IgPSBGWEZUX0xvYWRfU2ZudF9UYWJsZSggbV9Gb250Lm1fRmFjZSwgRlRfTUFLRV9UQUcoJ0cnLCAnUycsICdVJywgJ0InKSwgMCwgbV9Gb250Lm1fcEdzdWJEYXRhLCBOVUxMKTsNCisgICAgICAgIGlmICghZXJyb3IgJiYgbV9Gb250Lm1fcEdzdWJEYXRhKSB7DQorICAgICAgICAgICAgbV9wVFRHU1VCVGFibGUgPSBGWF9ORVcgQ0ZYX0NUVEdTVUJUYWJsZTsNCisgICAgICAgICAgICBtX3BUVEdTVUJUYWJsZS0+TG9hZEdTVUJUYWJsZSgoRlRfQnl0ZXMpbV9Gb250Lm1fcEdzdWJEYXRhKTsNCisgICAgICAgICAgICBUVF91aW50MzJfdCB2aW5kZXggPSAwOw0KKyAgICAgICAgICAgIG1fcFRUR1NVQlRhYmxlLT5HZXRWZXJ0aWNhbEdseXBoKGluZGV4LCAmdmluZGV4KTsNCisgICAgICAgICAgICBpZiAodmluZGV4KSB7DQorICAgICAgICAgICAgICAgIGluZGV4ID0gdmluZGV4Ow0KKyAgICAgICAgICAgICAgICBpZiAocFZlcnRHbHlwaCkgew0KKyAgICAgICAgICAgICAgICAgICAgKnBWZXJ0R2x5cGggPSBUUlVFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGluZGV4Ow0KKyAgICB9DQorICAgIGlmIChwVmVydEdseXBoKSB7DQorICAgICAgICAqcFZlcnRHbHlwaCA9IEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBpbmRleDsNCit9DQoraW50IENQREZfQ0lERm9udDo6R2x5cGhGcm9tQ2hhckNvZGUoRlhfRFdPUkQgY2hhcmNvZGUsIEZYX0JPT0wgKnBWZXJ0R2x5cGgpDQorew0KKyAgICBpZiAocFZlcnRHbHlwaCkgew0KKyAgICAgICAgKnBWZXJ0R2x5cGggPSBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9wRm9udEZpbGUgPT0gTlVMTCAmJiBtX3BDSURUb0dJRE1hcCA9PSBOVUxMKSB7DQorICAgICAgICBGWF9XT1JEIGNpZCA9IENJREZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorICAgICAgICBGWF9XQ0hBUiB1bmljb2RlID0gMDsNCisgICAgICAgIGlmIChtX2JDSURJc0dJRCkgew0KKyNpZiBfRlhNX1BMQVRGT1JNXyAhPSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICAgICAgICAgIHJldHVybiBjaWQ7DQorI2Vsc2UNCisgICAgICAgICAgICBpZiAobV9GbGFncyAmIFBERkZPTlRfU1lNQk9MSUMpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGNpZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgdW5pX3N0ciA9IFVuaWNvZGVGcm9tQ2hhckNvZGUoY2hhcmNvZGUpOw0KKyAgICAgICAgICAgIGlmICh1bmlfc3RyLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gY2lkOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB1bmljb2RlID0gdW5pX3N0ci5HZXRBdCgwKTsNCisjZW5kaWYNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKGNpZCAmJiBtX3BDSUQyVW5pY29kZU1hcCAmJiBtX3BDSUQyVW5pY29kZU1hcC0+SXNMb2FkZWQoKSkgew0KKyAgICAgICAgICAgICAgICB1bmljb2RlID0gbV9wQ0lEMlVuaWNvZGVNYXAtPlVuaWNvZGVGcm9tQ0lEKGNpZCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICh1bmljb2RlID09IDApIHsNCisgICAgICAgICAgICAgICAgdW5pY29kZSA9IF9Vbmljb2RlRnJvbUNoYXJDb2RlKGNoYXJjb2RlKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHVuaWNvZGUgPT0gMCAmJiAhKG1fRmxhZ3MgJiBQREZGT05UX1NZTUJPTElDKSkgew0KKyAgICAgICAgICAgICAgICB1bmljb2RlID0gVW5pY29kZUZyb21DaGFyQ29kZShjaGFyY29kZSkuR2V0QXQoMCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHVuaWNvZGUgPT0gMCkgew0KKyAgICAgICAgICAgIGlmICghbV9iQWRvYmVDb3VyaWVyU3RkKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBjaGFyY29kZSA9PSAwID8gLTEgOiAoaW50KWNoYXJjb2RlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaGFyY29kZSArPSAzMTsNCisgICAgICAgICAgICBpbnQgaW5kZXggPSAwLCBpQmFzZUVuY29kaW5nOw0KKyAgICAgICAgICAgIEZYX0JPT0wgYk1TVW5pY29kZSA9IEZUX1VzZVRUQ2hhcm1hcChtX0ZvbnQubV9GYWNlLCAzLCAxKTsNCisgICAgICAgICAgICBGWF9CT09MIGJNYWNSb21hbiA9IEZBTFNFOw0KKyAgICAgICAgICAgIGlmICghYk1TVW5pY29kZSkgew0KKyAgICAgICAgICAgICAgICBiTWFjUm9tYW4gPSBGVF9Vc2VUVENoYXJtYXAobV9Gb250Lm1fRmFjZSwgMSwgMCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlCYXNlRW5jb2RpbmcgPSBQREZGT05UX0VOQ09ESU5HX1NUQU5EQVJEOw0KKyAgICAgICAgICAgIGlmIChiTVNVbmljb2RlKSB7DQorICAgICAgICAgICAgICAgIGlCYXNlRW5jb2RpbmcgPSBQREZGT05UX0VOQ09ESU5HX1dJTkFOU0k7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChiTWFjUm9tYW4pIHsNCisgICAgICAgICAgICAgICAgaUJhc2VFbmNvZGluZyA9IFBERkZPTlRfRU5DT0RJTkdfTUFDUk9NQU47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0xQQ1NUUiBuYW1lID0gR2V0QWRvYmVDaGFyTmFtZShpQmFzZUVuY29kaW5nLCBOVUxMLCBjaGFyY29kZSk7DQorICAgICAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gY2hhcmNvZGUgPT0gMCA/IC0xIDogKGludCljaGFyY29kZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfV09SRCB1bmljb2RlID0gUERGX1VuaWNvZGVGcm9tQWRvYmVOYW1lKG5hbWUpOw0KKyAgICAgICAgICAgIGlmICh1bmljb2RlKSB7DQorICAgICAgICAgICAgICAgIGlmIChiTVNVbmljb2RlKSB7DQorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgdW5pY29kZSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYk1hY1JvbWFuKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBtYWNjb2RlID0gRlRfQ2hhckNvZGVGcm9tVW5pY29kZShGWEZUX0VOQ09ESU5HX0FQUExFX1JPTUFOLCB1bmljb2RlKTsNCisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gIW1hY2NvZGUgPyBGWEZUX0dldF9OYW1lX0luZGV4KG1fRm9udC5tX0ZhY2UsIChjaGFyICopbmFtZSkgOiBGWEZUX0dldF9DaGFyX0luZGV4KG1fRm9udC5tX0ZhY2UsIG1hY2NvZGUpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZYRlRfR2V0X0NoYXJfSW5kZXgobV9Gb250Lm1fRmFjZSwgdW5pY29kZSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICByZXR1cm4gY2hhcmNvZGUgPT0gMCA/IC0xIDogKGludCljaGFyY29kZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGluZGV4ID09IDAgfHwgaW5kZXggPT0gMHhmZmZmKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBjaGFyY29kZSA9PSAwID8gLTEgOiAoaW50KWNoYXJjb2RlOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9DaGFyc2V0ID09IENJRFNFVF9KQVBBTjEpIHsNCisgICAgICAgICAgICBpZiAodW5pY29kZSA9PSAnXFwnKSB7DQorICAgICAgICAgICAgICAgIHVuaWNvZGUgPSAnLyc7DQorICAgICAgICAgICAgfQ0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykgJiYgX0ZYTV9QTEFURk9STV8gIT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgICAgICAgICBlbHNlIGlmICh1bmljb2RlID09IDB4YTUpIHsNCisgICAgICAgICAgICAgICAgdW5pY29kZSA9IDB4NWM7DQorICAgICAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fRm9udC5tX0ZhY2UgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IGVyciA9IEZYRlRfU2VsZWN0X0NoYXJtYXAobV9Gb250Lm1fRmFjZSwgRlhGVF9FTkNPRElOR19VTklDT0RFKTsNCisgICAgICAgIGlmIChlcnIgIT0gMCkgew0KKyAgICAgICAgICAgIGludCBpOw0KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBGWEZUX0dldF9GYWNlX0NoYXJtYXBDb3VudChtX0ZvbnQubV9GYWNlKTsgaSArKykgew0KKyAgICAgICAgICAgICAgICBGWF9EV09SRCByZXQgPSBGVF9DaGFyQ29kZUZyb21Vbmljb2RlKEZYRlRfR2V0X0NoYXJtYXBfRW5jb2RpbmcoRlhGVF9HZXRfRmFjZV9DaGFybWFwcyhtX0ZvbnQubV9GYWNlKVtpXSksIChGWF9XQ0hBUiljaGFyY29kZSk7DQorICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhGVF9TZXRfQ2hhcm1hcChtX0ZvbnQubV9GYWNlLCBGWEZUX0dldF9GYWNlX0NoYXJtYXBzKG1fRm9udC5tX0ZhY2UpW2ldKTsNCisgICAgICAgICAgICAgICAgdW5pY29kZSA9IChGWF9XQ0hBUilyZXQ7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaSA9PSBGWEZUX0dldF9GYWNlX0NoYXJtYXBDb3VudChtX0ZvbnQubV9GYWNlKSAmJiBpKSB7DQorICAgICAgICAgICAgICAgIEZYRlRfU2V0X0NoYXJtYXAobV9Gb250Lm1fRmFjZSwgRlhGVF9HZXRfRmFjZV9DaGFybWFwcyhtX0ZvbnQubV9GYWNlKVswXSk7DQorICAgICAgICAgICAgICAgIHVuaWNvZGUgPSAoRlhfV0NIQVIpY2hhcmNvZGU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcChtX0ZvbnQubV9GYWNlKSkgew0KKyAgICAgICAgICAgIGludCBpbmRleCA9IEdldEdseXBoSW5kZXgodW5pY29kZSwgcFZlcnRHbHlwaCk7DQorICAgICAgICAgICAgaWYgKGluZGV4ID09IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gaW5kZXg7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gdW5pY29kZSA7DQorICAgIH0NCisgICAgaWYgKG1fRm9udC5tX0ZhY2UgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIEZYX1dPUkQgY2lkID0gQ0lERnJvbUNoYXJDb2RlKGNoYXJjb2RlKTsNCisgICAgaWYgKG1fYlR5cGUxKSB7DQorICAgICAgICBpZiAoTlVMTCA9PSBtX3BDSURUb0dJRE1hcCkgew0KKyAgICAgICAgICAgIHJldHVybiBjaWQ7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAobV9wQ0lEVG9HSURNYXAgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGlmIChtX3BGb250RmlsZSAmJiBtX3BDTWFwLT5tX3BNYXBwaW5nID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGNpZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fcENNYXAtPm1fQ29kaW5nID09IENJRENPRElOR19VTktOT1dOIHx8IEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcChtX0ZvbnQubV9GYWNlKSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBjaWQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChGWEZUX0dldF9DaGFybWFwX0VuY29kaW5nKEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcChtX0ZvbnQubV9GYWNlKSkgPT0gRlhGVF9FTkNPRElOR19VTklDT0RFKSB7DQorICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHVuaWNvZGVfc3RyID0gVW5pY29kZUZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3N0ci5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBjaGFyY29kZSA9IHVuaWNvZGVfc3RyLkdldEF0KDApOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gR2V0R2x5cGhJbmRleChjaGFyY29kZSwgcFZlcnRHbHlwaCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfRFdPUkQgYnl0ZV9wb3MgPSBjaWQgKiAyOw0KKyAgICBpZiAoYnl0ZV9wb3MgKyAyID4gbV9wQ0lEVG9HSURNYXAtPkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIEZYX0xQQ0JZVEUgcGRhdGEgPSBtX3BDSURUb0dJRE1hcC0+R2V0RGF0YSgpICsgYnl0ZV9wb3M7DQorICAgIHJldHVybiBwZGF0YVswXSAqIDI1NiArIHBkYXRhWzFdOw0KK30NCitGWF9EV09SRCBDUERGX0NJREZvbnQ6OkdldE5leHRDaGFyKEZYX0xQQ1NUUiBwU3RyaW5nLCBpbnQmIG9mZnNldCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX3BDTWFwLT5HZXROZXh0Q2hhcihwU3RyaW5nLCBvZmZzZXQpOw0KK30NCitpbnQgQ1BERl9DSURGb250OjpHZXRDaGFyU2l6ZShGWF9EV09SRCBjaGFyY29kZSkgY29uc3QNCit7DQorICAgIHJldHVybiBtX3BDTWFwLT5HZXRDaGFyU2l6ZShjaGFyY29kZSk7DQorfQ0KK2ludCBDUERGX0NJREZvbnQ6OkNvdW50Q2hhcihGWF9MUENTVFIgcFN0cmluZywgaW50IHNpemUpIGNvbnN0DQorew0KKyAgICByZXR1cm4gbV9wQ01hcC0+Q291bnRDaGFyKHBTdHJpbmcsIHNpemUpOw0KK30NCitpbnQgQ1BERl9DSURGb250OjpBcHBlbmRDaGFyKEZYX0xQU1RSIHN0ciwgRlhfRFdPUkQgY2hhcmNvZGUpIGNvbnN0DQorew0KKyAgICByZXR1cm4gbV9wQ01hcC0+QXBwZW5kQ2hhcihzdHIsIGNoYXJjb2RlKTsNCit9DQorRlhfQk9PTCBDUERGX0NJREZvbnQ6OklzVW5pY29kZUNvbXBhdGlibGUoKSBjb25zdA0KK3sNCisgICAgaWYgKCFtX3BDTWFwLT5Jc0xvYWRlZCgpIHx8IG1fcENJRDJVbmljb2RlTWFwID09IE5VTEwgfHwgIW1fcENJRDJVbmljb2RlTWFwLT5Jc0xvYWRlZCgpKSB7DQorICAgICAgICByZXR1cm4gbV9wQ01hcC0+bV9Db2RpbmcgIT0gQ0lEQ09ESU5HX1VOS05PV047DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9DSURGb250OjpJc0ZvbnRTdHlsZUZyb21DaGFyQ29kZShGWF9EV09SRCBjaGFyY29kZSkgY29uc3QNCit7DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENQREZfQ0lERm9udDo6TG9hZFN1YnN0Rm9udCgpDQorew0KKyAgICBtX0ZvbnQuTG9hZFN1YnN0KG1fQmFzZUZvbnQsICFtX2JUeXBlMSwgbV9GbGFncywgbV9TdGVtViAqIDUsIG1fSXRhbGljQW5nbGUsIGdfQ2hhcnNldENQc1ttX0NoYXJzZXRdLCBJc1ZlcnRXcml0aW5nKCkpOw0KK30NCit2b2lkIENQREZfQ0lERm9udDo6TG9hZE1ldHJpY3NBcnJheShDUERGX0FycmF5KiBwQXJyYXksIENGWF9EV29yZEFycmF5JiByZXN1bHQsIGludCBuRWxlbWVudHMpDQorew0KKyAgICBpbnQgd2lkdGhfc3RhdHVzID0gMDsNCisgICAgaW50IGlDdXJFbGVtZW50ID0gMDsNCisgICAgaW50IGZpcnN0X2NvZGUgPSAwLCBsYXN0X2NvZGU7DQorICAgIEZYX0RXT1JEIGNvdW50ID0gcEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gcEFycmF5LT5HZXRFbGVtZW50VmFsdWUoaSk7DQorICAgICAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAocE9iai0+R2V0VHlwZSgpID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgICAgIGlmICh3aWR0aF9zdGF0dXMgIT0gMSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwT2JqOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIGNvdW50ID0gcEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgaiA9IDA7IGogPCBjb3VudDsgaiArPSBuRWxlbWVudHMpIHsNCisgICAgICAgICAgICAgICAgcmVzdWx0LkFkZChmaXJzdF9jb2RlKTsNCisgICAgICAgICAgICAgICAgcmVzdWx0LkFkZChmaXJzdF9jb2RlKTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBuRWxlbWVudHM7IGsgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5BZGQocEFycmF5LT5HZXRJbnRlZ2VyKGogKyBrKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZmlyc3RfY29kZSArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgd2lkdGhfc3RhdHVzID0gMDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKHdpZHRoX3N0YXR1cyA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGZpcnN0X2NvZGUgPSBwT2JqLT5HZXRJbnRlZ2VyKCk7DQorICAgICAgICAgICAgICAgIHdpZHRoX3N0YXR1cyA9IDE7DQorICAgICAgICAgICAgfSBlbHNlIGlmICh3aWR0aF9zdGF0dXMgPT0gMSkgew0KKyAgICAgICAgICAgICAgICBsYXN0X2NvZGUgPSBwT2JqLT5HZXRJbnRlZ2VyKCk7DQorICAgICAgICAgICAgICAgIHdpZHRoX3N0YXR1cyA9IDI7DQorICAgICAgICAgICAgICAgIGlDdXJFbGVtZW50ID0gMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAoIWlDdXJFbGVtZW50KSB7DQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuQWRkKGZpcnN0X2NvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkFkZChsYXN0X2NvZGUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJlc3VsdC5BZGQocE9iai0+R2V0SW50ZWdlcigpKTsNCisgICAgICAgICAgICAgICAgaUN1ckVsZW1lbnQgKys7DQorICAgICAgICAgICAgICAgIGlmIChpQ3VyRWxlbWVudCA9PSBuRWxlbWVudHMpIHsNCisgICAgICAgICAgICAgICAgICAgIHdpZHRoX3N0YXR1cyA9IDA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0NJREZvbnQ6OkxvYWRHQjIzMTIoKQ0KK3sNCisgICAgbV9CYXNlRm9udCA9IG1fcEZvbnREaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIkJhc2VGb250IikpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250RGVzYyA9IG1fcEZvbnREaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJGb250RGVzY3JpcHRvciIpKTsNCisgICAgaWYgKHBGb250RGVzYykgew0KKyAgICAgICAgTG9hZEZvbnREZXNjcmlwdG9yKHBGb250RGVzYyk7DQorICAgIH0NCisgICAgbV9DaGFyc2V0ID0gQ0lEU0VUX0dCMTsNCisgICAgbV9iVHlwZTEgPSBGQUxTRTsNCisgICAgbV9wQ01hcCA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UGFnZU1vZHVsZSgpLT5HZXRGb250R2xvYmFscygpLT5tX0NNYXBNYW5hZ2VyLkdldFByZWRlZmluZWRDTWFwKA0KKyAgICAgICAgICAgICAgICAgIEZYX0JTVFJDKCJHQkstRVVDLUgiKSwgRkFMU0UpOw0KKyAgICBtX3BDSUQyVW5pY29kZU1hcCA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UGFnZU1vZHVsZSgpLT5HZXRGb250R2xvYmFscygpLT5tX0NNYXBNYW5hZ2VyLkdldENJRDJVbmljb2RlTWFwKG1fQ2hhcnNldCwgRkFMU0UpOw0KKyAgICBpZiAoIUlzRW1iZWRkZWQoKSkgew0KKyAgICAgICAgTG9hZFN1YnN0Rm9udCgpOw0KKyAgICB9DQorICAgIENoZWNrRm9udE1ldHJpY3MoKTsNCisgICAgbV9EZWZhdWx0V2lkdGggPSAxMDAwOw0KKyAgICBtX3BBbnNpV2lkdGhzID0gRlhfQWxsb2MoRlhfV09SRCwgMTI4KTsNCisgICAgRlhTWVNfbWVtc2V0MzIobV9wQW5zaVdpZHRocywgMCwgMTI4ICogc2l6ZW9mKEZYX1dPUkQpKTsNCisgICAgZm9yIChpbnQgaSA9IDMyOyBpIDwgMTI3OyBpICsrKSB7DQorICAgICAgICBtX3BBbnNpV2lkdGhzW2ldID0gNTAwOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitjb25zdCBzdHJ1Y3QgX0NJRFRyYW5zZm9ybSB7DQorICAgIEZYX1dPUkQJCUNJRDsNCisgICAgRlhfQllURQkJYSwgYiwgYywgZCwgZSwgZjsNCit9DQorSmFwYW4xX1ZlcnRDSURzW10gPSB7DQorICAgIHs5NywgMTI5LCAwLCAwLCAxMjcsIDU1LCAwfSwNCisgICAgezc4ODcsIDEyNywgMCwgMCwgMTI3LCA3NiwgODl9LA0KKyAgICB7Nzg4OCwgMTI3LCAwLCAwLCAxMjcsIDc5LCA5NH0sDQorICAgIHs3ODg5LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODkwLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODkxLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODkyLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODkzLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODk0LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODk1LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODk2LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODk3LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODk4LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3ODk5LCAwLCAxMjksIDEyNywgMCwgMTcsIDEwNH0sDQorICAgIHs3OTAwLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTAxLCAwLCAxMjksIDEyNywgMCwgMTcsIDEwNH0sDQorICAgIHs3OTAyLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTAzLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTA0LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTA1LCAwLCAxMjksIDEyNywgMCwgMTcsIDExNH0sDQorICAgIHs3OTA2LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTA3LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTA4LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTA5LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTEwLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTExLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTEyLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTEzLCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTE0LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTE1LCAwLCAxMjksIDEyNywgMCwgMTcsIDExNH0sDQorICAgIHs3OTE2LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTE3LCAwLCAxMjksIDEyNywgMCwgMTcsIDEyN30sDQorICAgIHs3OTE4LCAxMjcsIDAsIDAsIDEyNywgMTgsIDI1fSwNCisgICAgezc5MTksIDEyNywgMCwgMCwgMTI3LCAxOCwgMjV9LA0KKyAgICB7NzkyMCwgMTI3LCAwLCAwLCAxMjcsIDE4LCAyNX0sDQorICAgIHs3OTIxLCAxMjcsIDAsIDAsIDEyNywgMTgsIDI1fSwNCisgICAgezc5MjIsIDEyNywgMCwgMCwgMTI3LCAxOCwgMjV9LA0KKyAgICB7NzkyMywgMTI3LCAwLCAwLCAxMjcsIDE4LCAyNX0sDQorICAgIHs3OTI0LCAxMjcsIDAsIDAsIDEyNywgMTgsIDI1fSwNCisgICAgezc5MjUsIDEyNywgMCwgMCwgMTI3LCAxOCwgMjV9LA0KKyAgICB7NzkyNiwgMTI3LCAwLCAwLCAxMjcsIDE4LCAyNX0sDQorICAgIHs3OTI3LCAxMjcsIDAsIDAsIDEyNywgMTgsIDI1fSwNCisgICAgezc5MjgsIDEyNywgMCwgMCwgMTI3LCAxOCwgMjV9LA0KKyAgICB7NzkyOSwgMTI3LCAwLCAwLCAxMjcsIDE4LCAyNX0sDQorICAgIHs3OTMwLCAxMjcsIDAsIDAsIDEyNywgMTgsIDI1fSwNCisgICAgezc5MzEsIDEyNywgMCwgMCwgMTI3LCAxOCwgMjV9LA0KKyAgICB7NzkzMiwgMTI3LCAwLCAwLCAxMjcsIDE4LCAyNX0sDQorICAgIHs3OTMzLCAxMjcsIDAsIDAsIDEyNywgMTgsIDI1fSwNCisgICAgezc5MzQsIDEyNywgMCwgMCwgMTI3LCAxOCwgMjV9LA0KKyAgICB7NzkzNSwgMTI3LCAwLCAwLCAxMjcsIDE4LCAyNX0sDQorICAgIHs3OTM2LCAxMjcsIDAsIDAsIDEyNywgMTgsIDI1fSwNCisgICAgezc5MzcsIDEyNywgMCwgMCwgMTI3LCAxOCwgMjV9LA0KKyAgICB7NzkzOCwgMTI3LCAwLCAwLCAxMjcsIDE4LCAyNX0sDQorICAgIHs3OTM5LCAxMjcsIDAsIDAsIDEyNywgMTgsIDI1fSwNCisgICAgezg3MjAsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3MjEsIDAsIDEyOSwgMTI3LCAwLCAxMywgMTI3fSwNCisgICAgezg3MjIsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3MjMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3MjQsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3MjUsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3MjYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3MjcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3MjgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg3MjksIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg3MzAsIDAsIDEyOSwgMTI3LCAwLCAzOCwgMTA4fSwNCisgICAgezg3MzEsIDAsIDEyOSwgMTI3LCAwLCAxMywgMTA4fSwNCisgICAgezg3MzIsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3MzMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3MzQsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3MzUsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3MzYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3MzcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3MzgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3MzksIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NDAsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NDEsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NDIsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NDMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NDQsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NDUsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NDYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg3NDcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg3NDgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NDksIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTAsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTEsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTIsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTQsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTUsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NTksIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjAsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjEsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjIsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjQsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjUsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NjksIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzAsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzEsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzIsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzQsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzUsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg3NzksIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg3ODAsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3ODEsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg3ODIsIDAsIDEyOSwgMTI3LCAwLCAxMywgMTE0fSwNCisgICAgezg3ODMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3ODQsIDAsIDEyOSwgMTI3LCAwLCAxMywgMTE0fSwNCisgICAgezg3ODUsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3ODYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3ODcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3ODgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3ODksIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTAsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTEsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTIsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTQsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTUsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg3OTksIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDAsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDEsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDIsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDQsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDUsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MDksIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MTAsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTA4fSwNCisgICAgezg4MTEsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg4MTIsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTAyfSwNCisgICAgezg4MTMsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg4MTQsIDAsIDEyOSwgMTI3LCAwLCA3NiwgMTAyfSwNCisgICAgezg4MTUsIDAsIDEyOSwgMTI3LCAwLCAxMywgMTIxfSwNCisgICAgezg4MTYsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg4MTcsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTI3fSwNCisgICAgezg4MTgsIDAsIDEyOSwgMTI3LCAwLCAxOSwgMTE0fSwNCisgICAgezg4MTksIDAsIDEyOSwgMTI3LCAwLCAyMTgsIDEwOH0sDQorfTsNCitGWF9MUENCWVRFIENQREZfQ0lERm9udDo6R2V0Q0lEVHJhbnNmb3JtKEZYX1dPUkQgQ0lEKSBjb25zdA0KK3sNCisgICAgaWYgKG1fQ2hhcnNldCAhPSBDSURTRVRfSkFQQU4xIHx8IG1fcEZvbnRGaWxlICE9IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGludCBiZWdpbiA9IDA7DQorICAgIGludCBlbmQgPSBzaXplb2YgSmFwYW4xX1ZlcnRDSURzIC8gc2l6ZW9mKHN0cnVjdCBfQ0lEVHJhbnNmb3JtKSAtIDE7DQorICAgIHdoaWxlIChiZWdpbiA8PSBlbmQpIHsNCisgICAgICAgIGludCBtaWRkbGUgPSAoYmVnaW4gKyBlbmQpIC8gMjsNCisgICAgICAgIEZYX1dPUkQgbWlkZGxlY29kZSA9IEphcGFuMV9WZXJ0Q0lEc1ttaWRkbGVdLkNJRDsNCisgICAgICAgIGlmIChtaWRkbGVjb2RlID4gQ0lEKSB7DQorICAgICAgICAgICAgZW5kID0gbWlkZGxlIC0gMTsNCisgICAgICAgIH0gZWxzZSBpZiAobWlkZGxlY29kZSA8IENJRCkgew0KKyAgICAgICAgICAgIGJlZ2luID0gbWlkZGxlICsgMTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuICZKYXBhbjFfVmVydENJRHNbbWlkZGxlXS5hOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZm9udC9mcGRmX2ZvbnRfdXRpbGl0eS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZm9udC9mcGRmX2ZvbnRfdXRpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxMGZlOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9mb250L2ZwZGZfZm9udF91dGlsaXR5LmNwcApAQCAtMCwwICsxLDk3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3Jlc291cmNlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjb2RlYy9meF9jb2RlYy5oIg0KKyNpbmNsdWRlICJmb250X2ludC5oIg0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIEZYU1lTX0ZJTEUqCW1fcEZpbGU7DQorICAgIGludAkJbV9uRmlsZXM7DQorICAgIGludAkJbV9JbmRleFNpemU7DQorICAgIGludAkJbV9JbmRleE9mZnNldDsNCit9IEZYRkNfUEFDS0FHRTsNCitGWF9MUFZPSUQgRlhGQ19Mb2FkUGFja2FnZShGWF9MUENTVFIgbmFtZSkNCit7DQorICAgIEZYU1lTX0ZJTEUqIGZpbGUgPSBGWFNZU19mb3BlbihuYW1lLCAoRlhfTFBDU1RSKSJyYiIpOw0KKyAgICBpZiAoZmlsZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9CWVRFIGJ1ZlsyNTZdOw0KKyAgICBzaXplX3QgcmVhZCA9IEZYU1lTX2ZyZWFkKGJ1ZiwgMSwgMjAsIGZpbGUpOw0KKyAgICBpZiAoKihGWF9EV09SRCopYnVmICE9IDB4NDM0NjU4NDYpIHsNCisgICAgICAgIEZYU1lTX2ZjbG9zZShmaWxlKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYRkNfUEFDS0FHRSogcFBhY2thZ2UgPSBGWF9BbGxvYyhGWEZDX1BBQ0tBR0UsIDEpOw0KKyAgICBwUGFja2FnZS0+bV9wRmlsZSA9IGZpbGU7DQorICAgIHBQYWNrYWdlLT5tX25GaWxlcyA9ICooaW50KikoYnVmICsgOCk7DQorICAgIHBQYWNrYWdlLT5tX0luZGV4U2l6ZSA9ICooaW50KikoYnVmICsgMTIpOw0KKyAgICBwUGFja2FnZS0+bV9JbmRleE9mZnNldCA9ICooaW50KikoYnVmICsgMTYpOw0KKyAgICByZXR1cm4gcFBhY2thZ2U7DQorfQ0KK3ZvaWQgRlhGQ19DbG9zZVBhY2thZ2UoRlhfTFBWT0lEIHApDQorew0KKyAgICBGWEZDX1BBQ0tBR0UqIHBQYWNrYWdlID0gKEZYRkNfUEFDS0FHRSopcDsNCisgICAgRlhTWVNfZmNsb3NlKHBQYWNrYWdlLT5tX3BGaWxlKTsNCisgICAgRlhfRnJlZShwUGFja2FnZSk7DQorfQ0KK0ZYX0JPT0wgRlhGQ19Mb2FkRmlsZShGWF9MUFZPSUQgcCwgRlhfTFBDU1RSIG5hbWUsIEZYX0xQQllURSYgcEJ1ZmZlciwgRlhfRFdPUkQmIHNpemUpDQorew0KKyAgICBGWEZDX1BBQ0tBR0UqIHBQYWNrYWdlID0gKEZYRkNfUEFDS0FHRSopcDsNCisgICAgRlhTWVNfZnNlZWsocFBhY2thZ2UtPm1fcEZpbGUsIHBQYWNrYWdlLT5tX0luZGV4T2Zmc2V0LCBGWFNZU19TRUVLX1NFVCk7DQorICAgIEZYX0JZVEUgYnVmWzEyOF07DQorICAgIHNpemVfdCByZWFkID0gMDsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwUGFja2FnZS0+bV9uRmlsZXM7IGkgKyspIHsNCisgICAgICAgIHJlYWQgPSBGWFNZU19mcmVhZChidWYsIHBQYWNrYWdlLT5tX0luZGV4U2l6ZSwgMSwgcFBhY2thZ2UtPm1fcEZpbGUpOw0KKyAgICAgICAgaWYgKEZYU1lTX3N0cmljbXAoKEZYX0xQQ1NUUilidWYsIG5hbWUpID09IDApIHsNCisgICAgICAgICAgICBGWF9EV09SRCBvZmZzZXQgPSAqKEZYX0RXT1JEKikmYnVmWzY0XTsNCisgICAgICAgICAgICBzaXplID0gKihGWF9EV09SRCopJmJ1Zls2OF07DQorICAgICAgICAgICAgcEJ1ZmZlciA9IEZYX0FsbG9jKEZYX0JZVEUsIHNpemUpOw0KKyAgICAgICAgICAgIEZYU1lTX2ZzZWVrKHBQYWNrYWdlLT5tX3BGaWxlLCBvZmZzZXQsIEZYU1lTX1NFRUtfU0VUKTsNCisgICAgICAgICAgICByZWFkID0gRlhTWVNfZnJlYWQocEJ1ZmZlciwgc2l6ZSwgMSwgcFBhY2thZ2UtPm1fcEZpbGUpOw0KKyAgICAgICAgICAgIGlmIChidWZbNzJdKSB7DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIG9yaWdfc2l6ZTsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGNvbXBfYnVmID0gcEJ1ZmZlcjsNCisgICAgICAgICAgICAgICAgQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRGbGF0ZU1vZHVsZSgpLT5GbGF0ZU9yTFpXRGVjb2RlKEZBTFNFLCBjb21wX2J1Ziwgc2l6ZSwgRkFMU0UsDQorICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgcEJ1ZmZlciwgb3JpZ19zaXplKTsNCisgICAgICAgICAgICAgICAgRlhfRnJlZShjb21wX2J1Zik7DQorICAgICAgICAgICAgICAgIHNpemUgPSBvcmlnX3NpemU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0ZYTVA6OkxvYWRGaWxlKEZYX0xQVk9JRCBwUGFja2FnZSwgRlhfTFBDU1RSIGZpbGVpZCkNCit7DQorICAgIGlmIChtX3BIZWFkZXIpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wSGVhZGVyKTsNCisgICAgICAgIG1fcEhlYWRlciA9IE5VTEw7DQorICAgIH0NCisgICAgbV9wVGFibGUgPSBOVUxMOw0KKyAgICBGWF9EV09SRCBzaXplOw0KKyAgICBpZiAoIUZYRkNfTG9hZEZpbGUocFBhY2thZ2UsIGZpbGVpZCwgKEZYX0xQQllURSYpbV9wSGVhZGVyLCBzaXplKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChGWFNZU19tZW1jbXAzMihtX3BIZWFkZXIsICJGWE1QIiwgNCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BUYWJsZSA9IChGWF9MUEJZVEUpbV9wSGVhZGVyICsgbV9wSGVhZGVyLT5kd0RhdGFPZmZzZXQ7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9MUEJZVEUgQ1BERl9GWE1QOjpHZXRSZWNvcmQoRlhfRFdPUkQgaW5kZXgpDQorew0KKyAgICBpZiAobV9wVGFibGUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKChpbnQpaW5kZXggPCAoaW50KW1fcEhlYWRlci0+ZHdTdGFydEluZGV4IHx8IGluZGV4ID4gbV9wSGVhZGVyLT5kd0VuZEluZGV4KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wVGFibGUgKyAoaW5kZXggLSBtX3BIZWFkZXItPmR3U3RhcnRJbmRleCkgKiBtX3BIZWFkZXItPmR3UmVjb3JkU2l6ZTsNCit9DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2ZvbnQvdHRnc3VidGFibGUuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2ZvbnQvdHRnc3VidGFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YTc4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfZm9udC90dGdzdWJ0YWJsZS5jcHAKQEAgLTAsMCArMSw0NTIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2ZyZWV0eXBlLmgiDQorI2luY2x1ZGUgInR0Z3N1YnRhYmxlLmgiDQorQ0ZYX0dseXBoTWFwOjpDRlhfR2x5cGhNYXAoKQ0KK3sNCit9DQorQ0ZYX0dseXBoTWFwOjp+Q0ZYX0dseXBoTWFwKCkNCit7DQorfQ0KK2V4dGVybiAiQyIgew0KKyAgICBzdGF0aWMgaW50IF9Db21wYXJlSW50KGNvbnN0IHZvaWQqIHAxLCBjb25zdCB2b2lkKiBwMikNCisgICAgew0KKyAgICAgICAgcmV0dXJuICgqKEZYX0RXT1JEKilwMSkgLSAoKihGWF9EV09SRCopcDIpOw0KKyAgICB9DQorfTsNCitzdHJ1Y3QgX0ludFBhaXIgew0KKyAgICBGWF9JTlQzMiBrZXk7DQorICAgIEZYX0lOVDMyIHZhbHVlOw0KK307DQordm9pZCBDRlhfR2x5cGhNYXA6OlNldEF0KGludCBrZXksIGludCB2YWx1ZSkNCit7DQorICAgIEZYX0RXT1JEIGNvdW50ID0gbV9CdWZmZXIuR2V0U2l6ZSgpIC8gc2l6ZW9mKF9JbnRQYWlyKTsNCisgICAgX0ludFBhaXIqIGJ1ZiA9IChfSW50UGFpciopbV9CdWZmZXIuR2V0QnVmZmVyKCk7DQorICAgIF9JbnRQYWlyIHBhaXIgPSB7a2V5LCB2YWx1ZX07DQorICAgIGlmIChjb3VudCA9PSAwIHx8IGtleSA+IGJ1Zltjb3VudCAtIDFdLmtleSkgew0KKyAgICAgICAgbV9CdWZmZXIuQXBwZW5kQmxvY2soJnBhaXIsIHNpemVvZihfSW50UGFpcikpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBsb3cgPSAwLCBoaWdoID0gY291bnQgLSAxOw0KKyAgICB3aGlsZSAobG93IDw9IGhpZ2gpIHsNCisgICAgICAgIGludCBtaWQgPSAobG93ICsgaGlnaCkgLyAyOw0KKyAgICAgICAgaWYgKGJ1ZlttaWRdLmtleSA8IGtleSkgew0KKyAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7DQorICAgICAgICB9IGVsc2UgaWYgKGJ1ZlttaWRdLmtleSA+IGtleSkgew0KKyAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBidWZbbWlkXS52YWx1ZSA9IHZhbHVlOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX0J1ZmZlci5JbnNlcnRCbG9jayhsb3cgKiBzaXplb2YoX0ludFBhaXIpLCAmcGFpciwgc2l6ZW9mKF9JbnRQYWlyKSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0dseXBoTWFwOjpMb29rdXAoaW50IGtleSwgaW50ICZ2YWx1ZSkNCit7DQorICAgIEZYX0xQVk9JRCBwUmVzdWx0ID0gRlhTWVNfYnNlYXJjaCgma2V5LCBtX0J1ZmZlci5HZXRCdWZmZXIoKSwgbV9CdWZmZXIuR2V0U2l6ZSgpIC8gc2l6ZW9mKF9JbnRQYWlyKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihfSW50UGFpciksIF9Db21wYXJlSW50KTsNCisgICAgaWYgKHBSZXN1bHQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHZhbHVlID0gKChGWF9EV09SRCopcFJlc3VsdClbMV07DQorICAgIHJldHVybiBUUlVFOw0KK30NCitib29sIENGWF9DVFRHU1VCVGFibGU6OkxvYWRHU1VCVGFibGUoRlRfQnl0ZXMgZ3N1YikNCit7DQorICAgIGhlYWRlci5WZXJzaW9uID0gZ3N1YlswXSA8PCAyNCB8IGdzdWJbMV0gPDwgMTYgfCBnc3ViWzJdIDw8IDggfCBnc3ViWzNdOw0KKyAgICBpZihoZWFkZXIuVmVyc2lvbiAhPSAweDAwMDEwMDAwKSB7DQorICAgICAgICByZXR1cm4gZmFsc2U7DQorICAgIH0NCisgICAgaGVhZGVyLlNjcmlwdExpc3QgID0gZ3N1Yls0XSA8PCA4IHwgZ3N1Yls1XTsNCisgICAgaGVhZGVyLkZlYXR1cmVMaXN0ID0gZ3N1Yls2XSA8PCA4IHwgZ3N1Yls3XTsNCisgICAgaGVhZGVyLkxvb2t1cExpc3QgID0gZ3N1Yls4XSA8PCA4IHwgZ3N1Yls5XTsNCisgICAgcmV0dXJuIFBhcnNlKA0KKyAgICAgICAgICAgICAgICZnc3ViW2hlYWRlci5TY3JpcHRMaXN0XSwNCisgICAgICAgICAgICAgICAmZ3N1YltoZWFkZXIuRmVhdHVyZUxpc3RdLA0KKyAgICAgICAgICAgICAgICZnc3ViW2hlYWRlci5Mb29rdXBMaXN0XSk7DQorfQ0KK2Jvb2wgQ0ZYX0NUVEdTVUJUYWJsZTo6R2V0VmVydGljYWxHbHlwaChUVF91aW50MzJfdCBnbHlwaG51bSwgVFRfdWludDMyX3QgKnZnbHlwaG51bSkNCit7DQorICAgIFRUX3VpbnQzMl90IHRhZ1tdID0gew0KKyAgICAgICAgKFRUX3VpbnQ4X3QpJ3YnIDw8IDI0IHwNCisgICAgICAgIChUVF91aW50OF90KSdyJyA8PCAxNiB8DQorICAgICAgICAoVFRfdWludDhfdCkndCcgPDwgIDggfA0KKyAgICAgICAgKFRUX3VpbnQ4X3QpJzInLA0KKyAgICAgICAgKFRUX3VpbnQ4X3QpJ3YnIDw8IDI0IHwNCisgICAgICAgIChUVF91aW50OF90KSdlJyA8PCAxNiB8DQorICAgICAgICAoVFRfdWludDhfdCkncicgPDwgIDggfA0KKyAgICAgICAgKFRUX3VpbnQ4X3QpJ3QnLA0KKyAgICB9Ow0KKyAgICBpZiAoIW1fYkZlYXV0dXJlTWFwTG9hZCkgew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBTY3JpcHRMaXN0LlNjcmlwdENvdW50OyBpKyspIHsNCisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8CShTY3JpcHRMaXN0LlNjcmlwdFJlY29yZCArIGkpLT5TY3JpcHQuTGFuZ1N5c0NvdW50OyArK2opIHsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCAoKFNjcmlwdExpc3QuU2NyaXB0UmVjb3JkICsgaSktPlNjcmlwdC5MYW5nU3lzUmVjb3JkICsgaiktPkxhbmdTeXMuRmVhdHVyZUNvdW50OyArK2spIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGluZGV4ID0gKigoKFNjcmlwdExpc3QuU2NyaXB0UmVjb3JkICsgaSktPlNjcmlwdC5MYW5nU3lzUmVjb3JkICsgaiktPkxhbmdTeXMuRmVhdHVyZUluZGV4ICsgayk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoRmVhdHVyZUxpc3QuRmVhdHVyZVJlY29yZFtpbmRleF0uRmVhdHVyZVRhZyA9PSB0YWdbMF0gfHwgRmVhdHVyZUxpc3QuRmVhdHVyZVJlY29yZFtpbmRleF0uRmVhdHVyZVRhZyA9PSB0YWdbMV0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCB2YWx1ZTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZmVhdHVyZU1hcC5Mb29rdXAoaW5kZXgsIHZhbHVlKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVNYXAuU2V0QXQoaW5kZXgsIGluZGV4KTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoIW1fZmVhdHVyZU1hcC5HZXRTdGFydFBvc2l0aW9uKCkpIHsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IEZlYXR1cmVMaXN0LkZlYXR1cmVDb3VudDsgaSArKykgew0KKyAgICAgICAgICAgICAgICBpZiAoRmVhdHVyZUxpc3QuRmVhdHVyZVJlY29yZFtpXS5GZWF0dXJlVGFnID09IHRhZ1swXSB8fCBGZWF0dXJlTGlzdC5GZWF0dXJlUmVjb3JkW2ldLkZlYXR1cmVUYWcgPT0gdGFnWzFdKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCB2YWx1ZTsNCisgICAgICAgICAgICAgICAgICAgIGlmICghbV9mZWF0dXJlTWFwLkxvb2t1cChpLCB2YWx1ZSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVNYXAuU2V0QXQoaSwgaSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBtX2JGZWF1dHVyZU1hcExvYWQgPSBUUlVFOw0KKyAgICB9DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fZmVhdHVyZU1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIEZYX0RXT1JEIGluZGV4LCB2YWx1ZTsNCisgICAgICAgIG1fZmVhdHVyZU1hcC5HZXROZXh0QXNzb2MocG9zLCBpbmRleCwgdmFsdWUpOw0KKyAgICAgICAgaWYoR2V0VmVydGljYWxHbHlwaFN1YihnbHlwaG51bSwgdmdseXBobnVtLAkmRmVhdHVyZUxpc3QuRmVhdHVyZVJlY29yZFt2YWx1ZV0uRmVhdHVyZSkpIHsNCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gZmFsc2U7DQorfQ0KK2Jvb2wgQ0ZYX0NUVEdTVUJUYWJsZTo6R2V0VmVydGljYWxHbHlwaFN1YigNCisgICAgVFRfdWludDMyX3QgZ2x5cGhudW0sDQorICAgIFRUX3VpbnQzMl90ICp2Z2x5cGhudW0sDQorICAgIHN0cnVjdCBURmVhdHVyZSAqRmVhdHVyZSkNCit7DQorICAgIGZvcihpbnQgaSA9IDA7IGkgPCBGZWF0dXJlLT5Mb29rdXBDb3VudDsgaSsrKSB7DQorICAgICAgICBpbnQgaW5kZXggPSBGZWF0dXJlLT5Mb29rdXBMaXN0SW5kZXhbaV07DQorICAgICAgICBpZihpbmRleCA8IDAgfHwgTG9va3VwTGlzdC5Mb29rdXBDb3VudCA8IGluZGV4KSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZihMb29rdXBMaXN0Lkxvb2t1cFtpbmRleF0uTG9va3VwVHlwZSA9PSAxKSB7DQorICAgICAgICAgICAgaWYoR2V0VmVydGljYWxHbHlwaFN1YjIoDQorICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhudW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgdmdseXBobnVtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICZMb29rdXBMaXN0Lkxvb2t1cFtpbmRleF0pKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gZmFsc2U7DQorfQ0KK2Jvb2wgQ0ZYX0NUVEdTVUJUYWJsZTo6R2V0VmVydGljYWxHbHlwaFN1YjIoDQorICAgIFRUX3VpbnQzMl90IGdseXBobnVtLA0KKyAgICBUVF91aW50MzJfdCAqdmdseXBobnVtLA0KKyAgICBzdHJ1Y3QgVExvb2t1cCAqTG9va3VwKQ0KK3sNCisgICAgZm9yKGludCBpID0gMDsgaSA8IExvb2t1cC0+U3ViVGFibGVDb3VudDsgaSsrKSB7DQorICAgICAgICBzd2l0Y2goTG9va3VwLT5TdWJUYWJsZVtpXS0+U3Vic3RGb3JtYXQpIHsNCisgICAgICAgICAgICBjYXNlIDE6IHsNCisgICAgICAgICAgICAgICAgICAgIFRTaW5nbGVTdWJzdEZvcm1hdDEgKnRibDEgPSAoVFNpbmdsZVN1YnN0Rm9ybWF0MSopTG9va3VwLT5TdWJUYWJsZVtpXTsNCisgICAgICAgICAgICAgICAgICAgIGlmKEdldENvdmVyYWdlSW5kZXgodGJsMS0+Q292ZXJhZ2UsIGdseXBobnVtKSA+PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgKnZnbHlwaG51bSA9IGdseXBobnVtICsgdGJsMS0+RGVsdGFHbHlwaElEOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjYXNlIDI6IHsNCisgICAgICAgICAgICAgICAgICAgIFRTaW5nbGVTdWJzdEZvcm1hdDIgKnRibDIgPSAoVFNpbmdsZVN1YnN0Rm9ybWF0MiopTG9va3VwLT5TdWJUYWJsZVtpXTsNCisgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCA9IC0xOw0KKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBHZXRDb3ZlcmFnZUluZGV4KHRibDItPkNvdmVyYWdlLCBnbHlwaG51bSk7DQorICAgICAgICAgICAgICAgICAgICBpZigwIDw9IGluZGV4ICYmIGluZGV4IDwgdGJsMi0+R2x5cGhDb3VudCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICp2Z2x5cGhudW0gPSB0YmwyLT5TdWJzdGl0dXRlW2luZGV4XTsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGZhbHNlOw0KK30NCitpbnQgQ0ZYX0NUVEdTVUJUYWJsZTo6R2V0Q292ZXJhZ2VJbmRleChzdHJ1Y3QgVENvdmVyYWdlRm9ybWF0QmFzZSAqQ292ZXJhZ2UsIFRUX3VpbnQzMl90IGcpDQorew0KKyAgICBpbnQgaSA9IDA7DQorICAgIGlmKENvdmVyYWdlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBzd2l0Y2goQ292ZXJhZ2UtPkNvdmVyYWdlRm9ybWF0KSB7DQorICAgICAgICBjYXNlIDE6IHsNCisgICAgICAgICAgICAgICAgVENvdmVyYWdlRm9ybWF0MSAqYzEgPSAoVENvdmVyYWdlRm9ybWF0MSopQ292ZXJhZ2U7DQorICAgICAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IGMxLT5HbHlwaENvdW50OyBpKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmKChUVF91aW50MzJfdCljMS0+R2x5cGhBcnJheVtpXSA9PSBnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgMjogew0KKyAgICAgICAgICAgICAgICBUQ292ZXJhZ2VGb3JtYXQyICpjMiA9IChUQ292ZXJhZ2VGb3JtYXQyKilDb3ZlcmFnZTsNCisgICAgICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgYzItPlJhbmdlQ291bnQ7IGkrKykgew0KKyAgICAgICAgICAgICAgICAgICAgVFRfdWludDMyX3QgcyA9IGMyLT5SYW5nZVJlY29yZFtpXS5TdGFydDsNCisgICAgICAgICAgICAgICAgICAgIFRUX3VpbnQzMl90IGUgPSBjMi0+UmFuZ2VSZWNvcmRbaV0uRW5kOw0KKyAgICAgICAgICAgICAgICAgICAgVFRfdWludDMyX3Qgc2kgPSBjMi0+UmFuZ2VSZWNvcmRbaV0uU3RhcnRDb3ZlcmFnZUluZGV4Ow0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHMgPD0gZyAmJiBnIDw9IGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2kgKyBnIC0gczsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAtMTsNCit9DQorYm9vbCBDRlhfQ1RUR1NVQlRhYmxlOjpQYXJzZSgNCisgICAgRlRfQnl0ZXMgc2NyaXB0bGlzdCwNCisgICAgRlRfQnl0ZXMgZmVhdHVyZWxpc3QsDQorICAgIEZUX0J5dGVzIGxvb2t1cGxpc3QpDQorew0KKyAgICBQYXJzZVNjcmlwdExpc3Qoc2NyaXB0bGlzdCwgJlNjcmlwdExpc3QpOw0KKyAgICBQYXJzZUZlYXR1cmVMaXN0KGZlYXR1cmVsaXN0LCAmRmVhdHVyZUxpc3QpOw0KKyAgICBQYXJzZUxvb2t1cExpc3QobG9va3VwbGlzdCwgJkxvb2t1cExpc3QpOw0KKyAgICByZXR1cm4gdHJ1ZTsNCit9DQordm9pZCBDRlhfQ1RUR1NVQlRhYmxlOjpQYXJzZVNjcmlwdExpc3QoRlRfQnl0ZXMgcmF3LCBzdHJ1Y3QgVFNjcmlwdExpc3QgKnJlYykNCit7DQorICAgIGludCBpOw0KKyAgICBGVF9CeXRlcyBzcCA9IHJhdzsNCisgICAgcmVjLT5TY3JpcHRDb3VudCA9IEdldFVJbnQxNihzcCk7DQorICAgIGlmKHJlYy0+U2NyaXB0Q291bnQgPD0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHJlYy0+U2NyaXB0UmVjb3JkID0gbmV3IHN0cnVjdCBUU2NyaXB0UmVjb3JkW3JlYy0+U2NyaXB0Q291bnRdOw0KKyAgICBmb3IoaSA9IDA7IGkgPCByZWMtPlNjcmlwdENvdW50OyBpKyspIHsNCisgICAgICAgIHJlYy0+U2NyaXB0UmVjb3JkW2ldLlNjcmlwdFRhZyA9IEdldFVJbnQzMihzcCk7DQorICAgICAgICBUVF91aW50MTZfdCBvZmZzZXQgPSBHZXRVSW50MTYoc3ApOw0KKyAgICAgICAgUGFyc2VTY3JpcHQoDQorICAgICAgICAgICAgJnJhd1tvZmZzZXRdLA0KKyAgICAgICAgICAgICZyZWMtPlNjcmlwdFJlY29yZFtpXS5TY3JpcHQpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0NUVEdTVUJUYWJsZTo6UGFyc2VTY3JpcHQoRlRfQnl0ZXMgcmF3LCBzdHJ1Y3QgVFNjcmlwdCAqcmVjKQ0KK3sNCisgICAgaW50IGk7DQorICAgIEZUX0J5dGVzIHNwID0gcmF3Ow0KKyAgICByZWMtPkRlZmF1bHRMYW5nU3lzID0gR2V0VUludDE2KHNwKTsNCisgICAgcmVjLT5MYW5nU3lzQ291bnQgPSBHZXRVSW50MTYoc3ApOw0KKyAgICBpZihyZWMtPkxhbmdTeXNDb3VudCA8PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcmVjLT5MYW5nU3lzUmVjb3JkID0gbmV3IHN0cnVjdCBUTGFuZ1N5c1JlY29yZFtyZWMtPkxhbmdTeXNDb3VudF07DQorICAgIGZvcihpID0gMDsgaSA8IHJlYy0+TGFuZ1N5c0NvdW50OyBpKyspIHsNCisgICAgICAgIHJlYy0+TGFuZ1N5c1JlY29yZFtpXS5MYW5nU3lzVGFnID0gR2V0VUludDMyKHNwKTsNCisgICAgICAgIFRUX3VpbnQxNl90IG9mZnNldCA9IEdldFVJbnQxNihzcCk7DQorICAgICAgICBQYXJzZUxhbmdTeXMoDQorICAgICAgICAgICAgJnJhd1tvZmZzZXRdLA0KKyAgICAgICAgICAgICZyZWMtPkxhbmdTeXNSZWNvcmRbaV0uTGFuZ1N5cyk7DQorICAgIH0NCit9DQordm9pZCBDRlhfQ1RUR1NVQlRhYmxlOjpQYXJzZUxhbmdTeXMoRlRfQnl0ZXMgcmF3LCBzdHJ1Y3QgVExhbmdTeXMgKnJlYykNCit7DQorICAgIEZUX0J5dGVzIHNwID0gcmF3Ow0KKyAgICByZWMtPkxvb2t1cE9yZGVyID0gR2V0VUludDE2KHNwKTsNCisgICAgcmVjLT5SZXFGZWF0dXJlSW5kZXggPSBHZXRVSW50MTYoc3ApOw0KKyAgICByZWMtPkZlYXR1cmVDb3VudCA9IEdldFVJbnQxNihzcCk7DQorICAgIGlmKHJlYy0+RmVhdHVyZUNvdW50IDw9IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICByZWMtPkZlYXR1cmVJbmRleCA9IG5ldyBUVF91aW50MTZfdFtyZWMtPkZlYXR1cmVDb3VudF07DQorICAgIEZYU1lTX21lbXNldDMyKHJlYy0+RmVhdHVyZUluZGV4LCAwLCBzaXplb2YoVFRfdWludDE2X3QpICogcmVjLT5GZWF0dXJlQ291bnQpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlYy0+RmVhdHVyZUNvdW50OyArK2kpIHsNCisgICAgICAgIHJlYy0+RmVhdHVyZUluZGV4W2ldID0gR2V0VUludDE2KHNwKTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9DVFRHU1VCVGFibGU6OlBhcnNlRmVhdHVyZUxpc3QoRlRfQnl0ZXMgcmF3LCBURmVhdHVyZUxpc3QgKnJlYykNCit7DQorICAgIGludCBpOw0KKyAgICBGVF9CeXRlcyBzcCA9IHJhdzsNCisgICAgcmVjLT5GZWF0dXJlQ291bnQgPSBHZXRVSW50MTYoc3ApOw0KKyAgICBpZihyZWMtPkZlYXR1cmVDb3VudCA8PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcmVjLT5GZWF0dXJlUmVjb3JkID0gbmV3IHN0cnVjdCBURmVhdHVyZVJlY29yZFtyZWMtPkZlYXR1cmVDb3VudF07DQorICAgIGZvcihpID0gMDsgaSA8IHJlYy0+RmVhdHVyZUNvdW50OyBpKyspIHsNCisgICAgICAgIHJlYy0+RmVhdHVyZVJlY29yZFtpXS5GZWF0dXJlVGFnID0gR2V0VUludDMyKHNwKTsNCisgICAgICAgIFRUX3VpbnQxNl90IG9mZnNldCA9IEdldFVJbnQxNihzcCk7DQorICAgICAgICBQYXJzZUZlYXR1cmUoDQorICAgICAgICAgICAgJnJhd1tvZmZzZXRdLA0KKyAgICAgICAgICAgICZyZWMtPkZlYXR1cmVSZWNvcmRbaV0uRmVhdHVyZSk7DQorICAgIH0NCit9DQordm9pZCBDRlhfQ1RUR1NVQlRhYmxlOjpQYXJzZUZlYXR1cmUoRlRfQnl0ZXMgcmF3LCBURmVhdHVyZSAqcmVjKQ0KK3sNCisgICAgaW50IGk7DQorICAgIEZUX0J5dGVzIHNwID0gcmF3Ow0KKyAgICByZWMtPkZlYXR1cmVQYXJhbXMgPSBHZXRVSW50MTYoc3ApOw0KKyAgICByZWMtPkxvb2t1cENvdW50ID0gR2V0VUludDE2KHNwKTsNCisgICAgaWYocmVjLT5Mb29rdXBDb3VudCA8PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcmVjLT5Mb29rdXBMaXN0SW5kZXggPSBuZXcgVFRfdWludDE2X3RbcmVjLT5Mb29rdXBDb3VudF07DQorICAgIGZvcihpID0gMDsgaSA8IHJlYy0+TG9va3VwQ291bnQ7IGkrKykgew0KKyAgICAgICAgcmVjLT5Mb29rdXBMaXN0SW5kZXhbaV0gPSBHZXRVSW50MTYoc3ApOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0NUVEdTVUJUYWJsZTo6UGFyc2VMb29rdXBMaXN0KEZUX0J5dGVzIHJhdywgVExvb2t1cExpc3QgKnJlYykNCit7DQorICAgIGludCBpOw0KKyAgICBGVF9CeXRlcyBzcCA9IHJhdzsNCisgICAgcmVjLT5Mb29rdXBDb3VudCA9IEdldFVJbnQxNihzcCk7DQorICAgIGlmKHJlYy0+TG9va3VwQ291bnQgPD0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHJlYy0+TG9va3VwID0gbmV3IHN0cnVjdCBUTG9va3VwW3JlYy0+TG9va3VwQ291bnRdOw0KKyAgICBmb3IoaSA9IDA7IGkgPCByZWMtPkxvb2t1cENvdW50OyBpKyspIHsNCisgICAgICAgIFRUX3VpbnQxNl90IG9mZnNldCA9IEdldFVJbnQxNihzcCk7DQorICAgICAgICBQYXJzZUxvb2t1cCgNCisgICAgICAgICAgICAmcmF3W29mZnNldF0sDQorICAgICAgICAgICAgJnJlYy0+TG9va3VwW2ldKTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9DVFRHU1VCVGFibGU6OlBhcnNlTG9va3VwKEZUX0J5dGVzIHJhdywgVExvb2t1cCAqcmVjKQ0KK3sNCisgICAgaW50IGk7DQorICAgIEZUX0J5dGVzIHNwID0gcmF3Ow0KKyAgICByZWMtPkxvb2t1cFR5cGUgPSBHZXRVSW50MTYoc3ApOw0KKyAgICByZWMtPkxvb2t1cEZsYWcgPSBHZXRVSW50MTYoc3ApOw0KKyAgICByZWMtPlN1YlRhYmxlQ291bnQgPSBHZXRVSW50MTYoc3ApOw0KKyAgICBpZihyZWMtPlN1YlRhYmxlQ291bnQgPD0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHJlYy0+U3ViVGFibGUgPSBuZXcgc3RydWN0IFRTdWJUYWJsZUJhc2UqW3JlYy0+U3ViVGFibGVDb3VudF07DQorICAgIGZvcihpID0gMDsgaSA8IHJlYy0+U3ViVGFibGVDb3VudDsgaSsrKSB7DQorICAgICAgICByZWMtPlN1YlRhYmxlW2ldID0gTlVMTDsNCisgICAgfQ0KKyAgICBpZihyZWMtPkxvb2t1cFR5cGUgIT0gMSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvcihpID0gMDsgaSA8IHJlYy0+U3ViVGFibGVDb3VudDsgaSsrKSB7DQorICAgICAgICBUVF91aW50MTZfdCBvZmZzZXQgPSBHZXRVSW50MTYoc3ApOw0KKyAgICAgICAgUGFyc2VTaW5nbGVTdWJzdCgNCisgICAgICAgICAgICAmcmF3W29mZnNldF0sDQorICAgICAgICAgICAgJnJlYy0+U3ViVGFibGVbaV0pOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0NUVEdTVUJUYWJsZTo6UGFyc2VDb3ZlcmFnZShGVF9CeXRlcyByYXcsIFRDb3ZlcmFnZUZvcm1hdEJhc2UgKipyZWMpDQorew0KKyAgICBGVF9CeXRlcyBzcCA9IHJhdzsNCisgICAgVFRfdWludDE2X3QgRm9ybWF0ID0gR2V0VUludDE2KHNwKTsNCisgICAgc3dpdGNoKEZvcm1hdCkgew0KKyAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICpyZWMgPSBuZXcgVENvdmVyYWdlRm9ybWF0MSgpOw0KKyAgICAgICAgICAgIFBhcnNlQ292ZXJhZ2VGb3JtYXQxKHJhdywgKFRDb3ZlcmFnZUZvcm1hdDEqKSpyZWMpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICpyZWMgPSBuZXcgVENvdmVyYWdlRm9ybWF0MigpOw0KKyAgICAgICAgICAgIFBhcnNlQ292ZXJhZ2VGb3JtYXQyKHJhdywgKFRDb3ZlcmFnZUZvcm1hdDIqKSpyZWMpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0NUVEdTVUJUYWJsZTo6UGFyc2VDb3ZlcmFnZUZvcm1hdDEoRlRfQnl0ZXMgcmF3LCBUQ292ZXJhZ2VGb3JtYXQxICpyZWMpDQorew0KKyAgICBpbnQgaTsNCisgICAgRlRfQnl0ZXMgc3AgPSByYXc7DQorICAgIEdldFVJbnQxNihzcCk7DQorICAgIHJlYy0+R2x5cGhDb3VudCA9IEdldFVJbnQxNihzcCk7DQorICAgIGlmKHJlYy0+R2x5cGhDb3VudCA8PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcmVjLT5HbHlwaEFycmF5ID0gbmV3IFRUX3VpbnQxNl90W3JlYy0+R2x5cGhDb3VudF07DQorICAgIGZvcihpID0gMDsgaSA8IHJlYy0+R2x5cGhDb3VudDsgaSsrKSB7DQorICAgICAgICByZWMtPkdseXBoQXJyYXlbaV0gPSBHZXRVSW50MTYoc3ApOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0NUVEdTVUJUYWJsZTo6UGFyc2VDb3ZlcmFnZUZvcm1hdDIoRlRfQnl0ZXMgcmF3LCBUQ292ZXJhZ2VGb3JtYXQyICpyZWMpDQorew0KKyAgICBpbnQgaTsNCisgICAgRlRfQnl0ZXMgc3AgPSByYXc7DQorICAgIEdldFVJbnQxNihzcCk7DQorICAgIHJlYy0+UmFuZ2VDb3VudCA9IEdldFVJbnQxNihzcCk7DQorICAgIGlmKHJlYy0+UmFuZ2VDb3VudCA8PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcmVjLT5SYW5nZVJlY29yZCA9IG5ldyBUUmFuZ2VSZWNvcmRbcmVjLT5SYW5nZUNvdW50XTsNCisgICAgZm9yKGkgPSAwOyBpIDwgcmVjLT5SYW5nZUNvdW50OyBpKyspIHsNCisgICAgICAgIHJlYy0+UmFuZ2VSZWNvcmRbaV0uU3RhcnQgPSBHZXRVSW50MTYoc3ApOw0KKyAgICAgICAgcmVjLT5SYW5nZVJlY29yZFtpXS5FbmQgPSBHZXRVSW50MTYoc3ApOw0KKyAgICAgICAgcmVjLT5SYW5nZVJlY29yZFtpXS5TdGFydENvdmVyYWdlSW5kZXggPSBHZXRVSW50MTYoc3ApOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0NUVEdTVUJUYWJsZTo6UGFyc2VTaW5nbGVTdWJzdChGVF9CeXRlcyByYXcsIFRTdWJUYWJsZUJhc2UgKipyZWMpDQorew0KKyAgICBGVF9CeXRlcyBzcCA9IHJhdzsNCisgICAgVFRfdWludDE2X3QgRm9ybWF0ID0gR2V0VUludDE2KHNwKTsNCisgICAgc3dpdGNoKEZvcm1hdCkgew0KKyAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICpyZWMgPSBuZXcgVFNpbmdsZVN1YnN0Rm9ybWF0MSgpOw0KKyAgICAgICAgICAgIFBhcnNlU2luZ2xlU3Vic3RGb3JtYXQxKHJhdywgKFRTaW5nbGVTdWJzdEZvcm1hdDEqKSpyZWMpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICpyZWMgPSBuZXcgVFNpbmdsZVN1YnN0Rm9ybWF0MigpOw0KKyAgICAgICAgICAgIFBhcnNlU2luZ2xlU3Vic3RGb3JtYXQyKHJhdywgKFRTaW5nbGVTdWJzdEZvcm1hdDIqKSpyZWMpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0NUVEdTVUJUYWJsZTo6UGFyc2VTaW5nbGVTdWJzdEZvcm1hdDEoRlRfQnl0ZXMgcmF3LCBUU2luZ2xlU3Vic3RGb3JtYXQxICpyZWMpDQorew0KKyAgICBGVF9CeXRlcyBzcCA9IHJhdzsNCisgICAgR2V0VUludDE2KHNwKTsNCisgICAgVFRfdWludDE2X3Qgb2Zmc2V0ID0gR2V0VUludDE2KHNwKTsNCisgICAgUGFyc2VDb3ZlcmFnZSgNCisgICAgICAgICZyYXdbb2Zmc2V0XSwNCisgICAgICAgICZyZWMtPkNvdmVyYWdlKTsNCisgICAgcmVjLT5EZWx0YUdseXBoSUQgPSBHZXRJbnQxNihzcCk7DQorfQ0KK3ZvaWQgQ0ZYX0NUVEdTVUJUYWJsZTo6UGFyc2VTaW5nbGVTdWJzdEZvcm1hdDIoRlRfQnl0ZXMgcmF3LCBUU2luZ2xlU3Vic3RGb3JtYXQyICpyZWMpDQorew0KKyAgICBpbnQgaTsNCisgICAgRlRfQnl0ZXMgc3AgPSByYXc7DQorICAgIEdldFVJbnQxNihzcCk7DQorICAgIFRUX3VpbnQxNl90IG9mZnNldCA9IEdldFVJbnQxNihzcCk7DQorICAgIFBhcnNlQ292ZXJhZ2UoDQorICAgICAgICAmcmF3W29mZnNldF0sDQorICAgICAgICAmcmVjLT5Db3ZlcmFnZSk7DQorICAgIHJlYy0+R2x5cGhDb3VudCA9IEdldFVJbnQxNihzcCk7DQorICAgIGlmKHJlYy0+R2x5cGhDb3VudCA8PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcmVjLT5TdWJzdGl0dXRlID0gbmV3IFRUX3VpbnQxNl90W3JlYy0+R2x5cGhDb3VudF07DQorICAgIGZvcihpID0gMDsgaSA8IHJlYy0+R2x5cGhDb3VudDsgaSsrKSB7DQorICAgICAgICByZWMtPlN1YnN0aXR1dGVbaV0gPSBHZXRVSW50MTYoc3ApOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ0ZYX0dTVUJUYWJsZTo6R2V0VmVydGljYWxHbHlwaChGWF9EV09SRCBnbHlwaG51bSwgRlhfRFdPUkQqIHZnbHlwaG51bSkNCit7DQorICAgIHJldHVybiBtX0dzdWJJbXAuR2V0VmVydGljYWxHbHlwaChnbHlwaG51bSwgdmdseXBobnVtKTsNCit9DQorSUZYX0dTVUJUYWJsZSogRlhHRV9DcmVhdGVHU1VCVGFibGUoQ0ZYX0ZvbnQqIHBGb250KQ0KK3sNCisgICAgaWYgKCFwRm9udCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKE5VTEwgPT0gcEZvbnQtPm1fcEdzdWJEYXRhKSB7DQorICAgICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCA9IDA7DQorICAgICAgICBpbnQgZXJyb3IgPSBGWEZUX0xvYWRfU2ZudF9UYWJsZShwRm9udC0+bV9GYWNlLCBGVF9NQUtFX1RBRygnRycsICdTJywgJ1UnLCAnQicpLCAwLCBOVUxMLCAmbGVuZ3RoKTsNCisgICAgICAgIGlmICghZXJyb3IpIHsNCisgICAgICAgICAgICBwRm9udC0+bV9wR3N1YkRhdGEgPSAodW5zaWduZWQgY2hhciopRlhfQWxsb2MoRlhfQllURSwgbGVuZ3RoKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghcEZvbnQtPm1fcEdzdWJEYXRhKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IGVycm9yID0gRlhGVF9Mb2FkX1NmbnRfVGFibGUocEZvbnQtPm1fRmFjZSwgRlRfTUFLRV9UQUcoJ0cnLCAnUycsICdVJywgJ0InKSwgMCwgcEZvbnQtPm1fcEdzdWJEYXRhLCBOVUxMKTsNCisgICAgaWYgKCFlcnJvciAmJiBwRm9udC0+bV9wR3N1YkRhdGEpIHsNCisgICAgICAgIENGWF9HU1VCVGFibGUqIHBHc3ViVGFibGUgPSBGWF9ORVcgQ0ZYX0dTVUJUYWJsZTsNCisgICAgICAgIGlmICghcEdzdWJUYWJsZSkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBHc3ViVGFibGUtPm1fR3N1YkltcC5Mb2FkR1NVQlRhYmxlKChGVF9CeXRlcylwRm9udC0+bV9wR3N1YkRhdGEpKSB7DQorICAgICAgICAgICAgcmV0dXJuIHBHc3ViVGFibGU7DQorICAgICAgICB9DQorICAgICAgICBkZWxldGUgcEdzdWJUYWJsZTsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX2ZvbnQvdHRnc3VidGFibGUuaCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9mb250L3R0Z3N1YnRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFmMGU4OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9mb250L3R0Z3N1YnRhYmxlLmgKQEAgLTAsMCArMSw0MTkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgVFRHU1VCVGFibGVfSA0KKyNkZWZpbmUgVFRHU1VCVGFibGVfSA0KKyNpbmNsdWRlICIuLi8uLi9meF9mcmVldHlwZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2Jhc2ljLmgiDQorI2luY2x1ZGUgImNvbW1vbi5oIg0KK2NsYXNzIENGWF9HbHlwaE1hcA0KK3sNCitwdWJsaWM6DQorICAgIENGWF9HbHlwaE1hcCgpOw0KKyAgICB+Q0ZYX0dseXBoTWFwKCk7DQorICAgIHZvaWQJU2V0QXQoaW50IGtleSwgaW50IHZhbHVlKTsNCisgICAgRlhfQk9PTAlMb29rdXAoaW50IGtleSwgaW50ICZ2YWx1ZSk7DQorcHJvdGVjdGVkOg0KKyAgICBDRlhfQmluYXJ5QnVmCW1fQnVmZmVyOw0KK307DQorY2xhc3MgQ0ZYX0NUVEdTVUJUYWJsZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ0ZYX0NUVEdTVUJUYWJsZSh2b2lkKTogbG9hZGVkKGZhbHNlKSwgbV9iRmVhdXR1cmVNYXBMb2FkKEZBTFNFKSB7fTsNCisgICAgQ0ZYX0NUVEdTVUJUYWJsZShGVF9CeXRlcyBnc3ViKTogbG9hZGVkKGZhbHNlKSwgbV9iRmVhdXR1cmVNYXBMb2FkKEZBTFNFKQ0KKyAgICB7DQorICAgICAgICBMb2FkR1NVQlRhYmxlKGdzdWIpOw0KKyAgICB9DQorICAgIHZpcnR1YWwgfkNGWF9DVFRHU1VCVGFibGUoKSB7fQ0KKyAgICBib29sIElzT2sodm9pZCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIGxvYWRlZDsNCisgICAgfQ0KKyAgICBib29sIExvYWRHU1VCVGFibGUoRlRfQnl0ZXMgZ3N1Yik7DQorICAgIGJvb2wgR2V0VmVydGljYWxHbHlwaChUVF91aW50MzJfdCBnbHlwaG51bSwgVFRfdWludDMyX3QgKnZnbHlwaG51bSk7DQorcHJpdmF0ZToNCisgICAgc3RydWN0IHR0X2dzdWJfaGVhZGVyIHsNCisgICAgICAgIFRUX3VpbnQzMl90IFZlcnNpb247DQorICAgICAgICBUVF91aW50MTZfdCBTY3JpcHRMaXN0Ow0KKyAgICAgICAgVFRfdWludDE2X3QgRmVhdHVyZUxpc3Q7DQorICAgICAgICBUVF91aW50MTZfdCBMb29rdXBMaXN0Ow0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVExhbmdTeXMgew0KKyAgICAgICAgVFRfdWludDE2X3QgTG9va3VwT3JkZXI7DQorICAgICAgICBUVF91aW50MTZfdCBSZXFGZWF0dXJlSW5kZXg7DQorICAgICAgICBUVF91aW50MTZfdCBGZWF0dXJlQ291bnQ7DQorICAgICAgICBUVF91aW50MTZfdCAqRmVhdHVyZUluZGV4Ow0KKyAgICAgICAgVExhbmdTeXMoKTogTG9va3VwT3JkZXIoMCksIFJlcUZlYXR1cmVJbmRleCgwKSwgRmVhdHVyZUNvdW50KDApLCBGZWF0dXJlSW5kZXgoTlVMTCkge30NCisgICAgICAgIH5UTGFuZ1N5cygpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYoRmVhdHVyZUluZGV4KSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZVtdIEZlYXR1cmVJbmRleDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIHByaXZhdGU6DQorICAgICAgICBUTGFuZ1N5cyhjb25zdCBUTGFuZ1N5cyYpOw0KKyAgICAgICAgVExhbmdTeXMmIG9wZXJhdG9yPShjb25zdCBUTGFuZ1N5cyYpOw0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVExhbmdTeXNSZWNvcmQgew0KKyAgICAgICAgVFRfdWludDMyX3QgTGFuZ1N5c1RhZzsNCisgICAgICAgIHN0cnVjdCBUTGFuZ1N5cyBMYW5nU3lzOw0KKyAgICAgICAgVExhbmdTeXNSZWNvcmQoKTogTGFuZ1N5c1RhZygwKSB7fQ0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVExhbmdTeXNSZWNvcmQoY29uc3QgVExhbmdTeXNSZWNvcmQmKTsNCisgICAgICAgIFRMYW5nU3lzUmVjb3JkJiBvcGVyYXRvcj0oY29uc3QgVExhbmdTeXNSZWNvcmQmKTsNCisgICAgfTsNCisgICAgc3RydWN0IFRTY3JpcHQgew0KKyAgICAgICAgVFRfdWludDE2X3QgRGVmYXVsdExhbmdTeXM7DQorICAgICAgICBUVF91aW50MTZfdCBMYW5nU3lzQ291bnQ7DQorICAgICAgICBzdHJ1Y3QgVExhbmdTeXNSZWNvcmQgKkxhbmdTeXNSZWNvcmQ7DQorICAgICAgICBUU2NyaXB0KCk6IERlZmF1bHRMYW5nU3lzKDApLCBMYW5nU3lzQ291bnQoMCksIExhbmdTeXNSZWNvcmQoTlVMTCkge30NCisgICAgICAgIH5UU2NyaXB0KCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZihMYW5nU3lzUmVjb3JkKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZVtdIExhbmdTeXNSZWNvcmQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVFNjcmlwdChjb25zdCBUU2NyaXB0Jik7DQorICAgICAgICBUU2NyaXB0JiBvcGVyYXRvcj0oY29uc3QgVFNjcmlwdCYpOw0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVFNjcmlwdFJlY29yZCB7DQorICAgICAgICBUVF91aW50MzJfdCBTY3JpcHRUYWc7DQorICAgICAgICBzdHJ1Y3QgVFNjcmlwdCBTY3JpcHQ7DQorICAgICAgICBUU2NyaXB0UmVjb3JkKCk6IFNjcmlwdFRhZygwKSB7fQ0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVFNjcmlwdFJlY29yZChjb25zdCBUU2NyaXB0UmVjb3JkJik7DQorICAgICAgICBUU2NyaXB0UmVjb3JkJiBvcGVyYXRvcj0oY29uc3QgVFNjcmlwdFJlY29yZCYpOw0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVFNjcmlwdExpc3Qgew0KKyAgICAgICAgVFRfdWludDE2X3QgU2NyaXB0Q291bnQ7DQorICAgICAgICBzdHJ1Y3QgVFNjcmlwdFJlY29yZCAqU2NyaXB0UmVjb3JkOw0KKyAgICAgICAgVFNjcmlwdExpc3QoKTogU2NyaXB0Q291bnQoMCksIFNjcmlwdFJlY29yZChOVUxMKSB7fQ0KKyAgICAgICAgflRTY3JpcHRMaXN0KCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZihTY3JpcHRSZWNvcmQpIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlW10gU2NyaXB0UmVjb3JkOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgcHJpdmF0ZToNCisgICAgICAgIFRTY3JpcHRMaXN0KGNvbnN0IFRTY3JpcHRMaXN0Jik7DQorICAgICAgICBUU2NyaXB0TGlzdCYgb3BlcmF0b3I9KGNvbnN0IFRTY3JpcHRMaXN0Jik7DQorICAgIH07DQorICAgIHN0cnVjdCBURmVhdHVyZSB7DQorICAgICAgICBUVF91aW50MTZfdCBGZWF0dXJlUGFyYW1zOw0KKyAgICAgICAgaW50IExvb2t1cENvdW50Ow0KKyAgICAgICAgVFRfdWludDE2X3QgKkxvb2t1cExpc3RJbmRleDsNCisgICAgICAgIFRGZWF0dXJlKCk6IEZlYXR1cmVQYXJhbXMoMCksIExvb2t1cENvdW50KDApLCBMb29rdXBMaXN0SW5kZXgoTlVMTCkge30NCisgICAgICAgIH5URmVhdHVyZSgpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYoTG9va3VwTGlzdEluZGV4KSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZVtdIExvb2t1cExpc3RJbmRleDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIHByaXZhdGU6DQorICAgICAgICBURmVhdHVyZShjb25zdCBURmVhdHVyZSYpOw0KKyAgICAgICAgVEZlYXR1cmUmIG9wZXJhdG9yPShjb25zdCBURmVhdHVyZSYpOw0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVEZlYXR1cmVSZWNvcmQgew0KKyAgICAgICAgVFRfdWludDMyX3QgRmVhdHVyZVRhZzsNCisgICAgICAgIHN0cnVjdCBURmVhdHVyZSBGZWF0dXJlOw0KKyAgICAgICAgVEZlYXR1cmVSZWNvcmQoKTogRmVhdHVyZVRhZygwKSB7fQ0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVEZlYXR1cmVSZWNvcmQoY29uc3QgVEZlYXR1cmVSZWNvcmQmKTsNCisgICAgICAgIFRGZWF0dXJlUmVjb3JkJiBvcGVyYXRvcj0oY29uc3QgVEZlYXR1cmVSZWNvcmQmKTsNCisgICAgfTsNCisgICAgc3RydWN0IFRGZWF0dXJlTGlzdCB7DQorICAgICAgICBpbnQgRmVhdHVyZUNvdW50Ow0KKyAgICAgICAgc3RydWN0IFRGZWF0dXJlUmVjb3JkICpGZWF0dXJlUmVjb3JkOw0KKyAgICAgICAgVEZlYXR1cmVMaXN0KCk6IEZlYXR1cmVDb3VudCgwKSwgRmVhdHVyZVJlY29yZChOVUxMKSB7fQ0KKyAgICAgICAgflRGZWF0dXJlTGlzdCgpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYoRmVhdHVyZVJlY29yZCkgew0KKyAgICAgICAgICAgICAgICBkZWxldGVbXSBGZWF0dXJlUmVjb3JkOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgcHJpdmF0ZToNCisgICAgICAgIFRGZWF0dXJlTGlzdChjb25zdCBURmVhdHVyZUxpc3QmKTsNCisgICAgICAgIFRGZWF0dXJlTGlzdCYgb3BlcmF0b3I9KGNvbnN0IFRGZWF0dXJlTGlzdCYpOw0KKyAgICB9Ow0KKyAgICBlbnVtIFRMb29rdXBGbGFnIHsNCisgICAgICAgIExPT0tVUEZMQUdfUmlnaHRUb0xlZnQgPSAweDAwMDEsDQorICAgICAgICBMT09LVVBGTEFHX0lnbm9yZUJhc2VHbHlwaHMgPSAweDAwMDIsDQorICAgICAgICBMT09LVVBGTEFHX0lnbm9yZUxpZ2F0dXJlcyA9IDB4MDAwNCwNCisgICAgICAgIExPT0tVUEZMQUdfSWdub3JlTWFya3MgPSAweDAwMDgsDQorICAgICAgICBMT09LVVBGTEFHX1Jlc2VydmVkID0gMHgwMEYwLA0KKyAgICAgICAgTE9PS1VQRkxBR19NYXJrQXR0YWNobWVudFR5cGUgPSAweEZGMDAsDQorICAgIH07DQorICAgIHN0cnVjdCBUQ292ZXJhZ2VGb3JtYXRCYXNlIHsNCisgICAgICAgIFRUX3VpbnQxNl90IENvdmVyYWdlRm9ybWF0Ow0KKyAgICAgICAgQ0ZYX0dseXBoTWFwIG1fZ2x5cGhNYXA7DQorICAgICAgICBUQ292ZXJhZ2VGb3JtYXRCYXNlKCk6IENvdmVyYWdlRm9ybWF0KDApIHt9DQorICAgICAgICB2aXJ0dWFsIH5UQ292ZXJhZ2VGb3JtYXRCYXNlKCkge30NCisgICAgcHJpdmF0ZToNCisgICAgICAgIFRDb3ZlcmFnZUZvcm1hdEJhc2UoY29uc3QgVENvdmVyYWdlRm9ybWF0QmFzZSYpOw0KKyAgICAgICAgVENvdmVyYWdlRm9ybWF0QmFzZSYgb3BlcmF0b3I9KGNvbnN0IFRDb3ZlcmFnZUZvcm1hdEJhc2UmKTsNCisgICAgfTsNCisgICAgc3RydWN0IFRDb3ZlcmFnZUZvcm1hdDE6IHB1YmxpYyBUQ292ZXJhZ2VGb3JtYXRCYXNlIHsNCisgICAgICAgIFRUX3VpbnQxNl90IEdseXBoQ291bnQ7DQorICAgICAgICBUVF91aW50MTZfdCAqR2x5cGhBcnJheTsNCisgICAgICAgIFRDb3ZlcmFnZUZvcm1hdDEoKTogR2x5cGhDb3VudCgwKSwgR2x5cGhBcnJheShOVUxMKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIENvdmVyYWdlRm9ybWF0ID0gMTsNCisgICAgICAgIH0NCisgICAgICAgIH5UQ292ZXJhZ2VGb3JtYXQxKCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZihHbHlwaEFycmF5KSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZVtdIEdseXBoQXJyYXk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVENvdmVyYWdlRm9ybWF0MShjb25zdCBUQ292ZXJhZ2VGb3JtYXQxJik7DQorICAgICAgICBUQ292ZXJhZ2VGb3JtYXQxJiBvcGVyYXRvcj0oY29uc3QgVENvdmVyYWdlRm9ybWF0MSYpOw0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVFJhbmdlUmVjb3JkIHsNCisgICAgICAgIFRUX3VpbnQxNl90IFN0YXJ0Ow0KKyAgICAgICAgVFRfdWludDE2X3QgRW5kOw0KKyAgICAgICAgVFRfdWludDE2X3QgU3RhcnRDb3ZlcmFnZUluZGV4Ow0KKyAgICAgICAgVFJhbmdlUmVjb3JkKCk6IFN0YXJ0KDApLCBFbmQoMCksIFN0YXJ0Q292ZXJhZ2VJbmRleCgwKSB7fQ0KKyAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPiAoY29uc3QgVFJhbmdlUmVjb3JkICZyMSwgY29uc3QgVFJhbmdlUmVjb3JkICZyMikNCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm4gcjEuU3RhcnQgPiByMi5TdGFydDsNCisgICAgICAgIH0NCisgICAgcHJpdmF0ZToNCisgICAgICAgIFRSYW5nZVJlY29yZChjb25zdCBUUmFuZ2VSZWNvcmQmKTsNCisgICAgfTsNCisgICAgc3RydWN0IFRDb3ZlcmFnZUZvcm1hdDI6IHB1YmxpYyBUQ292ZXJhZ2VGb3JtYXRCYXNlIHsNCisgICAgICAgIFRUX3VpbnQxNl90IFJhbmdlQ291bnQ7DQorICAgICAgICBzdHJ1Y3QgVFJhbmdlUmVjb3JkICpSYW5nZVJlY29yZDsNCisgICAgICAgIFRDb3ZlcmFnZUZvcm1hdDIoKTogUmFuZ2VDb3VudCgwKSwgUmFuZ2VSZWNvcmQoTlVMTCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBDb3ZlcmFnZUZvcm1hdCA9IDI7DQorICAgICAgICB9DQorICAgICAgICB+VENvdmVyYWdlRm9ybWF0MigpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYoUmFuZ2VSZWNvcmQpIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlW10gUmFuZ2VSZWNvcmQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVENvdmVyYWdlRm9ybWF0Mihjb25zdCBUQ292ZXJhZ2VGb3JtYXQyJik7DQorICAgICAgICBUQ292ZXJhZ2VGb3JtYXQyJiBvcGVyYXRvcj0oY29uc3QgVENvdmVyYWdlRm9ybWF0MiYpOw0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVENsYXNzRGVmRm9ybWF0QmFzZSB7DQorICAgICAgICBUVF91aW50MTZfdCBDbGFzc0Zvcm1hdDsNCisgICAgICAgIFRDbGFzc0RlZkZvcm1hdEJhc2UoKTogQ2xhc3NGb3JtYXQoMCkge30NCisgICAgICAgIHZpcnR1YWwgflRDbGFzc0RlZkZvcm1hdEJhc2UoKSB7fQ0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVENsYXNzRGVmRm9ybWF0QmFzZShjb25zdCBUQ2xhc3NEZWZGb3JtYXRCYXNlJik7DQorICAgICAgICBUQ2xhc3NEZWZGb3JtYXRCYXNlJiBvcGVyYXRvcj0oY29uc3QgVENsYXNzRGVmRm9ybWF0QmFzZSYpOw0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVENsYXNzRGVmRm9ybWF0MTogcHVibGljIFRDbGFzc0RlZkZvcm1hdEJhc2Ugew0KKyAgICAgICAgVFRfdWludDE2X3QgU3RhcnRHbHlwaDsNCisgICAgICAgIFRUX3VpbnQxNl90IEdseXBoQ291bnQ7DQorICAgICAgICBUVF91aW50MTZfdCAqQ2xhc3NWYWx1ZUFycmF5Ow0KKyAgICAgICAgVENsYXNzRGVmRm9ybWF0MSgpOiBTdGFydEdseXBoKDApLCBHbHlwaENvdW50KDApLCBDbGFzc1ZhbHVlQXJyYXkoTlVMTCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBDbGFzc0Zvcm1hdCA9IDE7DQorICAgICAgICB9DQorICAgICAgICB+VENsYXNzRGVmRm9ybWF0MSgpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYoQ2xhc3NWYWx1ZUFycmF5KSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZVtdIENsYXNzVmFsdWVBcnJheTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIHByaXZhdGU6DQorICAgICAgICBUQ2xhc3NEZWZGb3JtYXQxKGNvbnN0IFRDbGFzc0RlZkZvcm1hdDEmKTsNCisgICAgICAgIFRDbGFzc0RlZkZvcm1hdDEmIG9wZXJhdG9yPShjb25zdCBUQ2xhc3NEZWZGb3JtYXQxJik7DQorICAgIH07DQorICAgIHN0cnVjdCBUQ2xhc3NSYW5nZVJlY29yZCB7DQorICAgICAgICBUVF91aW50MTZfdCBTdGFydDsNCisgICAgICAgIFRUX3VpbnQxNl90IEVuZDsNCisgICAgICAgIFRUX3VpbnQxNl90IENsYXNzOw0KKyAgICAgICAgVENsYXNzUmFuZ2VSZWNvcmQoKTogU3RhcnQoMCksIEVuZCgwKSwgQ2xhc3MoMCkge30NCisgICAgcHJpdmF0ZToNCisgICAgICAgIFRDbGFzc1JhbmdlUmVjb3JkKGNvbnN0IFRDbGFzc1JhbmdlUmVjb3JkJik7DQorICAgICAgICBUQ2xhc3NSYW5nZVJlY29yZCYgb3BlcmF0b3I9KGNvbnN0IFRDbGFzc1JhbmdlUmVjb3JkJik7DQorICAgIH07DQorICAgIHN0cnVjdCBUQ2xhc3NEZWZGb3JtYXQyOiBwdWJsaWMgVENsYXNzRGVmRm9ybWF0QmFzZSB7DQorICAgICAgICBUVF91aW50MTZfdCBDbGFzc1JhbmdlQ291bnQ7DQorICAgICAgICBzdHJ1Y3QgVENsYXNzUmFuZ2VSZWNvcmQgKkNsYXNzUmFuZ2VSZWNvcmQ7DQorICAgICAgICBUQ2xhc3NEZWZGb3JtYXQyKCk6IENsYXNzUmFuZ2VDb3VudCgwKSwgQ2xhc3NSYW5nZVJlY29yZChOVUxMKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIENsYXNzRm9ybWF0ID0gMjsNCisgICAgICAgIH0NCisgICAgICAgIH5UQ2xhc3NEZWZGb3JtYXQyKCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZihDbGFzc1JhbmdlUmVjb3JkKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZVtdIENsYXNzUmFuZ2VSZWNvcmQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVENsYXNzRGVmRm9ybWF0Mihjb25zdCBUQ2xhc3NEZWZGb3JtYXQyJik7DQorICAgICAgICBUQ2xhc3NEZWZGb3JtYXQyJiBvcGVyYXRvcj0oY29uc3QgVENsYXNzRGVmRm9ybWF0MiYpOw0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVERldmljZSB7DQorICAgICAgICBUVF91aW50MTZfdCBTdGFydFNpemU7DQorICAgICAgICBUVF91aW50MTZfdCBFbmRTaXplOw0KKyAgICAgICAgVFRfdWludDE2X3QgRGVsdGFGb3JtYXQ7DQorICAgICAgICBURGV2aWNlKCk6IFN0YXJ0U2l6ZSgwKSwgRW5kU2l6ZSgwKSwgRGVsdGFGb3JtYXQoMCkge30NCisgICAgcHJpdmF0ZToNCisgICAgICAgIFREZXZpY2UoY29uc3QgVERldmljZSYpOw0KKyAgICAgICAgVERldmljZSYgb3BlcmF0b3I9KGNvbnN0IFREZXZpY2UmKTsNCisgICAgfTsNCisgICAgc3RydWN0IFRTdWJUYWJsZUJhc2Ugew0KKyAgICAgICAgVFRfdWludDE2X3QgU3Vic3RGb3JtYXQ7DQorICAgICAgICBUU3ViVGFibGVCYXNlKCk6IFN1YnN0Rm9ybWF0KDApIHt9DQorICAgICAgICB2aXJ0dWFsIH5UU3ViVGFibGVCYXNlKCkge30NCisgICAgcHJpdmF0ZToNCisgICAgICAgIFRTdWJUYWJsZUJhc2UoY29uc3QgVFN1YlRhYmxlQmFzZSYpOw0KKyAgICAgICAgVFN1YlRhYmxlQmFzZSYgb3BlcmF0b3I9KGNvbnN0IFRTdWJUYWJsZUJhc2UmKTsNCisgICAgfTsNCisgICAgc3RydWN0IFRTaW5nbGVTdWJzdEZvcm1hdDE6IHB1YmxpYyBUU3ViVGFibGVCYXNlIHsNCisgICAgICAgIFRDb3ZlcmFnZUZvcm1hdEJhc2UgKkNvdmVyYWdlOw0KKyAgICAgICAgVFRfaW50MTZfdCBEZWx0YUdseXBoSUQ7DQorICAgICAgICBUU2luZ2xlU3Vic3RGb3JtYXQxKCk6IERlbHRhR2x5cGhJRCgwKSwgQ292ZXJhZ2UoTlVMTCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBTdWJzdEZvcm1hdCA9IDE7DQorICAgICAgICB9DQorICAgICAgICB+VFNpbmdsZVN1YnN0Rm9ybWF0MSgpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYoQ292ZXJhZ2UpIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIENvdmVyYWdlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgcHJpdmF0ZToNCisgICAgICAgIFRTaW5nbGVTdWJzdEZvcm1hdDEoY29uc3QgVFNpbmdsZVN1YnN0Rm9ybWF0MSYpOw0KKyAgICAgICAgVFNpbmdsZVN1YnN0Rm9ybWF0MSYgb3BlcmF0b3I9KGNvbnN0IFRTaW5nbGVTdWJzdEZvcm1hdDEmKTsNCisgICAgfTsNCisgICAgc3RydWN0IFRTaW5nbGVTdWJzdEZvcm1hdDI6IHB1YmxpYyBUU3ViVGFibGVCYXNlIHsNCisgICAgICAgIFRDb3ZlcmFnZUZvcm1hdEJhc2UgKkNvdmVyYWdlOw0KKyAgICAgICAgVFRfdWludDE2X3QgR2x5cGhDb3VudDsNCisgICAgICAgIFRUX3VpbnQxNl90ICpTdWJzdGl0dXRlOw0KKyAgICAgICAgVFNpbmdsZVN1YnN0Rm9ybWF0MigpOiBDb3ZlcmFnZShOVUxMKSwgR2x5cGhDb3VudCgwKSwgU3Vic3RpdHV0ZShOVUxMKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIFN1YnN0Rm9ybWF0ID0gMjsNCisgICAgICAgIH0NCisgICAgICAgIH5UU2luZ2xlU3Vic3RGb3JtYXQyKCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZihDb3ZlcmFnZSkgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgQ292ZXJhZ2U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmKFN1YnN0aXR1dGUpIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlW10gU3Vic3RpdHV0ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIHByaXZhdGU6DQorICAgICAgICBUU2luZ2xlU3Vic3RGb3JtYXQyKGNvbnN0IFRTaW5nbGVTdWJzdEZvcm1hdDImKTsNCisgICAgICAgIFRTaW5nbGVTdWJzdEZvcm1hdDImIG9wZXJhdG9yPShjb25zdCBUU2luZ2xlU3Vic3RGb3JtYXQyJik7DQorICAgIH07DQorICAgIHN0cnVjdCBUTG9va3VwIHsNCisgICAgICAgIFRUX3VpbnQxNl90IExvb2t1cFR5cGU7DQorICAgICAgICBUVF91aW50MTZfdCBMb29rdXBGbGFnOw0KKyAgICAgICAgVFRfdWludDE2X3QgU3ViVGFibGVDb3VudDsNCisgICAgICAgIHN0cnVjdCBUU3ViVGFibGVCYXNlICoqU3ViVGFibGU7DQorICAgICAgICBUTG9va3VwKCk6IExvb2t1cFR5cGUoMCksIExvb2t1cEZsYWcoMCksIFN1YlRhYmxlQ291bnQoMCksIFN1YlRhYmxlKE5VTEwpIHt9DQorICAgICAgICB+VExvb2t1cCgpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYoU3ViVGFibGVDb3VudCA+IDAgJiYgU3ViVGFibGUgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgU3ViVGFibGVDb3VudDsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU3ViVGFibGVbaV07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVsZXRlW10gU3ViVGFibGU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgVExvb2t1cChjb25zdCBUTG9va3VwJik7DQorICAgICAgICBUTG9va3VwJiBvcGVyYXRvcj0oY29uc3QgVExvb2t1cCYpOw0KKyAgICB9Ow0KKyAgICBzdHJ1Y3QgVExvb2t1cExpc3Qgew0KKyAgICAgICAgaW50IExvb2t1cENvdW50Ow0KKyAgICAgICAgc3RydWN0IFRMb29rdXAgKkxvb2t1cDsNCisgICAgICAgIFRMb29rdXBMaXN0KCk6IExvb2t1cENvdW50KDApLCBMb29rdXAoTlVMTCkge30NCisgICAgICAgIH5UTG9va3VwTGlzdCgpDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYoTG9va3VwKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZVtdIExvb2t1cDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIHByaXZhdGU6DQorICAgICAgICBUTG9va3VwTGlzdChjb25zdCBUTG9va3VwTGlzdCYpOw0KKyAgICAgICAgVExvb2t1cExpc3QmIG9wZXJhdG9yPShjb25zdCBUTG9va3VwTGlzdCYpOw0KKyAgICB9Ow0KKyAgICBib29sIFBhcnNlKA0KKyAgICAgICAgRlRfQnl0ZXMgc2NyaXB0bGlzdCwNCisgICAgICAgIEZUX0J5dGVzIGZlYXR1cmVsaXN0LA0KKyAgICAgICAgRlRfQnl0ZXMgbG9va3VwbGlzdCk7DQorICAgIHZvaWQgUGFyc2VTY3JpcHRMaXN0KEZUX0J5dGVzIHJhdywgVFNjcmlwdExpc3QgKnJlYyk7DQorICAgIHZvaWQgUGFyc2VTY3JpcHQoRlRfQnl0ZXMgcmF3LCBUU2NyaXB0ICpyZWMpOw0KKyAgICB2b2lkIFBhcnNlTGFuZ1N5cyhGVF9CeXRlcyByYXcsIFRMYW5nU3lzICpyZWMpOw0KKyAgICB2b2lkIFBhcnNlRmVhdHVyZUxpc3QoRlRfQnl0ZXMgcmF3LCBURmVhdHVyZUxpc3QgKnJlYyk7DQorICAgIHZvaWQgUGFyc2VGZWF0dXJlKEZUX0J5dGVzIHJhdywgVEZlYXR1cmUgKnJlYyk7DQorICAgIHZvaWQgUGFyc2VMb29rdXBMaXN0KEZUX0J5dGVzIHJhdywgVExvb2t1cExpc3QgKnJlYyk7DQorICAgIHZvaWQgUGFyc2VMb29rdXAoRlRfQnl0ZXMgcmF3LCBUTG9va3VwICpyZWMpOw0KKyAgICB2b2lkIFBhcnNlQ292ZXJhZ2UoRlRfQnl0ZXMgcmF3LCBUQ292ZXJhZ2VGb3JtYXRCYXNlICoqcmVjKTsNCisgICAgdm9pZCBQYXJzZUNvdmVyYWdlRm9ybWF0MShGVF9CeXRlcyByYXcsIFRDb3ZlcmFnZUZvcm1hdDEgKnJlYyk7DQorICAgIHZvaWQgUGFyc2VDb3ZlcmFnZUZvcm1hdDIoRlRfQnl0ZXMgcmF3LCBUQ292ZXJhZ2VGb3JtYXQyICpyZWMpOw0KKyAgICB2b2lkIFBhcnNlU2luZ2xlU3Vic3QoRlRfQnl0ZXMgcmF3LCBUU3ViVGFibGVCYXNlICoqcmVjKTsNCisgICAgdm9pZCBQYXJzZVNpbmdsZVN1YnN0Rm9ybWF0MShGVF9CeXRlcyByYXcsIFRTaW5nbGVTdWJzdEZvcm1hdDEgKnJlYyk7DQorICAgIHZvaWQgUGFyc2VTaW5nbGVTdWJzdEZvcm1hdDIoRlRfQnl0ZXMgcmF3LCBUU2luZ2xlU3Vic3RGb3JtYXQyICpyZWMpOw0KKyAgICBib29sIEdldFZlcnRpY2FsR2x5cGhTdWIoDQorICAgICAgICBUVF91aW50MzJfdCBnbHlwaG51bSwNCisgICAgICAgIFRUX3VpbnQzMl90ICp2Z2x5cGhudW0sDQorICAgICAgICBzdHJ1Y3QgVEZlYXR1cmUgKkZlYXR1cmUpOw0KKyAgICBib29sIEdldFZlcnRpY2FsR2x5cGhTdWIyKA0KKyAgICAgICAgVFRfdWludDMyX3QgZ2x5cGhudW0sDQorICAgICAgICBUVF91aW50MzJfdCAqdmdseXBobnVtLA0KKyAgICAgICAgc3RydWN0IFRMb29rdXAgKkxvb2t1cCk7DQorICAgIGludCBHZXRDb3ZlcmFnZUluZGV4KHN0cnVjdCBUQ292ZXJhZ2VGb3JtYXRCYXNlICpDb3ZlcmFnZSwgVFRfdWludDMyX3QgZyk7DQorICAgIFRUX3VpbnQ4X3QgR2V0VUludDgoRlRfQnl0ZXMmIHApIGNvbnN0DQorICAgIHsNCisgICAgICAgIFRUX3VpbnQ4X3QgcmV0ID0gcFswXTsNCisgICAgICAgIHAgKz0gMTsNCisgICAgICAgIHJldHVybiByZXQ7DQorICAgIH0NCisgICAgVFRfaW50MTZfdCBHZXRJbnQxNihGVF9CeXRlcyYgcCkgY29uc3QNCisgICAgew0KKyAgICAgICAgVFRfdWludDE2X3QgcmV0ID0gcFswXSA8PCA4IHwgcFsxXTsNCisgICAgICAgIHAgKz0gMjsNCisgICAgICAgIHJldHVybiAqKFRUX2ludDE2X3QqKSZyZXQ7DQorICAgIH0NCisgICAgVFRfdWludDE2X3QgR2V0VUludDE2KEZUX0J5dGVzJiBwKSBjb25zdA0KKyAgICB7DQorICAgICAgICBUVF91aW50MTZfdCByZXQgPSBwWzBdIDw8IDggfCBwWzFdOw0KKyAgICAgICAgcCArPSAyOw0KKyAgICAgICAgcmV0dXJuIHJldDsNCisgICAgfQ0KKyAgICBUVF9pbnQzMl90IEdldEludDMyKEZUX0J5dGVzJiBwKSBjb25zdA0KKyAgICB7DQorICAgICAgICBUVF91aW50MzJfdCByZXQgPSBwWzBdIDw8IDI0IHwgcFsxXSA8PCAxNiB8IHBbMl0gPDwgOCB8IHBbM107DQorICAgICAgICBwICs9IDQ7DQorICAgICAgICByZXR1cm4gKihUVF9pbnQzMl90KikmcmV0Ow0KKyAgICB9DQorICAgIFRUX3VpbnQzMl90IEdldFVJbnQzMihGVF9CeXRlcyYgcCkgY29uc3QNCisgICAgew0KKyAgICAgICAgVFRfdWludDMyX3QgcmV0ID0gcFswXSA8PCAyNCB8IHBbMV0gPDwgMTYgfCBwWzJdIDw8IDggfCBwWzNdOw0KKyAgICAgICAgcCArPSA0Ow0KKyAgICAgICAgcmV0dXJuIHJldDsNCisgICAgfQ0KKyAgICBDRlhfQ01hcERXb3JkVG9EV29yZCBtX2ZlYXR1cmVNYXA7DQorICAgIEZYX0JPT0wJbV9iRmVhdXR1cmVNYXBMb2FkOw0KKyAgICBib29sIGxvYWRlZDsNCisgICAgc3RydWN0IHR0X2dzdWJfaGVhZGVyIGhlYWRlcjsNCisgICAgc3RydWN0IFRTY3JpcHRMaXN0IFNjcmlwdExpc3Q7DQorICAgIHN0cnVjdCBURmVhdHVyZUxpc3QgRmVhdHVyZUxpc3Q7DQorICAgIHN0cnVjdCBUTG9va3VwTGlzdCBMb29rdXBMaXN0Ow0KK307DQorY2xhc3MgQ0ZYX0dTVUJUYWJsZSA6IHB1YmxpYyBJRlhfR1NVQlRhYmxlLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgdm9pZAlSZWxlYXNlKCkNCisgICAgew0KKyAgICAgICAgZGVsZXRlIHRoaXM7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9CT09MIEdldFZlcnRpY2FsR2x5cGgoRlhfRFdPUkQgZ2x5cGhudW0sIEZYX0RXT1JEKiB2Z2x5cGhudW0pOw0KKyAgICBDRlhfQ1RUR1NVQlRhYmxlIG1fR3N1YkltcDsNCit9Ow0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMmU1NjEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2UuY3BwCkBAIC0wLDAgKzEsMTA0NyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgiDQorI2luY2x1ZGUgInBhZ2VpbnQuaCINCit2b2lkIENQREZfUGFnZU9iamVjdDo6UmVsZWFzZSgpDQorew0KKyAgICBkZWxldGUgdGhpczsNCit9DQorQ1BERl9QYWdlT2JqZWN0KiBDUERGX1BhZ2VPYmplY3Q6OkNyZWF0ZShpbnQgdHlwZSkNCit7DQorICAgIHN3aXRjaCAodHlwZSkgew0KKyAgICAgICAgY2FzZSBQREZQQUdFX1RFWFQ6DQorICAgICAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX1RleHRPYmplY3Q7DQorICAgICAgICBjYXNlIFBERlBBR0VfSU1BR0U6DQorICAgICAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX0ltYWdlT2JqZWN0Ow0KKyAgICAgICAgY2FzZSBQREZQQUdFX1BBVEg6DQorICAgICAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX1BhdGhPYmplY3Q7DQorICAgICAgICBjYXNlIFBERlBBR0VfU0hBRElORzoNCisgICAgICAgICAgICByZXR1cm4gRlhfTkVXIENQREZfU2hhZGluZ09iamVjdDsNCisgICAgICAgIGNhc2UgUERGUEFHRV9GT1JNOg0KKyAgICAgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9Gb3JtT2JqZWN0Ow0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX1BhZ2VPYmplY3QqIENQREZfUGFnZU9iamVjdDo6Q2xvbmUoKSBjb25zdA0KK3sNCisgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqID0gQ3JlYXRlKG1fVHlwZSk7DQorICAgIHBPYmotPkNvcHkodGhpcyk7DQorICAgIHJldHVybiBwT2JqOw0KK30NCit2b2lkIENQREZfUGFnZU9iamVjdDo6Q29weShjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBTcmMpDQorew0KKyAgICBpZiAobV9UeXBlICE9IHBTcmMtPm1fVHlwZSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENvcHlEYXRhKHBTcmMpOw0KKyAgICBDb3B5U3RhdGVzKCpwU3JjKTsNCisgICAgbV9MZWZ0ID0gcFNyYy0+bV9MZWZ0Ow0KKyAgICBtX1JpZ2h0ID0gcFNyYy0+bV9SaWdodDsNCisgICAgbV9Ub3AgPSBwU3JjLT5tX1RvcDsNCisgICAgbV9Cb3R0b20gPSBwU3JjLT5tX0JvdHRvbTsNCit9DQordm9pZCBDUERGX1BhZ2VPYmplY3Q6OkFwcGVuZENsaXBQYXRoKENQREZfUGF0aCBwYXRoLCBpbnQgdHlwZSwgRlhfQk9PTCBiQXV0b01lcmdlKQ0KK3sNCisgICAgbV9DbGlwUGF0aC5BcHBlbmRQYXRoKHBhdGgsIHR5cGUsIGJBdXRvTWVyZ2UpOw0KK30NCit2b2lkIENQREZfUGFnZU9iamVjdDo6Q29weUNsaXBQYXRoKENQREZfUGFnZU9iamVjdCogcE9iaikNCit7DQorICAgIG1fQ2xpcFBhdGggPSBwT2JqLT5tX0NsaXBQYXRoOw0KK30NCit2b2lkIENQREZfUGFnZU9iamVjdDo6UmVtb3ZlQ2xpcFBhdGgoKQ0KK3sNCisgICAgbV9DbGlwUGF0aC5TZXROdWxsKCk7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlT2JqZWN0OjpSZWNhbGNCQm94KCkNCit7DQorICAgIHN3aXRjaCAobV9UeXBlKSB7DQorICAgICAgICBjYXNlIFBERlBBR0VfVEVYVDoNCisgICAgICAgICAgICAoKENQREZfVGV4dE9iamVjdCopdGhpcyktPlJlY2FsY1Bvc2l0aW9uRGF0YSgpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQREZQQUdFX1BBVEg6DQorICAgICAgICAgICAgKChDUERGX1BhdGhPYmplY3QqKXRoaXMpLT5DYWxjQm91bmRpbmdCb3goKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUERGUEFHRV9TSEFESU5HOg0KKyAgICAgICAgICAgICgoQ1BERl9TaGFkaW5nT2JqZWN0Kil0aGlzKS0+Q2FsY0JvdW5kaW5nQm94KCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCit9DQordm9pZCBDUERGX1BhZ2VPYmplY3Q6OlRyYW5zZm9ybUNsaXBQYXRoKENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCkNCit7DQorICAgIGlmIChtX0NsaXBQYXRoLklzTnVsbCgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9DbGlwUGF0aC5HZXRNb2RpZnkoKTsNCisgICAgbV9DbGlwUGF0aC5UcmFuc2Zvcm0obWF0cml4KTsNCit9DQordm9pZCBDUERGX1BhZ2VPYmplY3Q6OlRyYW5zZm9ybUdlbmVyYWxTdGF0ZShDRlhfQWZmaW5lTWF0cml4JiBtYXRyaXgpDQorew0KKyAgICBpZihtX0dlbmVyYWxTdGF0ZS5Jc051bGwoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfR2VuZXJhbFN0YXRlRGF0YSogcEdTID0gbV9HZW5lcmFsU3RhdGUuR2V0TW9kaWZ5KCk7DQorICAgIHBHUy0+bV9NYXRyaXguQ29uY2F0KG1hdHJpeCk7DQorfQ0KK0ZYX1JFQ1QgQ1BERl9QYWdlT2JqZWN0OjpHZXRCQm94KGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgpIGNvbnN0DQorew0KKyAgICBDRlhfRmxvYXRSZWN0IHJlY3QobV9MZWZ0LCBtX0JvdHRvbSwgbV9SaWdodCwgbV9Ub3ApOw0KKyAgICBpZiAocE1hdHJpeCkgew0KKyAgICAgICAgcE1hdHJpeC0+VHJhbnNmb3JtUmVjdChyZWN0KTsNCisgICAgfQ0KKyAgICByZXR1cm4gcmVjdC5HZXRPdXR0ZXJSZWN0KCk7DQorfQ0KK0NQREZfVGV4dE9iamVjdDo6Q1BERl9UZXh0T2JqZWN0KCkNCit7DQorICAgIG1fVHlwZSA9IFBERlBBR0VfVEVYVDsNCisgICAgbV9wQ2hhckNvZGVzID0gTlVMTDsNCisgICAgbV9wQ2hhclBvcyA9IE5VTEw7DQorICAgIG1fbkNoYXJzID0gMDsNCisgICAgbV9Qb3NYID0gbV9Qb3NZID0gMDsNCit9DQorQ1BERl9UZXh0T2JqZWN0Ojp+Q1BERl9UZXh0T2JqZWN0KCkNCit7DQorICAgIGlmIChtX25DaGFycyA+IDEgJiYgbV9wQ2hhckNvZGVzKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENoYXJDb2Rlcyk7DQorICAgIH0NCisgICAgaWYgKG1fcENoYXJQb3MpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wQ2hhclBvcyk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1RleHRPYmplY3Q6OkdldEl0ZW1JbmZvKGludCBpbmRleCwgQ1BERl9UZXh0T2JqZWN0SXRlbSogcEluZm8pIGNvbnN0DQorew0KKyAgICBwSW5mby0+bV9DaGFyQ29kZSA9IG1fbkNoYXJzID09IDEgPyAoRlhfRFdPUkQpKEZYX1VJTlRQVFIpbV9wQ2hhckNvZGVzIDogbV9wQ2hhckNvZGVzW2luZGV4XTsNCisgICAgcEluZm8tPm1fT3JpZ2luWCA9IGluZGV4ID8gbV9wQ2hhclBvc1tpbmRleCAtIDFdIDogMDsNCisgICAgcEluZm8tPm1fT3JpZ2luWSA9IDA7DQorICAgIGlmIChwSW5mby0+bV9DaGFyQ29kZSA9PSAtMSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfRm9udCogcEZvbnQgPSBtX1RleHRTdGF0ZS5HZXRGb250KCk7DQorICAgIGlmIChwRm9udC0+R2V0Rm9udFR5cGUoKSAhPSBQREZGT05UX0NJREZPTlQpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoISgoQ1BERl9DSURGb250KilwRm9udCktPklzVmVydFdyaXRpbmcoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX1dPUkQgQ0lEID0gKChDUERGX0NJREZvbnQqKXBGb250KS0+Q0lERnJvbUNoYXJDb2RlKHBJbmZvLT5tX0NoYXJDb2RlKTsNCisgICAgcEluZm8tPm1fT3JpZ2luWSA9IHBJbmZvLT5tX09yaWdpblg7DQorICAgIHBJbmZvLT5tX09yaWdpblggPSAwOw0KKyAgICBzaG9ydCB2eCwgdnk7DQorICAgICgoQ1BERl9DSURGb250KilwRm9udCktPkdldFZlcnRPcmlnaW4oQ0lELCB2eCwgdnkpOw0KKyAgICBGWF9GTE9BVCBmb250c2l6ZSA9IG1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCk7DQorICAgIHBJbmZvLT5tX09yaWdpblggLT0gZm9udHNpemUgKiB2eCAvIDEwMDA7DQorICAgIHBJbmZvLT5tX09yaWdpblkgLT0gZm9udHNpemUgKiB2eSAvIDEwMDA7DQorfQ0KK2ludCBDUERGX1RleHRPYmplY3Q6OkNvdW50Q2hhcnMoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fbkNoYXJzID09IDEpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIGludCBjb3VudCA9IDA7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9uQ2hhcnM7IGkgKyspDQorICAgICAgICBpZiAobV9wQ2hhckNvZGVzW2ldICE9IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICAgICAgY291bnQgKys7DQorICAgICAgICB9DQorICAgIHJldHVybiBjb3VudDsNCit9DQordm9pZCBDUERGX1RleHRPYmplY3Q6OkdldENoYXJJbmZvKGludCBpbmRleCwgRlhfRFdPUkQmIGNoYXJjb2RlLCBGWF9GTE9BVCYga2VybmluZykgY29uc3QNCit7DQorICAgIGlmIChtX25DaGFycyA9PSAxKSB7DQorICAgICAgICBjaGFyY29kZSA9IChGWF9EV09SRCkoRlhfVUlOVFBUUiltX3BDaGFyQ29kZXM7DQorICAgICAgICBrZXJuaW5nID0gMDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgY291bnQgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbkNoYXJzOyBpICsrKSB7DQorICAgICAgICBpZiAobV9wQ2hhckNvZGVzW2ldICE9IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICAgICAgaWYgKGNvdW50ID09IGluZGV4KSB7DQorICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gbV9wQ2hhckNvZGVzW2ldOw0KKyAgICAgICAgICAgICAgICBpZiAoaSA9PSBtX25DaGFycyAtIDEgfHwgbV9wQ2hhckNvZGVzW2kgKyAxXSAhPSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAga2VybmluZyA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBrZXJuaW5nID0gbV9wQ2hhclBvc1tpXTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNvdW50ICsrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9UZXh0T2JqZWN0OjpHZXRDaGFySW5mbyhpbnQgaW5kZXgsIENQREZfVGV4dE9iamVjdEl0ZW0qIHBJbmZvKSBjb25zdA0KK3sNCisgICAgaWYgKG1fbkNoYXJzID09IDEpIHsNCisgICAgICAgIEdldEl0ZW1JbmZvKDAsIHBJbmZvKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgY291bnQgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbkNoYXJzOyBpICsrKSB7DQorICAgICAgICBGWF9EV09SRCBjaGFyY29kZSA9IG1fcENoYXJDb2Rlc1tpXTsNCisgICAgICAgIGlmIChjaGFyY29kZSA9PSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNvdW50ID09IGluZGV4KSB7DQorICAgICAgICAgICAgR2V0SXRlbUluZm8oaSwgcEluZm8pOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY291bnQgKys7DQorICAgIH0NCit9DQordm9pZCBDUERGX1RleHRPYmplY3Q6OkNvcHlEYXRhKGNvbnN0IENQREZfUGFnZU9iamVjdCogcFNyYykNCit7DQorICAgIGNvbnN0IENQREZfVGV4dE9iamVjdCogcFNyY09iaiA9IChjb25zdCBDUERGX1RleHRPYmplY3QqKXBTcmM7DQorICAgIGlmIChtX25DaGFycyA+IDEgJiYgbV9wQ2hhckNvZGVzKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENoYXJDb2Rlcyk7DQorICAgICAgICBtX3BDaGFyQ29kZXMgPSBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BDaGFyUG9zKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENoYXJQb3MpOw0KKyAgICAgICAgbV9wQ2hhclBvcyA9IE5VTEw7DQorICAgIH0NCisgICAgbV9uQ2hhcnMgPSBwU3JjT2JqLT5tX25DaGFyczsNCisgICAgaWYgKG1fbkNoYXJzID4gMSkgew0KKyAgICAgICAgbV9wQ2hhckNvZGVzID0gRlhfQWxsb2MoRlhfRFdPUkQsIG1fbkNoYXJzKTsNCisgICAgICAgIG1fcENoYXJQb3MgPSBGWF9BbGxvYyhGWF9GTE9BVCwgbV9uQ2hhcnMgLSAxKTsNCisgICAgICAgIGludCBpOw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fbkNoYXJzOyBpICsrKSB7DQorICAgICAgICAgICAgbV9wQ2hhckNvZGVzW2ldID0gcFNyY09iai0+bV9wQ2hhckNvZGVzW2ldOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fbkNoYXJzIC0gMTsgaSArKykgew0KKyAgICAgICAgICAgIG1fcENoYXJQb3NbaV0gPSBwU3JjT2JqLT5tX3BDaGFyUG9zW2ldOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wQ2hhckNvZGVzID0gcFNyY09iai0+bV9wQ2hhckNvZGVzOw0KKyAgICB9DQorICAgIG1fUG9zWCA9IHBTcmNPYmotPm1fUG9zWDsNCisgICAgbV9Qb3NZID0gcFNyY09iai0+bV9Qb3NZOw0KK30NCit2b2lkIENQREZfVGV4dE9iamVjdDo6R2V0VGV4dE1hdHJpeChDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4KSBjb25zdA0KK3sNCisgICAgRlhfRkxPQVQqIHBUZXh0TWF0cml4ID0gbV9UZXh0U3RhdGUuR2V0TWF0cml4KCk7DQorICAgIHBNYXRyaXgtPlNldChwVGV4dE1hdHJpeFswXSwgcFRleHRNYXRyaXhbMl0sIHBUZXh0TWF0cml4WzFdLCBwVGV4dE1hdHJpeFszXSwgbV9Qb3NYLCBtX1Bvc1kpOw0KK30NCit2b2lkIENQREZfVGV4dE9iamVjdDo6U2V0U2VnbWVudHMoY29uc3QgQ0ZYX0J5dGVTdHJpbmcqIHBTdHJzLCBGWF9GTE9BVCogcEtlcm5pbmcsIGludCBuc2VncykNCit7DQorICAgIGlmIChtX25DaGFycyA+IDEgJiYgbV9wQ2hhckNvZGVzKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENoYXJDb2Rlcyk7DQorICAgICAgICBtX3BDaGFyQ29kZXMgPSBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BDaGFyUG9zKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENoYXJQb3MpOw0KKyAgICAgICAgbV9wQ2hhclBvcyA9IE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9Gb250KiBwRm9udCA9IG1fVGV4dFN0YXRlLkdldEZvbnQoKTsNCisgICAgbV9uQ2hhcnMgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5zZWdzOyBpICsrKSB7DQorICAgICAgICBtX25DaGFycyArPSBwRm9udC0+Q291bnRDaGFyKHBTdHJzW2ldLCBwU3Ryc1tpXS5HZXRMZW5ndGgoKSk7DQorICAgIH0NCisgICAgbV9uQ2hhcnMgKz0gbnNlZ3MgLSAxOw0KKyAgICBpZiAobV9uQ2hhcnMgPiAxKSB7DQorICAgICAgICBtX3BDaGFyQ29kZXMgPSBGWF9BbGxvYyhGWF9EV09SRCwgbV9uQ2hhcnMpOw0KKyAgICAgICAgbV9wQ2hhclBvcyA9IEZYX0FsbG9jKEZYX0ZMT0FULCBtX25DaGFycyAtIDEpOw0KKyAgICAgICAgaW50IGluZGV4ID0gMDsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnNlZ3M7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9MUENTVFIgc2VnbWVudCA9IHBTdHJzW2ldOw0KKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAwLCBsZW4gPSBwU3Ryc1tpXS5HZXRMZW5ndGgoKTsNCisgICAgICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbGVuKSB7DQorICAgICAgICAgICAgICAgIG1fcENoYXJDb2Rlc1tpbmRleCsrXSA9IHBGb250LT5HZXROZXh0Q2hhcihzZWdtZW50LCBvZmZzZXQpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaSAhPSBuc2VncyAtIDEpIHsNCisgICAgICAgICAgICAgICAgbV9wQ2hhclBvc1tpbmRleCAtIDFdID0gcEtlcm5pbmdbaV07DQorICAgICAgICAgICAgICAgIG1fcENoYXJDb2Rlc1tpbmRleCArK10gPSAoRlhfRFdPUkQpIC0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpbnQgb2Zmc2V0ID0gMDsNCisgICAgICAgIG1fcENoYXJDb2RlcyA9IChGWF9EV09SRCopKEZYX1VJTlRQVFIpcEZvbnQtPkdldE5leHRDaGFyKHBTdHJzWzBdLCBvZmZzZXQpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9UZXh0T2JqZWN0OjpTZXRUZXh0KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIpDQorew0KKyAgICBTZXRTZWdtZW50cygmc3RyLCBOVUxMLCAxKTsNCisgICAgUmVjYWxjUG9zaXRpb25EYXRhKCk7DQorfQ0KK3ZvaWQgQ1BERl9UZXh0T2JqZWN0OjpTZXRFbXB0eSgpDQorew0KKyAgICBpZiAobV9uQ2hhcnMgPiAxICYmIG1fcENoYXJDb2Rlcykgew0KKyAgICAgICAgRlhfRnJlZShtX3BDaGFyQ29kZXMpOw0KKyAgICB9DQorICAgIGlmIChtX25DaGFycyA+IDEgJiYgbV9wQ2hhclBvcykgew0KKyAgICAgICAgRlhfRnJlZShtX3BDaGFyUG9zKTsNCisgICAgfQ0KKyAgICBtX25DaGFycyA9IDA7DQorICAgIG1fcENoYXJDb2RlcyA9IE5VTEw7DQorICAgIG1fcENoYXJQb3MgPSBOVUxMOw0KKyAgICBtX0xlZnQgPSBtX1JpZ2h0ID0gbV9Qb3NYOw0KKyAgICBtX1RvcCA9IG1fQm90dG9tID0gbV9Qb3NZOw0KK30NCit2b2lkIENQREZfVGV4dE9iamVjdDo6U2V0VGV4dChDRlhfQnl0ZVN0cmluZyogcFN0cnMsIEZYX0ZMT0FUKiBwS2VybmluZywgaW50IG5TZWdzKQ0KK3sNCisgICAgU2V0U2VnbWVudHMocFN0cnMsIHBLZXJuaW5nLCBuU2Vncyk7DQorICAgIFJlY2FsY1Bvc2l0aW9uRGF0YSgpOw0KK30NCit2b2lkIENQREZfVGV4dE9iamVjdDo6U2V0VGV4dChpbnQgbkNoYXJzLCBGWF9EV09SRCogcENoYXJDb2RlcywgRlhfRkxPQVQqIHBLZXJuaW5ncykNCit7DQorICAgIGlmIChtX25DaGFycyA+IDEgJiYgbV9wQ2hhckNvZGVzKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENoYXJDb2Rlcyk7DQorICAgICAgICBtX3BDaGFyQ29kZXMgPSBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BDaGFyUG9zKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENoYXJQb3MpOw0KKyAgICAgICAgbV9wQ2hhclBvcyA9IE5VTEw7DQorICAgIH0NCisgICAgaW50IG5LZXJuaW5ncyA9IDA7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbkNoYXJzIC0gMTsgaSArKykNCisgICAgICAgIGlmIChwS2VybmluZ3NbaV0gIT0gMCkgew0KKyAgICAgICAgICAgIG5LZXJuaW5ncyArKzsNCisgICAgICAgIH0NCisgICAgbV9uQ2hhcnMgPSBuQ2hhcnMgKyBuS2VybmluZ3M7DQorICAgIGlmIChtX25DaGFycyA+IDEpIHsNCisgICAgICAgIG1fcENoYXJDb2RlcyA9IEZYX0FsbG9jKEZYX0RXT1JELCBtX25DaGFycyk7DQorICAgICAgICBtX3BDaGFyUG9zID0gRlhfQWxsb2MoRlhfRkxPQVQsIG1fbkNoYXJzIC0gMSk7DQorICAgICAgICBpbnQgaW5kZXggPSAwOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuQ2hhcnM7IGkgKyspIHsNCisgICAgICAgICAgICBtX3BDaGFyQ29kZXNbaW5kZXgrK10gPSBwQ2hhckNvZGVzW2ldOw0KKyAgICAgICAgICAgIGlmIChwS2VybmluZ3NbaV0gIT0gMCAmJiBpICE9IG5DaGFycyAtIDEpIHsNCisgICAgICAgICAgICAgICAgbV9wQ2hhckNvZGVzW2luZGV4XSA9IChGWF9EV09SRCkgLSAxOw0KKyAgICAgICAgICAgICAgICBtX3BDaGFyUG9zW2luZGV4IC0gMV0gPSBwS2VybmluZ3NbaV07DQorICAgICAgICAgICAgICAgIGluZGV4ICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCBvZmZzZXQgPSAwOw0KKyAgICAgICAgbV9wQ2hhckNvZGVzID0gKEZYX0RXT1JEKikoRlhfVUlOVFBUUilwQ2hhckNvZGVzWzBdOw0KKyAgICB9DQorICAgIFJlY2FsY1Bvc2l0aW9uRGF0YSgpOw0KK30NCitGWF9GTE9BVCBDUERGX1RleHRPYmplY3Q6OkdldENoYXJXaWR0aChGWF9EV09SRCBjaGFyY29kZSkgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUIGZvbnRzaXplID0gbV9UZXh0U3RhdGUuR2V0Rm9udFNpemUoKSAvIDEwMDA7DQorICAgIENQREZfRm9udCogcEZvbnQgPSBtX1RleHRTdGF0ZS5HZXRGb250KCk7DQorICAgIEZYX0JPT0wgYlZlcnRXcml0aW5nID0gRkFMU0U7DQorICAgIENQREZfQ0lERm9udCogcENJREZvbnQgPSBwRm9udC0+R2V0Q0lERm9udCgpOw0KKyAgICBpZiAocENJREZvbnQpIHsNCisgICAgICAgIGJWZXJ0V3JpdGluZyA9IHBDSURGb250LT5Jc1ZlcnRXcml0aW5nKCk7DQorICAgIH0NCisgICAgaWYgKCFiVmVydFdyaXRpbmcpIHsNCisgICAgICAgIHJldHVybiBwRm9udC0+R2V0Q2hhcldpZHRoRihjaGFyY29kZSwgMCkgKiBmb250c2l6ZTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX1dPUkQgQ0lEID0gcENJREZvbnQtPkNJREZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorICAgICAgICByZXR1cm4gcENJREZvbnQtPkdldFZlcnRXaWR0aChDSUQpICogZm9udHNpemU7DQorICAgIH0NCit9DQorRlhfRkxPQVQgQ1BERl9UZXh0T2JqZWN0OjpHZXRTcGFjZUNoYXJXaWR0aCgpIGNvbnN0DQorew0KKyAgICBDUERGX0ZvbnQqIHBGb250ID0gbV9UZXh0U3RhdGUuR2V0Rm9udCgpOw0KKyAgICBGWF9EV09SRCBjaGFyQ29kZSA9IG1fVGV4dFN0YXRlLkdldEZvbnQoKS0+Q2hhckNvZGVGcm9tVW5pY29kZSgzMik7DQorICAgIGlmIChjaGFyQ29kZSAhPSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgcmV0dXJuIEdldENoYXJXaWR0aChjaGFyQ29kZSk7DQorICAgIH0NCisgICAgRlhfRkxPQVQgZm9udFNpemUgPSBtX1RleHRTdGF0ZS5HZXRGb250U2l6ZSgpIC8gNDAwMC4wZjsNCisgICAgRlhfQk9PTCBiVmVydFdyaXRpbmcgPSBGQUxTRTsNCisgICAgQ1BERl9DSURGb250KiBwQ0lERm9udCA9IHBGb250LT5HZXRDSURGb250KCk7DQorICAgIGlmIChwQ0lERm9udCkgew0KKyAgICAgICAgYlZlcnRXcml0aW5nID0gcENJREZvbnQtPklzVmVydFdyaXRpbmcoKTsNCisgICAgfQ0KKyAgICBGWF9SRUNUIGZvbnRSZWN0Ow0KKyAgICBwRm9udC0+R2V0Rm9udEJCb3goZm9udFJlY3QpOw0KKyAgICBmb250U2l6ZSAqPSBiVmVydFdyaXRpbmcgPyAoRlhfRkxPQVQpZm9udFJlY3QuSGVpZ2h0KCkgOiAoRlhfRkxPQVQpZm9udFJlY3QuV2lkdGgoKTsNCisgICAgcmV0dXJuIGZvbnRTaXplOw0KK30NCit2b2lkIENQREZfVGV4dE9iamVjdDo6R2V0Q2hhclJlY3QoaW50IGluZGV4LCBDRlhfRmxvYXRSZWN0JiByZWN0KSBjb25zdA0KK3sNCisgICAgRlhfRkxPQVQgY3VycG9zID0gMDsNCisgICAgQ1BERl9Gb250KiBwRm9udCA9IG1fVGV4dFN0YXRlLkdldEZvbnQoKTsNCisgICAgRlhfQk9PTCBiVmVydFdyaXRpbmcgPSBGQUxTRTsNCisgICAgQ1BERl9DSURGb250KiBwQ0lERm9udCA9IHBGb250LT5HZXRDSURGb250KCk7DQorICAgIGlmIChwQ0lERm9udCkgew0KKyAgICAgICAgYlZlcnRXcml0aW5nID0gcENJREZvbnQtPklzVmVydFdyaXRpbmcoKTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBmb250c2l6ZSA9IG1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCkgLyAxMDAwOw0KKyAgICBpbnQgY291bnQgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbkNoYXJzOyBpICsrKSB7DQorICAgICAgICBGWF9EV09SRCBjaGFyY29kZSA9IG1fbkNoYXJzID09IDEgPyAoRlhfRFdPUkQpKEZYX1VJTlRQVFIpbV9wQ2hhckNvZGVzIDogbV9wQ2hhckNvZGVzW2ldOw0KKyAgICAgICAgaWYgKGNoYXJjb2RlID09IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiggY291bnQgIT0gaW5kZXgpIHsNCisgICAgICAgICAgICBjb3VudCsrOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRkxPQVQgY3VycG9zID0gaSA+IDAgPyBtX3BDaGFyUG9zW2kgLSAxXSA6IDA7DQorICAgICAgICBGWF9SRUNUIGNoYXJfcmVjdDsNCisgICAgICAgIHBGb250LT5HZXRDaGFyQkJveChjaGFyY29kZSwgY2hhcl9yZWN0LCAwKTsNCisgICAgICAgIGlmICghYlZlcnRXcml0aW5nKSB7DQorICAgICAgICAgICAgcmVjdC5sZWZ0ID0gY3VycG9zICsgY2hhcl9yZWN0LmxlZnQgKiBmb250c2l6ZTsNCisgICAgICAgICAgICByZWN0LnJpZ2h0ID0gY3VycG9zICsgY2hhcl9yZWN0LnJpZ2h0ICogZm9udHNpemU7DQorICAgICAgICAgICAgcmVjdC50b3AgPSBjaGFyX3JlY3QudG9wICogZm9udHNpemU7DQorICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBjaGFyX3JlY3QuYm90dG9tICogZm9udHNpemU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEZYX1dPUkQgQ0lEID0gcENJREZvbnQtPkNJREZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorICAgICAgICAgICAgc2hvcnQgdngsIHZ5Ow0KKyAgICAgICAgICAgIHBDSURGb250LT5HZXRWZXJ0T3JpZ2luKENJRCwgdngsIHZ5KTsNCisgICAgICAgICAgICBjaGFyX3JlY3QubGVmdCAtPSB2eDsNCisgICAgICAgICAgICBjaGFyX3JlY3QucmlnaHQgLT0gdng7DQorICAgICAgICAgICAgY2hhcl9yZWN0LnRvcCAtPSB2eTsNCisgICAgICAgICAgICBjaGFyX3JlY3QuYm90dG9tIC09IHZ5Ow0KKyAgICAgICAgICAgIHJlY3QubGVmdCA9IGNoYXJfcmVjdC5sZWZ0ICogZm9udHNpemU7DQorICAgICAgICAgICAgcmVjdC5yaWdodCA9IGNoYXJfcmVjdC5yaWdodCAqIGZvbnRzaXplOw0KKyAgICAgICAgICAgIHJlY3QudG9wID0gY3VycG9zICsgY2hhcl9yZWN0LnRvcCAqIGZvbnRzaXplOw0KKyAgICAgICAgICAgIHJlY3QuYm90dG9tID0gY3VycG9zICsgY2hhcl9yZWN0LmJvdHRvbSAqIGZvbnRzaXplOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9UZXh0T2JqZWN0OjpDYWxjUG9zaXRpb25EYXRhKEZYX0ZMT0FUKiBwVGV4dEFkdmFuY2VYLCBGWF9GTE9BVCogcFRleHRBZHZhbmNlWSwgRlhfRkxPQVQgaG9yel9zY2FsZSwgaW50IGxldmVsKQ0KK3sNCisgICAgRlhfRkxPQVQgY3VycG9zID0gMDsNCisgICAgRlhfRkxPQVQgbWluX3ggPSAxMDAwMCAqIDEuMGYsIG1heF94ID0gLTEwMDAwICogMS4wZiwgbWluX3kgPSAxMDAwMCAqIDEuMGYsIG1heF95ID0gLTEwMDAwICogMS4wZjsNCisgICAgQ1BERl9Gb250KiBwRm9udCA9IG1fVGV4dFN0YXRlLkdldEZvbnQoKTsNCisgICAgRlhfQk9PTCBiVmVydFdyaXRpbmcgPSBGQUxTRTsNCisgICAgQ1BERl9DSURGb250KiBwQ0lERm9udCA9IHBGb250LT5HZXRDSURGb250KCk7DQorICAgIGlmIChwQ0lERm9udCkgew0KKyAgICAgICAgYlZlcnRXcml0aW5nID0gcENJREZvbnQtPklzVmVydFdyaXRpbmcoKTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBmb250c2l6ZSA9IG1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9uQ2hhcnM7IGkgKyspIHsNCisgICAgICAgIEZYX0RXT1JEIGNoYXJjb2RlID0gbV9uQ2hhcnMgPT0gMSA/IChGWF9EV09SRCkoRlhfVUlOVFBUUiltX3BDaGFyQ29kZXMgOiBtX3BDaGFyQ29kZXNbaV07DQorICAgICAgICBpZiAoY2hhcmNvZGUgPT0gKEZYX0RXT1JEKSAtIDEpIHsNCisgICAgICAgICAgICBjdXJwb3MgLT0gRlhTWVNfTXVsKG1fcENoYXJQb3NbaSAtIDFdLCBmb250c2l6ZSkgLyAxMDAwOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGkpIHsNCisgICAgICAgICAgICBtX3BDaGFyUG9zW2kgLSAxXSA9IGN1cnBvczsNCisgICAgICAgIH0NCisgICAgICAgIEZYX1JFQ1QgY2hhcl9yZWN0Ow0KKyAgICAgICAgcEZvbnQtPkdldENoYXJCQm94KGNoYXJjb2RlLCBjaGFyX3JlY3QsIGxldmVsKTsNCisgICAgICAgIEZYX0ZMT0FUIGNoYXJ3aWR0aDsNCisgICAgICAgIGlmICghYlZlcnRXcml0aW5nKSB7DQorICAgICAgICAgICAgaWYgKG1pbl95ID4gY2hhcl9yZWN0LnRvcCkgew0KKyAgICAgICAgICAgICAgICBtaW5feSA9IChGWF9GTE9BVCljaGFyX3JlY3QudG9wOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobWF4X3kgPCBjaGFyX3JlY3QudG9wKSB7DQorICAgICAgICAgICAgICAgIG1heF95ID0gKEZYX0ZMT0FUKWNoYXJfcmVjdC50b3A7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtaW5feSA+IGNoYXJfcmVjdC5ib3R0b20pIHsNCisgICAgICAgICAgICAgICAgbWluX3kgPSAoRlhfRkxPQVQpY2hhcl9yZWN0LmJvdHRvbTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1heF95IDwgY2hhcl9yZWN0LmJvdHRvbSkgew0KKyAgICAgICAgICAgICAgICBtYXhfeSA9IChGWF9GTE9BVCljaGFyX3JlY3QuYm90dG9tOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9GTE9BVCBjaGFyX2xlZnQgPSBjdXJwb3MgKyBjaGFyX3JlY3QubGVmdCAqIGZvbnRzaXplIC8gMTAwMDsNCisgICAgICAgICAgICBGWF9GTE9BVCBjaGFyX3JpZ2h0ID0gY3VycG9zICsgY2hhcl9yZWN0LnJpZ2h0ICogZm9udHNpemUgLyAxMDAwOw0KKyAgICAgICAgICAgIGlmIChtaW5feCA+IGNoYXJfbGVmdCkgew0KKyAgICAgICAgICAgICAgICBtaW5feCA9IGNoYXJfbGVmdDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1heF94IDwgY2hhcl9sZWZ0KSB7DQorICAgICAgICAgICAgICAgIG1heF94ID0gY2hhcl9sZWZ0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobWluX3ggPiBjaGFyX3JpZ2h0KSB7DQorICAgICAgICAgICAgICAgIG1pbl94ID0gY2hhcl9yaWdodDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1heF94IDwgY2hhcl9yaWdodCkgew0KKyAgICAgICAgICAgICAgICBtYXhfeCA9IGNoYXJfcmlnaHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNoYXJ3aWR0aCA9IHBGb250LT5HZXRDaGFyV2lkdGhGKGNoYXJjb2RlLCBsZXZlbCkgKiBmb250c2l6ZSAvIDEwMDA7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEZYX1dPUkQgQ0lEID0gcENJREZvbnQtPkNJREZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorICAgICAgICAgICAgc2hvcnQgdngsIHZ5Ow0KKyAgICAgICAgICAgIHBDSURGb250LT5HZXRWZXJ0T3JpZ2luKENJRCwgdngsIHZ5KTsNCisgICAgICAgICAgICBjaGFyX3JlY3QubGVmdCAtPSB2eDsNCisgICAgICAgICAgICBjaGFyX3JlY3QucmlnaHQgLT0gdng7DQorICAgICAgICAgICAgY2hhcl9yZWN0LnRvcCAtPSB2eTsNCisgICAgICAgICAgICBjaGFyX3JlY3QuYm90dG9tIC09IHZ5Ow0KKyAgICAgICAgICAgIGlmIChtaW5feCA+IGNoYXJfcmVjdC5sZWZ0KSB7DQorICAgICAgICAgICAgICAgIG1pbl94ID0gKEZYX0ZMT0FUKWNoYXJfcmVjdC5sZWZ0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobWF4X3ggPCBjaGFyX3JlY3QubGVmdCkgew0KKyAgICAgICAgICAgICAgICBtYXhfeCA9IChGWF9GTE9BVCljaGFyX3JlY3QubGVmdDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1pbl94ID4gY2hhcl9yZWN0LnJpZ2h0KSB7DQorICAgICAgICAgICAgICAgIG1pbl94ID0gKEZYX0ZMT0FUKWNoYXJfcmVjdC5yaWdodDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1heF94IDwgY2hhcl9yZWN0LnJpZ2h0KSB7DQorICAgICAgICAgICAgICAgIG1heF94ID0gKEZYX0ZMT0FUKWNoYXJfcmVjdC5yaWdodDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRkxPQVQgY2hhcl90b3AgPSBjdXJwb3MgKyBjaGFyX3JlY3QudG9wICogZm9udHNpemUgLyAxMDAwOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGNoYXJfYm90dG9tID0gY3VycG9zICsgY2hhcl9yZWN0LmJvdHRvbSAqIGZvbnRzaXplIC8gMTAwMDsNCisgICAgICAgICAgICBpZiAobWluX3kgPiBjaGFyX3RvcCkgew0KKyAgICAgICAgICAgICAgICBtaW5feSA9IGNoYXJfdG9wOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobWF4X3kgPCBjaGFyX3RvcCkgew0KKyAgICAgICAgICAgICAgICBtYXhfeSA9IGNoYXJfdG9wOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobWluX3kgPiBjaGFyX2JvdHRvbSkgew0KKyAgICAgICAgICAgICAgICBtaW5feSA9IGNoYXJfYm90dG9tOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobWF4X3kgPCBjaGFyX2JvdHRvbSkgew0KKyAgICAgICAgICAgICAgICBtYXhfeSA9IGNoYXJfYm90dG9tOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaGFyd2lkdGggPSBwQ0lERm9udC0+R2V0VmVydFdpZHRoKENJRCkgKiBmb250c2l6ZSAvIDEwMDA7DQorICAgICAgICB9DQorICAgICAgICBjdXJwb3MgKz0gY2hhcndpZHRoOw0KKyAgICAgICAgaWYgKGNoYXJjb2RlID09ICcgJyAmJiAocENJREZvbnQgPT0gTlVMTCB8fCBwQ0lERm9udC0+R2V0Q2hhclNpemUoMzIpID09IDEpKSB7DQorICAgICAgICAgICAgY3VycG9zICs9IG1fVGV4dFN0YXRlLkdldE9iamVjdCgpLT5tX1dvcmRTcGFjZTsNCisgICAgICAgIH0NCisgICAgICAgIGN1cnBvcyArPSBtX1RleHRTdGF0ZS5HZXRPYmplY3QoKS0+bV9DaGFyU3BhY2U7DQorICAgIH0NCisgICAgaWYgKGJWZXJ0V3JpdGluZykgew0KKyAgICAgICAgaWYgKHBUZXh0QWR2YW5jZVgpIHsNCisgICAgICAgICAgICAqcFRleHRBZHZhbmNlWCA9IDA7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFRleHRBZHZhbmNlWSkgew0KKyAgICAgICAgICAgICpwVGV4dEFkdmFuY2VZID0gY3VycG9zOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbWluX3ggPSBtaW5feCAqIGZvbnRzaXplIC8gMTAwMDsNCisgICAgICAgIG1heF94ID0gbWF4X3ggKiBmb250c2l6ZSAvIDEwMDA7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAocFRleHRBZHZhbmNlWCkgew0KKyAgICAgICAgICAgICpwVGV4dEFkdmFuY2VYID0gRlhTWVNfTXVsKGN1cnBvcywgaG9yel9zY2FsZSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFRleHRBZHZhbmNlWSkgew0KKyAgICAgICAgICAgICpwVGV4dEFkdmFuY2VZID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIG1pbl95ID0gbWluX3kgKiBmb250c2l6ZSAvIDEwMDA7DQorICAgICAgICBtYXhfeSA9IG1heF95ICogZm9udHNpemUgLyAxMDAwOw0KKyAgICB9DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4Ow0KKyAgICBHZXRUZXh0TWF0cml4KCZtYXRyaXgpOw0KKyAgICBtX0xlZnQgPSBtaW5feDsNCisgICAgbV9SaWdodCA9IG1heF94Ow0KKyAgICBtX0JvdHRvbSA9IG1pbl95Ow0KKyAgICBtX1RvcCA9IG1heF95Ow0KKyAgICBtYXRyaXguVHJhbnNmb3JtUmVjdChtX0xlZnQsIG1fUmlnaHQsIG1fVG9wLCBtX0JvdHRvbSk7DQorICAgIGludCB0ZXh0bW9kZSA9IG1fVGV4dFN0YXRlLkdldE9iamVjdCgpLT5tX1RleHRNb2RlOw0KKyAgICBpZiAodGV4dG1vZGUgPT0gMSB8fCB0ZXh0bW9kZSA9PSAyIHx8IHRleHRtb2RlID09IDUgfHwgdGV4dG1vZGUgPT0gNikgew0KKyAgICAgICAgRlhfRkxPQVQgaGFsZl93aWR0aCA9IG1fR3JhcGhTdGF0ZS5HZXRPYmplY3QoKS0+bV9MaW5lV2lkdGggLyAyOw0KKyAgICAgICAgbV9MZWZ0IC09IGhhbGZfd2lkdGg7DQorICAgICAgICBtX1JpZ2h0ICs9IGhhbGZfd2lkdGg7DQorICAgICAgICBtX1RvcCArPSBoYWxmX3dpZHRoOw0KKyAgICAgICAgbV9Cb3R0b20gLT0gaGFsZl93aWR0aDsNCisgICAgfQ0KK30NCit2b2lkIENQREZfVGV4dE9iamVjdDo6Q2FsY0NoYXJQb3MoRlhfRkxPQVQqIHBQb3NBcnJheSkgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUIGN1cnBvcyA9IDA7DQorICAgIGludCBjb3VudCA9IDA7DQorICAgIENQREZfRm9udCogcEZvbnQgPSBtX1RleHRTdGF0ZS5HZXRGb250KCk7DQorICAgIEZYX0JPT0wgYlZlcnRXcml0aW5nID0gRkFMU0U7DQorICAgIENQREZfQ0lERm9udCogcENJREZvbnQgPSBwRm9udC0+R2V0Q0lERm9udCgpOw0KKyAgICBpZiAocENJREZvbnQpIHsNCisgICAgICAgIGJWZXJ0V3JpdGluZyA9IHBDSURGb250LT5Jc1ZlcnRXcml0aW5nKCk7DQorICAgIH0NCisgICAgRlhfRkxPQVQgZm9udHNpemUgPSBtX1RleHRTdGF0ZS5HZXRGb250U2l6ZSgpOw0KKyAgICBpbnQgaW5kZXggPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbkNoYXJzOyBpICsrKSB7DQorICAgICAgICBGWF9EV09SRCBjaGFyY29kZSA9IG1fbkNoYXJzID09IDEgPyAoRlhfRFdPUkQpKEZYX1VJTlRQVFIpbV9wQ2hhckNvZGVzIDogbV9wQ2hhckNvZGVzW2ldOw0KKyAgICAgICAgaWYgKGNoYXJjb2RlID09IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBwUG9zQXJyYXlbaW5kZXgrK10gPSBpID8gbV9wQ2hhclBvc1tpIC0gMV0gOiAwOw0KKyAgICAgICAgRlhfRkxPQVQgY2hhcndpZHRoOw0KKyAgICAgICAgaWYgKGJWZXJ0V3JpdGluZykgew0KKyAgICAgICAgICAgIEZYX1dPUkQgQ0lEID0gcENJREZvbnQtPkNJREZyb21DaGFyQ29kZShjaGFyY29kZSk7DQorICAgICAgICAgICAgY2hhcndpZHRoID0gcENJREZvbnQtPkdldFZlcnRXaWR0aChDSUQpICogZm9udHNpemUgLyAxMDAwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBjaGFyd2lkdGggPSBwRm9udC0+R2V0Q2hhcldpZHRoRihjaGFyY29kZSkgKiBmb250c2l6ZSAvIDEwMDA7DQorICAgICAgICB9DQorICAgICAgICBwUG9zQXJyYXlbaW5kZXhdID0gcFBvc0FycmF5W2luZGV4IC0gMV0gKyBjaGFyd2lkdGg7DQorICAgICAgICBpbmRleCsrOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9UZXh0T2JqZWN0OjpUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KQ0KK3sNCisgICAgbV9UZXh0U3RhdGUuR2V0TW9kaWZ5KCk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggdGV4dF9tYXRyaXg7DQorICAgIEdldFRleHRNYXRyaXgoJnRleHRfbWF0cml4KTsNCisgICAgdGV4dF9tYXRyaXguQ29uY2F0KG1hdHJpeCk7DQorICAgIEZYX0ZMT0FUKiBwVGV4dE1hdHJpeCA9IG1fVGV4dFN0YXRlLkdldE1hdHJpeCgpOw0KKyAgICBwVGV4dE1hdHJpeFswXSA9IHRleHRfbWF0cml4LkdldEEoKTsNCisgICAgcFRleHRNYXRyaXhbMV0gPSB0ZXh0X21hdHJpeC5HZXRDKCk7DQorICAgIHBUZXh0TWF0cml4WzJdID0gdGV4dF9tYXRyaXguR2V0QigpOw0KKyAgICBwVGV4dE1hdHJpeFszXSA9IHRleHRfbWF0cml4LkdldEQoKTsNCisgICAgbV9Qb3NYID0gdGV4dF9tYXRyaXguR2V0RSgpOw0KKyAgICBtX1Bvc1kgPSB0ZXh0X21hdHJpeC5HZXRGKCk7DQorICAgIENhbGNQb3NpdGlvbkRhdGEoTlVMTCwgTlVMTCwgMCk7DQorfQ0KK3ZvaWQgQ1BERl9UZXh0T2JqZWN0OjpTZXRQb3NpdGlvbihGWF9GTE9BVCB4LCBGWF9GTE9BVCB5KQ0KK3sNCisgICAgRlhfRkxPQVQgZHggPSB4IC0gbV9Qb3NYOw0KKyAgICBGWF9GTE9BVCBkeSA9IHkgLSBtX1Bvc1k7DQorICAgIG1fUG9zWCA9IHg7DQorICAgIG1fUG9zWSA9IHk7DQorICAgIG1fTGVmdCArPSBkeDsNCisgICAgbV9SaWdodCArPSBkeDsNCisgICAgbV9Ub3AgKz0gZHk7DQorICAgIG1fQm90dG9tICs9IGR5Ow0KK30NCit2b2lkIENQREZfVGV4dE9iamVjdDo6U2V0RGF0YShpbnQgbkNoYXJzLCBGWF9EV09SRCogcENoYXJDb2RlcywgRlhfRkxPQVQqIHBDaGFyUG9zLCBGWF9GTE9BVCB4LCBGWF9GTE9BVCB5KQ0KK3sNCisgICAgQVNTRVJUKG1fbkNoYXJzID09IDApOw0KKyAgICBtX25DaGFycyA9IG5DaGFyczsNCisgICAgbV9Qb3NYID0geDsNCisgICAgbV9Qb3NZID0geTsNCisgICAgaWYgKG5DaGFycyA9PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG5DaGFycyA9PSAxKSB7DQorICAgICAgICBtX3BDaGFyQ29kZXMgPSAoRlhfRFdPUkQqKShGWF9VSU5UUFRSKSAqIHBDaGFyQ29kZXM7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BDaGFyQ29kZXMgPSBGWF9BbGxvYyhGWF9EV09SRCwgbkNoYXJzKTsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcENoYXJDb2RlcywgcENoYXJDb2Rlcywgc2l6ZW9mKEZYX0RXT1JEKSpuQ2hhcnMpOw0KKyAgICAgICAgbV9wQ2hhclBvcyA9IEZYX0FsbG9jKEZYX0ZMT0FULCBuQ2hhcnMgLSAxKTsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcENoYXJQb3MsIHBDaGFyUG9zLCBzaXplb2YoRlhfRkxPQVQpICogKG5DaGFycyAtIDEpKTsNCisgICAgfQ0KKyAgICBSZWNhbGNQb3NpdGlvbkRhdGEoKTsNCit9DQordm9pZCBDUERGX1RleHRPYmplY3Q6OlNldFRleHRTdGF0ZShDUERGX1RleHRTdGF0ZSBUZXh0U3RhdGUpDQorew0KKyAgICBtX1RleHRTdGF0ZSA9IFRleHRTdGF0ZTsNCisgICAgQ2FsY1Bvc2l0aW9uRGF0YShOVUxMLCBOVUxMLCAwKTsNCit9DQorQ1BERl9TaGFkaW5nT2JqZWN0OjpDUERGX1NoYWRpbmdPYmplY3QoKQ0KK3sNCisgICAgbV9wU2hhZGluZyA9IE5VTEw7DQorICAgIG1fVHlwZSA9IFBERlBBR0VfU0hBRElORzsNCit9DQorQ1BERl9TaGFkaW5nT2JqZWN0Ojp+Q1BERl9TaGFkaW5nT2JqZWN0KCkNCit7DQorICAgIENQREZfU2hhZGluZ1BhdHRlcm4qIHBTaGFkaW5nID0gbV9wU2hhZGluZzsNCisgICAgaWYgKHBTaGFkaW5nICYmIHBTaGFkaW5nLT5tX3BEb2N1bWVudCkgew0KKyAgICAgICAgcFNoYWRpbmctPm1fcERvY3VtZW50LT5HZXRQYWdlRGF0YSgpLT5SZWxlYXNlUGF0dGVybihwU2hhZGluZy0+bV9wU2hhZGluZ09iaik7DQorICAgIH0NCit9DQordm9pZCBDUERGX1NoYWRpbmdPYmplY3Q6OkNvcHlEYXRhKGNvbnN0IENQREZfUGFnZU9iamVjdCogcFNyYykNCit7DQorICAgIENQREZfU2hhZGluZ09iamVjdCogcFNyY09iaiA9IChDUERGX1NoYWRpbmdPYmplY3QqKXBTcmM7DQorICAgIG1fcFNoYWRpbmcgPSBwU3JjT2JqLT5tX3BTaGFkaW5nOw0KKyAgICBpZiAobV9wU2hhZGluZyAmJiBtX3BTaGFkaW5nLT5tX3BEb2N1bWVudCkgew0KKyAgICAgICAgQ1BERl9Eb2NQYWdlRGF0YSogcERvY1BhZ2VEYXRhID0gbV9wU2hhZGluZy0+bV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCk7DQorICAgICAgICBtX3BTaGFkaW5nID0gKENQREZfU2hhZGluZ1BhdHRlcm4qKXBEb2NQYWdlRGF0YS0+R2V0UGF0dGVybihtX3BTaGFkaW5nLT5tX3BTaGFkaW5nT2JqLCBtX3BTaGFkaW5nLT5tX2JTaGFkaW5nT2JqLCAmbV9wU2hhZGluZy0+bV9QYXJlbnRNYXRyaXgpOw0KKyAgICB9DQorICAgIG1fTWF0cml4ID0gcFNyY09iai0+bV9NYXRyaXg7DQorfQ0KK3ZvaWQgQ1BERl9TaGFkaW5nT2JqZWN0OjpUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KQ0KK3sNCisgICAgaWYgKCFtX0NsaXBQYXRoLklzTnVsbCgpKSB7DQorICAgICAgICBtX0NsaXBQYXRoLkdldE1vZGlmeSgpOw0KKyAgICAgICAgbV9DbGlwUGF0aC5UcmFuc2Zvcm0obWF0cml4KTsNCisgICAgfQ0KKyAgICBtX01hdHJpeC5Db25jYXQobWF0cml4KTsNCisgICAgaWYgKCFtX0NsaXBQYXRoLklzTnVsbCgpKSB7DQorICAgICAgICBDYWxjQm91bmRpbmdCb3goKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1hdHJpeC5UcmFuc2Zvcm1SZWN0KG1fTGVmdCwgbV9SaWdodCwgbV9Ub3AsIG1fQm90dG9tKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfU2hhZGluZ09iamVjdDo6Q2FsY0JvdW5kaW5nQm94KCkNCit7DQorICAgIGlmIChtX0NsaXBQYXRoLklzTnVsbCgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0ID0gbV9DbGlwUGF0aC5HZXRDbGlwQm94KCk7DQorICAgIG1fTGVmdCA9IHJlY3QubGVmdDsNCisgICAgbV9Cb3R0b20gPSByZWN0LmJvdHRvbTsNCisgICAgbV9SaWdodCA9IHJlY3QucmlnaHQ7DQorICAgIG1fVG9wID0gcmVjdC50b3A7DQorfQ0KK0NQREZfRm9ybU9iamVjdDo6fkNQREZfRm9ybU9iamVjdCgpDQorew0KKyAgICBpZiAobV9wRm9ybSkgew0KKyAgICAgICAgZGVsZXRlIG1fcEZvcm07DQorICAgIH0NCit9DQordm9pZCBDUERGX0Zvcm1PYmplY3Q6OlRyYW5zZm9ybShjb25zdCBDRlhfQWZmaW5lTWF0cml4JiBtYXRyaXgpDQorew0KKyAgICBtX0Zvcm1NYXRyaXguQ29uY2F0KG1hdHJpeCk7DQorICAgIENhbGNCb3VuZGluZ0JveCgpOw0KK30NCit2b2lkIENQREZfRm9ybU9iamVjdDo6Q29weURhdGEoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwU3JjKQ0KK3sNCisgICAgY29uc3QgQ1BERl9Gb3JtT2JqZWN0KiBwU3JjT2JqID0gKGNvbnN0IENQREZfRm9ybU9iamVjdCopcFNyYzsNCisgICAgaWYgKG1fcEZvcm0pIHsNCisgICAgICAgIGRlbGV0ZSBtX3BGb3JtOw0KKyAgICB9DQorICAgIG1fcEZvcm0gPSBwU3JjT2JqLT5tX3BGb3JtLT5DbG9uZSgpOw0KKyAgICBtX0Zvcm1NYXRyaXggPSBwU3JjT2JqLT5tX0Zvcm1NYXRyaXg7DQorfQ0KK3ZvaWQgQ1BERl9Gb3JtT2JqZWN0OjpDYWxjQm91bmRpbmdCb3goKQ0KK3sNCisgICAgQ0ZYX0Zsb2F0UmVjdCBmb3JtX3JlY3QgPSBtX3BGb3JtLT5DYWxjQm91bmRpbmdCb3goKTsNCisgICAgZm9ybV9yZWN0LlRyYW5zZm9ybSgmbV9Gb3JtTWF0cml4KTsNCisgICAgbV9MZWZ0ID0gZm9ybV9yZWN0LmxlZnQ7DQorICAgIG1fQm90dG9tID0gZm9ybV9yZWN0LmJvdHRvbTsNCisgICAgbV9SaWdodCA9IGZvcm1fcmVjdC5yaWdodDsNCisgICAgbV9Ub3AgPSBmb3JtX3JlY3QudG9wOw0KK30NCitDUERGX1BhZ2VPYmplY3RzOjpDUERGX1BhZ2VPYmplY3RzKEZYX0JPT0wgYlJlbGVhc2VNZW1iZXJzKSA6IG1fT2JqZWN0TGlzdCgxMjgpDQorew0KKyAgICBtX2JCYWNrZ3JvdW5kQWxwaGFOZWVkZWQgPSBGQUxTRTsNCisgICAgbV9iUmVsZWFzZU1lbWJlcnMgPSBiUmVsZWFzZU1lbWJlcnM7DQorICAgIG1fUGFyc2VTdGF0ZSA9IFBERl9DT05URU5UX05PVF9QQVJTRUQ7DQorICAgIG1fcFBhcnNlciA9IE5VTEw7DQorICAgIG1fcEZvcm1TdHJlYW0gPSBOVUxMOw0KKyAgICBtX3BSZXNvdXJjZXMgPSBOVUxMOw0KK30NCitDUERGX1BhZ2VPYmplY3RzOjp+Q1BERl9QYWdlT2JqZWN0cygpDQorew0KKyAgICBpZiAobV9wUGFyc2VyKSB7DQorICAgICAgICBkZWxldGUgbV9wUGFyc2VyOw0KKyAgICB9DQorICAgIGlmICghbV9iUmVsZWFzZU1lbWJlcnMpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX09iamVjdExpc3QuR2V0SGVhZFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIENQREZfUGFnZU9iamVjdCogcFBhZ2VPYmogPSAoQ1BERl9QYWdlT2JqZWN0KiltX09iamVjdExpc3QuR2V0TmV4dChwb3MpOw0KKyAgICAgICAgaWYgKCFwUGFnZU9iaikgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFBhZ2VPYmotPlJlbGVhc2UoKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfUGFnZU9iamVjdHM6OkNvbnRpbnVlUGFyc2UoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZiAobV9wUGFyc2VyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BQYXJzZXItPkNvbnRpbnVlKHBQYXVzZSk7DQorICAgIGlmIChtX3BQYXJzZXItPkdldFN0YXR1cygpID09IENQREZfQ29udGVudFBhcnNlcjo6RG9uZSkgew0KKyAgICAgICAgbV9QYXJzZVN0YXRlID0gUERGX0NPTlRFTlRfUEFSU0VEOw0KKyAgICAgICAgZGVsZXRlIG1fcFBhcnNlcjsNCisgICAgICAgIG1fcFBhcnNlciA9IE5VTEw7DQorICAgIH0NCit9DQoraW50IENQREZfUGFnZU9iamVjdHM6OkVzdGltYXRlUGFyc2VQcm9ncmVzcygpIGNvbnN0DQorew0KKyAgICBpZiAobV9wUGFyc2VyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBtX1BhcnNlU3RhdGUgPT0gUERGX0NPTlRFTlRfUEFSU0VEID8gMTAwIDogMDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wUGFyc2VyLT5Fc3RpbWF0ZVByb2dyZXNzKCk7DQorfQ0KK0ZYX1BPU0lUSU9OIENQREZfUGFnZU9iamVjdHM6Okluc2VydE9iamVjdChGWF9QT1NJVElPTiBwb3NJbnNlcnRBZnRlciwgQ1BERl9QYWdlT2JqZWN0KiBwTmV3T2JqZWN0KQ0KK3sNCisgICAgaWYgKHBvc0luc2VydEFmdGVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBtX09iamVjdExpc3QuQWRkSGVhZChwTmV3T2JqZWN0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiBtX09iamVjdExpc3QuSW5zZXJ0QWZ0ZXIocG9zSW5zZXJ0QWZ0ZXIsIHBOZXdPYmplY3QpOw0KKyAgICB9DQorfQ0KK2ludCBDUERGX1BhZ2VPYmplY3RzOjpHZXRPYmplY3RJbmRleChDUERGX1BhZ2VPYmplY3QqIHBPYmopIGNvbnN0DQorew0KKyAgICBpbnQgaW5kZXggPSAwOw0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX09iamVjdExpc3QuR2V0SGVhZFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIENQREZfUGFnZU9iamVjdCogcFRoaXNPYmogPSAoQ1BERl9QYWdlT2JqZWN0KiltX09iamVjdExpc3QuR2V0TmV4dChwb3MpOw0KKyAgICAgICAgaWYgKHBUaGlzT2JqID09IHBPYmopIHsNCisgICAgICAgICAgICByZXR1cm4gaW5kZXg7DQorICAgICAgICB9DQorICAgICAgICBpbmRleCArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gLTE7DQorfQ0KK0NQREZfUGFnZU9iamVjdCogQ1BERl9QYWdlT2JqZWN0czo6R2V0T2JqZWN0QnlJbmRleChpbnQgaW5kZXgpIGNvbnN0DQorew0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX09iamVjdExpc3QuRmluZEluZGV4KGluZGV4KTsNCisgICAgaWYgKHBvcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gKENQREZfUGFnZU9iamVjdCopbV9PYmplY3RMaXN0LkdldEF0KHBvcyk7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlT2JqZWN0czo6VHJhbnNmb3JtKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fT2JqZWN0TGlzdC5HZXRIZWFkUG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqID0gKENQREZfUGFnZU9iamVjdCopbV9PYmplY3RMaXN0LkdldE5leHQocG9zKTsNCisgICAgICAgIHBPYmotPlRyYW5zZm9ybShtYXRyaXgpOw0KKyAgICB9DQorfQ0KK0NGWF9GbG9hdFJlY3QgQ1BERl9QYWdlT2JqZWN0czo6Q2FsY0JvdW5kaW5nQm94KCkgY29uc3QNCit7DQorICAgIGlmIChtX09iamVjdExpc3QuR2V0Q291bnQoKSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0Zsb2F0UmVjdCgwLCAwLCAwLCAwKTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b207DQorICAgIGxlZnQgPSBib3R0b20gPSAxMDAwMDAwICogMS4wZjsNCisgICAgcmlnaHQgPSB0b3AgPSAtMTAwMDAwMCAqIDEuMGY7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fT2JqZWN0TGlzdC5HZXRIZWFkUG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqID0gKENQREZfUGFnZU9iamVjdCopbV9PYmplY3RMaXN0LkdldE5leHQocG9zKTsNCisgICAgICAgIGlmIChsZWZ0ID4gcE9iai0+bV9MZWZ0KSB7DQorICAgICAgICAgICAgbGVmdCA9IHBPYmotPm1fTGVmdDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChyaWdodCA8IHBPYmotPm1fUmlnaHQpIHsNCisgICAgICAgICAgICByaWdodCA9IHBPYmotPm1fUmlnaHQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAodG9wIDwgcE9iai0+bV9Ub3ApIHsNCisgICAgICAgICAgICB0b3AgPSBwT2JqLT5tX1RvcDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChib3R0b20gPiBwT2JqLT5tX0JvdHRvbSkgew0KKyAgICAgICAgICAgIGJvdHRvbSA9IHBPYmotPm1fQm90dG9tOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDRlhfRmxvYXRSZWN0KGxlZnQsIGJvdHRvbSwgcmlnaHQsIHRvcCk7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlT2JqZWN0czo6TG9hZFRyYW5zSW5mbygpDQorew0KKyAgICBpZiAobV9wRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcEdyb3VwID0gbV9wRm9ybURpY3QtPkdldERpY3QoRlhfQlNUUkMoIkdyb3VwIikpOw0KKyAgICBpZiAocEdyb3VwID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAocEdyb3VwLT5HZXRTdHJpbmcoRlhfQlNUUkMoIlMiKSkgIT0gRlhfQlNUUkMoIlRyYW5zcGFyZW5jeSIpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9UcmFuc3BhcmVuY3kgfD0gUERGVFJBTlNfR1JPVVA7DQorICAgIGlmIChwR3JvdXAtPkdldEludGVnZXIoRlhfQlNUUkMoIkkiKSkpIHsNCisgICAgICAgIG1fVHJhbnNwYXJlbmN5IHw9IFBERlRSQU5TX0lTT0xBVEVEOw0KKyAgICB9DQorICAgIGlmIChwR3JvdXAtPkdldEludGVnZXIoRlhfQlNUUkMoIksiKSkpIHsNCisgICAgICAgIG1fVHJhbnNwYXJlbmN5IHw9IFBERlRSQU5TX0tOT0NLT1VUOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9QYWdlT2JqZWN0czo6Q2xlYXJDYWNoZU9iamVjdHMoKQ0KK3sNCisgICAgbV9QYXJzZVN0YXRlID0gUERGX0NPTlRFTlRfTk9UX1BBUlNFRDsNCisgICAgaWYgKG1fcFBhcnNlcikgew0KKyAgICAgICAgZGVsZXRlIG1fcFBhcnNlcjsNCisgICAgfQ0KKyAgICBtX3BQYXJzZXIgPSBOVUxMOw0KKyAgICBpZiAobV9iUmVsZWFzZU1lbWJlcnMpIHsNCisgICAgICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fT2JqZWN0TGlzdC5HZXRIZWFkUG9zaXRpb24oKTsNCisgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICBDUERGX1BhZ2VPYmplY3QqIHBQYWdlT2JqID0gKENQREZfUGFnZU9iamVjdCopbV9PYmplY3RMaXN0LkdldE5leHQocG9zKTsNCisgICAgICAgICAgICBpZiAoIXBQYWdlT2JqKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwUGFnZU9iai0+UmVsZWFzZSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fT2JqZWN0TGlzdC5SZW1vdmVBbGwoKTsNCit9DQorQ1BERl9QYWdlOjpDUERGX1BhZ2UoKQ0KK3sNCisgICAgbV9wUGFnZVJlbmRlciA9IE5VTEw7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlOjpMb2FkKENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZURpY3QsIEZYX0JPT0wgYlBhZ2VDYWNoZSkNCit7DQorICAgIG1fcERvY3VtZW50ID0gKENQREZfRG9jdW1lbnQqKXBEb2N1bWVudDsNCisgICAgbV9wRm9ybURpY3QgPSBwUGFnZURpY3Q7DQorICAgIGlmIChiUGFnZUNhY2hlKSB7DQorICAgICAgICBtX3BQYWdlUmVuZGVyID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRSZW5kZXJNb2R1bGUoKS0+Q3JlYXRlUGFnZUNhY2hlKHRoaXMpOw0KKyAgICB9DQorICAgIGlmIChwUGFnZURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgbV9QYWdlV2lkdGggPSBtX1BhZ2VIZWlnaHQgPSAxMDAgKiAxLjBmOw0KKyAgICAgICAgbV9wUGFnZVJlc291cmNlcyA9IG1fcFJlc291cmNlcyA9IE5VTEw7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wUmVzb3VyY2VzID0gR2V0UGFnZUF0dHIoRlhfQlNUUkMoIlJlc291cmNlcyIpKS0+R2V0RGljdCgpOw0KKyAgICBtX3BQYWdlUmVzb3VyY2VzID0gbV9wUmVzb3VyY2VzOw0KKyAgICBDUERGX09iamVjdCogcFJvdGF0ZSA9IEdldFBhZ2VBdHRyKEZYX0JTVFJDKCJSb3RhdGUiKSk7DQorICAgIGludCByb3RhdGUgPSAwOw0KKyAgICBpZiAocFJvdGF0ZSkgew0KKyAgICAgICAgcm90YXRlID0gcFJvdGF0ZS0+R2V0SW50ZWdlcigpIC8gOTAgJSA0Ow0KKyAgICB9DQorICAgIGlmIChyb3RhdGUgPCAwKSB7DQorICAgICAgICByb3RhdGUgKz0gNDsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwTWVkaWFCb3gsICpwQ3JvcEJveDsNCisgICAgcE1lZGlhQm94ID0gKENQREZfQXJyYXkqKUdldFBhZ2VBdHRyKEZYX0JTVFJDKCJNZWRpYUJveCIpKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCBtZWRpYWJveDsNCisgICAgaWYgKHBNZWRpYUJveCkgew0KKyAgICAgICAgbWVkaWFib3ggPSBwTWVkaWFCb3gtPkdldFJlY3QoKTsNCisgICAgICAgIG1lZGlhYm94Lk5vcm1hbGl6ZSgpOw0KKyAgICB9DQorICAgIGlmIChtZWRpYWJveC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIG1lZGlhYm94ID0gQ0ZYX0Zsb2F0UmVjdCgwLCAwLCA2MTIsIDc5Mik7DQorICAgIH0NCisgICAgcENyb3BCb3ggPSAoQ1BERl9BcnJheSopR2V0UGFnZUF0dHIoRlhfQlNUUkMoIkNyb3BCb3giKSk7DQorICAgIGlmIChwQ3JvcEJveCkgew0KKyAgICAgICAgbV9CQm94ID0gcENyb3BCb3gtPkdldFJlY3QoKTsNCisgICAgICAgIG1fQkJveC5Ob3JtYWxpemUoKTsNCisgICAgfQ0KKyAgICBpZiAobV9CQm94LklzRW1wdHkoKSkgew0KKyAgICAgICAgbV9CQm94ID0gbWVkaWFib3g7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX0JCb3guSW50ZXJzZWN0KG1lZGlhYm94KTsNCisgICAgfQ0KKyAgICBpZiAocm90YXRlICUgMikgew0KKyAgICAgICAgbV9QYWdlSGVpZ2h0ID0gbV9CQm94LnJpZ2h0IC0gbV9CQm94LmxlZnQ7DQorICAgICAgICBtX1BhZ2VXaWR0aCA9IG1fQkJveC50b3AgLSBtX0JCb3guYm90dG9tOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9QYWdlV2lkdGggPSBtX0JCb3gucmlnaHQgLSBtX0JCb3gubGVmdDsNCisgICAgICAgIG1fUGFnZUhlaWdodCA9IG1fQkJveC50b3AgLSBtX0JCb3guYm90dG9tOw0KKyAgICB9DQorICAgIHN3aXRjaCAocm90YXRlKSB7DQorICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgbV9QYWdlTWF0cml4LlNldCgxLjBmLCAwLCAwLCAxLjBmLCAtbV9CQm94LmxlZnQsIC1tX0JCb3guYm90dG9tKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICBtX1BhZ2VNYXRyaXguU2V0KDAsIC0xLjBmLCAxLjBmLCAwLCAtbV9CQm94LmJvdHRvbSwgbV9CQm94LnJpZ2h0KTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMjoNCisgICAgICAgICAgICBtX1BhZ2VNYXRyaXguU2V0KC0xLjBmLCAwLCAwLCAtMS4wZiwgbV9CQm94LnJpZ2h0LCBtX0JCb3gudG9wKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMzoNCisgICAgICAgICAgICBtX1BhZ2VNYXRyaXguU2V0KDAsIDEuMGYsIC0xLjBmLCAwLCBtX0JCb3gudG9wLCAtbV9CQm94LmxlZnQpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIG1fVHJhbnNwYXJlbmN5ID0gUERGVFJBTlNfSVNPTEFURUQ7DQorICAgIExvYWRUcmFuc0luZm8oKTsNCit9DQordm9pZCBDUERGX1BhZ2U6OlN0YXJ0UGFyc2UoQ1BERl9QYXJzZU9wdGlvbnMqIHBPcHRpb25zLCBGWF9CT09MIGJSZVBhcnNlKQ0KK3sNCisgICAgaWYgKGJSZVBhcnNlKSB7DQorICAgICAgICBDbGVhckNhY2hlT2JqZWN0cygpOw0KKyAgICB9DQorICAgIGlmIChtX1BhcnNlU3RhdGUgPT0gUERGX0NPTlRFTlRfUEFSU0VEIHx8IG1fUGFyc2VTdGF0ZSA9PSBQREZfQ09OVEVOVF9QQVJTSU5HKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wUGFyc2VyID0gRlhfTkVXIENQREZfQ29udGVudFBhcnNlcjsNCisgICAgbV9wUGFyc2VyLT5TdGFydCh0aGlzLCBwT3B0aW9ucyk7DQorICAgIG1fUGFyc2VTdGF0ZSA9IFBERl9DT05URU5UX1BBUlNJTkc7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlOjpQYXJzZUNvbnRlbnQoQ1BERl9QYXJzZU9wdGlvbnMqIHBPcHRpb25zLCBGWF9CT09MIGJSZVBhcnNlKQ0KK3sNCisgICAgU3RhcnRQYXJzZShwT3B0aW9ucywgYlJlUGFyc2UpOw0KKyAgICBDb250aW51ZVBhcnNlKE5VTEwpOw0KK30NCitDUERGX1BhZ2U6On5DUERGX1BhZ2UoKQ0KK3sNCisgICAgaWYgKG1fcFBhZ2VSZW5kZXIpIHsNCisgICAgICAgIENQREZfUmVuZGVyTW9kdWxlRGVmKiBwTW9kdWxlID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRSZW5kZXJNb2R1bGUoKTsNCisgICAgICAgIHBNb2R1bGUtPkRlc3Ryb3lQYWdlQ2FjaGUobV9wUGFnZVJlbmRlcik7DQorICAgIH0NCit9DQorQ1BERl9PYmplY3QqIEZQREZBUElfR2V0UGFnZUF0dHIoQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZURpY3QsIEZYX0JTVFIgbmFtZSkNCit7DQorICAgIGludCBsZXZlbCA9IDA7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IHBQYWdlRGljdC0+R2V0RWxlbWVudFZhbHVlKG5hbWUpOw0KKyAgICAgICAgaWYgKHBPYmopIHsNCisgICAgICAgICAgICByZXR1cm4gcE9iajsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcFBhcmVudCA9IHBQYWdlRGljdC0+R2V0RGljdChGWF9CU1RSQygiUGFyZW50IikpOw0KKyAgICAgICAgaWYgKCFwUGFyZW50IHx8IHBQYXJlbnQgPT0gcFBhZ2VEaWN0KSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBwUGFnZURpY3QgPSBwUGFyZW50Ow0KKyAgICAgICAgbGV2ZWwgKys7DQorICAgICAgICBpZiAobGV2ZWwgPT0gMTAwMCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX1BhZ2U6OkdldFBhZ2VBdHRyKEZYX0JTVFIgbmFtZSkgY29uc3QNCit7DQorICAgIHJldHVybiBGUERGQVBJX0dldFBhZ2VBdHRyKG1fcEZvcm1EaWN0LCBuYW1lKTsNCit9DQorQ1BERl9Gb3JtOjpDUERGX0Zvcm0oQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZVJlc291cmNlcywgQ1BERl9TdHJlYW0qIHBGb3JtU3RyZWFtLCBDUERGX0RpY3Rpb25hcnkqIHBQYXJlbnRSZXNvdXJjZXMpDQorew0KKyAgICBtX3BEb2N1bWVudCA9IHBEb2M7DQorICAgIG1fcEZvcm1TdHJlYW0gPSBwRm9ybVN0cmVhbTsNCisgICAgbV9wRm9ybURpY3QgPSBwRm9ybVN0cmVhbS0+R2V0RGljdCgpOw0KKyAgICBtX3BSZXNvdXJjZXMgPSBtX3BGb3JtRGljdC0+R2V0RGljdChGWF9CU1RSQygiUmVzb3VyY2VzIikpOw0KKyAgICBtX3BQYWdlUmVzb3VyY2VzID0gcFBhZ2VSZXNvdXJjZXM7DQorICAgIGlmIChtX3BSZXNvdXJjZXMgPT0gTlVMTCkgew0KKyAgICAgICAgbV9wUmVzb3VyY2VzID0gcFBhcmVudFJlc291cmNlczsNCisgICAgfQ0KKyAgICBpZiAobV9wUmVzb3VyY2VzID09IE5VTEwpIHsNCisgICAgICAgIG1fcFJlc291cmNlcyA9IHBQYWdlUmVzb3VyY2VzOw0KKyAgICB9DQorICAgIG1fVHJhbnNwYXJlbmN5ID0gMDsNCisgICAgTG9hZFRyYW5zSW5mbygpOw0KK30NCitDUERGX0Zvcm06On5DUERGX0Zvcm0oKQ0KK3sNCit9DQordm9pZCBDUERGX0Zvcm06OlN0YXJ0UGFyc2UoQ1BERl9BbGxTdGF0ZXMqIHBHcmFwaGljU3RhdGVzLCBDRlhfQWZmaW5lTWF0cml4KiBwUGFyZW50TWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfVHlwZTNDaGFyKiBwVHlwZTNDaGFyLCBDUERGX1BhcnNlT3B0aW9ucyogcE9wdGlvbnMsIGludCBsZXZlbCkNCit7DQorICAgIGlmIChtX1BhcnNlU3RhdGUgPT0gUERGX0NPTlRFTlRfUEFSU0VEIHx8IG1fUGFyc2VTdGF0ZSA9PSBQREZfQ09OVEVOVF9QQVJTSU5HKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wUGFyc2VyID0gRlhfTkVXIENQREZfQ29udGVudFBhcnNlcjsNCisgICAgbV9wUGFyc2VyLT5TdGFydCh0aGlzLCBwR3JhcGhpY1N0YXRlcywgcFBhcmVudE1hdHJpeCwgcFR5cGUzQ2hhciwgcE9wdGlvbnMsIGxldmVsKTsNCisgICAgbV9QYXJzZVN0YXRlID0gUERGX0NPTlRFTlRfUEFSU0lORzsNCit9DQordm9pZCBDUERGX0Zvcm06OlBhcnNlQ29udGVudChDUERGX0FsbFN0YXRlcyogcEdyYXBoaWNTdGF0ZXMsIENGWF9BZmZpbmVNYXRyaXgqIHBQYXJlbnRNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1R5cGUzQ2hhciogcFR5cGUzQ2hhciwgQ1BERl9QYXJzZU9wdGlvbnMqIHBPcHRpb25zLCBpbnQgbGV2ZWwpDQorew0KKyAgICBTdGFydFBhcnNlKHBHcmFwaGljU3RhdGVzLCBwUGFyZW50TWF0cml4LCBwVHlwZTNDaGFyLCBwT3B0aW9ucywgbGV2ZWwpOw0KKyAgICBDb250aW51ZVBhcnNlKE5VTEwpOw0KK30NCitDUERGX0Zvcm0qIENQREZfRm9ybTo6Q2xvbmUoKSBjb25zdA0KK3sNCisgICAgQ1BERl9Gb3JtKiBwQ2xvbmUgPSBGWF9ORVcgQ1BERl9Gb3JtKG1fcERvY3VtZW50LCBtX3BQYWdlUmVzb3VyY2VzLCBtX3BGb3JtU3RyZWFtLCBtX3BSZXNvdXJjZXMpOw0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX09iamVjdExpc3QuR2V0SGVhZFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIENQREZfUGFnZU9iamVjdCogcE9iaiA9IChDUERGX1BhZ2VPYmplY3QqKW1fT2JqZWN0TGlzdC5HZXROZXh0KHBvcyk7DQorICAgICAgICBwQ2xvbmUtPm1fT2JqZWN0TGlzdC5BZGRUYWlsKHBPYmotPkNsb25lKCkpOw0KKyAgICB9DQorICAgIHJldHVybiBwQ2xvbmU7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlOjpHZXREaXNwbGF5TWF0cml4KENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCwgaW50IHhQb3MsIGludCB5UG9zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4U2l6ZSwgaW50IHlTaXplLCBpbnQgaVJvdGF0ZSkgY29uc3QNCit7DQorICAgIGlmIChtX1BhZ2VXaWR0aCA9PSAwIHx8IG1fUGFnZUhlaWdodCA9PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBkaXNwbGF5X21hdHJpeDsNCisgICAgaW50IHgwLCB5MCwgeDEsIHkxLCB4MiwgeTI7DQorICAgIGlSb3RhdGUgJT0gNDsNCisgICAgc3dpdGNoIChpUm90YXRlKSB7DQorICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgeDAgPSB4UG9zOw0KKyAgICAgICAgICAgIHkwID0geVBvcyArIHlTaXplOw0KKyAgICAgICAgICAgIHgxID0geFBvczsNCisgICAgICAgICAgICB5MSA9IHlQb3M7DQorICAgICAgICAgICAgeDIgPSB4UG9zICsgeFNpemU7DQorICAgICAgICAgICAgeTIgPSB5UG9zICsgeVNpemU7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgeDAgPSB4UG9zOw0KKyAgICAgICAgICAgIHkwID0geVBvczsNCisgICAgICAgICAgICB4MSA9IHhQb3MgKyB4U2l6ZTsNCisgICAgICAgICAgICB5MSA9IHlQb3M7DQorICAgICAgICAgICAgeDIgPSB4UG9zOw0KKyAgICAgICAgICAgIHkyID0geVBvcyArIHlTaXplOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIHgwID0geFBvcyArIHhTaXplOw0KKyAgICAgICAgICAgIHkwID0geVBvczsNCisgICAgICAgICAgICB4MSA9IHhQb3MgKyB4U2l6ZTsNCisgICAgICAgICAgICB5MSA9IHlQb3MgKyB5U2l6ZTsNCisgICAgICAgICAgICB4MiA9IHhQb3M7DQorICAgICAgICAgICAgeTIgPSB5UG9zOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgIHgwID0geFBvcyArIHhTaXplOw0KKyAgICAgICAgICAgIHkwID0geVBvcyArIHlTaXplOw0KKyAgICAgICAgICAgIHgxID0geFBvczsNCisgICAgICAgICAgICB5MSA9IHlQb3MgKyB5U2l6ZTsNCisgICAgICAgICAgICB4MiA9IHhQb3MgKyB4U2l6ZTsNCisgICAgICAgICAgICB5MiA9IHlQb3M7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgZGlzcGxheV9tYXRyaXguU2V0KEZYU1lTX0RpdigoRlhfRkxPQVQpKHgyIC0geDApLCBtX1BhZ2VXaWR0aCksDQorICAgICAgICAgICAgICAgICAgICAgICBGWFNZU19EaXYoKEZYX0ZMT0FUKSh5MiAtIHkwKSwgbV9QYWdlV2lkdGgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfRGl2KChGWF9GTE9BVCkoeDEgLSB4MCksIG1fUGFnZUhlaWdodCksDQorICAgICAgICAgICAgICAgICAgICAgICBGWFNZU19EaXYoKEZYX0ZMT0FUKSh5MSAtIHkwKSwgbV9QYWdlSGVpZ2h0KSwNCisgICAgICAgICAgICAgICAgICAgICAgIChGWF9GTE9BVCl4MCwgKEZYX0ZMT0FUKXkwKTsNCisgICAgbWF0cml4ID0gbV9QYWdlTWF0cml4Ow0KKyAgICBtYXRyaXguQ29uY2F0KGRpc3BsYXlfbWF0cml4KTsNCit9DQorQ1BERl9QYXJzZU9wdGlvbnM6OkNQREZfUGFyc2VPcHRpb25zKCkNCit7DQorICAgIG1fYlRleHRPbmx5ID0gRkFMU0U7DQorICAgIG1fYk1hcmtlZENvbnRlbnQgPSBUUlVFOw0KKyAgICBtX2JTZXBhcmF0ZUZvcm0gPSBUUlVFOw0KKyAgICBtX2JEZWNvZGVJbmxpbmVJbWFnZSA9IEZBTFNFOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2VfY29sb3JzLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9jb2xvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YjRmYzAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2VfY29sb3JzLmNwcApAQCAtMCwwICsxLDE0MDEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX21vZHVsZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWMuaCINCisjaW5jbHVkZSAicGFnZWludC5oIg0KKyNpbmNsdWRlIDxsaW1pdHMuaD4NCit2b2lkIHNSR0JfdG9fQWRvYmVDTVlLKEZYX0ZMT0FUIFIsIEZYX0ZMT0FUIEcsIEZYX0ZMT0FUIEIsIEZYX0ZMT0FUJiBjLCBGWF9GTE9BVCYgbSwgRlhfRkxPQVQmIHksIEZYX0ZMT0FUJiBrKQ0KK3sNCisgICAgYyA9IDEuMGYgLSBSOw0KKyAgICBtID0gMS4wZiAtIEc7DQorICAgIHkgPSAxLjBmIC0gQjsNCisgICAgayA9IGM7DQorICAgIGlmIChtIDwgaykgew0KKyAgICAgICAgayA9IG07DQorICAgIH0NCisgICAgaWYgKHkgPCBrKSB7DQorICAgICAgICBrID0geTsNCisgICAgfQ0KK30NCitDUERGX0RldmljZUNTOjpDUERGX0RldmljZUNTKGludCBmYW1pbHkpDQorew0KKyAgICBtX0ZhbWlseSA9IGZhbWlseTsNCisgICAgaWYgKG1fRmFtaWx5ID09IFBERkNTX0RFVklDRVJHQikgew0KKyAgICAgICAgbV9uQ29tcG9uZW50cyA9IDM7DQorICAgIH0gZWxzZSBpZiAobV9GYW1pbHkgPT0gUERGQ1NfREVWSUNFR1JBWSkgew0KKyAgICAgICAgbV9uQ29tcG9uZW50cyA9IDE7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX25Db21wb25lbnRzID0gNDsNCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfRGV2aWNlQ1M6OkdldFJHQihGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQmIFIsIEZYX0ZMT0FUJiBHLCBGWF9GTE9BVCYgQikgY29uc3QNCit7DQorICAgIGlmIChtX0ZhbWlseSA9PSBQREZDU19ERVZJQ0VSR0IpIHsNCisgICAgICAgIFIgPSBwQnVmWzBdOw0KKyAgICAgICAgaWYgKFIgPCAwKSB7DQorICAgICAgICAgICAgUiA9IDA7DQorICAgICAgICB9IGVsc2UgaWYgKFIgPiAxKSB7DQorICAgICAgICAgICAgUiA9IDE7DQorICAgICAgICB9DQorICAgICAgICBHID0gcEJ1ZlsxXTsNCisgICAgICAgIGlmIChHIDwgMCkgew0KKyAgICAgICAgICAgIEcgPSAwOw0KKyAgICAgICAgfSBlbHNlIGlmIChHID4gMSkgew0KKyAgICAgICAgICAgIEcgPSAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQiA9IHBCdWZbMl07DQorICAgICAgICBpZiAoQiA8IDApIHsNCisgICAgICAgICAgICBCID0gMDsNCisgICAgICAgIH0gZWxzZSBpZiAoQiA+IDEpIHsNCisgICAgICAgICAgICBCID0gMTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChtX0ZhbWlseSA9PSBQREZDU19ERVZJQ0VHUkFZKSB7DQorICAgICAgICBSID0gKnBCdWY7DQorICAgICAgICBpZiAoUiA8IDApIHsNCisgICAgICAgICAgICBSID0gMDsNCisgICAgICAgIH0gZWxzZSBpZiAoUiA+IDEpIHsNCisgICAgICAgICAgICBSID0gMTsNCisgICAgICAgIH0NCisgICAgICAgIEcgPSBCID0gUjsNCisgICAgfSBlbHNlIGlmIChtX0ZhbWlseSA9PSBQREZDU19ERVZJQ0VDTVlLKSB7DQorICAgICAgICBpZiAoIW1fZHdTdGRDb252ZXJzaW9uKSB7DQorICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IocEJ1ZlswXSwgcEJ1ZlsxXSwgcEJ1ZlsyXSwgcEJ1ZlszXSwgUiwgRywgQik7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGsgPSBwQnVmWzNdOw0KKyAgICAgICAgICAgIFIgPSAxLjBmIC0gRlhfTUlOKDEuMGYsIHBCdWZbMF0gKyBrKTsNCisgICAgICAgICAgICBHID0gMS4wZiAtIEZYX01JTigxLjBmLCBwQnVmWzFdICsgayk7DQorICAgICAgICAgICAgQiA9IDEuMGYgLSBGWF9NSU4oMS4wZiwgcEJ1ZlsyXSArIGspOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQVNTRVJUKG1fRmFtaWx5ID09IFBERkNTX1BBVFRFUk4pOw0KKyAgICAgICAgUiA9IEcgPSBCID0gMDsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0RldmljZUNTOjp2X0dldENNWUsoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUJiBjLCBGWF9GTE9BVCYgbSwgRlhfRkxPQVQmIHksIEZYX0ZMT0FUJiBrKSBjb25zdA0KK3sNCisgICAgaWYgKG1fRmFtaWx5ICE9IFBERkNTX0RFVklDRUNNWUspIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBjID0gcEJ1ZlswXTsNCisgICAgbSA9IHBCdWZbMV07DQorICAgIHkgPSBwQnVmWzJdOw0KKyAgICBrID0gcEJ1ZlszXTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EZXZpY2VDUzo6U2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCBSLCBGWF9GTE9BVCBHLCBGWF9GTE9BVCBCKSBjb25zdA0KK3sNCisgICAgaWYgKG1fRmFtaWx5ID09IFBERkNTX0RFVklDRVJHQikgew0KKyAgICAgICAgcEJ1ZlswXSA9IFI7DQorICAgICAgICBwQnVmWzFdID0gRzsNCisgICAgICAgIHBCdWZbMl0gPSBCOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0gZWxzZSBpZiAobV9GYW1pbHkgPT0gUERGQ1NfREVWSUNFR1JBWSkgew0KKyAgICAgICAgaWYgKFIgPT0gRyAmJiBSID09IEIpIHsNCisgICAgICAgICAgICAqcEJ1ZiA9IFI7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChtX0ZhbWlseSA9PSBQREZDU19ERVZJQ0VDTVlLKSB7DQorICAgICAgICBzUkdCX3RvX0Fkb2JlQ01ZSyhSLCBHLCBCLCBwQnVmWzBdLCBwQnVmWzFdLCBwQnVmWzJdLCBwQnVmWzNdKTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0RldmljZUNTOjp2X1NldENNWUsoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUIGMsIEZYX0ZMT0FUIG0sIEZYX0ZMT0FUIHksIEZYX0ZMT0FUIGspIGNvbnN0DQorew0KKyAgICBpZiAobV9GYW1pbHkgPT0gUERGQ1NfREVWSUNFUkdCKSB7DQorICAgICAgICBBZG9iZUNNWUtfdG9fc1JHQihjLCBtLCB5LCBrLCBwQnVmWzBdLCBwQnVmWzFdLCBwQnVmWzJdKTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9IGVsc2UgaWYgKG1fRmFtaWx5ID09IFBERkNTX0RFVklDRUdSQVkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfSBlbHNlIGlmIChtX0ZhbWlseSA9PSBQREZDU19ERVZJQ0VDTVlLKSB7DQorICAgICAgICBwQnVmWzBdID0gYzsNCisgICAgICAgIHBCdWZbMV0gPSBtOw0KKyAgICAgICAgcEJ1ZlsyXSA9IHk7DQorICAgICAgICBwQnVmWzNdID0gazsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorc3RhdGljIHZvaWQgUmV2ZXJzZVJHQihGWF9MUEJZVEUgcERlc3RCdWYsIEZYX0xQQ0JZVEUgcFNyY0J1ZiwgaW50IHBpeGVscykNCit7DQorICAgIGlmIChwRGVzdEJ1ZiA9PSBwU3JjQnVmKQ0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwaXhlbHM7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9CWVRFIHRlbXAgPSBwRGVzdEJ1ZlsyXTsNCisgICAgICAgICAgICBwRGVzdEJ1ZlsyXSA9IHBEZXN0QnVmWzBdOw0KKyAgICAgICAgICAgIHBEZXN0QnVmWzBdID0gdGVtcDsNCisgICAgICAgICAgICBwRGVzdEJ1ZiArPSAzOw0KKyAgICAgICAgfQ0KKyAgICBlbHNlDQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBpeGVsczsgaSArKykgew0KKyAgICAgICAgICAgICpwRGVzdEJ1ZiArKyA9IHBTcmNCdWZbMl07DQorICAgICAgICAgICAgKnBEZXN0QnVmICsrID0gcFNyY0J1ZlsxXTsNCisgICAgICAgICAgICAqcERlc3RCdWYgKysgPSBwU3JjQnVmWzBdOw0KKyAgICAgICAgICAgIHBTcmNCdWYgKz0gMzsNCisgICAgICAgIH0NCit9DQordm9pZCBDUERGX0RldmljZUNTOjpUcmFuc2xhdGVJbWFnZUxpbmUoRlhfTFBCWVRFIHBEZXN0QnVmLCBGWF9MUENCWVRFIHBTcmNCdWYsIGludCBwaXhlbHMsIGludCBpbWFnZV93aWR0aCwgaW50IGltYWdlX2hlaWdodCwgRlhfQk9PTCBiVHJhbnNNYXNrKSBjb25zdA0KK3sNCisgICAgaWYgKGJUcmFuc01hc2sgJiYgbV9GYW1pbHkgPT0gUERGQ1NfREVWSUNFQ01ZSykgew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwaXhlbHM7IGkgKyspIHsNCisgICAgICAgICAgICBpbnQgayA9IDI1NSAtIHBTcmNCdWZbM107DQorICAgICAgICAgICAgcERlc3RCdWZbMF0gPSAoKDI1NSAtIHBTcmNCdWZbMF0pICogaykgLyAyNTU7DQorICAgICAgICAgICAgcERlc3RCdWZbMV0gPSAoKDI1NSAtIHBTcmNCdWZbMV0pICogaykgLyAyNTU7DQorICAgICAgICAgICAgcERlc3RCdWZbMl0gPSAoKDI1NSAtIHBTcmNCdWZbMl0pICogaykgLyAyNTU7DQorICAgICAgICAgICAgcERlc3RCdWYgKz0gMzsNCisgICAgICAgICAgICBwU3JjQnVmICs9IDQ7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fRmFtaWx5ID09IFBERkNTX0RFVklDRVJHQikgew0KKyAgICAgICAgUmV2ZXJzZVJHQihwRGVzdEJ1ZiwgcFNyY0J1ZiwgcGl4ZWxzKTsNCisgICAgfSBlbHNlIGlmIChtX0ZhbWlseSA9PSBQREZDU19ERVZJQ0VHUkFZKSB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBpeGVsczsgaSArKykgew0KKyAgICAgICAgICAgICpwRGVzdEJ1ZiArKyA9IHBTcmNCdWZbaV07DQorICAgICAgICAgICAgKnBEZXN0QnVmICsrID0gcFNyY0J1ZltpXTsNCisgICAgICAgICAgICAqcERlc3RCdWYgKysgPSBwU3JjQnVmW2ldOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwaXhlbHM7IGkgKyspIHsNCisgICAgICAgICAgICBpZiAoIW1fZHdTdGRDb252ZXJzaW9uKSB7DQorICAgICAgICAgICAgICAgIEFkb2JlQ01ZS190b19zUkdCMShwU3JjQnVmWzBdLCBwU3JjQnVmWzFdLCBwU3JjQnVmWzJdLCBwU3JjQnVmWzNdLCBwRGVzdEJ1ZlsyXSwgcERlc3RCdWZbMV0sIHBEZXN0QnVmWzBdKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGsgPSBwU3JjQnVmWzNdOw0KKyAgICAgICAgICAgICAgICBwRGVzdEJ1ZlsyXSA9IDI1NSAtIEZYX01JTigyNTUsIHBTcmNCdWZbMF0gKyBrKTsNCisgICAgICAgICAgICAgICAgcERlc3RCdWZbMV0gPSAyNTUgLSBGWF9NSU4oMjU1LCBwU3JjQnVmWzFdICsgayk7DQorICAgICAgICAgICAgICAgIHBEZXN0QnVmWzBdID0gMjU1IC0gRlhfTUlOKDI1NSwgcFNyY0J1ZlsyXSArIGspOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwU3JjQnVmICs9IDQ7DQorICAgICAgICAgICAgcERlc3RCdWYgKz0gMzsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitjb25zdCBGWF9CWVRFIGdfc1JHQlNhbXBsZXMxW10gPSB7DQorICAgIDAsICAgMywgICA2LCAgMTAsICAxMywgIDE1LCAgMTgsICAyMCwgIDIyLCAgMjMsICAyNSwgIDI3LCAgMjgsICAzMCwgIDMxLCAgMzIsDQorICAgIDM0LCAgMzUsICAzNiwgIDM3LCAgMzgsICAzOSwgIDQwLCAgNDEsICA0MiwgIDQzLCAgNDQsICA0NSwgIDQ2LCAgNDcsICA0OCwgIDQ5LA0KKyAgICA0OSwgIDUwLCAgNTEsICA1MiwgIDUzLCAgNTMsICA1NCwgIDU1LCAgNTYsICA1NiwgIDU3LCAgNTgsICA1OCwgIDU5LCAgNjAsICA2MSwNCisgICAgNjEsICA2MiwgIDYyLCAgNjMsICA2NCwgIDY0LCAgNjUsICA2NiwgIDY2LCAgNjcsICA2NywgIDY4LCAgNjgsICA2OSwgIDcwLCAgNzAsDQorICAgIDcxLCAgNzEsICA3MiwgIDcyLCAgNzMsICA3MywgIDc0LCAgNzQsICA3NSwgIDc2LCAgNzYsICA3NywgIDc3LCAgNzgsICA3OCwgIDc5LA0KKyAgICA3OSwgIDc5LCAgODAsICA4MCwgIDgxLCAgODEsICA4MiwgIDgyLCAgODMsICA4MywgIDg0LCAgODQsICA4NSwgIDg1LCAgODUsICA4NiwNCisgICAgODYsICA4NywgIDg3LCAgODgsICA4OCwgIDg4LCAgODksICA4OSwgIDkwLCAgOTAsICA5MSwgIDkxLCAgOTEsICA5MiwgIDkyLCAgOTMsDQorICAgIDkzLCAgOTMsICA5NCwgIDk0LCAgOTUsICA5NSwgIDk1LCAgOTYsICA5NiwgIDk3LCAgOTcsICA5NywgIDk4LCAgOTgsICA5OCwgIDk5LA0KKyAgICA5OSwgIDk5LCAxMDAsIDEwMCwgMTAxLCAxMDEsIDEwMSwgMTAyLCAxMDIsIDEwMiwgMTAzLCAxMDMsIDEwMywgMTA0LCAxMDQsIDEwNCwNCisgICAgMTA1LCAxMDUsIDEwNiwgMTA2LCAxMDYsIDEwNywgMTA3LCAxMDcsIDEwOCwgMTA4LCAxMDgsIDEwOSwgMTA5LCAxMDksIDExMCwgMTEwLA0KKyAgICAxMTAsIDExMCwgMTExLCAxMTEsIDExMSwgMTEyLCAxMTIsIDExMiwgMTEzLCAxMTMsIDExMywgMTE0LCAxMTQsIDExNCwgMTE1LCAxMTUsDQorICAgIDExNSwgMTE1LCAxMTYsIDExNiwgMTE2LCAxMTcsIDExNywgMTE3LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOSwgMTE5LCAxMTksIDEyMCwNCit9Ow0KK2NvbnN0IEZYX0JZVEUgZ19zUkdCU2FtcGxlczJbXSA9IHsNCisgICAgMTIwLCAxMjEsIDEyMiwgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LA0KKyAgICAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDgsIDE0OSwgMTUwLCAxNTEsDQorICAgIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjMsIDE2NCwNCisgICAgMTY1LCAxNjYsIDE2NywgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3MywgMTc0LCAxNzUsIDE3NSwgMTc2LA0KKyAgICAxNzcsIDE3OCwgMTc4LCAxNzksIDE4MCwgMTgwLCAxODEsIDE4MiwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODUsIDE4NiwgMTg3LCAxODcsDQorICAgIDE4OCwgMTg5LCAxODksIDE5MCwgMTkwLCAxOTEsIDE5MiwgMTkyLCAxOTMsIDE5NCwgMTk0LCAxOTUsIDE5NiwgMTk2LCAxOTcsIDE5NywNCisgICAgMTk4LCAxOTksIDE5OSwgMjAwLCAyMDAsIDIwMSwgMjAyLCAyMDIsIDIwMywgMjAzLCAyMDQsIDIwNSwgMjA1LCAyMDYsIDIwNiwgMjA3LA0KKyAgICAyMDgsIDIwOCwgMjA5LCAyMDksIDIxMCwgMjEwLCAyMTEsIDIxMiwgMjEyLCAyMTMsIDIxMywgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsDQorICAgIDIxNiwgMjE3LCAyMTgsIDIxOCwgMjE5LCAyMTksIDIyMCwgMjIwLCAyMjEsIDIyMSwgMjIyLCAyMjIsIDIyMywgMjIzLCAyMjQsIDIyNCwNCisgICAgMjI1LCAyMjYsIDIyNiwgMjI3LCAyMjcsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjMwLCAyMzAsIDIzMSwgMjMxLCAyMzIsIDIzMiwgMjMzLA0KKyAgICAyMzMsIDIzNCwgMjM0LCAyMzUsIDIzNSwgMjM2LCAyMzYsIDIzNywgMjM3LCAyMzgsIDIzOCwgMjM4LCAyMzksIDIzOSwgMjQwLCAyNDAsDQorICAgIDI0MSwgMjQxLCAyNDIsIDI0MiwgMjQzLCAyNDMsIDI0NCwgMjQ0LCAyNDUsIDI0NSwgMjQ2LCAyNDYsIDI0NiwgMjQ3LCAyNDcsIDI0OCwNCisgICAgMjQ4LCAyNDksIDI0OSwgMjUwLCAyNTAsIDI1MSwgMjUxLCAyNTEsIDI1MiwgMjUyLCAyNTMsIDI1MywgMjU0LCAyNTQsIDI1NSwgMjU1LA0KK307DQorc3RhdGljIHZvaWQgWFlaX3RvX3NSR0IoRlhfRkxPQVQgWCwgRlhfRkxPQVQgWSwgRlhfRkxPQVQgWiwgRlhfRkxPQVQmIFIsIEZYX0ZMT0FUJiBHLCBGWF9GTE9BVCYgQikNCit7DQorICAgIEZYX0ZMT0FUIFIxID0gMy4yNDEwZiAqIFggLSAxLjUzNzRmICogWSAtIDAuNDk4NmYgKiBaOw0KKyAgICBGWF9GTE9BVCBHMSA9IC0wLjk2OTJmICogWCArIDEuODc2MGYgKiBZICsgMC4wNDE2ZiAqIFo7DQorICAgIEZYX0ZMT0FUIEIxID0gIDAuMDU1NmYgKiBYIC0gMC4yMDQwZiAqIFkgKyAxLjA1NzBmICogWjsNCisgICAgaWYgKFIxID4gMSkgew0KKyAgICAgICAgUjEgPSAxOw0KKyAgICB9DQorICAgIGlmIChSMSA8IDApIHsNCisgICAgICAgIFIxID0gMDsNCisgICAgfQ0KKyAgICBpZiAoRzEgPiAxKSB7DQorICAgICAgICBHMSA9IDE7DQorICAgIH0NCisgICAgaWYgKEcxIDwgMCkgew0KKyAgICAgICAgRzEgPSAwOw0KKyAgICB9DQorICAgIGlmIChCMSA+IDEpIHsNCisgICAgICAgIEIxID0gMTsNCisgICAgfQ0KKyAgICBpZiAoQjEgPCAwKSB7DQorICAgICAgICBCMSA9IDA7DQorICAgIH0NCisgICAgaW50IHNjYWxlID0gKGludCkoUjEgKiAxMDIzKTsNCisgICAgaWYgKHNjYWxlIDwgMCkgew0KKyAgICAgICAgc2NhbGUgPSAwOw0KKyAgICB9DQorICAgIGlmIChzY2FsZSA8IDE5Mikgew0KKyAgICAgICAgUiA9IChnX3NSR0JTYW1wbGVzMVtzY2FsZV0gLyAyNTUuMGYpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgUiA9IChnX3NSR0JTYW1wbGVzMltzY2FsZSAvIDQgLSA0OF0gLyAyNTUuMGYpOw0KKyAgICB9DQorICAgIHNjYWxlID0gKGludCkoRzEgKiAxMDIzKTsNCisgICAgaWYgKHNjYWxlIDwgMCkgew0KKyAgICAgICAgc2NhbGUgPSAwOw0KKyAgICB9DQorICAgIGlmIChzY2FsZSA8IDE5Mikgew0KKyAgICAgICAgRyA9IChnX3NSR0JTYW1wbGVzMVtzY2FsZV0gLyAyNTUuMGYpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRyA9IChnX3NSR0JTYW1wbGVzMltzY2FsZSAvIDQgLSA0OF0gLyAyNTUuMGYpOw0KKyAgICB9DQorICAgIHNjYWxlID0gKGludCkoQjEgKiAxMDIzKTsNCisgICAgaWYgKHNjYWxlIDwgMCkgew0KKyAgICAgICAgc2NhbGUgPSAwOw0KKyAgICB9DQorICAgIGlmIChzY2FsZSA8IDE5Mikgew0KKyAgICAgICAgQiA9IChnX3NSR0JTYW1wbGVzMVtzY2FsZV0gLyAyNTUuMGYpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQiA9IChnX3NSR0JTYW1wbGVzMltzY2FsZSAvIDQgLSA0OF0gLyAyNTUuMGYpOw0KKyAgICB9DQorfQ0KK2NsYXNzIENQREZfQ2FsR3JheSA6IHB1YmxpYyBDUERGX0NvbG9yU3BhY2UNCit7DQorcHVibGljOg0KKyAgICBDUERGX0NhbEdyYXkoKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQl2X0xvYWQoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9BcnJheSogcEFycmF5KTsNCisgICAgdmlydHVhbCBGWF9CT09MCQlHZXRSR0IoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUJiBSLCBGWF9GTE9BVCYgRywgRlhfRkxPQVQmIEIpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIHZvaWQJCVRyYW5zbGF0ZUltYWdlTGluZShGWF9MUEJZVEUgcERlc3RCdWYsIEZYX0xQQ0JZVEUgcFNyY0J1ZiwgaW50IHBpeGVscywgaW50IGltYWdlX3dpZHRoLCBpbnQgaW1hZ2VfaGVpZ2h0LCBGWF9CT09MIGJUcmFuc01hc2sgPSBGQUxTRSkgY29uc3Q7DQorICAgIEZYX0JPT0wJCQkJU2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCBSLCBGWF9GTE9BVCBHLCBGWF9GTE9BVCBCKSBjb25zdDsNCisgICAgRlhfRkxPQVQJCQltX1doaXRlUG9pbnRbM107DQorICAgIEZYX0ZMT0FUCQkJbV9CbGFja1BvaW50WzNdOw0KKyAgICBGWF9GTE9BVAkJCW1fR2FtbWE7DQorfTsNCitDUERGX0NhbEdyYXk6OkNQREZfQ2FsR3JheSgpDQorew0KKyAgICBtX0ZhbWlseSA9IFBERkNTX0NBTEdSQVk7DQorICAgIG1fbkNvbXBvbmVudHMgPSAxOw0KK30NCitGWF9CT09MIENQREZfQ2FsR3JheTo6dl9Mb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfQXJyYXkqIHBBcnJheSkNCit7DQorICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBwQXJyYXktPkdldERpY3QoMSk7DQorICAgIENQREZfQXJyYXkqIHBQYXJhbSA9IHBEaWN0LT5HZXRBcnJheShGWF9CU1RSQygiV2hpdGVQb2ludCIpKTsNCisgICAgaW50IGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpICsrKSB7DQorICAgICAgICBtX1doaXRlUG9pbnRbaV0gPSBwUGFyYW0tPkdldE51bWJlcihpKTsNCisgICAgfQ0KKyAgICBwUGFyYW0gPSBwRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkJsYWNrUG9pbnQiKSk7DQorICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpICsrKSB7DQorICAgICAgICBtX0JsYWNrUG9pbnRbaV0gPSBwUGFyYW0gPyBwUGFyYW0tPkdldE51bWJlcihpKSA6IDA7DQorICAgIH0NCisgICAgbV9HYW1tYSA9IHBEaWN0LT5HZXROdW1iZXIoRlhfQlNUUkMoIkdhbW1hIikpOw0KKyAgICBpZiAobV9HYW1tYSA9PSAwKSB7DQorICAgICAgICBtX0dhbW1hID0gMS4wZjsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0NhbEdyYXk6OkdldFJHQihGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQmIFIsIEZYX0ZMT0FUJiBHLCBGWF9GTE9BVCYgQikgY29uc3QNCit7DQorICAgIFIgPSBHID0gQiA9ICpwQnVmOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0NhbEdyYXk6OlNldFJHQihGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQgUiwgRlhfRkxPQVQgRywgRlhfRkxPQVQgQikgY29uc3QNCit7DQorICAgIGlmIChSID09IEcgJiYgUiA9PSBCKSB7DQorICAgICAgICAqcEJ1ZiA9IFI7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfQ2FsR3JheTo6VHJhbnNsYXRlSW1hZ2VMaW5lKEZYX0xQQllURSBwRGVzdEJ1ZiwgRlhfTFBDQllURSBwU3JjQnVmLCBpbnQgcGl4ZWxzLCBpbnQgaW1hZ2Vfd2lkdGgsIGludCBpbWFnZV9oZWlnaHQsIEZYX0JPT0wgYlRyYW5zTWFzaykgY29uc3QNCit7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGl4ZWxzOyBpICsrKSB7DQorICAgICAgICAqcERlc3RCdWYgKysgPSBwU3JjQnVmW2ldOw0KKyAgICAgICAgKnBEZXN0QnVmICsrID0gcFNyY0J1ZltpXTsNCisgICAgICAgICpwRGVzdEJ1ZiArKyA9IHBTcmNCdWZbaV07DQorICAgIH0NCit9DQorY2xhc3MgQ1BERl9DYWxSR0IgOiBwdWJsaWMgQ1BERl9Db2xvclNwYWNlDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9DYWxSR0IoKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQl2X0xvYWQoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9BcnJheSogcEFycmF5KTsNCisgICAgdmlydHVhbCBGWF9CT09MCQlHZXRSR0IoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUJiBSLCBGWF9GTE9BVCYgRywgRlhfRkxPQVQmIEIpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIHZvaWQJCVRyYW5zbGF0ZUltYWdlTGluZShGWF9MUEJZVEUgcERlc3RCdWYsIEZYX0xQQ0JZVEUgcFNyY0J1ZiwgaW50IHBpeGVscywgaW50IGltYWdlX3dpZHRoLCBpbnQgaW1hZ2VfaGVpZ2h0LCBGWF9CT09MIGJUcmFuc01hc2sgPSBGQUxTRSkgY29uc3Q7DQorICAgIEZYX0JPT0wJCQkJU2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCBSLCBGWF9GTE9BVCBHLCBGWF9GTE9BVCBCKSBjb25zdDsNCisgICAgRlhfRkxPQVQJCQltX1doaXRlUG9pbnRbM107DQorICAgIEZYX0ZMT0FUCQkJbV9CbGFja1BvaW50WzNdOw0KKyAgICBGWF9GTE9BVAkJCW1fR2FtbWFbM107DQorICAgIEZYX0ZMT0FUCQkJbV9NYXRyaXhbOV07DQorICAgIEZYX0JPT0wJCQkJbV9iR2FtbWEsIG1fYk1hdHJpeDsNCit9Ow0KK0NQREZfQ2FsUkdCOjpDUERGX0NhbFJHQigpDQorew0KKyAgICBtX0ZhbWlseSA9IFBERkNTX0NBTFJHQjsNCisgICAgbV9uQ29tcG9uZW50cyA9IDM7DQorfQ0KK0ZYX0JPT0wgQ1BERl9DYWxSR0I6OnZfTG9hZChDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0FycmF5KiBwQXJyYXkpDQorew0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gcEFycmF5LT5HZXREaWN0KDEpOw0KKyAgICBDUERGX0FycmF5KiBwUGFyYW0gPSBwRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIldoaXRlUG9pbnQiKSk7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSArKykgew0KKyAgICAgICAgbV9XaGl0ZVBvaW50W2ldID0gcFBhcmFtLT5HZXROdW1iZXIoaSk7DQorICAgIH0NCisgICAgcFBhcmFtID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJCbGFja1BvaW50IikpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSArKykgew0KKyAgICAgICAgbV9CbGFja1BvaW50W2ldID0gcFBhcmFtID8gcFBhcmFtLT5HZXROdW1iZXIoaSkgOiAwOw0KKyAgICB9DQorICAgIHBQYXJhbSA9IHBEaWN0LT5HZXRBcnJheShGWF9CU1RSQygiR2FtbWEiKSk7DQorICAgIGlmIChwUGFyYW0pIHsNCisgICAgICAgIG1fYkdhbW1hID0gVFJVRTsNCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpICsrKSB7DQorICAgICAgICAgICAgbV9HYW1tYVtpXSA9IHBQYXJhbS0+R2V0TnVtYmVyKGkpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9iR2FtbWEgPSBGQUxTRTsNCisgICAgfQ0KKyAgICBwUGFyYW0gPSBwRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIk1hdHJpeCIpKTsNCisgICAgaWYgKHBQYXJhbSkgew0KKyAgICAgICAgbV9iTWF0cml4ID0gVFJVRTsNCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCA5OyBpICsrKSB7DQorICAgICAgICAgICAgbV9NYXRyaXhbaV0gPSBwUGFyYW0tPkdldE51bWJlcihpKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fYk1hdHJpeCA9IEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfQ2FsUkdCOjpHZXRSR0IoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUJiBSLCBGWF9GTE9BVCYgRywgRlhfRkxPQVQmIEIpIGNvbnN0DQorew0KKyAgICBGWF9GTE9BVCBBXyA9IHBCdWZbMF07DQorICAgIEZYX0ZMT0FUIEJfID0gcEJ1ZlsxXTsNCisgICAgRlhfRkxPQVQgQ18gPSBwQnVmWzJdOw0KKyAgICBpZiAobV9iR2FtbWEpIHsNCisgICAgICAgIEFfID0gKEZYX0ZMT0FUKUZYU1lTX3BvdyhBXywgbV9HYW1tYVswXSk7DQorICAgICAgICBCXyA9IChGWF9GTE9BVClGWFNZU19wb3coQl8sIG1fR2FtbWFbMV0pOw0KKyAgICAgICAgQ18gPSAoRlhfRkxPQVQpRlhTWVNfcG93KENfLCBtX0dhbW1hWzJdKTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBYLCBZLCBaOw0KKyAgICBpZiAobV9iTWF0cml4KSB7DQorICAgICAgICBYID0gbV9NYXRyaXhbMF0gKiBBXyArIG1fTWF0cml4WzNdICogQl8gKyBtX01hdHJpeFs2XSAqIENfOw0KKyAgICAgICAgWSA9IG1fTWF0cml4WzFdICogQV8gKyBtX01hdHJpeFs0XSAqIEJfICsgbV9NYXRyaXhbN10gKiBDXzsNCisgICAgICAgIFogPSBtX01hdHJpeFsyXSAqIEFfICsgbV9NYXRyaXhbNV0gKiBCXyArIG1fTWF0cml4WzhdICogQ187DQorICAgIH0gZWxzZSB7DQorICAgICAgICBYID0gQV87DQorICAgICAgICBZID0gQl87DQorICAgICAgICBaID0gQ187DQorICAgIH0NCisgICAgWFlaX3RvX3NSR0IoWCwgWSwgWiwgUiwgRywgQik7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfQ2FsUkdCOjpTZXRSR0IoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUIFIsIEZYX0ZMT0FUIEcsIEZYX0ZMT0FUIEIpIGNvbnN0DQorew0KKyAgICBwQnVmWzBdID0gUjsNCisgICAgcEJ1ZlsxXSA9IEc7DQorICAgIHBCdWZbMl0gPSBCOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDUERGX0NhbFJHQjo6VHJhbnNsYXRlSW1hZ2VMaW5lKEZYX0xQQllURSBwRGVzdEJ1ZiwgRlhfTFBDQllURSBwU3JjQnVmLCBpbnQgcGl4ZWxzLCBpbnQgaW1hZ2Vfd2lkdGgsIGludCBpbWFnZV9oZWlnaHQsIEZYX0JPT0wgYlRyYW5zTWFzaykgY29uc3QNCit7DQorICAgIGlmIChiVHJhbnNNYXNrKSB7DQorICAgICAgICBGWF9GTE9BVCBDYWxbM107DQorICAgICAgICBGWF9GTE9BVCBSLCBHLCBCOw0KKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHBpeGVsczsgaSArKykgew0KKyAgICAgICAgICAgIENhbFswXSA9ICgoRlhfRkxPQVQpcFNyY0J1ZlsyXSkgLyAyNTU7DQorICAgICAgICAgICAgQ2FsWzFdID0gKChGWF9GTE9BVClwU3JjQnVmWzFdKSAvIDI1NTsNCisgICAgICAgICAgICBDYWxbMl0gPSAoKEZYX0ZMT0FUKXBTcmNCdWZbMF0pIC8gMjU1Ow0KKyAgICAgICAgICAgIEdldFJHQihDYWwsIFIsIEcsIEIpOw0KKyAgICAgICAgICAgIHBEZXN0QnVmWzBdID0gRlhTWVNfcm91bmQoQiAqIDI1NSk7DQorICAgICAgICAgICAgcERlc3RCdWZbMV0gPSBGWFNZU19yb3VuZChHICogMjU1KTsNCisgICAgICAgICAgICBwRGVzdEJ1ZlsyXSA9IEZYU1lTX3JvdW5kKFIgKiAyNTUpOw0KKyAgICAgICAgICAgIHBTcmNCdWYgKz0gMzsNCisgICAgICAgICAgICBwRGVzdEJ1ZiArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIFJldmVyc2VSR0IocERlc3RCdWYsIHBTcmNCdWYsIHBpeGVscyk7DQorfQ0KK2NsYXNzIENQREZfTGFiQ1MgOiBwdWJsaWMgQ1BERl9Db2xvclNwYWNlDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9MYWJDUygpDQorICAgIHsNCisgICAgICAgIG1fRmFtaWx5ID0gUERGQ1NfTEFCOw0KKyAgICAgICAgbV9uQ29tcG9uZW50cyA9IDM7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9CT09MCQl2X0xvYWQoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9BcnJheSogcEFycmF5KTsNCisgICAgdmlydHVhbCB2b2lkCQlHZXREZWZhdWx0VmFsdWUoaW50IGlDb21wb25lbnQsIEZYX0ZMT0FUJiB2YWx1ZSwgRlhfRkxPQVQmIG1pbiwgRlhfRkxPQVQmIG1heCkgY29uc3Q7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJR2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdDsNCisgICAgRlhfQk9PTAkJU2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCBSLCBGWF9GTE9BVCBHLCBGWF9GTE9BVCBCKSBjb25zdDsNCisgICAgdmlydHVhbCB2b2lkCQlUcmFuc2xhdGVJbWFnZUxpbmUoRlhfTFBCWVRFIHBEZXN0QnVmLCBGWF9MUENCWVRFIHBTcmNCdWYsIGludCBwaXhlbHMsIGludCBpbWFnZV93aWR0aCwgaW50IGltYWdlX2hlaWdodCwgRlhfQk9PTCBiVHJhbnNNYXNrID0gRkFMU0UpIGNvbnN0Ow0KKyAgICBGWF9GTE9BVAltX1doaXRlUG9pbnRbM107DQorICAgIEZYX0ZMT0FUCW1fQmxhY2tQb2ludFszXTsNCisgICAgRlhfRkxPQVQJbV9SYW5nZXNbNF07DQorfTsNCitGWF9CT09MIENQREZfTGFiQ1M6OnZfTG9hZChDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0FycmF5KiBwQXJyYXkpDQorew0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gcEFycmF5LT5HZXREaWN0KDEpOw0KKyAgICBDUERGX0FycmF5KiBwUGFyYW0gPSBwRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIldoaXRlUG9pbnQiKSk7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSArKykgew0KKyAgICAgICAgbV9XaGl0ZVBvaW50W2ldID0gcFBhcmFtLT5HZXROdW1iZXIoaSk7DQorICAgIH0NCisgICAgcFBhcmFtID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJCbGFja1BvaW50IikpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSArKykgew0KKyAgICAgICAgbV9CbGFja1BvaW50W2ldID0gcFBhcmFtID8gcFBhcmFtLT5HZXROdW1iZXIoaSkgOiAwOw0KKyAgICB9DQorICAgIHBQYXJhbSA9IHBEaWN0LT5HZXRBcnJheShGWF9CU1RSQygiUmFuZ2UiKSk7DQorICAgIGNvbnN0IEZYX0ZMT0FUIGRlZl9yYW5nZXNbNF0gPSB7IC0xMDAgKiAxLjBmLCAxMDAgKiAxLjBmLCAtMTAwICogMS4wZiwgMTAwICogMS4wZn07DQorICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpICsrKSB7DQorICAgICAgICBtX1Jhbmdlc1tpXSA9IHBQYXJhbSA/IHBQYXJhbS0+R2V0TnVtYmVyKGkpIDogZGVmX3Jhbmdlc1tpXTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDUERGX0xhYkNTOjpHZXREZWZhdWx0VmFsdWUoaW50IGlDb21wb25lbnQsIEZYX0ZMT0FUJiB2YWx1ZSwgRlhfRkxPQVQmIG1pbiwgRlhfRkxPQVQmIG1heCkgY29uc3QNCit7DQorICAgIHZhbHVlID0gMDsNCisgICAgaWYgKGlDb21wb25lbnQgPT0gMCkgew0KKyAgICAgICAgbWluID0gMDsNCisgICAgICAgIG1heCA9IDEwMCAqIDEuMGY7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtaW4gPSBtX1Jhbmdlc1tpQ29tcG9uZW50ICogMiAtIDJdOw0KKyAgICAgICAgbWF4ID0gbV9SYW5nZXNbaUNvbXBvbmVudCAqIDIgLSAxXTsNCisgICAgICAgIGlmICh2YWx1ZSA8IG1pbikgew0KKyAgICAgICAgICAgIHZhbHVlID0gbWluOw0KKyAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+IG1heCkgew0KKyAgICAgICAgICAgIHZhbHVlID0gbWF4Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9MYWJDUzo6R2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdA0KK3sNCisgICAgRlhfRkxPQVQgTHN0YXIgPSBwQnVmWzBdOw0KKyAgICBGWF9GTE9BVCBhc3RhciA9IHBCdWZbMV07DQorICAgIEZYX0ZMT0FUIGJzdGFyID0gcEJ1ZlsyXTsNCisgICAgRlhfRkxPQVQgTSA9IChMc3RhciArIDE2LjBmKSAvIDExNi4wZjsNCisgICAgRlhfRkxPQVQgTCA9IE0gKyBhc3RhciAvIDUwMC4wZjsNCisgICAgRlhfRkxPQVQgTiA9IE0gLSBic3RhciAvIDIwMC4wZjsNCisgICAgRlhfRkxPQVQgWCwgWSwgWjsNCisgICAgaWYgKEwgPCAwLjIwNjlmKSB7DQorICAgICAgICBYID0gMC45NTdmICogMC4xMjg0MmYgKiAoTCAtIDAuMTM3OWYpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgWCA9IDAuOTU3ZiAqIEwgKiBMICogTDsNCisgICAgfQ0KKyAgICBpZiAoTSA8IDAuMjA2OWYpIHsNCisgICAgICAgIFkgPSAwLjEyODQyZiAqIChNIC0gMC4xMzc5Zik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBZID0gTSAqIE0gKiBNOw0KKyAgICB9DQorICAgIGlmIChOIDwgMC4yMDY5Zikgew0KKyAgICAgICAgWiA9IDEuMDg4OWYgKiAwLjEyODQyZiAqIChOIC0gMC4xMzc5Zik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBaID0gMS4wODg5ZiAqIE4gKiBOICogTjsNCisgICAgfQ0KKyAgICBYWVpfdG9fc1JHQihYLCBZLCBaLCBSLCBHLCBCKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9MYWJDUzo6U2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCBSLCBGWF9GTE9BVCBHLCBGWF9GTE9BVCBCKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCit2b2lkIENQREZfTGFiQ1M6OlRyYW5zbGF0ZUltYWdlTGluZShGWF9MUEJZVEUgcERlc3RCdWYsIEZYX0xQQ0JZVEUgcFNyY0J1ZiwgaW50IHBpeGVscywgaW50IGltYWdlX3dpZHRoLCBpbnQgaW1hZ2VfaGVpZ2h0LCBGWF9CT09MIGJUcmFuc01hc2spIGNvbnN0DQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBpeGVsczsgaSArKykgew0KKyAgICAgICAgRlhfRkxPQVQgbGFiWzNdOw0KKyAgICAgICAgRlhfRkxPQVQgUiwgRywgQjsNCisgICAgICAgIGxhYlswXSA9IChwU3JjQnVmWzBdICogMTAwIC8gMjU1LjBmKTsNCisgICAgICAgIGxhYlsxXSA9IChGWF9GTE9BVCkocFNyY0J1ZlsxXSAtIDEyOCk7DQorICAgICAgICBsYWJbMl0gPSAoRlhfRkxPQVQpKHBTcmNCdWZbMl0gLSAxMjgpOw0KKyAgICAgICAgR2V0UkdCKGxhYiwgUiwgRywgQik7DQorICAgICAgICBwRGVzdEJ1ZlswXSA9IChGWF9JTlQzMikoQiAqIDI1NSk7DQorICAgICAgICBwRGVzdEJ1ZlsxXSA9IChGWF9JTlQzMikoRyAqIDI1NSk7DQorICAgICAgICBwRGVzdEJ1ZlsyXSA9IChGWF9JTlQzMikoUiAqIDI1NSk7DQorICAgICAgICBwRGVzdEJ1ZiArPSAzOw0KKyAgICAgICAgcFNyY0J1ZiArPSAzOw0KKyAgICB9DQorfQ0KK0NQREZfSWNjUHJvZmlsZTo6Q1BERl9JY2NQcm9maWxlKEZYX0xQQ0JZVEUgcERhdGEsIEZYX0RXT1JEIGR3U2l6ZSwgaW50IG5Db21wb25lbnRzKQ0KK3sNCisgICAgbV9ic1JHQiA9IG5Db21wb25lbnRzID09IDMgJiYgZHdTaXplID09IDMxNDQgJiYgRlhTWVNfbWVtY21wMzIocERhdGEgKyAweDE5MCwgInNSR0IgSUVDNjE5NjYtMi4xIiwgMTcpID09IDA7DQorICAgIG1fcFRyYW5zZm9ybSA9IE5VTEw7DQorICAgIGlmICghbV9ic1JHQiAmJiBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEljY01vZHVsZSgpKSB7DQorICAgICAgICBtX3BUcmFuc2Zvcm0gPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEljY01vZHVsZSgpLT5DcmVhdGVUcmFuc2Zvcm1fc1JHQihwRGF0YSwgZHdTaXplLCBuQ29tcG9uZW50cyk7DQorICAgIH0NCit9DQorQ1BERl9JY2NQcm9maWxlOjp+Q1BERl9JY2NQcm9maWxlKCkNCit7DQorICAgIGlmIChtX3BUcmFuc2Zvcm0pIHsNCisgICAgICAgIENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SWNjTW9kdWxlKCktPkRlc3Ryb3lUcmFuc2Zvcm0obV9wVHJhbnNmb3JtKTsNCisgICAgfQ0KK30NCitjbGFzcyBDUERGX0lDQ0Jhc2VkQ1MgOiBwdWJsaWMgQ1BERl9Db2xvclNwYWNlDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9JQ0NCYXNlZENTKCk7DQorICAgIHZpcnR1YWwgfkNQREZfSUNDQmFzZWRDUygpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCXZfTG9hZChDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0FycmF5KiBwQXJyYXkpOw0KKyAgICB2b2lkCQkJCUdldERlZmF1bHRWYWx1ZShpbnQgaSwgRlhfRkxPQVQmIG1pbiwgRlhfRkxPQVQmIG1heCkgY29uc3QNCisgICAgew0KKyAgICAgICAgbWluID0gbV9wUmFuZ2VzW2kgKiAyXTsNCisgICAgICAgIG1heCA9IG1fcFJhbmdlc1tpICogMiArIDFdOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJR2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdDsNCisgICAgRlhfQk9PTAkJCQl2X0dldENNWUsoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUJiBjLCBGWF9GTE9BVCYgbSwgRlhfRkxPQVQmIHksIEZYX0ZMT0FUJiBrKSBjb25zdDsNCisgICAgRlhfQk9PTAkJCQlTZXRSR0IoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUIFIsIEZYX0ZMT0FUIEcsIEZYX0ZMT0FUIEIpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIHZvaWQJCUVuYWJsZVN0ZENvbnZlcnNpb24oRlhfQk9PTCBiRW5hYmxlZCk7DQorICAgIHZpcnR1YWwgdm9pZAkJVHJhbnNsYXRlSW1hZ2VMaW5lKEZYX0xQQllURSBwRGVzdEJ1ZiwgRlhfTFBDQllURSBwU3JjQnVmLCBpbnQgcGl4ZWxzLCBpbnQgaW1hZ2Vfd2lkdGgsIGludCBpbWFnZV9oZWlnaHQsIEZYX0JPT0wgYlRyYW5zTWFzayA9IEZBTFNFKSBjb25zdDsNCisgICAgRlhfRkxPQVQqCQltX3BSYW5nZXM7DQorICAgIENQREZfSWNjUHJvZmlsZSoJbV9wUHJvZmlsZTsNCisgICAgQ1BERl9Db2xvclNwYWNlKgltX3BBbHRlckNTOw0KKyAgICBGWF9MUEJZVEUJCQltX3BDYWNoZTsNCisgICAgRlhfQk9PTAkJCQltX2JPd247DQorfTsNCitDUERGX0lDQ0Jhc2VkQ1M6OkNQREZfSUNDQmFzZWRDUygpDQorew0KKyAgICBtX3BBbHRlckNTID0gTlVMTDsNCisgICAgbV9wUHJvZmlsZSA9IE5VTEw7DQorICAgIG1fRmFtaWx5ID0gUERGQ1NfSUNDQkFTRUQ7DQorICAgIG1fcENhY2hlID0gTlVMTDsNCisgICAgbV9wUmFuZ2VzID0gTlVMTDsNCisgICAgbV9iT3duID0gRkFMU0U7DQorfQ0KK0NQREZfSUNDQmFzZWRDUzo6fkNQREZfSUNDQmFzZWRDUygpDQorew0KKyAgICBpZiAobV9wQ2FjaGUpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wQ2FjaGUpOw0KKyAgICB9DQorICAgIGlmIChtX3BSYW5nZXMpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wUmFuZ2VzKTsNCisgICAgfQ0KKyAgICBpZiAobV9wQWx0ZXJDUyAmJiBtX2JPd24pIHsNCisgICAgICAgIG1fcEFsdGVyQ1MtPlJlbGVhc2VDUygpOw0KKyAgICB9DQorICAgIGlmIChtX3BQcm9maWxlICYmIG1fcERvY3VtZW50KSB7DQorICAgICAgICBtX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKS0+UmVsZWFzZUljY1Byb2ZpbGUoTlVMTCwgbV9wUHJvZmlsZSk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0lDQ0Jhc2VkQ1M6OnZfTG9hZChDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0FycmF5KiBwQXJyYXkpDQorew0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IHBBcnJheS0+R2V0U3RyZWFtKDEpOw0KKyAgICBpZiAocFN0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9uQ29tcG9uZW50cyA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiTiIpKTsNCisgICAgaWYgKG1fbkNvbXBvbmVudHMgPCAwIHx8IG1fbkNvbXBvbmVudHMgPiAoMSA8PCAxNikpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwUmFuZ2VzID0gcFN0cmVhbS0+R2V0RGljdCgpLT5HZXRBcnJheShGWF9CU1RSQygiUmFuZ2UiKSk7DQorICAgIG1fcFJhbmdlcyA9IEZYX0FsbG9jKEZYX0ZMT0FULCBtX25Db21wb25lbnRzICogMik7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9uQ29tcG9uZW50cyAqIDI7IGkgKyspIHsNCisgICAgICAgIGlmIChwUmFuZ2VzKSB7DQorICAgICAgICAgICAgbV9wUmFuZ2VzW2ldID0gcFJhbmdlcy0+R2V0TnVtYmVyKGkpOw0KKyAgICAgICAgfSBlbHNlIGlmIChpICUgMikgew0KKyAgICAgICAgICAgIG1fcFJhbmdlc1tpXSA9IDEuMGY7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fcFJhbmdlc1tpXSA9IDA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wUHJvZmlsZSA9IHBEb2MtPkxvYWRJY2NQcm9maWxlKHBTdHJlYW0sIG1fbkNvbXBvbmVudHMpOw0KKyAgICBpZiAoIW1fcFByb2ZpbGUpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9wUHJvZmlsZS0+bV9wVHJhbnNmb3JtID09IE5VTEwpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwQWx0ZXJDU09iaiA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJBbHRlcm5hdGUiKSk7DQorICAgICAgICBpZiAocEFsdGVyQ1NPYmopIHsNCisgICAgICAgICAgICBDUERGX0NvbG9yU3BhY2UqIGFsdGVyX2NzID0gQ1BERl9Db2xvclNwYWNlOjpMb2FkKHBEb2MsIHBBbHRlckNTT2JqKTsNCisgICAgICAgICAgICBpZiAoYWx0ZXJfY3MpIHsNCisgICAgICAgICAgICAgICAgaWYgKGFsdGVyX2NzLT5Db3VudENvbXBvbmVudHMoKSA+IG1fbkNvbXBvbmVudHMpIHsNCisgICAgICAgICAgICAgICAgICAgIGFsdGVyX2NzLT5SZWxlYXNlQ1MoKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcEFsdGVyQ1MgPSBhbHRlcl9jczsNCisgICAgICAgICAgICAgICAgICAgIG1fYk93biA9IFRSVUU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoIW1fcEFsdGVyQ1MpIHsNCisgICAgICAgICAgICBpZiAobV9uQ29tcG9uZW50cyA9PSAzKSB7DQorICAgICAgICAgICAgICAgIG1fcEFsdGVyQ1MgPSBHZXRTdG9ja0NTKFBERkNTX0RFVklDRVJHQik7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX25Db21wb25lbnRzID09IDQpIHsNCisgICAgICAgICAgICAgICAgbV9wQWx0ZXJDUyA9IEdldFN0b2NrQ1MoUERGQ1NfREVWSUNFQ01ZSyk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9wQWx0ZXJDUyA9IEdldFN0b2NrQ1MoUERGQ1NfREVWSUNFR1JBWSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfSUNDQmFzZWRDUzo6R2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcFByb2ZpbGUgJiYgbV9wUHJvZmlsZS0+bV9ic1JHQikgew0KKyAgICAgICAgUiA9IHBCdWZbMF07DQorICAgICAgICBHID0gcEJ1ZlsxXTsNCisgICAgICAgIEIgPSBwQnVmWzJdOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgSUNvZGVjX0ljY01vZHVsZSAqcEljY01vZHVsZSA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgIGlmIChtX3BQcm9maWxlLT5tX3BUcmFuc2Zvcm0gPT0gTlVMTCB8fCBwSWNjTW9kdWxlID09IE5VTEwpIHsNCisgICAgICAgIGlmIChtX3BBbHRlckNTKSB7DQorICAgICAgICAgICAgbV9wQWx0ZXJDUy0+R2V0UkdCKHBCdWYsIFIsIEcsIEIpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBSID0gRyA9IEIgPSAwLjBmOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgRlhfRkxPQVQgcmdiWzNdOw0KKyAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGUobV9wUHJvZmlsZS0+bV9wVHJhbnNmb3JtLCBwQnVmLCByZ2IpOw0KKyAgICBSID0gcmdiWzBdOw0KKyAgICBHID0gcmdiWzFdOw0KKyAgICBCID0gcmdiWzJdOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0lDQ0Jhc2VkQ1M6OnZfR2V0Q01ZSyhGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQmIGMsIEZYX0ZMT0FUJiBtLCBGWF9GTE9BVCYgeSwgRlhfRkxPQVQmIGspIGNvbnN0DQorew0KKyAgICBpZiAobV9uQ29tcG9uZW50cyAhPSA0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgYyA9IHBCdWZbMF07DQorICAgIG0gPSBwQnVmWzFdOw0KKyAgICB5ID0gcEJ1ZlsyXTsNCisgICAgayA9IHBCdWZbM107DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfSUNDQmFzZWRDUzo6U2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCBSLCBGWF9GTE9BVCBHLCBGWF9GTE9BVCBCKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCit2b2lkIENQREZfSUNDQmFzZWRDUzo6RW5hYmxlU3RkQ29udmVyc2lvbihGWF9CT09MIGJFbmFibGVkKQ0KK3sNCisgICAgQ1BERl9Db2xvclNwYWNlOjpFbmFibGVTdGRDb252ZXJzaW9uKGJFbmFibGVkKTsNCisgICAgaWYgKG1fcEFsdGVyQ1MpIHsNCisgICAgICAgIG1fcEFsdGVyQ1MtPkVuYWJsZVN0ZENvbnZlcnNpb24oYkVuYWJsZWQpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9JQ0NCYXNlZENTOjpUcmFuc2xhdGVJbWFnZUxpbmUoRlhfTFBCWVRFIHBEZXN0QnVmLCBGWF9MUENCWVRFIHBTcmNCdWYsIGludCBwaXhlbHMsIGludCBpbWFnZV93aWR0aCwgaW50IGltYWdlX2hlaWdodCwgRlhfQk9PTCBiVHJhbnNNYXNrKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcFByb2ZpbGUtPm1fYnNSR0IpIHsNCisgICAgICAgIFJldmVyc2VSR0IocERlc3RCdWYsIHBTcmNCdWYsIHBpeGVscyk7DQorICAgIH0gZWxzZSBpZiAobV9wUHJvZmlsZS0+bV9wVHJhbnNmb3JtKSB7DQorICAgICAgICBpbnQgbk1heENvbG9ycyA9IDE7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbkNvbXBvbmVudHM7IGkgKyspIHsNCisgICAgICAgICAgICBuTWF4Q29sb3JzICo9IDUyOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fbkNvbXBvbmVudHMgPiAzIHx8IGltYWdlX3dpZHRoICogaW1hZ2VfaGVpZ2h0IDwgbk1heENvbG9ycyAqIDMgLyAyKSB7DQorICAgICAgICAgICAgQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRJY2NNb2R1bGUoKS0+VHJhbnNsYXRlU2NhbmxpbmUobV9wUHJvZmlsZS0+bV9wVHJhbnNmb3JtLCBwRGVzdEJ1ZiwgcFNyY0J1ZiwgcGl4ZWxzKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKG1fcENhY2hlID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgKChDUERGX0lDQ0Jhc2VkQ1MqKXRoaXMpLT5tX3BDYWNoZSA9IEZYX0FsbG9jKEZYX0JZVEUsIG5NYXhDb2xvcnMgKiAzKTsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIHRlbXBfc3JjID0gRlhfQWxsb2MoRlhfQllURSwgbk1heENvbG9ycyAqIG1fbkNvbXBvbmVudHMpOw0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgcFNyYyA9IHRlbXBfc3JjOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5NYXhDb2xvcnM7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGNvbG9yID0gaTsNCisgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIG9yZGVyID0gbk1heENvbG9ycyAvIDUyOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBtX25Db21wb25lbnRzOyBjICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgKnBTcmMrKyA9IChGWF9CWVRFKShjb2xvciAvIG9yZGVyICogNSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgJT0gb3JkZXI7DQorICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgLz0gNTI7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRJY2NNb2R1bGUoKS0+VHJhbnNsYXRlU2NhbmxpbmUobV9wUHJvZmlsZS0+bV9wVHJhbnNmb3JtLCBtX3BDYWNoZSwgdGVtcF9zcmMsIG5NYXhDb2xvcnMpOw0KKyAgICAgICAgICAgICAgICBGWF9GcmVlKHRlbXBfc3JjKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwaXhlbHM7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gMDsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBtX25Db21wb25lbnRzOyBjICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGluZGV4ICogNTIgKyAoKnBTcmNCdWYpIC8gNTsNCisgICAgICAgICAgICAgICAgICAgIHBTcmNCdWYgKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW5kZXggKj0gMzsNCisgICAgICAgICAgICAgICAgKnBEZXN0QnVmKysgPSBtX3BDYWNoZVtpbmRleF07DQorICAgICAgICAgICAgICAgICpwRGVzdEJ1ZisrID0gbV9wQ2FjaGVbaW5kZXggKyAxXTsNCisgICAgICAgICAgICAgICAgKnBEZXN0QnVmKysgPSBtX3BDYWNoZVtpbmRleCArIDJdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChtX3BBbHRlckNTKSB7DQorICAgICAgICBtX3BBbHRlckNTLT5UcmFuc2xhdGVJbWFnZUxpbmUocERlc3RCdWYsIHBTcmNCdWYsIHBpeGVscywgaW1hZ2Vfd2lkdGgsIGltYWdlX2hlaWdodCk7DQorICAgIH0NCit9DQorY2xhc3MgQ1BERl9JbmRleGVkQ1MgOiBwdWJsaWMgQ1BERl9Db2xvclNwYWNlDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9JbmRleGVkQ1MoKTsNCisgICAgdmlydHVhbCB+Q1BERl9JbmRleGVkQ1MoKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQl2X0xvYWQoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9BcnJheSogcEFycmF5KTsNCisgICAgdm9pZAkJCQlHZXREZWZhdWx0VmFsdWUoaW50IGlDb21wb25lbnQsIEZYX0ZMT0FUJiBtaW4sIEZYX0ZMT0FUJiBtYXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIG1pbiA9IDA7DQorICAgICAgICBtYXggPSAoRlhfRkxPQVQpbV9NYXhJbmRleDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUdldFJHQihGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQmIFIsIEZYX0ZMT0FUJiBHLCBGWF9GTE9BVCYgQikgY29uc3Q7DQorICAgIHZpcnR1YWwgQ1BERl9Db2xvclNwYWNlKglHZXRCYXNlQ1MoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wQmFzZUNTOw0KKyAgICB9DQorICAgIHZpcnR1YWwgdm9pZAkJRW5hYmxlU3RkQ29udmVyc2lvbihGWF9CT09MIGJFbmFibGVkKTsNCisgICAgQ1BERl9Db2xvclNwYWNlKgltX3BCYXNlQ1M7DQorICAgIGludAkJCQkJbV9uQmFzZUNvbXBvbmVudHM7DQorICAgIGludAkJCQkJbV9NYXhJbmRleDsNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCW1fVGFibGU7DQorICAgIEZYX0ZMT0FUKgkJbV9wQ29tcE1pbk1heDsNCit9Ow0KK0NQREZfSW5kZXhlZENTOjpDUERGX0luZGV4ZWRDUygpDQorew0KKyAgICBtX3BCYXNlQ1MgPSBOVUxMOw0KKyAgICBtX0ZhbWlseSA9IFBERkNTX0lOREVYRUQ7DQorICAgIG1fbkNvbXBvbmVudHMgPSAxOw0KKyAgICBtX3BDb21wTWluTWF4ID0gTlVMTDsNCit9DQorQ1BERl9JbmRleGVkQ1M6On5DUERGX0luZGV4ZWRDUygpDQorew0KKyAgICBpZiAobV9wQ29tcE1pbk1heCkgew0KKyAgICAgICAgRlhfRnJlZShtX3BDb21wTWluTWF4KTsNCisgICAgfQ0KKyAgICBDUERGX0NvbG9yU3BhY2UqIHBDUyA9IG1fcEJhc2VDUzsNCisgICAgaWYgKHBDUyAmJiBtX3BEb2N1bWVudCkgew0KKyAgICAgICAgbV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCktPlJlbGVhc2VDb2xvclNwYWNlKHBDUy0+R2V0QXJyYXkoKSk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0luZGV4ZWRDUzo6dl9Mb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfQXJyYXkqIHBBcnJheSkNCit7DQorICAgIGlmIChwQXJyYXktPkdldENvdW50KCkgPCA0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBCYXNlT2JqID0gcEFycmF5LT5HZXRFbGVtZW50VmFsdWUoMSk7DQorICAgIGlmIChwQmFzZU9iaiA9PSBtX3BBcnJheSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfRG9jUGFnZURhdGEqIHBEb2NQYWdlRGF0YSA9IHBEb2MtPkdldFBhZ2VEYXRhKCk7DQorICAgIG1fcEJhc2VDUyA9IHBEb2NQYWdlRGF0YS0+R2V0Q29sb3JTcGFjZShwQmFzZU9iaiwgTlVMTCk7DQorICAgIGlmIChtX3BCYXNlQ1MgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fbkJhc2VDb21wb25lbnRzID0gbV9wQmFzZUNTLT5Db3VudENvbXBvbmVudHMoKTsNCisgICAgbV9wQ29tcE1pbk1heCA9IEZYX0FsbG9jKEZYX0ZMT0FULCBtX25CYXNlQ29tcG9uZW50cyAqIDIpOw0KKyAgICBGWF9GTE9BVCBkZWZ2YWx1ZTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX25CYXNlQ29tcG9uZW50czsgaSArKykgew0KKyAgICAgICAgbV9wQmFzZUNTLT5HZXREZWZhdWx0VmFsdWUoaSwgZGVmdmFsdWUsIG1fcENvbXBNaW5NYXhbaSAqIDJdLCBtX3BDb21wTWluTWF4W2kgKiAyICsgMV0pOw0KKyAgICAgICAgbV9wQ29tcE1pbk1heFtpICogMiArIDFdIC09IG1fcENvbXBNaW5NYXhbaSAqIDJdOw0KKyAgICB9DQorICAgIG1fTWF4SW5kZXggPSBwQXJyYXktPkdldEludGVnZXIoMik7DQorICAgIENQREZfT2JqZWN0KiBwVGFibGVPYmogPSBwQXJyYXktPkdldEVsZW1lbnRWYWx1ZSgzKTsNCisgICAgaWYgKHBUYWJsZU9iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfTFBDQllURSBwVGFibGUgPSBOVUxMOw0KKyAgICBGWF9EV09SRCBzaXplID0gMDsNCisgICAgQ1BERl9TdHJlYW1BY2MqIHBTdHJlYW1BY2MgPSBOVUxMOw0KKyAgICBpZiAocFRhYmxlT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUklORykgew0KKyAgICAgICAgbV9UYWJsZSA9ICgoQ1BERl9TdHJpbmcqKXBUYWJsZU9iaiktPkdldFN0cmluZygpOw0KKyAgICB9IGVsc2UgaWYgKHBUYWJsZU9iai0+R2V0VHlwZSgpID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIENQREZfU3RyZWFtQWNjIGFjYzsNCisgICAgICAgIGFjYy5Mb2FkQWxsRGF0YSgoQ1BERl9TdHJlYW0qKXBUYWJsZU9iaiwgRkFMU0UpOw0KKyAgICAgICAgbV9UYWJsZSA9IENGWF9CeXRlU3RyaW5nQyhhY2MuR2V0RGF0YSgpLCBhY2MuR2V0U2l6ZSgpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0luZGV4ZWRDUzo6R2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdA0KK3sNCisgICAgaW50IGluZGV4ID0gKEZYX0lOVDMyKSgqcEJ1Zik7DQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBtX01heEluZGV4KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fbkJhc2VDb21wb25lbnRzKSB7DQorICAgICAgICBpZiAoaW5kZXggPT0gSU5UX01BWCB8fCAoaW5kZXggKyAxKSA+IElOVF9NQVggLyBtX25CYXNlQ29tcG9uZW50cyB8fA0KKyAgICAgICAgICAgICAgICAoaW5kZXggKyAxKSptX25CYXNlQ29tcG9uZW50cyA+IChpbnQpbV9UYWJsZS5HZXRMZW5ndGgoKSkgew0KKyAgICAgICAgICAgIFIgPSBHID0gQiA9IDA7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENGWF9GaXhlZEJ1Zkdyb3c8RlhfRkxPQVQsIDE2PiBDb21wcyhtX25CYXNlQ29tcG9uZW50cyk7DQorICAgIEZYX0ZMT0FUKiBjb21wcyA9IENvbXBzOw0KKyAgICBGWF9MUENCWVRFIHBUYWJsZSA9IG1fVGFibGU7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9uQmFzZUNvbXBvbmVudHM7IGkgKyspIHsNCisgICAgICAgIGNvbXBzW2ldID0gbV9wQ29tcE1pbk1heFtpICogMl0gKyBtX3BDb21wTWluTWF4W2kgKiAyICsgMV0gKiBwVGFibGVbaW5kZXggKiBtX25CYXNlQ29tcG9uZW50cyArIGldIC8gMjU1Ow0KKyAgICB9DQorICAgIG1fcEJhc2VDUy0+R2V0UkdCKGNvbXBzLCBSLCBHLCBCKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ1BERl9JbmRleGVkQ1M6OkVuYWJsZVN0ZENvbnZlcnNpb24oRlhfQk9PTCBiRW5hYmxlZCkNCit7DQorICAgIENQREZfQ29sb3JTcGFjZTo6RW5hYmxlU3RkQ29udmVyc2lvbihiRW5hYmxlZCk7DQorICAgIGlmIChtX3BCYXNlQ1MpIHsNCisgICAgICAgIG1fcEJhc2VDUy0+RW5hYmxlU3RkQ29udmVyc2lvbihiRW5hYmxlZCk7DQorICAgIH0NCit9DQorI2RlZmluZSBNQVhfUEFUVEVSTl9DT0xPUkNPTVBTCTE2DQordHlwZWRlZiBzdHJ1Y3QgX1BhdHRlcm5WYWx1ZSB7DQorICAgIENQREZfUGF0dGVybioJbV9wUGF0dGVybjsNCisgICAgaW50CQkJCW1fbkNvbXBzOw0KKyAgICBGWF9GTE9BVAkJbV9Db21wc1tNQVhfUEFUVEVSTl9DT0xPUkNPTVBTXTsNCit9IFBhdHRlcm5WYWx1ZTsNCitDUERGX1BhdHRlcm5DUzo6Q1BERl9QYXR0ZXJuQ1MoKQ0KK3sNCisgICAgbV9GYW1pbHkgPSBQREZDU19QQVRURVJOOw0KKyAgICBtX3BCYXNlQ1MgPSBOVUxMOw0KKyAgICBtX25Db21wb25lbnRzID0gMTsNCit9DQorQ1BERl9QYXR0ZXJuQ1M6On5DUERGX1BhdHRlcm5DUygpDQorew0KKyAgICBDUERGX0NvbG9yU3BhY2UqIHBDUyA9IG1fcEJhc2VDUzsNCisgICAgaWYgKHBDUyAmJiBtX3BEb2N1bWVudCkgew0KKyAgICAgICAgbV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCktPlJlbGVhc2VDb2xvclNwYWNlKHBDUy0+R2V0QXJyYXkoKSk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX1BhdHRlcm5DUzo6dl9Mb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfQXJyYXkqIHBBcnJheSkNCit7DQorICAgIENQREZfT2JqZWN0KiBwQmFzZUNTID0gcEFycmF5LT5HZXRFbGVtZW50VmFsdWUoMSk7DQorICAgIGlmIChwQmFzZUNTID09IG1fcEFycmF5KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9Eb2NQYWdlRGF0YSogcERvY1BhZ2VEYXRhID0gcERvYy0+R2V0UGFnZURhdGEoKTsNCisgICAgbV9wQmFzZUNTID0gcERvY1BhZ2VEYXRhLT5HZXRDb2xvclNwYWNlKHBCYXNlQ1MsIE5VTEwpOw0KKyAgICBpZiAobV9wQmFzZUNTKSB7DQorICAgICAgICBtX25Db21wb25lbnRzID0gbV9wQmFzZUNTLT5Db3VudENvbXBvbmVudHMoKSArIDE7DQorICAgICAgICBpZiAobV9wQmFzZUNTLT5Db3VudENvbXBvbmVudHMoKSA+IE1BWF9QQVRURVJOX0NPTE9SQ09NUFMpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX25Db21wb25lbnRzID0gMTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX1BhdHRlcm5DUzo6R2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcEJhc2VDUykgew0KKyAgICAgICAgUGF0dGVyblZhbHVlKiBwdmFsdWUgPSAoUGF0dGVyblZhbHVlKilwQnVmOw0KKyAgICAgICAgbV9wQmFzZUNTLT5HZXRSR0IocHZhbHVlLT5tX0NvbXBzLCBSLCBHLCBCKTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIFIgPSBHID0gQiA9IDAuNzVmOw0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK2NsYXNzIENQREZfU2VwYXJhdGlvbkNTIDogcHVibGljIENQREZfQ29sb3JTcGFjZQ0KK3sNCitwdWJsaWM6DQorICAgIENQREZfU2VwYXJhdGlvbkNTKCk7DQorICAgIHZpcnR1YWwgfkNQREZfU2VwYXJhdGlvbkNTKCk7DQorICAgIHZpcnR1YWwgdm9pZAkJR2V0RGVmYXVsdFZhbHVlKGludCBpQ29tcG9uZW50LCBGWF9GTE9BVCYgdmFsdWUsIEZYX0ZMT0FUJiBtaW4sIEZYX0ZMT0FUJiBtYXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHZhbHVlID0gMS4wZjsNCisgICAgICAgIG1pbiA9IDA7DQorICAgICAgICBtYXggPSAxLjBmOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJdl9Mb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfQXJyYXkqIHBBcnJheSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJR2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdDsNCisgICAgdmlydHVhbCB2b2lkCQlFbmFibGVTdGRDb252ZXJzaW9uKEZYX0JPT0wgYkVuYWJsZWQpOw0KKyAgICBDUERGX0NvbG9yU3BhY2UqCW1fcEFsdENTOw0KKyAgICBDUERGX0Z1bmN0aW9uKgkJbV9wRnVuYzsNCisgICAgZW51bSB7Tm9uZSwgQWxsLCBDb2xvcmFudH0JbV9UeXBlOw0KK307DQorQ1BERl9TZXBhcmF0aW9uQ1M6OkNQREZfU2VwYXJhdGlvbkNTKCkNCit7DQorICAgIG1fRmFtaWx5ID0gUERGQ1NfU0VQQVJBVElPTjsNCisgICAgbV9wQWx0Q1MgPSBOVUxMOw0KKyAgICBtX3BGdW5jID0gTlVMTDsNCisgICAgbV9uQ29tcG9uZW50cyA9IDE7DQorfQ0KK0NQREZfU2VwYXJhdGlvbkNTOjp+Q1BERl9TZXBhcmF0aW9uQ1MoKQ0KK3sNCisgICAgaWYgKG1fcEFsdENTKSB7DQorICAgICAgICBtX3BBbHRDUy0+UmVsZWFzZUNTKCk7DQorICAgIH0NCisgICAgaWYgKG1fcEZ1bmMpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BGdW5jOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9TZXBhcmF0aW9uQ1M6OnZfTG9hZChDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0FycmF5KiBwQXJyYXkpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBuYW1lID0gcEFycmF5LT5HZXRTdHJpbmcoMSk7DQorICAgIGlmIChuYW1lID09IEZYX0JTVFJDKCJOb25lIikpIHsNCisgICAgICAgIG1fVHlwZSA9IE5vbmU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX1R5cGUgPSBDb2xvcmFudDsNCisgICAgICAgIENQREZfT2JqZWN0KiBwQWx0Q1MgPSBwQXJyYXktPkdldEVsZW1lbnRWYWx1ZSgyKTsNCisgICAgICAgIGlmIChwQWx0Q1MgPT0gbV9wQXJyYXkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX3BBbHRDUyA9IExvYWQocERvYywgcEFsdENTKTsNCisgICAgICAgIENQREZfT2JqZWN0KiBwRnVuY09iaiA9IHBBcnJheS0+R2V0RWxlbWVudFZhbHVlKDMpOw0KKyAgICAgICAgaWYgKHBGdW5jT2JqICYmIHBGdW5jT2JqLT5HZXRUeXBlKCkgIT0gUERGT0JKX05BTUUpIHsNCisgICAgICAgICAgICBtX3BGdW5jID0gQ1BERl9GdW5jdGlvbjo6TG9hZChwRnVuY09iaik7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9wRnVuYyAmJiBtX3BBbHRDUyAmJiBtX3BGdW5jLT5Db3VudE91dHB1dHMoKSA8IG1fcEFsdENTLT5Db3VudENvbXBvbmVudHMoKSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBtX3BGdW5jOw0KKyAgICAgICAgICAgIG1fcEZ1bmMgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfU2VwYXJhdGlvbkNTOjpHZXRSR0IoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUJiBSLCBGWF9GTE9BVCYgRywgRlhfRkxPQVQmIEIpIGNvbnN0DQorew0KKyAgICBpZiAobV9UeXBlID09IE5vbmUpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9wRnVuYyA9PSBOVUxMKSB7DQorICAgICAgICBpZiAobV9wQWx0Q1MgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBuQ29tcHMgPSBtX3BBbHRDUy0+Q291bnRDb21wb25lbnRzKCk7DQorICAgICAgICBDRlhfRml4ZWRCdWZHcm93PEZYX0ZMT0FULCAxNj4gcmVzdWx0cyhuQ29tcHMpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuQ29tcHM7IGkgKyspIHsNCisgICAgICAgICAgICByZXN1bHRzW2ldID0gKnBCdWY7DQorICAgICAgICB9DQorICAgICAgICBtX3BBbHRDUy0+R2V0UkdCKHJlc3VsdHMsIFIsIEcsIEIpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQ0ZYX0ZpeGVkQnVmR3JvdzxGWF9GTE9BVCwgMTY+IHJlc3VsdHMobV9wRnVuYy0+Q291bnRPdXRwdXRzKCkpOw0KKyAgICBpbnQgbnJlc3VsdHM7DQorICAgIG1fcEZ1bmMtPkNhbGwocEJ1ZiwgMSwgcmVzdWx0cywgbnJlc3VsdHMpOw0KKyAgICBpZiAobnJlc3VsdHMgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX3BBbHRDUykgew0KKyAgICAgICAgbV9wQWx0Q1MtPkdldFJHQihyZXN1bHRzLCBSLCBHLCBCKTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgUiA9IEcgPSBCID0gMDsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfU2VwYXJhdGlvbkNTOjpFbmFibGVTdGRDb252ZXJzaW9uKEZYX0JPT0wgYkVuYWJsZWQpDQorew0KKyAgICBDUERGX0NvbG9yU3BhY2U6OkVuYWJsZVN0ZENvbnZlcnNpb24oYkVuYWJsZWQpOw0KKyAgICBpZiAobV9wQWx0Q1MpIHsNCisgICAgICAgIG1fcEFsdENTLT5FbmFibGVTdGRDb252ZXJzaW9uKGJFbmFibGVkKTsNCisgICAgfQ0KK30NCitjbGFzcyBDUERGX0RldmljZU5DUyA6IHB1YmxpYyBDUERGX0NvbG9yU3BhY2UNCit7DQorcHVibGljOg0KKyAgICBDUERGX0RldmljZU5DUygpOw0KKyAgICB2aXJ0dWFsIH5DUERGX0RldmljZU5DUygpOw0KKyAgICB2aXJ0dWFsIHZvaWQJCUdldERlZmF1bHRWYWx1ZShpbnQgaUNvbXBvbmVudCwgRlhfRkxPQVQmIHZhbHVlLCBGWF9GTE9BVCYgbWluLCBGWF9GTE9BVCYgbWF4KSBjb25zdA0KKyAgICB7DQorICAgICAgICB2YWx1ZSA9IDEuMGY7DQorICAgICAgICBtaW4gPSAwOw0KKyAgICAgICAgbWF4ID0gMS4wZjsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJdl9Mb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfQXJyYXkqIHBBcnJheSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlHZXRSR0IoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUJiBSLCBGWF9GTE9BVCYgRywgRlhfRkxPQVQmIEIpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIHZvaWQJRW5hYmxlU3RkQ29udmVyc2lvbihGWF9CT09MIGJFbmFibGVkKTsNCisgICAgQ1BERl9Db2xvclNwYWNlKgltX3BBbHRDUzsNCisgICAgQ1BERl9GdW5jdGlvbioJCW1fcEZ1bmM7DQorfTsNCitDUERGX0RldmljZU5DUzo6Q1BERl9EZXZpY2VOQ1MoKQ0KK3sNCisgICAgbV9GYW1pbHkgPSBQREZDU19ERVZJQ0VOOw0KKyAgICBtX3BBbHRDUyA9IE5VTEw7DQorICAgIG1fcEZ1bmMgPSBOVUxMOw0KK30NCitDUERGX0RldmljZU5DUzo6fkNQREZfRGV2aWNlTkNTKCkNCit7DQorICAgIGlmIChtX3BGdW5jKSB7DQorICAgICAgICBkZWxldGUgbV9wRnVuYzsNCisgICAgfQ0KKyAgICBpZiAobV9wQWx0Q1MpIHsNCisgICAgICAgIG1fcEFsdENTLT5SZWxlYXNlQ1MoKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfRGV2aWNlTkNTOjp2X0xvYWQoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9BcnJheSogcEFycmF5KQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBPYmogPSBwQXJyYXktPkdldEVsZW1lbnRWYWx1ZSgxKTsNCisgICAgaWYgKCFwT2JqKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHBPYmotPkdldFR5cGUoKSAhPSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX25Db21wb25lbnRzID0gKChDUERGX0FycmF5KilwT2JqKS0+R2V0Q291bnQoKTsNCisgICAgQ1BERl9PYmplY3QqIHBBbHRDUyA9IHBBcnJheS0+R2V0RWxlbWVudFZhbHVlKDIpOw0KKyAgICBpZiAoIXBBbHRDUyB8fCBwQWx0Q1MgPT0gbV9wQXJyYXkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BBbHRDUyA9IExvYWQocERvYywgcEFsdENTKTsNCisgICAgbV9wRnVuYyA9IENQREZfRnVuY3Rpb246OkxvYWQocEFycmF5LT5HZXRFbGVtZW50VmFsdWUoMykpOw0KKyAgICBpZiAobV9wQWx0Q1MgPT0gTlVMTCB8fCBtX3BGdW5jID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9wRnVuYy0+Q291bnRPdXRwdXRzKCkgPCBtX3BBbHRDUy0+Q291bnRDb21wb25lbnRzKCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0RldmljZU5DUzo6R2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcEZ1bmMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9GaXhlZEJ1Zkdyb3c8RlhfRkxPQVQsIDE2PiByZXN1bHRzKG1fcEZ1bmMtPkNvdW50T3V0cHV0cygpKTsNCisgICAgaW50IG5yZXN1bHRzOw0KKyAgICBtX3BGdW5jLT5DYWxsKHBCdWYsIG1fbkNvbXBvbmVudHMsIHJlc3VsdHMsIG5yZXN1bHRzKTsNCisgICAgaWYgKG5yZXN1bHRzID09IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BBbHRDUy0+R2V0UkdCKHJlc3VsdHMsIFIsIEcsIEIpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDUERGX0RldmljZU5DUzo6RW5hYmxlU3RkQ29udmVyc2lvbihGWF9CT09MIGJFbmFibGVkKQ0KK3sNCisgICAgQ1BERl9Db2xvclNwYWNlOjpFbmFibGVTdGRDb252ZXJzaW9uKGJFbmFibGVkKTsNCisgICAgaWYgKG1fcEFsdENTKSB7DQorICAgICAgICBtX3BBbHRDUy0+RW5hYmxlU3RkQ29udmVyc2lvbihiRW5hYmxlZCk7DQorICAgIH0NCit9DQorQ1BERl9Db2xvclNwYWNlKiBDUERGX0NvbG9yU3BhY2U6OkdldFN0b2NrQ1MoaW50IGZhbWlseSkNCit7DQorICAgIHJldHVybiBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldFBhZ2VNb2R1bGUoKS0+R2V0U3RvY2tDUyhmYW1pbHkpOzsNCit9DQorQ1BERl9Db2xvclNwYWNlKiBfQ1NGcm9tTmFtZShjb25zdCBDRlhfQnl0ZVN0cmluZyYgbmFtZSkNCit7DQorICAgIGlmIChuYW1lID09IEZYX0JTVFJDKCJEZXZpY2VSR0IiKSB8fCBuYW1lID09IEZYX0JTVFJDKCJSR0IiKSkgew0KKyAgICAgICAgcmV0dXJuIENQREZfQ29sb3JTcGFjZTo6R2V0U3RvY2tDUyhQREZDU19ERVZJQ0VSR0IpOw0KKyAgICB9DQorICAgIGlmIChuYW1lID09IEZYX0JTVFJDKCJEZXZpY2VHcmF5IikgfHwgbmFtZSA9PSBGWF9CU1RSQygiRyIpKSB7DQorICAgICAgICByZXR1cm4gQ1BERl9Db2xvclNwYWNlOjpHZXRTdG9ja0NTKFBERkNTX0RFVklDRUdSQVkpOw0KKyAgICB9DQorICAgIGlmIChuYW1lID09IEZYX0JTVFJDKCJEZXZpY2VDTVlLIikgfHwgbmFtZSA9PSBGWF9CU1RSQygiQ01ZSyIpKSB7DQorICAgICAgICByZXR1cm4gQ1BERl9Db2xvclNwYWNlOjpHZXRTdG9ja0NTKFBERkNTX0RFVklDRUNNWUspOw0KKyAgICB9DQorICAgIGlmIChuYW1lID09IEZYX0JTVFJDKCJQYXR0ZXJuIikpIHsNCisgICAgICAgIHJldHVybiBDUERGX0NvbG9yU3BhY2U6OkdldFN0b2NrQ1MoUERGQ1NfUEFUVEVSTik7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0NQREZfQ29sb3JTcGFjZSogQ1BERl9Db2xvclNwYWNlOjpMb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfT2JqZWN0KiBwT2JqKQ0KK3sNCisgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgcmV0dXJuIF9DU0Zyb21OYW1lKHBPYmotPkdldFN0cmluZygpKTsNCisgICAgfQ0KKyAgICBpZiAocE9iai0+R2V0VHlwZSgpID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSAqcERpY3QgPSAoKENQREZfU3RyZWFtICopcE9iaiktPkdldERpY3QoKTsNCisgICAgICAgIGlmICghcERpY3QpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfQ29sb3JTcGFjZSAqcFJldCA9IE5VTEw7DQorICAgICAgICBGWF9QT1NJVElPTiBwb3MgPSBwRGljdC0+R2V0U3RhcnRQb3MoKTsNCisgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBic0tleTsNCisgICAgICAgICAgICBDUERGX09iamVjdCAqcFZhbHVlID0gcERpY3QtPkdldE5leHRFbGVtZW50KHBvcywgYnNLZXkpOw0KKyAgICAgICAgICAgIGlmIChwVmFsdWUtPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgICAgICAgICBwUmV0ID0gX0NTRnJvbU5hbWUocFZhbHVlLT5HZXRTdHJpbmcoKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwUmV0KSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwUmV0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChwT2JqLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwQXJyYXkgPSAoQ1BERl9BcnJheSopcE9iajsNCisgICAgaWYgKHBBcnJheS0+R2V0Q291bnQoKSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBmYW1pbHluYW1lID0gcEFycmF5LT5HZXRFbGVtZW50VmFsdWUoMCktPkdldFN0cmluZygpOw0KKyAgICBpZiAocEFycmF5LT5HZXRDb3VudCgpID09IDEpIHsNCisgICAgICAgIHJldHVybiBfQ1NGcm9tTmFtZShmYW1pbHluYW1lKTsNCisgICAgfQ0KKyAgICBDUERGX0NvbG9yU3BhY2UqIHBDUyA9IE5VTEw7DQorICAgIEZYX0RXT1JEIGlkID0gZmFtaWx5bmFtZS5HZXRJRCgpOw0KKyAgICBpZiAoaWQgPT0gRlhCU1RSX0lEKCdDJywgJ2EnLCAnbCcsICdHJykpIHsNCisgICAgICAgIHBDUyA9IEZYX05FVyBDUERGX0NhbEdyYXkoKTsNCisgICAgfSBlbHNlIGlmIChpZCA9PSBGWEJTVFJfSUQoJ0MnLCAnYScsICdsJywgJ1InKSkgew0KKyAgICAgICAgcENTID0gRlhfTkVXIENQREZfQ2FsUkdCKCk7DQorICAgIH0gZWxzZSBpZiAoaWQgPT0gRlhCU1RSX0lEKCdMJywgJ2EnLCAnYicsIDApKSB7DQorICAgICAgICBwQ1MgPSBGWF9ORVcgQ1BERl9MYWJDUygpOw0KKyAgICB9IGVsc2UgaWYgKGlkID09IEZYQlNUUl9JRCgnSScsICdDJywgJ0MnLCAnQicpKSB7DQorICAgICAgICBwQ1MgPSBGWF9ORVcgQ1BERl9JQ0NCYXNlZENTKCk7DQorICAgIH0gZWxzZSBpZiAoaWQgPT0gRlhCU1RSX0lEKCdJJywgJ24nLCAnZCcsICdlJykgfHwgaWQgPT0gRlhCU1RSX0lEKCdJJywgMCwgMCwgMCkpIHsNCisgICAgICAgIHBDUyA9IEZYX05FVyBDUERGX0luZGV4ZWRDUygpOw0KKyAgICB9IGVsc2UgaWYgKGlkID09IEZYQlNUUl9JRCgnUycsICdlJywgJ3AnLCAnYScpKSB7DQorICAgICAgICBwQ1MgPSBGWF9ORVcgQ1BERl9TZXBhcmF0aW9uQ1MoKTsNCisgICAgfSBlbHNlIGlmIChpZCA9PSBGWEJTVFJfSUQoJ0QnLCAnZScsICd2JywgJ2knKSkgew0KKyAgICAgICAgcENTID0gRlhfTkVXIENQREZfRGV2aWNlTkNTKCk7DQorICAgIH0gZWxzZSBpZiAoaWQgPT0gRlhCU1RSX0lEKCdQJywgJ2EnLCAndCcsICd0JykpIHsNCisgICAgICAgIHBDUyA9IEZYX05FVyBDUERGX1BhdHRlcm5DUygpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcENTLT5tX3BEb2N1bWVudCA9IHBEb2M7DQorICAgIHBDUy0+bV9wQXJyYXkgPSBwQXJyYXk7DQorICAgIGlmICghcENTLT52X0xvYWQocERvYywgcEFycmF5KSkgew0KKyAgICAgICAgcENTLT5SZWxlYXNlQ1MoKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBwQ1M7DQorfQ0KK0NQREZfQ29sb3JTcGFjZTo6Q1BERl9Db2xvclNwYWNlKCkNCit7DQorICAgIG1fRmFtaWx5ID0gMDsNCisgICAgbV9wQXJyYXkgPSBOVUxMOw0KKyAgICBtX2R3U3RkQ29udmVyc2lvbiA9IDA7DQorICAgIG1fcERvY3VtZW50ID0gTlVMTDsNCit9DQordm9pZCBDUERGX0NvbG9yU3BhY2U6OlJlbGVhc2VDUygpDQorew0KKyAgICBpZiAodGhpcyA9PSBHZXRTdG9ja0NTKFBERkNTX0RFVklDRVJHQikpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAodGhpcyA9PSBHZXRTdG9ja0NTKFBERkNTX0RFVklDRUdSQVkpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHRoaXMgPT0gR2V0U3RvY2tDUyhQREZDU19ERVZJQ0VDTVlLKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmICh0aGlzID09IEdldFN0b2NrQ1MoUERGQ1NfUEFUVEVSTikpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBkZWxldGUgdGhpczsNCit9DQoraW50IENQREZfQ29sb3JTcGFjZTo6R2V0QnVmU2l6ZSgpIGNvbnN0DQorew0KKyAgICBpZiAobV9GYW1pbHkgPT0gUERGQ1NfUEFUVEVSTikgew0KKyAgICAgICAgcmV0dXJuIHNpemVvZihQYXR0ZXJuVmFsdWUpOw0KKyAgICB9DQorICAgIHJldHVybiBtX25Db21wb25lbnRzICogc2l6ZW9mKEZYX0ZMT0FUKTsNCit9DQorRlhfRkxPQVQqIENQREZfQ29sb3JTcGFjZTo6Q3JlYXRlQnVmKCkNCit7DQorICAgIGludCBzaXplID0gR2V0QnVmU2l6ZSgpOw0KKyAgICBGWF9CWVRFKiBwQnVmID0gRlhfQWxsb2MoRlhfQllURSwgc2l6ZSk7DQorICAgIEZYU1lTX21lbXNldDMyKHBCdWYsIDAsIHNpemUpOw0KKyAgICByZXR1cm4gKEZYX0ZMT0FUKilwQnVmOw0KK30NCitGWF9CT09MIENQREZfQ29sb3JTcGFjZTo6c1JHQigpIGNvbnN0DQorew0KKyAgICBpZiAobV9GYW1pbHkgPT0gUERGQ1NfREVWSUNFUkdCKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9GYW1pbHkgIT0gUERGQ1NfSUNDQkFTRUQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX0lDQ0Jhc2VkQ1MqIHBDUyA9IChDUERGX0lDQ0Jhc2VkQ1MqKXRoaXM7DQorICAgIHJldHVybiBwQ1MtPm1fcFByb2ZpbGUtPm1fYnNSR0I7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Db2xvclNwYWNlOjpHZXRDTVlLKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgYywgRlhfRkxPQVQmIG0sIEZYX0ZMT0FUJiB5LCBGWF9GTE9BVCYgaykgY29uc3QNCit7DQorICAgIGlmICh2X0dldENNWUsocEJ1ZiwgYywgbSwgeSwgaykpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIFIsIEcsIEI7DQorICAgIGlmICghR2V0UkdCKHBCdWYsIFIsIEcsIEIpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgc1JHQl90b19BZG9iZUNNWUsoUiwgRywgQiwgYywgbSwgeSwgayk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfQ29sb3JTcGFjZTo6U2V0Q01ZSyhGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQgYywgRlhfRkxPQVQgbSwgRlhfRkxPQVQgeSwgRlhfRkxPQVQgaykgY29uc3QNCit7DQorICAgIGlmICh2X1NldENNWUsocEJ1ZiwgYywgbSwgeSwgaykpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIFIsIEcsIEI7DQorICAgIEFkb2JlQ01ZS190b19zUkdCKGMsIG0sIHksIGssIFIsIEcsIEIpOw0KKyAgICByZXR1cm4gU2V0UkdCKHBCdWYsIFIsIEcsIEIpOw0KK30NCit2b2lkIENQREZfQ29sb3JTcGFjZTo6R2V0RGVmYXVsdENvbG9yKEZYX0ZMT0FUKiBidWYpIGNvbnN0DQorew0KKyAgICBpZiAoYnVmID09IE5VTEwgfHwgbV9GYW1pbHkgPT0gUERGQ1NfUEFUVEVSTikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIG1pbiwgbWF4Ow0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbkNvbXBvbmVudHM7IGkgKyspIHsNCisgICAgICAgIEdldERlZmF1bHRWYWx1ZShpLCBidWZbaV0sIG1pbiwgbWF4KTsNCisgICAgfQ0KK30NCitpbnQgQ1BERl9Db2xvclNwYWNlOjpHZXRNYXhJbmRleCgpIGNvbnN0DQorew0KKyAgICBpZiAobV9GYW1pbHkgIT0gUERGQ1NfSU5ERVhFRCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ1BERl9JbmRleGVkQ1MqIHBDUyA9IChDUERGX0luZGV4ZWRDUyopdGhpczsNCisgICAgcmV0dXJuIHBDUy0+bV9NYXhJbmRleDsNCit9DQordm9pZCBDUERGX0NvbG9yU3BhY2U6OlRyYW5zbGF0ZUltYWdlTGluZShGWF9MUEJZVEUgZGVzdF9idWYsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgaW50IHBpeGVscywgaW50IGltYWdlX3dpZHRoLCBpbnQgaW1hZ2VfaGVpZ2h0LCBGWF9CT09MIGJUcmFuc01hc2spIGNvbnN0DQorew0KKyAgICBDRlhfRml4ZWRCdWZHcm93PEZYX0ZMT0FULCAxNj4gc3JjYnVmKG1fbkNvbXBvbmVudHMpOw0KKyAgICBGWF9GTE9BVCogc3JjID0gc3JjYnVmOw0KKyAgICBGWF9GTE9BVCBSLCBHLCBCOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBpeGVsczsgaSArKykgew0KKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX25Db21wb25lbnRzOyBqICsrKQ0KKyAgICAgICAgICAgIGlmIChtX0ZhbWlseSA9PSBQREZDU19JTkRFWEVEKSB7DQorICAgICAgICAgICAgICAgIHNyY1tqXSA9IChGWF9GTE9BVCkoKnNyY19idWYgKyspOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHNyY1tqXSA9IChGWF9GTE9BVCkoKnNyY19idWYgKyspIC8gMjU1Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIEdldFJHQihzcmMsIFIsIEcsIEIpOw0KKyAgICAgICAgKmRlc3RfYnVmICsrID0gKEZYX0lOVDMyKShCICogMjU1KTsNCisgICAgICAgICpkZXN0X2J1ZiArKyA9IChGWF9JTlQzMikoRyAqIDI1NSk7DQorICAgICAgICAqZGVzdF9idWYgKysgPSAoRlhfSU5UMzIpKFIgKiAyNTUpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9Db2xvclNwYWNlOjpFbmFibGVTdGRDb252ZXJzaW9uKEZYX0JPT0wgYkVuYWJsZWQpDQorew0KKyAgICBpZiAoYkVuYWJsZWQpIHsNCisgICAgICAgIG1fZHdTdGRDb252ZXJzaW9uICsrOw0KKyAgICB9IGVsc2UgaWYgKG1fZHdTdGRDb252ZXJzaW9uKSB7DQorICAgICAgICBtX2R3U3RkQ29udmVyc2lvbiAtLTsNCisgICAgfQ0KK30NCitDUERGX0NvbG9yOjpDUERGX0NvbG9yKGludCBmYW1pbHkpDQorew0KKyAgICBtX3BDUyA9IENQREZfQ29sb3JTcGFjZTo6R2V0U3RvY2tDUyhmYW1pbHkpOw0KKyAgICBpbnQgbkNvbXBzID0gMzsNCisgICAgaWYgKGZhbWlseSA9PSBQREZDU19ERVZJQ0VHUkFZKSB7DQorICAgICAgICBuQ29tcHMgPSAxOw0KKyAgICB9IGVsc2UgaWYgKGZhbWlseSA9PSBQREZDU19ERVZJQ0VDTVlLKSB7DQorICAgICAgICBuQ29tcHMgPSA0Ow0KKyAgICB9DQorICAgIG1fcEJ1ZmZlciA9IEZYX0FsbG9jKEZYX0ZMT0FULCBuQ29tcHMpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5Db21wczsgaSArKykgew0KKyAgICAgICAgbV9wQnVmZmVyW2ldID0gMDsNCisgICAgfQ0KK30NCitDUERGX0NvbG9yOjp+Q1BERl9Db2xvcigpDQorew0KKyAgICBSZWxlYXNlQnVmZmVyKCk7DQorICAgIFJlbGVhc2VDb2xvclNwYWNlKCk7DQorfQ0KK3ZvaWQgQ1BERl9Db2xvcjo6UmVsZWFzZUJ1ZmZlcigpDQorew0KKyAgICBpZiAoIW1fcEJ1ZmZlcikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX3BDUy0+R2V0RmFtaWx5KCkgPT0gUERGQ1NfUEFUVEVSTikgew0KKyAgICAgICAgUGF0dGVyblZhbHVlKiBwdmFsdWUgPSAoUGF0dGVyblZhbHVlKiltX3BCdWZmZXI7DQorICAgICAgICBDUERGX1BhdHRlcm4qIHBQYXR0ZXJuID0gcHZhbHVlLT5tX3BQYXR0ZXJuOw0KKyAgICAgICAgaWYgKHBQYXR0ZXJuICYmIHBQYXR0ZXJuLT5tX3BEb2N1bWVudCkgew0KKyAgICAgICAgICAgIHBQYXR0ZXJuLT5tX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKS0+UmVsZWFzZVBhdHRlcm4ocFBhdHRlcm4tPm1fcFBhdHRlcm5PYmopOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX0ZyZWUobV9wQnVmZmVyKTsNCisgICAgbV9wQnVmZmVyID0gTlVMTDsNCit9DQordm9pZCBDUERGX0NvbG9yOjpSZWxlYXNlQ29sb3JTcGFjZSgpDQorew0KKyAgICBpZiAobV9wQ1MgJiYgbV9wQ1MtPm1fcERvY3VtZW50ICYmIG1fcENTLT5HZXRBcnJheSgpKSB7DQorICAgICAgICBtX3BDUy0+bV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCktPlJlbGVhc2VDb2xvclNwYWNlKG1fcENTLT5HZXRBcnJheSgpKTsNCisgICAgICAgIG1fcENTID0gTlVMTDsNCisgICAgfQ0KK30NCit2b2lkIENQREZfQ29sb3I6OlNldENvbG9yU3BhY2UoQ1BERl9Db2xvclNwYWNlKiBwQ1MpDQorew0KKyAgICBpZiAobV9wQ1MgPT0gcENTKSB7DQorICAgICAgICBpZiAobV9wQnVmZmVyID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX3BCdWZmZXIgPSBwQ1MtPkNyZWF0ZUJ1ZigpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgUmVsZWFzZUNvbG9yU3BhY2UoKTsNCisgICAgICAgIG1fcENTID0gcENTOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIFJlbGVhc2VCdWZmZXIoKTsNCisgICAgUmVsZWFzZUNvbG9yU3BhY2UoKTsNCisgICAgbV9wQ1MgPSBwQ1M7DQorICAgIGlmIChtX3BDUykgew0KKyAgICAgICAgbV9wQnVmZmVyID0gcENTLT5DcmVhdGVCdWYoKTsNCisgICAgICAgIHBDUy0+R2V0RGVmYXVsdENvbG9yKG1fcEJ1ZmZlcik7DQorICAgIH0NCit9DQordm9pZCBDUERGX0NvbG9yOjpTZXRWYWx1ZShGWF9GTE9BVCogY29tcHMpDQorew0KKyAgICBpZiAobV9wQnVmZmVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wQ1MtPkdldEZhbWlseSgpICE9IFBERkNTX1BBVFRFUk4pIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcEJ1ZmZlciwgY29tcHMsIG1fcENTLT5Db3VudENvbXBvbmVudHMoKSAqIHNpemVvZihGWF9GTE9BVCkpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9Db2xvcjo6U2V0VmFsdWUoQ1BERl9QYXR0ZXJuKiBwUGF0dGVybiwgRlhfRkxPQVQqIGNvbXBzLCBpbnQgbmNvbXBzKQ0KK3sNCisgICAgaWYgKG5jb21wcyA+IE1BWF9QQVRURVJOX0NPTE9SQ09NUFMpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wQ1MgPT0gTlVMTCB8fCBtX3BDUy0+R2V0RmFtaWx5KCkgIT0gUERGQ1NfUEFUVEVSTikgew0KKyAgICAgICAgaWYgKG1fcEJ1ZmZlcikgew0KKyAgICAgICAgICAgIEZYX0ZyZWUobV9wQnVmZmVyKTsNCisgICAgICAgIH0NCisgICAgICAgIG1fcENTID0gQ1BERl9Db2xvclNwYWNlOjpHZXRTdG9ja0NTKFBERkNTX1BBVFRFUk4pOw0KKyAgICAgICAgbV9wQnVmZmVyID0gbV9wQ1MtPkNyZWF0ZUJ1ZigpOw0KKyAgICB9DQorICAgIENQREZfRG9jUGFnZURhdGEqIHBEb2NQYWdlRGF0YSA9IE5VTEw7DQorICAgIFBhdHRlcm5WYWx1ZSogcHZhbHVlID0gKFBhdHRlcm5WYWx1ZSopbV9wQnVmZmVyOw0KKyAgICBpZiAocHZhbHVlLT5tX3BQYXR0ZXJuICYmIHB2YWx1ZS0+bV9wUGF0dGVybi0+bV9wRG9jdW1lbnQpIHsNCisgICAgICAgIHBEb2NQYWdlRGF0YSA9IHB2YWx1ZS0+bV9wUGF0dGVybi0+bV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCk7DQorICAgICAgICBwRG9jUGFnZURhdGEtPlJlbGVhc2VQYXR0ZXJuKHB2YWx1ZS0+bV9wUGF0dGVybi0+bV9wUGF0dGVybk9iaik7DQorICAgIH0NCisgICAgcHZhbHVlLT5tX25Db21wcyA9IG5jb21wczsNCisgICAgcHZhbHVlLT5tX3BQYXR0ZXJuID0gcFBhdHRlcm47DQorICAgIGlmIChuY29tcHMpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKHB2YWx1ZS0+bV9Db21wcywgY29tcHMsIG5jb21wcyAqIHNpemVvZihGWF9GTE9BVCkpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9Db2xvcjo6Q29weShjb25zdCBDUERGX0NvbG9yKiBwU3JjKQ0KK3sNCisgICAgUmVsZWFzZUJ1ZmZlcigpOw0KKyAgICBSZWxlYXNlQ29sb3JTcGFjZSgpOw0KKyAgICBtX3BDUyA9IHBTcmMtPm1fcENTOw0KKyAgICBpZiAobV9wQ1MgJiYgbV9wQ1MtPm1fcERvY3VtZW50KSB7DQorICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBtX3BDUy0+R2V0QXJyYXkoKTsNCisgICAgICAgIGlmIChwQXJyYXkpIHsNCisgICAgICAgICAgICBtX3BDUyA9IG1fcENTLT5tX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKS0+R2V0Q29waWVkQ29sb3JTcGFjZShwQXJyYXkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX3BDUyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wQnVmZmVyID0gbV9wQ1MtPkNyZWF0ZUJ1ZigpOw0KKyAgICBGWFNZU19tZW1jcHkzMihtX3BCdWZmZXIsIHBTcmMtPm1fcEJ1ZmZlciwgbV9wQ1MtPkdldEJ1ZlNpemUoKSk7DQorICAgIGlmIChtX3BDUy0+R2V0RmFtaWx5KCkgPT0gUERGQ1NfUEFUVEVSTikgew0KKyAgICAgICAgUGF0dGVyblZhbHVlKiBwdmFsdWUgPSAoUGF0dGVyblZhbHVlKiltX3BCdWZmZXI7DQorICAgICAgICBpZiAocHZhbHVlLT5tX3BQYXR0ZXJuICYmIHB2YWx1ZS0+bV9wUGF0dGVybi0+bV9wRG9jdW1lbnQpIHsNCisgICAgICAgICAgICBwdmFsdWUtPm1fcFBhdHRlcm4gPSBwdmFsdWUtPm1fcFBhdHRlcm4tPm1fcERvY3VtZW50LT5HZXRQYWdlRGF0YSgpLT5HZXRQYXR0ZXJuKHB2YWx1ZS0+bV9wUGF0dGVybi0+bV9wUGF0dGVybk9iaiwgRkFMU0UsICZwdmFsdWUtPm1fcFBhdHRlcm4tPm1fUGFyZW50TWF0cml4KTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfQ29sb3I6OkdldFJHQihpbnQmIFIsIGludCYgRywgaW50JiBCKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcENTID09IE5VTEwgfHwgbV9wQnVmZmVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCByLCBnLCBiOw0KKyAgICBpZiAoIW1fcENTLT5HZXRSR0IobV9wQnVmZmVyLCByLCBnLCBiKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIFIgPSAoRlhfSU5UMzIpKHIgKiAyNTUgKyAwLjVmKTsNCisgICAgRyA9IChGWF9JTlQzMikoZyAqIDI1NSArIDAuNWYpOw0KKyAgICBCID0gKEZYX0lOVDMyKShiICogMjU1ICsgMC41Zik7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDUERGX1BhdHRlcm4qIENQREZfQ29sb3I6OkdldFBhdHRlcm4oKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcEJ1ZmZlciA9PSBOVUxMIHx8IG1fcENTLT5HZXRGYW1pbHkoKSAhPSBQREZDU19QQVRURVJOKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBQYXR0ZXJuVmFsdWUqIHB2YWx1ZSA9IChQYXR0ZXJuVmFsdWUqKW1fcEJ1ZmZlcjsNCisgICAgcmV0dXJuIHB2YWx1ZS0+bV9wUGF0dGVybjsNCit9DQorQ1BERl9Db2xvclNwYWNlKiBDUERGX0NvbG9yOjpHZXRQYXR0ZXJuQ1MoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcEJ1ZmZlciA9PSBOVUxMIHx8IG1fcENTLT5HZXRGYW1pbHkoKSAhPSBQREZDU19QQVRURVJOKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wQ1MtPkdldEJhc2VDUygpOw0KK30NCitGWF9GTE9BVCogQ1BERl9Db2xvcjo6R2V0UGF0dGVybkNvbG9yKCkgY29uc3QNCit7DQorICAgIGlmIChtX3BCdWZmZXIgPT0gTlVMTCB8fCBtX3BDUy0+R2V0RmFtaWx5KCkgIT0gUERGQ1NfUEFUVEVSTikgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgUGF0dGVyblZhbHVlKiBwdmFsdWUgPSAoUGF0dGVyblZhbHVlKiltX3BCdWZmZXI7DQorICAgIHJldHVybiBwdmFsdWUtPm1fbkNvbXBzID8gcHZhbHVlLT5tX0NvbXBzIDogTlVMTDsNCit9DQorRlhfQk9PTCBDUERGX0NvbG9yOjpJc0VxdWFsKGNvbnN0IENQREZfQ29sb3ImIG90aGVyKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcENTICE9IG90aGVyLm1fcENTIHx8IG1fcENTID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhTWVNfbWVtY21wMzIobV9wQnVmZmVyLCBvdGhlci5tX3BCdWZmZXIsIG1fcENTLT5HZXRCdWZTaXplKCkpID09IDA7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9kb2MuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX2RvYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRlNWJlZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9kb2MuY3BwCkBAIC0wLDAgKzEsNjQ3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mZHJtL2Z4X2NyeXB0LmgiDQorI2luY2x1ZGUgIi4uL2ZwZGZfZm9udC9mb250X2ludC5oIg0KKyNpbmNsdWRlICJwYWdlaW50LmgiDQorY2xhc3MgQ1BERl9QYWdlTW9kdWxlIDogcHVibGljIENQREZfUGFnZU1vZHVsZURlZg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfUGFnZU1vZHVsZSgpIDogbV9TdG9ja0dyYXlDUyhQREZDU19ERVZJQ0VHUkFZKSwgbV9TdG9ja1JHQkNTKFBERkNTX0RFVklDRVJHQiksDQorICAgICAgICBtX1N0b2NrQ01ZS0NTKFBERkNTX0RFVklDRUNNWUspIHt9DQorICAgIHZpcnR1YWwgfkNQREZfUGFnZU1vZHVsZSgpIHt9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJSW5zdGFsbGVkKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgdmlydHVhbCBDUERGX0RvY1BhZ2VEYXRhKglDcmVhdGVEb2NEYXRhKENQREZfRG9jdW1lbnQqIHBEb2MpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9Eb2NQYWdlRGF0YShwRG9jKTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQJCVJlbGVhc2VEb2MoQ1BERl9Eb2N1bWVudCogcERvYyk7DQorICAgIHZpcnR1YWwgdm9pZAkJQ2xlYXJEb2MoQ1BERl9Eb2N1bWVudCogcERvYyk7DQorICAgIHZpcnR1YWwgQ1BERl9Gb250R2xvYmFscyoJR2V0Rm9udEdsb2JhbHMoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gJm1fRm9udEdsb2JhbHM7DQorICAgIH0NCisgICAgdmlydHVhbCB2b2lkCQkJCUNsZWFyU3RvY2tGb250KENQREZfRG9jdW1lbnQqIHBEb2MpDQorICAgIHsNCisgICAgICAgIG1fRm9udEdsb2JhbHMuQ2xlYXIocERvYyk7DQorICAgIH0NCisgICAgdmlydHVhbCBDUERGX0NvbG9yU3BhY2UqCUdldFN0b2NrQ1MoaW50IGZhbWlseSk7DQorICAgIHZpcnR1YWwgdm9pZAkJTm90aWZ5Q0pLQXZhaWxhYmxlKCk7DQorICAgIENQREZfRm9udEdsb2JhbHMJbV9Gb250R2xvYmFsczsNCisgICAgQ1BERl9EZXZpY2VDUwkJbV9TdG9ja0dyYXlDUzsNCisgICAgQ1BERl9EZXZpY2VDUwkJbV9TdG9ja1JHQkNTOw0KKyAgICBDUERGX0RldmljZUNTCQltX1N0b2NrQ01ZS0NTOw0KKyAgICBDUERGX1BhdHRlcm5DUwkJbV9TdG9ja1BhdHRlcm5DUzsNCit9Ow0KK0NQREZfQ29sb3JTcGFjZSogQ1BERl9QYWdlTW9kdWxlOjpHZXRTdG9ja0NTKGludCBmYW1pbHkpDQorew0KKyAgICBpZiAoZmFtaWx5ID09IFBERkNTX0RFVklDRUdSQVkpIHsNCisgICAgICAgIHJldHVybiAmbV9TdG9ja0dyYXlDUzsNCisgICAgfQ0KKyAgICBpZiAoZmFtaWx5ID09IFBERkNTX0RFVklDRVJHQikgew0KKyAgICAgICAgcmV0dXJuICZtX1N0b2NrUkdCQ1M7DQorICAgIH0NCisgICAgaWYgKGZhbWlseSA9PSBQREZDU19ERVZJQ0VDTVlLKSB7DQorICAgICAgICByZXR1cm4gJm1fU3RvY2tDTVlLQ1M7DQorICAgIH0NCisgICAgaWYgKGZhbWlseSA9PSBQREZDU19QQVRURVJOKSB7DQorICAgICAgICByZXR1cm4gJm1fU3RvY2tQYXR0ZXJuQ1M7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK3ZvaWQgQ1BERl9Nb2R1bGVNZ3I6OkluaXRQYWdlTW9kdWxlKCkNCit7DQorICAgIGlmIChtX3BQYWdlTW9kdWxlKSB7DQorICAgICAgICBkZWxldGUgbV9wUGFnZU1vZHVsZTsNCisgICAgfQ0KKyAgICBDUERGX1BhZ2VNb2R1bGUqIHBQYWdlTW9kdWxlID0gRlhfTkVXIENQREZfUGFnZU1vZHVsZTsNCisgICAgbV9wUGFnZU1vZHVsZSA9IHBQYWdlTW9kdWxlOw0KK30NCit2b2lkIENQREZfUGFnZU1vZHVsZTo6UmVsZWFzZURvYyhDUERGX0RvY3VtZW50KiBwRG9jKQ0KK3sNCisgICAgZGVsZXRlIHBEb2MtPkdldFBhZ2VEYXRhKCk7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlTW9kdWxlOjpDbGVhckRvYyhDUERGX0RvY3VtZW50KiBwRG9jKQ0KK3sNCisgICAgcERvYy0+R2V0UGFnZURhdGEoKS0+Q2xlYXIoRkFMU0UpOw0KK30NCit2b2lkIENQREZfUGFnZU1vZHVsZTo6Tm90aWZ5Q0pLQXZhaWxhYmxlKCkNCit7DQorICAgIG1fRm9udEdsb2JhbHMubV9DTWFwTWFuYWdlci5SZWxvYWRBbGwoKTsNCit9DQorQ1BERl9Gb250KiBDUERGX0RvY3VtZW50OjpMb2FkRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb250RGljdCkNCit7DQorICAgIGlmICghcEZvbnREaWN0KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gR2V0VmFsaWRhdGVQYWdlRGF0YSgpLT5HZXRGb250KHBGb250RGljdCwgRkFMU0UpOw0KK30NCitDUERGX0ZvbnQqIENQREZfRG9jdW1lbnQ6OkZpbmRGb250KENQREZfRGljdGlvbmFyeSogcEZvbnREaWN0KQ0KK3sNCisgICAgaWYgKCFwRm9udERpY3QpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBHZXRWYWxpZGF0ZVBhZ2VEYXRhKCktPkdldEZvbnQocEZvbnREaWN0LCBUUlVFKTsNCit9DQorQ1BERl9TdHJlYW1BY2MqIENQREZfRG9jdW1lbnQ6OkxvYWRGb250RmlsZShDUERGX1N0cmVhbSogcFN0cmVhbSkNCit7DQorICAgIGlmIChwU3RyZWFtID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBHZXRWYWxpZGF0ZVBhZ2VEYXRhKCktPkdldEZvbnRGaWxlU3RyZWFtQWNjKHBTdHJlYW0pOw0KK30NCitDUERGX0NvbG9yU3BhY2UqIF9DU0Zyb21OYW1lKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lKTsNCitDUERGX0NvbG9yU3BhY2UqIENQREZfRG9jdW1lbnQ6OkxvYWRDb2xvclNwYWNlKENQREZfT2JqZWN0KiBwQ1NPYmosIENQREZfRGljdGlvbmFyeSogcFJlc291cmNlcykNCit7DQorICAgIHJldHVybiBHZXRWYWxpZGF0ZVBhZ2VEYXRhKCktPkdldENvbG9yU3BhY2UocENTT2JqLCBwUmVzb3VyY2VzKTsNCit9DQorQ1BERl9QYXR0ZXJuKiBDUERGX0RvY3VtZW50OjpMb2FkUGF0dGVybihDUERGX09iamVjdCogcFBhdHRlcm5PYmosIEZYX0JPT0wgYlNoYWRpbmcsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIG1hdHJpeCkNCit7DQorICAgIHJldHVybiBHZXRWYWxpZGF0ZVBhZ2VEYXRhKCktPkdldFBhdHRlcm4ocFBhdHRlcm5PYmosIGJTaGFkaW5nLCBtYXRyaXgpOw0KK30NCitDUERGX0ljY1Byb2ZpbGUqIENQREZfRG9jdW1lbnQ6OkxvYWRJY2NQcm9maWxlKENQREZfU3RyZWFtKiBwU3RyZWFtLCBpbnQgbkNvbXBvbmVudHMpDQorew0KKyAgICByZXR1cm4gR2V0VmFsaWRhdGVQYWdlRGF0YSgpLT5HZXRJY2NQcm9maWxlKHBTdHJlYW0sIG5Db21wb25lbnRzKTsNCit9DQorQ1BERl9JbWFnZSogQ1BERl9Eb2N1bWVudDo6TG9hZEltYWdlRihDUERGX09iamVjdCogcE9iaikNCit7DQorICAgIGlmICghcE9iaikgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhTWVNfYXNzZXJ0KHBPYmotPkdldE9iak51bSgpKTsNCisgICAgcmV0dXJuIEdldFZhbGlkYXRlUGFnZURhdGEoKS0+R2V0SW1hZ2UocE9iaik7DQorfQ0KK3ZvaWQgQ1BERl9Eb2N1bWVudDo6UmVtb3ZlQ29sb3JTcGFjZUZyb21QYWdlRGF0YShDUERGX09iamVjdCogcENTT2JqKQ0KK3sNCisgICAgaWYgKCFwQ1NPYmopIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBHZXRQYWdlRGF0YSgpLT5SZWxlYXNlQ29sb3JTcGFjZShwQ1NPYmopOw0KK30NCitDUERGX0RvY1BhZ2VEYXRhOjpDUERGX0RvY1BhZ2VEYXRhKENQREZfRG9jdW1lbnQgKnBQREZEb2MpDQorICAgIDogbV9wUERGRG9jKHBQREZEb2MpDQorICAgICwgbV9Gb250TWFwKCkNCisgICAgLCBtX0NvbG9yU3BhY2VNYXAoKQ0KKyAgICAsIG1fUGF0dGVybk1hcCgpDQorICAgICwgbV9JbWFnZU1hcCgpDQorICAgICwgbV9JY2NQcm9maWxlTWFwKCkNCisgICAgLCBtX0ZvbnRGaWxlTWFwKCkNCit7DQorICAgIG1fRm9udE1hcC5Jbml0SGFzaFRhYmxlKDY0KTsNCisgICAgbV9Db2xvclNwYWNlTWFwLkluaXRIYXNoVGFibGUoMzIpOw0KKyAgICBtX1BhdHRlcm5NYXAuSW5pdEhhc2hUYWJsZSgxNik7DQorICAgIG1fSW1hZ2VNYXAuSW5pdEhhc2hUYWJsZSg2NCk7DQorICAgIG1fSWNjUHJvZmlsZU1hcC5Jbml0SGFzaFRhYmxlKDE2KTsNCisgICAgbV9Gb250RmlsZU1hcC5Jbml0SGFzaFRhYmxlKDMyKTsNCit9DQorQ1BERl9Eb2NQYWdlRGF0YTo6fkNQREZfRG9jUGFnZURhdGEoKQ0KK3sNCisgICAgQ2xlYXIoRkFMU0UpOw0KKyAgICBDbGVhcihUUlVFKTsNCisgICAgRlhfUE9TSVRJT04gcG9zID0gTlVMTDsNCit9DQordm9pZCBDUERGX0RvY1BhZ2VEYXRhOjpDbGVhcihGWF9CT09MIGJSZWxlYXNlKQ0KK3sNCisgICAgRlhfUE9TSVRJT04gcG9zOw0KKyAgICBGWF9EV09SRAluQ291bnQ7DQorICAgIHsNCisgICAgICAgIHBvcyA9IG1fUGF0dGVybk1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgICAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHB0T2JqOw0KKyAgICAgICAgICAgIENQREZfQ291bnRlZE9iamVjdDxDUERGX1BhdHRlcm4qPiogcHREYXRhOw0KKyAgICAgICAgICAgIG1fUGF0dGVybk1hcC5HZXROZXh0QXNzb2MocG9zLCBwdE9iaiwgcHREYXRhKTsNCisgICAgICAgICAgICBuQ291bnQgPSBwdERhdGEtPm1fbkNvdW50Ow0KKyAgICAgICAgICAgIGlmIChiUmVsZWFzZSB8fCBuQ291bnQgPCAyKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBwdERhdGEtPm1fT2JqOw0KKyAgICAgICAgICAgICAgICBwdERhdGEtPm1fT2JqID0gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgew0KKyAgICAgICAgcG9zID0gbV9Gb250TWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIGZvbnREaWN0Ow0KKyAgICAgICAgICAgIENQREZfQ291bnRlZE9iamVjdDxDUERGX0ZvbnQqPiogZm9udERhdGE7DQorICAgICAgICAgICAgbV9Gb250TWFwLkdldE5leHRBc3NvYyhwb3MsIGZvbnREaWN0LCBmb250RGF0YSk7DQorICAgICAgICAgICAgbkNvdW50ID0gZm9udERhdGEtPm1fbkNvdW50Ow0KKyAgICAgICAgICAgIGlmIChiUmVsZWFzZSB8fCBuQ291bnQgPCAyKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBmb250RGF0YS0+bV9PYmo7DQorICAgICAgICAgICAgICAgIGZvbnREYXRhLT5tX09iaiA9IE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHsNCisgICAgICAgIHBvcyA9IG1fSW1hZ2VNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICAgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgICAgIEZYX0RXT1JEIG9iak51bTsNCisgICAgICAgICAgICBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9JbWFnZSo+KiBpbWFnZURhdGE7DQorICAgICAgICAgICAgbV9JbWFnZU1hcC5HZXROZXh0QXNzb2MocG9zLCBvYmpOdW0sIGltYWdlRGF0YSk7DQorICAgICAgICAgICAgbkNvdW50ID0gaW1hZ2VEYXRhLT5tX25Db3VudDsNCisgICAgICAgICAgICBpZiAoYlJlbGVhc2UgfHwgbkNvdW50IDwgMikgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgaW1hZ2VEYXRhLT5tX09iajsNCisgICAgICAgICAgICAgICAgZGVsZXRlIGltYWdlRGF0YTsNCisgICAgICAgICAgICAgICAgbV9JbWFnZU1hcC5SZW1vdmVLZXkob2JqTnVtKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgew0KKyAgICAgICAgcG9zID0gbV9Db2xvclNwYWNlTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICBDUERGX09iamVjdCogY3NLZXk7DQorICAgICAgICAgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfQ29sb3JTcGFjZSo+KiBjc0RhdGE7DQorICAgICAgICAgICAgbV9Db2xvclNwYWNlTWFwLkdldE5leHRBc3NvYyhwb3MsIGNzS2V5LCBjc0RhdGEpOw0KKyAgICAgICAgICAgIG5Db3VudCA9IGNzRGF0YS0+bV9uQ291bnQ7DQorICAgICAgICAgICAgaWYgKGJSZWxlYXNlIHx8IG5Db3VudCA8IDIpIHsNCisgICAgICAgICAgICAgICAgY3NEYXRhLT5tX09iai0+UmVsZWFzZUNTKCk7DQorICAgICAgICAgICAgICAgIGNzRGF0YS0+bV9PYmogPSBOVUxMOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB7DQorICAgICAgICBwb3MgPSBtX0ljY1Byb2ZpbGVNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICAgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgICAgIENQREZfU3RyZWFtKiBpcEtleTsNCisgICAgICAgICAgICBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9JY2NQcm9maWxlKj4qIGlwRGF0YTsNCisgICAgICAgICAgICBtX0ljY1Byb2ZpbGVNYXAuR2V0TmV4dEFzc29jKHBvcywgaXBLZXksIGlwRGF0YSk7DQorICAgICAgICAgICAgbkNvdW50ID0gaXBEYXRhLT5tX25Db3VudDsNCisgICAgICAgICAgICBpZiAoYlJlbGVhc2UgfHwgbkNvdW50IDwgMikgew0KKyAgICAgICAgICAgICAgICBGWF9QT1NJVElPTiBwb3MyID0gbV9IYXNoUHJvZmlsZU1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgICAgICAgICAgICAgIHdoaWxlIChwb3MyKSB7DQorICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBic0tleTsNCisgICAgICAgICAgICAgICAgICAgIENQREZfU3RyZWFtKiBwRmluZFN0cmVhbSA9IE5VTEw7DQorICAgICAgICAgICAgICAgICAgICBtX0hhc2hQcm9maWxlTWFwLkdldE5leHRBc3NvYyhwb3MyLCBic0tleSwgKHZvaWQqJilwRmluZFN0cmVhbSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoaXBLZXkgPT0gcEZpbmRTdHJlYW0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX0hhc2hQcm9maWxlTWFwLlJlbW92ZUtleShic0tleSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVsZXRlIGlwRGF0YS0+bV9PYmo7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBpcERhdGE7DQorICAgICAgICAgICAgICAgIG1fSWNjUHJvZmlsZU1hcC5SZW1vdmVLZXkoaXBLZXkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB7DQorICAgICAgICBwb3MgPSBtX0ZvbnRGaWxlTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICBDUERGX1N0cmVhbSogZnRLZXk7DQorICAgICAgICAgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfU3RyZWFtQWNjKj4qIGZ0RGF0YTsNCisgICAgICAgICAgICBtX0ZvbnRGaWxlTWFwLkdldE5leHRBc3NvYyhwb3MsIGZ0S2V5LCBmdERhdGEpOw0KKyAgICAgICAgICAgIG5Db3VudCA9IGZ0RGF0YS0+bV9uQ291bnQ7DQorICAgICAgICAgICAgaWYgKGJSZWxlYXNlIHx8IG5Db3VudCA8IDIpIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIGZ0RGF0YS0+bV9PYmo7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBmdERhdGE7DQorICAgICAgICAgICAgICAgIG1fRm9udEZpbGVNYXAuUmVtb3ZlS2V5KGZ0S2V5KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ1BERl9Gb250KiBDUERGX0RvY1BhZ2VEYXRhOjpHZXRGb250KENQREZfRGljdGlvbmFyeSogcEZvbnREaWN0LCBGWF9CT09MIGZpbmRPbmx5KQ0KK3sNCisgICAgaWYgKCFwRm9udERpY3QpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChmaW5kT25seSkgew0KKyAgICAgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfRm9udCo+KiBmb250RGF0YTsNCisgICAgICAgIGlmIChtX0ZvbnRNYXAuTG9va3VwKHBGb250RGljdCwgZm9udERhdGEpKSB7DQorICAgICAgICAgICAgaWYgKCFmb250RGF0YS0+bV9PYmopIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZvbnREYXRhLT5tX25Db3VudCArKzsNCisgICAgICAgICAgICByZXR1cm4gZm9udERhdGEtPm1fT2JqOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfRm9udCo+KiBmb250RGF0YSA9IE5VTEw7DQorICAgIGlmIChtX0ZvbnRNYXAuTG9va3VwKHBGb250RGljdCwgZm9udERhdGEpKSB7DQorICAgICAgICBpZiAoZm9udERhdGEtPm1fT2JqKSB7DQorICAgICAgICAgICAgZm9udERhdGEtPm1fbkNvdW50ICsrOw0KKyAgICAgICAgICAgIHJldHVybiBmb250RGF0YS0+bV9PYmo7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfQk9PTCBiTmV3ID0gRkFMU0U7DQorICAgIGlmICghZm9udERhdGEpIHsNCisgICAgICAgIGZvbnREYXRhID0gRlhfTkVXIENQREZfQ291bnRlZE9iamVjdDxDUERGX0ZvbnQqPjsNCisgICAgICAgIGJOZXcgPSBUUlVFOw0KKyAgICAgICAgaWYgKCFmb250RGF0YSkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENQREZfRm9udCogcEZvbnQgPSBDUERGX0ZvbnQ6OkNyZWF0ZUZvbnRGKG1fcFBERkRvYywgcEZvbnREaWN0KTsNCisgICAgaWYgKCFwRm9udCkgew0KKyAgICAgICAgaWYgKGJOZXcpIHsNCisgICAgICAgICAgICBkZWxldGUgZm9udERhdGE7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBmb250RGF0YS0+bV9uQ291bnQgPSAyOw0KKyAgICBmb250RGF0YS0+bV9PYmogPSBwRm9udDsNCisgICAgbV9Gb250TWFwLlNldEF0KHBGb250RGljdCwgZm9udERhdGEpOw0KKyAgICByZXR1cm4gcEZvbnQ7DQorfQ0KK0NQREZfRm9udCogQ1BERl9Eb2NQYWdlRGF0YTo6R2V0U3RhbmRhcmRGb250KEZYX0JTVFIgZm9udE5hbWUsIENQREZfRm9udEVuY29kaW5nKiBwRW5jb2RpbmcpDQorew0KKyAgICBpZiAoZm9udE5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX0ZvbnRNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIGZvbnREaWN0Ow0KKyAgICAgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfRm9udCo+KiBmb250RGF0YTsNCisgICAgICAgIG1fRm9udE1hcC5HZXROZXh0QXNzb2MocG9zLCBmb250RGljdCwgZm9udERhdGEpOw0KKyAgICAgICAgQ1BERl9Gb250KiBwRm9udCA9IGZvbnREYXRhLT5tX09iajsNCisgICAgICAgIGlmICghcEZvbnQpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwRm9udC0+R2V0QmFzZUZvbnQoKSAhPSBmb250TmFtZSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBGb250LT5Jc0VtYmVkZGVkKCkpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwRm9udC0+R2V0Rm9udFR5cGUoKSAhPSBQREZGT05UX1RZUEUxKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEZvbnQtPkdldEZvbnREaWN0KCktPktleUV4aXN0KEZYX0JTVFJDKCJXaWR0aHMiKSkpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfVHlwZTFGb250KiBwVDFGb250ID0gcEZvbnQtPkdldFR5cGUxRm9udCgpOw0KKyAgICAgICAgaWYgKHBFbmNvZGluZyAmJiAhcFQxRm9udC0+R2V0RW5jb2RpbmcoKS0+SXNJZGVudGljYWwocEVuY29kaW5nKSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9udERhdGEtPm1fbkNvdW50ICsrOw0KKyAgICAgICAgcmV0dXJuIHBGb250Ow0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICBwRGljdC0+U2V0QXROYW1lKEZYX0JTVFJDKCJUeXBlIiksIEZYX0JTVFJDKCJGb250IikpOw0KKyAgICBwRGljdC0+U2V0QXROYW1lKEZYX0JTVFJDKCJTdWJ0eXBlIiksIEZYX0JTVFJDKCJUeXBlMSIpKTsNCisgICAgcERpY3QtPlNldEF0TmFtZShGWF9CU1RSQygiQmFzZUZvbnQiKSwgZm9udE5hbWUpOw0KKyAgICBpZiAocEVuY29kaW5nKSB7DQorICAgICAgICBwRGljdC0+U2V0QXQoRlhfQlNUUkMoIkVuY29kaW5nIiksIHBFbmNvZGluZy0+UmVhbGl6ZSgpKTsNCisgICAgfQ0KKyAgICBtX3BQREZEb2MtPkFkZEluZGlyZWN0T2JqZWN0KHBEaWN0KTsNCisgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfRm9udCo+KiBmb250RGF0YSA9IEZYX05FVyBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9Gb250Kj47DQorICAgIGlmICghZm9udERhdGEpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRm9udCogcEZvbnQgPSBDUERGX0ZvbnQ6OkNyZWF0ZUZvbnRGKG1fcFBERkRvYywgcERpY3QpOw0KKyAgICBpZiAoIXBGb250KSB7DQorICAgICAgICBkZWxldGUgZm9udERhdGE7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBmb250RGF0YS0+bV9uQ291bnQgPSAyOw0KKyAgICBmb250RGF0YS0+bV9PYmogPSBwRm9udDsNCisgICAgbV9Gb250TWFwLlNldEF0KHBEaWN0LCBmb250RGF0YSk7DQorICAgIHJldHVybiBwRm9udDsNCit9DQordm9pZCBDUERGX0RvY1BhZ2VEYXRhOjpSZWxlYXNlRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb250RGljdCkNCit7DQorICAgIGlmICghcEZvbnREaWN0KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfRm9udCo+KiBmb250RGF0YTsNCisgICAgaWYgKCFtX0ZvbnRNYXAuTG9va3VwKHBGb250RGljdCwgZm9udERhdGEpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKGZvbnREYXRhLT5tX09iaiAmJiAtLWZvbnREYXRhLT5tX25Db3VudCA9PSAwKSB7DQorICAgICAgICBkZWxldGUgZm9udERhdGEtPm1fT2JqOw0KKyAgICAgICAgZm9udERhdGEtPm1fT2JqID0gTlVMTDsNCisgICAgfQ0KK30NCitDUERGX0NvbG9yU3BhY2UqIENQREZfRG9jUGFnZURhdGE6OkdldENvbG9yU3BhY2UoQ1BERl9PYmplY3QqIHBDU09iaiwgQ1BERl9EaWN0aW9uYXJ5KiBwUmVzb3VyY2VzKQ0KK3sNCisgICAgaWYgKCFwQ1NPYmopIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChwQ1NPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgbmFtZSA9IHBDU09iai0+R2V0Q29uc3RTdHJpbmcoKTsNCisgICAgICAgIENQREZfQ29sb3JTcGFjZSogcENTID0gX0NTRnJvbU5hbWUobmFtZSk7DQorICAgICAgICBpZiAoIXBDUyAmJiBwUmVzb3VyY2VzKSB7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwTGlzdCA9IHBSZXNvdXJjZXMtPkdldERpY3QoRlhfQlNUUkMoIkNvbG9yU3BhY2UiKSk7DQorICAgICAgICAgICAgaWYgKHBMaXN0KSB7DQorICAgICAgICAgICAgICAgIHBDU09iaiA9IHBMaXN0LT5HZXRFbGVtZW50VmFsdWUobmFtZSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBHZXRDb2xvclNwYWNlKHBDU09iaiwgTlVMTCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBDUyA9PSBOVUxMIHx8IHBSZXNvdXJjZXMgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBwQ1M7DQorICAgICAgICB9DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBDb2xvclNwYWNlcyA9IHBSZXNvdXJjZXMtPkdldERpY3QoRlhfQlNUUkMoIkNvbG9yU3BhY2UiKSk7DQorICAgICAgICBpZiAocENvbG9yU3BhY2VzID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gcENTOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBEZWZhdWx0Q1MgPSBOVUxMOw0KKyAgICAgICAgc3dpdGNoIChwQ1MtPkdldEZhbWlseSgpKSB7DQorICAgICAgICAgICAgY2FzZSBQREZDU19ERVZJQ0VSR0I6DQorICAgICAgICAgICAgICAgIHBEZWZhdWx0Q1MgPSBwQ29sb3JTcGFjZXMtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiRGVmYXVsdFJHQiIpKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBQREZDU19ERVZJQ0VHUkFZOg0KKyAgICAgICAgICAgICAgICBwRGVmYXVsdENTID0gcENvbG9yU3BhY2VzLT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkRlZmF1bHRHcmF5IikpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIFBERkNTX0RFVklDRUNNWUs6DQorICAgICAgICAgICAgICAgIHBEZWZhdWx0Q1MgPSBwQ29sb3JTcGFjZXMtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiRGVmYXVsdENNWUsiKSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBEZWZhdWx0Q1MgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBwQ1M7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gR2V0Q29sb3JTcGFjZShwRGVmYXVsdENTLCBOVUxMKTsNCisgICAgfQ0KKyAgICBpZiAocENTT2JqLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwQXJyYXkgPSAoQ1BERl9BcnJheSopcENTT2JqOw0KKyAgICBpZiAocEFycmF5LT5HZXRDb3VudCgpID09IDApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChwQXJyYXktPkdldENvdW50KCkgPT0gMSkgew0KKyAgICAgICAgcmV0dXJuIEdldENvbG9yU3BhY2UocEFycmF5LT5HZXRFbGVtZW50VmFsdWUoMCksIHBSZXNvdXJjZXMpOw0KKyAgICB9DQorICAgIENQREZfQ291bnRlZE9iamVjdDxDUERGX0NvbG9yU3BhY2UqPiogY3NEYXRhID0gTlVMTDsNCisgICAgaWYgKG1fQ29sb3JTcGFjZU1hcC5Mb29rdXAocENTT2JqLCBjc0RhdGEpKSB7DQorICAgICAgICBpZiAoY3NEYXRhLT5tX09iaikgew0KKyAgICAgICAgICAgIGNzRGF0YS0+bV9uQ291bnQrKzsNCisgICAgICAgICAgICByZXR1cm4gY3NEYXRhLT5tX09iajsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9CT09MIGJOZXcgPSBGQUxTRTsNCisgICAgaWYgKCFjc0RhdGEpIHsNCisgICAgICAgIGNzRGF0YSA9IEZYX05FVyBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9Db2xvclNwYWNlKj47DQorICAgICAgICBpZiAoIWNzRGF0YSkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgYk5ldyA9IFRSVUU7DQorICAgIH0NCisgICAgQ1BERl9Db2xvclNwYWNlKiBwQ1MgPSBDUERGX0NvbG9yU3BhY2U6OkxvYWQobV9wUERGRG9jLCBwQXJyYXkpOw0KKyAgICBpZiAoIXBDUykgew0KKyAgICAgICAgaWYgKGJOZXcpIHsNCisgICAgICAgICAgICBkZWxldGUgY3NEYXRhOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgY3NEYXRhLT5tX25Db3VudCA9IDI7DQorICAgIGNzRGF0YS0+bV9PYmogPSBwQ1M7DQorICAgIG1fQ29sb3JTcGFjZU1hcC5TZXRBdChwQ1NPYmosIGNzRGF0YSk7DQorICAgIHJldHVybiBwQ1M7DQorfQ0KK0NQREZfQ29sb3JTcGFjZSogQ1BERl9Eb2NQYWdlRGF0YTo6R2V0Q29waWVkQ29sb3JTcGFjZShDUERGX09iamVjdCogcENTT2JqKQ0KK3sNCisgICAgaWYgKCFwQ1NPYmopIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfQ291bnRlZE9iamVjdDxDUERGX0NvbG9yU3BhY2UqPiogY3NEYXRhOw0KKyAgICBpZiAoIW1fQ29sb3JTcGFjZU1hcC5Mb29rdXAocENTT2JqLCBjc0RhdGEpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoIWNzRGF0YS0+bV9PYmopIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGNzRGF0YS0+bV9uQ291bnQgKys7DQorICAgIHJldHVybiBjc0RhdGEtPm1fT2JqOw0KK30NCit2b2lkIENQREZfRG9jUGFnZURhdGE6OlJlbGVhc2VDb2xvclNwYWNlKENQREZfT2JqZWN0KiBwQ29sb3JTcGFjZSkNCit7DQorICAgIGlmICghcENvbG9yU3BhY2UpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9Db2xvclNwYWNlKj4qIGNzRGF0YTsNCisgICAgaWYgKCFtX0NvbG9yU3BhY2VNYXAuTG9va3VwKHBDb2xvclNwYWNlLCBjc0RhdGEpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKGNzRGF0YS0+bV9PYmogJiYgLS1jc0RhdGEtPm1fbkNvdW50ID09IDApIHsNCisgICAgICAgIGNzRGF0YS0+bV9PYmotPlJlbGVhc2VDUygpOw0KKyAgICAgICAgY3NEYXRhLT5tX09iaiA9IE5VTEw7DQorICAgIH0NCit9DQorQ1BERl9QYXR0ZXJuKiBDUERGX0RvY1BhZ2VEYXRhOjpHZXRQYXR0ZXJuKENQREZfT2JqZWN0KiBwUGF0dGVybk9iaiwgRlhfQk9PTCBiU2hhZGluZywgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogbWF0cml4KQ0KK3sNCisgICAgaWYgKCFwUGF0dGVybk9iaikgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfUGF0dGVybio+KiBwdERhdGEgPSBOVUxMOw0KKyAgICBpZiAobV9QYXR0ZXJuTWFwLkxvb2t1cChwUGF0dGVybk9iaiwgcHREYXRhKSkgew0KKyAgICAgICAgaWYgKHB0RGF0YS0+bV9PYmopIHsNCisgICAgICAgICAgICBwdERhdGEtPm1fbkNvdW50Kys7DQorICAgICAgICAgICAgcmV0dXJuIHB0RGF0YS0+bV9PYmo7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfQk9PTCBiTmV3ID0gRkFMU0U7DQorICAgIGlmICghcHREYXRhKSB7DQorICAgICAgICBwdERhdGEgPSBGWF9ORVcgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfUGF0dGVybio+Ow0KKyAgICAgICAgYk5ldyA9IFRSVUU7DQorICAgICAgICBpZiAoIXB0RGF0YSkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENQREZfUGF0dGVybiogcFBhdHRlcm4gPSBOVUxMOw0KKyAgICBpZiAoYlNoYWRpbmcpIHsNCisgICAgICAgIHBQYXR0ZXJuID0gRlhfTkVXIENQREZfU2hhZGluZ1BhdHRlcm4obV9wUERGRG9jLCBwUGF0dGVybk9iaiwgYlNoYWRpbmcsIG1hdHJpeCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gcFBhdHRlcm5PYmotPkdldERpY3QoKTsNCisgICAgICAgIGlmIChwRGljdCkgew0KKyAgICAgICAgICAgIGludCB0eXBlID0gcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIlBhdHRlcm5UeXBlIikpOw0KKyAgICAgICAgICAgIGlmICh0eXBlID09IDEpIHsNCisgICAgICAgICAgICAgICAgcFBhdHRlcm4gPSBGWF9ORVcgQ1BERl9UaWxpbmdQYXR0ZXJuKG1fcFBERkRvYywgcFBhdHRlcm5PYmosIG1hdHJpeCk7DQorICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IDIpIHsNCisgICAgICAgICAgICAgICAgcFBhdHRlcm4gPSBGWF9ORVcgQ1BERl9TaGFkaW5nUGF0dGVybihtX3BQREZEb2MsIHBQYXR0ZXJuT2JqLCBGQUxTRSwgbWF0cml4KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCFwUGF0dGVybikgew0KKyAgICAgICAgaWYgKGJOZXcpIHsNCisgICAgICAgICAgICBkZWxldGUgcHREYXRhOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcHREYXRhLT5tX25Db3VudCA9IDI7DQorICAgIHB0RGF0YS0+bV9PYmogPSBwUGF0dGVybjsNCisgICAgbV9QYXR0ZXJuTWFwLlNldEF0KHBQYXR0ZXJuT2JqLCBwdERhdGEpOw0KKyAgICByZXR1cm4gcFBhdHRlcm47DQorfQ0KK3ZvaWQgQ1BERl9Eb2NQYWdlRGF0YTo6UmVsZWFzZVBhdHRlcm4oQ1BERl9PYmplY3QqIHBQYXR0ZXJuT2JqKQ0KK3sNCisgICAgaWYgKCFwUGF0dGVybk9iaikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfQ291bnRlZE9iamVjdDxDUERGX1BhdHRlcm4qPiogcHREYXRhOw0KKyAgICBpZiAoIW1fUGF0dGVybk1hcC5Mb29rdXAocFBhdHRlcm5PYmosIHB0RGF0YSkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAocHREYXRhLT5tX09iaiAmJiAtLXB0RGF0YS0+bV9uQ291bnQgPT0gMCkgew0KKyAgICAgICAgZGVsZXRlIHB0RGF0YS0+bV9PYmo7DQorICAgICAgICBwdERhdGEtPm1fT2JqID0gTlVMTDsNCisgICAgfQ0KK30NCitDUERGX0ltYWdlKiBDUERGX0RvY1BhZ2VEYXRhOjpHZXRJbWFnZShDUERGX09iamVjdCogcEltYWdlU3RyZWFtKQ0KK3sNCisgICAgaWYgKCFwSW1hZ2VTdHJlYW0pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3SW1hZ2VPYmpOdW0gPSBwSW1hZ2VTdHJlYW0tPkdldE9iak51bSgpOw0KKyAgICBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9JbWFnZSo+KiBpbWFnZURhdGE7DQorICAgIGlmIChtX0ltYWdlTWFwLkxvb2t1cChkd0ltYWdlT2JqTnVtLCBpbWFnZURhdGEpKSB7DQorICAgICAgICBpbWFnZURhdGEtPm1fbkNvdW50ICsrOw0KKyAgICAgICAgcmV0dXJuIGltYWdlRGF0YS0+bV9PYmo7DQorICAgIH0NCisgICAgaW1hZ2VEYXRhID0gRlhfTkVXIENQREZfQ291bnRlZE9iamVjdDxDUERGX0ltYWdlKj47DQorICAgIGlmICghaW1hZ2VEYXRhKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0ltYWdlKiBwSW1hZ2UgPSBGWF9ORVcgQ1BERl9JbWFnZShtX3BQREZEb2MpOw0KKyAgICBpZiAoIXBJbWFnZSkgew0KKyAgICAgICAgZGVsZXRlIGltYWdlRGF0YTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBJbWFnZS0+TG9hZEltYWdlRigoQ1BERl9TdHJlYW0qKXBJbWFnZVN0cmVhbSwgRkFMU0UpOw0KKyAgICBpbWFnZURhdGEtPm1fbkNvdW50ID0gMjsNCisgICAgaW1hZ2VEYXRhLT5tX09iaiA9IHBJbWFnZTsNCisgICAgbV9JbWFnZU1hcC5TZXRBdChkd0ltYWdlT2JqTnVtLCBpbWFnZURhdGEpOw0KKyAgICByZXR1cm4gcEltYWdlOw0KK30NCit2b2lkIENQREZfRG9jUGFnZURhdGE6OlJlbGVhc2VJbWFnZShDUERGX09iamVjdCogcEltYWdlU3RyZWFtKQ0KK3sNCisgICAgaWYgKCFwSW1hZ2VTdHJlYW0pIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBQREZfRG9jUGFnZURhdGFfUmVsZWFzZTxGWF9EV09SRCwgQ1BERl9JbWFnZSo+KG1fSW1hZ2VNYXAsIHBJbWFnZVN0cmVhbS0+R2V0T2JqTnVtKCksIE5VTEwpOw0KK30NCitDUERGX0ljY1Byb2ZpbGUqIENQREZfRG9jUGFnZURhdGE6OkdldEljY1Byb2ZpbGUoQ1BERl9TdHJlYW0qIHBJY2NQcm9maWxlU3RyZWFtLCBGWF9JTlQzMiBuQ29tcG9uZW50cykNCit7DQorICAgIGlmICghcEljY1Byb2ZpbGVTdHJlYW0pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfQ291bnRlZE9iamVjdDxDUERGX0ljY1Byb2ZpbGUqPiogaXBEYXRhID0gTlVMTDsNCisgICAgaWYgKG1fSWNjUHJvZmlsZU1hcC5Mb29rdXAocEljY1Byb2ZpbGVTdHJlYW0sIGlwRGF0YSkpIHsNCisgICAgICAgIGlwRGF0YS0+bV9uQ291bnQrKzsNCisgICAgICAgIHJldHVybiBpcERhdGEtPm1fT2JqOw0KKyAgICB9DQorICAgIENQREZfU3RyZWFtQWNjIHN0cmVhbTsNCisgICAgc3RyZWFtLkxvYWRBbGxEYXRhKHBJY2NQcm9maWxlU3RyZWFtLCBGQUxTRSk7DQorICAgIEZYX0JZVEUgZGlnZXN0WzIwXTsNCisgICAgQ1BERl9TdHJlYW0qIHBDb3BpZWRTdHJlYW0gPSBOVUxMOw0KKyAgICBDUllQVF9TSEExR2VuZXJhdGUoc3RyZWFtLkdldERhdGEoKSwgc3RyZWFtLkdldFNpemUoKSwgZGlnZXN0KTsNCisgICAgaWYgKG1fSGFzaFByb2ZpbGVNYXAuTG9va3VwKENGWF9CeXRlU3RyaW5nQyhkaWdlc3QsIDIwKSwgKHZvaWQqJilwQ29waWVkU3RyZWFtKSkgew0KKyAgICAgICAgbV9JY2NQcm9maWxlTWFwLkxvb2t1cChwQ29waWVkU3RyZWFtLCBpcERhdGEpOw0KKyAgICAgICAgaXBEYXRhLT5tX25Db3VudCsrOw0KKyAgICAgICAgcmV0dXJuIGlwRGF0YS0+bV9PYmo7DQorICAgIH0NCisgICAgQ1BERl9JY2NQcm9maWxlKiBwUHJvZmlsZSA9IEZYX05FVyBDUERGX0ljY1Byb2ZpbGUoc3RyZWFtLkdldERhdGEoKSwgc3RyZWFtLkdldFNpemUoKSwgbkNvbXBvbmVudHMpOw0KKyAgICBpZiAoIXBQcm9maWxlKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpcERhdGEgPSBGWF9ORVcgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfSWNjUHJvZmlsZSo+Ow0KKyAgICBpZiAoIWlwRGF0YSkgew0KKyAgICAgICAgZGVsZXRlIHBQcm9maWxlOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaXBEYXRhLT5tX25Db3VudCA9IDI7DQorICAgIGlwRGF0YS0+bV9PYmogPSBwUHJvZmlsZTsNCisgICAgbV9JY2NQcm9maWxlTWFwLlNldEF0KHBJY2NQcm9maWxlU3RyZWFtLCBpcERhdGEpOw0KKyAgICBtX0hhc2hQcm9maWxlTWFwLlNldEF0KENGWF9CeXRlU3RyaW5nQyhkaWdlc3QsIDIwKSwgcEljY1Byb2ZpbGVTdHJlYW0pOw0KKyAgICByZXR1cm4gcFByb2ZpbGU7DQorfQ0KK3ZvaWQgQ1BERl9Eb2NQYWdlRGF0YTo6UmVsZWFzZUljY1Byb2ZpbGUoQ1BERl9TdHJlYW0qIHBJY2NQcm9maWxlU3RyZWFtLCBDUERGX0ljY1Byb2ZpbGUqIHBJY2NQcm9maWxlKQ0KK3sNCisgICAgaWYgKCFwSWNjUHJvZmlsZVN0cmVhbSAmJiAhcEljY1Byb2ZpbGUpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9JY2NQcm9maWxlKj4qIGlwRGF0YSA9IE5VTEw7DQorICAgIGlmIChtX0ljY1Byb2ZpbGVNYXAuTG9va3VwKHBJY2NQcm9maWxlU3RyZWFtLCBpcERhdGEpICYmIGlwRGF0YS0+bV9uQ291bnQgPCAyKSB7DQorICAgICAgICBGWF9QT1NJVElPTiBwb3MgPSBtX0hhc2hQcm9maWxlTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBrZXk7DQorICAgICAgICAgICAgQ1BERl9TdHJlYW0qIHBGaW5kU3RyZWFtID0gTlVMTDsNCisgICAgICAgICAgICBtX0hhc2hQcm9maWxlTWFwLkdldE5leHRBc3NvYyhwb3MsIGtleSwgKHZvaWQqJilwRmluZFN0cmVhbSk7DQorICAgICAgICAgICAgaWYgKHBJY2NQcm9maWxlU3RyZWFtID09IHBGaW5kU3RyZWFtKSB7DQorICAgICAgICAgICAgICAgIG1fSGFzaFByb2ZpbGVNYXAuUmVtb3ZlS2V5KGtleSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBQREZfRG9jUGFnZURhdGFfUmVsZWFzZTxDUERGX1N0cmVhbSosIENQREZfSWNjUHJvZmlsZSo+KG1fSWNjUHJvZmlsZU1hcCwgcEljY1Byb2ZpbGVTdHJlYW0sIHBJY2NQcm9maWxlKTsNCit9DQorQ1BERl9TdHJlYW1BY2MqIENQREZfRG9jUGFnZURhdGE6OkdldEZvbnRGaWxlU3RyZWFtQWNjKENQREZfU3RyZWFtKiBwRm9udFN0cmVhbSkNCit7DQorICAgIGlmICghcEZvbnRTdHJlYW0pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfQ291bnRlZE9iamVjdDxDUERGX1N0cmVhbUFjYyo+KiBmdERhdGE7DQorICAgIGlmIChtX0ZvbnRGaWxlTWFwLkxvb2t1cChwRm9udFN0cmVhbSwgZnREYXRhKSkgew0KKyAgICAgICAgZnREYXRhLT5tX25Db3VudCArKzsNCisgICAgICAgIHJldHVybiBmdERhdGEtPm1fT2JqOw0KKyAgICB9DQorICAgIGZ0RGF0YSA9IEZYX05FVyBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9TdHJlYW1BY2MqPjsNCisgICAgaWYgKCFmdERhdGEpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfU3RyZWFtQWNjKiBwRm9udEZpbGUgPSBGWF9ORVcgQ1BERl9TdHJlYW1BY2M7DQorICAgIGlmICghcEZvbnRGaWxlKSB7DQorICAgICAgICBkZWxldGUgZnREYXRhOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udERpY3QgPSBwRm9udFN0cmVhbS0+R2V0RGljdCgpOw0KKyAgICBGWF9JTlQzMiBvcmdfc2l6ZSA9IHBGb250RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiTGVuZ3RoMSIpKSArIHBGb250RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiTGVuZ3RoMiIpKSArIHBGb250RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiTGVuZ3RoMyIpKTsNCisgICAgaWYgKG9yZ19zaXplIDwgMCkgew0KKyAgICAgICAgb3JnX3NpemUgPSAwOw0KKyAgICB9DQorICAgIHBGb250RmlsZS0+TG9hZEFsbERhdGEocEZvbnRTdHJlYW0sIEZBTFNFLCBvcmdfc2l6ZSk7DQorICAgIGZ0RGF0YS0+bV9uQ291bnQgPSAyOw0KKyAgICBmdERhdGEtPm1fT2JqID0gcEZvbnRGaWxlOw0KKyAgICBtX0ZvbnRGaWxlTWFwLlNldEF0KHBGb250U3RyZWFtLCBmdERhdGEpOw0KKyAgICByZXR1cm4gcEZvbnRGaWxlOw0KK30NCit2b2lkIENQREZfRG9jUGFnZURhdGE6OlJlbGVhc2VGb250RmlsZVN0cmVhbUFjYyhDUERGX1N0cmVhbSogcEZvbnRTdHJlYW0sIEZYX0JPT0wgYkZvcmNlKQ0KK3sNCisgICAgaWYgKCFwRm9udFN0cmVhbSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIFBERl9Eb2NQYWdlRGF0YV9SZWxlYXNlPENQREZfU3RyZWFtKiwgQ1BERl9TdHJlYW1BY2MqPihtX0ZvbnRGaWxlTWFwLCBwRm9udFN0cmVhbSwgTlVMTCwgYkZvcmNlKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX2Z1bmMuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX2Z1bmMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNTQ2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2VfZnVuYy5jcHAKQEAgLTAsMCArMSw4ODYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX21vZHVsZS5oIg0KKyNpbmNsdWRlICJwYWdlaW50LmgiDQorI2luY2x1ZGUgPGxpbWl0cy5oPg0KK2NsYXNzIENQREZfUFNFbmdpbmU7DQordHlwZWRlZiBlbnVtIHtQU09QX0FERCwgUFNPUF9TVUIsIFBTT1BfTVVMLCBQU09QX0RJViwgUFNPUF9JRElWLCBQU09QX01PRCwNCisgICAgICAgICAgICAgIFBTT1BfTkVHLCBQU09QX0FCUywgUFNPUF9DRUlMSU5HLCBQU09QX0ZMT09SLCBQU09QX1JPVU5ELCBQU09QX1RSVU5DQVRFLA0KKyAgICAgICAgICAgICAgUFNPUF9TUVJULCBQU09QX1NJTiwgUFNPUF9DT1MsIFBTT1BfQVRBTiwgUFNPUF9FWFAsIFBTT1BfTE4sIFBTT1BfTE9HLA0KKyAgICAgICAgICAgICAgUFNPUF9DVkksIFBTT1BfQ1ZSLCBQU09QX0VRLCBQU09QX05FLCBQU09QX0dULCBQU09QX0dFLCBQU09QX0xULCBQU09QX0xFLA0KKyAgICAgICAgICAgICAgUFNPUF9BTkQsIFBTT1BfT1IsIFBTT1BfWE9SLCBQU09QX05PVCwgUFNPUF9CSVRTSElGVCwgUFNPUF9UUlVFLCBQU09QX0ZBTFNFLA0KKyAgICAgICAgICAgICAgUFNPUF9JRiwgUFNPUF9JRkVMU0UsIFBTT1BfUE9QLCBQU09QX0VYQ0gsIFBTT1BfRFVQLCBQU09QX0NPUFksDQorICAgICAgICAgICAgICBQU09QX0lOREVYLCBQU09QX1JPTEwsIFBTT1BfUFJPQywgUFNPUF9DT05TVA0KKyAgICAgICAgICAgICB9IFBERl9QU09QOw0KK2NsYXNzIENQREZfUFNQcm9jIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICB+Q1BERl9QU1Byb2MoKTsNCisgICAgRlhfQk9PTAlQYXJzZShDUERGX1NpbXBsZVBhcnNlciYgcGFyc2VyKTsNCisgICAgRlhfQk9PTAlFeGVjdXRlKENQREZfUFNFbmdpbmUqIHBFbmdpbmUpOw0KKyAgICBDRlhfUHRyQXJyYXkJCW1fT3BlcmF0b3JzOw0KK307DQorI2RlZmluZSBQU0VOR0lORV9TVEFDS1NJWkUgMTAwDQorY2xhc3MgQ1BERl9QU0VuZ2luZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9QU0VuZ2luZSgpOw0KKyAgICB+Q1BERl9QU0VuZ2luZSgpOw0KKyAgICBGWF9CT09MCVBhcnNlKGNvbnN0IEZYX0NIQVIqIHN0cmluZywgaW50IHNpemUpOw0KKyAgICBGWF9CT09MCUV4ZWN1dGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9NYWluUHJvYy5FeGVjdXRlKHRoaXMpOw0KKyAgICB9DQorICAgIEZYX0JPT0wJRG9PcGVyYXRvcihQREZfUFNPUCBvcCk7DQorICAgIHZvaWQJUmVzZXQoKQ0KKyAgICB7DQorICAgICAgICBtX1N0YWNrQ291bnQgPSAwOw0KKyAgICB9DQorICAgIHZvaWQJUHVzaChGWF9GTE9BVCB2YWx1ZSk7DQorICAgIHZvaWQJUHVzaChpbnQgdmFsdWUpDQorICAgIHsNCisgICAgICAgIFB1c2goKEZYX0ZMT0FUKXZhbHVlKTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVAlQb3AoKTsNCisgICAgaW50CQlHZXRTdGFja1NpemUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9TdGFja0NvdW50Ow0KKyAgICB9DQorcHJpdmF0ZToNCisgICAgRlhfRkxPQVQJbV9TdGFja1tQU0VOR0lORV9TVEFDS1NJWkVdOw0KKyAgICBpbnQJCW1fU3RhY2tDb3VudDsNCisgICAgQ1BERl9QU1Byb2MJbV9NYWluUHJvYzsNCit9Ow0KK0NQREZfUFNQcm9jOjp+Q1BERl9QU1Byb2MoKQ0KK3sNCisgICAgaW50IHNpemUgPSBtX09wZXJhdG9ycy5HZXRTaXplKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgew0KKyAgICAgICAgaWYgKG1fT3BlcmF0b3JzW2ldID09IChGWF9MUFZPSUQpUFNPUF9QUk9DKSB7DQorICAgICAgICAgICAgZGVsZXRlIChDUERGX1BTUHJvYyopbV9PcGVyYXRvcnNbaSArIDFdOw0KKyAgICAgICAgICAgIGkgKys7DQorICAgICAgICB9IGVsc2UgaWYgKG1fT3BlcmF0b3JzW2ldID09IChGWF9MUFZPSUQpUFNPUF9DT05TVCkgew0KKyAgICAgICAgICAgIEZYX0ZyZWUoKEZYX0ZMT0FUKiltX09wZXJhdG9yc1tpICsgMV0pOw0KKyAgICAgICAgICAgIGkgKys7DQorICAgICAgICB9DQorICAgIH0NCit9DQorI3ByYWdtYSBvcHRpbWl6ZSggIiIsIG9mZiApDQorRlhfQk9PTCBDUERGX1BTUHJvYzo6RXhlY3V0ZShDUERGX1BTRW5naW5lKiBwRW5naW5lKQ0KK3sNCisgICAgaW50IHNpemUgPSBtX09wZXJhdG9ycy5HZXRTaXplKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgew0KKyAgICAgICAgUERGX1BTT1Agb3AgPSAoUERGX1BTT1ApKEZYX1VJTlRQVFIpbV9PcGVyYXRvcnNbaV07DQorICAgICAgICBpZiAob3AgPT0gUFNPUF9QUk9DKSB7DQorICAgICAgICAgICAgaSArKzsNCisgICAgICAgIH0gZWxzZSBpZiAob3AgPT0gUFNPUF9DT05TVCkgew0KKyAgICAgICAgICAgIHBFbmdpbmUtPlB1c2goKihGWF9GTE9BVCopbV9PcGVyYXRvcnNbaSArIDFdKTsNCisgICAgICAgICAgICBpICsrOw0KKyAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBQU09QX0lGKSB7DQorICAgICAgICAgICAgaWYgKGkgPCAyIHx8IG1fT3BlcmF0b3JzW2kgLSAyXSAhPSAoRlhfTFBWT0lEKVBTT1BfUFJPQykgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICgoaW50KXBFbmdpbmUtPlBvcCgpKSB7DQorICAgICAgICAgICAgICAgICgoQ1BERl9QU1Byb2MqKW1fT3BlcmF0b3JzW2kgLSAxXSktPkV4ZWN1dGUocEVuZ2luZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBQU09QX0lGRUxTRSkgew0KKyAgICAgICAgICAgIGlmIChpIDwgNCB8fCBtX09wZXJhdG9yc1tpIC0gMl0gIT0gKEZYX0xQVk9JRClQU09QX1BST0MgfHwNCisgICAgICAgICAgICAgICAgICAgIG1fT3BlcmF0b3JzW2kgLSA0XSAhPSAoRlhfTFBWT0lEKVBTT1BfUFJPQykgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICgoaW50KXBFbmdpbmUtPlBvcCgpKSB7DQorICAgICAgICAgICAgICAgICgoQ1BERl9QU1Byb2MqKW1fT3BlcmF0b3JzW2kgLSAzXSktPkV4ZWN1dGUocEVuZ2luZSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgKChDUERGX1BTUHJvYyopbV9PcGVyYXRvcnNbaSAtIDFdKS0+RXhlY3V0ZShwRW5naW5lKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBFbmdpbmUtPkRvT3BlcmF0b3Iob3ApOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCisjcHJhZ21hIG9wdGltaXplKCAiIiwgb24gKQ0KK0NQREZfUFNFbmdpbmU6OkNQREZfUFNFbmdpbmUoKQ0KK3sNCisgICAgbV9TdGFja0NvdW50ID0gMDsNCit9DQorQ1BERl9QU0VuZ2luZTo6fkNQREZfUFNFbmdpbmUoKQ0KK3sNCit9DQordm9pZCBDUERGX1BTRW5naW5lOjpQdXNoKEZYX0ZMT0FUIHYpDQorew0KKyAgICBpZiAobV9TdGFja0NvdW50ID09IDEwMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fU3RhY2tbbV9TdGFja0NvdW50KytdID0gdjsNCit9DQorRlhfRkxPQVQgQ1BERl9QU0VuZ2luZTo6UG9wKCkNCit7DQorICAgIGlmIChtX1N0YWNrQ291bnQgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIG1fU3RhY2tbLS1tX1N0YWNrQ291bnRdOw0KK30NCitjb25zdCBzdHJ1Y3QgX1BERl9QU09wTmFtZSB7DQorICAgIGNvbnN0IEZYX0NIQVIqIG5hbWU7DQorICAgIFBERl9QU09QIG9wOw0KK30gX1BERl9QU09wTmFtZXNbXSA9IHsNCisgICAgeyJhZGQiLCBQU09QX0FERH0sIHsic3ViIiwgUFNPUF9TVUJ9LCB7Im11bCIsIFBTT1BfTVVMfSwgeyJkaXYiLCBQU09QX0RJVn0sDQorICAgIHsiaWRpdiIsIFBTT1BfSURJVn0sIHsibW9kIiwgUFNPUF9NT0R9LCB7Im5lZyIsIFBTT1BfTkVHfSwgeyJhYnMiLCBQU09QX0FCU30sDQorICAgIHsiY2VpbGluZyIsIFBTT1BfQ0VJTElOR30sIHsiZmxvb3IiLCBQU09QX0ZMT09SfSwgeyJyb3VuZCIsIFBTT1BfUk9VTkR9LA0KKyAgICB7InRydW5jYXRlIiwgUFNPUF9UUlVOQ0FURX0sIHsic3FydCIsIFBTT1BfU1FSVH0sIHsic2luIiwgUFNPUF9TSU59LA0KKyAgICB7ImNvcyIsIFBTT1BfQ09TfSwgeyJhdGFuIiwgUFNPUF9BVEFOfSwgeyJleHAiLCBQU09QX0VYUH0sIHsibG4iLCBQU09QX0xOfSwNCisgICAgeyJsb2ciLCBQU09QX0xPR30sIHsiY3ZpIiwgUFNPUF9DVkl9LCB7ImN2ciIsIFBTT1BfQ1ZSfSwgeyJlcSIsIFBTT1BfRVF9LA0KKyAgICB7Im5lIiwgUFNPUF9ORX0sIHsiZ3QiLCBQU09QX0dUfSwgeyJnZSIsIFBTT1BfR0V9LCB7Imx0IiwgUFNPUF9MVH0sDQorICAgIHsibGUiLCBQU09QX0xFfSwgeyJhbmQiLCBQU09QX0FORH0sIHsib3IiLCBQU09QX09SfSwgeyJ4b3IiLCBQU09QX1hPUn0sDQorICAgIHsibm90IiwgUFNPUF9OT1R9LCB7ImJpdHNoaWZ0IiwgUFNPUF9CSVRTSElGVH0sIHsidHJ1ZSIsIFBTT1BfVFJVRX0sDQorICAgIHsiZmFsc2UiLCBQU09QX0ZBTFNFfSwgeyJpZiIsIFBTT1BfSUZ9LCB7ImlmZWxzZSIsIFBTT1BfSUZFTFNFfSwNCisgICAgeyJwb3AiLCBQU09QX1BPUH0sIHsiZXhjaCIsIFBTT1BfRVhDSH0sIHsiZHVwIiwgUFNPUF9EVVB9LA0KKyAgICB7ImNvcHkiLCBQU09QX0NPUFl9LCB7ImluZGV4IiwgUFNPUF9JTkRFWH0sIHsicm9sbCIsIFBTT1BfUk9MTH0sDQorICAgIHtOVUxMLCBQU09QX1BST0N9DQorfTsNCitGWF9CT09MIENQREZfUFNFbmdpbmU6OlBhcnNlKGNvbnN0IEZYX0NIQVIqIHN0cmluZywgaW50IHNpemUpDQorew0KKyAgICBDUERGX1NpbXBsZVBhcnNlciBwYXJzZXIoKEZYX0xQQllURSlzdHJpbmcsIHNpemUpOw0KKyAgICBDRlhfQnl0ZVN0cmluZ0Mgd29yZCA9IHBhcnNlci5HZXRXb3JkKCk7DQorICAgIGlmICh3b3JkICE9IEZYX0JTVFJDKCJ7IikpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9NYWluUHJvYy5QYXJzZShwYXJzZXIpOw0KK30NCitGWF9CT09MIENQREZfUFNQcm9jOjpQYXJzZShDUERGX1NpbXBsZVBhcnNlciYgcGFyc2VyKQ0KK3sNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nQyB3b3JkID0gcGFyc2VyLkdldFdvcmQoKTsNCisgICAgICAgIGlmICh3b3JkLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh3b3JkID09IEZYX0JTVFJDKCJ9IikpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh3b3JkID09IEZYX0JTVFJDKCJ7IikpIHsNCisgICAgICAgICAgICBDUERGX1BTUHJvYyogcFByb2MgPSBGWF9ORVcgQ1BERl9QU1Byb2M7DQorICAgICAgICAgICAgbV9PcGVyYXRvcnMuQWRkKChGWF9MUFZPSUQpUFNPUF9QUk9DKTsNCisgICAgICAgICAgICBtX09wZXJhdG9ycy5BZGQocFByb2MpOw0KKyAgICAgICAgICAgIGlmICghcFByb2MtPlBhcnNlKHBhcnNlcikpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaW50IGkgPSAwOw0KKyAgICAgICAgICAgIHdoaWxlIChfUERGX1BTT3BOYW1lc1tpXS5uYW1lKSB7DQorICAgICAgICAgICAgICAgIGlmICh3b3JkID09IENGWF9CeXRlU3RyaW5nQyhfUERGX1BTT3BOYW1lc1tpXS5uYW1lKSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9PcGVyYXRvcnMuQWRkKChGWF9MUFZPSUQpX1BERl9QU09wTmFtZXNbaV0ub3ApOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaSArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKF9QREZfUFNPcE5hbWVzW2ldLm5hbWUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCogcGQgPSBGWF9BbGxvYyhGWF9GTE9BVCwgMSk7DQorICAgICAgICAgICAgICAgICpwZCA9IEZYX2F0b2Yod29yZCk7DQorICAgICAgICAgICAgICAgIG1fT3BlcmF0b3JzLkFkZCgoRlhfTFBWT0lEKVBTT1BfQ09OU1QpOw0KKyAgICAgICAgICAgICAgICBtX09wZXJhdG9ycy5BZGQocGQpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KK30NCisjZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NWYNCitGWF9CT09MIENQREZfUFNFbmdpbmU6OkRvT3BlcmF0b3IoUERGX1BTT1Agb3ApDQorew0KKyAgICBpbnQgaTEsIGkyOw0KKyAgICBGWF9GTE9BVCBkMSwgZDI7DQorICAgIHN3aXRjaCAob3ApIHsNCisgICAgICAgIGNhc2UgUFNPUF9BREQ6DQorICAgICAgICAgICAgZDEgPSBQb3AoKTsNCisgICAgICAgICAgICBkMiA9IFBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goZDEgKyBkMik7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfU1VCOg0KKyAgICAgICAgICAgIGQyID0gUG9wKCk7DQorICAgICAgICAgICAgZDEgPSBQb3AoKTsNCisgICAgICAgICAgICBQdXNoKGQxIC0gZDIpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX01VTDoNCisgICAgICAgICAgICBkMSA9IFBvcCgpOw0KKyAgICAgICAgICAgIGQyID0gUG9wKCk7DQorICAgICAgICAgICAgUHVzaChkMSAqIGQyKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9ESVY6DQorICAgICAgICAgICAgZDIgPSBQb3AoKTsNCisgICAgICAgICAgICBkMSA9IFBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goZDEgLyBkMik7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfSURJVjoNCisgICAgICAgICAgICBpMiA9IChpbnQpUG9wKCk7DQorICAgICAgICAgICAgaTEgPSAoaW50KVBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goaTEgLyBpMik7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfTU9EOg0KKyAgICAgICAgICAgIGkyID0gKGludClQb3AoKTsNCisgICAgICAgICAgICBpMSA9IChpbnQpUG9wKCk7DQorICAgICAgICAgICAgUHVzaChpMSAlIGkyKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9ORUc6DQorICAgICAgICAgICAgZDEgPSBQb3AoKTsNCisgICAgICAgICAgICBQdXNoKC1kMSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfQUJTOg0KKyAgICAgICAgICAgIGQxID0gUG9wKCk7DQorICAgICAgICAgICAgUHVzaCgoRlhfRkxPQVQpRlhTWVNfZmFicyhkMSkpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX0NFSUxJTkc6DQorICAgICAgICAgICAgZDEgPSBQb3AoKTsNCisgICAgICAgICAgICBQdXNoKChGWF9GTE9BVClGWFNZU19jZWlsKGQxKSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfRkxPT1I6DQorICAgICAgICAgICAgZDEgPSBQb3AoKTsNCisgICAgICAgICAgICBQdXNoKChGWF9GTE9BVClGWFNZU19mbG9vcihkMSkpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX1JPVU5EOg0KKyAgICAgICAgICAgIGQxID0gUG9wKCk7DQorICAgICAgICAgICAgUHVzaChGWFNZU19yb3VuZChkMSkpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX1RSVU5DQVRFOg0KKyAgICAgICAgICAgIGkxID0gKGludClQb3AoKTsNCisgICAgICAgICAgICBQdXNoKGkxKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9TUVJUOg0KKyAgICAgICAgICAgIGQxID0gUG9wKCk7DQorICAgICAgICAgICAgUHVzaCgoRlhfRkxPQVQpRlhTWVNfc3FydChkMSkpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX1NJTjoNCisgICAgICAgICAgICBkMSA9IFBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goKEZYX0ZMT0FUKUZYU1lTX3NpbihkMSAqIFBJIC8gMTgwLjBmKSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfQ09TOg0KKyAgICAgICAgICAgIGQxID0gUG9wKCk7DQorICAgICAgICAgICAgUHVzaCgoRlhfRkxPQVQpRlhTWVNfY29zKGQxICogUEkgLyAxODAuMGYpKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9BVEFOOg0KKyAgICAgICAgICAgIGQyID0gUG9wKCk7DQorICAgICAgICAgICAgZDEgPSBQb3AoKTsNCisgICAgICAgICAgICBkMSA9IChGWF9GTE9BVCkoRlhTWVNfYXRhbjIoZDEsIGQyKSAqIDE4MC4wIC8gUEkpOw0KKyAgICAgICAgICAgIGlmIChkMSA8IDApIHsNCisgICAgICAgICAgICAgICAgZDEgKz0gMzYwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBQdXNoKGQxKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9FWFA6DQorICAgICAgICAgICAgZDIgPSBQb3AoKTsNCisgICAgICAgICAgICBkMSA9IFBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goKEZYX0ZMT0FUKUZYU1lTX3BvdyhkMSwgZDIpKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9MTjoNCisgICAgICAgICAgICBkMSA9IFBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goKEZYX0ZMT0FUKUZYU1lTX2xvZyhkMSkpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX0xPRzoNCisgICAgICAgICAgICBkMSA9IFBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goKEZYX0ZMT0FUKUZYU1lTX2xvZzEwKGQxKSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfQ1ZJOg0KKyAgICAgICAgICAgIGkxID0gKGludClQb3AoKTsNCisgICAgICAgICAgICBQdXNoKGkxKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9DVlI6DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfRVE6DQorICAgICAgICAgICAgZDIgPSBQb3AoKTsNCisgICAgICAgICAgICBkMSA9IFBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goKGludCkoZDEgPT0gZDIpKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9ORToNCisgICAgICAgICAgICBkMiA9IFBvcCgpOw0KKyAgICAgICAgICAgIGQxID0gUG9wKCk7DQorICAgICAgICAgICAgUHVzaCgoaW50KShkMSAhPSBkMikpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX0dUOg0KKyAgICAgICAgICAgIGQyID0gUG9wKCk7DQorICAgICAgICAgICAgZDEgPSBQb3AoKTsNCisgICAgICAgICAgICBQdXNoKChpbnQpKGQxID4gZDIpKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9HRToNCisgICAgICAgICAgICBkMiA9IFBvcCgpOw0KKyAgICAgICAgICAgIGQxID0gUG9wKCk7DQorICAgICAgICAgICAgUHVzaCgoaW50KShkMSA+PSBkMikpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX0xUOg0KKyAgICAgICAgICAgIGQyID0gUG9wKCk7DQorICAgICAgICAgICAgZDEgPSBQb3AoKTsNCisgICAgICAgICAgICBQdXNoKChpbnQpKGQxIDwgZDIpKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9MRToNCisgICAgICAgICAgICBkMiA9IFBvcCgpOw0KKyAgICAgICAgICAgIGQxID0gUG9wKCk7DQorICAgICAgICAgICAgUHVzaCgoaW50KShkMSA8PSBkMikpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX0FORDoNCisgICAgICAgICAgICBpMSA9IChpbnQpUG9wKCk7DQorICAgICAgICAgICAgaTIgPSAoaW50KVBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goaTEgJiBpMik7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfT1I6DQorICAgICAgICAgICAgaTEgPSAoaW50KVBvcCgpOw0KKyAgICAgICAgICAgIGkyID0gKGludClQb3AoKTsNCisgICAgICAgICAgICBQdXNoKGkxIHwgaTIpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX1hPUjoNCisgICAgICAgICAgICBpMSA9IChpbnQpUG9wKCk7DQorICAgICAgICAgICAgaTIgPSAoaW50KVBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goaTEgXiBpMik7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfTk9UOg0KKyAgICAgICAgICAgIGkxID0gKGludClQb3AoKTsNCisgICAgICAgICAgICBQdXNoKChpbnQpIWkxKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUFNPUF9CSVRTSElGVDogew0KKyAgICAgICAgICAgICAgICBpbnQgc2hpZnQgPSAoaW50KVBvcCgpOw0KKyAgICAgICAgICAgICAgICBpbnQgaSA9IChpbnQpUG9wKCk7DQorICAgICAgICAgICAgICAgIGlmIChzaGlmdCA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgIFB1c2goaSA8PCBzaGlmdCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBQdXNoKGkgPj4gLXNoaWZ0KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIFBTT1BfVFJVRToNCisgICAgICAgICAgICBQdXNoKDEpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX0ZBTFNFOg0KKyAgICAgICAgICAgIFB1c2goMCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBTT1BfUE9QOg0KKyAgICAgICAgICAgIFBvcCgpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX0VYQ0g6DQorICAgICAgICAgICAgZDIgPSBQb3AoKTsNCisgICAgICAgICAgICBkMSA9IFBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goZDIpOw0KKyAgICAgICAgICAgIFB1c2goZDEpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX0RVUDoNCisgICAgICAgICAgICBkMSA9IFBvcCgpOw0KKyAgICAgICAgICAgIFB1c2goZDEpOw0KKyAgICAgICAgICAgIFB1c2goZDEpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQU09QX0NPUFk6IHsNCisgICAgICAgICAgICAgICAgaW50IG4gPSAoaW50KVBvcCgpOw0KKyAgICAgICAgICAgICAgICBpZiAobiA8IDAgfHwgbiA+IFBTRU5HSU5FX1NUQUNLU0laRSB8fCBtX1N0YWNrQ291bnQgKyBuID4gUFNFTkdJTkVfU1RBQ0tTSVpFIHx8IG4gPiBtX1N0YWNrQ291bnQpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgbV9TdGFja1ttX1N0YWNrQ291bnQgKyBpXSA9IG1fU3RhY2tbbV9TdGFja0NvdW50ICsgaSAtIG5dOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fU3RhY2tDb3VudCArPSBuOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIFBTT1BfSU5ERVg6IHsNCisgICAgICAgICAgICAgICAgaW50IG4gPSAoaW50KVBvcCgpOw0KKyAgICAgICAgICAgICAgICBpZiAobiA8IDAgfHwgbiA+PSBtX1N0YWNrQ291bnQpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIFB1c2gobV9TdGFja1ttX1N0YWNrQ291bnQgLSBuIC0gMV0pOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIFBTT1BfUk9MTDogew0KKyAgICAgICAgICAgICAgICBpbnQgaiA9IChpbnQpUG9wKCk7DQorICAgICAgICAgICAgICAgIGludCBuID0gKGludClQb3AoKTsNCisgICAgICAgICAgICAgICAgaWYgKG1fU3RhY2tDb3VudCA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobiA8IDAgfHwgbiA+IG1fU3RhY2tDb3VudCkgew0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGogPCAwKQ0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAtajsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGZpcnN0ID0gbV9TdGFja1ttX1N0YWNrQ291bnQgLSBuXTsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpaSA9IDA7IGlpIDwgbiAtIDE7IGlpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RhY2tbbV9TdGFja0NvdW50IC0gbiArIGlpXSA9IG1fU3RhY2tbbV9TdGFja0NvdW50IC0gbiArIGlpICsgMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RhY2tbbV9TdGFja0NvdW50IC0gMV0gPSBmaXJzdDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBqOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgbGFzdCA9IG1fU3RhY2tbbV9TdGFja0NvdW50IC0gMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IG4gLSAxOyBpaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0YWNrW21fU3RhY2tDb3VudCAtIGlpIC0gMV0gPSBtX1N0YWNrW21fU3RhY2tDb3VudCAtIGlpIC0gMl07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RhY2tbbV9TdGFja0NvdW50IC0gaWkgLSAxXSA9IGxhc3Q7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3N0YXRpYyBGWF9GTE9BVCBQREZfSW50ZXJwb2xhdGUoRlhfRkxPQVQgeCwgRlhfRkxPQVQgeG1pbiwgRlhfRkxPQVQgeG1heCwgRlhfRkxPQVQgeW1pbiwgRlhfRkxPQVQgeW1heCkNCit7DQorICAgIHJldHVybiAoKHggLSB4bWluKSAqICh5bWF4IC0geW1pbikgLyAoeG1heCAtIHhtaW4pKSArIHltaW47DQorfQ0KK3N0YXRpYyBGWF9EV09SRCBfR2V0Qml0czMyKEZYX0xQQ0JZVEUgcERhdGEsIGludCBiaXRwb3MsIGludCBuYml0cykNCit7DQorICAgIGludCByZXN1bHQgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5iaXRzOyBpICsrKQ0KKyAgICAgICAgaWYgKHBEYXRhWyhiaXRwb3MgKyBpKSAvIDhdICYgKDEgPDwgKDcgLSAoYml0cG9zICsgaSkgJSA4KSkpIHsNCisgICAgICAgICAgICByZXN1bHQgfD0gMSA8PCAobmJpdHMgLSBpIC0gMSk7DQorICAgICAgICB9DQorICAgIHJldHVybiByZXN1bHQ7DQorfQ0KK3R5cGVkZWYgc3RydWN0IHsNCisgICAgRlhfRkxPQVQJZW5jb2RlX21heCwgZW5jb2RlX21pbjsNCisgICAgaW50CQkJc2l6ZXM7DQorfSBTYW1wbGVFbmNvZGVJbmZvOw0KK3R5cGVkZWYgc3RydWN0IHsNCisgICAgRlhfRkxPQVQJZGVjb2RlX21heCwgZGVjb2RlX21pbjsNCit9IFNhbXBsZURlY29kZUluZm87DQorY2xhc3MgQ1BERl9TYW1wbGVkRnVuYyA6IHB1YmxpYyBDUERGX0Z1bmN0aW9uDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9TYW1wbGVkRnVuYygpOw0KKyAgICB2aXJ0dWFsIH5DUERGX1NhbXBsZWRGdW5jKCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJdl9Jbml0KENQREZfT2JqZWN0KiBwT2JqKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQl2X0NhbGwoRlhfRkxPQVQqIGlucHV0cywgRlhfRkxPQVQqIHJlc3VsdHMpIGNvbnN0Ow0KKyAgICBTYW1wbGVFbmNvZGVJbmZvKgltX3BFbmNvZGVJbmZvOw0KKyAgICBTYW1wbGVEZWNvZGVJbmZvKgltX3BEZWNvZGVJbmZvOw0KKyAgICBGWF9EV09SRAltX25CaXRzUGVyU2FtcGxlLCBtX1NhbXBsZU1heDsNCisgICAgQ1BERl9TdHJlYW1BY2MqCW1fcFNhbXBsZVN0cmVhbTsNCit9Ow0KK0NQREZfU2FtcGxlZEZ1bmM6OkNQREZfU2FtcGxlZEZ1bmMoKQ0KK3sNCisgICAgbV9wU2FtcGxlU3RyZWFtID0gTlVMTDsNCisgICAgbV9wRW5jb2RlSW5mbyA9IE5VTEw7DQorICAgIG1fcERlY29kZUluZm8gPSBOVUxMOw0KK30NCitDUERGX1NhbXBsZWRGdW5jOjp+Q1BERl9TYW1wbGVkRnVuYygpDQorew0KKyAgICBpZiAobV9wU2FtcGxlU3RyZWFtKSB7DQorICAgICAgICBkZWxldGUgbV9wU2FtcGxlU3RyZWFtOw0KKyAgICB9DQorICAgIGlmIChtX3BFbmNvZGVJbmZvKSB7DQorICAgICAgICBGWF9GcmVlKG1fcEVuY29kZUluZm8pOw0KKyAgICB9DQorICAgIGlmIChtX3BEZWNvZGVJbmZvKSB7DQorICAgICAgICBGWF9GcmVlKG1fcERlY29kZUluZm8pOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9TYW1wbGVkRnVuYzo6dl9Jbml0KENQREZfT2JqZWN0KiBwT2JqKQ0KK3sNCisgICAgaWYgKHBPYmotPkdldFR5cGUoKSAhPSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW0gPSAoQ1BERl9TdHJlYW0qKXBPYmo7DQorICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBwU3RyZWFtLT5HZXREaWN0KCk7DQorICAgIENQREZfQXJyYXkqIHBTaXplID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJTaXplIikpOw0KKyAgICBDUERGX0FycmF5KiBwRW5jb2RlID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJFbmNvZGUiKSk7DQorICAgIENQREZfQXJyYXkqIHBEZWNvZGUgPSBwRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkRlY29kZSIpKTsNCisgICAgbV9uQml0c1BlclNhbXBsZSA9IHBEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJCaXRzUGVyU2FtcGxlIikpOw0KKyAgICBtX1NhbXBsZU1heCA9IDB4ZmZmZmZmZmYgPj4gKDMyIC0gbV9uQml0c1BlclNhbXBsZSk7DQorICAgIG1fcFNhbXBsZVN0cmVhbSA9IEZYX05FVyBDUERGX1N0cmVhbUFjYzsNCisgICAgbV9wU2FtcGxlU3RyZWFtLT5Mb2FkQWxsRGF0YShwU3RyZWFtLCBGQUxTRSk7DQorICAgIG1fcEVuY29kZUluZm8gPSBGWF9BbGxvYyhTYW1wbGVFbmNvZGVJbmZvLCBtX25JbnB1dHMpOw0KKyAgICBpbnQgaTsNCisgICAgRlhfRFdPUkQgblRvdGFsU2FtcGxlcyA9IDE7DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX25JbnB1dHM7IGkgKyspIHsNCisgICAgICAgIG1fcEVuY29kZUluZm9baV0uc2l6ZXMgPSBwU2l6ZS0+R2V0SW50ZWdlcihpKTsNCisgICAgICAgIGlmICghcFNpemUgJiYgaSA9PSAwKSB7DQorICAgICAgICAgICAgbV9wRW5jb2RlSW5mb1tpXS5zaXplcyA9IHBEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJTaXplIikpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG5Ub3RhbFNhbXBsZXMgPiAwICYmIChGWF9VSU5UMzIpKG1fcEVuY29kZUluZm9baV0uc2l6ZXMpID4gVUlOVF9NQVggLyBuVG90YWxTYW1wbGVzKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgblRvdGFsU2FtcGxlcyAqPSBtX3BFbmNvZGVJbmZvW2ldLnNpemVzOw0KKyAgICAgICAgaWYgKHBFbmNvZGUpIHsNCisgICAgICAgICAgICBtX3BFbmNvZGVJbmZvW2ldLmVuY29kZV9taW4gPSBwRW5jb2RlLT5HZXRGbG9hdChpICogMik7DQorICAgICAgICAgICAgbV9wRW5jb2RlSW5mb1tpXS5lbmNvZGVfbWF4ID0gcEVuY29kZS0+R2V0RmxvYXQoaSAqIDIgKyAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9wRW5jb2RlSW5mb1tpXS5lbmNvZGVfbWluID0gMDsNCisgICAgICAgICAgICBpZiAobV9wRW5jb2RlSW5mb1tpXS5zaXplcyA9PSAxKSB7DQorICAgICAgICAgICAgICAgIG1fcEVuY29kZUluZm9baV0uZW5jb2RlX21heCA9IDE7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9wRW5jb2RlSW5mb1tpXS5lbmNvZGVfbWF4ID0gKEZYX0ZMT0FUKW1fcEVuY29kZUluZm9baV0uc2l6ZXMgLSAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoblRvdGFsU2FtcGxlcyA+IDAgJiYgbV9uQml0c1BlclNhbXBsZSA+IFVJTlRfTUFYIC8gblRvdGFsU2FtcGxlcykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG5Ub3RhbFNhbXBsZXMgKj0gbV9uQml0c1BlclNhbXBsZTsNCisgICAgaWYgKG5Ub3RhbFNhbXBsZXMgPiAwICYmICgoRlhfVUlOVDMyKW1fbk91dHB1dHMpID4gVUlOVF9NQVggLyBuVG90YWxTYW1wbGVzKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgblRvdGFsU2FtcGxlcyAqPSBtX25PdXRwdXRzOw0KKyAgICBpZiAoblRvdGFsU2FtcGxlcyA9PSAwIHx8IG1fcFNhbXBsZVN0cmVhbS0+R2V0U2l6ZSgpICogOCA8IG5Ub3RhbFNhbXBsZXMpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BEZWNvZGVJbmZvID0gRlhfQWxsb2MoU2FtcGxlRGVjb2RlSW5mbywgbV9uT3V0cHV0cyk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX25PdXRwdXRzOyBpICsrKSB7DQorICAgICAgICBpZiAocERlY29kZSkgew0KKyAgICAgICAgICAgIG1fcERlY29kZUluZm9baV0uZGVjb2RlX21pbiA9IHBEZWNvZGUtPkdldEZsb2F0KDIgKiBpKTsNCisgICAgICAgICAgICBtX3BEZWNvZGVJbmZvW2ldLmRlY29kZV9tYXggPSBwRGVjb2RlLT5HZXRGbG9hdCgyICogaSArIDEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX3BEZWNvZGVJbmZvW2ldLmRlY29kZV9taW4gPSBtX3BSYW5nZXNbaSAqIDJdOw0KKyAgICAgICAgICAgIG1fcERlY29kZUluZm9baV0uZGVjb2RlX21heCA9IG1fcFJhbmdlc1tpICogMiArIDFdOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfU2FtcGxlZEZ1bmM6OnZfQ2FsbChGWF9GTE9BVCogaW5wdXRzLCBGWF9GTE9BVCogcmVzdWx0cykgY29uc3QNCit7DQorICAgIGludCBwb3MgPSAwOw0KKyAgICBDRlhfRml4ZWRCdWZHcm93PEZYX0ZMT0FULCAxNj4gZW5jb2RlZF9pbnB1dF9idWYobV9uSW5wdXRzKTsNCisgICAgRlhfRkxPQVQqIGVuY29kZWRfaW5wdXQgPSBlbmNvZGVkX2lucHV0X2J1ZjsNCisgICAgQ0ZYX0ZpeGVkQnVmR3JvdzxpbnQsIDMyPiBpbnRfYnVmKG1fbklucHV0cyAqIDIpOw0KKyAgICBpbnQqIGluZGV4ID0gaW50X2J1ZjsNCisgICAgaW50KiBibG9ja3NpemUgPSBpbmRleCArIG1fbklucHV0czsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX25JbnB1dHM7IGkgKyspIHsNCisgICAgICAgIGlmIChpID09IDApIHsNCisgICAgICAgICAgICBibG9ja3NpemVbaV0gPSAxOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBibG9ja3NpemVbaV0gPSBibG9ja3NpemVbaSAtIDFdICogbV9wRW5jb2RlSW5mb1tpIC0gMV0uc2l6ZXM7DQorICAgICAgICB9DQorICAgICAgICBlbmNvZGVkX2lucHV0W2ldID0gUERGX0ludGVycG9sYXRlKGlucHV0c1tpXSwgbV9wRG9tYWluc1tpICogMl0sIG1fcERvbWFpbnNbaSAqIDIgKyAxXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wRW5jb2RlSW5mb1tpXS5lbmNvZGVfbWluLCBtX3BFbmNvZGVJbmZvW2ldLmVuY29kZV9tYXgpOw0KKyAgICAgICAgaW5kZXhbaV0gPSAoaW50KWVuY29kZWRfaW5wdXRbaV07DQorICAgICAgICBpZiAoaW5kZXhbaV0gPCAwKSB7DQorICAgICAgICAgICAgaW5kZXhbaV0gPSAwOw0KKyAgICAgICAgfSBlbHNlIGlmIChpbmRleFtpXSA+IG1fcEVuY29kZUluZm9baV0uc2l6ZXMgLSAxKSB7DQorICAgICAgICAgICAgaW5kZXhbaV0gPSBtX3BFbmNvZGVJbmZvW2ldLnNpemVzIC0gMTsNCisgICAgICAgIH0NCisgICAgICAgIHBvcyArPSBpbmRleFtpXSAqIGJsb2Nrc2l6ZVtpXTsNCisgICAgfQ0KKyAgICBpbnQgYml0cG9zID0gcG9zICogbV9uQml0c1BlclNhbXBsZSAqIG1fbk91dHB1dHM7DQorICAgIEZYX0xQQ0JZVEUgcFNhbXBsZURhdGEgPSBtX3BTYW1wbGVTdHJlYW0tPkdldERhdGEoKTsNCisgICAgaWYgKHBTYW1wbGVEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fbk91dHB1dHM7IGogKyspIHsNCisgICAgICAgIEZYX0RXT1JEIHNhbXBsZSA9IF9HZXRCaXRzMzIocFNhbXBsZURhdGEsIGJpdHBvcyArIGogKiBtX25CaXRzUGVyU2FtcGxlLCBtX25CaXRzUGVyU2FtcGxlKTsNCisgICAgICAgIEZYX0ZMT0FUIGVuY29kZWQgPSAoRlhfRkxPQVQpc2FtcGxlOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX25JbnB1dHM7IGkgKyspIHsNCisgICAgICAgICAgICBpZiAoaW5kZXhbaV0gPT0gbV9wRW5jb2RlSW5mb1tpXS5zaXplcyAtIDEpIHsNCisgICAgICAgICAgICAgICAgaWYgKGluZGV4W2ldID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGVuY29kZWQgPSBlbmNvZGVkX2lucHV0W2ldICogKEZYX0ZMT0FUKXNhbXBsZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGludCBiaXRwb3MxID0gYml0cG9zICsgbV9uQml0c1BlclNhbXBsZSAqIG1fbk91dHB1dHMgKiBibG9ja3NpemVbaV07DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIHNhbXBsZTEgPSBfR2V0Qml0czMyKHBTYW1wbGVEYXRhLCBiaXRwb3MxICsgaiAqIG1fbkJpdHNQZXJTYW1wbGUsIG1fbkJpdHNQZXJTYW1wbGUpOw0KKyAgICAgICAgICAgICAgICBlbmNvZGVkICs9IChlbmNvZGVkX2lucHV0W2ldIC0gaW5kZXhbaV0pICogKChGWF9GTE9BVClzYW1wbGUxIC0gKEZYX0ZMT0FUKXNhbXBsZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmVzdWx0c1tqXSA9IFBERl9JbnRlcnBvbGF0ZShlbmNvZGVkLCAwLCAoRlhfRkxPQVQpbV9TYW1wbGVNYXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcERlY29kZUluZm9bal0uZGVjb2RlX21pbiwgbV9wRGVjb2RlSW5mb1tqXS5kZWNvZGVfbWF4KTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorY2xhc3MgQ1BERl9QU0Z1bmMgOiBwdWJsaWMgQ1BERl9GdW5jdGlvbg0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJdl9Jbml0KENQREZfT2JqZWN0KiBwT2JqKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQl2X0NhbGwoRlhfRkxPQVQqIGlucHV0cywgRlhfRkxPQVQqIHJlc3VsdHMpIGNvbnN0Ow0KKyAgICBDUERGX1BTRW5naW5lIG1fUFM7DQorfTsNCitGWF9CT09MIENQREZfUFNGdW5jOjp2X0luaXQoQ1BERl9PYmplY3QqIHBPYmopDQorew0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IChDUERGX1N0cmVhbSopcE9iajsNCisgICAgQ1BERl9TdHJlYW1BY2MgYWNjOw0KKyAgICBhY2MuTG9hZEFsbERhdGEocFN0cmVhbSwgRkFMU0UpOw0KKyAgICByZXR1cm4gbV9QUy5QYXJzZSgoY29uc3QgRlhfQ0hBUiopYWNjLkdldERhdGEoKSwgYWNjLkdldFNpemUoKSk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9QU0Z1bmM6OnZfQ2FsbChGWF9GTE9BVCogaW5wdXRzLCBGWF9GTE9BVCogcmVzdWx0cykgY29uc3QNCit7DQorICAgIENQREZfUFNFbmdpbmUmIFBTID0gKENQREZfUFNFbmdpbmUmKW1fUFM7DQorICAgIFBTLlJlc2V0KCk7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9uSW5wdXRzOyBpICsrKSB7DQorICAgICAgICBQUy5QdXNoKGlucHV0c1tpXSk7DQorICAgIH0NCisgICAgUFMuRXhlY3V0ZSgpOw0KKyAgICBpZiAoUFMuR2V0U3RhY2tTaXplKCkgPCBtX25PdXRwdXRzKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgZm9yIChpID0gMDsgaSA8IG1fbk91dHB1dHM7IGkgKyspIHsNCisgICAgICAgIHJlc3VsdHNbbV9uT3V0cHV0cyAtIGkgLSAxXSA9IFBTLlBvcCgpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitjbGFzcyBDUERGX0V4cEludEZ1bmMgOiBwdWJsaWMgQ1BERl9GdW5jdGlvbg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfRXhwSW50RnVuYygpOw0KKyAgICB2aXJ0dWFsIH5DUERGX0V4cEludEZ1bmMoKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQl2X0luaXQoQ1BERl9PYmplY3QqIHBPYmopOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCXZfQ2FsbChGWF9GTE9BVCogaW5wdXRzLCBGWF9GTE9BVCogcmVzdWx0cykgY29uc3Q7DQorICAgIEZYX0ZMT0FUCW1fRXhwb25lbnQ7DQorICAgIEZYX0ZMT0FUKgltX3BCZWdpblZhbHVlczsNCisgICAgRlhfRkxPQVQqCW1fcEVuZFZhbHVlczsNCisgICAgaW50CQltX25PcmlnT3V0cHV0czsNCit9Ow0KK0NQREZfRXhwSW50RnVuYzo6Q1BERl9FeHBJbnRGdW5jKCkNCit7DQorICAgIG1fcEJlZ2luVmFsdWVzID0gTlVMTDsNCisgICAgbV9wRW5kVmFsdWVzID0gTlVMTDsNCit9DQorQ1BERl9FeHBJbnRGdW5jOjp+Q1BERl9FeHBJbnRGdW5jKCkNCit7DQorICAgIGlmIChtX3BCZWdpblZhbHVlcykgew0KKyAgICAgICAgRlhfRnJlZShtX3BCZWdpblZhbHVlcyk7DQorICAgIH0NCisgICAgaWYgKG1fcEVuZFZhbHVlcykgew0KKyAgICAgICAgRlhfRnJlZShtX3BFbmRWYWx1ZXMpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9FeHBJbnRGdW5jOjp2X0luaXQoQ1BERl9PYmplY3QqIHBPYmopDQorew0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gcE9iai0+R2V0RGljdCgpOw0KKyAgICBpZiAocERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBBcnJheTAgPSBwRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkMwIikpOw0KKyAgICBpZiAobV9uT3V0cHV0cyA9PSAwKSB7DQorICAgICAgICBtX25PdXRwdXRzID0gMTsNCisgICAgICAgIGlmIChwQXJyYXkwKSB7DQorICAgICAgICAgICAgbV9uT3V0cHV0cyA9IHBBcnJheTAtPkdldENvdW50KCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEFycmF5MSA9IHBEaWN0LT5HZXRBcnJheShGWF9CU1RSQygiQzEiKSk7DQorICAgIG1fcEJlZ2luVmFsdWVzID0gRlhfQWxsb2MoRlhfRkxPQVQsIG1fbk91dHB1dHMgKiAyKTsNCisgICAgbV9wRW5kVmFsdWVzID0gRlhfQWxsb2MoRlhfRkxPQVQsIG1fbk91dHB1dHMgKiAyKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX25PdXRwdXRzOyBpICsrKSB7DQorICAgICAgICBtX3BCZWdpblZhbHVlc1tpXSA9IHBBcnJheTAgPyBwQXJyYXkwLT5HZXRGbG9hdChpKSA6IDAuMGY7DQorICAgICAgICBtX3BFbmRWYWx1ZXNbaV0gPSBwQXJyYXkxID8gcEFycmF5MS0+R2V0RmxvYXQoaSkgOiAxLjBmOw0KKyAgICB9DQorICAgIG1fRXhwb25lbnQgPSBwRGljdC0+R2V0RmxvYXQoRlhfQlNUUkMoIk4iKSk7DQorICAgIG1fbk9yaWdPdXRwdXRzID0gbV9uT3V0cHV0czsNCisgICAgaWYgKG1fbk91dHB1dHMgJiYgbV9uSW5wdXRzID4gSU5UX01BWCAvIG1fbk91dHB1dHMpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX25PdXRwdXRzICo9IG1fbklucHV0czsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9FeHBJbnRGdW5jOjp2X0NhbGwoRlhfRkxPQVQqIGlucHV0cywgRlhfRkxPQVQqIHJlc3VsdHMpIGNvbnN0DQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbklucHV0czsgaSArKykNCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV9uT3JpZ091dHB1dHM7IGogKyspIHsNCisgICAgICAgICAgICByZXN1bHRzW2kgKiBtX25PcmlnT3V0cHV0cyArIGpdID0gbV9wQmVnaW5WYWx1ZXNbal0gKyAoRlhfRkxPQVQpRlhTWVNfcG93KGlucHV0c1tpXSwgbV9FeHBvbmVudCkgKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobV9wRW5kVmFsdWVzW2pdIC0gbV9wQmVnaW5WYWx1ZXNbal0pOw0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorY2xhc3MgQ1BERl9TdGl0Y2hGdW5jIDogcHVibGljIENQREZfRnVuY3Rpb24NCit7DQorcHVibGljOg0KKyAgICBDUERGX1N0aXRjaEZ1bmMoKTsNCisgICAgdmlydHVhbCB+Q1BERl9TdGl0Y2hGdW5jKCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJdl9Jbml0KENQREZfT2JqZWN0KiBwT2JqKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQl2X0NhbGwoRlhfRkxPQVQqIGlucHV0cywgRlhfRkxPQVQqIHJlc3VsdHMpIGNvbnN0Ow0KKyAgICBpbnQJCQltX25TdWJzOw0KKyAgICBDUERGX0Z1bmN0aW9uKiogbV9wU3ViRnVuY3Rpb25zOw0KKyAgICBGWF9GTE9BVCoJbV9wQm91bmRzOw0KKyAgICBGWF9GTE9BVCoJbV9wRW5jb2RlOw0KK307DQorQ1BERl9TdGl0Y2hGdW5jOjpDUERGX1N0aXRjaEZ1bmMoKQ0KK3sNCisgICAgbV9uU3VicyA9IDA7DQorICAgIG1fcFN1YkZ1bmN0aW9ucyA9IE5VTEw7DQorICAgIG1fcEJvdW5kcyA9IE5VTEw7DQorICAgIG1fcEVuY29kZSA9IE5VTEw7DQorfQ0KK0NQREZfU3RpdGNoRnVuYzo6fkNQREZfU3RpdGNoRnVuYygpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fblN1YnM7IGkgKyspDQorICAgICAgICBpZiAobV9wU3ViRnVuY3Rpb25zW2ldKSB7DQorICAgICAgICAgICAgZGVsZXRlIG1fcFN1YkZ1bmN0aW9uc1tpXTsNCisgICAgICAgIH0NCisgICAgaWYgKG1fcFN1YkZ1bmN0aW9ucykgew0KKyAgICAgICAgRlhfRnJlZShtX3BTdWJGdW5jdGlvbnMpOw0KKyAgICB9DQorICAgIGlmIChtX3BCb3VuZHMpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wQm91bmRzKTsNCisgICAgfQ0KKyAgICBpZiAobV9wRW5jb2RlKSB7DQorICAgICAgICBGWF9GcmVlKG1fcEVuY29kZSk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX1N0aXRjaEZ1bmM6OnZfSW5pdChDUERGX09iamVjdCogcE9iaikNCit7DQorICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBwT2JqLT5HZXREaWN0KCk7DQorICAgIGlmIChwRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJGdW5jdGlvbnMiKSk7DQorICAgIGlmIChwQXJyYXkgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fblN1YnMgPSBwQXJyYXktPkdldENvdW50KCk7DQorICAgIGlmIChtX25TdWJzID09IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BTdWJGdW5jdGlvbnMgPSBGWF9BbGxvYyhDUERGX0Z1bmN0aW9uKiwgbV9uU3Vicyk7DQorICAgIEZYU1lTX21lbXNldDMyKG1fcFN1YkZ1bmN0aW9ucywgMCwgc2l6ZW9mKENQREZfRnVuY3Rpb24qKSptX25TdWJzKTsNCisgICAgbV9uT3V0cHV0cyA9IDA7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9uU3ViczsgaSArKykgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBTdWIgPSBwQXJyYXktPkdldEVsZW1lbnRWYWx1ZShpKTsNCisgICAgICAgIGlmIChwU3ViID09IHBPYmopIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX3BTdWJGdW5jdGlvbnNbaV0gPSBDUERGX0Z1bmN0aW9uOjpMb2FkKHBTdWIpOw0KKyAgICAgICAgaWYgKG1fcFN1YkZ1bmN0aW9uc1tpXSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fcFN1YkZ1bmN0aW9uc1tpXS0+Q291bnRPdXRwdXRzKCkgPiBtX25PdXRwdXRzKSB7DQorICAgICAgICAgICAgbV9uT3V0cHV0cyA9IG1fcFN1YkZ1bmN0aW9uc1tpXS0+Q291bnRPdXRwdXRzKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wQm91bmRzID0gRlhfQWxsb2MoRlhfRkxPQVQsIG1fblN1YnMgKyAxKTsNCisgICAgbV9wQm91bmRzWzBdID0gbV9wRG9tYWluc1swXTsNCisgICAgcEFycmF5ID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJCb3VuZHMiKSk7DQorICAgIGlmIChwQXJyYXkgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX25TdWJzIC0gMTsgaSArKykgew0KKyAgICAgICAgbV9wQm91bmRzW2kgKyAxXSA9IHBBcnJheS0+R2V0RmxvYXQoaSk7DQorICAgIH0NCisgICAgbV9wQm91bmRzW21fblN1YnNdID0gbV9wRG9tYWluc1sxXTsNCisgICAgbV9wRW5jb2RlID0gRlhfQWxsb2MoRlhfRkxPQVQsIG1fblN1YnMgKiAyKTsNCisgICAgcEFycmF5ID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJFbmNvZGUiKSk7DQorICAgIGlmIChwQXJyYXkgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX25TdWJzICogMjsgaSArKykgew0KKyAgICAgICAgbV9wRW5jb2RlW2ldID0gcEFycmF5LT5HZXRGbG9hdChpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX1N0aXRjaEZ1bmM6OnZfQ2FsbChGWF9GTE9BVCogaW5wdXRzLCBGWF9GTE9BVCogb3V0cHV0cykgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUIGlucHV0ID0gaW5wdXRzWzBdOw0KKyAgICBpbnQgaTsNCisgICAgZm9yIChpID0gMDsgaSA8IG1fblN1YnMgLSAxOyBpICsrKQ0KKyAgICAgICAgaWYgKGlucHV0IDwgbV9wQm91bmRzW2kgKyAxXSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICBpZiAobV9wU3ViRnVuY3Rpb25zW2ldID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpbnB1dCA9IFBERl9JbnRlcnBvbGF0ZShpbnB1dCwgbV9wQm91bmRzW2ldLCBtX3BCb3VuZHNbaSArIDFdLCBtX3BFbmNvZGVbaSAqIDJdLCBtX3BFbmNvZGVbaSAqIDIgKyAxXSk7DQorICAgIGludCBucmVzdWx0czsNCisgICAgbV9wU3ViRnVuY3Rpb25zW2ldLT5DYWxsKCZpbnB1dCwgbV9uSW5wdXRzLCBvdXRwdXRzLCBucmVzdWx0cyk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDUERGX0Z1bmN0aW9uKiBDUERGX0Z1bmN0aW9uOjpMb2FkKENQREZfT2JqZWN0KiBwRnVuY09iaikNCit7DQorICAgIGlmIChwRnVuY09iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0Z1bmN0aW9uKiBwRnVuYyA9IE5VTEw7DQorICAgIGludCB0eXBlOw0KKyAgICBpZiAocEZ1bmNPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICB0eXBlID0gKChDUERGX1N0cmVhbSopcEZ1bmNPYmopLT5HZXREaWN0KCktPkdldEludGVnZXIoRlhfQlNUUkMoIkZ1bmN0aW9uVHlwZSIpKTsNCisgICAgfSBlbHNlIGlmIChwRnVuY09iai0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICB0eXBlID0gKChDUERGX0RpY3Rpb25hcnkqKXBGdW5jT2JqKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiRnVuY3Rpb25UeXBlIikpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKHR5cGUgPT0gMCkgew0KKyAgICAgICAgcEZ1bmMgPSBGWF9ORVcgQ1BERl9TYW1wbGVkRnVuYzsNCisgICAgfSBlbHNlIGlmICh0eXBlID09IDIpIHsNCisgICAgICAgIHBGdW5jID0gRlhfTkVXIENQREZfRXhwSW50RnVuYzsNCisgICAgfSBlbHNlIGlmICh0eXBlID09IDMpIHsNCisgICAgICAgIHBGdW5jID0gRlhfTkVXIENQREZfU3RpdGNoRnVuYzsNCisgICAgfSBlbHNlIGlmICh0eXBlID09IDQpIHsNCisgICAgICAgIHBGdW5jID0gRlhfTkVXIENQREZfUFNGdW5jOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKCFwRnVuYy0+SW5pdChwRnVuY09iaikpIHsNCisgICAgICAgIGRlbGV0ZSBwRnVuYzsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBwRnVuYzsNCit9DQorQ1BERl9GdW5jdGlvbjo6Q1BERl9GdW5jdGlvbigpDQorew0KKyAgICBtX3BEb21haW5zID0gTlVMTDsNCisgICAgbV9wUmFuZ2VzID0gTlVMTDsNCit9DQorQ1BERl9GdW5jdGlvbjo6fkNQREZfRnVuY3Rpb24oKQ0KK3sNCisgICAgaWYgKG1fcERvbWFpbnMpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wRG9tYWlucyk7DQorICAgICAgICBtX3BEb21haW5zID0gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAobV9wUmFuZ2VzKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFJhbmdlcyk7DQorICAgICAgICBtX3BSYW5nZXMgPSBOVUxMOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9GdW5jdGlvbjo6SW5pdChDUERGX09iamVjdCogcE9iaikNCit7DQorICAgIENQREZfRGljdGlvbmFyeSogcERpY3Q7DQorICAgIGlmIChwT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgcERpY3QgPSAoKENQREZfU3RyZWFtKilwT2JqKS0+R2V0RGljdCgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcERpY3QgPSAoQ1BERl9EaWN0aW9uYXJ5KilwT2JqOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBEb21haW5zID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJEb21haW4iKSk7DQorICAgIGlmIChwRG9tYWlucyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9uSW5wdXRzID0gcERvbWFpbnMtPkdldENvdW50KCkgLyAyOw0KKyAgICBpZiAobV9uSW5wdXRzID09IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BEb21haW5zID0gRlhfQWxsb2MoRlhfRkxPQVQsIG1fbklucHV0cyAqIDIpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbklucHV0cyAqIDI7IGkgKyspIHsNCisgICAgICAgIG1fcERvbWFpbnNbaV0gPSBwRG9tYWlucy0+R2V0RmxvYXQoaSk7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcFJhbmdlcyA9IHBEaWN0LT5HZXRBcnJheShGWF9CU1RSQygiUmFuZ2UiKSk7DQorICAgIG1fbk91dHB1dHMgPSAwOw0KKyAgICBpZiAocFJhbmdlcykgew0KKyAgICAgICAgbV9uT3V0cHV0cyA9IHBSYW5nZXMtPkdldENvdW50KCkgLyAyOw0KKyAgICAgICAgbV9wUmFuZ2VzID0gRlhfQWxsb2MoRlhfRkxPQVQsIG1fbk91dHB1dHMgKiAyKTsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9uT3V0cHV0cyAqIDI7IGkgKyspIHsNCisgICAgICAgICAgICBtX3BSYW5nZXNbaV0gPSBwUmFuZ2VzLT5HZXRGbG9hdChpKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9EV09SRCBvbGRfb3V0cHV0cyA9IG1fbk91dHB1dHM7DQorICAgIEZYX0JPT0wgcmV0ID0gdl9Jbml0KHBPYmopOw0KKyAgICBpZiAobV9wUmFuZ2VzICYmIG1fbk91dHB1dHMgPiAoaW50KW9sZF9vdXRwdXRzKSB7DQorICAgICAgICBtX3BSYW5nZXMgPSBGWF9SZWFsbG9jKEZYX0ZMT0FULCBtX3BSYW5nZXMsIG1fbk91dHB1dHMgKiAyKTsNCisgICAgICAgIGlmIChtX3BSYW5nZXMpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1zZXQzMihtX3BSYW5nZXMgKyAob2xkX291dHB1dHMgKiAyKSwgMCwgc2l6ZW9mKEZYX0ZMT0FUKSAqIChtX25PdXRwdXRzIC0gb2xkX291dHB1dHMpICogMik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHJldDsNCit9DQorRlhfQk9PTCBDUERGX0Z1bmN0aW9uOjpDYWxsKEZYX0ZMT0FUKiBpbnB1dHMsIGludCBuaW5wdXRzLCBGWF9GTE9BVCogcmVzdWx0cywgaW50JiBucmVzdWx0cykgY29uc3QNCit7DQorICAgIGlmIChtX25JbnB1dHMgIT0gbmlucHV0cykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG5yZXN1bHRzID0gbV9uT3V0cHV0czsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX25JbnB1dHM7IGkgKyspIHsNCisgICAgICAgIGlmIChpbnB1dHNbaV0gPCBtX3BEb21haW5zW2kgKiAyXSkgew0KKyAgICAgICAgICAgIGlucHV0c1tpXSA9IG1fcERvbWFpbnNbaSAqIDJdOw0KKyAgICAgICAgfSBlbHNlIGlmIChpbnB1dHNbaV0gPiBtX3BEb21haW5zW2kgKiAyICsgMV0pIHsNCisgICAgICAgICAgICBpbnB1dHNbaV0gPSBtX3BEb21haW5zW2kgKiAyXSArIDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgdl9DYWxsKGlucHV0cywgcmVzdWx0cyk7DQorICAgIGlmIChtX3BSYW5nZXMpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9uT3V0cHV0czsgaSArKykgew0KKyAgICAgICAgICAgIGlmIChyZXN1bHRzW2ldIDwgbV9wUmFuZ2VzW2kgKiAyXSkgew0KKyAgICAgICAgICAgICAgICByZXN1bHRzW2ldID0gbV9wUmFuZ2VzW2kgKiAyXTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdHNbaV0gPiBtX3BSYW5nZXNbaSAqIDIgKyAxXSkgew0KKyAgICAgICAgICAgICAgICByZXN1bHRzW2ldID0gbV9wUmFuZ2VzW2kgKiAyICsgMV07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2VfZ3JhcGhfc3RhdGUuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX2dyYXBoX3N0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTExNWU2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX2dyYXBoX3N0YXRlLmNwcApAQCAtMCwwICsxLDcwNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZW9iai5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcmVuZGVyLmgiDQorI2luY2x1ZGUgInBhZ2VpbnQuaCINCisjaW5jbHVkZSAiLi4vZnBkZl9yZW5kZXIvcmVuZGVyX2ludC5oIg0KK3ZvaWQgQ1BERl9HcmFwaGljU3RhdGVzOjpEZWZhdWx0U3RhdGVzKCkNCit7DQorICAgIG1fQ29sb3JTdGF0ZS5OZXcoKS0+RGVmYXVsdCgpOw0KK30NCit2b2lkIENQREZfR3JhcGhpY1N0YXRlczo6Q29weVN0YXRlcyhjb25zdCBDUERGX0dyYXBoaWNTdGF0ZXMmIHNyYykNCit7DQorICAgIG1fQ2xpcFBhdGggPSBzcmMubV9DbGlwUGF0aDsNCisgICAgbV9HcmFwaFN0YXRlID0gc3JjLm1fR3JhcGhTdGF0ZTsNCisgICAgbV9Db2xvclN0YXRlID0gc3JjLm1fQ29sb3JTdGF0ZTsNCisgICAgbV9UZXh0U3RhdGUgPSBzcmMubV9UZXh0U3RhdGU7DQorICAgIG1fR2VuZXJhbFN0YXRlID0gc3JjLm1fR2VuZXJhbFN0YXRlOw0KK30NCitDUERGX0NsaXBQYXRoRGF0YTo6Q1BERl9DbGlwUGF0aERhdGEoKQ0KK3sNCisgICAgbV9QYXRoQ291bnQgPSAwOw0KKyAgICBtX3BQYXRoTGlzdCA9IE5VTEw7DQorICAgIG1fcFR5cGVMaXN0ID0gTlVMTDsNCisgICAgbV9UZXh0Q291bnQgPSAwOw0KKyAgICBtX3BUZXh0TGlzdCA9IE5VTEw7DQorfQ0KK0NQREZfQ2xpcFBhdGhEYXRhOjp+Q1BERl9DbGlwUGF0aERhdGEoKQ0KK3sNCisgICAgaW50IGk7DQorICAgIGlmIChtX3BQYXRoTGlzdCkgew0KKyAgICAgICAgRlhfREVMRVRFX1ZFQ1RPUihtX3BQYXRoTGlzdCwgQ1BERl9QYXRoLCBtX1BhdGhDb3VudCk7DQorICAgIH0NCisgICAgaWYgKG1fcFR5cGVMaXN0KSB7DQorICAgICAgICBGWF9GcmVlKG1fcFR5cGVMaXN0KTsNCisgICAgfQ0KKyAgICBmb3IgKGkgPSBtX1RleHRDb3VudCAtIDE7IGkgPiAtMTsgaSAtLSkNCisgICAgICAgIGlmIChtX3BUZXh0TGlzdFtpXSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBtX3BUZXh0TGlzdFtpXTsNCisgICAgICAgIH0NCisgICAgaWYgKG1fcFRleHRMaXN0KSB7DQorICAgICAgICBGWF9GcmVlKG1fcFRleHRMaXN0KTsNCisgICAgfQ0KK30NCitDUERGX0NsaXBQYXRoRGF0YTo6Q1BERl9DbGlwUGF0aERhdGEoY29uc3QgQ1BERl9DbGlwUGF0aERhdGEmIHNyYykNCit7DQorICAgIG1fcFBhdGhMaXN0ID0gTlVMTDsNCisgICAgbV9wUGF0aExpc3QgPSBOVUxMOw0KKyAgICBtX3BUZXh0TGlzdCA9IE5VTEw7DQorICAgIG1fUGF0aENvdW50ID0gc3JjLm1fUGF0aENvdW50Ow0KKyAgICBpZiAobV9QYXRoQ291bnQpIHsNCisgICAgICAgIGludCBhbGxvY19zaXplID0gbV9QYXRoQ291bnQ7DQorICAgICAgICBpZiAoYWxsb2Nfc2l6ZSAlIDgpIHsNCisgICAgICAgICAgICBhbGxvY19zaXplICs9IDggLSAoYWxsb2Nfc2l6ZSAlIDgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfTkVXX1ZFQ1RPUihtX3BQYXRoTGlzdCwgQ1BERl9QYXRoLCBhbGxvY19zaXplKTsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9QYXRoQ291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICBtX3BQYXRoTGlzdFtpXSA9IHNyYy5tX3BQYXRoTGlzdFtpXTsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFR5cGVMaXN0ID0gRlhfQWxsb2MoRlhfQllURSwgYWxsb2Nfc2l6ZSk7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BUeXBlTGlzdCwgc3JjLm1fcFR5cGVMaXN0LCBtX1BhdGhDb3VudCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BQYXRoTGlzdCA9IE5VTEw7DQorICAgICAgICBtX3BUeXBlTGlzdCA9IE5VTEw7DQorICAgIH0NCisgICAgbV9UZXh0Q291bnQgPSBzcmMubV9UZXh0Q291bnQ7DQorICAgIGlmIChtX1RleHRDb3VudCkgew0KKyAgICAgICAgbV9wVGV4dExpc3QgPSBGWF9BbGxvYyhDUERGX1RleHRPYmplY3QqLCBtX1RleHRDb3VudCk7DQorICAgICAgICBGWFNZU19tZW1zZXQzMihtX3BUZXh0TGlzdCwgMCwgc2l6ZW9mKENQREZfVGV4dE9iamVjdCopICogbV9UZXh0Q291bnQpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX1RleHRDb3VudDsgaSArKykgew0KKyAgICAgICAgICAgIGlmIChzcmMubV9wVGV4dExpc3RbaV0pIHsNCisgICAgICAgICAgICAgICAgbV9wVGV4dExpc3RbaV0gPSBGWF9ORVcgQ1BERl9UZXh0T2JqZWN0Ow0KKyAgICAgICAgICAgICAgICBtX3BUZXh0TGlzdFtpXS0+Q29weShzcmMubV9wVGV4dExpc3RbaV0pOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG1fcFRleHRMaXN0W2ldID0gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BUZXh0TGlzdCA9IE5VTEw7DQorICAgIH0NCit9DQordm9pZCBDUERGX0NsaXBQYXRoRGF0YTo6U2V0Q291bnQoaW50IHBhdGhfY291bnQsIGludCB0ZXh0X2NvdW50KQ0KK3sNCisgICAgQVNTRVJUKG1fVGV4dENvdW50ID09IDAgJiYgbV9QYXRoQ291bnQgPT0gMCk7DQorICAgIGlmIChwYXRoX2NvdW50KSB7DQorICAgICAgICBtX1BhdGhDb3VudCA9IHBhdGhfY291bnQ7DQorICAgICAgICBpbnQgYWxsb2Nfc2l6ZSA9IChwYXRoX2NvdW50ICsgNykgLyA4ICogODsNCisgICAgICAgIEZYX05FV19WRUNUT1IobV9wUGF0aExpc3QsIENQREZfUGF0aCwgYWxsb2Nfc2l6ZSk7DQorICAgICAgICBtX3BUeXBlTGlzdCA9IEZYX0FsbG9jKEZYX0JZVEUsIGFsbG9jX3NpemUpOw0KKyAgICB9DQorICAgIGlmICh0ZXh0X2NvdW50KSB7DQorICAgICAgICBtX1RleHRDb3VudCA9IHRleHRfY291bnQ7DQorICAgICAgICBtX3BUZXh0TGlzdCA9IEZYX0FsbG9jKENQREZfVGV4dE9iamVjdCosIHRleHRfY291bnQpOw0KKyAgICAgICAgRlhTWVNfbWVtc2V0MzIobV9wVGV4dExpc3QsIDAsIHNpemVvZih2b2lkKikgKiB0ZXh0X2NvdW50KTsNCisgICAgfQ0KK30NCitDUERGX1JlY3QgQ1BERl9DbGlwUGF0aDo6R2V0Q2xpcEJveCgpIGNvbnN0DQorew0KKyAgICBDUERGX1JlY3QgcmVjdDsNCisgICAgRlhfQk9PTCBiU3RhcnRlZCA9IEZBTFNFOw0KKyAgICBpbnQgY291bnQgPSBHZXRQYXRoQ291bnQoKTsNCisgICAgaWYgKGNvdW50KSB7DQorICAgICAgICByZWN0ID0gR2V0UGF0aCgwKS5HZXRCb3VuZGluZ0JveCgpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBjb3VudDsgaSArKykgew0KKyAgICAgICAgICAgIENQREZfUmVjdCBwYXRoX3JlY3QgPSBHZXRQYXRoKGkpLkdldEJvdW5kaW5nQm94KCk7DQorICAgICAgICAgICAgcmVjdC5JbnRlcnNlY3QocGF0aF9yZWN0KTsNCisgICAgICAgIH0NCisgICAgICAgIGJTdGFydGVkID0gVFJVRTsNCisgICAgfQ0KKyAgICBjb3VudCA9IEdldFRleHRDb3VudCgpOw0KKyAgICBpZiAoY291bnQpIHsNCisgICAgICAgIENQREZfUmVjdCBsYXllcl9yZWN0Ow0KKyAgICAgICAgRlhfQk9PTCBiTGF5ZXJTdGFydGVkID0gRkFMU0U7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpICsrKSB7DQorICAgICAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dE9iaiA9IEdldFRleHQoaSk7DQorICAgICAgICAgICAgaWYgKHBUZXh0T2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgaWYgKCFiU3RhcnRlZCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmVjdCA9IGxheWVyX3JlY3Q7DQorICAgICAgICAgICAgICAgICAgICBiU3RhcnRlZCA9IFRSVUU7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICByZWN0LkludGVyc2VjdChsYXllcl9yZWN0KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBiTGF5ZXJTdGFydGVkID0gRkFMU0U7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYgKCFiTGF5ZXJTdGFydGVkKSB7DQorICAgICAgICAgICAgICAgICAgICBsYXllcl9yZWN0ID0gcFRleHRPYmotPkdldEJCb3goTlVMTCk7DQorICAgICAgICAgICAgICAgICAgICBiTGF5ZXJTdGFydGVkID0gVFJVRTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGxheWVyX3JlY3QuVW5pb24ocFRleHRPYmotPkdldEJCb3goTlVMTCkpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiByZWN0Ow0KK30NCit2b2lkIENQREZfQ2xpcFBhdGg6OkFwcGVuZFBhdGgoQ1BERl9QYXRoIHBhdGgsIGludCB0eXBlLCBGWF9CT09MIGJBdXRvTWVyZ2UpDQorew0KKyAgICBDUERGX0NsaXBQYXRoRGF0YSogcERhdGEgPSBHZXRNb2RpZnkoKTsNCisgICAgaWYgKHBEYXRhLT5tX1BhdGhDb3VudCAmJiBiQXV0b01lcmdlKSB7DQorICAgICAgICBDUERGX1BhdGggb2xkX3BhdGggPSBwRGF0YS0+bV9wUGF0aExpc3RbcERhdGEtPm1fUGF0aENvdW50IC0gMV07DQorICAgICAgICBpZiAob2xkX3BhdGguSXNSZWN0KCkpIHsNCisgICAgICAgICAgICBDUERGX1JlY3Qgb2xkX3JlY3Qob2xkX3BhdGguR2V0UG9pbnRYKDApLCBvbGRfcGF0aC5HZXRQb2ludFkoMCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9wYXRoLkdldFBvaW50WCgyKSwgb2xkX3BhdGguR2V0UG9pbnRZKDIpKTsNCisgICAgICAgICAgICBDUERGX1JlY3QgbmV3X3JlY3QgPSBwYXRoLkdldEJvdW5kaW5nQm94KCk7DQorICAgICAgICAgICAgaWYgKG9sZF9yZWN0LkNvbnRhaW5zKG5ld19yZWN0KSkgew0KKyAgICAgICAgICAgICAgICBwRGF0YS0+bV9QYXRoQ291bnQgLS07DQorICAgICAgICAgICAgICAgIHBEYXRhLT5tX3BQYXRoTGlzdFtwRGF0YS0+bV9QYXRoQ291bnRdLlNldE51bGwoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBEYXRhLT5tX1BhdGhDb3VudCAlIDggPT0gMCkgew0KKyAgICAgICAgQ1BERl9QYXRoKiBwTmV3UGF0aDsNCisgICAgICAgIEZYX05FV19WRUNUT1IocE5ld1BhdGgsIENQREZfUGF0aCwgcERhdGEtPm1fUGF0aENvdW50ICsgOCk7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBEYXRhLT5tX1BhdGhDb3VudDsgaSArKykgew0KKyAgICAgICAgICAgIHBOZXdQYXRoW2ldID0gcERhdGEtPm1fcFBhdGhMaXN0W2ldOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBEYXRhLT5tX3BQYXRoTGlzdCkgew0KKyAgICAgICAgICAgIEZYX0RFTEVURV9WRUNUT1IocERhdGEtPm1fcFBhdGhMaXN0LCBDUERGX1BhdGgsIHBEYXRhLT5tX1BhdGhDb3VudCk7DQorICAgICAgICB9DQorICAgICAgICBGWF9CWVRFKiBwTmV3VHlwZSA9IEZYX0FsbG9jKEZYX0JZVEUsIHBEYXRhLT5tX1BhdGhDb3VudCArIDgpOw0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIocE5ld1R5cGUsIHBEYXRhLT5tX3BUeXBlTGlzdCwgcERhdGEtPm1fUGF0aENvdW50KTsNCisgICAgICAgIGlmIChwRGF0YS0+bV9wVHlwZUxpc3QpIHsNCisgICAgICAgICAgICBGWF9GcmVlKHBEYXRhLT5tX3BUeXBlTGlzdCk7DQorICAgICAgICB9DQorICAgICAgICBwRGF0YS0+bV9wUGF0aExpc3QgPSBwTmV3UGF0aDsNCisgICAgICAgIHBEYXRhLT5tX3BUeXBlTGlzdCA9IHBOZXdUeXBlOw0KKyAgICB9DQorICAgIHBEYXRhLT5tX3BQYXRoTGlzdFtwRGF0YS0+bV9QYXRoQ291bnRdID0gcGF0aDsNCisgICAgcERhdGEtPm1fcFR5cGVMaXN0W3BEYXRhLT5tX1BhdGhDb3VudF0gPSAoRlhfQllURSl0eXBlOw0KKyAgICBwRGF0YS0+bV9QYXRoQ291bnQgKys7DQorfQ0KK3ZvaWQgQ1BERl9DbGlwUGF0aDo6RGVsZXRlUGF0aChpbnQgaW5kZXgpDQorew0KKyAgICBDUERGX0NsaXBQYXRoRGF0YSogcERhdGEgPSBHZXRNb2RpZnkoKTsNCisgICAgaWYgKGluZGV4ID49IHBEYXRhLT5tX1BhdGhDb3VudCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHBEYXRhLT5tX3BQYXRoTGlzdFtpbmRleF0uU2V0TnVsbCgpOw0KKyAgICBmb3IgKGludCBpID0gaW5kZXg7IGkgPCBwRGF0YS0+bV9QYXRoQ291bnQgLSAxOyBpICsrKSB7DQorICAgICAgICBwRGF0YS0+bV9wUGF0aExpc3RbaV0gPSBwRGF0YS0+bV9wUGF0aExpc3RbaSArIDFdOw0KKyAgICB9DQorICAgIHBEYXRhLT5tX3BQYXRoTGlzdFtwRGF0YS0+bV9QYXRoQ291bnQgLSAxXS5TZXROdWxsKCk7DQorICAgIEZYU1lTX21lbW1vdmUzMihwRGF0YS0+bV9wVHlwZUxpc3QgKyBpbmRleCwgcERhdGEtPm1fcFR5cGVMaXN0ICsgaW5kZXggKyAxLCBwRGF0YS0+bV9QYXRoQ291bnQgLSBpbmRleCAtIDEpOw0KKyAgICBwRGF0YS0+bV9QYXRoQ291bnQgLS07DQorfQ0KKyNkZWZpbmUgRlBERl9DTElQUEFUSF9NQVhfVEVYVFMgMTAyNA0KK3ZvaWQgQ1BERl9DbGlwUGF0aDo6QXBwZW5kVGV4dHMoQ1BERl9UZXh0T2JqZWN0KiogcFRleHRzLCBpbnQgY291bnQpDQorew0KKyAgICBDUERGX0NsaXBQYXRoRGF0YSogcERhdGEgPSBHZXRNb2RpZnkoKTsNCisgICAgaWYgKHBEYXRhLT5tX1RleHRDb3VudCArIGNvdW50ID4gRlBERl9DTElQUEFUSF9NQVhfVEVYVFMpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICBwVGV4dHNbaV0tPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX1RleHRPYmplY3QqKiBwTmV3TGlzdCA9IEZYX0FsbG9jKENQREZfVGV4dE9iamVjdCosIHBEYXRhLT5tX1RleHRDb3VudCArIGNvdW50ICsgMSk7DQorICAgIGlmIChwRGF0YS0+bV9wVGV4dExpc3QpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKHBOZXdMaXN0LCBwRGF0YS0+bV9wVGV4dExpc3QsIHBEYXRhLT5tX1RleHRDb3VudCAqIHNpemVvZihDUERGX1RleHRPYmplY3QqKSk7DQorICAgICAgICBGWF9GcmVlKHBEYXRhLT5tX3BUZXh0TGlzdCk7DQorICAgIH0NCisgICAgcERhdGEtPm1fcFRleHRMaXN0ID0gcE5ld0xpc3Q7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsNCisgICAgICAgIHBEYXRhLT5tX3BUZXh0TGlzdFtwRGF0YS0+bV9UZXh0Q291bnQgKyBpXSA9IHBUZXh0c1tpXTsNCisgICAgfQ0KKyAgICBwRGF0YS0+bV9wVGV4dExpc3RbcERhdGEtPm1fVGV4dENvdW50ICsgY291bnRdID0gTlVMTDsNCisgICAgcERhdGEtPm1fVGV4dENvdW50ICs9IGNvdW50ICsgMTsNCit9DQordm9pZCBDUERGX0NsaXBQYXRoOjpUcmFuc2Zvcm0oY29uc3QgQ1BERl9NYXRyaXgmIG1hdHJpeCkNCit7DQorICAgIENQREZfQ2xpcFBhdGhEYXRhKiBwRGF0YSA9IEdldE1vZGlmeSgpOw0KKyAgICBpbnQgaTsNCisgICAgZm9yIChpID0gMDsgaSA8IHBEYXRhLT5tX1BhdGhDb3VudDsgaSArKykgew0KKyAgICAgICAgcERhdGEtPm1fcFBhdGhMaXN0W2ldLlRyYW5zZm9ybSgmbWF0cml4KTsNCisgICAgfQ0KKyAgICBmb3IgKGkgPSAwOyBpIDwgcERhdGEtPm1fVGV4dENvdW50OyBpICsrKQ0KKyAgICAgICAgaWYgKHBEYXRhLT5tX3BUZXh0TGlzdFtpXSkgew0KKyAgICAgICAgICAgIHBEYXRhLT5tX3BUZXh0TGlzdFtpXS0+VHJhbnNmb3JtKG1hdHJpeCk7DQorICAgICAgICB9DQorfQ0KK0NQREZfQ29sb3JTdGF0ZURhdGE6OkNQREZfQ29sb3JTdGF0ZURhdGEoY29uc3QgQ1BERl9Db2xvclN0YXRlRGF0YSYgc3JjKQ0KK3sNCisgICAgbV9GaWxsQ29sb3IuQ29weSgmc3JjLm1fRmlsbENvbG9yKTsNCisgICAgbV9GaWxsUkdCID0gc3JjLm1fRmlsbFJHQjsNCisgICAgbV9TdHJva2VDb2xvci5Db3B5KCZzcmMubV9TdHJva2VDb2xvcik7DQorICAgIG1fU3Ryb2tlUkdCID0gc3JjLm1fU3Ryb2tlUkdCOw0KK30NCit2b2lkIENQREZfQ29sb3JTdGF0ZURhdGE6OkRlZmF1bHQoKQ0KK3sNCisgICAgbV9GaWxsUkdCID0gbV9TdHJva2VSR0IgPSAwOw0KKyAgICBtX0ZpbGxDb2xvci5TZXRDb2xvclNwYWNlKENQREZfQ29sb3JTcGFjZTo6R2V0U3RvY2tDUyhQREZDU19ERVZJQ0VHUkFZKSk7DQorICAgIG1fU3Ryb2tlQ29sb3IuU2V0Q29sb3JTcGFjZShDUERGX0NvbG9yU3BhY2U6OkdldFN0b2NrQ1MoUERGQ1NfREVWSUNFR1JBWSkpOw0KK30NCit2b2lkIENQREZfQ29sb3JTdGF0ZTo6U2V0RmlsbENvbG9yKENQREZfQ29sb3JTcGFjZSogcENTLCBGWF9GTE9BVCogcFZhbHVlLCBpbnQgblZhbHVlcykNCit7DQorICAgIENQREZfQ29sb3JTdGF0ZURhdGEqIHBEYXRhID0gR2V0TW9kaWZ5KCk7DQorICAgIFNldENvbG9yKHBEYXRhLT5tX0ZpbGxDb2xvciwgcERhdGEtPm1fRmlsbFJHQiwgcENTLCBwVmFsdWUsIG5WYWx1ZXMpOw0KK30NCit2b2lkIENQREZfQ29sb3JTdGF0ZTo6U2V0U3Ryb2tlQ29sb3IoQ1BERl9Db2xvclNwYWNlKiBwQ1MsIEZYX0ZMT0FUKiBwVmFsdWUsIGludCBuVmFsdWVzKQ0KK3sNCisgICAgQ1BERl9Db2xvclN0YXRlRGF0YSogcERhdGEgPSBHZXRNb2RpZnkoKTsNCisgICAgU2V0Q29sb3IocERhdGEtPm1fU3Ryb2tlQ29sb3IsIHBEYXRhLT5tX1N0cm9rZVJHQiwgcENTLCBwVmFsdWUsIG5WYWx1ZXMpOw0KK30NCit2b2lkIENQREZfQ29sb3JTdGF0ZTo6U2V0Q29sb3IoQ1BERl9Db2xvciYgY29sb3IsIEZYX0RXT1JEJiByZ2IsIENQREZfQ29sb3JTcGFjZSogcENTLCBGWF9GTE9BVCogcFZhbHVlLCBpbnQgblZhbHVlcykNCit7DQorICAgIGlmIChwQ1MpIHsNCisgICAgICAgIGNvbG9yLlNldENvbG9yU3BhY2UocENTKTsNCisgICAgfSBlbHNlIGlmIChjb2xvci5Jc051bGwoKSkgew0KKyAgICAgICAgY29sb3IuU2V0Q29sb3JTcGFjZShDUERGX0NvbG9yU3BhY2U6OkdldFN0b2NrQ1MoUERGQ1NfREVWSUNFR1JBWSkpOw0KKyAgICB9DQorICAgIGlmIChjb2xvci5tX3BDUy0+Q291bnRDb21wb25lbnRzKCkgPiBuVmFsdWVzKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgY29sb3IuU2V0VmFsdWUocFZhbHVlKTsNCisgICAgaW50IFIsIEcsIEI7DQorICAgIHJnYiA9IGNvbG9yLkdldFJHQihSLCBHLCBCKSA/IEZYU1lTX1JHQihSLCBHLCBCKSA6IChGWF9EV09SRCkgLSAxOw0KK30NCit2b2lkIENQREZfQ29sb3JTdGF0ZTo6U2V0RmlsbFBhdHRlcm4oQ1BERl9QYXR0ZXJuKiBwUGF0dGVybiwgRlhfRkxPQVQqIHBWYWx1ZSwgaW50IG5WYWx1ZXMpDQorew0KKyAgICBDUERGX0NvbG9yU3RhdGVEYXRhKiBwRGF0YSA9IEdldE1vZGlmeSgpOw0KKyAgICBwRGF0YS0+bV9GaWxsQ29sb3IuU2V0VmFsdWUocFBhdHRlcm4sIHBWYWx1ZSwgblZhbHVlcyk7DQorICAgIGludCBSLCBHLCBCOw0KKyAgICBGWF9CT09MIHJldCA9IHBEYXRhLT5tX0ZpbGxDb2xvci5HZXRSR0IoUiwgRywgQik7DQorICAgIGlmIChwUGF0dGVybi0+bV9QYXR0ZXJuVHlwZSA9PSAxICYmICgoQ1BERl9UaWxpbmdQYXR0ZXJuKilwUGF0dGVybiktPm1fYkNvbG9yZWQgJiYgIXJldCkgew0KKyAgICAgICAgcERhdGEtPm1fRmlsbFJHQiA9IDB4MDBCRkJGQkY7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcERhdGEtPm1fRmlsbFJHQiA9IHJldCA/IEZYU1lTX1JHQihSLCBHLCBCKSA6IChGWF9EV09SRCkgLSAxOw0KK30NCit2b2lkIENQREZfQ29sb3JTdGF0ZTo6U2V0U3Ryb2tlUGF0dGVybihDUERGX1BhdHRlcm4qIHBQYXR0ZXJuLCBGWF9GTE9BVCogcFZhbHVlLCBpbnQgblZhbHVlcykNCit7DQorICAgIENQREZfQ29sb3JTdGF0ZURhdGEqIHBEYXRhID0gR2V0TW9kaWZ5KCk7DQorICAgIHBEYXRhLT5tX1N0cm9rZUNvbG9yLlNldFZhbHVlKHBQYXR0ZXJuLCBwVmFsdWUsIG5WYWx1ZXMpOw0KKyAgICBpbnQgUiwgRywgQjsNCisgICAgRlhfQk9PTCByZXQgPSBwRGF0YS0+bV9TdHJva2VDb2xvci5HZXRSR0IoUiwgRywgQik7DQorICAgIGlmIChwUGF0dGVybi0+bV9QYXR0ZXJuVHlwZSA9PSAxICYmICgoQ1BERl9UaWxpbmdQYXR0ZXJuKilwUGF0dGVybiktPm1fYkNvbG9yZWQgJiYgIXJldCkgew0KKyAgICAgICAgcERhdGEtPm1fU3Ryb2tlUkdCID0gMHgwMEJGQkZCRjsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBwRGF0YS0+bV9TdHJva2VSR0IgPSBwRGF0YS0+bV9TdHJva2VDb2xvci5HZXRSR0IoUiwgRywgQikgPyBGWFNZU19SR0IoUiwgRywgQikgOiAoRlhfRFdPUkQpIC0gMTsNCit9DQorQ1BERl9UZXh0U3RhdGVEYXRhOjpDUERGX1RleHRTdGF0ZURhdGEoKQ0KK3sNCisgICAgbV9wRm9udCA9IE5VTEw7DQorICAgIG1fRm9udFNpemUgPSAxLjBmOw0KKyAgICBtX1dvcmRTcGFjZSA9IDA7DQorICAgIG1fQ2hhclNwYWNlID0gMDsNCisgICAgbV9UZXh0TW9kZSA9IDA7DQorICAgIG1fTWF0cml4WzBdID0gbV9NYXRyaXhbM10gPSAxLjBmOw0KKyAgICBtX01hdHJpeFsxXSA9IG1fTWF0cml4WzJdID0gMDsNCisgICAgbV9DVE1bMF0gPSBtX0NUTVszXSA9IDEuMGY7DQorICAgIG1fQ1RNWzFdID0gbV9DVE1bMl0gPSAwOw0KK30NCitDUERGX1RleHRTdGF0ZURhdGE6OkNQREZfVGV4dFN0YXRlRGF0YShjb25zdCBDUERGX1RleHRTdGF0ZURhdGEmIHNyYykNCit7DQorICAgIEZYU1lTX21lbWNweTMyKHRoaXMsICZzcmMsIHNpemVvZihDUERGX1RleHRTdGF0ZURhdGEpKTsNCisgICAgaWYgKG1fcEZvbnQgJiYgbV9wRm9udC0+bV9wRG9jdW1lbnQpIHsNCisgICAgICAgIG1fcEZvbnQgPSBtX3BGb250LT5tX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKS0+R2V0Rm9udChtX3BGb250LT5HZXRGb250RGljdCgpLCBGQUxTRSk7DQorICAgIH0NCit9DQorQ1BERl9UZXh0U3RhdGVEYXRhOjp+Q1BERl9UZXh0U3RhdGVEYXRhKCkNCit7DQorICAgIENQREZfRm9udCogcEZvbnQgPSBtX3BGb250Ow0KKyAgICBpZiAocEZvbnQgJiYgcEZvbnQtPm1fcERvY3VtZW50KSB7DQorICAgICAgICBwRm9udC0+bV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCktPlJlbGVhc2VGb250KHBGb250LT5HZXRGb250RGljdCgpKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfVGV4dFN0YXRlOjpTZXRGb250KENQREZfRm9udCogcEZvbnQpDQorew0KKyAgICBDUERGX0ZvbnQqJiBwU3RhdGVGb250ID0gR2V0TW9kaWZ5KCktPm1fcEZvbnQ7DQorICAgIENQREZfRG9jUGFnZURhdGEqIHBEb2NQYWdlRGF0YSA9IE5VTEw7DQorICAgIGlmIChwU3RhdGVGb250ICYmIHBTdGF0ZUZvbnQtPm1fcERvY3VtZW50KSB7DQorICAgICAgICBwRG9jUGFnZURhdGEgPSBwU3RhdGVGb250LT5tX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKTsNCisgICAgICAgIHBEb2NQYWdlRGF0YS0+UmVsZWFzZUZvbnQocFN0YXRlRm9udC0+R2V0Rm9udERpY3QoKSk7DQorICAgIH0NCisgICAgcFN0YXRlRm9udCA9IHBGb250Ow0KK30NCitGWF9GTE9BVCBDUERGX1RleHRTdGF0ZTo6R2V0Rm9udFNpemVWKCkgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUKiBwTWF0cml4ID0gR2V0TWF0cml4KCk7DQorICAgIEZYX0ZMT0FUIHVuaXQgPSBGWFNZU19zcXJ0MihwTWF0cml4WzFdLCBwTWF0cml4WzNdKTsNCisgICAgRlhfRkxPQVQgc2l6ZSA9IEZYU1lTX011bCh1bml0LCBHZXRGb250U2l6ZSgpKTsNCisgICAgcmV0dXJuIChGWF9GTE9BVClGWFNZU19mYWJzKHNpemUpOw0KK30NCitGWF9GTE9BVCBDUERGX1RleHRTdGF0ZTo6R2V0Rm9udFNpemVIKCkgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUKiBwTWF0cml4ID0gR2V0TWF0cml4KCk7DQorICAgIEZYX0ZMT0FUIHVuaXQgPSBGWFNZU19zcXJ0MihwTWF0cml4WzBdLCBwTWF0cml4WzJdKTsNCisgICAgRlhfRkxPQVQgc2l6ZSA9IEZYU1lTX011bCh1bml0LCBHZXRGb250U2l6ZSgpKTsNCisgICAgcmV0dXJuIChGWF9GTE9BVClGWFNZU19mYWJzKHNpemUpOw0KK30NCitGWF9GTE9BVCBDUERGX1RleHRTdGF0ZTo6R2V0QmFzZWxpbmVBbmdsZSgpIGNvbnN0DQorew0KKyAgICBGWF9GTE9BVCogbV9NYXRyaXggPSBHZXRNYXRyaXgoKTsNCisgICAgcmV0dXJuIEZYU1lTX2F0YW4yKG1fTWF0cml4WzJdLCBtX01hdHJpeFswXSk7DQorfQ0KK0ZYX0ZMT0FUIENQREZfVGV4dFN0YXRlOjpHZXRTaGVhckFuZ2xlKCkgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUKiBtX01hdHJpeCA9IEdldE1hdHJpeCgpOw0KKyAgICBGWF9GTE9BVCBzaGVhcl9hbmdsZSA9IEZYU1lTX2F0YW4yKG1fTWF0cml4WzFdLCBtX01hdHJpeFszXSk7DQorICAgIHJldHVybiBHZXRCYXNlbGluZUFuZ2xlKCkgKyBzaGVhcl9hbmdsZTsNCit9DQorQ1BERl9HZW5lcmFsU3RhdGVEYXRhOjpDUERGX0dlbmVyYWxTdGF0ZURhdGEoKQ0KK3sNCisgICAgRlhTWVNfbWVtc2V0MzIodGhpcywgMCwgc2l6ZW9mKENQREZfR2VuZXJhbFN0YXRlRGF0YSkpOw0KKyAgICBGWFNZU19zdHJjcHkoKEZYX0xQU1RSKW1fQmxlbmRNb2RlLCAoRlhfTFBDU1RSKSJOb3JtYWwiKTsNCisgICAgbV9TdHJva2VBbHBoYSA9IDEuMGY7DQorICAgIG1fRmlsbEFscGhhID0gMS4wZjsNCisgICAgbV9GbGF0bmVzcyA9IDEuMGY7DQorICAgIG1fTWF0cml4LlNldElkZW50aXR5KCk7DQorfQ0KK0NQREZfR2VuZXJhbFN0YXRlRGF0YTo6Q1BERl9HZW5lcmFsU3RhdGVEYXRhKGNvbnN0IENQREZfR2VuZXJhbFN0YXRlRGF0YSYgc3JjKQ0KK3sNCisgICAgRlhTWVNfbWVtY3B5MzIodGhpcywgJnNyYywgc2l6ZW9mKENQREZfR2VuZXJhbFN0YXRlRGF0YSkpOw0KKyAgICBpZiAoc3JjLm1fcFRyYW5zZmVyRnVuYyAmJiBzcmMubV9wVHJhbnNmZXJGdW5jLT5tX3BQREZEb2MpIHsNCisgICAgICAgIENQREZfRG9jUmVuZGVyRGF0YSogcERvY0NhY2hlID0gc3JjLm1fcFRyYW5zZmVyRnVuYy0+bV9wUERGRG9jLT5HZXRSZW5kZXJEYXRhKCk7DQorICAgICAgICBpZiAoIXBEb2NDYWNoZSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFRyYW5zZmVyRnVuYyA9IHBEb2NDYWNoZS0+R2V0VHJhbnNmZXJGdW5jKG1fcFRSKTsNCisgICAgfQ0KK30NCitDUERGX0dlbmVyYWxTdGF0ZURhdGE6On5DUERGX0dlbmVyYWxTdGF0ZURhdGEoKQ0KK3sNCisgICAgaWYgKG1fcFRyYW5zZmVyRnVuYyAmJiBtX3BUcmFuc2ZlckZ1bmMtPm1fcFBERkRvYykgew0KKyAgICAgICAgQ1BERl9Eb2NSZW5kZXJEYXRhKiBwRG9jQ2FjaGUgPSBtX3BUcmFuc2ZlckZ1bmMtPm1fcFBERkRvYy0+R2V0UmVuZGVyRGF0YSgpOw0KKyAgICAgICAgaWYgKCFwRG9jQ2FjaGUpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBwRG9jQ2FjaGUtPlJlbGVhc2VUcmFuc2ZlckZ1bmMobV9wVFIpOw0KKyAgICB9DQorfQ0KK3N0YXRpYyBpbnQgR2V0QmxlbmRUeXBlKEZYX0JTVFIgbW9kZSkNCit7DQorICAgIHN3aXRjaCAobW9kZS5HZXRJRCgpKSB7DQorICAgICAgICBjYXNlIEZYQlNUUl9JRCgnTicsICdvJywgJ3InLCAnbScpOg0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0MnLCAnbycsICdtJywgJ3AnKToNCisgICAgICAgICAgICByZXR1cm4gRlhESUJfQkxFTkRfTk9STUFMOw0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ00nLCAndScsICdsJywgJ3QnKToNCisgICAgICAgICAgICByZXR1cm4gRlhESUJfQkxFTkRfTVVMVElQTFk7DQorICAgICAgICBjYXNlIEZYQlNUUl9JRCgnUycsICdjJywgJ3InLCAnZScpOg0KKyAgICAgICAgICAgIHJldHVybiBGWERJQl9CTEVORF9TQ1JFRU47DQorICAgICAgICBjYXNlIEZYQlNUUl9JRCgnTycsICd2JywgJ2UnLCAncicpOg0KKyAgICAgICAgICAgIHJldHVybiBGWERJQl9CTEVORF9PVkVSTEFZOw0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0QnLCAnYScsICdyJywgJ2snKToNCisgICAgICAgICAgICByZXR1cm4gRlhESUJfQkxFTkRfREFSS0VOOw0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0wnLCAnaScsICdnJywgJ2gnKToNCisgICAgICAgICAgICByZXR1cm4gRlhESUJfQkxFTkRfTElHSFRFTjsNCisgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdDJywgJ28nLCAnbCcsICdvJyk6DQorICAgICAgICAgICAgaWYgKG1vZGUuR2V0TGVuZ3RoKCkgPT0gMTApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZYRElCX0JMRU5EX0NPTE9SRE9ER0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtb2RlLkdldExlbmd0aCgpID09IDkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZYRElCX0JMRU5EX0NPTE9SQlVSTjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIEZYRElCX0JMRU5EX0NPTE9SOw0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0gnLCAnYScsICdyJywgJ2QnKToNCisgICAgICAgICAgICByZXR1cm4gRlhESUJfQkxFTkRfSEFSRExJR0hUOw0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ1MnLCAnbycsICdmJywgJ3QnKToNCisgICAgICAgICAgICByZXR1cm4gRlhESUJfQkxFTkRfU09GVExJR0hUOw0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0QnLCAnaScsICdmJywgJ2YnKToNCisgICAgICAgICAgICByZXR1cm4gRlhESUJfQkxFTkRfRElGRkVSRU5DRTsNCisgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdFJywgJ3gnLCAnYycsICdsJyk6DQorICAgICAgICAgICAgcmV0dXJuIEZYRElCX0JMRU5EX0VYQ0xVU0lPTjsNCisgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdIJywgJ3UnLCAnZScsIDApOg0KKyAgICAgICAgICAgIHJldHVybiBGWERJQl9CTEVORF9IVUU7DQorICAgICAgICBjYXNlIEZYQlNUUl9JRCgnUycsICdhJywgJ3QnLCAndScpOg0KKyAgICAgICAgICAgIHJldHVybiBGWERJQl9CTEVORF9TQVRVUkFUSU9OOw0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0wnLCAndScsICdtJywgJ2knKToNCisgICAgICAgICAgICByZXR1cm4gRlhESUJfQkxFTkRfTFVNSU5PU0lUWTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhESUJfQkxFTkRfTk9STUFMOw0KK30NCit2b2lkIENQREZfR2VuZXJhbFN0YXRlRGF0YTo6U2V0QmxlbmRNb2RlKEZYX0JTVFIgYmxlbmRfbW9kZSkNCit7DQorICAgIGlmIChibGVuZF9tb2RlLkdldExlbmd0aCgpID4gMTUpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1jcHkzMihtX0JsZW5kTW9kZSwgKEZYX0xQQ0JZVEUpYmxlbmRfbW9kZSwgYmxlbmRfbW9kZS5HZXRMZW5ndGgoKSk7DQorICAgIG1fQmxlbmRNb2RlW2JsZW5kX21vZGUuR2V0TGVuZ3RoKCldID0gMDsNCisgICAgbV9CbGVuZFR5cGUgPSA6OkdldEJsZW5kVHlwZShibGVuZF9tb2RlKTsNCit9DQoraW50IFJJX1N0cmluZ1RvSWQoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHJpKQ0KK3sNCisgICAgRlhfRFdPUkQgaWQgPSByaS5HZXRJRCgpOw0KKyAgICBpZiAoaWQgPT0gRlhCU1RSX0lEKCdBJywgJ2InLCAncycsICdvJykpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIGlmIChpZCA9PSBGWEJTVFJfSUQoJ1MnLCAnYScsICd0JywgJ3UnKSkgew0KKyAgICAgICAgcmV0dXJuIDI7DQorICAgIH0NCisgICAgaWYgKGlkID09IEZYQlNUUl9JRCgnUCcsICdlJywgJ3InLCAnYycpKSB7DQorICAgICAgICByZXR1cm4gMzsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQordm9pZCBDUERGX0dlbmVyYWxTdGF0ZTo6U2V0UmVuZGVySW50ZW50KGNvbnN0IENGWF9CeXRlU3RyaW5nJiByaSkNCit7DQorICAgIEdldE1vZGlmeSgpLT5tX1JlbmRlckludGVudCA9IFJJX1N0cmluZ1RvSWQocmkpOw0KK30NCitDUERGX0FsbFN0YXRlczo6Q1BERl9BbGxTdGF0ZXMoKQ0KK3sNCisgICAgbV9UZXh0WCA9IG1fVGV4dFkgPSBtX1RleHRMaW5lWCA9IG1fVGV4dExpbmVZID0gMDsNCisgICAgbV9UZXh0TGVhZGluZyA9IDA7DQorICAgIG1fVGV4dFJpc2UgPSAwOw0KKyAgICBtX1RleHRIb3J6U2NhbGUgPSAxLjBmOw0KK30NCitDUERGX0FsbFN0YXRlczo6fkNQREZfQWxsU3RhdGVzKCkNCit7DQorfQ0KK3ZvaWQgQ1BERl9BbGxTdGF0ZXM6OkNvcHkoY29uc3QgQ1BERl9BbGxTdGF0ZXMmIHNyYykNCit7DQorICAgIENvcHlTdGF0ZXMoc3JjKTsNCisgICAgbV9UZXh0TWF0cml4LkNvcHkoc3JjLm1fVGV4dE1hdHJpeCk7DQorICAgIG1fUGFyZW50TWF0cml4LkNvcHkoc3JjLm1fUGFyZW50TWF0cml4KTsNCisgICAgbV9DVE0uQ29weShzcmMubV9DVE0pOw0KKyAgICBtX1RleHRYID0gc3JjLm1fVGV4dFg7DQorICAgIG1fVGV4dFkgPSBzcmMubV9UZXh0WTsNCisgICAgbV9UZXh0TGluZVggPSBzcmMubV9UZXh0TGluZVg7DQorICAgIG1fVGV4dExpbmVZID0gc3JjLm1fVGV4dExpbmVZOw0KKyAgICBtX1RleHRMZWFkaW5nID0gc3JjLm1fVGV4dExlYWRpbmc7DQorICAgIG1fVGV4dFJpc2UgPSBzcmMubV9UZXh0UmlzZTsNCisgICAgbV9UZXh0SG9yelNjYWxlID0gc3JjLm1fVGV4dEhvcnpTY2FsZTsNCit9DQordm9pZCBDUERGX0FsbFN0YXRlczo6U2V0TGluZURhc2goQ1BERl9BcnJheSogcEFycmF5LCBGWF9GTE9BVCBwaGFzZSwgRlhfRkxPQVQgc2NhbGUpDQorew0KKyAgICBDRlhfR3JhcGhTdGF0ZURhdGEqIHBEYXRhID0gbV9HcmFwaFN0YXRlLkdldE1vZGlmeSgpOw0KKyAgICBwRGF0YS0+bV9EYXNoUGhhc2UgPSBGWFNZU19NdWwocGhhc2UsIHNjYWxlKTsNCisgICAgcERhdGEtPlNldERhc2hDb3VudChwQXJyYXktPkdldENvdW50KCkpOw0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcEFycmF5LT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICBwRGF0YS0+bV9EYXNoQXJyYXlbaV0gPSBGWFNZU19NdWwocEFycmF5LT5HZXROdW1iZXIoaSksIHNjYWxlKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfQWxsU3RhdGVzOjpQcm9jZXNzRXh0R1MoQ1BERl9EaWN0aW9uYXJ5KiBwR1MsIENQREZfU3RyZWFtQ29udGVudFBhcnNlciogcFBhcnNlcikNCit7DQorICAgIENQREZfR2VuZXJhbFN0YXRlRGF0YSogcEdlbmVyYWxTdGF0ZSA9IG1fR2VuZXJhbFN0YXRlLkdldE1vZGlmeSgpOw0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBwR1MtPkdldFN0YXJ0UG9zKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGtleV9zdHI7DQorICAgICAgICBDUERGX09iamVjdCogcE9iamVjdCA9IHBHUy0+R2V0TmV4dEVsZW1lbnQocG9zLCBrZXlfc3RyKS0+R2V0RGlyZWN0KCk7DQorICAgICAgICBpZiAocE9iamVjdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCBrZXkgPSBrZXlfc3RyLkdldElEKCk7DQorICAgICAgICBzd2l0Y2ggKGtleSkgew0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdMJywgJ1cnLCAwLCAwKToNCisgICAgICAgICAgICAgICAgbV9HcmFwaFN0YXRlLkdldE1vZGlmeSgpLT5tX0xpbmVXaWR0aCA9IHBPYmplY3QtPkdldE51bWJlcigpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEZYQlNUUl9JRCgnTCcsICdDJywgMCwgMCk6DQorICAgICAgICAgICAgICAgIG1fR3JhcGhTdGF0ZS5HZXRNb2RpZnkoKS0+bV9MaW5lQ2FwID0gKENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUNhcClwT2JqZWN0LT5HZXRJbnRlZ2VyKCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdMJywgJ0onLCAwLCAwKToNCisgICAgICAgICAgICAgICAgbV9HcmFwaFN0YXRlLkdldE1vZGlmeSgpLT5tX0xpbmVKb2luID0gKENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUpvaW4pcE9iamVjdC0+R2V0SW50ZWdlcigpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEZYQlNUUl9JRCgnTScsICdMJywgMCwgMCk6DQorICAgICAgICAgICAgICAgIG1fR3JhcGhTdGF0ZS5HZXRNb2RpZnkoKS0+bV9NaXRlckxpbWl0ID0gcE9iamVjdC0+R2V0TnVtYmVyKCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdEJywgMCwgMCwgMCk6CXsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0LT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBDUERGX0FycmF5KiBwRGFzaCA9IChDUERGX0FycmF5KilwT2JqZWN0Ow0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9BcnJheSogcEFycmF5ID0gcERhc2gtPkdldEFycmF5KDApOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBTZXRMaW5lRGFzaChwQXJyYXksIHBEYXNoLT5HZXROdW1iZXIoMSksIDEuMGYpOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjYXNlIEZYQlNUUl9JRCgnUicsICdJJywgMCwgMCk6DQorICAgICAgICAgICAgICAgIG1fR2VuZXJhbFN0YXRlLlNldFJlbmRlckludGVudChwT2JqZWN0LT5HZXRTdHJpbmcoKSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdGJywgJ28nLCAnbicsICd0Jyk6CXsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0LT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBDUERGX0FycmF5KiBwRm9udCA9IChDUERGX0FycmF5KilwT2JqZWN0Ow0KKyAgICAgICAgICAgICAgICAgICAgbV9UZXh0U3RhdGUuR2V0TW9kaWZ5KCktPm1fRm9udFNpemUgPSBwRm9udC0+R2V0TnVtYmVyKDEpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9UZXh0U3RhdGUuU2V0Rm9udChwUGFyc2VyLT5GaW5kRm9udChwRm9udC0+R2V0U3RyaW5nKDApKSk7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdUJywgJ1InLCAwLCAwKToNCisgICAgICAgICAgICAgICAgaWYgKHBHUy0+S2V5RXhpc3QoRlhfQlNUUkMoIlRSMiIpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjYXNlIEZYQlNUUl9JRCgnVCcsICdSJywgJzInLCAwKToNCisgICAgICAgICAgICAgICAgaWYgKHBPYmplY3QgJiYgcE9iamVjdC0+R2V0VHlwZSgpICE9IFBERk9CSl9OQU1FKSB7DQorICAgICAgICAgICAgICAgICAgICBwR2VuZXJhbFN0YXRlLT5tX3BUUiA9IHBPYmplY3Q7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBwR2VuZXJhbFN0YXRlLT5tX3BUUiA9IE5VTEw7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0InLCAnTScsIDAsIDApOgl7DQorICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBtb2RlOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBPYmplY3QtPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gKChDUERGX0FycmF5KilwT2JqZWN0KS0+R2V0U3RyaW5nKDApOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gcE9iamVjdC0+R2V0U3RyaW5nKCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwR2VuZXJhbFN0YXRlLT5TZXRCbGVuZE1vZGUobW9kZSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEdlbmVyYWxTdGF0ZS0+bV9CbGVuZFR5cGUgPiBGWERJQl9CTEVORF9NVUxUSVBMWSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBQYXJzZXItPm1fcE9iamVjdExpc3QtPm1fYkJhY2tncm91bmRBbHBoYU5lZWRlZCA9IFRSVUU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdTJywgJ00nLCAnYScsICdzJyk6DQorICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0ICYmIHBPYmplY3QtPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgICAgICAgICAgcEdlbmVyYWxTdGF0ZS0+bV9wU29mdE1hc2sgPSBwT2JqZWN0Ow0KKyAgICAgICAgICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIocEdlbmVyYWxTdGF0ZS0+bV9TTWFza01hdHJpeCwgJnBQYXJzZXItPm1fcEN1clN0YXRlcy0+bV9DVE0sIHNpemVvZihDUERGX01hdHJpeCkpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgcEdlbmVyYWxTdGF0ZS0+bV9wU29mdE1hc2sgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdDJywgJ0EnLCAwLCAwKToNCisgICAgICAgICAgICAgICAgcEdlbmVyYWxTdGF0ZS0+bV9TdHJva2VBbHBoYSA9IFBERl9DbGlwRmxvYXQocE9iamVjdC0+R2V0TnVtYmVyKCkpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEZYQlNUUl9JRCgnYycsICdhJywgMCwgMCk6DQorICAgICAgICAgICAgICAgIHBHZW5lcmFsU3RhdGUtPm1fRmlsbEFscGhhID0gUERGX0NsaXBGbG9hdChwT2JqZWN0LT5HZXROdW1iZXIoKSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdPJywgJ1AnLCAwLCAwKToNCisgICAgICAgICAgICAgICAgcEdlbmVyYWxTdGF0ZS0+bV9TdHJva2VPUCA9IHBPYmplY3QtPkdldEludGVnZXIoKTsNCisgICAgICAgICAgICAgICAgaWYgKCFwR1MtPktleUV4aXN0KEZYX0JTVFJDKCJvcCIpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcEdlbmVyYWxTdGF0ZS0+bV9GaWxsT1AgPSBwT2JqZWN0LT5HZXRJbnRlZ2VyKCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ28nLCAncCcsIDAsIDApOg0KKyAgICAgICAgICAgICAgICBwR2VuZXJhbFN0YXRlLT5tX0ZpbGxPUCA9IHBPYmplY3QtPkdldEludGVnZXIoKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ08nLCAnUCcsICdNJywgMCk6DQorICAgICAgICAgICAgICAgIHBHZW5lcmFsU3RhdGUtPm1fT1BNb2RlID0gcE9iamVjdC0+R2V0SW50ZWdlcigpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEZYQlNUUl9JRCgnQicsICdHJywgMCwgMCk6DQorICAgICAgICAgICAgICAgIGlmIChwR1MtPktleUV4aXN0KEZYX0JTVFJDKCJCRzIiKSkpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0InLCAnRycsICcyJywgMCk6DQorICAgICAgICAgICAgICAgIHBHZW5lcmFsU3RhdGUtPm1fcEJHID0gcE9iamVjdDsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ1UnLCAnQycsICdSJywgMCk6DQorICAgICAgICAgICAgICAgIGlmIChwR1MtPktleUV4aXN0KEZYX0JTVFJDKCJVQ1IyIikpKSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdVJywgJ0MnLCAnUicsICcyJyk6DQorICAgICAgICAgICAgICAgIHBHZW5lcmFsU3RhdGUtPm1fcFVDUiA9IHBPYmplY3Q7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdIJywgJ1QnLCAwLCAwKToNCisgICAgICAgICAgICAgICAgcEdlbmVyYWxTdGF0ZS0+bV9wSFQgPSBwT2JqZWN0Ow0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEZYQlNUUl9JRCgnRicsICdMJywgMCwgMCk6DQorICAgICAgICAgICAgICAgIHBHZW5lcmFsU3RhdGUtPm1fRmxhdG5lc3MgPSBwT2JqZWN0LT5HZXROdW1iZXIoKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ1MnLCAnTScsIDAsIDApOg0KKyAgICAgICAgICAgICAgICBwR2VuZXJhbFN0YXRlLT5tX1Ntb290aG5lc3MgPSBwT2JqZWN0LT5HZXROdW1iZXIoKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ1MnLCAnQScsIDAsIDApOg0KKyAgICAgICAgICAgICAgICBwR2VuZXJhbFN0YXRlLT5tX1N0cm9rZUFkanVzdCA9IHBPYmplY3QtPkdldEludGVnZXIoKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0EnLCAnSScsICdTJywgMCk6DQorICAgICAgICAgICAgICAgIHBHZW5lcmFsU3RhdGUtPm1fQWxwaGFTb3VyY2UgPSBwT2JqZWN0LT5HZXRJbnRlZ2VyKCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdUJywgJ0snLCAwLCAwKToNCisgICAgICAgICAgICAgICAgcEdlbmVyYWxTdGF0ZS0+bV9UZXh0S25vY2tvdXQgPSBwT2JqZWN0LT5HZXRJbnRlZ2VyKCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHBHZW5lcmFsU3RhdGUtPm1fTWF0cml4ID0gbV9DVE07DQorfQ0KK0NQREZfQ29udGVudE1hcmtJdGVtOjpDUERGX0NvbnRlbnRNYXJrSXRlbSgpDQorew0KKyAgICBtX1BhcmFtVHlwZSA9IE5vbmU7DQorfQ0KK0NQREZfQ29udGVudE1hcmtJdGVtOjpDUERGX0NvbnRlbnRNYXJrSXRlbShjb25zdCBDUERGX0NvbnRlbnRNYXJrSXRlbSYgc3JjKQ0KK3sNCisgICAgbV9NYXJrTmFtZSA9IHNyYy5tX01hcmtOYW1lOw0KKyAgICBtX1BhcmFtVHlwZSA9IHNyYy5tX1BhcmFtVHlwZTsNCisgICAgaWYgKG1fUGFyYW1UeXBlID09IERpcmVjdERpY3QpIHsNCisgICAgICAgIG1fcFBhcmFtID0gKChDUERGX0RpY3Rpb25hcnkqKXNyYy5tX3BQYXJhbSktPkNsb25lKCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BQYXJhbSA9IHNyYy5tX3BQYXJhbTsNCisgICAgfQ0KK30NCitDUERGX0NvbnRlbnRNYXJrSXRlbTo6fkNQREZfQ29udGVudE1hcmtJdGVtKCkNCit7DQorICAgIGlmIChtX1BhcmFtVHlwZSA9PSBEaXJlY3REaWN0KSB7DQorICAgICAgICAoKENQREZfRGljdGlvbmFyeSopbV9wUGFyYW0pLT5SZWxlYXNlKCk7DQorICAgIH0NCit9DQorRlhfQk9PTAlDUERGX0NvbnRlbnRNYXJrSXRlbTo6SGFzTUNJRCgpIGNvbnN0DQorew0KKyAgICBpZiAobV9wUGFyYW0gJiYgKG1fUGFyYW1UeXBlID09IERpcmVjdERpY3QgfHwgbV9QYXJhbVR5cGUgPT0gUHJvcGVydGllc0RpY3QpKSB7DQorICAgICAgICByZXR1cm4gKChDUERGX0RpY3Rpb25hcnkgKiltX3BQYXJhbSktPktleUV4aXN0KEZYX0JTVFJDKCJNQ0lEIikpOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorQ1BERl9Db250ZW50TWFya0RhdGE6OkNQREZfQ29udGVudE1hcmtEYXRhKGNvbnN0IENQREZfQ29udGVudE1hcmtEYXRhJiBzcmMpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNyYy5tX01hcmtzLkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgbV9NYXJrcy5BZGQoc3JjLm1fTWFya3NbaV0pOw0KKyAgICB9DQorfQ0KK2ludCBDUERGX0NvbnRlbnRNYXJrRGF0YTo6R2V0TUNJRCgpIGNvbnN0DQorew0KKyAgICBDUERGX0NvbnRlbnRNYXJrSXRlbTo6UGFyYW1UeXBlIHR5cGUgPSBDUERGX0NvbnRlbnRNYXJrSXRlbTo6Tm9uZTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX01hcmtzLkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgdHlwZSA9IG1fTWFya3NbaV0uR2V0UGFyYW1UeXBlKCk7DQorICAgICAgICBpZiAodHlwZSA9PSBDUERGX0NvbnRlbnRNYXJrSXRlbTo6UHJvcGVydGllc0RpY3QgfHwgdHlwZSA9PSBDUERGX0NvbnRlbnRNYXJrSXRlbTo6RGlyZWN0RGljdCkgew0KKyAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSAqcERpY3QgPSAoQ1BERl9EaWN0aW9uYXJ5ICopbV9NYXJrc1tpXS5HZXRQYXJhbSgpOw0KKyAgICAgICAgICAgIGlmIChwRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIk1DSUQiKSkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJNQ0lEIikpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gLTE7DQorfQ0KK3ZvaWQgQ1BERl9Db250ZW50TWFya0RhdGE6OkFkZE1hcmsoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUsIENQREZfRGljdGlvbmFyeSogcERpY3QsIEZYX0JPT0wgYkRpcmVjdCkNCit7DQorICAgIENQREZfQ29udGVudE1hcmtJdGVtJiBpdGVtID0gbV9NYXJrcy5BZGQoKTsNCisgICAgaXRlbS5TZXROYW1lKG5hbWUpOw0KKyAgICBpZiAocERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGl0ZW0uU2V0UGFyYW0oYkRpcmVjdCA/IENQREZfQ29udGVudE1hcmtJdGVtOjpEaXJlY3REaWN0IDogQ1BERl9Db250ZW50TWFya0l0ZW06OlByb3BlcnRpZXNEaWN0LA0KKyAgICAgICAgICAgICAgICAgIGJEaXJlY3QgPyBwRGljdC0+Q2xvbmUoKSA6IHBEaWN0KTsNCit9DQordm9pZCBDUERGX0NvbnRlbnRNYXJrRGF0YTo6RGVsZXRlTGFzdE1hcmsoKQ0KK3sNCisgICAgaW50IHNpemUgPSBtX01hcmtzLkdldFNpemUoKTsNCisgICAgaWYgKHNpemUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fTWFya3MuUmVtb3ZlQXQoc2l6ZSAtIDEpOw0KK30NCitGWF9CT09MIENQREZfQ29udGVudE1hcms6Okhhc01hcmsoRlhfQlNUUiBtYXJrKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcE9iamVjdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3BPYmplY3QtPkNvdW50SXRlbXMoKTsgaSArKykgew0KKyAgICAgICAgQ1BERl9Db250ZW50TWFya0l0ZW0mIGl0ZW0gPSBtX3BPYmplY3QtPkdldEl0ZW0oaSk7DQorICAgICAgICBpZiAoaXRlbS5HZXROYW1lKCkgPT0gbWFyaykgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0NvbnRlbnRNYXJrOjpMb29rdXBNYXJrKEZYX0JTVFIgbWFyaywgQ1BERl9EaWN0aW9uYXJ5KiYgcERpY3QpIGNvbnN0DQorew0KKyAgICBpZiAobV9wT2JqZWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fcE9iamVjdC0+Q291bnRJdGVtcygpOyBpICsrKSB7DQorICAgICAgICBDUERGX0NvbnRlbnRNYXJrSXRlbSYgaXRlbSA9IG1fcE9iamVjdC0+R2V0SXRlbShpKTsNCisgICAgICAgIGlmIChpdGVtLkdldE5hbWUoKSA9PSBtYXJrKSB7DQorICAgICAgICAgICAgcERpY3QgPSBOVUxMOw0KKyAgICAgICAgICAgIGlmIChpdGVtLkdldFBhcmFtVHlwZSgpID09IENQREZfQ29udGVudE1hcmtJdGVtOjpQcm9wZXJ0aWVzRGljdCB8fA0KKyAgICAgICAgICAgICAgICAgICAgaXRlbS5HZXRQYXJhbVR5cGUoKSA9PSBDUERGX0NvbnRlbnRNYXJrSXRlbTo6RGlyZWN0RGljdCkgew0KKyAgICAgICAgICAgICAgICBwRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKWl0ZW0uR2V0UGFyYW0oKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2VfaW1hZ2UuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX2ltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzM1MTA1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX2ltYWdlLmNwcApAQCAtMCwwICsxLDExNiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZW9iai5oIg0KKyNpbmNsdWRlICJwYWdlaW50LmgiDQorQ1BERl9JbWFnZU9iamVjdDo6Q1BERl9JbWFnZU9iamVjdCgpDQorew0KKyAgICBtX3BJbWFnZSA9IE5VTEw7DQorICAgIG1fVHlwZSA9IFBERlBBR0VfSU1BR0U7DQorfQ0KK0NQREZfSW1hZ2VPYmplY3Q6On5DUERGX0ltYWdlT2JqZWN0KCkNCit7DQorICAgIGlmICghbV9wSW1hZ2UpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wSW1hZ2UtPklzSW5saW5lKCkgfHwgKG1fcEltYWdlLT5HZXRTdHJlYW0oKSAmJiBtX3BJbWFnZS0+R2V0U3RyZWFtKCktPkdldE9iak51bSgpID09IDApKSB7DQorICAgICAgICBkZWxldGUgbV9wSW1hZ2U7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BJbWFnZS0+R2V0RG9jdW1lbnQoKS0+R2V0UGFnZURhdGEoKS0+UmVsZWFzZUltYWdlKG1fcEltYWdlLT5HZXRTdHJlYW0oKSk7DQorICAgIH0NCit9DQordm9pZCBDUERGX0ltYWdlT2JqZWN0OjpDb3B5RGF0YShjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBTcmMpDQorew0KKyAgICBjb25zdCBDUERGX0ltYWdlT2JqZWN0KiBwU3JjT2JqID0gKGNvbnN0IENQREZfSW1hZ2VPYmplY3QqKXBTcmM7DQorICAgIGlmIChtX3BJbWFnZSkgew0KKyAgICAgICAgbV9wSW1hZ2UtPlJlbGVhc2UoKTsNCisgICAgfQ0KKyAgICBtX3BJbWFnZSA9IHBTcmNPYmotPm1fcEltYWdlLT5DbG9uZSgpOw0KKyAgICBtX01hdHJpeCA9IHBTcmNPYmotPm1fTWF0cml4Ow0KK30NCit2b2lkIENQREZfSW1hZ2VPYmplY3Q6OlRyYW5zZm9ybShjb25zdCBDRlhfQWZmaW5lTWF0cml4JiBtYXRyaXgpDQorew0KKyAgICBtX01hdHJpeC5Db25jYXQobWF0cml4KTsNCisgICAgQ2FsY0JvdW5kaW5nQm94KCk7DQorfQ0KK3ZvaWQgQ1BERl9JbWFnZU9iamVjdDo6Q2FsY0JvdW5kaW5nQm94KCkNCit7DQorICAgIG1fTGVmdCA9IG1fQm90dG9tID0gMDsNCisgICAgbV9SaWdodCA9IG1fVG9wID0gMS4wZjsNCisgICAgbV9NYXRyaXguVHJhbnNmb3JtUmVjdChtX0xlZnQsIG1fUmlnaHQsIG1fVG9wLCBtX0JvdHRvbSk7DQorfQ0KK3ZvaWQgQ1BERl9JbWFnZTo6UmVsZWFzZSgpDQorew0KKyAgICBpZiAobV9iSW5saW5lIHx8IChtX3BTdHJlYW0gJiYgbV9wU3RyZWFtLT5HZXRPYmpOdW0oKSA9PSAwKSkgew0KKyAgICAgICAgZGVsZXRlIHRoaXM7DQorICAgIH0NCit9DQorQ1BERl9JbWFnZSogQ1BERl9JbWFnZTo6Q2xvbmUoKQ0KK3sNCisgICAgaWYgKG1fcFN0cmVhbS0+R2V0T2JqTnVtKCkpIHsNCisgICAgICAgIHJldHVybiBtX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKS0+R2V0SW1hZ2UobV9wU3RyZWFtKTsNCisgICAgfQ0KKyAgICBDUERGX0ltYWdlKiBwSW1hZ2UgPSBGWF9ORVcgQ1BERl9JbWFnZShtX3BEb2N1bWVudCk7DQorICAgIHBJbWFnZS0+TG9hZEltYWdlRigoQ1BERl9TdHJlYW0qKSgoQ1BERl9PYmplY3QqKW1fcFN0cmVhbSktPkNsb25lKCksIG1fYklubGluZSk7DQorICAgIGlmIChtX2JJbmxpbmUpIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSAqcElubGluZURpY3QgPSAoQ1BERl9EaWN0aW9uYXJ5KiltX3BJbmxpbmVEaWN0LT5DbG9uZShUUlVFKTsNCisgICAgICAgIHBJbWFnZS0+U2V0SW5saW5lRGljdChwSW5saW5lRGljdCk7DQorICAgIH0NCisgICAgcmV0dXJuIHBJbWFnZTsNCit9DQorQ1BERl9JbWFnZTo6Q1BERl9JbWFnZShDUERGX0RvY3VtZW50KiBwRG9jKQ0KK3sNCisgICAgbV9wRG9jdW1lbnQgPSBwRG9jOw0KKyAgICBtX3BTdHJlYW0gPSBOVUxMOw0KKyAgICBtX3BPQyA9IE5VTEw7DQorICAgIG1fYklubGluZSA9IEZBTFNFOw0KKyAgICBtX3BJbmxpbmVEaWN0ID0gTlVMTDsNCisgICAgbV9wRElCU291cmNlID0gTlVMTDsNCisgICAgbV9wTWFzayA9IE5VTEw7DQorICAgIG1fTWF0dGVDb2xvciA9IDA7DQorfQ0KK0NQREZfSW1hZ2U6On5DUERGX0ltYWdlKCkNCit7DQorICAgIGlmIChtX2JJbmxpbmUpIHsNCisgICAgICAgIGlmIChtX3BTdHJlYW0pIHsNCisjaWZuZGVmIEZPWElUX0NIUk9NRV9CVUlMRA0KKyAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBtX3BTdHJlYW0tPkdldERpY3QoKTsNCisgICAgICAgICAgICBpZiAocERpY3QpIHsNCisgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBDU09iaiA9IHBEaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkNvbG9yU3BhY2UiKSk7DQorICAgICAgICAgICAgICAgIGlmIChwQ1NPYmogJiYgbV9wRG9jdW1lbnQpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcERvY3VtZW50LT5SZW1vdmVDb2xvclNwYWNlRnJvbVBhZ2VEYXRhKHBDU09iaik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorI2VuZGlmDQorICAgICAgICAgICAgbV9wU3RyZWFtLT5SZWxlYXNlKCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9wSW5saW5lRGljdCkgew0KKyAgICAgICAgICAgIG1fcElubGluZURpY3QtPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfSW1hZ2U6OkxvYWRJbWFnZUYoQ1BERl9TdHJlYW0qIHBTdHJlYW0sIEZYX0JPT0wgYklubGluZSkNCit7DQorICAgIG1fcFN0cmVhbSA9IHBTdHJlYW07DQorICAgIGlmIChtX2JJbmxpbmUgJiYgbV9wSW5saW5lRGljdCkgew0KKyAgICAgICAgbV9wSW5saW5lRGljdC0+UmVsZWFzZSgpOw0KKyAgICAgICAgbV9wSW5saW5lRGljdCA9IE5VTEw7DQorICAgIH0NCisgICAgbV9iSW5saW5lID0gYklubGluZTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IHBTdHJlYW0tPkdldERpY3QoKTsNCisgICAgaWYgKG1fYklubGluZSkgew0KKyAgICAgICAgbV9wSW5saW5lRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKXBEaWN0LT5DbG9uZSgpOw0KKyAgICB9DQorICAgIG1fcE9DID0gcERpY3QtPkdldERpY3QoRlhfQlNUUkMoIk9DIikpOw0KKyAgICBtX2JJc01hc2sgPSAhcERpY3QtPktleUV4aXN0KEZYX0JTVFJDKCJDb2xvclNwYWNlIikpIHx8IHBEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJJbWFnZU1hc2siKSk7DQorI2lmbmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICBtX2JJbnRlcnBvbGF0ZSA9IHBEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJJbnRlcnBvbGF0ZSIpKTsNCisjZW5kaWYNCisgICAgbV9IZWlnaHQgPSBwRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiSGVpZ2h0IikpOw0KKyAgICBtX1dpZHRoID0gcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIldpZHRoIikpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX3BhcnNlci5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2VfcGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGY2ZDA0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX3BhcnNlci5jcHAKQEAgLTAsMCArMSwxNjgxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfc2VyaWFsLmgiDQorI2luY2x1ZGUgInBhZ2VpbnQuaCINCisjZGVmaW5lIFJFUVVJUkVfUEFSQU1TKGNvdW50KSBpZiAobV9QYXJhbUNvdW50ICE9IGNvdW50KSB7IG1fYkFib3J0ID0gVFJVRTsgcmV0dXJuOyB9DQorQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXIoKQ0KK3sNCisgICAgbV9EZWZGb250U2l6ZSA9IDA7DQorICAgIG1fcEN1clN0YXRlcyA9IE5VTEw7DQorICAgIG1fcExhc3RUZXh0T2JqZWN0ID0gTlVMTDsNCisgICAgbV9wUGF0aFBvaW50cyA9IE5VTEw7DQorICAgIG1fUGF0aENsaXBUeXBlID0gMDsNCisgICAgbV9QYXRoUG9pbnRDb3VudCA9IG1fUGF0aEFsbG9jU2l6ZSA9IDA7DQorICAgIG1fUGF0aEN1cnJlbnRYID0gbV9QYXRoQ3VycmVudFkgPSAwLjBmOw0KKyAgICBtX2JSZXNvdXJjZU1pc3NpbmcgPSBGQUxTRTsNCisgICAgbV9iQ29sb3JlZCA9IEZBTFNFOw0KKyAgICBGWFNZU19tZW1zZXQzMihtX1R5cGUzRGF0YSwgMCwgc2l6ZW9mKEZYX0ZMT0FUKSAqIDYpOw0KKyAgICBtX1BhcmFtQ291bnQgPSAwOw0KKyAgICBtX1BhcmFtU3RhcnRQb3MgPSAwOw0KKyAgICBtX2JBYm9ydCA9IEZBTFNFOw0KKyAgICBtX3BMYXN0SW1hZ2VEaWN0ID0gTlVMTDsNCisgICAgbV9wTGFzdENsb25lSW1hZ2VEaWN0ID0gTlVMTDsNCisgICAgbV9wTGFzdEltYWdlID0gTlVMTDsNCisgICAgbV9iUmVsZWFzZUxhc3REaWN0ID0gVFJVRTsNCisgICAgbV9wUGFyZW50UmVzb3VyY2VzID0gTlVMTDsNCisjaWZkZWYgX0ZQREZBUElfTUlOSV8NCisgICAgbV9wT2JqZWN0U3RhdGUgPSBOVUxMOw0KKyAgICBtX3BPYmplY3RTdGFjayA9IE5VTEw7DQorICAgIG1fcFdvcmRCdWYgPSBOVUxMOw0KKyAgICBtX3BEaWN0TmFtZSA9IE5VTEw7DQorICAgIG1fcFN0cmVhbUJ1ZiA9IE5VTEw7DQorICAgIG1fV29yZFN0YXRlID0gMDsNCisgICAgbV9PYmplY3RTaXplID0gMDsNCisjZW5kaWYNCit9DQorRlhfQk9PTCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkluaXRpYWxpemUoKQ0KK3sNCisjaWZkZWYgX0ZQREZBUElfTUlOSV8NCisgICAgbV9wT2JqZWN0U3RhdGUgPSBGWF9BbGxvYyhGWF9CT09MLCBfRlBERl9NQVhfT0JKRUNUX1NUQUNLX1NJWkVfKTsNCisgICAgRlhTWVNfbWVtc2V0MzIobV9wT2JqZWN0U3RhdGUsIDAsIF9GUERGX01BWF9PQkpFQ1RfU1RBQ0tfU0laRV8gKiBzaXplb2YoRlhfQk9PTCkpOw0KKyAgICBtX3BPYmplY3RTdGFjayA9IEZYX0FsbG9jKENQREZfT2JqZWN0KiwgX0ZQREZfTUFYX09CSkVDVF9TVEFDS19TSVpFXyk7DQorICAgIEZYU1lTX21lbXNldDMyKG1fcE9iamVjdFN0YWNrLCAwLCBfRlBERl9NQVhfT0JKRUNUX1NUQUNLX1NJWkVfICogc2l6ZW9mKENQREZfT2JqZWN0KikpOw0KKyAgICBtX3BXb3JkQnVmID0gRlhfQWxsb2MoRlhfQllURSwgMjU2KTsNCisgICAgRlhTWVNfbWVtc2V0MzIobV9wV29yZEJ1ZiwgMCwgMjU2ICogc2l6ZW9mKEZYX0JZVEUpKTsNCisgICAgbV9wRGljdE5hbWUgPSBGWF9BbGxvYyhGWF9CWVRFLCAyNTYpOw0KKyAgICBGWFNZU19tZW1zZXQzMihtX3BEaWN0TmFtZSwgMCwgMjU2ICogc2l6ZW9mKEZYX0JZVEUpKTsNCisgICAgbV9wU3RyZWFtQnVmID0gRlhfQWxsb2MoRlhfQllURSwgU1RSRUFNX1BBUlNFX0JVRlNJWkUpOw0KKyAgICBGWFNZU19tZW1zZXQzMihtX3BTdHJlYW1CdWYsIDAsIFNUUkVBTV9QQVJTRV9CVUZTSVpFICogc2l6ZW9mKEZYX0JZVEUpKTsNCisgICAgbV9TdHJpbmdCdWYuRXN0aW1hdGVTaXplKDEwMjQpOw0KKyAgICBtX09iamVjdFNpemUgPSAwOw0KKyAgICBtX0ltYWdlU3JjQnVmLkVzdGltYXRlU2l6ZShTVFJFQU1fUEFSU0VfQlVGU0laRSk7DQorI2VuZGlmDQorICAgIHJldHVybiBUUlVFOw0KK30NCitDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6On5DUERGX1N0cmVhbUNvbnRlbnRQYXJzZXIoKQ0KK3sNCisgICAgQ2xlYXJBbGxQYXJhbXMoKTsNCisgICAgaW50IGkgPSAwOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9TdGF0ZVN0YWNrLkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgZGVsZXRlIChDUERGX0FsbFN0YXRlcyopbV9TdGF0ZVN0YWNrW2ldOw0KKyAgICB9DQorICAgIGlmIChtX3BQYXRoUG9pbnRzKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFBhdGhQb2ludHMpOw0KKyAgICB9DQorICAgIGlmIChtX3BDdXJTdGF0ZXMpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BDdXJTdGF0ZXM7DQorICAgIH0NCisgICAgaWYgKG1fcExhc3RJbWFnZURpY3QpIHsNCisgICAgICAgIG1fcExhc3RJbWFnZURpY3QtPlJlbGVhc2UoKTsNCisgICAgfQ0KKyAgICBpZiAobV9wTGFzdENsb25lSW1hZ2VEaWN0KSB7DQorICAgICAgICBtX3BMYXN0Q2xvbmVJbWFnZURpY3QtPlJlbGVhc2UoKTsNCisgICAgfQ0KKyNpZmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgKGludCltX09iamVjdFNpemU7ICsraSkgew0KKyAgICAgICAgaWYgKCFtX3BPYmplY3RTdGF0ZVtpXSkgew0KKyAgICAgICAgICAgIG1fcE9iamVjdFN0YWNrW2ldLT5SZWxlYXNlKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfRnJlZShtX3BPYmplY3RTdGFjayk7DQorICAgIEZYX0ZyZWUobV9wT2JqZWN0U3RhdGUpOw0KKyAgICBGWF9GcmVlKG1fcFN0cmVhbUJ1Zik7DQorICAgIEZYX0ZyZWUobV9wV29yZEJ1Zik7DQorICAgIEZYX0ZyZWUobV9wRGljdE5hbWUpOw0KKyNlbmRpZg0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6UHJlcGFyZVBhcnNlKENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcFBhZ2VSZXNvdXJjZXMsIENQREZfRGljdGlvbmFyeSogcFBhcmVudFJlc291cmNlcywgQ0ZYX0FmZmluZU1hdHJpeCogcG10Q29udGVudFRvVXNlciwgQ1BERl9QYWdlT2JqZWN0cyogcE9iakxpc3QsDQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBSZXNvdXJjZXMsIENQREZfUmVjdCogcEJCb3gsIENQREZfUGFyc2VPcHRpb25zKiBwT3B0aW9ucywNCisgICAgICAgIENQREZfQWxsU3RhdGVzKiBwU3RhdGVzLCBpbnQgbGV2ZWwpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkgKyspIHsNCisgICAgICAgIG1fVHlwZTNEYXRhW2ldID0gMDsNCisgICAgfQ0KKyAgICBtX3BEb2N1bWVudCA9IHBEb2N1bWVudDsNCisgICAgbV9wUGFnZVJlc291cmNlcyA9IHBQYWdlUmVzb3VyY2VzOw0KKyAgICBtX3BQYXJlbnRSZXNvdXJjZXMgPSBwUGFyZW50UmVzb3VyY2VzOw0KKyAgICBpZiAocG10Q29udGVudFRvVXNlcikgew0KKyAgICAgICAgbV9tdENvbnRlbnRUb1VzZXIgPSAqcG10Q29udGVudFRvVXNlcjsNCisgICAgfQ0KKyAgICBpZiAocE9wdGlvbnMpIHsNCisgICAgICAgIG1fT3B0aW9ucyA9ICpwT3B0aW9uczsNCisgICAgfQ0KKyAgICBtX3BPYmplY3RMaXN0ID0gcE9iakxpc3Q7DQorICAgIG1fcFJlc291cmNlcyA9IHBSZXNvdXJjZXM7DQorICAgIGlmIChwUmVzb3VyY2VzID09IE5VTEwpIHsNCisgICAgICAgIG1fcFJlc291cmNlcyA9IG1fcFBhcmVudFJlc291cmNlczsNCisgICAgfQ0KKyAgICBpZiAobV9wUmVzb3VyY2VzID09IE5VTEwpIHsNCisgICAgICAgIG1fcFJlc291cmNlcyA9IHBQYWdlUmVzb3VyY2VzOw0KKyAgICB9DQorICAgIGlmIChwQkJveCkgew0KKyAgICAgICAgbV9CQm94ID0gKnBCQm94Ow0KKyAgICB9DQorICAgIG1fTGV2ZWwgPSBsZXZlbDsNCisgICAgbV9wQ3VyU3RhdGVzID0gRlhfTkVXIENQREZfQWxsU3RhdGVzOw0KKyAgICBpZiAocFN0YXRlcykgew0KKyAgICAgICAgbV9wQ3VyU3RhdGVzLT5Db3B5KCpwU3RhdGVzKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcEN1clN0YXRlcy0+bV9HZW5lcmFsU3RhdGUuTmV3KCk7DQorICAgICAgICBtX3BDdXJTdGF0ZXMtPm1fR3JhcGhTdGF0ZS5OZXcoKTsNCisgICAgICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGUuTmV3KCk7DQorICAgICAgICBtX3BDdXJTdGF0ZXMtPm1fQ29sb3JTdGF0ZS5OZXcoKTsNCisgICAgfQ0KKyNpZmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICBGWFNZU19tZW1zZXQzMihtX3BPYmplY3RTdGF0ZSwgMCwgX0ZQREZfTUFYX09CSkVDVF9TVEFDS19TSVpFXyAqIHNpemVvZihGWF9CT09MKSk7DQorI2VuZGlmDQorfQ0KK2ludCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkdldE5leHRQYXJhbVBvcygpDQorew0KKyAgICBpZiAobV9QYXJhbUNvdW50ID09IFBBUkFNX0JVRl9TSVpFKSB7DQorICAgICAgICBtX1BhcmFtU3RhcnRQb3MgKys7DQorICAgICAgICBpZiAobV9QYXJhbVN0YXJ0UG9zID09IFBBUkFNX0JVRl9TSVpFKSB7DQorICAgICAgICAgICAgbV9QYXJhbVN0YXJ0UG9zID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX1BhcmFtQnVmMVttX1BhcmFtU3RhcnRQb3NdLm1fVHlwZSA9PSAwKSB7DQorICAgICAgICAgICAgbV9QYXJhbUJ1ZjFbbV9QYXJhbVN0YXJ0UG9zXS5tX3BPYmplY3QtPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBtX1BhcmFtU3RhcnRQb3M7DQorICAgIH0NCisgICAgaW50IGluZGV4ID0gbV9QYXJhbVN0YXJ0UG9zICsgbV9QYXJhbUNvdW50Ow0KKyAgICBpZiAoaW5kZXggPj0gUEFSQU1fQlVGX1NJWkUpIHsNCisgICAgICAgIGluZGV4IC09IFBBUkFNX0JVRl9TSVpFOw0KKyAgICB9DQorICAgIG1fUGFyYW1Db3VudCArKzsNCisgICAgcmV0dXJuIGluZGV4Ow0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6QWRkTmFtZVBhcmFtKEZYX0xQQ1NUUiBuYW1lLCBpbnQgbGVuKQ0KK3sNCisgICAgaW50IGluZGV4ID0gR2V0TmV4dFBhcmFtUG9zKCk7DQorICAgIGlmIChsZW4gPiAzMikgew0KKyAgICAgICAgbV9QYXJhbUJ1ZjFbaW5kZXhdLm1fVHlwZSA9IDA7DQorICAgICAgICBtX1BhcmFtQnVmMVtpbmRleF0ubV9wT2JqZWN0ID0gQ1BERl9OYW1lOjpDcmVhdGUoUERGX05hbWVEZWNvZGUoQ0ZYX0J5dGVTdHJpbmdDKG5hbWUsIGxlbikpKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fUGFyYW1CdWYxW2luZGV4XS5tX1R5cGUgPSBQREZPQkpfTkFNRTsNCisgICAgICAgIGlmIChGWFNZU19tZW1jaHIobmFtZSwgJyMnLCBsZW4pID09IE5VTEwpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX1BhcmFtQnVmMVtpbmRleF0ubV9OYW1lLm1fQnVmZmVyLCBuYW1lLCBsZW4pOw0KKyAgICAgICAgICAgIG1fUGFyYW1CdWYxW2luZGV4XS5tX05hbWUubV9MZW4gPSBsZW47DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIHN0ciA9IFBERl9OYW1lRGVjb2RlKENGWF9CeXRlU3RyaW5nQyhuYW1lLCBsZW4pKTsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX1BhcmFtQnVmMVtpbmRleF0ubV9OYW1lLm1fQnVmZmVyLCAoRlhfTFBDU1RSKXN0ciwgc3RyLkdldExlbmd0aCgpKTsNCisgICAgICAgICAgICBtX1BhcmFtQnVmMVtpbmRleF0ubV9OYW1lLm1fTGVuID0gc3RyLkdldExlbmd0aCgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpBZGROdW1iZXJQYXJhbShGWF9MUENTVFIgc3RyLCBpbnQgbGVuKQ0KK3sNCisgICAgaW50IGluZGV4ID0gR2V0TmV4dFBhcmFtUG9zKCk7DQorICAgIG1fUGFyYW1CdWYxW2luZGV4XS5tX1R5cGUgPSBQREZPQkpfTlVNQkVSOw0KKyAgICBGWF9hdG9udW0oQ0ZYX0J5dGVTdHJpbmdDKHN0ciwgbGVuKSwgbV9QYXJhbUJ1ZjFbaW5kZXhdLm1fTnVtYmVyLm1fYkludGVnZXIsDQorICAgICAgICAgICAgICAmbV9QYXJhbUJ1ZjFbaW5kZXhdLm1fTnVtYmVyLm1fSW50ZWdlcik7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpBZGRPYmplY3RQYXJhbShDUERGX09iamVjdCogcE9iaikNCit7DQorICAgIGludCBpbmRleCA9IEdldE5leHRQYXJhbVBvcygpOw0KKyAgICBtX1BhcmFtQnVmMVtpbmRleF0ubV9UeXBlID0gMDsNCisgICAgbV9QYXJhbUJ1ZjFbaW5kZXhdLm1fcE9iamVjdCA9IHBPYmo7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpDbGVhckFsbFBhcmFtcygpDQorew0KKyAgICBGWF9EV09SRCBpbmRleCA9IG1fUGFyYW1TdGFydFBvczsNCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IG1fUGFyYW1Db3VudDsgaSArKykgew0KKyAgICAgICAgaWYgKG1fUGFyYW1CdWYxW2luZGV4XS5tX1R5cGUgPT0gMCkgew0KKyAgICAgICAgICAgIG1fUGFyYW1CdWYxW2luZGV4XS5tX3BPYmplY3QtPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgICAgIGluZGV4ICsrOw0KKyAgICAgICAgaWYgKGluZGV4ID09IFBBUkFNX0JVRl9TSVpFKSB7DQorICAgICAgICAgICAgaW5kZXggPSAwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fUGFyYW1TdGFydFBvcyA9IDA7DQorICAgIG1fUGFyYW1Db3VudCA9IDA7DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkdldE9iamVjdChGWF9EV09SRCBpbmRleCkNCit7DQorICAgIGlmIChpbmRleCA+PSBtX1BhcmFtQ291bnQpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGludCByZWFsX2luZGV4ID0gbV9QYXJhbVN0YXJ0UG9zICsgbV9QYXJhbUNvdW50IC0gaW5kZXggLSAxOw0KKyAgICBpZiAocmVhbF9pbmRleCA+PSBQQVJBTV9CVUZfU0laRSkgew0KKyAgICAgICAgcmVhbF9pbmRleCAtPSBQQVJBTV9CVUZfU0laRTsNCisgICAgfQ0KKyAgICBfQ29udGVudFBhcmFtJiBwYXJhbSA9IG1fUGFyYW1CdWYxW3JlYWxfaW5kZXhdOw0KKyAgICBpZiAocGFyYW0ubV9UeXBlID09IFBERk9CSl9OVU1CRVIpIHsNCisgICAgICAgIENQREZfTnVtYmVyKiBwTnVtYmVyID0gQ1BERl9OdW1iZXI6OkNyZWF0ZShwYXJhbS5tX051bWJlci5tX2JJbnRlZ2VyLCAmcGFyYW0ubV9OdW1iZXIubV9JbnRlZ2VyKTsNCisgICAgICAgIHBhcmFtLm1fVHlwZSA9IDA7DQorICAgICAgICBwYXJhbS5tX3BPYmplY3QgPSBwTnVtYmVyOw0KKyAgICAgICAgcmV0dXJuIHBOdW1iZXI7DQorICAgIH0NCisgICAgaWYgKHBhcmFtLm1fVHlwZSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgQ1BERl9OYW1lKiBwTmFtZSA9IENQREZfTmFtZTo6Q3JlYXRlKENGWF9CeXRlU3RyaW5nKHBhcmFtLm1fTmFtZS5tX0J1ZmZlciwgcGFyYW0ubV9OYW1lLm1fTGVuKSk7DQorICAgICAgICBwYXJhbS5tX1R5cGUgPSAwOw0KKyAgICAgICAgcGFyYW0ubV9wT2JqZWN0ID0gcE5hbWU7DQorICAgICAgICByZXR1cm4gcE5hbWU7DQorICAgIH0NCisgICAgaWYgKHBhcmFtLm1fVHlwZSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gcGFyYW0ubV9wT2JqZWN0Ow0KKyAgICB9DQorICAgIEFTU0VSVChGQUxTRSk7DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkdldFN0cmluZyhGWF9EV09SRCBpbmRleCkNCit7DQorICAgIGlmIChpbmRleCA+PSBtX1BhcmFtQ291bnQpIHsNCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIGludCByZWFsX2luZGV4ID0gbV9QYXJhbVN0YXJ0UG9zICsgbV9QYXJhbUNvdW50IC0gaW5kZXggLSAxOw0KKyAgICBpZiAocmVhbF9pbmRleCA+PSBQQVJBTV9CVUZfU0laRSkgew0KKyAgICAgICAgcmVhbF9pbmRleCAtPSBQQVJBTV9CVUZfU0laRTsNCisgICAgfQ0KKyAgICBfQ29udGVudFBhcmFtJiBwYXJhbSA9IG1fUGFyYW1CdWYxW3JlYWxfaW5kZXhdOw0KKyAgICBpZiAocGFyYW0ubV9UeXBlID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcocGFyYW0ubV9OYW1lLm1fQnVmZmVyLCBwYXJhbS5tX05hbWUubV9MZW4pOw0KKyAgICB9DQorICAgIGlmIChwYXJhbS5tX1R5cGUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIHBhcmFtLm1fcE9iamVjdC0+R2V0U3RyaW5nKCk7DQorICAgIH0NCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKCk7DQorfQ0KK0ZYX0ZMT0FUIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6R2V0TnVtYmVyKEZYX0RXT1JEIGluZGV4KQ0KK3sNCisgICAgaWYgKGluZGV4ID49IG1fUGFyYW1Db3VudCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaW50IHJlYWxfaW5kZXggPSBtX1BhcmFtU3RhcnRQb3MgKyBtX1BhcmFtQ291bnQgLSBpbmRleCAtIDE7DQorICAgIGlmIChyZWFsX2luZGV4ID49IFBBUkFNX0JVRl9TSVpFKSB7DQorICAgICAgICByZWFsX2luZGV4IC09IFBBUkFNX0JVRl9TSVpFOw0KKyAgICB9DQorICAgIF9Db250ZW50UGFyYW0mIHBhcmFtID0gbV9QYXJhbUJ1ZjFbcmVhbF9pbmRleF07DQorICAgIGlmIChwYXJhbS5tX1R5cGUgPT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgcmV0dXJuIHBhcmFtLm1fTnVtYmVyLm1fYkludGVnZXIgPyAoRlhfRkxPQVQpcGFyYW0ubV9OdW1iZXIubV9JbnRlZ2VyIDogcGFyYW0ubV9OdW1iZXIubV9GbG9hdDsNCisgICAgfQ0KKyAgICBpZiAocGFyYW0ubV9UeXBlID09IDApIHsNCisgICAgICAgIHJldHVybiBwYXJhbS5tX3BPYmplY3QtPkdldE51bWJlcigpOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitGWF9GTE9BVCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkdldE51bWJlcjE2KEZYX0RXT1JEIGluZGV4KQ0KK3sNCisgICAgcmV0dXJuIEdldE51bWJlcihpbmRleCk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpTZXRHcmFwaGljU3RhdGVzKENQREZfUGFnZU9iamVjdCogcE9iaiwgRlhfQk9PTCBiQ29sb3IsIEZYX0JPT0wgYlRleHQsIEZYX0JPT0wgYkdyYXBoKQ0KK3sNCisgICAgcE9iai0+bV9HZW5lcmFsU3RhdGUgPSBtX3BDdXJTdGF0ZXMtPm1fR2VuZXJhbFN0YXRlOw0KKyAgICBwT2JqLT5tX0NsaXBQYXRoID0gbV9wQ3VyU3RhdGVzLT5tX0NsaXBQYXRoOw0KKyAgICBwT2JqLT5tX0NvbnRlbnRNYXJrID0gbV9DdXJDb250ZW50TWFyazsNCisgICAgaWYgKGJDb2xvcikgew0KKyAgICAgICAgcE9iai0+bV9Db2xvclN0YXRlID0gbV9wQ3VyU3RhdGVzLT5tX0NvbG9yU3RhdGU7DQorICAgIH0NCisgICAgaWYgKGJHcmFwaCkgew0KKyAgICAgICAgcE9iai0+bV9HcmFwaFN0YXRlID0gbV9wQ3VyU3RhdGVzLT5tX0dyYXBoU3RhdGU7DQorICAgIH0NCisgICAgaWYgKGJUZXh0KSB7DQorICAgICAgICBwT2JqLT5tX1RleHRTdGF0ZSA9IG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGU7DQorICAgIH0NCit9DQorY29uc3Qgc3RydWN0IF9PcENvZGUgew0KKyAgICBGWF9EV09SRAltX09wSWQ7DQorICAgIHZvaWQgKENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6Km1fT3BIYW5kbGVyKSgpOw0KK30gZ19PcENvZGVzW10gPSB7DQorICAgIHtGWEJTVFJfSUQoJyInLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9OZXh0TGluZVNob3dUZXh0X1NwYWNlfSwNCisgICAge0ZYQlNUUl9JRCgnXCcnLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9OZXh0TGluZVNob3dUZXh0fSwNCisgICAge0ZYQlNUUl9JRCgnQicsIDAsIDAsIDApLAkJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0ZpbGxTdHJva2VQYXRofSwNCisgICAge0ZYQlNUUl9JRCgnQicsICcqJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9FT0ZpbGxTdHJva2VQYXRofSwNCisgICAge0ZYQlNUUl9JRCgnQicsICdEJywgJ0MnLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0JlZ2luTWFya2VkQ29udGVudF9EaWN0aW9uYXJ5fSwNCisgICAge0ZYQlNUUl9JRCgnQicsICdJJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9CZWdpbkltYWdlfSwNCisgICAge0ZYQlNUUl9JRCgnQicsICdNJywgJ0MnLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0JlZ2luTWFya2VkQ29udGVudH0sDQorICAgIHtGWEJTVFJfSUQoJ0InLCAnVCcsIDAsIDApLAkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQmVnaW5UZXh0fSwNCisgICAge0ZYQlNUUl9JRCgnQicsICdYJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9CZWdpblNlY3Rpb25VbmRlZmluZWR9LA0KKyAgICB7RlhCU1RSX0lEKCdDJywgJ1MnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldENvbG9yU3BhY2VfU3Ryb2tlfSwNCisgICAge0ZYQlNUUl9JRCgnRCcsICdQJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9NYXJrUGxhY2VfRGljdGlvbmFyeX0sDQorICAgIHtGWEJTVFJfSUQoJ0QnLCAnbycsIDAsIDApLAkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfRXhlY3V0ZVhPYmplY3R9LA0KKyAgICB7RlhCU1RSX0lEKCdFJywgJ0knLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0VuZEltYWdlfSwNCisgICAge0ZYQlNUUl9JRCgnRScsICdNJywgJ0MnLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0VuZE1hcmtlZENvbnRlbnR9LA0KKyAgICB7RlhCU1RSX0lEKCdFJywgJ1QnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0VuZFRleHR9LA0KKyAgICB7RlhCU1RSX0lEKCdFJywgJ1gnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0VuZFNlY3Rpb25VbmRlZmluZWR9LA0KKyAgICB7RlhCU1RSX0lEKCdGJywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfRmlsbFBhdGhPbGR9LA0KKyAgICB7RlhCU1RSX0lEKCdHJywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0R3JheV9TdHJva2V9LA0KKyAgICB7RlhCU1RSX0lEKCdJJywgJ0QnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0JlZ2luSW1hZ2VEYXRhfSwNCisgICAge0ZYQlNUUl9JRCgnSicsIDAsIDAsIDApLAkJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldExpbmVDYXB9LA0KKyAgICB7RlhCU1RSX0lEKCdLJywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0Q01ZS0NvbG9yX1N0cm9rZX0sDQorICAgIHtGWEJTVFJfSUQoJ00nLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRNaXRlckxpbWl0fSwNCisgICAge0ZYQlNUUl9JRCgnTScsICdQJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9NYXJrUGxhY2V9LA0KKyAgICB7RlhCU1RSX0lEKCdRJywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfUmVzdG9yZUdyYXBoU3RhdGV9LA0KKyAgICB7RlhCU1RSX0lEKCdSJywgJ0cnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldFJHQkNvbG9yX1N0cm9rZX0sDQorICAgIHtGWEJTVFJfSUQoJ1MnLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TdHJva2VQYXRofSwNCisgICAge0ZYQlNUUl9JRCgnUycsICdDJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRDb2xvcl9TdHJva2V9LA0KKyAgICB7RlhCU1RSX0lEKCdTJywgJ0MnLCAnTicsIDApLAkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0Q29sb3JQU19TdHJva2V9LA0KKyAgICB7RlhCU1RSX0lEKCdUJywgJyonLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX01vdmVUb05leHRMaW5lfSwNCisgICAge0ZYQlNUUl9JRCgnVCcsICdEJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9Nb3ZlVGV4dFBvaW50X1NldExlYWRpbmd9LA0KKyAgICB7RlhCU1RSX0lEKCdUJywgJ0onLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1Nob3dUZXh0X1Bvc2l0aW9uaW5nfSwNCisgICAge0ZYQlNUUl9JRCgnVCcsICdMJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRUZXh0TGVhZGluZ30sDQorICAgIHtGWEJTVFJfSUQoJ1QnLCAnYycsIDAsIDApLAkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0Q2hhclNwYWNlfSwNCisgICAge0ZYQlNUUl9JRCgnVCcsICdkJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9Nb3ZlVGV4dFBvaW50fSwNCisgICAge0ZYQlNUUl9JRCgnVCcsICdmJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRGb250fSwNCisgICAge0ZYQlNUUl9JRCgnVCcsICdqJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TaG93VGV4dH0sDQorICAgIHtGWEJTVFJfSUQoJ1QnLCAnbScsIDAsIDApLAkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0VGV4dE1hdHJpeH0sDQorICAgIHtGWEJTVFJfSUQoJ1QnLCAncicsIDAsIDApLAkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0VGV4dFJlbmRlck1vZGV9LA0KKyAgICB7RlhCU1RSX0lEKCdUJywgJ3MnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldFRleHRSaXNlfSwNCisgICAge0ZYQlNUUl9JRCgnVCcsICd3JywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRXb3JkU3BhY2V9LA0KKyAgICB7RlhCU1RSX0lEKCdUJywgJ3onLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldEhvcnpTY2FsZX0sDQorICAgIHtGWEJTVFJfSUQoJ1cnLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9DbGlwfSwNCisgICAge0ZYQlNUUl9JRCgnVycsICcqJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9FT0NsaXB9LA0KKyAgICB7RlhCU1RSX0lEKCdiJywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQ2xvc2VGaWxsU3Ryb2tlUGF0aH0sDQorICAgIHtGWEJTVFJfSUQoJ2InLCAnKicsIDAsIDApLAkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQ2xvc2VFT0ZpbGxTdHJva2VQYXRofSwNCisgICAge0ZYQlNUUl9JRCgnYycsIDAsIDAsIDApLAkJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0N1cnZlVG9fMTIzfSwNCisgICAge0ZYQlNUUl9JRCgnYycsICdtJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9Db25jYXRNYXRyaXh9LA0KKyAgICB7RlhCU1RSX0lEKCdjJywgJ3MnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldENvbG9yU3BhY2VfRmlsbH0sDQorICAgIHtGWEJTVFJfSUQoJ2QnLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXREYXNofSwNCisgICAge0ZYQlNUUl9JRCgnZCcsICcwJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRDaGFyV2lkdGh9LA0KKyAgICB7RlhCU1RSX0lEKCdkJywgJzEnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldENhY2hlZERldmljZX0sDQorICAgIHtGWEJTVFJfSUQoJ2YnLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9GaWxsUGF0aH0sDQorICAgIHtGWEJTVFJfSUQoJ2YnLCAnKicsIDAsIDApLAkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfRU9GaWxsUGF0aH0sDQorICAgIHtGWEJTVFJfSUQoJ2cnLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRHcmF5X0ZpbGx9LA0KKyAgICB7RlhCU1RSX0lEKCdnJywgJ3MnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldEV4dGVuZEdyYXBoU3RhdGV9LA0KKyAgICB7RlhCU1RSX0lEKCdoJywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQ2xvc2VQYXRofSwNCisgICAge0ZYQlNUUl9JRCgnaScsIDAsIDAsIDApLAkJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldEZsYXR9LA0KKyAgICB7RlhCU1RSX0lEKCdqJywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0TGluZUpvaW59LA0KKyAgICB7RlhCU1RSX0lEKCdrJywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0Q01ZS0NvbG9yX0ZpbGx9LA0KKyAgICB7RlhCU1RSX0lEKCdsJywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfTGluZVRvfSwNCisgICAge0ZYQlNUUl9JRCgnbScsIDAsIDAsIDApLAkJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX01vdmVUb30sDQorICAgIHtGWEJTVFJfSUQoJ24nLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9FbmRQYXRofSwNCisgICAge0ZYQlNUUl9JRCgncScsIDAsIDAsIDApLAkJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NhdmVHcmFwaFN0YXRlfSwNCisgICAge0ZYQlNUUl9JRCgncicsICdlJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9SZWN0YW5nbGV9LA0KKyAgICB7RlhCU1RSX0lEKCdyJywgJ2cnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldFJHQkNvbG9yX0ZpbGx9LA0KKyAgICB7RlhCU1RSX0lEKCdyJywgJ2knLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldFJlbmRlckludGVudH0sDQorICAgIHtGWEJTVFJfSUQoJ3MnLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9DbG9zZVN0cm9rZVBhdGh9LA0KKyAgICB7RlhCU1RSX0lEKCdzJywgJ2MnLCAwLCAwKSwJJkNQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldENvbG9yX0ZpbGx9LA0KKyAgICB7RlhCU1RSX0lEKCdzJywgJ2MnLCAnbicsIDApLAkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0Q29sb3JQU19GaWxsfSwNCisgICAge0ZYQlNUUl9JRCgncycsICdoJywgMCwgMCksCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TaGFkZUZpbGx9LA0KKyAgICB7RlhCU1RSX0lEKCd2JywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQ3VydmVUb18yM30sDQorICAgIHtGWEJTVFJfSUQoJ3cnLCAwLCAwLCAwKSwJCSZDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRMaW5lV2lkdGh9LA0KKyAgICB7RlhCU1RSX0lEKCd5JywgMCwgMCwgMCksCQkmQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQ3VydmVUb18xM30sDQorfTsNCitGWF9CT09MIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6T25PcGVyYXRvcihGWF9MUENTVFIgb3ApDQorew0KKyAgICBpbnQgaSA9IDA7DQorICAgIEZYX0RXT1JEIG9waWQgPSAwOw0KKyAgICB3aGlsZSAoaSA8IDQgJiYgb3BbaV0pIHsNCisgICAgICAgIG9waWQgPSAob3BpZCA8PCA4KSArIG9wW2ldOw0KKyAgICAgICAgaSArKzsNCisgICAgfQ0KKyAgICB3aGlsZSAoaSA8IDQpIHsNCisgICAgICAgIG9waWQgPDw9IDg7DQorICAgICAgICBpICsrOw0KKyAgICB9Ow0KKyAgICBpbnQgbG93ID0gMCwgaGlnaCA9IHNpemVvZiBnX09wQ29kZXMgLyBzaXplb2Yoc3RydWN0IF9PcENvZGUpIC0gMTsNCisgICAgd2hpbGUgKGxvdyA8PSBoaWdoKSB7DQorICAgICAgICBpbnQgbWlkZGxlID0gKGxvdyArIGhpZ2gpIC8gMjsNCisgICAgICAgIGludCBjb21wYXJlID0gb3BpZCAtIGdfT3BDb2Rlc1ttaWRkbGVdLm1fT3BJZDsNCisgICAgICAgIGlmIChjb21wYXJlID09IDApIHsNCisgICAgICAgICAgICAodGhpcy0+KmdfT3BDb2Rlc1ttaWRkbGVdLm1fT3BIYW5kbGVyKSgpOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfSBlbHNlIGlmIChjb21wYXJlIDwgMCkgew0KKyAgICAgICAgICAgIGhpZ2ggPSBtaWRkbGUgLSAxOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBsb3cgPSBtaWRkbGUgKyAxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBtX0NvbXBhdENvdW50ICE9IDA7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQ2xvc2VGaWxsU3Ryb2tlUGF0aCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgSGFuZGxlX0Nsb3NlUGF0aCgpOw0KKyAgICBBZGRQYXRoT2JqZWN0KEZYRklMTF9XSU5ESU5HLCBUUlVFKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9GaWxsU3Ryb2tlUGF0aCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQWRkUGF0aE9iamVjdChGWEZJTExfV0lORElORywgVFJVRSk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQ2xvc2VFT0ZpbGxTdHJva2VQYXRoKCkNCit7DQorICAgIGlmIChtX09wdGlvbnMubV9iVGV4dE9ubHkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBBZGRQYXRoUG9pbnQobV9QYXRoU3RhcnRYLCBtX1BhdGhTdGFydFksIEZYUFRfTElORVRPIHwgRlhQVF9DTE9TRUZJR1VSRSk7DQorICAgIEFkZFBhdGhPYmplY3QoRlhGSUxMX0FMVEVSTkFURSwgVFJVRSk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfRU9GaWxsU3Ryb2tlUGF0aCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQWRkUGF0aE9iamVjdChGWEZJTExfQUxURVJOQVRFLCBUUlVFKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9CZWdpbk1hcmtlZENvbnRlbnRfRGljdGlvbmFyeSgpDQorew0KKyAgICBpZiAoIW1fT3B0aW9ucy5tX2JNYXJrZWRDb250ZW50KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgdGFnID0gR2V0U3RyaW5nKDEpOw0KKyAgICBDUERGX09iamVjdCogcFByb3BlcnR5ID0gR2V0T2JqZWN0KDApOw0KKyAgICBpZiAocFByb3BlcnR5ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJEaXJlY3QgPSBUUlVFOw0KKyAgICBpZiAocFByb3BlcnR5LT5HZXRUeXBlKCkgPT0gUERGT0JKX05BTUUpIHsNCisgICAgICAgIHBQcm9wZXJ0eSA9IEZpbmRSZXNvdXJjZU9iaihGWF9CU1RSQygiUHJvcGVydGllcyIpLCBwUHJvcGVydHktPkdldFN0cmluZygpKTsNCisgICAgICAgIGlmIChwUHJvcGVydHkgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGJEaXJlY3QgPSBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocFByb3BlcnR5LT5HZXRUeXBlKCkgIT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX0N1ckNvbnRlbnRNYXJrLkdldE1vZGlmeSgpLT5BZGRNYXJrKHRhZywgKENQREZfRGljdGlvbmFyeSopcFByb3BlcnR5LCBiRGlyZWN0KTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9CZWdpbk1hcmtlZENvbnRlbnQoKQ0KK3sNCisgICAgaWYgKCFtX09wdGlvbnMubV9iTWFya2VkQ29udGVudCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIHRhZyA9IEdldFN0cmluZygwKTsNCisgICAgbV9DdXJDb250ZW50TWFyay5HZXRNb2RpZnkoKS0+QWRkTWFyayh0YWcsIE5VTEwsIEZBTFNFKTsNCit9DQorc3RydWN0IF9GWF9CU1RSIHsNCisgICAgRlhfTFBDU1RSCW1fUHRyOw0KKyAgICBpbnQJCQltX1NpemU7DQorfTsNCisjZGVmaW5lIF9GWF9CU1RSQyhzdHIpIHtzdHIsIHNpemVvZihzdHIpLTF9DQorY29uc3QgX0ZYX0JTVFIgX1BERl9JbmxpbmVLZXlBYmJyW10gPSB7DQorICAgIF9GWF9CU1RSQygiQml0c1BlckNvbXBvbmVudCIpLCBfRlhfQlNUUkMoIkJQQyIpLA0KKyAgICBfRlhfQlNUUkMoIkNvbG9yU3BhY2UiKSwgX0ZYX0JTVFJDKCJDUyIpLA0KKyAgICBfRlhfQlNUUkMoIkRlY29kZSIpLCBfRlhfQlNUUkMoIkQiKSwNCisgICAgX0ZYX0JTVFJDKCJEZWNvZGVQYXJtcyIpLCBfRlhfQlNUUkMoIkRQIiksDQorICAgIF9GWF9CU1RSQygiRmlsdGVyIiksIF9GWF9CU1RSQygiRiIpLA0KKyAgICBfRlhfQlNUUkMoIkhlaWdodCIpLCBfRlhfQlNUUkMoIkgiKSwNCisgICAgX0ZYX0JTVFJDKCJJbWFnZU1hc2siKSwgX0ZYX0JTVFJDKCJJTSIpLA0KKyAgICBfRlhfQlNUUkMoIkludGVycG9sYXRlIiksIF9GWF9CU1RSQygiSSIpLA0KKyAgICBfRlhfQlNUUkMoIldpZHRoIiksIF9GWF9CU1RSQygiVyIpLA0KK307DQorY29uc3QgX0ZYX0JTVFIgX1BERl9JbmxpbmVWYWx1ZUFiYnJbXSA9IHsNCisgICAgX0ZYX0JTVFJDKCJEZXZpY2VHcmF5IiksIF9GWF9CU1RSQygiRyIpLA0KKyAgICBfRlhfQlNUUkMoIkRldmljZVJHQiIpLCBfRlhfQlNUUkMoIlJHQiIpLA0KKyAgICBfRlhfQlNUUkMoIkRldmljZUNNWUsiKSwgX0ZYX0JTVFJDKCJDTVlLIiksDQorICAgIF9GWF9CU1RSQygiSW5kZXhlZCIpLCBfRlhfQlNUUkMoIkkiKSwNCisgICAgX0ZYX0JTVFJDKCJBU0NJSUhleERlY29kZSIpLCBfRlhfQlNUUkMoIkFIeCIpLA0KKyAgICBfRlhfQlNUUkMoIkFTQ0lJODVEZWNvZGUiKSwgX0ZYX0JTVFJDKCJBODUiKSwNCisgICAgX0ZYX0JTVFJDKCJMWldEZWNvZGUiKSwgX0ZYX0JTVFJDKCJMWlciKSwNCisgICAgX0ZYX0JTVFJDKCJGbGF0ZURlY29kZSIpLCBfRlhfQlNUUkMoIkZsIiksDQorICAgIF9GWF9CU1RSQygiUnVuTGVuZ3RoRGVjb2RlIiksIF9GWF9CU1RSQygiUkwiKSwNCisgICAgX0ZYX0JTVFJDKCJDQ0lUVEZheERlY29kZSIpLCBfRlhfQlNUUkMoIkNDRiIpLA0KKyAgICBfRlhfQlNUUkMoIkRDVERlY29kZSIpLCBfRlhfQlNUUkMoIkRDVCIpLA0KK307DQorc3RhdGljIENGWF9CeXRlU3RyaW5nQyBfUERGX0ZpbmRGdWxsTmFtZShjb25zdCBfRlhfQlNUUiogdGFibGUsIGludCBjb3VudCwgRlhfQlNUUiBhYmJyKQ0KK3sNCisgICAgaW50IGkgPSAwOw0KKyAgICB3aGlsZSAoaSA8IGNvdW50KSB7DQorICAgICAgICBpZiAoYWJici5HZXRMZW5ndGgoKSA9PSB0YWJsZVtpICsgMV0ubV9TaXplICYmIEZYU1lTX21lbWNtcDMyKGFiYnIuR2V0UHRyKCksIHRhYmxlW2kgKyAxXS5tX1B0ciwgYWJici5HZXRMZW5ndGgoKSkgPT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZ0ModGFibGVbaV0ubV9QdHIsIHRhYmxlW2ldLm1fU2l6ZSk7DQorICAgICAgICB9DQorICAgICAgICBpICs9IDI7DQorICAgIH0NCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nQygpOw0KK30NCit2b2lkIF9QREZfUmVwbGFjZUFiYnIoQ1BERl9PYmplY3QqIHBPYmopDQorew0KKyAgICBzd2l0Y2ggKHBPYmotPkdldFR5cGUoKSkgew0KKyAgICAgICAgY2FzZSBQREZPQkpfRElDVElPTkFSWTogew0KKyAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gKENQREZfRGljdGlvbmFyeSopcE9iajsNCisgICAgICAgICAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcERpY3QtPkdldFN0YXJ0UG9zKCk7DQorICAgICAgICAgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGtleTsNCisgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiB2YWx1ZSA9IHBEaWN0LT5HZXROZXh0RWxlbWVudChwb3MsIGtleSk7DQorICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZ0MgZnVsbG5hbWUgPSBfUERGX0ZpbmRGdWxsTmFtZShfUERGX0lubGluZUtleUFiYnIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgX1BERl9JbmxpbmVLZXlBYmJyIC8gc2l6ZW9mKF9GWF9CU1RSKSwga2V5KTsNCisgICAgICAgICAgICAgICAgICAgIGlmICghZnVsbG5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcERpY3QtPlJlcGxhY2VLZXkoa2V5LCBmdWxsbmFtZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gZnVsbG5hbWU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUtPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIG5hbWUgPSB2YWx1ZS0+R2V0U3RyaW5nKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUgPSBfUERGX0ZpbmRGdWxsTmFtZShfUERGX0lubGluZVZhbHVlQWJiciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiBfUERGX0lubGluZVZhbHVlQWJiciAvIHNpemVvZihfRlhfQlNUUiksIG5hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZnVsbG5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBEaWN0LT5TZXRBdE5hbWUoa2V5LCBmdWxsbmFtZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBfUERGX1JlcGxhY2VBYmJyKHZhbHVlKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIFBERk9CSl9BUlJBWTogew0KKyAgICAgICAgICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSAoQ1BERl9BcnJheSopcE9iajsNCisgICAgICAgICAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBBcnJheS0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBFbGVtZW50ID0gcEFycmF5LT5HZXRFbGVtZW50KGkpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBFbGVtZW50LT5HZXRUeXBlKCkgPT0gUERGT0JKX05BTUUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBuYW1lID0gcEVsZW1lbnQtPkdldFN0cmluZygpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nQyBmdWxsbmFtZSA9IF9QREZfRmluZEZ1bGxOYW1lKF9QREZfSW5saW5lVmFsdWVBYmJyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiBfUERGX0lubGluZVZhbHVlQWJiciAvIHNpemVvZihfRlhfQlNUUiksIG5hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZnVsbG5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBcnJheS0+U2V0QXQoaSwgQ1BERl9OYW1lOjpDcmVhdGUoZnVsbG5hbWUpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIF9QREZfUmVwbGFjZUFiYnIocEVsZW1lbnQpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KK30NCitzdGF0aWMgQ0ZYX0J5dGVTdHJpbmdDIF9QREZfRmluZEFiYnJOYW1lKGNvbnN0IF9GWF9CU1RSKiB0YWJsZSwgaW50IGNvdW50LCBGWF9CU1RSIGZ1bGxOYW1lKQ0KK3sNCisgICAgaW50IGkgPSAwOw0KKyAgICB3aGlsZSAoaSA8IGNvdW50KSB7DQorICAgICAgICBpZiAoZnVsbE5hbWUuR2V0TGVuZ3RoKCkgPT0gdGFibGVbaV0ubV9TaXplICYmIEZYU1lTX21lbWNtcDMyKGZ1bGxOYW1lLkdldFB0cigpLCB0YWJsZVtpXS5tX1B0ciwgZnVsbE5hbWUuR2V0TGVuZ3RoKCkpID09IDApIHsNCisgICAgICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKHRhYmxlW2kgKyAxXS5tX1B0ciwgdGFibGVbaSArIDFdLm1fU2l6ZSk7DQorICAgICAgICB9DQorICAgICAgICBpICs9IDI7DQorICAgIH0NCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nQygpOw0KK30NCit2b2lkIF9QREZfUmVwbGFjZUZ1bGwoQ1BERl9PYmplY3QqIHBPYmopDQorew0KKyAgICBzd2l0Y2ggKHBPYmotPkdldFR5cGUoKSkgew0KKyAgICAgICAgY2FzZSBQREZPQkpfRElDVElPTkFSWTogew0KKyAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gKENQREZfRGljdGlvbmFyeSopcE9iajsNCisgICAgICAgICAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcERpY3QtPkdldFN0YXJ0UG9zKCk7DQorICAgICAgICAgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGtleTsNCisgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiB2YWx1ZSA9IHBEaWN0LT5HZXROZXh0RWxlbWVudChwb3MsIGtleSk7DQorICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZ0MgYWJick5hbWUgPSBfUERGX0ZpbmRBYmJyTmFtZShfUERGX0lubGluZUtleUFiYnIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoX1BERl9JbmxpbmVLZXlBYmJyKSAvIHNpemVvZihfRlhfQlNUUiksIGtleSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoIWFiYnJOYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBEaWN0LT5SZXBsYWNlS2V5KGtleSwgYWJick5hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IGFiYnJOYW1lOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5HZXRUeXBlKCkgPT0gUERGT0JKX05BTUUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBuYW1lID0gdmFsdWUtPkdldFN0cmluZygpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFiYnJOYW1lID0gX1BERl9GaW5kQWJick5hbWUoX1BERl9JbmxpbmVWYWx1ZUFiYnIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoX1BERl9JbmxpbmVWYWx1ZUFiYnIpIC8gc2l6ZW9mKF9GWF9CU1RSKSwgbmFtZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhYmJyTmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcERpY3QtPlNldEF0TmFtZShrZXksIGFiYnJOYW1lKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIF9QREZfUmVwbGFjZUZ1bGwodmFsdWUpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGT0JKX0FSUkFZOiB7DQorICAgICAgICAgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwT2JqOw0KKyAgICAgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcEFycmF5LT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBDUERGX09iamVjdCogcEVsZW1lbnQgPSBwQXJyYXktPkdldEVsZW1lbnQoaSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEVsZW1lbnQtPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIG5hbWUgPSBwRWxlbWVudC0+R2V0U3RyaW5nKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmdDIGFiYnJOYW1lID0gX1BERl9GaW5kQWJick5hbWUoX1BERl9JbmxpbmVWYWx1ZUFiYnIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIF9QREZfSW5saW5lVmFsdWVBYmJyIC8gc2l6ZW9mKF9GWF9CU1RSKSwgbmFtZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhYmJyTmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFycmF5LT5TZXRBdChpLCBDUERGX05hbWU6OkNyZWF0ZShhYmJyTmFtZSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgX1BERl9SZXBsYWNlRnVsbChwRWxlbWVudCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQmVnaW5UZXh0KCkNCit7DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0TWF0cml4LlNldCgxLjBmLCAwLCAwLCAxLjBmLCAwLCAwKTsNCisgICAgT25DaGFuZ2VUZXh0TWF0cml4KCk7DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0WCA9IDA7DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0WSA9IDA7DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0TGluZVggPSAwOw0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dExpbmVZID0gMDsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9CZWdpblNlY3Rpb25VbmRlZmluZWQoKQ0KK3sNCisgICAgbV9Db21wYXRDb3VudCArKzsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9DdXJ2ZVRvXzEyMygpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQWRkUGF0aFBvaW50KEdldE51bWJlcig1KSwgR2V0TnVtYmVyKDQpLCBGWFBUX0JFWklFUlRPKTsNCisgICAgQWRkUGF0aFBvaW50KEdldE51bWJlcigzKSwgR2V0TnVtYmVyKDIpLCBGWFBUX0JFWklFUlRPKTsNCisgICAgQWRkUGF0aFBvaW50KEdldE51bWJlcigxKSwgR2V0TnVtYmVyKDApLCBGWFBUX0JFWklFUlRPKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9Db25jYXRNYXRyaXgoKQ0KK3sNCisgICAgRlhfRkxPQVQgYTIgPSBHZXROdW1iZXIxNig1KSwgYjIgPSBHZXROdW1iZXIxNig0KSwgYzIgPSBHZXROdW1iZXIxNigzKSwgZDIgPSBHZXROdW1iZXIxNigyKTsNCisgICAgRlhfRkxPQVQgZTIgPSBHZXROdW1iZXIoMSksIGYyID0gR2V0TnVtYmVyKDApOw0KKyAgICBGWF9GTE9BVCBvbGRfd2lkdGhfc2NhbGUgPSBtX3BDdXJTdGF0ZXMtPm1fQ1RNLkdldFhVbml0KCk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggbmV3X21hdHJpeChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKTsNCisgICAgbmV3X21hdHJpeC5Db25jYXQobV9wQ3VyU3RhdGVzLT5tX0NUTSk7DQorICAgIG1fcEN1clN0YXRlcy0+bV9DVE0gPSBuZXdfbWF0cml4Ow0KKyAgICBGWF9GTE9BVCBuZXdfd2lkdGhfc2NhbGUgPSBtX3BDdXJTdGF0ZXMtPm1fQ1RNLkdldFhVbml0KCk7DQorICAgIE9uQ2hhbmdlVGV4dE1hdHJpeCgpOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldENvbG9yU3BhY2VfRmlsbCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NuYW1lID0gR2V0U3RyaW5nKDApOw0KKyAgICBDUERGX0NvbG9yU3BhY2UqIHBDUyA9IEZpbmRDb2xvclNwYWNlKGNzbmFtZSk7DQorICAgIGlmIChwQ1MgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcEN1clN0YXRlcy0+bV9Db2xvclN0YXRlLkdldE1vZGlmeSgpLT5tX0ZpbGxDb2xvci5TZXRDb2xvclNwYWNlKHBDUyk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0Q29sb3JTcGFjZV9TdHJva2UoKQ0KK3sNCisgICAgaWYgKG1fT3B0aW9ucy5tX2JUZXh0T25seSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGNzbmFtZSA9IEdldFN0cmluZygwKTsNCisgICAgQ1BERl9Db2xvclNwYWNlKiBwQ1MgPSBGaW5kQ29sb3JTcGFjZShjc25hbWUpOw0KKyAgICBpZiAocENTID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fQ29sb3JTdGF0ZS5HZXRNb2RpZnkoKS0+bV9TdHJva2VDb2xvci5TZXRDb2xvclNwYWNlKHBDUyk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0RGFzaCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gR2V0T2JqZWN0KDEpLT5HZXRBcnJheSgpOw0KKyAgICBpZiAocEFycmF5ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BDdXJTdGF0ZXMtPlNldExpbmVEYXNoKHBBcnJheSwgR2V0TnVtYmVyKDApLCAxLjBmKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRDaGFyV2lkdGgoKQ0KK3sNCisgICAgbV9UeXBlM0RhdGFbMF0gPSBHZXROdW1iZXIoMSk7DQorICAgIG1fVHlwZTNEYXRhWzFdID0gR2V0TnVtYmVyKDApOw0KKyAgICBtX2JDb2xvcmVkID0gVFJVRTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRDYWNoZWREZXZpY2UoKQ0KK3sNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyBpICsrKSB7DQorICAgICAgICBtX1R5cGUzRGF0YVtpXSA9IEdldE51bWJlcig1IC0gaSk7DQorICAgIH0NCisgICAgbV9iQ29sb3JlZCA9IEZBTFNFOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0V4ZWN1dGVYT2JqZWN0KCkNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIG5hbWUgPSBHZXRTdHJpbmcoMCk7DQorICAgIGlmIChuYW1lID09IG1fTGFzdEltYWdlTmFtZSAmJiBtX3BMYXN0SW1hZ2UgJiYgbV9wTGFzdEltYWdlLT5HZXRTdHJlYW0oKSAmJiBtX3BMYXN0SW1hZ2UtPkdldFN0cmVhbSgpLT5HZXRPYmpOdW0oKSkgew0KKyNpZiBkZWZpbmVkKF9GUERGQVBJX01JTklfKSAmJiAhZGVmaW5lZChfRlhDT1JFX0ZFQVRVUkVfQUxMXykNCisgICAgICAgIEFkZER1cGxpY2F0ZUltYWdlKCk7DQorI2Vsc2UNCisgICAgICAgIEFkZEltYWdlKE5VTEwsIG1fcExhc3RJbWFnZSwgRkFMU0UpOw0KKyNlbmRpZg0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX09wdGlvbnMubV9iVGV4dE9ubHkpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwUmVzID0gTlVMTDsNCisgICAgICAgIGlmIChtX3BSZXNvdXJjZXMgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BSZXNvdXJjZXMgPT0gbV9wUGFnZVJlc291cmNlcykgew0KKyAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcExpc3QgPSBtX3BSZXNvdXJjZXMtPkdldERpY3QoRlhfQlNUUkMoIlhPYmplY3QiKSk7DQorICAgICAgICAgICAgaWYgKHBMaXN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwUmVzID0gcExpc3QtPkdldEVsZW1lbnQobmFtZSk7DQorICAgICAgICAgICAgaWYgKHBSZXMgPT0gTlVMTCB8fCBwUmVzLT5HZXRUeXBlKCkgIT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBMaXN0ID0gbV9wUmVzb3VyY2VzLT5HZXREaWN0KEZYX0JTVFJDKCJYT2JqZWN0IikpOw0KKyAgICAgICAgICAgIGlmIChwTGlzdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGlmIChtX3BQYWdlUmVzb3VyY2VzID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBMaXN0ID0gbV9wUGFnZVJlc291cmNlcy0+R2V0RGljdChGWF9CU1RSQygiWE9iamVjdCIpKTsNCisgICAgICAgICAgICAgICAgaWYgKHBMaXN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwUmVzID0gcExpc3QtPkdldEVsZW1lbnQobmFtZSk7DQorICAgICAgICAgICAgICAgIGlmIChwUmVzID09IE5VTEwgfHwgcFJlcy0+R2V0VHlwZSgpICE9IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBSZXMgPSBwTGlzdC0+R2V0RWxlbWVudChuYW1lKTsNCisgICAgICAgICAgICAgICAgaWYgKHBSZXMgPT0gTlVMTCB8fCBwUmVzLT5HZXRUeXBlKCkgIT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQk9PTCBiRm9ybTsNCisgICAgICAgIGlmIChtX3BEb2N1bWVudC0+SXNGb3JtU3RyZWFtKCgoQ1BERl9SZWZlcmVuY2UqKXBSZXMpLT5HZXRSZWZPYmpOdW0oKSwgYkZvcm0pICYmICFiRm9ybSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDUERGX1N0cmVhbSogcFhPYmplY3QgPSAoQ1BERl9TdHJlYW0qKUZpbmRSZXNvdXJjZU9iaihGWF9CU1RSQygiWE9iamVjdCIpLCBuYW1lKTsNCisgICAgaWYgKHBYT2JqZWN0ID09IE5VTEwgfHwgcFhPYmplY3QtPkdldFR5cGUoKSAhPSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICBtX2JSZXNvdXJjZU1pc3NpbmcgPSBUUlVFOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nQyB0eXBlID0gcFhPYmplY3QtPkdldERpY3QoKS0+R2V0Q29uc3RTdHJpbmcoRlhfQlNUUkMoIlN1YnR5cGUiKSk7DQorICAgIGlmICh0eXBlID09IEZYX0JTVFJDKCJJbWFnZSIpKSB7DQorICAgICAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9JbWFnZU9iamVjdCogcE9iaiA9IEFkZEltYWdlKHBYT2JqZWN0LCBOVUxMLCBGQUxTRSk7DQorICAgICAgICBtX0xhc3RJbWFnZU5hbWUgPSBuYW1lOw0KKyAgICAgICAgbV9wTGFzdEltYWdlID0gcE9iai0+bV9wSW1hZ2U7DQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSBGWF9CU1RSQygiRm9ybSIpKSB7DQorICAgICAgICBBZGRGb3JtKHBYT2JqZWN0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6QWRkRm9ybShDUERGX1N0cmVhbSogcFN0cmVhbSkNCit7DQorI2lmICFkZWZpbmVkKF9GUERGQVBJX01JTklfKSB8fCBkZWZpbmVkKF9GWENPUkVfRkVBVFVSRV9BTExfKQ0KKyAgICBpZiAoIW1fT3B0aW9ucy5tX2JTZXBhcmF0ZUZvcm0pIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcFJlc291cmNlcyA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0RGljdChGWF9CU1RSQygiUmVzb3VyY2VzIikpOw0KKyAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBmb3JtX21hdHJpeCA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0TWF0cml4KEZYX0JTVFJDKCJNYXRyaXgiKSk7DQorICAgICAgICBmb3JtX21hdHJpeC5Db25jYXQobV9wQ3VyU3RhdGVzLT5tX0NUTSk7DQorICAgICAgICBDUERGX0FycmF5KiBwQkJveCA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0QXJyYXkoRlhfQlNUUkMoIkJCb3giKSk7DQorICAgICAgICBDRlhfRmxvYXRSZWN0IGZvcm1fYmJveDsNCisgICAgICAgIENQREZfUGF0aCBDbGlwUGF0aDsNCisgICAgICAgIGlmIChwQkJveCkgew0KKyAgICAgICAgICAgIGZvcm1fYmJveCA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0UmVjdChGWF9CU1RSQygiQkJveCIpKTsNCisgICAgICAgICAgICBDbGlwUGF0aC5OZXcoKTsNCisgICAgICAgICAgICBDbGlwUGF0aC5BcHBlbmRSZWN0KGZvcm1fYmJveC5sZWZ0LCBmb3JtX2Jib3guYm90dG9tLCBmb3JtX2Jib3gucmlnaHQsIGZvcm1fYmJveC50b3ApOw0KKyAgICAgICAgICAgIENsaXBQYXRoLlRyYW5zZm9ybSgmZm9ybV9tYXRyaXgpOw0KKyAgICAgICAgICAgIGZvcm1fYmJveC5UcmFuc2Zvcm0oJmZvcm1fbWF0cml4KTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfU3RyZWFtQ29udGVudFBhcnNlciBwYXJzZXI7DQorICAgICAgICBwYXJzZXIuSW5pdGlhbGl6ZSgpOw0KKyAgICAgICAgcGFyc2VyLlByZXBhcmVQYXJzZShtX3BEb2N1bWVudCwgbV9wUGFnZVJlc291cmNlcywgbV9wUmVzb3VyY2VzLCAmbV9tdENvbnRlbnRUb1VzZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcE9iamVjdExpc3QsIHBSZXNvdXJjZXMsICZmb3JtX2Jib3gsICZtX09wdGlvbnMsIG1fcEN1clN0YXRlcywgbV9MZXZlbCArIDEpOw0KKyAgICAgICAgcGFyc2VyLm1fcEN1clN0YXRlcy0+bV9DVE0gPSBmb3JtX21hdHJpeDsNCisgICAgICAgIGlmIChDbGlwUGF0aC5Ob3ROdWxsKCkpIHsNCisgICAgICAgICAgICBwYXJzZXIubV9wQ3VyU3RhdGVzLT5tX0NsaXBQYXRoLkFwcGVuZFBhdGgoQ2xpcFBhdGgsIEZYRklMTF9XSU5ESU5HLCBUUlVFKTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfU3RyZWFtQWNjIHN0cmVhbTsNCisgICAgICAgIHN0cmVhbS5Mb2FkQWxsRGF0YShwU3RyZWFtLCBGQUxTRSk7DQorICAgICAgICBpZiAoc3RyZWFtLkdldFNpemUoKSA9PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyNpZmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICAgICAgcGFyc2VyLklucHV0RGF0YShzdHJlYW0uR2V0RGF0YSgpLCBzdHJlYW0uR2V0U2l6ZSgpKTsNCisgICAgICAgIHBhcnNlci5GaW5pc2goKTsNCisjZWxzZQ0KKyAgICAgICAgcGFyc2VyLlBhcnNlKHN0cmVhbS5HZXREYXRhKCksIHN0cmVhbS5HZXRTaXplKCksIDApOw0KKyNlbmRpZg0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorI2VuZGlmDQorICAgIENQREZfRm9ybU9iamVjdCogcEZvcm1PYmogPSBGWF9ORVcgQ1BERl9Gb3JtT2JqZWN0Ow0KKyAgICBwRm9ybU9iai0+bV9wRm9ybSA9IEZYX05FVyBDUERGX0Zvcm0obV9wRG9jdW1lbnQsIG1fcFBhZ2VSZXNvdXJjZXMsIHBTdHJlYW0sIG1fcFJlc291cmNlcyk7DQorICAgIHBGb3JtT2JqLT5tX0Zvcm1NYXRyaXggPSBtX3BDdXJTdGF0ZXMtPm1fQ1RNOw0KKyAgICBwRm9ybU9iai0+bV9Gb3JtTWF0cml4LkNvbmNhdChtX210Q29udGVudFRvVXNlcik7DQorICAgIENQREZfQWxsU3RhdGVzIHN0YXR1czsNCisgICAgc3RhdHVzLm1fR2VuZXJhbFN0YXRlID0gbV9wQ3VyU3RhdGVzLT5tX0dlbmVyYWxTdGF0ZTsNCisgICAgc3RhdHVzLm1fR3JhcGhTdGF0ZSA9IG1fcEN1clN0YXRlcy0+bV9HcmFwaFN0YXRlOw0KKyAgICBzdGF0dXMubV9Db2xvclN0YXRlID0gbV9wQ3VyU3RhdGVzLT5tX0NvbG9yU3RhdGU7DQorICAgIHN0YXR1cy5tX1RleHRTdGF0ZSA9IG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGU7DQorICAgIHBGb3JtT2JqLT5tX3BGb3JtLT5QYXJzZUNvbnRlbnQoJnN0YXR1cywgTlVMTCwgTlVMTCwgJm1fT3B0aW9ucywgbV9MZXZlbCArIDEpOw0KKyAgICBpZiAoIW1fcE9iamVjdExpc3QtPm1fYkJhY2tncm91bmRBbHBoYU5lZWRlZCAmJiBwRm9ybU9iai0+bV9wRm9ybS0+bV9iQmFja2dyb3VuZEFscGhhTmVlZGVkKSB7DQorICAgICAgICBtX3BPYmplY3RMaXN0LT5tX2JCYWNrZ3JvdW5kQWxwaGFOZWVkZWQgPSBUUlVFOw0KKyAgICB9DQorICAgIHBGb3JtT2JqLT5DYWxjQm91bmRpbmdCb3goKTsNCisgICAgU2V0R3JhcGhpY1N0YXRlcyhwRm9ybU9iaiwgVFJVRSwgVFJVRSwgVFJVRSk7DQorICAgIG1fcE9iamVjdExpc3QtPm1fT2JqZWN0TGlzdC5BZGRUYWlsKHBGb3JtT2JqKTsNCit9DQorI2lmIGRlZmluZWQoX0ZQREZBUElfTUlOSV8pICYmICFkZWZpbmVkKF9GWENPUkVfRkVBVFVSRV9BTExfKQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpBZGREdXBsaWNhdGVJbWFnZSgpDQorew0KKyAgICBGWF9QT1NJVElPTiB0YWlscG9zID0gbV9wT2JqZWN0TGlzdC0+bV9PYmplY3RMaXN0LkdldFRhaWxQb3NpdGlvbigpOw0KKyAgICBDUERGX1BhZ2VPYmplY3QqIHBMYXN0T2JqID0gKENQREZfUGFnZU9iamVjdCopbV9wT2JqZWN0TGlzdC0+bV9PYmplY3RMaXN0LkdldEF0KHRhaWxwb3MpOw0KKyAgICBpZiAocExhc3RPYmogPT0gTlVMTCB8fCAocExhc3RPYmotPm1fVHlwZSAhPSBQREZQQUdFX0lOTElORVMgJiYgcExhc3RPYmotPm1fVHlwZSAhPSBQREZQQUdFX0lNQUdFKSkgew0KKyAgICAgICAgQWRkSW1hZ2UoTlVMTCwgbV9wTGFzdEltYWdlLCBGQUxTRSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBMYXN0T2JqLT5tX0dlbmVyYWxTdGF0ZSAhPSBtX3BDdXJTdGF0ZXMtPm1fR2VuZXJhbFN0YXRlIHx8DQorICAgICAgICAgICAgcExhc3RPYmotPm1fQ2xpcFBhdGggIT0gbV9wQ3VyU3RhdGVzLT5tX0NsaXBQYXRoIHx8DQorICAgICAgICAgICAgcExhc3RPYmotPm1fQ29sb3JTdGF0ZSAhPSBtX3BDdXJTdGF0ZXMtPm1fQ29sb3JTdGF0ZSkgew0KKyAgICAgICAgQWRkSW1hZ2UoTlVMTCwgbV9wTGFzdEltYWdlLCBGQUxTRSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBJbWFnZU1hdHJpeDsNCisgICAgSW1hZ2VNYXRyaXguQ29weShtX3BDdXJTdGF0ZXMtPm1fQ1RNKTsNCisgICAgSW1hZ2VNYXRyaXguQ29uY2F0KG1fbXRDb250ZW50VG9Vc2VyKTsNCisgICAgaWYgKHBMYXN0T2JqLT5tX1R5cGUgPT0gUERGUEFHRV9JTkxJTkVTKSB7DQorICAgICAgICBDUERGX0lubGluZUltYWdlcyogcElubGluZXMgPSAoQ1BERl9JbmxpbmVJbWFnZXMqKXBMYXN0T2JqOw0KKyAgICAgICAgaWYgKHBJbmxpbmVzLT5tX3BTdHJlYW0gIT0gbV9wTGFzdEltYWdlLT5HZXRTdHJlYW0oKSkgew0KKyAgICAgICAgICAgIEFkZEltYWdlKE5VTEwsIG1fcExhc3RJbWFnZSwgRkFMU0UpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHBJbmxpbmVzLT5BZGRNYXRyaXgoSW1hZ2VNYXRyaXgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ1BERl9JbWFnZU9iamVjdCogcEltYWdlT2JqID0gKENQREZfSW1hZ2VPYmplY3QqKXBMYXN0T2JqOw0KKyAgICAgICAgQ1BERl9JbmxpbmVJbWFnZXMqIHBJbmxpbmVzID0gRlhfTkVXIENQREZfSW5saW5lSW1hZ2VzOw0KKyAgICAgICAgcElubGluZXMtPm1fcFN0cmVhbSA9IG1fcExhc3RJbWFnZS0+R2V0U3RyZWFtKCk7DQorICAgICAgICBTZXRHcmFwaGljU3RhdGVzKHBJbmxpbmVzLCAhcElubGluZXMtPm1fcFN0cmVhbS0+R2V0RGljdCgpLT5LZXlFeGlzdChGWF9CU1RSQygiQ29sb3JTcGFjZSIpKSwgRkFMU0UsIEZBTFNFKTsNCisgICAgICAgIHBJbmxpbmVzLT5BZGRNYXRyaXgocEltYWdlT2JqLT5tX01hdHJpeCk7DQorICAgICAgICBwSW5saW5lcy0+QWRkTWF0cml4KEltYWdlTWF0cml4KTsNCisgICAgICAgIG1fcE9iamVjdExpc3QtPm1fT2JqZWN0TGlzdC5SZW1vdmVBdCh0YWlscG9zKTsNCisgICAgICAgIG1fcE9iamVjdExpc3QtPm1fT2JqZWN0TGlzdC5BZGRUYWlsKHBJbmxpbmVzKTsNCisgICAgICAgIHBMYXN0T2JqLT5SZWxlYXNlKCk7DQorICAgIH0NCit9DQorI2VuZGlmDQorQ1BERl9JbWFnZU9iamVjdCogQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpBZGRJbWFnZShDUERGX1N0cmVhbSogcFN0cmVhbSwgQ1BERl9JbWFnZSogcEltYWdlLCBGWF9CT09MIGJJbmxpbmUpDQorew0KKyAgICBpZiAocFN0cmVhbSA9PSBOVUxMICYmIHBJbWFnZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfQWZmaW5lTWF0cml4IEltYWdlTWF0cml4Ow0KKyAgICBJbWFnZU1hdHJpeC5Db3B5KG1fcEN1clN0YXRlcy0+bV9DVE0pOw0KKyAgICBJbWFnZU1hdHJpeC5Db25jYXQobV9tdENvbnRlbnRUb1VzZXIpOw0KKyAgICBDUERGX0ltYWdlT2JqZWN0KiBwSW1hZ2VPYmogPSBGWF9ORVcgQ1BERl9JbWFnZU9iamVjdDsNCisgICAgaWYgKHBJbWFnZSkgew0KKyAgICAgICAgcEltYWdlT2JqLT5tX3BJbWFnZSA9IG1fcERvY3VtZW50LT5HZXRQYWdlRGF0YSgpLT5HZXRJbWFnZShwSW1hZ2UtPkdldFN0cmVhbSgpKTsNCisgICAgfSBlbHNlIGlmIChwU3RyZWFtLT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgcEltYWdlT2JqLT5tX3BJbWFnZSA9IG1fcERvY3VtZW50LT5Mb2FkSW1hZ2VGKHBTdHJlYW0pOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcEltYWdlT2JqLT5tX3BJbWFnZSA9IEZYX05FVyBDUERGX0ltYWdlKG1fcERvY3VtZW50KTsNCisgICAgICAgIHBJbWFnZU9iai0+bV9wSW1hZ2UtPkxvYWRJbWFnZUYocFN0cmVhbSwgYklubGluZSk7DQorICAgIH0NCisgICAgU2V0R3JhcGhpY1N0YXRlcyhwSW1hZ2VPYmosIHBJbWFnZU9iai0+bV9wSW1hZ2UtPklzTWFzaygpLCBGQUxTRSwgRkFMU0UpOw0KKyAgICBwSW1hZ2VPYmotPm1fTWF0cml4ID0gSW1hZ2VNYXRyaXg7DQorICAgIHBJbWFnZU9iai0+Q2FsY0JvdW5kaW5nQm94KCk7DQorICAgIG1fcE9iamVjdExpc3QtPm1fT2JqZWN0TGlzdC5BZGRUYWlsKHBJbWFnZU9iaik7DQorICAgIHJldHVybiBwSW1hZ2VPYmo7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfTWFya1BsYWNlX0RpY3Rpb25hcnkoKQ0KK3sNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9FbmRJbWFnZSgpDQorew0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0VuZE1hcmtlZENvbnRlbnQoKQ0KK3sNCisgICAgaWYgKCFtX09wdGlvbnMubV9iTWFya2VkQ29udGVudCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX0N1ckNvbnRlbnRNYXJrLklzTnVsbCgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IGNvdW50ID0gbV9DdXJDb250ZW50TWFyay5HZXRPYmplY3QoKS0+Q291bnRJdGVtcygpOw0KKyAgICBpZiAoY291bnQgPT0gMSkgew0KKyAgICAgICAgbV9DdXJDb250ZW50TWFyay5TZXROdWxsKCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9DdXJDb250ZW50TWFyay5HZXRNb2RpZnkoKS0+RGVsZXRlTGFzdE1hcmsoKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9FbmRUZXh0KCkNCit7DQorICAgIGludCBjb3VudCA9IG1fQ2xpcFRleHRMaXN0LkdldFNpemUoKTsNCisgICAgaWYgKGNvdW50ID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wQ3VyU3RhdGVzLT5tX1RleHRTdGF0ZS5HZXRPYmplY3QoKS0+bV9UZXh0TW9kZSA8IDQpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICBDUERGX1RleHRPYmplY3QqIHBUZXh0ID0gKENQREZfVGV4dE9iamVjdCopbV9DbGlwVGV4dExpc3QuR2V0QXQoaSk7DQorICAgICAgICAgICAgaWYgKHBUZXh0KSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBwVGV4dDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BDdXJTdGF0ZXMtPm1fQ2xpcFBhdGguQXBwZW5kVGV4dHMoKENQREZfVGV4dE9iamVjdCoqKW1fQ2xpcFRleHRMaXN0LkdldERhdGEoKSwgY291bnQpOw0KKyAgICB9DQorICAgIG1fQ2xpcFRleHRMaXN0LlJlbW92ZUFsbCgpOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0VuZFNlY3Rpb25VbmRlZmluZWQoKQ0KK3sNCisgICAgaWYgKG1fQ29tcGF0Q291bnQpIHsNCisgICAgICAgIG1fQ29tcGF0Q291bnQgLS07DQorICAgIH0NCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9GaWxsUGF0aCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQWRkUGF0aE9iamVjdChGWEZJTExfV0lORElORywgRkFMU0UpOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0ZpbGxQYXRoT2xkKCkNCit7DQorICAgIGlmIChtX09wdGlvbnMubV9iVGV4dE9ubHkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBBZGRQYXRoT2JqZWN0KEZYRklMTF9XSU5ESU5HLCBGQUxTRSk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfRU9GaWxsUGF0aCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQWRkUGF0aE9iamVjdChGWEZJTExfQUxURVJOQVRFLCBGQUxTRSk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0R3JheV9GaWxsKCkNCit7DQorICAgIEZYX0ZMT0FUIHZhbHVlID0gR2V0TnVtYmVyKDApOw0KKyAgICBDUERGX0NvbG9yU3BhY2UqIHBDUyA9IENQREZfQ29sb3JTcGFjZTo6R2V0U3RvY2tDUyhQREZDU19ERVZJQ0VHUkFZKTsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX0NvbG9yU3RhdGUuU2V0RmlsbENvbG9yKHBDUywgJnZhbHVlLCAxKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRHcmF5X1N0cm9rZSgpDQorew0KKyAgICBGWF9GTE9BVCB2YWx1ZSA9IEdldE51bWJlcigwKTsNCisgICAgQ1BERl9Db2xvclNwYWNlKiBwQ1MgPSBDUERGX0NvbG9yU3BhY2U6OkdldFN0b2NrQ1MoUERGQ1NfREVWSUNFR1JBWSk7DQorICAgIG1fcEN1clN0YXRlcy0+bV9Db2xvclN0YXRlLlNldFN0cm9rZUNvbG9yKHBDUywgJnZhbHVlLCAxKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRFeHRlbmRHcmFwaFN0YXRlKCkNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIG5hbWUgPSBHZXRTdHJpbmcoMCk7DQorICAgIENQREZfRGljdGlvbmFyeSogcEdTID0gKENQREZfRGljdGlvbmFyeSopRmluZFJlc291cmNlT2JqKEZYX0JTVFJDKCJFeHRHU3RhdGUiKSwgbmFtZSk7DQorICAgIGlmIChwR1MgPT0gTlVMTCB8fCBwR1MtPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgbV9iUmVzb3VyY2VNaXNzaW5nID0gVFJVRTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BDdXJTdGF0ZXMtPlByb2Nlc3NFeHRHUyhwR1MsIHRoaXMpOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0Nsb3NlUGF0aCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fUGF0aFBvaW50Q291bnQgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX1BhdGhTdGFydFggIT0gbV9QYXRoQ3VycmVudFggfHwgbV9QYXRoU3RhcnRZICE9IG1fUGF0aEN1cnJlbnRZKSB7DQorICAgICAgICBBZGRQYXRoUG9pbnQobV9QYXRoU3RhcnRYLCBtX1BhdGhTdGFydFksIEZYUFRfTElORVRPIHwgRlhQVF9DTE9TRUZJR1VSRSk7DQorICAgIH0gZWxzZSBpZiAobV9wUGF0aFBvaW50c1ttX1BhdGhQb2ludENvdW50IC0gMV0ubV9GbGFnICE9IEZYUFRfTU9WRVRPKSB7DQorICAgICAgICBtX3BQYXRoUG9pbnRzW21fUGF0aFBvaW50Q291bnQgLSAxXS5tX0ZsYWcgfD0gRlhQVF9DTE9TRUZJR1VSRTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldEZsYXQoKQ0KK3sNCisjaWYgIWRlZmluZWQoX0ZQREZBUElfTUlOSV8pIHx8IGRlZmluZWQoX0ZYQ09SRV9GRUFUVVJFX0FMTF8pDQorICAgIG1fcEN1clN0YXRlcy0+bV9HZW5lcmFsU3RhdGUuR2V0TW9kaWZ5KCktPm1fRmxhdG5lc3MgPSBHZXROdW1iZXIoMCk7DQorI2VuZGlmDQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfQmVnaW5JbWFnZURhdGEoKQ0KK3sNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRMaW5lSm9pbigpDQorew0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fR3JhcGhTdGF0ZS5HZXRNb2RpZnkoKS0+bV9MaW5lSm9pbiA9IChDRlhfR3JhcGhTdGF0ZURhdGE6OkxpbmVKb2luKUdldEludGVnZXIoMCk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0TGluZUNhcCgpDQorew0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fR3JhcGhTdGF0ZS5HZXRNb2RpZnkoKS0+bV9MaW5lQ2FwID0gKENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUNhcClHZXRJbnRlZ2VyKDApOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldENNWUtDb2xvcl9GaWxsKCkNCit7DQorICAgIFJFUVVJUkVfUEFSQU1TKDQpOw0KKyAgICBGWF9GTE9BVCB2YWx1ZXNbNF07DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgdmFsdWVzW2ldID0gR2V0TnVtYmVyKDMgLSBpKTsNCisgICAgfQ0KKyAgICBDUERGX0NvbG9yU3BhY2UqIHBDUyA9IENQREZfQ29sb3JTcGFjZTo6R2V0U3RvY2tDUyhQREZDU19ERVZJQ0VDTVlLKTsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX0NvbG9yU3RhdGUuU2V0RmlsbENvbG9yKHBDUywgdmFsdWVzLCA0KTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRDTVlLQ29sb3JfU3Ryb2tlKCkNCit7DQorICAgIFJFUVVJUkVfUEFSQU1TKDQpOw0KKyAgICBGWF9GTE9BVCB2YWx1ZXNbNF07DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgdmFsdWVzW2ldID0gR2V0TnVtYmVyKDMgLSBpKTsNCisgICAgfQ0KKyAgICBDUERGX0NvbG9yU3BhY2UqIHBDUyA9IENQREZfQ29sb3JTcGFjZTo6R2V0U3RvY2tDUyhQREZDU19ERVZJQ0VDTVlLKTsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX0NvbG9yU3RhdGUuU2V0U3Ryb2tlQ29sb3IocENTLCB2YWx1ZXMsIDQpOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0xpbmVUbygpDQorew0KKyAgICBSRVFVSVJFX1BBUkFNUygyKTsNCisgICAgaWYgKG1fT3B0aW9ucy5tX2JUZXh0T25seSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEFkZFBhdGhQb2ludChHZXROdW1iZXIoMSksIEdldE51bWJlcigwKSwgRlhQVF9MSU5FVE8pOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX01vdmVUbygpDQorew0KKyAgICBSRVFVSVJFX1BBUkFNUygyKTsNCisgICAgaWYgKG1fT3B0aW9ucy5tX2JUZXh0T25seSkgew0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgICAgIG1fcFN5bnRheC0+U2tpcFBhdGhPYmplY3QoKTsNCisjZW5kaWYNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBBZGRQYXRoUG9pbnQoR2V0TnVtYmVyKDEpLCBHZXROdW1iZXIoMCksIEZYUFRfTU9WRVRPKTsNCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgIFBhcnNlUGF0aE9iamVjdCgpOw0KKyNlbmRpZg0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldE1pdGVyTGltaXQoKQ0KK3sNCisgICAgbV9wQ3VyU3RhdGVzLT5tX0dyYXBoU3RhdGUuR2V0TW9kaWZ5KCktPm1fTWl0ZXJMaW1pdCA9IEdldE51bWJlcigwKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9NYXJrUGxhY2UoKQ0KK3sNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9FbmRQYXRoKCkNCit7DQorICAgIGlmIChtX09wdGlvbnMubV9iVGV4dE9ubHkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBBZGRQYXRoT2JqZWN0KDAsIEZBTFNFKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TYXZlR3JhcGhTdGF0ZSgpDQorew0KKyAgICBDUERGX0FsbFN0YXRlcyogcFN0YXRlcyA9IEZYX05FVyBDUERGX0FsbFN0YXRlczsNCisgICAgcFN0YXRlcy0+Q29weSgqbV9wQ3VyU3RhdGVzKTsNCisgICAgbV9TdGF0ZVN0YWNrLkFkZChwU3RhdGVzKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9SZXN0b3JlR3JhcGhTdGF0ZSgpDQorew0KKyAgICBpbnQgc2l6ZSA9IG1fU3RhdGVTdGFjay5HZXRTaXplKCk7DQorICAgIGlmIChzaXplID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0FsbFN0YXRlcyogcFN0YXRlcyA9IChDUERGX0FsbFN0YXRlcyopbV9TdGF0ZVN0YWNrLkdldEF0KHNpemUgLSAxKTsNCisgICAgbV9wQ3VyU3RhdGVzLT5Db3B5KCpwU3RhdGVzKTsNCisgICAgZGVsZXRlIHBTdGF0ZXM7DQorICAgIG1fU3RhdGVTdGFjay5SZW1vdmVBdChzaXplIC0gMSk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfUmVjdGFuZ2xlKCkNCit7DQorICAgIGlmIChtX09wdGlvbnMubV9iVGV4dE9ubHkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCB4ID0gR2V0TnVtYmVyKDMpLCB5ID0gR2V0TnVtYmVyKDIpOw0KKyAgICBGWF9GTE9BVCB3ID0gR2V0TnVtYmVyKDEpLCBoID0gR2V0TnVtYmVyKDApOw0KKyAgICBBZGRQYXRoUmVjdCh4LCB5LCB3LCBoKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkFkZFBhdGhSZWN0KEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHksIEZYX0ZMT0FUIHcsIEZYX0ZMT0FUIGgpDQorew0KKyAgICBBZGRQYXRoUG9pbnQoeCwgeSwgRlhQVF9NT1ZFVE8pOw0KKyAgICBBZGRQYXRoUG9pbnQoeCArIHcsIHksIEZYUFRfTElORVRPKTsNCisgICAgQWRkUGF0aFBvaW50KHggKyB3LCB5ICsgaCwgRlhQVF9MSU5FVE8pOw0KKyAgICBBZGRQYXRoUG9pbnQoeCwgeSArIGgsIEZYUFRfTElORVRPKTsNCisgICAgQWRkUGF0aFBvaW50KHgsIHksIEZYUFRfTElORVRPIHwgRlhQVF9DTE9TRUZJR1VSRSk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0UkdCQ29sb3JfRmlsbCgpDQorew0KKyAgICBSRVFVSVJFX1BBUkFNUygzKTsNCisgICAgRlhfRkxPQVQgdmFsdWVzWzNdOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkgKyspIHsNCisgICAgICAgIHZhbHVlc1tpXSA9IEdldE51bWJlcigyIC0gaSk7DQorICAgIH0NCisgICAgQ1BERl9Db2xvclNwYWNlKiBwQ1MgPSBDUERGX0NvbG9yU3BhY2U6OkdldFN0b2NrQ1MoUERGQ1NfREVWSUNFUkdCKTsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX0NvbG9yU3RhdGUuU2V0RmlsbENvbG9yKHBDUywgdmFsdWVzLCAzKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRSR0JDb2xvcl9TdHJva2UoKQ0KK3sNCisgICAgUkVRVUlSRV9QQVJBTVMoMyk7DQorICAgIEZYX0ZMT0FUIHZhbHVlc1szXTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpICsrKSB7DQorICAgICAgICB2YWx1ZXNbaV0gPSBHZXROdW1iZXIoMiAtIGkpOw0KKyAgICB9DQorICAgIENQREZfQ29sb3JTcGFjZSogcENTID0gQ1BERl9Db2xvclNwYWNlOjpHZXRTdG9ja0NTKFBERkNTX0RFVklDRVJHQik7DQorICAgIG1fcEN1clN0YXRlcy0+bV9Db2xvclN0YXRlLlNldFN0cm9rZUNvbG9yKHBDUywgdmFsdWVzLCAzKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRSZW5kZXJJbnRlbnQoKQ0KK3sNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9DbG9zZVN0cm9rZVBhdGgoKQ0KK3sNCisgICAgaWYgKG1fT3B0aW9ucy5tX2JUZXh0T25seSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEhhbmRsZV9DbG9zZVBhdGgoKTsNCisgICAgQWRkUGF0aE9iamVjdCgwLCBUUlVFKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TdHJva2VQYXRoKCkNCit7DQorICAgIGlmIChtX09wdGlvbnMubV9iVGV4dE9ubHkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBBZGRQYXRoT2JqZWN0KDAsIFRSVUUpOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldENvbG9yX0ZpbGwoKQ0KK3sNCisgICAgaWYgKG1fT3B0aW9ucy5tX2JUZXh0T25seSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIHZhbHVlc1s0XTsNCisgICAgaW50IG5hcmdzID0gbV9QYXJhbUNvdW50Ow0KKyAgICBpZiAobmFyZ3MgPiA0KSB7DQorICAgICAgICBuYXJncyA9IDQ7DQorICAgIH0NCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgaSArKykgew0KKyAgICAgICAgdmFsdWVzW2ldID0gR2V0TnVtYmVyKG5hcmdzIC0gaSAtIDEpOw0KKyAgICB9DQorICAgIG1fcEN1clN0YXRlcy0+bV9Db2xvclN0YXRlLlNldEZpbGxDb2xvcihOVUxMLCB2YWx1ZXMsIG5hcmdzKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRDb2xvcl9TdHJva2UoKQ0KK3sNCisgICAgaWYgKG1fT3B0aW9ucy5tX2JUZXh0T25seSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIHZhbHVlc1s0XTsNCisgICAgaW50IG5hcmdzID0gbV9QYXJhbUNvdW50Ow0KKyAgICBpZiAobmFyZ3MgPiA0KSB7DQorICAgICAgICBuYXJncyA9IDQ7DQorICAgIH0NCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgaSArKykgew0KKyAgICAgICAgdmFsdWVzW2ldID0gR2V0TnVtYmVyKG5hcmdzIC0gaSAtIDEpOw0KKyAgICB9DQorICAgIG1fcEN1clN0YXRlcy0+bV9Db2xvclN0YXRlLlNldFN0cm9rZUNvbG9yKE5VTEwsIHZhbHVlcywgbmFyZ3MpOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldENvbG9yUFNfRmlsbCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBMYXN0UGFyYW0gPSBHZXRPYmplY3QoMCk7DQorICAgIGlmIChwTGFzdFBhcmFtID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgbmFyZ3MgPSBtX1BhcmFtQ291bnQ7DQorICAgIGludCBudmFsdWVzID0gbmFyZ3M7DQorICAgIGlmIChwTGFzdFBhcmFtLT5HZXRUeXBlKCkgPT0gUERGT0JKX05BTUUpIHsNCisgICAgICAgIG52YWx1ZXMgLS07DQorICAgIH0NCisgICAgRlhfRkxPQVQqIHZhbHVlcyA9IE5VTEw7DQorICAgIGlmIChudmFsdWVzKSB7DQorICAgICAgICB2YWx1ZXMgPSBGWF9BbGxvYyhGWF9GTE9BVCwgbnZhbHVlcyk7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG52YWx1ZXM7IGkgKyspIHsNCisgICAgICAgICAgICB2YWx1ZXNbaV0gPSBHZXROdW1iZXIobmFyZ3MgLSBpIC0gMSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG52YWx1ZXMgIT0gbmFyZ3MpIHsNCisgICAgICAgIENQREZfUGF0dGVybiogcFBhdHRlcm4gPSBGaW5kUGF0dGVybihHZXRTdHJpbmcoMCksIEZBTFNFKTsNCisgICAgICAgIGlmIChwUGF0dGVybikgew0KKyAgICAgICAgICAgIG1fcEN1clN0YXRlcy0+bV9Db2xvclN0YXRlLlNldEZpbGxQYXR0ZXJuKHBQYXR0ZXJuLCB2YWx1ZXMsIG52YWx1ZXMpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wQ3VyU3RhdGVzLT5tX0NvbG9yU3RhdGUuU2V0RmlsbENvbG9yKE5VTEwsIHZhbHVlcywgbnZhbHVlcyk7DQorICAgIH0NCisgICAgaWYgKHZhbHVlcykgew0KKyAgICAgICAgRlhfRnJlZSh2YWx1ZXMpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0Q29sb3JQU19TdHJva2UoKQ0KK3sNCisgICAgaWYgKG1fT3B0aW9ucy5tX2JUZXh0T25seSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwTGFzdFBhcmFtID0gR2V0T2JqZWN0KDApOw0KKyAgICBpZiAocExhc3RQYXJhbSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IG5hcmdzID0gbV9QYXJhbUNvdW50Ow0KKyAgICBpbnQgbnZhbHVlcyA9IG5hcmdzOw0KKyAgICBpZiAocExhc3RQYXJhbS0+R2V0VHlwZSgpID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICBudmFsdWVzIC0tOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUKiB2YWx1ZXMgPSBOVUxMOw0KKyAgICBpZiAobnZhbHVlcykgew0KKyAgICAgICAgdmFsdWVzID0gRlhfQWxsb2MoRlhfRkxPQVQsIG52YWx1ZXMpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudmFsdWVzOyBpICsrKSB7DQorICAgICAgICAgICAgdmFsdWVzW2ldID0gR2V0TnVtYmVyKG5hcmdzIC0gaSAtIDEpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChudmFsdWVzICE9IG5hcmdzKSB7DQorICAgICAgICBDUERGX1BhdHRlcm4qIHBQYXR0ZXJuID0gRmluZFBhdHRlcm4oR2V0U3RyaW5nKDApLCBGQUxTRSk7DQorICAgICAgICBpZiAocFBhdHRlcm4pIHsNCisgICAgICAgICAgICBtX3BDdXJTdGF0ZXMtPm1fQ29sb3JTdGF0ZS5TZXRTdHJva2VQYXR0ZXJuKHBQYXR0ZXJuLCB2YWx1ZXMsIG52YWx1ZXMpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wQ3VyU3RhdGVzLT5tX0NvbG9yU3RhdGUuU2V0U3Ryb2tlQ29sb3IoTlVMTCwgdmFsdWVzLCBudmFsdWVzKTsNCisgICAgfQ0KKyAgICBpZiAodmFsdWVzKSB7DQorICAgICAgICBGWF9GcmVlKHZhbHVlcyk7DQorICAgIH0NCit9DQorQ0ZYX0Zsb2F0UmVjdCBfR2V0U2hhZGluZ0JCb3goQ1BERl9TdHJlYW0qIHBTdHJlYW0sIGludCB0eXBlLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfRnVuY3Rpb24qKiBwRnVuY3MsIGludCBuRnVuY3MsIENQREZfQ29sb3JTcGFjZSogcENTKTsNCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NoYWRlRmlsbCgpDQorew0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9QYXR0ZXJuKiBwUGF0dGVybiA9IEZpbmRQYXR0ZXJuKEdldFN0cmluZygwKSwgVFJVRSk7DQorICAgIGlmIChwUGF0dGVybiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBQYXR0ZXJuLT5tX1BhdHRlcm5UeXBlICE9IFBBVFRFUk5fU0hBRElORykgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfU2hhZGluZ1BhdHRlcm4qIHBTaGFkaW5nID0gKENQREZfU2hhZGluZ1BhdHRlcm4qKXBQYXR0ZXJuOw0KKyAgICBpZiAoIXBTaGFkaW5nLT5tX2JTaGFkaW5nT2JqKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKCFwU2hhZGluZy0+TG9hZCgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9TaGFkaW5nT2JqZWN0KiBwT2JqID0gRlhfTkVXIENQREZfU2hhZGluZ09iamVjdDsNCisgICAgcE9iai0+bV9wU2hhZGluZyA9IHBTaGFkaW5nOw0KKyAgICBTZXRHcmFwaGljU3RhdGVzKHBPYmosIEZBTFNFLCBGQUxTRSwgRkFMU0UpOw0KKyAgICBwT2JqLT5tX01hdHJpeCA9IG1fcEN1clN0YXRlcy0+bV9DVE07DQorICAgIHBPYmotPm1fTWF0cml4LkNvbmNhdChtX210Q29udGVudFRvVXNlcik7DQorICAgIENGWF9GbG9hdFJlY3QgYmJveDsNCisgICAgaWYgKCFwT2JqLT5tX0NsaXBQYXRoLklzTnVsbCgpKSB7DQorICAgICAgICBiYm94ID0gcE9iai0+bV9DbGlwUGF0aC5HZXRDbGlwQm94KCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBiYm94ID0gbV9CQm94Ow0KKyAgICB9DQorICAgIGlmIChwU2hhZGluZy0+bV9TaGFkaW5nVHlwZSA+PSA0KSB7DQorICAgICAgICBiYm94LkludGVyc2VjdChfR2V0U2hhZGluZ0JCb3goKENQREZfU3RyZWFtKilwU2hhZGluZy0+bV9wU2hhZGluZ09iaiwgcFNoYWRpbmctPm1fU2hhZGluZ1R5cGUsICZwT2JqLT5tX01hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU2hhZGluZy0+bV9wRnVuY3Rpb25zLCBwU2hhZGluZy0+bV9uRnVuY3MsIHBTaGFkaW5nLT5tX3BDUykpOw0KKyAgICB9DQorICAgIHBPYmotPm1fTGVmdCA9IGJib3gubGVmdDsNCisgICAgcE9iai0+bV9SaWdodCA9IGJib3gucmlnaHQ7DQorICAgIHBPYmotPm1fVG9wID0gYmJveC50b3A7DQorICAgIHBPYmotPm1fQm90dG9tID0gYmJveC5ib3R0b207DQorICAgIG1fcE9iamVjdExpc3QtPm1fT2JqZWN0TGlzdC5BZGRUYWlsKHBPYmopOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldENoYXJTcGFjZSgpDQorew0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dFN0YXRlLkdldE1vZGlmeSgpLT5tX0NoYXJTcGFjZSA9IEdldE51bWJlcigwKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9Nb3ZlVGV4dFBvaW50KCkNCit7DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0TGluZVggKz0gR2V0TnVtYmVyKDEpOw0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dExpbmVZICs9IEdldE51bWJlcigwKTsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRYID0gbV9wQ3VyU3RhdGVzLT5tX1RleHRMaW5lWDsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRZID0gbV9wQ3VyU3RhdGVzLT5tX1RleHRMaW5lWTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9Nb3ZlVGV4dFBvaW50X1NldExlYWRpbmcoKQ0KK3sNCisgICAgSGFuZGxlX01vdmVUZXh0UG9pbnQoKTsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRMZWFkaW5nID0gLUdldE51bWJlcigwKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRGb250KCkNCit7DQorICAgIEZYX0ZMT0FUIGZzID0gR2V0TnVtYmVyKDApOw0KKyAgICBpZiAoZnMgPT0gMCkgew0KKyAgICAgICAgZnMgPSBtX0RlZkZvbnRTaXplOw0KKyAgICB9DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGUuR2V0TW9kaWZ5KCktPm1fRm9udFNpemUgPSBmczsNCisgICAgQ1BERl9Gb250KiBwRm9udCA9IEZpbmRGb250KEdldFN0cmluZygxKSk7DQorICAgIGlmIChwRm9udCkgew0KKyAgICAgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRTdGF0ZS5TZXRGb250KHBGb250KTsNCisgICAgfQ0KK30NCitDUERGX09iamVjdCogQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpGaW5kUmVzb3VyY2VPYmooRlhfQlNUUiB0eXBlLCBjb25zdCBDRlhfQnl0ZVN0cmluZyYgbmFtZSkNCit7DQorICAgIGlmIChtX3BSZXNvdXJjZXMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKG1fcFJlc291cmNlcyA9PSBtX3BQYWdlUmVzb3VyY2VzKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBMaXN0ID0gbV9wUmVzb3VyY2VzLT5HZXREaWN0KHR5cGUpOw0KKyAgICAgICAgaWYgKHBMaXN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfT2JqZWN0KiBwUmVzID0gcExpc3QtPkdldEVsZW1lbnRWYWx1ZShuYW1lKTsNCisgICAgICAgIHJldHVybiBwUmVzOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcExpc3QgPSBtX3BSZXNvdXJjZXMtPkdldERpY3QodHlwZSk7DQorICAgIGlmIChwTGlzdCA9PSBOVUxMKSB7DQorICAgICAgICBpZiAobV9wUGFnZVJlc291cmNlcyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBMaXN0ID0gbV9wUGFnZVJlc291cmNlcy0+R2V0RGljdCh0eXBlKTsNCisgICAgICAgIGlmIChwTGlzdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBDUERGX09iamVjdCogcFJlcyA9IHBMaXN0LT5HZXRFbGVtZW50VmFsdWUobmFtZSk7DQorICAgICAgICByZXR1cm4gcFJlczsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcFJlcyA9IHBMaXN0LT5HZXRFbGVtZW50VmFsdWUobmFtZSk7DQorICAgIHJldHVybiBwUmVzOw0KK30NCitDUERGX0ZvbnQqIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6RmluZEZvbnQoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpDQorew0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250RGljdCA9IChDUERGX0RpY3Rpb25hcnkqKUZpbmRSZXNvdXJjZU9iaihGWF9CU1RSQygiRm9udCIpLCBuYW1lKTsNCisgICAgaWYgKHBGb250RGljdCA9PSBOVUxMIHx8IHBGb250RGljdC0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICBtX2JSZXNvdXJjZU1pc3NpbmcgPSBUUlVFOw0KKyAgICAgICAgcmV0dXJuIENQREZfRm9udDo6R2V0U3RvY2tGb250KG1fcERvY3VtZW50LCBGWF9CU1RSQygiSGVsdmV0aWNhIikpOw0KKyAgICB9DQorICAgIENQREZfRm9udCogcEZvbnQgPSBtX3BEb2N1bWVudC0+TG9hZEZvbnQocEZvbnREaWN0KTsNCisgICAgaWYgKHBGb250ICYmIHBGb250LT5HZXRUeXBlM0ZvbnQoKSkgew0KKyAgICAgICAgcEZvbnQtPkdldFR5cGUzRm9udCgpLT5TZXRQYWdlUmVzb3VyY2VzKG1fcFJlc291cmNlcyk7DQorICAgICAgICBwRm9udC0+R2V0VHlwZTNGb250KCktPkNoZWNrVHlwZTNGb250TWV0cmljcygpOw0KKyAgICB9DQorICAgIHJldHVybiBwRm9udDsNCit9DQorQ1BERl9Db2xvclNwYWNlKiBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkZpbmRDb2xvclNwYWNlKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lKQ0KK3sNCisgICAgaWYgKG5hbWUgPT0gRlhfQlNUUkMoIlBhdHRlcm4iKSkgew0KKyAgICAgICAgcmV0dXJuIENQREZfQ29sb3JTcGFjZTo6R2V0U3RvY2tDUyhQREZDU19QQVRURVJOKTsNCisgICAgfQ0KKyAgICBpZiAobmFtZSA9PSBGWF9CU1RSQygiRGV2aWNlR3JheSIpIHx8IG5hbWUgPT0gRlhfQlNUUkMoIkRldmljZUNNWUsiKSB8fCBuYW1lID09IEZYX0JTVFJDKCJEZXZpY2VSR0IiKSkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgZGVmbmFtZSA9ICJEZWZhdWx0IjsNCisgICAgICAgIGRlZm5hbWUgKz0gbmFtZS5NaWQoNyk7DQorICAgICAgICBDUERGX09iamVjdCogcERlZk9iaiA9IEZpbmRSZXNvdXJjZU9iaihGWF9CU1RSQygiQ29sb3JTcGFjZSIpLCBkZWZuYW1lKTsNCisgICAgICAgIGlmIChwRGVmT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICBpZiAobmFtZSA9PSBGWF9CU1RSQygiRGV2aWNlR3JheSIpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBDUERGX0NvbG9yU3BhY2U6OkdldFN0b2NrQ1MoUERGQ1NfREVWSUNFR1JBWSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChuYW1lID09IEZYX0JTVFJDKCJEZXZpY2VSR0IiKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gQ1BERl9Db2xvclNwYWNlOjpHZXRTdG9ja0NTKFBERkNTX0RFVklDRVJHQik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBDUERGX0NvbG9yU3BhY2U6OkdldFN0b2NrQ1MoUERGQ1NfREVWSUNFQ01ZSyk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gbV9wRG9jdW1lbnQtPkxvYWRDb2xvclNwYWNlKHBEZWZPYmopOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwQ1NPYmogPSBGaW5kUmVzb3VyY2VPYmooRlhfQlNUUkMoIkNvbG9yU3BhY2UiKSwgbmFtZSk7DQorICAgIGlmIChwQ1NPYmogPT0gTlVMTCkgew0KKyAgICAgICAgbV9iUmVzb3VyY2VNaXNzaW5nID0gVFJVRTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BEb2N1bWVudC0+TG9hZENvbG9yU3BhY2UocENTT2JqKTsNCit9DQorQ1BERl9QYXR0ZXJuKiBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkZpbmRQYXR0ZXJuKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lLCBGWF9CT09MIGJTaGFkaW5nKQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBQYXR0ZXJuID0gRmluZFJlc291cmNlT2JqKGJTaGFkaW5nID8gRlhfQlNUUkMoIlNoYWRpbmciKSA6IEZYX0JTVFJDKCJQYXR0ZXJuIiksIG5hbWUpOw0KKyAgICBpZiAocFBhdHRlcm4gPT0gTlVMTCB8fCAocFBhdHRlcm4tPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFBhdHRlcm4tPkdldFR5cGUoKSAhPSBQREZPQkpfU1RSRUFNKSkgew0KKyAgICAgICAgbV9iUmVzb3VyY2VNaXNzaW5nID0gVFJVRTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BEb2N1bWVudC0+TG9hZFBhdHRlcm4ocFBhdHRlcm4sIGJTaGFkaW5nLCAmbV9wQ3VyU3RhdGVzLT5tX1BhcmVudE1hdHJpeCk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpDb252ZXJ0VGV4dFNwYWNlKEZYX0ZMT0FUJiB4LCBGWF9GTE9BVCYgeSkNCit7DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0TWF0cml4LlRyYW5zZm9ybSh4LCB5LCB4LCB5KTsNCisgICAgQ29udmVydFVzZXJTcGFjZSh4LCB5KTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkNvbnZlcnRVc2VyU3BhY2UoRlhfRkxPQVQmIHgsIEZYX0ZMT0FUJiB5KQ0KK3sNCisgICAgbV9wQ3VyU3RhdGVzLT5tX0NUTS5UcmFuc2Zvcm0oeCwgeSwgeCwgeSk7DQorICAgIG1fbXRDb250ZW50VG9Vc2VyLlRyYW5zZm9ybSh4LCB5LCB4LCB5KTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkFkZFRleHRPYmplY3QoQ0ZYX0J5dGVTdHJpbmcqIHBTdHJzLCBGWF9GTE9BVCBmSW5pdEtlcm5pbmcsIEZYX0ZMT0FUKiBwS2VybmluZywgaW50IG5zZWdzKQ0KK3sNCisgICAgQ1BERl9Gb250KiBwRm9udCA9IG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGUuR2V0Rm9udCgpOw0KKyAgICBpZiAocEZvbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChmSW5pdEtlcm5pbmcgIT0gMCkgew0KKyAgICAgICAgaWYgKCFwRm9udC0+SXNWZXJ0V3JpdGluZygpKSB7DQorICAgICAgICAgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRYIC09IEZYU1lTX011bChmSW5pdEtlcm5pbmcsIG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemUoKSkgLyAxMDAwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dFkgLT0gRlhTWVNfTXVsKGZJbml0S2VybmluZywgbV9wQ3VyU3RhdGVzLT5tX1RleHRTdGF0ZS5HZXRGb250U2l6ZSgpKSAvIDEwMDA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG5zZWdzID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgdGV4dG1vZGU7DQorICAgIGlmIChwRm9udC0+R2V0Rm9udFR5cGUoKSA9PSBQREZGT05UX1RZUEUzKSB7DQorICAgICAgICB0ZXh0bW9kZSA9IDA7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB0ZXh0bW9kZSA9IG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGUuR2V0T2JqZWN0KCktPm1fVGV4dE1vZGU7DQorICAgIH0NCisgICAgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dCA9IEZYX05FVyBDUERGX1RleHRPYmplY3Q7DQorICAgIG1fcExhc3RUZXh0T2JqZWN0ID0gcFRleHQ7DQorICAgIFNldEdyYXBoaWNTdGF0ZXMocFRleHQsIFRSVUUsIFRSVUUsIFRSVUUpOw0KKyAgICBpZiAodGV4dG1vZGUgJiYgdGV4dG1vZGUgIT0gMyAmJiB0ZXh0bW9kZSAhPSA0ICYmIHRleHRtb2RlICE9IDcpIHsNCisgICAgICAgIEZYX0ZMT0FUKiBwQ1RNID0gcFRleHQtPm1fVGV4dFN0YXRlLkdldE1vZGlmeSgpLT5tX0NUTTsNCisgICAgICAgIHBDVE1bMF0gPSBtX3BDdXJTdGF0ZXMtPm1fQ1RNLmE7DQorICAgICAgICBwQ1RNWzFdID0gbV9wQ3VyU3RhdGVzLT5tX0NUTS5jOw0KKyAgICAgICAgcENUTVsyXSA9IG1fcEN1clN0YXRlcy0+bV9DVE0uYjsNCisgICAgICAgIHBDVE1bM10gPSBtX3BDdXJTdGF0ZXMtPm1fQ1RNLmQ7DQorICAgIH0NCisgICAgcFRleHQtPlNldFNlZ21lbnRzKHBTdHJzLCBwS2VybmluZywgbnNlZ3MpOw0KKyAgICBwVGV4dC0+bV9Qb3NYID0gbV9wQ3VyU3RhdGVzLT5tX1RleHRYOw0KKyAgICBwVGV4dC0+bV9Qb3NZID0gbV9wQ3VyU3RhdGVzLT5tX1RleHRZICsgbV9wQ3VyU3RhdGVzLT5tX1RleHRSaXNlOw0KKyAgICBDb252ZXJ0VGV4dFNwYWNlKHBUZXh0LT5tX1Bvc1gsIHBUZXh0LT5tX1Bvc1kpOw0KKyAgICBGWF9GTE9BVCB4X2FkdmFuY2UsIHlfYWR2YW5jZTsNCisgICAgcFRleHQtPkNhbGNQb3NpdGlvbkRhdGEoJnhfYWR2YW5jZSwgJnlfYWR2YW5jZSwgbV9wQ3VyU3RhdGVzLT5tX1RleHRIb3J6U2NhbGUsIG1fTGV2ZWwpOw0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dFggKz0geF9hZHZhbmNlOw0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dFkgKz0geV9hZHZhbmNlOw0KKyAgICBpZiAodGV4dG1vZGUgPiAzKSB7DQorICAgICAgICBDUERGX1RleHRPYmplY3QqIHBDb3B5ID0gRlhfTkVXIENQREZfVGV4dE9iamVjdDsNCisgICAgICAgIHBDb3B5LT5Db3B5KHBUZXh0KTsNCisgICAgICAgIG1fQ2xpcFRleHRMaXN0LkFkZChwQ29weSk7DQorICAgIH0NCisgICAgbV9wT2JqZWN0TGlzdC0+bV9PYmplY3RMaXN0LkFkZFRhaWwocFRleHQpOw0KKyAgICBpZiAocEtlcm5pbmcgJiYgcEtlcm5pbmdbbnNlZ3MgLSAxXSAhPSAwKSB7DQorICAgICAgICBpZiAoIXBGb250LT5Jc1ZlcnRXcml0aW5nKCkpIHsNCisgICAgICAgICAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dFggLT0gRlhTWVNfTXVsKHBLZXJuaW5nW25zZWdzIC0gMV0sIG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemUoKSkgLyAxMDAwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dFkgLT0gRlhTWVNfTXVsKHBLZXJuaW5nW25zZWdzIC0gMV0sIG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemUoKSkgLyAxMDAwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2hvd1RleHQoKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyID0gR2V0U3RyaW5nKDApOw0KKyAgICBpZiAoc3RyLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEFkZFRleHRPYmplY3QoJnN0ciwgMCwgTlVMTCwgMSk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2hvd1RleHRfUG9zaXRpb25pbmcoKQ0KK3sNCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gR2V0T2JqZWN0KDApLT5HZXRBcnJheSgpOw0KKyAgICBpZiAocEFycmF5ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgbiA9IHBBcnJheS0+R2V0Q291bnQoKSwgbnNlZ3MgPSAwLCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBwQXJyYXktPkdldEVsZW1lbnRWYWx1ZShpKTsNCisgICAgICAgIGlmIChwT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUklORykgew0KKyAgICAgICAgICAgIG5zZWdzICsrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChuc2VncyA9PSAwKSB7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSArKykgew0KKyAgICAgICAgICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0WCAtPSBGWFNZU19NdWwocEFycmF5LT5HZXROdW1iZXIoaSksIG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemUoKSkgLyAxMDAwOw0KKyAgICAgICAgfTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyogcFN0cnM7DQorICAgIEZYX05FV19WRUNUT1IocFN0cnMsIENGWF9CeXRlU3RyaW5nLCBuc2Vncyk7DQorICAgIEZYX0ZMT0FUKiBwS2VybmluZyA9IEZYX0FsbG9jKEZYX0ZMT0FULCBuc2Vncyk7DQorICAgIGludCBpU2VnbWVudCA9IDA7DQorICAgIEZYX0ZMT0FUIGZJbml0S2VybmluZyA9IDA7DQorICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpICsrKSB7DQorICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IHBBcnJheS0+R2V0RWxlbWVudFZhbHVlKGkpOw0KKyAgICAgICAgaWYgKHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSSU5HKSB7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyID0gcE9iai0+R2V0U3RyaW5nKCk7DQorICAgICAgICAgICAgaWYgKHN0ci5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBTdHJzW2lTZWdtZW50XSA9IHN0cjsNCisgICAgICAgICAgICBwS2VybmluZ1tpU2VnbWVudCArK10gPSAwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAoaVNlZ21lbnQgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBmSW5pdEtlcm5pbmcgKz0gcE9iai0+R2V0TnVtYmVyKCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcEtlcm5pbmdbaVNlZ21lbnQgLSAxXSArPSBwT2JqLT5HZXROdW1iZXIoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgQWRkVGV4dE9iamVjdChwU3RycywgZkluaXRLZXJuaW5nLCBwS2VybmluZywgaVNlZ21lbnQpOw0KKyAgICBGWF9ERUxFVEVfVkVDVE9SKHBTdHJzLCBDRlhfQnl0ZVN0cmluZywgbnNlZ3MpOw0KKyAgICBGWF9GcmVlKHBLZXJuaW5nKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRUZXh0TGVhZGluZygpDQorew0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dExlYWRpbmcgPSBHZXROdW1iZXIoMCk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0VGV4dE1hdHJpeCgpDQorew0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dE1hdHJpeC5TZXQoR2V0TnVtYmVyMTYoNSksIEdldE51bWJlcjE2KDQpLCBHZXROdW1iZXIxNigzKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldE51bWJlcjE2KDIpLCBHZXROdW1iZXIoMSksIEdldE51bWJlcigwKSk7DQorICAgIE9uQ2hhbmdlVGV4dE1hdHJpeCgpOw0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dFggPSAwOw0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dFkgPSAwOw0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dExpbmVYID0gMDsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRMaW5lWSA9IDA7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpPbkNoYW5nZVRleHRNYXRyaXgoKQ0KK3sNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCB0ZXh0X21hdHJpeChtX3BDdXJTdGF0ZXMtPm1fVGV4dEhvcnpTY2FsZSwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZik7DQorICAgIHRleHRfbWF0cml4LkNvbmNhdChtX3BDdXJTdGF0ZXMtPm1fVGV4dE1hdHJpeCk7DQorICAgIHRleHRfbWF0cml4LkNvbmNhdChtX3BDdXJTdGF0ZXMtPm1fQ1RNKTsNCisgICAgdGV4dF9tYXRyaXguQ29uY2F0KG1fbXRDb250ZW50VG9Vc2VyKTsNCisgICAgRlhfRkxPQVQqIHBUZXh0TWF0cml4ID0gbV9wQ3VyU3RhdGVzLT5tX1RleHRTdGF0ZS5HZXRNb2RpZnkoKS0+bV9NYXRyaXg7DQorICAgIHBUZXh0TWF0cml4WzBdID0gdGV4dF9tYXRyaXguYTsNCisgICAgcFRleHRNYXRyaXhbMV0gPSB0ZXh0X21hdHJpeC5jOw0KKyAgICBwVGV4dE1hdHJpeFsyXSA9IHRleHRfbWF0cml4LmI7DQorICAgIHBUZXh0TWF0cml4WzNdID0gdGV4dF9tYXRyaXguZDsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRUZXh0UmVuZGVyTW9kZSgpDQorew0KKyAgICBpbnQgbW9kZSA9IEdldEludGVnZXIoMCk7DQorICAgIGlmIChtb2RlIDwgMCB8fCBtb2RlID4gNykgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0U3RhdGUuR2V0TW9kaWZ5KCktPm1fVGV4dE1vZGUgPSBtb2RlOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX1NldFRleHRSaXNlKCkNCit7DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0UmlzZSA9IEdldE51bWJlcigwKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRXb3JkU3BhY2UoKQ0KK3sNCisgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRTdGF0ZS5HZXRNb2RpZnkoKS0+bV9Xb3JkU3BhY2UgPSBHZXROdW1iZXIoMCk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfU2V0SG9yelNjYWxlKCkNCit7DQorICAgIGlmIChtX1BhcmFtQ291bnQgIT0gMSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcEN1clN0YXRlcy0+bV9UZXh0SG9yelNjYWxlID0gR2V0TnVtYmVyKDApIC8gMTAwOw0KKyAgICBPbkNoYW5nZVRleHRNYXRyaXgoKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9Nb3ZlVG9OZXh0TGluZSgpDQorew0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dExpbmVZIC09IG1fcEN1clN0YXRlcy0+bV9UZXh0TGVhZGluZzsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRYID0gbV9wQ3VyU3RhdGVzLT5tX1RleHRMaW5lWDsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRZID0gbV9wQ3VyU3RhdGVzLT5tX1RleHRMaW5lWTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9DdXJ2ZVRvXzIzKCkNCit7DQorICAgIGlmIChtX09wdGlvbnMubV9iVGV4dE9ubHkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBBZGRQYXRoUG9pbnQobV9QYXRoQ3VycmVudFgsIG1fUGF0aEN1cnJlbnRZLCBGWFBUX0JFWklFUlRPKTsNCisgICAgQWRkUGF0aFBvaW50KEdldE51bWJlcigzKSwgR2V0TnVtYmVyKDIpLCBGWFBUX0JFWklFUlRPKTsNCisgICAgQWRkUGF0aFBvaW50KEdldE51bWJlcigxKSwgR2V0TnVtYmVyKDApLCBGWFBUX0JFWklFUlRPKTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9TZXRMaW5lV2lkdGgoKQ0KK3sNCisgICAgRlhfRkxPQVQgd2lkdGggPSBHZXROdW1iZXIoMCk7DQorICAgIG1fcEN1clN0YXRlcy0+bV9HcmFwaFN0YXRlLkdldE1vZGlmeSgpLT5tX0xpbmVXaWR0aCA9IHdpZHRoOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0NsaXAoKQ0KK3sNCisgICAgbV9QYXRoQ2xpcFR5cGUgPSBGWEZJTExfV0lORElORzsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9FT0NsaXAoKQ0KK3sNCisgICAgbV9QYXRoQ2xpcFR5cGUgPSBGWEZJTExfQUxURVJOQVRFOw0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0N1cnZlVG9fMTMoKQ0KK3sNCisgICAgaWYgKG1fT3B0aW9ucy5tX2JUZXh0T25seSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEFkZFBhdGhQb2ludChHZXROdW1iZXIoMyksIEdldE51bWJlcigyKSwgRlhQVF9CRVpJRVJUTyk7DQorICAgIEFkZFBhdGhQb2ludChHZXROdW1iZXIoMSksIEdldE51bWJlcigwKSwgRlhQVF9CRVpJRVJUTyk7DQorICAgIEFkZFBhdGhQb2ludChHZXROdW1iZXIoMSksIEdldE51bWJlcigwKSwgRlhQVF9CRVpJRVJUTyk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfTmV4dExpbmVTaG93VGV4dCgpDQorew0KKyAgICBIYW5kbGVfTW92ZVRvTmV4dExpbmUoKTsNCisgICAgSGFuZGxlX1Nob3dUZXh0KCk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfTmV4dExpbmVTaG93VGV4dF9TcGFjZSgpDQorew0KKyAgICBtX3BDdXJTdGF0ZXMtPm1fVGV4dFN0YXRlLkdldE1vZGlmeSgpLT5tX1dvcmRTcGFjZSA9IEdldE51bWJlcigyKTsNCisgICAgbV9wQ3VyU3RhdGVzLT5tX1RleHRTdGF0ZS5HZXRNb2RpZnkoKS0+bV9DaGFyU3BhY2UgPSBHZXROdW1iZXIoMSk7DQorICAgIEhhbmRsZV9OZXh0TGluZVNob3dUZXh0KCk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpIYW5kbGVfSW52YWxpZCgpDQorew0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6QWRkUGF0aFBvaW50KEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHksIGludCBmbGFnKQ0KK3sNCisgICAgbV9QYXRoQ3VycmVudFggPSB4Ow0KKyAgICBtX1BhdGhDdXJyZW50WSA9IHk7DQorICAgIGlmIChmbGFnID09IEZYUFRfTU9WRVRPKSB7DQorICAgICAgICBtX1BhdGhTdGFydFggPSB4Ow0KKyAgICAgICAgbV9QYXRoU3RhcnRZID0geTsNCisgICAgICAgIGlmIChtX1BhdGhQb2ludENvdW50ICYmIG1fcFBhdGhQb2ludHNbbV9QYXRoUG9pbnRDb3VudCAtIDFdLm1fRmxhZyA9PSBGWFBUX01PVkVUTykgew0KKyAgICAgICAgICAgIG1fcFBhdGhQb2ludHNbbV9QYXRoUG9pbnRDb3VudCAtIDFdLm1fUG9pbnRYID0geDsNCisgICAgICAgICAgICBtX3BQYXRoUG9pbnRzW21fUGF0aFBvaW50Q291bnQgLSAxXS5tX1BvaW50WSA9IHk7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKG1fUGF0aFBvaW50Q291bnQgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fUGF0aFBvaW50Q291bnQgKys7DQorICAgIGlmIChtX1BhdGhQb2ludENvdW50ID4gbV9QYXRoQWxsb2NTaXplKSB7DQorICAgICAgICBpbnQgbmV3c2l6ZSA9IG1fUGF0aFBvaW50Q291bnQgKyAyNTY7DQorICAgICAgICBGWF9QQVRIUE9JTlQqIHBOZXdQb2ludHMgPSBGWF9BbGxvYyhGWF9QQVRIUE9JTlQsIG5ld3NpemUpOw0KKyAgICAgICAgaWYgKG1fUGF0aEFsbG9jU2l6ZSkgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKHBOZXdQb2ludHMsIG1fcFBhdGhQb2ludHMsIG1fUGF0aEFsbG9jU2l6ZSAqIHNpemVvZihGWF9QQVRIUE9JTlQpKTsNCisgICAgICAgICAgICBGWF9GcmVlKG1fcFBhdGhQb2ludHMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wUGF0aFBvaW50cyA9IHBOZXdQb2ludHM7DQorICAgICAgICBtX1BhdGhBbGxvY1NpemUgPSBuZXdzaXplOw0KKyAgICB9DQorICAgIG1fcFBhdGhQb2ludHNbbV9QYXRoUG9pbnRDb3VudCAtIDFdLm1fRmxhZyA9IGZsYWc7DQorICAgIG1fcFBhdGhQb2ludHNbbV9QYXRoUG9pbnRDb3VudCAtIDFdLm1fUG9pbnRYID0geDsNCisgICAgbV9wUGF0aFBvaW50c1ttX1BhdGhQb2ludENvdW50IC0gMV0ubV9Qb2ludFkgPSB5Ow0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6QWRkUGF0aE9iamVjdChpbnQgRmlsbFR5cGUsIEZYX0JPT0wgYlN0cm9rZSkNCit7DQorICAgIGludCBQYXRoUG9pbnRDb3VudCA9IG1fUGF0aFBvaW50Q291bnQsIFBhdGhDbGlwVHlwZSA9IG1fUGF0aENsaXBUeXBlOw0KKyAgICBtX1BhdGhQb2ludENvdW50ID0gMDsNCisgICAgbV9QYXRoQ2xpcFR5cGUgPSAwOw0KKyAgICBpZiAoUGF0aFBvaW50Q291bnQgPD0gMSkgew0KKyAgICAgICAgaWYgKFBhdGhQb2ludENvdW50ICYmIFBhdGhDbGlwVHlwZSkgew0KKyAgICAgICAgICAgIENQREZfUGF0aCBwYXRoOw0KKyAgICAgICAgICAgIHBhdGguTmV3KCktPkFwcGVuZFJlY3QoMCwgMCwgMCwgMCk7DQorICAgICAgICAgICAgbV9wQ3VyU3RhdGVzLT5tX0NsaXBQYXRoLkFwcGVuZFBhdGgocGF0aCwgRlhGSUxMX1dJTkRJTkcsIFRSVUUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChQYXRoUG9pbnRDb3VudCAmJiBtX3BQYXRoUG9pbnRzW1BhdGhQb2ludENvdW50IC0gMV0ubV9GbGFnID09IEZYUFRfTU9WRVRPKSB7DQorICAgICAgICBQYXRoUG9pbnRDb3VudCAtLTsNCisgICAgfQ0KKyAgICBDUERGX1BhdGggUGF0aDsNCisgICAgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEgPSBQYXRoLk5ldygpOw0KKyAgICBwUGF0aERhdGEtPlNldFBvaW50Q291bnQoUGF0aFBvaW50Q291bnQpOw0KKyAgICBGWFNZU19tZW1jcHkzMihwUGF0aERhdGEtPkdldFBvaW50cygpLCBtX3BQYXRoUG9pbnRzLCBzaXplb2YoRlhfUEFUSFBPSU5UKSAqIFBhdGhQb2ludENvdW50KTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXggPSBtX3BDdXJTdGF0ZXMtPm1fQ1RNOw0KKyAgICBtYXRyaXguQ29uY2F0KG1fbXRDb250ZW50VG9Vc2VyKTsNCisgICAgaWYgKGJTdHJva2UgfHwgRmlsbFR5cGUpIHsNCisgICAgICAgIENQREZfUGF0aE9iamVjdCogcFBhdGhPYmogPSBGWF9ORVcgQ1BERl9QYXRoT2JqZWN0Ow0KKyAgICAgICAgcFBhdGhPYmotPm1fYlN0cm9rZSA9IGJTdHJva2U7DQorICAgICAgICBwUGF0aE9iai0+bV9GaWxsVHlwZSA9IEZpbGxUeXBlOw0KKyAgICAgICAgcFBhdGhPYmotPm1fUGF0aCA9IFBhdGg7DQorICAgICAgICBwUGF0aE9iai0+bV9NYXRyaXggPSBtYXRyaXg7DQorICAgICAgICBTZXRHcmFwaGljU3RhdGVzKHBQYXRoT2JqLCBUUlVFLCBGQUxTRSwgVFJVRSk7DQorICAgICAgICBwUGF0aE9iai0+Q2FsY0JvdW5kaW5nQm94KCk7DQorICAgICAgICBtX3BPYmplY3RMaXN0LT5tX09iamVjdExpc3QuQWRkVGFpbChwUGF0aE9iaik7DQorICAgIH0NCisgICAgaWYgKFBhdGhDbGlwVHlwZSkgew0KKyAgICAgICAgaWYgKCFtYXRyaXguSXNJZGVudGl0eSgpKSB7DQorICAgICAgICAgICAgUGF0aC5UcmFuc2Zvcm0oJm1hdHJpeCk7DQorICAgICAgICAgICAgbWF0cml4LlNldElkZW50aXR5KCk7DQorICAgICAgICB9DQorICAgICAgICBtX3BDdXJTdGF0ZXMtPm1fQ2xpcFBhdGguQXBwZW5kUGF0aChQYXRoLCBQYXRoQ2xpcFR5cGUsIFRSVUUpOw0KKyAgICB9DQorfQ0KK0NGWF9CeXRlU3RyaW5nIF9GUERGX0J5dGVTdHJpbmdGcm9tSGV4KENGWF9CaW5hcnlCdWYmIHNyY19idWYpDQorew0KKyAgICBDRlhfQnl0ZVRleHRCdWYgYnVmOw0KKyAgICBGWF9CT09MIGJGaXJzdCA9IFRSVUU7DQorICAgIGludCBjb2RlID0gMDsNCisgICAgRlhfTFBDQllURSBzdHIgPSBzcmNfYnVmLkdldEJ1ZmZlcigpOw0KKyAgICBGWF9EV09SRCBzaXplID0gc3JjX2J1Zi5HZXRTaXplKCk7DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7DQorICAgICAgICBGWF9CWVRFIGNoID0gc3RyW2ldOw0KKyAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsNCisgICAgICAgICAgICBpZiAoYkZpcnN0KSB7DQorICAgICAgICAgICAgICAgIGNvZGUgPSAoY2ggLSAnMCcpICogMTY7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgY29kZSArPSBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgYnVmLkFwcGVuZENoYXIoKGNoYXIpY29kZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJGaXJzdCA9ICFiRmlyc3Q7DQorICAgICAgICB9IGVsc2UgaWYgKGNoID49ICdBJyAmJiBjaCA8PSAnRicpIHsNCisgICAgICAgICAgICBpZiAoYkZpcnN0KSB7DQorICAgICAgICAgICAgICAgIGNvZGUgPSAoY2ggLSAnQScgKyAxMCkgKiAxNjsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBjb2RlICs9IGNoIC0gJ0EnICsgMTA7DQorICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRDaGFyKChjaGFyKWNvZGUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBiRmlyc3QgPSAhYkZpcnN0Ow0KKyAgICAgICAgfSBlbHNlIGlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ2YnKSB7DQorICAgICAgICAgICAgaWYgKGJGaXJzdCkgew0KKyAgICAgICAgICAgICAgICBjb2RlID0gKGNoIC0gJ2EnICsgMTApICogMTY7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgY29kZSArPSBjaCAtICdhJyArIDEwOw0KKyAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcigoY2hhciljb2RlKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYkZpcnN0ID0gIWJGaXJzdDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoIWJGaXJzdCkgew0KKyAgICAgICAgYnVmLkFwcGVuZENoYXIoKGNoYXIpY29kZSk7DQorICAgIH0NCisgICAgcmV0dXJuIGJ1Zi5HZXRCeXRlU3RyaW5nKCk7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9wYXJzZXJfbmV3LmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9wYXJzZXJfbmV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWViMWZlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX3BhcnNlcl9uZXcuY3BwCkBAIC0wLDAgKzEsODIyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCisjaW5jbHVkZSAicGFnZWludC5oIg0KKyNpZiBkZWZpbmVkKF9GUERGQVBJX01JTklfKQ0KK2V4dGVybiBjb25zdCBGWF9MUENTVFIgX1BERl9DaGFyVHlwZTsNCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SW5wdXREYXRhKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUpDQorew0KKyAgICBpZiAobV9MZXZlbCA+IF9GUERGX01BWF9GT1JNX0xFVkVMXykgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBzcmNfc2l6ZTsgaSArKykgew0KKyAgICAgICAgaW50IGNoID0gc3JjX2J1ZltpXTsNCisgICAgICAgIGludCB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorc3RhcnQ6DQorICAgICAgICBzd2l0Y2ggKG1fV29yZFN0YXRlKSB7DQorICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSAnVycpIHsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICdOJykgew0KKyAgICAgICAgICAgICAgICAgICAgbV9Xb3JkU3RhdGUgPSA1Ow0KKyAgICAgICAgICAgICAgICAgICAgbV9wV29yZEJ1ZlswXSA9IGNoOw0KKyAgICAgICAgICAgICAgICAgICAgbV9Xb3JkU2l6ZSA9IDE7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnUicpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fV29yZFN0YXRlID0gNDsNCisgICAgICAgICAgICAgICAgICAgIG1fcFdvcmRCdWZbMF0gPSBjaDsNCisgICAgICAgICAgICAgICAgICAgIG1fV29yZFNpemUgPSAxOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugc3dpdGNoIChjaCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJy8nOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1dvcmRTdGF0ZSA9IDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fV29yZFNpemUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRBcnJheSgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICddJzoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5kQXJyYXkoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnKCc6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fV29yZFN0YXRlID0gNzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdMZXZlbCA9IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nU3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0J1Zi5DbGVhcigpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc8JzoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9Xb3JkU3RhdGUgPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc+JzoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9Xb3JkU3RhdGUgPSA4Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICclJzoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9Xb3JkU3RhdGUgPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ1xuJyB8fCBjaCA9PSAnXHInKSB7DQorICAgICAgICAgICAgICAgICAgICBtX1dvcmRTdGF0ZSA9IDA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSAnUicgJiYgdHlwZSAhPSAnTicpIHsNCisgICAgICAgICAgICAgICAgICAgIEVuZE5hbWUoKTsNCisgICAgICAgICAgICAgICAgICAgIG1fV29yZFN0YXRlID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fV29yZFNpemUgPCAyNTYpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcFdvcmRCdWZbbV9Xb3JkU2l6ZSsrXSA9IGNoOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMzoNCisgICAgICAgICAgICAgICAgaWYgKGNoID09ICc8Jykgew0KKyAgICAgICAgICAgICAgICAgICAgU3RhcnREaWN0KCk7DQorICAgICAgICAgICAgICAgICAgICBtX1dvcmRTdGF0ZSA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0J1Zi5DbGVhcigpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9Xb3JkU3RhdGUgPSA2Ow0KKyAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDQ6DQorICAgICAgICAgICAgICAgIGlmICh0eXBlICE9ICdSJyAmJiB0eXBlICE9ICdOJykgew0KKyAgICAgICAgICAgICAgICAgICAgbV9Xb3JkU3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgRW5kS2V5d29yZCgpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fYkFib3J0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9Xb3JkU2l6ZSA8IDI1Nikgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wV29yZEJ1ZlttX1dvcmRTaXplKytdID0gY2g7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSA1Og0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSAnTicpIHsNCisgICAgICAgICAgICAgICAgICAgIEVuZE51bWJlcigpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9Xb3JkU3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9Xb3JkU2l6ZSA8IDI1Nikgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wV29yZEJ1ZlttX1dvcmRTaXplKytdID0gY2g7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSA2Og0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJz4nKSB7DQorICAgICAgICAgICAgICAgICAgICBFbmRIZXhTdHJpbmcoKTsNCisgICAgICAgICAgICAgICAgICAgIG1fV29yZFN0YXRlID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nQnVmLkFwcGVuZEJ5dGUoY2gpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgNzoNCisgICAgICAgICAgICAgICAgc3dpdGNoIChtX1N0cmluZ1N0YXRlKSB7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICcpJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0xldmVsIC0tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9TdHJpbmdMZXZlbCA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmRTdHJpbmcoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fV29yZFN0YXRlID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nQnVmLkFwcGVuZEJ5dGUoJyknKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICcoJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0xldmVsICsrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0J1Zi5BcHBlbmRCeXRlKCcoJyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnXFwnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nU3RhdGUgPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nQnVmLkFwcGVuZEJ5dGUoKGNoYXIpY2gpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc3Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0VzY0NvZGUgPSBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdTdGF0ZSA9IDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ24nKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nQnVmLkFwcGVuZEJ5dGUoJ1xuJyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAncicpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdCdWYuQXBwZW5kQnl0ZSgnXHInKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICd0Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0J1Zi5BcHBlbmRCeXRlKCdcdCcpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ2InKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nQnVmLkFwcGVuZEJ5dGUoJ1xiJyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnZicpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdCdWYuQXBwZW5kQnl0ZSgnXGYnKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdcXCcpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdCdWYuQXBwZW5kQnl0ZSgnXFwnKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICcoJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0J1Zi5BcHBlbmRCeXRlKCcoJyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnKScpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdCdWYuQXBwZW5kQnl0ZSgnKScpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1xyJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ1N0YXRlID0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnXG4nKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdCdWYuQXBwZW5kQnl0ZShjaCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nU3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA+PSAnMCcgJiYgY2ggPD0gJzcnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fRXNjQ29kZSA9IG1fRXNjQ29kZSAqIDggKyBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdTdGF0ZSA9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdCdWYuQXBwZW5kQnl0ZShtX0VzY0NvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ1N0YXRlID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydDsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIDM6DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnNycpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9Fc2NDb2RlID0gbV9Fc2NDb2RlICogOCArIGNoIC0gJzAnOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0J1Zi5BcHBlbmRCeXRlKG1fRXNjQ29kZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nU3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nQnVmLkFwcGVuZEJ5dGUobV9Fc2NDb2RlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdTdGF0ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0Og0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyaW5nU3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCAhPSAnXG4nKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgODoNCisgICAgICAgICAgICAgICAgbV9Xb3JkU3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJz4nKSB7DQorICAgICAgICAgICAgICAgICAgICBFbmREaWN0KCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgOToNCisgICAgICAgICAgICAgICAgc3dpdGNoIChtX0lubGluZUltYWdlU3RhdGUpIHsNCisgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSAnVycgfHwgdHlwZSA9PSAnRCcpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9JbmxpbmVJbWFnZVN0YXRlID0gMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9JbmxpbmVXaGl0ZUNoYXIgPSBjaDsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0J1Zi5BcHBlbmRCeXRlKGNoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9TdHJpbmdCdWYuQXBwZW5kQnl0ZShtX0lubGluZVdoaXRlQ2hhcik7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICdJJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0lubGluZUltYWdlU3RhdGUgPSAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fSW5saW5lSW1hZ2VTdGF0ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnRCcpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9JbmxpbmVJbWFnZVN0YXRlID0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmluZ0J1Zi5BcHBlbmRCeXRlKCdJJyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fSW5saW5lSW1hZ2VTdGF0ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIEVuZEltYWdlRGljdCgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMTA6DQorICAgICAgICAgICAgICAgIHN3aXRjaCAobV9JbmxpbmVJbWFnZVN0YXRlKSB7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ1cnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fSW5saW5lSW1hZ2VTdGF0ZSA9IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fSW5saW5lV2hpdGVDaGFyID0gY2g7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9JbWFnZVNyY0J1Zi5BcHBlbmRCeXRlKGNoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICdFJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0lubGluZUltYWdlU3RhdGUgPSAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fSW1hZ2VTcmNCdWYuQXBwZW5kQnl0ZShtX0lubGluZVdoaXRlQ2hhcik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fSW5saW5lSW1hZ2VTdGF0ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnSScpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9JbmxpbmVJbWFnZVN0YXRlID0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0ltYWdlU3JjQnVmLkFwcGVuZEJ5dGUobV9JbmxpbmVXaGl0ZUNoYXIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0ltYWdlU3JjQnVmLkFwcGVuZEJ5dGUoJ0UnKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9JbmxpbmVJbWFnZVN0YXRlID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydDsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIDM6DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ1cnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZElubGluZUltYWdlKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9JbWFnZVNyY0J1Zi5BcHBlbmRCeXRlKG1fSW5saW5lV2hpdGVDaGFyKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9JbWFnZVNyY0J1Zi5BcHBlbmRCeXRlKCdFJyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fSW1hZ2VTcmNCdWYuQXBwZW5kQnl0ZSgnSScpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0lubGluZUltYWdlU3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDExOg0KKyAgICAgICAgICAgICAgICBpZiAobV9JbmxpbmVJbWFnZVN0YXRlIDwgbV9JbWFnZVNyY0J1Zi5HZXRTaXplKCkpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fSW1hZ2VTcmNCdWYuR2V0QnVmZmVyKClbbV9JbmxpbmVJbWFnZVN0YXRlICsrXSA9IGNoOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICdJJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEVuZElubGluZUltYWdlKCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkZpbmlzaCgpDQorew0KKyAgICBzd2l0Y2ggKG1fV29yZFN0YXRlKSB7DQorICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDI6DQorICAgICAgICAgICAgRW5kTmFtZSgpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSA0Og0KKyAgICAgICAgICAgIEVuZEtleXdvcmQoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgNToNCisgICAgICAgICAgICBFbmROdW1iZXIoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgNjoNCisgICAgICAgICAgICBFbmRIZXhTdHJpbmcoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgNzoNCisgICAgICAgICAgICBFbmRTdHJpbmcoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgODoNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgOToNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMTA6DQorICAgICAgICAgICAgRW5kSW5saW5lSW1hZ2UoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICBtX1dvcmRTdGF0ZSA9IDA7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpBZGRDb250YWluZXIoQ1BERl9PYmplY3QqIHBPYmplY3QpDQorew0KKyAgICBpZiAobV9PYmplY3RTaXplKSB7DQorICAgICAgICBtX3BPYmplY3RTdGF0ZVttX09iamVjdFNpemVdID0gU2V0VG9DdXJPYmoocE9iamVjdCk7DQorICAgIH0NCisgICAgRlhTWVNfYXNzZXJ0KG1fT2JqZWN0U2l6ZSA8IF9GUERGX01BWF9PQkpFQ1RfU1RBQ0tfU0laRV8pOw0KKyAgICBtX3BPYmplY3RTdGFja1ttX09iamVjdFNpemUrK10gPSBwT2JqZWN0Ow0KK30NCitGWF9CT09MIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6U2V0VG9DdXJPYmooQ1BERl9PYmplY3QqIHBPYmplY3QpDQorew0KKyAgICBpZiAobV9PYmplY3RTaXplID09IDApIHsNCisgICAgICAgIEFkZE9iamVjdFBhcmFtKHBPYmplY3QpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgRlhfQk9PTCBiSW5BcnJheU9yRGljdCA9IFRSVUU7DQorICAgIENQREZfT2JqZWN0KiBwQ3VyT2JqID0gbV9wT2JqZWN0U3RhY2tbbV9PYmplY3RTaXplIC0gMV07DQorICAgIGlmIChwQ3VyT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICAoKENQREZfQXJyYXkqKXBDdXJPYmopLT5BZGQocE9iamVjdCwgbV9wRG9jdW1lbnQpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKCFtX2JEaWN0TmFtZSAmJiBtX3BEaWN0TmFtZVswXSkgew0KKyAgICAgICAgICAgICgoQ1BERl9EaWN0aW9uYXJ5KilwQ3VyT2JqKS0+U2V0QXQoKEZYX0xQQ1NUUiltX3BEaWN0TmFtZSwgcE9iamVjdCwgbV9wRG9jdW1lbnQpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBiSW5BcnJheU9yRGljdCA9IEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9iRGljdE5hbWUgPSBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBiSW5BcnJheU9yRGljdDsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OlN0YXJ0QXJyYXkoKQ0KK3sNCisgICAgaWYgKG1fT2JqZWN0U2l6ZSkNCisgICAgICAgIGlmIChtX3BPYmplY3RTdGFja1swXS0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZICYmIG1fcE9iamVjdFN0YWNrW21fT2JqZWN0U2l6ZSAtIDFdLT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgQWRkQ29udGFpbmVyKHBBcnJheSk7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpFbmRBcnJheSgpDQorew0KKyAgICBpZiAobV9PYmplY3RTaXplID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcEN1ck9iaiA9IG1fcE9iamVjdFN0YWNrW21fT2JqZWN0U2l6ZSAtIDFdOw0KKyAgICBpZiAocEN1ck9iai0+R2V0VHlwZSgpICE9IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fT2JqZWN0U2l6ZSAtLTsNCisgICAgaWYgKG1fT2JqZWN0U2l6ZSA9PSAwKSB7DQorICAgICAgICBBZGRPYmplY3RQYXJhbShwQ3VyT2JqKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmICghbV9wT2JqZWN0U3RhdGVbbV9PYmplY3RTaXplXSkgew0KKyAgICAgICAgICAgIHBDdXJPYmotPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX3BPYmplY3RTdGF0ZVttX09iamVjdFNpemVdID0gRkFMU0U7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpTdGFydERpY3QoKQ0KK3sNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IEZYX05FVyBDUERGX0RpY3Rpb25hcnk7DQorICAgIEFkZENvbnRhaW5lcihwRGljdCk7DQorICAgIG1fYkRpY3ROYW1lID0gVFJVRTsNCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkVuZERpY3QoKQ0KK3sNCisgICAgaWYgKG1fT2JqZWN0U2l6ZSA9PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBDdXJPYmogPSBtX3BPYmplY3RTdGFja1ttX09iamVjdFNpemUgLSAxXTsNCisgICAgaWYgKHBDdXJPYmotPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fT2JqZWN0U2l6ZSAtLTsNCisgICAgaWYgKG1fT2JqZWN0U2l6ZSA9PSAwKSB7DQorICAgICAgICBBZGRPYmplY3RQYXJhbShwQ3VyT2JqKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmICghbV9wT2JqZWN0U3RhdGVbbV9PYmplY3RTaXplXSkgew0KKyAgICAgICAgICAgIHBDdXJPYmotPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX3BPYmplY3RTdGF0ZVttX09iamVjdFNpemVdID0gRkFMU0U7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpFbmROYW1lKCkNCit7DQorICAgIGlmIChtX09iamVjdFNpemUgPT0gMCkgew0KKyAgICAgICAgQWRkTmFtZVBhcmFtKChGWF9MUENTVFIpbV9wV29yZEJ1ZiwgbV9Xb3JkU2l6ZSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBDdXJPYmogPSBtX3BPYmplY3RTdGFja1ttX09iamVjdFNpemUgLSAxXTsNCisgICAgaWYgKHBDdXJPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICgoQ1BERl9BcnJheSopcEN1ck9iaiktPkFkZE5hbWUoQ0ZYX0J5dGVTdHJpbmcobV9wV29yZEJ1ZiwgbV9Xb3JkU2l6ZSkpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKG1fYkRpY3ROYW1lKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wRGljdE5hbWUsIG1fcFdvcmRCdWYsIG1fV29yZFNpemUpOw0KKyAgICAgICAgICAgIG1fcERpY3ROYW1lW21fV29yZFNpemVdID0gMDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKG1fcERpY3ROYW1lWzBdICE9IDApIHsNCisgICAgICAgICAgICAgICAgKChDUERGX0RpY3Rpb25hcnkqKXBDdXJPYmopLT5TZXRBdE5hbWUoKEZYX0xQQ1NUUiltX3BEaWN0TmFtZSwgQ0ZYX0J5dGVTdHJpbmcobV9wV29yZEJ1ZiwgbV9Xb3JkU2l6ZSkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fYkRpY3ROYW1lID0gIW1fYkRpY3ROYW1lOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpFbmROdW1iZXIoKQ0KK3sNCisgICAgaWYgKG1fT2JqZWN0U2l6ZSA9PSAwKSB7DQorICAgICAgICBBZGROdW1iZXJQYXJhbSgoRlhfTFBDU1RSKW1fcFdvcmRCdWYsIG1fV29yZFNpemUpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfTnVtYmVyICpwT2JqID0gRlhfTkVXIENQREZfTnVtYmVyKENGWF9CeXRlU3RyaW5nQyhtX3BXb3JkQnVmLCBtX1dvcmRTaXplKSk7DQorICAgIGlmICghU2V0VG9DdXJPYmoocE9iaikpIHsNCisgICAgICAgIHBPYmotPlJlbGVhc2UoKTsNCisgICAgfQ0KK30NCitleHRlcm4gQ0ZYX0J5dGVTdHJpbmcgX0ZQREZfQnl0ZVN0cmluZ0Zyb21IZXgoQ0ZYX0JpbmFyeUJ1ZiYgc3JjX2J1Zik7DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkVuZEhleFN0cmluZygpDQorew0KKyAgICBDUERGX1N0cmluZyAqcE9iaiA9IEZYX05FVyBDUERGX1N0cmluZyhfRlBERl9CeXRlU3RyaW5nRnJvbUhleChtX1N0cmluZ0J1ZiksIFRSVUUpOw0KKyAgICBpZiAoIVNldFRvQ3VyT2JqKHBPYmopKSB7DQorICAgICAgICBwT2JqLT5SZWxlYXNlKCk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkVuZFN0cmluZygpDQorew0KKyAgICBDUERGX1N0cmluZyAqcE9iaiA9IEZYX05FVyBDUERGX1N0cmluZyhtX1N0cmluZ0J1Zi5HZXRCeXRlU3RyaW5nKCkpOw0KKyAgICBpZiAoIVNldFRvQ3VyT2JqKHBPYmopKSB7DQorICAgICAgICBwT2JqLT5SZWxlYXNlKCk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9CZWdpbkltYWdlKHZvaWQpDQorew0KKyAgICBtX1dvcmRTdGF0ZSA9IDk7DQorICAgIG1fSW5saW5lSW1hZ2VTdGF0ZSA9IDA7DQorICAgIG1fU3RyaW5nQnVmLkNsZWFyKCk7DQorfQ0KK3ZvaWQgX1BERl9SZXBsYWNlQWJicihDUERGX09iamVjdCogcE9iaik7DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkVuZEltYWdlRGljdCgpDQorew0KKyAgICBpZiAobV9TdHJpbmdCdWYuR2V0U2l6ZSgpICE9IG1fTGFzdEltYWdlRGljdC5HZXRTaXplKCkgfHwNCisgICAgICAgICAgICBGWFNZU19tZW1jbXAzMihtX1N0cmluZ0J1Zi5HZXRCdWZmZXIoKSwgbV9MYXN0SW1hZ2VEaWN0LkdldEJ1ZmZlcigpLCBtX1N0cmluZ0J1Zi5HZXRTaXplKCkpKSB7DQorICAgICAgICBtX1dvcmRTdGF0ZSA9IDA7DQorICAgICAgICBTdGFydERpY3QoKTsNCisgICAgICAgIElucHV0RGF0YShtX1N0cmluZ0J1Zi5HZXRCdWZmZXIoKSwgbV9TdHJpbmdCdWYuR2V0U2l6ZSgpKTsNCisgICAgICAgIEZpbmlzaCgpOw0KKyAgICAgICAgbV9iU2FtZUxhc3REaWN0ID0gRkFMU0U7DQorICAgICAgICBpZiAobV9wTGFzdEltYWdlRGljdCAmJiBtX2JSZWxlYXNlTGFzdERpY3QpIHsNCisgICAgICAgICAgICBtX3BMYXN0SW1hZ2VEaWN0LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgbV9wTGFzdEltYWdlRGljdCA9IE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIW1fT2JqZWN0U2l6ZSkgew0KKyAgICAgICAgICAgIG1fSW5saW5lSW1hZ2VTdGF0ZSA9IDA7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wTGFzdEltYWdlRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKW1fcE9iamVjdFN0YWNrWy0tbV9PYmplY3RTaXplXTsNCisgICAgICAgIG1fYlJlbGVhc2VMYXN0RGljdCA9ICFtX3BPYmplY3RTdGF0ZVttX09iamVjdFNpemVdOw0KKyAgICAgICAgbV9wT2JqZWN0U3RhdGVbbV9PYmplY3RTaXplXSA9IEZBTFNFOw0KKyAgICAgICAgX1BERl9SZXBsYWNlQWJicihtX3BMYXN0SW1hZ2VEaWN0KTsNCisgICAgICAgIG1fTGFzdEltYWdlRGljdC5UYWtlT3ZlcihtX1N0cmluZ0J1Zik7DQorICAgICAgICBpZiAobV9wTGFzdEltYWdlRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIkNvbG9yU3BhY2UiKSkpIHsNCisgICAgICAgICAgICBDUERGX09iamVjdCogcENTT2JqID0gbV9wTGFzdEltYWdlRGljdC0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJDb2xvclNwYWNlIikpOw0KKyAgICAgICAgICAgIGlmIChwQ1NPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBuYW1lID0gcENTT2JqLT5HZXRTdHJpbmcoKTsNCisgICAgICAgICAgICAgICAgaWYgKG5hbWUgIT0gRlhfQlNUUkMoIkRldmljZVJHQiIpICYmIG5hbWUgIT0gRlhfQlNUUkMoIkRldmljZUdyYXkiKSAmJiBuYW1lICE9IEZYX0JTVFJDKCJEZXZpY2VDTVlLIikpIHsNCisgICAgICAgICAgICAgICAgICAgIHBDU09iaiA9IEZpbmRSZXNvdXJjZU9iaihGWF9CU1RSQygiQ29sb3JTcGFjZSIpLCBuYW1lKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwQ1NPYmopIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBDU09iai0+R2V0T2JqTnVtKCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcENTT2JqID0gcENTT2JqLT5DbG9uZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BMYXN0SW1hZ2VEaWN0LT5TZXRBdChGWF9CU1RSQygiQ29sb3JTcGFjZSIpLCBwQ1NPYmosIG1fcERvY3VtZW50KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fYlNhbWVMYXN0RGljdCA9IFRSVUU7DQorICAgIH0NCisgICAgbV9JbWFnZVNyY0J1Zi5DbGVhcigpOw0KKyAgICBpZiAobV9wTGFzdENsb25lSW1hZ2VEaWN0KSB7DQorICAgICAgICBtX3BMYXN0Q2xvbmVJbWFnZURpY3QtPlJlbGVhc2UoKTsNCisgICAgfQ0KKyAgICBtX3BMYXN0Q2xvbmVJbWFnZURpY3QgPSAoQ1BERl9EaWN0aW9uYXJ5KiltX3BMYXN0SW1hZ2VEaWN0LT5DbG9uZSgpOw0KKyAgICBpZiAobV9wTGFzdENsb25lSW1hZ2VEaWN0LT5LZXlFeGlzdChGWF9CU1RSQygiRmlsdGVyIikpKSB7DQorICAgICAgICBtX1dvcmRTdGF0ZSA9IDEwOw0KKyAgICAgICAgbV9JbmxpbmVJbWFnZVN0YXRlID0gMDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCB3aWR0aCA9IG1fcExhc3RDbG9uZUltYWdlRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiV2lkdGgiKSk7DQorICAgICAgICBpbnQgaGVpZ2h0ID0gbV9wTGFzdENsb25lSW1hZ2VEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJIZWlnaHQiKSk7DQorICAgICAgICBpbnQgT3JpZ1NpemUgPSAwOw0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBDU09iaiA9IG1fcExhc3RDbG9uZUltYWdlRGljdC0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJDb2xvclNwYWNlIikpOw0KKyAgICAgICAgaWYgKHBDU09iaiAhPSBOVUxMKSB7DQorICAgICAgICAgICAgaW50IGJwYyA9IG1fcExhc3RDbG9uZUltYWdlRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiQml0c1BlckNvbXBvbmVudCIpKTsNCisgICAgICAgICAgICBpbnQgbkNvbXBvbmVudHMgPSAxOw0KKyAgICAgICAgICAgIENQREZfQ29sb3JTcGFjZSogcENTID0gbV9wRG9jdW1lbnQtPkxvYWRDb2xvclNwYWNlKHBDU09iaik7DQorICAgICAgICAgICAgaWYgKHBDUyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIG5Db21wb25lbnRzID0gMzsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBuQ29tcG9uZW50cyA9IHBDUy0+Q291bnRDb21wb25lbnRzKCk7DQorICAgICAgICAgICAgICAgIG1fcERvY3VtZW50LT5HZXRQYWdlRGF0YSgpLT5SZWxlYXNlQ29sb3JTcGFjZShwQ1NPYmopOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgcGl0Y2ggPSAod2lkdGggKiBicGMgKiBuQ29tcG9uZW50cyArIDcpIC8gODsNCisgICAgICAgICAgICBPcmlnU2l6ZSA9IHBpdGNoICogaGVpZ2h0Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBPcmlnU2l6ZSA9ICgod2lkdGggKyA3KSAvIDgpICogaGVpZ2h0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9JbWFnZVNyY0J1Zi5BcHBlbmRCbG9jayhOVUxMLCBPcmlnU2l6ZSk7DQorICAgICAgICBtX1dvcmRTdGF0ZSA9IDExOw0KKyAgICAgICAgbV9JbmxpbmVJbWFnZVN0YXRlID0gMDsNCisgICAgfQ0KK30NCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6RW5kSW5saW5lSW1hZ2UoKQ0KK3sNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBJbWFnZU1hdHJpeDsNCisgICAgSW1hZ2VNYXRyaXguQ29weShtX3BDdXJTdGF0ZXMtPm1fQ1RNKTsNCisgICAgSW1hZ2VNYXRyaXguQ29uY2F0KG1fbXRDb250ZW50VG9Vc2VyKTsNCisgICAgbV9MYXN0SW1hZ2VEYXRhLkNvcHlEYXRhKG1fSW1hZ2VTcmNCdWYuR2V0QnVmZmVyKCksIG1fSW1hZ2VTcmNCdWYuR2V0U2l6ZSgpKTsNCisgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW0gPSBDUERGX1N0cmVhbTo6Q3JlYXRlKG1fSW1hZ2VTcmNCdWYuR2V0QnVmZmVyKCksIG1fSW1hZ2VTcmNCdWYuR2V0U2l6ZSgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcExhc3RDbG9uZUltYWdlRGljdCk7DQorICAgIG1fSW1hZ2VTcmNCdWYuRGV0YWNoQnVmZmVyKCk7DQorICAgIG1fcExhc3RDbG9uZUltYWdlRGljdCA9IE5VTEw7DQorICAgIENQREZfSW5saW5lSW1hZ2VzKiBwSW1hZ2VzID0gRlhfTkVXIENQREZfSW5saW5lSW1hZ2VzOw0KKyAgICBwSW1hZ2VzLT5tX3BTdHJlYW0gPSBwU3RyZWFtOw0KKyAgICBTZXRHcmFwaGljU3RhdGVzKHBJbWFnZXMsICFtX3BMYXN0Q2xvbmVJbWFnZURpY3QtPktleUV4aXN0KEZYX0JTVFJDKCJDb2xvclNwYWNlIikpLCBGQUxTRSwgRkFMU0UpOw0KKyAgICBwSW1hZ2VzLT5BZGRNYXRyaXgoSW1hZ2VNYXRyaXgpOw0KKyAgICBtX3BPYmplY3RMaXN0LT5tX09iamVjdExpc3QuQWRkVGFpbChwSW1hZ2VzKTsNCisgICAgbV9Xb3JkU3RhdGUgPSAwOw0KK30NCisjZGVmaW5lIEZYRFdPUkRfVFJVRSBGWERXT1JEX0ZST01fTFNCRklSU1QoMHg2NTc1NzI3NCkNCisjZGVmaW5lIEZYRFdPUkRfTlVMTCBGWERXT1JEX0ZST01fTFNCRklSU1QoMHg2YzZjNzU2ZSkNCisjZGVmaW5lIEZYRFdPUkRfRkFMUyBGWERXT1JEX0ZST01fTFNCRklSU1QoMHg3MzZjNjE2NikNCit2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6RW5kS2V5d29yZCgpDQorew0KKyAgICBDUERGX09iamVjdCAqcE9iaiA9IE5VTEw7DQorICAgIGlmIChtX1dvcmRTaXplID09IDQpIHsNCisgICAgICAgIGlmICgqKEZYX0RXT1JEKiltX3BXb3JkQnVmID09IEZYRFdPUkRfVFJVRSkgew0KKyAgICAgICAgICAgIHBPYmogPSBDUERGX0Jvb2xlYW46OkNyZWF0ZShUUlVFKTsNCisgICAgICAgICAgICBpZiAoIVNldFRvQ3VyT2JqKHBPYmopKSB7DQorICAgICAgICAgICAgICAgIHBPYmotPlJlbGVhc2UoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfSBlbHNlIGlmICgqKEZYX0RXT1JEKiltX3BXb3JkQnVmID09IEZYRFdPUkRfTlVMTCkgew0KKyAgICAgICAgICAgIHBPYmogPSBDUERGX051bGw6OkNyZWF0ZSgpOw0KKyAgICAgICAgICAgIGlmICghU2V0VG9DdXJPYmoocE9iaikpIHsNCisgICAgICAgICAgICAgICAgcE9iai0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAobV9Xb3JkU2l6ZSA9PSA1KSB7DQorICAgICAgICBpZiAoKihGWF9EV09SRCopbV9wV29yZEJ1ZiA9PSBGWERXT1JEX0ZBTFMgJiYgbV9wV29yZEJ1Zls0XSA9PSAnZScpIHsNCisgICAgICAgICAgICBwT2JqID0gQ1BERl9Cb29sZWFuOjpDcmVhdGUoRkFMU0UpOw0KKyAgICAgICAgICAgIGlmICghU2V0VG9DdXJPYmoocE9iaikpIHsNCisgICAgICAgICAgICAgICAgcE9iai0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wV29yZEJ1ZlttX1dvcmRTaXplXSA9IDA7DQorICAgIE9uT3BlcmF0b3IoKGNoYXIqKW1fcFdvcmRCdWYpOw0KKyAgICBDbGVhckFsbFBhcmFtcygpOw0KK30NCisjZGVmaW5lIFBBR0VQQVJTRV9TVEFHRV9QQVJTRQkJCTINCisjZGVmaW5lIFBBR0VQQVJTRV9TVEFHRV9DSEVDS0NMSVAJCTMNCitDUERGX0NvbnRlbnRQYXJzZXI6OkNQREZfQ29udGVudFBhcnNlcigpDQorew0KKyAgICBtX3BQYXJzZXIgPSBOVUxMOw0KKyAgICBtX1N0YXR1cyA9IFJlYWR5Ow0KKyAgICBtX3BTdHJlYW1GaWx0ZXIgPSBOVUxMOw0KKyAgICBtX3BUeXBlM0NoYXIgPSBOVUxMOw0KK30NCitDUERGX0NvbnRlbnRQYXJzZXI6On5DUERGX0NvbnRlbnRQYXJzZXIoKQ0KK3sNCisgICAgQ2xlYXIoKTsNCit9DQordm9pZCBDUERGX0NvbnRlbnRQYXJzZXI6OkNsZWFyKCkNCit7DQorICAgIGlmIChtX3BQYXJzZXIpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BQYXJzZXI7DQorICAgIH0NCisgICAgaWYgKG1fcFN0cmVhbUZpbHRlcikgew0KKyAgICAgICAgZGVsZXRlIG1fcFN0cmVhbUZpbHRlcjsNCisgICAgfQ0KKyAgICBtX3BQYXJzZXIgPSBOVUxMOw0KKyAgICBtX1N0YXR1cyA9IFJlYWR5Ow0KK30NCit2b2lkIENQREZfQ29udGVudFBhcnNlcjo6U3RhcnQoQ1BERl9QYWdlKiBwUGFnZSwgQ1BERl9QYXJzZU9wdGlvbnMqIHBPcHRpb25zKQ0KK3sNCisgICAgaWYgKG1fU3RhdHVzICE9IFJlYWR5IHx8IHBQYWdlID09IE5VTEwgfHwgcFBhZ2UtPm1fcERvY3VtZW50ID09IE5VTEwgfHwgcFBhZ2UtPm1fcEZvcm1EaWN0ID09IE5VTEwpIHsNCisgICAgICAgIG1fU3RhdHVzID0gRG9uZTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BPYmplY3RzID0gcFBhZ2U7DQorICAgIG1fYkZvcm0gPSBGQUxTRTsNCisgICAgaWYgKHBPcHRpb25zKSB7DQorICAgICAgICBtX09wdGlvbnMgPSAqcE9wdGlvbnM7DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBDb250ZW50ID0gcFBhZ2UtPm1fcEZvcm1EaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkNvbnRlbnRzIikpOw0KKyAgICBpZiAocENvbnRlbnQgPT0gTlVMTCkgew0KKyAgICAgICAgbV9TdGF0dXMgPSBEb25lOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChwQ29udGVudC0+R2V0VHlwZSgpID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIG1fblN0cmVhbXMgPSAxOw0KKyAgICB9IGVsc2UgaWYgKHBDb250ZW50LT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICBtX25TdHJlYW1zID0gKChDUERGX0FycmF5KilwQ29udGVudCktPkdldENvdW50KCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX1N0YXR1cyA9IERvbmU7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9TdGF0dXMgPSBUb0JlQ29udGludWVkOw0KKyAgICBtX0ludGVybmFsU3RhZ2UgPSBQQUdFUEFSU0VfU1RBR0VfUEFSU0U7DQorICAgIG1fQ3VycmVudE9mZnNldCA9IDA7DQorICAgIG1fcFBhcnNlciA9IEZYX05FVyBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI7DQorICAgIG1fcFBhcnNlci0+SW5pdGlhbGl6ZSgpOw0KKyAgICBtX3BQYXJzZXItPlByZXBhcmVQYXJzZShwUGFnZS0+bV9wRG9jdW1lbnQsIHBQYWdlLT5tX3BSZXNvdXJjZXMsIE5VTEwsIE5VTEwsIHBQYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUGFnZS0+bV9wUmVzb3VyY2VzLCAmcFBhZ2UtPm1fQkJveCwgJm1fT3B0aW9ucywgTlVMTCwgMCk7DQorICAgIG1fcFBhcnNlci0+bV9wQ3VyU3RhdGVzLT5tX0NvbG9yU3RhdGUuR2V0TW9kaWZ5KCktPkRlZmF1bHQoKTsNCit9DQordm9pZCBDUERGX0NvbnRlbnRQYXJzZXI6OlN0YXJ0KENQREZfRm9ybSogcEZvcm0sIENQREZfQWxsU3RhdGVzKiBwR3JhcGhpY1N0YXRlcywgQ0ZYX0FmZmluZU1hdHJpeCogcFBhcmVudE1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9UeXBlM0NoYXIqIHBUeXBlM0NoYXIsIENQREZfUGFyc2VPcHRpb25zKiBwT3B0aW9ucywgaW50IGxldmVsKQ0KK3sNCisgICAgbV9wVHlwZTNDaGFyID0gcFR5cGUzQ2hhcjsNCisgICAgbV9wT2JqZWN0cyA9IHBGb3JtOw0KKyAgICBtX2JGb3JtID0gVFJVRTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBmb3JtX21hdHJpeCA9IHBGb3JtLT5tX3BGb3JtRGljdC0+R2V0TWF0cml4KEZYX0JTVFJDKCJNYXRyaXgiKSk7DQorICAgIGlmIChwR3JhcGhpY1N0YXRlcykgew0KKyAgICAgICAgZm9ybV9tYXRyaXguQ29uY2F0KHBHcmFwaGljU3RhdGVzLT5tX0NUTSk7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEJCb3ggPSBwRm9ybS0+bV9wRm9ybURpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJCQm94IikpOw0KKyAgICBDRlhfRmxvYXRSZWN0IGZvcm1fYmJveDsNCisgICAgQ1BERl9QYXRoIENsaXBQYXRoOw0KKyAgICBpZiAocEJCb3gpIHsNCisgICAgICAgIGZvcm1fYmJveCA9IHBCQm94LT5HZXRSZWN0KCk7DQorICAgICAgICBDbGlwUGF0aC5OZXcoKTsNCisgICAgICAgIENsaXBQYXRoLkFwcGVuZFJlY3QoZm9ybV9iYm94LmxlZnQsIGZvcm1fYmJveC5ib3R0b20sIGZvcm1fYmJveC5yaWdodCwgZm9ybV9iYm94LnRvcCk7DQorICAgICAgICBDbGlwUGF0aC5UcmFuc2Zvcm0oJmZvcm1fbWF0cml4KTsNCisgICAgICAgIGlmIChwUGFyZW50TWF0cml4KSB7DQorICAgICAgICAgICAgQ2xpcFBhdGguVHJhbnNmb3JtKHBQYXJlbnRNYXRyaXgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9ybV9iYm94LlRyYW5zZm9ybSgmZm9ybV9tYXRyaXgpOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcFJlc291cmNlcyA9IHBGb3JtLT5tX3BGb3JtRGljdC0+R2V0RGljdChGWF9CU1RSQygiUmVzb3VyY2VzIikpOw0KKyAgICBtX3BQYXJzZXIgPSBGWF9ORVcgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOw0KKyAgICBtX3BQYXJzZXItPkluaXRpYWxpemUoKTsNCisgICAgbV9wUGFyc2VyLT5QcmVwYXJlUGFyc2UocEZvcm0tPm1fcERvY3VtZW50LCBwRm9ybS0+bV9wUGFnZVJlc291cmNlcywgcEZvcm0tPm1fcFJlc291cmNlcywgcFBhcmVudE1hdHJpeCwgcEZvcm0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSZXNvdXJjZXMsICZmb3JtX2Jib3gsIHBPcHRpb25zLCBwR3JhcGhpY1N0YXRlcywgbGV2ZWwpOw0KKyAgICBtX3BQYXJzZXItPm1fcEN1clN0YXRlcy0+bV9DVE0gPSBmb3JtX21hdHJpeDsNCisgICAgaWYgKENsaXBQYXRoLk5vdE51bGwoKSkgew0KKyAgICAgICAgbV9wUGFyc2VyLT5tX3BDdXJTdGF0ZXMtPm1fQ2xpcFBhdGguQXBwZW5kUGF0aChDbGlwUGF0aCwgRlhGSUxMX1dJTkRJTkcsIFRSVUUpOw0KKyAgICB9DQorICAgIGlmIChwRm9ybS0+bV9UcmFuc3BhcmVuY3kgJiBQREZUUkFOU19HUk9VUCkgew0KKyAgICAgICAgQ1BERl9HZW5lcmFsU3RhdGVEYXRhKiBwRGF0YSA9IG1fcFBhcnNlci0+bV9wQ3VyU3RhdGVzLT5tX0dlbmVyYWxTdGF0ZS5HZXRNb2RpZnkoKTsNCisgICAgICAgIHBEYXRhLT5tX0JsZW5kVHlwZSA9IEZYRElCX0JMRU5EX05PUk1BTDsNCisgICAgICAgIHBEYXRhLT5tX1N0cm9rZUFscGhhID0gMS4wZjsNCisgICAgICAgIHBEYXRhLT5tX0ZpbGxBbHBoYSA9IDEuMGY7DQorICAgICAgICBwRGF0YS0+bV9wU29mdE1hc2sgPSBOVUxMOw0KKyAgICB9DQorICAgIG1fcFN0cmVhbUZpbHRlciA9IHBGb3JtLT5tX3BGb3JtU3RyZWFtLT5HZXRTdHJlYW1GaWx0ZXIoKTsNCisgICAgbV9uU3RyZWFtcyA9IDE7DQorICAgIG1fU3RhdHVzID0gVG9CZUNvbnRpbnVlZDsNCisgICAgbV9JbnRlcm5hbFN0YWdlID0gUEFHRVBBUlNFX1NUQUdFX1BBUlNFOw0KKyAgICBtX0N1cnJlbnRPZmZzZXQgPSAwOw0KK30NCit2b2lkIENQREZfQ29udGVudFBhcnNlcjo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICB3aGlsZSAobV9TdGF0dXMgPT0gVG9CZUNvbnRpbnVlZCkgew0KKyAgICAgICAgaWYgKG1fSW50ZXJuYWxTdGFnZSA9PSBQQUdFUEFSU0VfU1RBR0VfUEFSU0UpIHsNCisgICAgICAgICAgICBpZiAobV9wU3RyZWFtRmlsdGVyID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgaWYgKG1fQ3VycmVudE9mZnNldCA9PSBtX25TdHJlYW1zKSB7DQorICAgICAgICAgICAgICAgICAgICBtX0ludGVybmFsU3RhZ2UgPSBQQUdFUEFSU0VfU1RBR0VfQ0hFQ0tDTElQOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fcFR5cGUzQ2hhcikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcFR5cGUzQ2hhci0+bV9iQ29sb3JlZCA9IG1fcFBhcnNlci0+bV9iQ29sb3JlZDsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BUeXBlM0NoYXItPm1fV2lkdGggPSBGWFNZU19yb3VuZChtX3BQYXJzZXItPm1fVHlwZTNEYXRhWzBdICogMTAwMCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wVHlwZTNDaGFyLT5tX0JCb3gubGVmdCA9IEZYU1lTX3JvdW5kKG1fcFBhcnNlci0+bV9UeXBlM0RhdGFbMl0gKiAxMDAwKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BUeXBlM0NoYXItPm1fQkJveC5ib3R0b20gPSBGWFNZU19yb3VuZChtX3BQYXJzZXItPm1fVHlwZTNEYXRhWzNdICogMTAwMCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wVHlwZTNDaGFyLT5tX0JCb3gucmlnaHQgPSBGWFNZU19yb3VuZChtX3BQYXJzZXItPm1fVHlwZTNEYXRhWzRdICogMTAwMCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wVHlwZTNDaGFyLT5tX0JCb3gudG9wID0gRlhTWVNfcm91bmQobV9wUGFyc2VyLT5tX1R5cGUzRGF0YVs1XSAqIDEwMDApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcFR5cGUzQ2hhci0+bV9iUGFnZVJlcXVpcmVkID0gbV9wUGFyc2VyLT5tX2JSZXNvdXJjZU1pc3Npbmc7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgbV9wUGFyc2VyOw0KKyAgICAgICAgICAgICAgICAgICAgbV9wUGFyc2VyID0gTlVMTDsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwQ29udGVudCA9IG1fcE9iamVjdHMtPm1fcEZvcm1EaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkNvbnRlbnRzIikpOw0KKyAgICAgICAgICAgICAgICBpZiAocENvbnRlbnQtPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BTdHJlYW1GaWx0ZXIgPSAoKENQREZfU3RyZWFtKilwQ29udGVudCktPkdldFN0cmVhbUZpbHRlcigpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW0gPSAoKENQREZfQXJyYXkqKXBDb250ZW50KS0+R2V0U3RyZWFtKG1fQ3VycmVudE9mZnNldCk7DQorICAgICAgICAgICAgICAgICAgICBpZiAocFN0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9DdXJyZW50T2Zmc2V0ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wU3RyZWFtRmlsdGVyID0gcFN0cmVhbS0+R2V0U3RyZWFtRmlsdGVyKCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRFdPUkQgbGVuID0gbV9wU3RyZWFtRmlsdGVyLT5SZWFkQmxvY2sobV9wUGFyc2VyLT5tX3BTdHJlYW1CdWYsIFNUUkVBTV9QQVJTRV9CVUZTSVpFKTsNCisgICAgICAgICAgICBtX3BQYXJzZXItPklucHV0RGF0YShtX3BQYXJzZXItPm1fcFN0cmVhbUJ1ZiwgbGVuKTsNCisgICAgICAgICAgICBpZiAobV9wUGFyc2VyLT5tX2JBYm9ydCkgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgbV9wU3RyZWFtRmlsdGVyOw0KKyAgICAgICAgICAgICAgICBtX3BTdHJlYW1GaWx0ZXIgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICBtX1N0YXR1cyA9IERvbmU7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBtX3BQYXJzZXI7DQorICAgICAgICAgICAgICAgIG1fcFBhcnNlciA9IE5VTEw7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGxlbiA8IFNUUkVBTV9QQVJTRV9CVUZTSVpFKSB7DQorICAgICAgICAgICAgICAgIG1fcFBhcnNlci0+RmluaXNoKCk7DQorICAgICAgICAgICAgICAgIG1fQ3VycmVudE9mZnNldCArKzsNCisgICAgICAgICAgICAgICAgZGVsZXRlIG1fcFN0cmVhbUZpbHRlcjsNCisgICAgICAgICAgICAgICAgbV9wU3RyZWFtRmlsdGVyID0gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBQYXVzZSAmJiBwUGF1c2UtPk5lZWRUb1BhdXNlTm93KCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX0ludGVybmFsU3RhZ2UgPT0gUEFHRVBBUlNFX1NUQUdFX0NIRUNLQ0xJUCkgew0KKyAgICAgICAgICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fcE9iamVjdHMtPm1fT2JqZWN0TGlzdC5HZXRIZWFkUG9zaXRpb24oKTsNCisgICAgICAgICAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICAgICAgICAgIENQREZfUGFnZU9iamVjdCogcE9iaiA9IChDUERGX1BhZ2VPYmplY3QqKW1fcE9iamVjdHMtPm1fT2JqZWN0TGlzdC5HZXROZXh0KHBvcyk7DQorICAgICAgICAgICAgICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChwT2JqLT5tX0NsaXBQYXRoLklzTnVsbCgpKSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAocE9iai0+bV9DbGlwUGF0aC5HZXRQYXRoQ291bnQoKSAhPSAxKSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAocE9iai0+bV9DbGlwUGF0aC5HZXRUZXh0Q291bnQoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ1BERl9QYXRoIENsaXBQYXRoID0gcE9iai0+bV9DbGlwUGF0aC5HZXRQYXRoKDApOw0KKyAgICAgICAgICAgICAgICBpZiAoIUNsaXBQYXRoLklzUmVjdCgpIHx8IHBPYmotPm1fVHlwZSA9PSBQREZQQUdFX1NIQURJTkcpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENGWF9GbG9hdFJlY3Qgb2xkX3JlY3QoQ2xpcFBhdGguR2V0UG9pbnRYKDApLCBDbGlwUGF0aC5HZXRQb2ludFkoMCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpcFBhdGguR2V0UG9pbnRYKDIpLCBDbGlwUGF0aC5HZXRQb2ludFkoMikpOw0KKyAgICAgICAgICAgICAgICBDRlhfRmxvYXRSZWN0IG9ial9yZWN0KHBPYmotPm1fTGVmdCwgcE9iai0+bV9Cb3R0b20sIHBPYmotPm1fUmlnaHQsIHBPYmotPm1fVG9wKTsNCisgICAgICAgICAgICAgICAgaWYgKG9sZF9yZWN0LkNvbnRhaW5zKG9ial9yZWN0KSkgew0KKyAgICAgICAgICAgICAgICAgICAgcE9iai0+bV9DbGlwUGF0aC5TZXROdWxsKCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fcE9iamVjdHMtPm1fT2JqZWN0TGlzdC5HZXRDb3VudCgpID09IDEpIHsNCisgICAgICAgICAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqID0gKENQREZfUGFnZU9iamVjdCopbV9wT2JqZWN0cy0+bV9PYmplY3RMaXN0LkdldEF0KG1fcE9iamVjdHMtPm1fT2JqZWN0TGlzdC5HZXRIZWFkUG9zaXRpb24oKSk7DQorICAgICAgICAgICAgICAgIGlmIChwT2JqICYmIHBPYmotPm1fVHlwZSA9PSBQREZQQUdFX1RFWFQpIHsNCisgICAgICAgICAgICAgICAgICAgIENQREZfVGV4dE9iamVjdCogcFRleHQgPSAoQ1BERl9UZXh0T2JqZWN0KilwT2JqOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fU3RhdHVzID0gRG9uZTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0NCit9DQoraW50IENQREZfQ29udGVudFBhcnNlcjo6RXN0aW1hdGVQcm9ncmVzcygpDQorew0KKyAgICBpZiAobV9TdGF0dXMgPT0gUmVhZHkpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChtX1N0YXR1cyA9PSBEb25lKSB7DQorICAgICAgICByZXR1cm4gMTAwOw0KKyAgICB9DQorICAgIGlmIChtX0ludGVybmFsU3RhZ2UgPT0gUEFHRVBBUlNFX1NUQUdFX0NIRUNLQ0xJUCkgew0KKyAgICAgICAgcmV0dXJuIDkwOw0KKyAgICB9DQorICAgIGlmIChtX3BTdHJlYW1GaWx0ZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDkwICogbV9DdXJyZW50T2Zmc2V0IC8gbV9uU3RyZWFtczsNCisgICAgfQ0KKyAgICBpbnQgdG90YWxfcmF3X3NpemUgPSBtX3BTdHJlYW1GaWx0ZXItPkdldFN0cmVhbSgpLT5HZXRSYXdTaXplKCkgKiBtX25TdHJlYW1zOw0KKyAgICBpbnQgcGFyc2VkX3Jhd19zaXplID0gbV9wU3RyZWFtRmlsdGVyLT5HZXRTdHJlYW0oKS0+R2V0UmF3U2l6ZSgpICogbV9DdXJyZW50T2Zmc2V0ICsNCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcFN0cmVhbUZpbHRlci0+R2V0U3JjUG9zKCk7DQorICAgIHJldHVybiA5MCAqIHBhcnNlZF9yYXdfc2l6ZSAvIHRvdGFsX3Jhd19zaXplOw0KK30NCitDUERGX0lubGluZUltYWdlczo6Q1BERl9JbmxpbmVJbWFnZXMoKQ0KK3sNCisgICAgbV9UeXBlID0gUERGUEFHRV9JTkxJTkVTOw0KKyAgICBtX3BTdHJlYW0gPSBOVUxMOw0KKyAgICBtX3BCaXRtYXAgPSBOVUxMOw0KK30NCitDUERGX0lubGluZUltYWdlczo6fkNQREZfSW5saW5lSW1hZ2VzKCkNCit7DQorICAgIGlmIChtX3BTdHJlYW0pIHsNCisgICAgICAgIG1fcFN0cmVhbS0+UmVsZWFzZSgpOw0KKyAgICB9DQorICAgIGlmIChtX3BCaXRtYXApIHsNCisgICAgICAgIGRlbGV0ZSBtX3BCaXRtYXA7DQorICAgIH0NCit9DQordm9pZCBDUERGX0lubGluZUltYWdlczo6QWRkTWF0cml4KENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCkNCit7DQorICAgIG1fTWF0cmljZXMuQWRkKG1hdHJpeCk7DQorICAgIENGWF9GbG9hdFJlY3QgcmVjdCA9IG1hdHJpeC5HZXRVbml0UmVjdCgpOw0KKyAgICBpZiAobV9NYXRyaWNlcy5HZXRTaXplKCkgPiAxKSB7DQorICAgICAgICBDRlhfRmxvYXRSZWN0IHJlY3QxKG1fTGVmdCwgbV9Cb3R0b20sIG1fUmlnaHQsIG1fVG9wKTsNCisgICAgICAgIHJlY3QuVW5pb24ocmVjdDEpOw0KKyAgICB9DQorICAgIG1fTGVmdCA9IHJlY3QubGVmdDsNCisgICAgbV9SaWdodCA9IHJlY3QucmlnaHQ7DQorICAgIG1fVG9wID0gcmVjdC50b3A7DQorICAgIG1fQm90dG9tID0gcmVjdC5ib3R0b207DQorfQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9wYXJzZXJfb2xkLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9wYXJzZXJfb2xkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjBhMThkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX3BhcnNlcl9vbGQuY3BwCkBAIC0wLDAgKzEsMTE0NiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjb2RlYy9meF9jb2RlYy5oIg0KKyNpbmNsdWRlICJwYWdlaW50LmgiDQorI2luY2x1ZGUgPGxpbWl0cy5oPg0KK2V4dGVybiBjb25zdCBGWF9MUENTVFIgX1BERl9PcENoYXJUeXBlID0NCisgICAgIklJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJIg0KKyAgICAiSUlWSUlJSVZJSVZJSUlJSVZWSUlJSUlJSUlJSUlJSUkiDQorICAgICJJSVZWVlZWVklWVlZWVlZJVlZWVlZJSVZWSUlJSUlJSSINCisgICAgIklJVlZWVlZWVlZWVlZWVlZJVlZWSUlWVklWVklJSUlJIg0KKyAgICAiSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUkiDQorICAgICJJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSSINCisgICAgIklJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJIg0KKyAgICAiSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUkiOw0KK0ZYX0JPT0wgX1BERl9IYXNJbnZhbGlkT3BDaGFyKEZYX0xQQ1NUUiBvcCkNCit7DQorICAgIGlmKCFvcCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0JZVEUgY2g7DQorICAgIHdoaWxlKChjaCA9ICpvcCsrKSkgew0KKyAgICAgICAgaWYoX1BERl9PcENoYXJUeXBlW2NoXSA9PSAnSScpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0RXT1JEIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6UGFyc2UoRlhfTFBDQllURSBwRGF0YSwgRlhfRFdPUkQgZHdTaXplLCBGWF9EV09SRCBtYXhfY29zdCkNCit7DQorICAgIGlmIChtX0xldmVsID4gX0ZQREZfTUFYX0ZPUk1fTEVWRUxfKSB7DQorICAgICAgICByZXR1cm4gZHdTaXplOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIEluaXRPYmpDb3VudCA9IG1fcE9iamVjdExpc3QtPkNvdW50T2JqZWN0cygpOw0KKyAgICBDUERGX1N0cmVhbVBhcnNlciBzeW50YXgocERhdGEsIGR3U2l6ZSk7DQorICAgIG1fcFN5bnRheCA9ICZzeW50YXg7DQorICAgIG1fQ29tcGF0Q291bnQgPSAwOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgRlhfRFdPUkQgY29zdCA9IG1fcE9iamVjdExpc3QtPkNvdW50T2JqZWN0cygpIC0gSW5pdE9iakNvdW50Ow0KKyAgICAgICAgaWYgKG1heF9jb3N0ICYmIGNvc3QgPj0gbWF4X2Nvc3QpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIHN3aXRjaCAoc3ludGF4LlBhcnNlTmV4dEVsZW1lbnQoKSkgew0KKyAgICAgICAgICAgIGNhc2UgQ1BERl9TdHJlYW1QYXJzZXI6OkVuZE9mRGF0YToNCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fcFN5bnRheC0+R2V0UG9zKCk7DQorICAgICAgICAgICAgY2FzZSBDUERGX1N0cmVhbVBhcnNlcjo6S2V5d29yZDoNCisgICAgICAgICAgICAgICAgaWYoIU9uT3BlcmF0b3IoKGNoYXIqKXN5bnRheC5HZXRXb3JkQnVmKCkpICYmIF9QREZfSGFzSW52YWxpZE9wQ2hhcigoY2hhciopc3ludGF4LkdldFdvcmRCdWYoKSkpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fYkFib3J0ID0gVFJVRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9iQWJvcnQpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX3BTeW50YXgtPkdldFBvcygpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENsZWFyQWxsUGFyYW1zKCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgQ1BERl9TdHJlYW1QYXJzZXI6Ok51bWJlcjoNCisgICAgICAgICAgICAgICAgQWRkTnVtYmVyUGFyYW0oKGNoYXIqKXN5bnRheC5HZXRXb3JkQnVmKCksIHN5bnRheC5HZXRXb3JkU2l6ZSgpKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBDUERGX1N0cmVhbVBhcnNlcjo6TmFtZToNCisgICAgICAgICAgICAgICAgQWRkTmFtZVBhcmFtKChGWF9MUENTVFIpc3ludGF4LkdldFdvcmRCdWYoKSArIDEsIHN5bnRheC5HZXRXb3JkU2l6ZSgpIC0gMSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgIEFkZE9iamVjdFBhcmFtKHN5bnRheC5HZXRPYmplY3QoKSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIG1fcFN5bnRheC0+R2V0UG9zKCk7DQorfQ0KK3ZvaWQgX1BERl9SZXBsYWNlQWJicihDUERGX09iamVjdCogcE9iaik7DQordm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9CZWdpbkltYWdlKCkNCit7DQorICAgIEZYX0ZJTEVTSVpFIHNhdmVQb3MgPSBtX3BTeW50YXgtPkdldFBvcygpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gQ1BERl9EaWN0aW9uYXJ5OjpDcmVhdGUoKTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIENQREZfU3RyZWFtUGFyc2VyOjpTeW50YXhUeXBlIHR5cGUgPSBtX3BTeW50YXgtPlBhcnNlTmV4dEVsZW1lbnQoKTsNCisgICAgICAgIGlmICh0eXBlID09IENQREZfU3RyZWFtUGFyc2VyOjpLZXl3b3JkKSB7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgYnNLZXl3b3JkKG1fcFN5bnRheC0+R2V0V29yZEJ1ZigpLCBtX3BTeW50YXgtPkdldFdvcmRTaXplKCkpOw0KKyAgICAgICAgICAgIGlmIChic0tleXdvcmQgIT0gRlhfQlNUUkMoIklEIikpIHsNCisgICAgICAgICAgICAgICAgbV9wU3ludGF4LT5TZXRQb3Moc2F2ZVBvcyk7DQorICAgICAgICAgICAgICAgIHBEaWN0LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAodHlwZSAhPSBDUERGX1N0cmVhbVBhcnNlcjo6TmFtZSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcga2V5KChGWF9MUENTVFIpbV9wU3ludGF4LT5HZXRXb3JkQnVmKCkgKyAxLCBtX3BTeW50YXgtPkdldFdvcmRTaXplKCkgLSAxKTsNCisgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gbV9wU3ludGF4LT5SZWFkTmV4dE9iamVjdCgpOw0KKyAgICAgICAgaWYgKCFrZXkuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgcERpY3QtPlNldEF0KGtleSwgcE9iaiwgbV9wRG9jdW1lbnQpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwT2JqLT5SZWxlYXNlKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgX1BERl9SZXBsYWNlQWJicihwRGljdCk7DQorICAgIENQREZfT2JqZWN0KiBwQ1NPYmogPSBOVUxMOw0KKyAgICBpZiAocERpY3QtPktleUV4aXN0KEZYX0JTVFJDKCJDb2xvclNwYWNlIikpKSB7DQorICAgICAgICBwQ1NPYmogPSBwRGljdC0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJDb2xvclNwYWNlIikpOw0KKyAgICAgICAgaWYgKHBDU09iai0+R2V0VHlwZSgpID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgbmFtZSA9IHBDU09iai0+R2V0U3RyaW5nKCk7DQorICAgICAgICAgICAgaWYgKG5hbWUgIT0gRlhfQlNUUkMoIkRldmljZVJHQiIpICYmIG5hbWUgIT0gRlhfQlNUUkMoIkRldmljZUdyYXkiKSAmJiBuYW1lICE9IEZYX0JTVFJDKCJEZXZpY2VDTVlLIikpIHsNCisgICAgICAgICAgICAgICAgcENTT2JqID0gRmluZFJlc291cmNlT2JqKEZYX0JTVFJDKCJDb2xvclNwYWNlIiksIG5hbWUpOw0KKyAgICAgICAgICAgICAgICBpZiAocENTT2JqICYmICFwQ1NPYmotPkdldE9iak51bSgpKSB7DQorICAgICAgICAgICAgICAgICAgICBwQ1NPYmogPSBwQ1NPYmotPkNsb25lKCk7DQorICAgICAgICAgICAgICAgICAgICBwRGljdC0+U2V0QXQoRlhfQlNUUkMoIkNvbG9yU3BhY2UiKSwgcENTT2JqLCBtX3BEb2N1bWVudCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW0gPSBtX3BTeW50YXgtPlJlYWRJbmxpbmVTdHJlYW0obV9wRG9jdW1lbnQsIHBEaWN0LCBwQ1NPYmosIG1fT3B0aW9ucy5tX2JEZWNvZGVJbmxpbmVJbWFnZSk7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBDUERGX1N0cmVhbVBhcnNlcjo6U3ludGF4VHlwZSB0eXBlID0gbV9wU3ludGF4LT5QYXJzZU5leHRFbGVtZW50KCk7DQorICAgICAgICBpZiAodHlwZSA9PSBDUERGX1N0cmVhbVBhcnNlcjo6RW5kT2ZEYXRhKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZiAodHlwZSAhPSBDUERGX1N0cmVhbVBhcnNlcjo6S2V5d29yZCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fcFN5bnRheC0+R2V0V29yZFNpemUoKSA9PSAyICYmIG1fcFN5bnRheC0+R2V0V29yZEJ1ZigpWzBdID09ICdFJyAmJg0KKyAgICAgICAgICAgICAgICBtX3BTeW50YXgtPkdldFdvcmRCdWYoKVsxXSA9PSAnSScpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9PcHRpb25zLm1fYlRleHRPbmx5KSB7DQorICAgICAgICBpZiAocFN0cmVhbSkgew0KKyAgICAgICAgICAgIHBTdHJlYW0tPlJlbGVhc2UoKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcERpY3QtPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBwRGljdC0+U2V0QXROYW1lKEZYX0JTVFJDKCJTdWJ0eXBlIiksIEZYX0JTVFJDKCJJbWFnZSIpKTsNCisgICAgQ1BERl9JbWFnZU9iamVjdCAqcEltZ09iaiA9IEFkZEltYWdlKHBTdHJlYW0sIE5VTEwsIFRSVUUpOw0KKyAgICBpZiAoIXBJbWdPYmopIHsNCisgICAgICAgIGlmIChwU3RyZWFtKSB7DQorICAgICAgICAgICAgcFN0cmVhbS0+UmVsZWFzZSgpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwRGljdC0+UmVsZWFzZSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpQYXJzZVBhdGhPYmplY3QoKQ0KK3sNCisgICAgRlhfRkxPQVQgcGFyYW1zWzZdID0gezB9Ow0KKyAgICBpbnQgblBhcmFtcyA9IDA7DQorICAgIGludCBsYXN0X3BvcyA9IG1fcFN5bnRheC0+R2V0UG9zKCk7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBDUERGX1N0cmVhbVBhcnNlcjo6U3ludGF4VHlwZSB0eXBlID0gbV9wU3ludGF4LT5QYXJzZU5leHRFbGVtZW50KCk7DQorICAgICAgICBGWF9CT09MIGJQcm9jZXNzZWQgPSBUUlVFOw0KKyAgICAgICAgc3dpdGNoICh0eXBlKSB7DQorICAgICAgICAgICAgY2FzZSBDUERGX1N0cmVhbVBhcnNlcjo6RW5kT2ZEYXRhOg0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgY2FzZSBDUERGX1N0cmVhbVBhcnNlcjo6S2V5d29yZDogew0KKyAgICAgICAgICAgICAgICAgICAgaW50IGxlbiA9IG1fcFN5bnRheC0+R2V0V29yZFNpemUoKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV9wU3ludGF4LT5HZXRXb3JkQnVmKClbMF0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbSc6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRQYXRoUG9pbnQocGFyYW1zWzBdLCBwYXJhbXNbMV0sIEZYUFRfTU9WRVRPKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5QYXJhbXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2wnOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkUGF0aFBvaW50KHBhcmFtc1swXSwgcGFyYW1zWzFdLCBGWFBUX0xJTkVUTyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuUGFyYW1zID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjJzoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZFBhdGhQb2ludChwYXJhbXNbMF0sIHBhcmFtc1sxXSwgRlhQVF9CRVpJRVJUTyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRQYXRoUG9pbnQocGFyYW1zWzJdLCBwYXJhbXNbM10sIEZYUFRfQkVaSUVSVE8pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkUGF0aFBvaW50KHBhcmFtc1s0XSwgcGFyYW1zWzVdLCBGWFBUX0JFWklFUlRPKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5QYXJhbXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3YnOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkUGF0aFBvaW50KG1fUGF0aEN1cnJlbnRYLCBtX1BhdGhDdXJyZW50WSwgRlhQVF9CRVpJRVJUTyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRQYXRoUG9pbnQocGFyYW1zWzBdLCBwYXJhbXNbMV0sIEZYUFRfQkVaSUVSVE8pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkUGF0aFBvaW50KHBhcmFtc1syXSwgcGFyYW1zWzNdLCBGWFBUX0JFWklFUlRPKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5QYXJhbXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3knOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkUGF0aFBvaW50KHBhcmFtc1swXSwgcGFyYW1zWzFdLCBGWFBUX0JFWklFUlRPKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZFBhdGhQb2ludChwYXJhbXNbMl0sIHBhcmFtc1szXSwgRlhQVF9CRVpJRVJUTyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRQYXRoUG9pbnQocGFyYW1zWzJdLCBwYXJhbXNbM10sIEZYUFRfQkVaSUVSVE8pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgblBhcmFtcyA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaCc6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVfQ2xvc2VQYXRoKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuUGFyYW1zID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlByb2Nlc3NlZCA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsZW4gPT0gMikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3BTeW50YXgtPkdldFdvcmRCdWYoKVswXSA9PSAncicgJiYgbV9wU3ludGF4LT5HZXRXb3JkQnVmKClbMV0gPT0gJ2UnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZFBhdGhSZWN0KHBhcmFtc1swXSwgcGFyYW1zWzFdLCBwYXJhbXNbMl0sIHBhcmFtc1szXSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5QYXJhbXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJQcm9jZXNzZWQgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJQcm9jZXNzZWQgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChiUHJvY2Vzc2VkKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9wb3MgPSBtX3BTeW50YXgtPkdldFBvcygpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjYXNlIENQREZfU3RyZWFtUGFyc2VyOjpOdW1iZXI6IHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChuUGFyYW1zID09IDYpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYkludGVnZXI7DQorICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWU7DQorICAgICAgICAgICAgICAgICAgICBGWF9hdG9udW0oQ0ZYX0J5dGVTdHJpbmdDKG1fcFN5bnRheC0+R2V0V29yZEJ1ZigpLCBtX3BTeW50YXgtPkdldFdvcmRTaXplKCkpLCBiSW50ZWdlciwgJnZhbHVlKTsNCisgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tuUGFyYW1zKytdID0gYkludGVnZXIgPyAoRlhfRkxPQVQpdmFsdWUgOiAqKEZYX0ZMT0FUKikmdmFsdWU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgIGJQcm9jZXNzZWQgPSBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghYlByb2Nlc3NlZCkgew0KKyAgICAgICAgICAgIG1fcFN5bnRheC0+U2V0UG9zKGxhc3RfcG9zKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ1BERl9TdHJlYW1QYXJzZXI6OkNQREZfU3RyZWFtUGFyc2VyKGNvbnN0IEZYX0JZVEUqIHBEYXRhLCBGWF9EV09SRCBkd1NpemUpDQorew0KKyAgICBtX3BCdWYgPSBwRGF0YTsNCisgICAgbV9TaXplID0gZHdTaXplOw0KKyAgICBtX1BvcyA9IDA7DQorICAgIG1fcExhc3RPYmogPSBOVUxMOw0KK30NCitDUERGX1N0cmVhbVBhcnNlcjo6fkNQREZfU3RyZWFtUGFyc2VyKCkNCit7DQorICAgIGlmIChtX3BMYXN0T2JqKSB7DQorICAgICAgICBtX3BMYXN0T2JqLT5SZWxlYXNlKCk7DQorICAgIH0NCit9DQorRlhfRFdPUkQgX0RlY29kZUFsbFNjYW5saW5lcyhJQ29kZWNfU2NhbmxpbmVEZWNvZGVyKiBwRGVjb2RlciwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkNCit7DQorICAgIGlmIChwRGVjb2RlciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gKEZYX0RXT1JEKSAtIDE7DQorICAgIH0NCisgICAgaW50IG5jb21wcyA9IHBEZWNvZGVyLT5Db3VudENvbXBzKCk7DQorICAgIGludCBicGMgPSBwRGVjb2Rlci0+R2V0QlBDKCk7DQorICAgIGludCB3aWR0aCA9IHBEZWNvZGVyLT5HZXRXaWR0aCgpOw0KKyAgICBpbnQgaGVpZ2h0ID0gcERlY29kZXItPkdldEhlaWdodCgpOw0KKyAgICBpbnQgcGl0Y2ggPSAod2lkdGggKiBuY29tcHMgKiBicGMgKyA3KSAvIDg7DQorICAgIGlmIChoZWlnaHQgPT0gMCB8fCBwaXRjaCA+ICgxIDw8IDMwKSAvIGhlaWdodCkgew0KKyAgICAgICAgZGVsZXRlIHBEZWNvZGVyOw0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGRlc3Rfc2l6ZSA9IHBpdGNoICogaGVpZ2h0Ow0KKyAgICBkZXN0X2J1ZiA9IEZYX0FsbG9jKCBGWF9CWVRFLCBkZXN0X3NpemUpOw0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgRlhfTFBCWVRFIHBMaW5lID0gcERlY29kZXItPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICBpZiAocExpbmUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoZGVzdF9idWYgKyByb3cgKiBwaXRjaCwgcExpbmUsIHBpdGNoKTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBzcmNvZmYgPSBwRGVjb2Rlci0+R2V0U3JjT2Zmc2V0KCk7DQorICAgIGRlbGV0ZSBwRGVjb2RlcjsNCisgICAgcmV0dXJuIHNyY29mZjsNCit9DQorSUNvZGVjX1NjYW5saW5lRGVjb2RlciogRlBERkFQSV9DcmVhdGVGYXhEZWNvZGVyKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgIGNvbnN0IENQREZfRGljdGlvbmFyeSogcFBhcmFtcyk7DQorRlhfRFdPUkQgX0E4NURlY29kZShjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSk7DQorRlhfRFdPUkQgX0hleERlY29kZShjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSk7DQorRlhfRFdPUkQgRlBERkFQSV9GbGF0ZU9yTFpXRGVjb2RlKEZYX0JPT0wgYkxaVywgY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIENQREZfRGljdGlvbmFyeSogcFBhcmFtcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZXN0aW1hdGVkX3NpemUsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpOw0KK0ZYX0RXT1JEIFBERl9EZWNvZGVJbmxpbmVTdHJlYW0oY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQgbGltaXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsIENGWF9CeXRlU3RyaW5nJiBkZWNvZGVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUGFyYW0sIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpDQorew0KKyAgICBpZiAoZGVjb2RlciA9PSBGWF9CU1RSQygiQ0NJVFRGYXhEZWNvZGUiKSB8fCBkZWNvZGVyID09IEZYX0JTVFJDKCJDQ0YiKSkgew0KKyAgICAgICAgSUNvZGVjX1NjYW5saW5lRGVjb2RlciogcERlY29kZXIgPSBGUERGQVBJX0NyZWF0ZUZheERlY29kZXIoc3JjX2J1ZiwgbGltaXQsIHdpZHRoLCBoZWlnaHQsIHBQYXJhbSk7DQorICAgICAgICByZXR1cm4gX0RlY29kZUFsbFNjYW5saW5lcyhwRGVjb2RlciwgZGVzdF9idWYsIGRlc3Rfc2l6ZSk7DQorICAgIH0gZWxzZSBpZiAoZGVjb2RlciA9PSBGWF9CU1RSQygiQVNDSUk4NURlY29kZSIpIHx8IGRlY29kZXIgPT0gRlhfQlNUUkMoIkE4NSIpKSB7DQorICAgICAgICByZXR1cm4gX0E4NURlY29kZShzcmNfYnVmLCBsaW1pdCwgZGVzdF9idWYsIGRlc3Rfc2l6ZSk7DQorICAgIH0gZWxzZSBpZiAoZGVjb2RlciA9PSBGWF9CU1RSQygiQVNDSUlIZXhEZWNvZGUiKSB8fCBkZWNvZGVyID09IEZYX0JTVFJDKCJBSHgiKSkgew0KKyAgICAgICAgcmV0dXJuIF9IZXhEZWNvZGUoc3JjX2J1ZiwgbGltaXQsIGRlc3RfYnVmLCBkZXN0X3NpemUpOw0KKyAgICB9IGVsc2UgaWYgKGRlY29kZXIgPT0gRlhfQlNUUkMoIkZsYXRlRGVjb2RlIikgfHwgZGVjb2RlciA9PSBGWF9CU1RSQygiRmwiKSkgew0KKyAgICAgICAgcmV0dXJuIEZQREZBUElfRmxhdGVPckxaV0RlY29kZShGQUxTRSwgc3JjX2J1ZiwgbGltaXQsIHBQYXJhbSwgZGVzdF9zaXplLCBkZXN0X2J1ZiwgZGVzdF9zaXplKTsNCisgICAgfSBlbHNlIGlmIChkZWNvZGVyID09IEZYX0JTVFJDKCJMWldEZWNvZGUiKSB8fCBkZWNvZGVyID09IEZYX0JTVFJDKCJMWlciKSkgew0KKyAgICAgICAgcmV0dXJuIEZQREZBUElfRmxhdGVPckxaV0RlY29kZShUUlVFLCBzcmNfYnVmLCBsaW1pdCwgcFBhcmFtLCAwLCBkZXN0X2J1ZiwgZGVzdF9zaXplKTsNCisgICAgfSBlbHNlIGlmIChkZWNvZGVyID09IEZYX0JTVFJDKCJEQ1REZWNvZGUiKSB8fCBkZWNvZGVyID09IEZYX0JTVFJDKCJEQ1QiKSkgew0KKyAgICAgICAgSUNvZGVjX1NjYW5saW5lRGVjb2RlciogcERlY29kZXIgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEpwZWdNb2R1bGUoKS0+Q3JlYXRlRGVjb2RlcigNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19idWYsIGxpbWl0LCB3aWR0aCwgaGVpZ2h0LCAwLCBwUGFyYW0gPyBwUGFyYW0tPkdldEludGVnZXIoRlhfQlNUUkMoIkNvbG9yVHJhbnNmb3JtIiksIDEpIDogMSk7DQorICAgICAgICByZXR1cm4gX0RlY29kZUFsbFNjYW5saW5lcyhwRGVjb2RlciwgZGVzdF9idWYsIGRlc3Rfc2l6ZSk7DQorICAgIH0gZWxzZSBpZiAoZGVjb2RlciA9PSBGWF9CU1RSQygiUnVuTGVuZ3RoRGVjb2RlIikgfHwgZGVjb2RlciA9PSBGWF9CU1RSQygiUkwiKSkgew0KKyAgICAgICAgcmV0dXJuIFJ1bkxlbmd0aERlY29kZShzcmNfYnVmLCBsaW1pdCwgZGVzdF9idWYsIGRlc3Rfc2l6ZSk7DQorICAgIH0NCisgICAgZGVzdF9zaXplID0gMDsNCisgICAgZGVzdF9idWYgPSAwOw0KKyAgICByZXR1cm4gKEZYX0RXT1JEKSAtIDE7DQorfQ0KK2V4dGVybiBjb25zdCBGWF9MUENTVFIgX1BERl9DaGFyVHlwZTsNCitDUERGX1N0cmVhbSogQ1BERl9TdHJlYW1QYXJzZXI6OlJlYWRJbmxpbmVTdHJlYW0oQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCwgQ1BERl9PYmplY3QqIHBDU09iaiwgRlhfQk9PTCBiRGVjb2RlKQ0KK3sNCisgICAgaWYgKG1fUG9zID09IG1fU2l6ZSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKF9QREZfQ2hhclR5cGVbbV9wQnVmW21fUG9zXV0gPT0gJ1cnKSB7DQorICAgICAgICBtX1BvcyArKzsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBEZWNvZGVyOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBQYXJhbSA9IE5VTEw7DQorICAgIENQREZfT2JqZWN0KiBwRmlsdGVyID0gcERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiRmlsdGVyIikpOw0KKyAgICBpZiAocEZpbHRlciA9PSBOVUxMKSB7DQorICAgIH0gZWxzZSBpZiAocEZpbHRlci0+R2V0VHlwZSgpID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgRGVjb2RlciA9ICgoQ1BERl9BcnJheSopcEZpbHRlciktPkdldFN0cmluZygwKTsNCisgICAgICAgIENQREZfQXJyYXkqIHBQYXJhbXMgPSBwRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkRlY29kZVBhcm1zIikpOw0KKyAgICAgICAgaWYgKHBQYXJhbXMpIHsNCisgICAgICAgICAgICBwUGFyYW0gPSBwUGFyYW1zLT5HZXREaWN0KDApOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRGVjb2RlciA9IHBGaWx0ZXItPkdldFN0cmluZygpOw0KKyAgICAgICAgcFBhcmFtID0gcERpY3QtPkdldERpY3QoRlhfQlNUUkMoIkRlY29kZVBhcm1zIikpOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIHdpZHRoID0gcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIldpZHRoIikpOw0KKyAgICBGWF9EV09SRCBoZWlnaHQgPSBwRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiSGVpZ2h0IikpOw0KKyAgICBGWF9EV09SRCBPcmlnU2l6ZSA9IDA7DQorICAgIGlmIChwQ1NPYmogIT0gTlVMTCkgew0KKyAgICAgICAgRlhfRFdPUkQgYnBjID0gcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIkJpdHNQZXJDb21wb25lbnQiKSk7DQorICAgICAgICBGWF9EV09SRCBuQ29tcG9uZW50cyA9IDE7DQorICAgICAgICBDUERGX0NvbG9yU3BhY2UqIHBDUyA9IHBEb2MtPkxvYWRDb2xvclNwYWNlKHBDU09iaik7DQorICAgICAgICBpZiAocENTID09IE5VTEwpIHsNCisgICAgICAgICAgICBuQ29tcG9uZW50cyA9IDM7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG5Db21wb25lbnRzID0gcENTLT5Db3VudENvbXBvbmVudHMoKTsNCisgICAgICAgICAgICBwRG9jLT5HZXRQYWdlRGF0YSgpLT5SZWxlYXNlQ29sb3JTcGFjZShwQ1NPYmopOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgcGl0Y2ggPSB3aWR0aDsNCisgICAgICAgIGlmIChicGMgJiYgcGl0Y2ggPiBJTlRfTUFYIC8gYnBjKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBwaXRjaCAqPSBicGM7DQorICAgICAgICBpZiAobkNvbXBvbmVudHMgJiYgcGl0Y2ggPiBJTlRfTUFYIC8gbkNvbXBvbmVudHMpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHBpdGNoICo9IG5Db21wb25lbnRzOw0KKyAgICAgICAgaWYgKHBpdGNoID4gSU5UX01BWCAtIDcpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHBpdGNoICs9IDc7DQorICAgICAgICBwaXRjaCAvPSA4Ow0KKyAgICAgICAgT3JpZ1NpemUgPSBwaXRjaDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmICh3aWR0aCA+IElOVF9NQVggLSA3KSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBPcmlnU2l6ZSA9ICgod2lkdGggKyA3KSAvIDgpOw0KKyAgICB9DQorICAgIGlmIChoZWlnaHQgJiYgT3JpZ1NpemUgPiBJTlRfTUFYIC8gaGVpZ2h0KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBPcmlnU2l6ZSAqPSBoZWlnaHQ7DQorICAgIEZYX0xQQllURSBwRGF0YSA9IE5VTEw7DQorICAgIEZYX0RXT1JEIGR3U3RyZWFtU2l6ZTsNCisgICAgaWYgKERlY29kZXIuSXNFbXB0eSgpKSB7DQorICAgICAgICBpZiAoT3JpZ1NpemUgPiBtX1NpemUgLSBtX1Bvcykgew0KKyAgICAgICAgICAgIE9yaWdTaXplID0gbV9TaXplIC0gbV9Qb3M7DQorICAgICAgICB9DQorICAgICAgICBwRGF0YSA9IEZYX0FsbG9jKEZYX0JZVEUsIE9yaWdTaXplKTsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKHBEYXRhLCBtX3BCdWYgKyBtX1BvcywgT3JpZ1NpemUpOw0KKyAgICAgICAgZHdTdHJlYW1TaXplID0gT3JpZ1NpemU7DQorICAgICAgICBtX1BvcyArPSBPcmlnU2l6ZTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX0RXT1JEIGR3RGVzdFNpemUgPSBPcmlnU2l6ZTsNCisgICAgICAgIGR3U3RyZWFtU2l6ZSA9IFBERl9EZWNvZGVJbmxpbmVTdHJlYW0obV9wQnVmICsgbV9Qb3MsIG1fU2l6ZSAtIG1fUG9zLCB3aWR0aCwgaGVpZ2h0LCBEZWNvZGVyLCBwUGFyYW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBEYXRhLCBkd0Rlc3RTaXplKTsNCisgICAgICAgIGlmICgoaW50KWR3U3RyZWFtU2l6ZSA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChiRGVjb2RlKSB7DQorICAgICAgICAgICAgbV9Qb3MgKz0gZHdTdHJlYW1TaXplOw0KKyAgICAgICAgICAgIGR3U3RyZWFtU2l6ZSA9IGR3RGVzdFNpemU7DQorICAgICAgICAgICAgaWYgKHBGaWx0ZXItPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICAgICAgKChDUERGX0FycmF5KilwRmlsdGVyKS0+UmVtb3ZlQXQoMCk7DQorICAgICAgICAgICAgICAgIENQREZfQXJyYXkqIHBQYXJhbXMgPSBwRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkRlY29kZVBhcm1zIikpOw0KKyAgICAgICAgICAgICAgICBpZiAocFBhcmFtcykgew0KKyAgICAgICAgICAgICAgICAgICAgcFBhcmFtcy0+UmVtb3ZlQXQoMCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwRGljdC0+UmVtb3ZlQXQoRlhfQlNUUkMoIkZpbHRlciIpKTsNCisgICAgICAgICAgICAgICAgcERpY3QtPlJlbW92ZUF0KEZYX0JTVFJDKCJEZWNvZGVQYXJtcyIpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChwRGF0YSkgew0KKyAgICAgICAgICAgICAgICBGWF9GcmVlKHBEYXRhKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRFdPUkQgZHdTYXZlUG9zID0gbV9Qb3M7DQorICAgICAgICAgICAgbV9Qb3MgKz0gZHdTdHJlYW1TaXplOw0KKyAgICAgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIGR3UHJldlBvcyA9IG1fUG9zOw0KKyAgICAgICAgICAgICAgICBDUERGX1N0cmVhbVBhcnNlcjo6U3ludGF4VHlwZSB0eXBlID0gUGFyc2VOZXh0RWxlbWVudCgpOw0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBDUERGX1N0cmVhbVBhcnNlcjo6RW5kT2ZEYXRhKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSBDUERGX1N0cmVhbVBhcnNlcjo6S2V5d29yZCkgew0KKyAgICAgICAgICAgICAgICAgICAgZHdTdHJlYW1TaXplICs9IG1fUG9zIC0gZHdQcmV2UG9zOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKEdldFdvcmRTaXplKCkgPT0gMiAmJiBHZXRXb3JkQnVmKClbMF0gPT0gJ0UnICYmDQorICAgICAgICAgICAgICAgICAgICAgICAgR2V0V29yZEJ1ZigpWzFdID09ICdJJykgew0KKyAgICAgICAgICAgICAgICAgICAgbV9Qb3MgPSBkd1ByZXZQb3M7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBkd1N0cmVhbVNpemUgKz0gbV9Qb3MgLSBkd1ByZXZQb3M7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fUG9zID0gZHdTYXZlUG9zOw0KKyAgICAgICAgICAgIHBEYXRhID0gRlhfQWxsb2MoRlhfQllURSwgZHdTdHJlYW1TaXplKTsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihwRGF0YSwgbV9wQnVmICsgbV9Qb3MsIGR3U3RyZWFtU2l6ZSk7DQorICAgICAgICAgICAgbV9Qb3MgKz0gZHdTdHJlYW1TaXplOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHBEaWN0LT5TZXRBdEludGVnZXIoRlhfQlNUUkMoIkxlbmd0aCIpLCAoaW50KWR3U3RyZWFtU2l6ZSk7DQorICAgIHJldHVybiBDUERGX1N0cmVhbTo6Q3JlYXRlKHBEYXRhLCBkd1N0cmVhbVNpemUsIHBEaWN0KTsNCit9DQorI2RlZmluZSBNQVhfV09SRF9CVUZGRVIgMjU2DQorI2RlZmluZSBNQVhfU1RSSU5HX0xFTkdUSAkzMjc2Nw0KKyNkZWZpbmUgRlhEV09SRF9UUlVFIEZYRFdPUkRfRlJPTV9MU0JGSVJTVCgweDY1NzU3Mjc0KQ0KKyNkZWZpbmUgRlhEV09SRF9OVUxMIEZYRFdPUkRfRlJPTV9MU0JGSVJTVCgweDZjNmM3NTZlKQ0KKyNkZWZpbmUgRlhEV09SRF9GQUxTIEZYRFdPUkRfRlJPTV9MU0JGSVJTVCgweDczNmM2MTY2KQ0KK0NQREZfU3RyZWFtUGFyc2VyOjpTeW50YXhUeXBlIENQREZfU3RyZWFtUGFyc2VyOjpQYXJzZU5leHRFbGVtZW50KCkNCit7DQorICAgIGlmIChtX3BMYXN0T2JqKSB7DQorICAgICAgICBtX3BMYXN0T2JqLT5SZWxlYXNlKCk7DQorICAgICAgICBtX3BMYXN0T2JqID0gTlVMTDsNCisgICAgfQ0KKyAgICBtX1dvcmRTaXplID0gMDsNCisgICAgRlhfQk9PTCBiSXNOdW1iZXIgPSBUUlVFOw0KKyAgICBpZiAobV9Qb3MgPj0gbV9TaXplKSB7DQorICAgICAgICByZXR1cm4gRW5kT2ZEYXRhOw0KKyAgICB9DQorICAgIGludCBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgaW50IHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIHdoaWxlICh0eXBlID09ICdXJykgew0KKyAgICAgICAgICAgIGlmIChtX1NpemUgPD0gbV9Qb3MpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEVuZE9mRGF0YTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2ggPSBtX3BCdWZbbV9Qb3MrK107DQorICAgICAgICAgICAgdHlwZSA9IF9QREZfQ2hhclR5cGVbY2hdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNoICE9ICclJykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgd2hpbGUgKDEpIHsNCisgICAgICAgICAgICBpZiAobV9TaXplIDw9IG1fUG9zKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBFbmRPZkRhdGE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNoID0gbV9wQnVmW21fUG9zKytdOw0KKyAgICAgICAgICAgIGlmIChjaCA9PSAnXHInIHx8IGNoID09ICdcbicpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgdHlwZSA9IF9QREZfQ2hhclR5cGVbY2hdOw0KKyAgICB9DQorICAgIGlmICh0eXBlID09ICdEJyAmJiBjaCAhPSAnLycpIHsNCisgICAgICAgIG1fUG9zIC0tOw0KKyAgICAgICAgbV9wTGFzdE9iaiA9IFJlYWROZXh0T2JqZWN0KCk7DQorICAgICAgICByZXR1cm4gT3RoZXJzOw0KKyAgICB9DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpZiAobV9Xb3JkU2l6ZSA8IE1BWF9XT1JEX0JVRkZFUikgew0KKyAgICAgICAgICAgIG1fV29yZEJ1ZmZlclttX1dvcmRTaXplKytdID0gY2g7DQorICAgICAgICB9DQorICAgICAgICBpZiAodHlwZSAhPSAnTicpIHsNCisgICAgICAgICAgICBiSXNOdW1iZXIgPSBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX1NpemUgPD0gbV9Qb3MpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGNoID0gbV9wQnVmW21fUG9zKytdOw0KKyAgICAgICAgdHlwZSA9IF9QREZfQ2hhclR5cGVbY2hdOw0KKyAgICAgICAgaWYgKHR5cGUgPT0gJ0QnIHx8IHR5cGUgPT0gJ1cnKSB7DQorICAgICAgICAgICAgbV9Qb3MgLS07DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemVdID0gMDsNCisgICAgaWYgKGJJc051bWJlcikgew0KKyAgICAgICAgcmV0dXJuIE51bWJlcjsNCisgICAgfQ0KKyAgICBpZiAobV9Xb3JkQnVmZmVyWzBdID09ICcvJykgew0KKyAgICAgICAgcmV0dXJuIE5hbWU7DQorICAgIH0NCisgICAgaWYgKG1fV29yZFNpemUgPT0gNCkgew0KKyAgICAgICAgaWYgKCooRlhfRFdPUkQqKW1fV29yZEJ1ZmZlciA9PSBGWERXT1JEX1RSVUUpIHsNCisgICAgICAgICAgICBtX3BMYXN0T2JqID0gQ1BERl9Cb29sZWFuOjpDcmVhdGUoVFJVRSk7DQorICAgICAgICAgICAgcmV0dXJuIE90aGVyczsNCisgICAgICAgIH0NCisgICAgICAgIGlmICgqKEZYX0RXT1JEKiltX1dvcmRCdWZmZXIgPT0gRlhEV09SRF9OVUxMKSB7DQorICAgICAgICAgICAgbV9wTGFzdE9iaiA9IENQREZfTnVsbDo6Q3JlYXRlKCk7DQorICAgICAgICAgICAgcmV0dXJuIE90aGVyczsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChtX1dvcmRTaXplID09IDUpIHsNCisgICAgICAgIGlmICgqKEZYX0RXT1JEKiltX1dvcmRCdWZmZXIgPT0gRlhEV09SRF9GQUxTICYmIG1fV29yZEJ1ZmZlcls0XSA9PSAnZScpIHsNCisgICAgICAgICAgICBtX3BMYXN0T2JqID0gQ1BERl9Cb29sZWFuOjpDcmVhdGUoRkFMU0UpOw0KKyAgICAgICAgICAgIHJldHVybiBPdGhlcnM7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEtleXdvcmQ7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1QYXJzZXI6OlNraXBQYXRoT2JqZWN0KCkNCit7DQorICAgIEZYX0RXT1JEIGNvbW1hbmRfc3RhcnRwb3MgPSBtX1BvczsNCisgICAgaWYgKG1fUG9zID49IG1fU2l6ZSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgaW50IHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIHdoaWxlICh0eXBlID09ICdXJykgew0KKyAgICAgICAgICAgIGlmIChtX1BvcyA+PSBtX1NpemUpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICB9DQorICAgICAgICBpZiAodHlwZSAhPSAnTicpIHsNCisgICAgICAgICAgICBtX1BvcyA9IGNvbW1hbmRfc3RhcnRwb3M7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgd2hpbGUgKDEpIHsNCisgICAgICAgICAgICB3aGlsZSAodHlwZSAhPSAnVycpIHsNCisgICAgICAgICAgICAgICAgaWYgKG1fUG9zID49IG1fU2l6ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNoID0gbV9wQnVmW21fUG9zKytdOw0KKyAgICAgICAgICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHdoaWxlICh0eXBlID09ICdXJykgew0KKyAgICAgICAgICAgICAgICBpZiAobV9Qb3MgPj0gbV9TaXplKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY2ggPSBtX3BCdWZbbV9Qb3MrK107DQorICAgICAgICAgICAgICAgIHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ04nKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9EV09SRCBvcF9zdGFydHBvcyA9IG1fUG9zIC0gMTsNCisgICAgICAgICAgICB3aGlsZSAodHlwZSAhPSAnVycgJiYgdHlwZSAhPSAnRCcpIHsNCisgICAgICAgICAgICAgICAgaWYgKG1fUG9zID49IG1fU2l6ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNoID0gbV9wQnVmW21fUG9zKytdOw0KKyAgICAgICAgICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX1BvcyAtIG9wX3N0YXJ0cG9zID09IDIpIHsNCisgICAgICAgICAgICAgICAgaW50IG9wID0gbV9wQnVmW29wX3N0YXJ0cG9zXTsNCisgICAgICAgICAgICAgICAgaWYgKG9wID09ICdtJyB8fCBvcCA9PSAnbCcgfHwgb3AgPT0gJ2MnIHx8IG9wID09ICd2JyB8fCBvcCA9PSAneScpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfc3RhcnRwb3MgPSBtX1BvczsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX1BvcyAtIG9wX3N0YXJ0cG9zID09IDMpIHsNCisgICAgICAgICAgICAgICAgaWYgKG1fcEJ1ZltvcF9zdGFydHBvc10gPT0gJ3InICYmIG1fcEJ1ZltvcF9zdGFydHBvcyArIDFdID09ICdlJykgew0KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9zdGFydHBvcyA9IG1fUG9zOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9Qb3MgPSBjb21tYW5kX3N0YXJ0cG9zOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDUERGX09iamVjdCogQ1BERl9TdHJlYW1QYXJzZXI6OlJlYWROZXh0T2JqZWN0KEZYX0JPT0wgYkFsbG93TmVzdGVkQXJyYXksIEZYX0JPT0wgYkluQXJyYXkpDQorew0KKyAgICBGWF9CT09MIGJJc051bWJlcjsNCisgICAgR2V0TmV4dFdvcmQoYklzTnVtYmVyKTsNCisgICAgaWYgKG1fV29yZFNpemUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKGJJc051bWJlcikgew0KKyAgICAgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemVdID0gMDsNCisgICAgICAgIHJldHVybiBDUERGX051bWJlcjo6Q3JlYXRlKENGWF9CeXRlU3RyaW5nQyhtX1dvcmRCdWZmZXIsIG1fV29yZFNpemUpKTsNCisgICAgfQ0KKyAgICBpbnQgZmlyc3RfY2hhciA9IG1fV29yZEJ1ZmZlclswXTsNCisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJy8nKSB7DQorICAgICAgICByZXR1cm4gQ1BERl9OYW1lOjpDcmVhdGUoUERGX05hbWVEZWNvZGUoQ0ZYX0J5dGVTdHJpbmdDKG1fV29yZEJ1ZmZlciArIDEsIG1fV29yZFNpemUgLSAxKSkpOw0KKyAgICB9DQorICAgIGlmIChmaXJzdF9jaGFyID09ICcoJykgew0KKyAgICAgICAgcmV0dXJuIENQREZfU3RyaW5nOjpDcmVhdGUoUmVhZFN0cmluZygpKTsNCisgICAgfQ0KKyAgICBpZiAoZmlyc3RfY2hhciA9PSAnPCcpIHsNCisgICAgICAgIGlmIChtX1dvcmRTaXplID09IDEpIHsNCisgICAgICAgICAgICByZXR1cm4gQ1BERl9TdHJpbmc6OkNyZWF0ZShSZWFkSGV4U3RyaW5nKCksIFRSVUUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IENQREZfRGljdGlvbmFyeTo6Q3JlYXRlKCk7DQorICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgIEdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgICAgICAgICAgaWYgKG1fV29yZFNpemUgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBwRGljdC0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fV29yZFNpemUgPT0gMiAmJiBtX1dvcmRCdWZmZXJbMF0gPT0gJz4nKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9Xb3JkQnVmZmVyWzBdICE9ICcvJykgew0KKyAgICAgICAgICAgICAgICBwRGljdC0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcga2V5ID0gUERGX05hbWVEZWNvZGUoQ0ZYX0J5dGVTdHJpbmdDKG1fV29yZEJ1ZmZlciArIDEsIG1fV29yZFNpemUgLSAxKSk7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBSZWFkTmV4dE9iamVjdChUUlVFKTsNCisgICAgICAgICAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGlmIChwRGljdCkgew0KKyAgICAgICAgICAgICAgICAgICAgcERpY3QtPlJlbGVhc2UoKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKCFrZXkuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIHBEaWN0LT5TZXRBdChrZXksIHBPYmopOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBPYmotPlJlbGVhc2UoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gcERpY3Q7DQorICAgIH0NCisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ1snKSB7DQorICAgICAgICBpZiAoIWJBbGxvd05lc3RlZEFycmF5ICYmIGJJbkFycmF5KSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBDUERGX0FycmF5OjpDcmVhdGUoKTsNCisgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBSZWFkTmV4dE9iamVjdChiQWxsb3dOZXN0ZWRBcnJheSwgVFJVRSk7DQorICAgICAgICAgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBpZiAobV9Xb3JkU2l6ZSA9PSAwIHx8IG1fV29yZEJ1ZmZlclswXSA9PSAnXScpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwQXJyYXk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fV29yZEJ1ZmZlclswXSA9PSAnWycpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcEFycmF5LT5BZGQocE9iaik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX1dvcmRTaXplID09IDQpIHsNCisgICAgICAgIGlmICgqKEZYX0RXT1JEKiltX1dvcmRCdWZmZXIgPT0gRlhEV09SRF9UUlVFKSB7DQorICAgICAgICAgICAgcmV0dXJuIENQREZfQm9vbGVhbjo6Q3JlYXRlKFRSVUUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCooRlhfRFdPUkQqKW1fV29yZEJ1ZmZlciA9PSBGWERXT1JEX05VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gQ1BERl9OdWxsOjpDcmVhdGUoKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChtX1dvcmRTaXplID09IDUpIHsNCisgICAgICAgIGlmICgqKEZYX0RXT1JEKiltX1dvcmRCdWZmZXIgPT0gRlhEV09SRF9GQUxTICYmIG1fV29yZEJ1ZmZlcls0XSA9PSAnZScpIHsNCisgICAgICAgICAgICByZXR1cm4gQ1BERl9Cb29sZWFuOjpDcmVhdGUoRkFMU0UpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCit2b2lkIENQREZfU3RyZWFtUGFyc2VyOjpHZXROZXh0V29yZChGWF9CT09MJiBiSXNOdW1iZXIpDQorew0KKyAgICBtX1dvcmRTaXplID0gMDsNCisgICAgYklzTnVtYmVyID0gVFJVRTsNCisgICAgaWYgKG1fU2l6ZSA8PSBtX1Bvcykgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgaW50IHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIHdoaWxlICh0eXBlID09ICdXJykgew0KKyAgICAgICAgICAgIGlmIChtX1NpemUgPD0gbV9Qb3MpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICB9DQorICAgICAgICBpZiAoY2ggIT0gJyUnKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgIGlmIChtX1NpemUgPD0gbV9Qb3MpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgICAgICAgICBpZiAoY2ggPT0gJ1xyJyB8fCBjaCA9PSAnXG4nKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgfQ0KKyAgICBpZiAodHlwZSA9PSAnRCcpIHsNCisgICAgICAgIGJJc051bWJlciA9IEZBTFNFOw0KKyAgICAgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemUrK10gPSBjaDsNCisgICAgICAgIGlmIChjaCA9PSAnLycpIHsNCisgICAgICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgICAgICBpZiAobV9TaXplIDw9IG1fUG9zKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY2ggPSBtX3BCdWZbbV9Qb3MrK107DQorICAgICAgICAgICAgICAgIHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gJ1InICYmIHR5cGUgIT0gJ04nKSB7DQorICAgICAgICAgICAgICAgICAgICBtX1BvcyAtLTsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9Xb3JkU2l6ZSA8IE1BWF9XT1JEX0JVRkZFUikgew0KKyAgICAgICAgICAgICAgICAgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemUrK10gPSBjaDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJzwnKSB7DQorICAgICAgICAgICAgaWYgKG1fU2l6ZSA8PSBtX1Bvcykgew0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNoID0gbV9wQnVmW21fUG9zKytdOw0KKyAgICAgICAgICAgIGlmIChjaCA9PSAnPCcpIHsNCisgICAgICAgICAgICAgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemUrK10gPSBjaDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBtX1BvcyAtLTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKGNoID09ICc+Jykgew0KKyAgICAgICAgICAgIGlmIChtX1NpemUgPD0gbV9Qb3MpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgICAgICAgICBpZiAoY2ggPT0gJz4nKSB7DQorICAgICAgICAgICAgICAgIG1fV29yZEJ1ZmZlclttX1dvcmRTaXplKytdID0gY2g7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9Qb3MgLS07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpZiAobV9Xb3JkU2l6ZSA8IE1BWF9XT1JEX0JVRkZFUikgew0KKyAgICAgICAgICAgIG1fV29yZEJ1ZmZlclttX1dvcmRTaXplKytdID0gY2g7DQorICAgICAgICB9DQorICAgICAgICBpZiAodHlwZSAhPSAnTicpIHsNCisgICAgICAgICAgICBiSXNOdW1iZXIgPSBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX1NpemUgPD0gbV9Qb3MpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgICAgIHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgICAgIGlmICh0eXBlID09ICdEJyB8fCB0eXBlID09ICdXJykgew0KKyAgICAgICAgICAgIG1fUG9zIC0tOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfU3RyZWFtUGFyc2VyOjpSZWFkU3RyaW5nKCkNCit7DQorICAgIGlmIChtX1NpemUgPD0gbV9Qb3MpIHsNCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIGludCBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgQ0ZYX0J5dGVUZXh0QnVmIGJ1ZjsNCisgICAgaW50IHBhcmxldmVsID0gMDsNCisgICAgaW50IHN0YXR1cyA9IDAsIGlFc2NDb2RlID0gMDsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7DQorICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJyknKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocGFybGV2ZWwgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWYuR2V0TGVuZ3RoKCkgPiBNQVhfU1RSSU5HX0xFTkdUSCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoYnVmLkdldEJ1ZmZlcigpLCBNQVhfU1RSSU5HX0xFTkdUSCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWYuR2V0Qnl0ZVN0cmluZygpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgcGFybGV2ZWwgLS07DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcignKScpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICcoJykgew0KKyAgICAgICAgICAgICAgICAgICAgcGFybGV2ZWwgKys7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcignKCcpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdcXCcpIHsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDE7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcigoY2hhciljaCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc3Jykgew0KKyAgICAgICAgICAgICAgICAgICAgaUVzY0NvZGUgPSBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDI7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ24nKSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcignXG4nKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAncicpIHsNCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRDaGFyKCdccicpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICd0Jykgew0KKyAgICAgICAgICAgICAgICAgICAgYnVmLkFwcGVuZENoYXIoJ1x0Jyk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ2InKSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcignXGInKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnZicpIHsNCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRDaGFyKCdcZicpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdccicpIHsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDQ7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnXG4nKSB7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcihjaCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc3Jykgew0KKyAgICAgICAgICAgICAgICAgICAgaUVzY0NvZGUgPSBpRXNjQ29kZSAqIDggKyBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDM7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcihpRXNjQ29kZSk7DQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc3Jykgew0KKyAgICAgICAgICAgICAgICAgICAgaUVzY0NvZGUgPSBpRXNjQ29kZSAqIDggKyBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRDaGFyKGlFc2NDb2RlKTsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcihpRXNjQ29kZSk7DQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSA0Og0KKyAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICBpZiAoY2ggIT0gJ1xuJykgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9TaXplIDw9IG1fUG9zKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBjaCA9IG1fcEJ1ZlttX1BvcysrXTsNCisgICAgfQ0KKyAgICBpZiAobV9TaXplID4gbV9Qb3MpIHsNCisgICAgICAgIGNoID0gbV9wQnVmW21fUG9zKytdOw0KKyAgICB9DQorICAgIGlmIChidWYuR2V0TGVuZ3RoKCkgPiBNQVhfU1RSSU5HX0xFTkdUSCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKGJ1Zi5HZXRCdWZmZXIoKSwgTUFYX1NUUklOR19MRU5HVEgpOw0KKyAgICB9DQorICAgIHJldHVybiBidWYuR2V0Qnl0ZVN0cmluZygpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX1N0cmVhbVBhcnNlcjo6UmVhZEhleFN0cmluZygpDQorew0KKyAgICBpZiAobV9TaXplIDw9IG1fUG9zKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICBpbnQgY2ggPSBtX3BCdWZbbV9Qb3MrK107DQorICAgIENGWF9CeXRlVGV4dEJ1ZiBidWY7DQorICAgIEZYX0JPT0wgYkZpcnN0ID0gVFJVRTsNCisgICAgaW50IGNvZGUgPSAwOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgaWYgKGNoID09ICc+Jykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsNCisgICAgICAgICAgICBpZiAoYkZpcnN0KSB7DQorICAgICAgICAgICAgICAgIGNvZGUgPSAoY2ggLSAnMCcpICogMTY7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgY29kZSArPSBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgYnVmLkFwcGVuZENoYXIoKGNoYXIpY29kZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJGaXJzdCA9ICFiRmlyc3Q7DQorICAgICAgICB9IGVsc2UgaWYgKGNoID49ICdBJyAmJiBjaCA8PSAnRicpIHsNCisgICAgICAgICAgICBpZiAoYkZpcnN0KSB7DQorICAgICAgICAgICAgICAgIGNvZGUgPSAoY2ggLSAnQScgKyAxMCkgKiAxNjsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBjb2RlICs9IGNoIC0gJ0EnICsgMTA7DQorICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRDaGFyKChjaGFyKWNvZGUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBiRmlyc3QgPSAhYkZpcnN0Ow0KKyAgICAgICAgfSBlbHNlIGlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ2YnKSB7DQorICAgICAgICAgICAgaWYgKGJGaXJzdCkgew0KKyAgICAgICAgICAgICAgICBjb2RlID0gKGNoIC0gJ2EnICsgMTApICogMTY7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgY29kZSArPSBjaCAtICdhJyArIDEwOw0KKyAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcigoY2hhciljb2RlKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYkZpcnN0ID0gIWJGaXJzdDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX1NpemUgPD0gbV9Qb3MpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGNoID0gbV9wQnVmW21fUG9zKytdOw0KKyAgICB9DQorICAgIGlmICghYkZpcnN0KSB7DQorICAgICAgICBidWYuQXBwZW5kQ2hhcigoY2hhciljb2RlKTsNCisgICAgfQ0KKyAgICBpZiAoYnVmLkdldExlbmd0aCgpID4gTUFYX1NUUklOR19MRU5HVEgpIHsNCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZyhidWYuR2V0QnVmZmVyKCksIE1BWF9TVFJJTkdfTEVOR1RIKTsNCisgICAgfQ0KKyAgICByZXR1cm4gYnVmLkdldEJ5dGVTdHJpbmcoKTsNCit9DQorI2RlZmluZSBQQUdFUEFSU0VfU1RBR0VfR0VUQ09OVEVOVAkJMQ0KKyNkZWZpbmUgUEFHRVBBUlNFX1NUQUdFX1BBUlNFCQkJMg0KKyNkZWZpbmUgUEFHRVBBUlNFX1NUQUdFX0NIRUNLQ0xJUAkJMw0KK0NQREZfQ29udGVudFBhcnNlcjo6Q1BERl9Db250ZW50UGFyc2VyKCkNCit7DQorICAgIG1fcFBhcnNlciA9IE5VTEw7DQorICAgIG1fcFN0cmVhbUFycmF5ID0gTlVMTDsNCisgICAgbV9wU2luZ2xlU3RyZWFtID0gTlVMTDsNCisgICAgbV9wRGF0YSA9IE5VTEw7DQorICAgIG1fU3RhdHVzID0gUmVhZHk7DQorICAgIG1fcFR5cGUzQ2hhciA9IE5VTEw7DQorfQ0KK0NQREZfQ29udGVudFBhcnNlcjo6fkNQREZfQ29udGVudFBhcnNlcigpDQorew0KKyAgICBDbGVhcigpOw0KK30NCit2b2lkIENQREZfQ29udGVudFBhcnNlcjo6Q2xlYXIoKQ0KK3sNCisgICAgaWYgKG1fcFBhcnNlcikgew0KKyAgICAgICAgZGVsZXRlIG1fcFBhcnNlcjsNCisgICAgfQ0KKyAgICBpZiAobV9wU2luZ2xlU3RyZWFtKSB7DQorICAgICAgICBkZWxldGUgbV9wU2luZ2xlU3RyZWFtOw0KKyAgICB9DQorICAgIGlmIChtX3BTdHJlYW1BcnJheSkgew0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IG1fblN0cmVhbXM7IGkgKyspDQorICAgICAgICAgICAgaWYgKG1fcFN0cmVhbUFycmF5W2ldKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBtX3BTdHJlYW1BcnJheVtpXTsNCisgICAgICAgICAgICB9DQorICAgICAgICBGWF9GcmVlKG1fcFN0cmVhbUFycmF5KTsNCisgICAgfQ0KKyAgICBpZiAobV9wRGF0YSAmJiBtX3BTaW5nbGVTdHJlYW0gPT0gTlVMTCkgew0KKyAgICAgICAgRlhfRnJlZSgodm9pZCopbV9wRGF0YSk7DQorICAgIH0NCisgICAgbV9wUGFyc2VyID0gTlVMTDsNCisgICAgbV9wU3RyZWFtQXJyYXkgPSBOVUxMOw0KKyAgICBtX3BTaW5nbGVTdHJlYW0gPSBOVUxMOw0KKyAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgbV9TdGF0dXMgPSBSZWFkeTsNCit9DQordm9pZCBDUERGX0NvbnRlbnRQYXJzZXI6OlN0YXJ0KENQREZfUGFnZSogcFBhZ2UsIENQREZfUGFyc2VPcHRpb25zKiBwT3B0aW9ucykNCit7DQorICAgIGlmIChtX1N0YXR1cyAhPSBSZWFkeSB8fCBwUGFnZSA9PSBOVUxMIHx8IHBQYWdlLT5tX3BEb2N1bWVudCA9PSBOVUxMIHx8IHBQYWdlLT5tX3BGb3JtRGljdCA9PSBOVUxMKSB7DQorICAgICAgICBtX1N0YXR1cyA9IERvbmU7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wT2JqZWN0cyA9IHBQYWdlOw0KKyAgICBtX2JGb3JtID0gRkFMU0U7DQorICAgIGlmIChwT3B0aW9ucykgew0KKyAgICAgICAgbV9PcHRpb25zID0gKnBPcHRpb25zOw0KKyAgICB9DQorICAgIG1fU3RhdHVzID0gVG9CZUNvbnRpbnVlZDsNCisgICAgbV9JbnRlcm5hbFN0YWdlID0gUEFHRVBBUlNFX1NUQUdFX0dFVENPTlRFTlQ7DQorICAgIG1fQ3VycmVudE9mZnNldCA9IDA7DQorICAgIENQREZfT2JqZWN0KiBwQ29udGVudCA9IHBQYWdlLT5tX3BGb3JtRGljdC0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJDb250ZW50cyIpKTsNCisgICAgaWYgKHBDb250ZW50ID09IE5VTEwpIHsNCisgICAgICAgIG1fU3RhdHVzID0gRG9uZTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAocENvbnRlbnQtPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICBtX25TdHJlYW1zID0gMDsNCisgICAgICAgIG1fcFNpbmdsZVN0cmVhbSA9IEZYX05FVyBDUERGX1N0cmVhbUFjYzsNCisgICAgICAgIG1fcFNpbmdsZVN0cmVhbS0+TG9hZEFsbERhdGEoKENQREZfU3RyZWFtKilwQ29udGVudCwgRkFMU0UpOw0KKyAgICB9IGVsc2UgaWYgKHBDb250ZW50LT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSAoQ1BERl9BcnJheSopcENvbnRlbnQ7DQorICAgICAgICBtX25TdHJlYW1zID0gcEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgaWYgKG1fblN0cmVhbXMgPT0gMCkgew0KKyAgICAgICAgICAgIG1fU3RhdHVzID0gRG9uZTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBtX3BTdHJlYW1BcnJheSA9IEZYX0FsbG9jKENQREZfU3RyZWFtQWNjKiwgbV9uU3RyZWFtcyk7DQorICAgICAgICBGWFNZU19tZW1zZXQzMihtX3BTdHJlYW1BcnJheSwgMCwgc2l6ZW9mKENQREZfU3RyZWFtQWNjKikgKiBtX25TdHJlYW1zKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fU3RhdHVzID0gRG9uZTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KK30NCit2b2lkIENQREZfQ29udGVudFBhcnNlcjo6U3RhcnQoQ1BERl9Gb3JtKiBwRm9ybSwgQ1BERl9BbGxTdGF0ZXMqIHBHcmFwaGljU3RhdGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4KiBwUGFyZW50TWF0cml4LCBDUERGX1R5cGUzQ2hhciogcFR5cGUzQ2hhciwgQ1BERl9QYXJzZU9wdGlvbnMqIHBPcHRpb25zLCBpbnQgbGV2ZWwpDQorew0KKyAgICBtX3BUeXBlM0NoYXIgPSBwVHlwZTNDaGFyOw0KKyAgICBtX3BPYmplY3RzID0gcEZvcm07DQorICAgIG1fYkZvcm0gPSBUUlVFOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4IGZvcm1fbWF0cml4ID0gcEZvcm0tPm1fcEZvcm1EaWN0LT5HZXRNYXRyaXgoRlhfQlNUUkMoIk1hdHJpeCIpKTsNCisgICAgaWYgKHBHcmFwaGljU3RhdGVzKSB7DQorICAgICAgICBmb3JtX21hdHJpeC5Db25jYXQocEdyYXBoaWNTdGF0ZXMtPm1fQ1RNKTsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwQkJveCA9IHBGb3JtLT5tX3BGb3JtRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkJCb3giKSk7DQorICAgIENGWF9GbG9hdFJlY3QgZm9ybV9iYm94Ow0KKyAgICBDUERGX1BhdGggQ2xpcFBhdGg7DQorICAgIGlmIChwQkJveCkgew0KKyAgICAgICAgZm9ybV9iYm94ID0gcEJCb3gtPkdldFJlY3QoKTsNCisgICAgICAgIENsaXBQYXRoLk5ldygpOw0KKyAgICAgICAgQ2xpcFBhdGguQXBwZW5kUmVjdChmb3JtX2Jib3gubGVmdCwgZm9ybV9iYm94LmJvdHRvbSwgZm9ybV9iYm94LnJpZ2h0LCBmb3JtX2Jib3gudG9wKTsNCisgICAgICAgIENsaXBQYXRoLlRyYW5zZm9ybSgmZm9ybV9tYXRyaXgpOw0KKyAgICAgICAgaWYgKHBQYXJlbnRNYXRyaXgpIHsNCisgICAgICAgICAgICBDbGlwUGF0aC5UcmFuc2Zvcm0ocFBhcmVudE1hdHJpeCk7DQorICAgICAgICB9DQorICAgICAgICBmb3JtX2Jib3guVHJhbnNmb3JtKCZmb3JtX21hdHJpeCk7DQorICAgICAgICBpZiAocFBhcmVudE1hdHJpeCkgew0KKyAgICAgICAgICAgIGZvcm1fYmJveC5UcmFuc2Zvcm0ocFBhcmVudE1hdHJpeCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUmVzb3VyY2VzID0gcEZvcm0tPm1fcEZvcm1EaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJSZXNvdXJjZXMiKSk7DQorICAgIG1fcFBhcnNlciA9IEZYX05FVyBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI7DQorICAgIG1fcFBhcnNlci0+SW5pdGlhbGl6ZSgpOw0KKyAgICBtX3BQYXJzZXItPlByZXBhcmVQYXJzZShwRm9ybS0+bV9wRG9jdW1lbnQsIHBGb3JtLT5tX3BQYWdlUmVzb3VyY2VzLCBwRm9ybS0+bV9wUmVzb3VyY2VzLCBwUGFyZW50TWF0cml4LCBwRm9ybSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFJlc291cmNlcywgJmZvcm1fYmJveCwgcE9wdGlvbnMsIHBHcmFwaGljU3RhdGVzLCBsZXZlbCk7DQorICAgIG1fcFBhcnNlci0+bV9wQ3VyU3RhdGVzLT5tX0NUTSA9IGZvcm1fbWF0cml4Ow0KKyAgICBtX3BQYXJzZXItPm1fcEN1clN0YXRlcy0+bV9QYXJlbnRNYXRyaXggPSBmb3JtX21hdHJpeDsNCisgICAgaWYgKENsaXBQYXRoLk5vdE51bGwoKSkgew0KKyAgICAgICAgbV9wUGFyc2VyLT5tX3BDdXJTdGF0ZXMtPm1fQ2xpcFBhdGguQXBwZW5kUGF0aChDbGlwUGF0aCwgRlhGSUxMX1dJTkRJTkcsIFRSVUUpOw0KKyAgICB9DQorICAgIGlmIChwRm9ybS0+bV9UcmFuc3BhcmVuY3kgJiBQREZUUkFOU19HUk9VUCkgew0KKyAgICAgICAgQ1BERl9HZW5lcmFsU3RhdGVEYXRhKiBwRGF0YSA9IG1fcFBhcnNlci0+bV9wQ3VyU3RhdGVzLT5tX0dlbmVyYWxTdGF0ZS5HZXRNb2RpZnkoKTsNCisgICAgICAgIHBEYXRhLT5tX0JsZW5kVHlwZSA9IEZYRElCX0JMRU5EX05PUk1BTDsNCisgICAgICAgIHBEYXRhLT5tX1N0cm9rZUFscGhhID0gMS4wZjsNCisgICAgICAgIHBEYXRhLT5tX0ZpbGxBbHBoYSA9IDEuMGY7DQorICAgICAgICBwRGF0YS0+bV9wU29mdE1hc2sgPSBOVUxMOw0KKyAgICB9DQorICAgIG1fblN0cmVhbXMgPSAwOw0KKyAgICBtX3BTaW5nbGVTdHJlYW0gPSBGWF9ORVcgQ1BERl9TdHJlYW1BY2M7DQorICAgIGlmIChwRm9ybS0+bV9wRG9jdW1lbnQpIHsNCisgICAgICAgIG1fcFNpbmdsZVN0cmVhbS0+TG9hZEFsbERhdGEocEZvcm0tPm1fcEZvcm1TdHJlYW0sIEZBTFNFKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcFNpbmdsZVN0cmVhbS0+TG9hZEFsbERhdGEocEZvcm0tPm1fcEZvcm1TdHJlYW0sIEZBTFNFKTsNCisgICAgfQ0KKyAgICBtX3BEYXRhID0gKEZYX0xQQllURSltX3BTaW5nbGVTdHJlYW0tPkdldERhdGEoKTsNCisgICAgbV9TaXplID0gbV9wU2luZ2xlU3RyZWFtLT5HZXRTaXplKCk7DQorICAgIG1fU3RhdHVzID0gVG9CZUNvbnRpbnVlZDsNCisgICAgbV9JbnRlcm5hbFN0YWdlID0gUEFHRVBBUlNFX1NUQUdFX1BBUlNFOw0KKyAgICBtX0N1cnJlbnRPZmZzZXQgPSAwOw0KK30NCit2b2lkIENQREZfQ29udGVudFBhcnNlcjo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpbnQgc3RlcHMgPSAwOw0KKyAgICB3aGlsZSAobV9TdGF0dXMgPT0gVG9CZUNvbnRpbnVlZCkgew0KKyAgICAgICAgaWYgKG1fSW50ZXJuYWxTdGFnZSA9PSBQQUdFUEFSU0VfU1RBR0VfR0VUQ09OVEVOVCkgew0KKyAgICAgICAgICAgIGlmIChtX0N1cnJlbnRPZmZzZXQgPT0gbV9uU3RyZWFtcykgew0KKyAgICAgICAgICAgICAgICBpZiAobV9wU3RyZWFtQXJyYXkpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fU2l6ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBpOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fblN0cmVhbXM7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBzaXplID0gbV9wU3RyZWFtQXJyYXlbaV0tPkdldFNpemUoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9TaXplICsgc2l6ZSArIDEgPD0gbV9TaXplKSB7DQorCQkJCQkJCW1fU3RhdHVzID0gRG9uZTsNCisJCQkJCQkJcmV0dXJuOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBtX1NpemUgKz0gc2l6ZSArIDE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBtX3BEYXRhID0gRlhfQWxsb2MoRlhfQllURSwgbV9TaXplKTsNCisgICAgICAgICAgICAgICAgICAgIGlmICghbV9wRGF0YSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RhdHVzID0gRG9uZTsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBwb3MgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fblN0cmVhbXM7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhICsgcG9zLCBtX3BTdHJlYW1BcnJheVtpXS0+R2V0RGF0YSgpLCBtX3BTdHJlYW1BcnJheVtpXS0+R2V0U2l6ZSgpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKz0gbV9wU3RyZWFtQXJyYXlbaV0tPkdldFNpemUoKSArIDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wRGF0YVtwb3MgLSAxXSA9ICcgJzsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbV9wU3RyZWFtQXJyYXlbaV07DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBGWF9GcmVlKG1fcFN0cmVhbUFycmF5KTsNCisgICAgICAgICAgICAgICAgICAgIG1fcFN0cmVhbUFycmF5ID0gTlVMTDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcERhdGEgPSAoRlhfTFBCWVRFKW1fcFNpbmdsZVN0cmVhbS0+R2V0RGF0YSgpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9TaXplID0gbV9wU2luZ2xlU3RyZWFtLT5HZXRTaXplKCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9JbnRlcm5hbFN0YWdlID0gUEFHRVBBUlNFX1NUQUdFX1BBUlNFOw0KKyAgICAgICAgICAgICAgICBtX0N1cnJlbnRPZmZzZXQgPSAwOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIENQREZfQXJyYXkqIHBDb250ZW50ID0gbV9wT2JqZWN0cy0+bV9wRm9ybURpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJDb250ZW50cyIpKTsNCisgICAgICAgICAgICAgICAgbV9wU3RyZWFtQXJyYXlbbV9DdXJyZW50T2Zmc2V0XSA9IEZYX05FVyBDUERGX1N0cmVhbUFjYzsNCisgICAgICAgICAgICAgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW1PYmogPSAoQ1BERl9TdHJlYW0qKXBDb250ZW50LT5HZXRFbGVtZW50VmFsdWUobV9DdXJyZW50T2Zmc2V0KTsNCisgICAgICAgICAgICAgICAgbV9wU3RyZWFtQXJyYXlbbV9DdXJyZW50T2Zmc2V0XS0+TG9hZEFsbERhdGEocFN0cmVhbU9iaiwgRkFMU0UpOw0KKyAgICAgICAgICAgICAgICBtX0N1cnJlbnRPZmZzZXQgKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fSW50ZXJuYWxTdGFnZSA9PSBQQUdFUEFSU0VfU1RBR0VfUEFSU0UpIHsNCisgICAgICAgICAgICBpZiAobV9wUGFyc2VyID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgbV9wUGFyc2VyID0gRlhfTkVXIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjsNCisgICAgICAgICAgICAgICAgbV9wUGFyc2VyLT5Jbml0aWFsaXplKCk7DQorICAgICAgICAgICAgICAgIG1fcFBhcnNlci0+UHJlcGFyZVBhcnNlKG1fcE9iamVjdHMtPm1fcERvY3VtZW50LCBtX3BPYmplY3RzLT5tX3BQYWdlUmVzb3VyY2VzLCBOVUxMLCBOVUxMLCBtX3BPYmplY3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BPYmplY3RzLT5tX3BSZXNvdXJjZXMsICZtX3BPYmplY3RzLT5tX0JCb3gsICZtX09wdGlvbnMsIE5VTEwsIDApOw0KKyAgICAgICAgICAgICAgICBtX3BQYXJzZXItPm1fcEN1clN0YXRlcy0+bV9Db2xvclN0YXRlLkdldE1vZGlmeSgpLT5EZWZhdWx0KCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX0N1cnJlbnRPZmZzZXQgPj0gbV9TaXplKSB7DQorICAgICAgICAgICAgICAgIG1fSW50ZXJuYWxTdGFnZSA9IFBBR0VQQVJTRV9TVEFHRV9DSEVDS0NMSVA7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9DdXJyZW50T2Zmc2V0ICs9IG1fcFBhcnNlci0+UGFyc2UobV9wRGF0YSArIG1fQ3VycmVudE9mZnNldCwgbV9TaXplIC0gbV9DdXJyZW50T2Zmc2V0LCBQQVJTRV9TVEVQX0xJTUlUKTsNCisgICAgICAgICAgICAgICAgaWYgKG1fcFBhcnNlci0+bV9iQWJvcnQpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fSW50ZXJuYWxTdGFnZSA9IFBBR0VQQVJTRV9TVEFHRV9DSEVDS0NMSVA7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX0ludGVybmFsU3RhZ2UgPT0gUEFHRVBBUlNFX1NUQUdFX0NIRUNLQ0xJUCkgew0KKyAgICAgICAgICAgIGlmIChtX3BUeXBlM0NoYXIpIHsNCisgICAgICAgICAgICAgICAgbV9wVHlwZTNDaGFyLT5tX2JDb2xvcmVkID0gbV9wUGFyc2VyLT5tX2JDb2xvcmVkOw0KKyAgICAgICAgICAgICAgICBtX3BUeXBlM0NoYXItPm1fV2lkdGggPSBGWFNZU19yb3VuZChtX3BQYXJzZXItPm1fVHlwZTNEYXRhWzBdICogMTAwMCk7DQorICAgICAgICAgICAgICAgIG1fcFR5cGUzQ2hhci0+bV9CQm94LmxlZnQgPSBGWFNZU19yb3VuZChtX3BQYXJzZXItPm1fVHlwZTNEYXRhWzJdICogMTAwMCk7DQorICAgICAgICAgICAgICAgIG1fcFR5cGUzQ2hhci0+bV9CQm94LmJvdHRvbSA9IEZYU1lTX3JvdW5kKG1fcFBhcnNlci0+bV9UeXBlM0RhdGFbM10gKiAxMDAwKTsNCisgICAgICAgICAgICAgICAgbV9wVHlwZTNDaGFyLT5tX0JCb3gucmlnaHQgPSBGWFNZU19yb3VuZChtX3BQYXJzZXItPm1fVHlwZTNEYXRhWzRdICogMTAwMCk7DQorICAgICAgICAgICAgICAgIG1fcFR5cGUzQ2hhci0+bV9CQm94LnRvcCA9IEZYU1lTX3JvdW5kKG1fcFBhcnNlci0+bV9UeXBlM0RhdGFbNV0gKiAxMDAwKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gbV9wT2JqZWN0cy0+bV9PYmplY3RMaXN0LkdldEhlYWRQb3NpdGlvbigpOw0KKyAgICAgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqID0gKENQREZfUGFnZU9iamVjdCopbV9wT2JqZWN0cy0+bV9PYmplY3RMaXN0LkdldE5leHQocG9zKTsNCisgICAgICAgICAgICAgICAgaWYgKHBPYmotPm1fQ2xpcFBhdGguSXNOdWxsKCkpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChwT2JqLT5tX0NsaXBQYXRoLkdldFBhdGhDb3VudCgpICE9IDEpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChwT2JqLT5tX0NsaXBQYXRoLkdldFRleHRDb3VudCgpKSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDUERGX1BhdGggQ2xpcFBhdGggPSBwT2JqLT5tX0NsaXBQYXRoLkdldFBhdGgoMCk7DQorICAgICAgICAgICAgICAgIGlmICghQ2xpcFBhdGguSXNSZWN0KCkgfHwgcE9iai0+bV9UeXBlID09IFBERlBBR0VfU0hBRElORykgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ0ZYX0Zsb2F0UmVjdCBvbGRfcmVjdChDbGlwUGF0aC5HZXRQb2ludFgoMCksIENsaXBQYXRoLkdldFBvaW50WSgwKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlwUGF0aC5HZXRQb2ludFgoMiksIENsaXBQYXRoLkdldFBvaW50WSgyKSk7DQorICAgICAgICAgICAgICAgIENGWF9GbG9hdFJlY3Qgb2JqX3JlY3QocE9iai0+bV9MZWZ0LCBwT2JqLT5tX0JvdHRvbSwgcE9iai0+bV9SaWdodCwgcE9iai0+bV9Ub3ApOw0KKyAgICAgICAgICAgICAgICBpZiAob2xkX3JlY3QuQ29udGFpbnMob2JqX3JlY3QpKSB7DQorICAgICAgICAgICAgICAgICAgICBwT2JqLT5tX0NsaXBQYXRoLlNldE51bGwoKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX1N0YXR1cyA9IERvbmU7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3RlcHMgKys7DQorICAgICAgICBpZiAocFBhdXNlICYmIHBQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK2ludCBDUERGX0NvbnRlbnRQYXJzZXI6OkVzdGltYXRlUHJvZ3Jlc3MoKQ0KK3sNCisgICAgaWYgKG1fU3RhdHVzID09IFJlYWR5KSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAobV9TdGF0dXMgPT0gRG9uZSkgew0KKyAgICAgICAgcmV0dXJuIDEwMDsNCisgICAgfQ0KKyAgICBpZiAobV9JbnRlcm5hbFN0YWdlID09IFBBR0VQQVJTRV9TVEFHRV9HRVRDT05URU5UKSB7DQorICAgICAgICByZXR1cm4gMTA7DQorICAgIH0NCisgICAgaWYgKG1fSW50ZXJuYWxTdGFnZSA9PSBQQUdFUEFSU0VfU1RBR0VfQ0hFQ0tDTElQKSB7DQorICAgICAgICByZXR1cm4gOTA7DQorICAgIH0NCisgICAgcmV0dXJuIDEwICsgODAgKiBtX0N1cnJlbnRPZmZzZXQgLyBtX1NpemU7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9wYXRoLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9wYXRoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzZjOTQwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvZnBkZl9wYWdlX3BhdGguY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2VvYmouaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgiDQorI2luY2x1ZGUgInBhZ2VpbnQuaCINCit2b2lkIENQREZfUGF0aE9iamVjdDo6Q29weURhdGEoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwU3JjKQ0KK3sNCisgICAgY29uc3QgQ1BERl9QYXRoT2JqZWN0KiBwU3JjT2JqID0gKGNvbnN0IENQREZfUGF0aE9iamVjdCopcFNyYzsNCisgICAgbV9QYXRoID0gcFNyY09iai0+bV9QYXRoOw0KKyAgICBtX0ZpbGxUeXBlID0gcFNyY09iai0+bV9GaWxsVHlwZTsNCisgICAgbV9iU3Ryb2tlID0gcFNyY09iai0+bV9iU3Ryb2tlOw0KKyAgICBtX01hdHJpeCA9IHBTcmNPYmotPm1fTWF0cml4Ow0KK30NCit2b2lkIENQREZfUGF0aE9iamVjdDo6VHJhbnNmb3JtKGNvbnN0IENQREZfTWF0cml4JiBtYXRyaXgpDQorew0KKyAgICBtX01hdHJpeC5Db25jYXQobWF0cml4KTsNCisgICAgQ2FsY0JvdW5kaW5nQm94KCk7DQorfQ0KK3ZvaWQgQ1BERl9QYXRoT2JqZWN0OjpTZXRHcmFwaFN0YXRlKENQREZfR3JhcGhTdGF0ZSBHcmFwaFN0YXRlKQ0KK3sNCisgICAgbV9HcmFwaFN0YXRlID0gR3JhcGhTdGF0ZTsNCisgICAgQ2FsY0JvdW5kaW5nQm94KCk7DQorfQ0KK3ZvaWQgQ1BERl9QYXRoT2JqZWN0OjpDYWxjQm91bmRpbmdCb3goKQ0KK3sNCisgICAgaWYgKG1fUGF0aC5Jc051bGwoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9GbG9hdFJlY3QgcmVjdDsNCisgICAgRlhfRkxPQVQgd2lkdGggPSBtX0dyYXBoU3RhdGUuR2V0T2JqZWN0KCktPm1fTGluZVdpZHRoOw0KKyAgICBpZiAobV9iU3Ryb2tlICYmIHdpZHRoICE9IDApIHsNCisgICAgICAgIHJlY3QgPSBtX1BhdGguR2V0Qm91bmRpbmdCb3god2lkdGgsIG1fR3JhcGhTdGF0ZS5HZXRPYmplY3QoKS0+bV9NaXRlckxpbWl0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJlY3QgPSBtX1BhdGguR2V0Qm91bmRpbmdCb3goKTsNCisgICAgfQ0KKyAgICByZWN0LlRyYW5zZm9ybSgmbV9NYXRyaXgpOw0KKyAgICBpZiAod2lkdGggPT0gMCAmJiBtX2JTdHJva2UpIHsNCisgICAgICAgIHJlY3QubGVmdCArPSAtMC41ZjsNCisgICAgICAgIHJlY3QucmlnaHQgKz0gMC41ZjsNCisgICAgICAgIHJlY3QuYm90dG9tICs9IC0wLjVmOw0KKyAgICAgICAgcmVjdC50b3AgKz0gMC41ZjsNCisgICAgfQ0KKyAgICBtX0xlZnQgPSByZWN0LmxlZnQ7DQorICAgIG1fUmlnaHQgPSByZWN0LnJpZ2h0Ow0KKyAgICBtX1RvcCA9IHJlY3QudG9wOw0KKyAgICBtX0JvdHRvbSA9IHJlY3QuYm90dG9tOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2VfcGF0dGVybi5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFnZS9mcGRmX3BhZ2VfcGF0dGVybi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVlMDM2NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL2ZwZGZfcGFnZV9wYXR0ZXJuLmNwcApAQCAtMCwwICsxLDI3OCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaCINCisjaW5jbHVkZSAicGFnZWludC5oIg0KK0NQREZfVGlsaW5nUGF0dGVybjo6Q1BERl9UaWxpbmdQYXR0ZXJuKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfT2JqZWN0KiBwUGF0dGVybk9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcGFyZW50TWF0cml4KSA6DQorICAgIENQREZfUGF0dGVybihwYXJlbnRNYXRyaXgpDQorew0KKyAgICBtX1BhdHRlcm5UeXBlID0gUEFUVEVSTl9USUxJTkc7DQorICAgIG1fcFBhdHRlcm5PYmogPSBwUGF0dGVybk9iajsNCisgICAgbV9wRG9jdW1lbnQgPSBwRG9jOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gbV9wUGF0dGVybk9iai0+R2V0RGljdCgpOw0KKyAgICBBU1NFUlQocERpY3QgIT0gTlVMTCk7DQorICAgIG1fUGF0dGVybjJGb3JtID0gcERpY3QtPkdldE1hdHJpeChGWF9CU1RSQygiTWF0cml4IikpOw0KKyAgICBtX2JDb2xvcmVkID0gcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIlBhaW50VHlwZSIpKSA9PSAxOw0KKyAgICBpZiAocGFyZW50TWF0cml4KSB7DQorICAgICAgICBtX1BhdHRlcm4yRm9ybS5Db25jYXQoKnBhcmVudE1hdHJpeCk7DQorICAgIH0NCisgICAgbV9wRm9ybSA9IE5VTEw7DQorfQ0KK0NQREZfVGlsaW5nUGF0dGVybjo6fkNQREZfVGlsaW5nUGF0dGVybigpDQorew0KKyAgICBpZiAobV9wRm9ybSkgew0KKyAgICAgICAgZGVsZXRlIG1fcEZvcm07DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX1RpbGluZ1BhdHRlcm46OkxvYWQoKQ0KK3sNCisgICAgaWYgKG1fcEZvcm0gIT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IG1fcFBhdHRlcm5PYmotPkdldERpY3QoKTsNCisgICAgaWYgKHBEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX2JDb2xvcmVkID0gcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIlBhaW50VHlwZSIpKSA9PSAxOw0KKyAgICBtX1hTdGVwID0gKEZYX0ZMT0FUKUZYU1lTX2ZhYnMocERpY3QtPkdldE51bWJlcihGWF9CU1RSQygiWFN0ZXAiKSkpOw0KKyAgICBtX1lTdGVwID0gKEZYX0ZMT0FUKUZYU1lTX2ZhYnMocERpY3QtPkdldE51bWJlcihGWF9CU1RSQygiWVN0ZXAiKSkpOw0KKyAgICBpZiAobV9wUGF0dGVybk9iai0+R2V0VHlwZSgpICE9IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IChDUERGX1N0cmVhbSopbV9wUGF0dGVybk9iajsNCisgICAgbV9wRm9ybSA9IEZYX05FVyBDUERGX0Zvcm0obV9wRG9jdW1lbnQsIE5VTEwsIHBTdHJlYW0pOw0KKyAgICBtX3BGb3JtLT5QYXJzZUNvbnRlbnQoTlVMTCwgJm1fUGFyZW50TWF0cml4LCBOVUxMLCBOVUxMKTsNCisgICAgbV9CQm94ID0gcERpY3QtPkdldFJlY3QoRlhfQlNUUkMoIkJCb3giKSk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDUERGX1NoYWRpbmdQYXR0ZXJuOjpDUERGX1NoYWRpbmdQYXR0ZXJuKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfT2JqZWN0KiBwUGF0dGVybk9iaiwgRlhfQk9PTCBiU2hhZGluZywgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcGFyZW50TWF0cml4KSA6IENQREZfUGF0dGVybihwYXJlbnRNYXRyaXgpDQorew0KKyAgICBtX1BhdHRlcm5UeXBlID0gUEFUVEVSTl9TSEFESU5HOw0KKyAgICBtX3BQYXR0ZXJuT2JqID0gYlNoYWRpbmcgPyBOVUxMIDogcFBhdHRlcm5PYmo7DQorICAgIG1fcERvY3VtZW50ID0gcERvYzsNCisgICAgbV9iU2hhZGluZ09iaiA9IGJTaGFkaW5nOw0KKyAgICBpZiAoIWJTaGFkaW5nKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gbV9wUGF0dGVybk9iai0+R2V0RGljdCgpOw0KKyAgICAgICAgQVNTRVJUKHBEaWN0ICE9IE5VTEwpOw0KKyAgICAgICAgbV9QYXR0ZXJuMkZvcm0gPSBwRGljdC0+R2V0TWF0cml4KEZYX0JTVFJDKCJNYXRyaXgiKSk7DQorICAgICAgICBtX3BTaGFkaW5nT2JqID0gcERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiU2hhZGluZyIpKTsNCisgICAgICAgIGlmIChwYXJlbnRNYXRyaXgpIHsNCisgICAgICAgICAgICBtX1BhdHRlcm4yRm9ybS5Db25jYXQoKnBhcmVudE1hdHJpeCk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BTaGFkaW5nT2JqID0gcFBhdHRlcm5PYmo7DQorICAgIH0NCisgICAgbV9TaGFkaW5nVHlwZSA9IDA7DQorICAgIG1fcENTID0gTlVMTDsNCisgICAgbV9uRnVuY3MgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkgKyspIHsNCisgICAgICAgIG1fcEZ1bmN0aW9uc1tpXSA9IE5VTEw7DQorICAgIH0NCit9DQorQ1BERl9TaGFkaW5nUGF0dGVybjo6fkNQREZfU2hhZGluZ1BhdHRlcm4oKQ0KK3sNCisgICAgQ2xlYXIoKTsNCit9DQordm9pZCBDUERGX1NoYWRpbmdQYXR0ZXJuOjpDbGVhcigpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbkZ1bmNzOyBpICsrKSB7DQorICAgICAgICBpZiAobV9wRnVuY3Rpb25zW2ldKSB7DQorICAgICAgICAgICAgZGVsZXRlIG1fcEZ1bmN0aW9uc1tpXTsNCisgICAgICAgIH0NCisgICAgICAgIG1fcEZ1bmN0aW9uc1tpXSA9IE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9Db2xvclNwYWNlKiBwQ1MgPSBtX3BDUzsNCisgICAgaWYgKHBDUyAmJiBtX3BEb2N1bWVudCkgew0KKyAgICAgICAgbV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCktPlJlbGVhc2VDb2xvclNwYWNlKHBDUy0+R2V0QXJyYXkoKSk7DQorICAgIH0NCisgICAgbV9TaGFkaW5nVHlwZSA9IDA7DQorICAgIG1fcENTID0gTlVMTDsNCisgICAgbV9uRnVuY3MgPSAwOw0KK30NCitGWF9CT09MIENQREZfU2hhZGluZ1BhdHRlcm46OkxvYWQoKQ0KK3sNCisgICAgaWYgKG1fU2hhZGluZ1R5cGUgIT0gMCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwU2hhZGluZ0RpY3QgPSBtX3BTaGFkaW5nT2JqLT5HZXREaWN0KCk7DQorICAgIGlmIChwU2hhZGluZ0RpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX25GdW5jcykgew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX25GdW5jczsgaSArKykNCisgICAgICAgICAgICBpZiAobV9wRnVuY3Rpb25zW2ldKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBtX3BGdW5jdGlvbnNbaV07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgbV9uRnVuY3MgPSAwOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwRnVuYyA9IHBTaGFkaW5nRGljdC0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJGdW5jdGlvbiIpKTsNCisgICAgaWYgKHBGdW5jKSB7DQorICAgICAgICBpZiAocEZ1bmMtPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICBtX25GdW5jcyA9ICgoQ1BERl9BcnJheSopcEZ1bmMpLT5HZXRDb3VudCgpOw0KKyAgICAgICAgICAgIGlmIChtX25GdW5jcyA+IDQpIHsNCisgICAgICAgICAgICAgICAgbV9uRnVuY3MgPSA0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbkZ1bmNzOyBpICsrKSB7DQorICAgICAgICAgICAgICAgIG1fcEZ1bmN0aW9uc1tpXSA9IENQREZfRnVuY3Rpb246OkxvYWQoKChDUERGX0FycmF5KilwRnVuYyktPkdldEVsZW1lbnRWYWx1ZShpKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX3BGdW5jdGlvbnNbMF0gPSBDUERGX0Z1bmN0aW9uOjpMb2FkKHBGdW5jKTsNCisgICAgICAgICAgICBtX25GdW5jcyA9IDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBDU09iaiA9IHBTaGFkaW5nRGljdC0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJDb2xvclNwYWNlIikpOw0KKyAgICBpZiAocENTT2JqID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX0RvY1BhZ2VEYXRhKiBwRG9jUGFnZURhdGEgPSBtX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKTsNCisgICAgbV9wQ1MgPSBwRG9jUGFnZURhdGEtPkdldENvbG9yU3BhY2UocENTT2JqLCBOVUxMKTsNCisgICAgbV9TaGFkaW5nVHlwZSA9IHBTaGFkaW5nRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiU2hhZGluZ1R5cGUiKSk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfU2hhZGluZ1BhdHRlcm46OlJlbG9hZCgpDQorew0KKyAgICBDbGVhcigpOw0KKyAgICByZXR1cm4gTG9hZCgpOw0KK30NCitGWF9CT09MIENQREZfTWVzaFN0cmVhbTo6TG9hZChDUERGX1N0cmVhbSogcFNoYWRpbmdTdHJlYW0sIENQREZfRnVuY3Rpb24qKiBwRnVuY3MsIGludCBuRnVuY3MsIENQREZfQ29sb3JTcGFjZSogcENTKQ0KK3sNCisgICAgbV9TdHJlYW0uTG9hZEFsbERhdGEocFNoYWRpbmdTdHJlYW0pOw0KKyAgICBtX0JpdFN0cmVhbS5Jbml0KG1fU3RyZWFtLkdldERhdGEoKSwgbV9TdHJlYW0uR2V0U2l6ZSgpKTsNCisgICAgbV9wRnVuY3MgPSBwRnVuY3M7DQorICAgIG1fbkZ1bmNzID0gbkZ1bmNzOw0KKyAgICBtX3BDUyA9IHBDUzsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IHBTaGFkaW5nU3RyZWFtLT5HZXREaWN0KCk7DQorICAgIG1fbkNvb3JkQml0cyA9IHBEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJCaXRzUGVyQ29vcmRpbmF0ZSIpKTsNCisgICAgbV9uQ29tcEJpdHMgPSBwRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiQml0c1BlckNvbXBvbmVudCIpKTsNCisgICAgbV9uRmxhZ0JpdHMgPSBwRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiQml0c1BlckZsYWciKSk7DQorICAgIGlmICghbV9uQ29vcmRCaXRzIHx8ICFtX25Db21wQml0cykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGludCBuQ29tcHMgPSBwQ1MtPkNvdW50Q29tcG9uZW50cygpOw0KKyAgICBpZiAobkNvbXBzID4gOCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fbkNvbXBzID0gbkZ1bmNzID8gMSA6IG5Db21wczsNCisgICAgaWYgKCgoaW50KW1fbkNvbXBzIDwgMCkgfHwgbV9uQ29tcHMgPiA4KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9Db29yZE1heCA9IG1fbkNvb3JkQml0cyA9PSAzMiA/IC0xIDogKDEgPDwgbV9uQ29vcmRCaXRzKSAtIDE7DQorICAgIG1fQ29tcE1heCA9ICgxIDw8IG1fbkNvbXBCaXRzKSAtIDE7DQorICAgIENQREZfQXJyYXkqIHBEZWNvZGUgPSBwRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkRlY29kZSIpKTsNCisgICAgaWYgKHBEZWNvZGUgPT0gTlVMTCB8fCBwRGVjb2RlLT5HZXRDb3VudCgpICE9IDQgKyBtX25Db21wcyAqIDIpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3htaW4gPSBwRGVjb2RlLT5HZXROdW1iZXIoMCk7DQorICAgIG1feG1heCA9IHBEZWNvZGUtPkdldE51bWJlcigxKTsNCisgICAgbV95bWluID0gcERlY29kZS0+R2V0TnVtYmVyKDIpOw0KKyAgICBtX3ltYXggPSBwRGVjb2RlLT5HZXROdW1iZXIoMyk7DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBtX25Db21wczsgaSArKykgew0KKyAgICAgICAgbV9Db2xvck1pbltpXSA9IHBEZWNvZGUtPkdldE51bWJlcihpICogMiArIDQpOw0KKyAgICAgICAgbV9Db2xvck1heFtpXSA9IHBEZWNvZGUtPkdldE51bWJlcihpICogMiArIDUpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9EV09SRCBDUERGX01lc2hTdHJlYW06OkdldEZsYWcoKQ0KK3sNCisgICAgcmV0dXJuIG1fQml0U3RyZWFtLkdldEJpdHMobV9uRmxhZ0JpdHMpICYgMHgwMzsNCit9DQordm9pZCBDUERGX01lc2hTdHJlYW06OkdldENvb3JkcyhGWF9GTE9BVCYgeCwgRlhfRkxPQVQmIHkpDQorew0KKyAgICBpZiAobV9uQ29vcmRCaXRzID09IDMyKSB7DQorICAgICAgICB4ID0gbV94bWluICsgKEZYX0ZMT0FUKShtX0JpdFN0cmVhbS5HZXRCaXRzKG1fbkNvb3JkQml0cykgKiAobV94bWF4IC0gbV94bWluKSAvIChkb3VibGUpbV9Db29yZE1heCk7DQorICAgICAgICB5ID0gbV95bWluICsgKEZYX0ZMT0FUKShtX0JpdFN0cmVhbS5HZXRCaXRzKG1fbkNvb3JkQml0cykgKiAobV95bWF4IC0gbV95bWluKSAvIChkb3VibGUpbV9Db29yZE1heCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB4ID0gbV94bWluICsgbV9CaXRTdHJlYW0uR2V0Qml0cyhtX25Db29yZEJpdHMpICogKG1feG1heCAtIG1feG1pbikgLyBtX0Nvb3JkTWF4Ow0KKyAgICAgICAgeSA9IG1feW1pbiArIG1fQml0U3RyZWFtLkdldEJpdHMobV9uQ29vcmRCaXRzKSAqIChtX3ltYXggLSBtX3ltaW4pIC8gbV9Db29yZE1heDsNCisgICAgfQ0KK30NCit2b2lkIENQREZfTWVzaFN0cmVhbTo6R2V0Q29sb3IoRlhfRkxPQVQmIHIsIEZYX0ZMT0FUJiBnLCBGWF9GTE9BVCYgYikNCit7DQorICAgIEZYX0RXT1JEIGk7DQorICAgIEZYX0ZMT0FUIGNvbG9yX3ZhbHVlWzhdOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9uQ29tcHM7IGkgKyspIHsNCisgICAgICAgIGNvbG9yX3ZhbHVlW2ldID0gbV9Db2xvck1pbltpXSArIG1fQml0U3RyZWFtLkdldEJpdHMobV9uQ29tcEJpdHMpICogKG1fQ29sb3JNYXhbaV0gLSBtX0NvbG9yTWluW2ldKSAvIG1fQ29tcE1heDsNCisgICAgfQ0KKyAgICBpZiAobV9uRnVuY3MpIHsNCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga01heFJlc3VsdHMgPSA4Ow0KKyAgICAgICAgRlhfRkxPQVQgcmVzdWx0W2tNYXhSZXN1bHRzXTsNCisgICAgICAgIGludCBuUmVzdWx0czsNCisgICAgICAgIEZYU1lTX21lbXNldDMyKHJlc3VsdCwgMCwgc2l6ZW9mKHJlc3VsdCkpOw0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IG1fbkZ1bmNzOyBpICsrKSB7DQorICAgICAgICAgICAgaWYgKG1fcEZ1bmNzW2ldICYmIG1fcEZ1bmNzW2ldLT5Db3VudE91dHB1dHMoKSA8PSBrTWF4UmVzdWx0cykgew0KKyAgICAgICAgICAgICAgICBtX3BGdW5jc1tpXS0+Q2FsbChjb2xvcl92YWx1ZSwgMSwgcmVzdWx0LCBuUmVzdWx0cyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wQ1MtPkdldFJHQihyZXN1bHQsIHIsIGcsIGIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wQ1MtPkdldFJHQihjb2xvcl92YWx1ZSwgciwgZywgYik7DQorICAgIH0NCit9DQorRlhfRFdPUkQgQ1BERl9NZXNoU3RyZWFtOjpHZXRWZXJ0ZXgoQ1BERl9NZXNoVmVydGV4JiB2ZXJ0ZXgsIENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyQml0bWFwKQ0KK3sNCisgICAgRlhfRFdPUkQgZmxhZyA9IEdldEZsYWcoKTsNCisgICAgR2V0Q29vcmRzKHZlcnRleC54LCB2ZXJ0ZXgueSk7DQorICAgIHBPYmplY3QyQml0bWFwLT5UcmFuc2Zvcm0odmVydGV4LngsIHZlcnRleC55KTsNCisgICAgR2V0Q29sb3IodmVydGV4LnIsIHZlcnRleC5nLCB2ZXJ0ZXguYik7DQorICAgIG1fQml0U3RyZWFtLkJ5dGVBbGlnbigpOw0KKyAgICByZXR1cm4gZmxhZzsNCit9DQorRlhfQk9PTCBDUERGX01lc2hTdHJlYW06OkdldFZlcnRleFJvdyhDUERGX01lc2hWZXJ0ZXgqIHZlcnRleCwgaW50IGNvdW50LCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkJpdG1hcCkNCit7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsNCisgICAgICAgIGlmIChtX0JpdFN0cmVhbS5Jc0VPRigpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgR2V0Q29vcmRzKHZlcnRleFtpXS54LCB2ZXJ0ZXhbaV0ueSk7DQorICAgICAgICBwT2JqZWN0MkJpdG1hcC0+VHJhbnNmb3JtKHZlcnRleFtpXS54LCB2ZXJ0ZXhbaV0ueSk7DQorICAgICAgICBHZXRDb2xvcih2ZXJ0ZXhbaV0uciwgdmVydGV4W2ldLmcsIHZlcnRleFtpXS5iKTsNCisgICAgICAgIG1fQml0U3RyZWFtLkJ5dGVBbGlnbigpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDRlhfRmxvYXRSZWN0IF9HZXRTaGFkaW5nQkJveChDUERGX1N0cmVhbSogcFN0cmVhbSwgaW50IHR5cGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9GdW5jdGlvbioqIHBGdW5jcywgaW50IG5GdW5jcywgQ1BERl9Db2xvclNwYWNlKiBwQ1MpDQorew0KKyAgICBpZiAocFN0cmVhbSA9PSBOVUxMIHx8IHBTdHJlYW0tPkdldFR5cGUoKSAhPSBQREZPQkpfU1RSRUFNIHx8IHBGdW5jcyA9PSBOVUxMIHx8IHBDUyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0Zsb2F0UmVjdCgwLCAwLCAwLCAwKTsNCisgICAgfQ0KKyAgICBDUERGX01lc2hTdHJlYW0gc3RyZWFtOw0KKyAgICBpZiAoIXN0cmVhbS5Mb2FkKHBTdHJlYW0sIHBGdW5jcywgbkZ1bmNzLCBwQ1MpKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0Zsb2F0UmVjdCgwLCAwLCAwLCAwKTsNCisgICAgfQ0KKyAgICBDRlhfRmxvYXRSZWN0IHJlY3Q7DQorICAgIEZYX0JPT0wgYlN0YXJ0ZWQgPSBGQUxTRTsNCisgICAgRlhfQk9PTCBiR291cmF1ZCA9IHR5cGUgPT0gNCB8fCB0eXBlID09IDU7DQorICAgIGludCBmdWxsX3BvaW50X2NvdW50ID0gdHlwZSA9PSA3ID8gMTYgOiAodHlwZSA9PSA2ID8gMTIgOiAxKTsNCisgICAgaW50IGZ1bGxfY29sb3JfY291bnQgPSAodHlwZSA9PSA2IHx8IHR5cGUgPT0gNykgPyA0IDogMTsNCisgICAgd2hpbGUgKCFzdHJlYW0ubV9CaXRTdHJlYW0uSXNFT0YoKSkgew0KKyAgICAgICAgRlhfRFdPUkQgZmxhZzsNCisgICAgICAgIGlmICh0eXBlICE9IDUpIHsNCisgICAgICAgICAgICBmbGFnID0gc3RyZWFtLkdldEZsYWcoKTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBwb2ludF9jb3VudCA9IGZ1bGxfcG9pbnRfY291bnQsIGNvbG9yX2NvdW50ID0gZnVsbF9jb2xvcl9jb3VudDsNCisgICAgICAgIGlmICghYkdvdXJhdWQgJiYgZmxhZykgew0KKyAgICAgICAgICAgIHBvaW50X2NvdW50IC09IDQ7DQorICAgICAgICAgICAgY29sb3JfY291bnQgLT0gMjsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9pbnRfY291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9GTE9BVCB4LCB5Ow0KKyAgICAgICAgICAgIHN0cmVhbS5HZXRDb29yZHMoeCwgeSk7DQorICAgICAgICAgICAgaWYgKGJTdGFydGVkKSB7DQorICAgICAgICAgICAgICAgIHJlY3QuVXBkYXRlUmVjdCh4LCB5KTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICByZWN0LkluaXRSZWN0KHgsIHkpOw0KKyAgICAgICAgICAgICAgICBiU3RhcnRlZCA9IFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgc3RyZWFtLm1fQml0U3RyZWFtLlNraXBCaXRzKHN0cmVhbS5tX25Db21wcyAqIHN0cmVhbS5tX25Db21wQml0cyAqIGNvbG9yX2NvdW50KTsNCisgICAgICAgIGlmIChiR291cmF1ZCkgew0KKyAgICAgICAgICAgIHN0cmVhbS5tX0JpdFN0cmVhbS5CeXRlQWxpZ24oKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZWN0LlRyYW5zZm9ybShwTWF0cml4KTsNCisgICAgcmV0dXJuIHJlY3Q7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL3BhZ2VpbnQuaCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYWdlL3BhZ2VpbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWE4M2VjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhZ2UvcGFnZWludC5oCkBAIC0wLDAgKzEsNTA1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZW9iai5oIg0KKyNkZWZpbmUgUEFSU0VfU1RFUF9MSU1JVAkJMTAwDQorI2RlZmluZSBTVFJFQU1fUEFSU0VfQlVGU0laRQkyMDQ4MA0KK2NsYXNzIENQREZfUXVpY2tGb250Q2FjaGU7DQorI2lmbmRlZiBfRlBERkFQSV9NSU5JXw0KK2NsYXNzIENQREZfU3RyZWFtUGFyc2VyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDUERGX1N0cmVhbVBhcnNlcihjb25zdCBGWF9CWVRFKiBwRGF0YSwgRlhfRFdPUkQgZHdTaXplKTsNCisgICAgfkNQREZfU3RyZWFtUGFyc2VyKCk7DQorDQorICAgIENQREZfU3RyZWFtKgkJUmVhZElubGluZVN0cmVhbShDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0RpY3Rpb25hcnkqIHBEaWN0LCBDUERGX09iamVjdCogcENTT2JqLCBGWF9CT09MIGJEZWNvZGUpOw0KKyAgICB0eXBlZGVmIGVudW0geyBFbmRPZkRhdGEsIE51bWJlciwgS2V5d29yZCwgTmFtZSwgT3RoZXJzIH0gU3ludGF4VHlwZTsNCisNCisgICAgU3ludGF4VHlwZQkJCVBhcnNlTmV4dEVsZW1lbnQoKTsNCisgICAgRlhfTFBCWVRFCQkJR2V0V29yZEJ1ZigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1dvcmRCdWZmZXI7DQorICAgIH0NCisgICAgRlhfRFdPUkQJCQlHZXRXb3JkU2l6ZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1dvcmRTaXplOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KgkJR2V0T2JqZWN0KCkNCisgICAgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBtX3BMYXN0T2JqOw0KKyAgICAgICAgbV9wTGFzdE9iaiA9IE5VTEw7DQorICAgICAgICByZXR1cm4gcE9iajsNCisgICAgfQ0KKyAgICBGWF9EV09SRAkJCUdldFBvcygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1BvczsNCisgICAgfQ0KKyAgICB2b2lkCQkJCVNldFBvcyhGWF9EV09SRCBwb3MpDQorICAgIHsNCisgICAgICAgIG1fUG9zID0gcG9zOw0KKyAgICB9DQorDQorICAgIENQREZfT2JqZWN0KgkJUmVhZE5leHRPYmplY3QoRlhfQk9PTCBiQWxsb3dOZXN0ZWRBcnJheSA9IEZBTFNFLCBGWF9CT09MIGJJbkFycmF5ID0gRkFMU0UpOw0KKyAgICB2b2lkCQkJCVNraXBQYXRoT2JqZWN0KCk7DQorcHJvdGVjdGVkOg0KKyAgICB2b2lkCQkJCUdldE5leHRXb3JkKEZYX0JPT0wmIGJJc051bWJlcik7DQorICAgIENGWF9CeXRlU3RyaW5nCQlSZWFkU3RyaW5nKCk7DQorICAgIENGWF9CeXRlU3RyaW5nCQlSZWFkSGV4U3RyaW5nKCk7DQorICAgIGNvbnN0IEZYX0JZVEUqCQltX3BCdWY7DQorICAgIEZYX0RXT1JECQkJbV9TaXplOw0KKyAgICBGWF9EV09SRAkJCW1fUG9zOw0KKyAgICBGWF9CWVRFCQkJCW1fV29yZEJ1ZmZlclsyNTZdOw0KKyAgICBGWF9EV09SRAkJCW1fV29yZFNpemU7DQorICAgIENQREZfT2JqZWN0KgkJbV9wTGFzdE9iajsNCit9Ow0KKyNlbmRpZg0KK3R5cGVkZWYgZW51bSB7DQorICAgIFBERk9QX0Nsb3NlRmlsbFN0cm9rZVBhdGggPSAwLCBQREZPUF9GaWxsU3Ryb2tlUGF0aCwNCisgICAgUERGT1BfQ2xvc2VFT0ZpbGxTdHJva2VQYXRoLCBQREZPUF9FT0ZpbGxTdHJva2VQYXRoLA0KKyAgICBQREZPUF9CZWdpbk1hcmtlZENvbnRlbnRfRGljdGlvbmFyeSwgUERGT1BfQmVnaW5JbWFnZSwNCisgICAgUERGT1BfQmVnaW5NYXJrZWRDb250ZW50LCBQREZPUF9CZWdpblRleHQsDQorICAgIFBERk9QX0JlZ2luU2VjdGlvblVuZGVmaW5lZCwgUERGT1BfQ3VydmVUb18xMjMsDQorICAgIFBERk9QX0NvbmNhdE1hdHJpeCwgUERGT1BfU2V0Q29sb3JTcGFjZV9GaWxsLA0KKyAgICBQREZPUF9TZXRDb2xvclNwYWNlX1N0cm9rZSwgUERGT1BfU2V0RGFzaCwNCisgICAgUERGT1BfU2V0Q2hhcldpZHRoLCBQREZPUF9TZXRDYWNoZWREZXZpY2UsDQorICAgIFBERk9QX0V4ZWN1dGVYT2JqZWN0LCBQREZPUF9NYXJrUGxhY2VfRGljdGlvbmFyeSwNCisgICAgUERGT1BfRW5kSW1hZ2UsIFBERk9QX0VuZE1hcmtlZENvbnRlbnQsDQorICAgIFBERk9QX0VuZFRleHQsIFBERk9QX0VuZFNlY3Rpb25VbmRlZmluZWQsDQorICAgIFBERk9QX0ZpbGxQYXRoLCBQREZPUF9GaWxsUGF0aE9sZCwNCisgICAgUERGT1BfRU9GaWxsUGF0aCwgUERGT1BfU2V0R3JheV9GaWxsLA0KKyAgICBQREZPUF9TZXRHcmF5X1N0cm9rZSwgUERGT1BfU2V0RXh0ZW5kR3JhcGhTdGF0ZSwNCisgICAgUERGT1BfQ2xvc2VQYXRoLCBQREZPUF9TZXRGbGF0LA0KKyAgICBQREZPUF9CZWdpbkltYWdlRGF0YSwgUERGT1BfU2V0TGluZUpvaW4sDQorICAgIFBERk9QX1NldExpbmVDYXAsIFBERk9QX1NldENNWUtDb2xvcl9GaWxsLA0KKyAgICBQREZPUF9TZXRDTVlLQ29sb3JfU3Ryb2tlLCBQREZPUF9MaW5lVG8sDQorICAgIFBERk9QX01vdmVUbywgUERGT1BfU2V0TWl0ZXJMaW1pdCwNCisgICAgUERGT1BfTWFya1BsYWNlLCBQREZPUF9FbmRQYXRoLA0KKyAgICBQREZPUF9TYXZlR3JhcGhTdGF0ZSwgUERGT1BfUmVzdG9yZUdyYXBoU3RhdGUsDQorICAgIFBERk9QX1JlY3RhbmdsZSwgUERGT1BfU2V0UkdCQ29sb3JfRmlsbCwNCisgICAgUERGT1BfU2V0UkdCQ29sb3JfU3Ryb2tlLCBQREZPUF9TZXRSZW5kZXJJbnRlbnQsDQorICAgIFBERk9QX0Nsb3NlU3Ryb2tlUGF0aCwgUERGT1BfU3Ryb2tlUGF0aCwNCisgICAgUERGT1BfU2V0Q29sb3JfRmlsbCwgUERGT1BfU2V0Q29sb3JfU3Ryb2tlLA0KKyAgICBQREZPUF9TZXRDb2xvclBTX0ZpbGwsIFBERk9QX1NldENvbG9yUFNfU3Ryb2tlLA0KKyAgICBQREZPUF9TaGFkZUZpbGwsIFBERk9QX1NldENoYXJTcGFjZSwNCisgICAgUERGT1BfTW92ZVRleHRQb2ludCwgUERGT1BfTW92ZVRleHRQb2ludF9TZXRMZWFkaW5nLA0KKyAgICBQREZPUF9TZXRGb250LCBQREZPUF9TaG93VGV4dCwNCisgICAgUERGT1BfU2hvd1RleHRfUG9zaXRpb25pbmcsIFBERk9QX1NldFRleHRMZWFkaW5nLA0KKyAgICBQREZPUF9TZXRUZXh0TWF0cml4LCBQREZPUF9TZXRUZXh0UmVuZGVyTW9kZSwNCisgICAgUERGT1BfU2V0VGV4dFJpc2UsIFBERk9QX1NldFdvcmRTcGFjZSwNCisgICAgUERGT1BfU2V0SG9yelNjYWxlLCBQREZPUF9Nb3ZlVG9OZXh0TGluZSwNCisgICAgUERGT1BfQ3VydmVUb18yMywgUERGT1BfU2V0TGluZVdpZHRoLA0KKyAgICBQREZPUF9DbGlwLCBQREZPUF9FT0NsaXAsDQorICAgIFBERk9QX0N1cnZlVG9fMTMsIFBERk9QX05leHRMaW5lU2hvd1RleHQsDQorICAgIFBERk9QX05leHRMaW5lU2hvd1RleHRfU3BhY2UsIFBERk9QX0ludmFsaWQNCit9IFBERk9QOw0KKyNkZWZpbmUgUEFSQU1fQlVGX1NJWkUJMTYNCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIGludAkJCW1fVHlwZTsNCisgICAgdW5pb24gew0KKyAgICAgICAgc3RydWN0IHsNCisgICAgICAgICAgICBGWF9CT09MCQltX2JJbnRlZ2VyOw0KKyAgICAgICAgICAgIHVuaW9uIHsNCisgICAgICAgICAgICAgICAgaW50CQltX0ludGVnZXI7DQorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIG1fRmxvYXQ7DQorICAgICAgICAgICAgfTsNCisgICAgICAgIH0gbV9OdW1iZXI7DQorICAgICAgICBDUERGX09iamVjdCoJbV9wT2JqZWN0Ow0KKyAgICAgICAgc3RydWN0IHsNCisgICAgICAgICAgICBpbnQJCQltX0xlbjsNCisgICAgICAgICAgICBjaGFyCQltX0J1ZmZlclszMl07DQorICAgICAgICB9IG1fTmFtZTsNCisgICAgfTsNCit9IF9Db250ZW50UGFyYW07DQorI2lmIGRlZmluZWQoX0ZQREZBUElfTUlOSV8pDQorI2RlZmluZSBfRlBERl9NQVhfRk9STV9MRVZFTF8JCTE3DQorI2Vsc2UNCisjZGVmaW5lIF9GUERGX01BWF9GT1JNX0xFVkVMXwkJMzANCisjZW5kaWYNCisjZGVmaW5lIF9GUERGX01BWF9UWVBFM19GT1JNX0xFVkVMXwk0DQorI2RlZmluZSBfRlBERl9NQVhfT0JKRUNUX1NUQUNLX1NJWkVfIDUxMg0KK2NsYXNzIENQREZfU3RyZWFtQ29udGVudFBhcnNlciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyKCk7DQorICAgIH5DUERGX1N0cmVhbUNvbnRlbnRQYXJzZXIoKTsNCisgICAgRlhfQk9PTCBJbml0aWFsaXplKCk7DQorICAgIHZvaWQJUHJlcGFyZVBhcnNlKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfRGljdGlvbmFyeSogcFBhZ2VSZXNvdXJjZXMsIENQREZfRGljdGlvbmFyeSogcFBhcmVudFJlc291cmNlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCogcG10Q29udGVudFRvVXNlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9QYWdlT2JqZWN0cyogcE9iakxpc3QsIENQREZfRGljdGlvbmFyeSogcFJlc291cmNlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0Zsb2F0UmVjdCogcEJCb3gsIENQREZfUGFyc2VPcHRpb25zKiBwT3B0aW9ucywNCisgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9BbGxTdGF0ZXMqIHBBbGxTdGF0ZXMsIGludCBsZXZlbCk7DQorICAgIENQREZfRG9jdW1lbnQqCQltX3BEb2N1bWVudDsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgltX3BQYWdlUmVzb3VyY2VzOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCW1fcFBhcmVudFJlc291cmNlczsNCisgICAgQ1BERl9QYWdlT2JqZWN0cyoJbV9wT2JqZWN0TGlzdDsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgltX3BSZXNvdXJjZXM7DQorICAgIGludAkJCQkJbV9MZXZlbDsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeAltX210Q29udGVudFRvVXNlcjsNCisgICAgQ0ZYX0Zsb2F0UmVjdAkJbV9CQm94Ow0KKyAgICBDUERGX1BhcnNlT3B0aW9ucwltX09wdGlvbnM7DQorICAgIF9Db250ZW50UGFyYW0JCW1fUGFyYW1CdWYxW1BBUkFNX0JVRl9TSVpFXTsNCisgICAgRlhfRFdPUkQJCQltX1BhcmFtU3RhcnRQb3M7DQorICAgIEZYX0RXT1JECQkJbV9QYXJhbUNvdW50Ow0KKyAgICB2b2lkCQkJCUFkZE51bWJlclBhcmFtKEZYX0xQQ1NUUiBzdHIsIGludCBsZW4pOw0KKyAgICB2b2lkCQkJCUFkZE9iamVjdFBhcmFtKENQREZfT2JqZWN0KiBwT2JqKTsNCisgICAgdm9pZAkJCQlBZGROYW1lUGFyYW0oRlhfTFBDU1RSIG5hbWUsIGludCBzaXplKTsNCisgICAgaW50CQkJCQlHZXROZXh0UGFyYW1Qb3MoKTsNCisgICAgdm9pZAkJCQlDbGVhckFsbFBhcmFtcygpOw0KKyAgICBDUERGX09iamVjdCoJCUdldE9iamVjdChGWF9EV09SRCBpbmRleCk7DQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXRTdHJpbmcoRlhfRFdPUkQgaW5kZXgpOw0KKyAgICBGWF9GTE9BVAkJCUdldE51bWJlcihGWF9EV09SRCBpbmRleCk7DQorICAgIEZYX0ZMT0FUCQlHZXROdW1iZXIxNihGWF9EV09SRCBpbmRleCk7DQorICAgIGludAkJCQkJR2V0SW50ZWdlcihGWF9EV09SRCBpbmRleCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChGWF9JTlQzMikoR2V0TnVtYmVyKGluZGV4KSk7DQorICAgIH0NCisgICAgRlhfQk9PTAkJCQlPbk9wZXJhdG9yKEZYX0xQQ1NUUiBvcCk7DQorICAgIHZvaWQJCQkJQmlnQ2FzZUNhbGxlcihpbnQgaW5kZXgpOw0KKyAgICBGWF9CT09MCQkJCW1fYkFib3J0Ow0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgQ1BERl9TdHJlYW1QYXJzZXIqCW1fcFN5bnRheDsNCisgICAgRlhfRFdPUkQJCQlHZXRQYXJzZVBvcygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BTeW50YXgtPkdldFBvcygpOw0KKyAgICB9DQorI2Vsc2UNCisgICAgaW50CQkJCQltX1dvcmRTdGF0ZTsNCisgICAgdm9pZAkJCQlJbnB1dERhdGEoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSk7DQorICAgIHZvaWQJCQkJRmluaXNoKCk7DQorICAgIHZvaWQJCQkJU3RhcnRBcnJheSgpOw0KKyAgICB2b2lkCQkJCUVuZEFycmF5KCk7DQorICAgIHZvaWQJCQkJU3RhcnREaWN0KCk7DQorICAgIHZvaWQJCQkJRW5kRGljdCgpOw0KKyAgICB2b2lkCQkJCUVuZE5hbWUoKTsNCisgICAgdm9pZAkJCQlFbmROdW1iZXIoKTsNCisgICAgdm9pZAkJCQlFbmRLZXl3b3JkKCk7DQorICAgIHZvaWQJCQkJRW5kSGV4U3RyaW5nKCk7DQorICAgIHZvaWQJCQkJRW5kU3RyaW5nKCk7DQorICAgIHZvaWQJCQkJRW5kSW1hZ2VEaWN0KCk7DQorICAgIHZvaWQJCQkJRW5kSW5saW5lSW1hZ2UoKTsNCisgICAgRlhfTFBCWVRFCQkJbV9wV29yZEJ1ZjsNCisgICAgRlhfRFdPUkQJCQltX1dvcmRTaXplOw0KKyAgICBDRlhfQmluYXJ5QnVmCQltX1N0cmluZ0J1ZjsNCisgICAgaW50CQkJCQltX1N0cmluZ0xldmVsLCBtX1N0cmluZ1N0YXRlLCBtX0VzY0NvZGU7DQorICAgIHZvaWQJCQkJQWRkQ29udGFpbmVyKENQREZfT2JqZWN0KiBwT2JqZWN0KTsNCisgICAgRlhfQk9PTAkJCQlTZXRUb0N1ck9iaihDUERGX09iamVjdCogcE9iamVjdCk7DQorICAgIEZYX0xQQllURQkJCW1fcERpY3ROYW1lOw0KKyAgICBGWF9CT09MCQkJCW1fYkRpY3ROYW1lOw0KKyAgICBDUERGX09iamVjdCoqCQltX3BPYmplY3RTdGFjazsNCisgICAgRlhfQk9PTCoJCQltX3BPYmplY3RTdGF0ZTsNCisgICAgRlhfRFdPUkQJCQltX09iamVjdFNpemU7DQorICAgIGludAkJCQkJbV9JbmxpbmVJbWFnZVN0YXRlOw0KKyAgICBGWF9CWVRFCQkJCW1fSW5saW5lV2hpdGVDaGFyOw0KKyAgICBDRlhfQmluYXJ5QnVmCQltX0ltYWdlU3JjQnVmOw0KKyAgICBGWF9MUEJZVEUJCQltX3BTdHJlYW1CdWY7DQorI2VuZGlmDQorICAgIENQREZfQWxsU3RhdGVzKgkJbV9wQ3VyU3RhdGVzOw0KKyAgICBDUERGX0NvbnRlbnRNYXJrCW1fQ3VyQ29udGVudE1hcms7DQorICAgIENGWF9QdHJBcnJheQkJbV9DbGlwVGV4dExpc3Q7DQorICAgIENQREZfVGV4dE9iamVjdCoJbV9wTGFzdFRleHRPYmplY3Q7DQorICAgIEZYX0ZMT0FUCQkJbV9EZWZGb250U2l6ZTsNCisgICAgdm9pZAkJCQlBZGRUZXh0T2JqZWN0KENGWF9CeXRlU3RyaW5nKiBwVGV4dCwgRlhfRkxPQVQgZkluaXRLZXJuaW5nLCBGWF9GTE9BVCogcEtlcm5pbmcsIGludCBjb3VudCk7DQorDQorICAgIHZvaWQJCQkJQ29udmVydFVzZXJTcGFjZShGWF9GTE9BVCYgeCwgRlhfRkxPQVQmIHkpOw0KKyAgICB2b2lkCQkJCUNvbnZlcnRUZXh0U3BhY2UoRlhfRkxPQVQmIHgsIEZYX0ZMT0FUJiB5KTsNCisgICAgdm9pZAkJCQlPbkNoYW5nZVRleHRNYXRyaXgoKTsNCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgIEZYX0RXT1JECQkJUGFyc2UoRlhfTFBDQllURSBwRGF0YSwgRlhfRFdPUkQgZHdTaXplLCBGWF9EV09SRCBtYXhfY29zdCk7DQorICAgIHZvaWQJCQkJUGFyc2VQYXRoT2JqZWN0KCk7DQorI2VuZGlmDQorICAgIGludAkJCQkJbV9Db21wYXRDb3VudDsNCisgICAgRlhfUEFUSFBPSU5UKgkJbV9wUGF0aFBvaW50czsNCisgICAgaW50CQkJCQltX1BhdGhQb2ludENvdW50Ow0KKyAgICBpbnQJCQkJCW1fUGF0aEFsbG9jU2l6ZTsNCisgICAgRlhfRkxPQVQJCQltX1BhdGhTdGFydFgsIG1fUGF0aFN0YXJ0WTsNCisgICAgRlhfRkxPQVQJCQltX1BhdGhDdXJyZW50WCwgbV9QYXRoQ3VycmVudFk7DQorICAgIGludAkJCQkJbV9QYXRoQ2xpcFR5cGU7DQorICAgIHZvaWQJCQkJQWRkUGF0aFBvaW50KEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHksIGludCBmbGFnKTsNCisgICAgdm9pZAkJCQlBZGRQYXRoUmVjdChGWF9GTE9BVCB4LCBGWF9GTE9BVCB5LCBGWF9GTE9BVCB3LCBGWF9GTE9BVCBoKTsNCisgICAgdm9pZAkJCQlBZGRQYXRoT2JqZWN0KGludCBGaWxsVHlwZSwgRlhfQk9PTCBiU3Ryb2tlKTsNCisgICAgQ1BERl9JbWFnZU9iamVjdCoJQWRkSW1hZ2UoQ1BERl9TdHJlYW0qIHBTdHJlYW0sIENQREZfSW1hZ2UqIHBJbWFnZSwgRlhfQk9PTCBiSW5saW5lKTsNCisgICAgdm9pZAkJCQlBZGREdXBsaWNhdGVJbWFnZSgpOw0KKyAgICB2b2lkCQkJCUFkZEZvcm0oQ1BERl9TdHJlYW0qKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCW1fTGFzdEltYWdlTmFtZTsNCisgICAgQ1BERl9JbWFnZSoJCQltX3BMYXN0SW1hZ2U7DQorICAgIENGWF9CaW5hcnlCdWYJCW1fTGFzdEltYWdlRGljdCwgbV9MYXN0SW1hZ2VEYXRhOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqCW1fcExhc3RJbWFnZURpY3Q7DQorICAgIENQREZfRGljdGlvbmFyeSogICAgbV9wTGFzdENsb25lSW1hZ2VEaWN0Ow0KKyAgICBGWF9CT09MCQkJCW1fYlJlbGVhc2VMYXN0RGljdDsNCisgICAgRlhfQk9PTAkJCQltX2JTYW1lTGFzdERpY3Q7DQorICAgIHZvaWQJCQkJU2V0R3JhcGhpY1N0YXRlcyhDUERGX1BhZ2VPYmplY3QqIHBPYmosIEZYX0JPT0wgYkNvbG9yLCBGWF9CT09MIGJUZXh0LCBGWF9CT09MIGJHcmFwaCk7DQorICAgIEZYX0JPT0wJCQkJbV9iQ29sb3JlZDsNCisgICAgRlhfRkxPQVQJCQltX1R5cGUzRGF0YVs2XTsNCisgICAgRlhfQk9PTAkJCQltX2JSZXNvdXJjZU1pc3Npbmc7DQorICAgIENGWF9QdHJBcnJheQkJbV9TdGF0ZVN0YWNrOw0KKyAgICB2b2lkCQkJCVNhdmVTdGF0ZXMoQ1BERl9BbGxTdGF0ZXMqKTsNCisgICAgdm9pZAkJCQlSZXN0b3JlU3RhdGVzKENQREZfQWxsU3RhdGVzKik7DQorICAgIENQREZfRm9udCoJCQlGaW5kRm9udChjb25zdCBDRlhfQnl0ZVN0cmluZyYgbmFtZSk7DQorICAgIENQREZfQ29sb3JTcGFjZSoJRmluZENvbG9yU3BhY2UoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpOw0KKyAgICBDUERGX1BhdHRlcm4qCQlGaW5kUGF0dGVybihjb25zdCBDRlhfQnl0ZVN0cmluZyYgbmFtZSwgRlhfQk9PTCBiU2hhZGluZyk7DQorICAgIENQREZfT2JqZWN0KgkJRmluZFJlc291cmNlT2JqKEZYX0JTVFIgdHlwZSwgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpOw0KKyAgICB2b2lkIEhhbmRsZV9DbG9zZUZpbGxTdHJva2VQYXRoKCk7DQorICAgIHZvaWQgSGFuZGxlX0ZpbGxTdHJva2VQYXRoKCk7DQorICAgIHZvaWQgSGFuZGxlX0Nsb3NlRU9GaWxsU3Ryb2tlUGF0aCgpOw0KKyAgICB2b2lkIEhhbmRsZV9FT0ZpbGxTdHJva2VQYXRoKCk7DQorICAgIHZvaWQgSGFuZGxlX0JlZ2luTWFya2VkQ29udGVudF9EaWN0aW9uYXJ5KCk7DQorICAgIHZvaWQgSGFuZGxlX0JlZ2luSW1hZ2UoKTsNCisgICAgdm9pZCBIYW5kbGVfQmVnaW5NYXJrZWRDb250ZW50KCk7DQorICAgIHZvaWQgSGFuZGxlX0JlZ2luVGV4dCgpOw0KKyAgICB2b2lkIEhhbmRsZV9CZWdpblNlY3Rpb25VbmRlZmluZWQoKTsNCisgICAgdm9pZCBIYW5kbGVfQ3VydmVUb18xMjMoKTsNCisgICAgdm9pZCBIYW5kbGVfQ29uY2F0TWF0cml4KCk7DQorICAgIHZvaWQgSGFuZGxlX1NldENvbG9yU3BhY2VfRmlsbCgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRDb2xvclNwYWNlX1N0cm9rZSgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXREYXNoKCk7DQorICAgIHZvaWQgSGFuZGxlX1NldENoYXJXaWR0aCgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRDYWNoZWREZXZpY2UoKTsNCisgICAgdm9pZCBIYW5kbGVfRXhlY3V0ZVhPYmplY3QoKTsNCisgICAgdm9pZCBIYW5kbGVfTWFya1BsYWNlX0RpY3Rpb25hcnkoKTsNCisgICAgdm9pZCBIYW5kbGVfRW5kSW1hZ2UoKTsNCisgICAgdm9pZCBIYW5kbGVfRW5kTWFya2VkQ29udGVudCgpOw0KKyAgICB2b2lkIEhhbmRsZV9FbmRUZXh0KCk7DQorICAgIHZvaWQgSGFuZGxlX0VuZFNlY3Rpb25VbmRlZmluZWQoKTsNCisgICAgdm9pZCBIYW5kbGVfRmlsbFBhdGgoKTsNCisgICAgdm9pZCBIYW5kbGVfRmlsbFBhdGhPbGQoKTsNCisgICAgdm9pZCBIYW5kbGVfRU9GaWxsUGF0aCgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRHcmF5X0ZpbGwoKTsNCisgICAgdm9pZCBIYW5kbGVfU2V0R3JheV9TdHJva2UoKTsNCisgICAgdm9pZCBIYW5kbGVfU2V0RXh0ZW5kR3JhcGhTdGF0ZSgpOw0KKyAgICB2b2lkIEhhbmRsZV9DbG9zZVBhdGgoKTsNCisgICAgdm9pZCBIYW5kbGVfU2V0RmxhdCgpOw0KKyAgICB2b2lkIEhhbmRsZV9CZWdpbkltYWdlRGF0YSgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRMaW5lSm9pbigpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRMaW5lQ2FwKCk7DQorICAgIHZvaWQgSGFuZGxlX1NldENNWUtDb2xvcl9GaWxsKCk7DQorICAgIHZvaWQgSGFuZGxlX1NldENNWUtDb2xvcl9TdHJva2UoKTsNCisgICAgdm9pZCBIYW5kbGVfTGluZVRvKCk7DQorICAgIHZvaWQgSGFuZGxlX01vdmVUbygpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRNaXRlckxpbWl0KCk7DQorICAgIHZvaWQgSGFuZGxlX01hcmtQbGFjZSgpOw0KKyAgICB2b2lkIEhhbmRsZV9FbmRQYXRoKCk7DQorICAgIHZvaWQgSGFuZGxlX1NhdmVHcmFwaFN0YXRlKCk7DQorICAgIHZvaWQgSGFuZGxlX1Jlc3RvcmVHcmFwaFN0YXRlKCk7DQorICAgIHZvaWQgSGFuZGxlX1JlY3RhbmdsZSgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRSR0JDb2xvcl9GaWxsKCk7DQorICAgIHZvaWQgSGFuZGxlX1NldFJHQkNvbG9yX1N0cm9rZSgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRSZW5kZXJJbnRlbnQoKTsNCisgICAgdm9pZCBIYW5kbGVfQ2xvc2VTdHJva2VQYXRoKCk7DQorICAgIHZvaWQgSGFuZGxlX1N0cm9rZVBhdGgoKTsNCisgICAgdm9pZCBIYW5kbGVfU2V0Q29sb3JfRmlsbCgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRDb2xvcl9TdHJva2UoKTsNCisgICAgdm9pZCBIYW5kbGVfU2V0Q29sb3JQU19GaWxsKCk7DQorICAgIHZvaWQgSGFuZGxlX1NldENvbG9yUFNfU3Ryb2tlKCk7DQorICAgIHZvaWQgSGFuZGxlX1NoYWRlRmlsbCgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRDaGFyU3BhY2UoKTsNCisgICAgdm9pZCBIYW5kbGVfTW92ZVRleHRQb2ludCgpOw0KKyAgICB2b2lkIEhhbmRsZV9Nb3ZlVGV4dFBvaW50X1NldExlYWRpbmcoKTsNCisgICAgdm9pZCBIYW5kbGVfU2V0Rm9udCgpOw0KKyAgICB2b2lkIEhhbmRsZV9TaG93VGV4dCgpOw0KKyAgICB2b2lkIEhhbmRsZV9TaG93VGV4dF9Qb3NpdGlvbmluZygpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRUZXh0TGVhZGluZygpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRUZXh0TWF0cml4KCk7DQorICAgIHZvaWQgSGFuZGxlX1NldFRleHRSZW5kZXJNb2RlKCk7DQorICAgIHZvaWQgSGFuZGxlX1NldFRleHRSaXNlKCk7DQorICAgIHZvaWQgSGFuZGxlX1NldFdvcmRTcGFjZSgpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRIb3J6U2NhbGUoKTsNCisgICAgdm9pZCBIYW5kbGVfTW92ZVRvTmV4dExpbmUoKTsNCisgICAgdm9pZCBIYW5kbGVfQ3VydmVUb18yMygpOw0KKyAgICB2b2lkIEhhbmRsZV9TZXRMaW5lV2lkdGgoKTsNCisgICAgdm9pZCBIYW5kbGVfQ2xpcCgpOw0KKyAgICB2b2lkIEhhbmRsZV9FT0NsaXAoKTsNCisgICAgdm9pZCBIYW5kbGVfQ3VydmVUb18xMygpOw0KKyAgICB2b2lkIEhhbmRsZV9OZXh0TGluZVNob3dUZXh0KCk7DQorICAgIHZvaWQgSGFuZGxlX05leHRMaW5lU2hvd1RleHRfU3BhY2UoKTsNCisgICAgdm9pZCBIYW5kbGVfSW52YWxpZCgpOw0KK307DQorY2xhc3MgQ1BERl9Db250ZW50UGFyc2VyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX0NvbnRlbnRQYXJzZXIoKTsNCisgICAgfkNQREZfQ29udGVudFBhcnNlcigpOw0KKyAgICB0eXBlZGVmIGVudW0geyBSZWFkeSwgVG9CZUNvbnRpbnVlZCwgRG9uZSB9IFBhcnNlU3RhdHVzOw0KKyAgICBQYXJzZVN0YXR1cwkJCUdldFN0YXR1cygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1N0YXR1czsNCisgICAgfQ0KKyAgICB2b2lkCQkJCVN0YXJ0KENQREZfUGFnZSogcFBhZ2UsIENQREZfUGFyc2VPcHRpb25zKiBwT3B0aW9ucyk7DQorICAgIHZvaWQJCQkJU3RhcnQoQ1BERl9Gb3JtKiBwRm9ybSwgQ1BERl9BbGxTdGF0ZXMqIHBHcmFwaGljU3RhdGVzLCBDRlhfQWZmaW5lTWF0cml4KiBwUGFyZW50TWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfVHlwZTNDaGFyKiBwVHlwZTNDaGFyLCBDUERGX1BhcnNlT3B0aW9ucyogcE9wdGlvbnMsIGludCBsZXZlbCk7DQorICAgIHZvaWQJCQkJQ29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBpbnQJCQkJCUVzdGltYXRlUHJvZ3Jlc3MoKTsNCitwcm90ZWN0ZWQ6DQorICAgIHZvaWQJCQkJQ2xlYXIoKTsNCisgICAgUGFyc2VTdGF0dXMJCQltX1N0YXR1czsNCisgICAgQ1BERl9QYWdlT2JqZWN0cyoJbV9wT2JqZWN0czsNCisgICAgRlhfQk9PTAkJCQltX2JGb3JtOw0KKyAgICBDUERGX1BhcnNlT3B0aW9ucwltX09wdGlvbnM7DQorICAgIENQREZfVHlwZTNDaGFyKgkJbV9wVHlwZTNDaGFyOw0KKyAgICBpbnQJCQkJCW1fSW50ZXJuYWxTdGFnZTsNCisgICAgQ1BERl9TdHJlYW1BY2MqCQltX3BTaW5nbGVTdHJlYW07DQorICAgIENQREZfU3RyZWFtQWNjKioJbV9wU3RyZWFtQXJyYXk7DQorICAgIEZYX0RXT1JECQkJbV9uU3RyZWFtczsNCisgICAgRlhfTFBCWVRFCQkJbV9wRGF0YTsNCisgICAgRlhfRFdPUkQJCQltX1NpemU7DQorICAgIGNsYXNzIENQREZfU3RyZWFtQ29udGVudFBhcnNlcioJbV9wUGFyc2VyOw0KKyAgICBGWF9EV09SRAkJCW1fQ3VycmVudE9mZnNldDsNCisgICAgQ1BERl9TdHJlYW1GaWx0ZXIqCW1fcFN0cmVhbUZpbHRlcjsNCit9Ow0KK2NsYXNzIENQREZfQWxsU3RhdGVzIDogcHVibGljIENQREZfR3JhcGhpY1N0YXRlcw0KK3sNCitwdWJsaWM6DQorICAgIENQREZfQWxsU3RhdGVzKCk7DQorICAgIH5DUERGX0FsbFN0YXRlcygpOw0KKyAgICB2b2lkCUNvcHkoY29uc3QgQ1BERl9BbGxTdGF0ZXMmIHNyYyk7DQorICAgIHZvaWQJUHJvY2Vzc0V4dEdTKENQREZfRGljdGlvbmFyeSogcEdTLCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXIqIHBQYXJzZXIpOw0KKyAgICB2b2lkCVNldExpbmVEYXNoKENQREZfQXJyYXkqLCBGWF9GTE9BVCwgRlhfRkxPQVQgc2NhbGUpOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4CQltX1RleHRNYXRyaXgsIG1fQ1RNLCBtX1BhcmVudE1hdHJpeDsNCisgICAgRlhfRkxPQVQJCQkJbV9UZXh0WCwgbV9UZXh0WSwgbV9UZXh0TGluZVgsIG1fVGV4dExpbmVZOw0KKyAgICBGWF9GTE9BVAkJCQltX1RleHRMZWFkaW5nLCBtX1RleHRSaXNlLCBtX1RleHRIb3J6U2NhbGU7DQorfTsNCit0ZW1wbGF0ZSA8Y2xhc3MgT2JqQ2xhc3M+IGNsYXNzIENQREZfQ291bnRlZE9iamVjdCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgT2JqQ2xhc3MJbV9PYmo7DQorICAgIEZYX0RXT1JECW1fbkNvdW50Ow0KK307DQordHlwZWRlZiBDRlhfTWFwUHRyVGVtcGxhdGU8Q1BERl9EaWN0aW9uYXJ5KiwgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfRm9udCo+Kj4JCUNQREZfRm9udE1hcDsNCit0eXBlZGVmIENGWF9NYXBQdHJUZW1wbGF0ZTxDUERGX09iamVjdCosIENQREZfQ291bnRlZE9iamVjdDxDUERGX0NvbG9yU3BhY2UqPio+CQlDUERGX0NvbG9yU3BhY2VNYXA7DQordHlwZWRlZiBDRlhfTWFwUHRyVGVtcGxhdGU8Q1BERl9PYmplY3QqLCBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9QYXR0ZXJuKj4qPgkJQ1BERl9QYXR0ZXJuTWFwOw0KK3R5cGVkZWYgQ0ZYX01hcFB0clRlbXBsYXRlPEZYX0RXT1JELCBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9JbWFnZSo+Kj4JCQkJQ1BERl9JbWFnZU1hcDsNCit0eXBlZGVmIENGWF9NYXBQdHJUZW1wbGF0ZTxDUERGX1N0cmVhbSosIENQREZfQ291bnRlZE9iamVjdDxDUERGX0ljY1Byb2ZpbGUqPio+CQlDUERGX0ljY1Byb2ZpbGVNYXA7DQordHlwZWRlZiBDRlhfTWFwUHRyVGVtcGxhdGU8Q1BERl9TdHJlYW0qLCBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9TdHJlYW1BY2MqPio+CQlDUERGX0ZvbnRGaWxlTWFwOw0KK3RlbXBsYXRlIDxjbGFzcyBLZXlUeXBlLCBjbGFzcyBWYWx1ZVR5cGU+DQorS2V5VHlwZSBQREZfRG9jUGFnZURhdGFfRmluZFZhbHVlKGNvbnN0IENGWF9NYXBQdHJUZW1wbGF0ZTxLZXlUeXBlLCBDUERGX0NvdW50ZWRPYmplY3Q8VmFsdWVUeXBlPio+ICZtYXAsIFZhbHVlVHlwZSBmaW5kVmFsdWUsIENQREZfQ291bnRlZE9iamVjdDxWYWx1ZVR5cGU+KiYgZmluZERhdGEpDQorew0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBLZXlUeXBlIGZpbmRLZXk7DQorICAgICAgICBtYXAuR2V0TmV4dEFzc29jKHBvcywgZmluZEtleSwgZmluZERhdGEpOw0KKyAgICAgICAgaWYgKGZpbmREYXRhLT5tX09iaiA9PSBmaW5kVmFsdWUpIHsNCisgICAgICAgICAgICByZXR1cm4gZmluZEtleTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBmaW5kRGF0YSA9IE5VTEw7DQorICAgIHJldHVybiAoS2V5VHlwZSkoRlhfVUlOVFBUUilOVUxMOw0KK30NCit0ZW1wbGF0ZSA8Y2xhc3MgS2V5VHlwZSwgY2xhc3MgVmFsdWVUeXBlPg0KK0ZYX0JPT0wgUERGX0RvY1BhZ2VEYXRhX1JlbGVhc2UoQ0ZYX01hcFB0clRlbXBsYXRlPEtleVR5cGUsIENQREZfQ291bnRlZE9iamVjdDxWYWx1ZVR5cGU+Kj4gJm1hcCwgS2V5VHlwZSBmaW5kS2V5LCBWYWx1ZVR5cGUgZmluZFZhbHVlLCBGWF9CT09MIGJGb3JjZSA9IEZBTFNFKQ0KK3sNCisgICAgaWYgKCFmaW5kS2V5ICYmICFmaW5kVmFsdWUpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX0NvdW50ZWRPYmplY3Q8VmFsdWVUeXBlPiogZmluZERhdGEgPSBOVUxMOw0KKyAgICBpZiAoIWZpbmRLZXkpIHsNCisgICAgICAgIGZpbmRLZXkgPSBQREZfRG9jUGFnZURhdGFfRmluZFZhbHVlPEtleVR5cGUsIFZhbHVlVHlwZT4obWFwLCBmaW5kVmFsdWUsIGZpbmREYXRhKTsNCisgICAgfSBlbHNlIGlmICghbWFwLkxvb2t1cChmaW5kS2V5LCBmaW5kRGF0YSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoZmluZERhdGEgJiYgKCgtLSBmaW5kRGF0YS0+bV9uQ291bnQpID09IDAgfHwgYkZvcmNlKSkgew0KKyAgICAgICAgZGVsZXRlIGZpbmREYXRhLT5tX09iajsNCisgICAgICAgIGRlbGV0ZSBmaW5kRGF0YTsNCisgICAgICAgIG1hcC5SZW1vdmVLZXkoZmluZEtleSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK2NsYXNzIENQREZfRG9jUGFnZURhdGEgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfRG9jUGFnZURhdGEoQ1BERl9Eb2N1bWVudCAqcFBERkRvYyk7DQorICAgIH5DUERGX0RvY1BhZ2VEYXRhKCk7DQorICAgIHZvaWQJCQkJCUNsZWFyKEZYX0JPT0wgYlJlbGVhc2UgPSBGQUxTRSk7DQorICAgIENQREZfRm9udCoJCQkJR2V0Rm9udChDUERGX0RpY3Rpb25hcnkqIHBGb250RGljdCwgRlhfQk9PTCBmaW5kT25seSk7DQorICAgIENQREZfRm9udCoJCQkJR2V0U3RhbmRhcmRGb250KEZYX0JTVFIgZm9udE5hbWUsIENQREZfRm9udEVuY29kaW5nKiBwRW5jb2RpbmcpOw0KKyAgICB2b2lkCQkJCQlSZWxlYXNlRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb250RGljdCk7DQorICAgIENQREZfQ29sb3JTcGFjZSoJCUdldENvbG9yU3BhY2UoQ1BERl9PYmplY3QqIHBDU09iaiwgQ1BERl9EaWN0aW9uYXJ5KiBwUmVzb3VyY2VzKTsNCisgICAgQ1BERl9Db2xvclNwYWNlKgkJR2V0Q29waWVkQ29sb3JTcGFjZShDUERGX09iamVjdCogcENTT2JqKTsNCisgICAgdm9pZAkJCQkJUmVsZWFzZUNvbG9yU3BhY2UoQ1BERl9PYmplY3QqIHBDb2xvclNwYWNlKTsNCisgICAgQ1BERl9QYXR0ZXJuKgkJCUdldFBhdHRlcm4oQ1BERl9PYmplY3QqIHBQYXR0ZXJuT2JqLCBGWF9CT09MIGJTaGFkaW5nLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBtYXRyaXgpOw0KKyAgICB2b2lkCQkJCQlSZWxlYXNlUGF0dGVybihDUERGX09iamVjdCogcFBhdHRlcm5PYmopOw0KKyAgICBDUERGX0ltYWdlKgkJCQlHZXRJbWFnZShDUERGX09iamVjdCogcEltYWdlU3RyZWFtKTsNCisgICAgdm9pZAkJCQkJUmVsZWFzZUltYWdlKENQREZfT2JqZWN0KiBwSW1hZ2VTdHJlYW0pOw0KKyAgICBDUERGX0ljY1Byb2ZpbGUqCQlHZXRJY2NQcm9maWxlKENQREZfU3RyZWFtKiBwSWNjUHJvZmlsZVN0cmVhbSwgRlhfSU5UMzIgbkNvbXBvbmVudHMpOw0KKyAgICB2b2lkCQkJCQlSZWxlYXNlSWNjUHJvZmlsZShDUERGX1N0cmVhbSogcEljY1Byb2ZpbGVTdHJlYW0sIENQREZfSWNjUHJvZmlsZSogcEljY1Byb2ZpbGUpOw0KKyAgICBDUERGX1N0cmVhbUFjYyoJCQlHZXRGb250RmlsZVN0cmVhbUFjYyhDUERGX1N0cmVhbSogcEZvbnRTdHJlYW0pOw0KKyAgICB2b2lkCQkJCQlSZWxlYXNlRm9udEZpbGVTdHJlYW1BY2MoQ1BERl9TdHJlYW0qIHBGb250U3RyZWFtLCBGWF9CT09MIGJGb3JjZSA9IEZBTFNFKTsNCisgICAgQ1BERl9Eb2N1bWVudCoJCQltX3BQREZEb2M7DQorICAgIENQREZfRm9udE1hcAkJCW1fRm9udE1hcDsNCisgICAgQ1BERl9Db2xvclNwYWNlTWFwCQltX0NvbG9yU3BhY2VNYXA7DQorICAgIENQREZfUGF0dGVybk1hcAkJCW1fUGF0dGVybk1hcDsNCisgICAgQ1BERl9JbWFnZU1hcAkJCW1fSW1hZ2VNYXA7DQorICAgIENQREZfSWNjUHJvZmlsZU1hcAkJbV9JY2NQcm9maWxlTWFwOw0KKyAgICBDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyCW1fSGFzaFByb2ZpbGVNYXA7DQorICAgIENQREZfRm9udEZpbGVNYXAJCW1fRm9udEZpbGVNYXA7DQorfTsNCitjbGFzcyBDUERGX0Z1bmN0aW9uIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBzdGF0aWMgQ1BERl9GdW5jdGlvbioJTG9hZChDUERGX09iamVjdCogcEZ1bmNPYmopOw0KKyAgICB2aXJ0dWFsIH5DUERGX0Z1bmN0aW9uKCk7DQorICAgIEZYX0JPT0wJCUNhbGwoRlhfRkxPQVQqIGlucHV0cywgaW50IG5pbnB1dHMsIEZYX0ZMT0FUKiByZXN1bHRzLCBpbnQmIG5yZXN1bHRzKSBjb25zdDsNCisgICAgaW50CQkJQ291bnRJbnB1dHMoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uSW5wdXRzOw0KKyAgICB9DQorICAgIGludAkJCUNvdW50T3V0cHV0cygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25PdXRwdXRzOw0KKyAgICB9DQorcHJvdGVjdGVkOg0KKyAgICBDUERGX0Z1bmN0aW9uKCk7DQorICAgIGludAkJCW1fbklucHV0cywgbV9uT3V0cHV0czsNCisgICAgRlhfRkxPQVQqCW1fcERvbWFpbnM7DQorICAgIEZYX0ZMT0FUKgltX3BSYW5nZXM7DQorICAgIEZYX0JPT0wJCUluaXQoQ1BERl9PYmplY3QqIHBPYmopOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJdl9Jbml0KENQREZfT2JqZWN0KiBwT2JqKSA9IDA7DQorICAgIHZpcnR1YWwgRlhfQk9PTAl2X0NhbGwoRlhfRkxPQVQqIGlucHV0cywgRlhfRkxPQVQqIHJlc3VsdHMpIGNvbnN0ID0gMDsNCit9Ow0KK2NsYXNzIENQREZfSWNjUHJvZmlsZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9JY2NQcm9maWxlKEZYX0xQQ0JZVEUgcERhdGEsIEZYX0RXT1JEIGR3U2l6ZSwgaW50IG5Db21wb25lbnRzKTsNCisgICAgfkNQREZfSWNjUHJvZmlsZSgpOw0KKyAgICBGWF9CT09MCQkJCQltX2JzUkdCOw0KKyAgICBGWF9MUFZPSUQJCQkJbV9wVHJhbnNmb3JtOw0KK307DQorY2xhc3MgQ1BERl9EZXZpY2VDUyA6IHB1YmxpYyBDUERGX0NvbG9yU3BhY2UNCit7DQorcHVibGljOg0KKyAgICBDUERGX0RldmljZUNTKGludCBmYW1pbHkpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJR2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdDsNCisgICAgRlhfQk9PTAlTZXRSR0IoRlhfRkxPQVQqIHBCdWYsIEZYX0ZMT0FUIFIsIEZYX0ZMT0FUIEcsIEZYX0ZMT0FUIEIpIGNvbnN0Ow0KKyAgICBGWF9CT09MCXZfR2V0Q01ZSyhGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQmIGMsIEZYX0ZMT0FUJiBtLCBGWF9GTE9BVCYgeSwgRlhfRkxPQVQmIGspIGNvbnN0Ow0KKyAgICBGWF9CT09MCXZfU2V0Q01ZSyhGWF9GTE9BVCogcEJ1ZiwgRlhfRkxPQVQgYywgRlhfRkxPQVQgbSwgRlhfRkxPQVQgeSwgRlhfRkxPQVQgaykgY29uc3Q7DQorICAgIHZpcnR1YWwgdm9pZAlUcmFuc2xhdGVJbWFnZUxpbmUoRlhfTFBCWVRFIHBEZXN0QnVmLCBGWF9MUENCWVRFIHBTcmNCdWYsIGludCBwaXhlbHMsIGludCBpbWFnZV93aWR0aCwgaW50IGltYWdlX2hlaWdodCwgRlhfQk9PTCBiVHJhbnNNYXNrID0gRkFMU0UpIGNvbnN0Ow0KK307DQorY2xhc3MgQ1BERl9QYXR0ZXJuQ1MgOiBwdWJsaWMgQ1BERl9Db2xvclNwYWNlDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9QYXR0ZXJuQ1MoKTsNCisgICAgfkNQREZfUGF0dGVybkNTKCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJdl9Mb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfQXJyYXkqIHBBcnJheSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJR2V0UkdCKEZYX0ZMT0FUKiBwQnVmLCBGWF9GTE9BVCYgUiwgRlhfRkxPQVQmIEcsIEZYX0ZMT0FUJiBCKSBjb25zdDsNCisgICAgdmlydHVhbCBDUERGX0NvbG9yU3BhY2UqCUdldEJhc2VDUygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BCYXNlQ1M7DQorICAgIH0NCisgICAgQ1BERl9Db2xvclNwYWNlKgltX3BCYXNlQ1M7DQorfTsNCisjZGVmaW5lCU1BWF9QQUdFX09CSkVDVFNfVU5JRllfTkFNSU5HCQkJCTQwOTYNCitjbGFzcyBDUERGX1Jlc291cmNlTmFtaW5nIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBzdHJ1Y3QgX05hbWluZ1N0YXRlIDogcHVibGljIENGWF9PYmplY3Qgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcJbV9QcmVmaXg7DQorICAgICAgICBpbnQJCQkJbV9uSW5kZXg7DQorICAgIH07DQorICAgIH5DUERGX1Jlc291cmNlTmFtaW5nKCk7DQorICAgIENGWF9CeXRlU3RyaW5nCQlHZXROYW1lKGNvbnN0IENQREZfRGljdGlvbmFyeSogcFJlc0xpc3QsIEZYX0xQQ1NUUiBzelR5cGUpOw0KK3Byb3RlY3RlZDoNCisgICAgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cgltX05hbWluZ0NhY2hlOw0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhcnNlci9maWx0ZXJzX2ludC5oIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhcnNlci9maWx0ZXJzX2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhN2Q3ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZpbHRlcnNfaW50LmgKQEAgLTAsMCArMSwxMTkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2NsYXNzIENQREZfRGVjcnlwdEZpbHRlciA6IHB1YmxpYyBDRlhfRGF0YUZpbHRlcg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfRGVjcnlwdEZpbHRlcihDUERGX0NyeXB0b0hhbmRsZXIqIHBDcnlwdG9IYW5kbGVyLCBGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIGdlbm51bSk7DQorICAgIHZpcnR1YWwgfkNQREZfRGVjcnlwdEZpbHRlcigpOw0KKyAgICB2aXJ0dWFsCXZvaWQJdl9GaWx0ZXJJbihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zik7DQorICAgIHZpcnR1YWwgdm9pZAl2X0ZpbHRlckZpbmlzaChDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zik7DQorICAgIENQREZfQ3J5cHRvSGFuZGxlcioJbV9wQ3J5cHRvSGFuZGxlcjsNCisgICAgRlhfTFBWT0lECQltX3BDb250ZXh0Ow0KKyAgICBGWF9EV09SRAkJbV9PYmpOdW0sIG1fR2VuTnVtOw0KK307DQorY2xhc3MgQ1BERl9GbGF0ZUZpbHRlciA6IHB1YmxpYyBDRlhfRGF0YUZpbHRlcg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfRmxhdGVGaWx0ZXIoKTsNCisgICAgdmlydHVhbCB+Q1BERl9GbGF0ZUZpbHRlcigpOw0KKyAgICB2aXJ0dWFsCXZvaWQJdl9GaWx0ZXJJbihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zik7DQorICAgIHZpcnR1YWwgdm9pZAl2X0ZpbHRlckZpbmlzaChDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zikge30NCisgICAgdm9pZCoJCQltX3BDb250ZXh0Ow0KKyAgICBGWF9CWVRFCQkJbV9EZXN0QnVmZmVyW0ZQREZfRklMVEVSX0JVRkZFUl9TSVpFXTsNCit9Ow0KK2NsYXNzIENQREZfTHp3RmlsdGVyIDogcHVibGljIENGWF9EYXRhRmlsdGVyDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9MendGaWx0ZXIoRlhfQk9PTCBiRWFybHlDaGFuZ2UpOw0KKyAgICB2aXJ0dWFsIH5DUERGX0x6d0ZpbHRlcigpIHt9DQorICAgIHZpcnR1YWwJdm9pZAl2X0ZpbHRlckluKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKTsNCisgICAgdmlydHVhbCB2b2lkCXZfRmlsdGVyRmluaXNoKENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKSB7fQ0KKyAgICBGWF9CT09MCQkJbV9iRWFybHlDaGFuZ2U7DQorICAgIEZYX0RXT1JECQltX0NvZGVBcnJheVs1MDIxXTsNCisgICAgRlhfRFdPUkQJCW1fbkNvZGVzOw0KKyAgICBGWF9EV09SRAkJbV9Db2RlTGVuOw0KKyAgICBGWF9EV09SRAkJbV9PbGRDb2RlOw0KKyAgICBGWF9CWVRFCQkJbV9MYXN0Q2hhcjsNCisgICAgRlhfRFdPUkQJCW1fbkxlZnRCaXRzLCBtX0xlZnRCaXRzOw0KKyAgICBGWF9CWVRFCQkJbV9EZWNvZGVTdGFja1s0MDAwXTsNCisgICAgRlhfRFdPUkQJCW1fU3RhY2tMZW47DQorICAgIHZvaWQJCQlBZGRDb2RlKEZYX0RXT1JEIHByZWZpeF9jb2RlLCBGWF9CWVRFIGFwcGVuZF9jaGFyKTsNCisgICAgdm9pZAkJCURlY29kZVN0cmluZyhGWF9EV09SRCBjb2RlKTsNCit9Ow0KK2NsYXNzIENQREZfUHJlZGljdG9yRmlsdGVyIDogcHVibGljIENGWF9EYXRhRmlsdGVyDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9QcmVkaWN0b3JGaWx0ZXIoaW50IHByZWRpY3RvciwgaW50IGNvbG9ycywgaW50IGJwYywgaW50IGNvbHMpOw0KKyAgICB2aXJ0dWFsIH5DUERGX1ByZWRpY3RvckZpbHRlcigpOw0KKyAgICB2aXJ0dWFsCXZvaWQJdl9GaWx0ZXJJbihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zik7DQorICAgIHZpcnR1YWwgdm9pZAl2X0ZpbHRlckZpbmlzaChDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zikge30NCisgICAgRlhfQk9PTAkJCW1fYlRpZmY7DQorICAgIEZYX0RXT1JECQltX1BpdGNoLCBtX0JwcDsNCisgICAgRlhfTFBCWVRFCQltX3BSZWZMaW5lLCBtX3BDdXJMaW5lOw0KKyAgICBGWF9EV09SRAkJbV9pTGluZSwgbV9MaW5lSW5TaXplOw0KK307DQorY2xhc3MgQ1BERl9Bc2NpaUhleEZpbHRlciA6IHB1YmxpYyBDRlhfRGF0YUZpbHRlcg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfQXNjaWlIZXhGaWx0ZXIoKTsNCisgICAgdmlydHVhbCB+Q1BERl9Bc2NpaUhleEZpbHRlcigpIHt9DQorICAgIHZpcnR1YWwJdm9pZAl2X0ZpbHRlckluKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKTsNCisgICAgdmlydHVhbCB2b2lkCXZfRmlsdGVyRmluaXNoKENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKSB7fQ0KKyAgICBpbnQJCQkJbV9TdGF0ZTsNCisgICAgaW50CQkJCW1fRmlyc3REaWdpdDsNCit9Ow0KK2NsYXNzIENQREZfQXNjaWk4NUZpbHRlciA6IHB1YmxpYyBDRlhfRGF0YUZpbHRlcg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfQXNjaWk4NUZpbHRlcigpOw0KKyAgICB2aXJ0dWFsIH5DUERGX0FzY2lpODVGaWx0ZXIoKSB7fQ0KKyAgICB2aXJ0dWFsCXZvaWQJdl9GaWx0ZXJJbihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zik7DQorICAgIHZpcnR1YWwgdm9pZAl2X0ZpbHRlckZpbmlzaChDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zikge30NCisgICAgaW50CQkJCW1fU3RhdGU7DQorICAgIGludAkJCQltX0NoYXJDb3VudDsNCisgICAgRlhfRFdPUkQJCW1fQ3VyRFdvcmQ7DQorfTsNCitjbGFzcyBDUERGX1J1bkxlbkZpbHRlciA6IHB1YmxpYyBDRlhfRGF0YUZpbHRlcg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfUnVuTGVuRmlsdGVyKCk7DQorICAgIHZpcnR1YWwgfkNQREZfUnVuTGVuRmlsdGVyKCkge30NCisgICAgdmlydHVhbAl2b2lkCXZfRmlsdGVySW4oRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpOw0KKyAgICB2aXJ0dWFsIHZvaWQJdl9GaWx0ZXJGaW5pc2goQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpIHt9DQorICAgIGludAkJCQltX1N0YXRlOw0KKyAgICBGWF9EV09SRAkJbV9Db3VudDsNCit9Ow0KK2NsYXNzIENQREZfSnBlZ0ZpbHRlciA6IHB1YmxpYyBDRlhfRGF0YUZpbHRlcg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfSnBlZ0ZpbHRlcigpOw0KKyAgICB2aXJ0dWFsIH5DUERGX0pwZWdGaWx0ZXIoKTsNCisgICAgdmlydHVhbAl2b2lkCXZfRmlsdGVySW4oRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpOw0KKyAgICB2aXJ0dWFsIHZvaWQJdl9GaWx0ZXJGaW5pc2goQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpIHt9DQorICAgIHZvaWQqCQkJbV9wQ29udGV4dDsNCisgICAgQ0ZYX0JpbmFyeUJ1ZgltX0lucHV0QnVmOw0KKyAgICBGWF9MUEJZVEUJCW1fcFNjYW5saW5lOw0KKyAgICBpbnQJCQkJbV9QaXRjaCwgbV9IZWlnaHQsIG1fV2lkdGgsIG1fbkNvbXBzLCBtX2lMaW5lOw0KKyAgICBGWF9CT09MCQkJbV9iR290SGVhZGVyOw0KK307DQorY2xhc3MgQ1BERl9GYXhGaWx0ZXIgOiBwdWJsaWMgQ0ZYX0RhdGFGaWx0ZXINCit7DQorcHVibGljOg0KKyAgICBDUERGX0ZheEZpbHRlcigpOw0KKyAgICB2aXJ0dWFsIH5DUERGX0ZheEZpbHRlcigpOw0KKyAgICBGWF9CT09MCQkJSW5pdGlhbGl6ZShpbnQgRW5jb2RpbmcsIGludCBiRW5kT2ZMaW5lLCBpbnQgYkJ5dGVBbGlnbiwgaW50IGJCbGFjaywgaW50IG5Sb3dzLCBpbnQgbkNvbHVtbnMpOw0KKyAgICB2aXJ0dWFsCXZvaWQJdl9GaWx0ZXJJbihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zik7DQorICAgIHZpcnR1YWwgdm9pZAl2X0ZpbHRlckZpbmlzaChDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zik7DQorICAgIGludAkJCQltX0VuY29kaW5nLCBtX2JFbmRPZkxpbmUsIG1fYkJ5dGVBbGlnbiwgbV9iQmxhY2s7DQorICAgIGludAkJCQltX25Sb3dzLCBtX25Db2x1bW5zLCBtX1BpdGNoLCBtX2lSb3c7DQorICAgIEZYX0xQQllURQkJbV9wU2NhbmxpbmVCdWYsIG1fcFJlZkJ1ZjsNCisgICAgQ0ZYX0JpbmFyeUJ1ZgltX0lucHV0QnVmOw0KKyAgICBpbnQJCQkJbV9JbnB1dEJpdFBvczsNCisgICAgdm9pZAkJCVByb2Nlc3NEYXRhKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCYgYml0cG9zLCBGWF9CT09MIGJGaW5pc2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1Zik7DQorICAgIEZYX0JPT0wJCQlSZWFkTGluZShGWF9MUENCWVRFIHNyY19idWYsIGludCBiaXRzaXplLCBpbnQmIGJpdHBvcyk7DQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX2RlY29kZS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX2RlY29kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlODFkNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfZGVjb2RlLmNwcApAQCAtMCwwICsxLDUzMyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhcnNlci5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorI2luY2x1ZGUgPGxpbWl0cy5oPg0KKyNkZWZpbmUgX1NUUkVBTV9NQVhfU0laRV8JCTIwICogMTAyNCAqIDEwMjQNCitGWF9EV09SRCBfQTg1RGVjb2RlKGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplKQ0KK3sNCisgICAgZGVzdF9zaXplID0gMDsNCisgICAgZGVzdF9idWYgPSBOVUxMOw0KKyAgICBpZiAoc3JjX3NpemUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfRFdPUkQgb3JpZ19zaXplID0gZGVzdF9zaXplOw0KKyAgICBGWF9EV09SRCB6Y291bnQgPSAwOw0KKyAgICBGWF9EV09SRCBwb3MgPSAwOw0KKyAgICB3aGlsZSAocG9zIDwgc3JjX3NpemUpIHsNCisgICAgICAgIEZYX0JZVEUgY2ggPSBzcmNfYnVmW3Bvc107DQorICAgICAgICBpZiAoY2ggPCAnIScgJiYgY2ggIT0gJ1xuJyAmJiBjaCAhPSAnXHInICYmIGNoICE9ICcgJyAmJiBjaCAhPSAnXHQnKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZiAoY2ggPT0gJ3onKSB7DQorICAgICAgICAgICAgemNvdW50ICsrOw0KKyAgICAgICAgfSBlbHNlIGlmIChjaCA+ICd1Jykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcG9zICsrOw0KKyAgICB9DQorICAgIGlmIChwb3MgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKHpjb3VudCA+IFVJTlRfTUFYIC8gNCkgew0KKyAgICAgICAgcmV0dXJuIChGWF9EV09SRCkgLSAxOw0KKyAgICB9DQorICAgIGlmICh6Y291bnQgKiA0ID4gVUlOVF9NQVggLSAocG9zIC0gemNvdW50KSkgew0KKyAgICAgICAgcmV0dXJuIChGWF9EV09SRCkgLSAxOw0KKyAgICB9DQorICAgIGRlc3RfYnVmID0gRlhfQWxsb2MoRlhfQllURSwgemNvdW50ICogNCArIChwb3MgLSB6Y291bnQpKTsNCisgICAgaWYgKGRlc3RfYnVmID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAoRlhfRFdPUkQpIC0gMTsNCisgICAgfQ0KKyAgICBpbnQgc3RhdGUgPSAwLCByZXMgPSAwOw0KKyAgICBwb3MgPSBkZXN0X3NpemUgPSAwOw0KKyAgICB3aGlsZSAocG9zIDwgc3JjX3NpemUpIHsNCisgICAgICAgIEZYX0JZVEUgY2ggPSBzcmNfYnVmW3BvcysrXTsNCisgICAgICAgIGlmIChjaCA9PSAnXG4nIHx8IGNoID09ICdccicgfHwgY2ggPT0gJyAnIHx8IGNoID09ICdcdCcpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjaCA9PSAneicpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1zZXQzMihkZXN0X2J1ZiArIGRlc3Rfc2l6ZSwgMCwgNCk7DQorICAgICAgICAgICAgc3RhdGUgPSAwOw0KKyAgICAgICAgICAgIHJlcyA9IDA7DQorICAgICAgICAgICAgZGVzdF9zaXplICs9IDQ7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChjaCA8ICchJyB8fCBjaCA+ICd1Jykgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmVzID0gcmVzICogODUgKyBjaCAtIDMzOw0KKyAgICAgICAgICAgIHN0YXRlICsrOw0KKyAgICAgICAgICAgIGlmIChzdGF0ZSA9PSA1KSB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9idWZbZGVzdF9zaXplKytdID0gKEZYX0JZVEUpKHJlcyA+PiAoMyAtIGkpICogOCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgc3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICByZXMgPSAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoc3RhdGUpIHsNCisgICAgICAgIGludCBpOw0KKyAgICAgICAgZm9yIChpID0gc3RhdGU7IGkgPCA1OyBpICsrKSB7DQorICAgICAgICAgICAgcmVzID0gcmVzICogODUgKyA4NDsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzdGF0ZSAtIDE7IGkgKyspIHsNCisgICAgICAgICAgICBkZXN0X2J1ZltkZXN0X3NpemUrK10gPSAoRlhfQllURSkocmVzID4+ICgzIC0gaSkgKiA4KTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAocG9zIDwgc3JjX3NpemUgJiYgc3JjX2J1Zltwb3NdID09ICc+Jykgew0KKyAgICAgICAgcG9zICsrOw0KKyAgICB9DQorICAgIHJldHVybiBwb3M7DQorfQ0KK0ZYX0RXT1JEIF9IZXhEZWNvZGUoY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpDQorew0KKyAgICBGWF9EV09SRCBvcmlnX3NpemUgPSBkZXN0X3NpemU7DQorICAgIEZYX0RXT1JEIGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBzcmNfc2l6ZTsgaSArKykNCisgICAgICAgIGlmIChzcmNfYnVmW2ldID09ICc+Jykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICBkZXN0X2J1ZiA9IEZYX0FsbG9jKCBGWF9CWVRFLCBpIC8gMiArIDEpOw0KKyAgICBkZXN0X3NpemUgPSAwOw0KKyAgICBGWF9CT09MIGJGaXJzdERpZ2l0ID0gVFJVRTsNCisgICAgZm9yIChpID0gMDsgaSA8IHNyY19zaXplOyBpICsrKSB7DQorICAgICAgICBGWF9CWVRFIGNoID0gc3JjX2J1ZltpXTsNCisgICAgICAgIGlmIChjaCA9PSAnICcgfHwgY2ggPT0gJ1xuJyB8fCBjaCA9PSAnXHQnIHx8IGNoID09ICdccicpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBkaWdpdDsNCisgICAgICAgIGlmIChjaCA8PSAnOScgJiYgY2ggPj0gJzAnKSB7DQorICAgICAgICAgICAgZGlnaXQgPSBjaCAtICcwJzsNCisgICAgICAgIH0gZWxzZSBpZiAoY2ggPD0gJ2YnICYmIGNoID49ICdhJykgew0KKyAgICAgICAgICAgIGRpZ2l0ID0gY2ggLSAnYScgKyAxMDsNCisgICAgICAgIH0gZWxzZSBpZiAoY2ggPD0gJ0YnICYmIGNoID49ICdBJykgew0KKyAgICAgICAgICAgIGRpZ2l0ID0gY2ggLSAnQScgKyAxMDsNCisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJz4nKSB7DQorICAgICAgICAgICAgaSArKzsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYkZpcnN0RGlnaXQpIHsNCisgICAgICAgICAgICBkZXN0X2J1ZltkZXN0X3NpemVdID0gZGlnaXQgKiAxNjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZGVzdF9idWZbZGVzdF9zaXplICsrXSArPSBkaWdpdDsNCisgICAgICAgIH0NCisgICAgICAgIGJGaXJzdERpZ2l0ID0gIWJGaXJzdERpZ2l0Ow0KKyAgICB9DQorICAgIGlmICghYkZpcnN0RGlnaXQpIHsNCisgICAgICAgIGRlc3Rfc2l6ZSArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gaTsNCit9DQorRlhfRFdPUkQgUnVuTGVuZ3RoRGVjb2RlKGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplKQ0KK3sNCisgICAgRlhfRFdPUkQgb3JpZ19zaXplID0gZGVzdF9zaXplOw0KKyAgICBGWF9EV09SRCBpID0gMDsNCisgICAgRlhfRFdPUkQgb2xkOw0KKyAgICBkZXN0X3NpemUgPSAwOw0KKyAgICB3aGlsZSAoaSA8IHNyY19zaXplKSB7DQorICAgICAgICBpZiAoc3JjX2J1ZltpXSA8IDEyOCkgew0KKyAgICAgICAgICAgIG9sZCA9IGRlc3Rfc2l6ZTsNCisgICAgICAgICAgICBkZXN0X3NpemUgKz0gc3JjX2J1ZltpXSArIDE7DQorICAgICAgICAgICAgaWYgKGRlc3Rfc2l6ZSA8IG9sZCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gKEZYX0RXT1JEKSAtIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGkgKz0gc3JjX2J1ZltpXSArIDI7DQorICAgICAgICB9IGVsc2UgaWYgKHNyY19idWZbaV0gPiAxMjgpIHsNCisgICAgICAgICAgICBvbGQgPSBkZXN0X3NpemU7DQorICAgICAgICAgICAgZGVzdF9zaXplICs9IDI1NyAtIHNyY19idWZbaV07DQorICAgICAgICAgICAgaWYgKGRlc3Rfc2l6ZSA8IG9sZCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gKEZYX0RXT1JEKSAtIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGkgKz0gMjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGRlc3Rfc2l6ZSA+PSBfU1RSRUFNX01BWF9TSVpFXykgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGRlc3RfYnVmID0gRlhfQWxsb2MoIEZYX0JZVEUsIGRlc3Rfc2l6ZSk7DQorICAgIGlmICghZGVzdF9idWYpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpID0gMDsNCisgICAgaW50IGRlc3RfY291bnQgPSAwOw0KKyAgICB3aGlsZSAoaSA8IHNyY19zaXplKSB7DQorICAgICAgICBpZiAoc3JjX2J1ZltpXSA8IDEyOCkgew0KKyAgICAgICAgICAgIEZYX0RXT1JEIGNvcHlfbGVuID0gc3JjX2J1ZltpXSArIDE7DQorICAgICAgICAgICAgRlhfRFdPUkQgYnVmX2xlZnQgPSBzcmNfc2l6ZSAtIGkgLSAxOw0KKyAgICAgICAgICAgIGlmIChidWZfbGVmdCA8IGNvcHlfbGVuKSB7DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIGRlbHRhID0gY29weV9sZW4gLSBidWZfbGVmdDsNCisgICAgICAgICAgICAgICAgY29weV9sZW4gPSBidWZfbGVmdDsNCisgICAgICAgICAgICAgICAgRlhTWVNfbWVtc2V0OChkZXN0X2J1ZiArIGRlc3RfY291bnQgKyBjb3B5X2xlbiwgJ1wwJywgZGVsdGEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X2J1ZiArIGRlc3RfY291bnQsIHNyY19idWYgKyBpICsgMSwgY29weV9sZW4pOw0KKyAgICAgICAgICAgIGRlc3RfY291bnQgKz0gc3JjX2J1ZltpXSArIDE7DQorICAgICAgICAgICAgaSArPSBzcmNfYnVmW2ldICsgMjsNCisgICAgICAgIH0gZWxzZSBpZiAoc3JjX2J1ZltpXSA+IDEyOCkgew0KKyAgICAgICAgICAgIGludCBmaWxsID0gMDsNCisgICAgICAgICAgICBpZiAoaSA8IHNyY19zaXplIC0gMSkgew0KKyAgICAgICAgICAgICAgICBmaWxsID0gc3JjX2J1ZltpICsgMV07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYU1lTX21lbXNldDgoZGVzdF9idWYgKyBkZXN0X2NvdW50LCBmaWxsLCAyNTcgLSBzcmNfYnVmW2ldKTsNCisgICAgICAgICAgICBkZXN0X2NvdW50ICs9IDI1NyAtIHNyY19idWZbaV07DQorICAgICAgICAgICAgaSArPSAyOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9EV09SRCByZXQgPSBpICsgMTsNCisgICAgaWYgKHJldCA+IHNyY19zaXplKSB7DQorICAgICAgICByZXQgPSBzcmNfc2l6ZTsNCisgICAgfQ0KKyAgICByZXR1cm4gcmV0Ow0KK30NCitJQ29kZWNfU2NhbmxpbmVEZWNvZGVyKiBGUERGQVBJX0NyZWF0ZUZheERlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwUGFyYW1zKQ0KK3sNCisgICAgaW50IEsgPSAwOw0KKyAgICBGWF9CT09MIEVuZE9mTGluZSA9IEZBTFNFOw0KKyAgICBGWF9CT09MIEJ5dGVBbGlnbiA9IEZBTFNFOw0KKyAgICBGWF9CT09MIEJsYWNrSXMxID0gRkFMU0U7DQorICAgIEZYX0JPT0wgQ29sdW1ucyA9IDE3Mjg7DQorICAgIEZYX0JPT0wgUm93cyA9IDA7DQorICAgIGlmIChwUGFyYW1zKSB7DQorICAgICAgICBLID0gcFBhcmFtcy0+R2V0SW50ZWdlcihGWF9CU1RSQygiSyIpKTsNCisgICAgICAgIEVuZE9mTGluZSA9IHBQYXJhbXMtPkdldEludGVnZXIoRlhfQlNUUkMoIkVuZE9mTGluZSIpKTsNCisgICAgICAgIEJ5dGVBbGlnbiA9IHBQYXJhbXMtPkdldEludGVnZXIoRlhfQlNUUkMoIkVuY29kZWRCeXRlQWxpZ24iKSk7DQorICAgICAgICBCbGFja0lzMSA9IHBQYXJhbXMtPkdldEludGVnZXIoRlhfQlNUUkMoIkJsYWNrSXMxIikpOw0KKyAgICAgICAgQ29sdW1ucyA9IHBQYXJhbXMtPkdldEludGVnZXIoRlhfQlNUUkMoIkNvbHVtbnMiKSwgMTcyOCk7DQorICAgICAgICBSb3dzID0gcFBhcmFtcy0+R2V0SW50ZWdlcihGWF9CU1RSQygiUm93cyIpKTsNCisgICAgICAgIGlmIChSb3dzID4gVVNIUlRfTUFYKSB7DQorICAgICAgICAgICAgUm93cyA9IDA7DQorICAgICAgICB9DQorICAgICAgICBpZiAoQ29sdW1ucyA8PSAwIHx8IFJvd3MgPCAwIHx8IENvbHVtbnMgPiBVU0hSVF9NQVggfHwgUm93cyA+IFVTSFJUX01BWCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEZheE1vZHVsZSgpLT5DcmVhdGVEZWNvZGVyKHNyY19idWYsIHNyY19zaXplLCB3aWR0aCwgaGVpZ2h0LA0KKyAgICAgICAgICAgIEssIEVuZE9mTGluZSwgQnl0ZUFsaWduLCBCbGFja0lzMSwgQ29sdW1ucywgUm93cyk7DQorfQ0KK3N0YXRpYyBGWF9CT09MIENoZWNrRmxhdGVEZWNvZGVQYXJhbXMoaW50IENvbG9ycywgaW50IEJpdHNQZXJDb21wb25lbnQsIGludCBDb2x1bW5zKQ0KK3sNCisgICAgaWYgKENvbHVtbnMgPCAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IGNoZWNrID0gQ29sdW1uczsNCisgICAgaWYgKENvbG9ycyA8IDAgfHwgKGNoZWNrID4gMCAmJiBDb2xvcnMgPiBJTlRfTUFYIC8gY2hlY2spKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgY2hlY2sgKj0gQ29sb3JzOw0KKyAgICBpZiAoQml0c1BlckNvbXBvbmVudCA8IDAgfHwNCisgICAgICAgICAgICAoY2hlY2sgPiAwICYmIEJpdHNQZXJDb21wb25lbnQgPiBJTlRfTUFYIC8gY2hlY2spKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgY2hlY2sgKj0gQml0c1BlckNvbXBvbmVudDsNCisgICAgaWYgKGNoZWNrID4gSU5UX01BWCAtIDcpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorSUNvZGVjX1NjYW5saW5lRGVjb2RlciogRlBERkFQSV9DcmVhdGVGbGF0ZURlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgaW50IG5Db21wcywgaW50IGJwYywgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwUGFyYW1zKQ0KK3sNCisgICAgaW50IHByZWRpY3RvciA9IDA7DQorICAgIEZYX0JPT0wgYkVhcmx5Q2hhbmdlID0gVFJVRTsNCisgICAgaW50IENvbG9ycyA9IDAsIEJpdHNQZXJDb21wb25lbnQgPSAwLCBDb2x1bW5zID0gMDsNCisgICAgaWYgKHBQYXJhbXMpIHsNCisgICAgICAgIHByZWRpY3RvciA9ICgoQ1BERl9EaWN0aW9uYXJ5KilwUGFyYW1zKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiUHJlZGljdG9yIikpOw0KKyAgICAgICAgYkVhcmx5Q2hhbmdlID0gKChDUERGX0RpY3Rpb25hcnkqKXBQYXJhbXMpLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJFYXJseUNoYW5nZSIpLCAxKTsNCisgICAgICAgIENvbG9ycyA9IHBQYXJhbXMtPkdldEludGVnZXIoRlhfQlNUUkMoIkNvbG9ycyIpLCAxKTsNCisgICAgICAgIEJpdHNQZXJDb21wb25lbnQgPSBwUGFyYW1zLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJCaXRzUGVyQ29tcG9uZW50IiksIDgpOw0KKyAgICAgICAgQ29sdW1ucyA9IHBQYXJhbXMtPkdldEludGVnZXIoRlhfQlNUUkMoIkNvbHVtbnMiKSwgMSk7DQorICAgICAgICBpZiAoIUNoZWNrRmxhdGVEZWNvZGVQYXJhbXMoQ29sb3JzLCBCaXRzUGVyQ29tcG9uZW50LCBDb2x1bW5zKSkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEZsYXRlTW9kdWxlKCktPkNyZWF0ZURlY29kZXIoc3JjX2J1Ziwgc3JjX3NpemUsIHdpZHRoLCBoZWlnaHQsDQorICAgICAgICAgICAgbkNvbXBzLCBicGMsIHByZWRpY3RvciwgQ29sb3JzLCBCaXRzUGVyQ29tcG9uZW50LCBDb2x1bW5zKTsNCit9DQorRlhfRFdPUkQgRlBERkFQSV9GbGF0ZU9yTFpXRGVjb2RlKEZYX0JPT0wgYkxaVywgY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIENQREZfRGljdGlvbmFyeSogcFBhcmFtcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZXN0aW1hdGVkX3NpemUsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpDQorew0KKyAgICBpbnQgcHJlZGljdG9yID0gMDsNCisgICAgRlhfQk9PTCBiRWFybHlDaGFuZ2UgPSBUUlVFOw0KKyAgICBpbnQgQ29sb3JzID0gMCwgQml0c1BlckNvbXBvbmVudCA9IDAsIENvbHVtbnMgPSAwOw0KKyAgICBpZiAocFBhcmFtcykgew0KKyAgICAgICAgcHJlZGljdG9yID0gKChDUERGX0RpY3Rpb25hcnkqKXBQYXJhbXMpLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJQcmVkaWN0b3IiKSk7DQorICAgICAgICBiRWFybHlDaGFuZ2UgPSAoKENQREZfRGljdGlvbmFyeSopcFBhcmFtcyktPkdldEludGVnZXIoRlhfQlNUUkMoIkVhcmx5Q2hhbmdlIiksIDEpOw0KKyAgICAgICAgQ29sb3JzID0gcFBhcmFtcy0+R2V0SW50ZWdlcihGWF9CU1RSQygiQ29sb3JzIiksIDEpOw0KKyAgICAgICAgQml0c1BlckNvbXBvbmVudCA9IHBQYXJhbXMtPkdldEludGVnZXIoRlhfQlNUUkMoIkJpdHNQZXJDb21wb25lbnQiKSwgOCk7DQorICAgICAgICBDb2x1bW5zID0gcFBhcmFtcy0+R2V0SW50ZWdlcihGWF9CU1RSQygiQ29sdW1ucyIpLCAxKTsNCisgICAgICAgIGlmICghQ2hlY2tGbGF0ZURlY29kZVBhcmFtcyhDb2xvcnMsIEJpdHNQZXJDb21wb25lbnQsIENvbHVtbnMpKSB7DQorICAgICAgICAgICAgcmV0dXJuIChGWF9EV09SRCkgLSAxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEZsYXRlTW9kdWxlKCktPkZsYXRlT3JMWldEZWNvZGUoYkxaVywgc3JjX2J1Ziwgc3JjX3NpemUsDQorICAgICAgICAgICAgYkVhcmx5Q2hhbmdlLCBwcmVkaWN0b3IsIENvbG9ycywgQml0c1BlckNvbXBvbmVudCwgQ29sdW1ucywgZXN0aW1hdGVkX3NpemUsDQorICAgICAgICAgICAgZGVzdF9idWYsIGRlc3Rfc2l6ZSk7DQorfQ0KK0ZYX0JPT0wgUERGX0RhdGFEZWNvZGUoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCwNCisgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUsIENGWF9CeXRlU3RyaW5nJiBJbWFnZUVuY29kaW5nLA0KKyAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiYgcEltYWdlUGFybXMsIEZYX0RXT1JEIGxhc3RfZXN0aW1hdGVkX3NpemUsIEZYX0JPT0wgYkltYWdlQWNjKQ0KKw0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBEZWNvZGVyID0gcERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiRmlsdGVyIikpOw0KKyAgICBpZiAocERlY29kZXIgPT0gTlVMTCB8fCAocERlY29kZXItPkdldFR5cGUoKSAhPSBQREZPQkpfQVJSQVkgJiYgcERlY29kZXItPkdldFR5cGUoKSAhPSBQREZPQkpfTkFNRSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcFBhcmFtcyA9IHBEaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkRlY29kZVBhcm1zIikpOw0KKyAgICBDRlhfQnl0ZVN0cmluZ0FycmF5IERlY29kZXJMaXN0Ow0KKyAgICBDRlhfUHRyQXJyYXkgUGFyYW1MaXN0Ow0KKyAgICBpZiAocERlY29kZXItPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIGlmIChwUGFyYW1zICYmIHBQYXJhbXMtPkdldFR5cGUoKSAhPSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICBwUGFyYW1zID0gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfQXJyYXkqIHBEZWNvZGVycyA9IChDUERGX0FycmF5KilwRGVjb2RlcjsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwRGVjb2RlcnMtPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZ0Mgc3RyID0gcERlY29kZXJzLT5HZXRDb25zdFN0cmluZyhpKTsNCisgICAgICAgICAgICBEZWNvZGVyTGlzdC5BZGQoc3RyKTsNCisgICAgICAgICAgICBpZiAocFBhcmFtcykgew0KKyAgICAgICAgICAgICAgICBQYXJhbUxpc3QuQWRkKCgoQ1BERl9BcnJheSopcFBhcmFtcyktPkdldERpY3QoaSkpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIFBhcmFtTGlzdC5BZGQoTlVMTCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRGVjb2Rlckxpc3QuQWRkKHBEZWNvZGVyLT5HZXRDb25zdFN0cmluZygpKTsNCisgICAgICAgIFBhcmFtTGlzdC5BZGQocFBhcmFtcy0+R2V0RGljdCgpKTsNCisgICAgfQ0KKyAgICBGWF9MUEJZVEUgbGFzdF9idWYgPSAoRlhfTFBCWVRFKXNyY19idWY7DQorICAgIEZYX0RXT1JEIGxhc3Rfc2l6ZSA9IHNyY19zaXplOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IERlY29kZXJMaXN0LkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgaW50IGVzdGltYXRlZF9zaXplID0gaSA9PSBEZWNvZGVyTGlzdC5HZXRTaXplKCkgLSAxID8gbGFzdF9lc3RpbWF0ZWRfc2l6ZSA6IDA7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBkZWNvZGVyID0gRGVjb2Rlckxpc3RbaV07DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBQYXJhbSA9IChDUERGX0RpY3Rpb25hcnkqKVBhcmFtTGlzdFtpXTsNCisgICAgICAgIEZYX0xQQllURSBuZXdfYnVmID0gTlVMTDsNCisgICAgICAgIEZYX0RXT1JEIG5ld19zaXplID0gKEZYX0RXT1JEKSAtIDE7DQorICAgICAgICBpbnQgb2Zmc2V0ID0gLTE7DQorICAgICAgICBpZiAoZGVjb2RlciA9PSBGWF9CU1RSQygiRmxhdGVEZWNvZGUiKSB8fCBkZWNvZGVyID09IEZYX0JTVFJDKCJGbCIpKSB7DQorICAgICAgICAgICAgaWYgKGJJbWFnZUFjYyAmJiBpID09IERlY29kZXJMaXN0LkdldFNpemUoKSAtIDEpIHsNCisgICAgICAgICAgICAgICAgSW1hZ2VFbmNvZGluZyA9IEZYX0JTVFJDKCJGbGF0ZURlY29kZSIpOw0KKyAgICAgICAgICAgICAgICBkZXN0X2J1ZiA9IChGWF9MUEJZVEUpbGFzdF9idWY7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IGxhc3Rfc2l6ZTsNCisgICAgICAgICAgICAgICAgcEltYWdlUGFybXMgPSBwUGFyYW07DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG9mZnNldCA9IEZQREZBUElfRmxhdGVPckxaV0RlY29kZShGQUxTRSwgbGFzdF9idWYsIGxhc3Rfc2l6ZSwgcFBhcmFtLCBlc3RpbWF0ZWRfc2l6ZSwgbmV3X2J1ZiwgbmV3X3NpemUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAoZGVjb2RlciA9PSBGWF9CU1RSQygiTFpXRGVjb2RlIikgfHwgZGVjb2RlciA9PSBGWF9CU1RSQygiTFpXIikpIHsNCisgICAgICAgICAgICBvZmZzZXQgPSBGUERGQVBJX0ZsYXRlT3JMWldEZWNvZGUoVFJVRSwgbGFzdF9idWYsIGxhc3Rfc2l6ZSwgcFBhcmFtLCBlc3RpbWF0ZWRfc2l6ZSwgbmV3X2J1ZiwgbmV3X3NpemUpOw0KKyAgICAgICAgfSBlbHNlIGlmIChkZWNvZGVyID09IEZYX0JTVFJDKCJBU0NJSTg1RGVjb2RlIikgfHwgZGVjb2RlciA9PSBGWF9CU1RSQygiQTg1IikpIHsNCisgICAgICAgICAgICBvZmZzZXQgPSBfQTg1RGVjb2RlKGxhc3RfYnVmLCBsYXN0X3NpemUsIG5ld19idWYsIG5ld19zaXplKTsNCisgICAgICAgIH0gZWxzZSBpZiAoZGVjb2RlciA9PSBGWF9CU1RSQygiQVNDSUlIZXhEZWNvZGUiKSB8fCBkZWNvZGVyID09IEZYX0JTVFJDKCJBSHgiKSkgew0KKyAgICAgICAgICAgIG9mZnNldCA9IF9IZXhEZWNvZGUobGFzdF9idWYsIGxhc3Rfc2l6ZSwgbmV3X2J1ZiwgbmV3X3NpemUpOw0KKyAgICAgICAgfSBlbHNlIGlmIChkZWNvZGVyID09IEZYX0JTVFJDKCJSdW5MZW5ndGhEZWNvZGUiKSB8fCBkZWNvZGVyID09IEZYX0JTVFJDKCJSTCIpKSB7DQorICAgICAgICAgICAgaWYgKGJJbWFnZUFjYyAmJiBpID09IERlY29kZXJMaXN0LkdldFNpemUoKSAtIDEpIHsNCisgICAgICAgICAgICAgICAgSW1hZ2VFbmNvZGluZyA9IEZYX0JTVFJDKCJSdW5MZW5ndGhEZWNvZGUiKTsNCisgICAgICAgICAgICAgICAgZGVzdF9idWYgPSAoRlhfTFBCWVRFKWxhc3RfYnVmOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NpemUgPSBsYXN0X3NpemU7DQorICAgICAgICAgICAgICAgIHBJbWFnZVBhcm1zID0gcFBhcmFtOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgb2Zmc2V0ID0gUnVuTGVuZ3RoRGVjb2RlKGxhc3RfYnVmLCBsYXN0X3NpemUsIG5ld19idWYsIG5ld19zaXplKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKGRlY29kZXIgPT0gRlhfQlNUUkMoIkRDVCIpKSB7DQorICAgICAgICAgICAgICAgIGRlY29kZXIgPSAiRENURGVjb2RlIjsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKGRlY29kZXIgPT0gRlhfQlNUUkMoIkNDRiIpKSB7DQorICAgICAgICAgICAgICAgIGRlY29kZXIgPSAiQ0NJVFRGYXhEZWNvZGUiOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVjb2RlciA9PSBGWF9CU1RSQygiQ3J5cHQiKSkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgSW1hZ2VFbmNvZGluZyA9IGRlY29kZXI7DQorICAgICAgICAgICAgcEltYWdlUGFybXMgPSBwUGFyYW07DQorICAgICAgICAgICAgZGVzdF9idWYgPSAoRlhfTFBCWVRFKWxhc3RfYnVmOw0KKyAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IGxhc3Rfc2l6ZTsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChsYXN0X2J1ZiAhPSBzcmNfYnVmKSB7DQorICAgICAgICAgICAgRlhfRnJlZShsYXN0X2J1Zik7DQorICAgICAgICB9DQorICAgICAgICBpZiAob2Zmc2V0ID09IC0xKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbGFzdF9idWYgPSBuZXdfYnVmOw0KKyAgICAgICAgbGFzdF9zaXplID0gbmV3X3NpemU7DQorICAgIH0NCisgICAgSW1hZ2VFbmNvZGluZyA9ICIiOw0KKyAgICBwSW1hZ2VQYXJtcyA9IE5VTEw7DQorICAgIGRlc3RfYnVmID0gbGFzdF9idWY7DQorICAgIGRlc3Rfc2l6ZSA9IGxhc3Rfc2l6ZTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2V4dGVybiBjb25zdCBGWF9XT1JEIFBERkRvY0VuY29kaW5nWzI1Nl0gPSB7DQorICAgIDB4MDAwMCwgMHgwMDAxLCAweDAwMDIsIDB4MDAwMywgMHgwMDA0LCAweDAwMDUsIDB4MDAwNiwgMHgwMDA3LCAweDAwMDgsIDB4MDAwOSwNCisgICAgMHgwMDBhLCAweDAwMGIsIDB4MDAwYywgMHgwMDBkLCAweDAwMGUsIDB4MDAwZiwgMHgwMDEwLCAweDAwMTEsIDB4MDAxMiwgMHgwMDEzLA0KKyAgICAweDAwMTQsIDB4MDAxNSwgMHgwMDE2LCAweDAwMTcsIDB4MDJkOCwgMHgwMmM3LCAweDAyYzYsIDB4MDJkOSwgMHgwMmRkLCAweDAyZGIsDQorICAgIDB4MDJkYSwgMHgwMmRjLCAweDAwMjAsIDB4MDAyMSwgMHgwMDIyLCAweDAwMjMsIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywNCisgICAgMHgwMDI4LCAweDAwMjksIDB4MDAyYSwgMHgwMDJiLCAweDAwMmMsIDB4MDAyZCwgMHgwMDJlLCAweDAwMmYsIDB4MDAzMCwgMHgwMDMxLA0KKyAgICAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgsIDB4MDAzOSwgMHgwMDNhLCAweDAwM2IsDQorICAgIDB4MDAzYywgMHgwMDNkLCAweDAwM2UsIDB4MDAzZiwgMHgwMDQwLCAweDAwNDEsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDQsIDB4MDA0NSwNCisgICAgMHgwMDQ2LCAweDAwNDcsIDB4MDA0OCwgMHgwMDQ5LCAweDAwNGEsIDB4MDA0YiwgMHgwMDRjLCAweDAwNGQsIDB4MDA0ZSwgMHgwMDRmLA0KKyAgICAweDAwNTAsIDB4MDA1MSwgMHgwMDUyLCAweDAwNTMsIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywgMHgwMDU4LCAweDAwNTksDQorICAgIDB4MDA1YSwgMHgwMDViLCAweDAwNWMsIDB4MDA1ZCwgMHgwMDVlLCAweDAwNWYsIDB4MDA2MCwgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywNCisgICAgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LCAweDAwNjgsIDB4MDA2OSwgMHgwMDZhLCAweDAwNmIsIDB4MDA2YywgMHgwMDZkLA0KKyAgICAweDAwNmUsIDB4MDA2ZiwgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsDQorICAgIDB4MDA3OCwgMHgwMDc5LCAweDAwN2EsIDB4MDA3YiwgMHgwMDdjLCAweDAwN2QsIDB4MDA3ZSwgMHgwMDAwLCAweDIwMjIsIDB4MjAyMCwNCisgICAgMHgyMDIxLCAweDIwMjYsIDB4MjAxNCwgMHgyMDEzLCAweDAxOTIsIDB4MjA0NCwgMHgyMDM5LCAweDIwM2EsIDB4MjIxMiwgMHgyMDMwLA0KKyAgICAweDIwMWUsIDB4MjAxYywgMHgyMDFkLCAweDIwMTgsIDB4MjAxOSwgMHgyMDFhLCAweDIxMjIsIDB4ZmIwMSwgMHhmYjAyLCAweDAxNDEsDQorICAgIDB4MDE1MiwgMHgwMTYwLCAweDAxNzgsIDB4MDE3ZCwgMHgwMTMxLCAweDAxNDIsIDB4MDE1MywgMHgwMTYxLCAweDAxN2UsIDB4MDAwMCwNCisgICAgMHgyMGFjLCAweDAwYTEsIDB4MDBhMiwgMHgwMGEzLCAweDAwYTQsIDB4MDBhNSwgMHgwMGE2LCAweDAwYTcsIDB4MDBhOCwgMHgwMGE5LA0KKyAgICAweDAwYWEsIDB4MDBhYiwgMHgwMGFjLCAweDAwMDAsIDB4MDBhZSwgMHgwMGFmLCAweDAwYjAsIDB4MDBiMSwgMHgwMGIyLCAweDAwYjMsDQorICAgIDB4MDBiNCwgMHgwMGI1LCAweDAwYjYsIDB4MDBiNywgMHgwMGI4LCAweDAwYjksIDB4MDBiYSwgMHgwMGJiLCAweDAwYmMsIDB4MDBiZCwNCisgICAgMHgwMGJlLCAweDAwYmYsIDB4MDBjMCwgMHgwMGMxLCAweDAwYzIsIDB4MDBjMywgMHgwMGM0LCAweDAwYzUsIDB4MDBjNiwgMHgwMGM3LA0KKyAgICAweDAwYzgsIDB4MDBjOSwgMHgwMGNhLCAweDAwY2IsIDB4MDBjYywgMHgwMGNkLCAweDAwY2UsIDB4MDBjZiwgMHgwMGQwLCAweDAwZDEsDQorICAgIDB4MDBkMiwgMHgwMGQzLCAweDAwZDQsIDB4MDBkNSwgMHgwMGQ2LCAweDAwZDcsIDB4MDBkOCwgMHgwMGQ5LCAweDAwZGEsIDB4MDBkYiwNCisgICAgMHgwMGRjLCAweDAwZGQsIDB4MDBkZSwgMHgwMGRmLCAweDAwZTAsIDB4MDBlMSwgMHgwMGUyLCAweDAwZTMsIDB4MDBlNCwgMHgwMGU1LA0KKyAgICAweDAwZTYsIDB4MDBlNywgMHgwMGU4LCAweDAwZTksIDB4MDBlYSwgMHgwMGViLCAweDAwZWMsIDB4MDBlZCwgMHgwMGVlLCAweDAwZWYsDQorICAgIDB4MDBmMCwgMHgwMGYxLCAweDAwZjIsIDB4MDBmMywgMHgwMGY0LCAweDAwZjUsIDB4MDBmNiwgMHgwMGY3LCAweDAwZjgsIDB4MDBmOSwNCisgICAgMHgwMGZhLCAweDAwZmIsIDB4MDBmYywgMHgwMGZkLCAweDAwZmUsIDB4MDBmZg0KK307DQorQ0ZYX1dpZGVTdHJpbmcgUERGX0RlY29kZVRleHQoRlhfTFBDQllURSBzcmNfZGF0YSwgRlhfRFdPUkQgc3JjX2xlbiwgQ0ZYX0NoYXJNYXAqIHBDaGFyTWFwKQ0KK3sNCisgICAgQ0ZYX1dpZGVTdHJpbmcgcmVzdWx0Ow0KKyAgICBpZiAoc3JjX2xlbiA+PSAyICYmICgoc3JjX2RhdGFbMF0gPT0gMHhmZSAmJiBzcmNfZGF0YVsxXSA9PSAweGZmKSB8fCAoc3JjX2RhdGFbMF0gPT0gMHhmZiAmJiBzcmNfZGF0YVsxXSA9PSAweGZlKSkpIHsNCisgICAgICAgIEZYX0JPT0wgYkJFID0gc3JjX2RhdGFbMF0gPT0gMHhmZTsNCisgICAgICAgIGludCBtYXhfY2hhcnMgPSAoc3JjX2xlbiAtIDIpIC8gMjsNCisgICAgICAgIGlmICghbWF4X2NoYXJzKSB7DQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfZGF0YVswXSA9PSAweGZmKSB7DQorICAgICAgICAgICAgYkJFID0gIXNyY19kYXRhWzJdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfTFBXU1RSIGRlc3RfYnVmID0gcmVzdWx0LkdldEJ1ZmZlcihtYXhfY2hhcnMpOw0KKyAgICAgICAgRlhfTFBDQllURSB1bmlfc3RyID0gc3JjX2RhdGEgKyAyOw0KKyAgICAgICAgaW50IGRlc3RfcG9zID0gMDsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4X2NoYXJzICogMjsgaSArPSAyKSB7DQorICAgICAgICAgICAgRlhfV09SRCB1bmljb2RlID0gYkJFID8gKHVuaV9zdHJbaV0gPDwgOCB8IHVuaV9zdHJbaSArIDFdKSA6ICh1bmlfc3RyW2kgKyAxXSA8PCA4IHwgdW5pX3N0cltpXSk7DQorICAgICAgICAgICAgaWYgKHVuaWNvZGUgPT0gMHgxYikgew0KKyAgICAgICAgICAgICAgICBpICs9IDI7DQorICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgbWF4X2NoYXJzICogMikgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfV09SRCB1bmljb2RlID0gYkJFID8gKHVuaV9zdHJbaV0gPDwgOCB8IHVuaV9zdHJbaSArIDFdKSA6ICh1bmlfc3RyW2kgKyAxXSA8PCA4IHwgdW5pX3N0cltpXSk7DQorICAgICAgICAgICAgICAgICAgICBpICs9IDI7DQorICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZSA9PSAweDFiKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBkZXN0X2J1ZltkZXN0X3BvcysrXSA9IHVuaWNvZGU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmVzdWx0LlJlbGVhc2VCdWZmZXIoZGVzdF9wb3MpOw0KKyAgICB9IGVsc2UgaWYgKHBDaGFyTWFwID09IE5VTEwpIHsNCisgICAgICAgIEZYX0xQV1NUUiBkZXN0X2J1ZiA9IHJlc3VsdC5HZXRCdWZmZXIoc3JjX2xlbik7DQorICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgc3JjX2xlbjsgaSArKykgew0KKyAgICAgICAgICAgIGRlc3RfYnVmW2ldID0gUERGRG9jRW5jb2Rpbmdbc3JjX2RhdGFbaV1dOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmVzdWx0LlJlbGVhc2VCdWZmZXIoc3JjX2xlbik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gKCpwQ2hhck1hcC0+bV9HZXRXaWRlU3RyaW5nKShwQ2hhck1hcCwgQ0ZYX0J5dGVTdHJpbmcoKEZYX0xQQ1NUUilzcmNfZGF0YSwgc3JjX2xlbikpOw0KKyAgICB9DQorICAgIHJldHVybiByZXN1bHQ7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIFBERl9EZWNvZGVUZXh0KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBic3RyLCBDRlhfQ2hhck1hcCogcENoYXJNYXApDQorew0KKyAgICByZXR1cm4gUERGX0RlY29kZVRleHQoKEZYX0xQQ0JZVEUpKEZYX0xQQ1NUUilic3RyLCBic3RyLkdldExlbmd0aCgpLCBwQ2hhck1hcCk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIFBERl9FbmNvZGVUZXh0KEZYX0xQQ1dTVFIgcFN0cmluZywgaW50IGxlbiwgQ0ZYX0NoYXJNYXAqIHBDaGFyTWFwKQ0KK3sNCisgICAgaWYgKGxlbiA9PSAtMSkgew0KKyAgICAgICAgbGVuID0gKEZYX1NUUlNJWkUpRlhTWVNfd2NzbGVuKHBTdHJpbmcpOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIHJlc3VsdDsNCisgICAgaWYgKHBDaGFyTWFwID09IE5VTEwpIHsNCisgICAgICAgIEZYX0xQU1RSIGRlc3RfYnVmMSA9IHJlc3VsdC5HZXRCdWZmZXIobGVuKTsNCisgICAgICAgIGludCBpOw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArKykgew0KKyAgICAgICAgICAgIGludCBjb2RlOw0KKyAgICAgICAgICAgIGZvciAoY29kZSA9IDA7IGNvZGUgPCAyNTY7IGNvZGUgKyspDQorICAgICAgICAgICAgICAgIGlmIChQREZEb2NFbmNvZGluZ1tjb2RlXSA9PSBwU3RyaW5nW2ldKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChjb2RlID09IDI1Nikgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9idWYxW2ldID0gY29kZTsNCisgICAgICAgIH0NCisgICAgICAgIHJlc3VsdC5SZWxlYXNlQnVmZmVyKGkpOw0KKyAgICAgICAgaWYgKGkgPT0gbGVuKSB7DQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9MUEJZVEUgZGVzdF9idWYyID0gKEZYX0xQQllURSlyZXN1bHQuR2V0QnVmZmVyKGxlbiAqIDIgKyAyKTsNCisgICAgZGVzdF9idWYyWzBdID0gMHhmZTsNCisgICAgZGVzdF9idWYyWzFdID0gMHhmZjsNCisgICAgZGVzdF9idWYyICs9IDI7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpICsrKSB7DQorICAgICAgICAqZGVzdF9idWYyKysgPSBwU3RyaW5nW2ldID4+IDg7DQorICAgICAgICAqZGVzdF9idWYyKysgPSAoRlhfQllURSlwU3RyaW5nW2ldOw0KKyAgICB9DQorICAgIHJlc3VsdC5SZWxlYXNlQnVmZmVyKGxlbiAqIDIgKyAyKTsNCisgICAgcmV0dXJuIHJlc3VsdDsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgUERGX0VuY29kZVN0cmluZyhjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3JjLCBGWF9CT09MIGJIZXgpDQorew0KKyAgICBDRlhfQnl0ZVRleHRCdWYgcmVzdWx0Ow0KKyAgICBpbnQgc3JjbGVuID0gc3JjLkdldExlbmd0aCgpOw0KKyAgICBpZiAoYkhleCkgew0KKyAgICAgICAgcmVzdWx0LkFwcGVuZENoYXIoJzwnKTsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3JjbGVuOyBpICsrKSB7DQorICAgICAgICAgICAgcmVzdWx0LkFwcGVuZENoYXIoIjAxMjM0NTY3ODlBQkNERUYiW3NyY1tpXSAvIDE2XSk7DQorICAgICAgICAgICAgcmVzdWx0LkFwcGVuZENoYXIoIjAxMjM0NTY3ODlBQkNERUYiW3NyY1tpXSAlIDE2XSk7DQorICAgICAgICB9DQorICAgICAgICByZXN1bHQuQXBwZW5kQ2hhcignPicpOw0KKyAgICAgICAgcmV0dXJuIHJlc3VsdC5HZXRCeXRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgcmVzdWx0LkFwcGVuZENoYXIoJygnKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcmNsZW47IGkgKyspIHsNCisgICAgICAgIEZYX0JZVEUgY2ggPSBzcmNbaV07DQorICAgICAgICBpZiAoY2ggPT0gJyknIHx8IGNoID09ICdcXCcgfHwgY2ggPT0gJygnKSB7DQorICAgICAgICAgICAgcmVzdWx0LkFwcGVuZENoYXIoJ1xcJyk7DQorICAgICAgICB9IGVsc2UgaWYgKGNoID09IDB4MGEpIHsNCisgICAgICAgICAgICByZXN1bHQgPDwgRlhfQlNUUkMoIlxcbiIpOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAweDBkKSB7DQorICAgICAgICAgICAgcmVzdWx0IDw8IEZYX0JTVFJDKCJcXHIiKTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIHJlc3VsdC5BcHBlbmRDaGFyKGNoKTsNCisgICAgfQ0KKyAgICByZXN1bHQuQXBwZW5kQ2hhcignKScpOw0KKyAgICByZXR1cm4gcmVzdWx0LkdldEJ5dGVTdHJpbmcoKTsNCit9DQordm9pZCBGbGF0ZUVuY29kZShjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkNCit7DQorICAgIENDb2RlY19Nb2R1bGVNZ3IqIHBFbmNvZGVycyA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKTsNCisgICAgaWYgKHBFbmNvZGVycykgew0KKyAgICAgICAgcEVuY29kZXJzLT5HZXRGbGF0ZU1vZHVsZSgpLT5FbmNvZGUoc3JjX2J1Ziwgc3JjX3NpemUsIGRlc3RfYnVmLCBkZXN0X3NpemUpOw0KKyAgICB9DQorfQ0KK3ZvaWQgRmxhdGVFbmNvZGUoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHByZWRpY3RvciwgaW50IENvbG9ycywgaW50IEJpdHNQZXJDb21wb25lbnQsIGludCBDb2x1bW5zLA0KKyAgICAgICAgICAgICAgICAgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkNCit7DQorICAgIENDb2RlY19Nb2R1bGVNZ3IqIHBFbmNvZGVycyA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKTsNCisgICAgaWYgKHBFbmNvZGVycykgew0KKyAgICAgICAgcEVuY29kZXJzLT5HZXRGbGF0ZU1vZHVsZSgpLT5FbmNvZGUoc3JjX2J1Ziwgc3JjX3NpemUsIHByZWRpY3RvciwgQ29sb3JzLCBCaXRzUGVyQ29tcG9uZW50LCBDb2x1bW5zLCBkZXN0X2J1ZiwgZGVzdF9zaXplKTsNCisgICAgfQ0KK30NCitGWF9EV09SRCBGbGF0ZURlY29kZShjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkNCit7DQorICAgIENDb2RlY19Nb2R1bGVNZ3IqIHBFbmNvZGVycyA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKTsNCisgICAgaWYgKHBFbmNvZGVycykgew0KKyAgICAgICAgcmV0dXJuIHBFbmNvZGVycy0+R2V0RmxhdGVNb2R1bGUoKS0+RmxhdGVPckxaV0RlY29kZShGQUxTRSwgc3JjX2J1Ziwgc3JjX3NpemUsIEZBTFNFLCAwLCAwLCAwLCAwLCAwLCBkZXN0X2J1ZiwgZGVzdF9zaXplKTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhcnNlci9mcGRmX3BhcnNlcl9kb2N1bWVudC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX2RvY3VtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjhhNjA2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhcnNlci9mcGRmX3BhcnNlcl9kb2N1bWVudC5jcHAKQEAgLTAsMCArMSwzOTggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYXJzZXIuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgiDQorZXh0ZXJuIEZYX0xQVk9JRCBQREZQcmV2aWV3SW5pdENhY2hlKENQREZfRG9jdW1lbnQqIHBEb2MpOw0KK2V4dGVybiB2b2lkIFBERlByZXZpZXdDbGVhckNhY2hlKEZYX0xQVk9JRCBwQ2FjaGUpOw0KK0NQREZfRG9jdW1lbnQ6OkNQREZfRG9jdW1lbnQoSVBERl9Eb2NQYXJzZXIqIHBQYXJzZXIpIDogQ1BERl9JbmRpcmVjdE9iamVjdHMocFBhcnNlcikNCit7DQorICAgIEFTU0VSVChwUGFyc2VyICE9IE5VTEwpOw0KKyAgICBtX3BSb290RGljdCA9IE5VTEw7DQorICAgIG1fcEluZm9EaWN0ID0gTlVMTDsNCisgICAgbV9iTGluZWFyaXplZCA9IEZBTFNFOw0KKyAgICBtX2R3Rmlyc3RQYWdlTm8gPSAwOw0KKyAgICBtX2R3Rmlyc3RQYWdlT2JqTnVtID0gMDsNCisgICAgbV9wRG9jUGFnZSA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UGFnZU1vZHVsZSgpLT5DcmVhdGVEb2NEYXRhKHRoaXMpOw0KKyAgICBtX3BEb2NSZW5kZXIgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldFJlbmRlck1vZHVsZSgpLT5DcmVhdGVEb2NEYXRhKHRoaXMpOw0KK30NCitDUERGX0RvY1BhZ2VEYXRhKiBDUERGX0RvY3VtZW50OjpHZXRWYWxpZGF0ZVBhZ2VEYXRhKCkNCit7DQorICAgIGlmIChtX3BEb2NQYWdlKSB7DQorICAgICAgICByZXR1cm4gbV9wRG9jUGFnZTsNCisgICAgfQ0KKyAgICBtX3BEb2NQYWdlID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRQYWdlTW9kdWxlKCktPkNyZWF0ZURvY0RhdGEodGhpcyk7DQorICAgIHJldHVybiBtX3BEb2NQYWdlOw0KK30NCitDUERGX0RvY1JlbmRlckRhdGEqIENQREZfRG9jdW1lbnQ6OkdldFZhbGlkYXRlUmVuZGVyRGF0YSgpDQorew0KKyAgICBpZiAobV9wRG9jUmVuZGVyKSB7DQorICAgICAgICByZXR1cm4gbV9wRG9jUmVuZGVyOw0KKyAgICB9DQorICAgIG1fcERvY1JlbmRlciA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UmVuZGVyTW9kdWxlKCktPkNyZWF0ZURvY0RhdGEodGhpcyk7DQorICAgIHJldHVybiBtX3BEb2NSZW5kZXI7DQorfQ0KK3ZvaWQgQ1BERl9Eb2N1bWVudDo6TG9hZERvYygpDQorew0KKyAgICBtX0xhc3RPYmpOdW0gPSBtX3BQYXJzZXItPkdldExhc3RPYmpOdW0oKTsNCisgICAgQ1BERl9PYmplY3QqIHBSb290T2JqID0gR2V0SW5kaXJlY3RPYmplY3QobV9wUGFyc2VyLT5HZXRSb290T2JqTnVtKCkpOw0KKyAgICBpZiAocFJvb3RPYmogPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcFJvb3REaWN0ID0gcFJvb3RPYmotPkdldERpY3QoKTsNCisgICAgaWYgKG1fcFJvb3REaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcEluZm9PYmogPSBHZXRJbmRpcmVjdE9iamVjdChtX3BQYXJzZXItPkdldEluZm9PYmpOdW0oKSk7DQorICAgIGlmIChwSW5mb09iaikgew0KKyAgICAgICAgbV9wSW5mb0RpY3QgPSBwSW5mb09iai0+R2V0RGljdCgpOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBJREFycmF5ID0gbV9wUGFyc2VyLT5HZXRJREFycmF5KCk7DQorICAgIGlmIChwSURBcnJheSkgew0KKyAgICAgICAgbV9JRDEgPSBwSURBcnJheS0+R2V0U3RyaW5nKDApOw0KKyAgICAgICAgbV9JRDIgPSBwSURBcnJheS0+R2V0U3RyaW5nKDEpOw0KKyAgICB9DQorICAgIG1fUGFnZUxpc3QuU2V0U2l6ZShfR2V0UGFnZUNvdW50KCkpOw0KK30NCit2b2lkIENQREZfRG9jdW1lbnQ6OkxvYWRBc3luRG9jKENQREZfRGljdGlvbmFyeSAqcExpbmVhcml6ZWQpDQorew0KKyAgICBtX2JMaW5lYXJpemVkID0gVFJVRTsNCisgICAgbV9MYXN0T2JqTnVtID0gbV9wUGFyc2VyLT5HZXRMYXN0T2JqTnVtKCk7DQorICAgIG1fcFJvb3REaWN0ID0gR2V0SW5kaXJlY3RPYmplY3QobV9wUGFyc2VyLT5HZXRSb290T2JqTnVtKCkpLT5HZXREaWN0KCk7DQorICAgIGlmIChtX3BSb290RGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wSW5mb0RpY3QgPSBHZXRJbmRpcmVjdE9iamVjdChtX3BQYXJzZXItPkdldEluZm9PYmpOdW0oKSktPkdldERpY3QoKTsNCisgICAgQ1BERl9BcnJheSogcElEQXJyYXkgPSBtX3BQYXJzZXItPkdldElEQXJyYXkoKTsNCisgICAgaWYgKHBJREFycmF5KSB7DQorICAgICAgICBtX0lEMSA9IHBJREFycmF5LT5HZXRTdHJpbmcoMCk7DQorICAgICAgICBtX0lEMiA9IHBJREFycmF5LT5HZXRTdHJpbmcoMSk7DQorICAgIH0NCisgICAgRlhfRFdPUkQgZHdQYWdlQ291bnQgPSAwOw0KKyAgICBDUERGX09iamVjdCAqcENvdW50ID0gcExpbmVhcml6ZWQtPkdldEVsZW1lbnQoRlhfQlNUUkMoIk4iKSk7DQorICAgIGlmIChwQ291bnQgJiYgcENvdW50LT5HZXRUeXBlKCkgPT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgZHdQYWdlQ291bnQgPSBwQ291bnQtPkdldEludGVnZXIoKTsNCisgICAgfQ0KKyAgICBtX1BhZ2VMaXN0LlNldFNpemUoZHdQYWdlQ291bnQpOw0KKyAgICBDUERGX09iamVjdCAqcE5vID0gcExpbmVhcml6ZWQtPkdldEVsZW1lbnQoRlhfQlNUUkMoIlAiKSk7DQorICAgIGlmIChwTm8gJiYgcE5vLT5HZXRUeXBlKCkgPT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgbV9kd0ZpcnN0UGFnZU5vID0gcE5vLT5HZXRJbnRlZ2VyKCk7DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QgKnBPYmpOdW0gPSBwTGluZWFyaXplZC0+R2V0RWxlbWVudChGWF9CU1RSQygiTyIpKTsNCisgICAgaWYgKHBPYmpOdW0gJiYgcE9iak51bS0+R2V0VHlwZSgpID09IFBERk9CSl9OVU1CRVIpIHsNCisgICAgICAgIG1fZHdGaXJzdFBhZ2VPYmpOdW0gPSBwT2JqTnVtLT5HZXRJbnRlZ2VyKCk7DQorICAgIH0NCit9DQordm9pZCBDUERGX0RvY3VtZW50OjpMb2FkUGFnZXMoKQ0KK3sNCisgICAgbV9QYWdlTGlzdC5TZXRTaXplKF9HZXRQYWdlQ291bnQoKSk7DQorfQ0KK2V4dGVybiB2b2lkIEZQREZfVFRGYWNlTWFwcGVyX1JlbGVhc2VEb2MoQ1BERl9Eb2N1bWVudCopOw0KK0NQREZfRG9jdW1lbnQ6On5DUERGX0RvY3VtZW50KCkNCit7DQorICAgIGlmIChtX3BEb2NSZW5kZXIpIHsNCisgICAgICAgIENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UmVuZGVyTW9kdWxlKCktPkRlc3Ryb3lEb2NEYXRhKG1fcERvY1JlbmRlcik7DQorICAgIH0NCisgICAgaWYgKG1fcERvY1BhZ2UpIHsNCisgICAgICAgIENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UGFnZU1vZHVsZSgpLT5SZWxlYXNlRG9jKHRoaXMpOw0KKyAgICAgICAgQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRQYWdlTW9kdWxlKCktPkNsZWFyU3RvY2tGb250KHRoaXMpOw0KKyAgICB9DQorfQ0KKyNkZWZpbmUJCUZYX01BWF9QQUdFX0xFVkVMCQkJMTAyNA0KK0NQREZfRGljdGlvbmFyeSogQ1BERl9Eb2N1bWVudDo6X0ZpbmRQREZQYWdlKENQREZfRGljdGlvbmFyeSogcFBhZ2VzLCBpbnQgaVBhZ2UsIGludCBuUGFnZXNUb0dvLCBpbnQgbGV2ZWwpDQorew0KKyAgICBDUERGX0FycmF5KiBwS2lkTGlzdCA9IHBQYWdlcy0+R2V0QXJyYXkoRlhfQlNUUkMoIktpZHMiKSk7DQorICAgIGlmIChwS2lkTGlzdCA9PSBOVUxMKSB7DQorICAgICAgICBpZiAoblBhZ2VzVG9HbyA9PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIHBQYWdlczsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChsZXZlbCA+PSBGWF9NQVhfUEFHRV9MRVZFTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaW50IG5LaWRzID0gcEtpZExpc3QtPkdldENvdW50KCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbktpZHM7IGkgKyspIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcEtpZCA9IHBLaWRMaXN0LT5HZXREaWN0KGkpOw0KKyAgICAgICAgaWYgKHBLaWQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG5QYWdlc1RvR28gLS07DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEtpZCA9PSBwUGFnZXMpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghcEtpZC0+S2V5RXhpc3QoRlhfQlNUUkMoIktpZHMiKSkpIHsNCisgICAgICAgICAgICBpZiAoblBhZ2VzVG9HbyA9PSAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwS2lkOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX1BhZ2VMaXN0LlNldEF0KGlQYWdlIC0gblBhZ2VzVG9HbywgcEtpZC0+R2V0T2JqTnVtKCkpOw0KKyAgICAgICAgICAgIG5QYWdlc1RvR28gLS07DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGludCBuUGFnZXMgPSBwS2lkLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJDb3VudCIpKTsNCisgICAgICAgICAgICBpZiAoblBhZ2VzVG9HbyA8IG5QYWdlcykgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gX0ZpbmRQREZQYWdlKHBLaWQsIGlQYWdlLCBuUGFnZXNUb0dvLCBsZXZlbCArIDEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBuUGFnZXNUb0dvIC09IG5QYWdlczsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorQ1BERl9EaWN0aW9uYXJ5KiBDUERGX0RvY3VtZW50OjpHZXRQYWdlKGludCBpUGFnZSkNCit7DQorICAgIGlmIChpUGFnZSA8IDAgfHwgaVBhZ2UgPj0gbV9QYWdlTGlzdC5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX2JMaW5lYXJpemVkICYmIChpUGFnZSA9PSAoaW50KW1fZHdGaXJzdFBhZ2VObykpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gR2V0SW5kaXJlY3RPYmplY3QobV9kd0ZpcnN0UGFnZU9iak51bSk7DQorICAgICAgICBpZiAocE9iaiAmJiBwT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfRGljdGlvbmFyeSopcE9iajsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpbnQgb2JqbnVtID0gbV9QYWdlTGlzdC5HZXRBdChpUGFnZSk7DQorICAgIGlmIChvYmpudW0pIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gR2V0SW5kaXJlY3RPYmplY3Qob2JqbnVtKTsNCisgICAgICAgIEFTU0VSVChwT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX0RJQ1RJT05BUlkpOw0KKyAgICAgICAgcmV0dXJuIChDUERGX0RpY3Rpb25hcnkqKXBPYmo7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUm9vdCA9IEdldFJvb3QoKTsNCisgICAgaWYgKHBSb290ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcFBhZ2VzID0gcFJvb3QtPkdldERpY3QoRlhfQlNUUkMoIlBhZ2VzIikpOw0KKyAgICBpZiAocFBhZ2VzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcFBhZ2UgPSBfRmluZFBERlBhZ2UocFBhZ2VzLCBpUGFnZSwgaVBhZ2UsIDApOw0KKyAgICBpZiAocFBhZ2UgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgbV9QYWdlTGlzdC5TZXRBdChpUGFnZSwgcFBhZ2UtPkdldE9iak51bSgpKTsNCisgICAgcmV0dXJuIHBQYWdlOw0KK30NCitpbnQgQ1BERl9Eb2N1bWVudDo6X0ZpbmRQYWdlSW5kZXgoQ1BERl9EaWN0aW9uYXJ5KiBwTm9kZSwgRlhfRFdPUkQmIHNraXBfY291bnQsIEZYX0RXT1JEIG9iam51bSwgaW50JiBpbmRleCwgaW50IGxldmVsKQ0KK3sNCisgICAgaWYgKHBOb2RlLT5LZXlFeGlzdChGWF9CU1RSQygiS2lkcyIpKSkgew0KKyAgICAgICAgQ1BERl9BcnJheSogcEtpZExpc3QgPSBwTm9kZS0+R2V0QXJyYXkoRlhfQlNUUkMoIktpZHMiKSk7DQorICAgICAgICBpZiAocEtpZExpc3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChsZXZlbCA+PSBGWF9NQVhfUEFHRV9MRVZFTCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0RXT1JEIGNvdW50ID0gcE5vZGUtPkdldEludGVnZXIoRlhfQlNUUkMoIkNvdW50IikpOw0KKyAgICAgICAgaWYgKGNvdW50IDw9IHNraXBfY291bnQpIHsNCisgICAgICAgICAgICBza2lwX2NvdW50IC09IGNvdW50Ow0KKyAgICAgICAgICAgIGluZGV4ICs9IGNvdW50Ow0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjb3VudCAmJiBjb3VudCA9PSBwS2lkTGlzdC0+R2V0Q291bnQoKSkgew0KKyAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBjb3VudDsgaSArKykgew0KKyAgICAgICAgICAgICAgICBDUERGX1JlZmVyZW5jZSogcEtpZCA9IChDUERGX1JlZmVyZW5jZSopcEtpZExpc3QtPkdldEVsZW1lbnQoaSk7DQorICAgICAgICAgICAgICAgIGlmIChwS2lkICYmIHBLaWQtPkdldFR5cGUoKSA9PSBQREZPQkpfUkVGRVJFTkNFKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEtpZC0+R2V0UmVmT2JqTnVtKCkgPT0gb2JqbnVtKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9QYWdlTGlzdC5TZXRBdChpbmRleCArIGksIG9iam51bSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4ICsgaTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwS2lkTGlzdC0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcEtpZCA9IHBLaWRMaXN0LT5HZXREaWN0KGkpOw0KKyAgICAgICAgICAgIGlmIChwS2lkID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwS2lkID09IHBOb2RlKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgZm91bmRfaW5kZXggPSBfRmluZFBhZ2VJbmRleChwS2lkLCBza2lwX2NvdW50LCBvYmpudW0sIGluZGV4LCBsZXZlbCArIDEpOw0KKyAgICAgICAgICAgIGlmIChmb3VuZF9pbmRleCA+PSAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZF9pbmRleDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAob2JqbnVtID09IHBOb2RlLT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgICAgIHJldHVybiBpbmRleDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChza2lwX2NvdW50KSB7DQorICAgICAgICAgICAgc2tpcF9jb3VudC0tOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW5kZXggKys7DQorICAgIH0NCisgICAgcmV0dXJuIC0xOw0KK30NCitpbnQgQ1BERl9Eb2N1bWVudDo6R2V0UGFnZUluZGV4KEZYX0RXT1JEIG9iam51bSkNCit7DQorICAgIEZYX0RXT1JEIG5QYWdlcyA9IG1fUGFnZUxpc3QuR2V0U2l6ZSgpOw0KKyAgICBGWF9EV09SRCBza2lwX2NvdW50ID0gMDsNCisgICAgRlhfQk9PTCBiU2tpcHBlZCA9IEZBTFNFOw0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgblBhZ2VzOyBpICsrKSB7DQorICAgICAgICBGWF9EV09SRCBvYmpudW0xID0gbV9QYWdlTGlzdC5HZXRBdChpKTsNCisgICAgICAgIGlmIChvYmpudW0xID09IG9iam51bSkgew0KKyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFiU2tpcHBlZCAmJiBvYmpudW0xID09IDApIHsNCisgICAgICAgICAgICBza2lwX2NvdW50ID0gaTsNCisgICAgICAgICAgICBiU2tpcHBlZCA9IFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUm9vdCA9IEdldFJvb3QoKTsNCisgICAgaWYgKHBSb290ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBQYWdlcyA9IHBSb290LT5HZXREaWN0KEZYX0JTVFJDKCJQYWdlcyIpKTsNCisgICAgaWYgKHBQYWdlcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaW50IGluZGV4ID0gMDsNCisgICAgcmV0dXJuIF9GaW5kUGFnZUluZGV4KHBQYWdlcywgc2tpcF9jb3VudCwgb2JqbnVtLCBpbmRleCk7DQorfQ0KK2ludCBDUERGX0RvY3VtZW50OjpHZXRQYWdlQ291bnQoKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIG1fUGFnZUxpc3QuR2V0U2l6ZSgpOw0KK30NCitzdGF0aWMgaW50IF9Db3VudFBhZ2VzKENQREZfRGljdGlvbmFyeSogcFBhZ2VzLCBpbnQgbGV2ZWwpDQorew0KKyAgICBpZiAobGV2ZWwgPiAxMjgpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGludCBjb3VudCA9IHBQYWdlcy0+R2V0SW50ZWdlcihGWF9CU1RSQygiQ291bnQiKSk7DQorICAgIGlmIChjb3VudCA+IDAgJiYgY291bnQgPCBGUERGX1BBR0VfTUFYX05VTSkgew0KKyAgICAgICAgcmV0dXJuIGNvdW50Ow0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBLaWRMaXN0ID0gcFBhZ2VzLT5HZXRBcnJheShGWF9CU1RSQygiS2lkcyIpKTsNCisgICAgaWYgKHBLaWRMaXN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGNvdW50ID0gMDsNCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBLaWRMaXN0LT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBLaWQgPSBwS2lkTGlzdC0+R2V0RGljdChpKTsNCisgICAgICAgIGlmIChwS2lkID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghcEtpZC0+S2V5RXhpc3QoRlhfQlNUUkMoIktpZHMiKSkpIHsNCisgICAgICAgICAgICBjb3VudCArKzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgY291bnQgKz0gX0NvdW50UGFnZXMocEtpZCwgbGV2ZWwgKyAxKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBwUGFnZXMtPlNldEF0SW50ZWdlcihGWF9CU1RSQygiQ291bnQiKSwgY291bnQpOw0KKyAgICByZXR1cm4gY291bnQ7DQorfQ0KK2ludCBDUERGX0RvY3VtZW50OjpfR2V0UGFnZUNvdW50KCkgY29uc3QNCit7DQorICAgIENQREZfRGljdGlvbmFyeSogcFJvb3QgPSBHZXRSb290KCk7DQorICAgIGlmIChwUm9vdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBQYWdlcyA9IHBSb290LT5HZXREaWN0KEZYX0JTVFJDKCJQYWdlcyIpKTsNCisgICAgaWYgKHBQYWdlcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAoIXBQYWdlcy0+S2V5RXhpc3QoRlhfQlNUUkMoIktpZHMiKSkpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIHJldHVybiBfQ291bnRQYWdlcyhwUGFnZXMsIDApOw0KK30NCitzdGF0aWMgRlhfQk9PTCBfRW51bVBhZ2VzKENQREZfRGljdGlvbmFyeSogcFBhZ2VzLCBJUERGX0VudW1QYWdlSGFuZGxlciogcEhhbmRsZXIpDQorew0KKyAgICBDUERGX0FycmF5KiBwS2lkTGlzdCA9IHBQYWdlcy0+R2V0QXJyYXkoRlhfQlNUUkMoIktpZHMiKSk7DQorICAgIGlmIChwS2lkTGlzdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gcEhhbmRsZXItPkVudW1QYWdlKHBQYWdlcyk7DQorICAgIH0NCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBLaWRMaXN0LT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBLaWQgPSBwS2lkTGlzdC0+R2V0RGljdChpKTsNCisgICAgICAgIGlmIChwS2lkID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghcEtpZC0+S2V5RXhpc3QoRlhfQlNUUkMoIktpZHMiKSkpIHsNCisgICAgICAgICAgICBpZiAoIXBIYW5kbGVyLT5FbnVtUGFnZShwS2lkKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXR1cm4gX0VudW1QYWdlcyhwS2lkLCBwSGFuZGxlcik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ1BERl9Eb2N1bWVudDo6RW51bVBhZ2VzKElQREZfRW51bVBhZ2VIYW5kbGVyKiBwSGFuZGxlcikNCit7DQorICAgIENQREZfRGljdGlvbmFyeSogcFJvb3QgPSBHZXRSb290KCk7DQorICAgIGlmIChwUm9vdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZXMgPSBwUm9vdC0+R2V0RGljdChGWF9CU1RSQygiUGFnZXMiKSk7DQorICAgIGlmIChwUGFnZXMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIF9FbnVtUGFnZXMocFBhZ2VzLCBwSGFuZGxlcik7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Eb2N1bWVudDo6SXNDb250ZW50VXNlZEVsc2V3aGVyZShGWF9EV09SRCBvYmpudW0sIENQREZfRGljdGlvbmFyeSogcFRoaXNQYWdlRGljdCkNCit7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9QYWdlTGlzdC5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcFBhZ2VEaWN0ID0gR2V0UGFnZShpKTsNCisgICAgICAgIGlmIChwUGFnZURpY3QgPT0gcFRoaXNQYWdlRGljdCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBDb250ZW50cyA9IHBQYWdlRGljdC0+R2V0RWxlbWVudChGWF9CU1RSQygiQ29udGVudHMiKSk7DQorICAgICAgICBpZiAocENvbnRlbnRzID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwQ29udGVudHMtPkdldERpcmVjdFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSAoQ1BERl9BcnJheSopcENvbnRlbnRzLT5HZXREaXJlY3QoKTsNCisgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGogPSAwOyBqIDwgcEFycmF5LT5HZXRDb3VudCgpOyBqICsrKSB7DQorICAgICAgICAgICAgICAgIENQREZfUmVmZXJlbmNlKiBwUmVmID0gKENQREZfUmVmZXJlbmNlKilwQXJyYXktPkdldEVsZW1lbnQoaik7DQorICAgICAgICAgICAgICAgIGlmIChwUmVmLT5HZXRSZWZPYmpOdW0oKSA9PSBvYmpudW0pIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChwQ29udGVudHMtPkdldE9iak51bSgpID09IG9iam51bSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfRFdPUkQgQ1BERl9Eb2N1bWVudDo6R2V0VXNlclBlcm1pc3Npb25zKEZYX0JPT0wgYkNoZWNrUmV2aXNpb24pIGNvbnN0DQorew0KKyAgICBpZiAobV9wUGFyc2VyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAoRlhfRFdPUkQpIC0gMTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wUGFyc2VyLT5HZXRQZXJtaXNzaW9ucyhiQ2hlY2tSZXZpc2lvbik7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Eb2N1bWVudDo6SXNPd25lcigpIGNvbnN0DQorew0KKyAgICBpZiAobV9wUGFyc2VyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BQYXJzZXItPklzT3duZXIoKTsNCit9DQorRlhfQk9PTCBDUERGX0RvY3VtZW50OjpJc0Zvcm1TdHJlYW0oRlhfRFdPUkQgb2JqbnVtLCBGWF9CT09MJiBiRm9ybSkgY29uc3QNCit7DQorICAgIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwT2JqOw0KKyAgICAgICAgaWYgKG1fSW5kaXJlY3RPYmpzLkxvb2t1cCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKW9iam51bSwgKEZYX0xQVk9JRCYpcE9iaikpIHsNCisgICAgICAgICAgICBiRm9ybSA9IHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNICYmDQorICAgICAgICAgICAgICAgICAgICAoKENQREZfU3RyZWFtKilwT2JqKS0+R2V0RGljdCgpLT5HZXRTdHJpbmcoRlhfQlNUUkMoIlN1YnR5cGUiKSkgPT0gRlhfQlNUUkMoIkZvcm0iKTsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wUGFyc2VyID09IE5VTEwpIHsNCisgICAgICAgIGJGb3JtID0gRkFMU0U7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wUGFyc2VyLT5Jc0Zvcm1TdHJlYW0ob2JqbnVtLCBiRm9ybSk7DQorfQ0KK3ZvaWQgQ1BERl9Eb2N1bWVudDo6Q2xlYXJQYWdlRGF0YSgpDQorew0KKyAgICBpZiAobV9wRG9jUGFnZSkgew0KKyAgICAgICAgQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRQYWdlTW9kdWxlKCktPkNsZWFyRG9jKHRoaXMpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9Eb2N1bWVudDo6Q2xlYXJSZW5kZXJEYXRhKCkNCit7DQorICAgIGlmIChtX3BEb2NSZW5kZXIpIHsNCisgICAgICAgIENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UmVuZGVyTW9kdWxlKCktPkNsZWFyRG9jRGF0YShtX3BEb2NSZW5kZXIpOw0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfZW5jcnlwdC5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX2VuY3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZjFhMjQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX2VuY3J5cHQuY3BwCkBAIC0wLDAgKzEsOTU3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSA8dGltZS5oPg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYXJzZXIuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mZHJtL2Z4X2NyeXB0LmgiDQorY29uc3QgRlhfQllURSBkZWZwYXNzY29kZVszMl0gPSB7DQorICAgIDB4MjgsIDB4YmYsIDB4NGUsIDB4NWUsIDB4NGUsIDB4NzUsIDB4OGEsIDB4NDEsDQorICAgIDB4NjQsIDB4MDAsIDB4NGUsIDB4NTYsIDB4ZmYsIDB4ZmEsIDB4MDEsIDB4MDgsDQorICAgIDB4MmUsIDB4MmUsIDB4MDAsIDB4YjYsIDB4ZDAsIDB4NjgsIDB4M2UsIDB4ODAsDQorICAgIDB4MmYsIDB4MGMsIDB4YTksIDB4ZmUsIDB4NjQsIDB4NTMsIDB4NjksIDB4N2ENCit9Ow0KK3ZvaWQgQ2FsY0VuY3J5cHRLZXkoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdCwgRlhfTFBDQllURSBwYXNzd29yZCwgRlhfRFdPUkQgcGFzc19zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGtleSwgaW50IGtleWxlbiwgRlhfQk9PTCBiSWdub3JlTWV0YSwgQ1BERl9BcnJheSogcElkQXJyYXkpDQorew0KKyAgICBpbnQgcmV2aXNpb24gPSBwRW5jcnlwdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiUiIpKTsNCisgICAgRlhfQllURSBwYXNzY29kZVszMl07DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCAzMjsgaSArKykgew0KKyAgICAgICAgcGFzc2NvZGVbaV0gPSBpIDwgcGFzc19zaXplID8gcGFzc3dvcmRbaV0gOiBkZWZwYXNzY29kZVtpIC0gcGFzc19zaXplXTsNCisgICAgfQ0KKyAgICBGWF9CWVRFIG1kNVsxMDBdOw0KKyAgICBDUllQVF9NRDVTdGFydChtZDUpOw0KKyAgICBDUllQVF9NRDVVcGRhdGUobWQ1LCBwYXNzY29kZSwgMzIpOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBva2V5ID0gcEVuY3J5cHQtPkdldFN0cmluZyhGWF9CU1RSQygiTyIpKTsNCisgICAgQ1JZUFRfTUQ1VXBkYXRlKG1kNSwgKEZYX0xQQllURSkoRlhfTFBDU1RSKW9rZXksIG9rZXkuR2V0TGVuZ3RoKCkpOw0KKyAgICBGWF9EV09SRCBwZXJtID0gcEVuY3J5cHQtPkdldEludGVnZXIoRlhfQlNUUkMoIlAiKSk7DQorICAgIENSWVBUX01ENVVwZGF0ZShtZDUsIChGWF9MUEJZVEUpJnBlcm0sIDQpOw0KKyAgICBpZiAocElkQXJyYXkpIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGlkID0gcElkQXJyYXktPkdldFN0cmluZygwKTsNCisgICAgICAgIENSWVBUX01ENVVwZGF0ZShtZDUsIChGWF9MUEJZVEUpKEZYX0xQQ1NUUilpZCwgaWQuR2V0TGVuZ3RoKCkpOw0KKyAgICB9DQorICAgIGlmICghYklnbm9yZU1ldGEgJiYgcmV2aXNpb24gPj0gMyAmJiAhcEVuY3J5cHQtPkdldEludGVnZXIoRlhfQlNUUkMoIkVuY3J5cHRNZXRhZGF0YSIpLCAxKSkgew0KKyAgICAgICAgRlhfRFdPUkQgdGFnID0gKEZYX0RXT1JEKSAtIDE7DQorICAgICAgICBDUllQVF9NRDVVcGRhdGUobWQ1LCAoRlhfTFBCWVRFKSZ0YWcsIDQpOw0KKyAgICB9DQorICAgIEZYX0JZVEUgZGlnZXN0WzE2XTsNCisgICAgQ1JZUFRfTUQ1RmluaXNoKG1kNSwgZGlnZXN0KTsNCisgICAgRlhfRFdPUkQgY29weV9sZW4gPSBrZXlsZW47DQorICAgIGlmIChjb3B5X2xlbiA+IHNpemVvZihkaWdlc3QpKSB7DQorICAgICAgICBjb3B5X2xlbiA9IHNpemVvZihkaWdlc3QpOw0KKyAgICB9DQorICAgIGlmIChyZXZpc2lvbiA+PSAzKSB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyBpICsrKSB7DQorICAgICAgICAgICAgQ1JZUFRfTUQ1R2VuZXJhdGUoZGlnZXN0LCBjb3B5X2xlbiwgZGlnZXN0KTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWFNZU19tZW1zZXQzMihrZXksIDAsIGtleWxlbik7DQorICAgIEZYU1lTX21lbWNweTMyKGtleSwgZGlnZXN0LCBjb3B5X2xlbik7DQorfQ0KK0NQREZfQ3J5cHRvSGFuZGxlciogQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6Q3JlYXRlQ3J5cHRvSGFuZGxlcigpDQorew0KKyAgICByZXR1cm4gRlhfTkVXIENQREZfU3RhbmRhcmRDcnlwdG9IYW5kbGVyOw0KK30NCit0eXBlZGVmIHN0cnVjdCBfUERGX0NSWVBUT0lURU0gOiBwdWJsaWMgQ0ZYX09iamVjdCB7DQorICAgIEZYX0lOVDMyCW1fQ2lwaGVyOw0KKyAgICBGWF9JTlQzMgltX0tleUxlbjsNCisgICAgRlhfQk9PTAkJbV9iQ2hlY2tlZDsNCisgICAgQ1BERl9TdGFuZGFyZENyeXB0b0hhbmRsZXIqCW1fcENyeXB0b0hhbmRsZXI7DQorfSBQREZfQ1JZUFRPSVRFTTsNCitDUERGX1N0YW5kYXJkU2VjdXJpdHlIYW5kbGVyOjpDUERGX1N0YW5kYXJkU2VjdXJpdHlIYW5kbGVyKCkNCit7DQorICAgIG1fVmVyc2lvbiA9IDA7DQorICAgIG1fUmV2aXNpb24gPSAwOw0KKyAgICBtX3BQYXJzZXIgPSBOVUxMOw0KKyAgICBtX3BFbmNyeXB0RGljdCA9IE5VTEw7DQorICAgIG1fYk93bmVyID0gRkFMU0U7DQorICAgIG1fUGVybWlzc2lvbnMgPSAwOw0KKyAgICBtX0NpcGhlciA9IEZYQ0lQSEVSX05PTkU7DQorICAgIG1fS2V5TGVuID0gMDsNCit9DQorQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6fkNQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXIoKQ0KK3sNCit9DQorRlhfQk9PTCBDUERGX1N0YW5kYXJkU2VjdXJpdHlIYW5kbGVyOjpPbkluaXQoQ1BERl9QYXJzZXIqIHBQYXJzZXIsIENQREZfRGljdGlvbmFyeSogcEVuY3J5cHREaWN0KQ0KK3sNCisgICAgbV9wUGFyc2VyID0gcFBhcnNlcjsNCisgICAgaWYgKCFMb2FkRGljdChwRW5jcnlwdERpY3QpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fQ2lwaGVyID09IEZYQ0lQSEVSX05PTkUpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBDaGVja1NlY3VyaXR5KG1fS2V5TGVuKTsNCit9DQorRlhfQk9PTCBDUERGX1N0YW5kYXJkU2VjdXJpdHlIYW5kbGVyOjpDaGVja1NlY3VyaXR5KEZYX0lOVDMyIGtleV9sZW4pDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBwYXNzd29yZCA9IG1fcFBhcnNlci0+R2V0UGFzc3dvcmQoKTsNCisgICAgaWYgKENoZWNrUGFzc3dvcmQocGFzc3dvcmQsIHBhc3N3b3JkLkdldExlbmd0aCgpLCBUUlVFLCBtX0VuY3J5cHRLZXksIGtleV9sZW4pKSB7DQorICAgICAgICBpZiAocGFzc3dvcmQuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgaWYgKCFDaGVja1Bhc3N3b3JkKHBhc3N3b3JkLCBwYXNzd29yZC5HZXRMZW5ndGgoKSwgRkFMU0UsIG1fRW5jcnlwdEtleSwga2V5X2xlbikpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fYk93bmVyID0gVFJVRTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBDaGVja1Bhc3N3b3JkKHBhc3N3b3JkLCBwYXNzd29yZC5HZXRMZW5ndGgoKSwgRkFMU0UsIG1fRW5jcnlwdEtleSwga2V5X2xlbik7DQorfQ0KK0ZYX0RXT1JEIENQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXI6OkdldFBlcm1pc3Npb25zKCkNCit7DQorICAgIHJldHVybiBtX1Blcm1pc3Npb25zOw0KK30NCitzdGF0aWMgRlhfQk9PTCBfTG9hZENyeXB0SW5mbyhDUERGX0RpY3Rpb25hcnkqIHBFbmNyeXB0RGljdCwgRlhfQlNUUiBuYW1lLCBpbnQmIGNpcGhlciwgaW50JiBrZXlsZW4pDQorew0KKyAgICBpbnQgVmVyc2lvbiA9IHBFbmNyeXB0RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiViIpKTsNCisgICAgaW50IFJldmlzaW9uID0gcEVuY3J5cHREaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJSIikpOw0KKyAgICBjaXBoZXIgPSBGWENJUEhFUl9SQzQ7DQorICAgIGtleWxlbiA9IDA7DQorICAgIGlmIChWZXJzaW9uID49IDQpIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcENyeXB0RmlsdGVycyA9IHBFbmNyeXB0RGljdC0+R2V0RGljdChGWF9CU1RSQygiQ0YiKSk7DQorICAgICAgICBpZiAocENyeXB0RmlsdGVycyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG5hbWUgPT0gRlhfQlNUUkMoIklkZW50aXR5IikpIHsNCisgICAgICAgICAgICBjaXBoZXIgPSBGWENJUEhFUl9OT05FOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEZWZGaWx0ZXIgPSBwQ3J5cHRGaWx0ZXJzLT5HZXREaWN0KG5hbWUpOw0KKyAgICAgICAgICAgIGlmIChwRGVmRmlsdGVyID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgbktleUJpdHMgPSAwOw0KKyAgICAgICAgICAgIGlmIChWZXJzaW9uID09IDQpIHsNCisgICAgICAgICAgICAgICAgbktleUJpdHMgPSBwRGVmRmlsdGVyLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJMZW5ndGgiKSwgMCk7DQorICAgICAgICAgICAgICAgIGlmIChuS2V5Qml0cyA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBuS2V5Qml0cyA9IHBFbmNyeXB0RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiTGVuZ3RoIiksIDEyOCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBuS2V5Qml0cyA9IHBFbmNyeXB0RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiTGVuZ3RoIiksIDI1Nik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChuS2V5Qml0cyA8IDQwKSB7DQorICAgICAgICAgICAgICAgIG5LZXlCaXRzICo9IDg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGtleWxlbiA9IG5LZXlCaXRzIC8gODsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBjaXBoZXJfbmFtZSA9IHBEZWZGaWx0ZXItPkdldFN0cmluZyhGWF9CU1RSQygiQ0ZNIikpOw0KKyAgICAgICAgICAgIGlmIChjaXBoZXJfbmFtZSA9PSBGWF9CU1RSQygiQUVTVjIiKSB8fCBjaXBoZXJfbmFtZSA9PSBGWF9CU1RSQygiQUVTVjMiKSkgew0KKyAgICAgICAgICAgICAgICBjaXBoZXIgPSBGWENJUEhFUl9BRVM7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAga2V5bGVuID0gVmVyc2lvbiA+IDEgPyBwRW5jcnlwdERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIkxlbmd0aCIpLCA0MCkgLyA4IDogNTsNCisgICAgfQ0KKyAgICBpZiAoa2V5bGVuID4gMzIgfHwga2V5bGVuIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXI6OkxvYWREaWN0KENQREZfRGljdGlvbmFyeSogcEVuY3J5cHREaWN0KQ0KK3sNCisgICAgbV9wRW5jcnlwdERpY3QgPSBwRW5jcnlwdERpY3Q7DQorICAgIG1fYk93bmVyID0gRkFMU0U7DQorICAgIG1fVmVyc2lvbiA9IHBFbmNyeXB0RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiViIpKTsNCisgICAgbV9SZXZpc2lvbiA9IHBFbmNyeXB0RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiUiIpKTsNCisgICAgbV9QZXJtaXNzaW9ucyA9IHBFbmNyeXB0RGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiUCIpLCAtMSk7DQorICAgIGlmIChtX1ZlcnNpb24gPCA0KSB7DQorICAgICAgICByZXR1cm4gX0xvYWRDcnlwdEluZm8ocEVuY3J5cHREaWN0LCBDRlhfQnl0ZVN0cmluZygpLCBtX0NpcGhlciwgbV9LZXlMZW4pOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIHN0bWZfbmFtZSA9IHBFbmNyeXB0RGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJTdG1GIikpOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBzdHJmX25hbWUgPSBwRW5jcnlwdERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiU3RyRiIpKTsNCisgICAgaWYgKHN0bWZfbmFtZSAhPSBzdHJmX25hbWUpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoIV9Mb2FkQ3J5cHRJbmZvKHBFbmNyeXB0RGljdCwgc3RyZl9uYW1lLCBtX0NpcGhlciwgbV9LZXlMZW4pKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6TG9hZERpY3QoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIEZYX0RXT1JEIHR5cGUsIGludCYgY2lwaGVyLCBpbnQmIGtleV9sZW4pDQorew0KKyAgICBtX3BFbmNyeXB0RGljdCA9IHBFbmNyeXB0RGljdDsNCisgICAgbV9iT3duZXIgPSBGQUxTRTsNCisgICAgbV9WZXJzaW9uID0gcEVuY3J5cHREaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJWIikpOw0KKyAgICBtX1JldmlzaW9uID0gcEVuY3J5cHREaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJSIikpOw0KKyAgICBtX1Blcm1pc3Npb25zID0gcEVuY3J5cHREaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJQIiksIC0xKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyZl9uYW1lLCBzdG1mX25hbWU7DQorICAgIGlmIChtX1ZlcnNpb24gPj0gNCkgew0KKyAgICAgICAgc3RtZl9uYW1lID0gcEVuY3J5cHREaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlN0bUYiKSk7DQorICAgICAgICBzdHJmX25hbWUgPSBwRW5jcnlwdERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiU3RyRiIpKTsNCisgICAgICAgIGlmIChzdG1mX25hbWUgIT0gc3RyZl9uYW1lKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICghX0xvYWRDcnlwdEluZm8ocEVuY3J5cHREaWN0LCBzdHJmX25hbWUsIGNpcGhlciwga2V5X2xlbikpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX0NpcGhlciA9IGNpcGhlcjsNCisgICAgbV9LZXlMZW4gPSBrZXlfbGVuOw0KKyAgICByZXR1cm4gVFJVRTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6R2V0Q3J5cHRJbmZvKGludCYgY2lwaGVyLCBGWF9MUENCWVRFJiBidWZmZXIsIGludCYga2V5bGVuKQ0KK3sNCisgICAgY2lwaGVyID0gbV9DaXBoZXI7DQorICAgIGJ1ZmZlciA9IG1fRW5jcnlwdEtleTsNCisgICAga2V5bGVuID0gbV9LZXlMZW47DQorICAgIHJldHVybiBUUlVFOw0KK30NCisjZGVmaW5lIEZYX0dFVF8zMldPUkQobixiLGkpCQkJCQkJCQlcDQorICAgIHsJCQkJCQkJCQkJCQkJCVwNCisgICAgICAgIChuKSA9IChGWF9EV09SRCkoKCAoRlhfVUlOVDY0KSAoYilbKGkpXSA8PCAyNCApCQkJXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICggKEZYX1VJTlQ2NCkgKGIpWyhpKSArIDFdIDw8IDE2ICkJCQkJCVwNCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAoIChGWF9VSU5UNjQpIChiKVsoaSkgKyAyXSA8PCAgOCApCQkJCQlcDQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCAoRlhfVUlOVDY0KSAoYilbKGkpICsgM10gICAgICAgKSk7CQkJCQlcDQorICAgIH0NCitpbnQgQmlnT3JkZXI2NEJpdHNNb2QzKEZYX0xQQllURSBkYXRhKQ0KK3sNCisgICAgRlhfVUlOVDY0IHJldCA9IDA7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7DQorICAgICAgICBGWF9EV09SRCB2YWx1ZTsNCisgICAgICAgIEZYX0dFVF8zMldPUkQodmFsdWUsIGRhdGEsIDQgKiBpKTsNCisgICAgICAgIHJldCA8PD0gMzI7DQorICAgICAgICByZXQgfD0gdmFsdWU7DQorICAgICAgICByZXQgJT0gMzsNCisgICAgfQ0KKyAgICByZXR1cm4gKGludClyZXQ7DQorfQ0KK3ZvaWQgUmV2aXNpb242X0hhc2goRlhfTFBDQllURSBwYXNzd29yZCwgRlhfRFdPUkQgc2l6ZSwgRlhfTFBDQllURSBzYWx0LCBGWF9MUENCWVRFIHZlY3RvciwgRlhfTFBCWVRFIGhhc2gpDQorew0KKyAgICBpbnQgaUJsb2NrU2l6ZSA9IDMyOw0KKyAgICBGWF9CWVRFIHNoYVsxMjhdOw0KKyAgICBDUllQVF9TSEEyNTZTdGFydChzaGEpOw0KKyAgICBDUllQVF9TSEEyNTZVcGRhdGUoc2hhLCBwYXNzd29yZCwgc2l6ZSk7DQorICAgIENSWVBUX1NIQTI1NlVwZGF0ZShzaGEsIHNhbHQsIDgpOw0KKyAgICBpZiAodmVjdG9yKSB7DQorICAgICAgICBDUllQVF9TSEEyNTZVcGRhdGUoc2hhLCB2ZWN0b3IsIDQ4KTsNCisgICAgfQ0KKyAgICBGWF9CWVRFIGRpZ2VzdFszMl07DQorICAgIENSWVBUX1NIQTI1NkZpbmlzaChzaGEsIGRpZ2VzdCk7DQorICAgIENGWF9CeXRlVGV4dEJ1ZiBidWY7DQorICAgIEZYX0xQQllURSBpbnB1dCA9IGRpZ2VzdDsNCisgICAgRlhfTFBCWVRFIGtleSA9IGlucHV0Ow0KKyAgICBGWF9MUEJZVEUgaXYgPSBpbnB1dCArIDE2Ow0KKyAgICBGWF9MUEJZVEUgRSA9IGJ1Zi5HZXRCdWZmZXIoKTsNCisgICAgaW50IGlCdWZMZW4gPSBidWYuR2V0TGVuZ3RoKCk7DQorICAgIENGWF9CeXRlVGV4dEJ1ZiBpbnRlckRpZ2VzdDsNCisgICAgaW50IGkgPSAwOw0KKyAgICBGWF9MUEJZVEUgYWVzID0gRlhfQWxsb2MoRlhfQllURSwgMjA0OCk7DQorICAgIHdoaWxlIChpIDwgNjQgfHwgaSA8IEVbaUJ1ZkxlbiAtIDFdICArIDMyKSB7DQorICAgICAgICBpbnQgaVJvdW5kU2l6ZSA9IHNpemUgKyBpQmxvY2tTaXplOw0KKyAgICAgICAgaWYgKHZlY3Rvcikgew0KKyAgICAgICAgICAgIGlSb3VuZFNpemUgKz0gNDg7DQorICAgICAgICB9DQorICAgICAgICBpQnVmTGVuID0gaVJvdW5kU2l6ZSAqIDY0Ow0KKyAgICAgICAgYnVmLkVzdGltYXRlU2l6ZShpQnVmTGVuKTsNCisgICAgICAgIEUgPSBidWYuR2V0QnVmZmVyKCk7DQorICAgICAgICBDRlhfQnl0ZVRleHRCdWYgY29udGVudDsNCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgNjQ7ICsraikgew0KKyAgICAgICAgICAgIGNvbnRlbnQuQXBwZW5kQmxvY2socGFzc3dvcmQsIHNpemUpOw0KKyAgICAgICAgICAgIGNvbnRlbnQuQXBwZW5kQmxvY2soaW5wdXQsIGlCbG9ja1NpemUpOw0KKyAgICAgICAgICAgIGlmICh2ZWN0b3IpIHsNCisgICAgICAgICAgICAgICAgY29udGVudC5BcHBlbmRCbG9jayh2ZWN0b3IsIDQ4KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBDUllQVF9BRVNTZXRLZXkoYWVzLCAxNiwga2V5LCAxNiwgVFJVRSk7DQorICAgICAgICBDUllQVF9BRVNTZXRJVihhZXMsIGl2KTsNCisgICAgICAgIENSWVBUX0FFU0VuY3J5cHQoYWVzLCBFLCBjb250ZW50LkdldEJ1ZmZlcigpLCBpQnVmTGVuKTsNCisgICAgICAgIGludCBpSGFzaCA9IDA7DQorICAgICAgICBzd2l0Y2ggKEJpZ09yZGVyNjRCaXRzTW9kMyhFKSkgew0KKyAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgaUhhc2ggPSAwOw0KKyAgICAgICAgICAgICAgICBpQmxvY2tTaXplID0gMzI7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICAgICAgaUhhc2ggPSAxOw0KKyAgICAgICAgICAgICAgICBpQmxvY2tTaXplID0gNDg7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgIGlIYXNoID0gMjsNCisgICAgICAgICAgICAgICAgaUJsb2NrU2l6ZSA9IDY0Ow0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGludGVyRGlnZXN0LkVzdGltYXRlU2l6ZShpQmxvY2tTaXplKTsNCisgICAgICAgIGlucHV0ID0gaW50ZXJEaWdlc3QuR2V0QnVmZmVyKCk7DQorICAgICAgICBpZiAoaUhhc2ggPT0gMCkgew0KKyAgICAgICAgICAgIENSWVBUX1NIQTI1NkdlbmVyYXRlKEUsIGlCdWZMZW4sIGlucHV0KTsNCisgICAgICAgIH0gZWxzZSBpZiAoaUhhc2ggPT0gMSkgew0KKyAgICAgICAgICAgIENSWVBUX1NIQTM4NEdlbmVyYXRlKEUsIGlCdWZMZW4sIGlucHV0KTsNCisgICAgICAgIH0gZWxzZSBpZiAoaUhhc2ggPT0gMikgew0KKyAgICAgICAgICAgIENSWVBUX1NIQTUxMkdlbmVyYXRlKEUsIGlCdWZMZW4sIGlucHV0KTsNCisgICAgICAgIH0NCisgICAgICAgIGtleSA9IGlucHV0Ow0KKyAgICAgICAgaXYgPSBpbnB1dCArIDE2Ow0KKyAgICAgICAgKytpOw0KKyAgICB9DQorICAgIEZYX0ZyZWUoYWVzKTsNCisgICAgaWYgKGhhc2gpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKGhhc2gsIGlucHV0LCAzMik7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX1N0YW5kYXJkU2VjdXJpdHlIYW5kbGVyOjpBRVMyNTZfQ2hlY2tQYXNzd29yZChGWF9MUENCWVRFIHBhc3N3b3JkLCBGWF9EV09SRCBzaXplLA0KKyAgICAgICAgRlhfQk9PTCBiT3duZXIsIEZYX0xQQllURSBrZXkpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBva2V5ID0gbV9wRW5jcnlwdERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiTyIpKTsNCisgICAgaWYgKG9rZXkuR2V0TGVuZ3RoKCkgPCA0OCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIHVrZXkgPSBtX3BFbmNyeXB0RGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJVIikpOw0KKyAgICBpZiAodWtleS5HZXRMZW5ndGgoKSA8IDQ4KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfTFBDQllURSBwa2V5ID0gYk93bmVyID8gKEZYX0xQQ0JZVEUpb2tleSA6IChGWF9MUENCWVRFKXVrZXk7DQorICAgIEZYX0JZVEUgc2hhWzEyOF07DQorICAgIEZYX0JZVEUgZGlnZXN0WzMyXTsNCisgICAgaWYgKG1fUmV2aXNpb24gPj0gNikgew0KKyAgICAgICAgUmV2aXNpb242X0hhc2gocGFzc3dvcmQsIHNpemUsIChGWF9MUENCWVRFKXBrZXkgKyAzMiwgKGJPd25lciA/IChGWF9MUENCWVRFKXVrZXkgOiBOVUxMKSwgZGlnZXN0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIENSWVBUX1NIQTI1NlN0YXJ0KHNoYSk7DQorICAgICAgICBDUllQVF9TSEEyNTZVcGRhdGUoc2hhLCBwYXNzd29yZCwgc2l6ZSk7DQorICAgICAgICBDUllQVF9TSEEyNTZVcGRhdGUoc2hhLCBwa2V5ICsgMzIsIDgpOw0KKyAgICAgICAgaWYgKGJPd25lcikgew0KKyAgICAgICAgICAgIENSWVBUX1NIQTI1NlVwZGF0ZShzaGEsIHVrZXksIDQ4KTsNCisgICAgICAgIH0NCisgICAgICAgIENSWVBUX1NIQTI1NkZpbmlzaChzaGEsIGRpZ2VzdCk7DQorICAgIH0NCisgICAgaWYgKEZYU1lTX21lbWNtcDMyKGRpZ2VzdCwgcGtleSwgMzIpICE9IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoa2V5ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmIChtX1JldmlzaW9uID49IDYpIHsNCisgICAgICAgIFJldmlzaW9uNl9IYXNoKHBhc3N3b3JkLCBzaXplLCAoRlhfTFBDQllURSlwa2V5ICsgNDAsIChiT3duZXIgPyAoRlhfTFBDQllURSl1a2V5IDogTlVMTCksIGRpZ2VzdCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDUllQVF9TSEEyNTZTdGFydChzaGEpOw0KKyAgICAgICAgQ1JZUFRfU0hBMjU2VXBkYXRlKHNoYSwgcGFzc3dvcmQsIHNpemUpOw0KKyAgICAgICAgQ1JZUFRfU0hBMjU2VXBkYXRlKHNoYSwgcGtleSArIDQwLCA4KTsNCisgICAgICAgIGlmIChiT3duZXIpIHsNCisgICAgICAgICAgICBDUllQVF9TSEEyNTZVcGRhdGUoc2hhLCB1a2V5LCA0OCk7DQorICAgICAgICB9DQorICAgICAgICBDUllQVF9TSEEyNTZGaW5pc2goc2hhLCBkaWdlc3QpOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGVrZXkgPSBtX3BFbmNyeXB0RGljdC0+R2V0U3RyaW5nKGJPd25lciA/IEZYX0JTVFJDKCJPRSIpIDogRlhfQlNUUkMoIlVFIikpOw0KKyAgICBpZiAoZWtleS5HZXRMZW5ndGgoKSA8IDMyKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfQllURSogYWVzID0gRlhfQWxsb2MoRlhfQllURSwgMjA0OCk7DQorICAgIENSWVBUX0FFU1NldEtleShhZXMsIDE2LCBkaWdlc3QsIDMyLCBGQUxTRSk7DQorICAgIEZYX0JZVEUgaXZbMTZdOw0KKyAgICBGWFNZU19tZW1zZXQzMihpdiwgMCwgMTYpOw0KKyAgICBDUllQVF9BRVNTZXRJVihhZXMsIGl2KTsNCisgICAgQ1JZUFRfQUVTRGVjcnlwdChhZXMsIGtleSwgZWtleSwgMzIpOw0KKyAgICBDUllQVF9BRVNTZXRLZXkoYWVzLCAxNiwga2V5LCAzMiwgRkFMU0UpOw0KKyAgICBDUllQVF9BRVNTZXRJVihhZXMsIGl2KTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgcGVybXMgPSBtX3BFbmNyeXB0RGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJQZXJtcyIpKTsNCisgICAgaWYgKHBlcm1zLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0JZVEUgcGVybXNfYnVmWzE2XTsNCisgICAgRlhTWVNfbWVtc2V0MzIocGVybXNfYnVmLCAwLCBzaXplb2YocGVybXNfYnVmKSk7DQorICAgIEZYX0RXT1JEIGNvcHlfbGVuID0gc2l6ZW9mKHBlcm1zX2J1Zik7DQorICAgIGlmIChjb3B5X2xlbiA+IChGWF9EV09SRClwZXJtcy5HZXRMZW5ndGgoKSkgew0KKyAgICAgICAgY29weV9sZW4gPSBwZXJtcy5HZXRMZW5ndGgoKTsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1jcHkzMihwZXJtc19idWYsIChGWF9MUENCWVRFKXBlcm1zLCBjb3B5X2xlbik7DQorICAgIEZYX0JZVEUgYnVmWzE2XTsNCisgICAgQ1JZUFRfQUVTRGVjcnlwdChhZXMsIGJ1ZiwgcGVybXNfYnVmLCAxNik7DQorICAgIEZYX0ZyZWUoYWVzKTsNCisgICAgaWYgKGJ1Zls5XSAhPSAnYScgfHwgYnVmWzEwXSAhPSAnZCcgfHwgYnVmWzExXSAhPSAnYicpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoRlhEV09SRF9HRVRfTFNCRklSU1QoYnVmKSAhPSBtX1Blcm1pc3Npb25zKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKChidWZbOF0gPT0gJ1QnICYmICFJc01ldGFkYXRhRW5jcnlwdGVkKCkpIHx8IChidWZbOF0gPT0gJ0YnICYmIElzTWV0YWRhdGFFbmNyeXB0ZWQoKSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQoraW50IENQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXI6OkNoZWNrUGFzc3dvcmQoRlhfTFBDQllURSBwYXNzd29yZCwgRlhfRFdPUkQgcGFzc19zaXplLCBGWF9CT09MIGJPd25lciwgRlhfTFBCWVRFIGtleSkNCit7DQorICAgIHJldHVybiBDaGVja1Bhc3N3b3JkKHBhc3N3b3JkLCBwYXNzX3NpemUsIGJPd25lciwga2V5LCBtX0tleUxlbik7DQorfQ0KK2ludCBDUERGX1N0YW5kYXJkU2VjdXJpdHlIYW5kbGVyOjpDaGVja1Bhc3N3b3JkKEZYX0xQQ0JZVEUgcGFzc3dvcmQsIEZYX0RXT1JEIHNpemUsIEZYX0JPT0wgYk93bmVyLCBGWF9MUEJZVEUga2V5LCBGWF9JTlQzMiBrZXlfbGVuKQ0KK3sNCisgICAgaWYgKG1fUmV2aXNpb24gPj0gNSkgew0KKyAgICAgICAgcmV0dXJuIEFFUzI1Nl9DaGVja1Bhc3N3b3JkKHBhc3N3b3JkLCBzaXplLCBiT3duZXIsIGtleSk7DQorICAgIH0NCisgICAgRlhfQllURSBrZXlidWZbMzJdOw0KKyAgICBpZiAoa2V5ID09IE5VTEwpIHsNCisgICAgICAgIGtleSA9IGtleWJ1ZjsNCisgICAgfQ0KKyAgICBpZiAoYk93bmVyKSB7DQorICAgICAgICByZXR1cm4gQ2hlY2tPd25lclBhc3N3b3JkKHBhc3N3b3JkLCBzaXplLCBrZXksIGtleV9sZW4pOw0KKyAgICB9DQorICAgIHJldHVybiBDaGVja1VzZXJQYXNzd29yZChwYXNzd29yZCwgc2l6ZSwgRkFMU0UsIGtleSwga2V5X2xlbikgfHwgQ2hlY2tVc2VyUGFzc3dvcmQocGFzc3dvcmQsIHNpemUsIFRSVUUsIGtleSwga2V5X2xlbik7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6Q2hlY2tVc2VyUGFzc3dvcmQoRlhfTFBDQllURSBwYXNzd29yZCwgRlhfRFdPUkQgcGFzc19zaXplLA0KKyAgICAgICAgRlhfQk9PTCBiSWdub3JlRW5jcnlwdE1ldGEsIEZYX0xQQllURSBrZXksIEZYX0lOVDMyIGtleV9sZW4pDQorew0KKyAgICBDYWxjRW5jcnlwdEtleShtX3BFbmNyeXB0RGljdCwgcGFzc3dvcmQsIHBhc3Nfc2l6ZSwga2V5LCBrZXlfbGVuLCBiSWdub3JlRW5jcnlwdE1ldGEsDQorICAgICAgICAgICAgICAgICAgIG1fcFBhcnNlci0+R2V0SURBcnJheSgpKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgdWtleSA9IG1fcEVuY3J5cHREaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlUiKSk7DQorICAgIGlmICh1a2V5LkdldExlbmd0aCgpIDwgMTYpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9CWVRFIHVrZXlidWZbMzJdOw0KKyAgICBpZiAobV9SZXZpc2lvbiA9PSAyKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMih1a2V5YnVmLCBkZWZwYXNzY29kZSwgMzIpOw0KKyAgICAgICAgQ1JZUFRfQXJjRm91ckNyeXB0QmxvY2sodWtleWJ1ZiwgMzIsIGtleSwga2V5X2xlbik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWF9CWVRFIHRlc3RbMzJdLCB0bXBrZXlbMzJdOw0KKyAgICAgICAgRlhfRFdPUkQgY29weV9sZW4gPSBzaXplb2YodGVzdCk7DQorICAgICAgICBpZiAoY29weV9sZW4gPiAoRlhfRFdPUkQpdWtleS5HZXRMZW5ndGgoKSkgew0KKyAgICAgICAgICAgIGNvcHlfbGVuID0gdWtleS5HZXRMZW5ndGgoKTsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbXNldDMyKHRlc3QsIDAsIHNpemVvZih0ZXN0KSk7DQorICAgICAgICBGWFNZU19tZW1jcHkzMih0ZXN0LCAoRlhfTFBDU1RSKXVrZXksIGNvcHlfbGVuKTsNCisgICAgICAgIGZvciAoaW50IGkgPSAxOTsgaSA+PSAwOyBpIC0tKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBrZXlfbGVuOyBqICsrKSB7DQorICAgICAgICAgICAgICAgIHRtcGtleVtqXSA9IGtleVtqXSBeIGk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENSWVBUX0FyY0ZvdXJDcnlwdEJsb2NrKHRlc3QsIDMyLCB0bXBrZXksIGtleV9sZW4pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBtZDVbMTAwXTsNCisgICAgICAgIENSWVBUX01ENVN0YXJ0KG1kNSk7DQorICAgICAgICBDUllQVF9NRDVVcGRhdGUobWQ1LCBkZWZwYXNzY29kZSwgMzIpOw0KKyAgICAgICAgQ1BERl9BcnJheSogcElkQXJyYXkgPSBtX3BQYXJzZXItPkdldElEQXJyYXkoKTsNCisgICAgICAgIGlmIChwSWRBcnJheSkgew0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGlkID0gcElkQXJyYXktPkdldFN0cmluZygwKTsNCisgICAgICAgICAgICBDUllQVF9NRDVVcGRhdGUobWQ1LCAoRlhfTFBCWVRFKShGWF9MUENTVFIpaWQsIGlkLkdldExlbmd0aCgpKTsNCisgICAgICAgIH0NCisgICAgICAgIENSWVBUX01ENUZpbmlzaChtZDUsIHVrZXlidWYpOw0KKyAgICAgICAgcmV0dXJuIEZYU1lTX21lbWNtcDMyKHRlc3QsIHVrZXlidWYsIDE2KSA9PSAwOw0KKyAgICB9DQorICAgIGlmIChGWFNZU19tZW1jbXAzMigoRlhfTFBWT0lEKShGWF9MUENTVFIpdWtleSwgdWtleWJ1ZiwgMTYpID09IDApIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6R2V0VXNlclBhc3N3b3JkKEZYX0xQQ0JZVEUgb3duZXJfcGFzcywgRlhfRFdPUkQgcGFzc19zaXplKQ0KK3sNCisgICAgcmV0dXJuIEdldFVzZXJQYXNzd29yZChvd25lcl9wYXNzLCBwYXNzX3NpemUsIG1fS2V5TGVuKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6R2V0VXNlclBhc3N3b3JkKEZYX0xQQ0JZVEUgb3duZXJfcGFzcywgRlhfRFdPUkQgcGFzc19zaXplLCBGWF9JTlQzMiBrZXlfbGVuKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgb2tleSA9IG1fcEVuY3J5cHREaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIk8iKSk7DQorICAgIEZYX0JZVEUgcGFzc2NvZGVbMzJdOw0KKyAgICBGWF9EV09SRCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkgKyspIHsNCisgICAgICAgIHBhc3Njb2RlW2ldID0gaSA8IHBhc3Nfc2l6ZSA/IG93bmVyX3Bhc3NbaV0gOiBkZWZwYXNzY29kZVtpIC0gcGFzc19zaXplXTsNCisgICAgfQ0KKyAgICBGWF9CWVRFIGRpZ2VzdFsxNl07DQorICAgIENSWVBUX01ENUdlbmVyYXRlKHBhc3Njb2RlLCAzMiwgZGlnZXN0KTsNCisgICAgaWYgKG1fUmV2aXNpb24gPj0gMykgew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgaSArKykgew0KKyAgICAgICAgICAgIENSWVBUX01ENUdlbmVyYXRlKGRpZ2VzdCwgMTYsIGRpZ2VzdCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfQllURSBlbmNrZXlbMzJdOw0KKyAgICBGWFNZU19tZW1zZXQzMihlbmNrZXksIDAsIHNpemVvZihlbmNrZXkpKTsNCisgICAgRlhfRFdPUkQgY29weV9sZW4gPSBrZXlfbGVuOw0KKyAgICBpZiAoY29weV9sZW4gPiBzaXplb2YoZGlnZXN0KSkgew0KKyAgICAgICAgY29weV9sZW4gPSBzaXplb2YoZGlnZXN0KTsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1jcHkzMihlbmNrZXksIGRpZ2VzdCwgY29weV9sZW4pOw0KKyAgICBpbnQgb2tleWxlbiA9IG9rZXkuR2V0TGVuZ3RoKCk7DQorICAgIGlmIChva2V5bGVuID4gMzIpIHsNCisgICAgICAgIG9rZXlsZW4gPSAzMjsNCisgICAgfQ0KKyAgICBGWF9CWVRFIG9rZXlidWZbNjRdOw0KKyAgICBGWFNZU19tZW1jcHkzMihva2V5YnVmLCAoRlhfTFBDU1RSKW9rZXksIG9rZXlsZW4pOw0KKyAgICBpZiAobV9SZXZpc2lvbiA9PSAyKSB7DQorICAgICAgICBDUllQVF9BcmNGb3VyQ3J5cHRCbG9jayhva2V5YnVmLCBva2V5bGVuLCBlbmNrZXksIGtleV9sZW4pOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDE5OyBpID49IDA7IGkgLS0pIHsNCisgICAgICAgICAgICBGWF9CWVRFIHRlbXBrZXlbMzJdOw0KKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV9LZXlMZW47IGogKyspIHsNCisgICAgICAgICAgICAgICAgdGVtcGtleVtqXSA9IGVuY2tleVtqXSBeIGk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENSWVBUX0FyY0ZvdXJDcnlwdEJsb2NrKG9rZXlidWYsIG9rZXlsZW4sIHRlbXBrZXksIGtleV9sZW4pOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGludCBsZW4gPSAzMjsNCisgICAgd2hpbGUgKGxlbiAmJiBkZWZwYXNzY29kZVtsZW4gLSAxXSA9PSBva2V5YnVmW2xlbiAtIDFdKSB7DQorICAgICAgICBsZW4gLS07DQorICAgIH0NCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKG9rZXlidWYsIGxlbik7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6Q2hlY2tPd25lclBhc3N3b3JkKEZYX0xQQ0JZVEUgcGFzc3dvcmQsIEZYX0RXT1JEIHBhc3Nfc2l6ZSwNCisgICAgICAgIEZYX0xQQllURSBrZXksIEZYX0lOVDMyIGtleV9sZW4pDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyB1c2VyX3Bhc3MgPSBHZXRVc2VyUGFzc3dvcmQocGFzc3dvcmQsIHBhc3Nfc2l6ZSwga2V5X2xlbik7DQorICAgIGlmIChDaGVja1VzZXJQYXNzd29yZCh1c2VyX3Bhc3MsIHVzZXJfcGFzcy5HZXRMZW5ndGgoKSwgRkFMU0UsIGtleSwga2V5X2xlbikpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBDaGVja1VzZXJQYXNzd29yZCh1c2VyX3Bhc3MsIHVzZXJfcGFzcy5HZXRMZW5ndGgoKSwgVFJVRSwga2V5LCBrZXlfbGVuKTsNCit9DQorRlhfQk9PTCBDUERGX1N0YW5kYXJkU2VjdXJpdHlIYW5kbGVyOjpJc01ldGFkYXRhRW5jcnlwdGVkKCkNCit7DQorICAgIHJldHVybiBtX3BFbmNyeXB0RGljdC0+R2V0Qm9vbGVhbihGWF9CU1RSQygiRW5jcnlwdE1ldGFkYXRhIiksIFRSVUUpOw0KK30NCitDUERGX1NlY3VyaXR5SGFuZGxlciogRlBERl9DcmVhdGVTdGFuZGFyZFNlY3VyaXR5SGFuZGxlcigpDQorew0KKyAgICByZXR1cm4gRlhfTkVXIENQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXI7DQorfQ0KK3ZvaWQgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6T25DcmVhdGUoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIENQREZfQXJyYXkqIHBJZEFycmF5LA0KKyAgICAgICAgRlhfTFBDQllURSB1c2VyX3Bhc3MsIEZYX0RXT1JEIHVzZXJfc2l6ZSwNCisgICAgICAgIEZYX0xQQ0JZVEUgb3duZXJfcGFzcywgRlhfRFdPUkQgb3duZXJfc2l6ZSwgRlhfQk9PTCBiRGVmYXVsdCwgRlhfRFdPUkQgdHlwZSkNCit7DQorICAgIGludCBjaXBoZXIgPSAwLCBrZXlfbGVuID0gMDsNCisgICAgaWYgKCFMb2FkRGljdChwRW5jcnlwdERpY3QsIHR5cGUsIGNpcGhlciwga2V5X2xlbikpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoYkRlZmF1bHQgJiYgKG93bmVyX3Bhc3MgPT0gTlVMTCB8fCBvd25lcl9zaXplID09IDApKSB7DQorICAgICAgICBvd25lcl9wYXNzID0gdXNlcl9wYXNzOw0KKyAgICAgICAgb3duZXJfc2l6ZSA9IHVzZXJfc2l6ZTsNCisgICAgfQ0KKyAgICBpZiAobV9SZXZpc2lvbiA+PSA1KSB7DQorICAgICAgICBpbnQgdCA9IChpbnQpdGltZShOVUxMKTsNCisgICAgICAgIEZYX0JZVEUgc2hhWzEyOF07DQorICAgICAgICBDUllQVF9TSEEyNTZTdGFydChzaGEpOw0KKyAgICAgICAgQ1JZUFRfU0hBMjU2VXBkYXRlKHNoYSwgKEZYX0JZVEUqKSZ0LCBzaXplb2YgdCk7DQorICAgICAgICBDUllQVF9TSEEyNTZVcGRhdGUoc2hhLCBtX0VuY3J5cHRLZXksIDMyKTsNCisgICAgICAgIENSWVBUX1NIQTI1NlVwZGF0ZShzaGEsIChGWF9CWVRFKikidGhlcmUiLCA1KTsNCisgICAgICAgIENSWVBUX1NIQTI1NkZpbmlzaChzaGEsIG1fRW5jcnlwdEtleSk7DQorICAgICAgICBBRVMyNTZfU2V0UGFzc3dvcmQocEVuY3J5cHREaWN0LCB1c2VyX3Bhc3MsIHVzZXJfc2l6ZSwgRkFMU0UsIG1fRW5jcnlwdEtleSk7DQorICAgICAgICBpZiAoYkRlZmF1bHQpIHsNCisgICAgICAgICAgICBBRVMyNTZfU2V0UGFzc3dvcmQocEVuY3J5cHREaWN0LCBvd25lcl9wYXNzLCBvd25lcl9zaXplLCBUUlVFLCBtX0VuY3J5cHRLZXkpOw0KKyAgICAgICAgICAgIEFFUzI1Nl9TZXRQZXJtcyhwRW5jcnlwdERpY3QsIG1fUGVybWlzc2lvbnMsIHBFbmNyeXB0RGljdC0+R2V0Qm9vbGVhbihGWF9CU1RSQygiRW5jcnlwdE1ldGFkYXRhIiksIFRSVUUpLCBtX0VuY3J5cHRLZXkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChiRGVmYXVsdCkgew0KKyAgICAgICAgRlhfQllURSBwYXNzY29kZVszMl07DQorICAgICAgICBGWF9EV09SRCBpOw0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDMyOyBpICsrKSB7DQorICAgICAgICAgICAgcGFzc2NvZGVbaV0gPSBpIDwgb3duZXJfc2l6ZSA/IG93bmVyX3Bhc3NbaV0gOiBkZWZwYXNzY29kZVtpIC0gb3duZXJfc2l6ZV07DQorICAgICAgICB9DQorICAgICAgICBGWF9CWVRFIGRpZ2VzdFsxNl07DQorICAgICAgICBDUllQVF9NRDVHZW5lcmF0ZShwYXNzY29kZSwgMzIsIGRpZ2VzdCk7DQorICAgICAgICBpZiAobV9SZXZpc2lvbiA+PSAzKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgaSArKykgew0KKyAgICAgICAgICAgICAgICBDUllQVF9NRDVHZW5lcmF0ZShkaWdlc3QsIDE2LCBkaWdlc3QpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgZW5ja2V5WzMyXTsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKGVuY2tleSwgZGlnZXN0LCBrZXlfbGVuKTsNCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSArKykgew0KKyAgICAgICAgICAgIHBhc3Njb2RlW2ldID0gaSA8IHVzZXJfc2l6ZSA/IHVzZXJfcGFzc1tpXSA6IGRlZnBhc3Njb2RlW2kgLSB1c2VyX3NpemVdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1JZUFRfQXJjRm91ckNyeXB0QmxvY2socGFzc2NvZGUsIDMyLCBlbmNrZXksIGtleV9sZW4pOw0KKyAgICAgICAgRlhfQllURSB0ZW1wa2V5WzMyXTsNCisgICAgICAgIGlmIChtX1JldmlzaW9uID49IDMpIHsNCisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IDE5OyBpICsrKSB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwga2V5X2xlbjsgaiArKykgew0KKyAgICAgICAgICAgICAgICAgICAgdGVtcGtleVtqXSA9IGVuY2tleVtqXSBeIChGWF9CWVRFKWk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ1JZUFRfQXJjRm91ckNyeXB0QmxvY2socGFzc2NvZGUsIDMyLCB0ZW1wa2V5LCBrZXlfbGVuKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBwRW5jcnlwdERpY3QtPlNldEF0U3RyaW5nKEZYX0JTVFJDKCJPIiksIENGWF9CeXRlU3RyaW5nKHBhc3Njb2RlLCAzMikpOw0KKyAgICB9DQorICAgIENhbGNFbmNyeXB0S2V5KG1fcEVuY3J5cHREaWN0LCAoRlhfTFBCWVRFKXVzZXJfcGFzcywgdXNlcl9zaXplLCBtX0VuY3J5cHRLZXksIGtleV9sZW4sIEZBTFNFLCBwSWRBcnJheSk7DQorICAgIGlmIChtX1JldmlzaW9uIDwgMykgew0KKyAgICAgICAgRlhfQllURSB0ZW1wYnVmWzMyXTsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKHRlbXBidWYsIGRlZnBhc3Njb2RlLCAzMik7DQorICAgICAgICBDUllQVF9BcmNGb3VyQ3J5cHRCbG9jayh0ZW1wYnVmLCAzMiwgbV9FbmNyeXB0S2V5LCBrZXlfbGVuKTsNCisgICAgICAgIHBFbmNyeXB0RGljdC0+U2V0QXRTdHJpbmcoRlhfQlNUUkMoIlUiKSwgQ0ZYX0J5dGVTdHJpbmcodGVtcGJ1ZiwgMzIpKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX0JZVEUgbWQ1WzEwMF07DQorICAgICAgICBDUllQVF9NRDVTdGFydChtZDUpOw0KKyAgICAgICAgQ1JZUFRfTUQ1VXBkYXRlKG1kNSwgZGVmcGFzc2NvZGUsIDMyKTsNCisgICAgICAgIGlmIChwSWRBcnJheSkgew0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGlkID0gcElkQXJyYXktPkdldFN0cmluZygwKTsNCisgICAgICAgICAgICBDUllQVF9NRDVVcGRhdGUobWQ1LCAoRlhfTFBCWVRFKShGWF9MUENTVFIpaWQsIGlkLkdldExlbmd0aCgpKTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgZGlnZXN0WzMyXTsNCisgICAgICAgIENSWVBUX01ENUZpbmlzaChtZDUsIGRpZ2VzdCk7DQorICAgICAgICBDUllQVF9BcmNGb3VyQ3J5cHRCbG9jayhkaWdlc3QsIDE2LCBtX0VuY3J5cHRLZXksIGtleV9sZW4pOw0KKyAgICAgICAgRlhfQllURSB0ZW1wa2V5WzMyXTsNCisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDE5OyBpICsrKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBrZXlfbGVuOyBqICsrKSB7DQorICAgICAgICAgICAgICAgIHRlbXBrZXlbal0gPSBtX0VuY3J5cHRLZXlbal0gXiAoRlhfQllURSlpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBDUllQVF9BcmNGb3VyQ3J5cHRCbG9jayhkaWdlc3QsIDE2LCB0ZW1wa2V5LCBrZXlfbGVuKTsNCisgICAgICAgIH0NCisgICAgICAgIENSWVBUX01ENUdlbmVyYXRlKGRpZ2VzdCwgMTYsIGRpZ2VzdCArIDE2KTsNCisgICAgICAgIHBFbmNyeXB0RGljdC0+U2V0QXRTdHJpbmcoRlhfQlNUUkMoIlUiKSwgQ0ZYX0J5dGVTdHJpbmcoZGlnZXN0LCAzMikpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9TdGFuZGFyZFNlY3VyaXR5SGFuZGxlcjo6T25DcmVhdGUoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIENQREZfQXJyYXkqIHBJZEFycmF5LA0KKyAgICAgICAgRlhfTFBDQllURSB1c2VyX3Bhc3MsIEZYX0RXT1JEIHVzZXJfc2l6ZSwNCisgICAgICAgIEZYX0xQQ0JZVEUgb3duZXJfcGFzcywgRlhfRFdPUkQgb3duZXJfc2l6ZSwgRlhfRFdPUkQgdHlwZSkNCit7DQorICAgIE9uQ3JlYXRlKHBFbmNyeXB0RGljdCwgcElkQXJyYXksIHVzZXJfcGFzcywgdXNlcl9zaXplLCBvd25lcl9wYXNzLCBvd25lcl9zaXplLCBUUlVFLCB0eXBlKTsNCit9DQordm9pZCBDUERGX1N0YW5kYXJkU2VjdXJpdHlIYW5kbGVyOjpPbkNyZWF0ZShDUERGX0RpY3Rpb25hcnkqIHBFbmNyeXB0RGljdCwgQ1BERl9BcnJheSogcElkQXJyYXksIEZYX0xQQ0JZVEUgdXNlcl9wYXNzLCBGWF9EV09SRCB1c2VyX3NpemUsIEZYX0RXT1JEIHR5cGUpDQorew0KKyAgICBPbkNyZWF0ZShwRW5jcnlwdERpY3QsIHBJZEFycmF5LCB1c2VyX3Bhc3MsIHVzZXJfc2l6ZSwgTlVMTCwgMCwgRkFMU0UsIHR5cGUpOw0KK30NCit2b2lkIENQREZfU3RhbmRhcmRTZWN1cml0eUhhbmRsZXI6OkFFUzI1Nl9TZXRQYXNzd29yZChDUERGX0RpY3Rpb25hcnkqIHBFbmNyeXB0RGljdCwgRlhfTFBDQllURSBwYXNzd29yZCwgRlhfRFdPUkQgc2l6ZSwgRlhfQk9PTCBiT3duZXIsIEZYX0xQQ0JZVEUga2V5KQ0KK3sNCisgICAgRlhfQllURSBzaGFbMTI4XTsNCisgICAgQ1JZUFRfU0hBMVN0YXJ0KHNoYSk7DQorICAgIENSWVBUX1NIQTFVcGRhdGUoc2hhLCBrZXksIDMyKTsNCisgICAgQ1JZUFRfU0hBMVVwZGF0ZShzaGEsIChGWF9CWVRFKikiaGVsbG8iLCA1KTsNCisgICAgRlhfQllURSBkaWdlc3RbMjBdOw0KKyAgICBDUllQVF9TSEExRmluaXNoKHNoYSwgZGlnZXN0KTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgdWtleSA9IHBFbmNyeXB0RGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJVIikpOw0KKyAgICBGWF9CWVRFIGRpZ2VzdDFbNDhdOw0KKyAgICBpZiAobV9SZXZpc2lvbiA+PSA2KSB7DQorICAgICAgICBSZXZpc2lvbjZfSGFzaChwYXNzd29yZCwgc2l6ZSwgZGlnZXN0LCAoYk93bmVyID8gKEZYX0xQQ0JZVEUpdWtleSA6IE5VTEwpLCBkaWdlc3QxKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIENSWVBUX1NIQTI1NlN0YXJ0KHNoYSk7DQorICAgICAgICBDUllQVF9TSEEyNTZVcGRhdGUoc2hhLCBwYXNzd29yZCwgc2l6ZSk7DQorICAgICAgICBDUllQVF9TSEEyNTZVcGRhdGUoc2hhLCBkaWdlc3QsIDgpOw0KKyAgICAgICAgaWYgKGJPd25lcikgew0KKyAgICAgICAgICAgIENSWVBUX1NIQTI1NlVwZGF0ZShzaGEsIHVrZXksIHVrZXkuR2V0TGVuZ3RoKCkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1JZUFRfU0hBMjU2RmluaXNoKHNoYSwgZGlnZXN0MSk7DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIoZGlnZXN0MSArIDMyLCBkaWdlc3QsIDE2KTsNCisgICAgcEVuY3J5cHREaWN0LT5TZXRBdFN0cmluZyhiT3duZXIgPyBGWF9CU1RSQygiTyIpIDogRlhfQlNUUkMoIlUiKSwgQ0ZYX0J5dGVTdHJpbmcoZGlnZXN0MSwgNDgpKTsNCisgICAgaWYgKG1fUmV2aXNpb24gPj0gNikgew0KKyAgICAgICAgUmV2aXNpb242X0hhc2gocGFzc3dvcmQsIHNpemUsIGRpZ2VzdCArIDgsIChiT3duZXIgPyAoRlhfTFBDQllURSl1a2V5IDogTlVMTCksIGRpZ2VzdDEpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ1JZUFRfU0hBMjU2U3RhcnQoc2hhKTsNCisgICAgICAgIENSWVBUX1NIQTI1NlVwZGF0ZShzaGEsIHBhc3N3b3JkLCBzaXplKTsNCisgICAgICAgIENSWVBUX1NIQTI1NlVwZGF0ZShzaGEsIGRpZ2VzdCArIDgsIDgpOw0KKyAgICAgICAgaWYgKGJPd25lcikgew0KKyAgICAgICAgICAgIENSWVBUX1NIQTI1NlVwZGF0ZShzaGEsIHVrZXksIHVrZXkuR2V0TGVuZ3RoKCkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1JZUFRfU0hBMjU2RmluaXNoKHNoYSwgZGlnZXN0MSk7DQorICAgIH0NCisgICAgRlhfQllURSogYWVzID0gRlhfQWxsb2MoRlhfQllURSwgMjA0OCk7DQorICAgIENSWVBUX0FFU1NldEtleShhZXMsIDE2LCBkaWdlc3QxLCAzMiwgVFJVRSk7DQorICAgIEZYX0JZVEUgaXZbMTZdOw0KKyAgICBGWFNZU19tZW1zZXQzMihpdiwgMCwgMTYpOw0KKyAgICBDUllQVF9BRVNTZXRJVihhZXMsIGl2KTsNCisgICAgQ1JZUFRfQUVTRW5jcnlwdChhZXMsIGRpZ2VzdDEsIGtleSwgMzIpOw0KKyAgICBGWF9GcmVlKGFlcyk7DQorICAgIHBFbmNyeXB0RGljdC0+U2V0QXRTdHJpbmcoYk93bmVyID8gRlhfQlNUUkMoIk9FIikgOiBGWF9CU1RSQygiVUUiKSwgQ0ZYX0J5dGVTdHJpbmcoZGlnZXN0MSwgMzIpKTsNCit9DQordm9pZCBDUERGX1N0YW5kYXJkU2VjdXJpdHlIYW5kbGVyOjpBRVMyNTZfU2V0UGVybXMoQ1BERl9EaWN0aW9uYXJ5KiBwRW5jcnlwdERpY3QsIEZYX0RXT1JEIHBlcm1pc3Npb25zLA0KKyAgICAgICAgRlhfQk9PTCBiRW5jcnlwdE1ldGFkYXRhLCBGWF9MUENCWVRFIGtleSkNCit7DQorICAgIEZYX0JZVEUgYnVmWzE2XTsNCisgICAgYnVmWzBdID0gKEZYX0JZVEUpcGVybWlzc2lvbnM7DQorICAgIGJ1ZlsxXSA9IChGWF9CWVRFKShwZXJtaXNzaW9ucyA+PiA4KTsNCisgICAgYnVmWzJdID0gKEZYX0JZVEUpKHBlcm1pc3Npb25zID4+IDE2KTsNCisgICAgYnVmWzNdID0gKEZYX0JZVEUpKHBlcm1pc3Npb25zID4+IDI0KTsNCisgICAgYnVmWzRdID0gMHhmZjsNCisgICAgYnVmWzVdID0gMHhmZjsNCisgICAgYnVmWzZdID0gMHhmZjsNCisgICAgYnVmWzddID0gMHhmZjsNCisgICAgYnVmWzhdID0gYkVuY3J5cHRNZXRhZGF0YSA/ICdUJyA6ICdGJzsNCisgICAgYnVmWzldID0gJ2EnOw0KKyAgICBidWZbMTBdID0gJ2QnOw0KKyAgICBidWZbMTFdID0gJ2InOw0KKyAgICBGWF9CWVRFKiBhZXMgPSBGWF9BbGxvYyhGWF9CWVRFLCAyMDQ4KTsNCisgICAgQ1JZUFRfQUVTU2V0S2V5KGFlcywgMTYsIGtleSwgMzIsIFRSVUUpOw0KKyAgICBGWF9CWVRFIGl2WzE2XSwgYnVmMVsxNl07DQorICAgIEZYU1lTX21lbXNldDMyKGl2LCAwLCAxNik7DQorICAgIENSWVBUX0FFU1NldElWKGFlcywgaXYpOw0KKyAgICBDUllQVF9BRVNFbmNyeXB0KGFlcywgYnVmMSwgYnVmLCAxNik7DQorICAgIEZYX0ZyZWUoYWVzKTsNCisgICAgcEVuY3J5cHREaWN0LT5TZXRBdFN0cmluZyhGWF9CU1RSQygiUGVybXMiKSwgQ0ZYX0J5dGVTdHJpbmcoYnVmMSwgMTYpKTsNCit9DQordm9pZCBDUERGX1N0YW5kYXJkQ3J5cHRvSGFuZGxlcjo6Q3J5cHRCbG9jayhGWF9CT09MIGJFbmNyeXB0LCBGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIGdlbm51bSwgRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwNCisgICAgICAgIEZYX0xQQllURSBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkNCit7DQorICAgIGlmIChtX0NpcGhlciA9PSBGWENJUEhFUl9OT05FKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X2J1Ziwgc3JjX2J1Ziwgc3JjX3NpemUpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0JZVEUgcmVhbGtleVsxNl07DQorICAgIGludCByZWFsa2V5bGVuID0gMTY7DQorICAgIGlmIChtX0NpcGhlciAhPSBGWENJUEhFUl9BRVMgfHwgbV9LZXlMZW4gIT0gMzIpIHsNCisgICAgICAgIEZYX0JZVEUga2V5MVszMl07DQorICAgICAgICBGWFNZU19tZW1jcHkzMihrZXkxLCBtX0VuY3J5cHRLZXksIG1fS2V5TGVuKTsNCisgICAgICAgIGtleTFbbV9LZXlMZW4gKyAwXSA9IChGWF9CWVRFKW9iam51bTsNCisgICAgICAgIGtleTFbbV9LZXlMZW4gKyAxXSA9IChGWF9CWVRFKShvYmpudW0gPj4gOCk7DQorICAgICAgICBrZXkxW21fS2V5TGVuICsgMl0gPSAoRlhfQllURSkob2JqbnVtID4+IDE2KTsNCisgICAgICAgIGtleTFbbV9LZXlMZW4gKyAzXSA9IChGWF9CWVRFKWdlbm51bTsNCisgICAgICAgIGtleTFbbV9LZXlMZW4gKyA0XSA9IChGWF9CWVRFKShnZW5udW0gPj4gOCk7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihrZXkxICsgbV9LZXlMZW4sICZvYmpudW0sIDMpOw0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoa2V5MSArIG1fS2V5TGVuICsgMywgJmdlbm51bSwgMik7DQorICAgICAgICBpZiAobV9DaXBoZXIgPT0gRlhDSVBIRVJfQUVTKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIoa2V5MSArIG1fS2V5TGVuICsgNSwgInNBbFQiLCA0KTsNCisgICAgICAgIH0NCisgICAgICAgIENSWVBUX01ENUdlbmVyYXRlKGtleTEsIG1fQ2lwaGVyID09IEZYQ0lQSEVSX0FFUyA/IG1fS2V5TGVuICsgOSA6IG1fS2V5TGVuICsgNSwgcmVhbGtleSk7DQorICAgICAgICByZWFsa2V5bGVuID0gbV9LZXlMZW4gKyA1Ow0KKyAgICAgICAgaWYgKHJlYWxrZXlsZW4gPiAxNikgew0KKyAgICAgICAgICAgIHJlYWxrZXlsZW4gPSAxNjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9DaXBoZXIgPT0gRlhDSVBIRVJfQUVTKSB7DQorICAgICAgICBDUllQVF9BRVNTZXRLZXkobV9wQUVTQ29udGV4dCwgMTYsIG1fS2V5TGVuID09IDMyID8gbV9FbmNyeXB0S2V5IDogcmVhbGtleSwgbV9LZXlMZW4sIGJFbmNyeXB0KTsNCisgICAgICAgIGlmIChiRW5jcnlwdCkgew0KKyAgICAgICAgICAgIEZYX0JZVEUgaXZbMTZdOw0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgaXZbaV0gPSAoRlhfQllURSlyYW5kKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENSWVBUX0FFU1NldElWKG1fcEFFU0NvbnRleHQsIGl2KTsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X2J1ZiwgaXYsIDE2KTsNCisgICAgICAgICAgICBpbnQgbmJsb2NrcyA9IHNyY19zaXplIC8gMTY7DQorICAgICAgICAgICAgQ1JZUFRfQUVTRW5jcnlwdChtX3BBRVNDb250ZXh0LCBkZXN0X2J1ZiArIDE2LCBzcmNfYnVmLCBuYmxvY2tzICogMTYpOw0KKyAgICAgICAgICAgIEZYX0JZVEUgcGFkZGluZ1sxNl07DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIocGFkZGluZywgc3JjX2J1ZiArIG5ibG9ja3MgKiAxNiwgc3JjX3NpemUgJSAxNik7DQorICAgICAgICAgICAgRlhTWVNfbWVtc2V0OChwYWRkaW5nICsgc3JjX3NpemUgJSAxNiwgMTYgLSBzcmNfc2l6ZSAlIDE2LCAxNiAtIHNyY19zaXplICUgMTYpOw0KKyAgICAgICAgICAgIENSWVBUX0FFU0VuY3J5cHQobV9wQUVTQ29udGV4dCwgZGVzdF9idWYgKyBuYmxvY2tzICogMTYgKyAxNiwgcGFkZGluZywgMTYpOw0KKyAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IDMyICsgbmJsb2NrcyAqIDE2Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBDUllQVF9BRVNTZXRJVihtX3BBRVNDb250ZXh0LCBzcmNfYnVmKTsNCisgICAgICAgICAgICBDUllQVF9BRVNEZWNyeXB0KG1fcEFFU0NvbnRleHQsIGRlc3RfYnVmLCBzcmNfYnVmICsgMTYsIHNyY19zaXplIC0gMTYpOw0KKyAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IHNyY19zaXplIC0gMTY7DQorICAgICAgICAgICAgZGVzdF9zaXplIC09IGRlc3RfYnVmW2Rlc3Rfc2l6ZSAtIDFdOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQVNTRVJUKGRlc3Rfc2l6ZSA9PSBzcmNfc2l6ZSk7DQorICAgICAgICBpZiAoZGVzdF9idWYgIT0gc3JjX2J1Zikgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKGRlc3RfYnVmLCBzcmNfYnVmLCBzcmNfc2l6ZSk7DQorICAgICAgICB9DQorICAgICAgICBDUllQVF9BcmNGb3VyQ3J5cHRCbG9jayhkZXN0X2J1ZiwgZGVzdF9zaXplLCByZWFsa2V5LCByZWFsa2V5bGVuKTsNCisgICAgfQ0KK30NCit0eXBlZGVmIHN0cnVjdCBfQUVTQ3J5cHRDb250ZXh0IHsNCisgICAgRlhfQllURQkJbV9Db250ZXh0WzIwNDhdOw0KKyAgICBGWF9CT09MCQltX2JJVjsNCisgICAgRlhfQllURQkJbV9CbG9ja1sxNl07DQorICAgIEZYX0RXT1JECW1fQmxvY2tPZmZzZXQ7DQorfSBBRVNDcnlwdENvbnRleHQ7DQorRlhfTFBWT0lEIENQREZfU3RhbmRhcmRDcnlwdG9IYW5kbGVyOjpDcnlwdFN0YXJ0KEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgZ2VubnVtLCBGWF9CT09MIGJFbmNyeXB0KQ0KK3sNCisgICAgaWYgKG1fQ2lwaGVyID09IEZYQ0lQSEVSX05PTkUpIHsNCisgICAgICAgIHJldHVybiB0aGlzOw0KKyAgICB9DQorICAgIGlmIChtX0NpcGhlciA9PSBGWENJUEhFUl9BRVMgJiYgbV9LZXlMZW4gPT0gMzIpIHsNCisgICAgICAgIEFFU0NyeXB0Q29udGV4dCogcENvbnRleHQgPSBGWF9BbGxvYyhBRVNDcnlwdENvbnRleHQsIDEpOw0KKyAgICAgICAgcENvbnRleHQtPm1fYklWID0gVFJVRTsNCisgICAgICAgIHBDb250ZXh0LT5tX0Jsb2NrT2Zmc2V0ID0gMDsNCisgICAgICAgIENSWVBUX0FFU1NldEtleShwQ29udGV4dC0+bV9Db250ZXh0LCAxNiwgbV9FbmNyeXB0S2V5LCAzMiwgYkVuY3J5cHQpOw0KKyAgICAgICAgaWYgKGJFbmNyeXB0KSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgaSArKykgew0KKyAgICAgICAgICAgICAgICBwQ29udGV4dC0+bV9CbG9ja1tpXSA9IChGWF9CWVRFKXJhbmQoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ1JZUFRfQUVTU2V0SVYocENvbnRleHQtPm1fQ29udGV4dCwgcENvbnRleHQtPm1fQmxvY2spOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHBDb250ZXh0Ow0KKyAgICB9DQorICAgIEZYX0JZVEUga2V5MVs0OF07DQorICAgIEZYU1lTX21lbWNweTMyKGtleTEsIG1fRW5jcnlwdEtleSwgbV9LZXlMZW4pOw0KKyAgICBGWFNZU19tZW1jcHkzMihrZXkxICsgbV9LZXlMZW4sICZvYmpudW0sIDMpOw0KKyAgICBGWFNZU19tZW1jcHkzMihrZXkxICsgbV9LZXlMZW4gKyAzLCAmZ2VubnVtLCAyKTsNCisgICAgaWYgKG1fQ2lwaGVyID09IEZYQ0lQSEVSX0FFUykgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoa2V5MSArIG1fS2V5TGVuICsgNSwgInNBbFQiLCA0KTsNCisgICAgfQ0KKyAgICBGWF9CWVRFIHJlYWxrZXlbMTZdOw0KKyAgICBDUllQVF9NRDVHZW5lcmF0ZShrZXkxLCBtX0NpcGhlciA9PSBGWENJUEhFUl9BRVMgPyBtX0tleUxlbiArIDkgOiBtX0tleUxlbiArIDUsIHJlYWxrZXkpOw0KKyAgICBpbnQgcmVhbGtleWxlbiA9IG1fS2V5TGVuICsgNTsNCisgICAgaWYgKHJlYWxrZXlsZW4gPiAxNikgew0KKyAgICAgICAgcmVhbGtleWxlbiA9IDE2Ow0KKyAgICB9DQorICAgIGlmIChtX0NpcGhlciA9PSBGWENJUEhFUl9BRVMpIHsNCisgICAgICAgIEFFU0NyeXB0Q29udGV4dCogcENvbnRleHQgPSBGWF9BbGxvYyhBRVNDcnlwdENvbnRleHQsIDEpOw0KKyAgICAgICAgcENvbnRleHQtPm1fYklWID0gVFJVRTsNCisgICAgICAgIHBDb250ZXh0LT5tX0Jsb2NrT2Zmc2V0ID0gMDsNCisgICAgICAgIENSWVBUX0FFU1NldEtleShwQ29udGV4dC0+bV9Db250ZXh0LCAxNiwgcmVhbGtleSwgMTYsIGJFbmNyeXB0KTsNCisgICAgICAgIGlmIChiRW5jcnlwdCkgew0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgcENvbnRleHQtPm1fQmxvY2tbaV0gPSAoRlhfQllURSlyYW5kKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENSWVBUX0FFU1NldElWKHBDb250ZXh0LT5tX0NvbnRleHQsIHBDb250ZXh0LT5tX0Jsb2NrKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBwQ29udGV4dDsNCisgICAgfQ0KKyAgICB2b2lkKiBwQ29udGV4dCA9IEZYX0FsbG9jKEZYX0JZVEUsIDEwNDApOw0KKyAgICBDUllQVF9BcmNGb3VyU2V0dXAocENvbnRleHQsIHJlYWxrZXksIHJlYWxrZXlsZW4pOw0KKyAgICByZXR1cm4gcENvbnRleHQ7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdGFuZGFyZENyeXB0b0hhbmRsZXI6OkNyeXB0U3RyZWFtKEZYX0xQVk9JRCBjb250ZXh0LCBGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1ZiwgRlhfQk9PTCBiRW5jcnlwdCkNCit7DQorICAgIGlmICghY29udGV4dCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX0NpcGhlciA9PSBGWENJUEhFUl9OT05FKSB7DQorICAgICAgICBkZXN0X2J1Zi5BcHBlbmRCbG9jayhzcmNfYnVmLCBzcmNfc2l6ZSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9DaXBoZXIgPT0gRlhDSVBIRVJfUkM0KSB7DQorICAgICAgICBpbnQgb2xkX3NpemUgPSBkZXN0X2J1Zi5HZXRTaXplKCk7DQorICAgICAgICBkZXN0X2J1Zi5BcHBlbmRCbG9jayhzcmNfYnVmLCBzcmNfc2l6ZSk7DQorICAgICAgICBDUllQVF9BcmNGb3VyQ3J5cHQoY29udGV4dCwgZGVzdF9idWYuR2V0QnVmZmVyKCkgKyBvbGRfc2l6ZSwgc3JjX3NpemUpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQUVTQ3J5cHRDb250ZXh0KiBwQ29udGV4dCA9IChBRVNDcnlwdENvbnRleHQqKWNvbnRleHQ7DQorICAgIGlmIChwQ29udGV4dC0+bV9iSVYgJiYgYkVuY3J5cHQpIHsNCisgICAgICAgIGRlc3RfYnVmLkFwcGVuZEJsb2NrKHBDb250ZXh0LT5tX0Jsb2NrLCAxNik7DQorICAgICAgICBwQ29udGV4dC0+bV9iSVYgPSBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBzcmNfb2ZmID0gMDsNCisgICAgRlhfRFdPUkQgc3JjX2xlZnQgPSBzcmNfc2l6ZTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIEZYX0RXT1JEIGNvcHlfc2l6ZSA9IDE2IC0gcENvbnRleHQtPm1fQmxvY2tPZmZzZXQ7DQorICAgICAgICBpZiAoY29weV9zaXplID4gc3JjX2xlZnQpIHsNCisgICAgICAgICAgICBjb3B5X3NpemUgPSBzcmNfbGVmdDsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbWNweTMyKHBDb250ZXh0LT5tX0Jsb2NrICsgcENvbnRleHQtPm1fQmxvY2tPZmZzZXQsIHNyY19idWYgKyBzcmNfb2ZmLCBjb3B5X3NpemUpOw0KKyAgICAgICAgc3JjX29mZiArPSBjb3B5X3NpemU7DQorICAgICAgICBzcmNfbGVmdCAtPSBjb3B5X3NpemU7DQorICAgICAgICBwQ29udGV4dC0+bV9CbG9ja09mZnNldCArPSBjb3B5X3NpemU7DQorICAgICAgICBpZiAocENvbnRleHQtPm1fQmxvY2tPZmZzZXQgPT0gMTYpIHsNCisgICAgICAgICAgICBpZiAoIWJFbmNyeXB0ICYmIHBDb250ZXh0LT5tX2JJVikgew0KKyAgICAgICAgICAgICAgICBDUllQVF9BRVNTZXRJVihwQ29udGV4dC0+bV9Db250ZXh0LCBwQ29udGV4dC0+bV9CbG9jayk7DQorICAgICAgICAgICAgICAgIHBDb250ZXh0LT5tX2JJViA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICBwQ29udGV4dC0+bV9CbG9ja09mZnNldCA9IDA7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChzcmNfb2ZmIDwgc3JjX3NpemUpIHsNCisgICAgICAgICAgICAgICAgRlhfQllURSBibG9ja19idWZbMTZdOw0KKyAgICAgICAgICAgICAgICBpZiAoYkVuY3J5cHQpIHsNCisgICAgICAgICAgICAgICAgICAgIENSWVBUX0FFU0VuY3J5cHQocENvbnRleHQtPm1fQ29udGV4dCwgYmxvY2tfYnVmLCBwQ29udGV4dC0+bV9CbG9jaywgMTYpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgQ1JZUFRfQUVTRGVjcnlwdChwQ29udGV4dC0+bV9Db250ZXh0LCBibG9ja19idWYsIHBDb250ZXh0LT5tX0Jsb2NrLCAxNik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVzdF9idWYuQXBwZW5kQmxvY2soYmxvY2tfYnVmLCAxNik7DQorICAgICAgICAgICAgICAgIHBDb250ZXh0LT5tX0Jsb2NrT2Zmc2V0ID0gMDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoIXNyY19sZWZ0KSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdGFuZGFyZENyeXB0b0hhbmRsZXI6OkNyeXB0RmluaXNoKEZYX0xQVk9JRCBjb250ZXh0LCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1ZiwgRlhfQk9PTCBiRW5jcnlwdCkNCit7DQorICAgIGlmICghY29udGV4dCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX0NpcGhlciA9PSBGWENJUEhFUl9OT05FKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9DaXBoZXIgPT0gRlhDSVBIRVJfUkM0KSB7DQorICAgICAgICBGWF9GcmVlKGNvbnRleHQpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQUVTQ3J5cHRDb250ZXh0KiBwQ29udGV4dCA9IChBRVNDcnlwdENvbnRleHQqKWNvbnRleHQ7DQorICAgIGlmIChiRW5jcnlwdCkgew0KKyAgICAgICAgRlhfQllURSBibG9ja19idWZbMTZdOw0KKyAgICAgICAgaWYgKHBDb250ZXh0LT5tX0Jsb2NrT2Zmc2V0ID09IDE2KSB7DQorICAgICAgICAgICAgQ1JZUFRfQUVTRW5jcnlwdChwQ29udGV4dC0+bV9Db250ZXh0LCBibG9ja19idWYsIHBDb250ZXh0LT5tX0Jsb2NrLCAxNik7DQorICAgICAgICAgICAgZGVzdF9idWYuQXBwZW5kQmxvY2soYmxvY2tfYnVmLCAxNik7DQorICAgICAgICAgICAgcENvbnRleHQtPm1fQmxvY2tPZmZzZXQgPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhTWVNfbWVtc2V0OChwQ29udGV4dC0+bV9CbG9jayArIHBDb250ZXh0LT5tX0Jsb2NrT2Zmc2V0LCAoRlhfQllURSkoMTYgLSBwQ29udGV4dC0+bV9CbG9ja09mZnNldCksIDE2IC0gcENvbnRleHQtPm1fQmxvY2tPZmZzZXQpOw0KKyAgICAgICAgQ1JZUFRfQUVTRW5jcnlwdChwQ29udGV4dC0+bV9Db250ZXh0LCBibG9ja19idWYsIHBDb250ZXh0LT5tX0Jsb2NrLCAxNik7DQorICAgICAgICBkZXN0X2J1Zi5BcHBlbmRCbG9jayhibG9ja19idWYsIDE2KTsNCisgICAgfSBlbHNlIGlmIChwQ29udGV4dC0+bV9CbG9ja09mZnNldCA9PSAxNikgew0KKyAgICAgICAgRlhfQllURSBibG9ja19idWZbMTZdOw0KKyAgICAgICAgQ1JZUFRfQUVTRGVjcnlwdChwQ29udGV4dC0+bV9Db250ZXh0LCBibG9ja19idWYsIHBDb250ZXh0LT5tX0Jsb2NrLCAxNik7DQorICAgICAgICBpZiAoYmxvY2tfYnVmWzE1XSA8PSAxNikgew0KKyAgICAgICAgICAgIGRlc3RfYnVmLkFwcGVuZEJsb2NrKGJsb2NrX2J1ZiwgMTYgLSBibG9ja19idWZbMTVdKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9GcmVlKHBDb250ZXh0KTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0xQVk9JRCBDUERGX1N0YW5kYXJkQ3J5cHRvSGFuZGxlcjo6RGVjcnlwdFN0YXJ0KEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgZ2VubnVtKQ0KK3sNCisgICAgcmV0dXJuIENyeXB0U3RhcnQob2JqbnVtLCBnZW5udW0sIEZBTFNFKTsNCit9DQorRlhfRFdPUkQgQ1BERl9TdGFuZGFyZENyeXB0b0hhbmRsZXI6OkRlY3J5cHRHZXRTaXplKEZYX0RXT1JEIHNyY19zaXplKQ0KK3sNCisgICAgcmV0dXJuIG1fQ2lwaGVyID09IEZYQ0lQSEVSX0FFUyA/IHNyY19zaXplIC0gMTYgOiBzcmNfc2l6ZTsNCit9DQorRlhfQk9PTCBDUERGX1N0YW5kYXJkQ3J5cHRvSGFuZGxlcjo6SW5pdChDUERGX0RpY3Rpb25hcnkqIHBFbmNyeXB0RGljdCwgQ1BERl9TZWN1cml0eUhhbmRsZXIqIHBTZWN1cml0eUhhbmRsZXIpDQorew0KKyAgICBGWF9MUENCWVRFIGtleTsNCisgICAgaWYgKCFwU2VjdXJpdHlIYW5kbGVyLT5HZXRDcnlwdEluZm8obV9DaXBoZXIsIGtleSwgbV9LZXlMZW4pKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fS2V5TGVuID4gMzIgfHwgbV9LZXlMZW4gPCAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fQ2lwaGVyICE9IEZYQ0lQSEVSX05PTkUpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fRW5jcnlwdEtleSwga2V5LCBtX0tleUxlbik7DQorICAgIH0NCisgICAgaWYgKG1fQ2lwaGVyID09IEZYQ0lQSEVSX0FFUykgew0KKyAgICAgICAgbV9wQUVTQ29udGV4dCA9IEZYX0FsbG9jKEZYX0JZVEUsIDIwNDgpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfU3RhbmRhcmRDcnlwdG9IYW5kbGVyOjpJbml0KGludCBjaXBoZXIsIEZYX0xQQ0JZVEUga2V5LCBpbnQga2V5bGVuKQ0KK3sNCisgICAgaWYgKGNpcGhlciA9PSBGWENJUEhFUl9BRVMpIHsNCisgICAgICAgIHN3aXRjaChrZXlsZW4pIHsNCisgICAgICAgICAgICBjYXNlIDE2Og0KKyAgICAgICAgICAgIGNhc2UgMjQ6DQorICAgICAgICAgICAgY2FzZSAzMjoNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKGNpcGhlciA9PSBGWENJUEhFUl9BRVMyKSB7DQorICAgICAgICBpZiAoa2V5bGVuICE9IDMyKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKGNpcGhlciA9PSBGWENJUEhFUl9SQzQpIHsNCisgICAgICAgIGlmIChrZXlsZW4gPCA1IHx8IGtleWxlbiA+IDE2KSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKGtleWxlbiA+IDMyKSB7DQorICAgICAgICAgICAga2V5bGVuID0gMzI7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9DaXBoZXIgPSBjaXBoZXI7DQorICAgIG1fS2V5TGVuID0ga2V5bGVuOw0KKyAgICBGWFNZU19tZW1jcHkzMihtX0VuY3J5cHRLZXksIGtleSwga2V5bGVuKTsNCisgICAgaWYgKG1fQ2lwaGVyID09IEZYQ0lQSEVSX0FFUykgew0KKyAgICAgICAgbV9wQUVTQ29udGV4dCA9IEZYX0FsbG9jKEZYX0JZVEUsIDIwNDgpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfU3RhbmRhcmRDcnlwdG9IYW5kbGVyOjpEZWNyeXB0U3RyZWFtKEZYX0xQVk9JRCBjb250ZXh0LCBGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLA0KKyAgICAgICAgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpDQorew0KKyAgICByZXR1cm4gQ3J5cHRTdHJlYW0oY29udGV4dCwgc3JjX2J1Ziwgc3JjX3NpemUsIGRlc3RfYnVmLCBGQUxTRSk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdGFuZGFyZENyeXB0b0hhbmRsZXI6OkRlY3J5cHRGaW5pc2goRlhfTFBWT0lEIGNvbnRleHQsIENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKQ0KK3sNCisgICAgcmV0dXJuIENyeXB0RmluaXNoKGNvbnRleHQsIGRlc3RfYnVmLCBGQUxTRSk7DQorfQ0KK0ZYX0RXT1JEIENQREZfU3RhbmRhcmRDcnlwdG9IYW5kbGVyOjpFbmNyeXB0R2V0U2l6ZShGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIHZlcnNpb24sIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUpDQorew0KKyAgICBpZiAobV9DaXBoZXIgPT0gRlhDSVBIRVJfQUVTKSB7DQorICAgICAgICByZXR1cm4gc3JjX3NpemUgKyAzMjsNCisgICAgfQ0KKyAgICByZXR1cm4gc3JjX3NpemU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdGFuZGFyZENyeXB0b0hhbmRsZXI6OkVuY3J5cHRDb250ZW50KEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgZ2VubnVtLCBGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLA0KKyAgICAgICAgRlhfTFBCWVRFIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplKQ0KK3sNCisgICAgQ3J5cHRCbG9jayhUUlVFLCBvYmpudW0sIGdlbm51bSwgc3JjX2J1Ziwgc3JjX3NpemUsIGRlc3RfYnVmLCBkZXN0X3NpemUpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDUERGX0NyeXB0b0hhbmRsZXI6OkRlY3J5cHQoRlhfRFdPUkQgb2JqbnVtLCBGWF9EV09SRCBnZW5udW0sIENGWF9CeXRlU3RyaW5nJiBzdHIpDQorew0KKyAgICBDRlhfQmluYXJ5QnVmIGRlc3RfYnVmOw0KKyAgICBGWF9MUFZPSUQgY29udGV4dCA9IERlY3J5cHRTdGFydChvYmpudW0sIGdlbm51bSk7DQorICAgIERlY3J5cHRTdHJlYW0oY29udGV4dCwgKEZYX0xQQ0JZVEUpc3RyLCBzdHIuR2V0TGVuZ3RoKCksIGRlc3RfYnVmKTsNCisgICAgRGVjcnlwdEZpbmlzaChjb250ZXh0LCBkZXN0X2J1Zik7DQorICAgIHN0ciA9IGRlc3RfYnVmOw0KK30NCitDUERGX1N0YW5kYXJkQ3J5cHRvSGFuZGxlcjo6Q1BERl9TdGFuZGFyZENyeXB0b0hhbmRsZXIoKQ0KK3sNCisgICAgbV9wQUVTQ29udGV4dCA9IE5VTEw7DQorICAgIG1fQ2lwaGVyID0gRlhDSVBIRVJfTk9ORTsNCisgICAgbV9LZXlMZW4gPSAwOw0KK30NCitDUERGX1N0YW5kYXJkQ3J5cHRvSGFuZGxlcjo6fkNQREZfU3RhbmRhcmRDcnlwdG9IYW5kbGVyKCkNCit7DQorICAgIGlmIChtX3BBRVNDb250ZXh0KSB7DQorICAgICAgICBGWF9GcmVlKG1fcEFFU0NvbnRleHQpOw0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfZmRmLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfZmRmLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmY5YWE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhcnNlci9mcGRmX3BhcnNlcl9mZGYuY3BwCkBAIC0wLDAgKzEsMjI0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfc2VyaWFsLmgiDQorQ0ZERl9Eb2N1bWVudDo6Q0ZERl9Eb2N1bWVudCgpIDogQ1BERl9JbmRpcmVjdE9iamVjdHMoTlVMTCkNCit7DQorICAgIG1fcFJvb3REaWN0ID0gTlVMTDsNCisgICAgbV9wRmlsZSA9IE5VTEw7DQorICAgIG1fYk93bkZpbGUgPSBGQUxTRTsNCit9DQorQ0ZERl9Eb2N1bWVudDo6fkNGREZfRG9jdW1lbnQoKQ0KK3sNCisgICAgaWYgKG1fYk93bkZpbGUgJiYgbV9wRmlsZSkgew0KKyAgICAgICAgbV9wRmlsZS0+UmVsZWFzZSgpOw0KKyAgICB9DQorfQ0KK0NGREZfRG9jdW1lbnQqIENGREZfRG9jdW1lbnQ6OkNyZWF0ZU5ld0RvYygpDQorew0KKyAgICBDRkRGX0RvY3VtZW50KiBwRG9jID0gRlhfTkVXIENGREZfRG9jdW1lbnQ7DQorICAgIHBEb2MtPm1fcFJvb3REaWN0ID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgcERvYy0+QWRkSW5kaXJlY3RPYmplY3QocERvYy0+bV9wUm9vdERpY3QpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGREZEaWN0ID0gRlhfTkVXIENQREZfRGljdGlvbmFyeTsNCisgICAgcERvYy0+bV9wUm9vdERpY3QtPlNldEF0KEZYX0JTVFJDKCJGREYiKSwgcEZERkRpY3QpOw0KKyAgICByZXR1cm4gcERvYzsNCit9DQorQ0ZERl9Eb2N1bWVudCogQ0ZERl9Eb2N1bWVudDo6UGFyc2VGaWxlKEZYX0xQQ1NUUiBmaWxlX3BhdGgpDQorew0KKyAgICByZXR1cm4gQ0ZERl9Eb2N1bWVudDo6UGFyc2VGaWxlKEZYX0NyZWF0ZUZpbGVSZWFkKGZpbGVfcGF0aCksIFRSVUUpOw0KK30NCitDRkRGX0RvY3VtZW50KiBDRkRGX0RvY3VtZW50OjpQYXJzZUZpbGUoRlhfTFBDV1NUUiBmaWxlX3BhdGgpDQorew0KKyAgICByZXR1cm4gQ0ZERl9Eb2N1bWVudDo6UGFyc2VGaWxlKEZYX0NyZWF0ZUZpbGVSZWFkKGZpbGVfcGF0aCksIFRSVUUpOw0KK30NCitDRkRGX0RvY3VtZW50KiBDRkRGX0RvY3VtZW50OjpQYXJzZUZpbGUoSUZYX0ZpbGVSZWFkICpwRmlsZSwgRlhfQk9PTCBiT3duRmlsZSkNCit7DQorICAgIGlmICghcEZpbGUpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGREZfRG9jdW1lbnQqIHBEb2MgPSBGWF9ORVcgQ0ZERl9Eb2N1bWVudDsNCisgICAgcERvYy0+UGFyc2VTdHJlYW0ocEZpbGUsIGJPd25GaWxlKTsNCisgICAgaWYgKHBEb2MtPm1fcFJvb3REaWN0ID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSBwRG9jOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBEb2M7DQorfQ0KK0NGREZfRG9jdW1lbnQqIENGREZfRG9jdW1lbnQ6OlBhcnNlTWVtb3J5KEZYX0xQQ0JZVEUgcERhdGEsIEZYX0RXT1JEIHNpemUpDQorew0KKyAgICByZXR1cm4gQ0ZERl9Eb2N1bWVudDo6UGFyc2VGaWxlKEZYX0NyZWF0ZU1lbW9yeVN0cmVhbSgoRlhfTFBCWVRFKXBEYXRhLCBzaXplKSwgVFJVRSk7DQorfQ0KK3ZvaWQgQ0ZERl9Eb2N1bWVudDo6UGFyc2VTdHJlYW0oSUZYX0ZpbGVSZWFkICpwRmlsZSwgRlhfQk9PTCBiT3duRmlsZSkNCit7DQorICAgIG1fcEZpbGUgPSBwRmlsZTsNCisgICAgbV9iT3duRmlsZSA9IGJPd25GaWxlOw0KKyAgICBDUERGX1N5bnRheFBhcnNlciBwYXJzZXI7DQorICAgIHBhcnNlci5Jbml0UGFyc2VyKG1fcEZpbGUsIDApOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgRlhfQk9PTCBiTnVtYmVyOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgd29yZCA9IHBhcnNlci5HZXROZXh0V29yZChiTnVtYmVyKTsNCisgICAgICAgIGlmIChiTnVtYmVyKSB7DQorICAgICAgICAgICAgRlhfRFdPUkQgb2JqbnVtID0gRlhTWVNfYXRvaSh3b3JkKTsNCisgICAgICAgICAgICB3b3JkID0gcGFyc2VyLkdldE5leHRXb3JkKGJOdW1iZXIpOw0KKyAgICAgICAgICAgIGlmICghYk51bWJlcikgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgd29yZCA9IHBhcnNlci5HZXROZXh0V29yZChiTnVtYmVyKTsNCisgICAgICAgICAgICBpZiAod29yZCAhPSBGWF9CU1RSQygib2JqIikpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gcGFyc2VyLkdldE9iamVjdCh0aGlzLCBvYmpudW0sIDAsIEZBTFNFKTsNCisgICAgICAgICAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBJbnNlcnRJbmRpcmVjdE9iamVjdChvYmpudW0sIHBPYmopOw0KKyAgICAgICAgICAgIHdvcmQgPSBwYXJzZXIuR2V0TmV4dFdvcmQoYk51bWJlcik7DQorICAgICAgICAgICAgaWYgKHdvcmQgIT0gRlhfQlNUUkMoImVuZG9iaiIpKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKHdvcmQgIT0gRlhfQlNUUkMoInRyYWlsZXIiKSkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwTWFpbkRpY3QgPSAoQ1BERl9EaWN0aW9uYXJ5KilwYXJzZXIuR2V0T2JqZWN0KHRoaXMsIDAsIDAsIDApOw0KKyAgICAgICAgICAgIGlmIChwTWFpbkRpY3QgPT0gTlVMTCB8fCBwTWFpbkRpY3QtPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wUm9vdERpY3QgPSBwTWFpbkRpY3QtPkdldERpY3QoRlhfQlNUUkMoIlJvb3QiKSk7DQorICAgICAgICAgICAgcE1haW5EaWN0LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCit9DQorRlhfQk9PTCBDRkRGX0RvY3VtZW50OjpXcml0ZUJ1ZihDRlhfQnl0ZVRleHRCdWYmIGJ1ZikgY29uc3QNCit7DQorICAgIGlmIChtX3BSb290RGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgYnVmIDw8IEZYX0JTVFJDKCIlRkRGLTEuMlxyXG4iKTsNCisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9JbmRpcmVjdE9ianMuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZShwb3MpIHsNCisgICAgICAgIHNpemVfdCBvYmpudW07DQorICAgICAgICBDUERGX09iamVjdCogcE9iajsNCisgICAgICAgIG1fSW5kaXJlY3RPYmpzLkdldE5leHRBc3NvYyhwb3MsIChGWF9MUFZPSUQmKW9iam51bSwgKEZYX0xQVk9JRCYpcE9iaik7DQorICAgICAgICBidWYgPDwgKEZYX0RXT1JEKW9iam51bSA8PCBGWF9CU1RSQygiIDAgb2JqXHJcbiIpIDw8IHBPYmogPDwgRlhfQlNUUkMoIlxyXG5lbmRvYmpcclxuXHJcbiIpOw0KKyAgICB9DQorICAgIGJ1ZiA8PCBGWF9CU1RSQygidHJhaWxlclxyXG48PC9Sb290ICIpIDw8IG1fcFJvb3REaWN0LT5HZXRPYmpOdW0oKSA8PCBGWF9CU1RSQygiIDAgUj4+XHJcbiUlRU9GXHJcbiIpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ0ZERl9Eb2N1bWVudDo6R2V0V2luMzJQYXRoKCkgY29uc3QNCit7DQorICAgIENQREZfT2JqZWN0KiBwRmlsZVNwZWMgPSBtX3BSb290RGljdC0+R2V0RGljdChGWF9CU1RSQygiRkRGIikpLT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkYiKSk7DQorICAgIGlmIChwRmlsZVNwZWMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgaWYgKHBGaWxlU3BlYy0+R2V0VHlwZSgpID09IFBERk9CSl9TVFJJTkcpIHsNCisgICAgICAgIHJldHVybiBGUERGX0ZpbGVTcGVjX0dldFdpbjMyUGF0aChtX3BSb290RGljdC0+R2V0RGljdChGWF9CU1RSQygiRkRGIikpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlBERl9GaWxlU3BlY19HZXRXaW4zMlBhdGgocEZpbGVTcGVjKTsNCit9DQorRlhfQk9PTCBDRkRGX0RvY3VtZW50OjpXcml0ZUZpbGUoRlhfTFBDU1RSIGZpbGVfcGF0aCkgY29uc3QNCit7DQorICAgIElGWF9GaWxlV3JpdGUgKnBGaWxlID0gRlhfQ3JlYXRlRmlsZVdyaXRlKGZpbGVfcGF0aCk7DQorICAgIGlmICghcEZpbGUpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJSZXQgPSBXcml0ZUZpbGUocEZpbGUpOw0KKyAgICBwRmlsZS0+UmVsZWFzZSgpOw0KKyAgICByZXR1cm4gYlJldDsNCit9DQorRlhfQk9PTCBDRkRGX0RvY3VtZW50OjpXcml0ZUZpbGUoRlhfTFBDV1NUUiBmaWxlX3BhdGgpIGNvbnN0DQorew0KKyAgICBJRlhfRmlsZVdyaXRlICpwRmlsZSA9IEZYX0NyZWF0ZUZpbGVXcml0ZShmaWxlX3BhdGgpOw0KKyAgICBpZiAoIXBGaWxlKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfQk9PTCBiUmV0ID0gV3JpdGVGaWxlKHBGaWxlKTsNCisgICAgcEZpbGUtPlJlbGVhc2UoKTsNCisgICAgcmV0dXJuIGJSZXQ7DQorfQ0KK0ZYX0JPT0wgQ0ZERl9Eb2N1bWVudDo6V3JpdGVGaWxlKElGWF9GaWxlV3JpdGUgKnBGaWxlKSBjb25zdA0KK3sNCisgICAgQ0ZYX0J5dGVUZXh0QnVmIGJ1ZjsNCisgICAgV3JpdGVCdWYoYnVmKTsNCisgICAgRlhfQk9PTCBiUmV0ID0gcEZpbGUtPldyaXRlQmxvY2soYnVmLkdldEJ1ZmZlcigpLCBidWYuR2V0U2l6ZSgpKTsNCisgICAgaWYgKGJSZXQpIHsNCisgICAgICAgIHBGaWxlLT5GbHVzaCgpOw0KKyAgICB9DQorICAgIHJldHVybiBiUmV0Ow0KK30NCitzdGF0aWMgQ0ZYX1dpZGVTdHJpbmcgQ2hhbmdlU2xhc2goRlhfTFBDV1NUUiBzdHIpDQorew0KKyAgICBDRlhfV2lkZVN0cmluZyByZXN1bHQ7DQorICAgIHdoaWxlICgqc3RyKSB7DQorICAgICAgICBpZiAoKnN0ciA9PSAnXFwnKSB7DQorICAgICAgICAgICAgcmVzdWx0ICs9ICcvJzsNCisgICAgICAgIH0gZWxzZSBpZiAoKnN0ciA9PSAnLycpIHsNCisgICAgICAgICAgICByZXN1bHQgKz0gJ1xcJzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmVzdWx0ICs9ICpzdHI7DQorICAgICAgICB9DQorICAgICAgICBzdHIgKys7DQorICAgIH0NCisgICAgcmV0dXJuIHJlc3VsdDsNCit9DQordm9pZCBGUERGX0ZpbGVTcGVjX1NldFdpbjMyUGF0aChDUERGX09iamVjdCogcEZpbGVTcGVjLCBjb25zdCBDRlhfV2lkZVN0cmluZyYgZmlsZXBhdGgpDQorew0KKyAgICBDRlhfV2lkZVN0cmluZyByZXN1bHQ7DQorICAgIGlmIChmaWxlcGF0aC5HZXRMZW5ndGgoKSA+IDEgJiYgZmlsZXBhdGhbMV0gPT0gJzonKSB7DQorICAgICAgICByZXN1bHQgPSBMIi8iOw0KKyAgICAgICAgcmVzdWx0ICs9IGZpbGVwYXRoWzBdOw0KKyAgICAgICAgaWYgKGZpbGVwYXRoWzJdICE9ICdcXCcpIHsNCisgICAgICAgICAgICByZXN1bHQgKz0gJy8nOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmVzdWx0ICs9IENoYW5nZVNsYXNoKChGWF9MUENXU1RSKWZpbGVwYXRoICsgMik7DQorICAgIH0gZWxzZSBpZiAoZmlsZXBhdGguR2V0TGVuZ3RoKCkgPiAxICYmIGZpbGVwYXRoWzBdID09ICdcXCcgJiYgZmlsZXBhdGhbMV0gPT0gJ1xcJykgew0KKyAgICAgICAgcmVzdWx0ID0gQ2hhbmdlU2xhc2goKEZYX0xQQ1dTVFIpZmlsZXBhdGggKyAxKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJlc3VsdCA9IENoYW5nZVNsYXNoKGZpbGVwYXRoKTsNCisgICAgfQ0KKyAgICBpZiAocEZpbGVTcGVjLT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUklORykgew0KKyAgICAgICAgcEZpbGVTcGVjLT5TZXRTdHJpbmcoQ0ZYX0J5dGVTdHJpbmc6OkZyb21Vbmljb2RlKHJlc3VsdCkpOw0KKyAgICB9IGVsc2UgaWYgKHBGaWxlU3BlYy0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICAoKENQREZfRGljdGlvbmFyeSopcEZpbGVTcGVjKS0+U2V0QXRTdHJpbmcoRlhfQlNUUkMoIkYiKSwgQ0ZYX0J5dGVTdHJpbmc6OkZyb21Vbmljb2RlKHJlc3VsdCkpOw0KKyAgICAgICAgKChDUERGX0RpY3Rpb25hcnkqKXBGaWxlU3BlYyktPlNldEF0U3RyaW5nKEZYX0JTVFJDKCJVRiIpLCBQREZfRW5jb2RlVGV4dChyZXN1bHQpKTsNCisgICAgICAgICgoQ1BERl9EaWN0aW9uYXJ5KilwRmlsZVNwZWMpLT5SZW1vdmVBdChGWF9CU1RSQygiRlMiKSk7DQorICAgIH0NCit9DQorQ0ZYX1dpZGVTdHJpbmcJRlBERl9GaWxlU3BlY19HZXRXaW4zMlBhdGgoY29uc3QgQ1BERl9PYmplY3QqIHBGaWxlU3BlYykNCit7DQorICAgIENGWF9XaWRlU3RyaW5nIHdzRmlsZU5hbWU7DQorICAgIGlmIChwRmlsZVNwZWMtPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKXBGaWxlU3BlYzsNCisgICAgICAgIHdzRmlsZU5hbWUgPSBwRGljdC0+R2V0VW5pY29kZVRleHQoRlhfQlNUUkMoIlVGIikpOw0KKyAgICAgICAgaWYgKHdzRmlsZU5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgd3NGaWxlTmFtZSA9IENGWF9XaWRlU3RyaW5nOjpGcm9tTG9jYWwocERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiRiIpKSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAocERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiRlMiKSkgPT0gRlhfQlNUUkMoIlVSTCIpKSB7DQorICAgICAgICAgICAgcmV0dXJuIHdzRmlsZU5hbWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAod3NGaWxlTmFtZS5Jc0VtcHR5KCkgJiYgcERpY3QtPktleUV4aXN0KEZYX0JTVFJDKCJET1MiKSkpIHsNCisgICAgICAgICAgICB3c0ZpbGVOYW1lID0gQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbChwRGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJET1MiKSkpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgd3NGaWxlTmFtZSA9IENGWF9XaWRlU3RyaW5nOjpGcm9tTG9jYWwocEZpbGVTcGVjLT5HZXRTdHJpbmcoKSk7DQorICAgIH0NCisgICAgaWYgKHdzRmlsZU5hbWVbMF0gIT0gJy8nKSB7DQorICAgICAgICByZXR1cm4gQ2hhbmdlU2xhc2god3NGaWxlTmFtZSk7DQorICAgIH0NCisgICAgaWYgKHdzRmlsZU5hbWVbMl0gPT0gJy8nKSB7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyByZXN1bHQ7DQorICAgICAgICByZXN1bHQgKz0gd3NGaWxlTmFtZVsxXTsNCisgICAgICAgIHJlc3VsdCArPSAnOic7DQorICAgICAgICByZXN1bHQgKz0gQ2hhbmdlU2xhc2goKChGWF9MUENXU1RSKXdzRmlsZU5hbWUpICsgMik7DQorICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgcmVzdWx0Ow0KKyAgICAgICAgcmVzdWx0ICs9ICdcXCc7DQorICAgICAgICByZXN1bHQgKz0gQ2hhbmdlU2xhc2god3NGaWxlTmFtZSk7DQorICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfZmlsdGVycy5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX2ZpbHRlcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YTc5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX2ZpbHRlcnMuY3BwCkBAIC0wLDAgKzEsOTA5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vZnhfemxpYi5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYXJzZXIuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX21vZHVsZS5oIg0KKyNpbmNsdWRlICJmaWx0ZXJzX2ludC5oIg0KK0NGWF9EYXRhRmlsdGVyOjpDRlhfRGF0YUZpbHRlcigpDQorew0KKyAgICBtX2JFT0YgPSBGQUxTRTsNCisgICAgbV9wRGVzdEZpbHRlciA9IE5VTEw7DQorICAgIG1fU3JjUG9zID0gMDsNCit9DQorQ0ZYX0RhdGFGaWx0ZXI6On5DRlhfRGF0YUZpbHRlcigpDQorew0KKyAgICBpZiAobV9wRGVzdEZpbHRlcikgew0KKyAgICAgICAgZGVsZXRlIG1fcERlc3RGaWx0ZXI7DQorICAgIH0NCit9DQordm9pZCBDRlhfRGF0YUZpbHRlcjo6U2V0RGVzdEZpbHRlcihDRlhfRGF0YUZpbHRlciogcEZpbHRlcikNCit7DQorICAgIGlmIChtX3BEZXN0RmlsdGVyKSB7DQorICAgICAgICBtX3BEZXN0RmlsdGVyLT5TZXREZXN0RmlsdGVyKHBGaWx0ZXIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wRGVzdEZpbHRlciA9IHBGaWx0ZXI7DQorICAgIH0NCit9DQordm9pZCBDRlhfRGF0YUZpbHRlcjo6RmlsdGVySW4oRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpDQorew0KKyAgICBpZiAobV9iRU9GKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9TcmNQb3MgKz0gc3JjX3NpemU7DQorICAgIGlmIChtX3BEZXN0RmlsdGVyKSB7DQorICAgICAgICBDRlhfQmluYXJ5QnVmIHRlbXBfYnVmOw0KKyAgICAgICAgdGVtcF9idWYuRXN0aW1hdGVTaXplKEZQREZfRklMVEVSX0JVRkZFUl9TSVpFLCBGUERGX0ZJTFRFUl9CVUZGRVJfU0laRSk7DQorICAgICAgICB2X0ZpbHRlckluKHNyY19idWYsIHNyY19zaXplLCB0ZW1wX2J1Zik7DQorICAgICAgICBtX3BEZXN0RmlsdGVyLT5GaWx0ZXJJbih0ZW1wX2J1Zi5HZXRCdWZmZXIoKSwgdGVtcF9idWYuR2V0U2l6ZSgpLCBkZXN0X2J1Zik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB2X0ZpbHRlckluKHNyY19idWYsIHNyY19zaXplLCBkZXN0X2J1Zik7DQorICAgIH0NCit9DQordm9pZCBDRlhfRGF0YUZpbHRlcjo6RmlsdGVyRmluaXNoKENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKQ0KK3sNCisgICAgaWYgKG1fcERlc3RGaWx0ZXIpIHsNCisgICAgICAgIENGWF9CaW5hcnlCdWYgdGVtcF9idWY7DQorICAgICAgICB2X0ZpbHRlckZpbmlzaCh0ZW1wX2J1Zik7DQorICAgICAgICBpZiAodGVtcF9idWYuR2V0U2l6ZSgpKSB7DQorICAgICAgICAgICAgbV9wRGVzdEZpbHRlci0+RmlsdGVySW4odGVtcF9idWYuR2V0QnVmZmVyKCksIHRlbXBfYnVmLkdldFNpemUoKSwgZGVzdF9idWYpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wRGVzdEZpbHRlci0+RmlsdGVyRmluaXNoKGRlc3RfYnVmKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHZfRmlsdGVyRmluaXNoKGRlc3RfYnVmKTsNCisgICAgfQ0KKyAgICBtX2JFT0YgPSBUUlVFOw0KK30NCit2b2lkIENGWF9EYXRhRmlsdGVyOjpSZXBvcnRFT0YoRlhfRFdPUkQgbGVmdF9pbnB1dCkNCit7DQorICAgIGlmIChtX2JFT0YpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX2JFT0YgPSBUUlVFOw0KKyAgICBtX1NyY1BvcyAtPSBsZWZ0X2lucHV0Ow0KK30NCitDRlhfRGF0YUZpbHRlciogRlBERl9DcmVhdGVGaWx0ZXIoRlhfQlNUUiBuYW1lLCBjb25zdCBDUERGX0RpY3Rpb25hcnkqIHBQYXJhbSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQ0KK3sNCisgICAgRlhfRFdPUkQgaWQgPSBuYW1lLkdldElEKCk7DQorICAgIHN3aXRjaCAoaWQpIHsNCisgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdGJywgJ2wnLCAnYScsICd0Jyk6DQorICAgICAgICBjYXNlIEZYQlNUUl9JRCgnRicsICdsJywgMCwgMCk6DQorICAgICAgICBjYXNlIEZYQlNUUl9JRCgnTCcsICdaJywgJ1cnLCAnRCcpOg0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0wnLCAnWicsICdXJywgMCk6IHsNCisgICAgICAgICAgICAgICAgQ0ZYX0RhdGFGaWx0ZXIqIHBGaWx0ZXI7DQorICAgICAgICAgICAgICAgIGlmIChpZCA9PSBGWEJTVFJfSUQoJ0wnLCAnWicsICdXJywgJ0QnKSB8fCBpZCA9PSBGWEJTVFJfSUQoJ0wnLCAnWicsICdXJywgMCkpIHsNCisgICAgICAgICAgICAgICAgICAgIHBGaWx0ZXIgPSBGWF9ORVcgQ1BERl9MendGaWx0ZXIocFBhcmFtLT5HZXRJbnRlZ2VyKCJFYXJseUNoYW5nZSIsIDEpKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHBGaWx0ZXIgPSBGWF9ORVcgQ1BERl9GbGF0ZUZpbHRlcjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAocFBhcmFtLT5HZXRJbnRlZ2VyKCJQcmVkaWN0b3IiLCAxKSA+IDEpIHsNCisgICAgICAgICAgICAgICAgICAgIENGWF9EYXRhRmlsdGVyKiBwUHJlZGljdG9yID0gRlhfTkVXIENQREZfUHJlZGljdG9yRmlsdGVyKHBQYXJhbS0+R2V0SW50ZWdlcihGWF9CU1RSQygiUHJlZGljdG9yIiksIDEpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUGFyYW0tPkdldEludGVnZXIoRlhfQlNUUkMoIkNvbG9ycyIpLCAxKSwgcFBhcmFtLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJCaXRzUGVyQ29tcG9uZW50IiksIDgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUGFyYW0tPkdldEludGVnZXIoRlhfQlNUUkMoIkNvbHVtbnMiKSwgMSkpOw0KKyAgICAgICAgICAgICAgICAgICAgcEZpbHRlci0+U2V0RGVzdEZpbHRlcihwUHJlZGljdG9yKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gcEZpbHRlcjsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIEZYQlNUUl9JRCgnQScsICdTJywgJ0MnLCAnSScpOg0KKyAgICAgICAgICAgIGlmIChuYW1lID09ICJBU0NJSUhleERlY29kZSIpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX0FzY2lpSGV4RmlsdGVyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gRlhfTkVXIENQREZfQXNjaWk4NUZpbHRlcjsNCisgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdBJywgJ0gnLCAneCcsIDApOg0KKyAgICAgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9Bc2NpaUhleEZpbHRlcjsNCisgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdBJywgJzgnLCAnNScsIDApOg0KKyAgICAgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9Bc2NpaTg1RmlsdGVyOw0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ1InLCAndScsICduJywgJ0wnKToNCisgICAgICAgICAgICByZXR1cm4gRlhfTkVXIENQREZfUnVuTGVuRmlsdGVyOw0KKyAgICAgICAgY2FzZSBGWEJTVFJfSUQoJ0MnLCAnQycsICdJJywgJ1QnKTogew0KKyAgICAgICAgICAgICAgICBpbnQgRW5jb2RpbmcgPSAwOw0KKyAgICAgICAgICAgICAgICBpbnQgYkVuZE9mTGluZSA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICBpbnQgYkJ5dGVBbGlnbiA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICBpbnQgYkJsYWNrID0gRkFMU0U7DQorICAgICAgICAgICAgICAgIGludCBuUm93cyA9IDA7DQorICAgICAgICAgICAgICAgIGludCBuQ29sdW1ucyA9IDE3Mjg7DQorICAgICAgICAgICAgICAgIGlmIChwUGFyYW0pIHsNCisgICAgICAgICAgICAgICAgICAgIEVuY29kaW5nID0gcFBhcmFtLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJLIikpOw0KKyAgICAgICAgICAgICAgICAgICAgYkVuZE9mTGluZSA9IHBQYXJhbS0+R2V0SW50ZWdlcihGWF9CU1RSQygiRW5kT2ZMaW5lIikpOw0KKyAgICAgICAgICAgICAgICAgICAgYkJ5dGVBbGlnbiA9IHBQYXJhbS0+R2V0SW50ZWdlcihGWF9CU1RSQygiRW5jb2RlZEJ5dGVBbGlnbiIpKTsNCisgICAgICAgICAgICAgICAgICAgIGJCbGFjayA9IHBQYXJhbS0+R2V0SW50ZWdlcihGWF9CU1RSQygiQmxhY2tJczEiKSk7DQorICAgICAgICAgICAgICAgICAgICBuQ29sdW1ucyA9IHBQYXJhbS0+R2V0SW50ZWdlcihGWF9CU1RSQygiQ29sdW1ucyIpLCAxNzI4KTsNCisgICAgICAgICAgICAgICAgICAgIG5Sb3dzID0gcFBhcmFtLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJSb3dzIikpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChuQ29sdW1ucyA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBuQ29sdW1ucyA9IHdpZHRoOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChuUm93cyA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBuUm93cyA9IGhlaWdodDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDUERGX0ZheEZpbHRlciogcEZpbHRlciA9IEZYX05FVyBDUERGX0ZheEZpbHRlcigpOw0KKyAgICAgICAgICAgICAgICBwRmlsdGVyLT5Jbml0aWFsaXplKEVuY29kaW5nLCBiRW5kT2ZMaW5lLCBiQnl0ZUFsaWduLCBiQmxhY2ssIG5Sb3dzLCBuQ29sdW1ucyk7DQorICAgICAgICAgICAgICAgIHJldHVybiBwRmlsdGVyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhCU1RSX0lEKCdEJywgJ0MnLCAnVCcsICdEJyk6DQorICAgICAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX0pwZWdGaWx0ZXI7DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorfQ0KK0NGWF9EYXRhRmlsdGVyKiBfRlBERl9DcmVhdGVGaWx0ZXJGcm9tRGljdChDUERGX0RpY3Rpb25hcnkqIHBEaWN0KQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBEZWNvZGVyID0gcERpY3QtPkdldEVsZW1lbnRWYWx1ZSgiRmlsdGVyIik7DQorICAgIGlmIChwRGVjb2RlciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfRGF0YUZpbHRlciogcEZpcnN0RmlsdGVyID0gTlVMTDsNCisgICAgaW50IHdpZHRoID0gcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIldpZHRoIikpLCBoZWlnaHQgPSBwRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiSGVpZ2h0IikpOw0KKyAgICBDUERGX09iamVjdCogcFBhcmFtcyA9IHBEaWN0LT5HZXRFbGVtZW50VmFsdWUoIkRlY29kZVBhcm1zIik7DQorICAgIGlmIChwRGVjb2Rlci0+R2V0VHlwZSgpID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgaWYgKHBQYXJhbXMgJiYgcFBhcmFtcy0+R2V0VHlwZSgpICE9IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgICAgIHBQYXJhbXMgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8ICgoQ1BERl9BcnJheSopcERlY29kZXIpLT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgbmFtZSA9ICgoQ1BERl9BcnJheSopcERlY29kZXIpLT5HZXRTdHJpbmcoaSk7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUGFyYW0gPSBOVUxMOw0KKyAgICAgICAgICAgIGlmIChwUGFyYW1zKSB7DQorICAgICAgICAgICAgICAgIHBQYXJhbSA9ICgoQ1BERl9BcnJheSopcFBhcmFtcyktPkdldERpY3QoaSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENGWF9EYXRhRmlsdGVyKiBwRGVzdEZpbHRlciA9IEZQREZfQ3JlYXRlRmlsdGVyKG5hbWUsIHBQYXJhbSwgd2lkdGgsIGhlaWdodCk7DQorICAgICAgICAgICAgaWYgKHBEZXN0RmlsdGVyKSB7DQorICAgICAgICAgICAgICAgIGlmIChwRmlyc3RGaWx0ZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgcEZpcnN0RmlsdGVyID0gcERlc3RGaWx0ZXI7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBwRmlyc3RGaWx0ZXItPlNldERlc3RGaWx0ZXIocERlc3RGaWx0ZXIpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKHBQYXJhbXMgJiYgcFBhcmFtcy0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICAgICAgcFBhcmFtcyA9IE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBwRmlyc3RGaWx0ZXIgPSBGUERGX0NyZWF0ZUZpbHRlcihwRGVjb2Rlci0+R2V0U3RyaW5nKCksIChDUERGX0RpY3Rpb25hcnkqKXBQYXJhbXMsIHdpZHRoLCBoZWlnaHQpOw0KKyAgICB9DQorICAgIHJldHVybiBwRmlyc3RGaWx0ZXI7DQorfQ0KK0NQREZfU3RyZWFtRmlsdGVyKiBDUERGX1N0cmVhbTo6R2V0U3RyZWFtRmlsdGVyKEZYX0JPT0wgYlJhdykgY29uc3QNCit7DQorICAgIENGWF9EYXRhRmlsdGVyKiBwRmlyc3RGaWx0ZXIgPSBOVUxMOw0KKyAgICBpZiAobV9wQ3J5cHRvSGFuZGxlcikgew0KKyAgICAgICAgcEZpcnN0RmlsdGVyID0gRlhfTkVXIENQREZfRGVjcnlwdEZpbHRlcihtX3BDcnlwdG9IYW5kbGVyLCBtX09iak51bSwgbV9HZW5OdW0pOw0KKyAgICB9DQorICAgIGlmICghYlJhdykgew0KKyAgICAgICAgQ0ZYX0RhdGFGaWx0ZXIqIHBGaWx0ZXIgPSBfRlBERl9DcmVhdGVGaWx0ZXJGcm9tRGljdChtX3BEaWN0KTsNCisgICAgICAgIGlmIChwRmlsdGVyKSB7DQorICAgICAgICAgICAgaWYgKHBGaXJzdEZpbHRlciA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHBGaXJzdEZpbHRlciA9IHBGaWx0ZXI7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcEZpcnN0RmlsdGVyLT5TZXREZXN0RmlsdGVyKHBGaWx0ZXIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDUERGX1N0cmVhbUZpbHRlciogcFN0cmVhbUZpbHRlciA9IEZYX05FVyBDUERGX1N0cmVhbUZpbHRlcjsNCisgICAgcFN0cmVhbUZpbHRlci0+bV9wU3RyZWFtID0gdGhpczsNCisgICAgcFN0cmVhbUZpbHRlci0+bV9wRmlsdGVyID0gcEZpcnN0RmlsdGVyOw0KKyAgICBwU3RyZWFtRmlsdGVyLT5tX3BCdWZmZXIgPSBOVUxMOw0KKyAgICBwU3RyZWFtRmlsdGVyLT5tX1NyY09mZnNldCA9IDA7DQorICAgIHJldHVybiBwU3RyZWFtRmlsdGVyOw0KK30NCitDUERGX1N0cmVhbUZpbHRlcjo6fkNQREZfU3RyZWFtRmlsdGVyKCkNCit7DQorICAgIGlmIChtX3BGaWx0ZXIpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BGaWx0ZXI7DQorICAgIH0NCisgICAgaWYgKG1fcEJ1ZmZlcikgew0KKyAgICAgICAgZGVsZXRlIG1fcEJ1ZmZlcjsNCisgICAgfQ0KK30NCisjZGVmaW5lIEZQREZfRklMVEVSX0JVRkZFUl9JTl9TSVpFCUZQREZfRklMVEVSX0JVRkZFUl9TSVpFDQorRlhfRFdPUkQgQ1BERl9TdHJlYW1GaWx0ZXI6OlJlYWRCbG9jayhGWF9MUEJZVEUgYnVmZmVyLCBGWF9EV09SRCBidWZfc2l6ZSkNCit7DQorICAgIGlmIChtX3BGaWx0ZXIgPT0gTlVMTCkgew0KKyAgICAgICAgRlhfRFdPUkQgcmVhZF9zaXplID0gbV9wU3RyZWFtLT5HZXRSYXdTaXplKCkgLSBtX1NyY09mZnNldDsNCisgICAgICAgIGlmIChyZWFkX3NpemUgPT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHJlYWRfc2l6ZSA+IGJ1Zl9zaXplKSB7DQorICAgICAgICAgICAgcmVhZF9zaXplID0gYnVmX3NpemU7DQorICAgICAgICB9DQorICAgICAgICBtX3BTdHJlYW0tPlJlYWRSYXdEYXRhKG1fU3JjT2Zmc2V0LCBidWZmZXIsIHJlYWRfc2l6ZSk7DQorICAgICAgICBtX1NyY09mZnNldCArPSByZWFkX3NpemU7DQorICAgICAgICByZXR1cm4gcmVhZF9zaXplOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIHJlYWRfc2l6ZSA9IDA7DQorICAgIGlmIChtX3BCdWZmZXIpIHsNCisgICAgICAgIHJlYWRfc2l6ZSA9IFJlYWRMZWZ0T3ZlcihidWZmZXIsIGJ1Zl9zaXplKTsNCisgICAgICAgIGlmIChyZWFkX3NpemUgPT0gYnVmX3NpemUpIHsNCisgICAgICAgICAgICByZXR1cm4gcmVhZF9zaXplOw0KKyAgICAgICAgfQ0KKyAgICAgICAgYnVmZmVyICs9IHJlYWRfc2l6ZTsNCisgICAgICAgIGJ1Zl9zaXplIC09IHJlYWRfc2l6ZTsNCisgICAgfQ0KKyAgICBBU1NFUlQobV9wQnVmZmVyID09IE5VTEwpOw0KKyAgICBpZiAobV9wRmlsdGVyLT5Jc0VPRigpKSB7DQorICAgICAgICByZXR1cm4gcmVhZF9zaXplOw0KKyAgICB9DQorICAgIG1fcEJ1ZmZlciA9IEZYX05FVyBDRlhfQmluYXJ5QnVmOw0KKyAgICBtX3BCdWZmZXItPkVzdGltYXRlU2l6ZShGUERGX0ZJTFRFUl9CVUZGRVJfU0laRSwgRlBERl9GSUxURVJfQlVGRkVSX1NJWkUpOw0KKyAgICBtX0J1Zk9mZnNldCA9IDA7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpbnQgc3JjX3NpemUgPSBtX3BTdHJlYW0tPkdldFJhd1NpemUoKSAtIG1fU3JjT2Zmc2V0Ow0KKyAgICAgICAgaWYgKHNyY19zaXplID09IDApIHsNCisgICAgICAgICAgICBtX3BGaWx0ZXItPkZpbHRlckZpbmlzaCgqbV9wQnVmZmVyKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfc2l6ZSA+IEZQREZfRklMVEVSX0JVRkZFUl9JTl9TSVpFKSB7DQorICAgICAgICAgICAgc3JjX3NpemUgPSBGUERGX0ZJTFRFUl9CVUZGRVJfSU5fU0laRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghbV9wU3RyZWFtLT5SZWFkUmF3RGF0YShtX1NyY09mZnNldCwgbV9TcmNCdWZmZXIsIHNyY19zaXplKSkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9TcmNPZmZzZXQgKz0gc3JjX3NpemU7DQorICAgICAgICBtX3BGaWx0ZXItPkZpbHRlckluKG1fU3JjQnVmZmVyLCBzcmNfc2l6ZSwgKm1fcEJ1ZmZlcik7DQorICAgICAgICBpZiAobV9wQnVmZmVyLT5HZXRTaXplKCkgPj0gKGludClidWZfc2l6ZSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiByZWFkX3NpemUgKyBSZWFkTGVmdE92ZXIoYnVmZmVyLCBidWZfc2l6ZSk7DQorfQ0KK0ZYX0RXT1JEIENQREZfU3RyZWFtRmlsdGVyOjpSZWFkTGVmdE92ZXIoRlhfTFBCWVRFIGJ1ZmZlciwgRlhfRFdPUkQgYnVmX3NpemUpDQorew0KKyAgICBGWF9EV09SRCByZWFkX3NpemUgPSBtX3BCdWZmZXItPkdldFNpemUoKSAtIG1fQnVmT2Zmc2V0Ow0KKyAgICBpZiAocmVhZF9zaXplID4gYnVmX3NpemUpIHsNCisgICAgICAgIHJlYWRfc2l6ZSA9IGJ1Zl9zaXplOw0KKyAgICB9DQorICAgIEZYU1lTX21lbWNweTMyKGJ1ZmZlciwgbV9wQnVmZmVyLT5HZXRCdWZmZXIoKSArIG1fQnVmT2Zmc2V0LCByZWFkX3NpemUpOw0KKyAgICBtX0J1Zk9mZnNldCArPSByZWFkX3NpemU7DQorICAgIGlmIChtX0J1Zk9mZnNldCA9PSAoRlhfRFdPUkQpbV9wQnVmZmVyLT5HZXRTaXplKCkpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BCdWZmZXI7DQorICAgICAgICBtX3BCdWZmZXIgPSBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiByZWFkX3NpemU7DQorfQ0KK0NQREZfRGVjcnlwdEZpbHRlcjo6Q1BERl9EZWNyeXB0RmlsdGVyKENQREZfQ3J5cHRvSGFuZGxlciogcENyeXB0b0hhbmRsZXIsIEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgZ2VubnVtKQ0KK3sNCisgICAgbV9wQ3J5cHRvSGFuZGxlciA9IHBDcnlwdG9IYW5kbGVyOw0KKyAgICBtX3BDb250ZXh0ID0gTlVMTDsNCisgICAgbV9PYmpOdW0gPSBvYmpudW07DQorICAgIG1fR2VuTnVtID0gZ2VubnVtOw0KK30NCitDUERGX0RlY3J5cHRGaWx0ZXI6On5DUERGX0RlY3J5cHRGaWx0ZXIoKQ0KK3sNCisgICAgQ0ZYX0JpbmFyeUJ1ZiBidWY7DQorICAgIGlmIChtX3BDb250ZXh0KSB7DQorICAgICAgICBtX3BDcnlwdG9IYW5kbGVyLT5EZWNyeXB0RmluaXNoKG1fcENvbnRleHQsIGJ1Zik7DQorICAgIH0NCit9DQordm9pZCBDUERGX0RlY3J5cHRGaWx0ZXI6OnZfRmlsdGVySW4oRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpDQorew0KKyAgICBpZiAobV9wQ29udGV4dCA9PSBOVUxMKSB7DQorICAgICAgICBtX3BDb250ZXh0ID0gbV9wQ3J5cHRvSGFuZGxlci0+RGVjcnlwdFN0YXJ0KG1fT2JqTnVtLCBtX0dlbk51bSk7DQorICAgIH0NCisgICAgbV9wQ3J5cHRvSGFuZGxlci0+RGVjcnlwdFN0cmVhbShtX3BDb250ZXh0LCBzcmNfYnVmLCBzcmNfc2l6ZSwgZGVzdF9idWYpOw0KK30NCit2b2lkIENQREZfRGVjcnlwdEZpbHRlcjo6dl9GaWx0ZXJGaW5pc2goQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpDQorew0KKyAgICBtX2JFT0YgPSBUUlVFOw0KKyAgICBpZiAobV9wQ29udGV4dCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wQ3J5cHRvSGFuZGxlci0+RGVjcnlwdEZpbmlzaChtX3BDb250ZXh0LCBkZXN0X2J1Zik7DQorICAgIG1fcENvbnRleHQgPSBOVUxMOw0KK30NCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIHZvaWQqIG15X2FsbG9jX2Z1bmMgKHZvaWQqIG9wYXF1ZSwgdW5zaWduZWQgaW50IGl0ZW1zLCB1bnNpZ25lZCBpbnQgc2l6ZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX0FsbG9jKEZYX0JZVEUsIGl0ZW1zICogc2l6ZSk7DQorICAgIH0NCisgICAgc3RhdGljIHZvaWQgICBteV9mcmVlX2Z1bmMgICh2b2lkKiBvcGFxdWUsIHZvaWQqIGFkZHJlc3MpDQorICAgIHsNCisgICAgICAgIEZYX0ZyZWUoYWRkcmVzcyk7DQorICAgIH0NCisgICAgdm9pZCogRlBERkFQSV9GbGF0ZUluaXQodm9pZCogKCphbGxvY19mdW5jKSh2b2lkKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqZnJlZV9mdW5jKSh2b2lkKiwgdm9pZCopKTsNCisgICAgdm9pZCBGUERGQVBJX0ZsYXRlSW5wdXQodm9pZCogY29udGV4dCwgY29uc3QgdW5zaWduZWQgY2hhciogc3JjX2J1ZiwgdW5zaWduZWQgaW50IHNyY19zaXplKTsNCisgICAgaW50IEZQREZBUElfRmxhdGVPdXRwdXQodm9pZCogY29udGV4dCwgdW5zaWduZWQgY2hhciogZGVzdF9idWYsIHVuc2lnbmVkIGludCBkZXN0X3NpemUpOw0KKyAgICBpbnQgRlBERkFQSV9GbGF0ZUdldEF2YWlsSW4odm9pZCogY29udGV4dCk7DQorICAgIGludCBGUERGQVBJX0ZsYXRlR2V0QXZhaWxPdXQodm9pZCogY29udGV4dCk7DQorICAgIHZvaWQgRlBERkFQSV9GbGF0ZUVuZCh2b2lkKiBjb250ZXh0KTsNCit9DQorQ1BERl9GbGF0ZUZpbHRlcjo6Q1BERl9GbGF0ZUZpbHRlcigpDQorew0KKyAgICBtX3BDb250ZXh0ID0gTlVMTDsNCit9DQorQ1BERl9GbGF0ZUZpbHRlcjo6fkNQREZfRmxhdGVGaWx0ZXIoKQ0KK3sNCisgICAgaWYgKG1fcENvbnRleHQpIHsNCisgICAgICAgIEZQREZBUElfRmxhdGVFbmQobV9wQ29udGV4dCk7DQorICAgIH0NCit9DQordm9pZCBDUERGX0ZsYXRlRmlsdGVyOjp2X0ZpbHRlckluKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKQ0KK3sNCisgICAgaWYgKG1fcENvbnRleHQgPT0gTlVMTCkgew0KKyAgICAgICAgbV9wQ29udGV4dCA9IEZQREZBUElfRmxhdGVJbml0KG15X2FsbG9jX2Z1bmMsIG15X2ZyZWVfZnVuYyk7DQorICAgIH0NCisgICAgRlBERkFQSV9GbGF0ZUlucHV0KG1fcENvbnRleHQsIHNyY19idWYsIHNyY19zaXplKTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGludCByZXQgPSBGUERGQVBJX0ZsYXRlT3V0cHV0KG1fcENvbnRleHQsIG1fRGVzdEJ1ZmZlciwgRlBERl9GSUxURVJfQlVGRkVSX1NJWkUpOw0KKyAgICAgICAgaW50IG91dF9zaXplID0gRlBERl9GSUxURVJfQlVGRkVSX1NJWkUgLSBGUERGQVBJX0ZsYXRlR2V0QXZhaWxPdXQobV9wQ29udGV4dCk7DQorICAgICAgICBkZXN0X2J1Zi5BcHBlbmRCbG9jayhtX0Rlc3RCdWZmZXIsIG91dF9zaXplKTsNCisgICAgICAgIGlmIChyZXQgPT0gWl9CVUZfRVJST1IpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChyZXQgIT0gWl9PSykgew0KKyAgICAgICAgICAgIFJlcG9ydEVPRihGUERGQVBJX0ZsYXRlR2V0QXZhaWxJbihtX3BDb250ZXh0KSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ1BERl9MendGaWx0ZXI6OkNQREZfTHp3RmlsdGVyKEZYX0JPT0wgYkVhcmx5Q2hhbmdlKQ0KK3sNCisgICAgbV9iRWFybHlDaGFuZ2UgPSBiRWFybHlDaGFuZ2UgPyAxIDogMDsNCisgICAgbV9Db2RlTGVuID0gOTsNCisgICAgbV9uQ29kZXMgPSAwOw0KKyAgICBtX25MZWZ0Qml0cyA9IDA7DQorICAgIG1fTGVmdEJpdHMgPSAwOw0KKyAgICBtX09sZENvZGUgPSAoRlhfRFdPUkQpIC0gMTsNCit9DQordm9pZCBDUERGX0x6d0ZpbHRlcjo6dl9GaWx0ZXJJbihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1ZikNCit7DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBzcmNfc2l6ZTsgaSArKykgew0KKyAgICAgICAgaWYgKG1fbkxlZnRCaXRzICsgOCA8IG1fQ29kZUxlbikgew0KKyAgICAgICAgICAgIG1fbkxlZnRCaXRzICs9IDg7DQorICAgICAgICAgICAgbV9MZWZ0Qml0cyA9IChtX0xlZnRCaXRzIDw8IDgpIHwgc3JjX2J1ZltpXTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0RXT1JEIG5ld19iaXRzID0gbV9Db2RlTGVuIC0gbV9uTGVmdEJpdHM7DQorICAgICAgICBGWF9EV09SRCBjb2RlID0gKG1fTGVmdEJpdHMgPDwgbmV3X2JpdHMpIHwgKHNyY19idWZbaV0gPj4gKDggLSBuZXdfYml0cykpOw0KKyAgICAgICAgbV9uTGVmdEJpdHMgPSA4IC0gbmV3X2JpdHM7DQorICAgICAgICBtX0xlZnRCaXRzID0gc3JjX2J1ZltpXSAlICgxIDw8IG1fbkxlZnRCaXRzKTsNCisgICAgICAgIGlmIChjb2RlIDwgMjU2KSB7DQorICAgICAgICAgICAgZGVzdF9idWYuQXBwZW5kQnl0ZSgoRlhfQllURSljb2RlKTsNCisgICAgICAgICAgICBtX0xhc3RDaGFyID0gKEZYX0JZVEUpY29kZTsNCisgICAgICAgICAgICBpZiAobV9PbGRDb2RlICE9IC0xKSB7DQorICAgICAgICAgICAgICAgIEFkZENvZGUobV9PbGRDb2RlLCBtX0xhc3RDaGFyKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9PbGRDb2RlID0gY29kZTsNCisgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSAyNTYpIHsNCisgICAgICAgICAgICBtX0NvZGVMZW4gPSA5Ow0KKyAgICAgICAgICAgIG1fbkNvZGVzID0gMDsNCisgICAgICAgICAgICBtX09sZENvZGUgPSAoRlhfRFdPUkQpIC0gMTsNCisgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSAyNTcpIHsNCisgICAgICAgICAgICBSZXBvcnRFT0Yoc3JjX3NpemUgLSBpIC0gMSk7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAobV9PbGRDb2RlID09IC0xKSB7DQorICAgICAgICAgICAgICAgIFJlcG9ydEVPRihzcmNfc2l6ZSAtIGkgLSAxKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX1N0YWNrTGVuID0gMDsNCisgICAgICAgICAgICBpZiAoY29kZSA+PSBtX25Db2RlcyArIDI1OCkgew0KKyAgICAgICAgICAgICAgICBpZiAobV9TdGFja0xlbiA8IHNpemVvZihtX0RlY29kZVN0YWNrKSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9EZWNvZGVTdGFja1ttX1N0YWNrTGVuKytdID0gbV9MYXN0Q2hhcjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBEZWNvZGVTdHJpbmcobV9PbGRDb2RlKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBEZWNvZGVTdHJpbmcoY29kZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3RfYnVmLkFwcGVuZEJsb2NrKE5VTEwsIG1fU3RhY2tMZW4pOw0KKyAgICAgICAgICAgIEZYX0xQQllURSBwT3V0cHV0ID0gZGVzdF9idWYuR2V0QnVmZmVyKCkgKyBkZXN0X2J1Zi5HZXRTaXplKCkgLSBtX1N0YWNrTGVuOw0KKyAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgY2MgPSAwOyBjYyA8IG1fU3RhY2tMZW47IGNjICsrKSB7DQorICAgICAgICAgICAgICAgIHBPdXRwdXRbY2NdID0gbV9EZWNvZGVTdGFja1ttX1N0YWNrTGVuIC0gY2MgLSAxXTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9MYXN0Q2hhciA9IG1fRGVjb2RlU3RhY2tbbV9TdGFja0xlbiAtIDFdOw0KKyAgICAgICAgICAgIGlmIChtX09sZENvZGUgPCAyNTYpIHsNCisgICAgICAgICAgICAgICAgQWRkQ29kZShtX09sZENvZGUsIG1fTGFzdENoYXIpOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9PbGRDb2RlIC0gMjU4ID49IG1fbkNvZGVzKSB7DQorICAgICAgICAgICAgICAgIFJlcG9ydEVPRihzcmNfc2l6ZSAtIGkgLSAxKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIEFkZENvZGUobV9PbGRDb2RlLCBtX0xhc3RDaGFyKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9PbGRDb2RlID0gY29kZTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCit2b2lkIENQREZfTHp3RmlsdGVyOjpBZGRDb2RlKEZYX0RXT1JEIHByZWZpeF9jb2RlLCBGWF9CWVRFIGFwcGVuZF9jaGFyKQ0KK3sNCisgICAgaWYgKG1fbkNvZGVzICsgbV9iRWFybHlDaGFuZ2UgPT0gNDA5NCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fQ29kZUFycmF5W21fbkNvZGVzICsrXSA9IChwcmVmaXhfY29kZSA8PCAxNikgfCBhcHBlbmRfY2hhcjsNCisgICAgaWYgKG1fbkNvZGVzICsgbV9iRWFybHlDaGFuZ2UgPT0gNTEyIC0gMjU4KSB7DQorICAgICAgICBtX0NvZGVMZW4gPSAxMDsNCisgICAgfSBlbHNlIGlmIChtX25Db2RlcyArIG1fYkVhcmx5Q2hhbmdlID09IDEwMjQgLSAyNTgpIHsNCisgICAgICAgIG1fQ29kZUxlbiA9IDExOw0KKyAgICB9IGVsc2UgaWYgKG1fbkNvZGVzICsgbV9iRWFybHlDaGFuZ2UgPT0gMjA0OCAtIDI1OCkgew0KKyAgICAgICAgbV9Db2RlTGVuID0gMTI7DQorICAgIH0NCit9DQordm9pZCBDUERGX0x6d0ZpbHRlcjo6RGVjb2RlU3RyaW5nKEZYX0RXT1JEIGNvZGUpDQorew0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgaW50IGluZGV4ID0gY29kZSAtIDI1ODsNCisgICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gKGludCltX25Db2Rlcykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgZGF0YSA9IG1fQ29kZUFycmF5W2luZGV4XTsNCisgICAgICAgIGlmIChtX1N0YWNrTGVuID49IHNpemVvZihtX0RlY29kZVN0YWNrKSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIG1fRGVjb2RlU3RhY2tbbV9TdGFja0xlbisrXSA9IChGWF9CWVRFKWRhdGE7DQorICAgICAgICBjb2RlID0gZGF0YSA+PiAxNjsNCisgICAgfQ0KKyAgICBpZiAobV9TdGFja0xlbiA+PSBzaXplb2YobV9EZWNvZGVTdGFjaykpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX0RlY29kZVN0YWNrW21fU3RhY2tMZW4rK10gPSAoRlhfQllURSljb2RlOw0KK30NCitDUERGX1ByZWRpY3RvckZpbHRlcjo6Q1BERl9QcmVkaWN0b3JGaWx0ZXIoaW50IHByZWRpY3RvciwgaW50IGNvbG9ycywgaW50IGJwYywgaW50IGNvbHMpDQorew0KKyAgICBtX2JUaWZmID0gcHJlZGljdG9yIDwgMTA7DQorICAgIG1fcFJlZkxpbmUgPSBOVUxMOw0KKyAgICBtX3BDdXJMaW5lID0gTlVMTDsNCisgICAgbV9pTGluZSA9IDA7DQorICAgIG1fTGluZUluU2l6ZSA9IDA7DQorICAgIG1fQnBwID0gKGNvbG9ycyAqIGJwYyArIDcpIC8gODsNCisgICAgbV9QaXRjaCA9IChjb2xvcnMgKiBicGMgKiBjb2xzICsgNykgLyA4Ow0KKyAgICBpZiAoIW1fYlRpZmYpIHsNCisgICAgICAgIG1fUGl0Y2ggKys7DQorICAgIH0NCit9DQorQ1BERl9QcmVkaWN0b3JGaWx0ZXI6On5DUERGX1ByZWRpY3RvckZpbHRlcigpDQorew0KKyAgICBpZiAobV9wQ3VyTGluZSkgew0KKyAgICAgICAgRlhfRnJlZShtX3BDdXJMaW5lKTsNCisgICAgfQ0KKyAgICBpZiAobV9wUmVmTGluZSkgew0KKyAgICAgICAgRlhfRnJlZShtX3BSZWZMaW5lKTsNCisgICAgfQ0KK30NCitzdGF0aWMgRlhfQllURSBQYWV0aFByZWRpY3RvcihpbnQgYSwgaW50IGIsIGludCBjKQ0KK3sNCisgICAgaW50IHAgPSBhICsgYiAtIGM7DQorICAgIGludCBwYSA9IEZYU1lTX2FicyhwIC0gYSk7DQorICAgIGludCBwYiA9IEZYU1lTX2FicyhwIC0gYik7DQorICAgIGludCBwYyA9IEZYU1lTX2FicyhwIC0gYyk7DQorICAgIGlmIChwYSA8PSBwYiAmJiBwYSA8PSBwYykgew0KKyAgICAgICAgcmV0dXJuIChGWF9CWVRFKWE7DQorICAgIH0NCisgICAgaWYgKHBiIDw9IHBjKSB7DQorICAgICAgICByZXR1cm4gKEZYX0JZVEUpYjsNCisgICAgfQ0KKyAgICByZXR1cm4gKEZYX0JZVEUpYzsNCit9DQorc3RhdGljIHZvaWQgUE5HX1ByZWRpY3RvckxpbmUoRlhfTFBCWVRFIGN1cl9idWYsIEZYX0xQQllURSByZWZfYnVmLCBpbnQgcGl0Y2gsIGludCBCcHApDQorew0KKyAgICBGWF9CWVRFIHRhZyA9IGN1cl9idWZbMF07DQorICAgIGlmICh0YWcgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGN1cl9idWYgKys7DQorICAgIGlmIChyZWZfYnVmKSB7DQorICAgICAgICByZWZfYnVmICsrOw0KKyAgICB9DQorICAgIGZvciAoaW50IGJ5dGUgPSAwOyBieXRlIDwgcGl0Y2g7IGJ5dGUgKyspIHsNCisgICAgICAgIEZYX0JZVEUgcmF3X2J5dGUgPSBjdXJfYnVmW2J5dGVdOw0KKyAgICAgICAgc3dpdGNoICh0YWcpIHsNCisgICAgICAgICAgICBjYXNlIDE6CXsNCisgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgbGVmdCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZSA+PSBCcHApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gY3VyX2J1ZltieXRlIC0gQnBwXTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGN1cl9idWZbYnl0ZV0gPSByYXdfYnl0ZSArIGxlZnQ7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgMjogew0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSB1cCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBpZiAocmVmX2J1Zikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHVwID0gcmVmX2J1ZltieXRlXTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGN1cl9idWZbYnl0ZV0gPSByYXdfYnl0ZSArIHVwOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjYXNlIDM6IHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgbGVmdCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZSA+PSBCcHApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gY3VyX2J1ZltieXRlIC0gQnBwXTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgdXAgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlZl9idWYpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICB1cCA9IHJlZl9idWZbYnl0ZV07DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBjdXJfYnVmW2J5dGVdID0gcmF3X2J5dGUgKyAodXAgKyBsZWZ0KSAvIDI7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgNDogew0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSBsZWZ0ID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID49IEJwcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBjdXJfYnVmW2J5dGUgLSBCcHBdOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSB1cCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBpZiAocmVmX2J1Zikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHVwID0gcmVmX2J1ZltieXRlXTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgdXBwZXJfbGVmdCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZSA+PSBCcHAgJiYgcmVmX2J1Zikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyX2xlZnQgPSByZWZfYnVmW2J5dGUgLSBCcHBdOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgY3VyX2J1ZltieXRlXSA9IHJhd19ieXRlICsgUGFldGhQcmVkaWN0b3IobGVmdCwgdXAsIHVwcGVyX2xlZnQpOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KK30NCit2b2lkIENQREZfUHJlZGljdG9yRmlsdGVyOjp2X0ZpbHRlckluKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKQ0KK3sNCisgICAgaWYgKG1fcEN1ckxpbmUgPT0gTlVMTCkgew0KKyAgICAgICAgbV9wQ3VyTGluZSA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2gpOw0KKyAgICAgICAgaWYgKCFtX2JUaWZmKSB7DQorICAgICAgICAgICAgbV9wUmVmTGluZSA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2gpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBGWF9EV09SRCByZWFkX3NpemUgPSBtX1BpdGNoIC0gbV9MaW5lSW5TaXplOw0KKyAgICAgICAgaWYgKHJlYWRfc2l6ZSA+IHNyY19zaXplKSB7DQorICAgICAgICAgICAgcmVhZF9zaXplID0gc3JjX3NpemU7DQorICAgICAgICB9DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BDdXJMaW5lICsgbV9MaW5lSW5TaXplLCBzcmNfYnVmLCByZWFkX3NpemUpOw0KKyAgICAgICAgbV9MaW5lSW5TaXplICs9IHJlYWRfc2l6ZTsNCisgICAgICAgIGlmIChtX0xpbmVJblNpemUgPCBtX1BpdGNoKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBzcmNfYnVmICs9IHJlYWRfc2l6ZTsNCisgICAgICAgIHNyY19zaXplIC09IHJlYWRfc2l6ZTsNCisgICAgICAgIGlmIChtX2JUaWZmKSB7DQorICAgICAgICAgICAgZm9yIChGWF9EV09SRCBieXRlID0gbV9CcHA7IGJ5dGUgPCBtX1BpdGNoOyBieXRlICsrKSB7DQorICAgICAgICAgICAgICAgIG1fcEN1ckxpbmVbYnl0ZV0gKz0gbV9wQ3VyTGluZVtieXRlIC0gbV9CcHBdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X2J1Zi5BcHBlbmRCbG9jayhtX3BDdXJMaW5lLCBtX1BpdGNoKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgUE5HX1ByZWRpY3RvckxpbmUobV9wQ3VyTGluZSwgbV9pTGluZSA/IG1fcFJlZkxpbmUgOiBOVUxMLCBtX1BpdGNoIC0gMSwgbV9CcHApOw0KKyAgICAgICAgICAgIGRlc3RfYnVmLkFwcGVuZEJsb2NrKG1fcEN1ckxpbmUgKyAxLCBtX1BpdGNoIC0gMSk7DQorICAgICAgICAgICAgbV9pTGluZSArKzsNCisgICAgICAgICAgICBGWF9MUEJZVEUgdGVtcCA9IG1fcEN1ckxpbmU7DQorICAgICAgICAgICAgbV9wQ3VyTGluZSA9IG1fcFJlZkxpbmU7DQorICAgICAgICAgICAgbV9wUmVmTGluZSA9IHRlbXA7DQorICAgICAgICB9DQorICAgICAgICBtX0xpbmVJblNpemUgPSAwOw0KKyAgICB9DQorfQ0KK0NQREZfQXNjaWk4NUZpbHRlcjo6Q1BERl9Bc2NpaTg1RmlsdGVyKCkNCit7DQorICAgIG1fU3RhdGUgPSAwOw0KKyAgICBtX0NoYXJDb3VudCA9IDA7DQorfQ0KK2V4dGVybiBjb25zdCBGWF9MUENTVFIgX1BERl9DaGFyVHlwZTsNCit2b2lkIENQREZfQXNjaWk4NUZpbHRlcjo6dl9GaWx0ZXJJbihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1ZikNCit7DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBzcmNfc2l6ZTsgaSArKykgew0KKyAgICAgICAgRlhfQllURSBieXRlID0gc3JjX2J1ZltpXTsNCisgICAgICAgIGlmIChfUERGX0NoYXJUeXBlW2J5dGVdID09ICdXJykgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3dpdGNoIChtX1N0YXRlKSB7DQorICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgICAgICBpZiAoYnl0ZSA+PSAnIScgJiYgYnl0ZSA8PSAndScpIHsNCisgICAgICAgICAgICAgICAgICAgIGludCBkaWdpdCA9IGJ5dGUgLSAnISc7DQorICAgICAgICAgICAgICAgICAgICBtX0N1ckRXb3JkID0gZGlnaXQ7DQorICAgICAgICAgICAgICAgICAgICBtX0NoYXJDb3VudCA9IDE7DQorICAgICAgICAgICAgICAgICAgICBtX1N0YXRlID0gMTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChieXRlID09ICd6Jykgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IHplcm8gPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9idWYuQXBwZW5kQmxvY2soJnplcm8sIDQpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ5dGUgPT0gJ34nKSB7DQorICAgICAgICAgICAgICAgICAgICBtX1N0YXRlID0gMjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDE6IHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID49ICchJyAmJiBieXRlIDw9ICd1Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaWdpdCA9IGJ5dGUgLSAnISc7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9DdXJEV29yZCA9IG1fQ3VyRFdvcmQgKiA4NSArIGRpZ2l0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fQ2hhckNvdW50ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0NoYXJDb3VudCA9PSA1KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9idWYuQXBwZW5kQnl0ZSgoRlhfQllURSkobV9DdXJEV29yZCA+PiAoMyAtIGkpICogOCkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RhdGUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnl0ZSA9PSAnficpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9DaGFyQ291bnQgPiAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBtX0NoYXJDb3VudDsgaSA8IDU7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fQ3VyRFdvcmQgPSBtX0N1ckRXb3JkICogODUgKyA4NDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbV9DaGFyQ291bnQgLSAxOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2J1Zi5BcHBlbmRCeXRlKChGWF9CWVRFKShtX0N1ckRXb3JkID4+ICgzIC0gaSkgKiA4KSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9TdGF0ZSA9IDI7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgMjoNCisgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPT0gJz4nKSB7DQorICAgICAgICAgICAgICAgICAgICBSZXBvcnRFT0Yoc3JjX3NpemUgLSBpIC0gMSk7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ1BERl9Bc2NpaUhleEZpbHRlcjo6Q1BERl9Bc2NpaUhleEZpbHRlcigpDQorew0KKyAgICBtX1N0YXRlID0gMDsNCit9DQordm9pZCBDUERGX0FzY2lpSGV4RmlsdGVyOjp2X0ZpbHRlckluKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKQ0KK3sNCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHNyY19zaXplOyBpICsrKSB7DQorICAgICAgICBGWF9CWVRFIGJ5dGUgPSBzcmNfYnVmW2ldOw0KKyAgICAgICAgaWYgKF9QREZfQ2hhclR5cGVbYnl0ZV0gPT0gJ1cnKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpbnQgZGlnaXQ7DQorICAgICAgICBpZiAoYnl0ZSA+PSAnMCcgJiYgYnl0ZSA8PSAnOScpIHsNCisgICAgICAgICAgICBkaWdpdCA9IGJ5dGUgLSAnMCc7DQorICAgICAgICB9IGVsc2UgaWYgKGJ5dGUgPj0gJ2EnICYmIGJ5dGUgPD0gJ2YnKSB7DQorICAgICAgICAgICAgZGlnaXQgPSBieXRlIC0gJ2EnICsgMTA7DQorICAgICAgICB9IGVsc2UgaWYgKGJ5dGUgPj0gJ0EnICYmIGJ5dGUgPD0gJ0YnKSB7DQorICAgICAgICAgICAgZGlnaXQgPSBieXRlIC0gJ0EnICsgMTA7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChtX1N0YXRlKSB7DQorICAgICAgICAgICAgICAgIGRlc3RfYnVmLkFwcGVuZEJ5dGUobV9GaXJzdERpZ2l0ICogMTYpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBSZXBvcnRFT0Yoc3JjX3NpemUgLSBpIC0gMSk7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fU3RhdGUgPT0gMCkgew0KKyAgICAgICAgICAgIG1fRmlyc3REaWdpdCA9IGRpZ2l0Ow0KKyAgICAgICAgICAgIG1fU3RhdGUgKys7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGRlc3RfYnVmLkFwcGVuZEJ5dGUobV9GaXJzdERpZ2l0ICogMTYgKyBkaWdpdCk7DQorICAgICAgICAgICAgbV9TdGF0ZSAtLTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDUERGX1J1bkxlbkZpbHRlcjo6Q1BERl9SdW5MZW5GaWx0ZXIoKQ0KK3sNCisgICAgbV9TdGF0ZSA9IDA7DQorICAgIG1fQ291bnQgPSAwOw0KK30NCit2b2lkIENQREZfUnVuTGVuRmlsdGVyOjp2X0ZpbHRlckluKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIENGWF9CaW5hcnlCdWYmIGRlc3RfYnVmKQ0KK3sNCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHNyY19zaXplOyBpICsrKSB7DQorICAgICAgICBGWF9CWVRFIGJ5dGUgPSBzcmNfYnVmW2ldOw0KKyAgICAgICAgc3dpdGNoIChtX1N0YXRlKSB7DQorICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgICAgICBpZiAoYnl0ZSA8IDEyOCkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9TdGF0ZSA9IDE7DQorICAgICAgICAgICAgICAgICAgICBtX0NvdW50ID0gYnl0ZSArIDE7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnl0ZSA9PSAxMjgpIHsNCisgICAgICAgICAgICAgICAgICAgIFJlcG9ydEVPRihzcmNfc2l6ZSAtIGkgLSAxKTsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG1fU3RhdGUgPSAyOw0KKyAgICAgICAgICAgICAgICAgICAgbV9Db3VudCA9IDI1NyAtIGJ5dGU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICBkZXN0X2J1Zi5BcHBlbmRCeXRlKGJ5dGUpOw0KKyAgICAgICAgICAgICAgICBtX0NvdW50IC0tOw0KKyAgICAgICAgICAgICAgICBpZiAobV9Db3VudCA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBtX1N0YXRlID0gMDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDI6CXsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYnVmLkFwcGVuZEJsb2NrKE5VTEwsIG1fQ291bnQpOw0KKyAgICAgICAgICAgICAgICAgICAgRlhTWVNfbWVtc2V0OChkZXN0X2J1Zi5HZXRCdWZmZXIoKSArIGRlc3RfYnVmLkdldFNpemUoKSAtIG1fQ291bnQsIGJ5dGUsIG1fQ291bnQpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9TdGF0ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NQREZfSnBlZ0ZpbHRlcjo6Q1BERl9KcGVnRmlsdGVyKCkNCit7DQorICAgIG1fcENvbnRleHQgPSBOVUxMOw0KKyAgICBtX2JHb3RIZWFkZXIgPSBGQUxTRTsNCisgICAgbV9wU2NhbmxpbmUgPSBOVUxMOw0KKyAgICBtX2lMaW5lID0gMDsNCit9DQorQ1BERl9KcGVnRmlsdGVyOjp+Q1BERl9KcGVnRmlsdGVyKCkNCit7DQorICAgIGlmIChtX3BTY2FubGluZSkgew0KKyAgICAgICAgRlhfRnJlZShtX3BTY2FubGluZSk7DQorICAgIH0NCisgICAgaWYgKG1fcENvbnRleHQpIHsNCisgICAgICAgIENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SnBlZ01vZHVsZSgpLT5GaW5pc2gobV9wQ29udGV4dCk7DQorICAgIH0NCit9DQordm9pZCBDUERGX0pwZWdGaWx0ZXI6OnZfRmlsdGVySW4oRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpDQorew0KKyAgICBpZiAobV9wQ29udGV4dCA9PSBOVUxMKSB7DQorICAgICAgICBtX3BDb250ZXh0ID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRKcGVnTW9kdWxlKCktPlN0YXJ0KCk7DQorICAgIH0NCisgICAgRlhfTFBDQllURSBqcGVnX3NyY19idWY7DQorICAgIEZYX0RXT1JEIGpwZWdfc3JjX3NpemU7DQorICAgIENGWF9CaW5hcnlCdWYgdGVtcF9idWY7DQorICAgIGlmIChtX0lucHV0QnVmLkdldFNpemUoKSkgew0KKyAgICAgICAgdGVtcF9idWYuRXN0aW1hdGVTaXplKG1fSW5wdXRCdWYuR2V0U2l6ZSgpICsgc3JjX3NpemUpOw0KKyAgICAgICAgdGVtcF9idWYuQXBwZW5kQmxvY2sobV9JbnB1dEJ1Zi5HZXRCdWZmZXIoKSwgbV9JbnB1dEJ1Zi5HZXRTaXplKCkpOw0KKyAgICAgICAgbV9JbnB1dEJ1Zi5DbGVhcigpOw0KKyAgICAgICAgdGVtcF9idWYuQXBwZW5kQmxvY2soc3JjX2J1Ziwgc3JjX3NpemUpOw0KKyAgICAgICAganBlZ19zcmNfYnVmID0gdGVtcF9idWYuR2V0QnVmZmVyKCk7DQorICAgICAgICBqcGVnX3NyY19zaXplID0gdGVtcF9idWYuR2V0U2l6ZSgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAganBlZ19zcmNfYnVmID0gc3JjX2J1ZjsNCisgICAgICAgIGpwZWdfc3JjX3NpemUgPSBzcmNfc2l6ZTsNCisgICAgfQ0KKyAgICBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEpwZWdNb2R1bGUoKS0+SW5wdXQobV9wQ29udGV4dCwganBlZ19zcmNfYnVmLCBqcGVnX3NyY19zaXplKTsNCisgICAgaWYgKCFtX2JHb3RIZWFkZXIpIHsNCisgICAgICAgIGludCByZXQgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEpwZWdNb2R1bGUoKS0+UmVhZEhlYWRlcihtX3BDb250ZXh0LCAmbV9XaWR0aCwgJm1fSGVpZ2h0LCAmbV9uQ29tcHMpOw0KKyAgICAgICAgaW50IGxlZnRfc2l6ZSA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SnBlZ01vZHVsZSgpLT5HZXRBdmFpbElucHV0KG1fcENvbnRleHQpOw0KKyAgICAgICAgaWYgKHJldCA9PSAxKSB7DQorICAgICAgICAgICAgUmVwb3J0RU9GKGxlZnRfc2l6ZSk7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHJldCA9PSAyKSB7DQorICAgICAgICAgICAgbV9JbnB1dEJ1Zi5BcHBlbmRCbG9jayhqcGVnX3NyY19idWYgKyBqcGVnX3NyY19zaXplIC0gbGVmdF9zaXplLCBsZWZ0X3NpemUpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SnBlZ01vZHVsZSgpLT5TdGFydFNjYW5saW5lKG1fcENvbnRleHQsIDEpOw0KKyAgICAgICAgbV9iR290SGVhZGVyID0gVFJVRTsNCisgICAgICAgIG1fUGl0Y2ggPSBtX1dpZHRoICogbV9uQ29tcHM7DQorICAgIH0NCisgICAgaWYgKG1fcFNjYW5saW5lID09IE5VTEwpIHsNCisgICAgICAgIG1fcFNjYW5saW5lID0gRlhfQWxsb2MoRlhfQllURSwgbV9QaXRjaCArIDQpOw0KKyAgICB9DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpZiAoIUNQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SnBlZ01vZHVsZSgpLT5SZWFkU2NhbmxpbmUobV9wQ29udGV4dCwgbV9wU2NhbmxpbmUpKSB7DQorICAgICAgICAgICAgaW50IGxlZnRfc2l6ZSA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SnBlZ01vZHVsZSgpLT5HZXRBdmFpbElucHV0KG1fcENvbnRleHQpOw0KKyAgICAgICAgICAgIG1fSW5wdXRCdWYuQXBwZW5kQmxvY2soanBlZ19zcmNfYnVmICsganBlZ19zcmNfc2l6ZSAtIGxlZnRfc2l6ZSwgbGVmdF9zaXplKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3RfYnVmLkFwcGVuZEJsb2NrKG1fcFNjYW5saW5lLCBtX1BpdGNoKTsNCisgICAgICAgIG1faUxpbmUgKys7DQorICAgICAgICBpZiAobV9pTGluZSA9PSBtX0hlaWdodCkgew0KKyAgICAgICAgICAgIFJlcG9ydEVPRihDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEpwZWdNb2R1bGUoKS0+R2V0QXZhaWxJbnB1dChtX3BDb250ZXh0KSk7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NQREZfRmF4RmlsdGVyOjpDUERGX0ZheEZpbHRlcigpDQorew0KKyAgICBtX0VuY29kaW5nID0gMDsNCisgICAgbV9iRW5kT2ZMaW5lID0gRkFMU0U7DQorICAgIG1fYkJ5dGVBbGlnbiA9IEZBTFNFOw0KKyAgICBtX2JCbGFjayA9IEZBTFNFOw0KKyAgICBtX25Sb3dzID0gMDsNCisgICAgbV9uQ29sdW1ucyA9IDA7DQorICAgIG1fUGl0Y2ggPSAwOw0KKyAgICBtX3BTY2FubGluZUJ1ZiA9IE5VTEw7DQorICAgIG1fcFJlZkJ1ZiA9IE5VTEw7DQorICAgIG1faVJvdyA9IDA7DQorICAgIG1fSW5wdXRCaXRQb3MgPSAwOw0KK30NCitDUERGX0ZheEZpbHRlcjo6fkNQREZfRmF4RmlsdGVyKCkNCit7DQorICAgIGlmIChtX3BTY2FubGluZUJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BTY2FubGluZUJ1Zik7DQorICAgIH0NCisgICAgaWYgKG1fcFJlZkJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BSZWZCdWYpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9GYXhGaWx0ZXI6OkluaXRpYWxpemUoaW50IEVuY29kaW5nLCBpbnQgYkVuZE9mTGluZSwgaW50IGJCeXRlQWxpZ24sIGludCBiQmxhY2ssIGludCBuUm93cywgaW50IG5Db2x1bW5zKQ0KK3sNCisgICAgbV9FbmNvZGluZyA9IEVuY29kaW5nOw0KKyAgICBtX2JFbmRPZkxpbmUgPSBiRW5kT2ZMaW5lOw0KKyAgICBtX2JCeXRlQWxpZ24gPSBiQnl0ZUFsaWduOw0KKyAgICBtX2JCbGFjayA9IGJCbGFjazsNCisgICAgbV9uUm93cyA9IG5Sb3dzOw0KKyAgICBtX25Db2x1bW5zID0gbkNvbHVtbnM7DQorICAgIG1fUGl0Y2ggPSAobV9uQ29sdW1ucyArIDcpIC8gODsNCisgICAgbV9wU2NhbmxpbmVCdWYgPSBGWF9BbGxvYyhGWF9CWVRFLCBtX1BpdGNoKTsNCisgICAgbV9wUmVmQnVmID0gRlhfQWxsb2MoRlhfQllURSwgbV9QaXRjaCk7DQorICAgIEZYU1lTX21lbXNldDgobV9wU2NhbmxpbmVCdWYsIDB4ZmYsIG1fUGl0Y2gpOw0KKyAgICBGWFNZU19tZW1zZXQ4KG1fcFJlZkJ1ZiwgMHhmZiwgbV9QaXRjaCk7DQorICAgIG1faVJvdyA9IDA7DQorICAgIG1fSW5wdXRCaXRQb3MgPSAwOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDUERGX0ZheEZpbHRlcjo6dl9GaWx0ZXJJbihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBDRlhfQmluYXJ5QnVmJiBkZXN0X2J1ZikNCit7DQorICAgIEZYX0xQQ0JZVEUgZmF4X3NyY19idWY7DQorICAgIEZYX0RXT1JEIGZheF9zcmNfc2l6ZTsNCisgICAgQ0ZYX0JpbmFyeUJ1ZiB0ZW1wX2J1ZjsNCisgICAgaW50IGJpdHBvczsNCisgICAgaWYgKG1fSW5wdXRCdWYuR2V0U2l6ZSgpKSB7DQorICAgICAgICB0ZW1wX2J1Zi5Fc3RpbWF0ZVNpemUobV9JbnB1dEJ1Zi5HZXRTaXplKCkgKyBzcmNfc2l6ZSk7DQorICAgICAgICB0ZW1wX2J1Zi5BcHBlbmRCbG9jayhtX0lucHV0QnVmLkdldEJ1ZmZlcigpLCBtX0lucHV0QnVmLkdldFNpemUoKSk7DQorICAgICAgICBtX0lucHV0QnVmLkNsZWFyKCk7DQorICAgICAgICB0ZW1wX2J1Zi5BcHBlbmRCbG9jayhzcmNfYnVmLCBzcmNfc2l6ZSk7DQorICAgICAgICBmYXhfc3JjX2J1ZiA9IHRlbXBfYnVmLkdldEJ1ZmZlcigpOw0KKyAgICAgICAgZmF4X3NyY19zaXplID0gdGVtcF9idWYuR2V0U2l6ZSgpOw0KKyAgICAgICAgYml0cG9zID0gbV9JbnB1dEJpdFBvczsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZheF9zcmNfYnVmID0gc3JjX2J1ZjsNCisgICAgICAgIGZheF9zcmNfc2l6ZSA9IHNyY19zaXplOw0KKyAgICAgICAgYml0cG9zID0gMDsNCisgICAgfQ0KKyAgICBQcm9jZXNzRGF0YShmYXhfc3JjX2J1ZiwgZmF4X3NyY19zaXplLCBiaXRwb3MsIEZBTFNFLCBkZXN0X2J1Zik7DQorICAgIGludCBsZWZ0X2JpdHMgPSBmYXhfc3JjX3NpemUgKiA4IC0gYml0cG9zOw0KKyAgICBtX0lucHV0QnVmLkFwcGVuZEJsb2NrKGZheF9zcmNfYnVmICsgYml0cG9zIC8gOCwgKGxlZnRfYml0cyArIDcpIC8gOCk7DQorICAgIG1fSW5wdXRCaXRQb3MgPSBiaXRwb3MgJSA4Ow0KK30NCit2b2lkIENQREZfRmF4RmlsdGVyOjp2X0ZpbHRlckZpbmlzaChDRlhfQmluYXJ5QnVmJiBkZXN0X2J1ZikNCit7DQorICAgIFByb2Nlc3NEYXRhKG1fSW5wdXRCdWYuR2V0QnVmZmVyKCksIG1fSW5wdXRCdWYuR2V0U2l6ZSgpLCBtX0lucHV0Qml0UG9zLCBUUlVFLCBkZXN0X2J1Zik7DQorfQ0KK0ZYX0JPT0wgX0ZheFNraXBFT0woY29uc3QgRlhfQllURSogc3JjX2J1ZiwgaW50IGJpdHNpemUsIGludCYgYml0cG9zKTsNCitGWF9CT09MIF9GYXhHNEdldFJvdyhjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBpbnQgYml0c2l6ZSwgaW50JiBiaXRwb3MsIEZYX0xQQllURSBkZXN0X2J1ZiwgY29uc3QgRlhfQllURSogcmVmX2J1ZiwgaW50IGNvbHVtbnMpOw0KK0ZYX0JPT0wgX0ZheEdldDFETGluZShjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBpbnQgYml0c2l6ZSwgaW50JiBiaXRwb3MsIEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IGNvbHVtbnMpOw0KK3ZvaWQgQ1BERl9GYXhGaWx0ZXI6OlByb2Nlc3NEYXRhKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCYgYml0cG9zLCBGWF9CT09MIGJGaW5pc2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0JpbmFyeUJ1ZiYgZGVzdF9idWYpDQorew0KKyAgICBpbnQgYml0c2l6ZSA9IHNyY19zaXplICogODsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGlmICgoYml0c2l6ZSA8IGJpdHBvcyArIDI1NikgJiYgIWJGaW5pc2gpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBpbnQgc3RhcnRfYml0cG9zID0gYml0cG9zOw0KKyAgICAgICAgRlhTWVNfbWVtc2V0OChtX3BTY2FubGluZUJ1ZiwgMHhmZiwgbV9QaXRjaCk7DQorICAgICAgICBpZiAoIVJlYWRMaW5lKHNyY19idWYsIGJpdHNpemUsIGJpdHBvcykpIHsNCisgICAgICAgICAgICBiaXRwb3MgPSBzdGFydF9iaXRwb3M7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fRW5jb2RpbmcpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BSZWZCdWYsIG1fcFNjYW5saW5lQnVmLCBtX1BpdGNoKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX2JCbGFjaykgew0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9QaXRjaDsgaSArKykgew0KKyAgICAgICAgICAgICAgICBtX3BTY2FubGluZUJ1ZltpXSA9IH5tX3BTY2FubGluZUJ1ZltpXTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBkZXN0X2J1Zi5BcHBlbmRCbG9jayhtX3BTY2FubGluZUJ1ZiwgbV9QaXRjaCk7DQorICAgICAgICBtX2lSb3cgKys7DQorICAgICAgICBpZiAobV9pUm93ID09IG1fblJvd3MpIHsNCisgICAgICAgICAgICBSZXBvcnRFT0Yoc3JjX3NpemUgLSAoYml0cG9zICsgNykgLyA4KTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0ZheEZpbHRlcjo6UmVhZExpbmUoRlhfTFBDQllURSBzcmNfYnVmLCBpbnQgYml0c2l6ZSwgaW50JiBiaXRwb3MpDQorew0KKyAgICBpZiAoIV9GYXhTa2lwRU9MKHNyY19idWYsIGJpdHNpemUsIGJpdHBvcykpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9CT09MIHJldDsNCisgICAgaWYgKG1fRW5jb2RpbmcgPCAwKSB7DQorICAgICAgICByZXQgPSBfRmF4RzRHZXRSb3coc3JjX2J1ZiwgYml0c2l6ZSwgYml0cG9zLCBtX3BTY2FubGluZUJ1ZiwgbV9wUmVmQnVmLCBtX25Db2x1bW5zKTsNCisgICAgfSBlbHNlIGlmIChtX0VuY29kaW5nID09IDApIHsNCisgICAgICAgIHJldCA9IF9GYXhHZXQxRExpbmUoc3JjX2J1ZiwgYml0c2l6ZSwgYml0cG9zLCBtX3BTY2FubGluZUJ1ZiwgbV9uQ29sdW1ucyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAoYml0cG9zID09IGJpdHNpemUpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBGWF9CT09MIGJOZXh0MUQgPSBzcmNfYnVmW2JpdHBvcyAvIDhdICYgKDEgPDwgKDcgLSBiaXRwb3MgJSA4KSk7DQorICAgICAgICBiaXRwb3MgKys7DQorICAgICAgICBpZiAoYk5leHQxRCkgew0KKyAgICAgICAgICAgIHJldCA9IF9GYXhHZXQxRExpbmUoc3JjX2J1ZiwgYml0c2l6ZSwgYml0cG9zLCBtX3BTY2FubGluZUJ1ZiwgbV9uQ29sdW1ucyk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldCA9IF9GYXhHNEdldFJvdyhzcmNfYnVmLCBiaXRzaXplLCBiaXRwb3MsIG1fcFNjYW5saW5lQnVmLCBtX3BSZWZCdWYsIG1fbkNvbHVtbnMpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICghcmV0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fYkVuZE9mTGluZSkNCisgICAgICAgIGlmICghX0ZheFNraXBFT0woc3JjX2J1ZiwgYml0c2l6ZSwgYml0cG9zKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgaWYgKG1fYkJ5dGVBbGlnbikgew0KKyAgICAgICAgYml0cG9zID0gKGJpdHBvcyArIDcpIC8gOCAqIDg7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfb2JqZWN0cy5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX29iamVjdHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzY2Y4OTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX29iamVjdHMuY3BwCkBAIC0wLDAgKzEsMTM0NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhcnNlci5oIg0KK3ZvaWQgQ1BERl9PYmplY3Q6OlJlbGVhc2UoKQ0KK3sNCisgICAgaWYgKHRoaXMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX09iak51bSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIERlc3Ryb3koKTsNCit9DQordm9pZCBDUERGX09iamVjdDo6RGVzdHJveSgpDQorew0KKyAgICBzd2l0Y2ggKG1fVHlwZSkgew0KKyAgICAgICAgY2FzZSBQREZPQkpfU1RSSU5HOg0KKyAgICAgICAgICAgIGRlbGV0ZSAoQ1BERl9TdHJpbmcqKXRoaXM7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBERk9CSl9OQU1FOg0KKyAgICAgICAgICAgIGRlbGV0ZSAoQ1BERl9OYW1lKil0aGlzOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQREZPQkpfQVJSQVk6DQorICAgICAgICAgICAgZGVsZXRlIChDUERGX0FycmF5Kil0aGlzOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQREZPQkpfRElDVElPTkFSWToNCisgICAgICAgICAgICBkZWxldGUgKENQREZfRGljdGlvbmFyeSopdGhpczsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUERGT0JKX1NUUkVBTToNCisgICAgICAgICAgICBkZWxldGUgKENQREZfU3RyZWFtKil0aGlzOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBkZWxldGUgdGhpczsNCisgICAgfQ0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX09iamVjdDo6R2V0U3RyaW5nKCkgY29uc3QNCit7DQorICAgIGlmICh0aGlzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIHN3aXRjaCAobV9UeXBlKSB7DQorICAgICAgICBjYXNlIFBERk9CSl9CT09MRUFOOg0KKyAgICAgICAgICAgIHJldHVybiAoKENQREZfQm9vbGVhbiopdGhpcyktPm1fYlZhbHVlID8gInRydWUiIDogImZhbHNlIjsNCisgICAgICAgIGNhc2UgUERGT0JKX05VTUJFUjoNCisgICAgICAgICAgICByZXR1cm4gKChDUERGX051bWJlciopdGhpcyktPkdldFN0cmluZygpOw0KKyAgICAgICAgY2FzZSBQREZPQkpfU1RSSU5HOg0KKyAgICAgICAgICAgIHJldHVybiAoKENQREZfU3RyaW5nKil0aGlzKS0+bV9TdHJpbmc7DQorICAgICAgICBjYXNlIFBERk9CSl9OQU1FOg0KKyAgICAgICAgICAgIHJldHVybiAoKENQREZfTmFtZSopdGhpcyktPm1fTmFtZTsNCisgICAgICAgIGNhc2UgUERGT0JKX1JFRkVSRU5DRTogew0KKyAgICAgICAgICAgICAgICBDUERGX1JlZmVyZW5jZSogcFJlZiA9IChDUERGX1JlZmVyZW5jZSopKEZYX0xQVk9JRCl0aGlzOw0KKyAgICAgICAgICAgICAgICBpZiAocFJlZi0+bV9wT2JqTGlzdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IHBSZWYtPm1fcE9iakxpc3QtPkdldEluZGlyZWN0T2JqZWN0KHBSZWYtPm1fUmVmT2JqTnVtKTsNCisgICAgICAgICAgICAgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIHBPYmotPkdldFN0cmluZygpOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmdDIENQREZfT2JqZWN0OjpHZXRDb25zdFN0cmluZygpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKCk7DQorICAgIH0NCisgICAgc3dpdGNoIChtX1R5cGUpIHsNCisgICAgICAgIGNhc2UgUERGT0JKX1NUUklORzoNCisgICAgICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKChGWF9MUENCWVRFKSgoQ1BERl9TdHJpbmcqKXRoaXMpLT5tX1N0cmluZywgKChDUERGX1N0cmluZyopdGhpcyktPm1fU3RyaW5nLkdldExlbmd0aCgpKTsNCisgICAgICAgIGNhc2UgUERGT0JKX05BTUU6DQorICAgICAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nQygoRlhfTFBDQllURSkoKENQREZfTmFtZSopdGhpcyktPm1fTmFtZSwgKChDUERGX05hbWUqKXRoaXMpLT5tX05hbWUuR2V0TGVuZ3RoKCkpOw0KKyAgICAgICAgY2FzZSBQREZPQkpfUkVGRVJFTkNFOiB7DQorICAgICAgICAgICAgICAgIENQREZfUmVmZXJlbmNlKiBwUmVmID0gKENQREZfUmVmZXJlbmNlKikoRlhfTFBWT0lEKXRoaXM7DQorICAgICAgICAgICAgICAgIGlmIChwUmVmLT5tX3BPYmpMaXN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gcFJlZi0+bV9wT2JqTGlzdC0+R2V0SW5kaXJlY3RPYmplY3QocFJlZi0+bV9SZWZPYmpOdW0pOw0KKyAgICAgICAgICAgICAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIHBPYmotPkdldENvbnN0U3RyaW5nKCk7DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZ0MoKTsNCit9DQorRlhfRkxPQVQgQ1BERl9PYmplY3Q6OkdldE51bWJlcigpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBzd2l0Y2ggKG1fVHlwZSkgew0KKyAgICAgICAgY2FzZSBQREZPQkpfTlVNQkVSOg0KKyAgICAgICAgICAgIHJldHVybiAoKENQREZfTnVtYmVyKil0aGlzKS0+R2V0TnVtYmVyKCk7DQorICAgICAgICBjYXNlIFBERk9CSl9SRUZFUkVOQ0U6IHsNCisgICAgICAgICAgICAgICAgQ1BERl9SZWZlcmVuY2UqIHBSZWYgPSAoQ1BERl9SZWZlcmVuY2UqKShGWF9MUFZPSUQpdGhpczsNCisgICAgICAgICAgICAgICAgaWYgKHBSZWYtPm1fcE9iakxpc3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBwUmVmLT5tX3BPYmpMaXN0LT5HZXRJbmRpcmVjdE9iamVjdChwUmVmLT5tX1JlZk9iak51bSk7DQorICAgICAgICAgICAgICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJldHVybiBwT2JqLT5HZXROdW1iZXIoKTsNCisgICAgICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX0ZMT0FUIENQREZfT2JqZWN0OjpHZXROdW1iZXIxNigpIGNvbnN0DQorew0KKyAgICByZXR1cm4gR2V0TnVtYmVyKCk7DQorfQ0KK2ludCBDUERGX09iamVjdDo6R2V0SW50ZWdlcigpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBzd2l0Y2ggKG1fVHlwZSkgew0KKyAgICAgICAgY2FzZSBQREZPQkpfQk9PTEVBTjoNCisgICAgICAgICAgICByZXR1cm4gKChDUERGX0Jvb2xlYW4qKXRoaXMpLT5tX2JWYWx1ZTsNCisgICAgICAgIGNhc2UgUERGT0JKX05VTUJFUjoNCisgICAgICAgICAgICByZXR1cm4gKChDUERGX051bWJlciopdGhpcyktPkdldEludGVnZXIoKTsNCisgICAgICAgIGNhc2UgUERGT0JKX1JFRkVSRU5DRTogew0KKyAgICAgICAgICAgICAgICBDUERGX1JlZmVyZW5jZSogcFJlZiA9IChDUERGX1JlZmVyZW5jZSopKEZYX0xQVk9JRCl0aGlzOw0KKyAgICAgICAgICAgICAgICBQQVJTRV9DT05URVhUIGNvbnRleHQ7DQorICAgICAgICAgICAgICAgIEZYU1lTX21lbXNldDMyKCZjb250ZXh0LCAwLCBzaXplb2YoUEFSU0VfQ09OVEVYVCkpOw0KKyAgICAgICAgICAgICAgICBpZiAocFJlZi0+bV9wT2JqTGlzdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IHBSZWYtPm1fcE9iakxpc3QtPkdldEluZGlyZWN0T2JqZWN0KHBSZWYtPm1fUmVmT2JqTnVtLCAmY29udGV4dCk7DQorICAgICAgICAgICAgICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJldHVybiBwT2JqLT5HZXRJbnRlZ2VyKCk7DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitDUERGX0RpY3Rpb25hcnkqIENQREZfT2JqZWN0OjpHZXREaWN0KCkgY29uc3QNCit7DQorICAgIGlmICh0aGlzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHN3aXRjaCAobV9UeXBlKSB7DQorICAgICAgICBjYXNlIFBERk9CSl9ESUNUSU9OQVJZOg0KKyAgICAgICAgICAgIHJldHVybiAoQ1BERl9EaWN0aW9uYXJ5Kil0aGlzOw0KKyAgICAgICAgY2FzZSBQREZPQkpfU1RSRUFNOg0KKyAgICAgICAgICAgIHJldHVybiAoKENQREZfU3RyZWFtKil0aGlzKS0+R2V0RGljdCgpOw0KKyAgICAgICAgY2FzZSBQREZPQkpfUkVGRVJFTkNFOiB7DQorICAgICAgICAgICAgICAgIENQREZfUmVmZXJlbmNlKiBwUmVmID0gKENQREZfUmVmZXJlbmNlKil0aGlzOw0KKyAgICAgICAgICAgICAgICBpZiAocFJlZi0+bV9wT2JqTGlzdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IHBSZWYtPm1fcE9iakxpc3QtPkdldEluZGlyZWN0T2JqZWN0KHBSZWYtPm1fUmVmT2JqTnVtKTsNCisgICAgICAgICAgICAgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIHBPYmotPkdldERpY3QoKTsNCisgICAgICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0NQREZfQXJyYXkqIENQREZfT2JqZWN0OjpHZXRBcnJheSgpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAobV9UeXBlID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgcmV0dXJuIChDUERGX0FycmF5Kil0aGlzOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCit2b2lkIENQREZfT2JqZWN0OjpTZXRTdHJpbmcoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0cikNCit7DQorICAgIEFTU0VSVCh0aGlzICE9IE5VTEwpOw0KKyAgICBzd2l0Y2ggKG1fVHlwZSkgew0KKyAgICAgICAgY2FzZSBQREZPQkpfQk9PTEVBTjoNCisgICAgICAgICAgICAoKENQREZfQm9vbGVhbiopdGhpcyktPm1fYlZhbHVlID0gc3RyID09IEZYX0JTVFJDKCJ0cnVlIikgPyAxIDogMDsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICBjYXNlIFBERk9CSl9OVU1CRVI6DQorICAgICAgICAgICAgKChDUERGX051bWJlciopdGhpcyktPlNldFN0cmluZyhzdHIpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIGNhc2UgUERGT0JKX1NUUklORzoNCisgICAgICAgICAgICAoKENQREZfU3RyaW5nKil0aGlzKS0+bV9TdHJpbmcgPSBzdHI7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgY2FzZSBQREZPQkpfTkFNRToNCisgICAgICAgICAgICAoKENQREZfTmFtZSopdGhpcyktPm1fTmFtZSA9IHN0cjsNCisgICAgICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQVNTRVJUKEZBTFNFKTsNCit9DQoraW50IENQREZfT2JqZWN0OjpHZXREaXJlY3RUeXBlKCkgY29uc3QNCit7DQorICAgIGlmIChtX1R5cGUgIT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgcmV0dXJuIG1fVHlwZTsNCisgICAgfQ0KKyAgICBDUERGX1JlZmVyZW5jZSogcFJlZiA9IChDUERGX1JlZmVyZW5jZSopdGhpczsNCisgICAgcmV0dXJuIHBSZWYtPm1fcE9iakxpc3QtPkdldEluZGlyZWN0VHlwZShwUmVmLT5tX1JlZk9iak51bSk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9PYmplY3Q6OklzSWRlbnRpY2FsKENQREZfT2JqZWN0KiBwT3RoZXIpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBwT3RoZXIpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmICh0aGlzID09IE5VTEwgfHwgcE90aGVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocE90aGVyLT5tX1R5cGUgIT0gbV9UeXBlKSB7DQorICAgICAgICBpZiAobV9UeXBlID09IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgICAgICByZXR1cm4gR2V0RGlyZWN0KCktPklzSWRlbnRpY2FsKHBPdGhlcik7DQorICAgICAgICB9IGVsc2UgaWYgKHBPdGhlci0+bV9UeXBlID09IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgICAgICByZXR1cm4gSXNJZGVudGljYWwocE90aGVyLT5HZXREaXJlY3QoKSk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgc3dpdGNoIChtX1R5cGUpIHsNCisgICAgICAgIGNhc2UgUERGT0JKX0JPT0xFQU46DQorICAgICAgICAgICAgcmV0dXJuICgoKENQREZfQm9vbGVhbiopdGhpcyktPklkZW50aWNhbCgoQ1BERl9Cb29sZWFuKilwT3RoZXIpKTsNCisgICAgICAgIGNhc2UgUERGT0JKX05VTUJFUjoNCisgICAgICAgICAgICByZXR1cm4gKCgoQ1BERl9OdW1iZXIqKXRoaXMpLT5JZGVudGljYWwoKENQREZfTnVtYmVyKilwT3RoZXIpKTsNCisgICAgICAgIGNhc2UgUERGT0JKX1NUUklORzoNCisgICAgICAgICAgICByZXR1cm4gKCgoQ1BERl9TdHJpbmcqKXRoaXMpLT5JZGVudGljYWwoKENQREZfU3RyaW5nKilwT3RoZXIpKTsNCisgICAgICAgIGNhc2UgUERGT0JKX05BTUU6DQorICAgICAgICAgICAgcmV0dXJuICgoKENQREZfTmFtZSopdGhpcyktPklkZW50aWNhbCgoQ1BERl9OYW1lKilwT3RoZXIpKTsNCisgICAgICAgIGNhc2UgUERGT0JKX0FSUkFZOg0KKyAgICAgICAgICAgIHJldHVybiAoKChDUERGX0FycmF5Kil0aGlzKS0+SWRlbnRpY2FsKChDUERGX0FycmF5KilwT3RoZXIpKTsNCisgICAgICAgIGNhc2UgUERGT0JKX0RJQ1RJT05BUlk6DQorICAgICAgICAgICAgcmV0dXJuICgoKENQREZfRGljdGlvbmFyeSopdGhpcyktPklkZW50aWNhbCgoQ1BERl9EaWN0aW9uYXJ5KilwT3RoZXIpKTsNCisgICAgICAgIGNhc2UgUERGT0JKX05VTEw6DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICBjYXNlIFBERk9CSl9TVFJFQU06DQorICAgICAgICAgICAgcmV0dXJuICgoKENQREZfU3RyZWFtKil0aGlzKS0+SWRlbnRpY2FsKChDUERGX1N0cmVhbSopcE90aGVyKSk7DQorICAgICAgICBjYXNlIFBERk9CSl9SRUZFUkVOQ0U6DQorICAgICAgICAgICAgcmV0dXJuICgoKENQREZfUmVmZXJlbmNlKil0aGlzKS0+SWRlbnRpY2FsKChDUERGX1JlZmVyZW5jZSopcE90aGVyKSk7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitDUERGX09iamVjdCogQ1BERl9PYmplY3Q6OkdldERpcmVjdCgpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAobV9UeXBlICE9IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgIHJldHVybiAoQ1BERl9PYmplY3QqKXRoaXM7DQorICAgIH0NCisgICAgQ1BERl9SZWZlcmVuY2UqIHBSZWYgPSAoQ1BERl9SZWZlcmVuY2UqKShGWF9MUFZPSUQpdGhpczsNCisgICAgaWYgKHBSZWYtPm1fcE9iakxpc3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBSZWYtPm1fcE9iakxpc3QtPkdldEluZGlyZWN0T2JqZWN0KHBSZWYtPm1fUmVmT2JqTnVtKTsNCit9DQorQ1BERl9PYmplY3QqIENQREZfT2JqZWN0OjpDbG9uZShGWF9CT09MIGJEaXJlY3QpIGNvbnN0DQorew0KKyAgICBDRlhfTWFwUHRyVG9QdHIgdmlzaXRlZDsNCisgICAgcmV0dXJuIENsb25lSW50ZXJuYWwoYkRpcmVjdCwgJnZpc2l0ZWQpOw0KK30NCitDUERGX09iamVjdCogQ1BERl9PYmplY3Q6OkNsb25lSW50ZXJuYWwoRlhfQk9PTCBiRGlyZWN0LCBDRlhfTWFwUHRyVG9QdHIqIHZpc2l0ZWQpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBzd2l0Y2ggKG1fVHlwZSkgew0KKyAgICAgICAgY2FzZSBQREZPQkpfQk9PTEVBTjoNCisgICAgICAgICAgICByZXR1cm4gRlhfTkVXIENQREZfQm9vbGVhbigoKENQREZfQm9vbGVhbiopdGhpcyktPm1fYlZhbHVlKTsNCisgICAgICAgIGNhc2UgUERGT0JKX05VTUJFUjoNCisgICAgICAgICAgICByZXR1cm4gRlhfTkVXIENQREZfTnVtYmVyKCgoQ1BERl9OdW1iZXIqKXRoaXMpLT5tX2JJbnRlZ2VyLCAmKChDUERGX051bWJlciopdGhpcyktPm1fSW50ZWdlcik7DQorICAgICAgICBjYXNlIFBERk9CSl9TVFJJTkc6DQorICAgICAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX1N0cmluZygoKENQREZfU3RyaW5nKil0aGlzKS0+bV9TdHJpbmcsICgoQ1BERl9TdHJpbmcqKXRoaXMpLT5Jc0hleCgpKTsNCisgICAgICAgIGNhc2UgUERGT0JKX05BTUU6DQorICAgICAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX05hbWUoKChDUERGX05hbWUqKXRoaXMpLT5tX05hbWUpOw0KKyAgICAgICAgY2FzZSBQREZPQkpfQVJSQVk6IHsNCisgICAgICAgICAgICAgICAgQ1BERl9BcnJheSogcENvcHkgPSBGWF9ORVcgQ1BERl9BcnJheSgpOw0KKyAgICAgICAgICAgICAgICBDUERGX0FycmF5KiBwVGhpcyA9IChDUERGX0FycmF5Kil0aGlzOw0KKyAgICAgICAgICAgICAgICBpbnQgbiA9IHBUaGlzLT5HZXRDb3VudCgpOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiB2YWx1ZSA9IChDUERGX09iamVjdCopcFRoaXMtPm1fT2JqZWN0cy5HZXRBdChpKTsNCisgICAgICAgICAgICAgICAgICAgIHBDb3B5LT5tX09iamVjdHMuQWRkKHZhbHVlLT5DbG9uZUludGVybmFsKGJEaXJlY3QsIHZpc2l0ZWQpKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gcENvcHk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBQREZPQkpfRElDVElPTkFSWTogew0KKyAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBDb3B5ID0gRlhfTkVXIENQREZfRGljdGlvbmFyeSgpOw0KKyAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBUaGlzID0gKENQREZfRGljdGlvbmFyeSopdGhpczsNCisgICAgICAgICAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcFRoaXMtPm1fTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgICAgICAgICAgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcga2V5Ow0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHZhbHVlOw0KKyAgICAgICAgICAgICAgICAgICAgcFRoaXMtPm1fTWFwLkdldE5leHRBc3NvYyhwb3MsIGtleSwgKHZvaWQqJil2YWx1ZSk7DQorICAgICAgICAgICAgICAgICAgICBwQ29weS0+bV9NYXAuU2V0QXQoa2V5LCB2YWx1ZS0+Q2xvbmVJbnRlcm5hbChiRGlyZWN0LCB2aXNpdGVkKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIHBDb3B5Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGT0JKX05VTEw6IHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZYX05FVyBDUERGX051bGw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBQREZPQkpfU1RSRUFNOiB7DQorICAgICAgICAgICAgICAgIENQREZfU3RyZWFtKiBwVGhpcyA9IChDUERGX1N0cmVhbSopdGhpczsNCisgICAgICAgICAgICAgICAgQ1BERl9TdHJlYW1BY2MgYWNjOw0KKyAgICAgICAgICAgICAgICBhY2MuTG9hZEFsbERhdGEocFRoaXMsIFRSVUUpOw0KKyAgICAgICAgICAgICAgICBGWF9EV09SRCBzdHJlYW1TaXplID0gYWNjLkdldFNpemUoKTsNCisgICAgICAgICAgICAgICAgQ1BERl9TdHJlYW0qIHBPYmogPSBGWF9ORVcgQ1BERl9TdHJlYW0oYWNjLkRldGFjaERhdGEoKSwgc3RyZWFtU2l6ZSwgKENQREZfRGljdGlvbmFyeSopKChDUERGX09iamVjdCopcFRoaXMtPkdldERpY3QoKSktPkNsb25lSW50ZXJuYWwoYkRpcmVjdCwgdmlzaXRlZCkpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gcE9iajsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIFBERk9CSl9SRUZFUkVOQ0U6IHsNCisgICAgICAgICAgICAgICAgQ1BERl9SZWZlcmVuY2UqIHBSZWYgPSAoQ1BERl9SZWZlcmVuY2UqKXRoaXM7DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIG9ial9udW0gPSBwUmVmLT5tX1JlZk9iak51bTsNCisgICAgICAgICAgICAgICAgaWYgKGJEaXJlY3QgJiYgIXZpc2l0ZWQtPkdldFZhbHVlQXQoKHZvaWQqKShGWF9VSU5UUFRSKW9ial9udW0pKSB7DQorICAgICAgICAgICAgICAgICAgICB2aXNpdGVkLT5TZXRBdCgodm9pZCopKEZYX1VJTlRQVFIpb2JqX251bSwgKHZvaWQqKTEpOw0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHJldCA9IHBSZWYtPkdldERpcmVjdCgpLT5DbG9uZUludGVybmFsKFRSVUUsIHZpc2l0ZWQpOw0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9SZWZlcmVuY2UocFJlZi0+bV9wT2JqTGlzdCwgb2JqX251bSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX09iamVjdDo6Q2xvbmVSZWYoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBEb2MpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAobV9PYmpOdW0pIHsNCisgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9SZWZlcmVuY2UocERvYywgbV9PYmpOdW0pOw0KKyAgICB9DQorICAgIHJldHVybiBDbG9uZSgpOw0KK30NCitDRlhfV2lkZVN0cmluZyBDUERGX09iamVjdDo6R2V0VW5pY29kZVRleHQoQ0ZYX0NoYXJNYXAqIHBDaGFyTWFwKSBjb25zdA0KK3sNCisgICAgaWYgKHRoaXMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgaWYgKG1fVHlwZSA9PSBQREZPQkpfU1RSSU5HKSB7DQorICAgICAgICByZXR1cm4gUERGX0RlY29kZVRleHQoKChDUERGX1N0cmluZyopdGhpcyktPm1fU3RyaW5nLCBwQ2hhck1hcCk7DQorICAgIH0gZWxzZSBpZiAobV9UeXBlID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIENQREZfU3RyZWFtQWNjIHN0cmVhbTsNCisgICAgICAgIHN0cmVhbS5Mb2FkQWxsRGF0YSgoQ1BERl9TdHJlYW0qKXRoaXMsIEZBTFNFKTsNCisgICAgICAgIENGWF9XaWRlU3RyaW5nIHJlc3VsdCA9IFBERl9EZWNvZGVUZXh0KHN0cmVhbS5HZXREYXRhKCksIHN0cmVhbS5HZXRTaXplKCksIHBDaGFyTWFwKTsNCisgICAgICAgIHJldHVybiByZXN1bHQ7DQorICAgIH0gZWxzZSBpZiAobV9UeXBlID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICByZXR1cm4gUERGX0RlY29kZVRleHQoKChDUERGX05hbWUqKXRoaXMpLT5tX05hbWUsIHBDaGFyTWFwKTsNCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoKTsNCit9DQordm9pZCBDUERGX09iamVjdDo6U2V0VW5pY29kZVRleHQoRlhfTFBDV1NUUiBwVW5pY29kZXMsIGludCBsZW4pDQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fVHlwZSA9PSBQREZPQkpfU1RSSU5HKSB7DQorICAgICAgICAoKENQREZfU3RyaW5nKil0aGlzKS0+bV9TdHJpbmcgPSBQREZfRW5jb2RlVGV4dChwVW5pY29kZXMsIGxlbik7DQorICAgIH0gZWxzZSBpZiAobV9UeXBlID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIHJlc3VsdCA9IFBERl9FbmNvZGVUZXh0KHBVbmljb2RlcywgbGVuKTsNCisgICAgICAgICgoQ1BERl9TdHJlYW0qKXRoaXMpLT5TZXREYXRhKChGWF9MUEJZVEUpKEZYX0xQQ1NUUilyZXN1bHQsIHJlc3VsdC5HZXRMZW5ndGgoKSwgRkFMU0UsIEZBTFNFKTsNCisgICAgfQ0KK30NCitDUERGX051bWJlcjo6Q1BERl9OdW1iZXIoaW50IHZhbHVlKQ0KK3sNCisgICAgbV9UeXBlID0gUERGT0JKX05VTUJFUjsNCisgICAgbV9iSW50ZWdlciA9IFRSVUU7DQorICAgIG1fSW50ZWdlciA9IHZhbHVlOw0KK30NCitDUERGX051bWJlcjo6Q1BERl9OdW1iZXIoRlhfRkxPQVQgdmFsdWUpDQorew0KKyAgICBtX1R5cGUgPSBQREZPQkpfTlVNQkVSOw0KKyAgICBtX2JJbnRlZ2VyID0gRkFMU0U7DQorICAgIG1fRmxvYXQgPSB2YWx1ZTsNCit9DQorQ1BERl9OdW1iZXI6OkNQREZfTnVtYmVyKEZYX0JPT0wgYkludGVnZXIsIHZvaWQqIHBEYXRhKQ0KK3sNCisgICAgbV9UeXBlID0gUERGT0JKX05VTUJFUjsNCisgICAgbV9iSW50ZWdlciA9IGJJbnRlZ2VyOw0KKyAgICBtX0ludGVnZXIgPSAqKGludCopcERhdGE7DQorfQ0KK2V4dGVybiB2b2lkIEZYX2F0b251bShGWF9CU1RSLCBGWF9CT09MJiwgdm9pZCopOw0KK0NQREZfTnVtYmVyOjpDUERGX051bWJlcihGWF9CU1RSIHN0cikNCit7DQorICAgIG1fVHlwZSA9IFBERk9CSl9OVU1CRVI7DQorICAgIEZYX2F0b251bShzdHIsIG1fYkludGVnZXIsICZtX0ludGVnZXIpOw0KK30NCit2b2lkIENQREZfTnVtYmVyOjpTZXRTdHJpbmcoRlhfQlNUUiBzdHIpDQorew0KKyAgICBGWF9hdG9udW0oc3RyLCBtX2JJbnRlZ2VyLCAmbV9JbnRlZ2VyKTsNCit9DQorRlhfQk9PTCBDUERGX051bWJlcjo6SWRlbnRpY2FsKENQREZfTnVtYmVyKiBwT3RoZXIpIGNvbnN0DQorew0KKyAgICByZXR1cm4gbV9iSW50ZWdlciA9PSBwT3RoZXItPm1fYkludGVnZXIgJiYgbV9JbnRlZ2VyID09IHBPdGhlci0+bV9JbnRlZ2VyOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX051bWJlcjo6R2V0U3RyaW5nKCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX2JJbnRlZ2VyID8gQ0ZYX0J5dGVTdHJpbmc6OkZvcm1hdEludGVnZXIobV9JbnRlZ2VyLCBGWEZPUk1BVF9TSUdORUQpIDogQ0ZYX0J5dGVTdHJpbmc6OkZvcm1hdEZsb2F0KG1fRmxvYXQpOw0KK30NCit2b2lkIENQREZfTnVtYmVyOjpTZXROdW1iZXIoRlhfRkxPQVQgdmFsdWUpDQorew0KKyAgICBtX2JJbnRlZ2VyID0gRkFMU0U7DQorICAgIG1fRmxvYXQgPSB2YWx1ZTsNCit9DQorQ1BERl9TdHJpbmc6OkNQREZfU3RyaW5nKGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzdHIpDQorew0KKyAgICBtX1R5cGUgPSBQREZPQkpfU1RSSU5HOw0KKyAgICBtX1N0cmluZyA9IFBERl9FbmNvZGVUZXh0KHN0ciwgc3RyLkdldExlbmd0aCgpKTsNCisgICAgbV9iSGV4ID0gRkFMU0U7DQorfQ0KK0NQREZfQXJyYXk6On5DUERGX0FycmF5KCkNCit7DQorICAgIGludCBzaXplID0gbV9PYmplY3RzLkdldFNpemUoKTsNCisgICAgQ1BERl9PYmplY3QqKiBwTGlzdCA9IChDUERGX09iamVjdCoqKW1fT2JqZWN0cy5HZXREYXRhKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgew0KKyAgICAgICAgcExpc3RbaV0tPlJlbGVhc2UoKTsNCisgICAgfQ0KK30NCitDRlhfRmxvYXRSZWN0IENQREZfQXJyYXk6OkdldFJlY3QoKQ0KK3sNCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0Ow0KKyAgICBpZiAodGhpcyA9PSBOVUxMIHx8IG1fVHlwZSAhPSBQREZPQkpfQVJSQVkgfHwgbV9PYmplY3RzLkdldFNpemUoKSAhPSA0KSB7DQorICAgICAgICByZXR1cm4gcmVjdDsNCisgICAgfQ0KKyAgICByZWN0LmxlZnQgPSBHZXROdW1iZXIoMCk7DQorICAgIHJlY3QuYm90dG9tID0gR2V0TnVtYmVyKDEpOw0KKyAgICByZWN0LnJpZ2h0ID0gR2V0TnVtYmVyKDIpOw0KKyAgICByZWN0LnRvcCA9IEdldE51bWJlcigzKTsNCisgICAgcmV0dXJuIHJlY3Q7DQorfQ0KK0NGWF9BZmZpbmVNYXRyaXggQ1BERl9BcnJheTo6R2V0TWF0cml4KCkNCit7DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4Ow0KKyAgICBpZiAodGhpcyA9PSBOVUxMIHx8IG1fVHlwZSAhPSBQREZPQkpfQVJSQVkgfHwgbV9PYmplY3RzLkdldFNpemUoKSAhPSA2KSB7DQorICAgICAgICByZXR1cm4gbWF0cml4Ow0KKyAgICB9DQorICAgIG1hdHJpeC5TZXQoR2V0TnVtYmVyKDApLCBHZXROdW1iZXIoMSksIEdldE51bWJlcigyKSwgR2V0TnVtYmVyKDMpLCBHZXROdW1iZXIoNCksIEdldE51bWJlcig1KSk7DQorICAgIHJldHVybiBtYXRyaXg7DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX0FycmF5OjpHZXRFbGVtZW50KEZYX0RXT1JEIGkpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoaSA+PSAoRlhfRFdPUkQpbV9PYmplY3RzLkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIChDUERGX09iamVjdCopbV9PYmplY3RzLkdldEF0KGkpOw0KK30NCitDUERGX09iamVjdCogQ1BERl9BcnJheTo6R2V0RWxlbWVudFZhbHVlKEZYX0RXT1JEIGkpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoaSA+PSAoRlhfRFdPUkQpbV9PYmplY3RzLkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuICgoQ1BERl9PYmplY3QqKW1fT2JqZWN0cy5HZXRBdChpKSktPkdldERpcmVjdCgpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX0FycmF5OjpHZXRTdHJpbmcoRlhfRFdPUkQgaSkgY29uc3QNCit7DQorICAgIGlmICh0aGlzICYmIGkgPCAoRlhfRFdPUkQpbV9PYmplY3RzLkdldFNpemUoKSkgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHAgPSAoQ1BERl9PYmplY3QqKW1fT2JqZWN0cy5HZXRBdChpKTsNCisgICAgICAgIHJldHVybiBwLT5HZXRTdHJpbmcoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmdDIENQREZfQXJyYXk6OkdldENvbnN0U3RyaW5nKEZYX0RXT1JEIGkpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyAmJiBpIDwgKEZYX0RXT1JEKW1fT2JqZWN0cy5HZXRTaXplKCkpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwID0gKENQREZfT2JqZWN0KiltX09iamVjdHMuR2V0QXQoaSk7DQorICAgICAgICByZXR1cm4gcC0+R2V0Q29uc3RTdHJpbmcoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKCk7DQorfQ0KK2ludCBDUERGX0FycmF5OjpHZXRJbnRlZ2VyKEZYX0RXT1JEIGkpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMIHx8IGkgPj0gKEZYX0RXT1JEKW1fT2JqZWN0cy5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwID0gKENQREZfT2JqZWN0KiltX09iamVjdHMuR2V0QXQoaSk7DQorICAgIHJldHVybiBwLT5HZXRJbnRlZ2VyKCk7DQorfQ0KK0ZYX0ZMT0FUIENQREZfQXJyYXk6OkdldE51bWJlcihGWF9EV09SRCBpKSBjb25zdA0KK3sNCisgICAgaWYgKHRoaXMgPT0gTlVMTCB8fCBpID49IChGWF9EV09SRCltX09iamVjdHMuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcCA9IChDUERGX09iamVjdCopbV9PYmplY3RzLkdldEF0KGkpOw0KKyAgICByZXR1cm4gcC0+R2V0TnVtYmVyKCk7DQorfQ0KK0NQREZfRGljdGlvbmFyeSogQ1BERl9BcnJheTo6R2V0RGljdChGWF9EV09SRCBpKSBjb25zdA0KK3sNCisgICAgQ1BERl9PYmplY3QqIHAgPSBHZXRFbGVtZW50VmFsdWUoaSk7DQorICAgIGlmIChwID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9IGVsc2UgaWYgKHAtPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgcmV0dXJuIChDUERGX0RpY3Rpb25hcnkqKXA7DQorICAgIH0gZWxzZSBpZiAocC0+R2V0VHlwZSgpID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIHJldHVybiAoKENQREZfU3RyZWFtKilwKS0+R2V0RGljdCgpOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX1N0cmVhbSogQ1BERl9BcnJheTo6R2V0U3RyZWFtKEZYX0RXT1JEIGkpIGNvbnN0DQorew0KKyAgICBDUERGX09iamVjdCogcCA9IEdldEVsZW1lbnRWYWx1ZShpKTsNCisgICAgaWYgKHAgPT0gTlVMTCB8fCBwLT5HZXRUeXBlKCkgIT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIChDUERGX1N0cmVhbSopcDsNCit9DQorQ1BERl9BcnJheSogQ1BERl9BcnJheTo6R2V0QXJyYXkoRlhfRFdPUkQgaSkgY29uc3QNCit7DQorICAgIENQREZfT2JqZWN0KiBwID0gR2V0RWxlbWVudFZhbHVlKGkpOw0KKyAgICBpZiAocCA9PSBOVUxMIHx8IHAtPkdldFR5cGUoKSAhPSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiAoQ1BERl9BcnJheSopcDsNCit9DQordm9pZCBDUERGX0FycmF5OjpSZW1vdmVBdChGWF9EV09SRCBpKQ0KK3sNCisgICAgQVNTRVJUKHRoaXMgIT0gTlVMTCAmJiBtX1R5cGUgPT0gUERGT0JKX0FSUkFZKTsNCisgICAgaWYgKGkgPj0gKEZYX0RXT1JEKW1fT2JqZWN0cy5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcCA9IChDUERGX09iamVjdCopbV9PYmplY3RzLkdldEF0KGkpOw0KKyAgICBwLT5SZWxlYXNlKCk7DQorICAgIG1fT2JqZWN0cy5SZW1vdmVBdChpKTsNCit9DQordm9pZCBDUERGX0FycmF5OjpTZXRBdChGWF9EV09SRCBpLCBDUERGX09iamVjdCogcE9iaiwgQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpzKQ0KK3sNCisgICAgQVNTRVJUKHRoaXMgIT0gTlVMTCAmJiBtX1R5cGUgPT0gUERGT0JKX0FSUkFZKTsNCisgICAgQVNTRVJUKGkgPCAoRlhfRFdPUkQpbV9PYmplY3RzLkdldFNpemUoKSk7DQorICAgIGlmIChpID49IChGWF9EV09SRCltX09iamVjdHMuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBPbGQgPSAoQ1BERl9PYmplY3QqKW1fT2JqZWN0cy5HZXRBdChpKTsNCisgICAgcE9sZC0+UmVsZWFzZSgpOw0KKyAgICBpZiAocE9iai0+R2V0T2JqTnVtKCkpIHsNCisgICAgICAgIEFTU0VSVChwT2JqcyAhPSBOVUxMKTsNCisgICAgICAgIHBPYmogPSBDUERGX1JlZmVyZW5jZTo6Q3JlYXRlKHBPYmpzLCBwT2JqLT5HZXRPYmpOdW0oKSk7DQorICAgIH0NCisgICAgbV9PYmplY3RzLlNldEF0KGksIHBPYmopOw0KK30NCit2b2lkIENQREZfQXJyYXk6Okluc2VydEF0KEZYX0RXT1JEIGluZGV4LCBDUERGX09iamVjdCogcE9iaiwgQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpzKQ0KK3sNCisgICAgQVNTRVJUKHBPYmogIT0gTlVMTCk7DQorICAgIGlmIChwT2JqLT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgQVNTRVJUKHBPYmpzICE9IE5VTEwpOw0KKyAgICAgICAgcE9iaiA9IENQREZfUmVmZXJlbmNlOjpDcmVhdGUocE9ianMsIHBPYmotPkdldE9iak51bSgpKTsNCisgICAgfQ0KKyAgICBtX09iamVjdHMuSW5zZXJ0QXQoaW5kZXgsIHBPYmopOw0KK30NCit2b2lkIENQREZfQXJyYXk6OkFkZChDUERGX09iamVjdCogcE9iaiwgQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpzKQ0KK3sNCisgICAgQVNTRVJUKHBPYmogIT0gTlVMTCk7DQorICAgIGlmIChwT2JqLT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgQVNTRVJUKHBPYmpzICE9IE5VTEwpOw0KKyAgICAgICAgcE9iaiA9IENQREZfUmVmZXJlbmNlOjpDcmVhdGUocE9ianMsIHBPYmotPkdldE9iak51bSgpKTsNCisgICAgfQ0KKyAgICBtX09iamVjdHMuQWRkKHBPYmopOw0KK30NCit2b2lkIENQREZfQXJyYXk6OkFkZE5hbWUoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0cikNCit7DQorICAgIEFTU0VSVCh0aGlzICE9IE5VTEwgJiYgbV9UeXBlID09IFBERk9CSl9BUlJBWSk7DQorICAgIEFkZChGWF9ORVcgQ1BERl9OYW1lKHN0cikpOw0KK30NCit2b2lkIENQREZfQXJyYXk6OkFkZFN0cmluZyhjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3RyKQ0KK3sNCisgICAgQVNTRVJUKHRoaXMgIT0gTlVMTCAmJiBtX1R5cGUgPT0gUERGT0JKX0FSUkFZKTsNCisgICAgQWRkKEZYX05FVyBDUERGX1N0cmluZyhzdHIpKTsNCit9DQordm9pZCBDUERGX0FycmF5OjpBZGRJbnRlZ2VyKGludCBpKQ0KK3sNCisgICAgQVNTRVJUKHRoaXMgIT0gTlVMTCAmJiBtX1R5cGUgPT0gUERGT0JKX0FSUkFZKTsNCisgICAgQWRkKEZYX05FVyBDUERGX051bWJlcihpKSk7DQorfQ0KK3ZvaWQgQ1BERl9BcnJheTo6QWRkTnVtYmVyKEZYX0ZMT0FUIGYpDQorew0KKyAgICBBU1NFUlQodGhpcyAhPSBOVUxMICYmIG1fVHlwZSA9PSBQREZPQkpfQVJSQVkpOw0KKyAgICBDUERGX051bWJlciogcE51bWJlciA9IEZYX05FVyBDUERGX051bWJlcjsNCisgICAgcE51bWJlci0+U2V0TnVtYmVyKGYpOw0KKyAgICBBZGQocE51bWJlcik7DQorfQ0KK3ZvaWQgQ1BERl9BcnJheTo6QWRkUmVmZXJlbmNlKENQREZfSW5kaXJlY3RPYmplY3RzKiBwRG9jLCBGWF9EV09SRCBvYmpudW0pDQorew0KKyAgICBBU1NFUlQodGhpcyAhPSBOVUxMICYmIG1fVHlwZSA9PSBQREZPQkpfQVJSQVkpOw0KKyAgICBBZGQoRlhfTkVXIENQREZfUmVmZXJlbmNlKHBEb2MsIG9iam51bSkpOw0KK30NCitGWF9CT09MIENQREZfQXJyYXk6OklkZW50aWNhbChDUERGX0FycmF5KiBwT3RoZXIpIGNvbnN0DQorew0KKyAgICBpZiAobV9PYmplY3RzLkdldFNpemUoKSAhPSBwT3RoZXItPm1fT2JqZWN0cy5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fT2JqZWN0cy5HZXRTaXplKCk7IGkgKyspDQorICAgICAgICBpZiAoISgoQ1BERl9PYmplY3QqKW1fT2JqZWN0c1tpXSktPklzSWRlbnRpY2FsKChDUERGX09iamVjdCopcE90aGVyLT5tX09iamVjdHNbaV0pKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ1BERl9EaWN0aW9uYXJ5Ojp+Q1BERl9EaWN0aW9uYXJ5KCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgRlhfTFBWT0lEIHZhbHVlID0gbV9NYXAuR2V0TmV4dFZhbHVlKHBvcyk7DQorICAgICAgICAoKENQREZfT2JqZWN0Kil2YWx1ZSktPlJlbGVhc2UoKTsNCisgICAgfQ0KK30NCitGWF9QT1NJVElPTiBDUERGX0RpY3Rpb25hcnk6OkdldFN0YXJ0UG9zKCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX01hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX0RpY3Rpb25hcnk6OkdldE5leHRFbGVtZW50KEZYX1BPU0lUSU9OJiBwb3MsIENGWF9CeXRlU3RyaW5nJiBrZXkpIGNvbnN0DQorew0KKyAgICBpZiAocG9zID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwOw0KKyAgICBtX01hcC5HZXROZXh0QXNzb2MocG9zLCBrZXksIChGWF9MUFZPSUQmKXApOw0KKyAgICByZXR1cm4gcDsNCit9DQorQ1BERl9PYmplY3QqIENQREZfRGljdGlvbmFyeTo6R2V0RWxlbWVudChGWF9CU1RSIGtleSkgY29uc3QNCit7DQorICAgIGlmICh0aGlzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwID0gTlVMTDsNCisgICAgbV9NYXAuTG9va3VwKGtleSwgKHZvaWQqJilwKTsNCisgICAgcmV0dXJuIHA7DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX0RpY3Rpb25hcnk6OkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSIGtleSkgY29uc3QNCit7DQorICAgIGlmICh0aGlzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwID0gTlVMTDsNCisgICAgbV9NYXAuTG9va3VwKGtleSwgKHZvaWQqJilwKTsNCisgICAgcmV0dXJuIHAtPkdldERpcmVjdCgpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX0RpY3Rpb25hcnk6OkdldFN0cmluZyhGWF9CU1RSIGtleSkgY29uc3QNCit7DQorICAgIGlmICh0aGlzKSB7DQorICAgICAgICBDUERGX09iamVjdCogcCA9IE5VTEw7DQorICAgICAgICBtX01hcC5Mb29rdXAoa2V5LCAodm9pZComKXApOw0KKyAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICByZXR1cm4gcC0+R2V0U3RyaW5nKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKCk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nQyBDUERGX0RpY3Rpb25hcnk6OkdldENvbnN0U3RyaW5nKEZYX0JTVFIga2V5KSBjb25zdA0KK3sNCisgICAgaWYgKHRoaXMpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwID0gTlVMTDsNCisgICAgICAgIG1fTWFwLkxvb2t1cChrZXksICh2b2lkKiYpcCk7DQorICAgICAgICBpZiAocCkgew0KKyAgICAgICAgICAgIHJldHVybiBwLT5HZXRDb25zdFN0cmluZygpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZ0MoKTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9EaWN0aW9uYXJ5OjpHZXRVbmljb2RlVGV4dChGWF9CU1RSIGtleSwgQ0ZYX0NoYXJNYXAqIHBDaGFyTWFwKSBjb25zdA0KK3sNCisgICAgaWYgKHRoaXMpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwID0gTlVMTDsNCisgICAgICAgIG1fTWFwLkxvb2t1cChrZXksICh2b2lkKiYpcCk7DQorICAgICAgICBpZiAocCkgew0KKyAgICAgICAgICAgIGlmKHAtPkdldFR5cGUoKSA9PSBQREZPQkpfUkVGRVJFTkNFKSB7DQorICAgICAgICAgICAgICAgIHAgPSAoKENQREZfUmVmZXJlbmNlKilwKS0+R2V0RGlyZWN0KCk7DQorICAgICAgICAgICAgICAgIHJldHVybiBwLT5HZXRVbmljb2RlVGV4dChwQ2hhck1hcCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHAtPkdldFVuaWNvZGVUZXh0KHBDaGFyTWFwKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfRGljdGlvbmFyeTo6R2V0U3RyaW5nKEZYX0JTVFIga2V5LCBGWF9CU1RSIGRlZikgY29uc3QNCit7DQorICAgIGlmICh0aGlzKSB7DQorICAgICAgICBDUERGX09iamVjdCogcCA9IE5VTEw7DQorICAgICAgICBtX01hcC5Mb29rdXAoa2V5LCAodm9pZComKXApOw0KKyAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICByZXR1cm4gcC0+R2V0U3RyaW5nKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKGRlZik7DQorfQ0KK0NGWF9CeXRlU3RyaW5nQyBDUERGX0RpY3Rpb25hcnk6OkdldENvbnN0U3RyaW5nKEZYX0JTVFIga2V5LCBGWF9CU1RSIGRlZikgY29uc3QNCit7DQorICAgIGlmICh0aGlzKSB7DQorICAgICAgICBDUERGX09iamVjdCogcCA9IE5VTEw7DQorICAgICAgICBtX01hcC5Mb29rdXAoa2V5LCAodm9pZComKXApOw0KKyAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICByZXR1cm4gcC0+R2V0Q29uc3RTdHJpbmcoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKGRlZik7DQorfQ0KK2ludCBDUERGX0RpY3Rpb25hcnk6OkdldEludGVnZXIoRlhfQlNUUiBrZXkpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcykgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHAgPSBOVUxMOw0KKyAgICAgICAgbV9NYXAuTG9va3VwKGtleSwgKHZvaWQqJilwKTsNCisgICAgICAgIGlmIChwKSB7DQorICAgICAgICAgICAgcmV0dXJuIHAtPkdldEludGVnZXIoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQoraW50IENQREZfRGljdGlvbmFyeTo6R2V0SW50ZWdlcihGWF9CU1RSIGtleSwgaW50IGRlZikgY29uc3QNCit7DQorICAgIGlmICh0aGlzKSB7DQorICAgICAgICBDUERGX09iamVjdCogcCA9IE5VTEw7DQorICAgICAgICBtX01hcC5Mb29rdXAoa2V5LCAodm9pZComKXApOw0KKyAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICByZXR1cm4gcC0+R2V0SW50ZWdlcigpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBkZWY7DQorfQ0KK0ZYX0ZMT0FUIENQREZfRGljdGlvbmFyeTo6R2V0TnVtYmVyKEZYX0JTVFIga2V5KSBjb25zdA0KK3sNCisgICAgaWYgKHRoaXMpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwID0gTlVMTDsNCisgICAgICAgIG1fTWFwLkxvb2t1cChrZXksICh2b2lkKiYpcCk7DQorICAgICAgICBpZiAocCkgew0KKyAgICAgICAgICAgIHJldHVybiBwLT5HZXROdW1iZXIoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorRlhfQk9PTCBDUERGX0RpY3Rpb25hcnk6OkdldEJvb2xlYW4oRlhfQlNUUiBrZXksIEZYX0JPT0wgYkRlZmF1bHQpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcykgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHAgPSBOVUxMOw0KKyAgICAgICAgbV9NYXAuTG9va3VwKGtleSwgKHZvaWQqJilwKTsNCisgICAgICAgIGlmIChwICYmIHAtPkdldFR5cGUoKSA9PSBQREZPQkpfQk9PTEVBTikgew0KKyAgICAgICAgICAgIHJldHVybiBwLT5HZXRJbnRlZ2VyKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGJEZWZhdWx0Ow0KK30NCitDUERGX0RpY3Rpb25hcnkqIENQREZfRGljdGlvbmFyeTo6R2V0RGljdChGWF9CU1RSIGtleSkgY29uc3QNCit7DQorICAgIENQREZfT2JqZWN0KiBwID0gR2V0RWxlbWVudFZhbHVlKGtleSk7DQorICAgIGlmIChwID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9IGVsc2UgaWYgKHAtPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgcmV0dXJuIChDUERGX0RpY3Rpb25hcnkqKXA7DQorICAgIH0gZWxzZSBpZiAocC0+R2V0VHlwZSgpID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIHJldHVybiAoKENQREZfU3RyZWFtKilwKS0+R2V0RGljdCgpOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX0FycmF5KiBDUERGX0RpY3Rpb25hcnk6OkdldEFycmF5KEZYX0JTVFIga2V5KSBjb25zdA0KK3sNCisgICAgQ1BERl9PYmplY3QqIHAgPSBHZXRFbGVtZW50VmFsdWUoa2V5KTsNCisgICAgaWYgKHAgPT0gTlVMTCB8fCBwLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gKENQREZfQXJyYXkqKXA7DQorfQ0KK0NQREZfU3RyZWFtKiBDUERGX0RpY3Rpb25hcnk6OkdldFN0cmVhbShGWF9CU1RSIGtleSkgY29uc3QNCit7DQorICAgIENQREZfT2JqZWN0KiBwID0gR2V0RWxlbWVudFZhbHVlKGtleSk7DQorICAgIGlmIChwID09IE5VTEwgfHwgcC0+R2V0VHlwZSgpICE9IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiAoQ1BERl9TdHJlYW0qKXA7DQorfQ0KK0NGWF9GbG9hdFJlY3QgQ1BERl9EaWN0aW9uYXJ5OjpHZXRSZWN0KEZYX0JTVFIga2V5KSBjb25zdA0KK3sNCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0Ow0KKyAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBHZXRBcnJheShrZXkpOw0KKyAgICBpZiAocEFycmF5KSB7DQorICAgICAgICByZWN0ID0gcEFycmF5LT5HZXRSZWN0KCk7DQorICAgIH0NCisgICAgcmV0dXJuIHJlY3Q7DQorfQ0KK0NGWF9BZmZpbmVNYXRyaXggQ1BERl9EaWN0aW9uYXJ5OjpHZXRNYXRyaXgoRlhfQlNUUiBrZXkpIGNvbnN0DQorew0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsNCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gR2V0QXJyYXkoa2V5KTsNCisgICAgaWYgKHBBcnJheSkgew0KKyAgICAgICAgbWF0cml4ID0gcEFycmF5LT5HZXRNYXRyaXgoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gbWF0cml4Ow0KK30NCitGWF9CT09MIENQREZfRGljdGlvbmFyeTo6S2V5RXhpc3QoRlhfQlNUUiBrZXkpIGNvbnN0DQorew0KKyAgICBpZiAodGhpcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfTFBWT0lEIHZhbHVlOw0KKyAgICByZXR1cm4gbV9NYXAuTG9va3VwKGtleSwgdmFsdWUpOw0KK30NCit2b2lkIENQREZfRGljdGlvbmFyeTo6U2V0QXQoRlhfQlNUUiBrZXksIENQREZfT2JqZWN0KiBwT2JqLCBDUERGX0luZGlyZWN0T2JqZWN0cyogcE9ianMpDQorew0KKyAgICBBU1NFUlQodGhpcyAhPSBOVUxMICYmIG1fVHlwZSA9PSBQREZPQkpfRElDVElPTkFSWSk7DQorICAgIENQREZfT2JqZWN0KiBwID0gTlVMTDsNCisgICAgbV9NYXAuTG9va3VwKGtleSwgKHZvaWQqJilwKTsNCisgICAgaWYgKHAgPT0gcE9iaikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChwKSB7DQorICAgICAgICBwLT5SZWxlYXNlKCk7DQorICAgIH0NCisgICAgaWYgKHBPYmopIHsNCisgICAgICAgIGlmIChwT2JqLT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgICAgIEFTU0VSVChwT2JqcyAhPSBOVUxMKTsNCisgICAgICAgICAgICBwT2JqID0gQ1BERl9SZWZlcmVuY2U6OkNyZWF0ZShwT2JqcywgcE9iai0+R2V0T2JqTnVtKCkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9NYXAuU2V0QXQoa2V5LCBwT2JqKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fTWFwLlJlbW92ZUtleShrZXkpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9EaWN0aW9uYXJ5OjpBZGRWYWx1ZShGWF9CU1RSIGtleSwgQ1BERl9PYmplY3QqIHBPYmopDQorew0KKyAgICBBU1NFUlQodGhpcyAhPSBOVUxMICYmIG1fVHlwZSA9PSBQREZPQkpfRElDVElPTkFSWSk7DQorICAgIG1fTWFwLkFkZFZhbHVlKGtleSwgcE9iaik7DQorfQ0KK3ZvaWQgQ1BERl9EaWN0aW9uYXJ5OjpSZW1vdmVBdChGWF9CU1RSIGtleSkNCit7DQorICAgIEFTU0VSVCh0aGlzICE9IE5VTEwgJiYgbV9UeXBlID09IFBERk9CSl9ESUNUSU9OQVJZKTsNCisgICAgQ1BERl9PYmplY3QqIHAgPSBOVUxMOw0KKyAgICBtX01hcC5Mb29rdXAoa2V5LCAodm9pZComKXApOw0KKyAgICBpZiAocCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcC0+UmVsZWFzZSgpOw0KKyAgICBtX01hcC5SZW1vdmVLZXkoa2V5KTsNCit9DQordm9pZCBDUERGX0RpY3Rpb25hcnk6OlJlcGxhY2VLZXkoRlhfQlNUUiBvbGRrZXksIEZYX0JTVFIgbmV3a2V5KQ0KK3sNCisgICAgQVNTRVJUKHRoaXMgIT0gTlVMTCAmJiBtX1R5cGUgPT0gUERGT0JKX0RJQ1RJT05BUlkpOw0KKyAgICBDUERGX09iamVjdCogcCA9IE5VTEw7DQorICAgIG1fTWFwLkxvb2t1cChvbGRrZXksICh2b2lkKiYpcCk7DQorICAgIGlmIChwID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX01hcC5SZW1vdmVLZXkob2xka2V5KTsNCisgICAgbV9NYXAuU2V0QXQobmV3a2V5LCBwKTsNCit9DQorRlhfQk9PTCBDUERGX0RpY3Rpb25hcnk6OklkZW50aWNhbChDUERGX0RpY3Rpb25hcnkqIHBPdGhlcikgY29uc3QNCit7DQorICAgIGlmICh0aGlzID09IE5VTEwpIHsNCisgICAgICAgIGlmIChwT3RoZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChwT3RoZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX01hcC5HZXRDb3VudCgpICE9IHBPdGhlci0+bV9NYXAuR2V0Q291bnQoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcga2V5Ow0KKyAgICAgICAgRlhfTFBWT0lEIHZhbHVlOw0KKyAgICAgICAgbV9NYXAuR2V0TmV4dEFzc29jKHBvcywga2V5LCB2YWx1ZSk7DQorICAgICAgICBpZiAoISgoQ1BERl9PYmplY3QqKXZhbHVlKS0+SXNJZGVudGljYWwocE90aGVyLT5HZXRFbGVtZW50KGtleSkpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENQREZfRGljdGlvbmFyeTo6U2V0QXRJbnRlZ2VyKEZYX0JTVFIga2V5LCBpbnQgaSkNCit7DQorICAgIFNldEF0KGtleSwgRlhfTkVXIENQREZfTnVtYmVyKGkpKTsNCit9DQordm9pZCBDUERGX0RpY3Rpb25hcnk6OlNldEF0TmFtZShGWF9CU1RSIGtleSwgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpDQorew0KKyAgICBTZXRBdChrZXksIEZYX05FVyBDUERGX05hbWUobmFtZSkpOw0KK30NCit2b2lkIENQREZfRGljdGlvbmFyeTo6U2V0QXRTdHJpbmcoRlhfQlNUUiBrZXksIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHIpDQorew0KKyAgICBTZXRBdChrZXksIEZYX05FVyBDUERGX1N0cmluZyhzdHIpKTsNCit9DQordm9pZCBDUERGX0RpY3Rpb25hcnk6OlNldEF0UmVmZXJlbmNlKEZYX0JTVFIga2V5LCBDUERGX0luZGlyZWN0T2JqZWN0cyogcERvYywgRlhfRFdPUkQgb2JqbnVtKQ0KK3sNCisgICAgU2V0QXQoa2V5LCBGWF9ORVcgQ1BERl9SZWZlcmVuY2UocERvYywgb2JqbnVtKSk7DQorfQ0KK3ZvaWQgQ1BERl9EaWN0aW9uYXJ5OjpBZGRSZWZlcmVuY2UoRlhfQlNUUiBrZXksIENQREZfSW5kaXJlY3RPYmplY3RzKiBwRG9jLCBGWF9EV09SRCBvYmpudW0pDQorew0KKyAgICBBZGRWYWx1ZShrZXksIEZYX05FVyBDUERGX1JlZmVyZW5jZShwRG9jLCBvYmpudW0pKTsNCit9DQordm9pZCBDUERGX0RpY3Rpb25hcnk6OlNldEF0TnVtYmVyKEZYX0JTVFIga2V5LCBGWF9GTE9BVCBmKQ0KK3sNCisgICAgQ1BERl9OdW1iZXIqIHBOdW1iZXIgPSBGWF9ORVcgQ1BERl9OdW1iZXI7DQorICAgIHBOdW1iZXItPlNldE51bWJlcihmKTsNCisgICAgU2V0QXQoa2V5LCBwTnVtYmVyKTsNCit9DQordm9pZCBDUERGX0RpY3Rpb25hcnk6OlNldEF0Qm9vbGVhbihGWF9CU1RSIGtleSwgRlhfQk9PTCBiVmFsdWUpDQorew0KKyAgICBTZXRBdChrZXksIEZYX05FVyBDUERGX0Jvb2xlYW4oYlZhbHVlKSk7DQorfQ0KK3ZvaWQgQ1BERl9EaWN0aW9uYXJ5OjpTZXRBdFJlY3QoRlhfQlNUUiBrZXksIGNvbnN0IENGWF9GbG9hdFJlY3QmIHJlY3QpDQorew0KKyAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBGWF9ORVcgQ1BERl9BcnJheTsNCisgICAgcEFycmF5LT5BZGROdW1iZXIocmVjdC5sZWZ0KTsNCisgICAgcEFycmF5LT5BZGROdW1iZXIocmVjdC5ib3R0b20pOw0KKyAgICBwQXJyYXktPkFkZE51bWJlcihyZWN0LnJpZ2h0KTsNCisgICAgcEFycmF5LT5BZGROdW1iZXIocmVjdC50b3ApOw0KKyAgICBTZXRBdChrZXksIHBBcnJheSk7DQorfQ0KK3ZvaWQgQ1BERl9EaWN0aW9uYXJ5OjpTZXRBdE1hdHJpeChGWF9CU1RSIGtleSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4KQ0KK3sNCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gRlhfTkVXIENQREZfQXJyYXk7DQorICAgIHBBcnJheS0+QWRkTnVtYmVyMTYobWF0cml4LmEpOw0KKyAgICBwQXJyYXktPkFkZE51bWJlcjE2KG1hdHJpeC5iKTsNCisgICAgcEFycmF5LT5BZGROdW1iZXIxNihtYXRyaXguYyk7DQorICAgIHBBcnJheS0+QWRkTnVtYmVyMTYobWF0cml4LmQpOw0KKyAgICBwQXJyYXktPkFkZE51bWJlcihtYXRyaXguZSk7DQorICAgIHBBcnJheS0+QWRkTnVtYmVyKG1hdHJpeC5mKTsNCisgICAgU2V0QXQoa2V5LCBwQXJyYXkpOw0KK30NCitDUERGX1N0cmVhbTo6Q1BERl9TdHJlYW0oRlhfTFBCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplLCBDUERGX0RpY3Rpb25hcnkqIHBEaWN0KQ0KK3sNCisgICAgbV9UeXBlID0gUERGT0JKX1NUUkVBTTsNCisgICAgbV9wRGljdCA9IHBEaWN0Ow0KKyAgICBtX2R3U2l6ZSA9IHNpemU7DQorICAgIG1fR2VuTnVtID0gKEZYX0RXT1JEKSAtIDE7DQorICAgIG1fcERhdGFCdWYgPSBwRGF0YTsNCisgICAgbV9wQ3J5cHRvSGFuZGxlciA9IE5VTEw7DQorfQ0KK0NQREZfU3RyZWFtOjp+Q1BERl9TdHJlYW0oKQ0KK3sNCisgICAgaWYgKG1fR2VuTnVtID09IChGWF9EV09SRCkgLSAxICYmIG1fcERhdGFCdWYgIT0gTlVMTCkgew0KKyAgICAgICAgRlhfRnJlZShtX3BEYXRhQnVmKTsNCisgICAgfQ0KKyAgICBpZiAobV9wRGljdCkgew0KKyAgICAgICAgbV9wRGljdC0+UmVsZWFzZSgpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW06OkluaXRTdHJlYW0oQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCkNCit7DQorICAgIGlmIChwRGljdCkgew0KKyAgICAgICAgaWYgKG1fcERpY3QpIHsNCisgICAgICAgICAgICBtX3BEaWN0LT5SZWxlYXNlKCk7DQorICAgICAgICB9DQorICAgICAgICBtX3BEaWN0ID0gcERpY3Q7DQorICAgIH0NCisgICAgaWYgKG1fR2VuTnVtID09IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICBpZiAobV9wRGF0YUJ1Zikgew0KKyAgICAgICAgICAgIEZYX0ZyZWUobV9wRGF0YUJ1Zik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9HZW5OdW0gPSAwOw0KKyAgICBtX3BGaWxlID0gTlVMTDsNCisgICAgbV9wQ3J5cHRvSGFuZGxlciA9IE5VTEw7DQorICAgIG1fRmlsZU9mZnNldCA9IDA7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW06OkluaXRTdHJlYW0oRlhfTFBCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplLCBDUERGX0RpY3Rpb25hcnkqIHBEaWN0KQ0KK3sNCisgICAgSW5pdFN0cmVhbShwRGljdCk7DQorICAgIG1fR2VuTnVtID0gKEZYX0RXT1JEKSAtIDE7DQorICAgIG1fcERhdGFCdWYgPSBGWF9BbGxvYyhGWF9CWVRFLCBzaXplKTsNCisgICAgaWYgKHBEYXRhKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhQnVmLCBwRGF0YSwgc2l6ZSk7DQorICAgIH0NCisgICAgbV9kd1NpemUgPSBzaXplOw0KKyAgICBpZiAobV9wRGljdCkgew0KKyAgICAgICAgbV9wRGljdC0+U2V0QXRJbnRlZ2VyKEZYX0JTVFJDKCJMZW5ndGgiKSwgc2l6ZSk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1N0cmVhbTo6U2V0RGF0YShGWF9MUENCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplLCBGWF9CT09MIGJDb21wcmVzc2VkLCBGWF9CT09MIGJLZWVwQnVmKQ0KK3sNCisgICAgaWYgKG1fR2VuTnVtID09IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICBpZiAobV9wRGF0YUJ1Zikgew0KKyAgICAgICAgICAgIEZYX0ZyZWUobV9wRGF0YUJ1Zik7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX0dlbk51bSA9IChGWF9EV09SRCkgLSAxOw0KKyAgICAgICAgbV9wQ3J5cHRvSGFuZGxlciA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKGJLZWVwQnVmKSB7DQorICAgICAgICBtX3BEYXRhQnVmID0gKEZYX0xQQllURSlwRGF0YTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcERhdGFCdWYgPSBGWF9BbGxvYyhGWF9CWVRFLCBzaXplKTsNCisgICAgICAgIGlmIChwRGF0YSkgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGFCdWYsIHBEYXRhLCBzaXplKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX2R3U2l6ZSA9IHNpemU7DQorICAgIGlmIChtX3BEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIG1fcERpY3QgPSBGWF9ORVcgQ1BERl9EaWN0aW9uYXJ5Ow0KKyAgICB9DQorICAgIG1fcERpY3QtPlNldEF0SW50ZWdlcihGWF9CU1RSQygiTGVuZ3RoIiksIHNpemUpOw0KKyAgICBpZiAoIWJDb21wcmVzc2VkKSB7DQorICAgICAgICBtX3BEaWN0LT5SZW1vdmVBdChGWF9CU1RSQygiRmlsdGVyIikpOw0KKyAgICAgICAgbV9wRGljdC0+UmVtb3ZlQXQoRlhfQlNUUkMoIkRlY29kZVBhcm1zIikpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdHJlYW06OlJlYWRSYXdEYXRhKEZYX0ZJTEVTSVpFIG9mZnNldCwgRlhfTFBCWVRFIGJ1ZiwgRlhfRFdPUkQgc2l6ZSkgY29uc3QNCit7DQorICAgIGlmICgobV9HZW5OdW0gIT0gKEZYX0RXT1JEKSAtIDEpICYmIG1fcEZpbGUpIHsNCisgICAgICAgIHJldHVybiBtX3BGaWxlLT5SZWFkQmxvY2soYnVmLCBtX0ZpbGVPZmZzZXQgKyBvZmZzZXQsIHNpemUpOw0KKyAgICB9DQorICAgIGlmIChtX3BEYXRhQnVmKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihidWYsIG1fcERhdGFCdWYgKyBvZmZzZXQsIHNpemUpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENQREZfU3RyZWFtOjpJbml0U3RyZWFtKElGWF9GaWxlUmVhZCAqcEZpbGUsIENQREZfRGljdGlvbmFyeSogcERpY3QpDQorew0KKyAgICBJbml0U3RyZWFtKHBEaWN0KTsNCisgICAgbV9wRmlsZSA9IHBGaWxlOw0KKyAgICBtX2R3U2l6ZSA9IChGWF9EV09SRClwRmlsZS0+R2V0U2l6ZSgpOw0KKyAgICBpZiAobV9wRGljdCkgew0KKyAgICAgICAgbV9wRGljdC0+U2V0QXRJbnRlZ2VyKEZYX0JTVFJDKCJMZW5ndGgiKSwgbV9kd1NpemUpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9TdHJlYW06OklkZW50aWNhbChDUERGX1N0cmVhbSogcE90aGVyKSBjb25zdA0KK3sNCisgICAgaWYgKCFtX3BEaWN0LT5JZGVudGljYWwocE90aGVyLT5tX3BEaWN0KSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX2R3U2l6ZSAhPSBwT3RoZXItPm1fZHdTaXplKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fR2VuTnVtICE9IChGWF9EV09SRCkgLSAxICYmIHBPdGhlci0+bV9HZW5OdW0gIT0gKEZYX0RXT1JEKSAtIDEpIHsNCisgICAgICAgIGlmIChtX3BGaWxlID09IHBPdGhlci0+bV9wRmlsZSAmJiBtX3BGaWxlID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghbV9wRmlsZSB8fCAhcE90aGVyLT5tX3BGaWxlKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBzcmNCdWZbMTAyNF07DQorICAgICAgICBGWF9CWVRFIGRlc3RCdWZbMTAyNF07DQorICAgICAgICBGWF9EV09SRCBzaXplID0gbV9kd1NpemU7DQorICAgICAgICBGWF9EV09SRCBzcmNPZmZzZXQgPSBtX0ZpbGVPZmZzZXQ7DQorICAgICAgICBGWF9EV09SRCBkZXN0T2Zmc2V0ID0gcE90aGVyLT5tX0ZpbGVPZmZzZXQ7DQorICAgICAgICBpZiAobV9wRmlsZSA9PSBwT3RoZXItPm1fcEZpbGUgJiYgc3JjT2Zmc2V0ID09IGRlc3RPZmZzZXQpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIHdoaWxlIChzaXplID4gMCkgew0KKyAgICAgICAgICAgIEZYX0RXT1JEIGFjdHVhbFNpemUgPSBzaXplID4gMTAyNCA/IDEwMjQgOiBzaXplOw0KKyAgICAgICAgICAgIG1fcEZpbGUtPlJlYWRCbG9jayhzcmNCdWYsIHNyY09mZnNldCwgYWN0dWFsU2l6ZSk7DQorICAgICAgICAgICAgcE90aGVyLT5tX3BGaWxlLT5SZWFkQmxvY2soZGVzdEJ1ZiwgZGVzdE9mZnNldCwgYWN0dWFsU2l6ZSk7DQorICAgICAgICAgICAgaWYgKEZYU1lTX21lbWNtcDMyKHNyY0J1ZiwgZGVzdEJ1ZiwgYWN0dWFsU2l6ZSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHNpemUgLT0gYWN0dWFsU2l6ZTsNCisgICAgICAgICAgICBzcmNPZmZzZXQgKz0gYWN0dWFsU2l6ZTsNCisgICAgICAgICAgICBkZXN0T2Zmc2V0ICs9IGFjdHVhbFNpemU7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9HZW5OdW0gIT0gKEZYX0RXT1JEKSAtIDEgfHwgcE90aGVyLT5tX0dlbk51bSAhPSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgSUZYX0ZpbGVSZWFkKiBwRmlsZSA9IE5VTEw7DQorICAgICAgICBGWF9MUEJZVEUgcEJ1ZiA9IE5VTEw7DQorICAgICAgICBGWF9EV09SRCBvZmZzZXQgPSAwOw0KKyAgICAgICAgaWYgKG1fR2VuTnVtICE9IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICAgICAgcEZpbGUgPSBtX3BGaWxlOw0KKyAgICAgICAgICAgIHBCdWYgPSBwT3RoZXItPm1fcERhdGFCdWY7DQorICAgICAgICAgICAgb2Zmc2V0ID0gbV9GaWxlT2Zmc2V0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBPdGhlci0+bV9HZW5OdW0gIT0gKEZYX0RXT1JEKSAtIDEpIHsNCisgICAgICAgICAgICBwRmlsZSA9IHBPdGhlci0+bV9wRmlsZTsNCisgICAgICAgICAgICBwQnVmID0gbV9wRGF0YUJ1ZjsNCisgICAgICAgICAgICBvZmZzZXQgPSBwT3RoZXItPm1fRmlsZU9mZnNldDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChOVUxMID09IHBCdWYpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBGWF9CWVRFIHNyY0J1ZlsxMDI0XTsNCisgICAgICAgIEZYX0RXT1JEIHNpemUgPSBtX2R3U2l6ZTsNCisgICAgICAgIHdoaWxlIChzaXplID4gMCkgew0KKyAgICAgICAgICAgIEZYX0RXT1JEIGFjdHVhbFNpemUgPSBzaXplID4gMTAyNCA/IDEwMjQgOiBzaXplOw0KKyAgICAgICAgICAgIG1fcEZpbGUtPlJlYWRCbG9jayhzcmNCdWYsIG9mZnNldCwgYWN0dWFsU2l6ZSk7DQorICAgICAgICAgICAgaWYgKEZYU1lTX21lbWNtcDMyKHNyY0J1ZiwgcEJ1ZiwgYWN0dWFsU2l6ZSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBCdWYgKz0gYWN0dWFsU2l6ZTsNCisgICAgICAgICAgICBzaXplIC09IGFjdHVhbFNpemU7DQorICAgICAgICAgICAgb2Zmc2V0ICs9IGFjdHVhbFNpemU7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhTWVNfbWVtY21wMzIobV9wRGF0YUJ1ZiwgcE90aGVyLT5tX3BEYXRhQnVmLCBtX2R3U2l6ZSkgPT0gMDsNCit9DQorQ1BERl9TdHJlYW0qIENQREZfU3RyZWFtOjpDbG9uZShGWF9CT09MIGJEaXJlY3QsIEZQREZfTFBGQ2xvbmVTdHJlYW1DYWxsYmFjayBscGZDYWxsYmFjaywgRlhfTFBWT0lEIHBVc2VyRGF0YSkgY29uc3QNCit7DQorICAgIENQREZfRGljdGlvbmFyeSAqcENsb25lRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKW1fcERpY3QtPkNsb25lKGJEaXJlY3QpOw0KKyAgICBJRlhfRmlsZVN0cmVhbSAqcEZTID0gTlVMTDsNCisgICAgaWYgKGxwZkNhbGxiYWNrKSB7DQorICAgICAgICBwRlMgPSBscGZDYWxsYmFjaygoQ1BERl9TdHJlYW0qKXRoaXMsIHBVc2VyRGF0YSk7DQorICAgIH0NCisgICAgaWYgKCFwRlMpIHsNCisgICAgICAgIENQREZfU3RyZWFtQWNjIGFjYzsNCisgICAgICAgIGFjYy5Mb2FkQWxsRGF0YSh0aGlzLCBUUlVFKTsNCisgICAgICAgIEZYX0RXT1JEIHN0cmVhbVNpemUgPSBhY2MuR2V0U2l6ZSgpOw0KKyAgICAgICAgQ1BERl9TdHJlYW0qIHBPYmogPSBGWF9ORVcgQ1BERl9TdHJlYW0oYWNjLkRldGFjaERhdGEoKSwgc3RyZWFtU2l6ZSwgcENsb25lRGljdCk7DQorICAgICAgICByZXR1cm4gcE9iajsNCisgICAgfQ0KKyAgICBDUERGX1N0cmVhbSogcE9iaiA9IEZYX05FVyBDUERGX1N0cmVhbShOVUxMLCAwLCBOVUxMKTsNCisgICAgQ1BERl9TdHJlYW1GaWx0ZXIgKnBTRiA9IEdldFN0cmVhbUZpbHRlcihUUlVFKTsNCisgICAgaWYgKHBTRikgew0KKyAgICAgICAgRlhfTFBCWVRFIHBCdWYgPSBGWF9BbGxvYyhGWF9CWVRFLCA0MDk2KTsNCisgICAgICAgIEZYX0RXT1JEIGR3UmVhZDsNCisgICAgICAgIGRvIHsNCisgICAgICAgICAgICBkd1JlYWQgPSBwU0YtPlJlYWRCbG9jayhwQnVmLCA0MDk2KTsNCisgICAgICAgICAgICBpZiAoZHdSZWFkKSB7DQorICAgICAgICAgICAgICAgIHBGUy0+V3JpdGVCbG9jayhwQnVmLCBkd1JlYWQpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gd2hpbGUgKGR3UmVhZCA9PSA0MDk2KTsNCisgICAgICAgIHBGUy0+Rmx1c2goKTsNCisgICAgICAgIEZYX0ZyZWUocEJ1Zik7DQorICAgICAgICBkZWxldGUgcFNGOw0KKyAgICB9DQorICAgIHBPYmotPkluaXRTdHJlYW0oKElGWF9GaWxlUmVhZCopcEZTLCBwQ2xvbmVEaWN0KTsNCisgICAgcmV0dXJuIHBPYmo7DQorfQ0KK2V4dGVybiBGWF9CT09MIFBERl9EYXRhRGVjb2RlKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGNvbnN0IENQREZfRGljdGlvbmFyeSogcERpY3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSwgQ0ZYX0J5dGVTdHJpbmcmIEltYWdlRW5jb2RpbmcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiYgcEltYWdlUGFybXMsIEZYX0RXT1JEIGVzdGltYXRlZF9zaXplLCBGWF9CT09MIGJJbWFnZUFjYyk7DQorQ1BERl9TdHJlYW1BY2M6OkNQREZfU3RyZWFtQWNjKCkNCit7DQorICAgIG1fYk5ld0J1ZiA9IEZBTFNFOw0KKyAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgbV9kd1NpemUgPSAwOw0KKyAgICBtX3BJbWFnZVBhcmFtID0gTlVMTDsNCisgICAgbV9wU3RyZWFtID0gTlVMTDsNCisgICAgbV9wU3JjRGF0YSA9IE5VTEw7DQorfQ0KK3ZvaWQgQ1BERl9TdHJlYW1BY2M6OkxvYWRBbGxEYXRhKGNvbnN0IENQREZfU3RyZWFtKiBwU3RyZWFtLCBGWF9CT09MIGJSYXdBY2Nlc3MsIEZYX0RXT1JEIGVzdGltYXRlZF9zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYkltYWdlQWNjKQ0KK3sNCisgICAgaWYgKHBTdHJlYW0gPT0gTlVMTCB8fCBwU3RyZWFtLT5HZXRUeXBlKCkgIT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcFN0cmVhbSA9IHBTdHJlYW07DQorICAgIGlmIChwU3RyZWFtLT5Jc01lbW9yeUJhc2VkKCkgJiYNCisgICAgICAgICAgICAoIXBTdHJlYW0tPkdldERpY3QoKS0+S2V5RXhpc3QoRlhfQlNUUkMoIkZpbHRlciIpKSB8fCBiUmF3QWNjZXNzKSkgew0KKyAgICAgICAgbV9kd1NpemUgPSBwU3RyZWFtLT5tX2R3U2l6ZTsNCisgICAgICAgIG1fcERhdGEgPSAoRlhfTFBCWVRFKXBTdHJlYW0tPm1fcERhdGFCdWY7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfTFBCWVRFIHBTcmNEYXRhOw0KKyAgICBGWF9EV09SRCBkd1NyY1NpemUgPSBwU3RyZWFtLT5tX2R3U2l6ZTsNCisgICAgaWYgKGR3U3JjU2l6ZSA9PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKCFwU3RyZWFtLT5Jc01lbW9yeUJhc2VkKCkpIHsNCisgICAgICAgIHBTcmNEYXRhID0gbV9wU3JjRGF0YSA9IEZYX0FsbG9jKEZYX0JZVEUsIGR3U3JjU2l6ZSk7DQorICAgICAgICBpZiAoIXBTcmNEYXRhIHx8ICFwU3RyZWFtLT5SZWFkUmF3RGF0YSgwLCBwU3JjRGF0YSwgZHdTcmNTaXplKSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBTcmNEYXRhID0gcFN0cmVhbS0+bV9wRGF0YUJ1ZjsNCisgICAgfQ0KKyAgICBGWF9MUEJZVEUgcERlY3J5cHRlZERhdGE7DQorICAgIEZYX0RXT1JEIGR3RGVjcnlwdGVkU2l6ZTsNCisgICAgaWYgKHBTdHJlYW0tPm1fcENyeXB0b0hhbmRsZXIpIHsNCisgICAgICAgIENGWF9CaW5hcnlCdWYgZGVzdF9idWY7DQorICAgICAgICBkZXN0X2J1Zi5Fc3RpbWF0ZVNpemUocFN0cmVhbS0+bV9wQ3J5cHRvSGFuZGxlci0+RGVjcnlwdEdldFNpemUoZHdTcmNTaXplKSk7DQorICAgICAgICBGWF9MUFZPSUQgY29udGV4dCA9IHBTdHJlYW0tPm1fcENyeXB0b0hhbmRsZXItPkRlY3J5cHRTdGFydChwU3RyZWFtLT5HZXRPYmpOdW0oKSwgcFN0cmVhbS0+bV9HZW5OdW0pOw0KKyAgICAgICAgcFN0cmVhbS0+bV9wQ3J5cHRvSGFuZGxlci0+RGVjcnlwdFN0cmVhbShjb250ZXh0LCBwU3JjRGF0YSwgZHdTcmNTaXplLCBkZXN0X2J1Zik7DQorICAgICAgICBwU3RyZWFtLT5tX3BDcnlwdG9IYW5kbGVyLT5EZWNyeXB0RmluaXNoKGNvbnRleHQsIGRlc3RfYnVmKTsNCisgICAgICAgIHBEZWNyeXB0ZWREYXRhID0gZGVzdF9idWYuR2V0QnVmZmVyKCk7DQorICAgICAgICBkd0RlY3J5cHRlZFNpemUgPSBkZXN0X2J1Zi5HZXRTaXplKCk7DQorICAgICAgICBkZXN0X2J1Zi5EZXRhY2hCdWZmZXIoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBEZWNyeXB0ZWREYXRhID0gcFNyY0RhdGE7DQorICAgICAgICBkd0RlY3J5cHRlZFNpemUgPSBkd1NyY1NpemU7DQorICAgIH0NCisgICAgaWYgKCFwU3RyZWFtLT5HZXREaWN0KCktPktleUV4aXN0KEZYX0JTVFJDKCJGaWx0ZXIiKSkgfHwgYlJhd0FjY2Vzcykgew0KKyAgICAgICAgbV9wRGF0YSA9IHBEZWNyeXB0ZWREYXRhOw0KKyAgICAgICAgbV9kd1NpemUgPSBkd0RlY3J5cHRlZFNpemU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWF9CT09MIGJSZXQgPSBQREZfRGF0YURlY29kZShwRGVjcnlwdGVkRGF0YSwgZHdEZWNyeXB0ZWRTaXplLCBtX3BTdHJlYW0tPkdldERpY3QoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcERhdGEsIG1fZHdTaXplLCBtX0ltYWdlRGVjb2RlciwgbV9wSW1hZ2VQYXJhbSwgZXN0aW1hdGVkX3NpemUsIGJJbWFnZUFjYyk7DQorICAgICAgICBpZiAoIWJSZXQpIHsNCisgICAgICAgICAgICBtX3BEYXRhID0gcERlY3J5cHRlZERhdGE7DQorICAgICAgICAgICAgbV9kd1NpemUgPSBkd0RlY3J5cHRlZFNpemU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBTcmNEYXRhICE9IHBTdHJlYW0tPm1fcERhdGFCdWYgJiYgcFNyY0RhdGEgIT0gbV9wRGF0YSkgew0KKyAgICAgICAgRlhfRnJlZShwU3JjRGF0YSk7DQorICAgIH0NCisgICAgaWYgKHBEZWNyeXB0ZWREYXRhICE9IHBTcmNEYXRhICYmIHBEZWNyeXB0ZWREYXRhICE9IG1fcERhdGEpIHsNCisgICAgICAgIEZYX0ZyZWUocERlY3J5cHRlZERhdGEpOw0KKyAgICB9DQorICAgIG1fcFNyY0RhdGEgPSBOVUxMOw0KKyAgICBtX2JOZXdCdWYgPSBtX3BEYXRhICE9IHBTdHJlYW0tPm1fcERhdGFCdWY7DQorfQ0KK0NQREZfU3RyZWFtQWNjOjp+Q1BERl9TdHJlYW1BY2MoKQ0KK3sNCisgICAgaWYgKG1fYk5ld0J1ZiAmJiBtX3BEYXRhKSB7DQorICAgICAgICBGWF9GcmVlKG1fcERhdGEpOw0KKyAgICB9DQorICAgIGlmIChtX3BTcmNEYXRhKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFNyY0RhdGEpOw0KKyAgICB9DQorfQ0KK0ZYX0xQQ0JZVEUgQ1BERl9TdHJlYW1BY2M6OkdldERhdGEoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fYk5ld0J1Zikgew0KKyAgICAgICAgcmV0dXJuIG1fcERhdGE7DQorICAgIH0NCisgICAgaWYgKCFtX3BTdHJlYW0pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BTdHJlYW0tPm1fcERhdGFCdWY7DQorfQ0KK0ZYX0RXT1JEIENQREZfU3RyZWFtQWNjOjpHZXRTaXplKCkgY29uc3QNCit7DQorICAgIGlmIChtX2JOZXdCdWYpIHsNCisgICAgICAgIHJldHVybiBtX2R3U2l6ZTsNCisgICAgfQ0KKyAgICBpZiAoIW1fcFN0cmVhbSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcFN0cmVhbS0+bV9kd1NpemU7DQorfQ0KK0ZYX0xQQllURSBDUERGX1N0cmVhbUFjYzo6RGV0YWNoRGF0YSgpDQorew0KKyAgICBpZiAobV9iTmV3QnVmKSB7DQorICAgICAgICBGWF9MUEJZVEUgcCA9IG1fcERhdGE7DQorICAgICAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgICAgIG1fZHdTaXplID0gMDsNCisgICAgICAgIHJldHVybiBwOw0KKyAgICB9DQorICAgIEZYX0xQQllURSBwID0gRlhfQWxsb2MoRlhfQllURSwgbV9kd1NpemUpOw0KKyAgICBpZiAocCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1jcHkzMihwLCBtX3BEYXRhLCBtX2R3U2l6ZSk7DQorICAgIHJldHVybiBwOw0KK30NCit2b2lkIENQREZfUmVmZXJlbmNlOjpTZXRSZWYoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBEb2MsIEZYX0RXT1JEIG9iam51bSkNCit7DQorICAgIG1fcE9iakxpc3QgPSBwRG9jOw0KKyAgICBtX1JlZk9iak51bSA9IG9iam51bTsNCit9DQorQ1BERl9JbmRpcmVjdE9iamVjdHM6OkNQREZfSW5kaXJlY3RPYmplY3RzKElQREZfRG9jUGFyc2VyKiBwUGFyc2VyKQ0KK3sNCisgICAgbV9wUGFyc2VyID0gcFBhcnNlcjsNCisgICAgbV9JbmRpcmVjdE9ianMuSW5pdEhhc2hUYWJsZSgxMDEzKTsNCisgICAgaWYgKHBQYXJzZXIpIHsNCisgICAgICAgIG1fTGFzdE9iak51bSA9IG1fcFBhcnNlci0+R2V0TGFzdE9iak51bSgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9MYXN0T2JqTnVtID0gMDsNCisgICAgfQ0KK30NCitDUERGX0luZGlyZWN0T2JqZWN0czo6fkNQREZfSW5kaXJlY3RPYmplY3RzKCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fSW5kaXJlY3RPYmpzLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgRlhfTFBWT0lEIGtleSwgdmFsdWU7DQorICAgICAgICBtX0luZGlyZWN0T2Jqcy5HZXROZXh0QXNzb2MocG9zLCBrZXksIHZhbHVlKTsNCisgICAgICAgICgoQ1BERl9PYmplY3QqKXZhbHVlKS0+RGVzdHJveSgpOw0KKyAgICB9DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX0luZGlyZWN0T2JqZWN0czo6R2V0SW5kaXJlY3RPYmplY3QoRlhfRFdPUkQgb2JqbnVtLCBzdHJ1Y3QgUEFSU0VfQ09OVEVYVCogcENvbnRleHQpDQorew0KKyAgICBpZiAob2JqbnVtID09IDApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0xQVk9JRCB2YWx1ZTsNCisgICAgew0KKyAgICAgICAgaWYgKG1fSW5kaXJlY3RPYmpzLkxvb2t1cCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKW9iam51bSwgdmFsdWUpKSB7DQorICAgICAgICAgICAgaWYgKCgoQ1BERl9PYmplY3QqKXZhbHVlKS0+R2V0T2JqTnVtKCkgPT0gLTEpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiAoQ1BERl9PYmplY3QqKXZhbHVlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gTlVMTDsNCisgICAgaWYgKG1fcFBhcnNlcikgew0KKyAgICAgICAgcE9iaiA9IG1fcFBhcnNlci0+UGFyc2VJbmRpcmVjdE9iamVjdCh0aGlzLCBvYmpudW0sIHBDb250ZXh0KTsNCisgICAgfQ0KKyAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwT2JqLT5tX09iak51bSA9IG9iam51bTsNCisgICAgaWYgKG1fTGFzdE9iak51bSA8IG9iam51bSkgew0KKyAgICAgICAgbV9MYXN0T2JqTnVtID0gb2JqbnVtOw0KKyAgICB9DQorICAgIGlmIChtX0luZGlyZWN0T2Jqcy5Mb29rdXAoKEZYX0xQVk9JRCkoRlhfVUlOVFBUUilvYmpudW0sIHZhbHVlKSkgew0KKyAgICAgICAgaWYgKHZhbHVlKSB7DQorICAgICAgICAgICAgKChDUERGX09iamVjdCAqKXZhbHVlKS0+RGVzdHJveSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fSW5kaXJlY3RPYmpzLlNldEF0KChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpb2JqbnVtLCBwT2JqKTsNCisgICAgcmV0dXJuIHBPYmo7DQorfQ0KK2ludCBDUERGX0luZGlyZWN0T2JqZWN0czo6R2V0SW5kaXJlY3RUeXBlKEZYX0RXT1JEIG9iam51bSkNCit7DQorICAgIEZYX0xQVk9JRCB2YWx1ZTsNCisgICAgaWYgKG1fSW5kaXJlY3RPYmpzLkxvb2t1cCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKW9iam51bSwgdmFsdWUpKSB7DQorICAgICAgICByZXR1cm4gKChDUERGX09iamVjdCopdmFsdWUpLT5HZXRUeXBlKCk7DQorICAgIH0NCisgICAgaWYgKG1fcFBhcnNlcikgew0KKyAgICAgICAgUEFSU0VfQ09OVEVYVCBjb250ZXh0Ow0KKyAgICAgICAgRlhTWVNfbWVtc2V0MzIoJmNvbnRleHQsIDAsIHNpemVvZihQQVJTRV9DT05URVhUKSk7DQorICAgICAgICBjb250ZXh0Lm1fRmxhZ3MgPSBQREZQQVJTRV9UWVBFT05MWTsNCisgICAgICAgIHJldHVybiAoaW50KShGWF9VSU5UUFRSKW1fcFBhcnNlci0+UGFyc2VJbmRpcmVjdE9iamVjdCh0aGlzLCBvYmpudW0sICZjb250ZXh0KTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorRlhfRFdPUkQgQ1BERl9JbmRpcmVjdE9iamVjdHM6OkFkZEluZGlyZWN0T2JqZWN0KENQREZfT2JqZWN0KiBwT2JqKQ0KK3sNCisgICAgaWYgKHBPYmotPm1fT2JqTnVtKSB7DQorICAgICAgICByZXR1cm4gcE9iai0+bV9PYmpOdW07DQorICAgIH0NCisgICAgbV9MYXN0T2JqTnVtICsrOw0KKyAgICBtX0luZGlyZWN0T2Jqcy5TZXRBdCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKW1fTGFzdE9iak51bSwgcE9iaik7DQorICAgIHBPYmotPm1fT2JqTnVtID0gbV9MYXN0T2JqTnVtOw0KKyAgICByZXR1cm4gbV9MYXN0T2JqTnVtOw0KK30NCit2b2lkIENQREZfSW5kaXJlY3RPYmplY3RzOjpSZWxlYXNlSW5kaXJlY3RPYmplY3QoRlhfRFdPUkQgb2JqbnVtKQ0KK3sNCisgICAgRlhfTFBWT0lEIHZhbHVlOw0KKyAgICBpZiAoIW1fSW5kaXJlY3RPYmpzLkxvb2t1cCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKW9iam51bSwgdmFsdWUpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKCgoQ1BERl9PYmplY3QqKXZhbHVlKS0+R2V0T2JqTnVtKCkgPT0gLTEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICAoKENQREZfT2JqZWN0Kil2YWx1ZSktPkRlc3Ryb3koKTsNCisgICAgbV9JbmRpcmVjdE9ianMuUmVtb3ZlS2V5KChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpb2JqbnVtKTsNCit9DQordm9pZCBDUERGX0luZGlyZWN0T2JqZWN0czo6SW5zZXJ0SW5kaXJlY3RPYmplY3QoRlhfRFdPUkQgb2JqbnVtLCBDUERGX09iamVjdCogcE9iaikNCit7DQorICAgIGlmIChvYmpudW0gPT0gMCB8fCBwT2JqID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9MUFZPSUQgdmFsdWU7DQorICAgIGlmIChtX0luZGlyZWN0T2Jqcy5Mb29rdXAoKEZYX0xQVk9JRCkoRlhfVUlOVFBUUilvYmpudW0sIHZhbHVlKSkgew0KKyAgICAgICAgKChDUERGX09iamVjdCopdmFsdWUpLT5EZXN0cm95KCk7DQorICAgIH0NCisgICAgcE9iai0+bV9PYmpOdW0gPSBvYmpudW07DQorICAgIG1fSW5kaXJlY3RPYmpzLlNldEF0KChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpb2JqbnVtLCBwT2JqKTsNCisgICAgaWYgKG1fTGFzdE9iak51bSA8IG9iam51bSkgew0KKyAgICAgICAgbV9MYXN0T2JqTnVtID0gb2JqbnVtOw0KKyAgICB9DQorfQ0KK0ZYX0RXT1JEIENQREZfSW5kaXJlY3RPYmplY3RzOjpHZXRMYXN0T2JqTnVtKCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX0xhc3RPYmpOdW07DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfcGFyc2VyLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfcGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2U1ODdhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhcnNlci9mcGRmX3BhcnNlcl9wYXJzZXIuY3BwCkBAIC0wLDAgKzEsNDM3OCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhcnNlci5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9tb2R1bGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZS5oIg0KKyNpbmNsdWRlICIuLi9mcGRmX3BhZ2UvcGFnZWludC5oIg0KKyNpbmNsdWRlIDxsaW1pdHMuaD4NCisjZGVmaW5lIF9QQVJTRVJfT0JKRUNUX0xFVkxFXwkJNjQNCitleHRlcm4gY29uc3QgRlhfTFBDU1RSIF9QREZfQ2hhclR5cGU7DQorRlhfQk9PTCBJc1NpZ25hdHVyZURpY3QoY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCkNCit7DQorICAgIENQREZfT2JqZWN0KiBwVHlwZSA9IHBEaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIlR5cGUiKSk7DQorICAgIGlmICghcFR5cGUpIHsNCisgICAgICAgIHBUeXBlID0gcERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiRlQiKSk7DQorICAgICAgICBpZiAoIXBUeXBlKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwVHlwZS0+R2V0U3RyaW5nKCkgPT0gRlhfQlNUUkMoIlNpZyIpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK3N0YXRpYyBGWF9JTlQzMiBfQ29tcGFyZURXb3JkKGNvbnN0IHZvaWQqIHAxLCBjb25zdCB2b2lkKiBwMikNCit7DQorICAgIHJldHVybiAoKihGWF9EV09SRCopcDEpIC0gKCooRlhfRFdPUkQqKXAyKTsNCit9DQorc3RhdGljIGludCBfQ29tcGFyZUZpbGVTaXplKGNvbnN0IHZvaWQqIHAxLCBjb25zdCB2b2lkKiBwMikNCit7DQorICAgIEZYX0ZJTEVTSVpFIHJldCA9ICgqKEZYX0ZJTEVTSVpFKilwMSkgLSAoKihGWF9GSUxFU0laRSopcDIpOw0KKyAgICBpZiAocmV0ID4gMCkgew0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgaWYgKHJldCA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorQ1BERl9QYXJzZXI6OkNQREZfUGFyc2VyKCkNCit7DQorICAgIG1fcERvY3VtZW50ID0gTlVMTDsNCisgICAgbV9wVHJhaWxlciA9IE5VTEw7DQorICAgIG1fcEVuY3J5cHREaWN0ID0gTlVMTDsNCisgICAgbV9wU2VjdXJpdHlIYW5kbGVyID0gTlVMTDsNCisgICAgbV9wTGluZWFyaXplZCA9IE5VTEw7DQorICAgIG1fZHdGaXJzdFBhZ2VObyA9IDA7DQorICAgIG1fZHdYcmVmU3RhcnRPYmpOdW0gPSAwOw0KKyAgICBtX2JPd25GaWxlUmVhZCA9IFRSVUU7DQorICAgIG1fYkZvcmNlVXNlU2VjdXJpdHlIYW5kbGVyID0gRkFMU0U7DQorfQ0KK0NQREZfUGFyc2VyOjp+Q1BERl9QYXJzZXIoKQ0KK3sNCisgICAgQ2xvc2VQYXJzZXIoRkFMU0UpOw0KK30NCitGWF9EV09SRCBDUERGX1BhcnNlcjo6R2V0TGFzdE9iak51bSgpDQorew0KKyAgICBGWF9EV09SRCBkd1NpemUgPSBtX0Nyb3NzUmVmLkdldFNpemUoKTsNCisgICAgcmV0dXJuIGR3U2l6ZSA/IGR3U2l6ZSAtIDEgOiAwOw0KK30NCit2b2lkIENQREZfUGFyc2VyOjpTZXRFbmNyeXB0RGljdGlvbmFyeShDUERGX0RpY3Rpb25hcnkqIHBEaWN0KQ0KK3sNCisgICAgbV9wRW5jcnlwdERpY3QgPSBwRGljdDsNCit9DQordm9pZCBDUERGX1BhcnNlcjo6Q2xvc2VQYXJzZXIoRlhfQk9PTCBiUmVQYXJzZSkNCit7DQorICAgIG1fYlZlcnNpb25VcGRhdGVkID0gRkFMU0U7DQorICAgIGlmIChtX3BEb2N1bWVudCAmJiAhYlJlUGFyc2UpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BEb2N1bWVudDsNCisgICAgICAgIG1fcERvY3VtZW50ID0gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAobV9wVHJhaWxlcikgew0KKyAgICAgICAgbV9wVHJhaWxlci0+UmVsZWFzZSgpOw0KKyAgICAgICAgbV9wVHJhaWxlciA9IE5VTEw7DQorICAgIH0NCisgICAgUmVsZWFzZUVuY3J5cHRIYW5kbGVyKCk7DQorICAgIFNldEVuY3J5cHREaWN0aW9uYXJ5KE5VTEwpOw0KKyAgICBpZiAobV9iT3duRmlsZVJlYWQgJiYgbV9TeW50YXgubV9wRmlsZUFjY2VzcyAhPSBOVUxMKSB7DQorICAgICAgICBtX1N5bnRheC5tX3BGaWxlQWNjZXNzLT5SZWxlYXNlKCk7DQorICAgICAgICBtX1N5bnRheC5tX3BGaWxlQWNjZXNzID0gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX09iamVjdFN0cmVhbU1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIEZYX0xQVk9JRCBvYmpudW07DQorICAgICAgICBDUERGX1N0cmVhbUFjYyogcFN0cmVhbTsNCisgICAgICAgIG1fT2JqZWN0U3RyZWFtTWFwLkdldE5leHRBc3NvYyhwb3MsIG9iam51bSwgKHZvaWQqJilwU3RyZWFtKTsNCisgICAgICAgIGRlbGV0ZSBwU3RyZWFtOw0KKyAgICB9DQorICAgIG1fT2JqZWN0U3RyZWFtTWFwLlJlbW92ZUFsbCgpOw0KKyAgICBtX1NvcnRlZE9mZnNldC5SZW1vdmVBbGwoKTsNCisgICAgbV9Dcm9zc1JlZi5SZW1vdmVBbGwoKTsNCisgICAgbV9WNVR5cGUuUmVtb3ZlQWxsKCk7DQorICAgIG1fT2JqVmVyc2lvbi5SZW1vdmVBbGwoKTsNCisgICAgRlhfSU5UMzIgaUxlbiA9IG1fVHJhaWxlcnMuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgaUxlbjsgKytpKSB7DQorICAgICAgICBtX1RyYWlsZXJzLkdldEF0KGkpLT5SZWxlYXNlKCk7DQorICAgIH0NCisgICAgbV9UcmFpbGVycy5SZW1vdmVBbGwoKTsNCisgICAgaWYgKG1fcExpbmVhcml6ZWQpIHsNCisgICAgICAgIG1fcExpbmVhcml6ZWQtPlJlbGVhc2UoKTsNCisgICAgICAgIG1fcExpbmVhcml6ZWQgPSBOVUxMOw0KKyAgICB9DQorfQ0KK3N0YXRpYyBGWF9JTlQzMiBHZXRIZWFkZXJPZmZzZXQoSUZYX0ZpbGVSZWFkKiBwRmlsZSkNCit7DQorICAgIEZYX0RXT1JEIHRhZyA9IEZYRFdPUkRfRlJPTV9MU0JGSVJTVCgweDQ2NDQ1MDI1KTsNCisgICAgRlhfQllURSBidWZbNF07DQorICAgIEZYX0lOVDMyIG9mZnNldCA9IDA7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpZiAoIXBGaWxlLT5SZWFkQmxvY2soYnVmLCBvZmZzZXQsIDQpKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCooRlhfRFdPUkQqKWJ1ZiA9PSB0YWcpIHsNCisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgb2Zmc2V0ICsrOw0KKyAgICAgICAgaWYgKG9mZnNldCA+IDEwMjQpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIC0xOw0KK30NCitGWF9EV09SRCBDUERGX1BhcnNlcjo6U3RhcnRQYXJzZShGWF9MUENTVFIgZmlsZW5hbWUsIEZYX0JPT0wgYlJlUGFyc2UpDQorew0KKyAgICBJRlhfRmlsZVJlYWQqIHBGaWxlQWNjZXNzID0gRlhfQ3JlYXRlRmlsZVJlYWQoZmlsZW5hbWUpOw0KKyAgICBpZiAoIXBGaWxlQWNjZXNzKSB7DQorICAgICAgICByZXR1cm4gUERGUEFSU0VfRVJST1JfRklMRTsNCisgICAgfQ0KKyAgICByZXR1cm4gU3RhcnRQYXJzZShwRmlsZUFjY2VzcywgYlJlUGFyc2UpOw0KK30NCitGWF9EV09SRCBDUERGX1BhcnNlcjo6U3RhcnRQYXJzZShGWF9MUENXU1RSIGZpbGVuYW1lLCBGWF9CT09MIGJSZVBhcnNlKQ0KK3sNCisgICAgSUZYX0ZpbGVSZWFkKiBwRmlsZUFjY2VzcyA9IEZYX0NyZWF0ZUZpbGVSZWFkKGZpbGVuYW1lKTsNCisgICAgaWYgKCFwRmlsZUFjY2Vzcykgew0KKyAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZJTEU7DQorICAgIH0NCisgICAgcmV0dXJuIFN0YXJ0UGFyc2UocEZpbGVBY2Nlc3MsIGJSZVBhcnNlKTsNCit9DQorQ1BERl9TZWN1cml0eUhhbmRsZXIqIEZQREZfQ3JlYXRlU3RhbmRhcmRTZWN1cml0eUhhbmRsZXIoKTsNCitDUERGX1NlY3VyaXR5SGFuZGxlciogRlBERl9DcmVhdGVQdWJLZXlIYW5kbGVyKHZvaWQqKTsNCitGWF9EV09SRCBDUERGX1BhcnNlcjo6U3RhcnRQYXJzZShJRlhfRmlsZVJlYWQqIHBGaWxlQWNjZXNzLCBGWF9CT09MIGJSZVBhcnNlLCBGWF9CT09MIGJPd25GaWxlUmVhZCkNCit7DQorICAgIENsb3NlUGFyc2VyKGJSZVBhcnNlKTsNCisgICAgbV9iWFJlZlN0cmVhbSA9IEZBTFNFOw0KKyAgICBtX0xhc3RYUmVmT2Zmc2V0ID0gMDsNCisgICAgbV9iT3duRmlsZVJlYWQgPSBiT3duRmlsZVJlYWQ7DQorICAgIEZYX0lOVDMyIG9mZnNldCA9IEdldEhlYWRlck9mZnNldChwRmlsZUFjY2Vzcyk7DQorICAgIGlmIChvZmZzZXQgPT0gLTEpIHsNCisgICAgICAgIGlmIChiT3duRmlsZVJlYWQgJiYgcEZpbGVBY2Nlc3MpIHsNCisgICAgICAgICAgICBwRmlsZUFjY2Vzcy0+UmVsZWFzZSgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsNCisgICAgfQ0KKyAgICBtX1N5bnRheC5Jbml0UGFyc2VyKHBGaWxlQWNjZXNzLCBvZmZzZXQpOw0KKyAgICBGWF9CWVRFIGNoOw0KKyAgICBtX1N5bnRheC5HZXRDaGFyQXQoNSwgY2gpOw0KKyAgICBtX0ZpbGVWZXJzaW9uID0gKGNoIC0gJzAnKSAqIDEwOw0KKyAgICBtX1N5bnRheC5HZXRDaGFyQXQoNywgY2gpOw0KKyAgICBtX0ZpbGVWZXJzaW9uICs9IGNoIC0gJzAnOw0KKyAgICBtX1N5bnRheC5SZXN0b3JlUG9zKG1fU3ludGF4Lm1fRmlsZUxlbiAtIG1fU3ludGF4Lm1fSGVhZGVyT2Zmc2V0IC0gOSk7DQorICAgIGlmICghYlJlUGFyc2UpIHsNCisgICAgICAgIG1fcERvY3VtZW50ID0gRlhfTkVXIENQREZfRG9jdW1lbnQodGhpcyk7DQorICAgIH0NCisgICAgRlhfQk9PTCBiWFJlZlJlYnVpbHQgPSBGQUxTRTsNCisgICAgaWYgKG1fU3ludGF4LlNlYXJjaFdvcmQoRlhfQlNUUkMoInN0YXJ0eHJlZiIpLCBUUlVFLCBGQUxTRSwgNDA5NikpIHsNCisgICAgICAgIEZYX0ZJTEVTSVpFIHN0YXJ0eHJlZl9vZmZzZXQgPSBtX1N5bnRheC5TYXZlUG9zKCk7DQorICAgICAgICBGWF9MUFZPSUQgcFJlc3VsdCA9IEZYU1lTX2JzZWFyY2goJnN0YXJ0eHJlZl9vZmZzZXQsIG1fU29ydGVkT2Zmc2V0LkdldERhdGEoKSwgbV9Tb3J0ZWRPZmZzZXQuR2V0U2l6ZSgpLCBzaXplb2YoRlhfRklMRVNJWkUpLCBfQ29tcGFyZUZpbGVTaXplKTsNCisgICAgICAgIGlmIChwUmVzdWx0ID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX1NvcnRlZE9mZnNldC5BZGQoc3RhcnR4cmVmX29mZnNldCk7DQorICAgICAgICB9DQorICAgICAgICBtX1N5bnRheC5HZXRLZXl3b3JkKCk7DQorICAgICAgICBGWF9CT09MIGJOdW1iZXI7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyB4cmVmcG9zX3N0ciA9IG1fU3ludGF4LkdldE5leHRXb3JkKGJOdW1iZXIpOw0KKyAgICAgICAgaWYgKCFiTnVtYmVyKSB7DQorICAgICAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsNCisgICAgICAgIH0NCisgICAgICAgIG1fTGFzdFhSZWZPZmZzZXQgPSAoRlhfRklMRVNJWkUpRlhTWVNfYXRvaTY0KHhyZWZwb3Nfc3RyKTsNCisgICAgICAgIGlmICghTG9hZEFsbENyb3NzUmVmVjQobV9MYXN0WFJlZk9mZnNldCkgJiYgIUxvYWRBbGxDcm9zc1JlZlY1KG1fTGFzdFhSZWZPZmZzZXQpKSB7DQorICAgICAgICAgICAgaWYgKCFSZWJ1aWxkQ3Jvc3NSZWYoKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gUERGUEFSU0VfRVJST1JfRk9STUFUOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBiWFJlZlJlYnVpbHQgPSBUUlVFOw0KKyAgICAgICAgICAgIG1fTGFzdFhSZWZPZmZzZXQgPSAwOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKCFSZWJ1aWxkQ3Jvc3NSZWYoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBQREZQQVJTRV9FUlJPUl9GT1JNQVQ7DQorICAgICAgICB9DQorICAgICAgICBiWFJlZlJlYnVpbHQgPSBUUlVFOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3UmV0ID0gU2V0RW5jcnlwdEhhbmRsZXIoKTsNCisgICAgaWYgKGR3UmV0ICE9IFBERlBBUlNFX0VSUk9SX1NVQ0NFU1MpIHsNCisgICAgICAgIHJldHVybiBkd1JldDsNCisgICAgfQ0KKyAgICBtX3BEb2N1bWVudC0+TG9hZERvYygpOw0KKyAgICBpZiAobV9wRG9jdW1lbnQtPkdldFJvb3QoKSA9PSBOVUxMIHx8IG1fcERvY3VtZW50LT5HZXRQYWdlQ291bnQoKSA9PSAwKSB7DQorICAgICAgICBpZiAoYlhSZWZSZWJ1aWx0KSB7DQorICAgICAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsNCisgICAgICAgIH0NCisgICAgICAgIFJlbGVhc2VFbmNyeXB0SGFuZGxlcigpOw0KKyAgICAgICAgaWYgKCFSZWJ1aWxkQ3Jvc3NSZWYoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBQREZQQVJTRV9FUlJPUl9GT1JNQVQ7DQorICAgICAgICB9DQorICAgICAgICBkd1JldCA9IFNldEVuY3J5cHRIYW5kbGVyKCk7DQorICAgICAgICBpZiAoZHdSZXQgIT0gUERGUEFSU0VfRVJST1JfU1VDQ0VTUykgew0KKyAgICAgICAgICAgIHJldHVybiBkd1JldDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcERvY3VtZW50LT5Mb2FkRG9jKCk7DQorICAgICAgICBpZiAobV9wRG9jdW1lbnQtPkdldFJvb3QoKSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWFNZU19xc29ydChtX1NvcnRlZE9mZnNldC5HZXREYXRhKCksIG1fU29ydGVkT2Zmc2V0LkdldFNpemUoKSwgc2l6ZW9mKEZYX0ZJTEVTSVpFKSwgX0NvbXBhcmVGaWxlU2l6ZSk7DQorICAgIEZYX0RXT1JEIFJvb3RPYmpOdW0gPSBHZXRSb290T2JqTnVtKCk7DQorICAgIGlmIChSb290T2JqTnVtID09IDApIHsNCisgICAgICAgIFJlbGVhc2VFbmNyeXB0SGFuZGxlcigpOw0KKyAgICAgICAgUmVidWlsZENyb3NzUmVmKCk7DQorICAgICAgICBSb290T2JqTnVtID0gR2V0Um9vdE9iak51bSgpOw0KKyAgICAgICAgaWYgKFJvb3RPYmpOdW0gPT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBQREZQQVJTRV9FUlJPUl9GT1JNQVQ7DQorICAgICAgICB9DQorICAgICAgICBkd1JldCA9IFNldEVuY3J5cHRIYW5kbGVyKCk7DQorICAgICAgICBpZiAoZHdSZXQgIT0gUERGUEFSU0VfRVJST1JfU1VDQ0VTUykgew0KKyAgICAgICAgICAgIHJldHVybiBkd1JldDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wU2VjdXJpdHlIYW5kbGVyICYmICFtX3BTZWN1cml0eUhhbmRsZXItPklzTWV0YWRhdGFFbmNyeXB0ZWQoKSkgew0KKyAgICAgICAgQ1BERl9SZWZlcmVuY2UqIHBNZXRhZGF0YSA9IChDUERGX1JlZmVyZW5jZSopbV9wRG9jdW1lbnQtPkdldFJvb3QoKS0+R2V0RWxlbWVudChGWF9CU1RSQygiTWV0YWRhdGEiKSk7DQorICAgICAgICBpZiAocE1ldGFkYXRhICYmIHBNZXRhZGF0YS0+R2V0VHlwZSgpID09IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgICAgICBtX1N5bnRheC5tX01ldGFkYXRhT2JqbnVtID0gcE1ldGFkYXRhLT5HZXRSZWZPYmpOdW0oKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gUERGUEFSU0VfRVJST1JfU1VDQ0VTUzsNCit9DQorRlhfRFdPUkQgQ1BERl9QYXJzZXI6OlNldEVuY3J5cHRIYW5kbGVyKCkNCit7DQorICAgIFJlbGVhc2VFbmNyeXB0SGFuZGxlcigpOw0KKyAgICBTZXRFbmNyeXB0RGljdGlvbmFyeShOVUxMKTsNCisgICAgaWYgKG1fcFRyYWlsZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcEVuY3J5cHRPYmogPSBtX3BUcmFpbGVyLT5HZXRFbGVtZW50KEZYX0JTVFJDKCJFbmNyeXB0IikpOw0KKyAgICBpZiAocEVuY3J5cHRPYmopIHsNCisgICAgICAgIGlmIChwRW5jcnlwdE9iai0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICAgICAgU2V0RW5jcnlwdERpY3Rpb25hcnkoKENQREZfRGljdGlvbmFyeSopcEVuY3J5cHRPYmopOw0KKyAgICAgICAgfSBlbHNlIGlmIChwRW5jcnlwdE9iai0+R2V0VHlwZSgpID09IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgICAgICBwRW5jcnlwdE9iaiA9IG1fcERvY3VtZW50LT5HZXRJbmRpcmVjdE9iamVjdCgoKENQREZfUmVmZXJlbmNlKilwRW5jcnlwdE9iaiktPkdldFJlZk9iak51bSgpKTsNCisgICAgICAgICAgICBpZiAocEVuY3J5cHRPYmopIHsNCisgICAgICAgICAgICAgICAgU2V0RW5jcnlwdERpY3Rpb25hcnkocEVuY3J5cHRPYmotPkdldERpY3QoKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX2JGb3JjZVVzZVNlY3VyaXR5SGFuZGxlcikgew0KKyAgICAgICAgRlhfRFdPUkQgZXJyID0gUERGUEFSU0VfRVJST1JfSEFORExFUjsNCisgICAgICAgIGlmIChtX3BTZWN1cml0eUhhbmRsZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBQREZQQVJTRV9FUlJPUl9IQU5ETEVSOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFtX3BTZWN1cml0eUhhbmRsZXItPk9uSW5pdCh0aGlzLCBtX3BFbmNyeXB0RGljdCkpIHsNCisgICAgICAgICAgICByZXR1cm4gZXJyOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9DcnlwdG9IYW5kbGVyKiBwQ3J5cHRvSGFuZGxlciA9IG1fcFNlY3VyaXR5SGFuZGxlci0+Q3JlYXRlQ3J5cHRvSGFuZGxlcigpOw0KKyAgICAgICAgaWYgKCFwQ3J5cHRvSGFuZGxlci0+SW5pdChtX3BFbmNyeXB0RGljdCwgbV9wU2VjdXJpdHlIYW5kbGVyKSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwQ3J5cHRvSGFuZGxlcjsNCisgICAgICAgICAgICBwQ3J5cHRvSGFuZGxlciA9IE5VTEw7DQorICAgICAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0hBTkRMRVI7DQorICAgICAgICB9DQorICAgICAgICBtX1N5bnRheC5TZXRFbmNyeXB0KHBDcnlwdG9IYW5kbGVyKTsNCisgICAgfSBlbHNlIGlmIChtX3BFbmNyeXB0RGljdCkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgZmlsdGVyID0gbV9wRW5jcnlwdERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiRmlsdGVyIikpOw0KKyAgICAgICAgQ1BERl9TZWN1cml0eUhhbmRsZXIqIHBTZWN1cml0eUhhbmRsZXIgPSBOVUxMOw0KKyAgICAgICAgRlhfRFdPUkQgZXJyID0gUERGUEFSU0VfRVJST1JfSEFORExFUjsNCisgICAgICAgIGlmIChmaWx0ZXIgPT0gRlhfQlNUUkMoIlN0YW5kYXJkIikpIHsNCisgICAgICAgICAgICBwU2VjdXJpdHlIYW5kbGVyID0gRlBERl9DcmVhdGVTdGFuZGFyZFNlY3VyaXR5SGFuZGxlcigpOw0KKyAgICAgICAgICAgIGVyciA9IFBERlBBUlNFX0VSUk9SX1BBU1NXT1JEOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBTZWN1cml0eUhhbmRsZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBQREZQQVJTRV9FUlJPUl9IQU5ETEVSOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFwU2VjdXJpdHlIYW5kbGVyLT5PbkluaXQodGhpcywgbV9wRW5jcnlwdERpY3QpKSB7DQorICAgICAgICAgICAgZGVsZXRlIHBTZWN1cml0eUhhbmRsZXI7DQorICAgICAgICAgICAgcFNlY3VyaXR5SGFuZGxlciA9IE5VTEw7DQorICAgICAgICAgICAgcmV0dXJuIGVycjsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFNlY3VyaXR5SGFuZGxlciA9IHBTZWN1cml0eUhhbmRsZXI7DQorICAgICAgICBDUERGX0NyeXB0b0hhbmRsZXIqIHBDcnlwdG9IYW5kbGVyID0gcFNlY3VyaXR5SGFuZGxlci0+Q3JlYXRlQ3J5cHRvSGFuZGxlcigpOw0KKyAgICAgICAgaWYgKCFwQ3J5cHRvSGFuZGxlci0+SW5pdChtX3BFbmNyeXB0RGljdCwgbV9wU2VjdXJpdHlIYW5kbGVyKSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwQ3J5cHRvSGFuZGxlcjsNCisgICAgICAgICAgICBwQ3J5cHRvSGFuZGxlciA9IE5VTEw7DQorICAgICAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0hBTkRMRVI7DQorICAgICAgICB9DQorICAgICAgICBtX1N5bnRheC5TZXRFbmNyeXB0KHBDcnlwdG9IYW5kbGVyKTsNCisgICAgfQ0KKyAgICByZXR1cm4gUERGUEFSU0VfRVJST1JfU1VDQ0VTUzsNCit9DQordm9pZCBDUERGX1BhcnNlcjo6UmVsZWFzZUVuY3J5cHRIYW5kbGVyKCkNCit7DQorICAgIGlmIChtX1N5bnRheC5tX3BDcnlwdG9IYW5kbGVyKSB7DQorICAgICAgICBkZWxldGUgbV9TeW50YXgubV9wQ3J5cHRvSGFuZGxlcjsNCisgICAgICAgIG1fU3ludGF4Lm1fcENyeXB0b0hhbmRsZXIgPSBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BTZWN1cml0eUhhbmRsZXIgJiYgIW1fYkZvcmNlVXNlU2VjdXJpdHlIYW5kbGVyKSB7DQorICAgICAgICBkZWxldGUgbV9wU2VjdXJpdHlIYW5kbGVyOw0KKyAgICAgICAgbV9wU2VjdXJpdHlIYW5kbGVyID0gTlVMTDsNCisgICAgfQ0KK30NCitGWF9GSUxFU0laRSBDUERGX1BhcnNlcjo6R2V0T2JqZWN0T2Zmc2V0KEZYX0RXT1JEIG9iam51bSkNCit7DQorICAgIGlmIChvYmpudW0gPj0gKEZYX0RXT1JEKW1fQ3Jvc3NSZWYuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAobV9WNVR5cGVbb2JqbnVtXSA9PSAxKSB7DQorICAgICAgICByZXR1cm4gbV9Dcm9zc1JlZltvYmpudW1dOw0KKyAgICB9DQorICAgIGlmIChtX1Y1VHlwZVtvYmpudW1dID09IDIpIHsNCisgICAgICAgIHJldHVybiBtX0Nyb3NzUmVmWyhGWF9JTlQzMiltX0Nyb3NzUmVmW29iam51bV1dOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitzdGF0aWMgRlhfSU5UMzIgR2V0RGlyZWN0SW50ZWdlcihDUERGX0RpY3Rpb25hcnkqIHBEaWN0LCBGWF9CU1RSIGtleSkNCit7DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gcERpY3QtPkdldEVsZW1lbnQoa2V5KTsNCisgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfTlVNQkVSKSB7DQorICAgICAgICByZXR1cm4gKChDUERGX051bWJlciopcE9iaiktPkdldEludGVnZXIoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorc3RhdGljIEZYX0JPT0wgQ2hlY2tEaXJlY3RUeXBlKENQREZfRGljdGlvbmFyeSogcERpY3QsIEZYX0JTVFIga2V5LCBGWF9JTlQzMiBpVHlwZSkNCit7DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gcERpY3QtPkdldEVsZW1lbnQoa2V5KTsNCisgICAgaWYgKCFwT2JqKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gcE9iai0+R2V0VHlwZSgpID09IGlUeXBlOw0KK30NCitGWF9CT09MIENQREZfUGFyc2VyOjpMb2FkQWxsQ3Jvc3NSZWZWNChGWF9GSUxFU0laRSB4cmVmcG9zKQ0KK3sNCisgICAgaWYgKCFMb2FkQ3Jvc3NSZWZWNCh4cmVmcG9zLCAwLCBUUlVFLCBGQUxTRSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BUcmFpbGVyID0gTG9hZFRyYWlsZXJWNCgpOw0KKyAgICBpZiAobV9wVHJhaWxlciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfSU5UMzIgeHJlZnNpemUgPSBHZXREaXJlY3RJbnRlZ2VyKG1fcFRyYWlsZXIsIEZYX0JTVFJDKCJTaXplIikpOw0KKyAgICBpZiAoeHJlZnNpemUgPD0gMCB8fCB4cmVmc2l6ZSA+ICgxIDw8IDIwKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fQ3Jvc3NSZWYuU2V0U2l6ZSh4cmVmc2l6ZSk7DQorICAgIG1fVjVUeXBlLlNldFNpemUoeHJlZnNpemUpOw0KKyAgICBDRlhfRmlsZVNpemVBcnJheSBDcm9zc1JlZkxpc3QsIFhSZWZTdHJlYW1MaXN0Ow0KKyAgICBDcm9zc1JlZkxpc3QuQWRkKHhyZWZwb3MpOw0KKyAgICBYUmVmU3RyZWFtTGlzdC5BZGQoR2V0RGlyZWN0SW50ZWdlcihtX3BUcmFpbGVyLCBGWF9CU1RSQygiWFJlZlN0bSIpKSk7DQorICAgIGlmICghQ2hlY2tEaXJlY3RUeXBlKG1fcFRyYWlsZXIsIEZYX0JTVFJDKCJQcmV2IiksIFBERk9CSl9OVU1CRVIpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfRklMRVNJWkUgbmV3eHJlZnBvcyA9IEdldERpcmVjdEludGVnZXIobV9wVHJhaWxlciwgRlhfQlNUUkMoIlByZXYiKSk7DQorICAgIGlmIChuZXd4cmVmcG9zID09IHhyZWZwb3MpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICB4cmVmcG9zID0gbmV3eHJlZnBvczsNCisgICAgd2hpbGUgKHhyZWZwb3MpIHsNCisgICAgICAgIENyb3NzUmVmTGlzdC5JbnNlcnRBdCgwLCB4cmVmcG9zKTsNCisgICAgICAgIExvYWRDcm9zc1JlZlY0KHhyZWZwb3MsIDAsIFRSVUUsIEZBTFNFKTsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBMb2FkVHJhaWxlclY0KCk7DQorICAgICAgICBpZiAocERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghQ2hlY2tEaXJlY3RUeXBlKHBEaWN0LCBGWF9CU1RSQygiUHJldiIpLCBQREZPQkpfTlVNQkVSKSkgew0KKyAgICAgICAgICAgIHBEaWN0LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbmV3eHJlZnBvcyA9IEdldERpcmVjdEludGVnZXIocERpY3QsIEZYX0JTVFJDKCJQcmV2IikpOw0KKyAgICAgICAgaWYgKG5ld3hyZWZwb3MgPT0geHJlZnBvcykgew0KKyAgICAgICAgICAgIHBEaWN0LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgeHJlZnBvcyA9IG5ld3hyZWZwb3M7DQorICAgICAgICBYUmVmU3RyZWFtTGlzdC5JbnNlcnRBdCgwLCBwRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiWFJlZlN0bSIpKSk7DQorICAgICAgICBtX1RyYWlsZXJzLkFkZChwRGljdCk7DQorICAgIH0NCisgICAgZm9yIChGWF9JTlQzMiBpID0gMDsgaSA8IENyb3NzUmVmTGlzdC5HZXRTaXplKCk7IGkgKyspDQorICAgICAgICBpZiAoIUxvYWRDcm9zc1JlZlY0KENyb3NzUmVmTGlzdFtpXSwgWFJlZlN0cmVhbUxpc3RbaV0sIEZBTFNFLCBpID09IDApKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX1BhcnNlcjo6TG9hZExpbmVhcml6ZWRBbGxDcm9zc1JlZlY0KEZYX0ZJTEVTSVpFIHhyZWZwb3MsIEZYX0RXT1JEIGR3T2JqQ291bnQpDQorew0KKyAgICBpZiAoIUxvYWRMaW5lYXJpemVkQ3Jvc3NSZWZWNCh4cmVmcG9zLCBkd09iakNvdW50KSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fcFRyYWlsZXIgPSBMb2FkVHJhaWxlclY0KCk7DQorICAgIGlmIChtX3BUcmFpbGVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiB4cmVmc2l6ZSA9IEdldERpcmVjdEludGVnZXIobV9wVHJhaWxlciwgRlhfQlNUUkMoIlNpemUiKSk7DQorICAgIGlmICh4cmVmc2l6ZSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ0ZYX0ZpbGVTaXplQXJyYXkgQ3Jvc3NSZWZMaXN0LCBYUmVmU3RyZWFtTGlzdDsNCisgICAgQ3Jvc3NSZWZMaXN0LkFkZCh4cmVmcG9zKTsNCisgICAgWFJlZlN0cmVhbUxpc3QuQWRkKEdldERpcmVjdEludGVnZXIobV9wVHJhaWxlciwgRlhfQlNUUkMoIlhSZWZTdG0iKSkpOw0KKyAgICB4cmVmcG9zID0gR2V0RGlyZWN0SW50ZWdlcihtX3BUcmFpbGVyLCBGWF9CU1RSQygiUHJldiIpKTsNCisgICAgd2hpbGUgKHhyZWZwb3MpIHsNCisgICAgICAgIENyb3NzUmVmTGlzdC5JbnNlcnRBdCgwLCB4cmVmcG9zKTsNCisgICAgICAgIExvYWRDcm9zc1JlZlY0KHhyZWZwb3MsIDAsIFRSVUUsIEZBTFNFKTsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBMb2FkVHJhaWxlclY0KCk7DQorICAgICAgICBpZiAocERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIHhyZWZwb3MgPSBHZXREaXJlY3RJbnRlZ2VyKHBEaWN0LCBGWF9CU1RSQygiUHJldiIpKTsNCisgICAgICAgIFhSZWZTdHJlYW1MaXN0Lkluc2VydEF0KDAsIHBEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJYUmVmU3RtIikpKTsNCisgICAgICAgIG1fVHJhaWxlcnMuQWRkKHBEaWN0KTsNCisgICAgfQ0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAxOyBpIDwgQ3Jvc3NSZWZMaXN0LkdldFNpemUoKTsgaSArKykNCisgICAgICAgIGlmICghTG9hZENyb3NzUmVmVjQoQ3Jvc3NSZWZMaXN0W2ldLCBYUmVmU3RyZWFtTGlzdFtpXSwgRkFMU0UsIGkgPT0gMCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfUGFyc2VyOjpMb2FkTGluZWFyaXplZENyb3NzUmVmVjQoRlhfRklMRVNJWkUgcG9zLCBGWF9EV09SRCBkd09iakNvdW50KQ0KK3sNCisgICAgRlhfRklMRVNJWkUgZHdTdGFydFBvcyA9IHBvcyAtIG1fU3ludGF4Lm1fSGVhZGVyT2Zmc2V0Ow0KKyAgICBtX1N5bnRheC5SZXN0b3JlUG9zKGR3U3RhcnRQb3MpOw0KKyAgICBGWF9MUFZPSUQgcFJlc3VsdCA9IEZYU1lTX2JzZWFyY2goJnBvcywgbV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpLCBtX1NvcnRlZE9mZnNldC5HZXRTaXplKCksIHNpemVvZihGWF9GSUxFU0laRSksIF9Db21wYXJlRmlsZVNpemUpOw0KKyAgICBpZiAocFJlc3VsdCA9PSBOVUxMKSB7DQorICAgICAgICBtX1NvcnRlZE9mZnNldC5BZGQocG9zKTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBzdGFydF9vYmpudW0gPSAwOw0KKyAgICBGWF9EV09SRCBjb3VudCA9IGR3T2JqQ291bnQ7DQorICAgIEZYX0ZJTEVTSVpFIFNhdmVkUG9zID0gbV9TeW50YXguU2F2ZVBvcygpOw0KKyAgICBGWF9JTlQzMiByZWNvcmRzaXplID0gMjA7DQorICAgIGNoYXIqIHBCdWYgPSBGWF9BbGxvYyhjaGFyLCAxMDI0ICogcmVjb3Jkc2l6ZSArIDEpOw0KKyAgICBwQnVmWzEwMjQgKiByZWNvcmRzaXplXSA9ICdcMCc7DQorICAgIEZYX0lOVDMyIG5CbG9ja3MgPSBjb3VudCAvIDEwMjQgKyAxOw0KKyAgICBmb3IgKEZYX0lOVDMyIGJsb2NrID0gMDsgYmxvY2sgPCBuQmxvY2tzOyBibG9jayArKykgew0KKyAgICAgICAgRlhfSU5UMzIgYmxvY2tfc2l6ZSA9IGJsb2NrID09IG5CbG9ja3MgLSAxID8gY291bnQgJSAxMDI0IDogMTAyNDsNCisgICAgICAgIEZYX0RXT1JEIGR3UmVhZFNpemUgPSBibG9ja19zaXplICogcmVjb3Jkc2l6ZTsNCisgICAgICAgIGlmICgoRlhfRklMRVNJWkUpKGR3U3RhcnRQb3MgKyBkd1JlYWRTaXplKSA+IG1fU3ludGF4Lm1fRmlsZUxlbikgew0KKyAgICAgICAgICAgIEZYX0ZyZWUocEJ1Zik7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFtX1N5bnRheC5SZWFkQmxvY2soKEZYX0xQQllURSlwQnVmLCBkd1JlYWRTaXplKSkgew0KKyAgICAgICAgICAgIEZYX0ZyZWUocEJ1Zik7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gMDsgaSA8IGJsb2NrX3NpemU7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9EV09SRCBvYmpudW0gPSBzdGFydF9vYmpudW0gKyBibG9jayAqIDEwMjQgKyBpOw0KKyAgICAgICAgICAgIGNoYXIqIHBFbnRyeSA9IHBCdWYgKyBpICogcmVjb3Jkc2l6ZTsNCisgICAgICAgICAgICBpZiAocEVudHJ5WzE3XSA9PSAnZicpIHsNCisgICAgICAgICAgICAgICAgbV9Dcm9zc1JlZi5TZXRBdEdyb3cob2JqbnVtLCAwKTsNCisgICAgICAgICAgICAgICAgbV9WNVR5cGUuU2V0QXRHcm93KG9iam51bSwgMCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgRlhfSU5UMzIgb2Zmc2V0ID0gRlhTWVNfYXRvaShwRW50cnkpOw0KKyAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgYyA9IDA7IGMgPCAxMDsgYyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwRW50cnlbY10gPCAnMCcgfHwgcEVudHJ5W2NdID4gJzknKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZyZWUocEJ1Zik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9Dcm9zc1JlZi5TZXRBdEdyb3cob2JqbnVtLCBvZmZzZXQpOw0KKyAgICAgICAgICAgICAgICBGWF9JTlQzMiB2ZXJzaW9uID0gRlhTWVNfYXRvaShwRW50cnkgKyAxMSk7DQorICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uID49IDEpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fYlZlcnNpb25VcGRhdGVkID0gVFJVRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX09ialZlcnNpb24uU2V0QXRHcm93KG9iam51bSwgdmVyc2lvbik7DQorICAgICAgICAgICAgICAgIGlmIChtX0Nyb3NzUmVmW29iam51bV0gPCBtX1N5bnRheC5tX0ZpbGVMZW4pIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0xQVk9JRCBwUmVzdWx0ID0gRlhTWVNfYnNlYXJjaCgmbV9Dcm9zc1JlZltvYmpudW1dLCBtX1NvcnRlZE9mZnNldC5HZXREYXRhKCksIG1fU29ydGVkT2Zmc2V0LkdldFNpemUoKSwgc2l6ZW9mKEZYX0ZJTEVTSVpFKSwgX0NvbXBhcmVGaWxlU2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAocFJlc3VsdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9Tb3J0ZWRPZmZzZXQuQWRkKG1fQ3Jvc3NSZWZbb2JqbnVtXSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9WNVR5cGUuU2V0QXRHcm93KG9iam51bSwgMSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX0ZyZWUocEJ1Zik7DQorICAgIG1fU3ludGF4LlJlc3RvcmVQb3MoU2F2ZWRQb3MgKyBjb3VudCAqIHJlY29yZHNpemUpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX1BhcnNlcjo6TG9hZENyb3NzUmVmVjQoRlhfRklMRVNJWkUgcG9zLCBGWF9GSUxFU0laRSBzdHJlYW1wb3MsIEZYX0JPT0wgYlNraXAsIEZYX0JPT0wgYkZpcnN0KQ0KK3sNCisgICAgbV9TeW50YXguUmVzdG9yZVBvcyhwb3MpOw0KKyAgICBpZiAobV9TeW50YXguR2V0S2V5d29yZCgpICE9IEZYX0JTVFJDKCJ4cmVmIikpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9MUFZPSUQgcFJlc3VsdCA9IEZYU1lTX2JzZWFyY2goJnBvcywgbV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpLCBtX1NvcnRlZE9mZnNldC5HZXRTaXplKCksIHNpemVvZihGWF9GSUxFU0laRSksIF9Db21wYXJlRmlsZVNpemUpOw0KKyAgICBpZiAocFJlc3VsdCA9PSBOVUxMKSB7DQorICAgICAgICBtX1NvcnRlZE9mZnNldC5BZGQocG9zKTsNCisgICAgfQ0KKyAgICBpZiAoc3RyZWFtcG9zKSB7DQorICAgICAgICBGWF9MUFZPSUQgcFJlc3VsdCA9IEZYU1lTX2JzZWFyY2goJnN0cmVhbXBvcywgbV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpLCBtX1NvcnRlZE9mZnNldC5HZXRTaXplKCksIHNpemVvZihGWF9GSUxFU0laRSksIF9Db21wYXJlRmlsZVNpemUpOw0KKyAgICAgICAgaWYgKHBSZXN1bHQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fU29ydGVkT2Zmc2V0LkFkZChzdHJlYW1wb3MpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fU3ludGF4LlNhdmVQb3MoKTsNCisgICAgICAgIEZYX0JPT0wgYklzTnVtYmVyOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgd29yZCA9IG1fU3ludGF4LkdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgICAgICBpZiAod29yZC5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIWJJc051bWJlcikgew0KKyAgICAgICAgICAgIG1fU3ludGF4LlJlc3RvcmVQb3MoU2F2ZWRQb3MpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgc3RhcnRfb2JqbnVtID0gRlhTWVNfYXRvaSh3b3JkKTsNCisgICAgICAgIGlmIChzdGFydF9vYmpudW0gPj0gKDEgPDwgMjApKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgY291bnQgPSBtX1N5bnRheC5HZXREaXJlY3ROdW0oKTsNCisgICAgICAgIG1fU3ludGF4LlRvTmV4dFdvcmQoKTsNCisgICAgICAgIFNhdmVkUG9zID0gbV9TeW50YXguU2F2ZVBvcygpOw0KKyAgICAgICAgRlhfQk9PTCBiRmlyc3RJdGVtID0gRkFMU0U7DQorICAgICAgICBGWF9JTlQzMiByZWNvcmRzaXplID0gMjA7DQorICAgICAgICBpZiAoYkZpcnN0KSB7DQorICAgICAgICAgICAgYkZpcnN0SXRlbSA9IFRSVUU7DQorICAgICAgICB9DQorICAgICAgICBtX2R3WHJlZlN0YXJ0T2JqTnVtID0gc3RhcnRfb2JqbnVtOw0KKyAgICAgICAgaWYgKCFiU2tpcCkgew0KKyAgICAgICAgICAgIGNoYXIqIHBCdWYgPSBGWF9BbGxvYyhjaGFyLCAxMDI0ICogcmVjb3Jkc2l6ZSArIDEpOw0KKyAgICAgICAgICAgIHBCdWZbMTAyNCAqIHJlY29yZHNpemVdID0gJ1wwJzsNCisgICAgICAgICAgICBGWF9JTlQzMiBuQmxvY2tzID0gY291bnQgLyAxMDI0ICsgMTsNCisgICAgICAgICAgICBGWF9CT09MIGJGaXJzdEJsb2NrID0gVFJVRTsNCisgICAgICAgICAgICBmb3IgKEZYX0lOVDMyIGJsb2NrID0gMDsgYmxvY2sgPCBuQmxvY2tzOyBibG9jayArKykgew0KKyAgICAgICAgICAgICAgICBGWF9JTlQzMiBibG9ja19zaXplID0gYmxvY2sgPT0gbkJsb2NrcyAtIDEgPyBjb3VudCAlIDEwMjQgOiAxMDI0Ow0KKyAgICAgICAgICAgICAgICBtX1N5bnRheC5SZWFkQmxvY2soKEZYX0xQQllURSlwQnVmLCBibG9ja19zaXplICogcmVjb3Jkc2l6ZSk7DQorICAgICAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgaSA9IDA7IGkgPCBibG9ja19zaXplOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBvYmpudW0gPSBzdGFydF9vYmpudW0gKyBibG9jayAqIDEwMjQgKyBpOw0KKyAgICAgICAgICAgICAgICAgICAgY2hhciogcEVudHJ5ID0gcEJ1ZiArIGkgKiByZWNvcmRzaXplOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBFbnRyeVsxN10gPT0gJ2YnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJGaXJzdEl0ZW0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqbnVtID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYkZpcnN0SXRlbSA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYkZpcnN0QmxvY2spIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRklMRVNJWkUgb2Zmc2V0ID0gKEZYX0ZJTEVTSVpFKUZYU1lTX2F0b2k2NChwRW50cnkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9JTlQzMiB2ZXJzaW9uID0gRlhTWVNfYXRvaShwRW50cnkgKyAxMSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gMCAmJiB2ZXJzaW9uID09IDY1NTM1ICYmIHN0YXJ0X29iam51bSAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9vYmpudW0tLTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iam51bSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9Dcm9zc1JlZi5TZXRBdEdyb3cob2JqbnVtLCAwKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX1Y1VHlwZS5TZXRBdEdyb3cob2JqbnVtLCAwKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfRklMRVNJWkUgb2Zmc2V0ID0gKEZYX0ZJTEVTSVpFKUZYU1lTX2F0b2k2NChwRW50cnkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEZYX0lOVDMyIGMgPSAwOyBjIDwgMTA7IGMgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwRW50cnlbY10gPCAnMCcgfHwgcEVudHJ5W2NdID4gJzknKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRnJlZShwQnVmKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9Dcm9zc1JlZi5TZXRBdEdyb3cob2JqbnVtLCBvZmZzZXQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0lOVDMyIHZlcnNpb24gPSBGWFNZU19hdG9pKHBFbnRyeSArIDExKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbiA+PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYlZlcnNpb25VcGRhdGVkID0gVFJVRTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9PYmpWZXJzaW9uLlNldEF0R3JvdyhvYmpudW0sIHZlcnNpb24pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0Nyb3NzUmVmW29iam51bV0gPCBtX1N5bnRheC5tX0ZpbGVMZW4pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBWT0lEIHBSZXN1bHQgPSBGWFNZU19ic2VhcmNoKCZtX0Nyb3NzUmVmW29iam51bV0sIG1fU29ydGVkT2Zmc2V0LkdldERhdGEoKSwgbV9Tb3J0ZWRPZmZzZXQuR2V0U2l6ZSgpLCBzaXplb2YoRlhfRklMRVNJWkUpLCBfQ29tcGFyZUZpbGVTaXplKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBSZXN1bHQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9Tb3J0ZWRPZmZzZXQuQWRkKG1fQ3Jvc3NSZWZbb2JqbnVtXSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9WNVR5cGUuU2V0QXRHcm93KG9iam51bSwgMSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAoYkZpcnN0QmxvY2spIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiRmlyc3RCbG9jayA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0ZyZWUocEJ1Zik7DQorICAgICAgICB9DQorICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKFNhdmVkUG9zICsgY291bnQgKiByZWNvcmRzaXplKTsNCisgICAgfQ0KKyAgICBpZiAoc3RyZWFtcG9zKQ0KKyAgICAgICAgaWYgKCFMb2FkQ3Jvc3NSZWZWNShzdHJlYW1wb3MsIHN0cmVhbXBvcywgRkFMU0UpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX1BhcnNlcjo6TG9hZEFsbENyb3NzUmVmVjUoRlhfRklMRVNJWkUgeHJlZnBvcykNCit7DQorICAgIGlmICghTG9hZENyb3NzUmVmVjUoeHJlZnBvcywgeHJlZnBvcywgVFJVRSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICB3aGlsZSAoeHJlZnBvcykNCisgICAgICAgIGlmICghTG9hZENyb3NzUmVmVjUoeHJlZnBvcywgeHJlZnBvcywgRkFMU0UpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICBtX09iamVjdFN0cmVhbU1hcC5Jbml0SGFzaFRhYmxlKDEwMSwgRkFMU0UpOw0KKyAgICBtX2JYUmVmU3RyZWFtID0gVFJVRTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9QYXJzZXI6OlJlYnVpbGRDcm9zc1JlZigpDQorew0KKyAgICBtX0Nyb3NzUmVmLlJlbW92ZUFsbCgpOw0KKyAgICBtX1Y1VHlwZS5SZW1vdmVBbGwoKTsNCisgICAgbV9Tb3J0ZWRPZmZzZXQuUmVtb3ZlQWxsKCk7DQorICAgIG1fT2JqVmVyc2lvbi5SZW1vdmVBbGwoKTsNCisgICAgaWYgKG1fcFRyYWlsZXIpIHsNCisgICAgICAgIG1fcFRyYWlsZXItPlJlbGVhc2UoKTsNCisgICAgICAgIG1fcFRyYWlsZXIgPSBOVUxMOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIHN0YXR1cyA9IDA7DQorICAgIEZYX0lOVDMyIGluc2lkZV9pbmRleCA9IDA7DQorICAgIEZYX0RXT1JEIG9iam51bSwgZ2VubnVtOw0KKyAgICBGWF9JTlQzMiBkZXB0aCA9IDA7DQorICAgIEZYX0xQQllURSBidWZmZXIgPSBGWF9BbGxvYyhGWF9CWVRFLCA0MDk2KTsNCisgICAgRlhfRklMRVNJWkUgcG9zID0gbV9TeW50YXgubV9IZWFkZXJPZmZzZXQ7DQorICAgIEZYX0ZJTEVTSVpFIHN0YXJ0X3Bvcywgc3RhcnRfcG9zMTsNCisgICAgRlhfRklMRVNJWkUgbGFzdF9vYmogPSAtMSwgbGFzdF94cmVmID0gLTEsIGxhc3RfdHJhaWxlciA9IC0xOw0KKyAgICBGWF9CT09MIGJJblVwZGF0ZSA9IEZBTFNFOw0KKyAgICB3aGlsZSAocG9zIDwgbV9TeW50YXgubV9GaWxlTGVuKSB7DQorICAgICAgICBGWF9CT09MIGJPdmVyRmxvdyA9IEZBTFNFOw0KKyAgICAgICAgRlhfRFdPUkQgc2l6ZSA9IChGWF9EV09SRCkobV9TeW50YXgubV9GaWxlTGVuIC0gcG9zKTsNCisgICAgICAgIGlmIChzaXplID4gNDA5Nikgew0KKyAgICAgICAgICAgIHNpemUgPSA0MDk2Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFtX1N5bnRheC5tX3BGaWxlQWNjZXNzLT5SZWFkQmxvY2soYnVmZmVyLCBwb3MsIHNpemUpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgew0KKyAgICAgICAgICAgIEZYX0JZVEUgYnl0ZSA9IGJ1ZmZlcltpXTsNCisgICAgICAgICAgICBGWF9MUEJZVEUgcERhdGEgPSBidWZmZXIgKyBpOw0KKyAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7DQorICAgICAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgICAgIGlmIChfUERGX0NoYXJUeXBlW2J5dGVdID09ICdXJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZSA8PSAnOScgJiYgYnl0ZSA+PSAnMCcpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAtLWk7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID09ICclJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZV9pbmRleCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gOTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID09ICcoJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDEwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoID0gMTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID09ICc8Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZV9pbmRleCA9IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMTE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZSA9PSAnXFwnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMTM7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZSA9PSAndCcpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSA3Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZV9pbmRleCA9IDE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QREZfQ2hhclR5cGVbYnl0ZV0gPT0gJ1cnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ5dGUgPD0gJzknICYmIGJ5dGUgPj0gJzAnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcG9zID0gcG9zICsgaTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9iam51bSA9IGJ5dGUgLSAnMCc7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ5dGUgPT0gJ3QnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gNzsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGVfaW5kZXggPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChieXRlID09ICd4Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlX2luZGV4ID0gMTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgLS1pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPD0gJzknICYmIGJ5dGUgPj0gJzAnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgb2JqbnVtID0gb2JqbnVtICogMTAgKyBieXRlIC0gJzAnOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfUERGX0NoYXJUeXBlW2J5dGVdID09ICdXJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDM7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIC0taTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAxNDsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGVfaW5kZXggPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMzoNCisgICAgICAgICAgICAgICAgICAgIGlmIChieXRlIDw9ICc5JyAmJiBieXRlID49ICcwJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3BvczEgPSBwb3MgKyBpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VubnVtID0gYnl0ZSAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoX1BERl9DaGFyVHlwZVtieXRlXSA9PSAnVycpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnl0ZSA9PSAndCcpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSA3Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZV9pbmRleCA9IDE7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIC0taTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgNDoNCisgICAgICAgICAgICAgICAgICAgIGlmIChieXRlIDw9ICc5JyAmJiBieXRlID49ICcwJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbm51bSA9IGdlbm51bSAqIDEwICsgYnl0ZSAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoX1BERl9DaGFyVHlwZVtieXRlXSA9PSAnVycpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSA1Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAtLWk7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDU6DQorICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZSA9PSAnbycpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSA2Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZV9pbmRleCA9IDE7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF9QREZfQ2hhclR5cGVbYnl0ZV0gPT0gJ1cnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ5dGUgPD0gJzknICYmIGJ5dGUgPj0gJzAnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgb2JqbnVtID0gZ2VubnVtOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbm51bSA9IGJ5dGUgLSAnMCc7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcG9zID0gc3RhcnRfcG9zMTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9wb3MxID0gcG9zICsgaTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChieXRlID09ICd0Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDc7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlX2luZGV4ID0gMTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgLS1pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSA2Og0KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnNpZGVfaW5kZXgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChieXRlICE9ICdiJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZV9pbmRleCArKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChieXRlICE9ICdqJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZV9pbmRleCArKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUERGX0NoYXJUeXBlW2J5dGVdID09ICdXJyB8fCBfUERGX0NoYXJUeXBlW2J5dGVdID09ICdEJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iam51bSA+IDB4MTAwMDAwMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GSUxFU0laRSBvYmpfcG9zID0gc3RhcnRfcG9zIC0gbV9TeW50YXgubV9IZWFkZXJPZmZzZXQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X29iaiA9IHN0YXJ0X3BvczsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQVk9JRCBwUmVzdWx0ID0gRlhTWVNfYnNlYXJjaCgmb2JqX3BvcywgbV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpLCBtX1NvcnRlZE9mZnNldC5HZXRTaXplKCksIHNpemVvZihGWF9GSUxFU0laRSksIF9Db21wYXJlRmlsZVNpemUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBSZXN1bHQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU29ydGVkT2Zmc2V0LkFkZChvYmpfcG9zKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZJTEVTSVpFIG9ial9lbmQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QgKnBPYmplY3QgPSBQYXJzZUluZGlyZWN0T2JqZWN0QXRCeVN0cmljdChtX3BEb2N1bWVudCwgb2JqX3Bvcywgb2JqbnVtLCBOVUxMLCAmb2JqX2VuZCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocE9iamVjdCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpVHlwZSA9CXBPYmplY3QtPkdldFR5cGUoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaVR5cGUgPT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IChDUERGX1N0cmVhbSopcE9iamVjdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IHBTdHJlYW0tPkdldERpY3QoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBEaWN0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocERpY3QtPktleUV4aXN0KEZYX0JTVFJDKCJUeXBlIikpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgYnNWYWx1ZSA9IHBEaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlR5cGUiKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJzVmFsdWUgPT0gRlhfQlNUUkMoIlhSZWYiKSAmJiBwRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIlNpemUiKSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBSb290ID0gcERpY3QtPkdldEVsZW1lbnQoRlhfQlNUUkMoIlJvb3QiKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwUm9vdCAmJiBwUm9vdC0+R2V0RGljdCgpICYmIHBSb290LT5HZXREaWN0KCktPkdldEVsZW1lbnQoRlhfQlNUUkMoIlBhZ2VzIikpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9wVHJhaWxlcikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcFRyYWlsZXItPlJlbGVhc2UoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcFRyYWlsZXIgPSAoQ1BERl9EaWN0aW9uYXJ5KilwRGljdC0+Q2xvbmUoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZJTEVTSVpFIG9mZnNldCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKG9ial9wb3MpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gbV9TeW50YXguRmluZFRhZyhGWF9CU1RSQygib2JqIiksIDApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRklMRVNJWkUgbkxlbiA9IG9ial9lbmQgLSBvYmpfcG9zIC0gb2Zmc2V0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChGWF9EV09SRCluTGVuID4gc2l6ZSAtIGkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBvYmpfZW5kICsgbV9TeW50YXgubV9IZWFkZXJPZmZzZXQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYk92ZXJGbG93ID0gVFJVRTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAoRlhfRFdPUkQpbkxlbjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0Nyb3NzUmVmLkdldFNpemUoKSA+IChGWF9JTlQzMilvYmpudW0gJiYgbV9Dcm9zc1JlZltvYmpudW1dKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBPYmplY3QpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgb2xkZ2VuID0gbV9PYmpWZXJzaW9uLkdldEF0KG9iam51bSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fQ3Jvc3NSZWZbb2JqbnVtXSA9IG9ial9wb3M7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fT2JqVmVyc2lvbi5TZXRBdChvYmpudW0sIChGWF9TSE9SVClnZW5udW0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2xkZ2VuICE9IGdlbm51bSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9iVmVyc2lvblVwZGF0ZWQgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0Nyb3NzUmVmLlNldEF0R3JvdyhvYmpudW0sIG9ial9wb3MpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fVjVUeXBlLlNldEF0R3JvdyhvYmpudW0sIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fT2JqVmVyc2lvbi5TZXRBdEdyb3cob2JqbnVtLCAoRlhfU0hPUlQpZ2VubnVtKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcE9iamVjdC0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0taTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSA3Og0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGluc2lkZV9pbmRleCA9PSA3KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QREZfQ2hhclR5cGVbYnl0ZV0gPT0gJ1cnIHx8IF9QREZfQ2hhclR5cGVbYnl0ZV0gPT0gJ0QnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfdHJhaWxlciA9IHBvcyArIGkgLSA3Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKHBvcyArIGkgLSBtX1N5bnRheC5tX0hlYWRlck9mZnNldCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gbV9TeW50YXguR2V0T2JqZWN0KG1fcERvY3VtZW50LCAwLCAwLCAwKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBPYmopIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwT2JqLT5HZXRUeXBlKCkgIT0gUERGT0JKX0RJQ1RJT05BUlkgJiYgcE9iai0+R2V0VHlwZSgpICE9IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwT2JqLT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcFRyYWlsZXIgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwVHJhaWxlciA9ICgoQ1BERl9TdHJlYW0qKXBPYmopLT5HZXREaWN0KCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFRyYWlsZXIgPSAoQ1BERl9EaWN0aW9uYXJ5KilwT2JqOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFRyYWlsZXIpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcFRyYWlsZXIpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwUm9vdCA9IHBUcmFpbGVyLT5HZXRFbGVtZW50KEZYX0JTVFJDKCJSb290IikpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBSb290ID09IE5VTEwgfHwgKHBSb290LT5HZXRUeXBlKCkgPT0gUERGT0JKX1JFRkVSRU5DRSAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGWF9EV09SRCltX0Nyb3NzUmVmLkdldFNpemUoKSA+ICgoQ1BERl9SZWZlcmVuY2UqKXBSb290KS0+R2V0UmVmT2JqTnVtKCkgJiYNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0Nyb3NzUmVmLkdldEF0KCgoQ1BERl9SZWZlcmVuY2UqKXBSb290KS0+R2V0UmVmT2JqTnVtKCkpICE9IDApKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcFRyYWlsZXItPkdldFN0YXJ0UG9zKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBrZXk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gcFRyYWlsZXItPkdldE5leHRFbGVtZW50KHBvcywga2V5KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wVHJhaWxlci0+U2V0QXQoa2V5LCBwT2JqLT5DbG9uZSgpLCBtX3BEb2N1bWVudCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBPYmotPlJlbGVhc2UoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcE9iai0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wVHJhaWxlciA9IChDUERGX0RpY3Rpb25hcnkqKXBUcmFpbGVyLT5DbG9uZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBPYmotPlJlbGVhc2UoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wVHJhaWxlciA9IHBUcmFpbGVyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRklMRVNJWkUgZHdTYXZlUG9zID0gbV9TeW50YXguU2F2ZVBvcygpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyV29yZCA9IG1fU3ludGF4LkdldEtleXdvcmQoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RyV29yZC5Db21wYXJlKEZYX0JTVFJDKCJzdGFydHhyZWYiKSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJOdW1iZXIgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBic09mZnNldCA9IG1fU3ludGF4LkdldE5leHRXb3JkKGJOdW1iZXIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiTnVtYmVyKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fTGFzdFhSZWZPZmZzZXQgPSBGWFNZU19hdG9pKGJzT2Zmc2V0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKGR3U2F2ZVBvcyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwT2JqLT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJJblVwZGF0ZSA9IFRSVUU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgLS1pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ5dGUgPT0gInRyYWlsZXIiW2luc2lkZV9pbmRleF0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGVfaW5kZXggKys7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIC0taTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgODoNCisgICAgICAgICAgICAgICAgICAgIGlmIChpbnNpZGVfaW5kZXggPT0gNCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfeHJlZiA9IHBvcyArIGkgLSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDE7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ5dGUgPT0gInhyZWYiW2luc2lkZV9pbmRleF0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGVfaW5kZXggKys7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIC0taTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgOToNCisgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID09ICdccicgfHwgYnl0ZSA9PSAnXG4nKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDEwOg0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPT0gJyknKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcHRoID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aC0tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnl0ZSA9PSAnKCcpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCsrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkZXB0aCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAxMToNCisgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID09ICc8JyAmJiBpbnNpZGVfaW5kZXggPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDEyOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChieXRlID09ICc+Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpbnNpZGVfaW5kZXggPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMTI6DQorICAgICAgICAgICAgICAgICAgICAtLWk7DQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMTM6DQorICAgICAgICAgICAgICAgICAgICBpZiAoX1BERl9DaGFyVHlwZVtieXRlXSA9PSAnRCcgfHwgX1BERl9DaGFyVHlwZVtieXRlXSA9PSAnVycpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAtLWk7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDE0Og0KKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QREZfQ2hhclR5cGVbYnl0ZV0gPT0gJ1cnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnl0ZSA9PSAnJScgfHwgYnl0ZSA9PSAnKCcgfHwgYnl0ZSA9PSAnPCcgfHwgYnl0ZSA9PSAnXFwnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAtLWk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluc2lkZV9pbmRleCA9PSA2KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAtLWk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ5dGUgPT0gImVuZG9iaiJbaW5zaWRlX2luZGV4XSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZV9pbmRleCsrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChiT3ZlckZsb3cpIHsNCisgICAgICAgICAgICAgICAgc2l6ZSA9IDA7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHBvcyArPSBzaXplOw0KKyAgICB9DQorICAgIGlmIChsYXN0X3hyZWYgIT0gLTEgJiYgbGFzdF94cmVmID4gbGFzdF9vYmopIHsNCisgICAgICAgIGxhc3RfdHJhaWxlciA9IGxhc3RfeHJlZjsNCisgICAgfSBlbHNlIGlmIChsYXN0X3RyYWlsZXIgPT0gLTEgfHwgbGFzdF94cmVmIDwgbGFzdF9vYmopIHsNCisgICAgICAgIGxhc3RfdHJhaWxlciA9IG1fU3ludGF4Lm1fRmlsZUxlbjsNCisgICAgfQ0KKyAgICBGWF9GSUxFU0laRSBvZmZzZXQgPSBsYXN0X3RyYWlsZXIgLSBtX1N5bnRheC5tX0hlYWRlck9mZnNldDsNCisgICAgRlhfTFBWT0lEIHBSZXN1bHQgPSBGWFNZU19ic2VhcmNoKCZvZmZzZXQsIG1fU29ydGVkT2Zmc2V0LkdldERhdGEoKSwgbV9Tb3J0ZWRPZmZzZXQuR2V0U2l6ZSgpLCBzaXplb2YoRlhfRklMRVNJWkUpLCBfQ29tcGFyZUZpbGVTaXplKTsNCisgICAgaWYgKHBSZXN1bHQgPT0gTlVMTCkgew0KKyAgICAgICAgbV9Tb3J0ZWRPZmZzZXQuQWRkKG9mZnNldCk7DQorICAgIH0NCisgICAgRlhfRnJlZShidWZmZXIpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorc3RhdGljIEZYX0RXT1JEIF9HZXRWYXJJbnQoRlhfTFBDQllURSBwLCBGWF9JTlQzMiBuKQ0KK3sNCisgICAgRlhfRFdPUkQgcmVzdWx0ID0gMDsNCisgICAgZm9yIChGWF9JTlQzMiBpID0gMDsgaSA8IG47IGkgKyspIHsNCisgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDI1NiArIHBbaV07DQorICAgIH0NCisgICAgcmV0dXJuIHJlc3VsdDsNCit9DQorRlhfQk9PTCBDUERGX1BhcnNlcjo6TG9hZENyb3NzUmVmVjUoRlhfRklMRVNJWkUgcG9zLCBGWF9GSUxFU0laRSYgcHJldiwgRlhfQk9PTCBiTWFpblhSZWYpDQorew0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IChDUERGX1N0cmVhbSopUGFyc2VJbmRpcmVjdE9iamVjdEF0KG1fcERvY3VtZW50LCBwb3MsIDAsIE5VTEwpOw0KKyAgICBpZiAoIXBTdHJlYW0pIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9wRG9jdW1lbnQpIHsNCisgICAgICAgIG1fcERvY3VtZW50LT5JbnNlcnRJbmRpcmVjdE9iamVjdChwU3RyZWFtLT5tX09iak51bSwgcFN0cmVhbSk7DQorICAgIH0NCisgICAgaWYgKHBTdHJlYW0tPkdldFR5cGUoKSAhPSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcHJldiA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiUHJldiIpKTsNCisgICAgRlhfSU5UMzIgc2l6ZSA9IHBTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiU2l6ZSIpKTsNCisgICAgaWYgKHNpemUgPCAwKSB7DQorICAgICAgICBwU3RyZWFtLT5SZWxlYXNlKCk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKGJNYWluWFJlZikgew0KKyAgICAgICAgbV9wVHJhaWxlciA9IChDUERGX0RpY3Rpb25hcnkqKXBTdHJlYW0tPkdldERpY3QoKS0+Q2xvbmUoKTsNCisgICAgICAgIG1fQ3Jvc3NSZWYuU2V0U2l6ZShzaXplKTsNCisgICAgICAgIGlmIChtX1Y1VHlwZS5TZXRTaXplKHNpemUpKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtc2V0MzIobV9WNVR5cGUuR2V0RGF0YSgpLCAwLCBzaXplKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fVHJhaWxlcnMuQWRkKChDUERGX0RpY3Rpb25hcnkqKXBTdHJlYW0tPkdldERpY3QoKS0+Q2xvbmUoKSk7DQorICAgIH0NCisgICAgQ0ZYX0RXb3JkQXJyYXkgSW5kZXhBcnJheSwgV2lkdGhBcnJheTsNCisgICAgRlhfRFdPUkQgblNlZ3MgPSAwOw0KKyAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBwU3RyZWFtLT5HZXREaWN0KCktPkdldEFycmF5KEZYX0JTVFJDKCJJbmRleCIpKTsNCisgICAgaWYgKHBBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICBJbmRleEFycmF5LkFkZCgwKTsNCisgICAgICAgIEluZGV4QXJyYXkuQWRkKHNpemUpOw0KKyAgICAgICAgblNlZ3MgPSAxOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBBcnJheS0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgICAgIEluZGV4QXJyYXkuQWRkKHBBcnJheS0+R2V0SW50ZWdlcihpKSk7DQorICAgICAgICB9DQorICAgICAgICBuU2VncyA9IHBBcnJheS0+R2V0Q291bnQoKSAvIDI7DQorICAgIH0NCisgICAgcEFycmF5ID0gcFN0cmVhbS0+R2V0RGljdCgpLT5HZXRBcnJheShGWF9CU1RSQygiVyIpKTsNCisgICAgaWYgKHBBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICBwU3RyZWFtLT5SZWxlYXNlKCk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfRFdPUkQgdG90YWx3aWR0aCA9IDA7DQorICAgIEZYX0RXT1JEIGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBwQXJyYXktPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgIFdpZHRoQXJyYXkuQWRkKHBBcnJheS0+R2V0SW50ZWdlcihpKSk7DQorICAgICAgICBpZiAodG90YWx3aWR0aCArIFdpZHRoQXJyYXlbaV0gPCB0b3RhbHdpZHRoKSB7DQorICAgICAgICAgICAgcFN0cmVhbS0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIHRvdGFsd2lkdGggKz0gV2lkdGhBcnJheVtpXTsNCisgICAgfQ0KKyAgICBpZiAodG90YWx3aWR0aCA9PSAwIHx8IFdpZHRoQXJyYXkuR2V0U2l6ZSgpIDwgMykgew0KKyAgICAgICAgcFN0cmVhbS0+UmVsZWFzZSgpOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfU3RyZWFtQWNjIGFjYzsNCisgICAgYWNjLkxvYWRBbGxEYXRhKHBTdHJlYW0pOw0KKyAgICBGWF9MUENCWVRFIHBEYXRhID0gYWNjLkdldERhdGEoKTsNCisgICAgRlhfRFdPUkQgZHdUb3RhbFNpemUgPSBhY2MuR2V0U2l6ZSgpOw0KKyAgICBGWF9EV09SRCBzZWdpbmRleCA9IDA7DQorICAgIGZvciAoaSA9IDA7IGkgPCBuU2VnczsgaSArKykgew0KKyAgICAgICAgRlhfSU5UMzIgc3RhcnRudW0gPSBJbmRleEFycmF5W2kgKiAyXTsNCisgICAgICAgIGlmIChzdGFydG51bSA8IDApIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIG1fZHdYcmVmU3RhcnRPYmpOdW0gPSBzdGFydG51bTsNCisgICAgICAgIEZYX0RXT1JEIGNvdW50ID0gSW5kZXhBcnJheVtpICogMiArIDFdOw0KKyAgICAgICAgaWYgKHNlZ2luZGV4ICsgY291bnQgPCBzZWdpbmRleCB8fCBzZWdpbmRleCArIGNvdW50ID09IDAgfHwNCisgICAgICAgICAgICAgICAgKEZYX0RXT1JEKXRvdGFsd2lkdGggPj0gVUlOVF9NQVggLyAoc2VnaW5kZXggKyBjb3VudCkgfHwgKHNlZ2luZGV4ICsgY291bnQpICogKEZYX0RXT1JEKXRvdGFsd2lkdGggPiBkd1RvdGFsU2l6ZSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfTFBDQllURSBzZWdzdGFydCA9IHBEYXRhICsgc2VnaW5kZXggKiAoRlhfRFdPUkQpdG90YWx3aWR0aDsNCisgICAgICAgIGlmICgoRlhfRFdPUkQpc3RhcnRudW0gKyBjb3VudCA8IChGWF9EV09SRClzdGFydG51bSB8fA0KKyAgICAgICAgICAgICAgICAoRlhfRFdPUkQpc3RhcnRudW0gKyBjb3VudCA+IChGWF9EV09SRCltX1Y1VHlwZS5HZXRTaXplKCkpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoRlhfRFdPUkQgaiA9IDA7IGogPCBjb3VudDsgaiArKykgew0KKyAgICAgICAgICAgIEZYX0lOVDMyIHR5cGUgPSAxOw0KKyAgICAgICAgICAgIEZYX0xQQ0JZVEUgZW50cnlzdGFydCA9IHNlZ3N0YXJ0ICsgaiAqIHRvdGFsd2lkdGg7DQorICAgICAgICAgICAgaWYgKFdpZHRoQXJyYXlbMF0pIHsNCisgICAgICAgICAgICAgICAgdHlwZSA9IF9HZXRWYXJJbnQoZW50cnlzdGFydCwgV2lkdGhBcnJheVswXSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX1Y1VHlwZVtzdGFydG51bSArIGpdID09IDI1NSkgew0KKyAgICAgICAgICAgICAgICBGWF9GSUxFU0laRSBvZmZzZXQgPSBfR2V0VmFySW50KGVudHJ5c3RhcnQgKyBXaWR0aEFycmF5WzBdLCBXaWR0aEFycmF5WzFdKTsNCisgICAgICAgICAgICAgICAgbV9Dcm9zc1JlZltzdGFydG51bSArIGpdID0gb2Zmc2V0Ow0KKyAgICAgICAgICAgICAgICBGWF9MUFZPSUQgcFJlc3VsdCA9IEZYU1lTX2JzZWFyY2goJm9mZnNldCwgbV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpLCBtX1NvcnRlZE9mZnNldC5HZXRTaXplKCksIHNpemVvZihGWF9GSUxFU0laRSksIF9Db21wYXJlRmlsZVNpemUpOw0KKyAgICAgICAgICAgICAgICBpZiAocFJlc3VsdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBtX1NvcnRlZE9mZnNldC5BZGQob2Zmc2V0KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fVjVUeXBlW3N0YXJ0bnVtICsgal0pIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fVjVUeXBlW3N0YXJ0bnVtICsgal0gPSB0eXBlOw0KKyAgICAgICAgICAgIGlmICh0eXBlID09IDApIHsNCisgICAgICAgICAgICAgICAgbV9Dcm9zc1JlZltzdGFydG51bSArIGpdID0gMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBGWF9GSUxFU0laRSBvZmZzZXQgPSBfR2V0VmFySW50KGVudHJ5c3RhcnQgKyBXaWR0aEFycmF5WzBdLCBXaWR0aEFycmF5WzFdKTsNCisgICAgICAgICAgICAgICAgbV9Dcm9zc1JlZltzdGFydG51bSArIGpdID0gb2Zmc2V0Ow0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9MUFZPSUQgcFJlc3VsdCA9IEZYU1lTX2JzZWFyY2goJm9mZnNldCwgbV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpLCBtX1NvcnRlZE9mZnNldC5HZXRTaXplKCksIHNpemVvZihGWF9GSUxFU0laRSksIF9Db21wYXJlRmlsZVNpemUpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBSZXN1bHQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fU29ydGVkT2Zmc2V0LkFkZChvZmZzZXQpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ID49IG1fVjVUeXBlLkdldFNpemUoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBTdHJlYW0tPlJlbGVhc2UoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBtX1Y1VHlwZVtvZmZzZXRdID0gMjU1Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgc2VnaW5kZXggKz0gY291bnQ7DQorICAgIH0NCisgICAgcFN0cmVhbS0+UmVsZWFzZSgpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ1BERl9BcnJheSogQ1BERl9QYXJzZXI6OkdldElEQXJyYXkoKQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBJRCA9IG1fcFRyYWlsZXItPkdldEVsZW1lbnQoRlhfQlNUUkMoIklEIikpOw0KKyAgICBpZiAocElEID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChwSUQtPkdldFR5cGUoKSA9PSBQREZPQkpfUkVGRVJFTkNFKSB7DQorICAgICAgICBwSUQgPSBQYXJzZUluZGlyZWN0T2JqZWN0KE5VTEwsICgoQ1BERl9SZWZlcmVuY2UqKXBJRCktPkdldFJlZk9iak51bSgpKTsNCisgICAgICAgIG1fcFRyYWlsZXItPlNldEF0KEZYX0JTVFJDKCJJRCIpLCBwSUQpOw0KKyAgICB9DQorICAgIGlmIChwSUQgPT0gTlVMTCB8fCBwSUQtPkdldFR5cGUoKSAhPSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiAoQ1BERl9BcnJheSopcElEOw0KK30NCitGWF9EV09SRCBDUERGX1BhcnNlcjo6R2V0Um9vdE9iak51bSgpDQorew0KKyAgICBDUERGX1JlZmVyZW5jZSogcFJlZiA9IChDUERGX1JlZmVyZW5jZSopbV9wVHJhaWxlci0+R2V0RWxlbWVudChGWF9CU1RSQygiUm9vdCIpKTsNCisgICAgaWYgKHBSZWYgPT0gTlVMTCB8fCBwUmVmLT5HZXRUeXBlKCkgIT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIHBSZWYtPkdldFJlZk9iak51bSgpOw0KK30NCitGWF9EV09SRCBDUERGX1BhcnNlcjo6R2V0SW5mb09iak51bSgpDQorew0KKyAgICBDUERGX1JlZmVyZW5jZSogcFJlZiA9IChDUERGX1JlZmVyZW5jZSopbV9wVHJhaWxlci0+R2V0RWxlbWVudChGWF9CU1RSQygiSW5mbyIpKTsNCisgICAgaWYgKHBSZWYgPT0gTlVMTCB8fCBwUmVmLT5HZXRUeXBlKCkgIT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIHBSZWYtPkdldFJlZk9iak51bSgpOw0KK30NCitGWF9CT09MIENQREZfUGFyc2VyOjpJc0Zvcm1TdHJlYW0oRlhfRFdPUkQgb2JqbnVtLCBGWF9CT09MJiBiRm9ybSkNCit7DQorICAgIGJGb3JtID0gRkFMU0U7DQorICAgIGlmIChvYmpudW0gPj0gKEZYX0RXT1JEKW1fQ3Jvc3NSZWYuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9WNVR5cGVbb2JqbnVtXSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9WNVR5cGVbb2JqbnVtXSA9PSAyKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBGWF9GSUxFU0laRSBwb3MgPSBtX0Nyb3NzUmVmW29iam51bV07DQorICAgIEZYX0xQVk9JRCBwUmVzdWx0ID0gRlhTWVNfYnNlYXJjaCgmcG9zLCBtX1NvcnRlZE9mZnNldC5HZXREYXRhKCksIG1fU29ydGVkT2Zmc2V0LkdldFNpemUoKSwgc2l6ZW9mKEZYX0ZJTEVTSVpFKSwgX0NvbXBhcmVGaWxlU2l6ZSk7DQorICAgIGlmIChwUmVzdWx0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmICgoRlhfRklMRVNJWkUqKXBSZXN1bHQgLSAoRlhfRklMRVNJWkUqKW1fU29ydGVkT2Zmc2V0LkdldERhdGEoKSA9PSBtX1NvcnRlZE9mZnNldC5HZXRTaXplKCkgLSAxKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfRklMRVNJWkUgc2l6ZSA9ICgoRlhfRklMRVNJWkUqKXBSZXN1bHQpWzFdIC0gcG9zOw0KKyAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fU3ludGF4LlNhdmVQb3MoKTsNCisgICAgbV9TeW50YXguUmVzdG9yZVBvcyhwb3MpOw0KKyAgICBiRm9ybSA9IG1fU3ludGF4LlNlYXJjaE11bHRpV29yZChGWF9CU1RSQygiL0Zvcm1cMHN0cmVhbSIpLCBUUlVFLCBzaXplKSA9PSAwOw0KKyAgICBtX1N5bnRheC5SZXN0b3JlUG9zKFNhdmVkUG9zKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX1BhcnNlcjo6UGFyc2VJbmRpcmVjdE9iamVjdChDUERGX0luZGlyZWN0T2JqZWN0cyogcE9iakxpc3QsIEZYX0RXT1JEIG9iam51bSwgUEFSU0VfQ09OVEVYVCogcENvbnRleHQpDQorew0KKyAgICBpZiAob2JqbnVtID49IChGWF9EV09SRCltX0Nyb3NzUmVmLkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKG1fVjVUeXBlW29iam51bV0gPT0gMSB8fCBtX1Y1VHlwZVtvYmpudW1dID09IDI1NSkgew0KKyAgICAgICAgRlhfRklMRVNJWkUgcG9zID0gbV9Dcm9zc1JlZltvYmpudW1dOw0KKyAgICAgICAgaWYgKHBvcyA8PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gUGFyc2VJbmRpcmVjdE9iamVjdEF0KHBPYmpMaXN0LCBwb3MsIG9iam51bSwgcENvbnRleHQpOw0KKyAgICB9DQorICAgIGlmIChtX1Y1VHlwZVtvYmpudW1dID09IDIpIHsNCisgICAgICAgIENQREZfU3RyZWFtQWNjKiBwT2JqU3RyZWFtID0gR2V0T2JqZWN0U3RyZWFtKChGWF9EV09SRCltX0Nyb3NzUmVmW29iam51bV0pOw0KKyAgICAgICAgaWYgKHBPYmpTdHJlYW0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfSU5UMzIgbiA9IHBPYmpTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiTiIpKTsNCisgICAgICAgIEZYX0lOVDMyIG9mZnNldCA9IHBPYmpTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiRmlyc3QiKSk7DQorICAgICAgICBDUERGX1N5bnRheFBhcnNlciBzeW50YXg7DQorICAgICAgICBDRlhfU21hcnRQb2ludGVyPElGWF9GaWxlU3RyZWFtPiBmaWxlKEZYX0NyZWF0ZU1lbW9yeVN0cmVhbSgoRlhfTFBCWVRFKXBPYmpTdHJlYW0tPkdldERhdGEoKSwgKHNpemVfdClwT2JqU3RyZWFtLT5HZXRTaXplKCksIEZBTFNFKSk7DQorICAgICAgICBzeW50YXguSW5pdFBhcnNlcigoSUZYX0ZpbGVTdHJlYW0qKWZpbGUsIDApOw0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBSZXQgPSBOVUxMOw0KKyAgICAgICAgd2hpbGUgKG4pIHsNCisgICAgICAgICAgICBGWF9EV09SRCB0aGlzbnVtID0gc3ludGF4LkdldERpcmVjdE51bSgpOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIHRoaXNvZmYgPSBzeW50YXguR2V0RGlyZWN0TnVtKCk7DQorICAgICAgICAgICAgaWYgKHRoaXNudW0gPT0gb2JqbnVtKSB7DQorICAgICAgICAgICAgICAgIHN5bnRheC5SZXN0b3JlUG9zKG9mZnNldCArIHRoaXNvZmYpOw0KKyAgICAgICAgICAgICAgICBwUmV0ID0gc3ludGF4LkdldE9iamVjdChwT2JqTGlzdCwgMCwgMCwgMCwgcENvbnRleHQpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbiAtLTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBwUmV0Ow0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX1N0cmVhbUFjYyogQ1BERl9QYXJzZXI6OkdldE9iamVjdFN0cmVhbShGWF9EV09SRCBvYmpudW0pDQorew0KKyAgICBDUERGX1N0cmVhbUFjYyogcFN0cmVhbUFjYyA9IE5VTEw7DQorICAgIGlmIChtX09iamVjdFN0cmVhbU1hcC5Mb29rdXAoKHZvaWQqKShGWF9VSU5UUFRSKW9iam51bSwgKHZvaWQqJilwU3RyZWFtQWNjKSkgew0KKyAgICAgICAgcmV0dXJuIHBTdHJlYW1BY2M7DQorICAgIH0NCisgICAgY29uc3QgQ1BERl9TdHJlYW0qIHBTdHJlYW0gPSAoQ1BERl9TdHJlYW0qKW1fcERvY3VtZW50LT5HZXRJbmRpcmVjdE9iamVjdChvYmpudW0pOw0KKyAgICBpZiAocFN0cmVhbSA9PSBOVUxMIHx8IHBTdHJlYW0tPkdldFR5cGUoKSAhPSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwU3RyZWFtQWNjID0gRlhfTkVXIENQREZfU3RyZWFtQWNjOw0KKyAgICBwU3RyZWFtQWNjLT5Mb2FkQWxsRGF0YShwU3RyZWFtKTsNCisgICAgbV9PYmplY3RTdHJlYW1NYXAuU2V0QXQoKHZvaWQqKShGWF9VSU5UUFRSKW9iam51bSwgcFN0cmVhbUFjYyk7DQorICAgIHJldHVybiBwU3RyZWFtQWNjOw0KK30NCitGWF9GSUxFU0laRSBDUERGX1BhcnNlcjo6R2V0T2JqZWN0U2l6ZShGWF9EV09SRCBvYmpudW0pDQorew0KKyAgICBpZiAob2JqbnVtID49IChGWF9EV09SRCltX0Nyb3NzUmVmLkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKG1fVjVUeXBlW29iam51bV0gPT0gMikgew0KKyAgICAgICAgb2JqbnVtID0gKEZYX0RXT1JEKW1fQ3Jvc3NSZWZbb2JqbnVtXTsNCisgICAgfQ0KKyAgICBpZiAobV9WNVR5cGVbb2JqbnVtXSA9PSAxIHx8IG1fVjVUeXBlW29iam51bV0gPT0gMjU1KSB7DQorICAgICAgICBGWF9GSUxFU0laRSBvZmZzZXQgPSBtX0Nyb3NzUmVmW29iam51bV07DQorICAgICAgICBpZiAob2Zmc2V0ID09IDApIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQVk9JRCBwUmVzdWx0ID0gRlhTWVNfYnNlYXJjaCgmb2Zmc2V0LCBtX1NvcnRlZE9mZnNldC5HZXREYXRhKCksIG1fU29ydGVkT2Zmc2V0LkdldFNpemUoKSwgc2l6ZW9mKEZYX0ZJTEVTSVpFKSwgX0NvbXBhcmVGaWxlU2l6ZSk7DQorICAgICAgICBpZiAocFJlc3VsdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICBpZiAoKEZYX0ZJTEVTSVpFKilwUmVzdWx0IC0gKEZYX0ZJTEVTSVpFKiltX1NvcnRlZE9mZnNldC5HZXREYXRhKCkgPT0gbV9Tb3J0ZWRPZmZzZXQuR2V0U2l6ZSgpIC0gMSkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuICgoRlhfRklMRVNJWkUqKXBSZXN1bHQpWzFdIC0gb2Zmc2V0Ow0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCit2b2lkIENQREZfUGFyc2VyOjpHZXRJbmRpcmVjdEJpbmFyeShGWF9EV09SRCBvYmpudW0sIEZYX0xQQllURSYgcEJ1ZmZlciwgRlhfRFdPUkQmIHNpemUpDQorew0KKyAgICBwQnVmZmVyID0gTlVMTDsNCisgICAgc2l6ZSA9IDA7DQorICAgIGlmIChvYmpudW0gPj0gKEZYX0RXT1JEKW1fQ3Jvc3NSZWYuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fVjVUeXBlW29iam51bV0gPT0gMikgew0KKyAgICAgICAgQ1BERl9TdHJlYW1BY2MqIHBPYmpTdHJlYW0gPSBHZXRPYmplY3RTdHJlYW0oKEZYX0RXT1JEKW1fQ3Jvc3NSZWZbb2JqbnVtXSk7DQorICAgICAgICBpZiAocE9ialN0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfSU5UMzIgbiA9IHBPYmpTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiTiIpKTsNCisgICAgICAgIEZYX0lOVDMyIG9mZnNldCA9IHBPYmpTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcihGWF9CU1RSQygiRmlyc3QiKSk7DQorICAgICAgICBDUERGX1N5bnRheFBhcnNlciBzeW50YXg7DQorICAgICAgICBGWF9MUENCWVRFIHBEYXRhID0gcE9ialN0cmVhbS0+R2V0RGF0YSgpOw0KKyAgICAgICAgRlhfRFdPUkQgdG90YWxzaXplID0gcE9ialN0cmVhbS0+R2V0U2l6ZSgpOw0KKyAgICAgICAgQ0ZYX1NtYXJ0UG9pbnRlcjxJRlhfRmlsZVN0cmVhbT4gZmlsZShGWF9DcmVhdGVNZW1vcnlTdHJlYW0oKEZYX0xQQllURSlwRGF0YSwgKHNpemVfdCl0b3RhbHNpemUsIEZBTFNFKSk7DQorICAgICAgICBzeW50YXguSW5pdFBhcnNlcigoSUZYX0ZpbGVTdHJlYW0qKWZpbGUsIDApOw0KKyAgICAgICAgd2hpbGUgKG4pIHsNCisgICAgICAgICAgICBGWF9EV09SRCB0aGlzbnVtID0gc3ludGF4LkdldERpcmVjdE51bSgpOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIHRoaXNvZmYgPSBzeW50YXguR2V0RGlyZWN0TnVtKCk7DQorICAgICAgICAgICAgaWYgKHRoaXNudW0gPT0gb2JqbnVtKSB7DQorICAgICAgICAgICAgICAgIGlmIChuID09IDEpIHsNCisgICAgICAgICAgICAgICAgICAgIHNpemUgPSB0b3RhbHNpemUgLSAodGhpc29mZiArIG9mZnNldCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBuZXh0bnVtID0gc3ludGF4LkdldERpcmVjdE51bSgpOw0KKyAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgbmV4dG9mZiA9IHN5bnRheC5HZXREaXJlY3ROdW0oKTsNCisgICAgICAgICAgICAgICAgICAgIHNpemUgPSBuZXh0b2ZmIC0gdGhpc29mZjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwQnVmZmVyID0gRlhfQWxsb2MoRlhfQllURSwgc2l6ZSk7DQorICAgICAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKHBCdWZmZXIsIHBEYXRhICsgdGhpc29mZiArIG9mZnNldCwgc2l6ZSk7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbiAtLTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9WNVR5cGVbb2JqbnVtXSA9PSAxKSB7DQorICAgICAgICBGWF9GSUxFU0laRSBwb3MgPSBtX0Nyb3NzUmVmW29iam51bV07DQorICAgICAgICBpZiAocG9zID09IDApIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fU3ludGF4LlNhdmVQb3MoKTsNCisgICAgICAgIG1fU3ludGF4LlJlc3RvcmVQb3MocG9zKTsNCisgICAgICAgIEZYX0JPT0wgYklzTnVtYmVyOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgd29yZCA9IG1fU3ludGF4LkdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgICAgICBpZiAoIWJJc051bWJlcikgew0KKyAgICAgICAgICAgIG1fU3ludGF4LlJlc3RvcmVQb3MoU2F2ZWRQb3MpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0RXT1JEIHJlYWxfb2JqbnVtID0gRlhTWVNfYXRvaSh3b3JkKTsNCisgICAgICAgIGlmIChyZWFsX29iam51bSAmJiByZWFsX29iam51bSAhPSBvYmpudW0pIHsNCisgICAgICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKFNhdmVkUG9zKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICB3b3JkID0gbV9TeW50YXguR2V0TmV4dFdvcmQoYklzTnVtYmVyKTsNCisgICAgICAgIGlmICghYklzTnVtYmVyKSB7DQorICAgICAgICAgICAgbV9TeW50YXguUmVzdG9yZVBvcyhTYXZlZFBvcyk7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fU3ludGF4LkdldEtleXdvcmQoKSAhPSBGWF9CU1RSQygib2JqIikpIHsNCisgICAgICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKFNhdmVkUG9zKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBGWF9MUFZPSUQgcFJlc3VsdCA9IEZYU1lTX2JzZWFyY2goJnBvcywgbV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpLCBtX1NvcnRlZE9mZnNldC5HZXRTaXplKCksIHNpemVvZihGWF9GSUxFU0laRSksIF9Db21wYXJlRmlsZVNpemUpOw0KKyAgICAgICAgaWYgKHBSZXN1bHQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fU3ludGF4LlJlc3RvcmVQb3MoU2F2ZWRQb3MpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0ZJTEVTSVpFIG5leHRvZmYgPSAoKEZYX0ZJTEVTSVpFKilwUmVzdWx0KVsxXTsNCisgICAgICAgIEZYX0JPT0wgYk5leHRPZmZWYWxpZCA9IEZBTFNFOw0KKyAgICAgICAgaWYgKG5leHRvZmYgIT0gcG9zKSB7DQorICAgICAgICAgICAgbV9TeW50YXguUmVzdG9yZVBvcyhuZXh0b2ZmKTsNCisgICAgICAgICAgICB3b3JkID0gbV9TeW50YXguR2V0TmV4dFdvcmQoYklzTnVtYmVyKTsNCisgICAgICAgICAgICBpZiAod29yZCA9PSBGWF9CU1RSQygieHJlZiIpKSB7DQorICAgICAgICAgICAgICAgIGJOZXh0T2ZmVmFsaWQgPSBUUlVFOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYklzTnVtYmVyKSB7DQorICAgICAgICAgICAgICAgIHdvcmQgPSBtX1N5bnRheC5HZXROZXh0V29yZChiSXNOdW1iZXIpOw0KKyAgICAgICAgICAgICAgICBpZiAoYklzTnVtYmVyICYmIG1fU3ludGF4LkdldEtleXdvcmQoKSA9PSBGWF9CU1RSQygib2JqIikpIHsNCisgICAgICAgICAgICAgICAgICAgIGJOZXh0T2ZmVmFsaWQgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFiTmV4dE9mZlZhbGlkKSB7DQorICAgICAgICAgICAgbV9TeW50YXguUmVzdG9yZVBvcyhwb3MpOw0KKyAgICAgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgICAgIGlmIChtX1N5bnRheC5HZXRLZXl3b3JkKCkgPT0gRlhfQlNUUkMoImVuZG9iaiIpKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9TeW50YXguU2F2ZVBvcygpID09IG1fU3ludGF4Lm1fRmlsZUxlbikgew0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbmV4dG9mZiA9IG1fU3ludGF4LlNhdmVQb3MoKTsNCisgICAgICAgIH0NCisgICAgICAgIHNpemUgPSAoRlhfRFdPUkQpKG5leHRvZmYgLSBwb3MpOw0KKyAgICAgICAgcEJ1ZmZlciA9IEZYX0FsbG9jKEZYX0JZVEUsIHNpemUpOw0KKyAgICAgICAgbV9TeW50YXguUmVzdG9yZVBvcyhwb3MpOw0KKyAgICAgICAgbV9TeW50YXguUmVhZEJsb2NrKHBCdWZmZXIsIHNpemUpOw0KKyAgICAgICAgbV9TeW50YXguUmVzdG9yZVBvcyhTYXZlZFBvcyk7DQorICAgIH0NCit9DQorQ1BERl9PYmplY3QqIENQREZfUGFyc2VyOjpQYXJzZUluZGlyZWN0T2JqZWN0QXQoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpMaXN0LCBGWF9GSUxFU0laRSBwb3MsIEZYX0RXT1JEIG9iam51bSwNCisgICAgICAgIFBBUlNFX0NPTlRFWFQqIHBDb250ZXh0KQ0KK3sNCisgICAgRlhfRklMRVNJWkUgU2F2ZWRQb3MgPSBtX1N5bnRheC5TYXZlUG9zKCk7DQorICAgIG1fU3ludGF4LlJlc3RvcmVQb3MocG9zKTsNCisgICAgRlhfQk9PTCBiSXNOdW1iZXI7DQorICAgIENGWF9CeXRlU3RyaW5nIHdvcmQgPSBtX1N5bnRheC5HZXROZXh0V29yZChiSXNOdW1iZXIpOw0KKyAgICBpZiAoIWJJc051bWJlcikgew0KKyAgICAgICAgbV9TeW50YXguUmVzdG9yZVBvcyhTYXZlZFBvcyk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9GSUxFU0laRSBvYmpPZmZzZXQgPSBtX1N5bnRheC5TYXZlUG9zKCk7DQorICAgIG9iak9mZnNldCAtPSB3b3JkLkdldExlbmd0aCgpOw0KKyAgICBGWF9EV09SRCByZWFsX29iam51bSA9IEZYU1lTX2F0b2kod29yZCk7DQorICAgIGlmIChvYmpudW0gJiYgcmVhbF9vYmpudW0gIT0gb2JqbnVtKSB7DQorICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKFNhdmVkUG9zKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHdvcmQgPSBtX1N5bnRheC5HZXROZXh0V29yZChiSXNOdW1iZXIpOw0KKyAgICBpZiAoIWJJc051bWJlcikgew0KKyAgICAgICAgbV9TeW50YXguUmVzdG9yZVBvcyhTYXZlZFBvcyk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBnZW5udW0gPSBGWFNZU19hdG9pKHdvcmQpOw0KKyAgICBpZiAobV9TeW50YXguR2V0S2V5d29yZCgpICE9IEZYX0JTVFJDKCJvYmoiKSkgew0KKyAgICAgICAgbV9TeW50YXguUmVzdG9yZVBvcyhTYXZlZFBvcyk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcE9iaiA9IG1fU3ludGF4LkdldE9iamVjdChwT2JqTGlzdCwgb2JqbnVtLCBnZW5udW0sIDAsIHBDb250ZXh0KTsNCisgICAgRlhfRklMRVNJWkUgZW5kT2Zmc2V0ID0gbV9TeW50YXguU2F2ZVBvcygpOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBic1dvcmQgPSBtX1N5bnRheC5HZXRLZXl3b3JkKCk7DQorICAgIGlmIChic1dvcmQgPT0gRlhfQlNUUkMoImVuZG9iaiIpKSB7DQorICAgICAgICBlbmRPZmZzZXQgPSBtX1N5bnRheC5TYXZlUG9zKCk7DQorICAgIH0NCisgICAgRlhfRFdPUkQgb2JqU2l6ZSA9IGVuZE9mZnNldCAtIG9iak9mZnNldDsNCisgICAgbV9TeW50YXguUmVzdG9yZVBvcyhTYXZlZFBvcyk7DQorICAgIGlmIChwT2JqICYmICFvYmpudW0pIHsNCisgICAgICAgIHBPYmotPm1fT2JqTnVtID0gcmVhbF9vYmpudW07DQorICAgIH0NCisgICAgcmV0dXJuIHBPYmo7DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX1BhcnNlcjo6UGFyc2VJbmRpcmVjdE9iamVjdEF0QnlTdHJpY3QoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpMaXN0LCBGWF9GSUxFU0laRSBwb3MsIEZYX0RXT1JEIG9iam51bSwNCisgICAgICAgIHN0cnVjdCBQQVJTRV9DT05URVhUKiBwQ29udGV4dCwgRlhfRklMRVNJWkUgKnBSZXN1bHRQb3MpDQorew0KKyAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fU3ludGF4LlNhdmVQb3MoKTsNCisgICAgbV9TeW50YXguUmVzdG9yZVBvcyhwb3MpOw0KKyAgICBGWF9CT09MIGJJc051bWJlcjsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgd29yZCA9IG1fU3ludGF4LkdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgIGlmICghYklzTnVtYmVyKSB7DQorICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKFNhdmVkUG9zKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIHJlYWxfb2JqbnVtID0gRlhTWVNfYXRvaSh3b3JkKTsNCisgICAgaWYgKG9iam51bSAmJiByZWFsX29iam51bSAhPSBvYmpudW0pIHsNCisgICAgICAgIG1fU3ludGF4LlJlc3RvcmVQb3MoU2F2ZWRQb3MpOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgd29yZCA9IG1fU3ludGF4LkdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgIGlmICghYklzTnVtYmVyKSB7DQorICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKFNhdmVkUG9zKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGdlbm51bSA9IEZYU1lTX2F0b2kod29yZCk7DQorICAgIGlmIChtX1N5bnRheC5HZXRLZXl3b3JkKCkgIT0gRlhfQlNUUkMoIm9iaiIpKSB7DQorICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKFNhdmVkUG9zKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gbV9TeW50YXguR2V0T2JqZWN0QnlTdHJpY3QocE9iakxpc3QsIG9iam51bSwgZ2VubnVtLCAwLCBwQ29udGV4dCk7DQorICAgIGlmIChwUmVzdWx0UG9zKSB7DQorICAgICAgICAqcFJlc3VsdFBvcyA9IG1fU3ludGF4Lm1fUG9zOw0KKyAgICB9DQorICAgIG1fU3ludGF4LlJlc3RvcmVQb3MoU2F2ZWRQb3MpOw0KKyAgICByZXR1cm4gcE9iajsNCit9DQorQ1BERl9EaWN0aW9uYXJ5KiBDUERGX1BhcnNlcjo6TG9hZFRyYWlsZXJWNCgpDQorew0KKyAgICBpZiAobV9TeW50YXguR2V0S2V5d29yZCgpICE9IEZYX0JTVFJDKCJ0cmFpbGVyIikpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gbV9TeW50YXguR2V0T2JqZWN0KG1fcERvY3VtZW50LCAwLCAwLCAwKTsNCisgICAgaWYgKHBPYmogPT0gTlVMTCB8fCBwT2JqLT5HZXRUeXBlKCkgIT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgIGlmIChwT2JqKSB7DQorICAgICAgICAgICAgcE9iai0+UmVsZWFzZSgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIChDUERGX0RpY3Rpb25hcnkqKXBPYmo7DQorfQ0KK0ZYX0RXT1JEIENQREZfUGFyc2VyOjpHZXRQZXJtaXNzaW9ucyhGWF9CT09MIGJDaGVja1JldmlzaW9uKQ0KK3sNCisgICAgaWYgKG1fcFNlY3VyaXR5SGFuZGxlciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gKEZYX0RXT1JEKSAtIDE7DQorICAgIH0NCisgICAgRlhfRFdPUkQgZHdQZXJtaXNzaW9uID0gbV9wU2VjdXJpdHlIYW5kbGVyLT5HZXRQZXJtaXNzaW9ucygpOw0KKyAgICBpZiAobV9wRW5jcnlwdERpY3QgJiYgbV9wRW5jcnlwdERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiRmlsdGVyIikpID09IEZYX0JTVFJDKCJTdGFuZGFyZCIpKSB7DQorICAgICAgICBkd1Blcm1pc3Npb24gJj0gMHhGRkZGRkZGQzsNCisgICAgICAgIGR3UGVybWlzc2lvbiB8PSAweEZGRkZGMEMwOw0KKyAgICAgICAgaWYoYkNoZWNrUmV2aXNpb24gJiYgbV9wRW5jcnlwdERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIlIiKSkgPT0gMikgew0KKyAgICAgICAgICAgIGR3UGVybWlzc2lvbiAmPSAweEZGRkZGMEZGOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBkd1Blcm1pc3Npb247DQorfQ0KK0ZYX0JPT0wgQ1BERl9QYXJzZXI6OklzT3duZXIoKQ0KK3sNCisgICAgcmV0dXJuIG1fcFNlY3VyaXR5SGFuZGxlciA9PSBOVUxMID8gVFJVRSA6IG1fcFNlY3VyaXR5SGFuZGxlci0+SXNPd25lcigpOw0KK30NCit2b2lkIENQREZfUGFyc2VyOjpTZXRTZWN1cml0eUhhbmRsZXIoQ1BERl9TZWN1cml0eUhhbmRsZXIqIHBTZWN1cml0eUhhbmRsZXIsIEZYX0JPT0wgYkZvcmNlZCkNCit7DQorICAgIEFTU0VSVChtX3BTZWN1cml0eUhhbmRsZXIgPT0gTlVMTCk7DQorICAgIGlmIChtX3BTZWN1cml0eUhhbmRsZXIgJiYgIW1fYkZvcmNlVXNlU2VjdXJpdHlIYW5kbGVyKSB7DQorICAgICAgICBkZWxldGUgbV9wU2VjdXJpdHlIYW5kbGVyOw0KKyAgICAgICAgbV9wU2VjdXJpdHlIYW5kbGVyID0gTlVMTDsNCisgICAgfQ0KKyAgICBtX2JGb3JjZVVzZVNlY3VyaXR5SGFuZGxlciA9IGJGb3JjZWQ7DQorICAgIG1fcFNlY3VyaXR5SGFuZGxlciA9IHBTZWN1cml0eUhhbmRsZXI7DQorICAgIGlmIChtX2JGb3JjZVVzZVNlY3VyaXR5SGFuZGxlcikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fU3ludGF4Lm1fcENyeXB0b0hhbmRsZXIgPSBwU2VjdXJpdHlIYW5kbGVyLT5DcmVhdGVDcnlwdG9IYW5kbGVyKCk7DQorICAgIG1fU3ludGF4Lm1fcENyeXB0b0hhbmRsZXItPkluaXQoTlVMTCwgcFNlY3VyaXR5SGFuZGxlcik7DQorfQ0KK0ZYX0JPT0wgQ1BERl9QYXJzZXI6OklzTGluZWFyaXplZEZpbGUoSUZYX0ZpbGVSZWFkKiBwRmlsZUFjY2VzcywgRlhfRFdPUkQgb2Zmc2V0KQ0KK3sNCisgICAgbV9TeW50YXguSW5pdFBhcnNlcihwRmlsZUFjY2Vzcywgb2Zmc2V0KTsNCisgICAgbV9TeW50YXguUmVzdG9yZVBvcyhtX1N5bnRheC5tX0hlYWRlck9mZnNldCArIDkpOw0KKyAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fU3ludGF4LlNhdmVQb3MoKTsNCisgICAgRlhfQk9PTCBiSXNOdW1iZXI7DQorICAgIENGWF9CeXRlU3RyaW5nIHdvcmQgPSBtX1N5bnRheC5HZXROZXh0V29yZChiSXNOdW1iZXIpOw0KKyAgICBpZiAoIWJJc051bWJlcikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIG9iam51bSA9IEZYU1lTX2F0b2kod29yZCk7DQorICAgIHdvcmQgPSBtX1N5bnRheC5HZXROZXh0V29yZChiSXNOdW1iZXIpOw0KKyAgICBpZiAoIWJJc051bWJlcikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGdlbm51bSA9IEZYU1lTX2F0b2kod29yZCk7DQorICAgIGlmIChtX1N5bnRheC5HZXRLZXl3b3JkKCkgIT0gRlhfQlNUUkMoIm9iaiIpKSB7DQorICAgICAgICBtX1N5bnRheC5SZXN0b3JlUG9zKFNhdmVkUG9zKTsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BMaW5lYXJpemVkID0gbV9TeW50YXguR2V0T2JqZWN0KE5VTEwsIG9iam51bSwgZ2VubnVtLCAwKTsNCisgICAgaWYgKCFtX3BMaW5lYXJpemVkKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fcExpbmVhcml6ZWQtPkdldERpY3QoKS0+R2V0RWxlbWVudChGWF9CU1RSQygiTGluZWFyaXplZCIpKSkgew0KKyAgICAgICAgbV9TeW50YXguR2V0TmV4dFdvcmQoYklzTnVtYmVyKTsNCisgICAgICAgIENQREZfT2JqZWN0ICpwTGVuID0gbV9wTGluZWFyaXplZC0+R2V0RGljdCgpLT5HZXRFbGVtZW50KEZYX0JTVFJDKCJMIikpOw0KKyAgICAgICAgaWYgKCFwTGVuKSB7DQorICAgICAgICAgICAgbV9wTGluZWFyaXplZC0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwTGVuLT5HZXRJbnRlZ2VyKCkgIT0gKGludClwRmlsZUFjY2Vzcy0+R2V0U2l6ZSgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9PYmplY3QgKnBObyA9IG1fcExpbmVhcml6ZWQtPkdldERpY3QoKS0+R2V0RWxlbWVudChGWF9CU1RSQygiUCIpKTsNCisgICAgICAgIGlmIChwTm8gJiYgcE5vLT5HZXRUeXBlKCkgPT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgICAgIG1fZHdGaXJzdFBhZ2VObyA9IHBOby0+R2V0SW50ZWdlcigpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9PYmplY3QgKnBUYWJsZSA9IG1fcExpbmVhcml6ZWQtPkdldERpY3QoKS0+R2V0RWxlbWVudChGWF9CU1RSQygiVCIpKTsNCisgICAgICAgIGlmIChwVGFibGUgJiYgcFRhYmxlLT5HZXRUeXBlKCkgPT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgICAgIG1fTGFzdFhSZWZPZmZzZXQgPSBwVGFibGUtPkdldEludGVnZXIoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIG1fcExpbmVhcml6ZWQtPlJlbGVhc2UoKTsNCisgICAgbV9wTGluZWFyaXplZCA9IE5VTEw7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfRFdPUkQgQ1BERl9QYXJzZXI6OlN0YXJ0QXN5blBhcnNlKElGWF9GaWxlUmVhZCogcEZpbGVBY2Nlc3MsIEZYX0JPT0wgYlJlUGFyc2UsIEZYX0JPT0wgYk93bkZpbGVSZWFkKQ0KK3sNCisgICAgQ2xvc2VQYXJzZXIoYlJlUGFyc2UpOw0KKyAgICBtX2JYUmVmU3RyZWFtID0gRkFMU0U7DQorICAgIG1fTGFzdFhSZWZPZmZzZXQgPSAwOw0KKyAgICBtX2JPd25GaWxlUmVhZCA9IGJPd25GaWxlUmVhZDsNCisgICAgRlhfSU5UMzIgb2Zmc2V0ID0gR2V0SGVhZGVyT2Zmc2V0KHBGaWxlQWNjZXNzKTsNCisgICAgaWYgKG9mZnNldCA9PSAtMSkgew0KKyAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsNCisgICAgfQ0KKyAgICBpZiAoIUlzTGluZWFyaXplZEZpbGUocEZpbGVBY2Nlc3MsIG9mZnNldCkpIHsNCisgICAgICAgIG1fU3ludGF4Lm1fcEZpbGVBY2Nlc3MgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuIFN0YXJ0UGFyc2UocEZpbGVBY2Nlc3MsIGJSZVBhcnNlLCBiT3duRmlsZVJlYWQpOw0KKyAgICB9DQorICAgIGlmICghYlJlUGFyc2UpIHsNCisgICAgICAgIG1fcERvY3VtZW50ID0gRlhfTkVXIENQREZfRG9jdW1lbnQodGhpcyk7DQorICAgIH0NCisgICAgRlhfRklMRVNJWkUgZHdGaXJzdFhSZWZPZmZzZXQgPSBtX1N5bnRheC5TYXZlUG9zKCk7DQorICAgIEZYX0JPT0wgYlhSZWZSZWJ1aWx0ID0gRkFMU0U7DQorICAgIEZYX0JPT0wgYkxvYWRWNCA9IEZBTFNFOw0KKyAgICBpZiAoIShiTG9hZFY0ID0gTG9hZENyb3NzUmVmVjQoZHdGaXJzdFhSZWZPZmZzZXQsIDAsIEZBTFNFLCBGQUxTRSkpICYmICFMb2FkQ3Jvc3NSZWZWNShkd0ZpcnN0WFJlZk9mZnNldCwgZHdGaXJzdFhSZWZPZmZzZXQsIFRSVUUpKSB7DQorICAgICAgICBpZiAoIVJlYnVpbGRDcm9zc1JlZigpKSB7DQorICAgICAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsNCisgICAgICAgIH0NCisgICAgICAgIGJYUmVmUmVidWlsdCA9IFRSVUU7DQorICAgICAgICBtX0xhc3RYUmVmT2Zmc2V0ID0gMDsNCisgICAgfQ0KKyAgICBpZiAoYkxvYWRWNCkgew0KKyAgICAgICAgbV9wVHJhaWxlciA9IExvYWRUcmFpbGVyVjQoKTsNCisgICAgICAgIGlmIChtX3BUcmFpbGVyID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBGWF9JTlQzMiB4cmVmc2l6ZSA9IEdldERpcmVjdEludGVnZXIobV9wVHJhaWxlciwgRlhfQlNUUkMoIlNpemUiKSk7DQorICAgICAgICBpZiAoeHJlZnNpemUgPT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIG1fQ3Jvc3NSZWYuU2V0U2l6ZSh4cmVmc2l6ZSk7DQorICAgICAgICBtX1Y1VHlwZS5TZXRTaXplKHhyZWZzaXplKTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBkd1JldCA9IFNldEVuY3J5cHRIYW5kbGVyKCk7DQorICAgIGlmIChkd1JldCAhPSBQREZQQVJTRV9FUlJPUl9TVUNDRVNTKSB7DQorICAgICAgICByZXR1cm4gZHdSZXQ7DQorICAgIH0NCisgICAgbV9wRG9jdW1lbnQtPkxvYWRBc3luRG9jKG1fcExpbmVhcml6ZWQtPkdldERpY3QoKSk7DQorICAgIGlmIChtX3BEb2N1bWVudC0+R2V0Um9vdCgpID09IE5VTEwgfHwgbV9wRG9jdW1lbnQtPkdldFBhZ2VDb3VudCgpID09IDApIHsNCisgICAgICAgIGlmIChiWFJlZlJlYnVpbHQpIHsNCisgICAgICAgICAgICByZXR1cm4gUERGUEFSU0VfRVJST1JfRk9STUFUOw0KKyAgICAgICAgfQ0KKyAgICAgICAgUmVsZWFzZUVuY3J5cHRIYW5kbGVyKCk7DQorICAgICAgICBpZiAoIVJlYnVpbGRDcm9zc1JlZigpKSB7DQorICAgICAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsNCisgICAgICAgIH0NCisgICAgICAgIGR3UmV0ID0gU2V0RW5jcnlwdEhhbmRsZXIoKTsNCisgICAgICAgIGlmIChkd1JldCAhPSBQREZQQVJTRV9FUlJPUl9TVUNDRVNTKSB7DQorICAgICAgICAgICAgcmV0dXJuIGR3UmV0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wRG9jdW1lbnQtPkxvYWRBc3luRG9jKG1fcExpbmVhcml6ZWQtPkdldERpY3QoKSk7DQorICAgICAgICBpZiAobV9wRG9jdW1lbnQtPkdldFJvb3QoKSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIFBERlBBUlNFX0VSUk9SX0ZPUk1BVDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWFNZU19xc29ydChtX1NvcnRlZE9mZnNldC5HZXREYXRhKCksIG1fU29ydGVkT2Zmc2V0LkdldFNpemUoKSwgc2l6ZW9mKEZYX0ZJTEVTSVpFKSwgX0NvbXBhcmVGaWxlU2l6ZSk7DQorICAgIEZYX0RXT1JEIFJvb3RPYmpOdW0gPSBHZXRSb290T2JqTnVtKCk7DQorICAgIGlmIChSb290T2JqTnVtID09IDApIHsNCisgICAgICAgIFJlbGVhc2VFbmNyeXB0SGFuZGxlcigpOw0KKyAgICAgICAgUmVidWlsZENyb3NzUmVmKCk7DQorICAgICAgICBSb290T2JqTnVtID0gR2V0Um9vdE9iak51bSgpOw0KKyAgICAgICAgaWYgKFJvb3RPYmpOdW0gPT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBQREZQQVJTRV9FUlJPUl9GT1JNQVQ7DQorICAgICAgICB9DQorICAgICAgICBkd1JldCA9IFNldEVuY3J5cHRIYW5kbGVyKCk7DQorICAgICAgICBpZiAoZHdSZXQgIT0gUERGUEFSU0VfRVJST1JfU1VDQ0VTUykgew0KKyAgICAgICAgICAgIHJldHVybiBkd1JldDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wU2VjdXJpdHlIYW5kbGVyICYmIG1fcFNlY3VyaXR5SGFuZGxlci0+SXNNZXRhZGF0YUVuY3J5cHRlZCgpKSB7DQorICAgICAgICBDUERGX1JlZmVyZW5jZSogcE1ldGFkYXRhID0gKENQREZfUmVmZXJlbmNlKiltX3BEb2N1bWVudC0+R2V0Um9vdCgpLT5HZXRFbGVtZW50KEZYX0JTVFJDKCJNZXRhZGF0YSIpKTsNCisgICAgICAgIGlmIChwTWV0YWRhdGEgJiYgcE1ldGFkYXRhLT5HZXRUeXBlKCkgPT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgICAgIG1fU3ludGF4Lm1fTWV0YWRhdGFPYmpudW0gPSBwTWV0YWRhdGEtPkdldFJlZk9iak51bSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBQREZQQVJTRV9FUlJPUl9TVUNDRVNTOw0KK30NCitGWF9CT09MIENQREZfUGFyc2VyOjpMb2FkTGluZWFyaXplZEFsbENyb3NzUmVmVjUoRlhfRklMRVNJWkUgeHJlZnBvcykNCit7DQorICAgIGlmICghTG9hZENyb3NzUmVmVjUoeHJlZnBvcywgeHJlZnBvcywgRkFMU0UpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgd2hpbGUgKHhyZWZwb3MpDQorICAgICAgICBpZiAoIUxvYWRDcm9zc1JlZlY1KHhyZWZwb3MsIHhyZWZwb3MsIEZBTFNFKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgbV9PYmplY3RTdHJlYW1NYXAuSW5pdEhhc2hUYWJsZSgxMDEsIEZBTFNFKTsNCisgICAgbV9iWFJlZlN0cmVhbSA9IFRSVUU7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9EV09SRCBDUERGX1BhcnNlcjo6TG9hZExpbmVhcml6ZWRNYWluWFJlZlRhYmxlKCkNCit7DQorICAgIEZYX0RXT1JEIGR3U2F2ZU1ldGFkYXRhT2JqbnVtID0gbV9TeW50YXgubV9NZXRhZGF0YU9iam51bTsNCisgICAgbV9TeW50YXgubV9NZXRhZGF0YU9iam51bSA9IDA7DQorICAgIGlmIChtX3BUcmFpbGVyKSB7DQorICAgICAgICBtX3BUcmFpbGVyLT5SZWxlYXNlKCk7DQorICAgICAgICBtX3BUcmFpbGVyID0gTlVMTDsNCisgICAgfQ0KKyAgICBtX1N5bnRheC5SZXN0b3JlUG9zKG1fTGFzdFhSZWZPZmZzZXQgLSBtX1N5bnRheC5tX0hlYWRlck9mZnNldCk7DQorICAgIEZYX0ZJTEVTSVpFIGR3U2F2ZWRQb3MgPSBtX1N5bnRheC5TYXZlUG9zKCk7DQorICAgIEZYX0JZVEUgY2ggPSAwOw0KKyAgICBGWF9EV09SRCBkd0NvdW50ID0gMDsNCisgICAgbV9TeW50YXguR2V0TmV4dENoYXIoY2gpOw0KKyAgICBGWF9JTlQzMiB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgIHdoaWxlICh0eXBlID09ICdXJykgew0KKyAgICAgICAgKytkd0NvdW50Ow0KKyAgICAgICAgaWYgKG1fU3ludGF4Lm1fRmlsZUxlbiA+PSAoRlhfRklMRVNJWkUpKG1fU3ludGF4LlNhdmVQb3MoKSArIG1fU3ludGF4Lm1fSGVhZGVyT2Zmc2V0KSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9TeW50YXguR2V0TmV4dENoYXIoY2gpOw0KKyAgICAgICAgdHlwZSA9IF9QREZfQ2hhclR5cGVbY2hdOw0KKyAgICB9DQorICAgIG1fTGFzdFhSZWZPZmZzZXQgKz0gZHdDb3VudDsNCisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9PYmplY3RTdHJlYW1NYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBGWF9MUFZPSUQgb2JqbnVtOw0KKyAgICAgICAgQ1BERl9TdHJlYW1BY2MqIHBTdHJlYW07DQorICAgICAgICBtX09iamVjdFN0cmVhbU1hcC5HZXROZXh0QXNzb2MocG9zLCBvYmpudW0sICh2b2lkKiYpcFN0cmVhbSk7DQorICAgICAgICBkZWxldGUgcFN0cmVhbTsNCisgICAgfQ0KKyAgICBtX09iamVjdFN0cmVhbU1hcC5SZW1vdmVBbGwoKTsNCisgICAgaWYgKCFMb2FkTGluZWFyaXplZEFsbENyb3NzUmVmVjQobV9MYXN0WFJlZk9mZnNldCwgbV9kd1hyZWZTdGFydE9iak51bSkgJiYgIUxvYWRMaW5lYXJpemVkQWxsQ3Jvc3NSZWZWNShtX0xhc3RYUmVmT2Zmc2V0KSkgew0KKyAgICAgICAgbV9MYXN0WFJlZk9mZnNldCA9IDA7DQorICAgICAgICBtX1N5bnRheC5tX01ldGFkYXRhT2JqbnVtID0gZHdTYXZlTWV0YWRhdGFPYmpudW07DQorICAgICAgICByZXR1cm4gUERGUEFSU0VfRVJST1JfRk9STUFUOw0KKyAgICB9DQorICAgIEZYU1lTX3Fzb3J0KG1fU29ydGVkT2Zmc2V0LkdldERhdGEoKSwgbV9Tb3J0ZWRPZmZzZXQuR2V0U2l6ZSgpLCBzaXplb2YoRlhfRFdPUkQpLCBfQ29tcGFyZURXb3JkKTsNCisgICAgbV9TeW50YXgubV9NZXRhZGF0YU9iam51bSA9IGR3U2F2ZU1ldGFkYXRhT2JqbnVtOw0KKyAgICByZXR1cm4gUERGUEFSU0VfRVJST1JfU1VDQ0VTUzsNCit9DQorQ1BERl9TeW50YXhQYXJzZXI6OkNQREZfU3ludGF4UGFyc2VyKCkNCit7DQorICAgIG1fcEZpbGVBY2Nlc3MgPSBOVUxMOw0KKyAgICBtX3BDcnlwdG9IYW5kbGVyID0gTlVMTDsNCisgICAgbV9wRmlsZUJ1ZiA9IE5VTEw7DQorICAgIG1fQnVmU2l6ZSA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+bV9GaWxlQnVmU2l6ZTsNCisgICAgbV9wRmlsZUJ1ZiA9IE5VTEw7DQorICAgIG1fTWV0YWRhdGFPYmpudW0gPSAwOw0KKyAgICBtX2R3V29yZFBvcyA9IDA7DQorI2lmIGRlZmluZWQoX0ZQREZBUElfTUlOSV8pDQorICAgIG1fYkZpbGVTdHJlYW0gPSBUUlVFOw0KKyNlbHNlDQorICAgIG1fYkZpbGVTdHJlYW0gPSBGQUxTRTsNCisjZW5kaWYNCit9DQorQ1BERl9TeW50YXhQYXJzZXI6On5DUERGX1N5bnRheFBhcnNlcigpDQorew0KKyAgICBpZiAobV9wRmlsZUJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BGaWxlQnVmKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfU3ludGF4UGFyc2VyOjpHZXRDaGFyQXQoRlhfRklMRVNJWkUgcG9zLCBGWF9CWVRFJiBjaCkNCit7DQorICAgIEZYX0ZJTEVTSVpFIHNhdmVfcG9zID0gbV9Qb3M7DQorICAgIG1fUG9zID0gcG9zOw0KKyAgICBGWF9CT09MIHJldCA9IEdldE5leHRDaGFyKGNoKTsNCisgICAgbV9Qb3MgPSBzYXZlX3BvczsNCisgICAgcmV0dXJuIHJldDsNCit9DQorRlhfQk9PTCBDUERGX1N5bnRheFBhcnNlcjo6R2V0TmV4dENoYXIoRlhfQllURSYgY2gpDQorew0KKyAgICBGWF9GSUxFU0laRSBwb3MgPSBtX1BvcyArIG1fSGVhZGVyT2Zmc2V0Ow0KKyAgICBpZiAocG9zID49IG1fRmlsZUxlbikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX0J1Zk9mZnNldCA+PSBwb3MgfHwgKEZYX0ZJTEVTSVpFKShtX0J1Zk9mZnNldCArIG1fQnVmU2l6ZSkgPD0gcG9zKSB7DQorICAgICAgICBGWF9GSUxFU0laRSByZWFkX3BvcyA9IHBvczsNCisgICAgICAgIEZYX0RXT1JEIHJlYWRfc2l6ZSA9IG1fQnVmU2l6ZTsNCisgICAgICAgIGlmICgoRlhfRklMRVNJWkUpcmVhZF9zaXplID4gbV9GaWxlTGVuKSB7DQorICAgICAgICAgICAgcmVhZF9zaXplID0gKEZYX0RXT1JEKW1fRmlsZUxlbjsNCisgICAgICAgIH0NCisgICAgICAgIGlmICgoRlhfRklMRVNJWkUpKHJlYWRfcG9zICsgcmVhZF9zaXplKSA+IG1fRmlsZUxlbikgew0KKyAgICAgICAgICAgIGlmIChtX0ZpbGVMZW4gPCAoRlhfRklMRVNJWkUpcmVhZF9zaXplKSB7DQorICAgICAgICAgICAgICAgIHJlYWRfcG9zID0gMDsNCisgICAgICAgICAgICAgICAgcmVhZF9zaXplID0gKEZYX0RXT1JEKW1fRmlsZUxlbjsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICByZWFkX3BvcyA9IG1fRmlsZUxlbiAtIHJlYWRfc2l6ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoIW1fcEZpbGVBY2Nlc3MtPlJlYWRCbG9jayhtX3BGaWxlQnVmLCByZWFkX3BvcywgcmVhZF9zaXplKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIG1fQnVmT2Zmc2V0ID0gcmVhZF9wb3M7DQorICAgIH0NCisgICAgY2ggPSBtX3BGaWxlQnVmW3BvcyAtIG1fQnVmT2Zmc2V0XTsNCisgICAgbV9Qb3MgKys7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfU3ludGF4UGFyc2VyOjpHZXRDaGFyQXRCYWNrd2FyZChGWF9GSUxFU0laRSBwb3MsIEZYX0JZVEUmIGNoKQ0KK3sNCisgICAgcG9zICs9IG1fSGVhZGVyT2Zmc2V0Ow0KKyAgICBpZiAocG9zID49IG1fRmlsZUxlbikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX0J1Zk9mZnNldCA+PSBwb3MgfHwgKEZYX0ZJTEVTSVpFKShtX0J1Zk9mZnNldCArIG1fQnVmU2l6ZSkgPD0gcG9zKSB7DQorICAgICAgICBGWF9GSUxFU0laRSByZWFkX3BvczsNCisgICAgICAgIGlmIChwb3MgPCAoRlhfRklMRVNJWkUpbV9CdWZTaXplKSB7DQorICAgICAgICAgICAgcmVhZF9wb3MgPSAwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZWFkX3BvcyA9IHBvcyAtIG1fQnVmU2l6ZSArIDE7DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCByZWFkX3NpemUgPSBtX0J1ZlNpemU7DQorICAgICAgICBpZiAoKEZYX0ZJTEVTSVpFKShyZWFkX3BvcyArIHJlYWRfc2l6ZSkgPiBtX0ZpbGVMZW4pIHsNCisgICAgICAgICAgICBpZiAobV9GaWxlTGVuIDwgKEZYX0ZJTEVTSVpFKXJlYWRfc2l6ZSkgew0KKyAgICAgICAgICAgICAgICByZWFkX3BvcyA9IDA7DQorICAgICAgICAgICAgICAgIHJlYWRfc2l6ZSA9IChGWF9EV09SRCltX0ZpbGVMZW47DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcmVhZF9wb3MgPSBtX0ZpbGVMZW4gLSByZWFkX3NpemU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFtX3BGaWxlQWNjZXNzLT5SZWFkQmxvY2sobV9wRmlsZUJ1ZiwgcmVhZF9wb3MsIHJlYWRfc2l6ZSkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX0J1Zk9mZnNldCA9IHJlYWRfcG9zOw0KKyAgICB9DQorICAgIGNoID0gbV9wRmlsZUJ1Zltwb3MgLSBtX0J1Zk9mZnNldF07DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfU3ludGF4UGFyc2VyOjpSZWFkQmxvY2soRlhfTFBCWVRFIHBCdWYsIEZYX0RXT1JEIHNpemUpDQorew0KKyAgICBpZiAoIW1fcEZpbGVBY2Nlc3MtPlJlYWRCbG9jayhwQnVmLCBtX1BvcyArIG1fSGVhZGVyT2Zmc2V0LCBzaXplKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fUG9zICs9IHNpemU7DQorICAgIHJldHVybiBUUlVFOw0KK30NCisjZGVmaW5lIE1BWF9XT1JEX0JVRkZFUiAyNTYNCit2b2lkIENQREZfU3ludGF4UGFyc2VyOjpHZXROZXh0V29yZCgpDQorew0KKyAgICBtX1dvcmRTaXplID0gMDsNCisgICAgbV9iSXNOdW1iZXIgPSBUUlVFOw0KKyAgICBGWF9CWVRFIGNoOw0KKyAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0JZVEUgdHlwZSA9IF9QREZfQ2hhclR5cGVbY2hdOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgd2hpbGUgKHR5cGUgPT0gJ1cnKSB7DQorICAgICAgICAgICAgaWYgKCFHZXROZXh0Q2hhcihjaCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICB9DQorICAgICAgICBpZiAoY2ggIT0gJyUnKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgIGlmICghR2V0TmV4dENoYXIoY2gpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGNoID09ICdccicgfHwgY2ggPT0gJ1xuJykgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgIH0NCisgICAgaWYgKHR5cGUgPT0gJ0QnKSB7DQorICAgICAgICBtX2JJc051bWJlciA9IEZBTFNFOw0KKyAgICAgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemUrK10gPSBjaDsNCisgICAgICAgIGlmIChjaCA9PSAnLycpIHsNCisgICAgICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgICAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gJ1InICYmIHR5cGUgIT0gJ04nKSB7DQorICAgICAgICAgICAgICAgICAgICBtX1BvcyAtLTsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAobV9Xb3JkU2l6ZSA8IE1BWF9XT1JEX0JVRkZFUikgew0KKyAgICAgICAgICAgICAgICAgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemUrK10gPSBjaDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJzwnKSB7DQorICAgICAgICAgICAgaWYgKCFHZXROZXh0Q2hhcihjaCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoY2ggPT0gJzwnKSB7DQorICAgICAgICAgICAgICAgIG1fV29yZEJ1ZmZlclttX1dvcmRTaXplKytdID0gY2g7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9Qb3MgLS07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnPicpIHsNCisgICAgICAgICAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChjaCA9PSAnPicpIHsNCisgICAgICAgICAgICAgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemUrK10gPSBjaDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBtX1BvcyAtLTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGlmIChtX1dvcmRTaXplIDwgTUFYX1dPUkRfQlVGRkVSKSB7DQorICAgICAgICAgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemUrK10gPSBjaDsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh0eXBlICE9ICdOJykgew0KKyAgICAgICAgICAgIG1fYklzTnVtYmVyID0gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgICAgIGlmICh0eXBlID09ICdEJyB8fCB0eXBlID09ICdXJykgew0KKyAgICAgICAgICAgIG1fUG9zIC0tOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfU3ludGF4UGFyc2VyOjpSZWFkU3RyaW5nKCkNCit7DQorICAgIEZYX0JZVEUgY2g7DQorICAgIGlmICghR2V0TmV4dENoYXIoY2gpKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVRleHRCdWYgYnVmOw0KKyAgICBGWF9JTlQzMiBwYXJsZXZlbCA9IDA7DQorICAgIEZYX0lOVDMyIHN0YXR1cyA9IDAsIGlFc2NDb2RlID0gMDsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7DQorICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJyknKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocGFybGV2ZWwgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWYuR2V0Qnl0ZVN0cmluZygpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgcGFybGV2ZWwgLS07DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcignKScpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICcoJykgew0KKyAgICAgICAgICAgICAgICAgICAgcGFybGV2ZWwgKys7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcignKCcpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdcXCcpIHsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDE7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcihjaCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc3Jykgew0KKyAgICAgICAgICAgICAgICAgICAgaUVzY0NvZGUgPSBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDI7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ24nKSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcignXG4nKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAncicpIHsNCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRDaGFyKCdccicpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICd0Jykgew0KKyAgICAgICAgICAgICAgICAgICAgYnVmLkFwcGVuZENoYXIoJ1x0Jyk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ2InKSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcignXGInKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnZicpIHsNCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRDaGFyKCdcZicpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdccicpIHsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDQ7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnXG4nKSB7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcihjaCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc3Jykgew0KKyAgICAgICAgICAgICAgICAgICAgaUVzY0NvZGUgPSBpRXNjQ29kZSAqIDggKyBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDM7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcihpRXNjQ29kZSk7DQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc3Jykgew0KKyAgICAgICAgICAgICAgICAgICAgaUVzY0NvZGUgPSBpRXNjQ29kZSAqIDggKyBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRDaGFyKGlFc2NDb2RlKTsNCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQ2hhcihpRXNjQ29kZSk7DQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSA0Og0KKyAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0KKyAgICAgICAgICAgICAgICBpZiAoY2ggIT0gJ1xuJykgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEdldE5leHRDaGFyKGNoKTsNCisgICAgcmV0dXJuIGJ1Zi5HZXRCeXRlU3RyaW5nKCk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfU3ludGF4UGFyc2VyOjpSZWFkSGV4U3RyaW5nKCkNCit7DQorICAgIEZYX0JZVEUgY2g7DQorICAgIGlmICghR2V0TmV4dENoYXIoY2gpKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICBDRlhfQmluYXJ5QnVmIGJ1ZjsNCisgICAgRlhfQk9PTCBiRmlyc3QgPSBUUlVFOw0KKyAgICBGWF9CWVRFIGNvZGUgPSAwOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgaWYgKGNoID09ICc+Jykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsNCisgICAgICAgICAgICBpZiAoYkZpcnN0KSB7DQorICAgICAgICAgICAgICAgIGNvZGUgPSAoY2ggLSAnMCcpICogMTY7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgY29kZSArPSBjaCAtICcwJzsNCisgICAgICAgICAgICAgICAgYnVmLkFwcGVuZEJ5dGUoKEZYX0JZVEUpY29kZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJGaXJzdCA9ICFiRmlyc3Q7DQorICAgICAgICB9IGVsc2UgaWYgKGNoID49ICdBJyAmJiBjaCA8PSAnRicpIHsNCisgICAgICAgICAgICBpZiAoYkZpcnN0KSB7DQorICAgICAgICAgICAgICAgIGNvZGUgPSAoY2ggLSAnQScgKyAxMCkgKiAxNjsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBjb2RlICs9IGNoIC0gJ0EnICsgMTA7DQorICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRCeXRlKChGWF9CWVRFKWNvZGUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBiRmlyc3QgPSAhYkZpcnN0Ow0KKyAgICAgICAgfSBlbHNlIGlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ2YnKSB7DQorICAgICAgICAgICAgaWYgKGJGaXJzdCkgew0KKyAgICAgICAgICAgICAgICBjb2RlID0gKGNoIC0gJ2EnICsgMTApICogMTY7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgY29kZSArPSBjaCAtICdhJyArIDEwOw0KKyAgICAgICAgICAgICAgICBidWYuQXBwZW5kQnl0ZSgoRlhfQllURSljb2RlKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYkZpcnN0ID0gIWJGaXJzdDsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghR2V0TmV4dENoYXIoY2gpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCFiRmlyc3QpIHsNCisgICAgICAgIGJ1Zi5BcHBlbmRCeXRlKChGWF9CWVRFKWNvZGUpOw0KKyAgICB9DQorICAgIHJldHVybiBidWYuR2V0Qnl0ZVN0cmluZygpOw0KK30NCit2b2lkIENQREZfU3ludGF4UGFyc2VyOjpUb05leHRMaW5lKCkNCit7DQorICAgIEZYX0JZVEUgY2g7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjaCA9PSAnXG4nKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNoID09ICdccicpIHsNCisgICAgICAgICAgICBHZXROZXh0Q2hhcihjaCk7DQorICAgICAgICAgICAgaWYgKGNoID09ICdcbicpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG1fUG9zIC0tOw0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9TeW50YXhQYXJzZXI6OlRvTmV4dFdvcmQoKQ0KK3sNCisgICAgRlhfQllURSBjaDsNCisgICAgaWYgKCFHZXROZXh0Q2hhcihjaCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9CWVRFIHR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIHdoaWxlICh0eXBlID09ICdXJykgew0KKyAgICAgICAgICAgIG1fZHdXb3JkUG9zID0gbV9Qb3M7DQorICAgICAgICAgICAgaWYgKCFHZXROZXh0Q2hhcihjaCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICB9DQorICAgICAgICBpZiAoY2ggIT0gJyUnKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgIGlmICghR2V0TmV4dENoYXIoY2gpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGNoID09ICdccicgfHwgY2ggPT0gJ1xuJykgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgIH0NCisgICAgbV9Qb3MgLS07DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfU3ludGF4UGFyc2VyOjpHZXROZXh0V29yZChGWF9CT09MJiBiSXNOdW1iZXIpDQorew0KKyAgICBHZXROZXh0V29yZCgpOw0KKyAgICBiSXNOdW1iZXIgPSBtX2JJc051bWJlcjsNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKChGWF9MUENTVFIpbV9Xb3JkQnVmZmVyLCBtX1dvcmRTaXplKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ1BERl9TeW50YXhQYXJzZXI6OkdldEtleXdvcmQoKQ0KK3sNCisgICAgR2V0TmV4dFdvcmQoKTsNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKChGWF9MUENTVFIpbV9Xb3JkQnVmZmVyLCBtX1dvcmRTaXplKTsNCit9DQorQ1BERl9PYmplY3QqIENQREZfU3ludGF4UGFyc2VyOjpHZXRPYmplY3QoQ1BERl9JbmRpcmVjdE9iamVjdHMqIHBPYmpMaXN0LCBGWF9EV09SRCBvYmpudW0sIEZYX0RXT1JEIGdlbm51bSwgRlhfSU5UMzIgbGV2ZWwsIFBBUlNFX0NPTlRFWFQqIHBDb250ZXh0LCBGWF9CT09MIGJEZWNyeXB0KQ0KK3sNCisgICAgaWYgKGxldmVsID4gX1BBUlNFUl9PQkpFQ1RfTEVWTEVfKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fUG9zOw0KKyAgICBGWF9CT09MIGJUeXBlT25seSA9IHBDb250ZXh0ICYmIChwQ29udGV4dC0+bV9GbGFncyAmIFBERlBBUlNFX1RZUEVPTkxZKTsNCisgICAgRlhfQk9PTCBiSXNOdW1iZXI7DQorICAgIENGWF9CeXRlU3RyaW5nIHdvcmQgPSBHZXROZXh0V29yZChiSXNOdW1iZXIpOw0KKyAgICBDUERGX09iamVjdCogcFJldCA9IE5VTEw7DQorICAgIGlmICh3b3JkLkdldExlbmd0aCgpID09IDApIHsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfSU5WQUxJRDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0ZJTEVTSVpFIHdvcmRPZmZzZXQgPSBtX1BvcyAtIHdvcmQuR2V0TGVuZ3RoKCk7DQorICAgIGlmIChiSXNOdW1iZXIpIHsNCisgICAgICAgIEZYX0ZJTEVTSVpFIFNhdmVkUG9zID0gbV9Qb3M7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBuZXh0d29yZCA9IEdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgICAgICBpZiAoYklzTnVtYmVyKSB7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgbmV4dHdvcmQyID0gR2V0TmV4dFdvcmQoYklzTnVtYmVyKTsNCisgICAgICAgICAgICBpZiAobmV4dHdvcmQyID09IEZYX0JTVFJDKCJSIikpIHsNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgb2JqbnVtID0gRlhTWVNfYXRvaSh3b3JkKTsNCisgICAgICAgICAgICAgICAgaWYgKGJUeXBlT25seSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChDUERGX09iamVjdCopUERGT0JKX1JFRkVSRU5DRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwUmV0ID0gQ1BERl9SZWZlcmVuY2U6OkNyZWF0ZShwT2JqTGlzdCwgb2JqbnVtKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBSZXQ7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9Qb3MgPSBTYXZlZFBvczsNCisgICAgICAgICAgICAgICAgaWYgKGJUeXBlT25seSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChDUERGX09iamVjdCopUERGT0JKX05VTUJFUjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwUmV0ID0gQ1BERl9OdW1iZXI6OkNyZWF0ZSh3b3JkKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBSZXQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX1BvcyA9IFNhdmVkUG9zOw0KKyAgICAgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIChDUERGX09iamVjdCopUERGT0JKX05VTUJFUjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFJldCA9IENQREZfTnVtYmVyOjpDcmVhdGUod29yZCk7DQorICAgICAgICAgICAgcmV0dXJuIHBSZXQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHdvcmQgPT0gRlhfQlNUUkMoInRydWUiKSB8fCB3b3JkID09IEZYX0JTVFJDKCJmYWxzZSIpKSB7DQorICAgICAgICBpZiAoYlR5cGVPbmx5KSB7DQorICAgICAgICAgICAgcmV0dXJuIChDUERGX09iamVjdCopUERGT0JKX0JPT0xFQU47DQorICAgICAgICB9DQorICAgICAgICBwUmV0ID0gQ1BERl9Cb29sZWFuOjpDcmVhdGUod29yZCA9PSBGWF9CU1RSQygidHJ1ZSIpKTsNCisgICAgICAgIHJldHVybiBwUmV0Ow0KKyAgICB9DQorICAgIGlmICh3b3JkID09IEZYX0JTVFJDKCJudWxsIikpIHsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHBSZXQgPSBDUERGX051bGw6OkNyZWF0ZSgpOw0KKyAgICAgICAgcmV0dXJuIHBSZXQ7DQorICAgIH0NCisgICAgaWYgKHdvcmQgPT0gRlhfQlNUUkMoIigiKSkgew0KKyAgICAgICAgaWYgKGJUeXBlT25seSkgew0KKyAgICAgICAgICAgIHJldHVybiAoQ1BERl9PYmplY3QqKVBERk9CSl9TVFJJTkc7DQorICAgICAgICB9DQorICAgICAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fUG9zIC0gMTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIHN0ciA9IFJlYWRTdHJpbmcoKTsNCisgICAgICAgIGlmIChtX3BDcnlwdG9IYW5kbGVyICYmIGJEZWNyeXB0KSB7DQorICAgICAgICAgICAgbV9wQ3J5cHRvSGFuZGxlci0+RGVjcnlwdChvYmpudW0sIGdlbm51bSwgc3RyKTsNCisgICAgICAgIH0NCisgICAgICAgIHBSZXQgPSBDUERGX1N0cmluZzo6Q3JlYXRlKHN0ciwgRkFMU0UpOw0KKyAgICAgICAgcmV0dXJuIHBSZXQ7DQorICAgIH0NCisgICAgaWYgKHdvcmQgPT0gRlhfQlNUUkMoIjwiKSkgew0KKyAgICAgICAgaWYgKGJUeXBlT25seSkgew0KKyAgICAgICAgICAgIHJldHVybiAoQ1BERl9PYmplY3QqKVBERk9CSl9TVFJJTkc7DQorICAgICAgICB9DQorICAgICAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fUG9zIC0gMTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIHN0ciA9IFJlYWRIZXhTdHJpbmcoKTsNCisgICAgICAgIGlmIChtX3BDcnlwdG9IYW5kbGVyICYmIGJEZWNyeXB0KSB7DQorICAgICAgICAgICAgbV9wQ3J5cHRvSGFuZGxlci0+RGVjcnlwdChvYmpudW0sIGdlbm51bSwgc3RyKTsNCisgICAgICAgIH0NCisgICAgICAgIHBSZXQgPSBDUERGX1N0cmluZzo6Q3JlYXRlKHN0ciwgVFJVRSk7DQorICAgICAgICByZXR1cm4gcFJldDsNCisgICAgfQ0KKyAgICBpZiAod29yZCA9PSBGWF9CU1RSQygiWyIpKSB7DQorICAgICAgICBpZiAoYlR5cGVPbmx5KSB7DQorICAgICAgICAgICAgcmV0dXJuIChDUERGX09iamVjdCopUERGT0JKX0FSUkFZOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9BcnJheSogcEFycmF5ID0gQ1BERl9BcnJheTo6Q3JlYXRlKCk7DQorICAgICAgICBGWF9GSUxFU0laRSBmaXJzdFBvcyA9IG1fUG9zIC0gMTsNCisgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgRlhfRklMRVNJWkUgU2F2ZWRQb3MgPSBtX1BvczsNCisgICAgICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IEdldE9iamVjdChwT2JqTGlzdCwgb2JqbnVtLCBnZW5udW0sIGxldmVsICsgMSk7DQorICAgICAgICAgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcEFycmF5Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwQXJyYXktPkFkZChwT2JqKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAod29yZFswXSA9PSAnLycpIHsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfTkFNRTsNCisgICAgICAgIH0NCisgICAgICAgIHBSZXQgPSBDUERGX05hbWU6OkNyZWF0ZShQREZfTmFtZURlY29kZShDRlhfQnl0ZVN0cmluZ0MobV9Xb3JkQnVmZmVyICsgMSwgbV9Xb3JkU2l6ZSAtIDEpKSk7DQorICAgICAgICByZXR1cm4gcFJldDsNCisgICAgfQ0KKyAgICBpZiAod29yZCA9PSBGWF9CU1RSQygiPDwiKSkgew0KKyAgICAgICAgRlhfRklMRVNJWkUgc2F2ZURpY3RPZmZzZXQgPSBtX1BvcyAtIDI7DQorICAgICAgICBGWF9EV09SRCBkd0RpY3RTaXplID0gMDsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfRElDVElPTkFSWTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwQ29udGV4dCkgew0KKyAgICAgICAgICAgIHBDb250ZXh0LT5tX0RpY3RTdGFydCA9IFNhdmVkUG9zOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IENQREZfRGljdGlvbmFyeTo6Q3JlYXRlKCk7DQorICAgICAgICBGWF9JTlQzMiBuS2V5cyA9IDA7DQorICAgICAgICBGWF9GSUxFU0laRSBkd1NpZ25WYWx1ZVBvcyA9IDA7DQorICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgIEZYX0JPT0wgYklzTnVtYmVyOw0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGtleSA9IEdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgICAgICAgICAgaWYgKGtleS5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgcERpY3QtPlJlbGVhc2UoKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0ZJTEVTSVpFIFNhdmVkUG9zID0gbV9Qb3MgLSBrZXkuR2V0TGVuZ3RoKCk7DQorICAgICAgICAgICAgaWYgKGtleSA9PSBGWF9CU1RSQygiPj4iKSkgew0KKyAgICAgICAgICAgICAgICBkd0RpY3RTaXplID0gbV9Qb3MgLSBzYXZlRGljdE9mZnNldDsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChrZXkgPT0gRlhfQlNUUkMoImVuZG9iaiIpKSB7DQorICAgICAgICAgICAgICAgIGR3RGljdFNpemUgPSBtX1BvcyAtIDYgLSBzYXZlRGljdE9mZnNldDsNCisgICAgICAgICAgICAgICAgbV9Qb3MgPSBTYXZlZFBvczsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChrZXlbMF0gIT0gJy8nKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBuS2V5cyArKzsNCisgICAgICAgICAgICBrZXkgPSBQREZfTmFtZURlY29kZShrZXkpOw0KKyAgICAgICAgICAgIGlmIChrZXkgPT0gRlhfQlNUUkMoIi9Db250ZW50cyIpKSB7DQorICAgICAgICAgICAgICAgIGR3U2lnblZhbHVlUG9zID0gbV9Qb3M7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gR2V0T2JqZWN0KHBPYmpMaXN0LCBvYmpudW0sIGdlbm51bSwgbGV2ZWwgKyAxKTsNCisgICAgICAgICAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoa2V5LkdldExlbmd0aCgpID09IDEpIHsNCisgICAgICAgICAgICAgICAgcERpY3QtPlNldEF0KENGWF9CeXRlU3RyaW5nQygoKEZYX0xQQ1NUUilrZXkpICsgMSwga2V5LkdldExlbmd0aCgpIC0gMSksIHBPYmopOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmIChuS2V5cyA8IDMyKSB7DQorICAgICAgICAgICAgICAgICAgICBwRGljdC0+U2V0QXQoQ0ZYX0J5dGVTdHJpbmdDKCgoRlhfTFBDU1RSKWtleSkgKyAxLCBrZXkuR2V0TGVuZ3RoKCkgLSAxKSwgcE9iaik7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBwRGljdC0+QWRkVmFsdWUoQ0ZYX0J5dGVTdHJpbmdDKCgoRlhfTFBDU1RSKWtleSkgKyAxLCBrZXkuR2V0TGVuZ3RoKCkgLSAxKSwgcE9iaik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoSXNTaWduYXR1cmVEaWN0KHBEaWN0KSkgew0KKyAgICAgICAgICAgIEZYX0ZJTEVTSVpFIGR3U2F2ZVBvcyA9IG1fUG9zOw0KKyAgICAgICAgICAgIG1fUG9zID0gZHdTaWduVmFsdWVQb3M7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBHZXRPYmplY3QocE9iakxpc3QsIG9iam51bSwgZ2VubnVtLCBsZXZlbCArIDEsIE5VTEwsIEZBTFNFKTsNCisgICAgICAgICAgICBwRGljdC0+U2V0QXQoRlhfQlNUUkMoIkNvbnRlbnRzIiksIHBPYmopOw0KKyAgICAgICAgICAgIG1fUG9zID0gZHdTYXZlUG9zOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBDb250ZXh0KSB7DQorICAgICAgICAgICAgcENvbnRleHQtPm1fRGljdEVuZCA9IG1fUG9zOw0KKyAgICAgICAgICAgIGlmIChwQ29udGV4dC0+bV9GbGFncyAmIFBERlBBUlNFX05PU1RSRUFNKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwRGljdDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fUG9zOw0KKyAgICAgICAgRlhfQk9PTCBiSXNOdW1iZXI7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBuZXh0d29yZCA9IEdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgICAgICBpZiAobmV4dHdvcmQgPT0gRlhfQlNUUkMoInN0cmVhbSIpKSB7DQorICAgICAgICAgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW0gPSBSZWFkU3RyZWFtKHBEaWN0LCBwQ29udGV4dCwgb2JqbnVtLCBnZW5udW0pOw0KKyAgICAgICAgICAgIGlmIChwU3RyZWFtKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwU3RyZWFtOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwRGljdC0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX1BvcyA9IFNhdmVkUG9zOw0KKyAgICAgICAgICAgIHJldHVybiBwRGljdDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAod29yZCA9PSBGWF9CU1RSQygiPj4iKSkgew0KKyAgICAgICAgbV9Qb3MgPSBTYXZlZFBvczsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgIHJldHVybiAoQ1BERl9PYmplY3QqKVBERk9CSl9JTlZBTElEOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX09iamVjdCogQ1BERl9TeW50YXhQYXJzZXI6OkdldE9iamVjdEJ5U3RyaWN0KENQREZfSW5kaXJlY3RPYmplY3RzKiBwT2JqTGlzdCwgRlhfRFdPUkQgb2JqbnVtLCBGWF9EV09SRCBnZW5udW0sDQorICAgICAgICBGWF9JTlQzMiBsZXZlbCwgc3RydWN0IFBBUlNFX0NPTlRFWFQqIHBDb250ZXh0KQ0KK3sNCisgICAgaWYgKGxldmVsID4gX1BBUlNFUl9PQkpFQ1RfTEVWTEVfKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fUG9zOw0KKyAgICBGWF9CT09MIGJUeXBlT25seSA9IHBDb250ZXh0ICYmIChwQ29udGV4dC0+bV9GbGFncyAmIFBERlBBUlNFX1RZUEVPTkxZKTsNCisgICAgRlhfQk9PTCBiSXNOdW1iZXI7DQorICAgIENGWF9CeXRlU3RyaW5nIHdvcmQgPSBHZXROZXh0V29yZChiSXNOdW1iZXIpOw0KKyAgICBpZiAod29yZC5HZXRMZW5ndGgoKSA9PSAwKSB7DQorICAgICAgICBpZiAoYlR5cGVPbmx5KSB7DQorICAgICAgICAgICAgcmV0dXJuIChDUERGX09iamVjdCopUERGT0JKX0lOVkFMSUQ7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoYklzTnVtYmVyKSB7DQorICAgICAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fUG9zOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgbmV4dHdvcmQgPSBHZXROZXh0V29yZChiSXNOdW1iZXIpOw0KKyAgICAgICAgaWYgKGJJc051bWJlcikgew0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIG5leHR3b3JkMiA9IEdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgICAgICAgICAgaWYgKG5leHR3b3JkMiA9PSBGWF9CU1RSQygiUiIpKSB7DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIG9iam51bSA9IEZYU1lTX2F0b2kod29yZCk7DQorICAgICAgICAgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoQ1BERl9PYmplY3QqKVBERk9CSl9SRUZFUkVOQ0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIENQREZfUmVmZXJlbmNlOjpDcmVhdGUocE9iakxpc3QsIG9iam51bSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9Qb3MgPSBTYXZlZFBvczsNCisgICAgICAgICAgICAgICAgaWYgKGJUeXBlT25seSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChDUERGX09iamVjdCopUERGT0JKX05VTUJFUjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gQ1BERl9OdW1iZXI6OkNyZWF0ZSh3b3JkKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fUG9zID0gU2F2ZWRQb3M7DQorICAgICAgICAgICAgaWYgKGJUeXBlT25seSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfTlVNQkVSOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gQ1BERl9OdW1iZXI6OkNyZWF0ZSh3b3JkKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAod29yZCA9PSBGWF9CU1RSQygidHJ1ZSIpIHx8IHdvcmQgPT0gRlhfQlNUUkMoImZhbHNlIikpIHsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfQk9PTEVBTjsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBDUERGX0Jvb2xlYW46OkNyZWF0ZSh3b3JkID09IEZYX0JTVFJDKCJ0cnVlIikpOw0KKyAgICB9DQorICAgIGlmICh3b3JkID09IEZYX0JTVFJDKCJudWxsIikpIHsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBDUERGX051bGw6OkNyZWF0ZSgpOw0KKyAgICB9DQorICAgIGlmICh3b3JkID09IEZYX0JTVFJDKCIoIikpIHsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfU1RSSU5HOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyID0gUmVhZFN0cmluZygpOw0KKyAgICAgICAgaWYgKG1fcENyeXB0b0hhbmRsZXIpIHsNCisgICAgICAgICAgICBtX3BDcnlwdG9IYW5kbGVyLT5EZWNyeXB0KG9iam51bSwgZ2VubnVtLCBzdHIpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIENQREZfU3RyaW5nOjpDcmVhdGUoc3RyLCBGQUxTRSk7DQorICAgIH0NCisgICAgaWYgKHdvcmQgPT0gRlhfQlNUUkMoIjwiKSkgew0KKyAgICAgICAgaWYgKGJUeXBlT25seSkgew0KKyAgICAgICAgICAgIHJldHVybiAoQ1BERl9PYmplY3QqKVBERk9CSl9TVFJJTkc7DQorICAgICAgICB9DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdHIgPSBSZWFkSGV4U3RyaW5nKCk7DQorICAgICAgICBpZiAobV9wQ3J5cHRvSGFuZGxlcikgew0KKyAgICAgICAgICAgIG1fcENyeXB0b0hhbmRsZXItPkRlY3J5cHQob2JqbnVtLCBnZW5udW0sIHN0cik7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gQ1BERl9TdHJpbmc6OkNyZWF0ZShzdHIsIFRSVUUpOw0KKyAgICB9DQorICAgIGlmICh3b3JkID09IEZYX0JTVFJDKCJbIikpIHsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfQVJSQVk7DQorICAgICAgICB9DQorICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBDUERGX0FycmF5OjpDcmVhdGUoKTsNCisgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBHZXRPYmplY3QocE9iakxpc3QsIG9iam51bSwgZ2VubnVtLCBsZXZlbCArIDEpOw0KKyAgICAgICAgICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgaWYgKG1fV29yZEJ1ZmZlclswXSA9PSAnXScpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwQXJyYXk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcEFycmF5LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwQXJyYXktPkFkZChwT2JqKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAod29yZFswXSA9PSAnLycpIHsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfTkFNRTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBDUERGX05hbWU6OkNyZWF0ZShQREZfTmFtZURlY29kZShDRlhfQnl0ZVN0cmluZ0MobV9Xb3JkQnVmZmVyICsgMSwgbV9Xb3JkU2l6ZSAtIDEpKSk7DQorICAgIH0NCisgICAgaWYgKHdvcmQgPT0gRlhfQlNUUkMoIjw8IikpIHsNCisgICAgICAgIGlmIChiVHlwZU9ubHkpIHsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfT2JqZWN0KilQREZPQkpfRElDVElPTkFSWTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwQ29udGV4dCkgew0KKyAgICAgICAgICAgIHBDb250ZXh0LT5tX0RpY3RTdGFydCA9IFNhdmVkUG9zOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IENQREZfRGljdGlvbmFyeTo6Q3JlYXRlKCk7DQorICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgIEZYX0JPT0wgYklzTnVtYmVyOw0KKyAgICAgICAgICAgIEZYX0ZJTEVTSVpFIFNhdmVkUG9zID0gbV9Qb3M7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcga2V5ID0gR2V0TmV4dFdvcmQoYklzTnVtYmVyKTsNCisgICAgICAgICAgICBpZiAoa2V5LklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgICAgICBwRGljdC0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGtleSA9PSBGWF9CU1RSQygiPj4iKSkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGtleSA9PSBGWF9CU1RSQygiZW5kb2JqIikpIHsNCisgICAgICAgICAgICAgICAgbV9Qb3MgPSBTYXZlZFBvczsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChrZXlbMF0gIT0gJy8nKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBrZXkgPSBQREZfTmFtZURlY29kZShrZXkpOw0KKyAgICAgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gR2V0T2JqZWN0KHBPYmpMaXN0LCBvYmpudW0sIGdlbm51bSwgbGV2ZWwgKyAxKTsNCisgICAgICAgICAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHBEaWN0LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgY2g7DQorICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IDB4MEEgfHwgY2ggPT0gMHgwRCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoa2V5LkdldExlbmd0aCgpID09IDEpIHsNCisgICAgICAgICAgICAgICAgcERpY3QtPlNldEF0KENGWF9CeXRlU3RyaW5nQygoKEZYX0xQQ1NUUilrZXkpICsgMSwga2V5LkdldExlbmd0aCgpIC0gMSksIHBPYmopOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBEaWN0LT5BZGRWYWx1ZShDRlhfQnl0ZVN0cmluZ0MoKChGWF9MUENTVFIpa2V5KSArIDEsIGtleS5HZXRMZW5ndGgoKSAtIDEpLCBwT2JqKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAocENvbnRleHQpIHsNCisgICAgICAgICAgICBwQ29udGV4dC0+bV9EaWN0RW5kID0gbV9Qb3M7DQorICAgICAgICAgICAgaWYgKHBDb250ZXh0LT5tX0ZsYWdzICYgUERGUEFSU0VfTk9TVFJFQU0pIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBEaWN0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEZYX0ZJTEVTSVpFIFNhdmVkUG9zID0gbV9Qb3M7DQorICAgICAgICBGWF9CT09MIGJJc051bWJlcjsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIG5leHR3b3JkID0gR2V0TmV4dFdvcmQoYklzTnVtYmVyKTsNCisgICAgICAgIGlmIChuZXh0d29yZCA9PSBGWF9CU1RSQygic3RyZWFtIikpIHsNCisgICAgICAgICAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IFJlYWRTdHJlYW0ocERpY3QsIHBDb250ZXh0LCBvYmpudW0sIGdlbm51bSk7DQorICAgICAgICAgICAgaWYgKHBTdHJlYW0pIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBTdHJlYW07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBEaWN0LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fUG9zID0gU2F2ZWRQb3M7DQorICAgICAgICAgICAgcmV0dXJuIHBEaWN0Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICh3b3JkID09IEZYX0JTVFJDKCI+PiIpKSB7DQorICAgICAgICBtX1BvcyA9IFNhdmVkUG9zOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKGJUeXBlT25seSkgew0KKyAgICAgICAgcmV0dXJuIChDUERGX09iamVjdCopUERGT0JKX0lOVkFMSUQ7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0NQREZfU3RyZWFtKiBDUERGX1N5bnRheFBhcnNlcjo6UmVhZFN0cmVhbShDUERGX0RpY3Rpb25hcnkqIHBEaWN0LCBQQVJTRV9DT05URVhUKiBwQ29udGV4dCwNCisgICAgICAgIEZYX0RXT1JEIG9iam51bSwgRlhfRFdPUkQgZ2VubnVtKQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBMZW5PYmogPSBwRGljdC0+R2V0RWxlbWVudChGWF9CU1RSQygiTGVuZ3RoIikpOw0KKyAgICBGWF9EV09SRCBsZW4gPSAwOw0KKyAgICBpZiAocExlbk9iaiAmJiAocExlbk9iai0+R2V0VHlwZSgpICE9IFBERk9CSl9SRUZFUkVOQ0UgfHwNCisgICAgICAgICAgICAgICAgICAgICgoKENQREZfUmVmZXJlbmNlKilwTGVuT2JqKS0+R2V0T2JqTGlzdCgpICE9IE5VTEwpICYmDQorICAgICAgICAgICAgICAgICAgICAoKENQREZfUmVmZXJlbmNlKilwTGVuT2JqKS0+R2V0UmVmT2JqTnVtKCkgIT0gb2JqbnVtKSkgew0KKyAgICAgICAgRlhfRklMRVNJWkUgcG9zID0gbV9Qb3M7DQorICAgICAgICBpZiAocExlbk9iaikgew0KKyAgICAgICAgICAgIGxlbiA9IHBMZW5PYmotPkdldEludGVnZXIoKTsNCisgICAgICAgIH0NCisgICAgICAgIG1fUG9zID0gcG9zOw0KKyAgICAgICAgaWYgKGxlbiA+IDB4NDAwMDAwMDApIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBUb05leHRMaW5lKCk7DQorICAgIEZYX0ZJTEVTSVpFIFN0cmVhbVN0YXJ0UG9zID0gbV9Qb3M7DQorICAgIGlmIChwQ29udGV4dCkgew0KKyAgICAgICAgcENvbnRleHQtPm1fRGF0YVN0YXJ0ID0gbV9Qb3M7DQorICAgIH0NCisgICAgbV9Qb3MgKz0gbGVuOw0KKyAgICBDUERGX0NyeXB0b0hhbmRsZXIqIHBDcnlwdG9IYW5kbGVyID0gb2JqbnVtID09IChGWF9EV09SRCltX01ldGFkYXRhT2JqbnVtID8gTlVMTCA6IG1fcENyeXB0b0hhbmRsZXI7DQorICAgIGlmIChwQ3J5cHRvSGFuZGxlciA9PSBOVUxMKSB7DQorICAgICAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fUG9zOw0KKyAgICAgICAgR2V0TmV4dFdvcmQoKTsNCisgICAgICAgIGlmIChtX1dvcmRTaXplIDwgOSB8fCBGWFNZU19tZW1jbXAzMihtX1dvcmRCdWZmZXIsICJlbmRzdHJlYW0iLCA5KSkgew0KKyAgICAgICAgICAgIG1fUG9zID0gU3RyZWFtU3RhcnRQb3M7DQorICAgICAgICAgICAgRlhfRklMRVNJWkUgb2Zmc2V0ID0gRmluZFRhZyhGWF9CU1RSQygiZW5kc3RyZWFtIiksIDApOw0KKyAgICAgICAgICAgIGlmIChvZmZzZXQgPj0gMCkgew0KKyAgICAgICAgICAgICAgICBGWF9GSUxFU0laRSBjdXJQb3MgPSBtX1BvczsNCisgICAgICAgICAgICAgICAgbV9Qb3MgPSBTdHJlYW1TdGFydFBvczsNCisgICAgICAgICAgICAgICAgRlhfRklMRVNJWkUgZW5kb2JqT2Zmc2V0ID0gRmluZFRhZyhGWF9CU1RSQygiZW5kb2JqIiksIDApOw0KKyAgICAgICAgICAgICAgICBpZiAoZW5kb2JqT2Zmc2V0IDwgb2Zmc2V0ICYmIGVuZG9iak9mZnNldCA+PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBlbmRvYmpPZmZzZXQ7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBtX1BvcyA9IGN1clBvczsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGJ5dGUxLCBieXRlMjsNCisgICAgICAgICAgICAgICAgR2V0Q2hhckF0KFN0cmVhbVN0YXJ0UG9zICsgb2Zmc2V0IC0gMSwgYnl0ZTEpOw0KKyAgICAgICAgICAgICAgICBHZXRDaGFyQXQoU3RyZWFtU3RhcnRQb3MgKyBvZmZzZXQgLSAyLCBieXRlMik7DQorICAgICAgICAgICAgICAgIGlmIChieXRlMSA9PSAweDBhICYmIGJ5dGUyID09IDB4MGQpIHsNCisgICAgICAgICAgICAgICAgICAgIGxlbiAtPSAyOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ5dGUxID09IDB4MGEgfHwgYnl0ZTEgPT0gMHgwZCkgew0KKyAgICAgICAgICAgICAgICAgICAgbGVuIC0tOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxlbiA9IChGWF9EV09SRClvZmZzZXQ7DQorICAgICAgICAgICAgICAgIHBEaWN0LT5TZXRBdEludGVnZXIoRlhfQlNUUkMoIkxlbmd0aCIpLCBsZW4pOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG1fUG9zID0gU3RyZWFtU3RhcnRQb3M7DQorICAgICAgICAgICAgICAgIGlmIChGaW5kVGFnKEZYX0JTVFJDKCJlbmRvYmoiKSwgMCkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX1BvcyA9IFN0cmVhbVN0YXJ0UG9zOw0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbTsNCisjaWYgZGVmaW5lZChfRlBERkFQSV9NSU5JXykgJiYgIWRlZmluZWQoX0ZYQ09SRV9GRUFUVVJFX0FMTF8pDQorICAgIHBTdHJlYW0gPSBGWF9ORVcgQ1BERl9TdHJlYW0obV9wRmlsZUFjY2VzcywgcENyeXB0b0hhbmRsZXIsIG1fSGVhZGVyT2Zmc2V0ICsgbV9Qb3MsIGxlbiwgcERpY3QsIGdlbm51bSk7DQorICAgIG1fUG9zICs9IGxlbjsNCisjZWxzZQ0KKyAgICBGWF9MUEJZVEUgcERhdGEgPSBGWF9BbGxvYyhGWF9CWVRFLCBsZW4pOw0KKyAgICBpZiAoIXBEYXRhKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBSZWFkQmxvY2socERhdGEsIGxlbik7DQorICAgIGlmIChwQ3J5cHRvSGFuZGxlcikgew0KKyAgICAgICAgQ0ZYX0JpbmFyeUJ1ZiBkZXN0X2J1ZjsNCisgICAgICAgIGRlc3RfYnVmLkVzdGltYXRlU2l6ZShwQ3J5cHRvSGFuZGxlci0+RGVjcnlwdEdldFNpemUobGVuKSk7DQorICAgICAgICBGWF9MUFZPSUQgY29udGV4dCA9IHBDcnlwdG9IYW5kbGVyLT5EZWNyeXB0U3RhcnQob2JqbnVtLCBnZW5udW0pOw0KKyAgICAgICAgcENyeXB0b0hhbmRsZXItPkRlY3J5cHRTdHJlYW0oY29udGV4dCwgcERhdGEsIGxlbiwgZGVzdF9idWYpOw0KKyAgICAgICAgcENyeXB0b0hhbmRsZXItPkRlY3J5cHRGaW5pc2goY29udGV4dCwgZGVzdF9idWYpOw0KKyAgICAgICAgRlhfRnJlZShwRGF0YSk7DQorICAgICAgICBwRGF0YSA9IGRlc3RfYnVmLkdldEJ1ZmZlcigpOw0KKyAgICAgICAgbGVuID0gZGVzdF9idWYuR2V0U2l6ZSgpOw0KKyAgICAgICAgZGVzdF9idWYuRGV0YWNoQnVmZmVyKCk7DQorICAgIH0NCisgICAgcFN0cmVhbSA9IEZYX05FVyBDUERGX1N0cmVhbShwRGF0YSwgbGVuLCBwRGljdCk7DQorI2VuZGlmDQorICAgIGlmIChwQ29udGV4dCkgew0KKyAgICAgICAgcENvbnRleHQtPm1fRGF0YUVuZCA9IHBDb250ZXh0LT5tX0RhdGFTdGFydCArIGxlbjsNCisgICAgfQ0KKyAgICBTdHJlYW1TdGFydFBvcyA9IG1fUG9zOw0KKyAgICBHZXROZXh0V29yZCgpOw0KKyAgICBpZiAobV9Xb3JkU2l6ZSA9PSA2ICYmIDAgPT0gRlhTWVNfbWVtY21wMzIobV9Xb3JkQnVmZmVyLCAiZW5kb2JqIiwgNikpIHsNCisgICAgICAgIG1fUG9zID0gU3RyZWFtU3RhcnRQb3M7DQorICAgIH0NCisgICAgcmV0dXJuIHBTdHJlYW07DQorfQ0KK3ZvaWQgQ1BERl9TeW50YXhQYXJzZXI6OkluaXRQYXJzZXIoSUZYX0ZpbGVSZWFkKiBwRmlsZUFjY2VzcywgRlhfRFdPUkQgSGVhZGVyT2Zmc2V0KQ0KK3sNCisgICAgaWYgKG1fcEZpbGVCdWYpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wRmlsZUJ1Zik7DQorICAgICAgICBtX3BGaWxlQnVmID0gTlVMTDsNCisgICAgfQ0KKyAgICBtX3BGaWxlQnVmID0gRlhfQWxsb2MoRlhfQllURSwgbV9CdWZTaXplKTsNCisgICAgbV9IZWFkZXJPZmZzZXQgPSBIZWFkZXJPZmZzZXQ7DQorICAgIG1fRmlsZUxlbiA9IHBGaWxlQWNjZXNzLT5HZXRTaXplKCk7DQorICAgIG1fUG9zID0gMDsNCisgICAgbV9wRmlsZUFjY2VzcyA9IHBGaWxlQWNjZXNzOw0KKyAgICBtX0J1Zk9mZnNldCA9IDA7DQorICAgIHBGaWxlQWNjZXNzLT5SZWFkQmxvY2sobV9wRmlsZUJ1ZiwgMCwgKHNpemVfdCkoKEZYX0ZJTEVTSVpFKW1fQnVmU2l6ZSA+IG1fRmlsZUxlbiA/IG1fRmlsZUxlbiA6IG1fQnVmU2l6ZSkpOw0KK30NCitGWF9JTlQzMiBDUERGX1N5bnRheFBhcnNlcjo6R2V0RGlyZWN0TnVtKCkNCit7DQorICAgIEdldE5leHRXb3JkKCk7DQorICAgIGlmICghbV9iSXNOdW1iZXIpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIG1fV29yZEJ1ZmZlclttX1dvcmRTaXplXSA9IDA7DQorICAgIHJldHVybiBGWFNZU19hdG9pKChGWF9MUENTVFIpbV9Xb3JkQnVmZmVyKTsNCit9DQorRlhfQk9PTCBDUERGX1N5bnRheFBhcnNlcjo6SXNXaG9sZVdvcmQoRlhfRklMRVNJWkUgc3RhcnRwb3MsIEZYX0ZJTEVTSVpFIGxpbWl0LCBGWF9MUENCWVRFIHRhZywgRlhfRFdPUkQgdGFnbGVuKQ0KK3sNCisgICAgRlhfQllURSB0eXBlID0gX1BERl9DaGFyVHlwZVt0YWdbMF1dOw0KKyAgICBGWF9CT09MIGJDaGVja0xlZnQgPSB0eXBlICE9ICdEJyAmJiB0eXBlICE9ICdXJzsNCisgICAgdHlwZSA9IF9QREZfQ2hhclR5cGVbdGFnW3RhZ2xlbiAtIDFdXTsNCisgICAgRlhfQk9PTCBiQ2hlY2tSaWdodCA9IHR5cGUgIT0gJ0QnIHx8IHR5cGUgIT0gJ1cnOw0KKyAgICBGWF9CWVRFIGNoOw0KKyAgICBpZiAoYkNoZWNrUmlnaHQgJiYgc3RhcnRwb3MgKyAoRlhfSU5UMzIpdGFnbGVuIDw9IGxpbWl0ICYmIEdldENoYXJBdChzdGFydHBvcyArIChGWF9JTlQzMil0YWdsZW4sIGNoKSkgew0KKyAgICAgICAgRlhfQllURSB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICBpZiAodHlwZSA9PSAnTicgfHwgdHlwZSA9PSAnUicpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGJDaGVja0xlZnQgJiYgc3RhcnRwb3MgPiAwICYmIEdldENoYXJBdChzdGFydHBvcyAtIDEsIGNoKSkgew0KKyAgICAgICAgRlhfQllURSB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICBpZiAodHlwZSA9PSAnTicgfHwgdHlwZSA9PSAnUicpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TeW50YXhQYXJzZXI6OlNlYXJjaFdvcmQoRlhfQlNUUiB0YWcsIEZYX0JPT0wgYldob2xlV29yZCwgRlhfQk9PTCBiRm9yd2FyZCwgRlhfRklMRVNJWkUgbGltaXQpDQorew0KKyAgICBGWF9JTlQzMiB0YWdsZW4gPSB0YWcuR2V0TGVuZ3RoKCk7DQorICAgIGlmICh0YWdsZW4gPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0ZJTEVTSVpFIHBvcyA9IG1fUG9zOw0KKyAgICBGWF9JTlQzMiBvZmZzZXQgPSAwOw0KKyAgICBpZiAoIWJGb3J3YXJkKSB7DQorICAgICAgICBvZmZzZXQgPSB0YWdsZW4gLSAxOw0KKyAgICB9DQorICAgIEZYX0xQQ0JZVEUgdGFnX2RhdGEgPSB0YWc7DQorICAgIEZYX0JZVEUgYnl0ZTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGlmIChiRm9yd2FyZCkgew0KKyAgICAgICAgICAgIGlmIChsaW1pdCkgew0KKyAgICAgICAgICAgICAgICBpZiAocG9zID49IG1fUG9zICsgbGltaXQpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoIUdldENoYXJBdChwb3MsIGJ5dGUpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChsaW1pdCkgew0KKyAgICAgICAgICAgICAgICBpZiAocG9zIDw9IG1fUG9zIC0gbGltaXQpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoIUdldENoYXJBdEJhY2t3YXJkKHBvcywgYnl0ZSkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChieXRlID09IHRhZ19kYXRhW29mZnNldF0pIHsNCisgICAgICAgICAgICBpZiAoYkZvcndhcmQpIHsNCisgICAgICAgICAgICAgICAgb2Zmc2V0ICsrOw0KKyAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgdGFnbGVuKSB7DQorICAgICAgICAgICAgICAgICAgICBwb3MgKys7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG9mZnNldCAtLTsNCisgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA+PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBwb3MgLS07DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9GSUxFU0laRSBzdGFydHBvcyA9IGJGb3J3YXJkID8gcG9zIC0gdGFnbGVuICsgMSA6IHBvczsNCisgICAgICAgICAgICBpZiAoIWJXaG9sZVdvcmQgfHwgSXNXaG9sZVdvcmQoc3RhcnRwb3MsIGxpbWl0LCB0YWcsIHRhZ2xlbikpIHsNCisgICAgICAgICAgICAgICAgbV9Qb3MgPSBzdGFydHBvczsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGJGb3J3YXJkKSB7DQorICAgICAgICAgICAgb2Zmc2V0ID0gYnl0ZSA9PSB0YWdfZGF0YVswXSA/IDEgOiAwOw0KKyAgICAgICAgICAgIHBvcyArKzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgb2Zmc2V0ID0gYnl0ZSA9PSB0YWdfZGF0YVt0YWdsZW4gLSAxXSA/IHRhZ2xlbiAtIDIgOiB0YWdsZW4gLSAxOw0KKyAgICAgICAgICAgIHBvcyAtLTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwb3MgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorc3RydWN0IF9TZWFyY2hUYWdSZWNvcmQgew0KKyAgICBGWF9MUENCWVRFCW1fcFRhZzsNCisgICAgRlhfRFdPUkQJbV9MZW47DQorICAgIEZYX0RXT1JECW1fT2Zmc2V0Ow0KK307DQorRlhfSU5UMzIgQ1BERl9TeW50YXhQYXJzZXI6OlNlYXJjaE11bHRpV29yZChGWF9CU1RSIHRhZ3MsIEZYX0JPT0wgYldob2xlV29yZCwgRlhfRklMRVNJWkUgbGltaXQpDQorew0KKyAgICBGWF9JTlQzMiBudGFncyA9IDEsIGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCB0YWdzLkdldExlbmd0aCgpOyBpICsrKQ0KKyAgICAgICAgaWYgKHRhZ3NbaV0gPT0gMCkgew0KKyAgICAgICAgICAgIG50YWdzICsrOw0KKyAgICAgICAgfQ0KKyAgICBfU2VhcmNoVGFnUmVjb3JkKiBwUGF0dGVybnMgPSBGWF9BbGxvYyhfU2VhcmNoVGFnUmVjb3JkLCBudGFncyk7DQorICAgIEZYX0RXT1JEIHN0YXJ0ID0gMCwgaXRhZyA9IDAsIG1heF9sZW4gPSAwOw0KKyAgICBmb3IgKGkgPSAwOyBpIDw9IHRhZ3MuR2V0TGVuZ3RoKCk7IGkgKyspIHsNCisgICAgICAgIGlmICh0YWdzW2ldID09IDApIHsNCisgICAgICAgICAgICBGWF9EV09SRCBsZW4gPSBpIC0gc3RhcnQ7DQorICAgICAgICAgICAgaWYgKGxlbiA+IG1heF9sZW4pIHsNCisgICAgICAgICAgICAgICAgbWF4X2xlbiA9IGxlbjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFBhdHRlcm5zW2l0YWddLm1fcFRhZyA9IHRhZ3MuR2V0UHRyKCkgKyBzdGFydDsNCisgICAgICAgICAgICBwUGF0dGVybnNbaXRhZ10ubV9MZW4gPSBsZW47DQorICAgICAgICAgICAgcFBhdHRlcm5zW2l0YWddLm1fT2Zmc2V0ID0gMDsNCisgICAgICAgICAgICBzdGFydCA9IGkgKyAxOw0KKyAgICAgICAgICAgIGl0YWcgKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfRklMRVNJWkUgcG9zID0gbV9Qb3M7DQorICAgIEZYX0JZVEUgYnl0ZTsNCisgICAgR2V0Q2hhckF0KHBvcysrLCBieXRlKTsNCisgICAgRlhfSU5UMzIgZm91bmQgPSAtMTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudGFnczsgaSArKykgew0KKyAgICAgICAgICAgIGlmIChwUGF0dGVybnNbaV0ubV9wVGFnW3BQYXR0ZXJuc1tpXS5tX09mZnNldF0gPT0gYnl0ZSkgew0KKyAgICAgICAgICAgICAgICBwUGF0dGVybnNbaV0ubV9PZmZzZXQgKys7DQorICAgICAgICAgICAgICAgIGlmIChwUGF0dGVybnNbaV0ubV9PZmZzZXQgPT0gcFBhdHRlcm5zW2ldLm1fTGVuKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoIWJXaG9sZVdvcmQgfHwgSXNXaG9sZVdvcmQocG9zIC0gcFBhdHRlcm5zW2ldLm1fTGVuLCBsaW1pdCwgcFBhdHRlcm5zW2ldLm1fcFRhZywgcFBhdHRlcm5zW2ldLm1fTGVuKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gaTsNCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBQYXR0ZXJuc1tpXS5tX3BUYWdbMF0gPT0gYnl0ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUGF0dGVybnNbaV0ubV9PZmZzZXQgPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBQYXR0ZXJuc1tpXS5tX09mZnNldCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYgKHBQYXR0ZXJuc1tpXS5tX3BUYWdbMF0gPT0gYnl0ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgcFBhdHRlcm5zW2ldLm1fT2Zmc2V0ID0gMTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHBQYXR0ZXJuc1tpXS5tX09mZnNldCA9IDA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAobGltaXQgJiYgcG9zID49IG1fUG9zICsgbGltaXQpIHsNCisgICAgICAgICAgICBnb3RvIGVuZDsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghR2V0Q2hhckF0KHBvcywgYnl0ZSkpIHsNCisgICAgICAgICAgICBnb3RvIGVuZDsNCisgICAgICAgIH0NCisgICAgICAgIHBvcyArKzsNCisgICAgfQ0KK2VuZDoNCisgICAgRlhfRnJlZShwUGF0dGVybnMpOw0KKyAgICByZXR1cm4gZm91bmQ7DQorfQ0KK0ZYX0ZJTEVTSVpFIENQREZfU3ludGF4UGFyc2VyOjpGaW5kVGFnKEZYX0JTVFIgdGFnLCBGWF9GSUxFU0laRSBsaW1pdCkNCit7DQorICAgIEZYX0lOVDMyIHRhZ2xlbiA9IHRhZy5HZXRMZW5ndGgoKTsNCisgICAgRlhfSU5UMzIgbWF0Y2ggPSAwOw0KKyAgICBsaW1pdCArPSBtX1BvczsNCisgICAgRlhfRklMRVNJWkUgc3RhcnRwb3MgPSBtX1BvczsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIEZYX0JZVEUgY2g7DQorICAgICAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjaCA9PSB0YWdbbWF0Y2hdKSB7DQorICAgICAgICAgICAgbWF0Y2ggKys7DQorICAgICAgICAgICAgaWYgKG1hdGNoID09IHRhZ2xlbikgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gbV9Qb3MgLSBzdGFydHBvcyAtIHRhZ2xlbjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1hdGNoID0gY2ggPT0gdGFnWzBdID8gMSA6IDA7DQorICAgICAgICB9DQorICAgICAgICBpZiAobGltaXQgJiYgbV9Qb3MgPT0gbGltaXQpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIC0xOw0KK30NCit2b2lkIENQREZfU3ludGF4UGFyc2VyOjpHZXRCaW5hcnkoRlhfQllURSogYnVmZmVyLCBGWF9EV09SRCBzaXplKQ0KK3sNCisgICAgRlhfRFdPUkQgb2Zmc2V0ID0gMDsNCisgICAgRlhfQllURSBjaDsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGlmICghR2V0TmV4dENoYXIoY2gpKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgYnVmZmVyW29mZnNldCsrXSA9IGNoOw0KKyAgICAgICAgaWYgKG9mZnNldCA9PSBzaXplKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ1BERl9EYXRhQXZhaWw6OkNQREZfRGF0YUF2YWlsKElGWF9GaWxlQXZhaWwqIHBGaWxlQXZhaWwsIElGWF9GaWxlUmVhZCogcEZpbGVSZWFkKQ0KK3sNCisgICAgbV9wRmlsZUF2YWlsID0gcEZpbGVBdmFpbDsNCisgICAgbV9wRmlsZVJlYWQgPSBwRmlsZVJlYWQ7DQorICAgIG1fUG9zID0gMDsNCisgICAgbV9kd0ZpbGVMZW4gPSAwOw0KKyAgICBpZiAobV9wRmlsZVJlYWQpIHsNCisgICAgICAgIG1fZHdGaWxlTGVuID0gKEZYX0RXT1JEKW1fcEZpbGVSZWFkLT5HZXRTaXplKCk7DQorICAgIH0NCisgICAgbV9kd0N1cnJlbnRPZmZzZXQgPSAwOw0KKyAgICBtX1dvcmRTaXplID0gMDsNCisgICAgbV9kd1hSZWZPZmZzZXQgPSAwOw0KKyAgICBtX2J1ZmZlck9mZnNldCA9IDA7DQorICAgIG1fZHdGaXJzdFBhZ2VObyA9IDA7DQorICAgIG1fYnVmZmVyU2l6ZSA9IDA7DQorICAgIG1fUGFnZXNPYmpOdW0gPSAwOw0KKyAgICBtX2R3Q3VycmVudFhSZWZTdGVhbSA9IDA7DQorICAgIG1fZHdBY3JvRm9ybU9iak51bSA9IDA7DQorICAgIG1fZHdJbmZvT2JqTnVtID0gMDsNCisgICAgbV9wRG9jdW1lbnQgPSAwOw0KKyAgICBtX2R3RW5jcnlwdE9iak51bSA9IDA7DQorICAgIG1fZHdQcmV2WFJlZk9mZnNldCA9IDA7DQorICAgIG1fZHdMYXN0WFJlZk9mZnNldCA9IDA7DQorICAgIG1fYkRvY0F2YWlsID0gRkFMU0U7DQorICAgIG1fYk1haW5YUmVmTG9hZCA9IEZBTFNFOw0KKyAgICBtX2JEb2NBdmFpbCA9IEZBTFNFOw0KKyAgICBtX2JMaW5lYXJpemVkID0gRkFMU0U7DQorICAgIG1fYlBhZ2VzTG9hZCA9IEZBTFNFOw0KKyAgICBtX2JQYWdlc1RyZWVMb2FkID0gRkFMU0U7DQorICAgIG1fYk1haW5YUmVmTG9hZGVkT0sgPSBGQUxTRTsNCisgICAgbV9iQW5ub3RzTG9hZCA9IEZBTFNFOw0KKyAgICBtX2JIYXZlQWNyb0Zvcm0gPSBGQUxTRTsNCisgICAgbV9iQWNyb0Zvcm1Mb2FkID0gRkFMU0U7DQorICAgIG1fYlBhZ2VMb2FkZWRPSyA9IEZBTFNFOw0KKyAgICBtX2JOZWVkRG93bkxvYWRSZXNvdXJjZSA9IEZBTFNFOw0KKyAgICBtX2JMaW5lYXJpemVkRm9ybVBhcmFtTG9hZCA9IEZBTFNFOw0KKyAgICBtX3BMaW5lYXJpemVkID0gTlVMTDsNCisgICAgbV9wUm9vdCA9IE5VTEw7DQorICAgIG1fcFRyYWlsZXIgPSBOVUxMOw0KKyAgICBtX3BDdXJyZW50UGFyc2VyID0gTlVMTDsNCisgICAgbV9wQWNyb0Zvcm0gPSBOVUxMOw0KKyAgICBtX3BQYWdlRGljdCA9IE5VTEw7DQorICAgIG1fcFBhZ2VSZXNvdXJjZSA9IE5VTEw7DQorICAgIG1fcGFnZU1hcENoZWNrU3RhdGUgPSBOVUxMOw0KKyAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfSEVBREVSOw0KKyAgICBtX3BhcnNlci5tX2JPd25GaWxlUmVhZCA9IEZBTFNFOw0KKyAgICBtX2JUb3RhbExvYWRQYWdlVHJlZSA9IEZBTFNFOw0KKyAgICBtX2JDdXJQYWdlRGljdExvYWRPSyA9IEZBTFNFOw0KKyAgICBtX2JMaW5lYXJlZERhdGFPSyA9IEZBTFNFOw0KKyAgICBtX3BhZ2VzTG9hZFN0YXRlID0gTlVMTDsNCit9DQorQ1BERl9EYXRhQXZhaWw6On5DUERGX0RhdGFBdmFpbCgpDQorew0KKyAgICBpZiAobV9wTGluZWFyaXplZCkJew0KKyAgICAgICAgbV9wTGluZWFyaXplZC0+UmVsZWFzZSgpOw0KKyAgICB9DQorICAgIGlmIChtX3BSb290KSB7DQorICAgICAgICBtX3BSb290LT5SZWxlYXNlKCk7DQorICAgIH0NCisgICAgaWYgKG1fcFRyYWlsZXIpIHsNCisgICAgICAgIG1fcFRyYWlsZXItPlJlbGVhc2UoKTsNCisgICAgfQ0KKyAgICBpZiAobV9wYWdlTWFwQ2hlY2tTdGF0ZSkgew0KKyAgICAgICAgZGVsZXRlIG1fcGFnZU1hcENoZWNrU3RhdGU7DQorICAgIH0NCisgICAgaWYgKG1fcGFnZXNMb2FkU3RhdGUpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BhZ2VzTG9hZFN0YXRlOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIGkgPSAwOw0KKyAgICBGWF9JTlQzMiBpU2l6ZSA9IG1fYXJyYXlBY3JvZm9ybXMuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgaVNpemU7ICsraSkgew0KKyAgICAgICAgKChDUERGX09iamVjdCAqKW1fYXJyYXlBY3JvZm9ybXMuR2V0QXQoaSkpLT5SZWxlYXNlKCk7DQorICAgIH0NCit9DQordm9pZCBDUERGX0RhdGFBdmFpbDo6U2V0RG9jdW1lbnQoQ1BERl9Eb2N1bWVudCogcERvYykNCit7DQorICAgIG1fcERvY3VtZW50ID0gcERvYzsNCit9DQorRlhfRFdPUkQgQ1BERl9EYXRhQXZhaWw6OkdldE9iamVjdFNpemUoRlhfRFdPUkQgb2JqbnVtLCBGWF9GSUxFU0laRSYgb2Zmc2V0KQ0KK3sNCisgICAgQ1BERl9QYXJzZXIgKnBQYXJzZXIgPSAoQ1BERl9QYXJzZXIgKikobV9wRG9jdW1lbnQtPkdldFBhcnNlcigpKTsNCisgICAgaWYgKHBQYXJzZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKG9iam51bSA+PSAoRlhfRFdPUkQpcFBhcnNlci0+bV9Dcm9zc1JlZi5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChwUGFyc2VyLT5tX1Y1VHlwZVtvYmpudW1dID09IDIpIHsNCisgICAgICAgIG9iam51bSA9IChGWF9EV09SRClwUGFyc2VyLT5tX0Nyb3NzUmVmW29iam51bV07DQorICAgIH0NCisgICAgaWYgKHBQYXJzZXItPm1fVjVUeXBlW29iam51bV0gPT0gMSB8fCBwUGFyc2VyLT5tX1Y1VHlwZVtvYmpudW1dID09IDI1NSkgew0KKyAgICAgICAgb2Zmc2V0ID0gcFBhcnNlci0+bV9Dcm9zc1JlZltvYmpudW1dOw0KKyAgICAgICAgaWYgKG9mZnNldCA9PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICBGWF9MUFZPSUQgcFJlc3VsdCA9IEZYU1lTX2JzZWFyY2goJm9mZnNldCwgcFBhcnNlci0+bV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpLCBwUGFyc2VyLT5tX1NvcnRlZE9mZnNldC5HZXRTaXplKCksIHNpemVvZihGWF9GSUxFU0laRSksIF9Db21wYXJlRmlsZVNpemUpOw0KKyAgICAgICAgaWYgKHBSZXN1bHQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKChGWF9GSUxFU0laRSopcFJlc3VsdCAtIChGWF9GSUxFU0laRSopcFBhcnNlci0+bV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpID09IHBQYXJzZXItPm1fU29ydGVkT2Zmc2V0LkdldFNpemUoKSAtIDEpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAoRlhfRFdPUkQpKCgoRlhfRklMRVNJWkUqKXBSZXN1bHQpWzFdIC0gb2Zmc2V0KTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6SXNPYmplY3RzQXZhaWwoQ0ZYX1B0ckFycmF5JiBvYmpfYXJyYXksIEZYX0JPT0wgYlBhcnNlUGFnZSwgSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cywgQ0ZYX1B0ckFycmF5ICZyZXRfYXJyYXkpDQorew0KKyAgICBpZiAoIW9ial9hcnJheS5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGNvdW50ID0gMDsNCisgICAgQ0ZYX1B0ckFycmF5IG5ld19vYmpfYXJyYXk7DQorICAgIEZYX0lOVDMyIGkgPSAwOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgb2JqX2FycmF5LkdldFNpemUoKTsgaSsrKSB7DQorICAgICAgICBDUERGX09iamVjdCAqcE9iaiA9IChDUERGX09iamVjdCAqKW9ial9hcnJheVtpXTsNCisgICAgICAgIGlmICghcE9iaikgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfSU5UMzIgdHlwZSA9IHBPYmotPkdldFR5cGUoKTsNCisgICAgICAgIHN3aXRjaCAodHlwZSkgew0KKyAgICAgICAgICAgIGNhc2UgUERGT0JKX0FSUkFZOiB7DQorICAgICAgICAgICAgICAgICAgICBDUERGX0FycmF5ICpwQXJyYXkgPSBwT2JqLT5HZXRBcnJheSgpOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChGWF9EV09SRCBrID0gMDsgayA8IHBBcnJheS0+R2V0Q291bnQoKTsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3X29ial9hcnJheS5BZGQocEFycmF5LT5HZXRFbGVtZW50KGspKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIFBERk9CSl9TVFJFQU06DQorICAgICAgICAgICAgICAgIHBPYmogPSBwT2JqLT5HZXREaWN0KCk7DQorICAgICAgICAgICAgY2FzZSBQREZPQkpfRElDVElPTkFSWTogew0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICpwRGljdCA9IHBPYmotPkdldERpY3QoKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwRGljdC0+R2V0U3RyaW5nKCJUeXBlIikgPT0gIlBhZ2UiICYmICFiUGFyc2VQYWdlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBGWF9QT1NJVElPTiBwb3MgPSBwRGljdC0+R2V0U3RhcnRQb3MoKTsNCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBDUERGX09iamVjdCAqdmFsdWU7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcga2V5Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcERpY3QtPkdldE5leHRFbGVtZW50KHBvcywga2V5KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9ICJQYXJlbnQiKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19vYmpfYXJyYXkuQWRkKHZhbHVlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBQREZPQkpfUkVGRVJFTkNFOiB7DQorICAgICAgICAgICAgICAgICAgICBDUERGX1JlZmVyZW5jZSAqcFJlZiA9IChDUERGX1JlZmVyZW5jZSopcE9iajsNCisgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGR3TnVtID0gcFJlZi0+R2V0UmVmT2JqTnVtKCk7DQorICAgICAgICAgICAgICAgICAgICBGWF9GSUxFU0laRSBvZmZzZXQ7DQorICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBzaXplID0gR2V0T2JqZWN0U2l6ZShwUmVmLT5HZXRSZWZPYmpOdW0oKSwgb2Zmc2V0KTsNCisgICAgICAgICAgICAgICAgICAgIGlmICghc2l6ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IChGWF9EV09SRCkoKEZYX0ZJTEVTSVpFKShvZmZzZXQgKyBzaXplICsgNTEyKSA+IG1fZHdGaWxlTGVuID8gbV9kd0ZpbGVMZW4gLSBvZmZzZXQgOiBzaXplICsgNTEyKTsNCisgICAgICAgICAgICAgICAgICAgIGlmICghbV9wRmlsZUF2YWlsLT5Jc0RhdGFBdmFpbChvZmZzZXQsIHNpemUpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcEhpbnRzLT5BZGRTZWdtZW50KG9mZnNldCwgc2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0X2FycmF5LkFkZChwT2JqKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbV9vYmpudW1fYXJyYXkuRmluZChkd051bSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX29iam51bV9hcnJheS5BZGRPYmpOdW0oZHdOdW0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0ICpwUmVmZXJyZWQgPSBtX3BEb2N1bWVudC0+R2V0SW5kaXJlY3RPYmplY3QocFJlZi0+R2V0UmVmT2JqTnVtKCksIE5VTEwpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwUmVmZXJyZWQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X29ial9hcnJheS5BZGQocFJlZmVycmVkKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGNvdW50ID4gMCkgew0KKyAgICAgICAgRlhfSU5UMzIgaVNpemUgPSBuZXdfb2JqX2FycmF5LkdldFNpemUoKTsNCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpU2l6ZTsgKytpKSB7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QgKnBPYmogPSAoQ1BERl9PYmplY3QgKiluZXdfb2JqX2FycmF5W2ldOw0KKyAgICAgICAgICAgIEZYX0lOVDMyIHR5cGUgPSBwT2JqLT5HZXRUeXBlKCk7DQorICAgICAgICAgICAgaWYgKHR5cGUgPT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgICAgICAgICBDUERGX1JlZmVyZW5jZSAqcFJlZiA9IChDUERGX1JlZmVyZW5jZSAqKXBPYmo7DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIGR3TnVtID0gcFJlZi0+R2V0UmVmT2JqTnVtKCk7DQorICAgICAgICAgICAgICAgIGlmICghbV9vYmpudW1fYXJyYXkuRmluZChkd051bSkpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldF9hcnJheS5BZGQocE9iaik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICByZXRfYXJyYXkuQWRkKHBPYmopOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBvYmpfYXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgIG9ial9hcnJheS5BcHBlbmQobmV3X29ial9hcnJheSk7DQorICAgIHJldHVybiBJc09iamVjdHNBdmFpbChvYmpfYXJyYXksIEZBTFNFLCBwSGludHMsIHJldF9hcnJheSk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OklzRG9jQXZhaWwoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIGlmICghbV9kd0ZpbGVMZW4gJiYgbV9wRmlsZVJlYWQpIHsNCisgICAgICAgIG1fZHdGaWxlTGVuID0gKEZYX0RXT1JEKW1fcEZpbGVSZWFkLT5HZXRTaXplKCk7DQorICAgICAgICBpZiAoIW1fZHdGaWxlTGVuKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgd2hpbGUgKCFtX2JEb2NBdmFpbCkgew0KKyAgICAgICAgaWYgKCFDaGVja0RvY1N0YXR1cyhwSGludHMpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfRGF0YUF2YWlsOjpDaGVja0Fjcm9Gb3JtU3ViT2JqZWN0KElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpDQorew0KKyAgICBpZiAoIW1fb2Jqc19hcnJheS5HZXRTaXplKCkpIHsNCisgICAgICAgIG1fb2Jqc19hcnJheS5SZW1vdmVBbGwoKTsNCisgICAgICAgIG1fb2JqbnVtX2FycmF5LlJlbW92ZUFsbCgpOw0KKyAgICAgICAgQ0ZYX1B0ckFycmF5IG9ial9hcnJheTsNCisgICAgICAgIG9ial9hcnJheS5BcHBlbmQobV9hcnJheUFjcm9mb3Jtcyk7DQorICAgICAgICBGWF9CT09MIGJSZXQgPSBJc09iamVjdHNBdmFpbChvYmpfYXJyYXksIEZBTFNFLCBwSGludHMsIG1fb2Jqc19hcnJheSk7DQorICAgICAgICBpZiAoYlJldCkgew0KKyAgICAgICAgICAgIG1fb2Jqc19hcnJheS5SZW1vdmVBbGwoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBiUmV0Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ0ZYX1B0ckFycmF5IG5ld19vYmpzX2FycmF5Ow0KKyAgICAgICAgRlhfQk9PTCBiUmV0ID0gSXNPYmplY3RzQXZhaWwobV9vYmpzX2FycmF5LCBGQUxTRSwgcEhpbnRzLCBuZXdfb2Jqc19hcnJheSk7DQorICAgICAgICBpZiAoYlJldCkgew0KKyAgICAgICAgICAgIEZYX0lOVDMyIGlTaXplID0gbV9hcnJheUFjcm9mb3Jtcy5HZXRTaXplKCk7DQorICAgICAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gMDsgaSA8IGlTaXplOyArK2kpIHsNCisgICAgICAgICAgICAgICAgKChDUERGX09iamVjdCAqKW1fYXJyYXlBY3JvZm9ybXMuR2V0QXQoaSkpLT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fYXJyYXlBY3JvZm9ybXMuUmVtb3ZlQWxsKCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fb2Jqc19hcnJheS5SZW1vdmVBbGwoKTsNCisgICAgICAgICAgICBtX29ianNfYXJyYXkuQXBwZW5kKG5ld19vYmpzX2FycmF5KTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBiUmV0Ow0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkNoZWNrQWNyb0Zvcm0oSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIEZYX0JPT0wgYkV4aXN0ID0gRkFMU0U7DQorICAgIG1fcEFjcm9Gb3JtID0gR2V0T2JqZWN0KG1fZHdBY3JvRm9ybU9iak51bSwgcEhpbnRzLCAmYkV4aXN0KTsNCisgICAgaWYgKCFiRXhpc3QpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9QQUdFVFJFRTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmICghbV9wQWNyb0Zvcm0pIHsNCisgICAgICAgIGlmIChtX2RvY1N0YXR1cyA9PSBQREZfREFUQUFWQUlMX0VSUk9SKSB7DQorICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0xPQURBTExGSUxFOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fYXJyYXlBY3JvZm9ybXMuQWRkKG1fcEFjcm9Gb3JtKTsNCisgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX1BBR0VUUkVFOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6Q2hlY2tEb2NTdGF0dXMoSUZYX0Rvd25sb2FkSGludHMgKnBIaW50cykNCit7DQorICAgIHN3aXRjaCAobV9kb2NTdGF0dXMpIHsNCisgICAgICAgIGNhc2UgUERGX0RBVEFBVkFJTF9IRUFERVI6DQorICAgICAgICAgICAgcmV0dXJuIENoZWNrSGVhZGVyKHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfRklSU1RQQUdFOg0KKyAgICAgICAgY2FzZSBQREZfREFUQUFWQUlMX0ZJUlNUUEFHRV9QUkVQQVJFOg0KKyAgICAgICAgICAgIHJldHVybiBDaGVja0ZpcnN0UGFnZShwSGludHMpOw0KKyAgICAgICAgY2FzZSBQREZfREFUQUFWQUlMX0VORDoNCisgICAgICAgICAgICByZXR1cm4gQ2hlY2tFbmQocEhpbnRzKTsNCisgICAgICAgIGNhc2UgUERGX0RBVEFBVkFJTF9DUk9TU1JFRjoNCisgICAgICAgICAgICByZXR1cm4gQ2hlY2tDcm9zc1JlZihwSGludHMpOw0KKyAgICAgICAgY2FzZSBQREZfREFUQUFWQUlMX0NST1NTUkVGX0lURU06DQorICAgICAgICAgICAgcmV0dXJuIENoZWNrQ3Jvc3NSZWZJdGVtKHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfQ1JPU1NSRUZfU1RSRUFNOg0KKyAgICAgICAgICAgIHJldHVybiBDaGVja0FsbENyb3NzUmVmU3RyZWFtKHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfVFJBSUxFUjoNCisgICAgICAgICAgICByZXR1cm4gQ2hlY2tUcmFpbGVyKHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfVFJBSUxFUl9BUFBFTkQ6DQorICAgICAgICAgICAgcmV0dXJuIENoZWNrVHJhaWxlckFwcGVuZChwSGludHMpOw0KKyAgICAgICAgY2FzZSBQREZfREFUQUFWQUlMX0xPQURBTExDUlNPU1NSRUY6DQorICAgICAgICAgICAgcmV0dXJuIExvYWRBbGxYcmVmKHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfTE9BREFMTEZJTEU6DQorICAgICAgICAgICAgcmV0dXJuIExvYWRBbGxGaWxlKHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfUk9PVDoNCisgICAgICAgICAgICByZXR1cm4gQ2hlY2tSb290KHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfSU5GTzoNCisgICAgICAgICAgICByZXR1cm4gQ2hlY2tJbmZvKHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfQUNST0ZPUk06DQorICAgICAgICAgICAgcmV0dXJuIENoZWNrQWNyb0Zvcm0ocEhpbnRzKTsNCisgICAgICAgIGNhc2UgUERGX0RBVEFBVkFJTF9QQUdFVFJFRToNCisgICAgICAgICAgICBpZiAobV9iVG90YWxMb2FkUGFnZVRyZWUpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIENoZWNrUGFnZXMocEhpbnRzKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICByZXR1cm4gTG9hZERvY1BhZ2VzKHBIaW50cyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBQREZfREFUQUFWQUlMX1BBR0U6DQorICAgICAgICAgICAgaWYgKG1fYlRvdGFsTG9hZFBhZ2VUcmVlKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBDaGVja1BhZ2UocEhpbnRzKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfUEFHRV9MQVRFUkxPQUQ7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGX0RBVEFBVkFJTF9FUlJPUjoNCisgICAgICAgICAgICByZXR1cm4gTG9hZEFsbEZpbGUocEhpbnRzKTsNCisgICAgICAgIGNhc2UgUERGX0RBVEFBVkFJTF9QQUdFX0xBVEVSTE9BRDoNCisgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfUEFHRTsNCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgbV9iRG9jQXZhaWwgPSBUUlVFOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wJQ1BERl9EYXRhQXZhaWw6OkNoZWNrUGFnZVN0YXR1cyhJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgc3dpdGNoIChtX2RvY1N0YXR1cykgew0KKyAgICAgICAgY2FzZSBQREZfREFUQUFWQUlMX1BBR0VUUkVFOg0KKyAgICAgICAgICAgIHJldHVybiBDaGVja1BhZ2VzKHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfUEFHRToNCisgICAgICAgICAgICByZXR1cm4gQ2hlY2tQYWdlKHBIaW50cyk7DQorICAgICAgICBjYXNlIFBERl9EQVRBQVZBSUxfRVJST1I6DQorICAgICAgICAgICAgcmV0dXJuIExvYWRBbGxGaWxlKHBIaW50cyk7DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIG1fYlBhZ2VzVHJlZUxvYWQgPSBUUlVFOw0KKyAgICAgICAgICAgIG1fYlBhZ2VzTG9hZCA9IFRSVUU7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6TG9hZEFsbEZpbGUoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIGlmIChtX3BGaWxlQXZhaWwtPklzRGF0YUF2YWlsKDAsIChGWF9EV09SRCltX2R3RmlsZUxlbikpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9ET05FOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcEhpbnRzLT5BZGRTZWdtZW50KDAsIChGWF9EV09SRCltX2R3RmlsZUxlbik7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6TG9hZEFsbFhyZWYoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIG1fcGFyc2VyLm1fU3ludGF4LkluaXRQYXJzZXIobV9wRmlsZVJlYWQsIChGWF9EV09SRCltX2R3SGVhZGVyT2Zmc2V0KTsNCisgICAgbV9wYXJzZXIubV9iT3duRmlsZVJlYWQgPSBGQUxTRTsNCisgICAgaWYgKCFtX3BhcnNlci5Mb2FkQWxsQ3Jvc3NSZWZWNChtX2R3TGFzdFhSZWZPZmZzZXQpICYmICFtX3BhcnNlci5Mb2FkQWxsQ3Jvc3NSZWZWNShtX2R3TGFzdFhSZWZPZmZzZXQpKSB7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfTE9BREFMTEZJTEU7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhTWVNfcXNvcnQobV9wYXJzZXIubV9Tb3J0ZWRPZmZzZXQuR2V0RGF0YSgpLCBtX3BhcnNlci5tX1NvcnRlZE9mZnNldC5HZXRTaXplKCksIHNpemVvZihGWF9GSUxFU0laRSksIF9Db21wYXJlRmlsZVNpemUpOw0KKyAgICBtX2R3Um9vdE9iak51bSA9IG1fcGFyc2VyLkdldFJvb3RPYmpOdW0oKTsNCisgICAgbV9kd0luZm9PYmpOdW0gPSBtX3BhcnNlci5HZXRJbmZvT2JqTnVtKCk7DQorICAgIG1fcEN1cnJlbnRQYXJzZXIgPSAmbV9wYXJzZXI7DQorICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9ST09UOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ1BERl9PYmplY3QqIENQREZfRGF0YUF2YWlsOjpHZXRPYmplY3QoRlhfRFdPUkQgb2JqbnVtLCBJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzLCBGWF9CT09MICpwRXhpc3RJbkZpbGUpDQorew0KKyAgICBDUERGX09iamVjdCAqcFJldCA9IE5VTEw7DQorICAgIGlmIChwRXhpc3RJbkZpbGUpIHsNCisgICAgICAgICpwRXhpc3RJbkZpbGUgPSBUUlVFOw0KKyAgICB9DQorICAgIGlmIChtX3BEb2N1bWVudCA9PSBOVUxMKSB7DQorICAgICAgICBGWF9GSUxFU0laRSBvZmZzZXQgPSBtX3BhcnNlci5HZXRPYmplY3RPZmZzZXQob2JqbnVtKTsNCisgICAgICAgIGlmIChvZmZzZXQgPCAwKSB7DQorICAgICAgICAgICAgKnBFeGlzdEluRmlsZSA9IEZBTFNFOw0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgc2l6ZSA9IChGWF9EV09SRCltX3BhcnNlci5HZXRPYmplY3RTaXplKG9iam51bSk7DQorICAgICAgICBzaXplID0gKEZYX0RXT1JEKSgoKEZYX0ZJTEVTSVpFKShvZmZzZXQgKyBzaXplICsgNTEyKSkgPiBtX2R3RmlsZUxlbiA/IG1fZHdGaWxlTGVuIC0gb2Zmc2V0IDogc2l6ZSArIDUxMik7DQorICAgICAgICBpZiAoIW1fcEZpbGVBdmFpbC0+SXNEYXRhQXZhaWwob2Zmc2V0LCBzaXplKSkgew0KKyAgICAgICAgICAgIHBIaW50cy0+QWRkU2VnbWVudChvZmZzZXQsIHNpemUpOw0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFJldCA9IG1fcGFyc2VyLlBhcnNlSW5kaXJlY3RPYmplY3QoTlVMTCwgb2JqbnVtKTsNCisgICAgICAgIGlmICghcFJldCAmJiBwRXhpc3RJbkZpbGUpIHsNCisgICAgICAgICAgICAqcEV4aXN0SW5GaWxlID0gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gcFJldDsNCisgICAgfQ0KKyAgICBGWF9GSUxFU0laRSBvZmZzZXQ7DQorICAgIEZYX0RXT1JEIHNpemUgPSBHZXRPYmplY3RTaXplKG9iam51bSwgb2Zmc2V0KTsNCisgICAgc2l6ZSA9IChGWF9EV09SRCkoKEZYX0ZJTEVTSVpFKShvZmZzZXQgKyBzaXplICsgNTEyKSA+IG1fZHdGaWxlTGVuID8gbV9kd0ZpbGVMZW4gLSBvZmZzZXQgOiBzaXplICsgNTEyKTsNCisgICAgaWYgKCFtX3BGaWxlQXZhaWwtPklzRGF0YUF2YWlsKG9mZnNldCwgc2l6ZSkpIHsNCisgICAgICAgIHBIaW50cy0+QWRkU2VnbWVudChvZmZzZXQsIHNpemUpOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9QYXJzZXIgKnBQYXJzZXIgPSAoQ1BERl9QYXJzZXIgKikobV9wRG9jdW1lbnQtPkdldFBhcnNlcigpKTsNCisgICAgcFJldCA9IHBQYXJzZXItPlBhcnNlSW5kaXJlY3RPYmplY3QoTlVMTCwgb2JqbnVtLCBOVUxMKTsNCisgICAgaWYgKCFwUmV0ICYmIHBFeGlzdEluRmlsZSkgew0KKyAgICAgICAgKnBFeGlzdEluRmlsZSA9IEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBwUmV0Ow0KK30NCitGWF9CT09MIENQREZfRGF0YUF2YWlsOjpDaGVja0luZm8oSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIEZYX0JPT0wgYkV4aXN0ID0gRkFMU0U7DQorICAgIENQREZfT2JqZWN0ICpwSW5mbyA9IEdldE9iamVjdChtX2R3SW5mb09iak51bSwgcEhpbnRzLCAmYkV4aXN0KTsNCisgICAgaWYgKCFiRXhpc3QpIHsNCisgICAgICAgIGlmIChtX2JIYXZlQWNyb0Zvcm0pIHsNCisgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfQUNST0ZPUk07DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9QQUdFVFJFRTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmICghcEluZm8pIHsNCisgICAgICAgIGlmIChtX2RvY1N0YXR1cyA9PSBQREZfREFUQUFWQUlMX0VSUk9SKSB7DQorICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0xPQURBTExGSUxFOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fUG9zID09IG1fZHdGaWxlTGVuKSB7DQorICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChwSW5mbykgew0KKyAgICAgICAgcEluZm8tPlJlbGVhc2UoKTsNCisgICAgfQ0KKyAgICBpZiAobV9iSGF2ZUFjcm9Gb3JtKSB7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfQUNST0ZPUk07DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfUEFHRVRSRUU7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkNoZWNrUm9vdChJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgRlhfQk9PTCBiRXhpc3QgPSBGQUxTRTsNCisgICAgbV9wUm9vdCA9IEdldE9iamVjdChtX2R3Um9vdE9iak51bSwgcEhpbnRzLCAmYkV4aXN0KTsNCisgICAgaWYgKCFiRXhpc3QpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9MT0FEQUxMRklMRTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmICghbV9wUm9vdCkgew0KKyAgICAgICAgaWYgKG1fZG9jU3RhdHVzID09IFBERl9EQVRBQVZBSUxfRVJST1IpIHsNCisgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfTE9BREFMTEZJTEU7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9SZWZlcmVuY2UqIHBSZWYgPSAoQ1BERl9SZWZlcmVuY2UqKW1fcFJvb3QtPkdldERpY3QoKS0+R2V0RWxlbWVudChGWF9CU1RSQygiUGFnZXMiKSk7DQorICAgIGlmIChwUmVmID09IE5VTEwgfHwgcFJlZi0+R2V0VHlwZSgpICE9IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9FUlJPUjsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX1BhZ2VzT2JqTnVtID0gcFJlZi0+R2V0UmVmT2JqTnVtKCk7DQorICAgIENQREZfUmVmZXJlbmNlKiBwQWNyb0Zvcm1SZWYgPSAoQ1BERl9SZWZlcmVuY2UqKW1fcFJvb3QtPkdldERpY3QoKS0+R2V0RWxlbWVudChGWF9CU1RSQygiQWNyb0Zvcm0iKSk7DQorICAgIGlmIChwQWNyb0Zvcm1SZWYgJiYgcEFjcm9Gb3JtUmVmLT5HZXRUeXBlKCkgPT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgbV9iSGF2ZUFjcm9Gb3JtID0gVFJVRTsNCisgICAgICAgIG1fZHdBY3JvRm9ybU9iak51bSA9IHBBY3JvRm9ybVJlZi0+R2V0UmVmT2JqTnVtKCk7DQorICAgIH0NCisgICAgaWYgKG1fZHdJbmZvT2JqTnVtKSB7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfSU5GTzsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChtX2JIYXZlQWNyb0Zvcm0pIHsNCisgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfQUNST0ZPUk07DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9QQUdFVFJFRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6UHJlcGFyZVBhZ2VJdGVtKCkNCit7DQorICAgIENQREZfRGljdGlvbmFyeSAqcFJvb3QgPSBtX3BEb2N1bWVudC0+R2V0Um9vdCgpOw0KKyAgICBDUERGX1JlZmVyZW5jZSogcFJlZiA9IChDUERGX1JlZmVyZW5jZSopcFJvb3QtPkdldEVsZW1lbnQoRlhfQlNUUkMoIlBhZ2VzIikpOw0KKyAgICBpZiAocFJlZiA9PSBOVUxMIHx8IHBSZWYtPkdldFR5cGUoKSAhPSBQREZPQkpfUkVGRVJFTkNFKSB7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfRVJST1I7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9QYWdlc09iak51bSA9IHBSZWYtPkdldFJlZk9iak51bSgpOw0KKyAgICBtX3BDdXJyZW50UGFyc2VyID0gKENQREZfUGFyc2VyICopbV9wRG9jdW1lbnQtPkdldFBhcnNlcigpOw0KKyAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfUEFHRVRSRUU7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfRGF0YUF2YWlsOjpJc0ZpcnN0Q2hlY2soaW50IGlQYWdlKQ0KK3sNCisgICAgaWYgKE5VTEwgPT0gbV9wYWdlTWFwQ2hlY2tTdGF0ZSkgew0KKyAgICAgICAgbV9wYWdlTWFwQ2hlY2tTdGF0ZSA9IEZYX05FVyBDRlhfQ01hcERXb3JkVG9EV29yZCgpOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3VmFsdWUgPSAwOw0KKyAgICBpZiAoIW1fcGFnZU1hcENoZWNrU3RhdGUtPkxvb2t1cChpUGFnZSwgZHdWYWx1ZSkpIHsNCisgICAgICAgIG1fcGFnZU1hcENoZWNrU3RhdGUtPlNldEF0KGlQYWdlLCAxKTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmIChkd1ZhbHVlICE9IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BhZ2VNYXBDaGVja1N0YXRlLT5TZXRBdChpUGFnZSwgMSk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENQREZfRGF0YUF2YWlsOjpSZXNldEZpcnN0Q2hlY2soaW50IGlQYWdlKQ0KK3sNCisgICAgaWYgKE5VTEwgPT0gbV9wYWdlTWFwQ2hlY2tTdGF0ZSkgew0KKyAgICAgICAgbV9wYWdlTWFwQ2hlY2tTdGF0ZSA9IEZYX05FVyBDRlhfQ01hcERXb3JkVG9EV29yZCgpOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3VmFsdWUgPSAxOw0KKyAgICBpZiAoIW1fcGFnZU1hcENoZWNrU3RhdGUtPkxvb2t1cChpUGFnZSwgZHdWYWx1ZSkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BhZ2VNYXBDaGVja1N0YXRlLT5TZXRBdChpUGFnZSwgMCk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkNoZWNrUGFnZShJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgRlhfRFdPUkQgaSA9IDA7DQorICAgIEZYX0RXT1JEIGlMZW4gPSBtX1BhZ2VPYmpMaXN0LkdldFNpemUoKTsNCisgICAgQ0ZYX0RXb3JkQXJyYXkgVW5hdmFpbE9iakxpc3Q7DQorICAgIGZvciAoOyBpIDwgaUxlbjsgKytpKSB7DQorICAgICAgICBGWF9EV09SRCBkd1BhZ2VPYmpOdW0gPSBtX1BhZ2VPYmpMaXN0LkdldEF0KGkpOw0KKyAgICAgICAgRlhfQk9PTCBiRXhpc3QgPSBGQUxTRTsNCisgICAgICAgIENQREZfT2JqZWN0ICpwT2JqID0gR2V0T2JqZWN0KGR3UGFnZU9iak51bSwgcEhpbnRzLCAmYkV4aXN0KTsNCisgICAgICAgIGlmICghcE9iaikgew0KKyAgICAgICAgICAgIGlmIChiRXhpc3QpIHsNCisgICAgICAgICAgICAgICAgVW5hdmFpbE9iakxpc3QuQWRkKGR3UGFnZU9iak51bSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICBDUERGX0FycmF5ICpwQXJyYXkgPSBwT2JqLT5HZXRBcnJheSgpOw0KKyAgICAgICAgICAgIGlmIChwQXJyYXkpIHsNCisgICAgICAgICAgICAgICAgRlhfSU5UMzIgaVNpemUgPSBwQXJyYXktPkdldENvdW50KCk7DQorICAgICAgICAgICAgICAgIENQREZfT2JqZWN0ICpwSXRlbSA9IE5VTEw7DQorICAgICAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgaiA9IDA7IGogPCBpU2l6ZTsgKytqKSB7DQorICAgICAgICAgICAgICAgICAgICBwSXRlbSA9IHBBcnJheS0+R2V0RWxlbWVudChqKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwSXRlbSAmJiBwSXRlbS0+R2V0VHlwZSgpID09IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBVbmF2YWlsT2JqTGlzdC5BZGQoKChDUERGX1JlZmVyZW5jZSAqKXBJdGVtKS0+R2V0UmVmT2JqTnVtKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBPYmotPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgIHBPYmotPlJlbGVhc2UoKTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9CeXRlU3RyaW5nIHR5cGUgPSBwT2JqLT5HZXREaWN0KCktPkdldFN0cmluZyhGWF9CU1RSQygiVHlwZSIpKTsNCisgICAgICAgIGlmICh0eXBlID09IEZYX0JTVFJDKCJQYWdlcyIpKSB7DQorICAgICAgICAgICAgbV9QYWdlc0FycmF5LkFkZChwT2JqKTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIHBPYmotPlJlbGVhc2UoKTsNCisgICAgfQ0KKyAgICBtX1BhZ2VPYmpMaXN0LlJlbW92ZUFsbCgpOw0KKyAgICBpZiAoVW5hdmFpbE9iakxpc3QuR2V0U2l6ZSgpKSB7DQorICAgICAgICBtX1BhZ2VPYmpMaXN0LkFwcGVuZChVbmF2YWlsT2JqTGlzdCk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaSA9IDA7DQorICAgIGlMZW4gPSBtX1BhZ2VzQXJyYXkuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKDsgaSA8IGlMZW47ICsraSkgew0KKyAgICAgICAgQ1BERl9PYmplY3QgKnBQYWdlcyA9IChDUERGX09iamVjdCAqKW1fUGFnZXNBcnJheS5HZXRBdChpKTsNCisgICAgICAgIGlmICghcFBhZ2VzKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIUdldFBhZ2VLaWRzKG1fcEN1cnJlbnRQYXJzZXIsIHBQYWdlcykpIHsNCisgICAgICAgICAgICBwUGFnZXMtPlJlbGVhc2UoKTsNCisgICAgICAgICAgICB3aGlsZSAoaSsrIDwgaUxlbikgew0KKyAgICAgICAgICAgICAgICBwUGFnZXMgPSAoQ1BERl9PYmplY3QgKiltX1BhZ2VzQXJyYXkuR2V0QXQoaSk7DQorICAgICAgICAgICAgICAgIHBQYWdlcy0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX1BhZ2VzQXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIHBQYWdlcy0+UmVsZWFzZSgpOw0KKyAgICB9DQorICAgIG1fUGFnZXNBcnJheS5SZW1vdmVBbGwoKTsNCisgICAgaWYgKCFtX1BhZ2VPYmpMaXN0LkdldFNpemUoKSkgew0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0RPTkU7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6R2V0UGFnZUtpZHMoQ1BERl9QYXJzZXIgKnBQYXJzZXIsIENQREZfT2JqZWN0ICpwUGFnZXMpDQorew0KKyAgICBpZiAoIXBQYXJzZXIpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9FUlJPUjsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCAqcEtpZHMgPSBwUGFnZXMtPkdldERpY3QoKS0+R2V0RWxlbWVudChGWF9CU1RSQygiS2lkcyIpKTsNCisgICAgaWYgKCFwS2lkcykgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgc3dpdGNoIChwS2lkcy0+R2V0VHlwZSgpKSB7DQorICAgICAgICBjYXNlIFBERk9CSl9SRUZFUkVOQ0U6IHsNCisgICAgICAgICAgICAgICAgQ1BERl9SZWZlcmVuY2UgKnBLaWQgPSAoQ1BERl9SZWZlcmVuY2UgKilwS2lkczsNCisgICAgICAgICAgICAgICAgbV9QYWdlT2JqTGlzdC5BZGQocEtpZC0+R2V0UmVmT2JqTnVtKCkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUERGT0JKX0FSUkFZOiB7DQorICAgICAgICAgICAgICAgIENQREZfQXJyYXkgKnBLaWRzQXJyYXkgPSAoQ1BERl9BcnJheSAqKXBLaWRzOw0KKyAgICAgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcEtpZHNBcnJheS0+R2V0Q291bnQoKTsgKytpKSB7DQorICAgICAgICAgICAgICAgICAgICBDUERGX1JlZmVyZW5jZSAqcEtpZCA9IChDUERGX1JlZmVyZW5jZSAqKXBLaWRzQXJyYXktPkdldEVsZW1lbnQoaSk7DQorICAgICAgICAgICAgICAgICAgICBtX1BhZ2VPYmpMaXN0LkFkZChwS2lkLT5HZXRSZWZPYmpOdW0oKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9FUlJPUjsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkNoZWNrUGFnZXMoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIEZYX0JPT0wgYkV4aXN0ID0gRkFMU0U7DQorICAgIENQREZfT2JqZWN0ICpwUGFnZXMgPSBHZXRPYmplY3QobV9QYWdlc09iak51bSwgcEhpbnRzLCAmYkV4aXN0KTsNCisgICAgaWYgKCFiRXhpc3QpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9MT0FEQUxMRklMRTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmICghcFBhZ2VzKSB7DQorICAgICAgICBpZiAobV9kb2NTdGF0dXMgPT0gUERGX0RBVEFBVkFJTF9FUlJPUikgew0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9MT0FEQUxMRklMRTsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJOZWVkTG9hZCA9IEZBTFNFOw0KKyAgICBpZiAoIUdldFBhZ2VLaWRzKG1fcEN1cnJlbnRQYXJzZXIsIHBQYWdlcykpIHsNCisgICAgICAgIHBQYWdlcy0+UmVsZWFzZSgpOw0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHBQYWdlcy0+UmVsZWFzZSgpOw0KKyAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfUEFHRTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkNoZWNrSGVhZGVyKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpDQorew0KKyAgICBGWF9EV09SRCByZXFfc2l6ZSA9IDEwMjQ7DQorICAgIGlmICgoRlhfRklMRVNJWkUpcmVxX3NpemUgPiBtX2R3RmlsZUxlbikgew0KKyAgICAgICAgcmVxX3NpemUgPSAoRlhfRFdPUkQpbV9kd0ZpbGVMZW47DQorICAgIH0NCisgICAgaWYgKG1fcEZpbGVBdmFpbC0+SXNEYXRhQXZhaWwoMCwgcmVxX3NpemUpKSB7DQorICAgICAgICBGWF9CWVRFIGJ1ZmZlclsxMDI0XTsNCisgICAgICAgIG1fcEZpbGVSZWFkLT5SZWFkQmxvY2soYnVmZmVyLCAwLCByZXFfc2l6ZSk7DQorICAgICAgICBpZiAoSXNMaW5lYXJpemVkRmlsZShidWZmZXIsIHJlcV9zaXplKSkgew0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9GSVJTVFBBR0U7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChtX2RvY1N0YXR1cyA9PSBQREZfREFUQUFWQUlMX0VSUk9SKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VORDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHBIaW50cy0+QWRkU2VnbWVudCgwLCByZXFfc2l6ZSk7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6Q2hlY2tGaXJzdFBhZ2UoSUZYX0Rvd25sb2FkSGludHMgKnBIaW50cykNCit7DQorICAgIEZYX0RXT1JEIGR3Rmlyc3RQYWdlRW5kT2Zmc2V0ID0gMDsNCisgICAgQ1BERl9PYmplY3QgKnBFbmRPZmZTZXQgPSBtX3BMaW5lYXJpemVkLT5HZXREaWN0KCktPkdldEVsZW1lbnQoRlhfQlNUUkMoIkUiKSk7DQorICAgIGlmICghcEVuZE9mZlNldCkgew0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0ICpwWFJlZk9mZnNldCAgPSBtX3BMaW5lYXJpemVkLT5HZXREaWN0KCktPkdldEVsZW1lbnQoRlhfQlNUUkMoIlQiKSk7DQorICAgIGlmICghcFhSZWZPZmZzZXQpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9FUlJPUjsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCAqcEZpbGVMZW4gPSBtX3BMaW5lYXJpemVkLT5HZXREaWN0KCktPkdldEVsZW1lbnQoRlhfQlNUUkMoIkwiKSk7DQorICAgIGlmICghcEZpbGVMZW4pIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9FUlJPUjsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJOZWVkRG93bkxvYWQgPSBGQUxTRTsNCisgICAgaWYgKHBFbmRPZmZTZXQtPkdldFR5cGUoKSA9PSBQREZPQkpfTlVNQkVSKSB7DQorICAgICAgICBGWF9EV09SRCBkd0VuZCA9IHBFbmRPZmZTZXQtPkdldEludGVnZXIoKTsNCisgICAgICAgIGR3RW5kICs9IDUxMjsNCisgICAgICAgIGlmICgoRlhfRklMRVNJWkUpZHdFbmQgPiBtX2R3RmlsZUxlbikgew0KKyAgICAgICAgICAgIGR3RW5kID0gKEZYX0RXT1JEKW1fZHdGaWxlTGVuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfSU5UMzIgaVN0YXJ0UG9zID0gKEZYX0lOVDMyKShtX2R3RmlsZUxlbiA+IDEwMjQgPyAxMDI0IDogbV9kd0ZpbGVMZW4pOw0KKyAgICAgICAgRlhfSU5UMzIgaVNpemUgPSBkd0VuZCA+IDEwMjQgPyBkd0VuZCAtIDEwMjQgOiAwOw0KKyAgICAgICAgaWYgKCFtX3BGaWxlQXZhaWwtPklzRGF0YUF2YWlsKGlTdGFydFBvcywgaVNpemUpKSB7DQorICAgICAgICAgICAgcEhpbnRzLT5BZGRTZWdtZW50KGlTdGFydFBvcywgaVNpemUpOw0KKyAgICAgICAgICAgIGJOZWVkRG93bkxvYWQgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fZHdMYXN0WFJlZk9mZnNldCA9IDA7DQorICAgIEZYX0ZJTEVTSVpFIGR3RmlsZUxlbiA9IDA7DQorICAgIGlmIChwWFJlZk9mZnNldC0+R2V0VHlwZSgpID09IFBERk9CSl9OVU1CRVIpIHsNCisgICAgICAgIG1fZHdMYXN0WFJlZk9mZnNldCA9IHBYUmVmT2Zmc2V0LT5HZXRJbnRlZ2VyKCk7DQorICAgIH0NCisgICAgaWYgKHBGaWxlTGVuLT5HZXRUeXBlKCkgPT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgZHdGaWxlTGVuID0gcEZpbGVMZW4tPkdldEludGVnZXIoKTsNCisgICAgfQ0KKyAgICBpZiAoIW1fcEZpbGVBdmFpbC0+SXNEYXRhQXZhaWwobV9kd0xhc3RYUmVmT2Zmc2V0LCAoRlhfRFdPUkQpKGR3RmlsZUxlbiAtIG1fZHdMYXN0WFJlZk9mZnNldCkpKSB7DQorICAgICAgICBpZiAobV9kb2NTdGF0dXMgPT0gUERGX0RBVEFBVkFJTF9GSVJTVFBBR0UpCXsNCisgICAgICAgICAgICBGWF9EV09SRCBkd1NpemUgPSAoRlhfRFdPUkQpKGR3RmlsZUxlbiAtIG1fZHdMYXN0WFJlZk9mZnNldCk7DQorICAgICAgICAgICAgRlhfRklMRVNJWkUgb2Zmc2V0ID0gbV9kd0xhc3RYUmVmT2Zmc2V0Ow0KKyAgICAgICAgICAgIGlmIChkd1NpemUgPCA1MTIgJiYgZHdGaWxlTGVuID4gNTEyKSB7DQorICAgICAgICAgICAgICAgIGR3U2l6ZSA9IDUxMjsNCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gZHdGaWxlTGVuIC0gNTEyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwSGludHMtPkFkZFNlZ21lbnQob2Zmc2V0LCBkd1NpemUpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0ZJUlNUUEFHRV9QUkVQQVJFOw0KKyAgICB9DQorICAgIGlmICghYk5lZWREb3duTG9hZCAmJiBtX2RvY1N0YXR1cyA9PSBQREZfREFUQUFWQUlMX0ZJUlNUUEFHRV9QUkVQQVJFKSB7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfRE9ORTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9GSVJTVFBBR0VfUFJFUEFSRTsNCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitDUERGX09iamVjdAkqIENQREZfRGF0YUF2YWlsOjpQYXJzZUluZGlyZWN0T2JqZWN0QXQoRlhfRklMRVNJWkUgcG9zLCBGWF9EV09SRCBvYmpudW0pDQorew0KKyAgICBGWF9GSUxFU0laRSBTYXZlZFBvcyA9IG1fc3ludGF4UGFyc2VyLlNhdmVQb3MoKTsNCisgICAgbV9zeW50YXhQYXJzZXIuUmVzdG9yZVBvcyhwb3MpOw0KKyAgICBGWF9CT09MIGJJc051bWJlcjsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgd29yZCA9IG1fc3ludGF4UGFyc2VyLkdldE5leHRXb3JkKGJJc051bWJlcik7DQorICAgIGlmICghYklzTnVtYmVyKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9EV09SRCByZWFsX29iam51bSA9IEZYU1lTX2F0b2kod29yZCk7DQorICAgIGlmIChvYmpudW0gJiYgcmVhbF9vYmpudW0gIT0gb2JqbnVtKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICB3b3JkID0gbV9zeW50YXhQYXJzZXIuR2V0TmV4dFdvcmQoYklzTnVtYmVyKTsNCisgICAgaWYgKCFiSXNOdW1iZXIpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGdlbm51bSA9IEZYU1lTX2F0b2kod29yZCk7DQorICAgIGlmIChtX3N5bnRheFBhcnNlci5HZXRLZXl3b3JkKCkgIT0gRlhfQlNUUkMoIm9iaiIpKSB7DQorICAgICAgICBtX3N5bnRheFBhcnNlci5SZXN0b3JlUG9zKFNhdmVkUG9zKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gbV9zeW50YXhQYXJzZXIuR2V0T2JqZWN0KE5VTEwsIG9iam51bSwgZ2VubnVtLCAwKTsNCisgICAgbV9zeW50YXhQYXJzZXIuUmVzdG9yZVBvcyhTYXZlZFBvcyk7DQorICAgIHJldHVybiBwT2JqOw0KK30NCitGWF9JTlQzMiBDUERGX0RhdGFBdmFpbDo6SXNMaW5lYXJpemVkUERGKCkNCit7DQorICAgIEZYX0RXT1JEIHJlcV9zaXplID0gMTAyNDsNCisgICAgaWYgKCFtX3BGaWxlQXZhaWwtPklzRGF0YUF2YWlsKDAsIHJlcV9zaXplKSkgew0KKyAgICAgICAgcmV0dXJuIFBERl9VTktOT1dfTElORUFSSVpFRDsNCisgICAgfQ0KKyAgICBpZiAoIW1fcEZpbGVSZWFkKSB7DQorICAgICAgICByZXR1cm4gUERGX05PVF9MSU5FQVJJWkVEOw0KKyAgICB9DQorICAgIEZYX0ZJTEVTSVpFIGR3U2l6ZSA9IG1fcEZpbGVSZWFkLT5HZXRTaXplKCk7DQorICAgIGlmIChkd1NpemUgPCAoRlhfRklMRVNJWkUpcmVxX3NpemUpIHsNCisgICAgICAgIHJldHVybiBQREZfVU5LTk9XX0xJTkVBUklaRUQ7DQorICAgIH0NCisgICAgRlhfQllURSBidWZmZXJbMTAyNF07DQorICAgIG1fcEZpbGVSZWFkLT5SZWFkQmxvY2soYnVmZmVyLCAwLCByZXFfc2l6ZSk7DQorICAgIGlmIChJc0xpbmVhcml6ZWRGaWxlKGJ1ZmZlciwgcmVxX3NpemUpKSB7DQorICAgICAgICByZXR1cm4gUERGX0lTX0xJTkVBUklaRUQ7DQorICAgIH0NCisgICAgcmV0dXJuIFBERl9OT1RfTElORUFSSVpFRDsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6SXNMaW5lYXJpemVkRmlsZShGWF9MUEJZVEUgcERhdGEsIEZYX0RXT1JEIGR3TGVuKQ0KK3sNCisgICAgQ0ZYX1NtYXJ0UG9pbnRlcjxJRlhfRmlsZVN0cmVhbT4gZmlsZShGWF9DcmVhdGVNZW1vcnlTdHJlYW0ocERhdGEsIChzaXplX3QpZHdMZW4sIEZBTFNFKSk7DQorICAgIEZYX0lOVDMyIG9mZnNldCA9IEdldEhlYWRlck9mZnNldCgoSUZYX0ZpbGVTdHJlYW0qKWZpbGUpOw0KKyAgICBpZiAob2Zmc2V0ID09IC0xKSB7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfRVJST1I7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9kd0hlYWRlck9mZnNldCA9IG9mZnNldDsNCisgICAgbV9zeW50YXhQYXJzZXIuSW5pdFBhcnNlcigoSUZYX0ZpbGVTdHJlYW0qKWZpbGUsIG9mZnNldCk7DQorICAgIG1fc3ludGF4UGFyc2VyLlJlc3RvcmVQb3MobV9zeW50YXhQYXJzZXIubV9IZWFkZXJPZmZzZXQgKyA5KTsNCisgICAgRlhfQk9PTCBiTnVtYmVyID0gRkFMU0U7DQorICAgIEZYX0ZJTEVTSVpFIGR3U2F2ZVBvcyA9IG1fc3ludGF4UGFyc2VyLlNhdmVQb3MoKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgd29yZE9iak51bSA9IG1fc3ludGF4UGFyc2VyLkdldE5leHRXb3JkKGJOdW1iZXIpOw0KKyAgICBpZiAoIWJOdW1iZXIpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBvYmpudW0gPSBGWFNZU19hdG9pKHdvcmRPYmpOdW0pOw0KKyAgICBpZiAobV9wTGluZWFyaXplZCkgew0KKyAgICAgICAgbV9wTGluZWFyaXplZC0+UmVsZWFzZSgpOw0KKyAgICAgICAgbV9wTGluZWFyaXplZCA9IE5VTEw7DQorICAgIH0NCisgICAgbV9wTGluZWFyaXplZCA9IFBhcnNlSW5kaXJlY3RPYmplY3RBdChtX3N5bnRheFBhcnNlci5tX0hlYWRlck9mZnNldCArIDksIG9iam51bSk7DQorICAgIGlmICghbV9wTGluZWFyaXplZCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX3BMaW5lYXJpemVkLT5HZXREaWN0KCktPkdldEVsZW1lbnQoRlhfQlNUUkMoIkxpbmVhcml6ZWQiKSkpIHsNCisgICAgICAgIENQREZfT2JqZWN0ICpwTGVuID0gbV9wTGluZWFyaXplZC0+R2V0RGljdCgpLT5HZXRFbGVtZW50KEZYX0JTVFJDKCJMIikpOw0KKyAgICAgICAgaWYgKCFwTGVuKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKChGWF9GSUxFU0laRSlwTGVuLT5HZXRJbnRlZ2VyKCkgIT0gbV9wRmlsZVJlYWQtPkdldFNpemUoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIG1fYkxpbmVhcml6ZWQgPSBUUlVFOw0KKyAgICAgICAgQ1BERl9PYmplY3QgKnBObyA9IG1fcExpbmVhcml6ZWQtPkdldERpY3QoKS0+R2V0RWxlbWVudChGWF9CU1RSQygiUCIpKTsNCisgICAgICAgIGlmIChwTm8gJiYgcE5vLT5HZXRUeXBlKCkgPT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgICAgIG1fZHdGaXJzdFBhZ2VObyA9IHBOby0+R2V0SW50ZWdlcigpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MIENQREZfRGF0YUF2YWlsOjpDaGVja0VuZChJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgRlhfRFdPUkQgcmVxX3BvcyA9IChGWF9EV09SRCkobV9kd0ZpbGVMZW4gPiAxMDI0ID8gbV9kd0ZpbGVMZW4gLSAxMDI0IDogMCk7DQorICAgIEZYX0RXT1JEIGR3U2l6ZSA9IChGWF9EV09SRCkobV9kd0ZpbGVMZW4gLSByZXFfcG9zKTsNCisgICAgaWYgKG1fcEZpbGVBdmFpbC0+SXNEYXRhQXZhaWwocmVxX3BvcywgZHdTaXplKSkgew0KKyAgICAgICAgRlhfQllURSBidWZmZXJbMTAyNF07DQorICAgICAgICBtX3BGaWxlUmVhZC0+UmVhZEJsb2NrKGJ1ZmZlciwgcmVxX3BvcywgZHdTaXplKTsNCisgICAgICAgIENGWF9TbWFydFBvaW50ZXI8SUZYX0ZpbGVTdHJlYW0+IGZpbGUoRlhfQ3JlYXRlTWVtb3J5U3RyZWFtKGJ1ZmZlciwgKHNpemVfdClkd1NpemUsIEZBTFNFKSk7DQorICAgICAgICBtX3N5bnRheFBhcnNlci5Jbml0UGFyc2VyKChJRlhfRmlsZVN0cmVhbSopZmlsZSwgMCk7DQorICAgICAgICBtX3N5bnRheFBhcnNlci5SZXN0b3JlUG9zKGR3U2l6ZSAtIDEpOw0KKyAgICAgICAgaWYgKG1fc3ludGF4UGFyc2VyLlNlYXJjaFdvcmQoRlhfQlNUUkMoInN0YXJ0eHJlZiIpLCBUUlVFLCBGQUxTRSwgZHdTaXplKSkgew0KKyAgICAgICAgICAgIEZYX0JPT0wgYk51bWJlcjsNCisgICAgICAgICAgICBtX3N5bnRheFBhcnNlci5HZXROZXh0V29yZChiTnVtYmVyKTsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyB4cmVmcG9zX3N0ciA9IG1fc3ludGF4UGFyc2VyLkdldE5leHRXb3JkKGJOdW1iZXIpOw0KKyAgICAgICAgICAgIGlmICghYk51bWJlcikgew0KKyAgICAgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfRVJST1I7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9kd1hSZWZPZmZzZXQgPSAoRlhfRklMRVNJWkUpRlhTWVNfYXRvaTY0KHhyZWZwb3Nfc3RyKTsNCisgICAgICAgICAgICBpZiAoIW1fZHdYUmVmT2Zmc2V0IHx8IG1fZHdYUmVmT2Zmc2V0ID4gbV9kd0ZpbGVMZW4pIHsNCisgICAgICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0xPQURBTExGSUxFOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9kd0xhc3RYUmVmT2Zmc2V0ID0gbV9kd1hSZWZPZmZzZXQ7DQorICAgICAgICAgICAgU2V0U3RhcnRPZmZzZXQobV9kd1hSZWZPZmZzZXQpOw0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9DUk9TU1JFRjsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0xPQURBTExGSUxFOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHBIaW50cy0+QWRkU2VnbWVudChyZXFfcG9zLCBkd1NpemUpOw0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0RXT1JEIENQREZfRGF0YUF2YWlsOjpDaGVja0Nyb3NzUmVmU3RyZWFtKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMsIEZYX0ZJTEVTSVpFICZ4cmVmX29mZnNldCkNCit7DQorICAgIHhyZWZfb2Zmc2V0ID0gMDsNCisgICAgRlhfRFdPUkQgcmVxX3NpemUgPSAoRlhfRFdPUkQpKG1fUG9zICsgNTEyID4gbV9kd0ZpbGVMZW4gPyBtX2R3RmlsZUxlbiAtIG1fUG9zIDogNTEyKTsNCisgICAgaWYgKG1fcEZpbGVBdmFpbC0+SXNEYXRhQXZhaWwobV9Qb3MsIHJlcV9zaXplKSkgew0KKyAgICAgICAgRlhfSU5UMzIgaVNpemUgPSAoRlhfSU5UMzIpKG1fUG9zICsgcmVxX3NpemUgLSBtX2R3Q3VycmVudFhSZWZTdGVhbSk7DQorICAgICAgICBDRlhfQmluYXJ5QnVmIGJ1ZihpU2l6ZSk7DQorICAgICAgICBGWF9MUEJZVEUgcEJ1ZiA9IGJ1Zi5HZXRCdWZmZXIoKTsNCisgICAgICAgIG1fcEZpbGVSZWFkLT5SZWFkQmxvY2socEJ1ZiwgbV9kd0N1cnJlbnRYUmVmU3RlYW0sIGlTaXplKTsNCisgICAgICAgIENGWF9TbWFydFBvaW50ZXI8SUZYX0ZpbGVTdHJlYW0+IGZpbGUoRlhfQ3JlYXRlTWVtb3J5U3RyZWFtKHBCdWYsIChzaXplX3QpaVNpemUsIEZBTFNFKSk7DQorICAgICAgICBtX3BhcnNlci5tX1N5bnRheC5Jbml0UGFyc2VyKChJRlhfRmlsZVN0cmVhbSopZmlsZSwgMCk7DQorICAgICAgICBGWF9CT09MIGJOdW1iZXIgPSBGQUxTRTsNCisgICAgICAgIEZYX0ZJTEVTSVpFIGR3U2F2ZVBvcyA9IG1fcGFyc2VyLm1fU3ludGF4LlNhdmVQb3MoKTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIG9iam51bSA9IG1fcGFyc2VyLm1fU3ludGF4LkdldE5leHRXb3JkKGJOdW1iZXIpOw0KKyAgICAgICAgaWYgKCFiTnVtYmVyKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgb2JqTnVtID0gRlhTWVNfYXRvaShvYmpudW0pOw0KKyAgICAgICAgQ1BERl9PYmplY3QgKnBPYmogPSBtX3BhcnNlci5QYXJzZUluZGlyZWN0T2JqZWN0QXQoTlVMTCwgMCwgb2JqTnVtLCBOVUxMKTsNCisgICAgICAgIGlmICghcE9iaikgew0KKyAgICAgICAgICAgIG1fUG9zICs9IG1fcGFyc2VyLm1fU3ludGF4LlNhdmVQb3MoKTsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfT2JqZWN0ICpwTmFtZSA9IHBPYmotPkdldERpY3QoKS0+R2V0RWxlbWVudChGWF9CU1RSQygiVHlwZSIpKTsNCisgICAgICAgIGlmIChwTmFtZSAmJiBwTmFtZS0+R2V0VHlwZSgpID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICAgICAgaWYgKHBOYW1lLT5HZXRTdHJpbmcoKSA9PSBGWF9CU1RSQygiWFJlZiIpKSB7DQorICAgICAgICAgICAgICAgIG1fUG9zICs9IG1fcGFyc2VyLm1fU3ludGF4LlNhdmVQb3MoKTsNCisgICAgICAgICAgICAgICAgeHJlZl9vZmZzZXQgPSBwT2JqLT5HZXREaWN0KCktPkdldEludGVnZXIoRlhfQlNUUkMoIlByZXYiKSk7DQorICAgICAgICAgICAgICAgIHBPYmotPlJlbGVhc2UoKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcE9iai0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcE9iai0+UmVsZWFzZSgpOw0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIHBIaW50cy0+QWRkU2VnbWVudChtX1BvcywgcmVxX3NpemUpOw0KKyAgICByZXR1cm4gMDsNCit9DQoraW5saW5lIHZvaWQgQ1BERl9EYXRhQXZhaWw6OlNldFN0YXJ0T2Zmc2V0KEZYX0ZJTEVTSVpFIGR3T2Zmc2V0KQ0KK3sNCisgICAgbV9Qb3MgPSBkd09mZnNldDsNCit9DQorI2RlZmluZSBNQVhfV09SRF9CVUZGRVIgMjU2DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6R2V0TmV4dFRva2VuKENGWF9CeXRlU3RyaW5nICZ0b2tlbikNCit7DQorICAgIG1fV29yZFNpemUgPSAwOw0KKyAgICBGWF9CWVRFIGNoOw0KKyAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0JZVEUgdHlwZSA9IF9QREZfQ2hhclR5cGVbY2hdOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgd2hpbGUgKHR5cGUgPT0gJ1cnKSB7DQorICAgICAgICAgICAgaWYgKCFHZXROZXh0Q2hhcihjaCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICB9DQorICAgICAgICBpZiAoY2ggIT0gJyUnKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgIGlmICghR2V0TmV4dENoYXIoY2gpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGNoID09ICdccicgfHwgY2ggPT0gJ1xuJykgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgIH0NCisgICAgaWYgKHR5cGUgPT0gJ0QnKSB7DQorICAgICAgICBtX1dvcmRCdWZmZXJbbV9Xb3JkU2l6ZSsrXSA9IGNoOw0KKyAgICAgICAgaWYgKGNoID09ICcvJykgew0KKyAgICAgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgICAgIGlmICghR2V0TmV4dENoYXIoY2gpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgdHlwZSA9IF9QREZfQ2hhclR5cGVbY2hdOw0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSAnUicgJiYgdHlwZSAhPSAnTicpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fUG9zIC0tOw0KKyAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgcmV0KG1fV29yZEJ1ZmZlciwgbV9Xb3JkU2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHJldDsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChtX1dvcmRTaXplIDwgTUFYX1dPUkRfQlVGRkVSKSB7DQorICAgICAgICAgICAgICAgICAgICBtX1dvcmRCdWZmZXJbbV9Xb3JkU2l6ZSsrXSA9IGNoOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnPCcpIHsNCisgICAgICAgICAgICBpZiAoIUdldE5leHRDaGFyKGNoKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChjaCA9PSAnPCcpIHsNCisgICAgICAgICAgICAgICAgbV9Xb3JkQnVmZmVyW21fV29yZFNpemUrK10gPSBjaDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBtX1BvcyAtLTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKGNoID09ICc+Jykgew0KKyAgICAgICAgICAgIGlmICghR2V0TmV4dENoYXIoY2gpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGNoID09ICc+Jykgew0KKyAgICAgICAgICAgICAgICBtX1dvcmRCdWZmZXJbbV9Xb3JkU2l6ZSsrXSA9IGNoOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG1fUG9zIC0tOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIENGWF9CeXRlU3RyaW5nIHJldChtX1dvcmRCdWZmZXIsIG1fV29yZFNpemUpOw0KKyAgICAgICAgdG9rZW4gPSByZXQ7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgaWYgKG1fV29yZFNpemUgPCBNQVhfV09SRF9CVUZGRVIpIHsNCisgICAgICAgICAgICBtX1dvcmRCdWZmZXJbbV9Xb3JkU2l6ZSsrXSA9IGNoOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFHZXROZXh0Q2hhcihjaCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICB0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICBpZiAodHlwZSA9PSAnRCcgfHwgdHlwZSA9PSAnVycpIHsNCisgICAgICAgICAgICBtX1BvcyAtLTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyByZXQobV9Xb3JkQnVmZmVyLCBtX1dvcmRTaXplKTsNCisgICAgdG9rZW4gPSByZXQ7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfRGF0YUF2YWlsOjpHZXROZXh0Q2hhcihGWF9CWVRFICZjaCkNCit7DQorICAgIEZYX0ZJTEVTSVpFIHBvcyA9IG1fUG9zOw0KKyAgICBpZiAocG9zID49IG1fZHdGaWxlTGVuKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fYnVmZmVyT2Zmc2V0ID49IHBvcyB8fCAoRlhfRklMRVNJWkUpKG1fYnVmZmVyT2Zmc2V0ICsgbV9idWZmZXJTaXplKSA8PSBwb3MpIHsNCisgICAgICAgIEZYX0ZJTEVTSVpFIHJlYWRfcG9zID0gcG9zOw0KKyAgICAgICAgRlhfRFdPUkQgcmVhZF9zaXplID0gNTEyOw0KKyAgICAgICAgaWYgKChGWF9GSUxFU0laRSlyZWFkX3NpemUgPiBtX2R3RmlsZUxlbikgew0KKyAgICAgICAgICAgIHJlYWRfc2l6ZSA9IChGWF9EV09SRCltX2R3RmlsZUxlbjsNCisgICAgICAgIH0NCisgICAgICAgIGlmICgoRlhfRklMRVNJWkUpKHJlYWRfcG9zICsgcmVhZF9zaXplKSA+IG1fZHdGaWxlTGVuKSB7DQorICAgICAgICAgICAgcmVhZF9wb3MgPSBtX2R3RmlsZUxlbiAtIHJlYWRfc2l6ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghbV9wRmlsZVJlYWQtPlJlYWRCbG9jayhtX2J1ZmZlckRhdGEsIHJlYWRfcG9zLCByZWFkX3NpemUpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9idWZmZXJPZmZzZXQgPSByZWFkX3BvczsNCisgICAgICAgIG1fYnVmZmVyU2l6ZSA9IHJlYWRfc2l6ZTsNCisgICAgfQ0KKyAgICBjaCA9IG1fYnVmZmVyRGF0YVtwb3MgLSBtX2J1ZmZlck9mZnNldF07DQorICAgIG1fUG9zICsrOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6Q2hlY2tDcm9zc1JlZkl0ZW0oSUZYX0Rvd25sb2FkSGludHMgKnBIaW50cykNCit7DQorICAgIEZYX0lOVDMyIGlTaXplID0gMDsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgdG9rZW47DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpZiAoIUdldE5leHRUb2tlbih0b2tlbikpIHsNCisgICAgICAgICAgICBpU2l6ZSA9IChGWF9JTlQzMikobV9Qb3MgKyA1MTIgPiBtX2R3RmlsZUxlbiA/IG1fZHdGaWxlTGVuIC0gbV9Qb3MgOiA1MTIpOw0KKyAgICAgICAgICAgIHBIaW50cy0+QWRkU2VnbWVudChtX1BvcywgaVNpemUpOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh0b2tlbiA9PSAidHJhaWxlciIpIHsNCisgICAgICAgICAgICBtX2R3VHJhaWxlck9mZnNldCA9IG1fUG9zOw0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9UUkFJTEVSOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkNoZWNrQWxsQ3Jvc3NSZWZTdHJlYW0oSUZYX0Rvd25sb2FkSGludHMgKnBIaW50cykNCit7DQorICAgIEZYX0ZJTEVTSVpFIHhyZWZfb2Zmc2V0ID0gMDsNCisgICAgRlhfRFdPUkQgZHdSZXQgPSBDaGVja0Nyb3NzUmVmU3RyZWFtKHBIaW50cywgeHJlZl9vZmZzZXQpOw0KKyAgICBpZiAoZHdSZXQgPT0gMSkgew0KKyAgICAgICAgaWYgKCF4cmVmX29mZnNldCkgew0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9MT0FEQUxMQ1JTT1NTUkVGOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX2R3Q3VycmVudFhSZWZTdGVhbSA9IHhyZWZfb2Zmc2V0Ow0KKyAgICAgICAgICAgIG1fUG9zID0geHJlZl9vZmZzZXQ7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfSBlbHNlIGlmIChkd1JldCA9PSAtMSkgew0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6Q2hlY2tDcm9zc1JlZihJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgRlhfRklMRVNJWkUgZHdTYXZlUG9zID0gbV9Qb3M7DQorICAgIEZYX0lOVDMyIGlTaXplID0gMDsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgdG9rZW47DQorICAgIGlmICghR2V0TmV4dFRva2VuKHRva2VuKSkgew0KKyAgICAgICAgaVNpemUgPSAoRlhfSU5UMzIpKG1fUG9zICsgNTEyID4gbV9kd0ZpbGVMZW4gPyBtX2R3RmlsZUxlbiAtIG1fUG9zIDogNTEyKTsNCisgICAgICAgIHBIaW50cy0+QWRkU2VnbWVudChtX1BvcywgaVNpemUpOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICh0b2tlbiA9PSAieHJlZiIpIHsNCisgICAgICAgIG1fQ3Jvc3NPZmZzZXQuSW5zZXJ0QXQoMCwgbV9kd1hSZWZPZmZzZXQpOw0KKyAgICAgICAgd2hpbGUgKDEpIHsNCisgICAgICAgICAgICBpZiAoIUdldE5leHRUb2tlbih0b2tlbikpIHsNCisgICAgICAgICAgICAgICAgaVNpemUgPSAoRlhfSU5UMzIpKG1fUG9zICsgNTEyID4gbV9kd0ZpbGVMZW4gPyBtX2R3RmlsZUxlbiAtIG1fUG9zIDogNTEyKTsNCisgICAgICAgICAgICAgICAgcEhpbnRzLT5BZGRTZWdtZW50KG1fUG9zLCBpU2l6ZSk7DQorICAgICAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9DUk9TU1JFRl9JVEVNOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICh0b2tlbiA9PSAidHJhaWxlciIpIHsNCisgICAgICAgICAgICAgICAgbV9kd1RyYWlsZXJPZmZzZXQgPSBtX1BvczsNCisgICAgICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX1RSQUlMRVI7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9MT0FEQUxMRklMRTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6Q2hlY2tUcmFpbGVyQXBwZW5kKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpDQorew0KKyAgICBpZiAobV9Qb3MgPCBtX2R3RmlsZUxlbikgew0KKyAgICAgICAgRlhfRklMRVNJWkUgZHdBcHBlbmRQb3MgPSBtX1BvcyArIG1fc3ludGF4UGFyc2VyLlNhdmVQb3MoKTsNCisgICAgICAgIEZYX0lOVDMyIGlTaXplID0gKEZYX0lOVDMyKShkd0FwcGVuZFBvcyArIDUxMiA+IG1fZHdGaWxlTGVuID8gbV9kd0ZpbGVMZW4gLSBkd0FwcGVuZFBvcyA6IDUxMik7DQorICAgICAgICBpZiAoIW1fcEZpbGVBdmFpbC0+SXNEYXRhQXZhaWwoZHdBcHBlbmRQb3MsIGlTaXplKSkgew0KKyAgICAgICAgICAgIHBIaW50cy0+QWRkU2VnbWVudChkd0FwcGVuZFBvcywgaVNpemUpOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9kd1ByZXZYUmVmT2Zmc2V0KSB7DQorICAgICAgICBTZXRTdGFydE9mZnNldChtX2R3UHJldlhSZWZPZmZzZXQpOw0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0NST1NTUkVGOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0xPQURBTExDUlNPU1NSRUY7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkNoZWNrVHJhaWxlcihJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgRlhfSU5UMzIgaVRyYWlsZXJTaXplID0gKEZYX0lOVDMyKShtX1BvcyArIDUxMiA+IG1fZHdGaWxlTGVuID8gbV9kd0ZpbGVMZW4gLSBtX1BvcyA6IDUxMik7DQorICAgIGlmIChtX3BGaWxlQXZhaWwtPklzRGF0YUF2YWlsKG1fUG9zLCBpVHJhaWxlclNpemUpKSB7DQorICAgICAgICBGWF9JTlQzMiBpU2l6ZSA9IChGWF9JTlQzMikobV9Qb3MgKyBpVHJhaWxlclNpemUgLSBtX2R3VHJhaWxlck9mZnNldCk7DQorICAgICAgICBDRlhfQmluYXJ5QnVmIGJ1ZihpU2l6ZSk7DQorICAgICAgICBGWF9MUEJZVEUgcEJ1ZiA9IGJ1Zi5HZXRCdWZmZXIoKTsNCisgICAgICAgIGlmICghcEJ1Zikgew0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9FUlJPUjsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIW1fcEZpbGVSZWFkLT5SZWFkQmxvY2socEJ1ZiwgbV9kd1RyYWlsZXJPZmZzZXQsIGlTaXplKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9TbWFydFBvaW50ZXI8SUZYX0ZpbGVTdHJlYW0+IGZpbGUoRlhfQ3JlYXRlTWVtb3J5U3RyZWFtKHBCdWYsIChzaXplX3QpaVNpemUsIEZBTFNFKSk7DQorICAgICAgICBtX3N5bnRheFBhcnNlci5Jbml0UGFyc2VyKChJRlhfRmlsZVN0cmVhbSopZmlsZSwgMCk7DQorICAgICAgICBDUERGX09iamVjdCAqcFRyYWlsZXIgPSBtX3N5bnRheFBhcnNlci5HZXRPYmplY3QoTlVMTCwgMCwgMCwgMCk7DQorICAgICAgICBpZiAoIXBUcmFpbGVyKSB7DQorICAgICAgICAgICAgbV9Qb3MgKz0gbV9zeW50YXhQYXJzZXIuU2F2ZVBvcygpOw0KKyAgICAgICAgICAgIHBIaW50cy0+QWRkU2VnbWVudChtX1BvcywgaVRyYWlsZXJTaXplKTsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkgKnBUcmFpbGVyRGljdCA9IHBUcmFpbGVyLT5HZXREaWN0KCk7DQorICAgICAgICBpZiAocFRyYWlsZXJEaWN0KSB7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QgKnBFbmNyeXB0ID0gcFRyYWlsZXJEaWN0LT5HZXRFbGVtZW50KCJFbmNyeXB0Iik7DQorICAgICAgICAgICAgaWYgKHBFbmNyeXB0ICYmIHBFbmNyeXB0LT5HZXRUeXBlKCkgPT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfTE9BREFMTEZJTEU7DQorICAgICAgICAgICAgICAgIHBUcmFpbGVyLT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEZYX0RXT1JEIHhyZWZwb3MgPSBHZXREaXJlY3RJbnRlZ2VyKHBUcmFpbGVyLT5HZXREaWN0KCksIEZYX0JTVFJDKCJQcmV2IikpOw0KKyAgICAgICAgaWYgKHhyZWZwb3MpIHsNCisgICAgICAgICAgICBtX2R3UHJldlhSZWZPZmZzZXQgPSBHZXREaXJlY3RJbnRlZ2VyKHBUcmFpbGVyLT5HZXREaWN0KCksIEZYX0JTVFJDKCJYUmVmU3RtIikpOw0KKyAgICAgICAgICAgIHBUcmFpbGVyLT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgaWYgKG1fZHdQcmV2WFJlZk9mZnNldCkgew0KKyAgICAgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfTE9BREFMTEZJTEU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9kd1ByZXZYUmVmT2Zmc2V0ID0geHJlZnBvczsNCisgICAgICAgICAgICAgICAgaWYgKG1fZHdQcmV2WFJlZk9mZnNldCA+PSBtX2R3RmlsZUxlbikgew0KKyAgICAgICAgICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0xPQURBTExGSUxFOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgU2V0U3RhcnRPZmZzZXQobV9kd1ByZXZYUmVmT2Zmc2V0KTsNCisgICAgICAgICAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9UUkFJTEVSX0FQUEVORDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9kd1ByZXZYUmVmT2Zmc2V0ID0gMDsNCisgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfVFJBSUxFUl9BUFBFTkQ7DQorICAgICAgICAgICAgcFRyYWlsZXItPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHBIaW50cy0+QWRkU2VnbWVudChtX1BvcywgaVRyYWlsZXJTaXplKTsNCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MIENQREZfRGF0YUF2YWlsOjpDaGVja1BhZ2UoRlhfSU5UMzIgaVBhZ2UsIElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpDQorew0KKyAgICB3aGlsZSAoVFJVRSkgew0KKyAgICAgICAgc3dpdGNoIChtX2RvY1N0YXR1cykgew0KKyAgICAgICAgICAgIGNhc2UgUERGX0RBVEFBVkFJTF9QQUdFVFJFRToNCisgICAgICAgICAgICAgICAgaWYgKCFMb2FkRG9jUGFnZXMocEhpbnRzKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgUERGX0RBVEFBVkFJTF9QQUdFOg0KKyAgICAgICAgICAgICAgICBpZiAoIUxvYWREb2NQYWdlKGlQYWdlLCBwSGludHMpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBQREZfREFUQUFWQUlMX0VSUk9SOg0KKyAgICAgICAgICAgICAgICByZXR1cm4gTG9hZEFsbEZpbGUocEhpbnRzKTsNCisgICAgICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgICBtX2JQYWdlc1RyZWVMb2FkID0gVFJVRTsNCisgICAgICAgICAgICAgICAgbV9iUGFnZXNMb2FkID0gVFJVRTsNCisgICAgICAgICAgICAgICAgbV9iQ3VyUGFnZURpY3RMb2FkT0sgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfUEFHRTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCit9DQorRlhfQk9PTAlDUERGX0RhdGFBdmFpbDo6Q2hlY2tBcnJheVBhZ2VOb2RlKEZYX0RXT1JEIGR3UGFnZU5vLCBDUERGX1BhZ2VOb2RlICpwUGFnZU5vZGUsIElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpDQorew0KKyAgICBGWF9CT09MIGJFeGlzdCA9IEZBTFNFOw0KKyAgICBDUERGX09iamVjdCAqcFBhZ2VzID0gR2V0T2JqZWN0KGR3UGFnZU5vLCBwSGludHMsICZiRXhpc3QpOw0KKyAgICBpZiAoIWJFeGlzdCkgew0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICghcFBhZ2VzKSB7DQorICAgICAgICBpZiAobV9kb2NTdGF0dXMgPT0gUERGX0RBVEFBVkFJTF9FUlJPUikgew0KKyAgICAgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9FUlJPUjsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHBQYWdlcy0+R2V0VHlwZSgpICE9IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgcFBhZ2VzLT5SZWxlYXNlKCk7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfRVJST1I7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcFBhZ2VOb2RlLT5tX3R5cGUgPSBQREZfUEFHRU5PREVfUEFHRVM7DQorICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwUGFnZXM7DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwQXJyYXktPkdldENvdW50KCk7ICsraSkgew0KKyAgICAgICAgQ1BERl9PYmplY3QgKnBLaWQgPSAoQ1BERl9PYmplY3QgKilwQXJyYXktPkdldEVsZW1lbnQoaSk7DQorICAgICAgICBpZiAoIXBLaWQgfHwgcEtpZC0+R2V0VHlwZSgpICE9IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfUGFnZU5vZGUgKnBOb2RlID0gRlhfTkVXIENQREZfUGFnZU5vZGUoKTsNCisgICAgICAgIHBQYWdlTm9kZS0+bV9jaGlsZE5vZGUuQWRkKHBOb2RlKTsNCisgICAgICAgIHBOb2RlLT5tX2R3UGFnZU5vID0gKChDUERGX1JlZmVyZW5jZSopcEtpZCktPkdldFJlZk9iak51bSgpOw0KKyAgICB9DQorICAgIHBQYWdlcy0+UmVsZWFzZSgpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6Q2hlY2tVbmtvd25QYWdlTm9kZShGWF9EV09SRCBkd1BhZ2VObywgQ1BERl9QYWdlTm9kZSAqcFBhZ2VOb2RlLCBJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgRlhfQk9PTCBiRXhpc3QgPSBGQUxTRTsNCisgICAgQ1BERl9PYmplY3QgKnBQYWdlID0gR2V0T2JqZWN0KGR3UGFnZU5vLCBwSGludHMsICZiRXhpc3QpOw0KKyAgICBpZiAoIWJFeGlzdCkgew0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICghcFBhZ2UpIHsNCisgICAgICAgIGlmIChtX2RvY1N0YXR1cyA9PSBQREZfREFUQUFWQUlMX0VSUk9SKSB7DQorICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocFBhZ2UtPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHBQYWdlTm9kZS0+bV9kd1BhZ2VObyA9IGR3UGFnZU5vOw0KKyAgICAgICAgcFBhZ2VOb2RlLT5tX3R5cGUgPSBQREZfUEFHRU5PREVfQVJSQVk7DQorICAgICAgICBwUGFnZS0+UmVsZWFzZSgpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKHBQYWdlLT5HZXRUeXBlKCkgIT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgIHBQYWdlLT5SZWxlYXNlKCk7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfRVJST1I7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcFBhZ2VOb2RlLT5tX2R3UGFnZU5vID0gZHdQYWdlTm87DQorICAgIENGWF9CeXRlU3RyaW5nIHR5cGUgPSBwUGFnZS0+R2V0RGljdCgpLT5HZXRTdHJpbmcoRlhfQlNUUkMoIlR5cGUiKSk7DQorICAgIGlmICh0eXBlID09IEZYX0JTVFJDKCJQYWdlcyIpKSB7DQorICAgICAgICBwUGFnZU5vZGUtPm1fdHlwZSA9IFBERl9QQUdFTk9ERV9QQUdFUzsNCisgICAgICAgIENQREZfT2JqZWN0ICpwS2lkcyA9IHBQYWdlLT5HZXREaWN0KCktPkdldEVsZW1lbnQoRlhfQlNUUkMoIktpZHMiKSk7DQorICAgICAgICBpZiAoIXBLaWRzKSB7DQorICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX1BBR0U7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICBzd2l0Y2ggKHBLaWRzLT5HZXRUeXBlKCkpIHsNCisgICAgICAgICAgICBjYXNlIFBERk9CSl9SRUZFUkVOQ0U6IHsNCisgICAgICAgICAgICAgICAgICAgIENQREZfUmVmZXJlbmNlICpwS2lkID0gKENQREZfUmVmZXJlbmNlICopcEtpZHM7DQorICAgICAgICAgICAgICAgICAgICBDUERGX1BhZ2VOb2RlICpwTm9kZSA9IEZYX05FVyBDUERGX1BhZ2VOb2RlKCk7DQorICAgICAgICAgICAgICAgICAgICBwUGFnZU5vZGUtPm1fY2hpbGROb2RlLkFkZChwTm9kZSk7DQorICAgICAgICAgICAgICAgICAgICBwTm9kZS0+bV9kd1BhZ2VObyA9IHBLaWQtPkdldFJlZk9iak51bSgpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgUERGT0JKX0FSUkFZOiB7DQorICAgICAgICAgICAgICAgICAgICBDUERGX0FycmF5ICpwS2lkc0FycmF5ID0gKENQREZfQXJyYXkgKilwS2lkczsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwS2lkc0FycmF5LT5HZXRDb3VudCgpOyArK2kpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBDUERGX09iamVjdCAqcEtpZCA9IChDUERGX09iamVjdCAqKXBLaWRzQXJyYXktPkdldEVsZW1lbnQoaSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwS2lkIHx8IHBLaWQtPkdldFR5cGUoKSAhPSBQREZPQkpfUkVGRVJFTkNFKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1BhZ2VOb2RlICpwTm9kZSA9IEZYX05FVyBDUERGX1BhZ2VOb2RlKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgcFBhZ2VOb2RlLT5tX2NoaWxkTm9kZS5BZGQocE5vZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBOb2RlLT5tX2R3UGFnZU5vID0gKChDUERGX1JlZmVyZW5jZSopcEtpZCktPkdldFJlZk9iak51bSgpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gRlhfQlNUUkMoIlBhZ2UiKSkgew0KKyAgICAgICAgcFBhZ2VOb2RlLT5tX3R5cGUgPSBQREZfUEFHRU5PREVfUEFHRTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBQYWdlLT5SZWxlYXNlKCk7DQorICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfRVJST1I7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcFBhZ2UtPlJlbGVhc2UoKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkNoZWNrUGFnZU5vZGUoQ1BERl9QYWdlTm9kZSAmcGFnZU5vZGVzLCBGWF9JTlQzMiBpUGFnZSwgRlhfSU5UMzIgJmlDb3VudCwgSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIEZYX0lOVDMyIGlTaXplID0gcGFnZU5vZGVzLm1fY2hpbGROb2RlLkdldFNpemUoKTsNCisgICAgaWYgKCFpU2l6ZSkgew0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGZvciAoRlhfSU5UMzIgaSA9IDA7IGkgPCBpU2l6ZTsgKytpKSB7DQorICAgICAgICBDUERGX1BhZ2VOb2RlICpwTm9kZSA9IChDUERGX1BhZ2VOb2RlKilwYWdlTm9kZXMubV9jaGlsZE5vZGUuR2V0QXQoaSk7DQorICAgICAgICBpZiAoIXBOb2RlKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBzd2l0Y2ggKHBOb2RlLT5tX3R5cGUpIHsNCisgICAgICAgICAgICBjYXNlIFBERl9QQUdFTk9ERV9VTktPV046DQorICAgICAgICAgICAgICAgIGlmICghQ2hlY2tVbmtvd25QYWdlTm9kZShwTm9kZS0+bV9kd1BhZ2VObywgcE5vZGUsIHBIaW50cykpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAtLWk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgUERGX1BBR0VOT0RFX1BBR0U6DQorICAgICAgICAgICAgICAgIGlDb3VudCsrOw0KKyAgICAgICAgICAgICAgICBpZiAoaVBhZ2UgPT0gaUNvdW50ICYmIG1fcERvY3VtZW50KSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BEb2N1bWVudC0+bV9QYWdlTGlzdC5TZXRBdChpUGFnZSwgcE5vZGUtPm1fZHdQYWdlTm8pOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgUERGX1BBR0VOT0RFX1BBR0VTOg0KKyAgICAgICAgICAgICAgICBpZiAoIUNoZWNrUGFnZU5vZGUoKnBOb2RlLCBpUGFnZSwgaUNvdW50LCBwSGludHMpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBQREZfUEFHRU5PREVfQVJSQVk6DQorICAgICAgICAgICAgICAgIGlmICghQ2hlY2tBcnJheVBhZ2VOb2RlKHBOb2RlLT5tX2R3UGFnZU5vLCBwTm9kZSwgcEhpbnRzKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIC0taTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZiAoaVBhZ2UgPT0gaUNvdW50KSB7DQorICAgICAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0RPTkU7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkxvYWREb2NQYWdlKEZYX0lOVDMyIGlQYWdlLCBJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgaWYgKG1fcERvY3VtZW50LT5HZXRQYWdlQ291bnQoKSA8PSBpUGFnZSB8fCBtX3BEb2N1bWVudC0+bV9QYWdlTGlzdC5HZXRBdChpUGFnZSkpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9ET05FOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKG1fcGFnZU5vZGVzLm1fdHlwZSA9PSBQREZfUEFHRU5PREVfUEFHRSkgew0KKyAgICAgICAgaWYgKGlQYWdlID09IDApIHsNCisgICAgICAgICAgICBtX2RvY1N0YXR1cyA9IFBERl9EQVRBQVZBSUxfRE9ORTsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9FUlJPUjsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIGlDb3VudCA9IC0xOw0KKyAgICByZXR1cm4gQ2hlY2tQYWdlTm9kZShtX3BhZ2VOb2RlcywgaVBhZ2UsIGlDb3VudCwgcEhpbnRzKTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6Q2hlY2tQYWdlQ291bnQoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIEZYX0JPT0wgYkV4aXN0ID0gRkFMU0U7DQorICAgIENQREZfT2JqZWN0ICpwUGFnZXMgPSBHZXRPYmplY3QobV9QYWdlc09iak51bSwgcEhpbnRzLCAmYkV4aXN0KTsNCisgICAgaWYgKCFiRXhpc3QpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9FUlJPUjsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoIXBQYWdlcykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcFBhZ2VzRGljdCA9IHBQYWdlcy0+R2V0RGljdCgpOw0KKyAgICBpZiAoIXBQYWdlc0RpY3QpIHsNCisgICAgICAgIHBQYWdlcy0+UmVsZWFzZSgpOw0KKyAgICAgICAgbV9kb2NTdGF0dXMgPSBQREZfREFUQUFWQUlMX0VSUk9SOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICghcFBhZ2VzRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIktpZHMiKSkpIHsNCisgICAgICAgIHBQYWdlcy0+UmVsZWFzZSgpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaW50IGNvdW50ID0gcFBhZ2VzRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiQ291bnQiKSk7DQorICAgIGlmIChjb3VudCA+IDApIHsNCisgICAgICAgIHBQYWdlcy0+UmVsZWFzZSgpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcFBhZ2VzLT5SZWxlYXNlKCk7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6TG9hZERvY1BhZ2VzKElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpDQorew0KKyAgICBpZiAoIUNoZWNrVW5rb3duUGFnZU5vZGUobV9QYWdlc09iak51bSwgJm1fcGFnZU5vZGVzLCBwSGludHMpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKENoZWNrUGFnZUNvdW50KHBIaW50cykpIHsNCisgICAgICAgIG1fZG9jU3RhdHVzID0gUERGX0RBVEFBVkFJTF9QQUdFOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX2JUb3RhbExvYWRQYWdlVHJlZSA9IFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MIENQREZfRGF0YUF2YWlsOjpMb2FkUGFnZXMoSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIHdoaWxlICghbV9iUGFnZXNUcmVlTG9hZCkgew0KKyAgICAgICAgaWYgKCFDaGVja1BhZ2VTdGF0dXMocEhpbnRzKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9iUGFnZXNMb2FkKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBtX3BEb2N1bWVudC0+TG9hZFBhZ2VzKCk7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0RhdGFBdmFpbDo6Q2hlY2tMaW5lYXJpemVkRGF0YShJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgaWYgKG1fYkxpbmVhcmVkRGF0YU9LKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAoIW1fcEZpbGVBdmFpbC0+SXNEYXRhQXZhaWwobV9kd0xhc3RYUmVmT2Zmc2V0LCAoRlhfRFdPUkQpKG1fZHdGaWxlTGVuIC0gbV9kd0xhc3RYUmVmT2Zmc2V0KSkpIHsNCisgICAgICAgIHBIaW50cy0+QWRkU2VnbWVudChtX2R3TGFzdFhSZWZPZmZzZXQsIChGWF9EV09SRCkobV9kd0ZpbGVMZW4gLSBtX2R3TGFzdFhSZWZPZmZzZXQpKTsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBkd1JldCA9IDA7DQorICAgIGlmICghbV9iTWFpblhSZWZMb2FkKSB7DQorICAgICAgICBkd1JldCA9ICgoQ1BERl9QYXJzZXIgKiltX3BEb2N1bWVudC0+R2V0UGFyc2VyKCkpLT5Mb2FkTGluZWFyaXplZE1haW5YUmVmVGFibGUoKTsNCisgICAgICAgIGlmIChkd1JldCA9PSBQREZQQVJTRV9FUlJPUl9TVUNDRVNTKSB7DQorICAgICAgICAgICAgaWYgKCFQcmVwYXJlUGFnZUl0ZW0oKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fYk1haW5YUmVmTG9hZGVkT0sgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9iTWFpblhSZWZMb2FkID0gVFJVRTsNCisgICAgfQ0KKyAgICBtX2JMaW5lYXJlZERhdGFPSyA9IFRSVUU7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfRGF0YUF2YWlsOjpDaGVja1BhZ2VBbm5vdHMoRlhfSU5UMzIgaVBhZ2UsIElGWF9Eb3dubG9hZEhpbnRzKiBwSGludHMpDQorew0KKyAgICBpZiAoIW1fb2Jqc19hcnJheS5HZXRTaXplKCkpIHsNCisgICAgICAgIG1fb2Jqc19hcnJheS5SZW1vdmVBbGwoKTsNCisgICAgICAgIG1fb2JqbnVtX2FycmF5LlJlbW92ZUFsbCgpOw0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICpwUGFnZURpY3QgPSBtX3BEb2N1bWVudC0+R2V0UGFnZShpUGFnZSk7DQorICAgICAgICBpZiAoIXBQYWdlRGljdCkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9PYmplY3QgKnBBbm5vdHMgPSBwUGFnZURpY3QtPkdldEVsZW1lbnQoRlhfQlNUUkMoIkFubm90cyIpKTsNCisgICAgICAgIGlmICghcEFubm90cykgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX1B0ckFycmF5IG9ial9hcnJheTsNCisgICAgICAgIG9ial9hcnJheS5BZGQocEFubm90cyk7DQorICAgICAgICBGWF9CT09MIGJSZXQgPSBJc09iamVjdHNBdmFpbChvYmpfYXJyYXksIEZBTFNFLCBwSGludHMsIG1fb2Jqc19hcnJheSk7DQorICAgICAgICBpZiAoYlJldCkgew0KKyAgICAgICAgICAgIG1fb2Jqc19hcnJheS5SZW1vdmVBbGwoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBiUmV0Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ0ZYX1B0ckFycmF5IG5ld19vYmpzX2FycmF5Ow0KKyAgICAgICAgRlhfQk9PTCBiUmV0ID0gSXNPYmplY3RzQXZhaWwobV9vYmpzX2FycmF5LCBGQUxTRSwgcEhpbnRzLCBuZXdfb2Jqc19hcnJheSk7DQorICAgICAgICBtX29ianNfYXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgICAgICBpZiAoIWJSZXQpIHsNCisgICAgICAgICAgICBtX29ianNfYXJyYXkuQXBwZW5kKG5ld19vYmpzX2FycmF5KTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBiUmV0Ow0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkNoZWNrTGluZWFyaXplZEZpcnN0UGFnZShGWF9JTlQzMiBpUGFnZSwgSUZYX0Rvd25sb2FkSGludHMqIHBIaW50cykNCit7DQorICAgIGlmICghbV9iQW5ub3RzTG9hZCkgew0KKyAgICAgICAgaWYgKCFDaGVja1BhZ2VBbm5vdHMoaVBhZ2UsIHBIaW50cykpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX2JBbm5vdHNMb2FkID0gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9iQW5ub3RzTG9hZCkNCisgICAgICAgIGlmICghQ2hlY2tMaW5lYXJpemVkRGF0YShwSGludHMpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICBtX2JQYWdlTG9hZGVkT0sgPSBGQUxTRTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OkhhdmVSZXNvdXJjZUFuY2VzdG9yKENQREZfRGljdGlvbmFyeSAqcERpY3QpDQorew0KKyAgICBDUERGX09iamVjdCAqcFBhcmVudCA9IHBEaWN0LT5HZXRFbGVtZW50KCJQYXJlbnQiKTsNCisgICAgaWYgKCFwUGFyZW50KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5ICpwUGFyZW50RGljdCA9IHBQYXJlbnQtPkdldERpY3QoKTsNCisgICAgaWYgKCFwUGFyZW50RGljdCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0ICpwUmV0ID0gcFBhcmVudERpY3QtPkdldEVsZW1lbnQoIlJlc291cmNlIik7DQorICAgIGlmIChwUmV0KSB7DQorICAgICAgICBtX3BQYWdlUmVzb3VyY2UgPSBwUmV0Ow0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gSGF2ZVJlc291cmNlQW5jZXN0b3IocFBhcmVudERpY3QpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9EYXRhQXZhaWw6OklzUGFnZUF2YWlsKEZYX0lOVDMyIGlQYWdlLCBJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgaWYgKCFtX3BEb2N1bWVudCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChJc0ZpcnN0Q2hlY2soaVBhZ2UpKSB7DQorICAgICAgICBtX2JDdXJQYWdlRGljdExvYWRPSyA9IEZBTFNFOw0KKyAgICAgICAgbV9iUGFnZUxvYWRlZE9LID0gRkFMU0U7DQorICAgICAgICBtX2JBbm5vdHNMb2FkID0gRkFMU0U7DQorICAgICAgICBtX2JOZWVkRG93bkxvYWRSZXNvdXJjZSA9IEZBTFNFOw0KKyAgICAgICAgbV9vYmpzX2FycmF5LlJlbW92ZUFsbCgpOw0KKyAgICAgICAgbV9vYmpudW1fYXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgIH0NCisgICAgaWYgKG1fcGFnZXNMb2FkU3RhdGUgPT0gTlVMTCkgew0KKyAgICAgICAgbV9wYWdlc0xvYWRTdGF0ZSA9IEZYX05FVyBDRlhfQ01hcERXb3JkVG9EV29yZCgpOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3UGFnZUxvYWQgPSAwOw0KKyAgICBpZiAobV9wYWdlc0xvYWRTdGF0ZS0+TG9va3VwKGlQYWdlLCBkd1BhZ2VMb2FkKSAmJiBkd1BhZ2VMb2FkICE9IDApIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmIChtX2JMaW5lYXJpemVkKSB7DQorICAgICAgICBpZiAoKEZYX0RXT1JEKWlQYWdlID09IG1fZHdGaXJzdFBhZ2VObykgew0KKyAgICAgICAgICAgIG1fcGFnZXNMb2FkU3RhdGUtPlNldEF0KGlQYWdlLCBUUlVFKTsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghQ2hlY2tMaW5lYXJpemVkRGF0YShwSGludHMpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fYk1haW5YUmVmTG9hZGVkT0spIHsNCisgICAgICAgICAgICBpZiAobV9iVG90YWxMb2FkUGFnZVRyZWUpIHsNCisgICAgICAgICAgICAgICAgaWYgKCFMb2FkUGFnZXMocEhpbnRzKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYgKCFtX2JDdXJQYWdlRGljdExvYWRPSyAmJiAhQ2hlY2tQYWdlKGlQYWdlLCBwSGludHMpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmICghTG9hZEFsbEZpbGUocEhpbnRzKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICgoQ1BERl9QYXJzZXIgKiltX3BEb2N1bWVudC0+R2V0UGFyc2VyKCkpLT5SZWJ1aWxkQ3Jvc3NSZWYoKTsNCisgICAgICAgICAgICBSZXNldEZpcnN0Q2hlY2soaVBhZ2UpOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKCFtX2JUb3RhbExvYWRQYWdlVHJlZSkgew0KKyAgICAgICAgICAgIGlmICghbV9iQ3VyUGFnZURpY3RMb2FkT0sgJiYgIUNoZWNrUGFnZShpUGFnZSwgcEhpbnRzKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX2JIYXZlQWNyb0Zvcm0gJiYgIW1fYkFjcm9Gb3JtTG9hZCkgew0KKyAgICAgICAgaWYgKCFDaGVja0Fjcm9Gb3JtU3ViT2JqZWN0KHBIaW50cykpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX2JBY3JvRm9ybUxvYWQgPSBUUlVFOw0KKyAgICB9DQorICAgIGlmICghbV9iUGFnZUxvYWRlZE9LKSB7DQorICAgICAgICBpZiAoIW1fb2Jqc19hcnJheS5HZXRTaXplKCkpIHsNCisgICAgICAgICAgICBtX29ianNfYXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgICAgICAgICAgbV9vYmpudW1fYXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgICAgICAgICAgbV9wUGFnZURpY3QgPSBtX3BEb2N1bWVudC0+R2V0UGFnZShpUGFnZSk7DQorICAgICAgICAgICAgaWYgKCFtX3BQYWdlRGljdCkgew0KKyAgICAgICAgICAgICAgICBSZXNldEZpcnN0Q2hlY2soaVBhZ2UpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ0ZYX1B0ckFycmF5IG9ial9hcnJheTsNCisgICAgICAgICAgICBvYmpfYXJyYXkuQWRkKG1fcFBhZ2VEaWN0KTsNCisgICAgICAgICAgICBGWF9CT09MIGJSZXQgPSBJc09iamVjdHNBdmFpbChvYmpfYXJyYXksIFRSVUUsIHBIaW50cywgbV9vYmpzX2FycmF5KTsNCisgICAgICAgICAgICBpZiAoYlJldCkgew0KKyAgICAgICAgICAgICAgICBtX29ianNfYXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgICAgICAgICAgICAgIG1fYlBhZ2VMb2FkZWRPSyA9IFRSVUU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGJSZXQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBDRlhfUHRyQXJyYXkgbmV3X29ianNfYXJyYXk7DQorICAgICAgICAgICAgRlhfQk9PTCBiUmV0ID0gSXNPYmplY3RzQXZhaWwobV9vYmpzX2FycmF5LCBGQUxTRSwgcEhpbnRzLCBuZXdfb2Jqc19hcnJheSk7DQorICAgICAgICAgICAgbV9vYmpzX2FycmF5LlJlbW92ZUFsbCgpOw0KKyAgICAgICAgICAgIGlmIChiUmV0KSB7DQorICAgICAgICAgICAgICAgIG1fYlBhZ2VMb2FkZWRPSyA9IFRSVUU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9vYmpzX2FycmF5LkFwcGVuZChuZXdfb2Jqc19hcnJheSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBiUmV0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9iUGFnZUxvYWRlZE9LKSB7DQorICAgICAgICBpZiAoIW1fYkFubm90c0xvYWQpIHsNCisgICAgICAgICAgICBpZiAoIUNoZWNrUGFnZUFubm90cyhpUGFnZSwgcEhpbnRzKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fYkFubm90c0xvYWQgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX3BQYWdlRGljdCAmJiAhbV9iTmVlZERvd25Mb2FkUmVzb3VyY2UpIHsNCisgICAgICAgIENQREZfT2JqZWN0ICpwUmVzID0gbV9wUGFnZURpY3QtPkdldEVsZW1lbnQoIlJlc291cmNlIik7DQorICAgICAgICBpZiAoIXBSZXMpIHsNCisgICAgICAgICAgICBtX2JOZWVkRG93bkxvYWRSZXNvdXJjZSA9IEhhdmVSZXNvdXJjZUFuY2VzdG9yKG1fcFBhZ2VEaWN0KTsNCisgICAgICAgIH0NCisgICAgICAgIG1fYk5lZWREb3duTG9hZFJlc291cmNlID0gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fYk5lZWREb3duTG9hZFJlc291cmNlKSB7DQorICAgICAgICBGWF9CT09MIGJSZXQgPSBDaGVja1Jlc291cmNlcyhwSGludHMpOw0KKyAgICAgICAgaWYgKCFiUmV0KSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9iTmVlZERvd25Mb2FkUmVzb3VyY2UgPSBGQUxTRTsNCisgICAgfQ0KKyAgICBtX2JQYWdlTG9hZGVkT0sgPSBGQUxTRTsNCisgICAgbV9iQW5ub3RzTG9hZCA9IEZBTFNFOw0KKyAgICBtX2JDdXJQYWdlRGljdExvYWRPSyA9IEZBTFNFOw0KKyAgICBSZXNldEZpcnN0Q2hlY2soaVBhZ2UpOw0KKyAgICBtX3BhZ2VzTG9hZFN0YXRlLT5TZXRBdChpUGFnZSwgVFJVRSk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfRGF0YUF2YWlsOjpDaGVja1Jlc291cmNlcyhJRlhfRG93bmxvYWRIaW50cyogcEhpbnRzKQ0KK3sNCisgICAgaWYgKCFtX29ianNfYXJyYXkuR2V0U2l6ZSgpKSB7DQorICAgICAgICBtX29ianNfYXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgICAgICBDRlhfUHRyQXJyYXkgb2JqX2FycmF5Ow0KKyAgICAgICAgb2JqX2FycmF5LkFkZChtX3BQYWdlUmVzb3VyY2UpOw0KKyAgICAgICAgRlhfQk9PTCBiUmV0ID0gSXNPYmplY3RzQXZhaWwob2JqX2FycmF5LCBUUlVFLCBwSGludHMsIG1fb2Jqc19hcnJheSk7DQorICAgICAgICBpZiAoYlJldCkgew0KKyAgICAgICAgICAgIG1fb2Jqc19hcnJheS5SZW1vdmVBbGwoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBiUmV0Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ0ZYX1B0ckFycmF5IG5ld19vYmpzX2FycmF5Ow0KKyAgICAgICAgRlhfQk9PTCBiUmV0ID0gSXNPYmplY3RzQXZhaWwobV9vYmpzX2FycmF5LCBGQUxTRSwgcEhpbnRzLCBuZXdfb2Jqc19hcnJheSk7DQorICAgICAgICBtX29ianNfYXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgICAgICBpZiAoIWJSZXQpIHsNCisgICAgICAgICAgICBtX29ianNfYXJyYXkuQXBwZW5kKG5ld19vYmpzX2FycmF5KTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBiUmV0Ow0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9EYXRhQXZhaWw6OkdldExpbmVhcml6ZWRNYWluWFJlZkluZm8oRlhfRklMRVNJWkUgKnBQb3MsIEZYX0RXT1JEICpwU2l6ZSkNCit7DQorICAgIGlmIChwUG9zKSB7DQorICAgICAgICAqcFBvcyA9IG1fZHdMYXN0WFJlZk9mZnNldDsNCisgICAgfQ0KKyAgICBpZiAocFNpemUpIHsNCisgICAgICAgICpwU2l6ZSA9IChGWF9EV09SRCkobV9kd0ZpbGVMZW4gLSBtX2R3TGFzdFhSZWZPZmZzZXQpOw0KKyAgICB9DQorfQ0KK0ZYX0lOVDMyIENQREZfRGF0YUF2YWlsOjpJc0Zvcm1BdmFpbChJRlhfRG93bmxvYWRIaW50cyAqcEhpbnRzKQ0KK3sNCisgICAgaWYgKCFtX3BEb2N1bWVudCkgew0KKyAgICAgICAgcmV0dXJuIFBERkZPUk1fQVZBSUw7DQorICAgIH0NCisgICAgaWYgKCFtX2JMaW5lYXJpemVkRm9ybVBhcmFtTG9hZCkgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICpwUm9vdCA9IG1fcERvY3VtZW50LT5HZXRSb290KCk7DQorICAgICAgICBpZiAoIXBSb290KSB7DQorICAgICAgICAgICAgcmV0dXJuIFBERkZPUk1fQVZBSUw7DQorICAgICAgICB9DQorICAgICAgICBDUERGX09iamVjdCAqcEFjcm9Gb3JtID0gcFJvb3QtPkdldEVsZW1lbnQoRlhfQlNUUkMoIkFjcm9Gb3JtIikpOw0KKyAgICAgICAgaWYgKCFwQWNyb0Zvcm0pIHsNCisgICAgICAgICAgICByZXR1cm4gUERGRk9STV9OT1RFWElTVDsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghbV9iTWFpblhSZWZMb2FkICYmICFDaGVja0xpbmVhcml6ZWREYXRhKHBIaW50cykpIHsNCisgICAgICAgICAgICByZXR1cm4gUERGRk9STV9OT1RBVkFJTDsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghbV9vYmpzX2FycmF5LkdldFNpemUoKSkgew0KKyAgICAgICAgICAgIG1fb2Jqc19hcnJheS5BZGQocEFjcm9Gb3JtLT5HZXREaWN0KCkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9iTGluZWFyaXplZEZvcm1QYXJhbUxvYWQgPSBUUlVFOw0KKyAgICB9DQorICAgIENGWF9QdHJBcnJheSBuZXdfb2Jqc19hcnJheTsNCisgICAgRlhfQk9PTCBiUmV0ID0gSXNPYmplY3RzQXZhaWwobV9vYmpzX2FycmF5LCBGQUxTRSwgcEhpbnRzLCBuZXdfb2Jqc19hcnJheSk7DQorICAgIG1fb2Jqc19hcnJheS5SZW1vdmVBbGwoKTsNCisgICAgaWYgKCFiUmV0KSB7DQorICAgICAgICBtX29ianNfYXJyYXkuQXBwZW5kKG5ld19vYmpzX2FycmF5KTsNCisgICAgICAgIHJldHVybiBQREZGT1JNX05PVEFWQUlMOw0KKyAgICB9DQorICAgIHJldHVybiBQREZGT1JNX0FWQUlMOw0KK30NCit2b2lkIENQREZfU29ydE9iak51bUFycmF5OjpBZGRPYmpOdW0oRlhfRFdPUkQgZHdPYmpOdW0pDQorew0KKyAgICBGWF9JTlQzMiBpTmV4dCA9IDA7DQorICAgIGlmIChCaW5hcnlTZWFyY2goZHdPYmpOdW0sIGlOZXh0KSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fbnVtYmVyX2FycmF5Lkluc2VydEF0KGlOZXh0LCBkd09iak51bSk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Tb3J0T2JqTnVtQXJyYXk6OkZpbmQoRlhfRFdPUkQgZHdPYmpOdW0pDQorew0KKyAgICBGWF9JTlQzMiBpTmV4dCA9IDA7DQorICAgIHJldHVybiBCaW5hcnlTZWFyY2goZHdPYmpOdW0sIGlOZXh0KTsNCit9DQorRlhfQk9PTCBDUERGX1NvcnRPYmpOdW1BcnJheTo6QmluYXJ5U2VhcmNoKEZYX0RXT1JEIHZhbHVlLCBGWF9JTlQzMiAmaU5leHQpDQorew0KKyAgICBGWF9JTlQzMiBpTGVuID0gbV9udW1iZXJfYXJyYXkuR2V0U2l6ZSgpOw0KKyAgICBGWF9JTlQzMiBpTG93ID0gMDsNCisgICAgRlhfSU5UMzIgaUhpZ2ggPSBpTGVuIC0gMTsNCisgICAgRlhfSU5UMzIgaU1pZCA9IDA7DQorICAgIHdoaWxlIChpTG93IDw9IGlIaWdoKSB7DQorICAgICAgICBpTWlkID0gKGlMb3cgKyBpSGlnaCkgLyAyOw0KKyAgICAgICAgRlhfRFdPUkQgdHQgPSBtX251bWJlcl9hcnJheS5HZXRBdChpTWlkKTsNCisgICAgICAgIGlmIChtX251bWJlcl9hcnJheS5HZXRBdChpTWlkKSA9PSB2YWx1ZSkgew0KKyAgICAgICAgICAgIGlOZXh0ID0gaU1pZDsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0gZWxzZSBpZiAobV9udW1iZXJfYXJyYXkuR2V0QXQoaU1pZCkgPiB2YWx1ZSkgew0KKyAgICAgICAgICAgIGlIaWdoID0gaU1pZCAtIDE7DQorICAgICAgICB9IGVsc2UgaWYgKG1fbnVtYmVyX2FycmF5LkdldEF0KGlNaWQpIDwgdmFsdWUpIHsNCisgICAgICAgICAgICBpTG93ID0gaU1pZCArIDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaU5leHQgPSBpTG93Ow0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0NQREZfUGFnZU5vZGU6On5DUERGX1BhZ2VOb2RlKCkNCit7DQorICAgIEZYX0lOVDMyIGlTaXplID0gbV9jaGlsZE5vZGUuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgaVNpemU7ICsraSkgew0KKyAgICAgICAgQ1BERl9QYWdlTm9kZSAqcE5vZGUgPSAoQ1BERl9QYWdlTm9kZSopbV9jaGlsZE5vZGVbaV07DQorICAgICAgICBpZiAocE5vZGUpIHsNCisgICAgICAgICAgICBkZWxldGUgcE5vZGU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9jaGlsZE5vZGUuUmVtb3ZlQWxsKCk7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfdXRpbGl0eS5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX3V0aWxpdHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjM2QyOWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX3V0aWxpdHkuY3BwCkBAIC0wLDAgKzEsNDUzIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFyc2VyLmgiDQorZXh0ZXJuIGNvbnN0IEZYX0xQQ1NUUiBfUERGX0NoYXJUeXBlID0NCisgICAgIldSUlJSUlJSUldXUldXUlJSUlJSUlJSUlJSUlJSUlJSIg0KKyAgICAiV1JSUlJEUlJERFJOUk5ORE5OTk5OTk5OTk5SUkRSRFIiDQorICAgICJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJEUkRSUiINCisgICAgIlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUkRSRFJSIg0KKyAgICAiV1JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlIiDQorICAgICJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUiINCisgICAgIlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSIg0KKyAgICAiUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlciOw0KKyNpZm5kZWYgTUFYX1BBVEgNCisjZGVmaW5lIE1BWF9QQVRIIDQwOTYNCisjZW5kaWYNCitDUERGX1NpbXBsZVBhcnNlcjo6Q1BERl9TaW1wbGVQYXJzZXIoRlhfTFBDQllURSBwRGF0YSwgRlhfRFdPUkQgZHdTaXplKQ0KK3sNCisgICAgbV9wRGF0YSA9IHBEYXRhOw0KKyAgICBtX2R3U2l6ZSA9IGR3U2l6ZTsNCisgICAgbV9kd0N1clBvcyA9IDA7DQorfQ0KK0NQREZfU2ltcGxlUGFyc2VyOjpDUERGX1NpbXBsZVBhcnNlcihGWF9CU1RSIHN0cikNCit7DQorICAgIG1fcERhdGEgPSBzdHI7DQorICAgIG1fZHdTaXplID0gc3RyLkdldExlbmd0aCgpOw0KKyAgICBtX2R3Q3VyUG9zID0gMDsNCit9DQordm9pZCBDUERGX1NpbXBsZVBhcnNlcjo6UGFyc2VXb3JkKEZYX0xQQ0JZVEUmIHBTdGFydCwgRlhfRFdPUkQmIGR3U2l6ZSwgaW50JiB0eXBlKQ0KK3sNCisgICAgcFN0YXJ0ID0gTlVMTDsNCisgICAgZHdTaXplID0gMDsNCisgICAgdHlwZSA9IFBERldPUkRfRU9GOw0KKyAgICBGWF9CWVRFIGNoOw0KKyAgICBjaGFyIGNoYXJ0eXBlOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgaWYgKG1fZHdTaXplIDw9IG1fZHdDdXJQb3MpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBjaCA9IG1fcERhdGFbbV9kd0N1clBvcysrXTsNCisgICAgICAgIGNoYXJ0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICB3aGlsZSAoY2hhcnR5cGUgPT0gJ1cnKSB7DQorICAgICAgICAgICAgaWYgKG1fZHdTaXplIDw9IG1fZHdDdXJQb3MpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaCA9IG1fcERhdGFbbV9kd0N1clBvcysrXTsNCisgICAgICAgICAgICBjaGFydHlwZSA9IF9QREZfQ2hhclR5cGVbY2hdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNoICE9ICclJykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgd2hpbGUgKDEpIHsNCisgICAgICAgICAgICBpZiAobV9kd1NpemUgPD0gbV9kd0N1clBvcykgew0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNoID0gbV9wRGF0YVttX2R3Q3VyUG9zKytdOw0KKyAgICAgICAgICAgIGlmIChjaCA9PSAnXHInIHx8IGNoID09ICdcbicpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgY2hhcnR5cGUgPSBfUERGX0NoYXJUeXBlW2NoXTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBzdGFydF9wb3MgPSBtX2R3Q3VyUG9zIC0gMTsNCisgICAgcFN0YXJ0ID0gbV9wRGF0YSArIHN0YXJ0X3BvczsNCisgICAgaWYgKGNoYXJ0eXBlID09ICdEJykgew0KKyAgICAgICAgaWYgKGNoID09ICcvJykgew0KKyAgICAgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgICAgIGlmIChtX2R3U2l6ZSA8PSBtX2R3Q3VyUG9zKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY2ggPSBtX3BEYXRhW21fZHdDdXJQb3MrK107DQorICAgICAgICAgICAgICAgIGNoYXJ0eXBlID0gX1BERl9DaGFyVHlwZVtjaF07DQorICAgICAgICAgICAgICAgIGlmIChjaGFydHlwZSAhPSAnUicgJiYgY2hhcnR5cGUgIT0gJ04nKSB7DQorICAgICAgICAgICAgICAgICAgICBtX2R3Q3VyUG9zIC0tOw0KKyAgICAgICAgICAgICAgICAgICAgZHdTaXplID0gbV9kd0N1clBvcyAtIHN0YXJ0X3BvczsNCisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBQREZXT1JEX05BTUU7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHR5cGUgPSBQREZXT1JEX0RFTElNSVRFUjsNCisgICAgICAgICAgICBkd1NpemUgPSAxOw0KKyAgICAgICAgICAgIGlmIChjaCA9PSAnPCcpIHsNCisgICAgICAgICAgICAgICAgaWYgKG1fZHdTaXplIDw9IG1fZHdDdXJQb3MpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBjaCA9IG1fcERhdGFbbV9kd0N1clBvcysrXTsNCisgICAgICAgICAgICAgICAgaWYgKGNoID09ICc8Jykgew0KKyAgICAgICAgICAgICAgICAgICAgZHdTaXplID0gMjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG1fZHdDdXJQb3MgLS07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICc+Jykgew0KKyAgICAgICAgICAgICAgICBpZiAobV9kd1NpemUgPD0gbV9kd0N1clBvcykgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNoID0gbV9wRGF0YVttX2R3Q3VyUG9zKytdOw0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJz4nKSB7DQorICAgICAgICAgICAgICAgICAgICBkd1NpemUgPSAyOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbV9kd0N1clBvcyAtLTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICB0eXBlID0gUERGV09SRF9OVU1CRVI7DQorICAgIGR3U2l6ZSA9IDE7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpZiAoY2hhcnR5cGUgIT0gJ04nKSB7DQorICAgICAgICAgICAgdHlwZSA9IFBERldPUkRfVEVYVDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX2R3U2l6ZSA8PSBtX2R3Q3VyUG9zKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2ggPSBtX3BEYXRhW21fZHdDdXJQb3MrK107DQorICAgICAgICBjaGFydHlwZSA9IF9QREZfQ2hhclR5cGVbY2hdOw0KKyAgICAgICAgaWYgKGNoYXJ0eXBlID09ICdEJyB8fCBjaGFydHlwZSA9PSAnVycpIHsNCisgICAgICAgICAgICBtX2R3Q3VyUG9zIC0tOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZHdTaXplICsrOw0KKyAgICB9DQorfQ0KK0NGWF9CeXRlU3RyaW5nQyBDUERGX1NpbXBsZVBhcnNlcjo6R2V0V29yZCgpDQorew0KKyAgICBGWF9MUENCWVRFIHBTdGFydDsNCisgICAgRlhfRFdPUkQgZHdTaXplOw0KKyAgICBpbnQgdHlwZTsNCisgICAgUGFyc2VXb3JkKHBTdGFydCwgZHdTaXplLCB0eXBlKTsNCisgICAgaWYgKGR3U2l6ZSA9PSAxICYmIHBTdGFydFswXSA9PSAnPCcpIHsNCisgICAgICAgIHdoaWxlIChtX2R3Q3VyUG9zIDwgbV9kd1NpemUgJiYgbV9wRGF0YVttX2R3Q3VyUG9zXSAhPSAnPicpIHsNCisgICAgICAgICAgICBtX2R3Q3VyUG9zICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fZHdDdXJQb3MgPCBtX2R3U2l6ZSkgew0KKyAgICAgICAgICAgIG1fZHdDdXJQb3MgKys7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKHBTdGFydCwgKEZYX1NUUlNJWkUpKG1fZHdDdXJQb3MgLSAocFN0YXJ0IC0gbV9wRGF0YSkpKTsNCisgICAgfSBlbHNlIGlmIChkd1NpemUgPT0gMSAmJiBwU3RhcnRbMF0gPT0gJygnKSB7DQorICAgICAgICBpbnQgbGV2ZWwgPSAxOw0KKyAgICAgICAgd2hpbGUgKG1fZHdDdXJQb3MgPCBtX2R3U2l6ZSkgew0KKyAgICAgICAgICAgIGlmIChtX3BEYXRhW21fZHdDdXJQb3NdID09ICcpJykgew0KKyAgICAgICAgICAgICAgICBsZXZlbCAtLTsNCisgICAgICAgICAgICAgICAgaWYgKGxldmVsID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX3BEYXRhW21fZHdDdXJQb3NdID09ICdcXCcpIHsNCisgICAgICAgICAgICAgICAgaWYgKG1fZHdTaXplIDw9IG1fZHdDdXJQb3MpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fZHdDdXJQb3MgKys7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX3BEYXRhW21fZHdDdXJQb3NdID09ICcoJykgew0KKyAgICAgICAgICAgICAgICBsZXZlbCArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fZHdTaXplIDw9IG1fZHdDdXJQb3MpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fZHdDdXJQb3MgKys7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9kd0N1clBvcyA8IG1fZHdTaXplKSB7DQorICAgICAgICAgICAgbV9kd0N1clBvcyArKzsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZ0MocFN0YXJ0LCAoRlhfU1RSU0laRSkobV9kd0N1clBvcyAtIChwU3RhcnQgLSBtX3BEYXRhKSkpOw0KKyAgICB9DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZ0MocFN0YXJ0LCBkd1NpemUpOw0KK30NCitGWF9CT09MIENQREZfU2ltcGxlUGFyc2VyOjpTZWFyY2hUb2tlbihGWF9CU1RSIHRva2VuKQ0KK3sNCisgICAgaW50IHRva2VuX2xlbiA9IHRva2VuLkdldExlbmd0aCgpOw0KKyAgICB3aGlsZSAobV9kd0N1clBvcyA8IG1fZHdTaXplIC0gdG9rZW5fbGVuKSB7DQorICAgICAgICBpZiAoRlhTWVNfbWVtY21wMzIobV9wRGF0YSArIG1fZHdDdXJQb3MsIHRva2VuLCB0b2tlbl9sZW4pID09IDApIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIG1fZHdDdXJQb3MgKys7DQorICAgIH0NCisgICAgaWYgKG1fZHdDdXJQb3MgPT0gbV9kd1NpemUgLSB0b2tlbl9sZW4pIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX2R3Q3VyUG9zICs9IHRva2VuX2xlbjsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9TaW1wbGVQYXJzZXI6OlNraXBXb3JkKEZYX0JTVFIgdG9rZW4pDQorew0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmdDIHdvcmQgPSBHZXRXb3JkKCk7DQorICAgICAgICBpZiAod29yZC5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAod29yZCA9PSB0b2tlbikgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX1NpbXBsZVBhcnNlcjo6RmluZFRhZ1BhaXIoRlhfQlNUUiBzdGFydF90b2tlbiwgRlhfQlNUUiBlbmRfdG9rZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQmIHN0YXJ0X3BvcywgRlhfRFdPUkQmIGVuZF9wb3MpDQorew0KKyAgICBpZiAoIXN0YXJ0X3Rva2VuLklzRW1wdHkoKSkgew0KKyAgICAgICAgaWYgKCFTa2lwV29yZChzdGFydF90b2tlbikpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBzdGFydF9wb3MgPSBtX2R3Q3VyUG9zOw0KKyAgICB9DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBlbmRfcG9zID0gbV9kd0N1clBvczsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nQyB3b3JkID0gR2V0V29yZCgpOw0KKyAgICAgICAgaWYgKHdvcmQuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHdvcmQgPT0gZW5kX3Rva2VuKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MIENQREZfU2ltcGxlUGFyc2VyOjpGaW5kVGFnUGFyYW0oRlhfQlNUUiB0b2tlbiwgaW50IG5QYXJhbXMpDQorew0KKyAgICBuUGFyYW1zICsrOw0KKyAgICBGWF9EV09SRCogcEJ1ZiA9IEZYX0FsbG9jKEZYX0RXT1JELCBuUGFyYW1zKTsNCisgICAgaW50IGJ1Zl9pbmRleCA9IDA7DQorICAgIGludCBidWZfY291bnQgPSAwOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgcEJ1ZltidWZfaW5kZXgrK10gPSBtX2R3Q3VyUG9zOw0KKyAgICAgICAgaWYgKGJ1Zl9pbmRleCA9PSBuUGFyYW1zKSB7DQorICAgICAgICAgICAgYnVmX2luZGV4ID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIGJ1Zl9jb3VudCArKzsNCisgICAgICAgIGlmIChidWZfY291bnQgPiBuUGFyYW1zKSB7DQorICAgICAgICAgICAgYnVmX2NvdW50ID0gblBhcmFtczsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9CeXRlU3RyaW5nQyB3b3JkID0gR2V0V29yZCgpOw0KKyAgICAgICAgaWYgKHdvcmQuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgRlhfRnJlZShwQnVmKTsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAod29yZCA9PSB0b2tlbikgew0KKyAgICAgICAgICAgIGlmIChidWZfY291bnQgPCBuUGFyYW1zKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX2R3Q3VyUG9zID0gcEJ1ZltidWZfaW5kZXhdOw0KKyAgICAgICAgICAgIEZYX0ZyZWUocEJ1Zik7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitzdGF0aWMgaW50IF9oZXgyZGVjKGNoYXIgY2gpDQorew0KKyAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5Jykgew0KKyAgICAgICAgcmV0dXJuIGNoIC0gJzAnOw0KKyAgICB9DQorICAgIGlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ2YnKSB7DQorICAgICAgICByZXR1cm4gY2ggLSAnYScgKyAxMDsNCisgICAgfQ0KKyAgICBpZiAoY2ggPj0gJ0EnICYmIGNoIDw9ICdGJykgew0KKyAgICAgICAgcmV0dXJuIGNoIC0gJ0EnICsgMTA7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIFBERl9OYW1lRGVjb2RlKEZYX0JTVFIgYnN0cikNCit7DQorICAgIGludCBzaXplID0gYnN0ci5HZXRMZW5ndGgoKTsNCisgICAgRlhfTFBDU1RSIHBTcmMgPSBic3RyLkdldENTdHIoKTsNCisgICAgaWYgKEZYU1lTX21lbWNocihwU3JjLCAnIycsIHNpemUpID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBic3RyOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIHJlc3VsdDsNCisgICAgRlhfTFBTVFIgcERlc3RTdGFydCA9IHJlc3VsdC5HZXRCdWZmZXIoc2l6ZSk7DQorICAgIEZYX0xQU1RSIHBEZXN0ID0gcERlc3RTdGFydDsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7DQorICAgICAgICBpZiAocFNyY1tpXSA9PSAnIycgJiYgaSA8IHNpemUgLSAyKSB7DQorICAgICAgICAgICAgKnBEZXN0ICsrID0gX2hleDJkZWMocFNyY1tpICsgMV0pICogMTYgKyBfaGV4MmRlYyhwU3JjW2kgKyAyXSk7DQorICAgICAgICAgICAgaSArPSAyOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAqcERlc3QgKysgPSBwU3JjW2ldOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJlc3VsdC5SZWxlYXNlQnVmZmVyKChGWF9TVFJTSVpFKShwRGVzdCAtIHBEZXN0U3RhcnQpKTsNCisgICAgcmV0dXJuIHJlc3VsdDsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgUERGX05hbWVEZWNvZGUoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG9yaWcpDQorew0KKyAgICBpZiAoRlhTWVNfbWVtY2hyKChGWF9MUENTVFIpb3JpZywgJyMnLCBvcmlnLkdldExlbmd0aCgpKSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gb3JpZzsNCisgICAgfQ0KKyAgICByZXR1cm4gUERGX05hbWVEZWNvZGUoQ0ZYX0J5dGVTdHJpbmdDKG9yaWcpKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgUERGX05hbWVFbmNvZGUoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG9yaWcpDQorew0KKyAgICBGWF9MUEJZVEUgc3JjX2J1ZiA9IChGWF9MUEJZVEUpKEZYX0xQQ1NUUilvcmlnOw0KKyAgICBpbnQgc3JjX2xlbiA9IG9yaWcuR2V0TGVuZ3RoKCk7DQorICAgIGludCBkZXN0X2xlbiA9IDA7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgc3JjX2xlbjsgaSArKykgew0KKyAgICAgICAgRlhfQllURSBjaCA9IHNyY19idWZbaV07DQorICAgICAgICBpZiAoY2ggPj0gMHg4MCB8fCBfUERGX0NoYXJUeXBlW2NoXSA9PSAnVycgfHwgY2ggPT0gJyMnIHx8DQorICAgICAgICAgICAgICAgIF9QREZfQ2hhclR5cGVbY2hdID09ICdEJykgew0KKyAgICAgICAgICAgIGRlc3RfbGVuICs9IDM7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGRlc3RfbGVuICsrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChkZXN0X2xlbiA9PSBzcmNfbGVuKSB7DQorICAgICAgICByZXR1cm4gb3JpZzsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyByZXM7DQorICAgIEZYX0xQU1RSIGRlc3RfYnVmID0gcmVzLkdldEJ1ZmZlcihkZXN0X2xlbik7DQorICAgIGRlc3RfbGVuID0gMDsNCisgICAgZm9yIChpID0gMDsgaSA8IHNyY19sZW47IGkgKyspIHsNCisgICAgICAgIEZYX0JZVEUgY2ggPSBzcmNfYnVmW2ldOw0KKyAgICAgICAgaWYgKGNoID49IDB4ODAgfHwgX1BERl9DaGFyVHlwZVtjaF0gPT0gJ1cnIHx8IGNoID09ICcjJyB8fA0KKyAgICAgICAgICAgICAgICBfUERGX0NoYXJUeXBlW2NoXSA9PSAnRCcpIHsNCisgICAgICAgICAgICBkZXN0X2J1ZltkZXN0X2xlbisrXSA9ICcjJzsNCisgICAgICAgICAgICBkZXN0X2J1ZltkZXN0X2xlbisrXSA9ICIwMTIzNDU2Nzg5QUJDREVGIltjaCAvIDE2XTsNCisgICAgICAgICAgICBkZXN0X2J1ZltkZXN0X2xlbisrXSA9ICIwMTIzNDU2Nzg5QUJDREVGIltjaCAlIDE2XTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZGVzdF9idWZbZGVzdF9sZW4rK10gPSBjaDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBkZXN0X2J1ZltkZXN0X2xlbl0gPSAwOw0KKyAgICByZXMuUmVsZWFzZUJ1ZmZlcigpOw0KKyAgICByZXR1cm4gcmVzOw0KK30NCitDRlhfQnl0ZVRleHRCdWYmIG9wZXJhdG9yIDw8IChDRlhfQnl0ZVRleHRCdWYmIGJ1ZiwgY29uc3QgQ1BERl9PYmplY3QqIHBPYmopDQorew0KKyAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICBidWYgPDwgRlhfQlNUUkMoIiBudWxsIik7DQorICAgICAgICByZXR1cm4gYnVmOw0KKyAgICB9DQorICAgIHN3aXRjaCAocE9iai0+R2V0VHlwZSgpKSB7DQorICAgICAgICBjYXNlIFBERk9CSl9OVUxMOg0KKyAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiIG51bGwiKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUERGT0JKX0JPT0xFQU46DQorICAgICAgICBjYXNlIFBERk9CSl9OVU1CRVI6DQorICAgICAgICAgICAgYnVmIDw8ICIgIiA8PCBwT2JqLT5HZXRTdHJpbmcoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUERGT0JKX1NUUklORzogew0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdHIgPSBwT2JqLT5HZXRTdHJpbmcoKTsNCisgICAgICAgICAgICAgICAgRlhfQk9PTCBiSGV4ID0gKChDUERGX1N0cmluZyopcE9iaiktPklzSGV4KCk7DQorICAgICAgICAgICAgICAgIGJ1ZiA8PCBQREZfRW5jb2RlU3RyaW5nKHN0ciwgYkhleCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGT0JKX05BTUU6IHsNCisgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyID0gcE9iai0+R2V0U3RyaW5nKCk7DQorICAgICAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiLyIpIDw8IFBERl9OYW1lRW5jb2RlKHN0cik7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGT0JKX1JFRkVSRU5DRTogew0KKyAgICAgICAgICAgICAgICBDUERGX1JlZmVyZW5jZSogcCA9IChDUERGX1JlZmVyZW5jZSopcE9iajsNCisgICAgICAgICAgICAgICAgYnVmIDw8ICIgIiA8PCBwLT5HZXRSZWZPYmpOdW0oKSA8PCBGWF9CU1RSQygiIDAgUiAiKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBQREZPQkpfQVJSQVk6IHsNCisgICAgICAgICAgICAgICAgQ1BERl9BcnJheSogcCA9IChDUERGX0FycmF5KilwT2JqOw0KKyAgICAgICAgICAgICAgICBidWYgPDwgRlhfQlNUUkMoIlsiKTsNCisgICAgICAgICAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHAtPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwRWxlbWVudCA9IHAtPkdldEVsZW1lbnQoaSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEVsZW1lbnQtPkdldE9iak51bSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmIDw8ICIgIiA8PCBwRWxlbWVudC0+R2V0T2JqTnVtKCkgPDwgRlhfQlNUUkMoIiAwIFIiKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmIDw8IHBFbGVtZW50Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiXSIpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIFBERk9CSl9ESUNUSU9OQVJZOiB7DQorICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcCA9IChDUERGX0RpY3Rpb25hcnkqKXBPYmo7DQorICAgICAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiPDwiKTsNCisgICAgICAgICAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcC0+R2V0U3RhcnRQb3MoKTsNCisgICAgICAgICAgICAgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcga2V5Ow0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBWYWx1ZSA9IHAtPkdldE5leHRFbGVtZW50KHBvcywga2V5KTsNCisgICAgICAgICAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiLyIpIDw8IFBERl9OYW1lRW5jb2RlKGtleSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAocFZhbHVlLT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA8PCAiICIgPDwgcFZhbHVlLT5HZXRPYmpOdW0oKSA8PCBGWF9CU1RSQygiIDAgUiAiKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmIDw8IHBWYWx1ZTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBidWYgPDwgRlhfQlNUUkMoIj4+Iik7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgUERGT0JKX1NUUkVBTTogew0KKyAgICAgICAgICAgICAgICBDUERGX1N0cmVhbSogcCA9IChDUERGX1N0cmVhbSopcE9iajsNCisgICAgICAgICAgICAgICAgYnVmIDw8IHAtPkdldERpY3QoKSA8PCBGWF9CU1RSQygic3RyZWFtXHJcbiIpOw0KKyAgICAgICAgICAgICAgICBDUERGX1N0cmVhbUFjYyBhY2M7DQorICAgICAgICAgICAgICAgIGFjYy5Mb2FkQWxsRGF0YShwLCBUUlVFKTsNCisgICAgICAgICAgICAgICAgYnVmLkFwcGVuZEJsb2NrKGFjYy5HZXREYXRhKCksIGFjYy5HZXRTaXplKCkpOw0KKyAgICAgICAgICAgICAgICBidWYgPDwgRlhfQlNUUkMoIlxyXG5lbmRzdHJlYW0iKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBBU1NFUlQoRkFMU0UpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIHJldHVybiBidWY7DQorfQ0KK0ZYX0ZMT0FUIFBERl9DbGlwRmxvYXQoRlhfRkxPQVQgZikNCit7DQorICAgIGlmIChmIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKGYgPiAxLjBmKSB7DQorICAgICAgICByZXR1cm4gMS4wZjsNCisgICAgfQ0KKyAgICByZXR1cm4gZjsNCit9DQorc3RhdGljIENQREZfT2JqZWN0KiBTZWFyY2hOdW1iZXJOb2RlKENQREZfRGljdGlvbmFyeSogcE5vZGUsIGludCBudW0pDQorew0KKyAgICBDUERGX0FycmF5KiBwTGltaXRzID0gcE5vZGUtPkdldEFycmF5KCJMaW1pdHMiKTsNCisgICAgaWYgKHBMaW1pdHMgJiYgKG51bSA8IHBMaW1pdHMtPkdldEludGVnZXIoMCkgfHwgbnVtID4gcExpbWl0cy0+R2V0SW50ZWdlcigxKSkpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBOdW1iZXJzID0gcE5vZGUtPkdldEFycmF5KCJOdW1zIik7DQorICAgIGlmIChwTnVtYmVycykgew0KKyAgICAgICAgRlhfRFdPUkQgZHdDb3VudCA9IHBOdW1iZXJzLT5HZXRDb3VudCgpIC8gMjsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBkd0NvdW50OyBpICsrKSB7DQorICAgICAgICAgICAgaW50IGluZGV4ID0gcE51bWJlcnMtPkdldEludGVnZXIoaSAqIDIpOw0KKyAgICAgICAgICAgIGlmIChudW0gPT0gaW5kZXgpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBOdW1iZXJzLT5HZXRFbGVtZW50VmFsdWUoaSAqIDIgKyAxKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGluZGV4ID4gbnVtKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBLaWRzID0gcE5vZGUtPkdldEFycmF5KCJLaWRzIik7DQorICAgIGlmIChwS2lkcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcEtpZHMtPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcEtpZCA9IHBLaWRzLT5HZXREaWN0KGkpOw0KKyAgICAgICAgaWYgKHBLaWQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBGb3VuZCA9IFNlYXJjaE51bWJlck5vZGUocEtpZCwgbnVtKTsNCisgICAgICAgIGlmIChwRm91bmQpIHsNCisgICAgICAgICAgICByZXR1cm4gcEZvdW5kOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX09iamVjdCogQ1BERl9OdW1iZXJUcmVlOjpMb29rdXBWYWx1ZShpbnQgbnVtKQ0KK3sNCisgICAgcmV0dXJuIFNlYXJjaE51bWJlck5vZGUobV9wUm9vdCwgbnVtKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3JlbmRlci9mcGRmX3JlbmRlci5jcHAgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcmVuZGVyL2ZwZGZfcmVuZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmUyNWUzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3JlbmRlci9mcGRmX3JlbmRlci5jcHAKQEAgLTAsMCArMSwxNDg4IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcmVuZGVyLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX21vZHVsZS5oIg0KKyNpbmNsdWRlICIuLi9mcGRmX3BhZ2UvcGFnZWludC5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorI2luY2x1ZGUgInJlbmRlcl9pbnQuaCINCitDUERGX0RvY1JlbmRlckRhdGE6OkNQREZfRG9jUmVuZGVyRGF0YShDUERGX0RvY3VtZW50KiBwUERGRG9jKQ0KKyAgICA6IG1fcFBERkRvYyhwUERGRG9jKQ0KKyAgICAsIG1fcEZvbnRDYWNoZShOVUxMKQ0KK3sNCit9DQorQ1BERl9Eb2NSZW5kZXJEYXRhOjp+Q1BERl9Eb2NSZW5kZXJEYXRhKCkNCit7DQorICAgIENsZWFyKFRSVUUpOw0KK30NCit2b2lkIENQREZfRG9jUmVuZGVyRGF0YTo6Q2xlYXIoRlhfQk9PTCBiUmVsZWFzZSkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvczsNCisgICAgew0KKyAgICAgICAgcG9zID0gbV9UeXBlM0ZhY2VNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICAgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgICAgIENQREZfRm9udCogcEZvbnQ7DQorICAgICAgICAgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfVHlwZTNDYWNoZSo+KiBjYWNoZTsNCisgICAgICAgICAgICBtX1R5cGUzRmFjZU1hcC5HZXROZXh0QXNzb2MocG9zLCBwRm9udCwgY2FjaGUpOw0KKyAgICAgICAgICAgIGlmIChiUmVsZWFzZSB8fCBjYWNoZS0+bV9uQ291bnQgPCAyKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBjYWNoZS0+bV9PYmo7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBjYWNoZTsNCisgICAgICAgICAgICAgICAgbV9UeXBlM0ZhY2VNYXAuUmVtb3ZlS2V5KHBGb250KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgIHsNCisgICAgICAgIHBvcyA9IG1fVHJhbnNmZXJGdW5jTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICBDUERGX09iamVjdCoga2V5Ow0KKyAgICAgICAgICAgIENQREZfQ291bnRlZE9iamVjdDxDUERGX1RyYW5zZmVyRnVuYyo+KiB2YWx1ZTsNCisgICAgICAgICAgICBtX1RyYW5zZmVyRnVuY01hcC5HZXROZXh0QXNzb2MocG9zLCBrZXksIHZhbHVlKTsNCisgICAgICAgICAgICBpZiAoYlJlbGVhc2UgfHwgdmFsdWUtPm1fbkNvdW50IDwgMikgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgdmFsdWUtPm1fT2JqOw0KKyAgICAgICAgICAgICAgICBkZWxldGUgdmFsdWU7DQorICAgICAgICAgICAgICAgIG1fVHJhbnNmZXJGdW5jTWFwLlJlbW92ZUtleShrZXkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyNlbmRpZg0KKyAgICBpZiAobV9wRm9udENhY2hlKSB7DQorICAgICAgICBpZiAoYlJlbGVhc2UpIHsNCisgICAgICAgICAgICBkZWxldGUgbV9wRm9udENhY2hlOw0KKyAgICAgICAgICAgIG1fcEZvbnRDYWNoZSA9IE5VTEw7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fcEZvbnRDYWNoZS0+RnJlZUNhY2hlKEZBTFNFKTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfRG9jUmVuZGVyRGF0YTo6SW5pdGlhbGl6ZSgpDQorew0KKyAgICBtX3BGb250Q2FjaGUgPSBGWF9ORVcgQ0ZYX0ZvbnRDYWNoZTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0NQREZfVHlwZTNDYWNoZSogQ1BERl9Eb2NSZW5kZXJEYXRhOjpHZXRDYWNoZWRUeXBlMyhDUERGX1R5cGUzRm9udCogcEZvbnQpDQorew0KKyAgICBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9UeXBlM0NhY2hlKj4qIHBDYWNoZTsNCisgICAgaWYgKCFtX1R5cGUzRmFjZU1hcC5Mb29rdXAocEZvbnQsIHBDYWNoZSkpIHsNCisgICAgICAgIENQREZfVHlwZTNDYWNoZSogcFR5cGUzID0gRlhfTkVXIENQREZfVHlwZTNDYWNoZShwRm9udCk7DQorICAgICAgICBwQ2FjaGUgPSBGWF9ORVcgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfVHlwZTNDYWNoZSo+Ow0KKyAgICAgICAgcENhY2hlLT5tX09iaiA9IHBUeXBlMzsNCisgICAgICAgIHBDYWNoZS0+bV9uQ291bnQgPSAxOw0KKyAgICAgICAgbV9UeXBlM0ZhY2VNYXAuU2V0QXQocEZvbnQsIHBDYWNoZSk7DQorICAgIH0NCisgICAgcENhY2hlLT5tX25Db3VudCsrOw0KKyAgICByZXR1cm4gcENhY2hlLT5tX09iajsNCit9DQordm9pZCBDUERGX0RvY1JlbmRlckRhdGE6OlJlbGVhc2VDYWNoZWRUeXBlMyhDUERGX1R5cGUzRm9udCogcEZvbnQpDQorew0KKyAgICBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9UeXBlM0NhY2hlKj4qIHBDYWNoZTsNCisgICAgaWYgKCFtX1R5cGUzRmFjZU1hcC5Mb29rdXAocEZvbnQsIHBDYWNoZSkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBwQ2FjaGUtPm1fbkNvdW50LS07DQorfQ0KK2NsYXNzIENQREZfUmVuZGVyTW9kdWxlIDogcHVibGljIENQREZfUmVuZGVyTW9kdWxlRGVmDQorew0KK3B1YmxpYzoNCisgICAgdmlydHVhbCB+Q1BERl9SZW5kZXJNb2R1bGUoKSB7fQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJSW5zdGFsbGVkKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgdmlydHVhbCBDUERGX0RvY1JlbmRlckRhdGEqCUNyZWF0ZURvY0RhdGEoQ1BERl9Eb2N1bWVudCogcERvYyk7DQorICAgIHZpcnR1YWwgdm9pZAlEZXN0cm95RG9jRGF0YShDUERGX0RvY1JlbmRlckRhdGEqIHApOw0KKyAgICB2aXJ0dWFsIHZvaWQJQ2xlYXJEb2NEYXRhKENQREZfRG9jUmVuZGVyRGF0YSogcCk7DQorICAgIHZpcnR1YWwgQ1BERl9Eb2NSZW5kZXJEYXRhKiBHZXRSZW5kZXJEYXRhKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuICZtX1JlbmRlckRhdGE7DQorICAgIH0NCisgICAgdmlydHVhbCBDUERGX1BhZ2VSZW5kZXJDYWNoZSoJQ3JlYXRlUGFnZUNhY2hlKENQREZfUGFnZSogcFBhZ2UpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGWF9ORVcgQ1BERl9QYWdlUmVuZGVyQ2FjaGUocFBhZ2UpOw0KKyAgICB9DQorICAgIHZpcnR1YWwgdm9pZAlEZXN0cm95UGFnZUNhY2hlKENQREZfUGFnZVJlbmRlckNhY2hlKiBwQ2FjaGUpOw0KKyAgICB2aXJ0dWFsIENQREZfUmVuZGVyQ29uZmlnKglHZXRDb25maWcoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gJm1fUmVuZGVyQ29uZmlnOw0KKyAgICB9DQorcHJpdmF0ZToNCisgICAgQ1BERl9Eb2NSZW5kZXJEYXRhCW1fUmVuZGVyRGF0YTsNCisgICAgQ1BERl9SZW5kZXJDb25maWcJbV9SZW5kZXJDb25maWc7DQorfTsNCitDUERGX0RvY1JlbmRlckRhdGEqCUNQREZfUmVuZGVyTW9kdWxlOjpDcmVhdGVEb2NEYXRhKENQREZfRG9jdW1lbnQqIHBEb2MpDQorew0KKyAgICBDUERGX0RvY1JlbmRlckRhdGEqIHBEYXRhID0gRlhfTkVXIENQREZfRG9jUmVuZGVyRGF0YShwRG9jKTsNCisgICAgcERhdGEtPkluaXRpYWxpemUoKTsNCisgICAgcmV0dXJuIHBEYXRhOw0KK30NCit2b2lkIENQREZfUmVuZGVyTW9kdWxlOjpEZXN0cm95RG9jRGF0YShDUERGX0RvY1JlbmRlckRhdGEqIHBEb2NEYXRhKQ0KK3sNCisgICAgZGVsZXRlIHBEb2NEYXRhOw0KK30NCit2b2lkIENQREZfUmVuZGVyTW9kdWxlOjpDbGVhckRvY0RhdGEoQ1BERl9Eb2NSZW5kZXJEYXRhKiBwKQ0KK3sNCisgICAgaWYgKHApIHsNCisgICAgICAgIHAtPkNsZWFyKEZBTFNFKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfUmVuZGVyTW9kdWxlOjpEZXN0cm95UGFnZUNhY2hlKENQREZfUGFnZVJlbmRlckNhY2hlKiBwQ2FjaGUpDQorew0KKyAgICBkZWxldGUgcENhY2hlOw0KK30NCit2b2lkIENQREZfTW9kdWxlTWdyOjpJbml0UmVuZGVyTW9kdWxlKCkNCit7DQorICAgIGlmIChtX3BSZW5kZXJNb2R1bGUpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BSZW5kZXJNb2R1bGU7DQorICAgIH0NCisgICAgbV9wUmVuZGVyTW9kdWxlID0gRlhfTkVXIENQREZfUmVuZGVyTW9kdWxlOw0KK30NCitDUERGX1JlbmRlck9wdGlvbnM6OkNQREZfUmVuZGVyT3B0aW9ucygpDQorICAgIDogbV9Db2xvck1vZGUoUkVOREVSX0NPTE9SX05PUk1BTCkNCisgICAgLCBtX0ZsYWdzKFJFTkRFUl9DTEVBUlRZUEUpDQorICAgICwgbV9JbnRlcnBvbGF0aW9uKDApDQorICAgICwgbV9BZGRGbGFncygwKQ0KKyAgICAsIG1fcE9DQ29udGV4dChOVUxMKQ0KKyAgICAsIG1fZHdMaW1pdENhY2hlU2l6ZSgxMDI0ICogMTAyNCAqIDEwMCkNCisgICAgLCBtX0hhbGZ0b25lTGltaXQoLTEpDQorew0KKyNpZiBkZWZpbmVkKF9GUERGQVBJX01JTklfKQ0KKyAgICBtX0ZsYWdzIHw9IFJFTkRFUl9MSU1JVEVESU1BR0VDQUNIRTsNCisjZW5kaWYNCit9DQorRlhfQVJHQiBDUERGX1JlbmRlck9wdGlvbnM6OlRyYW5zbGF0ZUNvbG9yKEZYX0FSR0IgYXJnYikgY29uc3QNCit7DQorICAgIGlmIChtX0NvbG9yTW9kZSA9PSBSRU5ERVJfQ09MT1JfTk9STUFMKSB7DQorICAgICAgICByZXR1cm4gYXJnYjsNCisgICAgfQ0KKyAgICBpZiAobV9Db2xvck1vZGUgPT0gUkVOREVSX0NPTE9SX0FMUEhBKSB7DQorICAgICAgICByZXR1cm4gYXJnYjsNCisgICAgfQ0KKyAgICBpbnQgYSwgciwgZywgYjsNCisgICAgQXJnYkRlY29kZShhcmdiLCBhLCByLCBnLCBiKTsNCisgICAgaW50IGdyYXkgPSBGWFJHQjJHUkFZKHIsIGcsIGIpOw0KKyAgICBpZiAobV9Db2xvck1vZGUgPT0gUkVOREVSX0NPTE9SX1RXT0NPTE9SKSB7DQorICAgICAgICBpbnQgY29sb3IgPSAociAtIGdyYXkpICogKHIgLSBncmF5KSArIChnIC0gZ3JheSkgKiAoZyAtIGdyYXkpICsgKGIgLSBncmF5KSAqIChiIC0gZ3JheSk7DQorICAgICAgICBpZiAoZ3JheSA8IDM1ICYmIGNvbG9yIDwgMjApIHsNCisgICAgICAgICAgICByZXR1cm4gQXJnYkVuY29kZShhLCBtX0ZvcmVDb2xvcik7DQorICAgICAgICB9DQorICAgICAgICBpZiAoZ3JheSA+IDIyMSAmJiBjb2xvciA8IDIwKSB7DQorICAgICAgICAgICAgcmV0dXJuIEFyZ2JFbmNvZGUoYSwgbV9CYWNrQ29sb3IpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGFyZ2I7DQorICAgIH0NCisgICAgaW50IGZyID0gRlhTWVNfR2V0UlZhbHVlKG1fRm9yZUNvbG9yKTsNCisgICAgaW50IGZnID0gRlhTWVNfR2V0R1ZhbHVlKG1fRm9yZUNvbG9yKTsNCisgICAgaW50IGZiID0gRlhTWVNfR2V0QlZhbHVlKG1fRm9yZUNvbG9yKTsNCisgICAgaW50IGJyID0gRlhTWVNfR2V0UlZhbHVlKG1fQmFja0NvbG9yKTsNCisgICAgaW50IGJnID0gRlhTWVNfR2V0R1ZhbHVlKG1fQmFja0NvbG9yKTsNCisgICAgaW50IGJiID0gRlhTWVNfR2V0QlZhbHVlKG1fQmFja0NvbG9yKTsNCisgICAgciA9IChiciAtIGZyKSAqIGdyYXkgLyAyNTUgKyBmcjsNCisgICAgZyA9IChiZyAtIGZnKSAqIGdyYXkgLyAyNTUgKyBmZzsNCisgICAgYiA9IChiYiAtIGZiKSAqIGdyYXkgLyAyNTUgKyBmYjsNCisgICAgcmV0dXJuIEFyZ2JFbmNvZGUoYSwgciwgZywgYik7DQorfQ0KK0NQREZfUmVuZGVyU3RhdHVzOjpDUERGX1JlbmRlclN0YXR1cygpDQorew0KKyAgICBtX3BDb250ZXh0ID0gTlVMTDsNCisgICAgbV9iU3RvcHBlZCA9IEZBTFNFOw0KKyAgICBtX0xldmVsID0gMDsNCisgICAgbV9wRGV2aWNlID0gTlVMTDsNCisgICAgbV9wQ3VyT2JqID0gTlVMTDsNCisgICAgbV9wU3RvcE9iaiA9IE5VTEw7DQorICAgIG1fSGFsZnRvbmVMaW1pdCA9IDA7DQorICAgIG1fcE9iamVjdFJlbmRlcmVyID0gTlVMTDsNCisgICAgbV9iUHJpbnQgPSBGQUxTRTsNCisgICAgbV9UcmFuc3BhcmVuY3kgPSAwOw0KKyAgICBtX0RpdGhlckJpdHMgPSAwOw0KKyAgICBtX2JEcm9wT2JqZWN0cyA9IEZBTFNFOw0KKyAgICBtX2JTdGRDUyA9IEZBTFNFOw0KKyAgICBtX0dyb3VwRmFtaWx5ID0gMDsNCisgICAgbV9iTG9hZE1hc2sgPSBGQUxTRTsNCisgICAgbV9wVHlwZTNDaGFyID0gTlVMTDsNCisgICAgbV9UM0ZpbGxDb2xvciA9IDA7DQorICAgIG1fcEZvcm1SZXNvdXJjZSA9IE5VTEw7DQorICAgIG1fcFBhZ2VSZXNvdXJjZSA9IE5VTEw7DQorICAgIG1fY3VyQmxlbmQgPSBGWERJQl9CTEVORF9OT1JNQUw7DQorfQ0KK0NQREZfUmVuZGVyU3RhdHVzOjp+Q1BERl9SZW5kZXJTdGF0dXMoKQ0KK3sNCisgICAgaWYgKG1fcE9iamVjdFJlbmRlcmVyKSB7DQorICAgICAgICBkZWxldGUgbV9wT2JqZWN0UmVuZGVyZXI7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX1JlbmRlclN0YXR1czo6SW5pdGlhbGl6ZShpbnQgbGV2ZWwsIENQREZfUmVuZGVyQ29udGV4dCogcENvbnRleHQsIENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwRGV2aWNlTWF0cml4LCBjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBTdG9wT2JqLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1BERl9SZW5kZXJTdGF0dXMqIHBQYXJlbnRTdGF0ZSwgY29uc3QgQ1BERl9HcmFwaGljU3RhdGVzKiBwSW5pdGlhbFN0YXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMsIGludCB0cmFuc3BhcmVuY3ksIEZYX0JPT0wgYkRyb3BPYmplY3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybVJlc291cmNlLCBGWF9CT09MIGJTdGRDUywgQ1BERl9UeXBlM0NoYXIqIHBUeXBlM0NoYXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9BUkdCIGZpbGxfY29sb3IsIEZYX0RXT1JEIEdyb3VwRmFtaWx5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiTG9hZE1hc2spDQorew0KKyAgICBtX0xldmVsID0gbGV2ZWw7DQorICAgIG1fcENvbnRleHQgPSBwQ29udGV4dDsNCisgICAgbV9wRGV2aWNlID0gcERldmljZTsNCisgICAgbV9EaXRoZXJCaXRzID0gcERldmljZS0+R2V0RGV2aWNlQ2FwcyhGWERDX0RJVEhFUl9CSVRTKTsNCisgICAgbV9iUHJpbnQgPSBtX3BEZXZpY2UtPkdldERldmljZUNsYXNzKCkgIT0gRlhEQ19ESVNQTEFZOw0KKyAgICBpZiAocERldmljZU1hdHJpeCkgew0KKyAgICAgICAgbV9EZXZpY2VNYXRyaXggPSAqcERldmljZU1hdHJpeDsNCisgICAgfQ0KKyAgICBtX3BTdG9wT2JqID0gcFN0b3BPYmo7DQorICAgIGlmIChwT3B0aW9ucykgew0KKyAgICAgICAgbV9PcHRpb25zID0gKnBPcHRpb25zOw0KKyAgICB9DQorICAgIG1fYkRyb3BPYmplY3RzID0gYkRyb3BPYmplY3RzOw0KKyAgICBtX2JTdGRDUyA9IGJTdGRDUzsNCisgICAgbV9UM0ZpbGxDb2xvciA9IGZpbGxfY29sb3I7DQorICAgIG1fcFR5cGUzQ2hhciA9IHBUeXBlM0NoYXI7DQorICAgIG1fR3JvdXBGYW1pbHkgPSBHcm91cEZhbWlseTsNCisgICAgbV9iTG9hZE1hc2sgPSBiTG9hZE1hc2s7DQorICAgIG1fcEZvcm1SZXNvdXJjZSA9IHBGb3JtUmVzb3VyY2U7DQorICAgIG1fcFBhZ2VSZXNvdXJjZSA9IG1fcENvbnRleHQtPm1fcFBhZ2VSZXNvdXJjZXM7DQorICAgIGlmIChwSW5pdGlhbFN0YXRlcyAmJiAhbV9wVHlwZTNDaGFyKSB7DQorICAgICAgICBtX0luaXRpYWxTdGF0ZXMuQ29weVN0YXRlcygqcEluaXRpYWxTdGF0ZXMpOw0KKyAgICAgICAgaWYgKHBQYXJlbnRTdGF0ZSkgew0KKyAgICAgICAgICAgIENQREZfQ29sb3JTdGF0ZURhdGEqIHBDb2xvckRhdGEgPSAoQ1BERl9Db2xvclN0YXRlRGF0YSopKGNvbnN0IENQREZfQ29sb3JTdGF0ZURhdGEqKW1fSW5pdGlhbFN0YXRlcy5tX0NvbG9yU3RhdGU7DQorICAgICAgICAgICAgQ1BERl9Db2xvclN0YXRlRGF0YSogcFBhcmVudERhdGEgPSAoQ1BERl9Db2xvclN0YXRlRGF0YSopKGNvbnN0IENQREZfQ29sb3JTdGF0ZURhdGEqKXBQYXJlbnRTdGF0ZS0+bV9Jbml0aWFsU3RhdGVzLm1fQ29sb3JTdGF0ZTsNCisgICAgICAgICAgICBpZiAoIXBDb2xvckRhdGEgfHwgcENvbG9yRGF0YS0+bV9GaWxsQ29sb3IuSXNOdWxsKCkpIHsNCisgICAgICAgICAgICAgICAgQ1BERl9Db2xvclN0YXRlRGF0YSogcERhdGEgPSBtX0luaXRpYWxTdGF0ZXMubV9Db2xvclN0YXRlLkdldE1vZGlmeSgpOw0KKyAgICAgICAgICAgICAgICBwRGF0YS0+bV9GaWxsUkdCID0gcFBhcmVudERhdGEtPm1fRmlsbFJHQjsNCisgICAgICAgICAgICAgICAgcERhdGEtPm1fRmlsbENvbG9yLkNvcHkoJnBQYXJlbnREYXRhLT5tX0ZpbGxDb2xvcik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICghcENvbG9yRGF0YSB8fCBwQ29sb3JEYXRhLT5tX1N0cm9rZUNvbG9yLklzTnVsbCgpKSB7DQorICAgICAgICAgICAgICAgIENQREZfQ29sb3JTdGF0ZURhdGEqIHBEYXRhID0gbV9Jbml0aWFsU3RhdGVzLm1fQ29sb3JTdGF0ZS5HZXRNb2RpZnkoKTsNCisgICAgICAgICAgICAgICAgcERhdGEtPm1fU3Ryb2tlUkdCID0gcFBhcmVudERhdGEtPm1fRmlsbFJHQjsNCisgICAgICAgICAgICAgICAgcERhdGEtPm1fU3Ryb2tlQ29sb3IuQ29weSgmcFBhcmVudERhdGEtPm1fU3Ryb2tlQ29sb3IpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fSW5pdGlhbFN0YXRlcy5EZWZhdWx0U3RhdGVzKCk7DQorICAgIH0NCisjaWYgZGVmaW5lZChfRlBERkFQSV9NSU5JXyl8fGRlZmluZWQoX0ZYQ09SRV9MSU1JVEVEX0NQVV8pDQorICAgIG1fSGFsZnRvbmVMaW1pdCA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0UmVuZGVyTW9kdWxlKCktPkdldENvbmZpZygpLT5tX0hhbGZ0b25lTGltaXQ7DQorICAgIGlmIChwT3B0aW9ucyAmJiBwT3B0aW9ucy0+bV9IYWxmdG9uZUxpbWl0ID49IDApIHsNCisgICAgICAgIG1fSGFsZnRvbmVMaW1pdCA9IHBPcHRpb25zLT5tX0hhbGZ0b25lTGltaXQ7DQorICAgIH0NCisjZW5kaWYNCisgICAgbV9wT2JqZWN0UmVuZGVyZXIgPSBOVUxMOw0KKyAgICBtX1RyYW5zcGFyZW5jeSA9IHRyYW5zcGFyZW5jeTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ1BERl9SZW5kZXJTdGF0dXM6OlJlbmRlck9iamVjdExpc3QoY29uc3QgQ1BERl9QYWdlT2JqZWN0cyogcE9ianMsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKQ0KK3sNCisgICAgaWYgKG1fTGV2ZWwgPiAzMikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9GbG9hdFJlY3QgY2xpcF9yZWN0ID0gbV9wRGV2aWNlLT5HZXRDbGlwQm94KCk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggZGV2aWNlMm9iamVjdDsNCisgICAgZGV2aWNlMm9iamVjdC5TZXRSZXZlcnNlKCpwT2JqMkRldmljZSk7DQorICAgIGRldmljZTJvYmplY3QuVHJhbnNmb3JtUmVjdChjbGlwX3JlY3QpOw0KKyAgICBpbnQgaW5kZXggPSAwOw0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBwT2Jqcy0+R2V0Rmlyc3RPYmplY3RQb3NpdGlvbigpOw0KKyAgICB3aGlsZShwb3MpIHsNCisgICAgICAgIGluZGV4ICsrOw0KKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwQ3VyT2JqID0gcE9ianMtPkdldE5leHRPYmplY3QocG9zKTsNCisgICAgICAgIGlmIChwQ3VyT2JqID09IG1fcFN0b3BPYmopIHsNCisgICAgICAgICAgICBtX2JTdG9wcGVkID0gVFJVRTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBpZiAoIXBDdXJPYmopIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmKHBDdXJPYmogPT0gTlVMTCB8fCBwQ3VyT2JqLT5tX0xlZnQgPiBjbGlwX3JlY3QucmlnaHQgfHwgcEN1ck9iai0+bV9SaWdodCA8IGNsaXBfcmVjdC5sZWZ0IHx8DQorICAgICAgICAgICAgICAgIHBDdXJPYmotPm1fQm90dG9tID4gY2xpcF9yZWN0LnRvcCB8fCBwQ3VyT2JqLT5tX1RvcCA8IGNsaXBfcmVjdC5ib3R0b20pIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIFJlbmRlclNpbmdsZU9iamVjdChwQ3VyT2JqLCBwT2JqMkRldmljZSk7DQorICAgICAgICBpZiAobV9iU3RvcHBlZCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCit2b2lkIENQREZfUmVuZGVyU3RhdHVzOjpSZW5kZXJTaW5nbGVPYmplY3QoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSkNCit7DQorICAgIGlmIChtX0xldmVsID4gMzIpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BDdXJPYmogPSBwT2JqOw0KKyAgICBpZiAobV9PcHRpb25zLm1fcE9DQ29udGV4dCAmJiBwT2JqLT5tX0NvbnRlbnRNYXJrLk5vdE51bGwoKSkNCisgICAgICAgIGlmICghbV9PcHRpb25zLm1fcE9DQ29udGV4dC0+Q2hlY2tPYmplY3RWaXNpYmxlKHBPYmopKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICBQcm9jZXNzQ2xpcFBhdGgocE9iai0+bV9DbGlwUGF0aCwgcE9iajJEZXZpY2UpOw0KKyAgICBpZiAoUHJvY2Vzc1RyYW5zcGFyZW5jeShwT2JqLCBwT2JqMkRldmljZSkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBQcm9jZXNzT2JqZWN0Tm9DbGlwKHBPYmosIHBPYmoyRGV2aWNlKTsNCit9DQorRlhfQk9PTCBDUERGX1JlbmRlclN0YXR1czo6Q29udGludWVTaW5nbGVPYmplY3QoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZiAobV9wT2JqZWN0UmVuZGVyZXIpIHsNCisgICAgICAgIGlmIChtX3BPYmplY3RSZW5kZXJlci0+Q29udGludWUocFBhdXNlKSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFtX3BPYmplY3RSZW5kZXJlci0+bV9SZXN1bHQpIHsNCisgICAgICAgICAgICBEcmF3T2JqV2l0aEJhY2tncm91bmQocE9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgfQ0KKyNpZmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICAgICAgaWYgKG1fRGl0aGVyQml0cykgew0KKyAgICAgICAgICAgIERpdGhlck9iamVjdEFyZWEocE9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICAgICAgZGVsZXRlIG1fcE9iamVjdFJlbmRlcmVyOw0KKyAgICAgICAgbV9wT2JqZWN0UmVuZGVyZXIgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fcEN1ck9iaiA9IHBPYmo7DQorICAgIGlmIChtX09wdGlvbnMubV9wT0NDb250ZXh0ICYmIHBPYmotPm1fQ29udGVudE1hcmsuTm90TnVsbCgpKQ0KKyAgICAgICAgaWYgKCFtX09wdGlvbnMubV9wT0NDb250ZXh0LT5DaGVja09iamVjdFZpc2libGUocE9iaikpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIFByb2Nlc3NDbGlwUGF0aChwT2JqLT5tX0NsaXBQYXRoLCBwT2JqMkRldmljZSk7DQorICAgIGlmIChQcm9jZXNzVHJhbnNwYXJlbmN5KHBPYmosIHBPYmoyRGV2aWNlKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChwT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9JTUFHRSkgew0KKyAgICAgICAgbV9wT2JqZWN0UmVuZGVyZXIgPSBJUERGX09iamVjdFJlbmRlcmVyOjpDcmVhdGUocE9iai0+bV9UeXBlKTsNCisgICAgICAgIGlmICghbV9wT2JqZWN0UmVuZGVyZXItPlN0YXJ0KHRoaXMsIHBPYmosIHBPYmoyRGV2aWNlLCBGQUxTRSkpIHsNCisgICAgICAgICAgICBpZiAoIW1fcE9iamVjdFJlbmRlcmVyLT5tX1Jlc3VsdCkgew0KKyAgICAgICAgICAgICAgICBEcmF3T2JqV2l0aEJhY2tncm91bmQocE9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgICAgIH0NCisjaWZkZWYgX0ZQREZBUElfTUlOSV8NCisgICAgICAgICAgICBpZiAobV9EaXRoZXJCaXRzKSB7DQorICAgICAgICAgICAgICAgIERpdGhlck9iamVjdEFyZWEocE9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgICAgIH0NCisjZW5kaWYNCisgICAgICAgICAgICBkZWxldGUgbV9wT2JqZWN0UmVuZGVyZXI7DQorICAgICAgICAgICAgbV9wT2JqZWN0UmVuZGVyZXIgPSBOVUxMOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBDb250aW51ZVNpbmdsZU9iamVjdChwT2JqLCBwT2JqMkRldmljZSwgcFBhdXNlKTsNCisgICAgfQ0KKyAgICBQcm9jZXNzT2JqZWN0Tm9DbGlwKHBPYmosIHBPYmoyRGV2aWNlKTsNCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitJUERGX09iamVjdFJlbmRlcmVyKiBJUERGX09iamVjdFJlbmRlcmVyOjpDcmVhdGUoaW50IHR5cGUpDQorew0KKyAgICBJUERGX09iamVjdFJlbmRlcmVyKiBwUmVuZGVyZXIgPSBOVUxMOw0KKyAgICBpZiAodHlwZSA9PSBQREZQQUdFX0lNQUdFKSB7DQorICAgICAgICBwUmVuZGVyZXIgPSBGWF9ORVcgQ1BERl9JbWFnZVJlbmRlcmVyOw0KKyAgICB9DQorICAgIHJldHVybiBwUmVuZGVyZXI7DQorfQ0KK0ZYX0JPT0wgQ1BERl9SZW5kZXJTdGF0dXM6OkdldE9iamVjdENsaXBwZWRSZWN0KGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UsIEZYX0JPT0wgYkxvZ2ljYWwsIEZYX1JFQ1QgJnJlY3QpIGNvbnN0DQorew0KKyAgICByZWN0ID0gcE9iai0+R2V0QkJveChwT2JqMkRldmljZSk7DQorICAgIEZYX1JFQ1QgcnRDbGlwID0gbV9wRGV2aWNlLT5HZXRDbGlwQm94KCk7DQorICAgIGlmICghYkxvZ2ljYWwpIHsNCisgICAgICAgIENGWF9NYXRyaXggZENUTSA9IG1fcERldmljZS0+R2V0Q1RNKCk7DQorICAgICAgICBGWF9GTE9BVCBhID0gRlhTWVNfZmFicyhkQ1RNLmEpOw0KKyAgICAgICAgRlhfRkxPQVQgZCA9IEZYU1lTX2ZhYnMoZENUTS5kKTsNCisgICAgICAgIGlmIChhICE9IDEuMGYgfHwgZCAhPSAxLjBmKSB7DQorICAgICAgICAgICAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIChGWF9JTlQzMilGWFNZU19jZWlsKChGWF9GTE9BVClyZWN0LldpZHRoKCkgKiBhKTsNCisgICAgICAgICAgICByZWN0LmJvdHRvbSA9IHJlY3QudG9wICsgKEZYX0lOVDMyKUZYU1lTX2NlaWwoKEZYX0ZMT0FUKXJlY3QuSGVpZ2h0KCkgKiBkKTsNCisgICAgICAgICAgICBydENsaXAucmlnaHQgPSBydENsaXAubGVmdCArIChGWF9JTlQzMilGWFNZU19jZWlsKChGWF9GTE9BVClydENsaXAuV2lkdGgoKSAqIGEpOw0KKyAgICAgICAgICAgIHJ0Q2xpcC5ib3R0b20gPSBydENsaXAudG9wICsgKEZYX0lOVDMyKUZYU1lTX2NlaWwoKEZYX0ZMT0FUKXJ0Q2xpcC5IZWlnaHQoKSAqIGQpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJlY3QuSW50ZXJzZWN0KHJ0Q2xpcCk7DQorICAgIHJldHVybiByZWN0LklzRW1wdHkoKTsNCit9DQordm9pZCBDUERGX1JlbmRlclN0YXR1czo6RGl0aGVyT2JqZWN0QXJlYShjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKQ0KK3sNCisgICAgQ0ZYX0RJQml0bWFwKiBwQml0bWFwID0gbV9wRGV2aWNlLT5HZXRCaXRtYXAoKTsNCisgICAgaWYgKHBCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX1JFQ1QgcmVjdDsNCisgICAgaWYgKEdldE9iamVjdENsaXBwZWRSZWN0KHBPYmosIHBPYmoyRGV2aWNlLCBGQUxTRSwgcmVjdCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9EaXRoZXJCaXRzID09IDIpIHsNCisgICAgICAgIHN0YXRpYyBGWF9BUkdCIHBhbFs0XSA9IHswLCA4NSwgMTcwLCAyNTV9Ow0KKyAgICAgICAgcEJpdG1hcC0+RGl0aGVyRlMocGFsLCA0LCAmcmVjdCk7DQorICAgIH0gZWxzZSBpZiAobV9EaXRoZXJCaXRzID09IDMpIHsNCisgICAgICAgIHN0YXRpYyBGWF9BUkdCIHBhbFs4XSA9IHswLCAzNiwgNzMsIDEwOSwgMTQ2LCAxODIsIDIxOSwgMjU1fTsNCisgICAgICAgIHBCaXRtYXAtPkRpdGhlckZTKHBhbCwgOCwgJnJlY3QpOw0KKyAgICB9IGVsc2UgaWYgKG1fRGl0aGVyQml0cyA9PSA0KSB7DQorICAgICAgICBzdGF0aWMgRlhfQVJHQiBwYWxbMTZdID0gezAsIDE3LCAzNCwgNTEsIDY4LCA4NSwgMTAyLCAxMTksIDEzNiwgMTUzLCAxNzAsIDE4NywgMjA0LCAyMjEsIDIzOCwgMjU1fTsNCisgICAgICAgIHBCaXRtYXAtPkRpdGhlckZTKHBhbCwgMTYsICZyZWN0KTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfUmVuZGVyU3RhdHVzOjpQcm9jZXNzT2JqZWN0Tm9DbGlwKGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpDQorew0KKyAgICBGWF9CT09MIGJSZXQgPSBGQUxTRTsNCisgICAgc3dpdGNoIChwT2JqLT5tX1R5cGUpIHsNCisgICAgICAgIGNhc2UgUERGUEFHRV9URVhUOg0KKyAgICAgICAgICAgIGJSZXQgPSBQcm9jZXNzVGV4dCgoQ1BERl9UZXh0T2JqZWN0KilwT2JqLCBwT2JqMkRldmljZSwgTlVMTCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBERlBBR0VfUEFUSDoNCisgICAgICAgICAgICBiUmV0ID0gUHJvY2Vzc1BhdGgoKENQREZfUGF0aE9iamVjdCopcE9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBQREZQQUdFX0lNQUdFOg0KKyAgICAgICAgICAgIGJSZXQgPSBQcm9jZXNzSW1hZ2UoKENQREZfSW1hZ2VPYmplY3QqKXBPYmosIHBPYmoyRGV2aWNlKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUERGUEFHRV9TSEFESU5HOg0KKyAgICAgICAgICAgIGJSZXQgPSBQcm9jZXNzU2hhZGluZygoQ1BERl9TaGFkaW5nT2JqZWN0KilwT2JqLCBwT2JqMkRldmljZSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBERlBBR0VfRk9STToNCisgICAgICAgICAgICBiUmV0ID0gUHJvY2Vzc0Zvcm0oKENQREZfRm9ybU9iamVjdCopcE9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyNpZiBkZWZpbmVkKF9GUERGQVBJX01JTklfKQ0KKyAgICAgICAgY2FzZSBQREZQQUdFX0lOTElORVM6DQorICAgICAgICAgICAgYlJldCA9IFByb2Nlc3NJbmxpbmVzKChDUERGX0lubGluZUltYWdlcyopcE9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyNlbmRpZg0KKyAgICB9DQorICAgIGlmICghYlJldCkgew0KKyAgICAgICAgRHJhd09ialdpdGhCYWNrZ3JvdW5kKHBPYmosIHBPYmoyRGV2aWNlKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfUmVuZGVyU3RhdHVzOjpEcmF3T2JqV2l0aEJsZW5kKGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpDQorew0KKyAgICBGWF9CT09MIGJSZXQgPSBGQUxTRTsNCisgICAgc3dpdGNoIChwT2JqLT5tX1R5cGUpIHsNCisgICAgICAgIGNhc2UgUERGUEFHRV9QQVRIOg0KKyAgICAgICAgICAgIGJSZXQgPSBQcm9jZXNzUGF0aCgoQ1BERl9QYXRoT2JqZWN0KilwT2JqLCBwT2JqMkRldmljZSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFBERlBBR0VfSU1BR0U6DQorICAgICAgICAgICAgYlJldCA9IFByb2Nlc3NJbWFnZSgoQ1BERl9JbWFnZU9iamVjdCAqKXBPYmosIHBPYmoyRGV2aWNlKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgUERGUEFHRV9GT1JNOg0KKyAgICAgICAgICAgIGJSZXQgPSBQcm9jZXNzRm9ybSgoQ1BERl9Gb3JtT2JqZWN0KilwT2JqLCBwT2JqMkRldmljZSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgcmV0dXJuIGJSZXQ7DQorfQ0KK3ZvaWQgQ1BERl9SZW5kZXJTdGF0dXM6OkdldFNjYWxlZE1hdHJpeChDRlhfTWF0cml4ICZtYXRyaXgpIGNvbnN0DQorew0KKyAgICBDRlhfTWF0cml4IGRDVE0gPSBtX3BEZXZpY2UtPkdldENUTSgpOw0KKyAgICBtYXRyaXguYSAqPSBGWFNZU19mYWJzKGRDVE0uYSk7DQorICAgIG1hdHJpeC5kICo9IEZYU1lTX2ZhYnMoZENUTS5kKTsNCit9DQordm9pZCBDUERGX1JlbmRlclN0YXR1czo6RHJhd09ialdpdGhCYWNrZ3JvdW5kKGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpDQorew0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykgfHwgZGVmaW5lZChfRlhDT1JFX0ZFQVRVUkVfQUxMXykNCisgICAgRlhfUkVDVCByZWN0Ow0KKyAgICBpZiAoR2V0T2JqZWN0Q2xpcHBlZFJlY3QocE9iaiwgcE9iajJEZXZpY2UsIEZBTFNFLCByZWN0KSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCByZXMgPSAzMDA7DQorICAgIGlmIChwT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9JTUFHRSAmJiBtX3BEZXZpY2UtPkdldERldmljZUNhcHMoRlhEQ19ERVZJQ0VfQ0xBU1MpID09IEZYRENfUFJJTlRFUikgew0KKyAgICAgICAgcmVzID0gMDsNCisgICAgfQ0KKyAgICBDUERGX1NjYWxlZFJlbmRlckJ1ZmZlciBidWZmZXI7DQorICAgIGlmICghYnVmZmVyLkluaXRpYWxpemUobV9wQ29udGV4dCwgbV9wRGV2aWNlLCAmcmVjdCwgcE9iaiwgJm1fT3B0aW9ucywgcmVzKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4ID0gKnBPYmoyRGV2aWNlOw0KKyAgICBtYXRyaXguQ29uY2F0KCpidWZmZXIuR2V0TWF0cml4KCkpOw0KKyAgICBHZXRTY2FsZWRNYXRyaXgobWF0cml4KTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybVJlc291cmNlID0gTlVMTDsNCisgICAgaWYgKHBPYmotPm1fVHlwZSA9PSBQREZQQUdFX0ZPUk0pIHsNCisgICAgICAgIENQREZfRm9ybU9iamVjdCogcEZvcm1PYmogPSAoQ1BERl9Gb3JtT2JqZWN0KilwT2JqOw0KKyAgICAgICAgaWYgKHBGb3JtT2JqLT5tX3BGb3JtICYmIHBGb3JtT2JqLT5tX3BGb3JtLT5tX3BGb3JtRGljdCkgew0KKyAgICAgICAgICAgIHBGb3JtUmVzb3VyY2UgPSBwRm9ybU9iai0+bV9wRm9ybS0+bV9wRm9ybURpY3QtPkdldERpY3QoRlhfQlNUUkMoIlJlc291cmNlcyIpKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDUERGX1JlbmRlclN0YXR1cyBzdGF0dXM7DQorICAgIHN0YXR1cy5Jbml0aWFsaXplKG1fTGV2ZWwgKyAxLCBtX3BDb250ZXh0LCBidWZmZXIuR2V0RGV2aWNlKCksIGJ1ZmZlci5HZXRNYXRyaXgoKSwgTlVMTCwgTlVMTCwgTlVMTCwgJm1fT3B0aW9ucywgbV9UcmFuc3BhcmVuY3ksIG1fYkRyb3BPYmplY3RzLCBwRm9ybVJlc291cmNlKTsNCisgICAgc3RhdHVzLlJlbmRlclNpbmdsZU9iamVjdChwT2JqLCAmbWF0cml4KTsNCisgICAgYnVmZmVyLk91dHB1dFRvRGV2aWNlKCk7DQorI2VuZGlmDQorfQ0KK0ZYX0JPT0wgQ1BERl9SZW5kZXJTdGF0dXM6OlByb2Nlc3NGb3JtKENQREZfRm9ybU9iamVjdCogcEZvcm1PYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKQ0KK3sNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwT0MgPSBwRm9ybU9iai0+bV9wRm9ybS0+bV9wRm9ybURpY3QtPkdldERpY3QoRlhfQlNUUkMoIk9DIikpOw0KKyAgICBpZiAocE9DICYmIG1fT3B0aW9ucy5tX3BPQ0NvbnRleHQgJiYgIW1fT3B0aW9ucy5tX3BPQ0NvbnRleHQtPkNoZWNrT0NHVmlzaWJsZShwT0MpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeCA9IHBGb3JtT2JqLT5tX0Zvcm1NYXRyaXg7DQorICAgIG1hdHJpeC5Db25jYXQoKnBPYmoyRGV2aWNlKTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUmVzb3VyY2VzID0gTlVMTDsNCisgICAgaWYgKHBGb3JtT2JqLT5tX3BGb3JtICYmIHBGb3JtT2JqLT5tX3BGb3JtLT5tX3BGb3JtRGljdCkgew0KKyAgICAgICAgcFJlc291cmNlcyA9IHBGb3JtT2JqLT5tX3BGb3JtLT5tX3BGb3JtRGljdC0+R2V0RGljdChGWF9CU1RSQygiUmVzb3VyY2VzIikpOw0KKyAgICB9DQorICAgIENQREZfUmVuZGVyU3RhdHVzIHN0YXR1czsNCisgICAgc3RhdHVzLkluaXRpYWxpemUobV9MZXZlbCArIDEsIG1fcENvbnRleHQsIG1fcERldmljZSwgTlVMTCwgbV9wU3RvcE9iaiwNCisgICAgICAgICAgICAgICAgICAgICAgdGhpcywgcEZvcm1PYmosICZtX09wdGlvbnMsIG1fVHJhbnNwYXJlbmN5LCBtX2JEcm9wT2JqZWN0cywgcFJlc291cmNlcywgVFJVRSk7DQorICAgIHN0YXR1cy5tX2N1ckJsZW5kID0gbV9jdXJCbGVuZDsNCisgICAgbV9wRGV2aWNlLT5TYXZlU3RhdGUoKTsNCisgICAgc3RhdHVzLlJlbmRlck9iamVjdExpc3QocEZvcm1PYmotPm1fcEZvcm0sICZtYXRyaXgpOw0KKyAgICBtX2JTdG9wcGVkID0gc3RhdHVzLm1fYlN0b3BwZWQ7DQorICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIElzQXZhaWxhYmxlTWF0cml4KGNvbnN0IENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCkNCit7DQorICAgIGlmIChtYXRyaXguYSA9PSAwIHx8IG1hdHJpeC5kID09IDApIHsNCisgICAgICAgIHJldHVybiBtYXRyaXguYiAhPSAwICYmIG1hdHJpeC5jICE9IDA7DQorICAgIH0NCisgICAgaWYgKG1hdHJpeC5iID09IDAgfHwgbWF0cml4LmMgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIG1hdHJpeC5hICE9IDAgJiYgbWF0cml4LmQgIT0gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX1JlbmRlclN0YXR1czo6UHJvY2Vzc1BhdGgoQ1BERl9QYXRoT2JqZWN0KiBwUGF0aE9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpDQorew0KKyAgICBpbnQgRmlsbFR5cGUgPSBwUGF0aE9iai0+bV9GaWxsVHlwZTsNCisgICAgRlhfQk9PTCBiU3Ryb2tlID0gcFBhdGhPYmotPm1fYlN0cm9rZTsNCisgICAgUHJvY2Vzc1BhdGhQYXR0ZXJuKHBQYXRoT2JqLCBwT2JqMkRldmljZSwgRmlsbFR5cGUsIGJTdHJva2UpOw0KKyAgICBpZiAoRmlsbFR5cGUgPT0gMCAmJiAhYlN0cm9rZSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgRlhfRFdPUkQgZmlsbF9hcmdiID0gMDsNCisgICAgaWYgKEZpbGxUeXBlKSB7DQorICAgICAgICBmaWxsX2FyZ2IgPSBHZXRGaWxsQXJnYihwUGF0aE9iaik7DQorICAgIH0NCisgICAgRlhfRFdPUkQgc3Ryb2tlX2FyZ2IgPSAwOw0KKyAgICBpZiAoYlN0cm9rZSkgew0KKyAgICAgICAgc3Ryb2tlX2FyZ2IgPSBHZXRTdHJva2VBcmdiKHBQYXRoT2JqKTsNCisgICAgfQ0KKyAgICBDRlhfQWZmaW5lTWF0cml4IHBhdGhfbWF0cml4ID0gcFBhdGhPYmotPm1fTWF0cml4Ow0KKyAgICBwYXRoX21hdHJpeC5Db25jYXQoKnBPYmoyRGV2aWNlKTsNCisgICAgaWYgKCFJc0F2YWlsYWJsZU1hdHJpeChwYXRoX21hdHJpeCkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmIChGaWxsVHlwZSAmJiAobV9PcHRpb25zLm1fRmxhZ3MgJiBSRU5ERVJfUkVDVF9BQSkpIHsNCisgICAgICAgIEZpbGxUeXBlIHw9IEZYRklMTF9SRUNUX0FBOw0KKyAgICB9DQorICAgIGlmIChtX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9GSUxMX0ZVTExDT1ZFUikgew0KKyAgICAgICAgRmlsbFR5cGUgfD0gRlhGSUxMX0ZVTExDT1ZFUjsNCisgICAgfQ0KKyAgICBpZiAobV9PcHRpb25zLm1fRmxhZ3MgJiBSRU5ERVJfTk9QQVRIU01PT1RIKSB7DQorICAgICAgICBGaWxsVHlwZSB8PSBGWEZJTExfTk9QQVRIU01PT1RIOw0KKyAgICB9DQorICAgIGlmIChiU3Ryb2tlKSB7DQorICAgICAgICBGaWxsVHlwZSB8PSBGWF9GSUxMX1NUUk9LRTsNCisgICAgfQ0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykgfHwgZGVmaW5lZChfRlhDT1JFX0ZFQVRVUkVfQUxMXykNCisgICAgY29uc3QgQ1BERl9HZW5lcmFsU3RhdGVEYXRhKiBwR2VuZXJhbERhdGEgPSAoKENQREZfUGFnZU9iamVjdCopcFBhdGhPYmopLT5tX0dlbmVyYWxTdGF0ZTsNCisgICAgaWYgKHBHZW5lcmFsRGF0YSAmJiBwR2VuZXJhbERhdGEtPm1fU3Ryb2tlQWRqdXN0KSB7DQorICAgICAgICBGaWxsVHlwZSB8PSBGWF9TVFJPS0VfQURKVVNUOw0KKyAgICB9DQorI2VuZGlmDQorICAgIGlmIChtX3BUeXBlM0NoYXIpIHsNCisgICAgICAgIEZpbGxUeXBlIHw9IEZYX0ZJTExfVEVYVF9NT0RFOw0KKyAgICB9DQorICAgIENGWF9HcmFwaFN0YXRlRGF0YSBncmFwaFN0YXRlKCpwUGF0aE9iai0+bV9HcmFwaFN0YXRlKTsNCisgICAgaWYgKG1fT3B0aW9ucy5tX0ZsYWdzICYgUkVOREVSX1RISU5MSU5FKSB7DQorICAgICAgICBncmFwaFN0YXRlLm1fTGluZVdpZHRoID0gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGV2aWNlLT5EcmF3UGF0aChwUGF0aE9iai0+bV9QYXRoLCAmcGF0aF9tYXRyaXgsICZncmFwaFN0YXRlLCBmaWxsX2FyZ2IsIHN0cm9rZV9hcmdiLCBGaWxsVHlwZSwgMCwgTlVMTCwgbV9jdXJCbGVuZCk7DQorfQ0KK0NQREZfVHJhbnNmZXJGdW5jKiBDUERGX1JlbmRlclN0YXR1czo6R2V0VHJhbnNmZXJGdW5jKENQREZfT2JqZWN0KiBwT2JqKSBjb25zdA0KK3sNCisgICAgQVNTRVJUKHBPYmogIT0gTlVMTCk7DQorICAgIENQREZfRG9jUmVuZGVyRGF0YSogcERvY0NhY2hlID0gbV9wQ29udGV4dC0+bV9wRG9jdW1lbnQtPkdldFJlbmRlckRhdGEoKTsNCisgICAgaWYgKCFwRG9jQ2FjaGUpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBwRG9jQ2FjaGUtPkdldFRyYW5zZmVyRnVuYyhwT2JqKTsNCit9DQorRlhfQVJHQiBDUERGX1JlbmRlclN0YXR1czo6R2V0RmlsbEFyZ2IoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwT2JqLCBGWF9CT09MIGJUeXBlMykgY29uc3QNCit7DQorICAgIENQREZfQ29sb3JTdGF0ZURhdGEqIHBDb2xvckRhdGEgPSAoQ1BERl9Db2xvclN0YXRlRGF0YSopKGNvbnN0IENQREZfQ29sb3JTdGF0ZURhdGEqKXBPYmotPm1fQ29sb3JTdGF0ZTsNCisgICAgaWYgKG1fcFR5cGUzQ2hhciAmJiAhYlR5cGUzICYmICghbV9wVHlwZTNDaGFyLT5tX2JDb2xvcmVkIHx8IChtX3BUeXBlM0NoYXItPm1fYkNvbG9yZWQgJiYgKCFwQ29sb3JEYXRhIHx8IHBDb2xvckRhdGEtPm1fRmlsbENvbG9yLklzTnVsbCgpKSkpKSB7DQorICAgICAgICByZXR1cm4gbV9UM0ZpbGxDb2xvcjsNCisgICAgfSBlbHNlIGlmICghcENvbG9yRGF0YSB8fCBwQ29sb3JEYXRhLT5tX0ZpbGxDb2xvci5Jc051bGwoKSkgew0KKyAgICAgICAgcENvbG9yRGF0YSA9IChDUERGX0NvbG9yU3RhdGVEYXRhKikoY29uc3QgQ1BERl9Db2xvclN0YXRlRGF0YSopbV9Jbml0aWFsU3RhdGVzLm1fQ29sb3JTdGF0ZTsNCisgICAgfQ0KKyAgICBGWF9DT0xPUlJFRiByZ2IgPSBwQ29sb3JEYXRhLT5tX0ZpbGxSR0I7DQorICAgIGlmIChyZ2IgPT0gKEZYX0RXT1JEKSAtIDEpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGNvbnN0IENQREZfR2VuZXJhbFN0YXRlRGF0YSogcEdlbmVyYWxEYXRhID0gcE9iai0+bV9HZW5lcmFsU3RhdGU7DQorICAgIGludCBhbHBoYTsNCisgICAgaWYgKHBHZW5lcmFsRGF0YSkgew0KKyAgICAgICAgYWxwaGEgPSAoRlhfSU5UMzIpKHBHZW5lcmFsRGF0YS0+bV9GaWxsQWxwaGEgKiAyNTUpOw0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgICAgIGlmIChwR2VuZXJhbERhdGEtPm1fcFRSKSB7DQorICAgICAgICAgICAgaWYgKCFwR2VuZXJhbERhdGEtPm1fcFRyYW5zZmVyRnVuYykgew0KKyAgICAgICAgICAgICAgICAoKENQREZfR2VuZXJhbFN0YXRlRGF0YSopcEdlbmVyYWxEYXRhKS0+bV9wVHJhbnNmZXJGdW5jID0gR2V0VHJhbnNmZXJGdW5jKHBHZW5lcmFsRGF0YS0+bV9wVFIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAocEdlbmVyYWxEYXRhLT5tX3BUcmFuc2ZlckZ1bmMpIHsNCisgICAgICAgICAgICAgICAgcmdiID0gcEdlbmVyYWxEYXRhLT5tX3BUcmFuc2ZlckZ1bmMtPlRyYW5zbGF0ZUNvbG9yKHJnYik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgYWxwaGEgPSAyNTU7DQorICAgIH0NCisgICAgcmV0dXJuIG1fT3B0aW9ucy5UcmFuc2xhdGVDb2xvcihBcmdiRW5jb2RlKGFscGhhLCByZ2IpKTsNCit9DQorRlhfQVJHQiBDUERGX1JlbmRlclN0YXR1czo6R2V0U3Ryb2tlQXJnYihjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmopIGNvbnN0DQorew0KKyAgICBDUERGX0NvbG9yU3RhdGVEYXRhKiBwQ29sb3JEYXRhID0gKENQREZfQ29sb3JTdGF0ZURhdGEqKShjb25zdCBDUERGX0NvbG9yU3RhdGVEYXRhKilwT2JqLT5tX0NvbG9yU3RhdGU7DQorICAgIGlmIChtX3BUeXBlM0NoYXIgJiYgKCFtX3BUeXBlM0NoYXItPm1fYkNvbG9yZWQgfHwgKG1fcFR5cGUzQ2hhci0+bV9iQ29sb3JlZCAmJiAoIXBDb2xvckRhdGEgfHwgcENvbG9yRGF0YS0+bV9TdHJva2VDb2xvci5Jc051bGwoKSkpKSkgew0KKyAgICAgICAgcmV0dXJuIG1fVDNGaWxsQ29sb3I7DQorICAgIH0gZWxzZSBpZiAoIXBDb2xvckRhdGEgfHwgcENvbG9yRGF0YS0+bV9TdHJva2VDb2xvci5Jc051bGwoKSkgew0KKyAgICAgICAgcENvbG9yRGF0YSA9IChDUERGX0NvbG9yU3RhdGVEYXRhKikoY29uc3QgQ1BERl9Db2xvclN0YXRlRGF0YSopbV9Jbml0aWFsU3RhdGVzLm1fQ29sb3JTdGF0ZTsNCisgICAgfQ0KKyAgICBGWF9DT0xPUlJFRiByZ2IgPSBwQ29sb3JEYXRhLT5tX1N0cm9rZVJHQjsNCisgICAgaWYgKHJnYiA9PSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgY29uc3QgQ1BERl9HZW5lcmFsU3RhdGVEYXRhKiBwR2VuZXJhbERhdGEgPSBwT2JqLT5tX0dlbmVyYWxTdGF0ZTsNCisgICAgaW50IGFscGhhOw0KKyAgICBpZiAocEdlbmVyYWxEYXRhKSB7DQorICAgICAgICBhbHBoYSA9IChGWF9JTlQzMikocEdlbmVyYWxEYXRhLT5tX1N0cm9rZUFscGhhICogMjU1KTsNCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgICAgICBpZiAocEdlbmVyYWxEYXRhLT5tX3BUUikgew0KKyAgICAgICAgICAgIGlmICghcEdlbmVyYWxEYXRhLT5tX3BUcmFuc2ZlckZ1bmMpIHsNCisgICAgICAgICAgICAgICAgKChDUERGX0dlbmVyYWxTdGF0ZURhdGEqKXBHZW5lcmFsRGF0YSktPm1fcFRyYW5zZmVyRnVuYyA9IEdldFRyYW5zZmVyRnVuYyhwR2VuZXJhbERhdGEtPm1fcFRSKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBHZW5lcmFsRGF0YS0+bV9wVHJhbnNmZXJGdW5jKSB7DQorICAgICAgICAgICAgICAgIHJnYiA9IHBHZW5lcmFsRGF0YS0+bV9wVHJhbnNmZXJGdW5jLT5UcmFuc2xhdGVDb2xvcihyZ2IpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisjZW5kaWYNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGFscGhhID0gMjU1Ow0KKyAgICB9DQorICAgIHJldHVybiBtX09wdGlvbnMuVHJhbnNsYXRlQ29sb3IoQXJnYkVuY29kZShhbHBoYSwgcmdiKSk7DQorfQ0KK3ZvaWQgQ1BERl9SZW5kZXJTdGF0dXM6OlByb2Nlc3NDbGlwUGF0aChDUERGX0NsaXBQYXRoIENsaXBQYXRoLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSkNCit7DQorICAgIGlmIChDbGlwUGF0aC5Jc051bGwoKSkgew0KKyAgICAgICAgaWYgKG1fTGFzdENsaXBQYXRoLklzTnVsbCgpKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wRGV2aWNlLT5SZXN0b3JlU3RhdGUoVFJVRSk7DQorICAgICAgICBtX0xhc3RDbGlwUGF0aC5TZXROdWxsKCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fTGFzdENsaXBQYXRoID09IENsaXBQYXRoKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9MYXN0Q2xpcFBhdGggPSBDbGlwUGF0aDsNCisgICAgbV9wRGV2aWNlLT5SZXN0b3JlU3RhdGUoVFJVRSk7DQorICAgIGludCBuQ2xpcFBhdGggPSBDbGlwUGF0aC5HZXRQYXRoQ291bnQoKTsNCisgICAgaW50IGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBuQ2xpcFBhdGg7IGkrKykgew0KKyAgICAgICAgY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEgPSBDbGlwUGF0aC5HZXRQYXRoKGkpOw0KKyAgICAgICAgaWYgKHBQYXRoRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFBhdGhEYXRhLT5HZXRQb2ludENvdW50KCkgPT0gMCkgew0KKyAgICAgICAgICAgIENGWF9QYXRoRGF0YSBFbXB0eVBhdGg7DQorICAgICAgICAgICAgRW1wdHlQYXRoLkFwcGVuZFJlY3QoLTEsIC0xLCAwLCAwKTsNCisgICAgICAgICAgICBpbnQgZmlsbF9tb2RlID0gRlhGSUxMX1dJTkRJTkc7DQorICAgICAgICAgICAgbV9wRGV2aWNlLT5TZXRDbGlwX1BhdGhGaWxsKCZFbXB0eVBhdGgsIE5VTEwsIGZpbGxfbW9kZSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGludCBDbGlwVHlwZSA9IENsaXBQYXRoLkdldENsaXBUeXBlKGkpOw0KKyAgICAgICAgICAgIG1fcERldmljZS0+U2V0Q2xpcF9QYXRoRmlsbChwUGF0aERhdGEsIHBPYmoyRGV2aWNlLCBDbGlwVHlwZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IHRleHRjb3VudCA9IENsaXBQYXRoLkdldFRleHRDb3VudCgpOw0KKyAgICBpZiAodGV4dGNvdW50ID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wRGV2aWNlLT5HZXREZXZpY2VDbGFzcygpID09IEZYRENfRElTUExBWSAmJiAhKG1fcERldmljZS0+R2V0RGV2aWNlQ2FwcyhGWERDX1JFTkRFUl9DQVBTKSAmIEZYUkNfU09GVF9DTElQKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9QYXRoRGF0YSogcFRleHRDbGlwcGluZ1BhdGggPSBOVUxMOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgdGV4dGNvdW50OyBpICsrKSB7DQorICAgICAgICBDUERGX1RleHRPYmplY3QqIHBUZXh0ID0gQ2xpcFBhdGguR2V0VGV4dChpKTsNCisgICAgICAgIGlmIChwVGV4dCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgaWYgKHBUZXh0Q2xpcHBpbmdQYXRoKSB7DQorICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUgPSBGWEZJTExfV0lORElORzsNCisgICAgICAgICAgICAgICAgaWYgKG1fT3B0aW9ucy5tX0ZsYWdzICYgUkVOREVSX05PVEVYVFNNT09USCkgew0KKyAgICAgICAgICAgICAgICAgICAgZmlsbF9tb2RlIHw9IEZYRklMTF9OT1BBVEhTTU9PVEg7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wRGV2aWNlLT5TZXRDbGlwX1BhdGhGaWxsKHBUZXh0Q2xpcHBpbmdQYXRoLCBOVUxMLCBmaWxsX21vZGUpOw0KKyAgICAgICAgICAgICAgICBkZWxldGUgcFRleHRDbGlwcGluZ1BhdGg7DQorICAgICAgICAgICAgICAgIHBUZXh0Q2xpcHBpbmdQYXRoID0gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChwVGV4dENsaXBwaW5nUGF0aCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHBUZXh0Q2xpcHBpbmdQYXRoID0gRlhfTkVXIENGWF9QYXRoRGF0YTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgUHJvY2Vzc1RleHQocFRleHQsIHBPYmoyRGV2aWNlLCBwVGV4dENsaXBwaW5nUGF0aCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBUZXh0Q2xpcHBpbmdQYXRoKSB7DQorICAgICAgICBkZWxldGUgcFRleHRDbGlwcGluZ1BhdGg7DQorICAgIH0NCit9DQordm9pZCBDUERGX1JlbmRlclN0YXR1czo6RHJhd0NsaXBQYXRoKENQREZfQ2xpcFBhdGggQ2xpcFBhdGgsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKQ0KK3sNCisgICAgaWYgKENsaXBQYXRoLklzTnVsbCgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IGZpbGxfbW9kZSA9IDA7DQorICAgIGlmIChtX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9OT1BBVEhTTU9PVEgpIHsNCisgICAgICAgIGZpbGxfbW9kZSB8PSBGWEZJTExfTk9QQVRIU01PT1RIOw0KKyAgICB9DQorICAgIGludCBuQ2xpcFBhdGggPSBDbGlwUGF0aC5HZXRQYXRoQ291bnQoKTsNCisgICAgaW50IGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBuQ2xpcFBhdGg7IGkrKykgew0KKyAgICAgICAgY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEgPSBDbGlwUGF0aC5HZXRQYXRoKGkpOw0KKyAgICAgICAgaWYgKHBQYXRoRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDRlhfR3JhcGhTdGF0ZURhdGEgc3Ryb2tlX3N0YXRlOw0KKyAgICAgICAgaWYgKG1fT3B0aW9ucy5tX0ZsYWdzICYgUkVOREVSX1RISU5MSU5FKSB7DQorICAgICAgICAgICAgc3Ryb2tlX3N0YXRlLm1fTGluZVdpZHRoID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcERldmljZS0+RHJhd1BhdGgocFBhdGhEYXRhLCBwT2JqMkRldmljZSwgJnN0cm9rZV9zdGF0ZSwgMCwgMHhmZmZmMDAwMCwgZmlsbF9tb2RlKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfUmVuZGVyU3RhdHVzOjpTZWxlY3RDbGlwUGF0aChDUERGX1BhdGhPYmplY3QqIHBQYXRoT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgRlhfQk9PTCBiU3Ryb2tlKQ0KK3sNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBwYXRoX21hdHJpeCA9IHBQYXRoT2JqLT5tX01hdHJpeDsNCisgICAgcGF0aF9tYXRyaXguQ29uY2F0KCpwT2JqMkRldmljZSk7DQorICAgIGlmIChiU3Ryb2tlKSB7DQorICAgICAgICBDRlhfR3JhcGhTdGF0ZURhdGEgZ3JhcGhTdGF0ZSgqcFBhdGhPYmotPm1fR3JhcGhTdGF0ZSk7DQorICAgICAgICBpZiAobV9PcHRpb25zLm1fRmxhZ3MgJiBSRU5ERVJfVEhJTkxJTkUpIHsNCisgICAgICAgICAgICBncmFwaFN0YXRlLm1fTGluZVdpZHRoID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBtX3BEZXZpY2UtPlNldENsaXBfUGF0aFN0cm9rZShwUGF0aE9iai0+bV9QYXRoLCAmcGF0aF9tYXRyaXgsICZncmFwaFN0YXRlKTsNCisgICAgfQ0KKyAgICBpbnQgZmlsbF9tb2RlID0gcFBhdGhPYmotPm1fRmlsbFR5cGU7DQorICAgIGlmIChtX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9OT1BBVEhTTU9PVEgpIHsNCisgICAgICAgIGZpbGxfbW9kZSB8PSBGWEZJTExfTk9QQVRIU01PT1RIOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BEZXZpY2UtPlNldENsaXBfUGF0aEZpbGwocFBhdGhPYmotPm1fUGF0aCwgJnBhdGhfbWF0cml4LCBmaWxsX21vZGUpOw0KK30NCitGWF9CT09MIENQREZfUmVuZGVyU3RhdHVzOjpQcm9jZXNzVHJhbnNwYXJlbmN5KGNvbnN0IENQREZfUGFnZU9iamVjdCogcFBhZ2VPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKQ0KK3sNCisgICAgY29uc3QgQ1BERl9HZW5lcmFsU3RhdGVEYXRhKiBwR2VuZXJhbFN0YXRlID0gcFBhZ2VPYmotPm1fR2VuZXJhbFN0YXRlOw0KKyAgICBpbnQgYmxlbmRfdHlwZSA9IHBHZW5lcmFsU3RhdGUgPyBwR2VuZXJhbFN0YXRlLT5tX0JsZW5kVHlwZSA6IEZYRElCX0JMRU5EX05PUk1BTDsNCisgICAgaWYgKGJsZW5kX3R5cGUgPT0gRlhESUJfQkxFTkRfVU5TVVBQT1JURUQpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcFNNYXNrRGljdCA9IHBHZW5lcmFsU3RhdGUgPyAoQ1BERl9EaWN0aW9uYXJ5KilwR2VuZXJhbFN0YXRlLT5tX3BTb2Z0TWFzayA6IE5VTEw7DQorICAgIGlmIChwU01hc2tEaWN0KSB7DQorICAgICAgICBpZiAocFBhZ2VPYmotPm1fVHlwZSA9PSBQREZQQUdFX0lNQUdFICYmDQorICAgICAgICAgICAgICAgICgoQ1BERl9JbWFnZU9iamVjdCopcFBhZ2VPYmopLT5tX3BJbWFnZS0+R2V0RGljdCgpLT5LZXlFeGlzdChGWF9CU1RSQygiU01hc2siKSkpIHsNCisgICAgICAgICAgICBwU01hc2tEaWN0ID0gTlVMTDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGb3JtUmVzb3VyY2UgPSBOVUxMOw0KKyAgICBGWF9GTE9BVCBncm91cF9hbHBoYSA9IDEuMGY7DQorICAgIGludCBUcmFuc3BhcmVuY3kgPSBtX1RyYW5zcGFyZW5jeTsNCisgICAgRlhfQk9PTCBiR3JvdXBUcmFuc3BhcmVudCA9IEZBTFNFOw0KKyAgICBpZiAocFBhZ2VPYmotPm1fVHlwZSA9PSBQREZQQUdFX0ZPUk0pIHsNCisgICAgICAgIENQREZfRm9ybU9iamVjdCogcEZvcm1PYmogPSAoQ1BERl9Gb3JtT2JqZWN0KilwUGFnZU9iajsNCisgICAgICAgIGNvbnN0IENQREZfR2VuZXJhbFN0YXRlRGF0YSAqcFN0YXRlRGF0YSA9IHBGb3JtT2JqLT5tX0dlbmVyYWxTdGF0ZS5HZXRPYmplY3QoKTsNCisgICAgICAgIGlmIChwU3RhdGVEYXRhKSB7DQorICAgICAgICAgICAgZ3JvdXBfYWxwaGEgPSBwU3RhdGVEYXRhLT5tX0ZpbGxBbHBoYTsNCisgICAgICAgIH0NCisgICAgICAgIFRyYW5zcGFyZW5jeSA9IHBGb3JtT2JqLT5tX3BGb3JtLT5tX1RyYW5zcGFyZW5jeTsNCisgICAgICAgIGJHcm91cFRyYW5zcGFyZW50ID0gVHJhbnNwYXJlbmN5ICYgUERGVFJBTlNfSVNPTEFURUQgPyBUUlVFIDogRkFMU0U7DQorICAgICAgICBpZiAocEZvcm1PYmotPm1fcEZvcm0tPm1fcEZvcm1EaWN0KSB7DQorICAgICAgICAgICAgcEZvcm1SZXNvdXJjZSA9IHBGb3JtT2JqLT5tX3BGb3JtLT5tX3BGb3JtRGljdC0+R2V0RGljdCgiUmVzb3VyY2VzIik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfQk9PTCBiVGV4dENsaXAgPSBGQUxTRTsNCisgICAgaWYgKHBQYWdlT2JqLT5tX0NsaXBQYXRoLk5vdE51bGwoKSAmJiBwUGFnZU9iai0+bV9DbGlwUGF0aC5HZXRUZXh0Q291bnQoKSAmJg0KKyAgICAgICAgICAgIG1fcERldmljZS0+R2V0RGV2aWNlQ2xhc3MoKSA9PSBGWERDX0RJU1BMQVkgJiYgIShtX3BEZXZpY2UtPkdldERldmljZUNhcHMoRlhEQ19SRU5ERVJfQ0FQUykgJiBGWFJDX1NPRlRfQ0xJUCkpIHsNCisgICAgICAgIGJUZXh0Q2xpcCA9IFRSVUU7DQorICAgIH0NCisgICAgaWYgKChtX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9PVkVSUFJJTlQpICYmIHBQYWdlT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9JTUFHRSAmJiBwR2VuZXJhbFN0YXRlICYmIHBHZW5lcmFsU3RhdGUtPm1fRmlsbE9QICYmIHBHZW5lcmFsU3RhdGUtPm1fU3Ryb2tlT1ApIHsNCisgICAgICAgIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCA9IE5VTEw7DQorICAgICAgICBDUERGX1BhZ2UqIHBQYWdlID0gTlVMTDsNCisgICAgICAgIGlmIChtX3BDb250ZXh0LT5tX3BQYWdlQ2FjaGUpIHsNCisgICAgICAgICAgICBwUGFnZSA9IG1fcENvbnRleHQtPm1fcFBhZ2VDYWNoZS0+R2V0UGFnZSgpOw0KKyAgICAgICAgICAgIHBEb2N1bWVudCA9IHBQYWdlLT5tX3BEb2N1bWVudDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcERvY3VtZW50ID0gKChDUERGX0ltYWdlT2JqZWN0KilwUGFnZU9iaiktPm1fcEltYWdlLT5HZXREb2N1bWVudCgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZVJlc291cmNlcyA9IHBQYWdlID8gcFBhZ2UtPm1fcFBhZ2VSZXNvdXJjZXMgOiBOVUxMOw0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBDU09iaiA9ICgoQ1BERl9JbWFnZU9iamVjdCopcFBhZ2VPYmopLT5tX3BJbWFnZS0+R2V0U3RyZWFtKCktPkdldERpY3QoKS0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJDb2xvclNwYWNlIikpOw0KKyAgICAgICAgQ1BERl9Db2xvclNwYWNlKiBwQ29sb3JTcGFjZSA9IHBEb2N1bWVudC0+TG9hZENvbG9yU3BhY2UocENTT2JqLCBwUGFnZVJlc291cmNlcyk7DQorICAgICAgICBpZiAocENvbG9yU3BhY2UpIHsNCisgICAgICAgICAgICBpbnQgZm9ybWF0ID0gcENvbG9yU3BhY2UtPkdldEZhbWlseSgpOw0KKyAgICAgICAgICAgIGlmIChmb3JtYXQgPT0gUERGQ1NfREVWSUNFQ01ZSyB8fCBmb3JtYXQgPT0gUERGQ1NfU0VQQVJBVElPTiB8fCBmb3JtYXQgPT0gUERGQ1NfREVWSUNFTikgew0KKyAgICAgICAgICAgICAgICBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfREFSS0VOOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCktPlJlbGVhc2VDb2xvclNwYWNlKHBDU09iaik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBTTWFza0RpY3QgPT0gTlVMTCAmJiBncm91cF9hbHBoYSA9PSAxLjBmICYmIGJsZW5kX3R5cGUgPT0gRlhESUJfQkxFTkRfTk9STUFMICYmICFiVGV4dENsaXAgJiYgIWJHcm91cFRyYW5zcGFyZW50KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfQk9PTCBpc29sYXRlZCA9IFRyYW5zcGFyZW5jeSAmIFBERlRSQU5TX0lTT0xBVEVEOw0KKyAgICBpZiAobV9iUHJpbnQpIHsNCisgICAgICAgIEZYX0JPT0wgYlJldCA9IEZBTFNFOw0KKyAgICAgICAgaW50IHJlbmRDYXBzID0gbV9wRGV2aWNlLT5HZXRSZW5kZXJDYXBzKCk7DQorICAgICAgICBpZiAoISgoVHJhbnNwYXJlbmN5ICYgUERGVFJBTlNfSVNPTEFURUQpIHx8IHBTTWFza0RpY3QgfHwgYlRleHRDbGlwKSAmJiAocmVuZENhcHMgJiBGWFJDX0JMRU5EX01PREUpKSB7DQorICAgICAgICAgICAgaW50IG9sZEJsZW5kID0gbV9jdXJCbGVuZDsNCisgICAgICAgICAgICBtX2N1ckJsZW5kID0gYmxlbmRfdHlwZTsNCisgICAgICAgICAgICBiUmV0ID0gRHJhd09ialdpdGhCbGVuZChwUGFnZU9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgICAgIG1fY3VyQmxlbmQgPSBvbGRCbGVuZDsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghYlJldCkgew0KKyAgICAgICAgICAgIERyYXdPYmpXaXRoQmFja2dyb3VuZChwUGFnZU9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgRlhfUkVDVCByZWN0ID0gcFBhZ2VPYmotPkdldEJCb3gocE9iajJEZXZpY2UpOw0KKyAgICByZWN0LkludGVyc2VjdChtX3BEZXZpY2UtPkdldENsaXBCb3goKSk7DQorICAgIGlmIChyZWN0LklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQ0ZYX01hdHJpeCBkZXZpY2VDVE0gPSBtX3BEZXZpY2UtPkdldENUTSgpOw0KKyAgICBGWF9GTE9BVCBzY2FsZVggPSBGWFNZU19hYnMoZGV2aWNlQ1RNLmEpOw0KKyAgICBGWF9GTE9BVCBzY2FsZVkgPSBGWFNZU19hYnMoZGV2aWNlQ1RNLmQpOw0KKyAgICBpbnQgd2lkdGggPSBGWFNZU19yb3VuZCgoRlhfRkxPQVQpcmVjdC5XaWR0aCgpICogc2NhbGVYKTsNCisgICAgaW50IGhlaWdodCA9IEZYU1lTX3JvdW5kKChGWF9GTE9BVClyZWN0LkhlaWdodCgpICogc2NhbGVZKTsNCisgICAgQ0ZYX0Z4Z2VEZXZpY2UgYml0bWFwX2RldmljZTsNCisgICAgQ0ZYX0RJQml0bWFwKiBvcmlEZXZpY2UgPSBOVUxMOw0KKyAgICBpZiAoIWlzb2xhdGVkICYmIChtX3BEZXZpY2UtPkdldFJlbmRlckNhcHMoKSAmIEZYUkNfR0VUX0JJVFMpKSB7DQorICAgICAgICBvcmlEZXZpY2UgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICAgICAgaWYgKCFtX3BEZXZpY2UtPkNyZWF0ZUNvbXBhdGlibGVCaXRtYXAob3JpRGV2aWNlLCB3aWR0aCwgaGVpZ2h0KSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wRGV2aWNlLT5HZXRESUJpdHMob3JpRGV2aWNlLCByZWN0LmxlZnQsIHJlY3QudG9wKTsNCisgICAgfQ0KKyAgICBpZiAoIWJpdG1hcF9kZXZpY2UuQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIEZYRElCX0FyZ2IsIDAsIG9yaURldmljZSkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIENGWF9ESUJpdG1hcCogYml0bWFwID0gYml0bWFwX2RldmljZS5HZXRCaXRtYXAoKTsNCisgICAgYml0bWFwLT5DbGVhcigwKTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBuZXdfbWF0cml4ID0gKnBPYmoyRGV2aWNlOw0KKyAgICBuZXdfbWF0cml4LlRyYW5zbGF0ZUkoLXJlY3QubGVmdCwgLXJlY3QudG9wKTsNCisgICAgbmV3X21hdHJpeC5TY2FsZShzY2FsZVgsIHNjYWxlWSk7DQorICAgIENGWF9ESUJpdG1hcCogcFRleHRNYXNrID0gTlVMTDsNCisgICAgaWYgKGJUZXh0Q2xpcCkgew0KKyAgICAgICAgcFRleHRNYXNrID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgICAgIGlmICghcFRleHRNYXNrLT5DcmVhdGUod2lkdGgsIGhlaWdodCwgRlhESUJfOGJwcE1hc2spKSB7DQorICAgICAgICAgICAgZGVsZXRlIHBUZXh0TWFzazsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIHBUZXh0TWFzay0+Q2xlYXIoMCk7DQorICAgICAgICBDRlhfRnhnZURldmljZSB0ZXh0X2RldmljZTsNCisgICAgICAgIHRleHRfZGV2aWNlLkF0dGFjaChwVGV4dE1hc2spOw0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBQYWdlT2JqLT5tX0NsaXBQYXRoLkdldFRleHRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiB0ZXh0b2JqID0gcFBhZ2VPYmotPm1fQ2xpcFBhdGguR2V0VGV4dChpKTsNCisgICAgICAgICAgICBpZiAodGV4dG9iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IHRleHRfbWF0cml4Ow0KKyAgICAgICAgICAgIHRleHRvYmotPkdldFRleHRNYXRyaXgoJnRleHRfbWF0cml4KTsNCisgICAgICAgICAgICBDUERGX1RleHRSZW5kZXJlcjo6RHJhd1RleHRQYXRoKCZ0ZXh0X2RldmljZSwgdGV4dG9iai0+bV9uQ2hhcnMsIHRleHRvYmotPm1fcENoYXJDb2RlcywgdGV4dG9iai0+bV9wQ2hhclBvcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRvYmotPm1fVGV4dFN0YXRlLkdldEZvbnQoKSwgdGV4dG9iai0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemUoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZXh0X21hdHJpeCwgJm5ld19tYXRyaXgsIHRleHRvYmotPm1fR3JhcGhTdGF0ZSwgKEZYX0FSR0IpIC0gMSwgMCwgTlVMTCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BERl9SZW5kZXJTdGF0dXMgYml0bWFwX3JlbmRlcjsNCisgICAgYml0bWFwX3JlbmRlci5Jbml0aWFsaXplKG1fTGV2ZWwgKyAxLCBtX3BDb250ZXh0LCAmYml0bWFwX2RldmljZSwgTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcFN0b3BPYmosIE5VTEwsIE5VTEwsICZtX09wdGlvbnMsIDAsIG1fYkRyb3BPYmplY3RzLCBwRm9ybVJlc291cmNlLCBUUlVFKTsNCisgICAgYml0bWFwX3JlbmRlci5Qcm9jZXNzT2JqZWN0Tm9DbGlwKHBQYWdlT2JqLCAmbmV3X21hdHJpeCk7DQorICAgIG1fYlN0b3BwZWQgPSBiaXRtYXBfcmVuZGVyLm1fYlN0b3BwZWQ7DQorICAgIGlmIChwU01hc2tEaWN0KSB7DQorICAgICAgICBDRlhfQWZmaW5lTWF0cml4IHNtYXNrX21hdHJpeDsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKCZzbWFza19tYXRyaXgsIHBHZW5lcmFsU3RhdGUtPm1fU01hc2tNYXRyaXgsIHNpemVvZiBzbWFza19tYXRyaXgpOw0KKyAgICAgICAgc21hc2tfbWF0cml4LkNvbmNhdCgqcE9iajJEZXZpY2UpOw0KKyAgICAgICAgQ0ZYX0RJQlNvdXJjZSogcFNNYXNrU291cmNlID0gTG9hZFNNYXNrKHBTTWFza0RpY3QsICZyZWN0LCAmc21hc2tfbWF0cml4KTsNCisgICAgICAgIGlmIChwU01hc2tTb3VyY2UpIHsNCisgICAgICAgICAgICBiaXRtYXAtPk11bHRpcGx5QWxwaGEocFNNYXNrU291cmNlKTsNCisgICAgICAgICAgICBkZWxldGUgcFNNYXNrU291cmNlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwVGV4dE1hc2spIHsNCisgICAgICAgIGJpdG1hcC0+TXVsdGlwbHlBbHBoYShwVGV4dE1hc2spOw0KKyAgICAgICAgZGVsZXRlIHBUZXh0TWFzazsNCisgICAgICAgIHBUZXh0TWFzayA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKFRyYW5zcGFyZW5jeSAmIFBERlRSQU5TX0dST1VQICYmIGdyb3VwX2FscGhhICE9IDEuMGYpIHsNCisgICAgICAgIGJpdG1hcC0+TXVsdGlwbHlBbHBoYSgoRlhfSU5UMzIpKGdyb3VwX2FscGhhICogMjU1KSk7DQorICAgIH0NCisgICAgVHJhbnNwYXJlbmN5ID0gbV9UcmFuc3BhcmVuY3k7DQorICAgIGlmIChwUGFnZU9iai0+bV9UeXBlID09IFBERlBBR0VfRk9STSkgew0KKyAgICAgICAgVHJhbnNwYXJlbmN5IHw9IFBERlRSQU5TX0dST1VQOw0KKyAgICB9DQorICAgIENvbXBvc2l0ZURJQml0bWFwKGJpdG1hcCwgcmVjdC5sZWZ0LCByZWN0LnRvcCwgMCwgMjU1LCBibGVuZF90eXBlLCBUcmFuc3BhcmVuY3kpOw0KKyAgICBpZiAob3JpRGV2aWNlKSB7DQorICAgICAgICBkZWxldGUgb3JpRGV2aWNlOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDRlhfRElCaXRtYXAqIENQREZfUmVuZGVyU3RhdHVzOjpHZXRCYWNrZHJvcChjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIGNvbnN0IEZYX1JFQ1QmIHJlY3QsIGludCYgbGVmdCwgaW50JiB0b3AsDQorICAgICAgICBGWF9CT09MIGJCYWNrQWxwaGFSZXF1aXJlZCkNCit7DQorICAgIEZYX1JFQ1QgYmJveCA9IHJlY3Q7DQorICAgIGJib3guSW50ZXJzZWN0KG1fcERldmljZS0+R2V0Q2xpcEJveCgpKTsNCisgICAgbGVmdCA9IGJib3gubGVmdDsNCisgICAgdG9wID0gYmJveC50b3A7DQorICAgIENGWF9NYXRyaXggZGV2aWNlQ1RNID0gbV9wRGV2aWNlLT5HZXRDVE0oKTsNCisgICAgRlhfRkxPQVQgc2NhbGVYID0gRlhTWVNfYWJzKGRldmljZUNUTS5hKTsNCisgICAgRlhfRkxPQVQgc2NhbGVZID0gRlhTWVNfYWJzKGRldmljZUNUTS5kKTsNCisgICAgaW50IHdpZHRoID0gRlhTWVNfcm91bmQoYmJveC5XaWR0aCgpICogc2NhbGVYKTsNCisgICAgaW50IGhlaWdodCA9IEZYU1lTX3JvdW5kKGJib3guSGVpZ2h0KCkgKiBzY2FsZVkpOw0KKyAgICBDRlhfRElCaXRtYXAqIHBCYWNrZHJvcCA9IEZYX05FVyBDRlhfRElCaXRtYXA7DQorICAgIGlmIChiQmFja0FscGhhUmVxdWlyZWQgJiYgIW1fYkRyb3BPYmplY3RzKSB7DQorICAgICAgICBwQmFja2Ryb3AtPkNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBGWERJQl9BcmdiKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcERldmljZS0+Q3JlYXRlQ29tcGF0aWJsZUJpdG1hcChwQmFja2Ryb3AsIHdpZHRoLCBoZWlnaHQpOw0KKyAgICB9DQorICAgIGlmIChwQmFja2Ryb3AtPkdldEJ1ZmZlcigpID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSBwQmFja2Ryb3A7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJOZWVkRHJhdzsNCisgICAgaWYgKHBCYWNrZHJvcC0+SGFzQWxwaGEoKSkgew0KKyAgICAgICAgYk5lZWREcmF3ID0gIShtX3BEZXZpY2UtPkdldFJlbmRlckNhcHMoKSAmIEZYUkNfQUxQSEFfT1VUUFVUKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGJOZWVkRHJhdyA9ICEobV9wRGV2aWNlLT5HZXRSZW5kZXJDYXBzKCkgJiBGWFJDX0dFVF9CSVRTKTsNCisgICAgfQ0KKyAgICBpZiAoIWJOZWVkRHJhdykgew0KKyAgICAgICAgbV9wRGV2aWNlLT5HZXRESUJpdHMocEJhY2tkcm9wLCBsZWZ0LCB0b3ApOw0KKyAgICAgICAgcmV0dXJuIHBCYWNrZHJvcDsNCisgICAgfQ0KKyAgICBDRlhfQWZmaW5lTWF0cml4IEZpbmFsTWF0cml4ID0gbV9EZXZpY2VNYXRyaXg7DQorICAgIEZpbmFsTWF0cml4LlRyYW5zbGF0ZUkoLWxlZnQsIC10b3ApOw0KKyAgICBGaW5hbE1hdHJpeC5TY2FsZShzY2FsZVgsIHNjYWxlWSk7DQorICAgIHBCYWNrZHJvcC0+Q2xlYXIocEJhY2tkcm9wLT5IYXNBbHBoYSgpID8gMCA6IDB4ZmZmZmZmZmYpOw0KKyAgICBDRlhfRnhnZURldmljZSBkZXZpY2U7DQorICAgIGRldmljZS5BdHRhY2gocEJhY2tkcm9wKTsNCisgICAgbV9wQ29udGV4dC0+UmVuZGVyKCZkZXZpY2UsIHBPYmosICZtX09wdGlvbnMsICZGaW5hbE1hdHJpeCk7DQorICAgIHJldHVybiBwQmFja2Ryb3A7DQorfQ0KK3ZvaWQgQ1BERl9SZW5kZXJDb250ZXh0OjpHZXRCYWNrZ3JvdW5kKENGWF9ESUJpdG1hcCogcEJ1ZmZlciwgY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwT2JqLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMsIENGWF9BZmZpbmVNYXRyaXgqIHBGaW5hbE1hdHJpeCkNCit7DQorICAgIENGWF9GeGdlRGV2aWNlIGRldmljZTsNCisgICAgZGV2aWNlLkF0dGFjaChwQnVmZmVyKTsNCisgICAgaWYgKG1fcEJhY2tncm91bmREcmF3KSB7DQorICAgICAgICBtX3BCYWNrZ3JvdW5kRHJhdy0+T25EcmF3QmFja2dyb3VuZCgmZGV2aWNlLCBwRmluYWxNYXRyaXgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfUkVDVCByZWN0KDAsIDAsIGRldmljZS5HZXRXaWR0aCgpLCBkZXZpY2UuR2V0SGVpZ2h0KCkpOw0KKyAgICAgICAgZGV2aWNlLkZpbGxSZWN0KCZyZWN0LCAweGZmZmZmZmZmKTsNCisgICAgfQ0KKyAgICBSZW5kZXIoJmRldmljZSwgcE9iaiwgcE9wdGlvbnMsIHBGaW5hbE1hdHJpeCk7DQorfQ0KK0NQREZfR3JhcGhpY1N0YXRlcyogQ1BERl9SZW5kZXJTdGF0dXM6OkNsb25lT2JqU3RhdGVzKGNvbnN0IENQREZfR3JhcGhpY1N0YXRlcyogcFNyY1N0YXRlcywgRlhfQk9PTCBiU3Ryb2tlKQ0KK3sNCisgICAgaWYgKCFwU3JjU3RhdGVzKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0dyYXBoaWNTdGF0ZXMqIHBTdGF0ZXMgPSBGWF9ORVcgQ1BERl9HcmFwaGljU3RhdGVzOw0KKyAgICBpZiAoIXBTdGF0ZXMpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBTdGF0ZXMtPkNvcHlTdGF0ZXMoKnBTcmNTdGF0ZXMpOw0KKyAgICBDUERGX0NvbG9yKiBwT2JqQ29sb3IgPSBiU3Ryb2tlID8gcFNyY1N0YXRlcy0+bV9Db2xvclN0YXRlLkdldFN0cm9rZUNvbG9yKCkgOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU3JjU3RhdGVzLT5tX0NvbG9yU3RhdGUuR2V0RmlsbENvbG9yKCk7DQorICAgIGlmICghcE9iakNvbG9yLT5Jc051bGwoKSkgew0KKyAgICAgICAgQ1BERl9Db2xvclN0YXRlRGF0YSogcENvbG9yRGF0YSA9IHBTdGF0ZXMtPm1fQ29sb3JTdGF0ZS5HZXRNb2RpZnkoKTsNCisgICAgICAgIHBDb2xvckRhdGEtPm1fRmlsbFJHQiA9IGJTdHJva2UgPyBwU3JjU3RhdGVzLT5tX0NvbG9yU3RhdGUuR2V0T2JqZWN0KCktPm1fU3Ryb2tlUkdCIDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTcmNTdGF0ZXMtPm1fQ29sb3JTdGF0ZS5HZXRPYmplY3QoKS0+bV9GaWxsUkdCOw0KKyAgICAgICAgcENvbG9yRGF0YS0+bV9TdHJva2VSR0IgPSBwQ29sb3JEYXRhLT5tX0ZpbGxSR0I7DQorICAgIH0NCisgICAgcmV0dXJuIHBTdGF0ZXM7DQorfQ0KK0NQREZfUmVuZGVyQ29udGV4dDo6Q1BERl9SZW5kZXJDb250ZXh0KCkNCit7DQorfQ0KK3ZvaWQgQ1BERl9SZW5kZXJDb250ZXh0OjpDcmVhdGUoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqIHBQYWdlQ2FjaGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBQYWdlUmVzb3VyY2VzLCBGWF9CT09MIGJGaXJzdExheWVyKQ0KK3sNCisgICAgbV9wQmFja2dyb3VuZERyYXcgPSBOVUxMOw0KKyAgICBtX3BEb2N1bWVudCA9IHBEb2M7DQorICAgIG1fcFBhZ2VSZXNvdXJjZXMgPSBwUGFnZVJlc291cmNlczsNCisgICAgbV9wUGFnZUNhY2hlID0gcFBhZ2VDYWNoZTsNCisgICAgbV9iRmlyc3RMYXllciA9IGJGaXJzdExheWVyOw0KK30NCit2b2lkIENQREZfUmVuZGVyQ29udGV4dDo6Q3JlYXRlKENQREZfUGFnZSogcFBhZ2UsIEZYX0JPT0wgYkZpcnN0TGF5ZXIpDQorew0KKyAgICBtX3BCYWNrZ3JvdW5kRHJhdyA9IE5VTEw7DQorICAgIG1fcERvY3VtZW50ID0gcFBhZ2UtPm1fcERvY3VtZW50Ow0KKyAgICBtX3BQYWdlUmVzb3VyY2VzID0gcFBhZ2UtPm1fcFBhZ2VSZXNvdXJjZXM7DQorICAgIG1fcFBhZ2VDYWNoZSA9IHBQYWdlLT5HZXRSZW5kZXJDYWNoZSgpOw0KKyAgICBtX2JGaXJzdExheWVyID0gYkZpcnN0TGF5ZXI7DQorfQ0KK0NQREZfUmVuZGVyQ29udGV4dDo6fkNQREZfUmVuZGVyQ29udGV4dCgpDQorew0KK30NCit2b2lkIENQREZfUmVuZGVyQ29udGV4dDo6Q2xlYXIoKQ0KK3sNCisgICAgbV9wRG9jdW1lbnQgPSBOVUxMOw0KKyAgICBtX3BQYWdlUmVzb3VyY2VzID0gTlVMTDsNCisgICAgbV9wUGFnZUNhY2hlID0gTlVMTDsNCisgICAgbV9wQmFja2dyb3VuZERyYXcgPSBOVUxMOw0KKyAgICBtX2JGaXJzdExheWVyID0gVFJVRTsNCisgICAgbV9Db250ZW50TGlzdC5SZW1vdmVBbGwoKTsNCit9DQordm9pZCBDUERGX1JlbmRlckNvbnRleHQ6OkFwcGVuZE9iamVjdExpc3QoQ1BERl9QYWdlT2JqZWN0cyogcE9ianMsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlKQ0KK3sNCisgICAgX1BERl9SZW5kZXJJdGVtKiBwSXRlbSA9IG1fQ29udGVudExpc3QuQWRkU3BhY2UoKTsNCisgICAgcEl0ZW0tPm1fcE9iamVjdExpc3QgPSBwT2JqczsNCisgICAgaWYgKHBPYmplY3QyRGV2aWNlKSB7DQorICAgICAgICBwSXRlbS0+bV9NYXRyaXggPSAqcE9iamVjdDJEZXZpY2U7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwSXRlbS0+bV9NYXRyaXguU2V0SWRlbnRpdHkoKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfUmVuZGVyQ29udGV4dDo6UmVuZGVyKENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIGNvbnN0IENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTGFzdE1hdHJpeCkNCit7DQorICAgIFJlbmRlcihwRGV2aWNlLCBOVUxMLCBwT3B0aW9ucywgcExhc3RNYXRyaXgpOw0KK30NCit2b2lkIENQREZfUmVuZGVyQ29udGV4dDo6UmVuZGVyKENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIGNvbnN0IENQREZfUGFnZU9iamVjdCogcFN0b3BPYmosDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTGFzdE1hdHJpeCkNCit7DQorICAgIGludCBjb3VudCA9IG1fQ29udGVudExpc3QuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvdW50OyBqICsrKSB7DQorICAgICAgICBwRGV2aWNlLT5TYXZlU3RhdGUoKTsNCisgICAgICAgIF9QREZfUmVuZGVySXRlbSogcEl0ZW0gPSBtX0NvbnRlbnRMaXN0LkdldERhdGFQdHIoaik7DQorICAgICAgICBpZiAocExhc3RNYXRyaXgpIHsNCisgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IEZpbmFsTWF0cml4ID0gcEl0ZW0tPm1fTWF0cml4Ow0KKyAgICAgICAgICAgIEZpbmFsTWF0cml4LkNvbmNhdCgqcExhc3RNYXRyaXgpOw0KKyAgICAgICAgICAgIENQREZfUmVuZGVyU3RhdHVzIHN0YXR1czsNCisgICAgICAgICAgICBzdGF0dXMuSW5pdGlhbGl6ZSgwLCB0aGlzLCBwRGV2aWNlLCBwTGFzdE1hdHJpeCwgcFN0b3BPYmosIE5VTEwsIE5VTEwsIHBPcHRpb25zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJdGVtLT5tX3BPYmplY3RMaXN0LT5tX1RyYW5zcGFyZW5jeSwgRkFMU0UsIE5VTEwpOw0KKyAgICAgICAgICAgIHN0YXR1cy5SZW5kZXJPYmplY3RMaXN0KHBJdGVtLT5tX3BPYmplY3RMaXN0LCAmRmluYWxNYXRyaXgpOw0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykNCisgICAgICAgICAgICBpZiAoc3RhdHVzLm1fT3B0aW9ucy5tX0ZsYWdzICYgUkVOREVSX0xJTUlURURJTUFHRUNBQ0hFKSB7DQorICAgICAgICAgICAgICAgIG1fcFBhZ2VDYWNoZS0+Q2FjaGVPcHRpbWl6YXRpb24oc3RhdHVzLm1fT3B0aW9ucy5tX2R3TGltaXRDYWNoZVNpemUpOw0KKyAgICAgICAgICAgIH0NCisjZW5kaWYNCisgICAgICAgICAgICBpZiAoc3RhdHVzLm1fYlN0b3BwZWQpIHsNCisgICAgICAgICAgICAgICAgcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgQ1BERl9SZW5kZXJTdGF0dXMgc3RhdHVzOw0KKyAgICAgICAgICAgIHN0YXR1cy5Jbml0aWFsaXplKDAsIHRoaXMsIHBEZXZpY2UsIE5VTEwsIHBTdG9wT2JqLCBOVUxMLCBOVUxMLCBwT3B0aW9ucywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSXRlbS0+bV9wT2JqZWN0TGlzdC0+bV9UcmFuc3BhcmVuY3ksIEZBTFNFLCBOVUxMKTsNCisgICAgICAgICAgICBzdGF0dXMuUmVuZGVyT2JqZWN0TGlzdChwSXRlbS0+bV9wT2JqZWN0TGlzdCwgJnBJdGVtLT5tX01hdHJpeCk7DQorI2lmICFkZWZpbmVkKF9GUERGQVBJX01JTklfKQ0KKyAgICAgICAgICAgIGlmIChzdGF0dXMubV9PcHRpb25zLm1fRmxhZ3MgJiBSRU5ERVJfTElNSVRFRElNQUdFQ0FDSEUpIHsNCisgICAgICAgICAgICAgICAgbV9wUGFnZUNhY2hlLT5DYWNoZU9wdGltaXphdGlvbihzdGF0dXMubV9PcHRpb25zLm1fZHdMaW1pdENhY2hlU2l6ZSk7DQorICAgICAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICAgICAgICAgIGlmIChzdGF0dXMubV9iU3RvcHBlZCkgew0KKyAgICAgICAgICAgICAgICBwRGV2aWNlLT5SZXN0b3JlU3RhdGUoKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1JlbmRlckNvbnRleHQ6OkRyYXdPYmplY3RMaXN0KENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIENQREZfUGFnZU9iamVjdHMqIHBPYmpzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwgY29uc3QgQ1BERl9SZW5kZXJPcHRpb25zKiBwT3B0aW9ucykNCit7DQorICAgIEFwcGVuZE9iamVjdExpc3QocE9ianMsIHBPYmplY3QyRGV2aWNlKTsNCisgICAgUmVuZGVyKHBEZXZpY2UsIHBPcHRpb25zKTsNCit9DQorQ1BERl9Qcm9ncmVzc2l2ZVJlbmRlcmVyOjpDUERGX1Byb2dyZXNzaXZlUmVuZGVyZXIoKQ0KK3sNCisgICAgbV9wUmVuZGVyZXIgPSBOVUxMOw0KKyAgICBtX3BDb250ZXh0ID0gTlVMTDsNCisgICAgbV9wRGV2aWNlID0gTlVMTDsNCisgICAgbV9TdGF0dXMgPSBSZWFkeTsNCit9DQorQ1BERl9Qcm9ncmVzc2l2ZVJlbmRlcmVyOjp+Q1BERl9Qcm9ncmVzc2l2ZVJlbmRlcmVyKCkNCit7DQorICAgIENsZWFyKCk7DQorfQ0KK3ZvaWQgQ1BERl9Qcm9ncmVzc2l2ZVJlbmRlcmVyOjpDbGVhcigpDQorew0KKyAgICBpZiAobV9wUmVuZGVyZXIpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BSZW5kZXJlcjsNCisgICAgICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgICAgICBtX3BSZW5kZXJlciA9IE5VTEw7DQorICAgIH0NCisgICAgbV9TdGF0dXMgPSBSZWFkeTsNCit9DQordm9pZCBDUERGX1Byb2dyZXNzaXZlUmVuZGVyZXI6OlN0YXJ0KENQREZfUmVuZGVyQ29udGV4dCogcENvbnRleHQsIENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMsIElGWF9QYXVzZSogcFBhdXNlLCBGWF9CT09MIGJEcm9wT2JqZWN0cykNCit7DQorICAgIGlmIChtX1N0YXR1cyAhPSBSZWFkeSkgew0KKyAgICAgICAgbV9TdGF0dXMgPSBGYWlsZWQ7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wQ29udGV4dCA9IHBDb250ZXh0Ow0KKyAgICBtX3BEZXZpY2UgPSBwRGV2aWNlOw0KKyAgICBtX3BPcHRpb25zID0gcE9wdGlvbnM7DQorICAgIG1fYkRyb3BPYmplY3RzID0gYkRyb3BPYmplY3RzOw0KKyAgICBpZiAocENvbnRleHQgPT0gTlVMTCB8fCBwRGV2aWNlID09IE5VTEwpIHsNCisgICAgICAgIG1fU3RhdHVzID0gRmFpbGVkOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fU3RhdHVzID0gVG9CZUNvbnRpbnVlZDsNCisgICAgbV9PYmplY3RQb3MgPSBOVUxMOw0KKyAgICBtX0xheWVySW5kZXggPSAwOw0KKyAgICBtX09iamVjdEluZGV4ID0gMDsNCisgICAgbV9QcmV2TGFzdFBvcyA9IE5VTEw7DQorICAgIENvbnRpbnVlKHBQYXVzZSk7DQorfQ0KKyNpZmRlZiBfRlBERkFQSV9NSU5JXw0KKyNkZWZpbmUgUkVOREVSX1NURVBfTElNSVQgMjANCisjZWxzZQ0KKyNkZWZpbmUgUkVOREVSX1NURVBfTElNSVQgMTAwDQorI2VuZGlmDQordm9pZCBDUERGX1Byb2dyZXNzaXZlUmVuZGVyZXI6OkNvbnRpbnVlKElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgaWYgKG1fU3RhdHVzICE9IFRvQmVDb250aW51ZWQpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBuTGF5ZXJzID0gbV9wQ29udGV4dC0+bV9Db250ZW50TGlzdC5HZXRTaXplKCk7DQorICAgIGZvciAoOyBtX0xheWVySW5kZXggPCBuTGF5ZXJzOyBtX0xheWVySW5kZXggKyspIHsNCisgICAgICAgIF9QREZfUmVuZGVySXRlbSogcEl0ZW0gPSBtX3BDb250ZXh0LT5tX0NvbnRlbnRMaXN0LkdldERhdGFQdHIobV9MYXllckluZGV4KTsNCisgICAgICAgIEZYX1BPU0lUSU9OIExhc3RQb3MgPSBwSXRlbS0+bV9wT2JqZWN0TGlzdC0+R2V0TGFzdE9iamVjdFBvc2l0aW9uKCk7DQorICAgICAgICBpZiAobV9PYmplY3RQb3MgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGlmIChMYXN0UG9zID09IG1fUHJldkxhc3RQb3MpIHsNCisgICAgICAgICAgICAgICAgaWYgKCFwSXRlbS0+bV9wT2JqZWN0TGlzdC0+SXNQYXJzZWQoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcEl0ZW0tPm1fcE9iamVjdExpc3QtPkNvbnRpbnVlUGFyc2UocFBhdXNlKTsNCisgICAgICAgICAgICAgICAgICAgIGlmICghcEl0ZW0tPm1fcE9iamVjdExpc3QtPklzUGFyc2VkKCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBMYXN0UG9zID0gcEl0ZW0tPm1fcE9iamVjdExpc3QtPkdldExhc3RPYmplY3RQb3NpdGlvbigpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChMYXN0UG9zID09IG1fUHJldkxhc3RQb3MpIHsNCisgICAgICAgICAgICAgICAgaWYgKG1fcFJlbmRlcmVyKSB7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgbV9wUmVuZGVyZXI7DQorICAgICAgICAgICAgICAgICAgICBtX3BSZW5kZXJlciA9IE5VTEw7DQorICAgICAgICAgICAgICAgICAgICBtX3BEZXZpY2UtPlJlc3RvcmVTdGF0ZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9PYmplY3RQb3MgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICAgICAgbV9QcmV2TGFzdFBvcyA9IE5VTEw7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX1ByZXZMYXN0UG9zKSB7DQorICAgICAgICAgICAgICAgIG1fT2JqZWN0UG9zID0gbV9QcmV2TGFzdFBvczsNCisgICAgICAgICAgICAgICAgcEl0ZW0tPm1fcE9iamVjdExpc3QtPkdldE5leHRPYmplY3QobV9PYmplY3RQb3MpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG1fT2JqZWN0UG9zID0gcEl0ZW0tPm1fcE9iamVjdExpc3QtPkdldEZpcnN0T2JqZWN0UG9zaXRpb24oKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9QcmV2TGFzdFBvcyA9IExhc3RQb3M7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9wUmVuZGVyZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fT2JqZWN0UG9zID0gcEl0ZW0tPm1fcE9iamVjdExpc3QtPkdldEZpcnN0T2JqZWN0UG9zaXRpb24oKTsNCisgICAgICAgICAgICBtX09iamVjdEluZGV4ID0gMDsNCisgICAgICAgICAgICBtX3BSZW5kZXJlciA9IEZYX05FVyBDUERGX1JlbmRlclN0YXR1cygpOw0KKyAgICAgICAgICAgIG1fcFJlbmRlcmVyLT5Jbml0aWFsaXplKDAsIG1fcENvbnRleHQsIG1fcERldmljZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BPcHRpb25zLCBwSXRlbS0+bV9wT2JqZWN0TGlzdC0+bV9UcmFuc3BhcmVuY3ksIG1fYkRyb3BPYmplY3RzLCBOVUxMKTsNCisgICAgICAgICAgICBtX3BEZXZpY2UtPlNhdmVTdGF0ZSgpOw0KKyAgICAgICAgICAgIG1fQ2xpcFJlY3QgPSBtX3BEZXZpY2UtPkdldENsaXBCb3goKTsNCisgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IGRldmljZTJvYmplY3Q7DQorICAgICAgICAgICAgZGV2aWNlMm9iamVjdC5TZXRSZXZlcnNlKHBJdGVtLT5tX01hdHJpeCk7DQorICAgICAgICAgICAgZGV2aWNlMm9iamVjdC5UcmFuc2Zvcm1SZWN0KG1fQ2xpcFJlY3QpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IG9ianNfdG9fZ28gPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldFJlbmRlck1vZHVsZSgpLT5HZXRDb25maWcoKS0+bV9SZW5kZXJTdGVwTGltaXQ7DQorICAgICAgICB3aGlsZSAobV9PYmplY3RQb3MpIHsNCisgICAgICAgICAgICBDUERGX1BhZ2VPYmplY3QqIHBDdXJPYmogPSBwSXRlbS0+bV9wT2JqZWN0TGlzdC0+R2V0T2JqZWN0QXQobV9PYmplY3RQb3MpOw0KKyAgICAgICAgICAgIGlmIChwQ3VyT2JqICYmIHBDdXJPYmotPm1fTGVmdCA8PSBtX0NsaXBSZWN0LnJpZ2h0ICYmIHBDdXJPYmotPm1fUmlnaHQgPj0gbV9DbGlwUmVjdC5sZWZ0ICYmDQorICAgICAgICAgICAgICAgICAgICBwQ3VyT2JqLT5tX0JvdHRvbSA8PSBtX0NsaXBSZWN0LnRvcCAmJiBwQ3VyT2JqLT5tX1RvcCA+PSBtX0NsaXBSZWN0LmJvdHRvbSkgew0KKyAgICAgICAgICAgICAgICBpZiAobV9wUmVuZGVyZXItPkNvbnRpbnVlU2luZ2xlT2JqZWN0KHBDdXJPYmosICZwSXRlbS0+bV9NYXRyaXgsIHBQYXVzZSkpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykNCisgICAgICAgICAgICAgICAgaWYgKHBDdXJPYmotPm1fVHlwZSA9PSBQREZQQUdFX0lNQUdFICYmIG1fcFJlbmRlcmVyLT5tX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9MSU1JVEVESU1BR0VDQUNIRSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wQ29udGV4dC0+R2V0UGFnZUNhY2hlKCktPkNhY2hlT3B0aW1pemF0aW9uKG1fcFJlbmRlcmVyLT5tX09wdGlvbnMubV9kd0xpbWl0Q2FjaGVTaXplKTsNCisgICAgICAgICAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICAgICAgICAgICAgICBpZiAocEN1ck9iai0+bV9UeXBlID09IFBERlBBR0VfRk9STSB8fCBwQ3VyT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9TSEFESU5HKSB7DQorICAgICAgICAgICAgICAgICAgICBvYmpzX3RvX2dvID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG9ianNfdG9fZ28gLS07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9PYmplY3RJbmRleCArKzsNCisgICAgICAgICAgICBwSXRlbS0+bV9wT2JqZWN0TGlzdC0+R2V0TmV4dE9iamVjdChtX09iamVjdFBvcyk7DQorICAgICAgICAgICAgaWYgKG9ianNfdG9fZ28gPT0gMCkgew0KKyAgICAgICAgICAgICAgICBpZiAocFBhdXNlICYmIHBQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG9ianNfdG9fZ28gPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldFJlbmRlck1vZHVsZSgpLT5HZXRDb25maWcoKS0+bV9SZW5kZXJTdGVwTGltaXQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFwSXRlbS0+bV9wT2JqZWN0TGlzdC0+SXNQYXJzZWQoKSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGRlbGV0ZSBtX3BSZW5kZXJlcjsNCisgICAgICAgIG1fcFJlbmRlcmVyID0gTlVMTDsNCisgICAgICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgICAgICBtX09iamVjdFBvcyA9IE5VTEw7DQorICAgICAgICBtX1ByZXZMYXN0UG9zID0gTlVMTDsNCisgICAgICAgIGlmIChwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgbV9MYXllckluZGV4Kys7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fU3RhdHVzID0gRG9uZTsNCit9DQoraW50IENQREZfUHJvZ3Jlc3NpdmVSZW5kZXJlcjo6RXN0aW1hdGVQcm9ncmVzcygpDQorew0KKyAgICBpZiAoIW1fcENvbnRleHQpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIG5MYXllcnMgPSBtX3BDb250ZXh0LT5tX0NvbnRlbnRMaXN0LkdldFNpemUoKTsNCisgICAgaW50IG5Ub3RhbCA9IDAsIG5SZW5kZXJlZCA9IDA7DQorICAgIGZvciAoRlhfRFdPUkQgbGF5ZXIgPSAwOyBsYXllciA8IG5MYXllcnM7IGxheWVyICsrKSB7DQorICAgICAgICBfUERGX1JlbmRlckl0ZW0qIHBJdGVtID0gbV9wQ29udGV4dC0+bV9Db250ZW50TGlzdC5HZXREYXRhUHRyKGxheWVyKTsNCisgICAgICAgIGludCBuT2JqcyA9IHBJdGVtLT5tX3BPYmplY3RMaXN0LT5Db3VudE9iamVjdHMoKTsNCisgICAgICAgIGlmIChsYXllciA9PSBtX0xheWVySW5kZXgpIHsNCisgICAgICAgICAgICBuUmVuZGVyZWQgKz0gbV9PYmplY3RJbmRleDsNCisgICAgICAgIH0gZWxzZSBpZiAobGF5ZXIgPCBtX0xheWVySW5kZXgpIHsNCisgICAgICAgICAgICBuUmVuZGVyZWQgKz0gbk9ianM7DQorICAgICAgICB9DQorICAgICAgICBuVG90YWwgKz0gbk9ianM7DQorICAgIH0NCisgICAgaWYgKG5Ub3RhbCA9PSAwKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gMTAwICogblJlbmRlcmVkIC8gblRvdGFsOw0KK30NCitDUERGX1RyYW5zZmVyRnVuYyogQ1BERl9Eb2NSZW5kZXJEYXRhOjpHZXRUcmFuc2ZlckZ1bmMoQ1BERl9PYmplY3QqIHBPYmopDQorew0KKyAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0NvdW50ZWRPYmplY3Q8Q1BERl9UcmFuc2ZlckZ1bmMqPiogcFRyYW5zZmVyQ291bnRlcjsNCisgICAgaWYgKCFtX1RyYW5zZmVyRnVuY01hcC5Mb29rdXAocE9iaiwgcFRyYW5zZmVyQ291bnRlcikpIHsNCisgICAgICAgIENQREZfVHJhbnNmZXJGdW5jKiBwVHJhbnNmZXIgPSBOVUxMOw0KKyAgICAgICAgQ1BERl9GdW5jdGlvbiogcEZ1bmNzWzNdID0ge05VTEwsIE5VTEwsIE5VTEx9Ow0KKyAgICAgICAgRlhfQk9PTCBiVW5pVHJhbnNmZXIgPSBUUlVFOw0KKyAgICAgICAgaW50IGk7DQorICAgICAgICBGWF9CT09MIGJJZGVudGl0eSA9IFRSVUU7DQorICAgICAgICBpZiAocE9iai0+R2V0VHlwZSgpID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgICAgIGJVbmlUcmFuc2ZlciA9IEZBTFNFOw0KKyAgICAgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwT2JqOw0KKyAgICAgICAgICAgIGlmIChwQXJyYXktPkdldENvdW50KCkgPCAzKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgMzsgaSArKykgew0KKyAgICAgICAgICAgICAgICBwRnVuY3NbMiAtIGldID0gQ1BERl9GdW5jdGlvbjo6TG9hZChwQXJyYXktPkdldEVsZW1lbnRWYWx1ZShpKSk7DQorICAgICAgICAgICAgICAgIGlmIChwRnVuY3NbMiAtIGldID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwRnVuY3NbMF0gPSBDUERGX0Z1bmN0aW9uOjpMb2FkKHBPYmopOw0KKyAgICAgICAgICAgIGlmIChwRnVuY3NbMF0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBwVHJhbnNmZXIgPSBGWF9ORVcgQ1BERl9UcmFuc2ZlckZ1bmM7DQorICAgICAgICBwVHJhbnNmZXItPm1fcFBERkRvYyA9IG1fcFBERkRvYzsNCisgICAgICAgIHBUcmFuc2ZlckNvdW50ZXIgPSBGWF9ORVcgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfVHJhbnNmZXJGdW5jKj47DQorICAgICAgICBwVHJhbnNmZXJDb3VudGVyLT5tX25Db3VudCA9IDE7DQorICAgICAgICBwVHJhbnNmZXJDb3VudGVyLT5tX09iaiA9IHBUcmFuc2ZlcjsNCisgICAgICAgIG1fVHJhbnNmZXJGdW5jTWFwLlNldEF0KHBPYmosIHBUcmFuc2ZlckNvdW50ZXIpOw0KKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrTWF4T3V0cHV0cyA9IDE2Ow0KKyAgICAgICAgRlhfRkxPQVQgb3V0cHV0W2tNYXhPdXRwdXRzXTsNCisgICAgICAgIEZYU1lTX21lbXNldDMyKG91dHB1dCwgMCwgc2l6ZW9mKG91dHB1dCkpOw0KKyAgICAgICAgRlhfRkxPQVQgaW5wdXQ7DQorICAgICAgICBpbnQgbm91dHB1dDsNCisgICAgICAgIGZvciAoaW50IHYgPSAwOyB2IDwgMjU2OyB2ICsrKSB7DQorICAgICAgICAgICAgaW5wdXQgPSAoRlhfRkxPQVQpdiAvIDI1NS4wZjsNCisgICAgICAgICAgICBpZiAoYlVuaVRyYW5zZmVyKSB7DQorICAgICAgICAgICAgICAgIGlmIChwRnVuY3NbMF0gJiYgcEZ1bmNzWzBdLT5Db3VudE91dHB1dHMoKSA8PSBrTWF4T3V0cHV0cykgew0KKyAgICAgICAgICAgICAgICAgICAgcEZ1bmNzWzBdLT5DYWxsKCZpbnB1dCwgMSwgb3V0cHV0LCBub3V0cHV0KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpbnQgbyA9IEZYU1lTX3JvdW5kKG91dHB1dFswXSAqIDI1NSk7DQorICAgICAgICAgICAgICAgIGlmIChvICE9IHYpIHsNCisgICAgICAgICAgICAgICAgICAgIGJJZGVudGl0eSA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBwVHJhbnNmZXItPm1fU2FtcGxlc1tpICogMjU2ICsgdl0gPSBvOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEZ1bmNzW2ldICYmIHBGdW5jc1tpXS0+Q291bnRPdXRwdXRzKCkgPD0ga01heE91dHB1dHMpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwRnVuY3NbaV0tPkNhbGwoJmlucHV0LCAxLCBvdXRwdXQsIG5vdXRwdXQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBvID0gRlhTWVNfcm91bmQob3V0cHV0WzBdICogMjU1KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyAhPSB2KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJJZGVudGl0eSA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBwVHJhbnNmZXItPm1fU2FtcGxlc1tpICogMjU2ICsgdl0gPSBvOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwVHJhbnNmZXItPm1fU2FtcGxlc1tpICogMjU2ICsgdl0gPSB2Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSArKykNCisgICAgICAgICAgICBpZiAocEZ1bmNzW2ldKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBwRnVuY3NbaV07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgcFRyYW5zZmVyLT5tX2JJZGVudGl0eSA9IGJJZGVudGl0eTsNCisgICAgfQ0KKyAgICBwVHJhbnNmZXJDb3VudGVyLT5tX25Db3VudCsrOw0KKyAgICByZXR1cm4gcFRyYW5zZmVyQ291bnRlci0+bV9PYmo7DQorfQ0KK3ZvaWQgQ1BERl9Eb2NSZW5kZXJEYXRhOjpSZWxlYXNlVHJhbnNmZXJGdW5jKENQREZfT2JqZWN0KiBwT2JqKQ0KK3sNCisgICAgQ1BERl9Db3VudGVkT2JqZWN0PENQREZfVHJhbnNmZXJGdW5jKj4qIHBUcmFuc2ZlckNvdW50ZXI7DQorICAgIGlmICghbV9UcmFuc2ZlckZ1bmNNYXAuTG9va3VwKHBPYmosIHBUcmFuc2ZlckNvdW50ZXIpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcFRyYW5zZmVyQ291bnRlci0+bV9uQ291bnQtLTsNCit9DQorQ1BERl9SZW5kZXJDb25maWc6OkNQREZfUmVuZGVyQ29uZmlnKCkNCit7DQorICAgIG1fSGFsZnRvbmVMaW1pdCA9IDA7DQorI2lmZGVmIF9GUERGQVBJX01JTklfDQorICAgIG1fUmVuZGVyU3RlcExpbWl0ID0gMjA7DQorI2Vsc2UNCisgICAgbV9SZW5kZXJTdGVwTGltaXQgPSAxMDA7DQorI2VuZGlmDQorfQ0KK0NQREZfUmVuZGVyQ29uZmlnOjp+Q1BERl9SZW5kZXJDb25maWcoKQ0KK3sNCit9DQorQ1BERl9EZXZpY2VCdWZmZXI6OkNQREZfRGV2aWNlQnVmZmVyKCkNCit7DQorICAgIG1fcEJpdG1hcCA9IE5VTEw7DQorICAgIG1fcERldmljZSA9IE5VTEw7DQorICAgIG1fcENvbnRleHQgPSBOVUxMOw0KKyAgICBtX3BPYmplY3QgPSBOVUxMOw0KK30NCitDUERGX0RldmljZUJ1ZmZlcjo6fkNQREZfRGV2aWNlQnVmZmVyKCkNCit7DQorICAgIGlmIChtX3BCaXRtYXApIHsNCisgICAgICAgIGRlbGV0ZSBtX3BCaXRtYXA7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0RldmljZUJ1ZmZlcjo6SW5pdGlhbGl6ZShDUERGX1JlbmRlckNvbnRleHQqIHBDb250ZXh0LCBDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBGWF9SRUNUKiBwUmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaiwgaW50IG1heF9kcGkpDQorew0KKyAgICBtX3BEZXZpY2UgPSBwRGV2aWNlOw0KKyAgICBtX3BDb250ZXh0ID0gcENvbnRleHQ7DQorICAgIG1fUmVjdCA9ICpwUmVjdDsNCisgICAgbV9wT2JqZWN0ID0gcE9iajsNCisgICAgbV9NYXRyaXguVHJhbnNsYXRlSSgtcFJlY3QtPmxlZnQsIC1wUmVjdC0+dG9wKTsNCisjaWYgX0ZYTV9QTEFURk9STV8gIT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgaW50IGhvcnpfc2l6ZSA9IHBEZXZpY2UtPkdldERldmljZUNhcHMoRlhEQ19IT1JaX1NJWkUpOw0KKyAgICBpbnQgdmVydF9zaXplID0gcERldmljZS0+R2V0RGV2aWNlQ2FwcyhGWERDX1ZFUlRfU0laRSk7DQorICAgIGlmIChob3J6X3NpemUgJiYgdmVydF9zaXplICYmIG1heF9kcGkpIHsNCisgICAgICAgIGludCBkcGloID0gcERldmljZS0+R2V0RGV2aWNlQ2FwcyhGWERDX1BJWEVMX1dJRFRIKSAqIDI1NCAvIChob3J6X3NpemUgKiAxMCk7DQorICAgICAgICBpbnQgZHBpdiA9IHBEZXZpY2UtPkdldERldmljZUNhcHMoRlhEQ19QSVhFTF9IRUlHSFQpICogMjU0IC8gKHZlcnRfc2l6ZSAqIDEwKTsNCisgICAgICAgIGlmIChkcGloID4gbWF4X2RwaSkgew0KKyAgICAgICAgICAgIG1fTWF0cml4LlNjYWxlKChGWF9GTE9BVCkobWF4X2RwaSkgLyBkcGloLCAxLjBmKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChkcGl2ID4gbWF4X2RwaSkgew0KKyAgICAgICAgICAgIG1fTWF0cml4LlNjYWxlKDEuMGYsIChGWF9GTE9BVCkobWF4X2RwaSkgLyAoRlhfRkxPQVQpZHBpdik7DQorICAgICAgICB9DQorICAgIH0NCisjaWZkZWYgX0ZQREZBUElfTUlOSV8NCisgICAgbV9NYXRyaXguU2NhbGUoMC41ZiwgMC41Zik7DQorI2VuZGlmDQorI2VuZGlmDQorICAgIENGWF9NYXRyaXggY3RtID0gbV9wRGV2aWNlLT5HZXRDVE0oKTsNCisgICAgRlhfRkxPQVQgZlNjYWxlWCA9IEZYU1lTX2ZhYnMoY3RtLmEpOw0KKyAgICBGWF9GTE9BVCBmU2NhbGVZID0gRlhTWVNfZmFicyhjdG0uZCk7DQorICAgIG1fTWF0cml4LkNvbmNhdChmU2NhbGVYLCAwLCAwLCBmU2NhbGVZLCAwLCAwKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0KCpwUmVjdCk7DQorICAgIG1fTWF0cml4LlRyYW5zZm9ybVJlY3QocmVjdCk7DQorICAgIEZYX1JFQ1QgYml0bWFwX3JlY3QgPSByZWN0LkdldE91dHRlclJlY3QoKTsNCisgICAgbV9wQml0bWFwID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgbV9wQml0bWFwLT5DcmVhdGUoYml0bWFwX3JlY3QuV2lkdGgoKSwgYml0bWFwX3JlY3QuSGVpZ2h0KCksIEZYRElCX0FyZ2IpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDUERGX0RldmljZUJ1ZmZlcjo6T3V0cHV0VG9EZXZpY2UoKQ0KK3sNCisgICAgaWYgKG1fcERldmljZS0+R2V0RGV2aWNlQ2FwcyhGWERDX1JFTkRFUl9DQVBTKSAmIEZYUkNfR0VUX0JJVFMpIHsNCisgICAgICAgIGlmIChtX01hdHJpeC5hID09IDEuMGYgJiYgbV9NYXRyaXguZCA9PSAxLjBmKSB7DQorICAgICAgICAgICAgbV9wRGV2aWNlLT5TZXRESUJpdHMobV9wQml0bWFwLCBtX1JlY3QubGVmdCwgbV9SZWN0LnRvcCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fcERldmljZS0+U3RyZXRjaERJQml0cyhtX3BCaXRtYXAsIG1fUmVjdC5sZWZ0LCBtX1JlY3QudG9wLCBtX1JlY3QuV2lkdGgoKSwgbV9SZWN0LkhlaWdodCgpKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisjaWYgIWRlZmluZWQoX0ZQREZBUElfTUlOSV8pIHx8IGRlZmluZWQoX0ZYQ09SRV9GRUFUVVJFX0FMTF8pDQorICAgICAgICBDRlhfRElCaXRtYXAgYnVmZmVyOw0KKyAgICAgICAgbV9wRGV2aWNlLT5DcmVhdGVDb21wYXRpYmxlQml0bWFwKCZidWZmZXIsIG1fcEJpdG1hcC0+R2V0V2lkdGgoKSwgbV9wQml0bWFwLT5HZXRIZWlnaHQoKSk7DQorICAgICAgICBtX3BDb250ZXh0LT5HZXRCYWNrZ3JvdW5kKCZidWZmZXIsIG1fcE9iamVjdCwgTlVMTCwgJm1fTWF0cml4KTsNCisgICAgICAgIGJ1ZmZlci5Db21wb3NpdGVCaXRtYXAoMCwgMCwgYnVmZmVyLkdldFdpZHRoKCksIGJ1ZmZlci5HZXRIZWlnaHQoKSwgbV9wQml0bWFwLCAwLCAwKTsNCisgICAgICAgIG1fcERldmljZS0+U3RyZXRjaERJQml0cygmYnVmZmVyLCBtX1JlY3QubGVmdCwgbV9SZWN0LnRvcCwgbV9SZWN0LldpZHRoKCksIG1fUmVjdC5IZWlnaHQoKSk7DQorI2VuZGlmDQorICAgIH0NCit9DQorQ1BERl9TY2FsZWRSZW5kZXJCdWZmZXI6OkNQREZfU2NhbGVkUmVuZGVyQnVmZmVyKCkNCit7DQorICAgIG1fcEJpdG1hcERldmljZSA9IE5VTEw7DQorfQ0KK0NQREZfU2NhbGVkUmVuZGVyQnVmZmVyOjp+Q1BERl9TY2FsZWRSZW5kZXJCdWZmZXIoKQ0KK3sNCisgICAgaWYgKG1fcEJpdG1hcERldmljZSkgew0KKyAgICAgICAgZGVsZXRlIG1fcEJpdG1hcERldmljZTsNCisgICAgfQ0KK30NCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorI2RlZmluZSBfRlBERkFQSV9JTUFHRVNJWkVfTElNSVRfCSgzMCAqIDEwMjQgKiAxMDI0KQ0KKyNlbHNlDQorI2RlZmluZSBfRlBERkFQSV9JTUFHRVNJWkVfTElNSVRfCSgxMCAqIDEwMjQgKiAxMDI0KQ0KKyNlbmRpZg0KK0ZYX0JPT0wgQ1BERl9TY2FsZWRSZW5kZXJCdWZmZXI6OkluaXRpYWxpemUoQ1BERl9SZW5kZXJDb250ZXh0KiBwQ29udGV4dCwgQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgRlhfUkVDVCogcFJlY3QsDQorICAgICAgICBjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIGNvbnN0IENQREZfUmVuZGVyT3B0aW9ucyAqcE9wdGlvbnMsIGludCBtYXhfZHBpKQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KHBSZWN0ICE9IE5VTEwpOw0KKyAgICBtX3BEZXZpY2UgPSBwRGV2aWNlOw0KKyAgICBpZiAobV9wRGV2aWNlLT5HZXREZXZpY2VDYXBzKEZYRENfUkVOREVSX0NBUFMpICYgRlhSQ19HRVRfQklUUykgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgbV9wQ29udGV4dCA9IHBDb250ZXh0Ow0KKyAgICBtX1JlY3QgPSAqcFJlY3Q7DQorICAgIG1fcE9iamVjdCA9IHBPYmo7DQorICAgIG1fTWF0cml4LlRyYW5zbGF0ZUkoLXBSZWN0LT5sZWZ0LCAtcFJlY3QtPnRvcCk7DQorICAgIGludCBob3J6X3NpemUgPSBwRGV2aWNlLT5HZXREZXZpY2VDYXBzKEZYRENfSE9SWl9TSVpFKTsNCisgICAgaW50IHZlcnRfc2l6ZSA9IHBEZXZpY2UtPkdldERldmljZUNhcHMoRlhEQ19WRVJUX1NJWkUpOw0KKyAgICBpZiAoaG9yel9zaXplICYmIHZlcnRfc2l6ZSAmJiBtYXhfZHBpKSB7DQorICAgICAgICBpbnQgZHBpaCA9IHBEZXZpY2UtPkdldERldmljZUNhcHMoRlhEQ19QSVhFTF9XSURUSCkgKiAyNTQgLyAoaG9yel9zaXplICogMTApOw0KKyAgICAgICAgaW50IGRwaXYgPSBwRGV2aWNlLT5HZXREZXZpY2VDYXBzKEZYRENfUElYRUxfSEVJR0hUKSAqIDI1NCAvICh2ZXJ0X3NpemUgKiAxMCk7DQorICAgICAgICBpZiAoZHBpaCA+IG1heF9kcGkpIHsNCisgICAgICAgICAgICBtX01hdHJpeC5TY2FsZSgoRlhfRkxPQVQpKG1heF9kcGkpIC8gZHBpaCwgMS4wZik7DQorICAgICAgICB9DQorICAgICAgICBpZiAoZHBpdiA+IG1heF9kcGkpIHsNCisgICAgICAgICAgICBtX01hdHJpeC5TY2FsZSgxLjBmLCAoRlhfRkxPQVQpKG1heF9kcGkpIC8gKEZYX0ZMT0FUKWRwaXYpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fcEJpdG1hcERldmljZSA9IEZYX05FVyBDRlhfRnhnZURldmljZTsNCisgICAgRlhESUJfRm9ybWF0IGRpYkZvcm1hdCA9IEZYRElCX1JnYjsNCisgICAgRlhfSU5UMzIgYnBwID0gMjQ7DQorICAgIGlmIChtX3BEZXZpY2UtPkdldERldmljZUNhcHMoRlhEQ19SRU5ERVJfQ0FQUykgJiBGWFJDX0FMUEhBX09VVFBVVCkgew0KKyAgICAgICAgZGliRm9ybWF0ID0gRlhESUJfQXJnYjsNCisgICAgICAgIGJwcCA9IDMyOw0KKyAgICB9DQorICAgIENGWF9GbG9hdFJlY3QgcmVjdDsNCisgICAgRlhfSU5UMzIgaVdpZHRoLCBpSGVpZ2h0LCBpUGl0Y2g7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICByZWN0ID0gKnBSZWN0Ow0KKyAgICAgICAgbV9NYXRyaXguVHJhbnNmb3JtUmVjdChyZWN0KTsNCisgICAgICAgIEZYX1JFQ1QgYml0bWFwX3JlY3QgPSByZWN0LkdldE91dHRlclJlY3QoKTsNCisgICAgICAgIGlXaWR0aCA9IGJpdG1hcF9yZWN0LldpZHRoKCk7DQorICAgICAgICBpSGVpZ2h0ID0gYml0bWFwX3JlY3QuSGVpZ2h0KCk7DQorICAgICAgICBpUGl0Y2ggPSAoaVdpZHRoICogYnBwICsgMzEpIC8gMzIgKiA0Ow0KKyAgICAgICAgaWYgKGlXaWR0aCAqIGlIZWlnaHQgPCAxKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGlQaXRjaCAqIGlIZWlnaHQgPD0gX0ZQREZBUElfSU1BR0VTSVpFX0xJTUlUXyAmJg0KKyAgICAgICAgICAgICAgICBtX3BCaXRtYXBEZXZpY2UtPkNyZWF0ZShpV2lkdGgsIGlIZWlnaHQsIGRpYkZvcm1hdCkpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIG1fTWF0cml4LlNjYWxlKDAuNWYsIDAuNWYpOw0KKyAgICB9DQorI2lmICAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykgfHwgZGVmaW5lZChfRlhDT1JFX0ZFQVRVUkVfQUxMXykNCisgICAgbV9wQ29udGV4dC0+R2V0QmFja2dyb3VuZChtX3BCaXRtYXBEZXZpY2UtPkdldEJpdG1hcCgpLCBtX3BPYmplY3QsIHBPcHRpb25zLCAmbV9NYXRyaXgpOw0KKyNlbmRpZg0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDUERGX1NjYWxlZFJlbmRlckJ1ZmZlcjo6T3V0cHV0VG9EZXZpY2UoKQ0KK3sNCisgICAgaWYgKG1fcEJpdG1hcERldmljZSkgew0KKyAgICAgICAgbV9wRGV2aWNlLT5TdHJldGNoRElCaXRzKG1fcEJpdG1hcERldmljZS0+R2V0Qml0bWFwKCksIG1fUmVjdC5sZWZ0LCBtX1JlY3QudG9wLCBtX1JlY3QuV2lkdGgoKSwgbV9SZWN0LkhlaWdodCgpKTsNCisgICAgfQ0KK30NCitGWF9CT09MIElQREZfT0NDb250ZXh0OjpDaGVja09iamVjdFZpc2libGUoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwT2JqKQ0KK3sNCisgICAgY29uc3QgQ1BERl9Db250ZW50TWFya0RhdGEqIHBEYXRhID0gcE9iai0+bV9Db250ZW50TWFyazsNCisgICAgaW50IG5JdGVtcyA9IHBEYXRhLT5Db3VudEl0ZW1zKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkl0ZW1zOyBpICsrKSB7DQorICAgICAgICBDUERGX0NvbnRlbnRNYXJrSXRlbSYgaXRlbSA9IHBEYXRhLT5HZXRJdGVtKGkpOw0KKyAgICAgICAgaWYgKGl0ZW0uR2V0TmFtZSgpID09IEZYX0JTVFJDKCJPQyIpICYmIGl0ZW0uR2V0UGFyYW1UeXBlKCkgPT0gQ1BERl9Db250ZW50TWFya0l0ZW06OlByb3BlcnRpZXNEaWN0KSB7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwT0NHID0gKENQREZfRGljdGlvbmFyeSopaXRlbS5HZXRQYXJhbSgpOw0KKyAgICAgICAgICAgIGlmICghQ2hlY2tPQ0dWaXNpYmxlKHBPQ0cpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9yZW5kZXIvZnBkZl9yZW5kZXJfY2FjaGUuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3JlbmRlci9mcGRmX3JlbmRlcl9jYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViZTMzOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9yZW5kZXIvZnBkZl9yZW5kZXJfY2FjaGUuY3BwCkBAIC0wLDAgKzEsMzg5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcmVuZGVyLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2VvYmouaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2dlLmgiDQorI2luY2x1ZGUgIi4uL2ZwZGZfcGFnZS9wYWdlaW50LmgiDQorI2luY2x1ZGUgInJlbmRlcl9pbnQuaCINCitzdHJ1Y3QgQ0FDSEVJTkZPIHsNCisgICAgRlhfRFdPUkQgdGltZTsNCisgICAgQ1BERl9TdHJlYW0qIHBTdHJlYW07DQorfTsNCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIGludCBjb21wYXJlKGNvbnN0IHZvaWQqIGRhdGExLCBjb25zdCB2b2lkKiBkYXRhMikNCisgICAgew0KKyAgICAgICAgcmV0dXJuICgoQ0FDSEVJTkZPKilkYXRhMSktPnRpbWUgLSAoKENBQ0hFSU5GTyopZGF0YTIpLT50aW1lOw0KKyAgICB9DQorfTsNCit2b2lkIENQREZfUGFnZTo6Q2xlYXJSZW5kZXJDYWNoZSgpDQorew0KKyAgICBpZiAobV9wUGFnZVJlbmRlcikgew0KKyAgICAgICAgbV9wUGFnZVJlbmRlci0+Q2xlYXJBbGwoKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfUGFnZVJlbmRlckNhY2hlOjpDbGVhckFsbCgpDQorew0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX0ltYWdlQ2FjaGVzLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgRlhfTFBWT0lEIGtleSwgdmFsdWU7DQorICAgICAgICBtX0ltYWdlQ2FjaGVzLkdldE5leHRBc3NvYyhwb3MsIGtleSwgdmFsdWUpOw0KKyAgICAgICAgZGVsZXRlIChDUERGX0ltYWdlQ2FjaGUqKXZhbHVlOw0KKyAgICB9DQorICAgIG1fSW1hZ2VDYWNoZXMuUmVtb3ZlQWxsKCk7DQorICAgIG1fbkNhY2hlU2l6ZSA9IDA7DQorICAgIG1fblRpbWVDb3VudCA9IDA7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlUmVuZGVyQ2FjaGU6OkNhY2hlT3B0aW1pemF0aW9uKEZYX0lOVDMyIGR3TGltaXRDYWNoZVNpemUpDQorew0KKyAgICBpZiAobV9uQ2FjaGVTaXplIDw9IChGWF9EV09SRClkd0xpbWl0Q2FjaGVTaXplKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IG5Db3VudCA9IG1fSW1hZ2VDYWNoZXMuR2V0Q291bnQoKTsNCisgICAgQ0FDSEVJTkZPKiBwQ0FDSEVJTkZPID0gKENBQ0hFSU5GTyopRlhfQWxsb2MoRlhfQllURSwgKHNpemVvZiAoQ0FDSEVJTkZPKSkgKiBuQ291bnQpOw0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX0ltYWdlQ2FjaGVzLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgaW50IGkgPSAwOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBGWF9MUFZPSUQga2V5LCB2YWx1ZTsNCisgICAgICAgIG1fSW1hZ2VDYWNoZXMuR2V0TmV4dEFzc29jKHBvcywga2V5LCB2YWx1ZSk7DQorICAgICAgICBwQ0FDSEVJTkZPW2ldLnRpbWUgPSAoKENQREZfSW1hZ2VDYWNoZSopdmFsdWUpLT5HZXRUaW1lQ291bnQoKTsNCisgICAgICAgIHBDQUNIRUlORk9baSsrXS5wU3RyZWFtID0gKChDUERGX0ltYWdlQ2FjaGUqKXZhbHVlKS0+R2V0U3RyZWFtKCk7DQorICAgIH0NCisgICAgRlhTWVNfcXNvcnQocENBQ0hFSU5GTywgbkNvdW50LCBzaXplb2YgKENBQ0hFSU5GTyksIGNvbXBhcmUpOw0KKyAgICBGWF9EV09SRCBuVGltZUNvdW50ID0gbV9uVGltZUNvdW50Ow0KKyAgICBpZiAoblRpbWVDb3VudCArIDEgPCBuVGltZUNvdW50KSB7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbkNvdW50OyBpICsrKSB7DQorICAgICAgICAgICAgKChDUERGX0ltYWdlQ2FjaGUqKShtX0ltYWdlQ2FjaGVzW3BDQUNIRUlORk9baV0ucFN0cmVhbV0pKS0+bV9kd1RpbWVDb3VudCA9IGk7DQorICAgICAgICB9DQorICAgICAgICBtX25UaW1lQ291bnQgPSBuQ291bnQ7DQorICAgIH0NCisgICAgaSA9IDA7DQorICAgIHdoaWxlKG5Db3VudCA+IDE1KSB7DQorICAgICAgICBDbGVhckltYWdlQ2FjaGUocENBQ0hFSU5GT1tpKytdLnBTdHJlYW0pOw0KKyAgICAgICAgbkNvdW50LS07DQorICAgIH0NCisgICAgd2hpbGUgKG1fbkNhY2hlU2l6ZSA+IChGWF9EV09SRClkd0xpbWl0Q2FjaGVTaXplKSB7DQorICAgICAgICBDbGVhckltYWdlQ2FjaGUocENBQ0hFSU5GT1tpKytdLnBTdHJlYW0pOw0KKyAgICB9DQorICAgIEZYX0ZyZWUocENBQ0hFSU5GTyk7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlUmVuZGVyQ2FjaGU6OkNsZWFySW1hZ2VDYWNoZShDUERGX1N0cmVhbSogcFN0cmVhbSkNCit7DQorICAgIEZYX0xQVk9JRCB2YWx1ZSA9IG1fSW1hZ2VDYWNoZXMuR2V0VmFsdWVBdChwU3RyZWFtKTsNCisgICAgaWYgKHZhbHVlID09IE5VTEwpCXsNCisgICAgICAgIG1fSW1hZ2VDYWNoZXMuUmVtb3ZlS2V5KHBTdHJlYW0pOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fbkNhY2hlU2l6ZSAtPSAoKENQREZfSW1hZ2VDYWNoZSopdmFsdWUpLT5Fc3RpbWF0ZVNpemUoKTsNCisgICAgZGVsZXRlIChDUERGX0ltYWdlQ2FjaGUqKXZhbHVlOw0KKyAgICBtX0ltYWdlQ2FjaGVzLlJlbW92ZUtleShwU3RyZWFtKTsNCit9DQorRlhfRFdPUkQgQ1BERl9QYWdlUmVuZGVyQ2FjaGU6OkVzdGltYXRlU2l6ZSgpDQorew0KKyAgICBGWF9EV09SRCBkd1NpemUgPSAwOw0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX0ltYWdlQ2FjaGVzLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgRlhfTFBWT0lEIGtleSwgdmFsdWU7DQorICAgICAgICBtX0ltYWdlQ2FjaGVzLkdldE5leHRBc3NvYyhwb3MsIGtleSwgdmFsdWUpOw0KKyAgICAgICAgZHdTaXplICs9ICgoQ1BERl9JbWFnZUNhY2hlKil2YWx1ZSktPkVzdGltYXRlU2l6ZSgpOw0KKyAgICB9DQorICAgIG1fbkNhY2hlU2l6ZSA9IGR3U2l6ZTsNCisgICAgcmV0dXJuIGR3U2l6ZTsNCit9DQorRlhfRFdPUkQgQ1BERl9QYWdlUmVuZGVyQ2FjaGU6OkdldENhY2hlZFNpemUoQ1BERl9TdHJlYW0qIHBTdHJlYW0pIGNvbnN0DQorew0KKyAgICBpZiAocFN0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gbV9uQ2FjaGVTaXplOw0KKyAgICB9DQorICAgIENQREZfSW1hZ2VDYWNoZSogcEltYWdlQ2FjaGU7DQorICAgIGlmICghbV9JbWFnZUNhY2hlcy5Mb29rdXAocFN0cmVhbSwgKEZYX0xQVk9JRCYpcEltYWdlQ2FjaGUpKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gcEltYWdlQ2FjaGUtPkVzdGltYXRlU2l6ZSgpOw0KK30NCit2b2lkIENQREZfUGFnZVJlbmRlckNhY2hlOjpHZXRDYWNoZWRCaXRtYXAoQ1BERl9TdHJlYW0qIHBTdHJlYW0sIENGWF9ESUJTb3VyY2UqJiBwQml0bWFwLCBDRlhfRElCU291cmNlKiYgcE1hc2ssIEZYX0RXT1JEJiBNYXR0ZUNvbG9yLA0KKyAgICAgICAgRlhfQk9PTCBiU3RkQ1MsIEZYX0RXT1JEIEdyb3VwRmFtaWx5LCBGWF9CT09MIGJMb2FkTWFzaywgQ1BERl9SZW5kZXJTdGF0dXMqIHBSZW5kZXJTdGF0dXMsDQorICAgICAgICBGWF9JTlQzMiBkb3duc2FtcGxlV2lkdGgsIEZYX0lOVDMyIGRvd25zYW1wbGVIZWlnaHQpDQorew0KKyAgICBDUERGX0ltYWdlQ2FjaGUqIHBJbWFnZUNhY2hlOw0KKyAgICBGWF9CT09MIGJGaW5kID0gbV9JbWFnZUNhY2hlcy5Mb29rdXAocFN0cmVhbSwgKEZYX0xQVk9JRCYpcEltYWdlQ2FjaGUpOw0KKyAgICBpZiAoIWJGaW5kKSB7DQorICAgICAgICBwSW1hZ2VDYWNoZSA9IEZYX05FVyBDUERGX0ltYWdlQ2FjaGUobV9wUGFnZS0+bV9wRG9jdW1lbnQsIHBTdHJlYW0pOw0KKyAgICB9DQorICAgIG1fblRpbWVDb3VudCArKzsNCisgICAgRlhfQk9PTCBiQ2FjaGVkID0gcEltYWdlQ2FjaGUtPkdldENhY2hlZEJpdG1hcChwQml0bWFwLCBwTWFzaywgTWF0dGVDb2xvciwgbV9wUGFnZS0+bV9wUGFnZVJlc291cmNlcywgYlN0ZENTLCBHcm91cEZhbWlseSwgYkxvYWRNYXNrLCBwUmVuZGVyU3RhdHVzLCBkb3duc2FtcGxlV2lkdGgsIGRvd25zYW1wbGVIZWlnaHQpOw0KKyAgICBpZiAoIWJGaW5kKSB7DQorICAgICAgICBtX0ltYWdlQ2FjaGVzLlNldEF0KHBTdHJlYW0sIHBJbWFnZUNhY2hlKTsNCisgICAgfQ0KKyAgICBpZiAoIWJDYWNoZWQpIHsNCisgICAgICAgIG1fbkNhY2hlU2l6ZSArPSBwSW1hZ2VDYWNoZS0+RXN0aW1hdGVTaXplKCk7DQorICAgIH0NCit9DQorRlhfQk9PTAlDUERGX1BhZ2VSZW5kZXJDYWNoZTo6U3RhcnRHZXRDYWNoZWRCaXRtYXAoQ1BERl9TdHJlYW0qIHBTdHJlYW0sIEZYX0JPT0wgYlN0ZENTLCBGWF9EV09SRCBHcm91cEZhbWlseSwgRlhfQk9PTCBiTG9hZE1hc2ssIENQREZfUmVuZGVyU3RhdHVzKiBwUmVuZGVyU3RhdHVzLCBGWF9JTlQzMiBkb3duc2FtcGxlV2lkdGgsIEZYX0lOVDMyIGRvd25zYW1wbGVIZWlnaHQpDQorew0KKyAgICBtX2JDdXJGaW5kQ2FjaGUgPSBtX0ltYWdlQ2FjaGVzLkxvb2t1cChwU3RyZWFtLCAoRlhfTFBWT0lEJiltX3BDdXJJbWFnZUNhY2hlKTsNCisgICAgaWYgKCFtX2JDdXJGaW5kQ2FjaGUpIHsNCisgICAgICAgIG1fcEN1ckltYWdlQ2FjaGUgPSBGWF9ORVcgQ1BERl9JbWFnZUNhY2hlKG1fcFBhZ2UtPm1fcERvY3VtZW50LCBwU3RyZWFtKTsNCisgICAgfQ0KKyAgICBpbnQgcmV0ID0gbV9wQ3VySW1hZ2VDYWNoZS0+U3RhcnRHZXRDYWNoZWRCaXRtYXAocFJlbmRlclN0YXR1cy0+bV9wRm9ybVJlc291cmNlLCBtX3BQYWdlLT5tX3BQYWdlUmVzb3VyY2VzLCBiU3RkQ1MsIEdyb3VwRmFtaWx5LCBiTG9hZE1hc2ssIHBSZW5kZXJTdGF0dXMsIGRvd25zYW1wbGVXaWR0aCwgZG93bnNhbXBsZUhlaWdodCk7DQorICAgIGlmIChyZXQgPT0gMikgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgbV9uVGltZUNvdW50ICsrOw0KKyAgICBpZiAoIW1fYkN1ckZpbmRDYWNoZSkgew0KKyAgICAgICAgbV9JbWFnZUNhY2hlcy5TZXRBdChwU3RyZWFtLCBtX3BDdXJJbWFnZUNhY2hlKTsNCisgICAgfQ0KKyAgICBpZiAoIXJldCkgew0KKyAgICAgICAgbV9uQ2FjaGVTaXplICs9IG1fcEN1ckltYWdlQ2FjaGUtPkVzdGltYXRlU2l6ZSgpOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTAlDUERGX1BhZ2VSZW5kZXJDYWNoZTo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpbnQgcmV0ID0gbV9wQ3VySW1hZ2VDYWNoZS0+Q29udGludWUocFBhdXNlKTsNCisgICAgaWYgKHJldCA9PSAyKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBtX25UaW1lQ291bnQgKys7DQorICAgIGlmICghbV9iQ3VyRmluZENhY2hlKSB7DQorICAgICAgICBtX0ltYWdlQ2FjaGVzLlNldEF0KG1fcEN1ckltYWdlQ2FjaGUtPkdldFN0cmVhbSgpLCBtX3BDdXJJbWFnZUNhY2hlKTsNCisgICAgfQ0KKyAgICBpZiAoIXJldCkgew0KKyAgICAgICAgbV9uQ2FjaGVTaXplICs9IG1fcEN1ckltYWdlQ2FjaGUtPkVzdGltYXRlU2l6ZSgpOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQordm9pZCBDUERGX1BhZ2VSZW5kZXJDYWNoZTo6UmVzZXRCaXRtYXAoQ1BERl9TdHJlYW0qIHBTdHJlYW0sIGNvbnN0IENGWF9ESUJpdG1hcCogcEJpdG1hcCkNCit7DQorICAgIENQREZfSW1hZ2VDYWNoZSogcEltYWdlQ2FjaGU7DQorICAgIGlmICghbV9JbWFnZUNhY2hlcy5Mb29rdXAocFN0cmVhbSwgKEZYX0xQVk9JRCYpcEltYWdlQ2FjaGUpKSB7DQorICAgICAgICBpZiAocEJpdG1hcCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEltYWdlQ2FjaGUgPSBGWF9ORVcgQ1BERl9JbWFnZUNhY2hlKG1fcFBhZ2UtPm1fcERvY3VtZW50LCBwU3RyZWFtKTsNCisgICAgICAgIG1fSW1hZ2VDYWNoZXMuU2V0QXQocFN0cmVhbSwgcEltYWdlQ2FjaGUpOw0KKyAgICB9DQorICAgIGludCBvbGRzaXplID0gcEltYWdlQ2FjaGUtPkVzdGltYXRlU2l6ZSgpOw0KKyAgICBwSW1hZ2VDYWNoZS0+UmVzZXQocEJpdG1hcCk7DQorICAgIG1fbkNhY2hlU2l6ZSA9IHBJbWFnZUNhY2hlLT5Fc3RpbWF0ZVNpemUoKSAtIG9sZHNpemU7DQorfQ0KK0NQREZfSW1hZ2VDYWNoZTo6Q1BERl9JbWFnZUNhY2hlKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfU3RyZWFtKiBwU3RyZWFtKQ0KKyAgICA6IG1fcERvY3VtZW50KHBEb2MpDQorICAgICwgbV9wU3RyZWFtKHBTdHJlYW0pDQorICAgICwgbV9wQ2FjaGVkQml0bWFwKE5VTEwpDQorICAgICwgbV9wQ2FjaGVkTWFzayhOVUxMKQ0KKyAgICAsIG1fZHdDYWNoZVNpemUoMCkNCisgICAgLCBtX2R3VGltZUNvdW50KDApDQorICAgICwgbV9wQ3VyQml0bWFwKE5VTEwpDQorICAgICwgbV9wQ3VyTWFzayhOVUxMKQ0KKyAgICAsIG1fTWF0dGVDb2xvcigwKQ0KKyAgICAsIG1fcFJlbmRlclN0YXR1cyhOVUxMKQ0KK3sNCit9DQorQ1BERl9JbWFnZUNhY2hlOjp+Q1BERl9JbWFnZUNhY2hlKCkNCit7DQorICAgIGlmIChtX3BDYWNoZWRCaXRtYXApIHsNCisgICAgICAgIGRlbGV0ZSBtX3BDYWNoZWRCaXRtYXA7DQorICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BDYWNoZWRNYXNrKSB7DQorICAgICAgICBkZWxldGUgbV9wQ2FjaGVkTWFzazsNCisgICAgICAgIG1fcENhY2hlZE1hc2sgPSBOVUxMOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9JbWFnZUNhY2hlOjpSZXNldChjb25zdCBDRlhfRElCaXRtYXAqIHBCaXRtYXApDQorew0KKyAgICBpZiAobV9wQ2FjaGVkQml0bWFwKSB7DQorICAgICAgICBkZWxldGUgbV9wQ2FjaGVkQml0bWFwOw0KKyAgICB9DQorICAgIG1fcENhY2hlZEJpdG1hcCA9IE5VTEw7DQorICAgIGlmIChwQml0bWFwKSB7DQorICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBwQml0bWFwLT5DbG9uZSgpOw0KKyAgICB9DQorICAgIENhbGNTaXplKCk7DQorfQ0KK3ZvaWQgQ1BERl9QYWdlUmVuZGVyQ2FjaGU6OkNsZWFySW1hZ2VEYXRhKCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fSW1hZ2VDYWNoZXMuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBGWF9MUFZPSUQga2V5LCB2YWx1ZTsNCisgICAgICAgIG1fSW1hZ2VDYWNoZXMuR2V0TmV4dEFzc29jKHBvcywga2V5LCB2YWx1ZSk7DQorICAgICAgICAoKENQREZfSW1hZ2VDYWNoZSopdmFsdWUpLT5DbGVhckltYWdlRGF0YSgpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9JbWFnZUNhY2hlOjpDbGVhckltYWdlRGF0YSgpDQorew0KKyAgICBpZiAobV9wQ2FjaGVkQml0bWFwICYmIG1fcENhY2hlZEJpdG1hcC0+R2V0QnVmZmVyKCkgPT0gTlVMTCkgew0KKyAgICAgICAgKChDUERGX0RJQlNvdXJjZSopbV9wQ2FjaGVkQml0bWFwKS0+Q2xlYXJJbWFnZURhdGEoKTsNCisgICAgfQ0KK30NCitzdGF0aWMgRlhfRFdPUkQgRlBERl9JbWFnZUNhY2hlX0VzdGltYXRlSW1hZ2VTaXplKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBESUIpDQorew0KKyAgICByZXR1cm4gcERJQiAmJiBwRElCLT5HZXRCdWZmZXIoKSA/IChGWF9EV09SRClwRElCLT5HZXRIZWlnaHQoKSAqIHBESUItPkdldFBpdGNoKCkgKyAoRlhfRFdPUkQpcERJQi0+R2V0UGFsZXR0ZVNpemUoKSAqIDQgOiAwOw0KK30NCitGWF9CT09MIENQREZfSW1hZ2VDYWNoZTo6R2V0Q2FjaGVkQml0bWFwKENGWF9ESUJTb3VyY2UqJiBwQml0bWFwLCBDRlhfRElCU291cmNlKiYgcE1hc2ssIEZYX0RXT1JEJiBNYXR0ZUNvbG9yLCBDUERGX0RpY3Rpb25hcnkqIHBQYWdlUmVzb3VyY2VzLA0KKyAgICAgICAgRlhfQk9PTCBiU3RkQ1MsIEZYX0RXT1JEIEdyb3VwRmFtaWx5LCBGWF9CT09MIGJMb2FkTWFzaywgQ1BERl9SZW5kZXJTdGF0dXMqIHBSZW5kZXJTdGF0dXMsDQorICAgICAgICBGWF9JTlQzMiBkb3duc2FtcGxlV2lkdGgsIEZYX0lOVDMyIGRvd25zYW1wbGVIZWlnaHQpDQorew0KKyAgICBpZiAobV9wQ2FjaGVkQml0bWFwKSB7DQorICAgICAgICBwQml0bWFwID0gbV9wQ2FjaGVkQml0bWFwOw0KKyAgICAgICAgcE1hc2sgPSBtX3BDYWNoZWRNYXNrOw0KKyAgICAgICAgTWF0dGVDb2xvciA9IG1fTWF0dGVDb2xvcjsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmICghcFJlbmRlclN0YXR1cykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfUmVuZGVyQ29udGV4dCpwQ29udGV4dCA9IHBSZW5kZXJTdGF0dXMtPkdldENvbnRleHQoKTsNCisgICAgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqIHBQYWdlUmVuZGVyQ2FjaGUgPSBwQ29udGV4dC0+bV9wUGFnZUNhY2hlOw0KKyAgICBtX2R3VGltZUNvdW50ID0gcFBhZ2VSZW5kZXJDYWNoZS0+R2V0VGltZUNvdW50KCk7DQorICAgIENQREZfRElCU291cmNlKiBwU3JjID0gRlhfTkVXIENQREZfRElCU291cmNlOw0KKyAgICBDUERGX0RJQlNvdXJjZSogcE1hc2tTcmMgPSBOVUxMOw0KKyAgICBpZiAoIXBTcmMtPkxvYWQobV9wRG9jdW1lbnQsIG1fcFN0cmVhbSwgJnBNYXNrU3JjLCAmTWF0dGVDb2xvciwgcFJlbmRlclN0YXR1cy0+bV9wRm9ybVJlc291cmNlLCBwUGFnZVJlc291cmNlcywgYlN0ZENTLCBHcm91cEZhbWlseSwgYkxvYWRNYXNrKSkgew0KKyAgICAgICAgZGVsZXRlIHBTcmM7DQorICAgICAgICBwQml0bWFwID0gTlVMTDsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX01hdHRlQ29sb3IgPSBNYXR0ZUNvbG9yOw0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykNCisgICAgaWYgKHBTcmMtPkdldFBpdGNoKCkgKiBwU3JjLT5HZXRIZWlnaHQoKSA8IEZQREZfSFVHRV9JTUFHRV9TSVpFKSB7DQorICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBwU3JjLT5DbG9uZSgpOw0KKyAgICAgICAgZGVsZXRlIHBTcmM7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBwU3JjOw0KKyAgICB9DQorICAgIGlmIChwTWFza1NyYykgew0KKyAgICAgICAgbV9wQ2FjaGVkTWFzayA9IHBNYXNrU3JjLT5DbG9uZSgpOw0KKyAgICAgICAgZGVsZXRlIHBNYXNrU3JjOw0KKyAgICB9DQorI2Vsc2UNCisgICAgaWYgKHBTcmMtPkdldEZvcm1hdCgpID09IEZYRElCXzhicHBSZ2IgJiYgcFNyYy0+R2V0UGFsZXR0ZSgpICYmDQorICAgICAgICAgICAgcFNyYy0+R2V0SGVpZ2h0KCkgKiBwU3JjLT5HZXRXaWR0aCgpICogMyA8IDEwMjQpIHsNCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBwU3JjLT5DbG9uZUNvbnZlcnQoRlhESUJfUmdiMzIpOw0KKyNlbHNlDQorICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBwU3JjLT5DbG9uZUNvbnZlcnQoRlhESUJfUmdiKTsNCisjZW5kaWYNCisgICAgICAgIGRlbGV0ZSBwU3JjOw0KKyAgICB9IGVsc2UgaWYgKHBTcmMtPkdldFBpdGNoKCkgKiBwU3JjLT5HZXRIZWlnaHQoKSA8IDEwMjQwMCkgew0KKyAgICAgICAgbV9wQ2FjaGVkQml0bWFwID0gcFNyYy0+Q2xvbmUoKTsNCisgICAgICAgIGRlbGV0ZSBwU3JjOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wQ2FjaGVkQml0bWFwID0gcFNyYzsNCisgICAgfQ0KKyAgICBtX3BDYWNoZWRNYXNrID0gcE1hc2tTcmM7DQorI2VuZGlmDQorICAgIHBCaXRtYXAgPSBtX3BDYWNoZWRCaXRtYXA7DQorICAgIHBNYXNrID0gbV9wQ2FjaGVkTWFzazsNCisgICAgQ2FsY1NpemUoKTsNCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitDRlhfRElCU291cmNlKiBDUERGX0ltYWdlQ2FjaGU6OkRldGFjaEJpdG1hcCgpDQorew0KKyAgICBDRlhfRElCU291cmNlKiBwRElCU291cmNlID0gbV9wQ3VyQml0bWFwOw0KKyAgICBtX3BDdXJCaXRtYXAgPSBOVUxMOw0KKyAgICByZXR1cm4gcERJQlNvdXJjZTsNCit9DQorQ0ZYX0RJQlNvdXJjZSogQ1BERl9JbWFnZUNhY2hlOjpEZXRhY2hNYXNrKCkNCit7DQorICAgIENGWF9ESUJTb3VyY2UqIHBESUJTb3VyY2UgPSBtX3BDdXJNYXNrOw0KKyAgICBtX3BDdXJNYXNrID0gTlVMTDsNCisgICAgcmV0dXJuIHBESUJTb3VyY2U7DQorfQ0KK2ludAlDUERGX0ltYWdlQ2FjaGU6OlN0YXJ0R2V0Q2FjaGVkQml0bWFwKENQREZfRGljdGlvbmFyeSogcEZvcm1SZXNvdXJjZXMsIENQREZfRGljdGlvbmFyeSogcFBhZ2VSZXNvdXJjZXMsIEZYX0JPT0wgYlN0ZENTLA0KKyAgICAgICAgRlhfRFdPUkQgR3JvdXBGYW1pbHksIEZYX0JPT0wgYkxvYWRNYXNrLCBDUERGX1JlbmRlclN0YXR1cyogcFJlbmRlclN0YXR1cywNCisgICAgICAgIEZYX0lOVDMyIGRvd25zYW1wbGVXaWR0aCwgRlhfSU5UMzIgZG93bnNhbXBsZUhlaWdodCkNCit7DQorICAgIGlmIChtX3BDYWNoZWRCaXRtYXApIHsNCisgICAgICAgIG1fcEN1ckJpdG1hcCA9IG1fcENhY2hlZEJpdG1hcDsNCisgICAgICAgIG1fcEN1ck1hc2sgPSBtX3BDYWNoZWRNYXNrOw0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgaWYgKCFwUmVuZGVyU3RhdHVzKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBtX3BSZW5kZXJTdGF0dXMgPSBwUmVuZGVyU3RhdHVzOw0KKyAgICBtX3BDdXJCaXRtYXAgPSBGWF9ORVcgQ1BERl9ESUJTb3VyY2U7DQorICAgIGludCByZXQgPSAoKENQREZfRElCU291cmNlKiltX3BDdXJCaXRtYXApLT5TdGFydExvYWRESUJTb3VyY2UobV9wRG9jdW1lbnQsIG1fcFN0cmVhbSwgVFJVRSwgcEZvcm1SZXNvdXJjZXMsIHBQYWdlUmVzb3VyY2VzLCBiU3RkQ1MsIEdyb3VwRmFtaWx5LCBiTG9hZE1hc2spOw0KKyAgICBpZiAocmV0ID09IDIpIHsNCisgICAgICAgIHJldHVybiByZXQ7DQorICAgIH0NCisgICAgaWYgKCFyZXQpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BDdXJCaXRtYXA7DQorICAgICAgICBtX3BDdXJCaXRtYXAgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ29udGludWVHZXRDYWNoZWRCaXRtYXAoKTsNCisgICAgcmV0dXJuIDA7DQorfQ0KK2ludCBDUERGX0ltYWdlQ2FjaGU6OkNvbnRpbnVlR2V0Q2FjaGVkQml0bWFwKCkNCit7DQorICAgIG1fTWF0dGVDb2xvciA9ICgoQ1BERl9ESUJTb3VyY2UqKW1fcEN1ckJpdG1hcCktPm1fTWF0dGVDb2xvcjsNCisgICAgbV9wQ3VyTWFzayA9ICgoQ1BERl9ESUJTb3VyY2UqKW1fcEN1ckJpdG1hcCktPkRldGFjaE1hc2soKTsNCisgICAgQ1BERl9SZW5kZXJDb250ZXh0KnBDb250ZXh0ID0gbV9wUmVuZGVyU3RhdHVzLT5HZXRDb250ZXh0KCk7DQorICAgIENQREZfUGFnZVJlbmRlckNhY2hlKiBwUGFnZVJlbmRlckNhY2hlID0gcENvbnRleHQtPm1fcFBhZ2VDYWNoZTsNCisgICAgbV9kd1RpbWVDb3VudCA9IHBQYWdlUmVuZGVyQ2FjaGUtPkdldFRpbWVDb3VudCgpOw0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykNCisgICAgaWYgKG1fcEN1ckJpdG1hcC0+R2V0UGl0Y2goKSAqIG1fcEN1ckJpdG1hcC0+R2V0SGVpZ2h0KCkgPCBGUERGX0hVR0VfSU1BR0VfU0laRSkgew0KKyAgICAgICAgbV9wQ2FjaGVkQml0bWFwID0gbV9wQ3VyQml0bWFwLT5DbG9uZSgpOw0KKyAgICAgICAgZGVsZXRlIG1fcEN1ckJpdG1hcDsNCisgICAgICAgIG1fcEN1ckJpdG1hcCA9IE5VTEw7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBtX3BDdXJCaXRtYXA7DQorICAgIH0NCisgICAgaWYgKG1fcEN1ck1hc2spIHsNCisgICAgICAgIG1fcENhY2hlZE1hc2sgPSBtX3BDdXJNYXNrLT5DbG9uZSgpOw0KKyAgICAgICAgZGVsZXRlIG1fcEN1ck1hc2s7DQorICAgICAgICBtX3BDdXJNYXNrID0gTlVMTDsNCisgICAgfQ0KKyNlbHNlDQorICAgIGlmIChtX3BDdXJCaXRtYXAtPkdldEZvcm1hdCgpID09IEZYRElCXzhicHBSZ2IgJiYgbV9wQ3VyQml0bWFwLT5HZXRQYWxldHRlKCkgJiYNCisgICAgICAgICAgICBtX3BDdXJCaXRtYXAtPkdldEhlaWdodCgpICogbV9wQ3VyQml0bWFwLT5HZXRXaWR0aCgpICogMyA8IDEwMjQpIHsNCisgICAgICAgIG1fcENhY2hlZEJpdG1hcCA9IG1fcEN1ckJpdG1hcC0+Q2xvbmVDb252ZXJ0KEZYRElCX1JnYjMyKTsNCisgICAgICAgIG1fcENhY2hlZEJpdG1hcCA9IG1fcEN1ckJpdG1hcC0+Q2xvbmVDb252ZXJ0KEZYRElCX1JnYik7DQorICAgICAgICBkZWxldGUgbV9wQ3VyQml0bWFwOw0KKyAgICAgICAgbV9wQ3VyQml0bWFwID0gTlVMTDsNCisgICAgfSBlbHNlIGlmIChtX3BDdXJCaXRtYXAtPkdldFBpdGNoKCkgKiBtX3BDdXJCaXRtYXAtPkdldEhlaWdodCgpIDwgMTAyNDAwKSB7DQorICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBtX3BDdXJCaXRtYXAtPkNsb25lKCk7DQorICAgICAgICBkZWxldGUgbV9wQ3VyQml0bWFwOw0KKyAgICAgICAgbV9wQ3VyQml0bWFwID0gTlVMTDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcENhY2hlZEJpdG1hcCA9IG1fcEN1ckJpdG1hcDsNCisgICAgfQ0KKyAgICBtX3BDYWNoZWRNYXNrID0gbV9wQ3VyTWFzazsNCisjZW5kaWYNCisgICAgbV9wQ3VyQml0bWFwID0gbV9wQ2FjaGVkQml0bWFwOw0KKyAgICBtX3BDdXJNYXNrID0gbV9wQ2FjaGVkTWFzazsNCisgICAgQ2FsY1NpemUoKTsNCisgICAgcmV0dXJuIDA7DQorfQ0KK2ludAlDUERGX0ltYWdlQ2FjaGU6OkNvbnRpbnVlKElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgaW50IHJldCA9ICgoQ1BERl9ESUJTb3VyY2UqKW1fcEN1ckJpdG1hcCktPkNvbnRpbnVlTG9hZERJQlNvdXJjZShwUGF1c2UpOw0KKyAgICBpZiAocmV0ID09IDIpIHsNCisgICAgICAgIHJldHVybiByZXQ7DQorICAgIH0NCisgICAgaWYgKCFyZXQpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BDdXJCaXRtYXA7DQorICAgICAgICBtX3BDdXJCaXRtYXAgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ29udGludWVHZXRDYWNoZWRCaXRtYXAoKTsNCisgICAgcmV0dXJuIDA7DQorfQ0KK3ZvaWQgQ1BERl9JbWFnZUNhY2hlOjpDYWxjU2l6ZSgpDQorew0KKyAgICBtX2R3Q2FjaGVTaXplID0gRlBERl9JbWFnZUNhY2hlX0VzdGltYXRlSW1hZ2VTaXplKG1fcENhY2hlZEJpdG1hcCkgKyBGUERGX0ltYWdlQ2FjaGVfRXN0aW1hdGVJbWFnZVNpemUobV9wQ2FjaGVkTWFzayk7DQorfQ0KK3ZvaWQgQ1BERl9Eb2N1bWVudDo6Q2xlYXJSZW5kZXJGb250KCkNCit7DQorICAgIGlmIChtX3BEb2NSZW5kZXIpIHsNCisgICAgICAgIENGWF9Gb250Q2FjaGUqIHBDYWNoZSA9IG1fcERvY1JlbmRlci0+R2V0Rm9udENhY2hlKCk7DQorICAgICAgICBpZiAocENhY2hlKSB7DQorICAgICAgICAgICAgcENhY2hlLT5GcmVlQ2FjaGUoRkFMU0UpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9yZW5kZXIvZnBkZl9yZW5kZXJfaW1hZ2UuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3JlbmRlci9mcGRmX3JlbmRlcl9pbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJhNzM5MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9yZW5kZXIvZnBkZl9yZW5kZXJfaW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTE2NSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWMuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3JlbmRlci5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlb2JqLmgiDQorI2luY2x1ZGUgIi4uL2ZwZGZfcGFnZS9wYWdlaW50LmgiDQorI2luY2x1ZGUgInJlbmRlcl9pbnQuaCINCitGWF9CT09MIENQREZfUmVuZGVyU3RhdHVzOjpQcm9jZXNzSW1hZ2UoQ1BERl9JbWFnZU9iamVjdCogcEltYWdlT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSkNCit7DQorICAgIENQREZfSW1hZ2VSZW5kZXJlciByZW5kZXI7DQorICAgIGlmIChyZW5kZXIuU3RhcnQodGhpcywgcEltYWdlT2JqLCBwT2JqMkRldmljZSwgbV9iU3RkQ1MsIG1fY3VyQmxlbmQpKSB7DQorICAgICAgICByZW5kZXIuQ29udGludWUoTlVMTCk7DQorICAgIH0NCisjaWZkZWYgX0ZQREZBUElfTUlOSV8NCisgICAgaWYgKG1fRGl0aGVyQml0cykgew0KKyAgICAgICAgRGl0aGVyT2JqZWN0QXJlYShwSW1hZ2VPYmosIHBPYmoyRGV2aWNlKTsNCisgICAgfQ0KKyNlbmRpZg0KKyAgICByZXR1cm4gcmVuZGVyLm1fUmVzdWx0Ow0KK30NCisjaWYgZGVmaW5lZChfRlBERkFQSV9NSU5JXykNCitGWF9CT09MIENQREZfUmVuZGVyU3RhdHVzOjpQcm9jZXNzSW5saW5lcyhDUERGX0lubGluZUltYWdlcyogcElubGluZXMsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKQ0KK3sNCisgICAgaW50IGJpdG1hcF9hbHBoYSA9IDI1NTsNCisgICAgaWYgKCFwSW5saW5lcy0+bV9HZW5lcmFsU3RhdGUuSXNOdWxsKCkpIHsNCisgICAgICAgIGJpdG1hcF9hbHBoYSA9IEZYU1lTX3JvdW5kKHBJbmxpbmVzLT5tX0dlbmVyYWxTdGF0ZS5HZXRPYmplY3QoKS0+bV9GaWxsQWxwaGEgKiAyNTUpOw0KKyAgICB9DQorICAgIGlmIChwSW5saW5lcy0+bV9wU3RyZWFtKSB7DQorICAgICAgICBDUERGX0RJQlNvdXJjZSBkaWJzcmM7DQorICAgICAgICBpZiAoIWRpYnNyYy5Mb2FkKG1fcENvbnRleHQtPm1fcERvY3VtZW50LCBwSW5saW5lcy0+bV9wU3RyZWFtLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcElubGluZXMtPm1fcEJpdG1hcCA9IGRpYnNyYy5DbG9uZSgpOw0KKyAgICAgICAgcElubGluZXMtPm1fcFN0cmVhbS0+UmVsZWFzZSgpOw0KKyAgICAgICAgcElubGluZXMtPm1fcFN0cmVhbSA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBJbmxpbmVzLT5tX3BCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgRlhfQVJHQiBmaWxsX2FyZ2IgPSAwOw0KKyAgICBpZiAocElubGluZXMtPm1fcEJpdG1hcC0+SXNBbHBoYU1hc2soKSkgew0KKyAgICAgICAgZmlsbF9hcmdiID0gR2V0RmlsbEFyZ2IocElubGluZXMpOw0KKyAgICB9DQorICAgIGludCBmbGFncyA9IDA7DQorICAgIGlmIChtX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9GT1JDRV9ET1dOU0FNUExFKSB7DQorICAgICAgICBmbGFncyB8PSBSRU5ERVJfRk9SQ0VfRE9XTlNBTVBMRTsNCisgICAgfSBlbHNlIGlmIChtX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9GT1JDRV9IQUxGVE9ORSkgew0KKyAgICAgICAgZmxhZ3MgPSAwOw0KKyAgICB9DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcElubGluZXMtPm1fTWF0cmljZXMuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDRlhfQWZmaW5lTWF0cml4IGltYWdlX21hdHJpeCA9IHBJbmxpbmVzLT5tX01hdHJpY2VzLkdldEF0KGkpOw0KKyAgICAgICAgaW1hZ2VfbWF0cml4LkNvbmNhdCgqcE9iajJEZXZpY2UpOw0KKyAgICAgICAgQ1BERl9JbWFnZVJlbmRlcmVyIHJlbmRlcmVyOw0KKyAgICAgICAgaWYgKHJlbmRlcmVyLlN0YXJ0KHRoaXMsIHBJbmxpbmVzLT5tX3BCaXRtYXAsIGZpbGxfYXJnYiwgYml0bWFwX2FscGhhLCAmaW1hZ2VfbWF0cml4LCBmbGFncywgRkFMU0UsIG1fY3VyQmxlbmQpKSB7DQorICAgICAgICAgICAgcmVuZGVyZXIuQ29udGludWUoTlVMTCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KKyNlbmRpZg0KK3ZvaWQgQ1BERl9SZW5kZXJTdGF0dXM6OkNvbXBvc2l0ZURJQml0bWFwKENGWF9ESUJpdG1hcCogcERJQml0bWFwLCBpbnQgbGVmdCwgaW50IHRvcCwgRlhfQVJHQiBtYXNrX2FyZ2IsDQorICAgICAgICBpbnQgYml0bWFwX2FscGhhLCBpbnQgYmxlbmRfbW9kZSwgaW50IFRyYW5zcGFyZW5jeSkNCit7DQorICAgIGlmIChwRElCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0JPT0wgYklzb2xhdGVkID0gVHJhbnNwYXJlbmN5ICYgUERGVFJBTlNfSVNPTEFURUQ7DQorICAgIEZYX0JPT0wgYkdyb3VwID0gVHJhbnNwYXJlbmN5ICYgUERGVFJBTlNfR1JPVVA7DQorICAgIGlmIChibGVuZF9tb2RlID09IEZYRElCX0JMRU5EX05PUk1BTCkgew0KKyAgICAgICAgaWYgKCFwRElCaXRtYXAtPklzQWxwaGFNYXNrKCkpIHsNCisgICAgICAgICAgICBpZiAoYml0bWFwX2FscGhhIDwgMjU1KSB7DQorICAgICAgICAgICAgICAgIHBESUJpdG1hcC0+TXVsdGlwbHlBbHBoYShiaXRtYXBfYWxwaGEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9wRGV2aWNlLT5TZXRESUJpdHMocERJQml0bWFwLCBsZWZ0LCB0b3ApKSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEZYX0RXT1JEIGZpbGxfYXJnYiA9IG1fT3B0aW9ucy5UcmFuc2xhdGVDb2xvcihtYXNrX2FyZ2IpOw0KKyAgICAgICAgICAgIGlmIChiaXRtYXBfYWxwaGEgPCAyNTUpIHsNCisgICAgICAgICAgICAgICAgKChGWF9CWVRFKikmZmlsbF9hcmdiKVszXSA9ICgoRlhfQllURSopJmZpbGxfYXJnYilbM10gKiBiaXRtYXBfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX3BEZXZpY2UtPlNldEJpdE1hc2socERJQml0bWFwLCBsZWZ0LCB0b3AsIGZpbGxfYXJnYikpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9CT09MIGJCYWNrQWxwaGFSZXF1aXJlZCA9IGJsZW5kX21vZGUgJiYgYklzb2xhdGVkICYmICFtX2JEcm9wT2JqZWN0czsNCisgICAgRlhfQk9PTCBiR2V0QmFja0dyb3VuZCA9ICgobV9wRGV2aWNlLT5HZXRSZW5kZXJDYXBzKCkgJiBGWFJDX0FMUEhBX09VVFBVVCkpIHx8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIShtX3BEZXZpY2UtPkdldFJlbmRlckNhcHMoKSAmIEZYUkNfQUxQSEFfT1VUUFVUKSAmJiAobV9wRGV2aWNlLT5HZXRSZW5kZXJDYXBzKCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBGWFJDX0dFVF9CSVRTKSAmJiAhYkJhY2tBbHBoYVJlcXVpcmVkKTsNCisgICAgaWYgKGJHZXRCYWNrR3JvdW5kKSB7DQorICAgICAgICBpZiAoYklzb2xhdGVkIHx8ICFiR3JvdXApIHsNCisgICAgICAgICAgICBpZiAocERJQml0bWFwLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wRGV2aWNlLT5TZXRESUJpdHMocERJQml0bWFwLCBsZWZ0LCB0b3AsIGJsZW5kX21vZGUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBGWF9SRUNUIHJlY3QobGVmdCwgdG9wLCBsZWZ0ICsgcERJQml0bWFwLT5HZXRXaWR0aCgpLCB0b3AgKyBwRElCaXRtYXAtPkdldEhlaWdodCgpKTsNCisgICAgICAgICAgICByZWN0LkludGVyc2VjdChtX3BEZXZpY2UtPkdldENsaXBCb3goKSk7DQorICAgICAgICAgICAgQ0ZYX0RJQml0bWFwKiBwQ2xvbmUgPSBOVUxMOw0KKyAgICAgICAgICAgIEZYX0JPT0wgYkNsb25lID0gRkFMU0U7DQorICAgICAgICAgICAgaWYgKG1fcERldmljZS0+R2V0QmFja0Ryb3AoKSAmJiBtX3BEZXZpY2UtPkdldEJpdG1hcCgpKSB7DQorICAgICAgICAgICAgICAgIGJDbG9uZSA9IFRSVUU7DQorICAgICAgICAgICAgICAgIHBDbG9uZSA9IG1fcERldmljZS0+R2V0QmFja0Ryb3AoKS0+Q2xvbmUoJnJlY3QpOw0KKyAgICAgICAgICAgICAgICBDRlhfRElCaXRtYXAgKnBGb3JlQml0bWFwID0gbV9wRGV2aWNlLT5HZXRCaXRtYXAoKTsNCisgICAgICAgICAgICAgICAgcENsb25lLT5Db21wb3NpdGVCaXRtYXAoMCwgMCwgcENsb25lLT5HZXRXaWR0aCgpLCBwQ2xvbmUtPkdldEhlaWdodCgpLCBwRm9yZUJpdG1hcCwgcmVjdC5sZWZ0LCByZWN0LnRvcCk7DQorICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0ID49IDAgPyAwIDogbGVmdDsNCisgICAgICAgICAgICAgICAgdG9wID0gdG9wID49IDAgPyAwIDogdG9wOw0KKyAgICAgICAgICAgICAgICBpZiAoIXBESUJpdG1hcC0+SXNBbHBoYU1hc2soKSkNCisgICAgICAgICAgICAgICAgICAgIHBDbG9uZS0+Q29tcG9zaXRlQml0bWFwKDAsIDAsIHBDbG9uZS0+R2V0V2lkdGgoKSwgcENsb25lLT5HZXRIZWlnaHQoKSwgcERJQml0bWFwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCwgdG9wLCBibGVuZF9tb2RlKTsNCisgICAgICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgcENsb25lLT5Db21wb3NpdGVNYXNrKDAsIDAsIHBDbG9uZS0+R2V0V2lkdGgoKSwgcENsb25lLT5HZXRIZWlnaHQoKSwgcERJQml0bWFwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2tfYXJnYiwgbGVmdCwgdG9wLCBibGVuZF9tb2RlKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwQ2xvbmUgPSBwRElCaXRtYXA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX3BEZXZpY2UtPkdldEJhY2tEcm9wKCkpIHsNCisgICAgICAgICAgICAgICAgbV9wRGV2aWNlLT5TZXRESUJpdHMocENsb25lLCByZWN0LmxlZnQsIHJlY3QudG9wKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAocERJQml0bWFwLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wRGV2aWNlLT5TZXRESUJpdHMocERJQml0bWFwLCByZWN0LmxlZnQsIHJlY3QudG9wLCBibGVuZF9tb2RlKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGJDbG9uZSkgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgcENsb25lOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgYmFja19sZWZ0LCBiYWNrX3RvcDsNCisgICAgRlhfUkVDVCByZWN0KGxlZnQsIHRvcCwgbGVmdCArIHBESUJpdG1hcC0+R2V0V2lkdGgoKSwgdG9wICsgcERJQml0bWFwLT5HZXRIZWlnaHQoKSk7DQorICAgIENGWF9ESUJpdG1hcCogcEJhY2tkcm9wID0gR2V0QmFja2Ryb3AobV9wQ3VyT2JqLCByZWN0LCBiYWNrX2xlZnQsIGJhY2tfdG9wLCBibGVuZF9tb2RlID4gRlhESUJfQkxFTkRfTk9STUFMICYmIGJJc29sYXRlZCk7DQorICAgIGlmICghcEJhY2tkcm9wKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKCFwRElCaXRtYXAtPklzQWxwaGFNYXNrKCkpDQorICAgICAgICBwQmFja2Ryb3AtPkNvbXBvc2l0ZUJpdG1hcChsZWZ0IC0gYmFja19sZWZ0LCB0b3AgLSBiYWNrX3RvcCwgcERJQml0bWFwLT5HZXRXaWR0aCgpLCBwRElCaXRtYXAtPkdldEhlaWdodCgpLCBwRElCaXRtYXAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBibGVuZF9tb2RlKTsNCisgICAgZWxzZQ0KKyAgICAgICAgcEJhY2tkcm9wLT5Db21wb3NpdGVNYXNrKGxlZnQgLSBiYWNrX2xlZnQsIHRvcCAtIGJhY2tfdG9wLCBwRElCaXRtYXAtPkdldFdpZHRoKCksIHBESUJpdG1hcC0+R2V0SGVpZ2h0KCksIHBESUJpdG1hcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrX2FyZ2IsIDAsIDAsIGJsZW5kX21vZGUpOw0KKyAgICBDRlhfRElCaXRtYXAqIHBCYWNrZHJvcDEgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBwQmFja2Ryb3AxLT5DcmVhdGUocEJhY2tkcm9wLT5HZXRXaWR0aCgpLCBwQmFja2Ryb3AtPkdldEhlaWdodCgpLCBGWERJQl9SZ2IzMik7DQorICAgIHBCYWNrZHJvcDEtPkNsZWFyKChGWF9EV09SRCkgLSAxKTsNCisgICAgcEJhY2tkcm9wMS0+Q29tcG9zaXRlQml0bWFwKDAsIDAsIHBCYWNrZHJvcC0+R2V0V2lkdGgoKSwgcEJhY2tkcm9wLT5HZXRIZWlnaHQoKSwgcEJhY2tkcm9wLCAwLCAwKTsNCisgICAgZGVsZXRlIHBCYWNrZHJvcDsNCisgICAgcEJhY2tkcm9wID0gcEJhY2tkcm9wMTsNCisgICAgbV9wRGV2aWNlLT5TZXRESUJpdHMocEJhY2tkcm9wLCBiYWNrX2xlZnQsIGJhY2tfdG9wKTsNCisgICAgZGVsZXRlIHBCYWNrZHJvcDsNCit9DQorRlhfQ09MT1JSRUYgQ1BERl9UcmFuc2ZlckZ1bmM6OlRyYW5zbGF0ZUNvbG9yKEZYX0NPTE9SUkVGIHJnYikNCit7DQorICAgIHJldHVybiBGWFNZU19SR0IobV9TYW1wbGVzW0ZYU1lTX0dldFJWYWx1ZShyZ2IpXSwgbV9TYW1wbGVzWzI1NiArIEZYU1lTX0dldEdWYWx1ZShyZ2IpXSwNCisgICAgICAgICAgICAgICAgICAgICBtX1NhbXBsZXNbNTEyICsgRlhTWVNfR2V0QlZhbHVlKHJnYildKTsNCit9DQorQ0ZYX0RJQlNvdXJjZSogQ1BERl9UcmFuc2ZlckZ1bmM6OlRyYW5zbGF0ZUltYWdlKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmMsIEZYX0JPT0wgYkF1dG9Ecm9wU3JjKQ0KK3sNCisgICAgQ1BERl9ESUJUcmFuc2ZlckZ1bmMqIHBEZXN0ID0gRlhfTkVXIENQREZfRElCVHJhbnNmZXJGdW5jKHRoaXMpOw0KKyAgICBwRGVzdC0+TG9hZFNyYyhwU3JjLCBiQXV0b0Ryb3BTcmMpOw0KKyAgICByZXR1cm4gcERlc3Q7DQorfQ0KK0ZYRElCX0Zvcm1hdCBDUERGX0RJQlRyYW5zZmVyRnVuYzo6R2V0RGVzdEZvcm1hdCgpDQorew0KKyAgICBpZiAobV9wU3JjLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICByZXR1cm4gRlhESUJfOGJwcE1hc2s7DQorICAgIH0NCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgIHJldHVybiAobV9wU3JjLT5IYXNBbHBoYSgpKSA/IEZYRElCX0FyZ2IgOiBGWERJQl9SZ2IzMjsNCisjZWxzZQ0KKyAgICByZXR1cm4gKG1fcFNyYy0+SGFzQWxwaGEoKSkgPyBGWERJQl9BcmdiIDogRlhESUJfUmdiOw0KKyNlbmRpZg0KK30NCitDUERGX0RJQlRyYW5zZmVyRnVuYzo6Q1BERl9ESUJUcmFuc2ZlckZ1bmMoY29uc3QgQ1BERl9UcmFuc2ZlckZ1bmMqIHBUcmFuc2ZlckZ1bmMpDQorew0KKyAgICBtX1JhbXBSID0gcFRyYW5zZmVyRnVuYy0+bV9TYW1wbGVzOw0KKyAgICBtX1JhbXBHID0gJnBUcmFuc2ZlckZ1bmMtPm1fU2FtcGxlc1syNTZdOw0KKyAgICBtX1JhbXBCID0gJnBUcmFuc2ZlckZ1bmMtPm1fU2FtcGxlc1s1MTJdOw0KK30NCit2b2lkIENQREZfRElCVHJhbnNmZXJGdW5jOjpUcmFuc2xhdGVTY2FubGluZShGWF9MUEJZVEUgZGVzdF9idWYsIEZYX0xQQ0JZVEUgc3JjX2J1ZikgY29uc3QNCit7DQorICAgIGludCBpOw0KKyAgICBGWF9CT09MIGJTa2lwID0gRkFMU0U7DQorICAgIHN3aXRjaCAobV9wU3JjLT5HZXRGb3JtYXQoKSkgew0KKyAgICAgICAgY2FzZSBGWERJQl8xYnBwUmdiOiB7DQorICAgICAgICAgICAgICAgIGludCByMCA9IG1fUmFtcFJbMF0sIGcwID0gbV9SYW1wR1swXSwgYjAgPSBtX1JhbXBCWzBdOw0KKyAgICAgICAgICAgICAgICBpbnQgcjEgPSBtX1JhbXBSWzI1NV0sIGcxID0gbV9SYW1wR1syNTVdLCBiMSA9IG1fUmFtcEJbMjU1XTsNCisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fV2lkdGg7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfYnVmW2kgLyA4XSAmICgxIDw8ICg3IC0gaSAlIDgpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gYjE7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfYnVmKysgPSBnMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IHIxOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IGIwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gZzA7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfYnVmKysgPSByMDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgICAgICAgICAgICAgICAgICBkZXN0X2J1ZisrOw0KKyNlbmRpZg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfMWJwcE1hc2s6IHsNCisgICAgICAgICAgICAgICAgaW50IG0wID0gbV9SYW1wUlswXSwgbTEgPSBtX1JhbXBSWzI1NV07DQorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX1dpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2J1ZltpIC8gOF0gJiAoMSA8PCAoNyAtIGkgJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG0xOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG0wOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfOGJwcFJnYjogew0KKyAgICAgICAgICAgICAgICBGWF9BUkdCKiBwUGFsID0gbV9wU3JjLT5HZXRQYWxldHRlKCk7DQorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX1dpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocFBhbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0FSR0Igc3JjX2FyZ2IgPSBwUGFsWypzcmNfYnVmXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG1fUmFtcEJbRlhBUkdCX1Ioc3JjX2FyZ2IpXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG1fUmFtcEdbRlhBUkdCX0coc3JjX2FyZ2IpXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG1fUmFtcFJbRlhBUkdCX0Ioc3JjX2FyZ2IpXTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgc3JjX2J5dGUgPSAqc3JjX2J1ZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG1fUmFtcEJbc3JjX2J5dGVdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gbV9SYW1wR1tzcmNfYnl0ZV07DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfYnVmKysgPSBtX1JhbXBSW3NyY19ieXRlXTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHNyY19idWYgKys7DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9idWYrKzsNCisjZW5kaWYNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIEZYRElCXzhicHBNYXNrOg0KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX1dpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gbV9SYW1wUlsqKHNyY19idWYrKyldOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfUmdiOg0KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX1dpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gbV9SYW1wQlsqKHNyY19idWYrKyldOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG1fUmFtcEdbKihzcmNfYnVmKyspXTsNCisgICAgICAgICAgICAgICAgKmRlc3RfYnVmKysgPSBtX1JhbXBSWyooc3JjX2J1ZisrKV07DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICAgICAgICAgICAgICBkZXN0X2J1ZisrOw0KKyNlbmRpZg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfUmdiMzI6DQorICAgICAgICAgICAgYlNraXAgPSBUUlVFOw0KKyAgICAgICAgY2FzZSBGWERJQl9BcmdiOg0KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX1dpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gbV9SYW1wQlsqKHNyY19idWYrKyldOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG1fUmFtcEdbKihzcmNfYnVmKyspXTsNCisgICAgICAgICAgICAgICAgKmRlc3RfYnVmKysgPSBtX1JhbXBSWyooc3JjX2J1ZisrKV07DQorICAgICAgICAgICAgICAgIGlmICghYlNraXApIHsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gKnNyY19idWY7DQorICAgICAgICAgICAgICAgIH0NCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgICAgICAgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9idWYrKzsNCisgICAgICAgICAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICAgICAgICAgICAgICBzcmNfYnVmICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCit9DQordm9pZCBDUERGX0RJQlRyYW5zZmVyRnVuYzo6VHJhbnNsYXRlRG93blNhbXBsZXMoRlhfTFBCWVRFIGRlc3RfYnVmLCBGWF9MUENCWVRFIHNyY19idWYsIGludCBwaXhlbHMsIGludCBCcHApIGNvbnN0DQorew0KKyAgICBpZiAoQnBwID09IDgpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGl4ZWxzOyBpICsrKSB7DQorICAgICAgICAgICAgKmRlc3RfYnVmKysgPSBtX1JhbXBSWyooc3JjX2J1ZisrKV07DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAoQnBwID09IDI0KSB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBpeGVsczsgaSArKykgew0KKyAgICAgICAgICAgICpkZXN0X2J1ZisrID0gbV9SYW1wQlsqKHNyY19idWYrKyldOw0KKyAgICAgICAgICAgICpkZXN0X2J1ZisrID0gbV9SYW1wR1sqKHNyY19idWYrKyldOw0KKyAgICAgICAgICAgICpkZXN0X2J1ZisrID0gbV9SYW1wUlsqKHNyY19idWYrKyldOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgICAgIGlmICghbV9wU3JjLT5IYXNBbHBoYSgpKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwaXhlbHM7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgKmRlc3RfYnVmKysgPSBtX1JhbXBCWyooc3JjX2J1ZisrKV07DQorICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gbV9SYW1wR1sqKHNyY19idWYrKyldOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG1fUmFtcFJbKihzcmNfYnVmKyspXTsNCisgICAgICAgICAgICAgICAgZGVzdF9idWYrKzsNCisgICAgICAgICAgICAgICAgc3JjX2J1ZisrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZQ0KKyNlbmRpZg0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGl4ZWxzOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gbV9SYW1wQlsqKHNyY19idWYrKyldOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9idWYrKyA9IG1fUmFtcEdbKihzcmNfYnVmKyspXTsNCisgICAgICAgICAgICAgICAgKmRlc3RfYnVmKysgPSBtX1JhbXBSWyooc3JjX2J1ZisrKV07DQorICAgICAgICAgICAgICAgICpkZXN0X2J1ZisrID0gKihzcmNfYnVmKyspOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KK30NCitzdGF0aWMgRlhfQk9PTCBfSXNTdXBwb3J0ZWQoQ1BERl9Db2xvclNwYWNlKiBwQ1MpDQorew0KKyAgICBpZiAocENTLT5HZXRGYW1pbHkoKSA9PSBQREZDU19ERVZJQ0VSR0IgfHwgcENTLT5HZXRGYW1pbHkoKSA9PSBQREZDU19ERVZJQ0VHUkFZIHx8DQorICAgICAgICAgICAgcENTLT5HZXRGYW1pbHkoKSA9PSBQREZDU19ERVZJQ0VDTVlLIHx8IHBDUy0+R2V0RmFtaWx5KCkgPT0gUERGQ1NfQ0FMR1JBWSB8fA0KKyAgICAgICAgICAgIHBDUy0+R2V0RmFtaWx5KCkgPT0gUERGQ1NfQ0FMUkdCKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAocENTLT5HZXRGYW1pbHkoKSA9PSBQREZDU19JTkRFWEVEICYmIF9Jc1N1cHBvcnRlZChwQ1MtPkdldEJhc2VDUygpKSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitDUERGX0ltYWdlUmVuZGVyZXI6OkNQREZfSW1hZ2VSZW5kZXJlcigpDQorew0KKyAgICBtX3BSZW5kZXJTdGF0dXMgPSBOVUxMOw0KKyAgICBtX3BJbWFnZU9iamVjdCA9IE5VTEw7DQorICAgIG1fUmVzdWx0ID0gVFJVRTsNCisgICAgbV9TdGF0dXMgPSAwOw0KKyAgICBtX3BRdWlja1N0cmV0Y2hlciA9IE5VTEw7DQorICAgIG1fcFRyYW5zZm9ybWVyID0gTlVMTDsNCisgICAgbV9EZXZpY2VIYW5kbGUgPSBOVUxMOw0KKyAgICBtX0xvYWRIYW5kbGUgPSBOVUxMOw0KKyAgICBtX3BDbG9uZSA9IE5VTEw7DQorICAgIG1fYlN0ZENTID0gRkFMU0U7DQorICAgIG1fYlBhdHRlcm5Db2xvciA9IEZBTFNFOw0KKyAgICBtX0JsZW5kVHlwZSA9IEZYRElCX0JMRU5EX05PUk1BTDsNCisgICAgbV9wUGF0dGVybiA9IE5VTEw7DQorICAgIG1fcE9iajJEZXZpY2UgPSBOVUxMOw0KK30NCitDUERGX0ltYWdlUmVuZGVyZXI6On5DUERGX0ltYWdlUmVuZGVyZXIoKQ0KK3sNCisgICAgaWYgKG1fcFF1aWNrU3RyZXRjaGVyKSB7DQorICAgICAgICBkZWxldGUgbV9wUXVpY2tTdHJldGNoZXI7DQorICAgIH0NCisgICAgaWYgKG1fcFRyYW5zZm9ybWVyKSB7DQorICAgICAgICBkZWxldGUgbV9wVHJhbnNmb3JtZXI7DQorICAgIH0NCisgICAgaWYgKG1fRGV2aWNlSGFuZGxlKSB7DQorICAgICAgICBtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+Q2FuY2VsRElCaXRzKG1fRGV2aWNlSGFuZGxlKTsNCisgICAgfQ0KKyAgICBpZiAobV9Mb2FkSGFuZGxlKSB7DQorICAgICAgICBkZWxldGUgKENQREZfUHJvZ3Jlc3NpdmVJbWFnZUxvYWRlckhhbmRsZSopbV9Mb2FkSGFuZGxlOw0KKyAgICB9DQorICAgIGlmIChtX3BDbG9uZSkgew0KKyAgICAgICAgZGVsZXRlIG1fcENsb25lOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbWFnZVJlbmRlcmVyOjpTdGFydExvYWRESUJTb3VyY2UoKQ0KK3sNCisgICAgQ0ZYX0Zsb2F0UmVjdCBpbWFnZV9yZWN0X2YgPSBtX0ltYWdlTWF0cml4LkdldFVuaXRSZWN0KCk7DQorICAgIEZYX1JFQ1QgaW1hZ2VfcmVjdCA9IGltYWdlX3JlY3RfZi5HZXRPdXR0ZXJSZWN0KCk7DQorICAgIGludCBkZXN0X3dpZHRoID0gaW1hZ2VfcmVjdC5XaWR0aCgpOw0KKyAgICBpbnQgZGVzdF9oZWlnaHQgPSBpbWFnZV9yZWN0LkhlaWdodCgpOw0KKyAgICBpZiAobV9JbWFnZU1hdHJpeC5hIDwgMCkgew0KKyAgICAgICAgZGVzdF93aWR0aCA9IC1kZXN0X3dpZHRoOw0KKyAgICB9DQorICAgIGlmIChtX0ltYWdlTWF0cml4LmQgPiAwKSB7DQorICAgICAgICBkZXN0X2hlaWdodCA9IC1kZXN0X2hlaWdodDsNCisgICAgfQ0KKyAgICBpZiAobV9Mb2FkZXIuU3RhcnRMb2FkSW1hZ2UobV9wSW1hZ2VPYmplY3QsIG1fcFJlbmRlclN0YXR1cy0+bV9wQ29udGV4dC0+bV9wUGFnZUNhY2hlLCBtX0xvYWRIYW5kbGUsIG1fYlN0ZENTLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wUmVuZGVyU3RhdHVzLT5tX0dyb3VwRmFtaWx5LCBtX3BSZW5kZXJTdGF0dXMtPm1fYkxvYWRNYXNrLCBtX3BSZW5kZXJTdGF0dXMsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0KSkgew0KKyAgICAgICAgaWYgKG1fTG9hZEhhbmRsZSAhPSBOVUxMKSB7DQorICAgICAgICAgICAgbV9TdGF0dXMgPSA0Ow0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0ltYWdlUmVuZGVyZXI6OlN0YXJ0UmVuZGVyRElCU291cmNlKCkNCit7DQorICAgIGlmIChtX0xvYWRlci5tX3BCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fQml0bWFwQWxwaGEgPSAyNTU7DQorICAgIGNvbnN0IENQREZfR2VuZXJhbFN0YXRlRGF0YSogcEdlbmVyYWxTdGF0ZSA9IG1fcEltYWdlT2JqZWN0LT5tX0dlbmVyYWxTdGF0ZTsNCisgICAgaWYgKHBHZW5lcmFsU3RhdGUpIHsNCisgICAgICAgIG1fQml0bWFwQWxwaGEgPSBGWFNZU19yb3VuZChwR2VuZXJhbFN0YXRlLT5tX0ZpbGxBbHBoYSAqIDI1NSk7DQorICAgIH0NCisgICAgbV9wRElCU291cmNlID0gbV9Mb2FkZXIubV9wQml0bWFwOw0KKyAgICBpZiAobV9wUmVuZGVyU3RhdHVzLT5tX09wdGlvbnMubV9Db2xvck1vZGUgPT0gUkVOREVSX0NPTE9SX0FMUEhBICYmIG1fTG9hZGVyLm1fcE1hc2sgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIFN0YXJ0Qml0bWFwQWxwaGEoKTsNCisgICAgfQ0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgaWYgKHBHZW5lcmFsU3RhdGUgJiYgcEdlbmVyYWxTdGF0ZS0+bV9wVFIpIHsNCisgICAgICAgIGlmICghcEdlbmVyYWxTdGF0ZS0+bV9wVHJhbnNmZXJGdW5jKSB7DQorICAgICAgICAgICAgKChDUERGX0dlbmVyYWxTdGF0ZURhdGEqKXBHZW5lcmFsU3RhdGUpLT5tX3BUcmFuc2ZlckZ1bmMgPSBtX3BSZW5kZXJTdGF0dXMtPkdldFRyYW5zZmVyRnVuYyhwR2VuZXJhbFN0YXRlLT5tX3BUUik7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEdlbmVyYWxTdGF0ZS0+bV9wVHJhbnNmZXJGdW5jICYmICFwR2VuZXJhbFN0YXRlLT5tX3BUcmFuc2ZlckZ1bmMtPm1fYklkZW50aXR5KSB7DQorICAgICAgICAgICAgbV9wRElCU291cmNlID0gbV9Mb2FkZXIubV9wQml0bWFwID0gcEdlbmVyYWxTdGF0ZS0+bV9wVHJhbnNmZXJGdW5jLT5UcmFuc2xhdGVJbWFnZShtX0xvYWRlci5tX3BCaXRtYXAsICFtX0xvYWRlci5tX2JDYWNoZWQpOw0KKyAgICAgICAgICAgIGlmIChtX0xvYWRlci5tX2JDYWNoZWQgJiYgbV9Mb2FkZXIubV9wTWFzaykgew0KKyAgICAgICAgICAgICAgICBtX0xvYWRlci5tX3BNYXNrID0gbV9Mb2FkZXIubV9wTWFzay0+Q2xvbmUoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9Mb2FkZXIubV9iQ2FjaGVkID0gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisjZW5kaWYNCisgICAgbV9GaWxsQXJnYiA9IDA7DQorICAgIG1fYlBhdHRlcm5Db2xvciA9IEZBTFNFOw0KKyAgICBtX3BQYXR0ZXJuID0gTlVMTDsNCisgICAgaWYgKG1fcERJQlNvdXJjZS0+SXNBbHBoYU1hc2soKSkgew0KKyAgICAgICAgQ1BERl9Db2xvciogcENvbG9yID0gbV9wSW1hZ2VPYmplY3QtPm1fQ29sb3JTdGF0ZS5HZXRGaWxsQ29sb3IoKTsNCisgICAgICAgIGlmIChwQ29sb3IgJiYgcENvbG9yLT5Jc1BhdHRlcm4oKSkgew0KKyAgICAgICAgICAgIG1fcFBhdHRlcm4gPSBwQ29sb3ItPkdldFBhdHRlcm4oKTsNCisgICAgICAgICAgICBpZiAobV9wUGF0dGVybiAhPSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIG1fYlBhdHRlcm5Db2xvciA9IFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9GaWxsQXJnYiA9IG1fcFJlbmRlclN0YXR1cy0+R2V0RmlsbEFyZ2IobV9wSW1hZ2VPYmplY3QpOw0KKyAgICB9IGVsc2UgaWYgKG1fcFJlbmRlclN0YXR1cy0+bV9PcHRpb25zLm1fQ29sb3JNb2RlID09IFJFTkRFUl9DT0xPUl9HUkFZKSB7DQorICAgICAgICBtX3BDbG9uZSA9IG1fcERJQlNvdXJjZS0+Q2xvbmUoKTsNCisgICAgICAgIG1fcENsb25lLT5Db252ZXJ0Q29sb3JTY2FsZShtX3BSZW5kZXJTdGF0dXMtPm1fT3B0aW9ucy5tX0JhY2tDb2xvciwgbV9wUmVuZGVyU3RhdHVzLT5tX09wdGlvbnMubV9Gb3JlQ29sb3IpOw0KKyAgICAgICAgbV9wRElCU291cmNlID0gbV9wQ2xvbmU7DQorICAgIH0NCisgICAgbV9GbGFncyA9IDA7DQorI2lmICFkZWZpbmVkKF9GUERGQVBJX01JTklfKQ0KKyAgICBpZiAobV9wUmVuZGVyU3RhdHVzLT5tX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9GT1JDRV9ET1dOU0FNUExFKSB7DQorICAgICAgICBtX0ZsYWdzIHw9IFJFTkRFUl9GT1JDRV9ET1dOU0FNUExFOw0KKyAgICB9IGVsc2UgaWYgKG1fcFJlbmRlclN0YXR1cy0+bV9PcHRpb25zLm1fRmxhZ3MgJiBSRU5ERVJfRk9SQ0VfSEFMRlRPTkUpIHsNCisgICAgICAgIG1fRmxhZ3MgfD0gUkVOREVSX0ZPUkNFX0hBTEZUT05FOw0KKyAgICB9DQorI2Vsc2UNCisgICAgaWYgKCEobV9wUmVuZGVyU3RhdHVzLT5tX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9GT1JDRV9IQUxGVE9ORSkpIHsNCisgICAgICAgIGlmIChtX3BSZW5kZXJTdGF0dXMtPm1fSGFsZnRvbmVMaW1pdCkgew0KKyAgICAgICAgICAgIENGWF9GbG9hdFJlY3QgaW1hZ2VfcmVjdF9mID0gbV9JbWFnZU1hdHJpeC5HZXRVbml0UmVjdCgpOw0KKyAgICAgICAgICAgIEZYX1JFQ1QgaW1hZ2VfcmVjdCA9IGltYWdlX3JlY3RfZi5HZXRPdXR0ZXJSZWN0KCk7DQorICAgICAgICAgICAgRlhfUkVDVCBpbWFnZV9jbGlwID0gaW1hZ2VfcmVjdDsNCisgICAgICAgICAgICBpbWFnZV9yZWN0LkludGVyc2VjdChtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+R2V0Q2xpcEJveCgpKTsNCisgICAgICAgICAgICBpZiAoaW1hZ2VfcmVjdC5XaWR0aCgpICYmIGltYWdlX3JlY3QuSGVpZ2h0KCkpIHsNCisgICAgICAgICAgICAgICAgaWYgKChpbWFnZV9jbGlwLldpZHRoKCkgKiBtX3BESUJTb3VyY2UtPkdldFdpZHRoKCkgLyBpbWFnZV9yZWN0LldpZHRoKCkpICoNCisgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2VfY2xpcC5IZWlnaHQoKSAqIG1fcERJQlNvdXJjZS0+R2V0SGVpZ2h0KCkgLyBpbWFnZV9yZWN0LkhlaWdodCgpKSA+DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wUmVuZGVyU3RhdHVzLT5tX0hhbGZ0b25lTGltaXQpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fRmxhZ3MgfD0gUkVOREVSX0ZPUkNFX0RPV05TQU1QTEU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fRmxhZ3MgfD0gUkVOREVSX0ZPUkNFX0RPV05TQU1QTEU7DQorICAgICAgICB9DQorICAgIH0NCisjZW5kaWYNCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgIGlmIChtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+R2V0RGV2aWNlQ2xhc3MoKSAhPSBGWERDX0RJU1BMQVkpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwRmlsdGVycyA9IG1fcEltYWdlT2JqZWN0LT5tX3BJbWFnZS0+R2V0U3RyZWFtKCktPkdldERpY3QoKS0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJGaWx0ZXIiKSk7DQorICAgICAgICBpZiAocEZpbHRlcnMpIHsNCisgICAgICAgICAgICBpZiAocEZpbHRlcnMtPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZ0MgYnNEZWNvZGVUeXBlID0gcEZpbHRlcnMtPkdldENvbnN0U3RyaW5nKCk7DQorICAgICAgICAgICAgICAgIGlmIChic0RlY29kZVR5cGUgPT0gRlhfQlNUUkMoIkRDVERlY29kZSIpIHx8IGJzRGVjb2RlVHlwZSA9PSBGWF9CU1RSQygiSlBYRGVjb2RlIikpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fRmxhZ3MgfD0gRlhSRU5ERVJfSU1BR0VfTE9TU1k7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2UgaWYgKHBGaWx0ZXJzLT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICAgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwRmlsdGVyczsNCisgICAgICAgICAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBBcnJheS0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmdDIGJzRGVjb2RlVHlwZSA9IHBBcnJheS0+R2V0Q29uc3RTdHJpbmcoaSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYnNEZWNvZGVUeXBlID09IEZYX0JTVFJDKCJEQ1REZWNvZGUiKSB8fCBic0RlY29kZVR5cGUgPT0gRlhfQlNUUkMoIkpQWERlY29kZSIpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9GbGFncyB8PSBGWFJFTkRFUl9JTUFHRV9MT1NTWTsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wUmVuZGVyU3RhdHVzLT5tX09wdGlvbnMubV9GbGFncyAmIFJFTkRFUl9OT0lNQUdFU01PT1RIKSB7DQorICAgICAgICBtX0ZsYWdzIHw9IEZYRElCX05PU01PT1RIOw0KKyAgICB9IGVsc2UgaWYgKG1fcEltYWdlT2JqZWN0LT5tX3BJbWFnZS0+SXNJbnRlcnBvbCgpKSB7DQorICAgICAgICBtX0ZsYWdzIHw9IEZYRElCX0lOVEVSUE9MOw0KKyAgICB9DQorI2VuZGlmDQorICAgIGlmIChtX0xvYWRlci5tX3BNYXNrKSB7DQorICAgICAgICByZXR1cm4gRHJhd01hc2tlZEltYWdlKCk7DQorICAgIH0NCisgICAgaWYgKG1fYlBhdHRlcm5Db2xvcikgew0KKyAgICAgICAgcmV0dXJuIERyYXdQYXR0ZXJuSW1hZ2UobV9wT2JqMkRldmljZSk7DQorICAgIH0NCisjaWYgIWRlZmluZWQoX0ZQREZBUElfTUlOSV8pIHx8IGRlZmluZWQoX0ZYQ09SRV9GRUFUVVJFX0FMTF8pDQorICAgIGlmIChtX0JpdG1hcEFscGhhID09IDI1NSAmJiBwR2VuZXJhbFN0YXRlICYmIHBHZW5lcmFsU3RhdGUtPm1fRmlsbE9QICYmDQorICAgICAgICAgICAgcEdlbmVyYWxTdGF0ZS0+bV9PUE1vZGUgPT0gMCAmJiBwR2VuZXJhbFN0YXRlLT5tX0JsZW5kVHlwZSA9PSBGWERJQl9CTEVORF9OT1JNQUwgJiYgcEdlbmVyYWxTdGF0ZS0+bV9TdHJva2VBbHBoYSA9PSAxICYmIHBHZW5lcmFsU3RhdGUtPm1fRmlsbEFscGhhID09IDEpIHsNCisgICAgICAgIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCA9IE5VTEw7DQorICAgICAgICBDUERGX1BhZ2UqIHBQYWdlID0gTlVMTDsNCisgICAgICAgIGlmIChtX3BSZW5kZXJTdGF0dXMtPm1fcENvbnRleHQtPm1fcFBhZ2VDYWNoZSkgew0KKyAgICAgICAgICAgIHBQYWdlID0gbV9wUmVuZGVyU3RhdHVzLT5tX3BDb250ZXh0LT5tX3BQYWdlQ2FjaGUtPkdldFBhZ2UoKTsNCisgICAgICAgICAgICBwRG9jdW1lbnQgPSBwUGFnZS0+bV9wRG9jdW1lbnQ7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBEb2N1bWVudCA9IG1fcEltYWdlT2JqZWN0LT5tX3BJbWFnZS0+R2V0RG9jdW1lbnQoKTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcFBhZ2VSZXNvdXJjZXMgPSBwUGFnZSA/IHBQYWdlLT5tX3BQYWdlUmVzb3VyY2VzIDogTlVMTDsNCisgICAgICAgIENQREZfT2JqZWN0KiBwQ1NPYmogPSBtX3BJbWFnZU9iamVjdC0+bV9wSW1hZ2UtPkdldFN0cmVhbSgpLT5HZXREaWN0KCktPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiQ29sb3JTcGFjZSIpKTsNCisgICAgICAgIENQREZfQ29sb3JTcGFjZSogcENvbG9yU3BhY2UgPSBwRG9jdW1lbnQtPkxvYWRDb2xvclNwYWNlKHBDU09iaiwgcFBhZ2VSZXNvdXJjZXMpOw0KKyAgICAgICAgaWYgKHBDb2xvclNwYWNlKSB7DQorICAgICAgICAgICAgaW50IGZvcm1hdCA9IHBDb2xvclNwYWNlLT5HZXRGYW1pbHkoKTsNCisgICAgICAgICAgICBpZiAoZm9ybWF0ID09IFBERkNTX0RFVklDRUNNWUsgfHwgZm9ybWF0ID09IFBERkNTX1NFUEFSQVRJT04gfHwgZm9ybWF0ID09IFBERkNTX0RFVklDRU4pIHsNCisgICAgICAgICAgICAgICAgbV9CbGVuZFR5cGUgPSBGWERJQl9CTEVORF9EQVJLRU47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBEb2N1bWVudC0+R2V0UGFnZURhdGEoKS0+UmVsZWFzZUNvbG9yU3BhY2UocENTT2JqKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyNlbmRpZg0KKyAgICByZXR1cm4gU3RhcnRESUJTb3VyY2UoKTsNCit9DQorRlhfQk9PTCBDUERGX0ltYWdlUmVuZGVyZXI6OlN0YXJ0KENQREZfUmVuZGVyU3RhdHVzKiBwU3RhdHVzLCBjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlLCBGWF9CT09MIGJTdGRDUywgaW50IGJsZW5kVHlwZSkNCit7DQorICAgIG1fcFJlbmRlclN0YXR1cyA9IHBTdGF0dXM7DQorICAgIG1fYlN0ZENTID0gYlN0ZENTOw0KKyAgICBtX3BJbWFnZU9iamVjdCA9IChDUERGX0ltYWdlT2JqZWN0KilwT2JqOw0KKyAgICBtX0JsZW5kVHlwZSA9IGJsZW5kVHlwZTsNCisgICAgbV9wT2JqMkRldmljZSA9IHBPYmoyRGV2aWNlOw0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwT0MgPSBtX3BJbWFnZU9iamVjdC0+bV9wSW1hZ2UtPkdldE9DKCk7DQorICAgIGlmIChwT0MgJiYgbV9wUmVuZGVyU3RhdHVzLT5tX09wdGlvbnMubV9wT0NDb250ZXh0ICYmICFtX3BSZW5kZXJTdGF0dXMtPm1fT3B0aW9ucy5tX3BPQ0NvbnRleHQtPkNoZWNrT0NHVmlzaWJsZShwT0MpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisjZW5kaWYNCisgICAgbV9JbWFnZU1hdHJpeCA9IG1fcEltYWdlT2JqZWN0LT5tX01hdHJpeDsNCisgICAgbV9JbWFnZU1hdHJpeC5Db25jYXQoKnBPYmoyRGV2aWNlKTsNCisgICAgaWYgKFN0YXJ0TG9hZERJQlNvdXJjZSgpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gU3RhcnRSZW5kZXJESUJTb3VyY2UoKTsNCit9DQorRlhfQk9PTCBDUERGX0ltYWdlUmVuZGVyZXI6OlN0YXJ0KENQREZfUmVuZGVyU3RhdHVzKiBwU3RhdHVzLCBjb25zdCBDRlhfRElCU291cmNlKiBwRElCU291cmNlLCBGWF9BUkdCIGJpdG1hcF9hcmdiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYml0bWFwX2FscGhhLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwSW1hZ2UyRGV2aWNlLCBGWF9EV09SRCBmbGFncywgRlhfQk9PTCBiU3RkQ1MsIGludCBibGVuZFR5cGUpDQorew0KKyAgICBtX3BSZW5kZXJTdGF0dXMgPSBwU3RhdHVzOw0KKyAgICBtX3BESUJTb3VyY2UgPSBwRElCU291cmNlOw0KKyAgICBtX0ZpbGxBcmdiID0gYml0bWFwX2FyZ2I7DQorICAgIG1fQml0bWFwQWxwaGEgPSBiaXRtYXBfYWxwaGE7DQorICAgIG1fSW1hZ2VNYXRyaXggPSAqcEltYWdlMkRldmljZTsNCisgICAgbV9GbGFncyA9IGZsYWdzOw0KKyAgICBtX2JTdGRDUyA9IGJTdGRDUzsNCisgICAgbV9CbGVuZFR5cGUgPSBibGVuZFR5cGU7DQorICAgIHJldHVybiBTdGFydERJQlNvdXJjZSgpOw0KK30NCitGWF9CT09MCUNQREZfSW1hZ2VSZW5kZXJlcjo6RHJhd1BhdHRlcm5JbWFnZShjb25zdCBDRlhfTWF0cml4KiBwT2JqMkRldmljZSkNCit7DQorICAgIGlmIChtX3BSZW5kZXJTdGF0dXMtPm1fYlByaW50ICYmICEobV9wUmVuZGVyU3RhdHVzLT5tX3BEZXZpY2UtPkdldFJlbmRlckNhcHMoKSAmIEZYUkNfQkxFTkRfTU9ERSkpIHsNCisgICAgICAgIG1fUmVzdWx0ID0gRkFMU0U7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfUkVDVCByZWN0ID0gbV9JbWFnZU1hdHJpeC5HZXRVbml0UmVjdCgpLkdldE91dHRlclJlY3QoKTsNCisgICAgcmVjdC5JbnRlcnNlY3QobV9wUmVuZGVyU3RhdHVzLT5tX3BEZXZpY2UtPkdldENsaXBCb3goKSk7DQorICAgIGlmIChyZWN0LklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9BZmZpbmVNYXRyaXggbmV3X21hdHJpeCA9IG1fSW1hZ2VNYXRyaXg7DQorICAgIG5ld19tYXRyaXguVHJhbnNsYXRlSSgtcmVjdC5sZWZ0LCAtcmVjdC50b3ApOw0KKyAgICBpbnQgd2lkdGggPSByZWN0LldpZHRoKCk7DQorICAgIGludCBoZWlnaHQgPSByZWN0LkhlaWdodCgpOw0KKyAgICBDRlhfRnhnZURldmljZSBiaXRtYXBfZGV2aWNlMTsNCisgICAgaWYgKCFiaXRtYXBfZGV2aWNlMS5DcmVhdGUocmVjdC5XaWR0aCgpLCByZWN0LkhlaWdodCgpLCBGWERJQl9SZ2IzMikpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGJpdG1hcF9kZXZpY2UxLkdldEJpdG1hcCgpLT5DbGVhcigweGZmZmZmZik7DQorICAgIHsNCisgICAgICAgIENQREZfUmVuZGVyU3RhdHVzIGJpdG1hcF9yZW5kZXI7DQorICAgICAgICBiaXRtYXBfcmVuZGVyLkluaXRpYWxpemUobV9wUmVuZGVyU3RhdHVzLT5tX0xldmVsICsgMSwgbV9wUmVuZGVyU3RhdHVzLT5tX3BDb250ZXh0LCAmYml0bWFwX2RldmljZTEsIE5VTEwsIE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgJm1fcFJlbmRlclN0YXR1cy0+bV9PcHRpb25zLCAwLCBtX3BSZW5kZXJTdGF0dXMtPm1fYkRyb3BPYmplY3RzLCBOVUxMLCBUUlVFKTsNCisgICAgICAgIENGWF9NYXRyaXggcGF0dGVybkRldmljZSA9ICpwT2JqMkRldmljZTsNCisgICAgICAgIHBhdHRlcm5EZXZpY2UuVHJhbnNsYXRlKChGWF9GTE9BVCkgLSByZWN0LmxlZnQsIChGWF9GTE9BVCkgLSByZWN0LnRvcCk7DQorICAgICAgICBpZihtX3BQYXR0ZXJuLT5tX1BhdHRlcm5UeXBlID09IFBBVFRFUk5fVElMSU5HKSB7DQorICAgICAgICAgICAgYml0bWFwX3JlbmRlci5EcmF3VGlsaW5nUGF0dGVybigoQ1BERl9UaWxpbmdQYXR0ZXJuKiltX3BQYXR0ZXJuLCBtX3BJbWFnZU9iamVjdCwgJnBhdHRlcm5EZXZpY2UsIEZBTFNFKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYml0bWFwX3JlbmRlci5EcmF3U2hhZGluZ1BhdHRlcm4oKENQREZfU2hhZGluZ1BhdHRlcm4qKW1fcFBhdHRlcm4sIG1fcEltYWdlT2JqZWN0LCAmcGF0dGVybkRldmljZSwgRkFMU0UpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHsNCisgICAgICAgIENGWF9GeGdlRGV2aWNlIGJpdG1hcF9kZXZpY2UyOw0KKyAgICAgICAgaWYgKCFiaXRtYXBfZGV2aWNlMi5DcmVhdGUocmVjdC5XaWR0aCgpLCByZWN0LkhlaWdodCgpLCBGWERJQl84YnBwUmdiKSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgYml0bWFwX2RldmljZTIuR2V0Qml0bWFwKCktPkNsZWFyKDApOw0KKyAgICAgICAgQ1BERl9SZW5kZXJTdGF0dXMgYml0bWFwX3JlbmRlcjsNCisgICAgICAgIGJpdG1hcF9yZW5kZXIuSW5pdGlhbGl6ZShtX3BSZW5kZXJTdGF0dXMtPm1fTGV2ZWwgKyAxLCBtX3BSZW5kZXJTdGF0dXMtPm1fcENvbnRleHQsICZiaXRtYXBfZGV2aWNlMiwgTlVMTCwgTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCAwLCBtX3BSZW5kZXJTdGF0dXMtPm1fYkRyb3BPYmplY3RzLCBOVUxMLCBUUlVFKTsNCisgICAgICAgIENQREZfSW1hZ2VSZW5kZXJlciBpbWFnZV9yZW5kZXI7DQorICAgICAgICBpZiAoaW1hZ2VfcmVuZGVyLlN0YXJ0KCZiaXRtYXBfcmVuZGVyLCBtX3BESUJTb3VyY2UsIDB4ZmZmZmZmZmYsIDI1NSwgJm5ld19tYXRyaXgsIG1fRmxhZ3MsIFRSVUUpKSB7DQorICAgICAgICAgICAgaW1hZ2VfcmVuZGVyLkNvbnRpbnVlKE5VTEwpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fTG9hZGVyLm1fTWF0dGVDb2xvciAhPSAweGZmZmZmZmZmKSB7DQorICAgICAgICAgICAgaW50IG1hdHRlX3IgPSBGWEFSR0JfUihtX0xvYWRlci5tX01hdHRlQ29sb3IpOw0KKyAgICAgICAgICAgIGludCBtYXR0ZV9nID0gRlhBUkdCX0cobV9Mb2FkZXIubV9NYXR0ZUNvbG9yKTsNCisgICAgICAgICAgICBpbnQgbWF0dGVfYiA9IEZYQVJHQl9CKG1fTG9hZGVyLm1fTWF0dGVDb2xvcik7DQorICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IChGWF9MUEJZVEUpYml0bWFwX2RldmljZTEuR2V0Qml0bWFwKCktPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgbWFza19zY2FuID0gYml0bWFwX2RldmljZTIuR2V0Qml0bWFwKCktPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYSA9ICptYXNrX3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYWxwaGEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3JpZyA9ICgqZGVzdF9zY2FuIC0gbWF0dGVfYikgKiAyNTUgLyBhbHBoYSArIG1hdHRlX2I7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWcgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWcgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3JpZyA+IDI1NSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnID0gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBvcmlnOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWcgPSAoKmRlc3Rfc2NhbiAtIG1hdHRlX2cpICogMjU1IC8gYWxwaGEgKyBtYXR0ZV9nOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9yaWcgPiAyNTUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZyA9IDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gb3JpZzsNCisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnID0gKCpkZXN0X3NjYW4gLSBtYXR0ZV9yKSAqIDI1NSAvIGFscGhhICsgbWF0dGVfcjsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JpZyA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZyA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcmlnID4gMjU1KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWcgPSAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IG9yaWc7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGJpdG1hcF9kZXZpY2UyLkdldEJpdG1hcCgpLT5Db252ZXJ0Rm9ybWF0KEZYRElCXzhicHBNYXNrKTsNCisgICAgICAgIGJpdG1hcF9kZXZpY2UxLkdldEJpdG1hcCgpLT5NdWx0aXBseUFscGhhKGJpdG1hcF9kZXZpY2UyLkdldEJpdG1hcCgpKTsNCisgICAgICAgIGJpdG1hcF9kZXZpY2UxLkdldEJpdG1hcCgpLT5NdWx0aXBseUFscGhhKDI1NSk7DQorICAgIH0NCisgICAgbV9wUmVuZGVyU3RhdHVzLT5tX3BEZXZpY2UtPlNldERJQml0cyhiaXRtYXBfZGV2aWNlMS5HZXRCaXRtYXAoKSwgcmVjdC5sZWZ0LCByZWN0LnRvcCwgbV9CbGVuZFR5cGUpOw0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbWFnZVJlbmRlcmVyOjpEcmF3TWFza2VkSW1hZ2UoKQ0KK3sNCisgICAgaWYgKG1fcFJlbmRlclN0YXR1cy0+bV9iUHJpbnQgJiYgIShtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+R2V0UmVuZGVyQ2FwcygpICYgRlhSQ19CTEVORF9NT0RFKSkgew0KKyAgICAgICAgbV9SZXN1bHQgPSBGQUxTRTsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9SRUNUIHJlY3QgPSBtX0ltYWdlTWF0cml4LkdldFVuaXRSZWN0KCkuR2V0T3V0dGVyUmVjdCgpOw0KKyAgICByZWN0LkludGVyc2VjdChtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+R2V0Q2xpcEJveCgpKTsNCisgICAgaWYgKHJlY3QuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBuZXdfbWF0cml4ID0gbV9JbWFnZU1hdHJpeDsNCisgICAgbmV3X21hdHJpeC5UcmFuc2xhdGVJKC1yZWN0LmxlZnQsIC1yZWN0LnRvcCk7DQorICAgIGludCB3aWR0aCA9IHJlY3QuV2lkdGgoKTsNCisgICAgaW50IGhlaWdodCA9IHJlY3QuSGVpZ2h0KCk7DQorICAgIENGWF9GeGdlRGV2aWNlIGJpdG1hcF9kZXZpY2UxOw0KKyAgICBpZiAoIWJpdG1hcF9kZXZpY2UxLkNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBGWERJQl9SZ2IzMikpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGJpdG1hcF9kZXZpY2UxLkdldEJpdG1hcCgpLT5DbGVhcigweGZmZmZmZik7DQorICAgIHsNCisgICAgICAgIENQREZfUmVuZGVyU3RhdHVzIGJpdG1hcF9yZW5kZXI7DQorICAgICAgICBiaXRtYXBfcmVuZGVyLkluaXRpYWxpemUobV9wUmVuZGVyU3RhdHVzLT5tX0xldmVsICsgMSwgbV9wUmVuZGVyU3RhdHVzLT5tX3BDb250ZXh0LCAmYml0bWFwX2RldmljZTEsIE5VTEwsIE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgMCwgbV9wUmVuZGVyU3RhdHVzLT5tX2JEcm9wT2JqZWN0cywgTlVMTCwgVFJVRSk7DQorICAgICAgICBDUERGX0ltYWdlUmVuZGVyZXIgaW1hZ2VfcmVuZGVyOw0KKyAgICAgICAgaWYgKGltYWdlX3JlbmRlci5TdGFydCgmYml0bWFwX3JlbmRlciwgbV9wRElCU291cmNlLCAwLCAyNTUsICZuZXdfbWF0cml4LCBtX0ZsYWdzLCBUUlVFKSkgew0KKyAgICAgICAgICAgIGltYWdlX3JlbmRlci5Db250aW51ZShOVUxMKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB7DQorICAgICAgICBDRlhfRnhnZURldmljZSBiaXRtYXBfZGV2aWNlMjsNCisgICAgICAgIGlmICghYml0bWFwX2RldmljZTIuQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIEZYRElCXzhicHBSZ2IpKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICBiaXRtYXBfZGV2aWNlMi5HZXRCaXRtYXAoKS0+Q2xlYXIoMCk7DQorICAgICAgICBDUERGX1JlbmRlclN0YXR1cyBiaXRtYXBfcmVuZGVyOw0KKyAgICAgICAgYml0bWFwX3JlbmRlci5Jbml0aWFsaXplKG1fcFJlbmRlclN0YXR1cy0+bV9MZXZlbCArIDEsIG1fcFJlbmRlclN0YXR1cy0+bV9wQ29udGV4dCwgJmJpdG1hcF9kZXZpY2UyLCBOVUxMLCBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIDAsIG1fcFJlbmRlclN0YXR1cy0+bV9iRHJvcE9iamVjdHMsIE5VTEwsIFRSVUUpOw0KKyAgICAgICAgQ1BERl9JbWFnZVJlbmRlcmVyIGltYWdlX3JlbmRlcjsNCisgICAgICAgIGlmIChpbWFnZV9yZW5kZXIuU3RhcnQoJmJpdG1hcF9yZW5kZXIsIG1fTG9hZGVyLm1fcE1hc2ssIDB4ZmZmZmZmZmYsIDI1NSwgJm5ld19tYXRyaXgsIG1fRmxhZ3MsIFRSVUUpKSB7DQorICAgICAgICAgICAgaW1hZ2VfcmVuZGVyLkNvbnRpbnVlKE5VTEwpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fTG9hZGVyLm1fTWF0dGVDb2xvciAhPSAweGZmZmZmZmZmKSB7DQorICAgICAgICAgICAgaW50IG1hdHRlX3IgPSBGWEFSR0JfUihtX0xvYWRlci5tX01hdHRlQ29sb3IpOw0KKyAgICAgICAgICAgIGludCBtYXR0ZV9nID0gRlhBUkdCX0cobV9Mb2FkZXIubV9NYXR0ZUNvbG9yKTsNCisgICAgICAgICAgICBpbnQgbWF0dGVfYiA9IEZYQVJHQl9CKG1fTG9hZGVyLm1fTWF0dGVDb2xvcik7DQorICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IChGWF9MUEJZVEUpYml0bWFwX2RldmljZTEuR2V0Qml0bWFwKCktPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgbWFza19zY2FuID0gYml0bWFwX2RldmljZTIuR2V0Qml0bWFwKCktPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYSA9ICptYXNrX3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYWxwaGEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3JpZyA9ICgqZGVzdF9zY2FuIC0gbWF0dGVfYikgKiAyNTUgLyBhbHBoYSArIG1hdHRlX2I7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWcgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWcgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3JpZyA+IDI1NSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnID0gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBvcmlnOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWcgPSAoKmRlc3Rfc2NhbiAtIG1hdHRlX2cpICogMjU1IC8gYWxwaGEgKyBtYXR0ZV9nOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9yaWcgPiAyNTUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZyA9IDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gb3JpZzsNCisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnID0gKCpkZXN0X3NjYW4gLSBtYXR0ZV9yKSAqIDI1NSAvIGFscGhhICsgbWF0dGVfcjsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JpZyA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZyA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcmlnID4gMjU1KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWcgPSAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IG9yaWc7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGJpdG1hcF9kZXZpY2UyLkdldEJpdG1hcCgpLT5Db252ZXJ0Rm9ybWF0KEZYRElCXzhicHBNYXNrKTsNCisgICAgICAgIGJpdG1hcF9kZXZpY2UxLkdldEJpdG1hcCgpLT5NdWx0aXBseUFscGhhKGJpdG1hcF9kZXZpY2UyLkdldEJpdG1hcCgpKTsNCisgICAgICAgIGlmIChtX0JpdG1hcEFscGhhIDwgMjU1KSB7DQorICAgICAgICAgICAgYml0bWFwX2RldmljZTEuR2V0Qml0bWFwKCktPk11bHRpcGx5QWxwaGEobV9CaXRtYXBBbHBoYSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wUmVuZGVyU3RhdHVzLT5tX3BEZXZpY2UtPlNldERJQml0cyhiaXRtYXBfZGV2aWNlMS5HZXRCaXRtYXAoKSwgcmVjdC5sZWZ0LCByZWN0LnRvcCwgbV9CbGVuZFR5cGUpOw0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbWFnZVJlbmRlcmVyOjpTdGFydERJQlNvdXJjZSgpDQorew0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykNCisgICAgaWYgKCEobV9GbGFncyAmIFJFTkRFUl9GT1JDRV9ET1dOU0FNUExFKSAmJiBtX3BESUJTb3VyY2UtPkdldEJQUCgpID4gMSkgew0KKyAgICAgICAgaW50IGltYWdlX3NpemUgPSBtX3BESUJTb3VyY2UtPkdldEJQUCgpIC8gOCAqIG1fcERJQlNvdXJjZS0+R2V0V2lkdGgoKSAqIG1fcERJQlNvdXJjZS0+R2V0SGVpZ2h0KCk7DQorICAgICAgICBpZiAoaW1hZ2Vfc2l6ZSA+IEZQREZfSFVHRV9JTUFHRV9TSVpFICYmICEobV9GbGFncyAmIFJFTkRFUl9GT1JDRV9IQUxGVE9ORSkpIHsNCisgICAgICAgICAgICBtX0ZsYWdzIHw9IFJFTkRFUl9GT1JDRV9ET1dOU0FNUExFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorI2VuZGlmDQorICAgIGlmIChtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+U3RhcnRESUJpdHMobV9wRElCU291cmNlLCBtX0JpdG1hcEFscGhhLCBtX0ZpbGxBcmdiLA0KKyAgICAgICAgICAgICZtX0ltYWdlTWF0cml4LCBtX0ZsYWdzLCBtX0RldmljZUhhbmRsZSwgMCwgTlVMTCwgbV9CbGVuZFR5cGUpKSB7DQorICAgICAgICBpZiAobV9EZXZpY2VIYW5kbGUgIT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fU3RhdHVzID0gMzsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykgfHwgZGVmaW5lZChfRlhDT1JFX0ZFQVRVUkVfQUxMXykNCisgICAgQ0ZYX0Zsb2F0UmVjdCBpbWFnZV9yZWN0X2YgPSBtX0ltYWdlTWF0cml4LkdldFVuaXRSZWN0KCk7DQorICAgIEZYX1JFQ1QgaW1hZ2VfcmVjdCA9IGltYWdlX3JlY3RfZi5HZXRPdXR0ZXJSZWN0KCk7DQorICAgIGludCBkZXN0X3dpZHRoID0gaW1hZ2VfcmVjdC5XaWR0aCgpOw0KKyAgICBpbnQgZGVzdF9oZWlnaHQgPSBpbWFnZV9yZWN0LkhlaWdodCgpOw0KKyAgICBpZiAoKEZYU1lTX2ZhYnMobV9JbWFnZU1hdHJpeC5iKSA+PSAwLjVmIHx8IG1fSW1hZ2VNYXRyaXguYSA9PSAwKSB8fA0KKyAgICAgICAgICAgIChGWFNZU19mYWJzKG1fSW1hZ2VNYXRyaXguYykgPj0gMC41ZiB8fCBtX0ltYWdlTWF0cml4LmQgPT0gMCkgKSB7DQorICAgICAgICBpZiAobV9wUmVuZGVyU3RhdHVzLT5tX2JQcmludCAmJiAhKG1fcFJlbmRlclN0YXR1cy0+bV9wRGV2aWNlLT5HZXRSZW5kZXJDYXBzKCkgJiBGWFJDX0JMRU5EX01PREUpKSB7DQorICAgICAgICAgICAgbV9SZXN1bHQgPSBGQUxTRTsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBGWF9SRUNUIGNsaXBfYm94ID0gbV9wUmVuZGVyU3RhdHVzLT5tX3BEZXZpY2UtPkdldENsaXBCb3goKTsNCisgICAgICAgIGNsaXBfYm94LkludGVyc2VjdChpbWFnZV9yZWN0KTsNCisgICAgICAgIG1fU3RhdHVzID0gMjsNCisgICAgICAgIG1fcFRyYW5zZm9ybWVyID0gRlhfTkVXIENGWF9JbWFnZVRyYW5zZm9ybWVyOw0KKyAgICAgICAgbV9wVHJhbnNmb3JtZXItPlN0YXJ0KG1fcERJQlNvdXJjZSwgJm1fSW1hZ2VNYXRyaXgsIG1fRmxhZ3MsICZjbGlwX2JveCk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9JbWFnZU1hdHJpeC5hIDwgMCkgew0KKyAgICAgICAgZGVzdF93aWR0aCA9IC1kZXN0X3dpZHRoOw0KKyAgICB9DQorICAgIGlmIChtX0ltYWdlTWF0cml4LmQgPiAwKSB7DQorICAgICAgICBkZXN0X2hlaWdodCA9IC1kZXN0X2hlaWdodDsNCisgICAgfQ0KKyAgICBpbnQgZGVzdF9sZWZ0LCBkZXN0X3RvcDsNCisgICAgZGVzdF9sZWZ0ID0gZGVzdF93aWR0aCA+IDAgPyBpbWFnZV9yZWN0LmxlZnQgOiBpbWFnZV9yZWN0LnJpZ2h0Ow0KKyAgICBkZXN0X3RvcCA9IGRlc3RfaGVpZ2h0ID4gMCA/IGltYWdlX3JlY3QudG9wIDogaW1hZ2VfcmVjdC5ib3R0b207DQorICAgIGlmIChtX3BESUJTb3VyY2UtPklzT3BhcXVlSW1hZ2UoKSAmJiBtX0JpdG1hcEFscGhhID09IDI1NSkgew0KKyAgICAgICAgaWYgKG1fcFJlbmRlclN0YXR1cy0+bV9wRGV2aWNlLT5TdHJldGNoRElCaXRzKG1fcERJQlNvdXJjZSwgZGVzdF9sZWZ0LCBkZXN0X3RvcCwNCisgICAgICAgICAgICAgICAgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQsIG1fRmxhZ3MsIE5VTEwsIG1fQmxlbmRUeXBlKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wRElCU291cmNlLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICBpZiAobV9CaXRtYXBBbHBoYSAhPSAyNTUpIHsNCisgICAgICAgICAgICBtX0ZpbGxBcmdiID0gRlhBUkdCX01VTF9BTFBIQShtX0ZpbGxBcmdiLCBtX0JpdG1hcEFscGhhKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+U3RyZXRjaEJpdE1hc2sobV9wRElCU291cmNlLCBkZXN0X2xlZnQsIGRlc3RfdG9wLCBkZXN0X3dpZHRoLCBkZXN0X2hlaWdodCwgbV9GaWxsQXJnYiwgbV9GbGFncykpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG1fcFJlbmRlclN0YXR1cy0+bV9iUHJpbnQgJiYgIShtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+R2V0UmVuZGVyQ2FwcygpICYgRlhSQ19CTEVORF9NT0RFKSkgew0KKyAgICAgICAgbV9SZXN1bHQgPSBGQUxTRTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX1JFQ1QgY2xpcF9ib3ggPSBtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+R2V0Q2xpcEJveCgpOw0KKyAgICBGWF9SRUNUIGRlc3RfcmVjdCA9IGNsaXBfYm94Ow0KKyAgICBkZXN0X3JlY3QuSW50ZXJzZWN0KGltYWdlX3JlY3QpOw0KKyAgICBGWF9SRUNUIGRlc3RfY2xpcChkZXN0X3JlY3QubGVmdCAtIGltYWdlX3JlY3QubGVmdCwgZGVzdF9yZWN0LnRvcCAtIGltYWdlX3JlY3QudG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICBkZXN0X3JlY3QucmlnaHQgLSBpbWFnZV9yZWN0LmxlZnQsIGRlc3RfcmVjdC5ib3R0b20gLSBpbWFnZV9yZWN0LnRvcCk7DQorICAgIENGWF9ESUJpdG1hcCogcFN0cmV0Y2hlZCA9IG1fcERJQlNvdXJjZS0+U3RyZXRjaFRvKGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBtX0ZsYWdzLCAmZGVzdF9jbGlwKTsNCisgICAgaWYgKHBTdHJldGNoZWQpIHsNCisgICAgICAgIG1fcFJlbmRlclN0YXR1cy0+Q29tcG9zaXRlRElCaXRtYXAocFN0cmV0Y2hlZCwgZGVzdF9yZWN0LmxlZnQsIGRlc3RfcmVjdC50b3AsIG1fRmlsbEFyZ2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fQml0bWFwQWxwaGEsIG1fQmxlbmRUeXBlLCBGQUxTRSk7DQorICAgICAgICBkZWxldGUgcFN0cmV0Y2hlZDsNCisgICAgICAgIHBTdHJldGNoZWQgPSBOVUxMOw0KKyAgICB9DQorI2VuZGlmDQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0ltYWdlUmVuZGVyZXI6OlN0YXJ0Qml0bWFwQWxwaGEoKQ0KK3sNCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgIGlmIChtX3BESUJTb3VyY2UtPklzT3BhcXVlSW1hZ2UoKSkgew0KKyAgICAgICAgQ0ZYX1BhdGhEYXRhIHBhdGg7DQorICAgICAgICBwYXRoLkFwcGVuZFJlY3QoMCwgMCwgMSwgMSk7DQorICAgICAgICBwYXRoLlRyYW5zZm9ybSgmbV9JbWFnZU1hdHJpeCk7DQorICAgICAgICBGWF9EV09SRCBmaWxsX2NvbG9yID0gQXJnYkVuY29kZSgweGZmLCBtX0JpdG1hcEFscGhhLCBtX0JpdG1hcEFscGhhLCBtX0JpdG1hcEFscGhhKTsNCisgICAgICAgIG1fcFJlbmRlclN0YXR1cy0+bV9wRGV2aWNlLT5EcmF3UGF0aCgmcGF0aCwgTlVMTCwgTlVMTCwgZmlsbF9jb2xvciwgMCwgRlhGSUxMX1dJTkRJTkcpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEFscGhhTWFzayA9IG1fcERJQlNvdXJjZS0+SXNBbHBoYU1hc2soKSA/IG1fcERJQlNvdXJjZSA6IG1fcERJQlNvdXJjZS0+R2V0QWxwaGFNYXNrKCk7DQorICAgICAgICBpZiAoRlhTWVNfZmFicyhtX0ltYWdlTWF0cml4LmIpID49IDAuNWYgfHwgRlhTWVNfZmFicyhtX0ltYWdlTWF0cml4LmMpID49IDAuNWYpIHsNCisgICAgICAgICAgICBpbnQgbGVmdCwgdG9wOw0KKyAgICAgICAgICAgIENGWF9ESUJpdG1hcCogcFRyYW5zZm9ybWVkID0gcEFscGhhTWFzay0+VHJhbnNmb3JtVG8oJm1fSW1hZ2VNYXRyaXgsIGxlZnQsIHRvcCk7DQorICAgICAgICAgICAgaWYgKHBUcmFuc2Zvcm1lZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+U2V0Qml0TWFzayhwVHJhbnNmb3JtZWQsIGxlZnQsIHRvcCwgQXJnYkVuY29kZSgweGZmLCBtX0JpdG1hcEFscGhhLCBtX0JpdG1hcEFscGhhLCBtX0JpdG1hcEFscGhhKSk7DQorICAgICAgICAgICAgZGVsZXRlIHBUcmFuc2Zvcm1lZDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgQ0ZYX0Zsb2F0UmVjdCBpbWFnZV9yZWN0X2YgPSBtX0ltYWdlTWF0cml4LkdldFVuaXRSZWN0KCk7DQorICAgICAgICAgICAgRlhfUkVDVCBpbWFnZV9yZWN0ID0gaW1hZ2VfcmVjdF9mLkdldE91dHRlclJlY3QoKTsNCisgICAgICAgICAgICBpbnQgZGVzdF93aWR0aCA9IG1fSW1hZ2VNYXRyaXguYSA+IDAgPyBpbWFnZV9yZWN0LldpZHRoKCkgOiAtaW1hZ2VfcmVjdC5XaWR0aCgpOw0KKyAgICAgICAgICAgIGludCBkZXN0X2hlaWdodCA9IG1fSW1hZ2VNYXRyaXguZCA+IDAgPyAtaW1hZ2VfcmVjdC5IZWlnaHQoKSA6IGltYWdlX3JlY3QuSGVpZ2h0KCk7DQorICAgICAgICAgICAgaW50IGxlZnQgPSBkZXN0X3dpZHRoID4gMCA/IGltYWdlX3JlY3QubGVmdCA6IGltYWdlX3JlY3QucmlnaHQ7DQorICAgICAgICAgICAgaW50IHRvcCA9IGRlc3RfaGVpZ2h0ID4gMCA/IGltYWdlX3JlY3QudG9wIDogaW1hZ2VfcmVjdC5ib3R0b207DQorICAgICAgICAgICAgbV9wUmVuZGVyU3RhdHVzLT5tX3BEZXZpY2UtPlN0cmV0Y2hCaXRNYXNrKHBBbHBoYU1hc2ssIGxlZnQsIHRvcCwgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICBBcmdiRW5jb2RlKDB4ZmYsIG1fQml0bWFwQWxwaGEsIG1fQml0bWFwQWxwaGEsIG1fQml0bWFwQWxwaGEpKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BESUJTb3VyY2UgIT0gcEFscGhhTWFzaykgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwQWxwaGFNYXNrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorI2VuZGlmDQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0ltYWdlUmVuZGVyZXI6OkNvbnRpbnVlKElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgaWYgKG1fU3RhdHVzID09IDEpIHsNCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICAgICAgICBpZiAobV9wUXVpY2tTdHJldGNoZXItPkNvbnRpbnVlKHBQYXVzZSkpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BRdWlja1N0cmV0Y2hlci0+bV9wQml0bWFwLT5Jc0FscGhhTWFzaygpKQ0KKyAgICAgICAgICAgIG1fcFJlbmRlclN0YXR1cy0+bV9wRGV2aWNlLT5TZXRCaXRNYXNrKG1fcFF1aWNrU3RyZXRjaGVyLT5tX3BCaXRtYXAsIG1fcFF1aWNrU3RyZXRjaGVyLT5tX1Jlc3VsdExlZnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wUXVpY2tTdHJldGNoZXItPm1fUmVzdWx0VG9wLCBtX0ZpbGxBcmdiKTsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICBtX3BSZW5kZXJTdGF0dXMtPm1fcERldmljZS0+U2V0RElCaXRzKG1fcFF1aWNrU3RyZXRjaGVyLT5tX3BCaXRtYXAsIG1fcFF1aWNrU3RyZXRjaGVyLT5tX1Jlc3VsdExlZnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BRdWlja1N0cmV0Y2hlci0+bV9SZXN1bHRUb3AsIG1fQmxlbmRUeXBlKTsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisjZW5kaWYNCisgICAgfSBlbHNlIGlmIChtX1N0YXR1cyA9PSAyKSB7DQorI2lmICFkZWZpbmVkKF9GUERGQVBJX01JTklfKSB8fCBkZWZpbmVkKF9GWENPUkVfRkVBVFVSRV9BTExfKQ0KKyAgICAgICAgaWYgKG1fcFRyYW5zZm9ybWVyLT5Db250aW51ZShwUGF1c2UpKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICBDRlhfRElCaXRtYXAqIHBCaXRtYXAgPSBtX3BUcmFuc2Zvcm1lci0+bV9TdG9yZXIuRGV0YWNoKCk7DQorICAgICAgICBpZiAocEJpdG1hcCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBCaXRtYXAtPklzQWxwaGFNYXNrKCkpIHsNCisgICAgICAgICAgICBpZiAobV9CaXRtYXBBbHBoYSAhPSAyNTUpIHsNCisgICAgICAgICAgICAgICAgbV9GaWxsQXJnYiA9IEZYQVJHQl9NVUxfQUxQSEEobV9GaWxsQXJnYiwgbV9CaXRtYXBBbHBoYSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fUmVzdWx0ID0gbV9wUmVuZGVyU3RhdHVzLT5tX3BEZXZpY2UtPlNldEJpdE1hc2socEJpdG1hcCwNCisgICAgICAgICAgICAgICAgICAgICAgIG1fcFRyYW5zZm9ybWVyLT5tX1Jlc3VsdExlZnQsIG1fcFRyYW5zZm9ybWVyLT5tX1Jlc3VsdFRvcCwgbV9GaWxsQXJnYik7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChtX0JpdG1hcEFscGhhICE9IDI1NSkgew0KKyAgICAgICAgICAgICAgICBwQml0bWFwLT5NdWx0aXBseUFscGhhKG1fQml0bWFwQWxwaGEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX1Jlc3VsdCA9IG1fcFJlbmRlclN0YXR1cy0+bV9wRGV2aWNlLT5TZXRESUJpdHMocEJpdG1hcCwNCisgICAgICAgICAgICAgICAgICAgICAgIG1fcFRyYW5zZm9ybWVyLT5tX1Jlc3VsdExlZnQsIG1fcFRyYW5zZm9ybWVyLT5tX1Jlc3VsdFRvcCwgbV9CbGVuZFR5cGUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVsZXRlIHBCaXRtYXA7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorI2VuZGlmDQorICAgIH0gZWxzZSBpZiAobV9TdGF0dXMgPT0gMykgew0KKyAgICAgICAgcmV0dXJuIG1fcFJlbmRlclN0YXR1cy0+bV9wRGV2aWNlLT5Db250aW51ZURJQml0cyhtX0RldmljZUhhbmRsZSwgcFBhdXNlKTsNCisgICAgfSBlbHNlIGlmIChtX1N0YXR1cyA9PSA0KSB7DQorICAgICAgICBpZiAobV9Mb2FkZXIuQ29udGludWUobV9Mb2FkSGFuZGxlLCBwUGF1c2UpKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoU3RhcnRSZW5kZXJESUJTb3VyY2UoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBDb250aW51ZShwUGF1c2UpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorQ1BERl9RdWlja1N0cmV0Y2hlcjo6Q1BERl9RdWlja1N0cmV0Y2hlcigpDQorew0KKyAgICBtX3BCaXRtYXAgPSBOVUxMOw0KKyAgICBtX3BEZWNvZGVyID0gTlVMTDsNCisgICAgbV9wQ1MgPSBOVUxMOw0KK30NCitDUERGX1F1aWNrU3RyZXRjaGVyOjp+Q1BERl9RdWlja1N0cmV0Y2hlcigpDQorew0KKyAgICBpZiAobV9wQml0bWFwKSB7DQorICAgICAgICBkZWxldGUgbV9wQml0bWFwOw0KKyAgICB9DQorICAgIGlmIChtX3BDUykgew0KKyAgICAgICAgbV9wQ1MtPlJlbGVhc2VDUygpOw0KKyAgICB9DQorICAgIGlmIChtX3BEZWNvZGVyKSB7DQorICAgICAgICBkZWxldGUgbV9wRGVjb2RlcjsNCisgICAgfQ0KK30NCitJQ29kZWNfU2NhbmxpbmVEZWNvZGVyKiBGUERGQVBJX0NyZWF0ZUZsYXRlRGVjb2RlcihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICBpbnQgbkNvbXBzLCBpbnQgYnBjLCBjb25zdCBDUERGX0RpY3Rpb25hcnkqIHBQYXJhbXMpOw0KK0ZYX0JPT0wgQ1BERl9RdWlja1N0cmV0Y2hlcjo6U3RhcnQoQ1BERl9JbWFnZU9iamVjdCogcEltYWdlT2JqLCBDRlhfQWZmaW5lTWF0cml4KiBwSW1hZ2UyRGV2aWNlLCBjb25zdCBGWF9SRUNUKiBwQ2xpcEJveCkNCit7DQorICAgIGlmIChGWFNZU19mYWJzKHBJbWFnZTJEZXZpY2UtPmEpIDwgRlhTWVNfZmFicyhwSW1hZ2UyRGV2aWNlLT5iKSAqIDEwICYmIEZYU1lTX2ZhYnMocEltYWdlMkRldmljZS0+ZCkgPCBGWFNZU19mYWJzKHBJbWFnZTJEZXZpY2UtPmMpICogMTApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDRlhfRmxvYXRSZWN0IGltYWdlX3JlY3RfZiA9IHBJbWFnZTJEZXZpY2UtPkdldFVuaXRSZWN0KCk7DQorICAgIEZYX1JFQ1QgaW1hZ2VfcmVjdCA9IGltYWdlX3JlY3RfZi5HZXRPdXR0ZXJSZWN0KCk7DQorICAgIG1fRGVzdFdpZHRoID0gaW1hZ2VfcmVjdC5XaWR0aCgpOw0KKyAgICBtX0Rlc3RIZWlnaHQgPSBpbWFnZV9yZWN0LkhlaWdodCgpOw0KKyAgICBtX2JGbGlwWCA9IHBJbWFnZTJEZXZpY2UtPmEgPCAwOw0KKyAgICBtX2JGbGlwWSA9IHBJbWFnZTJEZXZpY2UtPmQgPiAwOw0KKyAgICBGWF9SRUNUIHJlc3VsdF9yZWN0ID0gKnBDbGlwQm94Ow0KKyAgICByZXN1bHRfcmVjdC5JbnRlcnNlY3QoaW1hZ2VfcmVjdCk7DQorICAgIGlmIChyZXN1bHRfcmVjdC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX1Jlc3VsdFdpZHRoID0gcmVzdWx0X3JlY3QuV2lkdGgoKTsNCisgICAgbV9SZXN1bHRIZWlnaHQgPSByZXN1bHRfcmVjdC5IZWlnaHQoKTsNCisgICAgbV9SZXN1bHRMZWZ0ID0gcmVzdWx0X3JlY3QubGVmdDsNCisgICAgbV9SZXN1bHRUb3AgPSByZXN1bHRfcmVjdC50b3A7DQorICAgIG1fQ2xpcExlZnQgPSByZXN1bHRfcmVjdC5sZWZ0IC0gaW1hZ2VfcmVjdC5sZWZ0Ow0KKyAgICBtX0NsaXBUb3AgPSByZXN1bHRfcmVjdC50b3AgLSBpbWFnZV9yZWN0LnRvcDsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IHBJbWFnZU9iai0+bV9wSW1hZ2UtPkdldERpY3QoKTsNCisgICAgaWYgKHBEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJCaXRzUGVyQ29tcG9uZW50IikpICE9IDgpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocERpY3QtPktleUV4aXN0KEZYX0JTVFJDKCJTTWFzayIpKSB8fCBwRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIk1hc2siKSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX1NyY1dpZHRoID0gcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIldpZHRoIikpOw0KKyAgICBtX1NyY0hlaWdodCA9IHBEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJIZWlnaHQiKSk7DQorICAgIG1fcENTID0gTlVMTDsNCisgICAgbV9CcHAgPSAzOw0KKyAgICBDUERGX09iamVjdCogcENTT2JqID0gcERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiQ29sb3JTcGFjZSIpKTsNCisgICAgaWYgKHBDU09iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9wQ1MgPSBDUERGX0NvbG9yU3BhY2U6OkxvYWQocEltYWdlT2JqLT5tX3BJbWFnZS0+R2V0RG9jdW1lbnQoKSwgcENTT2JqKTsNCisgICAgaWYgKG1fcENTID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoIV9Jc1N1cHBvcnRlZChtX3BDUykpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX0JwcCA9IG1fcENTLT5Db3VudENvbXBvbmVudHMoKTsNCisgICAgaWYgKG1fcENTLT5zUkdCKCkpIHsNCisgICAgICAgIG1fcENTLT5SZWxlYXNlQ1MoKTsNCisgICAgICAgIG1fcENTID0gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IHBJbWFnZU9iai0+bV9wSW1hZ2UtPkdldFN0cmVhbSgpOw0KKyAgICBtX1N0cmVhbUFjYy5Mb2FkQWxsRGF0YShwU3RyZWFtLCBGQUxTRSwgbV9TcmNXaWR0aCAqIG1fU3JjSGVpZ2h0ICogbV9CcHAsIFRSVUUpOw0KKyAgICBtX3BEZWNvZGVyID0gTlVMTDsNCisgICAgaWYgKCFtX1N0cmVhbUFjYy5HZXRJbWFnZURlY29kZXIoKS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIGlmIChtX1N0cmVhbUFjYy5HZXRJbWFnZURlY29kZXIoKSA9PSBGWF9CU1RSQygiRENURGVjb2RlIikpIHsNCisgICAgICAgICAgICBjb25zdCBDUERGX0RpY3Rpb25hcnkqIHBQYXJhbSA9IG1fU3RyZWFtQWNjLkdldEltYWdlUGFyYW0oKTsNCisgICAgICAgICAgICBtX3BEZWNvZGVyID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRKcGVnTW9kdWxlKCktPkNyZWF0ZURlY29kZXIoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmVhbUFjYy5HZXREYXRhKCksIG1fU3RyZWFtQWNjLkdldFNpemUoKSwgbV9TcmNXaWR0aCwgbV9TcmNIZWlnaHQsIG1fQnBwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFBhcmFtID8gcFBhcmFtLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJDb2xvclRyYW5zZm9ybSIpLCAxKSA6IDEpOw0KKyAgICAgICAgfSBlbHNlIGlmIChtX1N0cmVhbUFjYy5HZXRJbWFnZURlY29kZXIoKSA9PSBGWF9CU1RSQygiRmxhdGVEZWNvZGUiKSkgew0KKyAgICAgICAgICAgIG1fcERlY29kZXIgPSBGUERGQVBJX0NyZWF0ZUZsYXRlRGVjb2RlcigNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fU3RyZWFtQWNjLkdldERhdGEoKSwgbV9TdHJlYW1BY2MuR2V0U2l6ZSgpLCBtX1NyY1dpZHRoLCBtX1NyY0hlaWdodCwgbV9CcHAsIDgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX1N0cmVhbUFjYy5HZXRJbWFnZVBhcmFtKCkpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX3BEZWNvZGVyLT5Eb3duU2NhbGUobV9EZXN0V2lkdGgsIG1fRGVzdEhlaWdodCk7DQorICAgIH0NCisgICAgbV9wQml0bWFwID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgIG1fcEJpdG1hcC0+Q3JlYXRlKG1fUmVzdWx0V2lkdGgsIG1fUmVzdWx0SGVpZ2h0LCBGWERJQl9SZ2IzMik7DQorI2Vsc2UNCisgICAgbV9wQml0bWFwLT5DcmVhdGUobV9SZXN1bHRXaWR0aCwgbV9SZXN1bHRIZWlnaHQsIEZYRElCX1JnYik7DQorI2VuZGlmDQorICAgIG1fTGluZUluZGV4ID0gMDsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9RdWlja1N0cmV0Y2hlcjo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9MUEJZVEUgcmVzdWx0X2J1ZiA9IG1fcEJpdG1hcC0+R2V0QnVmZmVyKCk7DQorICAgIGludCBzcmNfd2lkdGggPSBtX3BEZWNvZGVyID8gbV9wRGVjb2Rlci0+R2V0V2lkdGgoKSA6IG1fU3JjV2lkdGg7DQorICAgIGludCBzcmNfaGVpZ2h0ID0gbV9wRGVjb2RlciA/IG1fcERlY29kZXItPkdldEhlaWdodCgpIDogbV9TcmNIZWlnaHQ7DQorICAgIGludCBzcmNfcGl0Y2ggPSBzcmNfd2lkdGggKiBtX0JwcDsNCisgICAgd2hpbGUgKG1fTGluZUluZGV4IDwgbV9SZXN1bHRIZWlnaHQpIHsNCisgICAgICAgIGludCBkZXN0X3ksIHNyY195Ow0KKyAgICAgICAgaWYgKG1fYkZsaXBZKSB7DQorICAgICAgICAgICAgZGVzdF95ID0gbV9SZXN1bHRIZWlnaHQgLSBtX0xpbmVJbmRleCAtIDE7DQorICAgICAgICAgICAgc3JjX3kgPSAobV9EZXN0SGVpZ2h0IC0gKGRlc3RfeSArIG1fQ2xpcFRvcCkgLSAxKSAqIHNyY19oZWlnaHQgLyBtX0Rlc3RIZWlnaHQ7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGRlc3RfeSA9IG1fTGluZUluZGV4Ow0KKyAgICAgICAgICAgIHNyY195ID0gKGRlc3RfeSArIG1fQ2xpcFRvcCkgKiBzcmNfaGVpZ2h0IC8gbV9EZXN0SGVpZ2h0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbjsNCisgICAgICAgIGlmIChtX3BEZWNvZGVyKSB7DQorICAgICAgICAgICAgc3JjX3NjYW4gPSBtX3BEZWNvZGVyLT5HZXRTY2FubGluZShzcmNfeSk7DQorICAgICAgICAgICAgaWYgKHNyY19zY2FuID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfc2NhbiA9IG1fU3RyZWFtQWNjLkdldERhdGEoKTsNCisgICAgICAgICAgICBpZiAoc3JjX3NjYW4gPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX3kgKiBzcmNfcGl0Y2g7DQorICAgICAgICB9DQorICAgICAgICBGWF9MUEJZVEUgcmVzdWx0X3NjYW4gPSByZXN1bHRfYnVmICsgZGVzdF95ICogbV9wQml0bWFwLT5HZXRQaXRjaCgpOw0KKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBtX1Jlc3VsdFdpZHRoOyB4ICsrKSB7DQorICAgICAgICAgICAgaW50IGRlc3RfeCA9IG1fQ2xpcExlZnQgKyB4Ow0KKyAgICAgICAgICAgIGludCBzcmNfeCA9IChtX2JGbGlwWCA/IChtX0Rlc3RXaWR0aCAtIGRlc3RfeCAtIDEpIDogZGVzdF94KSAqIHNyY193aWR0aCAvIG1fRGVzdFdpZHRoOw0KKyAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3BpeGVsID0gc3JjX3NjYW4gKyBzcmNfeCAqIG1fQnBwOw0KKyAgICAgICAgICAgIGlmIChtX3BDUyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICpyZXN1bHRfc2NhbiA9IHNyY19waXhlbFsyXTsNCisgICAgICAgICAgICAgICAgcmVzdWx0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgICpyZXN1bHRfc2NhbiA9IHNyY19waXhlbFsxXTsNCisgICAgICAgICAgICAgICAgcmVzdWx0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgICpyZXN1bHRfc2NhbiA9IHNyY19waXhlbFswXTsNCisgICAgICAgICAgICAgICAgcmVzdWx0X3NjYW4gKys7DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICAgICAgICAgICAgICByZXN1bHRfc2NhbiArKzsNCisjZW5kaWYNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBtX3BDUy0+VHJhbnNsYXRlSW1hZ2VMaW5lKHJlc3VsdF9zY2FuLCBzcmNfcGl4ZWwsIDEsIDAsIDApOw0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgICAgICAgICAgICAgcmVzdWx0X3NjYW4gKz0gNDsNCisjZWxzZQ0KKyAgICAgICAgICAgICAgICByZXN1bHRfc2NhbiArPSAzOw0KKyNlbmRpZg0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fTGluZUluZGV4ICsrOw0KKyAgICAgICAgaWYgKHBQYXVzZSAmJiBwUGF1c2UtPk5lZWRUb1BhdXNlTm93KCkpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0NGWF9ESUJpdG1hcCogQ1BERl9SZW5kZXJTdGF0dXM6OkxvYWRTTWFzayhDUERGX0RpY3Rpb25hcnkqIHBTTWFza0RpY3QsDQorICAgICAgICBGWF9SRUNUKiBwQ2xpcFJlY3QsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgpDQorew0KKyAgICBpZiAocFNNYXNrRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfRElCaXRtYXAqIHBNYXNrID0gTlVMTDsNCisgICAgaW50IHdpZHRoID0gcENsaXBSZWN0LT5yaWdodCAtIHBDbGlwUmVjdC0+bGVmdDsNCisgICAgaW50IGhlaWdodCA9IHBDbGlwUmVjdC0+Ym90dG9tIC0gcENsaXBSZWN0LT50b3A7DQorICAgIEZYX0JPT0wgYkx1bWlub3NpdHkgPSBGQUxTRTsNCisgICAgYkx1bWlub3NpdHkgPSBwU01hc2tEaWN0LT5HZXRDb25zdFN0cmluZyhGWF9CU1RSQygiUyIpKSAhPSBGWF9CU1RSQygiQWxwaGEiKTsNCisgICAgQ1BERl9TdHJlYW0qIHBHcm91cCA9IHBTTWFza0RpY3QtPkdldFN0cmVhbShGWF9CU1RSQygiRyIpKTsNCisgICAgaWYgKHBHcm91cCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0Z1bmN0aW9uKiBwRnVuYyA9IE5VTEw7DQorICAgIENQREZfT2JqZWN0KiBwRnVuY09iaiA9IHBTTWFza0RpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiVFIiKSk7DQorICAgIGlmIChwRnVuY09iaiAmJiAocEZ1bmNPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSB8fCBwRnVuY09iai0+R2V0VHlwZSgpID09IFBERk9CSl9TVFJFQU0pKSB7DQorICAgICAgICBwRnVuYyA9IENQREZfRnVuY3Rpb246OkxvYWQocEZ1bmNPYmopOw0KKyAgICB9DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4ID0gKnBNYXRyaXg7DQorICAgIG1hdHJpeC5UcmFuc2xhdGVJKC1wQ2xpcFJlY3QtPmxlZnQsIC1wQ2xpcFJlY3QtPnRvcCk7DQorICAgIENQREZfRm9ybSBmb3JtKG1fcENvbnRleHQtPm1fcERvY3VtZW50LCBtX3BDb250ZXh0LT5tX3BQYWdlUmVzb3VyY2VzLCBwR3JvdXApOw0KKyAgICBmb3JtLlBhcnNlQ29udGVudChOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgICAgQ0ZYX0Z4Z2VEZXZpY2UgYml0bWFwX2RldmljZTsNCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgIGlmICghYml0bWFwX2RldmljZS5DcmVhdGUod2lkdGgsIGhlaWdodCwgYkx1bWlub3NpdHkgPyBGWERJQl9SZ2IzMiA6IEZYRElCXzhicHBNYXNrKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisjZWxzZQ0KKyAgICBpZiAoIWJpdG1hcF9kZXZpY2UuQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIGJMdW1pbm9zaXR5ID8gRlhESUJfUmdiIDogRlhESUJfOGJwcE1hc2spKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyNlbmRpZg0KKyAgICBDRlhfRElCaXRtYXAmIGJpdG1hcCA9ICpiaXRtYXBfZGV2aWNlLkdldEJpdG1hcCgpOw0KKyAgICBDUERGX09iamVjdCogcENTT2JqID0gTlVMTDsNCisgICAgQ1BERl9Db2xvclNwYWNlKiBwQ1MgPSBOVUxMOw0KKyAgICBpZiAoYkx1bWlub3NpdHkpIHsNCisgICAgICAgIENQREZfQXJyYXkqIHBCQyA9IHBTTWFza0RpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJCQyIpKTsNCisgICAgICAgIEZYX0FSR0IgYmFja19jb2xvciA9IDB4ZmYwMDAwMDA7DQorICAgICAgICBpZiAocEJDKSB7DQorICAgICAgICAgICAgcENTT2JqID0gcEdyb3VwLT5HZXREaWN0KCktPkdldERpY3QoRlhfQlNUUkMoIkdyb3VwIikpLT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkNTIikpOw0KKyAgICAgICAgICAgIHBDUyA9IG1fcENvbnRleHQtPm1fcERvY3VtZW50LT5Mb2FkQ29sb3JTcGFjZShwQ1NPYmopOw0KKyAgICAgICAgICAgIGlmIChwQ1MpIHsNCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgUiwgRywgQjsNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgbnVtX2Zsb2F0cyA9IDg7DQorICAgICAgICAgICAgICAgIGlmIChwQ1MtPkNvdW50Q29tcG9uZW50cygpID4gKEZYX0lOVDMyKW51bV9mbG9hdHMpIHsNCisgICAgICAgICAgICAgICAgICAgIG51bV9mbG9hdHMgPSAoRlhfRFdPUkQpcENTLT5Db3VudENvbXBvbmVudHMoKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDRlhfRml4ZWRCdWZHcm93PEZYX0ZMT0FULCA4PiBmbG9hdF9hcnJheShudW1fZmxvYXRzKTsNCisgICAgICAgICAgICAgICAgRlhfRkxPQVQqIHBGbG9hdHMgPSBmbG9hdF9hcnJheTsNCisgICAgICAgICAgICAgICAgRlhTWVNfbWVtc2V0MzIocEZsb2F0cywgMCwgbnVtX2Zsb2F0cyAqIHNpemVvZihGWF9GTE9BVCkpOw0KKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSBwQkMtPkdldENvdW50KCkgPiA4ID8gOCA6IHBCQy0+R2V0Q291bnQoKTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgcEZsb2F0c1tpXSA9IHBCQy0+R2V0TnVtYmVyKGkpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBDUy0+R2V0UkdCKHBGbG9hdHMsIFIsIEcsIEIpOw0KKyAgICAgICAgICAgICAgICBiYWNrX2NvbG9yID0gMHhmZjAwMDAwMCB8ICgoRlhfSU5UMzIpKFIgKiAyNTUpIDw8IDE2KSB8ICgoRlhfSU5UMzIpKEcgKiAyNTUpIDw8IDgpIHwgKEZYX0lOVDMyKShCICogMjU1KTsNCisgICAgICAgICAgICAgICAgbV9wQ29udGV4dC0+bV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCktPlJlbGVhc2VDb2xvclNwYWNlKHBDU09iaik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgYml0bWFwLkNsZWFyKGJhY2tfY29sb3IpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgYml0bWFwLkNsZWFyKDApOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcEZvcm1SZXNvdXJjZSA9IE5VTEw7DQorICAgIGlmIChmb3JtLm1fcEZvcm1EaWN0KSB7DQorICAgICAgICBwRm9ybVJlc291cmNlID0gZm9ybS5tX3BGb3JtRGljdC0+R2V0RGljdChGWF9CU1RSQygiUmVzb3VyY2VzIikpOw0KKyAgICB9DQorICAgIENQREZfUmVuZGVyT3B0aW9ucyBvcHRpb25zOw0KKyAgICBvcHRpb25zLm1fQ29sb3JNb2RlID0gYkx1bWlub3NpdHkgPyBSRU5ERVJfQ09MT1JfTk9STUFMIDogUkVOREVSX0NPTE9SX0FMUEhBOw0KKyAgICBDUERGX1JlbmRlclN0YXR1cyBzdGF0dXM7DQorICAgIHN0YXR1cy5Jbml0aWFsaXplKG1fTGV2ZWwgKyAxLCBtX3BDb250ZXh0LCAmYml0bWFwX2RldmljZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbnMsIDAsIG1fYkRyb3BPYmplY3RzLCBwRm9ybVJlc291cmNlLCBUUlVFLCBOVUxMLCAwLCBwQ1MgPyBwQ1MtPkdldEZhbWlseSgpIDogMCwgYkx1bWlub3NpdHkpOw0KKyAgICBzdGF0dXMuUmVuZGVyT2JqZWN0TGlzdCgmZm9ybSwgJm1hdHJpeCk7DQorICAgIHBNYXNrID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgaWYgKCFwTWFzay0+Q3JlYXRlKHdpZHRoLCBoZWlnaHQsIEZYRElCXzhicHBNYXNrKSkgew0KKyAgICAgICAgZGVsZXRlIHBNYXNrOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhfTFBCWVRFIGRlc3RfYnVmID0gcE1hc2stPkdldEJ1ZmZlcigpOw0KKyAgICBpbnQgZGVzdF9waXRjaCA9IHBNYXNrLT5HZXRQaXRjaCgpOw0KKyAgICBGWF9MUEJZVEUgc3JjX2J1ZiA9IGJpdG1hcC5HZXRCdWZmZXIoKTsNCisgICAgaW50IHNyY19waXRjaCA9IGJpdG1hcC5HZXRQaXRjaCgpOw0KKyAgICBGWF9MUEJZVEUgcFRyYW5zZmVyID0gRlhfQWxsb2MoRlhfQllURSwgMjU2KTsNCisgICAgaWYgKHBGdW5jKSB7DQorICAgICAgICBDRlhfRml4ZWRCdWZHcm93PEZYX0ZMT0FULCAxNj4gcmVzdWx0cyhwRnVuYy0+Q291bnRPdXRwdXRzKCkpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9GTE9BVCBpbnB1dCA9IChGWF9GTE9BVClpIC8gMjU1LjBmOw0KKyAgICAgICAgICAgIGludCBucmVzdWx0Ow0KKyAgICAgICAgICAgIHBGdW5jLT5DYWxsKCZpbnB1dCwgMSwgcmVzdWx0cywgbnJlc3VsdCk7DQorICAgICAgICAgICAgcFRyYW5zZmVyW2ldID0gRlhTWVNfcm91bmQocmVzdWx0c1swXSAqIDI1NSk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSArKykgew0KKyAgICAgICAgICAgIHBUcmFuc2ZlcltpXSA9IGk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGJMdW1pbm9zaXR5KSB7DQorICAgICAgICBpbnQgQnBwID0gYml0bWFwLkdldEJQUCgpIC8gODsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3RfcG9zID0gZGVzdF9idWYgKyByb3cgKiBkZXN0X3BpdGNoOw0KKyAgICAgICAgICAgIEZYX0xQQllURSBzcmNfcG9zID0gc3JjX2J1ZiArIHJvdyAqIHNyY19waXRjaDsNCisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3BvcyArKyA9IHBUcmFuc2ZlcltGWFJHQjJHUkFZKHNyY19wb3NbMl0sIHNyY19wb3NbMV0sICpzcmNfcG9zKV07DQorICAgICAgICAgICAgICAgIHNyY19wb3MgKz0gQnBwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChwRnVuYykgew0KKyAgICAgICAgaW50IHNpemUgPSBkZXN0X3BpdGNoICogaGVpZ2h0Ow0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7DQorICAgICAgICAgICAgZGVzdF9idWZbaV0gPSBwVHJhbnNmZXJbc3JjX2J1ZltpXV07DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X2J1Ziwgc3JjX2J1ZiwgZGVzdF9waXRjaCAqIGhlaWdodCk7DQorICAgIH0NCisgICAgaWYgKHBGdW5jKSB7DQorICAgICAgICBkZWxldGUgcEZ1bmM7DQorICAgIH0NCisgICAgRlhfRnJlZShwVHJhbnNmZXIpOw0KKyAgICByZXR1cm4gcE1hc2s7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9yZW5kZXIvZnBkZl9yZW5kZXJfbG9hZGltYWdlLmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9yZW5kZXIvZnBkZl9yZW5kZXJfbG9hZGltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2I1MjcxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3JlbmRlci9mcGRmX3JlbmRlcl9sb2FkaW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTUyNCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWMuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfbW9kdWxlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3JlbmRlci5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlb2JqLmgiDQorI2luY2x1ZGUgIi4uL2ZwZGZfcGFnZS9wYWdlaW50LmgiDQorI2luY2x1ZGUgInJlbmRlcl9pbnQuaCINCisjaW5jbHVkZSA8bGltaXRzLmg+DQorc3RhdGljIHVuc2lnbmVkIGludCBfR2V0Qml0czgoRlhfTFBDQllURSBwRGF0YSwgaW50IGJpdHBvcywgaW50IG5iaXRzKQ0KK3sNCisgICAgdW5zaWduZWQgaW50IGJ5dGUgPSBwRGF0YVtiaXRwb3MgLyA4XTsNCisgICAgaWYgKG5iaXRzID09IDgpIHsNCisgICAgICAgIHJldHVybiBieXRlOw0KKyAgICB9IGVsc2UgaWYgKG5iaXRzID09IDQpIHsNCisgICAgICAgIHJldHVybiAoYml0cG9zICUgOCkgPyAoYnl0ZSAmIDB4MGYpIDogKGJ5dGUgPj4gNCk7DQorICAgIH0gZWxzZSBpZiAobmJpdHMgPT0gMikgew0KKyAgICAgICAgcmV0dXJuIChieXRlID4+ICg2IC0gYml0cG9zICUgOCkpICYgMHgwMzsNCisgICAgfSBlbHNlIGlmIChuYml0cyA9PSAxKSB7DQorICAgICAgICByZXR1cm4gKGJ5dGUgPj4gKDcgLSBiaXRwb3MgJSA4KSkgJiAweDAxOw0KKyAgICB9IGVsc2UgaWYgKG5iaXRzID09IDE2KSB7DQorICAgICAgICByZXR1cm4gYnl0ZSAqIDI1NiArIHBEYXRhW2JpdHBvcyAvIDggKyAxXTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorQ0ZYX0RJQlNvdXJjZSogQ1BERl9JbWFnZTo6TG9hZERJQlNvdXJjZShDRlhfRElCU291cmNlKiogcHBNYXNrLCBGWF9EV09SRCogcE1hdHRlQ29sb3IsIEZYX0JPT0wgYlN0ZENTLCBGWF9EV09SRCBHcm91cEZhbWlseSwgRlhfQk9PTCBiTG9hZE1hc2spIGNvbnN0DQorew0KKyAgICBDUERGX0RJQlNvdXJjZSogcFNvdXJjZSA9IEZYX05FVyBDUERGX0RJQlNvdXJjZTsNCisgICAgaWYgKHBTb3VyY2UtPkxvYWQobV9wRG9jdW1lbnQsIG1fcFN0cmVhbSwgKENQREZfRElCU291cmNlKiopcHBNYXNrLCBwTWF0dGVDb2xvciwgTlVMTCwgTlVMTCwgYlN0ZENTLCBHcm91cEZhbWlseSwgYkxvYWRNYXNrKSkgew0KKyAgICAgICAgcmV0dXJuIHBTb3VyY2U7DQorICAgIH0NCisgICAgZGVsZXRlIHBTb3VyY2U7DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDRlhfRElCU291cmNlKiBDUERGX0ltYWdlOjpEZXRhY2hCaXRtYXAoKQ0KK3sNCisgICAgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCA9IG1fcERJQlNvdXJjZTsNCisgICAgbV9wRElCU291cmNlID0gTlVMTDsNCisgICAgcmV0dXJuIHBCaXRtYXA7DQorfQ0KK0NGWF9ESUJTb3VyY2UqIENQREZfSW1hZ2U6OkRldGFjaE1hc2soKQ0KK3sNCisgICAgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCA9IG1fcE1hc2s7DQorICAgIG1fcE1hc2sgPSBOVUxMOw0KKyAgICByZXR1cm4gcEJpdG1hcDsNCit9DQorRlhfQk9PTCBDUERGX0ltYWdlOjpTdGFydExvYWRESUJTb3VyY2UoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybVJlc291cmNlLCBDUERGX0RpY3Rpb25hcnkqIHBQYWdlUmVzb3VyY2UsIEZYX0JPT0wgYlN0ZENTLCBGWF9EV09SRCBHcm91cEZhbWlseSwgRlhfQk9PTCBiTG9hZE1hc2spDQorew0KKyAgICBtX3BESUJTb3VyY2UgPSBGWF9ORVcgQ1BERl9ESUJTb3VyY2U7DQorICAgIGludCByZXQgPSAoKENQREZfRElCU291cmNlKiltX3BESUJTb3VyY2UpLT5TdGFydExvYWRESUJTb3VyY2UobV9wRG9jdW1lbnQsIG1fcFN0cmVhbSwgVFJVRSwgcEZvcm1SZXNvdXJjZSwgcFBhZ2VSZXNvdXJjZSwgYlN0ZENTLCBHcm91cEZhbWlseSwgYkxvYWRNYXNrKTsNCisgICAgaWYgKHJldCA9PSAyKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAoIXJldCkgew0KKyAgICAgICAgZGVsZXRlIG1fcERJQlNvdXJjZTsNCisgICAgICAgIG1fcERJQlNvdXJjZSA9IE5VTEw7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9wTWFzayA9ICgoQ1BERl9ESUJTb3VyY2UqKW1fcERJQlNvdXJjZSktPkRldGFjaE1hc2soKTsNCisgICAgbV9NYXR0ZUNvbG9yID0gKChDUERGX0RJQlNvdXJjZSopbV9wRElCU291cmNlKS0+bV9NYXR0ZUNvbG9yOw0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbWFnZTo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpbnQgcmV0ID0gKChDUERGX0RJQlNvdXJjZSopbV9wRElCU291cmNlKS0+Q29udGludWVMb2FkRElCU291cmNlKHBQYXVzZSk7DQorICAgIGlmIChyZXQgPT0gMikgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKCFyZXQpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BESUJTb3VyY2U7DQorICAgICAgICBtX3BESUJTb3VyY2UgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fcE1hc2sgPSAoKENQREZfRElCU291cmNlKiltX3BESUJTb3VyY2UpLT5EZXRhY2hNYXNrKCk7DQorICAgIG1fTWF0dGVDb2xvciA9ICgoQ1BERl9ESUJTb3VyY2UqKW1fcERJQlNvdXJjZSktPm1fTWF0dGVDb2xvcjsNCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitDUERGX0RJQlNvdXJjZTo6Q1BERl9ESUJTb3VyY2UoKQ0KK3sNCisgICAgbV9wRG9jdW1lbnQgPSBOVUxMOw0KKyAgICBtX3BTdHJlYW1BY2MgPSBOVUxMOw0KKyAgICBtX3BEaWN0ID0gTlVMTDsNCisgICAgbV9icHAgPSAwOw0KKyAgICBtX1dpZHRoID0gbV9IZWlnaHQgPSAwOw0KKyAgICBtX3BDb2xvclNwYWNlID0gTlVMTDsNCisgICAgbV9iRGVmYXVsdERlY29kZSA9IFRSVUU7DQorICAgIG1fYkltYWdlTWFzayA9IEZBTFNFOw0KKyAgICBtX3BQYWxldHRlID0gTlVMTDsNCisgICAgbV9wQ29tcERhdGEgPSBOVUxMOw0KKyAgICBtX2JDb2xvcktleSA9IEZBTFNFOw0KKyAgICBtX3BNYXNrZWRMaW5lID0gbV9wTGluZUJ1ZiA9IE5VTEw7DQorICAgIG1fcENhY2hlZEJpdG1hcCA9IE5VTEw7DQorICAgIG1fcERlY29kZXIgPSBOVUxMOw0KKyAgICBtX25Db21wb25lbnRzID0gMDsNCisgICAgbV9icGMgPSAwOw0KKyAgICBtX2JMb2FkTWFzayA9IEZBTFNFOw0KKyAgICBtX0ZhbWlseSA9IDA7DQorICAgIG1fcE1hc2sgPSBOVUxMOw0KKyAgICBtX01hdHRlQ29sb3IgPSAwOw0KKyAgICBtX3BKYmlnMkNvbnRleHQgPSBOVUxMOw0KKyAgICBtX3BHbG9iYWxTdHJlYW0gPSBOVUxMOw0KKyAgICBtX2JTdGRDUyA9IEZBTFNFOw0KKyAgICBtX3BNYXNrU3RyZWFtID0gTlVMTDsNCisgICAgbV9TdGF0dXMgPSAwOw0KKyAgICBtX2JIYXNNYXNrID0gRkFMU0U7DQorfQ0KK0NQREZfRElCU291cmNlOjp+Q1BERl9ESUJTb3VyY2UoKQ0KK3sNCisgICAgaWYgKG1fcFN0cmVhbUFjYykgew0KKyAgICAgICAgZGVsZXRlIG1fcFN0cmVhbUFjYzsNCisgICAgfQ0KKyAgICBpZiAobV9wTWFza2VkTGluZSkgew0KKyAgICAgICAgRlhfRnJlZShtX3BNYXNrZWRMaW5lKTsNCisgICAgfQ0KKyAgICBpZiAobV9wTGluZUJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BMaW5lQnVmKTsNCisgICAgfQ0KKyAgICBpZiAobV9wQ2FjaGVkQml0bWFwKSB7DQorICAgICAgICBkZWxldGUgbV9wQ2FjaGVkQml0bWFwOw0KKyAgICB9DQorICAgIGlmIChtX3BEZWNvZGVyKSB7DQorICAgICAgICBkZWxldGUgbV9wRGVjb2RlcjsNCisgICAgfQ0KKyAgICBpZiAobV9wQ29tcERhdGEpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wQ29tcERhdGEpOw0KKyAgICB9DQorICAgIENQREZfQ29sb3JTcGFjZSogcENTID0gbV9wQ29sb3JTcGFjZTsNCisgICAgaWYgKHBDUyAmJiBtX3BEb2N1bWVudCkgew0KKyAgICAgICAgbV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCktPlJlbGVhc2VDb2xvclNwYWNlKHBDUy0+R2V0QXJyYXkoKSk7DQorICAgIH0NCisgICAgaWYgKG1fcEpiaWcyQ29udGV4dCkgew0KKyAgICAgICAgSUNvZGVjX0piaWcyTW9kdWxlKiBwSmJpZzJNb3VkbGUgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEpiaWcyTW9kdWxlKCk7DQorICAgICAgICBwSmJpZzJNb3VkbGUtPkRlc3Ryb3lKYmlnMkNvbnRleHQobV9wSmJpZzJDb250ZXh0KTsNCisgICAgICAgIG1fcEpiaWcyQ29udGV4dCA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKG1fcEdsb2JhbFN0cmVhbSkgew0KKyAgICAgICAgZGVsZXRlIG1fcEdsb2JhbFN0cmVhbTsNCisgICAgfQ0KKyAgICBtX3BHbG9iYWxTdHJlYW0gPSBOVUxMOw0KK30NCitDRlhfRElCaXRtYXAqIENQREZfRElCU291cmNlOjpHZXRCaXRtYXAoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcENhY2hlZEJpdG1hcCkgew0KKyAgICAgICAgcmV0dXJuIG1fcENhY2hlZEJpdG1hcDsNCisgICAgfQ0KKyAgICByZXR1cm4gQ2xvbmUoKTsNCit9DQordm9pZCBDUERGX0RJQlNvdXJjZTo6UmVsZWFzZUJpdG1hcChDRlhfRElCaXRtYXAqIHBCaXRtYXApIGNvbnN0DQorew0KKyAgICBpZiAocEJpdG1hcCAmJiBwQml0bWFwICE9IG1fcENhY2hlZEJpdG1hcCkgew0KKyAgICAgICAgZGVsZXRlIHBCaXRtYXA7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0RJQlNvdXJjZTo6TG9hZChDUERGX0RvY3VtZW50KiBwRG9jLCBjb25zdCBDUERGX1N0cmVhbSogcFN0cmVhbSwgQ1BERl9ESUJTb3VyY2UqKiBwcE1hc2ssDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCogcE1hdHRlQ29sb3IsIENQREZfRGljdGlvbmFyeSogcEZvcm1SZXNvdXJjZXMsIENQREZfRGljdGlvbmFyeSogcFBhZ2VSZXNvdXJjZXMsIEZYX0JPT0wgYlN0ZENTLCBGWF9EV09SRCBHcm91cEZhbWlseSwgRlhfQk9PTCBiTG9hZE1hc2spDQorew0KKyAgICBpZiAocFN0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9wRG9jdW1lbnQgPSBwRG9jOw0KKyAgICBtX3BEaWN0ID0gcFN0cmVhbS0+R2V0RGljdCgpOw0KKyAgICBtX3BTdHJlYW0gPSBwU3RyZWFtOw0KKyAgICBtX1dpZHRoID0gbV9wRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiV2lkdGgiKSk7DQorICAgIG1fSGVpZ2h0ID0gbV9wRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiSGVpZ2h0IikpOw0KKyAgICBpZiAobV9XaWR0aCA8PSAwIHx8IG1fSGVpZ2h0IDw9IDAgfHwgbV9XaWR0aCA+IDB4MDFmZmZmIHx8IG1fSGVpZ2h0ID4gMHgwMWZmZmYpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX0dyb3VwRmFtaWx5ID0gR3JvdXBGYW1pbHk7DQorICAgIG1fYkxvYWRNYXNrID0gYkxvYWRNYXNrOw0KKyAgICBpZiAoIUxvYWRDb2xvckluZm8obV9wU3RyZWFtLT5HZXRPYmpOdW0oKSAhPSAwID8gTlVMTCA6IHBGb3JtUmVzb3VyY2VzLCBwUGFnZVJlc291cmNlcykpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBzcmNfcGl0Y2ggPSBtX2JwYzsNCisgICAgaWYgKG1fYnBjICE9IDAgJiYgbV9uQ29tcG9uZW50cyAhPSAwKSB7DQorICAgICAgICBpZiAoc3JjX3BpdGNoID4gMCAmJiBtX25Db21wb25lbnRzID4gKHVuc2lnbmVkKUlOVF9NQVggLyBzcmNfcGl0Y2gpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBzcmNfcGl0Y2ggKj0gbV9uQ29tcG9uZW50czsNCisgICAgICAgIGlmIChzcmNfcGl0Y2ggPiAwICYmIChGWF9EV09SRCltX1dpZHRoID4gKHVuc2lnbmVkKUlOVF9NQVggLyBzcmNfcGl0Y2gpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBzcmNfcGl0Y2ggKj0gbV9XaWR0aDsNCisgICAgICAgIGlmIChzcmNfcGl0Y2ggKyA3IDwgc3JjX3BpdGNoKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3JjX3BpdGNoICs9IDc7DQorICAgICAgICBzcmNfcGl0Y2ggLz0gODsNCisgICAgICAgIGlmIChzcmNfcGl0Y2ggPiAwICYmIChGWF9EV09SRCltX0hlaWdodCA+ICh1bnNpZ25lZClJTlRfTUFYIC8gc3JjX3BpdGNoKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fcFN0cmVhbUFjYyA9IEZYX05FVyBDUERGX1N0cmVhbUFjYzsNCisgICAgbV9wU3RyZWFtQWNjLT5Mb2FkQWxsRGF0YShwU3RyZWFtLCBGQUxTRSwgbV9IZWlnaHQgKiBzcmNfcGl0Y2gsIFRSVUUpOw0KKyAgICBpZiAobV9wU3RyZWFtQWNjLT5HZXRTaXplKCkgPT0gMCB8fCBtX3BTdHJlYW1BY2MtPkdldERhdGEoKSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIGRlY29kZXIgPSBtX3BTdHJlYW1BY2MtPkdldEltYWdlRGVjb2RlcigpOw0KKyAgICBpZiAoIWRlY29kZXIuSXNFbXB0eSgpICYmIGRlY29kZXIgPT0gRlhfQlNUUkMoIkNDSVRURmF4RGVjb2RlIikpIHsNCisgICAgICAgIG1fYnBjID0gMTsNCisgICAgfQ0KKyAgICBpZiAoIUNyZWF0ZURlY29kZXIoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX2JJbWFnZU1hc2spIHsNCisgICAgICAgIG1fYnBwID0gMTsNCisgICAgICAgIG1fYnBjID0gMTsNCisgICAgICAgIG1fbkNvbXBvbmVudHMgPSAxOw0KKyAgICAgICAgbV9BbHBoYUZsYWcgPSAxOw0KKyAgICB9IGVsc2UgaWYgKG1fYnBjICogbV9uQ29tcG9uZW50cyA9PSAxKSB7DQorICAgICAgICBtX2JwcCA9IDE7DQorICAgIH0gZWxzZSBpZiAobV9icGMgKiBtX25Db21wb25lbnRzIDw9IDgpIHsNCisgICAgICAgIG1fYnBwID0gODsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fYnBwID0gMjQ7DQorICAgIH0NCisgICAgaWYgKCFtX2JwYyB8fCAhbV9uQ29tcG9uZW50cykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fUGl0Y2ggPSBtX1dpZHRoOw0KKyAgICBpZiAoKEZYX0RXT1JEKW1fYnBwID4gKHVuc2lnbmVkKUlOVF9NQVggLyBtX1BpdGNoKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9QaXRjaCAqPSBtX2JwcDsNCisgICAgaWYgKG1fUGl0Y2ggKyAzMSA8IG1fUGl0Y2gpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX1BpdGNoICs9IDMxOw0KKyAgICBtX1BpdGNoID0gbV9QaXRjaCAvIDMyICogNDsNCisgICAgbV9wTGluZUJ1ZiA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2gpOw0KKyAgICBpZiAobV9wQ29sb3JTcGFjZSAmJiBiU3RkQ1MpIHsNCisgICAgICAgIG1fcENvbG9yU3BhY2UtPkVuYWJsZVN0ZENvbnZlcnNpb24oVFJVRSk7DQorICAgIH0NCisgICAgTG9hZFBhbGV0dGUoKTsNCisgICAgaWYgKG1fYkNvbG9yS2V5KSB7DQorICAgICAgICBtX2JwcCA9IDMyOw0KKyAgICAgICAgbV9BbHBoYUZsYWcgPSAyOw0KKyAgICAgICAgbV9QaXRjaCA9IG1fV2lkdGg7DQorICAgICAgICBpZiAoKEZYX0RXT1JEKW1fYnBwID4gKHVuc2lnbmVkKUlOVF9NQVggLyBtX1BpdGNoKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9QaXRjaCAqPSBtX2JwcDsNCisgICAgICAgIGlmIChtX1BpdGNoICsgMzEgPCBtX1BpdGNoKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9QaXRjaCArPSAzMTsNCisgICAgICAgIG1fUGl0Y2ggPSBtX1BpdGNoIC8gMzIgKiA0Ow0KKyAgICAgICAgbV9wTWFza2VkTGluZSA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2gpOw0KKyAgICB9DQorICAgIGlmIChwcE1hc2spIHsNCisgICAgICAgICpwcE1hc2sgPSBMb2FkTWFzaygqcE1hdHRlQ29sb3IpOw0KKyAgICB9DQorICAgIGlmIChtX3BDb2xvclNwYWNlICYmIGJTdGRDUykgew0KKyAgICAgICAgbV9wQ29sb3JTcGFjZS0+RW5hYmxlU3RkQ29udmVyc2lvbihGQUxTRSk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2ludAlDUERGX0RJQlNvdXJjZTo6Q29udGludWVUb0xvYWRNYXNrKCkNCit7DQorICAgIGlmIChtX2JJbWFnZU1hc2spIHsNCisgICAgICAgIG1fYnBwID0gMTsNCisgICAgICAgIG1fYnBjID0gMTsNCisgICAgICAgIG1fbkNvbXBvbmVudHMgPSAxOw0KKyAgICAgICAgbV9BbHBoYUZsYWcgPSAxOw0KKyAgICB9IGVsc2UgaWYgKG1fYnBjICogbV9uQ29tcG9uZW50cyA9PSAxKSB7DQorICAgICAgICBtX2JwcCA9IDE7DQorICAgIH0gZWxzZSBpZiAobV9icGMgKiBtX25Db21wb25lbnRzIDw9IDgpIHsNCisgICAgICAgIG1fYnBwID0gODsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fYnBwID0gMjQ7DQorICAgIH0NCisgICAgaWYgKCFtX2JwYyB8fCAhbV9uQ29tcG9uZW50cykgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgbV9QaXRjaCA9IG1fV2lkdGg7DQorICAgIGlmICgoRlhfRFdPUkQpbV9icHAgPiAodW5zaWduZWQpSU5UX01BWCAvIG1fUGl0Y2gpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIG1fUGl0Y2ggKj0gbV9icHA7DQorICAgIGlmIChtX1BpdGNoICsgMzEgPCBtX1BpdGNoKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBtX1BpdGNoICs9IDMxOw0KKyAgICBtX1BpdGNoID0gbV9QaXRjaCAvIDMyICogNDsNCisgICAgbV9wTGluZUJ1ZiA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2gpOw0KKyAgICBpZiAobV9wQ29sb3JTcGFjZSAmJiBtX2JTdGRDUykgew0KKyAgICAgICAgbV9wQ29sb3JTcGFjZS0+RW5hYmxlU3RkQ29udmVyc2lvbihUUlVFKTsNCisgICAgfQ0KKyAgICBMb2FkUGFsZXR0ZSgpOw0KKyAgICBpZiAobV9iQ29sb3JLZXkpIHsNCisgICAgICAgIG1fYnBwID0gMzI7DQorICAgICAgICBtX0FscGhhRmxhZyA9IDI7DQorICAgICAgICBtX1BpdGNoID0gbV9XaWR0aDsNCisgICAgICAgIGlmICgoRlhfRFdPUkQpbV9icHAgPiAodW5zaWduZWQpSU5UX01BWCAvIG1fUGl0Y2gpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIG1fUGl0Y2ggKj0gbV9icHA7DQorICAgICAgICBpZiAobV9QaXRjaCArIDMxIDwgbV9QaXRjaCkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9QaXRjaCArPSAzMTsNCisgICAgICAgIG1fUGl0Y2ggPSBtX1BpdGNoIC8gMzIgKiA0Ow0KKyAgICAgICAgbV9wTWFza2VkTGluZSA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2gpOw0KKyAgICB9DQorICAgIHJldHVybiAxOw0KK30NCitpbnQJQ1BERl9ESUJTb3VyY2U6OlN0YXJ0TG9hZERJQlNvdXJjZShDUERGX0RvY3VtZW50KiBwRG9jLCBjb25zdCBDUERGX1N0cmVhbSogcFN0cmVhbSwgRlhfQk9PTCBiSGFzTWFzaywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBGb3JtUmVzb3VyY2VzLCBDUERGX0RpY3Rpb25hcnkqIHBQYWdlUmVzb3VyY2VzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYlN0ZENTLCBGWF9EV09SRCBHcm91cEZhbWlseSwgRlhfQk9PTCBiTG9hZE1hc2spDQorew0KKyAgICBpZiAocFN0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBtX3BEb2N1bWVudCA9IHBEb2M7DQorICAgIG1fcERpY3QgPSBwU3RyZWFtLT5HZXREaWN0KCk7DQorICAgIG1fcFN0cmVhbSA9IHBTdHJlYW07DQorICAgIG1fYlN0ZENTID0gYlN0ZENTOw0KKyAgICBtX2JIYXNNYXNrID0gYkhhc01hc2s7DQorICAgIG1fV2lkdGggPSBtX3BEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJXaWR0aCIpKTsNCisgICAgbV9IZWlnaHQgPSBtX3BEaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJIZWlnaHQiKSk7DQorICAgIGlmIChtX1dpZHRoIDw9IDAgfHwgbV9IZWlnaHQgPD0gMCB8fCBtX1dpZHRoID4gMHgwMWZmZmYgfHwgbV9IZWlnaHQgPiAweDAxZmZmZikgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgbV9Hcm91cEZhbWlseSA9IEdyb3VwRmFtaWx5Ow0KKyAgICBtX2JMb2FkTWFzayA9IGJMb2FkTWFzazsNCisgICAgaWYgKCFMb2FkQ29sb3JJbmZvKG1fcFN0cmVhbS0+R2V0T2JqTnVtKCkgIT0gMCA/IE5VTEwgOiBwRm9ybVJlc291cmNlcywgcFBhZ2VSZXNvdXJjZXMpKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBzcmNfcGl0Y2ggPSBtX2JwYzsNCisgICAgaWYgKG1fYnBjICE9IDAgJiYgbV9uQ29tcG9uZW50cyAhPSAwKSB7DQorICAgICAgICBpZiAoc3JjX3BpdGNoID4gMCAmJiBtX25Db21wb25lbnRzID4gKHVuc2lnbmVkKUlOVF9NQVggLyBzcmNfcGl0Y2gpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIHNyY19waXRjaCAqPSBtX25Db21wb25lbnRzOw0KKyAgICAgICAgaWYgKHNyY19waXRjaCA+IDAgJiYgKEZYX0RXT1JEKW1fV2lkdGggPiAodW5zaWduZWQpSU5UX01BWCAvIHNyY19waXRjaCkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3JjX3BpdGNoICo9IG1fV2lkdGg7DQorICAgICAgICBpZiAoc3JjX3BpdGNoICsgNyA8IHNyY19waXRjaCkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3JjX3BpdGNoICs9IDc7DQorICAgICAgICBzcmNfcGl0Y2ggLz0gODsNCisgICAgICAgIGlmIChzcmNfcGl0Y2ggPiAwICYmIChGWF9EV09SRCltX0hlaWdodCA+ICh1bnNpZ25lZClJTlRfTUFYIC8gc3JjX3BpdGNoKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wU3RyZWFtQWNjID0gRlhfTkVXIENQREZfU3RyZWFtQWNjOw0KKyAgICBtX3BTdHJlYW1BY2MtPkxvYWRBbGxEYXRhKHBTdHJlYW0sIEZBTFNFLCBtX0hlaWdodCAqIHNyY19waXRjaCwgVFJVRSk7DQorICAgIGlmIChtX3BTdHJlYW1BY2MtPkdldFNpemUoKSA9PSAwIHx8IG1fcFN0cmVhbUFjYy0+R2V0RGF0YSgpID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBkZWNvZGVyID0gbV9wU3RyZWFtQWNjLT5HZXRJbWFnZURlY29kZXIoKTsNCisgICAgaWYgKCFkZWNvZGVyLklzRW1wdHkoKSAmJiBkZWNvZGVyID09IEZYX0JTVFJDKCJDQ0lUVEZheERlY29kZSIpKSB7DQorICAgICAgICBtX2JwYyA9IDE7DQorICAgIH0NCisgICAgaW50IHJldCA9IENyZWF0ZURlY29kZXIoKTsNCisgICAgaWYgKHJldCAhPSAxKSB7DQorICAgICAgICBpZiAoIXJldCkgew0KKyAgICAgICAgICAgIHJldHVybiByZXQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIUNvbnRpbnVlVG9Mb2FkTWFzaygpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9iSGFzTWFzaykgew0KKyAgICAgICAgICAgIFN0cmF0TG9hZE1hc2soKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiByZXQ7DQorICAgIH0NCisgICAgaWYgKCFDb250aW51ZVRvTG9hZE1hc2soKSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKG1fYkhhc01hc2spIHsNCisgICAgICAgIHJldCA9IFN0cmF0TG9hZE1hc2soKTsNCisgICAgfQ0KKyAgICBpZiAocmV0ID09IDIpIHsNCisgICAgICAgIHJldHVybiByZXQ7DQorICAgIH0NCisgICAgaWYgKG1fcENvbG9yU3BhY2UgJiYgbV9iU3RkQ1MpIHsNCisgICAgICAgIG1fcENvbG9yU3BhY2UtPkVuYWJsZVN0ZENvbnZlcnNpb24oRkFMU0UpOw0KKyAgICB9DQorICAgIHJldHVybiByZXQ7DQorfQ0KK2ludAlDUERGX0RJQlNvdXJjZTo6Q29udGludWVMb2FkRElCU291cmNlKElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhDT0RFQ19TVEFUVVMgcmV0Ow0KKyAgICBpZiAobV9TdGF0dXMgPT0gMSkgew0KKyAgICAgICAgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIGRlY29kZXIgPSBtX3BTdHJlYW1BY2MtPkdldEltYWdlRGVjb2RlcigpOw0KKyAgICAgICAgaWYgKGRlY29kZXIgPT0gRlhfQlNUUkMoIkpQWERlY29kZSIpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICBJQ29kZWNfSmJpZzJNb2R1bGUqIHBKYmlnMk1vdWRsZSA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SmJpZzJNb2R1bGUoKTsNCisgICAgICAgIGlmIChtX3BKYmlnMkNvbnRleHQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fcEpiaWcyQ29udGV4dCA9IHBKYmlnMk1vdWRsZS0+Q3JlYXRlSmJpZzJDb250ZXh0KCk7DQorICAgICAgICAgICAgaWYgKG1fcFN0cmVhbUFjYy0+R2V0SW1hZ2VQYXJhbSgpKSB7DQorICAgICAgICAgICAgICAgIENQREZfU3RyZWFtKiBwR2xvYmFscyA9IG1fcFN0cmVhbUFjYy0+R2V0SW1hZ2VQYXJhbSgpLT5HZXRTdHJlYW0oRlhfQlNUUkMoIkpCSUcyR2xvYmFscyIpKTsNCisgICAgICAgICAgICAgICAgaWYgKHBHbG9iYWxzKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BHbG9iYWxTdHJlYW0gPSBGWF9ORVcgQ1BERl9TdHJlYW1BY2M7DQorICAgICAgICAgICAgICAgICAgICBtX3BHbG9iYWxTdHJlYW0tPkxvYWRBbGxEYXRhKHBHbG9iYWxzLCBGQUxTRSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0ID0gcEpiaWcyTW91ZGxlLT5TdGFydERlY29kZShtX3BKYmlnMkNvbnRleHQsIG1fV2lkdGgsIG1fSGVpZ2h0LCBtX3BTdHJlYW1BY2MtPkdldERhdGEoKSwgbV9wU3RyZWFtQWNjLT5HZXRTaXplKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BHbG9iYWxTdHJlYW0gPyBtX3BHbG9iYWxTdHJlYW0tPkdldERhdGEoKSA6IE5VTEwsIG1fcEdsb2JhbFN0cmVhbSA/IG1fcEdsb2JhbFN0cmVhbS0+R2V0U2l6ZSgpIDogMCwgbV9wQ2FjaGVkQml0bWFwLT5HZXRCdWZmZXIoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcENhY2hlZEJpdG1hcC0+R2V0UGl0Y2goKSwgcFBhdXNlKTsNCisgICAgICAgICAgICBpZiAocmV0IDwgMCkgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgbV9wQ2FjaGVkQml0bWFwOw0KKyAgICAgICAgICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICBpZiAobV9wR2xvYmFsU3RyZWFtKSB7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgbV9wR2xvYmFsU3RyZWFtOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fcEdsb2JhbFN0cmVhbSA9IE5VTEw7DQorICAgICAgICAgICAgICAgIHBKYmlnMk1vdWRsZS0+RGVzdHJveUpiaWcyQ29udGV4dChtX3BKYmlnMkNvbnRleHQpOw0KKyAgICAgICAgICAgICAgICBtX3BKYmlnMkNvbnRleHQgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHJldCA9PSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgcmV0MSA9IDE7DQorICAgICAgICAgICAgaWYgKG1fYkhhc01hc2spIHsNCisgICAgICAgICAgICAgICAgcmV0MSA9IENvbnRpbnVlTG9hZE1hc2tESUIocFBhdXNlKTsNCisgICAgICAgICAgICAgICAgbV9TdGF0dXMgPSAyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAocmV0MSA9PSAyKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiByZXQxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9wQ29sb3JTcGFjZSAmJiBtX2JTdGRDUykgew0KKyAgICAgICAgICAgICAgICBtX3BDb2xvclNwYWNlLT5FbmFibGVTdGRDb252ZXJzaW9uKEZBTFNFKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIHJldDE7DQorICAgICAgICB9DQorICAgICAgICBGWENPREVDX1NUQVRVUyByZXQgPSBwSmJpZzJNb3VkbGUtPkNvbnRpbnVlRGVjb2RlKG1fcEpiaWcyQ29udGV4dCwgcFBhdXNlKTsNCisgICAgICAgIGlmIChyZXQgPCAwKSB7DQorICAgICAgICAgICAgZGVsZXRlIG1fcENhY2hlZEJpdG1hcDsNCisgICAgICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBOVUxMOw0KKyAgICAgICAgICAgIGlmIChtX3BHbG9iYWxTdHJlYW0pIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIG1fcEdsb2JhbFN0cmVhbTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wR2xvYmFsU3RyZWFtID0gTlVMTDsNCisgICAgICAgICAgICBwSmJpZzJNb3VkbGUtPkRlc3Ryb3lKYmlnMkNvbnRleHQobV9wSmJpZzJDb250ZXh0KTsNCisgICAgICAgICAgICBtX3BKYmlnMkNvbnRleHQgPSBOVUxMOw0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHJldCA9PSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFKSB7DQorICAgICAgICAgICAgcmV0dXJuIDI7DQorICAgICAgICB9DQorICAgICAgICBpbnQgcmV0MSA9IDE7DQorICAgICAgICBpZiAobV9iSGFzTWFzaykgew0KKyAgICAgICAgICAgIHJldDEgPSBDb250aW51ZUxvYWRNYXNrRElCKHBQYXVzZSk7DQorICAgICAgICAgICAgbV9TdGF0dXMgPSAyOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHJldDEgPT0gMikgew0KKyAgICAgICAgICAgIHJldHVybiByZXQxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fcENvbG9yU3BhY2UgJiYgbV9iU3RkQ1MpIHsNCisgICAgICAgICAgICBtX3BDb2xvclNwYWNlLT5FbmFibGVTdGRDb252ZXJzaW9uKEZBTFNFKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiByZXQxOw0KKyAgICB9IGVsc2UgaWYgKG1fU3RhdHVzID09IDIpIHsNCisgICAgICAgIHJldHVybiBDb250aW51ZUxvYWRNYXNrRElCKHBQYXVzZSk7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX0JPT0wgQ1BERl9ESUJTb3VyY2U6OkxvYWRDb2xvckluZm8oQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybVJlc291cmNlcywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZVJlc291cmNlcykNCit7DQorICAgIGlmIChtX3BEaWN0LT5HZXRJbnRlZ2VyKCJJbWFnZU1hc2siKSkgew0KKyAgICAgICAgbV9iSW1hZ2VNYXNrID0gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9iSW1hZ2VNYXNrIHx8ICFtX3BEaWN0LT5LZXlFeGlzdChGWF9CU1RSQygiQ29sb3JTcGFjZSIpKSkgew0KKyAgICAgICAgaWYgKCFtX2JJbWFnZU1hc2spIHsNCisgICAgICAgICAgICBDUERGX09iamVjdCogcEZpbHRlciA9IG1fcERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiRmlsdGVyIikpOw0KKyAgICAgICAgICAgIGlmIChwRmlsdGVyKSB7DQorICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGZpbHRlcjsNCisgICAgICAgICAgICAgICAgaWYgKHBGaWx0ZXItPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkgew0KKyAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gcEZpbHRlci0+R2V0U3RyaW5nKCk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09IEZYX0JTVFJDKCJKUFhEZWNvZGUiKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBGaWx0ZXItPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICAgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwRmlsdGVyOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBBcnJheS0+R2V0U3RyaW5nKHBBcnJheS0+R2V0Q291bnQoKSAtIDEpID09IEZYX0JTVFJDKCJKUFhEZWNvZGUiKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9iSW1hZ2VNYXNrID0gVFJVRTsNCisgICAgICAgIG1fYnBjID0gbV9uQ29tcG9uZW50cyA9IDE7DQorICAgICAgICBDUERGX0FycmF5KiBwRGVjb2RlID0gbV9wRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkRlY29kZSIpKTsNCisgICAgICAgIG1fYkRlZmF1bHREZWNvZGUgPSBwRGVjb2RlID09IE5VTEwgfHwgcERlY29kZS0+R2V0SW50ZWdlcigwKSA9PSAwOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBDU09iaiA9IG1fcERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiQ29sb3JTcGFjZSIpKTsNCisgICAgaWYgKHBDU09iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9Eb2NQYWdlRGF0YSogcERvY1BhZ2VEYXRhID0gbV9wRG9jdW1lbnQtPkdldFBhZ2VEYXRhKCk7DQorICAgIGlmIChwRm9ybVJlc291cmNlcykgew0KKyAgICAgICAgbV9wQ29sb3JTcGFjZSA9IHBEb2NQYWdlRGF0YS0+R2V0Q29sb3JTcGFjZShwQ1NPYmosIHBGb3JtUmVzb3VyY2VzKTsNCisgICAgfQ0KKyAgICBpZiAobV9wQ29sb3JTcGFjZSA9PSBOVUxMKSB7DQorICAgICAgICBtX3BDb2xvclNwYWNlID0gcERvY1BhZ2VEYXRhLT5HZXRDb2xvclNwYWNlKHBDU09iaiwgcFBhZ2VSZXNvdXJjZXMpOw0KKyAgICB9DQorICAgIGlmIChtX3BDb2xvclNwYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX2JwYyA9IG1fcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIkJpdHNQZXJDb21wb25lbnQiKSk7DQorICAgIG1fRmFtaWx5ID0gbV9wQ29sb3JTcGFjZS0+R2V0RmFtaWx5KCk7DQorICAgIG1fbkNvbXBvbmVudHMgPSBtX3BDb2xvclNwYWNlLT5Db3VudENvbXBvbmVudHMoKTsNCisgICAgaWYgKG1fRmFtaWx5ID09IFBERkNTX0lDQ0JBU0VEICYmIHBDU09iai0+R2V0VHlwZSgpID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjcyA9IHBDU09iai0+R2V0U3RyaW5nKCk7DQorICAgICAgICBpZiAoY3MgPT0gRlhfQlNUUkMoIkRldmljZUdyYXkiKSkgew0KKyAgICAgICAgICAgIG1fbkNvbXBvbmVudHMgPSAxOw0KKyAgICAgICAgfSBlbHNlIGlmIChjcyA9PSBGWF9CU1RSQygiRGV2aWNlUkdCIikpIHsNCisgICAgICAgICAgICBtX25Db21wb25lbnRzID0gMzsNCisgICAgICAgIH0gZWxzZSBpZiAoY3MgPT0gRlhfQlNUUkMoIkRldmljZUNNWUsiKSkgew0KKyAgICAgICAgICAgIG1fbkNvbXBvbmVudHMgPSA0Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fcENvbXBEYXRhID0gRlhfQWxsb2MoRElCX0NPTVBfREFUQSwgbV9uQ29tcG9uZW50cyk7DQorICAgIGlmIChtX2JwYyA9PSAwKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpbnQgbWF4X2RhdGEgPSAoMSA8PCBtX2JwYykgLSAxOw0KKyAgICBDUERGX0FycmF5KiBwRGVjb2RlID0gbV9wRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIkRlY29kZSIpKTsNCisgICAgaWYgKHBEZWNvZGUpIHsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBtX25Db21wb25lbnRzOyBpICsrKSB7DQorICAgICAgICAgICAgbV9wQ29tcERhdGFbaV0ubV9EZWNvZGVNaW4gPSBwRGVjb2RlLT5HZXROdW1iZXIoaSAqIDIpOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIG1heCA9IHBEZWNvZGUtPkdldE51bWJlcihpICogMiArIDEpOw0KKyAgICAgICAgICAgIG1fcENvbXBEYXRhW2ldLm1fRGVjb2RlU3RlcCA9IChtYXggLSBtX3BDb21wRGF0YVtpXS5tX0RlY29kZU1pbikgLyBtYXhfZGF0YTsNCisgICAgICAgICAgICBGWF9GTE9BVCBkZWZfdmFsdWUsIGRlZl9taW4sIGRlZl9tYXg7DQorICAgICAgICAgICAgbV9wQ29sb3JTcGFjZS0+R2V0RGVmYXVsdFZhbHVlKGksIGRlZl92YWx1ZSwgZGVmX21pbiwgZGVmX21heCk7DQorICAgICAgICAgICAgaWYgKG1fRmFtaWx5ID09IFBERkNTX0lOREVYRUQpIHsNCisgICAgICAgICAgICAgICAgZGVmX21heCA9IChGWF9GTE9BVCltYXhfZGF0YTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGRlZl9taW4gIT0gbV9wQ29tcERhdGFbaV0ubV9EZWNvZGVNaW4gfHwgZGVmX21heCAhPSBtYXgpIHsNCisgICAgICAgICAgICAgICAgbV9iRGVmYXVsdERlY29kZSA9IEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBtX25Db21wb25lbnRzOyBpICsrKSB7DQorICAgICAgICAgICAgRlhfRkxPQVQgZGVmX3ZhbHVlOw0KKyAgICAgICAgICAgIG1fcENvbG9yU3BhY2UtPkdldERlZmF1bHRWYWx1ZShpLCBkZWZfdmFsdWUsIG1fcENvbXBEYXRhW2ldLm1fRGVjb2RlTWluLCBtX3BDb21wRGF0YVtpXS5tX0RlY29kZVN0ZXApOw0KKyAgICAgICAgICAgIGlmIChtX0ZhbWlseSA9PSBQREZDU19JTkRFWEVEKSB7DQorICAgICAgICAgICAgICAgIG1fcENvbXBEYXRhW2ldLm1fRGVjb2RlU3RlcCA9IChGWF9GTE9BVCltYXhfZGF0YTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wQ29tcERhdGFbaV0ubV9EZWNvZGVTdGVwID0gKG1fcENvbXBEYXRhW2ldLm1fRGVjb2RlU3RlcCAtIG1fcENvbXBEYXRhW2ldLm1fRGVjb2RlTWluKSAvIG1heF9kYXRhOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICghbV9wRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIlNNYXNrIikpKSB7DQorICAgICAgICBDUERGX09iamVjdCogcE1hc2sgPSBtX3BEaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIk1hc2siKSk7DQorICAgICAgICBpZiAocE1hc2sgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBNYXNrLT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICAgICAgQ1BERl9BcnJheSogcEFycmF5ID0gKENQREZfQXJyYXkqKXBNYXNrOw0KKyAgICAgICAgICAgIGlmIChwQXJyYXktPkdldENvdW50KCkgPj0gbV9uQ29tcG9uZW50cyAqIDIpDQorICAgICAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBtX25Db21wb25lbnRzICogMjsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgJSAyKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wQ29tcERhdGFbaSAvIDJdLm1fQ29sb3JLZXlNYXggPSBwQXJyYXktPkdldEludGVnZXIoaSk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcENvbXBEYXRhW2kgLyAyXS5tX0NvbG9yS2V5TWluID0gcEFycmF5LT5HZXRJbnRlZ2VyKGkpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9iQ29sb3JLZXkgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitJQ29kZWNfU2NhbmxpbmVEZWNvZGVyKiBGUERGQVBJX0NyZWF0ZUZheERlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwUGFyYW1zKTsNCitJQ29kZWNfU2NhbmxpbmVEZWNvZGVyKiBGUERGQVBJX0NyZWF0ZUZsYXRlRGVjb2RlcihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICBpbnQgbkNvbXBzLCBpbnQgYnBjLCBjb25zdCBDUERGX0RpY3Rpb25hcnkqIHBQYXJhbXMpOw0KK2ludCBDUERGX0RJQlNvdXJjZTo6Q3JlYXRlRGVjb2RlcigpDQorew0KKyAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyYgZGVjb2RlciA9IG1fcFN0cmVhbUFjYy0+R2V0SW1hZ2VEZWNvZGVyKCk7DQorICAgIGlmIChkZWNvZGVyLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgRlhfTFBDQllURSBzcmNfZGF0YSA9IG1fcFN0cmVhbUFjYy0+R2V0RGF0YSgpOw0KKyAgICBGWF9EV09SRCBzcmNfc2l6ZSA9IG1fcFN0cmVhbUFjYy0+R2V0U2l6ZSgpOw0KKyAgICBjb25zdCBDUERGX0RpY3Rpb25hcnkqIHBQYXJhbXMgPSBtX3BTdHJlYW1BY2MtPkdldEltYWdlUGFyYW0oKTsNCisgICAgaWYgKGRlY29kZXIgPT0gRlhfQlNUUkMoIkNDSVRURmF4RGVjb2RlIikpIHsNCisgICAgICAgIG1fcERlY29kZXIgPSBGUERGQVBJX0NyZWF0ZUZheERlY29kZXIoc3JjX2RhdGEsIHNyY19zaXplLCBtX1dpZHRoLCBtX0hlaWdodCwgcFBhcmFtcyk7DQorICAgIH0gZWxzZSBpZiAoZGVjb2RlciA9PSBGWF9CU1RSQygiRENURGVjb2RlIikpIHsNCisgICAgICAgIG1fcERlY29kZXIgPSBDUERGX01vZHVsZU1ncjo6R2V0KCktPkdldEpwZWdNb2R1bGUoKS0+Q3JlYXRlRGVjb2RlcihzcmNfZGF0YSwgc3JjX3NpemUsIG1fV2lkdGgsIG1fSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgIG1fbkNvbXBvbmVudHMsIHBQYXJhbXMgPyBwUGFyYW1zLT5HZXRJbnRlZ2VyKEZYX0JTVFIoIkNvbG9yVHJhbnNmb3JtIiksIDEpIDogMSk7DQorICAgICAgICBpZiAoTlVMTCA9PSBtX3BEZWNvZGVyKSB7DQorICAgICAgICAgICAgRlhfQk9PTCBiVHJhbnNmb3JtID0gRkFMU0U7DQorICAgICAgICAgICAgaW50IGNvbXBzLCBicGM7DQorICAgICAgICAgICAgSUNvZGVjX0pwZWdNb2R1bGUqIHBKcGVnTW9kdWxlID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRKcGVnTW9kdWxlKCk7DQorICAgICAgICAgICAgaWYgKHBKcGVnTW9kdWxlLT5Mb2FkSW5mbyhzcmNfZGF0YSwgc3JjX3NpemUsIG1fV2lkdGgsIG1fSGVpZ2h0LCBjb21wcywgYnBjLCBiVHJhbnNmb3JtKSkgew0KKyAgICAgICAgICAgICAgICBtX25Db21wb25lbnRzID0gY29tcHM7DQorICAgICAgICAgICAgICAgIG1fYnBjID0gYnBjOw0KKyAgICAgICAgICAgICAgICBtX3BEZWNvZGVyID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRKcGVnTW9kdWxlKCktPkNyZWF0ZURlY29kZXIoc3JjX2RhdGEsIHNyY19zaXplLCBtX1dpZHRoLCBtX0hlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbkNvbXBvbmVudHMsIGJUcmFuc2Zvcm0pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChkZWNvZGVyID09IEZYX0JTVFJDKCJGbGF0ZURlY29kZSIpKSB7DQorICAgICAgICBtX3BEZWNvZGVyID0gRlBERkFQSV9DcmVhdGVGbGF0ZURlY29kZXIoc3JjX2RhdGEsIHNyY19zaXplLCBtX1dpZHRoLCBtX0hlaWdodCwgbV9uQ29tcG9uZW50cywgbV9icGMsIHBQYXJhbXMpOw0KKyAgICB9IGVsc2UgaWYgKGRlY29kZXIgPT0gRlhfQlNUUkMoIkpQWERlY29kZSIpKSB7DQorICAgICAgICBMb2FkSnB4Qml0bWFwKCk7DQorICAgICAgICByZXR1cm4gbV9wQ2FjaGVkQml0bWFwICE9IE5VTEwgPyAxIDogMDsNCisgICAgfSBlbHNlIGlmIChkZWNvZGVyID09IEZYX0JTVFJDKCJKQklHMkRlY29kZSIpKSB7DQorICAgICAgICBtX3BDYWNoZWRCaXRtYXAgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICAgICAgaWYgKCFtX3BDYWNoZWRCaXRtYXAtPkNyZWF0ZShtX1dpZHRoLCBtX0hlaWdodCwgbV9iSW1hZ2VNYXNrID8gRlhESUJfMWJwcE1hc2sgOiBGWERJQl8xYnBwUmdiKSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBtX3BDYWNoZWRCaXRtYXA7DQorICAgICAgICAgICAgbV9wQ2FjaGVkQml0bWFwID0gTlVMTDsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIG1fU3RhdHVzID0gMTsNCisgICAgICAgIHJldHVybiAyOw0KKyAgICB9IGVsc2UgaWYgKGRlY29kZXIgPT0gRlhfQlNUUkMoIlJ1bkxlbmd0aERlY29kZSIpKSB7DQorICAgICAgICBtX3BEZWNvZGVyID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRCYXNpY01vZHVsZSgpLT5DcmVhdGVSdW5MZW5ndGhEZWNvZGVyKHNyY19kYXRhLCBzcmNfc2l6ZSwgbV9XaWR0aCwgbV9IZWlnaHQsIG1fbkNvbXBvbmVudHMsIG1fYnBjKTsNCisgICAgfQ0KKyAgICBpZiAobV9wRGVjb2Rlcikgew0KKyAgICAgICAgaW50IHJlcXVlc3RlZF9waXRjaCA9IChtX1dpZHRoICogbV9uQ29tcG9uZW50cyAqIG1fYnBjICsgNykgLyA4Ow0KKyAgICAgICAgaW50IHByb3ZpZGVkX3BpdGNoID0gKG1fcERlY29kZXItPkdldFdpZHRoKCkgKiBtX3BEZWNvZGVyLT5Db3VudENvbXBzKCkgKiBtX3BEZWNvZGVyLT5HZXRCUEMoKSArIDcpIC8gODsNCisgICAgICAgIGlmIChwcm92aWRlZF9waXRjaCA8IHJlcXVlc3RlZF9waXRjaCkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK3ZvaWQgQ1BERl9ESUJTb3VyY2U6OkxvYWRKcHhCaXRtYXAoKQ0KK3sNCisgICAgSUNvZGVjX0pweE1vZHVsZSogcEpweE1vZHVsZSA9IENQREZfTW9kdWxlTWdyOjpHZXQoKS0+R2V0SnB4TW9kdWxlKCk7DQorICAgIGlmIChwSnB4TW9kdWxlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9MUFZPSUQgY3R4ID0gcEpweE1vZHVsZS0+Q3JlYXRlRGVjb2RlcihtX3BTdHJlYW1BY2MtPkdldERhdGEoKSwgbV9wU3RyZWFtQWNjLT5HZXRTaXplKCksIG1fcENvbG9yU3BhY2UgIT0gTlVMTCk7DQorICAgIGlmIChjdHggPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIHdpZHRoID0gMCwgaGVpZ2h0ID0gMCwgY29kZXN0cmVhbV9uQ29tcHMgPSAwLCBpbWFnZV9uQ29tcHMgPSAwOw0KKyAgICBwSnB4TW9kdWxlLT5HZXRJbWFnZUluZm8oY3R4LCB3aWR0aCwgaGVpZ2h0LCBjb2Rlc3RyZWFtX25Db21wcywgaW1hZ2VfbkNvbXBzKTsNCisgICAgaWYgKChpbnQpd2lkdGggPCBtX1dpZHRoIHx8IChpbnQpaGVpZ2h0IDwgbV9IZWlnaHQpIHsNCisgICAgICAgIHBKcHhNb2R1bGUtPkRlc3Ryb3lEZWNvZGVyKGN0eCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IG91dHB1dF9uQ29tcHM7DQorICAgIEZYX0JPT0wgYlRyYW5zbGF0ZUNvbG9yLCBiU3dhcFJHQiA9IEZBTFNFOw0KKyAgICBpZiAobV9wQ29sb3JTcGFjZSkgew0KKyAgICAgICAgaWYgKGNvZGVzdHJlYW1fbkNvbXBzICE9IChGWF9EV09SRCltX3BDb2xvclNwYWNlLT5Db3VudENvbXBvbmVudHMoKSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIG91dHB1dF9uQ29tcHMgPSBjb2Rlc3RyZWFtX25Db21wczsNCisgICAgICAgIGJUcmFuc2xhdGVDb2xvciA9IEZBTFNFOw0KKyAgICAgICAgaWYgKG1fcENvbG9yU3BhY2UgPT0gQ1BERl9Db2xvclNwYWNlOjpHZXRTdG9ja0NTKFBERkNTX0RFVklDRVJHQikpIHsNCisgICAgICAgICAgICBiU3dhcFJHQiA9IFRSVUU7DQorICAgICAgICAgICAgbV9wQ29sb3JTcGFjZSA9IE5VTEw7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBiVHJhbnNsYXRlQ29sb3IgPSBUUlVFOw0KKyAgICAgICAgaWYgKGltYWdlX25Db21wcykgew0KKyAgICAgICAgICAgIG91dHB1dF9uQ29tcHMgPSBpbWFnZV9uQ29tcHM7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG91dHB1dF9uQ29tcHMgPSBjb2Rlc3RyZWFtX25Db21wczsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChvdXRwdXRfbkNvbXBzID09IDMpIHsNCisgICAgICAgICAgICBiU3dhcFJHQiA9IFRSVUU7DQorICAgICAgICB9IGVsc2UgaWYgKG91dHB1dF9uQ29tcHMgPT0gNCkgew0KKyAgICAgICAgICAgIG1fcENvbG9yU3BhY2UgPSBDUERGX0NvbG9yU3BhY2U6OkdldFN0b2NrQ1MoUERGQ1NfREVWSUNFQ01ZSyk7DQorICAgICAgICAgICAgYlRyYW5zbGF0ZUNvbG9yID0gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX25Db21wb25lbnRzID0gb3V0cHV0X25Db21wczsNCisgICAgfQ0KKyAgICBGWERJQl9Gb3JtYXQgZm9ybWF0Ow0KKyAgICBpZiAob3V0cHV0X25Db21wcyA9PSAxKSB7DQorICAgICAgICBmb3JtYXQgPSBGWERJQl84YnBwUmdiOw0KKyAgICB9IGVsc2UgaWYgKG91dHB1dF9uQ29tcHMgPD0gMykgew0KKyAgICAgICAgZm9ybWF0ID0gRlhESUJfUmdiOw0KKyAgICB9IGVsc2UgaWYgKG91dHB1dF9uQ29tcHMgPT0gNCkgew0KKyAgICAgICAgZm9ybWF0ID0gRlhESUJfUmdiMzI7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB3aWR0aCA9ICh3aWR0aCAqIG91dHB1dF9uQ29tcHMgKyAyKSAvIDM7DQorICAgICAgICBmb3JtYXQgPSBGWERJQl9SZ2I7DQorICAgIH0NCisgICAgbV9wQ2FjaGVkQml0bWFwID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgaWYgKCFtX3BDYWNoZWRCaXRtYXAtPkNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpKSB7DQorICAgICAgICBkZWxldGUgbV9wQ2FjaGVkQml0bWFwOw0KKyAgICAgICAgbV9wQ2FjaGVkQml0bWFwID0gTlVMTDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BDYWNoZWRCaXRtYXAtPkNsZWFyKDB4RkZGRkZGRkYpOw0KKyAgICBGWF9MUEJZVEUgb3V0cHV0X29mZnNldHMgPSBGWF9BbGxvYyhGWF9CWVRFLCBvdXRwdXRfbkNvbXBzKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvdXRwdXRfbkNvbXBzOyBpICsrKSB7DQorICAgICAgICBvdXRwdXRfb2Zmc2V0c1tpXSA9IGk7DQorICAgIH0NCisgICAgaWYgKGJTd2FwUkdCKSB7DQorICAgICAgICBvdXRwdXRfb2Zmc2V0c1swXSA9IDI7DQorICAgICAgICBvdXRwdXRfb2Zmc2V0c1syXSA9IDA7DQorICAgIH0NCisgICAgaWYgKCFwSnB4TW9kdWxlLT5EZWNvZGUoY3R4LCBtX3BDYWNoZWRCaXRtYXAtPkdldEJ1ZmZlcigpLCBtX3BDYWNoZWRCaXRtYXAtPkdldFBpdGNoKCksIGJUcmFuc2xhdGVDb2xvciwgb3V0cHV0X29mZnNldHMpKSB7DQorICAgICAgICBkZWxldGUgbV9wQ2FjaGVkQml0bWFwOw0KKyAgICAgICAgbV9wQ2FjaGVkQml0bWFwID0gTlVMTDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9GcmVlKG91dHB1dF9vZmZzZXRzKTsNCisgICAgcEpweE1vZHVsZS0+RGVzdHJveURlY29kZXIoY3R4KTsNCisgICAgaWYgKG1fcENvbG9yU3BhY2UgJiYgbV9wQ29sb3JTcGFjZS0+R2V0RmFtaWx5KCkgPT0gUERGQ1NfSU5ERVhFRCAmJiBtX2JwYyA8IDgpIHsNCisgICAgICAgIGludCBzY2FsZSA9IDggLSBtX2JwYzsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICBGWF9MUEJZVEUgc2NhbmxpbmUgPSAoRlhfTFBCWVRFKW1fcENhY2hlZEJpdG1hcC0+R2V0U2NhbmxpbmUocm93KTsNCisgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgKnNjYW5saW5lID0gKCpzY2FubGluZSkgPj4gc2NhbGU7DQorICAgICAgICAgICAgICAgIHNjYW5saW5lKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fYnBjID0gODsNCit9DQordm9pZCBDUERGX0RJQlNvdXJjZTo6TG9hZEpiaWcyQml0bWFwKCkNCit7DQorICAgIElDb2RlY19KYmlnMk1vZHVsZSogcEpiaWcyTW9kdWxlID0gQ1BERl9Nb2R1bGVNZ3I6OkdldCgpLT5HZXRKYmlnMk1vZHVsZSgpOw0KKyAgICBpZiAocEpiaWcyTW9kdWxlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX1N0cmVhbUFjYyogcEdsb2JhbFN0cmVhbSA9IE5VTEw7DQorICAgIGlmIChtX3BTdHJlYW1BY2MtPkdldEltYWdlUGFyYW0oKSkgew0KKyAgICAgICAgQ1BERl9TdHJlYW0qIHBHbG9iYWxzID0gbV9wU3RyZWFtQWNjLT5HZXRJbWFnZVBhcmFtKCktPkdldFN0cmVhbShGWF9CU1RSQygiSkJJRzJHbG9iYWxzIikpOw0KKyAgICAgICAgaWYgKHBHbG9iYWxzKSB7DQorICAgICAgICAgICAgcEdsb2JhbFN0cmVhbSA9IEZYX05FVyBDUERGX1N0cmVhbUFjYzsNCisgICAgICAgICAgICBwR2xvYmFsU3RyZWFtLT5Mb2FkQWxsRGF0YShwR2xvYmFscywgRkFMU0UpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fcENhY2hlZEJpdG1hcCA9IEZYX05FVyBDRlhfRElCaXRtYXA7DQorICAgIGlmICghbV9wQ2FjaGVkQml0bWFwLT5DcmVhdGUobV9XaWR0aCwgbV9IZWlnaHQsIG1fYkltYWdlTWFzayA/IEZYRElCXzFicHBNYXNrIDogRlhESUJfMWJwcFJnYikpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgcmV0ID0gcEpiaWcyTW9kdWxlLT5EZWNvZGUobV9XaWR0aCwgbV9IZWlnaHQsIG1fcFN0cmVhbUFjYy0+R2V0RGF0YSgpLCBtX3BTdHJlYW1BY2MtPkdldFNpemUoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBHbG9iYWxTdHJlYW0gPyBwR2xvYmFsU3RyZWFtLT5HZXREYXRhKCkgOiBOVUxMLCBwR2xvYmFsU3RyZWFtID8gcEdsb2JhbFN0cmVhbS0+R2V0U2l6ZSgpIDogMCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcENhY2hlZEJpdG1hcC0+R2V0QnVmZmVyKCksIG1fcENhY2hlZEJpdG1hcC0+R2V0UGl0Y2goKSk7DQorICAgIGlmIChyZXQgPCAwKSB7DQorICAgICAgICBkZWxldGUgbV9wQ2FjaGVkQml0bWFwOw0KKyAgICAgICAgbV9wQ2FjaGVkQml0bWFwID0gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAocEdsb2JhbFN0cmVhbSkgew0KKyAgICAgICAgZGVsZXRlIHBHbG9iYWxTdHJlYW07DQorICAgIH0NCisgICAgbV9icGMgPSAxOw0KKyAgICBtX25Db21wb25lbnRzID0gMTsNCit9DQorQ1BERl9ESUJTb3VyY2UqIENQREZfRElCU291cmNlOjpMb2FkTWFzayhGWF9EV09SRCYgTWF0dGVDb2xvcikNCit7DQorICAgIE1hdHRlQ29sb3IgPSAweGZmZmZmZmZmOw0KKyAgICBDUERGX1N0cmVhbSogcFNvZnRNYXNrID0gbV9wRGljdC0+R2V0U3RyZWFtKEZYX0JTVFJDKCJTTWFzayIpKTsNCisgICAgaWYgKHBTb2Z0TWFzaykgew0KKyAgICAgICAgQ1BERl9BcnJheSogcE1hdHRlID0gcFNvZnRNYXNrLT5HZXREaWN0KCktPkdldEFycmF5KEZYX0JTVFJDKCJNYXR0ZSIpKTsNCisgICAgICAgIGlmIChwTWF0dGUgIT0gTlVMTCAmJiBtX3BDb2xvclNwYWNlICYmIChGWF9EV09SRCltX3BDb2xvclNwYWNlLT5Db3VudENvbXBvbmVudHMoKSA8PSBtX25Db21wb25lbnRzKSB7DQorICAgICAgICAgICAgRlhfRkxPQVQqIHBDb2xvciA9IEZYX0FsbG9jKEZYX0ZMT0FULCBtX25Db21wb25lbnRzKTsNCisgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgbV9uQ29tcG9uZW50czsgaSArKykgew0KKyAgICAgICAgICAgICAgICBwQ29sb3JbaV0gPSBwTWF0dGUtPkdldEZsb2F0KGkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9GTE9BVCBSLCBHLCBCOw0KKyAgICAgICAgICAgIG1fcENvbG9yU3BhY2UtPkdldFJHQihwQ29sb3IsIFIsIEcsIEIpOw0KKyAgICAgICAgICAgIEZYX0ZyZWUocENvbG9yKTsNCisgICAgICAgICAgICBNYXR0ZUNvbG9yID0gRlhBUkdCX01BS0UoMCwgRlhTWVNfcm91bmQoUiAqIDI1NSksIEZYU1lTX3JvdW5kKEcgKiAyNTUpLCBGWFNZU19yb3VuZChCICogMjU1KSk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gTG9hZE1hc2tESUIocFNvZnRNYXNrKTsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcE1hc2sgPSBtX3BEaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIk1hc2siKSk7DQorICAgIGlmIChwTWFzayA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAocE1hc2stPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICByZXR1cm4gTG9hZE1hc2tESUIoKENQREZfU3RyZWFtKilwTWFzayk7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK2ludAlDUERGX0RJQlNvdXJjZTo6U3RyYXRMb2FkTWFzaygpDQorew0KKyAgICBtX01hdHRlQ29sb3IgPSAweGZmZmZmZmZmOw0KKyAgICBtX3BNYXNrU3RyZWFtID0gbV9wRGljdC0+R2V0U3RyZWFtKEZYX0JTVFJDKCJTTWFzayIpKTsNCisgICAgaWYgKG1fcE1hc2tTdHJlYW0pIHsNCisgICAgICAgIENQREZfQXJyYXkqIHBNYXR0ZSA9IG1fcE1hc2tTdHJlYW0tPkdldERpY3QoKS0+R2V0QXJyYXkoRlhfQlNUUkMoIk1hdHRlIikpOw0KKyAgICAgICAgaWYgKHBNYXR0ZSAhPSBOVUxMICYmIG1fcENvbG9yU3BhY2UgJiYgKEZYX0RXT1JEKW1fcENvbG9yU3BhY2UtPkNvdW50Q29tcG9uZW50cygpIDw9IG1fbkNvbXBvbmVudHMpIHsNCisgICAgICAgICAgICBGWF9GTE9BVCBSLCBHLCBCOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUKiBwQ29sb3IgPSBGWF9BbGxvYyhGWF9GTE9BVCwgbV9uQ29tcG9uZW50cyk7DQorICAgICAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IG1fbkNvbXBvbmVudHM7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgcENvbG9yW2ldID0gcE1hdHRlLT5HZXRGbG9hdChpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wQ29sb3JTcGFjZS0+R2V0UkdCKHBDb2xvciwgUiwgRywgQik7DQorICAgICAgICAgICAgRlhfRnJlZShwQ29sb3IpOw0KKyAgICAgICAgICAgIG1fTWF0dGVDb2xvciA9IEZYQVJHQl9NQUtFKDAsIEZYU1lTX3JvdW5kKFIgKiAyNTUpLCBGWFNZU19yb3VuZChHICogMjU1KSwgRlhTWVNfcm91bmQoQiAqIDI1NSkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFN0YXJ0TG9hZE1hc2tESUIoKTsNCisgICAgfQ0KKyAgICBtX3BNYXNrU3RyZWFtID0gbV9wRGljdC0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJNYXNrIikpOw0KKyAgICBpZiAobV9wTWFza1N0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICBpZiAobV9wTWFza1N0cmVhbS0+R2V0VHlwZSgpID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIHJldHVybiBTdGFydExvYWRNYXNrRElCKCk7DQorICAgIH0NCisgICAgcmV0dXJuIDE7DQorfQ0KK2ludAlDUERGX0RJQlNvdXJjZTo6Q29udGludWVMb2FkTWFza0RJQihJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIGlmIChtX3BNYXNrID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIGludCByZXQgPSBtX3BNYXNrLT5Db250aW51ZUxvYWRESUJTb3VyY2UocFBhdXNlKTsNCisgICAgaWYgKHJldCA9PSAyKSB7DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorICAgIGlmIChtX3BDb2xvclNwYWNlICYmIG1fYlN0ZENTKSB7DQorICAgICAgICBtX3BDb2xvclNwYWNlLT5FbmFibGVTdGRDb252ZXJzaW9uKEZBTFNFKTsNCisgICAgfQ0KKyAgICBpZiAoIXJldCkgew0KKyAgICAgICAgZGVsZXRlIG1fcE1hc2s7DQorICAgICAgICBtX3BNYXNrID0gTlVMTDsNCisgICAgICAgIHJldHVybiByZXQ7DQorICAgIH0NCisgICAgcmV0dXJuIDE7DQorfQ0KK0NQREZfRElCU291cmNlKglDUERGX0RJQlNvdXJjZTo6RGV0YWNoTWFzaygpDQorew0KKyAgICBDUERGX0RJQlNvdXJjZSogcERJQlNvdXJjZSA9IG1fcE1hc2s7DQorICAgIG1fcE1hc2sgPSBOVUxMOw0KKyAgICByZXR1cm4gcERJQlNvdXJjZTsNCit9DQorQ1BERl9ESUJTb3VyY2UqIENQREZfRElCU291cmNlOjpMb2FkTWFza0RJQihDUERGX1N0cmVhbSogcE1hc2spDQorew0KKyAgICBDUERGX0RJQlNvdXJjZSogcE1hc2tTb3VyY2UgPSBGWF9ORVcgQ1BERl9ESUJTb3VyY2U7DQorICAgIGlmICghcE1hc2tTb3VyY2UtPkxvYWQobV9wRG9jdW1lbnQsIHBNYXNrLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBUUlVFKSkgew0KKyAgICAgICAgZGVsZXRlIHBNYXNrU291cmNlOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBNYXNrU291cmNlOw0KK30NCitpbnQgQ1BERl9ESUJTb3VyY2U6OlN0YXJ0TG9hZE1hc2tESUIoKQ0KK3sNCisgICAgbV9wTWFzayA9IEZYX05FVyBDUERGX0RJQlNvdXJjZTsNCisgICAgaW50IHJldCA9IG1fcE1hc2stPlN0YXJ0TG9hZERJQlNvdXJjZShtX3BEb2N1bWVudCwgKENQREZfU3RyZWFtKiltX3BNYXNrU3RyZWFtLCBGQUxTRSwgTlVMTCwgTlVMTCwgVFJVRSk7DQorICAgIGlmIChyZXQgPT0gMikgew0KKyAgICAgICAgaWYgKG1fU3RhdHVzID09IDApIHsNCisgICAgICAgICAgICBtX1N0YXR1cyA9IDI7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMjsNCisgICAgfQ0KKyAgICBpZiAoIXJldCkgew0KKyAgICAgICAgZGVsZXRlIG1fcE1hc2s7DQorICAgICAgICBtX3BNYXNrID0gTlVMTDsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIHJldHVybiAxOw0KK30NCit2b2lkIENQREZfRElCU291cmNlOjpMb2FkUGFsZXR0ZSgpDQorew0KKyAgICBpZiAobV9icGMgKiBtX25Db21wb25lbnRzID4gOCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX3BDb2xvclNwYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9icGMgKiBtX25Db21wb25lbnRzID09IDEpIHsNCisgICAgICAgIGlmIChtX2JEZWZhdWx0RGVjb2RlICYmIChtX0ZhbWlseSA9PSBQREZDU19ERVZJQ0VHUkFZIHx8IG1fRmFtaWx5ID09IFBERkNTX0RFVklDRVJHQikpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9wQ29sb3JTcGFjZS0+Q291bnRDb21wb25lbnRzKCkgPiAzKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRkxPQVQgY29sb3JfdmFsdWVzWzNdOw0KKyAgICAgICAgY29sb3JfdmFsdWVzWzBdID0gbV9wQ29tcERhdGFbMF0ubV9EZWNvZGVNaW47DQorICAgICAgICBjb2xvcl92YWx1ZXNbMV0gPSBjb2xvcl92YWx1ZXNbMl0gPSBjb2xvcl92YWx1ZXNbMF07DQorICAgICAgICBGWF9GTE9BVCBSLCBHLCBCOw0KKyAgICAgICAgbV9wQ29sb3JTcGFjZS0+R2V0UkdCKGNvbG9yX3ZhbHVlcywgUiwgRywgQik7DQorICAgICAgICBGWF9BUkdCIGFyZ2IwID0gQXJnYkVuY29kZSgyNTUsIEZYU1lTX3JvdW5kKFIgKiAyNTUpLCBGWFNZU19yb3VuZChHICogMjU1KSwgRlhTWVNfcm91bmQoQiAqIDI1NSkpOw0KKyAgICAgICAgY29sb3JfdmFsdWVzWzBdICs9IG1fcENvbXBEYXRhWzBdLm1fRGVjb2RlU3RlcDsNCisgICAgICAgIGNvbG9yX3ZhbHVlc1sxXSArPSBtX3BDb21wRGF0YVswXS5tX0RlY29kZVN0ZXA7DQorICAgICAgICBjb2xvcl92YWx1ZXNbMl0gKz0gbV9wQ29tcERhdGFbMF0ubV9EZWNvZGVTdGVwOw0KKyAgICAgICAgbV9wQ29sb3JTcGFjZS0+R2V0UkdCKGNvbG9yX3ZhbHVlcywgUiwgRywgQik7DQorICAgICAgICBGWF9BUkdCIGFyZ2IxID0gQXJnYkVuY29kZSgyNTUsIEZYU1lTX3JvdW5kKFIgKiAyNTUpLCBGWFNZU19yb3VuZChHICogMjU1KSwgRlhTWVNfcm91bmQoQiAqIDI1NSkpOw0KKyAgICAgICAgaWYgKGFyZ2IwICE9IDB4RkYwMDAwMDAgfHwgYXJnYjEgIT0gMHhGRkZGRkZGRikgew0KKyAgICAgICAgICAgIFNldFBhbGV0dGVBcmdiKDAsIGFyZ2IwKTsNCisgICAgICAgICAgICBTZXRQYWxldHRlQXJnYigxLCBhcmdiMSk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fcENvbG9yU3BhY2UgPT0gQ1BERl9Db2xvclNwYWNlOjpHZXRTdG9ja0NTKFBERkNTX0RFVklDRUdSQVkpICYmIG1fYnBjID09IDggJiYgbV9iRGVmYXVsdERlY29kZSkgew0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaW50IHBhbGV0dGVfY291bnQgPSAxIDw8IChtX2JwYyAqIG1fbkNvbXBvbmVudHMpOw0KKyAgICAgICAgQ0ZYX0ZpeGVkQnVmR3JvdzxGWF9GTE9BVCwgMTY+IGNvbG9yX3ZhbHVlcyhtX25Db21wb25lbnRzKTsNCisgICAgICAgIEZYX0ZMT0FUKiBjb2xvcl92YWx1ZSA9IGNvbG9yX3ZhbHVlczsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFsZXR0ZV9jb3VudDsgaSArKykgew0KKyAgICAgICAgICAgIGludCBjb2xvcl9kYXRhID0gaTsNCisgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGogPSAwOyBqIDwgbV9uQ29tcG9uZW50czsgaiArKykgew0KKyAgICAgICAgICAgICAgICBpbnQgZW5jb2RlZF9jb21wb25lbnQgPSBjb2xvcl9kYXRhICUgKDEgPDwgbV9icGMpOw0KKyAgICAgICAgICAgICAgICBjb2xvcl9kYXRhIC89IDEgPDwgbV9icGM7DQorICAgICAgICAgICAgICAgIGNvbG9yX3ZhbHVlW2pdID0gbV9wQ29tcERhdGFbal0ubV9EZWNvZGVNaW4gKyBtX3BDb21wRGF0YVtqXS5tX0RlY29kZVN0ZXAgKiBlbmNvZGVkX2NvbXBvbmVudDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRkxPQVQgUiA9IDAsIEcgPSAwLCBCID0gMDsNCisgICAgICAgICAgICBpZiAobV9uQ29tcG9uZW50cyA9PSAxICYmIG1fRmFtaWx5ID09IFBERkNTX0lDQ0JBU0VEICYmIG1fcENvbG9yU3BhY2UtPkNvdW50Q29tcG9uZW50cygpID4gMSkgew0KKyAgICAgICAgICAgICAgICBpbnQgbkNvbXBvbmVudHMgPSBtX3BDb2xvclNwYWNlLT5Db3VudENvbXBvbmVudHMoKTsNCisgICAgICAgICAgICAgICAgRlhfRkxPQVQqIHRlbXBfYnVmID0gRlhfQWxsb2MoRlhfRkxPQVQsIG5Db21wb25lbnRzKTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuQ29tcG9uZW50czsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICB0ZW1wX2J1ZltpXSA9ICpjb2xvcl92YWx1ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX3BDb2xvclNwYWNlLT5HZXRSR0IodGVtcF9idWYsIFIsIEcsIEIpOw0KKyAgICAgICAgICAgICAgICBGWF9GcmVlKHRlbXBfYnVmKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBtX3BDb2xvclNwYWNlLT5HZXRSR0IoY29sb3JfdmFsdWUsIFIsIEcsIEIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBTZXRQYWxldHRlQXJnYihpLCBBcmdiRW5jb2RlKDI1NSwgRlhTWVNfcm91bmQoUiAqIDI1NSksIEZYU1lTX3JvdW5kKEcgKiAyNTUpLCBGWFNZU19yb3VuZChCICogMjU1KSkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KKw0KK0ZYX0RXT1JEIENQREZfRElCU291cmNlOjpHZXRWYWxpZEJwcCgpIGNvbnN0DQorew0KKyAgICBGWF9EV09SRCBicGMgPSBtX2JwYzsNCisgICAgQ1BERl9PYmplY3QgKiBwRmlsdGVyID0gbV9wRGljdC0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJGaWx0ZXIiKSk7DQorICAgIGlmKHBGaWx0ZXIpDQorICAgIHsNCisgICAgICAgIGlmKHBGaWx0ZXItPkdldFR5cGUoKSA9PSBQREZPQkpfTkFNRSkNCisgICAgICAgIHsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBmaWx0ZXIgPSBwRmlsdGVyLT5HZXRTdHJpbmcoKTsNCisgICAgICAgICAgICBpZihmaWx0ZXIgPT0gRlhfQlNUUkMoIkNDSVRURmF4RGVjb2RlIikgfHwgZmlsdGVyID09IEZYX0JTVFJDKCJKQklHMkRlY29kZSIpICkNCisgICAgICAgICAgICAgICAgYnBjID0gMTsNCisgICAgICAgICAgICBpZihmaWx0ZXIgPT0gRlhfQlNUUkMoIlJ1bkxlbmd0aERlY29kZSIpIHx8IGZpbHRlciA9PSBGWF9CU1RSQygiRENURGVjb2RlIikgKQ0KKyAgICAgICAgICAgICAgICBicGMgPSA4Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZSBpZiAocEZpbHRlci0+R2V0VHlwZSgpID09IFBERk9CSl9BUlJBWSkNCisgICAgICAgIHsNCisgICAgICAgICAgICAgQ1BERl9BcnJheSAqcEFycmF5ID0gKENQREZfQXJyYXkgKikgcEZpbHRlcjsNCisgICAgICAgICAgICAgaWYoIHBBcnJheS0+R2V0U3RyaW5nKHBBcnJheS0+R2V0Q291bnQoKSAtMSkgPT0gRlhfQlNUUkMoIkNDSVRURmFjRGVjb2RlIikgfHwNCisgICAgICAgICAgICAgICAgIHBBcnJheS0+R2V0U3RyaW5nKHBBcnJheS0+R2V0Q291bnQoKSAtMSkgPT0gRlhfQlNUUkMoIkpCSUcyRGVjb2RlIikgKQ0KKyAgICAgICAgICAgICAgICAgYnBjID0gMTsNCisNCisgICAgICAgICAgICAgIGlmKCBwQXJyYXktPkdldFN0cmluZyhwQXJyYXktPkdldENvdW50KCkgLTEpID09IEZYX0JTVFJDKCJSdW5MZW5ndGhEZWNvZGUiKSB8fA0KKyAgICAgICAgICAgICAgICAgcEFycmF5LT5HZXRTdHJpbmcocEFycmF5LT5HZXRDb3VudCgpIC0xKSA9PSBGWF9CU1RSQygiRENURGVjb2RlIikgKQ0KKyAgICAgICAgICAgICAgICAgYnBjID0gODsNCisgICAgICAgICB9DQorICAgICB9DQorDQorICAgIHJldHVybiBicGM7DQorfQ0KKw0KKyNkZWZpbmUgTk9STUFMQ09MT1JfTUFYKGNvbG9yLCBtYXgpIChjb2xvcikgPiAobWF4KSA/IChtYXgpIDogKGNvbG9yKSA8IDAgPyAwIDogKGNvbG9yKTsNCit2b2lkIENQREZfRElCU291cmNlOjpUcmFuc2xhdGVTY2FubGluZTI0YnBwKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4pIGNvbnN0DQorew0KKyAgICBpbnQgbWF4X2RhdGEgPSAoMSA8PCBtX2JwYykgLSAxOw0KKyAgICBpZiAobV9iRGVmYXVsdERlY29kZSkgew0KKyAgICAgICAgaWYgKG1fRmFtaWx5ID09IFBERkNTX0RFVklDRVJHQiB8fCBtX0ZhbWlseSA9PSBQREZDU19DQUxSR0IpIHsNCisgICAgICAgICAgICBpZiAobV9icGMgPT0gMTYpIHsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3RfcG9zID0gZGVzdF9zY2FuOw0KKyAgICAgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19wb3MgPSBzcmNfc2NhbjsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9XaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBzcmNfcG9zWzRdOw0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX3Bvc1syXTsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfcG9zOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3BvcyArPSA2Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX2JwYyA9PSA4KSB7DQorICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3BvcyA9IGRlc3Rfc2NhbjsNCisgICAgICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfcG9zID0gc3JjX3NjYW47DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG1fV2lkdGg7IGNvbHVtbiArKykgew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX3Bvc1syXTsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IHNyY19wb3NbMV07DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3BvczsNCisgICAgICAgICAgICAgICAgICAgIHNyY19wb3MgKz0gMzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGludCBzcmNfYml0X3BvcyA9IDA7DQorICAgICAgICAgICAgICAgIGludCBkZXN0X2J5dGVfcG9zID0gMDsNCisNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgYnBjID0gR2V0VmFsaWRCcHAoKTsNCisNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgbV9XaWR0aDsgY29sdW1uICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgUiA9IF9HZXRCaXRzOChzcmNfc2Nhbiwgc3JjX2JpdF9wb3MsIGJwYyk7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYml0X3BvcyArPSBicGM7DQorICAgICAgICAgICAgICAgICAgICBpbnQgRyA9IF9HZXRCaXRzOChzcmNfc2Nhbiwgc3JjX2JpdF9wb3MsIGJwYyk7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYml0X3BvcyArPSBicGM7DQorICAgICAgICAgICAgICAgICAgICBpbnQgQiA9IF9HZXRCaXRzOChzcmNfc2Nhbiwgc3JjX2JpdF9wb3MsIGJwYyk7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYml0X3BvcyArPSBicGM7DQorICAgICAgICAgICAgICAgICAgICBSID0gTk9STUFMQ09MT1JfTUFYKFIsIG1heF9kYXRhKTsNCisgICAgICAgICAgICAgICAgICAgIEcgPSBOT1JNQUxDT0xPUl9NQVgoRywgbWF4X2RhdGEpOw0KKyAgICAgICAgICAgICAgICAgICAgQiA9IE5PUk1BTENPTE9SX01BWChCLCBtYXhfZGF0YSk7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9ieXRlX3Bvc10gPSBCICogMjU1IC8gbWF4X2RhdGE7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9ieXRlX3BvcyArIDFdID0gRyAqIDI1NSAvIG1heF9kYXRhOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfYnl0ZV9wb3MgKyAyXSA9IFIgKiAyNTUgLyBtYXhfZGF0YTsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYnl0ZV9wb3MgKz0gMzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9IGVsc2UgaWYgKG1fYnBjID09IDgpIHsNCisJCQlpZiAobV9uQ29tcG9uZW50cyA9PSBtX3BDb2xvclNwYWNlLT5Db3VudENvbXBvbmVudHMoKSkNCisJCQkJbV9wQ29sb3JTcGFjZS0+VHJhbnNsYXRlSW1hZ2VMaW5lKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIG1fV2lkdGgsIG1fV2lkdGgsIG1fSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2JMb2FkTWFzayAmJiBtX0dyb3VwRmFtaWx5ID09IFBERkNTX0RFVklDRUNNWUsgJiYgbV9GYW1pbHkgPT0gUERGQ1NfREVWSUNFQ01ZSyk7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENGWF9GaXhlZEJ1Zkdyb3c8RlhfRkxPQVQsIDE2PiBjb2xvcl92YWx1ZXMxKG1fbkNvbXBvbmVudHMpOw0KKyAgICBGWF9GTE9BVCogY29sb3JfdmFsdWVzID0gY29sb3JfdmFsdWVzMTsNCisgICAgRlhfRkxPQVQgUiwgRywgQjsNCisgICAgaWYgKG1fYnBjID09IDgpIHsNCisgICAgICAgIGludCBzcmNfYnl0ZV9wb3MgPSAwOw0KKyAgICAgICAgaW50IGRlc3RfYnl0ZV9wb3MgPSAwOw0KKyAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgbV9XaWR0aDsgY29sdW1uICsrKSB7DQorICAgICAgICAgICAgZm9yIChGWF9EV09SRCBjb2xvciA9IDA7IGNvbG9yIDwgbV9uQ29tcG9uZW50czsgY29sb3IgKyspIHsNCisgICAgICAgICAgICAgICAgaW50IGRhdGEgPSBzcmNfc2NhbltzcmNfYnl0ZV9wb3MgKytdOw0KKyAgICAgICAgICAgICAgICBjb2xvcl92YWx1ZXNbY29sb3JdID0gbV9wQ29tcERhdGFbY29sb3JdLm1fRGVjb2RlTWluICsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcENvbXBEYXRhW2NvbG9yXS5tX0RlY29kZVN0ZXAgKiBkYXRhOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9iTG9hZE1hc2sgJiYgbV9Hcm91cEZhbWlseSA9PSBQREZDU19ERVZJQ0VDTVlLICYmIG1fRmFtaWx5ID09IFBERkNTX0RFVklDRUNNWUspIHsNCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgayA9IDEuMGYgLSBjb2xvcl92YWx1ZXNbM107DQorICAgICAgICAgICAgICAgIFIgPSAoMS4wZiAtIGNvbG9yX3ZhbHVlc1swXSkgKiBrOw0KKyAgICAgICAgICAgICAgICBHID0gKDEuMGYgLSBjb2xvcl92YWx1ZXNbMV0pICogazsNCisgICAgICAgICAgICAgICAgQiA9ICgxLjBmIC0gY29sb3JfdmFsdWVzWzJdKSAqIGs7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9wQ29sb3JTcGFjZS0+R2V0UkdCKGNvbG9yX3ZhbHVlcywgUiwgRywgQik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIFIgPSBOT1JNQUxDT0xPUl9NQVgoUiwgMSk7DQorICAgICAgICAgICAgRyA9IE5PUk1BTENPTE9SX01BWChHLCAxKTsNCisgICAgICAgICAgICBCID0gTk9STUFMQ09MT1JfTUFYKEIsIDEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbltkZXN0X2J5dGVfcG9zXSA9IChGWF9JTlQzMikoQiAqIDI1NSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfYnl0ZV9wb3MgKyAxXSA9IChGWF9JTlQzMikoRyAqIDI1NSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfYnl0ZV9wb3MgKyAyXSA9IChGWF9JTlQzMikoUiAqIDI1NSk7DQorICAgICAgICAgICAgZGVzdF9ieXRlX3BvcyArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaW50IHNyY19iaXRfcG9zID0gMDsNCisgICAgICAgIGludCBkZXN0X2J5dGVfcG9zID0gMDsNCisgICAgICAgIA0KKyAgICAgICAgRlhfRFdPUkQgYnBjID0gR2V0VmFsaWRCcHAoKTsNCisNCisgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG1fV2lkdGg7IGNvbHVtbiArKykgew0KKyAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgY29sb3IgPSAwOyBjb2xvciA8IG1fbkNvbXBvbmVudHM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgICAgIGludCBkYXRhID0gX0dldEJpdHM4KHNyY19zY2FuLCBzcmNfYml0X3BvcywgYnBjKTsNCisgICAgICAgICAgICAgICAgY29sb3JfdmFsdWVzW2NvbG9yXSA9IG1fcENvbXBEYXRhW2NvbG9yXS5tX0RlY29kZU1pbiArDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BDb21wRGF0YVtjb2xvcl0ubV9EZWNvZGVTdGVwICogZGF0YTsNCisgICAgICAgICAgICAgICAgc3JjX2JpdF9wb3MgKz0gYnBjOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9iTG9hZE1hc2sgJiYgbV9Hcm91cEZhbWlseSA9PSBQREZDU19ERVZJQ0VDTVlLICYmIG1fRmFtaWx5ID09IFBERkNTX0RFVklDRUNNWUspIHsNCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgayA9IDEuMGYgLSBjb2xvcl92YWx1ZXNbM107DQorICAgICAgICAgICAgICAgIFIgPSAoMS4wZiAtIGNvbG9yX3ZhbHVlc1swXSkgKiBrOw0KKyAgICAgICAgICAgICAgICBHID0gKDEuMGYgLSBjb2xvcl92YWx1ZXNbMV0pICogazsNCisgICAgICAgICAgICAgICAgQiA9ICgxLjBmIC0gY29sb3JfdmFsdWVzWzJdKSAqIGs7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9wQ29sb3JTcGFjZS0+R2V0UkdCKGNvbG9yX3ZhbHVlcywgUiwgRywgQik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIFIgPSBOT1JNQUxDT0xPUl9NQVgoUiwgMSk7DQorICAgICAgICAgICAgRyA9IE5PUk1BTENPTE9SX01BWChHLCAxKTsNCisgICAgICAgICAgICBCID0gTk9STUFMQ09MT1JfTUFYKEIsIDEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbltkZXN0X2J5dGVfcG9zXSA9IChGWF9JTlQzMikoQiAqIDI1NSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfYnl0ZV9wb3MgKyAxXSA9IChGWF9JTlQzMikoRyAqIDI1NSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfYnl0ZV9wb3MgKyAyXSA9IChGWF9JTlQzMikoUiAqIDI1NSk7DQorICAgICAgICAgICAgZGVzdF9ieXRlX3BvcyArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0xQQllURSBDUERGX0RJQlNvdXJjZTo6R2V0QnVmZmVyKCkgY29uc3QNCit7DQorICAgIGlmIChtX3BDYWNoZWRCaXRtYXApIHsNCisgICAgICAgIHJldHVybiBtX3BDYWNoZWRCaXRtYXAtPkdldEJ1ZmZlcigpOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitGWF9MUENCWVRFIENQREZfRElCU291cmNlOjpHZXRTY2FubGluZShpbnQgbGluZSkgY29uc3QNCit7DQorICAgIEZYX0RXT1JEIHNyY19waXRjaCA9IChtX1dpZHRoICogbV9icGMgKiBtX25Db21wb25lbnRzICsgNykgLyA4Ow0KKyAgICBGWF9MUENCWVRFIHBTcmNMaW5lID0gTlVMTDsNCisgICAgaWYgKG1fcENhY2hlZEJpdG1hcCkgew0KKyAgICAgICAgaWYgKGxpbmUgPj0gbV9wQ2FjaGVkQml0bWFwLT5HZXRIZWlnaHQoKSkgew0KKyAgICAgICAgICAgIGxpbmUgPSBtX3BDYWNoZWRCaXRtYXAtPkdldEhlaWdodCgpIC0gMTsNCisgICAgICAgIH0NCisgICAgICAgIHBTcmNMaW5lID0gbV9wQ2FjaGVkQml0bWFwLT5HZXRTY2FubGluZShsaW5lKTsNCisgICAgfSBlbHNlIGlmIChtX3BEZWNvZGVyKSB7DQorICAgICAgICBwU3JjTGluZSA9IG1fcERlY29kZXItPkdldFNjYW5saW5lKGxpbmUpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKG1fcFN0cmVhbUFjYy0+R2V0U2l6ZSgpID49IChsaW5lICsgMSkgKiBzcmNfcGl0Y2gpIHsNCisgICAgICAgICAgICBwU3JjTGluZSA9IG1fcFN0cmVhbUFjYy0+R2V0RGF0YSgpICsgbGluZSAqIHNyY19waXRjaDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAocFNyY0xpbmUgPT0gTlVMTCkgew0KKyAgICAgICAgRlhfTFBCWVRFIHBMaW5lQnVmID0gbV9wTWFza2VkTGluZSA/IG1fcE1hc2tlZExpbmUgOiBtX3BMaW5lQnVmOw0KKyAgICAgICAgRlhTWVNfbWVtc2V0OChwTGluZUJ1ZiwgMHhmZiwgbV9QaXRjaCk7DQorICAgICAgICByZXR1cm4gcExpbmVCdWY7DQorICAgIH0NCisgICAgaWYgKG1fYnBjICogbV9uQ29tcG9uZW50cyA9PSAxKSB7DQorICAgICAgICBpZiAobV9iSW1hZ2VNYXNrICYmIG1fYkRlZmF1bHREZWNvZGUpIHsNCisgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgc3JjX3BpdGNoOyBpICsrKSB7DQorICAgICAgICAgICAgICAgIG1fcExpbmVCdWZbaV0gPSB+cFNyY0xpbmVbaV07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChtX2JDb2xvcktleSkgew0KKyAgICAgICAgICAgIEZYX0RXT1JEIHJlc2V0X2FyZ2IsIHNldF9hcmdiOw0KKyAgICAgICAgICAgIHJlc2V0X2FyZ2IgPSBtX3BQYWxldHRlID8gbV9wUGFsZXR0ZVswXSA6IDB4ZmYwMDAwMDA7DQorICAgICAgICAgICAgc2V0X2FyZ2IgPSBtX3BQYWxldHRlID8gbV9wUGFsZXR0ZVsxXSA6IDB4ZmZmZmZmZmY7DQorICAgICAgICAgICAgaWYgKG1fcENvbXBEYXRhWzBdLm1fQ29sb3JLZXlNaW4gPT0gMCkgew0KKyAgICAgICAgICAgICAgICByZXNldF9hcmdiID0gMDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fcENvbXBEYXRhWzBdLm1fQ29sb3JLZXlNYXggPT0gMSkgew0KKyAgICAgICAgICAgICAgICBzZXRfYXJnYiA9IDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHNldF9hcmdiID0gRlhBUkdCX1RPRElCKHNldF9hcmdiKTsNCisgICAgICAgICAgICByZXNldF9hcmdiID0gRlhBUkdCX1RPRElCKHJlc2V0X2FyZ2IpOw0KKyAgICAgICAgICAgIEZYX0RXT1JEKiBkZXN0X3NjYW4gPSAoRlhfRFdPUkQqKW1fcE1hc2tlZExpbmU7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9XaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgIGlmIChwU3JjTGluZVtjb2wgLyA4XSAmICgxIDw8ICg3IC0gY29sICUgOCkpKSB7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gc2V0X2FyZ2I7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gcmVzZXRfYXJnYjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBtX3BNYXNrZWRMaW5lOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BMaW5lQnVmLCBwU3JjTGluZSwgc3JjX3BpdGNoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBtX3BMaW5lQnVmOw0KKyAgICB9DQorICAgIGlmIChtX2JwYyAqIG1fbkNvbXBvbmVudHMgPD0gOCkgew0KKyAgICAgICAgaWYgKG1fYnBjID09IDgpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BMaW5lQnVmLCBwU3JjTGluZSwgc3JjX3BpdGNoKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaW50IHNyY19iaXRfcG9zID0gMDsNCisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1dpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgaW50IGNvbG9yX2luZGV4ID0gMDsNCisgICAgICAgICAgICAgICAgZm9yIChGWF9EV09SRCBjb2xvciA9IDA7IGNvbG9yIDwgbV9uQ29tcG9uZW50czsgY29sb3IgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGludCBkYXRhID0gX0dldEJpdHM4KHBTcmNMaW5lLCBzcmNfYml0X3BvcywgbV9icGMpOw0KKyAgICAgICAgICAgICAgICAgICAgY29sb3JfaW5kZXggfD0gZGF0YSA8PCAoY29sb3IgKiBtX2JwYyk7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYml0X3BvcyArPSBtX2JwYzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX3BMaW5lQnVmW2NvbF0gPSBjb2xvcl9pbmRleDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9iQ29sb3JLZXkpIHsNCisgICAgICAgICAgICBGWF9MUEJZVEUgcERlc3RQaXhlbCA9IG1fcE1hc2tlZExpbmU7DQorICAgICAgICAgICAgRlhfTFBDQllURSBwU3JjUGl4ZWwgPSBtX3BMaW5lQnVmOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGluZGV4ID0gKnBTcmNQaXhlbCsrOw0KKyAgICAgICAgICAgICAgICBpZiAobV9wUGFsZXR0ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgKnBEZXN0UGl4ZWwrKyA9IEZYQVJHQl9CKG1fcFBhbGV0dGVbaW5kZXhdKTsNCisgICAgICAgICAgICAgICAgICAgICpwRGVzdFBpeGVsKysgPSBGWEFSR0JfRyhtX3BQYWxldHRlW2luZGV4XSk7DQorICAgICAgICAgICAgICAgICAgICAqcERlc3RQaXhlbCsrID0gRlhBUkdCX1IobV9wUGFsZXR0ZVtpbmRleF0pOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgKnBEZXN0UGl4ZWwrKyA9IGluZGV4Ow0KKyAgICAgICAgICAgICAgICAgICAgKnBEZXN0UGl4ZWwrKyA9IGluZGV4Ow0KKyAgICAgICAgICAgICAgICAgICAgKnBEZXN0UGl4ZWwrKyA9IGluZGV4Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICpwRGVzdFBpeGVsID0gKGluZGV4IDwgbV9wQ29tcERhdGFbMF0ubV9Db2xvcktleU1pbiB8fCBpbmRleCA+IG1fcENvbXBEYXRhWzBdLm1fQ29sb3JLZXlNYXgpID8gMHhmZiA6IDA7DQorICAgICAgICAgICAgICAgIHBEZXN0UGl4ZWwgKysgOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gbV9wTWFza2VkTGluZTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBtX3BMaW5lQnVmOw0KKyAgICB9DQorICAgIGlmIChtX2JDb2xvcktleSkgew0KKyAgICAgICAgaWYgKG1fbkNvbXBvbmVudHMgPT0gMyAmJiBtX2JwYyA9PSA4KSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGFscGhhX2NoYW5uZWwgPSBtX3BNYXNrZWRMaW5lICsgMzsNCisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1dpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfTFBDQllURSBwUGl4ZWwgPSBwU3JjTGluZSArIGNvbCAqIDM7DQorICAgICAgICAgICAgICAgIGFscGhhX2NoYW5uZWxbY29sICogNF0gPSAocFBpeGVsWzBdIDwgbV9wQ29tcERhdGFbMF0ubV9Db2xvcktleU1pbiB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBQaXhlbFswXSA+IG1fcENvbXBEYXRhWzBdLm1fQ29sb3JLZXlNYXggfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUGl4ZWxbMV0gPCBtX3BDb21wRGF0YVsxXS5tX0NvbG9yS2V5TWluIHx8IHBQaXhlbFsxXSA+IG1fcENvbXBEYXRhWzFdLm1fQ29sb3JLZXlNYXggfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUGl4ZWxbMl0gPCBtX3BDb21wRGF0YVsyXS5tX0NvbG9yS2V5TWluIHx8IHBQaXhlbFsyXSA+IG1fcENvbXBEYXRhWzJdLm1fQ29sb3JLZXlNYXgpID8gMHhmZiA6IDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBGWFNZU19tZW1zZXQ4KG1fcE1hc2tlZExpbmUsIDB4ZmYsIG1fUGl0Y2gpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX3BDb2xvclNwYWNlKSB7DQorICAgICAgICBUcmFuc2xhdGVTY2FubGluZTI0YnBwKG1fcExpbmVCdWYsIHBTcmNMaW5lKTsNCisgICAgICAgIHBTcmNMaW5lID0gbV9wTGluZUJ1ZjsNCisgICAgfQ0KKyAgICBpZiAobV9iQ29sb3JLZXkpIHsNCisgICAgICAgIEZYX0xQQ0JZVEUgcFNyY1BpeGVsID0gcFNyY0xpbmU7DQorICAgICAgICBGWF9MUEJZVEUgcERlc3RQaXhlbCA9IG1fcE1hc2tlZExpbmU7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1dpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAqcERlc3RQaXhlbCsrID0gKnBTcmNQaXhlbCsrOw0KKyAgICAgICAgICAgICpwRGVzdFBpeGVsKysgPSAqcFNyY1BpeGVsKys7DQorICAgICAgICAgICAgKnBEZXN0UGl4ZWwrKyA9ICpwU3JjUGl4ZWwrKzsNCisgICAgICAgICAgICBwRGVzdFBpeGVsICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIG1fcE1hc2tlZExpbmU7DQorICAgIH0NCisgICAgcmV0dXJuIHBTcmNMaW5lOw0KK30NCitGWF9CT09MIENQREZfRElCU291cmNlOjpTa2lwVG9TY2FubGluZShpbnQgbGluZSwgSUZYX1BhdXNlKiBwUGF1c2UpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGVjb2Rlcikgew0KKyAgICAgICAgcmV0dXJuIG1fcERlY29kZXItPlNraXBUb1NjYW5saW5lKGxpbmUsIHBQYXVzZSk7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCit2b2lkIENQREZfRElCU291cmNlOjpEb3duU2FtcGxlU2NhbmxpbmUoaW50IGxpbmUsIEZYX0xQQllURSBkZXN0X3NjYW4sIGludCBkZXN0X2JwcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIEZYX0JPT0wgYkZsaXBYLCBpbnQgY2xpcF9sZWZ0LCBpbnQgY2xpcF93aWR0aCkgY29uc3QNCit7DQorICAgIEZYX0RXT1JEIHNyY193aWR0aCA9IG1fV2lkdGg7DQorICAgIEZYX0RXT1JEIHNyY19waXRjaCA9IChzcmNfd2lkdGggKiBtX2JwYyAqIG1fbkNvbXBvbmVudHMgKyA3KSAvIDg7DQorICAgIEZYX0xQQ0JZVEUgcFNyY0xpbmUgPSBOVUxMOw0KKyAgICBpZiAobV9wQ2FjaGVkQml0bWFwKSB7DQorICAgICAgICBwU3JjTGluZSA9IG1fcENhY2hlZEJpdG1hcC0+R2V0U2NhbmxpbmUobGluZSk7DQorICAgIH0gZWxzZSBpZiAobV9wRGVjb2Rlcikgew0KKyAgICAgICAgcFNyY0xpbmUgPSBtX3BEZWNvZGVyLT5HZXRTY2FubGluZShsaW5lKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChtX3BTdHJlYW1BY2MtPkdldFNpemUoKSA+PSAobGluZSArIDEpICogc3JjX3BpdGNoKSB7DQorICAgICAgICAgICAgcFNyY0xpbmUgPSBtX3BTdHJlYW1BY2MtPkdldERhdGEoKSArIGxpbmUgKiBzcmNfcGl0Y2g7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IG9yaWdfQnBwID0gbV9icGMgKiBtX25Db21wb25lbnRzIC8gODsNCisgICAgaW50IGRlc3RfQnBwID0gZGVzdF9icHAgLyA4Ow0KKyAgICBpZiAocFNyY0xpbmUgPT0gTlVMTCkgew0KKyAgICAgICAgRlhTWVNfbWVtc2V0MzIoZGVzdF9zY2FuLCAweGZmLCBkZXN0X0JwcCAqIGNsaXBfd2lkdGgpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9GaXhlZEJ1Zkdyb3c8RlhfQllURSwgMTI4PiB0ZW1wKG9yaWdfQnBwKTsNCisgICAgaWYgKG1fYnBjICogbV9uQ29tcG9uZW50cyA9PSAxKSB7DQorICAgICAgICBGWF9EV09SRCBzZXRfYXJnYiA9IChGWF9EV09SRCkgLSAxLCByZXNldF9hcmdiID0gMDsNCisgICAgICAgIGlmIChtX2JJbWFnZU1hc2spIHsNCisgICAgICAgICAgICBpZiAobV9iRGVmYXVsdERlY29kZSkgew0KKyAgICAgICAgICAgICAgICBzZXRfYXJnYiA9IDA7DQorICAgICAgICAgICAgICAgIHJlc2V0X2FyZ2IgPSAoRlhfRFdPUkQpIC0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKG1fYkNvbG9yS2V5KSB7DQorICAgICAgICAgICAgcmVzZXRfYXJnYiA9IG1fcFBhbGV0dGUgPyBtX3BQYWxldHRlWzBdIDogMHhmZjAwMDAwMDsNCisgICAgICAgICAgICBzZXRfYXJnYiA9IG1fcFBhbGV0dGUgPyBtX3BQYWxldHRlWzFdIDogMHhmZmZmZmZmZjsNCisgICAgICAgICAgICBpZiAobV9wQ29tcERhdGFbMF0ubV9Db2xvcktleU1pbiA9PSAwKSB7DQorICAgICAgICAgICAgICAgIHJlc2V0X2FyZ2IgPSAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9wQ29tcERhdGFbMF0ubV9Db2xvcktleU1heCA9PSAxKSB7DQorICAgICAgICAgICAgICAgIHNldF9hcmdiID0gMDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc2V0X2FyZ2IgPSBGWEFSR0JfVE9ESUIoc2V0X2FyZ2IpOw0KKyAgICAgICAgICAgIHJlc2V0X2FyZ2IgPSBGWEFSR0JfVE9ESUIocmVzZXRfYXJnYik7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjbGlwX3dpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIHNyY194ID0gKGNsaXBfbGVmdCArIGkpICogc3JjX3dpZHRoIC8gZGVzdF93aWR0aDsNCisgICAgICAgICAgICAgICAgaWYgKGJGbGlwWCkgew0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3ggPSBzcmNfd2lkdGggLSBzcmNfeCAtIDE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgc3JjX3ggJT0gc3JjX3dpZHRoOw0KKyAgICAgICAgICAgICAgICBpZiAocFNyY0xpbmVbc3JjX3ggLyA4XSAmICgxIDw8ICg3IC0gc3JjX3ggJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgICAgICgoRlhfRFdPUkQqKWRlc3Rfc2NhbilbaV0gPSBzZXRfYXJnYjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICgoRlhfRFdPUkQqKWRlc3Rfc2NhbilbaV0gPSByZXNldF9hcmdiOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKGRlc3RfQnBwID09IDEpIHsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcFBhbGV0dGUpIHsNCisgICAgICAgICAgICAgICAgcmVzZXRfYXJnYiA9IG1fcFBhbGV0dGVbMF07DQorICAgICAgICAgICAgICAgIHNldF9hcmdiID0gbV9wUGFsZXR0ZVsxXTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNsaXBfd2lkdGg7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9EV09SRCBzcmNfeCA9IChjbGlwX2xlZnQgKyBpKSAqIHNyY193aWR0aCAvIGRlc3Rfd2lkdGg7DQorICAgICAgICAgICAgaWYgKGJGbGlwWCkgew0KKyAgICAgICAgICAgICAgICBzcmNfeCA9IHNyY193aWR0aCAtIHNyY194IC0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3JjX3ggJT0gc3JjX3dpZHRoOw0KKyAgICAgICAgICAgIGludCBkZXN0X3BvcyA9IGkgKiBkZXN0X0JwcDsNCisgICAgICAgICAgICBpZiAocFNyY0xpbmVbc3JjX3ggLyA4XSAmICgxIDw8ICg3IC0gc3JjX3ggJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgaWYgKGRlc3RfQnBwID09IDEpIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbltkZXN0X3Bvc10gPSAoRlhfQllURSlzZXRfYXJnYjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZXN0X0JwcCA9PSAzKSB7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3NdID0gRlhBUkdCX0Ioc2V0X2FyZ2IpOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfcG9zICsgMV0gPSBGWEFSR0JfRyhzZXRfYXJnYik7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3MgKyAyXSA9IEZYQVJHQl9SKHNldF9hcmdiKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICooRlhfRFdPUkQqKShkZXN0X3NjYW4gKyBkZXN0X3BvcykgPSBzZXRfYXJnYjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmIChkZXN0X0JwcCA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3NdID0gKEZYX0JZVEUpcmVzZXRfYXJnYjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZXN0X0JwcCA9PSAzKSB7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3NdID0gRlhBUkdCX0IocmVzZXRfYXJnYik7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3MgKyAxXSA9IEZYQVJHQl9HKHJlc2V0X2FyZ2IpOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfcG9zICsgMl0gPSBGWEFSR0JfUihyZXNldF9hcmdiKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICooRlhfRFdPUkQqKShkZXN0X3NjYW4gKyBkZXN0X3BvcykgPSByZXNldF9hcmdiOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9IGVsc2UgaWYgKG1fYnBjICogbV9uQ29tcG9uZW50cyA8PSA4KSB7DQorICAgICAgICBpZiAobV9icGMgPCA4KSB7DQorICAgICAgICAgICAgaW50IHNyY19iaXRfcG9zID0gMDsNCisgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGNvbCA9IDA7IGNvbCA8IHNyY193aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgIGludCBjb2xvcl9pbmRleCA9IDA7DQorICAgICAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgY29sb3IgPSAwOyBjb2xvciA8IG1fbkNvbXBvbmVudHM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgZGF0YSA9IF9HZXRCaXRzOChwU3JjTGluZSwgc3JjX2JpdF9wb3MsIG1fYnBjKTsNCisgICAgICAgICAgICAgICAgICAgIGNvbG9yX2luZGV4IHw9IGRhdGEgPDwgKGNvbG9yICogbV9icGMpOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX2JpdF9wb3MgKz0gbV9icGM7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wTGluZUJ1Zltjb2xdID0gY29sb3JfaW5kZXg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBTcmNMaW5lID0gbV9wTGluZUJ1ZjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX2JDb2xvcktleSkgew0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2xpcF93aWR0aDsgaSArKykgew0KKyAgICAgICAgICAgICAgICBGWF9EV09SRCBzcmNfeCA9IChjbGlwX2xlZnQgKyBpKSAqIHNyY193aWR0aCAvIGRlc3Rfd2lkdGg7DQorICAgICAgICAgICAgICAgIGlmIChiRmxpcFgpIHsNCisgICAgICAgICAgICAgICAgICAgIHNyY194ID0gc3JjX3dpZHRoIC0gc3JjX3ggLSAxOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHNyY194ICU9IHNyY193aWR0aDsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIHBEZXN0UGl4ZWwgPSBkZXN0X3NjYW4gKyBpICogNDsNCisgICAgICAgICAgICAgICAgRlhfQllURSBpbmRleCA9IHBTcmNMaW5lW3NyY194XTsNCisgICAgICAgICAgICAgICAgaWYgKG1fcFBhbGV0dGUpIHsNCisgICAgICAgICAgICAgICAgICAgICpwRGVzdFBpeGVsKysgPSBGWEFSR0JfQihtX3BQYWxldHRlW2luZGV4XSk7DQorICAgICAgICAgICAgICAgICAgICAqcERlc3RQaXhlbCsrID0gRlhBUkdCX0cobV9wUGFsZXR0ZVtpbmRleF0pOw0KKyAgICAgICAgICAgICAgICAgICAgKnBEZXN0UGl4ZWwrKyA9IEZYQVJHQl9SKG1fcFBhbGV0dGVbaW5kZXhdKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICpwRGVzdFBpeGVsKysgPSBpbmRleDsNCisgICAgICAgICAgICAgICAgICAgICpwRGVzdFBpeGVsKysgPSBpbmRleDsNCisgICAgICAgICAgICAgICAgICAgICpwRGVzdFBpeGVsKysgPSBpbmRleDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAqcERlc3RQaXhlbCA9IChpbmRleCA8IG1fcENvbXBEYXRhWzBdLm1fQ29sb3JLZXlNaW4gfHwgaW5kZXggPiBtX3BDb21wRGF0YVswXS5tX0NvbG9yS2V5TWF4KSA/IDB4ZmYgOiAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNsaXBfd2lkdGg7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9EV09SRCBzcmNfeCA9IChjbGlwX2xlZnQgKyBpKSAqIHNyY193aWR0aCAvIGRlc3Rfd2lkdGg7DQorICAgICAgICAgICAgaWYgKGJGbGlwWCkgew0KKyAgICAgICAgICAgICAgICBzcmNfeCA9IHNyY193aWR0aCAtIHNyY194IC0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3JjX3ggJT0gc3JjX3dpZHRoOw0KKyAgICAgICAgICAgIEZYX0JZVEUgaW5kZXggPSBwU3JjTGluZVtzcmNfeF07DQorICAgICAgICAgICAgaWYgKGRlc3RfQnBwID09IDEpIHsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2ldID0gaW5kZXg7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaW50IGRlc3RfcG9zID0gaSAqIGRlc3RfQnBwOw0KKyAgICAgICAgICAgICAgICBGWF9BUkdCIGFyZ2IgPSBtX3BQYWxldHRlW2luZGV4XTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfcG9zXSA9IEZYQVJHQl9CKGFyZ2IpOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3MgKyAxXSA9IEZYQVJHQl9HKGFyZ2IpOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3MgKyAyXSA9IEZYQVJHQl9SKGFyZ2IpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCBsYXN0X3NyY194ID0gLTE7DQorICAgICAgICBGWF9BUkdCIGxhc3RfYXJnYjsNCisgICAgICAgIEZYX0ZMT0FUIG9yaWdfTm90OEJwcCA9IChGWF9GTE9BVCltX2JwYyAqIChGWF9GTE9BVCltX25Db21wb25lbnRzIC8gOC4wZjsNCisgICAgICAgIEZYX0ZMT0FUIHVuaXRfVG84QnBjID0gMjU1LjBmIC8gKCgxIDw8IG1fYnBjKSAtIDEpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjbGlwX3dpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgaW50IGRlc3RfeCA9IGNsaXBfbGVmdCArIGk7DQorICAgICAgICAgICAgRlhfRFdPUkQgc3JjX3ggPSAoYkZsaXBYID8gKGRlc3Rfd2lkdGggLSBkZXN0X3ggLSAxKSA6IGRlc3RfeCkgKiAoRlhfSU5UNjQpc3JjX3dpZHRoIC8gZGVzdF93aWR0aDsNCisgICAgICAgICAgICBzcmNfeCAlPSBzcmNfd2lkdGg7DQorICAgICAgICAgICAgRlhfTFBDQllURSBwU3JjUGl4ZWwgPSBOVUxMOw0KKyAgICAgICAgICAgIGlmIChtX2JwYyAlIDggPT0gMCkgew0KKyAgICAgICAgICAgICAgICBwU3JjUGl4ZWwgPSBwU3JjTGluZSArIHNyY194ICogb3JpZ19CcHA7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcFNyY1BpeGVsID0gcFNyY0xpbmUgKyAoaW50KShzcmNfeCAqIG9yaWdfTm90OEJwcCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0xQQllURSBwRGVzdFBpeGVsID0gZGVzdF9zY2FuICsgaSAqIGRlc3RfQnBwOw0KKyAgICAgICAgICAgIEZYX0FSR0IgYXJnYjsNCisgICAgICAgICAgICBpZiAoc3JjX3ggPT0gbGFzdF9zcmNfeCkgew0KKyAgICAgICAgICAgICAgICBhcmdiID0gbGFzdF9hcmdiOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmIChtX3BDb2xvclNwYWNlKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGNvbG9yWzRdOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2JEZWZhdWx0RGVjb2RlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcmlnX0JwcDsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sb3JfdmFsdWUgPSAoaW50KSgobV9wQ29tcERhdGFbaV0ubV9EZWNvZGVNaW4gKyBtX3BDb21wRGF0YVtpXS5tX0RlY29kZVN0ZXAgKiAoRlhfRkxPQVQpcFNyY1BpeGVsW2ldKSAqIDI1NS4wZiArIDAuNWYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wW2ldID0gY29sb3JfdmFsdWUgPiAyNTUgPyAyNTUgOiAoY29sb3JfdmFsdWUgPCAwID8gMCA6IGNvbG9yX3ZhbHVlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wQ29sb3JTcGFjZS0+VHJhbnNsYXRlSW1hZ2VMaW5lKGNvbG9yLCB0ZW1wLCAxLCAwLCAwLCBtX2JMb2FkTWFzayAmJiBtX0dyb3VwRmFtaWx5ID09IFBERkNTX0RFVklDRUNNWUsgJiYgbV9GYW1pbHkgPT0gUERGQ1NfREVWSUNFQ01ZSyk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2JwYyA8IDgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19iaXRfcG9zID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY194ICUgMikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2JpdF9wb3MgPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9ICgxIDw8IG1fYnBjKSAgLSAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgbV9uQ29tcG9uZW50czsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFtpXSA9IChGWF9CWVRFKShfR2V0Qml0czgocFNyY1BpeGVsLCBzcmNfYml0X3BvcywgbV9icGMpICogdW5pdF9UbzhCcGMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2JpdF9wb3MgKz0gbV9icGM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wQ29sb3JTcGFjZS0+VHJhbnNsYXRlSW1hZ2VMaW5lKGNvbG9yLCB0ZW1wLCAxLCAwLCAwLCBtX2JMb2FkTWFzayAmJiBtX0dyb3VwRmFtaWx5ID09IFBERkNTX0RFVklDRUNNWUsgJiYgbV9GYW1pbHkgPT0gUERGQ1NfREVWSUNFQ01ZSyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wQ29sb3JTcGFjZS0+VHJhbnNsYXRlSW1hZ2VMaW5lKGNvbG9yLCBwU3JjUGl4ZWwsIDEsIDAsIDAsIG1fYkxvYWRNYXNrICYmIG1fR3JvdXBGYW1pbHkgPT0gUERGQ1NfREVWSUNFQ01ZSyAmJiBtX0ZhbWlseSA9PSBQREZDU19ERVZJQ0VDTVlLKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBhcmdiID0gRlhBUkdCX01BS0UoMHhmZiwgY29sb3JbMl0sIGNvbG9yWzFdLCBjb2xvclswXSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBhcmdiID0gRlhBUkdCX01BS0UoMHhmZiwgcFNyY1BpeGVsWzJdLCBwU3JjUGl4ZWxbMV0sIHBTcmNQaXhlbFswXSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fYkNvbG9yS2V5KSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGEgPSAweGZmOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fbkNvbXBvbmVudHMgPT0gMyAmJiBtX2JwYyA9PSA4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSAocFNyY1BpeGVsWzBdIDwgbV9wQ29tcERhdGFbMF0ubV9Db2xvcktleU1pbiB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTcmNQaXhlbFswXSA+IG1fcENvbXBEYXRhWzBdLm1fQ29sb3JLZXlNYXggfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU3JjUGl4ZWxbMV0gPCBtX3BDb21wRGF0YVsxXS5tX0NvbG9yS2V5TWluIHx8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNyY1BpeGVsWzFdID4gbV9wQ29tcERhdGFbMV0ubV9Db2xvcktleU1heCB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTcmNQaXhlbFsyXSA8IG1fcENvbXBEYXRhWzJdLm1fQ29sb3JLZXlNaW4gfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU3JjUGl4ZWxbMl0gPiBtX3BDb21wRGF0YVsyXS5tX0NvbG9yS2V5TWF4KSA/IDB4ZmYgOiAwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYXJnYiAmPSAweGZmZmZmZjsNCisgICAgICAgICAgICAgICAgICAgIGFyZ2IgfD0gYWxwaGEgPDwgMjQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGFzdF9zcmNfeCA9IHNyY194Ow0KKyAgICAgICAgICAgICAgICBsYXN0X2FyZ2IgPSBhcmdiOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoZGVzdF9CcHAgPT0gNCkgew0KKyAgICAgICAgICAgICAgICAqKEZYX0RXT1JEKilwRGVzdFBpeGVsID0gRlhBUkdCX1RPRElCKGFyZ2IpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICpwRGVzdFBpeGVsKysgPSBGWEFSR0JfQihhcmdiKTsNCisgICAgICAgICAgICAgICAgKnBEZXN0UGl4ZWwrKyA9IEZYQVJHQl9HKGFyZ2IpOw0KKyAgICAgICAgICAgICAgICAqcERlc3RQaXhlbCA9IEZYQVJHQl9SKGFyZ2IpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KK30NCit2b2lkIENQREZfRElCU291cmNlOjpTZXREb3duU2FtcGxlU2l6ZShpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0KSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERlY29kZXIpIHsNCisgICAgICAgIG1fcERlY29kZXItPkRvd25TY2FsZShkZXN0X3dpZHRoLCBkZXN0X2hlaWdodCk7DQorICAgICAgICAoKENQREZfRElCU291cmNlKil0aGlzKS0+bV9XaWR0aCA9IG1fcERlY29kZXItPkdldFdpZHRoKCk7DQorICAgICAgICAoKENQREZfRElCU291cmNlKil0aGlzKS0+bV9IZWlnaHQgPSBtX3BEZWNvZGVyLT5HZXRIZWlnaHQoKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfRElCU291cmNlOjpDbGVhckltYWdlRGF0YSgpDQorew0KKyAgICBpZiAobV9wRGVjb2Rlcikgew0KKyAgICAgICAgbV9wRGVjb2Rlci0+Q2xlYXJJbWFnZURhdGEoKTsNCisgICAgfQ0KK30NCitDUERGX1Byb2dyZXNzaXZlSW1hZ2VMb2FkZXJIYW5kbGU6OkNQREZfUHJvZ3Jlc3NpdmVJbWFnZUxvYWRlckhhbmRsZSgpDQorew0KKyAgICBtX3BJbWFnZUxvYWRlciA9IE5VTEw7DQorICAgIG1fcENhY2hlID0gTlVMTDsNCisgICAgbV9wSW1hZ2UgPSBOVUxMOw0KK30NCitDUERGX1Byb2dyZXNzaXZlSW1hZ2VMb2FkZXJIYW5kbGU6On5DUERGX1Byb2dyZXNzaXZlSW1hZ2VMb2FkZXJIYW5kbGUoKQ0KK3sNCisgICAgbV9wSW1hZ2VMb2FkZXIgPSBOVUxMOw0KKyAgICBtX3BDYWNoZSA9IE5VTEw7DQorICAgIG1fcEltYWdlID0gTlVMTDsNCit9DQorRlhfQk9PTCBDUERGX1Byb2dyZXNzaXZlSW1hZ2VMb2FkZXJIYW5kbGU6OlN0YXJ0KENQREZfSW1hZ2VMb2FkZXIqIHBJbWFnZUxvYWRlciwgY29uc3QgQ1BERl9JbWFnZU9iamVjdCogcEltYWdlLCBDUERGX1BhZ2VSZW5kZXJDYWNoZSogcENhY2hlLCBGWF9CT09MIGJTdGRDUywgRlhfRFdPUkQgR3JvdXBGYW1pbHksIEZYX0JPT0wgYkxvYWRNYXNrLCBDUERGX1JlbmRlclN0YXR1cyogcFJlbmRlclN0YXR1cywgRlhfSU5UMzIgbkRvd25zYW1wbGVXaWR0aCwgRlhfSU5UMzIgbkRvd25zYW1wbGVIZWlnaHQpDQorew0KKyAgICBtX3BJbWFnZUxvYWRlciA9IHBJbWFnZUxvYWRlcjsNCisgICAgbV9wQ2FjaGUgPSBwQ2FjaGU7DQorICAgIG1fcEltYWdlID0gKENQREZfSW1hZ2VPYmplY3QqKXBJbWFnZTsNCisgICAgbV9uRG93bnNhbXBsZVdpZHRoID0gbkRvd25zYW1wbGVXaWR0aDsNCisgICAgbV9uRG93bnNhbXBsZUhlaWdodCA9IG5Eb3duc2FtcGxlSGVpZ2h0Ow0KKyAgICBGWF9CT09MIHJldDsNCisgICAgaWYgKHBDYWNoZSkgew0KKyAgICAgICAgcmV0ID0gcENhY2hlLT5TdGFydEdldENhY2hlZEJpdG1hcChwSW1hZ2UtPm1fcEltYWdlLT5HZXRTdHJlYW0oKSwgYlN0ZENTLCBHcm91cEZhbWlseSwgYkxvYWRNYXNrLCBwUmVuZGVyU3RhdHVzLCBtX25Eb3duc2FtcGxlV2lkdGgsIG1fbkRvd25zYW1wbGVIZWlnaHQpOw0KKyAgICAgICAgaWYgKHJldCA9PSBGQUxTRSkgew0KKyAgICAgICAgICAgIG1fcEltYWdlTG9hZGVyLT5tX2JDYWNoZWQgPSBUUlVFOw0KKyAgICAgICAgICAgIG1fcEltYWdlTG9hZGVyLT5tX3BCaXRtYXAgPSBwQ2FjaGUtPm1fcEN1ckltYWdlQ2FjaGUtPkRldGFjaEJpdG1hcCgpOw0KKyAgICAgICAgICAgIG1fcEltYWdlTG9hZGVyLT5tX3BNYXNrID0gcENhY2hlLT5tX3BDdXJJbWFnZUNhY2hlLT5EZXRhY2hNYXNrKCk7DQorICAgICAgICAgICAgbV9wSW1hZ2VMb2FkZXItPm1fTWF0dGVDb2xvciA9IHBDYWNoZS0+bV9wQ3VySW1hZ2VDYWNoZS0+bV9NYXR0ZUNvbG9yOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0ID0gcEltYWdlLT5tX3BJbWFnZS0+U3RhcnRMb2FkRElCU291cmNlKHBSZW5kZXJTdGF0dXMtPm1fcEZvcm1SZXNvdXJjZSwgcFJlbmRlclN0YXR1cy0+bV9wUGFnZVJlc291cmNlLCBiU3RkQ1MsIEdyb3VwRmFtaWx5LCBiTG9hZE1hc2spOw0KKyAgICAgICAgaWYgKHJldCA9PSBGQUxTRSkgew0KKyAgICAgICAgICAgIG1fcEltYWdlTG9hZGVyLT5tX2JDYWNoZWQgPSBGQUxTRTsNCisgICAgICAgICAgICBtX3BJbWFnZUxvYWRlci0+bV9wQml0bWFwID0gbV9wSW1hZ2UtPm1fcEltYWdlLT5EZXRhY2hCaXRtYXAoKTsNCisgICAgICAgICAgICBtX3BJbWFnZUxvYWRlci0+bV9wTWFzayA9IG1fcEltYWdlLT5tX3BJbWFnZS0+RGV0YWNoTWFzaygpOw0KKyAgICAgICAgICAgIG1fcEltYWdlTG9hZGVyLT5tX01hdHRlQ29sb3IgPSBtX3BJbWFnZS0+bV9wSW1hZ2UtPm1fTWF0dGVDb2xvcjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcmV0Ow0KK30NCitGWF9CT09MIENQREZfUHJvZ3Jlc3NpdmVJbWFnZUxvYWRlckhhbmRsZTo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9CT09MIHJldDsNCisgICAgaWYgKG1fcENhY2hlKSB7DQorICAgICAgICByZXQgPSBtX3BDYWNoZS0+Q29udGludWUocFBhdXNlKTsNCisgICAgICAgIGlmIChyZXQgPT0gRkFMU0UpIHsNCisgICAgICAgICAgICBtX3BJbWFnZUxvYWRlci0+bV9iQ2FjaGVkID0gVFJVRTsNCisgICAgICAgICAgICBtX3BJbWFnZUxvYWRlci0+bV9wQml0bWFwID0gbV9wQ2FjaGUtPm1fcEN1ckltYWdlQ2FjaGUtPkRldGFjaEJpdG1hcCgpOw0KKyAgICAgICAgICAgIG1fcEltYWdlTG9hZGVyLT5tX3BNYXNrID0gbV9wQ2FjaGUtPm1fcEN1ckltYWdlQ2FjaGUtPkRldGFjaE1hc2soKTsNCisgICAgICAgICAgICBtX3BJbWFnZUxvYWRlci0+bV9NYXR0ZUNvbG9yID0gbV9wQ2FjaGUtPm1fcEN1ckltYWdlQ2FjaGUtPm1fTWF0dGVDb2xvcjsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldCA9IG1fcEltYWdlLT5tX3BJbWFnZS0+Q29udGludWUocFBhdXNlKTsNCisgICAgICAgIGlmIChyZXQgPT0gRkFMU0UpIHsNCisgICAgICAgICAgICBtX3BJbWFnZUxvYWRlci0+bV9iQ2FjaGVkID0gRkFMU0U7DQorICAgICAgICAgICAgbV9wSW1hZ2VMb2FkZXItPm1fcEJpdG1hcCA9IG1fcEltYWdlLT5tX3BJbWFnZS0+RGV0YWNoQml0bWFwKCk7DQorICAgICAgICAgICAgbV9wSW1hZ2VMb2FkZXItPm1fcE1hc2sgPSBtX3BJbWFnZS0+bV9wSW1hZ2UtPkRldGFjaE1hc2soKTsNCisgICAgICAgICAgICBtX3BJbWFnZUxvYWRlci0+bV9NYXR0ZUNvbG9yID0gbV9wSW1hZ2UtPm1fcEltYWdlLT5tX01hdHRlQ29sb3I7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHJldDsNCit9DQorRlhfQk9PTCBDUERGX0ltYWdlTG9hZGVyOjpMb2FkKGNvbnN0IENQREZfSW1hZ2VPYmplY3QqIHBJbWFnZSwgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqIHBDYWNoZSwgRlhfQk9PTCBiU3RkQ1MsIEZYX0RXT1JEIEdyb3VwRmFtaWx5LCBGWF9CT09MIGJMb2FkTWFzaywgQ1BERl9SZW5kZXJTdGF0dXMqIHBSZW5kZXJTdGF0dXMpDQorew0KKyAgICBpZiAocEltYWdlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocENhY2hlKSB7DQorICAgICAgICBwQ2FjaGUtPkdldENhY2hlZEJpdG1hcChwSW1hZ2UtPm1fcEltYWdlLT5HZXRTdHJlYW0oKSwgbV9wQml0bWFwLCBtX3BNYXNrLCBtX01hdHRlQ29sb3IsIGJTdGRDUywgR3JvdXBGYW1pbHksIGJMb2FkTWFzaywgcFJlbmRlclN0YXR1cywgbV9uRG93bnNhbXBsZVdpZHRoLCBtX25Eb3duc2FtcGxlSGVpZ2h0KTsNCisgICAgICAgIG1fYkNhY2hlZCA9IFRSVUU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BCaXRtYXAgPSBwSW1hZ2UtPm1fcEltYWdlLT5Mb2FkRElCU291cmNlKCZtX3BNYXNrLCAmbV9NYXR0ZUNvbG9yLCBiU3RkQ1MsIEdyb3VwRmFtaWx5LCBiTG9hZE1hc2spOw0KKyAgICAgICAgbV9iQ2FjaGVkID0gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MIENQREZfSW1hZ2VMb2FkZXI6OlN0YXJ0TG9hZEltYWdlKGNvbnN0IENQREZfSW1hZ2VPYmplY3QqIHBJbWFnZSwgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqIHBDYWNoZSwgRlhfTFBWT0lEJiBMb2FkSGFuZGxlLCBGWF9CT09MIGJTdGRDUywgRlhfRFdPUkQgR3JvdXBGYW1pbHksIEZYX0JPT0wgYkxvYWRNYXNrLCBDUERGX1JlbmRlclN0YXR1cyogcFJlbmRlclN0YXR1cywgRlhfSU5UMzIgbkRvd25zYW1wbGVXaWR0aCwgRlhfSU5UMzIgbkRvd25zYW1wbGVIZWlnaHQpDQorew0KKyAgICBtX25Eb3duc2FtcGxlV2lkdGggPSBuRG93bnNhbXBsZVdpZHRoOw0KKyAgICBtX25Eb3duc2FtcGxlSGVpZ2h0ID0gbkRvd25zYW1wbGVIZWlnaHQ7DQorICAgIENQREZfUHJvZ3Jlc3NpdmVJbWFnZUxvYWRlckhhbmRsZSogcExvYWRlckhhbmRsZSA9IE5VTEw7DQorICAgIHBMb2FkZXJIYW5kbGUgPQlGWF9ORVcgQ1BERl9Qcm9ncmVzc2l2ZUltYWdlTG9hZGVySGFuZGxlOw0KKyAgICBGWF9CT09MIHJldCA9IHBMb2FkZXJIYW5kbGUtPlN0YXJ0KHRoaXMsIHBJbWFnZSwgcENhY2hlLCBiU3RkQ1MsIEdyb3VwRmFtaWx5LCBiTG9hZE1hc2ssIHBSZW5kZXJTdGF0dXMsIG1fbkRvd25zYW1wbGVXaWR0aCwgbV9uRG93bnNhbXBsZUhlaWdodCk7DQorICAgIExvYWRIYW5kbGUgPSBwTG9hZGVySGFuZGxlOw0KKyAgICByZXR1cm4gcmV0Ow0KK30NCitGWF9CT09MCUNQREZfSW1hZ2VMb2FkZXI6OkNvbnRpbnVlKEZYX0xQVk9JRCBMb2FkSGFuZGxlLCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIHJldHVybiAoKENQREZfUHJvZ3Jlc3NpdmVJbWFnZUxvYWRlckhhbmRsZSopTG9hZEhhbmRsZSktPkNvbnRpbnVlKHBQYXVzZSk7DQorfQ0KK0NQREZfSW1hZ2VMb2FkZXI6On5DUERGX0ltYWdlTG9hZGVyKCkNCit7DQorICAgIGlmICghbV9iQ2FjaGVkKSB7DQorICAgICAgICBpZiAobV9wQml0bWFwKSB7DQorICAgICAgICAgICAgZGVsZXRlIG1fcEJpdG1hcDsNCisgICAgICAgICAgICBtX3BCaXRtYXAgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fcE1hc2spIHsNCisgICAgICAgICAgICBkZWxldGUgbV9wTWFzazsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcmVuZGVyL2ZwZGZfcmVuZGVyX3BhdHRlcm4uY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3JlbmRlci9mcGRmX3JlbmRlcl9wYXR0ZXJuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2MzMGE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3JlbmRlci9mcGRmX3JlbmRlcl9wYXR0ZXJuLmNwcApAQCAtMCwwICsxLDEwOTMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9yZW5kZXIuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZW9iai5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaW5jbHVkZSAiLi4vZnBkZl9wYWdlL3BhZ2VpbnQuaCINCisjaW5jbHVkZSAicmVuZGVyX2ludC5oIg0KKyNkZWZpbmUgU0hBRElOR19TVEVQUyAyNTYNCitzdGF0aWMgdm9pZCBfRHJhd0F4aWFsU2hhZGluZyhDRlhfRElCaXRtYXAqIHBCaXRtYXAsIENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyQml0bWFwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcERpY3QsIENQREZfRnVuY3Rpb24qKiBwRnVuY3MsIGludCBuRnVuY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9Db2xvclNwYWNlKiBwQ1MsIGludCBhbHBoYSkNCit7DQorICAgIEFTU0VSVChwQml0bWFwLT5HZXRGb3JtYXQoKSA9PSBGWERJQl9BcmdiKTsNCisgICAgQ1BERl9BcnJheSogcENvb3JkcyA9IHBEaWN0LT5HZXRBcnJheShGWF9CU1RSQygiQ29vcmRzIikpOw0KKyAgICBpZiAocENvb3JkcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfRkxPQVQgc3RhcnRfeCA9IHBDb29yZHMtPkdldE51bWJlcigwKTsNCisgICAgRlhfRkxPQVQgc3RhcnRfeSA9IHBDb29yZHMtPkdldE51bWJlcigxKTsNCisgICAgRlhfRkxPQVQgZW5kX3ggPSBwQ29vcmRzLT5HZXROdW1iZXIoMik7DQorICAgIEZYX0ZMT0FUIGVuZF95ID0gcENvb3Jkcy0+R2V0TnVtYmVyKDMpOw0KKyAgICBGWF9GTE9BVCB0X21pbiA9IDAsIHRfbWF4ID0gMS4wZjsNCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJEb21haW4iKSk7DQorICAgIGlmIChwQXJyYXkpIHsNCisgICAgICAgIHRfbWluID0gcEFycmF5LT5HZXROdW1iZXIoMCk7DQorICAgICAgICB0X21heCA9IHBBcnJheS0+R2V0TnVtYmVyKDEpOw0KKyAgICB9DQorICAgIEZYX0JPT0wgYlN0YXJ0RXh0ZW5kID0gRkFMU0UsIGJFbmRFeHRlbmQgPSBGQUxTRTsNCisgICAgcEFycmF5ID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJFeHRlbmQiKSk7DQorICAgIGlmIChwQXJyYXkpIHsNCisgICAgICAgIGJTdGFydEV4dGVuZCA9IHBBcnJheS0+R2V0SW50ZWdlcigwKTsNCisgICAgICAgIGJFbmRFeHRlbmQgPSBwQXJyYXktPkdldEludGVnZXIoMSk7DQorICAgIH0NCisgICAgaW50IHdpZHRoID0gcEJpdG1hcC0+R2V0V2lkdGgoKTsNCisgICAgaW50IGhlaWdodCA9IHBCaXRtYXAtPkdldEhlaWdodCgpOw0KKyAgICBGWF9GTE9BVCB4X3NwYW4gPSBlbmRfeCAtIHN0YXJ0X3g7DQorICAgIEZYX0ZMT0FUIHlfc3BhbiA9IGVuZF95IC0gc3RhcnRfeTsNCisgICAgRlhfRkxPQVQgYXhpc19sZW5fc3F1YXJlID0gRlhTWVNfTXVsKHhfc3BhbiwgeF9zcGFuKSArIEZYU1lTX011bCh5X3NwYW4sIHlfc3Bhbik7DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4Ow0KKyAgICBtYXRyaXguU2V0UmV2ZXJzZSgqcE9iamVjdDJCaXRtYXApOw0KKyAgICBpbnQgdG90YWxfcmVzdWx0cyA9IDA7DQorICAgIGZvciAoaW50IGogPSAwOyBqIDwgbkZ1bmNzOyBqICsrKSB7DQorICAgICAgICBpZiAocEZ1bmNzW2pdKSB7DQorICAgICAgICAgICAgdG90YWxfcmVzdWx0cyArPSBwRnVuY3Nbal0tPkNvdW50T3V0cHV0cygpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwQ1MtPkNvdW50Q29tcG9uZW50cygpID4gdG90YWxfcmVzdWx0cykgew0KKyAgICAgICAgdG90YWxfcmVzdWx0cyA9IHBDUy0+Q291bnRDb21wb25lbnRzKCk7DQorICAgIH0NCisgICAgQ0ZYX0ZpeGVkQnVmR3JvdzxGWF9GTE9BVCwgMTY+IHJlc3VsdF9hcnJheSh0b3RhbF9yZXN1bHRzKTsNCisgICAgRlhfRkxPQVQqIHBSZXN1bHRzID0gcmVzdWx0X2FycmF5Ow0KKyAgICBGWFNZU19tZW1zZXQzMihwUmVzdWx0cywgMCwgdG90YWxfcmVzdWx0cyAqIHNpemVvZihGWF9GTE9BVCkpOw0KKyAgICBGWF9EV09SRCByZ2JfYXJyYXlbU0hBRElOR19TVEVQU107DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgU0hBRElOR19TVEVQUzsgaSArKykgew0KKyAgICAgICAgRlhfRkxPQVQgaW5wdXQgPSAodF9tYXggLSB0X21pbikgKiBpIC8gU0hBRElOR19TVEVQUyArIHRfbWluOw0KKyAgICAgICAgaW50IG9mZnNldCA9IDA7DQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG5GdW5jczsgaiArKykgew0KKyAgICAgICAgICAgIGlmIChwRnVuY3Nbal0pIHsNCisgICAgICAgICAgICAgICAgaW50IG5yZXN1bHRzID0gMDsNCisgICAgICAgICAgICAgICAgaWYgKHBGdW5jc1tqXS0+Q2FsbCgmaW5wdXQsIDEsIHBSZXN1bHRzICsgb2Zmc2V0LCBucmVzdWx0cykpIHsNCisgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBucmVzdWx0czsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEZYX0ZMT0FUIFIsIEcsIEI7DQorICAgICAgICBwQ1MtPkdldFJHQihwUmVzdWx0cywgUiwgRywgQik7DQorICAgICAgICByZ2JfYXJyYXlbaV0gPSBGWEFSR0JfVE9ESUIoRlhBUkdCX01BS0UoYWxwaGEsIEZYU1lTX3JvdW5kKFIgKiAyNTUpLCBGWFNZU19yb3VuZChHICogMjU1KSwgRlhTWVNfcm91bmQoQiAqIDI1NSkpKTsNCisgICAgfQ0KKyAgICBpbnQgcGl0Y2ggPSBwQml0bWFwLT5HZXRQaXRjaCgpOw0KKyAgICBpbnQgQnBwID0gcEJpdG1hcC0+R2V0QlBQKCkgLyA4Ow0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgRlhfRFdPUkQqIGRpYl9idWYgPSAoRlhfRFdPUkQqKShwQml0bWFwLT5HZXRCdWZmZXIoKSArIHJvdyAqIHBpdGNoKTsNCisgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHdpZHRoOyBjb2x1bW4gKyspIHsNCisgICAgICAgICAgICBGWF9GTE9BVCB4ID0gKEZYX0ZMT0FUKWNvbHVtbiwgeSA9IChGWF9GTE9BVClyb3c7DQorICAgICAgICAgICAgbWF0cml4LlRyYW5zZm9ybSh4LCB5KTsNCisgICAgICAgICAgICBGWF9GTE9BVCBzY2FsZSA9IEZYU1lTX0RpdihGWFNZU19NdWwoeCAtIHN0YXJ0X3gsIHhfc3BhbikgKyBGWFNZU19NdWwoeSAtIHN0YXJ0X3ksIHlfc3BhbiksIGF4aXNfbGVuX3NxdWFyZSk7DQorICAgICAgICAgICAgaW50IGluZGV4ID0gKEZYX0lOVDMyKShzY2FsZSAqIChTSEFESU5HX1NURVBTIC0gMSkpOw0KKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsNCisgICAgICAgICAgICAgICAgaWYgKCFiU3RhcnRFeHRlbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGluZGV4ID0gMDsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID49IFNIQURJTkdfU1RFUFMpIHsNCisgICAgICAgICAgICAgICAgaWYgKCFiRW5kRXh0ZW5kKSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpbmRleCA9IFNIQURJTkdfU1RFUFMgLSAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkaWJfYnVmW2NvbHVtbl0gPSByZ2JfYXJyYXlbaW5kZXhdOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3N0YXRpYyB2b2lkIF9EcmF3UmFkaWFsU2hhZGluZyhDRlhfRElCaXRtYXAqIHBCaXRtYXAsIENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyQml0bWFwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0LCBDUERGX0Z1bmN0aW9uKiogcEZ1bmNzLCBpbnQgbkZ1bmNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0NvbG9yU3BhY2UqIHBDUywgaW50IGFscGhhKQ0KK3sNCisgICAgQVNTRVJUKHBCaXRtYXAtPkdldEZvcm1hdCgpID09IEZYRElCX0FyZ2IpOw0KKyAgICBDUERGX0FycmF5KiBwQ29vcmRzID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJDb29yZHMiKSk7DQorICAgIGlmIChwQ29vcmRzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBzdGFydF94ID0gcENvb3Jkcy0+R2V0TnVtYmVyKDApOw0KKyAgICBGWF9GTE9BVCBzdGFydF95ID0gcENvb3Jkcy0+R2V0TnVtYmVyKDEpOw0KKyAgICBGWF9GTE9BVCBzdGFydF9yID0gcENvb3Jkcy0+R2V0TnVtYmVyKDIpOw0KKyAgICBGWF9GTE9BVCBlbmRfeCA9IHBDb29yZHMtPkdldE51bWJlcigzKTsNCisgICAgRlhfRkxPQVQgZW5kX3kgPSBwQ29vcmRzLT5HZXROdW1iZXIoNCk7DQorICAgIEZYX0ZMT0FUIGVuZF9yID0gcENvb3Jkcy0+R2V0TnVtYmVyKDUpOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsNCisgICAgbWF0cml4LlNldFJldmVyc2UoKnBPYmplY3QyQml0bWFwKTsNCisgICAgRlhfRkxPQVQgdF9taW4gPSAwLCB0X21heCA9IDEuMGY7DQorICAgIENQREZfQXJyYXkqIHBBcnJheSA9IHBEaWN0LT5HZXRBcnJheShGWF9CU1RSQygiRG9tYWluIikpOw0KKyAgICBpZiAocEFycmF5KSB7DQorICAgICAgICB0X21pbiA9IHBBcnJheS0+R2V0TnVtYmVyKDApOw0KKyAgICAgICAgdF9tYXggPSBwQXJyYXktPkdldE51bWJlcigxKTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJTdGFydEV4dGVuZCA9IEZBTFNFLCBiRW5kRXh0ZW5kID0gRkFMU0U7DQorICAgIHBBcnJheSA9IHBEaWN0LT5HZXRBcnJheShGWF9CU1RSQygiRXh0ZW5kIikpOw0KKyAgICBpZiAocEFycmF5KSB7DQorICAgICAgICBiU3RhcnRFeHRlbmQgPSBwQXJyYXktPkdldEludGVnZXIoMCk7DQorICAgICAgICBiRW5kRXh0ZW5kID0gcEFycmF5LT5HZXRJbnRlZ2VyKDEpOw0KKyAgICB9DQorICAgIGludCB0b3RhbF9yZXN1bHRzID0gMDsNCisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuRnVuY3M7IGogKyspIHsNCisgICAgICAgIGlmIChwRnVuY3Nbal0pIHsNCisgICAgICAgICAgICB0b3RhbF9yZXN1bHRzICs9IHBGdW5jc1tqXS0+Q291bnRPdXRwdXRzKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBDUy0+Q291bnRDb21wb25lbnRzKCkgPiB0b3RhbF9yZXN1bHRzKSB7DQorICAgICAgICB0b3RhbF9yZXN1bHRzID0gcENTLT5Db3VudENvbXBvbmVudHMoKTsNCisgICAgfQ0KKyAgICBDRlhfRml4ZWRCdWZHcm93PEZYX0ZMT0FULCAxNj4gcmVzdWx0X2FycmF5KHRvdGFsX3Jlc3VsdHMpOw0KKyAgICBGWF9GTE9BVCogcFJlc3VsdHMgPSByZXN1bHRfYXJyYXk7DQorICAgIEZYU1lTX21lbXNldDMyKHBSZXN1bHRzLCAwLCB0b3RhbF9yZXN1bHRzICogc2l6ZW9mKEZYX0ZMT0FUKSk7DQorICAgIEZYX0RXT1JEIHJnYl9hcnJheVtTSEFESU5HX1NURVBTXTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBTSEFESU5HX1NURVBTOyBpICsrKSB7DQorICAgICAgICBGWF9GTE9BVCBpbnB1dCA9ICh0X21heCAtIHRfbWluKSAqIGkgLyBTSEFESU5HX1NURVBTICsgdF9taW47DQorICAgICAgICBpbnQgb2Zmc2V0ID0gMDsNCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbkZ1bmNzOyBqICsrKSB7DQorICAgICAgICAgICAgaWYgKHBGdW5jc1tqXSkgew0KKyAgICAgICAgICAgICAgICBpbnQgbnJlc3VsdHM7DQorICAgICAgICAgICAgICAgIGlmIChwRnVuY3Nbal0tPkNhbGwoJmlucHV0LCAxLCBwUmVzdWx0cyArIG9mZnNldCwgbnJlc3VsdHMpKSB7DQorICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbnJlc3VsdHM7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBGWF9GTE9BVCBSLCBHLCBCOw0KKyAgICAgICAgcENTLT5HZXRSR0IocFJlc3VsdHMsIFIsIEcsIEIpOw0KKyAgICAgICAgcmdiX2FycmF5W2ldID0gRlhBUkdCX1RPRElCKEZYQVJHQl9NQUtFKGFscGhhLCBGWFNZU19yb3VuZChSICogMjU1KSwgRlhTWVNfcm91bmQoRyAqIDI1NSksIEZYU1lTX3JvdW5kKEIgKiAyNTUpKSk7DQorICAgIH0NCisgICAgRlhfRkxPQVQgYSA9IEZYU1lTX011bChzdGFydF94IC0gZW5kX3gsIHN0YXJ0X3ggLSBlbmRfeCkgKw0KKyAgICAgICAgICAgICAgICAgRlhTWVNfTXVsKHN0YXJ0X3kgLSBlbmRfeSwgc3RhcnRfeSAtIGVuZF95KSAtIEZYU1lTX011bChzdGFydF9yIC0gZW5kX3IsIHN0YXJ0X3IgLSBlbmRfcik7DQorICAgIGludCB3aWR0aCA9IHBCaXRtYXAtPkdldFdpZHRoKCk7DQorICAgIGludCBoZWlnaHQgPSBwQml0bWFwLT5HZXRIZWlnaHQoKTsNCisgICAgaW50IHBpdGNoID0gcEJpdG1hcC0+R2V0UGl0Y2goKTsNCisgICAgaW50IEJwcCA9IHBCaXRtYXAtPkdldEJQUCgpIC8gODsNCisgICAgRlhfQk9PTCBiRGVjcmVhc2luZyA9IEZBTFNFOw0KKyAgICBpZiAoc3RhcnRfciA+IGVuZF9yKSB7DQorICAgICAgICBpbnQgbGVuZ3RoID0gKGludClGWFNZU19zcXJ0KChGWFNZU19NdWwoc3RhcnRfeCAtIGVuZF94LCBzdGFydF94IC0gZW5kX3gpICsgRlhTWVNfTXVsKHN0YXJ0X3kgLSBlbmRfeSwgc3RhcnRfeSAtIGVuZF95KSkpOw0KKyAgICAgICAgaWYgKGxlbmd0aCA8IHN0YXJ0X3IgLSBlbmRfcikgew0KKyAgICAgICAgICAgIGJEZWNyZWFzaW5nID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgRlhfRFdPUkQqIGRpYl9idWYgPSAoRlhfRFdPUkQqKShwQml0bWFwLT5HZXRCdWZmZXIoKSArIHJvdyAqIHBpdGNoKTsNCisgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHdpZHRoOyBjb2x1bW4gKyspIHsNCisgICAgICAgICAgICBGWF9GTE9BVCB4ID0gKEZYX0ZMT0FUKWNvbHVtbiwgeSA9IChGWF9GTE9BVClyb3c7DQorICAgICAgICAgICAgbWF0cml4LlRyYW5zZm9ybSh4LCB5KTsNCisgICAgICAgICAgICBGWF9GTE9BVCBiID0gLTIgKiAoRlhTWVNfTXVsKHggLSBzdGFydF94LCBlbmRfeCAtIHN0YXJ0X3gpICsgRlhTWVNfTXVsKHkgLSBzdGFydF95LCBlbmRfeSAtIHN0YXJ0X3kpICsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfTXVsKHN0YXJ0X3IsIGVuZF9yIC0gc3RhcnRfcikpOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGMgPSBGWFNZU19NdWwoeCAtIHN0YXJ0X3gsIHggLSBzdGFydF94KSArIEZYU1lTX011bCh5IC0gc3RhcnRfeSwgeSAtIHN0YXJ0X3kpIC0NCisgICAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfTXVsKHN0YXJ0X3IsIHN0YXJ0X3IpOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIHM7DQorICAgICAgICAgICAgaWYgKGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBzID0gRlhTWVNfRGl2KC1jLCBiKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCBiMl80YWMgPSBGWFNZU19NdWwoYiwgYikgLSA0ICogRlhTWVNfTXVsKGEsIGMpOw0KKyAgICAgICAgICAgICAgICBpZiAoYjJfNGFjIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgcm9vdCA9IEZYU1lTX3NxcnQoYjJfNGFjKTsNCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgczEsIHMyOw0KKyAgICAgICAgICAgICAgICBpZiAoYSA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHMxID0gRlhTWVNfRGl2KC1iIC0gcm9vdCwgMiAqIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgczIgPSBGWFNZU19EaXYoLWIgKyByb290LCAyICogYSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBzMiA9IEZYU1lTX0RpdigtYiAtIHJvb3QsIDIgKiBhKTsNCisgICAgICAgICAgICAgICAgICAgIHMxID0gRlhTWVNfRGl2KC1iICsgcm9vdCwgMiAqIGEpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChiRGVjcmVhc2luZykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHMxID49IDAgfHwgYlN0YXJ0RXh0ZW5kKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMxOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzID0gczI7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoczIgPD0gMS4wZiB8fCBiRW5kRXh0ZW5kKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMyOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzID0gczE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKChzdGFydF9yICsgcyAqIChlbmRfciAtIHN0YXJ0X3IpKSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGludCBpbmRleCA9IChGWF9JTlQzMikocyAqIChTSEFESU5HX1NURVBTIC0gMSkpOw0KKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsNCisgICAgICAgICAgICAgICAgaWYgKCFiU3RhcnRFeHRlbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGluZGV4ID0gMDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGluZGV4ID49IFNIQURJTkdfU1RFUFMpIHsNCisgICAgICAgICAgICAgICAgaWYgKCFiRW5kRXh0ZW5kKSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpbmRleCA9IFNIQURJTkdfU1RFUFMgLSAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkaWJfYnVmW2NvbHVtbl0gPSByZ2JfYXJyYXlbaW5kZXhdOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3N0YXRpYyB2b2lkIF9EcmF3RnVuY1NoYWRpbmcoQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkJpdG1hcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcERpY3QsIENQREZfRnVuY3Rpb24qKiBwRnVuY3MsIGludCBuRnVuY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0NvbG9yU3BhY2UqIHBDUywgaW50IGFscGhhKQ0KK3sNCisgICAgQVNTRVJUKHBCaXRtYXAtPkdldEZvcm1hdCgpID09IEZYRElCX0FyZ2IpOw0KKyAgICBDUERGX0FycmF5KiBwRG9tYWluID0gcERpY3QtPkdldEFycmF5KEZYX0JTVFJDKCJEb21haW4iKSk7DQorICAgIEZYX0ZMT0FUIHhtaW4gPSAwLCB5bWluID0gMCwgeG1heCA9IDEuMGYsIHltYXggPSAxLjBmOw0KKyAgICBpZiAocERvbWFpbikgew0KKyAgICAgICAgeG1pbiA9IHBEb21haW4tPkdldE51bWJlcigwKTsNCisgICAgICAgIHhtYXggPSBwRG9tYWluLT5HZXROdW1iZXIoMSk7DQorICAgICAgICB5bWluID0gcERvbWFpbi0+R2V0TnVtYmVyKDIpOw0KKyAgICAgICAgeW1heCA9IHBEb21haW4tPkdldE51bWJlcigzKTsNCisgICAgfQ0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG10RG9tYWluMlRhcmdldCA9IHBEaWN0LT5HZXRNYXRyaXgoRlhfQlNUUkMoIk1hdHJpeCIpKTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXgsIHJldmVyc2VfbWF0cml4Ow0KKyAgICBtYXRyaXguU2V0UmV2ZXJzZSgqcE9iamVjdDJCaXRtYXApOw0KKyAgICByZXZlcnNlX21hdHJpeC5TZXRSZXZlcnNlKG10RG9tYWluMlRhcmdldCk7DQorICAgIG1hdHJpeC5Db25jYXQocmV2ZXJzZV9tYXRyaXgpOw0KKyAgICBpbnQgd2lkdGggPSBwQml0bWFwLT5HZXRXaWR0aCgpOw0KKyAgICBpbnQgaGVpZ2h0ID0gcEJpdG1hcC0+R2V0SGVpZ2h0KCk7DQorICAgIGludCBwaXRjaCA9IHBCaXRtYXAtPkdldFBpdGNoKCk7DQorICAgIGludCBCcHAgPSBwQml0bWFwLT5HZXRCUFAoKSAvIDg7DQorICAgIGludCB0b3RhbF9yZXN1bHRzID0gMDsNCisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuRnVuY3M7IGogKyspIHsNCisgICAgICAgIGlmIChwRnVuY3Nbal0pIHsNCisgICAgICAgICAgICB0b3RhbF9yZXN1bHRzICs9IHBGdW5jc1tqXS0+Q291bnRPdXRwdXRzKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBDUy0+Q291bnRDb21wb25lbnRzKCkgPiB0b3RhbF9yZXN1bHRzKSB7DQorICAgICAgICB0b3RhbF9yZXN1bHRzID0gcENTLT5Db3VudENvbXBvbmVudHMoKTsNCisgICAgfQ0KKyAgICBDRlhfRml4ZWRCdWZHcm93PEZYX0ZMT0FULCAxNj4gcmVzdWx0X2FycmF5KHRvdGFsX3Jlc3VsdHMpOw0KKyAgICBGWF9GTE9BVCogcFJlc3VsdHMgPSByZXN1bHRfYXJyYXk7DQorICAgIEZYU1lTX21lbXNldDMyKHBSZXN1bHRzLCAwLCB0b3RhbF9yZXN1bHRzICogc2l6ZW9mKEZYX0ZMT0FUKSk7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICBGWF9EV09SRCogZGliX2J1ZiA9IChGWF9EV09SRCopKHBCaXRtYXAtPkdldEJ1ZmZlcigpICsgcm93ICogcGl0Y2gpOw0KKyAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgd2lkdGg7IGNvbHVtbiArKykgew0KKyAgICAgICAgICAgIEZYX0ZMT0FUIHggPSAoRlhfRkxPQVQpY29sdW1uLCB5ID0gKEZYX0ZMT0FUKXJvdzsNCisgICAgICAgICAgICBtYXRyaXguVHJhbnNmb3JtKHgsIHkpOw0KKyAgICAgICAgICAgIGlmICh4IDwgeG1pbiB8fCB4ID4geG1heCB8fCB5IDwgeW1pbiB8fCB5ID4geW1heCkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRkxPQVQgaW5wdXRbMl07DQorICAgICAgICAgICAgaW50IG9mZnNldCA9IDA7DQorICAgICAgICAgICAgaW5wdXRbMF0gPSB4Ow0KKyAgICAgICAgICAgIGlucHV0WzFdID0geTsNCisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG5GdW5jczsgaiArKykgew0KKyAgICAgICAgICAgICAgICBpZiAocEZ1bmNzW2pdKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgbnJlc3VsdHM7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEZ1bmNzW2pdLT5DYWxsKGlucHV0LCAyLCBwUmVzdWx0cyArIG9mZnNldCwgbnJlc3VsdHMpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IG5yZXN1bHRzOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0ZMT0FUIFIsIEcsIEI7DQorICAgICAgICAgICAgcENTLT5HZXRSR0IocFJlc3VsdHMsIFIsIEcsIEIpOw0KKyAgICAgICAgICAgIGRpYl9idWZbY29sdW1uXSA9IEZYQVJHQl9UT0RJQihGWEFSR0JfTUFLRShhbHBoYSwgKEZYX0lOVDMyKShSICogMjU1KSwgKEZYX0lOVDMyKShHICogMjU1KSwgKEZYX0lOVDMyKShCICogMjU1KSkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgX0dldFNjYW5saW5lSW50ZXJzZWN0KGludCB5LCBGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwgRlhfRkxPQVQmIHgpDQorew0KKyAgICBpZiAoeTEgPT0geTIpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoeTEgPCB5Mikgew0KKyAgICAgICAgaWYgKHkgPCB5MSB8fCB5ID4geTIpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAoeSA8IHkyIHx8IHkgPiB5MSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB4ID0geDEgKyBGWFNZU19NdWxEaXYoeDIgLSB4MSwgeSAtIHkxLCB5MiAtIHkxKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3N0YXRpYyB2b2lkIF9EcmF3R291cmF1ZChDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBhbHBoYSwgQ1BERl9NZXNoVmVydGV4IHRyaWFuZ2xlWzNdKQ0KK3sNCisgICAgRlhfRkxPQVQgbWluX3kgPSB0cmlhbmdsZVswXS55LCBtYXhfeSA9IHRyaWFuZ2xlWzBdLnk7DQorICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSArKykgew0KKyAgICAgICAgaWYgKG1pbl95ID4gdHJpYW5nbGVbaV0ueSkgew0KKyAgICAgICAgICAgIG1pbl95ID0gdHJpYW5nbGVbaV0ueTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtYXhfeSA8IHRyaWFuZ2xlW2ldLnkpIHsNCisgICAgICAgICAgICBtYXhfeSA9IHRyaWFuZ2xlW2ldLnk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG1pbl95ID09IG1heF95KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IG1pbl95aSA9IChpbnQpRlhTWVNfZmxvb3IobWluX3kpLCBtYXhfeWkgPSAoaW50KUZYU1lTX2NlaWwobWF4X3kpOw0KKyAgICBpZiAobWluX3lpIDwgMCkgew0KKyAgICAgICAgbWluX3lpID0gMDsNCisgICAgfQ0KKyAgICBpZiAobWF4X3lpID49IHBCaXRtYXAtPkdldEhlaWdodCgpKSB7DQorICAgICAgICBtYXhfeWkgPSBwQml0bWFwLT5HZXRIZWlnaHQoKSAtIDE7DQorICAgIH0NCisgICAgZm9yIChpbnQgeSA9IG1pbl95aTsgeSA8PSBtYXhfeWk7IHkgKyspIHsNCisgICAgICAgIGludCBuSW50ZXJzZWN0cyA9IDA7DQorICAgICAgICBGWF9GTE9BVCBpbnRlcl94WzNdLCByWzNdLCBnWzNdLCBiWzNdOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpICsrKSB7DQorICAgICAgICAgICAgQ1BERl9NZXNoVmVydGV4JiB2ZXJ0ZXgxID0gdHJpYW5nbGVbaV07DQorICAgICAgICAgICAgQ1BERl9NZXNoVmVydGV4JiB2ZXJ0ZXgyID0gdHJpYW5nbGVbKGkgKyAxKSAlIDNdOw0KKyAgICAgICAgICAgIEZYX0JPT0wgYkludGVyc2VjdCA9IF9HZXRTY2FubGluZUludGVyc2VjdCh5LCB2ZXJ0ZXgxLngsIHZlcnRleDEueSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXgyLngsIHZlcnRleDIueSwgaW50ZXJfeFtuSW50ZXJzZWN0c10pOw0KKyAgICAgICAgICAgIGlmICghYkludGVyc2VjdCkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcltuSW50ZXJzZWN0c10gPSB2ZXJ0ZXgxLnIgKyBGWFNZU19NdWxEaXYodmVydGV4Mi5yIC0gdmVydGV4MS5yLCB5IC0gdmVydGV4MS55LCB2ZXJ0ZXgyLnkgLSB2ZXJ0ZXgxLnkpOw0KKyAgICAgICAgICAgIGdbbkludGVyc2VjdHNdID0gdmVydGV4MS5nICsgRlhTWVNfTXVsRGl2KHZlcnRleDIuZyAtIHZlcnRleDEuZywgeSAtIHZlcnRleDEueSwgdmVydGV4Mi55IC0gdmVydGV4MS55KTsNCisgICAgICAgICAgICBiW25JbnRlcnNlY3RzXSA9IHZlcnRleDEuYiArIEZYU1lTX011bERpdih2ZXJ0ZXgyLmIgLSB2ZXJ0ZXgxLmIsIHkgLSB2ZXJ0ZXgxLnksIHZlcnRleDIueSAtIHZlcnRleDEueSk7DQorICAgICAgICAgICAgbkludGVyc2VjdHMgKys7DQorICAgICAgICB9DQorICAgICAgICBpZiAobkludGVyc2VjdHMgIT0gMikgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IG1pbl94LCBtYXhfeCwgc3RhcnRfaW5kZXgsIGVuZF9pbmRleDsNCisgICAgICAgIGlmIChpbnRlcl94WzBdIDwgaW50ZXJfeFsxXSkgew0KKyAgICAgICAgICAgIG1pbl94ID0gKGludClGWFNZU19mbG9vcihpbnRlcl94WzBdKTsNCisgICAgICAgICAgICBtYXhfeCA9IChpbnQpRlhTWVNfY2VpbChpbnRlcl94WzFdKTsNCisgICAgICAgICAgICBzdGFydF9pbmRleCA9IDA7DQorICAgICAgICAgICAgZW5kX2luZGV4ID0gMTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbWluX3ggPSAoaW50KUZYU1lTX2Zsb29yKGludGVyX3hbMV0pOw0KKyAgICAgICAgICAgIG1heF94ID0gKGludClGWFNZU19jZWlsKGludGVyX3hbMF0pOw0KKyAgICAgICAgICAgIHN0YXJ0X2luZGV4ID0gMTsNCisgICAgICAgICAgICBlbmRfaW5kZXggPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IHN0YXJ0X3ggPSBtaW5feCwgZW5kX3ggPSBtYXhfeDsNCisgICAgICAgIGlmIChzdGFydF94IDwgMCkgew0KKyAgICAgICAgICAgIHN0YXJ0X3ggPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGVuZF94ID4gcEJpdG1hcC0+R2V0V2lkdGgoKSkgew0KKyAgICAgICAgICAgIGVuZF94ID0gcEJpdG1hcC0+R2V0V2lkdGgoKTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQQllURSBkaWJfYnVmID0gcEJpdG1hcC0+R2V0QnVmZmVyKCkgKyB5ICogcEJpdG1hcC0+R2V0UGl0Y2goKSArIHN0YXJ0X3ggKiA0Ow0KKyAgICAgICAgRlhfRkxPQVQgcl91bml0ID0gKHJbZW5kX2luZGV4XSAtIHJbc3RhcnRfaW5kZXhdKSAvIChtYXhfeCAtIG1pbl94KTsNCisgICAgICAgIEZYX0ZMT0FUIGdfdW5pdCA9IChnW2VuZF9pbmRleF0gLSBnW3N0YXJ0X2luZGV4XSkgLyAobWF4X3ggLSBtaW5feCk7DQorICAgICAgICBGWF9GTE9BVCBiX3VuaXQgPSAoYltlbmRfaW5kZXhdIC0gYltzdGFydF9pbmRleF0pIC8gKG1heF94IC0gbWluX3gpOw0KKyAgICAgICAgRlhfRkxPQVQgUiA9IHJbc3RhcnRfaW5kZXhdICsgKHN0YXJ0X3ggLSBtaW5feCkgKiByX3VuaXQ7DQorICAgICAgICBGWF9GTE9BVCBHID0gZ1tzdGFydF9pbmRleF0gKyAoc3RhcnRfeCAtIG1pbl94KSAqIGdfdW5pdDsNCisgICAgICAgIEZYX0ZMT0FUIEIgPSBiW3N0YXJ0X2luZGV4XSArIChzdGFydF94IC0gbWluX3gpICogYl91bml0Ow0KKyAgICAgICAgZm9yIChpbnQgeCA9IHN0YXJ0X3g7IHggPCBlbmRfeDsgeCArKykgew0KKyAgICAgICAgICAgIFIgKz0gcl91bml0Ow0KKyAgICAgICAgICAgIEcgKz0gZ191bml0Ow0KKyAgICAgICAgICAgIEIgKz0gYl91bml0Ow0KKyAgICAgICAgICAgIEZYQVJHQl9TRVRESUIoZGliX2J1ZiwgRlhBUkdCX01BS0UoYWxwaGEsIChGWF9JTlQzMikoUiAqIDI1NSksIChGWF9JTlQzMikoRyAqIDI1NSksIChGWF9JTlQzMikoQiAqIDI1NSkpKTsNCisgICAgICAgICAgICBkaWJfYnVmICs9IDQ7DQorICAgICAgICB9DQorICAgIH0NCit9DQorc3RhdGljIHZvaWQgX0RyYXdGcmVlR291cmF1ZFNoYWRpbmcoQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkJpdG1hcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1N0cmVhbSogcFNoYWRpbmdTdHJlYW0sIENQREZfRnVuY3Rpb24qKiBwRnVuY3MsIGludCBuRnVuY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9Db2xvclNwYWNlKiBwQ1MsIGludCBhbHBoYSkNCit7DQorICAgIEFTU0VSVChwQml0bWFwLT5HZXRGb3JtYXQoKSA9PSBGWERJQl9BcmdiKTsNCisgICAgaWYgKHBTaGFkaW5nU3RyZWFtLT5HZXRUeXBlKCkgIT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfTWVzaFN0cmVhbSBzdHJlYW07DQorICAgIGlmICghc3RyZWFtLkxvYWQocFNoYWRpbmdTdHJlYW0sIHBGdW5jcywgbkZ1bmNzLCBwQ1MpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9NZXNoVmVydGV4IHRyaWFuZ2xlWzNdOw0KKyAgICB3aGlsZSAoIXN0cmVhbS5tX0JpdFN0cmVhbS5Jc0VPRigpKSB7DQorICAgICAgICBDUERGX01lc2hWZXJ0ZXggdmVydGV4Ow0KKyAgICAgICAgRlhfRFdPUkQgZmxhZyA9IHN0cmVhbS5HZXRWZXJ0ZXgodmVydGV4LCBwT2JqZWN0MkJpdG1hcCk7DQorICAgICAgICBpZiAoZmxhZyA9PSAwKSB7DQorICAgICAgICAgICAgdHJpYW5nbGVbMF0gPSB2ZXJ0ZXg7DQorICAgICAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPCAzOyBqICsrKSB7DQorICAgICAgICAgICAgICAgIHN0cmVhbS5HZXRWZXJ0ZXgodHJpYW5nbGVbal0sIHBPYmplY3QyQml0bWFwKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChmbGFnID09IDEpIHsNCisgICAgICAgICAgICAgICAgdHJpYW5nbGVbMF0gPSB0cmlhbmdsZVsxXTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgdHJpYW5nbGVbMV0gPSB0cmlhbmdsZVsyXTsNCisgICAgICAgICAgICB0cmlhbmdsZVsyXSA9IHZlcnRleDsNCisgICAgICAgIH0NCisgICAgICAgIF9EcmF3R291cmF1ZChwQml0bWFwLCBhbHBoYSwgdHJpYW5nbGUpOw0KKyAgICB9DQorfQ0KK3N0YXRpYyB2b2lkIF9EcmF3TGF0dGljZUdvdXJhdWRTaGFkaW5nKENGWF9ESUJpdG1hcCogcEJpdG1hcCwgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJCaXRtYXAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9TdHJlYW0qIHBTaGFkaW5nU3RyZWFtLCBDUERGX0Z1bmN0aW9uKiogcEZ1bmNzLCBpbnQgbkZ1bmNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfQ29sb3JTcGFjZSogcENTLCBpbnQgYWxwaGEpDQorew0KKyAgICBBU1NFUlQocEJpdG1hcC0+R2V0Rm9ybWF0KCkgPT0gRlhESUJfQXJnYik7DQorICAgIGlmIChwU2hhZGluZ1N0cmVhbS0+R2V0VHlwZSgpICE9IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgcm93X3ZlcnRzID0gcFNoYWRpbmdTdHJlYW0tPkdldERpY3QoKS0+R2V0SW50ZWdlcigiVmVydGljZXNQZXJSb3ciKTsNCisgICAgaWYgKHJvd192ZXJ0cyA8IDIpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX01lc2hTdHJlYW0gc3RyZWFtOw0KKyAgICBpZiAoIXN0cmVhbS5Mb2FkKHBTaGFkaW5nU3RyZWFtLCBwRnVuY3MsIG5GdW5jcywgcENTKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfTWVzaFZlcnRleCogdmVydGV4ID0gRlhfQWxsb2MoQ1BERl9NZXNoVmVydGV4LCByb3dfdmVydHMgKiAyKTsNCisgICAgaWYgKCFzdHJlYW0uR2V0VmVydGV4Um93KHZlcnRleCwgcm93X3ZlcnRzLCBwT2JqZWN0MkJpdG1hcCkpIHsNCisgICAgICAgIEZYX0ZyZWUodmVydGV4KTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgbGFzdF9pbmRleCA9IDA7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBDUERGX01lc2hWZXJ0ZXgqIGxhc3Rfcm93ID0gdmVydGV4ICsgbGFzdF9pbmRleCAqIHJvd192ZXJ0czsNCisgICAgICAgIENQREZfTWVzaFZlcnRleCogdGhpc19yb3cgPSB2ZXJ0ZXggKyAoMSAtIGxhc3RfaW5kZXgpICogcm93X3ZlcnRzOw0KKyAgICAgICAgaWYgKCFzdHJlYW0uR2V0VmVydGV4Um93KHRoaXNfcm93LCByb3dfdmVydHMsIHBPYmplY3QyQml0bWFwKSkgew0KKyAgICAgICAgICAgIEZYX0ZyZWUodmVydGV4KTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBDUERGX01lc2hWZXJ0ZXggdHJpYW5nbGVbM107DQorICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHJvd192ZXJ0czsgaSArKykgew0KKyAgICAgICAgICAgIHRyaWFuZ2xlWzBdID0gbGFzdF9yb3dbaV07DQorICAgICAgICAgICAgdHJpYW5nbGVbMV0gPSB0aGlzX3Jvd1tpIC0gMV07DQorICAgICAgICAgICAgdHJpYW5nbGVbMl0gPSBsYXN0X3Jvd1tpIC0gMV07DQorICAgICAgICAgICAgX0RyYXdHb3VyYXVkKHBCaXRtYXAsIGFscGhhLCB0cmlhbmdsZSk7DQorICAgICAgICAgICAgdHJpYW5nbGVbMl0gPSB0aGlzX3Jvd1tpXTsNCisgICAgICAgICAgICBfRHJhd0dvdXJhdWQocEJpdG1hcCwgYWxwaGEsIHRyaWFuZ2xlKTsNCisgICAgICAgIH0NCisgICAgICAgIGxhc3RfaW5kZXggPSAxIC0gbGFzdF9pbmRleDsNCisgICAgfQ0KKyAgICBGWF9GcmVlKHZlcnRleCk7DQorfQ0KK3N0cnVjdCBDb29uX0JlemllckNvZWZmIHsNCisgICAgZmxvYXQgYSwgYiwgYywgZDsNCisgICAgdm9pZCBGcm9tUG9pbnRzKGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IHAzKQ0KKyAgICB7DQorICAgICAgICBhID0gLXAwICsgMyAqIHAxIC0gMyAqIHAyICsgcDM7DQorICAgICAgICBiID0gMyAqIHAwIC0gNiAqIHAxICsgMyAqIHAyOw0KKyAgICAgICAgYyA9IC0zICogcDAgKyAzICogcDE7DQorICAgICAgICBkID0gcDA7DQorICAgIH0NCisgICAgQ29vbl9CZXppZXJDb2VmZiBmaXJzdF9oYWxmKCkNCisgICAgew0KKyAgICAgICAgQ29vbl9CZXppZXJDb2VmZiByZXN1bHQ7DQorICAgICAgICByZXN1bHQuYSA9IGEgLyA4Ow0KKyAgICAgICAgcmVzdWx0LmIgPSBiIC8gNDsNCisgICAgICAgIHJlc3VsdC5jID0gYyAvIDI7DQorICAgICAgICByZXN1bHQuZCA9IGQ7DQorICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICB9DQorICAgIENvb25fQmV6aWVyQ29lZmYgc2Vjb25kX2hhbGYoKQ0KKyAgICB7DQorICAgICAgICBDb29uX0JlemllckNvZWZmIHJlc3VsdDsNCisgICAgICAgIHJlc3VsdC5hID0gYSAvIDg7DQorICAgICAgICByZXN1bHQuYiA9IDMgKiBhIC8gOCArIGIgLyA0Ow0KKyAgICAgICAgcmVzdWx0LmMgPSAzICogYSAvIDggKyBiIC8gMiArIGMgLyAyOw0KKyAgICAgICAgcmVzdWx0LmQgPSBhIC8gOCArIGIgLyA0ICsgYyAvIDIgKyBkOw0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKyAgICB2b2lkIEdldFBvaW50cyhmbG9hdCBwWzRdKQ0KKyAgICB7DQorICAgICAgICBwWzBdID0gZDsNCisgICAgICAgIHBbMV0gPSBjIC8gMyArIHBbMF07DQorICAgICAgICBwWzJdID0gYiAvIDMgLSBwWzBdICsgMiAqIHBbMV07DQorICAgICAgICBwWzNdID0gYSArIHBbMF0gLSAzICogcFsxXSArIDMgKiBwWzJdOw0KKyAgICB9DQorICAgIHZvaWQgR2V0UG9pbnRzUmV2ZXJzZShmbG9hdCBwWzRdKQ0KKyAgICB7DQorICAgICAgICBwWzNdID0gZDsNCisgICAgICAgIHBbMl0gPSBjIC8gMyArIHBbM107DQorICAgICAgICBwWzFdID0gYiAvIDMgLSBwWzNdICsgMiAqIHBbMl07DQorICAgICAgICBwWzBdID0gYSArIHBbM10gLSAzICogcFsyXSArIDMgKiBwWzFdOw0KKyAgICB9DQorICAgIHZvaWQgQmV6aWVySW50ZXJwb2woQ29vbl9CZXppZXJDb2VmZiYgQzEsIENvb25fQmV6aWVyQ29lZmYmIEMyLCBDb29uX0JlemllckNvZWZmJiBEMSwgQ29vbl9CZXppZXJDb2VmZiYgRDIpDQorICAgIHsNCisgICAgICAgIGEgPSAoRDEuYSArIEQyLmEpIC8gMjsNCisgICAgICAgIGIgPSAoRDEuYiArIEQyLmIpIC8gMjsNCisgICAgICAgIGMgPSAoRDEuYyArIEQyLmMpIC8gMiAtIChDMS5hIC8gOCArIEMxLmIgLyA0ICsgQzEuYyAvIDIpICsgKEMyLmEgLyA4ICsgQzIuYiAvIDQpICsgKC1DMS5kICsgRDIuZCkgLyAyIC0gKEMyLmEgKyBDMi5iKSAvIDI7DQorICAgICAgICBkID0gQzEuYSAvIDggKyBDMS5iIC8gNCArIEMxLmMgLyAyICsgQzEuZDsNCisgICAgfQ0KKyAgICBmbG9hdCBEaXN0YW5jZSgpDQorICAgIHsNCisgICAgICAgIGZsb2F0IGRpcyA9IGEgKyBiICsgYzsNCisgICAgICAgIHJldHVybiBkaXMgPCAwID8gLWRpcyA6IGRpczsNCisgICAgfQ0KK307DQorc3RydWN0IENvb25fQmV6aWVyIHsNCisgICAgQ29vbl9CZXppZXJDb2VmZiB4LCB5Ow0KKyAgICB2b2lkIEZyb21Qb2ludHMoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5MiwgZmxvYXQgeDMsIGZsb2F0IHkzKQ0KKyAgICB7DQorICAgICAgICB4LkZyb21Qb2ludHMoeDAsIHgxLCB4MiwgeDMpOw0KKyAgICAgICAgeS5Gcm9tUG9pbnRzKHkwLCB5MSwgeTIsIHkzKTsNCisgICAgfQ0KKyAgICBDb29uX0JlemllciBmaXJzdF9oYWxmKCkNCisgICAgew0KKyAgICAgICAgQ29vbl9CZXppZXIgcmVzdWx0Ow0KKyAgICAgICAgcmVzdWx0LnggPSB4LmZpcnN0X2hhbGYoKTsNCisgICAgICAgIHJlc3VsdC55ID0geS5maXJzdF9oYWxmKCk7DQorICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICB9DQorICAgIENvb25fQmV6aWVyIHNlY29uZF9oYWxmKCkNCisgICAgew0KKyAgICAgICAgQ29vbl9CZXppZXIgcmVzdWx0Ow0KKyAgICAgICAgcmVzdWx0LnggPSB4LnNlY29uZF9oYWxmKCk7DQorICAgICAgICByZXN1bHQueSA9IHkuc2Vjb25kX2hhbGYoKTsNCisgICAgICAgIHJldHVybiByZXN1bHQ7DQorICAgIH0NCisgICAgdm9pZCBCZXppZXJJbnRlcnBvbChDb29uX0JlemllciYgQzEsIENvb25fQmV6aWVyJiBDMiwgQ29vbl9CZXppZXImIEQxLCBDb29uX0JlemllciYgRDIpDQorICAgIHsNCisgICAgICAgIHguQmV6aWVySW50ZXJwb2woQzEueCwgQzIueCwgRDEueCwgRDIueCk7DQorICAgICAgICB5LkJlemllckludGVycG9sKEMxLnksIEMyLnksIEQxLnksIEQyLnkpOw0KKyAgICB9DQorICAgIHZvaWQgR2V0UG9pbnRzKEZYX1BBVEhQT0lOVCogcFBvaW50cykNCisgICAgew0KKyAgICAgICAgZmxvYXQgcFs0XTsNCisgICAgICAgIGludCBpOw0KKyAgICAgICAgeC5HZXRQb2ludHMocCk7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgICAgIHBQb2ludHNbaV0ubV9Qb2ludFggPSBwW2ldOw0KKyAgICAgICAgfQ0KKyAgICAgICAgeS5HZXRQb2ludHMocCk7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgICAgIHBQb2ludHNbaV0ubV9Qb2ludFkgPSBwW2ldOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHZvaWQgR2V0UG9pbnRzUmV2ZXJzZShGWF9QQVRIUE9JTlQqIHBQb2ludHMpDQorICAgIHsNCisgICAgICAgIGZsb2F0IHBbNF07DQorICAgICAgICBpbnQgaTsNCisgICAgICAgIHguR2V0UG9pbnRzUmV2ZXJzZShwKTsNCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpICsrKSB7DQorICAgICAgICAgICAgcFBvaW50c1tpXS5tX1BvaW50WCA9IHBbaV07DQorICAgICAgICB9DQorICAgICAgICB5LkdldFBvaW50c1JldmVyc2UocCk7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgICAgIHBQb2ludHNbaV0ubV9Qb2ludFkgPSBwW2ldOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGZsb2F0IERpc3RhbmNlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHguRGlzdGFuY2UoKSArIHkuRGlzdGFuY2UoKTsNCisgICAgfQ0KK307DQorc3RhdGljIGludCBfQmlJbnRlcnBvbChpbnQgYzAsIGludCBjMSwgaW50IGMyLCBpbnQgYzMsIGludCB4LCBpbnQgeSwgaW50IHhfc2NhbGUsIGludCB5X3NjYWxlKQ0KK3sNCisgICAgaW50IHgxID0gYzAgKyAoYzMgLSBjMCkgKiB4IC8geF9zY2FsZTsNCisgICAgaW50IHgyID0gYzEgKyAoYzIgLSBjMSkgKiB4IC8geF9zY2FsZTsNCisgICAgcmV0dXJuIHgxICsgKHgyIC0geDEpICogeSAvIHlfc2NhbGU7DQorfQ0KK3N0cnVjdCBDb29uX0NvbG9yIHsNCisgICAgQ29vbl9Db2xvcigpDQorICAgIHsNCisgICAgICAgIEZYU1lTX21lbXNldDMyKGNvbXAsIDAsIHNpemVvZihpbnQpICogMyk7DQorICAgIH0NCisgICAgaW50CQljb21wWzNdOw0KKyAgICB2b2lkCUJpSW50ZXJwb2woQ29vbl9Db2xvciBjb2xvcnNbNF0sIGludCB4LCBpbnQgeSwgaW50IHhfc2NhbGUsIGludCB5X3NjYWxlKQ0KKyAgICB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkgKyspDQorICAgICAgICAgICAgY29tcFtpXSA9IF9CaUludGVycG9sKGNvbG9yc1swXS5jb21wW2ldLCBjb2xvcnNbMV0uY29tcFtpXSwgY29sb3JzWzJdLmNvbXBbaV0sIGNvbG9yc1szXS5jb21wW2ldLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LCB5LCB4X3NjYWxlLCB5X3NjYWxlKTsNCisgICAgfQ0KKyAgICBpbnQJCURpc3RhbmNlKENvb25fQ29sb3ImIG8pDQorICAgIHsNCisgICAgICAgIGludCBtYXgsIGRpZmY7DQorICAgICAgICBtYXggPSBGWFNZU19hYnMoY29tcFswXSAtIG8uY29tcFswXSk7DQorICAgICAgICBkaWZmID0gRlhTWVNfYWJzKGNvbXBbMV0gLSBvLmNvbXBbMV0pOw0KKyAgICAgICAgaWYgKG1heCA8IGRpZmYpIHsNCisgICAgICAgICAgICBtYXggPSBkaWZmOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGlmZiA9IEZYU1lTX2Ficyhjb21wWzJdIC0gby5jb21wWzJdKTsNCisgICAgICAgIGlmIChtYXggPCBkaWZmKSB7DQorICAgICAgICAgICAgbWF4ID0gZGlmZjsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBtYXg7DQorICAgIH0NCit9Ow0KK3N0cnVjdCBDUERGX1BhdGNoRHJhd2VyIHsNCisgICAgQ29vbl9Db2xvcgkJCXBhdGNoX2NvbG9yc1s0XTsNCisgICAgaW50CQkJCQltYXhfZGVsdGE7DQorICAgIENGWF9QYXRoRGF0YQkJcGF0aDsNCisgICAgQ0ZYX1JlbmRlckRldmljZSoJcERldmljZTsNCisgICAgaW50CQkJCQlmaWxsX21vZGU7DQorICAgIGludAkJCQkJYWxwaGE7DQorICAgIHZvaWQgRHJhdyhpbnQgeF9zY2FsZSwgaW50IHlfc2NhbGUsIGludCBsZWZ0LCBpbnQgYm90dG9tLCBDb29uX0JlemllciBDMSwgQ29vbl9CZXppZXIgQzIsIENvb25fQmV6aWVyIEQxLCBDb29uX0JlemllciBEMikNCisgICAgew0KKyAgICAgICAgRlhfQk9PTCBiU21hbGwgPSBDMS5EaXN0YW5jZSgpIDwgMiAmJiBDMi5EaXN0YW5jZSgpIDwgMiAmJiBEMS5EaXN0YW5jZSgpIDwgMiAmJiBEMi5EaXN0YW5jZSgpIDwgMjsNCisgICAgICAgIENvb25fQ29sb3IgZGl2X2NvbG9yc1s0XTsNCisgICAgICAgIGludCBkX2JvdHRvbSwgZF9sZWZ0LCBkX3RvcCwgZF9yaWdodDsNCisgICAgICAgIGRpdl9jb2xvcnNbMF0uQmlJbnRlcnBvbChwYXRjaF9jb2xvcnMsIGxlZnQsIGJvdHRvbSwgeF9zY2FsZSwgeV9zY2FsZSk7DQorICAgICAgICBpZiAoIWJTbWFsbCkgew0KKyAgICAgICAgICAgIGRpdl9jb2xvcnNbMV0uQmlJbnRlcnBvbChwYXRjaF9jb2xvcnMsIGxlZnQsIGJvdHRvbSArIDEsIHhfc2NhbGUsIHlfc2NhbGUpOw0KKyAgICAgICAgICAgIGRpdl9jb2xvcnNbMl0uQmlJbnRlcnBvbChwYXRjaF9jb2xvcnMsIGxlZnQgKyAxLCBib3R0b20gKyAxLCB4X3NjYWxlLCB5X3NjYWxlKTsNCisgICAgICAgICAgICBkaXZfY29sb3JzWzNdLkJpSW50ZXJwb2wocGF0Y2hfY29sb3JzLCBsZWZ0ICsgMSwgYm90dG9tLCB4X3NjYWxlLCB5X3NjYWxlKTsNCisgICAgICAgICAgICBkX2JvdHRvbSA9IGRpdl9jb2xvcnNbM10uRGlzdGFuY2UoZGl2X2NvbG9yc1swXSk7DQorICAgICAgICAgICAgZF9sZWZ0ID0gZGl2X2NvbG9yc1sxXS5EaXN0YW5jZShkaXZfY29sb3JzWzBdKTsNCisgICAgICAgICAgICBkX3RvcCA9IGRpdl9jb2xvcnNbMV0uRGlzdGFuY2UoZGl2X2NvbG9yc1syXSk7DQorICAgICAgICAgICAgZF9yaWdodCA9IGRpdl9jb2xvcnNbMl0uRGlzdGFuY2UoZGl2X2NvbG9yc1szXSk7DQorICAgICAgICB9DQorI2RlZmluZSBDT09OQ09MT1JfVEhSRVNIT0xEIDQNCisgICAgICAgIGlmIChiU21hbGwgfHwgKGRfYm90dG9tIDwgQ09PTkNPTE9SX1RIUkVTSE9MRCAmJiBkX2xlZnQgPCBDT09OQ09MT1JfVEhSRVNIT0xEICYmDQorICAgICAgICAgICAgICAgICAgICAgICBkX3RvcCA8IENPT05DT0xPUl9USFJFU0hPTEQgJiYgZF9yaWdodCA8IENPT05DT0xPUl9USFJFU0hPTEQpKSB7DQorICAgICAgICAgICAgRlhfUEFUSFBPSU5UKiBwUG9pbnRzID0gcGF0aC5HZXRQb2ludHMoKTsNCisgICAgICAgICAgICBDMS5HZXRQb2ludHMocFBvaW50cyk7DQorICAgICAgICAgICAgRDIuR2V0UG9pbnRzKHBQb2ludHMgKyAzKTsNCisgICAgICAgICAgICBDMi5HZXRQb2ludHNSZXZlcnNlKHBQb2ludHMgKyA2KTsNCisgICAgICAgICAgICBEMS5HZXRQb2ludHNSZXZlcnNlKHBQb2ludHMgKyA5KTsNCisgICAgICAgICAgICBpbnQgZmlsbEZsYWdzID0gRlhGSUxMX1dJTkRJTkcgfCBGWEZJTExfRlVMTENPVkVSOw0KKyAgICAgICAgICAgIGlmIChmaWxsX21vZGUgJiBSRU5ERVJfTk9QQVRIU01PT1RIKSB7DQorICAgICAgICAgICAgICAgIGZpbGxGbGFncyB8PSBGWEZJTExfTk9QQVRIU01PT1RIOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwRGV2aWNlLT5EcmF3UGF0aCgmcGF0aCwgTlVMTCwgTlVMTCwgRlhBUkdCX01BS0UoYWxwaGEsIGRpdl9jb2xvcnNbMF0uY29tcFswXSwgZGl2X2NvbG9yc1swXS5jb21wWzFdLCBkaXZfY29sb3JzWzBdLmNvbXBbMl0pLCAwLCBmaWxsRmxhZ3MpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAoZF9ib3R0b20gPCBDT09OQ09MT1JfVEhSRVNIT0xEICYmIGRfdG9wIDwgQ09PTkNPTE9SX1RIUkVTSE9MRCkgew0KKyAgICAgICAgICAgICAgICBDb29uX0JlemllciBtMTsNCisgICAgICAgICAgICAgICAgbTEuQmV6aWVySW50ZXJwb2woRDEsIEQyLCBDMSwgQzIpOw0KKyAgICAgICAgICAgICAgICB5X3NjYWxlICo9IDI7DQorICAgICAgICAgICAgICAgIGJvdHRvbSAqPSAyOw0KKyAgICAgICAgICAgICAgICBEcmF3KHhfc2NhbGUsIHlfc2NhbGUsIGxlZnQsIGJvdHRvbSwgQzEsIG0xLCBEMS5maXJzdF9oYWxmKCksIEQyLmZpcnN0X2hhbGYoKSk7DQorICAgICAgICAgICAgICAgIERyYXcoeF9zY2FsZSwgeV9zY2FsZSwgbGVmdCwgYm90dG9tICsgMSwgbTEsIEMyLCBEMS5zZWNvbmRfaGFsZigpLCBEMi5zZWNvbmRfaGFsZigpKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKGRfbGVmdCA8IENPT05DT0xPUl9USFJFU0hPTEQgJiYgZF9yaWdodCA8IENPT05DT0xPUl9USFJFU0hPTEQpIHsNCisgICAgICAgICAgICAgICAgQ29vbl9CZXppZXIgbTI7DQorICAgICAgICAgICAgICAgIG0yLkJlemllckludGVycG9sKEMxLCBDMiwgRDEsIEQyKTsNCisgICAgICAgICAgICAgICAgeF9zY2FsZSAqPSAyOw0KKyAgICAgICAgICAgICAgICBsZWZ0ICo9IDI7DQorICAgICAgICAgICAgICAgIERyYXcoeF9zY2FsZSwgeV9zY2FsZSwgbGVmdCwgYm90dG9tLCBDMS5maXJzdF9oYWxmKCksIEMyLmZpcnN0X2hhbGYoKSwgRDEsIG0yKTsNCisgICAgICAgICAgICAgICAgRHJhdyh4X3NjYWxlLCB5X3NjYWxlLCBsZWZ0ICsgMSwgYm90dG9tLCBDMS5zZWNvbmRfaGFsZigpLCBDMi5zZWNvbmRfaGFsZigpLCBtMiwgRDIpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIENvb25fQmV6aWVyIG0xLCBtMjsNCisgICAgICAgICAgICAgICAgbTEuQmV6aWVySW50ZXJwb2woRDEsIEQyLCBDMSwgQzIpOw0KKyAgICAgICAgICAgICAgICBtMi5CZXppZXJJbnRlcnBvbChDMSwgQzIsIEQxLCBEMik7DQorICAgICAgICAgICAgICAgIENvb25fQmV6aWVyIG0xZiA9IG0xLmZpcnN0X2hhbGYoKTsNCisgICAgICAgICAgICAgICAgQ29vbl9CZXppZXIgbTFzID0gbTEuc2Vjb25kX2hhbGYoKTsNCisgICAgICAgICAgICAgICAgQ29vbl9CZXppZXIgbTJmID0gbTIuZmlyc3RfaGFsZigpOw0KKyAgICAgICAgICAgICAgICBDb29uX0JlemllciBtMnMgPSBtMi5zZWNvbmRfaGFsZigpOw0KKyAgICAgICAgICAgICAgICB4X3NjYWxlICo9IDI7DQorICAgICAgICAgICAgICAgIHlfc2NhbGUgKj0gMjsNCisgICAgICAgICAgICAgICAgbGVmdCAqPSAyOw0KKyAgICAgICAgICAgICAgICBib3R0b20gKj0gMjsNCisgICAgICAgICAgICAgICAgRHJhdyh4X3NjYWxlLCB5X3NjYWxlLCBsZWZ0LCBib3R0b20sIEMxLmZpcnN0X2hhbGYoKSwgbTFmLCBEMS5maXJzdF9oYWxmKCksIG0yZik7DQorICAgICAgICAgICAgICAgIERyYXcoeF9zY2FsZSwgeV9zY2FsZSwgbGVmdCwgYm90dG9tICsgMSwgbTFmLCBDMi5maXJzdF9oYWxmKCksIEQxLnNlY29uZF9oYWxmKCksIG0ycyk7DQorICAgICAgICAgICAgICAgIERyYXcoeF9zY2FsZSwgeV9zY2FsZSwgbGVmdCArIDEsIGJvdHRvbSwgQzEuc2Vjb25kX2hhbGYoKSwgbTFzLCBtMmYsIEQyLmZpcnN0X2hhbGYoKSk7DQorICAgICAgICAgICAgICAgIERyYXcoeF9zY2FsZSwgeV9zY2FsZSwgbGVmdCArIDEsIGJvdHRvbSArIDEsIG0xcywgQzIuc2Vjb25kX2hhbGYoKSwgbTJzLCBEMi5zZWNvbmRfaGFsZigpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCit9Ow0KK3N0YXRpYyB2b2lkIF9EcmF3Q29vblBhdGNoTWVzaGVzKEZYX0JPT0wgYlRlbnNvciwgQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkJpdG1hcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1N0cmVhbSogcFNoYWRpbmdTdHJlYW0sIENQREZfRnVuY3Rpb24qKiBwRnVuY3MsIGludCBuRnVuY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9Db2xvclNwYWNlKiBwQ1MsIGludCBmaWxsX21vZGUsIGludCBhbHBoYSkNCit7DQorICAgIEFTU0VSVChwQml0bWFwLT5HZXRGb3JtYXQoKSA9PSBGWERJQl9BcmdiKTsNCisgICAgaWYgKHBTaGFkaW5nU3RyZWFtLT5HZXRUeXBlKCkgIT0gUERGT0JKX1NUUkVBTSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9GeGdlRGV2aWNlIGRldmljZTsNCisgICAgZGV2aWNlLkF0dGFjaChwQml0bWFwKTsNCisgICAgQ1BERl9NZXNoU3RyZWFtIHN0cmVhbTsNCisgICAgaWYgKCFzdHJlYW0uTG9hZChwU2hhZGluZ1N0cmVhbSwgcEZ1bmNzLCBuRnVuY3MsIHBDUykpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX1BhdGNoRHJhd2VyIHBhdGNoOw0KKyAgICBwYXRjaC5hbHBoYSA9IGFscGhhOw0KKyAgICBwYXRjaC5wRGV2aWNlID0gJmRldmljZTsNCisgICAgcGF0Y2guZmlsbF9tb2RlID0gZmlsbF9tb2RlOw0KKyAgICBwYXRjaC5wYXRoLlNldFBvaW50Q291bnQoMTMpOw0KKyAgICBGWF9QQVRIUE9JTlQqIHBQb2ludHMgPSBwYXRjaC5wYXRoLkdldFBvaW50cygpOw0KKyAgICBwUG9pbnRzWzBdLm1fRmxhZyA9IEZYUFRfTU9WRVRPOw0KKyAgICBmb3IgKGludCBpID0gMTsgaSA8IDEzOyBpICsrKSB7DQorICAgICAgICBwUG9pbnRzW2ldLm1fRmxhZyA9IEZYUFRfQkVaSUVSVE87DQorICAgIH0NCisgICAgQ0ZYX0Zsb2F0UG9pbnQgY29vcmRzWzE2XTsNCisgICAgaW50IHBvaW50X2NvdW50ID0gYlRlbnNvciA/IDE2IDogMTI7DQorICAgIHdoaWxlICghc3RyZWFtLm1fQml0U3RyZWFtLklzRU9GKCkpIHsNCisgICAgICAgIEZYX0RXT1JEIGZsYWcgPSBzdHJlYW0uR2V0RmxhZygpOw0KKyAgICAgICAgaW50IGlTdGFydFBvaW50ID0gMCwgaVN0YXJ0Q29sb3IgPSAwLCBpOw0KKyAgICAgICAgaWYgKGZsYWcpIHsNCisgICAgICAgICAgICBpU3RhcnRQb2ludCA9IDQ7DQorICAgICAgICAgICAgaVN0YXJ0Q29sb3IgPSAyOw0KKyAgICAgICAgICAgIENGWF9GbG9hdFBvaW50IHRlbXBDb29yZHNbNF07DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpICsrKSB7DQorICAgICAgICAgICAgICAgIHRlbXBDb29yZHNbaV0gPSBjb29yZHNbKGZsYWcgKiAzICsgaSkgJSAxMl07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKGNvb3JkcywgdGVtcENvb3Jkcywgc2l6ZW9mKENGWF9GbG9hdFBvaW50KSAqIDQpOw0KKyAgICAgICAgICAgIENvb25fQ29sb3IgdGVtcENvbG9yc1syXTsNCisgICAgICAgICAgICB0ZW1wQ29sb3JzWzBdID0gcGF0Y2gucGF0Y2hfY29sb3JzW2ZsYWddOw0KKyAgICAgICAgICAgIHRlbXBDb2xvcnNbMV0gPSBwYXRjaC5wYXRjaF9jb2xvcnNbKGZsYWcgKyAxKSAlIDRdOw0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKHBhdGNoLnBhdGNoX2NvbG9ycywgdGVtcENvbG9ycywgc2l6ZW9mKENvb25fQ29sb3IpICogMik7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGkgPSBpU3RhcnRQb2ludDsgaSA8IHBvaW50X2NvdW50OyBpICsrKSB7DQorICAgICAgICAgICAgc3RyZWFtLkdldENvb3Jkcyhjb29yZHNbaV0ueCwgY29vcmRzW2ldLnkpOw0KKyAgICAgICAgICAgIHBPYmplY3QyQml0bWFwLT5UcmFuc2Zvcm0oY29vcmRzW2ldLngsIGNvb3Jkc1tpXS55KTsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaSA9IGlTdGFydENvbG9yOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgICAgIEZYX0ZMT0FUIHIsIGcsIGI7DQorICAgICAgICAgICAgc3RyZWFtLkdldENvbG9yKHIsIGcsIGIpOw0KKyAgICAgICAgICAgIHBhdGNoLnBhdGNoX2NvbG9yc1tpXS5jb21wWzBdID0gKEZYX0lOVDMyKShyICogMjU1KTsNCisgICAgICAgICAgICBwYXRjaC5wYXRjaF9jb2xvcnNbaV0uY29tcFsxXSA9IChGWF9JTlQzMikoZyAqIDI1NSk7DQorICAgICAgICAgICAgcGF0Y2gucGF0Y2hfY29sb3JzW2ldLmNvbXBbMl0gPSAoRlhfSU5UMzIpKGIgKiAyNTUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0Zsb2F0UmVjdCBiYm94ID0gQ0ZYX0Zsb2F0UmVjdDo6R2V0QkJveChjb29yZHMsIHBvaW50X2NvdW50KTsNCisgICAgICAgIGlmIChiYm94LnJpZ2h0IDw9IDAgfHwgYmJveC5sZWZ0ID49IChGWF9GTE9BVClwQml0bWFwLT5HZXRXaWR0aCgpIHx8IGJib3gudG9wIDw9IDAgfHwNCisgICAgICAgICAgICAgICAgYmJveC5ib3R0b20gPj0gKEZYX0ZMT0FUKXBCaXRtYXAtPkdldEhlaWdodCgpKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDb29uX0JlemllciBDMSwgQzIsIEQxLCBEMjsNCisgICAgICAgIEMxLkZyb21Qb2ludHMoY29vcmRzWzBdLngsIGNvb3Jkc1swXS55LCBjb29yZHNbMTFdLngsIGNvb3Jkc1sxMV0ueSwgY29vcmRzWzEwXS54LCBjb29yZHNbMTBdLnksDQorICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkc1s5XS54LCBjb29yZHNbOV0ueSk7DQorICAgICAgICBDMi5Gcm9tUG9pbnRzKGNvb3Jkc1szXS54LCBjb29yZHNbM10ueSwgY29vcmRzWzRdLngsIGNvb3Jkc1s0XS55LCBjb29yZHNbNV0ueCwgY29vcmRzWzVdLnksDQorICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkc1s2XS54LCBjb29yZHNbNl0ueSk7DQorICAgICAgICBEMS5Gcm9tUG9pbnRzKGNvb3Jkc1swXS54LCBjb29yZHNbMF0ueSwgY29vcmRzWzFdLngsIGNvb3Jkc1sxXS55LCBjb29yZHNbMl0ueCwgY29vcmRzWzJdLnksDQorICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkc1szXS54LCBjb29yZHNbM10ueSk7DQorICAgICAgICBEMi5Gcm9tUG9pbnRzKGNvb3Jkc1s5XS54LCBjb29yZHNbOV0ueSwgY29vcmRzWzhdLngsIGNvb3Jkc1s4XS55LCBjb29yZHNbN10ueCwgY29vcmRzWzddLnksDQorICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkc1s2XS54LCBjb29yZHNbNl0ueSk7DQorICAgICAgICBwYXRjaC5EcmF3KDEsIDEsIDAsIDAsIEMxLCBDMiwgRDEsIEQyKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfUmVuZGVyU3RhdHVzOjpEcmF3U2hhZGluZyhDUERGX1NoYWRpbmdQYXR0ZXJuKiBwUGF0dGVybiwgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9SRUNUJiBjbGlwX3JlY3QsIGludCBhbHBoYSwgRlhfQk9PTCBiQWxwaGFNb2RlKQ0KK3sNCisgICAgaW50IHdpZHRoID0gY2xpcF9yZWN0LldpZHRoKCk7DQorICAgIGludCBoZWlnaHQgPSBjbGlwX3JlY3QuSGVpZ2h0KCk7DQorICAgIENQREZfRnVuY3Rpb24qKiBwRnVuY3MgPSBwUGF0dGVybi0+bV9wRnVuY3Rpb25zOw0KKyAgICBpbnQgbkZ1bmNzID0gcFBhdHRlcm4tPm1fbkZ1bmNzOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gcFBhdHRlcm4tPm1fcFNoYWRpbmdPYmotPkdldERpY3QoKTsNCisgICAgQ1BERl9Db2xvclNwYWNlKiBwQ29sb3JTcGFjZSA9IHBQYXR0ZXJuLT5tX3BDUzsNCisgICAgaWYgKHBDb2xvclNwYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9BUkdCIGJhY2tncm91bmQgPSAwOw0KKyAgICBpZiAoIXBQYXR0ZXJuLT5tX2JTaGFkaW5nT2JqICYmIHBQYXR0ZXJuLT5tX3BTaGFkaW5nT2JqLT5HZXREaWN0KCktPktleUV4aXN0KEZYX0JTVFJDKCJCYWNrZ3JvdW5kIikpKSB7DQorICAgICAgICBDUERGX0FycmF5KiBwQmFja0NvbG9yID0gcFBhdHRlcm4tPm1fcFNoYWRpbmdPYmotPkdldERpY3QoKS0+R2V0QXJyYXkoRlhfQlNUUkMoIkJhY2tncm91bmQiKSk7DQorICAgICAgICBpZiAocEJhY2tDb2xvciAmJiBwQmFja0NvbG9yLT5HZXRDb3VudCgpID49IChGWF9EV09SRClwQ29sb3JTcGFjZS0+Q291bnRDb21wb25lbnRzKCkpIHsNCisgICAgICAgICAgICBDRlhfRml4ZWRCdWZHcm93PEZYX0ZMT0FULCAxNj4gY29tcHMocENvbG9yU3BhY2UtPkNvdW50Q29tcG9uZW50cygpKTsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBDb2xvclNwYWNlLT5Db3VudENvbXBvbmVudHMoKTsgaSArKykgew0KKyAgICAgICAgICAgICAgICBjb21wc1tpXSA9IHBCYWNrQ29sb3ItPkdldE51bWJlcihpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRkxPQVQgUiwgRywgQjsNCisgICAgICAgICAgICBwQ29sb3JTcGFjZS0+R2V0UkdCKGNvbXBzLCBSLCBHLCBCKTsNCisgICAgICAgICAgICBiYWNrZ3JvdW5kID0gQXJnYkVuY29kZSgyNTUsIChGWF9JTlQzMikoUiAqIDI1NSksIChGWF9JTlQzMikoRyAqIDI1NSksIChGWF9JTlQzMikoQiAqIDI1NSkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIkJCb3giKSkpIHsNCisgICAgICAgIENGWF9GbG9hdFJlY3QgcmVjdCA9IHBEaWN0LT5HZXRSZWN0KEZYX0JTVFJDKCJCQm94IikpOw0KKyAgICAgICAgcmVjdC5UcmFuc2Zvcm0ocE1hdHJpeCk7DQorICAgICAgICBjbGlwX3JlY3QuSW50ZXJzZWN0KHJlY3QuR2V0T3V0dGVyUmVjdCgpKTsNCisgICAgfQ0KKyAgICBDUERGX0RldmljZUJ1ZmZlciBidWZmZXI7DQorICAgIGJ1ZmZlci5Jbml0aWFsaXplKG1fcENvbnRleHQsIG1fcERldmljZSwgJmNsaXBfcmVjdCwgbV9wQ3VyT2JqLCAxNTApOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4IEZpbmFsTWF0cml4ID0gKnBNYXRyaXg7DQorICAgIEZpbmFsTWF0cml4LkNvbmNhdCgqYnVmZmVyLkdldE1hdHJpeCgpKTsNCisgICAgQ0ZYX0RJQml0bWFwKiBwQml0bWFwID0gYnVmZmVyLkdldEJpdG1hcCgpOw0KKyAgICBpZiAocEJpdG1hcC0+R2V0QnVmZmVyKCkgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHBCaXRtYXAtPkNsZWFyKGJhY2tncm91bmQpOw0KKyAgICBpbnQgZmlsbF9tb2RlID0gbV9PcHRpb25zLm1fRmxhZ3M7DQorICAgIHN3aXRjaCAocFBhdHRlcm4tPm1fU2hhZGluZ1R5cGUpIHsNCisgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICBfRHJhd0Z1bmNTaGFkaW5nKHBCaXRtYXAsICZGaW5hbE1hdHJpeCwgcERpY3QsIHBGdW5jcywgbkZ1bmNzLCBwQ29sb3JTcGFjZSwgYWxwaGEpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIF9EcmF3QXhpYWxTaGFkaW5nKHBCaXRtYXAsICZGaW5hbE1hdHJpeCwgcERpY3QsIHBGdW5jcywgbkZ1bmNzLCBwQ29sb3JTcGFjZSwgYWxwaGEpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgIF9EcmF3UmFkaWFsU2hhZGluZyhwQml0bWFwLCAmRmluYWxNYXRyaXgsIHBEaWN0LCBwRnVuY3MsIG5GdW5jcywgcENvbG9yU3BhY2UsIGFscGhhKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgNDogew0KKyAgICAgICAgICAgICAgICBfRHJhd0ZyZWVHb3VyYXVkU2hhZGluZyhwQml0bWFwLCAmRmluYWxNYXRyaXgsIChDUERGX1N0cmVhbSopcFBhdHRlcm4tPm1fcFNoYWRpbmdPYmosDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBGdW5jcywgbkZ1bmNzLCBwQ29sb3JTcGFjZSwgYWxwaGEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgNTogew0KKyAgICAgICAgICAgICAgICBfRHJhd0xhdHRpY2VHb3VyYXVkU2hhZGluZyhwQml0bWFwLCAmRmluYWxNYXRyaXgsIChDUERGX1N0cmVhbSopcFBhdHRlcm4tPm1fcFNoYWRpbmdPYmosDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBGdW5jcywgbkZ1bmNzLCBwQ29sb3JTcGFjZSwgYWxwaGEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgNjoNCisgICAgICAgIGNhc2UgNzogew0KKyAgICAgICAgICAgICAgICBfRHJhd0Nvb25QYXRjaE1lc2hlcyhwUGF0dGVybi0+bV9TaGFkaW5nVHlwZSAtIDYsIHBCaXRtYXAsICZGaW5hbE1hdHJpeCwgKENQREZfU3RyZWFtKilwUGF0dGVybi0+bV9wU2hhZGluZ09iaiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEZ1bmNzLCBuRnVuY3MsIHBDb2xvclNwYWNlLCBmaWxsX21vZGUsIGFscGhhKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgaWYgKGJBbHBoYU1vZGUpIHsNCisgICAgICAgIHBCaXRtYXAtPkxvYWRDaGFubmVsKEZYRElCX1JlZCwgcEJpdG1hcCwgRlhESUJfQWxwaGEpOw0KKyAgICB9DQorICAgIGlmIChtX09wdGlvbnMubV9Db2xvck1vZGUgPT0gUkVOREVSX0NPTE9SX0dSQVkpIHsNCisgICAgICAgIHBCaXRtYXAtPkNvbnZlcnRDb2xvclNjYWxlKG1fT3B0aW9ucy5tX0ZvcmVDb2xvciwgbV9PcHRpb25zLm1fQmFja0NvbG9yKTsNCisgICAgfQ0KKyAgICBidWZmZXIuT3V0cHV0VG9EZXZpY2UoKTsNCit9DQordm9pZCBDUERGX1JlbmRlclN0YXR1czo6RHJhd1NoYWRpbmdQYXR0ZXJuKENQREZfU2hhZGluZ1BhdHRlcm4qIHBhdHRlcm4sIENQREZfUGFnZU9iamVjdCogcFBhZ2VPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlLCBGWF9CT09MIGJTdHJva2UpDQorew0KKyAgICBpZiAoIXBhdHRlcm4tPkxvYWQoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcERldmljZS0+U2F2ZVN0YXRlKCk7DQorICAgIGlmIChwUGFnZU9iai0+bV9UeXBlID09IFBERlBBR0VfUEFUSCkgew0KKyAgICAgICAgaWYgKCFTZWxlY3RDbGlwUGF0aCgoQ1BERl9QYXRoT2JqZWN0KilwUGFnZU9iaiwgcE9iajJEZXZpY2UsIGJTdHJva2UpKSB7DQorICAgICAgICAgICAgbV9wRGV2aWNlLT5SZXN0b3JlU3RhdGUoKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAocFBhZ2VPYmotPm1fVHlwZSA9PSBQREZQQUdFX0lNQUdFKSB7DQorICAgICAgICBGWF9SRUNUIHJlY3QgPSBwUGFnZU9iai0+R2V0QkJveChwT2JqMkRldmljZSk7DQorICAgICAgICBtX3BEZXZpY2UtPlNldENsaXBfUmVjdCgmcmVjdCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfUkVDVCByZWN0Ow0KKyAgICBpZiAoR2V0T2JqZWN0Q2xpcHBlZFJlY3QocFBhZ2VPYmosIHBPYmoyRGV2aWNlLCBGQUxTRSwgcmVjdCkpIHsNCisgICAgICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXggPSBwYXR0ZXJuLT5tX1BhdHRlcm4yRm9ybTsNCisgICAgbWF0cml4LkNvbmNhdCgqcE9iajJEZXZpY2UpOw0KKyAgICBHZXRTY2FsZWRNYXRyaXgobWF0cml4KTsNCisgICAgaW50IGFscGhhID0gcFBhZ2VPYmotPm1fR2VuZXJhbFN0YXRlLkdldEFscGhhKGJTdHJva2UpOw0KKyAgICBEcmF3U2hhZGluZyhwYXR0ZXJuLCAmbWF0cml4LCByZWN0LCBhbHBoYSwgbV9PcHRpb25zLm1fQ29sb3JNb2RlID09IFJFTkRFUl9DT0xPUl9BTFBIQSk7DQorICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9SZW5kZXJTdGF0dXM6OlByb2Nlc3NTaGFkaW5nKENQREZfU2hhZGluZ09iamVjdCogcFNoYWRpbmdPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKQ0KK3sNCisgICAgRlhfUkVDVCByZWN0ID0gcFNoYWRpbmdPYmotPkdldEJCb3gocE9iajJEZXZpY2UpOw0KKyAgICBGWF9SRUNUIGNsaXBfYm94ID0gbV9wRGV2aWNlLT5HZXRDbGlwQm94KCk7DQorICAgIHJlY3QuSW50ZXJzZWN0KGNsaXBfYm94KTsNCisgICAgaWYgKHJlY3QuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeCA9IHBTaGFkaW5nT2JqLT5tX01hdHJpeDsNCisgICAgbWF0cml4LkNvbmNhdCgqcE9iajJEZXZpY2UpOw0KKyAgICBEcmF3U2hhZGluZyhwU2hhZGluZ09iai0+bV9wU2hhZGluZywgJm1hdHJpeCwgcmVjdCwgcFNoYWRpbmdPYmotPm1fR2VuZXJhbFN0YXRlLkdldEFscGhhKEZBTFNFKSwNCisgICAgICAgICAgICAgICAgbV9PcHRpb25zLm1fQ29sb3JNb2RlID09IFJFTkRFUl9DT0xPUl9BTFBIQSk7DQorI2lmZGVmIF9GUERGQVBJX01JTklfDQorICAgIGlmIChtX0RpdGhlckJpdHMpIHsNCisgICAgICAgIERpdGhlck9iamVjdEFyZWEocFNoYWRpbmdPYmosIHBPYmoyRGV2aWNlKTsNCisgICAgfQ0KKyNlbmRpZg0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorc3RhdGljIENGWF9ESUJpdG1hcCogRHJhd1BhdHRlcm5CaXRtYXAoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqIHBDYWNoZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1RpbGluZ1BhdHRlcm4qIHBQYXR0ZXJuLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBmbGFncykNCit7DQorICAgIENGWF9ESUJpdG1hcCogcEJpdG1hcCA9IEZYX05FVyBDRlhfRElCaXRtYXA7DQorICAgIGlmICghcEJpdG1hcC0+Q3JlYXRlKHdpZHRoLCBoZWlnaHQsIHBQYXR0ZXJuLT5tX2JDb2xvcmVkID8gRlhESUJfQXJnYiA6IEZYRElCXzhicHBNYXNrKSkgew0KKyAgICAgICAgZGVsZXRlIHBCaXRtYXA7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfRnhnZURldmljZSBiaXRtYXBfZGV2aWNlOw0KKyAgICBiaXRtYXBfZGV2aWNlLkF0dGFjaChwQml0bWFwKTsNCisgICAgcEJpdG1hcC0+Q2xlYXIoMCk7DQorICAgIENGWF9GbG9hdFJlY3QgY2VsbF9iYm94ID0gcFBhdHRlcm4tPm1fQkJveDsNCisgICAgcFBhdHRlcm4tPm1fUGF0dGVybjJGb3JtLlRyYW5zZm9ybVJlY3QoY2VsbF9iYm94KTsNCisgICAgcE9iamVjdDJEZXZpY2UtPlRyYW5zZm9ybVJlY3QoY2VsbF9iYm94KTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCBiaXRtYXBfcmVjdCgwLjBmLCAwLjBmLCAoRlhfRkxPQVQpd2lkdGgsIChGWF9GTE9BVCloZWlnaHQpOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG10QWRqdXN0Ow0KKyAgICBtdEFkanVzdC5NYXRjaFJlY3QoYml0bWFwX3JlY3QsIGNlbGxfYmJveCk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggbXRQYXR0ZXJuMkJpdG1hcCA9ICpwT2JqZWN0MkRldmljZTsNCisgICAgbXRQYXR0ZXJuMkJpdG1hcC5Db25jYXQobXRBZGp1c3QpOw0KKyAgICBDUERGX1JlbmRlck9wdGlvbnMgb3B0aW9uczsNCisgICAgaWYgKCFwUGF0dGVybi0+bV9iQ29sb3JlZCkgew0KKyAgICAgICAgb3B0aW9ucy5tX0NvbG9yTW9kZSA9IFJFTkRFUl9DT0xPUl9BTFBIQTsNCisgICAgfQ0KKyAgICBmbGFncyB8PSBSRU5ERVJfRk9SQ0VfSEFMRlRPTkU7DQorICAgIG9wdGlvbnMubV9GbGFncyA9IGZsYWdzOw0KKyAgICBDUERGX1JlbmRlckNvbnRleHQgY29udGV4dDsNCisgICAgY29udGV4dC5DcmVhdGUocERvYywgcENhY2hlLCBOVUxMKTsNCisgICAgY29udGV4dC5EcmF3T2JqZWN0TGlzdCgmYml0bWFwX2RldmljZSwgcFBhdHRlcm4tPm1fcEZvcm0sICZtdFBhdHRlcm4yQml0bWFwLCAmb3B0aW9ucyk7DQorICAgIHJldHVybiBwQml0bWFwOw0KK30NCit2b2lkIENQREZfUmVuZGVyU3RhdHVzOjpEcmF3VGlsaW5nUGF0dGVybihDUERGX1RpbGluZ1BhdHRlcm4qIHBQYXR0ZXJuLCBDUERGX1BhZ2VPYmplY3QqIHBQYWdlT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgRlhfQk9PTCBiU3Ryb2tlKQ0KK3sNCisgICAgaWYgKCFwUGF0dGVybi0+TG9hZCgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wRGV2aWNlLT5TYXZlU3RhdGUoKTsNCisgICAgaWYgKHBQYWdlT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9QQVRIKSB7DQorICAgICAgICBpZiAoIVNlbGVjdENsaXBQYXRoKChDUERGX1BhdGhPYmplY3QqKXBQYWdlT2JqLCBwT2JqMkRldmljZSwgYlN0cm9rZSkpIHsNCisgICAgICAgICAgICBtX3BEZXZpY2UtPlJlc3RvcmVTdGF0ZSgpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChwUGFnZU9iai0+bV9UeXBlID09IFBERlBBR0VfSU1BR0UpIHsNCisgICAgICAgIEZYX1JFQ1QgcmVjdCA9IHBQYWdlT2JqLT5HZXRCQm94KHBPYmoyRGV2aWNlKTsNCisgICAgICAgIG1fcERldmljZS0+U2V0Q2xpcF9SZWN0KCZyZWN0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9SRUNUIGNsaXBfYm94ID0gbV9wRGV2aWNlLT5HZXRDbGlwQm94KCk7DQorICAgIGlmIChjbGlwX2JveC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX01hdHJpeCBkQ1RNID0gbV9wRGV2aWNlLT5HZXRDVE0oKTsNCisgICAgRlhfRkxPQVQgc2EgPSBGWFNZU19mYWJzKGRDVE0uYSk7DQorICAgIEZYX0ZMT0FUIHNkID0gRlhTWVNfZmFicyhkQ1RNLmQpOw0KKyAgICBjbGlwX2JveC5yaWdodCA9IGNsaXBfYm94LmxlZnQgKyAoRlhfSU5UMzIpRlhTWVNfY2VpbChjbGlwX2JveC5XaWR0aCgpICogc2EpOw0KKyAgICBjbGlwX2JveC5ib3R0b20gPSBjbGlwX2JveC50b3AgKyAoRlhfSU5UMzIpRlhTWVNfY2VpbChjbGlwX2JveC5IZWlnaHQoKSAqIHNkKTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtdFBhdHRlcm4yRGV2aWNlID0gcFBhdHRlcm4tPm1fUGF0dGVybjJGb3JtOw0KKyAgICBtdFBhdHRlcm4yRGV2aWNlLkNvbmNhdCgqcE9iajJEZXZpY2UpOw0KKyAgICBHZXRTY2FsZWRNYXRyaXgobXRQYXR0ZXJuMkRldmljZSk7DQorICAgIEZYX0JPT0wgYkFsaWduZWQgPSBGQUxTRTsNCisgICAgaWYgKHBQYXR0ZXJuLT5tX0JCb3gubGVmdCA9PSAwICYmIHBQYXR0ZXJuLT5tX0JCb3guYm90dG9tID09IDAgJiYNCisgICAgICAgICAgICBwUGF0dGVybi0+bV9CQm94LnJpZ2h0ID09IHBQYXR0ZXJuLT5tX1hTdGVwICYmIHBQYXR0ZXJuLT5tX0JCb3gudG9wID09IHBQYXR0ZXJuLT5tX1lTdGVwICYmDQorICAgICAgICAgICAgKG10UGF0dGVybjJEZXZpY2UuSXNTY2FsZWQoKSB8fCBtdFBhdHRlcm4yRGV2aWNlLklzOTBSb3RhdGVkKCkpKSB7DQorICAgICAgICBiQWxpZ25lZCA9IFRSVUU7DQorICAgIH0NCisgICAgQ0ZYX0Zsb2F0UmVjdCBjZWxsX2Jib3ggPSBwUGF0dGVybi0+bV9CQm94Ow0KKyAgICBtdFBhdHRlcm4yRGV2aWNlLlRyYW5zZm9ybVJlY3QoY2VsbF9iYm94KTsNCisgICAgaW50IHdpZHRoID0gKGludClGWFNZU19jZWlsKGNlbGxfYmJveC5XaWR0aCgpKTsNCisgICAgaW50IGhlaWdodCA9IChpbnQpRlhTWVNfY2VpbChjZWxsX2Jib3guSGVpZ2h0KCkpOw0KKyAgICBpZiAod2lkdGggPT0gMCkgew0KKyAgICAgICAgd2lkdGggPSAxOw0KKyAgICB9DQorICAgIGlmIChoZWlnaHQgPT0gMCkgew0KKyAgICAgICAgaGVpZ2h0ID0gMTsNCisgICAgfQ0KKyAgICBpbnQgbWluX2NvbCwgbWF4X2NvbCwgbWluX3JvdywgbWF4X3JvdzsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtdERldmljZTJQYXR0ZXJuOw0KKyAgICBtdERldmljZTJQYXR0ZXJuLlNldFJldmVyc2UobXRQYXR0ZXJuMkRldmljZSk7DQorICAgIENGWF9GbG9hdFJlY3QgY2xpcF9ib3hfcChjbGlwX2JveCk7DQorICAgIGNsaXBfYm94X3AuVHJhbnNmb3JtKCZtdERldmljZTJQYXR0ZXJuKTsNCisgICAgbWluX2NvbCA9IChpbnQpRlhTWVNfY2VpbChGWFNZU19EaXYoY2xpcF9ib3hfcC5sZWZ0IC0gcFBhdHRlcm4tPm1fQkJveC5yaWdodCwgcFBhdHRlcm4tPm1fWFN0ZXApKTsNCisgICAgbWF4X2NvbCA9IChpbnQpRlhTWVNfZmxvb3IoRlhTWVNfRGl2KGNsaXBfYm94X3AucmlnaHQgLSBwUGF0dGVybi0+bV9CQm94LmxlZnQsIHBQYXR0ZXJuLT5tX1hTdGVwKSk7DQorICAgIG1pbl9yb3cgPSAoaW50KUZYU1lTX2NlaWwoRlhTWVNfRGl2KGNsaXBfYm94X3AuYm90dG9tIC0gcFBhdHRlcm4tPm1fQkJveC50b3AsIHBQYXR0ZXJuLT5tX1lTdGVwKSk7DQorICAgIG1heF9yb3cgPSAoaW50KUZYU1lTX2Zsb29yKEZYU1lTX0RpdihjbGlwX2JveF9wLnRvcCAtIHBQYXR0ZXJuLT5tX0JCb3guYm90dG9tLCBwUGF0dGVybi0+bV9ZU3RlcCkpOw0KKyAgICBpZiAod2lkdGggPiBjbGlwX2JveC5XaWR0aCgpIHx8IGhlaWdodCA+IGNsaXBfYm94LkhlaWdodCgpIHx8IHdpZHRoICogaGVpZ2h0ID4gY2xpcF9ib3guV2lkdGgoKSAqIGNsaXBfYm94LkhlaWdodCgpKSB7DQorICAgICAgICBDUERGX0dyYXBoaWNTdGF0ZXMqIHBTdGF0ZXMgPSBOVUxMOw0KKyAgICAgICAgaWYgKCFwUGF0dGVybi0+bV9iQ29sb3JlZCkgew0KKyAgICAgICAgICAgIHBTdGF0ZXMgPSBDbG9uZU9ialN0YXRlcyhwUGFnZU9iaiwgYlN0cm9rZSk7DQorICAgICAgICB9DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBGb3JtUmVzb3VyY2UgPSBOVUxMOw0KKyAgICAgICAgaWYgKHBQYXR0ZXJuLT5tX3BGb3JtLT5tX3BGb3JtRGljdCkgew0KKyAgICAgICAgICAgIHBGb3JtUmVzb3VyY2UgPSBwUGF0dGVybi0+bV9wRm9ybS0+bV9wRm9ybURpY3QtPkdldERpY3QoRlhfQlNUUkMoIlJlc291cmNlcyIpKTsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IGNvbCA9IG1pbl9jb2w7IGNvbCA8PSBtYXhfY29sOyBjb2wgKyspDQorICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gbWluX3Jvdzsgcm93IDw9IG1heF9yb3c7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCBvcmlnX3gsIG9yaWdfeTsNCisgICAgICAgICAgICAgICAgb3JpZ194ID0gY29sICogcFBhdHRlcm4tPm1fWFN0ZXA7DQorICAgICAgICAgICAgICAgIG9yaWdfeSA9IHJvdyAqIHBQYXR0ZXJuLT5tX1lTdGVwOw0KKyAgICAgICAgICAgICAgICBtdFBhdHRlcm4yRGV2aWNlLlRyYW5zZm9ybShvcmlnX3gsIG9yaWdfeSk7DQorICAgICAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4ID0gKnBPYmoyRGV2aWNlOw0KKyAgICAgICAgICAgICAgICBtYXRyaXguVHJhbnNsYXRlKG9yaWdfeCAtIG10UGF0dGVybjJEZXZpY2UuZSwgb3JpZ195IC0gbXRQYXR0ZXJuMkRldmljZS5mKTsNCisgICAgICAgICAgICAgICAgbV9wRGV2aWNlLT5TYXZlU3RhdGUoKTsNCisgICAgICAgICAgICAgICAgQ1BERl9SZW5kZXJTdGF0dXMgc3RhdHVzOw0KKyAgICAgICAgICAgICAgICBzdGF0dXMuSW5pdGlhbGl6ZShtX0xldmVsICsgMSwgbV9wQ29udGV4dCwgbV9wRGV2aWNlLCBOVUxMLCBOVUxMLCB0aGlzLCBwU3RhdGVzLCAmbV9PcHRpb25zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUGF0dGVybi0+bV9wRm9ybS0+bV9UcmFuc3BhcmVuY3ksIG1fYkRyb3BPYmplY3RzLCBwRm9ybVJlc291cmNlKTsNCisgICAgICAgICAgICAgICAgc3RhdHVzLlJlbmRlck9iamVjdExpc3QocFBhdHRlcm4tPm1fcEZvcm0sICZtYXRyaXgpOw0KKyAgICAgICAgICAgICAgICBtX3BEZXZpY2UtPlJlc3RvcmVTdGF0ZSgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgICAgICBpZiAocFN0YXRlcykgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwU3RhdGVzOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChiQWxpZ25lZCkgew0KKyAgICAgICAgaW50IG9yaWdfeCA9IEZYU1lTX3JvdW5kKG10UGF0dGVybjJEZXZpY2UuZSk7DQorICAgICAgICBpbnQgb3JpZ195ID0gRlhTWVNfcm91bmQobXRQYXR0ZXJuMkRldmljZS5mKTsNCisgICAgICAgIG1pbl9jb2wgPSAoY2xpcF9ib3gubGVmdCAtIG9yaWdfeCkgLyB3aWR0aDsNCisgICAgICAgIGlmIChjbGlwX2JveC5sZWZ0IDwgb3JpZ194KSB7DQorICAgICAgICAgICAgbWluX2NvbCAtLTsNCisgICAgICAgIH0NCisgICAgICAgIG1heF9jb2wgPSAoY2xpcF9ib3gucmlnaHQgLSBvcmlnX3gpIC8gd2lkdGg7DQorICAgICAgICBpZiAoY2xpcF9ib3gucmlnaHQgPD0gb3JpZ194KSB7DQorICAgICAgICAgICAgbWF4X2NvbCAtLTsNCisgICAgICAgIH0NCisgICAgICAgIG1pbl9yb3cgPSAoY2xpcF9ib3gudG9wIC0gb3JpZ195KSAvIGhlaWdodDsNCisgICAgICAgIGlmIChjbGlwX2JveC50b3AgPCBvcmlnX3kpIHsNCisgICAgICAgICAgICBtaW5fcm93IC0tOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbWF4X3JvdyA9IChjbGlwX2JveC5ib3R0b20gLSBvcmlnX3kpIC8gaGVpZ2h0Ow0KKyAgICAgICAgaWYgKGNsaXBfYm94LmJvdHRvbSA8PSBvcmlnX3kpIHsNCisgICAgICAgICAgICBtYXhfcm93IC0tOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX0ZMT0FUIGxlZnRfb2Zmc2V0ID0gY2VsbF9iYm94LmxlZnQgLSBtdFBhdHRlcm4yRGV2aWNlLmU7DQorICAgIEZYX0ZMT0FUIHRvcF9vZmZzZXQgPSBjZWxsX2Jib3guYm90dG9tIC0gbXRQYXR0ZXJuMkRldmljZS5mOw0KKyAgICBDRlhfRElCaXRtYXAqIHBQYXR0ZXJuQml0bWFwID0gTlVMTDsNCisgICAgaWYgKHdpZHRoICogaGVpZ2h0IDwgMTYpIHsNCisgICAgICAgIENGWF9ESUJpdG1hcCogcEVubGFyZ2VkQml0bWFwID0gRHJhd1BhdHRlcm5CaXRtYXAobV9wQ29udGV4dC0+bV9wRG9jdW1lbnQsIG1fcENvbnRleHQtPm1fcFBhZ2VDYWNoZSwgcFBhdHRlcm4sIHBPYmoyRGV2aWNlLCA4LCA4LCBtX09wdGlvbnMubV9GbGFncyk7DQorICAgICAgICBwUGF0dGVybkJpdG1hcCA9IHBFbmxhcmdlZEJpdG1hcC0+U3RyZXRjaFRvKHdpZHRoLCBoZWlnaHQpOw0KKyAgICAgICAgZGVsZXRlIHBFbmxhcmdlZEJpdG1hcDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBQYXR0ZXJuQml0bWFwID0gRHJhd1BhdHRlcm5CaXRtYXAobV9wQ29udGV4dC0+bV9wRG9jdW1lbnQsIG1fcENvbnRleHQtPm1fcFBhZ2VDYWNoZSwgcFBhdHRlcm4sIHBPYmoyRGV2aWNlLCB3aWR0aCwgaGVpZ2h0LCBtX09wdGlvbnMubV9GbGFncyk7DQorICAgIH0NCisgICAgaWYgKHBQYXR0ZXJuQml0bWFwID09IE5VTEwpIHsNCisgICAgICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fT3B0aW9ucy5tX0NvbG9yTW9kZSA9PSBSRU5ERVJfQ09MT1JfR1JBWSkgew0KKyAgICAgICAgcFBhdHRlcm5CaXRtYXAtPkNvbnZlcnRDb2xvclNjYWxlKG1fT3B0aW9ucy5tX0ZvcmVDb2xvciwgbV9PcHRpb25zLm1fQmFja0NvbG9yKTsNCisgICAgfQ0KKyAgICBGWF9BUkdCIGZpbGxfYXJnYiA9IEdldEZpbGxBcmdiKHBQYWdlT2JqKTsNCisgICAgaW50IGNsaXBfd2lkdGggPSBjbGlwX2JveC5yaWdodCAtIGNsaXBfYm94LmxlZnQ7DQorICAgIGludCBjbGlwX2hlaWdodCA9IGNsaXBfYm94LmJvdHRvbSAtIGNsaXBfYm94LnRvcDsNCisgICAgQ0ZYX0RJQml0bWFwIHNjcmVlbjsNCisgICAgaWYgKCFzY3JlZW4uQ3JlYXRlKGNsaXBfd2lkdGgsIGNsaXBfaGVpZ2h0LCBGWERJQl9BcmdiKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHNjcmVlbi5DbGVhcigwKTsNCisgICAgRlhfRFdPUkQqIHNyY19idWYgPSAoRlhfRFdPUkQqKXBQYXR0ZXJuQml0bWFwLT5HZXRCdWZmZXIoKTsNCisgICAgZm9yIChpbnQgY29sID0gbWluX2NvbDsgY29sIDw9IG1heF9jb2w7IGNvbCArKykgew0KKyAgICAgICAgZm9yIChpbnQgcm93ID0gbWluX3Jvdzsgcm93IDw9IG1heF9yb3c7IHJvdyArKykgew0KKyAgICAgICAgICAgIGludCBzdGFydF94LCBzdGFydF95Ow0KKyAgICAgICAgICAgIGlmIChiQWxpZ25lZCkgew0KKyAgICAgICAgICAgICAgICBzdGFydF94ID0gRlhTWVNfcm91bmQobXRQYXR0ZXJuMkRldmljZS5lKSArIGNvbCAqIHdpZHRoIC0gY2xpcF9ib3gubGVmdDsNCisgICAgICAgICAgICAgICAgc3RhcnRfeSA9IEZYU1lTX3JvdW5kKG10UGF0dGVybjJEZXZpY2UuZikgKyByb3cgKiBoZWlnaHQgLSBjbGlwX2JveC50b3A7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgb3JpZ194ID0gY29sICogcFBhdHRlcm4tPm1fWFN0ZXA7DQorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIG9yaWdfeSA9IHJvdyAqIHBQYXR0ZXJuLT5tX1lTdGVwOw0KKyAgICAgICAgICAgICAgICBtdFBhdHRlcm4yRGV2aWNlLlRyYW5zZm9ybShvcmlnX3gsIG9yaWdfeSk7DQorICAgICAgICAgICAgICAgIHN0YXJ0X3ggPSBGWFNZU19yb3VuZChvcmlnX3ggKyBsZWZ0X29mZnNldCkgLSBjbGlwX2JveC5sZWZ0Ow0KKyAgICAgICAgICAgICAgICBzdGFydF95ID0gRlhTWVNfcm91bmQob3JpZ195ICsgdG9wX29mZnNldCkgLSBjbGlwX2JveC50b3A7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICh3aWR0aCA9PSAxICYmIGhlaWdodCA9PSAxKSB7DQorICAgICAgICAgICAgICAgIGlmIChzdGFydF94IDwgMCB8fCBzdGFydF94ID49IGNsaXBfYm94LldpZHRoKCkgfHwgc3RhcnRfeSA8IDAgfHwgc3RhcnRfeSA+PSBjbGlwX2JveC5IZWlnaHQoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfRFdPUkQqIGRlc3RfYnVmID0gKEZYX0RXT1JEKikoc2NyZWVuLkdldEJ1ZmZlcigpICsgc2NyZWVuLkdldFBpdGNoKCkgKiBzdGFydF95ICsgc3RhcnRfeCAqIDQpOw0KKyAgICAgICAgICAgICAgICBpZiAocFBhdHRlcm4tPm1fYkNvbG9yZWQpIHsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X2J1ZiA9ICpzcmNfYnVmOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3RfYnVmID0gKCooRlhfTFBCWVRFKXNyY19idWYgPDwgMjQpIHwgKGZpbGxfYXJnYiAmIDB4ZmZmZmZmKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmIChwUGF0dGVybi0+bV9iQ29sb3JlZCkgew0KKyAgICAgICAgICAgICAgICAgICAgc2NyZWVuLkNvbXBvc2l0ZUJpdG1hcChzdGFydF94LCBzdGFydF95LCB3aWR0aCwgaGVpZ2h0LCBwUGF0dGVybkJpdG1hcCwgMCwgMCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBzY3JlZW4uQ29tcG9zaXRlTWFzayhzdGFydF94LCBzdGFydF95LCB3aWR0aCwgaGVpZ2h0LCBwUGF0dGVybkJpdG1hcCwgZmlsbF9hcmdiLCAwLCAwKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDb21wb3NpdGVESUJpdG1hcCgmc2NyZWVuLCBjbGlwX2JveC5sZWZ0LCBjbGlwX2JveC50b3AsIDAsIDI1NSwgRlhESUJfQkxFTkRfTk9STUFMLCBGQUxTRSk7DQorICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgIGRlbGV0ZSBwUGF0dGVybkJpdG1hcDsNCit9DQordm9pZCBDUERGX1JlbmRlclN0YXR1czo6RHJhd1BhdGhXaXRoUGF0dGVybihDUERGX1BhdGhPYmplY3QqIHBQYXRoT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgQ1BERl9Db2xvciogcENvbG9yLCBGWF9CT09MIGJTdHJva2UpDQorew0KKyAgICBDUERGX1BhdHRlcm4qIHBhdHRlcm4gPSBwQ29sb3ItPkdldFBhdHRlcm4oKTsNCisgICAgaWYgKHBhdHRlcm4gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmKHBhdHRlcm4tPm1fUGF0dGVyblR5cGUgPT0gUEFUVEVSTl9USUxJTkcpIHsNCisgICAgICAgIERyYXdUaWxpbmdQYXR0ZXJuKChDUERGX1RpbGluZ1BhdHRlcm4qKXBhdHRlcm4sIHBQYXRoT2JqLCBwT2JqMkRldmljZSwgYlN0cm9rZSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBEcmF3U2hhZGluZ1BhdHRlcm4oKENQREZfU2hhZGluZ1BhdHRlcm4qKXBhdHRlcm4sIHBQYXRoT2JqLCBwT2JqMkRldmljZSwgYlN0cm9rZSk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1JlbmRlclN0YXR1czo6UHJvY2Vzc1BhdGhQYXR0ZXJuKENQREZfUGF0aE9iamVjdCogcFBhdGhPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlLCBpbnQmIGZpbGx0eXBlLCBGWF9CT09MJiBiU3Ryb2tlKQ0KK3sNCisgICAgRlhfQk9PTCBiUGF0dGVybiA9IEZBTFNFOw0KKyAgICBpZihmaWxsdHlwZSkgew0KKyAgICAgICAgQ1BERl9Db2xvciYgRmlsbENvbG9yID0gKnBQYXRoT2JqLT5tX0NvbG9yU3RhdGUuR2V0RmlsbENvbG9yKCk7DQorICAgICAgICBpZihGaWxsQ29sb3IubV9wQ1MgJiYgRmlsbENvbG9yLm1fcENTLT5HZXRGYW1pbHkoKSA9PSBQREZDU19QQVRURVJOKSB7DQorICAgICAgICAgICAgRHJhd1BhdGhXaXRoUGF0dGVybihwUGF0aE9iaiwgcE9iajJEZXZpY2UsICZGaWxsQ29sb3IsIEZBTFNFKTsNCisgICAgICAgICAgICBmaWxsdHlwZSA9IDA7DQorICAgICAgICAgICAgYlBhdHRlcm4gPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmKGJTdHJva2UpIHsNCisgICAgICAgIENQREZfQ29sb3ImIFN0cm9rZUNvbG9yID0gKnBQYXRoT2JqLT5tX0NvbG9yU3RhdGUuR2V0U3Ryb2tlQ29sb3IoKTsNCisgICAgICAgIGlmKFN0cm9rZUNvbG9yLm1fcENTICYmIFN0cm9rZUNvbG9yLm1fcENTLT5HZXRGYW1pbHkoKSA9PSBQREZDU19QQVRURVJOKSB7DQorICAgICAgICAgICAgRHJhd1BhdGhXaXRoUGF0dGVybihwUGF0aE9iaiwgcE9iajJEZXZpY2UsICZTdHJva2VDb2xvciwgVFJVRSk7DQorICAgICAgICAgICAgYlN0cm9rZSA9IEZBTFNFOw0KKyAgICAgICAgICAgIGJQYXR0ZXJuID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyNpZmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICBpZiAoYlBhdHRlcm4gJiYgbV9EaXRoZXJCaXRzKSB7DQorICAgICAgICBEaXRoZXJPYmplY3RBcmVhKHBQYXRoT2JqLCBwT2JqMkRldmljZSk7DQorICAgIH0NCisjZW5kaWYNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3JlbmRlci9mcGRmX3JlbmRlcl90ZXh0LmNwcCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9yZW5kZXIvZnBkZl9yZW5kZXJfdGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFmZjk4MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9yZW5kZXIvZnBkZl9yZW5kZXJfdGV4dC5jcHAKQEAgLTAsMCArMSw3NjAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcmVuZGVyLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2VvYmouaCINCisjaW5jbHVkZSAiLi4vZnBkZl9wYWdlL3BhZ2VpbnQuaCINCisjaW5jbHVkZSAicmVuZGVyX2ludC5oIg0KK2V4dGVybiBGWF9CT09MIElzQXZhaWxhYmxlTWF0cml4KGNvbnN0IENGWF9BZmZpbmVNYXRyaXgmIG1hdHJpeCk7DQorQ1BERl9UeXBlM0NhY2hlOjp+Q1BERl9UeXBlM0NhY2hlKCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fU2l6ZU1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIENGWF9CeXRlU3RyaW5nIEtleTsNCisgICAgQ1BERl9UeXBlM0dseXBocyogcFNpemVDYWNoZSA9IE5VTEw7DQorICAgIHdoaWxlKHBvcykgew0KKyAgICAgICAgcFNpemVDYWNoZSA9IChDUERGX1R5cGUzR2x5cGhzKiltX1NpemVNYXAuR2V0TmV4dFZhbHVlKHBvcyk7DQorICAgICAgICBkZWxldGUgcFNpemVDYWNoZTsNCisgICAgfQ0KKyAgICBtX1NpemVNYXAuUmVtb3ZlQWxsKCk7DQorfQ0KK0NGWF9HbHlwaEJpdG1hcCogQ1BERl9UeXBlM0NhY2hlOjpMb2FkR2x5cGgoRlhfRFdPUkQgY2hhcmNvZGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIEZYX0ZMT0FUIHJldGluYVNjYWxlWCwgRlhfRkxPQVQgcmV0aW5hU2NhbGVZKQ0KK3sNCisgICAgX0NQREZfVW5pcXVlS2V5R2VuIGtleWdlbjsNCisgICAga2V5Z2VuLkdlbmVyYXRlKDQsIEZYU1lTX3JvdW5kKHBNYXRyaXgtPmEgKiAxMDAwMCksIEZYU1lTX3JvdW5kKHBNYXRyaXgtPmIgKiAxMDAwMCksDQorICAgICAgICAgICAgICAgICAgICBGWFNZU19yb3VuZChwTWF0cml4LT5jICogMTAwMDApLCBGWFNZU19yb3VuZChwTWF0cml4LT5kICogMTAwMDApKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmdDIEZhY2VHbHlwaHNLZXkoa2V5Z2VuLm1fS2V5LCBrZXlnZW4ubV9LZXlMZW4pOw0KKyAgICBDUERGX1R5cGUzR2x5cGhzKiBwU2l6ZUNhY2hlID0gTlVMTDsNCisgICAgaWYoIW1fU2l6ZU1hcC5Mb29rdXAoRmFjZUdseXBoc0tleSwgKHZvaWQqJilwU2l6ZUNhY2hlKSkgew0KKyAgICAgICAgcFNpemVDYWNoZSA9IEZYX05FVyBDUERGX1R5cGUzR2x5cGhzOw0KKyAgICAgICAgbV9TaXplTWFwLlNldEF0KEZhY2VHbHlwaHNLZXksIHBTaXplQ2FjaGUpOw0KKyAgICB9DQorICAgIENGWF9HbHlwaEJpdG1hcCogcEdseXBoQml0bWFwOw0KKyAgICBpZihwU2l6ZUNhY2hlLT5tX0dseXBoTWFwLkxvb2t1cCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKWNoYXJjb2RlLCAodm9pZComKXBHbHlwaEJpdG1hcCkpIHsNCisgICAgICAgIHJldHVybiBwR2x5cGhCaXRtYXA7DQorICAgIH0NCisgICAgcEdseXBoQml0bWFwID0gUmVuZGVyR2x5cGgocFNpemVDYWNoZSwgY2hhcmNvZGUsIHBNYXRyaXgsIHJldGluYVNjYWxlWCwgcmV0aW5hU2NhbGVZKTsNCisgICAgcFNpemVDYWNoZS0+bV9HbHlwaE1hcC5TZXRBdCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKWNoYXJjb2RlLCBwR2x5cGhCaXRtYXApOw0KKyAgICByZXR1cm4gcEdseXBoQml0bWFwOw0KK30NCitDUERGX1R5cGUzR2x5cGhzOjp+Q1BERl9UeXBlM0dseXBocygpDQorew0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX0dseXBoTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgRlhfTFBWT0lEIEtleTsNCisgICAgQ0ZYX0dseXBoQml0bWFwKiBwR2x5cGhCaXRtYXA7DQorICAgIHdoaWxlKHBvcykgew0KKyAgICAgICAgbV9HbHlwaE1hcC5HZXROZXh0QXNzb2MocG9zLCBLZXksICh2b2lkKiYpcEdseXBoQml0bWFwKTsNCisgICAgICAgIGRlbGV0ZSBwR2x5cGhCaXRtYXA7DQorICAgIH0NCit9DQorc3RhdGljIGludCBfQWRqdXN0Qmx1ZShGWF9GTE9BVCBwb3MsIGludCYgY291bnQsIGludCBibHVlc1tdKQ0KK3sNCisgICAgRlhfRkxPQVQgbWluX2Rpc3RhbmNlID0gMTAwMDAwMC4wZiAqIDEuMGY7DQorICAgIGludCBjbG9zZXN0X3BvcyA9IC0xOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpICsrKSB7DQorICAgICAgICBGWF9GTE9BVCBkaXN0YW5jZSA9IChGWF9GTE9BVClGWFNZU19mYWJzKHBvcyAtIChGWF9GTE9BVClibHVlc1tpXSk7DQorICAgICAgICBpZiAoZGlzdGFuY2UgPCAxLjBmICogODAuMGYgLyAxMDAuMGYgJiYgZGlzdGFuY2UgPCBtaW5fZGlzdGFuY2UpIHsNCisgICAgICAgICAgICBtaW5fZGlzdGFuY2UgPSBkaXN0YW5jZTsNCisgICAgICAgICAgICBjbG9zZXN0X3BvcyA9IGk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGNsb3Nlc3RfcG9zID49IDApIHsNCisgICAgICAgIHJldHVybiBibHVlc1tjbG9zZXN0X3Bvc107DQorICAgIH0NCisgICAgaW50IG5ld19wb3MgPSBGWFNZU19yb3VuZChwb3MpOw0KKyAgICBpZiAoY291bnQgPT0gVFlQRTNfTUFYX0JMVUVTKSB7DQorICAgICAgICByZXR1cm4gbmV3X3BvczsNCisgICAgfQ0KKyAgICBibHVlc1tjb3VudCsrXSA9IG5ld19wb3M7DQorICAgIHJldHVybiBuZXdfcG9zOw0KK30NCit2b2lkIENQREZfVHlwZTNHbHlwaHM6OkFkanVzdEJsdWUoRlhfRkxPQVQgdG9wLCBGWF9GTE9BVCBib3R0b20sIGludCYgdG9wX2xpbmUsIGludCYgYm90dG9tX2xpbmUpDQorew0KKyAgICB0b3BfbGluZSA9IF9BZGp1c3RCbHVlKHRvcCwgbV9Ub3BCbHVlQ291bnQsIG1fVG9wQmx1ZSk7DQorICAgIGJvdHRvbV9saW5lID0gX0FkanVzdEJsdWUoYm90dG9tLCBtX0JvdHRvbUJsdWVDb3VudCwgbV9Cb3R0b21CbHVlKTsNCit9DQorc3RhdGljIEZYX0JPT0wgX0lzU2NhbkxpbmUxYnBwKEZYX0xQQllURSBwQnVmLCBpbnQgd2lkdGgpDQorew0KKyAgICBpbnQgc2l6ZSA9IHdpZHRoIC8gODsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKQ0KKyAgICAgICAgaWYgKHBCdWZbaV0pIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgaWYgKHdpZHRoICUgOCkNCisgICAgICAgIGlmIChwQnVmW3dpZHRoIC8gOF0gJiAoMHhmZiA8PCAoOCAtIHdpZHRoICUgOCkpKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorc3RhdGljIEZYX0JPT0wgX0lzU2NhbkxpbmU4YnBwKEZYX0xQQllURSBwQnVmLCBpbnQgd2lkdGgpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyBpICsrKQ0KKyAgICAgICAgaWYgKHBCdWZbaV0gPiAweDQwKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorc3RhdGljIGludCBfRGV0ZWN0Rmlyc3RMYXN0U2Nhbihjb25zdCBDRlhfRElCaXRtYXAqIHBCaXRtYXAsIEZYX0JPT0wgYkZpcnN0KQ0KK3sNCisgICAgaW50IGhlaWdodCA9IHBCaXRtYXAtPkdldEhlaWdodCgpLCBwaXRjaCA9IHBCaXRtYXAtPkdldFBpdGNoKCksIHdpZHRoID0gcEJpdG1hcC0+R2V0V2lkdGgoKTsNCisgICAgaW50IGJwcCA9IHBCaXRtYXAtPkdldEJQUCgpOw0KKyAgICBpZiAoYnBwID4gOCkgew0KKyAgICAgICAgd2lkdGggKj0gYnBwIC8gODsNCisgICAgfQ0KKyAgICBGWF9MUEJZVEUgcEJ1ZiA9IHBCaXRtYXAtPkdldEJ1ZmZlcigpOw0KKyAgICBpbnQgbGluZSA9IGJGaXJzdCA/IDAgOiBoZWlnaHQgLSAxOw0KKyAgICBpbnQgbGluZV9zdGVwID0gYkZpcnN0ID8gMSA6IC0xOw0KKyAgICBpbnQgbGluZV9lbmQgPSBiRmlyc3QgPyBoZWlnaHQgOiAtMTsNCisgICAgd2hpbGUgKGxpbmUgIT0gbGluZV9lbmQpIHsNCisgICAgICAgIGlmIChicHAgPT0gMSkgew0KKyAgICAgICAgICAgIGlmIChfSXNTY2FuTGluZTFicHAocEJ1ZiArIGxpbmUgKiBwaXRjaCwgd2lkdGgpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBsaW5lOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKF9Jc1NjYW5MaW5lOGJwcChwQnVmICsgbGluZSAqIHBpdGNoLCB3aWR0aCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbGluZSArPSBsaW5lX3N0ZXA7DQorICAgIH0NCisgICAgcmV0dXJuIC0xOw0KK30NCitDRlhfR2x5cGhCaXRtYXAqIENQREZfVHlwZTNDYWNoZTo6UmVuZGVyR2x5cGgoQ1BERl9UeXBlM0dseXBocyogcFNpemUsIEZYX0RXT1JEIGNoYXJjb2RlLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBGWF9GTE9BVCByZXRpbmFTY2FsZVgsIEZYX0ZMT0FUIHJldGluYVNjYWxlWSkNCit7DQorICAgIENQREZfVHlwZTNDaGFyKiBwQ2hhciA9IG1fcEZvbnQtPkxvYWRDaGFyKGNoYXJjb2RlKTsNCisgICAgaWYgKHBDaGFyID09IE5VTEwgfHwgcENoYXItPm1fcEJpdG1hcCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfRElCaXRtYXAqIHBCaXRtYXAgPSBwQ2hhci0+bV9wQml0bWFwOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4IGltYWdlX21hdHJpeCwgdGV4dF9tYXRyaXg7DQorICAgIGltYWdlX21hdHJpeCA9IHBDaGFyLT5tX0ltYWdlTWF0cml4Ow0KKyAgICB0ZXh0X21hdHJpeC5TZXQocE1hdHJpeC0+YSwgcE1hdHJpeC0+YiwgcE1hdHJpeC0+YywgcE1hdHJpeC0+ZCwgMCwgMCk7DQorICAgIGltYWdlX21hdHJpeC5Db25jYXQodGV4dF9tYXRyaXgpOw0KKyAgICBDRlhfRElCaXRtYXAqIHBSZXNCaXRtYXAgPSBOVUxMOw0KKyAgICBpbnQgbGVmdCwgdG9wOw0KKyAgICBpZiAoRlhTWVNfZmFicyhpbWFnZV9tYXRyaXguYikgPCBGWFNZU19mYWJzKGltYWdlX21hdHJpeC5hKSAvIDEwMCAmJiBGWFNZU19mYWJzKGltYWdlX21hdHJpeC5jKSA8IEZYU1lTX2ZhYnMoaW1hZ2VfbWF0cml4LmQpIC8gMTAwKSB7DQorICAgICAgICBpbnQgdG9wX2xpbmUsIGJvdHRvbV9saW5lOw0KKyAgICAgICAgdG9wX2xpbmUgPSBfRGV0ZWN0Rmlyc3RMYXN0U2NhbihwQml0bWFwLCBUUlVFKTsNCisgICAgICAgIGJvdHRvbV9saW5lID0gX0RldGVjdEZpcnN0TGFzdFNjYW4ocEJpdG1hcCwgRkFMU0UpOw0KKyAgICAgICAgaWYgKHRvcF9saW5lID09IDAgJiYgYm90dG9tX2xpbmUgPT0gcEJpdG1hcC0+R2V0SGVpZ2h0KCkgLSAxKSB7DQorICAgICAgICAgICAgRlhfRkxPQVQgdG9wX3kgPSBpbWFnZV9tYXRyaXguZCArIGltYWdlX21hdHJpeC5mOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGJvdHRvbV95ID0gaW1hZ2VfbWF0cml4LmY7DQorICAgICAgICAgICAgRlhfQk9PTCBiRmxpcHBlZCA9IHRvcF95ID4gYm90dG9tX3k7DQorICAgICAgICAgICAgaWYgKGJGbGlwcGVkKSB7DQorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHRlbXAgPSB0b3BfeTsNCisgICAgICAgICAgICAgICAgdG9wX3kgPSBib3R0b21feTsNCisgICAgICAgICAgICAgICAgYm90dG9tX3kgPSB0ZW1wOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwU2l6ZS0+QWRqdXN0Qmx1ZSh0b3BfeSwgYm90dG9tX3ksIHRvcF9saW5lLCBib3R0b21fbGluZSk7DQorICAgICAgICAgICAgcFJlc0JpdG1hcCA9IHBCaXRtYXAtPlN0cmV0Y2hUbygoaW50KShGWFNZU19yb3VuZChpbWFnZV9tYXRyaXguYSkgKiByZXRpbmFTY2FsZVgpLCAoaW50KSgoYkZsaXBwZWQgPyB0b3BfbGluZSAtIGJvdHRvbV9saW5lIDogYm90dG9tX2xpbmUgLSB0b3BfbGluZSkgKiByZXRpbmFTY2FsZVkpKTsNCisgICAgICAgICAgICB0b3AgPSB0b3BfbGluZTsNCisgICAgICAgICAgICBpZiAoaW1hZ2VfbWF0cml4LmEgPCAwKSB7DQorICAgICAgICAgICAgICAgIGltYWdlX21hdHJpeC5TY2FsZShyZXRpbmFTY2FsZVgsIHJldGluYVNjYWxlWSk7DQorICAgICAgICAgICAgICAgIGxlZnQgPSBGWFNZU19yb3VuZChpbWFnZV9tYXRyaXguZSArIGltYWdlX21hdHJpeC5hKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBsZWZ0ID0gRlhTWVNfcm91bmQoaW1hZ2VfbWF0cml4LmUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBSZXNCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgaW1hZ2VfbWF0cml4LlNjYWxlKHJldGluYVNjYWxlWCwgcmV0aW5hU2NhbGVZKTsNCisgICAgICAgIHBSZXNCaXRtYXAgPSBwQml0bWFwLT5UcmFuc2Zvcm1UbygmaW1hZ2VfbWF0cml4LCBsZWZ0LCB0b3ApOw0KKyAgICB9DQorICAgIGlmIChwUmVzQml0bWFwID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGWF9HbHlwaEJpdG1hcCogcEdseXBoID0gRlhfTkVXIENGWF9HbHlwaEJpdG1hcDsNCisgICAgcEdseXBoLT5tX0xlZnQgPSBsZWZ0Ow0KKyAgICBwR2x5cGgtPm1fVG9wID0gLXRvcDsNCisgICAgcEdseXBoLT5tX0JpdG1hcC5UYWtlT3ZlcihwUmVzQml0bWFwKTsNCisgICAgZGVsZXRlIHBSZXNCaXRtYXA7DQorICAgIHJldHVybiBwR2x5cGg7DQorfQ0KK3ZvaWQgX0NQREZfVW5pcXVlS2V5R2VuOjpHZW5lcmF0ZShpbnQgY291bnQsIC4uLikNCit7DQorICAgIHZhX2xpc3QgYXJnTGlzdDsNCisgICAgdmFfc3RhcnQoYXJnTGlzdCwgY291bnQpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpICsrKSB7DQorICAgICAgICBpbnQgcCA9IHZhX2FyZyhhcmdMaXN0LCBpbnQpOw0KKyAgICAgICAgKChGWF9EV09SRCopbV9LZXkpW2ldID0gcDsNCisgICAgfQ0KKyAgICB2YV9lbmQoYXJnTGlzdCk7DQorICAgIG1fS2V5TGVuID0gY291bnQgKiBzaXplb2YoRlhfRFdPUkQpOw0KK30NCitGWF9CT09MIENQREZfUmVuZGVyU3RhdHVzOjpQcm9jZXNzVGV4dChjb25zdCBDUERGX1RleHRPYmplY3QqIHRleHRvYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlLCBDRlhfUGF0aERhdGEqIHBDbGlwcGluZ1BhdGgpDQorew0KKyAgICBpZih0ZXh0b2JqLT5tX25DaGFycyA9PSAwKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpbnQgdGV4dF9yZW5kZXJfbW9kZSA9IHRleHRvYmotPm1fVGV4dFN0YXRlLkdldE9iamVjdCgpLT5tX1RleHRNb2RlOw0KKyAgICBpZiAodGV4dF9yZW5kZXJfbW9kZSA9PSAzKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBDUERGX0ZvbnQqIHBGb250ID0gdGV4dG9iai0+bV9UZXh0U3RhdGUuR2V0Rm9udCgpOw0KKyAgICBpZiAocEZvbnQtPkdldEZvbnRUeXBlKCkgPT0gUERGRk9OVF9UWVBFMykgew0KKyAgICAgICAgcmV0dXJuIFByb2Nlc3NUeXBlM1RleHQodGV4dG9iaiwgcE9iajJEZXZpY2UpOw0KKyAgICB9DQorICAgIEZYX0JPT0wgYkZpbGwgPSBGQUxTRSwgYlN0cm9rZSA9IEZBTFNFLCBiQ2xpcCA9IEZBTFNFOw0KKyAgICBpZiAocENsaXBwaW5nUGF0aCkgew0KKyAgICAgICAgYkNsaXAgPSBUUlVFOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgc3dpdGNoICh0ZXh0X3JlbmRlcl9tb2RlKSB7DQorICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgIGNhc2UgNDoNCisgICAgICAgICAgICAgICAgYkZpbGwgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgY2FzZSA1Og0KKyAgICAgICAgICAgICAgICBpZiAocEZvbnQtPkdldEZhY2UoKSA9PSBOVUxMICYmICEocEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX1N1YnN0RmxhZ3MgJiBGWEZPTlRfU1VCU1RfR0xZUEhQQVRIKSkgew0KKyAgICAgICAgICAgICAgICAgICAgYkZpbGwgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgYlN0cm9rZSA9IFRSVUU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIGNhc2UgNjoNCisgICAgICAgICAgICAgICAgaWYgKHBGb250LT5HZXRGYWNlKCkgPT0gTlVMTCAmJiAhKHBGb250LT5HZXRTdWJzdEZvbnQoKS0+bV9TdWJzdEZsYWdzICYgRlhGT05UX1NVQlNUX0dMWVBIUEFUSCkpIHsNCisgICAgICAgICAgICAgICAgICAgIGJGaWxsID0gVFJVRTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGJGaWxsID0gYlN0cm9rZSA9IFRSVUU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgIGNhc2UgNzoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICAgICAgYkZpbGwgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX0FSR0Igc3Ryb2tlX2FyZ2IgPSAwLCBmaWxsX2FyZ2IgPSAwOw0KKyAgICBGWF9CT09MIGJQYXR0ZXJuID0gRkFMU0U7DQorICAgIGlmIChiU3Ryb2tlKSB7DQorICAgICAgICBpZiAodGV4dG9iai0+bV9Db2xvclN0YXRlLkdldFN0cm9rZUNvbG9yKCktPklzUGF0dGVybigpKSB7DQorICAgICAgICAgICAgYlBhdHRlcm4gPSBUUlVFOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzdHJva2VfYXJnYiA9IEdldFN0cm9rZUFyZ2IodGV4dG9iaik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGJGaWxsKSB7DQorICAgICAgICBpZiAodGV4dG9iai0+bV9Db2xvclN0YXRlLkdldEZpbGxDb2xvcigpLT5Jc1BhdHRlcm4oKSkgew0KKyAgICAgICAgICAgIGJQYXR0ZXJuID0gVFJVRTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZmlsbF9hcmdiID0gR2V0RmlsbEFyZ2IodGV4dG9iaik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ0ZYX0FmZmluZU1hdHJpeCB0ZXh0X21hdHJpeDsNCisgICAgdGV4dG9iai0+R2V0VGV4dE1hdHJpeCgmdGV4dF9tYXRyaXgpOw0KKyAgICBpZihJc0F2YWlsYWJsZU1hdHJpeCh0ZXh0X21hdHJpeCkgPT0gRkFMU0UpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIGZvbnRfc2l6ZSA9IHRleHRvYmotPm1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCk7DQorICAgIGlmIChiUGF0dGVybikgew0KKyAgICAgICAgRHJhd1RleHRQYXRoV2l0aFBhdHRlcm4odGV4dG9iaiwgcE9iajJEZXZpY2UsIHBGb250LCBmb250X3NpemUsICZ0ZXh0X21hdHJpeCwgYkZpbGwsIGJTdHJva2UpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisjaWYgZGVmaW5lZChfRlBERkFQSV9NSU5JXykNCisgICAgaWYgKGJGaWxsKSB7DQorICAgICAgICBiU3Ryb2tlID0gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKGJTdHJva2UpIHsNCisgICAgICAgIGlmIChmb250X3NpemUgKiB0ZXh0X21hdHJpeC5HZXRYVW5pdCgpICogcE9iajJEZXZpY2UtPkdldFhVbml0KCkgPCA2KSB7DQorICAgICAgICAgICAgYlN0cm9rZSA9IEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorI2VuZGlmDQorICAgIGlmIChiQ2xpcCB8fCBiU3Ryb2tlKSB7DQorICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwRGV2aWNlTWF0cml4ID0gcE9iajJEZXZpY2U7DQorICAgICAgICBDRlhfQWZmaW5lTWF0cml4IGRldmljZV9tYXRyaXg7DQorICAgICAgICBpZiAoYlN0cm9rZSkgew0KKyAgICAgICAgICAgIGNvbnN0IEZYX0ZMT0FUKiBwQ1RNID0gdGV4dG9iai0+bV9UZXh0U3RhdGUuR2V0T2JqZWN0KCktPm1fQ1RNOw0KKyAgICAgICAgICAgIGlmIChwQ1RNWzBdICE9IDEuMGYgfHwgcENUTVszXSAhPSAxLjBmKSB7DQorICAgICAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggY3RtKHBDVE1bMF0sIHBDVE1bMV0sIHBDVE1bMl0sIHBDVE1bM10sIDAsIDApOw0KKyAgICAgICAgICAgICAgICB0ZXh0X21hdHJpeC5Db25jYXRJbnZlcnNlKGN0bSk7DQorICAgICAgICAgICAgICAgIGRldmljZV9tYXRyaXguQ29weShjdG0pOw0KKyAgICAgICAgICAgICAgICBkZXZpY2VfbWF0cml4LkNvbmNhdCgqcE9iajJEZXZpY2UpOw0KKyAgICAgICAgICAgICAgICBwRGV2aWNlTWF0cml4ID0gJmRldmljZV9tYXRyaXg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IGZsYWcgPSAwOw0KKyAgICAgICAgaWYgKGJTdHJva2UgJiYgYkZpbGwpIHsNCisgICAgICAgICAgICBmbGFnIHw9IEZYX0ZJTExfU1RST0tFOw0KKyAgICAgICAgICAgIGZsYWcgfD0gRlhfU1RST0tFX1RFWFRfTU9ERTsNCisgICAgICAgIH0NCisjaWYgIWRlZmluZWQoX0ZQREZBUElfTUlOSV8pIHx8IGRlZmluZWQoX0ZYQ09SRV9GRUFUVVJFX0FMTF8pDQorICAgICAgICBjb25zdCBDUERGX0dlbmVyYWxTdGF0ZURhdGEqIHBHZW5lcmFsRGF0YSA9ICgoQ1BERl9QYWdlT2JqZWN0Kil0ZXh0b2JqKS0+bV9HZW5lcmFsU3RhdGU7DQorICAgICAgICBpZiAocEdlbmVyYWxEYXRhICYmIHBHZW5lcmFsRGF0YS0+bV9TdHJva2VBZGp1c3QpIHsNCisgICAgICAgICAgICBmbGFnIHw9IEZYX1NUUk9LRV9BREpVU1Q7DQorICAgICAgICB9DQorI2VuZGlmDQorICAgICAgICBpZiAobV9PcHRpb25zLm1fRmxhZ3MgJiBSRU5ERVJfTk9URVhUU01PT1RIKSB7DQorICAgICAgICAgICAgZmxhZyB8PSBGWEZJTExfTk9QQVRIU01PT1RIOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIENQREZfVGV4dFJlbmRlcmVyOjpEcmF3VGV4dFBhdGgobV9wRGV2aWNlLCB0ZXh0b2JqLT5tX25DaGFycywgdGV4dG9iai0+bV9wQ2hhckNvZGVzLCB0ZXh0b2JqLT5tX3BDaGFyUG9zLCBwRm9udCwgZm9udF9zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRleHRfbWF0cml4LCBwRGV2aWNlTWF0cml4LCB0ZXh0b2JqLT5tX0dyYXBoU3RhdGUsIGZpbGxfYXJnYiwgc3Ryb2tlX2FyZ2IsIHBDbGlwcGluZ1BhdGgsIGZsYWcpOw0KKyAgICB9DQorICAgIHRleHRfbWF0cml4LkNvbmNhdCgqcE9iajJEZXZpY2UpOw0KKyAgICByZXR1cm4gQ1BERl9UZXh0UmVuZGVyZXI6OkRyYXdOb3JtYWxUZXh0KG1fcERldmljZSwgdGV4dG9iai0+bV9uQ2hhcnMsIHRleHRvYmotPm1fcENoYXJDb2RlcywgdGV4dG9iai0+bV9wQ2hhclBvcywgcEZvbnQsIGZvbnRfc2l6ZSwNCisgICAgICAgICAgICAmdGV4dF9tYXRyaXgsIGZpbGxfYXJnYiwgJm1fT3B0aW9ucyk7DQorfQ0KK0NQREZfVHlwZTNDYWNoZSogQ1BERl9SZW5kZXJTdGF0dXM6OkdldENhY2hlZFR5cGUzKENQREZfVHlwZTNGb250KiBwRm9udCkNCit7DQorICAgIGlmIChwRm9udC0+bV9wRG9jdW1lbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcEZvbnQtPm1fcERvY3VtZW50LT5HZXRQYWdlRGF0YSgpLT5HZXRGb250KHBGb250LT5HZXRGb250RGljdCgpLCBGQUxTRSk7DQorICAgIHJldHVybiBwRm9udC0+bV9wRG9jdW1lbnQtPkdldFJlbmRlckRhdGEoKS0+R2V0Q2FjaGVkVHlwZTMocEZvbnQpOw0KK30NCitzdGF0aWMgdm9pZCBSZWxlYXNlQ2FjaGVkVHlwZTMoQ1BERl9UeXBlM0ZvbnQqIHBGb250KQ0KK3sNCisgICAgaWYgKHBGb250LT5tX3BEb2N1bWVudCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcEZvbnQtPm1fcERvY3VtZW50LT5HZXRSZW5kZXJEYXRhKCktPlJlbGVhc2VDYWNoZWRUeXBlMyhwRm9udCk7DQorICAgIHBGb250LT5tX3BEb2N1bWVudC0+R2V0UGFnZURhdGEoKS0+UmVsZWFzZUZvbnQocEZvbnQtPkdldEZvbnREaWN0KCkpOw0KK30NCitGWF9CT09MIENQREZfVHlwZTNDaGFyOjpMb2FkQml0bWFwKENQREZfUmVuZGVyQ29udGV4dCogcENvbnRleHQpDQorew0KKyAgICBpZiAobV9wQml0bWFwICE9IE5VTEwgfHwgbV9wRm9ybSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAobV9wRm9ybS0+Q291bnRPYmplY3RzKCkgPT0gMSAmJiAhbV9iQ29sb3JlZCkgew0KKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0ICpwUGFnZU9iaiA9IG1fcEZvcm0tPkdldE9iamVjdEF0KG1fcEZvcm0tPkdldEZpcnN0T2JqZWN0UG9zaXRpb24oKSk7DQorICAgICAgICBpZiAocFBhZ2VPYmotPm1fVHlwZSA9PSBQREZQQUdFX0lNQUdFKSB7DQorICAgICAgICAgICAgQ1BERl9JbWFnZU9iamVjdCogcEltYWdlID0gKENQREZfSW1hZ2VPYmplY3QqKXBQYWdlT2JqOw0KKyAgICAgICAgICAgIG1fSW1hZ2VNYXRyaXggPSBwSW1hZ2UtPm1fTWF0cml4Ow0KKyAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTb3VyY2UgPSBwSW1hZ2UtPm1fcEltYWdlLT5Mb2FkRElCU291cmNlKCk7DQorICAgICAgICAgICAgaWYgKHBTb3VyY2UpIHsNCisgICAgICAgICAgICAgICAgbV9wQml0bWFwID0gcFNvdXJjZS0+Q2xvbmUoKTsNCisgICAgICAgICAgICAgICAgZGVsZXRlIHBTb3VyY2U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlbGV0ZSBtX3BGb3JtOw0KKyAgICAgICAgICAgIG1fcEZvcm0gPSBOVUxMOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBQYWdlT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9JTkxJTkVTKSB7DQorICAgICAgICAgICAgQ1BERl9JbmxpbmVJbWFnZXMgKnBJbmxpbmVzID0gKENQREZfSW5saW5lSW1hZ2VzICopcFBhZ2VPYmo7DQorICAgICAgICAgICAgaWYgKHBJbmxpbmVzLT5tX3BTdHJlYW0pIHsNCisgICAgICAgICAgICAgICAgbV9JbWFnZU1hdHJpeCA9IHBJbmxpbmVzLT5tX01hdHJpY2VzWzBdOw0KKyAgICAgICAgICAgICAgICBDUERGX0RJQlNvdXJjZSBkaWJzcmM7DQorICAgICAgICAgICAgICAgIGlmICghZGlic3JjLkxvYWQocENvbnRleHQtPm1fcERvY3VtZW50LCBwSW5saW5lcy0+bV9wU3RyZWFtLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fcEJpdG1hcCA9IGRpYnNyYy5DbG9uZSgpOw0KKyAgICAgICAgICAgICAgICBkZWxldGUgbV9wRm9ybTsNCisgICAgICAgICAgICAgICAgbV9wRm9ybSA9IE5VTEw7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK2NsYXNzIENQREZfUmVmVHlwZTNDYWNoZQ0KK3sNCitwdWJsaWM6DQorICAgIENQREZfUmVmVHlwZTNDYWNoZShDUERGX1R5cGUzRm9udCogcFR5cGUzRm9udCkNCisgICAgew0KKyAgICAgICAgbV9kd0NvdW50ID0gMDsNCisgICAgICAgIG1fcFR5cGUzRm9udCA9IHBUeXBlM0ZvbnQ7DQorICAgIH0NCisgICAgfkNQREZfUmVmVHlwZTNDYWNoZSgpDQorICAgIHsNCisgICAgICAgIHdoaWxlKG1fZHdDb3VudC0tKSB7DQorICAgICAgICAgICAgUmVsZWFzZUNhY2hlZFR5cGUzKG1fcFR5cGUzRm9udCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfRFdPUkQgbV9kd0NvdW50Ow0KKyAgICBDUERGX1R5cGUzRm9udCogbV9wVHlwZTNGb250Ow0KK307DQorRlhfQk9PTCBDUERGX1JlbmRlclN0YXR1czo6UHJvY2Vzc1R5cGUzVGV4dChjb25zdCBDUERGX1RleHRPYmplY3QqIHRleHRvYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKQ0KK3sNCisgICAgQ1BERl9UeXBlM0ZvbnQqIHBUeXBlM0ZvbnQgPSB0ZXh0b2JqLT5tX1RleHRTdGF0ZS5HZXRGb250KCktPkdldFR5cGUzRm9udCgpOw0KKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fVHlwZTNGb250Q2FjaGUuR2V0U2l6ZSgpOyBqKyspDQorICAgICAgICBpZiAoKENQREZfVHlwZTNGb250KiltX1R5cGUzRm9udENhY2hlLkdldEF0KGopID09IHBUeXBlM0ZvbnQpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgQ0ZYX01hdHJpeCBkQ1RNID0gbV9wRGV2aWNlLT5HZXRDVE0oKTsNCisgICAgRlhfRkxPQVQgc2EgPSBGWFNZU19mYWJzKGRDVE0uYSk7DQorICAgIEZYX0ZMT0FUIHNkID0gRlhTWVNfZmFicyhkQ1RNLmQpOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4IHRleHRfbWF0cml4Ow0KKyAgICB0ZXh0b2JqLT5HZXRUZXh0TWF0cml4KCZ0ZXh0X21hdHJpeCk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggY2hhcl9tYXRyaXggPSBwVHlwZTNGb250LT5HZXRGb250TWF0cml4KCk7DQorICAgIEZYX0ZMT0FUIGZvbnRfc2l6ZSA9IHRleHRvYmotPm1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCk7DQorICAgIGNoYXJfbWF0cml4LlNjYWxlKGZvbnRfc2l6ZSwgZm9udF9zaXplKTsNCisgICAgRlhfQVJHQiBmaWxsX2FyZ2IgPSBHZXRGaWxsQXJnYih0ZXh0b2JqLCBUUlVFKTsNCisgICAgaW50IGZpbGxfYWxwaGEgPSBGWEFSR0JfQShmaWxsX2FyZ2IpOw0KKyAgICBpbnQgZGV2aWNlX2NsYXNzID0gbV9wRGV2aWNlLT5HZXREZXZpY2VDbGFzcygpOw0KKyAgICBGWFRFWFRfR0xZUEhQT1MqIHBHbHlwaEFuZFBvcyA9IE5VTEw7DQorICAgIGlmIChkZXZpY2VfY2xhc3MgPT0gRlhEQ19ESVNQTEFZKSB7DQorICAgICAgICBwR2x5cGhBbmRQb3MgPSBGWF9BbGxvYyhGWFRFWFRfR0xZUEhQT1MsIHRleHRvYmotPm1fbkNoYXJzKTsNCisgICAgICAgIEZYU1lTX21lbXNldDMyKHBHbHlwaEFuZFBvcywgMCwgc2l6ZW9mKEZYVEVYVF9HTFlQSFBPUykgKiB0ZXh0b2JqLT5tX25DaGFycyk7DQorICAgIH0gZWxzZSBpZiAoZmlsbF9hbHBoYSA8IDI1NSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfUmVmVHlwZTNDYWNoZSByZWZUeXBlQ2FjaGUocFR5cGUzRm9udCk7DQorICAgIEZYX0RXT1JEICpwQ2hhcnMgPSB0ZXh0b2JqLT5tX3BDaGFyQ29kZXM7DQorICAgIGlmICh0ZXh0b2JqLT5tX25DaGFycyA9PSAxKSB7DQorICAgICAgICBwQ2hhcnMgPSAoRlhfRFdPUkQqKSgmdGV4dG9iai0+bV9wQ2hhckNvZGVzKTsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpQ2hhciA9IDA7IGlDaGFyIDwgdGV4dG9iai0+bV9uQ2hhcnM7IGlDaGFyICsrKSB7DQorICAgICAgICBGWF9EV09SRCBjaGFyY29kZSA9IHBDaGFyc1tpQ2hhcl07DQorICAgICAgICBpZiAoY2hhcmNvZGUgPT0gKEZYX0RXT1JEKSAtIDEpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfVHlwZTNDaGFyKiBwVHlwZTNDaGFyID0gcFR5cGUzRm9udC0+TG9hZENoYXIoY2hhcmNvZGUpOw0KKyAgICAgICAgaWYgKHBUeXBlM0NoYXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXggPSBjaGFyX21hdHJpeDsNCisgICAgICAgIG1hdHJpeC5lICs9IGlDaGFyID8gdGV4dG9iai0+bV9wQ2hhclBvc1tpQ2hhciAtIDFdIDogMDsNCisgICAgICAgIG1hdHJpeC5Db25jYXQodGV4dF9tYXRyaXgpOw0KKyAgICAgICAgbWF0cml4LkNvbmNhdCgqcE9iajJEZXZpY2UpOw0KKyAgICAgICAgaWYgKCFwVHlwZTNDaGFyLT5Mb2FkQml0bWFwKG1fcENvbnRleHQpKSB7DQorICAgICAgICAgICAgaWYgKHBHbHlwaEFuZFBvcykgew0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlDaGFyOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBGWFRFWFRfR0xZUEhQT1MmIGdseXBoID0gcEdseXBoQW5kUG9zW2ldOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGdseXBoLm1fcEdseXBoID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fcERldmljZS0+U2V0Qml0TWFzaygmZ2x5cGgubV9wR2x5cGgtPm1fQml0bWFwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoLm1fT3JpZ2luWCArIGdseXBoLm1fcEdseXBoLT5tX0xlZnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGgubV9PcmlnaW5ZIC0gZ2x5cGgubV9wR2x5cGgtPm1fVG9wLCBmaWxsX2FyZ2IpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX0ZyZWUocEdseXBoQW5kUG9zKTsNCisgICAgICAgICAgICAgICAgcEdseXBoQW5kUG9zID0gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ1BERl9HcmFwaGljU3RhdGVzKiBwU3RhdGVzID0gQ2xvbmVPYmpTdGF0ZXModGV4dG9iaiwgRkFMU0UpOw0KKyAgICAgICAgICAgIENQREZfUmVuZGVyT3B0aW9ucyBPcHRpb25zID0gbV9PcHRpb25zOw0KKyAgICAgICAgICAgIE9wdGlvbnMubV9GbGFncyB8PSBSRU5ERVJfRk9SQ0VfSEFMRlRPTkUgfCBSRU5ERVJfUkVDVF9BQTsNCisgICAgICAgICAgICBPcHRpb25zLm1fRmxhZ3MgJj0gflJFTkRFUl9GT1JDRV9ET1dOU0FNUExFOw0KKyAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcEZvcm1SZXNvdXJjZSA9IE5VTEw7DQorICAgICAgICAgICAgaWYgKHBUeXBlM0NoYXItPm1fcEZvcm0gJiYgcFR5cGUzQ2hhci0+bV9wRm9ybS0+bV9wRm9ybURpY3QpIHsNCisgICAgICAgICAgICAgICAgcEZvcm1SZXNvdXJjZSA9IHBUeXBlM0NoYXItPm1fcEZvcm0tPm1fcEZvcm1EaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJSZXNvdXJjZXMiKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChmaWxsX2FscGhhID09IDI1NSkgew0KKyAgICAgICAgICAgICAgICBDUERGX1JlbmRlclN0YXR1cyBzdGF0dXM7DQorICAgICAgICAgICAgICAgIHN0YXR1cy5Jbml0aWFsaXplKG1fTGV2ZWwgKyAxLCBtX3BDb250ZXh0LCBtX3BEZXZpY2UsIE5VTEwsIE5VTEwsIHRoaXMsIHBTdGF0ZXMsICZPcHRpb25zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwVHlwZTNDaGFyLT5tX3BGb3JtLT5tX1RyYW5zcGFyZW5jeSwgbV9iRHJvcE9iamVjdHMsIHBGb3JtUmVzb3VyY2UsIEZBTFNFLCBwVHlwZTNDaGFyLCBmaWxsX2FyZ2IpOw0KKyAgICAgICAgICAgICAgICBzdGF0dXMubV9UeXBlM0ZvbnRDYWNoZS5BcHBlbmQobV9UeXBlM0ZvbnRDYWNoZSk7DQorICAgICAgICAgICAgICAgIHN0YXR1cy5tX1R5cGUzRm9udENhY2hlLkFkZChwVHlwZTNGb250KTsNCisgICAgICAgICAgICAgICAgbV9wRGV2aWNlLT5TYXZlU3RhdGUoKTsNCisgICAgICAgICAgICAgICAgc3RhdHVzLlJlbmRlck9iamVjdExpc3QocFR5cGUzQ2hhci0+bV9wRm9ybSwgJm1hdHJpeCk7DQorICAgICAgICAgICAgICAgIG1fcERldmljZS0+UmVzdG9yZVN0YXRlKCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0X2YgPSBwVHlwZTNDaGFyLT5tX3BGb3JtLT5DYWxjQm91bmRpbmdCb3goKTsNCisgICAgICAgICAgICAgICAgcmVjdF9mLlRyYW5zZm9ybSgmbWF0cml4KTsNCisgICAgICAgICAgICAgICAgRlhfUkVDVCByZWN0ID0gcmVjdF9mLkdldE91dHRlclJlY3QoKTsNCisgICAgICAgICAgICAgICAgQ0ZYX0Z4Z2VEZXZpY2UgYml0bWFwX2RldmljZTsNCisgICAgICAgICAgICAgICAgaWYgKCFiaXRtYXBfZGV2aWNlLkNyZWF0ZSgoaW50KShyZWN0LldpZHRoKCkgKiBzYSksIChpbnQpKHJlY3QuSGVpZ2h0KCkgKiBzZCksIEZYRElCX0FyZ2IpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBiaXRtYXBfZGV2aWNlLkdldEJpdG1hcCgpLT5DbGVhcigwKTsNCisgICAgICAgICAgICAgICAgQ1BERl9SZW5kZXJTdGF0dXMgc3RhdHVzOw0KKyAgICAgICAgICAgICAgICBzdGF0dXMuSW5pdGlhbGl6ZShtX0xldmVsICsgMSwgbV9wQ29udGV4dCwgJmJpdG1hcF9kZXZpY2UsIE5VTEwsIE5VTEwsIHRoaXMsIHBTdGF0ZXMsICZPcHRpb25zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwVHlwZTNDaGFyLT5tX3BGb3JtLT5tX1RyYW5zcGFyZW5jeSwgbV9iRHJvcE9iamVjdHMsIHBGb3JtUmVzb3VyY2UsIEZBTFNFLCBwVHlwZTNDaGFyLCBmaWxsX2FyZ2IpOw0KKyAgICAgICAgICAgICAgICBzdGF0dXMubV9UeXBlM0ZvbnRDYWNoZS5BcHBlbmQobV9UeXBlM0ZvbnRDYWNoZSk7DQorICAgICAgICAgICAgICAgIHN0YXR1cy5tX1R5cGUzRm9udENhY2hlLkFkZChwVHlwZTNGb250KTsNCisgICAgICAgICAgICAgICAgbWF0cml4LlRyYW5zbGF0ZUkoLXJlY3QubGVmdCwgLXJlY3QudG9wKTsNCisgICAgICAgICAgICAgICAgbWF0cml4LlNjYWxlKHNhLCBzZCk7DQorICAgICAgICAgICAgICAgIHN0YXR1cy5SZW5kZXJPYmplY3RMaXN0KHBUeXBlM0NoYXItPm1fcEZvcm0sICZtYXRyaXgpOw0KKyAgICAgICAgICAgICAgICBtX3BEZXZpY2UtPlNldERJQml0cyhiaXRtYXBfZGV2aWNlLkdldEJpdG1hcCgpLCByZWN0LmxlZnQsIHJlY3QudG9wKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVsZXRlIHBTdGF0ZXM7DQorICAgICAgICB9IGVsc2UgaWYgKHBUeXBlM0NoYXItPm1fcEJpdG1hcCkgew0KKyAgICAgICAgICAgIGlmIChkZXZpY2VfY2xhc3MgPT0gRlhEQ19ESVNQTEFZKSB7DQorICAgICAgICAgICAgICAgIENQREZfVHlwZTNDYWNoZSogcENhY2hlID0gR2V0Q2FjaGVkVHlwZTMocFR5cGUzRm9udCk7DQorICAgICAgICAgICAgICAgIHJlZlR5cGVDYWNoZS5tX2R3Q291bnQrKzsNCisgICAgICAgICAgICAgICAgQ0ZYX0dseXBoQml0bWFwKiBwQml0bWFwID0gcENhY2hlLT5Mb2FkR2x5cGgoY2hhcmNvZGUsICZtYXRyaXgsIHNhLCBzZCk7DQorICAgICAgICAgICAgICAgIGlmIChwQml0bWFwID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGludCBvcmlnaW5feCA9IEZYU1lTX3JvdW5kKG1hdHJpeC5lKTsNCisgICAgICAgICAgICAgICAgaW50IG9yaWdpbl95ID0gRlhTWVNfcm91bmQobWF0cml4LmYpOw0KKyAgICAgICAgICAgICAgICBpZiAocEdseXBoQW5kUG9zKSB7DQorICAgICAgICAgICAgICAgICAgICBwR2x5cGhBbmRQb3NbaUNoYXJdLm1fcEdseXBoID0gcEJpdG1hcDsNCisgICAgICAgICAgICAgICAgICAgIHBHbHlwaEFuZFBvc1tpQ2hhcl0ubV9PcmlnaW5YID0gb3JpZ2luX3g7DQorICAgICAgICAgICAgICAgICAgICBwR2x5cGhBbmRQb3NbaUNoYXJdLm1fT3JpZ2luWSA9IG9yaWdpbl95Ow0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbV9wRGV2aWNlLT5TZXRCaXRNYXNrKCZwQml0bWFwLT5tX0JpdG1hcCwgb3JpZ2luX3ggKyBwQml0bWFwLT5tX0xlZnQsIG9yaWdpbl95IC0gcEJpdG1hcC0+bV9Ub3AsIGZpbGxfYXJnYik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IGltYWdlX21hdHJpeCA9IHBUeXBlM0NoYXItPm1fSW1hZ2VNYXRyaXg7DQorICAgICAgICAgICAgICAgIGltYWdlX21hdHJpeC5Db25jYXQobWF0cml4KTsNCisgICAgICAgICAgICAgICAgQ1BERl9JbWFnZVJlbmRlcmVyIHJlbmRlcmVyOw0KKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXIuU3RhcnQodGhpcywgcFR5cGUzQ2hhci0+bV9wQml0bWFwLCBmaWxsX2FyZ2IsIDI1NSwgJmltYWdlX21hdHJpeCwgMCwgRkFMU0UpKSB7DQorICAgICAgICAgICAgICAgICAgICByZW5kZXJlci5Db250aW51ZShOVUxMKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLm1fUmVzdWx0KSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBHbHlwaEFuZFBvcykgew0KKyAgICAgICAgRlhfUkVDVCByZWN0ID0gRlhHRV9HZXRHbHlwaHNCQm94KHBHbHlwaEFuZFBvcywgdGV4dG9iai0+bV9uQ2hhcnMsIDAsIHNhLCBzZCk7DQorICAgICAgICBDRlhfRElCaXRtYXAgYml0bWFwOw0KKyAgICAgICAgaWYgKCFiaXRtYXAuQ3JlYXRlKChpbnQpKHJlY3QuV2lkdGgoKSAqIHNhKSwgKGludCkocmVjdC5IZWlnaHQoKSAqIHNkKSwgRlhESUJfOGJwcE1hc2spKSB7DQorICAgICAgICAgICAgRlhfRnJlZShwR2x5cGhBbmRQb3MpOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgYml0bWFwLkNsZWFyKDApOw0KKyAgICAgICAgZm9yIChpbnQgaUNoYXIgPSAwOyBpQ2hhciA8IHRleHRvYmotPm1fbkNoYXJzOyBpQ2hhciArKykgew0KKyAgICAgICAgICAgIEZYVEVYVF9HTFlQSFBPUyYgZ2x5cGggPSBwR2x5cGhBbmRQb3NbaUNoYXJdOw0KKyAgICAgICAgICAgIGlmIChnbHlwaC5tX3BHbHlwaCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBiaXRtYXAuVHJhbnNmZXJCaXRtYXAoKGludCkoKGdseXBoLm1fT3JpZ2luWCArIGdseXBoLm1fcEdseXBoLT5tX0xlZnQgLSByZWN0LmxlZnQpICogc2EpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoZ2x5cGgubV9PcmlnaW5ZIC0gZ2x5cGgubV9wR2x5cGgtPm1fVG9wIC0gcmVjdC50b3ApICogc2QpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaC5tX3BHbHlwaC0+bV9CaXRtYXAuR2V0V2lkdGgoKSwgZ2x5cGgubV9wR2x5cGgtPm1fQml0bWFwLkdldEhlaWdodCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2x5cGgubV9wR2x5cGgtPm1fQml0bWFwLCAwLCAwKTsNCisgICAgICAgIH0NCisgICAgICAgIG1fcERldmljZS0+U2V0Qml0TWFzaygmYml0bWFwLCByZWN0LmxlZnQsIHJlY3QudG9wLCBmaWxsX2FyZ2IpOw0KKyAgICAgICAgRlhfRnJlZShwR2x5cGhBbmRQb3MpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitjbGFzcyBDUERGX0NoYXJQb3NMaXN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9DaGFyUG9zTGlzdCgpOw0KKyAgICB+Q1BERl9DaGFyUG9zTGlzdCgpOw0KKyAgICB2b2lkCQkJCUxvYWQoaW50IG5DaGFycywgRlhfRFdPUkQqIHBDaGFyQ29kZXMsIEZYX0ZMT0FUKiBwQ2hhclBvcywgQ1BERl9Gb250KiBwRm9udCwgRlhfRkxPQVQgZm9udF9zaXplKTsNCisgICAgRlhURVhUX0NIQVJQT1MqCQltX3BDaGFyUG9zOw0KKyAgICBGWF9EV09SRAkJCW1fbkNoYXJzOw0KK307DQorRlhfRkxPQVQgX0NJRFRyYW5zZm9ybVRvRmxvYXQoRlhfQllURSBjaCk7DQorQ1BERl9DaGFyUG9zTGlzdDo6Q1BERl9DaGFyUG9zTGlzdCgpDQorew0KKyAgICBtX3BDaGFyUG9zID0gTlVMTDsNCit9DQorQ1BERl9DaGFyUG9zTGlzdDo6fkNQREZfQ2hhclBvc0xpc3QoKQ0KK3sNCisgICAgaWYgKG1fcENoYXJQb3MpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wQ2hhclBvcyk7DQorICAgIH0NCit9DQordm9pZCBDUERGX0NoYXJQb3NMaXN0OjpMb2FkKGludCBuQ2hhcnMsIEZYX0RXT1JEKiBwQ2hhckNvZGVzLCBGWF9GTE9BVCogcENoYXJQb3MsIENQREZfRm9udCogcEZvbnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIEZvbnRTaXplKQ0KK3sNCisgICAgbV9wQ2hhclBvcyA9IEZYX0FsbG9jKEZYVEVYVF9DSEFSUE9TLCBuQ2hhcnMpOw0KKyAgICBGWFNZU19tZW1zZXQzMihtX3BDaGFyUG9zLCAwLCBzaXplb2YoRlhURVhUX0NIQVJQT1MpICogbkNoYXJzKTsNCisgICAgbV9uQ2hhcnMgPSAwOw0KKyAgICBDUERGX0NJREZvbnQqIHBDSURGb250ID0gcEZvbnQtPkdldENJREZvbnQoKTsNCisgICAgRlhfQk9PTCBiVmVydFdyaXRpbmcgPSBwQ0lERm9udCAmJiBwQ0lERm9udC0+SXNWZXJ0V3JpdGluZygpOw0KKyAgICBmb3IgKGludCBpQ2hhciA9IDA7IGlDaGFyIDwgbkNoYXJzOyBpQ2hhciArKykgew0KKyAgICAgICAgRlhfRFdPUkQgQ2hhckNvZGUgPSBuQ2hhcnMgPT0gMSA/IChGWF9EV09SRCkoRlhfVUlOVFBUUilwQ2hhckNvZGVzIDogcENoYXJDb2Rlc1tpQ2hhcl07DQorICAgICAgICBpZiAoQ2hhckNvZGUgPT0gKEZYX0RXT1JEKSAtIDEpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JPT0wgYlZlcnQgPSBGQUxTRTsNCisgICAgICAgIEZYVEVYVF9DSEFSUE9TJiBjaGFycG9zID0gbV9wQ2hhclBvc1ttX25DaGFycysrXTsNCisgICAgICAgIGlmIChwQ0lERm9udCkgew0KKyAgICAgICAgICAgIGNoYXJwb3MubV9iRm9udFN0eWxlID0gcENJREZvbnQtPklzRm9udFN0eWxlRnJvbUNoYXJDb2RlKENoYXJDb2RlKTsNCisgICAgICAgIH0NCisgICAgICAgIGNoYXJwb3MubV9HbHlwaEluZGV4ID0gcEZvbnQtPkdseXBoRnJvbUNoYXJDb2RlKENoYXJDb2RlLCAmYlZlcnQpOw0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgICAgIGNoYXJwb3MubV9FeHRHSUQgPSBwRm9udC0+R2x5cGhGcm9tQ2hhckNvZGVFeHQoQ2hhckNvZGUpOw0KKyNlbmRpZg0KKyAgICAgICAgaWYgKCFwRm9udC0+SXNFbWJlZGRlZCgpICYmIHBGb250LT5HZXRGb250VHlwZSgpICE9IFBERkZPTlRfQ0lERk9OVCkgew0KKyAgICAgICAgICAgIGNoYXJwb3MubV9Gb250Q2hhcldpZHRoID0gcEZvbnQtPkdldENoYXJXaWR0aEYoQ2hhckNvZGUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBjaGFycG9zLm1fRm9udENoYXJXaWR0aCA9IDA7DQorICAgICAgICB9DQorICAgICAgICBjaGFycG9zLm1fT3JpZ2luWCA9IGlDaGFyID8gcENoYXJQb3NbaUNoYXIgLSAxXSA6IDA7DQorICAgICAgICBjaGFycG9zLm1fT3JpZ2luWSA9IDA7DQorICAgICAgICBjaGFycG9zLm1fYkdseXBoQWRqdXN0ID0gRkFMU0U7DQorICAgICAgICBpZiAocENJREZvbnQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfV09SRCBDSUQgPSBwQ0lERm9udC0+Q0lERnJvbUNoYXJDb2RlKENoYXJDb2RlKTsNCisgICAgICAgIGlmIChiVmVydFdyaXRpbmcpIHsNCisgICAgICAgICAgICBjaGFycG9zLm1fT3JpZ2luWSA9IGNoYXJwb3MubV9PcmlnaW5YOw0KKyAgICAgICAgICAgIGNoYXJwb3MubV9PcmlnaW5YID0gMDsNCisgICAgICAgICAgICBzaG9ydCB2eCwgdnk7DQorICAgICAgICAgICAgcENJREZvbnQtPkdldFZlcnRPcmlnaW4oQ0lELCB2eCwgdnkpOw0KKyAgICAgICAgICAgIGNoYXJwb3MubV9PcmlnaW5YIC09IEZvbnRTaXplICogdnggLyAxMDAwOw0KKyAgICAgICAgICAgIGNoYXJwb3MubV9PcmlnaW5ZIC09IEZvbnRTaXplICogdnkgLyAxMDAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfTFBDQllURSBwVHJhbnNmb3JtID0gcENJREZvbnQtPkdldENJRFRyYW5zZm9ybShDSUQpOw0KKyAgICAgICAgaWYgKHBUcmFuc2Zvcm0gJiYgIWJWZXJ0KSB7DQorICAgICAgICAgICAgY2hhcnBvcy5tX0FkanVzdE1hdHJpeFswXSA9IF9DSURUcmFuc2Zvcm1Ub0Zsb2F0KHBUcmFuc2Zvcm1bMF0pOw0KKyAgICAgICAgICAgIGNoYXJwb3MubV9BZGp1c3RNYXRyaXhbMl0gPSBfQ0lEVHJhbnNmb3JtVG9GbG9hdChwVHJhbnNmb3JtWzJdKTsNCisgICAgICAgICAgICBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzFdID0gX0NJRFRyYW5zZm9ybVRvRmxvYXQocFRyYW5zZm9ybVsxXSk7DQorICAgICAgICAgICAgY2hhcnBvcy5tX0FkanVzdE1hdHJpeFszXSA9IF9DSURUcmFuc2Zvcm1Ub0Zsb2F0KHBUcmFuc2Zvcm1bM10pOw0KKyAgICAgICAgICAgIGNoYXJwb3MubV9PcmlnaW5YICs9IF9DSURUcmFuc2Zvcm1Ub0Zsb2F0KHBUcmFuc2Zvcm1bNF0pICogRm9udFNpemU7DQorICAgICAgICAgICAgY2hhcnBvcy5tX09yaWdpblkgKz0gX0NJRFRyYW5zZm9ybVRvRmxvYXQocFRyYW5zZm9ybVs1XSkgKiBGb250U2l6ZTsNCisgICAgICAgICAgICBjaGFycG9zLm1fYkdseXBoQWRqdXN0ID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfVGV4dFJlbmRlcmVyOjpEcmF3VGV4dFBhdGgoQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgaW50IG5DaGFycywgRlhfRFdPUkQqIHBDaGFyQ29kZXMsIEZYX0ZMT0FUKiBwQ2hhclBvcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9Gb250KiBwRm9udCwgRlhfRkxPQVQgZm9udF9zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVGV4dDJVc2VyLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVXNlcjJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0FSR0IgZmlsbF9hcmdiLCBGWF9BUkdCIHN0cm9rZV9hcmdiLCBDRlhfUGF0aERhdGEqIHBDbGlwcGluZ1BhdGgsIGludCBuRmxhZykNCit7DQorICAgIENGWF9Gb250Q2FjaGUqIHBDYWNoZSA9IHBGb250LT5tX3BEb2N1bWVudCA/IHBGb250LT5tX3BEb2N1bWVudC0+R2V0UmVuZGVyRGF0YSgpLT5HZXRGb250Q2FjaGUoKSA6IE5VTEw7DQorICAgIENQREZfQ2hhclBvc0xpc3QgQ2hhclBvc0xpc3Q7DQorICAgIENoYXJQb3NMaXN0LkxvYWQobkNoYXJzLCBwQ2hhckNvZGVzLCBwQ2hhclBvcywgcEZvbnQsIGZvbnRfc2l6ZSk7DQorICAgIHJldHVybiBwRGV2aWNlLT5EcmF3VGV4dFBhdGgoQ2hhclBvc0xpc3QubV9uQ2hhcnMsIENoYXJQb3NMaXN0Lm1fcENoYXJQb3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBGb250LT5tX0ZvbnQsIHBDYWNoZSwgZm9udF9zaXplLCBwVGV4dDJVc2VyLCBwVXNlcjJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEdyYXBoU3RhdGUsIGZpbGxfYXJnYiwgc3Ryb2tlX2FyZ2IsIHBDbGlwcGluZ1BhdGgsIG5GbGFnKTsNCit9DQordm9pZCBDUERGX1RleHRSZW5kZXJlcjo6RHJhd1RleHRTdHJpbmcoQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgaW50IGxlZnQsIGludCB0b3AsIENQREZfRm9udCogcEZvbnQsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0ciwgRlhfQVJHQiBhcmdiKQ0KK3sNCisgICAgRlhfUkVDVCBmb250X2Jib3g7DQorICAgIHBGb250LT5HZXRGb250QkJveChmb250X2Jib3gpOw0KKyAgICBGWF9GTE9BVCBmb250X3NpemUgPSAoRlhfRkxPQVQpaGVpZ2h0ICogMTAwMC4wZiAvIChGWF9GTE9BVCkoZm9udF9iYm94LnRvcCAtIGZvbnRfYmJveC5ib3R0b20pOw0KKyAgICBGWF9GTE9BVCBvcmlnaW5feCA9IChGWF9GTE9BVClsZWZ0Ow0KKyAgICBGWF9GTE9BVCBvcmlnaW5feSA9IChGWF9GTE9BVCl0b3AgKyBmb250X3NpemUgKiAoRlhfRkxPQVQpZm9udF9iYm94LnRvcCAvIDEwMDAuMGY7DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4KDEuMGYsIDAsIDAsIC0xLjBmLCAwLCAwKTsNCisgICAgRHJhd1RleHRTdHJpbmcocERldmljZSwgb3JpZ2luX3gsIG9yaWdpbl95LCBwRm9udCwgZm9udF9zaXplLCAmbWF0cml4LCBzdHIsIGFyZ2IpOw0KK30NCit2b2lkIENQREZfVGV4dFJlbmRlcmVyOjpEcmF3VGV4dFN0cmluZyhDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBGWF9GTE9BVCBvcmlnaW5feCwgRlhfRkxPQVQgb3JpZ2luX3ksIENQREZfRm9udCogcEZvbnQsIEZYX0ZMT0FUIGZvbnRfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3RyLCBGWF9BUkdCIGZpbGxfYXJnYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9BUkdCIHN0cm9rZV9hcmdiLCBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlLCBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zKQ0KK3sNCisgICAgaW50IG5DaGFycyA9IHBGb250LT5Db3VudENoYXIoc3RyLCBzdHIuR2V0TGVuZ3RoKCkpOw0KKyAgICBpZiAobkNoYXJzID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBjaGFyY29kZTsNCisgICAgaW50IG9mZnNldCA9IDA7DQorICAgIEZYX0RXT1JEKiBwQ2hhckNvZGVzOw0KKyAgICBGWF9GTE9BVCogcENoYXJQb3M7DQorICAgIGlmIChuQ2hhcnMgPT0gMSkgew0KKyAgICAgICAgY2hhcmNvZGUgPSBwRm9udC0+R2V0TmV4dENoYXIoc3RyLCBvZmZzZXQpOw0KKyAgICAgICAgcENoYXJDb2RlcyA9IChGWF9EV09SRCopKEZYX1VJTlRQVFIpY2hhcmNvZGU7DQorICAgICAgICBwQ2hhclBvcyA9IE5VTEw7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwQ2hhckNvZGVzID0gRlhfQWxsb2MoRlhfRFdPUkQsIG5DaGFycyk7DQorICAgICAgICBwQ2hhclBvcyA9IEZYX0FsbG9jKEZYX0ZMT0FULCBuQ2hhcnMgLSAxKTsNCisgICAgICAgIEZYX0ZMT0FUIGN1cl9wb3MgPSAwOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuQ2hhcnM7IGkgKyspIHsNCisgICAgICAgICAgICBwQ2hhckNvZGVzW2ldID0gcEZvbnQtPkdldE5leHRDaGFyKHN0ciwgb2Zmc2V0KTsNCisgICAgICAgICAgICBpZiAoaSkgew0KKyAgICAgICAgICAgICAgICBwQ2hhclBvc1tpIC0gMV0gPSBjdXJfcG9zOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjdXJfcG9zICs9IHBGb250LT5HZXRDaGFyV2lkdGhGKHBDaGFyQ29kZXNbaV0pICogZm9udF9zaXplIC8gMTAwMDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsNCisgICAgaWYgKHBNYXRyaXgpIHsNCisgICAgICAgIG1hdHJpeCA9ICpwTWF0cml4Ow0KKyAgICB9DQorICAgIG1hdHJpeC5lID0gb3JpZ2luX3g7DQorICAgIG1hdHJpeC5mID0gb3JpZ2luX3k7DQorICAgIGlmIChwRm9udC0+R2V0Rm9udFR5cGUoKSA9PSBQREZGT05UX1RZUEUzKQ0KKyAgICAgICAgOw0KKyAgICBlbHNlIGlmIChzdHJva2VfYXJnYiA9PSAwKSB7DQorICAgICAgICBEcmF3Tm9ybWFsVGV4dChwRGV2aWNlLCBuQ2hhcnMsIHBDaGFyQ29kZXMsIHBDaGFyUG9zLCBwRm9udCwgZm9udF9zaXplLCAmbWF0cml4LCBmaWxsX2FyZ2IsIHBPcHRpb25zKTsNCisgICAgfSBlbHNlDQorICAgICAgICBEcmF3VGV4dFBhdGgocERldmljZSwgbkNoYXJzLCBwQ2hhckNvZGVzLCBwQ2hhclBvcywgcEZvbnQsIGZvbnRfc2l6ZSwgJm1hdHJpeCwgTlVMTCwgcEdyYXBoU3RhdGUsDQorICAgICAgICAgICAgICAgICAgICAgZmlsbF9hcmdiLCBzdHJva2VfYXJnYiwgTlVMTCk7DQorICAgIGlmIChuQ2hhcnMgPiAxKSB7DQorICAgICAgICBGWF9GcmVlKHBDaGFyQ29kZXMpOw0KKyAgICAgICAgRlhfRnJlZShwQ2hhclBvcyk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX1RleHRSZW5kZXJlcjo6RHJhd05vcm1hbFRleHQoQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgaW50IG5DaGFycywgRlhfRFdPUkQqIHBDaGFyQ29kZXMsIEZYX0ZMT0FUKiBwQ2hhclBvcywNCisgICAgICAgIENQREZfRm9udCogcEZvbnQsIEZYX0ZMT0FUIGZvbnRfc2l6ZSwNCisgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBUZXh0MkRldmljZSwNCisgICAgICAgIEZYX0FSR0IgZmlsbF9hcmdiLCBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zKQ0KK3sNCisgICAgQ0ZYX0ZvbnRDYWNoZSogcENhY2hlID0gcEZvbnQtPm1fcERvY3VtZW50ID8gcEZvbnQtPm1fcERvY3VtZW50LT5HZXRSZW5kZXJEYXRhKCktPkdldEZvbnRDYWNoZSgpIDogTlVMTDsNCisgICAgQ1BERl9DaGFyUG9zTGlzdCBDaGFyUG9zTGlzdDsNCisgICAgQ2hhclBvc0xpc3QuTG9hZChuQ2hhcnMsIHBDaGFyQ29kZXMsIHBDaGFyUG9zLCBwRm9udCwgZm9udF9zaXplKTsNCisgICAgaW50IEZYR0VfZmxhZ3MgPSAwOw0KKyAgICBpZiAocE9wdGlvbnMpIHsNCisgICAgICAgIEZYX0RXT1JEIGR3RmxhZ3MgPSBwT3B0aW9ucy0+bV9GbGFnczsNCisgICAgICAgIGlmIChkd0ZsYWdzICYgUkVOREVSX0NMRUFSVFlQRSkgew0KKyAgICAgICAgICAgIEZYR0VfZmxhZ3MgfD0gRlhURVhUX0NMRUFSVFlQRTsNCisgICAgICAgICAgICBpZiAoZHdGbGFncyAmIFJFTkRFUl9CR1JfU1RSSVBFKSB7DQorICAgICAgICAgICAgICAgIEZYR0VfZmxhZ3MgfD0gRlhURVhUX0JHUl9TVFJJUEU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGR3RmxhZ3MgJiBSRU5ERVJfTk9URVhUU01PT1RIKSB7DQorICAgICAgICAgICAgRlhHRV9mbGFncyB8PSBGWFRFWFRfTk9TTU9PVEg7DQorICAgICAgICB9DQorICAgICAgICBpZiAoZHdGbGFncyAmIFJFTkRFUl9QUklOVEdSQVBISUNURVhUKSB7DQorICAgICAgICAgICAgRlhHRV9mbGFncyB8PSBGWFRFWFRfUFJJTlRHUkFQSElDVEVYVDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChkd0ZsYWdzICYgUkVOREVSX05PX05BVElWRVRFWFQpIHsNCisgICAgICAgICAgICBGWEdFX2ZsYWdzIHw9IEZYVEVYVF9OT19OQVRJVkVURVhUOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGR3RmxhZ3MgJiBSRU5ERVJfUFJJTlRJTUFHRVRFWFQpIHsNCisgICAgICAgICAgICBGWEdFX2ZsYWdzIHw9IEZYVEVYVF9QUklOVElNQUdFVEVYVDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYR0VfZmxhZ3MgPSBGWFRFWFRfQ0xFQVJUWVBFOw0KKyAgICB9DQorICAgIGlmIChwRm9udC0+R2V0Rm9udFR5cGUoKSAmIFBERkZPTlRfQ0lERk9OVCkgew0KKyAgICAgICAgRlhHRV9mbGFncyB8PSBGWEZPTlRfQ0lERk9OVDsNCisgICAgfQ0KKyAgICByZXR1cm4gcERldmljZS0+RHJhd05vcm1hbFRleHQoQ2hhclBvc0xpc3QubV9uQ2hhcnMsIENoYXJQb3NMaXN0Lm1fcENoYXJQb3MsICZwRm9udC0+bV9Gb250LCBwQ2FjaGUsIGZvbnRfc2l6ZSwgcFRleHQyRGV2aWNlLCBmaWxsX2FyZ2IsIEZYR0VfZmxhZ3MpOw0KK30NCit2b2lkIENQREZfUmVuZGVyU3RhdHVzOjpEcmF3VGV4dFBhdGhXaXRoUGF0dGVybihjb25zdCBDUERGX1RleHRPYmplY3QqIHRleHRvYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlLA0KKyAgICAgICAgQ1BERl9Gb250KiBwRm9udCwgRlhfRkxPQVQgZm9udF9zaXplLA0KKyAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcFRleHRNYXRyaXgsIEZYX0JPT0wgYkZpbGwsIEZYX0JPT0wgYlN0cm9rZSkNCit7DQorICAgIGlmICghYlN0cm9rZSkgew0KKyAgICAgICAgQ1BERl9QYXRoT2JqZWN0IHBhdGg7DQorICAgICAgICBDUERGX1RleHRPYmplY3QqIHBDb3B5ID0gRlhfTkVXIENQREZfVGV4dE9iamVjdDsNCisgICAgICAgIHBDb3B5LT5Db3B5KHRleHRvYmopOw0KKyAgICAgICAgcGF0aC5tX2JTdHJva2UgPSBGQUxTRTsNCisgICAgICAgIHBhdGgubV9GaWxsVHlwZSA9IEZYRklMTF9XSU5ESU5HOw0KKyAgICAgICAgcGF0aC5tX0NsaXBQYXRoLkFwcGVuZFRleHRzKCZwQ29weSwgMSk7DQorICAgICAgICBwYXRoLm1fQ29sb3JTdGF0ZSA9IHRleHRvYmotPm1fQ29sb3JTdGF0ZTsNCisgICAgICAgIHBhdGgubV9QYXRoLk5ldygpLT5BcHBlbmRSZWN0KHRleHRvYmotPm1fTGVmdCwgdGV4dG9iai0+bV9Cb3R0b20sIHRleHRvYmotPm1fUmlnaHQsIHRleHRvYmotPm1fVG9wKTsNCisgICAgICAgIHBhdGgubV9MZWZ0ID0gdGV4dG9iai0+bV9MZWZ0Ow0KKyAgICAgICAgcGF0aC5tX0JvdHRvbSA9IHRleHRvYmotPm1fQm90dG9tOw0KKyAgICAgICAgcGF0aC5tX1JpZ2h0ID0gdGV4dG9iai0+bV9SaWdodDsNCisgICAgICAgIHBhdGgubV9Ub3AgPSB0ZXh0b2JqLT5tX1RvcDsNCisgICAgICAgIFJlbmRlclNpbmdsZU9iamVjdCgmcGF0aCwgcE9iajJEZXZpY2UpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9Gb250Q2FjaGUqIHBDYWNoZTsNCisgICAgaWYgKHBGb250LT5tX3BEb2N1bWVudCkgew0KKyAgICAgICAgcENhY2hlID0gcEZvbnQtPm1fcERvY3VtZW50LT5HZXRSZW5kZXJEYXRhKCktPkdldEZvbnRDYWNoZSgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcENhY2hlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Rm9udENhY2hlKCk7DQorICAgIH0NCisgICAgQ0ZYX0ZhY2VDYWNoZSogcEZhY2VDYWNoZSA9IHBDYWNoZS0+R2V0Q2FjaGVkRmFjZSgmcEZvbnQtPm1fRm9udCk7DQorICAgIEZYX0ZPTlRDQUNIRV9ERUZJTkUocENhY2hlLCAmcEZvbnQtPm1fRm9udCk7DQorICAgIENQREZfQ2hhclBvc0xpc3QgQ2hhclBvc0xpc3Q7DQorICAgIENoYXJQb3NMaXN0LkxvYWQodGV4dG9iai0+bV9uQ2hhcnMsIHRleHRvYmotPm1fcENoYXJDb2RlcywgdGV4dG9iai0+bV9wQ2hhclBvcywgcEZvbnQsIGZvbnRfc2l6ZSk7DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBDaGFyUG9zTGlzdC5tX25DaGFyczsgaSArKykgew0KKyAgICAgICAgRlhURVhUX0NIQVJQT1MmIGNoYXJwb3MgPSBDaGFyUG9zTGlzdC5tX3BDaGFyUG9zW2ldOw0KKyAgICAgICAgY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aCA9IHBGYWNlQ2FjaGUtPkxvYWRHbHlwaFBhdGgoJnBGb250LT5tX0ZvbnQsIGNoYXJwb3MubV9HbHlwaEluZGV4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJwb3MubV9Gb250Q2hhcldpZHRoKTsNCisgICAgICAgIGlmIChwUGF0aCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDUERGX1BhdGhPYmplY3QgcGF0aDsNCisgICAgICAgIHBhdGgubV9HcmFwaFN0YXRlID0gdGV4dG9iai0+bV9HcmFwaFN0YXRlOw0KKyAgICAgICAgcGF0aC5tX0NvbG9yU3RhdGUgPSB0ZXh0b2JqLT5tX0NvbG9yU3RhdGU7DQorICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsNCisgICAgICAgIGlmIChjaGFycG9zLm1fYkdseXBoQWRqdXN0KQ0KKyAgICAgICAgICAgIG1hdHJpeC5TZXQoY2hhcnBvcy5tX0FkanVzdE1hdHJpeFswXSwgY2hhcnBvcy5tX0FkanVzdE1hdHJpeFsxXSwNCisgICAgICAgICAgICAgICAgICAgICAgIGNoYXJwb3MubV9BZGp1c3RNYXRyaXhbMl0sIGNoYXJwb3MubV9BZGp1c3RNYXRyaXhbM10sIDAsIDApOw0KKyAgICAgICAgbWF0cml4LkNvbmNhdChmb250X3NpemUsIDAsIDAsIGZvbnRfc2l6ZSwgY2hhcnBvcy5tX09yaWdpblgsIGNoYXJwb3MubV9PcmlnaW5ZKTsNCisgICAgICAgIHBhdGgubV9QYXRoLk5ldygpLT5BcHBlbmQocFBhdGgsICZtYXRyaXgpOw0KKyAgICAgICAgcGF0aC5tX01hdHJpeCA9ICpwVGV4dE1hdHJpeDsNCisgICAgICAgIHBhdGgubV9iU3Ryb2tlID0gYlN0cm9rZTsNCisgICAgICAgIHBhdGgubV9GaWxsVHlwZSA9IGJGaWxsID8gRlhGSUxMX1dJTkRJTkcgOiAwOw0KKyAgICAgICAgcGF0aC5DYWxjQm91bmRpbmdCb3goKTsNCisgICAgICAgIFByb2Nlc3NQYXRoKCZwYXRoLCBwT2JqMkRldmljZSk7DQorICAgIH0NCit9DQorQ0ZYX1BhdGhEYXRhKiBDUERGX0ZvbnQ6OkxvYWRHbHlwaFBhdGgoRlhfRFdPUkQgY2hhcmNvZGUsIGludCBkZXN0X3dpZHRoKQ0KK3sNCisgICAgaW50IGdseXBoX2luZGV4ID0gR2x5cGhGcm9tQ2hhckNvZGUoY2hhcmNvZGUpOw0KKyAgICBpZiAobV9Gb250Lm1fRmFjZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9Gb250LkxvYWRHbHlwaFBhdGgoZ2x5cGhfaW5kZXgsIGRlc3Rfd2lkdGgpOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcmVuZGVyL3JlbmRlcl9pbnQuaCBiL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9yZW5kZXIvcmVuZGVyX2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhY2RlMGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcmVuZGVyL3JlbmRlcl9pbnQuaApAQCAtMCwwICsxLDQ2MiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlBERl9QQUdFT0JKX0hfDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2VvYmouaCINCisjZW5kaWYNCitjbGFzcyBDUERGX1F1aWNrU3RyZXRjaGVyOw0KKyNkZWZpbmUgVFlQRTNfTUFYX0JMVUVTCQkxNg0KK2NsYXNzIENQREZfVHlwZTNHbHlwaHMgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfVHlwZTNHbHlwaHMoKQ0KKyAgICB7DQorICAgICAgICBtX0dseXBoTWFwLkluaXRIYXNoVGFibGUoMjUzKTsNCisgICAgICAgIG1fVG9wQmx1ZUNvdW50ID0gbV9Cb3R0b21CbHVlQ291bnQgPSAwOw0KKyAgICB9DQorICAgIH5DUERGX1R5cGUzR2x5cGhzKCk7DQorICAgIENGWF9NYXBQdHJUb1B0cgkJCW1fR2x5cGhNYXA7DQorICAgIHZvaWQJCQkJCUFkanVzdEJsdWUoRlhfRkxPQVQgdG9wLCBGWF9GTE9BVCBib3R0b20sIGludCYgdG9wX2xpbmUsIGludCYgYm90dG9tX2xpbmUpOw0KKw0KKyAgICBpbnQJCQkJCQltX1RvcEJsdWVbVFlQRTNfTUFYX0JMVUVTXSwgbV9Cb3R0b21CbHVlW1RZUEUzX01BWF9CTFVFU107DQorICAgIGludAkJCQkJCW1fVG9wQmx1ZUNvdW50LCBtX0JvdHRvbUJsdWVDb3VudDsNCit9Ow0KK2NsYXNzIENGWF9HbHlwaEJpdG1hcDsNCitjbGFzcyBDUERGX1R5cGUzQ2FjaGUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfVHlwZTNDYWNoZShDUERGX1R5cGUzRm9udCogcEZvbnQpDQorICAgIHsNCisgICAgICAgIG1fcEZvbnQgPSBwRm9udDsNCisgICAgfQ0KKyAgICB+Q1BERl9UeXBlM0NhY2hlKCk7DQorICAgIENGWF9HbHlwaEJpdG1hcCoJCUxvYWRHbHlwaChGWF9EV09SRCBjaGFyY29kZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRkxPQVQgcmV0aW5hU2NhbGVYID0gMS4wZiwgRlhfRkxPQVQgcmV0aW5hU2NhbGVZID0gMS4wZik7DQorcHJvdGVjdGVkOg0KKyAgICBDRlhfR2x5cGhCaXRtYXAqCQlSZW5kZXJHbHlwaChDUERGX1R5cGUzR2x5cGhzKiBwU2l6ZSwgRlhfRFdPUkQgY2hhcmNvZGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIEZYX0ZMT0FUIHJldGluYVNjYWxlWCA9IDEuMGYsIEZYX0ZMT0FUIHJldGluYVNjYWxlWSA9IDEuMGYpOw0KKyAgICBDUERGX1R5cGUzRm9udCoJCQltX3BGb250Ow0KKyAgICBDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyCW1fU2l6ZU1hcDsNCit9Ow0KK2NsYXNzIENQREZfVHJhbnNmZXJGdW5jIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX0RvY3VtZW50KgltX3BQREZEb2M7DQorICAgIEZYX0JZVEUJCQltX1NhbXBsZXNbMjU2ICogM107DQorICAgIEZYX0JPT0wJCQltX2JJZGVudGl0eTsNCisNCisgICAgQ0ZYX0RJQlNvdXJjZSoJVHJhbnNsYXRlSW1hZ2UoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyYywgRlhfQk9PTCBiQXV0b0Ryb3BTcmMpOw0KKyAgICBGWF9DT0xPUlJFRgkJVHJhbnNsYXRlQ29sb3IoRlhfQ09MT1JSRUYgc3JjKTsNCit9Ow0KK3R5cGVkZWYgQ0ZYX01hcFB0clRlbXBsYXRlPENQREZfRm9udCosIENQREZfQ291bnRlZE9iamVjdDxDUERGX1R5cGUzQ2FjaGUqPio+IENQREZfVHlwZTNDYWNoZU1hcDsNCit0eXBlZGVmIENGWF9NYXBQdHJUZW1wbGF0ZTxDUERGX09iamVjdCosIENQREZfQ291bnRlZE9iamVjdDxDUERGX1RyYW5zZmVyRnVuYyo+Kj4gQ1BERl9UcmFuc2ZlckZ1bmNNYXA7DQorY2xhc3MgQ1BERl9Eb2NSZW5kZXJEYXRhIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX0RvY1JlbmRlckRhdGEoQ1BERl9Eb2N1bWVudCogcFBERkRvYyA9IE5VTEwpOw0KKyAgICB+Q1BERl9Eb2NSZW5kZXJEYXRhKCk7DQorICAgIEZYX0JPT0wJCQkJSW5pdGlhbGl6ZSgpOw0KKyAgICBDUERGX1R5cGUzQ2FjaGUqCUdldENhY2hlZFR5cGUzKENQREZfVHlwZTNGb250KiBwRm9udCk7DQorICAgIENQREZfVHJhbnNmZXJGdW5jKglHZXRUcmFuc2ZlckZ1bmMoQ1BERl9PYmplY3QqIHBPYmopOw0KKyAgICBDRlhfRm9udENhY2hlKgkJR2V0Rm9udENhY2hlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEZvbnRDYWNoZTsNCisgICAgfQ0KKyAgICB2b2lkCQkJCUNsZWFyKEZYX0JPT0wgYlJlbGVhc2UgPSBGQUxTRSk7DQorICAgIHZvaWQJCQkJUmVsZWFzZUNhY2hlZFR5cGUzKENQREZfVHlwZTNGb250KiBwRm9udCk7DQorICAgIHZvaWQJCQkJUmVsZWFzZVRyYW5zZmVyRnVuYyhDUERGX09iamVjdCogcE9iaik7DQorcHJpdmF0ZToNCisgICAgQ1BERl9Eb2N1bWVudCoJCW1fcFBERkRvYzsNCisgICAgQ0ZYX0ZvbnRDYWNoZSoJCW1fcEZvbnRDYWNoZTsNCisgICAgQ1BERl9UeXBlM0NhY2hlTWFwCW1fVHlwZTNGYWNlTWFwOw0KKyAgICBDUERGX1RyYW5zZmVyRnVuY01hcAltX1RyYW5zZmVyRnVuY01hcDsNCit9Ow0KK3N0cnVjdCBfUERGX1JlbmRlckl0ZW0gew0KK3B1YmxpYzoNCisgICAgQ1BERl9QYWdlT2JqZWN0cyoJCQltX3BPYmplY3RMaXN0Ow0KKyAgICBDRlhfQWZmaW5lTWF0cml4CQkJbV9NYXRyaXg7DQorfTsNCit0eXBlZGVmIENGWF9BcnJheVRlbXBsYXRlPF9QREZfUmVuZGVySXRlbT4JQ1BERl9SZW5kZXJMYXllcjsNCitjbGFzcyBJUERGX09iamVjdFJlbmRlcmVyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBzdGF0aWMgSVBERl9PYmplY3RSZW5kZXJlciogQ3JlYXRlKGludCB0eXBlKTsNCisgICAgdmlydHVhbCB+SVBERl9PYmplY3RSZW5kZXJlcigpIHt9DQorICAgIHZpcnR1YWwgRlhfQk9PTCBTdGFydChDUERGX1JlbmRlclN0YXR1cyogcFJlbmRlclN0YXR1cywgY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgRlhfQk9PTCBiU3RkQ1MsIGludCBibGVuZFR5cGUgPSBGWERJQl9CTEVORF9OT1JNQUwpID0gMDsNCisgICAgdmlydHVhbCBGWF9CT09MIENvbnRpbnVlKElGWF9QYXVzZSogcFBhdXNlKSA9IDA7DQorICAgIEZYX0JPT0wJCW1fUmVzdWx0Ow0KK307DQorY2xhc3MgQ1BERl9SZW5kZXJTdGF0dXMgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfUmVuZGVyU3RhdHVzKCk7DQorICAgIH5DUERGX1JlbmRlclN0YXR1cygpOw0KKyAgICBGWF9CT09MCQkJSW5pdGlhbGl6ZShpbnQgbGV2ZWwsIGNsYXNzIENQREZfUmVuZGVyQ29udGV4dCogcENvbnRleHQsIENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBEZXZpY2VNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENQREZfUGFnZU9iamVjdCogcFN0b3BPYmosIGNvbnN0IENQREZfUmVuZGVyU3RhdHVzKiBwUGFyZW50U3RhdHVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDUERGX0dyYXBoaWNTdGF0ZXMqIHBJbml0aWFsU3RhdGVzLCBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHJhbnNwYXJlbmN5LCBGWF9CT09MIGJEcm9wT2JqZWN0cywgQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybVJlc291cmNlID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiU3RkQ1MgPSBGQUxTRSwJQ1BERl9UeXBlM0NoYXIqIHBUeXBlM0NoYXIgPSBOVUxMLCBGWF9BUkdCIGZpbGxfY29sb3IgPSAwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBHcm91cEZhbWlseSA9IDAsIEZYX0JPT0wgYkxvYWRNYXNrID0gRkFMU0UpOw0KKyAgICB2b2lkCQkJUmVuZGVyT2JqZWN0TGlzdChjb25zdCBDUERGX1BhZ2VPYmplY3RzKiBwT2JqcywgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpOw0KKyAgICB2b2lkCQkJUmVuZGVyU2luZ2xlT2JqZWN0KGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpOw0KKyAgICBGWF9CT09MCQkJQ29udGludWVTaW5nbGVPYmplY3QoY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBDUERGX1JlbmRlck9wdGlvbnMJbV9PcHRpb25zOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqICAgIG1fcEZvcm1SZXNvdXJjZTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiAgICBtX3BQYWdlUmVzb3VyY2U7DQorICAgIENGWF9QdHJBcnJheQkJbV9UeXBlM0ZvbnRDYWNoZTsNCisgICAgQ1BERl9SZW5kZXJDb250ZXh0KiBHZXRDb250ZXh0KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcENvbnRleHQ7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorICAgIGZyaWVuZCBjbGFzcwlDUERGX0ltYWdlUmVuZGVyZXI7DQorICAgIGZyaWVuZCBjbGFzcwlDUERGX1JlbmRlckNvbnRleHQ7DQorICAgIHZvaWQJCQlQcm9jZXNzQ2xpcFBhdGgoQ1BERl9DbGlwUGF0aCBDbGlwUGF0aCwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpOw0KKyAgICB2b2lkCQkJRHJhd0NsaXBQYXRoKENQREZfQ2xpcFBhdGggQ2xpcFBhdGgsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKTsNCisgICAgRlhfQk9PTAkJCVByb2Nlc3NUcmFuc3BhcmVuY3koY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBQYWdlT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSk7DQorICAgIHZvaWQJCQlQcm9jZXNzT2JqZWN0Tm9DbGlwKGNvbnN0IENQREZfUGFnZU9iamVjdCogUGFnZU9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpOw0KKyAgICB2b2lkCQkJRHJhd09ialdpdGhCYWNrZ3JvdW5kKGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpOw0KKyAgICBGWF9CT09MICAgICAgICAgRHJhd09ialdpdGhCbGVuZChjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKTsNCisgICAgRlhfQk9PTAkJCVByb2Nlc3NQYXRoKENQREZfUGF0aE9iamVjdCogcFBhdGhPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKTsNCisgICAgdm9pZAkJCVByb2Nlc3NQYXRoUGF0dGVybihDUERGX1BhdGhPYmplY3QqIHBQYXRoT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgaW50JiBmaWxsdHlwZSwgRlhfQk9PTCYgYlN0cm9rZSk7DQorICAgIHZvaWQJCQlEcmF3UGF0aFdpdGhQYXR0ZXJuKENQREZfUGF0aE9iamVjdCogcFBhdGhPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlLCBDUERGX0NvbG9yKiBwQ29sb3IsIEZYX0JPT0wgYlN0cm9rZSk7DQorICAgIHZvaWQJCQlEcmF3VGlsaW5nUGF0dGVybihDUERGX1RpbGluZ1BhdHRlcm4qIHBQYXR0ZXJuLCBDUERGX1BhZ2VPYmplY3QqIHBQYWdlT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgRlhfQk9PTCBiU3Ryb2tlKTsNCisgICAgdm9pZAkJCURyYXdTaGFkaW5nUGF0dGVybihDUERGX1NoYWRpbmdQYXR0ZXJuKiBwUGF0dGVybiwgQ1BERl9QYWdlT2JqZWN0KiBwUGFnZU9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UsIEZYX0JPT0wgYlN0cm9rZSk7DQorICAgIEZYX0JPT0wJCQlTZWxlY3RDbGlwUGF0aChDUERGX1BhdGhPYmplY3QqIHBQYXRoT2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgRlhfQk9PTCBiU3Ryb2tlKTsNCisgICAgRlhfQk9PTAkJCVByb2Nlc3NJbWFnZShDUERGX0ltYWdlT2JqZWN0KiBwSW1hZ2VPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKTsNCisgICAgRlhfQk9PTAkJCU91dHB1dEJpdG1hcEFscGhhKENQREZfSW1hZ2VPYmplY3QqIHBJbWFnZU9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcEltYWdlMkRldmljZSk7DQorICAgIEZYX0JPT0wJCQlPdXRwdXRJbWFnZShDUERGX0ltYWdlT2JqZWN0KiBwSW1hZ2VPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBJbWFnZTJEZXZpY2UpOw0KKyAgICBGWF9CT09MCQkJT3V0cHV0RElCU291cmNlKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBPdXRwdXRCaXRtYXAsIEZYX0FSR0IgZmlsbF9hcmdiLCBpbnQgYml0bWFwX2FscGhhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBJbWFnZTJEZXZpY2UsIENQREZfSW1hZ2VDYWNoZSogcEltYWdlQ2FjaGUsIEZYX0RXT1JEIGZsYWdzKTsNCisgICAgdm9pZAkJCUNvbXBvc2l0ZURJQml0bWFwKENGWF9ESUJpdG1hcCogcERJQml0bWFwLCBpbnQgbGVmdCwgaW50IHRvcCwgRlhfQVJHQiBtYXNrX2FyZ2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYml0bWFwX2FscGhhLCBpbnQgYmxlbmRfbW9kZSwgaW50IGJJc29sYXRlZCk7DQorICAgIEZYX0JPT0wJCQlQcm9jZXNzSW5saW5lcyhDUERGX0lubGluZUltYWdlcyogcElubGluZXMsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKTsNCisgICAgRlhfQk9PTAkJCVByb2Nlc3NTaGFkaW5nKENQREZfU2hhZGluZ09iamVjdCogcFNoYWRpbmdPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKTsNCisgICAgdm9pZAkJCURyYXdTaGFkaW5nKENQREZfU2hhZGluZ1BhdHRlcm4qIHBQYXR0ZXJuLCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBGWF9SRUNUJiBjbGlwX3JlY3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGEsIEZYX0JPT0wgYkFscGhhTW9kZSk7DQorICAgIEZYX0JPT0wJCQlQcm9jZXNzVHlwZTNUZXh0KGNvbnN0IENQREZfVGV4dE9iamVjdCogdGV4dG9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UpOw0KKyAgICBGWF9CT09MCQkJUHJvY2Vzc1RleHQoY29uc3QgQ1BERl9UZXh0T2JqZWN0KiB0ZXh0b2JqLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqMkRldmljZSwgQ0ZYX1BhdGhEYXRhKiBwQ2xpcHBpbmdQYXRoKTsNCisgICAgdm9pZAkJCURyYXdUZXh0UGF0aFdpdGhQYXR0ZXJuKGNvbnN0IENQREZfVGV4dE9iamVjdCogdGV4dG9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0ZvbnQqIHBGb250LCBGWF9GTE9BVCBmb250X3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVGV4dE1hdHJpeCwgRlhfQk9PTCBiRmlsbCwgRlhfQk9PTCBiU3Ryb2tlKTsNCisgICAgRlhfQk9PTAkJCVByb2Nlc3NGb3JtKENQREZfRm9ybU9iamVjdCogcEZvcm1PYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKTsNCisgICAgQ0ZYX0RJQml0bWFwKglHZXRCYWNrZHJvcChjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIGNvbnN0IEZYX1JFQ1QmIHJlY3QsIGludCYgbGVmdCwgaW50JiB0b3AsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJCYWNrQWxwaGFSZXF1aXJlZCk7DQorICAgIENGWF9ESUJpdG1hcCoJTG9hZFNNYXNrKENQREZfRGljdGlvbmFyeSogcFNNYXNrRGljdCwgRlhfUkVDVCogcENsaXBSZWN0LCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4KTsNCisgICAgdm9pZAkJCUluaXQoQ1BERl9SZW5kZXJDb250ZXh0KiBwUGFyZW50KTsNCisgICAgc3RhdGljIGNsYXNzIENQREZfVHlwZTNDYWNoZSoJR2V0Q2FjaGVkVHlwZTMoQ1BERl9UeXBlM0ZvbnQqIHBGb250KTsNCisgICAgc3RhdGljIENQREZfR3JhcGhpY1N0YXRlcyogQ2xvbmVPYmpTdGF0ZXMoY29uc3QgQ1BERl9HcmFwaGljU3RhdGVzKiBwUGF0aE9iaiwgRlhfQk9PTCBiU3Ryb2tlKTsNCisgICAgQ1BERl9UcmFuc2ZlckZ1bmMqCUdldFRyYW5zZmVyRnVuYyhDUERGX09iamVjdCogcE9iamVjdCkgY29uc3Q7DQorICAgIEZYX0FSR0IJCQlHZXRGaWxsQXJnYihjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIEZYX0JPT0wgYlR5cGUzID0gRkFMU0UpIGNvbnN0Ow0KKyAgICBGWF9BUkdCCQkJR2V0U3Ryb2tlQXJnYihjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmopIGNvbnN0Ow0KKyAgICBDUERGX1JlbmRlckNvbnRleHQqCQltX3BDb250ZXh0Ow0KKyAgICBGWF9CT09MCQkJCQltX2JTdG9wcGVkOw0KKyAgICB2b2lkCQkJRGl0aGVyT2JqZWN0QXJlYShjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlKTsNCisgICAgRlhfQk9PTAkJCUdldE9iamVjdENsaXBwZWRSZWN0KGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaiwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iajJEZXZpY2UsIEZYX0JPT0wgYkxvZ2ljYWwsIEZYX1JFQ1QgJnJlY3QpIGNvbnN0Ow0KKyAgICB2b2lkCQkJR2V0U2NhbGVkTWF0cml4KENGWF9NYXRyaXggJm1hdHJpeCkgY29uc3Q7DQorcHJvdGVjdGVkOg0KKyAgICBpbnQJCQkJCQltX0xldmVsOw0KKyAgICBDRlhfUmVuZGVyRGV2aWNlKgkJbV9wRGV2aWNlOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4CQltX0RldmljZU1hdHJpeDsNCisgICAgQ1BERl9DbGlwUGF0aAkJCW1fTGFzdENsaXBQYXRoOw0KKyAgICBjb25zdCBDUERGX1BhZ2VPYmplY3QqCW1fcEN1ck9iajsNCisgICAgY29uc3QgQ1BERl9QYWdlT2JqZWN0KgltX3BTdG9wT2JqOw0KKyAgICBDUERGX0dyYXBoaWNTdGF0ZXMJCW1fSW5pdGlhbFN0YXRlczsNCisgICAgaW50CQkJCQkJbV9IYWxmdG9uZUxpbWl0Ow0KKyAgICBJUERGX09iamVjdFJlbmRlcmVyKgltX3BPYmplY3RSZW5kZXJlcjsNCisgICAgRlhfQk9PTAkJCQkJbV9iUHJpbnQ7DQorICAgIGludAkJCQkJCW1fVHJhbnNwYXJlbmN5Ow0KKyAgICBpbnQJCQkJCQltX0RpdGhlckJpdHM7DQorICAgIEZYX0JPT0wJCQkJCW1fYkRyb3BPYmplY3RzOw0KKyAgICBGWF9CT09MCQkJCQltX2JTdGRDUzsNCisgICAgRlhfRFdPUkQgICAgICAgICAgICAgICAgbV9Hcm91cEZhbWlseTsNCisgICAgRlhfQk9PTCAgICAgICAgICAgICAgICAgbV9iTG9hZE1hc2s7DQorICAgIENQREZfVHlwZTNDaGFyICogICAgICAgIG1fcFR5cGUzQ2hhcjsNCisgICAgRlhfQVJHQgkJCQkJbV9UM0ZpbGxDb2xvcjsNCisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbV9jdXJCbGVuZDsNCit9Ow0KK2NsYXNzIENQREZfSW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfSW1hZ2VMb2FkZXIoKQ0KKyAgICB7DQorICAgICAgICBtX3BCaXRtYXAgPSBOVUxMOw0KKyAgICAgICAgbV9wTWFzayA9IE5VTEw7DQorICAgICAgICBtX01hdHRlQ29sb3IgPSAwOw0KKyAgICAgICAgbV9iQ2FjaGVkID0gRkFMU0U7DQorICAgICAgICBtX25Eb3duc2FtcGxlV2lkdGggPSAwOw0KKyAgICAgICAgbV9uRG93bnNhbXBsZUhlaWdodCA9IDA7DQorICAgIH0NCisNCisgICAgRlhfQk9PTAkJCQkJTG9hZChjb25zdCBDUERGX0ltYWdlT2JqZWN0KiBwSW1hZ2UsIENQREZfUGFnZVJlbmRlckNhY2hlKiBwQ2FjaGUsIEZYX0JPT0wgYlN0ZENTID0gRkFMU0UsIEZYX0RXT1JEIEdyb3VwRmFtaWx5ID0gMCwgRlhfQk9PTCBiTG9hZE1hc2sgPSBGQUxTRSwgQ1BERl9SZW5kZXJTdGF0dXMqIHBSZW5kZXJTdGF0dXMgPSBOVUxMKTsNCisNCisgICAgRlhfQk9PTAkJCQkJU3RhcnRMb2FkSW1hZ2UoY29uc3QgQ1BERl9JbWFnZU9iamVjdCogcEltYWdlLCBDUERGX1BhZ2VSZW5kZXJDYWNoZSogcENhY2hlLCBGWF9MUFZPSUQmIExvYWRIYW5kbGUsIEZYX0JPT0wgYlN0ZENTID0gRkFMU0UsIEZYX0RXT1JEIEdyb3VwRmFtaWx5ID0gMCwgRlhfQk9PTCBiTG9hZE1hc2sgPSBGQUxTRSwgQ1BERl9SZW5kZXJTdGF0dXMqIHBSZW5kZXJTdGF0dXMgPSBOVUxMLCBGWF9JTlQzMiBuRG93bnNhbXBsZVdpZHRoID0gMCwgRlhfSU5UMzIgbkRvd25zYW1wbGVIZWlnaHQgPSAwKTsNCisgICAgRlhfQk9PTAkJCQkJQ29udGludWUoRlhfTFBWT0lEIExvYWRIYW5kbGUsIElGWF9QYXVzZSogcFBhdXNlKTsNCisgICAgfkNQREZfSW1hZ2VMb2FkZXIoKTsNCisgICAgQ0ZYX0RJQlNvdXJjZSoJCQltX3BCaXRtYXA7DQorICAgIENGWF9ESUJTb3VyY2UqCQkJbV9wTWFzazsNCisgICAgRlhfRFdPUkQJCQkJbV9NYXR0ZUNvbG9yOw0KKyAgICBGWF9CT09MCQkJCQltX2JDYWNoZWQ7DQorcHJvdGVjdGVkOg0KKyAgICBGWF9JTlQzMiAgICAgICAgICAgICAgICBtX25Eb3duc2FtcGxlV2lkdGg7DQorICAgIEZYX0lOVDMyICAgICAgICAgICAgICAgIG1fbkRvd25zYW1wbGVIZWlnaHQ7DQorfTsNCitjbGFzcyBDUERGX1Byb2dyZXNzaXZlSW1hZ2VMb2FkZXJIYW5kbGUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfUHJvZ3Jlc3NpdmVJbWFnZUxvYWRlckhhbmRsZSgpOw0KKyAgICB+Q1BERl9Qcm9ncmVzc2l2ZUltYWdlTG9hZGVySGFuZGxlKCk7DQorDQorICAgIEZYX0JPT0wJCQlTdGFydChDUERGX0ltYWdlTG9hZGVyKiBwSW1hZ2VMb2FkZXIsIGNvbnN0IENQREZfSW1hZ2VPYmplY3QqIHBJbWFnZSwgQ1BERl9QYWdlUmVuZGVyQ2FjaGUqIHBDYWNoZSwgRlhfQk9PTCBiU3RkQ1MgPSBGQUxTRSwgRlhfRFdPUkQgR3JvdXBGYW1pbHkgPSAwLCBGWF9CT09MIGJMb2FkTWFzayA9IEZBTFNFLCBDUERGX1JlbmRlclN0YXR1cyogcFJlbmRlclN0YXR1cyA9IE5VTEwsIEZYX0lOVDMyIG5Eb3duc2FtcGxlV2lkdGggPSAwLCBGWF9JTlQzMiBuRG93bnNhbXBsZUhlaWdodCA9IDApOw0KKyAgICBGWF9CT09MCQkJQ29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpOw0KK3Byb3RlY3RlZDoNCisgICAgQ1BERl9JbWFnZUxvYWRlcioJbV9wSW1hZ2VMb2FkZXI7DQorICAgIENQREZfUGFnZVJlbmRlckNhY2hlKiBtX3BDYWNoZTsNCisgICAgQ1BERl9JbWFnZU9iamVjdCogbV9wSW1hZ2U7DQorICAgIEZYX0lOVDMyICAgICAgICAgICAgbV9uRG93bnNhbXBsZVdpZHRoOw0KKyAgICBGWF9JTlQzMiAgICAgICAgICAgIG1fbkRvd25zYW1wbGVIZWlnaHQ7DQorfTsNCitjbGFzcyBDRlhfSW1hZ2VUcmFuc2Zvcm1lcjsNCitjbGFzcyBDUERGX0ltYWdlUmVuZGVyZXIgOiBwdWJsaWMgSVBERl9PYmplY3RSZW5kZXJlcg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfSW1hZ2VSZW5kZXJlcigpOw0KKyAgICB+Q1BERl9JbWFnZVJlbmRlcmVyKCk7DQorICAgIEZYX0JPT0wJCVN0YXJ0KENQREZfUmVuZGVyU3RhdHVzKiBwU3RhdHVzLCBjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmoyRGV2aWNlLCBGWF9CT09MIGJTdGRDUywgaW50IGJsZW5kVHlwZSA9IEZYRElCX0JMRU5EX05PUk1BTCk7DQorICAgIEZYX0JPT0wJCVN0YXJ0KENQREZfUmVuZGVyU3RhdHVzKiBwU3RhdHVzLCBjb25zdCBDRlhfRElCU291cmNlKiBwRElCU291cmNlLCBGWF9BUkdCIGJpdG1hcF9hcmdiLA0KKyAgICAgICAgICAgICAgICAgICAgICBpbnQgYml0bWFwX2FscGhhLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwSW1hZ2UyRGV2aWNlLCBGWF9EV09SRCBmbGFncywgRlhfQk9PTCBiU3RkQ1MsIGludCBibGVuZFR5cGUgPSBGWERJQl9CTEVORF9OT1JNQUwpOw0KKyAgICBGWF9CT09MCQlDb250aW51ZShJRlhfUGF1c2UqIHBQYXVzZSk7DQorcHJvdGVjdGVkOg0KKyAgICBDUERGX1JlbmRlclN0YXR1cyoJbV9wUmVuZGVyU3RhdHVzOw0KKyAgICBDUERGX0ltYWdlT2JqZWN0KgltX3BJbWFnZU9iamVjdDsNCisgICAgaW50CQkJCQltX1N0YXR1czsNCisgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogbV9wT2JqMkRldmljZTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeAltX0ltYWdlTWF0cml4Ow0KKyAgICBDUERGX0ltYWdlTG9hZGVyCW1fTG9hZGVyOw0KKyAgICBjb25zdCBDRlhfRElCU291cmNlKgkJbV9wRElCU291cmNlOw0KKyAgICBDRlhfRElCaXRtYXAqCQltX3BDbG9uZTsNCisgICAgaW50CQkJCQltX0JpdG1hcEFscGhhOw0KKyAgICBGWF9CT09MCQkJCW1fYlBhdHRlcm5Db2xvcjsNCisgICAgQ1BERl9QYXR0ZXJuKgkJbV9wUGF0dGVybjsNCisgICAgRlhfQVJHQgkJCQltX0ZpbGxBcmdiOw0KKyAgICBGWF9EV09SRAkJCW1fRmxhZ3M7DQorICAgIENQREZfUXVpY2tTdHJldGNoZXIqCW1fcFF1aWNrU3RyZXRjaGVyOw0KKyAgICBDRlhfSW1hZ2VUcmFuc2Zvcm1lcioJbV9wVHJhbnNmb3JtZXI7DQorICAgIENQREZfSW1hZ2VSZW5kZXJlcioJbV9wUmVuZGVyZXIyOw0KKyAgICBGWF9MUFZPSUQJCQltX0RldmljZUhhbmRsZTsNCisgICAgRlhfTFBWT0lEICAgICAgICAgICBtX0xvYWRIYW5kbGU7DQorICAgIEZYX0JPT0wJCQkJbV9iU3RkQ1M7DQorICAgIGludAkJCQkJbV9CbGVuZFR5cGU7DQorICAgIEZYX0JPT0wJCQkJU3RhcnRCaXRtYXBBbHBoYSgpOw0KKyAgICBGWF9CT09MCQkJCVN0YXJ0RElCU291cmNlKCk7DQorICAgIEZYX0JPT0wJCQkJU3RhcnRSZW5kZXJESUJTb3VyY2UoKTsNCisgICAgRlhfQk9PTAkJCQlTdGFydExvYWRESUJTb3VyY2UoKTsNCisgICAgRlhfQk9PTAkJCQlEcmF3TWFza2VkSW1hZ2UoKTsNCisgICAgRlhfQk9PTAkJCQlEcmF3UGF0dGVybkltYWdlKGNvbnN0IENGWF9NYXRyaXgqIHBPYmoyRGV2aWNlKTsNCit9Ow0KK2NsYXNzIENQREZfU2NhbGVkUmVuZGVyQnVmZmVyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX1NjYWxlZFJlbmRlckJ1ZmZlcigpOw0KKyAgICB+Q1BERl9TY2FsZWRSZW5kZXJCdWZmZXIoKTsNCisgICAgRlhfQk9PTAkJCQlJbml0aWFsaXplKENQREZfUmVuZGVyQ29udGV4dCogcENvbnRleHQsIENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIEZYX1JFQ1QqIHBSZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1BERl9QYWdlT2JqZWN0KiBwT2JqLCBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMgKnBPcHRpb25zID0gTlVMTCwgaW50IG1heF9kcGkgPSAwKTsNCisgICAgQ0ZYX1JlbmRlckRldmljZSoJR2V0RGV2aWNlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEJpdG1hcERldmljZSA/IG1fcEJpdG1hcERldmljZSA6IG1fcERldmljZTsNCisgICAgfQ0KKyAgICBDRlhfQWZmaW5lTWF0cml4KglHZXRNYXRyaXgoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gJm1fTWF0cml4Ow0KKyAgICB9DQorICAgIHZvaWQJCQkJT3V0cHV0VG9EZXZpY2UoKTsNCitwcml2YXRlOg0KKyAgICBDRlhfUmVuZGVyRGV2aWNlKgltX3BEZXZpY2U7DQorICAgIENQREZfUmVuZGVyQ29udGV4dCoJbV9wQ29udGV4dDsNCisgICAgRlhfUkVDVAkJCQltX1JlY3Q7DQorICAgIGNvbnN0IENQREZfUGFnZU9iamVjdCogbV9wT2JqZWN0Ow0KKyAgICBDRlhfRnhnZURldmljZSoJbV9wQml0bWFwRGV2aWNlOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4CW1fTWF0cml4Ow0KK307DQorY2xhc3MgSUNvZGVjX1NjYW5saW5lRGVjb2RlcjsNCitjbGFzcyBDUERGX1F1aWNrU3RyZXRjaGVyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX1F1aWNrU3RyZXRjaGVyKCk7DQorICAgIH5DUERGX1F1aWNrU3RyZXRjaGVyKCk7DQorICAgIEZYX0JPT0wJCVN0YXJ0KENQREZfSW1hZ2VPYmplY3QqIHBJbWFnZU9iaiwgQ0ZYX0FmZmluZU1hdHJpeCogcEltYWdlMkRldmljZSwgY29uc3QgRlhfUkVDVCogcENsaXBCb3gpOw0KKyAgICBGWF9CT09MCQlDb250aW51ZShJRlhfUGF1c2UqIHBQYXVzZSk7DQorICAgIENGWF9ESUJpdG1hcCoJbV9wQml0bWFwOw0KKyAgICBpbnQJCQltX1Jlc3VsdExlZnQsIG1fUmVzdWx0VG9wLCBtX0NsaXBMZWZ0LCBtX0NsaXBUb3A7DQorICAgIGludAkJCW1fRGVzdFdpZHRoLCBtX0Rlc3RIZWlnaHQsIG1fUmVzdWx0V2lkdGgsIG1fUmVzdWx0SGVpZ2h0Ow0KKyAgICBpbnQJCQltX0JwcCwgbV9TcmNXaWR0aCwgbV9TcmNIZWlnaHQ7DQorICAgIEZYX0JPT0wJCW1fYkZsaXBYLCBtX2JGbGlwWTsNCisgICAgQ1BERl9Db2xvclNwYWNlKgltX3BDUzsNCisgICAgSUNvZGVjX1NjYW5saW5lRGVjb2RlcioJbV9wRGVjb2RlcjsNCisgICAgQ1BERl9TdHJlYW1BY2MgbV9TdHJlYW1BY2M7DQorICAgIGludAkJCW1fTGluZUluZGV4Ow0KK307DQorY2xhc3MgQ1BERl9EZXZpY2VCdWZmZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfRGV2aWNlQnVmZmVyKCk7DQorICAgIH5DUERGX0RldmljZUJ1ZmZlcigpOw0KKyAgICBGWF9CT09MCQkJCUluaXRpYWxpemUoQ1BERl9SZW5kZXJDb250ZXh0KiBwQ29udGV4dCwgQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgRlhfUkVDVCogcFJlY3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIGludCBtYXhfZHBpID0gMCk7DQorICAgIHZvaWQJCQkJT3V0cHV0VG9EZXZpY2UoKTsNCisgICAgQ0ZYX0RJQml0bWFwKgkJR2V0Qml0bWFwKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEJpdG1hcDsNCisgICAgfQ0KKyAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KglHZXRNYXRyaXgoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gJm1fTWF0cml4Ow0KKyAgICB9DQorcHJpdmF0ZToNCisgICAgQ0ZYX1JlbmRlckRldmljZSoJbV9wRGV2aWNlOw0KKyAgICBDUERGX1JlbmRlckNvbnRleHQqCW1fcENvbnRleHQ7DQorICAgIEZYX1JFQ1QJCQkJbV9SZWN0Ow0KKyAgICBjb25zdCBDUERGX1BhZ2VPYmplY3QqIG1fcE9iamVjdDsNCisgICAgQ0ZYX0RJQml0bWFwKgkJbV9wQml0bWFwOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4CW1fTWF0cml4Ow0KK307DQorY2xhc3MgQ1BERl9JbWFnZUNhY2hlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDUERGX0ltYWdlQ2FjaGUoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9TdHJlYW0qIHBTdHJlYW0pOw0KKyAgICB+Q1BERl9JbWFnZUNhY2hlKCk7DQorICAgIHZvaWQJCQkJQ2xlYXJJbWFnZURhdGEoKTsNCisgICAgdm9pZAkJCQlSZXNldChjb25zdCBDRlhfRElCaXRtYXAqIHBCaXRtYXApOw0KKyAgICBGWF9CT09MCQkJCUdldENhY2hlZEJpdG1hcChDRlhfRElCU291cmNlKiYgcEJpdG1hcCwgQ0ZYX0RJQlNvdXJjZSomIHBNYXNrLCBGWF9EV09SRCYgTWF0dGVDb2xvciwgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZVJlc291cmNlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiU3RkQ1MgPSBGQUxTRSwgRlhfRFdPUkQgR3JvdXBGYW1pbHkgPSAwLCBGWF9CT09MIGJMb2FkTWFzayA9IEZBTFNFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1JlbmRlclN0YXR1cyogcFJlbmRlclN0YXR1cyA9IE5VTEwsIEZYX0lOVDMyIGRvd25zYW1wbGVXaWR0aCA9IDAsIEZYX0lOVDMyIGRvd25zYW1wbGVIZWlnaHQgPSAwKTsNCisgICAgRlhfRFdPUkQJCQlFc3RpbWF0ZVNpemUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9kd0NhY2hlU2l6ZTsNCisgICAgfQ0KKyAgICBGWF9EV09SRAkJCUdldFRpbWVDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2R3VGltZUNvdW50Ow0KKyAgICB9DQorICAgIENQREZfU3RyZWFtKgkJR2V0U3RyZWFtKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFN0cmVhbTsNCisgICAgfQ0KKyAgICB2b2lkCQkJCVNldFRpbWVDb3VudChGWF9EV09SRCBkd1RpbWVDb3VudCkNCisgICAgew0KKyAgICAgICAgbV9kd1RpbWVDb3VudCA9IGR3VGltZUNvdW50Ow0KKyAgICB9DQorICAgIGludAkJCQkJbV9kd1RpbWVDb3VudDsNCitwdWJsaWM6DQorICAgIGludAkJCQkJU3RhcnRHZXRDYWNoZWRCaXRtYXAoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybVJlc291cmNlcywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZVJlc291cmNlcywNCisgICAgICAgICAgICBGWF9CT09MIGJTdGRDUyA9IEZBTFNFLCBGWF9EV09SRCBHcm91cEZhbWlseSA9IDAsDQorICAgICAgICAgICAgRlhfQk9PTCBiTG9hZE1hc2sgPSBGQUxTRSwgQ1BERl9SZW5kZXJTdGF0dXMqIHBSZW5kZXJTdGF0dXMgPSBOVUxMLCBGWF9JTlQzMiBkb3duc2FtcGxlV2lkdGggPSAwLCBGWF9JTlQzMiBkb3duc2FtcGxlSGVpZ2h0ID0gMCk7DQorICAgIGludAkJCQkJQ29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBpbnQgCQkJCUNvbnRpbnVlR2V0Q2FjaGVkQml0bWFwKCk7DQorICAgIENGWF9ESUJTb3VyY2UqCQlEZXRhY2hCaXRtYXAoKTsNCisgICAgQ0ZYX0RJQlNvdXJjZSoJCURldGFjaE1hc2soKTsNCisgICAgQ0ZYX0RJQlNvdXJjZSoJCW1fcEN1ckJpdG1hcDsNCisgICAgQ0ZYX0RJQlNvdXJjZSoJCW1fcEN1ck1hc2s7DQorICAgIEZYX0RXT1JECQkJbV9NYXR0ZUNvbG9yOw0KKyAgICBDUERGX1JlbmRlclN0YXR1cyogIG1fcFJlbmRlclN0YXR1czsNCitwcm90ZWN0ZWQ6DQorICAgIENQREZfRG9jdW1lbnQqCQltX3BEb2N1bWVudDsNCisgICAgQ1BERl9TdHJlYW0qCQltX3BTdHJlYW07DQorICAgIENGWF9ESUJTb3VyY2UqCQltX3BDYWNoZWRCaXRtYXA7DQorICAgIENGWF9ESUJTb3VyY2UqCQltX3BDYWNoZWRNYXNrOw0KKyAgICBGWF9EV09SRAkJCW1fZHdDYWNoZVNpemU7DQorICAgIHZvaWQJQ2FsY1NpemUoKTsNCit9Ow0KK3R5cGVkZWYgc3RydWN0IHsNCisgICAgRlhfRkxPQVQJCQltX0RlY29kZU1pbjsNCisgICAgRlhfRkxPQVQJCQltX0RlY29kZVN0ZXA7DQorICAgIGludAkJCQkJbV9Db2xvcktleU1pbjsNCisgICAgaW50CQkJCQltX0NvbG9yS2V5TWF4Ow0KK30gRElCX0NPTVBfREFUQTsNCitjbGFzcyBDUERGX0RJQlNvdXJjZSA6IHB1YmxpYyBDRlhfRElCU291cmNlDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9ESUJTb3VyY2UoKTsNCisgICAgdmlydHVhbCB+Q1BERl9ESUJTb3VyY2UoKTsNCisgICAgRlhfQk9PTAkJCQlMb2FkKENQREZfRG9jdW1lbnQqIHBEb2MsIGNvbnN0IENQREZfU3RyZWFtKiBwU3RyZWFtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9ESUJTb3VyY2UqKiBwcE1hc2ssIEZYX0RXT1JEKiBwTWF0dGVDb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcEZvcm1SZXNvdXJjZXMsIENQREZfRGljdGlvbmFyeSogcFBhZ2VSZXNvdXJjZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJTdGRDUyA9IEZBTFNFLCBGWF9EV09SRCBHcm91cEZhbWlseSA9IDAsIEZYX0JPT0wgYkxvYWRNYXNrID0gRkFMU0UpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVNraXBUb1NjYW5saW5lKGludCBsaW5lLCBJRlhfUGF1c2UqIHBQYXVzZSkgY29uc3Q7DQorICAgIHZpcnR1YWwJRlhfTFBCWVRFCUdldEJ1ZmZlcigpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIEZYX0xQQ0JZVEUJR2V0U2NhbmxpbmUoaW50IGxpbmUpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIHZvaWQJCURvd25TYW1wbGVTY2FubGluZShpbnQgbGluZSwgRlhfTFBCWVRFIGRlc3Rfc2NhbiwgaW50IGRlc3RfYnBwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF93aWR0aCwgRlhfQk9PTCBiRmxpcFgsIGludCBjbGlwX2xlZnQsIGludCBjbGlwX3dpZHRoKSBjb25zdDsNCisgICAgdmlydHVhbCB2b2lkCQlTZXREb3duU2FtcGxlU2l6ZShpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0KSBjb25zdDsNCisgICAgQ0ZYX0RJQml0bWFwKgkJR2V0Qml0bWFwKCkgY29uc3Q7DQorICAgIHZvaWQJCQkJUmVsZWFzZUJpdG1hcChDRlhfRElCaXRtYXAqKSBjb25zdDsNCisgICAgdm9pZAkJCQlDbGVhckltYWdlRGF0YSgpOw0KK3B1YmxpYzoNCisgICAgaW50CQkJCQlTdGFydExvYWRESUJTb3VyY2UoQ1BERl9Eb2N1bWVudCogcERvYywgY29uc3QgQ1BERl9TdHJlYW0qIHBTdHJlYW0sIEZYX0JPT0wgYkhhc01hc2ssDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcEZvcm1SZXNvdXJjZXMsIENQREZfRGljdGlvbmFyeSogcFBhZ2VSZXNvdXJjZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYlN0ZENTID0gRkFMU0UsIEZYX0RXT1JEIEdyb3VwRmFtaWx5ID0gMCwgRlhfQk9PTCBiTG9hZE1hc2sgPSBGQUxTRSk7DQorICAgIGludAkJCQkJQ29udGludWVMb2FkRElCU291cmNlKElGWF9QYXVzZSogcFBhdXNlKTsNCisgICAgaW50CQkJCQlTdHJhdExvYWRNYXNrKCk7DQorICAgIGludAkJCQkJU3RhcnRMb2FkTWFza0RJQigpOw0KKyAgICBpbnQJCQkJCUNvbnRpbnVlTG9hZE1hc2tESUIoSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBpbnQJCQkJCUNvbnRpbnVlVG9Mb2FkTWFzaygpOw0KKyAgICBDUERGX0RJQlNvdXJjZSoJCURldGFjaE1hc2soKTsNCisgICAgQ1BERl9ESUJTb3VyY2UqCQltX3BNYXNrOw0KKyAgICBGWF9EV09SRAkJCW1fTWF0dGVDb2xvcjsNCisgICAgRlhfTFBWT0lECQkJbV9wSmJpZzJDb250ZXh0Ow0KKyAgICBDUERGX1N0cmVhbUFjYyoJCW1fcEdsb2JhbFN0cmVhbTsNCisgICAgRlhfQk9PTAkJCQltX2JTdGRDUzsNCisgICAgaW50CQkJCQltX1N0YXR1czsNCisgICAgQ1BERl9PYmplY3QqCQltX3BNYXNrU3RyZWFtOw0KKyAgICBGWF9CT09MCQkJCW1fYkhhc01hc2s7DQorcHJvdGVjdGVkOg0KKyAgICBGWF9CT09MCQkJCUxvYWRDb2xvckluZm8oQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybVJlc291cmNlcywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZVJlc291cmNlcyk7DQorICAgIENQREZfRElCU291cmNlKgkJTG9hZE1hc2soRlhfRFdPUkQmIE1hdHRlQ29sb3IpOw0KKyAgICBDUERGX0RJQlNvdXJjZSoJCUxvYWRNYXNrRElCKENQREZfU3RyZWFtKiBwTWFzayk7DQorICAgIHZvaWQJCQkJTG9hZEpweEJpdG1hcCgpOw0KKyAgICB2b2lkCQkJCUxvYWRKYmlnMkJpdG1hcCgpOw0KKyAgICB2b2lkCQkJCUxvYWRQYWxldHRlKCk7DQorICAgIEZYX0JPT0wJCQkJQ3JlYXRlRGVjb2RlcigpOw0KKyAgICB2b2lkCQkJCVRyYW5zbGF0ZVNjYW5saW5lMjRicHAoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbikgY29uc3Q7DQorCUZYX0RXT1JEICAgICAgICAgICAgR2V0VmFsaWRCcHAoKSBjb25zdDsNCisNCisgICAgQ1BERl9Eb2N1bWVudCoJCW1fcERvY3VtZW50Ow0KKyAgICBjb25zdCBDUERGX1N0cmVhbSoJbV9wU3RyZWFtOw0KKyAgICBDUERGX1N0cmVhbUFjYyoJCW1fcFN0cmVhbUFjYzsNCisgICAgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KgltX3BEaWN0Ow0KKyAgICBDUERGX0NvbG9yU3BhY2UqCW1fcENvbG9yU3BhY2U7DQorICAgIEZYX0RXT1JECQkJbV9GYW1pbHksIG1fYnBjLCBtX25Db21wb25lbnRzLCBtX0dyb3VwRmFtaWx5Ow0KKyAgICBGWF9CT09MCQkJCW1fYkxvYWRNYXNrOw0KKyAgICBGWF9CT09MCQkJCW1fYkRlZmF1bHREZWNvZGUsIG1fYkltYWdlTWFzaywgbV9iQ29sb3JLZXk7DQorICAgIERJQl9DT01QX0RBVEEqCQltX3BDb21wRGF0YTsNCisgICAgRlhfTFBCWVRFCQkJbV9wTGluZUJ1ZjsNCisgICAgRlhfTFBCWVRFCQkJbV9wTWFza2VkTGluZTsNCisgICAgQ0ZYX0RJQml0bWFwKgkJbV9wQ2FjaGVkQml0bWFwOw0KKyAgICBJQ29kZWNfU2NhbmxpbmVEZWNvZGVyKgltX3BEZWNvZGVyOw0KK307DQorI2lmZGVmIF9GUERGQVBJX01JTklfDQorI2RlZmluZSBGUERGX0hVR0VfSU1BR0VfU0laRQkzMDAwMDAwDQorI2Vsc2UNCisjZGVmaW5lIEZQREZfSFVHRV9JTUFHRV9TSVpFCTYwMDAwMDAwDQorI2VuZGlmDQorY2xhc3MgQ1BERl9ESUJUcmFuc2ZlckZ1bmMgOiBwdWJsaWMgQ0ZYX0ZpbHRlcmVkRElCDQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9ESUJUcmFuc2ZlckZ1bmMoY29uc3QgQ1BERl9UcmFuc2ZlckZ1bmMqIHBUcmFuc2ZlckZ1bmMpOw0KKyAgICB2aXJ0dWFsIEZYRElCX0Zvcm1hdAlHZXREZXN0Rm9ybWF0KCk7DQorICAgIHZpcnR1YWwgRlhfQVJHQioJCUdldERlc3RQYWxldHRlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgdmlydHVhbCB2b2lkCQkJVHJhbnNsYXRlU2NhbmxpbmUoRlhfTFBCWVRFIGRlc3RfYnVmLCBGWF9MUENCWVRFIHNyY19idWYpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIHZvaWQJCQlUcmFuc2xhdGVEb3duU2FtcGxlcyhGWF9MUEJZVEUgZGVzdF9idWYsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgaW50IHBpeGVscywgaW50IEJwcCkgY29uc3Q7DQorICAgIEZYX0xQQ0JZVEUJCQkJbV9SYW1wUjsNCisgICAgRlhfTFBDQllURQkJCQltX1JhbXBHOw0KKyAgICBGWF9MUENCWVRFCQkJCW1fUmFtcEI7DQorfTsNCitzdHJ1Y3QgX0NQREZfVW5pcXVlS2V5R2VuIHsNCisgICAgdm9pZAkJR2VuZXJhdGUoaW50IGNvdW50LCAuLi4pOw0KKyAgICBGWF9DSEFSCQltX0tleVsxMjhdOw0KKyAgICBpbnQJCQltX0tleUxlbjsNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX2FjdGlvbi5jcHAgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19hY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxM2JkMjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19hY3Rpb24uY3BwCkBAIC0wLDAgKzEsMzYyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcGRmZG9jL2ZwZGZfZG9jLmgiDQorQ1BERl9EZXN0IENQREZfQWN0aW9uOjpHZXREZXN0KENQREZfRG9jdW1lbnQqIHBEb2MpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyB0eXBlID0gbV9wRGljdC0+R2V0U3RyaW5nKCJTIik7DQorICAgIGlmICh0eXBlICE9ICJHb1RvIiAmJiB0eXBlICE9ICJHb1RvUiIpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwRGVzdCA9IG1fcERpY3QtPkdldEVsZW1lbnRWYWx1ZSgiRCIpOw0KKyAgICBpZiAocERlc3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBEZXN0LT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUklORyB8fCBwRGVzdC0+R2V0VHlwZSgpID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICBDUERGX05hbWVUcmVlIG5hbWVfdHJlZShwRG9jLCBGWF9CU1RSQygiRGVzdHMiKSk7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZ0MgbmFtZSA9IHBEZXN0LT5HZXRTdHJpbmcoKTsNCisgICAgICAgIHJldHVybiBuYW1lX3RyZWUuTG9va3VwTmFtZWREZXN0KHBEb2MsIG5hbWUpOw0KKyAgICB9IGVsc2UgaWYgKHBEZXN0LT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gKENQREZfQXJyYXkqKXBEZXN0Ow0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitjb25zdCBGWF9DSEFSKiBnX3NBVHlwZXNbXSA9IHsiVW5rbm93biIsICJHb1RvIiwgIkdvVG9SIiwgIkdvVG9FIiwgIkxhdW5jaCIsICJUaHJlYWQiLCAiVVJJIiwgIlNvdW5kIiwgIk1vdmllIiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlkZSIsCSJOYW1lZCIsICJTdWJtaXRGb3JtIiwgIlJlc2V0Rm9ybSIsICJJbXBvcnREYXRhIiwgIkphdmFTY3JpcHQiLCAiU2V0T0NHU3RhdGUiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZW5kaXRpb24iLCAiVHJhbnMiLCAiR29UbzNEVmlldyIsICIiDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ow0KK0NQREZfQWN0aW9uOjpBY3Rpb25UeXBlIENQREZfQWN0aW9uOjpHZXRUeXBlKCkgY29uc3QNCit7DQorICAgIEFjdGlvblR5cGUgZVR5cGUgPSBVbmtub3duOw0KKyAgICBpZiAobV9wRGljdCAhPSBOVUxMKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc1R5cGUgPSBtX3BEaWN0LT5HZXRTdHJpbmcoIlMiKTsNCisgICAgICAgIGlmICghY3NUeXBlLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIGludCBpID0gMDsNCisgICAgICAgICAgICB3aGlsZSAoZ19zQVR5cGVzW2ldWzBdICE9ICdcMCcpIHsNCisgICAgICAgICAgICAgICAgaWYgKGNzVHlwZSA9PSBnX3NBVHlwZXNbaV0pIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoQWN0aW9uVHlwZSlpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGkgKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBlVHlwZTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9BY3Rpb246OkdldEZpbGVQYXRoKCkgY29uc3QNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIHR5cGUgPSBtX3BEaWN0LT5HZXRTdHJpbmcoIlMiKTsNCisgICAgaWYgKHR5cGUgIT0gIkdvVG9SIiAmJiB0eXBlICE9ICJMYXVuY2giICYmDQorICAgICAgICAgICAgdHlwZSAhPSAiU3VibWl0Rm9ybSIgJiYgdHlwZSAhPSAiSW1wb3J0RGF0YSIpIHsNCisgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZygpOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwRmlsZSA9IG1fcERpY3QtPkdldEVsZW1lbnRWYWx1ZSgiRiIpOw0KKyAgICBDRlhfV2lkZVN0cmluZyBwYXRoOw0KKyAgICBpZiAocEZpbGUgPT0gTlVMTCkgew0KKyAgICAgICAgaWYgKHR5cGUgPT0gIkxhdW5jaCIpIHsNCisgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBXaW5EaWN0ID0gbV9wRGljdC0+R2V0RGljdChGWF9CU1RSQygiV2luIikpOw0KKyAgICAgICAgICAgIGlmIChwV2luRGljdCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbChwV2luRGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJGIikpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gcGF0aDsNCisgICAgfQ0KKyAgICBDUERGX0ZpbGVTcGVjIGZpbGVzcGVjKHBGaWxlKTsNCisgICAgZmlsZXNwZWMuR2V0RmlsZU5hbWUocGF0aCk7DQorICAgIHJldHVybiBwYXRoOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX0FjdGlvbjo6R2V0VVJJKENQREZfRG9jdW1lbnQqIHBEb2MpIGNvbnN0DQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc1VSSTsNCisgICAgaWYgKG1fcERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIGNzVVJJOw0KKyAgICB9DQorICAgIGlmIChtX3BEaWN0LT5HZXRTdHJpbmcoIlMiKSAhPSAiVVJJIikgew0KKyAgICAgICAgcmV0dXJuIGNzVVJJOw0KKyAgICB9DQorICAgIGNzVVJJID0gbV9wRGljdC0+R2V0U3RyaW5nKCJVUkkiKTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUm9vdCA9IHBEb2MtPkdldFJvb3QoKTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwVVJJID0gcFJvb3QtPkdldERpY3QoIlVSSSIpOw0KKyAgICBpZiAocFVSSSAhPSBOVUxMKSB7DQorICAgICAgICBpZiAoY3NVUkkuRmluZChGWF9CU1RSQygiOiIpLCAwKSA8IDEpIHsNCisgICAgICAgICAgICBjc1VSSSA9IHBVUkktPkdldFN0cmluZygiQmFzZSIpICsgY3NVUkk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGNzVVJJOw0KK30NCitGWF9EV09SRCBDUERGX0FjdGlvbkZpZWxkczo6R2V0RmllbGRzQ291bnQoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcEFjdGlvbiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gKENQREZfRGljdGlvbmFyeSopKCptX3BBY3Rpb24pOw0KKyAgICBpZiAocERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NUeXBlID0gcERpY3QtPkdldFN0cmluZygiUyIpOw0KKyAgICBDUERGX09iamVjdCogcEZpZWxkcyA9IE5VTEw7DQorICAgIGlmIChjc1R5cGUgPT0gIkhpZGUiKSB7DQorICAgICAgICBwRmllbGRzID0gcERpY3QtPkdldEVsZW1lbnRWYWx1ZSgiVCIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcEZpZWxkcyA9IHBEaWN0LT5HZXRBcnJheSgiRmllbGRzIik7DQorICAgIH0NCisgICAgaWYgKHBGaWVsZHMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaW50IGlUeXBlID0gcEZpZWxkcy0+R2V0VHlwZSgpOw0KKyAgICBpZiAoaVR5cGUgPT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9IGVsc2UgaWYgKGlUeXBlID09IFBERk9CSl9TVFJJTkcpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9IGVsc2UgaWYgKGlUeXBlID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgcmV0dXJuICgoQ1BERl9BcnJheSopcEZpZWxkcyktPkdldENvdW50KCk7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK3ZvaWQgQ1BERl9BY3Rpb25GaWVsZHM6OkdldEFsbEZpZWxkcyhDRlhfUHRyQXJyYXkmIGZpZWxkT2JqZWN0cykgY29uc3QNCit7DQorICAgIGZpZWxkT2JqZWN0cy5SZW1vdmVBbGwoKTsNCisgICAgaWYgKG1fcEFjdGlvbiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKSgqbV9wQWN0aW9uKTsNCisgICAgaWYgKHBEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc1R5cGUgPSBwRGljdC0+R2V0U3RyaW5nKCJTIik7DQorICAgIENQREZfT2JqZWN0KiBwRmllbGRzID0gTlVMTDsNCisgICAgaWYgKGNzVHlwZSA9PSAiSGlkZSIpIHsNCisgICAgICAgIHBGaWVsZHMgPSBwRGljdC0+R2V0RWxlbWVudFZhbHVlKCJUIik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwRmllbGRzID0gcERpY3QtPkdldEFycmF5KCJGaWVsZHMiKTsNCisgICAgfQ0KKyAgICBpZiAocEZpZWxkcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IGlUeXBlID0gcEZpZWxkcy0+R2V0VHlwZSgpOw0KKyAgICBpZiAoaVR5cGUgPT0gUERGT0JKX0RJQ1RJT05BUlkgfHwgaVR5cGUgPT0gUERGT0JKX1NUUklORykgew0KKyAgICAgICAgZmllbGRPYmplY3RzLkFkZChwRmllbGRzKTsNCisgICAgfSBlbHNlIGlmIChpVHlwZSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwRmllbGRzOw0KKyAgICAgICAgRlhfRFdPUkQgaUNvdW50ID0gcEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IGlDb3VudDsgaSArKykgew0KKyAgICAgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gcEFycmF5LT5HZXRFbGVtZW50VmFsdWUoaSk7DQorICAgICAgICAgICAgaWYgKHBPYmogIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBmaWVsZE9iamVjdHMuQWRkKHBPYmopOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDUERGX09iamVjdCogQ1BERl9BY3Rpb25GaWVsZHM6OkdldEZpZWxkKEZYX0RXT1JEIGlJbmRleCkgY29uc3QNCit7DQorICAgIGlmIChtX3BBY3Rpb24gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKSgqbV9wQWN0aW9uKTsNCisgICAgaWYgKHBEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGNzVHlwZSA9IHBEaWN0LT5HZXRTdHJpbmcoIlMiKTsNCisgICAgQ1BERl9PYmplY3QqIHBGaWVsZHMgPSBOVUxMOw0KKyAgICBpZiAoY3NUeXBlID09ICJIaWRlIikgew0KKyAgICAgICAgcEZpZWxkcyA9IHBEaWN0LT5HZXRFbGVtZW50VmFsdWUoIlQiKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBGaWVsZHMgPSBwRGljdC0+R2V0QXJyYXkoIkZpZWxkcyIpOw0KKyAgICB9DQorICAgIGlmIChwRmllbGRzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwRmluZE9iaiA9IE5VTEw7DQorICAgIGludCBpVHlwZSA9IHBGaWVsZHMtPkdldFR5cGUoKTsNCisgICAgaWYgKGlUeXBlID09IFBERk9CSl9ESUNUSU9OQVJZIHx8IGlUeXBlID09IFBERk9CSl9TVFJJTkcpIHsNCisgICAgICAgIGlmIChpSW5kZXggPT0gMCkgew0KKyAgICAgICAgICAgIHBGaW5kT2JqID0gcEZpZWxkczsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChpVHlwZSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHBGaW5kT2JqID0gKChDUERGX0FycmF5KilwRmllbGRzKS0+R2V0RWxlbWVudFZhbHVlKGlJbmRleCk7DQorICAgIH0NCisgICAgcmV0dXJuIHBGaW5kT2JqOw0KK30NCitDUERGX0xXaW5QYXJhbSBDUERGX0FjdGlvbjo6R2V0V2luUGFyYW0oKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKG1fcERpY3QtPkdldFN0cmluZygiUyIpICE9ICJMYXVuY2giKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGljdC0+R2V0RGljdCgiV2luIik7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENQREZfQWN0aW9uOjpHZXRKYXZhU2NyaXB0KCkgY29uc3QNCit7DQorICAgIENGWF9XaWRlU3RyaW5nIGNzSlM7DQorICAgIGlmIChtX3BEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBjc0pTOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwSlMgPSBtX3BEaWN0LT5HZXRFbGVtZW50VmFsdWUoIkpTIik7DQorICAgIGlmIChwSlMgIT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIHBKUy0+R2V0VW5pY29kZVRleHQoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gY3NKUzsNCit9DQorQ1BERl9EaWN0aW9uYXJ5KiBDUERGX0FjdGlvbjo6R2V0QW5ub3QoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NUeXBlID0gbV9wRGljdC0+R2V0U3RyaW5nKCJTIik7DQorICAgIGlmIChjc1R5cGUgPT0gRlhfQlNUUkMoIlJlbmRpdGlvbiIpKSB7DQorICAgICAgICByZXR1cm4gbV9wRGljdC0+R2V0RGljdCgiQU4iKTsNCisgICAgfSBlbHNlIGlmIChjc1R5cGUgPT0gRlhfQlNUUkMoIk1vdmllIikpIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0LT5HZXREaWN0KCJBbm5vdGF0aW9uIik7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0ZYX0lOVDMyIENQREZfQWN0aW9uOjpHZXRPcGVyYXRpb25UeXBlKCkgY29uc3QNCit7DQorICAgIGlmIChtX3BEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGNzVHlwZSA9IG1fcERpY3QtPkdldFN0cmluZygiUyIpOw0KKyAgICBpZiAoY3NUeXBlID09IEZYX0JTVFJDKCJSZW5kaXRpb24iKSkgew0KKyAgICAgICAgcmV0dXJuIG1fcERpY3QtPkdldEludGVnZXIoIk9QIik7DQorICAgIH0gZWxzZSBpZiAoY3NUeXBlID09IEZYX0JTVFJDKCJNb3ZpZSIpKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc09QID0gbV9wRGljdC0+R2V0U3RyaW5nKCJPcGVyYXRpb24iKTsNCisgICAgICAgIGlmIChjc09QID09IEZYX0JTVFJDKCJQbGF5IikpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0gZWxzZSBpZiAoY3NPUCA9PSBGWF9CU1RSQygiU3RvcCIpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICB9IGVsc2UgaWYgKGNzT1AgPT0gRlhfQlNUUkMoIlBhdXNlIikpIHsNCisgICAgICAgICAgICByZXR1cm4gMjsNCisgICAgICAgIH0gZWxzZSBpZiAoY3NPUCA9PSBGWF9CU1RSQygiUmVzdW1lIikpIHsNCisgICAgICAgICAgICByZXR1cm4gMzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorRlhfRFdPUkQgQ1BERl9BY3Rpb246OkdldFN1YkFjdGlvbnNDb3VudCgpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGljdCA9PSBOVUxMIHx8ICFtX3BEaWN0LT5LZXlFeGlzdCgiTmV4dCIpKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcE5leHQgPSBtX3BEaWN0LT5HZXRFbGVtZW50VmFsdWUoIk5leHQiKTsNCisgICAgaWYgKCFwTmV4dCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaW50IGlPYmpUeXBlID0gcE5leHQtPkdldFR5cGUoKTsNCisgICAgaWYgKGlPYmpUeXBlID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICBpZiAoaU9ialR5cGUgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gKChDUERGX0FycmF5KilwTmV4dCktPkdldENvdW50KCk7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0NQREZfQWN0aW9uIENQREZfQWN0aW9uOjpHZXRTdWJBY3Rpb24oRlhfRFdPUkQgaUluZGV4KSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERpY3QgPT0gTlVMTCB8fCAhbV9wRGljdC0+S2V5RXhpc3QoIk5leHQiKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBOZXh0ID0gbV9wRGljdC0+R2V0RWxlbWVudFZhbHVlKCJOZXh0Iik7DQorICAgIGludCBpT2JqVHlwZSA9IHBOZXh0LT5HZXRUeXBlKCk7DQorICAgIGlmIChpT2JqVHlwZSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgaWYgKGlJbmRleCA9PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIChDUERGX0RpY3Rpb25hcnkqKXBOZXh0Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChpT2JqVHlwZSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHJldHVybiAoKENQREZfQXJyYXkqKXBOZXh0KS0+R2V0RGljdChpSW5kZXgpOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitjb25zdCBGWF9DSEFSKiBnX3NBQVR5cGVzW10gPSB7IkUiLCAiWCIsICJEIiwgIlUiLCAiRm8iLCAiQmwiLCAiUE8iLCAiUEMiLCAiUFYiLCAiUEkiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTyIsICJDIiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIksiLCAiRiIsICJWIiwgIkMiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0MiLCAiV1MiLCAiRFMiLCAiV1AiLCAiRFAiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07DQorRlhfQk9PTCBDUERGX0FBY3Rpb246OkFjdGlvbkV4aXN0KEFBY3Rpb25UeXBlIGVUeXBlKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BEaWN0LT5LZXlFeGlzdChnX3NBQVR5cGVzWyhpbnQpZVR5cGVdKTsNCit9DQorQ1BERl9BY3Rpb24gQ1BERl9BQWN0aW9uOjpHZXRBY3Rpb24oQUFjdGlvblR5cGUgZVR5cGUpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGljdC0+R2V0RGljdChnX3NBQVR5cGVzWyhpbnQpZVR5cGVdKTsNCit9DQorRlhfUE9TSVRJT04gQ1BERl9BQWN0aW9uOjpHZXRTdGFydFBvcygpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGljdC0+R2V0U3RhcnRQb3MoKTsNCit9DQorQ1BERl9BY3Rpb24gQ1BERl9BQWN0aW9uOjpHZXROZXh0QWN0aW9uKEZYX1BPU0lUSU9OJiBwb3MsIEFBY3Rpb25UeXBlJiBlVHlwZSkgY29uc3QNCit7DQorICAgIGlmIChtX3BEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGNzS2V5Ow0KKyAgICBDUERGX09iamVjdCogcE9iaiA9IG1fcERpY3QtPkdldE5leHRFbGVtZW50KHBvcywgY3NLZXkpOw0KKyAgICBpZiAocE9iaiAhPSBOVUxMKSB7DQorICAgICAgICBDUERGX09iamVjdCogcERpcmVjdCA9IHBPYmotPkdldERpcmVjdCgpOw0KKyAgICAgICAgaWYgKHBEaXJlY3QgIT0gTlVMTCAmJiBwRGlyZWN0LT5HZXRUeXBlKCkgPT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgICAgICBpbnQgaSA9IDA7DQorICAgICAgICAgICAgd2hpbGUgKGdfc0FBVHlwZXNbaV1bMF0gIT0gJ1wwJykgew0KKyAgICAgICAgICAgICAgICBpZiAoY3NLZXkgPT0gZ19zQUFUeXBlc1tpXSkgew0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaSArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZVR5cGUgPSAoQUFjdGlvblR5cGUpaTsNCisgICAgICAgICAgICByZXR1cm4gKENQREZfRGljdGlvbmFyeSopcERpcmVjdDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorQ1BERl9Eb2NKU0FjdGlvbnM6OkNQREZfRG9jSlNBY3Rpb25zKENQREZfRG9jdW1lbnQqIHBEb2MpDQorew0KKyAgICBtX3BEb2N1bWVudCA9IHBEb2M7DQorfQ0KK2ludCBDUERGX0RvY0pTQWN0aW9uczo6Q291bnRKU0FjdGlvbnMoKSBjb25zdA0KK3sNCisgICAgQVNTRVJUKG1fcERvY3VtZW50ICE9IE5VTEwpOw0KKyAgICBDUERGX05hbWVUcmVlIG5hbWVfdHJlZShtX3BEb2N1bWVudCwgRlhfQlNUUkMoIkphdmFTY3JpcHQiKSk7DQorICAgIHJldHVybiBuYW1lX3RyZWUuR2V0Q291bnQoKTsNCit9DQorQ1BERl9BY3Rpb24gQ1BERl9Eb2NKU0FjdGlvbnM6OkdldEpTQWN0aW9uKGludCBpbmRleCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZSkgY29uc3QNCit7DQorICAgIEFTU0VSVChtX3BEb2N1bWVudCAhPSBOVUxMKTsNCisgICAgQ1BERl9OYW1lVHJlZSBuYW1lX3RyZWUobV9wRG9jdW1lbnQsIEZYX0JTVFJDKCJKYXZhU2NyaXB0IikpOw0KKyAgICBDUERGX09iamVjdCAqcEFjdGlvbiA9IG5hbWVfdHJlZS5Mb29rdXBWYWx1ZShpbmRleCwgY3NOYW1lKTsNCisgICAgaWYgKHBBY3Rpb24gPT0gTlVMTCB8fCBwQWN0aW9uLT5HZXRUeXBlKCkgIT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBwQWN0aW9uLT5HZXREaWN0KCk7DQorfQ0KK0NQREZfQWN0aW9uIENQREZfRG9jSlNBY3Rpb25zOjpHZXRKU0FjdGlvbihjb25zdCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lKSBjb25zdA0KK3sNCisgICAgQVNTRVJUKG1fcERvY3VtZW50ICE9IE5VTEwpOw0KKyAgICBDUERGX05hbWVUcmVlIG5hbWVfdHJlZShtX3BEb2N1bWVudCwgRlhfQlNUUkMoIkphdmFTY3JpcHQiKSk7DQorICAgIENQREZfT2JqZWN0ICpwQWN0aW9uID0gbmFtZV90cmVlLkxvb2t1cFZhbHVlKGNzTmFtZSk7DQorICAgIGlmIChwQWN0aW9uID09IE5VTEwgfHwgcEFjdGlvbi0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gcEFjdGlvbi0+R2V0RGljdCgpOw0KK30NCitpbnQgQ1BERl9Eb2NKU0FjdGlvbnM6OkZpbmRKU0FjdGlvbihjb25zdCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lKSBjb25zdA0KK3sNCisgICAgQVNTRVJUKG1fcERvY3VtZW50ICE9IE5VTEwpOw0KKyAgICBDUERGX05hbWVUcmVlIG5hbWVfdHJlZShtX3BEb2N1bWVudCwgRlhfQlNUUkMoIkphdmFTY3JpcHQiKSk7DQorICAgIHJldHVybiBuYW1lX3RyZWUuR2V0SW5kZXgoY3NOYW1lKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmRvYy9kb2NfYW5ub3QuY3BwIGIvY29yZS9zcmMvZnBkZmRvYy9kb2NfYW5ub3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMzA0ODUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19hbm5vdC5jcHAKQEAgLTAsMCArMSw1MTkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZkb2MvZnBkZl9kb2MuaCINCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZW9iai5oIg0KK0NQREZfQW5ub3RMaXN0OjpDUERGX0Fubm90TGlzdChDUERGX1BhZ2UqIHBQYWdlKQ0KK3sNCisgICAgQVNTRVJUKHBQYWdlICE9IE5VTEwpOw0KKyAgICBtX3BQYWdlRGljdCA9IHBQYWdlLT5tX3BGb3JtRGljdDsNCisgICAgaWYgKG1fcFBhZ2VEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BEb2N1bWVudCA9IHBQYWdlLT5tX3BEb2N1bWVudDsNCisgICAgQ1BERl9BcnJheSogcEFubm90cyA9IG1fcFBhZ2VEaWN0LT5HZXRBcnJheSgiQW5ub3RzIik7DQorICAgIGlmIChwQW5ub3RzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBSb290ID0gbV9wRG9jdW1lbnQtPkdldFJvb3QoKTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwQWNyb0Zvcm0gPSBwUm9vdC0+R2V0RGljdCgiQWNyb0Zvcm0iKTsNCisgICAgRlhfQk9PTCBiUmVnZW5lcmF0ZUFQID0gcEFjcm9Gb3JtICYmIHBBY3JvRm9ybS0+R2V0Qm9vbGVhbigiTmVlZEFwcGVhcmFuY2VzIik7DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwQW5ub3RzLT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gKENQREZfRGljdGlvbmFyeSopcEFubm90cy0+R2V0RWxlbWVudFZhbHVlKGkpOw0KKyAgICAgICAgaWYgKHBEaWN0ID09IE5VTEwgfHwgcERpY3QtPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgZHdPYmpOdW0gPSBwRGljdC0+R2V0T2JqTnVtKCk7DQorICAgICAgICBpZiAoZHdPYmpOdW0gPT0gMCkgew0KKyAgICAgICAgICAgIGR3T2JqTnVtID0gbV9wRG9jdW1lbnQtPkFkZEluZGlyZWN0T2JqZWN0KHBEaWN0KTsNCisgICAgICAgICAgICBDUERGX1JlZmVyZW5jZSogcEFjdGlvbiA9IENQREZfUmVmZXJlbmNlOjpDcmVhdGUobV9wRG9jdW1lbnQsIGR3T2JqTnVtKTsNCisgICAgICAgICAgICBpZiAocEFjdGlvbiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwQW5ub3RzLT5JbnNlcnRBdChpLCBwQWN0aW9uKTsNCisgICAgICAgICAgICBwQW5ub3RzLT5SZW1vdmVBdChpICsgMSk7DQorICAgICAgICAgICAgcERpY3QgPSBwQW5ub3RzLT5HZXREaWN0KGkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9Bbm5vdCogcEFubm90ID0gRlhfTkVXIENQREZfQW5ub3QocERpY3QpOw0KKyAgICAgICAgaWYgKHBBbm5vdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBwQW5ub3QtPm1fcExpc3QgPSB0aGlzOw0KKyAgICAgICAgbV9Bbm5vdExpc3QuQWRkKHBBbm5vdCk7DQorICAgICAgICBpZiAoYlJlZ2VuZXJhdGVBUCAmJiBwRGljdC0+R2V0Q29uc3RTdHJpbmcoRlhfQlNUUkMoIlN1YnR5cGUiKSkgPT0gRlhfQlNUUkMoIldpZGdldCIpKQ0KKyAgICAgICAgICAgIGlmIChDUERGX0ludGVyRm9ybTo6VXBkYXRpbmdBUEVuYWJsZWQoKSkgew0KKyAgICAgICAgICAgICAgICBGUERGX0dlbmVyYXRlQVAobV9wRG9jdW1lbnQsIHBEaWN0KTsNCisgICAgICAgICAgICB9DQorICAgIH0NCit9DQorQ1BERl9Bbm5vdExpc3Q6On5DUERGX0Fubm90TGlzdCgpDQorew0KKyAgICBpbnQgaSA9IDA7DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX0Fubm90TGlzdC5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIGRlbGV0ZSAoQ1BERl9Bbm5vdCopbV9Bbm5vdExpc3RbaV07DQorICAgIH0NCisgICAgZm9yIChpID0gMDsgaSA8IG1fQm9yZGVycy5HZXRTaXplKCk7ICsraSkgew0KKyAgICAgICAgZGVsZXRlIChDUERGX1BhZ2VPYmplY3RzKiltX0JvcmRlcnNbaV07DQorICAgIH0NCit9DQordm9pZCBDUERGX0Fubm90TGlzdDo6RGlzcGxheVBhc3MoY29uc3QgQ1BERl9QYWdlKiBwUGFnZSwgQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1JlbmRlckNvbnRleHQqIHBDb250ZXh0LCBGWF9CT09MIGJQcmludGluZywgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJXaWRnZXRQYXNzLCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zLCBGWF9SRUNUKiBjbGlwX3JlY3QpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fQW5ub3RMaXN0LkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgQ1BERl9Bbm5vdCogcEFubm90ID0gKENQREZfQW5ub3QqKW1fQW5ub3RMaXN0W2ldOw0KKyAgICAgICAgRlhfQk9PTCBiV2lkZ2V0ID0gcEFubm90LT5HZXRTdWJUeXBlKCkgPT0gIldpZGdldCI7DQorICAgICAgICBpZiAoKGJXaWRnZXRQYXNzICYmICFiV2lkZ2V0KSB8fCAoIWJXaWRnZXRQYXNzICYmIGJXaWRnZXQpKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCBhbm5vdF9mbGFncyA9IHBBbm5vdC0+R2V0RmxhZ3MoKTsNCisgICAgICAgIGlmIChhbm5vdF9mbGFncyAmIEFOTk9URkxBR19ISURERU4pIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChiUHJpbnRpbmcgJiYgKGFubm90X2ZsYWdzICYgQU5OT1RGTEFHX1BSSU5UKSA9PSAwKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIWJQcmludGluZyAmJiAoYW5ub3RfZmxhZ3MgJiBBTk5PVEZMQUdfTk9WSUVXKSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBPcHRpb25zICE9IE5VTEwpIHsNCisgICAgICAgICAgICBJUERGX09DQ29udGV4dCogcE9DQ29udGV4dCA9IHBPcHRpb25zLT5tX3BPQ0NvbnRleHQ7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwQW5ub3REaWN0ID0gcEFubm90LT5tX3BBbm5vdERpY3Q7DQorICAgICAgICAgICAgaWYgKHBPQ0NvbnRleHQgIT0gTlVMTCAmJiBwQW5ub3REaWN0ICE9IE5VTEwgJiYNCisgICAgICAgICAgICAgICAgICAgICFwT0NDb250ZXh0LT5DaGVja09DR1Zpc2libGUocEFubm90RGljdC0+R2V0RGljdChGWF9CU1RSQygiT0MiKSkpKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIENQREZfUmVjdCBhbm5vdF9yZWN0X2Y7DQorICAgICAgICBwQW5ub3QtPkdldFJlY3QoYW5ub3RfcmVjdF9mKTsNCisgICAgICAgIENGWF9NYXRyaXggbWF0cml4Ow0KKyAgICAgICAgbWF0cml4ID0gKnBNYXRyaXg7DQorICAgICAgICBpZiAoY2xpcF9yZWN0KSB7DQorICAgICAgICAgICAgYW5ub3RfcmVjdF9mLlRyYW5zZm9ybSgmbWF0cml4KTsNCisgICAgICAgICAgICBGWF9SRUNUIGFubm90X3JlY3QgPSBhbm5vdF9yZWN0X2YuR2V0T3V0dGVyUmVjdCgpOw0KKyAgICAgICAgICAgIGFubm90X3JlY3QuSW50ZXJzZWN0KCpjbGlwX3JlY3QpOw0KKyAgICAgICAgICAgIGlmIChhbm5vdF9yZWN0LklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAocENvbnRleHQpIHsNCisgICAgICAgICAgICBwQW5ub3QtPkRyYXdJbkNvbnRleHQocFBhZ2UsIHBDb250ZXh0LCAmbWF0cml4LCBDUERGX0Fubm90OjpOb3JtYWwpOw0KKyAgICAgICAgfSBlbHNlIGlmICghcEFubm90LT5EcmF3QXBwZWFyYW5jZShwUGFnZSwgcERldmljZSwgJm1hdHJpeCwgQ1BERl9Bbm5vdDo6Tm9ybWFsLCBwT3B0aW9ucykpIHsNCisgICAgICAgICAgICBwQW5ub3QtPkRyYXdCb3JkZXIocERldmljZSwgJm1hdHJpeCwgcE9wdGlvbnMpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9Bbm5vdExpc3Q6OkRpc3BsYXlBbm5vdHMoY29uc3QgQ1BERl9QYWdlKiBwUGFnZSwgQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXgqIHBVc2VyMkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYlNob3dXaWRnZXQsIENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMpDQorew0KKyAgICBGWF9SRUNUIGNsaXBfcmVjdDsNCisgICAgaWYgKHBEZXZpY2UpIHsNCisgICAgICAgIGNsaXBfcmVjdCA9IHBEZXZpY2UtPkdldENsaXBCb3goKTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJQcmludGluZyA9IHBEZXZpY2UtPkdldERldmljZUNsYXNzKCkgPT0gRlhEQ19QUklOVEVSIHx8IChwT3B0aW9ucyAmJiAocE9wdGlvbnMtPm1fRmxhZ3MgJiBSRU5ERVJfUFJJTlRQUkVWSUVXKSk7DQorICAgIERpc3BsYXlBbm5vdHMocFBhZ2UsIHBEZXZpY2UsIE5VTEwsIGJQcmludGluZywgcFVzZXIyRGV2aWNlLCBiU2hvd1dpZGdldCA/IDMgOiAxLCBwT3B0aW9ucywgJmNsaXBfcmVjdCk7DQorfQ0KK3ZvaWQgQ1BERl9Bbm5vdExpc3Q6OkRpc3BsYXlBbm5vdHMoY29uc3QgQ1BERl9QYWdlKiBwUGFnZSwgQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgQ1BERl9SZW5kZXJDb250ZXh0KiBwQ29udGV4dCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYlByaW50aW5nLCBDRlhfQWZmaW5lTWF0cml4KiBwVXNlcjJEZXZpY2UsIEZYX0RXT1JEIGR3QW5ub3RGbGFncywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMsIEZYX1JFQ1QqIHBDbGlwUmVjdCkNCit7DQorICAgIGlmIChkd0Fubm90RmxhZ3MgJiAweDAxKSB7DQorICAgICAgICBEaXNwbGF5UGFzcyhwUGFnZSwgcERldmljZSwgcENvbnRleHQsIGJQcmludGluZywgcFVzZXIyRGV2aWNlLCBGQUxTRSwgcE9wdGlvbnMsIHBDbGlwUmVjdCk7DQorICAgIH0NCisgICAgaWYgKGR3QW5ub3RGbGFncyAmIDB4MDIpIHsNCisgICAgICAgIERpc3BsYXlQYXNzKHBQYWdlLCBwRGV2aWNlLCBwQ29udGV4dCwgYlByaW50aW5nLCBwVXNlcjJEZXZpY2UsIFRSVUUsIHBPcHRpb25zLCBwQ2xpcFJlY3QpOw0KKyAgICB9DQorfQ0KK2ludCBDUERGX0Fubm90TGlzdDo6R2V0SW5kZXgoQ1BERl9Bbm5vdCogcEFubm90KQ0KK3sNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX0Fubm90TGlzdC5HZXRTaXplKCk7IGkgKyspDQorICAgICAgICBpZiAobV9Bbm5vdExpc3RbaV0gPT0gKEZYX0xQVk9JRClwQW5ub3QpIHsNCisgICAgICAgICAgICByZXR1cm4gaTsNCisgICAgICAgIH0NCisgICAgcmV0dXJuIC0xOw0KK30NCitDUERGX0Fubm90OjpDUERGX0Fubm90KENQREZfRGljdGlvbmFyeSogcERpY3QpDQorew0KKyAgICBtX3BMaXN0ID0gTlVMTDsNCisgICAgbV9wQW5ub3REaWN0ID0gcERpY3Q7DQorfQ0KK0NQREZfQW5ub3Q6On5DUERGX0Fubm90KCkNCit7DQorICAgIENsZWFyQ2FjaGVkQVAoKTsNCit9DQorQ1BERl9SZWZlcmVuY2UqIENQREZfQW5ub3Q6Ok5ld0Fubm90UmVmKCkNCit7DQorICAgIGlmIChtX3BBbm5vdERpY3QtPkdldE9iak51bSgpID09IDApIHsNCisgICAgICAgIG1fcExpc3QtPm1fcERvY3VtZW50LT5BZGRJbmRpcmVjdE9iamVjdChtX3BBbm5vdERpY3QpOw0KKyAgICB9DQorICAgIHJldHVybiBDUERGX1JlZmVyZW5jZTo6Q3JlYXRlKG1fcExpc3QtPm1fcERvY3VtZW50LCBtX3BBbm5vdERpY3QtPkdldE9iak51bSgpKTsNCit9DQordm9pZCBDUERGX0Fubm90OjpDbGVhckNhY2hlZEFQKCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fQVBNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICB2b2lkKiBwRm9ybTsNCisgICAgICAgIHZvaWQqIHBPYmplY3RzOw0KKyAgICAgICAgbV9BUE1hcC5HZXROZXh0QXNzb2MocG9zLCBwRm9ybSwgcE9iamVjdHMpOw0KKyAgICAgICAgZGVsZXRlIChDUERGX1BhZ2VPYmplY3RzKilwT2JqZWN0czsNCisgICAgfQ0KKyAgICBtX0FQTWFwLlJlbW92ZUFsbCgpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX0Fubm90OjpHZXRTdWJUeXBlKCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX3BBbm5vdERpY3QtPkdldENvbnN0U3RyaW5nKEZYX0JTVFJDKCJTdWJ0eXBlIikpOw0KK30NCit2b2lkIENQREZfQW5ub3Q6OkdldFJlY3QoQ1BERl9SZWN0JiByZWN0KSBjb25zdA0KK3sNCisgICAgaWYgKG1fcEFubm90RGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcmVjdCA9IG1fcEFubm90RGljdC0+R2V0UmVjdCgiUmVjdCIpOw0KKyAgICByZWN0Lk5vcm1hbGl6ZSgpOw0KK30NCitDUERGX1N0cmVhbSogRlBERkRPQ19HZXRBbm5vdEFQKENQREZfRGljdGlvbmFyeSogcEFubm90RGljdCwgQ1BERl9Bbm5vdDo6QXBwZWFyYW5jZU1vZGUgbW9kZSkNCit7DQorICAgIENQREZfRGljdGlvbmFyeSogcEFQID0gcEFubm90RGljdC0+R2V0RGljdCgiQVAiKTsNCisgICAgaWYgKHBBUCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBjb25zdCBGWF9DSEFSKiBhcF9lbnRyeSA9ICJOIjsNCisgICAgaWYgKG1vZGUgPT0gQ1BERl9Bbm5vdDo6RG93bikgew0KKyAgICAgICAgYXBfZW50cnkgPSAiRCI7DQorICAgIH0gZWxzZSBpZiAobW9kZSA9PSBDUERGX0Fubm90OjpSb2xsb3Zlcikgew0KKyAgICAgICAgYXBfZW50cnkgPSAiUiI7DQorICAgIH0NCisgICAgaWYgKCFwQVAtPktleUV4aXN0KGFwX2VudHJ5KSkgew0KKyAgICAgICAgYXBfZW50cnkgPSAiTiI7DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBzdWIgPSBwQVAtPkdldEVsZW1lbnRWYWx1ZShhcF9lbnRyeSk7DQorICAgIGlmIChwc3ViID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfU3RyZWFtKiBwU3RyZWFtID0gTlVMTDsNCisgICAgaWYgKHBzdWItPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICBwU3RyZWFtID0gKENQREZfU3RyZWFtKilwc3ViOw0KKyAgICB9IGVsc2UgaWYgKHBzdWItPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgYXMgPSBwQW5ub3REaWN0LT5HZXRTdHJpbmcoIkFTIik7DQorICAgICAgICBpZiAoYXMuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgdmFsdWUgPSBwQW5ub3REaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlYiKSk7DQorICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHBBbm5vdERpY3QtPkdldERpY3QoRlhfQlNUUkMoIlBhcmVudCIpKS0+R2V0U3RyaW5nKEZYX0JTVFJDKCJWIikpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAodmFsdWUuSXNFbXB0eSgpIHx8ICEoKENQREZfRGljdGlvbmFyeSopcHN1YiktPktleUV4aXN0KHZhbHVlKSkgew0KKyAgICAgICAgICAgICAgICBhcyA9IEZYX0JTVFJDKCJPZmYiKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBhcyA9IHZhbHVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHBTdHJlYW0gPSAoKENQREZfRGljdGlvbmFyeSopcHN1YiktPkdldFN0cmVhbShhcyk7DQorICAgIH0NCisgICAgcmV0dXJuIHBTdHJlYW07DQorfQ0KK0NQREZfRm9ybSogQ1BERl9Bbm5vdDo6R2V0QVBGb3JtKGNvbnN0IENQREZfUGFnZSogcFBhZ2UsIEFwcGVhcmFuY2VNb2RlIG1vZGUpDQorew0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IEZQREZET0NfR2V0QW5ub3RBUChtX3BBbm5vdERpY3QsIG1vZGUpOw0KKyAgICBpZiAocFN0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0Zvcm0qIHBGb3JtOw0KKyAgICBpZiAobV9BUE1hcC5Mb29rdXAocFN0cmVhbSwgKHZvaWQqJilwRm9ybSkpIHsNCisgICAgICAgIHJldHVybiBwRm9ybTsNCisgICAgfQ0KKyAgICBwRm9ybSA9IEZYX05FVyBDUERGX0Zvcm0obV9wTGlzdC0+bV9wRG9jdW1lbnQsIHBQYWdlLT5tX3BSZXNvdXJjZXMsIHBTdHJlYW0pOw0KKyAgICBpZiAocEZvcm0gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcEZvcm0tPlBhcnNlQ29udGVudChOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgICAgbV9BUE1hcC5TZXRBdChwU3RyZWFtLCBwRm9ybSk7DQorICAgIHJldHVybiBwRm9ybTsNCit9DQorc3RhdGljIENQREZfRm9ybSogRlBERkRPQ19Bbm5vdF9HZXRNYXRyaXgoY29uc3QgQ1BERl9QYWdlKiBwUGFnZSwgQ1BERl9Bbm5vdCogcEFubm90LCBDUERGX0Fubm90OjpBcHBlYXJhbmNlTW9kZSBtb2RlLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVXNlcjJEZXZpY2UsIENGWF9NYXRyaXggJm1hdHJpeCkNCit7DQorICAgIENQREZfRm9ybSogcEZvcm0gPSBwQW5ub3QtPkdldEFQRm9ybShwUGFnZSwgbW9kZSk7DQorICAgIGlmICghcEZvcm0pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGWF9GbG9hdFJlY3QgZm9ybV9iYm94ID0gcEZvcm0tPm1fcEZvcm1EaWN0LT5HZXRSZWN0KEZYX0JTVFJDKCJCQm94IikpOw0KKyAgICBDRlhfTWF0cml4IGZvcm1fbWF0cml4ID0gcEZvcm0tPm1fcEZvcm1EaWN0LT5HZXRNYXRyaXgoRlhfQlNUUkMoIk1hdHJpeCIpKTsNCisgICAgZm9ybV9tYXRyaXguVHJhbnNmb3JtUmVjdChmb3JtX2Jib3gpOw0KKyAgICBDUERGX1JlY3QgYXJlY3Q7DQorICAgIHBBbm5vdC0+R2V0UmVjdChhcmVjdCk7DQorICAgIG1hdHJpeC5NYXRjaFJlY3QoYXJlY3QsIGZvcm1fYmJveCk7DQorICAgIG1hdHJpeC5Db25jYXQoKnBVc2VyMkRldmljZSk7DQorICAgIHJldHVybiBwRm9ybTsNCit9DQorRlhfQk9PTCBDUERGX0Fubm90OjpEcmF3QXBwZWFyYW5jZShjb25zdCBDUERGX1BhZ2UqIHBQYWdlLCBDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVXNlcjJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBlYXJhbmNlTW9kZSBtb2RlLCBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zKQ0KK3sNCisgICAgQ0ZYX01hdHJpeCBtYXRyaXg7DQorICAgIENQREZfRm9ybSogcEZvcm0gPSBGUERGRE9DX0Fubm90X0dldE1hdHJpeChwUGFnZSwgdGhpcywgbW9kZSwgcFVzZXIyRGV2aWNlLCBtYXRyaXgpOw0KKyAgICBpZiAoIXBGb3JtKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9SZW5kZXJDb250ZXh0IGNvbnRleHQ7DQorICAgIGNvbnRleHQuQ3JlYXRlKChDUERGX1BhZ2UqKXBQYWdlKTsNCisgICAgY29udGV4dC5EcmF3T2JqZWN0TGlzdChwRGV2aWNlLCBwRm9ybSwgJm1hdHJpeCwgcE9wdGlvbnMpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0Fubm90OjpEcmF3SW5Db250ZXh0KGNvbnN0IENQREZfUGFnZSogcFBhZ2UsIGNvbnN0IENQREZfUmVuZGVyQ29udGV4dCogcENvbnRleHQsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBVc2VyMkRldmljZSwgQXBwZWFyYW5jZU1vZGUgbW9kZSkNCit7DQorICAgIENGWF9NYXRyaXggbWF0cml4Ow0KKyAgICBDUERGX0Zvcm0qIHBGb3JtID0gRlBERkRPQ19Bbm5vdF9HZXRNYXRyaXgocFBhZ2UsIHRoaXMsIG1vZGUsIHBVc2VyMkRldmljZSwgbWF0cml4KTsNCisgICAgaWYgKCFwRm9ybSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgICgoQ1BERl9SZW5kZXJDb250ZXh0KilwQ29udGV4dCktPkFwcGVuZE9iamVjdExpc3QocEZvcm0sICZtYXRyaXgpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ1BERl9QYWdlT2JqZWN0KiBDUERGX0Fubm90OjpHZXRCb3JkZXIoRlhfQk9PTCBiUHJpbnQsIGNvbnN0IENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMpDQorew0KKyAgICBpZiAoR2V0U3ViVHlwZSgpID09ICJQb3B1cCIpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGFubm90X2ZsYWdzID0gR2V0RmxhZ3MoKTsNCisgICAgaWYgKGFubm90X2ZsYWdzICYgQU5OT1RGTEFHX0hJRERFTikgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhfQk9PTCBiUHJpbnRpbmcgPSBiUHJpbnQgfHwgKHBPcHRpb25zICYmIChwT3B0aW9ucy0+bV9GbGFncyAmIFJFTkRFUl9QUklOVFBSRVZJRVcpKTsNCisgICAgaWYgKGJQcmludGluZyAmJiAoYW5ub3RfZmxhZ3MgJiBBTk5PVEZMQUdfUFJJTlQpID09IDApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmICghYlByaW50aW5nICYmIChhbm5vdF9mbGFncyAmIEFOTk9URkxBR19OT1ZJRVcpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBCUyA9IG1fcEFubm90RGljdC0+R2V0RGljdCgiQlMiKTsNCisgICAgY2hhciBzdHlsZV9jaGFyOw0KKyAgICBGWF9GTE9BVCB3aWR0aDsNCisgICAgQ1BERl9BcnJheSogcERhc2hBcnJheSA9IE5VTEw7DQorICAgIGlmIChwQlMgPT0gTlVMTCkgew0KKyAgICAgICAgQ1BERl9BcnJheSogcEJvcmRlckFycmF5ID0gbV9wQW5ub3REaWN0LT5HZXRBcnJheSgiQm9yZGVyIik7DQorICAgICAgICBzdHlsZV9jaGFyID0gJ1MnOw0KKyAgICAgICAgaWYgKHBCb3JkZXJBcnJheSkgew0KKyAgICAgICAgICAgIHdpZHRoID0gcEJvcmRlckFycmF5LT5HZXROdW1iZXIoMik7DQorICAgICAgICAgICAgaWYgKHBCb3JkZXJBcnJheS0+R2V0Q291bnQoKSA9PSA0KSB7DQorICAgICAgICAgICAgICAgIHBEYXNoQXJyYXkgPSBwQm9yZGVyQXJyYXktPkdldEFycmF5KDMpOw0KKyAgICAgICAgICAgICAgICBpZiAocERhc2hBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBzdHlsZV9jaGFyID0gJ0QnOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgd2lkdGggPSAxOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc3R5bGUgPSBwQlMtPkdldFN0cmluZygiUyIpOw0KKyAgICAgICAgcERhc2hBcnJheSA9IHBCUy0+R2V0QXJyYXkoIkQiKTsNCisgICAgICAgIHN0eWxlX2NoYXIgPSBzdHlsZVsxXTsNCisgICAgICAgIHdpZHRoID0gcEJTLT5HZXROdW1iZXIoIlciKTsNCisgICAgfQ0KKyAgICBpZiAod2lkdGggPD0gMCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcENvbG9yID0gbV9wQW5ub3REaWN0LT5HZXRBcnJheSgiQyIpOw0KKyAgICBGWF9EV09SRCBhcmdiID0gMHhmZjAwMDAwMDsNCisgICAgaWYgKHBDb2xvciAhPSBOVUxMKSB7DQorICAgICAgICBpbnQgUiA9IChGWF9JTlQzMikocENvbG9yLT5HZXROdW1iZXIoMCkgKiAyNTUpOw0KKyAgICAgICAgaW50IEcgPSAoRlhfSU5UMzIpKHBDb2xvci0+R2V0TnVtYmVyKDEpICogMjU1KTsNCisgICAgICAgIGludCBCID0gKEZYX0lOVDMyKShwQ29sb3ItPkdldE51bWJlcigyKSAqIDI1NSk7DQorICAgICAgICBhcmdiID0gQXJnYkVuY29kZSgweGZmLCBSLCBHLCBCKTsNCisgICAgfQ0KKyAgICBDUERGX1BhdGhPYmplY3QgKnBQYXRoT2JqZWN0ID0gRlhfTkVXIENQREZfUGF0aE9iamVjdCgpOw0KKyAgICBpZiAoIXBQYXRoT2JqZWN0KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0dyYXBoU3RhdGVEYXRhICpwR3JhcGhTdGF0ZSA9IHBQYXRoT2JqZWN0LT5tX0dyYXBoU3RhdGUuR2V0TW9kaWZ5KCk7DQorICAgIGlmICghcEdyYXBoU3RhdGUpIHsNCisgICAgICAgIHBQYXRoT2JqZWN0LT5SZWxlYXNlKCk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwR3JhcGhTdGF0ZS0+bV9MaW5lV2lkdGggPSB3aWR0aDsNCisgICAgQ1BERl9Db2xvclN0YXRlRGF0YSAqcENvbG9yRGF0YSA9IHBQYXRoT2JqZWN0LT5tX0NvbG9yU3RhdGUuR2V0TW9kaWZ5KCk7DQorICAgIGlmICghcENvbG9yRGF0YSkgew0KKyAgICAgICAgcFBhdGhPYmplY3QtPlJlbGVhc2UoKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBDb2xvckRhdGEtPm1fU3Ryb2tlUkdCID0gYXJnYjsNCisgICAgcFBhdGhPYmplY3QtPm1fYlN0cm9rZSA9IFRSVUU7DQorICAgIHBQYXRoT2JqZWN0LT5tX0ZpbGxUeXBlID0gMDsNCisgICAgaWYgKHN0eWxlX2NoYXIgPT0gJ0QnKSB7DQorICAgICAgICBpZiAocERhc2hBcnJheSkgew0KKyAgICAgICAgICAgIEZYX0RXT1JEIGRhc2hfY291bnQgPSBwRGFzaEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgICAgIGlmIChkYXNoX2NvdW50ICUgMikgew0KKyAgICAgICAgICAgICAgICBkYXNoX2NvdW50ICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwR3JhcGhTdGF0ZS0+bV9EYXNoQXJyYXkgPSBGWF9BbGxvYyhGWF9GTE9BVCwgZGFzaF9jb3VudCk7DQorICAgICAgICAgICAgaWYgKHBHcmFwaFN0YXRlLT5tX0Rhc2hBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHBQYXRoT2JqZWN0LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwR3JhcGhTdGF0ZS0+bV9EYXNoQ291bnQgPSBkYXNoX2NvdW50Ow0KKyAgICAgICAgICAgIEZYX0RXT1JEIGk7DQorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBEYXNoQXJyYXktPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgcEdyYXBoU3RhdGUtPm1fRGFzaEFycmF5W2ldID0gcERhc2hBcnJheS0+R2V0TnVtYmVyKGkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaSA8IGRhc2hfY291bnQpIHsNCisgICAgICAgICAgICAgICAgcEdyYXBoU3RhdGUtPm1fRGFzaEFycmF5W2ldID0gcEdyYXBoU3RhdGUtPm1fRGFzaEFycmF5W2kgLSAxXTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBHcmFwaFN0YXRlLT5tX0Rhc2hBcnJheSA9IEZYX0FsbG9jKEZYX0ZMT0FULCAyKTsNCisgICAgICAgICAgICBpZiAocEdyYXBoU3RhdGUtPm1fRGFzaEFycmF5ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgcFBhdGhPYmplY3QtPlJlbGVhc2UoKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBHcmFwaFN0YXRlLT5tX0Rhc2hDb3VudCA9IDI7DQorICAgICAgICAgICAgcEdyYXBoU3RhdGUtPm1fRGFzaEFycmF5WzBdID0gcEdyYXBoU3RhdGUtPm1fRGFzaEFycmF5WzFdID0gMyAqIDEuMGY7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0Ow0KKyAgICBHZXRSZWN0KHJlY3QpOw0KKyAgICB3aWR0aCAvPSAyOw0KKyAgICBDUERGX1BhdGhEYXRhICpwUGF0aERhdGEgPSBwUGF0aE9iamVjdC0+bV9QYXRoLkdldE1vZGlmeSgpOw0KKyAgICBpZiAocFBhdGhEYXRhKSB7DQorICAgICAgICBwUGF0aERhdGEtPkFwcGVuZFJlY3QocmVjdC5sZWZ0ICsgd2lkdGgsIHJlY3QuYm90dG9tICsgd2lkdGgsIHJlY3QucmlnaHQgLSB3aWR0aCwgcmVjdC50b3AgLSB3aWR0aCk7DQorICAgIH0NCisgICAgcFBhdGhPYmplY3QtPkNhbGNCb3VuZGluZ0JveCgpOw0KKyAgICByZXR1cm4gcFBhdGhPYmplY3Q7DQorfQ0KK3ZvaWQgQ1BERl9Bbm5vdDo6RHJhd0JvcmRlcihDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVXNlcjJEZXZpY2UsIGNvbnN0IENQREZfUmVuZGVyT3B0aW9ucyogcE9wdGlvbnMpDQorew0KKyAgICBpZiAoR2V0U3ViVHlwZSgpID09ICJQb3B1cCIpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBhbm5vdF9mbGFncyA9IEdldEZsYWdzKCk7DQorICAgIGlmIChhbm5vdF9mbGFncyAmIEFOTk9URkxBR19ISURERU4pIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJQcmludGluZyA9IHBEZXZpY2UtPkdldERldmljZUNsYXNzKCkgPT0gRlhEQ19QUklOVEVSIHx8IChwT3B0aW9ucyAmJiAocE9wdGlvbnMtPm1fRmxhZ3MgJiBSRU5ERVJfUFJJTlRQUkVWSUVXKSk7DQorICAgIGlmIChiUHJpbnRpbmcgJiYgKGFubm90X2ZsYWdzICYgQU5OT1RGTEFHX1BSSU5UKSA9PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKCFiUHJpbnRpbmcgJiYgKGFubm90X2ZsYWdzICYgQU5OT1RGTEFHX05PVklFVykpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBCUyA9IG1fcEFubm90RGljdC0+R2V0RGljdCgiQlMiKTsNCisgICAgY2hhciBzdHlsZV9jaGFyOw0KKyAgICBGWF9GTE9BVCB3aWR0aDsNCisgICAgQ1BERl9BcnJheSogcERhc2hBcnJheSA9IE5VTEw7DQorICAgIGlmIChwQlMgPT0gTlVMTCkgew0KKyAgICAgICAgQ1BERl9BcnJheSogcEJvcmRlckFycmF5ID0gbV9wQW5ub3REaWN0LT5HZXRBcnJheSgiQm9yZGVyIik7DQorICAgICAgICBzdHlsZV9jaGFyID0gJ1MnOw0KKyAgICAgICAgaWYgKHBCb3JkZXJBcnJheSkgew0KKyAgICAgICAgICAgIHdpZHRoID0gcEJvcmRlckFycmF5LT5HZXROdW1iZXIoMik7DQorICAgICAgICAgICAgaWYgKHBCb3JkZXJBcnJheS0+R2V0Q291bnQoKSA9PSA0KSB7DQorICAgICAgICAgICAgICAgIHBEYXNoQXJyYXkgPSBwQm9yZGVyQXJyYXktPkdldEFycmF5KDMpOw0KKyAgICAgICAgICAgICAgICBpZiAocERhc2hBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW50IG5MZW4gPSBwRGFzaEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgICAgICAgICBpbnQgaSA9IDA7DQorICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgbkxlbjsgKytpKSB7DQorICAgICAgICAgICAgICAgICAgICBDUERGX09iamVjdCpwT2JqID0gcERhc2hBcnJheS0+R2V0RWxlbWVudFZhbHVlKGkpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBPYmogJiYgcE9iai0+R2V0SW50ZWdlcigpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGkgPT0gbkxlbikgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHN0eWxlX2NoYXIgPSAnRCc7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB3aWR0aCA9IDE7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdHlsZSA9IHBCUy0+R2V0U3RyaW5nKCJTIik7DQorICAgICAgICBwRGFzaEFycmF5ID0gcEJTLT5HZXRBcnJheSgiRCIpOw0KKyAgICAgICAgc3R5bGVfY2hhciA9IHN0eWxlWzFdOw0KKyAgICAgICAgd2lkdGggPSBwQlMtPkdldE51bWJlcigiVyIpOw0KKyAgICB9DQorICAgIGlmICh3aWR0aCA8PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcENvbG9yID0gbV9wQW5ub3REaWN0LT5HZXRBcnJheSgiQyIpOw0KKyAgICBGWF9EV09SRCBhcmdiID0gMHhmZjAwMDAwMDsNCisgICAgaWYgKHBDb2xvciAhPSBOVUxMKSB7DQorICAgICAgICBpbnQgUiA9IChGWF9JTlQzMikocENvbG9yLT5HZXROdW1iZXIoMCkgKiAyNTUpOw0KKyAgICAgICAgaW50IEcgPSAoRlhfSU5UMzIpKHBDb2xvci0+R2V0TnVtYmVyKDEpICogMjU1KTsNCisgICAgICAgIGludCBCID0gKEZYX0lOVDMyKShwQ29sb3ItPkdldE51bWJlcigyKSAqIDI1NSk7DQorICAgICAgICBhcmdiID0gQXJnYkVuY29kZSgweGZmLCBSLCBHLCBCKTsNCisgICAgfQ0KKyAgICBDUERGX0dyYXBoU3RhdGVEYXRhIGdyYXBoX3N0YXRlOw0KKyAgICBncmFwaF9zdGF0ZS5tX0xpbmVXaWR0aCA9IHdpZHRoOw0KKyAgICBpZiAoc3R5bGVfY2hhciA9PSAnRCcpIHsNCisgICAgICAgIGlmIChwRGFzaEFycmF5KSB7DQorICAgICAgICAgICAgRlhfRFdPUkQgZGFzaF9jb3VudCA9IHBEYXNoQXJyYXktPkdldENvdW50KCk7DQorICAgICAgICAgICAgaWYgKGRhc2hfY291bnQgJSAyKSB7DQorICAgICAgICAgICAgICAgIGRhc2hfY291bnQgKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGdyYXBoX3N0YXRlLm1fRGFzaEFycmF5ID0gRlhfQWxsb2MoRlhfRkxPQVQsIGRhc2hfY291bnQpOw0KKyAgICAgICAgICAgIGlmIChncmFwaF9zdGF0ZS5tX0Rhc2hBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGdyYXBoX3N0YXRlLm1fRGFzaENvdW50ID0gZGFzaF9jb3VudDsNCisgICAgICAgICAgICBGWF9EV09SRCBpOw0KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwRGFzaEFycmF5LT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgICAgIGdyYXBoX3N0YXRlLm1fRGFzaEFycmF5W2ldID0gcERhc2hBcnJheS0+R2V0TnVtYmVyKGkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaSA8IGRhc2hfY291bnQpIHsNCisgICAgICAgICAgICAgICAgZ3JhcGhfc3RhdGUubV9EYXNoQXJyYXlbaV0gPSBncmFwaF9zdGF0ZS5tX0Rhc2hBcnJheVtpIC0gMV07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBncmFwaF9zdGF0ZS5tX0Rhc2hBcnJheSA9IEZYX0FsbG9jKEZYX0ZMT0FULCAyKTsNCisgICAgICAgICAgICBpZiAoZ3JhcGhfc3RhdGUubV9EYXNoQXJyYXkgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBncmFwaF9zdGF0ZS5tX0Rhc2hDb3VudCA9IDI7DQorICAgICAgICAgICAgZ3JhcGhfc3RhdGUubV9EYXNoQXJyYXlbMF0gPSBncmFwaF9zdGF0ZS5tX0Rhc2hBcnJheVsxXSA9IDMgKiAxLjBmOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENGWF9GbG9hdFJlY3QgcmVjdDsNCisgICAgR2V0UmVjdChyZWN0KTsNCisgICAgQ1BERl9QYXRoRGF0YSBwYXRoOw0KKyAgICB3aWR0aCAvPSAyOw0KKyAgICBwYXRoLkFwcGVuZFJlY3QocmVjdC5sZWZ0ICsgd2lkdGgsIHJlY3QuYm90dG9tICsgd2lkdGgsIHJlY3QucmlnaHQgLSB3aWR0aCwgcmVjdC50b3AgLSB3aWR0aCk7DQorICAgIGludCBmaWxsX3R5cGUgPSAwOw0KKyAgICBpZiAocE9wdGlvbnMgJiYgKHBPcHRpb25zLT5tX0ZsYWdzICYgUkVOREVSX05PUEFUSFNNT09USCkpIHsNCisgICAgICAgIGZpbGxfdHlwZSB8PSBGWEZJTExfTk9QQVRIU01PT1RIOw0KKyAgICB9DQorICAgIHBEZXZpY2UtPkRyYXdQYXRoKCZwYXRoLCBwVXNlcjJEZXZpY2UsICZncmFwaF9zdGF0ZSwgYXJnYiwgYXJnYiwgZmlsbF90eXBlKTsNCit9DQoraW50IENQREZfQW5ub3Q6OkNvdW50SVJUTm90ZXMoKQ0KK3sNCisgICAgaW50IGNvdW50ID0gMDsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3BMaXN0LT5Db3VudCgpOyBpICsrKSB7DQorICAgICAgICBDUERGX0Fubm90KiBwQW5ub3QgPSBtX3BMaXN0LT5HZXRBdChpKTsNCisgICAgICAgIGlmIChwQW5ub3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwSVJUID0gcEFubm90LT5tX3BBbm5vdERpY3QtPkdldERpY3QoIklSVCIpOw0KKyAgICAgICAgaWYgKHBJUlQgIT0gbV9wQW5ub3REaWN0KSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBjb3VudCArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gY291bnQ7DQorfQ0KK0NQREZfQW5ub3QqIENQREZfQW5ub3Q6OkdldElSVE5vdGUoaW50IGluZGV4KQ0KK3sNCisgICAgaW50IGNvdW50ID0gMDsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3BMaXN0LT5Db3VudCgpOyBpICsrKSB7DQorICAgICAgICBDUERGX0Fubm90KiBwQW5ub3QgPSBtX3BMaXN0LT5HZXRBdChpKTsNCisgICAgICAgIGlmIChwQW5ub3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwSVJUID0gcEFubm90LT5tX3BBbm5vdERpY3QtPkdldERpY3QoIklSVCIpOw0KKyAgICAgICAgaWYgKHBJUlQgIT0gbV9wQW5ub3REaWN0KSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoY291bnQgPT0gaW5kZXgpIHsNCisgICAgICAgICAgICByZXR1cm4gcEFubm90Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgY291bnQgKys7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX2FwLmNwcCBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX2FwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWZlNzE4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmRvYy9kb2NfYXAuY3BwCkBAIC0wLDAgKzEsODA4IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcGRmZG9jL2ZwZGZfZG9jLmgiDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmRvYy9mcGRmX3Z0LmgiDQorI2luY2x1ZGUgInBkZl92dC5oIg0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZkb2MvZnBkZl9hcC5oIg0KK0ZYX0JPT0wgRlBERl9HZW5lcmF0ZUFQKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfRGljdGlvbmFyeSogcEFubm90RGljdCkNCit7DQorICAgIGlmIChwQW5ub3REaWN0LT5HZXRDb25zdFN0cmluZygiU3VidHlwZSIpICE9IEZYX0JTVFJDKCJXaWRnZXQiKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGZpZWxkX3R5cGUgPSBGUERGX0dldEZpZWxkQXR0cihwQW5ub3REaWN0LCAiRlQiKS0+R2V0U3RyaW5nKCk7DQorICAgIEZYX0RXT1JEIGZsYWdzID0gRlBERl9HZXRGaWVsZEF0dHIocEFubm90RGljdCwgIkZmIiktPkdldEludGVnZXIoKTsNCisgICAgaWYgKGZpZWxkX3R5cGUgPT0gIlR4Iikgew0KKyAgICAgICAgcmV0dXJuIENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVUZXh0RmllbGRBUChwRG9jLCBwQW5ub3REaWN0KTsNCisgICAgfSBlbHNlIGlmIChmaWVsZF90eXBlID09ICJDaCIpIHsNCisgICAgICAgIGlmIChmbGFncyAmICgxIDw8IDE3KSkgew0KKyAgICAgICAgICAgIHJldHVybiBDUFZUX0dlbmVyYXRlQVA6OkdlbmVyYXRlQ29tYm9Cb3hBUChwRG9jLCBwQW5ub3REaWN0KTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVMaXN0Qm94QVAocERvYywgcEFubm90RGljdCk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAoZmllbGRfdHlwZSA9PSAiQnRuIikgew0KKyAgICAgICAgaWYgKCEoZmxhZ3MgJiAoMSA8PCAxNikpKSB7DQorICAgICAgICAgICAgaWYgKCFwQW5ub3REaWN0LT5LZXlFeGlzdCgiQVMiKSkgew0KKyAgICAgICAgICAgICAgICBpZiAoQ1BERl9EaWN0aW9uYXJ5KiBwUGFyZW50RGljdCA9IHBBbm5vdERpY3QtPkdldERpY3QoIlBhcmVudCIpKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocFBhcmVudERpY3QtPktleUV4aXN0KCJBUyIpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcEFubm90RGljdC0+U2V0QXRTdHJpbmcoIkFTIiwgcFBhcmVudERpY3QtPkdldFN0cmluZygiQVMiKSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitjbGFzcyBDUFZUX0ZvbnRNYXAgOiBwdWJsaWMgSVBWVF9Gb250TWFwDQorew0KK3B1YmxpYzoNCisgICAgQ1BWVF9Gb250TWFwKENQREZfRG9jdW1lbnQgKiBwRG9jLCBDUERGX0RpY3Rpb25hcnkgKiBwUmVzRGljdCwgQ1BERl9Gb250ICogcERlZkZvbnQsDQorICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyAmIHNEZWZGb250QWxpYXMpOw0KKyAgICB2aXJ0dWFsIH5DUFZUX0ZvbnRNYXAoKTsNCisgICAgQ1BERl9Gb250KgkJCQkJCUdldFBERkZvbnQoRlhfSU5UMzIgbkZvbnRJbmRleCk7DQorICAgIENGWF9CeXRlU3RyaW5nCQkJCQlHZXRQREZGb250QWxpYXMoRlhfSU5UMzIgbkZvbnRJbmRleCk7DQorICAgIHN0YXRpYyB2b2lkCQkJCQkJR2V0QW5ub3RTeXNQREZGb250KENQREZfRG9jdW1lbnQgKiBwRG9jLCBDUERGX0RpY3Rpb25hcnkgKiBwUmVzRGljdCwNCisgICAgICAgICAgICBDUERGX0ZvbnQgKiAmIHBTeXNGb250LCBDRlhfQnl0ZVN0cmluZyAmIHNTeXNGb250QWxpYXMpOw0KK3ByaXZhdGU6DQorICAgIENQREZfRG9jdW1lbnQqCQkJCQltX3BEb2N1bWVudDsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJCQltX3BSZXNEaWN0Ow0KKyAgICBDUERGX0ZvbnQqCQkJCQkJbV9wRGVmRm9udDsNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQkJCW1fc0RlZkZvbnRBbGlhczsNCisgICAgQ1BERl9Gb250KgkJCQkJCW1fcFN5c0ZvbnQ7DQorICAgIENGWF9CeXRlU3RyaW5nCQkJCQltX3NTeXNGb250QWxpYXM7DQorfTsNCitDUFZUX0ZvbnRNYXA6OkNQVlRfRm9udE1hcChDUERGX0RvY3VtZW50ICogcERvYywgQ1BERl9EaWN0aW9uYXJ5ICogcFJlc0RpY3QsIENQREZfRm9udCAqIHBEZWZGb250LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9CeXRlU3RyaW5nICYgc0RlZkZvbnRBbGlhcykgOg0KKyAgICBtX3BEb2N1bWVudChwRG9jKSwNCisgICAgbV9wUmVzRGljdChwUmVzRGljdCksDQorICAgIG1fcERlZkZvbnQocERlZkZvbnQpLA0KKyAgICBtX3NEZWZGb250QWxpYXMoc0RlZkZvbnRBbGlhcyksDQorICAgIG1fcFN5c0ZvbnQoTlVMTCksDQorICAgIG1fc1N5c0ZvbnRBbGlhcygpDQorew0KK30NCitDUFZUX0ZvbnRNYXA6On5DUFZUX0ZvbnRNYXAoKQ0KK3sNCit9DQorZXh0ZXJuIENQREZfRm9udCoJCUFkZE5hdGl2ZUludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiYgcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpOw0KK3ZvaWQgQ1BWVF9Gb250TWFwOjpHZXRBbm5vdFN5c1BERkZvbnQoQ1BERl9Eb2N1bWVudCAqIHBEb2MsIENQREZfRGljdGlvbmFyeSAqIHBSZXNEaWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9Gb250ICogJiBwU3lzRm9udCwgQ0ZYX0J5dGVTdHJpbmcgJiBzU3lzRm9udEFsaWFzKQ0KK3sNCisgICAgaWYgKHBEb2MgJiYgcFJlc0RpY3QpIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIHNGb250QWxpYXM7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCA9IHBEb2MtPkdldFJvb3QoKS0+R2V0RGljdCgiQWNyb0Zvcm0iKTsNCisgICAgICAgIGlmIChDUERGX0ZvbnQgKiBwUERGRm9udCA9IEFkZE5hdGl2ZUludGVyRm9ybUZvbnQocEZvcm1EaWN0LCBwRG9jLCBzU3lzRm9udEFsaWFzKSkgew0KKyAgICAgICAgICAgIGlmIChDUERGX0RpY3Rpb25hcnkgKiBwRm9udExpc3QgPSBwUmVzRGljdC0+R2V0RGljdCgiRm9udCIpKSB7DQorICAgICAgICAgICAgICAgIGlmICghcEZvbnRMaXN0LT5LZXlFeGlzdChzU3lzRm9udEFsaWFzKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcEZvbnRMaXN0LT5TZXRBdFJlZmVyZW5jZShzU3lzRm9udEFsaWFzLCBwRG9jLCBwUERGRm9udC0+R2V0Rm9udERpY3QoKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFN5c0ZvbnQgPSBwUERGRm9udDsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDUERGX0ZvbnQqIENQVlRfRm9udE1hcDo6R2V0UERGRm9udChGWF9JTlQzMiBuRm9udEluZGV4KQ0KK3sNCisgICAgc3dpdGNoIChuRm9udEluZGV4KSB7DQorICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgcmV0dXJuIG1fcERlZkZvbnQ7DQorICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgaWYgKCFtX3BTeXNGb250KSB7DQorICAgICAgICAgICAgICAgIEdldEFubm90U3lzUERGRm9udChtX3BEb2N1bWVudCwgbV9wUmVzRGljdCwgbV9wU3lzRm9udCwgbV9zU3lzRm9udEFsaWFzKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIG1fcFN5c0ZvbnQ7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQVlRfRm9udE1hcDo6R2V0UERGRm9udEFsaWFzKEZYX0lOVDMyIG5Gb250SW5kZXgpDQorew0KKyAgICBzd2l0Y2ggKG5Gb250SW5kZXgpIHsNCisgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICByZXR1cm4gbV9zRGVmRm9udEFsaWFzOw0KKyAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgIGlmICghbV9wU3lzRm9udCkgew0KKyAgICAgICAgICAgICAgICBHZXRBbm5vdFN5c1BERkZvbnQobV9wRG9jdW1lbnQsIG1fcFJlc0RpY3QsIG1fcFN5c0ZvbnQsIG1fc1N5c0ZvbnRBbGlhcyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBtX3NTeXNGb250QWxpYXM7DQorICAgIH0NCisgICAgcmV0dXJuICIiOw0KK30NCitDUFZUX1Byb3ZpZGVyOjpDUFZUX1Byb3ZpZGVyKElQVlRfRm9udE1hcCAqIHBGb250TWFwKSA6IG1fcEZvbnRNYXAocEZvbnRNYXApDQorew0KKyAgICBBU1NFUlQgKG1fcEZvbnRNYXAgIT0gTlVMTCk7DQorfQ0KK0NQVlRfUHJvdmlkZXI6On5DUFZUX1Byb3ZpZGVyKCkNCit7DQorfQ0KK0ZYX0lOVDMyIENQVlRfUHJvdmlkZXI6OkdldENoYXJXaWR0aChGWF9JTlQzMiBuRm9udEluZGV4LCBGWF9XT1JEIHdvcmQsIEZYX0lOVDMyIG5Xb3JkU3R5bGUpDQorew0KKyAgICBpZiAoQ1BERl9Gb250KiBwUERGRm9udCA9IG1fcEZvbnRNYXAtPkdldFBERkZvbnQobkZvbnRJbmRleCkpIHsNCisgICAgICAgIEZYX0RXT1JEIGNoYXJjb2RlID0gcFBERkZvbnQtPkNoYXJDb2RlRnJvbVVuaWNvZGUod29yZCk7DQorICAgICAgICBpZiAoY2hhcmNvZGUgIT0gLTEpIHsNCisgICAgICAgICAgICByZXR1cm4gcFBERkZvbnQtPkdldENoYXJXaWR0aEYoY2hhcmNvZGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitGWF9JTlQzMiBDUFZUX1Byb3ZpZGVyOjpHZXRUeXBlQXNjZW50KEZYX0lOVDMyIG5Gb250SW5kZXgpDQorew0KKyAgICBpZiAoQ1BERl9Gb250KiBwUERGRm9udCA9IG1fcEZvbnRNYXAtPkdldFBERkZvbnQobkZvbnRJbmRleCkpIHsNCisgICAgICAgIHJldHVybiBwUERGRm9udC0+R2V0VHlwZUFzY2VudCgpOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitGWF9JTlQzMiBDUFZUX1Byb3ZpZGVyOjpHZXRUeXBlRGVzY2VudChGWF9JTlQzMiBuRm9udEluZGV4KQ0KK3sNCisgICAgaWYgKENQREZfRm9udCogcFBERkZvbnQgPSBtX3BGb250TWFwLT5HZXRQREZGb250KG5Gb250SW5kZXgpKSB7DQorICAgICAgICByZXR1cm4gcFBERkZvbnQtPkdldFR5cGVEZXNjZW50KCk7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX0lOVDMyIENQVlRfUHJvdmlkZXI6OkdldFdvcmRGb250SW5kZXgoRlhfV09SRCB3b3JkLCBGWF9JTlQzMiBjaGFyc2V0LCBGWF9JTlQzMiBuRm9udEluZGV4KQ0KK3sNCisgICAgaWYgKENQREZfRm9udCogcERlZkZvbnQgPSBtX3BGb250TWFwLT5HZXRQREZGb250KDApKSB7DQorICAgICAgICBpZiAocERlZkZvbnQtPkNoYXJDb2RlRnJvbVVuaWNvZGUod29yZCkgIT0gLTEpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoQ1BERl9Gb250KiBwU3lzRm9udCA9IG1fcEZvbnRNYXAtPkdldFBERkZvbnQoMSkpDQorICAgICAgICBpZiAocFN5c0ZvbnQtPkNoYXJDb2RlRnJvbVVuaWNvZGUod29yZCkgIT0gLTEpIHsNCisgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgIH0NCisgICAgcmV0dXJuIC0xOw0KK30NCitGWF9CT09MIENQVlRfUHJvdmlkZXI6OklzTGF0aW5Xb3JkKEZYX1dPUkQgd29yZCkNCit7DQorICAgIGlmICgod29yZCA+PSAweDYxICYmIHdvcmQgPD0gMHg3QSkgfHwgKHdvcmQgPj0gMHg0MSAmJiB3b3JkIDw9IDB4NUEpIHx8IHdvcmQgPT0gMHgyRCB8fCB3b3JkID09IDB4MjcpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfSU5UMzIgQ1BWVF9Qcm92aWRlcjo6R2V0RGVmYXVsdEZvbnRJbmRleCgpDQorew0KKyAgICByZXR1cm4gMDsNCit9DQorc3RhdGljIENGWF9CeXRlU3RyaW5nIEdldFBERldvcmRTdHJpbmcoSVBWVF9Gb250TWFwICogcEZvbnRNYXAsIEZYX0lOVDMyIG5Gb250SW5kZXgsIEZYX1dPUkQgV29yZCwgRlhfV09SRCBTdWJXb3JkKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgc1dvcmQ7DQorICAgIGlmIChTdWJXb3JkID4gMCkgew0KKyAgICAgICAgc1dvcmQuRm9ybWF0KCIlYyIsIFN1YldvcmQpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKHBGb250TWFwKSB7DQorICAgICAgICAgICAgaWYgKENQREZfRm9udCAqIHBQREZGb250ID0gcEZvbnRNYXAtPkdldFBERkZvbnQobkZvbnRJbmRleCkpIHsNCisgICAgICAgICAgICAgICAgaWYgKHBQREZGb250LT5HZXRCYXNlRm9udCgpLkNvbXBhcmUoIlN5bWJvbCIpID09IDAgfHwgcFBERkZvbnQtPkdldEJhc2VGb250KCkuQ29tcGFyZSgiWmFwZkRpbmdiYXRzIikgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgc1dvcmQuRm9ybWF0KCIlYyIsIFdvcmQpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZHdDaGFyQ29kZSA9IHBQREZGb250LT5DaGFyQ29kZUZyb21Vbmljb2RlKFdvcmQpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGR3Q2hhckNvZGUgIT0gLTEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwUERGRm9udC0+QXBwZW5kQ2hhcihzV29yZCwgZHdDaGFyQ29kZSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHNXb3JkOw0KK30NCitzdGF0aWMgQ0ZYX0J5dGVTdHJpbmcgR2V0V29yZFJlbmRlclN0cmluZyhjb25zdCBDRlhfQnl0ZVN0cmluZyAmIHN0cldvcmRzKQ0KK3sNCisgICAgaWYgKHN0cldvcmRzLkdldExlbmd0aCgpID4gMCkgew0KKyAgICAgICAgcmV0dXJuIFBERl9FbmNvZGVTdHJpbmcoc3RyV29yZHMpICsgIiBUalxuIjsNCisgICAgfQ0KKyAgICByZXR1cm4gIiI7DQorfQ0KK3N0YXRpYyBDRlhfQnl0ZVN0cmluZyBHZXRGb250U2V0U3RyaW5nKElQVlRfRm9udE1hcCAqIHBGb250TWFwLCBGWF9JTlQzMiBuRm9udEluZGV4LCBGWF9GTE9BVCBmRm9udFNpemUpDQorew0KKyAgICBDRlhfQnl0ZVRleHRCdWYgc1JldDsNCisgICAgaWYgKHBGb250TWFwKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBzRm9udEFsaWFzID0gcEZvbnRNYXAtPkdldFBERkZvbnRBbGlhcyhuRm9udEluZGV4KTsNCisgICAgICAgIGlmIChzRm9udEFsaWFzLkdldExlbmd0aCgpID4gMCAmJiBmRm9udFNpemUgPiAwICkgew0KKyAgICAgICAgICAgIHNSZXQgPDwgIi8iIDw8IHNGb250QWxpYXMgPDwgIiAiIDw8IGZGb250U2l6ZSA8PCAiIFRmXG4iOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBzUmV0LkdldEJ5dGVTdHJpbmcoKTsNCit9DQorc3RhdGljIENQVlRfQ29sb3IgUGFyc2VDb2xvcihjb25zdCBDRlhfQnl0ZVN0cmluZyAmIHN0cikNCit7DQorICAgIENQREZfU2ltcGxlUGFyc2VyIHN5bnRheChzdHIpOw0KKyAgICBzeW50YXguU2V0UG9zKDApOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbSgiZyIsIDEpKSB7DQorICAgICAgICByZXR1cm4gQ1BWVF9Db2xvcihDVF9HUkFZLCBGWF9hdG9mKHN5bnRheC5HZXRXb3JkKCkpKTsNCisgICAgfQ0KKyAgICBzeW50YXguU2V0UG9zKDApOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbSgicmciLCAzKSkgew0KKyAgICAgICAgRlhfRkxPQVQgZjEgPSBGWF9hdG9mKHN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICAgICAgRlhfRkxPQVQgZjIgPSBGWF9hdG9mKHN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICAgICAgRlhfRkxPQVQgZjMgPSBGWF9hdG9mKHN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICAgICAgcmV0dXJuIENQVlRfQ29sb3IoQ1RfUkdCLCBmMSwgZjIsIGYzKTsNCisgICAgfQ0KKyAgICBzeW50YXguU2V0UG9zKDApOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbSgiayIsIDQpKSB7DQorICAgICAgICBGWF9GTE9BVCBmMSA9IEZYX2F0b2Yoc3ludGF4LkdldFdvcmQoKSk7DQorICAgICAgICBGWF9GTE9BVCBmMiA9IEZYX2F0b2Yoc3ludGF4LkdldFdvcmQoKSk7DQorICAgICAgICBGWF9GTE9BVCBmMyA9IEZYX2F0b2Yoc3ludGF4LkdldFdvcmQoKSk7DQorICAgICAgICBGWF9GTE9BVCBmNCA9IEZYX2F0b2Yoc3ludGF4LkdldFdvcmQoKSk7DQorICAgICAgICByZXR1cm4gQ1BWVF9Db2xvcihDVF9DTVlLLCBmMSwgZjIsIGYzLCBmNCk7DQorICAgIH0NCisgICAgcmV0dXJuIENQVlRfQ29sb3IoQ1RfVFJBTlNQQVJFTlQpOw0KK30NCitzdGF0aWMgQ1BWVF9Db2xvciBQYXJzZUNvbG9yKGNvbnN0IENQREZfQXJyYXkgJiBhcnJheSkNCit7DQorICAgIENQVlRfQ29sb3IgcnQ7DQorICAgIHN3aXRjaCAoYXJyYXkuR2V0Q291bnQoKSkgew0KKyAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgIHJ0ID0gQ1BWVF9Db2xvcihDVF9HUkFZLCBhcnJheS5HZXRGbG9hdCgwKSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDM6DQorICAgICAgICAgICAgcnQgPSBDUFZUX0NvbG9yKENUX1JHQiwgYXJyYXkuR2V0RmxvYXQoMCksIGFycmF5LkdldEZsb2F0KDEpLCBhcnJheS5HZXRGbG9hdCgyKSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDQ6DQorICAgICAgICAgICAgcnQgPSBDUFZUX0NvbG9yKENUX0NNWUssIGFycmF5LkdldEZsb2F0KDApLCBhcnJheS5HZXRGbG9hdCgxKSwgYXJyYXkuR2V0RmxvYXQoMiksIGFycmF5LkdldEZsb2F0KDMpKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICByZXR1cm4gcnQ7DQorfQ0KK3N0YXRpYyBGWF9CT09MIEdlbmVyYXRlV2lkZ2V0QVAoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9EaWN0aW9uYXJ5KiBwQW5ub3REaWN0LCBjb25zdCBGWF9JTlQzMiAmIG5XaWRnZXRUeXBlKQ0KK3sNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QgPSBOVUxMOw0KKyAgICBpZiAoQ1BERl9EaWN0aW9uYXJ5ICogcFJvb3REaWN0ID0gcERvYy0+R2V0Um9vdCgpKSB7DQorICAgICAgICBwRm9ybURpY3QgPSBwUm9vdERpY3QtPkdldERpY3QoIkFjcm9Gb3JtIik7DQorICAgIH0NCisgICAgaWYgKCFwRm9ybURpY3QpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBEQSA9IEZQREZfR2V0RmllbGRBdHRyKHBBbm5vdERpY3QsICJEQSIpLT5HZXRTdHJpbmcoKTsNCisgICAgaWYgKERBLklzRW1wdHkoKSkgew0KKyAgICAgICAgREEgPSBwRm9ybURpY3QtPkdldFN0cmluZygiREEiKTsNCisgICAgfQ0KKyAgICBpZiAoREEuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9TaW1wbGVQYXJzZXIgc3ludGF4KERBKTsNCisgICAgc3ludGF4LkZpbmRUYWdQYXJhbSgiVGYiLCAyKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgc0ZvbnROYW1lID0gc3ludGF4LkdldFdvcmQoKTsNCisgICAgc0ZvbnROYW1lID0gUERGX05hbWVEZWNvZGUoc0ZvbnROYW1lKTsNCisgICAgaWYgKHNGb250TmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBmRm9udFNpemUgPSBGWF9hdG9mKHN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICBDUFZUX0NvbG9yIGNyVGV4dCA9IFBhcnNlQ29sb3IoREEpOw0KKyAgICBGWF9CT09MIGJVc2VGb3JtUmVzID0gRkFMU0U7DQorICAgIENQREZfRGljdGlvbmFyeSAqIHBGb250RGljdCA9IE5VTEw7DQorICAgIENQREZfRGljdGlvbmFyeSogcERSRGljdCA9IHBBbm5vdERpY3QtPkdldERpY3QoRlhfQlNUUkMoIkRSIikpOw0KKyAgICBpZiAocERSRGljdCA9PSBOVUxMKSB7DQorICAgICAgICBwRFJEaWN0ID0gcEZvcm1EaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJEUiIpKTsNCisgICAgICAgIGJVc2VGb3JtUmVzID0gVFJVRTsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkgKiBwRFJGb250RGljdCA9IE5VTEw7DQorICAgIGlmICgocERSRm9udERpY3QgPSBwRFJEaWN0LT5HZXREaWN0KCJGb250IikpKSB7DQorICAgICAgICBwRm9udERpY3QgPSBwRFJGb250RGljdC0+R2V0RGljdChzRm9udE5hbWUuTWlkKDEpKTsNCisgICAgICAgIGlmICghcEZvbnREaWN0ICYmICFiVXNlRm9ybVJlcykgew0KKyAgICAgICAgICAgIHBEUkRpY3QgPSBwRm9ybURpY3QtPkdldERpY3QoRlhfQlNUUkMoIkRSIikpOw0KKyAgICAgICAgICAgIHBEUkZvbnREaWN0ID0gcERSRGljdC0+R2V0RGljdCgiRm9udCIpOw0KKyAgICAgICAgICAgIGlmIChwRFJGb250RGljdCkgew0KKyAgICAgICAgICAgICAgICBwRm9udERpY3QgPSBwRFJGb250RGljdC0+R2V0RGljdChzRm9udE5hbWUuTWlkKDEpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCFwRFJGb250RGljdCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICghcEZvbnREaWN0KSB7DQorICAgICAgICBwRm9udERpY3QgPSBDUERGX0RpY3Rpb25hcnk6OkNyZWF0ZSgpOw0KKyAgICAgICAgaWYgKHBGb250RGljdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEZvbnREaWN0LT5TZXRBdE5hbWUoRlhfQlNUUkMoIlR5cGUiKSwgIkZvbnQiKTsNCisgICAgICAgIHBGb250RGljdC0+U2V0QXROYW1lKEZYX0JTVFJDKCJTdWJ0eXBlIiksICJUeXBlMSIpOw0KKyAgICAgICAgcEZvbnREaWN0LT5TZXRBdE5hbWUoRlhfQlNUUkMoIkJhc2VGb250IiksICJIZWx2ZXRpY2EiKTsNCisgICAgICAgIHBGb250RGljdC0+U2V0QXROYW1lKEZYX0JTVFJDKCJFbmNvZGluZyIpLCAiV2luQW5zaUVuY29kaW5nIik7DQorICAgICAgICBwRG9jLT5BZGRJbmRpcmVjdE9iamVjdChwRm9udERpY3QpOw0KKyAgICAgICAgcERSRm9udERpY3QtPlNldEF0UmVmZXJlbmNlKHNGb250TmFtZS5NaWQoMSksIHBEb2MsIHBGb250RGljdCk7DQorICAgIH0NCisgICAgQ1BERl9Gb250KiBwRGVmRm9udCA9IHBEb2MtPkxvYWRGb250KHBGb250RGljdCk7DQorICAgIGlmICghcERlZkZvbnQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDRlhfQ2hhck1hcCogcENoYXJNYXAgPSBwRGVmRm9udC0+R2V0Q2hhck1hcCgpOw0KKyAgICBDUERGX1JlY3QgcmNBbm5vdCA9IHBBbm5vdERpY3QtPkdldFJlY3QoIlJlY3QiKTsNCisgICAgRlhfSU5UMzIgblJvdGF0ZSA9IDA7DQorICAgIGlmIChDUERGX0RpY3Rpb25hcnkgKiBwTUtEaWN0ID0gcEFubm90RGljdC0+R2V0RGljdCgiTUsiKSkgew0KKyAgICAgICAgblJvdGF0ZSA9IHBNS0RpY3QtPkdldEludGVnZXIoIlIiKTsNCisgICAgfQ0KKyAgICBDUERGX1JlY3QgcmNCQm94Ow0KKyAgICBDUERGX01hdHJpeCBtYXRyaXg7DQorICAgIHN3aXRjaCAoblJvdGF0ZSAlIDM2MCkgew0KKyAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgIHJjQkJveCA9IENQREZfUmVjdCgwLCAwLCByY0Fubm90LnJpZ2h0IC0gcmNBbm5vdC5sZWZ0LCByY0Fubm90LnRvcCAtIHJjQW5ub3QuYm90dG9tKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgOTA6DQorICAgICAgICAgICAgbWF0cml4ID0gQ1BERl9NYXRyaXgoMCwgMSwgLTEsIDAsIHJjQW5ub3QucmlnaHQgLSByY0Fubm90LmxlZnQsIDApOw0KKyAgICAgICAgICAgIHJjQkJveCA9IENQREZfUmVjdCgwLCAwLCByY0Fubm90LnRvcCAtIHJjQW5ub3QuYm90dG9tLCByY0Fubm90LnJpZ2h0IC0gcmNBbm5vdC5sZWZ0KTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMTgwOg0KKyAgICAgICAgICAgIG1hdHJpeCA9IENQREZfTWF0cml4KC0xLCAwLCAwLCAtMSwgcmNBbm5vdC5yaWdodCAtIHJjQW5ub3QubGVmdCwgcmNBbm5vdC50b3AgLSByY0Fubm90LmJvdHRvbSk7DQorICAgICAgICAgICAgcmNCQm94ID0gQ1BERl9SZWN0KDAsIDAsIHJjQW5ub3QucmlnaHQgLSByY0Fubm90LmxlZnQsIHJjQW5ub3QudG9wIC0gcmNBbm5vdC5ib3R0b20pOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAyNzA6DQorICAgICAgICAgICAgbWF0cml4ID0gQ1BERl9NYXRyaXgoMCwgLTEsIDEsIDAsIDAsIHJjQW5ub3QudG9wIC0gcmNBbm5vdC5ib3R0b20pOw0KKyAgICAgICAgICAgIHJjQkJveCA9IENQREZfUmVjdCgwLCAwLCByY0Fubm90LnRvcCAtIHJjQW5ub3QuYm90dG9tLCByY0Fubm90LnJpZ2h0IC0gcmNBbm5vdC5sZWZ0KTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBuQm9yZGVyU3R5bGUgPSBQQlNfU09MSUQ7DQorICAgIEZYX0ZMT0FUIGZCb3JkZXJXaWR0aCA9IDE7DQorICAgIENQVlRfRGFzaCBkc0JvcmRlcigzLCAwLCAwKTsNCisgICAgQ1BWVF9Db2xvciBjckxlZnRUb3AsIGNyUmlnaHRCb3R0b207DQorICAgIGlmIChDUERGX0RpY3Rpb25hcnkgKiBwQlNEaWN0ID0gcEFubm90RGljdC0+R2V0RGljdCgiQlMiKSkgew0KKyAgICAgICAgaWYgKHBCU0RpY3QtPktleUV4aXN0KCJXIikpIHsNCisgICAgICAgICAgICBmQm9yZGVyV2lkdGggPSBwQlNEaWN0LT5HZXROdW1iZXIoIlciKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChDUERGX0FycmF5ICogcEFycmF5ID0gcEJTRGljdC0+R2V0QXJyYXkoIkQiKSkgew0KKyAgICAgICAgICAgIGRzQm9yZGVyID0gQ1BWVF9EYXNoKHBBcnJheS0+R2V0SW50ZWdlcigwKSwgcEFycmF5LT5HZXRJbnRlZ2VyKDEpLCBwQXJyYXktPkdldEludGVnZXIoMikpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3dpdGNoIChwQlNEaWN0LT5HZXRTdHJpbmcoIlMiKS5HZXRBdCgwKSkgew0KKyAgICAgICAgICAgIGNhc2UgJ1MnOg0KKyAgICAgICAgICAgICAgICBuQm9yZGVyU3R5bGUgPSBQQlNfU09MSUQ7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgJ0QnOg0KKyAgICAgICAgICAgICAgICBuQm9yZGVyU3R5bGUgPSBQQlNfREFTSDsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAnQic6DQorICAgICAgICAgICAgICAgIG5Cb3JkZXJTdHlsZSA9IFBCU19CRVZFTEVEOw0KKyAgICAgICAgICAgICAgICBmQm9yZGVyV2lkdGggKj0gMjsNCisgICAgICAgICAgICAgICAgY3JMZWZ0VG9wID0gQ1BWVF9Db2xvcihDVF9HUkFZLCAxKTsNCisgICAgICAgICAgICAgICAgY3JSaWdodEJvdHRvbSA9IENQVlRfQ29sb3IoQ1RfR1JBWSwgMC41KTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAnSSc6DQorICAgICAgICAgICAgICAgIG5Cb3JkZXJTdHlsZSA9IFBCU19JTlNFVDsNCisgICAgICAgICAgICAgICAgZkJvcmRlcldpZHRoICo9IDI7DQorICAgICAgICAgICAgICAgIGNyTGVmdFRvcCA9IENQVlRfQ29sb3IoQ1RfR1JBWSwgMC41KTsNCisgICAgICAgICAgICAgICAgY3JSaWdodEJvdHRvbSA9IENQVlRfQ29sb3IoQ1RfR1JBWSwgMC43NSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgJ1UnOg0KKyAgICAgICAgICAgICAgICBuQm9yZGVyU3R5bGUgPSBQQlNfVU5ERVJMSU5FRDsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BWVF9Db2xvciBjckJvcmRlciwgY3JCRzsNCisgICAgaWYgKENQREZfRGljdGlvbmFyeSAqIHBNS0RpY3QgPSBwQW5ub3REaWN0LT5HZXREaWN0KCJNSyIpKSB7DQorICAgICAgICBpZiAoQ1BERl9BcnJheSAqIHBBcnJheSA9IHBNS0RpY3QtPkdldEFycmF5KCJCQyIpKSB7DQorICAgICAgICAgICAgY3JCb3JkZXIgPSBQYXJzZUNvbG9yKCpwQXJyYXkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKENQREZfQXJyYXkgKiBwQXJyYXkgPSBwTUtEaWN0LT5HZXRBcnJheSgiQkciKSkgew0KKyAgICAgICAgICAgIGNyQkcgPSBQYXJzZUNvbG9yKCpwQXJyYXkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENGWF9CeXRlVGV4dEJ1ZiBzQXBwU3RyZWFtOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBzQkcgPSBDUFZUX0dlbmVyYXRlQVA6OkdlbmVyYXRlQ29sb3JBUChjckJHLCBUUlVFKTsNCisgICAgaWYgKHNCRy5HZXRMZW5ndGgoKSA+IDApIHsNCisgICAgICAgIHNBcHBTdHJlYW0gPDwgInFcbiIgPDwgc0JHIDw8IHJjQkJveC5sZWZ0IDw8ICIgIiA8PCByY0JCb3guYm90dG9tIDw8ICIgIg0KKyAgICAgICAgICAgICAgICAgICA8PCByY0JCb3guV2lkdGgoKSA8PCAiICIgPDwgcmNCQm94LkhlaWdodCgpIDw8ICIgcmUgZlxuIiA8PCAiUVxuIjsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBzQm9yZGVyU3RyZWFtID0gQ1BWVF9HZW5lcmF0ZUFQOjpHZW5lcmF0ZUJvcmRlckFQKHJjQkJveCwgZkJvcmRlcldpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JCb3JkZXIsIGNyTGVmdFRvcCwgY3JSaWdodEJvdHRvbSwgbkJvcmRlclN0eWxlLCBkc0JvcmRlcik7DQorICAgIGlmIChzQm9yZGVyU3RyZWFtLkdldExlbmd0aCgpID4gMCkgew0KKyAgICAgICAgc0FwcFN0cmVhbSA8PCAicVxuIiA8PCBzQm9yZGVyU3RyZWFtIDw8ICJRXG4iOw0KKyAgICB9DQorICAgIENQREZfUmVjdCByY0JvZHkgPSBDUERGX1JlY3QocmNCQm94LmxlZnQgKyBmQm9yZGVyV2lkdGgsIHJjQkJveC5ib3R0b20gKyBmQm9yZGVyV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNCQm94LnJpZ2h0IC0gZkJvcmRlcldpZHRoLCByY0JCb3gudG9wIC0gZkJvcmRlcldpZHRoKTsNCisgICAgcmNCb2R5Lk5vcm1hbGl6ZSgpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBBUERpY3QgPSBwQW5ub3REaWN0LT5HZXREaWN0KCJBUCIpOw0KKyAgICBpZiAocEFQRGljdCA9PSBOVUxMKSB7DQorICAgICAgICBwQVBEaWN0ID0gQ1BERl9EaWN0aW9uYXJ5OjpDcmVhdGUoKTsNCisgICAgICAgIGlmIChwQVBEaWN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBwQW5ub3REaWN0LT5TZXRBdCgiQVAiLCBwQVBEaWN0KTsNCisgICAgfQ0KKyAgICBDUERGX1N0cmVhbSogcE5vcm1hbFN0cmVhbSA9IHBBUERpY3QtPkdldFN0cmVhbSgiTiIpOw0KKyAgICBpZiAocE5vcm1hbFN0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICBwTm9ybWFsU3RyZWFtID0gQ1BERl9TdHJlYW06OkNyZWF0ZShOVUxMLCAwLCBOVUxMKTsNCisgICAgICAgIGlmIChwTm9ybWFsU3RyZWFtID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBGWF9JTlQzMiBvYmpudW0gPSBwRG9jLT5BZGRJbmRpcmVjdE9iamVjdChwTm9ybWFsU3RyZWFtKTsNCisgICAgICAgIHBBbm5vdERpY3QtPkdldERpY3QoIkFQIiktPlNldEF0UmVmZXJlbmNlKCJOIiwgcERvYywgb2JqbnVtKTsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkgKiBwU3RyZWFtRGljdCA9IHBOb3JtYWxTdHJlYW0tPkdldERpY3QoKTsNCisgICAgaWYgKHBTdHJlYW1EaWN0KSB7DQorICAgICAgICBwU3RyZWFtRGljdC0+U2V0QXRNYXRyaXgoIk1hdHJpeCIsIG1hdHJpeCk7DQorICAgICAgICBwU3RyZWFtRGljdC0+U2V0QXRSZWN0KCJCQm94IiwgcmNCQm94KTsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcFN0cmVhbVJlc0xpc3QgPSBwU3RyZWFtRGljdC0+R2V0RGljdCgiUmVzb3VyY2VzIik7DQorICAgICAgICBpZiAocFN0cmVhbVJlc0xpc3QpIHsNCisgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBTdHJlYW1SZXNGb250TGlzdCA9IHBTdHJlYW1SZXNMaXN0LT5HZXREaWN0KCJGb250Iik7DQorICAgICAgICAgICAgaWYgKCFwU3RyZWFtUmVzRm9udExpc3QpIHsNCisgICAgICAgICAgICAgICAgcFN0cmVhbVJlc0ZvbnRMaXN0ID0gQ1BERl9EaWN0aW9uYXJ5OjpDcmVhdGUoKTsNCisgICAgICAgICAgICAgICAgaWYgKHBTdHJlYW1SZXNGb250TGlzdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcFN0cmVhbVJlc0xpc3QtPlNldEF0KCJGb250IiwgcFN0cmVhbVJlc0ZvbnRMaXN0KTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKCFwU3RyZWFtUmVzRm9udExpc3QtPktleUV4aXN0KHNGb250TmFtZSkpIHsNCisgICAgICAgICAgICAgICAgcFN0cmVhbVJlc0ZvbnRMaXN0LT5TZXRBdFJlZmVyZW5jZShzRm9udE5hbWUsIHBEb2MsIHBGb250RGljdCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwU3RyZWFtRGljdC0+U2V0QXQoIlJlc291cmNlcyIsIHBGb3JtRGljdC0+R2V0RGljdCgiRFIiKS0+Q2xvbmUoKSk7DQorICAgICAgICAgICAgcFN0cmVhbVJlc0xpc3QgPSBwU3RyZWFtRGljdC0+R2V0RGljdCgiUmVzb3VyY2VzIik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgc3dpdGNoIChuV2lkZ2V0VHlwZSkgew0KKyAgICAgICAgY2FzZSAwOiB7DQorICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHN3VmFsdWUgPSBGUERGX0dldEZpZWxkQXR0cihwQW5ub3REaWN0LCAiViIpLT5HZXRVbmljb2RlVGV4dCgpOw0KKyAgICAgICAgICAgICAgICBGWF9JTlQzMiBuQWxpZ24gPSBGUERGX0dldEZpZWxkQXR0cihwQW5ub3REaWN0LCAiUSIpLT5HZXRJbnRlZ2VyKCk7DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEIGR3RmxhZ3MgPSBGUERGX0dldEZpZWxkQXR0cihwQW5ub3REaWN0LCAiRmYiKS0+R2V0SW50ZWdlcigpOw0KKyAgICAgICAgICAgICAgICBGWF9EV09SRCBkd01heExlbiA9IEZQREZfR2V0RmllbGRBdHRyKHBBbm5vdERpY3QsICJNYXhMZW4iKS0+R2V0SW50ZWdlcigpOw0KKyAgICAgICAgICAgICAgICBDUFZUX0ZvbnRNYXAgbWFwKHBEb2MsIHBTdHJlYW1EaWN0LT5HZXREaWN0KCJSZXNvdXJjZXMiKSwgcERlZkZvbnQsIHNGb250TmFtZS5SaWdodChzRm9udE5hbWUuR2V0TGVuZ3RoKCkgLSAxKSk7DQorICAgICAgICAgICAgICAgIENQVlRfUHJvdmlkZXIgcHJkKCZtYXApOw0KKyAgICAgICAgICAgICAgICBDUERGX1ZhcmlhYmxlVGV4dCB2dDsNCisgICAgICAgICAgICAgICAgdnQuU2V0UHJvdmlkZXIoJnByZCk7DQorICAgICAgICAgICAgICAgIHZ0LlNldFBsYXRlUmVjdChyY0JvZHkpOw0KKyAgICAgICAgICAgICAgICB2dC5TZXRBbGlnbm1lbnQobkFsaWduKTsNCisgICAgICAgICAgICAgICAgaWYgKElzRmxvYXRaZXJvKGZGb250U2l6ZSkpIHsNCisgICAgICAgICAgICAgICAgICAgIHZ0LlNldEF1dG9Gb250U2l6ZShUUlVFKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHZ0LlNldEZvbnRTaXplKGZGb250U2l6ZSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfQk9PTCBiTXVsdGlMaW5lID0gKGR3RmxhZ3MgPj4gMTIpICYgMTsNCisgICAgICAgICAgICAgICAgaWYgKGJNdWx0aUxpbmUpIHsNCisgICAgICAgICAgICAgICAgICAgIHZ0LlNldE11bHRpTGluZShUUlVFKTsNCisgICAgICAgICAgICAgICAgICAgIHZ0LlNldEF1dG9SZXR1cm4oVFJVRSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfV09SRCBzdWJXb3JkID0gMDsNCisgICAgICAgICAgICAgICAgaWYgKChkd0ZsYWdzID4+IDEzKSAmIDEpIHsNCisgICAgICAgICAgICAgICAgICAgIHN1YldvcmQgPSAnKic7DQorICAgICAgICAgICAgICAgICAgICB2dC5TZXRQYXNzd29yZENoYXIoc3ViV29yZCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfQk9PTCBiQ2hhckFycmF5ID0gKGR3RmxhZ3MgPj4gMjQpICYgMTsNCisgICAgICAgICAgICAgICAgaWYgKGJDaGFyQXJyYXkpIHsNCisgICAgICAgICAgICAgICAgICAgIHZ0LlNldENoYXJBcnJheShkd01heExlbik7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICB2dC5TZXRMaW1pdENoYXIoZHdNYXhMZW4pOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHZ0LkluaXRpYWxpemUoKTsNCisgICAgICAgICAgICAgICAgdnQuU2V0VGV4dChzd1ZhbHVlKTsNCisgICAgICAgICAgICAgICAgdnQuUmVhcnJhbmdlQWxsKCk7DQorICAgICAgICAgICAgICAgIENQREZfUmVjdCByY0NvbnRlbnQgPSB2dC5HZXRDb250ZW50UmVjdCgpOw0KKyAgICAgICAgICAgICAgICBDUERGX1BvaW50IHB0T2Zmc2V0KDAuMGYsIDAuMGYpOw0KKyAgICAgICAgICAgICAgICBpZiAoIWJNdWx0aUxpbmUpIHsNCisgICAgICAgICAgICAgICAgICAgIHB0T2Zmc2V0ID0gQ1BERl9Qb2ludCgwLjBmLCAocmNDb250ZW50LkhlaWdodCgpIC0gcmNCb2R5LkhlaWdodCgpKSAvIDIuMGYpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIHNCb2R5ID0gQ1BWVF9HZW5lcmF0ZUFQOjpHZW5lcmF0ZUVkaXRBUCgmbWFwLCB2dC5HZXRJdGVyYXRvcigpLCBwdE9mZnNldCwgIWJDaGFyQXJyYXksIHN1YldvcmQpOw0KKyAgICAgICAgICAgICAgICBpZiAoc0JvZHkuR2V0TGVuZ3RoKCkgPiAwKSB7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8ICIvVHggQk1DXG4iIDw8ICJxXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJjQ29udGVudC5XaWR0aCgpID4gcmNCb2R5LldpZHRoKCkgfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNDb250ZW50LkhlaWdodCgpID4gcmNCb2R5LkhlaWdodCgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCByY0JvZHkubGVmdCA8PCAiICIgPDwgcmNCb2R5LmJvdHRvbSA8PCAiICINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHJjQm9keS5XaWR0aCgpIDw8ICIgIiA8PCByY0JvZHkuSGVpZ2h0KCkgPDwgIiByZVxuV1xublxuIjsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgIkJUXG4iIDw8IENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVDb2xvckFQKGNyVGV4dCwgVFJVRSkgPDwgc0JvZHkgPDwgIkVUXG4iIDw8ICJRXG5FTUNcbiI7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDE6IHsNCisgICAgICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgc3dWYWx1ZSA9IEZQREZfR2V0RmllbGRBdHRyKHBBbm5vdERpY3QsICJWIiktPkdldFVuaWNvZGVUZXh0KCk7DQorICAgICAgICAgICAgICAgIENQVlRfRm9udE1hcCBtYXAocERvYywgcFN0cmVhbURpY3QtPkdldERpY3QoIlJlc291cmNlcyIpLCBwRGVmRm9udCwgc0ZvbnROYW1lLlJpZ2h0KHNGb250TmFtZS5HZXRMZW5ndGgoKSAtIDEpKTsNCisgICAgICAgICAgICAgICAgQ1BWVF9Qcm92aWRlciBwcmQoJm1hcCk7DQorICAgICAgICAgICAgICAgIENQREZfVmFyaWFibGVUZXh0IHZ0Ow0KKyAgICAgICAgICAgICAgICB2dC5TZXRQcm92aWRlcigmcHJkKTsNCisgICAgICAgICAgICAgICAgQ1BERl9SZWN0IHJjQnV0dG9uID0gcmNCb2R5Ow0KKyAgICAgICAgICAgICAgICByY0J1dHRvbi5sZWZ0ID0gcmNCdXR0b24ucmlnaHQgLSAxMzsNCisgICAgICAgICAgICAgICAgcmNCdXR0b24uTm9ybWFsaXplKCk7DQorICAgICAgICAgICAgICAgIENQREZfUmVjdCByY0VkaXQgPSByY0JvZHk7DQorICAgICAgICAgICAgICAgIHJjRWRpdC5yaWdodCA9IHJjQnV0dG9uLmxlZnQ7DQorICAgICAgICAgICAgICAgIHJjRWRpdC5Ob3JtYWxpemUoKTsNCisgICAgICAgICAgICAgICAgdnQuU2V0UGxhdGVSZWN0KHJjRWRpdCk7DQorICAgICAgICAgICAgICAgIGlmIChJc0Zsb2F0WmVybyhmRm9udFNpemUpKSB7DQorICAgICAgICAgICAgICAgICAgICB2dC5TZXRBdXRvRm9udFNpemUoVFJVRSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICB2dC5TZXRGb250U2l6ZShmRm9udFNpemUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHZ0LkluaXRpYWxpemUoKTsNCisgICAgICAgICAgICAgICAgdnQuU2V0VGV4dChzd1ZhbHVlKTsNCisgICAgICAgICAgICAgICAgdnQuUmVhcnJhbmdlQWxsKCk7DQorICAgICAgICAgICAgICAgIENQREZfUmVjdCByY0NvbnRlbnQgPSB2dC5HZXRDb250ZW50UmVjdCgpOw0KKyAgICAgICAgICAgICAgICBDUERGX1BvaW50IHB0T2Zmc2V0ID0gQ1BERl9Qb2ludCgwLjBmLCAocmNDb250ZW50LkhlaWdodCgpIC0gcmNFZGl0LkhlaWdodCgpKSAvIDIuMGYpOw0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBzRWRpdCA9IENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVFZGl0QVAoJm1hcCwgdnQuR2V0SXRlcmF0b3IoKSwgcHRPZmZzZXQsIFRSVUUsIDApOw0KKyAgICAgICAgICAgICAgICBpZiAoc0VkaXQuR2V0TGVuZ3RoKCkgPiAwKSB7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8ICIvVHggQk1DXG4iIDw8ICJxXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCByY0VkaXQubGVmdCA8PCAiICIgPDwgcmNFZGl0LmJvdHRvbSA8PCAiICINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcmNFZGl0LldpZHRoKCkgPDwgIiAiIDw8IHJjRWRpdC5IZWlnaHQoKSA8PCAiIHJlXG5XXG5uXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCAiQlRcbiIgPDwgQ1BWVF9HZW5lcmF0ZUFQOjpHZW5lcmF0ZUNvbG9yQVAoY3JUZXh0LCBUUlVFKSA8PCBzRWRpdCA8PCAiRVRcbiIgPDwgIlFcbkVNQ1xuIjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBzQnV0dG9uID0gQ1BWVF9HZW5lcmF0ZUFQOjpHZW5lcmF0ZUNvbG9yQVAoQ1BWVF9Db2xvcihDVF9SR0IsIDIyMC4wZiAvIDI1NS4wZiwgMjIwLjBmIC8gMjU1LjBmLCAyMjAuMGYgLyAyNTUuMGYpLCBUUlVFKTsNCisgICAgICAgICAgICAgICAgaWYgKHNCdXR0b24uR2V0TGVuZ3RoKCkgPiAwICYmICFyY0J1dHRvbi5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgInFcbiIgPDwgc0J1dHRvbjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgcmNCdXR0b24ubGVmdCA8PCAiICIgPDwgcmNCdXR0b24uYm90dG9tIDw8ICIgIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByY0J1dHRvbi5XaWR0aCgpIDw8ICIgIiA8PCByY0J1dHRvbi5IZWlnaHQoKSA8PCAiIHJlIGZcbiI7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8ICJRXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc0J1dHRvbkJvcmRlciA9IENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVCb3JkZXJBUChyY0J1dHRvbiwgMiwgQ1BWVF9Db2xvcihDVF9HUkFZLCAwKSwgQ1BWVF9Db2xvcihDVF9HUkFZLCAxKSwgQ1BWVF9Db2xvcihDVF9HUkFZLCAwLjUpLCBQQlNfQkVWRUxFRCwgQ1BWVF9EYXNoKDMsIDAsIDApKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChzQnV0dG9uQm9yZGVyLkdldExlbmd0aCgpID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgInFcbiIgPDwgc0J1dHRvbkJvcmRlciA8PCAiUVxuIjsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIENQREZfUG9pbnQgcHRDZW50ZXIgPSBDUERGX1BvaW50KChyY0J1dHRvbi5sZWZ0ICsgcmNCdXR0b24ucmlnaHQpIC8gMiwgKHJjQnV0dG9uLnRvcCArIHJjQnV0dG9uLmJvdHRvbSkgLyAyKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChJc0Zsb2F0QmlnZ2VyKHJjQnV0dG9uLldpZHRoKCksIDYpICYmIElzRmxvYXRCaWdnZXIocmNCdXR0b24uSGVpZ2h0KCksIDYpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCAicVxuIiA8PCAiIDAgZ1xuIjsNCisgICAgICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IHB0Q2VudGVyLnggLSAzIDw8ICIgIiA8PCBwdENlbnRlci55ICsgMS41ZiA8PCAiIG1cbiI7DQorICAgICAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBwdENlbnRlci54ICsgMyA8PCAiICIgPDwgcHRDZW50ZXIueSArIDEuNWYgPDwgIiBsXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgcHRDZW50ZXIueCA8PCAiICIgPDwgcHRDZW50ZXIueSAtIDEuNWYgPDwgIiBsXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgcHRDZW50ZXIueCAtIDMgPDwgIiAiIDw8IHB0Q2VudGVyLnkgKyAxLjVmIDw8ICIgbCBmXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgc0J1dHRvbiA8PCAiUVxuIjsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMjogew0KKyAgICAgICAgICAgICAgICBDUFZUX0ZvbnRNYXAgbWFwKHBEb2MsIHBTdHJlYW1EaWN0LT5HZXREaWN0KCJSZXNvdXJjZXMiKSwgcERlZkZvbnQsIHNGb250TmFtZS5SaWdodChzRm9udE5hbWUuR2V0TGVuZ3RoKCkgLSAxKSk7DQorICAgICAgICAgICAgICAgIENQVlRfUHJvdmlkZXIgcHJkKCZtYXApOw0KKyAgICAgICAgICAgICAgICBDUERGX0FycmF5ICogcE9wdHMgPSBGUERGX0dldEZpZWxkQXR0cihwQW5ub3REaWN0LCAiT3B0IiktPkdldEFycmF5KCk7DQorICAgICAgICAgICAgICAgIENQREZfQXJyYXkgKiBwU2VscyA9IEZQREZfR2V0RmllbGRBdHRyKHBBbm5vdERpY3QsICJJIiktPkdldEFycmF5KCk7DQorICAgICAgICAgICAgICAgIEZYX0lOVDMyIG5Ub3AgPSBGUERGX0dldEZpZWxkQXR0cihwQW5ub3REaWN0LCAiVEkiKS0+R2V0SW50ZWdlcigpOw0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVRleHRCdWYgc0JvZHk7DQorICAgICAgICAgICAgICAgIGlmIChwT3B0cykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgZnkgPSByY0JvZHkudG9wOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gblRvcCwgc3ogPSBwT3B0cy0+R2V0Q291bnQoKTsgaSA8IHN6OyBpKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXNGbG9hdFNtYWxsZXIoZnksIHJjQm9keS5ib3R0b20pKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ1BERl9PYmplY3QqIHBPcHQgPSBwT3B0cy0+R2V0RWxlbWVudFZhbHVlKGkpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHN3SXRlbTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBPcHQtPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSSU5HKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd0l0ZW0gPSBwT3B0LT5HZXRVbmljb2RlVGV4dCgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBPcHQtPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3SXRlbSA9ICgoQ1BERl9BcnJheSopcE9wdCktPkdldEVsZW1lbnRWYWx1ZSgxKS0+R2V0VW5pY29kZVRleHQoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJTZWxlY3RlZCA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFNlbHMpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgcyA9IDAsIHNzeiA9IHBTZWxzLT5HZXRDb3VudCgpOyBzIDwgc3N6OyBzKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBwU2Vscy0+R2V0SW50ZWdlcihzKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiU2VsZWN0ZWQgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9WYXJpYWJsZVRleHQgdnQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0LlNldFByb3ZpZGVyKCZwcmQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dC5TZXRQbGF0ZVJlY3QoQ1BERl9SZWN0KHJjQm9keS5sZWZ0LCAwLjBmLCByY0JvZHkucmlnaHQsIDAuMGYpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElzRmxvYXRaZXJvKGZGb250U2l6ZSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0LlNldEZvbnRTaXplKDEyLjBmKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0LlNldEZvbnRTaXplKGZGb250U2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnQuSW5pdGlhbGl6ZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dC5TZXRUZXh0KHN3SXRlbSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0LlJlYXJyYW5nZUFsbCgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBmSXRlbUhlaWdodCA9IHZ0LkdldENvbnRlbnRSZWN0KCkuSGVpZ2h0KCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiU2VsZWN0ZWQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfUmVjdCByY0l0ZW0gPSBDUERGX1JlY3QocmNCb2R5LmxlZnQsIGZ5IC0gZkl0ZW1IZWlnaHQsIHJjQm9keS5yaWdodCwgZnkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc0JvZHkgPDwgInFcbiIgPDwgQ1BWVF9HZW5lcmF0ZUFQOjpHZW5lcmF0ZUNvbG9yQVAoQ1BWVF9Db2xvcihDVF9SR0IsIDAsIDUxLjBmIC8gMjU1LjBmLCAxMTMuMGYgLyAyNTUuMGYpLCBUUlVFKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcmNJdGVtLmxlZnQgPDwgIiAiIDw8IHJjSXRlbS5ib3R0b20gPDwgIiAiIDw8IHJjSXRlbS5XaWR0aCgpIDw8ICIgIiA8PCByY0l0ZW0uSGVpZ2h0KCkgPDwgIiByZSBmXG4iIDw8ICJRXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc0JvZHkgPDwgIkJUXG4iIDw8IENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVDb2xvckFQKENQVlRfQ29sb3IoQ1RfR1JBWSwgMSksIFRSVUUpIDw8IENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVFZGl0QVAoJm1hcCwgdnQuR2V0SXRlcmF0b3IoKSwgQ1BERl9Qb2ludCgwLjBmLCBmeSksIFRSVUUsIDApIDw8ICJFVFxuIjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNCb2R5IDw8ICJCVFxuIiA8PCBDUFZUX0dlbmVyYXRlQVA6OkdlbmVyYXRlQ29sb3JBUChjclRleHQsIFRSVUUpIDw8IENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVFZGl0QVAoJm1hcCwgdnQuR2V0SXRlcmF0b3IoKSwgQ1BERl9Qb2ludCgwLjBmLCBmeSksIFRSVUUsIDApIDw8ICJFVFxuIjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmeSAtPSBmSXRlbUhlaWdodDsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKHNCb2R5LkdldFNpemUoKSA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgIi9UeCBCTUNcbiIgPDwgInFcbiI7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IHJjQm9keS5sZWZ0IDw8ICIgIiA8PCByY0JvZHkuYm90dG9tIDw8ICIgIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCByY0JvZHkuV2lkdGgoKSA8PCAiICIgPDwgcmNCb2R5LkhlaWdodCgpIDw8ICIgcmVcbldcbm5cbiI7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IHNCb2R5LkdldEJ5dGVTdHJpbmcoKSA8PCAiUVxuRU1DXG4iOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIGlmIChwTm9ybWFsU3RyZWFtKSB7DQorICAgICAgICBwTm9ybWFsU3RyZWFtLT5TZXREYXRhKChGWF9CWVRFKilzQXBwU3RyZWFtLkdldEJ1ZmZlcigpLCBzQXBwU3RyZWFtLkdldFNpemUoKSwgRkFMU0UsIEZBTFNFKTsNCisgICAgICAgIHBTdHJlYW1EaWN0ID0gcE5vcm1hbFN0cmVhbS0+R2V0RGljdCgpOw0KKyAgICAgICAgaWYgKHBTdHJlYW1EaWN0KSB7DQorICAgICAgICAgICAgcFN0cmVhbURpY3QtPlNldEF0TWF0cml4KCJNYXRyaXgiLCBtYXRyaXgpOw0KKyAgICAgICAgICAgIHBTdHJlYW1EaWN0LT5TZXRBdFJlY3QoIkJCb3giLCByY0JCb3gpOw0KKyAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcFN0cmVhbVJlc0xpc3QgPSBwU3RyZWFtRGljdC0+R2V0RGljdCgiUmVzb3VyY2VzIik7DQorICAgICAgICAgICAgaWYgKHBTdHJlYW1SZXNMaXN0KSB7DQorICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcFN0cmVhbVJlc0ZvbnRMaXN0ID0gcFN0cmVhbVJlc0xpc3QtPkdldERpY3QoIkZvbnQiKTsNCisgICAgICAgICAgICAgICAgaWYgKCFwU3RyZWFtUmVzRm9udExpc3QpIHsNCisgICAgICAgICAgICAgICAgICAgIHBTdHJlYW1SZXNGb250TGlzdCA9IENQREZfRGljdGlvbmFyeTo6Q3JlYXRlKCk7DQorICAgICAgICAgICAgICAgICAgICBpZiAocFN0cmVhbVJlc0ZvbnRMaXN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwU3RyZWFtUmVzTGlzdC0+U2V0QXQoIkZvbnQiLCBwU3RyZWFtUmVzRm9udExpc3QpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmICghcFN0cmVhbVJlc0ZvbnRMaXN0LT5LZXlFeGlzdChzRm9udE5hbWUpKSB7DQorICAgICAgICAgICAgICAgICAgICBwU3RyZWFtUmVzRm9udExpc3QtPlNldEF0UmVmZXJlbmNlKHNGb250TmFtZSwgcERvYywgcEZvbnREaWN0KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBTdHJlYW1EaWN0LT5TZXRBdCgiUmVzb3VyY2VzIiwgcEZvcm1EaWN0LT5HZXREaWN0KCJEUiIpLT5DbG9uZSgpKTsNCisgICAgICAgICAgICAgICAgcFN0cmVhbVJlc0xpc3QgPSBwU3RyZWFtRGljdC0+R2V0RGljdCgiUmVzb3VyY2VzIik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVUZXh0RmllbGRBUChDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0RpY3Rpb25hcnkqIHBBbm5vdERpY3QpDQorew0KKyAgICByZXR1cm4gR2VuZXJhdGVXaWRnZXRBUChwRG9jLCBwQW5ub3REaWN0LCAwKTsNCit9DQorRlhfQk9PTCBDUFZUX0dlbmVyYXRlQVA6OkdlbmVyYXRlQ29tYm9Cb3hBUChDUERGX0RvY3VtZW50KiBwRG9jLCBDUERGX0RpY3Rpb25hcnkqIHBBbm5vdERpY3QpDQorew0KKyAgICByZXR1cm4gR2VuZXJhdGVXaWRnZXRBUChwRG9jLCBwQW5ub3REaWN0LCAxKTsNCit9DQorRlhfQk9PTCBDUFZUX0dlbmVyYXRlQVA6OkdlbmVyYXRlTGlzdEJveEFQKENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfRGljdGlvbmFyeSogcEFubm90RGljdCkNCit7DQorICAgIHJldHVybiBHZW5lcmF0ZVdpZGdldEFQKHBEb2MsIHBBbm5vdERpY3QsIDIpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUFZUX0dlbmVyYXRlQVA6OkdlbmVyYXRlRWRpdEFQKElQVlRfRm9udE1hcCAqIHBGb250TWFwLCBJUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvciogcEl0ZXJhdG9yLCBjb25zdCBDUERGX1BvaW50ICYgcHRPZmZzZXQsIEZYX0JPT0wgYkNvbnRpbnVvdXMsIEZYX1dPUkQgU3ViV29yZCwgY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgKiBwVmlzaWJsZSkNCit7DQorICAgIENGWF9CeXRlVGV4dEJ1ZiBzRWRpdFN0cmVhbSwgc0xpbmVTdHJlYW0sIHNXb3JkczsNCisgICAgQ1BERl9Qb2ludCBwdE9sZCgwLjBmLCAwLjBmKSwgcHROZXcoMC4wZiwgMC4wZik7DQorICAgIEZYX0lOVDMyIG5DdXJGb250SW5kZXggPSAtMTsNCisgICAgaWYgKHBJdGVyYXRvcikgew0KKyAgICAgICAgaWYgKHBWaXNpYmxlKSB7DQorICAgICAgICAgICAgcEl0ZXJhdG9yLT5TZXRBdChwVmlzaWJsZS0+QmVnaW5Qb3MpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwSXRlcmF0b3ItPlNldEF0KDApOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BWVF9Xb3JkUGxhY2Ugb2xkcGxhY2U7DQorICAgICAgICB3aGlsZSAocEl0ZXJhdG9yLT5OZXh0V29yZCgpKSB7DQorICAgICAgICAgICAgQ1BWVF9Xb3JkUGxhY2UgcGxhY2UgPSBwSXRlcmF0b3ItPkdldEF0KCk7DQorICAgICAgICAgICAgaWYgKHBWaXNpYmxlICYmIHBsYWNlLldvcmRDbXAocFZpc2libGUtPkVuZFBvcykgPiAwKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoYkNvbnRpbnVvdXMpIHsNCisgICAgICAgICAgICAgICAgaWYgKHBsYWNlLkxpbmVDbXAob2xkcGxhY2UpICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChzV29yZHMuR2V0U2l6ZSgpID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNMaW5lU3RyZWFtIDw8IEdldFdvcmRSZW5kZXJTdHJpbmcoc1dvcmRzLkdldEJ5dGVTdHJpbmcoKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgc0VkaXRTdHJlYW0gPDwgc0xpbmVTdHJlYW07DQorICAgICAgICAgICAgICAgICAgICAgICAgc0xpbmVTdHJlYW0uQ2xlYXIoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzV29yZHMuQ2xlYXIoKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIENQVlRfV29yZCB3b3JkOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBJdGVyYXRvci0+R2V0V29yZCh3b3JkKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHB0TmV3ID0gQ1BERl9Qb2ludCh3b3JkLnB0V29yZC54ICsgcHRPZmZzZXQueCwgd29yZC5wdFdvcmQueSArIHB0T2Zmc2V0LnkpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBDUFZUX0xpbmUgbGluZTsNCisgICAgICAgICAgICAgICAgICAgICAgICBwSXRlcmF0b3ItPkdldExpbmUobGluZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgcHROZXcgPSBDUERGX1BvaW50KGxpbmUucHRMaW5lLnggKyBwdE9mZnNldC54LCBsaW5lLnB0TGluZS55ICsgcHRPZmZzZXQueSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAocHROZXcueCAhPSBwdE9sZC54IHx8IHB0TmV3LnkgIT0gcHRPbGQueSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNMaW5lU3RyZWFtIDw8IHB0TmV3LnggLSBwdE9sZC54IDw8ICIgIiA8PCBwdE5ldy55IC0gcHRPbGQueSA8PCAiIFRkXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHB0T2xkID0gcHROZXc7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ1BWVF9Xb3JkIHdvcmQ7DQorICAgICAgICAgICAgICAgIGlmIChwSXRlcmF0b3ItPkdldFdvcmQod29yZCkpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmICh3b3JkLm5Gb250SW5kZXggIT0gbkN1ckZvbnRJbmRleCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzV29yZHMuR2V0U2l6ZSgpID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzTGluZVN0cmVhbSA8PCBHZXRXb3JkUmVuZGVyU3RyaW5nKHNXb3Jkcy5HZXRCeXRlU3RyaW5nKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzV29yZHMuQ2xlYXIoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgc0xpbmVTdHJlYW0gPDwgR2V0Rm9udFNldFN0cmluZyhwRm9udE1hcCwgd29yZC5uRm9udEluZGV4LCB3b3JkLmZGb250U2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkN1ckZvbnRJbmRleCA9IHdvcmQubkZvbnRJbmRleDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHNXb3JkcyA8PCBHZXRQREZXb3JkU3RyaW5nKHBGb250TWFwLCBuQ3VyRm9udEluZGV4LCB3b3JkLldvcmQsIFN1YldvcmQpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG9sZHBsYWNlID0gcGxhY2U7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgQ1BWVF9Xb3JkIHdvcmQ7DQorICAgICAgICAgICAgICAgIGlmIChwSXRlcmF0b3ItPkdldFdvcmQod29yZCkpIHsNCisgICAgICAgICAgICAgICAgICAgIHB0TmV3ID0gQ1BERl9Qb2ludCh3b3JkLnB0V29yZC54ICsgcHRPZmZzZXQueCwgd29yZC5wdFdvcmQueSArIHB0T2Zmc2V0LnkpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHB0TmV3LnggIT0gcHRPbGQueCB8fCBwdE5ldy55ICE9IHB0T2xkLnkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzRWRpdFN0cmVhbSA8PCBwdE5ldy54IC0gcHRPbGQueCA8PCAiICIgPDwgcHROZXcueSAtIHB0T2xkLnkgPDwgIiBUZFxuIjsNCisgICAgICAgICAgICAgICAgICAgICAgICBwdE9sZCA9IHB0TmV3Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmQubkZvbnRJbmRleCAhPSBuQ3VyRm9udEluZGV4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc0VkaXRTdHJlYW0gPDwgR2V0Rm9udFNldFN0cmluZyhwRm9udE1hcCwgd29yZC5uRm9udEluZGV4LCB3b3JkLmZGb250U2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkN1ckZvbnRJbmRleCA9IHdvcmQubkZvbnRJbmRleDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHNFZGl0U3RyZWFtIDw8IEdldFdvcmRSZW5kZXJTdHJpbmcoR2V0UERGV29yZFN0cmluZyhwRm9udE1hcCwgbkN1ckZvbnRJbmRleCwgd29yZC5Xb3JkLCBTdWJXb3JkKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoc1dvcmRzLkdldFNpemUoKSA+IDApIHsNCisgICAgICAgICAgICBzTGluZVN0cmVhbSA8PCBHZXRXb3JkUmVuZGVyU3RyaW5nKHNXb3Jkcy5HZXRCeXRlU3RyaW5nKCkpOw0KKyAgICAgICAgICAgIHNFZGl0U3RyZWFtIDw8IHNMaW5lU3RyZWFtOw0KKyAgICAgICAgICAgIHNXb3Jkcy5DbGVhcigpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBzRWRpdFN0cmVhbS5HZXRCeXRlU3RyaW5nKCk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQVlRfR2VuZXJhdGVBUDo6R2VuZXJhdGVCb3JkZXJBUChjb25zdCBDUERGX1JlY3QgJiByZWN0LCBGWF9GTE9BVCBmV2lkdGgsDQorICAgICAgICBjb25zdCBDUFZUX0NvbG9yICYgY29sb3IsIGNvbnN0IENQVlRfQ29sb3IgJiBjckxlZnRUb3AsIGNvbnN0IENQVlRfQ29sb3IgJiBjclJpZ2h0Qm90dG9tLA0KKyAgICAgICAgRlhfSU5UMzIgblN0eWxlLCBjb25zdCBDUFZUX0Rhc2ggJiBkYXNoKQ0KK3sNCisgICAgQ0ZYX0J5dGVUZXh0QnVmIHNBcHBTdHJlYW07DQorICAgIENGWF9CeXRlU3RyaW5nIHNDb2xvcjsNCisgICAgRlhfRkxPQVQgZkxlZnQgPSByZWN0LmxlZnQ7DQorICAgIEZYX0ZMT0FUIGZSaWdodCA9IHJlY3QucmlnaHQ7DQorICAgIEZYX0ZMT0FUIGZUb3AgPSByZWN0LnRvcDsNCisgICAgRlhfRkxPQVQgZkJvdHRvbSA9IHJlY3QuYm90dG9tOw0KKyAgICBpZiAoZldpZHRoID4gMC4wZikgew0KKyAgICAgICAgRlhfRkxPQVQgZkhhbGZXaWR0aCA9IGZXaWR0aCAvIDIuMGY7DQorICAgICAgICBzd2l0Y2ggKG5TdHlsZSkgew0KKyAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgY2FzZSBQQlNfU09MSUQ6DQorICAgICAgICAgICAgICAgIHNDb2xvciA9IEdlbmVyYXRlQ29sb3JBUChjb2xvciwgVFJVRSk7DQorICAgICAgICAgICAgICAgIGlmIChzQ29sb3IuR2V0TGVuZ3RoKCkgPiAwKSB7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IHNDb2xvcjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgZkxlZnQgPDwgIiAiIDw8IGZCb3R0b20gPDwgIiAiIDw8IGZSaWdodCAtIGZMZWZ0IDw8ICIgIiA8PCBmVG9wIC0gZkJvdHRvbSA8PCAiIHJlXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBmTGVmdCArIGZXaWR0aCA8PCAiICIgPDwgZkJvdHRvbSArIGZXaWR0aCA8PCAiICINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZlJpZ2h0IC0gZkxlZnQgLSBmV2lkdGggKiAyIDw8ICIgIiA8PCBmVG9wIC0gZkJvdHRvbSAtIGZXaWR0aCAqIDIgPDwgIiByZVxuIjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgImYqXG4iOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgUEJTX0RBU0g6DQorICAgICAgICAgICAgICAgIHNDb2xvciA9IEdlbmVyYXRlQ29sb3JBUChjb2xvciwgRkFMU0UpOw0KKyAgICAgICAgICAgICAgICBpZiAoc0NvbG9yLkdldExlbmd0aCgpID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBzQ29sb3I7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IGZXaWR0aCA8PCAiIHciIDw8ICIgWyIgPDwgZGFzaC5uRGFzaCA8PCAiICIgPDwgZGFzaC5uR2FwIDw8ICJdICIgPDwgZGFzaC5uUGhhc2UgPDwgIiBkXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBmTGVmdCArIGZXaWR0aCAvIDIgPDwgIiAiIDw8IGZCb3R0b20gKyBmV2lkdGggLyAyIDw8ICIgbVxuIjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgZkxlZnQgKyBmV2lkdGggLyAyIDw8ICIgIiA8PCBmVG9wIC0gZldpZHRoIC8gMiA8PCAiIGxcbiI7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IGZSaWdodCAtIGZXaWR0aCAvIDIgPDwgIiAiIDw8IGZUb3AgLSBmV2lkdGggLyAyIDw8ICIgbFxuIjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgZlJpZ2h0IC0gZldpZHRoIC8gMiA8PCAiICIgPDwgZkJvdHRvbSArIGZXaWR0aCAvIDIgPDwgIiBsXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBmTGVmdCArIGZXaWR0aCAvIDIgPDwgIiAiIDw8IGZCb3R0b20gKyBmV2lkdGggLyAyIDw8ICIgbCBTXG4iOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgUEJTX0JFVkVMRUQ6DQorICAgICAgICAgICAgY2FzZSBQQlNfSU5TRVQ6DQorICAgICAgICAgICAgICAgIHNDb2xvciA9IEdlbmVyYXRlQ29sb3JBUChjckxlZnRUb3AsIFRSVUUpOw0KKyAgICAgICAgICAgICAgICBpZiAoc0NvbG9yLkdldExlbmd0aCgpID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBzQ29sb3I7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IGZMZWZ0ICsgZkhhbGZXaWR0aCA8PCAiICIgPDwgZkJvdHRvbSArIGZIYWxmV2lkdGggPDwgIiBtXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBmTGVmdCArIGZIYWxmV2lkdGggPDwgIiAiIDw8IGZUb3AgLSBmSGFsZldpZHRoIDw8ICIgbFxuIjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgZlJpZ2h0IC0gZkhhbGZXaWR0aCA8PCAiICIgPDwgZlRvcCAtIGZIYWxmV2lkdGggPDwgIiBsXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBmUmlnaHQgLSBmSGFsZldpZHRoICogMiA8PCAiICIgPDwgZlRvcCAtIGZIYWxmV2lkdGggKiAyIDw8ICIgbFxuIjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgZkxlZnQgKyBmSGFsZldpZHRoICogMiA8PCAiICIgPDwgZlRvcCAtIGZIYWxmV2lkdGggKiAyIDw8ICIgbFxuIjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgZkxlZnQgKyBmSGFsZldpZHRoICogMiA8PCAiICIgPDwgZkJvdHRvbSArIGZIYWxmV2lkdGggKiAyIDw8ICIgbCBmXG4iOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHNDb2xvciA9IEdlbmVyYXRlQ29sb3JBUChjclJpZ2h0Qm90dG9tLCBUUlVFKTsNCisgICAgICAgICAgICAgICAgaWYgKHNDb2xvci5HZXRMZW5ndGgoKSA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgc0NvbG9yOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBmUmlnaHQgLSBmSGFsZldpZHRoIDw8ICIgIiA8PAlmVG9wIC0gZkhhbGZXaWR0aCA8PCAiIG1cbiI7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IGZSaWdodCAtIGZIYWxmV2lkdGggPDwgIiAiIDw8CWZCb3R0b20gKyBmSGFsZldpZHRoIDw8ICIgbFxuIjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgZkxlZnQgKyBmSGFsZldpZHRoIDw8ICIgIiA8PCAJZkJvdHRvbSArIGZIYWxmV2lkdGggPDwgIiBsXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBmTGVmdCArIGZIYWxmV2lkdGggKiAyIDw8ICIgIiA8PCBmQm90dG9tICsgZkhhbGZXaWR0aCAqIDIgPDwgIiBsXG4iOw0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBmUmlnaHQgLSBmSGFsZldpZHRoICogMiA8PCAiICIgPDwgZkJvdHRvbSArIGZIYWxmV2lkdGggKiAyIDw8ICIgbFxuIjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgZlJpZ2h0IC0gZkhhbGZXaWR0aCAqIDIgPDwgIiAiIDw8IGZUb3AgLSBmSGFsZldpZHRoICogMiA8PCAiIGwgZlxuIjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBzQ29sb3IgPSBHZW5lcmF0ZUNvbG9yQVAoY29sb3IsIFRSVUUpOw0KKyAgICAgICAgICAgICAgICBpZiAoc0NvbG9yLkdldExlbmd0aCgpID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBzQ29sb3I7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IGZMZWZ0IDw8ICIgIiA8PCBmQm90dG9tIDw8ICIgIiA8PAlmUmlnaHQgLSBmTGVmdCA8PCAiICIgPDwgZlRvcCAtIGZCb3R0b20gPDwgIiByZVxuIjsNCisgICAgICAgICAgICAgICAgICAgIHNBcHBTdHJlYW0gPDwgZkxlZnQgKyBmSGFsZldpZHRoIDw8ICIgIiA8PCBmQm90dG9tICsgZkhhbGZXaWR0aCA8PCAiICINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZlJpZ2h0IC0gZkxlZnQgLSBmSGFsZldpZHRoICogMiA8PCAiICIgPDwgZlRvcCAtIGZCb3R0b20gLSBmSGFsZldpZHRoICogMiA8PCAiIHJlIGYqXG4iOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgUEJTX1VOREVSTElORUQ6DQorICAgICAgICAgICAgICAgIHNDb2xvciA9IEdlbmVyYXRlQ29sb3JBUChjb2xvciwgRkFMU0UpOw0KKyAgICAgICAgICAgICAgICBpZiAoc0NvbG9yLkdldExlbmd0aCgpID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgc0FwcFN0cmVhbSA8PCBzQ29sb3I7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IGZXaWR0aCA8PCAiIHdcbiI7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IGZMZWZ0IDw8ICIgIiA8PCBmQm90dG9tICsgZldpZHRoIC8gMiA8PCAiIG1cbiI7DQorICAgICAgICAgICAgICAgICAgICBzQXBwU3RyZWFtIDw8IGZSaWdodCA8PCAiICIgPDwgZkJvdHRvbSArIGZXaWR0aCAvIDIgPDwgIiBsIFNcbiI7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHNBcHBTdHJlYW0uR2V0Qnl0ZVN0cmluZygpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUFZUX0dlbmVyYXRlQVA6OkdlbmVyYXRlQ29sb3JBUChjb25zdCBDUFZUX0NvbG9yICYgY29sb3IsIGNvbnN0IEZYX0JPT0wgJiBiRmlsbE9yU3Ryb2tlKQ0KK3sNCisgICAgQ0ZYX0J5dGVUZXh0QnVmIHNDb2xvclN0cmVhbTsNCisgICAgc3dpdGNoIChjb2xvci5uQ29sb3JUeXBlKSB7DQorICAgICAgICBjYXNlIENUX1JHQjoNCisgICAgICAgICAgICBzQ29sb3JTdHJlYW0gPDwgY29sb3IuZkNvbG9yMSA8PCAiICIgPDwgY29sb3IuZkNvbG9yMiA8PCAiICIgPDwgY29sb3IuZkNvbG9yMyA8PCAiICINCisgICAgICAgICAgICAgICAgICAgICAgICAgPDwgKGJGaWxsT3JTdHJva2UgPyAicmciIDogIlJHIikgPDwgIlxuIjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgQ1RfR1JBWToNCisgICAgICAgICAgICBzQ29sb3JTdHJlYW0gPDwgY29sb3IuZkNvbG9yMSA8PCAiICIgPDwgKGJGaWxsT3JTdHJva2UgPyAiZyIgOiAiRyIpIDw8ICJcbiI7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIENUX0NNWUs6DQorICAgICAgICAgICAgc0NvbG9yU3RyZWFtIDw8IGNvbG9yLmZDb2xvcjEgPDwgIiAiIDw8IGNvbG9yLmZDb2xvcjIgPDwgIiAiIDw8IGNvbG9yLmZDb2xvcjMgPDwgIiAiIDw8IGNvbG9yLmZDb2xvcjQgPDwgIiAiDQorICAgICAgICAgICAgICAgICAgICAgICAgIDw8IChiRmlsbE9yU3Ryb2tlID8gImsiIDogIksiKSA8PCAiXG4iOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIHJldHVybiBzQ29sb3JTdHJlYW0uR2V0Qnl0ZVN0cmluZygpOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmZG9jL2RvY19iYXNpYy5jcHAgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19iYXNpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjOGZiNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX2Jhc2ljLmNwcApAQCAtMCwwICsxLDU2NyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmRvYy9mcGRmX2RvYy5oIg0KK2NvbnN0IGludCBuTWF4UmVjdXJzaW9uID0gMzI7DQoraW50IENQREZfRGVzdDo6R2V0UGFnZUluZGV4KENQREZfRG9jdW1lbnQqIHBEb2MpDQorew0KKyAgICBpZiAobV9wT2JqID09IE5VTEwgfHwgbV9wT2JqLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcFBhZ2UgPSAoKENQREZfQXJyYXkqKW1fcE9iaiktPkdldEVsZW1lbnRWYWx1ZSgwKTsNCisgICAgaWYgKHBQYWdlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChwUGFnZS0+R2V0VHlwZSgpID09IFBERk9CSl9OVU1CRVIpIHsNCisgICAgICAgIHJldHVybiBwUGFnZS0+R2V0SW50ZWdlcigpOw0KKyAgICB9DQorICAgIGlmIChwUGFnZS0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gcERvYy0+R2V0UGFnZUluZGV4KHBQYWdlLT5HZXRPYmpOdW0oKSk7DQorfQ0KK0ZYX0RXT1JEIENQREZfRGVzdDo6R2V0UGFnZU9iak51bSgpDQorew0KKyAgICBpZiAobV9wT2JqID09IE5VTEwgfHwgbV9wT2JqLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcFBhZ2UgPSAoKENQREZfQXJyYXkqKW1fcE9iaiktPkdldEVsZW1lbnRWYWx1ZSgwKTsNCisgICAgaWYgKHBQYWdlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChwUGFnZS0+R2V0VHlwZSgpID09IFBERk9CSl9OVU1CRVIpIHsNCisgICAgICAgIHJldHVybiBwUGFnZS0+R2V0SW50ZWdlcigpOw0KKyAgICB9DQorICAgIGlmIChwUGFnZS0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICByZXR1cm4gcFBhZ2UtPkdldE9iak51bSgpOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitjb25zdCBGWF9DSEFSKiBnX3Nab29tTW9kZXNbXSA9IHsiWFlaIiwgIkZpdCIsICJGaXRIIiwgIkZpdFYiLCAiRml0UiIsICJGaXRCIiwgIkZpdEJIIiwgIkZpdEJWIiwgIiJ9Ow0KK2ludCBDUERGX0Rlc3Q6OkdldFpvb21Nb2RlKCkNCit7DQorICAgIGlmIChtX3BPYmogPT0gTlVMTCB8fCBtX3BPYmotPkdldFR5cGUoKSAhPSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIG1vZGUgPSAoKENQREZfQXJyYXkqKW1fcE9iaiktPkdldEVsZW1lbnRWYWx1ZSgxKS0+R2V0U3RyaW5nKCk7DQorICAgIGludCBpID0gMDsNCisgICAgd2hpbGUgKGdfc1pvb21Nb2Rlc1tpXVswXSAhPSAnXDAnKSB7DQorICAgICAgICBpZiAobW9kZSA9PSBnX3Nab29tTW9kZXNbaV0pIHsNCisgICAgICAgICAgICByZXR1cm4gaSArIDE7DQorICAgICAgICB9DQorICAgICAgICBpICsrOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitGWF9GTE9BVCBDUERGX0Rlc3Q6OkdldFBhcmFtKGludCBpbmRleCkNCit7DQorICAgIGlmIChtX3BPYmogPT0gTlVMTCB8fCBtX3BPYmotPkdldFR5cGUoKSAhPSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiAoKENQREZfQXJyYXkqKW1fcE9iaiktPkdldE51bWJlcigyICsgaW5kZXgpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX0Rlc3Q6OkdldFJlbW90ZU5hbWUoKQ0KK3sNCisgICAgaWYgKG1fcE9iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wT2JqLT5HZXRTdHJpbmcoKTsNCit9DQorQ1BERl9OYW1lVHJlZTo6Q1BERl9OYW1lVHJlZShDUERGX0RvY3VtZW50KiBwRG9jLCBGWF9CU1RSIGNhdGVnb3J5KQ0KK3sNCisgICAgbV9wUm9vdCA9IHBEb2MtPkdldFJvb3QoKS0+R2V0RGljdChGWF9CU1RSQygiTmFtZXMiKSktPkdldERpY3QoY2F0ZWdvcnkpOw0KK30NCitzdGF0aWMgQ1BERl9PYmplY3QqIFNlYXJjaE5hbWVOb2RlKENQREZfRGljdGlvbmFyeSogcE5vZGUsIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBjc05hbWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG5JbmRleCwgQ1BERl9BcnJheSoqIHBwRmluZCwgaW50IG5MZXZlbCA9IDApDQorew0KKyAgICBpZiAobkxldmVsID4gbk1heFJlY3Vyc2lvbikgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcExpbWl0cyA9IHBOb2RlLT5HZXRBcnJheShGWF9CU1RSQygiTGltaXRzIikpOw0KKyAgICBpZiAocExpbWl0cyAhPSBOVUxMKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc0xlZnQgPSBwTGltaXRzLT5HZXRTdHJpbmcoMCk7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc1JpZ2h0ID0gcExpbWl0cy0+R2V0U3RyaW5nKDEpOw0KKyAgICAgICAgaWYgKGNzTGVmdC5Db21wYXJlKGNzUmlnaHQpID4gMCkgew0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGNzVG1wID0gY3NSaWdodDsNCisgICAgICAgICAgICBjc1JpZ2h0ID0gY3NMZWZ0Ow0KKyAgICAgICAgICAgIGNzTGVmdCA9IGNzVG1wOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNzTmFtZS5Db21wYXJlKGNzTGVmdCkgPCAwIHx8IGNzTmFtZS5Db21wYXJlKGNzUmlnaHQpID4gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBOYW1lcyA9IHBOb2RlLT5HZXRBcnJheShGWF9CU1RSQygiTmFtZXMiKSk7DQorICAgIGlmIChwTmFtZXMpIHsNCisgICAgICAgIEZYX0RXT1JEIGR3Q291bnQgPSBwTmFtZXMtPkdldENvdW50KCkgLyAyOw0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IGR3Q291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc1ZhbHVlID0gcE5hbWVzLT5HZXRTdHJpbmcoaSAqIDIpOw0KKyAgICAgICAgICAgIEZYX0lOVDMyIGlDb21wYXJlID0gY3NWYWx1ZS5Db21wYXJlKGNzTmFtZSk7DQorICAgICAgICAgICAgaWYgKGlDb21wYXJlIDw9IDApIHsNCisgICAgICAgICAgICAgICAgaWYgKHBwRmluZCAhPSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICAqcHBGaW5kID0gcE5hbWVzOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChpQ29tcGFyZSA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG5JbmRleCArPSBpOw0KKyAgICAgICAgICAgIHJldHVybiBwTmFtZXMtPkdldEVsZW1lbnRWYWx1ZShpICogMiArIDEpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbkluZGV4ICs9IGR3Q291bnQ7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwS2lkcyA9IHBOb2RlLT5HZXRBcnJheShGWF9CU1RSQygiS2lkcyIpKTsNCisgICAgaWYgKHBLaWRzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwS2lkcy0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwS2lkID0gcEtpZHMtPkdldERpY3QoaSk7DQorICAgICAgICBpZiAocEtpZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDUERGX09iamVjdCogcEZvdW5kID0gU2VhcmNoTmFtZU5vZGUocEtpZCwgY3NOYW1lLCBuSW5kZXgsIHBwRmluZCwgbkxldmVsICsgMSk7DQorICAgICAgICBpZiAocEZvdW5kKSB7DQorICAgICAgICAgICAgcmV0dXJuIHBGb3VuZDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorc3RhdGljIENQREZfT2JqZWN0KiBTZWFyY2hOYW1lTm9kZShDUERGX0RpY3Rpb25hcnkqIHBOb2RlLCBpbnQgbkluZGV4LCBpbnQmIG5DdXJJbmRleCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nJiBjc05hbWUsIENQREZfQXJyYXkqKiBwcEZpbmQsIGludCBuTGV2ZWwgPSAwKQ0KK3sNCisgICAgaWYgKG5MZXZlbCA+IG5NYXhSZWN1cnNpb24pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBOYW1lcyA9IHBOb2RlLT5HZXRBcnJheShGWF9CU1RSQygiTmFtZXMiKSk7DQorICAgIGlmIChwTmFtZXMpIHsNCisgICAgICAgIGludCBuQ291bnQgPSBwTmFtZXMtPkdldENvdW50KCkgLyAyOw0KKyAgICAgICAgaWYgKG5JbmRleCA+PSBuQ3VySW5kZXggKyBuQ291bnQpIHsNCisgICAgICAgICAgICBuQ3VySW5kZXggKz0gbkNvdW50Ow0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAocHBGaW5kICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgKnBwRmluZCA9IHBOYW1lczsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgY3NOYW1lID0gcE5hbWVzLT5HZXRTdHJpbmcoKG5JbmRleCAtIG5DdXJJbmRleCkgKiAyKTsNCisgICAgICAgICAgICByZXR1cm4gcE5hbWVzLT5HZXRFbGVtZW50VmFsdWUoKG5JbmRleCAtIG5DdXJJbmRleCkgKiAyICsgMSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEtpZHMgPSBwTm9kZS0+R2V0QXJyYXkoRlhfQlNUUkMoIktpZHMiKSk7DQorICAgIGlmIChwS2lkcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcEtpZHMtPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcEtpZCA9IHBLaWRzLT5HZXREaWN0KGkpOw0KKyAgICAgICAgaWYgKHBLaWQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBGb3VuZCA9IFNlYXJjaE5hbWVOb2RlKHBLaWQsIG5JbmRleCwgbkN1ckluZGV4LCBjc05hbWUsIHBwRmluZCwgbkxldmVsICsgMSk7DQorICAgICAgICBpZiAocEZvdW5kKSB7DQorICAgICAgICAgICAgcmV0dXJuIHBGb3VuZDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorc3RhdGljIGludCBDb3VudE5hbWVzKENQREZfRGljdGlvbmFyeSogcE5vZGUsIGludCBuTGV2ZWwgPSAwKQ0KK3sNCisgICAgaWYgKG5MZXZlbCA+IG5NYXhSZWN1cnNpb24pIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBOYW1lcyA9IHBOb2RlLT5HZXRBcnJheShGWF9CU1RSQygiTmFtZXMiKSk7DQorICAgIGlmIChwTmFtZXMpIHsNCisgICAgICAgIHJldHVybiBwTmFtZXMtPkdldENvdW50KCkgLyAyOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBLaWRzID0gcE5vZGUtPkdldEFycmF5KEZYX0JTVFJDKCJLaWRzIikpOw0KKyAgICBpZiAocEtpZHMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaW50IG5Db3VudCA9IDA7DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwS2lkcy0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwS2lkID0gcEtpZHMtPkdldERpY3QoaSk7DQorICAgICAgICBpZiAocEtpZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBuQ291bnQgKz0gQ291bnROYW1lcyhwS2lkLCBuTGV2ZWwgKyAxKTsNCisgICAgfQ0KKyAgICByZXR1cm4gbkNvdW50Ow0KK30NCitpbnQgQ1BERl9OYW1lVHJlZTo6R2V0Q291bnQoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcFJvb3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIDo6Q291bnROYW1lcyhtX3BSb290KTsNCit9DQoraW50IENQREZfTmFtZVRyZWU6OkdldEluZGV4KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBjc05hbWUpIGNvbnN0DQorew0KKyAgICBpZiAobV9wUm9vdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaW50IG5JbmRleCA9IDA7DQorICAgIGlmIChTZWFyY2hOYW1lTm9kZShtX3BSb290LCBjc05hbWUsIG5JbmRleCwgTlVMTCkgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIHJldHVybiBuSW5kZXg7DQorfQ0KK0NQREZfT2JqZWN0KiBDUERGX05hbWVUcmVlOjpMb29rdXBWYWx1ZShpbnQgbkluZGV4LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcFJvb3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaW50IG5DdXJJbmRleCA9IDA7DQorICAgIHJldHVybiBTZWFyY2hOYW1lTm9kZShtX3BSb290LCBuSW5kZXgsIG5DdXJJbmRleCwgY3NOYW1lLCBOVUxMKTsNCit9DQorQ1BERl9PYmplY3QqIENQREZfTmFtZVRyZWU6Okxvb2t1cFZhbHVlKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBjc05hbWUpIGNvbnN0DQorew0KKyAgICBpZiAobV9wUm9vdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpbnQgbkluZGV4ID0gMDsNCisgICAgcmV0dXJuIFNlYXJjaE5hbWVOb2RlKG1fcFJvb3QsIGNzTmFtZSwgbkluZGV4LCBOVUxMKTsNCit9DQorQ1BERl9BcnJheSoJQ1BERl9OYW1lVHJlZTo6TG9va3VwTmFtZWREZXN0KENQREZfRG9jdW1lbnQqIHBEb2MsIEZYX0JTVFIgc05hbWUpDQorew0KKyAgICBDUERGX09iamVjdCogcFZhbHVlID0gTG9va3VwVmFsdWUoc05hbWUpOw0KKyAgICBpZiAocFZhbHVlID09IE5VTEwpIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcERlc3RzID0gcERvYy0+R2V0Um9vdCgpLT5HZXREaWN0KEZYX0JTVFJDKCJEZXN0cyIpKTsNCisgICAgICAgIGlmIChwRGVzdHMgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFZhbHVlID0gcERlc3RzLT5HZXRFbGVtZW50VmFsdWUoc05hbWUpOw0KKyAgICB9DQorICAgIGlmIChwVmFsdWUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBWYWx1ZS0+R2V0VHlwZSgpID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgcmV0dXJuIChDUERGX0FycmF5KilwVmFsdWU7DQorICAgIH0NCisgICAgaWYgKHBWYWx1ZS0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICByZXR1cm4gKChDUERGX0RpY3Rpb25hcnkqKXBWYWx1ZSktPkdldEFycmF5KEZYX0JTVFJDKCJEIikpOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitzdGF0aWMgQ0ZYX1dpZGVTdHJpbmcgQ2hhbmdlU2xhc2hUb1BsYXRmb3JtKEZYX0xQQ1dTVFIgc3RyKQ0KK3sNCisgICAgQ0ZYX1dpZGVTdHJpbmcgcmVzdWx0Ow0KKyAgICB3aGlsZSAoKnN0cikgew0KKyAgICAgICAgaWYgKCpzdHIgPT0gJy8nKSB7DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICAgICAgICAgIHJlc3VsdCArPSAnOic7DQorI2VsaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgICAgICAgICByZXN1bHQgKz0gJ1xcJzsNCisjZWxzZQ0KKyAgICAgICAgICAgIHJlc3VsdCArPSAqc3RyOw0KKyNlbmRpZg0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXN1bHQgKz0gKnN0cjsNCisgICAgICAgIH0NCisgICAgICAgIHN0cisrOw0KKyAgICB9DQorICAgIHJldHVybiByZXN1bHQ7DQorfQ0KK3N0YXRpYyBDRlhfV2lkZVN0cmluZyBGSUxFU1BFQ19EZWNvZGVGaWxlTmFtZShGWF9XU1RSIGZpbGVwYXRoKQ0KK3sNCisgICAgaWYgKGZpbGVwYXRoLkdldExlbmd0aCgpIDw9IDEpIHsNCisgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZygpOw0KKyAgICB9DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICBpZiAoZmlsZXBhdGguTGVmdChzaXplb2YoIi9NYWMiKSAtIDEpID09IENGWF9XaWRlU3RyaW5nQyhMIi9NYWMiKSkgew0KKyAgICAgICAgcmV0dXJuIENoYW5nZVNsYXNoVG9QbGF0Zm9ybShmaWxlcGF0aC5HZXRQdHIoKSArIDEpOw0KKyAgICB9DQorICAgIHJldHVybiBDaGFuZ2VTbGFzaFRvUGxhdGZvcm0oZmlsZXBhdGguR2V0UHRyKCkpOw0KKyNlbGlmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorICAgIGlmIChmaWxlcGF0aC5HZXRBdCgwKSAhPSAnLycpIHsNCisgICAgICAgIHJldHVybiBDaGFuZ2VTbGFzaFRvUGxhdGZvcm0oZmlsZXBhdGguR2V0UHRyKCkpOw0KKyAgICB9DQorICAgIGlmIChmaWxlcGF0aC5HZXRBdCgxKSA9PSAnLycpIHsNCisgICAgICAgIHJldHVybiBDaGFuZ2VTbGFzaFRvUGxhdGZvcm0oZmlsZXBhdGguR2V0UHRyKCkgKyAxKTsNCisgICAgfQ0KKyAgICBpZiAoZmlsZXBhdGguR2V0QXQoMikgPT0gJy8nKSB7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyByZXN1bHQ7DQorICAgICAgICByZXN1bHQgKz0gZmlsZXBhdGguR2V0QXQoMSk7DQorICAgICAgICByZXN1bHQgKz0gJzonOw0KKyAgICAgICAgcmVzdWx0ICs9IENoYW5nZVNsYXNoVG9QbGF0Zm9ybShmaWxlcGF0aC5HZXRQdHIoKSArIDIpOw0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKyAgICBDRlhfV2lkZVN0cmluZyByZXN1bHQ7DQorICAgIHJlc3VsdCArPSAnXFwnOw0KKyAgICByZXN1bHQgKz0gQ2hhbmdlU2xhc2hUb1BsYXRmb3JtKGZpbGVwYXRoLkdldFB0cigpKTsNCisgICAgcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICByZXR1cm4gZmlsZXBhdGg7DQorI2VuZGlmDQorfQ0KK0ZYX0JPT0wgQ1BERl9GaWxlU3BlYzo6R2V0RmlsZU5hbWUoQ0ZYX1dpZGVTdHJpbmcgJmNzRmlsZU5hbWUpIGNvbnN0DQorew0KKyAgICBpZiAobV9wT2JqID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9wT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSAoQ1BERl9EaWN0aW9uYXJ5KiltX3BPYmo7DQorICAgICAgICBjc0ZpbGVOYW1lID0gcERpY3QtPkdldFVuaWNvZGVUZXh0KEZYX0JTVFJDKCJVRiIpKTsNCisgICAgICAgIGlmIChjc0ZpbGVOYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIGNzRmlsZU5hbWUgPSBDRlhfV2lkZVN0cmluZzo6RnJvbUxvY2FsKHBEaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIkYiKSkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBEaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIkZTIikpID09IEZYX0JTVFJDKCJVUkwiKSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNzRmlsZU5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgaWYgKHBEaWN0LT5LZXlFeGlzdChGWF9CU1RSQygiRE9TIikpKSB7DQorICAgICAgICAgICAgICAgIGNzRmlsZU5hbWUgPSBDRlhfV2lkZVN0cmluZzo6RnJvbUxvY2FsKHBEaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIkRPUyIpKSk7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChwRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIk1hYyIpKSkgew0KKyAgICAgICAgICAgICAgICBjc0ZpbGVOYW1lID0gQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbChwRGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJNYWMiKSkpOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAocERpY3QtPktleUV4aXN0KEZYX0JTVFJDKCJVbml4IikpKSB7DQorICAgICAgICAgICAgICAgIGNzRmlsZU5hbWUgPSBDRlhfV2lkZVN0cmluZzo6RnJvbUxvY2FsKHBEaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlVuaXgiKSkpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBjc0ZpbGVOYW1lID0gQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbChtX3BPYmotPkdldFN0cmluZygpKTsNCisgICAgfQ0KKyAgICBjc0ZpbGVOYW1lID0gRklMRVNQRUNfRGVjb2RlRmlsZU5hbWUoY3NGaWxlTmFtZSk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDUERGX0ZpbGVTcGVjOjpDUERGX0ZpbGVTcGVjKCkNCit7DQorICAgIG1fcE9iaiA9IENQREZfRGljdGlvbmFyeTo6Q3JlYXRlKCk7DQorICAgIGlmIChtX3BPYmogIT0gTlVMTCkgew0KKyAgICAgICAgKChDUERGX0RpY3Rpb25hcnkqKW1fcE9iaiktPlNldEF0TmFtZShGWF9CU1RSQygiVHlwZSIpLCBGWF9CU1RSQygiRmlsZXNwZWMiKSk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0ZpbGVTcGVjOjpJc1VSTCgpIGNvbnN0DQorew0KKyAgICBpZiAobV9wT2JqID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9wT2JqLT5HZXRUeXBlKCkgIT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gKChDUERGX0RpY3Rpb25hcnkqKW1fcE9iaiktPkdldFN0cmluZyhGWF9CU1RSQygiRlMiKSkgPT0gRlhfQlNUUkMoIlVSTCIpOw0KK30NCitzdGF0aWMgQ0ZYX1dpZGVTdHJpbmcgQ2hhbmdlU2xhc2hUb1BERihGWF9MUENXU1RSIHN0cikNCit7DQorICAgIENGWF9XaWRlU3RyaW5nIHJlc3VsdDsNCisgICAgd2hpbGUgKCpzdHIpIHsNCisgICAgICAgIGlmICgqc3RyID09ICdcXCcgfHwgKnN0ciA9PSAnOicpIHsNCisgICAgICAgICAgICByZXN1bHQgKz0gJy8nOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXN1bHQgKz0gKnN0cjsNCisgICAgICAgIH0NCisgICAgICAgIHN0cisrOw0KKyAgICB9DQorICAgIHJldHVybiByZXN1bHQ7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIEZJTEVTUEVDX0VuY29kZUZpbGVOYW1lKEZYX1dTVFIgZmlsZXBhdGgpDQorew0KKyAgICBpZiAoZmlsZXBhdGguR2V0TGVuZ3RoKCkgPD0gMSkgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgaWYgKGZpbGVwYXRoLkdldEF0KDEpID09ICc6Jykgew0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgcmVzdWx0Ow0KKyAgICAgICAgcmVzdWx0ID0gJy8nOw0KKyAgICAgICAgcmVzdWx0ICs9IGZpbGVwYXRoLkdldEF0KDApOw0KKyAgICAgICAgaWYgKGZpbGVwYXRoLkdldEF0KDIpICE9ICdcXCcpIHsNCisgICAgICAgICAgICByZXN1bHQgKz0gJy8nOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmVzdWx0ICs9IENoYW5nZVNsYXNoVG9QREYoZmlsZXBhdGguR2V0UHRyKCkgKyAyKTsNCisgICAgICAgIHJldHVybiByZXN1bHQ7DQorICAgIH0NCisgICAgaWYgKGZpbGVwYXRoLkdldEF0KDApID09ICdcXCcgJiYgZmlsZXBhdGguR2V0QXQoMSkgPT0gJ1xcJykgew0KKyAgICAgICAgcmV0dXJuIENoYW5nZVNsYXNoVG9QREYoZmlsZXBhdGguR2V0UHRyKCkgKyAxKTsNCisgICAgfQ0KKyAgICBpZiAoZmlsZXBhdGguR2V0QXQoMCkgPT0gJ1xcJykgew0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgcmVzdWx0Ow0KKyAgICAgICAgcmVzdWx0ID0gJy8nOw0KKyAgICAgICAgcmVzdWx0ICs9IENoYW5nZVNsYXNoVG9QREYoZmlsZXBhdGguR2V0UHRyKCkpOw0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKyAgICByZXR1cm4gQ2hhbmdlU2xhc2hUb1BERihmaWxlcGF0aC5HZXRQdHIoKSk7DQorI2VsaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgIGlmIChmaWxlcGF0aC5MZWZ0KHNpemVvZigiTWFjIikgLSAxKSA9PSBGWF9XU1RSQyhMIk1hYyIpKSB7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyByZXN1bHQ7DQorICAgICAgICByZXN1bHQgPSAnLyc7DQorICAgICAgICByZXN1bHQgKz0gQ2hhbmdlU2xhc2hUb1BERihmaWxlcGF0aC5HZXRQdHIoKSk7DQorICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICB9DQorICAgIHJldHVybiBDaGFuZ2VTbGFzaFRvUERGKGZpbGVwYXRoLkdldFB0cigpKTsNCisjZWxzZQ0KKyAgICByZXR1cm4gZmlsZXBhdGg7DQorI2VuZGlmDQorfQ0KK0NQREZfU3RyZWFtKiBDUERGX0ZpbGVTcGVjOjpHZXRGaWxlU3RyZWFtKCkgY29uc3QNCit7DQorICAgIGlmIChtX3BPYmogPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhfSU5UMzIgaVR5cGUgPSBtX3BPYmotPkdldFR5cGUoKTsNCisgICAgaWYgKGlUeXBlID09IFBERk9CSl9TVFJFQU0pIHsNCisgICAgICAgIHJldHVybiAoQ1BERl9TdHJlYW0qKW1fcE9iajsNCisgICAgfSBlbHNlIGlmIChpVHlwZSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICpwRUYgPSAoKENQREZfRGljdGlvbmFyeSopbV9wT2JqKS0+R2V0RGljdChGWF9CU1RSQygiRUYiKSk7DQorICAgICAgICBpZiAocEVGID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBwRUYtPkdldFN0cmVhbShGWF9CU1RSQygiRiIpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorc3RhdGljIHZvaWQgRlBERkRPQ19GSUxFU1BFQ19TZXRGaWxlTmFtZShDUERGX09iamVjdCAqcE9iaiwgRlhfV1NUUiB3c0ZpbGVOYW1lLCBGWF9CT09MIGJVUkwpDQorew0KKyAgICBBU1NFUlQocE9iaiAhPSBOVUxMKTsNCisgICAgQ0ZYX1dpZGVTdHJpbmcgd3NTdHI7DQorICAgIGlmIChiVVJMKSB7DQorICAgICAgICB3c1N0ciA9IHdzRmlsZU5hbWU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB3c1N0ciA9IEZJTEVTUEVDX0VuY29kZUZpbGVOYW1lKHdzRmlsZU5hbWUpOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIGlUeXBlID0gcE9iai0+R2V0VHlwZSgpOw0KKyAgICBpZiAoaVR5cGUgPT0gUERGT0JKX1NUUklORykgew0KKyAgICAgICAgcE9iai0+U2V0U3RyaW5nKENGWF9CeXRlU3RyaW5nOjpGcm9tVW5pY29kZSh3c1N0cikpOw0KKyAgICB9IGVsc2UgaWYgKGlUeXBlID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gKENQREZfRGljdGlvbmFyeSopcE9iajsNCisgICAgICAgIHBEaWN0LT5TZXRBdFN0cmluZyhGWF9CU1RSQygiRiIpLCBDRlhfQnl0ZVN0cmluZzo6RnJvbVVuaWNvZGUod3NTdHIpKTsNCisgICAgICAgIHBEaWN0LT5TZXRBdFN0cmluZyhGWF9CU1RSQygiVUYiKSwgUERGX0VuY29kZVRleHQod3NTdHIpKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfRmlsZVNwZWM6OlNldEZpbGVOYW1lKEZYX1dTVFIgd3NGaWxlTmFtZSwgRlhfQk9PTCBiVVJMKQ0KK3sNCisgICAgQVNTRVJUKG1fcE9iaiAhPSBOVUxMKTsNCisgICAgaWYgKG1fcE9iai0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZICYmIGJVUkwpIHsNCisgICAgICAgICgoQ1BERl9EaWN0aW9uYXJ5KiltX3BPYmopLT5TZXRBdE5hbWUoRlhfQlNUUkMoIkZTIiksICJVUkwiKTsNCisgICAgfQ0KKyAgICBGUERGRE9DX0ZJTEVTUEVDX1NldEZpbGVOYW1lKG1fcE9iaiwgd3NGaWxlTmFtZSwgYlVSTCk7DQorfQ0KK3N0YXRpYyBDRlhfV2lkZVN0cmluZyBfTWFrZVJvbWFuKGludCBudW0pDQorew0KKyAgICBjb25zdCBpbnQgYXJhYmljW10gPSB7DQorICAgICAgICAxMDAwLCA5MDAsIDUwMCwgNDAwLCAxMDAsIDkwLCA1MCwgNDAsIDEwLCA5LCA1LCA0LCAxDQorICAgIH07DQorICAgIGNvbnN0IENGWF9XaWRlU3RyaW5nIHJvbWFuW10gPSB7DQorICAgICAgICBMIm0iLCBMImNtIiwgTCJkIiwgTCJjZCIsIEwiYyIsIEwieGMiLCBMImwiLCBMInhsIiwgTCJ4IiwgTCJpeCIsIEwidiIsIEwiaXYiLCBMImkiDQorICAgIH07DQorICAgIGNvbnN0IGludCBuTWF4TnVtID0gMTAwMDAwMDsNCisgICAgbnVtICU9IG5NYXhOdW07DQorICAgIGludCBpID0gMDsNCisgICAgQ0ZYX1dpZGVTdHJpbmcgd3NSb21hbk51bWJlcjsNCisgICAgd2hpbGUgKG51bSA+IDApIHsNCisgICAgICAgIHdoaWxlIChudW0gPj0gYXJhYmljW2ldKSB7DQorICAgICAgICAgICAgbnVtID0gbnVtIC0gYXJhYmljW2ldOw0KKyAgICAgICAgICAgIHdzUm9tYW5OdW1iZXIgKz0gcm9tYW5baV07DQorICAgICAgICB9DQorICAgICAgICBpID0gaSArIDE7DQorICAgIH0NCisgICAgcmV0dXJuIHdzUm9tYW5OdW1iZXI7DQorfQ0KK3N0YXRpYyBDRlhfV2lkZVN0cmluZyBfTWFrZUxldHRlcnMoaW50IG51bSkNCit7DQorICAgIGlmIChudW0gPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgd3NMZXR0ZXJzOw0KKyAgICBjb25zdCBpbnQgbk1heENvdW50ID0gMTAwMDsNCisgICAgY29uc3QgaW50IG5MZXR0ZXJDb3VudCA9IDI2Ow0KKyAgICBudW0gLT0gMTsNCisgICAgaW50IGNvdW50ID0gbnVtIC8gbkxldHRlckNvdW50ICsgMTsNCisgICAgY291bnQgJT0gbk1heENvdW50Ow0KKyAgICBGWF9XQ0hBUiBjaCA9IEwnYScgKyBudW0gJSBuTGV0dGVyQ291bnQ7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgew0KKyAgICAgICAgd3NMZXR0ZXJzICs9IGNoOw0KKyAgICB9DQorICAgIHJldHVybiB3c0xldHRlcnM7DQorfQ0KK3N0YXRpYyBDRlhfV2lkZVN0cmluZyBfR2V0TGFiZWxOdW1Qb3J0aW9uKGludCBudW0sIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBic1N0eWxlKQ0KK3sNCisgICAgQ0ZYX1dpZGVTdHJpbmcgd3NOdW1Qb3J0aW9uOw0KKyAgICBpZgkJKGJzU3R5bGUuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gd3NOdW1Qb3J0aW9uOw0KKyAgICB9DQorICAgIGlmIChic1N0eWxlID09ICJEIikgew0KKyAgICAgICAgd3NOdW1Qb3J0aW9uLkZvcm1hdCgoRlhfTFBDV1NUUilMIiVkIiwgbnVtKTsNCisgICAgfSBlbHNlIGlmIChic1N0eWxlID09ICJSIikgew0KKyAgICAgICAgd3NOdW1Qb3J0aW9uID0gX01ha2VSb21hbihudW0pOw0KKyAgICAgICAgd3NOdW1Qb3J0aW9uLk1ha2VVcHBlcigpOw0KKyAgICB9IGVsc2UgaWYgKGJzU3R5bGUgPT0gInIiKSB7DQorICAgICAgICB3c051bVBvcnRpb24gPSBfTWFrZVJvbWFuKG51bSk7DQorICAgIH0gZWxzZSBpZiAoYnNTdHlsZSA9PSAiQSIpIHsNCisgICAgICAgIHdzTnVtUG9ydGlvbiA9IF9NYWtlTGV0dGVycyhudW0pOw0KKyAgICAgICAgd3NOdW1Qb3J0aW9uLk1ha2VVcHBlcigpOw0KKyAgICB9IGVsc2UgaWYgKGJzU3R5bGUgPT0gImEiKSB7DQorICAgICAgICB3c051bVBvcnRpb24gPSBfTWFrZUxldHRlcnMobnVtKTsNCisgICAgfQ0KKyAgICByZXR1cm4gd3NOdW1Qb3J0aW9uOw0KK30NCitDRlhfV2lkZVN0cmluZyBDUERGX1BhZ2VMYWJlbDo6R2V0TGFiZWwoaW50IG5QYWdlKSBjb25zdA0KK3sNCisgICAgQ0ZYX1dpZGVTdHJpbmcgd3NMYWJlbDsNCisgICAgaWYgKG1fcERvY3VtZW50ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiB3c0xhYmVsOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcFBERlJvb3QgPSBtX3BEb2N1bWVudC0+R2V0Um9vdCgpOw0KKyAgICBpZiAocFBERlJvb3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIHdzTGFiZWw7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwTGFiZWxzID0gcFBERlJvb3QtPkdldERpY3QoRlhfQlNUUkMoIlBhZ2VMYWJlbHMiKSk7DQorICAgIENQREZfTnVtYmVyVHJlZSBudW1iZXJUcmVlKHBMYWJlbHMpOw0KKyAgICBDUERGX09iamVjdCogcFZhbHVlID0gTlVMTDsNCisgICAgaW50IG4gPSBuUGFnZTsNCisgICAgd2hpbGUgKG4gPj0gMCkgew0KKyAgICAgICAgcFZhbHVlID0gbnVtYmVyVHJlZS5Mb29rdXBWYWx1ZShuKTsNCisgICAgICAgIGlmIChwVmFsdWUgIT0gTlVMTCkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbi0tOw0KKyAgICB9DQorICAgIGlmIChwVmFsdWUgIT0gTlVMTCkgew0KKyAgICAgICAgcFZhbHVlID0gcFZhbHVlLT5HZXREaXJlY3QoKTsNCisgICAgICAgIGlmIChwVmFsdWUtPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcExhYmVsID0gKENQREZfRGljdGlvbmFyeSopcFZhbHVlOw0KKyAgICAgICAgICAgIGlmIChwTGFiZWwtPktleUV4aXN0KEZYX0JTVFJDKCJQIikpKSB7DQorICAgICAgICAgICAgICAgIHdzTGFiZWwgKz0gcExhYmVsLT5HZXRVbmljb2RlVGV4dChGWF9CU1RSQygiUCIpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgYnNOdW1iZXJpbmdTdHlsZSA9IHBMYWJlbC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJTIiksIE5VTEwpOw0KKyAgICAgICAgICAgIGludCBuTGFiZWxOdW0gPSBuUGFnZSAtIG4gKyBwTGFiZWwtPkdldEludGVnZXIoRlhfQlNUUkMoIlN0IiksIDEpOw0KKyAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHdzTnVtUG9ydGlvbiA9IF9HZXRMYWJlbE51bVBvcnRpb24obkxhYmVsTnVtLCBic051bWJlcmluZ1N0eWxlKTsNCisgICAgICAgICAgICB3c0xhYmVsICs9IHdzTnVtUG9ydGlvbjsNCisgICAgICAgICAgICByZXR1cm4gd3NMYWJlbDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB3c0xhYmVsLkZvcm1hdCgoRlhfTFBDV1NUUilMIiVkIiwgblBhZ2UgKyAxKTsNCisgICAgcmV0dXJuIHdzTGFiZWw7DQorfQ0KK0ZYX0lOVDMyIENQREZfUGFnZUxhYmVsOjpHZXRQYWdlQnlMYWJlbChGWF9CU1RSIGJzTGFiZWwpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRG9jdW1lbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcFBERlJvb3QgPSBtX3BEb2N1bWVudC0+R2V0Um9vdCgpOw0KKyAgICBpZiAocFBERlJvb3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGludCBuUGFnZXMgPSBtX3BEb2N1bWVudC0+R2V0UGFnZUNvdW50KCk7DQorICAgIENGWF9CeXRlU3RyaW5nIGJzTGJsOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBic09yaWcgPSBic0xhYmVsOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5QYWdlczsgaSsrKSB7DQorICAgICAgICBic0xibCA9IFBERl9FbmNvZGVUZXh0KEdldExhYmVsKGkpKTsNCisgICAgICAgIGlmICghYnNMYmwuQ29tcGFyZShic09yaWcpKSB7DQorICAgICAgICAgICAgcmV0dXJuIGk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgYnNMYmwgPSBic09yaWc7DQorICAgIGludCBuUGFnZSA9IEZYU1lTX2F0b2koYnNMYmwpOw0KKyAgICBpZiAoblBhZ2UgPiAwICYmIG5QYWdlIDw9IG5QYWdlcykgew0KKyAgICAgICAgcmV0dXJuIG5QYWdlOw0KKyAgICB9DQorICAgIHJldHVybiAtMTsNCit9DQorRlhfSU5UMzIgQ1BERl9QYWdlTGFiZWw6OkdldFBhZ2VCeUxhYmVsKEZYX1dTVFIgd3NMYWJlbCkgY29uc3QNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIGJzTGFiZWwgPSBQREZfRW5jb2RlVGV4dCgoQ0ZYX1dpZGVTdHJpbmcpd3NMYWJlbCk7DQorICAgIHJldHVybiBHZXRQYWdlQnlMYWJlbChic0xhYmVsKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmRvYy9kb2NfYm9va21hcmsuY3BwIGIvY29yZS9zcmMvZnBkZmRvYy9kb2NfYm9va21hcmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYzk1NGIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19ib29rbWFyay5jcHAKQEAgLTAsMCArMSw5MSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmRvYy9mcGRmX2RvYy5oIg0KK0NQREZfQm9va21hcmsgQ1BERl9Cb29rbWFya1RyZWU6OkdldEZpcnN0Q2hpbGQoQ1BERl9Cb29rbWFyayBQYXJlbnQpDQorew0KKyAgICBpZiAoUGFyZW50Lm1fcERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUm9vdCA9IG1fcERvY3VtZW50LT5HZXRSb290KCktPkdldERpY3QoIk91dGxpbmVzIik7DQorICAgICAgICBpZiAocFJvb3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHBSb290LT5HZXREaWN0KCJGaXJzdCIpOw0KKyAgICB9DQorICAgIHJldHVybiBQYXJlbnQubV9wRGljdC0+R2V0RGljdCgiRmlyc3QiKTsNCit9DQorQ1BERl9Cb29rbWFyayBDUERGX0Jvb2ttYXJrVHJlZTo6R2V0TmV4dFNpYmxpbmcoQ1BERl9Cb29rbWFyayBUaGlzKQ0KK3sNCisgICAgaWYgKFRoaXMubV9wRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkgKnBOZXh0ID0gVGhpcy5tX3BEaWN0LT5HZXREaWN0KCJOZXh0Iik7DQorICAgIHJldHVybiBwTmV4dCA9PSBUaGlzLm1fcERpY3QgPyBOVUxMIDogcE5leHQ7DQorfQ0KK0ZYX0RXT1JEIENQREZfQm9va21hcms6OkdldENvbG9yUmVmKCkNCit7DQorICAgIGlmICghbV9wRGljdCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcENvbG9yID0gbV9wRGljdC0+R2V0QXJyYXkoIkMiKTsNCisgICAgaWYgKHBDb2xvciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRlhTWVNfUkdCKDAsIDAsIDApOw0KKyAgICB9DQorICAgIGludCByID0gRlhTWVNfcm91bmQocENvbG9yLT5HZXROdW1iZXIoMCkgKiAyNTUpOw0KKyAgICBpbnQgZyA9IEZYU1lTX3JvdW5kKHBDb2xvci0+R2V0TnVtYmVyKDEpICogMjU1KTsNCisgICAgaW50IGIgPSBGWFNZU19yb3VuZChwQ29sb3ItPkdldE51bWJlcigyKSAqIDI1NSk7DQorICAgIHJldHVybiBGWFNZU19SR0IociwgZywgYik7DQorfQ0KK0ZYX0RXT1JEIENQREZfQm9va21hcms6OkdldEZvbnRTdHlsZSgpDQorew0KKyAgICBpZiAoIW1fcERpY3QpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BEaWN0LT5HZXRJbnRlZ2VyKCJGIik7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENQREZfQm9va21hcms6OkdldFRpdGxlKCkNCit7DQorICAgIGlmICghbV9wRGljdCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgQ1BERl9TdHJpbmcqIHBTdHJpbmcgPSAoQ1BERl9TdHJpbmcqKW1fcERpY3QtPkdldEVsZW1lbnRWYWx1ZSgiVGl0bGUiKTsNCisgICAgaWYgKHBTdHJpbmcgPT0gTlVMTCB8fCBwU3RyaW5nLT5HZXRUeXBlKCkgIT0gUERGT0JKX1NUUklORykgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgdGl0bGUgPSBwU3RyaW5nLT5HZXRVbmljb2RlVGV4dCgpOw0KKyAgICBGWF9MUFdTVFIgYnVmID0gdGl0bGUuTG9ja0J1ZmZlcigpOw0KKyAgICBpbnQgbGVuID0gdGl0bGUuR2V0TGVuZ3RoKCksIGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKyspDQorICAgICAgICBpZiAoYnVmW2ldIDwgMHgyMCkgew0KKyAgICAgICAgICAgIGJ1ZltpXSA9IDB4MjA7DQorICAgICAgICB9DQorICAgIHRpdGxlLlJlbGVhc2VCdWZmZXIobGVuKTsNCisgICAgcmV0dXJuIHRpdGxlOw0KK30NCitDUERGX0Rlc3QgQ1BERl9Cb29rbWFyazo6R2V0RGVzdChDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQpDQorew0KKyAgICBpZiAoIW1fcERpY3QpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwRGVzdCA9IG1fcERpY3QtPkdldEVsZW1lbnRWYWx1ZSgiRGVzdCIpOw0KKyAgICBpZiAocERlc3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBEZXN0LT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUklORyB8fCBwRGVzdC0+R2V0VHlwZSgpID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICBDUERGX05hbWVUcmVlIG5hbWVfdHJlZShwRG9jdW1lbnQsIEZYX0JTVFJDKCJEZXN0cyIpKTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nQyBuYW1lID0gcERlc3QtPkdldFN0cmluZygpOw0KKyAgICAgICAgcmV0dXJuIG5hbWVfdHJlZS5Mb29rdXBOYW1lZERlc3QocERvY3VtZW50LCBuYW1lKTsNCisgICAgfSBlbHNlIGlmIChwRGVzdC0+R2V0VHlwZSgpID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgcmV0dXJuIChDUERGX0FycmF5KilwRGVzdDsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorQ1BERl9BY3Rpb24gQ1BERl9Cb29rbWFyazo6R2V0QWN0aW9uKCkNCit7DQorICAgIGlmICghbV9wRGljdCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcERpY3QtPkdldERpY3QoIkEiKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmRvYy9kb2NfZm9ybS5jcHAgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19mb3JtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTM5MjMzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmRvYy9kb2NfZm9ybS5jcHAKQEAgLTAsMCArMSwxNjY0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcGRmZG9jL2ZwZGZfZG9jLmgiDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfeG1sLmgiDQorQ0ZYX1dpZGVTdHJpbmcJR2V0RnVsbE5hbWUoQ1BERl9EaWN0aW9uYXJ5KiBwRmllbGREaWN0KTsNCit2b2lkCQkJSW5pdEludGVyRm9ybURpY3QoQ1BERl9EaWN0aW9uYXJ5KiYgcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQpOw0KK0ZYX0RXT1JECQlDb3VudEludGVyRm9ybUZvbnRzKENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0KTsNCitDUERGX0ZvbnQqCQlHZXRJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIEZYX0RXT1JEIGluZGV4LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCitDUERGX0ZvbnQqCQlHZXRJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENGWF9CeXRlU3RyaW5nIGNzTmFtZVRhZyk7DQorQ1BERl9Gb250KgkJR2V0SW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCwgQ1BERl9Eb2N1bWVudCogcERvY3VtZW50LCBDRlhfQnl0ZVN0cmluZyBjc0ZvbnROYW1lLCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCitDUERGX0ZvbnQqCQlHZXROYXRpdmVJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIEZYX0JZVEUgY2hhclNldCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQorQ1BERl9Gb250KgkJR2V0TmF0aXZlSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCwgQ1BERl9Eb2N1bWVudCogcERvY3VtZW50LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCitGWF9CT09MCQkJRmluZEludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIGNvbnN0IENQREZfRm9udCogcEZvbnQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpOw0KK0ZYX0JPT0wJCQlGaW5kSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCwgQ1BERl9Eb2N1bWVudCogcERvY3VtZW50LCBDRlhfQnl0ZVN0cmluZyBjc0ZvbnROYW1lLCBDUERGX0ZvbnQqJiBwRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQordm9pZAkJCUFkZEludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiYgcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIGNvbnN0IENQREZfRm9udCogcEZvbnQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpOw0KK0NQREZfRm9udCoJCUFkZE5hdGl2ZUludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiYgcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIEZYX0JZVEUgY2hhclNldCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQorQ1BERl9Gb250KgkJQWRkTmF0aXZlSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqJiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQordm9pZAkJCVJlbW92ZUludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIGNvbnN0IENQREZfRm9udCogcEZvbnQpOw0KK3ZvaWQJCQlSZW1vdmVJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDRlhfQnl0ZVN0cmluZyBjc05hbWVUYWcpOw0KK0NQREZfRm9udCoJCUdldERlZmF1bHRJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQpOw0KK3ZvaWQJCQlTZXREZWZhdWx0SW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqJiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgY29uc3QgQ1BERl9Gb250KiBwRm9udCk7DQordm9pZAkJCVNhdmVDaGVja2VkRmllbGRTdGF0dXMoQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCwgQ0ZYX0J5dGVBcnJheSYgc3RhdHVzQXJyYXkpOw0KK0ZYX0JPT0wJCQlOZWVkUERGRW5jb2RlRm9yRmllbGRGdWxsTmFtZShjb25zdCBDRlhfV2lkZVN0cmluZyYgY3NGaWVsZE5hbWUpOw0KK0ZYX0JPT0wJCQlOZWVkUERGRW5jb2RlRm9yRmllbGRUcmVlKENQREZfRGljdGlvbmFyeSogcEZpZWxkRGljdCwgaW50IG5MZXZlbCA9IDApOw0KK3ZvaWQJCQlFbmNvZGVGaWVsZE5hbWUoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIGNzTmFtZSwgQ0ZYX0J5dGVTdHJpbmcmIGNzVCk7DQordm9pZAkJCVVwZGF0ZUVuY29kZUZpZWxkTmFtZShDUERGX0RpY3Rpb25hcnkqIHBGaWVsZERpY3QsIGludCBuTGV2ZWwgPSAwKTsNCitjb25zdCBpbnQgbk1heFJlY3Vyc2lvbiA9IDMyOw0KK2NsYXNzIF9DRmllbGROYW1lRXh0cmFjdG9yIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBfQ0ZpZWxkTmFtZUV4dHJhY3Rvcihjb25zdCBDRlhfV2lkZVN0cmluZyYgZnVsbF9uYW1lKQ0KKyAgICB7DQorICAgICAgICBtX3BTdGFydCA9IGZ1bGxfbmFtZTsNCisgICAgICAgIG1fcEVuZCA9IG1fcFN0YXJ0ICsgZnVsbF9uYW1lLkdldExlbmd0aCgpOw0KKyAgICAgICAgbV9wQ3VyID0gbV9wU3RhcnQ7DQorICAgIH0NCisgICAgdm9pZCBHZXROZXh0KEZYX0xQQ1dTVFIgJnBTdWJOYW1lLCBGWF9TVFJTSVpFJiBzaXplKQ0KKyAgICB7DQorICAgICAgICBwU3ViTmFtZSA9IG1fcEN1cjsNCisgICAgICAgIHdoaWxlIChtX3BDdXIgPCBtX3BFbmQgJiYgbV9wQ3VyWzBdICE9IEwnLicpIHsNCisgICAgICAgICAgICBtX3BDdXIrKzsNCisgICAgICAgIH0NCisgICAgICAgIHNpemUgPSAoRlhfU1RSU0laRSkobV9wQ3VyIC0gcFN1Yk5hbWUpOw0KKyAgICAgICAgaWYgKG1fcEN1ciA8IG1fcEVuZCAmJiBtX3BDdXJbMF0gPT0gTCcuJykgew0KKyAgICAgICAgICAgIG1fcEN1cisrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorcHJvdGVjdGVkOg0KKyAgICBGWF9MUENXU1RSIG1fcFN0YXJ0Ow0KKyAgICBGWF9MUENXU1RSIG1fcEVuZDsNCisgICAgRlhfTFBDV1NUUiBtX3BDdXI7DQorfTsNCitjbGFzcyBDRmllbGRUcmVlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBzdHJ1Y3QgX05vZGUgOiBwdWJsaWMgQ0ZYX09iamVjdCB7DQorICAgICAgICBfTm9kZSAqcGFyZW50Ow0KKyAgICAgICAgQ0ZYX1B0ckFycmF5IGNoaWxkcmVuOw0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgc2hvcnRfbmFtZTsNCisgICAgICAgIENQREZfRm9ybUZpZWxkICpmaWVsZF9wdHI7DQorICAgICAgICBpbnQgQ291bnRGaWVsZHMoaW50IG5MZXZlbCA9IDApDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKG5MZXZlbCA+IG5NYXhSZWN1cnNpb24pIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChmaWVsZF9wdHIpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGludCBjb3VudCA9IDA7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgY291bnQgKz0gKChfTm9kZSAqKWNoaWxkcmVuLkdldEF0KGkpKS0+Q291bnRGaWVsZHMobkxldmVsICsgMSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBjb3VudDsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfRm9ybUZpZWxkKiBHZXRGaWVsZChpbnQqIGZpZWxkc190b19nbykNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoZmllbGRfcHRyKSB7DQorICAgICAgICAgICAgICAgIGlmICgqZmllbGRzX3RvX2dvID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZF9wdHI7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgLS0qZmllbGRzX3RvX2dvOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5HZXRTaXplKCk7IGkrKykgew0KKyAgICAgICAgICAgICAgICBfTm9kZSAqcE5vZGUgPSAoX05vZGUgKiljaGlsZHJlbi5HZXRBdChpKTsNCisgICAgICAgICAgICAgICAgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCA9IHBOb2RlLT5HZXRGaWVsZChmaWVsZHNfdG9fZ28pOw0KKyAgICAgICAgICAgICAgICBpZiAocEZpZWxkKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcEZpZWxkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9Gb3JtRmllbGQqIEdldEZpZWxkKGludCBpbmRleCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpbnQgZmllbGRzX3RvX2dvID0gaW5kZXg7DQorICAgICAgICAgICAgcmV0dXJuIEdldEZpZWxkKCZmaWVsZHNfdG9fZ28pOw0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKyAgICBDRmllbGRUcmVlKCk7DQorICAgIH5DRmllbGRUcmVlKCk7DQorICAgIHZvaWQgU2V0RmllbGQoY29uc3QgQ0ZYX1dpZGVTdHJpbmcgJmZ1bGxfbmFtZSwgQ1BERl9Gb3JtRmllbGQgKmZpZWxkX3B0cik7DQorICAgIENQREZfRm9ybUZpZWxkICpHZXRGaWVsZChjb25zdCBDRlhfV2lkZVN0cmluZyAmZnVsbF9uYW1lKTsNCisgICAgQ1BERl9Gb3JtRmllbGQgKlJlbW92ZUZpZWxkKGNvbnN0IENGWF9XaWRlU3RyaW5nICZmdWxsX25hbWUpOw0KKyAgICB2b2lkIFJlbW92ZUFsbCgpOw0KKyAgICBfTm9kZSAqRmluZE5vZGUoY29uc3QgQ0ZYX1dpZGVTdHJpbmcgJmZ1bGxfbmFtZSk7DQorICAgIF9Ob2RlICogQWRkQ2hpbGQoX05vZGUgKnBQYXJlbnQsIGNvbnN0IENGWF9XaWRlU3RyaW5nICZzaG9ydF9uYW1lLCBDUERGX0Zvcm1GaWVsZCAqZmllbGRfcHRyKTsNCisgICAgdm9pZCBSZW1vdmVOb2RlKF9Ob2RlICpwTm9kZSwgaW50IG5MZXZlbCA9IDApOw0KKyAgICBfTm9kZSAqX0xvb2t1cChfTm9kZSAqcFBhcmVudCwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcgJnNob3J0X25hbWUpOw0KKyAgICBfTm9kZSBtX1Jvb3Q7DQorfTsNCitDRmllbGRUcmVlOjpDRmllbGRUcmVlKCkNCit7DQorICAgIG1fUm9vdC5wYXJlbnQgPSBOVUxMOw0KKyAgICBtX1Jvb3QuZmllbGRfcHRyID0gTlVMTDsNCit9DQorQ0ZpZWxkVHJlZTo6fkNGaWVsZFRyZWUoKQ0KK3sNCisgICAgUmVtb3ZlQWxsKCk7DQorfQ0KK0NGaWVsZFRyZWU6Ol9Ob2RlICpDRmllbGRUcmVlOjpBZGRDaGlsZChfTm9kZSAqcFBhcmVudCwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcgJnNob3J0X25hbWUsIENQREZfRm9ybUZpZWxkICpmaWVsZF9wdHIpDQorew0KKyAgICBpZiAocFBhcmVudCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBfTm9kZSAqcE5vZGUgPSBGWF9ORVcgX05vZGU7DQorICAgIGlmIChwTm9kZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwTm9kZS0+cGFyZW50ID0gcFBhcmVudDsNCisgICAgcE5vZGUtPnNob3J0X25hbWUgPSBzaG9ydF9uYW1lOw0KKyAgICBwTm9kZS0+ZmllbGRfcHRyID0gZmllbGRfcHRyOw0KKyAgICBwUGFyZW50LT5jaGlsZHJlbi5BZGQocE5vZGUpOw0KKyAgICByZXR1cm4gcE5vZGU7DQorfQ0KK3ZvaWQgQ0ZpZWxkVHJlZTo6UmVtb3ZlTm9kZShfTm9kZSAqcE5vZGUsIGludCBuTGV2ZWwpDQorew0KKyAgICBpZiAocE5vZGUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDsNCisgICAgfQ0KKyAgICBpZiAobkxldmVsID4gbk1heFJlY3Vyc2lvbikgew0KKyAgICAgICAgZGVsZXRlIHBOb2RlOw0KKyAgICAgICAgcmV0dXJuIDsNCisgICAgfQ0KKyAgICBDRlhfUHRyQXJyYXkmIHB0cl9hcnJheSA9IHBOb2RlLT5jaGlsZHJlbjsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwdHJfYXJyYXkuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBfTm9kZSAqcENoaWxkID0gKF9Ob2RlICopcHRyX2FycmF5W2ldOw0KKyAgICAgICAgUmVtb3ZlTm9kZShwQ2hpbGQsIG5MZXZlbCArIDEpOw0KKyAgICB9DQorICAgIGRlbGV0ZSBwTm9kZTsNCit9DQorQ0ZpZWxkVHJlZTo6X05vZGUgKkNGaWVsZFRyZWU6Ol9Mb29rdXAoX05vZGUgKnBQYXJlbnQsIGNvbnN0IENGWF9XaWRlU3RyaW5nICZzaG9ydF9uYW1lKQ0KK3sNCisgICAgaWYgKHBQYXJlbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0ZYX1B0ckFycmF5JiBwdHJfYXJyYXkgPSBwUGFyZW50LT5jaGlsZHJlbjsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwdHJfYXJyYXkuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBfTm9kZSAqcE5vZGUgPSAoX05vZGUgKilwdHJfYXJyYXlbaV07DQorICAgICAgICBpZiAocE5vZGUtPnNob3J0X25hbWUuR2V0TGVuZ3RoKCkgPT0gc2hvcnRfbmFtZS5HZXRMZW5ndGgoKSAmJg0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1jbXAzMigoRlhfTFBDV1NUUilwTm9kZS0+c2hvcnRfbmFtZSwgKEZYX0xQQ1dTVFIpc2hvcnRfbmFtZSwgc2hvcnRfbmFtZS5HZXRMZW5ndGgoKSpzaXplb2YoRlhfV0NIQVIpKSA9PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIHBOb2RlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCit2b2lkIENGaWVsZFRyZWU6OlJlbW92ZUFsbCgpDQorew0KKyAgICBDRlhfUHRyQXJyYXkmIHB0cl9hcnJheSA9IG1fUm9vdC5jaGlsZHJlbjsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwdHJfYXJyYXkuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBfTm9kZSAqcE5vZGUgPSAoX05vZGUgKilwdHJfYXJyYXlbaV07DQorICAgICAgICBSZW1vdmVOb2RlKHBOb2RlKTsNCisgICAgfQ0KK30NCit2b2lkIENGaWVsZFRyZWU6OlNldEZpZWxkKGNvbnN0IENGWF9XaWRlU3RyaW5nICZmdWxsX25hbWUsIENQREZfRm9ybUZpZWxkICpmaWVsZF9wdHIpDQorew0KKyAgICBpZiAoZnVsbF9uYW1lID09IEwiIikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIF9DRmllbGROYW1lRXh0cmFjdG9yIG5hbWVfZXh0cmFjdG9yKGZ1bGxfbmFtZSk7DQorICAgIEZYX0xQQ1dTVFIgcE5hbWU7DQorICAgIEZYX1NUUlNJWkUgbkxlbmd0aDsNCisgICAgbmFtZV9leHRyYWN0b3IuR2V0TmV4dChwTmFtZSwgbkxlbmd0aCk7DQorICAgIF9Ob2RlICpwTm9kZSA9ICZtX1Jvb3QsICpwTGFzdCA9IE5VTEw7DQorICAgIHdoaWxlIChuTGVuZ3RoID4gMCkgew0KKyAgICAgICAgcExhc3QgPSBwTm9kZTsNCisgICAgICAgIENGWF9XaWRlU3RyaW5nIG5hbWUgPSBDRlhfV2lkZVN0cmluZyhwTmFtZSwgbkxlbmd0aCk7DQorICAgICAgICBwTm9kZSA9IF9Mb29rdXAocExhc3QsIG5hbWUpOw0KKyAgICAgICAgaWYgKHBOb2RlID09IE5VTEwpIHsNCisgICAgICAgICAgICBwTm9kZSA9IEFkZENoaWxkKHBMYXN0LCBuYW1lLCBOVUxMKTsNCisgICAgICAgIH0NCisgICAgICAgIG5hbWVfZXh0cmFjdG9yLkdldE5leHQocE5hbWUsIG5MZW5ndGgpOw0KKyAgICB9DQorICAgIGlmIChwTm9kZSAhPSAmbV9Sb290KSB7DQorICAgICAgICBwTm9kZS0+ZmllbGRfcHRyID0gZmllbGRfcHRyOw0KKyAgICB9DQorfQ0KK0NQREZfRm9ybUZpZWxkICpDRmllbGRUcmVlOjpHZXRGaWVsZChjb25zdCBDRlhfV2lkZVN0cmluZyAmZnVsbF9uYW1lKQ0KK3sNCisgICAgaWYgKGZ1bGxfbmFtZSA9PSBMIiIpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIF9DRmllbGROYW1lRXh0cmFjdG9yIG5hbWVfZXh0cmFjdG9yKGZ1bGxfbmFtZSk7DQorICAgIEZYX0xQQ1dTVFIgcE5hbWU7DQorICAgIEZYX1NUUlNJWkUgbkxlbmd0aDsNCisgICAgbmFtZV9leHRyYWN0b3IuR2V0TmV4dChwTmFtZSwgbkxlbmd0aCk7DQorICAgIF9Ob2RlICpwTm9kZSA9ICZtX1Jvb3QsICpwTGFzdCA9IE5VTEw7DQorICAgIHdoaWxlIChuTGVuZ3RoID4gMCAmJiBwTm9kZSkgew0KKyAgICAgICAgcExhc3QgPSBwTm9kZTsNCisgICAgICAgIENGWF9XaWRlU3RyaW5nIG5hbWUgPSBDRlhfV2lkZVN0cmluZyhwTmFtZSwgbkxlbmd0aCk7DQorICAgICAgICBwTm9kZSA9IF9Mb29rdXAocExhc3QsIG5hbWUpOw0KKyAgICAgICAgbmFtZV9leHRyYWN0b3IuR2V0TmV4dChwTmFtZSwgbkxlbmd0aCk7DQorICAgIH0NCisgICAgcmV0dXJuIHBOb2RlID8gcE5vZGUtPmZpZWxkX3B0ciA6IE5VTEw7DQorfQ0KK0NQREZfRm9ybUZpZWxkICpDRmllbGRUcmVlOjpSZW1vdmVGaWVsZChjb25zdCBDRlhfV2lkZVN0cmluZyAmIGZ1bGxfbmFtZSkNCit7DQorICAgIGlmIChmdWxsX25hbWUgPT0gTCIiKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBfQ0ZpZWxkTmFtZUV4dHJhY3RvciBuYW1lX2V4dHJhY3RvcihmdWxsX25hbWUpOw0KKyAgICBGWF9MUENXU1RSIHBOYW1lOw0KKyAgICBGWF9TVFJTSVpFIG5MZW5ndGg7DQorICAgIG5hbWVfZXh0cmFjdG9yLkdldE5leHQocE5hbWUsIG5MZW5ndGgpOw0KKyAgICBfTm9kZSAqcE5vZGUgPSAmbV9Sb290LCAqcExhc3QgPSBOVUxMOw0KKyAgICB3aGlsZSAobkxlbmd0aCA+IDAgJiYgcE5vZGUpIHsNCisgICAgICAgIHBMYXN0ID0gcE5vZGU7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyBuYW1lID0gQ0ZYX1dpZGVTdHJpbmcocE5hbWUsIG5MZW5ndGgpOw0KKyAgICAgICAgcE5vZGUgPSBfTG9va3VwKHBMYXN0LCBuYW1lKTsNCisgICAgICAgIG5hbWVfZXh0cmFjdG9yLkdldE5leHQocE5hbWUsIG5MZW5ndGgpOw0KKyAgICB9DQorICAgIGlmIChwTm9kZSAmJiBwTm9kZSAhPSAmbV9Sb290KSB7DQorICAgICAgICBDRlhfUHRyQXJyYXkmIHB0cl9hcnJheSA9IHBMYXN0LT5jaGlsZHJlbjsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHRyX2FycmF5LkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgICAgIGlmIChwTm9kZSA9PSAoX05vZGUgKilwdHJfYXJyYXlbaV0pIHsNCisgICAgICAgICAgICAgICAgcHRyX2FycmF5LlJlbW92ZUF0KGkpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBDUERGX0Zvcm1GaWVsZCAqcEZpZWxkID0gcE5vZGUtPmZpZWxkX3B0cjsNCisgICAgICAgIFJlbW92ZU5vZGUocE5vZGUpOw0KKyAgICAgICAgcmV0dXJuIHBGaWVsZDsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorQ0ZpZWxkVHJlZTo6X05vZGUgKkNGaWVsZFRyZWU6OkZpbmROb2RlKGNvbnN0IENGWF9XaWRlU3RyaW5nJiBmdWxsX25hbWUpDQorew0KKyAgICBpZiAoZnVsbF9uYW1lID09IEwiIikgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgX0NGaWVsZE5hbWVFeHRyYWN0b3IgbmFtZV9leHRyYWN0b3IoZnVsbF9uYW1lKTsNCisgICAgRlhfTFBDV1NUUiBwTmFtZTsNCisgICAgRlhfU1RSU0laRSBuTGVuZ3RoOw0KKyAgICBuYW1lX2V4dHJhY3Rvci5HZXROZXh0KHBOYW1lLCBuTGVuZ3RoKTsNCisgICAgX05vZGUgKnBOb2RlID0gJm1fUm9vdCwgKnBMYXN0ID0gTlVMTDsNCisgICAgd2hpbGUgKG5MZW5ndGggPiAwICYmIHBOb2RlKSB7DQorICAgICAgICBwTGFzdCA9IHBOb2RlOw0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgbmFtZSA9IENGWF9XaWRlU3RyaW5nKHBOYW1lLCBuTGVuZ3RoKTsNCisgICAgICAgIHBOb2RlID0gX0xvb2t1cChwTGFzdCwgbmFtZSk7DQorICAgICAgICBuYW1lX2V4dHJhY3Rvci5HZXROZXh0KHBOYW1lLCBuTGVuZ3RoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gcE5vZGU7DQorfQ0KK0NQREZfSW50ZXJGb3JtOjpDUERGX0ludGVyRm9ybShDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIEZYX0JPT0wgYkdlbmVyYXRlQVApIDogQ0ZYX1ByaXZhdGVEYXRhKCkNCit7DQorICAgIG1fcERvY3VtZW50ID0gcERvY3VtZW50Ow0KKyAgICBtX2JHZW5lcmF0ZUFQID0gYkdlbmVyYXRlQVA7DQorICAgIG1fcEZvcm1Ob3RpZnkgPSBOVUxMOw0KKyAgICBtX2JVcGRhdGVkID0gRkFMU0U7DQorICAgIG1fcEZpZWxkVHJlZSA9IEZYX05FVyBDRmllbGRUcmVlOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBSb290ID0gbV9wRG9jdW1lbnQtPkdldFJvb3QoKTsNCisgICAgbV9wRm9ybURpY3QgPSBwUm9vdC0+R2V0RGljdCgiQWNyb0Zvcm0iKTsNCisgICAgaWYgKG1fcEZvcm1EaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwRmllbGRzID0gbV9wRm9ybURpY3QtPkdldEFycmF5KCJGaWVsZHMiKTsNCisgICAgaWYgKHBGaWVsZHMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBjb3VudCA9IHBGaWVsZHMtPkdldENvdW50KCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsNCisgICAgICAgIExvYWRGaWVsZChwRmllbGRzLT5HZXREaWN0KGkpKTsNCisgICAgfQ0KK30NCitDUERGX0ludGVyRm9ybTo6fkNQREZfSW50ZXJGb3JtKCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fQ29udHJvbE1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIEZYX0xQVk9JRCBrZXksIHZhbHVlOw0KKyAgICAgICAgbV9Db250cm9sTWFwLkdldE5leHRBc3NvYyhwb3MsIGtleSwgdmFsdWUpOw0KKyAgICAgICAgZGVsZXRlIChDUERGX0Zvcm1Db250cm9sKil2YWx1ZTsNCisgICAgfQ0KKyAgICBpZiAobV9wRmllbGRUcmVlICE9IE5VTEwpIHsNCisgICAgICAgIGludCBuQ291bnQgPSBtX3BGaWVsZFRyZWUtPm1fUm9vdC5Db3VudEZpZWxkcygpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuQ291bnQ7IGkrKykgew0KKyAgICAgICAgICAgIENQREZfRm9ybUZpZWxkICpwRmllbGQgPSBtX3BGaWVsZFRyZWUtPm1fUm9vdC5HZXRGaWVsZChpKTsNCisgICAgICAgICAgICBkZWxldGUgcEZpZWxkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVsZXRlIG1fcEZpZWxkVHJlZTsNCisgICAgfQ0KK30NCitGWF9CT09MCUNQREZfSW50ZXJGb3JtOjptX2JVcGRhdGVBUCA9IFRSVUU7DQorRlhfQk9PTCBDUERGX0ludGVyRm9ybTo6VXBkYXRpbmdBUEVuYWJsZWQoKQ0KK3sNCisgICAgcmV0dXJuIG1fYlVwZGF0ZUFQOw0KK30NCit2b2lkIENQREZfSW50ZXJGb3JtOjpFbmFibGVVcGRhdGVBUChGWF9CT09MIGJVcGRhdGVBUCkNCit7DQorICAgIG1fYlVwZGF0ZUFQID0gYlVwZGF0ZUFQOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX0ludGVyRm9ybTo6R2VuZXJhdGVOZXdSZXNvdXJjZU5hbWUoY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwUmVzRGljdCwgRlhfTFBDU1RSIGNzVHlwZSwgaW50IGlNaW5MZW4sIEZYX0xQQ1NUUiBjc1ByZWZpeCkNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzU3RyID0gY3NQcmVmaXg7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzQlR5cGUgPSBjc1R5cGU7DQorICAgIGlmIChjc1N0ci5Jc0VtcHR5KCkpIHsNCisgICAgICAgIGlmIChjc0JUeXBlID09ICJFeHRHU3RhdGUiKSB7DQorICAgICAgICAgICAgY3NTdHIgPSAiR1MiOw0KKyAgICAgICAgfSBlbHNlIGlmIChjc0JUeXBlID09ICJDb2xvclNwYWNlIikgew0KKyAgICAgICAgICAgIGNzU3RyID0gIkNTIjsNCisgICAgICAgIH0gZWxzZSBpZiAoY3NCVHlwZSA9PSAiRm9udCIpIHsNCisgICAgICAgICAgICBjc1N0ciA9ICJaaVRpIjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgY3NTdHIgPSAiUmVzIjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc1RtcCA9IGNzU3RyOw0KKyAgICBpbnQgaUNvdW50ID0gY3NTdHIuR2V0TGVuZ3RoKCk7DQorICAgIGludCBtID0gMDsNCisgICAgaWYgKGlNaW5MZW4gPiAwKSB7DQorICAgICAgICBjc1RtcCA9ICIiOw0KKyAgICAgICAgd2hpbGUgKG0gPCBpTWluTGVuICYmIG0gPCBpQ291bnQpIHsNCisgICAgICAgICAgICBjc1RtcCArPSBjc1N0clttICsrXTsNCisgICAgICAgIH0NCisgICAgICAgIHdoaWxlIChtIDwgaU1pbkxlbikgew0KKyAgICAgICAgICAgIGNzVG1wICs9ICcwJyArIG0gJSAxMDsNCisgICAgICAgICAgICBtICsrOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbSA9IGlDb3VudDsNCisgICAgfQ0KKyAgICBpZiAocFJlc0RpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIGNzVG1wOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcERpY3QgPSBwUmVzRGljdC0+R2V0RGljdChjc1R5cGUpOw0KKyAgICBpZiAocERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIGNzVG1wOw0KKyAgICB9DQorICAgIGludCBudW0gPSAwOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBic051bTsNCisgICAgd2hpbGUgKFRSVUUpIHsNCisgICAgICAgIGlmICghcERpY3QtPktleUV4aXN0KGNzVG1wICsgYnNOdW0pKSB7DQorICAgICAgICAgICAgcmV0dXJuIGNzVG1wICsgYnNOdW07DQorICAgICAgICB9DQorICAgICAgICBpZiAobSA8IGlDb3VudCkgew0KKyAgICAgICAgICAgIGNzVG1wICs9IGNzU3RyW20gKytdOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBic051bS5Gb3JtYXQoIiVkIiwgbnVtKyspOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbSArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gY3NUbXA7DQorfQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQordHlwZWRlZiBzdHJ1Y3QgX1BERl9GT05UREFUQSB7DQorICAgIEZYX0JPT0wJCWJGaW5kOw0KKyAgICBMT0dGT05UQQlsZjsNCit9IFBERl9GT05UREFUQSwgRkFSKiBMUERGX0ZPTlREQVRBOw0KK3N0YXRpYyBpbnQgQ0FMTEJBQ0sgRW51bUZvbnRGYW1FeFByb2MoCUVOVU1MT0dGT05URVhBICpscGVsZmUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FV1RFWFRNRVRSSUNFWCAqbHBudG1lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBGb250VHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBBUkFNIGxQYXJhbQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQorew0KKyAgICBpZiAoRm9udFR5cGUgIT0gMHgwMDQgfHwgc3RyY2hyKGxwZWxmZS0+ZWxmTG9nRm9udC5sZkZhY2VOYW1lLCAnQCcpICE9IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgTFBERl9GT05UREFUQSBwRGF0YSA9IChMUERGX0ZPTlREQVRBKWxQYXJhbTsNCisgICAgICAgIG1lbWNweSgmcERhdGEtPmxmLCAmbHBlbGZlLT5lbGZMb2dGb250LCBzaXplb2YoTE9HRk9OVEEpKTsNCisgICAgICAgIHBEYXRhLT5iRmluZCA9IFRSVUU7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KK30NCitzdGF0aWMgRlhfQk9PTCBSZXRyaWV2ZVNwZWNpZmljRm9udChMT0dGT05UQSYgbGYpDQorew0KKyAgICBQREZfRk9OVERBVEEgZmQ7DQorICAgIG1lbXNldCgmZmQsIDAsIHNpemVvZihQREZfRk9OVERBVEEpKTsNCisgICAgSERDIGhEQyA9IDo6R2V0REMoTlVMTCk7DQorICAgIEVudW1Gb250RmFtaWxpZXNFeEEoaERDLCAmbGYsIChGT05URU5VTVBST0NBKUVudW1Gb250RmFtRXhQcm9jLCAoTFBBUkFNKSZmZCwgMCk7DQorICAgIDo6UmVsZWFzZURDKE5VTEwsIGhEQyk7DQorICAgIGlmIChmZC5iRmluZCkgew0KKyAgICAgICAgbWVtY3B5KCZsZiwgJmZkLmxmLCBzaXplb2YoTE9HRk9OVEEpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gZmQuYkZpbmQ7DQorfQ0KK3N0YXRpYyBGWF9CT09MIFJldHJpZXZlU3BlY2lmaWNGb250KEZYX0JZVEUgY2hhclNldCwgRlhfQllURSBwaXRjaEFuZEZhbWlseSwgTFBDU1RSIHBjc0ZvbnROYW1lLCBMT0dGT05UQSYgbGYpDQorew0KKyAgICBtZW1zZXQoJmxmLCAwLCBzaXplb2YoTE9HRk9OVEEpKTsNCisgICAgbGYubGZDaGFyU2V0ID0gY2hhclNldDsNCisgICAgbGYubGZQaXRjaEFuZEZhbWlseSA9IHBpdGNoQW5kRmFtaWx5Ow0KKyAgICBpZiAocGNzRm9udE5hbWUgIT0gTlVMTCkgew0KKyAgICAgICAgc3RyY3B5KGxmLmxmRmFjZU5hbWUsIHBjc0ZvbnROYW1lKTsNCisgICAgfQ0KKyAgICByZXR1cm4gUmV0cmlldmVTcGVjaWZpY0ZvbnQobGYpOw0KK30NCitzdGF0aWMgRlhfQk9PTCBSZXRyaWV2ZVN0b2NrRm9udChpbnQgaUZvbnRPYmplY3QsIEZYX0JZVEUgY2hhclNldCwgTE9HRk9OVEEmIGxmKQ0KK3sNCisgICAgSEZPTlQgaEZvbnQgPSAoSEZPTlQpOjpHZXRTdG9ja09iamVjdChpRm9udE9iamVjdCk7DQorICAgIGlmIChoRm9udCAhPSBOVUxMKSB7DQorICAgICAgICBtZW1zZXQoJmxmLCAwLCBzaXplb2YoTE9HRk9OVEEpKTsNCisgICAgICAgIGludCBpUmV0ID0gOjpHZXRPYmplY3QoaEZvbnQsIHNpemVvZihMT0dGT05UQSksICZsZik7DQorICAgICAgICBpZiAoaVJldCA+IDAgJiYgKGxmLmxmQ2hhclNldCA9PSBjaGFyU2V0IHx8IGNoYXJTZXQgPT0gMjU1KSkgew0KKyAgICAgICAgICAgIHJldHVybiBSZXRyaWV2ZVNwZWNpZmljRm9udChsZik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCisjZW5kaWYNCitDUERGX0ZvbnQqIENQREZfSW50ZXJGb3JtOjpBZGRTeXN0ZW1EZWZhdWx0Rm9udChjb25zdCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQpDQorew0KKyAgICBpZiAocERvY3VtZW50ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRm9udCogcEZvbnQgPSBOVUxMOw0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorICAgIExPR0ZPTlRBIGxmOw0KKyAgICBGWF9CT09MIGJSZXQ7DQorICAgIGJSZXQgPSBSZXRyaWV2ZVN0b2NrRm9udChERUZBVUxUX0dVSV9GT05ULCAyNTUsIGxmKTsNCisgICAgaWYgKCFiUmV0KSB7DQorICAgICAgICBiUmV0ID0gUmV0cmlldmVTdG9ja0ZvbnQoU1lTVEVNX0ZPTlQsIDI1NSwgbGYpOw0KKyAgICB9DQorICAgIGlmIChiUmV0KSB7DQorICAgICAgICBwRm9udCA9ICgoQ1BERl9Eb2N1bWVudCopcERvY3VtZW50KS0+QWRkV2luZG93c0ZvbnQoJmxmLCBGQUxTRSwgVFJVRSk7DQorICAgIH0NCisjZW5kaWYNCisgICAgcmV0dXJuIHBGb250Ow0KK30NCitDUERGX0ZvbnQqIENQREZfSW50ZXJGb3JtOjpBZGRTeXN0ZW1Gb250KGNvbnN0IENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgQ0ZYX0J5dGVTdHJpbmcgY3NGb250TmFtZSwgRlhfQllURSBpQ2hhclNldCkNCit7DQorICAgIGlmIChwRG9jdW1lbnQgPT0gTlVMTCB8fCBjc0ZvbnROYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisjaWYgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9XSU5ET1dTXw0KKyAgICBpZiAoaUNoYXJTZXQgPT0gMSkgew0KKyAgICAgICAgaUNoYXJTZXQgPSBHZXROYXRpdmVDaGFyU2V0KCk7DQorICAgIH0NCisgICAgSEZPTlQgaEZvbnQgPSA6OkNyZWF0ZUZvbnRBKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGlDaGFyU2V0LCBPVVRfREVGQVVMVF9QUkVDSVMsIENMSVBfREVGQVVMVF9QUkVDSVMsIERFRkFVTFRfUVVBTElUWSwgREVGQVVMVF9QSVRDSCB8IEZGX0RPTlRDQVJFLCAoRlhfTFBDU1RSKWNzRm9udE5hbWUpOw0KKyAgICBpZiAoaEZvbnQgIT0gTlVMTCkgew0KKyAgICAgICAgTE9HRk9OVEEgbGY7DQorICAgICAgICBtZW1zZXQoJmxmLCAwLCBzaXplb2YoTE9HRk9OVEEpKTsNCisgICAgICAgIDo6R2V0T2JqZWN0QShoRm9udCwgc2l6ZW9mKExPR0ZPTlRBKSwgJmxmKTsNCisgICAgICAgIDo6RGVsZXRlT2JqZWN0KGhGb250KTsNCisgICAgICAgIGlmIChzdHJsZW4obGYubGZGYWNlTmFtZSkgPiAwKSB7DQorICAgICAgICAgICAgcmV0dXJuICgoQ1BERl9Eb2N1bWVudCopcERvY3VtZW50KS0+QWRkV2luZG93c0ZvbnQoJmxmLCBGQUxTRSwgVFJVRSk7DQorICAgICAgICB9DQorICAgIH0NCisjZW5kaWYNCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0NQREZfRm9udCogQ1BERl9JbnRlckZvcm06OkFkZFN5c3RlbUZvbnQoY29uc3QgQ1BERl9Eb2N1bWVudCogcERvY3VtZW50LCBDRlhfV2lkZVN0cmluZyBjc0ZvbnROYW1lLCBGWF9CWVRFIGlDaGFyU2V0KQ0KK3sNCisgICAgaWYgKHBEb2N1bWVudCA9PSBOVUxMIHx8IGNzRm9udE5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorICAgIGlmIChpQ2hhclNldCA9PSAxKSB7DQorICAgICAgICBpQ2hhclNldCA9IEdldE5hdGl2ZUNoYXJTZXQoKTsNCisgICAgfQ0KKyAgICBIRk9OVCBoRm9udCA9IDo6Q3JlYXRlRm9udFcoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgaUNoYXJTZXQsIE9VVF9ERUZBVUxUX1BSRUNJUywgQ0xJUF9ERUZBVUxUX1BSRUNJUywgREVGQVVMVF9RVUFMSVRZLCBERUZBVUxUX1BJVENIIHwgRkZfRE9OVENBUkUsIGNzRm9udE5hbWUpOw0KKyAgICBpZiAoaEZvbnQgIT0gTlVMTCkgew0KKyAgICAgICAgTE9HRk9OVEEgbGY7DQorICAgICAgICBtZW1zZXQoJmxmLCAwLCBzaXplb2YoTE9HRk9OVEEpKTsNCisgICAgICAgIDo6R2V0T2JqZWN0KGhGb250LCBzaXplb2YoTE9HRk9OVEEpLCAmbGYpOw0KKyAgICAgICAgOjpEZWxldGVPYmplY3QoaEZvbnQpOw0KKyAgICAgICAgaWYgKHN0cmxlbihsZi5sZkZhY2VOYW1lKSA+IDApIHsNCisgICAgICAgICAgICByZXR1cm4gKChDUERGX0RvY3VtZW50KilwRG9jdW1lbnQpLT5BZGRXaW5kb3dzRm9udCgmbGYsIEZBTFNFLCBUUlVFKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyNlbmRpZg0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorQ1BERl9Gb250KiBDUERGX0ludGVyRm9ybTo6QWRkU3RhbmRhcmRGb250KGNvbnN0IENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgQ0ZYX0J5dGVTdHJpbmcgY3NGb250TmFtZSkNCit7DQorICAgIGlmIChwRG9jdW1lbnQgPT0gTlVMTCB8fCBjc0ZvbnROYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9Gb250KiBwRm9udCA9IE5VTEw7DQorICAgIGlmIChjc0ZvbnROYW1lID09ICJaYXBmRGluZ2JhdHMiKSB7DQorICAgICAgICBwRm9udCA9ICgoQ1BERl9Eb2N1bWVudCopcERvY3VtZW50KS0+QWRkU3RhbmRhcmRGb250KGNzRm9udE5hbWUsIE5VTEwpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ1BERl9Gb250RW5jb2RpbmcgZW5jb2RpbmcoUERGRk9OVF9FTkNPRElOR19XSU5BTlNJKTsNCisgICAgICAgIHBGb250ID0gKChDUERGX0RvY3VtZW50KilwRG9jdW1lbnQpLT5BZGRTdGFuZGFyZEZvbnQoY3NGb250TmFtZSwgJmVuY29kaW5nKTsNCisgICAgfQ0KKyAgICByZXR1cm4gcEZvbnQ7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfSW50ZXJGb3JtOjpHZXROYXRpdmVGb250KEZYX0JZVEUgY2hhclNldCwgRlhfTFBWT0lEIHBMb2dGb250KQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NGb250TmFtZTsNCisjaWYgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9XSU5ET1dTXw0KKyAgICBMT0dGT05UQSBsZjsNCisgICAgRlhfQk9PTCBiUmV0Ow0KKyAgICBpZiAoY2hhclNldCA9PSBBTlNJX0NIQVJTRVQpIHsNCisgICAgICAgIGNzRm9udE5hbWUgPSAiSGVsdmV0aWNhIjsNCisgICAgICAgIHJldHVybiBjc0ZvbnROYW1lOw0KKyAgICB9DQorICAgIGJSZXQgPSBGQUxTRTsNCisgICAgaWYgKGNoYXJTZXQgPT0gU0hJRlRKSVNfQ0hBUlNFVCkgew0KKyAgICAgICAgYlJldCA9IFJldHJpZXZlU3BlY2lmaWNGb250KGNoYXJTZXQsIERFRkFVTFRfUElUQ0ggfCBGRl9ET05UQ0FSRSwgIk1TIE1pbmNobyIsIGxmKTsNCisgICAgfSBlbHNlIGlmIChjaGFyU2V0ID09IEdCMjMxMl9DSEFSU0VUKSB7DQorICAgICAgICBiUmV0ID0gUmV0cmlldmVTcGVjaWZpY0ZvbnQoY2hhclNldCwgREVGQVVMVF9QSVRDSCB8IEZGX0RPTlRDQVJFLCAiU2ltU3VuIiwgbGYpOw0KKyAgICB9IGVsc2UgaWYgKGNoYXJTZXQgPT0gQ0hJTkVTRUJJRzVfQ0hBUlNFVCkgew0KKyAgICAgICAgYlJldCA9IFJldHJpZXZlU3BlY2lmaWNGb250KGNoYXJTZXQsIERFRkFVTFRfUElUQ0ggfCBGRl9ET05UQ0FSRSwgIk1pbmdMaVUiLCBsZik7DQorICAgIH0NCisgICAgaWYgKCFiUmV0KSB7DQorICAgICAgICBiUmV0ID0gUmV0cmlldmVTcGVjaWZpY0ZvbnQoY2hhclNldCwgREVGQVVMVF9QSVRDSCB8IEZGX0RPTlRDQVJFLCAiQXJpYWwgVW5pY29kZSBNUyIsIGxmKTsNCisgICAgfQ0KKyAgICBpZiAoIWJSZXQpIHsNCisgICAgICAgIGJSZXQgPSBSZXRyaWV2ZVNwZWNpZmljRm9udChjaGFyU2V0LCBERUZBVUxUX1BJVENIIHwgRkZfRE9OVENBUkUsICJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIGxmKTsNCisgICAgfQ0KKyAgICBpZiAoIWJSZXQpIHsNCisgICAgICAgIGJSZXQgPSBSZXRyaWV2ZVNwZWNpZmljRm9udChjaGFyU2V0LCBERUZBVUxUX1BJVENIIHwgRkZfRE9OVENBUkUsIE5VTEwsIGxmKTsNCisgICAgfQ0KKyAgICBpZiAoYlJldCkgew0KKyAgICAgICAgaWYgKHBMb2dGb250ICE9IE5VTEwpIHsNCisgICAgICAgICAgICBtZW1jcHkocExvZ0ZvbnQsICZsZiwgc2l6ZW9mKExPR0ZPTlRBKSk7DQorICAgICAgICB9DQorICAgICAgICBjc0ZvbnROYW1lID0gbGYubGZGYWNlTmFtZTsNCisgICAgICAgIHJldHVybiBjc0ZvbnROYW1lOw0KKyAgICB9DQorI2VuZGlmDQorICAgIHJldHVybiBjc0ZvbnROYW1lOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX0ludGVyRm9ybTo6R2V0TmF0aXZlRm9udChGWF9MUFZPSUQgcExvZ0ZvbnQpDQorew0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorICAgIEZYX0JZVEUgY2hhclNldCA9IEdldE5hdGl2ZUNoYXJTZXQoKTsNCisgICAgcmV0dXJuIEdldE5hdGl2ZUZvbnQoY2hhclNldCwgcExvZ0ZvbnQpOw0KKyNlbHNlDQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KKyNlbmRpZg0KK30NCitGWF9CWVRFIENQREZfSW50ZXJGb3JtOjpHZXROYXRpdmVDaGFyU2V0KCkNCit7DQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgRlhfQllURSBjaGFyU2V0ID0gQU5TSV9DSEFSU0VUOw0KKyAgICBVSU5UIGlDb2RlUGFnZSA9IDo6R2V0QUNQKCk7DQorICAgIHN3aXRjaCAoaUNvZGVQYWdlKSB7DQorICAgICAgICBjYXNlIDkzMjoNCisgICAgICAgICAgICBjaGFyU2V0ID0gU0hJRlRKSVNfQ0hBUlNFVDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgOTM2Og0KKyAgICAgICAgICAgIGNoYXJTZXQgPSBHQjIzMTJfQ0hBUlNFVDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgOTUwOg0KKyAgICAgICAgICAgIGNoYXJTZXQgPSBDSElORVNFQklHNV9DSEFSU0VUOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAxMjUyOg0KKyAgICAgICAgICAgIGNoYXJTZXQgPSBBTlNJX0NIQVJTRVQ7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDg3NDoNCisgICAgICAgICAgICBjaGFyU2V0ID0gVEhBSV9DSEFSU0VUOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSA5NDk6DQorICAgICAgICAgICAgY2hhclNldCA9IEhBTkdVTF9DSEFSU0VUOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAxMjAwOg0KKyAgICAgICAgICAgIGNoYXJTZXQgPSBBTlNJX0NIQVJTRVQ7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDEyNTA6DQorICAgICAgICAgICAgY2hhclNldCA9IEVBU1RFVVJPUEVfQ0hBUlNFVDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMTI1MToNCisgICAgICAgICAgICBjaGFyU2V0ID0gUlVTU0lBTl9DSEFSU0VUOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAxMjUzOg0KKyAgICAgICAgICAgIGNoYXJTZXQgPSBHUkVFS19DSEFSU0VUOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAxMjU0Og0KKyAgICAgICAgICAgIGNoYXJTZXQgPSBUVVJLSVNIX0NIQVJTRVQ7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDEyNTU6DQorICAgICAgICAgICAgY2hhclNldCA9IEhFQlJFV19DSEFSU0VUOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAxMjU2Og0KKyAgICAgICAgICAgIGNoYXJTZXQgPSBBUkFCSUNfQ0hBUlNFVDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMTI1NzoNCisgICAgICAgICAgICBjaGFyU2V0ID0gQkFMVElDX0NIQVJTRVQ7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDEyNTg6DQorICAgICAgICAgICAgY2hhclNldCA9IFZJRVROQU1FU0VfQ0hBUlNFVDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMTM2MToNCisgICAgICAgICAgICBjaGFyU2V0ID0gSk9IQUJfQ0hBUlNFVDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICByZXR1cm4gY2hhclNldDsNCisjZWxzZQ0KKyAgICByZXR1cm4gMDsNCisjZW5kaWYNCit9DQorQ1BERl9Gb250KiBDUERGX0ludGVyRm9ybTo6QWRkTmF0aXZlRm9udChGWF9CWVRFIGNoYXJTZXQsIGNvbnN0IENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCkNCit7DQorICAgIGlmIChwRG9jdW1lbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9Gb250KiBwRm9udCA9IE5VTEw7DQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgTE9HRk9OVEEgbGY7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzRm9udE5hbWUgPSBHZXROYXRpdmVGb250KGNoYXJTZXQsICZsZik7DQorICAgIGlmICghY3NGb250TmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIGlmIChjc0ZvbnROYW1lID09ICJIZWx2ZXRpY2EiKSB7DQorICAgICAgICAgICAgcEZvbnQgPSBBZGRTdGFuZGFyZEZvbnQocERvY3VtZW50LCBjc0ZvbnROYW1lKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcEZvbnQgPSAoKENQREZfRG9jdW1lbnQqKXBEb2N1bWVudCktPkFkZFdpbmRvd3NGb250KCZsZiwgRkFMU0UsIFRSVUUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorI2VuZGlmDQorICAgIHJldHVybiBwRm9udDsNCit9DQorQ1BERl9Gb250KiBDUERGX0ludGVyRm9ybTo6QWRkTmF0aXZlRm9udChjb25zdCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQpDQorew0KKyAgICBpZiAocERvY3VtZW50ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRm9udCogcEZvbnQgPSBOVUxMOw0KKyAgICBGWF9CWVRFIGNoYXJTZXQgPSBHZXROYXRpdmVDaGFyU2V0KCk7DQorICAgIHBGb250ID0gQWRkTmF0aXZlRm9udChjaGFyU2V0LCBwRG9jdW1lbnQpOw0KKyAgICByZXR1cm4gcEZvbnQ7DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbnRlckZvcm06OlZhbGlkYXRlRmllbGROYW1lKENGWF9XaWRlU3RyaW5nJiBjc05ld0ZpZWxkTmFtZSwgaW50IGlUeXBlLCBjb25zdCBDUERGX0Zvcm1GaWVsZCogcEV4Y2x1ZGVkRmllbGQsIGNvbnN0IENQREZfRm9ybUNvbnRyb2wqIHBFeGNsdWRlZENvbnRyb2wpDQorew0KKyAgICBpZiAoY3NOZXdGaWVsZE5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IGlQb3MgPSAwOw0KKyAgICBpbnQgaUxlbmd0aCA9IGNzTmV3RmllbGROYW1lLkdldExlbmd0aCgpOw0KKyAgICBDRlhfV2lkZVN0cmluZyBjc1N1YjsNCisgICAgd2hpbGUgKFRSVUUpIHsNCisgICAgICAgIHdoaWxlIChpUG9zIDwgaUxlbmd0aCAmJiAoY3NOZXdGaWVsZE5hbWVbaVBvc10gPT0gTCcuJyB8fCBjc05ld0ZpZWxkTmFtZVtpUG9zXSA9PSBMJyAnKSkgew0KKyAgICAgICAgICAgIGlQb3MgKys7DQorICAgICAgICB9DQorICAgICAgICBpZiAoaVBvcyA8IGlMZW5ndGggJiYgIWNzU3ViLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIGNzU3ViICs9IEwnLic7DQorICAgICAgICB9DQorICAgICAgICB3aGlsZSAoaVBvcyA8IGlMZW5ndGggJiYgY3NOZXdGaWVsZE5hbWVbaVBvc10gIT0gTCcuJykgew0KKyAgICAgICAgICAgIGNzU3ViICs9IGNzTmV3RmllbGROYW1lW2lQb3MgKytdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgaSA9IGNzU3ViLkdldExlbmd0aCgpIC0gMTsgaSA+IC0xOyBpIC0tKSB7DQorICAgICAgICAgICAgaWYgKGNzU3ViW2ldID09IEwnICcgfHwgY3NTdWJbaV0gPT0gTCcuJykgew0KKyAgICAgICAgICAgICAgICBjc1N1Yi5TZXRBdChpLCBMJ1wwJyk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgZHdDb3VudCA9IG1fcEZpZWxkVHJlZS0+bV9Sb290LkNvdW50RmllbGRzKCk7DQorICAgICAgICBmb3IgKEZYX0RXT1JEIG0gPSAwOyBtIDwgZHdDb3VudDsgbSArKykgew0KKyAgICAgICAgICAgIENQREZfRm9ybUZpZWxkKiBwRmllbGQgPSBtX3BGaWVsZFRyZWUtPm1fUm9vdC5HZXRGaWVsZChtKTsNCisgICAgICAgICAgICBpZiAocEZpZWxkID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwRmllbGQgPT0gcEV4Y2x1ZGVkRmllbGQpIHsNCisgICAgICAgICAgICAgICAgaWYgKHBFeGNsdWRlZENvbnRyb2wgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBGaWVsZC0+Q291bnRDb250cm9scygpIDwgMikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgY3NGdWxsTmFtZSA9IHBGaWVsZC0+R2V0RnVsbE5hbWUoKTsNCisgICAgICAgICAgICBpbnQgaVJldCA9IENvbXBhcmVGaWVsZE5hbWUoY3NTdWIsIGNzRnVsbE5hbWUpOw0KKyAgICAgICAgICAgIGlmIChpUmV0ID09IDEpIHsNCisgICAgICAgICAgICAgICAgaWYgKHBGaWVsZC0+R2V0RmllbGRUeXBlKCkgIT0gaVR5cGUpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaVJldCA9PSAyICYmIGNzU3ViID09IGNzTmV3RmllbGROYW1lKSB7DQorICAgICAgICAgICAgICAgIGlmIChjc0Z1bGxOYW1lW2lQb3NdID09IEwnLicpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaVJldCA9PSAzICYmIGNzU3ViID09IGNzTmV3RmllbGROYW1lKSB7DQorICAgICAgICAgICAgICAgIGlmIChjc05ld0ZpZWxkTmFtZVtjc0Z1bGxOYW1lLkdldExlbmd0aCgpXSA9PSBMJy4nKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoaVBvcyA+PSBpTGVuZ3RoKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGNzU3ViLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGNzTmV3RmllbGROYW1lID0gY3NTdWI7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfSW50ZXJGb3JtOjpWYWxpZGF0ZUZpZWxkTmFtZShDRlhfV2lkZVN0cmluZyYgY3NOZXdGaWVsZE5hbWUsIGludCBpVHlwZSkNCit7DQorICAgIHJldHVybiBWYWxpZGF0ZUZpZWxkTmFtZShjc05ld0ZpZWxkTmFtZSwgaVR5cGUsIE5VTEwsIE5VTEwpOw0KK30NCitGWF9CT09MIENQREZfSW50ZXJGb3JtOjpWYWxpZGF0ZUZpZWxkTmFtZShjb25zdCBDUERGX0Zvcm1GaWVsZCogcEZpZWxkLCBDRlhfV2lkZVN0cmluZyYgY3NOZXdGaWVsZE5hbWUpDQorew0KKyAgICBpZiAocEZpZWxkID09IE5VTEwgfHwgY3NOZXdGaWVsZE5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIFZhbGlkYXRlRmllbGROYW1lKGNzTmV3RmllbGROYW1lLCAoKENQREZfRm9ybUZpZWxkKilwRmllbGQpLT5HZXRGaWVsZFR5cGUoKSwgcEZpZWxkLCBOVUxMKTsNCit9DQorRlhfQk9PTCBDUERGX0ludGVyRm9ybTo6VmFsaWRhdGVGaWVsZE5hbWUoY29uc3QgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2wsIENGWF9XaWRlU3RyaW5nJiBjc05ld0ZpZWxkTmFtZSkNCit7DQorICAgIGlmIChwQ29udHJvbCA9PSBOVUxMIHx8IGNzTmV3RmllbGROYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfRm9ybUZpZWxkKiBwRmllbGQgPSAoKENQREZfRm9ybUNvbnRyb2wqKXBDb250cm9sKS0+R2V0RmllbGQoKTsNCisgICAgcmV0dXJuIFZhbGlkYXRlRmllbGROYW1lKGNzTmV3RmllbGROYW1lLCBwRmllbGQtPkdldEZpZWxkVHlwZSgpLCBwRmllbGQsIHBDb250cm9sKTsNCit9DQoraW50IENQREZfSW50ZXJGb3JtOjpDb21wYXJlRmllbGROYW1lKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lMSwgY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUyKQ0KK3sNCisgICAgRlhfTFBDU1RSIHB0cjEgPSBuYW1lMSwgcHRyMiA9IG5hbWUyOw0KKyAgICBpZiAobmFtZTEuR2V0TGVuZ3RoKCkgIT0gbmFtZTIuR2V0TGVuZ3RoKCkpIHsNCisgICAgICAgIGludCBpID0gMDsNCisgICAgICAgIHdoaWxlIChwdHIxW2ldID09IHB0cjJbaV0pIHsNCisgICAgICAgICAgICBpICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGkgPT0gbmFtZTEuR2V0TGVuZ3RoKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gMjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChpID09IG5hbWUyLkdldExlbmd0aCgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDM7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiBuYW1lMSA9PSBuYW1lMiA/IDEgOiAwOw0KKyAgICB9DQorfQ0KK2ludCBDUERGX0ludGVyRm9ybTo6Q29tcGFyZUZpZWxkTmFtZShjb25zdCBDRlhfV2lkZVN0cmluZyYgbmFtZTEsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiBuYW1lMikNCit7DQorICAgIEZYX0xQQ1dTVFIgcHRyMSA9IG5hbWUxLCBwdHIyID0gbmFtZTI7DQorICAgIGlmIChuYW1lMS5HZXRMZW5ndGgoKSAhPSBuYW1lMi5HZXRMZW5ndGgoKSkgew0KKyAgICAgICAgaW50IGkgPSAwOw0KKyAgICAgICAgd2hpbGUgKHB0cjFbaV0gPT0gcHRyMltpXSkgew0KKyAgICAgICAgICAgIGkgKys7DQorICAgICAgICB9DQorICAgICAgICBpZiAoaSA9PSBuYW1lMS5HZXRMZW5ndGgoKSkgew0KKyAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGkgPT0gbmFtZTIuR2V0TGVuZ3RoKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gMzsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIG5hbWUxID09IG5hbWUyID8gMSA6IDA7DQorICAgIH0NCit9DQorRlhfRFdPUkQgQ1BERl9JbnRlckZvcm06OkNvdW50RmllbGRzKGNvbnN0IENGWF9XaWRlU3RyaW5nICZjc0ZpZWxkTmFtZSkNCit7DQorICAgIGlmIChjc0ZpZWxkTmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiAoRlhfRFdPUkQpbV9wRmllbGRUcmVlLT5tX1Jvb3QuQ291bnRGaWVsZHMoKTsNCisgICAgfQ0KKyAgICBDRmllbGRUcmVlOjpfTm9kZSAqcE5vZGUgPSBtX3BGaWVsZFRyZWUtPkZpbmROb2RlKGNzRmllbGROYW1lKTsNCisgICAgaWYgKHBOb2RlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiBwTm9kZS0+Q291bnRGaWVsZHMoKTsNCit9DQorQ1BERl9Gb3JtRmllbGQqIENQREZfSW50ZXJGb3JtOjpHZXRGaWVsZChGWF9EV09SRCBpbmRleCwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcgJmNzRmllbGROYW1lKQ0KK3sNCisgICAgaWYgKGNzRmllbGROYW1lID09IEwiIikgew0KKyAgICAgICAgcmV0dXJuIG1fcEZpZWxkVHJlZS0+bV9Sb290LkdldEZpZWxkKGluZGV4KTsNCisgICAgfQ0KKyAgICBDRmllbGRUcmVlOjpfTm9kZSAqcE5vZGUgPSBtX3BGaWVsZFRyZWUtPkZpbmROb2RlKGNzRmllbGROYW1lKTsNCisgICAgaWYgKHBOb2RlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBwTm9kZS0+R2V0RmllbGQoaW5kZXgpOw0KK30NCit2b2lkIENQREZfSW50ZXJGb3JtOjpHZXRBbGxGaWVsZE5hbWVzKENGWF9XaWRlU3RyaW5nQXJyYXkmIGFsbEZpZWxkTmFtZXMpDQorew0KKyAgICBhbGxGaWVsZE5hbWVzLlJlbW92ZUFsbCgpOw0KKyAgICBpbnQgbkNvdW50ID0gbV9wRmllbGRUcmVlLT5tX1Jvb3QuQ291bnRGaWVsZHMoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuQ291bnQ7IGkgKyspIHsNCisgICAgICAgIENQREZfRm9ybUZpZWxkICpwRmllbGQgPSBtX3BGaWVsZFRyZWUtPm1fUm9vdC5HZXRGaWVsZChpKTsNCisgICAgICAgIGlmIChwRmllbGQpIHsNCisgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBmdWxsX25hbWUgPSBHZXRGdWxsTmFtZShwRmllbGQtPkdldEZpZWxkRGljdCgpKTsNCisgICAgICAgICAgICBhbGxGaWVsZE5hbWVzLkFkZChmdWxsX25hbWUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbnRlckZvcm06OklzVmFsaWRGb3JtRmllbGQoY29uc3Qgdm9pZCogcEZpZWxkKQ0KK3sNCisgICAgaWYgKHBGaWVsZCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IG5Db3VudCA9IG1fcEZpZWxkVHJlZS0+bV9Sb290LkNvdW50RmllbGRzKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkNvdW50OyBpKyspIHsNCisgICAgICAgIENQREZfRm9ybUZpZWxkICpwRm9ybUZpZWxkID0gbV9wRmllbGRUcmVlLT5tX1Jvb3QuR2V0RmllbGQoaSk7DQorICAgICAgICBpZiAocEZpZWxkID09IHBGb3JtRmllbGQpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0NQREZfRm9ybUZpZWxkKiBDUERGX0ludGVyRm9ybTo6R2V0RmllbGRCeURpY3QoQ1BERl9EaWN0aW9uYXJ5KiBwRmllbGREaWN0KSBjb25zdA0KK3sNCisgICAgaWYgKHBGaWVsZERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgY3NXTmFtZSA9IEdldEZ1bGxOYW1lKHBGaWVsZERpY3QpOw0KKyAgICByZXR1cm4gbV9wRmllbGRUcmVlLT5HZXRGaWVsZChjc1dOYW1lKTsNCit9DQorRlhfRFdPUkQgQ1BERl9JbnRlckZvcm06OkNvdW50Q29udHJvbHMoQ0ZYX1dpZGVTdHJpbmcgY3NGaWVsZE5hbWUpDQorew0KKyAgICBpZiAoY3NGaWVsZE5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gKEZYX0RXT1JEKW1fQ29udHJvbE1hcC5HZXRDb3VudCgpOw0KKyAgICB9DQorICAgIENQREZfRm9ybUZpZWxkICpwRmllbGQgPSBtX3BGaWVsZFRyZWUtPkdldEZpZWxkKGNzRmllbGROYW1lKTsNCisgICAgaWYgKHBGaWVsZCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gcEZpZWxkLT5tX0NvbnRyb2xMaXN0LkdldFNpemUoKTsNCit9DQorQ1BERl9Gb3JtQ29udHJvbCogQ1BERl9JbnRlckZvcm06OkdldENvbnRyb2woRlhfRFdPUkQgaW5kZXgsIENGWF9XaWRlU3RyaW5nIGNzRmllbGROYW1lKQ0KK3sNCisgICAgQ1BERl9Gb3JtRmllbGQgKnBGaWVsZCA9IG1fcEZpZWxkVHJlZS0+R2V0RmllbGQoY3NGaWVsZE5hbWUpOw0KKyAgICBpZiAocEZpZWxkID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChpbmRleCA8IChGWF9EV09SRClwRmllbGQtPm1fQ29udHJvbExpc3QuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm4gKENQREZfRm9ybUNvbnRyb2wgKilwRmllbGQtPm1fQ29udHJvbExpc3QuR2V0QXQoaW5kZXgpOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitGWF9CT09MIENQREZfSW50ZXJGb3JtOjpJc1ZhbGlkRm9ybUNvbnRyb2woY29uc3Qgdm9pZCogcENvbnRyb2wpDQorew0KKyAgICBpZiAocENvbnRyb2wgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fQ29udHJvbE1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcFdpZGdldERpY3QgPSBOVUxMOw0KKyAgICAgICAgdm9pZCogcEZvcm1Db250cm9sID0gTlVMTDsNCisgICAgICAgIG1fQ29udHJvbE1hcC5HZXROZXh0QXNzb2MocG9zLCAoRlhfTFBWT0lEJilwV2lkZ2V0RGljdCwgcEZvcm1Db250cm9sKTsNCisgICAgICAgIGlmIChwQ29udHJvbCA9PSBwRm9ybUNvbnRyb2wpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK2ludCBDUERGX0ludGVyRm9ybTo6Q291bnRQYWdlQ29udHJvbHMoQ1BERl9QYWdlKiBwUGFnZSkgY29uc3QNCit7DQorICAgIENQREZfQXJyYXkqIHBBbm5vdExpc3QgPSBwUGFnZS0+bV9wRm9ybURpY3QtPkdldEFycmF5KCJBbm5vdHMiKTsNCisgICAgaWYgKHBBbm5vdExpc3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaW50IGNvdW50ID0gMDsNCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBBbm5vdExpc3QtPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcEFubm90ID0gcEFubm90TGlzdC0+R2V0RGljdChpKTsNCisgICAgICAgIGlmIChwQW5ub3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2w7DQorICAgICAgICBpZiAoIW1fQ29udHJvbE1hcC5Mb29rdXAocEFubm90LCAoRlhfTFBWT0lEJilwQ29udHJvbCkpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGNvdW50ICsrOw0KKyAgICB9DQorICAgIHJldHVybiBjb3VudDsNCit9DQorQ1BERl9Gb3JtQ29udHJvbCogQ1BERl9JbnRlckZvcm06OkdldFBhZ2VDb250cm9sKENQREZfUGFnZSogcFBhZ2UsIGludCBpbmRleCkgY29uc3QNCit7DQorICAgIENQREZfQXJyYXkqIHBBbm5vdExpc3QgPSBwUGFnZS0+bV9wRm9ybURpY3QtPkdldEFycmF5KCJBbm5vdHMiKTsNCisgICAgaWYgKHBBbm5vdExpc3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaW50IGNvdW50ID0gMDsNCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBBbm5vdExpc3QtPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcEFubm90ID0gcEFubm90TGlzdC0+R2V0RGljdChpKTsNCisgICAgICAgIGlmIChwQW5ub3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2w7DQorICAgICAgICBpZiAoIW1fQ29udHJvbE1hcC5Mb29rdXAocEFubm90LCAoRlhfTFBWT0lEJilwQ29udHJvbCkpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChpbmRleCA9PSBjb3VudCkgew0KKyAgICAgICAgICAgIHJldHVybiBwQ29udHJvbDsNCisgICAgICAgIH0NCisgICAgICAgIGNvdW50ICsrOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX0Zvcm1Db250cm9sKiBDUERGX0ludGVyRm9ybTo6R2V0Q29udHJvbEF0UG9pbnQoQ1BERl9QYWdlKiBwUGFnZSwgRlhfRkxPQVQgcGRmX3gsIEZYX0ZMT0FUIHBkZl95KSBjb25zdA0KK3sNCisgICAgQ1BERl9BcnJheSogcEFubm90TGlzdCA9IHBQYWdlLT5tX3BGb3JtRGljdC0+R2V0QXJyYXkoIkFubm90cyIpOw0KKyAgICBpZiAocEFubm90TGlzdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSBwQW5ub3RMaXN0LT5HZXRDb3VudCgpOyBpID4gMDsgaSAtLSkgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwQW5ub3QgPSBwQW5ub3RMaXN0LT5HZXREaWN0KGkgLSAxKTsNCisgICAgICAgIGlmIChwQW5ub3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2w7DQorICAgICAgICBpZiAoIW1fQ29udHJvbE1hcC5Mb29rdXAocEFubm90LCAoRlhfTFBWT0lEJilwQ29udHJvbCkpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9GbG9hdFJlY3QgcmVjdCA9IHBDb250cm9sLT5HZXRSZWN0KCk7DQorICAgICAgICBpZiAocmVjdC5Db250YWlucyhwZGZfeCwgcGRmX3kpKSB7DQorICAgICAgICAgICAgcmV0dXJuIHBDb250cm9sOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX0Zvcm1Db250cm9sKiBDUERGX0ludGVyRm9ybTo6R2V0Q29udHJvbEJ5RGljdChDUERGX0RpY3Rpb25hcnkqIHBXaWRnZXREaWN0KSBjb25zdA0KK3sNCisgICAgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2wgPSBOVUxMOw0KKyAgICBtX0NvbnRyb2xNYXAuTG9va3VwKHBXaWRnZXREaWN0LCAoRlhfTFBWT0lEJilwQ29udHJvbCk7DQorICAgIHJldHVybiBwQ29udHJvbDsNCit9DQorRlhfRFdPUkQgQ1BERl9JbnRlckZvcm06OkNvdW50SW50ZXJuYWxGaWVsZHMoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIGNzRmllbGROYW1lKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcEZvcm1EaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBBcnJheSA9IG1fcEZvcm1EaWN0LT5HZXRBcnJheSgiRmllbGRzIik7DQorICAgIGlmIChwQXJyYXkgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKGNzRmllbGROYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIHBBcnJheS0+R2V0Q291bnQoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCBpTGVuZ3RoID0gY3NGaWVsZE5hbWUuR2V0TGVuZ3RoKCk7DQorICAgICAgICBpbnQgaVBvcyA9IDA7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gTlVMTDsNCisgICAgICAgIHdoaWxlIChwQXJyYXkgIT0gTlVMTCkgew0KKyAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIGNzU3ViOw0KKyAgICAgICAgICAgIGlmIChpUG9zIDwgaUxlbmd0aCAmJiBjc0ZpZWxkTmFtZVtpUG9zXSA9PSBMJy4nKSB7DQorICAgICAgICAgICAgICAgIGlQb3MgKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHdoaWxlIChpUG9zIDwgaUxlbmd0aCAmJiBjc0ZpZWxkTmFtZVtpUG9zXSAhPSBMJy4nKSB7DQorICAgICAgICAgICAgICAgIGNzU3ViICs9IGNzRmllbGROYW1lW2lQb3MgKytdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgaUNvdW50ID0gcEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgICAgIEZYX0JPT0wgYkZpbmQgPSBGQUxTRTsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlDb3VudDsgaSArKykgew0KKyAgICAgICAgICAgICAgICBwRGljdCA9IHBBcnJheS0+R2V0RGljdChpKTsNCisgICAgICAgICAgICAgICAgaWYgKHBEaWN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIGNzVCA9IHBEaWN0LT5HZXRVbmljb2RlVGV4dCgiVCIpOw0KKyAgICAgICAgICAgICAgICBpZiAoY3NUID09IGNzU3ViKSB7DQorICAgICAgICAgICAgICAgICAgICBiRmluZCA9IFRSVUU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoIWJGaW5kKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaVBvcyA+PSBpTGVuZ3RoKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwQXJyYXkgPSBwRGljdC0+R2V0QXJyYXkoIktpZHMiKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwRGljdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBBcnJheSA9IHBEaWN0LT5HZXRBcnJheSgiS2lkcyIpOw0KKyAgICAgICAgICAgIGlmIChwQXJyYXkgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDUERGX0RpY3Rpb25hcnkqIENQREZfSW50ZXJGb3JtOjpHZXRJbnRlcm5hbEZpZWxkKEZYX0RXT1JEIGluZGV4LCBjb25zdCBDRlhfV2lkZVN0cmluZyYgY3NGaWVsZE5hbWUpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gbV9wRm9ybURpY3QtPkdldEFycmF5KCJGaWVsZHMiKTsNCisgICAgaWYgKHBBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAoY3NGaWVsZE5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gcEFycmF5LT5HZXREaWN0KGluZGV4KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCBpTGVuZ3RoID0gY3NGaWVsZE5hbWUuR2V0TGVuZ3RoKCk7DQorICAgICAgICBpbnQgaVBvcyA9IDA7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gTlVMTDsNCisgICAgICAgIHdoaWxlIChwQXJyYXkgIT0gTlVMTCkgew0KKyAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIGNzU3ViOw0KKyAgICAgICAgICAgIGlmIChpUG9zIDwgaUxlbmd0aCAmJiBjc0ZpZWxkTmFtZVtpUG9zXSA9PSBMJy4nKSB7DQorICAgICAgICAgICAgICAgIGlQb3MgKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHdoaWxlIChpUG9zIDwgaUxlbmd0aCAmJiBjc0ZpZWxkTmFtZVtpUG9zXSAhPSBMJy4nKSB7DQorICAgICAgICAgICAgICAgIGNzU3ViICs9IGNzRmllbGROYW1lW2lQb3MgKytdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgaUNvdW50ID0gcEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICAgICAgICAgIEZYX0JPT0wgYkZpbmQgPSBGQUxTRTsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlDb3VudDsgaSArKykgew0KKyAgICAgICAgICAgICAgICBwRGljdCA9IHBBcnJheS0+R2V0RGljdChpKTsNCisgICAgICAgICAgICAgICAgaWYgKHBEaWN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIGNzVCA9IHBEaWN0LT5HZXRVbmljb2RlVGV4dCgiVCIpOw0KKyAgICAgICAgICAgICAgICBpZiAoY3NUID09IGNzU3ViKSB7DQorICAgICAgICAgICAgICAgICAgICBiRmluZCA9IFRSVUU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoIWJGaW5kKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaVBvcyA+PSBpTGVuZ3RoKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwQXJyYXkgPSBwRGljdC0+R2V0QXJyYXkoIktpZHMiKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwRGljdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBBcnJheSA9IHBEaWN0LT5HZXRBcnJheSgiS2lkcyIpOw0KKyAgICAgICAgICAgIGlmIChwQXJyYXkgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcERpY3Q7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBBcnJheS0+R2V0RGljdChpbmRleCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbnRlckZvcm06Ok5lZWRDb25zdHJ1Y3RBUCgpDQorew0KKyAgICBpZiAobV9wRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BGb3JtRGljdC0+R2V0Qm9vbGVhbigiTmVlZEFwcGVhcmFuY2VzIik7DQorfQ0KK3ZvaWQgQ1BERl9JbnRlckZvcm06Ok5lZWRDb25zdHJ1Y3RBUChGWF9CT09MIGJOZWVkQVApDQorew0KKyAgICBpZiAobV9wRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgSW5pdEludGVyRm9ybURpY3QobV9wRm9ybURpY3QsIG1fcERvY3VtZW50KTsNCisgICAgfQ0KKyAgICBtX3BGb3JtRGljdC0+U2V0QXRCb29sZWFuKCJOZWVkQXBwZWFyYW5jZXMiLCBiTmVlZEFQKTsNCisgICAgbV9iR2VuZXJhdGVBUCA9IGJOZWVkQVA7DQorfQ0KK2ludCBDUERGX0ludGVyRm9ybTo6Q291bnRGaWVsZHNJbkNhbGN1bGF0aW9uT3JkZXIoKQ0KK3sNCisgICAgaWYgKG1fcEZvcm1EaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBBcnJheSA9IG1fcEZvcm1EaWN0LT5HZXRBcnJheSgiQ08iKTsNCisgICAgaWYgKHBBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gcEFycmF5LT5HZXRDb3VudCgpOw0KK30NCitDUERGX0Zvcm1GaWVsZCogQ1BERl9JbnRlckZvcm06OkdldEZpZWxkSW5DYWxjdWxhdGlvbk9yZGVyKGludCBpbmRleCkNCit7DQorICAgIGlmIChtX3BGb3JtRGljdCA9PSBOVUxMIHx8IGluZGV4IDwgMCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gbV9wRm9ybURpY3QtPkdldEFycmF5KCJDTyIpOw0KKyAgICBpZiAocEFycmF5ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwRWxlbWVudCA9IHBBcnJheS0+R2V0RWxlbWVudFZhbHVlKGluZGV4KTsNCisgICAgaWYgKHBFbGVtZW50ICE9IE5VTEwgJiYgcEVsZW1lbnQtPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgcmV0dXJuIEdldEZpZWxkQnlEaWN0KChDUERGX0RpY3Rpb25hcnkqKXBFbGVtZW50KTsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQoraW50IENQREZfSW50ZXJGb3JtOjpGaW5kRmllbGRJbkNhbGN1bGF0aW9uT3JkZXIoY29uc3QgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCkNCit7DQorICAgIGlmIChtX3BGb3JtRGljdCA9PSBOVUxMIHx8IHBGaWVsZCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gbV9wRm9ybURpY3QtPkdldEFycmF5KCJDTyIpOw0KKyAgICBpZiAocEFycmF5ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcEFycmF5LT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICBDUERGX09iamVjdCogcEVsZW1lbnQgPSBwQXJyYXktPkdldEVsZW1lbnRWYWx1ZShpKTsNCisgICAgICAgIGlmIChwRWxlbWVudCA9PSBwRmllbGQtPm1fcERpY3QpIHsNCisgICAgICAgICAgICByZXR1cm4gaTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gLTE7DQorfQ0KK0ZYX0RXT1JEIENQREZfSW50ZXJGb3JtOjpDb3VudEZvcm1Gb250cygpDQorew0KKyAgICByZXR1cm4gQ291bnRJbnRlckZvcm1Gb250cyhtX3BGb3JtRGljdCk7DQorfQ0KK0NQREZfRm9udCogQ1BERl9JbnRlckZvcm06OkdldEZvcm1Gb250KEZYX0RXT1JEIGluZGV4LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKQ0KK3sNCisgICAgcmV0dXJuIEdldEludGVyRm9ybUZvbnQobV9wRm9ybURpY3QsIG1fcERvY3VtZW50LCBpbmRleCwgY3NOYW1lVGFnKTsNCit9DQorQ1BERl9Gb250KiBDUERGX0ludGVyRm9ybTo6R2V0Rm9ybUZvbnQoQ0ZYX0J5dGVTdHJpbmcgY3NOYW1lVGFnKQ0KK3sNCisgICAgcmV0dXJuIEdldEludGVyRm9ybUZvbnQobV9wRm9ybURpY3QsIG1fcERvY3VtZW50LCBjc05hbWVUYWcpOw0KK30NCitDUERGX0ZvbnQqIENQREZfSW50ZXJGb3JtOjpHZXRGb3JtRm9udChDRlhfQnl0ZVN0cmluZyBjc0ZvbnROYW1lLCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKQ0KK3sNCisgICAgcmV0dXJuIEdldEludGVyRm9ybUZvbnQobV9wRm9ybURpY3QsIG1fcERvY3VtZW50LCBjc0ZvbnROYW1lLCBjc05hbWVUYWcpOw0KK30NCitDUERGX0ZvbnQqIENQREZfSW50ZXJGb3JtOjpHZXROYXRpdmVGb3JtRm9udChGWF9CWVRFIGNoYXJTZXQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpDQorew0KKyAgICByZXR1cm4gR2V0TmF0aXZlSW50ZXJGb3JtRm9udChtX3BGb3JtRGljdCwgbV9wRG9jdW1lbnQsIGNoYXJTZXQsIGNzTmFtZVRhZyk7DQorfQ0KK0NQREZfRm9udCogQ1BERl9JbnRlckZvcm06OkdldE5hdGl2ZUZvcm1Gb250KENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpDQorew0KKyAgICByZXR1cm4gR2V0TmF0aXZlSW50ZXJGb3JtRm9udChtX3BGb3JtRGljdCwgbV9wRG9jdW1lbnQsIGNzTmFtZVRhZyk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbnRlckZvcm06OkZpbmRGb3JtRm9udChjb25zdCBDUERGX0ZvbnQqIHBGb250LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKQ0KK3sNCisgICAgcmV0dXJuIEZpbmRJbnRlckZvcm1Gb250KG1fcEZvcm1EaWN0LCBwRm9udCwgY3NOYW1lVGFnKTsNCit9DQorRlhfQk9PTCBDUERGX0ludGVyRm9ybTo6RmluZEZvcm1Gb250KENGWF9CeXRlU3RyaW5nIGNzRm9udE5hbWUsIENQREZfRm9udComIHBGb250LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKQ0KK3sNCisgICAgcmV0dXJuIEZpbmRJbnRlckZvcm1Gb250KG1fcEZvcm1EaWN0LCBtX3BEb2N1bWVudCwgY3NGb250TmFtZSwgcEZvbnQsIGNzTmFtZVRhZyk7DQorfQ0KK3ZvaWQgQ1BERl9JbnRlckZvcm06OkFkZEZvcm1Gb250KGNvbnN0IENQREZfRm9udCogcEZvbnQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpDQorew0KKyAgICBBZGRJbnRlckZvcm1Gb250KG1fcEZvcm1EaWN0LCBtX3BEb2N1bWVudCwgcEZvbnQsIGNzTmFtZVRhZyk7DQorICAgIG1fYlVwZGF0ZWQgPSBUUlVFOw0KK30NCitDUERGX0ZvbnQqIENQREZfSW50ZXJGb3JtOjpBZGROYXRpdmVGb3JtRm9udChGWF9CWVRFIGNoYXJTZXQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpDQorew0KKyAgICBtX2JVcGRhdGVkID0gVFJVRTsNCisgICAgcmV0dXJuIEFkZE5hdGl2ZUludGVyRm9ybUZvbnQobV9wRm9ybURpY3QsIG1fcERvY3VtZW50LCBjaGFyU2V0LCBjc05hbWVUYWcpOw0KK30NCitDUERGX0ZvbnQqIENQREZfSW50ZXJGb3JtOjpBZGROYXRpdmVGb3JtRm9udChDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKQ0KK3sNCisgICAgbV9iVXBkYXRlZCA9IFRSVUU7DQorICAgIHJldHVybiBBZGROYXRpdmVJbnRlckZvcm1Gb250KG1fcEZvcm1EaWN0LCBtX3BEb2N1bWVudCwgY3NOYW1lVGFnKTsNCit9DQordm9pZCBDUERGX0ludGVyRm9ybTo6UmVtb3ZlRm9ybUZvbnQoY29uc3QgQ1BERl9Gb250KiBwRm9udCkNCit7DQorICAgIG1fYlVwZGF0ZWQgPSBUUlVFOw0KKyAgICBSZW1vdmVJbnRlckZvcm1Gb250KG1fcEZvcm1EaWN0LCBwRm9udCk7DQorfQ0KK3ZvaWQgQ1BERl9JbnRlckZvcm06OlJlbW92ZUZvcm1Gb250KENGWF9CeXRlU3RyaW5nIGNzTmFtZVRhZykNCit7DQorICAgIG1fYlVwZGF0ZWQgPSBUUlVFOw0KKyAgICBSZW1vdmVJbnRlckZvcm1Gb250KG1fcEZvcm1EaWN0LCBjc05hbWVUYWcpOw0KK30NCitDUERGX0RlZmF1bHRBcHBlYXJhbmNlIENQREZfSW50ZXJGb3JtOjpHZXREZWZhdWx0QXBwZWFyYW5jZSgpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc0RBOw0KKyAgICBpZiAobV9wRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIGNzREE7DQorICAgIH0NCisgICAgY3NEQSA9IG1fcEZvcm1EaWN0LT5HZXRTdHJpbmcoIkRBIik7DQorICAgIHJldHVybiBjc0RBOw0KK30NCitDUERGX0ZvbnQqIENQREZfSW50ZXJGb3JtOjpHZXREZWZhdWx0Rm9ybUZvbnQoKQ0KK3sNCisgICAgcmV0dXJuIEdldERlZmF1bHRJbnRlckZvcm1Gb250KG1fcEZvcm1EaWN0LCBtX3BEb2N1bWVudCk7DQorfQ0KK2ludCBDUERGX0ludGVyRm9ybTo6R2V0Rm9ybUFsaWdubWVudCgpDQorew0KKyAgICBpZiAobV9wRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcEZvcm1EaWN0LT5HZXRJbnRlZ2VyKCJRIiwgMCk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbnRlckZvcm06OlJlc2V0Rm9ybShjb25zdCBDRlhfUHRyQXJyYXkmIGZpZWxkcywgRlhfQk9PTCBiSW5jbHVkZU9yRXhjbHVkZSwgRlhfQk9PTCBiTm90aWZ5KQ0KK3sNCisgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICBpbnQgaVJldCA9IG1fcEZvcm1Ob3RpZnktPkJlZm9yZUZvcm1SZXNldCh0aGlzKTsNCisgICAgICAgIGlmIChpUmV0IDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpbnQgbkNvdW50ID0gbV9wRmllbGRUcmVlLT5tX1Jvb3QuQ291bnRGaWVsZHMoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuQ291bnQ7IGkrKykgew0KKyAgICAgICAgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCA9IG1fcEZpZWxkVHJlZS0+bV9Sb290LkdldEZpZWxkKGkpOw0KKyAgICAgICAgaWYgKHBGaWVsZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9CT09MIGJGaW5kID0gRkFMU0U7DQorICAgICAgICBpbnQgaUNvdW50ID0gZmllbGRzLkdldFNpemUoKTsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaUNvdW50OyBpICsrKSB7DQorICAgICAgICAgICAgaWYgKHBGaWVsZCA9PSAoQ1BERl9Gb3JtRmllbGQqKWZpZWxkc1tpXSkgew0KKyAgICAgICAgICAgICAgICBiRmluZCA9IFRSVUU7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmICgoYkluY2x1ZGVPckV4Y2x1ZGUgJiYgYkZpbmQpIHx8ICghYkluY2x1ZGVPckV4Y2x1ZGUgJiYgIWJGaW5kKSkgew0KKyAgICAgICAgICAgIHBGaWVsZC0+UmVzZXRGaWVsZChiTm90aWZ5KTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgIG1fcEZvcm1Ob3RpZnktPkFmdGVyRm9ybVJlc2V0KHRoaXMpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfSW50ZXJGb3JtOjpSZXNldEZvcm0oRlhfQk9PTCBiTm90aWZ5KQ0KK3sNCisgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICBpbnQgaVJldCA9IG1fcEZvcm1Ob3RpZnktPkJlZm9yZUZvcm1SZXNldCh0aGlzKTsNCisgICAgICAgIGlmIChpUmV0IDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpbnQgbkNvdW50ID0gbV9wRmllbGRUcmVlLT5tX1Jvb3QuQ291bnRGaWVsZHMoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuQ291bnQ7IGkrKykgew0KKyAgICAgICAgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCA9IG1fcEZpZWxkVHJlZS0+bV9Sb290LkdldEZpZWxkKGkpOw0KKyAgICAgICAgaWYgKHBGaWVsZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBwRmllbGQtPlJlc2V0RmllbGQoYk5vdGlmeSk7DQorICAgIH0NCisgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICBtX3BGb3JtTm90aWZ5LT5BZnRlckZvcm1SZXNldCh0aGlzKTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDUERGX0ludGVyRm9ybTo6UmVsb2FkRm9ybSgpDQorew0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX0NvbnRyb2xNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBXaWRnZXREaWN0Ow0KKyAgICAgICAgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2w7DQorICAgICAgICBtX0NvbnRyb2xNYXAuR2V0TmV4dEFzc29jKHBvcywgKEZYX0xQVk9JRCYpcFdpZGdldERpY3QsIChGWF9MUFZPSUQmKXBDb250cm9sKTsNCisgICAgICAgIGRlbGV0ZSBwQ29udHJvbDsNCisgICAgfQ0KKyAgICBtX0NvbnRyb2xNYXAuUmVtb3ZlQWxsKCk7DQorICAgIGludCBuQ291bnQgPSBtX3BGaWVsZFRyZWUtPm1fUm9vdC5Db3VudEZpZWxkcygpOw0KKyAgICBmb3IgKGludCBrID0gMDsgayA8IG5Db3VudDsgayArKykgew0KKyAgICAgICAgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCA9IG1fcEZpZWxkVHJlZS0+bV9Sb290LkdldEZpZWxkKGspOw0KKyAgICAgICAgZGVsZXRlIHBGaWVsZDsNCisgICAgfQ0KKyAgICBtX3BGaWVsZFRyZWUtPlJlbW92ZUFsbCgpOw0KKyAgICBpZiAobV9wRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBGaWVsZHMgPSBtX3BGb3JtRGljdC0+R2V0QXJyYXkoIkZpZWxkcyIpOw0KKyAgICBpZiAocEZpZWxkcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IGlDb3VudCA9IHBGaWVsZHMtPkdldENvdW50KCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaUNvdW50OyBpICsrKSB7DQorICAgICAgICBMb2FkRmllbGQocEZpZWxkcy0+R2V0RGljdChpKSk7DQorICAgIH0NCit9DQordm9pZCBDUERGX0ludGVyRm9ybTo6TG9hZEZpZWxkKENQREZfRGljdGlvbmFyeSogcEZpZWxkRGljdCwgaW50IG5MZXZlbCkNCit7DQorICAgIGlmIChuTGV2ZWwgPiBuTWF4UmVjdXJzaW9uKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBGaWVsZERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3UGFyZW50T2JqTnVtID0gcEZpZWxkRGljdC0+R2V0T2JqTnVtKCk7DQorICAgIENQREZfQXJyYXkqIHBLaWRzID0gcEZpZWxkRGljdC0+R2V0QXJyYXkoIktpZHMiKTsNCisgICAgaWYgKCFwS2lkcykgew0KKyAgICAgICAgQWRkVGVybWluYWxGaWVsZChwRmllbGREaWN0KTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGaXJzdEtpZCA9IHBLaWRzLT5HZXREaWN0KDApOw0KKyAgICBpZiAocEZpcnN0S2lkID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAocEZpcnN0S2lkLT5LZXlFeGlzdCgiVCIpIHx8IHBGaXJzdEtpZC0+S2V5RXhpc3QoIktpZHMiKSkgew0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBLaWRzLT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICogcENoaWxkRGljdCA9IHBLaWRzLT5HZXREaWN0KGkpOw0KKyAgICAgICAgICAgIGlmIChwQ2hpbGREaWN0KSB7DQorICAgICAgICAgICAgICAgIGlmIChwQ2hpbGREaWN0LT5HZXRPYmpOdW0oKSAhPSBkd1BhcmVudE9iak51bSkgew0KKyAgICAgICAgICAgICAgICAgICAgTG9hZEZpZWxkKHBDaGlsZERpY3QsIG5MZXZlbCArIDEpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQWRkVGVybWluYWxGaWVsZChwRmllbGREaWN0KTsNCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfSW50ZXJGb3JtOjpIYXNYRkFGb3JtKCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX3BGb3JtRGljdCAmJiBtX3BGb3JtRGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIlhGQSIpKSAhPSBOVUxMOw0KK30NCit2b2lkIENQREZfSW50ZXJGb3JtOjpGaXhQYWdlRmllbGRzKGNvbnN0IENQREZfUGFnZSogcFBhZ2UpDQorew0KKyAgICBBU1NFUlQocFBhZ2UgIT0gTlVMTCk7DQorICAgIENQREZfRGljdGlvbmFyeSogcFBhZ2VEaWN0ID0gcFBhZ2UtPm1fcEZvcm1EaWN0Ow0KKyAgICBpZiAocFBhZ2VEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwQW5ub3RzID0gcFBhZ2VEaWN0LT5HZXRBcnJheShGWF9CU1RSQygiQW5ub3RzIikpOw0KKyAgICBpZiAocEFubm90cyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IGlBbm5vdENvdW50ID0gcEFubm90cy0+R2V0Q291bnQoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpQW5ub3RDb3VudDsgaSsrKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBBbm5vdCA9IHBBbm5vdHMtPkdldERpY3QoaSk7DQorICAgICAgICBpZiAocEFubm90ICE9IE5VTEwgJiYgcEFubm90LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlN1YnR5cGUiKSkgPT0gIldpZGdldCIpIHsNCisgICAgICAgICAgICBMb2FkRmllbGQocEFubm90KTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDUERGX0Zvcm1GaWVsZCogQ1BERl9JbnRlckZvcm06OkFkZFRlcm1pbmFsRmllbGQoY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwRmllbGREaWN0KQ0KK3sNCisgICAgaWYgKCFwRmllbGREaWN0LT5LZXlFeGlzdChGWF9CU1RSQygiVCIpKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKXBGaWVsZERpY3Q7DQorICAgIENGWF9XaWRlU3RyaW5nIGNzV05hbWUgPSBHZXRGdWxsTmFtZShwRGljdCk7DQorICAgIGlmIChjc1dOYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCA9IE5VTEw7DQorICAgIHBGaWVsZCA9IG1fcEZpZWxkVHJlZS0+R2V0RmllbGQoY3NXTmFtZSk7DQorICAgIGlmIChwRmllbGQgPT0gTlVMTCkgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICpwUGFyZW50ID0gKENQREZfRGljdGlvbmFyeSopcEZpZWxkRGljdDsNCisgICAgICAgIGlmICghcEZpZWxkRGljdC0+S2V5RXhpc3QoRlhfQlNUUigiVCIpKSAmJg0KKyAgICAgICAgICAgICAgICBwRmllbGREaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlN1YnR5cGUiKSkgPT0gRlhfQlNUUkMoIldpZGdldCIpKSB7DQorICAgICAgICAgICAgcFBhcmVudCA9IHBGaWVsZERpY3QtPkdldERpY3QoRlhfQlNUUkMoIlBhcmVudCIpKTsNCisgICAgICAgICAgICBpZiAoIXBQYXJlbnQpIHsNCisgICAgICAgICAgICAgICAgcFBhcmVudCA9IChDUERGX0RpY3Rpb25hcnkqKXBGaWVsZERpY3Q7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBQYXJlbnQgJiYgcFBhcmVudCAhPSBwRmllbGREaWN0ICYmICFwUGFyZW50LT5LZXlFeGlzdChGWF9CU1RSQygiRlQiKSkpIHsNCisgICAgICAgICAgICBpZiAocEZpZWxkRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIkZUIikpKSB7DQorICAgICAgICAgICAgICAgIENQREZfT2JqZWN0ICpwRlRWYWx1ZSA9IHBGaWVsZERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiRlQiKSk7DQorICAgICAgICAgICAgICAgIGlmIChwRlRWYWx1ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgcFBhcmVudC0+U2V0QXQoRlhfQlNUUkMoIkZUIiksIHBGVFZhbHVlLT5DbG9uZSgpKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAocEZpZWxkRGljdC0+S2V5RXhpc3QoRlhfQlNUUkMoIkZmIikpKSB7DQorICAgICAgICAgICAgICAgIENQREZfT2JqZWN0ICpwRmZWYWx1ZSA9IHBGaWVsZERpY3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiRmYiKSk7DQorICAgICAgICAgICAgICAgIGlmIChwRmZWYWx1ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgcFBhcmVudC0+U2V0QXQoRlhfQlNUUkMoIkZmIiksIHBGZlZhbHVlLT5DbG9uZSgpKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHBGaWVsZCA9IEZYX05FVyBDUERGX0Zvcm1GaWVsZCh0aGlzLCBwUGFyZW50KTsNCisgICAgICAgIENQREZfT2JqZWN0KiBwVE9iaiA9IHBEaWN0LT5HZXRFbGVtZW50KCJUIik7DQorICAgICAgICBpZiAocFRPYmogJiYgcFRPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfUkVGRVJFTkNFKSB7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBDbG9uZSA9IHBUT2JqLT5DbG9uZShUUlVFKTsNCisgICAgICAgICAgICBpZiAocENsb25lKSB7DQorICAgICAgICAgICAgICAgIHBEaWN0LT5TZXRBdCgiVCIsIHBDbG9uZSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcERpY3QtPlNldEF0TmFtZSgiVCIsICIiKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBtX3BGaWVsZFRyZWUtPlNldEZpZWxkKGNzV05hbWUsIHBGaWVsZCk7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEtpZHMgPSBwRmllbGREaWN0LT5HZXRBcnJheSgiS2lkcyIpOw0KKyAgICBpZiAocEtpZHMgPT0gTlVMTCkgew0KKyAgICAgICAgaWYgKHBGaWVsZERpY3QtPkdldFN0cmluZygiU3VidHlwZSIpID09ICJXaWRnZXQiKSB7DQorICAgICAgICAgICAgQWRkQ29udHJvbChwRmllbGQsIHBGaWVsZERpY3QpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBLaWRzLT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwS2lkID0gcEtpZHMtPkdldERpY3QoaSk7DQorICAgICAgICAgICAgaWYgKHBLaWQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBLaWQtPkdldFN0cmluZygiU3VidHlwZSIpICE9ICJXaWRnZXQiKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBBZGRDb250cm9sKHBGaWVsZCwgcEtpZCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHBGaWVsZDsNCit9DQorQ1BERl9Gb3JtQ29udHJvbCogQ1BERl9JbnRlckZvcm06OkFkZENvbnRyb2woY29uc3QgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCwgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KiBwV2lkZ2V0RGljdCkNCit7DQorICAgIHZvaWQgKnJWYWx1ZSA9IE5VTEw7DQorICAgIGlmIChtX0NvbnRyb2xNYXAuTG9va3VwKChDUERGX0RpY3Rpb25hcnkqKXBXaWRnZXREaWN0LCByVmFsdWUpKSB7DQorICAgICAgICByZXR1cm4gKENQREZfRm9ybUNvbnRyb2wqKXJWYWx1ZTsNCisgICAgfQ0KKyAgICBDUERGX0Zvcm1Db250cm9sKiBwQ29udHJvbCA9IEZYX05FVyBDUERGX0Zvcm1Db250cm9sKChDUERGX0Zvcm1GaWVsZCopcEZpZWxkLCAoQ1BERl9EaWN0aW9uYXJ5KilwV2lkZ2V0RGljdCk7DQorICAgIGlmIChwQ29udHJvbCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBtX0NvbnRyb2xNYXAuU2V0QXQoKENQREZfRGljdGlvbmFyeSopcFdpZGdldERpY3QsIHBDb250cm9sKTsNCisgICAgKChDUERGX0Zvcm1GaWVsZCopcEZpZWxkKS0+bV9Db250cm9sTGlzdC5BZGQocENvbnRyb2wpOw0KKyAgICByZXR1cm4gcENvbnRyb2w7DQorfQ0KK0NQREZfRm9ybUZpZWxkKiBDUERGX0ludGVyRm9ybTo6Q2hlY2tSZXF1aXJlZEZpZWxkcyhjb25zdCBDRlhfUHRyQXJyYXkgKmZpZWxkcywgRlhfQk9PTCBiSW5jbHVkZU9yRXhjbHVkZSkgY29uc3QNCit7DQorICAgIGludCBuQ291bnQgPSBtX3BGaWVsZFRyZWUtPm1fUm9vdC5Db3VudEZpZWxkcygpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5Db3VudDsgaSsrKSB7DQorICAgICAgICBDUERGX0Zvcm1GaWVsZCogcEZpZWxkID0gbV9wRmllbGRUcmVlLT5tX1Jvb3QuR2V0RmllbGQoaSk7DQorICAgICAgICBpZiAocEZpZWxkID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0lOVDMyIGlUeXBlID0gcEZpZWxkLT5HZXRUeXBlKCk7DQorICAgICAgICBpZiAoaVR5cGUgPT0gQ1BERl9Gb3JtRmllbGQ6OlB1c2hCdXR0b24gfHwgaVR5cGUgPT0gQ1BERl9Gb3JtRmllbGQ6OkNoZWNrQm94IHx8IGlUeXBlID09IENQREZfRm9ybUZpZWxkOjpMaXN0Qm94KSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCBkd0ZsYWdzID0gcEZpZWxkLT5HZXRGaWVsZEZsYWdzKCk7DQorICAgICAgICBpZiAoZHdGbGFncyAmIDB4MDQpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JPT0wgYkZpbmQgPSBUUlVFOw0KKyAgICAgICAgaWYgKGZpZWxkcyAhPSBOVUxMKSB7DQorICAgICAgICAgICAgYkZpbmQgPSBmaWVsZHMtPkZpbmQocEZpZWxkLCAwKSA+PSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKChiSW5jbHVkZU9yRXhjbHVkZSAmJiBiRmluZCkgfHwgKCFiSW5jbHVkZU9yRXhjbHVkZSAmJiAhYkZpbmQpKSB7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICpwRmllbGREaWN0ID0gcEZpZWxkLT5tX3BEaWN0Ow0KKyAgICAgICAgICAgIGlmICgoZHdGbGFncyAmIDB4MDIpICE9IDAgJiYgcEZpZWxkRGljdC0+R2V0U3RyaW5nKCJWIikuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwRmllbGQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDRkRGX0RvY3VtZW50KiBDUERGX0ludGVyRm9ybTo6RXhwb3J0VG9GREYoRlhfV1NUUiBwZGZfcGF0aCwgRlhfQk9PTCBiU2ltcGxlRmlsZVNwZWMpIGNvbnN0DQorew0KKyAgICBDRlhfUHRyQXJyYXkgZmllbGRzOw0KKyAgICBpbnQgbkNvdW50ID0gbV9wRmllbGRUcmVlLT5tX1Jvb3QuQ291bnRGaWVsZHMoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuQ291bnQ7IGkgKyspIHsNCisgICAgICAgIENQREZfRm9ybUZpZWxkKiBwRmllbGQgPSBtX3BGaWVsZFRyZWUtPm1fUm9vdC5HZXRGaWVsZChpKTsNCisgICAgICAgIGZpZWxkcy5BZGQocEZpZWxkKTsNCisgICAgfQ0KKyAgICByZXR1cm4gRXhwb3J0VG9GREYocGRmX3BhdGgsIGZpZWxkcywgVFJVRSwgYlNpbXBsZUZpbGVTcGVjKTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgRklMRVNQRUNfRW5jb2RlRmlsZU5hbWUoRlhfV1NUUiBmaWxlcGF0aCk7DQorQ0ZERl9Eb2N1bWVudCogQ1BERl9JbnRlckZvcm06OkV4cG9ydFRvRkRGKEZYX1dTVFIgcGRmX3BhdGgsIENGWF9QdHJBcnJheSYgZmllbGRzLCBGWF9CT09MIGJJbmNsdWRlT3JFeGNsdWRlLCBGWF9CT09MIGJTaW1wbGVGaWxlU3BlYykgY29uc3QNCit7DQorICAgIENGREZfRG9jdW1lbnQqIHBEb2MgPSBDRkRGX0RvY3VtZW50OjpDcmVhdGVOZXdEb2MoKTsNCisgICAgaWYgKHBEb2MgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwTWFpbkRpY3QgPSBwRG9jLT5HZXRSb290KCktPkdldERpY3QoIkZERiIpOw0KKyAgICBpZiAoIXBkZl9wYXRoLklzRW1wdHkoKSkgew0KKyAgICAgICAgaWYgKGJTaW1wbGVGaWxlU3BlYykgew0KKyAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHdzRmlsZVBhdGggPSBGSUxFU1BFQ19FbmNvZGVGaWxlTmFtZShwZGZfcGF0aCk7DQorICAgICAgICAgICAgcE1haW5EaWN0LT5TZXRBdFN0cmluZyhGWF9CU1RSQygiRiIpLCBDRlhfQnl0ZVN0cmluZzo6RnJvbVVuaWNvZGUod3NGaWxlUGF0aCkpOw0KKyAgICAgICAgICAgIHBNYWluRGljdC0+U2V0QXRTdHJpbmcoRlhfQlNUUkMoIlVGIiksIFBERl9FbmNvZGVUZXh0KHdzRmlsZVBhdGgpKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgQ1BERl9GaWxlU3BlYyBmaWxlc3BlYzsNCisgICAgICAgICAgICBmaWxlc3BlYy5TZXRGaWxlTmFtZShwZGZfcGF0aCk7DQorICAgICAgICAgICAgcE1haW5EaWN0LT5TZXRBdCgiRiIsIChDUERGX09iamVjdCopZmlsZXNwZWMpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBGaWVsZHMgPSBDUERGX0FycmF5OjpDcmVhdGUoKTsNCisgICAgaWYgKHBGaWVsZHMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcE1haW5EaWN0LT5TZXRBdCgiRmllbGRzIiwgcEZpZWxkcyk7DQorICAgIGludCBuQ291bnQgPSBtX3BGaWVsZFRyZWUtPm1fUm9vdC5Db3VudEZpZWxkcygpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5Db3VudDsgaSArKykgew0KKyAgICAgICAgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCA9IG1fcEZpZWxkVHJlZS0+bV9Sb290LkdldEZpZWxkKGkpOw0KKyAgICAgICAgaWYgKHBGaWVsZCA9PSBOVUxMIHx8IHBGaWVsZC0+R2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpQdXNoQnV0dG9uKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCBkd0ZsYWdzID0gcEZpZWxkLT5HZXRGaWVsZEZsYWdzKCk7DQorICAgICAgICBpZiAoZHdGbGFncyAmIDB4MDQpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JPT0wgYkZpbmQgPSBmaWVsZHMuRmluZChwRmllbGQsIDApID49IDA7DQorICAgICAgICBpZiAoKGJJbmNsdWRlT3JFeGNsdWRlICYmIGJGaW5kKSB8fCAoIWJJbmNsdWRlT3JFeGNsdWRlICYmICFiRmluZCkpIHsNCisgICAgICAgICAgICBpZiAoKGR3RmxhZ3MgJiAweDAyKSAhPSAwICYmIHBGaWVsZC0+bV9wRGljdC0+R2V0U3RyaW5nKCJWIikuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBmdWxsbmFtZSA9IEdldEZ1bGxOYW1lKHBGaWVsZC0+R2V0RmllbGREaWN0KCkpOw0KKyAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcEZpZWxkRGljdCA9IENQREZfRGljdGlvbmFyeTo6Q3JlYXRlKCk7DQorICAgICAgICAgICAgaWYgKHBGaWVsZERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ1BERl9TdHJpbmcqIHBTdHJpbmcgPSBDUERGX1N0cmluZzo6Q3JlYXRlKGZ1bGxuYW1lKTsNCisgICAgICAgICAgICBpZiAocFN0cmluZyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHBGaWVsZERpY3QtPlJlbGVhc2UoKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBGaWVsZERpY3QtPlNldEF0KCJUIiwgcFN0cmluZyk7DQorICAgICAgICAgICAgaWYgKHBGaWVsZC0+R2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpDaGVja0JveCB8fCBwRmllbGQtPkdldFR5cGUoKSA9PSBDUERGX0Zvcm1GaWVsZDo6UmFkaW9CdXR0b24pIHsNCisgICAgICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgY3NFeHBvcnQgPSBwRmllbGQtPkdldENoZWNrVmFsdWUoRkFMU0UpOw0KKyAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc0JFeHBvcnQgPSBQREZfRW5jb2RlVGV4dChjc0V4cG9ydCk7DQorICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwT3B0ID0gRlBERl9HZXRGaWVsZEF0dHIocEZpZWxkLT5tX3BEaWN0LCAiT3B0Iik7DQorICAgICAgICAgICAgICAgIGlmIChwT3B0ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIHBGaWVsZERpY3QtPlNldEF0TmFtZSgiViIsIGNzQkV4cG9ydCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBwRmllbGREaWN0LT5TZXRBdFN0cmluZygiViIsIGNzQkV4cG9ydCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBDUERGX09iamVjdCogcFYgPSBGUERGX0dldEZpZWxkQXR0cihwRmllbGQtPm1fcERpY3QsICJWIik7DQorICAgICAgICAgICAgICAgIGlmIChwViAhPSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBwRmllbGREaWN0LT5TZXRBdCgiViIsIHBWLT5DbG9uZShUUlVFKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcEZpZWxkcy0+QWRkKHBGaWVsZERpY3QpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBwRG9jOw0KK30NCitjb25zdCBzdHJ1Y3QgX1N1cHBvcnRGaWVsZEVuY29kaW5nIHsNCisgICAgRlhfTFBDU1RSIG1fbmFtZTsNCisgICAgRlhfSU5UMzIgbV9jb2RlUGFnZTsNCit9IGdfZmllbGRFbmNvZGluZ1tdID0gew0KKyAgICAiQmlnRml2ZSIsIDk1MCwNCisgICAgIkdCSyIsIDkzNiwNCisgICAgIlNoaWZ0LUpJUyIsIDkzMiwNCisgICAgIlVIQyIsIDk0OSwNCit9Ow0KK3N0YXRpYyB2b2lkIEZQREZET0NfRkRGX0dldEZpZWxkVmFsdWUoQ1BERl9EaWN0aW9uYXJ5ICpwRmllbGREaWN0LCBDRlhfV2lkZVN0cmluZyAmY3NWYWx1ZSwgQ0ZYX0J5dGVTdHJpbmcgJmJzRW5jb2RpbmcpDQorew0KKyAgICBBU1NFUlQocEZpZWxkRGljdCAhPSBOVUxMKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NCVmFsdWUgPSBwRmllbGREaWN0LT5HZXRTdHJpbmcoIlYiKTsNCisgICAgRlhfSU5UMzIgaUNvdW50ID0gc2l6ZW9mKGdfZmllbGRFbmNvZGluZykgLyBzaXplb2YoZ19maWVsZEVuY29kaW5nWzBdKTsNCisgICAgRlhfSU5UMzIgaSA9IDA7DQorICAgIGZvciAoOyBpIDwgaUNvdW50OyArK2kpDQorICAgICAgICBpZiAoYnNFbmNvZGluZyA9PSBnX2ZpZWxkRW5jb2RpbmdbaV0ubV9uYW1lKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIGlmIChpIDwgaUNvdW50KSB7DQorICAgICAgICBDRlhfQ2hhck1hcCAqcENoYXJNYXAgPSBDRlhfQ2hhck1hcDo6R2V0RGVmYXVsdE1hcHBlcihnX2ZpZWxkRW5jb2RpbmdbaV0ubV9jb2RlUGFnZSk7DQorICAgICAgICBGWFNZU19hc3NlcnQocENoYXJNYXAgIT0gTlVMTCk7DQorICAgICAgICBjc1ZhbHVlLkNvbnZlcnRGcm9tKGNzQlZhbHVlLCBwQ2hhck1hcCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NUZW1wID0gY3NCVmFsdWUuTGVmdCgyKTsNCisgICAgaWYgKGNzVGVtcCA9PSAiXHhGRlx4RkUiIHx8IGNzVGVtcCA9PSAiXHhGRVx4RkYiKSB7DQorICAgICAgICBjc1ZhbHVlID0gUERGX0RlY29kZVRleHQoY3NCVmFsdWUpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgY3NWYWx1ZSA9IENGWF9XaWRlU3RyaW5nOjpGcm9tTG9jYWwoY3NCVmFsdWUpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9JbnRlckZvcm06OkZERl9JbXBvcnRGaWVsZChDUERGX0RpY3Rpb25hcnkqIHBGaWVsZERpY3QsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiBwYXJlbnRfbmFtZSwgRlhfQk9PTCBiTm90aWZ5LCBpbnQgbkxldmVsKQ0KK3sNCisgICAgQ0ZYX1dpZGVTdHJpbmcgbmFtZTsNCisgICAgaWYgKCFwYXJlbnRfbmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIG5hbWUgPSBwYXJlbnRfbmFtZSArIEwiLiI7DQorICAgIH0NCisgICAgbmFtZSArPSBwRmllbGREaWN0LT5HZXRVbmljb2RlVGV4dCgiVCIpOw0KKyAgICBDUERGX0FycmF5KiBwS2lkcyA9IHBGaWVsZERpY3QtPkdldEFycmF5KCJLaWRzIik7DQorICAgIGlmIChwS2lkcykgew0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBLaWRzLT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwS2lkID0gcEtpZHMtPkdldERpY3QoaSk7DQorICAgICAgICAgICAgaWYgKHBLaWQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG5MZXZlbCA8PSBuTWF4UmVjdXJzaW9uKSB7DQorICAgICAgICAgICAgICAgIEZERl9JbXBvcnRGaWVsZChwS2lkLCBuYW1lLCBiTm90aWZ5LCBuTGV2ZWwgKyAxKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKCFwRmllbGREaWN0LT5LZXlFeGlzdCgiViIpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9Gb3JtRmllbGQqIHBGaWVsZCA9IG1fcEZpZWxkVHJlZS0+R2V0RmllbGQobmFtZSk7DQorICAgIGlmIChwRmllbGQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9XaWRlU3RyaW5nIGNzV1ZhbHVlOw0KKyAgICBGUERGRE9DX0ZERl9HZXRGaWVsZFZhbHVlKHBGaWVsZERpY3QsIGNzV1ZhbHVlLCBtX2JzRW5jb2RpbmcpOw0KKyAgICBpbnQgaVR5cGUgPSBwRmllbGQtPkdldEZpZWxkVHlwZSgpOw0KKyAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgIGludCBpUmV0ID0gMDsNCisgICAgICAgIGlmIChpVHlwZSA9PSBGSUVMRFRZUEVfTElTVEJPWCkgew0KKyAgICAgICAgICAgIGlSZXQgPSBtX3BGb3JtTm90aWZ5LT5CZWZvcmVTZWxlY3Rpb25DaGFuZ2UocEZpZWxkLCBjc1dWYWx1ZSk7DQorICAgICAgICB9IGVsc2UgaWYgKGlUeXBlID09IEZJRUxEVFlQRV9DT01CT0JPWCB8fCBpVHlwZSA9PSBGSUVMRFRZUEVfVEVYVEZJRUxEKSB7DQorICAgICAgICAgICAgaVJldCA9IG1fcEZvcm1Ob3RpZnktPkJlZm9yZVZhbHVlQ2hhbmdlKHBGaWVsZCwgY3NXVmFsdWUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGlSZXQgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENGWF9CeXRlQXJyYXkgc3RhdHVzQXJyYXk7DQorICAgIGlmIChpVHlwZSA9PSBGSUVMRFRZUEVfQ0hFQ0tCT1ggfHwgaVR5cGUgPT0gRklFTERUWVBFX1JBRElPQlVUVE9OKSB7DQorICAgICAgICBTYXZlQ2hlY2tlZEZpZWxkU3RhdHVzKHBGaWVsZCwgc3RhdHVzQXJyYXkpOw0KKyAgICB9DQorICAgIHBGaWVsZC0+U2V0VmFsdWUoY3NXVmFsdWUpOw0KKyAgICBDUERGX0Zvcm1GaWVsZDo6VHlwZSBlVHlwZSA9IHBGaWVsZC0+R2V0VHlwZSgpOw0KKyAgICBpZiAoKGVUeXBlID09IENQREZfRm9ybUZpZWxkOjpMaXN0Qm94IHx8IGVUeXBlID09IENQREZfRm9ybUZpZWxkOjpDb21ib0JveCkgJiYgcEZpZWxkRGljdC0+S2V5RXhpc3QoIk9wdCIpKSB7DQorICAgICAgICBwRmllbGQtPm1fcERpY3QtPlNldEF0KCJPcHQiLCBwRmllbGREaWN0LT5HZXRFbGVtZW50VmFsdWUoIk9wdCIpLT5DbG9uZShUUlVFKSk7DQorICAgIH0NCisgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICBpZiAoaVR5cGUgPT0gRklFTERUWVBFX0NIRUNLQk9YIHx8IGlUeXBlID09IEZJRUxEVFlQRV9SQURJT0JVVFRPTikgew0KKyAgICAgICAgICAgIG1fcEZvcm1Ob3RpZnktPkFmdGVyQ2hlY2tlZFN0YXR1c0NoYW5nZShwRmllbGQsIHN0YXR1c0FycmF5KTsNCisgICAgICAgIH0gZWxzZSBpZiAoaVR5cGUgPT0gRklFTERUWVBFX0xJU1RCT1gpIHsNCisgICAgICAgICAgICBtX3BGb3JtTm90aWZ5LT5BZnRlclNlbGVjdGlvbkNoYW5nZShwRmllbGQpOw0KKyAgICAgICAgfSBlbHNlIGlmIChpVHlwZSA9PSBGSUVMRFRZUEVfQ09NQk9CT1ggfHwgaVR5cGUgPT0gRklFTERUWVBFX1RFWFRGSUVMRCkgew0KKyAgICAgICAgICAgIG1fcEZvcm1Ob3RpZnktPkFmdGVyVmFsdWVDaGFuZ2UocEZpZWxkKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoQ1BERl9JbnRlckZvcm06Om1fYlVwZGF0ZUFQKSB7DQorICAgICAgICBwRmllbGQtPlVwZGF0ZUFQKE5VTEwpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9JbnRlckZvcm06OkltcG9ydEZyb21GREYoY29uc3QgQ0ZERl9Eb2N1bWVudCogcEZERiwgRlhfQk9PTCBiTm90aWZ5KQ0KK3sNCisgICAgaWYgKHBGREYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcE1haW5EaWN0ID0gcEZERi0+R2V0Um9vdCgpLT5HZXREaWN0KCJGREYiKTsNCisgICAgaWYgKHBNYWluRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEZpZWxkcyA9IHBNYWluRGljdC0+R2V0QXJyYXkoIkZpZWxkcyIpOw0KKyAgICBpZiAocEZpZWxkcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9ic0VuY29kaW5nID0gcE1haW5EaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIkVuY29kaW5nIikpOw0KKyAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgIGludCBpUmV0ID0gbV9wRm9ybU5vdGlmeS0+QmVmb3JlRm9ybUltcG9ydERhdGEodGhpcyk7DQorICAgICAgICBpZiAoaVJldCA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBGaWVsZHMtPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcEZpZWxkID0gcEZpZWxkcy0+R2V0RGljdChpKTsNCisgICAgICAgIGlmIChwRmllbGQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRkRGX0ltcG9ydEZpZWxkKHBGaWVsZCwgTCIiLCBiTm90aWZ5KTsNCisgICAgfQ0KKyAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgIG1fcEZvcm1Ob3RpZnktPkFmdGVyRm9ybUltcG9ydERhdGEodGhpcyk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ1BERl9JbnRlckZvcm06OlNldEZvcm1Ob3RpZnkoY29uc3QgQ1BERl9Gb3JtTm90aWZ5KiBwTm90aWZ5KQ0KK3sNCisgICAgbV9wRm9ybU5vdGlmeSA9IChDUERGX0Zvcm1Ob3RpZnkqKXBOb3RpZnk7DQorfQ0KK2ludCBDUERGX0ludGVyRm9ybTo6R2V0UGFnZVdpdGhXaWRnZXQoaW50IGlDdXJQYWdlLCBGWF9CT09MIGJOZXh0KQ0KK3sNCisgICAgaWYgKGlDdXJQYWdlIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGludCBpUGFnZUNvdW50ID0gbV9wRG9jdW1lbnQtPkdldFBhZ2VDb3VudCgpOw0KKyAgICBpZiAoaUN1clBhZ2UgPj0gaVBhZ2VDb3VudCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGludCBpTmV3UGFnZSA9IGlDdXJQYWdlOw0KKyAgICBkbyB7DQorICAgICAgICBpTmV3UGFnZSArPSBiTmV4dCA/IDEgOiAtMTsNCisgICAgICAgIGlmIChpTmV3UGFnZSA+PSBpUGFnZUNvdW50KSB7DQorICAgICAgICAgICAgaU5ld1BhZ2UgPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGlOZXdQYWdlIDwgMCkgew0KKyAgICAgICAgICAgIGlOZXdQYWdlID0gaVBhZ2VDb3VudCAtIDE7DQorICAgICAgICB9DQorICAgICAgICBpZiAoaU5ld1BhZ2UgPT0gaUN1clBhZ2UpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcFBhZ2VEaWN0ID0gbV9wRG9jdW1lbnQtPkdldFBhZ2UoaU5ld1BhZ2UpOw0KKyAgICAgICAgaWYgKHBQYWdlRGljdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDUERGX0FycmF5KiBwQW5ub3RzID0gcFBhZ2VEaWN0LT5HZXRBcnJheSgiQW5ub3RzIik7DQorICAgICAgICBpZiAocEFubm90cyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCBkd0NvdW50ID0gcEFubm90cy0+R2V0Q291bnQoKTsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBkd0NvdW50OyBpICsrKSB7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBBbm5vdERpY3QgPSBwQW5ub3RzLT5HZXRFbGVtZW50VmFsdWUoaSk7DQorICAgICAgICAgICAgaWYgKHBBbm5vdERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2wgPSBOVUxMOw0KKyAgICAgICAgICAgIGlmIChtX0NvbnRyb2xNYXAuTG9va3VwKHBBbm5vdERpY3QsICh2b2lkKiYpcENvbnRyb2wpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBpTmV3UGFnZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gd2hpbGUgKFRSVUUpOw0KKyAgICByZXR1cm4gLTE7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX2Zvcm1jb250cm9sLmNwcCBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX2Zvcm1jb250cm9sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTJiODdlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmRvYy9kb2NfZm9ybWNvbnRyb2wuY3BwCkBAIC0wLDAgKzEsNDYxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcGRmZG9jL2ZwZGZfZG9jLmgiDQorQ1BERl9Gb3JtQ29udHJvbDo6Q1BERl9Gb3JtQ29udHJvbChDUERGX0Zvcm1GaWVsZCogcEZpZWxkLCBDUERGX0RpY3Rpb25hcnkqIHBXaWRnZXREaWN0KQ0KK3sNCisgICAgbV9wRmllbGQgPSBwRmllbGQ7DQorICAgIG1fcFdpZGdldERpY3QgPSBwV2lkZ2V0RGljdDsNCisgICAgbV9wRm9ybSA9IG1fcEZpZWxkLT5tX3BGb3JtOw0KK30NCitDRlhfRmxvYXRSZWN0IENQREZfRm9ybUNvbnRyb2w6OkdldFJlY3QoKQ0KK3sNCisgICAgcmV0dXJuIG1fcFdpZGdldERpY3QtPkdldFJlY3QoIlJlY3QiKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ1BERl9Gb3JtQ29udHJvbDo6R2V0T25TdGF0ZU5hbWUoKQ0KK3sNCisgICAgQVNTRVJUKEdldFR5cGUoKSA9PSBDUERGX0Zvcm1GaWVsZDo6Q2hlY2tCb3ggfHwgR2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpSYWRpb0J1dHRvbik7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzT247DQorICAgIENQREZfRGljdGlvbmFyeSogcEFQID0gbV9wV2lkZ2V0RGljdC0+R2V0RGljdCgiQVAiKTsNCisgICAgaWYgKHBBUCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gY3NPbjsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBOID0gcEFQLT5HZXREaWN0KCJOIik7DQorICAgIGlmIChwTiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gY3NPbjsNCisgICAgfQ0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBwTi0+R2V0U3RhcnRQb3MoKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgcE4tPkdldE5leHRFbGVtZW50KHBvcywgY3NPbik7DQorICAgICAgICBpZiAoY3NPbiAhPSAiT2ZmIikgew0KKyAgICAgICAgICAgIHJldHVybiBjc09uOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KK30NCit2b2lkIENQREZfRm9ybUNvbnRyb2w6OlNldE9uU3RhdGVOYW1lKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBjc09uKQ0KK3sNCisgICAgQVNTRVJUKEdldFR5cGUoKSA9PSBDUERGX0Zvcm1GaWVsZDo6Q2hlY2tCb3ggfHwgR2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpSYWRpb0J1dHRvbik7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzVmFsdWUgPSBjc09uOw0KKyAgICBpZiAoY3NWYWx1ZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIGNzVmFsdWUgPSAiWWVzIjsNCisgICAgfQ0KKyAgICBpZiAoY3NWYWx1ZSA9PSAiT2ZmIikgew0KKyAgICAgICAgY3NWYWx1ZSA9ICJZZXMiOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGNzQVMgPSBtX3BXaWRnZXREaWN0LT5HZXRTdHJpbmcoIkFTIiwgIk9mZiIpOw0KKyAgICBpZiAoY3NBUyAhPSAiT2ZmIikgew0KKyAgICAgICAgbV9wV2lkZ2V0RGljdC0+U2V0QXROYW1lKCJBUyIsIGNzVmFsdWUpOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcEFQID0gbV9wV2lkZ2V0RGljdC0+R2V0RGljdCgiQVAiKTsNCisgICAgaWYgKHBBUCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfUE9TSVRJT04gcG9zMSA9IHBBUC0+R2V0U3RhcnRQb3MoKTsNCisgICAgd2hpbGUgKHBvczEpIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGNzS2V5MTsNCisgICAgICAgIENQREZfT2JqZWN0KiBwT2JqMSA9IHBBUC0+R2V0TmV4dEVsZW1lbnQocG9zMSwgY3NLZXkxKTsNCisgICAgICAgIGlmIChwT2JqMSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDUERGX09iamVjdCogcE9iakRpcmVjdDEgPSBwT2JqMS0+R2V0RGlyZWN0KCk7DQorICAgICAgICBpZiAocE9iakRpcmVjdDEtPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwU3ViRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKXBPYmpEaXJlY3QxOw0KKyAgICAgICAgRlhfUE9TSVRJT04gcG9zMiA9IHBTdWJEaWN0LT5HZXRTdGFydFBvcygpOw0KKyAgICAgICAgd2hpbGUgKHBvczIpIHsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc0tleTI7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBPYmoyID0gcFN1YkRpY3QtPkdldE5leHRFbGVtZW50KHBvczIsIGNzS2V5Mik7DQorICAgICAgICAgICAgaWYgKHBPYmoyID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChjc0tleTIgIT0gIk9mZiIpIHsNCisgICAgICAgICAgICAgICAgcFN1YkRpY3QtPlJlcGxhY2VLZXkoY3NLZXkyLCBjc1ZhbHVlKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfRm9ybUNvbnRyb2w6OkdldENoZWNrZWRBUFN0YXRlKCkNCit7DQorICAgIEFTU0VSVChHZXRUeXBlKCkgPT0gQ1BERl9Gb3JtRmllbGQ6OkNoZWNrQm94IHx8IEdldFR5cGUoKSA9PSBDUERGX0Zvcm1GaWVsZDo6UmFkaW9CdXR0b24pOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc09uID0gR2V0T25TdGF0ZU5hbWUoKTsNCisgICAgaWYgKEdldFR5cGUoKSA9PSBDUERGX0Zvcm1GaWVsZDo6UmFkaW9CdXR0b24gfHwgR2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpDaGVja0JveCkgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBPcHQgPSBGUERGX0dldEZpZWxkQXR0cihtX3BGaWVsZC0+bV9wRGljdCwgIk9wdCIpOw0KKyAgICAgICAgaWYgKHBPcHQgIT0gTlVMTCAmJiBwT3B0LT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICAgICAgaW50IGlJbmRleCA9IG1fcEZpZWxkLT5HZXRDb250cm9sSW5kZXgodGhpcyk7DQorICAgICAgICAgICAgY3NPbi5Gb3JtYXQoIiVkIiwgaUluZGV4KTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoY3NPbi5Jc0VtcHR5KCkpIHsNCisgICAgICAgIGNzT24gPSAiWWVzIjsNCisgICAgfQ0KKyAgICByZXR1cm4gY3NPbjsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9Gb3JtQ29udHJvbDo6R2V0RXhwb3J0VmFsdWUoKQ0KK3sNCisgICAgQVNTRVJUKEdldFR5cGUoKSA9PSBDUERGX0Zvcm1GaWVsZDo6Q2hlY2tCb3ggfHwgR2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpSYWRpb0J1dHRvbik7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzT24gPSBHZXRPblN0YXRlTmFtZSgpOw0KKyAgICBpZiAoR2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpSYWRpb0J1dHRvbiB8fCBHZXRUeXBlKCkgPT0gQ1BERl9Gb3JtRmllbGQ6OkNoZWNrQm94KSB7DQorICAgICAgICBDUERGX09iamVjdCogcE9wdCA9IEZQREZfR2V0RmllbGRBdHRyKG1fcEZpZWxkLT5tX3BEaWN0LCAiT3B0Iik7DQorICAgICAgICBpZiAocE9wdCAhPSBOVUxMICYmIHBPcHQtPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICBpbnQgaUluZGV4ID0gbV9wRmllbGQtPkdldENvbnRyb2xJbmRleCh0aGlzKTsNCisgICAgICAgICAgICBjc09uID0gKChDUERGX0FycmF5KilwT3B0KS0+R2V0U3RyaW5nKGlJbmRleCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGNzT24uSXNFbXB0eSgpKSB7DQorICAgICAgICBjc09uID0gIlllcyI7DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgY3NXT24gPSBQREZfRGVjb2RlVGV4dChjc09uKTsNCisgICAgcmV0dXJuIGNzV09uOw0KK30NCitGWF9CT09MIENQREZfRm9ybUNvbnRyb2w6OklzQ2hlY2tlZCgpDQorew0KKyAgICBBU1NFUlQoR2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpDaGVja0JveCB8fCBHZXRUeXBlKCkgPT0gQ1BERl9Gb3JtRmllbGQ6OlJhZGlvQnV0dG9uKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NPbiA9IEdldE9uU3RhdGVOYW1lKCk7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzQVMgPSBtX3BXaWRnZXREaWN0LT5HZXRTdHJpbmcoIkFTIik7DQorICAgIHJldHVybiBjc0FTID09IGNzT247DQorfQ0KK0ZYX0JPT0wgQ1BERl9Gb3JtQ29udHJvbDo6SXNEZWZhdWx0Q2hlY2tlZCgpDQorew0KKyAgICBBU1NFUlQoR2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpDaGVja0JveCB8fCBHZXRUeXBlKCkgPT0gQ1BERl9Gb3JtRmllbGQ6OlJhZGlvQnV0dG9uKTsNCisgICAgQ1BERl9PYmplY3QqIHBEViA9IEZQREZfR2V0RmllbGRBdHRyKG1fcEZpZWxkLT5tX3BEaWN0LCAiRFYiKTsNCisgICAgaWYgKHBEViA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NEViA9IHBEVi0+R2V0U3RyaW5nKCk7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzT24gPSBHZXRPblN0YXRlTmFtZSgpOw0KKyAgICByZXR1cm4gKGNzRFYgPT0gY3NPbik7DQorfQ0KK3ZvaWQgQ1BERl9Gb3JtQ29udHJvbDo6Q2hlY2tDb250cm9sKEZYX0JPT0wgYkNoZWNrZWQpDQorew0KKyAgICBBU1NFUlQoR2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpDaGVja0JveCB8fCBHZXRUeXBlKCkgPT0gQ1BERl9Gb3JtRmllbGQ6OlJhZGlvQnV0dG9uKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NPbiA9IEdldE9uU3RhdGVOYW1lKCk7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzT2xkQVMgPSBtX3BXaWRnZXREaWN0LT5HZXRTdHJpbmcoIkFTIiwgIk9mZiIpOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc0FTID0gIk9mZiI7DQorICAgIGlmIChiQ2hlY2tlZCkgew0KKyAgICAgICAgY3NBUyA9IGNzT247DQorICAgIH0NCisgICAgaWYgKGNzT2xkQVMgPT0gY3NBUykgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcFdpZGdldERpY3QtPlNldEF0TmFtZSgiQVMiLCBjc0FTKTsNCisgICAgbV9wRm9ybS0+bV9iVXBkYXRlZCA9IFRSVUU7DQorfQ0KK0NQREZfU3RyZWFtKiBGUERGRE9DX0dldEFubm90QVAoQ1BERl9EaWN0aW9uYXJ5KiBwQW5ub3REaWN0LCBDUERGX0Fubm90OjpBcHBlYXJhbmNlTW9kZSBtb2RlKTsNCit2b2lkIENQREZfRm9ybUNvbnRyb2w6OkRyYXdDb250cm9sKENGWF9SZW5kZXJEZXZpY2UqIHBEZXZpY2UsIENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIENQREZfUGFnZSogcFBhZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0Fubm90OjpBcHBlYXJhbmNlTW9kZSBtb2RlLCBjb25zdCBDUERGX1JlbmRlck9wdGlvbnMqIHBPcHRpb25zKQ0KK3sNCisgICAgaWYgKG1fcFdpZGdldERpY3QtPkdldEludGVnZXIoIkYiKSAmIEFOTk9URkxBR19ISURERU4pIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX1N0cmVhbSogcFN0cmVhbSA9IEZQREZET0NfR2V0QW5ub3RBUChtX3BXaWRnZXREaWN0LCBtb2RlKTsNCisgICAgaWYgKHBTdHJlYW0gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9GbG9hdFJlY3QgZm9ybV9iYm94ID0gcFN0cmVhbS0+R2V0RGljdCgpLT5HZXRSZWN0KCJCQm94Iik7DQorICAgIENGWF9BZmZpbmVNYXRyaXggZm9ybV9tYXRyaXggPSBwU3RyZWFtLT5HZXREaWN0KCktPkdldE1hdHJpeCgiTWF0cml4Iik7DQorICAgIGZvcm1fbWF0cml4LlRyYW5zZm9ybVJlY3QoZm9ybV9iYm94KTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCBhcmVjdCA9IG1fcFdpZGdldERpY3QtPkdldFJlY3QoIlJlY3QiKTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7DQorICAgIG1hdHJpeC5NYXRjaFJlY3QoYXJlY3QsIGZvcm1fYmJveCk7DQorICAgIG1hdHJpeC5Db25jYXQoKnBNYXRyaXgpOw0KKyAgICBDUERGX0Zvcm0gZm9ybShtX3BGaWVsZC0+bV9wRm9ybS0+bV9wRG9jdW1lbnQsIG1fcEZpZWxkLT5tX3BGb3JtLT5tX3BGb3JtRGljdC0+R2V0RGljdCgiRFIiKSwgcFN0cmVhbSk7DQorICAgIGZvcm0uUGFyc2VDb250ZW50KE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOw0KKyAgICBDUERGX1JlbmRlckNvbnRleHQgY29udGV4dDsNCisgICAgY29udGV4dC5DcmVhdGUocFBhZ2UpOw0KKyAgICBjb250ZXh0LkRyYXdPYmplY3RMaXN0KHBEZXZpY2UsICZmb3JtLCAmbWF0cml4LCBwT3B0aW9ucyk7DQorfQ0KK2NvbnN0IEZYX0NIQVIqIGdfc0hpZ2hsaWdodGluZ01vZGVbXSA9IHsiTiIsICJJIiwgIk8iLCAiUCIsICJUIiwgIiJ9Ow0KK0NQREZfRm9ybUNvbnRyb2w6OkhpZ2hsaWdodGluZ01vZGUgQ1BERl9Gb3JtQ29udHJvbDo6R2V0SGlnaGxpZ2h0aW5nTW9kZSgpDQorew0KKyAgICBpZiAobV9wV2lkZ2V0RGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gSW52ZXJ0Ow0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGNzSCA9IG1fcFdpZGdldERpY3QtPkdldFN0cmluZygiSCIsICJJIik7DQorICAgIGludCBpID0gMDsNCisgICAgd2hpbGUgKGdfc0hpZ2hsaWdodGluZ01vZGVbaV1bMF0gIT0gJ1wwJykgew0KKyAgICAgICAgaWYgKGNzSC5FcXVhbChnX3NIaWdobGlnaHRpbmdNb2RlW2ldKSkgew0KKyAgICAgICAgICAgIHJldHVybiAoSGlnaGxpZ2h0aW5nTW9kZSlpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaSArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gSW52ZXJ0Ow0KK30NCitDUERGX0FwU2V0dGluZ3MgQ1BERl9Gb3JtQ29udHJvbDo6R2V0TUsoRlhfQk9PTCBiQ3JlYXRlKQ0KK3sNCisgICAgaWYgKCFtX3BXaWRnZXREaWN0KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0FwU2V0dGluZ3MgbWsgPSBtX3BXaWRnZXREaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJNSyIpKTsNCisgICAgaWYgKCFtayAmJiBiQ3JlYXRlKSB7DQorICAgICAgICBtayA9IENQREZfRGljdGlvbmFyeTo6Q3JlYXRlKCk7DQorICAgICAgICBpZiAobWsgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wV2lkZ2V0RGljdC0+U2V0QXQoRlhfQlNUUkMoIk1LIiksIG1rKTsNCisgICAgfQ0KKyAgICByZXR1cm4gbWs7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Gb3JtQ29udHJvbDo6SGFzTUtFbnRyeShDRlhfQnl0ZVN0cmluZyBjc0VudHJ5KQ0KK3sNCisgICAgQ1BERl9BcFNldHRpbmdzIG1rID0gR2V0TUsoRkFMU0UpOw0KKyAgICByZXR1cm4gbWsuSGFzTUtFbnRyeShjc0VudHJ5KTsNCit9DQoraW50IENQREZfRm9ybUNvbnRyb2w6OkdldFJvdGF0aW9uKCkNCit7DQorICAgIENQREZfQXBTZXR0aW5ncyBtayA9IEdldE1LKEZBTFNFKTsNCisgICAgcmV0dXJuIG1rLkdldFJvdGF0aW9uKCk7DQorfQ0KK0ZYX0FSR0IgQ1BERl9Gb3JtQ29udHJvbDo6R2V0Q29sb3IoaW50JiBpQ29sb3JUeXBlLCBDRlhfQnl0ZVN0cmluZyBjc0VudHJ5KQ0KK3sNCisgICAgQ1BERl9BcFNldHRpbmdzIG1rID0gR2V0TUsoRkFMU0UpOw0KKyAgICByZXR1cm4gbWsuR2V0Q29sb3IoaUNvbG9yVHlwZSwgY3NFbnRyeSk7DQorfQ0KK0ZYX0ZMT0FUIENQREZfRm9ybUNvbnRyb2w6OkdldE9yaWdpbmFsQ29sb3IoaW50IGluZGV4LCBDRlhfQnl0ZVN0cmluZyBjc0VudHJ5KQ0KK3sNCisgICAgQ1BERl9BcFNldHRpbmdzIG1rID0gR2V0TUsoRkFMU0UpOw0KKyAgICByZXR1cm4gbWsuR2V0T3JpZ2luYWxDb2xvcihpbmRleCwgY3NFbnRyeSk7DQorfQ0KK3ZvaWQgQ1BERl9Gb3JtQ29udHJvbDo6R2V0T3JpZ2luYWxDb2xvcihpbnQmIGlDb2xvclR5cGUsIEZYX0ZMT0FUIGZjWzRdLCBDRlhfQnl0ZVN0cmluZyBjc0VudHJ5KQ0KK3sNCisgICAgQ1BERl9BcFNldHRpbmdzIG1rID0gR2V0TUsoRkFMU0UpOw0KKyAgICBtay5HZXRPcmlnaW5hbENvbG9yKGlDb2xvclR5cGUsIGZjLCBjc0VudHJ5KTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9Gb3JtQ29udHJvbDo6R2V0Q2FwdGlvbihDRlhfQnl0ZVN0cmluZyBjc0VudHJ5KQ0KK3sNCisgICAgQ1BERl9BcFNldHRpbmdzIG1rID0gR2V0TUsoRkFMU0UpOw0KKyAgICByZXR1cm4gbWsuR2V0Q2FwdGlvbihjc0VudHJ5KTsNCit9DQorQ1BERl9TdHJlYW0qIENQREZfRm9ybUNvbnRyb2w6OkdldEljb24oQ0ZYX0J5dGVTdHJpbmcgY3NFbnRyeSkNCit7DQorICAgIENQREZfQXBTZXR0aW5ncyBtayA9IEdldE1LKEZBTFNFKTsNCisgICAgcmV0dXJuIG1rLkdldEljb24oY3NFbnRyeSk7DQorfQ0KK0NQREZfSWNvbkZpdCBDUERGX0Zvcm1Db250cm9sOjpHZXRJY29uRml0KCkNCit7DQorICAgIENQREZfQXBTZXR0aW5ncyBtayA9IEdldE1LKEZBTFNFKTsNCisgICAgcmV0dXJuIG1rLkdldEljb25GaXQoKTsNCit9DQoraW50IENQREZfRm9ybUNvbnRyb2w6OkdldFRleHRQb3NpdGlvbigpDQorew0KKyAgICBDUERGX0FwU2V0dGluZ3MgbWsgPSBHZXRNSyhGQUxTRSk7DQorICAgIHJldHVybiBtay5HZXRUZXh0UG9zaXRpb24oKTsNCit9DQorQ1BERl9BY3Rpb24gQ1BERl9Gb3JtQ29udHJvbDo6R2V0QWN0aW9uKCkNCit7DQorICAgIGlmIChtX3BXaWRnZXREaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BXaWRnZXREaWN0LT5LZXlFeGlzdCgiQSIpKSB7DQorICAgICAgICByZXR1cm4gbV9wV2lkZ2V0RGljdC0+R2V0RGljdCgiQSIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBGUERGX0dldEZpZWxkQXR0cihtX3BGaWVsZC0+bV9wRGljdCwgIkEiKTsNCisgICAgICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBwT2JqLT5HZXREaWN0KCk7DQorICAgIH0NCit9DQorQ1BERl9BQWN0aW9uIENQREZfRm9ybUNvbnRyb2w6OkdldEFkZGl0aW9uYWxBY3Rpb24oKQ0KK3sNCisgICAgaWYgKG1fcFdpZGdldERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKG1fcFdpZGdldERpY3QtPktleUV4aXN0KCJBQSIpKSB7DQorICAgICAgICByZXR1cm4gbV9wV2lkZ2V0RGljdC0+R2V0RGljdCgiQUEiKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiBtX3BGaWVsZC0+R2V0QWRkaXRpb25hbEFjdGlvbigpOw0KKyAgICB9DQorfQ0KK0NQREZfRGVmYXVsdEFwcGVhcmFuY2UgQ1BERl9Gb3JtQ29udHJvbDo6R2V0RGVmYXVsdEFwcGVhcmFuY2UoKQ0KK3sNCisgICAgaWYgKG1fcFdpZGdldERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgaWYgKG1fcFdpZGdldERpY3QtPktleUV4aXN0KCJEQSIpKSB7DQorICAgICAgICByZXR1cm4gbV9wV2lkZ2V0RGljdC0+R2V0U3RyaW5nKCJEQSIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBGUERGX0dldEZpZWxkQXR0cihtX3BGaWVsZC0+bV9wRGljdCwgIkRBIik7DQorICAgICAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIG1fcEZpZWxkLT5tX3BGb3JtLT5HZXREZWZhdWx0QXBwZWFyYW5jZSgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHBPYmotPkdldFN0cmluZygpOw0KKyAgICB9DQorfQ0KK0NQREZfRm9udCogQ1BERl9Gb3JtQ29udHJvbDo6R2V0RGVmYXVsdENvbnRyb2xGb250KCkNCit7DQorICAgIENQREZfRGVmYXVsdEFwcGVhcmFuY2UgY0RBID0gR2V0RGVmYXVsdEFwcGVhcmFuY2UoKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NGb250TmFtZVRhZzsNCisgICAgRlhfRkxPQVQgZkZvbnRTaXplOw0KKyAgICBjREEuR2V0Rm9udChjc0ZvbnROYW1lVGFnLCBmRm9udFNpemUpOw0KKyAgICBpZiAoY3NGb250TmFtZVRhZy5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gRlBERl9HZXRGaWVsZEF0dHIobV9wV2lkZ2V0RGljdCwgIkRSIik7DQorICAgIGlmIChwT2JqICE9IE5VTEwgJiYgcE9iai0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250cyA9ICgoQ1BERl9EaWN0aW9uYXJ5KilwT2JqKS0+R2V0RGljdCgiRm9udCIpOw0KKyAgICAgICAgaWYgKHBGb250cyAhPSBOVUxMKSB7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICpwRWxlbWVudCA9IHBGb250cy0+R2V0RGljdChjc0ZvbnROYW1lVGFnKTsNCisgICAgICAgICAgICBDUERGX0ZvbnQgKnBGb250ID0gbV9wRmllbGQtPm1fcEZvcm0tPm1fcERvY3VtZW50LT5Mb2FkRm9udChwRWxlbWVudCk7DQorICAgICAgICAgICAgaWYgKHBGb250ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBGb250Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDUERGX0ZvbnQgKnBGb250ID0gbV9wRmllbGQtPm1fcEZvcm0tPkdldEZvcm1Gb250KGNzRm9udE5hbWVUYWcpOw0KKyAgICBpZiAocEZvbnQgIT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIHBGb250Ow0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSAqcFBhZ2VEaWN0ID0gbV9wV2lkZ2V0RGljdC0+R2V0RGljdCgiUCIpOw0KKyAgICBwT2JqID0gRlBERl9HZXRGaWVsZEF0dHIocFBhZ2VEaWN0LCAiUmVzb3VyY2VzIik7DQorICAgIGlmIChwT2JqICE9IE5VTEwgJiYgcE9iai0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250cyA9ICgoQ1BERl9EaWN0aW9uYXJ5KilwT2JqKS0+R2V0RGljdCgiRm9udCIpOw0KKyAgICAgICAgaWYgKHBGb250cyAhPSBOVUxMKSB7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICpwRWxlbWVudCA9IHBGb250cy0+R2V0RGljdChjc0ZvbnROYW1lVGFnKTsNCisgICAgICAgICAgICBDUERGX0ZvbnQgKnBGb250ID0gbV9wRmllbGQtPm1fcEZvcm0tPm1fcERvY3VtZW50LT5Mb2FkRm9udChwRWxlbWVudCk7DQorICAgICAgICAgICAgaWYgKHBGb250ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBGb250Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQoraW50IENQREZfRm9ybUNvbnRyb2w6OkdldENvbnRyb2xBbGlnbm1lbnQoKQ0KK3sNCisgICAgaWYgKG1fcFdpZGdldERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKG1fcFdpZGdldERpY3QtPktleUV4aXN0KCJRIikpIHsNCisgICAgICAgIHJldHVybiBtX3BXaWRnZXREaWN0LT5HZXRJbnRlZ2VyKCJRIiwgMCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IEZQREZfR2V0RmllbGRBdHRyKG1fcEZpZWxkLT5tX3BEaWN0LCAiUSIpOw0KKyAgICAgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBtX3BGaWVsZC0+bV9wRm9ybS0+R2V0Rm9ybUFsaWdubWVudCgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHBPYmotPkdldEludGVnZXIoKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENQREZfQXBTZXR0aW5nczo6SGFzTUtFbnRyeShGWF9CU1RSIGNzRW50cnkpDQorew0KKyAgICBpZiAobV9wRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcERpY3QtPktleUV4aXN0KGNzRW50cnkpOw0KK30NCitpbnQgQ1BERl9BcFNldHRpbmdzOjpHZXRSb3RhdGlvbigpDQorew0KKyAgICBpZiAobV9wRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiUiIpKTsNCit9DQorRlhfQVJHQiBDUERGX0FwU2V0dGluZ3M6OkdldENvbG9yKGludCYgaUNvbG9yVHlwZSwgRlhfQlNUUiBjc0VudHJ5KQ0KK3sNCisgICAgaUNvbG9yVHlwZSA9IENPTE9SVFlQRV9UUkFOU1BBUkVOVDsNCisgICAgaWYgKG1fcERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfQVJHQiBjb2xvciA9IDA7DQorICAgIENQREZfQXJyYXkqIHBFbnRyeSA9IG1fcERpY3QtPkdldEFycmF5KGNzRW50cnkpOw0KKyAgICBpZiAocEVudHJ5ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBjb2xvcjsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBkd0NvdW50ID0gcEVudHJ5LT5HZXRDb3VudCgpOw0KKyAgICBpZiAoZHdDb3VudCA9PSAxKSB7DQorICAgICAgICBpQ29sb3JUeXBlID0gQ09MT1JUWVBFX0dSQVk7DQorICAgICAgICBGWF9GTE9BVCBnID0gcEVudHJ5LT5HZXROdW1iZXIoMCkgKiAyNTU7DQorICAgICAgICBjb2xvciA9IEFyZ2JFbmNvZGUoMjU1LCAoaW50KWcsIChpbnQpZywgKGludClnKTsNCisgICAgfSBlbHNlIGlmIChkd0NvdW50ID09IDMpIHsNCisgICAgICAgIGlDb2xvclR5cGUgPSBDT0xPUlRZUEVfUkdCOw0KKyAgICAgICAgRlhfRkxPQVQgciA9IHBFbnRyeS0+R2V0TnVtYmVyKDApICogMjU1Ow0KKyAgICAgICAgRlhfRkxPQVQgZyA9IHBFbnRyeS0+R2V0TnVtYmVyKDEpICogMjU1Ow0KKyAgICAgICAgRlhfRkxPQVQgYiA9IHBFbnRyeS0+R2V0TnVtYmVyKDIpICogMjU1Ow0KKyAgICAgICAgY29sb3IgPSBBcmdiRW5jb2RlKDI1NSwgKGludClyLCAoaW50KWcsIChpbnQpYik7DQorICAgIH0gZWxzZSBpZiAoZHdDb3VudCA9PSA0KSB7DQorICAgICAgICBpQ29sb3JUeXBlID0gQ09MT1JUWVBFX0NNWUs7DQorICAgICAgICBGWF9GTE9BVCBjID0gcEVudHJ5LT5HZXROdW1iZXIoMCk7DQorICAgICAgICBGWF9GTE9BVCBtID0gcEVudHJ5LT5HZXROdW1iZXIoMSk7DQorICAgICAgICBGWF9GTE9BVCB5ID0gcEVudHJ5LT5HZXROdW1iZXIoMik7DQorICAgICAgICBGWF9GTE9BVCBrID0gcEVudHJ5LT5HZXROdW1iZXIoMyk7DQorICAgICAgICBGWF9GTE9BVCByID0gMS4wZiAtIEZYX01JTigxLjBmLCBjICsgayk7DQorICAgICAgICBGWF9GTE9BVCBnID0gMS4wZiAtIEZYX01JTigxLjBmLCBtICsgayk7DQorICAgICAgICBGWF9GTE9BVCBiID0gMS4wZiAtIEZYX01JTigxLjBmLCB5ICsgayk7DQorICAgICAgICBjb2xvciA9IEFyZ2JFbmNvZGUoMjU1LCAoaW50KShyICogMjU1KSwgKGludCkoZyAqIDI1NSksIChpbnQpKGIgKiAyNTUpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gY29sb3I7DQorfQ0KK0ZYX0ZMT0FUIENQREZfQXBTZXR0aW5nczo6R2V0T3JpZ2luYWxDb2xvcihpbnQgaW5kZXgsIEZYX0JTVFIgY3NFbnRyeSkNCit7DQorICAgIGlmIChtX3BEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBFbnRyeSA9IG1fcERpY3QtPkdldEFycmF5KGNzRW50cnkpOw0KKyAgICBpZiAocEVudHJ5ICE9IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBwRW50cnktPkdldE51bWJlcihpbmRleCk7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK3ZvaWQgQ1BERl9BcFNldHRpbmdzOjpHZXRPcmlnaW5hbENvbG9yKGludCYgaUNvbG9yVHlwZSwgRlhfRkxPQVQgZmNbNF0sIEZYX0JTVFIgY3NFbnRyeSkNCit7DQorICAgIGlDb2xvclR5cGUgPSBDT0xPUlRZUEVfVFJBTlNQQVJFTlQ7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgZmNbaV0gPSAwOw0KKyAgICB9DQorICAgIGlmIChtX3BEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwRW50cnkgPSBtX3BEaWN0LT5HZXRBcnJheShjc0VudHJ5KTsNCisgICAgaWYgKHBFbnRyeSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfRFdPUkQgZHdDb3VudCA9IHBFbnRyeS0+R2V0Q291bnQoKTsNCisgICAgaWYgKGR3Q291bnQgPT0gMSkgew0KKyAgICAgICAgaUNvbG9yVHlwZSA9IENPTE9SVFlQRV9HUkFZOw0KKyAgICAgICAgZmNbMF0gPSBwRW50cnktPkdldE51bWJlcigwKTsNCisgICAgfSBlbHNlIGlmIChkd0NvdW50ID09IDMpIHsNCisgICAgICAgIGlDb2xvclR5cGUgPSBDT0xPUlRZUEVfUkdCOw0KKyAgICAgICAgZmNbMF0gPSBwRW50cnktPkdldE51bWJlcigwKTsNCisgICAgICAgIGZjWzFdID0gcEVudHJ5LT5HZXROdW1iZXIoMSk7DQorICAgICAgICBmY1syXSA9IHBFbnRyeS0+R2V0TnVtYmVyKDIpOw0KKyAgICB9IGVsc2UgaWYgKGR3Q291bnQgPT0gNCkgew0KKyAgICAgICAgaUNvbG9yVHlwZSA9IENPTE9SVFlQRV9DTVlLOw0KKyAgICAgICAgZmNbMF0gPSBwRW50cnktPkdldE51bWJlcigwKTsNCisgICAgICAgIGZjWzFdID0gcEVudHJ5LT5HZXROdW1iZXIoMSk7DQorICAgICAgICBmY1syXSA9IHBFbnRyeS0+R2V0TnVtYmVyKDIpOw0KKyAgICAgICAgZmNbM10gPSBwRW50cnktPkdldE51bWJlcigzKTsNCisgICAgfQ0KK30NCitDRlhfV2lkZVN0cmluZyBDUERGX0FwU2V0dGluZ3M6OkdldENhcHRpb24oRlhfQlNUUiBjc0VudHJ5KQ0KK3sNCisgICAgQ0ZYX1dpZGVTdHJpbmcgY3NDYXB0aW9uOw0KKyAgICBpZiAobV9wRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gY3NDYXB0aW9uOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BEaWN0LT5HZXRVbmljb2RlVGV4dChjc0VudHJ5KTsNCit9DQorQ1BERl9TdHJlYW0qIENQREZfQXBTZXR0aW5nczo6R2V0SWNvbihGWF9CU1RSIGNzRW50cnkpDQorew0KKyAgICBpZiAobV9wRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGljdC0+R2V0U3RyZWFtKGNzRW50cnkpOw0KK30NCitDUERGX0ljb25GaXQgQ1BERl9BcFNldHRpbmdzOjpHZXRJY29uRml0KCkNCit7DQorICAgIGlmIChtX3BEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BEaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJJRiIpKTsNCit9DQoraW50IENQREZfQXBTZXR0aW5nczo6R2V0VGV4dFBvc2l0aW9uKCkNCit7DQorICAgIGlmIChtX3BEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBURVhUUE9TX0NBUFRJT047DQorICAgIH0NCisgICAgcmV0dXJuIG1fcERpY3QtPkdldEludGVnZXIoRlhfQlNUUkMoIlRQIiksIFRFWFRQT1NfQ0FQVElPTik7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX2Zvcm1maWVsZC5jcHAgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19mb3JtZmllbGQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NGE2YjEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19mb3JtZmllbGQuY3BwCkBAIC0wLDAgKzEsMTA5NSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmRvYy9mcGRmX2RvYy5oIg0KK0NGWF9XaWRlU3RyaW5nCQlHZXRGdWxsTmFtZShDUERGX0RpY3Rpb25hcnkqIHBGaWVsZERpY3QpOw0KK3ZvaWQJCQkJU2F2ZUNoZWNrZWRGaWVsZFN0YXR1cyhDUERGX0Zvcm1GaWVsZCogcEZpZWxkLCBDRlhfQnl0ZUFycmF5JiBzdGF0dXNBcnJheSk7DQorRlhfQk9PTCBQREZfRm9ybUZpZWxkX0lzVW5pc29uKENQREZfRm9ybUZpZWxkICpwRmllbGQpDQorew0KKyAgICBGWF9CT09MIGJVbmlzb24gPSBGQUxTRTsNCisgICAgaWYgKHBGaWVsZC0+R2V0VHlwZSgpID09IENQREZfRm9ybUZpZWxkOjpDaGVja0JveCkgew0KKyAgICAgICAgYlVuaXNvbiA9IFRSVUU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWF9EV09SRCBkd0ZsYWdzID0gcEZpZWxkLT5HZXRGaWVsZEZsYWdzKCk7DQorICAgICAgICBiVW5pc29uID0gKChkd0ZsYWdzICYgMHgyMDAwMDAwKSAhPSAwKTsNCisgICAgfQ0KKyAgICByZXR1cm4gYlVuaXNvbjsNCit9DQorQ1BERl9Gb3JtRmllbGQ6OkNQREZfRm9ybUZpZWxkKENQREZfSW50ZXJGb3JtKiBwRm9ybSwgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCkNCit7DQorICAgIG1fcERpY3QgPSBwRGljdDsNCisgICAgbV9UeXBlID0gVW5rbm93bjsNCisgICAgbV9wRm9ybSA9IHBGb3JtOw0KKyAgICBtX3BGb250ID0gTlVMTDsNCisgICAgbV9Gb250U2l6ZSA9IDA7DQorICAgIFN5bmNGaWVsZEZsYWdzKCk7DQorfQ0KK0NQREZfRm9ybUZpZWxkOjp+Q1BERl9Gb3JtRmllbGQoKQ0KK3sNCit9DQordm9pZCBDUERGX0Zvcm1GaWVsZDo6U3luY0ZpZWxkRmxhZ3MoKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgdHlwZV9uYW1lID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIkZUIiktPkdldFN0cmluZygpOw0KKyAgICBGWF9EV09SRCBmbGFncyA9IEZQREZfR2V0RmllbGRBdHRyKG1fcERpY3QsICJGZiIpLT5HZXRJbnRlZ2VyKCk7DQorICAgIG1fRmxhZ3MgPSAwOw0KKyAgICBpZiAoZmxhZ3MgJiAxKSB7DQorICAgICAgICBtX0ZsYWdzIHw9IEZPUk1GSUVMRF9SRUFET05MWTsNCisgICAgfQ0KKyAgICBpZiAoZmxhZ3MgJiAyKSB7DQorICAgICAgICBtX0ZsYWdzIHw9IEZPUk1GSUVMRF9SRVFVSVJFRDsNCisgICAgfQ0KKyAgICBpZiAoZmxhZ3MgJiA0KSB7DQorICAgICAgICBtX0ZsYWdzIHw9IEZPUk1GSUVMRF9OT0VYUE9SVDsNCisgICAgfQ0KKyAgICBpZiAodHlwZV9uYW1lID09ICJCdG4iKSB7DQorICAgICAgICBpZiAoZmxhZ3MgJiAweDgwMDApIHsNCisgICAgICAgICAgICBtX1R5cGUgPSBSYWRpb0J1dHRvbjsNCisgICAgICAgICAgICBpZiAoZmxhZ3MgJiAweDQwMDApIHsNCisgICAgICAgICAgICAgICAgbV9GbGFncyB8PSBGT1JNUkFESU9fTk9UT0dHTEVPRkY7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChmbGFncyAmIDB4MjAwMDAwMCkgew0KKyAgICAgICAgICAgICAgICBtX0ZsYWdzIHw9IEZPUk1SQURJT19VTklTT047DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChmbGFncyAmIDB4MTAwMDApIHsNCisgICAgICAgICAgICBtX1R5cGUgPSBQdXNoQnV0dG9uOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX1R5cGUgPSBDaGVja0JveDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmICh0eXBlX25hbWUgPT0gIlR4Iikgew0KKyAgICAgICAgaWYgKGZsYWdzICYgMHgxMDAwMDApIHsNCisgICAgICAgICAgICBtX1R5cGUgPSBGaWxlOw0KKyAgICAgICAgfSBlbHNlIGlmIChmbGFncyAmIDB4MjAwMDAwMCkgew0KKyAgICAgICAgICAgIG1fVHlwZSA9IFJpY2hUZXh0Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX1R5cGUgPSBUZXh0Ow0KKyAgICAgICAgICAgIGlmIChmbGFncyAmIDB4MTAwMCkgew0KKyAgICAgICAgICAgICAgICBtX0ZsYWdzIHw9IEZPUk1URVhUX01VTFRJTElORTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGZsYWdzICYgMHgyMDAwKSB7DQorICAgICAgICAgICAgICAgIG1fRmxhZ3MgfD0gRk9STVRFWFRfUEFTU1dPUkQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChmbGFncyAmIDB4ODAwMDAwKSB7DQorICAgICAgICAgICAgICAgIG1fRmxhZ3MgfD0gRk9STVRFWFRfTk9TQ1JPTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChmbGFncyAmIDB4MTAwMDAwKSB7DQorICAgICAgICAgICAgICAgIG1fRmxhZ3MgfD0gRk9STVRFWFRfQ09NQjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBMb2FkREEoKTsNCisgICAgfSBlbHNlIGlmICh0eXBlX25hbWUgPT0gIkNoIikgew0KKyAgICAgICAgaWYgKGZsYWdzICYgMHgyMDAwMCkgew0KKyAgICAgICAgICAgIG1fVHlwZSA9IENvbWJvQm94Ow0KKyAgICAgICAgICAgIGlmIChmbGFncyAmIDB4NDAwMDApIHsNCisgICAgICAgICAgICAgICAgbV9GbGFncyB8PSBGT1JNQ09NQk9fRURJVDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fVHlwZSA9IExpc3RCb3g7DQorICAgICAgICAgICAgaWYgKGZsYWdzICYgMHgyMDAwMDApIHsNCisgICAgICAgICAgICAgICAgbV9GbGFncyB8PSBGT1JNTElTVF9NVUxUSVNFTEVDVDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBMb2FkREEoKTsNCisgICAgfSBlbHNlIGlmICh0eXBlX25hbWUgPT0gIlNpZyIpIHsNCisgICAgICAgIG1fVHlwZSA9IFNpZ247DQorICAgIH0NCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9Gb3JtRmllbGQ6OkdldEZ1bGxOYW1lKCkNCit7DQorICAgIHJldHVybiA6OkdldEZ1bGxOYW1lKG1fcERpY3QpOw0KK30NCitGWF9CT09MIENQREZfRm9ybUZpZWxkOjpSZXNldEZpZWxkKEZYX0JPT0wgYk5vdGlmeSkNCit7DQorICAgIHN3aXRjaCAobV9UeXBlKSB7DQorICAgICAgICBjYXNlIENQREZfRm9ybUZpZWxkOjpDaGVja0JveDoNCisgICAgICAgIGNhc2UgQ1BERl9Gb3JtRmllbGQ6OlJhZGlvQnV0dG9uOiB7DQorICAgICAgICAgICAgICAgIENGWF9CeXRlQXJyYXkgc3RhdHVzQXJyYXk7DQorICAgICAgICAgICAgICAgIGlmIChiTm90aWZ5ICYmIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnkgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgU2F2ZUNoZWNrZWRGaWVsZFN0YXR1cyh0aGlzLCBzdGF0dXNBcnJheSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW50IGlDb3VudCA9IENvdW50Q29udHJvbHMoKTsNCisgICAgICAgICAgICAgICAgaWYgKGlDb3VudCkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKFBERl9Gb3JtRmllbGRfSXNVbmlzb24odGhpcykpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgaUNvdW50OyBpKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tDb250cm9sKGksIEdldENvbnRyb2woaSktPklzRGVmYXVsdENoZWNrZWQoKSwgRkFMU0UpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpQ291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2wgPSBHZXRDb250cm9sKGkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJDaGVja2VkID0gcENvbnRyb2wtPklzRGVmYXVsdENoZWNrZWQoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tDb250cm9sKGksIGJDaGVja2VkLCBGQUxTRSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChiTm90aWZ5ICYmIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnkgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QWZ0ZXJDaGVja2VkU3RhdHVzQ2hhbmdlKHRoaXMsIHN0YXR1c0FycmF5KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgQ1BERl9Gb3JtRmllbGQ6OkNvbWJvQm94OiB7DQorICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIGNzVmFsdWU7DQorICAgICAgICAgICAgICAgIENsZWFyU2VsZWN0aW9uKCk7DQorICAgICAgICAgICAgICAgIGludCBpSW5kZXggPSBHZXREZWZhdWx0U2VsZWN0ZWRJdGVtKCk7DQorICAgICAgICAgICAgICAgIGlmIChpSW5kZXggPj0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgY3NWYWx1ZSA9IEdldE9wdGlvbkxhYmVsKGlJbmRleCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgaVJldCA9IG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkJlZm9yZVZhbHVlQ2hhbmdlKHRoaXMsIGNzVmFsdWUpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlSZXQgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIFNldEl0ZW1TZWxlY3Rpb24oaUluZGV4LCBUUlVFKTsNCisgICAgICAgICAgICAgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5BZnRlclZhbHVlQ2hhbmdlKHRoaXMpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBDUERGX0Zvcm1GaWVsZDo6TGlzdEJveDogew0KKyAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBjc1ZhbHVlOw0KKyAgICAgICAgICAgICAgICBDbGVhclNlbGVjdGlvbigpOw0KKyAgICAgICAgICAgICAgICBpbnQgaUluZGV4ID0gR2V0RGVmYXVsdFNlbGVjdGVkSXRlbSgpOw0KKyAgICAgICAgICAgICAgICBpZiAoaUluZGV4ID49IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGNzVmFsdWUgPSBHZXRPcHRpb25MYWJlbChpSW5kZXgpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChiTm90aWZ5ICYmIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnkgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IGlSZXQgPSBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5CZWZvcmVTZWxlY3Rpb25DaGFuZ2UodGhpcywgY3NWYWx1ZSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoaVJldCA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgU2V0SXRlbVNlbGVjdGlvbihpSW5kZXgsIFRSVUUpOw0KKyAgICAgICAgICAgICAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkFmdGVyU2VsZWN0aW9uQ2hhbmdlKHRoaXMpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBDUERGX0Zvcm1GaWVsZDo6VGV4dDoNCisgICAgICAgIGNhc2UgQ1BERl9Gb3JtRmllbGQ6OlJpY2hUZXh0Og0KKyAgICAgICAgY2FzZSBDUERGX0Zvcm1GaWVsZDo6RmlsZToNCisgICAgICAgIGRlZmF1bHQ6IHsNCisgICAgICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBEViA9IEZQREZfR2V0RmllbGRBdHRyKG1fcERpY3QsICJEViIpOw0KKyAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBjc0RWYWx1ZTsNCisgICAgICAgICAgICAgICAgaWYgKHBEViAhPSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBjc0RWYWx1ZSA9IHBEVi0+R2V0VW5pY29kZVRleHQoKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDUERGX09iamVjdCogcFYgPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiViIpOw0KKyAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBjc1ZhbHVlOw0KKyAgICAgICAgICAgICAgICBpZiAocFYgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgY3NWYWx1ZSA9IHBWLT5HZXRVbmljb2RlVGV4dCgpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwUlYgPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiUlYiKTsNCisgICAgICAgICAgICAgICAgaWYgKCFwUlYgJiYgKGNzRFZhbHVlID09IGNzVmFsdWUpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgaVJldCA9IG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkJlZm9yZVZhbHVlQ2hhbmdlKHRoaXMsIGNzRFZhbHVlKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChpUmV0IDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAocERWID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcERpY3QtPlJlbW92ZUF0KCJWIik7DQorICAgICAgICAgICAgICAgICAgICBtX3BEaWN0LT5SZW1vdmVBdCgiUlYiKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIENQREZfT2JqZWN0KiBwQ2xvbmUgPSBwRFYtPkNsb25lKCk7DQorICAgICAgICAgICAgICAgICAgICBpZiAocENsb25lID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBtX3BEaWN0LT5TZXRBdCgiViIsIHBDbG9uZSk7DQorICAgICAgICAgICAgICAgICAgICBpZihwUlYpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBDUERGX09iamVjdCogcENsb25lUiA9IHBEVi0+Q2xvbmUoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BEaWN0LT5TZXRBdCgiUlYiLCBwQ2xvbmVSKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkFmdGVyVmFsdWVDaGFuZ2UodGhpcyk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wRm9ybS0+bV9iVXBkYXRlZCA9IFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitpbnQgQ1BERl9Gb3JtRmllbGQ6OkdldENvbnRyb2xJbmRleChjb25zdCBDUERGX0Zvcm1Db250cm9sKiBwQ29udHJvbCkNCit7DQorICAgIGlmIChwQ29udHJvbCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaW50IGlDb3VudCA9IG1fQ29udHJvbExpc3QuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGlDb3VudDsgaSArKykgew0KKyAgICAgICAgQ1BERl9Gb3JtQ29udHJvbCogcEZpbmQgPSAoQ1BERl9Gb3JtQ29udHJvbCopbV9Db250cm9sTGlzdC5HZXRBdChpKTsNCisgICAgICAgIGlmIChwRmluZCA9PSBwQ29udHJvbCkgew0KKyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAtMTsNCit9DQoraW50IENQREZfRm9ybUZpZWxkOjpHZXRGaWVsZFR5cGUoKQ0KK3sNCisgICAgc3dpdGNoIChtX1R5cGUpIHsNCisgICAgICAgIGNhc2UgUHVzaEJ1dHRvbjoNCisgICAgICAgICAgICByZXR1cm4gRklFTERUWVBFX1BVU0hCVVRUT047DQorICAgICAgICBjYXNlIENoZWNrQm94Og0KKyAgICAgICAgICAgIHJldHVybiBGSUVMRFRZUEVfQ0hFQ0tCT1g7DQorICAgICAgICBjYXNlIFJhZGlvQnV0dG9uOg0KKyAgICAgICAgICAgIHJldHVybiBGSUVMRFRZUEVfUkFESU9CVVRUT047DQorICAgICAgICBjYXNlIENvbWJvQm94Og0KKyAgICAgICAgICAgIHJldHVybiBGSUVMRFRZUEVfQ09NQk9CT1g7DQorICAgICAgICBjYXNlIExpc3RCb3g6DQorICAgICAgICAgICAgcmV0dXJuIEZJRUxEVFlQRV9MSVNUQk9YOw0KKyAgICAgICAgY2FzZSBUZXh0Og0KKyAgICAgICAgY2FzZSBSaWNoVGV4dDoNCisgICAgICAgIGNhc2UgRmlsZToNCisgICAgICAgICAgICByZXR1cm4gRklFTERUWVBFX1RFWFRGSUVMRDsNCisgICAgICAgIGNhc2UgU2lnbjoNCisgICAgICAgICAgICByZXR1cm4gRklFTERUWVBFX1NJR05BVFVSRTsNCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgcmV0dXJuIEZJRUxEVFlQRV9VTktOT1dOOw0KK30NCitDUERGX0FBY3Rpb24gQ1BERl9Gb3JtRmllbGQ6OkdldEFkZGl0aW9uYWxBY3Rpb24oKQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBPYmogPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiQUEiKTsNCisgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBPYmotPkdldERpY3QoKTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9Gb3JtRmllbGQ6OkdldEFsdGVybmF0ZU5hbWUoKQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBPYmogPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiVFUiKTsNCisgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEwiIjsNCisgICAgfQ0KKyAgICByZXR1cm4gcE9iai0+R2V0VW5pY29kZVRleHQoKTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9Gb3JtRmllbGQ6OkdldE1hcHBpbmdOYW1lKCkNCit7DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIlRNIik7DQorICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBMIiI7DQorICAgIH0NCisgICAgcmV0dXJuIHBPYmotPkdldFVuaWNvZGVUZXh0KCk7DQorfQ0KK0ZYX0RXT1JEIENQREZfRm9ybUZpZWxkOjpHZXRGaWVsZEZsYWdzKCkNCit7DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIkZmIik7DQorICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiBwT2JqLT5HZXRJbnRlZ2VyKCk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfRm9ybUZpZWxkOjpHZXREZWZhdWx0U3R5bGUoKQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBPYmogPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiRFMiKTsNCisgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuICIiOw0KKyAgICB9DQorICAgIHJldHVybiBwT2JqLT5HZXRTdHJpbmcoKTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9Gb3JtRmllbGQ6OkdldFJpY2hUZXh0U3RyaW5nKCkNCit7DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIlJWIik7DQorICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBMIiI7DQorICAgIH0NCisgICAgcmV0dXJuIHBPYmotPkdldFVuaWNvZGVUZXh0KCk7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENQREZfRm9ybUZpZWxkOjpHZXRWYWx1ZShGWF9CT09MIGJEZWZhdWx0KQ0KK3sNCisgICAgaWYgKEdldFR5cGUoKSA9PSBDaGVja0JveCB8fCBHZXRUeXBlKCkgPT0gUmFkaW9CdXR0b24pIHsNCisgICAgICAgIHJldHVybiBHZXRDaGVja1ZhbHVlKGJEZWZhdWx0KTsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcFZhbHVlID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgYkRlZmF1bHQgPyAiRFYiIDogIlYiKTsNCisgICAgaWYgKHBWYWx1ZSA9PSBOVUxMKSB7DQorICAgICAgICBpZiAoIWJEZWZhdWx0KSB7DQorICAgICAgICAgICAgaWYgKG1fVHlwZSA9PSBSaWNoVGV4dCkgew0KKyAgICAgICAgICAgICAgICBwVmFsdWUgPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiViIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAocFZhbHVlID09IE5VTEwgJiYgbV9UeXBlICE9IFRleHQpIHsNCisgICAgICAgICAgICAgICAgcFZhbHVlID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIkRWIik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBWYWx1ZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgc3dpdGNoIChwVmFsdWUtPkdldFR5cGUoKSkgew0KKyAgICAgICAgY2FzZSBQREZPQkpfU1RSSU5HOg0KKyAgICAgICAgY2FzZSBQREZPQkpfU1RSRUFNOg0KKyAgICAgICAgICAgIHJldHVybiBwVmFsdWUtPkdldFVuaWNvZGVUZXh0KCk7DQorICAgICAgICBjYXNlIFBERk9CSl9BUlJBWToNCisgICAgICAgICAgICBwVmFsdWUgPSAoKENQREZfQXJyYXkqKXBWYWx1ZSktPkdldEVsZW1lbnRWYWx1ZSgwKTsNCisgICAgICAgICAgICByZXR1cm4gcFZhbHVlLT5HZXRVbmljb2RlVGV4dCgpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIHJldHVybiBDRlhfV2lkZVN0cmluZygpOw0KK30NCitDRlhfV2lkZVN0cmluZyBDUERGX0Zvcm1GaWVsZDo6R2V0VmFsdWUoKQ0KK3sNCisgICAgcmV0dXJuIEdldFZhbHVlKEZBTFNFKTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9Gb3JtRmllbGQ6OkdldERlZmF1bHRWYWx1ZSgpDQorew0KKyAgICByZXR1cm4gR2V0VmFsdWUoVFJVRSk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Gb3JtRmllbGQ6OlNldFZhbHVlKGNvbnN0IENGWF9XaWRlU3RyaW5nJiB2YWx1ZSwgRlhfQk9PTCBiRGVmYXVsdCwgRlhfQk9PTCBiTm90aWZ5KQ0KK3sNCisgICAgc3dpdGNoIChtX1R5cGUpIHsNCisgICAgICAgIGNhc2UgQ2hlY2tCb3g6DQorICAgICAgICBjYXNlIFJhZGlvQnV0dG9uOiB7DQorICAgICAgICAgICAgICAgIFNldENoZWNrVmFsdWUodmFsdWUsIGJEZWZhdWx0LCBiTm90aWZ5KTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGaWxlOg0KKyAgICAgICAgY2FzZSBSaWNoVGV4dDoNCisgICAgICAgIGNhc2UgVGV4dDoNCisgICAgICAgIGNhc2UgQ29tYm9Cb3g6IHsNCisgICAgICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgY3NWYWx1ZSA9IHZhbHVlOw0KKyAgICAgICAgICAgICAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIGludCBpUmV0ID0gbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QmVmb3JlVmFsdWVDaGFuZ2UodGhpcywgY3NWYWx1ZSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoaVJldCA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW50IGlJbmRleCA9IEZpbmRPcHRpb25WYWx1ZShjc1ZhbHVlKTsNCisgICAgICAgICAgICAgICAgaWYgKGlJbmRleCA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGJzRW5jb2RlVGV4dCA9IFBERl9FbmNvZGVUZXh0KGNzVmFsdWUpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9wRGljdC0+U2V0QXRTdHJpbmcoYkRlZmF1bHQgPyAiRFYiIDogIlYiLCBic0VuY29kZVRleHQpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fVHlwZSA9PSBSaWNoVGV4dCAmJiAhYkRlZmF1bHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BEaWN0LT5TZXRBdFN0cmluZygiUlYiLCBic0VuY29kZVRleHQpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wRGljdC0+UmVtb3ZlQXQoIkkiKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcERpY3QtPlNldEF0U3RyaW5nKGJEZWZhdWx0ID8gIkRWIiA6ICJWIiwgUERGX0VuY29kZVRleHQoY3NWYWx1ZSkpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJEZWZhdWx0KSB7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENsZWFyU2VsZWN0aW9uKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgU2V0SXRlbVNlbGVjdGlvbihpSW5kZXgsIFRSVUUpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChiTm90aWZ5ICYmIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnkgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QWZ0ZXJWYWx1ZUNoYW5nZSh0aGlzKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX3BGb3JtLT5tX2JVcGRhdGVkID0gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIExpc3RCb3g6IHsNCisgICAgICAgICAgICAgICAgaW50IGlJbmRleCA9IEZpbmRPcHRpb25WYWx1ZSh2YWx1ZSk7DQorICAgICAgICAgICAgICAgIGlmIChpSW5kZXggPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGJEZWZhdWx0ICYmIGlJbmRleCA9PSBHZXREZWZhdWx0U2VsZWN0ZWRJdGVtKCkpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIGNzVmFsdWUgPSB2YWx1ZTsNCisgICAgICAgICAgICAgICAgICAgIGludCBpUmV0ID0gbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QmVmb3JlU2VsZWN0aW9uQ2hhbmdlKHRoaXMsIGNzVmFsdWUpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlSZXQgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChiRGVmYXVsdCkgew0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgQ2xlYXJTZWxlY3Rpb24oKTsNCisgICAgICAgICAgICAgICAgICAgIFNldEl0ZW1TZWxlY3Rpb24oaUluZGV4LCBUUlVFKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkFmdGVyU2VsZWN0aW9uQ2hhbmdlKHRoaXMpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fcEZvcm0tPm1fYlVwZGF0ZWQgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIGlmIChDUERGX0ludGVyRm9ybTo6bV9iVXBkYXRlQVApIHsNCisgICAgICAgIFVwZGF0ZUFQKE5VTEwpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfRm9ybUZpZWxkOjpTZXRWYWx1ZShjb25zdCBDRlhfV2lkZVN0cmluZyYgdmFsdWUsIEZYX0JPT0wgYk5vdGlmeSkNCit7DQorICAgIHJldHVybiBTZXRWYWx1ZSh2YWx1ZSwgRkFMU0UsIGJOb3RpZnkpOw0KK30NCitpbnQgQ1BERl9Gb3JtRmllbGQ6OkdldE1heExlbigpDQorew0KKyAgICBDUERGX09iamVjdCogcE9iaiA9IEZQREZfR2V0RmllbGRBdHRyKG1fcERpY3QsICJNYXhMZW4iKTsNCisgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgaW50IGlDb3VudCA9IG1fQ29udHJvbExpc3QuR2V0U2l6ZSgpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpQ291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICBDUERGX0Zvcm1Db250cm9sKiBwQ29udHJvbCA9IChDUERGX0Zvcm1Db250cm9sKiltX0NvbnRyb2xMaXN0LkdldEF0KGkpOw0KKyAgICAgICAgICAgIGlmIChwQ29udHJvbCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBXaWRnZXREaWN0ID0gcENvbnRyb2wtPm1fcFdpZGdldERpY3Q7DQorICAgICAgICAgICAgaWYgKHBXaWRnZXREaWN0LT5LZXlFeGlzdCgiTWF4TGVuIikpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBXaWRnZXREaWN0LT5HZXRJbnRlZ2VyKCJNYXhMZW4iKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gcE9iai0+R2V0SW50ZWdlcigpOw0KK30NCitpbnQgQ1BERl9Gb3JtRmllbGQ6OkNvdW50U2VsZWN0ZWRJdGVtcygpDQorew0KKyAgICBDUERGX09iamVjdCogcFZhbHVlID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIlYiKTsNCisgICAgaWYgKHBWYWx1ZSA9PSBOVUxMKSB7DQorICAgICAgICBwVmFsdWUgPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiSSIpOw0KKyAgICAgICAgaWYgKHBWYWx1ZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBWYWx1ZS0+R2V0VHlwZSgpID09IFBERk9CSl9TVFJJTkcpIHsNCisgICAgICAgIGlmIChwVmFsdWUtPkdldFN0cmluZygpLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgaWYgKHBWYWx1ZS0+R2V0VHlwZSgpID09IFBERk9CSl9OVU1CRVIpIHsNCisgICAgICAgIGlmIChwVmFsdWUtPkdldFN0cmluZygpLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgaWYgKHBWYWx1ZS0+R2V0VHlwZSgpICE9IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuICgoQ1BERl9BcnJheSopcFZhbHVlKS0+R2V0Q291bnQoKTsNCit9DQoraW50IENQREZfRm9ybUZpZWxkOjpHZXRTZWxlY3RlZEluZGV4KGludCBpbmRleCkNCit7DQorICAgIENQREZfT2JqZWN0KiBwVmFsdWUgPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiViIpOw0KKyAgICBpZiAocFZhbHVlID09IE5VTEwpIHsNCisgICAgICAgIHBWYWx1ZSA9IEZQREZfR2V0RmllbGRBdHRyKG1fcERpY3QsICJJIik7DQorICAgICAgICBpZiAocFZhbHVlID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgc2VsX3ZhbHVlOw0KKyAgICBpZiAocFZhbHVlLT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUklORykgew0KKyAgICAgICAgaWYgKGluZGV4ICE9IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBzZWxfdmFsdWUgPSBwVmFsdWUtPkdldFVuaWNvZGVUZXh0KCk7DQorICAgIH0gZWxzZSBpZiAocFZhbHVlLT5HZXRUeXBlKCkgPT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgcmV0dXJuIHBWYWx1ZS0+R2V0SW50ZWdlcigpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKHBWYWx1ZS0+R2V0VHlwZSgpICE9IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChpbmRleCA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBzZWxfdmFsdWUgPSAoKENQREZfQXJyYXkqKXBWYWx1ZSktPkdldEVsZW1lbnRWYWx1ZShpbmRleCktPkdldFVuaWNvZGVUZXh0KCk7DQorICAgIH0NCisgICAgaWYgKGluZGV4IDwgQ291bnRTZWxlY3RlZE9wdGlvbnMoKSkgew0KKyAgICAgICAgaW50IGlPcHRJbmRleCA9IEdldFNlbGVjdGVkT3B0aW9uSW5kZXgoaW5kZXgpOw0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgY3NPcHQgPSBHZXRPcHRpb25WYWx1ZShpT3B0SW5kZXgpOw0KKyAgICAgICAgaWYgKGNzT3B0ID09IHNlbF92YWx1ZSkgew0KKyAgICAgICAgICAgIHJldHVybiBpT3B0SW5kZXg7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IG5PcHRzID0gQ291bnRPcHRpb25zKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbk9wdHM7IGkgKyspIHsNCisgICAgICAgIGlmIChzZWxfdmFsdWUgPT0gR2V0T3B0aW9uVmFsdWUoaSkpIHsNCisgICAgICAgICAgICByZXR1cm4gaTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gLTE7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Gb3JtRmllbGQ6OkNsZWFyU2VsZWN0aW9uKEZYX0JPT0wgYk5vdGlmeSkNCit7DQorICAgIGlmIChiTm90aWZ5ICYmIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnkgIT0gTlVMTCkgew0KKyAgICAgICAgaW50IGlSZXQgPSAwOw0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgY3NWYWx1ZTsNCisgICAgICAgIGludCBpSW5kZXggPSBHZXRTZWxlY3RlZEluZGV4KDApOw0KKyAgICAgICAgaWYgKGlJbmRleCA+PSAwKSB7DQorICAgICAgICAgICAgY3NWYWx1ZSA9IEdldE9wdGlvbkxhYmVsKGlJbmRleCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoR2V0VHlwZSgpID09IExpc3RCb3gpIHsNCisgICAgICAgICAgICBpUmV0ID0gbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QmVmb3JlU2VsZWN0aW9uQ2hhbmdlKHRoaXMsIGNzVmFsdWUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKEdldFR5cGUoKSA9PSBDb21ib0JveCkgew0KKyAgICAgICAgICAgIGlSZXQgPSBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5CZWZvcmVWYWx1ZUNoYW5nZSh0aGlzLCBjc1ZhbHVlKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChpUmV0IDwgMCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX3BEaWN0LT5SZW1vdmVBdCgiViIpOw0KKyAgICBtX3BEaWN0LT5SZW1vdmVBdCgiSSIpOw0KKyAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgIGlmIChHZXRUeXBlKCkgPT0gTGlzdEJveCkgew0KKyAgICAgICAgICAgIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkFmdGVyU2VsZWN0aW9uQ2hhbmdlKHRoaXMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKEdldFR5cGUoKSA9PSBDb21ib0JveCkgew0KKyAgICAgICAgICAgIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkFmdGVyVmFsdWVDaGFuZ2UodGhpcyk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKENQREZfSW50ZXJGb3JtOjptX2JVcGRhdGVBUCkgew0KKyAgICAgICAgVXBkYXRlQVAoTlVMTCk7DQorICAgIH0NCisgICAgbV9wRm9ybS0+bV9iVXBkYXRlZCA9IFRSVUU7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENQREZfRm9ybUZpZWxkOjpJc0l0ZW1TZWxlY3RlZChpbnQgaW5kZXgpDQorew0KKyAgICBBU1NFUlQoR2V0VHlwZSgpID09IENvbWJvQm94IHx8IEdldFR5cGUoKSA9PSBMaXN0Qm94KTsNCisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBDb3VudE9wdGlvbnMoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChJc09wdGlvblNlbGVjdGVkKGluZGV4KSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgb3B0X3ZhbHVlID0gR2V0T3B0aW9uVmFsdWUoaW5kZXgpOw0KKyAgICBDUERGX09iamVjdCogcFZhbHVlID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIlYiKTsNCisgICAgaWYgKHBWYWx1ZSA9PSBOVUxMKSB7DQorICAgICAgICBwVmFsdWUgPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiSSIpOw0KKyAgICAgICAgaWYgKHBWYWx1ZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwVmFsdWUtPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSSU5HKSB7DQorICAgICAgICBpZiAocFZhbHVlLT5HZXRVbmljb2RlVGV4dCgpID09IG9wdF92YWx1ZSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChwVmFsdWUtPkdldFR5cGUoKSA9PSBQREZPQkpfTlVNQkVSKSB7DQorICAgICAgICBpZiAocFZhbHVlLT5HZXRTdHJpbmcoKS5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFZhbHVlLT5HZXRJbnRlZ2VyKCkgPT0gaW5kZXgpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocFZhbHVlLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gKENQREZfQXJyYXkqKXBWYWx1ZTsNCisgICAgaW50IGlQb3MgPSAtMTsNCisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBDb3VudFNlbGVjdGVkT3B0aW9ucygpOyBqICsrKSB7DQorICAgICAgICBpZiAoR2V0U2VsZWN0ZWRPcHRpb25JbmRleChqKSA9PSBpbmRleCkgew0KKyAgICAgICAgICAgIGlQb3MgPSBqOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwQXJyYXktPkdldENvdW50KCk7IGkgKyspDQorICAgICAgICBpZiAocEFycmF5LT5HZXRFbGVtZW50VmFsdWUoaSktPkdldFVuaWNvZGVUZXh0KCkgPT0gb3B0X3ZhbHVlICYmIChpbnQpaSA9PSBpUG9zKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX0Zvcm1GaWVsZDo6U2V0SXRlbVNlbGVjdGlvbihpbnQgaW5kZXgsIEZYX0JPT0wgYlNlbGVjdGVkLCBGWF9CT09MIGJOb3RpZnkpDQorew0KKyAgICBBU1NFUlQoR2V0VHlwZSgpID09IENvbWJvQm94IHx8IEdldFR5cGUoKSA9PSBMaXN0Qm94KTsNCisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBDb3VudE9wdGlvbnMoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9XaWRlU3RyaW5nIG9wdF92YWx1ZSA9IEdldE9wdGlvblZhbHVlKGluZGV4KTsNCisgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICBpbnQgaVJldCA9IDA7DQorICAgICAgICBpZiAoR2V0VHlwZSgpID09IExpc3RCb3gpIHsNCisgICAgICAgICAgICBpUmV0ID0gbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QmVmb3JlU2VsZWN0aW9uQ2hhbmdlKHRoaXMsIG9wdF92YWx1ZSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoR2V0VHlwZSgpID09IENvbWJvQm94KSB7DQorICAgICAgICAgICAgaVJldCA9IG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkJlZm9yZVZhbHVlQ2hhbmdlKHRoaXMsIG9wdF92YWx1ZSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoaVJldCA8IDApIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCFiU2VsZWN0ZWQpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwVmFsdWUgPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiViIpOw0KKyAgICAgICAgaWYgKHBWYWx1ZSAhPSBOVUxMKSB7DQorICAgICAgICAgICAgaWYgKG1fVHlwZSA9PSBMaXN0Qm94KSB7DQorICAgICAgICAgICAgICAgIFNlbGVjdE9wdGlvbihpbmRleCwgRkFMU0UpOw0KKyAgICAgICAgICAgICAgICBpZiAocFZhbHVlLT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUklORykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBWYWx1ZS0+R2V0VW5pY29kZVRleHQoKSA9PSBvcHRfdmFsdWUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BEaWN0LT5SZW1vdmVBdCgiViIpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBWYWx1ZS0+R2V0VHlwZSgpID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgICAgICAgICAgICAgQ1BERl9BcnJheSogcEFycmF5ID0gQ1BERl9BcnJheTo6Q3JlYXRlKCk7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEFycmF5ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpbnQgaUNvdW50ID0gQ291bnRPcHRpb25zKCk7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlDb3VudDsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICE9IGluZGV4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJc0l0ZW1TZWxlY3RlZChpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3ZhbHVlID0gR2V0T3B0aW9uVmFsdWUoaSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQXJyYXktPkFkZFN0cmluZyhQREZfRW5jb2RlVGV4dChvcHRfdmFsdWUpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChwQXJyYXktPkdldENvdW50KCkgPCAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcEFycmF5LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcERpY3QtPlNldEF0KCJWIiwgcEFycmF5KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9UeXBlID09IENvbWJvQm94KSB7DQorICAgICAgICAgICAgICAgIG1fcERpY3QtPlJlbW92ZUF0KCJWIik7DQorICAgICAgICAgICAgICAgIG1fcERpY3QtPlJlbW92ZUF0KCJJIik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKG1fVHlwZSA9PSBMaXN0Qm94KSB7DQorICAgICAgICAgICAgU2VsZWN0T3B0aW9uKGluZGV4LCBUUlVFKTsNCisgICAgICAgICAgICBpZiAoIShtX0ZsYWdzICYgRk9STUxJU1RfTVVMVElTRUxFQ1QpKSB7DQorICAgICAgICAgICAgICAgIG1fcERpY3QtPlNldEF0U3RyaW5nKCJWIiwgUERGX0VuY29kZVRleHQob3B0X3ZhbHVlLCBvcHRfdmFsdWUuR2V0TGVuZ3RoKCkpKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBDUERGX0FycmF5OjpDcmVhdGUoKTsNCisgICAgICAgICAgICAgICAgaWYgKHBBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfQk9PTCBiU2VsZWN0ZWQ7DQorICAgICAgICAgICAgICAgIGludCBpQ291bnQgPSBDb3VudE9wdGlvbnMoKTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpQ291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChpICE9IGluZGV4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlNlbGVjdGVkID0gSXNJdGVtU2VsZWN0ZWQoaSk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJTZWxlY3RlZCA9IFRSVUU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAoYlNlbGVjdGVkKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3ZhbHVlID0gR2V0T3B0aW9uVmFsdWUoaSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgcEFycmF5LT5BZGRTdHJpbmcoUERGX0VuY29kZVRleHQob3B0X3ZhbHVlKSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wRGljdC0+U2V0QXQoIlYiLCBwQXJyYXkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAobV9UeXBlID09IENvbWJvQm94KSB7DQorICAgICAgICAgICAgbV9wRGljdC0+U2V0QXRTdHJpbmcoIlYiLCBQREZfRW5jb2RlVGV4dChvcHRfdmFsdWUsIG9wdF92YWx1ZS5HZXRMZW5ndGgoKSkpOw0KKyAgICAgICAgICAgIENQREZfQXJyYXkqIHBJID0gQ1BERl9BcnJheTo6Q3JlYXRlKCk7DQorICAgICAgICAgICAgaWYgKHBJID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwSS0+QWRkSW50ZWdlcihpbmRleCk7DQorICAgICAgICAgICAgbV9wRGljdC0+U2V0QXQoIkkiLCBwSSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICBpZiAoR2V0VHlwZSgpID09IExpc3RCb3gpIHsNCisgICAgICAgICAgICBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5BZnRlclNlbGVjdGlvbkNoYW5nZSh0aGlzKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChHZXRUeXBlKCkgPT0gQ29tYm9Cb3gpIHsNCisgICAgICAgICAgICBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5BZnRlclZhbHVlQ2hhbmdlKHRoaXMpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChDUERGX0ludGVyRm9ybTo6bV9iVXBkYXRlQVApIHsNCisgICAgICAgIFVwZGF0ZUFQKE5VTEwpOw0KKyAgICB9DQorICAgIG1fcEZvcm0tPm1fYlVwZGF0ZWQgPSBUUlVFOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0Zvcm1GaWVsZDo6SXNJdGVtRGVmYXVsdFNlbGVjdGVkKGludCBpbmRleCkNCit7DQorICAgIEFTU0VSVChHZXRUeXBlKCkgPT0gQ29tYm9Cb3ggfHwgR2V0VHlwZSgpID09IExpc3RCb3gpOw0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IENvdW50T3B0aW9ucygpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IGlEVkluZGV4ID0gR2V0RGVmYXVsdFNlbGVjdGVkSXRlbSgpOw0KKyAgICBpZiAoaURWSW5kZXggPCAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIChpRFZJbmRleCA9PSBpbmRleCk7DQorfQ0KK2ludCBDUERGX0Zvcm1GaWVsZDo6R2V0RGVmYXVsdFNlbGVjdGVkSXRlbSgpDQorew0KKyAgICBBU1NFUlQoR2V0VHlwZSgpID09IENvbWJvQm94IHx8IEdldFR5cGUoKSA9PSBMaXN0Qm94KTsNCisgICAgQ1BERl9PYmplY3QqIHBWYWx1ZSA9IEZQREZfR2V0RmllbGRBdHRyKG1fcERpY3QsICJEViIpOw0KKyAgICBpZiAocFZhbHVlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBDRlhfV2lkZVN0cmluZyBjc0RWID0gcFZhbHVlLT5HZXRVbmljb2RlVGV4dCgpOw0KKyAgICBpZiAoY3NEVi5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpbnQgaUNvdW50ID0gQ291bnRPcHRpb25zKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaUNvdW50OyBpICsrKSB7DQorICAgICAgICBpZiAoY3NEViA9PSBHZXRPcHRpb25WYWx1ZShpKSkgew0KKyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAtMTsNCit9DQordm9pZCBDUERGX0Zvcm1GaWVsZDo6VXBkYXRlQVAoQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2wpDQorew0KKyAgICBpZiAobV9UeXBlID09IFB1c2hCdXR0b24pIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9UeXBlID09IFJhZGlvQnV0dG9uIHx8IG1fVHlwZSA9PSBDaGVja0JveCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmICghbV9wRm9ybS0+bV9iR2VuZXJhdGVBUCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ291bnRDb250cm9scygpOyBpICsrKSB7DQorICAgICAgICBDUERGX0Zvcm1Db250cm9sKiBwQ29udHJvbCA9IEdldENvbnRyb2woaSk7DQorICAgICAgICBGUERGX0dlbmVyYXRlQVAobV9wRm9ybS0+bV9wRG9jdW1lbnQsIHBDb250cm9sLT5tX3BXaWRnZXREaWN0KTsNCisgICAgfQ0KK30NCitpbnQgQ1BERl9Gb3JtRmllbGQ6OkNvdW50T3B0aW9ucygpDQorew0KKyAgICBDUERGX09iamVjdCogcFZhbHVlID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIk9wdCIpOw0KKyAgICBpZiAocFZhbHVlID09IE5VTEwgfHwgcFZhbHVlLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gKChDUERGX0FycmF5KilwVmFsdWUpLT5HZXRDb3VudCgpOw0KK30NCitDRlhfV2lkZVN0cmluZyBDUERGX0Zvcm1GaWVsZDo6R2V0T3B0aW9uVGV4dChpbnQgaW5kZXgsIGludCBzdWJfaW5kZXgpDQorew0KKyAgICBDUERGX09iamVjdCogcFZhbHVlID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIk9wdCIpOw0KKyAgICBpZiAocFZhbHVlID09IE5VTEwgfHwgcFZhbHVlLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcE9wdGlvbiA9ICgoQ1BERl9BcnJheSopcFZhbHVlKS0+R2V0RWxlbWVudFZhbHVlKGluZGV4KTsNCisgICAgaWYgKHBPcHRpb24gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgaWYgKHBPcHRpb24tPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHBPcHRpb24gPSAoKENQREZfQXJyYXkqKXBPcHRpb24pLT5HZXRFbGVtZW50VmFsdWUoc3ViX2luZGV4KTsNCisgICAgfQ0KKyAgICBpZiAocE9wdGlvbiA9PSBOVUxMIHx8IHBPcHRpb24tPkdldFR5cGUoKSAhPSBQREZPQkpfU1RSSU5HKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gKChDUERGX1N0cmluZyopcE9wdGlvbiktPkdldFVuaWNvZGVUZXh0KCk7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENQREZfRm9ybUZpZWxkOjpHZXRPcHRpb25MYWJlbChpbnQgaW5kZXgpDQorew0KKyAgICByZXR1cm4gR2V0T3B0aW9uVGV4dChpbmRleCwgMSk7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENQREZfRm9ybUZpZWxkOjpHZXRPcHRpb25WYWx1ZShpbnQgaW5kZXgpDQorew0KKyAgICByZXR1cm4gR2V0T3B0aW9uVGV4dChpbmRleCwgMCk7DQorfQ0KK2ludCBDUERGX0Zvcm1GaWVsZDo6RmluZE9wdGlvbihDRlhfV2lkZVN0cmluZyBjc09wdExhYmVsKQ0KK3sNCisgICAgaW50IGlDb3VudCA9IENvdW50T3B0aW9ucygpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGlDb3VudDsgaSArKykgew0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgY3NWYWx1ZSA9IEdldE9wdGlvblZhbHVlKGkpOw0KKyAgICAgICAgaWYgKGNzVmFsdWUgPT0gY3NPcHRMYWJlbCkgew0KKyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAtMTsNCit9DQoraW50IENQREZfRm9ybUZpZWxkOjpGaW5kT3B0aW9uVmFsdWUoRlhfTFBDV1NUUiBjc09wdFZhbHVlLCBpbnQgaVN0YXJ0SW5kZXgpDQorew0KKyAgICBpZiAoaVN0YXJ0SW5kZXggPCAwKSB7DQorICAgICAgICBpU3RhcnRJbmRleCA9IDA7DQorICAgIH0NCisgICAgaW50IGlDb3VudCA9IENvdW50T3B0aW9ucygpOw0KKyAgICBmb3IgKDsgaVN0YXJ0SW5kZXggPCBpQ291bnQ7IGlTdGFydEluZGV4ICsrKSB7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyBjc1ZhbHVlID0gR2V0T3B0aW9uVmFsdWUoaVN0YXJ0SW5kZXgpOw0KKyAgICAgICAgaWYgKGNzVmFsdWUgPT0gY3NPcHRWYWx1ZSkgew0KKyAgICAgICAgICAgIHJldHVybiBpU3RhcnRJbmRleDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gLTE7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Gb3JtRmllbGQ6OkNoZWNrQ29udHJvbChpbnQgaUNvbnRyb2xJbmRleCwgRlhfQk9PTCBiQ2hlY2tlZCwgRlhfQk9PTCBiTm90aWZ5KQ0KK3sNCisgICAgQVNTRVJUKEdldFR5cGUoKSA9PSBDaGVja0JveCB8fCBHZXRUeXBlKCkgPT0gUmFkaW9CdXR0b24pOw0KKyAgICBDUERGX0Zvcm1Db250cm9sKiBwQ29udHJvbCA9IEdldENvbnRyb2woaUNvbnRyb2xJbmRleCk7DQorICAgIGlmIChwQ29udHJvbCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKCFiQ2hlY2tlZCAmJiBwQ29udHJvbC0+SXNDaGVja2VkKCkgPT0gYkNoZWNrZWQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZUFycmF5IHN0YXR1c0FycmF5Ow0KKyAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgIFNhdmVDaGVja2VkRmllbGRTdGF0dXModGhpcywgc3RhdHVzQXJyYXkpOw0KKyAgICB9DQorICAgIENGWF9XaWRlU3RyaW5nIGNzV0V4cG9ydCA9ICBwQ29udHJvbC0+R2V0RXhwb3J0VmFsdWUoKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NCRXhwb3J0ID0gUERGX0VuY29kZVRleHQoY3NXRXhwb3J0KTsNCisgICAgaW50IGlDb3VudCA9IENvdW50Q29udHJvbHMoKTsNCisgICAgRlhfQk9PTCBiVW5pc29uID0gUERGX0Zvcm1GaWVsZF9Jc1VuaXNvbih0aGlzKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpQ291bnQ7IGkgKyspIHsNCisgICAgICAgIENQREZfRm9ybUNvbnRyb2wqIHBDdHJsID0gR2V0Q29udHJvbChpKTsNCisgICAgICAgIGlmIChiVW5pc29uKSB7DQorICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgY3NFVmFsdWUgPSBwQ3RybC0+R2V0RXhwb3J0VmFsdWUoKTsNCisgICAgICAgICAgICBpZiAoY3NFVmFsdWUgPT0gY3NXRXhwb3J0KSB7DQorICAgICAgICAgICAgICAgIGlmIChwQ3RybC0+R2V0T25TdGF0ZU5hbWUoKSA9PSBwQ29udHJvbC0+R2V0T25TdGF0ZU5hbWUoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcEN0cmwtPkNoZWNrQ29udHJvbChiQ2hlY2tlZCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYkNoZWNrZWQpIHsNCisgICAgICAgICAgICAgICAgICAgIHBDdHJsLT5DaGVja0NvbnRyb2woRkFMU0UpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIGlmIChiQ2hlY2tlZCkgew0KKyAgICAgICAgICAgICAgICBwQ3RybC0+Q2hlY2tDb250cm9sKEZBTFNFKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpID09IGlDb250cm9sSW5kZXgpIHsNCisgICAgICAgICAgICAgICAgcEN0cmwtPkNoZWNrQ29udHJvbChiQ2hlY2tlZCk7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChiQ2hlY2tlZCkgew0KKyAgICAgICAgICAgICAgICBwQ3RybC0+Q2hlY2tDb250cm9sKEZBTFNFKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBPcHQgPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiT3B0Iik7DQorICAgIGlmIChwT3B0ID09IE5VTEwgfHwgcE9wdC0+R2V0VHlwZSgpICE9IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgaWYgKGJDaGVja2VkKSB7DQorICAgICAgICAgICAgbV9wRGljdC0+U2V0QXROYW1lKCJWIiwgY3NCRXhwb3J0KTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgY3NWOw0KKyAgICAgICAgICAgIENQREZfT2JqZWN0KiBwViA9IEZQREZfR2V0RmllbGRBdHRyKG1fcERpY3QsICJWIik7DQorICAgICAgICAgICAgaWYgKHBWICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgY3NWID0gcFYtPkdldFN0cmluZygpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoY3NWID09IGNzQkV4cG9ydCkgew0KKyAgICAgICAgICAgICAgICBtX3BEaWN0LT5TZXRBdE5hbWUoIlYiLCAiT2ZmIik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKGJDaGVja2VkKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc0luZGV4Ow0KKyAgICAgICAgY3NJbmRleC5Gb3JtYXQoIiVkIiwgaUNvbnRyb2xJbmRleCk7DQorICAgICAgICBtX3BEaWN0LT5TZXRBdE5hbWUoIlYiLCBjc0luZGV4KTsNCisgICAgfQ0KKyAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkFmdGVyQ2hlY2tlZFN0YXR1c0NoYW5nZSh0aGlzLCBzdGF0dXNBcnJheSk7DQorICAgIH0NCisgICAgbV9wRm9ybS0+bV9iVXBkYXRlZCA9IFRSVUU7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDRlhfV2lkZVN0cmluZyBDUERGX0Zvcm1GaWVsZDo6R2V0Q2hlY2tWYWx1ZShGWF9CT09MIGJEZWZhdWx0KQ0KK3sNCisgICAgQVNTRVJUKEdldFR5cGUoKSA9PSBDaGVja0JveCB8fCBHZXRUeXBlKCkgPT0gUmFkaW9CdXR0b24pOw0KKyAgICBDRlhfV2lkZVN0cmluZyBjc0V4cG9ydCA9IEwiT2ZmIjsNCisgICAgRlhfQk9PTCBiQ2hlY2tlZDsNCisgICAgaW50IGlDb3VudCA9IENvdW50Q29udHJvbHMoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpQ291bnQ7IGkgKyspIHsNCisgICAgICAgIENQREZfRm9ybUNvbnRyb2wqIHBDb250cm9sID0gR2V0Q29udHJvbChpKTsNCisgICAgICAgIGlmIChiRGVmYXVsdCkgew0KKyAgICAgICAgICAgIGJDaGVja2VkID0gcENvbnRyb2wtPklzRGVmYXVsdENoZWNrZWQoKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYkNoZWNrZWQgPSBwQ29udHJvbC0+SXNDaGVja2VkKCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYkNoZWNrZWQpIHsNCisgICAgICAgICAgICBjc0V4cG9ydCA9IHBDb250cm9sLT5HZXRFeHBvcnRWYWx1ZSgpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBjc0V4cG9ydDsNCit9DQorRlhfQk9PTCBDUERGX0Zvcm1GaWVsZDo6U2V0Q2hlY2tWYWx1ZShjb25zdCBDRlhfV2lkZVN0cmluZyYgdmFsdWUsIEZYX0JPT0wgYkRlZmF1bHQsIEZYX0JPT0wgYk5vdGlmeSkNCit7DQorICAgIEFTU0VSVChHZXRUeXBlKCkgPT0gQ2hlY2tCb3ggfHwgR2V0VHlwZSgpID09IFJhZGlvQnV0dG9uKTsNCisgICAgQ0ZYX0J5dGVBcnJheSBzdGF0dXNBcnJheTsNCisgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICBTYXZlQ2hlY2tlZEZpZWxkU3RhdHVzKHRoaXMsIHN0YXR1c0FycmF5KTsNCisgICAgfQ0KKyAgICBpbnQgaUNvdW50ID0gQ291bnRDb250cm9scygpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGlDb3VudDsgaSArKykgew0KKyAgICAgICAgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2wgPSBHZXRDb250cm9sKGkpOw0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgY3NFeHBvcnQgPSBwQ29udHJvbC0+R2V0RXhwb3J0VmFsdWUoKTsNCisgICAgICAgIGlmIChjc0V4cG9ydCA9PSB2YWx1ZSkgew0KKyAgICAgICAgICAgIGlmIChiRGVmYXVsdCkgew0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIENoZWNrQ29udHJvbChHZXRDb250cm9sSW5kZXgocENvbnRyb2wpLCBUUlVFKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChiRGVmYXVsdCkgew0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIENoZWNrQ29udHJvbChHZXRDb250cm9sSW5kZXgocENvbnRyb2wpLCBGQUxTRSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChiTm90aWZ5ICYmIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnkgIT0gTlVMTCkgew0KKyAgICAgICAgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QWZ0ZXJDaGVja2VkU3RhdHVzQ2hhbmdlKHRoaXMsIHN0YXR1c0FycmF5KTsNCisgICAgfQ0KKyAgICBtX3BGb3JtLT5tX2JVcGRhdGVkID0gVFJVRTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2ludCBDUERGX0Zvcm1GaWVsZDo6R2V0VG9wVmlzaWJsZUluZGV4KCkNCit7DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIlRJIik7DQorICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiBwT2JqLT5HZXRJbnRlZ2VyKCk7DQorfQ0KK2ludCBDUERGX0Zvcm1GaWVsZDo6Q291bnRTZWxlY3RlZE9wdGlvbnMoKQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBPYmogPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiSSIpOw0KKyAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwQXJyYXkgPSBwT2JqLT5HZXRBcnJheSgpOw0KKyAgICBpZiAocEFycmF5ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiAoaW50KXBBcnJheS0+R2V0Q291bnQoKTsNCit9DQoraW50IENQREZfRm9ybUZpZWxkOjpHZXRTZWxlY3RlZE9wdGlvbkluZGV4KGludCBpbmRleCkNCit7DQorICAgIENQREZfT2JqZWN0KiBwT2JqID0gRlBERl9HZXRGaWVsZEF0dHIobV9wRGljdCwgIkkiKTsNCisgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBBcnJheSA9IHBPYmotPkdldEFycmF5KCk7DQorICAgIGlmIChwQXJyYXkgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGludCBpQ291bnQgPSAoaW50KXBBcnJheS0+R2V0Q291bnQoKTsNCisgICAgaWYgKGlDb3VudCA+IDAgJiYgaW5kZXggPCBpQ291bnQpIHsNCisgICAgICAgIHJldHVybiBwQXJyYXktPkdldEludGVnZXIoaW5kZXgpOw0KKyAgICB9DQorICAgIHJldHVybiAtMTsNCit9DQorRlhfQk9PTCBDUERGX0Zvcm1GaWVsZDo6SXNPcHRpb25TZWxlY3RlZChpbnQgaU9wdEluZGV4KQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBPYmogPSBGUERGX0dldEZpZWxkQXR0cihtX3BEaWN0LCAiSSIpOw0KKyAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gcE9iai0+R2V0QXJyYXkoKTsNCisgICAgaWYgKHBBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IGlDb3VudCA9IChpbnQpcEFycmF5LT5HZXRDb3VudCgpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGlDb3VudDsgaSArKykgew0KKyAgICAgICAgaWYgKHBBcnJheS0+R2V0SW50ZWdlcihpKSA9PSBpT3B0SW5kZXgpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wgQ1BERl9Gb3JtRmllbGQ6OlNlbGVjdE9wdGlvbihpbnQgaU9wdEluZGV4LCBGWF9CT09MIGJTZWxlY3RlZCwgRlhfQk9PTCBiTm90aWZ5KQ0KK3sNCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gbV9wRGljdC0+R2V0QXJyYXkoIkkiKTsNCisgICAgaWYgKHBBcnJheSA9PSBOVUxMKSB7DQorICAgICAgICBpZiAoIWJTZWxlY3RlZCkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEFycmF5ID0gQ1BERl9BcnJheTo6Q3JlYXRlKCk7DQorICAgICAgICBpZiAocEFycmF5ID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX3BEaWN0LT5TZXRBdCgiSSIsIHBBcnJheSk7DQorICAgIH0NCisgICAgRlhfQk9PTCBiUmV0dXJuID0gRkFMU0U7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludClwQXJyYXktPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgIGludCBpRmluZCA9IHBBcnJheS0+R2V0SW50ZWdlcihpKTsNCisgICAgICAgIGlmIChpRmluZCA9PSBpT3B0SW5kZXgpIHsNCisgICAgICAgICAgICBpZiAoYlNlbGVjdGVkKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgaW50IGlSZXQgPSAwOw0KKyAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBjc1ZhbHVlID0gR2V0T3B0aW9uTGFiZWwoaU9wdEluZGV4KTsNCisgICAgICAgICAgICAgICAgaWYgKEdldFR5cGUoKSA9PSBMaXN0Qm94KSB7DQorICAgICAgICAgICAgICAgICAgICBpUmV0ID0gbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QmVmb3JlU2VsZWN0aW9uQ2hhbmdlKHRoaXMsIGNzVmFsdWUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChHZXRUeXBlKCkgPT0gQ29tYm9Cb3gpIHsNCisgICAgICAgICAgICAgICAgICAgIGlSZXQgPSBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5CZWZvcmVWYWx1ZUNoYW5nZSh0aGlzLCBjc1ZhbHVlKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoaVJldCA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwQXJyYXktPlJlbW92ZUF0KGkpOw0KKyAgICAgICAgICAgIGJSZXR1cm4gPSBUUlVFOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfSBlbHNlIGlmIChpRmluZCA+IGlPcHRJbmRleCkgew0KKyAgICAgICAgICAgIGlmICghYlNlbGVjdGVkKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoYk5vdGlmeSAmJiBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgaW50IGlSZXQgPSAwOw0KKyAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBjc1ZhbHVlID0gR2V0T3B0aW9uTGFiZWwoaU9wdEluZGV4KTsNCisgICAgICAgICAgICAgICAgaWYgKEdldFR5cGUoKSA9PSBMaXN0Qm94KSB7DQorICAgICAgICAgICAgICAgICAgICBpUmV0ID0gbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QmVmb3JlU2VsZWN0aW9uQ2hhbmdlKHRoaXMsIGNzVmFsdWUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChHZXRUeXBlKCkgPT0gQ29tYm9Cb3gpIHsNCisgICAgICAgICAgICAgICAgICAgIGlSZXQgPSBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5CZWZvcmVWYWx1ZUNoYW5nZSh0aGlzLCBjc1ZhbHVlKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoaVJldCA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBDUERGX051bWJlciogcE51bSA9IENQREZfTnVtYmVyOjpDcmVhdGUoaU9wdEluZGV4KTsNCisgICAgICAgICAgICBpZiAocE51bSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcEFycmF5LT5JbnNlcnRBdChpLCBwTnVtKTsNCisgICAgICAgICAgICBiUmV0dXJuID0gVFJVRTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoIWJSZXR1cm4pIHsNCisgICAgICAgIGlmIChiU2VsZWN0ZWQpIHsNCisgICAgICAgICAgICBwQXJyYXktPkFkZEludGVnZXIoaU9wdEluZGV4KTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwQXJyYXktPkdldENvdW50KCkgPT0gMCkgew0KKyAgICAgICAgICAgIG1fcERpY3QtPlJlbW92ZUF0KCJJIik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICBpZiAoR2V0VHlwZSgpID09IExpc3RCb3gpIHsNCisgICAgICAgICAgICBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5BZnRlclNlbGVjdGlvbkNoYW5nZSh0aGlzKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChHZXRUeXBlKCkgPT0gQ29tYm9Cb3gpIHsNCisgICAgICAgICAgICBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5BZnRlclZhbHVlQ2hhbmdlKHRoaXMpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fcEZvcm0tPm1fYlVwZGF0ZWQgPSBUUlVFOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX0Zvcm1GaWVsZDo6Q2xlYXJTZWxlY3RlZE9wdGlvbnMoRlhfQk9PTCBiTm90aWZ5KQ0KK3sNCisgICAgaWYgKGJOb3RpZnkgJiYgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeSAhPSBOVUxMKSB7DQorICAgICAgICBpbnQgaVJldCA9IDA7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyBjc1ZhbHVlOw0KKyAgICAgICAgaW50IGlJbmRleCA9IEdldFNlbGVjdGVkSW5kZXgoMCk7DQorICAgICAgICBpZiAoaUluZGV4ID49IDApIHsNCisgICAgICAgICAgICBjc1ZhbHVlID0gR2V0T3B0aW9uTGFiZWwoaUluZGV4KTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChHZXRUeXBlKCkgPT0gTGlzdEJveCkgew0KKyAgICAgICAgICAgIGlSZXQgPSBtX3BGb3JtLT5tX3BGb3JtTm90aWZ5LT5CZWZvcmVTZWxlY3Rpb25DaGFuZ2UodGhpcywgY3NWYWx1ZSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoR2V0VHlwZSgpID09IENvbWJvQm94KSB7DQorICAgICAgICAgICAgaVJldCA9IG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnktPkJlZm9yZVZhbHVlQ2hhbmdlKHRoaXMsIGNzVmFsdWUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGlSZXQgPCAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fcERpY3QtPlJlbW92ZUF0KCJJIik7DQorICAgIGlmIChiTm90aWZ5ICYmIG1fcEZvcm0tPm1fcEZvcm1Ob3RpZnkgIT0gTlVMTCkgew0KKyAgICAgICAgaWYgKEdldFR5cGUoKSA9PSBMaXN0Qm94KSB7DQorICAgICAgICAgICAgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QWZ0ZXJTZWxlY3Rpb25DaGFuZ2UodGhpcyk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoR2V0VHlwZSgpID09IENvbWJvQm94KSB7DQorICAgICAgICAgICAgbV9wRm9ybS0+bV9wRm9ybU5vdGlmeS0+QWZ0ZXJWYWx1ZUNoYW5nZSh0aGlzKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX3BGb3JtLT5tX2JVcGRhdGVkID0gVFJVRTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ1BERl9Gb3JtRmllbGQ6OkxvYWREQSgpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBEQSA9IEZQREZfR2V0RmllbGRBdHRyKG1fcERpY3QsICJEQSIpLT5HZXRTdHJpbmcoKTsNCisgICAgaWYgKERBLklzRW1wdHkoKSkgew0KKyAgICAgICAgREEgPSBtX3BGb3JtLT5tX3BGb3JtRGljdC0+R2V0U3RyaW5nKCJEQSIpOw0KKyAgICB9DQorICAgIGlmIChEQS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX1NpbXBsZVBhcnNlciBzeW50YXgoREEpOw0KKyAgICBzeW50YXguRmluZFRhZ1BhcmFtKCJUZiIsIDIpOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBmb250X25hbWUgPSBzeW50YXguR2V0V29yZCgpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250RGljdCA9IG1fcEZvcm0tPm1fcEZvcm1EaWN0LT5HZXREaWN0KCJEUiIpLT5HZXREaWN0KCJGb250IiktPkdldERpY3QoZm9udF9uYW1lKTsNCisgICAgaWYgKHBGb250RGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wRm9udCA9IG1fcEZvcm0tPm1fcERvY3VtZW50LT5Mb2FkRm9udChwRm9udERpY3QpOw0KKyAgICBtX0ZvbnRTaXplID0gRlhfYXRvZihzeW50YXguR2V0V29yZCgpKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmRvYy9kb2NfbGluay5jcHAgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19saW5rLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzhmZGE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmRvYy9kb2NfbGluay5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZkb2MvZnBkZl9kb2MuaCINCitDUERGX0xpbmtMaXN0Ojp+Q1BERl9MaW5rTGlzdCgpDQorew0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX1BhZ2VNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBGWF9MUFZPSUQga2V5LCB2YWx1ZTsNCisgICAgICAgIG1fUGFnZU1hcC5HZXROZXh0QXNzb2MocG9zLCBrZXksIHZhbHVlKTsNCisgICAgICAgIGRlbGV0ZSAoQ0ZYX1B0ckFycmF5Kil2YWx1ZTsNCisgICAgfQ0KK30NCitDRlhfUHRyQXJyYXkqIENQREZfTGlua0xpc3Q6OkdldFBhZ2VMaW5rcyhDUERGX1BhZ2UqIHBQYWdlKQ0KK3sNCisgICAgRlhfRFdPUkQgb2JqbnVtID0gcFBhZ2UtPm1fcEZvcm1EaWN0LT5HZXRPYmpOdW0oKTsNCisgICAgaWYgKG9iam51bSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfUHRyQXJyYXkqIHBQYWdlTGlua0xpc3QgPSBOVUxMOw0KKyAgICBpZiAoIW1fUGFnZU1hcC5Mb29rdXAoKEZYX0xQVk9JRCkoRlhfVUlOVFBUUilvYmpudW0sIChGWF9MUFZPSUQmKXBQYWdlTGlua0xpc3QpKSB7DQorICAgICAgICBwUGFnZUxpbmtMaXN0ID0gRlhfTkVXIENGWF9QdHJBcnJheTsNCisgICAgICAgIGlmIChwUGFnZUxpbmtMaXN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIG1fUGFnZU1hcC5TZXRBdCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKW9iam51bSwgcFBhZ2VMaW5rTGlzdCk7DQorICAgICAgICBMb2FkUGFnZUxpbmtzKHBQYWdlLCBwUGFnZUxpbmtMaXN0KTsNCisgICAgfQ0KKyAgICByZXR1cm4gcFBhZ2VMaW5rTGlzdDsNCit9DQoraW50IENQREZfTGlua0xpc3Q6OkNvdW50TGlua3MoQ1BERl9QYWdlKiBwUGFnZSkNCit7DQorICAgIENGWF9QdHJBcnJheSogcFBhZ2VMaW5rTGlzdCA9IEdldFBhZ2VMaW5rcyhwUGFnZSk7DQorICAgIGlmIChwUGFnZUxpbmtMaXN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiBwUGFnZUxpbmtMaXN0LT5HZXRTaXplKCk7DQorfQ0KK0NQREZfTGluayBDUERGX0xpbmtMaXN0OjpHZXRMaW5rKENQREZfUGFnZSogcFBhZ2UsIGludCBpbmRleCkNCit7DQorICAgIENGWF9QdHJBcnJheSogcFBhZ2VMaW5rTGlzdCA9IEdldFBhZ2VMaW5rcyhwUGFnZSk7DQorICAgIGlmIChwUGFnZUxpbmtMaXN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiAoQ1BERl9EaWN0aW9uYXJ5KilwUGFnZUxpbmtMaXN0LT5HZXRBdChpbmRleCk7DQorfQ0KK0NQREZfTGluayBDUERGX0xpbmtMaXN0OjpHZXRMaW5rQXRQb2ludChDUERGX1BhZ2UqIHBQYWdlLCBGWF9GTE9BVCBwZGZfeCwgRlhfRkxPQVQgcGRmX3kpDQorew0KKyAgICBDRlhfUHRyQXJyYXkqIHBQYWdlTGlua0xpc3QgPSBHZXRQYWdlTGlua3MocFBhZ2UpOw0KKyAgICBpZiAocFBhZ2VMaW5rTGlzdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpbnQgc2l6ZSA9IHBQYWdlTGlua0xpc3QtPkdldFNpemUoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7DQorICAgICAgICBDUERGX0xpbmsgTGluayA9IChDUERGX0RpY3Rpb25hcnkqKXBQYWdlTGlua0xpc3QtPkdldEF0KGkpOw0KKyAgICAgICAgQ1BERl9SZWN0IHJlY3QgPSBMaW5rLkdldFJlY3QoKTsNCisgICAgICAgIGlmIChyZWN0LkNvbnRhaW5zKHBkZl94LCBwZGZfeSkpIHsNCisgICAgICAgICAgICByZXR1cm4gTGluazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQordm9pZCBDUERGX0xpbmtMaXN0OjpMb2FkUGFnZUxpbmtzKENQREZfUGFnZSogcFBhZ2UsIENGWF9QdHJBcnJheSogcExpc3QpDQorew0KKyAgICBDUERGX0FycmF5KiBwQW5ub3RMaXN0ID0gcFBhZ2UtPm1fcEZvcm1EaWN0LT5HZXRBcnJheSgiQW5ub3RzIik7DQorICAgIGlmIChwQW5ub3RMaXN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcEFubm90TGlzdC0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwQW5ub3QgPSBwQW5ub3RMaXN0LT5HZXREaWN0KGkpOw0KKyAgICAgICAgaWYgKHBBbm5vdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEFubm90LT5HZXRTdHJpbmcoIlN1YnR5cGUiKSAhPSAiTGluayIpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIHBMaXN0LT5BZGQocEFubm90KTsNCisgICAgfQ0KK30NCitDUERGX1JlY3QgQ1BERl9MaW5rOjpHZXRSZWN0KCkNCit7DQorICAgIHJldHVybiBtX3BEaWN0LT5HZXRSZWN0KCJSZWN0Iik7DQorfQ0KK0NQREZfRGVzdCBDUERGX0xpbms6OkdldERlc3QoQ1BERl9Eb2N1bWVudCogcERvYykNCit7DQorICAgIENQREZfT2JqZWN0KiBwRGVzdCA9IG1fcERpY3QtPkdldEVsZW1lbnRWYWx1ZSgiRGVzdCIpOw0KKyAgICBpZiAocERlc3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBEZXN0LT5HZXRUeXBlKCkgPT0gUERGT0JKX1NUUklORyB8fCBwRGVzdC0+R2V0VHlwZSgpID09IFBERk9CSl9OQU1FKSB7DQorICAgICAgICBDUERGX05hbWVUcmVlIG5hbWVfdHJlZShwRG9jLCBGWF9CU1RSQygiRGVzdHMiKSk7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZ0MgbmFtZSA9IHBEZXN0LT5HZXRTdHJpbmcoKTsNCisgICAgICAgIHJldHVybiBuYW1lX3RyZWUuTG9va3VwTmFtZWREZXN0KHBEb2MsIG5hbWUpOw0KKyAgICB9IGVsc2UgaWYgKHBEZXN0LT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gKENQREZfQXJyYXkqKXBEZXN0Ow0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX0FjdGlvbiBDUERGX0xpbms6OkdldEFjdGlvbigpDQorew0KKyAgICByZXR1cm4gbV9wRGljdC0+R2V0RGljdCgiQSIpOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmZG9jL2RvY19tZXRhZGF0YS5jcHAgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY19tZXRhZGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNhYzllMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX21ldGFkYXRhLmNwcApAQCAtMCwwICsxLDE1MiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmRvYy9mcGRmX2RvYy5oIg0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X3htbC5oIg0KK3R5cGVkZWYgc3RydWN0IF9QREZET0NfTUVUQURBVEEgew0KKyAgICBDUERGX0RvY3VtZW50ICptX3BEb2M7DQorICAgIENYTUxfRWxlbWVudCAqbV9wWG1sRWxtbnQ7DQorICAgIENYTUxfRWxlbWVudCAqbV9wRWxtbnRSZGY7DQorICAgIENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyICptX3BTdHJpbmdNYXA7DQorfSBQREZET0NfTUVUQURBVEEsICogUERGRE9DX0xQTUVUQURBVEE7DQordHlwZWRlZiBQREZET0NfTUVUQURBVEEgY29uc3QgKiBQREZET0NfTFBDTUVUQURBVEE7DQorY29uc3QgRlhfTFBDU1RSIGdzX0ZQREZET0NfTWV0YWRhdGFfVGl0bGVzW10gPSB7DQorICAgICJUaXRsZSIsICJ0aXRsZSIsDQorICAgICJTdWJqZWN0IiwgImRlc2NyaXB0aW9uIiwNCisgICAgIkF1dGhvciIsICJjcmVhdG9yIiwNCisgICAgIktleXdvcmRzIiwgIktleXdvcmRzIiwNCisgICAgIlByb2R1Y2VyIiwgIlByb2R1Y2VyIiwNCisgICAgIkNyZWF0b3IiLCAiQ3JlYXRvclRvb2wiLA0KKyAgICAiQ3JlYXRpb25EYXRlIiwgIkNyZWF0ZURhdGUiLA0KKyAgICAiTW9kRGF0ZSIsICJNb2RpZnlEYXRlIiwNCisgICAgIk1ldGFkYXRhRGF0ZSIsICJNZXRhZGF0YURhdGUiDQorfTsNCitDUERGX01ldGFkYXRhOjpDUERGX01ldGFkYXRhKCkNCit7DQorICAgIG1fcERhdGEgPSBGWF9BbGxvYyhQREZET0NfTUVUQURBVEEsIDEpOw0KKyAgICBGWFNZU19tZW1zZXQzMihtX3BEYXRhLCAwLCBzaXplb2YoUERGRE9DX01FVEFEQVRBKSk7DQorICAgIENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyIComcFN0cmluZ01hcCA9ICgoUERGRE9DX0xQTUVUQURBVEEpbV9wRGF0YSktPm1fcFN0cmluZ01hcDsNCisgICAgcFN0cmluZ01hcCA9IEZYX05FVyhDRlhfQ01hcEJ5dGVTdHJpbmdUb1B0cik7DQorICAgIGlmIChwU3RyaW5nTWFwICE9IE5VTEwpIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGJzdHI7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDE4OyBpICs9IDIpIHsNCisgICAgICAgICAgICBic3RyID0gZ3NfRlBERkRPQ19NZXRhZGF0YV9UaXRsZXNbaV07DQorICAgICAgICAgICAgcFN0cmluZ01hcC0+QWRkVmFsdWUoYnN0ciwgKHZvaWQqKWdzX0ZQREZET0NfTWV0YWRhdGFfVGl0bGVzW2kgKyAxXSk7DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ1BERl9NZXRhZGF0YTo6fkNQREZfTWV0YWRhdGEoKQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KG1fcERhdGEgIT0gTlVMTCk7DQorICAgIENYTUxfRWxlbWVudCAqJnAgPSAoKFBERkRPQ19MUE1FVEFEQVRBKW1fcERhdGEpLT5tX3BYbWxFbG1udDsNCisgICAgaWYgKHApIHsNCisgICAgICAgIGRlbGV0ZSBwOw0KKyAgICB9DQorICAgIENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyICpwU3RyaW5nTWFwID0gKChQREZET0NfTFBNRVRBREFUQSltX3BEYXRhKS0+bV9wU3RyaW5nTWFwOw0KKyAgICBpZiAocFN0cmluZ01hcCkgew0KKyAgICAgICAgcFN0cmluZ01hcC0+UmVtb3ZlQWxsKCk7DQorICAgICAgICBGWF9GcmVlKHBTdHJpbmdNYXApOw0KKyAgICB9DQorICAgIEZYX0ZyZWUobV9wRGF0YSk7DQorfQ0KK3ZvaWQgQ1BERl9NZXRhZGF0YTo6TG9hZERvYyhDUERGX0RvY3VtZW50ICpwRG9jKQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KHBEb2MgIT0gTlVMTCk7DQorICAgICgoUERGRE9DX0xQTUVUQURBVEEpbV9wRGF0YSktPm1fcERvYyA9IHBEb2M7DQorICAgIENQREZfRGljdGlvbmFyeSAqcFJvb3QgPSBwRG9jLT5HZXRSb290KCk7DQorICAgIENQREZfU3RyZWFtICpwU3RyZWFtID0gcFJvb3QtPkdldFN0cmVhbShGWF9CU1RSQygiTWV0YWRhdGEiKSk7DQorICAgIGlmICghcFN0cmVhbSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfU3RyZWFtQWNjIGFjYzsNCisgICAgYWNjLkxvYWRBbGxEYXRhKHBTdHJlYW0sIEZBTFNFKTsNCisgICAgaW50IHNpemUgPSBhY2MuR2V0U2l6ZSgpOw0KKyAgICBGWF9MUENCWVRFIHBCdWYgPSBhY2MuR2V0RGF0YSgpOw0KKyAgICBDWE1MX0VsZW1lbnQgKiZwWG1sRWxtbnQgPSAoKFBERkRPQ19MUE1FVEFEQVRBKW1fcERhdGEpLT5tX3BYbWxFbG1udDsNCisgICAgcFhtbEVsbW50ID0gQ1hNTF9FbGVtZW50OjpQYXJzZShwQnVmLCBzaXplKTsNCisgICAgaWYgKCFwWG1sRWxtbnQpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDWE1MX0VsZW1lbnQgKiZwRWxtbnRSZGYgPSAoKFBERkRPQ19MUE1FVEFEQVRBKW1fcERhdGEpLT5tX3BFbG1udFJkZjsNCisgICAgaWYgKHBYbWxFbG1udC0+R2V0VGFnTmFtZSgpID09IEZYX0JTVFJDKCJSREYiKSkgew0KKyAgICAgICAgcEVsbW50UmRmID0gcFhtbEVsbW50Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcEVsbW50UmRmID0gcFhtbEVsbW50LT5HZXRFbGVtZW50KE5VTEwsIEZYX0JTVFJDKCJSREYiKSk7DQorICAgIH0NCit9DQorRlhfSU5UMzIgQ1BERl9NZXRhZGF0YTo6R2V0U3RyaW5nKEZYX0JTVFIgYnNJdGVtLCBDRlhfV2lkZVN0cmluZyAmd3NTdHIpDQorew0KKyAgICBpZiAoISgoUERGRE9DX0xQTUVUQURBVEEpbV9wRGF0YSktPm1fcFhtbEVsbW50KSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaWYgKCEoKFBERkRPQ19MUE1FVEFEQVRBKW1fcERhdGEpLT5tX3BTdHJpbmdNYXApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICB2b2lkICpzelRhZzsNCisgICAgaWYgKCEoKFBERkRPQ19MUE1FVEFEQVRBKW1fcERhdGEpLT5tX3BTdHJpbmdNYXAtPkxvb2t1cChic0l0ZW0sIHN6VGFnKSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGJzVGFnID0gKEZYX0xQQ1NUUilzelRhZzsNCisgICAgd3NTdHIgPSBMIiI7DQorICAgIENYTUxfRWxlbWVudCAqcEVsbW50UmRmID0gKChQREZET0NfTFBNRVRBREFUQSltX3BEYXRhKS0+bV9wRWxtbnRSZGY7DQorICAgIGlmICghcEVsbW50UmRmKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaW50IG5DaGlsZCA9IHBFbG1udFJkZi0+Q291bnRDaGlsZHJlbigpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5DaGlsZDsgaSsrKSB7DQorICAgICAgICBDWE1MX0VsZW1lbnQgKnBUYWcgPSBwRWxtbnRSZGYtPkdldEVsZW1lbnQoTlVMTCwgRlhfQlNUUkMoIkRlc2NyaXB0aW9uIiksIGkpOw0KKyAgICAgICAgaWYgKCFwVGFnKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYnNJdGVtID09IEZYX0JTVFJDKCJUaXRsZSIpIHx8IGJzSXRlbSA9PSBGWF9CU1RSQygiU3ViamVjdCIpKSB7DQorICAgICAgICAgICAgQ1hNTF9FbGVtZW50ICpwRWxtbnQgPSBwVGFnLT5HZXRFbGVtZW50KE5VTEwsIGJzVGFnKTsNCisgICAgICAgICAgICBpZiAoIXBFbG1udCkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcEVsbW50ID0gcEVsbW50LT5HZXRFbGVtZW50KE5VTEwsIEZYX0JTVFJDKCJBbHQiKSk7DQorICAgICAgICAgICAgaWYgKCFwRWxtbnQpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBFbG1udCA9IHBFbG1udC0+R2V0RWxlbWVudChOVUxMLCBGWF9CU1RSQygibGkiKSk7DQorICAgICAgICAgICAgaWYgKCFwRWxtbnQpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHdzU3RyID0gcEVsbW50LT5HZXRDb250ZW50KDApOw0KKyAgICAgICAgICAgIHJldHVybiB3c1N0ci5HZXRMZW5ndGgoKTsNCisgICAgICAgIH0gZWxzZSBpZiAoYnNJdGVtID09IEZYX0JTVFJDKCJBdXRob3IiKSkgew0KKyAgICAgICAgICAgIENYTUxfRWxlbWVudCAqcEVsbW50ID0gcFRhZy0+R2V0RWxlbWVudChOVUxMLCBic1RhZyk7DQorICAgICAgICAgICAgaWYgKCFwRWxtbnQpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBFbG1udCA9IHBFbG1udC0+R2V0RWxlbWVudChOVUxMLCBGWF9CU1RSQygiU2VxIikpOw0KKyAgICAgICAgICAgIGlmICghcEVsbW50KSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwRWxtbnQgPSBwRWxtbnQtPkdldEVsZW1lbnQoTlVMTCwgRlhfQlNUUkMoImxpIikpOw0KKyAgICAgICAgICAgIGlmICghcEVsbW50KSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB3c1N0ciA9IHBFbG1udC0+R2V0Q29udGVudCgwKTsNCisgICAgICAgICAgICByZXR1cm4gd3NTdHIuR2V0TGVuZ3RoKCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIENYTUxfRWxlbWVudCAqcEVsbW50ID0gcFRhZy0+R2V0RWxlbWVudChOVUxMLCBic1RhZyk7DQorICAgICAgICAgICAgaWYgKCFwRWxtbnQpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHdzU3RyID0gcEVsbW50LT5HZXRDb250ZW50KDApOw0KKyAgICAgICAgICAgIHJldHVybiB3c1N0ci5HZXRMZW5ndGgoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gLTE7DQorfQ0KK0NYTUxfRWxlbWVudCogQ1BERl9NZXRhZGF0YTo6R2V0Um9vdCgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gKChQREZET0NfTFBNRVRBREFUQSltX3BEYXRhKS0+bV9wWG1sRWxtbnQ7DQorfQ0KK0NYTUxfRWxlbWVudCogQ1BERl9NZXRhZGF0YTo6R2V0UkRGKCkgY29uc3QNCit7DQorICAgIHJldHVybiAoKFBERkRPQ19MUE1FVEFEQVRBKW1fcERhdGEpLT5tX3BFbG1udFJkZjsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmRvYy9kb2Nfb2NnLmNwcCBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX29jZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzliOGUzNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX29jZy5jcHAKQEAgLTAsMCArMSwzMDAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZkb2MvZnBkZl9kb2MuaCINCitzdGF0aWMgRlhfSU5UMzIgRlBERkRPQ19PQ0dfRmluZEdyb3VwKGNvbnN0IENQREZfT2JqZWN0ICpwT2JqZWN0LCBjb25zdCBDUERGX0RpY3Rpb25hcnkgKnBHcm91cERpY3QpDQorew0KKyAgICBpZiAocE9iamVjdCA9PSBOVUxMIHx8IHBHcm91cERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIGlUeXBlID0gcE9iamVjdC0+R2V0VHlwZSgpOw0KKyAgICBpZiAoaVR5cGUgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICBGWF9EV09SRCBkd0NvdW50ID0gKChDUERGX0FycmF5KilwT2JqZWN0KS0+R2V0Q291bnQoKTsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBkd0NvdW50OyBpKyspIHsNCisgICAgICAgICAgICBpZiAoKChDUERGX0FycmF5KilwT2JqZWN0KS0+R2V0RGljdChpKSA9PSBwR3JvdXBEaWN0KSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAocE9iamVjdC0+R2V0RGljdCgpID09IHBHcm91cERpY3QpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiAtMTsNCit9DQorc3RhdGljIEZYX0JPT0wgRlBERkRPQ19PQ0dfSGFzSW50ZW50KGNvbnN0IENQREZfRGljdGlvbmFyeSAqcERpY3QsIEZYX0JTVFIgY3NFbGVtZW50LCBGWF9CU1RSIGNzRGVmID0gRlhfQlNUUkMoIiIpKQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KHBEaWN0ICE9IE5VTEwpOw0KKyAgICBDUERGX09iamVjdCAqcEludGVudCA9IHBEaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkludGVudCIpKTsNCisgICAgaWYgKHBJbnRlbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIGNzRWxlbWVudCA9PSBjc0RlZjsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBic0ludGVudDsNCisgICAgaWYgKHBJbnRlbnQtPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIEZYX0RXT1JEIGR3Q291bnQgPSAoKENQREZfQXJyYXkqKXBJbnRlbnQpLT5HZXRDb3VudCgpOw0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IGR3Q291bnQ7IGkrKykgew0KKyAgICAgICAgICAgIGJzSW50ZW50ID0gKChDUERGX0FycmF5KilwSW50ZW50KS0+R2V0U3RyaW5nKGkpOw0KKyAgICAgICAgICAgIGlmIChic0ludGVudCA9PSBGWF9CU1RSQygiQWxsIikgfHwgYnNJbnRlbnQgPT0gY3NFbGVtZW50KSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBic0ludGVudCA9IHBJbnRlbnQtPkdldFN0cmluZygpOw0KKyAgICByZXR1cm4gYnNJbnRlbnQgPT0gRlhfQlNUUkMoIkFsbCIpIHx8IGJzSW50ZW50ID09IGNzRWxlbWVudDsNCit9DQorc3RhdGljIENQREZfRGljdGlvbmFyeSogRlBERkRPQ19PQ0dfR2V0Q29uZmlnKENQREZfRG9jdW1lbnQgKnBEb2MsIGNvbnN0IENQREZfRGljdGlvbmFyeSAqcE9DR0RpY3QsIEZYX0JTVFIgYnNTdGF0ZSkNCit7DQorICAgIEZYU1lTX2Fzc2VydChwRG9jICYmIHBPQ0dEaWN0KTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5ICpwT0NQcm9wZXJ0aWVzID0gcERvYy0+R2V0Um9vdCgpLT5HZXREaWN0KEZYX0JTVFJDKCJPQ1Byb3BlcnRpZXMiKSk7DQorICAgIGlmICghcE9DUHJvcGVydGllcykgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9BcnJheSAqcE9DR3MgPSBwT0NQcm9wZXJ0aWVzLT5HZXRBcnJheShGWF9CU1RSQygiT0NHcyIpKTsNCisgICAgaWYgKCFwT0NHcykgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKEZQREZET0NfT0NHX0ZpbmRHcm91cChwT0NHcywgcE9DR0RpY3QpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5ICpwQ29uZmlnID0gcE9DUHJvcGVydGllcy0+R2V0RGljdChGWF9CU1RSQygiRCIpKTsNCisgICAgQ1BERl9BcnJheSAqcENvbmZpZ3MgPSBwT0NQcm9wZXJ0aWVzLT5HZXRBcnJheShGWF9CU1RSQygiQ29uZmlncyIpKTsNCisgICAgaWYgKHBDb25maWdzKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkgKnBGaW5kOw0KKyAgICAgICAgRlhfSU5UMzIgaUNvdW50ID0gcENvbmZpZ3MtPkdldENvdW50KCk7DQorICAgICAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgaUNvdW50OyBpICsrKSB7DQorICAgICAgICAgICAgcEZpbmQgPSBwQ29uZmlncy0+R2V0RGljdChpKTsNCisgICAgICAgICAgICBpZiAoIXBGaW5kKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoIUZQREZET0NfT0NHX0hhc0ludGVudChwRmluZCwgRlhfQlNUUkMoIlZpZXciKSwgRlhfQlNUUkMoIlZpZXciKSkpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBDb25maWcgPSBwRmluZDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcENvbmZpZzsNCit9DQorc3RhdGljIENGWF9CeXRlU3RyaW5nIEZQREZET0NfT0NHX0dldFVzYWdlVHlwZVN0cmluZyhDUERGX09DQ29udGV4dDo6VXNhZ2VUeXBlIGVUeXBlKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NTdGF0ZSA9IEZYX0JTVFJDKCJWaWV3Iik7DQorICAgIGlmIChlVHlwZSA9PSBDUERGX09DQ29udGV4dDo6RGVzaWduKSB7DQorICAgICAgICBjc1N0YXRlID0gRlhfQlNUUkMoIkRlc2lnbiIpOw0KKyAgICB9IGVsc2UgaWYgKGVUeXBlID09IENQREZfT0NDb250ZXh0OjpQcmludCkgew0KKyAgICAgICAgY3NTdGF0ZSA9IEZYX0JTVFJDKCJQcmludCIpOw0KKyAgICB9IGVsc2UgaWYgKGVUeXBlID09IENQREZfT0NDb250ZXh0OjpFeHBvcnQpIHsNCisgICAgICAgIGNzU3RhdGUgPSBGWF9CU1RSQygiRXhwb3J0Iik7DQorICAgIH0NCisgICAgcmV0dXJuIGNzU3RhdGU7DQorfQ0KK0NQREZfT0NDb250ZXh0OjpDUERGX09DQ29udGV4dChDUERGX0RvY3VtZW50ICpwRG9jLCBVc2FnZVR5cGUgZVVzYWdlVHlwZSkNCit7DQorICAgIEZYU1lTX2Fzc2VydChwRG9jICE9IE5VTEwpOw0KKyAgICBtX3BEb2N1bWVudCA9IHBEb2M7DQorICAgIG1fZVVzYWdlVHlwZSA9IGVVc2FnZVR5cGU7DQorfQ0KK0NQREZfT0NDb250ZXh0Ojp+Q1BERl9PQ0NvbnRleHQoKQ0KK3sNCisgICAgbV9PQ0dTdGF0ZXMuUmVtb3ZlQWxsKCk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9PQ0NvbnRleHQ6OkxvYWRPQ0dTdGF0ZUZyb21Db25maWcoRlhfQlNUUiBjc0NvbmZpZywgY29uc3QgQ1BERl9EaWN0aW9uYXJ5ICpwT0NHRGljdCwgRlhfQk9PTCAmYlZhbGlkQ29uZmlnKSBjb25zdA0KK3sNCisgICAgQ1BERl9EaWN0aW9uYXJ5ICpwQ29uZmlnID0gRlBERkRPQ19PQ0dfR2V0Q29uZmlnKG1fcERvY3VtZW50LCBwT0NHRGljdCwgY3NDb25maWcpOw0KKyAgICBpZiAoIXBDb25maWcpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGJWYWxpZENvbmZpZyA9IFRSVUU7DQorICAgIEZYX0JPT0wgYlN0YXRlID0gcENvbmZpZy0+R2V0U3RyaW5nKEZYX0JTVFJDKCJCYXNlU3RhdGUiKSwgRlhfQlNUUkMoIk9OIikpICE9IEZYX0JTVFJDKCJPRkYiKTsNCisgICAgQ1BERl9BcnJheSAqcEFycmF5ID0gcENvbmZpZy0+R2V0QXJyYXkoRlhfQlNUUkMoIk9OIikpOw0KKyAgICBpZiAocEFycmF5KSB7DQorICAgICAgICBpZiAoRlBERkRPQ19PQ0dfRmluZEdyb3VwKHBBcnJheSwgcE9DR0RpY3QpID49IDApIHsNCisgICAgICAgICAgICBiU3RhdGUgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHBBcnJheSA9IHBDb25maWctPkdldEFycmF5KEZYX0JTVFJDKCJPRkYiKSk7DQorICAgIGlmIChwQXJyYXkpIHsNCisgICAgICAgIGlmIChGUERGRE9DX09DR19GaW5kR3JvdXAocEFycmF5LCBwT0NHRGljdCkgPj0gMCkgew0KKyAgICAgICAgICAgIGJTdGF0ZSA9IEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHBBcnJheSA9IHBDb25maWctPkdldEFycmF5KEZYX0JTVFJDKCJBUyIpKTsNCisgICAgaWYgKHBBcnJheSkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgY3NGaW5kID0gY3NDb25maWcgKyBGWF9CU1RSQygiU3RhdGUiKTsNCisgICAgICAgIEZYX0lOVDMyIGlDb3VudCA9IHBBcnJheS0+R2V0Q291bnQoKTsNCisgICAgICAgIGZvciAoRlhfSU5UMzIgaSA9IDA7IGkgPCBpQ291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkgKnBVc2FnZSA9IHBBcnJheS0+R2V0RGljdChpKTsNCisgICAgICAgICAgICBpZiAoIXBVc2FnZSkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBVc2FnZS0+R2V0U3RyaW5nKEZYX0JTVFJDKCJFdmVudCIpLCBGWF9CU1RSQygiVmlldyIpKSAhPSBjc0NvbmZpZykgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ1BERl9BcnJheSAqcE9DR3MgPSBwVXNhZ2UtPkdldEFycmF5KEZYX0JTVFJDKCJPQ0dzIikpOw0KKyAgICAgICAgICAgIGlmICghcE9DR3MpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChGUERGRE9DX09DR19GaW5kR3JvdXAocE9DR3MsIHBPQ0dEaWN0KSA8IDApIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSAqcFN0YXRlID0gcFVzYWdlLT5HZXREaWN0KGNzQ29uZmlnKTsNCisgICAgICAgICAgICBpZiAoIXBTdGF0ZSkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYlN0YXRlID0gcFN0YXRlLT5HZXRTdHJpbmcoY3NGaW5kKSAhPSBGWF9CU1RSQygiT0ZGIik7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGJTdGF0ZTsNCit9DQorRlhfQk9PTCBDUERGX09DQ29udGV4dDo6TG9hZE9DR1N0YXRlKGNvbnN0IENQREZfRGljdGlvbmFyeSAqcE9DR0RpY3QpIGNvbnN0DQorew0KKyAgICBpZiAoIUZQREZET0NfT0NHX0hhc0ludGVudChwT0NHRGljdCwgRlhfQlNUUkMoIlZpZXciKSwgRlhfQlNUUkMoIlZpZXciKSkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGNzU3RhdGUgPSBGUERGRE9DX09DR19HZXRVc2FnZVR5cGVTdHJpbmcobV9lVXNhZ2VUeXBlKTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5ICpwVXNhZ2UgPSBwT0NHRGljdC0+R2V0RGljdChGWF9CU1RSQygiVXNhZ2UiKSk7DQorICAgIGlmIChwVXNhZ2UpIHsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSAqcFN0YXRlID0gcFVzYWdlLT5HZXREaWN0KGNzU3RhdGUpOw0KKyAgICAgICAgaWYgKHBTdGF0ZSkgew0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGNzRmluZCA9IGNzU3RhdGUgKyBGWF9CU1RSQygiU3RhdGUiKTsNCisgICAgICAgICAgICBpZiAocFN0YXRlLT5LZXlFeGlzdChjc0ZpbmQpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwU3RhdGUtPkdldFN0cmluZyhjc0ZpbmQpICE9IEZYX0JTVFJDKCJPRkYiKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoY3NTdGF0ZSAhPSBGWF9CU1RSQygiVmlldyIpKSB7DQorICAgICAgICAgICAgcFN0YXRlID0gcFVzYWdlLT5HZXREaWN0KEZYX0JTVFJDKCJWaWV3IikpOw0KKyAgICAgICAgICAgIGlmIChwU3RhdGUgJiYgcFN0YXRlLT5LZXlFeGlzdChGWF9CU1RSQygiVmlld1N0YXRlIikpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwU3RhdGUtPkdldFN0cmluZyhGWF9CU1RSQygiVmlld1N0YXRlIikpICE9IEZYX0JTVFJDKCJPRkYiKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfQk9PTCBiRGVmVmFsaWQgPSBGQUxTRTsNCisgICAgcmV0dXJuIExvYWRPQ0dTdGF0ZUZyb21Db25maWcoY3NTdGF0ZSwgcE9DR0RpY3QsIGJEZWZWYWxpZCk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9PQ0NvbnRleHQ6OkdldE9DR1Zpc2libGUoY29uc3QgQ1BERl9EaWN0aW9uYXJ5ICpwT0NHRGljdCkNCit7DQorICAgIGlmICghcE9DR0RpY3QpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9MUFZPSUQgYlN0YXRlID0gTlVMTDsNCisgICAgaWYgKG1fT0NHU3RhdGVzLkxvb2t1cChwT0NHRGljdCwgYlN0YXRlKSkgew0KKyAgICAgICAgcmV0dXJuIChGWF9VSU5UUFRSKWJTdGF0ZSAhPSAwOw0KKyAgICB9DQorICAgIGJTdGF0ZSA9IChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpTG9hZE9DR1N0YXRlKHBPQ0dEaWN0KTsNCisgICAgbV9PQ0dTdGF0ZXMuU2V0QXQocE9DR0RpY3QsIGJTdGF0ZSk7DQorICAgIHJldHVybiAoRlhfVUlOVFBUUiliU3RhdGUgIT0gMDsNCit9DQorRlhfQk9PTCBDUERGX09DQ29udGV4dDo6R2V0T0NHVkUoQ1BERl9BcnJheSAqcEV4cHJlc3Npb24sIEZYX0JPT0wgYkZyb21Db25maWcsIGludCBuTGV2ZWwpDQorew0KKyAgICBpZiAobkxldmVsID4gMzIpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocEV4cHJlc3Npb24gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIGlDb3VudCA9IHBFeHByZXNzaW9uLT5HZXRDb3VudCgpOw0KKyAgICBDUERGX09iamVjdCAqcE9DR09iajsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NPcGVyYXRvciA9IHBFeHByZXNzaW9uLT5HZXRTdHJpbmcoMCk7DQorICAgIGlmIChjc09wZXJhdG9yID09IEZYX0JTVFJDKCJOb3QiKSkgew0KKyAgICAgICAgcE9DR09iaiA9IHBFeHByZXNzaW9uLT5HZXRFbGVtZW50VmFsdWUoMSk7DQorICAgICAgICBpZiAocE9DR09iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBPQ0dPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgIHJldHVybiAhKGJGcm9tQ29uZmlnID8gTG9hZE9DR1N0YXRlKChDUERGX0RpY3Rpb25hcnkqKXBPQ0dPYmopIDogR2V0T0NHVmlzaWJsZSgoQ1BERl9EaWN0aW9uYXJ5KilwT0NHT2JqKSk7DQorICAgICAgICB9IGVsc2UgaWYgKHBPQ0dPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICByZXR1cm4gIUdldE9DR1ZFKChDUERGX0FycmF5KilwT0NHT2JqLCBiRnJvbUNvbmZpZywgbkxldmVsICsgMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoY3NPcGVyYXRvciA9PSBGWF9CU1RSQygiT3IiKSB8fCBjc09wZXJhdG9yID09IEZYX0JTVFJDKCJBbmQiKSkgew0KKyAgICAgICAgRlhfQk9PTCBiVmFsdWUgPSBGQUxTRTsNCisgICAgICAgIGZvciAoRlhfSU5UMzIgaSA9IDE7IGkgPCBpQ291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICBwT0NHT2JqID0gcEV4cHJlc3Npb24tPkdldEVsZW1lbnRWYWx1ZSgxKTsNCisgICAgICAgICAgICBpZiAocE9DR09iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9CT09MIGJJdGVtID0gRkFMU0U7DQorICAgICAgICAgICAgaWYgKHBPQ0dPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgICAgICBiSXRlbSA9IGJGcm9tQ29uZmlnID8gTG9hZE9DR1N0YXRlKChDUERGX0RpY3Rpb25hcnkqKXBPQ0dPYmopIDogR2V0T0NHVmlzaWJsZSgoQ1BERl9EaWN0aW9uYXJ5KilwT0NHT2JqKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKHBPQ0dPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICAgICAgYkl0ZW0gPSBHZXRPQ0dWRSgoQ1BERl9BcnJheSopcE9DR09iaiwgYkZyb21Db25maWcsIG5MZXZlbCArIDEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaSA9PSAxKSB7DQorICAgICAgICAgICAgICAgIGJWYWx1ZSA9IGJJdGVtOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmIChjc09wZXJhdG9yID09IEZYX0JTVFJDKCJPciIpKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsdWUgPSBiVmFsdWUgfHwgYkl0ZW07DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsdWUgPSBiVmFsdWUgJiYgYkl0ZW07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gYlZhbHVlOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX09DQ29udGV4dDo6TG9hZE9DTURTdGF0ZShjb25zdCBDUERGX0RpY3Rpb25hcnkgKnBPQ01ERGljdCwgRlhfQk9PTCBiRnJvbUNvbmZpZykNCit7DQorICAgIEZYU1lTX2Fzc2VydChwT0NNRERpY3QgIT0gTlVMTCk7DQorICAgIENQREZfQXJyYXkgKnBWRSA9IHBPQ01ERGljdC0+R2V0QXJyYXkoRlhfQlNUUkMoIlZFIikpOw0KKyAgICBpZiAocFZFICE9IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBHZXRPQ0dWRShwVkUsIGJGcm9tQ29uZmlnKTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc1AgPSBwT0NNRERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiUCIpLCBGWF9CU1RSQygiQW55T24iKSk7DQorICAgIENQREZfT2JqZWN0ICpwT0NHT2JqID0gcE9DTUREaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIk9DR3MiKSk7DQorICAgIGlmIChwT0NHT2JqID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmIChwT0NHT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgIHJldHVybiBiRnJvbUNvbmZpZyA/IExvYWRPQ0dTdGF0ZSgoQ1BERl9EaWN0aW9uYXJ5KilwT0NHT2JqKSA6IEdldE9DR1Zpc2libGUoKENQREZfRGljdGlvbmFyeSopcE9DR09iaik7DQorICAgIH0NCisgICAgaWYgKHBPQ0dPYmotPkdldFR5cGUoKSAhPSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX0JPT0wgYlN0YXRlID0gRkFMU0U7DQorICAgIGlmIChjc1AgPT0gRlhfQlNUUkMoIkFsbE9uIikgfHwgY3NQID09IEZYX0JTVFJDKCJBbGxPZmYiKSkgew0KKyAgICAgICAgYlN0YXRlID0gVFJVRTsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBpQ291bnQgPSAoKENQREZfQXJyYXkqKXBPQ0dPYmopLT5HZXRDb3VudCgpOw0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgaUNvdW50OyBpICsrKSB7DQorICAgICAgICBGWF9CT09MIGJJdGVtID0gVFJVRTsNCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcEl0ZW1EaWN0ID0gKChDUERGX0FycmF5KilwT0NHT2JqKS0+R2V0RGljdChpKTsNCisgICAgICAgIGlmIChwSXRlbURpY3QpIHsNCisgICAgICAgICAgICBiSXRlbSA9IGJGcm9tQ29uZmlnID8gTG9hZE9DR1N0YXRlKHBJdGVtRGljdCkgOiBHZXRPQ0dWaXNpYmxlKHBJdGVtRGljdCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoY3NQID09IEZYX0JTVFJDKCJBbnlPbiIpICYmIGJJdGVtKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoY3NQID09IEZYX0JTVFJDKCJBbnlPZmYiKSAmJiAhYkl0ZW0pIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjc1AgPT0gRlhfQlNUUkMoIkFsbE9uIikgJiYgIWJJdGVtKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNzUCA9PSBGWF9CU1RSQygiQWxsT2ZmIikgJiYgYkl0ZW0pIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGJTdGF0ZTsNCit9DQorRlhfQk9PTCBDUERGX09DQ29udGV4dDo6Q2hlY2tPQ0dWaXNpYmxlKGNvbnN0IENQREZfRGljdGlvbmFyeSAqcE9DR0RpY3QpDQorew0KKyAgICBpZiAocE9DR0RpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NUeXBlID0gcE9DR0RpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiVHlwZSIpLCBGWF9CU1RSQygiT0NHIikpOw0KKyAgICBpZiAoY3NUeXBlID09IEZYX0JTVFJDKCJPQ0ciKSkgew0KKyAgICAgICAgcmV0dXJuIEdldE9DR1Zpc2libGUocE9DR0RpY3QpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIExvYWRPQ01EU3RhdGUocE9DR0RpY3QsIEZBTFNFKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfT0NDb250ZXh0OjpSZXNldE9DQ29udGV4dCgpDQorew0KKyAgICBtX09DR1N0YXRlcy5SZW1vdmVBbGwoKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmRvYy9kb2NfdGFnZ2VkLmNwcCBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX3RhZ2dlZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVhZThkNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX3RhZ2dlZC5jcHAKQEAgLTAsMCArMSw0NDggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYXJzZXIuaCINCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZS5oIg0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZkb2MvZnBkZl90YWdnZWQuaCINCisjaW5jbHVkZSAidGFnZ2VkX2ludC5oIg0KK2NvbnN0IGludCBuTWF4UmVjdXJzaW9uID0gMzI7DQorc3RhdGljIEZYX0JPT0wgSXNUYWdnZWQoY29uc3QgQ1BERl9Eb2N1bWVudCogcERvYykNCit7DQorICAgIENQREZfRGljdGlvbmFyeSogcENhdGFsb2cgPSBwRG9jLT5HZXRSb290KCk7DQorICAgIENQREZfRGljdGlvbmFyeSogcE1hcmtJbmZvID0gcENhdGFsb2ctPkdldERpY3QoRlhfQlNUUkMoIk1hcmtJbmZvIikpOw0KKyAgICByZXR1cm4gcE1hcmtJbmZvICE9IE5VTEwgJiYgcE1hcmtJbmZvLT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJNYXJrZWQiKSk7DQorfQ0KK0NQREZfU3RydWN0VHJlZSogQ1BERl9TdHJ1Y3RUcmVlOjpMb2FkUGFnZShjb25zdCBDUERGX0RvY3VtZW50KiBwRG9jLCBjb25zdCBDUERGX0RpY3Rpb25hcnkqIHBQYWdlRGljdCkNCit7DQorICAgIGlmICghSXNUYWdnZWQocERvYykpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfU3RydWN0VHJlZUltcGwqIHBUcmVlID0gRlhfTkVXIENQREZfU3RydWN0VHJlZUltcGwocERvYyk7DQorICAgIGlmIChwVHJlZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwVHJlZS0+TG9hZFBhZ2VUcmVlKHBQYWdlRGljdCk7DQorICAgIHJldHVybiBwVHJlZTsNCit9DQorQ1BERl9TdHJ1Y3RUcmVlKiBDUERGX1N0cnVjdFRyZWU6OkxvYWREb2MoY29uc3QgQ1BERl9Eb2N1bWVudCogcERvYykNCit7DQorICAgIGlmICghSXNUYWdnZWQocERvYykpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfU3RydWN0VHJlZUltcGwqIHBUcmVlID0gRlhfTkVXIENQREZfU3RydWN0VHJlZUltcGwocERvYyk7DQorICAgIGlmIChwVHJlZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwVHJlZS0+TG9hZERvY1RyZWUoKTsNCisgICAgcmV0dXJuIHBUcmVlOw0KK30NCitDUERGX1N0cnVjdFRyZWVJbXBsOjpDUERGX1N0cnVjdFRyZWVJbXBsKGNvbnN0IENQREZfRG9jdW1lbnQqIHBEb2MpDQorew0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBDYXRhbG9nID0gcERvYy0+R2V0Um9vdCgpOw0KKyAgICBtX3BUcmVlUm9vdCA9IHBDYXRhbG9nLT5HZXREaWN0KEZYX0JTVFJDKCJTdHJ1Y3RUcmVlUm9vdCIpKTsNCisgICAgaWYgKG1fcFRyZWVSb290ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BSb2xlTWFwID0gbV9wVHJlZVJvb3QtPkdldERpY3QoRlhfQlNUUkMoIlJvbGVNYXAiKSk7DQorfQ0KK0NQREZfU3RydWN0VHJlZUltcGw6On5DUERGX1N0cnVjdFRyZWVJbXBsKCkNCit7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9LaWRzLkdldFNpemUoKTsgaSArKykNCisgICAgICAgIGlmIChtX0tpZHNbaV0pIHsNCisgICAgICAgICAgICBtX0tpZHNbaV0tPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCit9DQordm9pZCBDUERGX1N0cnVjdFRyZWVJbXBsOjpMb2FkRG9jVHJlZSgpDQorew0KKyAgICBtX3BQYWdlID0gTlVMTDsNCisgICAgaWYgKG1fcFRyZWVSb290ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcEtpZHMgPSBtX3BUcmVlUm9vdC0+R2V0RWxlbWVudFZhbHVlKEZYX0JTVFJDKCJLIikpOw0KKyAgICBpZiAocEtpZHMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChwS2lkcy0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICBDUERGX1N0cnVjdEVsZW1lbnRJbXBsKiBwU3RydWN0RWxlbWVudEltcGwgPSBGWF9ORVcgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbCh0aGlzLCBOVUxMLCAoQ1BERl9EaWN0aW9uYXJ5KilwS2lkcyk7DQorICAgICAgICBpZiAocFN0cnVjdEVsZW1lbnRJbXBsID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBtX0tpZHMuQWRkKHBTdHJ1Y3RFbGVtZW50SW1wbCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBLaWRzLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9BcnJheSogcEFycmF5ID0gKENQREZfQXJyYXkqKXBLaWRzOw0KKyAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcEFycmF5LT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBLaWQgPSBwQXJyYXktPkdldERpY3QoaSk7DQorICAgICAgICBDUERGX1N0cnVjdEVsZW1lbnRJbXBsKiBwU3RydWN0RWxlbWVudEltcGwgPSBGWF9ORVcgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbCh0aGlzLCBOVUxMLCBwS2lkKTsNCisgICAgICAgIGlmIChwU3RydWN0RWxlbWVudEltcGwgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIG1fS2lkcy5BZGQocFN0cnVjdEVsZW1lbnRJbXBsKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfU3RydWN0VHJlZUltcGw6OkxvYWRQYWdlVHJlZShjb25zdCBDUERGX0RpY3Rpb25hcnkqIHBQYWdlRGljdCkNCit7DQorICAgIG1fcFBhZ2UgPSBwUGFnZURpY3Q7DQorICAgIGlmIChtX3BUcmVlUm9vdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9PYmplY3QqIHBLaWRzID0gbV9wVHJlZVJvb3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiSyIpKTsNCisgICAgaWYgKHBLaWRzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBkd0tpZHMgPSAwOw0KKyAgICBpZiAocEtpZHMtPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgZHdLaWRzID0gMTsNCisgICAgfSBlbHNlIGlmIChwS2lkcy0+R2V0VHlwZSgpID09IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgZHdLaWRzID0gKChDUERGX0FycmF5KilwS2lkcyktPkdldENvdW50KCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfRFdPUkQgaTsNCisgICAgbV9LaWRzLlNldFNpemUoZHdLaWRzKTsNCisgICAgZm9yIChpID0gMDsgaSA8IGR3S2lkczsgaSArKykgew0KKyAgICAgICAgbV9LaWRzW2ldID0gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfTWFwUHRyVG9QdHIgZWxlbWVudF9tYXA7DQorICAgIENQREZfRGljdGlvbmFyeSogcFBhcmVudFRyZWUgPSBtX3BUcmVlUm9vdC0+R2V0RGljdChGWF9CU1RSQygiUGFyZW50VHJlZSIpKTsNCisgICAgaWYgKHBQYXJlbnRUcmVlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX051bWJlclRyZWUgcGFyZW50X3RyZWUocFBhcmVudFRyZWUpOw0KKyAgICBpbnQgcGFyZW50c19pZCA9IHBQYWdlRGljdC0+R2V0SW50ZWdlcihGWF9CU1RSQygiU3RydWN0UGFyZW50cyIpLCAtMSk7DQorICAgIGlmIChwYXJlbnRzX2lkID49IDApIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwUGFyZW50cyA9IHBhcmVudF90cmVlLkxvb2t1cFZhbHVlKHBhcmVudHNfaWQpOw0KKyAgICAgICAgaWYgKHBQYXJlbnRzID09IE5VTEwgfHwgcFBhcmVudHMtPkdldFR5cGUoKSAhPSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBDUERGX0FycmF5KiBwUGFyZW50QXJyYXkgPSAoQ1BERl9BcnJheSopcFBhcmVudHM7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcFBhcmVudEFycmF5LT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwUGFyZW50ID0gcFBhcmVudEFycmF5LT5HZXREaWN0KGkpOw0KKyAgICAgICAgICAgIGlmIChwUGFyZW50ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEFkZFBhZ2VOb2RlKHBQYXJlbnQsIGVsZW1lbnRfbWFwKTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDUERGX1N0cnVjdEVsZW1lbnRJbXBsKiBDUERGX1N0cnVjdFRyZWVJbXBsOjpBZGRQYWdlTm9kZShDUERGX0RpY3Rpb25hcnkqIHBEaWN0LCBDRlhfTWFwUHRyVG9QdHImIG1hcCwgaW50IG5MZXZlbCkNCit7DQorICAgIGlmIChuTGV2ZWwgPiBuTWF4UmVjdXJzaW9uKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX1N0cnVjdEVsZW1lbnRJbXBsKiBwRWxlbWVudCA9IE5VTEw7DQorICAgIGlmIChtYXAuTG9va3VwKHBEaWN0LCAoRlhfTFBWT0lEJilwRWxlbWVudCkpIHsNCisgICAgICAgIHJldHVybiBwRWxlbWVudDsNCisgICAgfQ0KKyAgICBwRWxlbWVudCA9IEZYX05FVyBDUERGX1N0cnVjdEVsZW1lbnRJbXBsKHRoaXMsIE5VTEwsIHBEaWN0KTsNCisgICAgaWYgKHBFbGVtZW50ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIG1hcC5TZXRBdChwRGljdCwgcEVsZW1lbnQpOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBQYXJlbnQgPSBwRGljdC0+R2V0RGljdChGWF9CU1RSQygiUCIpKTsNCisgICAgaWYgKHBQYXJlbnQgPT0gTlVMTCB8fCBwUGFyZW50LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlR5cGUiKSkgPT0gRlhfQlNUUkMoIlN0cnVjdFRyZWVSb290IikpIHsNCisgICAgICAgIGlmICghQWRkVG9wTGV2ZWxOb2RlKHBEaWN0LCBwRWxlbWVudCkpIHsNCisgICAgICAgICAgICBwRWxlbWVudC0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgIG1hcC5SZW1vdmVLZXkocERpY3QpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbCogcFBhcmVudEVsZW1lbnQgPSBBZGRQYWdlTm9kZShwUGFyZW50LCBtYXAsIG5MZXZlbCArIDEpOw0KKyAgICAgICAgRlhfQk9PTCBiU2F2ZSA9IEZBTFNFOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwUGFyZW50RWxlbWVudC0+bV9LaWRzLkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgICAgIGlmIChwUGFyZW50RWxlbWVudC0+bV9LaWRzW2ldLm1fVHlwZSAhPSBDUERGX1N0cnVjdEtpZDo6RWxlbWVudCkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBQYXJlbnRFbGVtZW50LT5tX0tpZHNbaV0ubV9FbGVtZW50Lm1fcERpY3QgIT0gcERpY3QpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBQYXJlbnRFbGVtZW50LT5tX0tpZHNbaV0ubV9FbGVtZW50Lm1fcEVsZW1lbnQgPSBwRWxlbWVudC0+UmV0YWluKCk7DQorICAgICAgICAgICAgYlNhdmUgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFiU2F2ZSkgew0KKyAgICAgICAgICAgIHBFbGVtZW50LT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgbWFwLlJlbW92ZUtleShwRGljdCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHBFbGVtZW50Ow0KK30NCitGWF9CT09MIENQREZfU3RydWN0VHJlZUltcGw6OkFkZFRvcExldmVsTm9kZShDUERGX0RpY3Rpb25hcnkqIHBEaWN0LCBDUERGX1N0cnVjdEVsZW1lbnRJbXBsKiBwRWxlbWVudCkNCit7DQorICAgIENQREZfT2JqZWN0ICpwT2JqID0gbV9wVHJlZVJvb3QtPkdldEVsZW1lbnRWYWx1ZShGWF9CU1RSQygiSyIpKTsNCisgICAgaWYgKCFwT2JqKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgaWYgKHBPYmotPkdldE9iak51bSgpID09IHBEaWN0LT5HZXRPYmpOdW0oKSkgew0KKyAgICAgICAgICAgIGlmIChtX0tpZHNbMF0pIHsNCisgICAgICAgICAgICAgICAgbV9LaWRzWzBdLT5SZWxlYXNlKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fS2lkc1swXSA9IHBFbGVtZW50LT5SZXRhaW4oKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICBDUERGX0FycmF5KiBwVG9wS2lkcyA9IChDUERGX0FycmF5KilwT2JqOw0KKyAgICAgICAgRlhfRFdPUkQgaTsNCisgICAgICAgIEZYX0JPT0wgYlNhdmUgPSBGQUxTRTsNCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwVG9wS2lkcy0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgICAgIENQREZfUmVmZXJlbmNlKiBwS2lkUmVmID0gKENQREZfUmVmZXJlbmNlKilwVG9wS2lkcy0+R2V0RWxlbWVudChpKTsNCisgICAgICAgICAgICBpZiAocEtpZFJlZi0+R2V0VHlwZSgpICE9IFBERk9CSl9SRUZFUkVOQ0UgfHwgcEtpZFJlZi0+R2V0UmVmT2JqTnVtKCkgIT0gcERpY3QtPkdldE9iak51bSgpKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9LaWRzW2ldKSB7DQorICAgICAgICAgICAgICAgIG1fS2lkc1tpXS0+UmVsZWFzZSgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX0tpZHNbaV0gPSBwRWxlbWVudC0+UmV0YWluKCk7DQorICAgICAgICAgICAgYlNhdmUgPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFiU2F2ZSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbDo6Q1BERl9TdHJ1Y3RFbGVtZW50SW1wbChDUERGX1N0cnVjdFRyZWVJbXBsKiBwVHJlZSwgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbCogcFBhcmVudCwgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCkNCisgICAgOiBtX1JlZkNvdW50KDApDQorew0KKyAgICBtX3BUcmVlID0gcFRyZWU7DQorICAgIG1fcERpY3QgPSBwRGljdDsNCisgICAgbV9UeXBlID0gcERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiUyIpKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgbWFwcGVkID0gcFRyZWUtPm1fcFJvbGVNYXAtPkdldFN0cmluZyhtX1R5cGUpOw0KKyAgICBpZiAoIW1hcHBlZC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIG1fVHlwZSA9IG1hcHBlZDsNCisgICAgfQ0KKyAgICBtX3BQYXJlbnQgPSBwUGFyZW50Ow0KKyAgICBMb2FkS2lkcyhwRGljdCk7DQorfQ0KK0NQREZfU3RydWN0RWxlbWVudEltcGw6On5DUERGX1N0cnVjdEVsZW1lbnRJbXBsKCkNCit7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9LaWRzLkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgaWYgKG1fS2lkc1tpXS5tX1R5cGUgPT0gQ1BERl9TdHJ1Y3RLaWQ6OkVsZW1lbnQgJiYgbV9LaWRzW2ldLm1fRWxlbWVudC5tX3BFbGVtZW50KSB7DQorICAgICAgICAgICAgKChDUERGX1N0cnVjdEVsZW1lbnRJbXBsKiltX0tpZHNbaV0ubV9FbGVtZW50Lm1fcEVsZW1lbnQpLT5SZWxlYXNlKCk7DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbCogQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbDo6UmV0YWluKCkNCit7DQorICAgIG1fUmVmQ291bnQrKzsNCisgICAgcmV0dXJuIHRoaXM7DQorfQ0KK3ZvaWQgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbDo6UmVsZWFzZSgpDQorew0KKyAgICBpZigtLW1fUmVmQ291bnQgPCAxKSB7DQorICAgICAgICBkZWxldGUgdGhpczsNCisgICAgfQ0KK30NCit2b2lkIENQREZfU3RydWN0RWxlbWVudEltcGw6OkxvYWRLaWRzKENQREZfRGljdGlvbmFyeSogcERpY3QpDQorew0KKyAgICBDUERGX09iamVjdCogcE9iaiA9IHBEaWN0LT5HZXRFbGVtZW50KEZYX0JTVFJDKCJQZyIpKTsNCisgICAgRlhfRFdPUkQgUGFnZU9iak51bSA9IDA7DQorICAgIGlmIChwT2JqICYmIHBPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfUkVGRVJFTkNFKSB7DQorICAgICAgICBQYWdlT2JqTnVtID0gKChDUERGX1JlZmVyZW5jZSopcE9iaiktPkdldFJlZk9iak51bSgpOw0KKyAgICB9DQorICAgIENQREZfT2JqZWN0KiBwS2lkcyA9IHBEaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIksiKSk7DQorICAgIGlmIChwS2lkcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBLaWRzLT5HZXRUeXBlKCkgPT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICBDUERGX0FycmF5KiBwQXJyYXkgPSAoQ1BERl9BcnJheSopcEtpZHM7DQorICAgICAgICBtX0tpZHMuU2V0U2l6ZShwQXJyYXktPkdldENvdW50KCkpOw0KKyAgICAgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IHBBcnJheS0+R2V0Q291bnQoKTsgaSArKykgew0KKyAgICAgICAgICAgIENQREZfT2JqZWN0KiBwS2lkID0gcEFycmF5LT5HZXRFbGVtZW50VmFsdWUoaSk7DQorICAgICAgICAgICAgTG9hZEtpZChQYWdlT2JqTnVtLCBwS2lkLCAmbV9LaWRzW2ldKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fS2lkcy5TZXRTaXplKDEpOw0KKyAgICAgICAgTG9hZEtpZChQYWdlT2JqTnVtLCBwS2lkcywgJm1fS2lkc1swXSk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1N0cnVjdEVsZW1lbnRJbXBsOjpMb2FkS2lkKEZYX0RXT1JEIFBhZ2VPYmpOdW0sIENQREZfT2JqZWN0KiBwS2lkT2JqLCBDUERGX1N0cnVjdEtpZCogcEtpZCkNCit7DQorICAgIHBLaWQtPm1fVHlwZSA9IENQREZfU3RydWN0S2lkOjpJbnZhbGlkOw0KKyAgICBpZiAocEtpZE9iaiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBLaWRPYmotPkdldFR5cGUoKSA9PSBQREZPQkpfTlVNQkVSKSB7DQorICAgICAgICBpZiAobV9wVHJlZS0+bV9wUGFnZSAmJiBtX3BUcmVlLT5tX3BQYWdlLT5HZXRPYmpOdW0oKSAhPSBQYWdlT2JqTnVtKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEtpZC0+bV9UeXBlID0gQ1BERl9TdHJ1Y3RLaWQ6OlBhZ2VDb250ZW50Ow0KKyAgICAgICAgcEtpZC0+bV9QYWdlQ29udGVudC5tX0NvbnRlbnRJZCA9IHBLaWRPYmotPkdldEludGVnZXIoKTsNCisgICAgICAgIHBLaWQtPm1fUGFnZUNvbnRlbnQubV9QYWdlT2JqTnVtID0gUGFnZU9iak51bTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAocEtpZE9iai0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwS2lkRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKXBLaWRPYmo7DQorICAgIENQREZfT2JqZWN0KiBwUGFnZU9iaiA9IHBLaWREaWN0LT5HZXRFbGVtZW50KEZYX0JTVFJDKCJQZyIpKTsNCisgICAgaWYgKHBQYWdlT2JqICYmIHBQYWdlT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgUGFnZU9iak51bSA9ICgoQ1BERl9SZWZlcmVuY2UqKXBQYWdlT2JqKS0+R2V0UmVmT2JqTnVtKCk7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgdHlwZSA9IHBLaWREaWN0LT5HZXRTdHJpbmcoRlhfQlNUUkMoIlR5cGUiKSk7DQorICAgIGlmICh0eXBlID09IEZYX0JTVFJDKCJNQ1IiKSkgew0KKyAgICAgICAgaWYgKG1fcFRyZWUtPm1fcFBhZ2UgJiYgbV9wVHJlZS0+bV9wUGFnZS0+R2V0T2JqTnVtKCkgIT0gUGFnZU9iak51bSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHBLaWQtPm1fVHlwZSA9IENQREZfU3RydWN0S2lkOjpTdHJlYW1Db250ZW50Ow0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBTdHJlYW1PYmogPSBwS2lkRGljdC0+R2V0RWxlbWVudChGWF9CU1RSQygiU3RtIikpOw0KKyAgICAgICAgaWYgKHBTdHJlYW1PYmogJiYgcFN0cmVhbU9iai0+R2V0VHlwZSgpID09IFBERk9CSl9SRUZFUkVOQ0UpIHsNCisgICAgICAgICAgICBwS2lkLT5tX1N0cmVhbUNvbnRlbnQubV9SZWZPYmpOdW0gPSAoKENQREZfUmVmZXJlbmNlKilwU3RyZWFtT2JqKS0+R2V0UmVmT2JqTnVtKCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBLaWQtPm1fU3RyZWFtQ29udGVudC5tX1JlZk9iak51bSA9IDA7DQorICAgICAgICB9DQorICAgICAgICBwS2lkLT5tX1N0cmVhbUNvbnRlbnQubV9QYWdlT2JqTnVtID0gUGFnZU9iak51bTsNCisgICAgICAgIHBLaWQtPm1fU3RyZWFtQ29udGVudC5tX0NvbnRlbnRJZCA9IHBLaWREaWN0LT5HZXRJbnRlZ2VyKEZYX0JTVFJDKCJNQ0lEIikpOw0KKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gRlhfQlNUUkMoIk9CSlIiKSkgew0KKyAgICAgICAgaWYgKG1fcFRyZWUtPm1fcFBhZ2UgJiYgbV9wVHJlZS0+bV9wUGFnZS0+R2V0T2JqTnVtKCkgIT0gUGFnZU9iak51bSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHBLaWQtPm1fVHlwZSA9IENQREZfU3RydWN0S2lkOjpPYmplY3Q7DQorICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IHBLaWREaWN0LT5HZXRFbGVtZW50KEZYX0JTVFJDKCJPYmoiKSk7DQorICAgICAgICBpZiAocE9iaiAmJiBwT2JqLT5HZXRUeXBlKCkgPT0gUERGT0JKX1JFRkVSRU5DRSkgew0KKyAgICAgICAgICAgIHBLaWQtPm1fT2JqZWN0Lm1fUmVmT2JqTnVtID0gKChDUERGX1JlZmVyZW5jZSopcE9iaiktPkdldFJlZk9iak51bSgpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwS2lkLT5tX09iamVjdC5tX1JlZk9iak51bSA9IDA7DQorICAgICAgICB9DQorICAgICAgICBwS2lkLT5tX09iamVjdC5tX1BhZ2VPYmpOdW0gPSBQYWdlT2JqTnVtOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcEtpZC0+bV9UeXBlID0gQ1BERl9TdHJ1Y3RLaWQ6OkVsZW1lbnQ7DQorICAgICAgICBwS2lkLT5tX0VsZW1lbnQubV9wRGljdCA9IHBLaWREaWN0Ow0KKyAgICAgICAgaWYgKG1fcFRyZWUtPm1fcFBhZ2UgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHBLaWQtPm1fRWxlbWVudC5tX3BFbGVtZW50ID0gRlhfTkVXIENQREZfU3RydWN0RWxlbWVudEltcGwobV9wVHJlZSwgdGhpcywgcEtpZERpY3QpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwS2lkLT5tX0VsZW1lbnQubV9wRWxlbWVudCA9IE5VTEw7DQorICAgICAgICB9DQorICAgIH0NCit9DQorc3RhdGljIENQREZfRGljdGlvbmFyeSogRmluZEF0dHJEaWN0KENQREZfT2JqZWN0KiBwQXR0cnMsIEZYX0JTVFIgb3duZXIsIEZYX0ZMT0FUIG5MZXZlbCA9IDAuMEYpDQorew0KKyAgICBpZiAobkxldmVsID4gbk1heFJlY3Vyc2lvbikgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBBdHRycyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gTlVMTDsNCisgICAgaWYgKHBBdHRycy0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICBwRGljdCA9IChDUERGX0RpY3Rpb25hcnkqKXBBdHRyczsNCisgICAgfSBlbHNlIGlmIChwQXR0cnMtPkdldFR5cGUoKSA9PSBQREZPQkpfU1RSRUFNKSB7DQorICAgICAgICBwRGljdCA9ICgoQ1BERl9TdHJlYW0qKXBBdHRycyktPkdldERpY3QoKTsNCisgICAgfSBlbHNlIGlmIChwQXR0cnMtPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwQXR0cnM7DQorICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgcEFycmF5LT5HZXRDb3VudCgpOyBpICsrKSB7DQorICAgICAgICAgICAgQ1BERl9PYmplY3QqIHBFbGVtZW50ID0gcEFycmF5LT5HZXRFbGVtZW50VmFsdWUoaSk7DQorICAgICAgICAgICAgcERpY3QgPSBGaW5kQXR0ckRpY3QocEVsZW1lbnQsIG93bmVyLCBuTGV2ZWwgKyAxKTsNCisgICAgICAgICAgICBpZiAocERpY3QpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBEaWN0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAocERpY3QgJiYgcERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiTyIpKSA9PSBvd25lcikgew0KKyAgICAgICAgcmV0dXJuIHBEaWN0Ow0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX09iamVjdCogQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbDo6R2V0QXR0cihGWF9CU1RSIG93bmVyLCBGWF9CU1RSIG5hbWUsIEZYX0JPT0wgYkluaGVyaXRhYmxlLCBGWF9GTE9BVCBmTGV2ZWwpDQorew0KKyAgICBpZiAoZkxldmVsID4gbk1heFJlY3Vyc2lvbikgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKGJJbmhlcml0YWJsZSkgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBBdHRyID0gR2V0QXR0cihvd25lciwgbmFtZSwgRkFMU0UpOw0KKyAgICAgICAgaWYgKHBBdHRyKSB7DQorICAgICAgICAgICAgcmV0dXJuIHBBdHRyOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fcFBhcmVudCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gbV9wUGFyZW50LT5HZXRBdHRyKG93bmVyLCBuYW1lLCBUUlVFLCBmTGV2ZWwgKyAxKTsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcEEgPSBtX3BEaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkEiKSk7DQorICAgIGlmIChwQSkgew0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwQXR0ckRpY3QgPSBGaW5kQXR0ckRpY3QocEEsIG93bmVyKTsNCisgICAgICAgIGlmIChwQXR0ckRpY3QpIHsNCisgICAgICAgICAgICBDUERGX09iamVjdCogcEF0dHIgPSBwQXR0ckRpY3QtPkdldEVsZW1lbnRWYWx1ZShuYW1lKTsNCisgICAgICAgICAgICBpZiAocEF0dHIpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBBdHRyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcEMgPSBtX3BEaWN0LT5HZXRFbGVtZW50VmFsdWUoRlhfQlNUUkMoIkMiKSk7DQorICAgIGlmIChwQyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBDbGFzc01hcCA9IG1fcFRyZWUtPm1fcFRyZWVSb290LT5HZXREaWN0KEZYX0JTVFJDKCJDbGFzc01hcCIpKTsNCisgICAgaWYgKHBDbGFzc01hcCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAocEMtPkdldFR5cGUoKSA9PSBQREZPQkpfQVJSQVkpIHsNCisgICAgICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwQzsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwQXJyYXktPkdldENvdW50KCk7IGkgKyspIHsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBjbGFzc19uYW1lID0gcEFycmF5LT5HZXRTdHJpbmcoaSk7DQorICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwQ2xhc3NEaWN0ID0gcENsYXNzTWFwLT5HZXREaWN0KGNsYXNzX25hbWUpOw0KKyAgICAgICAgICAgIGlmIChwQ2xhc3NEaWN0ICYmIHBDbGFzc0RpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiTyIpKSA9PSBvd25lcikgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcENsYXNzRGljdC0+R2V0RWxlbWVudFZhbHVlKG5hbWUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGNsYXNzX25hbWUgPSBwQy0+R2V0U3RyaW5nKCk7DQorICAgIENQREZfRGljdGlvbmFyeSogcENsYXNzRGljdCA9IHBDbGFzc01hcC0+R2V0RGljdChjbGFzc19uYW1lKTsNCisgICAgaWYgKHBDbGFzc0RpY3QgJiYgcENsYXNzRGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJPIikpID09IG93bmVyKSB7DQorICAgICAgICByZXR1cm4gcENsYXNzRGljdC0+R2V0RWxlbWVudFZhbHVlKG5hbWUpOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX09iamVjdCogQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbDo6R2V0QXR0cihGWF9CU1RSIG93bmVyLCBGWF9CU1RSIG5hbWUsIEZYX0JPT0wgYkluaGVyaXRhYmxlLCBpbnQgc3ViaW5kZXgpDQorew0KKyAgICBDUERGX09iamVjdCogcEF0dHIgPSBHZXRBdHRyKG93bmVyLCBuYW1lLCBiSW5oZXJpdGFibGUpOw0KKyAgICBpZiAocEF0dHIgPT0gTlVMTCB8fCBzdWJpbmRleCA9PSAtMSB8fCBwQXR0ci0+R2V0VHlwZSgpICE9IFBERk9CSl9BUlJBWSkgew0KKyAgICAgICAgcmV0dXJuIHBBdHRyOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBBcnJheSA9IChDUERGX0FycmF5KilwQXR0cjsNCisgICAgaWYgKHN1YmluZGV4ID49IChpbnQpcEFycmF5LT5HZXRDb3VudCgpKSB7DQorICAgICAgICByZXR1cm4gcEF0dHI7DQorICAgIH0NCisgICAgcmV0dXJuIHBBcnJheS0+R2V0RWxlbWVudFZhbHVlKHN1YmluZGV4KTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbDo6R2V0TmFtZShGWF9CU1RSIG93bmVyLCBGWF9CU1RSIG5hbWUsIEZYX0JTVFIgZGVmYXVsdF92YWx1ZSwgRlhfQk9PTCBiSW5oZXJpdGFibGUsIGludCBzdWJpbmRleCkNCit7DQorICAgIENQREZfT2JqZWN0KiBwQXR0ciA9IEdldEF0dHIob3duZXIsIG5hbWUsIGJJbmhlcml0YWJsZSwgc3ViaW5kZXgpOw0KKyAgICBpZiAocEF0dHIgPT0gTlVMTCB8fCBwQXR0ci0+R2V0VHlwZSgpICE9IFBERk9CSl9OQU1FKSB7DQorICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsNCisgICAgfQ0KKyAgICByZXR1cm4gcEF0dHItPkdldFN0cmluZygpOw0KK30NCitGWF9BUkdCCUNQREZfU3RydWN0RWxlbWVudEltcGw6OkdldENvbG9yKEZYX0JTVFIgb3duZXIsIEZYX0JTVFIgbmFtZSwgRlhfQVJHQiBkZWZhdWx0X3ZhbHVlLCBGWF9CT09MIGJJbmhlcml0YWJsZSwgaW50IHN1YmluZGV4KQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBBdHRyID0gR2V0QXR0cihvd25lciwgbmFtZSwgYkluaGVyaXRhYmxlLCBzdWJpbmRleCk7DQorICAgIGlmIChwQXR0ciA9PSBOVUxMIHx8IHBBdHRyLT5HZXRUeXBlKCkgIT0gUERGT0JKX0FSUkFZKSB7DQorICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsNCisgICAgfQ0KKyAgICBDUERGX0FycmF5KiBwQXJyYXkgPSAoQ1BERl9BcnJheSopcEF0dHI7DQorICAgIHJldHVybiAweGZmMDAwMDAwIHwgKChpbnQpKHBBcnJheS0+R2V0TnVtYmVyKDApICogMjU1KSA8PCAxNikgfCAoKGludCkocEFycmF5LT5HZXROdW1iZXIoMSkgKiAyNTUpIDw8IDgpIHwgKGludCkocEFycmF5LT5HZXROdW1iZXIoMikgKiAyNTUpOw0KK30NCitGWF9GTE9BVCBDUERGX1N0cnVjdEVsZW1lbnRJbXBsOjpHZXROdW1iZXIoRlhfQlNUUiBvd25lciwgRlhfQlNUUiBuYW1lLCBGWF9GTE9BVCBkZWZhdWx0X3ZhbHVlLCBGWF9CT09MIGJJbmhlcml0YWJsZSwgaW50IHN1YmluZGV4KQ0KK3sNCisgICAgQ1BERl9PYmplY3QqIHBBdHRyID0gR2V0QXR0cihvd25lciwgbmFtZSwgYkluaGVyaXRhYmxlLCBzdWJpbmRleCk7DQorICAgIGlmIChwQXR0ciA9PSBOVUxMIHx8IHBBdHRyLT5HZXRUeXBlKCkgIT0gUERGT0JKX05VTUJFUikgew0KKyAgICAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7DQorICAgIH0NCisgICAgcmV0dXJuIHBBdHRyLT5HZXROdW1iZXIoKTsNCit9DQoraW50CUNQREZfU3RydWN0RWxlbWVudEltcGw6OkdldEludGVnZXIoRlhfQlNUUiBvd25lciwgRlhfQlNUUiBuYW1lLCBpbnQgZGVmYXVsdF92YWx1ZSwgRlhfQk9PTCBiSW5oZXJpdGFibGUsIGludCBzdWJpbmRleCkNCit7DQorICAgIENQREZfT2JqZWN0KiBwQXR0ciA9IEdldEF0dHIob3duZXIsIG5hbWUsIGJJbmhlcml0YWJsZSwgc3ViaW5kZXgpOw0KKyAgICBpZiAocEF0dHIgPT0gTlVMTCB8fCBwQXR0ci0+R2V0VHlwZSgpICE9IFBERk9CSl9OVU1CRVIpIHsNCisgICAgICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlOw0KKyAgICB9DQorICAgIHJldHVybiBwQXR0ci0+R2V0SW50ZWdlcigpOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmZG9jL2RvY191dGlscy5jcHAgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY191dGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ4MTU5NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX3V0aWxzLmNwcApAQCAtMCwwICsxLDc0OSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmRvYy9mcGRmX2RvYy5oIg0KK3N0YXRpYyBjb25zdCBpbnQgRlBERkRPQ19VVElMU19NQVhSRUNVUlNJT04gPSAzMjsNCitDRlhfV2lkZVN0cmluZwlHZXRGdWxsTmFtZShDUERGX0RpY3Rpb25hcnkqIHBGaWVsZERpY3QpOw0KK3ZvaWQJCQlJbml0SW50ZXJGb3JtRGljdChDUERGX0RpY3Rpb25hcnkqJiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCk7DQorRlhfRFdPUkQJCUNvdW50SW50ZXJGb3JtRm9udHMoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QpOw0KK0NQREZfRm9udCoJCUdldEludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgRlhfRFdPUkQgaW5kZXgsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpOw0KK0NQREZfRm9udCoJCUdldEludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgQ0ZYX0J5dGVTdHJpbmcgY3NOYW1lVGFnKTsNCitDUERGX0ZvbnQqCQlHZXRJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENGWF9CeXRlU3RyaW5nIGNzRm9udE5hbWUsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpOw0KK0NQREZfRm9udCoJCUdldE5hdGl2ZUludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgRlhfQllURSBjaGFyU2V0LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCitDUERGX0ZvbnQqCQlHZXROYXRpdmVJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpOw0KK0ZYX0JPT0wJCQlGaW5kSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCwgY29uc3QgQ1BERl9Gb250KiBwRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQorRlhfQk9PTAkJCUZpbmRJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENGWF9CeXRlU3RyaW5nIGNzRm9udE5hbWUsIENQREZfRm9udComIHBGb250LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCit2b2lkCQkJQWRkSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqJiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgY29uc3QgQ1BERl9Gb250KiBwRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZyk7DQorQ1BERl9Gb250KgkJQWRkTmF0aXZlSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqJiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgRlhfQllURSBjaGFyU2V0LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCitDUERGX0ZvbnQqCQlBZGROYXRpdmVJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSomIHBGb3JtRGljdCwgQ1BERl9Eb2N1bWVudCogcERvY3VtZW50LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKTsNCit2b2lkCQkJUmVtb3ZlSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCwgY29uc3QgQ1BERl9Gb250KiBwRm9udCk7DQordm9pZAkJCVJlbW92ZUludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIENGWF9CeXRlU3RyaW5nIGNzTmFtZVRhZyk7DQorQ1BERl9Gb250KgkJR2V0RGVmYXVsdEludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCk7DQordm9pZAkJCVNldERlZmF1bHRJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSomIHBGb3JtRGljdCwgQ1BERl9Eb2N1bWVudCogcERvY3VtZW50LCBjb25zdCBDUERGX0ZvbnQqIHBGb250KTsNCit2b2lkCQkJU2F2ZUNoZWNrZWRGaWVsZFN0YXR1cyhDUERGX0Zvcm1GaWVsZCogcEZpZWxkLCBDRlhfQnl0ZUFycmF5JiBzdGF0dXNBcnJheSk7DQorRlhfQk9PTAkJCU5lZWRQREZFbmNvZGVGb3JGaWVsZEZ1bGxOYW1lKGNvbnN0IENGWF9XaWRlU3RyaW5nJiBjc0ZpZWxkTmFtZSk7DQorRlhfQk9PTAkJCU5lZWRQREZFbmNvZGVGb3JGaWVsZFRyZWUoQ1BERl9EaWN0aW9uYXJ5KiBwRmllbGREaWN0LCBpbnQgbkxldmVsID0gMCk7DQordm9pZAkJCUVuY29kZUZpZWxkTmFtZShjb25zdCBDRlhfV2lkZVN0cmluZyYgY3NOYW1lLCBDRlhfQnl0ZVN0cmluZyYgY3NUKTsNCit2b2lkCQkJVXBkYXRlRW5jb2RlRmllbGROYW1lKENQREZfRGljdGlvbmFyeSogcEZpZWxkRGljdCwgaW50IG5MZXZlbCA9IDApOw0KK0NGWF9XaWRlU3RyaW5nIEdldEZ1bGxOYW1lKENQREZfRGljdGlvbmFyeSogcEZpZWxkRGljdCkNCit7DQorICAgIENGWF9XaWRlU3RyaW5nIGZ1bGxfbmFtZTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwTGV2ZWwgPSBwRmllbGREaWN0Ow0KKyAgICB3aGlsZSAocExldmVsKSB7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyBzaG9ydF9uYW1lID0gcExldmVsLT5HZXRVbmljb2RlVGV4dCgiVCIpOw0KKyAgICAgICAgaWYgKHNob3J0X25hbWUgIT0gTCIiKSB7DQorICAgICAgICAgICAgaWYgKGZ1bGxfbmFtZSA9PSBMIiIpIHsNCisgICAgICAgICAgICAgICAgZnVsbF9uYW1lID0gc2hvcnRfbmFtZTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBmdWxsX25hbWUgPSBzaG9ydF9uYW1lICsgTCIuIiArIGZ1bGxfbmFtZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBwTGV2ZWwgPSBwTGV2ZWwtPkdldERpY3QoIlBhcmVudCIpOw0KKyAgICB9DQorICAgIHJldHVybiBmdWxsX25hbWU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EZWZhdWx0QXBwZWFyYW5jZTo6SGFzRm9udCgpDQorew0KKyAgICBpZiAobV9jc0RBLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfU2ltcGxlUGFyc2VyIHN5bnRheChtX2NzREEpOw0KKyAgICByZXR1cm4gc3ludGF4LkZpbmRUYWdQYXJhbSgiVGYiLCAyKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ1BERl9EZWZhdWx0QXBwZWFyYW5jZTo6R2V0Rm9udFN0cmluZygpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc0ZvbnQ7DQorICAgIGlmIChtX2NzREEuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gY3NGb250Ow0KKyAgICB9DQorICAgIENQREZfU2ltcGxlUGFyc2VyIHN5bnRheChtX2NzREEpOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbSgiVGYiLCAyKSkgew0KKyAgICAgICAgY3NGb250ICs9IChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpOw0KKyAgICAgICAgY3NGb250ICs9ICIgIjsNCisgICAgICAgIGNzRm9udCArPSAoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKTsNCisgICAgICAgIGNzRm9udCArPSAiICI7DQorICAgICAgICBjc0ZvbnQgKz0gKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCk7DQorICAgIH0NCisgICAgcmV0dXJuIGNzRm9udDsNCit9DQordm9pZCBDUERGX0RlZmF1bHRBcHBlYXJhbmNlOjpHZXRGb250KENGWF9CeXRlU3RyaW5nJiBjc0ZvbnROYW1lVGFnLCBGWF9GTE9BVCYgZkZvbnRTaXplKQ0KK3sNCisgICAgY3NGb250TmFtZVRhZyA9ICIiOw0KKyAgICBmRm9udFNpemUgPSAwOw0KKyAgICBpZiAobV9jc0RBLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfU2ltcGxlUGFyc2VyIHN5bnRheChtX2NzREEpOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbSgiVGYiLCAyKSkgew0KKyAgICAgICAgY3NGb250TmFtZVRhZyA9IChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpOw0KKyAgICAgICAgY3NGb250TmFtZVRhZy5EZWxldGUoMCwgMSk7DQorICAgICAgICBmRm9udFNpemUgPSBGWF9hdG9mKChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpKTsNCisgICAgfQ0KKyAgICBjc0ZvbnROYW1lVGFnID0gUERGX05hbWVEZWNvZGUoY3NGb250TmFtZVRhZyk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9EZWZhdWx0QXBwZWFyYW5jZTo6SGFzQ29sb3IoRlhfQk9PTCBiU3Ryb2tpbmdPcGVyYXRpb24pDQorew0KKyAgICBpZiAobV9jc0RBLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfU2ltcGxlUGFyc2VyIHN5bnRheChtX2NzREEpOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbShiU3Ryb2tpbmdPcGVyYXRpb24gPyAiRyIgOiAiZyIsIDEpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBzeW50YXguU2V0UG9zKDApOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbShiU3Ryb2tpbmdPcGVyYXRpb24gPyAiUkciIDogInJnIiwgMykpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHN5bnRheC5TZXRQb3MoMCk7DQorICAgIHJldHVybiBzeW50YXguRmluZFRhZ1BhcmFtKGJTdHJva2luZ09wZXJhdGlvbiA/ICJLIiA6ICJrIiwgNCk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENQREZfRGVmYXVsdEFwcGVhcmFuY2U6OkdldENvbG9yU3RyaW5nKEZYX0JPT0wgYlN0cm9raW5nT3BlcmF0aW9uKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NDb2xvcjsNCisgICAgaWYgKG1fY3NEQS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiBjc0NvbG9yOw0KKyAgICB9DQorICAgIENQREZfU2ltcGxlUGFyc2VyIHN5bnRheChtX2NzREEpOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbShiU3Ryb2tpbmdPcGVyYXRpb24gPyAiRyIgOiAiZyIsIDEpKSB7DQorICAgICAgICBjc0NvbG9yICs9IChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpOw0KKyAgICAgICAgY3NDb2xvciArPSAiICI7DQorICAgICAgICBjc0NvbG9yICs9IChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpOw0KKyAgICAgICAgcmV0dXJuIGNzQ29sb3I7DQorICAgIH0NCisgICAgc3ludGF4LlNldFBvcygwKTsNCisgICAgaWYgKHN5bnRheC5GaW5kVGFnUGFyYW0oYlN0cm9raW5nT3BlcmF0aW9uID8gIlJHIiA6ICJyZyIsIDMpKSB7DQorICAgICAgICBjc0NvbG9yICs9IChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpOw0KKyAgICAgICAgY3NDb2xvciArPSAiICI7DQorICAgICAgICBjc0NvbG9yICs9IChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpOw0KKyAgICAgICAgY3NDb2xvciArPSAiICI7DQorICAgICAgICBjc0NvbG9yICs9IChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpOw0KKyAgICAgICAgY3NDb2xvciArPSAiICI7DQorICAgICAgICBjc0NvbG9yICs9IChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpOw0KKyAgICAgICAgcmV0dXJuIGNzQ29sb3I7DQorICAgIH0NCisgICAgc3ludGF4LlNldFBvcygwKTsNCisgICAgaWYgKHN5bnRheC5GaW5kVGFnUGFyYW0oYlN0cm9raW5nT3BlcmF0aW9uID8gIksiIDogImsiLCA0KSkgew0KKyAgICAgICAgY3NDb2xvciArPSAoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKTsNCisgICAgICAgIGNzQ29sb3IgKz0gIiAiOw0KKyAgICAgICAgY3NDb2xvciArPSAoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKTsNCisgICAgICAgIGNzQ29sb3IgKz0gIiAiOw0KKyAgICAgICAgY3NDb2xvciArPSAoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKTsNCisgICAgICAgIGNzQ29sb3IgKz0gIiAiOw0KKyAgICAgICAgY3NDb2xvciArPSAoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKTsNCisgICAgICAgIGNzQ29sb3IgKz0gIiAiOw0KKyAgICAgICAgY3NDb2xvciArPSAoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gY3NDb2xvcjsNCit9DQordm9pZCBDUERGX0RlZmF1bHRBcHBlYXJhbmNlOjpHZXRDb2xvcihpbnQmIGlDb2xvclR5cGUsIEZYX0ZMT0FUIGZjWzRdLCBGWF9CT09MIGJTdHJva2luZ09wZXJhdGlvbikNCit7DQorICAgIGlDb2xvclR5cGUgPSBDT0xPUlRZUEVfVFJBTlNQQVJFTlQ7DQorICAgIGZvciAoaW50IGMgPSAwOyBjIDwgNDsgYyArKykgew0KKyAgICAgICAgZmNbY10gPSAwOw0KKyAgICB9DQorICAgIGlmIChtX2NzREEuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9TaW1wbGVQYXJzZXIgc3ludGF4KG1fY3NEQSk7DQorICAgIGlmIChzeW50YXguRmluZFRhZ1BhcmFtKGJTdHJva2luZ09wZXJhdGlvbiA/ICJHIiA6ICJnIiwgMSkpIHsNCisgICAgICAgIGlDb2xvclR5cGUgPSBDT0xPUlRZUEVfR1JBWTsNCisgICAgICAgIGZjWzBdID0gRlhfYXRvZigoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgc3ludGF4LlNldFBvcygwKTsNCisgICAgaWYgKHN5bnRheC5GaW5kVGFnUGFyYW0oYlN0cm9raW5nT3BlcmF0aW9uID8gIlJHIiA6ICJyZyIsIDMpKSB7DQorICAgICAgICBpQ29sb3JUeXBlID0gQ09MT1JUWVBFX1JHQjsNCisgICAgICAgIGZjWzBdID0gRlhfYXRvZigoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKSk7DQorICAgICAgICBmY1sxXSA9IEZYX2F0b2YoKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICAgICAgZmNbMl0gPSBGWF9hdG9mKChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBzeW50YXguU2V0UG9zKDApOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbShiU3Ryb2tpbmdPcGVyYXRpb24gPyAiSyIgOiAiayIsIDQpKSB7DQorICAgICAgICBpQ29sb3JUeXBlID0gQ09MT1JUWVBFX0NNWUs7DQorICAgICAgICBmY1swXSA9IEZYX2F0b2YoKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICAgICAgZmNbMV0gPSBGWF9hdG9mKChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpKTsNCisgICAgICAgIGZjWzJdID0gRlhfYXRvZigoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKSk7DQorICAgICAgICBmY1szXSA9IEZYX2F0b2YoKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9EZWZhdWx0QXBwZWFyYW5jZTo6R2V0Q29sb3IoRlhfQVJHQiYgY29sb3IsIGludCYgaUNvbG9yVHlwZSwgRlhfQk9PTCBiU3Ryb2tpbmdPcGVyYXRpb24pDQorew0KKyAgICBjb2xvciA9IDA7DQorICAgIGlDb2xvclR5cGUgPSBDT0xPUlRZUEVfVFJBTlNQQVJFTlQ7DQorICAgIGlmIChtX2NzREEuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9TaW1wbGVQYXJzZXIgc3ludGF4KG1fY3NEQSk7DQorICAgIGlmIChzeW50YXguRmluZFRhZ1BhcmFtKGJTdHJva2luZ09wZXJhdGlvbiA/ICJHIiA6ICJnIiwgMSkpIHsNCisgICAgICAgIGlDb2xvclR5cGUgPSBDT0xPUlRZUEVfR1JBWTsNCisgICAgICAgIEZYX0ZMT0FUIGcgPSBGWF9hdG9mKChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpKSAqIDI1NSArIDAuNWY7DQorICAgICAgICBjb2xvciA9IEFyZ2JFbmNvZGUoMjU1LCAoaW50KWcsIChpbnQpZywgKGludClnKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBzeW50YXguU2V0UG9zKDApOw0KKyAgICBpZiAoc3ludGF4LkZpbmRUYWdQYXJhbShiU3Ryb2tpbmdPcGVyYXRpb24gPyAiUkciIDogInJnIiwgMykpIHsNCisgICAgICAgIGlDb2xvclR5cGUgPSBDT0xPUlRZUEVfUkdCOw0KKyAgICAgICAgRlhfRkxPQVQgciA9IEZYX2F0b2YoKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCkpICogMjU1ICsgMC41ZjsNCisgICAgICAgIEZYX0ZMT0FUIGcgPSBGWF9hdG9mKChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpKSAqIDI1NSArIDAuNWY7DQorICAgICAgICBGWF9GTE9BVCBiID0gRlhfYXRvZigoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKSkgKiAyNTUgKyAwLjVmOw0KKyAgICAgICAgY29sb3IgPSBBcmdiRW5jb2RlKDI1NSwgKGludClyLCAoaW50KWcsIChpbnQpYik7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgc3ludGF4LlNldFBvcygwKTsNCisgICAgaWYgKHN5bnRheC5GaW5kVGFnUGFyYW0oYlN0cm9raW5nT3BlcmF0aW9uID8gIksiIDogImsiLCA0KSkgew0KKyAgICAgICAgaUNvbG9yVHlwZSA9IENPTE9SVFlQRV9DTVlLOw0KKyAgICAgICAgRlhfRkxPQVQgYyA9IEZYX2F0b2YoKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICAgICAgRlhfRkxPQVQgbSA9IEZYX2F0b2YoKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICAgICAgRlhfRkxPQVQgeSA9IEZYX2F0b2YoKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICAgICAgRlhfRkxPQVQgayA9IEZYX2F0b2YoKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCkpOw0KKyAgICAgICAgRlhfRkxPQVQgciA9IDEuMGYgLSBGWF9NSU4oMS4wZiwgYyArIGspOw0KKyAgICAgICAgRlhfRkxPQVQgZyA9IDEuMGYgLSBGWF9NSU4oMS4wZiwgbSArIGspOw0KKyAgICAgICAgRlhfRkxPQVQgYiA9IDEuMGYgLSBGWF9NSU4oMS4wZiwgeSArIGspOw0KKyAgICAgICAgY29sb3IgPSBBcmdiRW5jb2RlKDI1NSwgKGludCkociAqIDI1NSArIDAuNWYpLCAoaW50KShnICogMjU1ICsgMC41ZiksIChpbnQpKGIgKiAyNTUgKyAwLjVmKSk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0RlZmF1bHRBcHBlYXJhbmNlOjpIYXNUZXh0TWF0cml4KCkNCit7DQorICAgIGlmIChtX2NzREEuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ1BERl9TaW1wbGVQYXJzZXIgc3ludGF4KG1fY3NEQSk7DQorICAgIHJldHVybiBzeW50YXguRmluZFRhZ1BhcmFtKCJUbSIsIDYpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDUERGX0RlZmF1bHRBcHBlYXJhbmNlOjpHZXRUZXh0TWF0cml4U3RyaW5nKCkNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzVE07DQorICAgIGlmIChtX2NzREEuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gY3NUTTsNCisgICAgfQ0KKyAgICBDUERGX1NpbXBsZVBhcnNlciBzeW50YXgobV9jc0RBKTsNCisgICAgaWYgKHN5bnRheC5GaW5kVGFnUGFyYW0oIlRtIiwgNikpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSArKykgew0KKyAgICAgICAgICAgIGNzVE0gKz0gKENGWF9CeXRlU3RyaW5nKXN5bnRheC5HZXRXb3JkKCk7DQorICAgICAgICAgICAgY3NUTSArPSAiICI7DQorICAgICAgICB9DQorICAgICAgICBjc1RNICs9IChDRlhfQnl0ZVN0cmluZylzeW50YXguR2V0V29yZCgpOw0KKyAgICB9DQorICAgIHJldHVybiBjc1RNOw0KK30NCitDRlhfQWZmaW5lTWF0cml4IENQREZfRGVmYXVsdEFwcGVhcmFuY2U6OkdldFRleHRNYXRyaXgoKQ0KK3sNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCB0bTsNCisgICAgaWYgKG1fY3NEQS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiB0bTsNCisgICAgfQ0KKyAgICBDUERGX1NpbXBsZVBhcnNlciBzeW50YXgobV9jc0RBKTsNCisgICAgaWYgKHN5bnRheC5GaW5kVGFnUGFyYW0oIlRtIiwgNikpIHsNCisgICAgICAgIEZYX0ZMT0FUIGZbNl07DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkgKyspIHsNCisgICAgICAgICAgICBmW2ldID0gRlhfYXRvZigoQ0ZYX0J5dGVTdHJpbmcpc3ludGF4LkdldFdvcmQoKSk7DQorICAgICAgICB9DQorICAgICAgICB0bS5TZXQoZlswXSwgZlsxXSwgZlsyXSwgZlszXSwgZls0XSwgZls1XSk7DQorICAgIH0NCisgICAgcmV0dXJuIHRtOw0KK30NCit2b2lkIEluaXRJbnRlckZvcm1EaWN0KENQREZfRGljdGlvbmFyeSomIHBGb3JtRGljdCwgQ1BERl9Eb2N1bWVudCogcERvY3VtZW50KQ0KK3sNCisgICAgaWYgKHBEb2N1bWVudCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBGb3JtRGljdCA9PSBOVUxMKSB7DQorICAgICAgICBwRm9ybURpY3QgPSBDUERGX0RpY3Rpb25hcnk6OkNyZWF0ZSgpOw0KKyAgICAgICAgaWYgKHBGb3JtRGljdCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQgZHdPYmpOdW0gPSBwRG9jdW1lbnQtPkFkZEluZGlyZWN0T2JqZWN0KHBGb3JtRGljdCk7DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBSb290ID0gcERvY3VtZW50LT5HZXRSb290KCk7DQorICAgICAgICBwUm9vdC0+U2V0QXRSZWZlcmVuY2UoIkFjcm9Gb3JtIiwgcERvY3VtZW50LCBkd09iak51bSk7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NEQTsNCisgICAgaWYgKCFwRm9ybURpY3QtPktleUV4aXN0KCJEUiIpKSB7DQorICAgICAgICBDUERGX0ZvbnQqIHBGb250ID0gTlVMTDsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGNzQmFzZU5hbWUsIGNzRGVmYXVsdDsNCisgICAgICAgIEZYX0JZVEUgY2hhclNldCA9IENQREZfSW50ZXJGb3JtOjpHZXROYXRpdmVDaGFyU2V0KCk7DQorICAgICAgICBwRm9udCA9IENQREZfSW50ZXJGb3JtOjpBZGRTdGFuZGFyZEZvbnQocERvY3VtZW50LCAiSGVsdmV0aWNhIik7DQorICAgICAgICBpZiAocEZvbnQgIT0gTlVMTCkgew0KKyAgICAgICAgICAgIEFkZEludGVyRm9ybUZvbnQocEZvcm1EaWN0LCBwRG9jdW1lbnQsIHBGb250LCBjc0Jhc2VOYW1lKTsNCisgICAgICAgICAgICBjc0RlZmF1bHQgPSBjc0Jhc2VOYW1lOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNoYXJTZXQgIT0gMCkgew0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGNzRm9udE5hbWUgPSBDUERGX0ludGVyRm9ybTo6R2V0TmF0aXZlRm9udChjaGFyU2V0LCBOVUxMKTsNCisgICAgICAgICAgICBpZiAocEZvbnQgPT0gTlVMTCB8fCBjc0ZvbnROYW1lICE9ICJIZWx2ZXRpY2EiKSB7DQorICAgICAgICAgICAgICAgIHBGb250ID0gQ1BERl9JbnRlckZvcm06OkFkZE5hdGl2ZUZvbnQocERvY3VtZW50KTsNCisgICAgICAgICAgICAgICAgaWYgKHBGb250ICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIGNzQmFzZU5hbWUgPSAiIjsNCisgICAgICAgICAgICAgICAgICAgIEFkZEludGVyRm9ybUZvbnQocEZvcm1EaWN0LCBwRG9jdW1lbnQsIHBGb250LCBjc0Jhc2VOYW1lKTsNCisgICAgICAgICAgICAgICAgICAgIGNzRGVmYXVsdCA9IGNzQmFzZU5hbWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAocEZvbnQgIT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNzREEgPSAiLyIgKyBQREZfTmFtZUVuY29kZShjc0RlZmF1bHQpICsgIiAwIFRmIjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoIWNzREEuSXNFbXB0eSgpKSB7DQorICAgICAgICBjc0RBICs9ICIgIjsNCisgICAgfQ0KKyAgICBjc0RBICs9ICIwIGciOw0KKyAgICBpZiAoIXBGb3JtRGljdC0+S2V5RXhpc3QoIkRBIikpIHsNCisgICAgICAgIHBGb3JtRGljdC0+U2V0QXRTdHJpbmcoIkRBIiwgY3NEQSk7DQorICAgIH0NCit9DQorRlhfRFdPUkQgQ291bnRJbnRlckZvcm1Gb250cyhDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCkNCit7DQorICAgIGlmIChwRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRFIgPSBwRm9ybURpY3QtPkdldERpY3QoIkRSIik7DQorICAgIGlmIChwRFIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udHMgPSBwRFItPkdldERpY3QoIkZvbnQiKTsNCisgICAgaWYgKHBGb250cyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBkd0NvdW50ID0gMDsNCisgICAgRlhfUE9TSVRJT04gcG9zID0gcEZvbnRzLT5HZXRTdGFydFBvcygpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IE5VTEw7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc0tleTsNCisgICAgICAgIHBPYmogPSBwRm9udHMtPkdldE5leHRFbGVtZW50KHBvcywgY3NLZXkpOw0KKyAgICAgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBEaXJlY3QgPSBwT2JqLT5HZXREaXJlY3QoKTsNCisgICAgICAgIGlmIChwRGlyZWN0ICE9IE5VTEwgJiYgcERpcmVjdC0+R2V0VHlwZSgpID09IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICAgICAgaWYgKCgoQ1BERl9EaWN0aW9uYXJ5KilwRGlyZWN0KS0+R2V0U3RyaW5nKCJUeXBlIikgPT0gIkZvbnQiKSB7DQorICAgICAgICAgICAgICAgIGR3Q291bnQgKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBkd0NvdW50Ow0KK30NCitDUERGX0ZvbnQqIEdldEludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgRlhfRFdPUkQgaW5kZXgsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpDQorew0KKyAgICBpZiAocEZvcm1EaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcERSID0gcEZvcm1EaWN0LT5HZXREaWN0KCJEUiIpOw0KKyAgICBpZiAocERSID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcEZvbnRzID0gcERSLT5HZXREaWN0KCJGb250Iik7DQorICAgIGlmIChwRm9udHMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhfRFdPUkQgZHdDb3VudCA9IDA7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IHBGb250cy0+R2V0U3RhcnRQb3MoKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBOVUxMOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgY3NLZXk7DQorICAgICAgICBwT2JqID0gcEZvbnRzLT5HZXROZXh0RWxlbWVudChwb3MsIGNzS2V5KTsNCisgICAgICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfT2JqZWN0KiBwRGlyZWN0ID0gcE9iai0+R2V0RGlyZWN0KCk7DQorICAgICAgICBpZiAocERpcmVjdCA9PSBOVUxMIHx8IHBEaXJlY3QtPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRWxlbWVudCA9IChDUERGX0RpY3Rpb25hcnkqKXBEaXJlY3Q7DQorICAgICAgICBpZiAocEVsZW1lbnQtPkdldFN0cmluZygiVHlwZSIpICE9ICJGb250Iikgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGR3Q291bnQgPT0gaW5kZXgpIHsNCisgICAgICAgICAgICBjc05hbWVUYWcgPSBjc0tleTsNCisgICAgICAgICAgICByZXR1cm4gcERvY3VtZW50LT5Mb2FkRm9udChwRWxlbWVudCk7DQorICAgICAgICB9DQorICAgICAgICBkd0NvdW50ICsrOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX0ZvbnQqIEdldEludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgQ0ZYX0J5dGVTdHJpbmcgY3NOYW1lVGFnKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NBbGlhcyA9IFBERl9OYW1lRGVjb2RlKGNzTmFtZVRhZyk7DQorICAgIGlmIChwRm9ybURpY3QgPT0gTlVMTCB8fCBjc0FsaWFzLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRFIgPSBwRm9ybURpY3QtPkdldERpY3QoIkRSIik7DQorICAgIGlmIChwRFIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udHMgPSBwRFItPkdldERpY3QoIkZvbnQiKTsNCisgICAgaWYgKHBGb250cyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBFbGVtZW50ID0gcEZvbnRzLT5HZXREaWN0KGNzQWxpYXMpOw0KKyAgICBpZiAocEVsZW1lbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBFbGVtZW50LT5HZXRTdHJpbmcoIlR5cGUiKSA9PSAiRm9udCIpIHsNCisgICAgICAgIHJldHVybiBwRG9jdW1lbnQtPkxvYWRGb250KHBFbGVtZW50KTsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorQ1BERl9Gb250KiBHZXRJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENGWF9CeXRlU3RyaW5nIGNzRm9udE5hbWUsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpDQorew0KKyAgICBpZiAocEZvcm1EaWN0ID09IE5VTEwgfHwgY3NGb250TmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcERSID0gcEZvcm1EaWN0LT5HZXREaWN0KCJEUiIpOw0KKyAgICBpZiAocERSID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcEZvbnRzID0gcERSLT5HZXREaWN0KCJGb250Iik7DQorICAgIGlmIChwRm9udHMgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhfUE9TSVRJT04gcG9zID0gcEZvbnRzLT5HZXRTdGFydFBvcygpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IE5VTEw7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc0tleTsNCisgICAgICAgIHBPYmogPSBwRm9udHMtPkdldE5leHRFbGVtZW50KHBvcywgY3NLZXkpOw0KKyAgICAgICAgaWYgKHBPYmogPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBEaXJlY3QgPSBwT2JqLT5HZXREaXJlY3QoKTsNCisgICAgICAgIGlmIChwRGlyZWN0ID09IE5VTEwgfHwgcERpcmVjdC0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBFbGVtZW50ID0gKENQREZfRGljdGlvbmFyeSopcERpcmVjdDsNCisgICAgICAgIGlmIChwRWxlbWVudC0+R2V0U3RyaW5nKCJUeXBlIikgIT0gIkZvbnQiKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDUERGX0ZvbnQqIHBGaW5kID0gcERvY3VtZW50LT5Mb2FkRm9udChwRWxlbWVudCk7DQorICAgICAgICBpZiAocEZpbmQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgY3NCYXNlRm9udDsNCisgICAgICAgIGNzQmFzZUZvbnQgPSBwRmluZC0+R2V0QmFzZUZvbnQoKTsNCisgICAgICAgIGNzQmFzZUZvbnQuUmVtb3ZlKCcgJyk7DQorICAgICAgICBpZiAoY3NCYXNlRm9udCA9PSBjc0ZvbnROYW1lKSB7DQorICAgICAgICAgICAgY3NOYW1lVGFnID0gY3NLZXk7DQorICAgICAgICAgICAgcmV0dXJuIHBGaW5kOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDUERGX0ZvbnQqIEdldE5hdGl2ZUludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgRlhfQllURSBjaGFyU2V0LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKQ0KK3sNCisgICAgaWYgKHBGb3JtRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEUiA9IHBGb3JtRGljdC0+R2V0RGljdCgiRFIiKTsNCisgICAgaWYgKHBEUiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250cyA9IHBEUi0+R2V0RGljdCgiRm9udCIpOw0KKyAgICBpZiAocEZvbnRzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IHBGb250cy0+R2V0U3RhcnRQb3MoKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgQ1BERl9PYmplY3QqIHBPYmogPSBOVUxMOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgY3NLZXk7DQorICAgICAgICBwT2JqID0gcEZvbnRzLT5HZXROZXh0RWxlbWVudChwb3MsIGNzS2V5KTsNCisgICAgICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfT2JqZWN0KiBwRGlyZWN0ID0gcE9iai0+R2V0RGlyZWN0KCk7DQorICAgICAgICBpZiAocERpcmVjdCA9PSBOVUxMIHx8IHBEaXJlY3QtPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRWxlbWVudCA9IChDUERGX0RpY3Rpb25hcnkqKXBEaXJlY3Q7DQorICAgICAgICBpZiAocEVsZW1lbnQtPkdldFN0cmluZygiVHlwZSIpICE9ICJGb250Iikgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9Gb250KiBwRmluZCA9IHBEb2N1bWVudC0+TG9hZEZvbnQocEVsZW1lbnQpOw0KKyAgICAgICAgaWYgKHBGaW5kID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9TdWJzdEZvbnQqIHBTdWJzdCA9IChDRlhfU3Vic3RGb250KilwRmluZC0+R2V0U3Vic3RGb250KCk7DQorICAgICAgICBpZiAocFN1YnN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwU3Vic3QtPm1fQ2hhcnNldCA9PSAoaW50KWNoYXJTZXQpIHsNCisgICAgICAgICAgICBjc05hbWVUYWcgPSBjc0tleTsNCisgICAgICAgICAgICByZXR1cm4gcEZpbmQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0NQREZfRm9udCogR2V0TmF0aXZlSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCwgQ1BERl9Eb2N1bWVudCogcERvY3VtZW50LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKQ0KK3sNCisgICAgY3NOYW1lVGFnID0gIiI7DQorICAgIEZYX0JZVEUgY2hhclNldCA9IENQREZfSW50ZXJGb3JtOjpHZXROYXRpdmVDaGFyU2V0KCk7DQorICAgIENGWF9TdWJzdEZvbnQqIHBTdWJzdDsNCisgICAgQ1BERl9Gb250KiBwRm9udCA9IEdldERlZmF1bHRJbnRlckZvcm1Gb250KHBGb3JtRGljdCwgcERvY3VtZW50KTsNCisgICAgaWYgKHBGb250ICE9IE5VTEwpIHsNCisgICAgICAgIHBTdWJzdCA9IChDRlhfU3Vic3RGb250KilwRm9udC0+R2V0U3Vic3RGb250KCk7DQorICAgICAgICBpZiAocFN1YnN0ICE9IE5VTEwgJiYgcFN1YnN0LT5tX0NoYXJzZXQgPT0gKGludCljaGFyU2V0KSB7DQorICAgICAgICAgICAgRmluZEludGVyRm9ybUZvbnQocEZvcm1EaWN0LCBwRm9udCwgY3NOYW1lVGFnKTsNCisgICAgICAgICAgICByZXR1cm4gcEZvbnQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEdldE5hdGl2ZUludGVyRm9ybUZvbnQocEZvcm1EaWN0LCBwRG9jdW1lbnQsIGNoYXJTZXQsIGNzTmFtZVRhZyk7DQorfQ0KK0ZYX0JPT0wgRmluZEludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiBwRm9ybURpY3QsIGNvbnN0IENQREZfRm9udCogcEZvbnQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpDQorew0KKyAgICBpZiAocEZvcm1EaWN0ID09IE5VTEwgfHwgcEZvbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcERSID0gcEZvcm1EaWN0LT5HZXREaWN0KCJEUiIpOw0KKyAgICBpZiAocERSID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250cyA9IHBEUi0+R2V0RGljdCgiRm9udCIpOw0KKyAgICBpZiAocEZvbnRzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBwRm9udHMtPkdldFN0YXJ0UG9zKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIENQREZfT2JqZWN0KiBwT2JqID0gTlVMTDsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGNzS2V5Ow0KKyAgICAgICAgcE9iaiA9IHBGb250cy0+R2V0TmV4dEVsZW1lbnQocG9zLCBjc0tleSk7DQorICAgICAgICBpZiAocE9iaiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDUERGX09iamVjdCogcERpcmVjdCA9IHBPYmotPkdldERpcmVjdCgpOw0KKyAgICAgICAgaWYgKHBEaXJlY3QgPT0gTlVMTCB8fCBwRGlyZWN0LT5HZXRUeXBlKCkgIT0gUERGT0JKX0RJQ1RJT05BUlkpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfRGljdGlvbmFyeSogcEVsZW1lbnQgPSAoQ1BERl9EaWN0aW9uYXJ5KilwRGlyZWN0Ow0KKyAgICAgICAgaWYgKHBFbGVtZW50LT5HZXRTdHJpbmcoIlR5cGUiKSAhPSAiRm9udCIpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwRm9udC0+R2V0Rm9udERpY3QoKSA9PSBwRWxlbWVudCkgew0KKyAgICAgICAgICAgIGNzTmFtZVRhZyA9IGNzS2V5Ow0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBGaW5kSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCwgQ1BERl9Eb2N1bWVudCogcERvY3VtZW50LCBDRlhfQnl0ZVN0cmluZyBjc0ZvbnROYW1lLCBDUERGX0ZvbnQqJiBwRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZykNCit7DQorICAgIGlmIChwRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcERSID0gcEZvcm1EaWN0LT5HZXREaWN0KCJEUiIpOw0KKyAgICBpZiAocERSID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBGb250cyA9IHBEUi0+R2V0RGljdCgiRm9udCIpOw0KKyAgICBpZiAocEZvbnRzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoY3NGb250TmFtZS5HZXRMZW5ndGgoKSA+IDApIHsNCisgICAgICAgIGNzRm9udE5hbWUuUmVtb3ZlKCcgJyk7DQorICAgIH0NCisgICAgRlhfUE9TSVRJT04gcG9zID0gcEZvbnRzLT5HZXRTdGFydFBvcygpOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBDUERGX09iamVjdCogcE9iaiA9IE5VTEw7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc0tleSwgY3NUbXA7DQorICAgICAgICBwT2JqID0gcEZvbnRzLT5HZXROZXh0RWxlbWVudChwb3MsIGNzS2V5KTsNCisgICAgICAgIGlmIChwT2JqID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIENQREZfT2JqZWN0KiBwRGlyZWN0ID0gcE9iai0+R2V0RGlyZWN0KCk7DQorICAgICAgICBpZiAocERpcmVjdCA9PSBOVUxMIHx8IHBEaXJlY3QtPkdldFR5cGUoKSAhPSBQREZPQkpfRElDVElPTkFSWSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRWxlbWVudCA9IChDUERGX0RpY3Rpb25hcnkqKXBEaXJlY3Q7DQorICAgICAgICBpZiAocEVsZW1lbnQtPkdldFN0cmluZygiVHlwZSIpICE9ICJGb250Iikgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEZvbnQgPSBwRG9jdW1lbnQtPkxvYWRGb250KHBFbGVtZW50KTsNCisgICAgICAgIGlmIChwRm9udCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBjc0Jhc2VGb250Ow0KKyAgICAgICAgY3NCYXNlRm9udCA9IHBGb250LT5HZXRCYXNlRm9udCgpOw0KKyAgICAgICAgY3NCYXNlRm9udC5SZW1vdmUoJyAnKTsNCisgICAgICAgIGlmIChjc0Jhc2VGb250ID09IGNzRm9udE5hbWUpIHsNCisgICAgICAgICAgICBjc05hbWVUYWcgPSBjc0tleTsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK3ZvaWQgQWRkSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqJiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgY29uc3QgQ1BERl9Gb250KiBwRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIGNzTmFtZVRhZykNCit7DQorICAgIGlmIChwRm9udCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHBGb3JtRGljdCA9PSBOVUxMKSB7DQorICAgICAgICBJbml0SW50ZXJGb3JtRGljdChwRm9ybURpY3QsIHBEb2N1bWVudCk7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NUYWc7DQorICAgIGlmIChGaW5kSW50ZXJGb3JtRm9udChwRm9ybURpY3QsIHBGb250LCBjc1RhZykpIHsNCisgICAgICAgIGNzTmFtZVRhZyA9IGNzVGFnOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChwRm9ybURpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgSW5pdEludGVyRm9ybURpY3QocEZvcm1EaWN0LCBwRG9jdW1lbnQpOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcERSID0gcEZvcm1EaWN0LT5HZXREaWN0KCJEUiIpOw0KKyAgICBpZiAocERSID09IE5VTEwpIHsNCisgICAgICAgIHBEUiA9IENQREZfRGljdGlvbmFyeTo6Q3JlYXRlKCk7DQorICAgICAgICBpZiAocERSID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBwRm9ybURpY3QtPlNldEF0KCJEUiIsIHBEUik7DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udHMgPSBwRFItPkdldERpY3QoIkZvbnQiKTsNCisgICAgaWYgKHBGb250cyA9PSBOVUxMKSB7DQorICAgICAgICBwRm9udHMgPSBDUERGX0RpY3Rpb25hcnk6OkNyZWF0ZSgpOw0KKyAgICAgICAgcERSLT5TZXRBdCgiRm9udCIsIHBGb250cyk7DQorICAgIH0NCisgICAgaWYgKGNzTmFtZVRhZy5Jc0VtcHR5KCkpIHsNCisgICAgICAgIGNzTmFtZVRhZyA9IHBGb250LT5HZXRCYXNlRm9udCgpOw0KKyAgICB9DQorICAgIGNzTmFtZVRhZy5SZW1vdmUoJyAnKTsNCisgICAgY3NOYW1lVGFnID0gQ1BERl9JbnRlckZvcm06OkdlbmVyYXRlTmV3UmVzb3VyY2VOYW1lKHBEUiwgIkZvbnQiLCA0LCBjc05hbWVUYWcpOw0KKyAgICBwRm9udHMtPlNldEF0UmVmZXJlbmNlKGNzTmFtZVRhZywgcERvY3VtZW50LCBwRm9udC0+R2V0Rm9udERpY3QoKSk7DQorfQ0KK0NQREZfRm9udCogQWRkTmF0aXZlSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqJiBwRm9ybURpY3QsIENQREZfRG9jdW1lbnQqIHBEb2N1bWVudCwgRlhfQllURSBjaGFyU2V0LCBDRlhfQnl0ZVN0cmluZyYgY3NOYW1lVGFnKQ0KK3sNCisgICAgaWYgKHBGb3JtRGljdCA9PSBOVUxMKSB7DQorICAgICAgICBJbml0SW50ZXJGb3JtRGljdChwRm9ybURpY3QsIHBEb2N1bWVudCk7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgY3NUZW1wOw0KKyAgICBDUERGX0ZvbnQqIHBGb250ID0gR2V0TmF0aXZlSW50ZXJGb3JtRm9udChwRm9ybURpY3QsIHBEb2N1bWVudCwgY2hhclNldCwgY3NUZW1wKTsNCisgICAgaWYgKHBGb250ICE9IE5VTEwpIHsNCisgICAgICAgIGNzTmFtZVRhZyA9IGNzVGVtcDsNCisgICAgICAgIHJldHVybiBwRm9udDsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc0ZvbnROYW1lID0gQ1BERl9JbnRlckZvcm06OkdldE5hdGl2ZUZvbnQoY2hhclNldCk7DQorICAgIGlmICghY3NGb250TmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIGlmIChGaW5kSW50ZXJGb3JtRm9udChwRm9ybURpY3QsIHBEb2N1bWVudCwgY3NGb250TmFtZSwgcEZvbnQsIGNzTmFtZVRhZykpIHsNCisgICAgICAgICAgICByZXR1cm4gcEZvbnQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcEZvbnQgPSBDUERGX0ludGVyRm9ybTo6QWRkTmF0aXZlRm9udChjaGFyU2V0LCBwRG9jdW1lbnQpOw0KKyAgICBpZiAocEZvbnQgIT0gTlVMTCkgew0KKyAgICAgICAgQWRkSW50ZXJGb3JtRm9udChwRm9ybURpY3QsIHBEb2N1bWVudCwgcEZvbnQsIGNzTmFtZVRhZyk7DQorICAgIH0NCisgICAgcmV0dXJuIHBGb250Ow0KK30NCitDUERGX0ZvbnQqIEFkZE5hdGl2ZUludGVyRm9ybUZvbnQoQ1BERl9EaWN0aW9uYXJ5KiYgcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQsIENGWF9CeXRlU3RyaW5nJiBjc05hbWVUYWcpDQorew0KKyAgICBGWF9CWVRFIGNoYXJTZXQgPSBDUERGX0ludGVyRm9ybTo6R2V0TmF0aXZlQ2hhclNldCgpOw0KKyAgICByZXR1cm4gQWRkTmF0aXZlSW50ZXJGb3JtRm9udChwRm9ybURpY3QsIHBEb2N1bWVudCwgY2hhclNldCwgY3NOYW1lVGFnKTsNCit9DQordm9pZCBSZW1vdmVJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBjb25zdCBDUERGX0ZvbnQqIHBGb250KQ0KK3sNCisgICAgaWYgKHBGb3JtRGljdCA9PSBOVUxMIHx8IHBGb250ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc1RhZzsNCisgICAgaWYgKCFGaW5kSW50ZXJGb3JtRm9udChwRm9ybURpY3QsIHBGb250LCBjc1RhZykpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEUiA9IHBGb3JtRGljdC0+R2V0RGljdCgiRFIiKTsNCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udHMgPSBwRFItPkdldERpY3QoIkZvbnQiKTsNCisgICAgcEZvbnRzLT5SZW1vdmVBdChjc1RhZyk7DQorfQ0KK3ZvaWQgUmVtb3ZlSW50ZXJGb3JtRm9udChDUERGX0RpY3Rpb25hcnkqIHBGb3JtRGljdCwgQ0ZYX0J5dGVTdHJpbmcgY3NOYW1lVGFnKQ0KK3sNCisgICAgaWYgKHBGb3JtRGljdCA9PSBOVUxMIHx8IGNzTmFtZVRhZy5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEUiA9IHBGb3JtRGljdC0+R2V0RGljdCgiRFIiKTsNCisgICAgaWYgKHBEUiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRm9udHMgPSBwRFItPkdldERpY3QoIkZvbnQiKTsNCisgICAgaWYgKHBGb250cyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcEZvbnRzLT5SZW1vdmVBdChjc05hbWVUYWcpOw0KK30NCitDUERGX0ZvbnQqIEdldERlZmF1bHRJbnRlckZvcm1Gb250KENQREZfRGljdGlvbmFyeSogcEZvcm1EaWN0LCBDUERGX0RvY3VtZW50KiBwRG9jdW1lbnQpDQorew0KKyAgICBpZiAocEZvcm1EaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENQREZfRGVmYXVsdEFwcGVhcmFuY2UgY0RBID0gcEZvcm1EaWN0LT5HZXRTdHJpbmcoIkRBIik7DQorICAgIENGWF9CeXRlU3RyaW5nIGNzRm9udE5hbWVUYWc7DQorICAgIEZYX0ZMT0FUIGZGb250U2l6ZTsNCisgICAgY0RBLkdldEZvbnQoY3NGb250TmFtZVRhZywgZkZvbnRTaXplKTsNCisgICAgcmV0dXJuIEdldEludGVyRm9ybUZvbnQocEZvcm1EaWN0LCBwRG9jdW1lbnQsIGNzRm9udE5hbWVUYWcpOw0KK30NCitDUERGX0ljb25GaXQ6OlNjYWxlTWV0aG9kIENQREZfSWNvbkZpdDo6R2V0U2NhbGVNZXRob2QoKQ0KK3sNCisgICAgaWYgKG1fcERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEFsd2F5czsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBjc1NXID0gbV9wRGljdC0+R2V0U3RyaW5nKCJTVyIsICJBIik7DQorICAgIGlmIChjc1NXID09ICJCIikgew0KKyAgICAgICAgcmV0dXJuIEJpZ2dlcjsNCisgICAgfSBlbHNlIGlmIChjc1NXID09ICJTIikgew0KKyAgICAgICAgcmV0dXJuIFNtYWxsZXI7DQorICAgIH0gZWxzZSBpZiAoY3NTVyA9PSAiTiIpIHsNCisgICAgICAgIHJldHVybiBOZXZlcjsNCisgICAgfQ0KKyAgICByZXR1cm4gQWx3YXlzOw0KK30NCitGWF9CT09MIENQREZfSWNvbkZpdDo6SXNQcm9wb3J0aW9uYWxTY2FsZSgpDQorew0KKyAgICBpZiAobV9wRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGljdC0+R2V0U3RyaW5nKCJTIiwgIlAiKSAhPSAiQSI7DQorfQ0KK3ZvaWQgQ1BERl9JY29uRml0OjpHZXRJY29uUG9zaXRpb24oRlhfRkxPQVQmIGZMZWZ0LCBGWF9GTE9BVCYgZkJvdHRvbSkNCit7DQorICAgIGZMZWZ0ID0gZkJvdHRvbSA9IDAuNTsNCisgICAgaWYgKG1fcERpY3QgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENQREZfQXJyYXkqIHBBID0gbV9wRGljdC0+R2V0QXJyYXkoIkEiKTsNCisgICAgaWYgKHBBICE9IE5VTEwpIHsNCisgICAgICAgIEZYX0RXT1JEIGR3Q291bnQgPSBwQS0+R2V0Q291bnQoKTsNCisgICAgICAgIGlmIChkd0NvdW50ID4gMCkgew0KKyAgICAgICAgICAgIGZMZWZ0ID0gcEEtPkdldE51bWJlcigwKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChkd0NvdW50ID4gMSkgew0KKyAgICAgICAgICAgIGZCb3R0b20gPSBwQS0+R2V0TnVtYmVyKDEpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1BERl9JY29uRml0OjpHZXRGaXR0aW5nQm91bmRzKCkNCit7DQorICAgIGlmIChtX3BEaWN0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGljdC0+R2V0Qm9vbGVhbigiRkIiKTsNCit9DQordm9pZCBTYXZlQ2hlY2tlZEZpZWxkU3RhdHVzKENQREZfRm9ybUZpZWxkKiBwRmllbGQsIENGWF9CeXRlQXJyYXkmIHN0YXR1c0FycmF5KQ0KK3sNCisgICAgaW50IGlDb3VudCA9IHBGaWVsZC0+Q291bnRDb250cm9scygpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGlDb3VudDsgaSArKykgew0KKyAgICAgICAgQ1BERl9Gb3JtQ29udHJvbCogcENvbnRyb2wgPSBwRmllbGQtPkdldENvbnRyb2woaSk7DQorICAgICAgICBpZiAocENvbnRyb2wgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3RhdHVzQXJyYXkuQWRkKHBDb250cm9sLT5Jc0NoZWNrZWQoKSA/IDEgOiAwKTsNCisgICAgfQ0KK30NCitDUERGX09iamVjdCogRlBERl9HZXRGaWVsZEF0dHIoQ1BERl9EaWN0aW9uYXJ5KiBwRmllbGREaWN0LCBjb25zdCBGWF9DSEFSKiBuYW1lLCBpbnQgbkxldmVsKQ0KK3sNCisgICAgaWYgKG5MZXZlbCA+IEZQREZET0NfVVRJTFNfTUFYUkVDVVJTSU9OKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAocEZpZWxkRGljdCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDUERGX09iamVjdCogcEF0dHIgPSBwRmllbGREaWN0LT5HZXRFbGVtZW50VmFsdWUobmFtZSk7DQorICAgIGlmIChwQXR0cikgew0KKyAgICAgICAgcmV0dXJuIHBBdHRyOw0KKyAgICB9DQorICAgIENQREZfRGljdGlvbmFyeSogcFBhcmVudCA9IHBGaWVsZERpY3QtPkdldERpY3QoIlBhcmVudCIpOw0KKyAgICBpZiAocFBhcmVudCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gRlBERl9HZXRGaWVsZEF0dHIocFBhcmVudCwgbmFtZSwgbkxldmVsICsgMSk7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX3ZpZXdlclByZWZlcmVuY2VzLmNwcCBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX3ZpZXdlclByZWZlcmVuY2VzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGFmMGI1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmRvYy9kb2Nfdmlld2VyUHJlZmVyZW5jZXMuY3BwCkBAIC0wLDAgKzEsMzEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZkb2MvZnBkZl9kb2MuaCINCitDUERGX1ZpZXdlclByZWZlcmVuY2VzOjpDUERGX1ZpZXdlclByZWZlcmVuY2VzKENQREZfRG9jdW1lbnQgKnBEb2MpOiBtX3BEb2MocERvYykNCit7DQorfQ0KK0NQREZfVmlld2VyUHJlZmVyZW5jZXM6On5DUERGX1ZpZXdlclByZWZlcmVuY2VzKCkNCit7DQorfQ0KK0ZYX0JPT0wgQ1BERl9WaWV3ZXJQcmVmZXJlbmNlczo6SXNEaXJlY3Rpb25SMkwoKSBjb25zdA0KK3sNCisgICAgQ1BERl9EaWN0aW9uYXJ5ICpwRGljdCA9IG1fcERvYy0+R2V0Um9vdCgpOw0KKyAgICBwRGljdCA9IHBEaWN0LT5HZXREaWN0KEZYX0JTVFJDKCJWaWV3ZXJQcmVmZXJlbmNlcyIpKTsNCisgICAgaWYgKCFwRGljdCkJew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBGWF9CU1RSQygiUjJMIikgPT0gcERpY3QtPkdldFN0cmluZyhGWF9CU1RSQygiRGlyZWN0aW9uIikpOw0KK30NCitGWF9CT09MIENQREZfVmlld2VyUHJlZmVyZW5jZXM6OlByaW50U2NhbGluZygpIGNvbnN0DQorew0KKyAgICBDUERGX0RpY3Rpb25hcnkgKnBEaWN0ID0gbV9wRG9jLT5HZXRSb290KCk7DQorICAgIHBEaWN0ID0gcERpY3QtPkdldERpY3QoRlhfQlNUUkMoIlZpZXdlclByZWZlcmVuY2VzIikpOw0KKyAgICBpZiAoIXBEaWN0KQl7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhfQlNUUkMoIk5vbmUiKSAhPSBwRGljdC0+R2V0U3RyaW5nKEZYX0JTVFJDKCJQcmludFNjYWxpbmciKSk7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX3Z0LmNwcCBiL2NvcmUvc3JjL2ZwZGZkb2MvZG9jX3Z0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTExNzNkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmRvYy9kb2NfdnQuY3BwCkBAIC0wLDAgKzEsMTg2NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmRvYy9mcGRmX2RvYy5oIg0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZkb2MvZnBkZl92dC5oIg0KKyNpbmNsdWRlICJwZGZfdnQuaCINCitjb25zdCBGWF9CWVRFIGdGb250U2l6ZVN0ZXBzW10gPSB7CTQsIDYsIDgsIDksIDEwLAkxMiwgMTQsIDE4LCAyMCwgMjUsCTMwLCAzNSwgNDAsIDQ1LCA1MCwJNTUsIDYwLCA3MCwgODAsIDkwLAkxMDAsIDExMCwgMTIwLCAxMzAsIDE0NH07DQorI2RlZmluZSBQVlRfUkVUVVJOX0xFTkdUSAkJCQkJMQ0KKyNkZWZpbmUgUFZUX0RFRkFVTFRfRk9OVFNJWkUJCQkJMTguMGYNCisjZGVmaW5lIFBWVFdPUkRfU0NSSVBUX05PUk1BTAkJCQkwDQorI2RlZmluZSBQVlRXT1JEX1NDUklQVF9TVVBFUgkJCQkxDQorI2RlZmluZSBQVlRXT1JEX1NDUklQVF9TVUIJCQkJCTINCisjZGVmaW5lCVBWVF9GT05UU0NBTEUJCQkJCQkwLjAwMWYNCisjZGVmaW5lIFBWVF9QRVJDRU5UCQkJCQkJCTAuMDFmDQorI2RlZmluZSBQVlRfSEFMRgkJCQkJCQkwLjVmDQorQ0xpbmU6OkNMaW5lKCkNCit7DQorfQ0KK0NMaW5lOjp+Q0xpbmUoKQ0KK3sNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ0xpbmU6OkdldEJlZ2luV29yZFBsYWNlKCkgY29uc3QNCit7DQorICAgIHJldHVybiBDUFZUX1dvcmRQbGFjZShMaW5lUGxhY2UublNlY0luZGV4LCBMaW5lUGxhY2UubkxpbmVJbmRleCwgLTEpOw0KK30NCitDUFZUX1dvcmRQbGFjZSBDTGluZTo6R2V0RW5kV29yZFBsYWNlKCkgY29uc3QNCit7DQorICAgIHJldHVybiBDUFZUX1dvcmRQbGFjZShMaW5lUGxhY2UublNlY0luZGV4LCBMaW5lUGxhY2UubkxpbmVJbmRleCwgbV9MaW5lSW5mby5uRW5kV29yZEluZGV4KTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ0xpbmU6OkdldFByZXZXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QNCit7DQorICAgIGlmIChwbGFjZS5uV29yZEluZGV4ID4gbV9MaW5lSW5mby5uRW5kV29yZEluZGV4KSB7DQorICAgICAgICByZXR1cm4gQ1BWVF9Xb3JkUGxhY2UocGxhY2UublNlY0luZGV4LCBwbGFjZS5uTGluZUluZGV4LCBtX0xpbmVJbmZvLm5FbmRXb3JkSW5kZXgpOw0KKyAgICB9DQorICAgIHJldHVybiBDUFZUX1dvcmRQbGFjZShwbGFjZS5uU2VjSW5kZXgsIHBsYWNlLm5MaW5lSW5kZXgsIHBsYWNlLm5Xb3JkSW5kZXggLSAxKTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ0xpbmU6OkdldE5leHRXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QNCit7DQorICAgIGlmIChwbGFjZS5uV29yZEluZGV4IDwgbV9MaW5lSW5mby5uQmVnaW5Xb3JkSW5kZXgpIHsNCisgICAgICAgIHJldHVybiBDUFZUX1dvcmRQbGFjZShwbGFjZS5uU2VjSW5kZXgsIHBsYWNlLm5MaW5lSW5kZXgsIG1fTGluZUluZm8ubkJlZ2luV29yZEluZGV4KTsNCisgICAgfQ0KKyAgICByZXR1cm4gQ1BWVF9Xb3JkUGxhY2UocGxhY2UublNlY0luZGV4LCBwbGFjZS5uTGluZUluZGV4LCBwbGFjZS5uV29yZEluZGV4ICsgMSk7DQorfQ0KK0NTZWN0aW9uOjpDU2VjdGlvbihDUERGX1ZhcmlhYmxlVGV4dCAqIHBWVCkgOiBtX3BWVChwVlQpDQorew0KK30NCitDU2VjdGlvbjo6fkNTZWN0aW9uKCkNCit7DQorICAgIFJlc2V0QWxsKCk7DQorfQ0KK3ZvaWQgQ1NlY3Rpb246OlJlc2V0QWxsKCkNCit7DQorICAgIFJlc2V0V29yZEFycmF5KCk7DQorICAgIFJlc2V0TGluZUFycmF5KCk7DQorfQ0KK3ZvaWQgQ1NlY3Rpb246OlJlc2V0TGluZUFycmF5KCkNCit7DQorICAgIG1fTGluZUFycmF5LlJlbW92ZUFsbCgpOw0KK30NCit2b2lkIENTZWN0aW9uOjpSZXNldFdvcmRBcnJheSgpDQorew0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwLCBzeiA9IG1fV29yZEFycmF5LkdldFNpemUoKTsgaSA8IHN6OyBpKyspIHsNCisgICAgICAgIGRlbGV0ZSBtX1dvcmRBcnJheS5HZXRBdChpKTsNCisgICAgfQ0KKyAgICBtX1dvcmRBcnJheS5SZW1vdmVBbGwoKTsNCit9DQordm9pZCBDU2VjdGlvbjo6UmVzZXRMaW5lUGxhY2UoKQ0KK3sNCisgICAgZm9yIChGWF9JTlQzMiBpID0gMCwgc3ogPSBtX0xpbmVBcnJheS5HZXRTaXplKCk7IGkgPCBzejsgaSsrKSB7DQorICAgICAgICBpZiAoQ0xpbmUgKiBwTGluZSA9IG1fTGluZUFycmF5LkdldEF0KGkpKSB7DQorICAgICAgICAgICAgcExpbmUtPkxpbmVQbGFjZSA9IENQVlRfV29yZFBsYWNlKFNlY1BsYWNlLm5TZWNJbmRleCwgaSwgLTEpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NQVlRfV29yZFBsYWNlIENTZWN0aW9uOjpBZGRXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIGNvbnN0IENQVlRfV29yZEluZm8gJiB3b3JkaW5mbykNCit7DQorICAgIGlmIChDUFZUX1dvcmRJbmZvICogcFdvcmQgPSBGWF9ORVcgQ1BWVF9Xb3JkSW5mbyh3b3JkaW5mbykpIHsNCisgICAgICAgIEZYX0lOVDMyIG5Xb3JkSW5kZXggPSBGUERGX01BWChGUERGX01JTihwbGFjZS5uV29yZEluZGV4LCB0aGlzLT5tX1dvcmRBcnJheS5HZXRTaXplKCkpLCAwKTsNCisgICAgICAgIGlmIChuV29yZEluZGV4ID09IG1fV29yZEFycmF5LkdldFNpemUoKSkgew0KKyAgICAgICAgICAgIG1fV29yZEFycmF5LkFkZChwV29yZCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fV29yZEFycmF5Lkluc2VydEF0KG5Xb3JkSW5kZXgsIHBXb3JkKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcGxhY2U7DQorfQ0KK0NQVlRfV29yZFBsYWNlIENTZWN0aW9uOjpBZGRMaW5lKGNvbnN0IENQVlRfTGluZUluZm8gJiBsaW5laW5mbykNCit7DQorICAgIHJldHVybiBDUFZUX1dvcmRQbGFjZShTZWNQbGFjZS5uU2VjSW5kZXgsIG1fTGluZUFycmF5LkFkZChsaW5laW5mbyksIC0xKTsNCit9DQorQ1BWVF9GbG9hdFJlY3QgQ1NlY3Rpb246OlJlYXJyYW5nZSgpDQorew0KKyAgICBBU1NFUlQobV9wVlQgIT0gTlVMTCk7DQorICAgIGlmIChtX3BWVC0+bV9uQ2hhckFycmF5ID4gMCkgew0KKyAgICAgICAgcmV0dXJuIENUeXBlc2V0KHRoaXMpLkNoYXJBcnJheSgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIENUeXBlc2V0KHRoaXMpLlR5cGVzZXQoKTsNCisgICAgfQ0KK30NCitDUFZUX1NpemUgQ1NlY3Rpb246OkdldFNlY3Rpb25TaXplKEZYX0ZMT0FUIGZGb250U2l6ZSkNCit7DQorICAgIHJldHVybiBDVHlwZXNldCh0aGlzKS5HZXRFZGl0U2l6ZShmRm9udFNpemUpOw0KK30NCitDUFZUX1dvcmRQbGFjZSBDU2VjdGlvbjo6R2V0QmVnaW5Xb3JkUGxhY2UoKSBjb25zdA0KK3sNCisgICAgaWYgKENMaW5lICogcExpbmUgPSBtX0xpbmVBcnJheS5HZXRBdCgwKSkgew0KKyAgICAgICAgcmV0dXJuIHBMaW5lLT5HZXRCZWdpbldvcmRQbGFjZSgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIFNlY1BsYWNlOw0KKyAgICB9DQorfQ0KK0NQVlRfV29yZFBsYWNlIENTZWN0aW9uOjpHZXRFbmRXb3JkUGxhY2UoKSBjb25zdA0KK3sNCisgICAgaWYgKENMaW5lICogcExpbmUgPSBtX0xpbmVBcnJheS5HZXRBdChtX0xpbmVBcnJheS5HZXRTaXplKCkgLSAxKSkgew0KKyAgICAgICAgcmV0dXJuIHBMaW5lLT5HZXRFbmRXb3JkUGxhY2UoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiB0aGlzLT5TZWNQbGFjZTsNCisgICAgfQ0KK30NCitDUFZUX1dvcmRQbGFjZSBDU2VjdGlvbjo6R2V0UHJldldvcmRQbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSBjb25zdA0KK3sNCisgICAgaWYgKHBsYWNlLm5MaW5lSW5kZXggPCAwKSB7DQorICAgICAgICByZXR1cm4gR2V0QmVnaW5Xb3JkUGxhY2UoKTsNCisgICAgfQ0KKyAgICBpZiAocGxhY2UubkxpbmVJbmRleCA+PSBtX0xpbmVBcnJheS5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybiBHZXRFbmRXb3JkUGxhY2UoKTsNCisgICAgfQ0KKyAgICBpZiAoQ0xpbmUgKiBwTGluZSA9IG1fTGluZUFycmF5LkdldEF0KHBsYWNlLm5MaW5lSW5kZXgpKSB7DQorICAgICAgICBpZiAocGxhY2UubldvcmRJbmRleCA9PSBwTGluZS0+bV9MaW5lSW5mby5uQmVnaW5Xb3JkSW5kZXgpIHsNCisgICAgICAgICAgICByZXR1cm4gQ1BWVF9Xb3JkUGxhY2UocGxhY2UublNlY0luZGV4LCBwbGFjZS5uTGluZUluZGV4LCAtMSk7DQorICAgICAgICB9IGVsc2UgaWYgKHBsYWNlLm5Xb3JkSW5kZXggPCBwTGluZS0+bV9MaW5lSW5mby5uQmVnaW5Xb3JkSW5kZXgpIHsNCisgICAgICAgICAgICBpZiAoQ0xpbmUgKiBwUHJldkxpbmUgPSBtX0xpbmVBcnJheS5HZXRBdChwbGFjZS5uTGluZUluZGV4IC0gMSkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBQcmV2TGluZS0+R2V0RW5kV29yZFBsYWNlKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXR1cm4gcExpbmUtPkdldFByZXZXb3JkUGxhY2UocGxhY2UpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBwbGFjZTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1NlY3Rpb246OkdldE5leHRXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QNCit7DQorICAgIGlmIChwbGFjZS5uTGluZUluZGV4IDwgMCkgew0KKyAgICAgICAgcmV0dXJuIEdldEJlZ2luV29yZFBsYWNlKCk7DQorICAgIH0NCisgICAgaWYgKHBsYWNlLm5MaW5lSW5kZXggPj0gbV9MaW5lQXJyYXkuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm4gR2V0RW5kV29yZFBsYWNlKCk7DQorICAgIH0NCisgICAgaWYgKENMaW5lICogcExpbmUgPSBtX0xpbmVBcnJheS5HZXRBdChwbGFjZS5uTGluZUluZGV4KSkgew0KKyAgICAgICAgaWYgKHBsYWNlLm5Xb3JkSW5kZXggPj0gcExpbmUtPm1fTGluZUluZm8ubkVuZFdvcmRJbmRleCkgew0KKyAgICAgICAgICAgIGlmIChDTGluZSAqIHBOZXh0TGluZSA9IG1fTGluZUFycmF5LkdldEF0KHBsYWNlLm5MaW5lSW5kZXggKyAxKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcE5leHRMaW5lLT5HZXRCZWdpbldvcmRQbGFjZSgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIHBMaW5lLT5HZXROZXh0V29yZFBsYWNlKHBsYWNlKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcGxhY2U7DQorfQ0KK3ZvaWQgQ1NlY3Rpb246OlVwZGF0ZVdvcmRQbGFjZShDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSBjb25zdA0KK3sNCisgICAgRlhfSU5UMzIgbkxlZnQgPSAwOw0KKyAgICBGWF9JTlQzMiBuUmlnaHQgPSBtX0xpbmVBcnJheS5HZXRTaXplKCkgLSAxOw0KKyAgICBGWF9JTlQzMiBuTWlkID0gKG5MZWZ0ICsgblJpZ2h0KSAvIDI7DQorICAgIHdoaWxlIChuTGVmdCA8PSBuUmlnaHQpIHsNCisgICAgICAgIGlmIChDTGluZSAqIHBMaW5lID0gbV9MaW5lQXJyYXkuR2V0QXQobk1pZCkpIHsNCisgICAgICAgICAgICBpZiAocGxhY2UubldvcmRJbmRleCA8IHBMaW5lLT5tX0xpbmVJbmZvLm5CZWdpbldvcmRJbmRleCkgew0KKyAgICAgICAgICAgICAgICBuUmlnaHQgPSBuTWlkIC0gMTsNCisgICAgICAgICAgICAgICAgbk1pZCA9IChuTGVmdCArIG5SaWdodCkgLyAyOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhY2UubldvcmRJbmRleCA+IHBMaW5lLT5tX0xpbmVJbmZvLm5FbmRXb3JkSW5kZXgpIHsNCisgICAgICAgICAgICAgICAgbkxlZnQgPSBuTWlkICsgMTsNCisgICAgICAgICAgICAgICAgbk1pZCA9IChuTGVmdCArIG5SaWdodCkgLyAyOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBsYWNlLm5MaW5lSW5kZXggPSBuTWlkOw0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDUFZUX1dvcmRQbGFjZSBDU2VjdGlvbjo6U2VhcmNoV29yZFBsYWNlKGNvbnN0IENQREZfUG9pbnQgJiBwb2ludCkgY29uc3QNCit7DQorICAgIEFTU0VSVChtX3BWVCAhPSBOVUxMKTsNCisgICAgQ1BWVF9Xb3JkUGxhY2UgcGxhY2UgPSBHZXRCZWdpbldvcmRQbGFjZSgpOw0KKyAgICBGWF9CT09MIGJVcCA9IFRSVUU7DQorICAgIEZYX0JPT0wgYkRvd24gPSBUUlVFOw0KKyAgICBGWF9JTlQzMiBuTGVmdCA9IDA7DQorICAgIEZYX0lOVDMyIG5SaWdodCA9IG1fTGluZUFycmF5LkdldFNpemUoKSAtIDE7DQorICAgIEZYX0lOVDMyIG5NaWQgPSBtX0xpbmVBcnJheS5HZXRTaXplKCkgLyAyOw0KKyAgICBGWF9GTE9BVCBmVG9wID0gMDsNCisgICAgRlhfRkxPQVQgZkJvdHRvbSA9IDA7DQorICAgIHdoaWxlIChuTGVmdCA8PSBuUmlnaHQpIHsNCisgICAgICAgIGlmIChDTGluZSAqIHBMaW5lID0gbV9MaW5lQXJyYXkuR2V0QXQobk1pZCkpIHsNCisgICAgICAgICAgICBmVG9wID0gcExpbmUtPm1fTGluZUluZm8uZkxpbmVZIC0gcExpbmUtPm1fTGluZUluZm8uZkxpbmVBc2NlbnQgLSBtX3BWVC0+R2V0TGluZUxlYWRpbmcobV9TZWNJbmZvKTsNCisgICAgICAgICAgICBmQm90dG9tID0gcExpbmUtPm1fTGluZUluZm8uZkxpbmVZIC0gcExpbmUtPm1fTGluZUluZm8uZkxpbmVEZXNjZW50Ow0KKyAgICAgICAgICAgIGlmIChJc0Zsb2F0QmlnZ2VyKHBvaW50LnksIGZUb3ApKSB7DQorICAgICAgICAgICAgICAgIGJVcCA9IEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoSXNGbG9hdFNtYWxsZXIocG9pbnQueSwgZkJvdHRvbSkpIHsNCisgICAgICAgICAgICAgICAgYkRvd24gPSBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKElzRmxvYXRTbWFsbGVyKHBvaW50LnksIGZUb3ApKSB7DQorICAgICAgICAgICAgICAgIG5SaWdodCA9IG5NaWQgLSAxOw0KKyAgICAgICAgICAgICAgICBuTWlkID0gKG5MZWZ0ICsgblJpZ2h0KSAvIDI7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoSXNGbG9hdEJpZ2dlcihwb2ludC55LCBmQm90dG9tKSkgew0KKyAgICAgICAgICAgICAgICBuTGVmdCA9IG5NaWQgKyAxOw0KKyAgICAgICAgICAgICAgICBuTWlkID0gKG5MZWZ0ICsgblJpZ2h0KSAvIDI7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBsYWNlID0gU2VhcmNoV29yZFBsYWNlKHBvaW50LngsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVlRfV29yZFJhbmdlKHBMaW5lLT5HZXROZXh0V29yZFBsYWNlKHBMaW5lLT5HZXRCZWdpbldvcmRQbGFjZSgpKSwgcExpbmUtPkdldEVuZFdvcmRQbGFjZSgpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgICAgICAgICAgIHBsYWNlLm5MaW5lSW5kZXggPSBuTWlkOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gcGxhY2U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChiVXApIHsNCisgICAgICAgIHBsYWNlID0gR2V0QmVnaW5Xb3JkUGxhY2UoKTsNCisgICAgfQ0KKyAgICBpZiAoYkRvd24pIHsNCisgICAgICAgIHBsYWNlID0gR2V0RW5kV29yZFBsYWNlKCk7DQorICAgIH0NCisgICAgcmV0dXJuIHBsYWNlOw0KK30NCitDUFZUX1dvcmRQbGFjZSBDU2VjdGlvbjo6U2VhcmNoV29yZFBsYWNlKEZYX0ZMT0FUIGZ4LCBjb25zdCBDUFZUX1dvcmRQbGFjZSAmIGxpbmVwbGFjZSkgY29uc3QNCit7DQorICAgIGlmIChDTGluZSAqIHBMaW5lID0gbV9MaW5lQXJyYXkuR2V0QXQobGluZXBsYWNlLm5MaW5lSW5kZXgpKSB7DQorICAgICAgICByZXR1cm4gU2VhcmNoV29yZFBsYWNlKGZ4IC0gbV9TZWNJbmZvLnJjU2VjdGlvbi5sZWZ0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFZUX1dvcmRSYW5nZShwTGluZS0+R2V0TmV4dFdvcmRQbGFjZShwTGluZS0+R2V0QmVnaW5Xb3JkUGxhY2UoKSksIHBMaW5lLT5HZXRFbmRXb3JkUGxhY2UoKSkpOw0KKyAgICB9DQorICAgIHJldHVybiBHZXRCZWdpbldvcmRQbGFjZSgpOw0KK30NCitDUFZUX1dvcmRQbGFjZSBDU2VjdGlvbjo6U2VhcmNoV29yZFBsYWNlKEZYX0ZMT0FUIGZ4LCBjb25zdCBDUFZUX1dvcmRSYW5nZSAmIHJhbmdlKSBjb25zdA0KK3sNCisgICAgQ1BWVF9Xb3JkUGxhY2Ugd29yZHBsYWNlID0gcmFuZ2UuQmVnaW5Qb3M7DQorICAgIHdvcmRwbGFjZS5uV29yZEluZGV4ID0gLTE7DQorICAgIGlmICghbV9wVlQpCXsNCisgICAgICAgIHJldHVybiB3b3JkcGxhY2U7DQorICAgIH0NCisgICAgRlhfSU5UMzIgbkxlZnQgPSByYW5nZS5CZWdpblBvcy5uV29yZEluZGV4Ow0KKyAgICBGWF9JTlQzMiBuUmlnaHQgPSByYW5nZS5FbmRQb3MubldvcmRJbmRleCArIDE7DQorICAgIEZYX0lOVDMyIG5NaWQgPSAobkxlZnQgKyBuUmlnaHQpIC8gMjsNCisgICAgd2hpbGUgKG5MZWZ0IDwgblJpZ2h0KSB7DQorICAgICAgICBpZiAobk1pZCA9PSBuTGVmdCkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG5NaWQgPT0gblJpZ2h0KSB7DQorICAgICAgICAgICAgbk1pZC0tOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKENQVlRfV29yZEluZm8gKiBwV29yZCA9IG1fV29yZEFycmF5LkdldEF0KG5NaWQpKSB7DQorICAgICAgICAgICAgaWYgKGZ4ID4gcFdvcmQtPmZXb3JkWCArIG1fcFZULT5HZXRXb3JkV2lkdGgoKnBXb3JkKSAqIFBWVF9IQUxGKSB7DQorICAgICAgICAgICAgICAgIG5MZWZ0ID0gbk1pZDsNCisgICAgICAgICAgICAgICAgbk1pZCA9IChuTGVmdCArIG5SaWdodCkgLyAyOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBuUmlnaHQgPSBuTWlkOw0KKyAgICAgICAgICAgICAgICBuTWlkID0gKG5MZWZ0ICsgblJpZ2h0KSAvIDI7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKENQVlRfV29yZEluZm8gKiBwV29yZCA9IG1fV29yZEFycmF5LkdldEF0KG5NaWQpKSB7DQorICAgICAgICBpZiAoZnggPiBwV29yZC0+ZldvcmRYICsgbV9wVlQtPkdldFdvcmRXaWR0aCgqcFdvcmQpICogUFZUX0hBTEYpIHsNCisgICAgICAgICAgICB3b3JkcGxhY2UubldvcmRJbmRleCA9IG5NaWQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHdvcmRwbGFjZTsNCit9DQordm9pZCBDU2VjdGlvbjo6Q2xlYXJMZWZ0V29yZHMoRlhfSU5UMzIgbldvcmRJbmRleCkNCit7DQorICAgIGZvciAoRlhfSU5UMzIgaSA9IG5Xb3JkSW5kZXg7IGkgPj0gMDsgaS0tKSB7DQorICAgICAgICBkZWxldGUgbV9Xb3JkQXJyYXkuR2V0QXQoaSk7DQorICAgICAgICBtX1dvcmRBcnJheS5SZW1vdmVBdChpKTsNCisgICAgfQ0KK30NCit2b2lkIENTZWN0aW9uOjpDbGVhclJpZ2h0V29yZHMoRlhfSU5UMzIgbldvcmRJbmRleCkNCit7DQorICAgIGZvciAoRlhfSU5UMzIgaSA9IG1fV29yZEFycmF5LkdldFNpemUoKSAtIDE7IGkgPiBuV29yZEluZGV4OyBpLS0pIHsNCisgICAgICAgIGRlbGV0ZSBtX1dvcmRBcnJheS5HZXRBdChpKTsNCisgICAgICAgIG1fV29yZEFycmF5LlJlbW92ZUF0KGkpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1NlY3Rpb246OkNsZWFyTWlkV29yZHMoRlhfSU5UMzIgbkJlZ2luSW5kZXgsIEZYX0lOVDMyIG5FbmRJbmRleCkNCit7DQorICAgIGZvciAoRlhfSU5UMzIgaSA9IG5FbmRJbmRleDsgaSA+IG5CZWdpbkluZGV4OyBpLS0pIHsNCisgICAgICAgIGRlbGV0ZSBtX1dvcmRBcnJheS5HZXRBdChpKTsNCisgICAgICAgIG1fV29yZEFycmF5LlJlbW92ZUF0KGkpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1NlY3Rpb246OkNsZWFyV29yZHMoY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgJiBQbGFjZVJhbmdlKQ0KK3sNCisgICAgQ1BWVF9Xb3JkUGxhY2UgU2VjQmVnaW5Qb3MgPSBHZXRCZWdpbldvcmRQbGFjZSgpOw0KKyAgICBDUFZUX1dvcmRQbGFjZSBTZWNFbmRQb3MgPSBHZXRFbmRXb3JkUGxhY2UoKTsNCisgICAgaWYgKFBsYWNlUmFuZ2UuQmVnaW5Qb3MuV29yZENtcChTZWNCZWdpblBvcykgPj0gMCkgew0KKyAgICAgICAgaWYgKFBsYWNlUmFuZ2UuRW5kUG9zLldvcmRDbXAoU2VjRW5kUG9zKSA8PSAwKSB7DQorICAgICAgICAgICAgQ2xlYXJNaWRXb3JkcyhQbGFjZVJhbmdlLkJlZ2luUG9zLm5Xb3JkSW5kZXgsIFBsYWNlUmFuZ2UuRW5kUG9zLm5Xb3JkSW5kZXgpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBDbGVhclJpZ2h0V29yZHMoUGxhY2VSYW5nZS5CZWdpblBvcy5uV29yZEluZGV4KTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChQbGFjZVJhbmdlLkVuZFBvcy5Xb3JkQ21wKFNlY0VuZFBvcykgPD0gMCkgew0KKyAgICAgICAgQ2xlYXJMZWZ0V29yZHMoUGxhY2VSYW5nZS5FbmRQb3MubldvcmRJbmRleCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBSZXNldFdvcmRBcnJheSgpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1NlY3Rpb246OkNsZWFyV29yZChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKQ0KK3sNCisgICAgZGVsZXRlIG1fV29yZEFycmF5LkdldEF0KHBsYWNlLm5Xb3JkSW5kZXgpOw0KKyAgICBtX1dvcmRBcnJheS5SZW1vdmVBdChwbGFjZS5uV29yZEluZGV4KTsNCit9DQorQ1R5cGVzZXQ6OkNUeXBlc2V0KENTZWN0aW9uICogcFNlY3Rpb24pIDogbV9wU2VjdGlvbihwU2VjdGlvbiksIG1fcFZUKHBTZWN0aW9uLT5tX3BWVCksIG1fcmNSZXQoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZikNCit7DQorfQ0KK0NUeXBlc2V0Ojp+Q1R5cGVzZXQoKQ0KK3sNCit9DQorQ1BWVF9GbG9hdFJlY3QgQ1R5cGVzZXQ6OkNoYXJBcnJheSgpDQorew0KKyAgICBBU1NFUlQobV9wU2VjdGlvbiAhPSBOVUxMKTsNCisgICAgQVNTRVJUKG1fcFZUICE9IE5VTEwpOw0KKyAgICBGWF9GTE9BVCBmTGluZUFzY2VudCA9IG1fcFZULT5HZXRGb250QXNjZW50KG1fcFZULT5HZXREZWZhdWx0Rm9udEluZGV4KCksIG1fcFZULT5HZXRGb250U2l6ZSgpKTsNCisgICAgRlhfRkxPQVQgZkxpbmVEZXNjZW50ID0gbV9wVlQtPkdldEZvbnREZXNjZW50KG1fcFZULT5HZXREZWZhdWx0Rm9udEluZGV4KCksIG1fcFZULT5HZXRGb250U2l6ZSgpKTsNCisgICAgbV9yY1JldC5EZWZhdWx0KCk7DQorICAgIEZYX0ZMT0FUIHggPSAwLjBmLCB5ID0gMC4wZjsNCisgICAgRlhfRkxPQVQgZk5leHRXaWR0aDsNCisgICAgRlhfSU5UMzIgblN0YXJ0ID0gMDsNCisgICAgRlhfRkxPQVQgZk5vZGVXaWR0aCA9IG1fcFZULT5HZXRQbGF0ZVdpZHRoKCkgLyAobV9wVlQtPm1fbkNoYXJBcnJheSA8PSAwID8gMSA6IG1fcFZULT5tX25DaGFyQXJyYXkpOw0KKyAgICBpZiAoQ0xpbmUgKiBwTGluZSA9IG1fcFNlY3Rpb24tPm1fTGluZUFycmF5LkdldEF0KDApKSB7DQorICAgICAgICB4ID0gMC4wZjsNCisgICAgICAgIHkgKz0gIG1fcFZULT5HZXRMaW5lTGVhZGluZyhtX3BTZWN0aW9uLT5tX1NlY0luZm8pOw0KKyAgICAgICAgeSArPSBmTGluZUFzY2VudDsNCisgICAgICAgIG5TdGFydCA9IDA7DQorICAgICAgICBzd2l0Y2ggKG1fcFZULT5HZXRBbGlnbm1lbnQobV9wU2VjdGlvbi0+bV9TZWNJbmZvKSkgew0KKyAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgcExpbmUtPm1fTGluZUluZm8uZkxpbmVYID0gZk5vZGVXaWR0aCAqIFBWVF9IQUxGOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgIG5TdGFydCA9IChtX3BWVC0+bV9uQ2hhckFycmF5IC0gbV9wU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0U2l6ZSgpKSAvIDI7DQorICAgICAgICAgICAgICAgIHBMaW5lLT5tX0xpbmVJbmZvLmZMaW5lWCA9IGZOb2RlV2lkdGggKiBuU3RhcnQgLSBmTm9kZVdpZHRoICogUFZUX0hBTEY7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMjoNCisgICAgICAgICAgICAgICAgblN0YXJ0ID0gbV9wVlQtPm1fbkNoYXJBcnJheSAtIG1fcFNlY3Rpb24tPm1fV29yZEFycmF5LkdldFNpemUoKTsNCisgICAgICAgICAgICAgICAgcExpbmUtPm1fTGluZUluZm8uZkxpbmVYID0gZk5vZGVXaWR0aCAqIG5TdGFydCAtIGZOb2RlV2lkdGggKiBQVlRfSEFMRjsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKEZYX0lOVDMyIHcgPSAwLCBzeiA9IG1fcFNlY3Rpb24tPm1fV29yZEFycmF5LkdldFNpemUoKTsgdyA8IHN6OyB3KyspIHsNCisgICAgICAgICAgICBpZiAodyA+PSBtX3BWVC0+bV9uQ2hhckFycmF5KSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmTmV4dFdpZHRoID0gMDsNCisgICAgICAgICAgICBpZiAoQ1BWVF9Xb3JkSW5mbyAqIHBOZXh0V29yZCA9IChDUFZUX1dvcmRJbmZvICopbV9wU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0QXQodyArIDEpKSB7DQorICAgICAgICAgICAgICAgIHBOZXh0V29yZC0+ZldvcmRUYWlsID0gMDsNCisgICAgICAgICAgICAgICAgZk5leHRXaWR0aCA9IG1fcFZULT5HZXRXb3JkV2lkdGgoKnBOZXh0V29yZCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChDUFZUX1dvcmRJbmZvICogcFdvcmQgPSAoQ1BWVF9Xb3JkSW5mbyAqKW1fcFNlY3Rpb24tPm1fV29yZEFycmF5LkdldEF0KHcpKSB7DQorICAgICAgICAgICAgICAgIHBXb3JkLT5mV29yZFRhaWwgPSAwOw0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCBmV29yZFdpZHRoID0gbV9wVlQtPkdldFdvcmRXaWR0aCgqcFdvcmQpOw0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCBmV29yZEFzY2VudCA9IG1fcFZULT5HZXRXb3JkQXNjZW50KCpwV29yZCk7DQorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGZXb3JkRGVzY2VudCA9IG1fcFZULT5HZXRXb3JkRGVzY2VudCgqcFdvcmQpOw0KKyAgICAgICAgICAgICAgICB4ID0gKEZYX0ZMT0FUKShmTm9kZVdpZHRoICogKHcgKyBuU3RhcnQgKyAwLjUpIC0gZldvcmRXaWR0aCAqIFBWVF9IQUxGKTsNCisgICAgICAgICAgICAgICAgcFdvcmQtPmZXb3JkWCA9IHg7DQorICAgICAgICAgICAgICAgIHBXb3JkLT5mV29yZFkgPSB5Ow0KKyAgICAgICAgICAgICAgICBpZiAodyA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBwTGluZS0+bV9MaW5lSW5mby5mTGluZVggPSB4Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmICh3ICE9IG1fcFNlY3Rpb24tPm1fV29yZEFycmF5LkdldFNpemUoKSAtIDEpDQorICAgICAgICAgICAgICAgICAgICBwV29yZC0+ZldvcmRUYWlsID0gKGZOb2RlV2lkdGggLSAoZldvcmRXaWR0aCArIGZOZXh0V2lkdGgpICogUFZUX0hBTEYgPiAwID8NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZk5vZGVXaWR0aCAtIChmV29yZFdpZHRoICsgZk5leHRXaWR0aCkgKiBQVlRfSEFMRiA6IDApOw0KKyAgICAgICAgICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHBXb3JkLT5mV29yZFRhaWwgPSAwOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHggKz0gZldvcmRXaWR0aDsNCisgICAgICAgICAgICAgICAgZkxpbmVBc2NlbnQgPSBGUERGX01BWChmTGluZUFzY2VudCwgZldvcmRBc2NlbnQpOw0KKyAgICAgICAgICAgICAgICBmTGluZURlc2NlbnQgPSBGUERGX01JTihmTGluZURlc2NlbnQsIGZXb3JkRGVzY2VudCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcExpbmUtPm1fTGluZUluZm8ubkJlZ2luV29yZEluZGV4ID0gMDsNCisgICAgICAgIHBMaW5lLT5tX0xpbmVJbmZvLm5FbmRXb3JkSW5kZXggPSBtX3BTZWN0aW9uLT5tX1dvcmRBcnJheS5HZXRTaXplKCkgLSAxOw0KKyAgICAgICAgcExpbmUtPm1fTGluZUluZm8uZkxpbmVZID0geTsNCisgICAgICAgIHBMaW5lLT5tX0xpbmVJbmZvLmZMaW5lV2lkdGggPSAJeCAtIHBMaW5lLT5tX0xpbmVJbmZvLmZMaW5lWDsNCisgICAgICAgIHBMaW5lLT5tX0xpbmVJbmZvLmZMaW5lQXNjZW50ID0gZkxpbmVBc2NlbnQ7DQorICAgICAgICBwTGluZS0+bV9MaW5lSW5mby5mTGluZURlc2NlbnQgPSBmTGluZURlc2NlbnQ7DQorICAgICAgICB5ICs9ICgtZkxpbmVEZXNjZW50KTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9yY1JldCA9IENQVlRfRmxvYXRSZWN0KDAsIDAsIHgsIHkpOw0KK30NCitDUFZUX1NpemUgQ1R5cGVzZXQ6OkdldEVkaXRTaXplKEZYX0ZMT0FUIGZGb250U2l6ZSkNCit7DQorICAgIEFTU0VSVChtX3BTZWN0aW9uICE9IE5VTEwpOw0KKyAgICBBU1NFUlQobV9wVlQgIT0gTlVMTCk7DQorICAgIFNwbGl0TGluZXMoRkFMU0UsIGZGb250U2l6ZSk7DQorICAgIHJldHVybiBDUFZUX1NpemUobV9yY1JldC5XaWR0aCgpLCBtX3JjUmV0LkhlaWdodCgpKTsNCit9DQorQ1BWVF9GbG9hdFJlY3QgQ1R5cGVzZXQ6OlR5cGVzZXQoKQ0KK3sNCisgICAgQVNTRVJUKG1fcFNlY3Rpb24gIT0gTlVMTCk7DQorICAgIEFTU0VSVChtX3BWVCAhPSBOVUxMKTsNCisgICAgbV9wU2VjdGlvbi0+bV9MaW5lQXJyYXkuRW1wdHkoKTsNCisgICAgU3BsaXRMaW5lcyhUUlVFLCAwLjBmKTsNCisgICAgbV9wU2VjdGlvbi0+bV9MaW5lQXJyYXkuQ2xlYXIoKTsNCisgICAgT3V0cHV0TGluZXMoKTsNCisgICAgcmV0dXJuIG1fcmNSZXQ7DQorfQ0KK3N0YXRpYyBpbnQgc3BlY2lhbF9jaGFyc1sxMjhdID0gew0KKyAgICAweDAwMDAsIDB4MDAwQywgMHgwMDA4LCAweDAwMEMsIDB4MDAwOCwgMHgwMDAwLCAweDAwMjAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDgsIDB4MDAwOCwgMHgwMDAwLCAweDAwMTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMjgsDQorICAgIDB4MDAwQywgMHgwMDA4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDI4LCAweDAwMjgsIDB4MDAyOCwgMHgwMDI4LA0KKyAgICAweDAwMDIsIDB4MDAwMiwgMHgwMDAyLCAweDAwMDIsIDB4MDAwMiwgMHgwMDAyLCAweDAwMDIsIDB4MDAwMiwNCisgICAgMHgwMDAyLCAweDAwMDIsIDB4MDAwOCwgMHgwMDA4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDgsDQorICAgIDB4MDAwMCwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLA0KKyAgICAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwNCisgICAgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsDQorICAgIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwQywgMHgwMDAwLCAweDAwMDgsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwNCisgICAgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsDQorICAgIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLA0KKyAgICAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMEMsIDB4MDAwMCwgMHgwMDA4LCAweDAwMDAsIDB4MDAwMCwNCit9Ow0KK3N0YXRpYyBGWF9CT09MIElzTGF0aW4oRlhfV09SRCB3b3JkKQ0KK3sNCisgICAgaWYgKHdvcmQgPD0gMHgwMDdGKSB7DQorICAgICAgICBpZiAoc3BlY2lhbF9jaGFyc1t3b3JkXSAmIDB4MDAwMSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICgod29yZCA+PSAweDAwQzAgJiYgd29yZCA8PSAweDAwRkYpIHx8DQorICAgICAgICAgICAgKHdvcmQgPj0gMHgwMTAwICYmIHdvcmQgPD0gMHgwMjRGKSB8fA0KKyAgICAgICAgICAgICh3b3JkID49IDB4MUUwMCAmJiB3b3JkIDw9IDB4MUVGRikgfHwNCisgICAgICAgICAgICAod29yZCA+PSAweDJDNjAgJiYgd29yZCA8PSAweDJDN0YpIHx8DQorICAgICAgICAgICAgKHdvcmQgPj0gMHhBNzIwICYmIHdvcmQgPD0gMHhBN0ZGKSB8fA0KKyAgICAgICAgICAgICh3b3JkID49IDB4RkYyMSAmJiB3b3JkIDw9IDB4RkYzQSkgfHwNCisgICAgICAgICAgICAod29yZCA+PSAweEZGNDEgJiYgd29yZCA8PSAweEZGNUEpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK3N0YXRpYyBGWF9CT09MIElzRGlnaXQoRlhfRFdPUkQgd29yZCkNCit7DQorICAgIHJldHVybiAod29yZCA+PSAweDAwMzAgJiYgd29yZCA8PSAweDAwMzkpID8gVFJVRSA6IEZBTFNFOw0KK30NCitzdGF0aWMgRlhfQk9PTCBJc0NKSyhGWF9EV09SRCB3b3JkKQ0KK3sNCisgICAgaWYgKCh3b3JkID49IDB4MTEwMCAmJiB3b3JkIDw9IDB4MTFGRikgfHwNCisgICAgICAgICAgICAod29yZCA+PSAweDJFODAgJiYgd29yZCA8PSAweDJGRkYpIHx8DQorICAgICAgICAgICAgKHdvcmQgPj0gMHgzMDQwICYmIHdvcmQgPD0gMHg5RkJGKSB8fA0KKyAgICAgICAgICAgICh3b3JkID49IDB4QUMwMCAmJiB3b3JkIDw9IDB4RDdBRikgfHwNCisgICAgICAgICAgICAod29yZCA+PSAweEY5MDAgJiYgd29yZCA8PSAweEZBRkYpIHx8DQorICAgICAgICAgICAgKHdvcmQgPj0gMHhGRTMwICYmIHdvcmQgPD0gMHhGRTRGKSB8fA0KKyAgICAgICAgICAgICh3b3JkID49IDB4MjAwMDAgJiYgd29yZCA8PSAweDJBNkRGKSB8fA0KKyAgICAgICAgICAgICh3b3JkID49IDB4MkY4MDAgJiYgd29yZCA8PSAweDJGQTFGKSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKHdvcmQgPj0gMHgzMDAwICYmIHdvcmQgPD0gMHgzMDNGKSB7DQorICAgICAgICBpZiAod29yZCA9PSAweDMwMDUgfHwgd29yZCA9PSAweDMwMDYgfHwgd29yZCA9PSAweDMwMjEgfHwgd29yZCA9PSAweDMwMjIgfHwNCisgICAgICAgICAgICAgICAgd29yZCA9PSAweDMwMjMgfHwgd29yZCA9PSAweDMwMjQgfHwgd29yZCA9PSAweDMwMjUgfHwgd29yZCA9PSAweDMwMjYgfHwNCisgICAgICAgICAgICAgICAgd29yZCA9PSAweDMwMjcgfHwgd29yZCA9PSAweDMwMjggfHwgd29yZCA9PSAweDMwMjkgfHwgd29yZCA9PSAweDMwMzEgfHwNCisgICAgICAgICAgICAgICAgd29yZCA9PSAweDMwMzIgfHwgd29yZCA9PSAweDMwMzMgfHwgd29yZCA9PSAweDMwMzQgfHwgd29yZCA9PSAweDMwMzUpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAod29yZCA+PSAweEZGNjYgJiYgd29yZCA8PSAweEZGOUQpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorc3RhdGljIEZYX0JPT0wgSXNQdW5jdHVhdGlvbihGWF9EV09SRCB3b3JkKQ0KK3sNCisgICAgaWYgKHdvcmQgPD0gMHgwMDdGKSB7DQorICAgICAgICBpZiAoKHNwZWNpYWxfY2hhcnNbd29yZF0gPj4gMykgJiAxKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAod29yZCA+PSAweDAwODAgJiYgd29yZCA8PSAweDAwRkYpIHsNCisgICAgICAgIGlmICh3b3JkID09IDB4MDA4MiB8fCB3b3JkID09IDB4MDA4NCB8fCB3b3JkID09IDB4MDA4NSB8fCB3b3JkID09IDB4MDA5MSB8fA0KKyAgICAgICAgICAgICAgICB3b3JkID09IDB4MDA5MiB8fCB3b3JkID09IDB4MDA5MyB8fCB3b3JkIDw9IDB4MDA5NCB8fCB3b3JkID09IDB4MDA5NiB8fA0KKyAgICAgICAgICAgICAgICB3b3JkID09IDB4MDBCNCB8fCB3b3JkID09IDB4MDBCOCkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKHdvcmQgPj0gMHgyMDAwICYmIHdvcmQgPD0gMHgyMDZGKSB7DQorICAgICAgICBpZiAod29yZCA9PSAweDIwMTAgfHwgd29yZCA9PSAweDIwMTEgfHwgd29yZCA9PSAweDIwMTIgfHwgd29yZCA9PSAweDIwMTMgfHwNCisgICAgICAgICAgICAgICAgd29yZCA9PSAweDIwMTggfHwgd29yZCA9PSAweDIwMTkgfHwgd29yZCA9PSAweDIwMUEgfHwgd29yZCA9PSAweDIwMUIgfHwNCisgICAgICAgICAgICAgICAgd29yZCA9PSAweDIwMUMgfHwgd29yZCA9PSAweDIwMUQgfHwgd29yZCA9PSAweDIwMUUgfHwgd29yZCA9PSAweDIwMUYgfHwNCisgICAgICAgICAgICAgICAgd29yZCA9PSAweDIwMzIgfHwgd29yZCA9PSAweDIwMzMgfHwgd29yZCA9PSAweDIwMzQgfHwgd29yZCA9PSAweDIwMzUgfHwNCisgICAgICAgICAgICAgICAgd29yZCA9PSAweDIwMzYgfHwgd29yZCA9PSAweDIwMzcgfHwgd29yZCA9PSAweDIwM0MgfHwgd29yZCA9PSAweDIwM0QgfHwNCisgICAgICAgICAgICAgICAgd29yZCA9PSAweDIwM0UgfHwgd29yZCA9PSAweDIwNDQpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmICh3b3JkID49IDB4MzAwMCAmJiB3b3JkIDw9IDB4MzAzRikgew0KKyAgICAgICAgaWYgKHdvcmQgPT0gMHgzMDAxIHx8IHdvcmQgPT0gMHgzMDAyIHx8IHdvcmQgPT0gMHgzMDAzIHx8IHdvcmQgPT0gMHgzMDA1IHx8DQorICAgICAgICAgICAgICAgIHdvcmQgPT0gMHgzMDA5IHx8IHdvcmQgPT0gMHgzMDBBIHx8IHdvcmQgPT0gMHgzMDBCIHx8IHdvcmQgPT0gMHgzMDBDIHx8DQorICAgICAgICAgICAgICAgIHdvcmQgPT0gMHgzMDBEIHx8IHdvcmQgPT0gMHgzMDBGIHx8IHdvcmQgPT0gMHgzMDBFIHx8IHdvcmQgPT0gMHgzMDEwIHx8DQorICAgICAgICAgICAgICAgIHdvcmQgPT0gMHgzMDExIHx8IHdvcmQgPT0gMHgzMDE0IHx8IHdvcmQgPT0gMHgzMDE1IHx8IHdvcmQgPT0gMHgzMDE2IHx8DQorICAgICAgICAgICAgICAgIHdvcmQgPT0gMHgzMDE3IHx8IHdvcmQgPT0gMHgzMDE4IHx8IHdvcmQgPT0gMHgzMDE5IHx8IHdvcmQgPT0gMHgzMDFBIHx8DQorICAgICAgICAgICAgICAgIHdvcmQgPT0gMHgzMDFCIHx8IHdvcmQgPT0gMHgzMDFEIHx8IHdvcmQgPT0gMHgzMDFFIHx8IHdvcmQgPT0gMHgzMDFGKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAod29yZCA+PSAweEZFNTAgJiYgd29yZCA8PSAweEZFNkYpIHsNCisgICAgICAgIGlmICgod29yZCA+PSAweEZFNTAgJiYgd29yZCA8PSAweEZFNUUpIHx8IHdvcmQgPT0gMHhGRTYzKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAod29yZCA+PSAweEZGMDAgJiYgd29yZCA8PSAweEZGRUYpIHsNCisgICAgICAgIGlmICh3b3JkID09IDB4RkYwMSB8fCB3b3JkID09IDB4RkYwMiB8fCB3b3JkID09IDB4RkYwNyB8fCB3b3JkID09IDB4RkYwOCB8fA0KKyAgICAgICAgICAgICAgICB3b3JkID09IDB4RkYwOSB8fCB3b3JkID09IDB4RkYwQyB8fCB3b3JkID09IDB4RkYwRSB8fCB3b3JkID09IDB4RkYwRiB8fA0KKyAgICAgICAgICAgICAgICB3b3JkID09IDB4RkYxQSB8fCB3b3JkID09IDB4RkYxQiB8fCB3b3JkID09IDB4RkYxRiB8fCB3b3JkID09IDB4RkYzQiB8fA0KKyAgICAgICAgICAgICAgICB3b3JkID09IDB4RkYzRCB8fCB3b3JkID09IDB4RkY0MCB8fCB3b3JkID09IDB4RkY1QiB8fCB3b3JkID09IDB4RkY1QyB8fA0KKyAgICAgICAgICAgICAgICB3b3JkID09IDB4RkY1RCB8fCB3b3JkID09IDB4RkY2MSB8fCB3b3JkID09IDB4RkY2MiB8fCB3b3JkID09IDB4RkY2MyB8fA0KKyAgICAgICAgICAgICAgICB3b3JkID09IDB4RkY2NCB8fCB3b3JkID09IDB4RkY2NSB8fCB3b3JkID09IDB4RkY5RSB8fCB3b3JkID09IDB4RkY5Rikgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorc3RhdGljIEZYX0JPT0wgSXNDb25uZWN0aXZlU3ltYm9sKEZYX0RXT1JEIHdvcmQpDQorew0KKyAgICBpZiAod29yZCA8PSAweDAwN0YpIHsNCisgICAgICAgIGlmICgoc3BlY2lhbF9jaGFyc1t3b3JkXSA+PiA1KSAmIDEpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK3N0YXRpYyBGWF9CT09MIElzT3BlblN0eWxlUHVuY3R1YXRpb24oRlhfRFdPUkQgd29yZCkNCit7DQorICAgIGlmICh3b3JkIDw9IDB4MDA3Rikgew0KKyAgICAgICAgaWYgKChzcGVjaWFsX2NoYXJzW3dvcmRdID4+IDIpICYgMSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKHdvcmQgPT0gMHgzMDBBIHx8IHdvcmQgPT0gMHgzMDBDIHx8IHdvcmQgPT0gMHgzMDBFIHx8IHdvcmQgPT0gMHgzMDEwIHx8DQorICAgICAgICAgICAgICAgd29yZCA9PSAweDMwMTQgfHwgd29yZCA9PSAweDMwMTYgfHwgd29yZCA9PSAweDMwMTggfHwgd29yZCA9PSAweDMwMUEgfHwNCisgICAgICAgICAgICAgICB3b3JkID09IDB4RkYwOCB8fCB3b3JkID09IDB4RkYzQiB8fCB3b3JkID09IDB4RkY1QiB8fCB3b3JkID09IDB4RkY2Mikgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitzdGF0aWMgRlhfQk9PTCBJc0N1cnJlbmN5U3ltYm9sKEZYX1dPUkQgd29yZCkNCit7DQorICAgIGlmICh3b3JkID09IDB4MDAyNCB8fCB3b3JkID09IDB4MDA4MCB8fCB3b3JkID09IDB4MDBBMiB8fCB3b3JkID09IDB4MDBBMyB8fA0KKyAgICAgICAgICAgIHdvcmQgPT0gMHgwMEE0IHx8IHdvcmQgPT0gMHgwMEE1IHx8ICh3b3JkID49IDB4MjBBMCAmJiB3b3JkIDw9IDB4MjBDRikgfHwNCisgICAgICAgICAgICB3b3JkID09IDB4RkU2OSB8fCB3b3JkID09IDB4RkYwNCB8fCB3b3JkID09IDB4RkZFMCB8fCB3b3JkID09IDB4RkZFMSB8fA0KKyAgICAgICAgICAgIHdvcmQgPT0gMHhGRkU1IHx8IHdvcmQgPT0gMHhGRkU2KSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK3N0YXRpYyBGWF9CT09MIElzUHJlZml4U3ltYm9sKEZYX1dPUkQgd29yZCkNCit7DQorICAgIGlmIChJc0N1cnJlbmN5U3ltYm9sKHdvcmQpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAod29yZCA9PSAweDIxMTYpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorc3RhdGljIEZYX0JPT0wgSXNTcGFjZShGWF9XT1JEIHdvcmQpDQorew0KKyAgICByZXR1cm4gKHdvcmQgPT0gMHgwMDIwIHx8IHdvcmQgPT0gMHgzMDAwKSA/IFRSVUUgOiBGQUxTRTsNCit9DQorc3RhdGljIEZYX0JPT0wgTmVlZERpdmlzaW9uKEZYX1dPUkQgcHJldldvcmQsIEZYX1dPUkQgY3VyV29yZCkNCit7DQorICAgIGlmICgoSXNMYXRpbihwcmV2V29yZCkgfHwgSXNEaWdpdChwcmV2V29yZCkpICYmIChJc0xhdGluKGN1cldvcmQpIHx8IElzRGlnaXQoY3VyV29yZCkpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0gZWxzZSBpZiAoSXNTcGFjZShjdXJXb3JkKSB8fCBJc1B1bmN0dWF0aW9uKGN1cldvcmQpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0gZWxzZSBpZiAoSXNDb25uZWN0aXZlU3ltYm9sKHByZXZXb3JkKSB8fCBJc0Nvbm5lY3RpdmVTeW1ib2woY3VyV29yZCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfSBlbHNlIGlmIChJc1NwYWNlKHByZXZXb3JkKSB8fCBJc1B1bmN0dWF0aW9uKHByZXZXb3JkKSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0gZWxzZSBpZiAoSXNQcmVmaXhTeW1ib2wocHJldldvcmQpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0gZWxzZSBpZiAoSXNQcmVmaXhTeW1ib2woY3VyV29yZCkgfHwgSXNDSksoY3VyV29yZCkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9IGVsc2UgaWYgKElzQ0pLKHByZXZXb3JkKSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCit2b2lkIENUeXBlc2V0OjpTcGxpdExpbmVzKEZYX0JPT0wgYlR5cGVzZXQsIEZYX0ZMT0FUIGZGb250U2l6ZSkNCit7DQorICAgIEFTU0VSVChtX3BWVCAhPSBOVUxMKTsNCisgICAgQVNTRVJUKG1fcFNlY3Rpb24gIT0gTlVMTCk7DQorICAgIEZYX0lOVDMyIG5MaW5lSGVhZCA9IDA7DQorICAgIEZYX0lOVDMyIG5MaW5lVGFpbCA9IDA7DQorICAgIEZYX0ZMT0FUIGZNYXhYID0gMC4wZiwgZk1heFkgPSAwLjBmOw0KKyAgICBGWF9GTE9BVCBmTGluZVdpZHRoID0gMC4wZiwgZkJhY2t1cExpbmVXaWR0aCA9IDAuMGY7DQorICAgIEZYX0ZMT0FUIGZMaW5lQXNjZW50ID0gMC4wZiwgZkJhY2t1cExpbmVBc2NlbnQgPSAwLjBmOw0KKyAgICBGWF9GTE9BVCBmTGluZURlc2NlbnQgPSAwLjBmLCBmQmFja3VwTGluZURlc2NlbnQgPSAwLjBmOw0KKyAgICBGWF9JTlQzMiBuV29yZFN0YXJ0UG9zID0gMDsNCisgICAgRlhfQk9PTCBiRnVsbFdvcmQgPSBGQUxTRTsNCisgICAgRlhfSU5UMzIgbkxpbmVGdWxsV29yZEluZGV4ID0gMDsNCisgICAgRlhfSU5UMzIgbkNoYXJJbmRleCA9IDA7DQorICAgIENQVlRfTGluZUluZm8gbGluZTsNCisgICAgRlhfRkxPQVQgZldvcmRXaWR0aCA9IDA7DQorICAgIEZYX0ZMT0FUIGZUeXBlc2V0V2lkdGggPSBGUERGX01BWChtX3BWVC0+R2V0UGxhdGVXaWR0aCgpIC0gbV9wVlQtPkdldExpbmVJbmRlbnQobV9wU2VjdGlvbi0+bV9TZWNJbmZvKSwgMC4wZik7DQorICAgIEZYX0lOVDMyIG5Ub3RhbFdvcmRzID0gbV9wU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0U2l6ZSgpOw0KKyAgICBGWF9CT09MIGJPcGVuZWQgPSBGQUxTRTsNCisgICAgaWYgKG5Ub3RhbFdvcmRzID4gMCkgew0KKyAgICAgICAgRlhfSU5UMzIgaSA9IDA7DQorICAgICAgICB3aGlsZSAoaSA8IG5Ub3RhbFdvcmRzKSB7DQorICAgICAgICAgICAgQ1BWVF9Xb3JkSW5mbyAqIHBXb3JkID0gbV9wU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0QXQoaSk7DQorICAgICAgICAgICAgQ1BWVF9Xb3JkSW5mbyogcE9sZFdvcmQgPSBwV29yZDsNCisgICAgICAgICAgICBpZiAoaSA+IDApIHsNCisgICAgICAgICAgICAgICAgcE9sZFdvcmQgPSBtX3BTZWN0aW9uLT5tX1dvcmRBcnJheS5HZXRBdChpIC0gMSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwV29yZCkgew0KKyAgICAgICAgICAgICAgICBpZiAoYlR5cGVzZXQpIHsNCisgICAgICAgICAgICAgICAgICAgIGZMaW5lQXNjZW50ID0gRlBERl9NQVgoZkxpbmVBc2NlbnQsIG1fcFZULT5HZXRXb3JkQXNjZW50KCpwV29yZCwgVFJVRSkpOw0KKyAgICAgICAgICAgICAgICAgICAgZkxpbmVEZXNjZW50ID0gRlBERl9NSU4oZkxpbmVEZXNjZW50LCBtX3BWVC0+R2V0V29yZERlc2NlbnQoKnBXb3JkLCBUUlVFKSk7DQorICAgICAgICAgICAgICAgICAgICBmV29yZFdpZHRoID0gbV9wVlQtPkdldFdvcmRXaWR0aCgqcFdvcmQpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgZkxpbmVBc2NlbnQgPSBGUERGX01BWChmTGluZUFzY2VudCwgbV9wVlQtPkdldFdvcmRBc2NlbnQoKnBXb3JkLCBmRm9udFNpemUpKTsNCisgICAgICAgICAgICAgICAgICAgIGZMaW5lRGVzY2VudCA9IEZQREZfTUlOKGZMaW5lRGVzY2VudCwgbV9wVlQtPkdldFdvcmREZXNjZW50KCpwV29yZCwgZkZvbnRTaXplKSk7DQorICAgICAgICAgICAgICAgICAgICBmV29yZFdpZHRoID0gbV9wVlQtPkdldFdvcmRXaWR0aChwV29yZC0+bkZvbnRJbmRleCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBXb3JkLT5Xb3JkLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wVlQtPm1fd1N1YldvcmQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BWVC0+bV9mQ2hhclNwYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wVlQtPm1fbkhvcnpTY2FsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZGb250U2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBXb3JkLT5mV29yZFRhaWwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoIWJPcGVuZWQpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChJc09wZW5TdHlsZVB1bmN0dWF0aW9uKHBXb3JkLT5Xb3JkKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJPcGVuZWQgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJGdWxsV29yZCA9IFRSVUU7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBPbGRXb3JkICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTmVlZERpdmlzaW9uKHBPbGRXb3JkLT5Xb3JkLCBwV29yZC0+V29yZCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYkZ1bGxXb3JkID0gVFJVRTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoIUlzU3BhY2UocFdvcmQtPldvcmQpICYmICFJc09wZW5TdHlsZVB1bmN0dWF0aW9uKHBXb3JkLT5Xb3JkKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJPcGVuZWQgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoYkZ1bGxXb3JkKSB7DQorICAgICAgICAgICAgICAgICAgICBiRnVsbFdvcmQgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChuQ2hhckluZGV4ID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5MaW5lRnVsbFdvcmRJbmRleCArKzsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG5Xb3JkU3RhcnRQb3MgPSBpOw0KKyAgICAgICAgICAgICAgICAgICAgZkJhY2t1cExpbmVXaWR0aCA9IGZMaW5lV2lkdGg7DQorICAgICAgICAgICAgICAgICAgICBmQmFja3VwTGluZUFzY2VudCA9IGZMaW5lQXNjZW50Ow0KKyAgICAgICAgICAgICAgICAgICAgZkJhY2t1cExpbmVEZXNjZW50ID0gZkxpbmVEZXNjZW50Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG5DaGFySW5kZXgrKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fcFZULT5tX2JMaW1pdFdpZHRoICYmIGZUeXBlc2V0V2lkdGggPiAwICYmDQorICAgICAgICAgICAgICAgICAgICBmTGluZVdpZHRoICsgZldvcmRXaWR0aCA+IGZUeXBlc2V0V2lkdGgpIHsNCisgICAgICAgICAgICAgICAgaWYgKG5MaW5lRnVsbFdvcmRJbmRleCA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGkgPSBuV29yZFN0YXJ0UG9zOw0KKyAgICAgICAgICAgICAgICAgICAgZkxpbmVXaWR0aCA9IGZCYWNrdXBMaW5lV2lkdGg7DQorICAgICAgICAgICAgICAgICAgICBmTGluZUFzY2VudCA9IGZCYWNrdXBMaW5lQXNjZW50Ow0KKyAgICAgICAgICAgICAgICAgICAgZkxpbmVEZXNjZW50ID0gZkJhY2t1cExpbmVEZXNjZW50Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChuQ2hhckluZGV4ID09IDEpIHsNCisgICAgICAgICAgICAgICAgICAgIGZMaW5lV2lkdGggPSAgZldvcmRXaWR0aDsNCisgICAgICAgICAgICAgICAgICAgIGkrKzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBuTGluZVRhaWwgPSBpIC0gMTsNCisgICAgICAgICAgICAgICAgaWYgKGJUeXBlc2V0KSB7DQorICAgICAgICAgICAgICAgICAgICBsaW5lLm5CZWdpbldvcmRJbmRleCA9IG5MaW5lSGVhZDsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUubkVuZFdvcmRJbmRleCA9IG5MaW5lVGFpbDsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUublRvdGFsV29yZCA9IG5MaW5lVGFpbCAtIG5MaW5lSGVhZCArIDE7DQorICAgICAgICAgICAgICAgICAgICBsaW5lLmZMaW5lV2lkdGggPSBmTGluZVdpZHRoOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZS5mTGluZUFzY2VudCA9IGZMaW5lQXNjZW50Ow0KKyAgICAgICAgICAgICAgICAgICAgbGluZS5mTGluZURlc2NlbnQgPSBmTGluZURlc2NlbnQ7DQorICAgICAgICAgICAgICAgICAgICBtX3BTZWN0aW9uLT5BZGRMaW5lKGxpbmUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZNYXhZICs9IChmTGluZUFzY2VudCArIG1fcFZULT5HZXRMaW5lTGVhZGluZyhtX3BTZWN0aW9uLT5tX1NlY0luZm8pKTsNCisgICAgICAgICAgICAgICAgZk1heFkgKz0gKC1mTGluZURlc2NlbnQpOw0KKyAgICAgICAgICAgICAgICBmTWF4WCA9IEZQREZfTUFYKGZMaW5lV2lkdGgsIGZNYXhYKTsNCisgICAgICAgICAgICAgICAgbkxpbmVIZWFkID0gaTsNCisgICAgICAgICAgICAgICAgZkxpbmVXaWR0aCA9IDAuMGY7DQorICAgICAgICAgICAgICAgIGZMaW5lQXNjZW50ID0gMC4wZjsNCisgICAgICAgICAgICAgICAgZkxpbmVEZXNjZW50ID0gMC4wZjsNCisgICAgICAgICAgICAgICAgbkNoYXJJbmRleCA9IDA7DQorICAgICAgICAgICAgICAgIG5MaW5lRnVsbFdvcmRJbmRleCA9IDA7DQorICAgICAgICAgICAgICAgIGJGdWxsV29yZCA9IEZBTFNFOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGZMaW5lV2lkdGggKz0gZldvcmRXaWR0aDsNCisgICAgICAgICAgICAgICAgaSsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChuTGluZUhlYWQgPD0gblRvdGFsV29yZHMgLSAxKSB7DQorICAgICAgICAgICAgbkxpbmVUYWlsID0gblRvdGFsV29yZHMgLSAxOw0KKyAgICAgICAgICAgIGlmIChiVHlwZXNldCkgew0KKyAgICAgICAgICAgICAgICBsaW5lLm5CZWdpbldvcmRJbmRleCA9IG5MaW5lSGVhZDsNCisgICAgICAgICAgICAgICAgbGluZS5uRW5kV29yZEluZGV4ID0gbkxpbmVUYWlsOw0KKyAgICAgICAgICAgICAgICBsaW5lLm5Ub3RhbFdvcmQgPSBuTGluZVRhaWwgLSBuTGluZUhlYWQgKyAxOw0KKyAgICAgICAgICAgICAgICBsaW5lLmZMaW5lV2lkdGggPSBmTGluZVdpZHRoOw0KKyAgICAgICAgICAgICAgICBsaW5lLmZMaW5lQXNjZW50ID0gZkxpbmVBc2NlbnQ7DQorICAgICAgICAgICAgICAgIGxpbmUuZkxpbmVEZXNjZW50ID0gZkxpbmVEZXNjZW50Ow0KKyAgICAgICAgICAgICAgICBtX3BTZWN0aW9uLT5BZGRMaW5lKGxpbmUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmTWF4WSArPSAoZkxpbmVBc2NlbnQgKyBtX3BWVC0+R2V0TGluZUxlYWRpbmcobV9wU2VjdGlvbi0+bV9TZWNJbmZvKSk7DQorICAgICAgICAgICAgZk1heFkgKz0gKC1mTGluZURlc2NlbnQpOw0KKyAgICAgICAgICAgIGZNYXhYID0gRlBERl9NQVgoZkxpbmVXaWR0aCwgZk1heFgpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKGJUeXBlc2V0KSB7DQorICAgICAgICAgICAgZkxpbmVBc2NlbnQgPSBtX3BWVC0+R2V0TGluZUFzY2VudChtX3BTZWN0aW9uLT5tX1NlY0luZm8pOw0KKyAgICAgICAgICAgIGZMaW5lRGVzY2VudCA9IG1fcFZULT5HZXRMaW5lRGVzY2VudChtX3BTZWN0aW9uLT5tX1NlY0luZm8pOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBmTGluZUFzY2VudCA9IG1fcFZULT5HZXRGb250QXNjZW50KG1fcFZULT5HZXREZWZhdWx0Rm9udEluZGV4KCksIGZGb250U2l6ZSk7DQorICAgICAgICAgICAgZkxpbmVEZXNjZW50ID0gbV9wVlQtPkdldEZvbnREZXNjZW50KG1fcFZULT5HZXREZWZhdWx0Rm9udEluZGV4KCksIGZGb250U2l6ZSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYlR5cGVzZXQpIHsNCisgICAgICAgICAgICBsaW5lLm5CZWdpbldvcmRJbmRleCA9IC0xOw0KKyAgICAgICAgICAgIGxpbmUubkVuZFdvcmRJbmRleCA9IC0xOw0KKyAgICAgICAgICAgIGxpbmUublRvdGFsV29yZCA9IDA7DQorICAgICAgICAgICAgbGluZS5mTGluZVdpZHRoID0gMDsNCisgICAgICAgICAgICBsaW5lLmZMaW5lQXNjZW50ID0gZkxpbmVBc2NlbnQ7DQorICAgICAgICAgICAgbGluZS5mTGluZURlc2NlbnQgPSBmTGluZURlc2NlbnQ7DQorICAgICAgICAgICAgbV9wU2VjdGlvbi0+QWRkTGluZShsaW5lKTsNCisgICAgICAgIH0NCisgICAgICAgIGZNYXhZICs9IChtX3BWVC0+R2V0TGluZUxlYWRpbmcobV9wU2VjdGlvbi0+bV9TZWNJbmZvKSArIGZMaW5lQXNjZW50ICsgKC1mTGluZURlc2NlbnQpKTsNCisgICAgfQ0KKyAgICBtX3JjUmV0ID0gQ1BWVF9GbG9hdFJlY3QoMCwgMCwgZk1heFgsIGZNYXhZKTsNCit9DQordm9pZCBDVHlwZXNldDo6T3V0cHV0TGluZXMoKQ0KK3sNCisgICAgQVNTRVJUKG1fcFZUICE9IE5VTEwpOw0KKyAgICBBU1NFUlQobV9wU2VjdGlvbiAhPSBOVUxMKTsNCisgICAgRlhfRkxPQVQgZk1pblggPSAwLjBmLCBmTWluWSA9IDAuMGYsIGZNYXhYID0gMC4wZiwgZk1heFkgPSAwLjBmOw0KKyAgICBGWF9GTE9BVCBmUG9zWCA9IDAuMGYsIGZQb3NZID0gMC4wZjsNCisgICAgRlhfRkxPQVQgZkxpbmVJbmRlbnQgPSBtX3BWVC0+R2V0TGluZUluZGVudChtX3BTZWN0aW9uLT5tX1NlY0luZm8pOw0KKyAgICBGWF9GTE9BVCBmVHlwZXNldFdpZHRoID0gRlBERl9NQVgobV9wVlQtPkdldFBsYXRlV2lkdGgoKSAtIGZMaW5lSW5kZW50LCAwLjBmKTsNCisgICAgc3dpdGNoIChtX3BWVC0+R2V0QWxpZ25tZW50KG1fcFNlY3Rpb24tPm1fU2VjSW5mbykpIHsNCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgZk1pblggPSAwLjBmOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgIGZNaW5YID0gKGZUeXBlc2V0V2lkdGggLSBtX3JjUmV0LldpZHRoKCkpICAqIFBWVF9IQUxGOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIGZNaW5YID0gZlR5cGVzZXRXaWR0aCAtIG1fcmNSZXQuV2lkdGgoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICBmTWF4WCA9IGZNaW5YICsgbV9yY1JldC5XaWR0aCgpOw0KKyAgICBmTWluWSA9IDAuMGY7DQorICAgIGZNYXhZID0gbV9yY1JldC5IZWlnaHQoKTsNCisgICAgRlhfSU5UMzIgblRvdGFsTGluZXMgPSBtX3BTZWN0aW9uLT5tX0xpbmVBcnJheS5HZXRTaXplKCk7DQorICAgIGlmIChuVG90YWxMaW5lcyA+IDApIHsNCisgICAgICAgIG1fcFNlY3Rpb24tPm1fU2VjSW5mby5uVG90YWxMaW5lID0gblRvdGFsTGluZXM7DQorICAgICAgICBmb3IgKEZYX0lOVDMyIGwgPSAwOyBsIDwgblRvdGFsTGluZXM7IGwrKykgew0KKyAgICAgICAgICAgIGlmIChDTGluZSAqIHBMaW5lID0gbV9wU2VjdGlvbi0+bV9MaW5lQXJyYXkuR2V0QXQobCkpIHsNCisgICAgICAgICAgICAgICAgc3dpdGNoIChtX3BWVC0+R2V0QWxpZ25tZW50KG1fcFNlY3Rpb24tPm1fU2VjSW5mbykpIHsNCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgICAgICAgICAgICAgZlBvc1ggPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZQb3NYID0gKGZUeXBlc2V0V2lkdGggLSBwTGluZS0+bV9MaW5lSW5mby5mTGluZVdpZHRoKSAqIFBWVF9IQUxGOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZQb3NYID0gZlR5cGVzZXRXaWR0aCAtIHBMaW5lLT5tX0xpbmVJbmZvLmZMaW5lV2lkdGg7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZlBvc1ggKz0gZkxpbmVJbmRlbnQ7DQorICAgICAgICAgICAgICAgIGZQb3NZICs9IG1fcFZULT5HZXRMaW5lTGVhZGluZyhtX3BTZWN0aW9uLT5tX1NlY0luZm8pOw0KKyAgICAgICAgICAgICAgICBmUG9zWSArPSBwTGluZS0+bV9MaW5lSW5mby5mTGluZUFzY2VudDsNCisgICAgICAgICAgICAgICAgcExpbmUtPm1fTGluZUluZm8uZkxpbmVYID0gZlBvc1ggLSBmTWluWDsNCisgICAgICAgICAgICAgICAgcExpbmUtPm1fTGluZUluZm8uZkxpbmVZID0gZlBvc1kgLSBmTWluWTsNCisgICAgICAgICAgICAgICAgZm9yIChGWF9JTlQzMiB3ID0gcExpbmUtPm1fTGluZUluZm8ubkJlZ2luV29yZEluZGV4OyB3IDw9IHBMaW5lLT5tX0xpbmVJbmZvLm5FbmRXb3JkSW5kZXg7IHcrKykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKENQVlRfV29yZEluZm8gKiBwV29yZCA9IG1fcFNlY3Rpb24tPm1fV29yZEFycmF5LkdldEF0KHcpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcFdvcmQtPmZXb3JkWCA9IGZQb3NYIC0gZk1pblg7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBXb3JkLT5wV29yZFByb3BzKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocFdvcmQtPnBXb3JkUHJvcHMtPm5TY3JpcHRUeXBlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQVlRXT1JEX1NDUklQVF9OT1JNQUw6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFdvcmQtPmZXb3JkWSA9IGZQb3NZIC0gZk1pblk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFBWVFdPUkRfU0NSSVBUX1NVUEVSOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBXb3JkLT5mV29yZFkgPSBmUG9zWSAtIG1fcFZULT5HZXRXb3JkQXNjZW50KCpwV29yZCkgLSBmTWluWTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUFZUV09SRF9TQ1JJUFRfU1VCOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBXb3JkLT5mV29yZFkgPSBmUG9zWSAtIG1fcFZULT5HZXRXb3JkRGVzY2VudCgqcFdvcmQpIC0gZk1pblk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwV29yZC0+ZldvcmRZID0gZlBvc1kgLSBmTWluWTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgZlBvc1ggKz0gbV9wVlQtPkdldFdvcmRXaWR0aCgqcFdvcmQpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZQb3NZICs9ICgtcExpbmUtPm1fTGluZUluZm8uZkxpbmVEZXNjZW50KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9yY1JldCA9IENQVlRfRmxvYXRSZWN0KGZNaW5YLCBmTWluWSwgZk1heFgsIGZNYXhZKTsNCit9DQorQ1BERl9WYXJpYWJsZVRleHQ6OkNQREZfVmFyaWFibGVUZXh0KCkgOg0KKyAgICBtX3BWVFByb3ZpZGVyKE5VTEwpLA0KKyAgICBtX3BWVEl0ZXJhdG9yKE5VTEwpLA0KKyAgICBtX2JJbml0aWFsKEZBTFNFKSwNCisgICAgbV9iUmljaFRleHQoRkFMU0UpLA0KKyAgICBtX2JNdWx0aUxpbmUoRkFMU0UpLA0KKyAgICBtX2JMaW1pdFdpZHRoKEZBTFNFKSwNCisgICAgbV9iQXV0b0ZvbnRTaXplKEZBTFNFKSwNCisgICAgbV9uTGltaXRDaGFyKDApLA0KKyAgICBtX25DaGFyQXJyYXkoMCksDQorICAgIG1fbkFsaWdubWVudCgwKSwNCisgICAgbV9mQ2hhclNwYWNlKDAuMGYpLA0KKyAgICBtX2ZXb3JkU3BhY2UoMC4wZiksDQorICAgIG1fZkZvbnRTaXplKDAuMGYpLA0KKyAgICBtX25Ib3J6U2NhbGUoMTAwKSwNCisgICAgbV93U3ViV29yZCgwKSwNCisgICAgbV9mTGluZUxlYWRpbmcoMC4wZikNCit7DQorfQ0KK0NQREZfVmFyaWFibGVUZXh0Ojp+Q1BERl9WYXJpYWJsZVRleHQoKQ0KK3sNCisgICAgaWYgKG1fcFZUSXRlcmF0b3IpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BWVEl0ZXJhdG9yOw0KKyAgICAgICAgbV9wVlRJdGVyYXRvciA9IE5VTEw7DQorICAgIH0NCisgICAgUmVzZXRBbGwoKTsNCit9DQordm9pZCBDUERGX1ZhcmlhYmxlVGV4dDo6SW5pdGlhbGl6ZSgpDQorew0KKyAgICBpZiAoIW1fYkluaXRpYWwpIHsNCisgICAgICAgIENQVlRfU2VjdGlvbkluZm8gc2VjaW5mbzsNCisgICAgICAgIGlmIChtX2JSaWNoVGV4dCkgew0KKyAgICAgICAgICAgIHNlY2luZm8ucFNlY1Byb3BzID0gRlhfTkVXIENQVlRfU2VjUHJvcHMoMC4wZiwgMC4wZiwgMCk7DQorICAgICAgICAgICAgc2VjaW5mby5wV29yZFByb3BzID0gRlhfTkVXIENQVlRfV29yZFByb3BzKEdldERlZmF1bHRGb250SW5kZXgoKSwgUFZUX0RFRkFVTFRfRk9OVFNJWkUsIDAsIDAsIDApOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1BWVF9Xb3JkUGxhY2UgcGxhY2U7DQorICAgICAgICBwbGFjZS5uU2VjSW5kZXggPSAwOw0KKyAgICAgICAgQWRkU2VjdGlvbihwbGFjZSwgc2VjaW5mbyk7DQorICAgICAgICBDUFZUX0xpbmVJbmZvIGxpbmVpbmZvOw0KKyAgICAgICAgbGluZWluZm8uZkxpbmVBc2NlbnQgPSBHZXRGb250QXNjZW50KEdldERlZmF1bHRGb250SW5kZXgoKSwgR2V0Rm9udFNpemUoKSk7DQorICAgICAgICBsaW5laW5mby5mTGluZURlc2NlbnQgPSBHZXRGb250RGVzY2VudChHZXREZWZhdWx0Rm9udEluZGV4KCksIEdldEZvbnRTaXplKCkpOw0KKyAgICAgICAgQWRkTGluZShwbGFjZSwgbGluZWluZm8pOw0KKyAgICAgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdCgwKSkgew0KKyAgICAgICAgICAgIHBTZWN0aW9uLT5SZXNldExpbmVQbGFjZSgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9iSW5pdGlhbCA9IFRSVUU7DQorICAgIH0NCit9DQordm9pZCBDUERGX1ZhcmlhYmxlVGV4dDo6UmVzZXRBbGwoKQ0KK3sNCisgICAgbV9iSW5pdGlhbCA9IEZBTFNFOw0KKyAgICBSZXNldFNlY3Rpb25BcnJheSgpOw0KK30NCitDUFZUX1dvcmRQbGFjZSBDUERGX1ZhcmlhYmxlVGV4dDo6SW5zZXJ0V29yZChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBGWF9XT1JEIHdvcmQsIEZYX0lOVDMyIGNoYXJzZXQsDQorICAgICAgICBjb25zdCBDUFZUX1dvcmRQcm9wcyAqIHBXb3JkUHJvcHMpDQorew0KKyAgICBGWF9JTlQzMiBuVG90bGFXb3JkcyA9IHRoaXMtPkdldFRvdGFsV29yZHMoKTsNCisgICAgaWYgKG1fbkxpbWl0Q2hhciA+IDAgJiYgblRvdGxhV29yZHMgPj0gbV9uTGltaXRDaGFyKSB7DQorICAgICAgICByZXR1cm4gcGxhY2U7DQorICAgIH0NCisgICAgaWYgKG1fbkNoYXJBcnJheSA+IDAgJiYgblRvdGxhV29yZHMgPj0gbV9uQ2hhckFycmF5KSB7DQorICAgICAgICByZXR1cm4gcGxhY2U7DQorICAgIH0NCisgICAgQ1BWVF9Xb3JkUGxhY2UgbmV3cGxhY2UgPSBwbGFjZTsNCisgICAgbmV3cGxhY2UubldvcmRJbmRleCArKzsNCisgICAgaWYgKG1fYlJpY2hUZXh0KSB7DQorICAgICAgICBDUFZUX1dvcmRQcm9wcyAqIHBOZXdQcm9wcyA9IHBXb3JkUHJvcHMgPyBGWF9ORVcgQ1BWVF9Xb3JkUHJvcHMoKnBXb3JkUHJvcHMpIDogRlhfTkVXIENQVlRfV29yZFByb3BzKCk7DQorICAgICAgICBpZiAocE5ld1Byb3BzKSB7DQorICAgICAgICAgICAgcE5ld1Byb3BzLT5uRm9udEluZGV4ID0gR2V0V29yZEZvbnRJbmRleCh3b3JkLCBjaGFyc2V0LCBwV29yZFByb3BzLT5uRm9udEluZGV4KTsNCisgICAgICAgICAgICByZXR1cm4gQWRkV29yZChuZXdwbGFjZSwgQ1BWVF9Xb3JkSW5mbyh3b3JkLCBjaGFyc2V0LCAtMSwgcE5ld1Byb3BzKSk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWF9JTlQzMiBuRm9udEluZGV4ID0gR2V0U3ViV29yZCgpID4gMCA/IEdldERlZmF1bHRGb250SW5kZXgoKSA6IEdldFdvcmRGb250SW5kZXgod29yZCwgY2hhcnNldCwgR2V0RGVmYXVsdEZvbnRJbmRleCgpKTsNCisgICAgICAgIHJldHVybiBBZGRXb3JkKG5ld3BsYWNlLCBDUFZUX1dvcmRJbmZvKHdvcmQsIGNoYXJzZXQsIG5Gb250SW5kZXgsIE5VTEwpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gcGxhY2U7DQorfQ0KK0NQVlRfV29yZFBsYWNlIENQREZfVmFyaWFibGVUZXh0OjpJbnNlcnRTZWN0aW9uKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIGNvbnN0IENQVlRfU2VjUHJvcHMgKiBwU2VjUHJvcHMsDQorICAgICAgICBjb25zdCBDUFZUX1dvcmRQcm9wcyAqIHBXb3JkUHJvcHMpDQorew0KKyAgICBGWF9JTlQzMiBuVG90bGFXb3JkcyA9IHRoaXMtPkdldFRvdGFsV29yZHMoKTsNCisgICAgaWYgKG1fbkxpbWl0Q2hhciA+IDAgJiYgblRvdGxhV29yZHMgPj0gbV9uTGltaXRDaGFyKSB7DQorICAgICAgICByZXR1cm4gcGxhY2U7DQorICAgIH0NCisgICAgaWYgKG1fbkNoYXJBcnJheSA+IDAgJiYgblRvdGxhV29yZHMgPj0gbV9uQ2hhckFycmF5KSB7DQorICAgICAgICByZXR1cm4gcGxhY2U7DQorICAgIH0NCisgICAgaWYgKCFtX2JNdWx0aUxpbmUpIHsNCisgICAgICAgIHJldHVybiBwbGFjZTsNCisgICAgfQ0KKyAgICBDUFZUX1dvcmRQbGFjZSB3b3JkcGxhY2UgPSBwbGFjZTsNCisgICAgVXBkYXRlV29yZFBsYWNlKHdvcmRwbGFjZSk7DQorICAgIENQVlRfV29yZFBsYWNlIG5ld3BsYWNlID0gcGxhY2U7DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQod29yZHBsYWNlLm5TZWNJbmRleCkpIHsNCisgICAgICAgIENQVlRfV29yZFBsYWNlIE5ld1BsYWNlKHdvcmRwbGFjZS5uU2VjSW5kZXggKyAxLCAwLCAtMSk7DQorICAgICAgICBDUFZUX1NlY3Rpb25JbmZvIHNlY2luZm87DQorICAgICAgICBpZiAobV9iUmljaFRleHQpIHsNCisgICAgICAgICAgICBpZiAocFNlY1Byb3BzKSB7DQorICAgICAgICAgICAgICAgIHNlY2luZm8ucFNlY1Byb3BzID0gRlhfTkVXIENQVlRfU2VjUHJvcHMoKnBTZWNQcm9wcyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwV29yZFByb3BzKSB7DQorICAgICAgICAgICAgICAgIHNlY2luZm8ucFdvcmRQcm9wcyA9IEZYX05FVyBDUFZUX1dvcmRQcm9wcygqcFdvcmRQcm9wcyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgQWRkU2VjdGlvbihOZXdQbGFjZSwgc2VjaW5mbyk7DQorICAgICAgICBuZXdwbGFjZSA9IE5ld1BsYWNlOw0KKyAgICAgICAgaWYgKENTZWN0aW9uICogcE5ld1NlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChOZXdQbGFjZS5uU2VjSW5kZXgpKSB7DQorICAgICAgICAgICAgZm9yIChGWF9JTlQzMiB3ID0gd29yZHBsYWNlLm5Xb3JkSW5kZXggKyAxLCBzeiA9IHBTZWN0aW9uLT5tX1dvcmRBcnJheS5HZXRTaXplKCk7IHcgPCBzejsgdysrKSB7DQorICAgICAgICAgICAgICAgIGlmIChDUFZUX1dvcmRJbmZvICogcFdvcmQgPSBwU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0QXQodykpIHsNCisgICAgICAgICAgICAgICAgICAgIE5ld1BsYWNlLm5Xb3JkSW5kZXgrKzsNCisgICAgICAgICAgICAgICAgICAgIHBOZXdTZWN0aW9uLT5BZGRXb3JkKE5ld1BsYWNlLCAqcFdvcmQpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgQ2xlYXJTZWN0aW9uUmlnaHRXb3Jkcyh3b3JkcGxhY2UpOw0KKyAgICB9DQorICAgIHJldHVybiBuZXdwbGFjZTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6Okluc2VydFRleHQoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSwgRlhfTFBDV1NUUiB0ZXh0LCBGWF9JTlQzMiBjaGFyc2V0LA0KKyAgICAgICAgY29uc3QgQ1BWVF9TZWNQcm9wcyAqIHBTZWNQcm9wcywgY29uc3QgQ1BWVF9Xb3JkUHJvcHMgKiBwUHJvcHMpDQorew0KKyAgICBDRlhfV2lkZVN0cmluZyBzd1RleHQgPSB0ZXh0Ow0KKyAgICBDUFZUX1dvcmRQbGFjZSB3cCA9IHBsYWNlOw0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwLCBzeiA9IHN3VGV4dC5HZXRMZW5ndGgoKTsgaSA8IHN6OyBpKyspIHsNCisgICAgICAgIENQVlRfV29yZFBsYWNlIG9sZHdwID0gd3A7DQorICAgICAgICBGWF9XT1JEIHdvcmQgPSBzd1RleHQuR2V0QXQoaSk7DQorICAgICAgICBzd2l0Y2ggKHdvcmQpIHsNCisgICAgICAgICAgICBjYXNlIDB4MEQ6DQorICAgICAgICAgICAgICAgIGlmIChtX2JNdWx0aUxpbmUpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChzd1RleHQuR2V0QXQoaSArIDEpID09IDB4MEEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpICs9IDE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB3cCA9IEluc2VydFNlY3Rpb24od3AsIHBTZWNQcm9wcywgcFByb3BzKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDB4MEE6DQorICAgICAgICAgICAgICAgIGlmIChtX2JNdWx0aUxpbmUpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChzd1RleHQuR2V0QXQoaSArIDEpID09IDB4MEQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpICs9IDE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB3cCA9IEluc2VydFNlY3Rpb24od3AsIHBTZWNQcm9wcywgcFByb3BzKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDB4MDk6DQorICAgICAgICAgICAgICAgIHdvcmQgPSAweDIwOw0KKyAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgIHdwID0gSW5zZXJ0V29yZCh3cCwgd29yZCwgY2hhcnNldCwgcFByb3BzKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZiAod3AgPT0gb2xkd3ApIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gd3A7DQorfQ0KK0NQVlRfV29yZFBsYWNlIENQREZfVmFyaWFibGVUZXh0OjpEZWxldGVXb3Jkcyhjb25zdCBDUFZUX1dvcmRSYW5nZSAmIFBsYWNlUmFuZ2UpDQorew0KKyAgICBGWF9CT09MIGJMYXN0U2VjUG9zID0gRkFMU0U7DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQoUGxhY2VSYW5nZS5FbmRQb3MublNlY0luZGV4KSkgew0KKyAgICAgICAgYkxhc3RTZWNQb3MgPSAoUGxhY2VSYW5nZS5FbmRQb3MgPT0gcFNlY3Rpb24tPkdldEVuZFdvcmRQbGFjZSgpKTsNCisgICAgfQ0KKyAgICBDbGVhcldvcmRzKFBsYWNlUmFuZ2UpOw0KKyAgICBpZiAoUGxhY2VSYW5nZS5CZWdpblBvcy5uU2VjSW5kZXggIT0gUGxhY2VSYW5nZS5FbmRQb3MublNlY0luZGV4KSB7DQorICAgICAgICBDbGVhckVtcHR5U2VjdGlvbnMoUGxhY2VSYW5nZSk7DQorICAgICAgICBpZiAoIWJMYXN0U2VjUG9zKSB7DQorICAgICAgICAgICAgTGlua0xhdHRlclNlY3Rpb24oUGxhY2VSYW5nZS5CZWdpblBvcyk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFBsYWNlUmFuZ2UuQmVnaW5Qb3M7DQorfQ0KK0NQVlRfV29yZFBsYWNlIENQREZfVmFyaWFibGVUZXh0OjpEZWxldGVXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpDQorew0KKyAgICByZXR1cm4gQ2xlYXJSaWdodFdvcmQoQWp1c3RMaW5lSGVhZGVyKHBsYWNlLCBUUlVFKSk7DQorfQ0KK0NQVlRfV29yZFBsYWNlIENQREZfVmFyaWFibGVUZXh0OjpCYWNrU3BhY2VXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpDQorew0KKyAgICByZXR1cm4gQ2xlYXJMZWZ0V29yZChBanVzdExpbmVIZWFkZXIocGxhY2UsIFRSVUUpKTsNCit9DQordm9pZCBDUERGX1ZhcmlhYmxlVGV4dDo6U2V0VGV4dChGWF9MUENXU1RSIHRleHQsIEZYX0lOVDMyIGNoYXJzZXQsIGNvbnN0IENQVlRfU2VjUHJvcHMgKiBwU2VjUHJvcHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDUFZUX1dvcmRQcm9wcyAqIHBXb3JkUHJvcHMpDQorew0KKyAgICBEZWxldGVXb3JkcyhDUFZUX1dvcmRSYW5nZShHZXRCZWdpbldvcmRQbGFjZSgpLCBHZXRFbmRXb3JkUGxhY2UoKSkpOw0KKyAgICBDRlhfV2lkZVN0cmluZyBzd1RleHQgPSB0ZXh0Ow0KKyAgICBDUFZUX1dvcmRQbGFjZQl3cCgwLCAwLCAtMSk7DQorICAgIENQVlRfU2VjdGlvbkluZm8gc2VjaW5mbzsNCisgICAgaWYgKG1fYlJpY2hUZXh0KSB7DQorICAgICAgICBpZiAocFNlY1Byb3BzKSB7DQorICAgICAgICAgICAgc2VjaW5mby5wU2VjUHJvcHMgPSBGWF9ORVcgQ1BWVF9TZWNQcm9wcygqcFNlY1Byb3BzKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwV29yZFByb3BzKSB7DQorICAgICAgICAgICAgc2VjaW5mby5wV29yZFByb3BzID0gRlhfTkVXIENQVlRfV29yZFByb3BzKCpwV29yZFByb3BzKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoQ1NlY3Rpb24gKiBwU2VjdGlvbiA9IG1fU2VjdGlvbkFycmF5LkdldEF0KDApKSB7DQorICAgICAgICBwU2VjdGlvbi0+bV9TZWNJbmZvID0gc2VjaW5mbzsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBuQ2hhckNvdW50ID0gMDsNCisgICAgZm9yIChGWF9JTlQzMiBpID0gMCwgc3ogPSBzd1RleHQuR2V0TGVuZ3RoKCk7IGkgPCBzejsgaSsrKSB7DQorICAgICAgICBpZiAobV9uTGltaXRDaGFyID4gMCAmJiBuQ2hhckNvdW50ID49IG1fbkxpbWl0Q2hhcikgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fbkNoYXJBcnJheSA+IDAgJiYgbkNoYXJDb3VudCA+PSBtX25DaGFyQXJyYXkpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIEZYX1dPUkQgd29yZCA9IHN3VGV4dC5HZXRBdChpKTsNCisgICAgICAgIHN3aXRjaCAod29yZCkgew0KKyAgICAgICAgICAgIGNhc2UgMHgwRDoNCisgICAgICAgICAgICAgICAgaWYgKG1fYk11bHRpTGluZSkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN3VGV4dC5HZXRBdChpICsgMSkgPT0gMHgwQSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gMTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHdwLm5TZWNJbmRleCArKzsNCisgICAgICAgICAgICAgICAgICAgIHdwLm5MaW5lSW5kZXggPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgd3AubldvcmRJbmRleCA9IC0xOw0KKyAgICAgICAgICAgICAgICAgICAgQWRkU2VjdGlvbih3cCwgc2VjaW5mbyk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAweDBBOg0KKyAgICAgICAgICAgICAgICBpZiAobV9iTXVsdGlMaW5lKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoc3dUZXh0LkdldEF0KGkgKyAxKSA9PSAweDBEKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgd3AublNlY0luZGV4ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgd3AubkxpbmVJbmRleCA9IDA7DQorICAgICAgICAgICAgICAgICAgICB3cC5uV29yZEluZGV4ID0gLTE7DQorICAgICAgICAgICAgICAgICAgICBBZGRTZWN0aW9uKHdwLCBzZWNpbmZvKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDB4MDk6DQorICAgICAgICAgICAgICAgIHdvcmQgPSAweDIwOw0KKyAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgIHdwID0gSW5zZXJ0V29yZCh3cCwgd29yZCwgY2hhcnNldCwgcFdvcmRQcm9wcyk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbkNoYXJDb3VudCsrOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9WYXJpYWJsZVRleHQ6OlVwZGF0ZVdvcmRQbGFjZShDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSBjb25zdA0KK3sNCisgICAgaWYgKHBsYWNlLm5TZWNJbmRleCA8IDApIHsNCisgICAgICAgIHBsYWNlID0gR2V0QmVnaW5Xb3JkUGxhY2UoKTsNCisgICAgfQ0KKyAgICBpZiAocGxhY2UublNlY0luZGV4ID49IG1fU2VjdGlvbkFycmF5LkdldFNpemUoKSkgew0KKyAgICAgICAgcGxhY2UgPSBHZXRFbmRXb3JkUGxhY2UoKTsNCisgICAgfQ0KKyAgICBwbGFjZSA9IEFqdXN0TGluZUhlYWRlcihwbGFjZSwgVFJVRSk7DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQocGxhY2UublNlY0luZGV4KSkgew0KKyAgICAgICAgcFNlY3Rpb24tPlVwZGF0ZVdvcmRQbGFjZShwbGFjZSk7DQorICAgIH0NCit9DQorRlhfSU5UMzIgQ1BERl9WYXJpYWJsZVRleHQ6OldvcmRQbGFjZVRvV29yZEluZGV4KGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpIGNvbnN0DQorew0KKyAgICBDUFZUX1dvcmRQbGFjZSBuZXdwbGFjZSA9IHBsYWNlOw0KKyAgICBVcGRhdGVXb3JkUGxhY2UobmV3cGxhY2UpOw0KKyAgICBGWF9JTlQzMiBuSW5kZXggPSAwOw0KKyAgICBGWF9JTlQzMiBpID0gMDsNCisgICAgRlhfSU5UMzIgc3ogPSAwOw0KKyAgICBmb3IgKGkgPSAwLCBzeiA9IG1fU2VjdGlvbkFycmF5LkdldFNpemUoKTsgaSA8IHN6ICYmIGkgPCBuZXdwbGFjZS5uU2VjSW5kZXg7IGkrKykgew0KKyAgICAgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChpKSkgew0KKyAgICAgICAgICAgIG5JbmRleCArPSBwU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0U2l6ZSgpOw0KKyAgICAgICAgICAgIGlmIChpICE9IG1fU2VjdGlvbkFycmF5LkdldFNpemUoKSAtIDEpIHsNCisgICAgICAgICAgICAgICAgbkluZGV4ICs9IFBWVF9SRVRVUk5fTEVOR1RIOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoaSA+PSAwICYmIGkgPCBtX1NlY3Rpb25BcnJheS5HZXRTaXplKCkpIHsNCisgICAgICAgIG5JbmRleCArPSBuZXdwbGFjZS5uV29yZEluZGV4ICsgUFZUX1JFVFVSTl9MRU5HVEg7DQorICAgIH0NCisgICAgcmV0dXJuIG5JbmRleDsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OldvcmRJbmRleFRvV29yZFBsYWNlKEZYX0lOVDMyIGluZGV4KSBjb25zdA0KK3sNCisgICAgQ1BWVF9Xb3JkUGxhY2UgcGxhY2UgPSBHZXRCZWdpbldvcmRQbGFjZSgpOw0KKyAgICBGWF9JTlQzMiBuT2xkSW5kZXggPSAwICwgbkluZGV4ID0gMDsNCisgICAgRlhfQk9PTCBiRmluZCA9IEZBTFNFOw0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwLCBzeiA9IG1fU2VjdGlvbkFycmF5LkdldFNpemUoKTsgaSA8IHN6OyBpKyspIHsNCisgICAgICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQoaSkpIHsNCisgICAgICAgICAgICBuSW5kZXggKz0gcFNlY3Rpb24tPm1fV29yZEFycmF5LkdldFNpemUoKTsNCisgICAgICAgICAgICBpZiAobkluZGV4ID09IGluZGV4KSB7DQorICAgICAgICAgICAgICAgIHBsYWNlID0gcFNlY3Rpb24tPkdldEVuZFdvcmRQbGFjZSgpOw0KKyAgICAgICAgICAgICAgICBiRmluZCA9IFRSVUU7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAobkluZGV4ID4gaW5kZXgpIHsNCisgICAgICAgICAgICAgICAgcGxhY2UublNlY0luZGV4ID0gaTsNCisgICAgICAgICAgICAgICAgcGxhY2UubldvcmRJbmRleCA9IGluZGV4IC0gbk9sZEluZGV4IC0gMTsNCisgICAgICAgICAgICAgICAgcFNlY3Rpb24tPlVwZGF0ZVdvcmRQbGFjZShwbGFjZSk7DQorICAgICAgICAgICAgICAgIGJGaW5kID0gVFJVRTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChpICE9IG1fU2VjdGlvbkFycmF5LkdldFNpemUoKSAtIDEpIHsNCisgICAgICAgICAgICAgICAgbkluZGV4ICs9IFBWVF9SRVRVUk5fTEVOR1RIOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBuT2xkSW5kZXggPSBuSW5kZXg7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCFiRmluZCkgew0KKyAgICAgICAgcGxhY2UgPSBHZXRFbmRXb3JkUGxhY2UoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gcGxhY2U7DQorfQ0KK0NQVlRfV29yZFBsYWNlIENQREZfVmFyaWFibGVUZXh0OjpHZXRCZWdpbldvcmRQbGFjZSgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gbV9iSW5pdGlhbCA/IENQVlRfV29yZFBsYWNlKDAsIDAsIC0xKSA6IENQVlRfV29yZFBsYWNlKCk7DQorfQ0KK0NQVlRfV29yZFBsYWNlIENQREZfVmFyaWFibGVUZXh0OjpHZXRFbmRXb3JkUGxhY2UoKSBjb25zdA0KK3sNCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChtX1NlY3Rpb25BcnJheS5HZXRTaXplKCkgLSAxKSkgew0KKyAgICAgICAgcmV0dXJuIHBTZWN0aW9uLT5HZXRFbmRXb3JkUGxhY2UoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gQ1BWVF9Xb3JkUGxhY2UoKTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OkdldFByZXZXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QNCit7DQorICAgIGlmKCBwbGFjZS5uU2VjSW5kZXggPCAwKSB7DQorICAgICAgICByZXR1cm4gR2V0QmVnaW5Xb3JkUGxhY2UoKTsNCisgICAgfQ0KKyAgICBpZiAocGxhY2UublNlY0luZGV4ID49IG1fU2VjdGlvbkFycmF5LkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuIEdldEVuZFdvcmRQbGFjZSgpOw0KKyAgICB9DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQocGxhY2UublNlY0luZGV4KSkgew0KKyAgICAgICAgaWYgKHBsYWNlLldvcmRDbXAocFNlY3Rpb24tPkdldEJlZ2luV29yZFBsYWNlKCkpIDw9IDApIHsNCisgICAgICAgICAgICBpZiAoQ1NlY3Rpb24gKiBwUHJldlNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChwbGFjZS5uU2VjSW5kZXggLSAxKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcFByZXZTZWN0aW9uLT5HZXRFbmRXb3JkUGxhY2UoKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICByZXR1cm4gR2V0QmVnaW5Xb3JkUGxhY2UoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldHVybiBwU2VjdGlvbi0+R2V0UHJldldvcmRQbGFjZShwbGFjZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHBsYWNlOw0KK30NCitDUFZUX1dvcmRQbGFjZSBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0TmV4dFdvcmRQbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSBjb25zdA0KK3sNCisgICAgaWYgKHBsYWNlLm5TZWNJbmRleCA8IDApIHsNCisgICAgICAgIHJldHVybiBHZXRCZWdpbldvcmRQbGFjZSgpOw0KKyAgICB9DQorICAgIGlmIChwbGFjZS5uU2VjSW5kZXggPj0gbV9TZWN0aW9uQXJyYXkuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm4gR2V0RW5kV29yZFBsYWNlKCk7DQorICAgIH0NCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChwbGFjZS5uU2VjSW5kZXgpKSB7DQorICAgICAgICBpZiAocGxhY2UuV29yZENtcChwU2VjdGlvbi0+R2V0RW5kV29yZFBsYWNlKCkpID49IDApIHsNCisgICAgICAgICAgICBpZiAoQ1NlY3Rpb24gKiBwTmV4dFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChwbGFjZS5uU2VjSW5kZXggKyAxKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcE5leHRTZWN0aW9uLT5HZXRCZWdpbldvcmRQbGFjZSgpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBHZXRFbmRXb3JkUGxhY2UoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldHVybiBwU2VjdGlvbi0+R2V0TmV4dFdvcmRQbGFjZShwbGFjZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHBsYWNlOw0KK30NCitDUFZUX1dvcmRQbGFjZSBDUERGX1ZhcmlhYmxlVGV4dDo6U2VhcmNoV29yZFBsYWNlKGNvbnN0IENQREZfUG9pbnQgJiBwb2ludCkgY29uc3QNCit7DQorICAgIENQREZfUG9pbnQgcHQgPSBPdXRUb0luKHBvaW50KTsNCisgICAgQ1BWVF9Xb3JkUGxhY2UgcGxhY2UgPSBHZXRCZWdpbldvcmRQbGFjZSgpOw0KKyAgICBGWF9JTlQzMiBuTGVmdCA9IDA7DQorICAgIEZYX0lOVDMyIG5SaWdodCA9IG1fU2VjdGlvbkFycmF5LkdldFNpemUoKSAtIDE7DQorICAgIEZYX0lOVDMyIG5NaWQgPSBtX1NlY3Rpb25BcnJheS5HZXRTaXplKCkgLyAyOw0KKyAgICBGWF9CT09MIGJVcCA9IFRSVUU7DQorICAgIEZYX0JPT0wgYkRvd24gPSBUUlVFOw0KKyAgICB3aGlsZSAobkxlZnQgPD0gblJpZ2h0KSB7DQorICAgICAgICBpZiAoQ1NlY3Rpb24gKiBwU2VjdGlvbiA9IG1fU2VjdGlvbkFycmF5LkdldEF0KG5NaWQpKSB7DQorICAgICAgICAgICAgaWYgKElzRmxvYXRCaWdnZXIocHQueSwgcFNlY3Rpb24tPm1fU2VjSW5mby5yY1NlY3Rpb24udG9wKSkgew0KKyAgICAgICAgICAgICAgICBiVXAgPSBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKElzRmxvYXRCaWdnZXIocFNlY3Rpb24tPm1fU2VjSW5mby5yY1NlY3Rpb24uYm90dG9tLCBwdC55KSkgew0KKyAgICAgICAgICAgICAgICBiRG93biA9IEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoSXNGbG9hdFNtYWxsZXIocHQueSwgcFNlY3Rpb24tPm1fU2VjSW5mby5yY1NlY3Rpb24udG9wKSkgew0KKyAgICAgICAgICAgICAgICBuUmlnaHQgPSBuTWlkIC0gMTsNCisgICAgICAgICAgICAgICAgbk1pZCA9IChuTGVmdCArIG5SaWdodCkgLyAyOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKElzRmxvYXRCaWdnZXIocHQueSwgcFNlY3Rpb24tPm1fU2VjSW5mby5yY1NlY3Rpb24uYm90dG9tKSkgew0KKyAgICAgICAgICAgICAgICBuTGVmdCA9IG5NaWQgKyAxOw0KKyAgICAgICAgICAgICAgICBuTWlkID0gKG5MZWZ0ICsgblJpZ2h0KSAvIDI7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBsYWNlID0gcFNlY3Rpb24tPlNlYXJjaFdvcmRQbGFjZSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9Qb2ludChwdC54IC0gcFNlY3Rpb24tPm1fU2VjSW5mby5yY1NlY3Rpb24ubGVmdCwgcHQueSAtIHBTZWN0aW9uLT5tX1NlY0luZm8ucmNTZWN0aW9uLnRvcCkNCisgICAgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgICAgICAgICAgICBwbGFjZS5uU2VjSW5kZXggPSBuTWlkOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gcGxhY2U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoYlVwKSB7DQorICAgICAgICBwbGFjZSA9IEdldEJlZ2luV29yZFBsYWNlKCk7DQorICAgIH0NCisgICAgaWYgKGJEb3duKSB7DQorICAgICAgICBwbGFjZSA9IEdldEVuZFdvcmRQbGFjZSgpOw0KKyAgICB9DQorICAgIHJldHVybiBwbGFjZTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OkdldFVwV29yZFBsYWNlKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIGNvbnN0IENQREZfUG9pbnQgJiBwb2ludCkgY29uc3QNCit7DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQocGxhY2UublNlY0luZGV4KSkgew0KKyAgICAgICAgQ1BWVF9Xb3JkUGxhY2UgdGVtcCA9ICBwbGFjZTsNCisgICAgICAgIENQREZfUG9pbnQgcHQgPSBPdXRUb0luKHBvaW50KTsNCisgICAgICAgIGlmICh0ZW1wLm5MaW5lSW5kZXgtLSA+IDApIHsNCisgICAgICAgICAgICByZXR1cm4gcFNlY3Rpb24tPlNlYXJjaFdvcmRQbGFjZShwdC54IC0gcFNlY3Rpb24tPm1fU2VjSW5mby5yY1NlY3Rpb24ubGVmdCwgdGVtcCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmICh0ZW1wLm5TZWNJbmRleC0tID4gMCkgew0KKyAgICAgICAgICAgICAgICBpZiAoQ1NlY3Rpb24gKiBwTGFzdFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdCh0ZW1wLm5TZWNJbmRleCkpIHsNCisgICAgICAgICAgICAgICAgICAgIHRlbXAubkxpbmVJbmRleCA9IHBMYXN0U2VjdGlvbi0+bV9MaW5lQXJyYXkuR2V0U2l6ZSgpIC0gMTsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwTGFzdFNlY3Rpb24tPlNlYXJjaFdvcmRQbGFjZShwdC54IC0gcExhc3RTZWN0aW9uLT5tX1NlY0luZm8ucmNTZWN0aW9uLmxlZnQsIHRlbXApOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBwbGFjZTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OkdldERvd25Xb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSwgY29uc3QgQ1BERl9Qb2ludCAmIHBvaW50KSBjb25zdA0KK3sNCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChwbGFjZS5uU2VjSW5kZXgpKSB7DQorICAgICAgICBDUFZUX1dvcmRQbGFjZSB0ZW1wID0gIHBsYWNlOw0KKyAgICAgICAgQ1BERl9Qb2ludCBwdCA9IE91dFRvSW4ocG9pbnQpOw0KKyAgICAgICAgaWYgKHRlbXAubkxpbmVJbmRleCsrIDwgcFNlY3Rpb24tPm1fTGluZUFycmF5LkdldFNpemUoKSAtIDEpIHsNCisgICAgICAgICAgICByZXR1cm4gcFNlY3Rpb24tPlNlYXJjaFdvcmRQbGFjZShwdC54IC0gcFNlY3Rpb24tPm1fU2VjSW5mby5yY1NlY3Rpb24ubGVmdCwgdGVtcCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmICh0ZW1wLm5TZWNJbmRleCsrIDwgbV9TZWN0aW9uQXJyYXkuR2V0U2l6ZSgpIC0gMSkgew0KKyAgICAgICAgICAgICAgICBpZiAoQ1NlY3Rpb24gKiBwTmV4dFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdCh0ZW1wLm5TZWNJbmRleCkpIHsNCisgICAgICAgICAgICAgICAgICAgIHRlbXAubkxpbmVJbmRleCA9IDA7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcE5leHRTZWN0aW9uLT5TZWFyY2hXb3JkUGxhY2UocHQueCAtIHBTZWN0aW9uLT5tX1NlY0luZm8ucmNTZWN0aW9uLmxlZnQsIHRlbXApOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBwbGFjZTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OkdldExpbmVCZWdpblBsYWNlKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpIGNvbnN0DQorew0KKyAgICByZXR1cm4gQ1BWVF9Xb3JkUGxhY2UocGxhY2UublNlY0luZGV4LCBwbGFjZS5uTGluZUluZGV4LCAtMSk7DQorfQ0KK0NQVlRfV29yZFBsYWNlIENQREZfVmFyaWFibGVUZXh0OjpHZXRMaW5lRW5kUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QNCit7DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQocGxhY2UublNlY0luZGV4KSkNCisgICAgICAgIGlmIChDTGluZSAqIHBMaW5lID0gcFNlY3Rpb24tPm1fTGluZUFycmF5LkdldEF0KHBsYWNlLm5MaW5lSW5kZXgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIHBMaW5lLT5HZXRFbmRXb3JkUGxhY2UoKTsNCisgICAgICAgIH0NCisgICAgcmV0dXJuIHBsYWNlOw0KK30NCitDUFZUX1dvcmRQbGFjZSBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0U2VjdGlvbkJlZ2luUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3QNCit7DQorICAgIHJldHVybiBDUFZUX1dvcmRQbGFjZShwbGFjZS5uU2VjSW5kZXgsIDAsIC0xKTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OkdldFNlY3Rpb25FbmRQbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSBjb25zdA0KK3sNCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChwbGFjZS5uU2VjSW5kZXgpKSB7DQorICAgICAgICByZXR1cm4gcFNlY3Rpb24tPkdldEVuZFdvcmRQbGFjZSgpOw0KKyAgICB9DQorICAgIHJldHVybiBwbGFjZTsNCit9DQorRlhfSU5UMzIgQ1BERl9WYXJpYWJsZVRleHQ6OkdldFRvdGFsV29yZHMoKSBjb25zdA0KK3sNCisgICAgRlhfSU5UMzIgblRvdGFsID0gMDsNCisgICAgZm9yIChGWF9JTlQzMiBpID0gMCwgc3ogPSBtX1NlY3Rpb25BcnJheS5HZXRTaXplKCk7IGkgPCBzejsgaSsrKQ0KKyAgICAgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChpKSkgew0KKyAgICAgICAgICAgIG5Ub3RhbCArPSAocFNlY3Rpb24tPm1fV29yZEFycmF5LkdldFNpemUoKSArIFBWVF9SRVRVUk5fTEVOR1RIKTsNCisgICAgICAgIH0NCisgICAgcmV0dXJuIG5Ub3RhbCAtIFBWVF9SRVRVUk5fTEVOR1RIOw0KK30NCit2b2lkIENQREZfVmFyaWFibGVUZXh0OjpSZXNldFNlY3Rpb25BcnJheSgpDQorew0KKyAgICBmb3IgKEZYX0lOVDMyIHMgPSAwLCBzeiA9IG1fU2VjdGlvbkFycmF5LkdldFNpemUoKTsgcyA8IHN6OyBzKyspIHsNCisgICAgICAgIGRlbGV0ZSBtX1NlY3Rpb25BcnJheS5HZXRBdChzKTsNCisgICAgfQ0KKyAgICBtX1NlY3Rpb25BcnJheS5SZW1vdmVBbGwoKTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OkFkZFNlY3Rpb24oY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSwgY29uc3QgQ1BWVF9TZWN0aW9uSW5mbyAmIHNlY2luZm8pDQorew0KKyAgICBpZiAoSXNWYWxpZCgpICYmICFtX2JNdWx0aUxpbmUpIHsNCisgICAgICAgIHJldHVybiBwbGFjZTsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBuU2VjSW5kZXggPSBGUERGX01BWChGUERGX01JTihwbGFjZS5uU2VjSW5kZXgsIG1fU2VjdGlvbkFycmF5LkdldFNpemUoKSksIDApOw0KKyAgICBDU2VjdGlvbiAqIHBTZWN0aW9uID0gRlhfTkVXIENTZWN0aW9uKHRoaXMpOw0KKyAgICBpZiAoIXBTZWN0aW9uKSB7DQorICAgICAgICByZXR1cm4gcGxhY2U7DQorICAgIH0NCisgICAgcFNlY3Rpb24tPm1fU2VjSW5mbyA9IHNlY2luZm87DQorICAgIHBTZWN0aW9uLT5TZWNQbGFjZS5uU2VjSW5kZXggPSBuU2VjSW5kZXg7DQorICAgIGlmIChuU2VjSW5kZXggPT0gbV9TZWN0aW9uQXJyYXkuR2V0U2l6ZSgpKSB7DQorICAgICAgICBtX1NlY3Rpb25BcnJheS5BZGQocFNlY3Rpb24pOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9TZWN0aW9uQXJyYXkuSW5zZXJ0QXQoblNlY0luZGV4LCBwU2VjdGlvbik7DQorICAgIH0NCisgICAgcmV0dXJuIHBsYWNlOw0KK30NCitDUFZUX1dvcmRQbGFjZSBDUERGX1ZhcmlhYmxlVGV4dDo6QWRkTGluZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBjb25zdCBDUFZUX0xpbmVJbmZvICYgbGluZWluZm8pDQorew0KKyAgICBpZiAobV9TZWN0aW9uQXJyYXkuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gcGxhY2U7DQorICAgIH0NCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChwbGFjZS5uU2VjSW5kZXgpKSB7DQorICAgICAgICByZXR1cm4gcFNlY3Rpb24tPkFkZExpbmUobGluZWluZm8pOw0KKyAgICB9DQorICAgIHJldHVybiBwbGFjZTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OkFkZFdvcmQoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSwgY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIHdvcmRpbmZvKQ0KK3sNCisgICAgaWYgKG1fU2VjdGlvbkFycmF5LkdldFNpemUoKSA8PSAwKSB7DQorICAgICAgICByZXR1cm4gcGxhY2U7DQorICAgIH0NCisgICAgQ1BWVF9Xb3JkUGxhY2UgbmV3cGxhY2UgPSBwbGFjZTsNCisgICAgbmV3cGxhY2UublNlY0luZGV4ID0gRlBERl9NQVgoRlBERl9NSU4obmV3cGxhY2UublNlY0luZGV4LCBtX1NlY3Rpb25BcnJheS5HZXRTaXplKCkgLSAxKSwgMCk7DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQobmV3cGxhY2UublNlY0luZGV4KSkgew0KKyAgICAgICAgcmV0dXJuIHBTZWN0aW9uLT5BZGRXb3JkKG5ld3BsYWNlLCB3b3JkaW5mbyk7DQorICAgIH0NCisgICAgcmV0dXJuIHBsYWNlOw0KK30NCitGWF9CT09MIENQREZfVmFyaWFibGVUZXh0OjpHZXRXb3JkSW5mbyhjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBDUFZUX1dvcmRJbmZvICYgd29yZGluZm8pDQorew0KKyAgICBpZiAoQ1NlY3Rpb24gKiBwU2VjdGlvbiA9IG1fU2VjdGlvbkFycmF5LkdldEF0KHBsYWNlLm5TZWNJbmRleCkpIHsNCisgICAgICAgIGlmIChDUFZUX1dvcmRJbmZvICogcFdvcmQgPSBwU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0QXQocGxhY2UubldvcmRJbmRleCkpIHsNCisgICAgICAgICAgICB3b3JkaW5mbyA9ICpwV29yZDsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wgQ1BERl9WYXJpYWJsZVRleHQ6OlNldFdvcmRJbmZvKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIGNvbnN0IENQVlRfV29yZEluZm8gJiB3b3JkaW5mbykNCit7DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQocGxhY2UublNlY0luZGV4KSkgew0KKyAgICAgICAgaWYgKENQVlRfV29yZEluZm8gKiBwV29yZCA9IHBTZWN0aW9uLT5tX1dvcmRBcnJheS5HZXRBdChwbGFjZS5uV29yZEluZGV4KSkgew0KKyAgICAgICAgICAgICpwV29yZCA9IHdvcmRpbmZvOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0TGluZUluZm8oY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSwgQ1BWVF9MaW5lSW5mbyAmIGxpbmVpbmZvKQ0KK3sNCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChwbGFjZS5uU2VjSW5kZXgpKSB7DQorICAgICAgICBpZiAoQ0xpbmUgKiBwTGluZSA9IHBTZWN0aW9uLT5tX0xpbmVBcnJheS5HZXRBdChwbGFjZS5uTGluZUluZGV4KSkgew0KKyAgICAgICAgICAgIGxpbmVpbmZvID0gcExpbmUtPm1fTGluZUluZm87DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MIENQREZfVmFyaWFibGVUZXh0OjpHZXRTZWN0aW9uSW5mbyhjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBDUFZUX1NlY3Rpb25JbmZvICYgc2VjaW5mbykNCit7DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQocGxhY2UublNlY0luZGV4KSkgew0KKyAgICAgICAgc2VjaW5mbyA9IHBTZWN0aW9uLT5tX1NlY0luZm87DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0NQREZfUmVjdCBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0Q29udGVudFJlY3QoKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIEluVG9PdXQoQ1BERl9FZGl0Q29udGFpbmVyOjpHZXRDb250ZW50UmVjdCgpKTsNCit9DQorRlhfRkxPQVQgQ1BERl9WYXJpYWJsZVRleHQ6OkdldFdvcmRGb250U2l6ZShjb25zdCBDUFZUX1dvcmRJbmZvICYgV29yZEluZm8sIEZYX0JPT0wgYkZhY3RGb250U2l6ZSkNCit7DQorICAgIHJldHVybiBtX2JSaWNoVGV4dCAmJiBXb3JkSW5mby5wV29yZFByb3BzID8gKFdvcmRJbmZvLnBXb3JkUHJvcHMtPm5TY3JpcHRUeXBlID09IFBWVFdPUkRfU0NSSVBUX05PUk1BTCB8fCBiRmFjdEZvbnRTaXplID8gV29yZEluZm8ucFdvcmRQcm9wcy0+ZkZvbnRTaXplIDogV29yZEluZm8ucFdvcmRQcm9wcy0+ZkZvbnRTaXplICogUFZUX0hBTEYpIDogR2V0Rm9udFNpemUoKTsNCit9DQorRlhfSU5UMzIgQ1BERl9WYXJpYWJsZVRleHQ6OkdldFdvcmRGb250SW5kZXgoY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIFdvcmRJbmZvKQ0KK3sNCisgICAgcmV0dXJuIG1fYlJpY2hUZXh0ICYmIFdvcmRJbmZvLnBXb3JkUHJvcHMgPyBXb3JkSW5mby5wV29yZFByb3BzLT5uRm9udEluZGV4IDogV29yZEluZm8ubkZvbnRJbmRleDsNCit9DQorRlhfRkxPQVQgQ1BERl9WYXJpYWJsZVRleHQ6OkdldFdvcmRXaWR0aChGWF9JTlQzMiBuRm9udEluZGV4LCBGWF9XT1JEIFdvcmQsIEZYX1dPUkQgU3ViV29yZCwNCisgICAgICAgIEZYX0ZMT0FUIGZDaGFyU3BhY2UsIEZYX0lOVDMyIG5Ib3J6U2NhbGUsDQorICAgICAgICBGWF9GTE9BVCBmRm9udFNpemUsIEZYX0ZMT0FUIGZXb3JkVGFpbCwgRlhfSU5UMzIgbldvcmRTdHlsZSkNCit7DQorICAgIHJldHVybiAoR2V0Q2hhcldpZHRoKG5Gb250SW5kZXgsIFdvcmQsIFN1YldvcmQsIG5Xb3JkU3R5bGUpICogZkZvbnRTaXplICogUFZUX0ZPTlRTQ0FMRSArIGZDaGFyU3BhY2UpICogbkhvcnpTY2FsZSAqIFBWVF9QRVJDRU5UICsgZldvcmRUYWlsOw0KK30NCitGWF9GTE9BVCBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0V29yZFdpZHRoKGNvbnN0IENQVlRfV29yZEluZm8gJiBXb3JkSW5mbykNCit7DQorICAgIHJldHVybiBHZXRXb3JkV2lkdGgoR2V0V29yZEZvbnRJbmRleChXb3JkSW5mbyksIFdvcmRJbmZvLldvcmQsIEdldFN1YldvcmQoKSwgR2V0Q2hhclNwYWNlKFdvcmRJbmZvKSwgR2V0SG9yelNjYWxlKFdvcmRJbmZvKSwNCisgICAgICAgICAgICAgICAgICAgICAgICBHZXRXb3JkRm9udFNpemUoV29yZEluZm8pLCBXb3JkSW5mby5mV29yZFRhaWwsDQorICAgICAgICAgICAgICAgICAgICAgICAgV29yZEluZm8ucFdvcmRQcm9wcyA/IFdvcmRJbmZvLnBXb3JkUHJvcHMtPm5Xb3JkU3R5bGUgOiAwKTsNCit9DQorRlhfRkxPQVQgQ1BERl9WYXJpYWJsZVRleHQ6OkdldExpbmVBc2NlbnQoY29uc3QgQ1BWVF9TZWN0aW9uSW5mbyAmIFNlY0luZm8pDQorew0KKyAgICByZXR1cm4gbV9iUmljaFRleHQgJiYgU2VjSW5mby5wV29yZFByb3BzID8gR2V0Rm9udEFzY2VudChTZWNJbmZvLnBXb3JkUHJvcHMtPm5Gb250SW5kZXgsIFNlY0luZm8ucFdvcmRQcm9wcy0+ZkZvbnRTaXplKSA6DQorICAgICAgICAgICBHZXRGb250QXNjZW50KEdldERlZmF1bHRGb250SW5kZXgoKSwgR2V0Rm9udFNpemUoKSk7DQorfQ0KK0ZYX0ZMT0FUIENQREZfVmFyaWFibGVUZXh0OjpHZXRMaW5lRGVzY2VudChjb25zdCBDUFZUX1NlY3Rpb25JbmZvICYgU2VjSW5mbykNCit7DQorICAgIHJldHVybiBtX2JSaWNoVGV4dCAmJiBTZWNJbmZvLnBXb3JkUHJvcHMgPyBHZXRGb250RGVzY2VudChTZWNJbmZvLnBXb3JkUHJvcHMtPm5Gb250SW5kZXgsIFNlY0luZm8ucFdvcmRQcm9wcy0+ZkZvbnRTaXplKSA6DQorICAgICAgICAgICBHZXRGb250RGVzY2VudChHZXREZWZhdWx0Rm9udEluZGV4KCksIEdldEZvbnRTaXplKCkpOw0KK30NCitGWF9GTE9BVCBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0Rm9udEFzY2VudChGWF9JTlQzMiBuRm9udEluZGV4LCBGWF9GTE9BVCBmRm9udFNpemUpDQorew0KKyAgICByZXR1cm4gKEZYX0ZMT0FUKUdldFR5cGVBc2NlbnQobkZvbnRJbmRleCkgKiBmRm9udFNpemUgKiBQVlRfRk9OVFNDQUxFOw0KK30NCitGWF9GTE9BVCBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0Rm9udERlc2NlbnQoRlhfSU5UMzIgbkZvbnRJbmRleCwgRlhfRkxPQVQgZkZvbnRTaXplKQ0KK3sNCisgICAgcmV0dXJuIChGWF9GTE9BVClHZXRUeXBlRGVzY2VudChuRm9udEluZGV4KSAqIGZGb250U2l6ZSAqIFBWVF9GT05UU0NBTEU7DQorfQ0KK0ZYX0ZMT0FUIENQREZfVmFyaWFibGVUZXh0OjpHZXRXb3JkQXNjZW50KGNvbnN0IENQVlRfV29yZEluZm8gJiBXb3JkSW5mbywgRlhfRkxPQVQgZkZvbnRTaXplKQ0KK3sNCisgICAgcmV0dXJuIEdldEZvbnRBc2NlbnQoR2V0V29yZEZvbnRJbmRleChXb3JkSW5mbyksIGZGb250U2l6ZSk7DQorfQ0KK0ZYX0ZMT0FUIENQREZfVmFyaWFibGVUZXh0OjpHZXRXb3JkRGVzY2VudChjb25zdCBDUFZUX1dvcmRJbmZvICYgV29yZEluZm8sIEZYX0ZMT0FUIGZGb250U2l6ZSkNCit7DQorICAgIHJldHVybiBHZXRGb250RGVzY2VudChHZXRXb3JkRm9udEluZGV4KFdvcmRJbmZvKSwgZkZvbnRTaXplKTsNCit9DQorRlhfRkxPQVQgQ1BERl9WYXJpYWJsZVRleHQ6OkdldFdvcmRBc2NlbnQoY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIFdvcmRJbmZvLCBGWF9CT09MIGJGYWN0Rm9udFNpemUpDQorew0KKyAgICByZXR1cm4gR2V0Rm9udEFzY2VudChHZXRXb3JkRm9udEluZGV4KFdvcmRJbmZvKSwgR2V0V29yZEZvbnRTaXplKFdvcmRJbmZvLCBiRmFjdEZvbnRTaXplKSk7DQorfQ0KK0ZYX0ZMT0FUIENQREZfVmFyaWFibGVUZXh0OjpHZXRXb3JkRGVzY2VudChjb25zdCBDUFZUX1dvcmRJbmZvICYgV29yZEluZm8sIEZYX0JPT0wgYkZhY3RGb250U2l6ZSkNCit7DQorICAgIHJldHVybiBHZXRGb250RGVzY2VudChHZXRXb3JkRm9udEluZGV4KFdvcmRJbmZvKSwgR2V0V29yZEZvbnRTaXplKFdvcmRJbmZvLCBiRmFjdEZvbnRTaXplKSk7DQorfQ0KK0ZYX0ZMT0FUIENQREZfVmFyaWFibGVUZXh0OjpHZXRMaW5lTGVhZGluZyhjb25zdCBDUFZUX1NlY3Rpb25JbmZvICYgU2VjSW5mbykNCit7DQorICAgIHJldHVybiBtX2JSaWNoVGV4dCAmJiBTZWNJbmZvLnBTZWNQcm9wcyA/IFNlY0luZm8ucFNlY1Byb3BzLT5mTGluZUxlYWRpbmcgOiBtX2ZMaW5lTGVhZGluZzsNCit9DQorRlhfRkxPQVQgQ1BERl9WYXJpYWJsZVRleHQ6OkdldExpbmVJbmRlbnQoY29uc3QgQ1BWVF9TZWN0aW9uSW5mbyAmIFNlY0luZm8pDQorew0KKyAgICByZXR1cm4gbV9iUmljaFRleHQgJiYgU2VjSW5mby5wU2VjUHJvcHMgPyBTZWNJbmZvLnBTZWNQcm9wcy0+ZkxpbmVJbmRlbnQgOiAwLjBmOw0KK30NCitGWF9JTlQzMiBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0QWxpZ25tZW50KGNvbnN0IENQVlRfU2VjdGlvbkluZm8mIFNlY0luZm8pDQorew0KKyAgICByZXR1cm4gbV9iUmljaFRleHQgJiYgU2VjSW5mby5wU2VjUHJvcHMgPyBTZWNJbmZvLnBTZWNQcm9wcy0+bkFsaWdubWVudCA6IHRoaXMtPm1fbkFsaWdubWVudDsNCit9DQorRlhfRkxPQVQgQ1BERl9WYXJpYWJsZVRleHQ6OkdldENoYXJTcGFjZShjb25zdCBDUFZUX1dvcmRJbmZvICYgV29yZEluZm8pDQorew0KKyAgICByZXR1cm4gbV9iUmljaFRleHQgJiYgV29yZEluZm8ucFdvcmRQcm9wcyA/IFdvcmRJbmZvLnBXb3JkUHJvcHMtPmZDaGFyU3BhY2UgOiBtX2ZDaGFyU3BhY2U7DQorfQ0KK0ZYX0lOVDMyIENQREZfVmFyaWFibGVUZXh0OjpHZXRIb3J6U2NhbGUoY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIFdvcmRJbmZvKQ0KK3sNCisgICAgcmV0dXJuIG1fYlJpY2hUZXh0ICYmIFdvcmRJbmZvLnBXb3JkUHJvcHMgPyBXb3JkSW5mby5wV29yZFByb3BzLT5uSG9yelNjYWxlIDogbV9uSG9yelNjYWxlOw0KK30NCit2b2lkIENQREZfVmFyaWFibGVUZXh0OjpDbGVhclNlY3Rpb25SaWdodFdvcmRzKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpDQorew0KKyAgICBDUFZUX1dvcmRQbGFjZSB3b3JkcGxhY2UgPSBBanVzdExpbmVIZWFkZXIocGxhY2UsIFRSVUUpOw0KKyAgICBpZiAoQ1NlY3Rpb24gKiBwU2VjdGlvbiA9IG1fU2VjdGlvbkFycmF5LkdldEF0KHBsYWNlLm5TZWNJbmRleCkpIHsNCisgICAgICAgIGZvciAoRlhfSU5UMzIgdyA9IHBTZWN0aW9uLT5tX1dvcmRBcnJheS5HZXRTaXplKCkgLSAxOyB3ID4gd29yZHBsYWNlLm5Xb3JkSW5kZXg7IHctLSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0QXQodyk7DQorICAgICAgICAgICAgcFNlY3Rpb24tPm1fV29yZEFycmF5LlJlbW92ZUF0KHcpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NQVlRfV29yZFBsYWNlIENQREZfVmFyaWFibGVUZXh0OjpBanVzdExpbmVIZWFkZXIoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSwgRlhfQk9PTCBiUHJldk9yTmV4dCkgY29uc3QNCit7DQorICAgIGlmIChwbGFjZS5uV29yZEluZGV4IDwgMCAmJiBwbGFjZS5uTGluZUluZGV4ID4gMCkgew0KKyAgICAgICAgaWYgKGJQcmV2T3JOZXh0KSB7DQorICAgICAgICAgICAgcmV0dXJuIEdldFByZXZXb3JkUGxhY2UocGxhY2UpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXR1cm4gR2V0TmV4dFdvcmRQbGFjZShwbGFjZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHBsYWNlOw0KK30NCitGWF9CT09MIENQREZfVmFyaWFibGVUZXh0OjpDbGVhckVtcHR5U2VjdGlvbihjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKQ0KK3sNCisgICAgaWYgKHBsYWNlLm5TZWNJbmRleCA9PSAwICYmIG1fU2VjdGlvbkFycmF5LkdldFNpemUoKSA9PSAxKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChwbGFjZS5uU2VjSW5kZXgpKSB7DQorICAgICAgICBpZiAocFNlY3Rpb24tPm1fV29yZEFycmF5LkdldFNpemUoKSA9PSAwKSB7DQorICAgICAgICAgICAgZGVsZXRlIHBTZWN0aW9uOw0KKyAgICAgICAgICAgIG1fU2VjdGlvbkFycmF5LlJlbW92ZUF0KHBsYWNlLm5TZWNJbmRleCk7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCit2b2lkIENQREZfVmFyaWFibGVUZXh0OjpDbGVhckVtcHR5U2VjdGlvbnMoY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgJiBQbGFjZVJhbmdlKQ0KK3sNCisgICAgQ1BWVF9Xb3JkUGxhY2Ugd29yZHBsYWNlOw0KKyAgICBmb3IgKEZYX0lOVDMyIHMgPSBQbGFjZVJhbmdlLkVuZFBvcy5uU2VjSW5kZXg7IHMgPiBQbGFjZVJhbmdlLkJlZ2luUG9zLm5TZWNJbmRleDsgcy0tKSB7DQorICAgICAgICB3b3JkcGxhY2UublNlY0luZGV4ID0gczsNCisgICAgICAgIENsZWFyRW1wdHlTZWN0aW9uKHdvcmRwbGFjZSk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1ZhcmlhYmxlVGV4dDo6TGlua0xhdHRlclNlY3Rpb24oY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkNCit7DQorICAgIENQVlRfV29yZFBsYWNlIG9sZHBsYWNlID0gQWp1c3RMaW5lSGVhZGVyKHBsYWNlLCBUUlVFKTsNCisgICAgaWYgKENTZWN0aW9uICogcE5leHRTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQocGxhY2UublNlY0luZGV4ICsgMSkpIHsNCisgICAgICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQob2xkcGxhY2UublNlY0luZGV4KSkgew0KKyAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgdyA9IDAsIHN6ID0gcE5leHRTZWN0aW9uLT5tX1dvcmRBcnJheS5HZXRTaXplKCk7IHcgPCBzejsgdysrKSB7DQorICAgICAgICAgICAgICAgIGlmIChDUFZUX1dvcmRJbmZvICogcFdvcmQgPSBwTmV4dFNlY3Rpb24tPm1fV29yZEFycmF5LkdldEF0KHcpKSB7DQorICAgICAgICAgICAgICAgICAgICBvbGRwbGFjZS5uV29yZEluZGV4ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgcFNlY3Rpb24tPkFkZFdvcmQob2xkcGxhY2UsICpwV29yZCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBkZWxldGUgcE5leHRTZWN0aW9uOw0KKyAgICAgICAgbV9TZWN0aW9uQXJyYXkuUmVtb3ZlQXQocGxhY2UublNlY0luZGV4ICsgMSk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1ZhcmlhYmxlVGV4dDo6Q2xlYXJXb3Jkcyhjb25zdCBDUFZUX1dvcmRSYW5nZSAmIFBsYWNlUmFuZ2UpDQorew0KKyAgICBDUFZUX1dvcmRSYW5nZSBOZXdSYW5nZTsNCisgICAgTmV3UmFuZ2UuQmVnaW5Qb3MgPSBBanVzdExpbmVIZWFkZXIoUGxhY2VSYW5nZS5CZWdpblBvcywgVFJVRSk7DQorICAgIE5ld1JhbmdlLkVuZFBvcyA9IEFqdXN0TGluZUhlYWRlcihQbGFjZVJhbmdlLkVuZFBvcywgVFJVRSk7DQorICAgIGZvciAoRlhfSU5UMzIgcyA9IE5ld1JhbmdlLkVuZFBvcy5uU2VjSW5kZXg7IHMgPj0gTmV3UmFuZ2UuQmVnaW5Qb3MublNlY0luZGV4OyBzLS0pIHsNCisgICAgICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQocykpIHsNCisgICAgICAgICAgICBwU2VjdGlvbi0+Q2xlYXJXb3JkcyhOZXdSYW5nZSk7DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OkNsZWFyTGVmdFdvcmQoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkNCit7DQorICAgIGlmIChDU2VjdGlvbiAqIHBTZWN0aW9uID0gbV9TZWN0aW9uQXJyYXkuR2V0QXQocGxhY2UublNlY0luZGV4KSkgew0KKyAgICAgICAgQ1BWVF9Xb3JkUGxhY2UgbGVmdHBsYWNlID0gdGhpcy0+R2V0UHJldldvcmRQbGFjZShwbGFjZSk7DQorICAgICAgICBpZiAobGVmdHBsYWNlICE9IHBsYWNlKSB7DQorICAgICAgICAgICAgaWYgKGxlZnRwbGFjZS5uU2VjSW5kZXggIT0gcGxhY2UublNlY0luZGV4KSB7DQorICAgICAgICAgICAgICAgIGlmIChwU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0U2l6ZSgpID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHRoaXMtPkNsZWFyRW1wdHlTZWN0aW9uKHBsYWNlKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHRoaXMtPkxpbmtMYXR0ZXJTZWN0aW9uKGxlZnRwbGFjZSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwU2VjdGlvbi0+Q2xlYXJXb3JkKHBsYWNlKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gbGVmdHBsYWNlOw0KKyAgICB9DQorICAgIHJldHVybiBwbGFjZTsNCit9DQorQ1BWVF9Xb3JkUGxhY2UgQ1BERl9WYXJpYWJsZVRleHQ6OkNsZWFyUmlnaHRXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpDQorew0KKyAgICBpZiAoQ1NlY3Rpb24gKiBwU2VjdGlvbiA9IG1fU2VjdGlvbkFycmF5LkdldEF0KHBsYWNlLm5TZWNJbmRleCkpIHsNCisgICAgICAgIENQVlRfV29yZFBsYWNlIHJpZ2h0cGxhY2UgPSBBanVzdExpbmVIZWFkZXIodGhpcy0+R2V0TmV4dFdvcmRQbGFjZShwbGFjZSksIEZBTFNFKTsNCisgICAgICAgIGlmIChyaWdodHBsYWNlICE9IHBsYWNlKSB7DQorICAgICAgICAgICAgaWYocmlnaHRwbGFjZS5uU2VjSW5kZXggIT0gcGxhY2UublNlY0luZGV4KSB7DQorICAgICAgICAgICAgICAgIExpbmtMYXR0ZXJTZWN0aW9uKHBsYWNlKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwU2VjdGlvbi0+Q2xlYXJXb3JkKHJpZ2h0cGxhY2UpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcGxhY2U7DQorfQ0KK3ZvaWQgQ1BERl9WYXJpYWJsZVRleHQ6OlJlYXJyYW5nZUFsbCgpDQorew0KKyAgICBSZWFycmFuZ2UoQ1BWVF9Xb3JkUmFuZ2UoR2V0QmVnaW5Xb3JkUGxhY2UoKSwgR2V0RW5kV29yZFBsYWNlKCkpKTsNCit9DQordm9pZCBDUERGX1ZhcmlhYmxlVGV4dDo6UmVhcnJhbmdlUGFydChjb25zdCBDUFZUX1dvcmRSYW5nZSAmIFBsYWNlUmFuZ2UpDQorew0KKyAgICBSZWFycmFuZ2UoUGxhY2VSYW5nZSk7DQorfQ0KK0NQVlRfRmxvYXRSZWN0IENQREZfVmFyaWFibGVUZXh0OjpSZWFycmFuZ2UoY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgJiBQbGFjZVJhbmdlKQ0KK3sNCisgICAgQ1BWVF9GbG9hdFJlY3QgcmNSZXQ7DQorICAgIGlmIChJc1ZhbGlkKCkpIHsNCisgICAgICAgIGlmIChtX2JBdXRvRm9udFNpemUpIHsNCisgICAgICAgICAgICBTZXRGb250U2l6ZShHZXRBdXRvRm9udFNpemUoKSk7DQorICAgICAgICAgICAgcmNSZXQgPSBSZWFycmFuZ2VTZWN0aW9ucyhDUFZUX1dvcmRSYW5nZShHZXRCZWdpbldvcmRQbGFjZSgpLCBHZXRFbmRXb3JkUGxhY2UoKSkpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByY1JldCA9IFJlYXJyYW5nZVNlY3Rpb25zKFBsYWNlUmFuZ2UpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIFNldENvbnRlbnRSZWN0KHJjUmV0KTsNCisgICAgcmV0dXJuIHJjUmV0Ow0KK30NCitGWF9GTE9BVCBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0QXV0b0ZvbnRTaXplKCkNCit7DQorICAgIEZYX0lOVDMyIG5Ub3RhbCA9IHNpemVvZihnRm9udFNpemVTdGVwcykgLyBzaXplb2YoRlhfQllURSk7DQorICAgIGlmIChJc011bHRpTGluZSgpKSB7DQorICAgICAgICBuVG90YWwgLz0gNDsNCisgICAgfQ0KKyAgICBpZiAoblRvdGFsIDw9IDApIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChHZXRQbGF0ZVdpZHRoKCkgPD0gMCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfSU5UMzIgbkxlZnQgPSAwOw0KKyAgICBGWF9JTlQzMiBuUmlnaHQgPSBuVG90YWwgLSAxOw0KKyAgICBGWF9JTlQzMiBuTWlkID0gblRvdGFsIC8gMjsNCisgICAgd2hpbGUgKG5MZWZ0IDw9IG5SaWdodCkgew0KKyAgICAgICAgaWYgKElzQmlnZ2VyKGdGb250U2l6ZVN0ZXBzW25NaWRdKSkgew0KKyAgICAgICAgICAgIG5SaWdodCA9IG5NaWQgLSAxOw0KKyAgICAgICAgICAgIG5NaWQgPSAobkxlZnQgKyBuUmlnaHQpIC8gMjsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbkxlZnQgPSBuTWlkICsgMTsNCisgICAgICAgICAgICBuTWlkID0gKG5MZWZ0ICsgblJpZ2h0KSAvIDI7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIChGWF9GTE9BVClnRm9udFNpemVTdGVwc1tuTWlkXTsNCit9DQorRlhfQk9PTAlDUERGX1ZhcmlhYmxlVGV4dDo6SXNCaWdnZXIoRlhfRkxPQVQgZkZvbnRTaXplKQ0KK3sNCisgICAgRlhfQk9PTCBiQmlnZ2VyID0gIEZBTFNFOw0KKyAgICBDUFZUX1NpemUgc3pUb3RhbDsNCisgICAgZm9yIChGWF9JTlQzMiBzID0gMCwgc3ogPSBtX1NlY3Rpb25BcnJheS5HZXRTaXplKCk7IHMgPCBzejsgcysrKSB7DQorICAgICAgICBpZiAoQ1NlY3Rpb24gKiBwU2VjdGlvbiA9IG1fU2VjdGlvbkFycmF5LkdldEF0KHMpKSB7DQorICAgICAgICAgICAgQ1BWVF9TaXplIHNpemUgPSBwU2VjdGlvbi0+R2V0U2VjdGlvblNpemUoZkZvbnRTaXplKTsNCisgICAgICAgICAgICBzelRvdGFsLnggPSBGUERGX01BWChzaXplLngsIHN6VG90YWwueCk7DQorICAgICAgICAgICAgc3pUb3RhbC55ICs9IHNpemUueTsNCisgICAgICAgICAgICBpZiAoSXNGbG9hdEJpZ2dlcihzelRvdGFsLngsIEdldFBsYXRlV2lkdGgoKSkNCisgICAgICAgICAgICAgICAgICAgIHx8IElzRmxvYXRCaWdnZXIoc3pUb3RhbC55LCBHZXRQbGF0ZUhlaWdodCgpKQ0KKyAgICAgICAgICAgICAgICkgew0KKyAgICAgICAgICAgICAgICBiQmlnZ2VyID0gVFJVRTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBiQmlnZ2VyOw0KK30NCitDUFZUX0Zsb2F0UmVjdCBDUERGX1ZhcmlhYmxlVGV4dDo6UmVhcnJhbmdlU2VjdGlvbnMoY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgJiBQbGFjZVJhbmdlKQ0KK3sNCisgICAgQ1BWVF9Xb3JkUGxhY2UgcGxhY2U7DQorICAgIEZYX0ZMT0FUIGZQb3NZID0gMDsNCisgICAgRlhfRkxPQVQgZk9sZEhlaWdodDsNCisgICAgRlhfSU5UMzIgblNTZWNJbmRleCA9IFBsYWNlUmFuZ2UuQmVnaW5Qb3MublNlY0luZGV4Ow0KKyAgICBGWF9JTlQzMiBuRVNlY0luZGV4ID0gUGxhY2VSYW5nZS5FbmRQb3MublNlY0luZGV4Ow0KKyAgICBDUFZUX0Zsb2F0UmVjdCByY1JldDsNCisgICAgZm9yIChGWF9JTlQzMiBzID0gMCwgc3ogPSBtX1NlY3Rpb25BcnJheS5HZXRTaXplKCk7IHMgPCBzejsgcysrKSB7DQorICAgICAgICBwbGFjZS5uU2VjSW5kZXggPSBzOw0KKyAgICAgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX1NlY3Rpb25BcnJheS5HZXRBdChzKSkgew0KKyAgICAgICAgICAgIHBTZWN0aW9uLT5TZWNQbGFjZSA9IHBsYWNlOw0KKyAgICAgICAgICAgIENQVlRfRmxvYXRSZWN0IHJjU2VjID0gcFNlY3Rpb24tPm1fU2VjSW5mby5yY1NlY3Rpb247DQorICAgICAgICAgICAgaWYgKHMgPj0gblNTZWNJbmRleCkgew0KKyAgICAgICAgICAgICAgICBpZiAocyA8PSBuRVNlY0luZGV4KSB7DQorICAgICAgICAgICAgICAgICAgICByY1NlYyA9IHBTZWN0aW9uLT5SZWFycmFuZ2UoKTsNCisgICAgICAgICAgICAgICAgICAgIHJjU2VjLnRvcCArPSBmUG9zWTsNCisgICAgICAgICAgICAgICAgICAgIHJjU2VjLmJvdHRvbSArPSBmUG9zWTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGZPbGRIZWlnaHQgPSBwU2VjdGlvbi0+bV9TZWNJbmZvLnJjU2VjdGlvbi5ib3R0b20gLSBwU2VjdGlvbi0+bV9TZWNJbmZvLnJjU2VjdGlvbi50b3A7DQorICAgICAgICAgICAgICAgICAgICByY1NlYy50b3AgPSBmUG9zWTsNCisgICAgICAgICAgICAgICAgICAgIHJjU2VjLmJvdHRvbSA9IGZQb3NZICsgZk9sZEhlaWdodDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwU2VjdGlvbi0+bV9TZWNJbmZvLnJjU2VjdGlvbiA9IHJjU2VjOw0KKyAgICAgICAgICAgICAgICBwU2VjdGlvbi0+UmVzZXRMaW5lUGxhY2UoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHMgPT0gMCkgew0KKyAgICAgICAgICAgICAgICByY1JldCA9IHJjU2VjOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJjUmV0LmxlZnQgPSBGUERGX01JTihyY1NlYy5sZWZ0LCByY1JldC5sZWZ0KTsNCisgICAgICAgICAgICAgICAgcmNSZXQudG9wID0gRlBERl9NSU4ocmNTZWMudG9wLCByY1JldC50b3ApOw0KKyAgICAgICAgICAgICAgICByY1JldC5yaWdodCA9IEZQREZfTUFYKHJjU2VjLnJpZ2h0LCByY1JldC5yaWdodCk7DQorICAgICAgICAgICAgICAgIHJjUmV0LmJvdHRvbSA9IEZQREZfTUFYKHJjU2VjLmJvdHRvbSwgcmNSZXQuYm90dG9tKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZlBvc1kgKz0gcmNTZWMuSGVpZ2h0KCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHJjUmV0Ow0KK30NCitGWF9JTlQzMiBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0Q2hhcldpZHRoKEZYX0lOVDMyIG5Gb250SW5kZXgsIEZYX1dPUkQgV29yZCwgRlhfV09SRCBTdWJXb3JkLCBGWF9JTlQzMiBuV29yZFN0eWxlKQ0KK3sNCisgICAgaWYgKG1fcFZUUHJvdmlkZXIpIHsNCisgICAgICAgIGlmIChTdWJXb3JkID4gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBtX3BWVFByb3ZpZGVyLT5HZXRDaGFyV2lkdGgobkZvbnRJbmRleCwgU3ViV29yZCwgbldvcmRTdHlsZSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldHVybiBtX3BWVFByb3ZpZGVyLT5HZXRDaGFyV2lkdGgobkZvbnRJbmRleCwgV29yZCwgbldvcmRTdHlsZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX0lOVDMyIENQREZfVmFyaWFibGVUZXh0OjpHZXRUeXBlQXNjZW50KEZYX0lOVDMyIG5Gb250SW5kZXgpDQorew0KKyAgICByZXR1cm4gbV9wVlRQcm92aWRlciA/IG1fcFZUUHJvdmlkZXItPkdldFR5cGVBc2NlbnQobkZvbnRJbmRleCkgOiAwOw0KK30NCitGWF9JTlQzMiBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0VHlwZURlc2NlbnQoRlhfSU5UMzIgbkZvbnRJbmRleCkNCit7DQorICAgIHJldHVybiBtX3BWVFByb3ZpZGVyID8gbV9wVlRQcm92aWRlci0+R2V0VHlwZURlc2NlbnQobkZvbnRJbmRleCkgOiAwOw0KK30NCitGWF9JTlQzMiBDUERGX1ZhcmlhYmxlVGV4dDo6R2V0V29yZEZvbnRJbmRleChGWF9XT1JEIHdvcmQsIEZYX0lOVDMyIGNoYXJzZXQsIEZYX0lOVDMyIG5Gb250SW5kZXgpDQorew0KKyAgICByZXR1cm4gbV9wVlRQcm92aWRlciA/IG1fcFZUUHJvdmlkZXItPkdldFdvcmRGb250SW5kZXgod29yZCwgY2hhcnNldCwgbkZvbnRJbmRleCkgOiAtMTsNCit9DQorRlhfSU5UMzIgQ1BERl9WYXJpYWJsZVRleHQ6OkdldERlZmF1bHRGb250SW5kZXgoKQ0KK3sNCisgICAgcmV0dXJuIG1fcFZUUHJvdmlkZXIgPyBtX3BWVFByb3ZpZGVyLT5HZXREZWZhdWx0Rm9udEluZGV4KCkgOiAtMTsNCit9DQorRlhfQk9PTAlDUERGX1ZhcmlhYmxlVGV4dDo6SXNMYXRpbldvcmQoRlhfV09SRCB3b3JkKQ0KK3sNCisgICAgcmV0dXJuIG1fcFZUUHJvdmlkZXIgPyBtX3BWVFByb3ZpZGVyLT5Jc0xhdGluV29yZCh3b3JkKSA6IEZBTFNFOw0KK30NCitJUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvciAqIENQREZfVmFyaWFibGVUZXh0OjpHZXRJdGVyYXRvcigpDQorew0KKyAgICBpZiAoIW1fcFZUSXRlcmF0b3IpIHsNCisgICAgICAgIHJldHVybiBtX3BWVEl0ZXJhdG9yID0gRlhfTkVXIENQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yKHRoaXMpOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BWVEl0ZXJhdG9yOw0KK30NCitJUERGX1ZhcmlhYmxlVGV4dF9Qcm92aWRlcioJQ1BERl9WYXJpYWJsZVRleHQ6OlNldFByb3ZpZGVyKElQREZfVmFyaWFibGVUZXh0X1Byb3ZpZGVyICogcFByb3ZpZGVyKQ0KK3sNCisgICAgSVBERl9WYXJpYWJsZVRleHRfUHJvdmlkZXIqIHBPbGQgPSBtX3BWVFByb3ZpZGVyOw0KKyAgICBtX3BWVFByb3ZpZGVyID0gcFByb3ZpZGVyOw0KKyAgICByZXR1cm4gcE9sZDsNCit9DQorQ1BERl9WYXJpYWJsZVRleHRfSXRlcmF0b3I6OkNQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yKENQREZfVmFyaWFibGVUZXh0ICogcFZUKToNCisgICAgbV9wVlQocFZUKSwNCisgICAgbV9DdXJQb3MoLTEsIC0xLCAtMSkNCit7DQorfQ0KK0NQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yOjp+Q1BERl9WYXJpYWJsZVRleHRfSXRlcmF0b3IoKQ0KK3sNCit9DQordm9pZCBDUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvcjo6U2V0QXQoRlhfSU5UMzIgbldvcmRJbmRleCkNCit7DQorICAgIEFTU0VSVChtX3BWVCAhPSBOVUxMKTsNCisgICAgbV9DdXJQb3MgPSBtX3BWVC0+V29yZEluZGV4VG9Xb3JkUGxhY2UobldvcmRJbmRleCk7DQorfQ0KK3ZvaWQgQ1BERl9WYXJpYWJsZVRleHRfSXRlcmF0b3I6OlNldEF0KGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpDQorew0KKyAgICBBU1NFUlQobV9wVlQgIT0gTlVMTCk7DQorICAgIG1fQ3VyUG9zID0gcGxhY2U7DQorfQ0KK0ZYX0JPT0wJQ1BERl9WYXJpYWJsZVRleHRfSXRlcmF0b3I6Ok5leHRXb3JkKCkNCit7DQorICAgIEFTU0VSVChtX3BWVCAhPSBOVUxMKTsNCisgICAgaWYgKG1fQ3VyUG9zID09IG1fcFZULT5HZXRFbmRXb3JkUGxhY2UoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fQ3VyUG9zID0gbV9wVlQtPkdldE5leHRXb3JkUGxhY2UobV9DdXJQb3MpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTAlDUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvcjo6UHJldldvcmQoKQ0KK3sNCisgICAgQVNTRVJUKG1fcFZUICE9IE5VTEwpOw0KKyAgICBpZiAobV9DdXJQb3MgPT0gbV9wVlQtPkdldEJlZ2luV29yZFBsYWNlKCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX0N1clBvcyA9IG1fcFZULT5HZXRQcmV2V29yZFBsYWNlKG1fQ3VyUG9zKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wJQ1BERl9WYXJpYWJsZVRleHRfSXRlcmF0b3I6Ok5leHRMaW5lKCkNCit7DQorICAgIEFTU0VSVChtX3BWVCAhPSBOVUxMKTsNCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX3BWVC0+bV9TZWN0aW9uQXJyYXkuR2V0QXQobV9DdXJQb3MublNlY0luZGV4KSkgew0KKyAgICAgICAgaWYgKG1fQ3VyUG9zLm5MaW5lSW5kZXggPCBwU2VjdGlvbi0+bV9MaW5lQXJyYXkuR2V0U2l6ZSgpIC0gMSkgew0KKyAgICAgICAgICAgIG1fQ3VyUG9zID0gQ1BWVF9Xb3JkUGxhY2UobV9DdXJQb3MublNlY0luZGV4LCBtX0N1clBvcy5uTGluZUluZGV4ICsgMSwgLTEpOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAobV9DdXJQb3MublNlY0luZGV4IDwgbV9wVlQtPm1fU2VjdGlvbkFycmF5LkdldFNpemUoKSAtIDEpIHsNCisgICAgICAgICAgICAgICAgbV9DdXJQb3MgPSBDUFZUX1dvcmRQbGFjZShtX0N1clBvcy5uU2VjSW5kZXggKyAxLCAwLCAtMSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wJQ1BERl9WYXJpYWJsZVRleHRfSXRlcmF0b3I6OlByZXZMaW5lKCkNCit7DQorICAgIEFTU0VSVChtX3BWVCAhPSBOVUxMKTsNCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX3BWVC0+bV9TZWN0aW9uQXJyYXkuR2V0QXQobV9DdXJQb3MublNlY0luZGV4KSkgew0KKyAgICAgICAgaWYgKG1fQ3VyUG9zLm5MaW5lSW5kZXggPiAwKSB7DQorICAgICAgICAgICAgbV9DdXJQb3MgPSBDUFZUX1dvcmRQbGFjZShtX0N1clBvcy5uU2VjSW5kZXgsIG1fQ3VyUG9zLm5MaW5lSW5kZXggLSAxLCAtMSk7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChtX0N1clBvcy5uU2VjSW5kZXggPiAwKSB7DQorICAgICAgICAgICAgICAgIGlmIChDU2VjdGlvbiAqIHBMYXN0U2VjdGlvbiA9IG1fcFZULT5tX1NlY3Rpb25BcnJheS5HZXRBdChtX0N1clBvcy5uU2VjSW5kZXggLSAxKSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9DdXJQb3MgPSBDUFZUX1dvcmRQbGFjZShtX0N1clBvcy5uU2VjSW5kZXggLSAxLCBwTGFzdFNlY3Rpb24tPm1fTGluZUFycmF5LkdldFNpemUoKSAtIDEsIC0xKTsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTAlDUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvcjo6TmV4dFNlY3Rpb24oKQ0KK3sNCisgICAgQVNTRVJUKG1fcFZUICE9IE5VTEwpOw0KKyAgICBpZiAobV9DdXJQb3MublNlY0luZGV4IDwgbV9wVlQtPm1fU2VjdGlvbkFycmF5LkdldFNpemUoKSAtIDEpIHsNCisgICAgICAgIG1fQ3VyUG9zID0gQ1BWVF9Xb3JkUGxhY2UobV9DdXJQb3MublNlY0luZGV4ICsgMSwgMCwgLTEpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MCUNQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yOjpQcmV2U2VjdGlvbigpDQorew0KKyAgICBBU1NFUlQobV9wVlQgIT0gTlVMTCk7DQorICAgIGlmIChtX0N1clBvcy5uU2VjSW5kZXggPiAwKSB7DQorICAgICAgICBtX0N1clBvcyA9IENQVlRfV29yZFBsYWNlKG1fQ3VyUG9zLm5TZWNJbmRleCAtIDEsIDAsIC0xKTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTAlDUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvcjo6R2V0V29yZChDUFZUX1dvcmQgJiB3b3JkKSBjb25zdA0KK3sNCisgICAgQVNTRVJUKG1fcFZUICE9IE5VTEwpOw0KKyAgICB3b3JkLldvcmRQbGFjZSA9IG1fQ3VyUG9zOw0KKyAgICBpZiAoQ1NlY3Rpb24gKiBwU2VjdGlvbiA9IG1fcFZULT5tX1NlY3Rpb25BcnJheS5HZXRBdChtX0N1clBvcy5uU2VjSW5kZXgpKSB7DQorICAgICAgICBpZiAoQ0xpbmUgKiBwTGluZSA9IHBTZWN0aW9uLT5tX0xpbmVBcnJheS5HZXRBdChtX0N1clBvcy5uTGluZUluZGV4KSkgew0KKyAgICAgICAgICAgIGlmIChDUFZUX1dvcmRJbmZvICogcFdvcmQgPSBwU2VjdGlvbi0+bV9Xb3JkQXJyYXkuR2V0QXQobV9DdXJQb3MubldvcmRJbmRleCkpIHsNCisgICAgICAgICAgICAgICAgd29yZC5Xb3JkID0gcFdvcmQtPldvcmQ7DQorICAgICAgICAgICAgICAgIHdvcmQubkNoYXJzZXQgPSBwV29yZC0+bkNoYXJzZXQ7DQorICAgICAgICAgICAgICAgIHdvcmQuZldpZHRoID0gbV9wVlQtPkdldFdvcmRXaWR0aCgqcFdvcmQpOw0KKyAgICAgICAgICAgICAgICB3b3JkLnB0V29yZCA9IG1fcFZULT5JblRvT3V0KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1BvaW50KHBXb3JkLT5mV29yZFggKyBwU2VjdGlvbi0+bV9TZWNJbmZvLnJjU2VjdGlvbi5sZWZ0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBXb3JkLT5mV29yZFkgKyBwU2VjdGlvbi0+bV9TZWNJbmZvLnJjU2VjdGlvbi50b3ApICk7DQorICAgICAgICAgICAgICAgIHdvcmQuZkFzY2VudCA9IG1fcFZULT5HZXRXb3JkQXNjZW50KCpwV29yZCk7DQorICAgICAgICAgICAgICAgIHdvcmQuZkRlc2NlbnQgPSBtX3BWVC0+R2V0V29yZERlc2NlbnQoKnBXb3JkKTsNCisgICAgICAgICAgICAgICAgaWYgKHBXb3JkLT5wV29yZFByb3BzKSB7DQorICAgICAgICAgICAgICAgICAgICB3b3JkLldvcmRQcm9wcyA9ICpwV29yZC0+cFdvcmRQcm9wczsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB3b3JkLm5Gb250SW5kZXggPSBtX3BWVC0+R2V0V29yZEZvbnRJbmRleCgqcFdvcmQpOw0KKyAgICAgICAgICAgICAgICB3b3JkLmZGb250U2l6ZSA9IG1fcFZULT5HZXRXb3JkRm9udFNpemUoKnBXb3JkKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTAlDUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvcjo6U2V0V29yZChjb25zdCBDUFZUX1dvcmQgJiB3b3JkKQ0KK3sNCisgICAgQVNTRVJUKG1fcFZUICE9IE5VTEwpOw0KKyAgICBpZiAoQ1NlY3Rpb24gKiBwU2VjdGlvbiA9IG1fcFZULT5tX1NlY3Rpb25BcnJheS5HZXRBdChtX0N1clBvcy5uU2VjSW5kZXgpKSB7DQorICAgICAgICBpZiAoQ1BWVF9Xb3JkSW5mbyAqIHBXb3JkID0gcFNlY3Rpb24tPm1fV29yZEFycmF5LkdldEF0KG1fQ3VyUG9zLm5Xb3JkSW5kZXgpKSB7DQorICAgICAgICAgICAgaWYgKHBXb3JkLT5wV29yZFByb3BzKSB7DQorICAgICAgICAgICAgICAgICpwV29yZC0+cFdvcmRQcm9wcyA9IHdvcmQuV29yZFByb3BzOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wJQ1BERl9WYXJpYWJsZVRleHRfSXRlcmF0b3I6OkdldExpbmUoQ1BWVF9MaW5lICYgbGluZSkgY29uc3QNCit7DQorICAgIEFTU0VSVChtX3BWVCAhPSBOVUxMKTsNCisgICAgbGluZS5saW5lcGxhY2UgPSBDUFZUX1dvcmRQbGFjZShtX0N1clBvcy5uU2VjSW5kZXgsIG1fQ3VyUG9zLm5MaW5lSW5kZXgsIC0xKTsNCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX3BWVC0+bV9TZWN0aW9uQXJyYXkuR2V0QXQobV9DdXJQb3MublNlY0luZGV4KSkgew0KKyAgICAgICAgaWYgKENMaW5lICogcExpbmUgPSBwU2VjdGlvbi0+bV9MaW5lQXJyYXkuR2V0QXQobV9DdXJQb3MubkxpbmVJbmRleCkpIHsNCisgICAgICAgICAgICBsaW5lLnB0TGluZSA9IG1fcFZULT5JblRvT3V0KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfUG9pbnQocExpbmUtPm1fTGluZUluZm8uZkxpbmVYICsgcFNlY3Rpb24tPm1fU2VjSW5mby5yY1NlY3Rpb24ubGVmdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lLT5tX0xpbmVJbmZvLmZMaW5lWSArIHBTZWN0aW9uLT5tX1NlY0luZm8ucmNTZWN0aW9uLnRvcCkgKTsNCisgICAgICAgICAgICBsaW5lLmZMaW5lV2lkdGggPSBwTGluZS0+bV9MaW5lSW5mby5mTGluZVdpZHRoOw0KKyAgICAgICAgICAgIGxpbmUuZkxpbmVBc2NlbnQgPSBwTGluZS0+bV9MaW5lSW5mby5mTGluZUFzY2VudDsNCisgICAgICAgICAgICBsaW5lLmZMaW5lRGVzY2VudCA9IHBMaW5lLT5tX0xpbmVJbmZvLmZMaW5lRGVzY2VudDsNCisgICAgICAgICAgICBsaW5lLmxpbmVFbmQgPSBwTGluZS0+R2V0RW5kV29yZFBsYWNlKCk7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MCUNQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yOjpHZXRTZWN0aW9uKENQVlRfU2VjdGlvbiAmIHNlY3Rpb24pIGNvbnN0DQorew0KKyAgICBBU1NFUlQobV9wVlQgIT0gTlVMTCk7DQorICAgIHNlY3Rpb24uc2VjcGxhY2UgPSBDUFZUX1dvcmRQbGFjZShtX0N1clBvcy5uU2VjSW5kZXgsIDAsIC0xKTsNCisgICAgaWYgKENTZWN0aW9uICogcFNlY3Rpb24gPSBtX3BWVC0+bV9TZWN0aW9uQXJyYXkuR2V0QXQobV9DdXJQb3MublNlY0luZGV4KSkgew0KKyAgICAgICAgc2VjdGlvbi5yY1NlY3Rpb24gPSBtX3BWVC0+SW5Ub091dChwU2VjdGlvbi0+bV9TZWNJbmZvLnJjU2VjdGlvbik7DQorICAgICAgICBpZiAocFNlY3Rpb24tPm1fU2VjSW5mby5wU2VjUHJvcHMpIHsNCisgICAgICAgICAgICBzZWN0aW9uLlNlY1Byb3BzID0gKnBTZWN0aW9uLT5tX1NlY0luZm8ucFNlY1Byb3BzOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBTZWN0aW9uLT5tX1NlY0luZm8ucFdvcmRQcm9wcykgew0KKyAgICAgICAgICAgIHNlY3Rpb24uV29yZFByb3BzID0gKnBTZWN0aW9uLT5tX1NlY0luZm8ucFdvcmRQcm9wczsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTAlDUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvcjo6U2V0U2VjdGlvbihjb25zdCBDUFZUX1NlY3Rpb24gJiBzZWN0aW9uKQ0KK3sNCisgICAgQVNTRVJUKG1fcFZUICE9IE5VTEwpOw0KKyAgICBpZiAoQ1NlY3Rpb24gKiBwU2VjdGlvbiA9IG1fcFZULT5tX1NlY3Rpb25BcnJheS5HZXRBdChtX0N1clBvcy5uU2VjSW5kZXgpKSB7DQorICAgICAgICBpZiAocFNlY3Rpb24tPm1fU2VjSW5mby5wU2VjUHJvcHMpIHsNCisgICAgICAgICAgICAqcFNlY3Rpb24tPm1fU2VjSW5mby5wU2VjUHJvcHMgPSBzZWN0aW9uLlNlY1Byb3BzOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBTZWN0aW9uLT5tX1NlY0luZm8ucFdvcmRQcm9wcykgew0KKyAgICAgICAgICAgICpwU2VjdGlvbi0+bV9TZWNJbmZvLnBXb3JkUHJvcHMgPSBzZWN0aW9uLldvcmRQcm9wczsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmRvYy9kb2NfdnRtb2R1bGUuY3BwIGIvY29yZS9zcmMvZnBkZmRvYy9kb2NfdnRtb2R1bGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYzRlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmZG9jL2RvY192dG1vZHVsZS5jcHAKQEAgLTAsMCArMSwxNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmRvYy9mcGRmX2RvYy5oIg0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZkb2MvZnBkZl92dC5oIg0KKyNpbmNsdWRlICJwZGZfdnQuaCINCitJUERGX1ZhcmlhYmxlVGV4dCogSVBERl9WYXJpYWJsZVRleHQ6Ok5ld1ZhcmlhYmxlVGV4dCgpDQorew0KKyAgICByZXR1cm4gRlhfTkVXIENQREZfVmFyaWFibGVUZXh0KCk7DQorfQ0KK3ZvaWQgSVBERl9WYXJpYWJsZVRleHQ6OkRlbFZhcmlhYmxlVGV4dChJUERGX1ZhcmlhYmxlVGV4dCogcFZUKQ0KK3sNCisgICAgZGVsZXRlIChDUERGX1ZhcmlhYmxlVGV4dCopcFZUOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmZG9jL3BkZl92dC5oIGIvY29yZS9zcmMvZnBkZmRvYy9wZGZfdnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzFhZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZmRvYy9wZGZfdnQuaApAQCAtMCwwICsxLDY0MiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2RlZmluZSBfUERGX1ZUX0hfDQorY2xhc3MgQ1BWVF9TaXplOw0KK2NsYXNzIENQVlRfRmxvYXRSZWN0Ow0KK3N0cnVjdCBDUFZUX1NlY3Rpb25JbmZvOw0KK3N0cnVjdCBDUFZUX0xpbmVJbmZvOw0KK3N0cnVjdCBDUFZUX1dvcmRJbmZvOw0KK2NsYXNzIENMaW5lOw0KK2NsYXNzIENMaW5lczsNCitjbGFzcyBDU2VjdGlvbjsNCitjbGFzcyBDVHlwZXNldDsNCitjbGFzcyBDUERGX0VkaXRDb250YWluZXI7DQorY2xhc3MgQ1BERl9WYXJpYWJsZVRleHQ7DQorY2xhc3MgQ1BERl9WYXJpYWJsZVRleHRfSXRlcmF0b3I7DQorI2RlZmluZSBJc0Zsb2F0WmVybyhmKQkJCQkJCSgoZikgPCAwLjAwMDEgJiYgKGYpID4gLTAuMDAwMSkNCisjZGVmaW5lIElzRmxvYXRCaWdnZXIoZmEsZmIpCQkJCSgoZmEpID4gKGZiKSAmJiAhSXNGbG9hdFplcm8oKGZhKSAtIChmYikpKQ0KKyNkZWZpbmUgSXNGbG9hdFNtYWxsZXIoZmEsZmIpCQkJCSgoZmEpIDwgKGZiKSAmJiAhSXNGbG9hdFplcm8oKGZhKSAtIChmYikpKQ0KK3RlbXBsYXRlPGNsYXNzIFQ+IFQgRlBERl9NSU4gKGNvbnN0IFQgJiBpLCBjb25zdCBUICYgaikNCit7DQorICAgIHJldHVybiAoKGkgPCBqKSA/IGkgOiBqKTsNCit9DQordGVtcGxhdGU8Y2xhc3MgVD4gVCBGUERGX01BWCAoY29uc3QgVCAmIGksIGNvbnN0IFQgJiBqKQ0KK3sNCisgICAgcmV0dXJuICgoaSA+IGopID8gaSA6IGopOw0KK30NCitjbGFzcyBDUFZUX1NpemUNCit7DQorcHVibGljOg0KKyAgICBDUFZUX1NpemUoKSA6IHgoMC4wZiksIHkoMC4wZikNCisgICAgew0KKyAgICB9DQorICAgIENQVlRfU2l6ZShGWF9GTE9BVCB4LCBGWF9GTE9BVCB5KQ0KKyAgICB7DQorICAgICAgICB0aGlzLT54ID0geDsNCisgICAgICAgIHRoaXMtPnkgPSB5Ow0KKyAgICB9DQorICAgIEZYX0ZMT0FUIHgsIHk7DQorfTsNCitjbGFzcyBDUFZUX0Zsb2F0UmVjdCA6IHB1YmxpYyBDRlhfRmxvYXRSZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BWVF9GbG9hdFJlY3QoKQ0KKyAgICB7DQorICAgICAgICBsZWZ0ID0gdG9wID0gcmlnaHQgPSBib3R0b20gPSAwLjBmOw0KKyAgICB9DQorICAgIENQVlRfRmxvYXRSZWN0KEZYX0ZMT0FUIGxlZnQsIEZYX0ZMT0FUIHRvcCwNCisgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgcmlnaHQsIEZYX0ZMT0FUIGJvdHRvbSkNCisgICAgew0KKyAgICAgICAgdGhpcy0+bGVmdCA9IGxlZnQ7DQorICAgICAgICB0aGlzLT50b3AgPSB0b3A7DQorICAgICAgICB0aGlzLT5yaWdodCA9IHJpZ2h0Ow0KKyAgICAgICAgdGhpcy0+Ym90dG9tID0gYm90dG9tOw0KKyAgICB9DQorICAgIENQVlRfRmxvYXRSZWN0KGNvbnN0IENQREZfUmVjdCAmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHRoaXMtPmxlZnQgPSByZWN0LmxlZnQ7DQorICAgICAgICB0aGlzLT50b3AgPSByZWN0LnRvcDsNCisgICAgICAgIHRoaXMtPnJpZ2h0ID0gcmVjdC5yaWdodDsNCisgICAgICAgIHRoaXMtPmJvdHRvbSA9IHJlY3QuYm90dG9tOw0KKyAgICB9DQorICAgIHZvaWQgRGVmYXVsdCgpDQorICAgIHsNCisgICAgICAgIGxlZnQgPSB0b3AgPSByaWdodCA9IGJvdHRvbSA9IDAuMGY7DQorICAgIH0NCisgICAgRlhfRkxPQVQgSGVpZ2h0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYodGhpcy0+dG9wID4gdGhpcy0+Ym90dG9tKSB7DQorICAgICAgICAgICAgcmV0dXJuIHRoaXMtPnRvcCAtIHRoaXMtPmJvdHRvbTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmJvdHRvbSAtIHRoaXMtPnRvcDsNCisgICAgICAgIH0NCisgICAgfQ0KK307DQorc3RydWN0IENQVlRfU2VjdGlvbkluZm8gew0KKyAgICBDUFZUX1NlY3Rpb25JbmZvKCkgOiByY1NlY3Rpb24oKSwgblRvdGFsTGluZSgwKSwgcFNlY1Byb3BzKE5VTEwpLCBwV29yZFByb3BzKE5VTEwpDQorICAgIHsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIH5DUFZUX1NlY3Rpb25JbmZvKCkNCisgICAgew0KKyAgICAgICAgaWYgKHBTZWNQcm9wcykgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwU2VjUHJvcHM7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFdvcmRQcm9wcykgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwV29yZFByb3BzOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENQVlRfU2VjdGlvbkluZm8oY29uc3QgQ1BWVF9TZWN0aW9uSW5mbyAmIG90aGVyKTogcmNTZWN0aW9uKCksIG5Ub3RhbExpbmUoMCksIHBTZWNQcm9wcyhOVUxMKSwgcFdvcmRQcm9wcyhOVUxMKQ0KKyAgICB7DQorICAgICAgICBvcGVyYXRvciA9IChvdGhlcik7DQorICAgIH0NCisgICAgdm9pZCBvcGVyYXRvciA9IChjb25zdCBDUFZUX1NlY3Rpb25JbmZvICYgb3RoZXIpDQorICAgIHsNCisgICAgICAgIGlmICh0aGlzID09ICZvdGhlcikgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHRoaXMtPnJjU2VjdGlvbiA9IG90aGVyLnJjU2VjdGlvbjsNCisgICAgICAgIHRoaXMtPm5Ub3RhbExpbmUgPSBvdGhlci5uVG90YWxMaW5lOw0KKyAgICAgICAgaWYgKG90aGVyLnBTZWNQcm9wcykgew0KKyAgICAgICAgICAgIGlmIChwU2VjUHJvcHMpIHsNCisgICAgICAgICAgICAgICAgKnBTZWNQcm9wcyA9ICpvdGhlci5wU2VjUHJvcHM7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcFNlY1Byb3BzID0gRlhfTkVXIENQVlRfU2VjUHJvcHMoKm90aGVyLnBTZWNQcm9wcyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG90aGVyLnBXb3JkUHJvcHMpIHsNCisgICAgICAgICAgICBpZiAocFdvcmRQcm9wcykgew0KKyAgICAgICAgICAgICAgICAqcFdvcmRQcm9wcyA9ICpvdGhlci5wV29yZFByb3BzOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBXb3JkUHJvcHMgPSBGWF9ORVcgQ1BWVF9Xb3JkUHJvcHMoKm90aGVyLnBXb3JkUHJvcHMpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDUFZUX0Zsb2F0UmVjdAkJCQlyY1NlY3Rpb247DQorICAgIEZYX0lOVDMyCQkJCQluVG90YWxMaW5lOw0KKyAgICBDUFZUX1NlY1Byb3BzKgkJCQlwU2VjUHJvcHM7DQorICAgIENQVlRfV29yZFByb3BzKgkJCQlwV29yZFByb3BzOw0KK307DQorc3RydWN0IENQVlRfTGluZUluZm8gew0KKyAgICBDUFZUX0xpbmVJbmZvKCkgOiBuVG90YWxXb3JkKDApLCBuQmVnaW5Xb3JkSW5kZXgoLTEpLCBuRW5kV29yZEluZGV4KC0xKSwNCisgICAgICAgIGZMaW5lWCgwLjBmKSwgZkxpbmVZKDAuMGYpLCBmTGluZVdpZHRoKDAuMGYpLCBmTGluZUFzY2VudCgwLjBmKSwgZkxpbmVEZXNjZW50KDAuMGYpDQorICAgIHsNCisgICAgfQ0KKyAgICBGWF9JTlQzMgkJCQkJblRvdGFsV29yZDsNCisgICAgRlhfSU5UMzIJCQkJCW5CZWdpbldvcmRJbmRleDsNCisgICAgRlhfSU5UMzIJCQkJCW5FbmRXb3JkSW5kZXg7DQorICAgIEZYX0ZMT0FUCQkJCQlmTGluZVg7DQorICAgIEZYX0ZMT0FUCQkJCQlmTGluZVk7DQorICAgIEZYX0ZMT0FUCQkJCQlmTGluZVdpZHRoOw0KKyAgICBGWF9GTE9BVAkJCQkJZkxpbmVBc2NlbnQ7DQorICAgIEZYX0ZMT0FUCQkJCQlmTGluZURlc2NlbnQ7DQorfTsNCitzdHJ1Y3QgQ1BWVF9Xb3JkSW5mbyA6IHB1YmxpYyBDRlhfT2JqZWN0IHsNCisgICAgQ1BWVF9Xb3JkSW5mbygpIDogV29yZCgwKSwgbkNoYXJzZXQoMCksDQorICAgICAgICBmV29yZFgoMC4wZiksIGZXb3JkWSgwLjBmKSwgZldvcmRUYWlsKDAuMGYpLCBuRm9udEluZGV4KC0xKSwgcFdvcmRQcm9wcyhOVUxMKQ0KKyAgICB7DQorICAgIH0NCisgICAgQ1BWVF9Xb3JkSW5mbyhGWF9XT1JEIHdvcmQsIEZYX0lOVDMyIGNoYXJzZXQsIEZYX0lOVDMyIGZvbnRJbmRleCwgQ1BWVF9Xb3JkUHJvcHMgKiBwUHJvcHMpOg0KKyAgICAgICAgV29yZCh3b3JkKSwgbkNoYXJzZXQoY2hhcnNldCksIGZXb3JkWCgwLjBmKSwgZldvcmRZKDAuMGYpLCBmV29yZFRhaWwoMC4wZiksDQorICAgICAgICBuRm9udEluZGV4KGZvbnRJbmRleCksIHBXb3JkUHJvcHMocFByb3BzKQ0KKyAgICB7DQorICAgIH0NCisgICAgdmlydHVhbCB+Q1BWVF9Xb3JkSW5mbygpDQorICAgIHsNCisgICAgICAgIGlmIChwV29yZFByb3BzKSB7DQorICAgICAgICAgICAgZGVsZXRlIHBXb3JkUHJvcHM7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BWVF9Xb3JkSW5mbyhjb25zdCBDUFZUX1dvcmRJbmZvICYgd29yZCk6IFdvcmQoMCksIG5DaGFyc2V0KDApLA0KKyAgICAgICAgZldvcmRYKDAuMGYpLCBmV29yZFkoMC4wZiksIGZXb3JkVGFpbCgwLjBmKSwgbkZvbnRJbmRleCgtMSksIHBXb3JkUHJvcHMoTlVMTCkNCisgICAgew0KKyAgICAgICAgb3BlcmF0b3IgPSAod29yZCk7DQorICAgIH0NCisgICAgdm9pZCBvcGVyYXRvciA9IChjb25zdCBDUFZUX1dvcmRJbmZvICYgd29yZCkNCisgICAgew0KKyAgICAgICAgaWYgKHRoaXMgPT0gJndvcmQpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICB0aGlzLT5Xb3JkID0gd29yZC5Xb3JkOw0KKyAgICAgICAgdGhpcy0+bkNoYXJzZXQgPSB3b3JkLm5DaGFyc2V0Ow0KKyAgICAgICAgdGhpcy0+bkZvbnRJbmRleCA9IHdvcmQubkZvbnRJbmRleDsNCisgICAgICAgIGlmICh3b3JkLnBXb3JkUHJvcHMpIHsNCisgICAgICAgICAgICBpZiAocFdvcmRQcm9wcykgew0KKyAgICAgICAgICAgICAgICAqcFdvcmRQcm9wcyA9ICp3b3JkLnBXb3JkUHJvcHM7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcFdvcmRQcm9wcyA9IEZYX05FVyBDUFZUX1dvcmRQcm9wcygqd29yZC5wV29yZFByb3BzKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfV09SRAkJCQkJCVdvcmQ7DQorICAgIEZYX0lOVDMyCQkJCQluQ2hhcnNldDsNCisgICAgRlhfRkxPQVQJCQkJCWZXb3JkWDsNCisgICAgRlhfRkxPQVQJCQkJCWZXb3JkWTsNCisgICAgRlhfRkxPQVQJCQkJCWZXb3JkVGFpbDsNCisgICAgRlhfSU5UMzIJCQkJCW5Gb250SW5kZXg7DQorICAgIENQVlRfV29yZFByb3BzKgkJCQlwV29yZFByb3BzOw0KK307DQorc3RydWN0IENQVlRfRmxvYXRSYW5nZSB7DQorICAgIENQVlRfRmxvYXRSYW5nZSgpIDogZk1pbigwLjBmKSwgZk1heCgwLjBmKQ0KKyAgICB7DQorICAgIH0NCisgICAgQ1BWVF9GbG9hdFJhbmdlKEZYX0ZMT0FUIG1pbiwgRlhfRkxPQVQgbWF4KSA6IGZNaW4obWluKSwgZk1heChtYXgpDQorICAgIHsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBSYW5nZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBmTWF4IC0gZk1pbjsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBmTWluLCBmTWF4Ow0KK307DQordGVtcGxhdGU8Y2xhc3MgVFlQRT4gY2xhc3MgQ1BWVF9BcnJheVRlbXBsYXRlIDogcHVibGljIENGWF9BcnJheVRlbXBsYXRlPFRZUEU+DQorew0KK3B1YmxpYzoNCisgICAgRlhfQk9PTCBJc0VtcHR5KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIENGWF9BcnJheVRlbXBsYXRlPFRZUEU+OjpHZXRTaXplKCkgPD0gMDsNCisgICAgfQ0KKyAgICBUWVBFIEdldEF0KGludCBuSW5kZXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmIChuSW5kZXggPj0gMCAmJiBuSW5kZXggPCBDRlhfQXJyYXlUZW1wbGF0ZTxUWVBFPjo6R2V0U2l6ZSgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIENGWF9BcnJheVRlbXBsYXRlPFRZUEU+OjpHZXRBdChuSW5kZXgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgdm9pZCBSZW1vdmVBdChpbnQgbkluZGV4KQ0KKyAgICB7DQorICAgICAgICBpZiAobkluZGV4ID49IDAgJiYgbkluZGV4IDwgQ0ZYX0FycmF5VGVtcGxhdGU8VFlQRT46OkdldFNpemUoKSkgew0KKyAgICAgICAgICAgIENGWF9BcnJheVRlbXBsYXRlPFRZUEU+OjpSZW1vdmVBdChuSW5kZXgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfTsNCitjbGFzcyBDTGluZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ0xpbmUoKTsNCisgICAgdmlydHVhbCB+Q0xpbmUoKTsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJR2V0QmVnaW5Xb3JkUGxhY2UoKSBjb25zdDsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJR2V0RW5kV29yZFBsYWNlKCkgY29uc3Q7DQorICAgIENQVlRfV29yZFBsYWNlCQkJCQkJCUdldFByZXZXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3Q7DQorICAgIENQVlRfV29yZFBsYWNlCQkJCQkJCUdldE5leHRXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3Q7DQorICAgIENQVlRfV29yZFBsYWNlCQkJCQkJCUxpbmVQbGFjZTsNCisgICAgQ1BWVF9MaW5lSW5mbwkJCQkJCQltX0xpbmVJbmZvOw0KK307DQorY2xhc3MgQ0xpbmVzDQorew0KK3B1YmxpYzoNCisgICAgQ0xpbmVzKCkgOiBtX25Ub3RhbCgwKSB7fQ0KKyAgICB2aXJ0dWFsIH5DTGluZXMoKQ0KKyAgICB7DQorICAgICAgICBSZW1vdmVBbGwoKTsNCisgICAgfQ0KKyAgICBGWF9JTlQzMgkJCQkJCQkJR2V0U2l6ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0xpbmVzLkdldFNpemUoKTsNCisgICAgfQ0KKyAgICBDTGluZSAqCQkJCQkJCQkJR2V0QXQoRlhfSU5UMzIgbkluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9MaW5lcy5HZXRBdChuSW5kZXgpOw0KKyAgICB9DQorICAgIHZvaWQJCQkJCQkJCQlFbXB0eSgpDQorICAgIHsNCisgICAgICAgIG1fblRvdGFsID0gMDsNCisgICAgfQ0KKyAgICB2b2lkCQkJCQkJCQkJUmVtb3ZlQWxsKCkNCisgICAgew0KKyAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gMCwgc3ogPSBHZXRTaXplKCk7IGkgPCBzejsgaSsrKSB7DQorICAgICAgICAgICAgZGVsZXRlIEdldEF0KGkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9MaW5lcy5SZW1vdmVBbGwoKTsNCisgICAgICAgIG1fblRvdGFsID0gMDsNCisgICAgfQ0KKyAgICBGWF9JTlQzMgkJCQkJCQkJQWRkKGNvbnN0IENQVlRfTGluZUluZm8gJiBsaW5laW5mbykNCisgICAgew0KKyAgICAgICAgaWYgKG1fblRvdGFsID49IEdldFNpemUoKSkgew0KKyAgICAgICAgICAgIGlmIChDTGluZSAqIHBMaW5lID0gRlhfTkVXIENMaW5lKSB7DQorICAgICAgICAgICAgICAgIHBMaW5lLT5tX0xpbmVJbmZvID0gbGluZWluZm87DQorICAgICAgICAgICAgICAgIG1fTGluZXMuQWRkKHBMaW5lKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fblRvdGFsKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBtX25Ub3RhbDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKENMaW5lICogcExpbmUgPSBHZXRBdChtX25Ub3RhbCkpIHsNCisgICAgICAgICAgICAgICAgcExpbmUtPm1fTGluZUluZm8gPSBsaW5laW5mbzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIG1fblRvdGFsKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgdm9pZAkJCQkJCQkJCUNsZWFyKCkNCisgICAgew0KKyAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gR2V0U2l6ZSgpIC0gMTsgaSA+PSBtX25Ub3RhbDsgaS0tKSB7DQorICAgICAgICAgICAgZGVsZXRlIEdldEF0KGkpOw0KKyAgICAgICAgICAgIG1fTGluZXMuUmVtb3ZlQXQoaSk7DQorICAgICAgICB9DQorICAgIH0NCitwcml2YXRlOg0KKyAgICBDUFZUX0FycmF5VGVtcGxhdGU8Q0xpbmUqPgkJCQltX0xpbmVzOw0KKyAgICBGWF9JTlQzMgkJCQkJCQkJbV9uVG90YWw7DQorfTsNCitjbGFzcyBDU2VjdGlvbiA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KKyAgICBmcmllbmQgY2xhc3MgQ1R5cGVzZXQ7DQorcHVibGljOg0KKyAgICBDU2VjdGlvbihDUERGX1ZhcmlhYmxlVGV4dCAqIHBWVCk7DQorICAgIHZpcnR1YWwgfkNTZWN0aW9uKCk7DQorICAgIHZvaWQJCQkJCQkJCQlSZXNldEFsbCgpOw0KKyAgICB2b2lkCQkJCQkJCQkJUmVzZXRMaW5lQXJyYXkoKTsNCisgICAgdm9pZAkJCQkJCQkJCVJlc2V0V29yZEFycmF5KCk7DQorICAgIHZvaWQJCQkJCQkJCQlSZXNldExpbmVQbGFjZSgpOw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlBZGRXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIGNvbnN0IENQVlRfV29yZEluZm8gJiB3b3JkaW5mbyk7DQorICAgIENQVlRfV29yZFBsYWNlCQkJCQkJCUFkZExpbmUoY29uc3QgQ1BWVF9MaW5lSW5mbyAmIGxpbmVpbmZvKTsNCisgICAgdm9pZAkJCQkJCQkJCUNsZWFyV29yZHMoY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgJiBQbGFjZVJhbmdlKTsNCisgICAgdm9pZAkJCQkJCQkJCUNsZWFyV29yZChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKTsNCisgICAgQ1BWVF9GbG9hdFJlY3QJCQkJCQkJUmVhcnJhbmdlKCk7DQorICAgIENQVlRfU2l6ZQkJCQkJCQkJR2V0U2VjdGlvblNpemUoRlhfRkxPQVQgZkZvbnRTaXplKTsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJR2V0QmVnaW5Xb3JkUGxhY2UoKSBjb25zdDsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJR2V0RW5kV29yZFBsYWNlKCkgY29uc3Q7DQorICAgIENQVlRfV29yZFBsYWNlCQkJCQkJCUdldFByZXZXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3Q7DQorICAgIENQVlRfV29yZFBsYWNlCQkJCQkJCUdldE5leHRXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3Q7DQorICAgIHZvaWQJCQkJCQkJCQlVcGRhdGVXb3JkUGxhY2UoQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3Q7DQorICAgIENQVlRfV29yZFBsYWNlCQkJCQkJCVNlYXJjaFdvcmRQbGFjZShjb25zdCBDUERGX1BvaW50ICYgcG9pbnQpIGNvbnN0Ow0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlTZWFyY2hXb3JkUGxhY2UoRlhfRkxPQVQgZngsIGNvbnN0IENQVlRfV29yZFBsYWNlICYgbGluZXBsYWNlKSBjb25zdDsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJU2VhcmNoV29yZFBsYWNlKEZYX0ZMT0FUIGZ4LCBjb25zdCBDUFZUX1dvcmRSYW5nZSAmIHJhbmdlKSBjb25zdDsNCitwdWJsaWM6DQorICAgIENQVlRfV29yZFBsYWNlCQkJCQkJCVNlY1BsYWNlOw0KKyAgICBDUFZUX1NlY3Rpb25JbmZvCQkJCQkJbV9TZWNJbmZvOw0KKyAgICBDTGluZXMJCQkJCQkJCQltX0xpbmVBcnJheTsNCisgICAgQ1BWVF9BcnJheVRlbXBsYXRlPENQVlRfV29yZEluZm8qPgkJbV9Xb3JkQXJyYXk7DQorcHJpdmF0ZToNCisgICAgdm9pZAkJCQkJCQkJCUNsZWFyTGVmdFdvcmRzKEZYX0lOVDMyIG5Xb3JkSW5kZXgpOw0KKyAgICB2b2lkCQkJCQkJCQkJQ2xlYXJSaWdodFdvcmRzKEZYX0lOVDMyIG5Xb3JkSW5kZXgpOw0KKyAgICB2b2lkCQkJCQkJCQkJQ2xlYXJNaWRXb3JkcyhGWF9JTlQzMiBuQmVnaW5JbmRleCwgRlhfSU5UMzIgbkVuZEluZGV4KTsNCisNCisgICAgQ1BERl9WYXJpYWJsZVRleHQJCQkJCQkqbV9wVlQ7DQorfTsNCitjbGFzcyBDVHlwZXNldA0KK3sNCitwdWJsaWM6DQorICAgIENUeXBlc2V0KENTZWN0aW9uICogcFNlY3Rpb24pOw0KKyAgICB2aXJ0dWFsIH5DVHlwZXNldCgpOw0KKyAgICBDUFZUX1NpemUJCQkJCQkJCUdldEVkaXRTaXplKEZYX0ZMT0FUIGZGb250U2l6ZSk7DQorICAgIENQVlRfRmxvYXRSZWN0CQkJCQkJCVR5cGVzZXQoKTsNCisgICAgQ1BWVF9GbG9hdFJlY3QJCQkJCQkJQ2hhckFycmF5KCk7DQorcHJpdmF0ZToNCisgICAgdm9pZAkJCQkJCQkJCVNwbGl0TGluZXMoRlhfQk9PTCBiVHlwZXNldCwgRlhfRkxPQVQgZkZvbnRTaXplKTsNCisgICAgdm9pZAkJCQkJCQkJCU91dHB1dExpbmVzKCk7DQorDQorICAgIENQVlRfRmxvYXRSZWN0CQkJCQkJCW1fcmNSZXQ7DQorICAgIENQREZfVmFyaWFibGVUZXh0CQkJCQkJKiBtX3BWVDsNCisgICAgQ1NlY3Rpb24JCQkJCQkJCSogbV9wU2VjdGlvbjsNCit9Ow0KK2NsYXNzIENQREZfRWRpdENvbnRhaW5lcg0KK3sNCitwdWJsaWM6DQorICAgIENQREZfRWRpdENvbnRhaW5lcigpOiBtX3JjUGxhdGUoMCwgMCwgMCwgMCksIG1fcmNDb250ZW50KDAsIDAsIDAsIDApIHt9Ow0KKyAgICB2aXJ0dWFsIH5DUERGX0VkaXRDb250YWluZXIoKSB7fTsNCisgICAgdmlydHVhbCB2b2lkCQkJCQkJCVNldFBsYXRlUmVjdChjb25zdCBDUERGX1JlY3QgJiByZWN0KQ0KKyAgICB7DQorICAgICAgICBtX3JjUGxhdGUgPSByZWN0Ow0KKyAgICB9Ow0KKyAgICB2aXJ0dWFsIGNvbnN0IENQREZfUmVjdCAmCQkJCUdldFBsYXRlUmVjdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3JjUGxhdGU7DQorICAgIH07DQorICAgIHZpcnR1YWwgdm9pZAkJCQkJCQlTZXRDb250ZW50UmVjdChjb25zdCBDUFZUX0Zsb2F0UmVjdCAmIHJlY3QpDQorICAgIHsNCisgICAgICAgIG1fcmNDb250ZW50ID0gcmVjdDsNCisgICAgfTsNCisgICAgdmlydHVhbCBDUERGX1JlY3QgCQkJCQkJR2V0Q29udGVudFJlY3QoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9yY0NvbnRlbnQ7DQorICAgIH07DQorICAgIEZYX0ZMT0FUCQkJCQkJCQlHZXRQbGF0ZVdpZHRoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcmNQbGF0ZS5yaWdodCAtIG1fcmNQbGF0ZS5sZWZ0Ow0KKyAgICB9Ow0KKyAgICBGWF9GTE9BVAkJCQkJCQkJR2V0UGxhdGVIZWlnaHQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9yY1BsYXRlLnRvcCAtIG1fcmNQbGF0ZS5ib3R0b207DQorICAgIH07DQorICAgIENQVlRfU2l6ZQkJCQkJCQkJR2V0UGxhdGVTaXplKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIENQVlRfU2l6ZShHZXRQbGF0ZVdpZHRoKCksIEdldFBsYXRlSGVpZ2h0KCkpOw0KKyAgICB9Ow0KKyAgICBDUERGX1BvaW50CQkJCQkJCQlHZXRCVFBvaW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIENQREZfUG9pbnQobV9yY1BsYXRlLmxlZnQsIG1fcmNQbGF0ZS50b3ApOw0KKyAgICB9Ow0KKyAgICBDUERGX1BvaW50CQkJCQkJCQlHZXRFVFBvaW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIENQREZfUG9pbnQobV9yY1BsYXRlLnJpZ2h0LCBtX3JjUGxhdGUuYm90dG9tKTsNCisgICAgfTsNCisgICAgaW5saW5lIENQREZfUG9pbnQJCQkJCQlJblRvT3V0KGNvbnN0IENQREZfUG9pbnQgJiBwb2ludCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIENQREZfUG9pbnQocG9pbnQueCArIEdldEJUUG9pbnQoKS54LCBHZXRCVFBvaW50KCkueSAtIHBvaW50LnkpOw0KKyAgICB9Ow0KKyAgICBpbmxpbmUgQ1BERl9Qb2ludAkJCQkJCU91dFRvSW4oY29uc3QgQ1BERl9Qb2ludCAmIHBvaW50KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gQ1BERl9Qb2ludChwb2ludC54IC0gR2V0QlRQb2ludCgpLngsIEdldEJUUG9pbnQoKS55IC0gcG9pbnQueSk7DQorICAgIH07DQorICAgIGlubGluZSBDUERGX1JlY3QJCQkJCQlJblRvT3V0KGNvbnN0IENQVlRfRmxvYXRSZWN0ICYgcmVjdCkgY29uc3QNCisgICAgew0KKyAgICAgICAgQ1BERl9Qb2ludCBwdExlZnRUb3AgPSBJblRvT3V0KENQREZfUG9pbnQocmVjdC5sZWZ0LCByZWN0LnRvcCkpOw0KKyAgICAgICAgQ1BERl9Qb2ludCBwdFJpZ2h0Qm90dG9tID0gSW5Ub091dChDUERGX1BvaW50KHJlY3QucmlnaHQsIHJlY3QuYm90dG9tKSk7DQorICAgICAgICByZXR1cm4gQ1BERl9SZWN0KHB0TGVmdFRvcC54LCBwdFJpZ2h0Qm90dG9tLnksIHB0UmlnaHRCb3R0b20ueCwgcHRMZWZ0VG9wLnkpOw0KKyAgICB9Ow0KKyAgICBpbmxpbmUgQ1BWVF9GbG9hdFJlY3QJCQkJCU91dFRvSW4oY29uc3QgQ1BERl9SZWN0ICYgcmVjdCkgY29uc3QNCisgICAgew0KKyAgICAgICAgQ1BERl9Qb2ludCBwdExlZnRUb3AgPSBPdXRUb0luKENQREZfUG9pbnQocmVjdC5sZWZ0LCByZWN0LnRvcCkpOw0KKyAgICAgICAgQ1BERl9Qb2ludCBwdFJpZ2h0Qm90dG9tID0gT3V0VG9JbihDUERGX1BvaW50KHJlY3QucmlnaHQsIHJlY3QuYm90dG9tKSk7DQorICAgICAgICByZXR1cm4gQ1BWVF9GbG9hdFJlY3QocHRMZWZ0VG9wLngsIHB0TGVmdFRvcC55LCBwdFJpZ2h0Qm90dG9tLngsIHB0UmlnaHRCb3R0b20ueSk7DQorICAgIH07DQorDQorcHJpdmF0ZToNCisgICAgQ1BERl9SZWN0CQkJCQkJCQltX3JjUGxhdGU7DQorICAgIENQVlRfRmxvYXRSZWN0CQkJCQkJCW1fcmNDb250ZW50Ow0KK307DQorY2xhc3MgQ1BERl9WYXJpYWJsZVRleHQgOiBwdWJsaWMgSVBERl9WYXJpYWJsZVRleHQsIHB1YmxpYyBDRlhfT2JqZWN0LCBwcml2YXRlIENQREZfRWRpdENvbnRhaW5lcg0KK3sNCisgICAgZnJpZW5kIGNsYXNzIENUeXBlc2V0Ow0KKyAgICBmcmllbmQgY2xhc3MgQ1NlY3Rpb247DQorICAgIGZyaWVuZCBjbGFzcyBDUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvcjsNCitwdWJsaWM6DQorICAgIENQREZfVmFyaWFibGVUZXh0KCk7DQorICAgIHZpcnR1YWwgfkNQREZfVmFyaWFibGVUZXh0KCk7DQorICAgIElQREZfVmFyaWFibGVUZXh0X1Byb3ZpZGVyKgkJCQlTZXRQcm92aWRlcihJUERGX1ZhcmlhYmxlVGV4dF9Qcm92aWRlciAqIHBQcm92aWRlcik7DQorICAgIElQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yKgkJCQlHZXRJdGVyYXRvcigpOw0KKyAgICB2b2lkCQkJCQkJCQkJU2V0UGxhdGVSZWN0KGNvbnN0IENQREZfUmVjdCAmIHJlY3QpDQorICAgIHsNCisgICAgICAgIENQREZfRWRpdENvbnRhaW5lcjo6U2V0UGxhdGVSZWN0KHJlY3QpOw0KKyAgICB9DQorICAgIHZvaWQJCQkJCQkJCQlTZXRBbGlnbm1lbnQoRlhfSU5UMzIgbkZvcm1hdCA9IDApDQorICAgIHsNCisgICAgICAgIG1fbkFsaWdubWVudCA9IG5Gb3JtYXQ7DQorICAgIH0NCisgICAgdm9pZAkJCQkJCQkJCVNldFBhc3N3b3JkQ2hhcihGWF9XT1JEIHdTdWJXb3JkID0gJyonKQ0KKyAgICB7DQorICAgICAgICBtX3dTdWJXb3JkID0gd1N1YldvcmQ7DQorICAgIH0NCisgICAgdm9pZAkJCQkJCQkJCVNldExpbWl0Q2hhcihGWF9JTlQzMiBuTGltaXRDaGFyID0gMCkNCisgICAgew0KKyAgICAgICAgbV9uTGltaXRDaGFyID0gbkxpbWl0Q2hhcjsNCisgICAgfQ0KKyAgICB2b2lkCQkJCQkJCQkJU2V0Q2hhclNwYWNlKEZYX0ZMT0FUIGZDaGFyU3BhY2UgPSAwLjBmKQ0KKyAgICB7DQorICAgICAgICBtX2ZDaGFyU3BhY2UgPSBmQ2hhclNwYWNlOw0KKyAgICB9DQorICAgIHZvaWQJCQkJCQkJCQlTZXRIb3J6U2NhbGUoRlhfSU5UMzIgbkhvcnpTY2FsZSA9IDEwMCkNCisgICAgew0KKyAgICAgICAgbV9uSG9yelNjYWxlID0gbkhvcnpTY2FsZTsNCisgICAgfQ0KKyAgICB2b2lkCQkJCQkJCQkJU2V0TXVsdGlMaW5lKEZYX0JPT0wgYk11bHRpTGluZSA9IFRSVUUpDQorICAgIHsNCisgICAgICAgIG1fYk11bHRpTGluZSA9IGJNdWx0aUxpbmU7DQorICAgIH0NCisgICAgdm9pZAkJCQkJCQkJCVNldEF1dG9SZXR1cm4oRlhfQk9PTCBiQXV0byA9IFRSVUUpDQorICAgIHsNCisgICAgICAgIG1fYkxpbWl0V2lkdGggPSBiQXV0bzsNCisgICAgfQ0KKyAgICB2b2lkCQkJCQkJCQkJU2V0Rm9udFNpemUoRlhfRkxPQVQgZkZvbnRTaXplKQ0KKyAgICB7DQorICAgICAgICBtX2ZGb250U2l6ZSA9IGZGb250U2l6ZTsNCisgICAgfQ0KKyAgICB2b2lkCQkJCQkJCQkJU2V0Q2hhckFycmF5KEZYX0lOVDMyIG5DaGFyQXJyYXkgPSAwKQ0KKyAgICB7DQorICAgICAgICBtX25DaGFyQXJyYXkgPSBuQ2hhckFycmF5Ow0KKyAgICB9DQorICAgIHZvaWQJCQkJCQkJCQlTZXRBdXRvRm9udFNpemUoRlhfQk9PTCBiQXV0byA9IFRSVUUpDQorICAgIHsNCisgICAgICAgIG1fYkF1dG9Gb250U2l6ZSA9IGJBdXRvOw0KKyAgICB9DQorICAgIHZvaWQJCQkJCQkJCQlTZXRSaWNoVGV4dChGWF9CT09MIGJSaWNoVGV4dCkNCisgICAgew0KKyAgICAgICAgbV9iUmljaFRleHQgPSBiUmljaFRleHQ7DQorICAgIH0NCisgICAgdm9pZAkJCQkJCQkJCVNldExpbmVMZWFkaW5nKEZYX0ZMT0FUIGZMaW5lTGVhZGluZykNCisgICAgew0KKyAgICAgICAgbV9mTGluZUxlYWRpbmcgPSBmTGluZUxlYWRpbmc7DQorICAgIH0NCisgICAgdm9pZAkJCQkJCQkJCUluaXRpYWxpemUoKTsNCisgICAgRlhfQk9PTAkJCQkJCQkJCUlzVmFsaWQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iSW5pdGlhbDsNCisgICAgfQ0KKyAgICBGWF9CT09MCQkJCQkJCQkJSXNSaWNoVGV4dCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JSaWNoVGV4dDsNCisgICAgfQ0KKyAgICB2b2lkCQkJCQkJCQkJUmVhcnJhbmdlQWxsKCk7DQorICAgIHZvaWQJCQkJCQkJCQlSZWFycmFuZ2VQYXJ0KGNvbnN0IENQVlRfV29yZFJhbmdlICYgUGxhY2VSYW5nZSk7DQorICAgIHZvaWQJCQkJCQkJCQlSZXNldEFsbCgpOw0KKyAgICB2b2lkCQkJCQkJCQkJU2V0VGV4dChGWF9MUENXU1RSIHRleHQsIEZYX0lOVDMyIGNoYXJzZXQgPSAxLCBjb25zdCBDUFZUX1NlY1Byb3BzICogcFNlY1Byb3BzID0gTlVMTCwNCisgICAgICAgICAgICBjb25zdCBDUFZUX1dvcmRQcm9wcyAqIHBXb3JkUHJvcHMgPSBOVUxMKTsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJSW5zZXJ0V29yZChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBGWF9XT1JEIHdvcmQsIEZYX0lOVDMyIGNoYXJzZXQgPSAxLA0KKyAgICAgICAgICAgIGNvbnN0IENQVlRfV29yZFByb3BzICogcFdvcmRQcm9wcyA9IE5VTEwpOw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlJbnNlcnRTZWN0aW9uKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIGNvbnN0IENQVlRfU2VjUHJvcHMgKiBwU2VjUHJvcHMgPSBOVUxMLA0KKyAgICAgICAgICAgIGNvbnN0IENQVlRfV29yZFByb3BzICogcFdvcmRQcm9wcyA9IE5VTEwpOw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlJbnNlcnRUZXh0KGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIEZYX0xQQ1dTVFIgdGV4dCwgRlhfSU5UMzIgY2hhcnNldCA9IDEsDQorICAgICAgICAgICAgY29uc3QgQ1BWVF9TZWNQcm9wcyAqIHBTZWNQcm9wcyA9IE5VTEwsCWNvbnN0IENQVlRfV29yZFByb3BzICogcFdvcmRQcm9wcyA9IE5VTEwpOw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlEZWxldGVXb3Jkcyhjb25zdCBDUFZUX1dvcmRSYW5nZSAmIFBsYWNlUmFuZ2UpOw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlEZWxldGVXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpOw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlCYWNrU3BhY2VXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpOw0KKyAgICBjb25zdCBDUERGX1JlY3QgJgkJCQkJCUdldFBsYXRlUmVjdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBDUERGX0VkaXRDb250YWluZXI6OkdldFBsYXRlUmVjdCgpOw0KKyAgICB9DQorICAgIENQREZfUmVjdAkJCQkJCQkJR2V0Q29udGVudFJlY3QoKSBjb25zdDsNCisgICAgRlhfSU5UMzIJCQkJCQkJCUdldFRvdGFsV29yZHMoKSBjb25zdDsNCisgICAgRlhfRkxPQVQJCQkJCQkJCUdldEZvbnRTaXplKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fZkZvbnRTaXplOw0KKyAgICB9DQorICAgIEZYX0lOVDMyCQkJCQkJCQlHZXRBbGlnbm1lbnQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uQWxpZ25tZW50Ow0KKyAgICB9DQorICAgIEZYX0lOVDMyCQkJCQkJCQlHZXRDaGFyQXJyYXkoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uQ2hhckFycmF5Ow0KKyAgICB9DQorICAgIEZYX0lOVDMyCQkJCQkJCQlHZXRMaW1pdENoYXIoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uTGltaXRDaGFyOw0KKyAgICB9DQorICAgIEZYX0JPT0wJCQkJCQkJCQlJc011bHRpTGluZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JNdWx0aUxpbmU7DQorICAgIH0NCisgICAgRlhfSU5UMzIJCQkJCQkJCUdldEhvcnpTY2FsZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25Ib3J6U2NhbGU7DQorICAgIH0NCisgICAgRlhfRkxPQVQJCQkJCQkJCUdldENoYXJTcGFjZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2ZDaGFyU3BhY2U7DQorICAgIH0NCisNCisgICAgaW5saW5lIENQVlRfV29yZFBsYWNlCQkJCQlHZXRCZWdpbldvcmRQbGFjZSgpIGNvbnN0Ow0KKyAgICBpbmxpbmUgQ1BWVF9Xb3JkUGxhY2UJCQkJCUdldEVuZFdvcmRQbGFjZSgpIGNvbnN0Ow0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlHZXRQcmV2V29yZFBsYWNlKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpIGNvbnN0Ow0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlHZXROZXh0V29yZFBsYWNlKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpIGNvbnN0Ow0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlTZWFyY2hXb3JkUGxhY2UoY29uc3QgQ1BERl9Qb2ludCAmIHBvaW50KSBjb25zdDsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJR2V0VXBXb3JkUGxhY2UoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSwgY29uc3QgQ1BERl9Qb2ludCAmIHBvaW50KSBjb25zdDsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJR2V0RG93bldvcmRQbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBjb25zdCBDUERGX1BvaW50ICYgcG9pbnQpIGNvbnN0Ow0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlHZXRMaW5lQmVnaW5QbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSBjb25zdDsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJR2V0TGluZUVuZFBsYWNlKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpIGNvbnN0Ow0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlHZXRTZWN0aW9uQmVnaW5QbGFjZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKSBjb25zdDsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJR2V0U2VjdGlvbkVuZFBsYWNlKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpIGNvbnN0Ow0KKyAgICB2b2lkCQkJCQkJCQkJVXBkYXRlV29yZFBsYWNlKENQVlRfV29yZFBsYWNlICYgcGxhY2UpIGNvbnN0Ow0KKyAgICBGWF9JTlQzMgkJCQkJCQkJV29yZFBsYWNlVG9Xb3JkSW5kZXgoY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSkgY29uc3Q7DQorICAgIENQVlRfV29yZFBsYWNlCQkJCQkJCVdvcmRJbmRleFRvV29yZFBsYWNlKEZYX0lOVDMyIGluZGV4KSBjb25zdDsNCisgICAgRlhfV09SRAkJCQkJCQkJCUdldFBhc3N3b3JkQ2hhcigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRTdWJXb3JkKCk7DQorICAgIH0NCisgICAgRlhfV09SRAkJCQkJCQkJCUdldFN1YldvcmQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV93U3ViV29yZDsNCisgICAgfQ0KK3ByaXZhdGU6DQorICAgIEZYX0lOVDMyCQkJCQkJCQlHZXRDaGFyV2lkdGgoRlhfSU5UMzIgbkZvbnRJbmRleCwgRlhfV09SRCBXb3JkLCBGWF9XT1JEIFN1YldvcmQsIEZYX0lOVDMyIG5Xb3JkU3R5bGUpOw0KKyAgICBGWF9JTlQzMgkJCQkJCQkJR2V0VHlwZUFzY2VudChGWF9JTlQzMiBuRm9udEluZGV4KTsNCisgICAgRlhfSU5UMzIJCQkJCQkJCUdldFR5cGVEZXNjZW50KEZYX0lOVDMyIG5Gb250SW5kZXgpOw0KKyAgICBGWF9JTlQzMgkJCQkJCQkJR2V0V29yZEZvbnRJbmRleChGWF9XT1JEIHdvcmQsIEZYX0lOVDMyIGNoYXJzZXQsIEZYX0lOVDMyIG5Gb250SW5kZXgpOw0KKyAgICBGWF9JTlQzMgkJCQkJCQkJR2V0RGVmYXVsdEZvbnRJbmRleCgpOw0KKyAgICBGWF9CT09MCQkJCQkJCQkJSXNMYXRpbldvcmQoRlhfV09SRCB3b3JkKTsNCitwcml2YXRlOg0KKw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlBZGRTZWN0aW9uKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIGNvbnN0IENQVlRfU2VjdGlvbkluZm8gJiBzZWNpbmZvKTsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJQWRkTGluZShjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBjb25zdCBDUFZUX0xpbmVJbmZvICYgbGluZWluZm8pOw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlBZGRXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIGNvbnN0IENQVlRfV29yZEluZm8gJiB3b3JkaW5mbyk7DQorICAgIEZYX0JPT0wJCQkJCQkJCQlHZXRXb3JkSW5mbyhjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBDUFZUX1dvcmRJbmZvICYgd29yZGluZm8pOw0KKyAgICBGWF9CT09MCQkJCQkJCQkJU2V0V29yZEluZm8oY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSwgY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIHdvcmRpbmZvKTsNCisgICAgRlhfQk9PTAkJCQkJCQkJCUdldExpbmVJbmZvKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIENQVlRfTGluZUluZm8gJiBsaW5laW5mbyk7DQorICAgIEZYX0JPT0wJCQkJCQkJCQlHZXRTZWN0aW9uSW5mbyhjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlLCBDUFZUX1NlY3Rpb25JbmZvICYgc2VjaW5mbyk7DQorICAgIEZYX0ZMT0FUCQkJCQkJCQlHZXRXb3JkRm9udFNpemUoY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIFdvcmRJbmZvLCBGWF9CT09MIGJGYWN0Rm9udFNpemUgPSBGQUxTRSk7DQorICAgIEZYX0ZMT0FUCQkJCQkJCQlHZXRXb3JkV2lkdGgoRlhfSU5UMzIgbkZvbnRJbmRleCwgRlhfV09SRCBXb3JkLCBGWF9XT1JEIFN1YldvcmQsDQorICAgICAgICAgICAgRlhfRkxPQVQgZkNoYXJTcGFjZSwgRlhfSU5UMzIgbkhvcnpTY2FsZSwNCisgICAgICAgICAgICBGWF9GTE9BVCBmRm9udFNpemUsIEZYX0ZMT0FUIGZXb3JkVGFpbCwgRlhfSU5UMzIgbldvcmRTdHlsZSk7DQorICAgIEZYX0ZMT0FUCQkJCQkJCQlHZXRXb3JkV2lkdGgoY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIFdvcmRJbmZvKTsNCisgICAgRlhfRkxPQVQJCQkJCQkJCUdldFdvcmRBc2NlbnQoY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIFdvcmRJbmZvLCBGWF9GTE9BVCBmRm9udFNpemUpOw0KKyAgICBGWF9GTE9BVAkJCQkJCQkJR2V0V29yZERlc2NlbnQoY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIFdvcmRJbmZvLCBGWF9GTE9BVCBmRm9udFNpemUpOw0KKyAgICBGWF9GTE9BVAkJCQkJCQkJR2V0V29yZEFzY2VudChjb25zdCBDUFZUX1dvcmRJbmZvICYgV29yZEluZm8sIEZYX0JPT0wgYkZhY3RGb250U2l6ZSA9IEZBTFNFKTsNCisgICAgRlhfRkxPQVQJCQkJCQkJCUdldFdvcmREZXNjZW50KGNvbnN0IENQVlRfV29yZEluZm8gJiBXb3JkSW5mbywgRlhfQk9PTCBiRmFjdEZvbnRTaXplID0gRkFMU0UpOw0KKyAgICBGWF9GTE9BVAkJCQkJCQkJR2V0TGluZUFzY2VudChjb25zdCBDUFZUX1NlY3Rpb25JbmZvICYgU2VjSW5mbyk7DQorICAgIEZYX0ZMT0FUCQkJCQkJCQlHZXRMaW5lRGVzY2VudChjb25zdCBDUFZUX1NlY3Rpb25JbmZvICYgU2VjSW5mbyk7DQorICAgIEZYX0ZMT0FUCQkJCQkJCQlHZXRGb250QXNjZW50KEZYX0lOVDMyIG5Gb250SW5kZXgsIEZYX0ZMT0FUIGZGb250U2l6ZSk7DQorICAgIEZYX0ZMT0FUCQkJCQkJCQlHZXRGb250RGVzY2VudChGWF9JTlQzMiBuRm9udEluZGV4LCBGWF9GTE9BVCBmRm9udFNpemUpOw0KKyAgICBGWF9JTlQzMgkJCQkJCQkJR2V0V29yZEZvbnRJbmRleChjb25zdCBDUFZUX1dvcmRJbmZvICYgV29yZEluZm8pOw0KKyAgICBGWF9GTE9BVAkJCQkJCQkJR2V0Q2hhclNwYWNlKGNvbnN0IENQVlRfV29yZEluZm8gJiBXb3JkSW5mbyk7DQorICAgIEZYX0lOVDMyCQkJCQkJCQlHZXRIb3J6U2NhbGUoY29uc3QgQ1BWVF9Xb3JkSW5mbyAmIFdvcmRJbmZvKTsNCisgICAgRlhfRkxPQVQJCQkJCQkJCUdldExpbmVMZWFkaW5nKGNvbnN0IENQVlRfU2VjdGlvbkluZm8gJiBTZWNJbmZvKTsNCisgICAgRlhfRkxPQVQJCQkJCQkJCUdldExpbmVJbmRlbnQoY29uc3QgQ1BWVF9TZWN0aW9uSW5mbyAmIFNlY0luZm8pOw0KKyAgICBGWF9JTlQzMgkJCQkJCQkJR2V0QWxpZ25tZW50KGNvbnN0IENQVlRfU2VjdGlvbkluZm8mIFNlY0luZm8pOw0KKw0KKyAgICB2b2lkCQkJCQkJCQkJQ2xlYXJTZWN0aW9uUmlnaHRXb3Jkcyhjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKTsNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJQWp1c3RMaW5lSGVhZGVyKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UsIEZYX0JPT0wgYlByZXZPck5leHQpIGNvbnN0Ow0KKyAgICBGWF9CT09MCQkJCQkJCQkJQ2xlYXJFbXB0eVNlY3Rpb24oY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJiBwbGFjZSk7DQorICAgIHZvaWQJCQkJCQkJCQlDbGVhckVtcHR5U2VjdGlvbnMoY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgJiBQbGFjZVJhbmdlKTsNCisgICAgdm9pZAkJCQkJCQkJCUxpbmtMYXR0ZXJTZWN0aW9uKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpOw0KKyAgICB2b2lkCQkJCQkJCQkJQ2xlYXJXb3Jkcyhjb25zdCBDUFZUX1dvcmRSYW5nZSAmIFBsYWNlUmFuZ2UpOw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlDbGVhckxlZnRXb3JkKGNvbnN0IENQVlRfV29yZFBsYWNlICYgcGxhY2UpOw0KKyAgICBDUFZUX1dvcmRQbGFjZQkJCQkJCQlDbGVhclJpZ2h0V29yZChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKTsNCitwcml2YXRlOg0KKyAgICBDUFZUX0Zsb2F0UmVjdAkJCQkJCQlSZWFycmFuZ2UoY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgJiBQbGFjZVJhbmdlKTsNCisgICAgRlhfRkxPQVQJCQkJCQkJCUdldEF1dG9Gb250U2l6ZSgpOw0KKyAgICBGWF9CT09MCQkJCQkJCQkJSXNCaWdnZXIoRlhfRkxPQVQgZkZvbnRTaXplKTsNCisgICAgQ1BWVF9GbG9hdFJlY3QJCQkJCQkJUmVhcnJhbmdlU2VjdGlvbnMoY29uc3QgQ1BWVF9Xb3JkUmFuZ2UgJiBQbGFjZVJhbmdlKTsNCitwcml2YXRlOg0KKyAgICB2b2lkCQkJCQkJCQkJUmVzZXRTZWN0aW9uQXJyYXkoKTsNCitwcml2YXRlOg0KKyAgICBDUFZUX0FycmF5VGVtcGxhdGU8Q1NlY3Rpb24qPgkJCW1fU2VjdGlvbkFycmF5Ow0KKyAgICBGWF9JTlQzMgkJCQkJCQkJbV9uTGltaXRDaGFyOw0KKyAgICBGWF9JTlQzMgkJCQkJCQkJbV9uQ2hhckFycmF5Ow0KKyAgICBGWF9CT09MCQkJCQkJCQkJbV9iTXVsdGlMaW5lOw0KKyAgICBGWF9CT09MCQkJCQkJCQkJbV9iTGltaXRXaWR0aDsNCisgICAgRlhfQk9PTAkJCQkJCQkJCW1fYkF1dG9Gb250U2l6ZTsNCisgICAgRlhfSU5UMzIJCQkJCQkJCW1fbkFsaWdubWVudDsNCisgICAgRlhfRkxPQVQJCQkJCQkJCW1fZkxpbmVMZWFkaW5nOw0KKyAgICBGWF9GTE9BVAkJCQkJCQkJbV9mQ2hhclNwYWNlOw0KKyAgICBGWF9JTlQzMgkJCQkJCQkJbV9uSG9yelNjYWxlOw0KKyAgICBGWF9XT1JECQkJCQkJCQkJbV93U3ViV29yZDsNCisgICAgRlhfRkxPQVQJCQkJCQkJCW1fZldvcmRTcGFjZTsNCisgICAgRlhfRkxPQVQJCQkJCQkJCW1fZkZvbnRTaXplOw0KKw0KK3ByaXZhdGU6DQorICAgIEZYX0JPT0wJCQkJCQkJCQltX2JJbml0aWFsOw0KKyAgICBGWF9CT09MCQkJCQkJCQkJbV9iUmljaFRleHQ7DQorICAgIEZYX0ZMT0FUCQkJCQkJCQltX2ZDYXJldE9yaWdpblg7DQorICAgIEZYX0lOVDMyCQkJCQkJCQltX25DdXJGb250SW5kZXg7DQorICAgIElQREZfVmFyaWFibGVUZXh0X1Byb3ZpZGVyICoJCQltX3BWVFByb3ZpZGVyOw0KKyAgICBDUERGX1ZhcmlhYmxlVGV4dF9JdGVyYXRvciAqCQkJbV9wVlRJdGVyYXRvcjsNCit9Ow0KK2NsYXNzIENQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yIDogcHVibGljIElQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfVmFyaWFibGVUZXh0X0l0ZXJhdG9yKENQREZfVmFyaWFibGVUZXh0ICogcFZUKTsNCisgICAgdmlydHVhbCB+Q1BERl9WYXJpYWJsZVRleHRfSXRlcmF0b3IoKTsNCisgICAgRlhfQk9PTAkJCQkJCQkJCU5leHRXb3JkKCk7DQorICAgIEZYX0JPT0wJCQkJCQkJCQlQcmV2V29yZCgpOw0KKyAgICBGWF9CT09MCQkJCQkJCQkJTmV4dExpbmUoKTsNCisgICAgRlhfQk9PTAkJCQkJCQkJCVByZXZMaW5lKCk7DQorICAgIEZYX0JPT0wJCQkJCQkJCQlOZXh0U2VjdGlvbigpOw0KKyAgICBGWF9CT09MCQkJCQkJCQkJUHJldlNlY3Rpb24oKTsNCisgICAgRlhfQk9PTAkJCQkJCQkJCVNldFdvcmQoY29uc3QgQ1BWVF9Xb3JkICYgd29yZCk7DQorICAgIEZYX0JPT0wJCQkJCQkJCQlHZXRXb3JkKENQVlRfV29yZCAmIHdvcmQpIGNvbnN0Ow0KKyAgICBGWF9CT09MCQkJCQkJCQkJR2V0TGluZShDUFZUX0xpbmUgJiBsaW5lKSBjb25zdDsNCisgICAgRlhfQk9PTAkJCQkJCQkJCUdldFNlY3Rpb24oQ1BWVF9TZWN0aW9uICYgc2VjdGlvbikgY29uc3Q7DQorICAgIEZYX0JPT0wJCQkJCQkJCQlTZXRTZWN0aW9uKGNvbnN0IENQVlRfU2VjdGlvbiAmIHNlY3Rpb24pOw0KKyAgICB2b2lkCQkJCQkJCQkJU2V0QXQoRlhfSU5UMzIgbldvcmRJbmRleCk7DQorICAgIHZvaWQJCQkJCQkJCQlTZXRBdChjb25zdCBDUFZUX1dvcmRQbGFjZSAmIHBsYWNlKTsNCisgICAgY29uc3QgQ1BWVF9Xb3JkUGxhY2UgJgkJCQkJR2V0QXQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9DdXJQb3M7DQorICAgIH07DQorcHJpdmF0ZToNCisgICAgQ1BWVF9Xb3JkUGxhY2UJCQkJCQkJbV9DdXJQb3M7DQorICAgIENQREZfVmFyaWFibGVUZXh0ICoJCQkJCQltX3BWVDsNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2ZwZGZkb2MvdGFnZ2VkX2ludC5oIGIvY29yZS9zcmMvZnBkZmRvYy90YWdnZWRfaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM0M2E4MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZkb2MvdGFnZ2VkX2ludC5oCkBAIC0wLDAgKzEsOTEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZQREZfVEFHR0VEX0lOVF9IXw0KKyNkZWZpbmUgX0ZQREZfVEFHR0VEX0lOVF9IXw0KK2NsYXNzIENQREZfU3RydWN0VHJlZUltcGw7DQorY2xhc3MgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbDsNCitjbGFzcyBDUERGX1N0cnVjdFRyZWVJbXBsIDogcHVibGljIENQREZfU3RydWN0VHJlZQ0KK3sNCitwdWJsaWM6DQorICAgIENQREZfU3RydWN0VHJlZUltcGwoY29uc3QgQ1BERl9Eb2N1bWVudCogcERvYyk7DQorICAgIH5DUERGX1N0cnVjdFRyZWVJbXBsKCk7DQorICAgIGludAkJCUNvdW50VG9wRWxlbWVudHMoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9LaWRzLkdldFNpemUoKTsNCisgICAgfQ0KKyAgICBDUERGX1N0cnVjdEVsZW1lbnQqCUdldFRvcEVsZW1lbnQoaW50IGkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoQ1BERl9TdHJ1Y3RFbGVtZW50KiltX0tpZHMuR2V0QXQoaSk7DQorICAgIH0NCisgICAgdm9pZAkJTG9hZERvY1RyZWUoKTsNCisgICAgdm9pZAkJTG9hZFBhZ2VUcmVlKGNvbnN0IENQREZfRGljdGlvbmFyeSogcFBhZ2VEaWN0KTsNCisgICAgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbCogQWRkUGFnZU5vZGUoQ1BERl9EaWN0aW9uYXJ5KiBwRWxlbWVudCwgQ0ZYX01hcFB0clRvUHRyJiBtYXAsIGludCBuTGV2ZWwgPSAwKTsNCisgICAgRlhfQk9PTAkJQWRkVG9wTGV2ZWxOb2RlKENQREZfRGljdGlvbmFyeSogcERpY3QsIENQREZfU3RydWN0RWxlbWVudEltcGwqIHBFbGVtZW50KTsNCitwcm90ZWN0ZWQ6DQorICAgIGNvbnN0IENQREZfRGljdGlvbmFyeSoJbV9wVHJlZVJvb3Q7DQorICAgIGNvbnN0IENQREZfRGljdGlvbmFyeSoJbV9wUm9sZU1hcDsNCisgICAgY29uc3QgQ1BERl9EaWN0aW9uYXJ5KgltX3BQYWdlOw0KKyAgICBDRlhfQXJyYXlUZW1wbGF0ZTxDUERGX1N0cnVjdEVsZW1lbnRJbXBsKj4JbV9LaWRzOw0KKyAgICBmcmllbmQgY2xhc3MgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbDsNCit9Ow0KK2NsYXNzIENQREZfU3RydWN0RWxlbWVudEltcGwgOiBwdWJsaWMgQ1BERl9TdHJ1Y3RFbGVtZW50DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbChDUERGX1N0cnVjdFRyZWVJbXBsKiBwVHJlZSwgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbCogcFBhcmVudCwgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCk7DQorICAgIH5DUERGX1N0cnVjdEVsZW1lbnRJbXBsKCk7DQorICAgIENQREZfU3RydWN0VHJlZSoJCUdldFRyZWUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wVHJlZTsNCisgICAgfQ0KKyAgICBjb25zdCBDRlhfQnl0ZVN0cmluZyYJR2V0VHlwZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1R5cGU7DQorICAgIH0NCisgICAgQ1BERl9TdHJ1Y3RFbGVtZW50KgkJR2V0UGFyZW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFBhcmVudDsNCisgICAgfQ0KKyAgICBDUERGX0RpY3Rpb25hcnkgKgkJR2V0RGljdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BEaWN0Ow0KKyAgICB9DQorICAgIGludAkJCQkJCUNvdW50S2lkcygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0tpZHMuR2V0U2l6ZSgpOw0KKyAgICB9DQorICAgIGNvbnN0IENQREZfU3RydWN0S2lkJglHZXRLaWQoaW50IGluZGV4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9LaWRzLkdldERhdGEoKVtpbmRleF07DQorICAgIH0NCisgICAgQ0ZYX1B0ckFycmF5KgkJCUdldE9iamVjdEFycmF5KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuICZtX09iamVjdEFycmF5Ow0KKyAgICB9DQorDQorICAgIENQREZfT2JqZWN0KgkJCUdldEF0dHIoRlhfQlNUUiBvd25lciwgRlhfQlNUUiBuYW1lLCBGWF9CT09MIGJJbmhlcml0YWJsZSA9IEZBTFNFLCBGWF9GTE9BVCBmTGV2ZWwgPSAwLjBGKTsNCisNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCQlHZXROYW1lKEZYX0JTVFIgb3duZXIsIEZYX0JTVFIgbmFtZSwgRlhfQlNUUiBkZWZhdWx0X3ZhbHVlLCBGWF9CT09MIGJJbmhlcml0YWJsZSA9IEZBTFNFLCBpbnQgc3ViaW5kZXggPSAtMSk7DQorICAgIEZYX0FSR0IJCQkJCUdldENvbG9yKEZYX0JTVFIgb3duZXIsIEZYX0JTVFIgbmFtZSwgRlhfQVJHQiBkZWZhdWx0X3ZhbHVlLCBGWF9CT09MIGJJbmhlcml0YWJsZSA9IEZBTFNFLCBpbnQgc3ViaW5kZXggPSAtMSk7DQorICAgIEZYX0ZMT0FUCQkJCUdldE51bWJlcihGWF9CU1RSIG93bmVyLCBGWF9CU1RSIG5hbWUsIEZYX0ZMT0FUIGRlZmF1bHRfdmFsdWUsIEZYX0JPT0wgYkluaGVyaXRhYmxlID0gRkFMU0UsIGludCBzdWJpbmRleCA9IC0xKTsNCisgICAgaW50CQkJCQkJR2V0SW50ZWdlcihGWF9CU1RSIG93bmVyLCBGWF9CU1RSIG5hbWUsIGludCBkZWZhdWx0X3ZhbHVlLCBGWF9CT09MIGJJbmhlcml0YWJsZSA9IEZBTFNFLCBpbnQgc3ViaW5kZXggPSAtMSk7DQorICAgIENGWF9QdHJBcnJheQkJCW1fT2JqZWN0QXJyYXk7DQorICAgIHZvaWQJCQkJCUxvYWRLaWRzKENQREZfRGljdGlvbmFyeSogcERpY3QpOw0KKyAgICB2b2lkCQkJCQlMb2FkS2lkKEZYX0RXT1JEIFBhZ2VPYmpOdW0sIENQREZfT2JqZWN0KiBwT2JqLCBDUERGX1N0cnVjdEtpZCogcEtpZCk7DQorICAgIENQREZfT2JqZWN0KgkJCUdldEF0dHIoRlhfQlNUUiBvd25lciwgRlhfQlNUUiBuYW1lLCBGWF9CT09MIGJJbmhlcml0YWJsZSwgaW50IHN1YmluZGV4KTsNCisgICAgQ1BERl9TdHJ1Y3RFbGVtZW50SW1wbCoJUmV0YWluKCk7DQorICAgIHZvaWQJCQkJCVJlbGVhc2UoKTsNCitwcm90ZWN0ZWQ6DQorICAgIENQREZfU3RydWN0VHJlZUltcGwqCW1fcFRyZWU7DQorICAgIENGWF9CeXRlU3RyaW5nCQkJbV9UeXBlOw0KKyAgICBDUERGX1N0cnVjdEVsZW1lbnRJbXBsKgltX3BQYXJlbnQ7DQorICAgIENQREZfRGljdGlvbmFyeSoJCW1fcERpY3Q7DQorICAgIENGWF9BcnJheVRlbXBsYXRlPENQREZfU3RydWN0S2lkPgltX0tpZHM7DQorDQorICAgIGludAkJCW1fUmVmQ291bnQ7DQorICAgIGZyaWVuZCBjbGFzcyBDUERGX1N0cnVjdFRyZWVJbXBsOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZnRleHQvZnBkZl90ZXh0LmNwcCBiL2NvcmUvc3JjL2ZwZGZ0ZXh0L2ZwZGZfdGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU3NmI3NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZ0ZXh0L2ZwZGZfdGV4dC5jcHAKQEAgLTAsMCArMSw3OTEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlLmgiDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2VvYmouaCINCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcGRmdGV4dC9mcGRmX3RleHQuaCINCisjaW5jbHVkZSAidHh0cHJvYy5oIg0KKyNpbmNsdWRlICJ0ZXh0X2ludC5oIg0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykgfHwgZGVmaW5lZChfRlhDT1JFX0ZFQVRVUkVfQUxMXykNCitleHRlcm4gRlhfTFBDU1RSIEZDU19HZXRBbHRTdHIoRlhfV0NIQVIpOw0KK0NGWF9CeXRlU3RyaW5nIENoYXJGcm9tVW5pY29kZUFsdChGWF9XQ0hBUiB1bmljb2RlLCBpbnQgZGVzdGNwLCBGWF9MUENTVFIgZGVmY2hhcikNCit7DQorICAgIGlmIChkZXN0Y3AgPT0gMCkgew0KKyAgICAgICAgaWYgKHVuaWNvZGUgPCAweDgwKSB7DQorICAgICAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKChjaGFyKXVuaWNvZGUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfTFBDU1RSIGFsdHN0ciA9IEZDU19HZXRBbHRTdHIodW5pY29kZSk7DQorICAgICAgICBpZiAoYWx0c3RyKSB7DQorICAgICAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKGFsdHN0ciwgLTEpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKGRlZmNoYXIsIC0xKTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJEZWYgPSBGQUxTRTsNCisgICAgY2hhciBidWZbMTBdOw0KKyAgICBpbnQgcmV0ID0gRlhTWVNfV2lkZUNoYXJUb011bHRpQnl0ZShkZXN0Y3AsIDAsICh3Y2hhcl90KikmdW5pY29kZSwgMSwgYnVmLCAxMCwgTlVMTCwgJmJEZWYpOw0KKyAgICBpZiAocmV0ICYmICFiRGVmKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoYnVmLCByZXQpOw0KKyAgICB9DQorICAgIEZYX0xQQ1NUUiBhbHRzdHIgPSBGQ1NfR2V0QWx0U3RyKHVuaWNvZGUpOw0KKyAgICBpZiAoYWx0c3RyKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoYWx0c3RyLCAtMSk7DQorICAgIH0NCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKGRlZmNoYXIsIC0xKTsNCit9DQorQ1RleHRQYWdlOjpDVGV4dFBhZ2UoKQ0KK3sNCit9DQorQ1RleHRQYWdlOjp+Q1RleHRQYWdlKCkNCit7DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9CYXNlTGluZXMuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDVGV4dEJhc2VMaW5lKiBwQmFzZUxpbmUgPSAoQ1RleHRCYXNlTGluZSopbV9CYXNlTGluZXMuR2V0QXQoaSk7DQorICAgICAgICBkZWxldGUgcEJhc2VMaW5lOw0KKyAgICB9DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX1RleHRDb2x1bW5zLkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgQ1RleHRDb2x1bW4qIHBUZXh0Q29sdW1uID0gKENUZXh0Q29sdW1uKiltX1RleHRDb2x1bW5zLkdldEF0KGkpOw0KKyAgICAgICAgZGVsZXRlIHBUZXh0Q29sdW1uOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1RleHRQYWdlOjpQcm9jZXNzT2JqZWN0KENQREZfUGFnZU9iamVjdCogcE9iamVjdCkNCit7DQorICAgIGlmIChwT2JqZWN0LT5tX1R5cGUgIT0gUERGUEFHRV9URVhUKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dCA9IChDUERGX1RleHRPYmplY3QqKXBPYmplY3Q7DQorICAgIENQREZfRm9udCogcEZvbnQgPSBwVGV4dC0+bV9UZXh0U3RhdGUuR2V0Rm9udCgpOw0KKyAgICBpbnQgY291bnQgPSBwVGV4dC0+Q291bnRJdGVtcygpOw0KKyAgICBGWF9GTE9BVCogcFBvc0FycmF5ID0gRlhfQWxsb2MoRlhfRkxPQVQsIGNvdW50ICogMik7DQorICAgIGlmIChwUG9zQXJyYXkpIHsNCisgICAgICAgIHBUZXh0LT5DYWxjQ2hhclBvcyhwUG9zQXJyYXkpOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIGZvbnRzaXplX2ggPSBwVGV4dC0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemVIKCk7DQorICAgIEZYX0ZMT0FUIGZvbnRzaXplX3YgPSBwVGV4dC0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemVWKCk7DQorICAgIEZYX0RXT1JEIHNwYWNlX2NoYXJjb2RlID0gcEZvbnQtPkNoYXJDb2RlRnJvbVVuaWNvZGUoJyAnKTsNCisgICAgRlhfRkxPQVQgc3BhY2V3ID0gMDsNCisgICAgaWYgKHNwYWNlX2NoYXJjb2RlICE9IC0xKSB7DQorICAgICAgICBzcGFjZXcgPSBmb250c2l6ZV9oICogcEZvbnQtPkdldENoYXJXaWR0aEYoc3BhY2VfY2hhcmNvZGUpIC8gMTAwMDsNCisgICAgfQ0KKyAgICBpZiAoc3BhY2V3ID09IDApIHsNCisgICAgICAgIHNwYWNldyA9IGZvbnRzaXplX2ggLyA0Ow0KKyAgICB9DQorICAgIGlmIChwVGV4dC0+bV9UZXh0U3RhdGUuR2V0QmFzZWxpbmVBbmdsZSgpICE9IDApIHsNCisgICAgICAgIGludCBjYyA9IDA7DQorICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsNCisgICAgICAgIHBUZXh0LT5HZXRUZXh0TWF0cml4KCZtYXRyaXgpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwVGV4dC0+bV9uQ2hhcnM7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9EV09SRCBjaGFyY29kZSA9IHBUZXh0LT5tX25DaGFycyA9PSAxID8gKEZYX0RXT1JEKShGWF9VSU5UUFRSKXBUZXh0LT5tX3BDaGFyQ29kZXMgOiBwVGV4dC0+bV9wQ2hhckNvZGVzW2ldOw0KKyAgICAgICAgICAgIGlmIChjaGFyY29kZSA9PSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfUkVDVCBjaGFyX2JveDsNCisgICAgICAgICAgICBwRm9udC0+R2V0Q2hhckJCb3goY2hhcmNvZGUsIGNoYXJfYm94KTsNCisgICAgICAgICAgICBGWF9GTE9BVCBjaGFyX2xlZnQgPSBwUG9zQXJyYXkgPyBwUG9zQXJyYXlbY2MgKiAyXSA6IGNoYXJfYm94LmxlZnQgKiBwVGV4dC0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemUoKSAvIDEwMDA7DQorICAgICAgICAgICAgRlhfRkxPQVQgY2hhcl9yaWdodCA9IHBQb3NBcnJheSA/IHBQb3NBcnJheVtjYyAqIDIgKyAxXSA6IGNoYXJfYm94LnJpZ2h0ICogcFRleHQtPm1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCkgLyAxMDAwOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGNoYXJfdG9wID0gY2hhcl9ib3gudG9wICogcFRleHQtPm1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCkgLyAxMDAwOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGNoYXJfYm90dG9tID0gY2hhcl9ib3guYm90dG9tICogcFRleHQtPm1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCkgLyAxMDAwOw0KKyAgICAgICAgICAgIGNjICsrOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGNoYXJfb3JpZ3gsIGNoYXJfb3JpZ3k7DQorICAgICAgICAgICAgbWF0cml4LlRyYW5zZm9ybShjaGFyX2xlZnQsIDAsIGNoYXJfb3JpZ3gsIGNoYXJfb3JpZ3kpOw0KKyAgICAgICAgICAgIG1hdHJpeC5UcmFuc2Zvcm1SZWN0KGNoYXJfbGVmdCwgY2hhcl9yaWdodCwgY2hhcl90b3AsIGNoYXJfYm90dG9tKTsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdHI7DQorICAgICAgICAgICAgcEZvbnQtPkFwcGVuZENoYXIoc3RyLCBjaGFyY29kZSk7DQorICAgICAgICAgICAgSW5zZXJ0VGV4dEJveChOVUxMLCBjaGFyX29yaWd5LCBjaGFyX2xlZnQsIGNoYXJfcmlnaHQsIGNoYXJfdG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl9ib3R0b20sIHNwYWNldywgZm9udHNpemVfdiwgc3RyLCBwRm9udCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFBvc0FycmF5KSB7DQorICAgICAgICAgICAgRlhfRnJlZShwUG9zQXJyYXkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIHJhdGlvX2ggPSBmb250c2l6ZV9oIC8gcFRleHQtPm1fVGV4dFN0YXRlLkdldEZvbnRTaXplKCk7DQorICAgIGZvciAoaW50IGlpID0gMDsgaWkgPCBjb3VudCAqIDI7IGlpICsrKSB7DQorICAgICAgICBwUG9zQXJyYXlbaWldICo9IHJhdGlvX2g7DQorICAgIH0NCisgICAgRlhfRkxPQVQgYmFzZWxpbmUgPSBwVGV4dC0+bV9Qb3NZOw0KKyAgICBDVGV4dEJhc2VMaW5lKiBwQmFzZUxpbmUgPSBOVUxMOw0KKyAgICBGWF9GTE9BVCB0b3B5ID0gcFRleHQtPm1fVG9wOw0KKyAgICBGWF9GTE9BVCBib3R0b215ID0gcFRleHQtPm1fQm90dG9tOw0KKyAgICBGWF9GTE9BVCBsZWZ0eCA9IHBUZXh0LT5tX0xlZnQ7DQorICAgIGludCBjYyA9IDA7DQorICAgIENGWF9CeXRlU3RyaW5nIHNlZ21lbnQ7DQorICAgIGludCBzcGFjZV9jb3VudCA9IDA7DQorICAgIEZYX0ZMT0FUIGxhc3RfbGVmdCA9IDAsIGxhc3RfcmlnaHQgPSAwLCBzZWdtZW50X2xlZnQgPSAwLCBzZWdtZW50X3JpZ2h0ID0gMDsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwVGV4dC0+bV9uQ2hhcnM7IGkgKyspIHsNCisgICAgICAgIEZYX0RXT1JEIGNoYXJjb2RlID0gcFRleHQtPm1fbkNoYXJzID09IDEgPyAoRlhfRFdPUkQpKEZYX1VJTlRQVFIpcFRleHQtPm1fcENoYXJDb2RlcyA6IHBUZXh0LT5tX3BDaGFyQ29kZXNbaV07DQorICAgICAgICBpZiAoY2hhcmNvZGUgPT0gKEZYX0RXT1JEKSAtIDEpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0ZMT0FUIGNoYXJfbGVmdCA9IHBQb3NBcnJheVtjYyAqIDJdOw0KKyAgICAgICAgRlhfRkxPQVQgY2hhcl9yaWdodCA9IHBQb3NBcnJheVtjYyAqIDIgKyAxXTsNCisgICAgICAgIGNjICsrOw0KKyAgICAgICAgaWYgKGNoYXJfbGVmdCA8IGxhc3RfbGVmdCB8fCAoY2hhcl9sZWZ0IC0gbGFzdF9yaWdodCkgPiBzcGFjZXcgLyAyKSB7DQorICAgICAgICAgICAgcEJhc2VMaW5lID0gSW5zZXJ0VGV4dEJveChwQmFzZUxpbmUsIGJhc2VsaW5lLCBsZWZ0eCArIHNlZ21lbnRfbGVmdCwgbGVmdHggKyBzZWdtZW50X3JpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9weSwgYm90dG9teSwgc3BhY2V3LCBmb250c2l6ZV92LCBzZWdtZW50LCBwRm9udCk7DQorICAgICAgICAgICAgc2VnbWVudF9sZWZ0ID0gY2hhcl9sZWZ0Ow0KKyAgICAgICAgICAgIHNlZ21lbnQgPSAiIjsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9XaWRlU3RyaW5nIHdDaCA9IHBUZXh0LT5HZXRGb250KCktPlVuaWNvZGVGcm9tQ2hhckNvZGUoY2hhcmNvZGUpOw0KKyAgICAgICAgRlhfRFdPUkQgY2ggPSB3Q2guR2V0TGVuZ3RoKCkgPiAwID8gd0NoLkdldEF0KDApIDogY2hhcmNvZGU7DQorICAgICAgICBpZiAoc3BhY2VfY291bnQgPiAxKSB7DQorICAgICAgICAgICAgcEJhc2VMaW5lID0gSW5zZXJ0VGV4dEJveChwQmFzZUxpbmUsIGJhc2VsaW5lLCBsZWZ0eCArIHNlZ21lbnRfbGVmdCwgbGVmdHggKyBzZWdtZW50X3JpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9weSwgYm90dG9teSwgc3BhY2V3LCBmb250c2l6ZV92LCBzZWdtZW50LCBwRm9udCk7DQorICAgICAgICAgICAgc2VnbWVudCA9ICIiOw0KKyAgICAgICAgfSBlbHNlIGlmIChzcGFjZV9jb3VudCA9PSAxKSB7DQorICAgICAgICAgICAgcEZvbnQtPkFwcGVuZENoYXIoc2VnbWVudCwgJyAnKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzZWdtZW50LkdldExlbmd0aCgpID09IDApIHsNCisgICAgICAgICAgICBzZWdtZW50X2xlZnQgPSBjaGFyX2xlZnQ7DQorICAgICAgICB9DQorICAgICAgICBzZWdtZW50X3JpZ2h0ID0gY2hhcl9yaWdodDsNCisgICAgICAgIHBGb250LT5BcHBlbmRDaGFyKHNlZ21lbnQsIGNoYXJjb2RlKTsNCisgICAgICAgIHNwYWNlX2NvdW50ID0gMDsNCisgICAgICAgIGxhc3RfbGVmdCA9IGNoYXJfbGVmdDsNCisgICAgICAgIGxhc3RfcmlnaHQgPSBjaGFyX3JpZ2h0Ow0KKyAgICB9DQorICAgIGlmIChzZWdtZW50LkdldExlbmd0aCgpKQ0KKyAgICAgICAgcEJhc2VMaW5lID0gSW5zZXJ0VGV4dEJveChwQmFzZUxpbmUsIGJhc2VsaW5lLCBsZWZ0eCArIHNlZ21lbnRfbGVmdCwgbGVmdHggKyBzZWdtZW50X3JpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3B5LCBib3R0b215LCBzcGFjZXcsIGZvbnRzaXplX3YsIHNlZ21lbnQsIHBGb250KTsNCisgICAgRlhfRnJlZShwUG9zQXJyYXkpOw0KK30NCitzdGF0aWMgdm9pZCBDb252ZXJ0UERGU3RyaW5nKENGWF9CeXRlU3RyaW5nJiByZXN1bHQsIENGWF9CeXRlU3RyaW5nJiBzcmMsIENQREZfRm9udCogcEZvbnQpOw0KK0NUZXh0QmFzZUxpbmUqIENUZXh0UGFnZTo6SW5zZXJ0VGV4dEJveChDVGV4dEJhc2VMaW5lKiBwQmFzZUxpbmUsIEZYX0ZMT0FUIGJhc2V5LCBGWF9GTE9BVCBsZWZ0eCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgcmlnaHR4LCBGWF9GTE9BVCB0b3B5LCBGWF9GTE9BVCBib3R0b215LCBGWF9GTE9BVCBzcGFjZXcsIEZYX0ZMT0FUIGZvbnRzaXplX3YsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nJiBzdHIsIENQREZfRm9udCogcEZvbnQpDQorew0KKyAgICBpZiAoc3RyLkdldExlbmd0aCgpID09IDApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChwQmFzZUxpbmUgPT0gTlVMTCkgew0KKyAgICAgICAgaW50IGk7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbV9CYXNlTGluZXMuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICAgICAgQ1RleHRCYXNlTGluZSogcEV4aXN0TGluZSA9IChDVGV4dEJhc2VMaW5lKiltX0Jhc2VMaW5lcy5HZXRBdChpKTsNCisgICAgICAgICAgICBpZiAocEV4aXN0TGluZS0+bV9CYXNlTGluZSA9PSBiYXNleSkgew0KKyAgICAgICAgICAgICAgICBwQmFzZUxpbmUgPSBwRXhpc3RMaW5lOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBFeGlzdExpbmUtPm1fQmFzZUxpbmUgPCBiYXNleSkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAocEJhc2VMaW5lID09IE5VTEwpIHsNCisgICAgICAgICAgICBwQmFzZUxpbmUgPSBGWF9ORVcgQ1RleHRCYXNlTGluZTsNCisgICAgICAgICAgICBpZiAoTlVMTCA9PSBwQmFzZUxpbmUpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBCYXNlTGluZS0+bV9CYXNlTGluZSA9IGJhc2V5Ow0KKyAgICAgICAgICAgIG1fQmFzZUxpbmVzLkluc2VydEF0KGksIHBCYXNlTGluZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgdGV4dDsNCisgICAgRlhfTFBDU1RSIHBTdHIgPSBzdHI7DQorICAgIGludCBsZW4gPSBzdHIuR2V0TGVuZ3RoKCksIG9mZnNldCA9IDA7DQorICAgIHdoaWxlIChvZmZzZXQgPCBsZW4pIHsNCisgICAgICAgIEZYX0RXT1JEIGNoID0gcEZvbnQtPkdldE5leHRDaGFyKHBTdHIsIG9mZnNldCk7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyB1bmljb2RlX3N0ciA9IHBGb250LT5Vbmljb2RlRnJvbUNoYXJDb2RlKGNoKTsNCisgICAgICAgIHRleHQgKz0gdW5pY29kZV9zdHI7DQorICAgIH0NCisgICAgcEJhc2VMaW5lLT5JbnNlcnRUZXh0Qm94KGxlZnR4LCByaWdodHgsIHRvcHksIGJvdHRvbXksIHNwYWNldywgZm9udHNpemVfdiwgdGV4dCk7DQorICAgIHJldHVybiBwQmFzZUxpbmU7DQorfQ0KK3ZvaWQgQ1RleHRQYWdlOjpXcml0ZU91dHB1dChDRlhfV2lkZVN0cmluZ0FycmF5JiBsaW5lcywgaW50IGlNaW5XaWR0aCkNCit7DQorICAgIEZYX0ZMT0FUIGxhc3RoZWlnaHQgPSAtMTsNCisgICAgRlhfRkxPQVQgbGFzdGJhc2VsaW5lID0gLTE7DQorICAgIEZYX0ZMT0FUIE1pbkxlZnRYID0gMTAwMDAwMDsNCisgICAgRlhfRkxPQVQgTWF4UmlnaHRYID0gMDsNCisgICAgaW50IGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX0Jhc2VMaW5lcy5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENUZXh0QmFzZUxpbmUqIHBCYXNlTGluZSA9IChDVGV4dEJhc2VMaW5lKiltX0Jhc2VMaW5lcy5HZXRBdChpKTsNCisgICAgICAgIEZYX0ZMT0FUIGxlZnR4LCByaWdodHg7DQorICAgICAgICBpZiAocEJhc2VMaW5lLT5HZXRXaWR0aChsZWZ0eCwgcmlnaHR4KSkgew0KKyAgICAgICAgICAgIGlmIChsZWZ0eCA8IE1pbkxlZnRYKSB7DQorICAgICAgICAgICAgICAgIE1pbkxlZnRYID0gbGVmdHg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChyaWdodHggPiBNYXhSaWdodFgpIHsNCisgICAgICAgICAgICAgICAgTWF4UmlnaHRYID0gcmlnaHR4Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9CYXNlTGluZXMuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDVGV4dEJhc2VMaW5lKiBwQmFzZUxpbmUgPSAoQ1RleHRCYXNlTGluZSopbV9CYXNlTGluZXMuR2V0QXQoaSk7DQorICAgICAgICBwQmFzZUxpbmUtPk1lcmdlQm94ZXMoKTsNCisgICAgfQ0KKyAgICBmb3IgKGkgPSAxOyBpIDwgbV9CYXNlTGluZXMuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDVGV4dEJhc2VMaW5lKiBwQmFzZUxpbmUgPSAoQ1RleHRCYXNlTGluZSopbV9CYXNlTGluZXMuR2V0QXQoaSk7DQorICAgICAgICBDVGV4dEJhc2VMaW5lKiBwUHJldkxpbmUgPSAoQ1RleHRCYXNlTGluZSopbV9CYXNlTGluZXMuR2V0QXQoaSAtIDEpOw0KKyAgICAgICAgaWYgKHBCYXNlTGluZS0+Q2FuTWVyZ2UocFByZXZMaW5lKSkgew0KKyAgICAgICAgICAgIHBQcmV2TGluZS0+TWVyZ2UocEJhc2VMaW5lKTsNCisgICAgICAgICAgICBkZWxldGUgcEJhc2VMaW5lOw0KKyAgICAgICAgICAgIG1fQmFzZUxpbmVzLlJlbW92ZUF0KGkpOw0KKyAgICAgICAgICAgIGkgLS07DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG1fYkF1dG9XaWR0aCkgew0KKyAgICAgICAgaW50KiB3aWR0aHMgPSBGWF9BbGxvYyhpbnQsIG1fQmFzZUxpbmVzLkdldFNpemUoKSk7DQorICAgICAgICBpZiAod2lkdGhzKSB7DQorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fQmFzZUxpbmVzLkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgICAgICAgICB3aWR0aHNbaV0gPSAwOw0KKyAgICAgICAgICAgICAgICBDVGV4dEJhc2VMaW5lKiBwQmFzZUxpbmUgPSAoQ1RleHRCYXNlTGluZSopbV9CYXNlTGluZXMuR2V0QXQoaSk7DQorICAgICAgICAgICAgICAgIGludCBUb3RhbENoYXJzID0gMDsNCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgVG90YWxXaWR0aCA9IDA7DQorICAgICAgICAgICAgICAgIGludCBtaW5jaGFyczsNCisgICAgICAgICAgICAgICAgcEJhc2VMaW5lLT5Db3VudENoYXJzKFRvdGFsQ2hhcnMsIFRvdGFsV2lkdGgsIG1pbmNoYXJzKTsNCisgICAgICAgICAgICAgICAgaWYgKFRvdGFsQ2hhcnMpIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGNoYXJ3aWR0aCA9IFRvdGFsV2lkdGggLyBUb3RhbENoYXJzOw0KKyAgICAgICAgICAgICAgICAgICAgd2lkdGhzW2ldID0gKGludCkoKE1heFJpZ2h0WCAtIE1pbkxlZnRYKSAvIGNoYXJ3aWR0aCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKHdpZHRoc1tpXSA+IDEwMDApIHsNCisgICAgICAgICAgICAgICAgICAgIHdpZHRoc1tpXSA9IDEwMDA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKHdpZHRoc1tpXSA8IG1pbmNoYXJzKSB7DQorICAgICAgICAgICAgICAgICAgICB3aWR0aHNbaV0gPSBtaW5jaGFyczsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgQXZnV2lkdGggPSAwLCB3aWR0aGNvdW50ID0gMDsNCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbV9CYXNlTGluZXMuR2V0U2l6ZSgpOyBpICsrKQ0KKyAgICAgICAgICAgICAgICBpZiAod2lkdGhzW2ldKSB7DQorICAgICAgICAgICAgICAgICAgICBBdmdXaWR0aCArPSB3aWR0aHNbaV07DQorICAgICAgICAgICAgICAgICAgICB3aWR0aGNvdW50ICsrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgQXZnV2lkdGggPSBpbnQoKEZYX0ZMT0FUKUF2Z1dpZHRoIC8gd2lkdGhjb3VudCArIDAuNSk7DQorICAgICAgICAgICAgaW50IE1heFdpZHRoID0gMDsNCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbV9CYXNlTGluZXMuR2V0U2l6ZSgpOyBpICsrKQ0KKyAgICAgICAgICAgICAgICBpZiAoTWF4V2lkdGggPCB3aWR0aHNbaV0pIHsNCisgICAgICAgICAgICAgICAgICAgIE1heFdpZHRoID0gd2lkdGhzW2ldOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKE1heFdpZHRoID4gQXZnV2lkdGggKiA2IC8gNSkgew0KKyAgICAgICAgICAgICAgICBNYXhXaWR0aCA9IEF2Z1dpZHRoICogNiAvIDU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0ZyZWUod2lkdGhzKTsNCisgICAgICAgICAgICBpZiAoaU1pbldpZHRoIDwgTWF4V2lkdGgpIHsNCisgICAgICAgICAgICAgICAgaU1pbldpZHRoID0gTWF4V2lkdGg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX0Jhc2VMaW5lcy5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENUZXh0QmFzZUxpbmUqIHBCYXNlTGluZSA9IChDVGV4dEJhc2VMaW5lKiltX0Jhc2VMaW5lcy5HZXRBdChpKTsNCisgICAgICAgIHBCYXNlTGluZS0+TWVyZ2VCb3hlcygpOw0KKyAgICB9DQorICAgIGlmIChtX2JLZWVwQ29sdW1uKSB7DQorICAgICAgICBGaW5kQ29sdW1ucygpOw0KKyAgICB9DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX0Jhc2VMaW5lcy5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENUZXh0QmFzZUxpbmUqIHBCYXNlTGluZSA9IChDVGV4dEJhc2VMaW5lKiltX0Jhc2VMaW5lcy5HZXRBdChpKTsNCisgICAgICAgIGlmIChsYXN0aGVpZ2h0ID49IDApIHsNCisgICAgICAgICAgICBGWF9GTE9BVCBkeSA9IGxhc3RiYXNlbGluZSAtIHBCYXNlTGluZS0+bV9CYXNlTGluZTsNCisgICAgICAgICAgICBpZiAoZHkgPj0gKHBCYXNlTGluZS0+bV9NYXhGb250U2l6ZVYpICogMS41IHx8IGR5ID49IGxhc3RoZWlnaHQgKiAxLjUpIHsNCisgICAgICAgICAgICAgICAgbGluZXMuQWRkKEwiIik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbGFzdGhlaWdodCA9IHBCYXNlTGluZS0+bV9NYXhGb250U2l6ZVY7DQorICAgICAgICBsYXN0YmFzZWxpbmUgPSBwQmFzZUxpbmUtPm1fQmFzZUxpbmU7DQorICAgICAgICBDRlhfV2lkZVN0cmluZyBzdHI7DQorICAgICAgICBwQmFzZUxpbmUtPldyaXRlT3V0cHV0KHN0ciwgTWluTGVmdFgsIE1heFJpZ2h0WCAtIE1pbkxlZnRYLCBpTWluV2lkdGgpOw0KKyAgICAgICAgbGluZXMuQWRkKHN0cik7DQorICAgIH0NCit9DQordm9pZCBOb3JtYWxpemVDb21wb3NpdGVDaGFyKEZYX1dDSEFSIHdDaGFyLCBDRlhfV2lkZVN0cmluZyYgc0Rlc3QpDQorew0KKyAgICB3Q2hhciA9IEZYX0dldE1pcnJvckNoYXIod0NoYXIsIFRSVUUsIEZBTFNFKTsNCisgICAgRlhfTFBXU1RSIHBEc3QgPSBOVUxMOw0KKyAgICBGWF9TVFJTSVpFIG5Db3VudCA9IEZYX1VuaWNvZGVfR2V0Tm9ybWFsaXphdGlvbih3Q2hhciwgcERzdCk7DQorICAgIGlmIChuQ291bnQgPCAxICkgew0KKyAgICAgICAgc0Rlc3QgKz0gd0NoYXI7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcERzdCA9IG5ldyBGWF9XQ0hBUltuQ291bnRdOw0KKyAgICBGWF9Vbmljb2RlX0dldE5vcm1hbGl6YXRpb24od0NoYXIsIHBEc3QpOw0KKyAgICBmb3IgKGludCBuSW5kZXggPSAwOyBuSW5kZXggPCBuQ291bnQ7IG5JbmRleCsrKSB7DQorICAgICAgICBzRGVzdCArPSBwRHN0W25JbmRleF07DQorICAgIH0NCisgICAgZGVsZXRlW10gcERzdDsNCit9DQordm9pZCBOb3JtYWxpemVTdHJpbmcoQ0ZYX1dpZGVTdHJpbmcmIHN0cikNCit7DQorICAgIGlmIChzdHIuR2V0TGVuZ3RoKCkgPD0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9XaWRlU3RyaW5nIHNCdWZmZXI7DQorICAgIElGWF9CaWRpQ2hhciogQmlkaUNoYXIgPSBJRlhfQmlkaUNoYXI6OkNyZWF0ZSgpOw0KKyAgICBpZiAoTlVMTCA9PSBCaWRpQ2hhcikJew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9Xb3JkQXJyYXkgb3JkZXI7DQorICAgIEZYX0JPT0wgYlIyTCA9IEZBTFNFOw0KKyAgICBGWF9JTlQzMiBzdGFydCA9IDAsIGNvdW50ID0gMCwgaSA9IDA7DQorICAgIGludCBuUjJMID0gMCwgbkwyUiA9IDA7DQorICAgIGZvciAoaSA9IDA7IGkgPCBzdHIuR2V0TGVuZ3RoKCk7IGkrKykgew0KKyAgICAgICAgaWYoQmlkaUNoYXItPkFwcGVuZENoYXIoc3RyLkdldEF0KGkpKSkgew0KKyAgICAgICAgICAgIEZYX0lOVDMyIHJldCA9IEJpZGlDaGFyLT5HZXRCaWRpSW5mbyhzdGFydCwgY291bnQpOw0KKyAgICAgICAgICAgIG9yZGVyLkFkZChzdGFydCk7DQorICAgICAgICAgICAgb3JkZXIuQWRkKGNvdW50KTsNCisgICAgICAgICAgICBvcmRlci5BZGQocmV0KTsNCisgICAgICAgICAgICBpZighYlIyTCkgew0KKyAgICAgICAgICAgICAgICBpZihyZXQgPT0gMikgew0KKyAgICAgICAgICAgICAgICAgICAgblIyTCsrOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJldCA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICBuTDJSKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoQmlkaUNoYXItPkVuZENoYXIoKSkgew0KKyAgICAgICAgRlhfSU5UMzIgcmV0ID0gQmlkaUNoYXItPkdldEJpZGlJbmZvKHN0YXJ0LCBjb3VudCk7DQorICAgICAgICBvcmRlci5BZGQoc3RhcnQpOw0KKyAgICAgICAgb3JkZXIuQWRkKGNvdW50KTsNCisgICAgICAgIG9yZGVyLkFkZChyZXQpOw0KKyAgICAgICAgaWYoIWJSMkwpIHsNCisgICAgICAgICAgICBpZihyZXQgPT0gMikgew0KKyAgICAgICAgICAgICAgICBuUjJMKys7DQorICAgICAgICAgICAgfSBlbHNlIGlmKHJldCA9PSAxKSB7DQorICAgICAgICAgICAgICAgIG5MMlIrKzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoblIyTCA+IDAgJiYgblIyTCA+PSBuTDJSKSB7DQorICAgICAgICBiUjJMID0gVFJVRTsNCisgICAgfQ0KKyAgICBpZihiUjJMKSB7DQorICAgICAgICBpbnQgY291bnQgPSBvcmRlci5HZXRTaXplKCk7DQorICAgICAgICBmb3IoaW50IGogPSBjb3VudCAtIDE7IGogPiAwOyBqIC09IDMpIHsNCisgICAgICAgICAgICBpbnQgcmV0ID0gb3JkZXIuR2V0QXQoaik7DQorICAgICAgICAgICAgaW50IHN0YXJ0ID0gb3JkZXIuR2V0QXQoaiAtIDIpOw0KKyAgICAgICAgICAgIGludCBjb3VudDEgPSBvcmRlci5HZXRBdChqIC0gMSk7DQorICAgICAgICAgICAgaWYocmV0ID09IDIgfHwgcmV0ID09IDApIHsNCisgICAgICAgICAgICAgICAgZm9yKGludCBpID0gc3RhcnQgKyBjb3VudDEgLSAxOyBpID49IHN0YXJ0OyBpLS0pIHsNCisgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZUNvbXBvc2l0ZUNoYXIoc3RyW2ldLCBzQnVmZmVyKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGkgPSBqOw0KKyAgICAgICAgICAgICAgICBGWF9CT09MIGJTeW1ib2wgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgd2hpbGUoaSA+IDAgJiYgb3JkZXIuR2V0QXQoaSkgIT0gMikgew0KKyAgICAgICAgICAgICAgICAgICAgYlN5bWJvbCA9ICFvcmRlci5HZXRBdChpKTsNCisgICAgICAgICAgICAgICAgICAgIGkgLT0gMzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpbnQgZW5kID0gc3RhcnQgKyBjb3VudDEgOw0KKyAgICAgICAgICAgICAgICBpbnQgbiA9IDA7DQorICAgICAgICAgICAgICAgIGlmKGJTeW1ib2wpIHsNCisgICAgICAgICAgICAgICAgICAgIG4gPSBpICsgNjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG4gPSBpICsgMzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihuID49IGopIHsNCisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgbSA9IHN0YXJ0OyBtIDwgZW5kOyBtKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzQnVmZmVyICs9IHN0clttXTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGkgPSBqOw0KKyAgICAgICAgICAgICAgICAgICAgaiA9IG47DQorICAgICAgICAgICAgICAgICAgICBmb3IoOyBuIDw9IGk7IG4gKz0gMykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXQgPSBvcmRlci5HZXRBdChuKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBvcmRlci5HZXRBdChuIC0gMik7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50MSA9IG9yZGVyLkdldEF0KG4gLSAxKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW5kID0gc3RhcnQgKyBjb3VudDEgOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgbSA9IHN0YXJ0OyBtIDwgZW5kOyBtKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc0J1ZmZlciArPSBzdHJbbV07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaW50IGNvdW50ID0gb3JkZXIuR2V0U2l6ZSgpOw0KKyAgICAgICAgRlhfQk9PTCBiTDJSID0gRkFMU0U7DQorICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgY291bnQ7IGogKz0gMykgew0KKyAgICAgICAgICAgIGludCByZXQgPSBvcmRlci5HZXRBdChqICsgMik7DQorICAgICAgICAgICAgaW50IHN0YXJ0ID0gb3JkZXIuR2V0QXQoaik7DQorICAgICAgICAgICAgaW50IGNvdW50MSA9IG9yZGVyLkdldEF0KGogKyAxKTsNCisgICAgICAgICAgICBpZihyZXQgPT0gMiB8fCAoaiA9PSAwICYmIHJldCA9PSAwICYmICFiTDJSKSkgew0KKyAgICAgICAgICAgICAgICBpbnQgaSA9IGogKyAzOw0KKyAgICAgICAgICAgICAgICB3aGlsZShiUjJMICYmIGkgPCBjb3VudCkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYob3JkZXIuR2V0QXQoaSArIDIpID09IDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmKGkgPT0gMykgew0KKyAgICAgICAgICAgICAgICAgICAgaiA9IC0zOw0KKyAgICAgICAgICAgICAgICAgICAgYkwyUiA9IFRSVUU7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpbnQgZW5kID0gc3RyLkdldExlbmd0aCgpIC0gMTsNCisgICAgICAgICAgICAgICAgaWYoaSA8IGNvdW50KSB7DQorICAgICAgICAgICAgICAgICAgICBlbmQgPSBvcmRlci5HZXRBdChpKSAtIDE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaiA9IGkgLSAzOw0KKyAgICAgICAgICAgICAgICBmb3IoaW50IG4gPSBlbmQ7IG4gPj0gc3RhcnQ7IG4tLSkgew0KKyAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplQ29tcG9zaXRlQ2hhcihzdHJbaV0sIHNCdWZmZXIpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaW50IGVuZCA9IHN0YXJ0ICsgY291bnQxIDsNCisgICAgICAgICAgICAgICAgZm9yKGludCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgew0KKyAgICAgICAgICAgICAgICAgICAgc0J1ZmZlciArPSBzdHJbaV07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgc3RyLkVtcHR5KCk7DQorICAgIHN0ciArPSBzQnVmZmVyOw0KKyAgICBCaWRpQ2hhci0+UmVsZWFzZSgpOw0KK30NCitzdGF0aWMgRlhfQk9PTCBJc051bWJlcihDRlhfV2lkZVN0cmluZyYgc3RyKQ0KK3sNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdHIuR2V0TGVuZ3RoKCk7IGkgKyspIHsNCisgICAgICAgIEZYX1dDSEFSIGNoID0gc3RyW2ldOw0KKyAgICAgICAgaWYgKChjaCA8ICcwJyB8fCBjaCA+ICc5JykgJiYgY2ggIT0gJy0nICYmIGNoICE9ICcrJyAmJiBjaCAhPSAnLicgJiYgY2ggIT0gJyAnKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENUZXh0UGFnZTo6RmluZENvbHVtbnMoKQ0KK3sNCisgICAgaW50IGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX0Jhc2VMaW5lcy5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENUZXh0QmFzZUxpbmUqIHBCYXNlTGluZSA9IChDVGV4dEJhc2VMaW5lKiltX0Jhc2VMaW5lcy5HZXRBdChpKTsNCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcEJhc2VMaW5lLT5tX1RleHRMaXN0LkdldFNpemUoKTsgaiArKykgew0KKyAgICAgICAgICAgIENUZXh0Qm94KiBwVGV4dEJveCA9IChDVGV4dEJveCopcEJhc2VMaW5lLT5tX1RleHRMaXN0LkdldEF0KGopOw0KKyAgICAgICAgICAgIENUZXh0Q29sdW1uKiBwQ29sdW1uID0gRmluZENvbHVtbihwVGV4dEJveC0+bV9SaWdodCk7DQorICAgICAgICAgICAgaWYgKHBDb2x1bW4gPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBwQ29sdW1uID0gRlhfTkVXIENUZXh0Q29sdW1uOw0KKyAgICAgICAgICAgICAgICBpZiAocENvbHVtbikgew0KKyAgICAgICAgICAgICAgICAgICAgcENvbHVtbi0+bV9Db3VudCA9IDE7DQorICAgICAgICAgICAgICAgICAgICBwQ29sdW1uLT5tX0F2Z1BvcyA9IHBUZXh0Qm94LT5tX1JpZ2h0Ow0KKyAgICAgICAgICAgICAgICAgICAgcENvbHVtbi0+bV9UZXh0UG9zID0gLTE7DQorICAgICAgICAgICAgICAgICAgICBtX1RleHRDb2x1bW5zLkFkZChwQ29sdW1uKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBDb2x1bW4tPm1fQXZnUG9zID0gKHBDb2x1bW4tPm1fQ291bnQgKiBwQ29sdW1uLT5tX0F2Z1BvcyArIHBUZXh0Qm94LT5tX1JpZ2h0KSAvDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBDb2x1bW4tPm1fQ291bnQgKyAxKTsNCisgICAgICAgICAgICAgICAgcENvbHVtbi0+bV9Db3VudCArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IG1pbmNvdW50ID0gbV9CYXNlTGluZXMuR2V0U2l6ZSgpIC8gNDsNCisgICAgZm9yIChpID0gMDsgaSA8IG1fVGV4dENvbHVtbnMuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDVGV4dENvbHVtbiogcFRleHRDb2x1bW4gPSAoQ1RleHRDb2x1bW4qKW1fVGV4dENvbHVtbnMuR2V0QXQoaSk7DQorICAgICAgICBpZiAocFRleHRDb2x1bW4tPm1fQ291bnQgPj0gbWluY291bnQpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGRlbGV0ZSBwVGV4dENvbHVtbjsNCisgICAgICAgIG1fVGV4dENvbHVtbnMuUmVtb3ZlQXQoaSk7DQorICAgICAgICBpIC0tOw0KKyAgICB9DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX0Jhc2VMaW5lcy5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENUZXh0QmFzZUxpbmUqIHBCYXNlTGluZSA9IChDVGV4dEJhc2VMaW5lKiltX0Jhc2VMaW5lcy5HZXRBdChpKTsNCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcEJhc2VMaW5lLT5tX1RleHRMaXN0LkdldFNpemUoKTsgaiArKykgew0KKyAgICAgICAgICAgIENUZXh0Qm94KiBwVGV4dEJveCA9IChDVGV4dEJveCopcEJhc2VMaW5lLT5tX1RleHRMaXN0LkdldEF0KGopOw0KKyAgICAgICAgICAgIGlmIChJc051bWJlcihwVGV4dEJveC0+bV9UZXh0KSkgew0KKyAgICAgICAgICAgICAgICBwVGV4dEJveC0+bV9wQ29sdW1uID0gRmluZENvbHVtbihwVGV4dEJveC0+bV9SaWdodCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NUZXh0Q29sdW1uKiBDVGV4dFBhZ2U6OkZpbmRDb2x1bW4oRlhfRkxPQVQgeHBvcykNCit7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9UZXh0Q29sdW1ucy5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENUZXh0Q29sdW1uKiBwQ29sdW1uID0gKENUZXh0Q29sdW1uKiltX1RleHRDb2x1bW5zLkdldEF0KGkpOw0KKyAgICAgICAgaWYgKHBDb2x1bW4tPm1fQXZnUG9zIDwgeHBvcyArIDEgJiYgcENvbHVtbi0+bV9BdmdQb3MgPiB4cG9zIC0gMSkgew0KKyAgICAgICAgICAgIHJldHVybiBwQ29sdW1uOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCit2b2lkIENUZXh0UGFnZTo6QnJlYWtTcGFjZShDUERGX1RleHRPYmplY3QqIHBUZXh0T2JqKQ0KK3sNCit9DQorQ1RleHRCYXNlTGluZTo6Q1RleHRCYXNlTGluZSgpDQorew0KKyAgICBtX1RvcCA9IC0xMDAwMDA7DQorICAgIG1fQm90dG9tID0gMTAwMDAwOw0KKyAgICBtX01heEZvbnRTaXplViA9IDA7DQorfQ0KK0NUZXh0QmFzZUxpbmU6On5DVGV4dEJhc2VMaW5lKCkNCit7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9UZXh0TGlzdC5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENUZXh0Qm94KiBwVGV4dCA9IChDVGV4dEJveCopbV9UZXh0TGlzdC5HZXRBdChpKTsNCisgICAgICAgIGRlbGV0ZSBwVGV4dDsNCisgICAgfQ0KK30NCit2b2lkIENUZXh0QmFzZUxpbmU6Okluc2VydFRleHRCb3goRlhfRkxPQVQgbGVmdHgsIEZYX0ZMT0FUIHJpZ2h0eCwgRlhfRkxPQVQgdG9weSwgRlhfRkxPQVQgYm90dG9teSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgc3BhY2V3LCBGWF9GTE9BVCBmb250c2l6ZV92LCBjb25zdCBDRlhfV2lkZVN0cmluZyYgdGV4dCkNCit7DQorICAgIGlmIChtX1RvcCA8IHRvcHkpIHsNCisgICAgICAgIG1fVG9wID0gdG9weTsNCisgICAgfQ0KKyAgICBpZiAobV9Cb3R0b20gPiBib3R0b215KSB7DQorICAgICAgICBtX0JvdHRvbSA9IGJvdHRvbXk7DQorICAgIH0NCisgICAgaWYgKG1fTWF4Rm9udFNpemVWIDwgZm9udHNpemVfdikgew0KKyAgICAgICAgbV9NYXhGb250U2l6ZVYgPSBmb250c2l6ZV92Ow0KKyAgICB9DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9UZXh0TGlzdC5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENUZXh0Qm94KiBwVGV4dCA9IChDVGV4dEJveCopbV9UZXh0TGlzdC5HZXRBdChpKTsNCisgICAgICAgIGlmIChwVGV4dC0+bV9MZWZ0ID4gbGVmdHgpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDVGV4dEJveCogcFRleHQgPSBGWF9ORVcgQ1RleHRCb3g7DQorICAgIGlmIChOVUxMID09IHBUZXh0KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcFRleHQtPm1fVGV4dCA9IHRleHQ7DQorICAgIHBUZXh0LT5tX0xlZnQgPSBsZWZ0eDsNCisgICAgcFRleHQtPm1fUmlnaHQgPSByaWdodHg7DQorICAgIHBUZXh0LT5tX1RvcCA9IHRvcHk7DQorICAgIHBUZXh0LT5tX0JvdHRvbSA9IGJvdHRvbXk7DQorICAgIHBUZXh0LT5tX1NwYWNlV2lkdGggPSBzcGFjZXc7DQorICAgIHBUZXh0LT5tX0ZvbnRTaXplViA9IGZvbnRzaXplX3Y7DQorICAgIHBUZXh0LT5tX3BDb2x1bW4gPSBOVUxMOw0KKyAgICBtX1RleHRMaXN0Lkluc2VydEF0KGksIHBUZXh0KTsNCit9DQorRlhfQk9PTCBHZXRJbnRlcnNlY3Rpb24oRlhfRkxPQVQgbG93MSwgRlhfRkxPQVQgaGlnaDEsIEZYX0ZMT0FUIGxvdzIsIEZYX0ZMT0FUIGhpZ2gyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUJiBpbnRlcmxvdywgRlhfRkxPQVQmIGludGVyaGlnaCk7DQorRlhfQk9PTCBDVGV4dEJhc2VMaW5lOjpDYW5NZXJnZShDVGV4dEJhc2VMaW5lKiBwT3RoZXIpDQorew0KKyAgICBGWF9GTE9BVCBpbnRlcl90b3AsIGludGVyX2JvdHRvbTsNCisgICAgaWYgKCFHZXRJbnRlcnNlY3Rpb24obV9Cb3R0b20sIG1fVG9wLCBwT3RoZXItPm1fQm90dG9tLCBwT3RoZXItPm1fVG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcl9ib3R0b20sIGludGVyX3RvcCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBpbnRlcl9oID0gaW50ZXJfdG9wIC0gaW50ZXJfYm90dG9tOw0KKyAgICBpZiAoaW50ZXJfaCA8IChtX1RvcCAtIG1fQm90dG9tKSAvIDIgJiYgaW50ZXJfaCA8IChwT3RoZXItPm1fVG9wIC0gcE90aGVyLT5tX0JvdHRvbSkgLyAyKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfRkxPQVQgZHkgPSAoRlhfRkxPQVQpRlhTWVNfZmFicyhtX0Jhc2VMaW5lIC0gcE90aGVyLT5tX0Jhc2VMaW5lKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX1RleHRMaXN0LkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgQ1RleHRCb3gqIHBUZXh0ID0gKENUZXh0Qm94KiltX1RleHRMaXN0LkdldEF0KGkpOw0KKyAgICAgICAgRlhfRkxPQVQgd2lkdGggPSBwVGV4dC0+bV9SaWdodCAtIHBUZXh0LT5tX0xlZnQ7DQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHBPdGhlci0+bV9UZXh0TGlzdC5HZXRTaXplKCk7IGogKyspIHsNCisgICAgICAgICAgICBDVGV4dEJveCogcE90aGVyVGV4dCA9IChDVGV4dEJveCopcE90aGVyLT5tX1RleHRMaXN0LkdldEF0KGopOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGludGVyX2xlZnQsIGludGVyX3JpZ2h0Ow0KKyAgICAgICAgICAgIGlmICghR2V0SW50ZXJzZWN0aW9uKHBUZXh0LT5tX0xlZnQsIHBUZXh0LT5tX1JpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBPdGhlclRleHQtPm1fTGVmdCwgcE90aGVyVGV4dC0+bV9SaWdodCwgaW50ZXJfbGVmdCwgaW50ZXJfcmlnaHQpKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9GTE9BVCBpbnRlcl93ID0gaW50ZXJfcmlnaHQgLSBpbnRlcl9sZWZ0Ow0KKyAgICAgICAgICAgIGlmIChpbnRlcl93IDwgcFRleHQtPm1fU3BhY2VXaWR0aCAvIDIgJiYgaW50ZXJfdyA8IHBPdGhlclRleHQtPm1fU3BhY2VXaWR0aCAvIDIpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChkeSA+PSAocFRleHQtPm1fQm90dG9tIC0gcFRleHQtPm1fVG9wKSAvIDIgfHwNCisgICAgICAgICAgICAgICAgICAgIGR5ID49IChwT3RoZXJUZXh0LT5tX0JvdHRvbSAtIHBPdGhlclRleHQtPm1fVG9wKSAvIDIpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDVGV4dEJhc2VMaW5lOjpNZXJnZShDVGV4dEJhc2VMaW5lKiBwT3RoZXIpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBPdGhlci0+bV9UZXh0TGlzdC5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENUZXh0Qm94KiBwVGV4dCA9IChDVGV4dEJveCopcE90aGVyLT5tX1RleHRMaXN0LkdldEF0KGkpOw0KKyAgICAgICAgSW5zZXJ0VGV4dEJveChwVGV4dC0+bV9MZWZ0LCBwVGV4dC0+bV9SaWdodCwgcFRleHQtPm1fVG9wLCBwVGV4dC0+bV9Cb3R0b20sDQorICAgICAgICAgICAgICAgICAgICAgIHBUZXh0LT5tX1NwYWNlV2lkdGgsIHBUZXh0LT5tX0ZvbnRTaXplViwgcFRleHQtPm1fVGV4dCk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDVGV4dEJhc2VMaW5lOjpHZXRXaWR0aChGWF9GTE9BVCYgbGVmdHgsIEZYX0ZMT0FUJiByaWdodHgpDQorew0KKyAgICBpbnQgaTsNCisgICAgZm9yIChpID0gMDsgaSA8IG1fVGV4dExpc3QuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDVGV4dEJveCogcFRleHQgPSAoQ1RleHRCb3gqKW1fVGV4dExpc3QuR2V0QXQoaSk7DQorICAgICAgICBpZiAocFRleHQtPm1fVGV4dCAhPSBMIiAiKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGkgPT0gbV9UZXh0TGlzdC5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDVGV4dEJveCogcFRleHQgPSAoQ1RleHRCb3gqKW1fVGV4dExpc3QuR2V0QXQoaSk7DQorICAgIGxlZnR4ID0gcFRleHQtPm1fTGVmdDsNCisgICAgZm9yIChpID0gbV9UZXh0TGlzdC5HZXRTaXplKCkgLSAxOyBpID49IDA7IGkgLS0pIHsNCisgICAgICAgIENUZXh0Qm94KiBwVGV4dCA9IChDVGV4dEJveCopbV9UZXh0TGlzdC5HZXRBdChpKTsNCisgICAgICAgIGlmIChwVGV4dC0+bV9UZXh0ICE9IEwiICIpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBwVGV4dCA9IChDVGV4dEJveCopbV9UZXh0TGlzdC5HZXRBdChpKTsNCisgICAgcmlnaHR4ID0gcFRleHQtPm1fUmlnaHQ7DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENUZXh0QmFzZUxpbmU6Ok1lcmdlQm94ZXMoKQ0KK3sNCisgICAgaW50IGkgPSAwOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgaWYgKGkgPj0gbV9UZXh0TGlzdC5HZXRTaXplKCkgLSAxKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBDVGV4dEJveCogcFRoaXNUZXh0ID0gKENUZXh0Qm94KiltX1RleHRMaXN0LkdldEF0KGkpOw0KKyAgICAgICAgQ1RleHRCb3gqIHBOZXh0VGV4dCA9IChDVGV4dEJveCopbV9UZXh0TGlzdC5HZXRBdChpICsgMSk7DQorICAgICAgICBGWF9GTE9BVCBkeCA9IHBOZXh0VGV4dC0+bV9MZWZ0IC0gcFRoaXNUZXh0LT5tX1JpZ2h0Ow0KKyAgICAgICAgRlhfRkxPQVQgc3BhY2V3ID0gKHBUaGlzVGV4dC0+bV9TcGFjZVdpZHRoID09IDAuMCkgPw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgcE5leHRUZXh0LT5tX1NwYWNlV2lkdGggOiBwVGhpc1RleHQtPm1fU3BhY2VXaWR0aDsNCisgICAgICAgIGlmIChzcGFjZXcgPiAwLjAgJiYgZHggPCBzcGFjZXcgKiAyKSB7DQorICAgICAgICAgICAgcFRoaXNUZXh0LT5tX1JpZ2h0ID0gcE5leHRUZXh0LT5tX1JpZ2h0Ow0KKyAgICAgICAgICAgIGlmIChkeCA+IHNwYWNldyAqIDEuNSkgew0KKyAgICAgICAgICAgICAgICBwVGhpc1RleHQtPm1fVGV4dCArPSBMIiAgIjsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKGR4ID4gc3BhY2V3IC8gMykgew0KKyAgICAgICAgICAgICAgICBwVGhpc1RleHQtPm1fVGV4dCArPSBMJyAnOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwVGhpc1RleHQtPm1fVGV4dCArPSBwTmV4dFRleHQtPm1fVGV4dDsNCisgICAgICAgICAgICBwVGhpc1RleHQtPm1fU3BhY2VXaWR0aCA9IHBOZXh0VGV4dC0+bV9TcGFjZVdpZHRoID09IDAuMCA/DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXcgOiBwTmV4dFRleHQtPm1fU3BhY2VXaWR0aDsNCisgICAgICAgICAgICBtX1RleHRMaXN0LlJlbW92ZUF0KGkgKyAxKTsNCisgICAgICAgICAgICBkZWxldGUgcE5leHRUZXh0Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpICsrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1RleHRCYXNlTGluZTo6V3JpdGVPdXRwdXQoQ0ZYX1dpZGVTdHJpbmcmIHN0ciwgRlhfRkxPQVQgbGVmdHgsIEZYX0ZMT0FUIHBhZ2V3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpVGV4dFdpZHRoKQ0KK3sNCisgICAgaW50IGxhc3Rwb3MgPSAtMTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX1RleHRMaXN0LkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgQ1RleHRCb3gqIHBUZXh0ID0gKENUZXh0Qm94KiltX1RleHRMaXN0LkdldEF0KGkpOw0KKyAgICAgICAgaW50IHhwb3M7DQorICAgICAgICBpZiAocFRleHQtPm1fcENvbHVtbikgew0KKyAgICAgICAgICAgIHhwb3MgPSAoaW50KSgocFRleHQtPm1fcENvbHVtbi0+bV9BdmdQb3MgLSBsZWZ0eCkgKiBpVGV4dFdpZHRoIC8gcGFnZXdpZHRoICsgMC41KTsNCisgICAgICAgICAgICB4cG9zIC09IHBUZXh0LT5tX1RleHQuR2V0TGVuZ3RoKCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHhwb3MgPSAoaW50KSgocFRleHQtPm1fTGVmdCAtIGxlZnR4KSAqIGlUZXh0V2lkdGggLyBwYWdld2lkdGggKyAwLjUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHhwb3MgPD0gbGFzdHBvcykgew0KKyAgICAgICAgICAgIHhwb3MgPSBsYXN0cG9zICsgMTsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IGogPSBsYXN0cG9zICsgMTsgaiA8IHhwb3M7IGogKyspIHsNCisgICAgICAgICAgICBzdHIgKz0gJyAnOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgc1NyYyhwVGV4dC0+bV9UZXh0KTsNCisgICAgICAgIE5vcm1hbGl6ZVN0cmluZyhzU3JjKTsNCisgICAgICAgIHN0ciArPSBzU3JjOw0KKyAgICAgICAgc3RyICs9ICcgJzsNCisgICAgICAgIGxhc3Rwb3MgPSB4cG9zICsgcFRleHQtPm1fVGV4dC5HZXRMZW5ndGgoKTsNCisgICAgfQ0KK30NCit2b2lkIENUZXh0QmFzZUxpbmU6OkNvdW50Q2hhcnMoaW50JiBjb3VudCwgRlhfRkxPQVQmIHdpZHRoLCBpbnQmIG1pbmNoYXJzKQ0KK3sNCisgICAgbWluY2hhcnMgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fVGV4dExpc3QuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDVGV4dEJveCogcFRleHQgPSAoQ1RleHRCb3gqKW1fVGV4dExpc3QuR2V0QXQoaSk7DQorICAgICAgICBpZiAocFRleHQtPm1fUmlnaHQgLSBwVGV4dC0+bV9MZWZ0IDwgMC4wMDIpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGNvdW50ICs9IHBUZXh0LT5tX1RleHQuR2V0TGVuZ3RoKCk7DQorICAgICAgICB3aWR0aCArPSBwVGV4dC0+bV9SaWdodCAtIHBUZXh0LT5tX0xlZnQ7DQorICAgICAgICBtaW5jaGFycyArPSBwVGV4dC0+bV9UZXh0LkdldExlbmd0aCgpICsgMTsNCisgICAgfQ0KK30NCisjZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NQ0KK3N0YXRpYyB2b2lkIENoZWNrUm90YXRlKENQREZfUGFnZSYgcGFnZSwgQ0ZYX0Zsb2F0UmVjdCYgcGFnZV9iYm94KQ0KK3sNCisgICAgaW50IHRvdGFsX2NvdW50ID0gMCwgcm90YXRlZF9jb3VudFszXSA9IHswLCAwLCAwfTsNCisgICAgRlhfUE9TSVRJT04gcG9zID0gcGFnZS5HZXRGaXJzdE9iamVjdFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIENQREZfUGFnZU9iamVjdCogcE9iaiA9IHBhZ2UuR2V0TmV4dE9iamVjdChwb3MpOw0KKyAgICAgICAgaWYgKHBPYmotPm1fVHlwZSAhPSBQREZQQUdFX1RFWFQpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIHRvdGFsX2NvdW50ICsrOw0KKyAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dCA9IChDUERGX1RleHRPYmplY3QqKXBPYmo7DQorICAgICAgICBGWF9GTE9BVCBhbmdsZSA9IHBUZXh0LT5tX1RleHRTdGF0ZS5HZXRCYXNlbGluZUFuZ2xlKCk7DQorICAgICAgICBpZiAoYW5nbGUgPT0gMC4wKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpbnQgZGVncmVlID0gKGludCkoYW5nbGUgKiAxODAgLyBQSSArIDAuNSk7DQorICAgICAgICBpZiAoZGVncmVlICUgOTApIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChkZWdyZWUgPCAwKSB7DQorICAgICAgICAgICAgZGVncmVlICs9IDM2MDsNCisgICAgICAgIH0NCisgICAgICAgIGludCBpbmRleCA9IGRlZ3JlZSAvIDkwICUgMyAtIDE7DQorICAgICAgICBpZiAoaW5kZXggPCAwKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICByb3RhdGVkX2NvdW50W2luZGV4XSArKzsNCisgICAgfQ0KKyAgICBpZiAodG90YWxfY291bnQgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4Ow0KKyAgICBpZiAocm90YXRlZF9jb3VudFswXSA+IHRvdGFsX2NvdW50ICogMiAvIDMpIHsNCisgICAgICAgIG1hdHJpeC5TZXQoMCwgLTEsIDEsIDAsIDAsIHBhZ2UuR2V0UGFnZUhlaWdodCgpKTsNCisgICAgfSBlbHNlIGlmIChyb3RhdGVkX2NvdW50WzFdID4gdG90YWxfY291bnQgKiAyIC8gMykgew0KKyAgICAgICAgbWF0cml4LlNldCgtMSwgMCwgMCwgLTEsIHBhZ2UuR2V0UGFnZVdpZHRoKCksIHBhZ2UuR2V0UGFnZUhlaWdodCgpKTsNCisgICAgfSBlbHNlIGlmIChyb3RhdGVkX2NvdW50WzJdID4gdG90YWxfY291bnQgKiAyIC8gMykgew0KKyAgICAgICAgbWF0cml4LlNldCgwLCAxLCAtMSwgMCwgcGFnZS5HZXRQYWdlV2lkdGgoKSwgMCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcGFnZS5UcmFuc2Zvcm0obWF0cml4KTsNCisgICAgcGFnZV9iYm94LlRyYW5zZm9ybSgmbWF0cml4KTsNCit9DQordm9pZCBQREZfR2V0UGFnZVRleHRfVW5pY29kZShDRlhfV2lkZVN0cmluZ0FycmF5JiBsaW5lcywgQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpTWluV2lkdGgsIEZYX0RXT1JEIGZsYWdzKQ0KK3sNCisgICAgbGluZXMuUmVtb3ZlQWxsKCk7DQorICAgIGlmIChwUGFnZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9QYWdlIHBhZ2U7DQorICAgIHBhZ2UuTG9hZChwRG9jLCBwUGFnZSk7DQorICAgIENQREZfUGFyc2VPcHRpb25zIG9wdGlvbnM7DQorICAgIG9wdGlvbnMubV9iVGV4dE9ubHkgPSBUUlVFOw0KKyAgICBvcHRpb25zLm1fYlNlcGFyYXRlRm9ybSA9IEZBTFNFOw0KKyAgICBwYWdlLlBhcnNlQ29udGVudCgmb3B0aW9ucyk7DQorICAgIENGWF9GbG9hdFJlY3QgcGFnZV9iYm94ID0gcGFnZS5HZXRQYWdlQkJveCgpOw0KKyAgICBpZiAoZmxhZ3MgJiBQREYyVFhUX0FVVE9fUk9UQVRFKSB7DQorICAgICAgICBDaGVja1JvdGF0ZShwYWdlLCBwYWdlX2Jib3gpOw0KKyAgICB9DQorICAgIENUZXh0UGFnZSB0ZXh0czsNCisgICAgdGV4dHMubV9iQXV0b1dpZHRoID0gZmxhZ3MgJiBQREYyVFhUX0FVVE9fV0lEVEg7DQorICAgIHRleHRzLm1fYktlZXBDb2x1bW4gPSBmbGFncyAmIFBERjJUWFRfS0VFUF9DT0xVTU47DQorICAgIHRleHRzLm1fYkJyZWFrU3BhY2UgPSBUUlVFOw0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBwYWdlLkdldEZpcnN0T2JqZWN0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqZWN0ID0gcGFnZS5HZXROZXh0T2JqZWN0KHBvcyk7DQorICAgICAgICBpZiAoIShmbGFncyAmIFBERjJUWFRfSU5DTFVERV9JTlZJU0lCTEUpKSB7DQorICAgICAgICAgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0KHBPYmplY3QtPm1fTGVmdCwgcE9iamVjdC0+bV9Cb3R0b20sIHBPYmplY3QtPm1fUmlnaHQsIHBPYmplY3QtPm1fVG9wKTsNCisgICAgICAgICAgICBpZiAoIXBhZ2VfYmJveC5Db250YWlucyhyZWN0KSkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICB0ZXh0cy5Qcm9jZXNzT2JqZWN0KHBPYmplY3QpOw0KKyAgICB9DQorICAgIHRleHRzLldyaXRlT3V0cHV0KGxpbmVzLCBpTWluV2lkdGgpOw0KK30NCit2b2lkIFBERl9HZXRQYWdlVGV4dChDRlhfQnl0ZVN0cmluZ0FycmF5JiBsaW5lcywgQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZSwNCisgICAgICAgICAgICAgICAgICAgICBpbnQgaU1pbldpZHRoLCBGWF9EV09SRCBmbGFncykNCit7DQorICAgIGxpbmVzLlJlbW92ZUFsbCgpOw0KKyAgICBDRlhfV2lkZVN0cmluZ0FycmF5IHdsaW5lczsNCisgICAgUERGX0dldFBhZ2VUZXh0X1VuaWNvZGUod2xpbmVzLCBwRG9jLCBwUGFnZSwgaU1pbldpZHRoLCBmbGFncyk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd2xpbmVzLkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgd3N0ciA9IHdsaW5lc1tpXTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIHN0cjsNCisgICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgd3N0ci5HZXRMZW5ndGgoKTsgYyArKykgew0KKyAgICAgICAgICAgIHN0ciArPSBDaGFyRnJvbVVuaWNvZGVBbHQod3N0cltjXSwgRlhTWVNfR2V0QUNQKCksICI/Iik7DQorICAgICAgICB9DQorICAgICAgICBsaW5lcy5BZGQoc3RyKTsNCisgICAgfQ0KK30NCisjZW5kaWYNCitleHRlcm4gdm9pZCBfUERGX0dldFRleHRTdHJlYW1fVW5pY29kZShDRlhfV2lkZVRleHRCdWYmIGJ1ZmZlciwgQ1BERl9QYWdlT2JqZWN0cyogcFBhZ2UsIEZYX0JPT0wgYlVzZUxGLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9QdHJBcnJheSogcE9iakFycmF5KTsNCit2b2lkIFBERl9HZXRUZXh0U3RyZWFtX1VuaWNvZGUoQ0ZYX1dpZGVUZXh0QnVmJiBidWZmZXIsIENQREZfRG9jdW1lbnQqIHBEb2MsIENQREZfRGljdGlvbmFyeSogcFBhZ2UsIEZYX0RXT1JEIGZsYWdzKQ0KK3sNCisgICAgYnVmZmVyLkVzdGltYXRlU2l6ZSgwLCAxMDI0MCk7DQorICAgIENQREZfUGFnZSBwYWdlOw0KKyAgICBwYWdlLkxvYWQocERvYywgcFBhZ2UpOw0KKyAgICBDUERGX1BhcnNlT3B0aW9ucyBvcHRpb25zOw0KKyAgICBvcHRpb25zLm1fYlRleHRPbmx5ID0gVFJVRTsNCisgICAgb3B0aW9ucy5tX2JTZXBhcmF0ZUZvcm0gPSBGQUxTRTsNCisgICAgcGFnZS5QYXJzZUNvbnRlbnQoJm9wdGlvbnMpOw0KKyAgICBfUERGX0dldFRleHRTdHJlYW1fVW5pY29kZShidWZmZXIsICZwYWdlLCBUUlVFLCBOVUxMKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZnRleHQvZnBkZl90ZXh0X2ludC5jcHAgYi9jb3JlL3NyYy9mcGRmdGV4dC9mcGRmX3RleHRfaW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmIwNDQyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZnRleHQvZnBkZl90ZXh0X2ludC5jcHAKQEAgLTAsMCArMSwyODA0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcmVzb3VyY2UuaCINCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcGRmYXBpL2ZwZGZfcGFnZW9iai5oIg0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZ0ZXh0L2ZwZGZfdGV4dC5oIg0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlLmgiDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX21vZHVsZS5oIg0KKyNpbmNsdWRlIDxjdHlwZS5oPg0KKyNpbmNsdWRlICJ0ZXh0X2ludC5oIg0KK0ZYX0JPT0wgX0lzSWdub3JlU3BhY2VDaGFyYWN0ZXIoRlhfV0NIQVIgY3VyQ2hhcikNCit7DQorICAgIGlmKGN1ckNoYXIgPCAyNTUgKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKCAoY3VyQ2hhciA+PSAweDA2MDAgJiYgY3VyQ2hhciA8PSAweDA2RkYpDQorICAgICAgICAgICAgfHwgKGN1ckNoYXIgPj0gMHhGRTcwICYmIGN1ckNoYXIgPD0gMHhGRUZGKQ0KKyAgICAgICAgICAgIHx8IChjdXJDaGFyID49IDB4RkI1MCAmJiBjdXJDaGFyIDw9IDB4RkRGRikNCisgICAgICAgICAgICB8fCAoY3VyQ2hhciA+PSAweDA0MDAgJiYgY3VyQ2hhciA8PSAweDA0RkYpDQorICAgICAgICAgICAgfHwgKGN1ckNoYXIgPj0gMHgwNTAwICYmIGN1ckNoYXIgPD0gMHgwNTJGKQ0KKyAgICAgICAgICAgIHx8IChjdXJDaGFyID49IDB4QTY0MCAmJiBjdXJDaGFyIDw9IDB4QTY5RikNCisgICAgICAgICAgICB8fCAoY3VyQ2hhciA+PSAweDJERTAgJiYgY3VyQ2hhciA8PSAweDJERkYpDQorICAgICAgICAgICAgfHwgY3VyQ2hhciA9PSA4NDY3DQorICAgICAgICAgICAgfHwgKGN1ckNoYXIgPj0gMHgyMDAwICYmIGN1ckNoYXIgPD0gMHgyMDZGKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDUERGVGV4dF9QYXJzZU9wdGlvbnM6OkNQREZUZXh0X1BhcnNlT3B0aW9ucygpDQorICAgIDogbV9iR2V0Q2hhckNvZGVPbmx5KEZBTFNFKSwgbV9iTm9ybWFsaXplT2JqcyhUUlVFKSwgbV9iT3V0cHV0SHlwaGVuKEZBTFNFKQ0KK3sNCit9DQorSVBERl9UZXh0UGFnZSogSVBERl9UZXh0UGFnZTo6Q3JlYXRlVGV4dFBhZ2UoY29uc3QgQ1BERl9QYWdlKiBwUGFnZSwgQ1BERlRleHRfUGFyc2VPcHRpb25zIFBhcnNlck9wdGlvbnMpDQorew0KKyAgICBDUERGX1RleHRQYWdlKiBwVGV4dFBhZ2VFeCA9IEZYX05FVyBDUERGX1RleHRQYWdlKHBQYWdlLCBQYXJzZXJPcHRpb25zKTsNCisgICAgcmV0dXJuIHBUZXh0UGFnZUV4Ow0KK30NCitJUERGX1RleHRQYWdlKiBJUERGX1RleHRQYWdlOjpDcmVhdGVUZXh0UGFnZShjb25zdCBDUERGX1BhZ2UqIHBQYWdlLCBpbnQgZmxhZ3MpDQorew0KKyAgICBDUERGX1RleHRQYWdlKiBwVGV4dFBhZ2UgPSBGWF9ORVcgQ1BERl9UZXh0UGFnZShwUGFnZSwgZmxhZ3MpOw0KKyAgICByZXR1cm4JcFRleHRQYWdlOw0KK30NCitJUERGX1RleHRQYWdlKglJUERGX1RleHRQYWdlOjpDcmVhdGVUZXh0UGFnZShjb25zdCBDUERGX1BhZ2VPYmplY3RzKiBwT2JqcywgaW50IGZsYWdzKQ0KK3sNCisgICAgQ1BERl9UZXh0UGFnZSogcFRleHRQYWdlID0gRlhfTkVXIENQREZfVGV4dFBhZ2UocE9ianMsIGZsYWdzKTsNCisgICAgcmV0dXJuCXBUZXh0UGFnZTsNCit9DQorSVBERl9UZXh0UGFnZUZpbmQqCUlQREZfVGV4dFBhZ2VGaW5kOjpDcmVhdGVQYWdlRmluZChjb25zdCBJUERGX1RleHRQYWdlKiBwVGV4dFBhZ2UpDQorew0KKyAgICBpZiAoIXBUZXh0UGFnZSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIEZYX05FVyBDUERGX1RleHRQYWdlRmluZChwVGV4dFBhZ2UpOw0KK30NCitJUERGX0xpbmtFeHRyYWN0KiBJUERGX0xpbmtFeHRyYWN0OjpDcmVhdGVMaW5rRXh0cmFjdCgpDQorew0KKyAgICByZXR1cm4gRlhfTkVXIENQREZfTGlua0V4dHJhY3QoKTsNCit9DQorI2RlZmluZSAgVEVYVF9CTEFOS19DSEFSCQlMJyAnDQorI2RlZmluZSAgVEVYVF9MSU5FRkVFRF9DSEFSCQlMJ1xuJw0KKyNkZWZpbmUJIFRFWFRfUkVUVVJOX0NIQVIJCUwnXHInDQorI2RlZmluZSAgVEVYVF9FTVBUWQkJCQlMIiINCisjZGVmaW5lICBURVhUX0JMQU5LCQkJCUwiICINCisjZGVmaW5lICBURVhUX1JFVFVSTl9MSU5FRkVFRAlMIlxyXG4iDQorI2RlZmluZSAgVEVYVF9MSU5FRkVFRAkJCUwiXG4iDQorI2RlZmluZQkgVEVYVF9DSEFSUkFUSU9fR0FQREVMVEEJMC4wNzANCitDUERGX1RleHRQYWdlOjpDUERGX1RleHRQYWdlKGNvbnN0IENQREZfUGFnZSogcFBhZ2UsIGludCBmbGFncykNCisgICAgOiBtX3BQcmVUZXh0T2JqKE5VTEwpLA0KKyAgICAgIG1fSXNQYXJzZXJlZChGQUxTRSksDQorICAgICAgbV9jaGFyTGlzdCg1MTIpLA0KKyAgICAgIG1fVGVtcENoYXJMaXN0KDUwKSwNCisgICAgICBtX1RleHRsaW5lRGlyKC0xKSwNCisgICAgICBtX0N1cmxpbmVSZWN0KDAsIDAsIDAsIDApDQorew0KKyAgICBtX3BQYWdlID0gcFBhZ2U7DQorICAgIG1fcGFyc2VyZmxhZyA9IGZsYWdzOw0KKyAgICBtX1RleHRCdWYuRXN0aW1hdGVTaXplKDAsIDEwMjQwKTsNCisgICAgcFBhZ2UtPkdldERpc3BsYXlNYXRyaXgobV9EaXNwbGF5TWF0cml4LCAwLCAwLCAoaW50KSBwUGFnZS0+R2V0UGFnZVdpZHRoKCksIChpbnQpcFBhZ2UtPkdldFBhZ2VIZWlnaHQoKSwgMCk7DQorfQ0KK0NQREZfVGV4dFBhZ2U6OkNQREZfVGV4dFBhZ2UoY29uc3QgQ1BERl9QYWdlKiBwUGFnZSwgQ1BERlRleHRfUGFyc2VPcHRpb25zIFBhcnNlck9wdGlvbnMpDQorICAgIDogbV9wUHJlVGV4dE9iaihOVUxMKQ0KKyAgICAsIG1fSXNQYXJzZXJlZChGQUxTRSkNCisgICAgLCBtX2NoYXJMaXN0KDUxMikNCisgICAgLCBtX1RlbXBDaGFyTGlzdCg1MCkNCisgICAgLCBtX1RleHRsaW5lRGlyKC0xKQ0KKyAgICAsIG1fQ3VybGluZVJlY3QoMCwgMCwgMCwgMCkNCisgICAgLCBtX1BhcnNlT3B0aW9ucyhQYXJzZXJPcHRpb25zKQ0KK3sNCisgICAgbV9wUGFnZSA9IHBQYWdlOw0KKyAgICBtX3BhcnNlcmZsYWcgPSAwOw0KKyAgICBtX1RleHRCdWYuRXN0aW1hdGVTaXplKDAsIDEwMjQwKTsNCisgICAgcFBhZ2UtPkdldERpc3BsYXlNYXRyaXgobV9EaXNwbGF5TWF0cml4LCAwLCAwLCAoaW50KSBwUGFnZS0+R2V0UGFnZVdpZHRoKCksIChpbnQpcFBhZ2UtPkdldFBhZ2VIZWlnaHQoKSwgMCk7DQorfQ0KK0NQREZfVGV4dFBhZ2U6OkNQREZfVGV4dFBhZ2UoY29uc3QgQ1BERl9QYWdlT2JqZWN0cyogcFBhZ2UsIGludCBmbGFncykNCisgICAgOiBtX3BQcmVUZXh0T2JqKE5VTEwpLA0KKyAgICAgIG1fSXNQYXJzZXJlZChGQUxTRSksDQorICAgICAgbV9jaGFyTGlzdCg1MTIpLA0KKyAgICAgIG1fVGVtcENoYXJMaXN0KDUwKSwNCisgICAgICBtX1RleHRsaW5lRGlyKC0xKSwNCisgICAgICBtX0N1cmxpbmVSZWN0KDAsIDAsIDAsIDApDQorew0KKyAgICBtX3BQYWdlID0gcFBhZ2U7DQorICAgIG1fcGFyc2VyZmxhZyA9IGZsYWdzOw0KKyAgICBtX1RleHRCdWYuRXN0aW1hdGVTaXplKDAsIDEwMjQwKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCBwYWdlUmVjdCA9IHBQYWdlLT5DYWxjQm91bmRpbmdCb3goKTsNCisgICAgbV9EaXNwbGF5TWF0cml4ID0gQ0ZYX0FmZmluZU1hdHJpeCgxLCAwLCAwLCAtMSwgcGFnZVJlY3QucmlnaHQsIHBhZ2VSZWN0LnRvcCk7DQorfQ0KK3ZvaWQgQ1BERl9UZXh0UGFnZTo6Tm9ybWFsaXplT2JqZWN0cyhGWF9CT09MIGJOb3JtYWxpemUpDQorew0KKyAgICBtX1BhcnNlT3B0aW9ucy5tX2JOb3JtYWxpemVPYmpzID0gYk5vcm1hbGl6ZTsNCit9DQorRlhfQk9PTCBDUERGX1RleHRQYWdlOjpJc0NvbnRyb2xDaGFyKFBBR0VDSEFSX0lORk8qIHBDaGFySW5mbykNCit7DQorICAgIGlmKCFwQ2hhckluZm8pIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBzd2l0Y2gocENoYXJJbmZvLT5tX1VuaWNvZGUpIHsNCisgICAgICAgIGNhc2UgMHgyOg0KKyAgICAgICAgY2FzZSAweDM6DQorICAgICAgICBjYXNlIDB4OTM6DQorICAgICAgICBjYXNlIDB4OTQ6DQorICAgICAgICBjYXNlIDB4OTY6DQorICAgICAgICBjYXNlIDB4OTc6DQorICAgICAgICBjYXNlIDB4OTg6DQorICAgICAgICBjYXNlIDB4ZmZmZToNCisgICAgICAgICAgICBpZihwQ2hhckluZm8tPm1fRmxhZyA9PSBGUERGVEVYVF9DSEFSX0hZUEhFTikgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX1RleHRQYWdlOjpQYXJzZVRleHRQYWdlKCkNCit7DQorICAgIGlmICghbV9wUGFnZSkgew0KKyAgICAgICAgbV9Jc1BhcnNlcmVkID0gRkFMU0U7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9Jc1BhcnNlcmVkID0gRkFMU0U7DQorICAgIG1fVGV4dEJ1Zi5DbGVhcigpOw0KKyAgICBtX2NoYXJMaXN0LlJlbW92ZUFsbCgpOw0KKyAgICBtX3BQcmVUZXh0T2JqID0gTlVMTDsNCisgICAgUHJvY2Vzc09iamVjdCgpOw0KKyAgICBtX0lzUGFyc2VyZWQgPSBUUlVFOw0KKyAgICBpZighbV9QYXJzZU9wdGlvbnMubV9iR2V0Q2hhckNvZGVPbmx5KSB7DQorICAgICAgICBtX0NoYXJJbmRleC5SZW1vdmVBbGwoKTsNCisgICAgICAgIGludCBuQ291bnQgPSBtX2NoYXJMaXN0LkdldFNpemUoKTsNCisgICAgICAgIGlmKG5Db3VudCkgew0KKyAgICAgICAgICAgIG1fQ2hhckluZGV4LkFkZCgwKTsNCisgICAgICAgIH0NCisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuQ291bnQ7IGkrKykgew0KKyAgICAgICAgICAgIGludCBpbmRleFNpemUgPSBtX0NoYXJJbmRleC5HZXRTaXplKCk7DQorICAgICAgICAgICAgRlhfQk9PTCBiTm9ybWFsID0gRkFMU0U7DQorICAgICAgICAgICAgUEFHRUNIQVJfSU5GTyBjaGFyaW5mbyA9ICooUEFHRUNIQVJfSU5GTyopbV9jaGFyTGlzdC5HZXRBdChpKTsNCisgICAgICAgICAgICBpZihjaGFyaW5mby5tX0ZsYWcgPT0gRlBERlRFWFRfQ0hBUl9HRU5FUkFURUQpIHsNCisgICAgICAgICAgICAgICAgYk5vcm1hbCA9IFRSVUU7DQorICAgICAgICAgICAgfQ0KKyNpZmRlZiBGT1hJVF9DSFJPTUVfQlVJTEQNCisgICAgICAgICAgICBlbHNlIGlmKGNoYXJpbmZvLm1fVW5pY29kZSA9PSAwIHx8IElzQ29udHJvbENoYXIoJmNoYXJpbmZvKSkNCisjZWxzZQ0KKyAgICAgICAgICAgIGVsc2UgaWYoY2hhcmluZm8ubV9Vbmljb2RlID09IDApDQorI2VuZGlmDQorICAgICAgICAgICAgICAgIGJOb3JtYWwgPSBGQUxTRTsNCisgICAgICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgICAgYk5vcm1hbCA9IFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmKGJOb3JtYWwpIHsNCisgICAgICAgICAgICAgICAgaWYoaW5kZXhTaXplICUgMikgew0KKyAgICAgICAgICAgICAgICAgICAgbV9DaGFySW5kZXguQWRkKDEpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgaWYoaW5kZXhTaXplIDw9IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fQ2hhckluZGV4LlNldEF0KGluZGV4U2l6ZSAtIDEsIG1fQ2hhckluZGV4LkdldEF0KGluZGV4U2l6ZSAtIDEpICsgMSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZihpbmRleFNpemUgJSAyKSB7DQorICAgICAgICAgICAgICAgICAgICBpZihpbmRleFNpemUgPD0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9DaGFySW5kZXguU2V0QXQoaW5kZXhTaXplIC0gMSwgaSArIDEpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbV9DaGFySW5kZXguQWRkKGkgKyAxKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGludCBpbmRleFNpemUgPSBtX0NoYXJJbmRleC5HZXRTaXplKCk7DQorICAgICAgICBpZihpbmRleFNpemUgJSAyKSB7DQorICAgICAgICAgICAgbV9DaGFySW5kZXguUmVtb3ZlQXQoaW5kZXhTaXplIC0gMSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2ludAlDUERGX1RleHRQYWdlOjpDb3VudENoYXJzKCkgY29uc3QNCit7DQorICAgIGlmKG1fUGFyc2VPcHRpb25zLm1fYkdldENoYXJDb2RlT25seSkgew0KKyAgICAgICAgcmV0dXJuIG1fVGV4dEJ1Zi5HZXRTaXplKCk7DQorICAgIH0NCisgICAgcmV0dXJuIG1fY2hhckxpc3QuR2V0U2l6ZSgpOw0KK30NCitpbnQgQ1BERl9UZXh0UGFnZTo6Q2hhckluZGV4RnJvbVRleHRJbmRleChpbnQgVGV4dEluZGV4KSBjb25zdA0KK3sNCisgICAgaW50IGluZGV4U2l6ZSA9IG1fQ2hhckluZGV4LkdldFNpemUoKTsNCisgICAgaW50IGNvdW50ID0gMDsNCisgICAgZm9yKGludCBpID0gMDsgaSA8IGluZGV4U2l6ZTsgaSArPSAyKSB7DQorICAgICAgICBjb3VudCArPSBtX0NoYXJJbmRleC5HZXRBdChpICsgMSk7DQorICAgICAgICBpZihjb3VudCA+IFRleHRJbmRleCkgew0KKyAgICAgICAgICAgIHJldHVybiAJVGV4dEluZGV4IC0gY291bnQgKyBtX0NoYXJJbmRleC5HZXRBdChpICsgMSkgKyBtX0NoYXJJbmRleC5HZXRBdChpKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gLTE7DQorfQ0KK2ludCBDUERGX1RleHRQYWdlOjpUZXh0SW5kZXhGcm9tQ2hhckluZGV4KGludCBDaGFySW5kZXgpIGNvbnN0DQorew0KKyAgICBpbnQgaW5kZXhTaXplID0gbV9DaGFySW5kZXguR2V0U2l6ZSgpOw0KKyAgICBpbnQgY291bnQgPSAwOw0KKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgaW5kZXhTaXplOyBpICs9IDIpIHsNCisgICAgICAgIGNvdW50ICs9IG1fQ2hhckluZGV4LkdldEF0KGkgKyAxKTsNCisgICAgICAgIGlmKG1fQ2hhckluZGV4LkdldEF0KGkgKyAxKSArIG1fQ2hhckluZGV4LkdldEF0KGkpID4gQ2hhckluZGV4KSB7DQorICAgICAgICAgICAgaWYoQ2hhckluZGV4IC0gbV9DaGFySW5kZXguR2V0QXQoaSkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIAlDaGFySW5kZXggLSBtX0NoYXJJbmRleC5HZXRBdChpKSArIGNvdW50IC0gbV9DaGFySW5kZXguR2V0QXQoaSArIDEpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAtMTsNCit9DQordm9pZCBDUERGX1RleHRQYWdlOjpHZXRSZWN0QXJyYXkoaW50IHN0YXJ0LCBpbnQgbkNvdW50LCBDRlhfUmVjdEFycmF5JiByZWN0QXJyYXkpIGNvbnN0DQorew0KKyAgICBpZihtX1BhcnNlT3B0aW9ucy5tX2JHZXRDaGFyQ29kZU9ubHkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZihzdGFydCA8IDAgfHwgbkNvdW50ID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoIW1fSXNQYXJzZXJlZCkJew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIFBBR0VDSEFSX0lORk8JCWluZm9fY3VyY2hhcjsNCisgICAgQ1BERl9UZXh0T2JqZWN0KglwQ3VyT2JqID0gTlVMTDsNCisgICAgQ0ZYX0Zsb2F0UmVjdAkJcmVjdDsNCisgICAgaW50CQkJCQljdXJQb3MgPSBzdGFydDsNCisgICAgRlhfQk9PTAkJCQlmbGFnTmV3UmVjdCA9IFRSVUU7DQorICAgIGlmIChuQ291bnQgKyBzdGFydCA+IG1fY2hhckxpc3QuR2V0U2l6ZSgpIHx8IG5Db3VudCA9PSAtMSkgew0KKyAgICAgICAgbkNvdW50ID0gbV9jaGFyTGlzdC5HZXRTaXplKCkgLSBzdGFydDsNCisgICAgfQ0KKyAgICB3aGlsZSAobkNvdW50LS0pIHsNCisgICAgICAgIGluZm9fY3VyY2hhciA9ICooUEFHRUNIQVJfSU5GTyopbV9jaGFyTGlzdC5HZXRBdChjdXJQb3MrKyk7DQorICAgICAgICBpZiAoaW5mb19jdXJjaGFyLm1fRmxhZyA9PSBGUERGVEVYVF9DSEFSX0dFTkVSQVRFRCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoaW5mb19jdXJjaGFyLm1fQ2hhckJveC5XaWR0aCgpIDwgMC4wMSB8fCBpbmZvX2N1cmNoYXIubV9DaGFyQm94LkhlaWdodCgpIDwgMC4wMSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoIXBDdXJPYmopIHsNCisgICAgICAgICAgICBwQ3VyT2JqID0gaW5mb19jdXJjaGFyLm1fcFRleHRPYmo7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEN1ck9iaiAhPSBpbmZvX2N1cmNoYXIubV9wVGV4dE9iaikgew0KKyAgICAgICAgICAgIHJlY3RBcnJheS5BZGQocmVjdCk7DQorICAgICAgICAgICAgcEN1ck9iaiA9IGluZm9fY3VyY2hhci5tX3BUZXh0T2JqOw0KKyAgICAgICAgICAgIGZsYWdOZXdSZWN0ID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChmbGFnTmV3UmVjdCkgew0KKyAgICAgICAgICAgIEZYX0ZMT0FUIG9yZ1ggPSBpbmZvX2N1cmNoYXIubV9PcmlnaW5YLCBvcmdZID0gaW5mb19jdXJjaGFyLm1fT3JpZ2luWTsNCisgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeCwgbWF0cml4X3JldmVyc2U7DQorICAgICAgICAgICAgaW5mb19jdXJjaGFyLm1fcFRleHRPYmotPkdldFRleHRNYXRyaXgoJm1hdHJpeCk7DQorICAgICAgICAgICAgbWF0cml4LkNvbmNhdChpbmZvX2N1cmNoYXIubV9NYXRyaXgpOw0KKyAgICAgICAgICAgIG1hdHJpeF9yZXZlcnNlLlNldFJldmVyc2UobWF0cml4KTsNCisgICAgICAgICAgICBtYXRyaXhfcmV2ZXJzZS5UcmFuc2Zvcm0ob3JnWCwgb3JnWSk7DQorICAgICAgICAgICAgcmVjdC5sZWZ0ID0gaW5mb19jdXJjaGFyLm1fQ2hhckJveC5sZWZ0Ow0KKyAgICAgICAgICAgIHJlY3QucmlnaHQgPSBpbmZvX2N1cmNoYXIubV9DaGFyQm94LnJpZ2h0Ow0KKyAgICAgICAgICAgIGlmIChwQ3VyT2JqLT5HZXRGb250KCktPkdldFR5cGVEZXNjZW50KCkpIHsNCisgICAgICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBvcmdZICsgcEN1ck9iai0+R2V0Rm9udCgpLT5HZXRUeXBlRGVzY2VudCgpICogcEN1ck9iai0+R2V0Rm9udFNpemUoKSAvIDEwMDA7DQorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHhQb3NUZW1wID0gb3JnWDsNCisgICAgICAgICAgICAgICAgbWF0cml4LlRyYW5zZm9ybSh4UG9zVGVtcCwgcmVjdC5ib3R0b20pOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJlY3QuYm90dG9tID0gaW5mb19jdXJjaGFyLm1fQ2hhckJveC5ib3R0b207DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwQ3VyT2JqLT5HZXRGb250KCktPkdldFR5cGVBc2NlbnQoKSkgew0KKyAgICAgICAgICAgICAgICByZWN0LnRvcCA9IG9yZ1kgKyBwQ3VyT2JqLT5HZXRGb250KCktPkdldFR5cGVBc2NlbnQoKSAqIHBDdXJPYmotPkdldEZvbnRTaXplKCkgLyAxMDAwOw0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCB4UG9zVGVtcCA9IG9yZ1ggKyBHZXRDaGFyV2lkdGgoaW5mb19jdXJjaGFyLm1fQ2hhckNvZGUsIHBDdXJPYmotPkdldEZvbnQoKSkgKiBwQ3VyT2JqLT5HZXRGb250U2l6ZSgpIC8gMTAwMDsNCisgICAgICAgICAgICAgICAgbWF0cml4LlRyYW5zZm9ybSh4UG9zVGVtcCwgcmVjdC50b3ApOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJlY3QudG9wID0gaW5mb19jdXJjaGFyLm1fQ2hhckJveC50b3A7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZsYWdOZXdSZWN0ID0gRkFMU0U7DQorICAgICAgICAgICAgcmVjdCA9IGluZm9fY3VyY2hhci5tX0NoYXJCb3g7DQorICAgICAgICAgICAgcmVjdC5Ob3JtYWxpemUoKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaW5mb19jdXJjaGFyLm1fQ2hhckJveC5Ob3JtYWxpemUoKTsNCisgICAgICAgICAgICBpZiAocmVjdC5sZWZ0ID4gaW5mb19jdXJjaGFyLm1fQ2hhckJveC5sZWZ0KSB7DQorICAgICAgICAgICAgICAgIHJlY3QubGVmdCA9IGluZm9fY3VyY2hhci5tX0NoYXJCb3gubGVmdDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHJlY3QucmlnaHQgPCBpbmZvX2N1cmNoYXIubV9DaGFyQm94LnJpZ2h0KSB7DQorICAgICAgICAgICAgICAgIHJlY3QucmlnaHQgPSBpbmZvX2N1cmNoYXIubV9DaGFyQm94LnJpZ2h0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoIHJlY3QudG9wIDwgaW5mb19jdXJjaGFyLm1fQ2hhckJveC50b3ApIHsNCisgICAgICAgICAgICAgICAgcmVjdC50b3AgPSBpbmZvX2N1cmNoYXIubV9DaGFyQm94LnRvcDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHJlY3QuYm90dG9tID4gaW5mb19jdXJjaGFyLm1fQ2hhckJveC5ib3R0b20pIHsNCisgICAgICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBpbmZvX2N1cmNoYXIubV9DaGFyQm94LmJvdHRvbTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmVjdEFycmF5LkFkZChyZWN0KTsNCisgICAgcmV0dXJuOw0KK30NCitpbnQgQ1BERl9UZXh0UGFnZTo6R2V0SW5kZXhBdFBvcyhDUERGX1BvaW50IHBvaW50ICwgRlhfRkxPQVQgeFRvcmVsYW5jZSwgRlhfRkxPQVQgeVRvcmVsYW5jZSkgY29uc3QNCit7DQorICAgIGlmKG1fUGFyc2VPcHRpb25zLm1fYkdldENoYXJDb2RlT25seSkgew0KKyAgICAgICAgcmV0dXJuIC0zOw0KKyAgICB9DQorICAgIGlmICghbV9Jc1BhcnNlcmVkKQl7DQorICAgICAgICByZXR1cm4JLTM7DQorICAgIH0NCisgICAgRlhfRkxPQVQgZGlzdGFuY2UgPSAwOw0KKyAgICBpbnQgcG9zID0gMDsNCisgICAgaW50IE5lYXJQb3MgPSAtMTsNCisgICAgZG91YmxlIHhkaWYgPSA1MDAwLCB5ZGlmID0gNTAwMDsNCisgICAgd2hpbGUocG9zIDwgbV9jaGFyTGlzdC5HZXRTaXplKCkpIHsNCisgICAgICAgIFBBR0VDSEFSX0lORk8gY2hhcmluZm8gPSAqKFBBR0VDSEFSX0lORk8qKShtX2NoYXJMaXN0LkdldEF0KHBvcykpOw0KKyAgICAgICAgQ0ZYX0Zsb2F0UmVjdCBjaGFycmVjdCA9IGNoYXJpbmZvLm1fQ2hhckJveDsNCisgICAgICAgIGlmIChjaGFycmVjdC5Db250YWlucyhwb2ludC54LCBwb2ludC55KSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHhUb3JlbGFuY2UgPiAwIHx8IHlUb3JlbGFuY2UgPiAwKSB7DQorICAgICAgICAgICAgQ0ZYX0Zsb2F0UmVjdCBjaGFyUmVjdEV4dDsNCisgICAgICAgICAgICBjaGFycmVjdC5Ob3JtYWxpemUoKTsNCisgICAgICAgICAgICBjaGFyUmVjdEV4dC5sZWZ0ID0gY2hhcnJlY3QubGVmdCAtIHhUb3JlbGFuY2UgLyAyOw0KKyAgICAgICAgICAgIGNoYXJSZWN0RXh0LnJpZ2h0ID0gY2hhcnJlY3QucmlnaHQgKyB4VG9yZWxhbmNlIC8gMjsNCisgICAgICAgICAgICBjaGFyUmVjdEV4dC50b3AgPSBjaGFycmVjdC50b3AgKyB5VG9yZWxhbmNlIC8gMjsNCisgICAgICAgICAgICBjaGFyUmVjdEV4dC5ib3R0b20gPSBjaGFycmVjdC5ib3R0b20gLSB5VG9yZWxhbmNlIC8gMjsNCisgICAgICAgICAgICBpZiAoY2hhclJlY3RFeHQuQ29udGFpbnMocG9pbnQueCwgcG9pbnQueSkpIHsNCisgICAgICAgICAgICAgICAgZG91YmxlIGN1clhkaWYsIGN1cllkaWY7DQorICAgICAgICAgICAgICAgIGN1clhkaWYgPSBGWFNZU19mYWJzKHBvaW50LnggLSBjaGFycmVjdC5sZWZ0KSA8IEZYU1lTX2ZhYnMocG9pbnQueCAtIGNoYXJyZWN0LnJpZ2h0KSA/IEZYU1lTX2ZhYnMocG9pbnQueCAtIGNoYXJyZWN0LmxlZnQpIDogRlhTWVNfZmFicyhwb2ludC54IC0gY2hhcnJlY3QucmlnaHQpOw0KKyAgICAgICAgICAgICAgICBjdXJZZGlmID0gRlhTWVNfZmFicyhwb2ludC55IC0gY2hhcnJlY3QuYm90dG9tKSA8IEZYU1lTX2ZhYnMocG9pbnQueSAtIGNoYXJyZWN0LnRvcAkpID8gRlhTWVNfZmFicyhwb2ludC55IC0gY2hhcnJlY3QuYm90dG9tKSA6IEZYU1lTX2ZhYnMocG9pbnQueSAtIGNoYXJyZWN0LnRvcCk7DQorICAgICAgICAgICAgICAgIGlmIChjdXJZZGlmICsgY3VyWGRpZiA8IHhkaWYgKyB5ZGlmKSB7DQorICAgICAgICAgICAgICAgICAgICB5ZGlmID0gY3VyWWRpZjsNCisgICAgICAgICAgICAgICAgICAgIHhkaWYgPSBjdXJYZGlmOw0KKyAgICAgICAgICAgICAgICAgICAgTmVhclBvcyA9IHBvczsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgICsrcG9zOw0KKyAgICB9DQorICAgIGlmIChwb3MgPj0gbV9jaGFyTGlzdC5HZXRTaXplKCkpIHsNCisgICAgICAgIHBvcyA9IE5lYXJQb3M7DQorICAgIH0NCisgICAgcmV0dXJuIHBvczsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9UZXh0UGFnZTo6R2V0VGV4dEJ5UmVjdChDRlhfRmxvYXRSZWN0IHJlY3QpIGNvbnN0DQorew0KKyAgICBDRlhfV2lkZVN0cmluZyBzdHJUZXh0Ow0KKyAgICBpZihtX1BhcnNlT3B0aW9ucy5tX2JHZXRDaGFyQ29kZU9ubHkgfHwgIW1fSXNQYXJzZXJlZCkgew0KKyAgICAgICAgcmV0dXJuIHN0clRleHQ7DQorICAgIH0NCisgICAgaW50IG5Db3VudCA9IG1fY2hhckxpc3QuR2V0U2l6ZSgpOw0KKyAgICBpbnQgcG9zID0gMDsNCisgICAgRlhfRkxPQVQgcG9zeSA9IDA7DQorICAgIEZYX0JPT0wgSXNDb250YWluUHJlQ2hhciA9IEZBTFNFOw0KKyAgICBGWF9CT09MCUlTQWRkTGluZUZlZWQgPSBGQUxTRTsNCisgICAgd2hpbGUgKHBvcyA8IG5Db3VudCkgew0KKyAgICAgICAgUEFHRUNIQVJfSU5GTyBjaGFyaW5mbyA9ICooUEFHRUNIQVJfSU5GTyopbV9jaGFyTGlzdC5HZXRBdChwb3MrKyk7DQorICAgICAgICBpZiAoSXNSZWN0SW50ZXJzZWN0KHJlY3QsIGNoYXJpbmZvLm1fQ2hhckJveCkpIHsNCisgICAgICAgICAgICBpZiAoRlhTWVNfZmFicyhwb3N5IC0gY2hhcmluZm8ubV9PcmlnaW5ZKSA+IDAgJiYgIUlzQ29udGFpblByZUNoYXIgJiYgSVNBZGRMaW5lRmVlZCkgew0KKyAgICAgICAgICAgICAgICBwb3N5ID0gY2hhcmluZm8ubV9PcmlnaW5ZOw0KKyAgICAgICAgICAgICAgICBpZiAoc3RyVGV4dC5HZXRMZW5ndGgoKSA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHN0clRleHQgKz0gTCJcclxuIjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBJc0NvbnRhaW5QcmVDaGFyID0gVFJVRTsNCisgICAgICAgICAgICBJU0FkZExpbmVGZWVkID0gRkFMU0U7DQorICAgICAgICAgICAgaWYgKGNoYXJpbmZvLm1fVW5pY29kZSkgew0KKyAgICAgICAgICAgICAgICBzdHJUZXh0ICs9IGNoYXJpbmZvLm1fVW5pY29kZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKGNoYXJpbmZvLm1fVW5pY29kZSA9PSAzMikgew0KKyAgICAgICAgICAgIGlmIChJc0NvbnRhaW5QcmVDaGFyICYmIGNoYXJpbmZvLm1fVW5pY29kZSkgew0KKyAgICAgICAgICAgICAgICBzdHJUZXh0ICs9IGNoYXJpbmZvLm1fVW5pY29kZTsNCisgICAgICAgICAgICAgICAgSXNDb250YWluUHJlQ2hhciA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICBJU0FkZExpbmVGZWVkID0gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBJc0NvbnRhaW5QcmVDaGFyID0gRkFMU0U7DQorICAgICAgICAgICAgSVNBZGRMaW5lRmVlZCA9IFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHN0clRleHQ7DQorfQ0KK3ZvaWQgQ1BERl9UZXh0UGFnZTo6R2V0UmVjdHNBcnJheUJ5UmVjdChDRlhfRmxvYXRSZWN0IHJlY3QsIENGWF9SZWN0QXJyYXkmIHJlc1JlY3RBcnJheSkgY29uc3QNCit7DQorICAgIGlmKG1fUGFyc2VPcHRpb25zLm1fYkdldENoYXJDb2RlT25seSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmICghbV9Jc1BhcnNlcmVkKQl7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX0Zsb2F0UmVjdAkJY3VyUmVjdDsNCisgICAgRlhfQk9PTAkJCQlmbGFnTmV3UmVjdCA9IFRSVUU7DQorICAgIENQREZfVGV4dE9iamVjdCoJcEN1ck9iaiA9IE5VTEw7DQorICAgIGludCBuQ291bnQgPSBtX2NoYXJMaXN0LkdldFNpemUoKTsNCisgICAgaW50IHBvcyA9IDA7DQorICAgIHdoaWxlIChwb3MgPCBuQ291bnQpIHsNCisgICAgICAgIFBBR0VDSEFSX0lORk8gaW5mb19jdXJjaGFyID0gKihQQUdFQ0hBUl9JTkZPKiltX2NoYXJMaXN0LkdldEF0KHBvcysrKTsNCisgICAgICAgIGlmIChpbmZvX2N1cmNoYXIubV9GbGFnID09IEZQREZURVhUX0NIQVJfR0VORVJBVEVEKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZihwb3MgPT0gNDk0KSB7DQorICAgICAgICAgICAgaW50IGEgPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKElzUmVjdEludGVyc2VjdChyZWN0LCBpbmZvX2N1cmNoYXIubV9DaGFyQm94KSkgew0KKyAgICAgICAgICAgIGlmKCFwQ3VyT2JqKSB7DQorICAgICAgICAgICAgICAgIHBDdXJPYmogPSBpbmZvX2N1cmNoYXIubV9wVGV4dE9iajsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBDdXJPYmogIT0gaW5mb19jdXJjaGFyLm1fcFRleHRPYmopIHsNCisgICAgICAgICAgICAgICAgcmVzUmVjdEFycmF5LkFkZChjdXJSZWN0KTsNCisgICAgICAgICAgICAgICAgcEN1ck9iaiA9IGluZm9fY3VyY2hhci5tX3BUZXh0T2JqOw0KKyAgICAgICAgICAgICAgICBmbGFnTmV3UmVjdCA9IFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChmbGFnTmV3UmVjdCkgew0KKyAgICAgICAgICAgICAgICBjdXJSZWN0ID0gaW5mb19jdXJjaGFyLm1fQ2hhckJveDsNCisgICAgICAgICAgICAgICAgZmxhZ05ld1JlY3QgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgY3VyUmVjdC5Ob3JtYWxpemUoKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpbmZvX2N1cmNoYXIubV9DaGFyQm94Lk5vcm1hbGl6ZSgpOw0KKyAgICAgICAgICAgICAgICBpZiAoY3VyUmVjdC5sZWZ0ID4gaW5mb19jdXJjaGFyLm1fQ2hhckJveC5sZWZ0KSB7DQorICAgICAgICAgICAgICAgICAgICBjdXJSZWN0LmxlZnQgPSBpbmZvX2N1cmNoYXIubV9DaGFyQm94LmxlZnQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGN1clJlY3QucmlnaHQgPCBpbmZvX2N1cmNoYXIubV9DaGFyQm94LnJpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICBjdXJSZWN0LnJpZ2h0ID0gaW5mb19jdXJjaGFyLm1fQ2hhckJveC5yaWdodDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoIGN1clJlY3QudG9wIDwgaW5mb19jdXJjaGFyLm1fQ2hhckJveC50b3ApIHsNCisgICAgICAgICAgICAgICAgICAgIGN1clJlY3QudG9wID0gaW5mb19jdXJjaGFyLm1fQ2hhckJveC50b3A7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGN1clJlY3QuYm90dG9tID4gaW5mb19jdXJjaGFyLm1fQ2hhckJveC5ib3R0b20pIHsNCisgICAgICAgICAgICAgICAgICAgIGN1clJlY3QuYm90dG9tID0gaW5mb19jdXJjaGFyLm1fQ2hhckJveC5ib3R0b207DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmVzUmVjdEFycmF5LkFkZChjdXJSZWN0KTsNCisgICAgcmV0dXJuOw0KK30NCitpbnQJQ1BERl9UZXh0UGFnZTo6R2V0SW5kZXhBdFBvcyhGWF9GTE9BVCB4LCBGWF9GTE9BVCB5LCBGWF9GTE9BVCB4VG9yZWxhbmNlLCBGWF9GTE9BVCB5VG9yZWxhbmNlKSBjb25zdA0KK3sNCisgICAgaWYobV9QYXJzZU9wdGlvbnMubV9iR2V0Q2hhckNvZGVPbmx5KSB7DQorICAgICAgICByZXR1cm4gLTM7DQorICAgIH0NCisgICAgQ1BERl9Qb2ludCBwb2ludCh4LCB5KTsNCisgICAgcmV0dXJuIEdldEluZGV4QXRQb3MocG9pbnQsIHhUb3JlbGFuY2UsIHlUb3JlbGFuY2UpOw0KK30NCitpbnQgQ1BERl9UZXh0UGFnZTo6R2V0T3JkZXJCeURpcmVjdGlvbihpbnQgb3JkZXIsIGludCBkaXJlY3Rpb24pIGNvbnN0DQorew0KKyAgICBpZihtX1BhcnNlT3B0aW9ucy5tX2JHZXRDaGFyQ29kZU9ubHkpIHsNCisgICAgICAgIHJldHVybiAtMzsNCisgICAgfQ0KKyAgICBpZiAoIW1fSXNQYXJzZXJlZCkgew0KKyAgICAgICAgcmV0dXJuIC0zOw0KKyAgICB9DQorICAgIGlmIChkaXJlY3Rpb24gPT0gRlBERlRFWFRfUklHSFQgfHwgZGlyZWN0aW9uID09IEZQREZURVhUX0xFRlQpIHsNCisgICAgICAgIG9yZGVyICs9IGRpcmVjdGlvbjsNCisgICAgICAgIHdoaWxlKG9yZGVyID49IDAgJiYgb3JkZXIgPCBtX2NoYXJMaXN0LkdldFNpemUoKSkgew0KKyAgICAgICAgICAgIFBBR0VDSEFSX0lORk8gY2luZm8gPSAqKFBBR0VDSEFSX0lORk8qKW1fY2hhckxpc3QuR2V0QXQob3JkZXIpOw0KKyAgICAgICAgICAgIGlmIChjaW5mby5tX0ZsYWcgIT0gRlBERlRFWFRfQ0hBUl9HRU5FUkFURUQpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYgKGNpbmZvLm1fVW5pY29kZSA9PSBURVhUX0xJTkVGRUVEX0NIQVIgfHwgY2luZm8ubV9Vbmljb2RlID09IFRFWFRfUkVUVVJOX0NIQVIpIHsNCisgICAgICAgICAgICAgICAgICAgIG9yZGVyICs9IGRpcmVjdGlvbjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG9yZGVyID49IG1fY2hhckxpc3QuR2V0U2l6ZSgpKSB7DQorICAgICAgICAgICAgb3JkZXIgPSAtMjsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBvcmRlcjsNCisgICAgfQ0KKyAgICBQQUdFQ0hBUl9JTkZPIGNoYXJpbmZvOw0KKyAgICBjaGFyaW5mbyA9ICooUEFHRUNIQVJfSU5GTyopbV9jaGFyTGlzdC5HZXRBdChvcmRlcik7DQorICAgIENQREZfUG9pbnQgY3VyUG9zKGNoYXJpbmZvLm1fT3JpZ2luWCwgY2hhcmluZm8ubV9PcmlnaW5ZKTsNCisgICAgRlhfRkxPQVQgZGlmUG9zWSA9IDAuMCwgbWluWGRpZiA9IDEwMDA7DQorICAgIGludAltaW5JbmRleCA9IC0yOw0KKyAgICBpbnQgaW5kZXggPSBvcmRlcjsNCisgICAgRlhfRkxPQVQgaGVpZ2h0ID0gY2hhcmluZm8ubV9DaGFyQm94LkhlaWdodCgpOw0KKyAgICBpZiAoZGlyZWN0aW9uID09IEZQREZURVhUX1VQKSB7DQorICAgICAgICBtaW5JbmRleCA9IC0xOw0KKyAgICAgICAgd2hpbGUgKDEpIHsNCisgICAgICAgICAgICBpZiAoLS1pbmRleCA8IDApCXsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaGFyaW5mbyA9ICooUEFHRUNIQVJfSU5GTyopbV9jaGFyTGlzdC5HZXRBdChpbmRleCk7DQorICAgICAgICAgICAgaWYgKEZYU1lTX2ZhYnMoY2hhcmluZm8ubV9PcmlnaW5ZIC0gY3VyUG9zLnkpID4gRlhfTUFYKGhlaWdodCwgY2hhcmluZm8ubV9DaGFyQm94LkhlaWdodCgpKSAvIDIpIHsNCisgICAgICAgICAgICAgICAgZGlmUG9zWSA9IGNoYXJpbmZvLm1fT3JpZ2luWTsNCisgICAgICAgICAgICAgICAgbWluSW5kZXggPSBpbmRleDsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRkxPQVQgUHJlWGRpZiA9IGNoYXJpbmZvLm1fT3JpZ2luWCAtIGN1clBvcy54Ow0KKyAgICAgICAgbWluWGRpZiA9IFByZVhkaWY7DQorICAgICAgICBpZiAoUHJlWGRpZiA9PSAwKQl7DQorICAgICAgICAgICAgcmV0dXJuIGluZGV4Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRkxPQVQgY3VyWGRpZiA9IDA7DQorICAgICAgICB3aGlsZSAoLS1pbmRleCA+PSAwKSB7DQorICAgICAgICAgICAgY2hhcmluZm8gPSAqKFBBR0VDSEFSX0lORk8qKW1fY2hhckxpc3QuR2V0QXQoaW5kZXgpOw0KKyAgICAgICAgICAgIGlmIChkaWZQb3NZICE9IGNoYXJpbmZvLm1fT3JpZ2luWSkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgY3VyWGRpZiA9IGNoYXJpbmZvLm1fT3JpZ2luWCAtIGN1clBvcy54Ow0KKyAgICAgICAgICAgIGlmIChjdXJYZGlmID09IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgc2lnbmZsYWcgPSAwOw0KKyAgICAgICAgICAgIGlmIChjdXJYZGlmID4gMCkgew0KKyAgICAgICAgICAgICAgICBzaWduZmxhZyA9IDE7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgc2lnbmZsYWcgPSAtMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHNpZ25mbGFnICogUHJlWGRpZiA8IDApIHsNCisgICAgICAgICAgICAgICAgaWYgKEZYU1lTX2ZhYnMoUHJlWGRpZikgPCBGWFNZU19mYWJzKGN1clhkaWYpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXggKyAxOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChGWFNZU19mYWJzKGN1clhkaWYpIDwgRlhTWVNfZmFicyhtaW5YZGlmKSkgew0KKyAgICAgICAgICAgICAgICBtaW5JbmRleCA9IGluZGV4Ow0KKyAgICAgICAgICAgICAgICBtaW5YZGlmID0gY3VyWGRpZjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgUHJlWGRpZiA9IGN1clhkaWY7DQorICAgICAgICAgICAgaWYgKGRpZlBvc1kgIT0gY2hhcmluZm8ubV9PcmlnaW5ZKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBtaW5JbmRleDsNCisgICAgfSBlbHNlIGlmKEZQREZURVhUX0RPV04pIHsNCisgICAgICAgIG1pbkluZGV4ID0gLTI7DQorICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgIGlmICgrK2luZGV4ID4gbV9jaGFyTGlzdC5HZXRTaXplKCkgLSAxKQl7DQorICAgICAgICAgICAgICAgIHJldHVybiBtaW5JbmRleDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2hhcmluZm8gPSAqKFBBR0VDSEFSX0lORk8qKW1fY2hhckxpc3QuR2V0QXQoaW5kZXgpOw0KKyAgICAgICAgICAgIGlmIChGWFNZU19mYWJzKGNoYXJpbmZvLm1fT3JpZ2luWSAtIGN1clBvcy55KSA+IEZYX01BWChoZWlnaHQsIGNoYXJpbmZvLm1fQ2hhckJveC5IZWlnaHQoKSkgLyAyKSB7DQorICAgICAgICAgICAgICAgIGRpZlBvc1kgPSBjaGFyaW5mby5tX09yaWdpblk7DQorICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaW5kZXg7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEZYX0ZMT0FUIFByZVhkaWYgPSBjaGFyaW5mby5tX09yaWdpblggLSBjdXJQb3MueDsNCisgICAgICAgIG1pblhkaWYgPSBQcmVYZGlmOw0KKyAgICAgICAgaWYgKFByZVhkaWYgPT0gMCkJew0KKyAgICAgICAgICAgIHJldHVybiBpbmRleDsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0ZMT0FUIGN1clhkaWYgPSAwOw0KKyAgICAgICAgd2hpbGUgKCsraW5kZXggPCBtX2NoYXJMaXN0LkdldFNpemUoKSkgew0KKyAgICAgICAgICAgIGNoYXJpbmZvID0gKihQQUdFQ0hBUl9JTkZPKiltX2NoYXJMaXN0LkdldEF0KGluZGV4KTsNCisgICAgICAgICAgICBpZiAoZGlmUG9zWSAhPSBjaGFyaW5mby5tX09yaWdpblkpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGN1clhkaWYgPSBjaGFyaW5mby5tX09yaWdpblggLSBjdXJQb3MueDsNCisgICAgICAgICAgICBpZiAoY3VyWGRpZiA9PSAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaW50IHNpZ25mbGFnID0gMDsNCisgICAgICAgICAgICBpZiAoY3VyWGRpZiA+IDApIHsNCisgICAgICAgICAgICAgICAgc2lnbmZsYWcgPSAxOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHNpZ25mbGFnID0gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzaWduZmxhZyAqIFByZVhkaWYgPCAwKSB7DQorICAgICAgICAgICAgICAgIGlmIChGWFNZU19mYWJzKFByZVhkaWYpIDwgRlhTWVNfZmFicyhjdXJYZGlmKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4IC0gMTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoRlhTWVNfZmFicyhjdXJYZGlmKSA8IEZYU1lTX2ZhYnMobWluWGRpZikpIHsNCisgICAgICAgICAgICAgICAgbWluWGRpZiA9IGN1clhkaWY7DQorICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaW5kZXg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIFByZVhkaWYgPSBjdXJYZGlmOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIG1pbkluZGV4Ow0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9UZXh0UGFnZTo6R2V0Q2hhckluZm8oaW50IGluZGV4LCBGUERGX0NIQVJfSU5GTyAmIGluZm8pIGNvbnN0DQorew0KKyAgICBpZihtX1BhcnNlT3B0aW9ucy5tX2JHZXRDaGFyQ29kZU9ubHkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoIW1fSXNQYXJzZXJlZCkJew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbV9jaGFyTGlzdC5HZXRTaXplKCkpCXsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBQQUdFQ0hBUl9JTkZPIGNoYXJpbmZvOw0KKyAgICBjaGFyaW5mbyA9ICooUEFHRUNIQVJfSU5GTyopbV9jaGFyTGlzdC5HZXRBdChpbmRleCk7DQorICAgIGluZm8ubV9DaGFyY29kZSA9IGNoYXJpbmZvLm1fQ2hhckNvZGU7DQorICAgIGluZm8ubV9PcmlnaW5YID0gY2hhcmluZm8ubV9PcmlnaW5YOw0KKyAgICBpbmZvLm1fT3JpZ2luWSA9IGNoYXJpbmZvLm1fT3JpZ2luWTsNCisgICAgaW5mby5tX1VuaWNvZGUgPSBjaGFyaW5mby5tX1VuaWNvZGU7DQorICAgIGluZm8ubV9GbGFnID0gY2hhcmluZm8ubV9GbGFnOw0KKyAgICBpbmZvLm1fQ2hhckJveCA9IGNoYXJpbmZvLm1fQ2hhckJveDsNCisgICAgaW5mby5tX3BUZXh0T2JqID0gY2hhcmluZm8ubV9wVGV4dE9iajsNCisgICAgaWYgKGNoYXJpbmZvLm1fcFRleHRPYmogJiYgY2hhcmluZm8ubV9wVGV4dE9iai0+R2V0Rm9udCgpKSB7DQorICAgICAgICBpbmZvLm1fRm9udFNpemUgPSBjaGFyaW5mby5tX3BUZXh0T2JqLT5HZXRGb250U2l6ZSgpOw0KKyAgICB9DQorICAgIGluZm8ubV9NYXRyaXguQ29weShjaGFyaW5mby5tX01hdHJpeCk7DQorICAgIHJldHVybjsNCit9DQordm9pZCBDUERGX1RleHRQYWdlOjpDaGVja01hcmtlZENvbnRlbnRPYmplY3QoRlhfSU5UMzImIHN0YXJ0LCBGWF9JTlQzMiYgbkNvdW50KSBjb25zdA0KK3sNCisgICAgUEFHRUNIQVJfSU5GTyBjaGFyaW5mbyA9ICooUEFHRUNIQVJfSU5GTyopbV9jaGFyTGlzdC5HZXRBdChzdGFydCk7DQorICAgIFBBR0VDSEFSX0lORk8gY2hhcmluZm8yID0gKihQQUdFQ0hBUl9JTkZPKiltX2NoYXJMaXN0LkdldEF0KHN0YXJ0ICsgbkNvdW50IC0gMSk7DQorICAgIGlmIChGUERGVEVYVF9DSEFSX1BJRUNFICE9IGNoYXJpbmZvLm1fRmxhZyAmJiBGUERGVEVYVF9DSEFSX1BJRUNFICE9IGNoYXJpbmZvMi5tX0ZsYWcpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoRlBERlRFWFRfQ0hBUl9QSUVDRSA9PSBjaGFyaW5mby5tX0ZsYWcpIHsNCisgICAgICAgIFBBR0VDSEFSX0lORk8gY2hhcmluZm8xID0gY2hhcmluZm87DQorICAgICAgICBpbnQgc3RhcnRJbmRleCA9IHN0YXJ0Ow0KKyAgICAgICAgd2hpbGUoRlBERlRFWFRfQ0hBUl9QSUVDRSA9PSBjaGFyaW5mbzEubV9GbGFnICYmIGNoYXJpbmZvMS5tX0luZGV4ID09IGNoYXJpbmZvLm1fSW5kZXgpIHsNCisgICAgICAgICAgICBzdGFydEluZGV4LS07DQorICAgICAgICAgICAgaWYgKHN0YXJ0SW5kZXggPCAwKQl7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjaGFyaW5mbzEgPSAqKFBBR0VDSEFSX0lORk8qKW1fY2hhckxpc3QuR2V0QXQoc3RhcnRJbmRleCk7DQorICAgICAgICB9DQorICAgICAgICBzdGFydEluZGV4Kys7DQorICAgICAgICBzdGFydCA9IHN0YXJ0SW5kZXg7DQorICAgIH0NCisgICAgaWYgKEZQREZURVhUX0NIQVJfUElFQ0UgPT0gY2hhcmluZm8yLm1fRmxhZykgew0KKyAgICAgICAgUEFHRUNIQVJfSU5GTyBjaGFyaW5mbzMgPSBjaGFyaW5mbzI7DQorICAgICAgICBpbnQgZW5kSW5kZXggPSBzdGFydCArIG5Db3VudCAtIDE7DQorICAgICAgICB3aGlsZShGUERGVEVYVF9DSEFSX1BJRUNFID09IGNoYXJpbmZvMy5tX0ZsYWcgJiYgY2hhcmluZm8zLm1fSW5kZXggPT0gY2hhcmluZm8yLm1fSW5kZXgpIHsNCisgICAgICAgICAgICBlbmRJbmRleCsrOw0KKyAgICAgICAgICAgIGlmIChlbmRJbmRleCA+PSBtX2NoYXJMaXN0LkdldFNpemUoKSkJew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2hhcmluZm8zID0gKihQQUdFQ0hBUl9JTkZPKiltX2NoYXJMaXN0LkdldEF0KGVuZEluZGV4KTsNCisgICAgICAgIH0NCisgICAgICAgIGVuZEluZGV4LS07DQorICAgICAgICBuQ291bnQgPSBlbmRJbmRleCAtIHN0YXJ0ICsgMTsNCisgICAgfQ0KK30NCitDRlhfV2lkZVN0cmluZyBDUERGX1RleHRQYWdlOjpHZXRQYWdlVGV4dChpbnQgc3RhcnQgLCBpbnQgbkNvdW50KSBjb25zdA0KK3sNCisgICAgaWYgKCFtX0lzUGFyc2VyZWQgfHwgbkNvdW50ID09IDApIHsNCisgICAgICAgIHJldHVybiBMIiI7DQorICAgIH0NCisgICAgaWYgKHN0YXJ0IDwgMCkgew0KKyAgICAgICAgc3RhcnQgPSAwOw0KKyAgICB9DQorICAgIGlmCShuQ291bnQgPT0gLTEpIHsNCisgICAgICAgIG5Db3VudCA9IG1fY2hhckxpc3QuR2V0U2l6ZSgpIC0gc3RhcnQ7DQorICAgICAgICByZXR1cm4gbV9UZXh0QnVmLkdldFdpZGVTdHJpbmcoKS5NaWQoc3RhcnQsIG1fVGV4dEJ1Zi5HZXRXaWRlU3RyaW5nKCkuR2V0TGVuZ3RoKCkpOw0KKyAgICB9DQorICAgIGlmKG5Db3VudCA8PSAwIHx8IG1fY2hhckxpc3QuR2V0U2l6ZSgpIDw9IDApIHsNCisgICAgICAgIHJldHVybiBMIiI7DQorICAgIH0NCisgICAgaWYobkNvdW50ICsgc3RhcnQgPiBtX2NoYXJMaXN0LkdldFNpemUoKSAtIDEpIHsNCisgICAgICAgIG5Db3VudCA9IG1fY2hhckxpc3QuR2V0U2l6ZSgpIC0gc3RhcnQ7DQorICAgIH0NCisgICAgaWYgKG5Db3VudCA8PSAwKSB7DQorICAgICAgICByZXR1cm4gTCIiOw0KKyAgICB9DQorICAgIENoZWNrTWFya2VkQ29udGVudE9iamVjdChzdGFydCwgbkNvdW50KTsNCisgICAgaW50IHN0YXJ0aW5kZXggPSAwOw0KKyAgICBQQUdFQ0hBUl9JTkZPIGNoYXJpbmZvID0gKihQQUdFQ0hBUl9JTkZPKiltX2NoYXJMaXN0LkdldEF0KHN0YXJ0KTsNCisgICAgaW50IHN0YXJ0T2Zmc2V0ID0gMDsNCisgICAgd2hpbGUoY2hhcmluZm8ubV9JbmRleCA9PSAtMSkgew0KKyAgICAgICAgc3RhcnRPZmZzZXQrKzsNCisgICAgICAgIGlmIChzdGFydE9mZnNldCA+IG5Db3VudCB8fCBzdGFydCArIHN0YXJ0T2Zmc2V0ID49IG1fY2hhckxpc3QuR2V0U2l6ZSgpKQl7DQorICAgICAgICAgICAgcmV0dXJuIEwiIjsNCisgICAgICAgIH0NCisgICAgICAgIGNoYXJpbmZvID0gKihQQUdFQ0hBUl9JTkZPKiltX2NoYXJMaXN0LkdldEF0KHN0YXJ0ICsgc3RhcnRPZmZzZXQpOw0KKyAgICB9DQorICAgIHN0YXJ0aW5kZXggPSBjaGFyaW5mby5tX0luZGV4Ow0KKyAgICBjaGFyaW5mbyA9ICooUEFHRUNIQVJfSU5GTyopbV9jaGFyTGlzdC5HZXRBdChzdGFydCArIG5Db3VudCAtIDEpOw0KKyAgICBpbnQgbkNvdW50T2Zmc2V0ID0gMDsNCisgICAgd2hpbGUgKGNoYXJpbmZvLm1fSW5kZXggPT0gLTEpIHsNCisgICAgICAgIG5Db3VudE9mZnNldCsrOw0KKyAgICAgICAgaWYgKG5Db3VudE9mZnNldCA+PSBuQ291bnQpIHsNCisgICAgICAgICAgICByZXR1cm4gTCIiOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2hhcmluZm8gPSAqKFBBR0VDSEFSX0lORk8qKW1fY2hhckxpc3QuR2V0QXQoc3RhcnQgKyBuQ291bnQgLSBuQ291bnRPZmZzZXQgLSAxKTsNCisgICAgfQ0KKyAgICBuQ291bnQgPSBzdGFydCArIG5Db3VudCAtIG5Db3VudE9mZnNldCAtIHN0YXJ0aW5kZXg7DQorICAgIGlmKG5Db3VudCA8PSAwKSB7DQorICAgICAgICByZXR1cm4gTCIiOw0KKyAgICB9DQorICAgIHJldHVybiBtX1RleHRCdWYuR2V0V2lkZVN0cmluZygpLk1pZChzdGFydGluZGV4LCBuQ291bnQpOw0KK30NCitpbnQgQ1BERl9UZXh0UGFnZTo6Q291bnRSZWN0cyhpbnQgc3RhcnQsIGludCBuQ291bnQpDQorew0KKyAgICBpZihtX1BhcnNlT3B0aW9ucy5tX2JHZXRDaGFyQ29kZU9ubHkpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAoIW1fSXNQYXJzZXJlZCkJew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIGlmIChzdGFydCA8IDApIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAobkNvdW50ID09IC0xIHx8IG5Db3VudCArIHN0YXJ0ID4gbV9jaGFyTGlzdC5HZXRTaXplKCkgKSB7DQorICAgICAgICBuQ291bnQgPSBtX2NoYXJMaXN0LkdldFNpemUoKSAtIHN0YXJ0Ow0KKyAgICB9DQorICAgIG1fU2VsUmVjdHMuUmVtb3ZlQWxsKCk7DQorICAgIEdldFJlY3RBcnJheShzdGFydCwgbkNvdW50LCBtX1NlbFJlY3RzKTsNCisgICAgcmV0dXJuIG1fU2VsUmVjdHMuR2V0U2l6ZSgpOw0KK30NCit2b2lkIENQREZfVGV4dFBhZ2U6OkdldFJlY3QoaW50IHJlY3RJbmRleCwgRlhfRkxPQVQmIGxlZnQsIEZYX0ZMT0FUJiB0b3AsIEZYX0ZMT0FUJiByaWdodCwgRlhfRkxPQVQgJmJvdHRvbSkgY29uc3QNCit7DQorICAgIGlmKG1fUGFyc2VPcHRpb25zLm1fYkdldENoYXJDb2RlT25seSkgew0KKyAgICAgICAgcmV0dXJuIDsNCisgICAgfQ0KKyAgICBpZiAoIW1fSXNQYXJzZXJlZCB8fCByZWN0SW5kZXggPCAwIHx8IHJlY3RJbmRleCA+PSBtX1NlbFJlY3RzLkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGxlZnQgPSBtX1NlbFJlY3RzLkdldEF0KHJlY3RJbmRleCkubGVmdDsNCisgICAgdG9wID0gbV9TZWxSZWN0cy5HZXRBdChyZWN0SW5kZXgpLnRvcDsNCisgICAgcmlnaHQgPSBtX1NlbFJlY3RzLkdldEF0KHJlY3RJbmRleCkucmlnaHQ7DQorICAgIGJvdHRvbSA9IG1fU2VsUmVjdHMuR2V0QXQocmVjdEluZGV4KS5ib3R0b207DQorfQ0KK0ZYX0JPT0wgQ1BERl9UZXh0UGFnZTo6R2V0QmFzZWxpbmVSb3RhdGUoaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQmIFJvdGF0ZSkNCit7DQorICAgIGlmKG1fUGFyc2VPcHRpb25zLm1fYkdldENoYXJDb2RlT25seSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmKGVuZCA9PSBzdGFydCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIGR4LCBkeTsNCisgICAgRlBERl9DSEFSX0lORk8gaW5mbzEsIGluZm8yOw0KKyAgICBHZXRDaGFySW5mbyhzdGFydCwgaW5mbzEpOw0KKyAgICBHZXRDaGFySW5mbyhlbmQsIGluZm8yKTsNCisgICAgd2hpbGUoaW5mbzIubV9DaGFyQm94LldpZHRoKCkgPT0gMCB8fCBpbmZvMi5tX0NoYXJCb3guSGVpZ2h0KCkgPT0gMCkgew0KKyAgICAgICAgZW5kLS07DQorICAgICAgICBpZihlbmQgPD0gc3RhcnQpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBHZXRDaGFySW5mbyhlbmQsIGluZm8yKTsNCisgICAgfQ0KKyAgICBkeCA9IChpbmZvMi5tX09yaWdpblggLSBpbmZvMS5tX09yaWdpblgpOw0KKyAgICBkeSA9IChpbmZvMi5tX09yaWdpblkgLSBpbmZvMS5tX09yaWdpblkpOw0KKyAgICBpZihkeCA9PSAwKSB7DQorICAgICAgICBpZihkeSA+IDApIHsNCisgICAgICAgICAgICBSb3RhdGUgPSA5MDsNCisgICAgICAgIH0gZWxzZSBpZiAoZHkgPCAwKSB7DQorICAgICAgICAgICAgUm90YXRlID0gMjcwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBSb3RhdGUgPSAwOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZmxvYXQgYSA9IEZYU1lTX2F0YW4yKGR5LCBkeCk7DQorICAgICAgICBSb3RhdGUgPSAoaW50KShhICogMTgwIC8gRlhfUEkgKyAwLjUpOw0KKyAgICB9DQorICAgIGlmKFJvdGF0ZSA8IDApIHsNCisgICAgICAgIFJvdGF0ZSA9IC1Sb3RhdGU7DQorICAgIH0gZWxzZSBpZihSb3RhdGUgPiAwKSB7DQorICAgICAgICBSb3RhdGUgPSAzNjAgLSBSb3RhdGU7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wJQ1BERl9UZXh0UGFnZTo6R2V0QmFzZWxpbmVSb3RhdGUoQ0ZYX0Zsb2F0UmVjdCByZWN0ICwgaW50JiBSb3RhdGUpDQorew0KKyAgICBpZihtX1BhcnNlT3B0aW9ucy5tX2JHZXRDaGFyQ29kZU9ubHkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpbnQgc3RhcnQsIGVuZCwgY291bnQsIG4gPSBDb3VudEJvdW5kZWRTZWdtZW50cyhyZWN0LmxlZnQsIHJlY3QudG9wLCByZWN0LnJpZ2h0LCByZWN0LmJvdHRvbSwgVFJVRSk7DQorICAgIGlmKG4gPCAxKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYobiA+IDEpIHsNCisgICAgICAgIEdldEJvdW5kZWRTZWdtZW50KG4gLSAxLCBzdGFydCwgY291bnQpOw0KKyAgICAgICAgZW5kID0gc3RhcnQgKyBjb3VudCAtIDE7DQorICAgICAgICBHZXRCb3VuZGVkU2VnbWVudCgwLCBzdGFydCwgY291bnQpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgR2V0Qm91bmRlZFNlZ21lbnQoMCwgc3RhcnQsIGNvdW50KTsNCisgICAgICAgIGVuZCA9IHN0YXJ0ICsgY291bnQgLSAxOw0KKyAgICB9DQorICAgIHJldHVybiBHZXRCYXNlbGluZVJvdGF0ZShzdGFydCwgZW5kLCBSb3RhdGUpOw0KK30NCitGWF9CT09MCUNQREZfVGV4dFBhZ2U6OkdldEJhc2VsaW5lUm90YXRlKGludCByZWN0SW5kZXgsIGludCYgUm90YXRlKQ0KK3sNCisgICAgaWYobV9QYXJzZU9wdGlvbnMubV9iR2V0Q2hhckNvZGVPbmx5KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKCFtX0lzUGFyc2VyZWQgfHwgcmVjdEluZGV4IDwgMCB8fCByZWN0SW5kZXggPiBtX1NlbFJlY3RzLkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9GbG9hdFJlY3QgcmVjdCA9IG1fU2VsUmVjdHMuR2V0QXQocmVjdEluZGV4KTsNCisgICAgcmV0dXJuIEdldEJhc2VsaW5lUm90YXRlKHJlY3QgLCBSb3RhdGUpOw0KK30NCitpbnQJQ1BERl9UZXh0UGFnZTo6Q291bnRCb3VuZGVkU2VnbWVudHMoRlhfRkxPQVQgbGVmdCwgRlhfRkxPQVQgdG9wLCBGWF9GTE9BVCByaWdodCwgRlhfRkxPQVQgYm90dG9tLCBGWF9CT09MIGJDb250YWlucyApDQorew0KKyAgICBpZihtX1BhcnNlT3B0aW9ucy5tX2JHZXRDaGFyQ29kZU9ubHkpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBtX1NlZ21lbnQuUmVtb3ZlQWxsKCk7DQorICAgIGlmICghbV9Jc1BhcnNlcmVkKQl7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0KGxlZnQsIGJvdHRvbSwgcmlnaHQsIHRvcCk7DQorICAgIHJlY3QuTm9ybWFsaXplKCk7DQorICAgIGludCBuQ291bnQgPSBtX2NoYXJMaXN0LkdldFNpemUoKTsNCisgICAgaW50IHBvcyA9IDA7DQorICAgIEZQREZfU0VHTUVOVAlzZWdtZW50Ow0KKyAgICBzZWdtZW50Lm1fU3RhcnQgPSAwOw0KKyAgICBzZWdtZW50Lm1fbkNvdW50ID0gMDsNCisgICAgRlhfQk9PTAkJc2VnbWVudFN0YXR1cyA9IDA7DQorICAgIEZYX0JPT0wJCUlzQ29udGFpblByZUNoYXIgPSBGQUxTRTsNCisgICAgd2hpbGUgKHBvcyA8IG5Db3VudCkgew0KKyAgICAgICAgaWYocG9zID09IDQ5Mykgew0KKyAgICAgICAgICAgIGludCBhID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIFBBR0VDSEFSX0lORk8gY2hhcmluZm8gPSAqKFBBR0VDSEFSX0lORk8qKW1fY2hhckxpc3QuR2V0QXQocG9zKTsNCisgICAgICAgIGlmKGJDb250YWlucyAmJiByZWN0LkNvbnRhaW5zKGNoYXJpbmZvLm1fQ2hhckJveCkpIHsNCisgICAgICAgICAgICBpZiAoc2VnbWVudFN0YXR1cyA9PSAwIHx8IHNlZ21lbnRTdGF0dXMgPT0gMikgew0KKyAgICAgICAgICAgICAgICBzZWdtZW50Lm1fU3RhcnQgPSBwb3M7DQorICAgICAgICAgICAgICAgIHNlZ21lbnQubV9uQ291bnQgPSAxOw0KKyAgICAgICAgICAgICAgICBzZWdtZW50U3RhdHVzID0gMTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKHNlZ21lbnRTdGF0dXMgPT0gMSkgew0KKyAgICAgICAgICAgICAgICBzZWdtZW50Lm1fbkNvdW50Kys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIElzQ29udGFpblByZUNoYXIgPSBUUlVFOw0KKyAgICAgICAgfSBlbHNlIGlmICghYkNvbnRhaW5zICYmIChJc1JlY3RJbnRlcnNlY3QocmVjdCwgY2hhcmluZm8ubV9DaGFyQm94KSB8fCByZWN0LkNvbnRhaW5zKGNoYXJpbmZvLm1fT3JpZ2luWCwgY2hhcmluZm8ubV9PcmlnaW5ZKSkpIHsNCisgICAgICAgICAgICBpZiAoc2VnbWVudFN0YXR1cyA9PSAwIHx8IHNlZ21lbnRTdGF0dXMgPT0gMikgew0KKyAgICAgICAgICAgICAgICBzZWdtZW50Lm1fU3RhcnQgPSBwb3M7DQorICAgICAgICAgICAgICAgIHNlZ21lbnQubV9uQ291bnQgPSAxOw0KKyAgICAgICAgICAgICAgICBzZWdtZW50U3RhdHVzID0gMTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKHNlZ21lbnRTdGF0dXMgPT0gMSkgew0KKyAgICAgICAgICAgICAgICBzZWdtZW50Lm1fbkNvdW50Kys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIElzQ29udGFpblByZUNoYXIgPSBUUlVFOw0KKyAgICAgICAgfSBlbHNlIGlmIChjaGFyaW5mby5tX1VuaWNvZGUgPT0gMzIpIHsNCisgICAgICAgICAgICBpZiAoSXNDb250YWluUHJlQ2hhciA9PSBUUlVFKSB7DQorICAgICAgICAgICAgICAgIGlmIChzZWdtZW50U3RhdHVzID09IDAgfHwgc2VnbWVudFN0YXR1cyA9PSAyKSB7DQorICAgICAgICAgICAgICAgICAgICBzZWdtZW50Lm1fU3RhcnQgPSBwb3M7DQorICAgICAgICAgICAgICAgICAgICBzZWdtZW50Lm1fbkNvdW50ID0gMTsNCisgICAgICAgICAgICAgICAgICAgIHNlZ21lbnRTdGF0dXMgPSAxOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlZ21lbnRTdGF0dXMgPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5tX25Db3VudCsrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIElzQ29udGFpblByZUNoYXIgPSBGQUxTRTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAoc2VnbWVudFN0YXR1cyA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICBzZWdtZW50U3RhdHVzID0gMjsNCisgICAgICAgICAgICAgICAgICAgIG1fU2VnbWVudC5BZGQoc2VnbWVudCk7DQorICAgICAgICAgICAgICAgICAgICBzZWdtZW50Lm1fU3RhcnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5tX25Db3VudCA9IDA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChzZWdtZW50U3RhdHVzID09IDEpIHsNCisgICAgICAgICAgICAgICAgc2VnbWVudFN0YXR1cyA9IDI7DQorICAgICAgICAgICAgICAgIG1fU2VnbWVudC5BZGQoc2VnbWVudCk7DQorICAgICAgICAgICAgICAgIHNlZ21lbnQubV9TdGFydCA9IDA7DQorICAgICAgICAgICAgICAgIHNlZ21lbnQubV9uQ291bnQgPSAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBJc0NvbnRhaW5QcmVDaGFyID0gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBwb3MrKzsNCisgICAgfQ0KKyAgICBpZiAoc2VnbWVudFN0YXR1cyA9PSAxKSB7DQorICAgICAgICBzZWdtZW50U3RhdHVzID0gMjsNCisgICAgICAgIG1fU2VnbWVudC5BZGQoc2VnbWVudCk7DQorICAgICAgICBzZWdtZW50Lm1fU3RhcnQgPSAwOw0KKyAgICAgICAgc2VnbWVudC5tX25Db3VudCA9IDA7DQorICAgIH0NCisgICAgcmV0dXJuIG1fU2VnbWVudC5HZXRTaXplKCk7DQorfQ0KK3ZvaWQgQ1BERl9UZXh0UGFnZTo6R2V0Qm91bmRlZFNlZ21lbnQoaW50IGluZGV4LCBpbnQmIHN0YXJ0LCBpbnQmIGNvdW50KSBjb25zdA0KK3sNCisgICAgaWYobV9QYXJzZU9wdGlvbnMubV9iR2V0Q2hhckNvZGVPbmx5KSB7DQorICAgICAgICByZXR1cm4gOw0KKyAgICB9DQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbV9TZWdtZW50LkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHN0YXJ0ID0gbV9TZWdtZW50LkdldEF0KGluZGV4KS5tX1N0YXJ0Ow0KKyAgICBjb3VudCA9IG1fU2VnbWVudC5HZXRBdChpbmRleCkubV9uQ291bnQ7DQorfQ0KK2ludCBDUERGX1RleHRQYWdlOjpHZXRXb3JkQnJlYWsoaW50IGluZGV4LCBpbnQgZGlyZWN0aW9uKSBjb25zdA0KK3sNCisgICAgaWYobV9QYXJzZU9wdGlvbnMubV9iR2V0Q2hhckNvZGVPbmx5KSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaWYgKCFtX0lzUGFyc2VyZWQpCXsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBpZiAoZGlyZWN0aW9uICE9IEZQREZURVhUX0xFRlQgJiYgZGlyZWN0aW9uICE9IEZQREZURVhUX1JJR0hUKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBtX2NoYXJMaXN0LkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIFBBR0VDSEFSX0lORk8gY2hhcmluZm87DQorICAgIGNoYXJpbmZvID0gKihQQUdFQ0hBUl9JTkZPKiltX2NoYXJMaXN0LkdldEF0KGluZGV4KTsNCisgICAgaWYgKGNoYXJpbmZvLm1fSW5kZXggPT0gLTEgfHwgY2hhcmluZm8ubV9GbGFnID09IEZQREZURVhUX0NIQVJfR0VORVJBVEVEKQl7DQorICAgICAgICByZXR1cm4gaW5kZXg7DQorICAgIH0NCisgICAgaWYgKCFJc0xldHRlcihjaGFyaW5mby5tX1VuaWNvZGUpKSB7DQorICAgICAgICByZXR1cm4gaW5kZXg7DQorICAgIH0NCisgICAgaW50IGJyZWFrUG9zID0gaW5kZXg7DQorICAgIGlmIChkaXJlY3Rpb24gPT0gRlBERlRFWFRfTEVGVCkgew0KKyAgICAgICAgd2hpbGUgKC0tYnJlYWtQb3MgPiAwKSB7DQorICAgICAgICAgICAgY2hhcmluZm8gPSAqKFBBR0VDSEFSX0lORk8qKW1fY2hhckxpc3QuR2V0QXQoYnJlYWtQb3MpOw0KKyAgICAgICAgICAgIGlmICghSXNMZXR0ZXIoY2hhcmluZm8ubV9Vbmljb2RlKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtQb3M7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGJyZWFrUG9zOw0KKyAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBGUERGVEVYVF9SSUdIVCkgew0KKyAgICAgICAgd2hpbGUgKCsrYnJlYWtQb3MgPCBtX2NoYXJMaXN0LkdldFNpemUoKSkgew0KKyAgICAgICAgICAgIGNoYXJpbmZvID0gKihQQUdFQ0hBUl9JTkZPKiltX2NoYXJMaXN0LkdldEF0KGJyZWFrUG9zKTsNCisgICAgICAgICAgICBpZiAoIUlzTGV0dGVyKGNoYXJpbmZvLm1fVW5pY29kZSkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGJyZWFrUG9zOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBicmVha1BvczsNCisgICAgfQ0KKyAgICByZXR1cm4gYnJlYWtQb3M7DQorfQ0KK0ZYX0lOVDMyIENQREZfVGV4dFBhZ2U6OkZpbmRUZXh0bGluZUZsb3dEaXJlY3Rpb24oKQ0KK3sNCisgICAgaWYgKCFtX3BQYWdlKQl7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgY29uc3QgRlhfSU5UMzIgblBhZ2VXaWR0aCA9IChGWF9JTlQzMikoKENQREZfUGFnZSopbV9wUGFnZSktPkdldFBhZ2VXaWR0aCgpOw0KKyAgICBjb25zdCBGWF9JTlQzMiBuUGFnZUhlaWdodCA9IChGWF9JTlQzMikoKENQREZfUGFnZSopbV9wUGFnZSktPkdldFBhZ2VIZWlnaHQoKTsNCisgICAgQ0ZYX0J5dGVBcnJheSBuSG9yaXpvbnRhbE1hc2s7DQorICAgIGlmICghbkhvcml6b250YWxNYXNrLlNldFNpemUoblBhZ2VXaWR0aCkpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKwlGWF9CWVRFKiBwRGF0YUggPSBuSG9yaXpvbnRhbE1hc2suR2V0RGF0YSgpOw0KKyAgICBDRlhfQnl0ZUFycmF5IG5WZXJ0aWNhbE1hc2s7DQorICAgIGlmICghblZlcnRpY2FsTWFzay5TZXRTaXplKG5QYWdlSGVpZ2h0KSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorCUZYX0JZVEUqIHBEYXRhViA9IG5WZXJ0aWNhbE1hc2suR2V0RGF0YSgpOw0KKyAgICBGWF9JTlQzMiBpbmRleCA9IDA7DQorICAgIEZYX0ZMT0FUIGZMaW5lSGVpZ2h0ID0gMC4wZjsNCisgICAgQ1BERl9QYWdlT2JqZWN0KiBwUGFnZU9iaiA9IE5VTEw7DQorICAgIEZYX1BPU0lUSU9OCXBvcyA9IE5VTEw7DQorICAgIHBvcyA9IG1fcFBhZ2UtPkdldEZpcnN0T2JqZWN0UG9zaXRpb24oKTsNCisgICAgaWYoIXBvcykgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIHdoaWxlKHBvcykgew0KKyAgICAgICAgcFBhZ2VPYmogPSBtX3BQYWdlLT5HZXROZXh0T2JqZWN0KHBvcyk7DQorICAgICAgICBpZihOVUxMID09IHBQYWdlT2JqKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZihQREZQQUdFX1RFWFQgIT0gcFBhZ2VPYmotPm1fVHlwZSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKwkJRlhfSU5UMzIgbWluSCA9IChGWF9JTlQzMilwUGFnZU9iai0+bV9MZWZ0IDwgMCA/IDAgOiAoRlhfSU5UMzIpcFBhZ2VPYmotPm1fTGVmdDsNCisJCUZYX0lOVDMyIG1heEggPSAoRlhfSU5UMzIpcFBhZ2VPYmotPm1fUmlnaHQgPiBuUGFnZVdpZHRoID8gblBhZ2VXaWR0aCA6IChGWF9JTlQzMilwUGFnZU9iai0+bV9SaWdodDsNCisJCUZYX0lOVDMyIG1pblYgPSAoRlhfSU5UMzIpcFBhZ2VPYmotPm1fQm90dG9tIDwgMCA/IDAgOiAoRlhfSU5UMzIpcFBhZ2VPYmotPm1fQm90dG9tOw0KKwkJRlhfSU5UMzIgbWF4ViA9IChGWF9JTlQzMilwUGFnZU9iai0+bV9Ub3AgPiBuUGFnZUhlaWdodCA/IG5QYWdlSGVpZ2h0IDogKEZYX0lOVDMyKXBQYWdlT2JqLT5tX1RvcDsNCisJCWlmIChtaW5IID49IG1heEggfHwgbWluViA+PSBtYXhWKXsNCisJCQljb250aW51ZTsNCisJCX0NCisNCisJCUZYU1lTX21lbXNldDgocERhdGFIICsgbWluSCwgMSwgbWF4SCAtIG1pbkgpOw0KKwkJRlhTWVNfbWVtc2V0OChwRGF0YVYgKyBtaW5WLCAxLCBtYXhWIC0gbWluVik7DQorDQorCQlpZiAoZkxpbmVIZWlnaHQgPD0gMC4wZikgew0KKwkJCWZMaW5lSGVpZ2h0ID0gcFBhZ2VPYmotPm1fVG9wIC0gcFBhZ2VPYmotPm1fQm90dG9tOw0KKwkJfQ0KKw0KKwkJcFBhZ2VPYmogPSBOVUxMOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIG5TdGFydEggPSAwOw0KKyAgICBGWF9JTlQzMiBuRW5kSCA9IDA7DQorICAgIEZYX0ZMT0FUIG5TdW1IID0gMC4wZjsNCisgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgblBhZ2VXaWR0aDsgaW5kZXgrKykNCisgICAgICAgIGlmKDEgPT0gbkhvcml6b250YWxNYXNrW2luZGV4XSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICBuU3RhcnRIID0gaW5kZXg7DQorICAgIGZvciAoaW5kZXggPSBuUGFnZVdpZHRoOyBpbmRleCA+IDA7IGluZGV4LS0pDQorICAgICAgICBpZigxID09IG5Ib3Jpem9udGFsTWFza1tpbmRleCAtIDFdKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIG5FbmRIID0gaW5kZXg7DQorICAgIGZvciAoaW5kZXggPSBuU3RhcnRIOyBpbmRleCA8IG5FbmRIOyBpbmRleCsrKSB7DQorICAgICAgICBuU3VtSCArPSBuSG9yaXpvbnRhbE1hc2tbaW5kZXhdOw0KKyAgICB9DQorICAgIG5TdW1IIC89IG5FbmRIIC0gblN0YXJ0SDsNCisgICAgRlhfSU5UMzIgblN0YXJ0ViA9IDA7DQorICAgIEZYX0lOVDMyIG5FbmRWID0gMDsNCisgICAgRlhfRkxPQVQgblN1bVYgPSAwLjBmOw0KKyAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBuUGFnZUhlaWdodDsgaW5kZXgrKykNCisgICAgICAgIGlmKDEgPT0gblZlcnRpY2FsTWFza1tpbmRleF0pIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgblN0YXJ0ViA9IGluZGV4Ow0KKyAgICBmb3IgKGluZGV4ID0gblBhZ2VIZWlnaHQ7IGluZGV4ID4gMDsgaW5kZXgtLSkNCisgICAgICAgIGlmKDEgPT0gblZlcnRpY2FsTWFza1tpbmRleCAtIDFdKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIG5FbmRWID0gaW5kZXg7DQorICAgIGZvciAoaW5kZXggPSBuU3RhcnRWOyBpbmRleCA8IG5FbmRWOyBpbmRleCsrKSB7DQorICAgICAgICBuU3VtViArPSBuVmVydGljYWxNYXNrW2luZGV4XTsNCisgICAgfQ0KKyAgICBuU3VtViAvPSBuRW5kViAtIG5TdGFydFY7DQorICAgIGlmICgobkVuZFYgLSBuU3RhcnRWKSA8IChGWF9JTlQzMikoMiAqIGZMaW5lSGVpZ2h0KSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKChuRW5kSCAtIG5TdGFydEgpIDwgKEZYX0lOVDMyKSgyICogZkxpbmVIZWlnaHQpKSB7DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICBpZiAoblN1bUggPiAwLjhmKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAoblN1bUggLSBuU3VtViA+IDAuMGYpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChuU3VtViAtIG5TdW1IID4gMC4wZikgew0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgcmV0dXJuIC0xOw0KK30NCit2b2lkIENQREZfVGV4dFBhZ2U6OlByb2Nlc3NPYmplY3QoKQ0KK3sNCisgICAgQ1BERl9QYWdlT2JqZWN0KglwUGFnZU9iaiA9IE5VTEw7DQorICAgIGlmICghbV9wUGFnZSkJew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX1BPU0lUSU9OCXBvczsNCisgICAgcG9zID0gbV9wUGFnZS0+R2V0Rmlyc3RPYmplY3RQb3NpdGlvbigpOw0KKyAgICBpZiAoIXBvcykJew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fVGV4dGxpbmVEaXIgPSBGaW5kVGV4dGxpbmVGbG93RGlyZWN0aW9uKCk7DQorICAgIGludCBuQ291bnQgPSAwOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBwUGFnZU9iaiA9IG1fcFBhZ2UtPkdldE5leHRPYmplY3QocG9zKTsNCisgICAgICAgIGlmKHBQYWdlT2JqKSB7DQorICAgICAgICAgICAgaWYocFBhZ2VPYmotPm1fVHlwZSA9PSBQREZQQUdFX1RFWFQpIHsNCisgICAgICAgICAgICAgICAgaWYgKG5Db3VudCA9PSAzKSB7DQorICAgICAgICAgICAgICAgICAgICBuQ291bnQgPSBuQ291bnQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7DQorICAgICAgICAgICAgICAgIFByb2Nlc3NUZXh0T2JqZWN0KChDUERGX1RleHRPYmplY3QqKXBQYWdlT2JqLCBtYXRyaXgsIHBvcyk7DQorICAgICAgICAgICAgICAgIG5Db3VudCsrOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAocFBhZ2VPYmotPm1fVHlwZSA9PSBQREZQQUdFX0ZPUk0pIHsNCisgICAgICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBmb3JtTWF0cml4KDEsIDAsIDAsIDEsIDAsIDApOw0KKyAgICAgICAgICAgICAgICBQcm9jZXNzRm9ybU9iamVjdCgoQ1BERl9Gb3JtT2JqZWN0KilwUGFnZU9iaiwgZm9ybU1hdHJpeCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcFBhZ2VPYmogPSBOVUxMOw0KKyAgICB9DQorICAgIGludCBjb3VudCA9IG1fTGluZU9iai5HZXRTaXplKCk7DQorICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7DQorICAgICAgICBQcm9jZXNzVGV4dE9iamVjdChtX0xpbmVPYmouR2V0QXQoaSkpOw0KKyAgICB9DQorICAgIG1fTGluZU9iai5SZW1vdmVBbGwoKTsNCisgICAgQ2xvc2VUZW1wTGluZSgpOw0KK30NCit2b2lkIENQREZfVGV4dFBhZ2U6OlByb2Nlc3NGb3JtT2JqZWN0KENQREZfRm9ybU9iamVjdCogcEZvcm1PYmosIENGWF9BZmZpbmVNYXRyaXggZm9ybU1hdHJpeCkNCit7DQorICAgIENQREZfUGFnZU9iamVjdCoJcFBhZ2VPYmogPSBOVUxMOw0KKyAgICBGWF9QT1NJVElPTglwb3M7DQorICAgIGlmICghcEZvcm1PYmopCXsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBwb3MgPSBwRm9ybU9iai0+bV9wRm9ybS0+R2V0Rmlyc3RPYmplY3RQb3NpdGlvbigpOw0KKyAgICBpZiAoIXBvcykJew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9BZmZpbmVNYXRyaXggY3VyRm9ybU1hdHJpeDsNCisgICAgY3VyRm9ybU1hdHJpeC5Db3B5KHBGb3JtT2JqLT5tX0Zvcm1NYXRyaXgpOw0KKyAgICBjdXJGb3JtTWF0cml4LkNvbmNhdChmb3JtTWF0cml4KTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgcFBhZ2VPYmogPSBwRm9ybU9iai0+bV9wRm9ybS0+R2V0TmV4dE9iamVjdChwb3MpOw0KKyAgICAgICAgaWYocFBhZ2VPYmopIHsNCisgICAgICAgICAgICBpZihwUGFnZU9iai0+bV9UeXBlID09IFBERlBBR0VfVEVYVCkgew0KKyAgICAgICAgICAgICAgICBQcm9jZXNzVGV4dE9iamVjdCgoQ1BERl9UZXh0T2JqZWN0KilwUGFnZU9iaiwgY3VyRm9ybU1hdHJpeCwgcG9zKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKHBQYWdlT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9GT1JNKSB7DQorICAgICAgICAgICAgICAgIFByb2Nlc3NGb3JtT2JqZWN0KChDUERGX0Zvcm1PYmplY3QqKXBQYWdlT2JqLCBjdXJGb3JtTWF0cml4KTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBwUGFnZU9iaiA9IE5VTEw7DQorICAgIH0NCit9DQoraW50IENQREZfVGV4dFBhZ2U6OkdldENoYXJXaWR0aChGWF9EV09SRCBjaGFyQ29kZSwgQ1BERl9Gb250KiBwRm9udCkgY29uc3QNCit7DQorICAgIGlmKGNoYXJDb2RlID09IC0xKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpbnQgdyA9IHBGb250LT5HZXRDaGFyV2lkdGhGKGNoYXJDb2RlKTsNCisgICAgaWYodyA9PSAwKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdHI7DQorICAgICAgICBwRm9udC0+QXBwZW5kQ2hhcihzdHIsIGNoYXJDb2RlKTsNCisgICAgICAgIHcgPSBwRm9udC0+R2V0U3RyaW5nV2lkdGgoc3RyLCAxKTsNCisgICAgICAgIGlmKHcgPT0gMCkgew0KKyAgICAgICAgICAgIEZYX1JFQ1QgQkJveDsNCisgICAgICAgICAgICBwRm9udC0+R2V0Q2hhckJCb3goY2hhckNvZGUsIEJCb3gpOw0KKyAgICAgICAgICAgIHcgPSBCQm94LnJpZ2h0IC0gQkJveC5sZWZ0Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiB3Ow0KK30NCit2b2lkIENQREZfVGV4dFBhZ2U6Ok9uUGllY2UoSUZYX0JpZGlDaGFyKiBwQmlkaSwgQ0ZYX1dpZGVTdHJpbmcmIHN0cikNCit7DQorICAgIEZYX0lOVDMyIHN0YXJ0LCBjb3VudDsNCisgICAgRlhfSU5UMzIgcmV0ID0gcEJpZGktPkdldEJpZGlJbmZvKHN0YXJ0LCBjb3VudCk7DQorICAgIGlmKHJldCA9PSAyKSB7DQorICAgICAgICBmb3IoaW50IGkgPSBzdGFydCArIGNvdW50IC0gMTsgaSA+PSBzdGFydDsgaS0tKSB7DQorICAgICAgICAgICAgbV9UZXh0QnVmLkFwcGVuZENoYXIoc3RyLkdldEF0KGkpKTsNCisgICAgICAgICAgICBtX2NoYXJMaXN0LkFkZCgqKFBBR0VDSEFSX0lORk8qKW1fVGVtcENoYXJMaXN0LkdldEF0KGkpKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCBlbmQgPSBzdGFydCArIGNvdW50IDsNCisgICAgICAgIGZvcihpbnQgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsNCisgICAgICAgICAgICBtX1RleHRCdWYuQXBwZW5kQ2hhcihzdHIuR2V0QXQoaSkpOw0KKyAgICAgICAgICAgIG1fY2hhckxpc3QuQWRkKCooUEFHRUNIQVJfSU5GTyopbV9UZW1wQ2hhckxpc3QuR2V0QXQoaSkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BERl9UZXh0UGFnZTo6QWRkQ2hhckluZm9CeUxSRGlyZWN0aW9uKENGWF9XaWRlU3RyaW5nJiBzdHIsIGludCBpKQ0KK3sNCisgICAgUEFHRUNIQVJfSU5GTyBJbmZvID0gKihQQUdFQ0hBUl9JTkZPKiltX1RlbXBDaGFyTGlzdC5HZXRBdChpKTsNCisgICAgRlhfV0NIQVIgd0NoYXIgPSBzdHIuR2V0QXQoaSk7DQorI2lmZGVmIEZPWElUX0NIUk9NRV9CVUlMRA0KKyAgICBpZighSXNDb250cm9sQ2hhcigmSW5mbykpIHsNCisjZWxzZQ0KKyAgICBpZih3Q2hhciAhPSAweGZmZmUpIHsNCisjZW5kaWYNCisgICAgICAgIEluZm8ubV9JbmRleCA9IG1fVGV4dEJ1Zi5HZXRMZW5ndGgoKTsNCisgICAgICAgIGlmICh3Q2hhciA+PSAweEZCMDAgJiYgd0NoYXIgPD0gMHhGQjA2KSB7DQorICAgICAgICAgICAgRlhfTFBXU1RSIHBEc3QgPSBOVUxMOw0KKyAgICAgICAgICAgIEZYX1NUUlNJWkUgbkNvdW50ID0gRlhfVW5pY29kZV9HZXROb3JtYWxpemF0aW9uKHdDaGFyLCBwRHN0KTsNCisgICAgICAgICAgICBpZiAobkNvdW50ID49IDEpIHsNCisgICAgICAgICAgICAgICAgcERzdCA9IEZYX0FsbG9jKEZYX1dDSEFSLCBuQ291bnQpOw0KKyAgICAgICAgICAgICAgICBpZiAoIXBEc3QpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9Vbmljb2RlX0dldE5vcm1hbGl6YXRpb24od0NoYXIsIHBEc3QpOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBuSW5kZXggPSAwOyBuSW5kZXggPCBuQ291bnQ7IG5JbmRleCsrKSB7DQorICAgICAgICAgICAgICAgICAgICBQQUdFQ0hBUl9JTkZPIEluZm8yID0gSW5mbzsNCisgICAgICAgICAgICAgICAgICAgIEluZm8yLm1fVW5pY29kZSA9IHBEc3RbbkluZGV4XTsNCisgICAgICAgICAgICAgICAgICAgIEluZm8yLm1fRmxhZyA9IEZQREZURVhUX0NIQVJfUElFQ0U7DQorICAgICAgICAgICAgICAgICAgICBtX1RleHRCdWYuQXBwZW5kQ2hhcihJbmZvMi5tX1VuaWNvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYoICFtX1BhcnNlT3B0aW9ucy5tX2JHZXRDaGFyQ29kZU9ubHkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NoYXJMaXN0LkFkZChJbmZvMik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfRnJlZShwRHN0KTsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fVGV4dEJ1Zi5BcHBlbmRDaGFyKHdDaGFyKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEluZm8ubV9JbmRleCA9IC0xOw0KKyAgICB9DQorICAgIGlmKCAhbV9QYXJzZU9wdGlvbnMubV9iR2V0Q2hhckNvZGVPbmx5KSB7DQorICAgICAgICBtX2NoYXJMaXN0LkFkZChJbmZvKTsNCisgICAgfQ0KK30NCit2b2lkIENQREZfVGV4dFBhZ2U6OkFkZENoYXJJbmZvQnlSTERpcmVjdGlvbihDRlhfV2lkZVN0cmluZyYgc3RyLCBpbnQgaSkNCit7DQorICAgIFBBR0VDSEFSX0lORk8gSW5mbyA9ICooUEFHRUNIQVJfSU5GTyopbV9UZW1wQ2hhckxpc3QuR2V0QXQoaSk7DQorI2lmZGVmIEZPWElUX0NIUk9NRV9CVUlMRA0KKyAgICBpZighSXNDb250cm9sQ2hhcigmSW5mbykpIHsNCisjZWxzZQ0KKyAgICBpZihzdHIuR2V0QXQoaSkgIT0gMHhmZmZlKSB7DQorI2VuZGlmDQorICAgICAgICBJbmZvLm1fSW5kZXggPSBtX1RleHRCdWYuR2V0TGVuZ3RoKCk7DQorICAgICAgICBGWF9XQ0hBUiB3Q2hhciA9IEZYX0dldE1pcnJvckNoYXIoc3RyLkdldEF0KGkpLCBUUlVFLCBGQUxTRSk7DQorICAgICAgICBGWF9MUFdTVFIgcERzdCA9IE5VTEw7DQorICAgICAgICBGWF9TVFJTSVpFIG5Db3VudCA9IEZYX1VuaWNvZGVfR2V0Tm9ybWFsaXphdGlvbih3Q2hhciwgcERzdCk7DQorICAgICAgICBpZiAobkNvdW50ID49IDEpIHsNCisgICAgICAgICAgICBwRHN0ID0gRlhfQWxsb2MoRlhfV0NIQVIsIG5Db3VudCk7DQorICAgICAgICAgICAgaWYgKCFwRHN0KSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfVW5pY29kZV9HZXROb3JtYWxpemF0aW9uKHdDaGFyLCBwRHN0KTsNCisgICAgICAgICAgICBmb3IgKGludCBuSW5kZXggPSAwOyBuSW5kZXggPCBuQ291bnQ7IG5JbmRleCsrKSB7DQorICAgICAgICAgICAgICAgIFBBR0VDSEFSX0lORk8gSW5mbzIgPSBJbmZvOw0KKyAgICAgICAgICAgICAgICBJbmZvMi5tX1VuaWNvZGUgPSBwRHN0W25JbmRleF07DQorICAgICAgICAgICAgICAgIEluZm8yLm1fRmxhZyA9IEZQREZURVhUX0NIQVJfUElFQ0U7DQorICAgICAgICAgICAgICAgIG1fVGV4dEJ1Zi5BcHBlbmRDaGFyKEluZm8yLm1fVW5pY29kZSk7DQorICAgICAgICAgICAgICAgIGlmKCAhbV9QYXJzZU9wdGlvbnMubV9iR2V0Q2hhckNvZGVPbmx5KSB7DQorICAgICAgICAgICAgICAgICAgICBtX2NoYXJMaXN0LkFkZChJbmZvMik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRnJlZShwRHN0KTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEluZm8ubV9Vbmljb2RlID0gd0NoYXI7DQorICAgICAgICB9DQorICAgICAgICBtX1RleHRCdWYuQXBwZW5kQ2hhcihJbmZvLm1fVW5pY29kZSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBJbmZvLm1fSW5kZXggPSAtMTsNCisgICAgfQ0KKyAgICBpZiggIW1fUGFyc2VPcHRpb25zLm1fYkdldENoYXJDb2RlT25seSkgew0KKyAgICAgICAgbV9jaGFyTGlzdC5BZGQoSW5mbyk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1RleHRQYWdlOjpDbG9zZVRlbXBMaW5lKCkNCit7DQorICAgIGludCBjb3VudDEgPSBtX1RlbXBDaGFyTGlzdC5HZXRTaXplKCk7DQorICAgIGlmIChjb3VudDEgPD0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIElGWF9CaWRpQ2hhciogQmlkaUNoYXIgPSBJRlhfQmlkaUNoYXI6OkNyZWF0ZSgpOw0KKyAgICBDRlhfV2lkZVN0cmluZyBzdHIgPSBtX1RlbXBUZXh0QnVmLkdldFdpZGVTdHJpbmcoKTsNCisgICAgQ0ZYX1dvcmRBcnJheSBvcmRlcjsNCisgICAgRlhfQk9PTCBiUjJMID0gRkFMU0U7DQorICAgIEZYX0lOVDMyIHN0YXJ0ID0gMCwgY291bnQgPSAwLCBpID0gMDsNCisgICAgaW50IG5SMkwgPSAwLCBuTDJSID0gMDsNCisgICAgRlhfQk9PTCBiUHJldlNwYWNlID0gRkFMU0U7DQorICAgIGZvciAoaSA9IDA7IGkgPCBzdHIuR2V0TGVuZ3RoKCk7IGkrKykgew0KKyAgICAgICAgaWYoc3RyLkdldEF0KGkpID09IDMyKSB7DQorICAgICAgICAgICAgaWYoYlByZXZTcGFjZSkgew0KKyAgICAgICAgICAgICAgICBtX1RlbXBUZXh0QnVmLkRlbGV0ZShpLCAxKTsNCisgICAgICAgICAgICAgICAgbV9UZW1wQ2hhckxpc3QuRGVsZXRlKGkpOw0KKyAgICAgICAgICAgICAgICBzdHIuRGVsZXRlKGkpOw0KKyAgICAgICAgICAgICAgICBjb3VudDEgLS07DQorICAgICAgICAgICAgICAgIGktLTsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJQcmV2U3BhY2UgPSBUUlVFOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBiUHJldlNwYWNlID0gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZihCaWRpQ2hhciAmJiBCaWRpQ2hhci0+QXBwZW5kQ2hhcihzdHIuR2V0QXQoaSkpKSB7DQorICAgICAgICAgICAgRlhfSU5UMzIgcmV0ID0gQmlkaUNoYXItPkdldEJpZGlJbmZvKHN0YXJ0LCBjb3VudCk7DQorICAgICAgICAgICAgb3JkZXIuQWRkKHN0YXJ0KTsNCisgICAgICAgICAgICBvcmRlci5BZGQoY291bnQpOw0KKyAgICAgICAgICAgIG9yZGVyLkFkZChyZXQpOw0KKyAgICAgICAgICAgIGlmKCFiUjJMKSB7DQorICAgICAgICAgICAgICAgIGlmKHJldCA9PSAyKSB7DQorICAgICAgICAgICAgICAgICAgICBuUjJMKys7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ID09IDEpIHsNCisgICAgICAgICAgICAgICAgICAgIG5MMlIrKzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZihCaWRpQ2hhciAmJiBCaWRpQ2hhci0+RW5kQ2hhcigpKSB7DQorICAgICAgICBGWF9JTlQzMiByZXQgPSBCaWRpQ2hhci0+R2V0QmlkaUluZm8oc3RhcnQsIGNvdW50KTsNCisgICAgICAgIG9yZGVyLkFkZChzdGFydCk7DQorICAgICAgICBvcmRlci5BZGQoY291bnQpOw0KKyAgICAgICAgb3JkZXIuQWRkKHJldCk7DQorICAgICAgICBpZighYlIyTCkgew0KKyAgICAgICAgICAgIGlmKHJldCA9PSAyKSB7DQorICAgICAgICAgICAgICAgIG5SMkwrKzsNCisgICAgICAgICAgICB9IGVsc2UgaWYocmV0ID09IDEpIHsNCisgICAgICAgICAgICAgICAgbkwyUisrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZihuUjJMID4gMCAmJiBuUjJMID49IG5MMlIpIHsNCisgICAgICAgIGJSMkwgPSBUUlVFOw0KKyAgICB9DQorICAgIGlmKHRoaXMtPm1fcGFyc2VyZmxhZyA9PSBGUERGVEVYVF9STFRCIHx8IGJSMkwpIHsNCisgICAgICAgIGludCBjb3VudCA9IG9yZGVyLkdldFNpemUoKTsNCisgICAgICAgIGZvcihpbnQgaiA9IGNvdW50IC0gMTsgaiA+IDA7IGogLT0gMykgew0KKyAgICAgICAgICAgIGludCByZXQgPSBvcmRlci5HZXRBdChqKTsNCisgICAgICAgICAgICBpbnQgc3RhcnQgPSBvcmRlci5HZXRBdChqIC0gMik7DQorICAgICAgICAgICAgaW50IGNvdW50MSA9IG9yZGVyLkdldEF0KGogLSAxKTsNCisgICAgICAgICAgICBpZihyZXQgPT0gMiB8fCByZXQgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSBzdGFydCArIGNvdW50MSAtIDE7IGkgPj0gc3RhcnQ7IGktLSkgew0KKyAgICAgICAgICAgICAgICAgICAgQWRkQ2hhckluZm9CeVJMRGlyZWN0aW9uKHN0ciwgaSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpID0gajsNCisgICAgICAgICAgICAgICAgRlhfQk9PTCBiU3ltYm9sID0gRkFMU0U7DQorICAgICAgICAgICAgICAgIHdoaWxlKGkgPiAwICYmIG9yZGVyLkdldEF0KGkpICE9IDIpIHsNCisgICAgICAgICAgICAgICAgICAgIGJTeW1ib2wgPSAhb3JkZXIuR2V0QXQoaSk7DQorICAgICAgICAgICAgICAgICAgICBpIC09IDM7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW50IGVuZCA9IHN0YXJ0ICsgY291bnQxIDsNCisgICAgICAgICAgICAgICAgaW50IG4gPSAwOw0KKyAgICAgICAgICAgICAgICBpZihiU3ltYm9sKSB7DQorICAgICAgICAgICAgICAgICAgICBuID0gaSArIDY7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBuID0gaSArIDM7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYobiA+PSBqKSB7DQorICAgICAgICAgICAgICAgICAgICBmb3IoaW50IG0gPSBzdGFydDsgbSA8IGVuZDsgbSsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgQWRkQ2hhckluZm9CeUxSRGlyZWN0aW9uKHN0ciwgbSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBpID0gajsNCisgICAgICAgICAgICAgICAgICAgIGogPSBuOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yKDsgbiA8PSBpOyBuICs9IDMpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0ID0gb3JkZXIuR2V0QXQobik7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gb3JkZXIuR2V0QXQobiAtIDIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudDEgPSBvcmRlci5HZXRBdChuIC0gMSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVuZCA9IHN0YXJ0ICsgY291bnQxIDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IG0gPSBzdGFydDsgbSA8IGVuZDsgbSsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZENoYXJJbmZvQnlMUkRpcmVjdGlvbihzdHIsIG0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCBjb3VudCA9IG9yZGVyLkdldFNpemUoKTsNCisgICAgICAgIEZYX0JPT0wgYkwyUiA9IEZBTFNFOw0KKyAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IGNvdW50OyBqICs9IDMpIHsNCisgICAgICAgICAgICBpbnQgcmV0ID0gb3JkZXIuR2V0QXQoaiArIDIpOw0KKyAgICAgICAgICAgIGludCBzdGFydCA9IG9yZGVyLkdldEF0KGopOw0KKyAgICAgICAgICAgIGludCBjb3VudDEgPSBvcmRlci5HZXRBdChqICsgMSk7DQorICAgICAgICAgICAgaWYocmV0ID09IDIgfHwgKGogPT0gMCAmJiByZXQgPT0gMCAmJiAhYkwyUikpIHsNCisgICAgICAgICAgICAgICAgaW50IGkgPSBqICsgMzsNCisgICAgICAgICAgICAgICAgd2hpbGUoYlIyTCAmJiBpIDwgY291bnQpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmKG9yZGVyLkdldEF0KGkgKyAyKSA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gMzsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihpID09IDMpIHsNCisgICAgICAgICAgICAgICAgICAgIGogPSAtMzsNCisgICAgICAgICAgICAgICAgICAgIGJMMlIgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW50IGVuZCA9IG1fVGVtcENoYXJMaXN0LkdldFNpemUoKSAtIDE7DQorICAgICAgICAgICAgICAgIGlmKGkgPCBjb3VudCkgew0KKyAgICAgICAgICAgICAgICAgICAgZW5kID0gb3JkZXIuR2V0QXQoaSkgLSAxOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGogPSBpIC0gMzsNCisgICAgICAgICAgICAgICAgZm9yKGludCBuID0gZW5kOyBuID49IHN0YXJ0OyBuLS0pIHsNCisgICAgICAgICAgICAgICAgICAgIEFkZENoYXJJbmZvQnlSTERpcmVjdGlvbihzdHIsIG4pOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaW50IGVuZCA9IHN0YXJ0ICsgY291bnQxIDsNCisgICAgICAgICAgICAgICAgZm9yKGludCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgew0KKyAgICAgICAgICAgICAgICAgICAgQWRkQ2hhckluZm9CeUxSRGlyZWN0aW9uKHN0ciwgaSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IG50ZXh0ID0gbV9UZXh0QnVmLkdldFNpemUoKTsNCisgICAgbnRleHQgPSBtX2NoYXJMaXN0LkdldFNpemUoKTsNCisgICAgb3JkZXIuUmVtb3ZlQWxsKCk7DQorICAgIG1fVGVtcENoYXJMaXN0LlJlbW92ZUFsbCgpOw0KKyAgICBtX1RlbXBUZXh0QnVmLkRlbGV0ZSgwLCBtX1RlbXBUZXh0QnVmLkdldExlbmd0aCgpKTsNCisgICAgQmlkaUNoYXItPlJlbGVhc2UoKTsNCit9DQordm9pZCBDUERGX1RleHRQYWdlOjpQcm9jZXNzVGV4dE9iamVjdChDUERGX1RleHRPYmplY3QqCXBUZXh0T2JqLCBDRlhfQWZmaW5lTWF0cml4IGZvcm1NYXRyaXgsIEZYX1BPU0lUSU9OIE9ialBvcykNCit7DQorICAgIENGWF9GbG9hdFJlY3QgcmUocFRleHRPYmotPm1fTGVmdCwgcFRleHRPYmotPm1fQm90dG9tLCBwVGV4dE9iai0+bV9SaWdodCwgcFRleHRPYmotPm1fVG9wKTsNCisgICAgaWYoRlhTWVNfZmFicyhwVGV4dE9iai0+bV9SaWdodCAtIHBUZXh0T2JqLT5tX0xlZnQpIDwgMC4wMWYgKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IGNvdW50ID0gbV9MaW5lT2JqLkdldFNpemUoKTsNCisgICAgUERGVEVYVF9PYmogT2JqOw0KKyAgICBPYmoubV9wVGV4dE9iaiA9IHBUZXh0T2JqOw0KKyAgICBPYmoubV9mb3JtTWF0cml4ID0gZm9ybU1hdHJpeDsNCisgICAgaWYoY291bnQgPT0gMCkgew0KKyAgICAgICAgbV9MaW5lT2JqLkFkZChPYmopOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChJc1NhbWVBc1ByZVRleHRPYmplY3QocFRleHRPYmosIE9ialBvcykpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBQREZURVhUX09iaiBwcmV2X09iaiA9IG1fTGluZU9iai5HZXRBdChjb3VudCAtIDEpOw0KKyAgICBDUERGX1RleHRPYmplY3RJdGVtIGl0ZW07DQorICAgIGludCBuSXRlbSA9IHByZXZfT2JqLm1fcFRleHRPYmotPkNvdW50SXRlbXMoKTsNCisgICAgcHJldl9PYmoubV9wVGV4dE9iai0+R2V0SXRlbUluZm8obkl0ZW0gLSAxLCAmaXRlbSk7DQorICAgIEZYX0ZMT0FUIHByZXZfd2lkdGggPSBHZXRDaGFyV2lkdGgoaXRlbS5tX0NoYXJDb2RlLCBwcmV2X09iai5tX3BUZXh0T2JqLT5HZXRGb250KCkpICogcHJldl9PYmoubV9wVGV4dE9iai0+R2V0Rm9udFNpemUoKSAvIDEwMDA7DQorICAgIENGWF9BZmZpbmVNYXRyaXggcHJldl9tYXRyaXg7DQorICAgIHByZXZfT2JqLm1fcFRleHRPYmotPkdldFRleHRNYXRyaXgoJnByZXZfbWF0cml4KTsNCisgICAgcHJldl93aWR0aCA9IEZYU1lTX2ZhYnMocHJldl93aWR0aCk7DQorICAgIHByZXZfbWF0cml4LkNvbmNhdChwcmV2X09iai5tX2Zvcm1NYXRyaXgpOw0KKyAgICBwcmV2X3dpZHRoID0gcHJldl9tYXRyaXguVHJhbnNmb3JtRGlzdGFuY2UocHJldl93aWR0aCk7DQorICAgIHBUZXh0T2JqLT5HZXRJdGVtSW5mbygwLCAmaXRlbSk7DQorICAgIEZYX0ZMT0FUIHRoaXNfd2lkdGggPSBHZXRDaGFyV2lkdGgoaXRlbS5tX0NoYXJDb2RlLCBwVGV4dE9iai0+R2V0Rm9udCgpKSAqIHBUZXh0T2JqLT5HZXRGb250U2l6ZSgpIC8gMTAwMDsNCisgICAgdGhpc193aWR0aCA9IEZYU1lTX2ZhYnModGhpc193aWR0aCk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggdGhpc19tYXRyaXg7DQorICAgIHBUZXh0T2JqLT5HZXRUZXh0TWF0cml4KCZ0aGlzX21hdHJpeCk7DQorICAgIHRoaXNfd2lkdGggPSBGWFNZU19mYWJzKHRoaXNfd2lkdGgpOw0KKyAgICB0aGlzX21hdHJpeC5Db25jYXQoZm9ybU1hdHJpeCk7DQorICAgIHRoaXNfd2lkdGggPSB0aGlzX21hdHJpeC5UcmFuc2Zvcm1EaXN0YW5jZSh0aGlzX3dpZHRoKTsNCisgICAgRlhfRkxPQVQgdGhyZXNob2xkID0gcHJldl93aWR0aCA+IHRoaXNfd2lkdGggPyBwcmV2X3dpZHRoIC8gNCA6IHRoaXNfd2lkdGggLyA0Ow0KKyAgICBGWF9GTE9BVCBwcmV2X3ggPSBwcmV2X09iai5tX3BUZXh0T2JqLT5HZXRQb3NYKCksIHByZXZfeSA9IHByZXZfT2JqLm1fcFRleHRPYmotPkdldFBvc1koKTsNCisgICAgcHJldl9PYmoubV9mb3JtTWF0cml4LlRyYW5zZm9ybShwcmV2X3gsIHByZXZfeSk7DQorICAgIG1fRGlzcGxheU1hdHJpeC5UcmFuc2Zvcm0ocHJldl94LCBwcmV2X3kpOw0KKyAgICBGWF9GTE9BVCB0aGlzX3ggPSBwVGV4dE9iai0+R2V0UG9zWCgpLCB0aGlzX3kgPSBwVGV4dE9iai0+R2V0UG9zWSgpOw0KKyAgICBmb3JtTWF0cml4LlRyYW5zZm9ybSh0aGlzX3gsIHRoaXNfeSk7DQorICAgIG1fRGlzcGxheU1hdHJpeC5UcmFuc2Zvcm0odGhpc194LCB0aGlzX3kpOw0KKyAgICBpZiAoRlhTWVNfZmFicyh0aGlzX3kgLSBwcmV2X3kpID4gdGhyZXNob2xkICogMikgew0KKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsNCisgICAgICAgICAgICBQcm9jZXNzVGV4dE9iamVjdChtX0xpbmVPYmouR2V0QXQoaSkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9MaW5lT2JqLlJlbW92ZUFsbCgpOw0KKyAgICAgICAgbV9MaW5lT2JqLkFkZChPYmopOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBpID0gMDsNCisgICAgaWYobV9QYXJzZU9wdGlvbnMubV9iTm9ybWFsaXplT2Jqcykgew0KKyAgICAgICAgZm9yKGkgPSBjb3VudCAtIDE7IGkgPj0gMDsgaS0tKSB7DQorICAgICAgICAgICAgUERGVEVYVF9PYmogcHJldl9PYmogPSBtX0xpbmVPYmouR2V0QXQoaSk7DQorICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBwcmV2X21hdHJpeDsNCisgICAgICAgICAgICBwcmV2X09iai5tX3BUZXh0T2JqLT5HZXRUZXh0TWF0cml4KCZwcmV2X21hdHJpeCk7DQorICAgICAgICAgICAgRlhfRkxPQVQgUHJldl94ID0gcHJldl9PYmoubV9wVGV4dE9iai0+R2V0UG9zWCgpLCBQcmV2X3kgPSBwcmV2X09iai5tX3BUZXh0T2JqLT5HZXRQb3NZKCk7DQorICAgICAgICAgICAgcHJldl9PYmoubV9mb3JtTWF0cml4LlRyYW5zZm9ybShQcmV2X3gsIFByZXZfeSk7DQorICAgICAgICAgICAgbV9EaXNwbGF5TWF0cml4LlRyYW5zZm9ybShQcmV2X3gsIFByZXZfeSk7DQorICAgICAgICAgICAgaWYodGhpc194ID49IFByZXZfeCkgew0KKyAgICAgICAgICAgICAgICBpZihpID09IGNvdW50IC0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9MaW5lT2JqLkFkZChPYmopOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbV9MaW5lT2JqLkluc2VydEF0KGkgKyAxLCBPYmopOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmKGkgPCAwKSB7DQorICAgICAgICAgICAgbV9MaW5lT2JqLkluc2VydEF0KDAsIE9iaik7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX0xpbmVPYmouQWRkKE9iaik7DQorICAgIH0NCit9DQorRlhfSU5UMzIgQ1BERl9UZXh0UGFnZTo6UHJlTWFya2VkQ29udGVudChQREZURVhUX09iaiBPYmopDQorew0KKyAgICBDUERGX1RleHRPYmplY3QqIHBUZXh0T2JqID0gT2JqLm1fcFRleHRPYmo7DQorICAgIENQREZfQ29udGVudE1hcmtEYXRhKiBwTWFya0RhdGEgPSAoQ1BERl9Db250ZW50TWFya0RhdGEqKXBUZXh0T2JqLT5tX0NvbnRlbnRNYXJrLkdldE9iamVjdCgpOw0KKyAgICBpZighcE1hcmtEYXRhKSB7DQorICAgICAgICByZXR1cm4gRlBERlRFWFRfTUNfUEFTUzsNCisgICAgfQ0KKyAgICBpbnQgbkNvbnRlbnRNYXJrID0gcE1hcmtEYXRhLT5Db3VudEl0ZW1zKCk7DQorICAgIGlmIChuQ29udGVudE1hcmsgPCAxKSB7DQorICAgICAgICByZXR1cm4gRlBERlRFWFRfTUNfUEFTUzsNCisgICAgfQ0KKyAgICBDRlhfV2lkZVN0cmluZyBhY3RUZXh0Ow0KKyAgICBGWF9CT09MIGJFeGlzdCA9IEZBTFNFOw0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gTlVMTDsNCisgICAgaW50IG4gPSAwOw0KKyAgICBmb3IgKG4gPSAwOyBuIDwgbkNvbnRlbnRNYXJrOyBuKyspIHsNCisgICAgICAgIENQREZfQ29udGVudE1hcmtJdGVtJiBpdGVtID0gcE1hcmtEYXRhLT5HZXRJdGVtKG4pOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgdGFnU3RyID0gKENGWF9CeXRlU3RyaW5nKWl0ZW0uR2V0TmFtZSgpOw0KKyAgICAgICAgcERpY3QgPSAoQ1BERl9EaWN0aW9uYXJ5KilpdGVtLkdldFBhcmFtKCk7DQorICAgICAgICBDUERGX1N0cmluZyogdGVtcCA9IChDUERGX1N0cmluZyopcERpY3QtPkdldEVsZW1lbnQoRlhfQlNUUkMoIkFjdHVhbFRleHQiKSk7DQorICAgICAgICBpZiAodGVtcCkgew0KKyAgICAgICAgICAgIGJFeGlzdCA9IFRSVUU7DQorICAgICAgICAgICAgYWN0VGV4dCA9IHRlbXAtPkdldFVuaWNvZGVUZXh0KCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCFiRXhpc3QpIHsNCisgICAgICAgIHJldHVybiBGUERGVEVYVF9NQ19QQVNTOw0KKyAgICB9DQorICAgIGlmIChtX3BQcmVUZXh0T2JqKSB7DQorICAgICAgICBpZiAoQ1BERl9Db250ZW50TWFya0RhdGEqIHBQcmVNYXJrRGF0YSA9IChDUERGX0NvbnRlbnRNYXJrRGF0YSopbV9wUHJlVGV4dE9iai0+bV9Db250ZW50TWFyay5HZXRPYmplY3QoKSkgew0KKyAgICAgICAgICAgIGlmIChwUHJlTWFya0RhdGEtPkNvdW50SXRlbXMoKSA9PSBuKSB7DQorICAgICAgICAgICAgICAgIENQREZfQ29udGVudE1hcmtJdGVtJiBpdGVtID0gcFByZU1hcmtEYXRhLT5HZXRJdGVtKG4gLSAxKTsNCisgICAgICAgICAgICAgICAgaWYgKHBEaWN0ID09IGl0ZW0uR2V0UGFyYW0oKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZQREZURVhUX01DX0RPTkU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ1BERl9Gb250KglwRm9udCA9IHBUZXh0T2JqLT5HZXRGb250KCk7DQorICAgIEZYX1NUUlNJWkUgbkl0ZW1zID0gYWN0VGV4dC5HZXRMZW5ndGgoKTsNCisgICAgaWYgKG5JdGVtcyA8IDEpIHsNCisgICAgICAgIHJldHVybiBGUERGVEVYVF9NQ19QQVNTOw0KKyAgICB9DQorICAgIGJFeGlzdCA9IEZBTFNFOw0KKyAgICBmb3IgKEZYX1NUUlNJWkUgaSA9IDA7IGkgPCBuSXRlbXM7IGkrKykgew0KKyAgICAgICAgRlhfV0NIQVIgd0NoYXIgPSBhY3RUZXh0LkdldEF0KGkpOw0KKyAgICAgICAgaWYgKC0xID09IHBGb250LT5DaGFyQ29kZUZyb21Vbmljb2RlKHdDaGFyKSkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBiRXhpc3QgPSBUUlVFOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICghYkV4aXN0KSB7DQorICAgICAgICByZXR1cm4gRlBERlRFWFRfTUNfUEFTUzsNCisgICAgfQ0KKyAgICBiRXhpc3QgPSBGQUxTRTsNCisgICAgZm9yIChGWF9TVFJTSVpFIGogPSAwOyBqIDwgbkl0ZW1zOyBqKyspIHsNCisgICAgICAgIEZYX1dDSEFSIHdDaGFyID0gYWN0VGV4dC5HZXRBdChqKTsNCisgICAgICAgIGlmICgod0NoYXIgPiAweDgwICYmIHdDaGFyIDwgMHhGRkZEKSB8fCAod0NoYXIgPD0gMHg4MCAmJiBpc3ByaW50KHdDaGFyKSkpIHsNCisgICAgICAgICAgICBiRXhpc3QgPSBUUlVFOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICghYkV4aXN0KSB7DQorICAgICAgICByZXR1cm4gRlBERlRFWFRfTUNfRE9ORTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlBERlRFWFRfTUNfREVMQVk7DQorfQ0KK3ZvaWQgQ1BERl9UZXh0UGFnZTo6UHJvY2Vzc01hcmtlZENvbnRlbnQoUERGVEVYVF9PYmogT2JqKQ0KK3sNCisgICAgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dE9iaiA9IE9iai5tX3BUZXh0T2JqOw0KKyAgICBDUERGX0NvbnRlbnRNYXJrRGF0YSogcE1hcmtEYXRhID0gKENQREZfQ29udGVudE1hcmtEYXRhKilwVGV4dE9iai0+bV9Db250ZW50TWFyay5HZXRPYmplY3QoKTsNCisgICAgaWYoIXBNYXJrRGF0YSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBuQ29udGVudE1hcmsgPSBwTWFya0RhdGEtPkNvdW50SXRlbXMoKTsNCisgICAgaWYgKG5Db250ZW50TWFyayA8IDEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhfV2lkZVN0cmluZyBhY3RUZXh0Ow0KKyAgICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gTlVMTDsNCisgICAgaW50IG4gPSAwOw0KKyAgICBmb3IgKG4gPSAwOyBuIDwgbkNvbnRlbnRNYXJrOyBuKyspIHsNCisgICAgICAgIENQREZfQ29udGVudE1hcmtJdGVtJiBpdGVtID0gcE1hcmtEYXRhLT5HZXRJdGVtKG4pOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgdGFnU3RyID0gKENGWF9CeXRlU3RyaW5nKWl0ZW0uR2V0TmFtZSgpOw0KKyAgICAgICAgcERpY3QgPSAoQ1BERl9EaWN0aW9uYXJ5KilpdGVtLkdldFBhcmFtKCk7DQorICAgICAgICBDUERGX1N0cmluZyogdGVtcCA9IChDUERGX1N0cmluZyopcERpY3QtPkdldEVsZW1lbnQoRlhfQlNUUkMoIkFjdHVhbFRleHQiKSk7DQorICAgICAgICBpZiAodGVtcCkgew0KKyAgICAgICAgICAgIGFjdFRleHQgPSB0ZW1wLT5HZXRVbmljb2RlVGV4dCgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX1NUUlNJWkUgbkl0ZW1zID0gYWN0VGV4dC5HZXRMZW5ndGgoKTsNCisgICAgaWYgKG5JdGVtcyA8IDEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0ZvbnQqCXBGb250ID0gcFRleHRPYmotPkdldEZvbnQoKTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBmb3JtTWF0cml4ID0gT2JqLm1fZm9ybU1hdHJpeDsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7DQorICAgIHBUZXh0T2JqLT5HZXRUZXh0TWF0cml4KCZtYXRyaXgpOw0KKyAgICBtYXRyaXguQ29uY2F0KGZvcm1NYXRyaXgpOw0KKyAgICBGWF9GTE9BVCBmUG9zWCA9IHBUZXh0T2JqLT5HZXRQb3NYKCk7DQorICAgIEZYX0ZMT0FUIGZQb3NZID0gcFRleHRPYmotPkdldFBvc1koKTsNCisgICAgaW50IG5DaGFySW5mb0luZGV4ID0gbV9UZXh0QnVmLkdldExlbmd0aCgpOw0KKyAgICBDRlhfRmxvYXRSZWN0IGNoYXJCb3g7DQorICAgIGNoYXJCb3gudG9wID0gcFRleHRPYmotPm1fVG9wOw0KKyAgICBjaGFyQm94LmxlZnQgPSBwVGV4dE9iai0+bV9MZWZ0Ow0KKyAgICBjaGFyQm94LnJpZ2h0ID0gcFRleHRPYmotPm1fUmlnaHQ7DQorICAgIGNoYXJCb3guYm90dG9tID0gcFRleHRPYmotPm1fQm90dG9tOw0KKyAgICBmb3IgKEZYX1NUUlNJWkUgayA9IDA7IGsgPCBuSXRlbXM7IGsrKykgew0KKyAgICAgICAgRlhfV0NIQVIgd0NoYXIgPSBhY3RUZXh0LkdldEF0KGspOw0KKyAgICAgICAgaWYgKHdDaGFyIDw9IDB4ODAgJiYgIWlzcHJpbnQod0NoYXIpKSB7DQorICAgICAgICAgICAgd0NoYXIgPSAweDIwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHdDaGFyID49IDB4RkZGRCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgUEFHRUNIQVJfSU5GTyBjaGFyaW5mbzsNCisgICAgICAgIGNoYXJpbmZvLm1fT3JpZ2luWCA9IGZQb3NYOw0KKyAgICAgICAgY2hhcmluZm8ubV9PcmlnaW5ZID0gZlBvc1k7DQorICAgICAgICBjaGFyaW5mby5tX0luZGV4ID0gbkNoYXJJbmZvSW5kZXg7DQorICAgICAgICBjaGFyaW5mby5tX1VuaWNvZGUgPSB3Q2hhcjsNCisgICAgICAgIGNoYXJpbmZvLm1fQ2hhckNvZGUgPSBwRm9udC0+Q2hhckNvZGVGcm9tVW5pY29kZSh3Q2hhcik7DQorICAgICAgICBjaGFyaW5mby5tX0ZsYWcgPSBGUERGVEVYVF9DSEFSX1BJRUNFOw0KKyAgICAgICAgY2hhcmluZm8ubV9wVGV4dE9iaiA9IHBUZXh0T2JqOw0KKyAgICAgICAgY2hhcmluZm8ubV9DaGFyQm94LnRvcCA9IGNoYXJCb3gudG9wOw0KKyAgICAgICAgY2hhcmluZm8ubV9DaGFyQm94LmxlZnQgPSBjaGFyQm94LmxlZnQ7DQorICAgICAgICBjaGFyaW5mby5tX0NoYXJCb3gucmlnaHQgPSBjaGFyQm94LnJpZ2h0Ow0KKyAgICAgICAgY2hhcmluZm8ubV9DaGFyQm94LmJvdHRvbSA9IGNoYXJCb3guYm90dG9tOw0KKyAgICAgICAgY2hhcmluZm8ubV9NYXRyaXguQ29weShtYXRyaXgpOw0KKyAgICAgICAgbV9UZW1wVGV4dEJ1Zi5BcHBlbmRDaGFyKHdDaGFyKTsNCisgICAgICAgIG1fVGVtcENoYXJMaXN0LkFkZChjaGFyaW5mbyk7DQorICAgIH0NCit9DQordm9pZCBDUERGX1RleHRQYWdlOjpGaW5kUHJldmlvdXNUZXh0T2JqZWN0KHZvaWQpDQorew0KKyAgICBpZiAobV9UZW1wQ2hhckxpc3QuR2V0U2l6ZSgpIDwgMSAmJiBtX2NoYXJMaXN0LkdldFNpemUoKSA8IDEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBQQUdFQ0hBUl9JTkZPIHByZUNoYXI7DQorICAgIGlmIChtX1RlbXBDaGFyTGlzdC5HZXRTaXplKCkgPj0gMSkgew0KKyAgICAgICAgcHJlQ2hhciA9ICooUEFHRUNIQVJfSU5GTyopbV9UZW1wQ2hhckxpc3QuR2V0QXQobV9UZW1wQ2hhckxpc3QuR2V0U2l6ZSgpIC0gMSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwcmVDaGFyID0gKihQQUdFQ0hBUl9JTkZPKiltX2NoYXJMaXN0LkdldEF0KG1fY2hhckxpc3QuR2V0U2l6ZSgpIC0gMSk7DQorICAgIH0NCisgICAgaWYgKHByZUNoYXIubV9wVGV4dE9iaikgew0KKyAgICAgICAgbV9wUHJlVGV4dE9iaiA9IHByZUNoYXIubV9wVGV4dE9iajsNCisgICAgfQ0KK30NCit2b2lkIENQREZfVGV4dFBhZ2U6OlByb2Nlc3NUZXh0T2JqZWN0KFBERlRFWFRfT2JqIE9iaikNCit7DQorICAgIENQREZfVGV4dE9iamVjdCogcFRleHRPYmogPSBPYmoubV9wVGV4dE9iajsNCisgICAgaWYoRlhTWVNfZmFicyhwVGV4dE9iai0+bV9SaWdodCAtIHBUZXh0T2JqLT5tX0xlZnQpIDwgMC4wMWYgKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBmb3JtTWF0cml4ID0gT2JqLm1fZm9ybU1hdHJpeDsNCisgICAgQ1BERl9Gb250KglwRm9udCA9IHBUZXh0T2JqLT5HZXRGb250KCk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4Ow0KKyAgICBwVGV4dE9iai0+R2V0VGV4dE1hdHJpeCgmbWF0cml4KTsNCisgICAgbWF0cml4LkNvbmNhdChmb3JtTWF0cml4KTsNCisgICAgRlhfSU5UMzIgYlByZU1LQyA9IFByZU1hcmtlZENvbnRlbnQoT2JqKTsNCisgICAgaWYgKEZQREZURVhUX01DX0RPTkUgPT0gYlByZU1LQykgew0KKyAgICAgICAgbV9wUHJlVGV4dE9iaiA9IHBUZXh0T2JqOw0KKyAgICAgICAgbV9wZXJNYXRyaXguQ29weShmb3JtTWF0cml4KTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgcmVzdWx0ID0gMDsNCisgICAgaWYgKG1fcFByZVRleHRPYmopIHsNCisgICAgICAgIHJlc3VsdCA9IFByb2Nlc3NJbnNlcnRPYmplY3QocFRleHRPYmosIGZvcm1NYXRyaXgpOw0KKyAgICAgICAgaWYgKDIgPT0gcmVzdWx0KSB7DQorICAgICAgICAgICAgbV9DdXJsaW5lUmVjdCA9IENGWF9GbG9hdFJlY3QoT2JqLm1fcFRleHRPYmotPm1fTGVmdCwgT2JqLm1fcFRleHRPYmotPm1fQm90dG9tLCBPYmoubV9wVGV4dE9iai0+bV9SaWdodCwgT2JqLm1fcFRleHRPYmotPm1fVG9wKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9DdXJsaW5lUmVjdC5VbmlvbihDRlhfRmxvYXRSZWN0KE9iai5tX3BUZXh0T2JqLT5tX0xlZnQsIE9iai5tX3BUZXh0T2JqLT5tX0JvdHRvbSwgT2JqLm1fcFRleHRPYmotPm1fUmlnaHQsIE9iai5tX3BUZXh0T2JqLT5tX1RvcCkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgUEFHRUNIQVJfSU5GTyBnZW5lcmF0ZUNoYXI7DQorICAgICAgICBpZiAocmVzdWx0ID09IDEpIHsNCisgICAgICAgICAgICBpZiAoR2VuZXJhdGVDaGFySW5mbyhURVhUX0JMQU5LX0NIQVIsIGdlbmVyYXRlQ2hhcikpIHsNCisgICAgICAgICAgICAgICAgaWYgKCFmb3JtTWF0cml4LklzSWRlbnRpdHkoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDaGFyLm1fTWF0cml4LkNvcHkoZm9ybU1hdHJpeCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9UZW1wVGV4dEJ1Zi5BcHBlbmRDaGFyKFRFWFRfQkxBTktfQ0hBUik7DQorICAgICAgICAgICAgICAgIG1fVGVtcENoYXJMaXN0LkFkZChnZW5lcmF0ZUNoYXIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZihyZXN1bHQgPT0gMikgew0KKyAgICAgICAgICAgIENsb3NlVGVtcExpbmUoKTsNCisgICAgICAgICAgICBpZihtX1RleHRCdWYuR2V0U2l6ZSgpKSB7DQorICAgICAgICAgICAgICAgIGlmKG1fUGFyc2VPcHRpb25zLm1fYkdldENoYXJDb2RlT25seSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9UZXh0QnVmLkFwcGVuZENoYXIoVEVYVF9SRVRVUk5fQ0hBUik7DQorICAgICAgICAgICAgICAgICAgICBtX1RleHRCdWYuQXBwZW5kQ2hhcihURVhUX0xJTkVGRUVEX0NIQVIpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgaWYoR2VuZXJhdGVDaGFySW5mbyhURVhUX1JFVFVSTl9DSEFSLCBnZW5lcmF0ZUNoYXIpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9UZXh0QnVmLkFwcGVuZENoYXIoVEVYVF9SRVRVUk5fQ0hBUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3JtTWF0cml4LklzSWRlbnRpdHkoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUNoYXIubV9NYXRyaXguQ29weShmb3JtTWF0cml4KTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9jaGFyTGlzdC5BZGQoZ2VuZXJhdGVDaGFyKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmKEdlbmVyYXRlQ2hhckluZm8oVEVYVF9MSU5FRkVFRF9DSEFSLCBnZW5lcmF0ZUNoYXIpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9UZXh0QnVmLkFwcGVuZENoYXIoVEVYVF9MSU5FRkVFRF9DSEFSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvcm1NYXRyaXguSXNJZGVudGl0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQ2hhci5tX01hdHJpeC5Db3B5KGZvcm1NYXRyaXgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NoYXJMaXN0LkFkZChnZW5lcmF0ZUNoYXIpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMyAmJiAhbV9QYXJzZU9wdGlvbnMubV9iT3V0cHV0SHlwaGVuKSB7DQorICAgICAgICAgICAgRlhfSU5UMzIgbkNoYXJzID0gcFRleHRPYmotPkNvdW50Q2hhcnMoKTsNCisgICAgICAgICAgICBpZiAobkNoYXJzID09IDEpIHsNCisgICAgICAgICAgICAgICAgQ1BERl9UZXh0T2JqZWN0SXRlbSBpdGVtOw0KKyAgICAgICAgICAgICAgICBwVGV4dE9iai0+R2V0Q2hhckluZm8oMCwgJml0ZW0pOw0KKyAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyB3c3RySXRlbSA9IHBUZXh0T2JqLT5HZXRGb250KCktPlVuaWNvZGVGcm9tQ2hhckNvZGUoaXRlbS5tX0NoYXJDb2RlKTsNCisgICAgICAgICAgICAgICAgaWYod3N0ckl0ZW0uSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICB3c3RySXRlbSArPSAoRlhfV0NIQVIpaXRlbS5tX0NoYXJDb2RlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX1dDSEFSIGN1ckNoYXIgPSB3c3RySXRlbS5HZXRBdCgwKTsNCisgICAgICAgICAgICAgICAgaWYgKDB4MkQgPT0gY3VyQ2hhciB8fCAweEFEID09IGN1ckNoYXIpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB3aGlsZSAobV9UZW1wVGV4dEJ1Zi5HZXRTaXplKCkgPiAwICYmIG1fVGVtcFRleHRCdWYuR2V0V2lkZVN0cmluZygpLkdldEF0KG1fVGVtcFRleHRCdWYuR2V0TGVuZ3RoKCkgLSAxKSA9PSAweDIwKSB7DQorICAgICAgICAgICAgICAgIG1fVGVtcFRleHRCdWYuRGVsZXRlKG1fVGVtcFRleHRCdWYuR2V0TGVuZ3RoKCkgLSAxLCAxKTsNCisgICAgICAgICAgICAgICAgbV9UZW1wQ2hhckxpc3QuRGVsZXRlKG1fVGVtcENoYXJMaXN0LkdldFNpemUoKSAtIDEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBQQUdFQ0hBUl9JTkZPKiBjaGEgPSAoUEFHRUNIQVJfSU5GTyopbV9UZW1wQ2hhckxpc3QuR2V0QXQobV9UZW1wQ2hhckxpc3QuR2V0U2l6ZSgpIC0gMSk7DQorICAgICAgICAgICAgbV9UZW1wVGV4dEJ1Zi5EZWxldGUobV9UZW1wVGV4dEJ1Zi5HZXRMZW5ndGgoKSAtIDEsIDEpOw0KKyNpZmRlZiBGT1hJVF9DSFJPTUVfQlVJTEQNCisgICAgICAgICAgICBjaGEtPm1fVW5pY29kZSA9IDB4MjsNCisgICAgICAgICAgICBjaGEtPm1fRmxhZyA9IEZQREZURVhUX0NIQVJfSFlQSEVOOw0KKyAgICAgICAgICAgIG1fVGVtcFRleHRCdWYuQXBwZW5kQ2hhcigweGZmZmUpOw0KKyNlbHNlDQorICAgICAgICAgICAgY2hhLT5tX1VuaWNvZGUgPSAwOw0KKyAgICAgICAgICAgIG1fVGVtcFRleHRCdWYuQXBwZW5kQ2hhcigweGZmZmUpOw0KKyNlbmRpZg0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9DdXJsaW5lUmVjdCA9IENGWF9GbG9hdFJlY3QoT2JqLm1fcFRleHRPYmotPm1fTGVmdCwgT2JqLm1fcFRleHRPYmotPm1fQm90dG9tLCBPYmoubV9wVGV4dE9iai0+bV9SaWdodCwgT2JqLm1fcFRleHRPYmotPm1fVG9wKTsNCisgICAgfQ0KKyAgICBpZiAoRlBERlRFWFRfTUNfREVMQVkgPT0gYlByZU1LQykgew0KKyAgICAgICAgUHJvY2Vzc01hcmtlZENvbnRlbnQoT2JqKTsNCisgICAgICAgIG1fcFByZVRleHRPYmogPSBwVGV4dE9iajsNCisgICAgICAgIG1fcGVyTWF0cml4LkNvcHkoZm9ybU1hdHJpeCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wUHJlVGV4dE9iaiA9IHBUZXh0T2JqOw0KKyAgICBtX3Blck1hdHJpeC5Db3B5KGZvcm1NYXRyaXgpOw0KKyAgICBpbnQgbkl0ZW1zID0gcFRleHRPYmotPkNvdW50SXRlbXMoKTsNCisgICAgRlhfRkxPQVQgc3BhY2luZyA9IDA7DQorICAgIEZYX0ZMT0FUIGJhc2VTcGFjZSA9IDAuMDsNCisgICAgRlhfQk9PTCBiQWxsQ2hhciA9IFRSVUU7DQorICAgIGlmIChwVGV4dE9iai0+bV9UZXh0U3RhdGUuR2V0T2JqZWN0KCktPm1fQ2hhclNwYWNlICYmIG5JdGVtcyA+PSAzKSB7DQorICAgICAgICBzcGFjaW5nID0gbWF0cml4LlRyYW5zZm9ybURpc3RhbmNlKHBUZXh0T2JqLT5tX1RleHRTdGF0ZS5HZXRPYmplY3QoKS0+bV9DaGFyU3BhY2UpOw0KKyAgICAgICAgYmFzZVNwYWNlID0gc3BhY2luZzsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkl0ZW1zOyBpKyspIHsNCisgICAgICAgICAgICBDUERGX1RleHRPYmplY3RJdGVtIGl0ZW07DQorICAgICAgICAgICAgcFRleHRPYmotPkdldEl0ZW1JbmZvKGksICZpdGVtKTsNCisgICAgICAgICAgICBpZiAoaXRlbS5tX0NoYXJDb2RlID09IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGZvbnRzaXplX2ggPSBwVGV4dE9iai0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemVIKCk7DQorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGtlcm5pbmcgPSAtZm9udHNpemVfaCAqIGl0ZW0ubV9PcmlnaW5YIC8gMTAwMDsNCisgICAgICAgICAgICAgICAgaWYoa2VybmluZyArIHNwYWNpbmcgPCBiYXNlU3BhY2UpIHsNCisgICAgICAgICAgICAgICAgICAgIGJhc2VTcGFjZSA9IGtlcm5pbmcgKyBzcGFjaW5nOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJBbGxDaGFyID0gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgc3BhY2luZyA9IDA7DQorICAgICAgICBpZihiYXNlU3BhY2UgPCAwLjAgfHwgKG5JdGVtcyA9PSAzICYmICFiQWxsQ2hhcikpIHsNCisgICAgICAgICAgICBiYXNlU3BhY2UgPSAwLjA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuSXRlbXM7IGkrKykgew0KKyAgICAgICAgQ1BERl9UZXh0T2JqZWN0SXRlbSBpdGVtOw0KKyAgICAgICAgUEFHRUNIQVJfSU5GTyBjaGFyaW5mbzsNCisgICAgICAgIGNoYXJpbmZvLm1fT3JpZ2luWCA9IDA7DQorICAgICAgICBjaGFyaW5mby5tX09yaWdpblkgPSAwOw0KKyAgICAgICAgcFRleHRPYmotPkdldEl0ZW1JbmZvKGksICZpdGVtKTsNCisgICAgICAgIGlmIChpdGVtLm1fQ2hhckNvZGUgPT0gKEZYX0RXT1JEKSAtIDEpIHsNCisgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBzdHIgPSBtX1RlbXBUZXh0QnVmLkdldFdpZGVTdHJpbmcoKTsNCisgICAgICAgICAgICBpZihzdHIuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIHN0ciA9IG1fVGV4dEJ1Zi5HZXRXaWRlU3RyaW5nKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzdHIuSXNFbXB0eSgpIHx8IHN0ci5HZXRBdChzdHIuR2V0TGVuZ3RoKCkgLSAxKSA9PSBURVhUX0JMQU5LX0NIQVIpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGZvbnRzaXplX2ggPSBwVGV4dE9iai0+bV9UZXh0U3RhdGUuR2V0Rm9udFNpemVIKCk7DQorICAgICAgICAgICAgc3BhY2luZyA9IC1mb250c2l6ZV9oICogaXRlbS5tX09yaWdpblggLyAxMDAwOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRkxPQVQgY2hhclNwYWNlID0gcFRleHRPYmotPm1fVGV4dFN0YXRlLkdldE9iamVjdCgpLT5tX0NoYXJTcGFjZTsNCisgICAgICAgIGlmIChjaGFyU3BhY2UgPiAwLjAwMSkgew0KKyAgICAgICAgICAgIHNwYWNpbmcgKz0gbWF0cml4LlRyYW5zZm9ybURpc3RhbmNlKGNoYXJTcGFjZSk7DQorICAgICAgICB9IGVsc2UgaWYoY2hhclNwYWNlIDwgLTAuMDAxKSB7DQorICAgICAgICAgICAgc3BhY2luZyAtPSBtYXRyaXguVHJhbnNmb3JtRGlzdGFuY2UoRlhTWVNfZmFicyhjaGFyU3BhY2UpKTsNCisgICAgICAgIH0NCisgICAgICAgIHNwYWNpbmcgLT0gYmFzZVNwYWNlOw0KKyAgICAgICAgaWYgKHNwYWNpbmcgJiYgaSA+IDApIHsNCisgICAgICAgICAgICBpbnQgbGFzdF93aWR0aCA9IDA7DQorICAgICAgICAgICAgRlhfRkxPQVQgZm9udHNpemVfaCA9IHBUZXh0T2JqLT5tX1RleHRTdGF0ZS5HZXRGb250U2l6ZUgoKTsNCisgICAgICAgICAgICBGWF9EV09SRCBzcGFjZV9jaGFyY29kZSA9IHBGb250LT5DaGFyQ29kZUZyb21Vbmljb2RlKCcgJyk7DQorICAgICAgICAgICAgRlhfRkxPQVQgdGhyZXNob2xkID0gMDsNCisgICAgICAgICAgICBpZiAoc3BhY2VfY2hhcmNvZGUgIT0gLTEpIHsNCisgICAgICAgICAgICAgICAgdGhyZXNob2xkID0gZm9udHNpemVfaCAqIHBGb250LT5HZXRDaGFyV2lkdGhGKHNwYWNlX2NoYXJjb2RlKSAvIDEwMDAgOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAodGhyZXNob2xkID4gZm9udHNpemVfaCAvIDMpIHsNCisgICAgICAgICAgICAgICAgdGhyZXNob2xkID0gMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICB0aHJlc2hvbGQgLz0gMjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHRocmVzaG9sZCA9PSAwKSB7DQorICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IGZvbnRzaXplX2g7DQorICAgICAgICAgICAgICAgIGludCB0aGlzX3dpZHRoID0gRlhTWVNfYWJzKEdldENoYXJXaWR0aChpdGVtLm1fQ2hhckNvZGUsIHBGb250KSk7DQorICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IHRoaXNfd2lkdGggPiBsYXN0X3dpZHRoID8gKEZYX0ZMT0FUKXRoaXNfd2lkdGggOiAoRlhfRkxPQVQpbGFzdF93aWR0aDsNCisgICAgICAgICAgICAgICAgaW50IG5EaXZpZGUgPSA2Ow0KKyAgICAgICAgICAgICAgICBpZiAodGhyZXNob2xkIDwgMzAwKSB7DQorICAgICAgICAgICAgICAgICAgICBuRGl2aWRlID0gMjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aHJlc2hvbGQgPCA1MDApIHsNCisgICAgICAgICAgICAgICAgICAgIG5EaXZpZGUgPSA0Ow0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRocmVzaG9sZCA8IDcwMCkgew0KKyAgICAgICAgICAgICAgICAgICAgbkRpdmlkZSA9IDU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgdGhyZXNob2xkID0gdGhyZXNob2xkIC8gbkRpdmlkZTsNCisgICAgICAgICAgICAgICAgdGhyZXNob2xkID0gZm9udHNpemVfaCAqIHRocmVzaG9sZCAvIDEwMDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICh0aHJlc2hvbGQgJiYgKHNwYWNpbmcgJiYgc3BhY2luZyA+PSB0aHJlc2hvbGQpICkgew0KKyAgICAgICAgICAgICAgICBjaGFyaW5mby5tX1VuaWNvZGUgPSBURVhUX0JMQU5LX0NIQVI7DQorICAgICAgICAgICAgICAgIGNoYXJpbmZvLm1fRmxhZyA9IEZQREZURVhUX0NIQVJfR0VORVJBVEVEOw0KKyAgICAgICAgICAgICAgICBjaGFyaW5mby5tX3BUZXh0T2JqID0gcFRleHRPYmo7DQorICAgICAgICAgICAgICAgIGNoYXJpbmZvLm1fSW5kZXggPSBtX1RleHRCdWYuR2V0TGVuZ3RoKCk7DQorICAgICAgICAgICAgICAgIG1fVGVtcFRleHRCdWYuQXBwZW5kQ2hhcihURVhUX0JMQU5LX0NIQVIpOw0KKyAgICAgICAgICAgICAgICBjaGFyaW5mby5tX0NoYXJDb2RlID0gLTE7DQorICAgICAgICAgICAgICAgIGNoYXJpbmZvLm1fTWF0cml4LkNvcHkoZm9ybU1hdHJpeCk7DQorICAgICAgICAgICAgICAgIG1hdHJpeC5UcmFuc2Zvcm0oaXRlbS5tX09yaWdpblgsIGl0ZW0ubV9PcmlnaW5ZLCBjaGFyaW5mby5tX09yaWdpblgsIGNoYXJpbmZvLm1fT3JpZ2luWSk7DQorICAgICAgICAgICAgICAgIGNoYXJpbmZvLm1fQ2hhckJveCA9IENGWF9GbG9hdFJlY3QoY2hhcmluZm8ubV9PcmlnaW5YLCBjaGFyaW5mby5tX09yaWdpblksIGNoYXJpbmZvLm1fT3JpZ2luWCwgY2hhcmluZm8ubV9PcmlnaW5ZKTsNCisgICAgICAgICAgICAgICAgbV9UZW1wQ2hhckxpc3QuQWRkKGNoYXJpbmZvKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGl0ZW0ubV9DaGFyQ29kZSA9PSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBzcGFjaW5nID0gMDsNCisgICAgICAgIENGWF9XaWRlU3RyaW5nIHdzdHJJdGVtID0gcEZvbnQtPlVuaWNvZGVGcm9tQ2hhckNvZGUoaXRlbS5tX0NoYXJDb2RlKTsNCisgICAgICAgIEZYX0JPT0wgYk5vVW5pY29kZSA9IEZBTFNFOw0KKyAgICAgICAgRlhfV0NIQVIgd0NoYXIgPSB3c3RySXRlbS5HZXRBdCgwKTsNCisgICAgICAgIGlmICgod3N0ckl0ZW0uSXNFbXB0eSgpIHx8IHdDaGFyID09IDApICYmIGl0ZW0ubV9DaGFyQ29kZSkgew0KKyAgICAgICAgICAgIGlmKHdzdHJJdGVtLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgICAgICB3c3RySXRlbSArPSAoRlhfV0NIQVIpaXRlbS5tX0NoYXJDb2RlOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHdzdHJJdGVtLlNldEF0KDAsIChGWF9XQ0hBUilpdGVtLm1fQ2hhckNvZGUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBiTm9Vbmljb2RlID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGNoYXJpbmZvLm1fSW5kZXggPSAtMTsNCisgICAgICAgIGNoYXJpbmZvLm1fQ2hhckNvZGUgPSBpdGVtLm1fQ2hhckNvZGU7DQorICAgICAgICBpZihiTm9Vbmljb2RlKSB7DQorICAgICAgICAgICAgY2hhcmluZm8ubV9GbGFnID0gRlBERlRFWFRfQ0hBUl9VTlVOSUNPREU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGNoYXJpbmZvLm1fRmxhZyA9IEZQREZURVhUX0NIQVJfTk9STUFMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2hhcmluZm8ubV9wVGV4dE9iaiA9IHBUZXh0T2JqOw0KKyAgICAgICAgY2hhcmluZm8ubV9PcmlnaW5YID0gMCwgY2hhcmluZm8ubV9PcmlnaW5ZID0gMDsNCisgICAgICAgIG1hdHJpeC5UcmFuc2Zvcm0oaXRlbS5tX09yaWdpblgsIGl0ZW0ubV9PcmlnaW5ZLCBjaGFyaW5mby5tX09yaWdpblgsIGNoYXJpbmZvLm1fT3JpZ2luWSk7DQorICAgICAgICBGWF9SRUNUIHJlY3QoMCwgMCwgMCwgMCk7DQorICAgICAgICByZWN0LkludGVyc2VjdCgwLCAwLCAwLCAwKTsNCisgICAgICAgIGNoYXJpbmZvLm1fcFRleHRPYmotPkdldEZvbnQoKS0+R2V0Q2hhckJCb3goY2hhcmluZm8ubV9DaGFyQ29kZSwgcmVjdCk7DQorICAgICAgICBjaGFyaW5mby5tX0NoYXJCb3gudG9wID0gcmVjdC50b3AgKiBwVGV4dE9iai0+R2V0Rm9udFNpemUoKSAvIDEwMDAgKyBpdGVtLm1fT3JpZ2luWTsNCisgICAgICAgIGNoYXJpbmZvLm1fQ2hhckJveC5sZWZ0ID0gcmVjdC5sZWZ0ICogcFRleHRPYmotPkdldEZvbnRTaXplKCkgLyAxMDAwICsgaXRlbS5tX09yaWdpblg7DQorICAgICAgICBjaGFyaW5mby5tX0NoYXJCb3gucmlnaHQgPSByZWN0LnJpZ2h0ICogcFRleHRPYmotPkdldEZvbnRTaXplKCkgLyAxMDAwICsgaXRlbS5tX09yaWdpblg7DQorICAgICAgICBjaGFyaW5mby5tX0NoYXJCb3guYm90dG9tID0gcmVjdC5ib3R0b20gKiBwVGV4dE9iai0+R2V0Rm9udFNpemUoKSAvIDEwMDAgKyBpdGVtLm1fT3JpZ2luWTsNCisgICAgICAgIGlmIChmYWJzZihjaGFyaW5mby5tX0NoYXJCb3gudG9wIC0gY2hhcmluZm8ubV9DaGFyQm94LmJvdHRvbSkgPCAwLjAxZikgew0KKyAgICAgICAgICAgIGNoYXJpbmZvLm1fQ2hhckJveC50b3AgPSBjaGFyaW5mby5tX0NoYXJCb3guYm90dG9tICsgcFRleHRPYmotPkdldEZvbnRTaXplKCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoZmFic2YoY2hhcmluZm8ubV9DaGFyQm94LnJpZ2h0IC0gY2hhcmluZm8ubV9DaGFyQm94LmxlZnQpIDwgMC4wMWYpIHsNCisgICAgICAgICAgICBjaGFyaW5mby5tX0NoYXJCb3gucmlnaHQgPSBjaGFyaW5mby5tX0NoYXJCb3gubGVmdCArIHBUZXh0T2JqLT5HZXRDaGFyV2lkdGgoY2hhcmluZm8ubV9DaGFyQ29kZSk7DQorICAgICAgICB9DQorICAgICAgICBtYXRyaXguVHJhbnNmb3JtUmVjdChjaGFyaW5mby5tX0NoYXJCb3gpOw0KKyAgICAgICAgY2hhcmluZm8ubV9NYXRyaXguQ29weShtYXRyaXgpOw0KKyAgICAgICAgaWYgKHdzdHJJdGVtLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIGNoYXJpbmZvLm1fVW5pY29kZSA9IDA7DQorICAgICAgICAgICAgbV9UZW1wQ2hhckxpc3QuQWRkKGNoYXJpbmZvKTsNCisgICAgICAgICAgICBtX1RlbXBUZXh0QnVmLkFwcGVuZENoYXIoMHhmZmZlKTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaW50IG5Ub3RhbCA9IHdzdHJJdGVtLkdldExlbmd0aCgpOw0KKyAgICAgICAgICAgIGludCBuID0gMDsNCisgICAgICAgICAgICBGWF9CT09MIGJEZWwgPSBGQUxTRTsNCisgICAgICAgICAgICB3aGlsZSAobiA8IG1fVGVtcENoYXJMaXN0LkdldFNpemUoKSAmJiBuIDwgNykgew0KKyAgICAgICAgICAgICAgICBuKys7DQorICAgICAgICAgICAgICAgIFBBR0VDSEFSX0lORk8qIGNoYXJpbmZvMSA9IChQQUdFQ0hBUl9JTkZPKiltX1RlbXBDaGFyTGlzdC5HZXRBdChtX1RlbXBDaGFyTGlzdC5HZXRTaXplKCkgLSBuKTsNCisgICAgICAgICAgICAgICAgaWYoY2hhcmluZm8xLT5tX0NoYXJDb2RlID09IGNoYXJpbmZvLm1fQ2hhckNvZGUgJiYNCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyaW5mbzEtPm1fcFRleHRPYmotPkdldEZvbnQoKSA9PSBjaGFyaW5mby5tX3BUZXh0T2JqLT5HZXRGb250KCkgICYmDQorICAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfZmFicyhjaGFyaW5mbzEtPm1fT3JpZ2luWCAtIGNoYXJpbmZvLm1fT3JpZ2luWCkgPCBURVhUX0NIQVJSQVRJT19HQVBERUxUQSAqIHBUZXh0T2JqLT5HZXRGb250U2l6ZSgpICAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX2ZhYnMoY2hhcmluZm8xLT5tX09yaWdpblkgLSBjaGFyaW5mby5tX09yaWdpblkpIDwgVEVYVF9DSEFSUkFUSU9fR0FQREVMVEEgKiBwVGV4dE9iai0+R2V0Rm9udFNpemUoKSApIHsNCisgICAgICAgICAgICAgICAgICAgIGJEZWwgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoIWJEZWwpIHsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgbkluZGV4ID0gMDsgbkluZGV4IDwgblRvdGFsOyBuSW5kZXgrKykgew0KKyAgICAgICAgICAgICAgICAgICAgY2hhcmluZm8ubV9Vbmljb2RlID0gd3N0ckl0ZW0uR2V0QXQobkluZGV4KTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyaW5mby5tX1VuaWNvZGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyaW5mby5tX0luZGV4ID0gbV9UZXh0QnVmLkdldExlbmd0aCgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fVGVtcFRleHRCdWYuQXBwZW5kQ2hhcihjaGFyaW5mby5tX1VuaWNvZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX1RlbXBUZXh0QnVmLkFwcGVuZENoYXIoMHhmZmZlKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fVGVtcENoYXJMaXN0LkFkZChjaGFyaW5mbyk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2UgaWYoaSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHN0ciA9IG1fVGVtcFRleHRCdWYuR2V0V2lkZVN0cmluZygpOw0KKyAgICAgICAgICAgICAgICBpZiAoIXN0ci5Jc0VtcHR5KCkgJiYgc3RyLkdldEF0KHN0ci5HZXRMZW5ndGgoKSAtIDEpID09IFRFWFRfQkxBTktfQ0hBUikgew0KKyAgICAgICAgICAgICAgICAgICAgbV9UZW1wVGV4dEJ1Zi5EZWxldGUobV9UZW1wVGV4dEJ1Zi5HZXRMZW5ndGgoKSAtIDEsIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9UZW1wQ2hhckxpc3QuRGVsZXRlKG1fVGVtcENoYXJMaXN0LkdldFNpemUoKSAtIDEpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0lOVDMyIENQREZfVGV4dFBhZ2U6OkdldFRleHRPYmplY3RXcml0aW5nTW9kZShjb25zdCBDUERGX1RleHRPYmplY3QqIHBUZXh0T2JqKQ0KK3sNCisgICAgRlhfSU5UMzIgbkNoYXJzID0gcFRleHRPYmotPkNvdW50Q2hhcnMoKTsNCisgICAgaWYgKG5DaGFycyA9PSAxKSB7DQorICAgICAgICByZXR1cm4gbV9UZXh0bGluZURpcjsNCisgICAgfQ0KKyAgICBDUERGX1RleHRPYmplY3RJdGVtIGZpcnN0LCBsYXN0Ow0KKyAgICBwVGV4dE9iai0+R2V0Q2hhckluZm8oMCwgJmZpcnN0KTsNCisgICAgcFRleHRPYmotPkdldENoYXJJbmZvKG5DaGFycyAtIDEsICZsYXN0KTsNCisgICAgQ0ZYX01hdHJpeCB0ZXh0TWF0cml4Ow0KKyAgICBwVGV4dE9iai0+R2V0VGV4dE1hdHJpeCgmdGV4dE1hdHJpeCk7DQorICAgIHRleHRNYXRyaXguVHJhbnNmb3JtUG9pbnQoZmlyc3QubV9PcmlnaW5YLCBmaXJzdC5tX09yaWdpblkpOw0KKyAgICB0ZXh0TWF0cml4LlRyYW5zZm9ybVBvaW50KGxhc3QubV9PcmlnaW5YLCBsYXN0Lm1fT3JpZ2luWSk7DQorICAgIEZYX0ZMT0FUIGRYID0gRlhTWVNfZmFicyhsYXN0Lm1fT3JpZ2luWCAtIGZpcnN0Lm1fT3JpZ2luWCk7DQorICAgIEZYX0ZMT0FUIGRZID0gRlhTWVNfZmFicyhsYXN0Lm1fT3JpZ2luWSAtIGZpcnN0Lm1fT3JpZ2luWSk7DQorICAgIGlmIChkWCA8PSAwLjAwMDFmICYmIGRZIDw9IDAuMDAwMWYpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBDRlhfVmVjdG9yRiB2Ow0KKyAgICB2LlNldChkWCwgZFkpOw0KKyAgICB2Lk5vcm1hbGl6ZSgpOw0KKyAgICBpZiAodi55IDw9IDAuMDg3MmYpIHsNCisgICAgICAgIGlmICh2LnggPD0gMC4wODcyZikgew0KKyAgICAgICAgICAgIHJldHVybiBtX1RleHRsaW5lRGlyOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0gZWxzZSBpZiAodi54IDw9IDAuMDg3MmYpIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIHJldHVybiBtX1RleHRsaW5lRGlyOw0KK30NCitGWF9CT09MIENQREZfVGV4dFBhZ2U6OklzSHlwaGVuKEZYX1dDSEFSIGN1ckNoYXIpDQorew0KKyAgICBDRlhfV2lkZVN0cmluZyBzdHJDdXJUZXh0ID0gbV9UZW1wVGV4dEJ1Zi5HZXRXaWRlU3RyaW5nKCk7DQorICAgIGlmKHN0ckN1clRleHQuR2V0TGVuZ3RoKCkgPT0gMCkgew0KKyAgICAgICAgc3RyQ3VyVGV4dCA9IG1fVGV4dEJ1Zi5HZXRXaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgRlhfU1RSU0laRSBuQ291bnQgPSBzdHJDdXJUZXh0LkdldExlbmd0aCgpOw0KKyAgICBpbnQgbkluZGV4ID0gbkNvdW50IC0gMTsNCisgICAgRlhfV0NIQVIgd2NUbXAgPSBzdHJDdXJUZXh0LkdldEF0KG5JbmRleCk7DQorICAgIHdoaWxlKHdjVG1wID09IDB4MjAgJiYgbkluZGV4IDw9IG5Db3VudCAtIDEgJiYgbkluZGV4ID49IDApIHsNCisgICAgICAgIHdjVG1wID0gc3RyQ3VyVGV4dC5HZXRBdCgtLW5JbmRleCk7DQorICAgIH0NCisgICAgaWYgKDB4MkQgPT0gd2NUbXAgfHwgMHhBRCA9PSB3Y1RtcCkgew0KKyAgICAgICAgaWYgKC0tbkluZGV4ID4gMCkgew0KKyAgICAgICAgICAgIEZYX1dDSEFSIHByZUNoYXIgPSBzdHJDdXJUZXh0LkdldEF0KChuSW5kZXgpKTsNCisgICAgICAgICAgICBpZiAoKChwcmVDaGFyID49IEwnQScgJiYgcHJlQ2hhciA8PSBMJ1onKSB8fCAocHJlQ2hhciA+PSBMJ2EnICYmIHByZUNoYXIgPD0gTCd6JykpDQorICAgICAgICAgICAgICAgICAgICAmJiAoKGN1ckNoYXIgPj0gTCdBJyAmJiBjdXJDaGFyIDw9IEwnWicpIHx8IChjdXJDaGFyID49IEwnYScgJiYgY3VyQ2hhciA8PSBMJ3onKSkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IHNpemUgPSBtX1RlbXBDaGFyTGlzdC5HZXRTaXplKCk7DQorICAgICAgICBQQUdFQ0hBUl9JTkZPIHByZUNoYXI7DQorICAgICAgICBpZiAoc2l6ZSkgew0KKyAgICAgICAgICAgIHByZUNoYXIgPSAoUEFHRUNIQVJfSU5GTyltX1RlbXBDaGFyTGlzdFtzaXplIC0gMV07DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNpemUgPSBtX2NoYXJMaXN0LkdldFNpemUoKTsNCisgICAgICAgICAgICBpZihzaXplID09IDApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwcmVDaGFyID0gKFBBR0VDSEFSX0lORk8pbV9jaGFyTGlzdFtzaXplIC0gMV07DQorICAgICAgICB9DQorICAgICAgICBpZiAoRlBERlRFWFRfQ0hBUl9QSUVDRSA9PSBwcmVDaGFyLm1fRmxhZykNCisgICAgICAgICAgICBpZiAoMHhBRCA9PSBwcmVDaGFyLm1fVW5pY29kZSB8fCAweDJEID09IHByZUNoYXIubV9Vbmljb2RlKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK2ludCBDUERGX1RleHRQYWdlOjpQcm9jZXNzSW5zZXJ0T2JqZWN0KGNvbnN0IENQREZfVGV4dE9iamVjdCogcE9iaiwgQ0ZYX0FmZmluZU1hdHJpeCBmb3JtTWF0cml4KQ0KK3sNCisgICAgRmluZFByZXZpb3VzVGV4dE9iamVjdCgpOw0KKyAgICBGWF9CT09MIGJOZXdsaW5lID0gRkFMU0U7DQorICAgIGludCBXcml0aW5nTW9kZSA9IEdldFRleHRPYmplY3RXcml0aW5nTW9kZShwT2JqKTsNCisgICAgaWYoV3JpdGluZ01vZGUgPT0gLTEpIHsNCisgICAgICAgIFdyaXRpbmdNb2RlID0gR2V0VGV4dE9iamVjdFdyaXRpbmdNb2RlKG1fcFByZVRleHRPYmopOw0KKyAgICB9DQorICAgIENGWF9GbG9hdFJlY3QgdGhpc19yZWN0KHBPYmotPm1fTGVmdCwgcE9iai0+bV9Cb3R0b20sIHBPYmotPm1fUmlnaHQsIHBPYmotPm1fVG9wKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCBwcmV2X3JlY3QobV9wUHJlVGV4dE9iai0+bV9MZWZ0LCBtX3BQcmVUZXh0T2JqLT5tX0JvdHRvbSwgbV9wUHJlVGV4dE9iai0+bV9SaWdodCwgbV9wUHJlVGV4dE9iai0+bV9Ub3ApOw0KKyAgICBDUERGX1RleHRPYmplY3RJdGVtIFByZXZJdGVtLCBpdGVtOw0KKyAgICBpbnQgbkl0ZW0gPSBtX3BQcmVUZXh0T2JqLT5Db3VudEl0ZW1zKCk7DQorICAgIG1fcFByZVRleHRPYmotPkdldEl0ZW1JbmZvKG5JdGVtIC0gMSwgJlByZXZJdGVtKTsNCisgICAgcE9iai0+R2V0SXRlbUluZm8oMCwgJml0ZW0pOw0KKyAgICBDRlhfV2lkZVN0cmluZyB3c3RySXRlbSA9IHBPYmotPkdldEZvbnQoKS0+VW5pY29kZUZyb21DaGFyQ29kZShpdGVtLm1fQ2hhckNvZGUpOw0KKyAgICBpZih3c3RySXRlbS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHdzdHJJdGVtICs9IChGWF9XQ0hBUilpdGVtLm1fQ2hhckNvZGU7DQorICAgIH0NCisgICAgRlhfV0NIQVIgY3VyQ2hhciA9IHdzdHJJdGVtLkdldEF0KDApOw0KKyAgICBpZihXcml0aW5nTW9kZSA9PSAwKSB7DQorICAgICAgICBpZih0aGlzX3JlY3QuSGVpZ2h0KCkgPiA0LjUgJiYgcHJldl9yZWN0LkhlaWdodCgpID4gNC41KSB7DQorICAgICAgICAgICAgRlhfRkxPQVQgdG9wID0gdGhpc19yZWN0LnRvcCA8IHByZXZfcmVjdC50b3AgPyB0aGlzX3JlY3QudG9wIDogcHJldl9yZWN0LnRvcDsNCisgICAgICAgICAgICBGWF9GTE9BVCBib3R0b20gPSB0aGlzX3JlY3QuYm90dG9tID4gcHJldl9yZWN0LmJvdHRvbSA/IHRoaXNfcmVjdC5ib3R0b20gOiBwcmV2X3JlY3QuYm90dG9tOw0KKyAgICAgICAgICAgIGlmKGJvdHRvbSA+PSB0b3ApIHsNCisgICAgICAgICAgICAgICAgaWYoSXNIeXBoZW4oY3VyQ2hhcikpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAzOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChXcml0aW5nTW9kZSA9PSAxKSB7DQorICAgICAgICBpZih0aGlzX3JlY3QuV2lkdGgoKSA+IHBPYmotPkdldEZvbnRTaXplKCkgKiAwLjFmICYmIHByZXZfcmVjdC5XaWR0aCgpID4gbV9wUHJlVGV4dE9iai0+R2V0Rm9udFNpemUoKSAqIDAuMWYpIHsNCisgICAgICAgICAgICBGWF9GTE9BVCBsZWZ0ID0gdGhpc19yZWN0LmxlZnQgPiBtX0N1cmxpbmVSZWN0LmxlZnQgPyB0aGlzX3JlY3QubGVmdCA6IG1fQ3VybGluZVJlY3QubGVmdDsNCisgICAgICAgICAgICBGWF9GTE9BVCByaWdodCA9IHRoaXNfcmVjdC5yaWdodCA8IG1fQ3VybGluZVJlY3QucmlnaHQgPyB0aGlzX3JlY3QucmlnaHQgOiBtX0N1cmxpbmVSZWN0LnJpZ2h0Ow0KKyAgICAgICAgICAgIGlmKHJpZ2h0IDw9IGxlZnQpIHsNCisgICAgICAgICAgICAgICAgaWYoSXNIeXBoZW4oY3VyQ2hhcikpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAzOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9GTE9BVCBsYXN0X3BvcyA9IFByZXZJdGVtLm1fT3JpZ2luWDsNCisgICAgaW50IG5MYXN0V2lkdGggPSBHZXRDaGFyV2lkdGgoUHJldkl0ZW0ubV9DaGFyQ29kZSwgbV9wUHJlVGV4dE9iai0+R2V0Rm9udCgpKTsNCisgICAgRlhfRkxPQVQgbGFzdF93aWR0aCA9IG5MYXN0V2lkdGggKiBtX3BQcmVUZXh0T2JqLT5HZXRGb250U2l6ZSgpIC8gMTAwMDsNCisgICAgbGFzdF93aWR0aCA9IEZYU1lTX2ZhYnMobGFzdF93aWR0aCk7DQorICAgIGludCBuVGhpc1dpZHRoID0gR2V0Q2hhcldpZHRoKGl0ZW0ubV9DaGFyQ29kZSwgcE9iai0+R2V0Rm9udCgpKTsNCisgICAgRlhfRkxPQVQgdGhpc193aWR0aCA9IG5UaGlzV2lkdGggKiBwT2JqLT5HZXRGb250U2l6ZSgpIC8gMTAwMDsNCisgICAgdGhpc193aWR0aCA9IEZYU1lTX2ZhYnModGhpc193aWR0aCk7DQorICAgIEZYX0ZMT0FUIHRocmVzaG9sZCA9IGxhc3Rfd2lkdGggPiB0aGlzX3dpZHRoID8gbGFzdF93aWR0aCAvIDQgOiB0aGlzX3dpZHRoIC8gNDsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBwcmV2X21hdHJpeCwgcHJldl9yZXZlcnNlOw0KKyAgICBtX3BQcmVUZXh0T2JqLT5HZXRUZXh0TWF0cml4KCZwcmV2X21hdHJpeCk7DQorICAgIHByZXZfbWF0cml4LkNvbmNhdChtX3Blck1hdHJpeCk7DQorICAgIHByZXZfcmV2ZXJzZS5TZXRSZXZlcnNlKHByZXZfbWF0cml4KTsNCisgICAgRlhfRkxPQVQgeCA9IHBPYmotPkdldFBvc1goKTsNCisgICAgRlhfRkxPQVQgeSA9IHBPYmotPkdldFBvc1koKTsNCisgICAgZm9ybU1hdHJpeC5UcmFuc2Zvcm0oeCwgeSk7DQorICAgIHByZXZfcmV2ZXJzZS5UcmFuc2Zvcm0oeCwgeSk7DQorICAgIGlmKGxhc3Rfd2lkdGggPCB0aGlzX3dpZHRoKSB7DQorICAgICAgICB0aHJlc2hvbGQgPSBwcmV2X3JldmVyc2UuVHJhbnNmb3JtRGlzdGFuY2UodGhyZXNob2xkKTsNCisgICAgfQ0KKyAgICBDRlhfRmxvYXRSZWN0IHJlY3QxKG1fcFByZVRleHRPYmotPm1fTGVmdCwgcE9iai0+bV9Cb3R0b20sIG1fcFByZVRleHRPYmotPm1fUmlnaHQsIHBPYmotPm1fVG9wKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0MihtX3BQcmVUZXh0T2JqLT5tX0xlZnQsIG1fcFByZVRleHRPYmotPm1fQm90dG9tLCBtX3BQcmVUZXh0T2JqLT5tX1JpZ2h0LCBtX3BQcmVUZXh0T2JqLT5tX1RvcCk7DQorICAgIENGWF9GbG9hdFJlY3QgcmVjdDMgPSByZWN0MTsNCisgICAgcmVjdDEuSW50ZXJzZWN0KHJlY3QyKTsNCisgICAgaWYgKFdyaXRpbmdNb2RlID09IDApIHsNCisgICAgICAgIGlmICgocmVjdDEuSXNFbXB0eSgpICYmIHJlY3QyLkhlaWdodCgpID4gNSAmJiByZWN0My5IZWlnaHQoKSA+IDUpDQorICAgICAgICAgICAgICAgIHx8ICgoeSA+IHRocmVzaG9sZCAqIDIgfHwgeSA8IHRocmVzaG9sZCAqIC0zKSAmJiAoRlhTWVNfZmFicyh5KSA8IDEgPyBGWFNZU19mYWJzKHgpIDwgRlhTWVNfZmFicyh5KSA6IFRSVUUpKSkgew0KKyAgICAgICAgICAgIGJOZXdsaW5lID0gVFJVRTsNCisgICAgICAgICAgICBpZihuSXRlbSA+IDEgKSB7DQorICAgICAgICAgICAgICAgIENQREZfVGV4dE9iamVjdEl0ZW0gdGVtcEl0ZW07DQorICAgICAgICAgICAgICAgIG1fcFByZVRleHRPYmotPkdldEl0ZW1JbmZvKDAsICZ0ZW1wSXRlbSk7DQorICAgICAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbTsNCisgICAgICAgICAgICAgICAgbV9wUHJlVGV4dE9iai0+R2V0VGV4dE1hdHJpeCgmbSk7DQorICAgICAgICAgICAgICAgIGlmKFByZXZJdGVtLm1fT3JpZ2luWCA+IHRlbXBJdGVtLm1fT3JpZ2luWCAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fRGlzcGxheU1hdHJpeC5hID4gMC45ICYmIG1fRGlzcGxheU1hdHJpeC5iIDwgMC4xICYmDQorICAgICAgICAgICAgICAgICAgICAgICAgbV9EaXNwbGF5TWF0cml4LmMgPCAwLjEgJiYgbV9EaXNwbGF5TWF0cml4LmQgPCAtMC45DQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgbS5iIDwgMC4xICYmIG0uYyA8IDAuMSApIHsNCisgICAgICAgICAgICAgICAgICAgIENGWF9GbG9hdFJlY3QgcmUoMCwgbV9wUHJlVGV4dE9iai0+bV9Cb3R0b20sIDEwMDAsIG1fcFByZVRleHRPYmotPm1fVG9wKTsNCisgICAgICAgICAgICAgICAgICAgIGlmKHJlLkNvbnRhaW5zKHBPYmotPkdldFBvc1goKSwgcE9iai0+R2V0UG9zWSgpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJOZXdsaW5lID0gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENGWF9GbG9hdFJlY3QgcmUoMCwgcE9iai0+bV9Cb3R0b20sIDEwMDAsIHBPYmotPm1fVG9wKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZihyZS5Db250YWlucyhtX3BQcmVUZXh0T2JqLT5HZXRQb3NYKCksIG1fcFByZVRleHRPYmotPkdldFBvc1koKSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYk5ld2xpbmUgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoYk5ld2xpbmUpIHsNCisgICAgICAgIGlmKElzSHlwaGVuKGN1ckNoYXIpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDM7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMjsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBuQ2hhcnMgPSBwT2JqLT5Db3VudENoYXJzKCk7DQorICAgIGlmIChuQ2hhcnMgPT0gMSAmJiAoIDB4MkQgPT0gY3VyQ2hhciB8fCAweEFEID09IGN1ckNoYXIpKQ0KKyAgICAgICAgaWYgKElzSHlwaGVuKGN1ckNoYXIpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDM7DQorICAgICAgICB9DQorICAgIENGWF9XaWRlU3RyaW5nIFByZXZTdHIgPSBtX3BQcmVUZXh0T2JqLT5HZXRGb250KCktPlVuaWNvZGVGcm9tQ2hhckNvZGUoUHJldkl0ZW0ubV9DaGFyQ29kZSk7DQorICAgIEZYX1dDSEFSIHByZUNoYXIgPSBQcmV2U3RyLkdldEF0KFByZXZTdHIuR2V0TGVuZ3RoKCkgLSAxKTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7DQorICAgIHBPYmotPkdldFRleHRNYXRyaXgoJm1hdHJpeCk7DQorICAgIG1hdHJpeC5Db25jYXQoZm9ybU1hdHJpeCk7DQorICAgIHRocmVzaG9sZCA9IChGWF9GTE9BVCkobkxhc3RXaWR0aCA+IG5UaGlzV2lkdGggPyBuTGFzdFdpZHRoIDogblRoaXNXaWR0aCk7DQorICAgIHRocmVzaG9sZCA9IHRocmVzaG9sZCA+IDQwMCA/ICh0aHJlc2hvbGQgPCA3MDAgPyB0aHJlc2hvbGQgLyA0IDogICh0aHJlc2hvbGQgPiA4MDAgPyB0aHJlc2hvbGQgLyA2IDogdGhyZXNob2xkIC8gNSkpIDogKHRocmVzaG9sZCAvIDIpOw0KKyAgICBpZihuTGFzdFdpZHRoID49IG5UaGlzV2lkdGgpIHsNCisgICAgICAgIHRocmVzaG9sZCAqPSBGWFNZU19mYWJzKG1fcFByZVRleHRPYmotPkdldEZvbnRTaXplKCkpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgdGhyZXNob2xkICo9IEZYU1lTX2ZhYnMocE9iai0+R2V0Rm9udFNpemUoKSk7DQorICAgICAgICB0aHJlc2hvbGQgPSBtYXRyaXguVHJhbnNmb3JtRGlzdGFuY2UodGhyZXNob2xkKTsNCisgICAgICAgIHRocmVzaG9sZCA9IHByZXZfcmV2ZXJzZS5UcmFuc2Zvcm1EaXN0YW5jZSh0aHJlc2hvbGQpOw0KKyAgICB9DQorICAgIHRocmVzaG9sZCAvPSAxMDAwOw0KKyAgICBpZigodGhyZXNob2xkIDwgMS40ODgxICYmIHRocmVzaG9sZCA+IDEuNDg3OSkNCisgICAgICAgICAgICB8fCAodGhyZXNob2xkIDwgMS4zOTAwMSAmJiB0aHJlc2hvbGQgPiAxLjM4OTk5KSkgew0KKyAgICAgICAgdGhyZXNob2xkICo9IDEuNTsNCisgICAgfQ0KKyAgICBpZiAoRlhTWVNfZmFicyhsYXN0X3BvcyArIGxhc3Rfd2lkdGggLSB4KSA+IHRocmVzaG9sZCAmJiBjdXJDaGFyICE9IEwnICcgJiYgcHJlQ2hhciAhPSBMJyAnKQ0KKyAgICAgICAgaWYgKGN1ckNoYXIgIT0gTCcgJyAmJiBwcmVDaGFyICE9IEwnICcpIHsNCisgICAgICAgICAgICBpZigoeCAtIGxhc3RfcG9zIC0gbGFzdF93aWR0aCkgPiB0aHJlc2hvbGQgfHwgKGxhc3RfcG9zIC0geCAtIGxhc3Rfd2lkdGgpID4gdGhyZXNob2xkKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZih4IDwgMCAmJiAobGFzdF9wb3MgLSB4IC0gbGFzdF93aWR0aCkgPiB0aHJlc2hvbGQpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmKCh4IC0gbGFzdF9wb3MgLSBsYXN0X3dpZHRoKSA+IHRoaXNfd2lkdGggfHwgKHggLSBsYXN0X3BvcyAtIHRoaXNfd2lkdGgpID4gbGFzdF93aWR0aCApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorRlhfQk9PTCBDUERGX1RleHRQYWdlOjpJc1NhbWVUZXh0T2JqZWN0KENQREZfVGV4dE9iamVjdCogcFRleHRPYmoxLCBDUERGX1RleHRPYmplY3QqIHBUZXh0T2JqMikNCit7DQorICAgIGlmICghcFRleHRPYmoxIHx8ICFwVGV4dE9iajIpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDRlhfRmxvYXRSZWN0IHJjUHJlT2JqKHBUZXh0T2JqMi0+bV9MZWZ0LCBwVGV4dE9iajItPm1fQm90dG9tLCBwVGV4dE9iajItPm1fUmlnaHQsIHBUZXh0T2JqMi0+bV9Ub3ApOw0KKyAgICBDRlhfRmxvYXRSZWN0IHJjQ3VyT2JqKHBUZXh0T2JqMS0+bV9MZWZ0LCBwVGV4dE9iajEtPm1fQm90dG9tLCBwVGV4dE9iajEtPm1fUmlnaHQsIHBUZXh0T2JqMS0+bV9Ub3ApOw0KKyAgICBpZiAocmNQcmVPYmouSXNFbXB0eSgpICYmIHJjQ3VyT2JqLklzRW1wdHkoKSAmJiAhbV9QYXJzZU9wdGlvbnMubV9iR2V0Q2hhckNvZGVPbmx5KSB7DQorICAgICAgICBGWF9GTE9BVCBkYlhkaWYgPSBGWFNZU19mYWJzKHJjUHJlT2JqLmxlZnQgLSByY0N1ck9iai5sZWZ0KTsNCisgICAgICAgIGludCBuQ291bnQgPSBtX2NoYXJMaXN0LkdldFNpemUoKTsNCisgICAgICAgIGlmIChuQ291bnQgPj0gMikgew0KKyAgICAgICAgICAgIFBBR0VDSEFSX0lORk8gcGVyQ2hhclRlbXAgPSAoUEFHRUNIQVJfSU5GTyltX2NoYXJMaXN0W25Db3VudCAtIDJdOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGRiU3BhY2UgPSBwZXJDaGFyVGVtcC5tX0NoYXJCb3guV2lkdGgoKTsNCisgICAgICAgICAgICBpZiAoZGJYZGlmID4gZGJTcGFjZSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICghcmNQcmVPYmouSXNFbXB0eSgpIHx8ICFyY0N1ck9iai5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJjUHJlT2JqLkludGVyc2VjdChyY0N1ck9iaik7DQorICAgICAgICBpZiAocmNQcmVPYmouSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKEZYU1lTX2ZhYnMocmNQcmVPYmouV2lkdGgoKSAtIHJjQ3VyT2JqLldpZHRoKCkpID4gcmNDdXJPYmouV2lkdGgoKSAvIDIpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFRleHRPYmoyLT5HZXRGb250U2l6ZSgpICE9IHBUZXh0T2JqMS0+R2V0Rm9udFNpemUoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpbnQgblByZUNvdW50ID0gcFRleHRPYmoyLT5Db3VudEl0ZW1zKCk7DQorICAgIGludCBuQ3VyQ291bnQgPSBwVGV4dE9iajEtPkNvdW50SXRlbXMoKTsNCisgICAgaWYgKG5QcmVDb3VudCAhPSBuQ3VyQ291bnQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDUERGX1RleHRPYmplY3RJdGVtIGl0ZW1QZXIsIGl0ZW1DdXI7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgblByZUNvdW50OyBpKyspIHsNCisgICAgICAgIHBUZXh0T2JqMi0+R2V0SXRlbUluZm8oaSwgJml0ZW1QZXIpOw0KKyAgICAgICAgcFRleHRPYmoxLT5HZXRJdGVtSW5mbyhpLCAmaXRlbUN1cik7DQorICAgICAgICBpZiAoaXRlbUN1ci5tX0NoYXJDb2RlICE9IGl0ZW1QZXIubV9DaGFyQ29kZSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZihGWFNZU19mYWJzKHBUZXh0T2JqMS0+R2V0UG9zWCgpIC0gcFRleHRPYmoyLT5HZXRQb3NYKCkpID4gR2V0Q2hhcldpZHRoKGl0ZW1QZXIubV9DaGFyQ29kZSwgcFRleHRPYmoyLT5HZXRGb250KCkpKnBUZXh0T2JqMi0+R2V0Rm9udFNpemUoKSAvIDEwMDAgKiAwLjkgfHwNCisgICAgICAgICAgICBGWFNZU19mYWJzKHBUZXh0T2JqMS0+R2V0UG9zWSgpIC0gcFRleHRPYmoyLT5HZXRQb3NZKCkpID4NCisgICAgICAgICAgICBGWF9NQVgoRlhfTUFYKHJjUHJlT2JqLkhlaWdodCgpICwgcmNQcmVPYmouV2lkdGgoKSksIHBUZXh0T2JqMi0+R2V0Rm9udFNpemUoKSkgLyA4KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9UZXh0UGFnZTo6SXNTYW1lQXNQcmVUZXh0T2JqZWN0KENQREZfVGV4dE9iamVjdCogcFRleHRPYmosIEZYX1BPU0lUSU9OIE9ialBvcykNCit7DQorICAgIGlmICghcFRleHRPYmopIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpbnQgaSA9IDA7DQorICAgIGlmICghT2JqUG9zKSB7DQorICAgICAgICBPYmpQb3MgPSBtX3BQYWdlLT5HZXRMYXN0T2JqZWN0UG9zaXRpb24oKTsNCisgICAgfQ0KKyAgICBDUERGX1BhZ2VPYmplY3QqIHBPYmogPSBtX3BQYWdlLT5HZXRQcmV2T2JqZWN0KE9ialBvcyk7DQorICAgIHdoaWxlIChpIDwgNSAmJiBPYmpQb3MpIHsNCisgICAgICAgIHBPYmogPSBtX3BQYWdlLT5HZXRQcmV2T2JqZWN0KE9ialBvcyk7DQorICAgICAgICBpZihwT2JqID09IHBUZXh0T2JqKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZihwT2JqLT5tX1R5cGUgIT0gUERGUEFHRV9URVhUKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZihJc1NhbWVUZXh0T2JqZWN0KChDUERGX1RleHRPYmplY3QqKXBPYmosIHBUZXh0T2JqKSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaSsrOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDUERGX1RleHRQYWdlOjpHZW5lcmF0ZUNoYXJJbmZvKEZYX1dDSEFSIHVuaWNvZGUsIFBBR0VDSEFSX0lORk8mIGluZm8pDQorew0KKyAgICBpbnQgc2l6ZSA9IG1fVGVtcENoYXJMaXN0LkdldFNpemUoKTsNCisgICAgUEFHRUNIQVJfSU5GTyBwcmVDaGFyOw0KKyAgICBpZiAoc2l6ZSkgew0KKyAgICAgICAgcHJlQ2hhciA9IChQQUdFQ0hBUl9JTkZPKW1fVGVtcENoYXJMaXN0W3NpemUgLSAxXTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHNpemUgPSBtX2NoYXJMaXN0LkdldFNpemUoKTsNCisgICAgICAgIGlmKHNpemUgPT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIHByZUNoYXIgPSAoUEFHRUNIQVJfSU5GTyltX2NoYXJMaXN0W3NpemUgLSAxXTsNCisgICAgfQ0KKyAgICBpbmZvLm1fSW5kZXggPSBtX1RleHRCdWYuR2V0TGVuZ3RoKCk7DQorICAgIGluZm8ubV9Vbmljb2RlID0gdW5pY29kZTsNCisgICAgaW5mby5tX3BUZXh0T2JqID0gTlVMTDsNCisgICAgaW5mby5tX0NoYXJDb2RlID0gLTE7DQorICAgIGluZm8ubV9GbGFnID0gRlBERlRFWFRfQ0hBUl9HRU5FUkFURUQ7DQorICAgIGludCBwcmVXaWR0aCA9IDA7DQorICAgIGlmIChwcmVDaGFyLm1fcFRleHRPYmogJiYgcHJlQ2hhci5tX0NoYXJDb2RlICE9IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICBwcmVXaWR0aCA9IEdldENoYXJXaWR0aChwcmVDaGFyLm1fQ2hhckNvZGUsIHByZUNoYXIubV9wVGV4dE9iai0+R2V0Rm9udCgpKTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBmcyA9IDA7DQorICAgIGlmKHByZUNoYXIubV9wVGV4dE9iaikgew0KKyAgICAgICAgZnMgPSBwcmVDaGFyLm1fcFRleHRPYmotPkdldEZvbnRTaXplKCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmcyA9IHByZUNoYXIubV9DaGFyQm94LkhlaWdodCgpOw0KKyAgICB9DQorICAgIGlmKCFmcykgew0KKyAgICAgICAgZnMgPSAxOw0KKyAgICB9DQorICAgIGluZm8ubV9PcmlnaW5YID0gcHJlQ2hhci5tX09yaWdpblggKyBwcmVXaWR0aCAqIChmcykgLyAxMDAwOw0KKyAgICBpbmZvLm1fT3JpZ2luWSA9IHByZUNoYXIubV9PcmlnaW5ZOw0KKyAgICBpbmZvLm1fQ2hhckJveCA9IENGWF9GbG9hdFJlY3QoaW5mby5tX09yaWdpblgsIGluZm8ubV9PcmlnaW5ZLCBpbmZvLm1fT3JpZ2luWCwgaW5mby5tX09yaWdpblkpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX1RleHRQYWdlOjpJc1JlY3RJbnRlcnNlY3QoQ0ZYX0Zsb2F0UmVjdCByZWN0MSwgQ0ZYX0Zsb2F0UmVjdCByZWN0MikNCit7DQorICAgIHJlY3QxLkludGVyc2VjdChyZWN0Mik7DQorICAgIGlmKHJlY3QxLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MCUNQREZfVGV4dFBhZ2U6OklzTGV0dGVyKEZYX1dDSEFSIHVuaWNvZGUpDQorew0KKyAgICBpZiAodW5pY29kZSA8IEwnQScpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAodW5pY29kZSA+IEwnWicgJiYgdW5pY29kZSA8IEwnYScpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAodW5pY29kZSA+IEwneicpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ1BERl9UZXh0UGFnZUZpbmQ6OkNQREZfVGV4dFBhZ2VGaW5kKGNvbnN0IElQREZfVGV4dFBhZ2UqIHBUZXh0UGFnZSkNCisgICAgOiBtX0lzRmluZChGQUxTRSksDQorICAgICAgbV9wVGV4dFBhZ2UoTlVMTCkNCit7DQorICAgIGlmICghcFRleHRQYWdlKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1BERl9Nb2R1bGVNZ3IqIHBQREZNb2R1bGUgPSBDUERGX01vZHVsZU1ncjo6R2V0KCk7DQorICAgIG1fcFRleHRQYWdlID0gcFRleHRQYWdlOw0KKyAgICBtX3N0clRleHQgPSBtX3BUZXh0UGFnZS0+R2V0UGFnZVRleHQoKTsNCisgICAgaW50IG5Db3VudCA9IHBUZXh0UGFnZS0+Q291bnRDaGFycygpOw0KKyAgICBpZihuQ291bnQpIHsNCisgICAgICAgIG1fQ2hhckluZGV4LkFkZCgwKTsNCisgICAgfQ0KKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgbkNvdW50OyBpKyspIHsNCisgICAgICAgIEZQREZfQ0hBUl9JTkZPIGluZm87DQorICAgICAgICBwVGV4dFBhZ2UtPkdldENoYXJJbmZvKGksIGluZm8pOw0KKyAgICAgICAgaW50IGluZGV4U2l6ZSA9IG1fQ2hhckluZGV4LkdldFNpemUoKTsNCisgICAgICAgIGlmKGluZm8ubV9GbGFnID09IENIQVJfTk9STUFMIHx8IGluZm8ubV9GbGFnID09IENIQVJfR0VORVJBVEVEKSB7DQorICAgICAgICAgICAgaWYoaW5kZXhTaXplICUgMikgew0KKyAgICAgICAgICAgICAgICBtX0NoYXJJbmRleC5BZGQoMSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYoaW5kZXhTaXplIDw9IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fQ2hhckluZGV4LlNldEF0KGluZGV4U2l6ZSAtIDEsIG1fQ2hhckluZGV4LkdldEF0KGluZGV4U2l6ZSAtIDEpICsgMSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZihpbmRleFNpemUgJSAyKSB7DQorICAgICAgICAgICAgICAgIGlmKGluZGV4U2l6ZSA8PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX0NoYXJJbmRleC5TZXRBdChpbmRleFNpemUgLSAxLCBpICsgMSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9DaGFySW5kZXguQWRkKGkgKyAxKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IGluZGV4U2l6ZSA9IG1fQ2hhckluZGV4LkdldFNpemUoKTsNCisgICAgaWYoaW5kZXhTaXplICUgMikgew0KKyAgICAgICAgbV9DaGFySW5kZXguUmVtb3ZlQXQoaW5kZXhTaXplIC0gMSk7DQorICAgIH0NCisgICAgbV9yZXNTdGFydCA9IDA7DQorICAgIG1fcmVzRW5kID0gLTE7DQorfQ0KK2ludCBDUERGX1RleHRQYWdlRmluZDo6R2V0Q2hhckluZGV4KGludCBpbmRleCkgY29uc3QNCit7DQorICAgIHJldHVybiBtX3BUZXh0UGFnZS0+Q2hhckluZGV4RnJvbVRleHRJbmRleChpbmRleCk7DQorICAgIGludCBpbmRleFNpemUgPSBtX0NoYXJJbmRleC5HZXRTaXplKCk7DQorICAgIGludCBjb3VudCA9IDA7DQorICAgIGZvcihpbnQgaSA9IDA7IGkgPCBpbmRleFNpemU7IGkgKz0gMikgew0KKyAgICAgICAgY291bnQgKz0gbV9DaGFySW5kZXguR2V0QXQoaSArIDEpOw0KKyAgICAgICAgaWYoY291bnQgPiBpbmRleCkgew0KKyAgICAgICAgICAgIHJldHVybiAJaW5kZXggLSBjb3VudCArIG1fQ2hhckluZGV4LkdldEF0KGkgKyAxKSArIG1fQ2hhckluZGV4LkdldEF0KGkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAtMTsNCit9DQorRlhfQk9PTAlDUERGX1RleHRQYWdlRmluZDo6RmluZEZpcnN0KENGWF9XaWRlU3RyaW5nIGZpbmR3aGF0LCBpbnQgZmxhZ3MsIGludCBzdGFydFBvcykNCit7DQorICAgIGlmICghbV9wVGV4dFBhZ2UpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9zdHJUZXh0LklzRW1wdHkoKSB8fCBtX2JNYXRjaENhc2UgIT0gKGZsYWdzICYgRlBERlRFWFRfTUFUQ0hDQVNFKSkgew0KKyAgICAgICAgbV9zdHJUZXh0ID0gbV9wVGV4dFBhZ2UtPkdldFBhZ2VUZXh0KCk7DQorICAgIH0NCisgICAgbV9maW5kV2hhdCA9IGZpbmR3aGF0Ow0KKyAgICBtX2ZsYWdzID0gZmxhZ3M7DQorICAgIG1fYk1hdGNoQ2FzZSA9IGZsYWdzICYgRlBERlRFWFRfTUFUQ0hDQVNFOw0KKyAgICBpZiAobV9zdHJUZXh0LklzRW1wdHkoKSkgew0KKyAgICAgICAgbV9Jc0ZpbmQgPSBGQUxTRTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX1NUUlNJWkUgbGVuID0gZmluZHdoYXQuR2V0TGVuZ3RoKCk7DQorICAgIGlmICghbV9iTWF0Y2hDYXNlKSB7DQorICAgICAgICBmaW5kd2hhdC5NYWtlTG93ZXIoKTsNCisgICAgICAgIG1fc3RyVGV4dC5NYWtlTG93ZXIoKTsNCisgICAgfQ0KKyAgICBtX2JNYXRjaFdob2xlV29yZCA9IGZsYWdzICYgRlBERlRFWFRfTUFUQ0hXSE9MRVdPUkQ7DQorICAgIG1fZmluZE5leHRTdGFydCA9IHN0YXJ0UG9zOw0KKyAgICBpZiAoc3RhcnRQb3MgPT0gLTEpIHsNCisgICAgICAgIG1fZmluZFByZVN0YXJ0ID0gbV9zdHJUZXh0LkdldExlbmd0aCgpIC0gMTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fZmluZFByZVN0YXJ0ID0gc3RhcnRQb3M7DQorICAgIH0NCisgICAgbV9jc0ZpbmRXaGF0QXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgIGludCBpID0gMDsNCisgICAgd2hpbGUoaSA8IGxlbikgew0KKyAgICAgICAgaWYoZmluZHdoYXQuR2V0QXQoaSkgIT0gJyAnKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpKys7DQorICAgIH0NCisgICAgaWYoaSA8IGxlbikgew0KKyAgICAgICAgRXh0cmFjdEZpbmRXaGF0KGZpbmR3aGF0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fY3NGaW5kV2hhdEFycmF5LkFkZChmaW5kd2hhdCk7DQorICAgIH0NCisgICAgaWYobV9jc0ZpbmRXaGF0QXJyYXkuR2V0U2l6ZSgpIDw9IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX0lzRmluZCA9IFRSVUU7DQorICAgIG1fcmVzU3RhcnQgPSAwOw0KKyAgICBtX3Jlc0VuZCA9IC0xOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX1RleHRQYWdlRmluZDo6RmluZE5leHQoKQ0KK3sNCisgICAgaWYgKCFtX3BUZXh0UGFnZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fcmVzQXJyYXkuUmVtb3ZlQWxsKCk7DQorICAgIGlmKG1fZmluZE5leHRTdGFydCA9PSAtMSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmKG1fc3RyVGV4dC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIG1fSXNGaW5kID0gRkFMU0U7DQorICAgICAgICByZXR1cm4gbV9Jc0ZpbmQ7DQorICAgIH0NCisgICAgaW50IHN0ckxlbiA9IG1fc3RyVGV4dC5HZXRMZW5ndGgoKTsNCisgICAgaWYgKG1fZmluZE5leHRTdGFydCA+IHN0ckxlbiAtIDEpIHsNCisgICAgICAgIG1fSXNGaW5kID0gRkFMU0U7DQorICAgICAgICByZXR1cm4gbV9Jc0ZpbmQ7DQorICAgIH0NCisgICAgaW50IG5Db3VudCA9IG1fY3NGaW5kV2hhdEFycmF5LkdldFNpemUoKTsNCisgICAgaW50IG5SZXN1bHRQb3MgPSAwOw0KKyAgICBpbnQJblN0YXJ0UG9zID0gMDsNCisgICAgblN0YXJ0UG9zID0gbV9maW5kTmV4dFN0YXJ0Ow0KKyAgICBGWF9CT09MIGJTcGFjZVN0YXJ0ID0gRkFMU0U7DQorICAgIGZvcihpbnQgaVdvcmQgPSAwOyBpV29yZCA8IG5Db3VudDsgaVdvcmQrKykgew0KKyAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgY3NXb3JkID0gbV9jc0ZpbmRXaGF0QXJyYXlbaVdvcmRdOw0KKyAgICAgICAgaWYoY3NXb3JkLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIGlmKGlXb3JkID09IG5Db3VudCAtIDEpIHsNCisgICAgICAgICAgICAgICAgRlhfV0NIQVIgc3RySW5zZXJ0ID0gbV9zdHJUZXh0LkdldEF0KG5TdGFydFBvcyk7DQorICAgICAgICAgICAgICAgIGlmKHN0ckluc2VydCA9PSBURVhUX0xJTkVGRUVEX0NIQVIgfHwgc3RySW5zZXJ0ID09IFRFWFRfQkxBTktfQ0hBUiB8fCBzdHJJbnNlcnQgPT0gVEVYVF9SRVRVUk5fQ0hBUiB8fCBzdHJJbnNlcnQgPT0gMTYwKSB7DQorICAgICAgICAgICAgICAgICAgICBuUmVzdWx0UG9zID0gblN0YXJ0UG9zICsgMTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlXb3JkID0gLTE7DQorICAgICAgICAgICAgfSBlbHNlIGlmKGlXb3JkID09IDApIHsNCisgICAgICAgICAgICAgICAgYlNwYWNlU3RhcnQgPSBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBlbmRJbmRleDsNCisgICAgICAgIG5SZXN1bHRQb3MgPSBtX3N0clRleHQuRmluZChjc1dvcmQsIG5TdGFydFBvcyk7DQorICAgICAgICBpZiAoblJlc3VsdFBvcyA9PSAtMSkgew0KKyAgICAgICAgICAgIG1fSXNGaW5kID0gRkFMU0U7DQorICAgICAgICAgICAgcmV0dXJuIG1fSXNGaW5kOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZW5kSW5kZXggPSBuUmVzdWx0UG9zICsgY3NXb3JkLkdldExlbmd0aCgpIC0gMTsNCisgICAgICAgIGlmKGlXb3JkID09IDApIHsNCisgICAgICAgICAgICBtX3Jlc1N0YXJ0ID0gblJlc3VsdFBvczsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JPT0wgYk1hdGNoID0gVFJVRTsNCisgICAgICAgIGlmKGlXb3JkICE9IDAgJiYgIWJTcGFjZVN0YXJ0KSB7DQorICAgICAgICAgICAgaW50IFByZVJlc0VuZFBvcyA9IG5TdGFydFBvczsNCisgICAgICAgICAgICBpbnQgY3VyQ2hhciA9IGNzV29yZC5HZXRBdCgwKTsNCisgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBsYXN0V29yZCA9IG1fY3NGaW5kV2hhdEFycmF5W2lXb3JkIC0gMV07DQorICAgICAgICAgICAgaW50IGxhc3RDaGFyID0gbGFzdFdvcmQuR2V0QXQobGFzdFdvcmQuR2V0TGVuZ3RoKCkgLSAxKTsNCisgICAgICAgICAgICBpZihuU3RhcnRQb3MgPT0gblJlc3VsdFBvcyAmJiAhKF9Jc0lnbm9yZVNwYWNlQ2hhcmFjdGVyKGxhc3RDaGFyKSB8fCBfSXNJZ25vcmVTcGFjZUNoYXJhY3RlcihjdXJDaGFyKSkpIHsNCisgICAgICAgICAgICAgICAgYk1hdGNoID0gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZvcihpbnQgZCA9IFByZVJlc0VuZFBvczsgZCA8IG5SZXN1bHRQb3M7IGQrKykgew0KKyAgICAgICAgICAgICAgICBGWF9XQ0hBUiBzdHJJbnNlcnQgPSBtX3N0clRleHQuR2V0QXQoZCk7DQorICAgICAgICAgICAgICAgIGlmKHN0ckluc2VydCAhPSBURVhUX0xJTkVGRUVEX0NIQVIgJiYgc3RySW5zZXJ0ICE9IFRFWFRfQkxBTktfQ0hBUiAmJiBzdHJJbnNlcnQgIT0gVEVYVF9SRVRVUk5fQ0hBUiAmJiBzdHJJbnNlcnQgIT0gMTYwKSB7DQorICAgICAgICAgICAgICAgICAgICBiTWF0Y2ggPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmKGJTcGFjZVN0YXJ0KSB7DQorICAgICAgICAgICAgaWYoblJlc3VsdFBvcyA+IDApIHsNCisgICAgICAgICAgICAgICAgRlhfV0NIQVIgc3RySW5zZXJ0ID0gbV9zdHJUZXh0LkdldEF0KG5SZXN1bHRQb3MgLSAxKTsNCisgICAgICAgICAgICAgICAgaWYoc3RySW5zZXJ0ICE9IFRFWFRfTElORUZFRURfQ0hBUiAmJiBzdHJJbnNlcnQgIT0gVEVYVF9CTEFOS19DSEFSICYmIHN0ckluc2VydCAhPSBURVhUX1JFVFVSTl9DSEFSICYmIHN0ckluc2VydCAhPSAxNjApIHsNCisgICAgICAgICAgICAgICAgICAgIGJNYXRjaCA9IEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgbV9yZXNTdGFydCA9IG5SZXN1bHRQb3M7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBtX3Jlc1N0YXJ0ID0gblJlc3VsdFBvcyAtIDE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZihtX2JNYXRjaFdob2xlV29yZCAmJiBiTWF0Y2gpIHsNCisgICAgICAgICAgICBiTWF0Y2ggPSBJc01hdGNoV2hvbGVXb3JkKG1fc3RyVGV4dCwgblJlc3VsdFBvcywgZW5kSW5kZXgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgblN0YXJ0UG9zID0gZW5kSW5kZXggKyAxOw0KKyAgICAgICAgaWYoIWJNYXRjaCkgew0KKyAgICAgICAgICAgIGlXb3JkID0gLTE7DQorICAgICAgICAgICAgaWYoYlNwYWNlU3RhcnQpIHsNCisgICAgICAgICAgICAgICAgblN0YXJ0UG9zID0gbV9yZXNTdGFydCArIG1fY3NGaW5kV2hhdEFycmF5WzFdLkdldExlbmd0aCgpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG5TdGFydFBvcyA9IG1fcmVzU3RhcnQgKyBtX2NzRmluZFdoYXRBcnJheVswXS5HZXRMZW5ndGgoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9yZXNFbmQgPSBuUmVzdWx0UG9zICsgbV9jc0ZpbmRXaGF0QXJyYXlbbV9jc0ZpbmRXaGF0QXJyYXkuR2V0U2l6ZSgpIC0gMV0uR2V0TGVuZ3RoKCkgLSAxOw0KKyAgICBtX0lzRmluZCA9IFRSVUU7DQorICAgIGludCByZXNTdGFydCA9IEdldENoYXJJbmRleChtX3Jlc1N0YXJ0KTsNCisgICAgaW50IHJlc0VuZCA9IEdldENoYXJJbmRleChtX3Jlc0VuZCk7DQorICAgIG1fcFRleHRQYWdlLT5HZXRSZWN0QXJyYXkocmVzU3RhcnQsIHJlc0VuZCAtIHJlc1N0YXJ0ICsgMSwgbV9yZXNBcnJheSk7DQorICAgIGlmKG1fZmxhZ3MgJiBGUERGVEVYVF9DT05TRUNVVElWRSkgew0KKyAgICAgICAgbV9maW5kTmV4dFN0YXJ0ID0gbV9yZXNTdGFydCArIDE7DQorICAgICAgICBtX2ZpbmRQcmVTdGFydCA9IG1fcmVzRW5kIC0gMTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fZmluZE5leHRTdGFydCA9IG1fcmVzRW5kICsgMTsNCisgICAgICAgIG1fZmluZFByZVN0YXJ0ID0gbV9yZXNTdGFydCAtIDE7DQorICAgIH0NCisgICAgcmV0dXJuIG1fSXNGaW5kOw0KK30NCitGWF9CT09MIENQREZfVGV4dFBhZ2VGaW5kOjpGaW5kUHJldigpDQorew0KKyAgICBpZiAoIW1fcFRleHRQYWdlKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9yZXNBcnJheS5SZW1vdmVBbGwoKTsNCisgICAgaWYobV9zdHJUZXh0LklzRW1wdHkoKSB8fCBtX2ZpbmRQcmVTdGFydCA8IDApIHsNCisgICAgICAgIG1fSXNGaW5kID0gRkFMU0U7DQorICAgICAgICByZXR1cm4gbV9Jc0ZpbmQ7DQorICAgIH0NCisgICAgQ1BERl9UZXh0UGFnZUZpbmQgZmluZEVuZ2luZShtX3BUZXh0UGFnZSk7DQorICAgIEZYX0JPT0wgcmV0ID0gZmluZEVuZ2luZS5GaW5kRmlyc3QobV9maW5kV2hhdCwgbV9mbGFncyk7DQorICAgIGlmKCFyZXQpIHsNCisgICAgICAgIG1fSXNGaW5kID0gRkFMU0U7DQorICAgICAgICByZXR1cm4gbV9Jc0ZpbmQ7DQorICAgIH0NCisgICAgaW50CW9yZGVyID0gLTEsIE1hdGNoZWRDb3VudCA9IDA7DQorICAgIHdoaWxlKHJldCkgew0KKyAgICAgICAgcmV0ID0gZmluZEVuZ2luZS5GaW5kTmV4dCgpOw0KKyAgICAgICAgaWYocmV0KSB7DQorICAgICAgICAgICAgaW50IG9yZGVyMSA9IGZpbmRFbmdpbmUuR2V0Q3VyT3JkZXIoKSA7DQorICAgICAgICAgICAgaW50CU1hdGNoZWRDb3VudDEgPSBmaW5kRW5naW5lLkdldE1hdGNoZWRDb3VudCgpOw0KKyAgICAgICAgICAgIGlmKCgob3JkZXIxICsgTWF0Y2hlZENvdW50MSkgLSAxKSA+IG1fZmluZFByZVN0YXJ0KSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBvcmRlciA9IG9yZGVyMTsNCisgICAgICAgICAgICBNYXRjaGVkQ291bnQgPSBNYXRjaGVkQ291bnQxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmKG9yZGVyID09IC0xKSB7DQorICAgICAgICBtX0lzRmluZCA9IEZBTFNFOw0KKyAgICAgICAgcmV0dXJuIG1fSXNGaW5kOw0KKyAgICB9DQorICAgIG1fcmVzU3RhcnQgPSBtX3BUZXh0UGFnZS0+VGV4dEluZGV4RnJvbUNoYXJJbmRleChvcmRlcik7DQorICAgIG1fcmVzRW5kID0gbV9wVGV4dFBhZ2UtPlRleHRJbmRleEZyb21DaGFySW5kZXgob3JkZXIgKyBNYXRjaGVkQ291bnQgLSAxKTsNCisgICAgbV9Jc0ZpbmQgPSBUUlVFOw0KKyAgICBtX3BUZXh0UGFnZS0+R2V0UmVjdEFycmF5KG9yZGVyLCBNYXRjaGVkQ291bnQsIG1fcmVzQXJyYXkpOw0KKyAgICBpZihtX2ZsYWdzICYgRlBERlRFWFRfQ09OU0VDVVRJVkUpIHsNCisgICAgICAgIG1fZmluZE5leHRTdGFydCA9IG1fcmVzU3RhcnQgKyAxOw0KKyAgICAgICAgbV9maW5kUHJlU3RhcnQgPSBtX3Jlc0VuZCAtIDE7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX2ZpbmROZXh0U3RhcnQgPSBtX3Jlc0VuZCArIDE7DQorICAgICAgICBtX2ZpbmRQcmVTdGFydCA9IG1fcmVzU3RhcnQgLSAxOw0KKyAgICB9DQorICAgIHJldHVybiBtX0lzRmluZDsNCit9DQordm9pZCBDUERGX1RleHRQYWdlRmluZDo6RXh0cmFjdEZpbmRXaGF0KENGWF9XaWRlU3RyaW5nIGZpbmR3aGF0KQ0KK3sNCisgICAgaWYoZmluZHdoYXQuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gOw0KKyAgICB9DQorICAgIGludCBpbmRleCA9IDA7DQorICAgIHdoaWxlKDEpIHsNCisgICAgICAgIENGWF9XaWRlU3RyaW5nIGNzV29yZCA9IFRFWFRfRU1QVFk7DQorICAgICAgICBpbnQgcmV0ID0gRXh0cmFjdFN1YlN0cmluZyhjc1dvcmQsIGZpbmR3aGF0LCBpbmRleCwgVEVYVF9CTEFOS19DSEFSKTsNCisgICAgICAgIGlmKGNzV29yZC5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICBpZihyZXQpIHsNCisgICAgICAgICAgICAgICAgbV9jc0ZpbmRXaGF0QXJyYXkuQWRkKENGWF9XaWRlU3RyaW5nKEwiIikpOw0KKyAgICAgICAgICAgICAgICBpbmRleCsrOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpbnQgcG9zID0gMDsNCisgICAgICAgIEZYX0JPT0wgYkxhc3RJZ25vcmUgPSBGQUxTRTsNCisgICAgICAgIHdoaWxlKHBvcyA8IGNzV29yZC5HZXRMZW5ndGgoKSkgew0KKyAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIGN1clN0ciA9IGNzV29yZC5NaWQocG9zLCAxKTsNCisgICAgICAgICAgICBGWF9XQ0hBUiBjdXJDaGFyID0gY3NXb3JkLkdldEF0KHBvcyk7DQorICAgICAgICAgICAgaWYgKF9Jc0lnbm9yZVNwYWNlQ2hhcmFjdGVyKGN1ckNoYXIpKSB7DQorICAgICAgICAgICAgICAgIGlmIChwb3MgPiAwICYmIGN1ckNoYXIgPT0gMHgyMDE5KSB7DQorICAgICAgICAgICAgICAgICAgICBwb3MrKzsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChwb3MgPiAwICkgew0KKyAgICAgICAgICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgcHJlU3RyID0gY3NXb3JkLk1pZCgwLCBwb3MpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9jc0ZpbmRXaGF0QXJyYXkuQWRkKHByZVN0cik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9jc0ZpbmRXaGF0QXJyYXkuQWRkKGN1clN0cik7DQorICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gY3NXb3JkLkdldExlbmd0aCgpIC0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgY3NXb3JkLkVtcHR5KCk7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBjc1dvcmQgPSBjc1dvcmQuUmlnaHQoY3NXb3JkLkdldExlbmd0aCgpIC0gcG9zIC0gMSk7DQorICAgICAgICAgICAgICAgIHBvcyA9IDA7DQorICAgICAgICAgICAgICAgIGJMYXN0SWdub3JlID0gVFJVRTsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgYkxhc3RJZ25vcmUgPSBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcG9zKys7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIWNzV29yZC5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICBtX2NzRmluZFdoYXRBcnJheS5BZGQoY3NXb3JkKTsNCisgICAgICAgIH0NCisgICAgICAgIGluZGV4Kys7DQorICAgIH0NCisgICAgcmV0dXJuOw0KK30NCitGWF9CT09MIENQREZfVGV4dFBhZ2VGaW5kOjpJc01hdGNoV2hvbGVXb3JkKENGWF9XaWRlU3RyaW5nIGNzUGFnZVRleHQsIGludCBzdGFydFBvcywgaW50IGVuZFBvcykNCit7DQorICAgIGludCBjaGFyX2xlZnQgPSAwOw0KKyAgICBpbnQgY2hhcl9yaWdodCA9IDA7DQorICAgIGludCBjaGFyX2NvdW50ID0gZW5kUG9zIC0gc3RhcnRQb3MgKyAxOw0KKyAgICBpZihjaGFyX2NvdW50IDwgMSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChjaGFyX2NvdW50ID09IDEgJiYgY3NQYWdlVGV4dC5HZXRBdChzdGFydFBvcykgPiAyNTUpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmKHN0YXJ0UG9zIC0gMSA+PSAwICkgew0KKyAgICAgICAgY2hhcl9sZWZ0ID0gY3NQYWdlVGV4dC5HZXRBdChzdGFydFBvcyAtIDEpOw0KKyAgICB9DQorICAgIGlmKHN0YXJ0UG9zICsgY2hhcl9jb3VudCA8IGNzUGFnZVRleHQuR2V0TGVuZ3RoKCkpIHsNCisgICAgICAgIGNoYXJfcmlnaHQgPSBjc1BhZ2VUZXh0LkdldEF0KHN0YXJ0UG9zICsgY2hhcl9jb3VudCk7DQorICAgIH0NCisgICAgaWYoY2hhcl9sZWZ0ID09IDB4NjEpIHsNCisgICAgICAgIGludCBhID0gMDsNCisgICAgfQ0KKyAgICBpZiAoKGNoYXJfbGVmdCA+ICdBJyAmJiBjaGFyX2xlZnQgPCAnYScpIHx8IChjaGFyX2xlZnQgPiAnYScgJiYgY2hhcl9sZWZ0IDwgJ3onKSB8fCAoY2hhcl9sZWZ0ID4gMHhmYjAwICYmIGNoYXJfbGVmdCA8IDB4ZmIwNikgfHwgKGNoYXJfbGVmdCA+PSAnMCcgJiYgY2hhcl9sZWZ0IDw9ICc5JykgfHwNCisgICAgICAgICAgICAoY2hhcl9yaWdodCA+ICdBJyAmJiBjaGFyX3JpZ2h0IDwgJ2EnKSB8fCAoY2hhcl9yaWdodCA+ICdhJyAmJiBjaGFyX3JpZ2h0IDwgJ3onKSB8fCAoY2hhcl9yaWdodCA+IDB4ZmIwMCAmJiBjaGFyX3JpZ2h0IDwgMHhmYjA2KSB8fCAoY2hhcl9yaWdodCA+PSAnMCcgJiYgY2hhcl9yaWdodCA8PSAnOScpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYoISgoJ0EnID4gY2hhcl9sZWZ0IHx8IGNoYXJfbGVmdCA+ICdaJykgICYmICgnYScgPiBjaGFyX2xlZnQgfHwgY2hhcl9sZWZ0ID4gJ3onKQ0KKyAgICAgICAgICAgICYmICgnQScgPiBjaGFyX3JpZ2h0IHx8IGNoYXJfcmlnaHQgPiAnWicpICAmJiAoJ2EnID4gY2hhcl9yaWdodCB8fCBjaGFyX3JpZ2h0ID4gJ3onKSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoY2hhcl9jb3VudCA+IDApIHsNCisgICAgICAgIGlmIChjc1BhZ2VUZXh0LkdldEF0KHN0YXJ0UG9zKSA+PSBMJzAnICYmIGNzUGFnZVRleHQuR2V0QXQoc3RhcnRQb3MpIDw9IEwnOScgJiYgY2hhcl9sZWZ0ID49IEwnMCcgJiYgY2hhcl9sZWZ0IDw9IEwnOScpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAoY3NQYWdlVGV4dC5HZXRBdChlbmRQb3MpID49IEwnMCcgJiYgY3NQYWdlVGV4dC5HZXRBdChlbmRQb3MpIDw9IEwnOScgJiYgY2hhcl9yaWdodCA+PSBMJzAnICYmIGNoYXJfcmlnaHQgPD0gTCc5Jykgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDUERGX1RleHRQYWdlRmluZDo6RXh0cmFjdFN1YlN0cmluZyhDRlhfV2lkZVN0cmluZyYgclN0cmluZywgRlhfTFBDV1NUUiBscHN6RnVsbFN0cmluZywNCisgICAgICAgIGludCBpU3ViU3RyaW5nLCBGWF9XQ0hBUiBjaFNlcCkNCit7DQorICAgIGlmIChscHN6RnVsbFN0cmluZyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgd2hpbGUgKGlTdWJTdHJpbmctLSkgew0KKyAgICAgICAgbHBzekZ1bGxTdHJpbmcgPSBGWFNZU193Y3NjaHIobHBzekZ1bGxTdHJpbmcsIGNoU2VwKTsNCisgICAgICAgIGlmIChscHN6RnVsbFN0cmluZyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgclN0cmluZy5FbXB0eSgpOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGxwc3pGdWxsU3RyaW5nKys7DQorICAgICAgICB3aGlsZSgqbHBzekZ1bGxTdHJpbmcgPT0gY2hTZXApIHsNCisgICAgICAgICAgICBscHN6RnVsbFN0cmluZysrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX0xQQ1dTVFIgbHBjaEVuZCA9IEZYU1lTX3djc2NocihscHN6RnVsbFN0cmluZywgY2hTZXApOw0KKyAgICBpbnQgbkxlbiA9IChscGNoRW5kID09IE5VTEwpID8NCisgICAgICAgICAgICAgICAoaW50KUZYU1lTX3djc2xlbihscHN6RnVsbFN0cmluZykgOiAoaW50KShscGNoRW5kIC0gbHBzekZ1bGxTdHJpbmcpOw0KKyAgICBBU1NFUlQobkxlbiA+PSAwKTsNCisgICAgRlhTWVNfbWVtY3B5MzIoclN0cmluZy5HZXRCdWZmZXIobkxlbiksIGxwc3pGdWxsU3RyaW5nLCBuTGVuICogc2l6ZW9mKEZYX1dDSEFSKSk7DQorICAgIHJTdHJpbmcuUmVsZWFzZUJ1ZmZlcigpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9UZXh0UGFnZUZpbmQ6Ok1ha2VSZXZlcnNlKGNvbnN0IENGWF9XaWRlU3RyaW5nIHN0cikNCit7DQorICAgIENGWF9XaWRlU3RyaW5nIHN0cjI7DQorICAgIHN0cjIuRW1wdHkoKTsNCisgICAgaW50IG5sZW4gPSBzdHIuR2V0TGVuZ3RoKCk7DQorICAgIGZvcihpbnQgaSA9IG5sZW4gLSAxOyBpID49IDA7IGktLSkgew0KKyAgICAgICAgc3RyMiArPSBzdHIuR2V0QXQoaSk7DQorICAgIH0NCisgICAgcmV0dXJuIHN0cjI7DQorfQ0KK3ZvaWQgQ1BERl9UZXh0UGFnZUZpbmQ6OkdldFJlY3RBcnJheShDRlhfUmVjdEFycmF5JiByZWN0cykgY29uc3QNCit7DQorICAgIHJlY3RzLkNvcHkobV9yZXNBcnJheSk7DQorfQ0KK2ludAlDUERGX1RleHRQYWdlRmluZDo6R2V0Q3VyT3JkZXIoKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIEdldENoYXJJbmRleChtX3Jlc1N0YXJ0KTsNCit9DQoraW50CUNQREZfVGV4dFBhZ2VGaW5kOjpHZXRNYXRjaGVkQ291bnQoKWNvbnN0DQorew0KKyAgICBpbnQgcmVzU3RhcnQgPSBHZXRDaGFySW5kZXgobV9yZXNTdGFydCk7DQorICAgIGludCByZXNFbmQgPSBHZXRDaGFySW5kZXgobV9yZXNFbmQpOw0KKyAgICByZXR1cm4gcmVzRW5kIC0gcmVzU3RhcnQgKyAxOw0KK30NCitDUERGX0xpbmtFeHRyYWN0OjpDUERGX0xpbmtFeHRyYWN0KCkNCisgICAgOiBtX3BUZXh0UGFnZShOVUxMKSwNCisgICAgICBtX0lzUGFyc2VyZChGQUxTRSkNCit7DQorfQ0KK0NQREZfTGlua0V4dHJhY3Q6On5DUERGX0xpbmtFeHRyYWN0KCkNCit7DQorICAgIERlbGV0ZUxpbmtMaXN0KCk7DQorfQ0KK0ZYX0JPT0wgQ1BERl9MaW5rRXh0cmFjdDo6RXh0cmFjdExpbmtzKGNvbnN0IElQREZfVGV4dFBhZ2UqIHBUZXh0UGFnZSkNCit7DQorICAgIGlmICghcFRleHRQYWdlIHx8ICFwVGV4dFBhZ2UtPklzUGFyc2VyZWQoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fcFRleHRQYWdlID0gKGNvbnN0IENQREZfVGV4dFBhZ2UqKXBUZXh0UGFnZTsNCisgICAgbV9zdHJQYWdlVGV4dCA9IG1fcFRleHRQYWdlLT5HZXRQYWdlVGV4dCgwLCAtMSk7DQorICAgIERlbGV0ZUxpbmtMaXN0KCk7DQorICAgIGlmIChtX3N0clBhZ2VUZXh0LklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHBhcnNlckxpbmsoKTsNCisgICAgbV9Jc1BhcnNlcmQgPSBUUlVFOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDUERGX0xpbmtFeHRyYWN0OjpEZWxldGVMaW5rTGlzdCgpDQorew0KKyAgICB3aGlsZSAobV9MaW5rTGlzdC5HZXRTaXplKCkpIHsNCisgICAgICAgIENQREZfTGlua0V4dCogbGlua2luZm8gPSBOVUxMOw0KKyAgICAgICAgbGlua2luZm8gPSBtX0xpbmtMaXN0LkdldEF0KDApOw0KKyAgICAgICAgbV9MaW5rTGlzdC5SZW1vdmVBdCgwKTsNCisgICAgICAgIGRlbGV0ZSBsaW5raW5mbzsNCisgICAgfQ0KKyAgICBtX0xpbmtMaXN0LlJlbW92ZUFsbCgpOw0KK30NCitpbnQgQ1BERl9MaW5rRXh0cmFjdDo6Q291bnRMaW5rcygpIGNvbnN0DQorew0KKyAgICBpZiAoIW1fSXNQYXJzZXJkKQl7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgcmV0dXJuIG1fTGlua0xpc3QuR2V0U2l6ZSgpOw0KK30NCit2b2lkIENQREZfTGlua0V4dHJhY3Q6OnBhcnNlckxpbmsoKQ0KK3sNCisgICAgaW50IHN0YXJ0ID0gMCwgcG9zID0gMDsNCisgICAgaW50IFRvdGFsQ2hhciA9IG1fcFRleHRQYWdlLT5Db3VudENoYXJzKCk7DQorICAgIHdoaWxlIChwb3MgPCBUb3RhbENoYXIpIHsNCisgICAgICAgIEZQREZfQ0hBUl9JTkZPIHBhZ2VDaGFyOw0KKyAgICAgICAgbV9wVGV4dFBhZ2UtPkdldENoYXJJbmZvKHBvcywgcGFnZUNoYXIpOw0KKyAgICAgICAgaWYgKHBhZ2VDaGFyLm1fRmxhZyA9PSBDSEFSX0dFTkVSQVRFRCB8fCBwYWdlQ2hhci5tX1VuaWNvZGUgPT0gMHgyMCB8fCBwb3MgPT0gVG90YWxDaGFyIC0gMSkgew0KKyAgICAgICAgICAgIGludCBuQ291bnQgPSBwb3MgLSBzdGFydDsNCisgICAgICAgICAgICBpZihwb3MgPT0gVG90YWxDaGFyIC0gMSkgew0KKyAgICAgICAgICAgICAgICBuQ291bnQrKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgc3RyQmVDaGVjazsNCisgICAgICAgICAgICBzdHJCZUNoZWNrID0gbV9wVGV4dFBhZ2UtPkdldFBhZ2VUZXh0KHN0YXJ0LCBuQ291bnQpOw0KKyAgICAgICAgICAgIGlmIChzdHJCZUNoZWNrLkdldExlbmd0aCgpID4gNSkgew0KKyAgICAgICAgICAgICAgICB3aGlsZShzdHJCZUNoZWNrLkdldExlbmd0aCgpID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfV0NIQVIgY2ggPSBzdHJCZUNoZWNrLkdldEF0KHN0ckJlQ2hlY2suR2V0TGVuZ3RoKCkgLSAxKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSBMJyknIHx8IGNoID09IEwnLCcgfHwgY2ggPT0gTCc+JyB8fCBjaCA9PSBMJy4nKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RyQmVDaGVjayA9IHN0ckJlQ2hlY2suTWlkKDAsIHN0ckJlQ2hlY2suR2V0TGVuZ3RoKCkgLSAxKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBuQ291bnQtLTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG5Db3VudCA+IDUgJiYgKENoZWNrV2ViTGluayhzdHJCZUNoZWNrKSB8fCBDaGVja01haWxMaW5rKHN0ckJlQ2hlY2spKSkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFBcHBlbmRUb0xpbmtMaXN0KHN0YXJ0LCBuQ291bnQsIHN0ckJlQ2hlY2spKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3RhcnQgPSArK3BvczsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcG9zKys7DQorICAgICAgICB9DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0xpbmtFeHRyYWN0OjpDaGVja1dlYkxpbmsoQ0ZYX1dpZGVTdHJpbmcmIHN0ckJlQ2hlY2spDQorew0KKyAgICBDRlhfV2lkZVN0cmluZyBzdHIgPSBzdHJCZUNoZWNrOw0KKyAgICBzdHIuTWFrZUxvd2VyKCk7DQorICAgIGlmIChzdHIuRmluZChMImh0dHA6Ly93d3cuIikgIT0gLTEpIHsNCisgICAgICAgIHN0ckJlQ2hlY2sgPSBzdHJCZUNoZWNrLlJpZ2h0KHN0ci5HZXRMZW5ndGgoKSAtIHN0ci5GaW5kKEwiaHR0cDovL3d3dy4iKSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfSBlbHNlIGlmIChzdHIuRmluZChMImh0dHA6Ly8iKSAhPSAtMSkgew0KKyAgICAgICAgc3RyQmVDaGVjayA9IHN0ckJlQ2hlY2suUmlnaHQoc3RyLkdldExlbmd0aCgpIC0gc3RyLkZpbmQoTCJodHRwOi8vIikpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0gZWxzZSBpZiAoc3RyLkZpbmQoTCJodHRwczovL3d3dy4iKSAhPSAtMSkgew0KKyAgICAgICAgc3RyQmVDaGVjayA9IHN0ckJlQ2hlY2suUmlnaHQoc3RyLkdldExlbmd0aCgpIC0gc3RyLkZpbmQoTCJodHRwczovL3d3dy4iKSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfSBlbHNlIGlmIChzdHIuRmluZChMImh0dHBzOi8vIikgIT0gLTEpIHsNCisgICAgICAgIHN0ckJlQ2hlY2sgPSBzdHJCZUNoZWNrLlJpZ2h0KHN0ci5HZXRMZW5ndGgoKSAtIHN0ci5GaW5kKEwiaHR0cHM6Ly8iKSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfSBlbHNlIGlmIChzdHIuRmluZChMInd3dy4iKSAhPSAtMSkgew0KKyAgICAgICAgc3RyQmVDaGVjayA9IHN0ckJlQ2hlY2suUmlnaHQoc3RyLkdldExlbmd0aCgpIC0gc3RyLkZpbmQoTCJ3d3cuIikpOw0KKyAgICAgICAgc3RyQmVDaGVjayA9IEwiaHR0cDovLyIgKyBzdHJCZUNoZWNrOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUERGX0xpbmtFeHRyYWN0OjpDaGVja01haWxMaW5rKENGWF9XaWRlU3RyaW5nJiBzdHIpDQorew0KKyAgICBzdHIuTWFrZUxvd2VyKCk7DQorICAgIGludCBhUG9zID0gc3RyLkZpbmQoTCdAJyk7DQorICAgIGlmIChhUG9zIDwgMSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChzdHIuR2V0QXQoYVBvcyAtIDEpID09IEwnLicgfHwgc3RyLkdldEF0KGFQb3MgLSAxKSA9PSBMJ18nKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IGk7DQorICAgIGZvciAoaSA9IGFQb3MgLSAxOyBpID49IDA7IGktLSkgew0KKyAgICAgICAgRlhfV0NIQVIgY2ggPSBzdHIuR2V0QXQoaSk7DQorICAgICAgICBpZiAoY2ggPT0gTCdfJyB8fCBjaCA9PSBMJy4nIHx8IChjaCA+PSBMJ2EnICYmIGNoIDw9IEwneicpIHx8IChjaCA+PSBMJzAnICYmIGNoIDw9IEwnOScpKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpID09IGFQb3MgLSAxKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3RyID0gc3RyLlJpZ2h0KHN0ci5HZXRMZW5ndGgoKSAtIGkgLSAxKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBhUG9zID0gc3RyLkZpbmQoTCdAJyk7DQorICAgIGlmIChhUG9zIDwgMSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9XaWRlU3RyaW5nIHN0cnRlbXAgPSBMIiI7DQorICAgIGZvciAoaSA9IDA7IGkgPCBhUG9zOyBpKyspIHsNCisgICAgICAgIEZYX1dDSEFSIHdjaCA9IHN0ci5HZXRBdChpKTsNCisgICAgICAgIGlmICh3Y2ggPj0gTCdhJyAmJiB3Y2ggPD0gTCd6Jykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzdHJ0ZW1wID0gc3RyLlJpZ2h0KHN0ci5HZXRMZW5ndGgoKSAtIGkgKyAxKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoc3RydGVtcCAhPSBMIiIpIHsNCisgICAgICAgIHN0ciA9IHN0cnRlbXA7DQorICAgIH0NCisgICAgYVBvcyA9IHN0ci5GaW5kKEwnQCcpOw0KKyAgICBpZiAoYVBvcyA8IDEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBzdHIuVHJpbVJpZ2h0KEwnLicpOw0KKyAgICBzdHJ0ZW1wID0gc3RyOw0KKyAgICBpbnQgZVBvcyA9IHN0ci5GaW5kKEwnLicpOw0KKyAgICBpZiAoZVBvcyA9PSAtMSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHdoaWxlIChlUG9zICE9IC0xKSB7DQorICAgICAgICBzdHJ0ZW1wID0gc3RydGVtcC5SaWdodChzdHJ0ZW1wLkdldExlbmd0aCgpIC0gZVBvcyAtIDEpOw0KKyAgICAgICAgZVBvcyA9IHN0cnRlbXAuRmluZCgnLicpOw0KKyAgICB9DQorICAgIGVQb3MgPSBzdHJ0ZW1wLkdldExlbmd0aCgpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgZVBvczsgaSsrKSB7DQorICAgICAgICBGWF9XQ0hBUiB3Y2ggPSBzdHIuR2V0QXQoaSk7DQorICAgICAgICBpZiAoKHdjaCA+PSBMJ2EnICYmIHdjaCA8PSBMJ3onKSB8fCAod2NoID49IEwnMCcgJiYgd2NoIDw9IEwnOScpKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHN0ciA9IHN0ci5MZWZ0KHN0ci5HZXRMZW5ndGgoKSAtIGVQb3MgKyBpICsgMSk7DQorICAgICAgICAgICAgZVBvcyA9IGVQb3MgLSBpIC0gMTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpbnQgbkxlbiA9IHN0ci5HZXRMZW5ndGgoKTsNCisgICAgZm9yIChpID0gYVBvcyArIDE7IGkgPCBuTGVuIC0gZVBvczsgaSsrKSB7DQorICAgICAgICBGWF9XQ0hBUiB3Y2ggPSBzdHIuR2V0QXQoaSk7DQorICAgICAgICBpZiAod2NoID09IEwnLScgfHwgd2NoID09IEwnLicgfHwgKHdjaCA+PSBMJ2EnICYmIHdjaCA8PSBMJ3onKSB8fCAod2NoID49IEwnMCcgJiYgd2NoIDw9IEwnOScpKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoc3RyLkZpbmQoTCJtYWlsdG86IikgPT0gLTEpIHsNCisgICAgICAgIHN0ciA9IEwibWFpbHRvOiIgKyBzdHI7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BERl9MaW5rRXh0cmFjdDo6QXBwZW5kVG9MaW5rTGlzdChpbnQgc3RhcnQsIGludCBjb3VudCwgQ0ZYX1dpZGVTdHJpbmcgc3RyVXJsKQ0KK3sNCisgICAgQ1BERl9MaW5rRXh0KiBsaW5rSW5mbyA9IE5VTEw7DQorICAgIGxpbmtJbmZvID0gRlhfTkVXIENQREZfTGlua0V4dDsNCisgICAgaWYgKCFsaW5rSW5mbykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGxpbmtJbmZvLT5tX3N0clVybCA9IHN0clVybDsNCisgICAgbGlua0luZm8tPm1fU3RhcnQgPSBzdGFydDsNCisgICAgbGlua0luZm8tPm1fQ291bnQgPSBjb3VudDsNCisgICAgbV9MaW5rTGlzdC5BZGQobGlua0luZm8pOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1BERl9MaW5rRXh0cmFjdDo6R2V0VVJMKGludCBpbmRleCkgY29uc3QNCit7DQorICAgIGlmICghbV9Jc1BhcnNlcmQgfHwgaW5kZXggPCAwIHx8IGluZGV4ID49IG1fTGlua0xpc3QuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm4gTCIiOw0KKyAgICB9DQorICAgIENQREZfTGlua0V4dCogbGluayA9IE5VTEw7DQorICAgIGxpbmsgPSBtX0xpbmtMaXN0LkdldEF0KGluZGV4KTsNCisgICAgaWYgKCFsaW5rKSB7DQorICAgICAgICByZXR1cm4gTCIiOw0KKyAgICB9DQorICAgIHJldHVybiBsaW5rLT5tX3N0clVybDsNCit9DQordm9pZCBDUERGX0xpbmtFeHRyYWN0OjpHZXRCb3VuZGVkU2VnbWVudChpbnQgaW5kZXgsIGludCYgc3RhcnQsIGludCYgY291bnQpIGNvbnN0DQorew0KKyAgICBpZiAoIW1fSXNQYXJzZXJkIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+PSBtX0xpbmtMaXN0LkdldFNpemUoKSkgew0KKyAgICAgICAgcmV0dXJuIDsNCisgICAgfQ0KKyAgICBDUERGX0xpbmtFeHQqIGxpbmsgPSBOVUxMOw0KKyAgICBsaW5rID0gbV9MaW5rTGlzdC5HZXRBdChpbmRleCk7DQorICAgIGlmICghbGluaykgew0KKyAgICAgICAgcmV0dXJuIDsNCisgICAgfQ0KKyAgICBzdGFydCA9IGxpbmstPm1fU3RhcnQ7DQorICAgIGNvdW50ID0gbGluay0+bV9Db3VudDsNCit9DQordm9pZCBDUERGX0xpbmtFeHRyYWN0OjpHZXRSZWN0cyhpbnQgaW5kZXgsIENGWF9SZWN0QXJyYXkmIHJlY3RzKSBjb25zdA0KK3sNCisgICAgaWYgKCFtX0lzUGFyc2VyZCB8fCBpbmRleCA8IDAgfHwgaW5kZXggPj0gbV9MaW5rTGlzdC5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDUERGX0xpbmtFeHQqIGxpbmsgPSBOVUxMOw0KKyAgICBsaW5rID0gbV9MaW5rTGlzdC5HZXRBdChpbmRleCk7DQorICAgIGlmICghbGluaykgew0KKyAgICAgICAgcmV0dXJuIDsNCisgICAgfQ0KKyAgICBtX3BUZXh0UGFnZS0+R2V0UmVjdEFycmF5KGxpbmstPm1fU3RhcnQsIGxpbmstPm1fQ291bnQsIHJlY3RzKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZnRleHQvZnBkZl90ZXh0X3NlYXJjaC5jcHAgYi9jb3JlL3NyYy9mcGRmdGV4dC9mcGRmX3RleHRfc2VhcmNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDI5ZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnBkZnRleHQvZnBkZl90ZXh0X3NlYXJjaC5jcHAKQEAgLTAsMCArMSwzMjUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZwZGZhcGkvZnBkZl9wYWdlb2JqLmgiDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZnRleHQvZnBkZl90ZXh0LmgiDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZmFwaS9mcGRmX3BhZ2UuaCINCitjbGFzcyBDUERGX1RleHRTdHJlYW0gOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfVGV4dFN0cmVhbShDRlhfV2lkZVRleHRCdWYmIGJ1ZmZlciwgRlhfQk9PTCBiVXNlTEYsIENGWF9QdHJBcnJheSogcE9iakFycmF5KTsNCisgICAgfkNQREZfVGV4dFN0cmVhbSgpIHt9DQorICAgIEZYX0JPT0wgUHJvY2Vzc09iamVjdChjb25zdCBDUERGX1RleHRPYmplY3QqIHBPYmosIEZYX0JPT0wgYkZpcnN0TGluZSk7DQorICAgIENGWF9XaWRlVGV4dEJ1ZiYJbV9CdWZmZXI7DQorICAgIEZYX0JPT0wJCQkJbV9iVXNlTEY7DQorICAgIENGWF9QdHJBcnJheSoJCW1fcE9iakFycmF5Ow0KKyAgICBjb25zdCBDUERGX1RleHRPYmplY3QqCW1fcExhc3RPYmo7DQorfTsNCitDUERGX1RleHRTdHJlYW06OkNQREZfVGV4dFN0cmVhbShDRlhfV2lkZVRleHRCdWYmIGJ1ZmZlciwgRlhfQk9PTCBiVXNlTEYsIENGWF9QdHJBcnJheSogcE9iakFycmF5KSA6IG1fQnVmZmVyKGJ1ZmZlcikNCit7DQorICAgIG1fcExhc3RPYmogPSBOVUxMOw0KKyAgICBtX2JVc2VMRiA9IGJVc2VMRjsNCisgICAgbV9wT2JqQXJyYXkgPSBwT2JqQXJyYXk7DQorfQ0KK0ZYX0JPT0wgRlBERlRleHRfSXNTYW1lVGV4dE9iamVjdChjb25zdCBDUERGX1RleHRPYmplY3QqIHBUZXh0T2JqMSwgY29uc3QgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dE9iajIpDQorew0KKyAgICBpZiAoIXBUZXh0T2JqMSB8fCAhcFRleHRPYmoyKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ0ZYX0Zsb2F0UmVjdCByY1ByZU9iaihwVGV4dE9iajItPm1fTGVmdCwgcFRleHRPYmoyLT5tX0JvdHRvbSwgcFRleHRPYmoyLT5tX1JpZ2h0LCBwVGV4dE9iajItPm1fVG9wKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCByY0N1ck9iaihwVGV4dE9iajEtPm1fTGVmdCwgcFRleHRPYmoxLT5tX0JvdHRvbSwgcFRleHRPYmoxLT5tX1JpZ2h0LCBwVGV4dE9iajEtPm1fVG9wKTsNCisgICAgaWYgKHJjUHJlT2JqLklzRW1wdHkoKSAmJiByY0N1ck9iai5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmICghcmNQcmVPYmouSXNFbXB0eSgpIHx8ICFyY0N1ck9iai5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJjUHJlT2JqLkludGVyc2VjdChyY0N1ck9iaik7DQorICAgICAgICBpZiAocmNQcmVPYmouSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKEZYU1lTX2ZhYnMocmNQcmVPYmouV2lkdGgoKSAtIHJjQ3VyT2JqLldpZHRoKCkpID4gcmNDdXJPYmouV2lkdGgoKSAvIDIpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFRleHRPYmoyLT5HZXRGb250U2l6ZSgpICE9IHBUZXh0T2JqMS0+R2V0Rm9udFNpemUoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpbnQgblByZUNvdW50ID0gcFRleHRPYmoyLT5Db3VudEl0ZW1zKCk7DQorICAgIGludCBuQ3VyQ291bnQgPSBwVGV4dE9iajEtPkNvdW50SXRlbXMoKTsNCisgICAgaWYgKG5QcmVDb3VudCAhPSBuQ3VyQ291bnQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5QcmVDb3VudDsgaSsrKSB7DQorICAgICAgICBDUERGX1RleHRPYmplY3RJdGVtIGl0ZW1QZXIsIGl0ZW1DdXI7DQorICAgICAgICBwVGV4dE9iajItPkdldEl0ZW1JbmZvKGksICZpdGVtUGVyKTsNCisgICAgICAgIHBUZXh0T2JqMS0+R2V0SXRlbUluZm8oaSwgJml0ZW1DdXIpOw0KKyAgICAgICAgaWYgKGl0ZW1DdXIubV9DaGFyQ29kZSAhPSBpdGVtUGVyLm1fQ2hhckNvZGUpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2ludCBHZXRDaGFyV2lkdGgoRlhfRFdPUkQgY2hhckNvZGUsIENQREZfRm9udCogcEZvbnQpDQorew0KKyAgICBpZihjaGFyQ29kZSA9PSAtMSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaW50IHcgPSBwRm9udC0+R2V0Q2hhcldpZHRoRihjaGFyQ29kZSk7DQorICAgIGlmKHcgPT0gMCkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyOw0KKyAgICAgICAgcEZvbnQtPkFwcGVuZENoYXIoc3RyLCBjaGFyQ29kZSk7DQorICAgICAgICB3ID0gcEZvbnQtPkdldFN0cmluZ1dpZHRoKHN0ciwgMSk7DQorICAgICAgICBpZih3ID09IDApIHsNCisgICAgICAgICAgICBGWF9SRUNUIEJCb3g7DQorICAgICAgICAgICAgcEZvbnQtPkdldENoYXJCQm94KGNoYXJDb2RlLCBCQm94KTsNCisgICAgICAgICAgICB3ID0gQkJveC5yaWdodCAtIEJCb3gubGVmdDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gdzsNCit9DQoraW50IEZQREZUZXh0X1Byb2Nlc3NJbnRlck9iaihjb25zdCBDUERGX1RleHRPYmplY3QqIHBQcmV2T2JqLCBjb25zdCBDUERGX1RleHRPYmplY3QqIHBPYmopDQorew0KKyAgICBpZihGUERGVGV4dF9Jc1NhbWVUZXh0T2JqZWN0KHBQcmV2T2JqLCBwT2JqKSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIENQREZfVGV4dE9iamVjdEl0ZW0gaXRlbTsNCisgICAgaW50IG5JdGVtID0gcFByZXZPYmotPkNvdW50SXRlbXMoKTsNCisgICAgcFByZXZPYmotPkdldEl0ZW1JbmZvKG5JdGVtIC0gMSwgJml0ZW0pOw0KKyAgICBGWF9XQ0hBUiBwcmVDaGFyID0gMCwgY3VyQ2hhciA9IDA7DQorICAgIENGWF9XaWRlU3RyaW5nIHdzdHIgPSBwUHJldk9iai0+R2V0Rm9udCgpLT5Vbmljb2RlRnJvbUNoYXJDb2RlKGl0ZW0ubV9DaGFyQ29kZSk7DQorICAgIGlmKHdzdHIuR2V0TGVuZ3RoKCkpIHsNCisgICAgICAgIHByZUNoYXIgPSB3c3RyLkdldEF0KDApOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIGxhc3RfcG9zID0gaXRlbS5tX09yaWdpblg7DQorICAgIGludCBuTGFzdFdpZHRoID0gR2V0Q2hhcldpZHRoKGl0ZW0ubV9DaGFyQ29kZSwgcFByZXZPYmotPkdldEZvbnQoKSk7DQorICAgIEZYX0ZMT0FUIGxhc3Rfd2lkdGggPSBuTGFzdFdpZHRoICogcFByZXZPYmotPkdldEZvbnRTaXplKCkgLyAxMDAwOw0KKyAgICBsYXN0X3dpZHRoID0gRlhTWVNfZmFicyhsYXN0X3dpZHRoKTsNCisgICAgcE9iai0+R2V0SXRlbUluZm8oMCwgJml0ZW0pOw0KKyAgICB3c3RyID0gcE9iai0+R2V0Rm9udCgpLT5Vbmljb2RlRnJvbUNoYXJDb2RlKGl0ZW0ubV9DaGFyQ29kZSk7DQorICAgIGlmKHdzdHIuR2V0TGVuZ3RoKCkpIHsNCisgICAgICAgIGN1ckNoYXIgPSB3c3RyLkdldEF0KDApOw0KKyAgICB9DQorICAgIGludCBuVGhpc1dpZHRoID0gR2V0Q2hhcldpZHRoKGl0ZW0ubV9DaGFyQ29kZSwgcE9iai0+R2V0Rm9udCgpKTsNCisgICAgRlhfRkxPQVQgdGhpc193aWR0aCA9IG5UaGlzV2lkdGggKiBwT2JqLT5HZXRGb250U2l6ZSgpIC8gMTAwMDsNCisgICAgdGhpc193aWR0aCA9IEZYU1lTX2ZhYnModGhpc193aWR0aCk7DQorICAgIEZYX0ZMT0FUIHRocmVzaG9sZCA9IGxhc3Rfd2lkdGggPiB0aGlzX3dpZHRoID8gbGFzdF93aWR0aCAvIDQgOiB0aGlzX3dpZHRoIC8gNDsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBwcmV2X21hdHJpeCwgcHJldl9yZXZlcnNlOw0KKyAgICBwUHJldk9iai0+R2V0VGV4dE1hdHJpeCgmcHJldl9tYXRyaXgpOw0KKyAgICBwcmV2X3JldmVyc2UuU2V0UmV2ZXJzZShwcmV2X21hdHJpeCk7DQorICAgIEZYX0ZMT0FUIHggPSBwT2JqLT5HZXRQb3NYKCksIHkgPSBwT2JqLT5HZXRQb3NZKCk7DQorICAgIHByZXZfcmV2ZXJzZS5UcmFuc2Zvcm0oeCwgeSk7DQorICAgIGlmIChGWFNZU19mYWJzKHkpID4gdGhyZXNob2xkICogMikgew0KKyAgICAgICAgcmV0dXJuIDI7DQorICAgIH0NCisgICAgdGhyZXNob2xkID0gKEZYX0ZMT0FUKShuTGFzdFdpZHRoID4gblRoaXNXaWR0aCA/IG5MYXN0V2lkdGggOiBuVGhpc1dpZHRoKTsNCisgICAgdGhyZXNob2xkID0gdGhyZXNob2xkID4gNDAwID8gKHRocmVzaG9sZCA8IDcwMCA/IHRocmVzaG9sZCAvIDQgOiAgdGhyZXNob2xkIC8gNSkgOiAodGhyZXNob2xkIC8gMik7DQorICAgIHRocmVzaG9sZCAqPSBuTGFzdFdpZHRoID4gblRoaXNXaWR0aCA/IEZYU1lTX2ZhYnMocFByZXZPYmotPkdldEZvbnRTaXplKCkpIDogRlhTWVNfZmFicyhwT2JqLT5HZXRGb250U2l6ZSgpKTsNCisgICAgdGhyZXNob2xkIC89IDEwMDA7DQorICAgIGlmIChGWFNZU19mYWJzKGxhc3RfcG9zICsgbGFzdF93aWR0aCAtIHgpID4gdGhyZXNob2xkICYmIGN1ckNoYXIgIT0gTCcgJyAmJiBwcmVDaGFyICE9IEwnICcpDQorICAgICAgICBpZihjdXJDaGFyICE9IEwnICcgJiYgcHJlQ2hhciAhPSBMJyAnKSB7DQorICAgICAgICAgICAgaWYoKHggLSBsYXN0X3BvcyAtIGxhc3Rfd2lkdGgpID4gdGhyZXNob2xkIHx8IChsYXN0X3BvcyAtIHggLSBsYXN0X3dpZHRoKSA+IHRocmVzaG9sZCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoeCA8IDAgJiYgKGxhc3RfcG9zIC0geCAtIGxhc3Rfd2lkdGgpID4gdGhyZXNob2xkKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZigoeCAtIGxhc3RfcG9zIC0gbGFzdF93aWR0aCkgPiB0aGlzX3dpZHRoIHx8ICh4IC0gbGFzdF9wb3MgLSB0aGlzX3dpZHRoKSA+IGxhc3Rfd2lkdGggKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgaWYobGFzdF9wb3MgKyBsYXN0X3dpZHRoID4geCArIHRoaXNfd2lkdGggJiYgY3VyQ2hhciA9PSBMJyAnKSB7DQorICAgICAgICByZXR1cm4gMzsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorRlhfQk9PTCBDUERGX1RleHRTdHJlYW06OlByb2Nlc3NPYmplY3QoY29uc3QgQ1BERl9UZXh0T2JqZWN0KiBwT2JqLCBGWF9CT09MIGJGaXJzdExpbmUpDQorew0KKyAgICBpZihwT2JqLT5tX0JvdHRvbSA+IDM4MCAmJiBwT2JqLT5tX0xlZnQgPCA0NSAmJiBwT2JqLT5tX1RvcCA8IDQwMikgew0KKyAgICAgICAgaW50IGkgPSAwOw0KKyAgICB9DQorICAgIENQREZfRm9udCogcEZvbnQgPSBwT2JqLT5HZXRGb250KCk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4Ow0KKyAgICBwT2JqLT5HZXRUZXh0TWF0cml4KCZtYXRyaXgpOw0KKyAgICBGWF9GTE9BVCBmcyA9IHBPYmotPkdldEZvbnRTaXplKCk7DQorICAgIGludCBpdGVtX2luZGV4ID0gMDsNCisgICAgaWYgKG1fcExhc3RPYmopIHsNCisgICAgICAgIGludCByZXN1bHQgPSBGUERGVGV4dF9Qcm9jZXNzSW50ZXJPYmoobV9wTGFzdE9iaiwgcE9iaik7DQorICAgICAgICBpZiAocmVzdWx0ID09IDIpIHsNCisgICAgICAgICAgICBpbnQgbGVuID0gbV9CdWZmZXIuR2V0TGVuZ3RoKCk7DQorICAgICAgICAgICAgaWYgKGxlbiAmJiBtX2JVc2VMRiAmJiBtX0J1ZmZlci5HZXRCdWZmZXIoKVtsZW4gLSAxXSA9PSBMJy0nKSB7DQorICAgICAgICAgICAgICAgIG1fQnVmZmVyLkRlbGV0ZShsZW4gLSAxLCAxKTsNCisgICAgICAgICAgICAgICAgaWYgKG1fcE9iakFycmF5KSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BPYmpBcnJheS0+UmVtb3ZlQXQoKGxlbiAtIDEpICogMiwgMik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAoYkZpcnN0TGluZSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG1fYlVzZUxGKSB7DQorICAgICAgICAgICAgICAgICAgICBtX0J1ZmZlci5BcHBlbmRDaGFyKEwnXHInKTsNCisgICAgICAgICAgICAgICAgICAgIG1fQnVmZmVyLkFwcGVuZENoYXIoTCdcbicpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fcE9iakFycmF5KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcE9iakFycmF5LT5BZGQoTlVMTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbV9CdWZmZXIuQXBwZW5kQ2hhcignICcpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fcE9iakFycmF5KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wT2JqQXJyYXktPkFkZChOVUxMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BPYmpBcnJheS0+QWRkKE5VTEwpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMSkgew0KKyAgICAgICAgICAgIG1fQnVmZmVyLkFwcGVuZENoYXIoTCcgJyk7DQorICAgICAgICAgICAgaWYgKG1fcE9iakFycmF5KSB7DQorICAgICAgICAgICAgICAgIG1fcE9iakFycmF5LT5BZGQoTlVMTCk7DQorICAgICAgICAgICAgICAgIG1fcE9iakFycmF5LT5BZGQoTlVMTCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gLTEpIHsNCisgICAgICAgICAgICBtX3BMYXN0T2JqID0gcE9iajsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSAzKSB7DQorICAgICAgICAgICAgaXRlbV9pbmRleCA9IDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wTGFzdE9iaiA9IHBPYmo7DQorICAgIGludCBuSXRlbXMgPSBwT2JqLT5Db3VudEl0ZW1zKCk7DQorICAgIEZYX0ZMT0FUIElnbm9yZWtlcm5pbmcgPSAwOw0KKyAgICBmb3IoaW50IGkgPSAxOyBpIDwgbkl0ZW1zIC0gMTsgaSArPSAyKSB7DQorICAgICAgICBDUERGX1RleHRPYmplY3RJdGVtIGl0ZW07DQorICAgICAgICBwT2JqLT5HZXRJdGVtSW5mbyhpLCAmaXRlbSk7DQorICAgICAgICBpZiAoaXRlbS5tX0NoYXJDb2RlID09IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICAgICAgaWYoaSA9PSAxKSB7DQorICAgICAgICAgICAgICAgIElnbm9yZWtlcm5pbmcgPSBpdGVtLm1fT3JpZ2luWDsNCisgICAgICAgICAgICB9IGVsc2UgaWYoSWdub3Jla2VybmluZyA+IGl0ZW0ubV9PcmlnaW5YKSB7DQorICAgICAgICAgICAgICAgIElnbm9yZWtlcm5pbmcgPSBpdGVtLm1fT3JpZ2luWDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIElnbm9yZWtlcm5pbmcgPSAwOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX0ZMT0FUIHNwYWNpbmcgPSAwOw0KKyAgICBmb3IgKDsgaXRlbV9pbmRleCA8IG5JdGVtczsgaXRlbV9pbmRleCArKykgew0KKyAgICAgICAgQ1BERl9UZXh0T2JqZWN0SXRlbSBpdGVtOw0KKyAgICAgICAgcE9iai0+R2V0SXRlbUluZm8oaXRlbV9pbmRleCwgJml0ZW0pOw0KKyAgICAgICAgaWYgKGl0ZW0ubV9DaGFyQ29kZSA9PSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHdzdHIgPSBtX0J1ZmZlci5HZXRXaWRlU3RyaW5nKCk7DQorICAgICAgICAgICAgaWYgKHdzdHIuSXNFbXB0eSgpIHx8IHdzdHIuR2V0QXQod3N0ci5HZXRMZW5ndGgoKSAtIDEpID09IEwnICcpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0ZMT0FUIGZvbnRzaXplX2ggPSBwT2JqLT5tX1RleHRTdGF0ZS5HZXRGb250U2l6ZUgoKTsNCisgICAgICAgICAgICBzcGFjaW5nID0gLWZvbnRzaXplX2ggKiAoaXRlbS5tX09yaWdpblggLSBJZ25vcmVrZXJuaW5nKSAvIDEwMDA7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9GTE9BVCBjaGFyU3BhY2UgPSBwT2JqLT5tX1RleHRTdGF0ZS5HZXRPYmplY3QoKS0+bV9DaGFyU3BhY2U7DQorICAgICAgICBpZihuSXRlbXMgPiAzICYmICFzcGFjaW5nKSB7DQorICAgICAgICAgICAgY2hhclNwYWNlID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKChzcGFjaW5nIHx8IGNoYXJTcGFjZSkgJiYgaXRlbV9pbmRleCA+IDApIHsNCisgICAgICAgICAgICBpbnQgbGFzdF93aWR0aCA9IDA7DQorICAgICAgICAgICAgRlhfRkxPQVQgZm9udHNpemVfaCA9IHBPYmotPm1fVGV4dFN0YXRlLkdldEZvbnRTaXplSCgpOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIHNwYWNlX2NoYXJjb2RlID0gcEZvbnQtPkNoYXJDb2RlRnJvbVVuaWNvZGUoJyAnKTsNCisgICAgICAgICAgICBGWF9GTE9BVCB0aHJlc2hvbGQgPSAwOw0KKyAgICAgICAgICAgIGlmIChzcGFjZV9jaGFyY29kZSAhPSAtMSkgew0KKyAgICAgICAgICAgICAgICB0aHJlc2hvbGQgPSBmb250c2l6ZV9oICogcEZvbnQtPkdldENoYXJXaWR0aEYoc3BhY2VfY2hhcmNvZGUpIC8gMTAwMCA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmKHRocmVzaG9sZCA+IGZvbnRzaXplX2ggLyAzKSB7DQorICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IDA7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgdGhyZXNob2xkIC89IDI7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICh0aHJlc2hvbGQgPT0gMCkgew0KKyAgICAgICAgICAgICAgICB0aHJlc2hvbGQgPSBmb250c2l6ZV9oOw0KKyAgICAgICAgICAgICAgICBpbnQgdGhpc193aWR0aCA9IEZYU1lTX2FicyhHZXRDaGFyV2lkdGgoaXRlbS5tX0NoYXJDb2RlLCBwRm9udCkpOw0KKyAgICAgICAgICAgICAgICB0aHJlc2hvbGQgPSB0aGlzX3dpZHRoID4gbGFzdF93aWR0aCA/IChGWF9GTE9BVCl0aGlzX3dpZHRoIDogKEZYX0ZMT0FUKWxhc3Rfd2lkdGg7DQorICAgICAgICAgICAgICAgIGludCBuRGl2aWRlID0gNjsNCisgICAgICAgICAgICAgICAgaWYgKHRocmVzaG9sZCA8IDMwMCkgew0KKyAgICAgICAgICAgICAgICAgICAgbkRpdmlkZSA9IDI7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhyZXNob2xkIDwgNTAwKSB7DQorICAgICAgICAgICAgICAgICAgICBuRGl2aWRlID0gNDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aHJlc2hvbGQgPCA3MDApIHsNCisgICAgICAgICAgICAgICAgICAgIG5EaXZpZGUgPSA1Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IHRocmVzaG9sZCAvIG5EaXZpZGU7DQorICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IGZvbnRzaXplX2ggKiB0aHJlc2hvbGQgLyAxMDAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZihjaGFyU3BhY2UgPiAwLjAwMSkgew0KKyAgICAgICAgICAgICAgICBzcGFjaW5nICs9IG1hdHJpeC5UcmFuc2Zvcm1EaXN0YW5jZShjaGFyU3BhY2UpOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZihjaGFyU3BhY2UgPCAtMC4wMDEpIHsNCisgICAgICAgICAgICAgICAgc3BhY2luZyAtPSBtYXRyaXguVHJhbnNmb3JtRGlzdGFuY2UoRlhTWVNfZmFicyhjaGFyU3BhY2UpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHRocmVzaG9sZCAmJiAoc3BhY2luZyAmJiBzcGFjaW5nID49IHRocmVzaG9sZCkgKSB7DQorICAgICAgICAgICAgICAgIG1fQnVmZmVyLkFwcGVuZENoYXIoTCcgJyk7DQorICAgICAgICAgICAgICAgIGlmIChtX3BPYmpBcnJheSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wT2JqQXJyYXktPkFkZChOVUxMKTsNCisgICAgICAgICAgICAgICAgICAgIG1fcE9iakFycmF5LT5BZGQoTlVMTCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGl0ZW0ubV9DaGFyQ29kZSA9PSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3BhY2luZyA9IDA7DQorICAgICAgICB9DQorICAgICAgICBDRlhfV2lkZVN0cmluZyB1bmljb2RlX3N0ciA9IHBGb250LT5Vbmljb2RlRnJvbUNoYXJDb2RlKGl0ZW0ubV9DaGFyQ29kZSk7DQorICAgICAgICBpZiAodW5pY29kZV9zdHIuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgbV9CdWZmZXIuQXBwZW5kQ2hhcigoRlhfV0NIQVIpaXRlbS5tX0NoYXJDb2RlKTsNCisgICAgICAgICAgICBpZiAobV9wT2JqQXJyYXkpIHsNCisgICAgICAgICAgICAgICAgbV9wT2JqQXJyYXktPkFkZCgodm9pZCopcE9iaik7DQorICAgICAgICAgICAgICAgIG1fcE9iakFycmF5LT5BZGQoKHZvaWQqKShGWF9JTlRQVFIpaXRlbV9pbmRleCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX0J1ZmZlciA8PCB1bmljb2RlX3N0cjsNCisgICAgICAgICAgICBpZiAobV9wT2JqQXJyYXkpIHsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bmljb2RlX3N0ci5HZXRMZW5ndGgoKTsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wT2JqQXJyYXktPkFkZCgodm9pZCopcE9iaik7DQorICAgICAgICAgICAgICAgICAgICBtX3BPYmpBcnJheS0+QWRkKCh2b2lkKikoRlhfSU5UUFRSKWl0ZW1faW5kZXgpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQordm9pZCBfUERGX0dldFRleHRTdHJlYW1fVW5pY29kZShDRlhfV2lkZVRleHRCdWYmIGJ1ZmZlciwgQ1BERl9QYWdlT2JqZWN0cyogcFBhZ2UsIEZYX0JPT0wgYlVzZUxGLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX1B0ckFycmF5KiBwT2JqQXJyYXkpDQorew0KKyAgICBDUERGX1RleHRTdHJlYW0gdGV4dHN0cmVhbShidWZmZXIsIGJVc2VMRiwgcE9iakFycmF5KTsNCisgICAgRlhfUE9TSVRJT04gcG9zID0gcFBhZ2UtPkdldEZpcnN0T2JqZWN0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqZWN0ID0gcFBhZ2UtPkdldE5leHRPYmplY3QocG9zKTsNCisgICAgICAgIGlmIChwT2JqZWN0ID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwT2JqZWN0LT5tX1R5cGUgIT0gUERGUEFHRV9URVhUKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICB0ZXh0c3RyZWFtLlByb2Nlc3NPYmplY3QoKENQREZfVGV4dE9iamVjdCopcE9iamVjdCwgRkFMU0UpOw0KKyAgICB9DQorfQ0KK0NGWF9XaWRlU3RyaW5nIFBERl9HZXRGaXJzdFRleHRMaW5lX1VuaWNvZGUoQ1BERl9Eb2N1bWVudCogcERvYywgQ1BERl9EaWN0aW9uYXJ5KiBwUGFnZSkNCit7DQorICAgIENGWF9XaWRlVGV4dEJ1ZiBidWZmZXI7DQorICAgIGJ1ZmZlci5Fc3RpbWF0ZVNpemUoMCwgMTAyNCk7DQorICAgIENQREZfUGFnZSBwYWdlOw0KKyAgICBwYWdlLkxvYWQocERvYywgcFBhZ2UpOw0KKyAgICBDUERGX1BhcnNlT3B0aW9ucyBvcHRpb25zOw0KKyAgICBvcHRpb25zLm1fYlRleHRPbmx5ID0gVFJVRTsNCisgICAgb3B0aW9ucy5tX2JTZXBhcmF0ZUZvcm0gPSBGQUxTRTsNCisgICAgcGFnZS5QYXJzZUNvbnRlbnQoJm9wdGlvbnMpOw0KKyAgICBDUERGX1RleHRTdHJlYW0gdGV4dHN0cmVhbShidWZmZXIsIEZBTFNFLCBOVUxMKTsNCisgICAgRlhfUE9TSVRJT04gcG9zID0gcGFnZS5HZXRGaXJzdE9iamVjdFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIENQREZfUGFnZU9iamVjdCogcE9iamVjdCA9IHBhZ2UuR2V0TmV4dE9iamVjdChwb3MpOw0KKyAgICAgICAgaWYgKHBPYmplY3QtPm1fVHlwZSAhPSBQREZQQUdFX1RFWFQpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh0ZXh0c3RyZWFtLlByb2Nlc3NPYmplY3QoKENQREZfVGV4dE9iamVjdCopcE9iamVjdCwgVFJVRSkpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gYnVmZmVyLkdldFdpZGVTdHJpbmcoKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZnRleHQvdGV4dF9pbnQuaCBiL2NvcmUvc3JjL2ZwZGZ0ZXh0L3RleHRfaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBhZjUxZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZ0ZXh0L3RleHRfaW50LmgKQEAgLTAsMCArMSwyMTUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX1BERl9URVhUX0lOVF9IXw0KKyNkZWZpbmUgX1BERl9URVhUX0lOVF9IXw0KK2NsYXNzIENQREZfVGV4dFBhcnNlT3B0aW9ucyA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9UZXh0UGFyc2VPcHRpb25zKCk7DQorICAgIEZYX0JPT0wJCQltX2JDaGVja09iamVjdE9yZGVyOw0KKyAgICBGWF9CT09MCQkJbV9iQ2hlY2tEaXJlY3Rpb247DQorICAgIGludAkJCQltX25DaGVja1NhbWVPYmplY3Q7DQorfTsNCitjbGFzcyBDUERGX1RleHRQYWdlOw0KK2NsYXNzIENQREZfTGlua0V4dHJhY3Q7DQorY2xhc3MgQ1BERl9UZXh0UGFnZUZpbmQ7DQorY2xhc3MgQ1BERl9Eb2NQcm9ncmVzc2l2ZVNlYXJjaDsNCisjZGVmaW5lIEZQREZURVhUX0NIQVJfRVJST1IJCQktMQ0KKyNkZWZpbmUgRlBERlRFWFRfQ0hBUl9OT1JNQUwJCTANCisjZGVmaW5lIEZQREZURVhUX0NIQVJfR0VORVJBVEVECQkxDQorI2RlZmluZSBGUERGVEVYVF9DSEFSX1VOVU5JQ09ERQkJMg0KKyNkZWZpbmUgRlBERlRFWFRfQ0hBUl9IWVBIRU4JCTMNCisjZGVmaW5lIEZQREZURVhUX0NIQVJfUElFQ0UJCQk0DQorI2RlZmluZSBGUERGVEVYVF9NQ19QQVNTCQkJMA0KKyNkZWZpbmUgRlBERlRFWFRfTUNfRE9ORQkJCTENCisjZGVmaW5lIEZQREZURVhUX01DX0RFTEFZCQkJMg0KK3R5cGVkZWYgc3RydWN0IF9QQUdFQ0hBUl9JTkZPOiBwdWJsaWMgQ0ZYX09iamVjdCB7DQorICAgIGludAkJCQkJbV9DaGFyQ29kZTsNCisgICAgRlhfV0NIQVIJCQltX1VuaWNvZGU7DQorICAgIEZYX0ZMT0FUCQkJbV9PcmlnaW5YOw0KKyAgICBGWF9GTE9BVAkJCW1fT3JpZ2luWTsNCisgICAgRlhfSU5UMzIJCQltX0ZsYWc7DQorICAgIENGWF9GbG9hdFJlY3QJCW1fQ2hhckJveDsNCisgICAgQ1BERl9UZXh0T2JqZWN0KgltX3BUZXh0T2JqOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4CW1fTWF0cml4Ow0KKyAgICBpbnQJCQkJCW1fSW5kZXg7DQorfSBQQUdFQ0hBUl9JTkZPOw0KK3R5cGVkZWYJQ0ZYX1NlZ21lbnRlZEFycmF5PFBBR0VDSEFSX0lORk8+IFBBR0VDSEFSX0luZm9BcnJheTsNCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIGludAltX1N0YXJ0Ow0KKyAgICBpbnQgbV9uQ291bnQ7DQorfSBGUERGX1NFR01FTlQ7DQordHlwZWRlZiBDRlhfQXJyYXlUZW1wbGF0ZTxGUERGX1NFR01FTlQ+IFNFR01FTlRfQXJyYXk7DQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICBDUERGX1RleHRPYmplY3QqCW1fcFRleHRPYmo7DQorICAgIENGWF9BZmZpbmVNYXRyaXgJbV9mb3JtTWF0cml4Ow0KK30gUERGVEVYVF9PYmo7DQordHlwZWRlZiBDRlhfQXJyYXlUZW1wbGF0ZTxQREZURVhUX09iaj4gTElORU9CSjsNCitjbGFzcyBDUERGX1RleHRQYWdlOiBwdWJsaWMgSVBERl9UZXh0UGFnZQ0KK3sNCitwdWJsaWM6DQorICAgIENQREZfVGV4dFBhZ2UoY29uc3QgQ1BERl9QYWdlKiBwUGFnZSwgaW50IGZsYWdzID0gMCk7DQorICAgIENQREZfVGV4dFBhZ2UoY29uc3QgQ1BERl9QYWdlT2JqZWN0cyogcFBhZ2UsIGludCBmbGFncyA9IDApOw0KKyAgICBDUERGX1RleHRQYWdlKGNvbnN0IENQREZfUGFnZSogcFBhZ2UsIENQREZUZXh0X1BhcnNlT3B0aW9ucyBQYXJzZXJPcHRpb25zKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQkJCQlQYXJzZVRleHRQYWdlKCk7DQorICAgIHZpcnR1YWwgdm9pZAkJCQkJTm9ybWFsaXplT2JqZWN0cyhGWF9CT09MIGJOb3JtYWxpemUpOw0KKyAgICB2aXJ0dWFsCUZYX0JPT0wJCQkJCUlzUGFyc2VyZWQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9Jc1BhcnNlcmVkOw0KKyAgICB9DQorICAgIHZpcnR1YWwgfkNQREZfVGV4dFBhZ2UoKSB7fTsNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgaW50IENoYXJJbmRleEZyb21UZXh0SW5kZXgoaW50IFRleHRJbmRleCljb25zdCA7DQorICAgIHZpcnR1YWwgaW50IFRleHRJbmRleEZyb21DaGFySW5kZXgoaW50IENoYXJJbmRleCljb25zdDsNCisgICAgdmlydHVhbCBpbnQJCQkJCQlDb3VudENoYXJzKCkgY29uc3Q7DQorICAgIHZpcnR1YWwJdm9pZAkJCQkJR2V0Q2hhckluZm8oaW50IGluZGV4LCBGUERGX0NIQVJfSU5GTyAmIGluZm8pIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCUdldFJlY3RBcnJheShpbnQgc3RhcnQsIGludCBuQ291bnQsIENGWF9SZWN0QXJyYXkmIHJlY3RBcnJheSkgY29uc3Q7DQorICAgIHZpcnR1YWwgaW50CQkJCQkJR2V0SW5kZXhBdFBvcyhDUERGX1BvaW50IHBvaW50LCBGWF9GTE9BVCB4VG9yZWxhbmNlLCBGWF9GTE9BVCB5VG9yZWxhbmNlKSBjb25zdDsNCisgICAgdmlydHVhbCBpbnQJCQkJCQlHZXRJbmRleEF0UG9zKEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHksIEZYX0ZMT0FUIHhUb3JlbGFuY2UsDQorICAgICAgICAgICAgRlhfRkxPQVQgeVRvcmVsYW5jZSkgY29uc3Q7DQorICAgIHZpcnR1YWwgQ0ZYX1dpZGVTdHJpbmcJCQlHZXRUZXh0QnlSZWN0KENGWF9GbG9hdFJlY3QgcmVjdCkgY29uc3Q7DQorICAgIHZpcnR1YWwgdm9pZAkJCQkJR2V0UmVjdHNBcnJheUJ5UmVjdChDRlhfRmxvYXRSZWN0IHJlY3QsIENGWF9SZWN0QXJyYXkmIHJlc1JlY3RBcnJheSkgY29uc3Q7DQorICAgIHZpcnR1YWwJaW50CQkJCQkJR2V0T3JkZXJCeURpcmVjdGlvbihpbnQgb3JkZXIsIGludCBkaXJlY3Rpb24pIGNvbnN0Ow0KKyAgICB2aXJ0dWFsCUNGWF9XaWRlU3RyaW5nCQkJR2V0UGFnZVRleHQoaW50IHN0YXJ0ID0gMCwgaW50IG5Db3VudCA9IC0xKSBjb25zdDsNCisNCisgICAgdmlydHVhbCBpbnQJCQkJCQlDb3VudFJlY3RzKGludCBzdGFydCwgaW50IG5Db3VudCk7DQorICAgIHZpcnR1YWwJdm9pZAkJCQkJR2V0UmVjdChpbnQgcmVjdEluZGV4LCBGWF9GTE9BVCYgbGVmdCwgRlhfRkxPQVQmIHRvcA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBGWF9GTE9BVCYgcmlnaHQsIEZYX0ZMT0FUICZib3R0b20pIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJCUdldEJhc2VsaW5lUm90YXRlKGludCByZWN0SW5kZXgsIGludCYgUm90YXRlKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQkJCQlHZXRCYXNlbGluZVJvdGF0ZShDRlhfRmxvYXRSZWN0IHJlY3QsIGludCYgUm90YXRlKTsNCisgICAgdmlydHVhbAlpbnQJCQkJCQlDb3VudEJvdW5kZWRTZWdtZW50cyhGWF9GTE9BVCBsZWZ0LCBGWF9GTE9BVCB0b3AsDQorICAgICAgICAgICAgRlhfRkxPQVQgcmlnaHQsIEZYX0ZMT0FUIGJvdHRvbSwgRlhfQk9PTCBiQ29udGFpbnMgPSBGQUxTRSk7DQorICAgIHZpcnR1YWwJdm9pZAkJCQkJR2V0Qm91bmRlZFNlZ21lbnQoaW50IGluZGV4LCBpbnQmIHN0YXJ0LCBpbnQmIGNvdW50KSBjb25zdDsNCisgICAgdmlydHVhbCBpbnQJCQkJCQlHZXRXb3JkQnJlYWsoaW50IGluZGV4LCBpbnQgZGlyZWN0aW9uKSBjb25zdDsNCitwdWJsaWM6DQorICAgIGNvbnN0CVBBR0VDSEFSX0luZm9BcnJheSoJCUdldENoYXJMaXN0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuICZtX2NoYXJMaXN0Ow0KKyAgICB9DQorICAgIHN0YXRpYwlGWF9CT09MCQkJCQlJc1JlY3RJbnRlcnNlY3QoQ0ZYX0Zsb2F0UmVjdCByZWN0MSwgQ0ZYX0Zsb2F0UmVjdCByZWN0Mik7DQorICAgIHN0YXRpYwlGWF9CT09MCQkJCQlJc0xldHRlcihGWF9XQ0hBUiB1bmljb2RlKTsNCitwcml2YXRlOg0KKyAgICBGWF9CT09MCQkJCQkJCUlzSHlwaGVuKEZYX1dDSEFSIGN1ckNoYXIpOw0KKyAgICBGWF9CT09MCQkJCQkJCUlzQ29udHJvbENoYXIoUEFHRUNIQVJfSU5GTyogcENoYXJJbmZvKTsNCisgICAgRlhfQk9PTAkJCQkJCQlHZXRCYXNlbGluZVJvdGF0ZShpbnQgc3RhcnQsIGludCBlbmQsIGludCYgUm90YXRlKTsNCisgICAgdm9pZAkJCQkJCQlQcm9jZXNzT2JqZWN0KCk7DQorICAgIHZvaWQJCQkJCQkJUHJvY2Vzc0Zvcm1PYmplY3QoQ1BERl9Gb3JtT2JqZWN0KglwRm9ybU9iaiwgQ0ZYX0FmZmluZU1hdHJpeCBmb3JtTWF0cml4KTsNCisgICAgdm9pZAkJCQkJCQlQcm9jZXNzVGV4dE9iamVjdChQREZURVhUX09iaiBwT2JqKTsNCisgICAgdm9pZAkJCQkJCQlQcm9jZXNzVGV4dE9iamVjdChDUERGX1RleHRPYmplY3QqCXBUZXh0T2JqLCBDRlhfQWZmaW5lTWF0cml4IGZvcm1NYXRyaXgsIEZYX1BPU0lUSU9OIE9ialBvcyk7DQorICAgIGludAkJCQkJCQkJUHJvY2Vzc0luc2VydE9iamVjdChjb25zdCBDUERGX1RleHRPYmplY3QqIHBPYmosIENGWF9BZmZpbmVNYXRyaXggZm9ybU1hdHJpeCk7DQorICAgIEZYX0JPT0wJCQkJCQkJR2VuZXJhdGVDaGFySW5mbyhGWF9XQ0hBUiB1bmljb2RlLCBQQUdFQ0hBUl9JTkZPJiBpbmZvKTsNCisgICAgRlhfQk9PTAkJCQkJCQlJc1NhbWVBc1ByZVRleHRPYmplY3QoQ1BERl9UZXh0T2JqZWN0KiBwVGV4dE9iaiwgRlhfUE9TSVRJT04gT2JqUG9zKTsNCisgICAgRlhfQk9PTAkJCQkJCQlJc1NhbWVUZXh0T2JqZWN0KENQREZfVGV4dE9iamVjdCogcFRleHRPYmoxLCBDUERGX1RleHRPYmplY3QqIHBUZXh0T2JqMik7DQorICAgIGludAkJCQkJCQkJR2V0Q2hhcldpZHRoKEZYX0RXT1JEIGNoYXJDb2RlLCBDUERGX0ZvbnQqIHBGb250KSBjb25zdDsNCisgICAgdm9pZAkJCQkJCQlDbG9zZVRlbXBMaW5lKCk7DQorICAgIHZvaWQJCQkJCQkJT25QaWVjZShJRlhfQmlkaUNoYXIqIHBCaWRpLCBDRlhfV2lkZVN0cmluZyYgc3RyKTsNCisgICAgRlhfSU5UMzIJUHJlTWFya2VkQ29udGVudChQREZURVhUX09iaiBwT2JqKTsNCisgICAgdm9pZAkJUHJvY2Vzc01hcmtlZENvbnRlbnQoUERGVEVYVF9PYmogcE9iaik7DQorICAgIHZvaWQJCUNoZWNrTWFya2VkQ29udGVudE9iamVjdChGWF9JTlQzMiYgc3RhcnQsIEZYX0lOVDMyJiBuQ291bnQpIGNvbnN0Ow0KKyAgICB2b2lkCQlGaW5kUHJldmlvdXNUZXh0T2JqZWN0KHZvaWQpOw0KKyAgICB2b2lkCQlBZGRDaGFySW5mb0J5TFJEaXJlY3Rpb24oQ0ZYX1dpZGVTdHJpbmcmIHN0ciwgaW50IGkpOw0KKyAgICB2b2lkCQlBZGRDaGFySW5mb0J5UkxEaXJlY3Rpb24oQ0ZYX1dpZGVTdHJpbmcmIHN0ciwgaW50IGkpOw0KKyAgICBGWF9JTlQzMglHZXRUZXh0T2JqZWN0V3JpdGluZ01vZGUoY29uc3QgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dE9iaik7DQorICAgIEZYX0lOVDMyCUZpbmRUZXh0bGluZUZsb3dEaXJlY3Rpb24oKTsNCitwcm90ZWN0ZWQ6DQorICAgIENQREZUZXh0X1BhcnNlT3B0aW9ucwkJCW1fUGFyc2VPcHRpb25zOw0KKyAgICBDRlhfV29yZEFycmF5CQkJCQltX0NoYXJJbmRleDsNCisgICAgY29uc3QgQ1BERl9QYWdlT2JqZWN0cyoJCQltX3BQYWdlOw0KKyAgICBQQUdFQ0hBUl9JbmZvQXJyYXkJCQkJbV9jaGFyTGlzdDsNCisgICAgQ0ZYX1dpZGVUZXh0QnVmCQkJCQltX1RleHRCdWY7DQorICAgIFBBR0VDSEFSX0luZm9BcnJheQkJCQltX1RlbXBDaGFyTGlzdDsNCisgICAgQ0ZYX1dpZGVUZXh0QnVmCQkJCQltX1RlbXBUZXh0QnVmOw0KKyAgICBpbnQJCQkJCQkJCW1fcGFyc2VyZmxhZzsNCisgICAgQ1BERl9UZXh0T2JqZWN0KgkJCQltX3BQcmVUZXh0T2JqOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4CQkJCW1fcGVyTWF0cml4Ow0KKyAgICBGWF9CT09MCQkJCQkJCW1fSXNQYXJzZXJlZDsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeAkJCQltX0Rpc3BsYXlNYXRyaXg7DQorDQorICAgIFNFR01FTlRfQXJyYXkJCQkJCW1fU2VnbWVudDsNCisgICAgQ0ZYX1JlY3RBcnJheQkJCQkJbV9TZWxSZWN0czsNCisgICAgTElORU9CSgkJCQkJCQltX0xpbmVPYmo7DQorICAgIEZYX0JPT0wJCQkJCQkJbV9UZXh0bGluZURpcjsNCisgICAgQ0ZYX0Zsb2F0UmVjdAkJCQkJbV9DdXJsaW5lUmVjdDsNCit9Ow0KK2NsYXNzIENQREZfVGV4dFBhZ2VGaW5kOiBwdWJsaWMgSVBERl9UZXh0UGFnZUZpbmQNCit7DQorcHVibGljOg0KKyAgICBDUERGX1RleHRQYWdlRmluZChjb25zdCBJUERGX1RleHRQYWdlKiBwVGV4dFBhZ2UpOw0KKyAgICB2aXJ0dWFsCQkJCQkJCX5DUERGX1RleHRQYWdlRmluZCgpIHt9Ow0KK3B1YmxpYzoNCisgICAgdmlydHVhbAlGWF9CT09MCQkJCQlGaW5kRmlyc3QoQ0ZYX1dpZGVTdHJpbmcgZmluZHdoYXQsIGludCBmbGFncywgaW50IHN0YXJ0UG9zID0gMCk7DQorICAgIHZpcnR1YWwJRlhfQk9PTAkJCQkJRmluZE5leHQoKTsNCisgICAgdmlydHVhbAlGWF9CT09MCQkJCQlGaW5kUHJldigpOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJCUdldFJlY3RBcnJheShDRlhfUmVjdEFycmF5JiByZWN0cykgY29uc3Q7DQorICAgIHZpcnR1YWwgaW50CQkJCQkJR2V0Q3VyT3JkZXIoKSBjb25zdDsNCisgICAgdmlydHVhbCBpbnQJCQkJCQlHZXRNYXRjaGVkQ291bnQoKWNvbnN0Ow0KK3Byb3RlY3RlZDoNCisgICAgdm9pZAkJCQkJCQlFeHRyYWN0RmluZFdoYXQoQ0ZYX1dpZGVTdHJpbmcgZmluZHdoYXQpOw0KKyAgICBGWF9CT09MCQkJCQkJCUlzTWF0Y2hXaG9sZVdvcmQoQ0ZYX1dpZGVTdHJpbmcgY3NQYWdlVGV4dCwgaW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKTsNCisgICAgRlhfQk9PTAkJCQkJCQlFeHRyYWN0U3ViU3RyaW5nKENGWF9XaWRlU3RyaW5nJiByU3RyaW5nLCBGWF9MUENXU1RSIGxwc3pGdWxsU3RyaW5nLA0KKyAgICAgICAgICAgIGludCBpU3ViU3RyaW5nLCBGWF9XQ0hBUiBjaFNlcCk7DQorICAgIENGWF9XaWRlU3RyaW5nCQkJCQlNYWtlUmV2ZXJzZShjb25zdCBDRlhfV2lkZVN0cmluZyBzdHIpOw0KKyAgICBpbnQJCQkJCQkJCVJldmVyc2VGaW5kKENGWF9XaWRlU3RyaW5nIGNzUGFnZVRleHQsIENGWF9XaWRlU3RyaW5nIGNzV29yZCwgaW50IG5TdGFydFBvcywgaW50JiBXb3JkTGVuZ3RoKTsNCisgICAgaW50CQkJCQkJCQlHZXRDaGFySW5kZXgoaW50IGluZGV4KSBjb25zdDsNCitwcml2YXRlOg0KKyAgICBDRlhfV29yZEFycmF5CQkJCQltX0NoYXJJbmRleDsNCisgICAgY29uc3QgSVBERl9UZXh0UGFnZSoJCQltX3BUZXh0UGFnZTsNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQkJCW1fc3RyVGV4dDsNCisgICAgQ0ZYX1dpZGVTdHJpbmcJCQkJCW1fZmluZFdoYXQ7DQorICAgIGludAkJCQkJCQkJbV9mbGFnczsNCisgICAgQ0ZYX1dpZGVTdHJpbmdBcnJheQkJCQltX2NzRmluZFdoYXRBcnJheTsNCisgICAgaW50CQkJCQkJCQltX2ZpbmROZXh0U3RhcnQ7DQorICAgIGludAkJCQkJCQkJbV9maW5kUHJlU3RhcnQ7DQorICAgIEZYX0JPT0wJCQkJCQkJbV9iTWF0Y2hDYXNlOw0KKyAgICBGWF9CT09MCQkJCQkJCW1fYk1hdGNoV2hvbGVXb3JkOw0KKyAgICBpbnQJCQkJCQkJCW1fcmVzU3RhcnQ7DQorICAgIGludAkJCQkJCQkJbV9yZXNFbmQ7DQorICAgIENGWF9SZWN0QXJyYXkJCQkJCW1fcmVzQXJyYXk7DQorICAgIEZYX0JPT0wJCQkJCQkJbV9Jc0ZpbmQ7DQorfTsNCitjbGFzcyBDUERGX0xpbmtFeHQ6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1BERl9MaW5rRXh0KCkge307DQorICAgIGludAkJCQkJCQkJbV9TdGFydDsNCisgICAgaW50CQkJCQkJCQltX0NvdW50Ow0KKyAgICBDRlhfV2lkZVN0cmluZwkJCQkJbV9zdHJVcmw7DQorICAgIHZpcnR1YWwJCQkJCQkJfkNQREZfTGlua0V4dCgpIHt9Ow0KK307DQordHlwZWRlZiBDRlhfQXJyYXlUZW1wbGF0ZTxDUERGX0xpbmtFeHQqPiBMSU5LX0luZm9BcnJheTsNCitjbGFzcyBDUERGX0xpbmtFeHRyYWN0OiBwdWJsaWMgSVBERl9MaW5rRXh0cmFjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfTGlua0V4dHJhY3QoKTsNCisgICAgdmlydHVhbAkJCQkJCQl+Q1BERl9MaW5rRXh0cmFjdCgpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJCUV4dHJhY3RMaW5rcyhjb25zdCBJUERGX1RleHRQYWdlKiBwVGV4dFBhZ2UpOw0KKyAgICB2aXJ0dWFsCUZYX0JPT0wJCQkJCUlzRXh0cmFjdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0lzUGFyc2VyZDsNCisgICAgfQ0KK3B1YmxpYzoNCisgICAgdmlydHVhbCBpbnQJCQkJCQlDb3VudExpbmtzKCkgY29uc3Q7DQorICAgIHZpcnR1YWwJQ0ZYX1dpZGVTdHJpbmcJCQlHZXRVUkwoaW50IGluZGV4KSBjb25zdDsNCisgICAgdmlydHVhbAl2b2lkCQkJCQlHZXRCb3VuZGVkU2VnbWVudChpbnQgaW5kZXgsIGludCYgc3RhcnQsIGludCYgY291bnQpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsCXZvaWQJCQkJCUdldFJlY3RzKGludCBpbmRleCwgQ0ZYX1JlY3RBcnJheSYgcmVjdHMpY29uc3Q7DQorcHJvdGVjdGVkOg0KKyAgICB2b2lkCQkJCQkJCXBhcnNlckxpbmsoKTsNCisgICAgdm9pZAkJCQkJCQlEZWxldGVMaW5rTGlzdCgpOw0KKyAgICBGWF9CT09MCQkJCQkJCUNoZWNrV2ViTGluayhDRlhfV2lkZVN0cmluZyYgc3RyQmVDaGVjayk7DQorICAgIEZYX0JPT0wJCQkJCQkJQ2hlY2tNYWlsTGluayhDRlhfV2lkZVN0cmluZyYgc3RyKTsNCisgICAgRlhfQk9PTAkJCQkJCQlBcHBlbmRUb0xpbmtMaXN0KGludCBzdGFydCwgaW50IGNvdW50LCBDRlhfV2lkZVN0cmluZyBzdHJVcmwpOw0KK3ByaXZhdGU6DQorICAgIExJTktfSW5mb0FycmF5CQkJCQltX0xpbmtMaXN0Ow0KKyAgICBjb25zdCBDUERGX1RleHRQYWdlKgkJCW1fcFRleHRQYWdlOw0KKyAgICBDRlhfV2lkZVN0cmluZwkJCQkJbV9zdHJQYWdlVGV4dDsNCisgICAgRlhfQk9PTAkJCQkJCQltX0lzUGFyc2VyZDsNCit9Ow0KK0ZYX1NUUlNJWkUgRlhfVW5pY29kZV9HZXROb3JtYWxpemF0aW9uKEZYX1dDSEFSIHdjaCwgRlhfTFBXU1RSIHBEc3QpOw0KK3ZvaWQgTm9ybWFsaXplU3RyaW5nKENGWF9XaWRlU3RyaW5nJiBzdHIpOw0KK3ZvaWQgTm9ybWFsaXplQ29tcG9zaXRlQ2hhcihGWF9XQ0hBUiB3Q2hhciwgQ0ZYX1dpZGVTdHJpbmcmIHNEZXN0KTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9mcGRmdGV4dC90eHRwcm9jLmggYi9jb3JlL3NyYy9mcGRmdGV4dC90eHRwcm9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VjODUwZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZ0ZXh0L3R4dHByb2MuaApAQCAtMCwwICsxLDcwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9QREZfVFhUUFJPQ19IXw0KKyNkZWZpbmUgX1BERl9UWFRQUk9DX0hfDQorY2xhc3MgQ1RleHRDb2x1bW4gOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIEZYX0ZMT0FUCW1fQXZnUG9zOw0KKyAgICBpbnQJCW1fQ291bnQ7DQorICAgIGludAkJbV9UZXh0UG9zOw0KK307DQorY2xhc3MgQ1RleHRCb3ggOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENGWF9XaWRlU3RyaW5nCW1fVGV4dDsNCisgICAgRlhfRkxPQVQJbV9MZWZ0Ow0KKyAgICBGWF9GTE9BVAltX1JpZ2h0Ow0KKyAgICBGWF9GTE9BVAltX1NwYWNlV2lkdGg7DQorICAgIEZYX0ZMT0FUCW1fVG9wOw0KKyAgICBGWF9GTE9BVAltX0JvdHRvbTsNCisgICAgRlhfRkxPQVQJbV9Gb250U2l6ZVY7DQorICAgIENUZXh0Q29sdW1uKiBtX3BDb2x1bW47DQorfTsNCitjbGFzcyBDVGV4dEJhc2VMaW5lIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDVGV4dEJhc2VMaW5lKCk7DQorICAgIH5DVGV4dEJhc2VMaW5lKCk7DQorICAgIHZvaWQJSW5zZXJ0VGV4dEJveChGWF9GTE9BVCBsZWZ0eCwgRlhfRkxPQVQgcmlnaHR4LCBGWF9GTE9BVCB0b3B5LCBGWF9GTE9BVCBib3R0b215LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgc3BhY2V3LCBGWF9GTE9BVCBmb250c2l6ZV92LCBjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyKTsNCisgICAgRlhfQk9PTAlHZXRXaWR0aChGWF9GTE9BVCYgbGVmdHgsIEZYX0ZMT0FUJiByaWdodHgpOw0KKyAgICBGWF9CT09MCUNhbk1lcmdlKENUZXh0QmFzZUxpbmUqIHBPdGhlcik7DQorICAgIHZvaWQJTWVyZ2UoQ1RleHRCYXNlTGluZSogcE90aGVyKTsNCisgICAgdm9pZAlNZXJnZUJveGVzKCk7DQorICAgIHZvaWQJQ291bnRDaGFycyhpbnQmIGNvdW50LCBGWF9GTE9BVCYgd2lkdGgsIGludCYgbWluY2hhcnMpOw0KKyAgICB2b2lkCVdyaXRlT3V0cHV0KENGWF9XaWRlU3RyaW5nJiBzdHIsIEZYX0ZMT0FUIGxlZnR4LCBGWF9GTE9BVCB3aWR0aCwgaW50IGlXaWR0aCk7DQorICAgIEZYX0ZMT0FUCW1fQmFzZUxpbmU7DQorICAgIEZYX0ZMT0FUCW1fVG9wOw0KKyAgICBGWF9GTE9BVAltX0JvdHRvbTsNCisgICAgRlhfRkxPQVQJbV9NYXhGb250U2l6ZVY7DQorICAgIENGWF9QdHJBcnJheQkJbV9UZXh0TGlzdDsNCit9Ow0KK2NsYXNzIENQREZfUGFnZU9iamVjdDsNCitjbGFzcyBDUERGX1RleHRPYmplY3Q7DQorY2xhc3MgQ1RleHRQYWdlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDVGV4dFBhZ2UoKTsNCisgICAgfkNUZXh0UGFnZSgpOw0KKyAgICB2b2lkCVByb2Nlc3NPYmplY3QoQ1BERl9QYWdlT2JqZWN0KiBwT2JqKTsNCisgICAgQ1RleHRCYXNlTGluZSogSW5zZXJ0VGV4dEJveChDVGV4dEJhc2VMaW5lKiBwQmFzZUxpbmUsIEZYX0ZMT0FUIGJhc2V5LCBGWF9GTE9BVCBsZWZ0eCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCByaWdodHgsIEZYX0ZMT0FUIHRvcHksIEZYX0ZMT0FUIGJvdHRvbXksIEZYX0ZMT0FUIHNwYWNldywgRlhfRkxPQVQgZm9udHNpemVfdiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyYgc3RyLCBDUERGX0ZvbnQqIHBGb250KTsNCisgICAgdm9pZAlXcml0ZU91dHB1dChDRlhfV2lkZVN0cmluZ0FycmF5JiBsaW5lcywgaW50IGlNaW5XaWR0aCk7DQorICAgIEZYX0JPT0wJbV9iQXV0b1dpZHRoOw0KKyAgICBGWF9CT09MCW1fYktlZXBDb2x1bW47DQorICAgIEZYX0JPT0wJbV9iQnJlYWtTcGFjZTsNCisgICAgRlhfQk9PTAltX2JPQ1I7DQorcHJpdmF0ZToNCisgICAgQ0ZYX1B0ckFycmF5CW1fQmFzZUxpbmVzOw0KKyAgICBDRlhfUHRyQXJyYXkJbV9UZXh0Q29sdW1uczsNCisgICAgdm9pZAlGaW5kQ29sdW1ucygpOw0KKyAgICBDVGV4dENvbHVtbioJRmluZENvbHVtbihGWF9GTE9BVCB4cG9zKTsNCisgICAgdm9pZAlCcmVha1NwYWNlKENQREZfVGV4dE9iamVjdCogcFRleHRPYmopOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZnRleHQvdW5pY29kZW5vcm1hbGl6YXRpb24uY3BwIGIvY29yZS9zcmMvZnBkZnRleHQvdW5pY29kZW5vcm1hbGl6YXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5Mjc4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9mcGRmdGV4dC91bmljb2Rlbm9ybWFsaXphdGlvbi5jcHAKQEAgLTAsMCArMSw3NSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnBkZnRleHQvZnBkZl90ZXh0LmgiDQorZXh0ZXJuIGNvbnN0IEZYX1dDSEFSIGdfVW5pY29kZURhdGFfTm9ybWFsaXphdGlvbls2NTUzNl07DQorZXh0ZXJuIGNvbnN0IEZYX1dDSEFSIGdfVW5pY29kZURhdGFfTm9ybWFsaXphdGlvbl9NYXAxWzUzNzZdOw0KK2V4dGVybiBjb25zdCBGWF9XQ0hBUiBnX1VuaWNvZGVEYXRhX05vcm1hbGl6YXRpb25fTWFwMlsxNzM0XTsNCitleHRlcm4gY29uc3QgRlhfV0NIQVIgZ19Vbmljb2RlRGF0YV9Ob3JtYWxpemF0aW9uX01hcDNbMTE2NF07DQorZXh0ZXJuIGNvbnN0IEZYX1dDSEFSIGdfVW5pY29kZURhdGFfTm9ybWFsaXphdGlvbl9NYXA0WzQ4OF07DQorRlhfTFBDV1NUUiBnX1VuaWNvZGVEYXRhX05vcm1hbGl6YXRpb25fTWFwc1s1XSA9IHsNCisgICAgTlVMTCwNCisgICAgZ19Vbmljb2RlRGF0YV9Ob3JtYWxpemF0aW9uX01hcDEsDQorICAgIGdfVW5pY29kZURhdGFfTm9ybWFsaXphdGlvbl9NYXAyLA0KKyAgICBnX1VuaWNvZGVEYXRhX05vcm1hbGl6YXRpb25fTWFwMywNCisgICAgZ19Vbmljb2RlRGF0YV9Ob3JtYWxpemF0aW9uX01hcDQNCit9Ow0KK0ZYX1NUUlNJWkUgRlhfVW5pY29kZV9HZXROb3JtYWxpemF0aW9uKEZYX1dDSEFSIHdjaCwgRlhfTFBXU1RSIHBEc3QpDQorew0KKyAgICB3Y2ggPSB3Y2ggJiAweEZGRkY7DQorICAgIEZYX1dDSEFSIHdGaW5kID0gZ19Vbmljb2RlRGF0YV9Ob3JtYWxpemF0aW9uW3djaF07DQorICAgIGlmICghd0ZpbmQpIHsNCisgICAgICAgIGlmIChwRHN0KSB7DQorICAgICAgICAgICAgKnBEc3QgPSB3Y2g7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICBpZih3RmluZCA+PSAweDgwMDApIHsNCisgICAgICAgIHdjaCA9IHdGaW5kIC0gMHg4MDAwOw0KKyAgICAgICAgd0ZpbmQgPSAxOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgd2NoID0gd0ZpbmQgJiAweDBGRkY7DQorICAgICAgICB3RmluZCA+Pj0gMTI7DQorICAgIH0NCisgICAgRlhfTFBDV1NUUiBwTWFwID0gZ19Vbmljb2RlRGF0YV9Ob3JtYWxpemF0aW9uX01hcHNbd0ZpbmRdOw0KKyAgICBpZiAocE1hcCA9PSBnX1VuaWNvZGVEYXRhX05vcm1hbGl6YXRpb25fTWFwNCkgew0KKyAgICAgICAgcE1hcCA9IGdfVW5pY29kZURhdGFfTm9ybWFsaXphdGlvbl9NYXA0ICsgd2NoOw0KKyAgICAgICAgd0ZpbmQgPSAoRlhfV0NIQVIpKCpwTWFwICsrKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBNYXAgKz0gd2NoOw0KKyAgICB9DQorICAgIGlmIChwRHN0KSB7DQorICAgICAgICBGWF9XQ0hBUiBuID0gd0ZpbmQ7DQorICAgICAgICB3aGlsZSAobiAtLSkgew0KKyAgICAgICAgICAgICpwRHN0ICsrID0gKnBNYXAgKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIChGWF9TVFJTSVpFKXdGaW5kOw0KK30NCitGWF9TVFJTSVpFIEZYX1dpZGVTdHJpbmdfR2V0Tm9ybWFsaXphdGlvbihGWF9XU1RSIHdzU3JjLCBGWF9MUFdTVFIgcERzdCkNCit7DQorICAgIEZYX1NUUlNJWkUgbkNvdW50ID0gMDsNCisgICAgZm9yIChGWF9TVFJTSVpFIGxlbiA9IDA7IGxlbiA8IHdzU3JjLkdldExlbmd0aCgpOyBsZW4gKyspIHsNCisgICAgICAgIEZYX1dDSEFSIHdjaCA9IHdzU3JjLkdldEF0KGxlbik7DQorICAgICAgICBpZihwRHN0KSB7DQorICAgICAgICAgICAgbkNvdW50ICs9IEZYX1VuaWNvZGVfR2V0Tm9ybWFsaXphdGlvbih3Y2gsIHBEc3QgKyBuQ291bnQpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBuQ291bnQgKz0gRlhfVW5pY29kZV9HZXROb3JtYWxpemF0aW9uKHdjaCwgcERzdCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIG5Db3VudDsNCit9DQorRlhfU1RSU0laRSBGWF9XaWRlU3RyaW5nX0dldE5vcm1hbGl6YXRpb24oRlhfV1NUUiB3c1NyYywgQ0ZYX1dpZGVTdHJpbmcgJndzRHN0KQ0KK3sNCisgICAgRlhfU1RSU0laRSBuTGVuID0gRlhfV2lkZVN0cmluZ19HZXROb3JtYWxpemF0aW9uKHdzU3JjLCAoRlhfTFBXU1RSKU5VTEwpOw0KKyAgICBpZiAoIW5MZW4pIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIEZYX0xQV1NUUiBwQnVmID0gd3NEc3QuR2V0QnVmZmVyKG5MZW4pOw0KKyAgICBGWF9XaWRlU3RyaW5nX0dldE5vcm1hbGl6YXRpb24od3NTcmMsIHBCdWYpOw0KKyAgICB3c0RzdC5SZWxlYXNlQnVmZmVyKG5MZW4pOw0KKyAgICByZXR1cm4gbkxlbjsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZnRleHQvdW5pY29kZW5vcm1hbGl6YXRpb25kYXRhLmNwcCBiL2NvcmUvc3JjL2ZwZGZ0ZXh0L3VuaWNvZGVub3JtYWxpemF0aW9uZGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwMzgyYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2ZwZGZ0ZXh0L3VuaWNvZGVub3JtYWxpemF0aW9uZGF0YS5jcHAKQEAgLTAsMCArMSw0NjYxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGNydC9meF9zeXN0ZW0uaCINCitleHRlcm4gY29uc3QgRlhfV0NIQVIgZ19Vbmljb2RlRGF0YV9Ob3JtYWxpemF0aW9uWzY1NTM2XSA9IHsNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MDAxLCAweDAwMDAsIDB4MjAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMDAyLCAweDgwMDIsIDB4MDAwMCwgMHgyMDA0LCAweDAwMDAsIDB4MDAwMCwgMHg4MDAzLA0KKyAgICAweDgwMDQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MDA1LCAweDAwMDAsIDB4ODAwNiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MDA3LCAweDgwMDgsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDgwMDksIDB4ODAwQSwgMHg4MDBCLCAweDgwMEMsIDB4MDAwMCwgMHgwMDAwLCAweDgwMEQsIDB4ODAwRSwgMHg4MDBGLCAweDAwMDAsIDB4MzAwMCwgMHgzMDAzLCAweDMwMDYsIDB4MDAwMCwNCisgICAgMHg4MDEwLCAweDgwMTEsIDB4ODAxMiwgMHg4MDEzLCAweDgwMTQsIDB4ODAxNSwgMHgwMDAwLCAweDgwMTYsIDB4ODAxNywgMHg4MDE4LCAweDgwMTksIDB4ODAxQSwgMHg4MDFCLCAweDgwMUMsIDB4ODAxRCwgMHg4MDFFLA0KKyAgICAweDgwMUYsIDB4ODAyMCwgMHg4MDIxLCAweDgwMjIsIDB4ODAyMywgMHg4MDI0LCAweDgwMjUsIDB4MDAwMCwgMHg4MDI2LCAweDgwMjcsIDB4ODAyOCwgMHg4MDI5LCAweDgwMkEsIDB4ODAyQiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODAyQywgMHg4MDJELCAweDgwMkUsIDB4ODAyRiwgMHg4MDMwLCAweDgwMzEsIDB4MDAwMCwgMHg4MDMyLCAweDgwMzMsIDB4ODAzNCwgMHg4MDM1LCAweDgwMzYsIDB4ODAzNywgMHg4MDM4LCAweDgwMzksIDB4ODAzQSwNCisgICAgMHgwMDAwLCAweDgwM0IsIDB4ODAzQywgMHg4MDNELCAweDgwM0UsIDB4ODAzRiwgMHg4MDQwLCAweDAwMDAsIDB4ODA0MSwgMHg4MDQyLCAweDgwNDMsIDB4ODA0NCwgMHg4MDQ1LCAweDgwNDYsIDB4MDAwMCwgMHg4MDQ3LA0KKyAgICAweDgwNDgsIDB4ODA0OSwgMHg4MDRBLCAweDgwNEIsIDB4ODA0QywgMHg4MDRELCAweDgwNEUsIDB4ODA0RiwgMHg4MDUwLCAweDgwNTEsIDB4ODA1MiwgMHg4MDUzLCAweDgwNTQsIDB4ODA1NSwgMHg4MDU2LCAweDgwNTcsDQorICAgIDB4ODA1OCwgMHg4MDU5LCAweDgwNUEsIDB4ODA1QiwgMHg4MDVDLCAweDgwNUQsIDB4ODA1RSwgMHg4MDVGLCAweDgwNjAsIDB4ODA2MSwgMHg4MDYyLCAweDgwNjMsIDB4ODA2NCwgMHg4MDY1LCAweDgwNjYsIDB4ODA2NywNCisgICAgMHg4MDY4LCAweDgwNjksIDB4ODA2QSwgMHg4MDZCLCAweDgwNkMsIDB4ODA2RCwgMHg4MDZFLCAweDgwNkYsIDB4ODA3MCwgMHg4MDcxLCAweDgwNzIsIDB4ODA3MywgMHg4MDc0LCAweDgwNzUsIDB4ODA3NiwgMHg4MDc3LA0KKyAgICAweDgwNzgsIDB4MDAwMCwgMHgyMDA2LCAweDIwMDgsIDB4ODA3OSwgMHg4MDdBLCAweDgwN0IsIDB4ODA3QywgMHg4MDdELCAweDgwN0UsIDB4ODA3RiwgMHg4MDgwLCAweDgwODEsIDB4ODA4MiwgMHg4MDgzLCAweDgwODQsDQorICAgIDB4ODA4NSwgMHg4MDg2LCAweDgwODcsIDB4ODA4OCwgMHg4MDg5LCAweDgwOEEsIDB4ODA4QiwgMHg4MDhDLCAweDgwOEQsIDB4ODA4RSwgMHgwMDAwLCAweDAwMDAsIDB4ODA4RiwgMHg4MDkwLCAweDgwOTEsIDB4ODA5MiwNCisgICAgMHg4MDkzLCAweDgwOTQsIDB4MjAwQSwgMHgyMDBDLCAweDgwOTUsIDB4ODA5NiwgMHg4MDk3LCAweDgwOTgsIDB4ODA5OSwgMHg4MDlBLCAweDgwOUIsIDB4ODA5QywgMHg4MDlELCAweDgwOUUsIDB4ODA5RiwgMHg4MEEwLA0KKyAgICAweDgwQTEsIDB4ODBBMiwgMHg4MEEzLCAweDgwQTQsIDB4ODBBNSwgMHg4MEE2LCAweDgwQTcsIDB4ODBBOCwgMHg4MEE5LCAweDgwQUEsIDB4ODBBQiwgMHg4MEFDLCAweDgwQUQsIDB4ODBBRSwgMHg4MEFGLCAweDgwQjAsDQorICAgIDB4ODBCMSwgMHg4MEIyLCAweDgwQjMsIDB4ODBCNCwgMHg4MEI1LCAweDgwQjYsIDB4ODBCNywgMHg4MEI4LCAweDgwQjksIDB4ODBCQSwgMHg4MEJCLCAweDgwQkMsIDB4ODBCRCwgMHg4MEJFLCAweDgwQkYsIDB4ODBDMCwNCisgICAgMHg4MEMxLCAweDgwQzIsIDB4ODBDMywgMHg4MEM0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDgwQzUsIDB4ODBDNiwgMHg4MEM3LCAweDgwQzgsIDB4ODBDOSwgMHg4MENBLCAweDAwMDAsIDB4ODBDQiwgMHgwMDAwLA0KKyAgICAweDgwQ0MsIDB4ODBDRCwgMHg4MENFLCAweDgwQ0YsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODBEMCwgMHg4MEQxLCAweDgwRDIsIDB4ODBEMywgMHgwMDAwLCAweDgwRDQsIDB4ODBENSwgMHg4MEQ2LCAweDgwRDcsDQorICAgIDB4ODBEOCwgMHg4MEQ5LCAweDAwMDAsIDB4MDAwMCwgMHg4MERBLCAweDgwREIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MERDLCAweDgwREQsIDB4ODBERSwgMHg4MERGLCAweDgwRTAsIDB4ODBFMSwNCisgICAgMHg4MEUyLCAweDAwMDAsIDB4ODBFMywgMHg4MEU0LCAweDgwRTUsIDB4ODBFNiwgMHg4MEU3LCAweDAwMDAsIDB4ODBFOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjAwRSwgMHgyMDEwLCAweDIwMTIsIDB4MjAxNCwgMHgyMDE2LCAweDIwMTgsIDB4MjAxQSwgMHgyMDFDLCAweDIwMUUsIDB4ODBFOSwgMHg4MEVBLCAweDgwRUIsDQorICAgIDB4ODBFQywgMHg4MEVELCAweDgwRUUsIDB4ODBFRiwgMHg4MEYwLCAweDgwRjEsIDB4ODBGMiwgMHg4MEYzLCAweDgwRjQsIDB4ODBGNSwgMHg4MEY2LCAweDgwRjcsIDB4ODBGOCwgMHg4MEY5LCAweDgwRkEsIDB4ODBGQiwNCisgICAgMHg4MEZDLCAweDgwRkQsIDB4ODBGRSwgMHg4MEZGLCAweDgxMDAsIDB4ODEwMSwgMHg4MTAyLCAweDgxMDMsIDB4ODEwNCwgMHg4MTA1LCAweDgxMDYsIDB4ODEwNywgMHg4MTA4LCAweDgxMDksIDB4ODEwQSwgMHg4MTBCLA0KKyAgICAweDgxMEMsIDB4MjAyMCwgMHgyMDIyLCAweDIwMjQsIDB4ODEwRCwgMHg4MTBFLCAweDAwMDAsIDB4MDAwMCwgMHg4MTBGLCAweDgxMTAsIDB4ODExMSwgMHg4MTEyLCAweDgxMTMsIDB4ODExNCwgMHg4MTE1LCAweDgxMTYsDQorICAgIDB4ODExNywgMHg4MTE4LCAweDgxMTksIDB4ODExQSwgMHg4MTFCLCAweDgxMUMsIDB4ODExRCwgMHg4MTFFLCAweDgxMUYsIDB4ODEyMCwgMHg4MTIxLCAweDgxMjIsIDB4ODEyMywgMHg4MTI0LCAweDgxMjUsIDB4ODEyNiwNCisgICAgMHg4MTI3LCAweDgxMjgsIDB4ODEyOSwgMHg4MTJBLCAweDgxMkIsIDB4ODEyQywgMHg4MTJELCAweDgxMkUsIDB4ODEyRiwgMHg4MTMwLCAweDgxMzEsIDB4ODEzMiwgMHgwMDAwLCAweDAwMDAsIDB4ODEzMywgMHg4MTM0LA0KKyAgICAweDgxMzUsIDB4ODEzNiwgMHgwMDAwLCAweDAwMDAsIDB4ODEzNywgMHg4MTM4LCAweDgxMzksIDB4ODEzQSwgMHg4MTNCLCAweDgxM0MsIDB4ODEzRCwgMHg4MTNFLCAweDgxM0YsIDB4ODE0MCwgMHg4MTQxLCAweDgxNDIsDQorICAgIDB4ODE0MywgMHg4MTQ0LCAweDgxNDUsIDB4ODE0NiwgMHg4MTQ3LCAweDgxNDgsIDB4ODE0OSwgMHg4MTRBLCAweDIwMjYsIDB4MjAyOCwgMHg4MTRCLCAweDgxNEMsIDB4ODE0RCwgMHg4MTRFLCAweDgxNEYsIDB4ODE1MCwNCisgICAgMHg4MTUxLCAweDAwMDAsIDB4MDAwMCwgMHg4MTUyLCAweDgxNTMsIDB4ODE1NCwgMHg4MTU1LCAweDgxNTYsIDB4ODE1NywgMHg4MTU4LCAweDgxNTksIDB4ODE1QSwgMHg4MTVCLCAweDgxNUMsIDB4ODE1RCwgMHg4MTVFLA0KKyAgICAweDgxNUYsIDB4MDAwMCwgMHg4MTYwLCAweDgxNjEsIDB4ODE2MiwgMHg4MTYzLCAweDgxNjQsIDB4ODE2NSwgMHg4MTY2LCAweDAwMDAsIDB4ODE2NywgMHg4MTY4LCAweDgxNjksIDB4ODE2QSwgMHg4MTZCLCAweDgxNkMsDQorICAgIDB4ODE2RCwgMHg4MTZFLCAweDgxNkYsIDB4MDAwMCwgMHgwMDAwLCAweDgxNzAsIDB4ODE3MSwgMHgwMDAwLCAweDgxNzIsIDB4MDAwMCwgMHg4MTczLCAweDgxNzQsIDB4ODE3NSwgMHg4MTc2LCAweDAwMDAsIDB4ODE3NywNCisgICAgMHg4MTc4LCAweDgxNzksIDB4ODE3QSwgMHg4MTdCLCAweDgxN0MsIDB4ODE3RCwgMHgyMDJBLCAweDAwMDAsIDB4MDAwMCwgMHg4MTdFLCAweDgxN0YsIDB4ODE4MCwgMHg4MTgxLCAweDgxODIsIDB4ODE4MywgMHg4MTg0LA0KKyAgICAweDgxODUsIDB4ODE4NiwgMHg4MTg3LCAweDAwMDAsIDB4ODE4OCwgMHg4MTg5LCAweDgxOEEsIDB4ODE4QiwgMHg4MThDLCAweDgxOEQsIDB4MDAwMCwgMHg4MThFLCAweDgxOEYsIDB4ODE5MCwgMHg4MTkxLCAweDgxOTIsDQorICAgIDB4ODE5MywgMHg4MTk0LCAweDAwMDAsIDB4ODE5NSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MTk2LCAweDAwMDAsIDB4ODE5NywgMHg4MTk4LCAweDgxOTksIDB4ODE5QSwgMHg4MTlCLCAweDgxOUMsIDB4ODE5RCwNCisgICAgMHg4MTlFLCAweDAwMDAsIDB4MDAwMCwgMHgyMDJDLCAweDIwMkUsIDB4MjAzMCwgMHgyMDMyLCAweDIwMzQsIDB4MjAzNiwgMHgyMDM4LCAweDIwM0EsIDB4MjAzQywgMHgwMDAwLCAweDAwMDAsIDB4ODE5RiwgMHg4MUEwLA0KKyAgICAweDgxQTEsIDB4ODFBMiwgMHg4MUEzLCAweDgxQTQsIDB4ODFBNSwgMHg4MUE2LCAweDgxQTcsIDB4ODFBOCwgMHg4MUE5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDgxQUEsIDB4ODFBQiwgMHg4MUFDLCAweDgxQUQsIDB4ODFBRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDgxQUYsIDB4ODFCMCwgMHgwMDAwLCAweDgxQjEsIDB4ODFCMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MUIzLCAweDgxQjQsIDB4ODFCNSwgMHg4MUI2LCAweDgxQjcsIDB4ODFCOCwgMHg4MUI5LCAweDgxQkEsIDB4ODFCQiwgMHg4MUJDLCAweDgxQkQsIDB4ODFCRSwgMHg4MUJGLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODFDMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MUMxLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MUMyLCAweDgxQzMsIDB4ODFDNCwgMHg4MUM1LCAweDgxQzYsIDB4ODFDNywgMHg4MUM4LCAweDAwMDAsIDB4ODFDOSwgMHgwMDAwLCAweDgxQ0EsIDB4ODFDQiwNCisgICAgMHg4MUNDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODFDRCwgMHg4MUNFLCAweDgxQ0YsIDB4ODFEMCwgMHg4MUQxLCAweDgxRDIsDQorICAgIDB4ODFEMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDgxRDQsIDB4ODFENSwgMHg4MUQ2LCAweDgxRDcsIDB4ODFEOCwgMHgwMDAwLA0KKyAgICAweDgxRDksIDB4ODFEQSwgMHg4MURCLCAweDgxREMsIDB4ODFERCwgMHg4MURFLCAweDgxREYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4MUUwLCAweDgxRTEsIDB4ODFFMiwgMHgwMDAwLCAweDgxRTMsIDB4ODFFNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MUU1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDgxRTYsIDB4ODFFNywgMHgwMDAwLCAweDgxRTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODFFOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDgxRUEsIDB4ODFFQiwgMHg4MUVDLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODFFRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDgxRUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4MUVGLCAweDgxRjAsIDB4MDAwMCwgMHg4MUYxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDgxRjIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MUYzLCAweDgxRjQsIDB4ODFGNSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MUY2LCAweDgxRjcsIDB4MDAwMCwgMHgwMDAwLCAweDgxRjgsIDB4ODFGOSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODFGQSwgMHg4MUZCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODFGQywgMHg4MUZELCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDgxRkUsIDB4ODFGRiwgMHgwMDAwLCAweDAwMDAsIDB4ODIwMCwgMHg4MjAxLA0KKyAgICAweDgyMDIsIDB4ODIwMywgMHg4MjA0LCAweDgyMDUsIDB4ODIwNiwgMHg4MjA3LCAweDgyMDgsIDB4ODIwOSwgMHg4MjBBLCAweDgyMEIsIDB4ODIwQywgMHg4MjBELCAweDgyMEUsIDB4ODIwRiwgMHg4MjEwLCAweDgyMTEsDQorICAgIDB4ODIxMiwgMHg4MjEzLCAweDgyMTQsIDB4ODIxNSwgMHgyMDNFLCAweDIwNDAsIDB4ODIxNiwgMHg4MjE3LCAweDAwMDAsIDB4MDAwMCwgMHg4MjE4LCAweDgyMTksIDB4ODIxQSwgMHg4MjFCLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4MjFDLCAweDgyMUQsIDB4ODIxRSwgMHg4MjFGLCAweDIwNDIsIDB4MjA0NCwgMHg4MjIwLCAweDgyMjEsIDB4ODIyMiwgMHg4MjIzLCAweDAwMDAsIDB4MDAwMCwgMHg4MjI0LCAweDgyMjUsIDB4ODIyNiwgMHg4MjI3LA0KKyAgICAweDAwMDAsIDB4ODIyOCwgMHg4MjI5LCAweDgyMkEsIDB4ODIyQiwgMHg4MjJDLCAweDgyMkQsIDB4ODIyRSwgMHg4MjJGLCAweDgyMzAsIDB4ODIzMSwgMHgwMDAwLCAweDAwMDAsIDB4ODIzMiwgMHg4MjMzLCAweDAwMDAsDQorICAgIDB4ODIzNCwgMHg4MjM1LCAweDgyMzYsIDB4ODIzNywgMHgyMDQ2LCAweDIwNDgsIDB4ODIzOCwgMHg4MjM5LCAweDAwMDAsIDB4MDAwMCwgMHg4MjNBLCAweDgyM0IsIDB4ODIzQywgMHg4MjNELCAweDgyM0UsIDB4ODIzRiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODI0MCwgMHg4MjQxLCAweDgyNDIsIDB4ODI0MywgMHg4MjQ0LCAweDgyNDUsIDB4MDAwMCwgMHgwMDAwLCAweDgyNDYsIDB4ODI0NywgMHg4MjQ4LCAweDgyNDksIDB4ODI0QSwgMHg4MjRCLA0KKyAgICAweDgyNEMsIDB4ODI0RCwgMHg4MjRFLCAweDgyNEYsIDB4ODI1MCwgMHg4MjUxLCAweDgyNTIsIDB4ODI1MywgMHg4MjU0LCAweDgyNTUsIDB4ODI1NiwgMHg4MjU3LCAweDgyNTgsIDB4ODI1OSwgMHg4MjVBLCAweDgyNUIsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4MjVDLCAweDgyNUQsIDB4ODI1RSwgMHg4MjVGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjA0QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMDRDLCAweDIwNEUsIDB4MjA1MCwgMHgyMDUyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgyMDU0LCAweDAwMDAsIDB4MjA1NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwNTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjA1QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDIwNUMsIDB4MDAwMCwgMHgwMDAwLCAweDIwNUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwNjAsIDB4MjA2MiwgMHgyMDY0LCAweDIwNjYsIDB4MjA2OCwgMHgyMDZBLCAweDIwNkMsIDB4MjA2RSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjA3MCwgMHgyMDcyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwNzQsIDB4MjA3NiwgMHgwMDAwLCAweDIwNzgsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwN0EsIDB4MDAwMCwgMHgwMDAwLCAweDIwN0MsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMDdFLCAweDIwODAsIDB4MjA4MiwgMHgwMDAwLCAweDAwMDAsIDB4MjA4NCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjA4NiwgMHgwMDAwLCAweDAwMDAsIDB4MjA4OCwgMHgyMDhBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwOEMsIDB4MjA4RSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMDkwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMDkyLCAweDIwOTQsIDB4MjA5NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMDk4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgyMDlBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwOUMsIDB4MjA5RSwgMHgwMDAwLCAweDIwQTAsIDB4MjBBMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMEE0LCAweDIwQTYsIDB4MjBBOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMEFBLCAweDAwMDAsIDB4MjBBQywgMHgyMEFFLCAweDIwQjAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjBCMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwQjQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMEI2LCAweDIwQjgsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4MjYwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwQkEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjBCQywgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDIwQkUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMEMwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjBDMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMEM0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwQzYsIDB4MDAwMCwgMHgyMEM4LCAweDIwQ0EsIDB4MjBDQywgMHgyMENFLCAweDIwRDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgyMEQyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMEQ0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwRDYsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgyMEQ4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjBEQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwREMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjBERSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMEUwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDgyNjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMEUyLCAweDAwMDAsIDB4MjBFNCwgMHgwMDAwLCAweDIwRTYsIDB4MDAwMCwgMHgyMEU4LCAweDAwMDAsIDB4MjBFQSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgyMEVDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjBFRSwgMHgwMDAwLCAweDIwRjAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDIwRjIsIDB4MjBGNCwgMHgwMDAwLCAweDIwRjYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDgyNjIsIDB4ODI2MywgMHg4MjY0LCAweDgyNjUsDQorICAgIDB4ODI2NiwgMHg4MjY3LCAweDgyNjgsIDB4ODI2OSwgMHg4MjZBLCAweDgyNkIsIDB4ODI2QywgMHg4MjZELCAweDgyNkUsIDB4ODI2RiwgMHg4MjcwLCAweDAwMDAsIDB4ODI3MSwgMHg4MjcyLCAweDgyNzMsIDB4ODI3NCwNCisgICAgMHg4Mjc1LCAweDgyNzYsIDB4ODI3NywgMHg4Mjc4LCAweDgyNzksIDB4ODI3QSwgMHg4MjdCLCAweDgyN0MsIDB4ODI3RCwgMHg4MjdFLCAweDgyN0YsIDB4ODI4MCwgMHg4MjgxLCAweDgyODIsIDB4MDAwMCwgMHg4MjgzLA0KKyAgICAweDgyODQsIDB4ODI4NSwgMHg4Mjg2LCAweDgyODcsIDB4ODI4OCwgMHg4Mjg5LCAweDgyOEEsIDB4ODI4QiwgMHg4MjhDLCAweDgyOEQsIDB4ODI4RSwgMHg4MjhGLCAweDgyOTAsIDB4ODI5MSwgMHg4MjkyLCAweDgyOTMsDQorICAgIDB4ODI5NCwgMHg4Mjk1LCAweDgyOTYsIDB4ODI5NywgMHg4Mjk4LCAweDgyOTksIDB4ODI5QSwgMHg4MjlCLCAweDgyOUMsIDB4ODI5RCwgMHg4MjlFLCAweDAwMDAsIDB4ODI5RiwgMHg4MkEwLCAweDgyQTEsIDB4ODJBMiwNCisgICAgMHg4MkEzLCAweDgyQTQsIDB4ODJBNSwgMHg4MkE2LCAweDgyQTcsIDB4ODJBOCwgMHg4MkE5LCAweDgyQUEsIDB4ODJBQiwgMHgwMDAwLCAweDIwRjgsIDB4ODJBQywgMHgwMDAwLCAweDgyQUQsIDB4ODJBRSwgMHg4MkFGLA0KKyAgICAweDgyQjAsIDB4ODJCMSwgMHg4MkIyLCAweDgyQjMsIDB4ODJCNCwgMHg4MkI1LCAweDgyQjYsIDB4ODJCNywgMHg4MkI4LCAweDgyQjksIDB4ODJCQSwgMHg4MkJCLCAweDgyQkMsIDB4ODJCRCwgMHg4MkJFLCAweDgyQkYsDQorICAgIDB4ODJDMCwgMHg4MkMxLCAweDgyQzIsIDB4ODJDMywgMHg4MkM0LCAweDgyQzUsIDB4ODJDNiwgMHgwMDAwLCAweDgyQzcsIDB4MDAwMCwgMHgwMDAwLCAweDgyQzgsIDB4ODJDOSwgMHg4MkNBLCAweDgyQ0IsIDB4ODJDQywNCisgICAgMHg4MkNELCAweDgyQ0UsIDB4ODJDRiwgMHg4MkQwLCAweDgyRDEsIDB4ODJEMiwgMHg4MkQzLCAweDgyRDQsIDB4ODJENSwgMHg4MkQ2LCAweDgyRDcsIDB4ODJEOCwgMHg4MkQ5LCAweDgyREEsIDB4ODJEQiwgMHg4MkRDLA0KKyAgICAweDgyREQsIDB4ODJERSwgMHg4MkRGLCAweDgyRTAsIDB4ODJFMSwgMHg4MkUyLCAweDgyRTMsIDB4ODJFNCwgMHg4MkU1LCAweDgyRTYsIDB4ODJFNywgMHg4MkU4LCAweDgyRTksIDB4ODJFQSwgMHg4MkVCLCAweDgyRUMsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4MkVELCAweDgyRUUsIDB4ODJFRiwgMHg4MkYwLCAweDgyRjEsIDB4ODJGMiwgMHg4MkYzLCAweDgyRjQsIDB4ODJGNSwgMHg4MkY2LCAweDgyRjcsIDB4ODJGOCwgMHg4MkY5LCAweDgyRkEsIDB4ODJGQiwgMHg4MkZDLA0KKyAgICAweDgyRkQsIDB4ODJGRSwgMHg4MkZGLCAweDgzMDAsIDB4ODMwMSwgMHg4MzAyLCAweDgzMDMsIDB4ODMwNCwgMHg4MzA1LCAweDgzMDYsIDB4ODMwNywgMHg4MzA4LCAweDgzMDksIDB4ODMwQSwgMHg4MzBCLCAweDgzMEMsDQorICAgIDB4ODMwRCwgMHg4MzBFLCAweDgzMEYsIDB4ODMxMCwgMHg4MzExLCAweDgzMTIsIDB4ODMxMywgMHg4MzE0LCAweDgzMTUsIDB4ODMxNiwgMHg4MzE3LCAweDgzMTgsIDB4ODMxOSwgMHg4MzFBLCAweDgzMUIsIDB4ODMxQywNCisgICAgMHg4MzFELCAweDgzMUUsIDB4ODMxRiwgMHg4MzIwLCAweDgzMjEsIDB4ODMyMiwgMHg4MzIzLCAweDgzMjQsIDB4ODMyNSwgMHg4MzI2LCAweDgzMjcsIDB4ODMyOCwgMHg4MzI5LCAweDgzMkEsIDB4ODMyQiwgMHg4MzJDLA0KKyAgICAweDgzMkQsIDB4ODMyRSwgMHg4MzJGLCAweDgzMzAsIDB4ODMzMSwgMHg4MzMyLCAweDgzMzMsIDB4ODMzNCwgMHg4MzM1LCAweDgzMzYsIDB4ODMzNywgMHg4MzM4LCAweDgzMzksIDB4ODMzQSwgMHg4MzNCLCAweDgzM0MsDQorICAgIDB4ODMzRCwgMHg4MzNFLCAweDgzM0YsIDB4ODM0MCwgMHg4MzQxLCAweDgzNDIsIDB4ODM0MywgMHg4MzQ0LCAweDgzNDUsIDB4ODM0NiwgMHg4MzQ3LCAweDgzNDgsIDB4ODM0OSwgMHg4MzRBLCAweDgzNEIsIDB4ODM0QywNCisgICAgMHg4MzRELCAweDgzNEUsIDB4ODM0RiwgMHg4MzUwLCAweDgzNTEsIDB4ODM1MiwgMHg4MzUzLCAweDgzNTQsIDB4ODM1NSwgMHg4MzU2LCAweDgzNTcsIDB4ODM1OCwgMHg4MzU5LCAweDgzNUEsIDB4ODM1QiwgMHg4MzVDLA0KKyAgICAweDgzNUQsIDB4ODM1RSwgMHg4MzVGLCAweDgzNjAsIDB4ODM2MSwgMHg4MzYyLCAweDgzNjMsIDB4ODM2NCwgMHg4MzY1LCAweDgzNjYsIDB4ODM2NywgMHg4MzY4LCAweDgzNjksIDB4ODM2QSwgMHg4MzZCLCAweDgzNkMsDQorICAgIDB4ODM2RCwgMHg4MzZFLCAweDgzNkYsIDB4ODM3MCwgMHg4MzcxLCAweDgzNzIsIDB4ODM3MywgMHg4Mzc0LCAweDgzNzUsIDB4ODM3NiwgMHg4Mzc3LCAweDgzNzgsIDB4ODM3OSwgMHg4MzdBLCAweDgzN0IsIDB4ODM3QywNCisgICAgMHg4MzdELCAweDgzN0UsIDB4ODM3RiwgMHg4MzgwLCAweDgzODEsIDB4ODM4MiwgMHg4MzgzLCAweDgzODQsIDB4ODM4NSwgMHg4Mzg2LCAweDgzODcsIDB4ODM4OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDgzODksIDB4ODM4QSwgMHg4MzhCLCAweDgzOEMsIDB4ODM4RCwgMHg4MzhFLCAweDgzOEYsIDB4ODM5MCwgMHg4MzkxLCAweDgzOTIsIDB4ODM5MywgMHg4Mzk0LCAweDgzOTUsIDB4ODM5NiwgMHg4Mzk3LCAweDgzOTgsDQorICAgIDB4ODM5OSwgMHg4MzlBLCAweDgzOUIsIDB4ODM5QywgMHg4MzlELCAweDgzOUUsIDB4ODM5RiwgMHg4M0EwLCAweDgzQTEsIDB4ODNBMiwgMHg4M0EzLCAweDgzQTQsIDB4ODNBNSwgMHg4M0E2LCAweDgzQTcsIDB4ODNBOCwNCisgICAgMHg4M0E5LCAweDgzQUEsIDB4ODNBQiwgMHg4M0FDLCAweDgzQUQsIDB4ODNBRSwgMHg4M0FGLCAweDgzQjAsIDB4ODNCMSwgMHg4M0IyLCAweDgzQjMsIDB4ODNCNCwgMHg4M0I1LCAweDgzQjYsIDB4ODNCNywgMHg4M0I4LA0KKyAgICAweDgzQjksIDB4ODNCQSwgMHg4M0JCLCAweDgzQkMsIDB4ODNCRCwgMHg4M0JFLCAweDgzQkYsIDB4ODNDMCwgMHg4M0MxLCAweDgzQzIsIDB4ODNDMywgMHg4M0M0LCAweDgzQzUsIDB4ODNDNiwgMHg4M0M3LCAweDgzQzgsDQorICAgIDB4ODNDOSwgMHg4M0NBLCAweDgzQ0IsIDB4ODNDQywgMHg4M0NELCAweDgzQ0UsIDB4ODNDRiwgMHg4M0QwLCAweDgzRDEsIDB4ODNEMiwgMHg4M0QzLCAweDgzRDQsIDB4ODNENSwgMHg4M0Q2LCAweDgzRDcsIDB4ODNEOCwNCisgICAgMHg4M0Q5LCAweDgzREEsIDB4ODNEQiwgMHg4M0RDLCAweDgzREQsIDB4ODNERSwgMHg4M0RGLCAweDgzRTAsIDB4ODNFMSwgMHg4M0UyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDgzRTMsIDB4ODNFNCwgMHg4M0U1LCAweDgzRTYsIDB4ODNFNywgMHg4M0U4LCAweDgzRTksIDB4ODNFQSwgMHg4M0VCLCAweDgzRUMsIDB4ODNFRCwgMHg4M0VFLCAweDgzRUYsIDB4ODNGMCwgMHg4M0YxLCAweDgzRjIsDQorICAgIDB4ODNGMywgMHg4M0Y0LCAweDgzRjUsIDB4ODNGNiwgMHg4M0Y3LCAweDgzRjgsIDB4MDAwMCwgMHgwMDAwLCAweDgzRjksIDB4ODNGQSwgMHg4M0ZCLCAweDgzRkMsIDB4ODNGRCwgMHg4M0ZFLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4M0ZGLCAweDg0MDAsIDB4ODQwMSwgMHg4NDAyLCAweDg0MDMsIDB4ODQwNCwgMHg4NDA1LCAweDg0MDYsIDB4ODQwNywgMHg4NDA4LCAweDg0MDksIDB4ODQwQSwgMHg4NDBCLCAweDg0MEMsIDB4ODQwRCwgMHg4NDBFLA0KKyAgICAweDg0MEYsIDB4ODQxMCwgMHg4NDExLCAweDg0MTIsIDB4ODQxMywgMHg4NDE0LCAweDg0MTUsIDB4ODQxNiwgMHg4NDE3LCAweDg0MTgsIDB4ODQxOSwgMHg4NDFBLCAweDg0MUIsIDB4ODQxQywgMHg4NDFELCAweDg0MUUsDQorICAgIDB4ODQxRiwgMHg4NDIwLCAweDg0MjEsIDB4ODQyMiwgMHg4NDIzLCAweDg0MjQsIDB4MDAwMCwgMHgwMDAwLCAweDg0MjUsIDB4ODQyNiwgMHg4NDI3LCAweDg0MjgsIDB4ODQyOSwgMHg4NDJBLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4NDJCLCAweDg0MkMsIDB4ODQyRCwgMHg4NDJFLCAweDg0MkYsIDB4ODQzMCwgMHg4NDMxLCAweDg0MzIsIDB4MDAwMCwgMHg4NDMzLCAweDAwMDAsIDB4ODQzNCwgMHgwMDAwLCAweDg0MzUsIDB4MDAwMCwgMHg4NDM2LA0KKyAgICAweDg0MzcsIDB4ODQzOCwgMHg4NDM5LCAweDg0M0EsIDB4ODQzQiwgMHg4NDNDLCAweDg0M0QsIDB4ODQzRSwgMHg4NDNGLCAweDg0NDAsIDB4ODQ0MSwgMHg4NDQyLCAweDg0NDMsIDB4ODQ0NCwgMHg4NDQ1LCAweDg0NDYsDQorICAgIDB4ODQ0NywgMHg4NDQ4LCAweDg0NDksIDB4ODQ0QSwgMHg4NDRCLCAweDg0NEMsIDB4ODQ0RCwgMHg4NDRFLCAweDg0NEYsIDB4ODQ1MCwgMHg4NDUxLCAweDg0NTIsIDB4ODQ1MywgMHg4NDU0LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4NDU1LCAweDg0NTYsIDB4ODQ1NywgMHg4NDU4LCAweDg0NTksIDB4ODQ1QSwgMHg4NDVCLCAweDg0NUMsIDB4ODQ1RCwgMHg4NDVFLCAweDg0NUYsIDB4ODQ2MCwgMHg4NDYxLCAweDg0NjIsIDB4ODQ2MywgMHg4NDY0LA0KKyAgICAweDg0NjUsIDB4ODQ2NiwgMHg4NDY3LCAweDg0NjgsIDB4ODQ2OSwgMHg4NDZBLCAweDg0NkIsIDB4ODQ2QywgMHg4NDZELCAweDg0NkUsIDB4ODQ2RiwgMHg4NDcwLCAweDg0NzEsIDB4ODQ3MiwgMHg4NDczLCAweDg0NzQsDQorICAgIDB4ODQ3NSwgMHg4NDc2LCAweDg0NzcsIDB4ODQ3OCwgMHg4NDc5LCAweDg0N0EsIDB4ODQ3QiwgMHg4NDdDLCAweDg0N0QsIDB4ODQ3RSwgMHg4NDdGLCAweDg0ODAsIDB4ODQ4MSwgMHg4NDgyLCAweDg0ODMsIDB4ODQ4NCwNCisgICAgMHg4NDg1LCAweDg0ODYsIDB4ODQ4NywgMHg4NDg4LCAweDg0ODksIDB4MDAwMCwgMHg4NDhBLCAweDg0OEIsIDB4ODQ4QywgMHg4NDhELCAweDg0OEUsIDB4ODQ4RiwgMHg4NDkwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4NDkxLCAweDg0OTIsIDB4ODQ5MywgMHgwMDAwLCAweDg0OTQsIDB4ODQ5NSwgMHg4NDk2LCAweDg0OTcsIDB4ODQ5OCwgMHg4NDk5LCAweDg0OUEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODQ5QiwgMHg4NDlDLCAweDg0OUQsIDB4ODQ5RSwgMHgwMDAwLCAweDAwMDAsIDB4ODQ5RiwgMHg4NEEwLCAweDg0QTEsIDB4ODRBMiwgMHg4NEEzLCAweDg0QTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4NEE1LCAweDg0QTYsIDB4ODRBNywgMHg4NEE4LCAweDg0QTksIDB4ODRBQSwgMHg4NEFCLCAweDg0QUMsIDB4ODRBRCwgMHg4NEFFLCAweDg0QUYsIDB4ODRCMCwgMHg4NEIxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4NEIyLCAweDg0QjMsIDB4ODRCNCwgMHgwMDAwLCAweDg0QjUsIDB4ODRCNiwgMHg4NEI3LCAweDg0QjgsIDB4ODRCOSwgMHg4NEJBLCAweDg0QkIsIDB4ODRCQywgMHg4NEJELCAweDAwMDAsDQorICAgIDB4ODRCRSwgMHg4NEJGLCAweDg0QzAsIDB4ODRDMSwgMHg4NEMyLCAweDg0QzMsIDB4ODRDNCwgMHg4NEM1LCAweDg0QzYsIDB4ODRDNywgMHg4NEM4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg0QzksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg0Q0EsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODRDQiwgMHgyMEZBLCAweDMwMDksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg0Q0MsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjBGQywgMHgzMDBDLCAweDAwMDAsIDB4MjBGRSwgMHgzMDBGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjEwMCwgMHgwMDAwLCAweDIxMDIsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIxMDQsIDB4MjEwNiwgMHgyMTA4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4NDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg0Q0QsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4NENFLCAweDg0Q0YsIDB4MDAwMCwgMHgwMDAwLCAweDg0RDAsIDB4ODREMSwgMHg4NEQyLCAweDg0RDMsIDB4ODRENCwgMHg4NEQ1LCAweDg0RDYsIDB4ODRENywgMHg4NEQ4LCAweDg0RDksIDB4ODREQSwgMHg4NERCLA0KKyAgICAweDg0REMsIDB4ODRERCwgMHg4NERFLCAweDg0REYsIDB4ODRFMCwgMHg4NEUxLCAweDg0RTIsIDB4ODRFMywgMHg4NEU0LCAweDg0RTUsIDB4ODRFNiwgMHg4NEU3LCAweDg0RTgsIDB4ODRFOSwgMHg4NEVBLCAweDAwMDAsDQorICAgIDB4ODRFQiwgMHg4NEVDLCAweDg0RUQsIDB4ODRFRSwgMHg4NEVGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjEwQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgzMDEyLCAweDMwMTUsIDB4ODRGMCwgMHgyMTBDLCAweDAwMDAsIDB4MzAxOCwgMHgzMDFCLCAweDg0RjEsIDB4MDAwMCwgMHgyMTBFLCAweDg0RjIsIDB4ODRGMywgMHg4NEY0LCAweDg0RjUsIDB4ODRGNiwgMHg4NEY3LA0KKyAgICAweDg0RjgsIDB4ODRGOSwgMHg4NEZBLCAweDg0RkIsIDB4MDAwMCwgMHg4NEZDLCAweDIxMTAsIDB4MDAwMCwgMHgwMDAwLCAweDg0RkQsIDB4ODRGRSwgMHg4NEZGLCAweDg1MDAsIDB4ODUwMSwgMHg4NTAyLCAweDg1MDMsDQorICAgIDB4MjExMiwgMHgzMDFFLCAweDIxMTQsIDB4ODUwNCwgMHg4NTA1LCAweDAwMDAsIDB4ODUwNiwgMHg4NTA3LCAweDg1MDgsIDB4MDAwMCwgMHg4NTA5LCAweDg1MEEsIDB4ODUwQiwgMHg4NTBDLCAweDg1MEQsIDB4ODUwRSwNCisgICAgMHg4NTBGLCAweDg1MTAsIDB4MDAwMCwgMHg4NTExLCAweDg1MTIsIDB4ODUxMywgMHg4NTE0LCAweDg1MTUsIDB4ODUxNiwgMHg4NTE3LCAweDAwMDAsIDB4MzAyMSwgMHg4NTE4LCAweDg1MTksIDB4ODUxQSwgMHg4NTFCLA0KKyAgICAweDg1MUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NTFELCAweDg1MUUsIDB4ODUxRiwgMHg4NTIwLCAweDg1MjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MzAyNCwgMHgzMDI3LCAweDQwMDUsIDB4MzAyQSwgMHgzMDJELCAweDMwMzAsIDB4MzAzMywgMHgzMDM2LCAweDMwMzksIDB4MzAzQywgMHgzMDNGLCAweDMwNDIsIDB4MzA0NSwgMHgzMDQ4LCAweDMwNEIsIDB4MjExNiwNCisgICAgMHg4NTIyLCAweDIxMTgsIDB4MzA0RSwgMHgyMTFBLCAweDg1MjMsIDB4MjExQywgMHgzMDUxLCAweDQwMEEsIDB4MjExRSwgMHg4NTI0LCAweDIxMjAsIDB4MzA1NCwgMHg4NTI1LCAweDg1MjYsIDB4ODUyNywgMHg4NTI4LA0KKyAgICAweDg1MjksIDB4MjEyMiwgMHgzMDU3LCAweDIxMjQsIDB4ODUyQSwgMHgyMTI2LCAweDMwNUEsIDB4NDAwRiwgMHgyMTI4LCAweDg1MkIsIDB4MjEyQSwgMHgzMDVELCAweDg1MkMsIDB4ODUyRCwgMHg4NTJFLCAweDg1MkYsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MzA2MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIxMkMsIDB4MjEyRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMTMwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIxMzIsIDB4MjEzNCwgMHgyMTM2LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODUzMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg1MzEsIDB4MDAwMCwgMHgwMDAwLCAweDg1MzIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIxMzgsIDB4MDAwMCwgMHgyMTNBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyMTNDLCAweDMwNjMsIDB4MDAwMCwgMHgyMTNFLA0KKyAgICAweDMwNjYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgyMTQwLCAweDAwMDAsIDB4MDAwMCwgMHgyMTQyLCAweDAwMDAsIDB4MDAwMCwgMHgyMTQ0LCAweDAwMDAsIDB4MjE0NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDIxNDgsIDB4MDAwMCwgMHgyMTRBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjE0QywgMHgyMTRFLCAweDIxNTAsDQorICAgIDB4MjE1MiwgMHgyMTU0LCAweDAwMDAsIDB4MDAwMCwgMHgyMTU2LCAweDIxNTgsIDB4MDAwMCwgMHgwMDAwLCAweDIxNUEsIDB4MjE1QywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgyMTVFLCAweDIxNjAsIDB4MDAwMCwgMHgwMDAwLCAweDIxNjIsIDB4MjE2NCwgMHgwMDAwLCAweDAwMDAsIDB4MjE2NiwgMHgyMTY4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjE2QSwgMHgyMTZDLCAweDIxNkUsIDB4MjE3MCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgyMTcyLCAweDIxNzQsIDB4MjE3NiwgMHgyMTc4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIxN0EsIDB4MjE3QywgMHgyMTdFLCAweDIxODAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg1MzMsIDB4ODUzNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgzMDY5LCAweDMwNkMsIDB4MzA2RiwgMHgzMDcyLCAweDMwNzUsIDB4MzA3OCwgMHgzMDdCLCAweDMwN0UsIDB4MjE4MiwgMHgyMTg0LCAweDIxODYsIDB4MjE4OCwgMHgyMThBLCAweDIxOEMsIDB4MjE4RSwgMHgyMTkwLA0KKyAgICAweDMwODEsIDB4MzA4NCwgMHgzMDg3LCAweDMwOEEsIDB4MzA4RCwgMHgzMDkwLCAweDMwOTMsIDB4MzA5NiwgMHgzMDk5LCAweDIxOTIsIDB4MzA5QywgMHgzMDlGLCAweDIxOTQsIDB4MjE5NiwgMHgyMTk4LCAweDIxOUEsDQorICAgIDB4MjE5QywgMHgzMEEyLCAweDg1MzUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4NTM2LCAweDg1MzcsIDB4ODUzOCwgMHg4NTM5LCAweDg1M0EsIDB4ODUzQiwgMHg4NTNDLCAweDg1M0QsIDB4ODUzRSwgMHgyMTlFLCAweDIxQTAsIDB4MjFBMiwgMHgyMUE0LCAweDIxQTYsIDB4MjFBOCwgMHgyMUFBLA0KKyAgICAweDIxQUMsIDB4MjFBRSwgMHgyMUIwLCAweDIxQjIsIDB4MzBBNSwgMHgzMEE4LCAweDMwQUIsIDB4MzBBRSwgMHgzMEIxLCAweDMwQjQsIDB4MzBCNywgMHgzMEJBLCAweDMwQkQsIDB4NDAxNCwgMHg0MDE5LCAweDQwMUUsDQorICAgIDB4NDAyMywgMHg0MDI4LCAweDQwMkQsIDB4NDAzMiwgMHg0MDM3LCAweDQwM0MsIDB4NDA0MSwgMHg0MDQ2LCAweDIxQjQsIDB4MjFCNiwgMHgyMUI4LCAweDIxQkEsIDB4MjFCQywgMHgyMUJFLCAweDIxQzAsIDB4MjFDMiwNCisgICAgMHgyMUM0LCAweDMwQzAsIDB4MzBDMywgMHgzMEM2LCAweDMwQzksIDB4MzBDQywgMHgzMENGLCAweDMwRDIsIDB4MzBENSwgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwgMHgzMEUxLCAweDMwRTQsIDB4MzBFNywgMHgzMEVBLA0KKyAgICAweDMwRUQsIDB4MzBGMCwgMHgzMEYzLCAweDMwRjYsIDB4MzBGOSwgMHgzMEZDLCAweDMwRkYsIDB4MzEwMiwgMHgzMTA1LCAweDMxMDgsIDB4MzEwQiwgMHgzMTBFLCAweDMxMTEsIDB4MzExNCwgMHgzMTE3LCAweDMxMUEsDQorICAgIDB4MzExRCwgMHgzMTIwLCAweDMxMjMsIDB4MzEyNiwgMHgzMTI5LCAweDMxMkMsIDB4ODUzRiwgMHg4NTQwLCAweDg1NDEsIDB4ODU0MiwgMHg4NTQzLCAweDg1NDQsIDB4ODU0NSwgMHg4NTQ2LCAweDg1NDcsIDB4ODU0OCwNCisgICAgMHg4NTQ5LCAweDg1NEEsIDB4ODU0QiwgMHg4NTRDLCAweDg1NEQsIDB4ODU0RSwgMHg4NTRGLCAweDg1NTAsIDB4ODU1MSwgMHg4NTUyLCAweDg1NTMsIDB4ODU1NCwgMHg4NTU1LCAweDg1NTYsIDB4ODU1NywgMHg4NTU4LA0KKyAgICAweDg1NTksIDB4ODU1QSwgMHg4NTVCLCAweDg1NUMsIDB4ODU1RCwgMHg4NTVFLCAweDg1NUYsIDB4ODU2MCwgMHg4NTYxLCAweDg1NjIsIDB4ODU2MywgMHg4NTY0LCAweDg1NjUsIDB4ODU2NiwgMHg4NTY3LCAweDg1NjgsDQorICAgIDB4ODU2OSwgMHg4NTZBLCAweDg1NkIsIDB4ODU2QywgMHg4NTZELCAweDg1NkUsIDB4ODU2RiwgMHg4NTcwLCAweDg1NzEsIDB4ODU3MiwgMHg4NTczLCAweDIxQzYsIDB4MjFDOCwgMHgyMUNBLCAweDIxQ0MsIDB4MjFDRSwNCisgICAgMHgyMUQwLCAweDIxRDIsIDB4MjFENCwgMHgyMUQ2LCAweDIxRDgsIDB4ODU3NCwgMHg4NTc1LCAweDg1NzYsIDB4ODU3NywgMHg4NTc4LCAweDg1NzksIDB4ODU3QSwgMHg4NTdCLCAweDg1N0MsIDB4MjFEQSwgMHg4NTdELA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg1N0UsIDB4ODU3RiwgMHg4NTgwLCAweDg1ODEsIDB4ODU4MiwgMHg4NTgzLCAweDg1ODQsIDB4ODU4NSwgMHg4NTg2LCAweDIxREMsDQorICAgIDB4ODU4NywgMHg4NTg4LCAweDg1ODksIDB4ODU4QSwgMHg4NThCLCAweDg1OEMsIDB4ODU4RCwgMHg4NThFLCAweDg1OEYsIDB4MjFERSwgMHg4NTkwLCAweDg1OTEsIDB4ODU5MiwgMHg4NTkzLCAweDg1OTQsIDB4ODU5NSwNCisgICAgMHg4NTk2LCAweDg1OTcsIDB4ODU5OCwgMHgyMUUwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg0MDRCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MzEyRiwgMHgyMUUyLCAweDMxMzIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIxRTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODU5OSwgMHg4NTlBLCAweDg1OUIsIDB4ODU5QywgMHg4NTlELCAweDg1OUUsIDB4ODU5RiwgMHg4NUEwLCAweDg1QTEsIDB4ODVBMiwgMHg4NUEzLCAweDg1QTQsIDB4ODVBNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg1QTYsIDB4ODVBNywgMHg4NUE4LCAweDg1QTksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NUFBLCAweDg1QUIsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NUFDLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg1QUQsDQorICAgIDB4ODVBRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODVBRiwgMHgwMDAwLCAweDAwMDAsIDB4ODVCMCwgMHgwMDAwLCAweDg1QjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4NUIyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg1QjMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NUI0LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NUI1LCAweDg1QjYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODVCNywgMHg4NUI4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg1QjksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODVCQSwgMHg4NUJCLCAweDg1QkMsIDB4ODVCRCwgMHg4NUJFLCAweDg1QkYsIDB4ODVDMCwgMHg4NUMxLCAweDg1QzIsIDB4ODVDMywgMHg4NUM0LCAweDg1QzUsIDB4ODVDNiwgMHg4NUM3LCAweDg1QzgsIDB4ODVDOSwNCisgICAgMHg4NUNBLCAweDg1Q0IsIDB4ODVDQywgMHg4NUNELCAweDg1Q0UsIDB4ODVDRiwgMHg4NUQwLCAweDg1RDEsIDB4ODVEMiwgMHg4NUQzLCAweDg1RDQsIDB4ODVENSwgMHg4NUQ2LCAweDg1RDcsIDB4ODVEOCwgMHg4NUQ5LA0KKyAgICAweDg1REEsIDB4ODVEQiwgMHg4NURDLCAweDg1REQsIDB4ODVERSwgMHg4NURGLCAweDg1RTAsIDB4ODVFMSwgMHg4NUUyLCAweDg1RTMsIDB4ODVFNCwgMHg4NUU1LCAweDg1RTYsIDB4ODVFNywgMHg4NUU4LCAweDg1RTksDQorICAgIDB4ODVFQSwgMHg4NUVCLCAweDg1RUMsIDB4ODVFRCwgMHg4NUVFLCAweDg1RUYsIDB4ODVGMCwgMHg4NUYxLCAweDg1RjIsIDB4ODVGMywgMHg4NUY0LCAweDg1RjUsIDB4ODVGNiwgMHg4NUY3LCAweDg1RjgsIDB4ODVGOSwNCisgICAgMHg4NUZBLCAweDg1RkIsIDB4ODVGQywgMHg4NUZELCAweDg1RkUsIDB4ODVGRiwgMHg4NjAwLCAweDg2MDEsIDB4ODYwMiwgMHg4NjAzLCAweDg2MDQsIDB4ODYwNSwgMHg4NjA2LCAweDg2MDcsIDB4ODYwOCwgMHg4NjA5LA0KKyAgICAweDg2MEEsIDB4ODYwQiwgMHg4NjBDLCAweDg2MEQsIDB4ODYwRSwgMHg4NjBGLCAweDg2MTAsIDB4ODYxMSwgMHg4NjEyLCAweDg2MTMsIDB4ODYxNCwgMHg4NjE1LCAweDg2MTYsIDB4ODYxNywgMHg4NjE4LCAweDg2MTksDQorICAgIDB4ODYxQSwgMHg4NjFCLCAweDg2MUMsIDB4ODYxRCwgMHg4NjFFLCAweDg2MUYsIDB4ODYyMCwgMHg4NjIxLCAweDg2MjIsIDB4ODYyMywgMHg4NjI0LCAweDg2MjUsIDB4ODYyNiwgMHg4NjI3LCAweDg2MjgsIDB4ODYyOSwNCisgICAgMHg4NjJBLCAweDg2MkIsIDB4ODYyQywgMHg4NjJELCAweDg2MkUsIDB4ODYyRiwgMHg4NjMwLCAweDg2MzEsIDB4ODYzMiwgMHg4NjMzLCAweDg2MzQsIDB4ODYzNSwgMHg4NjM2LCAweDg2MzcsIDB4ODYzOCwgMHg4NjM5LA0KKyAgICAweDg2M0EsIDB4ODYzQiwgMHg4NjNDLCAweDg2M0QsIDB4ODYzRSwgMHg4NjNGLCAweDg2NDAsIDB4ODY0MSwgMHg4NjQyLCAweDg2NDMsIDB4ODY0NCwgMHg4NjQ1LCAweDg2NDYsIDB4ODY0NywgMHg4NjQ4LCAweDg2NDksDQorICAgIDB4ODY0QSwgMHg4NjRCLCAweDg2NEMsIDB4ODY0RCwgMHg4NjRFLCAweDg2NEYsIDB4ODY1MCwgMHg4NjUxLCAweDg2NTIsIDB4ODY1MywgMHg4NjU0LCAweDg2NTUsIDB4ODY1NiwgMHg4NjU3LCAweDg2NTgsIDB4ODY1OSwNCisgICAgMHg4NjVBLCAweDg2NUIsIDB4ODY1QywgMHg4NjVELCAweDg2NUUsIDB4ODY1RiwgMHg4NjYwLCAweDg2NjEsIDB4ODY2MiwgMHg4NjYzLCAweDg2NjQsIDB4ODY2NSwgMHg4NjY2LCAweDg2NjcsIDB4ODY2OCwgMHg4NjY5LA0KKyAgICAweDg2NkEsIDB4ODY2QiwgMHg4NjZDLCAweDg2NkQsIDB4ODY2RSwgMHg4NjZGLCAweDg2NzAsIDB4ODY3MSwgMHg4NjcyLCAweDg2NzMsIDB4ODY3NCwgMHg4Njc1LCAweDg2NzYsIDB4ODY3NywgMHg4Njc4LCAweDg2NzksDQorICAgIDB4ODY3QSwgMHg4NjdCLCAweDg2N0MsIDB4ODY3RCwgMHg4NjdFLCAweDg2N0YsIDB4ODY4MCwgMHg4NjgxLCAweDg2ODIsIDB4ODY4MywgMHg4Njg0LCAweDg2ODUsIDB4ODY4NiwgMHg4Njg3LCAweDg2ODgsIDB4ODY4OSwNCisgICAgMHg4NjhBLCAweDg2OEIsIDB4ODY4QywgMHg4NjhELCAweDg2OEUsIDB4ODY4RiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4NjkwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NjkxLCAweDAwMDAsIDB4ODY5MiwgMHg4NjkzLCAweDg2OTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIxRTYsIDB4MDAwMCwgMHgyMUU4LCAweDAwMDAsDQorICAgIDB4MjFFQSwgMHgwMDAwLCAweDIxRUMsIDB4MDAwMCwgMHgyMUVFLCAweDAwMDAsIDB4MjFGMCwgMHgwMDAwLCAweDIxRjIsIDB4MDAwMCwgMHgyMUY0LCAweDAwMDAsIDB4MjFGNiwgMHgwMDAwLCAweDIxRjgsIDB4MDAwMCwNCisgICAgMHgyMUZBLCAweDAwMDAsIDB4MjFGQywgMHgwMDAwLCAweDAwMDAsIDB4MjFGRSwgMHgwMDAwLCAweDIyMDAsIDB4MDAwMCwgMHgyMjAyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDIyMDQsIDB4MjIwNiwgMHgwMDAwLCAweDIyMDgsIDB4MjIwQSwgMHgwMDAwLCAweDIyMEMsIDB4MjIwRSwgMHgwMDAwLCAweDIyMTAsIDB4MjIxMiwgMHgwMDAwLCAweDIyMTQsIDB4MjIxNiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIyMTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjIxQSwgMHgyMjFDLCAweDAwMDAsIDB4MjIxRSwgMHgyMjIwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIyMjIsIDB4MDAwMCwgMHgyMjI0LCAweDAwMDAsDQorICAgIDB4MjIyNiwgMHgwMDAwLCAweDIyMjgsIDB4MDAwMCwgMHgyMjJBLCAweDAwMDAsIDB4MjIyQywgMHgwMDAwLCAweDIyMkUsIDB4MDAwMCwgMHgyMjMwLCAweDAwMDAsIDB4MjIzMiwgMHgwMDAwLCAweDIyMzQsIDB4MDAwMCwNCisgICAgMHgyMjM2LCAweDAwMDAsIDB4MjIzOCwgMHgwMDAwLCAweDAwMDAsIDB4MjIzQSwgMHgwMDAwLCAweDIyM0MsIDB4MDAwMCwgMHgyMjNFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDIyNDAsIDB4MjI0MiwgMHgwMDAwLCAweDIyNDQsIDB4MjI0NiwgMHgwMDAwLCAweDIyNDgsIDB4MjI0QSwgMHgwMDAwLCAweDIyNEMsIDB4MjI0RSwgMHgwMDAwLCAweDIyNTAsIDB4MjI1MiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIyNTQsIDB4MDAwMCwgMHgwMDAwLCAweDIyNTYsIDB4MjI1OCwgMHgyMjVBLCAweDIyNUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MjI1RSwgMHgyMjYwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODY5NSwgMHg4Njk2LCAweDg2OTcsIDB4ODY5OCwgMHg4Njk5LCAweDg2OUEsIDB4ODY5QiwgMHg4NjlDLCAweDg2OUQsIDB4ODY5RSwgMHg4NjlGLCAweDg2QTAsIDB4ODZBMSwgMHg4NkEyLCAweDg2QTMsDQorICAgIDB4ODZBNCwgMHg4NkE1LCAweDg2QTYsIDB4ODZBNywgMHg4NkE4LCAweDg2QTksIDB4ODZBQSwgMHg4NkFCLCAweDg2QUMsIDB4ODZBRCwgMHg4NkFFLCAweDg2QUYsIDB4ODZCMCwgMHg4NkIxLCAweDg2QjIsIDB4ODZCMywNCisgICAgMHg4NkI0LCAweDg2QjUsIDB4ODZCNiwgMHg4NkI3LCAweDg2QjgsIDB4ODZCOSwgMHg4NkJBLCAweDg2QkIsIDB4ODZCQywgMHg4NkJELCAweDg2QkUsIDB4ODZCRiwgMHg4NkMwLCAweDg2QzEsIDB4ODZDMiwgMHg4NkMzLA0KKyAgICAweDg2QzQsIDB4ODZDNSwgMHg4NkM2LCAweDg2QzcsIDB4ODZDOCwgMHg4NkM5LCAweDg2Q0EsIDB4ODZDQiwgMHg4NkNDLCAweDg2Q0QsIDB4ODZDRSwgMHg4NkNGLCAweDg2RDAsIDB4ODZEMSwgMHg4NkQyLCAweDg2RDMsDQorICAgIDB4ODZENCwgMHg4NkQ1LCAweDg2RDYsIDB4ODZENywgMHg4NkQ4LCAweDg2RDksIDB4ODZEQSwgMHg4NkRCLCAweDg2REMsIDB4ODZERCwgMHg4NkRFLCAweDg2REYsIDB4ODZFMCwgMHg4NkUxLCAweDg2RTIsIDB4ODZFMywNCisgICAgMHg4NkU0LCAweDg2RTUsIDB4ODZFNiwgMHg4NkU3LCAweDg2RTgsIDB4ODZFOSwgMHg4NkVBLCAweDg2RUIsIDB4ODZFQywgMHg4NkVELCAweDg2RUUsIDB4ODZFRiwgMHg4NkYwLCAweDg2RjEsIDB4ODZGMiwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4NkYzLCAweDg2RjQsIDB4ODZGNSwgMHg4NkY2LCAweDg2RjcsIDB4ODZGOCwgMHg4NkY5LCAweDg2RkEsIDB4ODZGQiwgMHg4NkZDLCAweDg2RkQsIDB4ODZGRSwgMHg4NkZGLCAweDg3MDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MzEzNSwgMHgzMTM4LCAweDMxM0IsIDB4MzEzRSwgMHgzMTQxLCAweDMxNDQsIDB4MzE0NywgMHgzMTRBLCAweDMxNEQsIDB4MzE1MCwgMHgzMTUzLCAweDMxNTYsIDB4MzE1OSwgMHgzMTVDLCAweDQwNTAsIDB4NDA1NSwNCisgICAgMHg0MDVBLCAweDQwNUYsIDB4NDA2NCwgMHg0MDY5LCAweDQwNkUsIDB4NDA3MywgMHg0MDc4LCAweDQwN0QsIDB4NDA4MiwgMHg0MDg3LCAweDQwOEMsIDB4NDA5MSwgMHg0MDk2LCAweDQwOUIsIDB4NDBBMywgMHgwMDAwLA0KKyAgICAweDMxNUYsIDB4MzE2MiwgMHgzMTY1LCAweDMxNjgsIDB4MzE2QiwgMHgzMTZFLCAweDMxNzEsIDB4MzE3NCwgMHgzMTc3LCAweDMxN0EsIDB4MzE3RCwgMHgzMTgwLCAweDMxODMsIDB4MzE4NiwgMHgzMTg5LCAweDMxOEMsDQorICAgIDB4MzE4RiwgMHgzMTkyLCAweDMxOTUsIDB4MzE5OCwgMHgzMTlCLCAweDMxOUUsIDB4MzFBMSwgMHgzMUE0LCAweDMxQTcsIDB4MzFBQSwgMHgzMUFELCAweDMxQjAsIDB4MzFCMywgMHgzMUI2LCAweDMxQjksIDB4MzFCQywNCisgICAgMHgzMUJGLCAweDMxQzIsIDB4MzFDNSwgMHgzMUM4LCAweDg3MDEsIDB4ODcwMiwgMHg4NzAzLCAweDg3MDQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDMxQ0IsIDB4MjI2MiwgMHgyMjY0LCAweDIyNjYsIDB4MjI2OCwgMHgyMjZBLCAweDIyNkMsIDB4MjI2RSwgMHgyMjcwLCAweDIyNzIsIDB4MjI3NCwgMHgyMjc2LCAweDIyNzgsIDB4MjI3QSwgMHgyMjdDLCAweDIyN0UsDQorICAgIDB4ODcwNSwgMHg4NzA2LCAweDg3MDcsIDB4ODcwOCwgMHg4NzA5LCAweDg3MEEsIDB4ODcwQiwgMHg4NzBDLCAweDg3MEQsIDB4ODcwRSwgMHg4NzBGLCAweDg3MTAsIDB4ODcxMSwgMHg4NzEyLCAweDIyODAsIDB4MjI4MiwNCisgICAgMHgyMjg0LCAweDIyODYsIDB4MjI4OCwgMHgyMjhBLCAweDIyOEMsIDB4MjI4RSwgMHgyMjkwLCAweDIyOTIsIDB4MjI5NCwgMHgyMjk2LCAweDIyOTgsIDB4MjI5QSwgMHg0MEFBLCAweDQwQjAsIDB4MjI5QywgMHgwMDAwLA0KKyAgICAweDg3MTMsIDB4ODcxNCwgMHg4NzE1LCAweDg3MTYsIDB4ODcxNywgMHg4NzE4LCAweDg3MTksIDB4ODcxQSwgMHg4NzFCLCAweDg3MUMsIDB4ODcxRCwgMHg4NzFFLCAweDg3MUYsIDB4ODcyMCwgMHg4NzIxLCAweDg3MjIsDQorICAgIDB4ODcyMywgMHg4NzI0LCAweDg3MjUsIDB4ODcyNiwgMHg4NzI3LCAweDg3MjgsIDB4ODcyOSwgMHg4NzJBLCAweDg3MkIsIDB4ODcyQywgMHg4NzJELCAweDg3MkUsIDB4ODcyRiwgMHg4NzMwLCAweDg3MzEsIDB4ODczMiwNCisgICAgMHg4NzMzLCAweDg3MzQsIDB4ODczNSwgMHg4NzM2LCAweDg3MzcsIDB4ODczOCwgMHg4NzM5LCAweDg3M0EsIDB4ODczQiwgMHg4NzNDLCAweDg3M0QsIDB4ODczRSwgMHg4NzNGLCAweDg3NDAsIDB4ODc0MSwgMHg4NzQyLA0KKyAgICAweDg3NDMsIDB4MjI5RSwgMHgyMkEwLCAweDIyQTIsIDB4MjJBNCwgMHgyMkE2LCAweDIyQTgsIDB4MjJBQSwgMHgyMkFDLCAweDIyQUUsIDB4MjJCMCwgMHgyMkIyLCAweDIyQjQsIDB4MjJCNiwgMHgyMkI4LCAweDIyQkEsDQorICAgIDB4MjJCQywgMHgyMkJFLCAweDIyQzAsIDB4MjJDMiwgMHgyMkM0LCAweDIyQzYsIDB4MjJDOCwgMHgyMkNBLCAweDIyQ0MsIDB4MzFDRSwgMHgzMUQxLCAweDMxRDQsIDB4MjJDRSwgMHgzMUQ3LCAweDIyRDAsIDB4MzFEQSwNCisgICAgMHg4NzQ0LCAweDg3NDUsIDB4ODc0NiwgMHg4NzQ3LCAweDg3NDgsIDB4ODc0OSwgMHg4NzRBLCAweDg3NEIsIDB4ODc0QywgMHg4NzRELCAweDg3NEUsIDB4ODc0RiwgMHg4NzUwLCAweDg3NTEsIDB4ODc1MiwgMHg4NzUzLA0KKyAgICAweDg3NTQsIDB4ODc1NSwgMHg4NzU2LCAweDg3NTcsIDB4ODc1OCwgMHg4NzU5LCAweDg3NUEsIDB4ODc1QiwgMHg4NzVDLCAweDg3NUQsIDB4ODc1RSwgMHg4NzVGLCAweDg3NjAsIDB4ODc2MSwgMHg4NzYyLCAweDg3NjMsDQorICAgIDB4ODc2NCwgMHg4NzY1LCAweDg3NjYsIDB4ODc2NywgMHg4NzY4LCAweDg3NjksIDB4ODc2QSwgMHg4NzZCLCAweDg3NkMsIDB4ODc2RCwgMHg4NzZFLCAweDg3NkYsIDB4ODc3MCwgMHg4NzcxLCAweDg3NzIsIDB4MDAwMCwNCisgICAgMHg0MEI1LCAweDQwQkEsIDB4NDBCRiwgMHgzMURELCAweDQwQzQsIDB4MzFFMCwgMHgzMUUzLCAweDQwQzksIDB4NDBDRiwgMHgzMUU2LCAweDMxRTksIDB4MzFFQywgMHg0MEQ0LCAweDQwRDksIDB4MzFFRiwgMHgzMUYyLA0KKyAgICAweDIyRDIsIDB4MzFGNSwgMHg0MERFLCAweDQwRTMsIDB4MjJENCwgMHg0MEU4LCAweDQwRUUsIDB4NDBGNSwgMHgzMUY4LCAweDQwRkIsIDB4NDEwMSwgMHg0MTA3LCAweDMxRkIsIDB4MzFGRSwgMHgzMjAxLCAweDQxMEMsDQorICAgIDB4NDExMSwgMHg0MTE3LCAweDMyMDQsIDB4MzIwNywgMHgzMjBBLCAweDIyRDYsIDB4MjJEOCwgMHgyMkRBLCAweDIyREMsIDB4MzIwRCwgMHgzMjEwLCAweDQxMUMsIDB4MzIxMywgMHg0MTIyLCAweDQxMjcsIDB4MzIxNiwNCisgICAgMHgyMkRFLCAweDIyRTAsIDB4NDEyRCwgMHg0MTMzLCAweDQxMzgsIDB4MzIxOSwgMHg0MTNFLCAweDIyRTIsIDB4MzIxQywgMHgzMjFGLCAweDMyMjIsIDB4MzIyNSwgMHgzMjI4LCAweDQxNDQsIDB4MzIyQiwgMHgyMkU0LA0KKyAgICAweDMyMkUsIDB4MzIzMSwgMHgzMjM0LCAweDQxNDksIDB4MzIzNywgMHgzMjNBLCAweDMyM0QsIDB4NDE0RSwgMHg0MTU0LCAweDIyRTYsIDB4NDE1OSwgMHgyMkU4LCAweDQxNUYsIDB4NDE2NCwgMHgzMjQwLCAweDMyNDMsDQorICAgIDB4MzI0NiwgMHg0MTY5LCAweDIyRUEsIDB4MzI0OSwgMHg0MTZFLCAweDIyRUMsIDB4NDE3MywgMHgzMjRDLCAweDIyRUUsIDB4MjJGMCwgMHgyMkYyLCAweDIyRjQsIDB4MjJGNiwgMHgyMkY4LCAweDIyRkEsIDB4MjJGQywNCisgICAgMHgyMkZFLCAweDIzMDAsIDB4MzI0RiwgMHgzMjUyLCAweDMyNTUsIDB4MzI1OCwgMHgzMjVCLCAweDMyNUUsIDB4MzI2MSwgMHgzMjY0LCAweDMyNjcsIDB4MzI2QSwgMHgzMjZELCAweDMyNzAsIDB4MzI3MywgMHgzMjc2LA0KKyAgICAweDMyNzksIDB4MzI3QywgMHgyMzAyLCAweDIzMDQsIDB4MzI3RiwgMHgyMzA2LCAweDIzMDgsIDB4MjMwQSwgMHgzMjgyLCAweDMyODUsIDB4MjMwQywgMHgyMzBFLCAweDIzMTAsIDB4MjMxMiwgMHgyMzE0LCAweDQxNzksDQorICAgIDB4MjMxNiwgMHgyMzE4LCAweDIzMUEsIDB4MjMxQywgMHgyMzFFLCAweDIzMjAsIDB4MjMyMiwgMHgyMzI0LCAweDMyODgsIDB4NDE3RSwgMHgyMzI2LCAweDIzMjgsIDB4MjMyQSwgMHgyMzJDLCAweDIzMkUsIDB4MjMzMCwNCisgICAgMHgyMzMyLCAweDMyOEIsIDB4MzI4RSwgMHgzMjkxLCAweDMyOTQsIDB4MjMzNCwgMHgyMzM2LCAweDIzMzgsIDB4MjMzQSwgMHgyMzNDLCAweDIzM0UsIDB4MjM0MCwgMHgyMzQyLCAweDIzNDQsIDB4MjM0NiwgMHgzMjk3LA0KKyAgICAweDMyOUEsIDB4MjM0OCwgMHgzMjlELCAweDMyQTAsIDB4MzJBMywgMHgyMzRBLCAweDMyQTYsIDB4MzJBOSwgMHg0MTgzLCAweDIzNEMsIDB4MzJBQywgMHgzMkFGLCAweDMyQjIsIDB4MzJCNSwgMHg0MTg4LCAweDQxOEUsDQorICAgIDB4MjM0RSwgMHgyMzUwLCAweDIzNTIsIDB4MjM1NCwgMHgyMzU2LCAweDIzNTgsIDB4MjM1QSwgMHgyMzVDLCAweDIzNUUsIDB4MjM2MCwgMHgyMzYyLCAweDIzNjQsIDB4MjM2NiwgMHgyMzY4LCAweDIzNkEsIDB4MjM2QywNCisgICAgMHgyMzZFLCAweDIzNzAsIDB4NDE5NSwgMHgyMzcyLCAweDIzNzQsIDB4MjM3NiwgMHg0MTlBLCAweDMyQjgsIDB4MjM3OCwgMHgyMzdBLCAweDIzN0MsIDB4MjM3RSwgMHgyMzgwLCAweDIzODIsIDB4MjM4NCwgMHgyMzg2LA0KKyAgICAweDIzODgsIDB4MjM4QSwgMHgzMkJCLCAweDIzOEMsIDB4MjM4RSwgMHgzMkJFLCAweDMyQzEsIDB4MjM5MCwgMHg0MTlGLCAweDMyQzQsIDB4MjM5MiwgMHgyMzk0LCAweDIzOTYsIDB4MjM5OCwgMHgzMkM3LCAweDMyQ0EsDQorICAgIDB4MjM5QSwgMHgyMzlDLCAweDIzOUUsIDB4MjNBMCwgMHgyM0EyLCAweDIzQTQsIDB4MjNBNiwgMHgyM0E4LCAweDIzQUEsIDB4MzJDRCwgMHgzMkQwLCAweDMyRDMsIDB4MzJENiwgMHgzMkQ5LCAweDMyREMsIDB4MzJERiwNCisgICAgMHgzMkUyLCAweDMyRTUsIDB4MzJFOCwgMHgzMkVCLCAweDMyRUUsIDB4MzJGMSwgMHgzMkY0LCAweDMyRjcsIDB4MzJGQSwgMHgzMkZELCAweDMzMDAsIDB4MzMwMywgMHgzMzA2LCAweDMzMDksIDB4MzMwQywgMHgzMzBGLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3NzMsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODc3NCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Nzc1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Nzc2LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDg3NzcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Nzc4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODc3OSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NzdBLCAweDg3N0IsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3N0MsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NzdELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NzdFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODc3RiwgMHg4NzgwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4NzgxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODc4MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODc4MywgMHgwMDAwLCAweDAwMDAsIDB4ODc4NCwgMHgwMDAwLCAweDg3ODUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg3ODYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Nzg3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Nzg4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3ODksIDB4ODc4QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3OEIsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4NzhDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODc4RCwgMHgwMDAwLCAweDg3OEUsIDB4ODc4RiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODc5MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3OTEsIDB4MDAwMCwgMHg4NzkyLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3OTMsIDB4ODc5NCwgMHg4Nzk1LCAweDAwMDAsIDB4ODc5NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Nzk3LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDg3OTgsIDB4MDAwMCwgMHgwMDAwLCAweDg3OTksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODc5QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg3OUIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODc5QywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4NzlELCAweDAwMDAsIDB4MDAwMCwgMHg4NzlFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4NzlGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdBMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4N0ExLCAweDAwMDAsIDB4ODdBMiwgMHgwMDAwLCAweDg3QTMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0E0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDg3QTUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdBNiwgMHg4N0E3LCAweDAwMDAsIDB4MDAwMCwgMHg4N0E4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QTksDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0FBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODdBQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QUMsIDB4MDAwMCwgMHgwMDAwLCAweDg3QUQsIDB4ODdBRSwgMHg4N0FGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdCMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDg3QjIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0IzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QjQsIDB4MDAwMCwgMHg4N0I1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0I2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg3QjcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QjgsIDB4ODdCOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QkEsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QkIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg3QkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdCRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QkUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0JGLCAweDAwMDAsIDB4MDAwMCwgMHg4N0MwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QzEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdDMiwgMHgwMDAwLCAweDg3QzMsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0M0LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0M1LCAweDg3QzYsIDB4MDAwMCwgMHg4N0M3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0M4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3QzksIDB4MDAwMCwgMHg4N0NBLCAweDg3Q0IsIDB4MDAwMCwgMHg4N0NDLCAweDg3Q0QsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODdDRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODdDRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3RDAsIDB4MDAwMCwgMHg4N0QxLCAweDAwMDAsIDB4ODdEMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0QzLCAweDg3RDQsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODdENSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODdENiwgMHgwMDAwLCAweDg3RDcsIDB4MDAwMCwgMHg4N0Q4LCAweDAwMDAsIDB4MDAwMCwgMHg4N0Q5LCAweDAwMDAsIDB4MDAwMCwgMHg4N0RBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdEQiwgMHgwMDAwLCAweDg3REMsDQorICAgIDB4MDAwMCwgMHg4N0RELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4N0RFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdERiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0UwLCAweDAwMDAsIDB4ODdFMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdFMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3RTMsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4N0U0LCAweDAwMDAsIDB4ODdFNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdFNiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4N0U3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4N0U4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0U5LCAweDAwMDAsIDB4MDAwMCwgMHg4N0VBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4N0VCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4N0VDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdFRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdFRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0VGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdGMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdGMSwgMHg4N0YyLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdGMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0Y0LCAweDAwMDAsIDB4ODdGNSwgMHgwMDAwLCAweDg3RjYsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODdGNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3RjgsIDB4ODdGOSwgMHgwMDAwLCAweDAwMDAsIDB4ODdGQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0ZCLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0ZDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4N0ZELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg3RkUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODdGRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MDEsIDB4MDAwMCwgMHg4ODAyLCAweDg4MDMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODA0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MDUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODA2LCAweDg4MDcsDQorICAgIDB4ODgwOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MDksIDB4MDAwMCwgMHgwMDAwLCAweDg4MEEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODBCLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg4MEMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MEQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODgwRSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODgwRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MTAsIDB4ODgxMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODgxMiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODgxMywgMHgwMDAwLCAweDg4MTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODgxNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDg4MTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODgxNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODgxOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MUEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODgxQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODFDLCAweDAwMDAsIDB4ODgxRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4ODFFLCAweDg4MUYsIDB4ODgyMCwgMHgwMDAwLCAweDg4MjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODgyMiwgMHg4ODIzLCAweDg4MjQsIDB4MDAwMCwgMHgwMDAwLCAweDg4MjUsIDB4MDAwMCwgMHgwMDAwLCAweDg4MjYsIDB4ODgyNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg4MjgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODgyOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MkEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODgyQiwgMHgwMDAwLCAweDg4MkMsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4ODJELCAweDg4MkUsIDB4MDAwMCwgMHgwMDAwLCAweDg4MkYsIDB4MDAwMCwgMHg4ODMwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4ODMxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4MzIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODMzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODgzNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODM1LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODM2LA0KKyAgICAweDAwMDAsIDB4ODgzNywgMHgwMDAwLCAweDAwMDAsIDB4ODgzOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODM5LCAweDg4M0EsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODgzQiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODgzQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4M0QsIDB4MDAwMCwgMHgwMDAwLCAweDg4M0UsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4ODNGLCAweDAwMDAsIDB4ODg0MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NDEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg0MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NDMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NDQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NDUsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODQ2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg0NywgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg0OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg0OSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NEEsIDB4ODg0QiwgMHg4ODRDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NEQsIDB4ODg0RSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODg0RiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODUwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODUxLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg1MiwgMHgwMDAwLCAweDg4NTMsIDB4ODg1NCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDg4NTUsIDB4MDAwMCwgMHg4ODU2LCAweDAwMDAsIDB4MDAwMCwgMHg4ODU3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NTgsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDg4NTksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODVBLCAweDAwMDAsIDB4ODg1QiwgMHg4ODVDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NUQsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODVFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODVGLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODYwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODYyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODg2MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODY0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NjUsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg2NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NjcsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg2OCwgMHg4ODY5LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg2QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg2QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg2QywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODZELA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODZFLCAweDAwMDAsIDB4MDAwMCwgMHg4ODZGLCAweDg4NzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg3MSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg4NzIsIDB4MDAwMCwgMHgwMDAwLCAweDg4NzMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NzQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDg4NzUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODc2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg3NywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODc4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4NzksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg3QSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4N0IsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODg3QywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODdELCAweDg4N0UsIDB4MDAwMCwgMHg4ODdGLCAweDAwMDAsIDB4ODg4MCwgMHg4ODgxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODgyLCAweDg4ODMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODg0LCAweDg4ODUsIDB4MDAwMCwgMHgwMDAwLCAweDg4ODYsIDB4MDAwMCwgMHg4ODg3LCAweDg4ODgsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODg5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODhBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4OEIsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4OEMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDg4OEQsIDB4MDAwMCwgMHg4ODhFLCAweDAwMDAsIDB4MDAwMCwgMHg4ODhGLCAweDg4OTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg5MSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg4OTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODkzLCAweDAwMDAsIDB4ODg5NCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4ODk1LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4OTYsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODg5NywgMHgwMDAwLCAweDg4OTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDg4OTksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODg5QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4ODlCLCAweDAwMDAsIDB4MDAwMCwgMHg4ODlDLCAweDAwMDAsIDB4MDAwMCwgMHg4ODlELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4OUUsIDB4MDAwMCwgMHgwMDAwLCAweDg4OUYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDg4QTAsIDB4MDAwMCwgMHg4OEExLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhBMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEEzLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEE0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4QTUsIDB4MDAwMCwgMHg4OEE2LCAweDAwMDAsIDB4ODhBNywgMHg4OEE4LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhBOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OEFBLCAweDAwMDAsIDB4ODhBQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4OEFDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhBRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhBRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4QUYsIDB4MDAwMCwgMHgwMDAwLCAweDg4QjAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODhCMSwgMHgwMDAwLCAweDAwMDAsIDB4ODhCMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4QjMsIDB4ODhCNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEI1LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4QjYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEI3LCAweDg4QjgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhCOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4QkEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4QkIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODhCQywgMHg4OEJELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEJFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEJGLCAweDAwMDAsIDB4MDAwMCwgMHg4OEMwLCAweDAwMDAsIDB4ODhDMSwNCisgICAgMHg4OEMyLCAweDg4QzMsIDB4ODhDNCwgMHg4OEM1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEM2LCAweDAwMDAsIDB4MDAwMCwgMHg4OEM3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4QzgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODhDOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhDQSwgMHgwMDAwLCAweDg4Q0IsIDB4MDAwMCwgMHg4OENDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhDRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OENFLCAweDAwMDAsIDB4ODhDRiwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RDEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4OEQyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RDMsIDB4MDAwMCwNCisgICAgMHg4OEQ0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEQ1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEQ2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RDcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RDgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhEOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4REEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4REIsIDB4ODhEQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4OERELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg4REUsIDB4ODhERiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhFMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RTEsIDB4ODhFMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhFMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhFNCwgMHgwMDAwLCAweDAwMDAsIDB4ODhFNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEU2LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RTcsIDB4MDAwMCwgMHg4OEU4LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhFOSwgMHgwMDAwLCAweDg4RUEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEVCLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhFRCwgMHg4OEVFLCAweDAwMDAsIDB4MDAwMCwgMHg4OEVGLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhGMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhGMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODhGMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RjMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDg4RjQsIDB4ODhGNSwgMHg4OEY2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RjcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhGOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEY5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg4RkEsIDB4MDAwMCwgMHgwMDAwLCAweDg4RkIsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODhGQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OEZELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODhGRSwgMHgwMDAwLCAweDg4RkYsIDB4MDAwMCwgMHgwMDAwLCAweDg5MDAsIDB4ODkwMSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkwMiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTAzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkwNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OTA1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5MDYsIDB4ODkwNywgMHg4OTA4LCAweDAwMDAsIDB4ODkwOSwgMHgwMDAwLCAweDg5MEEsIDB4MDAwMCwgMHg4OTBCLCAweDAwMDAsDQorICAgIDB4ODkwQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTBELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5MEUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkwRiwgMHgwMDAwLCAweDg5MTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODkxMSwgMHgwMDAwLCAweDg5MTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkxMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5MTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkxNSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkxNiwgMHgwMDAwLCAweDAwMDAsIDB4ODkxNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OTE4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkxOSwgMHg4OTFBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTFCLCAweDAwMDAsIDB4ODkxQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODkxRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4OTFFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkxRiwgMHg4OTIwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5MjEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkyMiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkyMywgMHg4OTI0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5MjUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg5MjYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTI3LCAweDAwMDAsIDB4MDAwMCwgMHg4OTI4LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5MjksDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkyQSwgMHgwMDAwLCAweDAwMDAsIDB4ODkyQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5MkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkyRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDg5MkUsIDB4MDAwMCwgMHgwMDAwLCAweDg5MkYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5MzAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkzMSwgMHgwMDAwLCAweDg5MzIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5MzMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODkzNCwgMHg4OTM1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODkzNiwgMHgwMDAwLCAweDAwMDAsIDB4ODkzNywgMHg4OTM4LA0KKyAgICAweDAwMDAsIDB4ODkzOSwgMHgwMDAwLCAweDAwMDAsIDB4ODkzQSwgMHgwMDAwLCAweDAwMDAsIDB4ODkzQiwgMHgwMDAwLCAweDAwMDAsIDB4ODkzQywgMHg4OTNELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTNFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTNGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4OTQwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTQxLCAweDAwMDAsIDB4MDAwMCwgMHg4OTQyLA0KKyAgICAweDg5NDMsIDB4ODk0NCwgMHg4OTQ1LCAweDAwMDAsIDB4ODk0NiwgMHgwMDAwLCAweDAwMDAsIDB4ODk0NywgMHgwMDAwLCAweDAwMDAsIDB4ODk0OCwgMHg4OTQ5LCAweDg5NEEsIDB4MDAwMCwgMHg4OTRCLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTRDLCAweDAwMDAsIDB4ODk0RCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk0RSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NEYsIDB4MDAwMCwgMHg4OTUwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTUxLCAweDAwMDAsIDB4ODk1MiwgMHg4OTUzLCAweDg5NTQsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OTU1LCAweDg5NTYsIDB4ODk1NywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk1OCwgMHgwMDAwLCAweDg5NTksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTVBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk1QiwgMHg4OTVDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk1RCwgMHgwMDAwLCAweDAwMDAsIDB4ODk1RSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OTVGLCAweDg5NjAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTYyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk2MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NjQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NjUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OTY2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NjcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTY4LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NjksIDB4ODk2QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk2QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OTZDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTZELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4OTZFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NkYsIDB4MDAwMCwgMHg4OTcwLCAweDg5NzEsIDB4MDAwMCwgMHg4OTcyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NzMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODk3NCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NzUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk3NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk3NywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NzgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5NzksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4OTdBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTdCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTdDLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTdELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5N0UsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTdGLCAweDAwMDAsIDB4ODk4MCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTgxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTgyLCAweDg5ODMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTg0LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk4NSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDg5ODYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTg3LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk4OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk4OSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk4QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5OEIsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OThDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk4RCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OThFLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk4RiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk5MCwgMHgwMDAwLCAweDg5OTEsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5OTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTkzLCAweDAwMDAsIDB4MDAwMCwgMHg4OTk0LCAweDg5OTUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTk2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4ODk5NywgMHg4OTk4LCAweDAwMDAsIDB4MDAwMCwgMHg4OTk5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk5QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODk5QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5OUMsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTlELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OTlFLCAweDg5OUYsIDB4ODlBMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5QTEsIDB4MDAwMCwgMHgwMDAwLCAweDg5QTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUEzLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OUE0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUE1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg5QTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5QTcsIDB4MDAwMCwgMHg4OUE4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlBOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5QUEsIDB4MDAwMCwgMHgwMDAwLCAweDg5QUIsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDg5QUMsIDB4ODlBRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5QUUsIDB4ODlBRiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUIwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlCMSwgMHgwMDAwLCAweDAwMDAsIDB4ODlCMiwgMHgwMDAwLCAweDAwMDAsIDB4ODlCMywgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5QjQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlCNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUI2LCAweDg5QjcsIDB4MDAwMCwgMHg4OUI4LCAweDg5QjksIDB4ODlCQSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlCQiwgMHgwMDAwLCAweDg5QkMsIDB4ODlCRCwgMHgwMDAwLCAweDg5QkUsIDB4ODlCRiwgMHg4OUMwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5QzEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUMyLCAweDAwMDAsIDB4ODlDMywgMHg4OUM0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUM1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUM2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlDNywNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODlDOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUM5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUNBLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDg5Q0IsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5Q0MsDQorICAgIDB4MDAwMCwgMHg4OUNELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODlDRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5Q0YsIDB4ODlEMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUQxLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RDIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RDMsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RDQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlENSwgMHgwMDAwLCAweDAwMDAsIDB4ODlENiwgMHg4OUQ3LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OUQ4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlEOSwgMHgwMDAwLCAweDg5REEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4ODlEQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlEQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlERCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlERSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OURGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlFMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RTEsIDB4ODlFMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUUzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUU0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlFNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUU2LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4ODlFNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDg5RTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUU5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RUEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlFQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUVELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDg5RUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUVGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlGMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlGMSwgMHgwMDAwLCAweDg5RjIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUYzLCAweDg5RjQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4ODlGNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUY2LCAweDAwMDAsIDB4ODlGNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4OUY4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RjksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RkEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RkIsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUZELCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4OUZFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDg5RkYsIDB4OEEwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTAxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEEwMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTAzLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEEwNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMDUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMDYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTA3LCAweDhBMDgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEEwOSwgMHgwMDAwLCAweDhBMEEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMEIsIDB4MDAwMCwgMHgwMDAwLCAweDhBMEMsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhBMEQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMEUsIDB4MDAwMCwgMHgwMDAwLCAweDhBMEYsIDB4MDAwMCwgMHgwMDAwLCAweDhBMTAsIDB4OEExMSwNCisgICAgMHgwMDAwLCAweDhBMTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMTMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEExNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhBMTUsIDB4OEExNiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEExNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEExOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEExOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTFBLA0KKyAgICAweDAwMDAsIDB4OEExQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4QTFDLCAweDAwMDAsIDB4MDAwMCwgMHg4QTFELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMUYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTIwLA0KKyAgICAweDhBMjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMjIsDQorICAgIDB4OEEyMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEEyNCwgMHg4QTI1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QTI2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMjcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhBMjgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEEyOSwgMHgwMDAwLCAweDhBMkEsIDB4MDAwMCwgMHgwMDAwLCAweDhBMkIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTJDLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhBMkQsIDB4MDAwMCwgMHg4QTJFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTJGLCAweDAwMDAsIDB4MDAwMCwgMHg4QTMwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMzEsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTMyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMzMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QTM0LCAweDhBMzUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBMzYsIDB4MDAwMCwgMHg4QTM3LCAweDAwMDAsIDB4OEEzOCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTM5LCAweDhBM0EsIDB4MDAwMCwgMHgwMDAwLCAweDhBM0IsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBM0MsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBM0QsIDB4MDAwMCwgMHgwMDAwLCAweDhBM0UsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTNGLCAweDAwMDAsIDB4OEE0MCwNCisgICAgMHg4QTQxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTQyLCAweDhBNDMsIDB4OEE0NCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QTQ1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTQ2LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE0NywgMHg4QTQ4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhBNDksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE0QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNEIsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNEMsIDB4OEE0RCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNEUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTRGLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNTEsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE1MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEE1MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTU0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QTU1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhBNTcsIDB4MDAwMCwgMHgwMDAwLCAweDhBNTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE1OSwgMHgwMDAwLCAweDAwMDAsIDB4OEE1QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhBNUIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTVDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEE1RCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTVFLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4QTVGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNjAsIDB4OEE2MSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEE2MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTYzLCAweDAwMDAsIDB4MDAwMCwgMHg4QTY0LCAweDAwMDAsIDB4MDAwMCwgMHg4QTY1LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNjYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE2NywgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTY4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE2OSwgMHgwMDAwLCAweDhBNkEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNkIsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhBNkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTZELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTZFLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEE2RiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE3MSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNzIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBNzMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE3NCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTc1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE3NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QTc3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE3OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QTc5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTdBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBN0IsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE3QywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBN0QsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTdFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4QTdGLCAweDAwMDAsIDB4MDAwMCwgMHg4QTgwLCAweDhBODEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBODIsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTgzLCAweDAwMDAsIDB4OEE4NCwgMHg4QTg1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEE4NiwgMHgwMDAwLCAweDhBODcsIDB4MDAwMCwgMHgwMDAwLCAweDhBODgsIDB4MDAwMCwgMHg4QTg5LCAweDhBOEEsIDB4MDAwMCwgMHg4QThCLCAweDhBOEMsIDB4OEE4RCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QThFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QThGLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QTkwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE5MSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE5MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QTkzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE5NCwgMHg4QTk1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE5NiwgMHg4QTk3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE5OCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEE5OSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBOUEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhBOUIsIDB4MDAwMCwgMHg4QTlDLCAweDAwMDAsIDB4MDAwMCwgMHg4QTlELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEE5RSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhBOUYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUEwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFBMSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUEyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFBMywNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBQTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBQTUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUE2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUE3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhBQTgsIDB4OEFBOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUFBLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEFBQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFBQywgMHg4QUFELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhBQUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBQUYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUIwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUIxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBQjIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEFCMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBQjQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QUI1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUI2LCAweDAwMDAsIDB4OEFCNywgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFCOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBQjksIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhBQkEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBQkIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QUJDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFCRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhBQkUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFCRiwgMHg4QUMwLCAweDAwMDAsIDB4OEFDMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFDMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUMzLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QUM0LCAweDAwMDAsIDB4OEFDNSwgMHgwMDAwLCAweDAwMDAsIDB4OEFDNiwgMHgwMDAwLCAweDhBQzcsIDB4MDAwMCwgMHgwMDAwLCAweDhBQzgsIDB4OEFDOSwgMHg4QUNBLCAweDAwMDAsDQorICAgIDB4OEFDQiwgMHg4QUNDLCAweDhBQ0QsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFDRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFDRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QUQwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFEMSwgMHgwMDAwLCAweDhBRDIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRDMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFENCwgMHgwMDAwLCAweDhBRDUsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhBRDYsIDB4MDAwMCwgMHg4QUQ3LCAweDhBRDgsIDB4MDAwMCwgMHgwMDAwLCAweDhBRDksIDB4MDAwMCwgMHgwMDAwLCAweDhBREEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QURCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBREMsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QURELA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBREUsIDB4MDAwMCwgMHg4QURGLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFFMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRTEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRTIsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRTMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUU1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRTcsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUU4LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEFFOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFFQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRUIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFFQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUVELA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFFRiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUYwLCAweDAwMDAsIDB4OEFGMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEFGMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFGMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFGNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUY1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFGNiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRjcsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFGOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUY5LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEFGQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QUZCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhBRkMsIDB4OEFGRCwgMHg4QUZFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEFGRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCMDEsIDB4OEIwMiwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjAzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIwNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjA1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCMDYsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhCMDcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjA4LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjA5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCMEEsIDB4MDAwMCwgMHgwMDAwLCAweDhCMEIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjBDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjBELCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4QjBFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjBGLCAweDhCMTAsIDB4OEIxMSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEIxMiwgMHg4QjEzLCAweDhCMTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIxNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjE2LCAweDhCMTcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIxOCwgMHg4QjE5LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjFBLCAweDhCMUIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIxQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjFELCAweDhCMUUsIDB4MDAwMCwgMHg4QjFGLCAweDAwMDAsIDB4MDAwMCwgMHg4QjIwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIyMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCMjIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIyMywgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCMjQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCMjUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIyNiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QjI3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCMjgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjI5LCAweDAwMDAsIDB4OEIyQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIyQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjJDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIyRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjJFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhCMkYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIzMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCMzEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhCMzIsIDB4MDAwMCwgMHg4QjMzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIzNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIzNSwgMHgwMDAwLCAweDhCMzYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIzNywgMHg4QjM4LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIzOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEIzQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjNCLCAweDAwMDAsIDB4OEIzQywgMHg4QjNELCAweDAwMDAsIDB4MDAwMCwgMHg4QjNFLA0KKyAgICAweDhCM0YsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEI0MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCNDEsIDB4MDAwMCwgMHgwMDAwLCAweDhCNDIsIDB4MDAwMCwgMHg4QjQzLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhCNDQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjQ1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEI0NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjQ3LCAweDhCNDgsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCNDksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEI0QSwgMHg4QjRCLCAweDAwMDAsIDB4OEI0QywgMHgwMDAwLCAweDhCNEQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjRFLCAweDAwMDAsDQorICAgIDB4OEI0RiwgMHgwMDAwLCAweDhCNTAsIDB4MDAwMCwgMHg4QjUxLCAweDhCNTIsIDB4OEI1MywgMHg4QjU0LCAweDhCNTUsIDB4OEI1NiwgMHgwMDAwLCAweDhCNTcsIDB4MDAwMCwgMHg4QjU4LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QjU5LCAweDAwMDAsIDB4MDAwMCwgMHg4QjVBLCAweDhCNUIsIDB4OEI1QywgMHgwMDAwLCAweDhCNUQsIDB4MDAwMCwgMHg4QjVFLCAweDhCNUYsIDB4OEI2MCwgMHg4QjYxLCAweDhCNjIsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEI2MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjY0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjY1LCAweDAwMDAsDQorICAgIDB4OEI2NiwgMHg4QjY3LCAweDhCNjgsIDB4OEI2OSwgMHgwMDAwLCAweDhCNkEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEI2QiwgMHg4QjZDLCAweDAwMDAsIDB4OEI2RCwgMHgwMDAwLCAweDAwMDAsIDB4OEI2RSwNCisgICAgMHg4QjZGLCAweDAwMDAsIDB4OEI3MCwgMHg4QjcxLCAweDhCNzIsIDB4MDAwMCwgMHg4QjczLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEI3NCwgMHgwMDAwLA0KKyAgICAweDhCNzUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Qjc2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Qjc3LCAweDAwMDAsIDB4OEI3OCwgMHg4Qjc5LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4QjdBLCAweDhCN0IsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEI3QywgMHgwMDAwLCAweDhCN0QsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QjdFLCAweDhCN0YsIDB4OEI4MCwgMHg4QjgxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjgyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEI4MywgMHgwMDAwLCAweDhCODQsIDB4MDAwMCwgMHgwMDAwLCAweDhCODUsIDB4MDAwMCwgMHg4Qjg2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCODcsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEI4OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEI4OSwgMHgwMDAwLCAweDhCOEEsIDB4MDAwMCwNCisgICAgMHg4QjhCLCAweDAwMDAsIDB4OEI4QywgMHg4QjhELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjhFLCAweDhCOEYsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhCOTAsIDB4OEI5MSwgMHg4QjkyLCAweDAwMDAsIDB4OEI5MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Qjk0LCAweDhCOTUsIDB4OEI5NiwgMHg4Qjk3LCAweDAwMDAsIDB4OEI5OCwgMHg4Qjk5LCAweDhCOUEsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QjlCLCAweDAwMDAsIDB4MDAwMCwgMHg4QjlDLCAweDAwMDAsIDB4MDAwMCwgMHg4QjlELCAweDhCOUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEI5RiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCQTAsIDB4OEJBMSwgMHg4QkEyLCAweDhCQTMsIDB4MDAwMCwgMHgwMDAwLCAweDhCQTQsIDB4OEJBNSwgMHgwMDAwLA0KKyAgICAweDhCQTYsIDB4OEJBNywgMHgwMDAwLCAweDhCQTgsIDB4MDAwMCwgMHgwMDAwLCAweDhCQTksIDB4MDAwMCwgMHg4QkFBLCAweDhCQUIsIDB4MDAwMCwgMHgwMDAwLCAweDhCQUMsIDB4MDAwMCwgMHgwMDAwLCAweDhCQUQsDQorICAgIDB4MDAwMCwgMHg4QkFFLCAweDhCQUYsIDB4MDAwMCwgMHg4QkIwLCAweDAwMDAsIDB4OEJCMSwgMHgwMDAwLCAweDAwMDAsIDB4OEJCMiwgMHgwMDAwLCAweDhCQjMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEJCNCwgMHg4QkI1LCAweDhCQjYsIDB4OEJCNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhCQjgsIDB4OEJCOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEJCQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QkJCLCAweDAwMDAsIDB4OEJCQywgMHg4QkJELCAweDhCQkUsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEJCRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCQzAsIDB4MDAwMCwgMHgwMDAwLCAweDhCQzEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhCQzIsIDB4OEJDMywgMHgwMDAwLCAweDAwMDAsIDB4OEJDNCwgMHg4QkM1LCAweDhCQzYsIDB4MDAwMCwgMHg4QkM3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCQzgsIDB4OEJDOSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCQ0EsIDB4MDAwMCwgMHg4QkNCLCAweDhCQ0MsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhCQ0QsIDB4MDAwMCwgMHg4QkNFLCAweDhCQ0YsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QkQwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCRDEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhCRDIsIDB4OEJEMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QkQ0LCAweDhCRDUsIDB4OEJENiwgMHgwMDAwLCAweDhCRDcsIDB4MDAwMCwgMHg4QkQ4LA0KKyAgICAweDhCRDksIDB4MDAwMCwgMHgwMDAwLCAweDhCREEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCREIsIDB4MDAwMCwgMHgwMDAwLCAweDhCREMsIDB4OEJERCwgMHg4QkRFLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCREYsIDB4MDAwMCwgMHg4QkUwLCAweDAwMDAsIDB4OEJFMSwgMHgwMDAwLCAweDAwMDAsIDB4OEJFMiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QkUzLCAweDAwMDAsIDB4MDAwMCwgMHg4QkU0LCAweDAwMDAsIDB4OEJFNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QkU2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEJFNywgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEJFOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEJFOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCRUEsIDB4MDAwMCwgMHg4QkVCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEJFQywgMHg4QkVELCAweDAwMDAsIDB4OEJFRSwgMHgwMDAwLCAweDAwMDAsIDB4OEJFRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCRjAsIDB4MDAwMCwgMHgwMDAwLCAweDhCRjEsIDB4OEJGMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QkYzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhCRjQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QkY1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QkY2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCRjcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEJGOCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCRjksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhCRkEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QkZCLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEJGQywNCisgICAgMHg4QkZELCAweDAwMDAsIDB4OEJGRSwgMHg4QkZGLCAweDAwMDAsIDB4OEMwMCwgMHg4QzAxLCAweDhDMDIsIDB4MDAwMCwgMHg4QzAzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMDQsIDB4OEMwNSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzA2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMwNywgMHgwMDAwLCAweDAwMDAsIDB4OEMwOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzA5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMEEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzBCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzBDLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMwRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhDMEUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzBGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMxMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMTEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzEyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMxMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMxNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMTUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhDMTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMTcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzE4LCAweDhDMTksIDB4OEMxQSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzFCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMUMsIDB4MDAwMCwgMHg4QzFELA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzFFLCAweDAwMDAsIDB4OEMxRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMjAsDQorICAgIDB4OEMyMSwgMHgwMDAwLCAweDhDMjIsIDB4MDAwMCwgMHgwMDAwLCAweDhDMjMsIDB4MDAwMCwgMHgwMDAwLCAweDhDMjQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMjUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMyNiwgMHg4QzI3LCAweDhDMjgsIDB4OEMyOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzJBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMyQiwgMHgwMDAwLCAweDhDMkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzJELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4QzJFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzJGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhDMzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMzMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMzIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhDMzMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMzQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzM1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMzNiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMzNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEMzOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDMzksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDM0EsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDM0IsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDM0MsIDB4MDAwMCwgMHgwMDAwLCAweDhDM0QsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMzRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEMzRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhDNDEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzQyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzQzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM0NCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QzQ1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNDYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM0NywgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM0OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4QzQ5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM0QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNEIsIDB4OEM0QywNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNEQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNEUsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNEYsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzUwLCAweDAwMDAsIDB4OEM1MSwgMHg4QzUyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNTMsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4QzU0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM1NSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNTYsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEM1NywgMHgwMDAwLCAweDAwMDAsIDB4OEM1OCwgMHgwMDAwLCAweDAwMDAsIDB4OEM1OSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QzVBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM1QiwgMHgwMDAwLCAweDAwMDAsIDB4OEM1QywgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzVELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM1RSwgMHgwMDAwLCAweDhDNUYsIDB4MDAwMCwgMHg4QzYwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEM2MSwgMHgwMDAwLCAweDAwMDAsIDB4OEM2MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNjMsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM2NCwgMHgwMDAwLCAweDAwMDAsIDB4OEM2NSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNjYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNjcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM2OCwgMHg4QzY5LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzZBLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM2QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNkQsIDB4MDAwMCwgMHgwMDAwLCAweDhDNkUsIDB4OEM2RiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEM3MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzcxLCAweDAwMDAsIDB4OEM3MiwgMHg4QzczLCAweDAwMDAsIDB4MDAwMCwgMHg4Qzc0LCAweDhDNzUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDNzYsIDB4MDAwMCwgMHgwMDAwLCAweDhDNzcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM3OCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4Qzc5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM3QSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzdCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM3QywNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzdELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzdFLCAweDhDN0YsIDB4MDAwMCwgMHgwMDAwLCAweDhDODAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzgxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM4MiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzgzLCAweDhDODQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Qzg1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDODYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM4NywNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Qzg4LCAweDAwMDAsIDB4OEM4OSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzhBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzhCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM4QywgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4QzhELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDOEUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM4RiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDOTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM5MSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM5MiwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM5MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM5NCwgMHgwMDAwLCAweDAwMDAsIDB4OEM5NSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEM5NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Qzk3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM5OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEM5OSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4QzlBLCAweDhDOUIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEM5QywgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEM5RCwgMHg4QzlFLCAweDAwMDAsIDB4MDAwMCwgMHg4QzlGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENBMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0ExLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENBMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OENBMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDQTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0E1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENBNiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0E3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENBOCwgMHgwMDAwLCAweDhDQTksIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0FBLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENBQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENBQywgMHg4Q0FELCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhDQUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENBRiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0IwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENCMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENCMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhDQjMsIDB4OENCNCwgMHgwMDAwLCAweDhDQjUsIDB4MDAwMCwgMHgwMDAwLCAweDhDQjYsIDB4MDAwMCwgMHgwMDAwLCAweDhDQjcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0I4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDQjksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENCQSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OENCQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0JDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0JELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENCRSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OENCRiwgMHgwMDAwLCAweDhDQzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0MxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDQzIsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENDMywgMHgwMDAwLCAweDAwMDAsIDB4OENDNCwgMHgwMDAwLCAweDhDQzUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhDQzYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENDNywgMHg4Q0M4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDQzksIDB4MDAwMCwgMHg4Q0NBLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0NCLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4Q0NDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENDRCwgMHgwMDAwLCAweDAwMDAsIDB4OENDRSwgMHgwMDAwLCAweDAwMDAsIDB4OENDRiwgMHgwMDAwLCAweDhDRDAsDQorICAgIDB4OENEMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0QyLCAweDAwMDAsIDB4OENEMywgMHgwMDAwLCAweDhDRDQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OENENSwgMHg4Q0Q2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENENywgMHgwMDAwLCAweDhDRDgsIDB4MDAwMCwgMHg4Q0Q5LCAweDAwMDAsIDB4OENEQSwgMHgwMDAwLA0KKyAgICAweDhDREIsIDB4MDAwMCwgMHgwMDAwLCAweDhDREMsIDB4MDAwMCwgMHg4Q0RELCAweDhDREUsIDB4OENERiwgMHg4Q0UwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0UxLCAweDAwMDAsIDB4OENFMiwgMHgwMDAwLCAweDhDRTMsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OENFNCwgMHgwMDAwLCAweDhDRTUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0U2LCAweDAwMDAsIDB4MDAwMCwgMHg4Q0U3LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhDRTgsIDB4MDAwMCwgMHgwMDAwLCAweDhDRTksIDB4MDAwMCwgMHg4Q0VBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDRUIsIDB4MDAwMCwgMHg4Q0VDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OENFRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhDRUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0VGLCAweDAwMDAsDQorICAgIDB4OENGMCwgMHgwMDAwLCAweDhDRjEsIDB4MDAwMCwgMHg4Q0YyLCAweDhDRjMsIDB4MDAwMCwgMHgwMDAwLCAweDhDRjQsIDB4MDAwMCwgMHgwMDAwLCAweDhDRjUsIDB4MDAwMCwgMHgwMDAwLCAweDhDRjYsIDB4MDAwMCwNCisgICAgMHg4Q0Y3LCAweDhDRjgsIDB4OENGOSwgMHg4Q0ZBLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0ZCLCAweDAwMDAsIDB4MDAwMCwgMHg4Q0ZDLCAweDAwMDAsIDB4OENGRCwgMHg4Q0ZFLCAweDhDRkYsIDB4OEQwMCwgMHgwMDAwLA0KKyAgICAweDhEMDEsIDB4OEQwMiwgMHg4RDAzLCAweDhEMDQsIDB4MDAwMCwgMHg4RDA1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhEMDYsIDB4MDAwMCwgMHgwMDAwLCAweDhEMDcsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDA4LCAweDhEMDksIDB4OEQwQSwgMHg4RDBCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQwQywgMHg4RDBELCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhEMEUsIDB4OEQwRiwgMHgwMDAwLCAweDAwMDAsIDB4OEQxMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQxMSwgMHgwMDAwLCAweDhEMTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQxMywgMHgwMDAwLA0KKyAgICAweDhEMTQsIDB4OEQxNSwgMHgwMDAwLCAweDhEMTYsIDB4OEQxNywgMHg4RDE4LCAweDhEMTksIDB4MDAwMCwgMHg4RDFBLCAweDAwMDAsIDB4OEQxQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEQxQywgMHgwMDAwLCAweDhEMUQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQxRSwgMHgwMDAwLCAweDAwMDAsIDB4OEQxRiwgMHgwMDAwLCAweDAwMDAsIDB4OEQyMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQyMSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEQyMiwgMHgwMDAwLCAweDhEMjMsIDB4MDAwMCwgMHgwMDAwLCAweDhEMjQsIDB4MDAwMCwgMHg4RDI1LCAweDAwMDAsIDB4OEQyNiwgMHgwMDAwLCAweDhEMjcsIDB4MDAwMCwgMHg4RDI4LA0KKyAgICAweDAwMDAsIDB4OEQyOSwgMHg4RDJBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhEMkIsIDB4OEQyQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDJELCAweDhEMkUsIDB4OEQyRiwgMHg4RDMwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4RDMxLCAweDhEMzIsIDB4MDAwMCwgMHg4RDMzLCAweDAwMDAsIDB4OEQzNCwgMHg4RDM1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhEMzYsIDB4MDAwMCwgMHg4RDM3LCAweDhEMzgsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhEMzksIDB4MDAwMCwgMHg4RDNBLCAweDAwMDAsIDB4MDAwMCwgMHg4RDNCLCAweDhEM0MsIDB4OEQzRCwgMHgwMDAwLCAweDhEM0UsIDB4MDAwMCwgMHg4RDNGLCAweDAwMDAsIDB4OEQ0MCwgMHgwMDAwLA0KKyAgICAweDhENDEsIDB4OEQ0MiwgMHg4RDQzLCAweDAwMDAsIDB4OEQ0NCwgMHg4RDQ1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ0NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDQ3LCAweDAwMDAsDQorICAgIDB4OEQ0OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDQ5LCAweDAwMDAsIDB4OEQ0QSwgMHg4RDRCLCAweDAwMDAsIDB4OEQ0QywgMHgwMDAwLCAweDhENEQsIDB4MDAwMCwgMHg4RDRFLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4RDRGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ1MCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ1MSwgMHg4RDUyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhENTMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhENTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDU1LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ1NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhENTcsIDB4OEQ1OCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDU5LCAweDAwMDAsIDB4OEQ1QSwgMHg4RDVCLCAweDhENUMsIDB4MDAwMCwgMHg4RDVELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDVFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhENUYsDQorICAgIDB4OEQ2MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDYxLCAweDAwMDAsIDB4MDAwMCwgMHg4RDYyLCAweDhENjMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDY0LCAweDhENjUsIDB4MDAwMCwNCisgICAgMHg4RDY2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhENjcsIDB4OEQ2OCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ2OSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4RDZBLCAweDhENkIsIDB4MDAwMCwgMHg4RDZDLCAweDhENkQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ2RSwgMHgwMDAwLCAweDhENkYsIDB4MDAwMCwgMHg4RDcwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ3MSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ3MiwgMHgwMDAwLA0KKyAgICAweDhENzMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ3NCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDc1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEQ3NiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDc3LCAweDhENzgsIDB4MDAwMCwNCisgICAgMHg4RDc5LCAweDhEN0EsIDB4OEQ3QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhEN0MsIDB4OEQ3RCwgMHg4RDdFLCAweDhEN0YsIDB4OEQ4MCwgMHg4RDgxLCAweDAwMDAsIDB4MDAwMCwgMHg4RDgyLA0KKyAgICAweDhEODMsIDB4MDAwMCwgMHg4RDg0LCAweDhEODUsIDB4OEQ4NiwgMHgwMDAwLCAweDhEODcsIDB4OEQ4OCwgMHg4RDg5LCAweDAwMDAsIDB4OEQ4QSwgMHg4RDhCLCAweDhEOEMsIDB4OEQ4RCwgMHgwMDAwLCAweDhEOEUsDQorICAgIDB4OEQ4RiwgMHg4RDkwLCAweDhEOTEsIDB4OEQ5MiwgMHg4RDkzLCAweDhEOTQsIDB4MDAwMCwgMHg4RDk1LCAweDhEOTYsIDB4MDAwMCwgMHg4RDk3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhEOTgsIDB4OEQ5OSwgMHg4RDlBLCAweDAwMDAsIDB4OEQ5QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RDlDLCAweDhEOUQsIDB4MDAwMCwgMHg4RDlFLCAweDAwMDAsIDB4OEQ5RiwgMHgwMDAwLA0KKyAgICAweDhEQTAsIDB4OERBMSwgMHg4REEyLCAweDhEQTMsIDB4OERBNCwgMHgwMDAwLCAweDhEQTUsIDB4OERBNiwgMHgwMDAwLCAweDAwMDAsIDB4OERBNywgMHgwMDAwLCAweDhEQTgsIDB4OERBOSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4REFBLCAweDhEQUIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4REFDLCAweDhEQUQsIDB4OERBRSwgMHg4REFGLCAweDhEQjAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhEQjEsIDB4OERCMiwgMHgwMDAwLCAweDhEQjMsIDB4OERCNCwgMHgwMDAwLCAweDhEQjUsIDB4MDAwMCwgMHgwMDAwLCAweDhEQjYsIDB4MDAwMCwgMHg4REI3LA0KKyAgICAweDhEQjgsIDB4MDAwMCwgMHgwMDAwLCAweDhEQjksIDB4OERCQSwgMHgwMDAwLCAweDhEQkIsIDB4OERCQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4REJELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4REJFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERCRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4REMwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4REMxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhEQzIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4REMzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OERDNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERDNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERDNiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERDNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhEQzgsIDB4MDAwMCwgMHgwMDAwLCAweDhEQzksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RENBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OERDQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RENDLCAweDhEQ0QsIDB4OERDRSwgMHgwMDAwLCAweDhEQ0YsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEREMCwgMHg4REQxLCAweDhERDIsIDB4MDAwMCwgMHg4REQzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERENCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4REQ1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhERDYsIDB4OERENywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4REQ4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhERDksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEREQSwgMHg4RERCLCAweDhEREMsIDB4OERERCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhEREUsIDB4MDAwMCwgMHg4RERGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhERTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERFMSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERFMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4REUzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4REU0LCAweDhERTUsIDB4OERFNiwgMHg4REU3LCAweDhERTgsIDB4MDAwMCwgMHg4REU5LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERFQSwgMHgwMDAwLCAweDhERUIsIDB4MDAwMCwgMHg4REVDLCAweDhERUQsIDB4OERFRSwgMHg4REVGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OERGMCwgMHgwMDAwLCAweDhERjEsIDB4OERGMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERGMywgMHg4REY0LCAweDhERjUsIDB4OERGNiwgMHg4REY3LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4REY4LCAweDhERjksIDB4MDAwMCwgMHgwMDAwLCAweDhERkEsIDB4OERGQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhERkMsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OERGRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhERkUsIDB4MDAwMCwgMHgwMDAwLCAweDhERkYsIDB4MDAwMCwgMHgwMDAwLCAweDhFMDAsIDB4OEUwMSwNCisgICAgMHg4RTAyLCAweDAwMDAsIDB4OEUwMywgMHgwMDAwLCAweDhFMDQsIDB4OEUwNSwgMHg4RTA2LCAweDAwMDAsIDB4MDAwMCwgMHg4RTA3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFMDgsIDB4OEUwOSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEUwQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFMEIsDQorICAgIDB4MDAwMCwgMHg4RTBDLCAweDhFMEQsIDB4MDAwMCwgMHg4RTBFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTBGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFMTAsIDB4OEUxMSwgMHg4RTEyLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4RTEzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFMTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEUxNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhFMTYsIDB4OEUxNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEUxOCwgMHg4RTE5LCAweDAwMDAsIDB4MDAwMCwgMHg4RTFBLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTFCLCAweDhFMUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEUxRCwgMHgwMDAwLCAweDAwMDAsIDB4OEUxRSwgMHgwMDAwLCAweDhFMUYsIDB4MDAwMCwNCisgICAgMHg4RTIwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTIxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4RTIyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEUyMywgMHg4RTI0LCAweDAwMDAsIDB4OEUyNSwgMHgwMDAwLCAweDhFMjYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4RTI3LCAweDAwMDAsIDB4MDAwMCwgMHg4RTI4LCAweDAwMDAsIDB4MDAwMCwgMHg4RTI5LCAweDAwMDAsIDB4MDAwMCwgMHg4RTJBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEUyQiwNCisgICAgMHg4RTJDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFMkQsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEUyRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFMkYsIDB4MDAwMCwgMHgwMDAwLCAweDhFMzAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhFMzEsIDB4MDAwMCwgMHg4RTMyLCAweDAwMDAsIDB4OEUzMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFMzQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFMzUsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhFMzYsIDB4MDAwMCwgMHg4RTM3LCAweDAwMDAsIDB4OEUzOCwgMHgwMDAwLCAweDhFMzksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEUzQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTNCLCAweDhFM0MsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTNELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFM0UsIDB4MDAwMCwgMHg4RTNGLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFNDAsIDB4OEU0MSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhFNDIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhFNDMsIDB4OEU0NCwgMHgwMDAwLCAweDhFNDUsIDB4MDAwMCwgMHg4RTQ2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTQ3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTQ4LCAweDhFNDksIDB4MDAwMCwgMHg4RTRBLCAweDhFNEIsIDB4OEU0QywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTRELCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTRFLCAweDhFNEYsIDB4MDAwMCwgMHgwMDAwLCAweDhFNTAsIDB4MDAwMCwgMHg4RTUxLCAweDAwMDAsIDB4MDAwMCwgMHg4RTUyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTUzLCAweDAwMDAsIDB4OEU1NCwgMHgwMDAwLCAweDhFNTUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEU1NiwgMHg4RTU3LCAweDAwMDAsIDB4OEU1OCwgMHg4RTU5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEU1QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTVCLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4RTVDLCAweDhFNUQsIDB4MDAwMCwgMHgwMDAwLCAweDhFNUUsIDB4OEU1RiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEU2MCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFNjEsIDB4MDAwMCwgMHgwMDAwLCAweDhFNjIsIDB4OEU2MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTY0LCAweDAwMDAsDQorICAgIDB4OEU2NSwgMHgwMDAwLCAweDAwMDAsIDB4OEU2NiwgMHg4RTY3LCAweDAwMDAsIDB4MDAwMCwgMHg4RTY4LCAweDhFNjksIDB4OEU2QSwgMHg4RTZCLCAweDAwMDAsIDB4MDAwMCwgMHg4RTZDLCAweDhFNkQsIDB4OEU2RSwNCisgICAgMHg4RTZGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEU3MCwgMHgwMDAwLCAweDAwMDAsIDB4OEU3MSwgMHg4RTcyLCAweDAwMDAsIDB4OEU3MywgMHgwMDAwLCAweDhFNzQsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEU3NSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEU3NiwgMHgwMDAwLCAweDAwMDAsIDB4OEU3NywgMHg4RTc4LCAweDAwMDAsIDB4MDAwMCwgMHg4RTc5LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTdBLCAweDAwMDAsIDB4OEU3QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEU3QywgMHg4RTdELCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTdFLCAweDAwMDAsIDB4OEU3RiwgMHgwMDAwLCAweDhFODAsIDB4OEU4MSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RTgyLA0KKyAgICAweDhFODMsIDB4MDAwMCwgMHgwMDAwLCAweDhFODQsIDB4MDAwMCwgMHg4RTg1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEU4NiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4RTg3LCAweDAwMDAsIDB4OEU4OCwgMHgwMDAwLCAweDAwMDAsIDB4OEU4OSwgMHgwMDAwLCAweDhFOEEsIDB4MDAwMCwgMHg4RThCLCAweDhFOEMsIDB4OEU4RCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4RThFLCAweDAwMDAsIDB4MDAwMCwgMHg4RThGLCAweDAwMDAsIDB4OEU5MCwgMHg4RTkxLCAweDAwMDAsIDB4OEU5MiwgMHgwMDAwLCAweDhFOTMsIDB4OEU5NCwgMHg4RTk1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFOTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEU5NywgMHgwMDAwLCAweDhFOTgsIDB4MDAwMCwgMHg4RTk5LCAweDhFOUEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4RTlCLCAweDAwMDAsIDB4OEU5QywgMHgwMDAwLCAweDhFOUQsIDB4MDAwMCwgMHg4RTlFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEU5RiwgMHgwMDAwLCAweDAwMDAsIDB4OEVBMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEVBMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFQTIsIDB4MDAwMCwgMHg4RUEzLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEVBNCwgMHg4RUE1LCAweDhFQTYsIDB4MDAwMCwgMHg4RUE3LCAweDhFQTgsIDB4OEVBOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RUFBLCAweDhFQUIsDQorICAgIDB4OEVBQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFQUQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEVBRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhFQUYsIDB4MDAwMCwgMHgwMDAwLCAweDhFQjAsIDB4MDAwMCwgMHg4RUIxLCAweDAwMDAsIDB4OEVCMiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RUIzLA0KKyAgICAweDhFQjQsIDB4MDAwMCwgMHg4RUI1LCAweDAwMDAsIDB4MDAwMCwgMHg4RUI2LCAweDAwMDAsIDB4MDAwMCwgMHg4RUI3LCAweDhFQjgsIDB4OEVCOSwgMHg4RUJBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFQkIsDQorICAgIDB4OEVCQywgMHg4RUJELCAweDhFQkUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEVCRiwgMHgwMDAwLCAweDhFQzAsIDB4OEVDMSwgMHgwMDAwLCAweDhFQzIsIDB4MDAwMCwgMHgwMDAwLCAweDhFQzMsIDB4OEVDNCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RUM1LCAweDAwMDAsIDB4MDAwMCwgMHg4RUM2LCAweDAwMDAsIDB4OEVDNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEVDOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFQzksIDB4OEVDQSwgMHgwMDAwLCAweDAwMDAsIDB4OEVDQiwgMHg4RUNDLCAweDAwMDAsIDB4OEVDRCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RUNFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFQ0YsIDB4MDAwMCwgMHg4RUQwLCAweDhFRDEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4RUQyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFRDMsIDB4OEVENCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RUQ1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhFRDYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RUQ3LCAweDhFRDgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEVEOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RURBLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhFREIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RURDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFREQsIDB4MDAwMCwgMHg4RURFLCAweDAwMDAsIDB4OEVERiwgMHgwMDAwLCAweDAwMDAsIDB4OEVFMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEVFMSwgMHg4RUUyLCAweDhFRTMsIDB4MDAwMCwgMHgwMDAwLCAweDhFRTQsIDB4OEVFNSwgMHgwMDAwLCAweDhFRTYsIDB4OEVFNywgMHgwMDAwLCAweDhFRTgsIDB4MDAwMCwgMHg4RUU5LCAweDAwMDAsDQorICAgIDB4OEVFQSwgMHgwMDAwLCAweDAwMDAsIDB4OEVFQiwgMHgwMDAwLCAweDhFRUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RUVELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFRUUsIDB4OEVFRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RUYwLCAweDhFRjEsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhFRjIsIDB4OEVGMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEVGNCwgMHg4RUY1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFRjYsIDB4OEVGNywgMHg4RUY4LCAweDhFRjksDQorICAgIDB4MDAwMCwgMHg4RUZBLCAweDhFRkIsIDB4MDAwMCwgMHg4RUZDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhFRkQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4RUZFLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEVGRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGMDEsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGMDIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEYwMywgMHgwMDAwLCAweDAwMDAsIDB4OEYwNCwgMHg4RjA1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGMDYsIDB4OEYwNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGMDgsIDB4OEYwOSwgMHgwMDAwLCAweDAwMDAsIDB4OEYwQSwgMHgwMDAwLCAweDAwMDAsIDB4OEYwQiwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4RjBDLCAweDhGMEQsIDB4MDAwMCwgMHg4RjBFLCAweDhGMEYsIDB4MDAwMCwgMHg4RjEwLCAweDAwMDAsIDB4OEYxMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGMTIsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjEzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjE0LCAweDAwMDAsIDB4OEYxNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhGMTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEYxNywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEYxOCwgMHgwMDAwLA0KKyAgICAweDhGMTksIDB4MDAwMCwgMHgwMDAwLCAweDhGMUEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEYxQiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEYxQywgMHg4RjFELCAweDhGMUUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjFGLCAweDAwMDAsIDB4OEYyMCwgMHgwMDAwLCAweDAwMDAsIDB4OEYyMSwgMHg4RjIyLCAweDhGMjMsIDB4OEYyNCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGMjUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhGMjYsIDB4MDAwMCwgMHg4RjI3LCAweDhGMjgsIDB4MDAwMCwgMHgwMDAwLCAweDhGMjksIDB4MDAwMCwgMHg4RjJBLCAweDhGMkIsIDB4MDAwMCwgMHg4RjJDLCAweDhGMkQsIDB4MDAwMCwgMHg4RjJFLCAweDhGMkYsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhGMzAsIDB4OEYzMSwgMHg4RjMyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGMzMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhGMzQsIDB4MDAwMCwgMHg4RjM1LCAweDAwMDAsIDB4OEYzNiwgMHgwMDAwLCAweDAwMDAsIDB4OEYzNywgMHg4RjM4LCAweDAwMDAsIDB4OEYzOSwgMHg4RjNBLCAweDhGM0IsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEYzQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGM0QsIDB4MDAwMCwgMHgwMDAwLCAweDhGM0UsIDB4MDAwMCwgMHg4RjNGLCAweDhGNDAsIDB4OEY0MSwgMHg4RjQyLCAweDhGNDMsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY0NCwgMHgwMDAwLCAweDAwMDAsIDB4OEY0NSwgMHg4RjQ2LCAweDhGNDcsIDB4MDAwMCwgMHg4RjQ4LCAweDhGNDksIDB4OEY0QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4RjRCLCAweDAwMDAsIDB4OEY0QywgMHg4RjRELCAweDhGNEUsIDB4OEY0RiwgMHg4RjUwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjUxLCAweDAwMDAsIDB4OEY1MiwgMHgwMDAwLA0KKyAgICAweDhGNTMsIDB4OEY1NCwgMHg4RjU1LCAweDAwMDAsIDB4OEY1NiwgMHg4RjU3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGNTgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjU5LCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjVBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDhGNUIsIDB4MDAwMCwgMHgwMDAwLCAweDhGNUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjVELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY1RSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY1RiwgMHg4RjYwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGNjEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY2MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY2MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjY0LCAweDAwMDAsIDB4OEY2NSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4RjY2LCAweDAwMDAsIDB4MDAwMCwgMHg4RjY3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGNjgsIDB4MDAwMCwgMHgwMDAwLCAweDhGNjksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY2QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGNkIsIDB4MDAwMCwgMHgwMDAwLCAweDhGNkMsIDB4MDAwMCwgMHg4RjZELCAweDhGNkUsIDB4MDAwMCwgMHg4RjZGLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhGNzAsIDB4OEY3MSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEY3MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY3MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OEY3NCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGNzUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY3NiwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhGNzcsIDB4MDAwMCwgMHg4Rjc4LCAweDAwMDAsIDB4OEY3OSwgMHgwMDAwLCAweDhGN0EsIDB4OEY3QiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGN0MsIDB4MDAwMCwgMHg4RjdELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGN0UsIDB4MDAwMCwgMHg4RjdGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg4RjgwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjgxLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjgyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEY4MywgMHgwMDAwLCAweDhGODQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGODUsIDB4MDAwMCwgMHg4Rjg2LCAweDhGODcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY4OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEY4OSwgMHgwMDAwLCAweDAwMDAsIDB4OEY4QSwgMHgwMDAwLCAweDhGOEIsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjhDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGOEQsDQorICAgIDB4MDAwMCwgMHg4RjhFLCAweDhGOEYsIDB4OEY5MCwgMHgwMDAwLCAweDhGOTEsIDB4OEY5MiwgMHg4RjkzLCAweDhGOTQsIDB4MDAwMCwgMHg4Rjk1LCAweDAwMDAsIDB4OEY5NiwgMHgwMDAwLCAweDhGOTcsIDB4OEY5OCwNCisgICAgMHg4Rjk5LCAweDhGOUEsIDB4OEY5QiwgMHg4RjlDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGOUQsIDB4OEY5RSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RjlGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEZBMCwgMHgwMDAwLCAweDAwMDAsIDB4OEZBMSwgMHgwMDAwLCAweDhGQTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEZBMywgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEZBNCwgMHgwMDAwLCAweDhGQTUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RkE2LCAweDhGQTcsIDB4OEZBOCwgMHgwMDAwLCAweDhGQTksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RkFBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RkFCLCAweDhGQUMsIDB4OEZBRCwgMHg4RkFFLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4RkFGLCAweDhGQjAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RkIxLCAweDhGQjIsIDB4MDAwMCwgMHg4RkIzLCAweDAwMDAsIDB4MDAwMCwgMHg4RkI0LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhGQjUsIDB4MDAwMCwgMHgwMDAwLCAweDhGQjYsIDB4MDAwMCwgMHg4RkI3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGQjgsIDB4OEZCOSwgMHgwMDAwLCAweDAwMDAsIDB4OEZCQSwNCisgICAgMHg4RkJCLCAweDhGQkMsIDB4MDAwMCwgMHg4RkJELCAweDhGQkUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEZCRiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGQzAsIDB4OEZDMSwgMHg4RkMyLA0KKyAgICAweDAwMDAsIDB4OEZDMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGQzQsIDB4MDAwMCwgMHg4RkM1LCAweDAwMDAsIDB4OEZDNiwgMHg4RkM3LCAweDhGQzgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OEZDOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RkNBLCAweDAwMDAsIDB4OEZDQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEZDQywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg4RkNELCAweDhGQ0UsIDB4MDAwMCwgMHg4RkNGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGRDAsIDB4OEZEMSwgMHg4RkQyLCAweDAwMDAsIDB4OEZEMywgMHgwMDAwLCAweDhGRDQsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhGRDUsIDB4MDAwMCwgMHg4RkQ2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEZENywgMHg4RkQ4LCAweDhGRDksIDB4OEZEQSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RkRCLCAweDhGREMsIDB4OEZERCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RkRFLCAweDhGREYsIDB4MDAwMCwgMHg4RkUwLCAweDAwMDAsIDB4OEZFMSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OEZFMiwgMHg4RkUzLCAweDhGRTQsIDB4MDAwMCwgMHgwMDAwLCAweDhGRTUsIDB4MDAwMCwgMHg4RkU2LCAweDAwMDAsIDB4OEZFNywgMHg4RkU4LCAweDhGRTksIDB4MDAwMCwgMHg4RkVBLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg4RkVCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGRUMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDhGRUQsIDB4MDAwMCwgMHg4RkVFLCAweDAwMDAsIDB4OEZFRiwgMHg4RkYwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDhGRjEsIDB4MDAwMCwgMHg4RkYyLCAweDAwMDAsIDB4OEZGMywgMHg4RkY0LA0KKyAgICAweDAwMDAsIDB4OEZGNSwgMHgwMDAwLCAweDhGRjYsIDB4MDAwMCwgMHg4RkY3LCAweDAwMDAsIDB4MDAwMCwgMHg4RkY4LCAweDhGRjksIDB4MDAwMCwgMHg4RkZBLCAweDhGRkIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDhGRkMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg4RkZELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OEZGRSwgMHgwMDAwLCAweDhGRkYsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwMDAsIDB4OTAwMSwgMHg5MDAyLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg5MDAzLCAweDAwMDAsIDB4OTAwNCwgMHg5MDA1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDkwMDYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDkwMDcsIDB4OTAwOCwgMHg5MDA5LCAweDAwMDAsIDB4OTAwQSwgMHg5MDBCLCAweDAwMDAsIDB4MDAwMCwgMHg5MDBDLCAweDkwMEQsIDB4MDAwMCwgMHg5MDBFLCAweDAwMDAsIDB4OTAwRiwgMHgwMDAwLCAweDkwMTAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDkwMTEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDEyLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg5MDEzLCAweDkwMTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTAxNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDE2LA0KKyAgICAweDAwMDAsIDB4OTAxNywgMHg5MDE4LCAweDAwMDAsIDB4MDAwMCwgMHg5MDE5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTAxQSwgMHg5MDFCLCAweDkwMUMsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTAxRCwgMHgwMDAwLCAweDAwMDAsIDB4OTAxRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwMUYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTAyMCwgMHgwMDAwLCAweDkwMjEsIDB4OTAyMiwgMHgwMDAwLA0KKyAgICAweDkwMjMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwMjQsIDB4OTAyNSwgMHg5MDI2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDI3LCAweDAwMDAsDQorICAgIDB4OTAyOCwgMHg5MDI5LCAweDkwMkEsIDB4OTAyQiwgMHg5MDJDLCAweDkwMkQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDJFLCAweDAwMDAsIDB4OTAyRiwgMHg5MDMwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTAzMSwgMHgwMDAwLCAweDkwMzIsIDB4MDAwMCwgMHgwMDAwLCAweDkwMzMsIDB4OTAzNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDM1LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5MDM2LCAweDAwMDAsIDB4OTAzNywgMHg5MDM4LCAweDkwMzksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTAzQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTAzQiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwM0MsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDkwM0QsIDB4MDAwMCwgMHg5MDNFLCAweDkwM0YsIDB4OTA0MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTA0MSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTA0MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDQzLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5MDQ0LCAweDAwMDAsIDB4MDAwMCwgMHg5MDQ1LCAweDAwMDAsIDB4OTA0NiwgMHgwMDAwLCAweDkwNDcsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDQ4LCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg5MDQ5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTA0QSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDRCLCAweDAwMDAsIDB4OTA0QywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwNEQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTA0RSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwNEYsIDB4MDAwMCwgMHgwMDAwLCAweDkwNTAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OTA1MSwgMHgwMDAwLCAweDkwNTIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTA1MywgMHg5MDU0LCAweDAwMDAsDQorICAgIDB4OTA1NSwgMHg5MDU2LCAweDkwNTcsIDB4OTA1OCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDU5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwNUEsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDVCLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwNUMsIDB4OTA1RCwgMHgwMDAwLCAweDkwNUUsIDB4OTA1RiwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OTA2MCwgMHg5MDYxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDYyLCAweDAwMDAsIDB4OTA2MywgMHg5MDY0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwNjUsIDB4OTA2NiwgMHg5MDY3LCAweDkwNjgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTA2OSwgMHgwMDAwLCAweDkwNkEsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4OTA2QiwgMHg5MDZDLCAweDAwMDAsIDB4OTA2RCwgMHgwMDAwLCAweDAwMDAsIDB4OTA2RSwgMHg5MDZGLCAweDAwMDAsIDB4OTA3MCwgMHg5MDcxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OTA3MiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDczLCAweDAwMDAsIDB4OTA3NCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OTA3NSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTA3NiwgMHg5MDc3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwNzgsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5MDc5LCAweDkwN0EsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwN0IsIDB4MDAwMCwgMHgwMDAwLCAweDkwN0MsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTA3RCwgMHgwMDAwLCAweDkwN0UsIDB4MDAwMCwgMHgwMDAwLCAweDkwN0YsIDB4OTA4MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDgxLCAweDkwODIsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDkwODMsIDB4OTA4NCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwODUsIDB4MDAwMCwgMHg5MDg2LCAweDkwODcsIDB4OTA4OCwgMHgwMDAwLCAweDAwMDAsIDB4OTA4OSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5MDhBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDhCLCAweDkwOEMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDkwOEQsIDB4MDAwMCwgMHg5MDhFLCAweDAwMDAsIDB4OTA4RiwgMHg5MDkwLCAweDkwOTEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MDkyLCAweDAwMDAsIDB4OTA5MywNCisgICAgMHg5MDk0LCAweDAwMDAsIDB4MDAwMCwgMHg5MDk1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwOTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwOTcsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTA5OCwgMHg5MDk5LCAweDAwMDAsIDB4OTA5QSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwOUIsIDB4MDAwMCwgMHg5MDlDLCAweDAwMDAsIDB4OTA5RCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OTA5RSwgMHg5MDlGLCAweDkwQTAsIDB4MDAwMCwgMHg5MEExLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwQTIsIDB4OTBBMywgMHgwMDAwLCAweDkwQTQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDkwQTUsIDB4MDAwMCwgMHgwMDAwLCAweDkwQTYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwQTcsIDB4MDAwMCwgMHg5MEE4LCAweDkwQTksIDB4OTBBQSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEFCLCAweDAwMDAsIDB4MDAwMCwgMHg5MEFDLCAweDAwMDAsIDB4OTBBRCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEFFLA0KKyAgICAweDkwQUYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBCMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEIxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwQjIsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDkwQjMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDkwQjQsIDB4OTBCNSwgMHg5MEI2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEI3LCAweDkwQjgsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDkwQjksIDB4OTBCQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBCQiwgMHgwMDAwLCAweDkwQkMsIDB4MDAwMCwgMHgwMDAwLCAweDkwQkQsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDkwQkUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEJGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwQzAsIDB4MDAwMCwgMHg5MEMxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwQzIsIDB4MDAwMCwgMHgwMDAwLCAweDkwQzMsIDB4MDAwMCwgMHg5MEM0LCAweDAwMDAsIDB4OTBDNSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHg5MEM2LCAweDAwMDAsIDB4MDAwMCwgMHg5MEM3LCAweDkwQzgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBDOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBDQSwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OTBDQiwgMHgwMDAwLCAweDkwQ0MsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MENELCAweDkwQ0UsIDB4OTBDRiwgMHg5MEQwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEQxLA0KKyAgICAweDAwMDAsIDB4OTBEMiwgMHg5MEQzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBENCwgMHgwMDAwLCAweDAwMDAsIDB4OTBENSwgMHg5MEQ2LCAweDAwMDAsIDB4OTBENywgMHg5MEQ4LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBEOSwgMHg5MERBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBEQiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MERDLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5MERELCAweDAwMDAsIDB4OTBERSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MERGLCAweDkwRTAsIDB4OTBFMSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEUyLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBFMywgMHgwMDAwLCAweDAwMDAsIDB4OTBFNCwgMHgwMDAwLCAweDkwRTUsIDB4OTBFNiwgMHgwMDAwLCAweDkwRTcsIDB4OTBFOCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBFOSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwRUEsIDB4MDAwMCwgMHg5MEVCLCAweDkwRUMsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEVELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBFRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEVGLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBGMCwgMHg5MEYxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwRjIsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBGMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBGNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBGNSwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEY2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEY3LCAweDAwMDAsIDB4OTBGOCwgMHg5MEY5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEZBLCAweDAwMDAsIDB4OTBGQiwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MEZDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkwRkQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTBGRSwgMHg5MEZGLCAweDAwMDAsIDB4MDAwMCwgMHg5MTAwLCAweDkxMDEsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDkxMDIsIDB4MDAwMCwgMHg5MTAzLCAweDkxMDQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTEwNSwgMHgwMDAwLCAweDAwMDAsIDB4OTEwNiwgMHgwMDAwLCAweDAwMDAsIDB4OTEwNywNCisgICAgMHg5MTA4LCAweDkxMDksIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MTBBLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkxMEIsIDB4MDAwMCwgMHg5MTBDLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5MTBELCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4OTEwRSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MTBGLCAweDkxMTAsIDB4MDAwMCwNCisgICAgMHg5MTExLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkxMTIsIDB4OTExMywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MTE0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg5MTE1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg5MTE2LCAweDkxMTcsIDB4OTExOCwgMHg5MTE5LCAweDkxMUEsIDB4OTExQiwgMHg5MTFDLCAweDkxMUQsIDB4OTExRSwgMHg5MTFGLCAweDkxMjAsIDB4OTEyMSwgMHg5MTIyLCAweDkxMjMsIDB4OTEyNCwgMHg5MTI1LA0KKyAgICAweDkxMjYsIDB4OTEyNywgMHg5MTI4LCAweDkxMjksIDB4OTEyQSwgMHg5MTJCLCAweDkxMkMsIDB4OTEyRCwgMHg5MTJFLCAweDkxMkYsIDB4OTEzMCwgMHg5MTMxLCAweDkxMzIsIDB4OTEzMywgMHg5MTM0LCAweDkxMzUsDQorICAgIDB4OTEzNiwgMHg5MTM3LCAweDkxMzgsIDB4OTEzOSwgMHg5MTNBLCAweDkxM0IsIDB4OTEzQywgMHg5MTNELCAweDkxM0UsIDB4OTEzRiwgMHg5MTQwLCAweDkxNDEsIDB4OTE0MiwgMHg5MTQzLCAweDkxNDQsIDB4OTE0NSwNCisgICAgMHg5MTQ2LCAweDkxNDcsIDB4OTE0OCwgMHg5MTQ5LCAweDkxNEEsIDB4OTE0QiwgMHg5MTRDLCAweDkxNEQsIDB4OTE0RSwgMHg5MTRGLCAweDkxNTAsIDB4OTE1MSwgMHg5MTUyLCAweDkxNTMsIDB4OTE1NCwgMHg5MTU1LA0KKyAgICAweDkxNTYsIDB4OTE1NywgMHg5MTU4LCAweDkxNTksIDB4OTE1QSwgMHg5MTVCLCAweDkxNUMsIDB4OTE1RCwgMHg5MTVFLCAweDkxNUYsIDB4OTE2MCwgMHg5MTYxLCAweDkxNjIsIDB4OTE2MywgMHg5MTY0LCAweDkxNjUsDQorICAgIDB4OTE2NiwgMHg5MTY3LCAweDkxNjgsIDB4OTE2OSwgMHg5MTZBLCAweDkxNkIsIDB4OTE2QywgMHg5MTZELCAweDkxNkUsIDB4OTE2RiwgMHg5MTcwLCAweDkxNzEsIDB4OTE3MiwgMHg5MTczLCAweDkxNzQsIDB4OTE3NSwNCisgICAgMHg5MTc2LCAweDkxNzcsIDB4OTE3OCwgMHg5MTc5LCAweDkxN0EsIDB4OTE3QiwgMHg5MTdDLCAweDkxN0QsIDB4OTE3RSwgMHg5MTdGLCAweDkxODAsIDB4OTE4MSwgMHg5MTgyLCAweDkxODMsIDB4OTE4NCwgMHg5MTg1LA0KKyAgICAweDkxODYsIDB4OTE4NywgMHg5MTg4LCAweDkxODksIDB4OTE4QSwgMHg5MThCLCAweDkxOEMsIDB4OTE4RCwgMHg5MThFLCAweDkxOEYsIDB4OTE5MCwgMHg5MTkxLCAweDkxOTIsIDB4OTE5MywgMHg5MTk0LCAweDkxOTUsDQorICAgIDB4OTE5NiwgMHg5MTk3LCAweDkxOTgsIDB4OTE5OSwgMHg5MTlBLCAweDkxOUIsIDB4OTE5QywgMHg5MTlELCAweDkxOUUsIDB4OTE5RiwgMHg5MUEwLCAweDkxQTEsIDB4OTFBMiwgMHg5MUEzLCAweDkxQTQsIDB4OTFBNSwNCisgICAgMHg5MUE2LCAweDkxQTcsIDB4OTFBOCwgMHg5MUE5LCAweDkxQUEsIDB4OTFBQiwgMHg5MUFDLCAweDkxQUQsIDB4OTFBRSwgMHg5MUFGLCAweDkxQjAsIDB4OTFCMSwgMHg5MUIyLCAweDkxQjMsIDB4OTFCNCwgMHg5MUI1LA0KKyAgICAweDkxQjYsIDB4OTFCNywgMHg5MUI4LCAweDkxQjksIDB4OTFCQSwgMHg5MUJCLCAweDkxQkMsIDB4OTFCRCwgMHg5MUJFLCAweDkxQkYsIDB4OTFDMCwgMHg5MUMxLCAweDkxQzIsIDB4OTFDMywgMHg5MUM0LCAweDkxQzUsDQorICAgIDB4OTFDNiwgMHg5MUM3LCAweDkxQzgsIDB4OTFDOSwgMHg5MUNBLCAweDkxQ0IsIDB4OTFDQywgMHg5MUNELCAweDkxQ0UsIDB4OTFDRiwgMHg5MUQwLCAweDkxRDEsIDB4OTFEMiwgMHg5MUQzLCAweDkxRDQsIDB4OTFENSwNCisgICAgMHg5MUQ2LCAweDkxRDcsIDB4OTFEOCwgMHg5MUQ5LCAweDkxREEsIDB4OTFEQiwgMHg5MURDLCAweDkxREQsIDB4OTFERSwgMHg5MURGLCAweDkxRTAsIDB4OTFFMSwgMHg5MUUyLCAweDkxRTMsIDB4OTFFNCwgMHg5MUU1LA0KKyAgICAweDkxRTYsIDB4OTFFNywgMHg5MUU4LCAweDkxRTksIDB4OTFFQSwgMHg5MUVCLCAweDkxRUMsIDB4OTFFRCwgMHg5MUVFLCAweDkxRUYsIDB4OTFGMCwgMHg5MUYxLCAweDkxRjIsIDB4OTFGMywgMHg5MUY0LCAweDkxRjUsDQorICAgIDB4OTFGNiwgMHg5MUY3LCAweDkxRjgsIDB4OTFGOSwgMHg5MUZBLCAweDkxRkIsIDB4OTFGQywgMHg5MUZELCAweDkxRkUsIDB4OTFGRiwgMHg5MjAwLCAweDkyMDEsIDB4OTIwMiwgMHg5MjAzLCAweDkyMDQsIDB4OTIwNSwNCisgICAgMHg5MjA2LCAweDkyMDcsIDB4OTIwOCwgMHg5MjA5LCAweDkyMEEsIDB4OTIwQiwgMHg5MjBDLCAweDkyMEQsIDB4OTIwRSwgMHg5MjBGLCAweDkyMTAsIDB4OTIxMSwgMHg5MjEyLCAweDkyMTMsIDB4OTIxNCwgMHg5MjE1LA0KKyAgICAweDkyMTYsIDB4OTIxNywgMHg5MjE4LCAweDkyMTksIDB4OTIxQSwgMHg5MjFCLCAweDkyMUMsIDB4OTIxRCwgMHg5MjFFLCAweDkyMUYsIDB4OTIyMCwgMHg5MjIxLCAweDkyMjIsIDB4OTIyMywgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OTIyNCwgMHgwMDAwLCAweDkyMjUsIDB4MDAwMCwgMHgwMDAwLCAweDkyMjYsIDB4OTIyNywgMHg5MjI4LCAweDkyMjksIDB4OTIyQSwgMHg5MjJCLCAweDkyMkMsIDB4OTIyRCwgMHg5MjJFLCAweDkyMkYsIDB4MDAwMCwNCisgICAgMHg5MjMwLCAweDAwMDAsIDB4OTIzMSwgMHgwMDAwLCAweDAwMDAsIDB4OTIzMiwgMHg5MjMzLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkyMzQsIDB4OTIzNSwgMHg5MjM2LCAweDkyMzcsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDkyMzgsIDB4OTIzOSwgMHg5MjNBLCAweDkyM0IsIDB4OTIzQywgMHg5MjNELCAweDkyM0UsIDB4OTIzRiwgMHg5MjQwLCAweDkyNDEsIDB4OTI0MiwgMHg5MjQzLCAweDkyNDQsIDB4OTI0NSwgMHg5MjQ2LCAweDkyNDcsDQorICAgIDB4OTI0OCwgMHg5MjQ5LCAweDkyNEEsIDB4OTI0QiwgMHg5MjRDLCAweDkyNEQsIDB4OTI0RSwgMHg5MjRGLCAweDkyNTAsIDB4OTI1MSwgMHg5MjUyLCAweDkyNTMsIDB4OTI1NCwgMHg5MjU1LCAweDkyNTYsIDB4OTI1NywNCisgICAgMHg5MjU4LCAweDkyNTksIDB4OTI1QSwgMHg5MjVCLCAweDkyNUMsIDB4OTI1RCwgMHg5MjVFLCAweDkyNUYsIDB4OTI2MCwgMHg5MjYxLCAweDkyNjIsIDB4OTI2MywgMHg5MjY0LCAweDkyNjUsIDB4OTI2NiwgMHg5MjY3LA0KKyAgICAweDkyNjgsIDB4OTI2OSwgMHg5MjZBLCAweDkyNkIsIDB4OTI2QywgMHg5MjZELCAweDkyNkUsIDB4OTI2RiwgMHg5MjcwLCAweDkyNzEsIDB4OTI3MiwgMHg5MjczLCAweDAwMDAsIDB4OTI3NCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OTI3NSwgMHg5Mjc2LCAweDkyNzcsIDB4OTI3OCwgMHg5Mjc5LCAweDkyN0EsIDB4OTI3QiwgMHg5MjdDLCAweDkyN0QsIDB4OTI3RSwgMHg5MjdGLCAweDkyODAsIDB4OTI4MSwgMHg5MjgyLCAweDkyODMsIDB4OTI4NCwNCisgICAgMHg5Mjg1LCAweDkyODYsIDB4OTI4NywgMHg5Mjg4LCAweDkyODksIDB4OTI4QSwgMHg5MjhCLCAweDkyOEMsIDB4OTI4RCwgMHg5MjhFLCAweDkyOEYsIDB4OTI5MCwgMHg5MjkxLCAweDkyOTIsIDB4OTI5MywgMHg5Mjk0LA0KKyAgICAweDkyOTUsIDB4OTI5NiwgMHg5Mjk3LCAweDkyOTgsIDB4OTI5OSwgMHg5MjlBLCAweDkyOUIsIDB4OTI5QywgMHg5MjlELCAweDkyOUUsIDB4OTI5RiwgMHg5MkEwLCAweDkyQTEsIDB4OTJBMiwgMHg5MkEzLCAweDkyQTQsDQorICAgIDB4OTJBNSwgMHg5MkE2LCAweDkyQTcsIDB4OTJBOCwgMHg5MkE5LCAweDkyQUEsIDB4OTJBQiwgMHg5MkFDLCAweDkyQUQsIDB4OTJBRSwgMHg5MkFGLCAweDkyQjAsIDB4OTJCMSwgMHg5MkIyLCAweDkyQjMsIDB4OTJCNCwNCisgICAgMHg5MkI1LCAweDkyQjYsIDB4OTJCNywgMHg5MkI4LCAweDkyQjksIDB4OTJCQSwgMHg5MkJCLCAweDkyQkMsIDB4OTJCRCwgMHg5MkJFLCAweDkyQkYsIDB4OTJDMCwgMHg5MkMxLCAweDkyQzIsIDB4OTJDMywgMHg5MkM0LA0KKyAgICAweDkyQzUsIDB4OTJDNiwgMHg5MkM3LCAweDkyQzgsIDB4OTJDOSwgMHg5MkNBLCAweDkyQ0IsIDB4OTJDQywgMHg5MkNELCAweDkyQ0UsIDB4OTJDRiwgMHg5MkQwLCAweDkyRDEsIDB4OTJEMiwgMHg5MkQzLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDkyRDQsIDB4OTJENSwgMHg5MkQ2LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDkyRDcsIDB4OTJEOCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MjNBQywgMHgyM0FFLCAweDIzQjAsIDB4MzMxMiwgMHgzMzE1LCAweDIzQjIsIDB4MjNCNCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgyM0I2LCAweDIzQjgsIDB4MjNCQSwgMHgyM0JDLCAweDIzQkUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIzQzAsIDB4MDAwMCwgMHgyM0MyLA0KKyAgICAweDkyRDksIDB4OTJEQSwgMHg5MkRCLCAweDkyREMsIDB4OTJERCwgMHg5MkRFLCAweDkyREYsIDB4OTJFMCwgMHg5MkUxLCAweDkyRTIsIDB4MjNDNCwgMHgyM0M2LCAweDIzQzgsIDB4MjNDQSwgMHgyM0NDLCAweDIzQ0UsDQorICAgIDB4MjNEMCwgMHgyM0QyLCAweDIzRDQsIDB4MjNENiwgMHgyM0Q4LCAweDIzREEsIDB4MjNEQywgMHgwMDAwLCAweDIzREUsIDB4MjNFMCwgMHgyM0UyLCAweDIzRTQsIDB4MjNFNiwgMHgwMDAwLCAweDIzRTgsIDB4MDAwMCwNCisgICAgMHgyM0VBLCAweDIzRUMsIDB4MDAwMCwgMHgyM0VFLCAweDIzRjAsIDB4MDAwMCwgMHgyM0YyLCAweDIzRjQsIDB4MjNGNiwgMHgyM0Y4LCAweDIzRkEsIDB4MjNGQywgMHgyM0ZFLCAweDI0MDAsIDB4MjQwMiwgMHgyNDA0LA0KKyAgICAweDkyRTMsIDB4OTJFNCwgMHg5MkU1LCAweDkyRTYsIDB4OTJFNywgMHg5MkU4LCAweDkyRTksIDB4OTJFQSwgMHg5MkVCLCAweDkyRUMsIDB4OTJFRCwgMHg5MkVFLCAweDkyRUYsIDB4OTJGMCwgMHg5MkYxLCAweDkyRjIsDQorICAgIDB4OTJGMywgMHg5MkY0LCAweDkyRjUsIDB4OTJGNiwgMHg5MkY3LCAweDkyRjgsIDB4OTJGOSwgMHg5MkZBLCAweDkyRkIsIDB4OTJGQywgMHg5MkZELCAweDkyRkUsIDB4OTJGRiwgMHg5MzAwLCAweDkzMDEsIDB4OTMwMiwNCisgICAgMHg5MzAzLCAweDkzMDQsIDB4OTMwNSwgMHg5MzA2LCAweDkzMDcsIDB4OTMwOCwgMHg5MzA5LCAweDkzMEEsIDB4OTMwQiwgMHg5MzBDLCAweDkzMEQsIDB4OTMwRSwgMHg5MzBGLCAweDkzMTAsIDB4OTMxMSwgMHg5MzEyLA0KKyAgICAweDkzMTMsIDB4OTMxNCwgMHg5MzE1LCAweDkzMTYsIDB4OTMxNywgMHg5MzE4LCAweDkzMTksIDB4OTMxQSwgMHg5MzFCLCAweDkzMUMsIDB4OTMxRCwgMHg5MzFFLCAweDkzMUYsIDB4OTMyMCwgMHg5MzIxLCAweDkzMjIsDQorICAgIDB4OTMyMywgMHg5MzI0LCAweDkzMjUsIDB4OTMyNiwgMHg5MzI3LCAweDkzMjgsIDB4OTMyOSwgMHg5MzJBLCAweDkzMkIsIDB4OTMyQywgMHg5MzJELCAweDkzMkUsIDB4OTMyRiwgMHg5MzMwLCAweDkzMzEsIDB4OTMzMiwNCisgICAgMHg5MzMzLCAweDkzMzQsIDB4OTMzNSwgMHg5MzM2LCAweDkzMzcsIDB4OTMzOCwgMHg5MzM5LCAweDkzM0EsIDB4OTMzQiwgMHg5MzNDLCAweDkzM0QsIDB4OTMzRSwgMHg5MzNGLCAweDkzNDAsIDB4OTM0MSwgMHg5MzQyLA0KKyAgICAweDkzNDMsIDB4OTM0NCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg5MzQ1LCAweDkzNDYsIDB4OTM0NywgMHg5MzQ4LCAweDkzNDksIDB4OTM0QSwgMHg5MzRCLCAweDkzNEMsIDB4OTM0RCwgMHg5MzRFLCAweDkzNEYsIDB4OTM1MCwgMHg5MzUxLA0KKyAgICAweDkzNTIsIDB4OTM1MywgMHg5MzU0LCAweDkzNTUsIDB4OTM1NiwgMHg5MzU3LCAweDkzNTgsIDB4OTM1OSwgMHg5MzVBLCAweDkzNUIsIDB4MjQwNiwgMHgyNDA4LCAweDI0MEEsIDB4MjQwQywgMHgyNDBFLCAweDI0MTAsDQorICAgIDB4MjQxMiwgMHgyNDE0LCAweDI0MTYsIDB4MjQxOCwgMHgyNDFBLCAweDI0MUMsIDB4MjQxRSwgMHgyNDIwLCAweDI0MjIsIDB4MjQyNCwgMHgyNDI2LCAweDI0MjgsIDB4OTM1QywgMHg5MzVELCAweDkzNUUsIDB4OTM1RiwNCisgICAgMHgyNDJBLCAweDI0MkMsIDB4MjQyRSwgMHgyNDMwLCAweDI0MzIsIDB4MjQzNCwgMHgyNDM2LCAweDI0MzgsIDB4MjQzQSwgMHgyNDNDLCAweDI0M0UsIDB4MjQ0MCwgMHgyNDQyLCAweDI0NDQsIDB4MjQ0NiwgMHgyNDQ4LA0KKyAgICAweDI0NEEsIDB4MjQ0QywgMHgyNDRFLCAweDI0NTAsIDB4MjQ1MiwgMHgyNDU0LCAweDI0NTYsIDB4MjQ1OCwgMHgyNDVBLCAweDI0NUMsIDB4MjQ1RSwgMHgyNDYwLCAweDI0NjIsIDB4MjQ2NCwgMHgyNDY2LCAweDI0NjgsDQorICAgIDB4MjQ2QSwgMHgyNDZDLCAweDI0NkUsIDB4MjQ3MCwgMHgyNDcyLCAweDI0NzQsIDB4MjQ3NiwgMHgyNDc4LCAweDI0N0EsIDB4MjQ3QywgMHgyNDdFLCAweDI0ODAsIDB4MjQ4MiwgMHgyNDg0LCAweDI0ODYsIDB4MjQ4OCwNCisgICAgMHgyNDhBLCAweDI0OEMsIDB4MjQ4RSwgMHgyNDkwLCAweDI0OTIsIDB4MjQ5NCwgMHgyNDk2LCAweDI0OTgsIDB4MjQ5QSwgMHgyNDlDLCAweDI0OUUsIDB4MjRBMCwgMHgyNEEyLCAweDI0QTQsIDB4MjRBNiwgMHgyNEE4LA0KKyAgICAweDI0QUEsIDB4MjRBQywgMHgyNEFFLCAweDI0QjAsIDB4MjRCMiwgMHgyNEI0LCAweDI0QjYsIDB4MjRCOCwgMHgyNEJBLCAweDI0QkMsIDB4MjRCRSwgMHgyNEMwLCAweDI0QzIsIDB4MjRDNCwgMHgyNEM2LCAweDI0QzgsDQorICAgIDB4MjRDQSwgMHgyNENDLCAweDI0Q0UsIDB4MjREMCwgMHgyNEQyLCAweDI0RDQsIDB4MjRENiwgMHgyNEQ4LCAweDI0REEsIDB4MjREQywgMHgyNERFLCAweDI0RTAsIDB4MjRFMiwgMHgyNEU0LCAweDI0RTYsIDB4MjRFOCwNCisgICAgMHgyNEVBLCAweDI0RUMsIDB4MjRFRSwgMHgyNEYwLCAweDI0RjIsIDB4MjRGNCwgMHgyNEY2LCAweDI0RjgsIDB4MjRGQSwgMHgyNEZDLCAweDI0RkUsIDB4MjUwMCwgMHgyNTAyLCAweDI1MDQsIDB4MjUwNiwgMHgyNTA4LA0KKyAgICAweDI1MEEsIDB4MjUwQywgMHgyNTBFLCAweDI1MTAsIDB4MjUxMiwgMHgyNTE0LCAweDI1MTYsIDB4MjUxOCwgMHgyNTFBLCAweDI1MUMsIDB4MjUxRSwgMHgyNTIwLCAweDI1MjIsIDB4MjUyNCwgMHgyNTI2LCAweDI1MjgsDQorICAgIDB4MjUyQSwgMHgyNTJDLCAweDI1MkUsIDB4MjUzMCwgMHgyNTMyLCAweDI1MzQsIDB4MjUzNiwgMHgyNTM4LCAweDI1M0EsIDB4MjUzQywgMHgyNTNFLCAweDI1NDAsIDB4MjU0MiwgMHgyNTQ0LCAweDI1NDYsIDB4MjU0OCwNCisgICAgMHgyNTRBLCAweDI1NEMsIDB4MjU0RSwgMHgyNTUwLCAweDI1NTIsIDB4MjU1NCwgMHgyNTU2LCAweDI1NTgsIDB4MjU1QSwgMHgyNTVDLCAweDI1NUUsIDB4MjU2MCwgMHgyNTYyLCAweDI1NjQsIDB4MjU2NiwgMHgyNTY4LA0KKyAgICAweDI1NkEsIDB4MjU2QywgMHgyNTZFLCAweDI1NzAsIDB4MjU3MiwgMHgyNTc0LCAweDI1NzYsIDB4MjU3OCwgMHgyNTdBLCAweDI1N0MsIDB4MjU3RSwgMHgyNTgwLCAweDI1ODIsIDB4MjU4NCwgMHgyNTg2LCAweDI1ODgsDQorICAgIDB4MjU4QSwgMHgyNThDLCAweDI1OEUsIDB4MjU5MCwgMHgyNTkyLCAweDI1OTQsIDB4MjU5NiwgMHgyNTk4LCAweDI1OUEsIDB4MjU5QywgMHgyNTlFLCAweDI1QTAsIDB4MjVBMiwgMHgyNUE0LCAweDI1QTYsIDB4MjVBOCwNCisgICAgMHgyNUFBLCAweDI1QUMsIDB4MjVBRSwgMHgyNUIwLCAweDI1QjIsIDB4MjVCNCwgMHgyNUI2LCAweDI1QjgsIDB4MjVCQSwgMHgyNUJDLCAweDI1QkUsIDB4MjVDMCwgMHgyNUMyLCAweDI1QzQsIDB4MjVDNiwgMHgyNUM4LA0KKyAgICAweDI1Q0EsIDB4MjVDQywgMHgyNUNFLCAweDI1RDAsIDB4MjVEMiwgMHgyNUQ0LCAweDI1RDYsIDB4MjVEOCwgMHgyNURBLCAweDI1REMsIDB4MjVERSwgMHgyNUUwLCAweDI1RTIsIDB4MjVFNCwgMHgyNUU2LCAweDI1RTgsDQorICAgIDB4MjVFQSwgMHgyNUVDLCAweDI1RUUsIDB4MjVGMCwgMHgyNUYyLCAweDI1RjQsIDB4MjVGNiwgMHgyNUY4LCAweDI1RkEsIDB4MjVGQywgMHgyNUZFLCAweDI2MDAsIDB4MjYwMiwgMHgyNjA0LCAweDI2MDYsIDB4MjYwOCwNCisgICAgMHgyNjBBLCAweDI2MEMsIDB4MzMxOCwgMHgzMzFCLCAweDMzMUUsIDB4MjYwRSwgMHgyNjEwLCAweDI2MTIsIDB4MjYxNCwgMHgyNjE2LCAweDI2MTgsIDB4MjYxQSwgMHgyNjFDLCAweDI2MUUsIDB4MjYyMCwgMHgyNjIyLA0KKyAgICAweDI2MjQsIDB4MjYyNiwgMHgyNjI4LCAweDI2MkEsIDB4MjYyQywgMHgyNjJFLCAweDI2MzAsIDB4MjYzMiwgMHgyNjM0LCAweDI2MzYsIDB4MjYzOCwgMHgyNjNBLCAweDI2M0MsIDB4MjYzRSwgMHgyNjQwLCAweDI2NDIsDQorICAgIDB4MjY0NCwgMHgyNjQ2LCAweDI2NDgsIDB4MjY0QSwgMHgyNjRDLCAweDI2NEUsIDB4MjY1MCwgMHgyNjUyLCAweDI2NTQsIDB4MjY1NiwgMHgyNjU4LCAweDI2NUEsIDB4MjY1QywgMHgyNjVFLCAweDI2NjAsIDB4MjY2MiwNCisgICAgMHgyNjY0LCAweDI2NjYsIDB4MjY2OCwgMHgyNjZBLCAweDI2NkMsIDB4MjY2RSwgMHgyNjcwLCAweDI2NzIsIDB4MjY3NCwgMHgyNjc2LCAweDI2NzgsIDB4MjY3QSwgMHgyNjdDLCAweDI2N0UsIDB4MjY4MCwgMHgyNjgyLA0KKyAgICAweDI2ODQsIDB4MjY4NiwgMHgyNjg4LCAweDI2OEEsIDB4MjY4QywgMHgyNjhFLCAweDI2OTAsIDB4MjY5MiwgMHgyNjk0LCAweDI2OTYsIDB4MjY5OCwgMHgyNjlBLCAweDI2OUMsIDB4MjY5RSwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgzMzIxLCAweDMzMjQsIDB4MzMyNywgMHgzMzJBLCAweDMzMkQsIDB4MzMzMCwgMHgzMzMzLCAweDMzMzYsIDB4MzMzOSwgMHgzMzNDLCAweDMzM0YsIDB4MzM0MiwgMHgzMzQ1LCAweDMzNDgsIDB4MzM0QiwgMHgzMzRFLA0KKyAgICAweDMzNTEsIDB4MzM1NCwgMHgzMzU3LCAweDMzNUEsIDB4MzM1RCwgMHgzMzYwLCAweDMzNjMsIDB4MzM2NiwgMHgzMzY5LCAweDMzNkMsIDB4MzM2RiwgMHgzMzcyLCAweDMzNzUsIDB4MzM3OCwgMHgzMzdCLCAweDMzN0UsDQorICAgIDB4MzM4MSwgMHgzMzg0LCAweDMzODcsIDB4MzM4QSwgMHgzMzhELCAweDMzOTAsIDB4MzM5MywgMHgzMzk2LCAweDMzOTksIDB4MzM5QywgMHgzMzlGLCAweDMzQTIsIDB4MzNBNSwgMHgzM0E4LCAweDMzQUIsIDB4MzNBRSwNCisgICAgMHgzM0IxLCAweDMzQjQsIDB4MzNCNywgMHgzM0JBLCAweDMzQkQsIDB4MzNDMCwgMHgzM0MzLCAweDMzQzYsIDB4MzNDOSwgMHgzM0NDLCAweDMzQ0YsIDB4MzNEMiwgMHgzM0Q1LCAweDMzRDgsIDB4MzNEQiwgMHgzM0RFLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgzM0UxLCAweDMzRTQsIDB4MzNFNywgMHgzM0VBLCAweDMzRUQsIDB4MzNGMCwgMHgzM0YzLCAweDMzRjYsIDB4MzNGOSwgMHgzM0ZDLCAweDMzRkYsIDB4MzQwMiwgMHgzNDA1LCAweDM0MDgsDQorICAgIDB4MzQwQiwgMHgzNDBFLCAweDM0MTEsIDB4MzQxNCwgMHgzNDE3LCAweDM0MUEsIDB4MzQxRCwgMHgzNDIwLCAweDM0MjMsIDB4MzQyNiwgMHgzNDI5LCAweDM0MkMsIDB4MzQyRiwgMHgzNDMyLCAweDM0MzUsIDB4MzQzOCwNCisgICAgMHgzNDNCLCAweDM0M0UsIDB4MzQ0MSwgMHgzNDQ0LCAweDM0NDcsIDB4MzQ0QSwgMHgzNDRELCAweDM0NTAsIDB4MzQ1MywgMHgzNDU2LCAweDM0NTksIDB4MzQ1QywgMHgzNDVGLCAweDM0NjIsIDB4MzQ2NSwgMHgzNDY4LA0KKyAgICAweDM0NkIsIDB4MzQ2RSwgMHgzNDcxLCAweDM0NzQsIDB4MzQ3NywgMHgzNDdBLCAweDM0N0QsIDB4MzQ4MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDM0ODMsIDB4MzQ4NiwgMHg0MUE0LCAweDQxQTksIDB4NDFBRSwgMHg0MUIzLCAweDQxQjgsIDB4NDFCRCwgMHg0MUMyLCAweDM0ODksIDB4NDFDNywgMHg0MURBLCAweDQxRTMsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg5MzYwLCAweDkzNjEsIDB4OTM2MiwgMHg5MzYzLCAweDkzNjQsIDB4OTM2NSwgMHg5MzY2LCAweDkzNjcsIDB4OTM2OCwgMHg5MzY5LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OTM2QSwgMHg5MzZCLCAweDkzNkMsIDB4OTM2RCwgMHg5MzZFLCAweDkzNkYsIDB4OTM3MCwgMHg5MzcxLCAweDkzNzIsIDB4OTM3MywgMHg5Mzc0LCAweDkzNzUsIDB4OTM3NiwgMHg5Mzc3LCAweDkzNzgsIDB4OTM3OSwNCisgICAgMHg5MzdBLCAweDkzN0IsIDB4OTM3QywgMHg5MzdELCAweDkzN0UsIDB4MDAwMCwgMHgwMDAwLCAweDkzN0YsIDB4OTM4MCwgMHg5MzgxLCAweDkzODIsIDB4OTM4MywgMHg5Mzg0LCAweDkzODUsIDB4OTM4NiwgMHg5Mzg3LA0KKyAgICAweDkzODgsIDB4OTM4OSwgMHg5MzhBLCAweDAwMDAsIDB4OTM4QiwgMHg5MzhDLCAweDkzOEQsIDB4OTM4RSwgMHg5MzhGLCAweDkzOTAsIDB4OTM5MSwgMHg5MzkyLCAweDkzOTMsIDB4OTM5NCwgMHg5Mzk1LCAweDkzOTYsDQorICAgIDB4OTM5NywgMHg5Mzk4LCAweDkzOTksIDB4OTM5QSwgMHg5MzlCLCAweDkzOUMsIDB4OTM5RCwgMHgwMDAwLCAweDkzOUUsIDB4OTM5RiwgMHg5M0EwLCAweDkzQTEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHg5M0EyLCAweDI2QTAsIDB4OTNBMywgMHgwMDAwLCAweDkzQTQsIDB4MDAwMCwgMHg5M0E1LCAweDI2QTIsIDB4OTNBNiwgMHgyNkE0LCAweDkzQTcsIDB4MjZBNiwgMHg5M0E4LCAweDI2QTgsIDB4OTNBOSwgMHgyNkFBLA0KKyAgICAweDkzQUEsIDB4OTNBQiwgMHg5M0FDLCAweDkzQUQsIDB4OTNBRSwgMHg5M0FGLCAweDkzQjAsIDB4OTNCMSwgMHg5M0IyLCAweDkzQjMsIDB4OTNCNCwgMHg5M0I1LCAweDkzQjYsIDB4OTNCNywgMHg5M0I4LCAweDkzQjksDQorICAgIDB4OTNCQSwgMHg5M0JCLCAweDkzQkMsIDB4OTNCRCwgMHg5M0JFLCAweDkzQkYsIDB4OTNDMCwgMHg5M0MxLCAweDkzQzIsIDB4OTNDMywgMHg5M0M0LCAweDkzQzUsIDB4OTNDNiwgMHg5M0M3LCAweDkzQzgsIDB4OTNDOSwNCisgICAgMHg5M0NBLCAweDkzQ0IsIDB4OTNDQywgMHg5M0NELCAweDkzQ0UsIDB4OTNDRiwgMHg5M0QwLCAweDkzRDEsIDB4OTNEMiwgMHg5M0QzLCAweDkzRDQsIDB4OTNENSwgMHg5M0Q2LCAweDkzRDcsIDB4OTNEOCwgMHg5M0Q5LA0KKyAgICAweDkzREEsIDB4OTNEQiwgMHg5M0RDLCAweDkzREQsIDB4OTNERSwgMHg5M0RGLCAweDkzRTAsIDB4OTNFMSwgMHg5M0UyLCAweDkzRTMsIDB4OTNFNCwgMHg5M0U1LCAweDkzRTYsIDB4OTNFNywgMHg5M0U4LCAweDkzRTksDQorICAgIDB4OTNFQSwgMHg5M0VCLCAweDkzRUMsIDB4OTNFRCwgMHg5M0VFLCAweDkzRUYsIDB4OTNGMCwgMHg5M0YxLCAweDkzRjIsIDB4OTNGMywgMHg5M0Y0LCAweDkzRjUsIDB4OTNGNiwgMHg5M0Y3LCAweDkzRjgsIDB4OTNGOSwNCisgICAgMHg5M0ZBLCAweDkzRkIsIDB4OTNGQywgMHg5M0ZELCAweDkzRkUsIDB4OTNGRiwgMHg5NDAwLCAweDk0MDEsIDB4OTQwMiwgMHg5NDAzLCAweDk0MDQsIDB4OTQwNSwgMHg5NDA2LCAweDk0MDcsIDB4OTQwOCwgMHg5NDA5LA0KKyAgICAweDk0MEEsIDB4OTQwQiwgMHg5NDBDLCAweDk0MEQsIDB4OTQwRSwgMHg5NDBGLCAweDk0MTAsIDB4OTQxMSwgMHg5NDEyLCAweDk0MTMsIDB4OTQxNCwgMHg5NDE1LCAweDk0MTYsIDB4OTQxNywgMHg5NDE4LCAweDk0MTksDQorICAgIDB4OTQxQSwgMHg5NDFCLCAweDk0MUMsIDB4OTQxRCwgMHg5NDFFLCAweDI2QUMsIDB4MjZBRSwgMHgyNkIwLCAweDI2QjIsIDB4MjZCNCwgMHgyNkI2LCAweDI2QjgsIDB4MjZCQSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDk0MUYsIDB4OTQyMCwgMHg5NDIxLCAweDk0MjIsIDB4OTQyMywgMHg5NDI0LCAweDk0MjUsIDB4OTQyNiwgMHg5NDI3LCAweDk0MjgsIDB4OTQyOSwgMHg5NDJBLCAweDk0MkIsIDB4OTQyQywgMHg5NDJELA0KKyAgICAweDk0MkUsIDB4OTQyRiwgMHg5NDMwLCAweDk0MzEsIDB4OTQzMiwgMHg5NDMzLCAweDk0MzQsIDB4OTQzNSwgMHg5NDM2LCAweDk0MzcsIDB4OTQzOCwgMHg5NDM5LCAweDk0M0EsIDB4OTQzQiwgMHg5NDNDLCAweDk0M0QsDQorICAgIDB4OTQzRSwgMHg5NDNGLCAweDk0NDAsIDB4OTQ0MSwgMHg5NDQyLCAweDk0NDMsIDB4OTQ0NCwgMHg5NDQ1LCAweDk0NDYsIDB4OTQ0NywgMHg5NDQ4LCAweDk0NDksIDB4OTQ0QSwgMHg5NDRCLCAweDk0NEMsIDB4OTQ0RCwNCisgICAgMHg5NDRFLCAweDk0NEYsIDB4OTQ1MCwgMHg5NDUxLCAweDk0NTIsIDB4OTQ1MywgMHg5NDU0LCAweDk0NTUsIDB4OTQ1NiwgMHg5NDU3LCAweDk0NTgsIDB4OTQ1OSwgMHg5NDVBLCAweDk0NUIsIDB4OTQ1QywgMHg5NDVELA0KKyAgICAweDk0NUUsIDB4OTQ1RiwgMHg5NDYwLCAweDk0NjEsIDB4OTQ2MiwgMHg5NDYzLCAweDk0NjQsIDB4OTQ2NSwgMHg5NDY2LCAweDk0NjcsIDB4OTQ2OCwgMHg5NDY5LCAweDk0NkEsIDB4OTQ2QiwgMHg5NDZDLCAweDk0NkQsDQorICAgIDB4OTQ2RSwgMHg5NDZGLCAweDk0NzAsIDB4OTQ3MSwgMHg5NDcyLCAweDk0NzMsIDB4OTQ3NCwgMHg5NDc1LCAweDk0NzYsIDB4OTQ3NywgMHg5NDc4LCAweDk0NzksIDB4OTQ3QSwgMHg5NDdCLCAweDk0N0MsIDB4OTQ3RCwNCisgICAgMHg5NDdFLCAweDk0N0YsIDB4OTQ4MCwgMHg5NDgxLCAweDk0ODIsIDB4OTQ4MywgMHg5NDg0LCAweDk0ODUsIDB4OTQ4NiwgMHg5NDg3LCAweDk0ODgsIDB4OTQ4OSwgMHg5NDhBLCAweDk0OEIsIDB4OTQ4QywgMHg5NDhELA0KKyAgICAweDk0OEUsIDB4OTQ4RiwgMHg5NDkwLCAweDk0OTEsIDB4OTQ5MiwgMHg5NDkzLCAweDk0OTQsIDB4OTQ5NSwgMHg5NDk2LCAweDk0OTcsIDB4OTQ5OCwgMHg5NDk5LCAweDk0OUEsIDB4OTQ5QiwgMHg5NDlDLCAweDk0OUQsDQorICAgIDB4OTQ5RSwgMHg5NDlGLCAweDk0QTAsIDB4OTRBMSwgMHg5NEEyLCAweDk0QTMsIDB4OTRBNCwgMHg5NEE1LCAweDk0QTYsIDB4OTRBNywgMHg5NEE4LCAweDk0QTksIDB4OTRBQSwgMHg5NEFCLCAweDk0QUMsIDB4OTRBRCwNCisgICAgMHg5NEFFLCAweDk0QUYsIDB4OTRCMCwgMHg5NEIxLCAweDk0QjIsIDB4OTRCMywgMHg5NEI0LCAweDk0QjUsIDB4OTRCNiwgMHg5NEI3LCAweDk0QjgsIDB4OTRCOSwgMHg5NEJBLCAweDk0QkIsIDB4OTRCQywgMHg5NEJELA0KKyAgICAweDk0QkUsIDB4OTRCRiwgMHg5NEMwLCAweDk0QzEsIDB4OTRDMiwgMHg5NEMzLCAweDk0QzQsIDB4OTRDNSwgMHg5NEM2LCAweDk0QzcsIDB4OTRDOCwgMHg5NEM5LCAweDk0Q0EsIDB4OTRDQiwgMHg5NENDLCAweDk0Q0QsDQorICAgIDB4OTRDRSwgMHg5NENGLCAweDk0RDAsIDB4OTREMSwgMHg5NEQyLCAweDk0RDMsIDB4OTRENCwgMHg5NEQ1LCAweDk0RDYsIDB4OTRENywgMHg5NEQ4LCAweDk0RDksIDB4OTREQSwgMHg5NERCLCAweDk0REMsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4OTRERCwgMHg5NERFLCAweDk0REYsIDB4OTRFMCwgMHg5NEUxLCAweDk0RTIsIDB4MDAwMCwgMHgwMDAwLCAweDk0RTMsIDB4OTRFNCwgMHg5NEU1LCAweDk0RTYsIDB4OTRFNywgMHg5NEU4LA0KKyAgICAweDAwMDAsIDB4MDAwMCwgMHg5NEU5LCAweDk0RUEsIDB4OTRFQiwgMHg5NEVDLCAweDk0RUQsIDB4OTRFRSwgMHgwMDAwLCAweDAwMDAsIDB4OTRFRiwgMHg5NEYwLCAweDk0RjEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsDQorICAgIDB4OTRGMiwgMHg5NEYzLCAweDk0RjQsIDB4OTRGNSwgMHg5NEY2LCAweDk0RjcsIDB4OTRGOCwgMHgwMDAwLCAweDk0RjksIDB4OTRGQSwgMHg5NEZCLCAweDk0RkMsIDB4OTRGRCwgMHg5NEZFLCAweDk0RkYsIDB4MDAwMCwNCisgICAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwDQorfTsNCitleHRlcm4gY29uc3QgRlhfV0NIQVIgZ19Vbmljb2RlRGF0YV9Ob3JtYWxpemF0aW9uX01hcDFbNTM3Nl0gPSB7DQorICAgIDB4MDA2NiwgMHgwMDUzLCAweDAwNTMsIDB4MDA1OSwgMHgwMDIwLCAweDAzMDgsIDB4MDA2MSwgMHgwMDUyLCAweDAzMDQsIDB4MDAzMiwgMHgwMDMzLCAweDAzMDEsIDB4MDNCQywgMHgwMzI3LCAweDAwMzEsIDB4MDA2RiwNCisgICAgMHgwMDQxLCAweDAwNDEsIDB4MDA0MSwgMHgwMDQxLCAweDAwNDEsIDB4MDA0MSwgMHgwMDQzLCAweDAwNDUsIDB4MDA0NSwgMHgwMDQ1LCAweDAwNDUsIDB4MDA0OSwgMHgwMDQ5LCAweDAwNDksIDB4MDA0OSwgMHgwMDQ0LA0KKyAgICAweDAwNEUsIDB4MDA0RiwgMHgwMDRGLCAweDAwNEYsIDB4MDA0RiwgMHgwMDRGLCAweDAwNEYsIDB4MDA1NSwgMHgwMDU1LCAweDAwNTUsIDB4MDA1NSwgMHgwMDU5LCAweDAwNjEsIDB4MDA2MSwgMHgwMDYxLCAweDAwNjEsDQorICAgIDB4MDA2MSwgMHgwMDYxLCAweDAwNjMsIDB4MDA2NSwgMHgwMDY1LCAweDAwNjUsIDB4MDA2NSwgMHgwMDY5LCAweDAwNjksIDB4MDA2OSwgMHgwMDY5LCAweDAwNkUsIDB4MDA2RiwgMHgwMDZGLCAweDAwNkYsIDB4MDA2RiwNCisgICAgMHgwMDZGLCAweDAwNkYsIDB4MDA3NSwgMHgwMDc1LCAweDAwNzUsIDB4MDA3NSwgMHgwMDc5LCAweDAwNzksIDB4MDA0MSwgMHgwMDYxLCAweDAwNDEsIDB4MDA2MSwgMHgwMDQxLCAweDAwNjEsIDB4MDA0MywgMHgwMDYzLA0KKyAgICAweDAwNDMsIDB4MDA2MywgMHgwMDQzLCAweDAwNjMsIDB4MDA0MywgMHgwMDYzLCAweDAwNDQsIDB4MDA2NCwgMHgwMDQ0LCAweDAwNjQsIDB4MDA0NSwgMHgwMDY1LCAweDAwNDUsIDB4MDA2NSwgMHgwMDQ1LCAweDAwNjUsDQorICAgIDB4MDA0NSwgMHgwMDY1LCAweDAwNDUsIDB4MDA2NSwgMHgwMDQ3LCAweDAwNjcsIDB4MDA0NywgMHgwMDY3LCAweDAwNDcsIDB4MDA2NywgMHgwMDQ3LCAweDAwNjcsIDB4MDA0OCwgMHgwMDY4LCAweDAwNDgsIDB4MDA2OCwNCisgICAgMHgwMDQ5LCAweDAwNjksIDB4MDA0OSwgMHgwMDY5LCAweDAwNDksIDB4MDA2OSwgMHgwMDQ5LCAweDAwNjksIDB4MDA0OSwgMHgwMDRBLCAweDAwNkEsIDB4MDA0QiwgMHgwMDZCLCAweDAwNEIsIDB4MDA0QywgMHgwMDZDLA0KKyAgICAweDAwNEMsIDB4MDA2QywgMHgwMDRDLCAweDAwNkMsIDB4MDA0QywgMHgwMDZDLCAweDAwNEMsIDB4MDA2QywgMHgwMDRFLCAweDAwNkUsIDB4MDA0RSwgMHgwMDZFLCAweDAwNEUsIDB4MDA2RSwgMHgwMDZFLCAweDAwNEYsDQorICAgIDB4MDA2RiwgMHgwMDRGLCAweDAwNkYsIDB4MDA0RiwgMHgwMDZGLCAweDAwNTIsIDB4MDA3MiwgMHgwMDUyLCAweDAwNzIsIDB4MDA1MiwgMHgwMDcyLCAweDAwNTMsIDB4MDA3MywgMHgwMDUzLCAweDAwNzMsIDB4MDA1MywNCisgICAgMHgwMDczLCAweDAwNTMsIDB4MDA3MywgMHgwMDU0LCAweDAwNzQsIDB4MDA1NCwgMHgwMDc0LCAweDAwNTQsIDB4MDA3NCwgMHgwMDU1LCAweDAwNzUsIDB4MDA1NSwgMHgwMDc1LCAweDAwNTUsIDB4MDA3NSwgMHgwMDU1LA0KKyAgICAweDAwNzUsIDB4MDA1NSwgMHgwMDc1LCAweDAwNTUsIDB4MDA3NSwgMHgwMDU3LCAweDAwNzcsIDB4MDA1OSwgMHgwMDc5LCAweDAwNTksIDB4MDA1QSwgMHgwMDdBLCAweDAwNUEsIDB4MDA3QSwgMHgwMDVBLCAweDAwN0EsDQorICAgIDB4MDA3MywgMHgwMDYyLCAweDAwNDIsIDB4MDA0MiwgMHgwMDYyLCAweDAwNDMsIDB4MDA2MywgMHgwMDQ0LCAweDAwNDQsIDB4MDA0NCwgMHgwMDY0LCAweDAwNDUsIDB4MDA0NSwgMHgwMDQ2LCAweDAwNjYsIDB4MDA0NywNCisgICAgMHgwMDQ5LCAweDAwNEIsIDB4MDA2QiwgMHgwMDZDLCAweDAwNEQsIDB4MDA0RSwgMHgwMDZFLCAweDAwNEYsIDB4MDA0RiwgMHgwMDZGLCAweDAwNTAsIDB4MDA3MCwgMHgwMjgzLCAweDAwNzQsIDB4MDA1NCwgMHgwMDc0LA0KKyAgICAweDAwNTQsIDB4MDA1NSwgMHgwMDc1LCAweDAwNTYsIDB4MDA1OSwgMHgwMDc5LCAweDAwNUEsIDB4MDA3QSwgMHgwMUI3LCAweDAwNDEsIDB4MDA2MSwgMHgwMDQ5LCAweDAwNjksIDB4MDA0RiwgMHgwMDZGLCAweDAwNTUsDQorICAgIDB4MDA3NSwgMHgwMERDLCAweDAwRkMsIDB4MDBEQywgMHgwMEZDLCAweDAwREMsIDB4MDBGQywgMHgwMERDLCAweDAwRkMsIDB4MDA2NSwgMHgwMDQxLCAweDAwNjEsIDB4MDA0MSwgMHgwMDYxLCAweDAwQzYsIDB4MDBFNiwNCisgICAgMHgwMDQ3LCAweDAwNjcsIDB4MDA0NywgMHgwMDY3LCAweDAwNEIsIDB4MDA2QiwgMHgwMDRGLCAweDAwNkYsIDB4MDFFQSwgMHgwMUVCLCAweDAxQjcsIDB4MDI5MiwgMHgwMDZBLCAweDAwNDcsIDB4MDA2NywgMHgwMDRFLA0KKyAgICAweDAwNkUsIDB4MDA0MSwgMHgwMDYxLCAweDAwQzYsIDB4MDBFNiwgMHgwMEQ4LCAweDAwRjgsIDB4MDA0MSwgMHgwMDYxLCAweDAwNDEsIDB4MDA2MSwgMHgwMDQ1LCAweDAwNjUsIDB4MDA0NSwgMHgwMDY1LCAweDAwNDksDQorICAgIDB4MDA2OSwgMHgwMDQ5LCAweDAwNjksIDB4MDA0RiwgMHgwMDZGLCAweDAwNEYsIDB4MDA2RiwgMHgwMDUyLCAweDAwNzIsIDB4MDA1MiwgMHgwMDcyLCAweDAwNTUsIDB4MDA3NSwgMHgwMDU1LCAweDAwNzUsIDB4MDA1MywNCisgICAgMHgwMDczLCAweDAwNTQsIDB4MDA3NCwgMHgwMDQ4LCAweDAwNjgsIDB4MDA0RSwgMHgwMDY0LCAweDAwNUEsIDB4MDA3QSwgMHgwMDQxLCAweDAwNjEsIDB4MDA0NSwgMHgwMDY1LCAweDAwRDYsIDB4MDBGNiwgMHgwMEQ1LA0KKyAgICAweDAwRjUsIDB4MDA0RiwgMHgwMDZGLCAweDAyMkUsIDB4MDIyRiwgMHgwMDU5LCAweDAwNzksIDB4MDA2QywgMHgwMDZFLCAweDAwNzQsIDB4MDA2QSwgMHgwMDQxLCAweDAwNDMsIDB4MDA2MywgMHgwMDRDLCAweDAwNTQsDQorICAgIDB4MDA1MywgMHgwMDVBLCAweDAwNDIsIDB4MDA1NSwgMHgwMDU2LCAweDAwNDUsIDB4MDA2NSwgMHgwMDRBLCAweDAwNkEsIDB4MDA1MSwgMHgwMDcxLCAweDAwNTIsIDB4MDA3MiwgMHgwMDU5LCAweDAwNzksIDB4MDA2MSwNCisgICAgMHgwMjUxLCAweDAwNjIsIDB4MDA2RiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NCwgMHgwMDY1LCAweDAyNTksIDB4MDA2NSwgMHgwMDY1LCAweDAwNjUsIDB4MDA2NSwgMHgwMDZBLCAweDAwNjcsIDB4MDA2NywgMHgwMDQ3LA0KKyAgICAweDAwNjgsIDB4MDA2OCwgMHgwMDY5LCAweDAwNDksIDB4MDA2QywgMHgwMDZDLCAweDAwNkMsIDB4MDA2RCwgMHgwMDZELCAweDAwNkQsIDB4MDA2RSwgMHgwMDZFLCAweDAwNkUsIDB4MDA2RiwgMHgwMDcyLCAweDAwNzIsDQorICAgIDB4MDA3MiwgMHgwMDcyLCAweDAwNzIsIDB4MDA3MiwgMHgwMDcyLCAweDAwNTIsIDB4MDA1MiwgMHgwMDczLCAweDAwNkEsIDB4MDI4MywgMHgwMjgzLCAweDAwNzQsIDB4MDA3NCwgMHgwMDU1LCAweDAwNzYsIDB4MDA3NiwNCisgICAgMHgwMDc3LCAweDAwNzksIDB4MDA1OSwgMHgwMDdBLCAweDAwN0EsIDB4MDI5MiwgMHgwMDQzLCAweDAwNDIsIDB4MDA2NSwgMHgwMDQ3LCAweDAwNDgsIDB4MDA2QSwgMHgwMDZCLCAweDAwNEMsIDB4MDA3MSwgMHgwMDY4LA0KKyAgICAweDAwNjgsIDB4MDA2OCwgMHgwMDY4LCAweDAwNkEsIDB4MDA3MiwgMHgwMjc5LCAweDAyN0IsIDB4MDI4MSwgMHgwMDc3LCAweDAwNzksIDB4MDI2MywgMHgwMDZDLCAweDAwNzMsIDB4MDA3OCwgMHgwMjk1LCAweDAzMDAsDQorICAgIDB4MDMwMSwgMHgwMzEzLCAweDAzMDgsIDB4MDA2MSwgMHgwMDY1LCAweDAwNjksIDB4MDA2RiwgMHgwMDc1LCAweDAwNjMsIDB4MDA2NCwgMHgwMDY4LCAweDAwNkQsIDB4MDA3MiwgMHgwMDc0LCAweDAwNzYsIDB4MDA3OCwNCisgICAgMHgwMkI5LCAweDAwM0IsIDB4MDAyMCwgMHgwMEE4LCAweDAzOTEsIDB4MDBCNywgMHgwMzk1LCAweDAzOTcsIDB4MDM5OSwgMHgwMzlGLCAweDAzQTUsIDB4MDNBOSwgMHgwM0NBLCAweDAzOTksIDB4MDNBNSwgMHgwM0IxLA0KKyAgICAweDAzQjUsIDB4MDNCNywgMHgwM0I5LCAweDAzQ0IsIDB4MDNCOSwgMHgwM0M1LCAweDAzQkYsIDB4MDNDNSwgMHgwM0M5LCAweDAzQjIsIDB4MDNCOCwgMHgwM0E1LCAweDAzRDIsIDB4MDNEMiwgMHgwM0M2LCAweDAzQzAsDQorICAgIDB4MDNCQSwgMHgwM0MxLCAweDAzQzIsIDB4MDM5OCwgMHgwM0I1LCAweDAzQTMsIDB4MDQxNSwgMHgwNDE1LCAweDA0MTMsIDB4MDQwNiwgMHgwNDFBLCAweDA0MTgsIDB4MDQyMywgMHgwNDE4LCAweDA0MzgsIDB4MDQzNSwNCisgICAgMHgwNDM1LCAweDA0MzMsIDB4MDQ1NiwgMHgwNDNBLCAweDA0MzgsIDB4MDQ0MywgMHgwNDY2LCAweDA0NjcsIDB4MDQ2QSwgMHgwNDZCLCAweDA0NzQsIDB4MDQ3NSwgMHgwNDYwLCAweDA0NjEsIDB4MDQxOSwgMHgwNDM5LA0KKyAgICAweDA0MjAsIDB4MDQ0MCwgMHgwNDEzLCAweDA0MzMsIDB4MDQxMywgMHgwNDMzLCAweDA0MTMsIDB4MDQzMywgMHgwNDE2LCAweDA0MzYsIDB4MDQxNywgMHgwNDM3LCAweDA0MUEsIDB4MDQzQSwgMHgwNDFBLCAweDA0M0EsDQorICAgIDB4MDQxQSwgMHgwNDNBLCAweDA0MUEsIDB4MDQzQSwgMHgwNDFELCAweDA0M0QsIDB4MDQxRiwgMHgwNDNGLCAweDA0MjEsIDB4MDQ0MSwgMHgwNDIyLCAweDA0NDIsIDB4MDRBRSwgMHgwNEFGLCAweDA0MjUsIDB4MDQ0NSwNCisgICAgMHgwNDI3LCAweDA0NDcsIDB4MDQyNywgMHgwNDQ3LCAweDA0MTYsIDB4MDQzNiwgMHgwNEJDLCAweDA0QkQsIDB4MDQxNiwgMHgwNDM2LCAweDA0MUEsIDB4MDQzQSwgMHgwNDFCLCAweDA0M0IsIDB4MDQxRCwgMHgwNDNELA0KKyAgICAweDA0MUQsIDB4MDQzRCwgMHgwNDFDLCAweDA0M0MsIDB4MDQxMCwgMHgwNDMwLCAweDA0MTAsIDB4MDQzMCwgMHgwNDE1LCAweDA0MzUsIDB4MDREOCwgMHgwNEQ5LCAweDA0MTYsIDB4MDQzNiwgMHgwNDE3LCAweDA0MzcsDQorICAgIDB4MDQxOCwgMHgwNDM4LCAweDA0MTgsIDB4MDQzOCwgMHgwNDFFLCAweDA0M0UsIDB4MDRFOCwgMHgwNEU5LCAweDA0MkQsIDB4MDQ0RCwgMHgwNDIzLCAweDA0NDMsIDB4MDQyMywgMHgwNDQzLCAweDA0MjMsIDB4MDQ0MywNCisgICAgMHgwNDI3LCAweDA0NDcsIDB4MDQxMywgMHgwNDMzLCAweDA0MkIsIDB4MDQ0QiwgMHgwNDEzLCAweDA0MzMsIDB4MDQyNSwgMHgwNDQ1LCAweDA0MjUsIDB4MDQ0NSwgMHgwNDE3LCAweDA0MzcsIDB4MDQxQiwgMHgwNDNCLA0KKyAgICAweDBGMEIsIDB4MTBEQywgMHgwMDQxLCAweDAwQzYsIDB4MDA0MiwgMHgwMDQyLCAweDAwNDQsIDB4MDA0NSwgMHgwMThFLCAweDAwNDcsIDB4MDA0OCwgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwgMHgwMDRDLCAweDAwNEQsDQorICAgIDB4MDA0RSwgMHgwMDRGLCAweDAyMjIsIDB4MDA1MCwgMHgwMDUyLCAweDAwNTQsIDB4MDA1NSwgMHgwMDU3LCAweDAwNjEsIDB4MDI1MCwgMHgwMjUxLCAweDFEMDIsIDB4MDA2MiwgMHgwMDY0LCAweDAwNjUsIDB4MDI1OSwNCisgICAgMHgwMjVCLCAweDAyNUMsIDB4MDA2NywgMHgwMDZCLCAweDAwNkQsIDB4MDE0QiwgMHgwMDZGLCAweDAyNTQsIDB4MUQxNiwgMHgxRDE3LCAweDAwNzAsIDB4MDA3NCwgMHgwMDc1LCAweDFEMUQsIDB4MDI2RiwgMHgwMDc2LA0KKyAgICAweDFEMjUsIDB4MDNCMiwgMHgwM0IzLCAweDAzQjQsIDB4MDNDNiwgMHgwM0M3LCAweDAwNjksIDB4MDA3MiwgMHgwMDc1LCAweDAwNzYsIDB4MDNCMiwgMHgwM0IzLCAweDAzQzEsIDB4MDNDNiwgMHgwM0M3LCAweDAwNjIsDQorICAgIDB4MDA2NCwgMHgwMDY2LCAweDAwNkQsIDB4MDA2RSwgMHgwMDcwLCAweDAwNzIsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3QSwgMHgwMDY3LCAweDA0M0QsIDB4MDA0QywgMHgwMDcwLCAweDAwNTUsIDB4MDI4QSwNCisgICAgMHgwMDYyLCAweDAwNjQsIDB4MDA2NiwgMHgwMDY3LCAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA3MCwgMHgwMDcyLCAweDAwNzMsIDB4MDI4MywgMHgwMDc2LCAweDAwNzgsIDB4MDA3QSwgMHgwMDYxLA0KKyAgICAweDAyNTEsIDB4MDA2NCwgMHgwMDY1LCAweDAwNjUsIDB4MDA2NSwgMHgwMDY1LCAweDAwNjksIDB4MDI4MywgMHgwMjUyLCAweDAwNjMsIDB4MDI1NSwgMHgwMEYwLCAweDAyNUMsIDB4MDA2NiwgMHgwMjVGLCAweDAyNjEsDQorICAgIDB4MDI2NSwgMHgwMjY4LCAweDAyNjksIDB4MDI2QSwgMHgxRDdCLCAweDAyOUQsIDB4MDI2RCwgMHgxRDg1LCAweDAyOUYsIDB4MDI3MSwgMHgwMjcwLCAweDAyNzIsIDB4MDI3MywgMHgwMjc0LCAweDAyNzUsIDB4MDI3OCwNCisgICAgMHgwMjgyLCAweDAyODMsIDB4MDFBQiwgMHgwMjg5LCAweDAyOEEsIDB4MUQxQywgMHgwMjhCLCAweDAyOEMsIDB4MDA3QSwgMHgwMjkwLCAweDAyOTEsIDB4MDI5MiwgMHgwM0I4LCAweDAwNDEsIDB4MDA2MSwgMHgwMDQyLA0KKyAgICAweDAwNjIsIDB4MDA0MiwgMHgwMDYyLCAweDAwNDIsIDB4MDA2MiwgMHgwMDQzLCAweDAwNjMsIDB4MDA0NCwgMHgwMDY0LCAweDAwNDQsIDB4MDA2NCwgMHgwMDQ0LCAweDAwNjQsIDB4MDA0NCwgMHgwMDY0LCAweDAwNDQsDQorICAgIDB4MDA2NCwgMHgwMDQ1LCAweDAwNjUsIDB4MDA0NSwgMHgwMDY1LCAweDAwNDUsIDB4MDA2NSwgMHgwMDQ1LCAweDAwNjUsIDB4MDIyOCwgMHgwMjI5LCAweDAwNDYsIDB4MDA2NiwgMHgwMDQ3LCAweDAwNjcsIDB4MDA0OCwNCisgICAgMHgwMDY4LCAweDAwNDgsIDB4MDA2OCwgMHgwMDQ4LCAweDAwNjgsIDB4MDA0OCwgMHgwMDY4LCAweDAwNDgsIDB4MDA2OCwgMHgwMDQ5LCAweDAwNjksIDB4MDBDRiwgMHgwMEVGLCAweDAwNEIsIDB4MDA2QiwgMHgwMDRCLA0KKyAgICAweDAwNkIsIDB4MDA0QiwgMHgwMDZCLCAweDAwNEMsIDB4MDA2QywgMHgwMDRDLCAweDAwNkMsIDB4MDA0QywgMHgwMDZDLCAweDAwNEMsIDB4MDA2QywgMHgwMDRELCAweDAwNkQsIDB4MDA0RCwgMHgwMDZELCAweDAwNEQsDQorICAgIDB4MDA2RCwgMHgwMDRFLCAweDAwNkUsIDB4MDA0RSwgMHgwMDZFLCAweDAwNEUsIDB4MDA2RSwgMHgwMDRFLCAweDAwNkUsIDB4MDBENSwgMHgwMEY1LCAweDAwRDUsIDB4MDBGNSwgMHgwMTRDLCAweDAxNEQsIDB4MDE0QywNCisgICAgMHgwMTRELCAweDAwNTAsIDB4MDA3MCwgMHgwMDUwLCAweDAwNzAsIDB4MDA1MiwgMHgwMDcyLCAweDAwNTIsIDB4MDA3MiwgMHgwMDUyLCAweDAwNzIsIDB4MDA1MiwgMHgwMDcyLCAweDAwNTMsIDB4MDA3MywgMHgwMDUzLA0KKyAgICAweDAwNzMsIDB4MDA1MywgMHgwMDczLCAweDAwNTMsIDB4MDA3MywgMHgwMDUzLCAweDAwNzMsIDB4MDA1NCwgMHgwMDc0LCAweDAwNTQsIDB4MDA3NCwgMHgwMDU0LCAweDAwNzQsIDB4MDA1NCwgMHgwMDc0LCAweDAwNTUsDQorICAgIDB4MDA3NSwgMHgwMDU1LCAweDAwNzUsIDB4MDA1NSwgMHgwMDc1LCAweDAxNjgsIDB4MDE2OSwgMHgwMTZBLCAweDAxNkIsIDB4MDA1NiwgMHgwMDc2LCAweDAwNTYsIDB4MDA3NiwgMHgwMDU3LCAweDAwNzcsIDB4MDA1NywNCisgICAgMHgwMDc3LCAweDAwNTcsIDB4MDA3NywgMHgwMDU3LCAweDAwNzcsIDB4MDA1NywgMHgwMDc3LCAweDAwNTgsIDB4MDA3OCwgMHgwMDU4LCAweDAwNzgsIDB4MDA1OSwgMHgwMDc5LCAweDAwNUEsIDB4MDA3QSwgMHgwMDVBLA0KKyAgICAweDAwN0EsIDB4MDA1QSwgMHgwMDdBLCAweDAwNjgsIDB4MDA3NCwgMHgwMDc3LCAweDAwNzksIDB4MDA2MSwgMHgwMTdGLCAweDAwNDEsIDB4MDA2MSwgMHgwMDQxLCAweDAwNjEsIDB4MDA0MSwgMHgwMDYxLCAweDAwNDEsDQorICAgIDB4MDA2MSwgMHgwMDQxLCAweDAwNjEsIDB4MDA0MSwgMHgwMDYxLCAweDAwNDEsIDB4MDA2MSwgMHgwMDQxLCAweDAwNjEsIDB4MDA0MSwgMHgwMDYxLCAweDAwNDEsIDB4MDA2MSwgMHgwMDQxLCAweDAwNjEsIDB4MDA0MSwNCisgICAgMHgwMDYxLCAweDAwNDUsIDB4MDA2NSwgMHgwMDQ1LCAweDAwNjUsIDB4MDA0NSwgMHgwMDY1LCAweDAwNDUsIDB4MDA2NSwgMHgwMDQ1LCAweDAwNjUsIDB4MDA0NSwgMHgwMDY1LCAweDAwNDUsIDB4MDA2NSwgMHgwMDQ1LA0KKyAgICAweDAwNjUsIDB4MDA0OSwgMHgwMDY5LCAweDAwNDksIDB4MDA2OSwgMHgwMDRGLCAweDAwNkYsIDB4MDA0RiwgMHgwMDZGLCAweDAwNEYsIDB4MDA2RiwgMHgwMDRGLCAweDAwNkYsIDB4MDA0RiwgMHgwMDZGLCAweDAwNEYsDQorICAgIDB4MDA2RiwgMHgwMDRGLCAweDAwNkYsIDB4MDA0RiwgMHgwMDZGLCAweDAwNEYsIDB4MDA2RiwgMHgwMDRGLCAweDAwNkYsIDB4MDA0RiwgMHgwMDZGLCAweDAwNEYsIDB4MDA2RiwgMHgwMDU1LCAweDAwNzUsIDB4MDA1NSwNCisgICAgMHgwMDc1LCAweDAwNTUsIDB4MDA3NSwgMHgwMDU1LCAweDAwNzUsIDB4MDA1NSwgMHgwMDc1LCAweDAwNTUsIDB4MDA3NSwgMHgwMDU1LCAweDAwNzUsIDB4MDA1OSwgMHgwMDc5LCAweDAwNTksIDB4MDA3OSwgMHgwMDU5LA0KKyAgICAweDAwNzksIDB4MDA1OSwgMHgwMDc5LCAweDAzQjEsIDB4MDNCMSwgMHgwM0IxLCAweDAzQjEsIDB4MDNCMSwgMHgwM0IxLCAweDAzQjEsIDB4MDNCMSwgMHgwMzkxLCAweDAzOTEsIDB4MDM5MSwgMHgwMzkxLCAweDAzOTEsDQorICAgIDB4MDM5MSwgMHgwMzkxLCAweDAzOTEsIDB4MDNCNSwgMHgwM0I1LCAweDAzQjUsIDB4MDNCNSwgMHgwM0I1LCAweDAzQjUsIDB4MDM5NSwgMHgwMzk1LCAweDAzOTUsIDB4MDM5NSwgMHgwMzk1LCAweDAzOTUsIDB4MDNCNywNCisgICAgMHgwM0I3LCAweDAzQjcsIDB4MDNCNywgMHgwM0I3LCAweDAzQjcsIDB4MDNCNywgMHgwM0I3LCAweDAzOTcsIDB4MDM5NywgMHgwMzk3LCAweDAzOTcsIDB4MDM5NywgMHgwMzk3LCAweDAzOTcsIDB4MDM5NywgMHgwM0I5LA0KKyAgICAweDAzQjksIDB4MDNCOSwgMHgwM0I5LCAweDAzQjksIDB4MDNCOSwgMHgwM0I5LCAweDAzQjksIDB4MDM5OSwgMHgwMzk5LCAweDAzOTksIDB4MDM5OSwgMHgwMzk5LCAweDAzOTksIDB4MDM5OSwgMHgwMzk5LCAweDAzQkYsDQorICAgIDB4MDNCRiwgMHgwM0JGLCAweDAzQkYsIDB4MDNCRiwgMHgwM0JGLCAweDAzOUYsIDB4MDM5RiwgMHgwMzlGLCAweDAzOUYsIDB4MDM5RiwgMHgwMzlGLCAweDAzQzUsIDB4MDNDNSwgMHgwM0M1LCAweDAzQzUsIDB4MDNDNSwNCisgICAgMHgwM0M1LCAweDAzQzUsIDB4MDNDNSwgMHgwM0E1LCAweDAzQTUsIDB4MDNBNSwgMHgwM0E1LCAweDAzQzksIDB4MDNDOSwgMHgwM0M5LCAweDAzQzksIDB4MDNDOSwgMHgwM0M5LCAweDAzQzksIDB4MDNDOSwgMHgwM0E5LA0KKyAgICAweDAzQTksIDB4MDNBOSwgMHgwM0E5LCAweDAzQTksIDB4MDNBOSwgMHgwM0E5LCAweDAzQTksIDB4MDNCMSwgMHgwM0IxLCAweDAzQjUsIDB4MDNCNSwgMHgwM0I3LCAweDAzQjcsIDB4MDNCOSwgMHgwM0I5LCAweDAzQkYsDQorICAgIDB4MDNCRiwgMHgwM0M1LCAweDAzQzUsIDB4MDNDOSwgMHgwM0M5LCAweDAzQjEsIDB4MDNCMSwgMHgwM0IxLCAweDAzQjEsIDB4MDNCMSwgMHgwM0IxLCAweDAzQjEsIDB4MDNCMSwgMHgwMzkxLCAweDAzOTEsIDB4MDM5MSwNCisgICAgMHgwMzkxLCAweDAzOTEsIDB4MDM5MSwgMHgwMzkxLCAweDAzOTEsIDB4MDNCNywgMHgwM0I3LCAweDAzQjcsIDB4MDNCNywgMHgwM0I3LCAweDAzQjcsIDB4MDNCNywgMHgwM0I3LCAweDAzOTcsIDB4MDM5NywgMHgwMzk3LA0KKyAgICAweDAzOTcsIDB4MDM5NywgMHgwMzk3LCAweDAzOTcsIDB4MDM5NywgMHgwM0M5LCAweDAzQzksIDB4MDNDOSwgMHgwM0M5LCAweDAzQzksIDB4MDNDOSwgMHgwM0M5LCAweDAzQzksIDB4MDNBOSwgMHgwM0E5LCAweDAzQTksDQorICAgIDB4MDNBOSwgMHgwM0E5LCAweDAzQTksIDB4MDNBOSwgMHgwM0E5LCAweDAzQjEsIDB4MDNCMSwgMHgwM0IxLCAweDAzQjEsIDB4MDNCMSwgMHgwM0IxLCAweDAzQjEsIDB4MDM5MSwgMHgwMzkxLCAweDAzOTEsIDB4MDM5MSwNCisgICAgMHgwMzkxLCAweDAzQjcsIDB4MDNCNywgMHgwM0I3LCAweDAzQjcsIDB4MDNCNywgMHgwMzk1LCAweDAzOTUsIDB4MDM5NywgMHgwMzk3LCAweDAzOTcsIDB4MDNCOSwgMHgwM0I5LCAweDAzQjksIDB4MDNCOSwgMHgwM0I5LA0KKyAgICAweDAzQjksIDB4MDM5OSwgMHgwMzk5LCAweDAzOTksIDB4MDM5OSwgMHgwM0M1LCAweDAzQzUsIDB4MDNDNSwgMHgwM0M1LCAweDAzQzEsIDB4MDNDMSwgMHgwM0M1LCAweDAzQzUsIDB4MDNBNSwgMHgwM0E1LCAweDAzQTUsDQorICAgIDB4MDNBNSwgMHgwM0ExLCAweDAzQzksIDB4MDNDOSwgMHgwM0M5LCAweDAzQzksIDB4MDNDOSwgMHgwMzlGLCAweDAzOUYsIDB4MDNBOSwgMHgwM0E5LCAweDAzQTksIDB4MDBCNCwgMHgwMzE0LCAweDAwMjAsIDB4MDAyMCwNCisgICAgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgyMDEwLCAweDAzMzMsIDB4MDAyRSwgMHgwMDIwLCAweDAwMjAsIDB4MDAzMCwgMHgwMDY5LA0KKyAgICAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwMkIsIDB4MjIxMiwgMHgwMDNELCAweDAwMjgsIDB4MDAyOSwgMHgwMDZFLCAweDAwMzAsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzMsDQorICAgIDB4MDAzNCwgMHgwMDM1LCAweDAwMzYsIDB4MDAzNywgMHgwMDM4LCAweDAwMzksIDB4MDAyQiwgMHgyMjEyLCAweDAwM0QsIDB4MDAyOCwgMHgwMDI5LCAweDAwNjEsIDB4MDA2NSwgMHgwMDZGLCAweDAwNzgsIDB4MDI1OSwNCisgICAgMHgwMDQzLCAweDAxOTAsIDB4MDA2NywgMHgwMDQ4LCAweDAwNDgsIDB4MDA0OCwgMHgwMDY4LCAweDAwNjgsIDB4MDA0OSwgMHgwMDQ5LCAweDAwNEMsIDB4MDA2QywgMHgwMDRFLCAweDAwNTAsIDB4MDA1MSwgMHgwMDUyLA0KKyAgICAweDAwNTIsIDB4MDA1MiwgMHgwMDUyLCAweDAwNTIsIDB4MDA1NiwgMHgwMDVBLCAweDAzQTksIDB4MDFCMSwgMHgwMDVBLCAweDAwNEIsIDB4MDBDNSwgMHgwMDQyLCAweDAwNDMsIDB4MDA2NSwgMHgwMDY1LCAweDAwNDUsDQorICAgIDB4MDA0NiwgMHgwMDRELCAweDAwNkYsIDB4MDVEMCwgMHgwNUQxLCAweDA1RDIsIDB4MDVEMywgMHgwMDY5LCAweDAzQzAsIDB4MDNCMywgMHgwMzkzLCAweDAzQTAsIDB4MjIxMSwgMHgwMDQ0LCAweDAwNjQsIDB4MDA2NSwNCisgICAgMHgwMDY5LCAweDAwNkEsIDB4MDA0OSwgMHgwMDU2LCAweDAwNTgsIDB4MDA0QywgMHgwMDQzLCAweDAwNDQsIDB4MDA0RCwgMHgwMDY5LCAweDAwNzYsIDB4MDA3OCwgMHgwMDZDLCAweDAwNjMsIDB4MDA2NCwgMHgwMDZELA0KKyAgICAweDIyMDMsIDB4MjIwOCwgMHgyMjBCLCAweDMwMDgsIDB4MzAwOSwgMHgwMDYyLCAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwNDEsDQorICAgIDB4MDA0MiwgMHgwMDQzLCAweDAwNDQsIDB4MDA0NSwgMHgwMDQ2LCAweDAwNDcsIDB4MDA0OCwgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwgMHgwMDRDLCAweDAwNEQsIDB4MDA0RSwgMHgwMDRGLCAweDAwNTAsIDB4MDA1MSwNCisgICAgMHgwMDUyLCAweDAwNTMsIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywgMHgwMDU4LCAweDAwNTksIDB4MDA1QSwgMHgwMDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LA0KKyAgICAweDAwNjgsIDB4MDA2OSwgMHgwMDZBLCAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwgMHgwMDcwLCAweDAwNzEsIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsDQorICAgIDB4MDA3OCwgMHgwMDc5LCAweDAwN0EsIDB4MDAzMCwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgsIDB4MDAzOSwgMHgwMDMwLCAweDAwMzEsIDB4MDAzMiwNCisgICAgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LA0KKyAgICAweDAwMzEsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzQsIDB4MDAzNSwgMHgwMDM2LCAweDAwMzcsIDB4MDAzOCwgMHgwMDM5LCAweDAwNEMsIDB4MDA2QywgMHgwMDRDLCAweDAwNTAsIDB4MDA1MiwgMHgwMDYxLCAweDAwNzQsDQorICAgIDB4MDA0OCwgMHgwMDY4LCAweDAwNEIsIDB4MDA2QiwgMHgwMDVBLCAweDAwN0EsIDB4MDA3NiwgMHgwMDU3LCAweDAwNTgsIDB4MDA3NiwgMHgwMDZBLCAweDAwNTYsIDB4MkQ2MSwgMHg2QkNELCAweDZDMTEsIDB4ODY0RSwNCisgICAgMHg4OTdGLCAweDg5RDIsIDB4OTU3RiwgMHg5NzUyLCAweDk4REYsIDB4OUFBOCwgMHg5QjNDLCAweDlFQTYsIDB4OUVDNCwgMHg5RjlGLCAweDRFMDAsIDB4NEUyOCwgMHg0RTM2LCAweDRFM0YsIDB4NEU1OSwgMHg0RTg1LA0KKyAgICAweDRFOEMsIDB4NEVBMCwgMHg0RUJBLCAweDUxM0YsIDB4NTE2NSwgMHg1MTZCLCAweDUxODIsIDB4NTE5NiwgMHg1MUFCLCAweDUxRTAsIDB4NTFGNSwgMHg1MjAwLCAweDUyOUIsIDB4NTJGOSwgMHg1MzE1LCAweDUzMUEsDQorICAgIDB4NTMzOCwgMHg1MzQxLCAweDUzNUMsIDB4NTM2OSwgMHg1MzgyLCAweDUzQjYsIDB4NTNDOCwgMHg1M0UzLCAweDU2RDcsIDB4NTcxRiwgMHg1OEVCLCAweDU5MDIsIDB4NTkwQSwgMHg1OTE1LCAweDU5MjcsIDB4NTk3MywNCisgICAgMHg1QjUwLCAweDVCODAsIDB4NUJGOCwgMHg1QzBGLCAweDVDMjIsIDB4NUMzOCwgMHg1QzZFLCAweDVDNzEsIDB4NUREQiwgMHg1REU1LCAweDVERjEsIDB4NURGRSwgMHg1RTcyLCAweDVFN0EsIDB4NUU3RiwgMHg1RUY0LA0KKyAgICAweDVFRkUsIDB4NUYwQiwgMHg1RjEzLCAweDVGNTAsIDB4NUY2MSwgMHg1RjczLCAweDVGQzMsIDB4NjIwOCwgMHg2MjM2LCAweDYyNEIsIDB4NjUyRiwgMHg2NTM0LCAweDY1ODcsIDB4NjU5NywgMHg2NUE0LCAweDY1QjksDQorICAgIDB4NjVFMCwgMHg2NUU1LCAweDY2RjAsIDB4NjcwOCwgMHg2NzI4LCAweDZCMjAsIDB4NkI2MiwgMHg2Qjc5LCAweDZCQjMsIDB4NkJDQiwgMHg2QkQ0LCAweDZCREIsIDB4NkMwRiwgMHg2QzE0LCAweDZDMzQsIDB4NzA2QiwNCisgICAgMHg3MjJBLCAweDcyMzYsIDB4NzIzQiwgMHg3MjNGLCAweDcyNDcsIDB4NzI1OSwgMHg3MjVCLCAweDcyQUMsIDB4NzM4NCwgMHg3Mzg5LCAweDc0REMsIDB4NzRFNiwgMHg3NTE4LCAweDc1MUYsIDB4NzUyOCwgMHg3NTMwLA0KKyAgICAweDc1OEIsIDB4NzU5MiwgMHg3Njc2LCAweDc2N0QsIDB4NzZBRSwgMHg3NkJGLCAweDc2RUUsIDB4NzdEQiwgMHg3N0UyLCAweDc3RjMsIDB4NzkzQSwgMHg3OUI4LCAweDc5QkUsIDB4N0E3NCwgMHg3QUNCLCAweDdBRjksDQorICAgIDB4N0M3MywgMHg3Q0Y4LCAweDdGMzYsIDB4N0Y1MSwgMHg3RjhBLCAweDdGQkQsIDB4ODAwMSwgMHg4MDBDLCAweDgwMTIsIDB4ODAzMywgMHg4MDdGLCAweDgwODksIDB4ODFFMywgMHg4MUVBLCAweDgxRjMsIDB4ODFGQywNCisgICAgMHg4MjBDLCAweDgyMUIsIDB4ODIxRiwgMHg4MjZFLCAweDgyNzIsIDB4ODI3OCwgMHg4NjRELCAweDg2NkIsIDB4ODg0MCwgMHg4ODRDLCAweDg4NjMsIDB4ODk3RSwgMHg4OThCLCAweDg5RDIsIDB4OEEwMCwgMHg4QzM3LA0KKyAgICAweDhDNDYsIDB4OEM1NSwgMHg4Qzc4LCAweDhDOUQsIDB4OEQ2NCwgMHg4RDcwLCAweDhEQjMsIDB4OEVBQiwgMHg4RUNBLCAweDhGOUIsIDB4OEZCMCwgMHg4RkI1LCAweDkwOTEsIDB4OTE0OSwgMHg5MUM2LCAweDkxQ0MsDQorICAgIDB4OTFEMSwgMHg5NTc3LCAweDk1ODAsIDB4OTYxQywgMHg5NkI2LCAweDk2QjksIDB4OTZFOCwgMHg5NzUxLCAweDk3NUUsIDB4OTc2MiwgMHg5NzY5LCAweDk3Q0IsIDB4OTdFRCwgMHg5N0YzLCAweDk4MDEsIDB4OThBOCwNCisgICAgMHg5OERCLCAweDk4REYsIDB4OTk5NiwgMHg5OTk5LCAweDk5QUMsIDB4OUFBOCwgMHg5QUQ4LCAweDlBREYsIDB4OUIyNSwgMHg5QjJGLCAweDlCMzIsIDB4OUIzQywgMHg5QjVBLCAweDlDRTUsIDB4OUU3NSwgMHg5RTdGLA0KKyAgICAweDlFQTUsIDB4OUVCQiwgMHg5RUMzLCAweDlFQ0QsIDB4OUVEMSwgMHg5RUY5LCAweDlFRkQsIDB4OUYwRSwgMHg5RjEzLCAweDlGMjAsIDB4OUYzQiwgMHg5RjRBLCAweDlGNTIsIDB4OUY4RCwgMHg5RjlDLCAweDlGQTAsDQorICAgIDB4MDAyMCwgMHgzMDEyLCAweDUzNDEsIDB4NTM0NCwgMHg1MzQ1LCAweDExMDAsIDB4MTEwMSwgMHgxMUFBLCAweDExMDIsIDB4MTFBQywgMHgxMUFELCAweDExMDMsIDB4MTEwNCwgMHgxMTA1LCAweDExQjAsIDB4MTFCMSwNCisgICAgMHgxMUIyLCAweDExQjMsIDB4MTFCNCwgMHgxMUI1LCAweDExMUEsIDB4MTEwNiwgMHgxMTA3LCAweDExMDgsIDB4MTEyMSwgMHgxMTA5LCAweDExMEEsIDB4MTEwQiwgMHgxMTBDLCAweDExMEQsIDB4MTEwRSwgMHgxMTBGLA0KKyAgICAweDExMTAsIDB4MTExMSwgMHgxMTEyLCAweDExNjEsIDB4MTE2MiwgMHgxMTYzLCAweDExNjQsIDB4MTE2NSwgMHgxMTY2LCAweDExNjcsIDB4MTE2OCwgMHgxMTY5LCAweDExNkEsIDB4MTE2QiwgMHgxMTZDLCAweDExNkQsDQorICAgIDB4MTE2RSwgMHgxMTZGLCAweDExNzAsIDB4MTE3MSwgMHgxMTcyLCAweDExNzMsIDB4MTE3NCwgMHgxMTc1LCAweDExNjAsIDB4MTExNCwgMHgxMTE1LCAweDExQzcsIDB4MTFDOCwgMHgxMUNDLCAweDExQ0UsIDB4MTFEMywNCisgICAgMHgxMUQ3LCAweDExRDksIDB4MTExQywgMHgxMURELCAweDExREYsIDB4MTExRCwgMHgxMTFFLCAweDExMjAsIDB4MTEyMiwgMHgxMTIzLCAweDExMjcsIDB4MTEyOSwgMHgxMTJCLCAweDExMkMsIDB4MTEyRCwgMHgxMTJFLA0KKyAgICAweDExMkYsIDB4MTEzMiwgMHgxMTM2LCAweDExNDAsIDB4MTE0NywgMHgxMTRDLCAweDExRjEsIDB4MTFGMiwgMHgxMTU3LCAweDExNTgsIDB4MTE1OSwgMHgxMTg0LCAweDExODUsIDB4MTE4OCwgMHgxMTkxLCAweDExOTIsDQorICAgIDB4MTE5NCwgMHgxMTlFLCAweDExQTEsIDB4NEUwMCwgMHg0RThDLCAweDRFMDksIDB4NTZEQiwgMHg0RTBBLCAweDRFMkQsIDB4NEUwQiwgMHg3NTMyLCAweDRFNTksIDB4NEUxOSwgMHg0RTAxLCAweDU5MjksIDB4NTczMCwNCisgICAgMHg0RUJBLCAweDU1NEYsIDB4NUU3QywgMHg2NTg3LCAweDdCOEYsIDB4MTEwMCwgMHgxMTAyLCAweDExMDMsIDB4MTEwNSwgMHgxMTA2LCAweDExMDcsIDB4MTEwOSwgMHgxMTBCLCAweDExMEMsIDB4MTEwRSwgMHgxMTBGLA0KKyAgICAweDExMTAsIDB4MTExMSwgMHgxMTEyLCAweDRFMDAsIDB4NEU4QywgMHg0RTA5LCAweDU2REIsIDB4NEU5NCwgMHg1MTZELCAweDRFMDMsIDB4NTE2QiwgMHg0RTVELCAweDUzNDEsIDB4NjcwOCwgMHg3MDZCLCAweDZDMzQsDQorICAgIDB4NjcyOCwgMHg5MUQxLCAweDU3MUYsIDB4NjVFNSwgMHg2ODJBLCAweDY3MDksIDB4NzkzRSwgMHg1NDBELCAweDcyNzksIDB4OENBMSwgMHg3OTVELCAweDUyQjQsIDB4NzlEOCwgMHg3NTM3LCAweDU5NzMsIDB4OTA2OSwNCisgICAgMHg1MTJBLCAweDUzNzAsIDB4NkNFOCwgMHg5ODA1LCAweDRGMTEsIDB4NTE5OSwgMHg2QjYzLCAweDRFMEEsIDB4NEUyRCwgMHg0RTBCLCAweDVERTYsIDB4NTNGMywgMHg1MzNCLCAweDVCOTcsIDB4NUI2NiwgMHg3NkUzLA0KKyAgICAweDRGMDEsIDB4OENDNywgMHg1MzU0LCAweDU5MUMsIDB4MzBBMiwgMHgzMEE0LCAweDMwQTYsIDB4MzBBOCwgMHgzMEFBLCAweDMwQUIsIDB4MzBBRCwgMHgzMEFGLCAweDMwQjEsIDB4MzBCMywgMHgzMEI1LCAweDMwQjcsDQorICAgIDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsIDB4MzBCRiwgMHgzMEMxLCAweDMwQzQsIDB4MzBDNiwgMHgzMEM4LCAweDMwQ0EsIDB4MzBDQiwgMHgzMENDLCAweDMwQ0QsIDB4MzBDRSwgMHgzMENGLCAweDMwRDIsIDB4MzBENSwNCisgICAgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwgMHgzMERGLCAweDMwRTAsIDB4MzBFMSwgMHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAweDMwRTksIDB4MzBFQSwgMHgzMEVCLCAweDMwRUMsIDB4MzBFRCwgMHgzMEVGLA0KKyAgICAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLCAweDRFMjIsIDB4NUU3NiwgMHg1RTdBLCAweDVFNzIsIDB4NEU3MSwgMHg0RTk4LCAweDRFOUEsIDB4NEYyQiwgMHg1RTAzLCAweDUzNjAsIDB4Njc2NSwgMHg0RkEzLCAweDRGRTMsDQorICAgIDB4N0NGQiwgMHg0RkEwLCAweDRGMjUsIDB4NEZFOSwgMHg0RUQzLCAweDRFMkEsIDB4NEVFQywgMHg0RjI2LCAweDRGMUYsIDB4NEZBNywgMHg0RkE2LCAweDRGMkEsIDB4Njc3MCwgMHg0RjI3LCAweDRGMUUsIDB4NTkwNywNCisgICAgMHg1QkI2LCAweDRGNjMsIDB4NTA2QywgMHg0RjIwLCAweDRGMUIsIDB4NTAzQSwgMHg0RjI0LCAweDUwM0UsIDB4NTA3QiwgMHg0RUM1LCAweDRGNjUsIDB4NEZBOCwgMHg0RUM2LCAweDRGQTUsIDB4NTA3RSwgMHg5NkM3LA0KKyAgICAweDRFRjcsIDB4NEVFQSwgMHg0RkFDLCAweDRFQkYsIDB4NEZFRCwgMHg1MEE3LCAweDRGRTYsIDB4NEZBQSwgMHg1QzNELCAweDUwN0YsIDB4NEYxOCwgMHg1MEE4LCAweDRGRUEsIDB4NTBBOSwgMHg1MEE1LCAweDRGRTgsDQorICAgIDB4NTFGNiwgMHg1MTUxLCAweDUxM0YsIDB4NTE1NiwgMHg1MTg1LCAweDRFMjQsIDB4NTE4QywgMHg4MEM0LCAweDUxOTksIDB4NUU0MiwgMHg1MUJCLCAweDUxREIsIDB4NTFFRiwgMHg1MjJCLCAweDUyMjAsIDB4NTIyRCwNCisgICAgMHg1MjE5LCAweDUyMzksIDB4NTIxQSwgMHg1MjY1LCAweDUyNTAsIDB4NTI0MCwgMHg1MjFCLCAweDUyMkMsIDB4NTIxMiwgMHg1MjY3LCAweDUyMTgsIDB4NTIzRCwgMHg1MjNGLCAweDUyNTEsIDB4NTI0MiwgMHg1MkIyLA0KKyAgICAweDUyQTgsIDB4NTJENiwgMHg1MkExLCAweDgwREMsIDB4NTJCMywgMHg1MkJGLCAweDUyQTIsIDB4NTJDQiwgMHg1MkIxLCAweDUyOUQsIDB4NTMwMCwgMHg1MzI2LCAweDZDNDcsIDB4NTMyRSwgMHg1MzNBLCAweDUzNEYsDQorICAgIDB4NjA2NCwgMHg1Mzc0LCAweDUzOEQsIDB4NTM4QywgMHg1Mzg5LCAweDUzQTMsIDB4NTNDMiwgMHg0RTFCLCAweDU0QTQsIDB4NTQzNCwgMHg1NDUwLCAweDU0MTUsIDB4NTQ1OCwgMHg1NUIxLCAweDU0NTcsIDB4NUZGNSwNCisgICAgMHg5NUVFLCAweDU0RDEsIDB4NTQyRiwgMHg1NTI0LCAweDRFMjcsIDB4NEU1NCwgMHg1MzU1LCAweDU0REYsIDB4NTQ1QiwgMHg1NTZDLCAweDU1MUQsIDB4NTQxNywgMHg1NDVDLCAweDU1MjIsIDB4NTRENCwgMHg1M0Y5LA0KKyAgICAweDU1QkQsIDB4NTQ1NSwgMHg1NTY3LCAweDVDMUQsIDB4NTUxQiwgMHg1NEQ3LCAweDU1MjAsIDB4NTU3OCwgMHg1M0ZELCAweDU0RDMsIDB4NTQ1MiwgMHg1NTc0LCAweDYwNzYsIDB4NTYxOCwgMHg1NDlELCAweDU0RDIsDQorICAgIDB4NTRERCwgMHg1NEQ1LCAweDU1RjMsIDB4NTREOSwgMHg1NUI3LCAweDU0MjgsIDB4NTQ5QiwgMHg1NDEzLCAweDU0REMsIDB4NUMxRCwgMHg1NjVDLCAweDU1NkUsIDB4NTQ1NiwgMHg1NDk5LCAweDRFQjgsIDB4NTVCRSwNCisgICAgMHg0RTI1LCAweDU2MjQsIDB4NTU2RCwgMHg1NUVCLCAweDU2QTMsIDB4NTE4MSwgMHg1NDUzLCAweDU1NzAsIDB4NTYzMSwgMHg1NkYxLCAweDU2RjUsIDB4NTZGRCwgMHg1NkY0LCAweDU2RUQsIDB4NTcwNiwgMHg1NkZFLA0KKyAgICAweDU2RTIsIDB4NTdBRCwgMHg2MjY3LCAweDU3NUEsIDB4NTdBOSwgMHg1N0RBLCAweDVDMjcsIDB4NjJBNSwgMHg1NzNBLCAweDU3NTcsIDB4ODMxNCwgMHg1N0IyLCAweDU3RDgsIDB4NkQ4MiwgMHg1MUEyLCAweDU3NUUsDQorICAgIDB4NTdEOSwgMHg1QzE4LCAweDU4MTEsIDB4NTdBQiwgMHg1NzYwLCAweDU4MTUsIDB4NTc1RiwgMHg1N0E2LCAweDU3NUIsIDB4NTM4QiwgMHg1NzkyLCAweDU3MzksIDB4NTc4NiwgMHg1NzRGLCAweDU3ODUsIDB4NTc1QywNCisgICAgMHg1NzVELCAweDU4RUUsIDB4NThGNiwgMHg1OEY4LCAweDVCRkYsIDB4NTkxRiwgMHg2OEE2LCAweDRGMTksIDB4NTkzOSwgMHg1OTQyLCAweDU5NjUsIDB4NTk0MSwgMHg1OTNBLCAweDU5NEIsIDB4NTlGOSwgMHg1OTg2LA0KKyAgICAweDU5RDcsIDB4NTk3OCwgMHg1QTMxLCAweDVBMDQsIDB4NTk4NywgMHg1QTA1LCAweDVBMzIsIDB4NTlBQiwgMHg1QUFBLCAweDU5ODgsIDB4NTlBQSwgMHg1OUE5LCAweDVBMzQsIDB4NUE3MywgMHg1QTA2LCAweDVBNzUsDQorICAgIDB4NUEwNywgMHg1QUYxLCAweDVBRDIsIDB4NUIzNywgMHg1QUQ0LCAweDVBNzQsIDB4NUE3NiwgMHg1QTA4LCAweDVCNTksIDB4NUI2NiwgMHg1QjZBLCAweDVCQUIsIDB4NUJERCwgMHg1QjlFLCAweDVCODEsIDB4NUJBMSwNCisgICAgMHg1MTk5LCAweDVCQkQsIDB4NUJBMCwgMHg1QjlELCAweDVDMDYsIDB4NEUxMywgMHg1QkZCLCAweDVCRjksIDB4NUJGQywgMHg1QzM0LCAweDVDNEEsIDB4NUMzOCwgMHg1QzQ5LCAweDVDNjEsIDB4NUM0MiwgMHg1QzVGLA0KKyAgICAweDVDNjYsIDB4NUM1RSwgMHg1MTg4LCAweDVDOTgsIDB4NUM5QiwgMHg1Q0UxLCAweDVEMDMsIDB4NUM5NywgMHg0RUQxLCAweDVDRTUsIDB4NUM5QSwgMHg1RDVELCAweDVEMkQsIDB4NUM5NiwgMHg1RDVBLCAweDVEMDIsDQorICAgIDB4NUNFNCwgMHg1Q0UzLCAweDVDQzQsIDB4NUQwNCwgMHg1Qzk5LCAweDVENTgsIDB4NUNBRCwgMHg1QzdGLCAweDVDQjMsIDB4NUNCRiwgMHg1Q0U2LCAweDVEQzUsIDB4NURFRiwgMHg1RTA1LCAweDVFMDgsIDB4NUUxMCwNCisgICAgMHg1RTI2LCAweDVFMjcsIDB4NUUwRiwgMHg1RTNDLCAweDVFM0IsIDB4NUUxQywgMHg1RTAxLCAweDVFMkUsIDB4NUUzMSwgMHg1RTcyLCAweDUxRTAsIDB4NUU5MywgMHg1Mzk1LCAweDUzQTIsIDB4NTNBNiwgMHg1M0E4LA0KKyAgICAweDUzQUUsIDB4NUU5OSwgMHg1MzgyLCAweDVFOTEsIDB4NUU5RiwgMHg1RTdGLCAweDVFRUEsIDB4NUU5MCwgMHg1Mzg1LCAweDVGMTEsIDB4NUYyQSwgMHg1RjIwLCAweDVGM0EsIDB4NUYzOSwgMHg1RjI1LCAweDVGMkYsDQorICAgIDB4NUY2NiwgMHg1NDBFLCAweDVGODQsIDB4NEVDRSwgMHg1Rjk1LCAweDU5MEQsIDB4NUY4MSwgMHg1RjdCLCAweDYwNTIsIDB4ODAzQiwgMHg2MEE2LCAweDYwMDUsIDB4OTVGNywgMHg2MDc2LCAweDYwN0MsIDB4NjA3RCwNCisgICAgMHg2MDdCLCAweDcyMzEsIDB4NjBFQywgMHg2MEFCLCAweDYwMDYsIDB4NjA3QSwgMHg1RkZFLCAweDYwMDEsIDB4NjEyMCwgMHg2MEU4LCAweDYwRUQsIDB4NjA3OCwgMHg2MEVGLCAweDYwMDQsIDB4NjAwMiwgMHg4NjUxLA0KKyAgICAweDYwQUQsIDB4NUU4NiwgMHg1RkU3LCAweDYwRUIsIDB4NjAxQywgMHg1MUVELCAweDYxMjYsIDB4NjE2RCwgMHg2MEVFLCAweDYxMjQsIDB4NjBBRiwgMHg2MDAzLCAweDVCQUEsIDB4NUZDNiwgMHg2MDczLCAweDVFOTQsDQorICAgIDB4NjAzRiwgMHg2MUQ0LCAweDYwM0MsIDB4NjFEMSwgMHg2MDc5LCAweDYwRTksIDB4NjFEMiwgMHg2MDAwLCAweDYwQUMsIDB4NUZDRiwgMHg2MEU3LCAweDYxNTEsIDB4NjA0QiwgMHg2MjA2LCAweDYyMEIsIDB4NjIxNywNCisgICAgMHg2MjJDLCAweDYyMTgsIDB4NjIwRiwgMHg2MjM3LCAweDYyOUIsIDB4NjMxRiwgMHg4MjBELCAweDYyNkEsIDB4NTM3NywgMHg2MjZCLCAweDYyQTEsIDB4NjMyMywgMHg2MzAyLCAweDkxQzcsIDB4NjJFMywgMHg2MjZDLA0KKyAgICAweDYzNjIsIDB4NjMyNSwgMHg2MzVGLCAweDY0NDcsIDB4NjM2MywgMHg2MkEyLCAweDYzQjQsIDB4NjNCQywgMHg2NDAyLCAweDYzMUEsIDB4NjJBMCwgMHg2MjlGLCAweDYzQkEsIDB4NjM1RSwgMHg2NDkxLCAweDYzMjAsDQorICAgIDB4NjMyMiwgMHg2M0I4LCAweDYyRTgsIDB4NjI5QSwgMHg2MjUxLCAweDYzRkYsIDB4NjMxRSwgMHg2MzFELCAweDYzNjEsIDB4NjJFNSwgMHg2M0IzLCAweDYyRTksIDB4NTFGQiwgMHg2MzIxLCAweDYyQzUsIDB4NjM2RSwNCisgICAgMHg2MzI0LCAweDYyREYsIDB4NjQ0OCwgMHg2MkU3LCAweDY0MDEsIDB4NjNCNywgMHg2MjY5LCAweDY0QjcsIDB4NjQ0NiwgMHg2NERFLCAweDY0QjgsIDB4NjI3MCwgMHg2NDQ1LCAweDY0QjUsIDB4NjJFMiwgMHg2MkU2LA0KKyAgICAweDY0ODQsIDB4NjQwMCwgMHg2NEJBLCAweDY0M0EsIDB4NjQ0NCwgMHg2NTEyLCAweDYzMUIsIDB4NjQ0QSwgMHg2NDA1LCAweDYzRkQsIDB4NjY4QiwgMHg4RDI1LCAweDUzRDksIDB4NjU0QywgMHg2NTcwLCAweDY1NUIsDQorICAgIDB4NkJEOSwgMHg2NTkzLCAweDY1QTksIDB4NjVBRCwgMHg0RThFLCAweDUzNDcsIDB4NjVGNiwgMHg2NjRCLCAweDY2M0MsIDB4NjY1NSwgMHg2NjU2LCAweDY1RjgsIDB4NzU0NSwgMHg2NjgyLCAweDY2MzUsIDB4NjY1NCwNCisgICAgMHg1Mzg2LCAweDY2MTksIDB4NjY1MywgMHg2NkE3LCAweDY1RjcsIDB4NjYzRCwgMHg2NjUyLCAweDRFNjYsIDB4NEYxQSwgMHg4MEU3LCAweDRFMUMsIDB4NjgwNSwgMHg2NzQ2LCAweDY4MDAsIDB4NjdBNywgMHg2NzYxLA0KKyAgICAweDY3QUQsIDB4NUYwMywgMHg2N0E4LCAweDY3QTMsIDB4NjgwQiwgMHg2ODA4LCAweDY4MTYsIDB4Njg2MCwgMHg2NzY4LCAweDY3QUIsIDB4Njg2MiwgMHg0RTFBLCAweDY3ODEsIDB4Njc2OSwgMHg4MzYzLCAweDY4NjQsDQorICAgIDB4Njc4NCwgMHg2N0FBLCAweDY3NjAsIDB4NjhCRiwgMHg2OTIwLCAweDY5MDEsIDB4Njg2OCwgMHg2ODY5LCAweDRFNTAsIDB4Njc5RSwgMHg2OTdDLCAweDY4MDcsIDB4NjdBMiwgMHg2ODM3LCAweDY3MzQsIDB4NjgxMSwNCisgICAgMHg2ODY2LCAweDY4NjEsIDB4Njg2NSwgMHg2NzNBLCAweDY5MkQsIDB4NkEyQSwgMHg2QUE5LCAweDY5REMsIDB4NjdGRCwgMHg2ODYzLCAweDY4NjcsIDB4NjlEQSwgMHg2OEMwLCAweDZBMkYsIDB4NjhCQywgMHg1M0YwLA0KKyAgICAweDY5REYsIDB4NjdFMCwgMHg2OURCLCAweDgyRDgsIDB4NjdEQywgMHg2QTc5LCAweDY5ODgsIDB4NjgwOSwgMHg2OTFGLCAweDZBN0MsIDB4NjgwRSwgMHg2QTcxLCAweDY5RTAsIDB4NjgwQywgMHg2N0E1LCAweDZBNjUsDQorICAgIDB4Njk4NywgMHg2ODBBLCAweDY5ODksIDB4NjhDMiwgMHg2QTMxLCAweDY4MEYsIDB4Njc0MywgMHg2OTI0LCAweDY4M0UsIDB4Njk4NCwgMHg5NEE2LCAweDZCMjcsIDB4NkIyNCwgMHg2QjIyLCAweDVDODEsIDB4NTM4NiwNCisgICAgMHg1RjUyLCAweDZCODEsIDB4NkI4QiwgMHg2QjkyLCAweDZCODcsIDB4NkI5QSwgMHg2QjkzLCAweDZCQTEsIDB4NkI3QywgMHg2NzQwLCAweDU4RjMsIDB4NkJDMSwgMHg2QkI0LCAweDZCRjUsIDB4NkJFMSwgMHg2QzA3LA0KKyAgICAweDZDMTQsIDB4NkMyMiwgMHg2QzI5LCAweDZDMzIsIDB4NTFGQywgMHg1MUIzLCAweDUxQjEsIDB4NkNBMSwgMHg1MUI1LCAweDZDQzQsIDB4NkM3OSwgMHg2RDQzLCAweDZDRkUsIDB4NTFDOSwgMHg1MUM0LCAweDZDRUEsDQorICAgIDB4NkUwQywgMHg1MUMwLCAweDZDQTYsIDB4NkUwQSwgMHg2RDlFLCAweDZENDUsIDB4NkRBMywgMHg1MUNGLCAweDZDQTgsIDB4NkRBMSwgMHg2RDRCLCAweDZENTEsIDB4NTFEMSwgMHg2RDQ4LCAweDZEOEMsIDB4NkQwNywNCisgICAgMHg2QzY0LCAweDZDQTksIDB4NTFDNiwgMHg2QzlGLCAweDZFMjksIDB4NkRBMiwgMHg2RTdGLCAweDZDQTcsIDB4NzA2RCwgMHg2REE0LCAweDgzNjUsIDB4NkNBQSwgMHg2RURFLCAweDZFMTcsIDB4NkQ1MiwgMHg2RDUwLA0KKyAgICAweDZFREEsIDB4NkVFMSwgMHg2RTE0LCAweDZFODcsIDB4NkNBNCwgMHg2QzQ5LCAweDZEOUYsIDB4NkUwRCwgMHg2REE4LCAweDZFMTAsIDB4NkQ0NiwgMHg5ODhELCAweDZDRkMsIDB4NkQwMSwgMHg2RjVDLCAweDZEQTYsDQorICAgIDB4NkQ1NCwgMHg2RTgzLCAweDZEQTAsIDB4NkRBOSwgMHg2RDQ3LCAweDZEOUQsIDB4NkM4NCwgMHg2REE3LCAweDZFMTEsIDB4NkNGRCwgMHg2RUVBLCAweDZDRjYsIDB4NkQ0RCwgMHg2RDRBLCAweDZENTMsIDB4NkU3RiwNCisgICAgMHg2Q0RFLCAweDZENEUsIDB4NkQ5QiwgMHg2RUU1LCAweDZGNEQsIDB4NkVFOCwgMHg2RTg1LCAweDZDRkEsIDB4NkVFNCwgMHg2RUUyLCAweDZFMEUsIDB4NkNGQiwgMHg2RDRGLCAweDZGRDIsIDB4NkNGOCwgMHg2Q0E1LA0KKyAgICAweDZGNDcsIDB4NkY0NiwgMHg2Rjc0LCAweDZDRjcsIDB4NkZEMSwgMHg2RjRCLCAweDZGOUMsIDB4NkNBMywgMHg2RUUwLCAweDZEMTIsIDB4NkVFOSwgMHg3MDRGLCAweDZFN0UsIDB4NkVFNiwgMHg2RURGLCAweDcwN0UsDQorICAgIDB4NEUzQSwgMHg0RTRDLCAweDcwQzMsIDB4NjVFMCwgMHg3MEJDLCAweDcwOUMsIDB4NzBERiwgMHg4MzE1LCAweDcxMTUsIDB4NzBFNiwgMHg3MDgwLCAweDgzNjcsIDB4NzA5RCwgMHg3MEVELCAweDcwQkQsIDB4NzBFOCwNCisgICAgMHg3MDZGLCAweDcwOTYsIDB4NzBFNywgMHg3MEVCLCAweDcxMTYsIDB4ODQyNSwgMHg3MDdGLCAweDcwREIsIDB4NzBFOSwgMHg3MEVDLCAweDcxMTgsIDB4NzBDMSwgMHg3MDg5LCAweDcwQzIsIDB4NEU4OSwgMHg0RTNBLA0KKyAgICAweDcyMzcsIDB4NUMxNCwgMHg1ODk5LCAweDcyNEQsIDB4NzI3NSwgMHg4MzY2LCAweDcyNjYsIDB4NzI4QSwgMHg3MjdBLCAweDcyQjYsIDB4NzJFRCwgMHg3MkM4LCAweDcyRjAsIDB4NzJCOSwgMHg3MkYyLCAweDcyQjgsDQorICAgIDB4NzJGMSwgMHg3MkVFLCAweDU5NTYsIDB4NzJFQywgMHg3MkVGLCAweDczMDMsIDB4NzJERSwgMHg4M0I3LCAweDczMEUsIDB4NzJCNywgMHg1MTdELCAweDczNkQsIDB4NzMyRSwgMHg3MzE1LCAweDczMjEsIDB4NzNCMCwNCisgICAgMHg3M0QwLCAweDczRjIsIDB4NzNBRSwgMHg3MzlBLCAweDc0MTAsIDB4NzQ3NiwgMHg4M0I5LCAweDczOUIsIDB4NzQwNSwgMHg3M0IxLCAweDc0MEYsIDB4NzQwRSwgMHg3MzkxLCAweDc0NzcsIDB4NzNGMCwgMHg3M0FGLA0KKyAgICAweDczOTksIDB4NzNCQSwgMHg3NDNDLCAweDczRDEsIDB4NzQ4RSwgMHg3NEQyLCAweDc0RUYsIDB4NzRFRSwgMHg0RUE3LCAweDRFQTcsIDB4NEVBOSwgMHg2QkQ1LCAweDc1M0IsIDB4NzU3MiwgMHg1RjAyLCAweDVGNTMsDQorICAgIDB4NzU3NCwgMHg1M0UwLCAweDc1QzksIDB4OTE3OCwgMHg3NUY5LCAweDc1RDYsIDB4NzVBRiwgMHg3NUExLCAweDc1RUEsIDB4NzYxNywgMHg3NUFFLCAweDc1OUYsIDB4NzVBRCwgMHg3NjE4LCAweDc1OTcsIDB4NzVFOCwNCisgICAgMHg3NUVCLCAweDc2MDUsIDB4NzVBMCwgMHg3NjJBLCAweDc1RDIsIDB4NzU5NiwgMHg3NUFDLCAweDc2NUUsIDB4NzY2MywgMHg3NjNGLCAweDc2M0UsIDB4NzVDOCwgMHg3NjJCLCAweDc2NkIsIDB4NTNEMSwgMHg3NjkxLA0KKyAgICAweDc1QjEsIDB4NzZCMiwgMHg3NkIxLCAweDY3NkYsIDB4NzZENywgMHg3NkNGLCAweDVDM0QsIDB4NzZEMSwgMHg3NkQ4LCAweDUzNjIsIDB4ODM2MSwgMHg3NzI2LCAweDRGMTcsIDB4NTZGMCwgMHg3NzQxLCAweDc3NTAsDQorICAgIDB4NzcyRiwgMHg3NzkyLCAweDRFODYsIDB4Nzc4NiwgMHg3NzUxLCAweDc3MkMsIDB4NzdBOSwgMHg3N0VCLCAweDc4NDUsIDB4NzBBRSwgMHg3ODQxLCAweDc4NTYsIDB4NzgxNywgMHg3ODFBLCAweDc4NTUsIDB4NzgwMCwNCisgICAgMHg3ODZFLCAweDc4MDEsIDB4Nzg1OSwgMHg3ODE2LCAweDc4OUMsIDB4Nzg5QiwgMHg3N0Y2LCAweDc4NTcsIDB4Nzg1QSwgMHg3ODQwLCAweDc4OEQsIDB4NzdGRiwgMHg3ODNBLCAweDc4M0UsIDB4NzdGRSwgMHg3ODNCLA0KKyAgICAweDc5ODQsIDB4Nzk3OCwgMHg3OTZGLCAweDc5NEUsIDB4NUZBMSwgMHg3OTg1LCAweDc5M0MsIDB4Nzk3NywgMHg3OUMzLCAweDdDN0MsIDB4N0EwRSwgMHg3OUM2LCAweDY4RjEsIDB4NzlDRCwgMHg3OUYwLCAweDdBMjMsDQorICAgIDB4NzlFRiwgMHg5ODk2LCAweDc5RkUsIDB4N0E1MSwgMHg3OUZELCAweDdBMzMsIDB4N0E5RCwgMHg2RDNDLCAweDdBNzcsIDB4N0E5MSwgMHg3QThFLCAweDdBQUQsIDB4N0FBNSwgMHg3QTlDLCAweDdBOEQsIDB4N0FBNiwNCisgICAgMHg3QTgzLCAweDdBREUsIDB4N0IxNCwgMHg3QjBCLCAweDdCMTUsIDB4N0IzQSwgMHg3QjVELCAweDgyODIsIDB4ODMwMywgMHg3QjUxLCAweDdCQTcsIDB4N0I3QywgMHg3QjAzLCAweDdCNUIsIDB4N0I1QSwgMHg3QkE2LA0KKyAgICAweDdCRDMsIDB4N0JBQSwgMHg3QjgwLCAweDdCRDEsIDB4N0JBQiwgMHg2QTkwLCAweDdCNUMsIDB4N0I3RSwgMHg1RTE4LCAweDdCRUUsIDB4N0I3OSwgMHg3QjkzLCAweDdCRUYsIDB4N0JBOCwgMHg3QzQxLCAweDdCM0MsDQorICAgIDB4N0I3RSwgMHg3QjNFLCAweDdCRjEsIDB4N0JBOSwgMHg1NDAxLCAweDU5ODYsIDB4N0NBNCwgMHg3Q0MxLCAweDdDQUEsIDB4N0NBRSwgMHg3Q0Y1LCAweDdDOUQsIDB4N0M3NCwgMHg3QzlDLCAweDdFQTAsIDB4N0VBQSwNCisgICAgMHg3RUEzLCAweDdFQTYsIDB4N0VBMiwgMHg3RUExLCAweDdFQTUsIDB4N0VBOCwgMHg3RUFCLCAweDdFQjksIDB4N0VCMywgMHg3RUJELCAweDdFQkUsIDB4N0VBRiwgMHg3RUIwLCAweDdFQjEsIDB4N0VCOCwgMHg3RUE3LA0KKyAgICAweDdFQjcsIDB4N0VBRCwgMHg3RUI0LCAweDdFQkEsIDB4NjI0RSwgMHg2MjRFLCAweDdFQzYsIDB4N0VDMiwgMHg3RUMxLCAweDdFQzUsIDB4N0VCQiwgMHg3RUNELCAweDdFQzAsIDB4N0VDQiwgMHg3RUQwLCAweDdFQ0MsDQorICAgIDB4N0VDOCwgMHg1RjI2LCAweDdFQzQsIDB4N0VDQSwgMHg3RUQ3LCAweDdFRDMsIDB4N0VERCwgMHg3RUU2LCAweDdFRDQsIDB4N0VERSwgMHg3RURDLCAweDdFREEsIDB4N0VEOSwgMHg3RUQyLCAweDdFRDYsIDB4N0VERiwNCisgICAgMHg0RTFELCAweDdFREIsIDB4N0VFMiwgMHg3RUQxLCAweDdFRTEsIDB4N0VFMCwgMHg3RUU4LCAweDdFRTUsIDB4N0VDRiwgMHg3RUZDLCAweDdGMEQsIDB4N0VGRiwgMHg3RUY4LCAweDdFRkIsIDB4N0VGNiwgMHg3RUY0LA0KKyAgICAweDdFRkUsIDB4N0VCMiwgMHg3RjUxLCAweDdGMDAsIDB4N0VCNiwgMHg3RUZBLCAweDdFRUUsIDB4N0VGRCwgMHg3RUYwLCAweDdFRUIsIDB4N0VGNSwgMHg3RUYyLCAweDdGMDEsIDB4N0QyNywgMHg3RUVGLCAweDdFRUEsDQorICAgIDB4N0YwMywgMHg3RjA0LCAweDdGMDIsIDB4N0VCRiwgMHg3RjA5LCAweDdGMEUsIDB4N0YxNCwgMHg3RjE3LCAweDdGMTgsIDB4N0YwQywgMHg3RjE2LCAweDdGMTMsIDB4N0YwNSwgMHg3RUFDLCAweDdGMTEsIDB4N0YwOCwNCisgICAgMHg3RUMzLCAweDdGMEYsIDB4N0YwNywgMHg4MUY0LCAweDg0MjYsIDB4N0YxOSwgMHg3RjIyLCAweDdGMTIsIDB4N0VDOSwgMHg3RjIzLCAweDdGMUUsIDB4N0YxQSwgMHg3RjFDLCAweDdGMUYsIDB4N0YxQiwgMHg1M0JGLA0KKyAgICAweDdGMUQsIDB4N0YyOSwgMHg3RUI1LCAweDdGMjcsIDB4N0YyNiwgMHg3RDc3LCAweDdGMTUsIDB4N0YyNSwgMHg2MDNCLCAweDdFRTksIDB4N0VGNywgMHg3RjJCLCAweDdGMkEsIDB4N0YyRiwgMHg3RUM3LCAweDdGMkUsDQorICAgIDB4N0YyRCwgMHg3RUQ1LCAweDdFRTMsIDB4N0YwQiwgMHg3RUYzLCAweDdFRDgsIDB4N0NGQiwgMHg4MzI3LCAweDdGMzMsIDB4N0YzMiwgMHg3RjM0LCAweDdFQ0UsIDB4N0VFNywgMHg3RjI0LCAweDdGMzEsIDB4N0YyQywNCisgICAgMHg3RUE5LCAweDdFRUQsIDB4N0YyMCwgMHg3RjI4LCAweDdFQTQsIDB4N0YzNSwgMHg3RjA2LCAweDk0QjUsIDB4N0Y0MiwgMHg3RjVBLCAweDlBODIsIDB4N0Y2MiwgMHg3RjU3LCAweDdGNzQsIDB4N0Y4MSwgMHg4Mjg4LA0KKyAgICAweDdGOUYsIDB4N0ZBMSwgMHg0RTQ5LCAweDgxQkIsIDB4NEU2MCwgMHg3RkM2LCAweDdGREEsIDB4N0ZEOCwgMHg3RkQ5LCAweDgwMjcsIDB4NTcyMywgMHg5NUZCLCAweDgwNTQsIDB4ODA2QSwgMHg1OEYwLCAweDgwMzgsDQorICAgIDB4ODA2OSwgMHg4MDQyLCAweDgwNEMsIDB4ODA0RCwgMHg1NDJDLCAweDgwNEIsIDB4ODA4MywgMHg4MEMxLCAweDgxMDksIDB4ODBFQiwgMHg4MTMxLCAweDgwQzAsIDB4ODBCRSwgMHg4MEU4LCAweDgxMzYsIDB4ODExMSwNCisgICAgMHg4MEJGLCAweDgxMUEsIDB4ODBBMCwgMHg4MTdELCAweDgxNTgsIDB4ODBBNCwgMHg4MEY2LCAweDgxN0IsIDB4ODBDNiwgMHg4MTBELCAweDgxMTMsIDB4ODEzOCwgMHg4MTEwLCAweDgxOTEsIDB4ODE0QSwgMHg4MEVBLA0KKyAgICAweDgxMEYsIDB4ODExNCwgMHg4MURDLCAweDUzNjcsIDB4NEUzNCwgMHg1M0YwLCAweDRFMEUsIDB4NTE3NCwgMHg0RTNFLCAweDY1RTcsIDB4ODIzMSwgMHg4MjIzLCAweDgyMzAsIDB4ODIzQiwgMHg4MjcwLCAweDgyNzMsDQorICAgIDB4ODJDNCwgMHg1MjBELCAweDgyQ0UsIDB4NTE3OSwgMHg4MzQ2LCAweDhDNDYsIDB4NUU4NCwgMHg4MzBFLCAweDgzNUEsIDB4ODJDQiwgMHg1MzRFLCAweDcwREYsIDB4ODJDQywgMHg4M0IxLCAweDRFMDcsIDB4ODNCNCwNCisgICAgMHg1M0Y2LCAweDgzNkQsIDB4Nzc0MCwgMHg4MkM3LCAweDgzNjQsIDB4NjQxQywgMHg4M0IzLCAweDgzODUsIDB4ODJDRCwgMHg4MzZBLCAweDc2RDYsIDB4ODNCMiwgMHg4MkMxLCAweDgzQkMsIDB4ODM1QywgMHg4NDhDLA0KKyAgICAweDg0OEIsIDB4ODQ3MSwgMHg4MzExLCAweDgzNkIsIDB4ODM2OCwgMHg4NDg3LCAweDgzNUUsIDB4ODM2QywgMHg4M0I4LCAweDgzNUIsIDB4ODQ4OSwgMHg4MjlDLCAweDg0MjcsIDB4ODRFMywgMHg4MzVGLCAweDg0REYsDQorICAgIDB4ODI5NywgMHg1OURDLCAweDg1MzcsIDB4ODNCNiwgMHg4MzUwLCAweDg0MjgsIDB4ODM2MCwgMHg1MDFGLCAweDg0REQsIDB4ODM2OSwgMHg4MjdBLCAweDgzNkYsIDB4ODVBRSwgMHg4MkM4LCAweDg1M0MsIDB4ODUzQSwNCisgICAgMHg4NDFBLCAweDg1NzIsIDB4ODJBNiwgMHg4MkNGLCAweDg1NzQsIDB4ODJGOSwgMHg4NjE2LCAweDg1RDMsIDB4ODUzOSwgMHg4MzBGLCAweDUxNzAsIDB4ODRFMCwgMHg4NDFELCAweDU5MDQsIDB4ODY1QSwgMHg4NjRGLA0KKyAgICAweDUzRjcsIDB4NEU4RiwgMHg4NjZDLCAweDg2RjEsIDB4ODcxNSwgMHg4NkFDLCAweDg2ODAsIDB4NzMyQywgMHg4NjdFLCAweDg2NzEsIDB4ODcxNywgMHg4NkYzLCAweDg2ODIsIDB4ODQyNCwgMHg4NzdDLCAweDg3ODAsDQorICAgIDB4ODZGMCwgMHg4NzQ4LCAweDg3QTgsIDB4ODY2RSwgMHg4NzQ5LCAweDg2RjIsIDB4ODY2QiwgMHg4NkNGLCAweDg2ODEsIDB4ODY4MywgMHg4NzQ3LCAweDg2N0YsIDB4ODc0RSwgMHg4NkY0LCAweDg3N0UsIDB4ODY5RCwNCisgICAgMHg4NzIxLCAweDg2Q0UsIDB4ODdDRiwgMHg4NkNBLCAweDg2OTUsIDB4ODZFRSwgMHg0RjE3LCAweDY3MkYsIDB4NTM2QiwgMHg1MUIyLCAweDg4NkUsIDB4ODg4NSwgMHg4ODY1LCAweDg4QzUsIDB4OTFDQywgMHg1MjM2LA0KKyAgICAweDU5MEQsIDB4ODhDOCwgMHg4ODg2LCAweDg4RTQsIDB4ODhFMiwgMHg3RjIxLCAweDg5MUIsIDB4NEVCNSwgMHg4OEU1LCAweDg4ODQsIDB4ODhFMywgMHg4OEM2LCAweDg5MzQsIDB4ODg5QywgMHg4ODZDLCAweDg4QUQsDQorICAgIDB4ODk1NSwgMHg4OUMxLCAweDg5QzQsIDB4ODlDNSwgMHg4OUM2LCAweDg5QzcsIDB4ODlDQiwgMHg4OUNELCAweDg5Q0UsIDB4NEVCMiwgMHg4OUNBLCAweDg5Q0YsIDB4ODlEMCwgMHg4OUQxLCAweDg5QzksIDB4ODlDOCwNCisgICAgMHg4OUNDLCAweDg5QzIsIDB4ODlERSwgMHg4OUVGLCAweDg5RTYsIDB4OEJBMiwgMHg4QkEzLCAweDhCQTEsIDB4OEJBRiwgMHg4QkE3LCAweDhCQTgsIDB4OEJBNiwgMHg4QkFELCAweDhCQUEsIDB4OEJBQiwgMHg4QkFDLA0KKyAgICAweDhCQjAsIDB4OEJCOSwgMHg4QkI2LCAweDhCQkMsIDB4OEJDMCwgMHg4QkI3LCAweDhCQkYsIDB4OEJCRSwgMHg4QkI4LCAweDhCQzksIDB4OEJDMywgMHg4QkNBLCAweDhCQzEsIDB4OEJDMiwgMHg4QkNCLCAweDhCQjUsDQorICAgIDB4OEJDOCwgMHg4QkQyLCAweDhCQ0YsIDB4OEJDNCwgMHg4QkNFLCAweDhCQzUsIDB4OEJDRCwgMHg1NDhGLCAweDhCRTksIDB4OEJFMiwgMHg4QkUzLCAweDhCRDUsIDB4OEJENywgMHg4QkU3LCAweDhCREYsIDB4OEJFMSwNCisgICAgMHg4QkUwLCAweDhCRDgsIDB4OEJERCwgMHg4QkU1LCAweDhCRTYsIDB4OEJEQywgMHg4QkQ5LCAweDhCRDYsIDB4OEJENCwgMHg4QkRCLCAweDhCRDMsIDB4NTkzOCwgMHg1RkQ3LCAweDhCQTQsIDB4OEJGMywgMHg4QkY2LA0KKyAgICAweDhCREUsIDB4OEJGMSwgMHg4QkVFLCAweDhCRUQsIDB4OEJEQSwgMHg4QkVCLCAweDhCRUMsIDB4OEJFRiwgMHg4QkYwLCAweDhCRjUsIDB4OEJGMiwgMHg4QkY0LCAweDhDMDEsIDB4OEJGRSwgMHg4QzA3LCAweDhCRkQsDQorICAgIDB4OEMwQSwgMHg4QzAzLCAweDhDMDQsIDB4OEMwNiwgMHg4QzA4LCAweDhCRkYsIDB4OEJGNywgMHg4QkU0LCAweDhCRjksIDB4OEJGQywgMHg4QzA1LCAweDhCQkEsIDB4OEMwMiwgMHg4QzAwLCAweDhDMEQsIDB4OEMxRSwNCisgICAgMHg4QzFELCAweDhDMjUsIDB4OEJFOCwgMHg4QzE0LCAweDhDMUIsIDB4OEMxMCwgMHg4QzBGLCAweDhDMTUsIDB4OEMxOCwgMHg4QkIzLCAweDhDMTksIDB4OEMwQywgMHg4QkJELCAweDhCRjgsIDB4OEMxQSwgMHg4QzE2LA0KKyAgICAweDhCRkEsIDB4OEMwQiwgMHg4QzEyLCAweDhDMTMsIDB4OEE4QSwgMHg4QkNDLCAweDhDMEUsIDB4OEMxQywgMHg4QzI3LCAweDhDMTEsIDB4OEMyMSwgMHg4QzI0LCAweDhDMjYsIDB4OEJCMiwgMHg4QzIyLCAweDhDMjMsDQorICAgIDB4OEMxRiwgMHg4QzJBLCAweDhDMkMsIDB4OEJCNCwgMHg4QzI4LCAweDhDMjksIDB4OEJDMSwgMHg4QzMyLCAweDhCQTUsIDB4OEMyRSwgMHg4QkM2LCAweDhDMkYsIDB4OEMyRCwgMHg4QzMxLCAweDhDMzUsIDB4OEJEMSwNCisgICAgMHg4QkFFLCAweDhDMzQsIDB4NjJBNCwgMHg4QkVBLCAweDhBODksIDB4OEMyQiwgMHg4QkZCLCAweDUzRDgsIDB4OEE1RiwgMHg5NkUwLCAweDhDMTcsIDB4OEJBOSwgMHg4QzMwLCAweDhDMzYsIDB4OEQ1RSwgMHg4QzIwLA0KKyAgICAweDhDMzMsIDB4NUM4MiwgMHg3QUQ2LCAweDRFMzAsIDB4NzMyQSwgMHg4QzZFLCAweDczMkIsIDB4OEQxRCwgMHg4RDFFLCAweDhEMUYsIDB4OEQyMiwgMHg4RDIxLCAweDhEMkIsIDB4OEQyNywgMHg4RDI5LCAweDhEMkEsDQorICAgIDB4OEQyRiwgMHg4RDIzLCAweDhEMkUsIDB4OEQzMywgMHg4RDQwLCAweDhEMzAsIDB4OEQzNSwgMHg4RDJDLCAweDRFNzAsIDB4OEQzNywgMHg4RDM2LCAweDhEMzksIDB4OEQzNCwgMHg4RDNCLCAweDhEMzgsIDB4OEQzQSwNCisgICAgMHg4RDMyLCAweDhENDIsIDB4OEQ0MSwgMHg4RDNGLCAweDhENDUsIDB4OEQ0NCwgMHg4RDNFLCAweDhEM0MsIDB4OEQ0OCwgMHg4RDRBLCAweDVCQkUsIDB4OEQ0NywgMHg4RDUyLCAweDhENDksIDB4OEQ1MCwgMHg4RDRGLA0KKyAgICAweDhENTQsIDB4OEQ1MywgMHg4RDI0LCAweDUzNTYsIDB4OEQzMSwgMHg4RDRCLCAweDhENTUsIDB4OEQyOCwgMHg4RDI2LCAweDhENEMsIDB4OEQ1NiwgMHg4RDU3LCAweDhENUEsIDB4OEQ1OSwgMHg4RDJELCAweDhENUIsDQorICAgIDB4OEQ1QywgMHg4RDNELCAweDhENTgsIDB4OEQ1RiwgMHg4RDYwLCAweDhENUUsIDB4OEQ2MSwgMHg4RDYyLCAweDhENDYsIDB4OEQ0MywgMHg4RDUxLCAweDhENEUsIDB4OEQ1RCwgMHg4RDYzLCAweDhENkEsIDB4OEQ3NiwNCisgICAgMHg4RDc1LCAweDhEOEIsIDB4OERCMSwgMHg4RkY5LCAweDhERjUsIDB4OEUwQSwgMHg4REM0LCAweDhERjgsIDB4OERENiwgMHg4RTUyLCAweDhERjcsIDB4OERGNiwgMHg4REI4LCAweDhFMEMsIDB4OERGQiwgMHg4REMzLA0KKyAgICAweDhFMkYsIDB4OERERSwgMHg4RTJDLCAweDhFNzAsIDB4OERGOSwgMHg4RTUxLCAweDhFN0YsIDB4OEU5QywgMHg4RThGLCAweDhFQUYsIDB4OEY2NiwgMHg4RjY3LCAweDhGNjgsIDB4NTE5QiwgMHg4RjY5LCAweDhGNkIsDQorICAgIDB4OEY2RCwgMHg4RjZGLCAweDhGNzgsIDB4OEY3MSwgMHg4Rjc0LCAweDhGNzUsIDB4OEY3QSwgMHg4RjcyLCAweDhGNzYsIDB4OEY3QywgMHg4RjgzLCAweDhGODIsIDB4OEY4MSwgMHg4RjgwLCAweDhGN0QsIDB4OEY3RSwNCisgICAgMHg4Rjg0LCAweDhGODUsIDB4OEY3QiwgMHg4Rjg2LCAweDhGOEUsIDB4OEY4OSwgMHg4RjhCLCAweDhGOEQsIDB4OEY4QSwgMHg4Rjg3LCAweDhGODgsIDB4OEY2RSwgMHg4RjkxLCAweDhGOEYsIDB4OEY5MywgMHg4RjkwLA0KKyAgICAweDhGOTcsIDB4ODIwNiwgMHg4RjkyLCAweDZCQzIsIDB4OEY5NiwgMHg4Rjk1LCAweDhGOTgsIDB4OEY2QywgMHg4Rjk5LCAweDhGN0YsIDB4OEY5QSwgMHg4RjcwLCAweDhGOTQsIDB4OEY3OSwgMHg4RjczLCAweDUyOUUsDQorICAgIDB4OEY5RSwgMHg4RkFCLCAweDhGQTksIDB4NTE5QywgMHg4RkQ5LCAweDhGREUsIDB4NTQ2OCwgMHg4RkRCLCAweDZFMzgsIDB4OEZEMCwgMHg4RkM3LCAweDhGQkUsIDB4OEZERCwgMHg5MDY1LCAweDkwMEEsIDB4OTAxMiwNCisgICAgMHg4RkRDLCAweDkwMDIsIDB4OEZERiwgMHg4RkMxLCAweDkwMDksIDB4OTA1NywgMHg4RkJELCAweDhGQzgsIDB4OEZEOCwgMHg4RkU5LCAweDhGQjksIDB4OTAzQiwgMHg5MDI2LCAweDkwQ0YsIDB4OTBBRSwgMHg5MEQzLA0KKyAgICAweDRFNjEsIDB4OTBCOSwgMHg5MEFDLCAweDkwRTcsIDB4OTA5MywgMHg5MEQxLCAweDkwQkIsIDB4OTBGOCwgMHg5MEJBLCAweDkwRDAsIDB4OTA5RCwgMHg5MTQyLCAweDkwRTYsIDB4ODE0QywgMHg0RTExLCAweDkxNUQsDQorICAgIDB4NTMzQiwgMHg5MTcxLCAweDkxNjYsIDB4OTE3RiwgMHg4ODQ1LCAweDkxN0UsIDB4OTE3RCwgMHg5MUNBLCAweDk0ODcsIDB4OTQ4QywgMHg5NDhBLCAweDk0ODksIDB4OTQ4QiwgMHg5NDg4LCAweDk0OTMsIDB4OTQ5MCwNCisgICAgMHg5NDhGLCAweDk0OTIsIDB4OTQ4RSwgMHg5NDk3LCAweDk0OEQsIDB4OTQ5NSwgMHg5NEFGLCAweDk0QUIsIDB4OTQ5OCwgMHg5NEFELCAweDk0QTAsIDB4OTQ5RCwgMHg5NEE0LCAweDk0QTMsIDB4OTQ5RSwgMHg5NEFFLA0KKyAgICAweDk0QTcsIDB4OTQ5OSwgMHg5NDlCLCAweDk0QUEsIDB4OTRDQywgMHg5NEM4LCAweDk0QjYsIDB4OTRDMywgMHg5NEI0LCAweDk0QjksIDB4OTRDRCwgMHg5NEIwLCAweDk0QjgsIDB4OTRDMCwgMHg5NEJGLCAweDk0QkUsDQorICAgIDB4OTQ5QywgMHg5NENBLCAweDk0QzksIDB4OTRDNywgMHg5NENCLCAweDk0QzIsIDB4OTRCMywgMHg5NEM2LCAweDk0QzUsIDB4OTRCQSwgMHg5NEE5LCAweDk0QjIsIDB4OTRCQywgMHg5NEJELCAweDk0Q0YsIDB4OTRGMCwNCisgICAgMHg5NEQyLCAweDk0RUMsIDB4OTRFQSwgMHg5NEY2LCAweDk0RjMsIDB4OTREQywgMHg5NERBLCAweDk0RTMsIDB4OTRFOCwgMHg5NEUyLCAweDk0RUQsIDB4OTRFQiwgMHg5NEU2LCAweDg4NTQsIDB4OTREMSwgMHg5NEY3LA0KKyAgICAweDk0RjEsIDB4OTRERiwgMHg5NEY1LCAweDk0RDUsIDB4OTRFRiwgMHg5NEQwLCAweDk1MTAsIDB4OTUwMCwgMHg5NTA4LCAweDk1MTEsIDB4OTUwOSwgMHg5NERELCAweDk1MTIsIDB4OTUwQywgMHg5NEExLCAweDk0RTQsDQorICAgIDB4OTRENywgMHg5NTBCLCAweDk1MEEsIDB4OTUxMywgMHg5NTA0LCAweDk1MDMsIDB4OTUxNCwgMHg5NTA3LCAweDk0RDMsIDB4OTRGQSwgMHg5NEQ2LCAweDk1MDYsIDB4OTUwMiwgMHg5NTJGLCAweDk0QTIsIDB4OTUxRSwNCisgICAgMHg1RjU1LCAweDk1MTYsIDB4OTUyOSwgMHg5NEQ0LCAweDk1MjUsIDB4OTUxNSwgMHg5NTFGLCAweDk1MjQsIDB4OTUzMSwgMHg5NEVFLCAweDk1MUIsIDB4OTUyQywgMHg5NTJELCAweDk1MUMsIDB4OTRCMSwgMHg5NTI2LA0KKyAgICAweDk1MUEsIDB4OTUyMCwgMHg5NTIxLCAweDk1MjIsIDB4OTUxOSwgMHg5NTMwLCAweDg4NjgsIDB4OTRGQywgMHg5NTI4LCAweDk0OTQsIDB4OTUzNCwgMHg5NEZFLCAweDk1MDUsIDB4OTU0MCwgMHg5NTM3LCAweDk0RTEsDQorICAgIDB4OTQ5NiwgMHg5NTNCLCAweDk1M0QsIDB4OTUzOCwgMHg5NTMyLCAweDk1MzksIDB4OTUzRSwgMHg5NTJFLCAweDk1MzYsIDB4OTUxNywgMHg5NTNBLCAweDk1NDEsIDB4OTU1MSwgMHg5NTU1LCAweDk1MDEsIDB4OTU0OSwNCisgICAgMHg5NTQ4LCAweDk1NDMsIDB4OTRBOCwgMHg4NEU1LCAweDk1NEYsIDB4OTRFMCwgMHg5NEU5LCAweDk1M0MsIDB4OTU1MCwgMHg5NTQ3LCAweDk1NTIsIDB4OTU0RCwgMHg5NTUzLCAweDk1NUUsIDB4OTU1RiwgMHg5NEZFLA0KKyAgICAweDk1NDYsIDB4OTU1OSwgMHg5NTYwLCAweDk1NUQsIDB4OTRGRiwgMHg5NTM1LCAweDk1NTcsIDB4OTU1OCwgMHg5NTVCLCAweDk0RjIsIDB4OTU1QywgMHg5NTU2LCAweDk1NDIsIDB4OTMzRSwgMHg5NTVBLCAweDk0RTcsDQorICAgIDB4OTU2QSwgMHg5NTA4LCAweDk0RDksIDB4OTU2MywgMHg5NTY2LCAweDk1NjEsIDB4OTQ5RiwgMHg5NTZCLCAweDk1MEYsIDB4OTU0NCwgMHg5NTRDLCAweDk1NzAsIDB4OTU2RiwgMHg5NTZELCAweDk0QzEsIDB4OTU2RSwNCisgICAgMHg5NENFLCAweDk0REIsIDB4OTU3MSwgMHg5NEY4LCAweDk1NkMsIDB4OTU1NCwgMHg5Mjc0LCAweDk1MjcsIDB4OTU3NCwgMHg5NEM0LCAweDk1NzMsIDB4OTU2NywgMHg5NEE1LCAweDk1NzUsIDB4OTU3NiwgMHg5NTRBLA0KKyAgICAweDk1NjksIDB4OTUyMywgMHg5NEJCLCAweDkyQUUsIDB4NTFGRiwgMHg5NTdGLCAweDk1RTgsIDB4OTVFOSwgMHg5NUVBLCAweDk1RUIsIDB4OTVFQywgMHg5NUVELCAweDVGMDAsIDB4OTVGNiwgMHg5NUYzLCAweDk1RjAsDQorICAgIDB4OTVGMiwgMHg5NUY0LCAweDk1RjUsIDB4OTVGOCwgMHg5NjAyLCAweDk2MDEsIDB4OTYwMCwgMHg5NUZBLCAweDk1RkQsIDB4OTYwMywgMHg5NjA2LCAweDk1RkUsIDB4OTYwNSwgMHg5NjBBLCAweDk2MDksIDB4OTYwRSwNCisgICAgMHg5NjBGLCAweDk2MEQsIDB4OTYwOCwgMHg5NjBDLCAweDk2MTIsIDB4Njc3RiwgMHg2Njk3LCAweDk1RjEsIDB4OTYxNCwgMHg5NjE1LCAweDk2MTEsIDB4OTYxNywgMHg5NjE4LCAweDk1RkYsIDB4OTYxNiwgMHg5NjE5LA0KKyAgICAweDk1RUYsIDB4NTE3MywgMHg5NjFBLCAweDk2MTMsIDB4OTYxMCwgMHg4RjlGLCAweDk2MUIsIDB4OTVGQywgMHg5NjQ5LCAweDk2NTUsIDB4OTYzNSwgMHg5NjM0LCAweDk2NDgsIDB4OTY0NiwgMHg5NjMzLCAweDk2NjcsDQorICAgIDB4OTYxRiwgMHg5NjM2LCAweDk2NjgsIDB4OTY0NSwgMHg5NjhGLCAweDk2NjksIDB4OTY5MCwgMHg5NjQ3LCAweDk2QjYsIDB4NTNFQSwgMHg5NkJELCAweDg2N0QsIDB4NTNDQywgMHg5NkNGLCAweDY3NDIsIDB4OUUyMSwNCisgICAgMHg3OUJCLCAweDk2QkUsIDB4NEU5MSwgMHg3NTM1LCAweDk3MjEsIDB4OTZGRSwgMHg5NzAxLCAweDk2RjMsIDB4OTcyRCwgMHg1M0M3LCAweDcwNzUsIDB4NTNDNiwgMHg5NzUzLCAweDk3NTksIDB4ODE3QywgMHg5NzY1LA0KKyAgICAweDlGMTcsIDB4NURFOSwgMHg5NzlGLCAweDdGMzAsIDB4OTc5MSwgMHg5N0FGLCAweDk3RTYsIDB4OTdFNywgMHg5N0U5LCAweDk3RUEsIDB4OTdFQywgMHg5N0VCLCAweDk3RjUsIDB4NTRDRCwgMHg5ODc1LCAweDk4NzYsDQorICAgIDB4OTg3NywgMHg5ODc5LCAweDk4N0EsIDB4OTg3OCwgMHg5ODdCLCAweDk4N0MsIDB4OTg4MiwgMHg5ODgwLCAweDk4ODMsIDB4OTg4NCwgMHg5ODdELCAweDk4ODEsIDB4OTg3RiwgMHg5ODg3LCAweDk4ODYsIDB4OTg4QywNCisgICAgMHg5ODg5LCAweDk4OTAsIDB4OTg4RiwgMHg1OTM0LCAweDk4OEEsIDB4OTg4QiwgMHg5ODk0LCAweDk4ODgsIDB4OTg5MywgMHg5ODkxLCAweDk4OTcsIDB4OTg5OCwgMHg5ODlELCAweDk4OUEsIDB4OTg5QywgMHg5ODk5LA0KKyAgICAweDk4OUIsIDB4NjEzRiwgMHg5OEExLCAweDk4QTAsIDB4N0M3QiwgMHg5ODlGLCAweDk4QTIsIDB4OTg3RSwgMHg5OEE0LCAweDk4QTUsIDB4NjYzRSwgMHg5OEE2LCAweDk4ODUsIDB4OTg5RSwgMHg5OEE3LCAweDk4Q0UsDQorICAgIDB4OThEMCwgMHg5OEQxLCAweDk4RDIsIDB4NTNGMCwgMHg5OEQzLCAweDk4RDQsIDB4OThDRiwgMHg5OEQ2LCAweDk4RDUsIDB4OThENywgMHg5OEQ4LCAweDk4RDksIDB4OThERSwgMHg5OTY1LCAweDk5NjQsIDB4OTk2NiwNCisgICAgMHg5OTY4LCAweDk5NkEsIDB4OTk2QiwgMHg5OTZDLCAweDk5NkQsIDB4OTk2RSwgMHg5OTc0LCAweDk5NzIsIDB4OTk3MSwgMHg5OTcwLCAweDk5NzMsIDB4OTk3QSwgMHg5OTc4LCAweDk5N0MsIDB4OTk3NywgMHg1MTdCLA0KKyAgICAweDk5NzUsIDB4OTk3OSwgMHg5OTdELCAweDk5ODEsIDB4OTk3RiwgMHg5OTdFLCAweDRGNTksIDB4ODBCNCwgMHg5OTg0LCAweDk5ODMsIDB4OTk2RiwgMHg5OTg1LCAweDk5ODYsIDB4N0NDNywgMHg5OTY3LCAweDU1ODIsDQorICAgIDB4OTk4OSwgMHg5OThFLCAweDk5NjksIDB4OTk4RiwgMHg5OThBLCAweDk5OEMsIDB4OTk4RCwgMHg5OTkyLCAweDk5OTAsIDB4OTk5MSwgMHg5OTg4LCAweDk5OTQsIDB4OTk3NiwgMHg5OEU4LCAweDk5MEQsIDB4OTk4QiwNCisgICAgMHg5QTZDLCAweDlBNkQsIDB4NTFBRiwgMHg5QTZFLCAweDlBNzAsIDB4OUE2RiwgMHg5QTczLCAweDlBN0IsIDB4OUE3RCwgMHg5QTc5LCAweDlBNzUsIDB4OUE3RSwgMHg5QTgwLCAweDlBNzgsIDB4OUE3NiwgMHg5QTdDLA0KKyAgICAweDlBNzcsIDB4OUE4OCwgMHg5QTg3LCAweDlBODMsIDB4OUE4NiwgMHg5QThFLCAweDlBOEYsIDB4OUE4QiwgMHg5QThELCAweDlBOTMsIDB4OUE5MiwgMHg5QTkxLCAweDlBOTAsIDB4OUE5QiwgMHg5QTk3LCAweDlBOTksDQorICAgIDB4OUE5RSwgMHg5QTk4LCAweDlBOUQsIDB4ODE3RSwgMHg5QTdBLCAweDlBOUEsIDB4OUE5RiwgMHg5QUExLCAweDg0RTYsIDB4OUE5QywgMHg5QTk2LCAweDlBQTAsIDB4OUFBMiwgMHg5QTcxLCAweDlBODUsIDB4OUE5NSwNCisgICAgMHg5QTgxLCAweDlBODQsIDB4OUE4QywgMHg2MENBLCAweDlBN0YsIDB4OUFBNCwgMHg5QTc0LCAweDlBQTcsIDB4OUFBNSwgMHg5QUE2LCAweDlBOEEsIDB4ODBBRSwgMHg5QUM1LCAweDgxMEYsIDB4NEY1MywgMHg5QUNDLA0KKyAgICAweDlBQ0IsIDB4NTNEMSwgMHg2NzdFLCAweDgwRTEsIDB4OUIxMywgMHg2NTk3LCAweDk1RjksIDB4OTYwQiwgMHg5NjA0LCAweDkwQzEsIDB4OUI0OSwgMHg5QjQ3LCAweDlDN0MsIDB4OUM4MCwgMHg5QzgxLCAweDlDODIsDQorICAgIDB4OUM3RiwgMHg5Qzg1LCAweDlDODYsIDB4OUM4RiwgMHg5Qzg3LCAweDlDOTAsIDB4OUM4RCwgMHg5QzhCLCAweDlDOEEsIDB4OUM5MiwgMHg5Qzk1LCAweDlDOTYsIDB4OUM5NCwgMHg5QzlCLCAweDlDOTEsIDB4OUM5QywNCisgICAgMHg5Q0E3LCAweDlDQTAsIDB4OUNBOSwgMHg5Q0E0LCAweDlDQTgsIDB4OUNCQiwgMHg5Q0FGLCAweDlDQUQsIDB4OUM5RSwgMHg5Q0I3LCAweDlDQjQsIDB4OUNCMSwgMHg5Q0I1LCAweDlDQjIsIDB4OUNCMywgMHg5Q0I4LA0KKyAgICAweDlDQUUsIDB4OUNCMCwgMHg5Q0I2LCAweDlDQUIsIDB4OUNDQSwgMHg5Qzk3LCAweDlDQkQsIDB4OUNDNywgMHg5Q0M1LCAweDlDQzYsIDB4OUNDMywgMHg5Q0QyLCAweDlDRDEsIDB4OUNBNSwgMHg5Q0NGLCAweDlDQ0UsDQorICAgIDB4OUNEMCwgMHg5Q0NELCAweDlDQzEsIDB4OUNBMiwgMHg5Q0NDLCAweDlDQTYsIDB4OUNBMywgMHg5Q0I5LCAweDlDRDcsIDB4OUNENCwgMHg5Q0M5LCAweDlDRDUsIDB4OUNENiwgMHg5Q0RGLCAweDlDREQsIDB4OUNEQywNCisgICAgMHg5Q0RFLCAweDlDOUYsIDB4OUNCQywgMHg5QzhFLCAweDlDOTksIDB4OUNFMywgMHg5Q0UyLCAweDlDOUEsIDB4OUNDNCwgMHg5Qzg4LCAweDlDQTEsIDB4OUUxRiwgMHg1MUVCLCAweDlFMjAsIDB4OUUyNCwgMHg1MUU0LA0KKyAgICAweDlFMjMsIDB4OUUyMiwgMHg5RTI5LCAweDlFMjgsIDB4OUUyNiwgMHg5RTMwLCAweDlFMzUsIDB4OUUzMywgMHg5RTMyLCAweDlFMkUsIDB4OUUzMSwgMHg5RTJBLCAweDlFMkYsIDB4OUUyRCwgMHg5RTM4LCAweDlFMzksDQorICAgIDB4OUUzQiwgMHg5RTNGLCAweDlFM0QsIDB4OUUzQSwgMHg5RTQzLCAweDlFNDYsIDB4OUU0MSwgMHg5RTQ4LCAweDlFNDUsIDB4OUU0NCwgMHg5RTQ5LCAweDlFNEMsIDB4OUU0RiwgMHg5RTRFLCAweDlFNEEsIDB4OUU1MywNCisgICAgMHg5RTJCLCAweDlFNTEsIDB4OUU0QiwgMHg5RTU5LCAweDlFNTUsIDB4OUU1NywgMHg5RTU2LCAweDlFNEQsIDB4OUU1QiwgMHg5RTVDLCAweDgzQkEsIDB4OUU1RiwgMHg5RTY0LCAweDlFNjAsIDB4OUU2MSwgMHg5RTU4LA0KKyAgICAweDlFNjMsIDB4OUU1QSwgMHg5RTYyLCAweDlFNUUsIDB4OUU2NywgMHg5RTY1LCAweDlFMjUsIDB4OUUzNywgMHg5RTY4LCAweDlFMzYsIDB4OUU2QSwgMHg5RTU0LCAweDlFNjksIDB4OUU2QiwgMHg5RTQ3LCAweDlFNkMsDQorICAgIDB4OUU3MCwgMHg5RTZELCAweDlFNkYsIDB4OUUyQywgMHg5RTc0LCAweDlFNjYsIDB4OUU3MywgMHg5RTQyLCAweDlFM0UsIDB4NTM2NCwgMHg5RTdFLCAweDc4NzcsIDB4NzZEMCwgMHg0RTNELCAweDlFQTYsIDB4OUVCOCwNCisgICAgMHg5RUI5LCAweDk3NjIsIDB4NEU0OCwgMHg5RUM0LCAweDlFQzksIDB4NzBCOSwgMHg1MTVBLCAweDk3MDksIDB4OUVFMSwgMHg5RUU5LCAweDlFRkUsIDB4OUYwQiwgMHg5RjBELCAweDlGMzksIDB4OUY1MCwgMHg2NThCLA0KKyAgICAweDhENEQsIDB4OUY1MSwgMHg5RjdGLCAweDlGODAsIDB4OUY4MSwgMHg5Rjg1LCAweDlGODcsIDB4OUY4MywgMHg5Rjg2LCAweDlGODQsIDB4OUY4OCwgMHg5RjhBLCAweDlGODksIDB4OUY4QiwgMHg5RjhDLCAweDlGOTksDQorICAgIDB4NTM5MCwgMHg1RTlFLCAweDlGOUEsIDB4OUY5QiwgMHg5RjlGLCAweEE3NkYsIDB4OEM0OCwgMHg2NkY0LCAweDhFQ0EsIDB4OENDOCwgMHg2RUQxLCAweDRFMzIsIDB4NTNFNSwgMHg5RjlDLCAweDlGOUMsIDB4NTk1MSwNCisgICAgMHg5MUQxLCAweDU1ODcsIDB4NTk0OCwgMHg2MUY2LCAweDc2NjksIDB4N0Y4NSwgMHg4NjNGLCAweDg3QkEsIDB4ODhGOCwgMHg5MDhGLCAweDZBMDIsIDB4NkQxQiwgMHg3MEQ5LCAweDczREUsIDB4ODQzRCwgMHg5MTZBLA0KKyAgICAweDk5RjEsIDB4NEU4MiwgMHg1Mzc1LCAweDZCMDQsIDB4NzIxQiwgMHg4NjJELCAweDlFMUUsIDB4NUQ1MCwgMHg2RkVCLCAweDg1Q0QsIDB4ODk2NCwgMHg2MkM5LCAweDgxRDgsIDB4ODgxRiwgMHg1RUNBLCAweDY3MTcsDQorICAgIDB4NkQ2QSwgMHg3MkZDLCAweDkwQ0UsIDB4NEY4NiwgMHg1MUI3LCAweDUyREUsIDB4NjRDNCwgMHg2QUQzLCAweDcyMTAsIDB4NzZFNywgMHg4MDAxLCAweDg2MDYsIDB4ODY1QywgMHg4REVGLCAweDk3MzIsIDB4OUI2RiwNCisgICAgMHg5REZBLCAweDc4OEMsIDB4Nzk3RiwgMHg3REEwLCAweDgzQzksIDB4OTMwNCwgMHg5RTdGLCAweDhBRDYsIDB4NThERiwgMHg1RjA0LCAweDdDNjAsIDB4ODA3RSwgMHg3MjYyLCAweDc4Q0EsIDB4OENDMiwgMHg5NkY3LA0KKyAgICAweDU4RDgsIDB4NUM2MiwgMHg2QTEzLCAweDZEREEsIDB4NkYwRiwgMHg3RDJGLCAweDdFMzcsIDB4OTY0QiwgMHg1MkQyLCAweDgwOEIsIDB4NTFEQywgMHg1MUNDLCAweDdBMUMsIDB4N0RCRSwgMHg4M0YxLCAweDk2NzUsDQorICAgIDB4OEI4MCwgMHg2MkNGLCAweDZBMDIsIDB4OEFGRSwgMHg0RTM5LCAweDVCRTcsIDB4NjAxMiwgMHg3Mzg3LCAweDc1NzAsIDB4NTMxNywgMHg3OEZCLCAweDRGQkYsIDB4NUZBOSwgMHg0RTBELCAweDZDQ0MsIDB4NjU3OCwNCisgICAgMHg3RDIyLCAweDUzQzMsIDB4NTg1RSwgMHg3NzAxLCAweDg0NDksIDB4OEFBQSwgMHg2QkJBLCAweDhGQjAsIDB4NkM4OCwgMHg2MkZFLCAweDgyRTUsIDB4NjNBMCwgMHg3NTY1LCAweDRFQUUsIDB4NTE2OSwgMHg1MUM5LA0KKyAgICAweDY4ODEsIDB4N0NFNywgMHg4MjZGLCAweDhBRDIsIDB4OTFDRiwgMHg1MkY1LCAweDU0NDIsIDB4NTk3MywgMHg1RUVDLCAweDY1QzUsIDB4NkZGRSwgMHg3OTJBLCAweDk1QUQsIDB4OUE2QSwgMHg5RTk3LCAweDlFQ0UsDQorICAgIDB4NTI5QiwgMHg2NkM2LCAweDZCNzcsIDB4OEY2MiwgMHg1RTc0LCAweDYxOTAsIDB4NjIwMCwgMHg2NDlBLCAweDZGMjMsIDB4NzE0OSwgMHg3NDg5LCAweDc5Q0EsIDB4N0RGNCwgMHg4MDZGLCAweDhGMjYsIDB4ODRFRSwNCisgICAgMHg5MDIzLCAweDkzNEEsIDB4NTIxNywgMHg1MkEzLCAweDU0QkQsIDB4NzBDOCwgMHg4OEMyLCAweDhBQUEsIDB4NUVDOSwgMHg1RkY1LCAweDYzN0IsIDB4NkJBRSwgMHg3QzNFLCAweDczNzUsIDB4NEVFNCwgMHg1NkY5LA0KKyAgICAweDVCRTcsIDB4NURCQSwgMHg2MDFDLCAweDczQjIsIDB4NzQ2OSwgMHg3RjlBLCAweDgwNDYsIDB4OTIzNCwgMHg5NkY2LCAweDk3NDgsIDB4OTgxOCwgMHg0RjhCLCAweDc5QUUsIDB4OTFCNCwgMHg5NkI4LCAweDYwRTEsDQorICAgIDB4NEU4NiwgMHg1MERBLCAweDVCRUUsIDB4NUMzRiwgMHg2NTk5LCAweDZBMDIsIDB4NzFDRSwgMHg3NjQyLCAweDg0RkMsIDB4OTA3QywgMHg5RjhELCAweDY2ODgsIDB4OTYyRSwgMHg1Mjg5LCAweDY3N0IsIDB4NjdGMywNCisgICAgMHg2RDQxLCAweDZFOUMsIDB4NzQwOSwgMHg3NTU5LCAweDc4NkIsIDB4N0QxMCwgMHg5ODVFLCAweDUxNkQsIDB4NjIyRSwgMHg5Njc4LCAweDUwMkIsIDB4NUQxOSwgMHg2REVBLCAweDhGMkEsIDB4NUY4QiwgMHg2MTQ0LA0KKyAgICAweDY4MTcsIDB4NzM4NywgMHg5Njg2LCAweDUyMjksIDB4NTQwRiwgMHg1QzY1LCAweDY2MTMsIDB4Njc0RSwgMHg2OEE4LCAweDZDRTUsIDB4NzQwNiwgMHg3NUUyLCAweDdGNzksIDB4ODhDRiwgMHg4OEUxLCAweDkxQ0MsDQorICAgIDB4OTZFMiwgMHg1MzNGLCAweDZFQkEsIDB4NTQxRCwgMHg3MUQwLCAweDc0OTgsIDB4ODVGQSwgMHg5NkEzLCAweDlDNTcsIDB4OUU5RiwgMHg2Nzk3LCAweDZEQ0IsIDB4ODFFOCwgMHg3QUNCLCAweDdCMjAsIDB4N0M5MiwNCisgICAgMHg3MkMwLCAweDcwOTksIDB4OEI1OCwgMHg0RUMwLCAweDgzMzYsIDB4NTIzQSwgMHg1MjA3LCAweDVFQTYsIDB4NjJEMywgMHg3Q0Q2LCAweDVCODUsIDB4NkQxRSwgMHg2NkI0LCAweDhGM0IsIDB4ODg0QywgMHg5NjRELA0KKyAgICAweDg5OEIsIDB4NUVEMywgMHg1MTQwLCAweDU1QzAsIDB4NTg1QSwgMHg2Njc0LCAweDUxREUsIDB4NzMyQSwgMHg3NkNBLCAweDc5M0MsIDB4Nzk1RSwgMHg3OTY1LCAweDc5OEYsIDB4OTc1NiwgMHg3Q0JFLCAweDdGQkQsDQorICAgIDB4ODYxMiwgMHg4QUY4LCAweDkwMzgsIDB4OTBGRCwgMHg5OEVGLCAweDk4RkMsIDB4OTkyOCwgMHg5REI0LCAweDRGQUUsIDB4NTBFNywgMHg1MTRELCAweDUyQzksIDB4NTJFNCwgMHg1MzUxLCAweDU1OUQsIDB4NTYwNiwNCisgICAgMHg1NjY4LCAweDU4NDAsIDB4NThBOCwgMHg1QzY0LCAweDVDNkUsIDB4NjA5NCwgMHg2MTY4LCAweDYxOEUsIDB4NjFGMiwgMHg2NTRGLCAweDY1RTIsIDB4NjY5MSwgMHg2ODg1LCAweDZENzcsIDB4NkUxQSwgMHg2RjIyLA0KKyAgICAweDcxNkUsIDB4NzIyQiwgMHg3NDIyLCAweDc4OTEsIDB4NzkzRSwgMHg3OTQ5LCAweDc5NDgsIDB4Nzk1MCwgMHg3OTU2LCAweDc5NUQsIDB4Nzk4RCwgMHg3OThFLCAweDdBNDAsIDB4N0E4MSwgMHg3QkMwLCAweDdERjQsDQorICAgIDB4N0UwOSwgMHg3RTQxLCAweDdGNzIsIDB4ODAwNSwgMHg4MUVELCAweDgyNzksIDB4ODI3OSwgMHg4NDU3LCAweDg5MTAsIDB4ODk5NiwgMHg4QjAxLCAweDhCMzksIDB4OENEMywgMHg4RDA4LCAweDhGQjYsIDB4OTAzOCwNCisgICAgMHg5NkUzLCAweDk3RkYsIDB4OTgzQiwgMHg2MDc1LCAweDgyMTgsIDB4NEUyNiwgMHg1MUI1LCAweDUxNjgsIDB4NEY4MCwgMHg1MTQ1LCAweDUxODAsIDB4NTJDNywgMHg1MkZBLCAweDU1OUQsIDB4NTU1NSwgMHg1NTk5LA0KKyAgICAweDU1RTIsIDB4NTg1QSwgMHg1OEIzLCAweDU5NDQsIDB4NTk1NCwgMHg1QTYyLCAweDVCMjgsIDB4NUVEMiwgMHg1RUQ5LCAweDVGNjksIDB4NUZBRCwgMHg2MEQ4LCAweDYxNEUsIDB4NjEwOCwgMHg2MThFLCAweDYxNjAsDQorICAgIDB4NjFGMiwgMHg2MjM0LCAweDYzQzQsIDB4NjQxQywgMHg2NDUyLCAweDY1NTYsIDB4NjY3NCwgMHg2NzE3LCAweDY3MUIsIDB4Njc1NiwgMHg2Qjc5LCAweDZCQkEsIDB4NkQ0MSwgMHg2RURCLCAweDZFQ0IsIDB4NkYyMiwNCisgICAgMHg3MDFFLCAweDcxNkUsIDB4NzdBNywgMHg3MjM1LCAweDcyQUYsIDB4NzMyQSwgMHg3NDcxLCAweDc1MDYsIDB4NzUzQiwgMHg3NjFELCAweDc2MUYsIDB4NzZDQSwgMHg3NkRCLCAweDc2RjQsIDB4Nzc0QSwgMHg3NzQwLA0KKyAgICAweDc4Q0MsIDB4N0FCMSwgMHg3QkMwLCAweDdDN0IsIDB4N0Q1QiwgMHg3REY0LCAweDdGM0UsIDB4ODAwNSwgMHg4MzUyLCAweDgzRUYsIDB4ODc3OSwgMHg4OTQxLCAweDg5ODYsIDB4ODk5NiwgMHg4QUJGLCAweDhBRjgsDQorICAgIDB4OEFDQiwgMHg4QjAxLCAweDhBRkUsIDB4OEFFRCwgMHg4QjM5LCAweDhCOEEsIDB4OEQwOCwgMHg4RjM4LCAweDkwNzIsIDB4OTE5OSwgMHg5Mjc2LCAweDk2N0MsIDB4OTZFMywgMHg5NzU2LCAweDk3REIsIDB4OTdGRiwNCisgICAgMHg5ODBCLCAweDk4M0IsIDB4OUIxMiwgMHg5RjlDLCAweDNCOUQsIDB4NDAxOCwgMHg0MDM5LCAweDlGNDMsIDB4OUY4RSwgMHgwNUUyLCAweDA1RDAsIDB4MDVEMywgMHgwNUQ0LCAweDA1REIsIDB4MDVEQywgMHgwNURELA0KKyAgICAweDA1RTgsIDB4MDVFQSwgMHgwMDJCLCAweDA2NzEsIDB4MDY3MSwgMHgwNjdCLCAweDA2N0IsIDB4MDY3QiwgMHgwNjdCLCAweDA2N0UsIDB4MDY3RSwgMHgwNjdFLCAweDA2N0UsIDB4MDY4MCwgMHgwNjgwLCAweDA2ODAsDQorICAgIDB4MDY4MCwgMHgwNjdBLCAweDA2N0EsIDB4MDY3QSwgMHgwNjdBLCAweDA2N0YsIDB4MDY3RiwgMHgwNjdGLCAweDA2N0YsIDB4MDY3OSwgMHgwNjc5LCAweDA2NzksIDB4MDY3OSwgMHgwNkE0LCAweDA2QTQsIDB4MDZBNCwNCisgICAgMHgwNkE0LCAweDA2QTYsIDB4MDZBNiwgMHgwNkE2LCAweDA2QTYsIDB4MDY4NCwgMHgwNjg0LCAweDA2ODQsIDB4MDY4NCwgMHgwNjgzLCAweDA2ODMsIDB4MDY4MywgMHgwNjgzLCAweDA2ODYsIDB4MDY4NiwgMHgwNjg2LA0KKyAgICAweDA2ODYsIDB4MDY4NywgMHgwNjg3LCAweDA2ODcsIDB4MDY4NywgMHgwNjhELCAweDA2OEQsIDB4MDY4QywgMHgwNjhDLCAweDA2OEUsIDB4MDY4RSwgMHgwNjg4LCAweDA2ODgsIDB4MDY5OCwgMHgwNjk4LCAweDA2OTEsDQorICAgIDB4MDY5MSwgMHgwNkE5LCAweDA2QTksIDB4MDZBOSwgMHgwNkE5LCAweDA2QUYsIDB4MDZBRiwgMHgwNkFGLCAweDA2QUYsIDB4MDZCMywgMHgwNkIzLCAweDA2QjMsIDB4MDZCMywgMHgwNkIxLCAweDA2QjEsIDB4MDZCMSwNCisgICAgMHgwNkIxLCAweDA2QkEsIDB4MDZCQSwgMHgwNkJCLCAweDA2QkIsIDB4MDZCQiwgMHgwNkJCLCAweDA2QzAsIDB4MDZDMCwgMHgwNkMxLCAweDA2QzEsIDB4MDZDMSwgMHgwNkMxLCAweDA2QkUsIDB4MDZCRSwgMHgwNkJFLA0KKyAgICAweDA2QkUsIDB4MDZEMiwgMHgwNkQyLCAweDA2RDMsIDB4MDZEMywgMHgwNkFELCAweDA2QUQsIDB4MDZBRCwgMHgwNkFELCAweDA2QzcsIDB4MDZDNywgMHgwNkM2LCAweDA2QzYsIDB4MDZDOCwgMHgwNkM4LCAweDA2NzcsDQorICAgIDB4MDZDQiwgMHgwNkNCLCAweDA2QzUsIDB4MDZDNSwgMHgwNkM5LCAweDA2QzksIDB4MDZEMCwgMHgwNkQwLCAweDA2RDAsIDB4MDZEMCwgMHgwNjQ5LCAweDA2NDksIDB4MDZDQywgMHgwNkNDLCAweDA2Q0MsIDB4MDZDQywNCisgICAgMHgwMDJDLCAweDMwMDEsIDB4MzAwMiwgMHgwMDNBLCAweDAwM0IsIDB4MDAyMSwgMHgwMDNGLCAweDMwMTYsIDB4MzAxNywgMHgyMDI2LCAweDIwMjUsIDB4MjAxNCwgMHgyMDEzLCAweDAwNUYsIDB4MDA1RiwgMHgwMDI4LA0KKyAgICAweDAwMjksIDB4MDA3QiwgMHgwMDdELCAweDMwMTQsIDB4MzAxNSwgMHgzMDEwLCAweDMwMTEsIDB4MzAwQSwgMHgzMDBCLCAweDMwMDgsIDB4MzAwOSwgMHgzMDBDLCAweDMwMEQsIDB4MzAwRSwgMHgzMDBGLCAweDAwNUIsDQorICAgIDB4MDA1RCwgMHgyMDNFLCAweDIwM0UsIDB4MjAzRSwgMHgyMDNFLCAweDAwNUYsIDB4MDA1RiwgMHgwMDVGLCAweDAwMkMsIDB4MzAwMSwgMHgwMDJFLCAweDAwM0IsIDB4MDAzQSwgMHgwMDNGLCAweDAwMjEsIDB4MjAxNCwNCisgICAgMHgwMDI4LCAweDAwMjksIDB4MDA3QiwgMHgwMDdELCAweDMwMTQsIDB4MzAxNSwgMHgwMDIzLCAweDAwMjYsIDB4MDAyQSwgMHgwMDJCLCAweDAwMkQsIDB4MDAzQywgMHgwMDNFLCAweDAwM0QsIDB4MDA1QywgMHgwMDI0LA0KKyAgICAweDAwMjUsIDB4MDA0MCwgMHgwNjRCLCAweDA2NEMsIDB4MDY0RCwgMHgwNjRFLCAweDA2NEYsIDB4MDY1MCwgMHgwNjUxLCAweDA2NTIsIDB4MDYyMSwgMHgwNjIyLCAweDA2MjIsIDB4MDYyMywgMHgwNjIzLCAweDA2MjQsDQorICAgIDB4MDYyNCwgMHgwNjI1LCAweDA2MjUsIDB4MDYyNiwgMHgwNjI2LCAweDA2MjYsIDB4MDYyNiwgMHgwNjI3LCAweDA2MjcsIDB4MDYyOCwgMHgwNjI4LCAweDA2MjgsIDB4MDYyOCwgMHgwNjI5LCAweDA2MjksIDB4MDYyQSwNCisgICAgMHgwNjJBLCAweDA2MkEsIDB4MDYyQSwgMHgwNjJCLCAweDA2MkIsIDB4MDYyQiwgMHgwNjJCLCAweDA2MkMsIDB4MDYyQywgMHgwNjJDLCAweDA2MkMsIDB4MDYyRCwgMHgwNjJELCAweDA2MkQsIDB4MDYyRCwgMHgwNjJFLA0KKyAgICAweDA2MkUsIDB4MDYyRSwgMHgwNjJFLCAweDA2MkYsIDB4MDYyRiwgMHgwNjMwLCAweDA2MzAsIDB4MDYzMSwgMHgwNjMxLCAweDA2MzIsIDB4MDYzMiwgMHgwNjMzLCAweDA2MzMsIDB4MDYzMywgMHgwNjMzLCAweDA2MzQsDQorICAgIDB4MDYzNCwgMHgwNjM0LCAweDA2MzQsIDB4MDYzNSwgMHgwNjM1LCAweDA2MzUsIDB4MDYzNSwgMHgwNjM2LCAweDA2MzYsIDB4MDYzNiwgMHgwNjM2LCAweDA2MzcsIDB4MDYzNywgMHgwNjM3LCAweDA2MzcsIDB4MDYzOCwNCisgICAgMHgwNjM4LCAweDA2MzgsIDB4MDYzOCwgMHgwNjM5LCAweDA2MzksIDB4MDYzOSwgMHgwNjM5LCAweDA2M0EsIDB4MDYzQSwgMHgwNjNBLCAweDA2M0EsIDB4MDY0MSwgMHgwNjQxLCAweDA2NDEsIDB4MDY0MSwgMHgwNjQyLA0KKyAgICAweDA2NDIsIDB4MDY0MiwgMHgwNjQyLCAweDA2NDMsIDB4MDY0MywgMHgwNjQzLCAweDA2NDMsIDB4MDY0NCwgMHgwNjQ0LCAweDA2NDQsIDB4MDY0NCwgMHgwNjQ1LCAweDA2NDUsIDB4MDY0NSwgMHgwNjQ1LCAweDA2NDYsDQorICAgIDB4MDY0NiwgMHgwNjQ2LCAweDA2NDYsIDB4MDY0NywgMHgwNjQ3LCAweDA2NDcsIDB4MDY0NywgMHgwNjQ4LCAweDA2NDgsIDB4MDY0OSwgMHgwNjQ5LCAweDA2NEEsIDB4MDY0QSwgMHgwNjRBLCAweDA2NEEsIDB4MDAyMSwNCisgICAgMHgwMDIyLCAweDAwMjMsIDB4MDAyNCwgMHgwMDI1LCAweDAwMjYsIDB4MDAyNywgMHgwMDI4LCAweDAwMjksIDB4MDAyQSwgMHgwMDJCLCAweDAwMkMsIDB4MDAyRCwgMHgwMDJFLCAweDAwMkYsIDB4MDAzMCwgMHgwMDMxLA0KKyAgICAweDAwMzIsIDB4MDAzMywgMHgwMDM0LCAweDAwMzUsIDB4MDAzNiwgMHgwMDM3LCAweDAwMzgsIDB4MDAzOSwgMHgwMDNBLCAweDAwM0IsIDB4MDAzQywgMHgwMDNELCAweDAwM0UsIDB4MDAzRiwgMHgwMDQwLCAweDAwNDEsDQorICAgIDB4MDA0MiwgMHgwMDQzLCAweDAwNDQsIDB4MDA0NSwgMHgwMDQ2LCAweDAwNDcsIDB4MDA0OCwgMHgwMDQ5LCAweDAwNEEsIDB4MDA0QiwgMHgwMDRDLCAweDAwNEQsIDB4MDA0RSwgMHgwMDRGLCAweDAwNTAsIDB4MDA1MSwNCisgICAgMHgwMDUyLCAweDAwNTMsIDB4MDA1NCwgMHgwMDU1LCAweDAwNTYsIDB4MDA1NywgMHgwMDU4LCAweDAwNTksIDB4MDA1QSwgMHgwMDVCLCAweDAwNUMsIDB4MDA1RCwgMHgwMDVFLCAweDAwNUYsIDB4MDA2MCwgMHgwMDYxLA0KKyAgICAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNjUsIDB4MDA2NiwgMHgwMDY3LCAweDAwNjgsIDB4MDA2OSwgMHgwMDZBLCAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDA2RiwgMHgwMDcwLCAweDAwNzEsDQorICAgIDB4MDA3MiwgMHgwMDczLCAweDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwgMHgwMDc5LCAweDAwN0EsIDB4MDA3QiwgMHgwMDdDLCAweDAwN0QsIDB4MDA3RSwgMHgyOTg1LCAweDI5ODYsIDB4MzAwMiwNCisgICAgMHgzMDBDLCAweDMwMEQsIDB4MzAwMSwgMHgzMEZCLCAweDMwRjIsIDB4MzBBMSwgMHgzMEEzLCAweDMwQTUsIDB4MzBBNywgMHgzMEE5LCAweDMwRTMsIDB4MzBFNSwgMHgzMEU3LCAweDMwQzMsIDB4MzBGQywgMHgzMEEyLA0KKyAgICAweDMwQTQsIDB4MzBBNiwgMHgzMEE4LCAweDMwQUEsIDB4MzBBQiwgMHgzMEFELCAweDMwQUYsIDB4MzBCMSwgMHgzMEIzLCAweDMwQjUsIDB4MzBCNywgMHgzMEI5LCAweDMwQkIsIDB4MzBCRCwgMHgzMEJGLCAweDMwQzEsDQorICAgIDB4MzBDNCwgMHgzMEM2LCAweDMwQzgsIDB4MzBDQSwgMHgzMENCLCAweDMwQ0MsIDB4MzBDRCwgMHgzMENFLCAweDMwQ0YsIDB4MzBEMiwgMHgzMEQ1LCAweDMwRDgsIDB4MzBEQiwgMHgzMERFLCAweDMwREYsIDB4MzBFMCwNCisgICAgMHgzMEUxLCAweDMwRTIsIDB4MzBFNCwgMHgzMEU2LCAweDMwRTgsIDB4MzBFOSwgMHgzMEVBLCAweDMwRUIsIDB4MzBFQywgMHgzMEVELCAweDMwRUYsIDB4MzBGMywgMHgzMDk5LCAweDMwOUEsIDB4MzE2NCwgMHgzMTMxLA0KKyAgICAweDMxMzIsIDB4MzEzMywgMHgzMTM0LCAweDMxMzUsIDB4MzEzNiwgMHgzMTM3LCAweDMxMzgsIDB4MzEzOSwgMHgzMTNBLCAweDMxM0IsIDB4MzEzQywgMHgzMTNELCAweDMxM0UsIDB4MzEzRiwgMHgzMTQwLCAweDMxNDEsDQorICAgIDB4MzE0MiwgMHgzMTQzLCAweDMxNDQsIDB4MzE0NSwgMHgzMTQ2LCAweDMxNDcsIDB4MzE0OCwgMHgzMTQ5LCAweDMxNEEsIDB4MzE0QiwgMHgzMTRDLCAweDMxNEQsIDB4MzE0RSwgMHgzMTRGLCAweDMxNTAsIDB4MzE1MSwNCisgICAgMHgzMTUyLCAweDMxNTMsIDB4MzE1NCwgMHgzMTU1LCAweDMxNTYsIDB4MzE1NywgMHgzMTU4LCAweDMxNTksIDB4MzE1QSwgMHgzMTVCLCAweDMxNUMsIDB4MzE1RCwgMHgzMTVFLCAweDMxNUYsIDB4MzE2MCwgMHgzMTYxLA0KKyAgICAweDMxNjIsIDB4MzE2MywgMHgwMEEyLCAweDAwQTMsIDB4MDBBQywgMHgwMEFGLCAweDAwQTYsIDB4MDBBNSwgMHgyMEE5LCAweDI1MDIsIDB4MjE5MCwgMHgyMTkxLCAweDIxOTIsIDB4MjE5MywgMHgyNUEwLCAweDI1Q0INCit9Ow0KK2V4dGVybiBjb25zdCBGWF9XQ0hBUiBnX1VuaWNvZGVEYXRhX05vcm1hbGl6YXRpb25fTWFwMlsxNzI0XSA9IHsNCisgICAgMHgwMDRGLCAweDAwNDUsIDB4MDA1NCwgMHgwMDRELCAweDAwNkYsIDB4MDA2NSwgMHgwMDQ5LCAweDAwNEEsIDB4MDA2OSwgMHgwMDZBLCAweDAwNEYsIDB4MDA0NSwgMHgwMDZGLCAweDAwNjUsIDB4MDA0NCwgMHgwMTdELA0KKyAgICAweDAwNDQsIDB4MDE3RSwgMHgwMDY0LCAweDAxN0UsIDB4MDA0QywgMHgwMDRBLCAweDAwNEMsIDB4MDA2QSwgMHgwMDZDLCAweDAwNkEsIDB4MDA0RSwgMHgwMDRBLCAweDAwNEUsIDB4MDA2QSwgMHgwMDZFLCAweDAwNkEsDQorICAgIDB4MDA0NCwgMHgwMDVBLCAweDAwNDQsIDB4MDA3QSwgMHgwMDY0LCAweDAwN0EsIDB4MDA2NCwgMHgwMDYyLCAweDAwNzEsIDB4MDA3MCwgMHgwMDRGLCAweDAwNDUsIDB4MDA2NCwgMHgwMDdBLCAweDAwNjQsIDB4MDI5MiwNCisgICAgMHgwMDY0LCAweDAwN0EsIDB4MDA3NCwgMHgwMDczLCAweDAwNzQsIDB4MDI4MywgMHgwMDc0LCAweDAwNjMsIDB4MDA2NiwgMHgwMTRCLCAweDAwNkMsIDB4MDA3MywgMHgwMDZDLCAweDAwN0EsIDB4MDQxRCwgMHgwNDEzLA0KKyAgICAweDA0M0QsIDB4MDQzMywgMHgwNDIyLCAweDA0MjYsIDB4MDQ0MiwgMHgwNDQ2LCAweDA0MTAsIDB4MDQxNSwgMHgwNDMwLCAweDA0MzUsIDB4MDU2NSwgMHgwNTgyLCAweDA2MjcsIDB4MDY3NCwgMHgwNjQ4LCAweDA2NzQsDQorICAgIDB4MDZDNywgMHgwNjc0LCAweDA2NEEsIDB4MDY3NCwgMHgwNkQ1LCAweDA2NTQsIDB4MDZDMSwgMHgwNjU0LCAweDA2RDIsIDB4MDY1NCwgMHgwOTI4LCAweDA5M0MsIDB4MDkzMCwgMHgwOTNDLCAweDA5MzMsIDB4MDkzQywNCisgICAgMHgwOTE1LCAweDA5M0MsIDB4MDkxNiwgMHgwOTNDLCAweDA5MTcsIDB4MDkzQywgMHgwOTFDLCAweDA5M0MsIDB4MDkyMSwgMHgwOTNDLCAweDA5MjIsIDB4MDkzQywgMHgwOTJCLCAweDA5M0MsIDB4MDkyRiwgMHgwOTNDLA0KKyAgICAweDA5QzcsIDB4MDlCRSwgMHgwOUM3LCAweDA5RDcsIDB4MDlBMSwgMHgwOUJDLCAweDA5QTIsIDB4MDlCQywgMHgwOUFGLCAweDA5QkMsIDB4MEEzMiwgMHgwQTNDLCAweDBBMzgsIDB4MEEzQywgMHgwQTE2LCAweDBBM0MsDQorICAgIDB4MEExNywgMHgwQTNDLCAweDBBMUMsIDB4MEEzQywgMHgwQTJCLCAweDBBM0MsIDB4MEI0NywgMHgwQjU2LCAweDBCNDcsIDB4MEIzRSwgMHgwQjQ3LCAweDBCNTcsIDB4MEIyMSwgMHgwQjNDLCAweDBCMjIsIDB4MEIzQywNCisgICAgMHgwQjkyLCAweDBCRDcsIDB4MEJDNiwgMHgwQkJFLCAweDBCQzcsIDB4MEJCRSwgMHgwQkM2LCAweDBCRDcsIDB4MEM0NiwgMHgwQzU2LCAweDBDQkYsIDB4MENENSwgMHgwQ0M2LCAweDBDRDUsIDB4MENDNiwgMHgwQ0Q2LA0KKyAgICAweDBDQzYsIDB4MENDMiwgMHgwQ0NBLCAweDBDRDUsIDB4MEQ0NiwgMHgwRDNFLCAweDBENDcsIDB4MEQzRSwgMHgwRDQ2LCAweDBENTcsIDB4MEREOSwgMHgwRENBLCAweDBERDksIDB4MERDRiwgMHgwRERDLCAweDBEQ0EsDQorICAgIDB4MEREOSwgMHgwRERGLCAweDBFNEQsIDB4MEUzMiwgMHgwRUNELCAweDBFQjIsIDB4MEVBQiwgMHgwRTk5LCAweDBFQUIsIDB4MEVBMSwgMHgwRjQyLCAweDBGQjcsIDB4MEY0QywgMHgwRkI3LCAweDBGNTEsIDB4MEZCNywNCisgICAgMHgwRjU2LCAweDBGQjcsIDB4MEY1QiwgMHgwRkI3LCAweDBGNDAsIDB4MEZCNSwgMHgwRjcxLCAweDBGNzIsIDB4MEY3MSwgMHgwRjc0LCAweDBGQjIsIDB4MEY4MCwgMHgwRkIyLCAweDBGODEsIDB4MEZCMywgMHgwRjgwLA0KKyAgICAweDBGQjMsIDB4MEY4MSwgMHgwRjcxLCAweDBGODAsIDB4MEY5MiwgMHgwRkI3LCAweDBGOUMsIDB4MEZCNywgMHgwRkExLCAweDBGQjcsIDB4MEZBNiwgMHgwRkI3LCAweDBGQUIsIDB4MEZCNywgMHgwRjkwLCAweDBGQjUsDQorICAgIDB4MTAyNSwgMHgxMDJFLCAweDFCMDUsIDB4MUIzNSwgMHgxQjA3LCAweDFCMzUsIDB4MUIwOSwgMHgxQjM1LCAweDFCMEIsIDB4MUIzNSwgMHgxQjBELCAweDFCMzUsIDB4MUIxMSwgMHgxQjM1LCAweDFCM0EsIDB4MUIzNSwNCisgICAgMHgxQjNDLCAweDFCMzUsIDB4MUIzRSwgMHgxQjM1LCAweDFCM0YsIDB4MUIzNSwgMHgxQjQyLCAweDFCMzUsIDB4MDA3NCwgMHgwMDY4LCAweDAwMkUsIDB4MDAyRSwgMHgyMDMyLCAweDIwMzIsIDB4MjAzNSwgMHgyMDM1LA0KKyAgICAweDAwMjEsIDB4MDAyMSwgMHgwMDIwLCAweDAzMDUsIDB4MDAzRiwgMHgwMDNGLCAweDAwM0YsIDB4MDAyMSwgMHgwMDIxLCAweDAwM0YsIDB4MDA1MiwgMHgwMDczLCAweDAwQjAsIDB4MDA0MywgMHgwMEIwLCAweDAwNDYsDQorICAgIDB4MDA0RSwgMHgwMDZGLCAweDAwNTMsIDB4MDA0RCwgMHgwMDU0LCAweDAwNEQsIDB4MDAzMSwgMHgwMDJGLCAweDAwNDksIDB4MDA0OSwgMHgwMDQ5LCAweDAwNTYsIDB4MDA1NiwgMHgwMDQ5LCAweDAwNDksIDB4MDA1OCwNCisgICAgMHgwMDU4LCAweDAwNDksIDB4MDA2OSwgMHgwMDY5LCAweDAwNjksIDB4MDA3NiwgMHgwMDc2LCAweDAwNjksIDB4MDA2OSwgMHgwMDc4LCAweDAwNzgsIDB4MDA2OSwgMHgyMTkwLCAweDAzMzgsIDB4MjE5MiwgMHgwMzM4LA0KKyAgICAweDIxOTQsIDB4MDMzOCwgMHgyMUQwLCAweDAzMzgsIDB4MjFENCwgMHgwMzM4LCAweDIxRDIsIDB4MDMzOCwgMHgyMjIzLCAweDAzMzgsIDB4MjIyNSwgMHgwMzM4LCAweDIyMkIsIDB4MjIyQiwgMHgyMjJFLCAweDIyMkUsDQorICAgIDB4MjIzQywgMHgwMzM4LCAweDIyNDMsIDB4MDMzOCwgMHgyMjQ1LCAweDAzMzgsIDB4MjI0OCwgMHgwMzM4LCAweDAwM0QsIDB4MDAyRiwgMHgyMjYxLCAweDAwMkYsIDB4MjI0RCwgMHgwMDJGLCAweDAwM0MsIDB4MDAyRiwNCisgICAgMHgwMDNFLCAweDAwMkYsIDB4MjI2NCwgMHgwMDJGLCAweDIyNjUsIDB4MDAyRiwgMHgyMjcyLCAweDAwMkYsIDB4MjI3MywgMHgwMDJGLCAweDIyNzYsIDB4MDAyRiwgMHgyMjc3LCAweDAwMkYsIDB4MjI3QSwgMHgwMDJGLA0KKyAgICAweDIyN0IsIDB4MDAyRiwgMHgyMjgyLCAweDAwMkYsIDB4MjI4MywgMHgwMDJGLCAweDIyODYsIDB4MDAyRiwgMHgyMjg3LCAweDAwMkYsIDB4MjJBMiwgMHgwMDJGLCAweDIyQTgsIDB4MDAyRiwgMHgyMkE5LCAweDAwMkYsDQorICAgIDB4MjJBQiwgMHgwMDJGLCAweDIyN0MsIDB4MDAyRiwgMHgyMjdELCAweDAwMkYsIDB4MjI5MSwgMHgwMDJGLCAweDIyOTIsIDB4MDAyRiwgMHgyMkIyLCAweDAwMkYsIDB4MjJCMywgMHgwMDJGLCAweDIyQjQsIDB4MDAyRiwNCisgICAgMHgyMkI1LCAweDAwMkYsIDB4MDA0MiwgMHgwMDUzLCAweDAwNDgsIDB4MDA1NCwgMHgwMDRDLCAweDAwNDYsIDB4MDA1NiwgMHgwMDU0LCAweDAwNDYsIDB4MDA0NiwgMHgwMDQzLCAweDAwNTIsIDB4MDA1MywgMHgwMDUzLA0KKyAgICAweDAwNTMsIDB4MDA0OSwgMHgwMDQ1LCAweDAwNEQsIDB4MDA0NiwgMHgwMDUzLCAweDAwNDcsIDB4MDA1MywgMHgwMDUyLCAweDAwNTMsIDB4MDA1NSwgMHgwMDUzLCAweDAwNTMsIDB4MDA1MCwgMHgwMDMxLCAweDAwMzAsDQorICAgIDB4MDAzMSwgMHgwMDMxLCAweDAwMzEsIDB4MDAzMiwgMHgwMDMxLCAweDAwMzMsIDB4MDAzMSwgMHgwMDM0LCAweDAwMzEsIDB4MDAzNSwgMHgwMDMxLCAweDAwMzYsIDB4MDAzMSwgMHgwMDM3LCAweDAwMzEsIDB4MDAzOCwNCisgICAgMHgwMDMxLCAweDAwMzksIDB4MDAzMiwgMHgwMDMwLCAweDAwMzEsIDB4MDAyRSwgMHgwMDMyLCAweDAwMkUsIDB4MDAzMywgMHgwMDJFLCAweDAwMzQsIDB4MDAyRSwgMHgwMDM1LCAweDAwMkUsIDB4MDAzNiwgMHgwMDJFLA0KKyAgICAweDAwMzcsIDB4MDAyRSwgMHgwMDM4LCAweDAwMkUsIDB4MDAzOSwgMHgwMDJFLCAweDAwMzEsIDB4MDAzMSwgMHgwMDMxLCAweDAwMzIsIDB4MDAzMSwgMHgwMDMzLCAweDAwMzEsIDB4MDAzNCwgMHgwMDMxLCAweDAwMzUsDQorICAgIDB4MDAzMSwgMHgwMDM2LCAweDAwMzEsIDB4MDAzNywgMHgwMDMxLCAweDAwMzgsIDB4MDAzMSwgMHgwMDM5LCAweDAwMzIsIDB4MDAzMCwgMHgwMDMxLCAweDAwMzAsIDB4MDAzMSwgMHgwMDMwLCAweDAwMzEsIDB4MDAzMCwNCisgICAgMHgwMDMxLCAweDAwMzAsIDB4MDAzRCwgMHgwMDNELCAweDJBREQsIDB4MDAyRiwgMHgzMDRCLCAweDMwOTksIDB4MzA0RCwgMHgzMDk5LCAweDMwNEYsIDB4MzA5OSwgMHgzMDUxLCAweDMwOTksIDB4MzA1MywgMHgzMDk5LA0KKyAgICAweDMwNTUsIDB4MzA5OSwgMHgzMDU3LCAweDMwOTksIDB4MzA1OSwgMHgzMDk5LCAweDMwNUIsIDB4MzA5OSwgMHgzMDVELCAweDMwOTksIDB4MzA1RiwgMHgzMDk5LCAweDMwNjEsIDB4MzA5OSwgMHgzMDY0LCAweDMwOTksDQorICAgIDB4MzA2NiwgMHgzMDk5LCAweDMwNjgsIDB4MzA5OSwgMHgzMDZGLCAweDMwOTksIDB4MzA2RiwgMHgzMDlBLCAweDMwNzIsIDB4MzA5OSwgMHgzMDcyLCAweDMwOUEsIDB4MzA3NSwgMHgzMDk5LCAweDMwNzUsIDB4MzA5QSwNCisgICAgMHgzMDc4LCAweDMwOTksIDB4MzA3OCwgMHgzMDlBLCAweDMwN0IsIDB4MzA5OSwgMHgzMDdCLCAweDMwOUEsIDB4MzA0NiwgMHgzMDk5LCAweDAwMjAsIDB4MzA5OSwgMHgwMDIwLCAweDMwOUEsIDB4MzA5RCwgMHgzMDk5LA0KKyAgICAweDMwODgsIDB4MzA4QSwgMHgzMEFCLCAweDMwOTksIDB4MzBBRCwgMHgzMDk5LCAweDMwQUYsIDB4MzA5OSwgMHgzMEIxLCAweDMwOTksIDB4MzBCMywgMHgzMDk5LCAweDMwQjUsIDB4MzA5OSwgMHgzMEI3LCAweDMwOTksDQorICAgIDB4MzBCOSwgMHgzMDk5LCAweDMwQkIsIDB4MzA5OSwgMHgzMEJELCAweDMwOTksIDB4MzBCRiwgMHgzMDk5LCAweDMwQzEsIDB4MzA5OSwgMHgzMEM0LCAweDMwOTksIDB4MzBDNiwgMHgzMDk5LCAweDMwQzgsIDB4MzA5OSwNCisgICAgMHgzMENGLCAweDMwOTksIDB4MzBDRiwgMHgzMDlBLCAweDMwRDIsIDB4MzA5OSwgMHgzMEQyLCAweDMwOUEsIDB4MzBENSwgMHgzMDk5LCAweDMwRDUsIDB4MzA5QSwgMHgzMEQ4LCAweDMwOTksIDB4MzBEOCwgMHgzMDlBLA0KKyAgICAweDMwREIsIDB4MzA5OSwgMHgzMERCLCAweDMwOUEsIDB4MzBBNiwgMHgzMDk5LCAweDMwRUYsIDB4MzA5OSwgMHgzMEYwLCAweDMwOTksIDB4MzBGMSwgMHgzMDk5LCAweDMwRjIsIDB4MzA5OSwgMHgzMEZELCAweDMwOTksDQorICAgIDB4MzBCMywgMHgzMEM4LCAweDAwMzIsIDB4MDAzMSwgMHgwMDMyLCAweDAwMzIsIDB4MDAzMiwgMHgwMDMzLCAweDAwMzIsIDB4MDAzNCwgMHgwMDMyLCAweDAwMzUsIDB4MDAzMiwgMHgwMDM2LCAweDAwMzIsIDB4MDAzNywNCisgICAgMHgwMDMyLCAweDAwMzgsIDB4MDAzMiwgMHgwMDM5LCAweDAwMzMsIDB4MDAzMCwgMHgwMDMzLCAweDAwMzEsIDB4MDAzMywgMHgwMDMyLCAweDAwMzMsIDB4MDAzMywgMHgwMDMzLCAweDAwMzQsIDB4MDAzMywgMHgwMDM1LA0KKyAgICAweDExMDAsIDB4MTE2MSwgMHgxMTAyLCAweDExNjEsIDB4MTEwMywgMHgxMTYxLCAweDExMDUsIDB4MTE2MSwgMHgxMTA2LCAweDExNjEsIDB4MTEwNywgMHgxMTYxLCAweDExMDksIDB4MTE2MSwgMHgxMTBCLCAweDExNjEsDQorICAgIDB4MTEwQywgMHgxMTYxLCAweDExMEUsIDB4MTE2MSwgMHgxMTBGLCAweDExNjEsIDB4MTExMCwgMHgxMTYxLCAweDExMTEsIDB4MTE2MSwgMHgxMTEyLCAweDExNjEsIDB4MTEwQiwgMHgxMTZFLCAweDAwMzMsIDB4MDAzNiwNCisgICAgMHgwMDMzLCAweDAwMzcsIDB4MDAzMywgMHgwMDM4LCAweDAwMzMsIDB4MDAzOSwgMHgwMDM0LCAweDAwMzAsIDB4MDAzNCwgMHgwMDMxLCAweDAwMzQsIDB4MDAzMiwgMHgwMDM0LCAweDAwMzMsIDB4MDAzNCwgMHgwMDM0LA0KKyAgICAweDAwMzQsIDB4MDAzNSwgMHgwMDM0LCAweDAwMzYsIDB4MDAzNCwgMHgwMDM3LCAweDAwMzQsIDB4MDAzOCwgMHgwMDM0LCAweDAwMzksIDB4MDAzNSwgMHgwMDMwLCAweDAwMzEsIDB4NjcwOCwgMHgwMDMyLCAweDY3MDgsDQorICAgIDB4MDAzMywgMHg2NzA4LCAweDAwMzQsIDB4NjcwOCwgMHgwMDM1LCAweDY3MDgsIDB4MDAzNiwgMHg2NzA4LCAweDAwMzcsIDB4NjcwOCwgMHgwMDM4LCAweDY3MDgsIDB4MDAzOSwgMHg2NzA4LCAweDAwNDgsIDB4MDA2NywNCisgICAgMHgwMDY1LCAweDAwNTYsIDB4MzBBRSwgMHgzMEFDLCAweDMwQUQsIDB4MzBFRCwgMHgzMEM3LCAweDMwQjcsIDB4MzBDOSwgMHgzMEVCLCAweDMwQzgsIDB4MzBGMywgMHgzMENBLCAweDMwQ0UsIDB4MzBENCwgMHgzMEIzLA0KKyAgICAweDMwRDMsIDB4MzBFQiwgMHgzMERBLCAweDMwQkQsIDB4MzBEQiwgMHgzMEYzLCAweDMwREYsIDB4MzBFQSwgMHgzMEUxLCAweDMwQUMsIDB4MzBFQSwgMHgzMEU5LCAweDMwRUMsIDB4MzBFMCwgMHgwMDMwLCAweDcwQjksDQorICAgIDB4MDAzMSwgMHg3MEI5LCAweDAwMzIsIDB4NzBCOSwgMHgwMDMzLCAweDcwQjksIDB4MDAzNCwgMHg3MEI5LCAweDAwMzUsIDB4NzBCOSwgMHgwMDM2LCAweDcwQjksIDB4MDAzNywgMHg3MEI5LCAweDAwMzgsIDB4NzBCOSwNCisgICAgMHgwMDM5LCAweDcwQjksIDB4MDA2NCwgMHgwMDYxLCAweDAwNDEsIDB4MDA1NSwgMHgwMDZGLCAweDAwNTYsIDB4MDA3MCwgMHgwMDYzLCAweDAwNjQsIDB4MDA2RCwgMHgwMDQ5LCAweDAwNTUsIDB4NUU3MywgMHg2MjEwLA0KKyAgICAweDY2MkQsIDB4NTQ4QywgMHg1OTI3LCAweDZCNjMsIDB4NjYwRSwgMHg2Q0JCLCAweDAwNzAsIDB4MDA0MSwgMHgwMDZFLCAweDAwNDEsIDB4MDNCQywgMHgwMDQxLCAweDAwNkQsIDB4MDA0MSwgMHgwMDZCLCAweDAwNDEsDQorICAgIDB4MDA0QiwgMHgwMDQyLCAweDAwNEQsIDB4MDA0MiwgMHgwMDQ3LCAweDAwNDIsIDB4MDA3MCwgMHgwMDQ2LCAweDAwNkUsIDB4MDA0NiwgMHgwM0JDLCAweDAwNDYsIDB4MDNCQywgMHgwMDY3LCAweDAwNkQsIDB4MDA2NywNCisgICAgMHgwMDZCLCAweDAwNjcsIDB4MDA0OCwgMHgwMDdBLCAweDAzQkMsIDB4MjExMywgMHgwMDZELCAweDIxMTMsIDB4MDA2NCwgMHgyMTEzLCAweDAwNkIsIDB4MjExMywgMHgwMDY2LCAweDAwNkQsIDB4MDA2RSwgMHgwMDZELA0KKyAgICAweDAzQkMsIDB4MDA2RCwgMHgwMDZELCAweDAwNkQsIDB4MDA2MywgMHgwMDZELCAweDAwNkIsIDB4MDA2RCwgMHgwMDZELCAweDAwQjIsIDB4MDA2RCwgMHgwMEIzLCAweDAwNTAsIDB4MDA2MSwgMHgwMDcwLCAweDAwNzMsDQorICAgIDB4MDA2RSwgMHgwMDczLCAweDAzQkMsIDB4MDA3MywgMHgwMDZELCAweDAwNzMsIDB4MDA3MCwgMHgwMDU2LCAweDAwNkUsIDB4MDA1NiwgMHgwM0JDLCAweDAwNTYsIDB4MDA2RCwgMHgwMDU2LCAweDAwNkIsIDB4MDA1NiwNCisgICAgMHgwMDRELCAweDAwNTYsIDB4MDA3MCwgMHgwMDU3LCAweDAwNkUsIDB4MDA1NywgMHgwM0JDLCAweDAwNTcsIDB4MDA2RCwgMHgwMDU3LCAweDAwNkIsIDB4MDA1NywgMHgwMDRELCAweDAwNTcsIDB4MDA2QiwgMHgwM0E5LA0KKyAgICAweDAwNEQsIDB4MDNBOSwgMHgwMDQyLCAweDAwNzEsIDB4MDA2MywgMHgwMDYzLCAweDAwNjMsIDB4MDA2NCwgMHgwMDY0LCAweDAwNDIsIDB4MDA0NywgMHgwMDc5LCAweDAwNjgsIDB4MDA2MSwgMHgwMDQ4LCAweDAwNTAsDQorICAgIDB4MDA2OSwgMHgwMDZFLCAweDAwNEIsIDB4MDA0QiwgMHgwMDRCLCAweDAwNEQsIDB4MDA2QiwgMHgwMDc0LCAweDAwNkMsIDB4MDA2RCwgMHgwMDZDLCAweDAwNkUsIDB4MDA2QywgMHgwMDc4LCAweDAwNkQsIDB4MDA2MiwNCisgICAgMHgwMDUwLCAweDAwNDgsIDB4MDA1MCwgMHgwMDUyLCAweDAwNzMsIDB4MDA3MiwgMHgwMDUzLCAweDAwNzYsIDB4MDA1NywgMHgwMDYyLCAweDAwMzEsIDB4NjVFNSwgMHgwMDMyLCAweDY1RTUsIDB4MDAzMywgMHg2NUU1LA0KKyAgICAweDAwMzQsIDB4NjVFNSwgMHgwMDM1LCAweDY1RTUsIDB4MDAzNiwgMHg2NUU1LCAweDAwMzcsIDB4NjVFNSwgMHgwMDM4LCAweDY1RTUsIDB4MDAzOSwgMHg2NUU1LCAweDAwNjYsIDB4MDA2NiwgMHgwMDY2LCAweDAwNjksDQorICAgIDB4MDA2NiwgMHgwMDZDLCAweDAxN0YsIDB4MDA3NCwgMHgwMDczLCAweDAwNzQsIDB4MDU3NCwgMHgwNTc2LCAweDA1NzQsIDB4MDU2NSwgMHgwNTc0LCAweDA1NkIsIDB4MDU3RSwgMHgwNTc2LCAweDA1NzQsIDB4MDU2RCwNCisgICAgMHgwNUQ5LCAweDA1QjQsIDB4MDVGMiwgMHgwNUI3LCAweDA1RTksIDB4MDVDMSwgMHgwNUU5LCAweDA1QzIsIDB4RkI0OSwgMHgwNUMxLCAweEZCNDksIDB4MDVDMiwgMHgwNUQwLCAweDA1QjcsIDB4MDVEMCwgMHgwNUI4LA0KKyAgICAweDA1RDAsIDB4MDVCQywgMHgwNUQxLCAweDA1QkMsIDB4MDVEMiwgMHgwNUJDLCAweDA1RDMsIDB4MDVCQywgMHgwNUQ0LCAweDA1QkMsIDB4MDVENSwgMHgwNUJDLCAweDA1RDYsIDB4MDVCQywgMHgwNUQ4LCAweDA1QkMsDQorICAgIDB4MDVEOSwgMHgwNUJDLCAweDA1REEsIDB4MDVCQywgMHgwNURCLCAweDA1QkMsIDB4MDVEQywgMHgwNUJDLCAweDA1REUsIDB4MDVCQywgMHgwNUUwLCAweDA1QkMsIDB4MDVFMSwgMHgwNUJDLCAweDA1RTMsIDB4MDVCQywNCisgICAgMHgwNUU0LCAweDA1QkMsIDB4MDVFNiwgMHgwNUJDLCAweDA1RTcsIDB4MDVCQywgMHgwNUU4LCAweDA1QkMsIDB4MDVFOSwgMHgwNUJDLCAweDA1RUEsIDB4MDVCQywgMHgwNUQ1LCAweDA1QjksIDB4MDVEMSwgMHgwNUJGLA0KKyAgICAweDA1REIsIDB4MDVCRiwgMHgwNUU0LCAweDA1QkYsIDB4MDVEMCwgMHgwNURDLCAweDA2MjYsIDB4MDYyNywgMHgwNjI2LCAweDA2MjcsIDB4MDYyNiwgMHgwNkQ1LCAweDA2MjYsIDB4MDZENSwgMHgwNjI2LCAweDA2NDgsDQorICAgIDB4MDYyNiwgMHgwNjQ4LCAweDA2MjYsIDB4MDZDNywgMHgwNjI2LCAweDA2QzcsIDB4MDYyNiwgMHgwNkM2LCAweDA2MjYsIDB4MDZDNiwgMHgwNjI2LCAweDA2QzgsIDB4MDYyNiwgMHgwNkM4LCAweDA2MjYsIDB4MDZEMCwNCisgICAgMHgwNjI2LCAweDA2RDAsIDB4MDYyNiwgMHgwNkQwLCAweDA2MjYsIDB4MDY0OSwgMHgwNjI2LCAweDA2NDksIDB4MDYyNiwgMHgwNjQ5LCAweDA2MjYsIDB4MDYyQywgMHgwNjI2LCAweDA2MkQsIDB4MDYyNiwgMHgwNjQ1LA0KKyAgICAweDA2MjYsIDB4MDY0OSwgMHgwNjI2LCAweDA2NEEsIDB4MDYyOCwgMHgwNjJDLCAweDA2MjgsIDB4MDYyRCwgMHgwNjI4LCAweDA2MkUsIDB4MDYyOCwgMHgwNjQ1LCAweDA2MjgsIDB4MDY0OSwgMHgwNjI4LCAweDA2NEEsDQorICAgIDB4MDYyQSwgMHgwNjJDLCAweDA2MkEsIDB4MDYyRCwgMHgwNjJBLCAweDA2MkUsIDB4MDYyQSwgMHgwNjQ1LCAweDA2MkEsIDB4MDY0OSwgMHgwNjJBLCAweDA2NEEsIDB4MDYyQiwgMHgwNjJDLCAweDA2MkIsIDB4MDY0NSwNCisgICAgMHgwNjJCLCAweDA2NDksIDB4MDYyQiwgMHgwNjRBLCAweDA2MkMsIDB4MDYyRCwgMHgwNjJDLCAweDA2NDUsIDB4MDYyRCwgMHgwNjJDLCAweDA2MkQsIDB4MDY0NSwgMHgwNjJFLCAweDA2MkMsIDB4MDYyRSwgMHgwNjJELA0KKyAgICAweDA2MkUsIDB4MDY0NSwgMHgwNjMzLCAweDA2MkMsIDB4MDYzMywgMHgwNjJELCAweDA2MzMsIDB4MDYyRSwgMHgwNjMzLCAweDA2NDUsIDB4MDYzNSwgMHgwNjJELCAweDA2MzUsIDB4MDY0NSwgMHgwNjM2LCAweDA2MkMsDQorICAgIDB4MDYzNiwgMHgwNjJELCAweDA2MzYsIDB4MDYyRSwgMHgwNjM2LCAweDA2NDUsIDB4MDYzNywgMHgwNjJELCAweDA2MzcsIDB4MDY0NSwgMHgwNjM4LCAweDA2NDUsIDB4MDYzOSwgMHgwNjJDLCAweDA2MzksIDB4MDY0NSwNCisgICAgMHgwNjNBLCAweDA2MkMsIDB4MDYzQSwgMHgwNjQ1LCAweDA2NDEsIDB4MDYyQywgMHgwNjQxLCAweDA2MkQsIDB4MDY0MSwgMHgwNjJFLCAweDA2NDEsIDB4MDY0NSwgMHgwNjQxLCAweDA2NDksIDB4MDY0MSwgMHgwNjRBLA0KKyAgICAweDA2NDIsIDB4MDYyRCwgMHgwNjQyLCAweDA2NDUsIDB4MDY0MiwgMHgwNjQ5LCAweDA2NDIsIDB4MDY0QSwgMHgwNjQzLCAweDA2MjcsIDB4MDY0MywgMHgwNjJDLCAweDA2NDMsIDB4MDYyRCwgMHgwNjQzLCAweDA2MkUsDQorICAgIDB4MDY0MywgMHgwNjQ0LCAweDA2NDMsIDB4MDY0NSwgMHgwNjQzLCAweDA2NDksIDB4MDY0MywgMHgwNjRBLCAweDA2NDQsIDB4MDYyQywgMHgwNjQ0LCAweDA2MkQsIDB4MDY0NCwgMHgwNjJFLCAweDA2NDQsIDB4MDY0NSwNCisgICAgMHgwNjQ0LCAweDA2NDksIDB4MDY0NCwgMHgwNjRBLCAweDA2NDUsIDB4MDYyQywgMHgwNjQ1LCAweDA2MkQsIDB4MDY0NSwgMHgwNjJFLCAweDA2NDUsIDB4MDY0NSwgMHgwNjQ1LCAweDA2NDksIDB4MDY0NSwgMHgwNjRBLA0KKyAgICAweDA2NDYsIDB4MDYyQywgMHgwNjQ2LCAweDA2MkQsIDB4MDY0NiwgMHgwNjJFLCAweDA2NDYsIDB4MDY0NSwgMHgwNjQ2LCAweDA2NDksIDB4MDY0NiwgMHgwNjRBLCAweDA2NDcsIDB4MDYyQywgMHgwNjQ3LCAweDA2NDUsDQorICAgIDB4MDY0NywgMHgwNjQ5LCAweDA2NDcsIDB4MDY0QSwgMHgwNjRBLCAweDA2MkMsIDB4MDY0QSwgMHgwNjJELCAweDA2NEEsIDB4MDYyRSwgMHgwNjRBLCAweDA2NDUsIDB4MDY0QSwgMHgwNjQ5LCAweDA2NEEsIDB4MDY0QSwNCisgICAgMHgwNjMwLCAweDA2NzAsIDB4MDYzMSwgMHgwNjcwLCAweDA2NDksIDB4MDY3MCwgMHgwNjRDLCAweDA2NTEsIDB4MDY0RCwgMHgwNjUxLCAweDA2NEUsIDB4MDY1MSwgMHgwNjRGLCAweDA2NTEsIDB4MDY1MCwgMHgwNjUxLA0KKyAgICAweDA2NTEsIDB4MDY3MCwgMHgwNjI2LCAweDA2MzEsIDB4MDYyNiwgMHgwNjMyLCAweDA2MjYsIDB4MDY0NSwgMHgwNjI2LCAweDA2NDYsIDB4MDYyNiwgMHgwNjQ5LCAweDA2MjYsIDB4MDY0QSwgMHgwNjI4LCAweDA2MzEsDQorICAgIDB4MDYyOCwgMHgwNjMyLCAweDA2MjgsIDB4MDY0NSwgMHgwNjI4LCAweDA2NDYsIDB4MDYyOCwgMHgwNjQ5LCAweDA2MjgsIDB4MDY0QSwgMHgwNjJBLCAweDA2MzEsIDB4MDYyQSwgMHgwNjMyLCAweDA2MkEsIDB4MDY0NSwNCisgICAgMHgwNjJBLCAweDA2NDYsIDB4MDYyQSwgMHgwNjQ5LCAweDA2MkEsIDB4MDY0QSwgMHgwNjJCLCAweDA2MzEsIDB4MDYyQiwgMHgwNjMyLCAweDA2MkIsIDB4MDY0NSwgMHgwNjJCLCAweDA2NDYsIDB4MDYyQiwgMHgwNjQ5LA0KKyAgICAweDA2MkIsIDB4MDY0QSwgMHgwNjQxLCAweDA2NDksIDB4MDY0MSwgMHgwNjRBLCAweDA2NDIsIDB4MDY0OSwgMHgwNjQyLCAweDA2NEEsIDB4MDY0MywgMHgwNjI3LCAweDA2NDMsIDB4MDY0NCwgMHgwNjQzLCAweDA2NDUsDQorICAgIDB4MDY0MywgMHgwNjQ5LCAweDA2NDMsIDB4MDY0QSwgMHgwNjQ0LCAweDA2NDUsIDB4MDY0NCwgMHgwNjQ5LCAweDA2NDQsIDB4MDY0QSwgMHgwNjQ1LCAweDA2MjcsIDB4MDY0NSwgMHgwNjQ1LCAweDA2NDYsIDB4MDYzMSwNCisgICAgMHgwNjQ2LCAweDA2MzIsIDB4MDY0NiwgMHgwNjQ1LCAweDA2NDYsIDB4MDY0NiwgMHgwNjQ2LCAweDA2NDksIDB4MDY0NiwgMHgwNjRBLCAweDA2NDksIDB4MDY3MCwgMHgwNjRBLCAweDA2MzEsIDB4MDY0QSwgMHgwNjMyLA0KKyAgICAweDA2NEEsIDB4MDY0NSwgMHgwNjRBLCAweDA2NDYsIDB4MDY0QSwgMHgwNjQ5LCAweDA2NEEsIDB4MDY0QSwgMHgwNjI2LCAweDA2MkMsIDB4MDYyNiwgMHgwNjJELCAweDA2MjYsIDB4MDYyRSwgMHgwNjI2LCAweDA2NDUsDQorICAgIDB4MDYyNiwgMHgwNjQ3LCAweDA2MjgsIDB4MDYyQywgMHgwNjI4LCAweDA2MkQsIDB4MDYyOCwgMHgwNjJFLCAweDA2MjgsIDB4MDY0NSwgMHgwNjI4LCAweDA2NDcsIDB4MDYyQSwgMHgwNjJDLCAweDA2MkEsIDB4MDYyRCwNCisgICAgMHgwNjJBLCAweDA2MkUsIDB4MDYyQSwgMHgwNjQ1LCAweDA2MkEsIDB4MDY0NywgMHgwNjJCLCAweDA2NDUsIDB4MDYyQywgMHgwNjJELCAweDA2MkMsIDB4MDY0NSwgMHgwNjJELCAweDA2MkMsIDB4MDYyRCwgMHgwNjQ1LA0KKyAgICAweDA2MkUsIDB4MDYyQywgMHgwNjJFLCAweDA2NDUsIDB4MDYzMywgMHgwNjJDLCAweDA2MzMsIDB4MDYyRCwgMHgwNjMzLCAweDA2MkUsIDB4MDYzMywgMHgwNjQ1LCAweDA2MzUsIDB4MDYyRCwgMHgwNjM1LCAweDA2MkUsDQorICAgIDB4MDYzNSwgMHgwNjQ1LCAweDA2MzYsIDB4MDYyQywgMHgwNjM2LCAweDA2MkQsIDB4MDYzNiwgMHgwNjJFLCAweDA2MzYsIDB4MDY0NSwgMHgwNjM3LCAweDA2MkQsIDB4MDYzOCwgMHgwNjQ1LCAweDA2MzksIDB4MDYyQywNCisgICAgMHgwNjM5LCAweDA2NDUsIDB4MDYzQSwgMHgwNjJDLCAweDA2M0EsIDB4MDY0NSwgMHgwNjQxLCAweDA2MkMsIDB4MDY0MSwgMHgwNjJELCAweDA2NDEsIDB4MDYyRSwgMHgwNjQxLCAweDA2NDUsIDB4MDY0MiwgMHgwNjJELA0KKyAgICAweDA2NDIsIDB4MDY0NSwgMHgwNjQzLCAweDA2MkMsIDB4MDY0MywgMHgwNjJELCAweDA2NDMsIDB4MDYyRSwgMHgwNjQzLCAweDA2NDQsIDB4MDY0MywgMHgwNjQ1LCAweDA2NDQsIDB4MDYyQywgMHgwNjQ0LCAweDA2MkQsDQorICAgIDB4MDY0NCwgMHgwNjJFLCAweDA2NDQsIDB4MDY0NSwgMHgwNjQ0LCAweDA2NDcsIDB4MDY0NSwgMHgwNjJDLCAweDA2NDUsIDB4MDYyRCwgMHgwNjQ1LCAweDA2MkUsIDB4MDY0NSwgMHgwNjQ1LCAweDA2NDYsIDB4MDYyQywNCisgICAgMHgwNjQ2LCAweDA2MkQsIDB4MDY0NiwgMHgwNjJFLCAweDA2NDYsIDB4MDY0NSwgMHgwNjQ2LCAweDA2NDcsIDB4MDY0NywgMHgwNjJDLCAweDA2NDcsIDB4MDY0NSwgMHgwNjQ3LCAweDA2NzAsIDB4MDY0QSwgMHgwNjJDLA0KKyAgICAweDA2NEEsIDB4MDYyRCwgMHgwNjRBLCAweDA2MkUsIDB4MDY0QSwgMHgwNjQ1LCAweDA2NEEsIDB4MDY0NywgMHgwNjI2LCAweDA2NDUsIDB4MDYyNiwgMHgwNjQ3LCAweDA2MjgsIDB4MDY0NSwgMHgwNjI4LCAweDA2NDcsDQorICAgIDB4MDYyQSwgMHgwNjQ1LCAweDA2MkEsIDB4MDY0NywgMHgwNjJCLCAweDA2NDUsIDB4MDYyQiwgMHgwNjQ3LCAweDA2MzMsIDB4MDY0NSwgMHgwNjMzLCAweDA2NDcsIDB4MDYzNCwgMHgwNjQ1LCAweDA2MzQsIDB4MDY0NywNCisgICAgMHgwNjQzLCAweDA2NDQsIDB4MDY0MywgMHgwNjQ1LCAweDA2NDQsIDB4MDY0NSwgMHgwNjQ2LCAweDA2NDUsIDB4MDY0NiwgMHgwNjQ3LCAweDA2NEEsIDB4MDY0NSwgMHgwNjRBLCAweDA2NDcsIDB4MDYzNywgMHgwNjQ5LA0KKyAgICAweDA2MzcsIDB4MDY0QSwgMHgwNjM5LCAweDA2NDksIDB4MDYzOSwgMHgwNjRBLCAweDA2M0EsIDB4MDY0OSwgMHgwNjNBLCAweDA2NEEsIDB4MDYzMywgMHgwNjQ5LCAweDA2MzMsIDB4MDY0QSwgMHgwNjM0LCAweDA2NDksDQorICAgIDB4MDYzNCwgMHgwNjRBLCAweDA2MkQsIDB4MDY0OSwgMHgwNjJELCAweDA2NEEsIDB4MDYyQywgMHgwNjQ5LCAweDA2MkMsIDB4MDY0QSwgMHgwNjJFLCAweDA2NDksIDB4MDYyRSwgMHgwNjRBLCAweDA2MzUsIDB4MDY0OSwNCisgICAgMHgwNjM1LCAweDA2NEEsIDB4MDYzNiwgMHgwNjQ5LCAweDA2MzYsIDB4MDY0QSwgMHgwNjM0LCAweDA2MkMsIDB4MDYzNCwgMHgwNjJELCAweDA2MzQsIDB4MDYyRSwgMHgwNjM0LCAweDA2NDUsIDB4MDYzNCwgMHgwNjMxLA0KKyAgICAweDA2MzMsIDB4MDYzMSwgMHgwNjM1LCAweDA2MzEsIDB4MDYzNiwgMHgwNjMxLCAweDA2MzcsIDB4MDY0OSwgMHgwNjM3LCAweDA2NEEsIDB4MDYzOSwgMHgwNjQ5LCAweDA2MzksIDB4MDY0QSwgMHgwNjNBLCAweDA2NDksDQorICAgIDB4MDYzQSwgMHgwNjRBLCAweDA2MzMsIDB4MDY0OSwgMHgwNjMzLCAweDA2NEEsIDB4MDYzNCwgMHgwNjQ5LCAweDA2MzQsIDB4MDY0QSwgMHgwNjJELCAweDA2NDksIDB4MDYyRCwgMHgwNjRBLCAweDA2MkMsIDB4MDY0OSwNCisgICAgMHgwNjJDLCAweDA2NEEsIDB4MDYyRSwgMHgwNjQ5LCAweDA2MkUsIDB4MDY0QSwgMHgwNjM1LCAweDA2NDksIDB4MDYzNSwgMHgwNjRBLCAweDA2MzYsIDB4MDY0OSwgMHgwNjM2LCAweDA2NEEsIDB4MDYzNCwgMHgwNjJDLA0KKyAgICAweDA2MzQsIDB4MDYyRCwgMHgwNjM0LCAweDA2MkUsIDB4MDYzNCwgMHgwNjQ1LCAweDA2MzQsIDB4MDYzMSwgMHgwNjMzLCAweDA2MzEsIDB4MDYzNSwgMHgwNjMxLCAweDA2MzYsIDB4MDYzMSwgMHgwNjM0LCAweDA2MkMsDQorICAgIDB4MDYzNCwgMHgwNjJELCAweDA2MzQsIDB4MDYyRSwgMHgwNjM0LCAweDA2NDUsIDB4MDYzMywgMHgwNjQ3LCAweDA2MzQsIDB4MDY0NywgMHgwNjM3LCAweDA2NDUsIDB4MDYzMywgMHgwNjJDLCAweDA2MzMsIDB4MDYyRCwNCisgICAgMHgwNjMzLCAweDA2MkUsIDB4MDYzNCwgMHgwNjJDLCAweDA2MzQsIDB4MDYyRCwgMHgwNjM0LCAweDA2MkUsIDB4MDYzNywgMHgwNjQ1LCAweDA2MzgsIDB4MDY0NSwgMHgwNjI3LCAweDA2NEIsIDB4MDYyNywgMHgwNjRCLA0KKyAgICAweDA2NDAsIDB4MDY0QiwgMHgwNjQwLCAweDA2NEUsIDB4MDY0MCwgMHgwNjRGLCAweDA2NDAsIDB4MDY1MCwgMHgwNjQwLCAweDA2NTEsIDB4MDY0MCwgMHgwNjUyLCAweDA2NDQsIDB4MDYyMiwgMHgwNjQ0LCAweDA2MjIsDQorICAgIDB4MDY0NCwgMHgwNjIzLCAweDA2NDQsIDB4MDYyMywgMHgwNjQ0LCAweDA2MjUsIDB4MDY0NCwgMHgwNjI1LCAweDA2NDQsIDB4MDYyNywgMHgwNjQ0LCAweDA2MjcNCit9Ow0KK2V4dGVybiBjb25zdCBGWF9XQ0hBUiBnX1VuaWNvZGVEYXRhX05vcm1hbGl6YXRpb25fTWFwM1sxMTY0XSA9IHsNCisgICAgMHgwMDMxLCAweDAwMkYsIDB4MDAzNCwgMHgwMDMxLCAweDAwMkYsIDB4MDAzMiwgMHgwMDMzLCAweDAwMkYsIDB4MDAzNCwgMHgwMDJFLCAweDAwMkUsIDB4MDAyRSwgMHgyMDMyLCAweDIwMzIsIDB4MjAzMiwgMHgyMDM1LA0KKyAgICAweDIwMzUsIDB4MjAzNSwgMHgwMDYxLCAweDAwMkYsIDB4MDA2MywgMHgwMDYxLCAweDAwMkYsIDB4MDA3MywgMHgwMDYzLCAweDAwMkYsIDB4MDA2RiwgMHgwMDYzLCAweDAwMkYsIDB4MDA3NSwgMHgwMDU0LCAweDAwNDUsDQorICAgIDB4MDA0QywgMHgwMDQ2LCAweDAwNDEsIDB4MDA1OCwgMHgwMDMxLCAweDAwMkYsIDB4MDAzNywgMHgwMDMxLCAweDAwMkYsIDB4MDAzOSwgMHgwMDMxLCAweDAwMkYsIDB4MDAzMywgMHgwMDMyLCAweDAwMkYsIDB4MDAzMywNCisgICAgMHgwMDMxLCAweDAwMkYsIDB4MDAzNSwgMHgwMDMyLCAweDAwMkYsIDB4MDAzNSwgMHgwMDMzLCAweDAwMkYsIDB4MDAzNSwgMHgwMDM0LCAweDAwMkYsIDB4MDAzNSwgMHgwMDMxLCAweDAwMkYsIDB4MDAzNiwgMHgwMDM1LA0KKyAgICAweDAwMkYsIDB4MDAzNiwgMHgwMDMxLCAweDAwMkYsIDB4MDAzOCwgMHgwMDMzLCAweDAwMkYsIDB4MDAzOCwgMHgwMDM1LCAweDAwMkYsIDB4MDAzOCwgMHgwMDM3LCAweDAwMkYsIDB4MDAzOCwgMHgwMDQ5LCAweDAwNDksDQorICAgIDB4MDA0OSwgMHgwMDU2LCAweDAwNDksIDB4MDA0OSwgMHgwMDU4LCAweDAwNDksIDB4MDA0OSwgMHgwMDY5LCAweDAwNjksIDB4MDA2OSwgMHgwMDc2LCAweDAwNjksIDB4MDA2OSwgMHgwMDc4LCAweDAwNjksIDB4MDA2OSwNCisgICAgMHgwMDMwLCAweDIwNDQsIDB4MDAzMywgMHgyMjJCLCAweDIyMkIsIDB4MjIyQiwgMHgyMjJFLCAweDIyMkUsIDB4MjIyRSwgMHgwMDRFLCAweDAwNTUsIDB4MDA0QywgMHgwMDUzLCAweDAwNEYsIDB4MDA0OCwgMHgwMDUzLA0KKyAgICAweDAwNTQsIDB4MDA1OCwgMHgwMDQ1LCAweDAwNTQsIDB4MDA1OCwgMHgwMDQ1LCAweDAwNEYsIDB4MDA1NCwgMHgwMDQ1LCAweDAwNEUsIDB4MDA1MSwgMHgwMDQxLCAweDAwNDMsIDB4MDA0QiwgMHgwMDQyLCAweDAwNDUsDQorICAgIDB4MDA0QywgMHgwMDQ0LCAweDAwNEMsIDB4MDA0NSwgMHgwMDQ0LCAweDAwNDMsIDB4MDAzMSwgMHgwMDQ0LCAweDAwNDMsIDB4MDAzMiwgMHgwMDQ0LCAweDAwNDMsIDB4MDAzMywgMHgwMDQ0LCAweDAwNDMsIDB4MDAzNCwNCisgICAgMHgwMDRFLCAweDAwNDEsIDB4MDA0QiwgMHgwMDUzLCAweDAwNTksIDB4MDA0RSwgMHgwMDQ1LCAweDAwNTQsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDEsIDB4MDA0RSwgMHgwMDUzLCAweDAwNTUsIDB4MDA0MiwgMHgwMDQ1LA0KKyAgICAweDAwNTMsIDB4MDA0MywgMHgwMDQ0LCAweDAwNDUsIDB4MDA0QywgMHgwMDI4LCAweDAwMzEsIDB4MDAyOSwgMHgwMDI4LCAweDAwMzIsIDB4MDAyOSwgMHgwMDI4LCAweDAwMzMsIDB4MDAyOSwgMHgwMDI4LCAweDAwMzQsDQorICAgIDB4MDAyOSwgMHgwMDI4LCAweDAwMzUsIDB4MDAyOSwgMHgwMDI4LCAweDAwMzYsIDB4MDAyOSwgMHgwMDI4LCAweDAwMzcsIDB4MDAyOSwgMHgwMDI4LCAweDAwMzgsIDB4MDAyOSwgMHgwMDI4LCAweDAwMzksIDB4MDAyOSwNCisgICAgMHgwMDMxLCAweDAwMzAsIDB4MDAyRSwgMHgwMDMxLCAweDAwMzEsIDB4MDAyRSwgMHgwMDMxLCAweDAwMzIsIDB4MDAyRSwgMHgwMDMxLCAweDAwMzMsIDB4MDAyRSwgMHgwMDMxLCAweDAwMzQsIDB4MDAyRSwgMHgwMDMxLA0KKyAgICAweDAwMzUsIDB4MDAyRSwgMHgwMDMxLCAweDAwMzYsIDB4MDAyRSwgMHgwMDMxLCAweDAwMzcsIDB4MDAyRSwgMHgwMDMxLCAweDAwMzgsIDB4MDAyRSwgMHgwMDMxLCAweDAwMzksIDB4MDAyRSwgMHgwMDMyLCAweDAwMzAsDQorICAgIDB4MDAyRSwgMHgwMDI4LCAweDAwNjEsIDB4MDAyOSwgMHgwMDI4LCAweDAwNjIsIDB4MDAyOSwgMHgwMDI4LCAweDAwNjMsIDB4MDAyOSwgMHgwMDI4LCAweDAwNjQsIDB4MDAyOSwgMHgwMDI4LCAweDAwNjUsIDB4MDAyOSwNCisgICAgMHgwMDI4LCAweDAwNjYsIDB4MDAyOSwgMHgwMDI4LCAweDAwNjcsIDB4MDAyOSwgMHgwMDI4LCAweDAwNjgsIDB4MDAyOSwgMHgwMDI4LCAweDAwNjksIDB4MDAyOSwgMHgwMDI4LCAweDAwNkEsIDB4MDAyOSwgMHgwMDI4LA0KKyAgICAweDAwNkIsIDB4MDAyOSwgMHgwMDI4LCAweDAwNkMsIDB4MDAyOSwgMHgwMDI4LCAweDAwNkQsIDB4MDAyOSwgMHgwMDI4LCAweDAwNkUsIDB4MDAyOSwgMHgwMDI4LCAweDAwNkYsIDB4MDAyOSwgMHgwMDI4LCAweDAwNzAsDQorICAgIDB4MDAyOSwgMHgwMDI4LCAweDAwNzEsIDB4MDAyOSwgMHgwMDI4LCAweDAwNzIsIDB4MDAyOSwgMHgwMDI4LCAweDAwNzMsIDB4MDAyOSwgMHgwMDI4LCAweDAwNzQsIDB4MDAyOSwgMHgwMDI4LCAweDAwNzUsIDB4MDAyOSwNCisgICAgMHgwMDI4LCAweDAwNzYsIDB4MDAyOSwgMHgwMDI4LCAweDAwNzcsIDB4MDAyOSwgMHgwMDI4LCAweDAwNzgsIDB4MDAyOSwgMHgwMDI4LCAweDAwNzksIDB4MDAyOSwgMHgwMDI4LCAweDAwN0EsIDB4MDAyOSwgMHgwMDNBLA0KKyAgICAweDAwM0EsIDB4MDAzRCwgMHgwMDNELCAweDAwM0QsIDB4MDAzRCwgMHgwMDI4LCAweDExMDAsIDB4MDAyOSwgMHgwMDI4LCAweDExMDIsIDB4MDAyOSwgMHgwMDI4LCAweDExMDMsIDB4MDAyOSwgMHgwMDI4LCAweDExMDUsDQorICAgIDB4MDAyOSwgMHgwMDI4LCAweDExMDYsIDB4MDAyOSwgMHgwMDI4LCAweDExMDcsIDB4MDAyOSwgMHgwMDI4LCAweDExMDksIDB4MDAyOSwgMHgwMDI4LCAweDExMEIsIDB4MDAyOSwgMHgwMDI4LCAweDExMEMsIDB4MDAyOSwNCisgICAgMHgwMDI4LCAweDExMEUsIDB4MDAyOSwgMHgwMDI4LCAweDExMEYsIDB4MDAyOSwgMHgwMDI4LCAweDExMTAsIDB4MDAyOSwgMHgwMDI4LCAweDExMTEsIDB4MDAyOSwgMHgwMDI4LCAweDExMTIsIDB4MDAyOSwgMHgwMDI4LA0KKyAgICAweDRFMDAsIDB4MDAyOSwgMHgwMDI4LCAweDRFOEMsIDB4MDAyOSwgMHgwMDI4LCAweDRFMDksIDB4MDAyOSwgMHgwMDI4LCAweDU2REIsIDB4MDAyOSwgMHgwMDI4LCAweDRFOTQsIDB4MDAyOSwgMHgwMDI4LCAweDUxNkQsDQorICAgIDB4MDAyOSwgMHgwMDI4LCAweDRFMDMsIDB4MDAyOSwgMHgwMDI4LCAweDUxNkIsIDB4MDAyOSwgMHgwMDI4LCAweDRFNUQsIDB4MDAyOSwgMHgwMDI4LCAweDUzNDEsIDB4MDAyOSwgMHgwMDI4LCAweDY3MDgsIDB4MDAyOSwNCisgICAgMHgwMDI4LCAweDcwNkIsIDB4MDAyOSwgMHgwMDI4LCAweDZDMzQsIDB4MDAyOSwgMHgwMDI4LCAweDY3MjgsIDB4MDAyOSwgMHgwMDI4LCAweDkxRDEsIDB4MDAyOSwgMHgwMDI4LCAweDU3MUYsIDB4MDAyOSwgMHgwMDI4LA0KKyAgICAweDY1RTUsIDB4MDAyOSwgMHgwMDI4LCAweDY4MkEsIDB4MDAyOSwgMHgwMDI4LCAweDY3MDksIDB4MDAyOSwgMHgwMDI4LCAweDc5M0UsIDB4MDAyOSwgMHgwMDI4LCAweDU0MEQsIDB4MDAyOSwgMHgwMDI4LCAweDcyNzksDQorICAgIDB4MDAyOSwgMHgwMDI4LCAweDhDQTEsIDB4MDAyOSwgMHgwMDI4LCAweDc5NUQsIDB4MDAyOSwgMHgwMDI4LCAweDUyQjQsIDB4MDAyOSwgMHgwMDI4LCAweDRFRTMsIDB4MDAyOSwgMHgwMDI4LCAweDU0N0MsIDB4MDAyOSwNCisgICAgMHgwMDI4LCAweDVCNjYsIDB4MDAyOSwgMHgwMDI4LCAweDc2RTMsIDB4MDAyOSwgMHgwMDI4LCAweDRGMDEsIDB4MDAyOSwgMHgwMDI4LCAweDhDQzcsIDB4MDAyOSwgMHgwMDI4LCAweDUzNTQsIDB4MDAyOSwgMHgwMDI4LA0KKyAgICAweDc5NkQsIDB4MDAyOSwgMHgwMDI4LCAweDRGMTEsIDB4MDAyOSwgMHgwMDI4LCAweDgxRUEsIDB4MDAyOSwgMHgwMDI4LCAweDgxRjMsIDB4MDAyOSwgMHgwMDUwLCAweDAwNTQsIDB4MDA0NSwgMHgwMDMxLCAweDAwMzAsDQorICAgIDB4NjcwOCwgMHgwMDMxLCAweDAwMzEsIDB4NjcwOCwgMHgwMDMxLCAweDAwMzIsIDB4NjcwOCwgMHgwMDY1LCAweDAwNzIsIDB4MDA2NywgMHgwMDRDLCAweDAwNTQsIDB4MDA0NCwgMHgzMEEyLCAweDMwRkMsIDB4MzBFQiwNCisgICAgMHgzMEE0LCAweDMwRjMsIDB4MzBDMSwgMHgzMEE2LCAweDMwQTksIDB4MzBGMywgMHgzMEFBLCAweDMwRjMsIDB4MzBCOSwgMHgzMEFBLCAweDMwRkMsIDB4MzBFMCwgMHgzMEFCLCAweDMwQTQsIDB4MzBFQSwgMHgzMEFDLA0KKyAgICAweDMwRUQsIDB4MzBGMywgMHgzMEFDLCAweDMwRjMsIDB4MzBERSwgMHgzMEFFLCAweDMwQ0IsIDB4MzBGQywgMHgzMEIwLCAweDMwRTksIDB4MzBFMCwgMHgzMEIxLCAweDMwRkMsIDB4MzBCOSwgMHgzMEIzLCAweDMwRUIsDQorICAgIDB4MzBDQSwgMHgzMEIzLCAweDMwRkMsIDB4MzBERCwgMHgzMEJCLCAweDMwRjMsIDB4MzBDMSwgMHgzMEJCLCAweDMwRjMsIDB4MzBDOCwgMHgzMEMwLCAweDMwRkMsIDB4MzBCOSwgMHgzMENFLCAweDMwQzMsIDB4MzBDOCwNCisgICAgMHgzMENGLCAweDMwQTQsIDB4MzBDNCwgMHgzMEQxLCAweDMwRkMsIDB4MzBDNCwgMHgzMEQ0LCAweDMwQUYsIDB4MzBFQiwgMHgzMEQ1LCAweDMwRTksIDB4MzBGMywgMHgzMERBLCAweDMwQ0IsIDB4MzBEMiwgMHgzMEQ4LA0KKyAgICAweDMwRUIsIDB4MzBDNCwgMHgzMERBLCAweDMwRjMsIDB4MzBCOSwgMHgzMERBLCAweDMwRkMsIDB4MzBCOCwgMHgzMEQ5LCAweDMwRkMsIDB4MzBCRiwgMHgzMERDLCAweDMwRUIsIDB4MzBDOCwgMHgzMERELCAweDMwRjMsDQorICAgIDB4MzBDOSwgMHgzMERCLCAweDMwRkMsIDB4MzBFQiwgMHgzMERCLCAweDMwRkMsIDB4MzBGMywgMHgzMERFLCAweDMwQTQsIDB4MzBFQiwgMHgzMERFLCAweDMwQzMsIDB4MzBDRiwgMHgzMERFLCAweDMwRUIsIDB4MzBBRiwNCisgICAgMHgzMEU0LCAweDMwRkMsIDB4MzBDOSwgMHgzMEU0LCAweDMwRkMsIDB4MzBFQiwgMHgzMEU2LCAweDMwQTIsIDB4MzBGMywgMHgzMEVCLCAweDMwRDQsIDB4MzBGQywgMHgzMEVGLCAweDMwQzMsIDB4MzBDOCwgMHgwMDMxLA0KKyAgICAweDAwMzAsIDB4NzBCOSwgMHgwMDMxLCAweDAwMzEsIDB4NzBCOSwgMHgwMDMxLCAweDAwMzIsIDB4NzBCOSwgMHgwMDMxLCAweDAwMzMsIDB4NzBCOSwgMHgwMDMxLCAweDAwMzQsIDB4NzBCOSwgMHgwMDMxLCAweDAwMzUsDQorICAgIDB4NzBCOSwgMHgwMDMxLCAweDAwMzYsIDB4NzBCOSwgMHgwMDMxLCAweDAwMzcsIDB4NzBCOSwgMHgwMDMxLCAweDAwMzgsIDB4NzBCOSwgMHgwMDMxLCAweDAwMzksIDB4NzBCOSwgMHgwMDMyLCAweDAwMzAsIDB4NzBCOSwNCisgICAgMHgwMDMyLCAweDAwMzEsIDB4NzBCOSwgMHgwMDMyLCAweDAwMzIsIDB4NzBCOSwgMHgwMDMyLCAweDAwMzMsIDB4NzBCOSwgMHgwMDMyLCAweDAwMzQsIDB4NzBCOSwgMHgwMDY4LCAweDAwNTAsIDB4MDA2MSwgMHgwMDYyLA0KKyAgICAweDAwNjEsIDB4MDA3MiwgMHgwMDY0LCAweDAwNkQsIDB4MDBCMiwgMHgwMDY0LCAweDAwNkQsIDB4MDBCMywgMHgwMDYzLCAweDAwNjEsIDB4MDA2QywgMHgwMDZCLCAweDAwNDgsIDB4MDA3QSwgMHgwMDRELCAweDAwNDgsDQorICAgIDB4MDA3QSwgMHgwMDQ3LCAweDAwNDgsIDB4MDA3QSwgMHgwMDU0LCAweDAwNDgsIDB4MDA3QSwgMHgwMDZELCAweDAwNkQsIDB4MDBCMiwgMHgwMDYzLCAweDAwNkQsIDB4MDBCMiwgMHgwMDZCLCAweDAwNkQsIDB4MDBCMiwNCisgICAgMHgwMDZELCAweDAwNkQsIDB4MDBCMywgMHgwMDYzLCAweDAwNkQsIDB4MDBCMywgMHgwMDZCLCAweDAwNkQsIDB4MDBCMywgMHgwMDZELCAweDIyMTUsIDB4MDA3MywgMHgwMDZCLCAweDAwNTAsIDB4MDA2MSwgMHgwMDRELA0KKyAgICAweDAwNTAsIDB4MDA2MSwgMHgwMDQ3LCAweDAwNTAsIDB4MDA2MSwgMHgwMDcyLCAweDAwNjEsIDB4MDA2NCwgMHgwMDQzLCAweDAwNkYsIDB4MDAyRSwgMHgwMDZDLCAweDAwNkYsIDB4MDA2NywgMHgwMDZELCAweDAwNjksDQorICAgIDB4MDA2QywgMHgwMDZELCAweDAwNkYsIDB4MDA2QywgMHgwMDUwLCAweDAwNTAsIDB4MDA0RCwgMHgwMDU2LCAweDIyMTUsIDB4MDA2RCwgMHgwMDQxLCAweDIyMTUsIDB4MDA2RCwgMHgwMDMxLCAweDAwMzAsIDB4NjVFNSwNCisgICAgMHgwMDMxLCAweDAwMzEsIDB4NjVFNSwgMHgwMDMxLCAweDAwMzIsIDB4NjVFNSwgMHgwMDMxLCAweDAwMzMsIDB4NjVFNSwgMHgwMDMxLCAweDAwMzQsIDB4NjVFNSwgMHgwMDMxLCAweDAwMzUsIDB4NjVFNSwgMHgwMDMxLA0KKyAgICAweDAwMzYsIDB4NjVFNSwgMHgwMDMxLCAweDAwMzcsIDB4NjVFNSwgMHgwMDMxLCAweDAwMzgsIDB4NjVFNSwgMHgwMDMxLCAweDAwMzksIDB4NjVFNSwgMHgwMDMyLCAweDAwMzAsIDB4NjVFNSwgMHgwMDMyLCAweDAwMzEsDQorICAgIDB4NjVFNSwgMHgwMDMyLCAweDAwMzIsIDB4NjVFNSwgMHgwMDMyLCAweDAwMzMsIDB4NjVFNSwgMHgwMDMyLCAweDAwMzQsIDB4NjVFNSwgMHgwMDMyLCAweDAwMzUsIDB4NjVFNSwgMHgwMDMyLCAweDAwMzYsIDB4NjVFNSwNCisgICAgMHgwMDMyLCAweDAwMzcsIDB4NjVFNSwgMHgwMDMyLCAweDAwMzgsIDB4NjVFNSwgMHgwMDMyLCAweDAwMzksIDB4NjVFNSwgMHgwMDMzLCAweDAwMzAsIDB4NjVFNSwgMHgwMDMzLCAweDAwMzEsIDB4NjVFNSwgMHgwMDY3LA0KKyAgICAweDAwNjEsIDB4MDA2QywgMHgwMDY2LCAweDAwNjYsIDB4MDA2OSwgMHgwMDY2LCAweDAwNjYsIDB4MDA2QywgMHgwNjQwLCAweDA2NEUsIDB4MDY1MSwgMHgwNjQwLCAweDA2NEYsIDB4MDY1MSwgMHgwNjQwLCAweDA2NTAsDQorICAgIDB4MDY1MSwgMHgwNjJBLCAweDA2MkMsIDB4MDY0NSwgMHgwNjJBLCAweDA2MkQsIDB4MDYyQywgMHgwNjJBLCAweDA2MkQsIDB4MDYyQywgMHgwNjJBLCAweDA2MkQsIDB4MDY0NSwgMHgwNjJBLCAweDA2MkUsIDB4MDY0NSwNCisgICAgMHgwNjJBLCAweDA2NDUsIDB4MDYyQywgMHgwNjJBLCAweDA2NDUsIDB4MDYyRCwgMHgwNjJBLCAweDA2NDUsIDB4MDYyRSwgMHgwNjJDLCAweDA2NDUsIDB4MDYyRCwgMHgwNjJDLCAweDA2NDUsIDB4MDYyRCwgMHgwNjJELA0KKyAgICAweDA2NDUsIDB4MDY0QSwgMHgwNjJELCAweDA2NDUsIDB4MDY0OSwgMHgwNjMzLCAweDA2MkQsIDB4MDYyQywgMHgwNjMzLCAweDA2MkMsIDB4MDYyRCwgMHgwNjMzLCAweDA2MkMsIDB4MDY0OSwgMHgwNjMzLCAweDA2NDUsDQorICAgIDB4MDYyRCwgMHgwNjMzLCAweDA2NDUsIDB4MDYyRCwgMHgwNjMzLCAweDA2NDUsIDB4MDYyQywgMHgwNjMzLCAweDA2NDUsIDB4MDY0NSwgMHgwNjMzLCAweDA2NDUsIDB4MDY0NSwgMHgwNjM1LCAweDA2MkQsIDB4MDYyRCwNCisgICAgMHgwNjM1LCAweDA2MkQsIDB4MDYyRCwgMHgwNjM1LCAweDA2NDUsIDB4MDY0NSwgMHgwNjM0LCAweDA2MkQsIDB4MDY0NSwgMHgwNjM0LCAweDA2MkQsIDB4MDY0NSwgMHgwNjM0LCAweDA2MkMsIDB4MDY0QSwgMHgwNjM0LA0KKyAgICAweDA2NDUsIDB4MDYyRSwgMHgwNjM0LCAweDA2NDUsIDB4MDYyRSwgMHgwNjM0LCAweDA2NDUsIDB4MDY0NSwgMHgwNjM0LCAweDA2NDUsIDB4MDY0NSwgMHgwNjM2LCAweDA2MkQsIDB4MDY0OSwgMHgwNjM2LCAweDA2MkUsDQorICAgIDB4MDY0NSwgMHgwNjM2LCAweDA2MkUsIDB4MDY0NSwgMHgwNjM3LCAweDA2NDUsIDB4MDYyRCwgMHgwNjM3LCAweDA2NDUsIDB4MDYyRCwgMHgwNjM3LCAweDA2NDUsIDB4MDY0NSwgMHgwNjM3LCAweDA2NDUsIDB4MDY0QSwNCisgICAgMHgwNjM5LCAweDA2MkMsIDB4MDY0NSwgMHgwNjM5LCAweDA2NDUsIDB4MDY0NSwgMHgwNjM5LCAweDA2NDUsIDB4MDY0NSwgMHgwNjM5LCAweDA2NDUsIDB4MDY0OSwgMHgwNjNBLCAweDA2NDUsIDB4MDY0NSwgMHgwNjNBLA0KKyAgICAweDA2NDUsIDB4MDY0QSwgMHgwNjNBLCAweDA2NDUsIDB4MDY0OSwgMHgwNjQxLCAweDA2MkUsIDB4MDY0NSwgMHgwNjQxLCAweDA2MkUsIDB4MDY0NSwgMHgwNjQyLCAweDA2NDUsIDB4MDYyRCwgMHgwNjQyLCAweDA2NDUsDQorICAgIDB4MDY0NSwgMHgwNjQ0LCAweDA2MkQsIDB4MDY0NSwgMHgwNjQ0LCAweDA2MkQsIDB4MDY0QSwgMHgwNjQ0LCAweDA2MkQsIDB4MDY0OSwgMHgwNjQ0LCAweDA2MkMsIDB4MDYyQywgMHgwNjQ0LCAweDA2MkMsIDB4MDYyQywNCisgICAgMHgwNjQ0LCAweDA2MkUsIDB4MDY0NSwgMHgwNjQ0LCAweDA2MkUsIDB4MDY0NSwgMHgwNjQ0LCAweDA2NDUsIDB4MDYyRCwgMHgwNjQ0LCAweDA2NDUsIDB4MDYyRCwgMHgwNjQ1LCAweDA2MkQsIDB4MDYyQywgMHgwNjQ1LA0KKyAgICAweDA2MkQsIDB4MDY0NSwgMHgwNjQ1LCAweDA2MkQsIDB4MDY0QSwgMHgwNjQ1LCAweDA2MkMsIDB4MDYyRCwgMHgwNjQ1LCAweDA2MkMsIDB4MDY0NSwgMHgwNjQ1LCAweDA2MkUsIDB4MDYyQywgMHgwNjQ1LCAweDA2MkUsDQorICAgIDB4MDY0NSwgMHgwNjQ1LCAweDA2MkMsIDB4MDYyRSwgMHgwNjQ3LCAweDA2NDUsIDB4MDYyQywgMHgwNjQ3LCAweDA2NDUsIDB4MDY0NSwgMHgwNjQ2LCAweDA2MkQsIDB4MDY0NSwgMHgwNjQ2LCAweDA2MkQsIDB4MDY0OSwNCisgICAgMHgwNjQ2LCAweDA2MkMsIDB4MDY0NSwgMHgwNjQ2LCAweDA2MkMsIDB4MDY0NSwgMHgwNjQ2LCAweDA2MkMsIDB4MDY0OSwgMHgwNjQ2LCAweDA2NDUsIDB4MDY0QSwgMHgwNjQ2LCAweDA2NDUsIDB4MDY0OSwgMHgwNjRBLA0KKyAgICAweDA2NDUsIDB4MDY0NSwgMHgwNjRBLCAweDA2NDUsIDB4MDY0NSwgMHgwNjI4LCAweDA2MkUsIDB4MDY0QSwgMHgwNjJBLCAweDA2MkMsIDB4MDY0QSwgMHgwNjJBLCAweDA2MkMsIDB4MDY0OSwgMHgwNjJBLCAweDA2MkUsDQorICAgIDB4MDY0QSwgMHgwNjJBLCAweDA2MkUsIDB4MDY0OSwgMHgwNjJBLCAweDA2NDUsIDB4MDY0QSwgMHgwNjJBLCAweDA2NDUsIDB4MDY0OSwgMHgwNjJDLCAweDA2NDUsIDB4MDY0QSwgMHgwNjJDLCAweDA2MkQsIDB4MDY0OSwNCisgICAgMHgwNjJDLCAweDA2NDUsIDB4MDY0OSwgMHgwNjMzLCAweDA2MkUsIDB4MDY0OSwgMHgwNjM1LCAweDA2MkQsIDB4MDY0QSwgMHgwNjM0LCAweDA2MkQsIDB4MDY0QSwgMHgwNjM2LCAweDA2MkQsIDB4MDY0QSwgMHgwNjQ0LA0KKyAgICAweDA2MkMsIDB4MDY0QSwgMHgwNjQ0LCAweDA2NDUsIDB4MDY0QSwgMHgwNjRBLCAweDA2MkQsIDB4MDY0QSwgMHgwNjRBLCAweDA2MkMsIDB4MDY0QSwgMHgwNjRBLCAweDA2NDUsIDB4MDY0QSwgMHgwNjQ1LCAweDA2NDUsDQorICAgIDB4MDY0QSwgMHgwNjQyLCAweDA2NDUsIDB4MDY0QSwgMHgwNjQ2LCAweDA2MkQsIDB4MDY0QSwgMHgwNjQyLCAweDA2NDUsIDB4MDYyRCwgMHgwNjQ0LCAweDA2MkQsIDB4MDY0NSwgMHgwNjM5LCAweDA2NDUsIDB4MDY0QSwNCisgICAgMHgwNjQzLCAweDA2NDUsIDB4MDY0QSwgMHgwNjQ2LCAweDA2MkMsIDB4MDYyRCwgMHgwNjQ1LCAweDA2MkUsIDB4MDY0QSwgMHgwNjQ0LCAweDA2MkMsIDB4MDY0NSwgMHgwNjQzLCAweDA2NDUsIDB4MDY0NSwgMHgwNjQ0LA0KKyAgICAweDA2MkMsIDB4MDY0NSwgMHgwNjQ2LCAweDA2MkMsIDB4MDYyRCwgMHgwNjJDLCAweDA2MkQsIDB4MDY0QSwgMHgwNjJELCAweDA2MkMsIDB4MDY0QSwgMHgwNjQ1LCAweDA2MkMsIDB4MDY0QSwgMHgwNjQxLCAweDA2NDUsDQorICAgIDB4MDY0QSwgMHgwNjI4LCAweDA2MkQsIDB4MDY0QSwgMHgwNjQzLCAweDA2NDUsIDB4MDY0NSwgMHgwNjM5LCAweDA2MkMsIDB4MDY0NSwgMHgwNjM1LCAweDA2NDUsIDB4MDY0NSwgMHgwNjMzLCAweDA2MkUsIDB4MDY0QSwNCisgICAgMHgwNjQ2LCAweDA2MkMsIDB4MDY0QSwgMHgwNjM1LCAweDA2NDQsIDB4MDZEMiwgMHgwNjQyLCAweDA2NDQsIDB4MDZEMiwgMHgwNjM1LCAweDA2NDQsIDB4MDY0OQ0KK307DQorZXh0ZXJuIGNvbnN0IEZYX1dDSEFSIGdfVW5pY29kZURhdGFfTm9ybWFsaXphdGlvbl9NYXA0WzQ4OF0gPSB7DQorICAgIDB4MDAwNCwgMHgyMDMyLCAweDIwMzIsIDB4MjAzMiwgMHgyMDMyLCAweDAwMDQsIDB4MDAzMSwgMHgwMDJGLCAweDAwMzEsIDB4MDAzMCwgMHgwMDA0LCAweDAwNTYsIDB4MDA0OSwgMHgwMDQ5LCAweDAwNDksIDB4MDAwNCwNCisgICAgMHgwMDc2LCAweDAwNjksIDB4MDA2OSwgMHgwMDY5LCAweDAwMDQsIDB4MDAyOCwgMHgwMDMxLCAweDAwMzAsIDB4MDAyOSwgMHgwMDA0LCAweDAwMjgsIDB4MDAzMSwgMHgwMDMxLCAweDAwMjksIDB4MDAwNCwgMHgwMDI4LA0KKyAgICAweDAwMzEsIDB4MDAzMiwgMHgwMDI5LCAweDAwMDQsIDB4MDAyOCwgMHgwMDMxLCAweDAwMzMsIDB4MDAyOSwgMHgwMDA0LCAweDAwMjgsIDB4MDAzMSwgMHgwMDM0LCAweDAwMjksIDB4MDAwNCwgMHgwMDI4LCAweDAwMzEsDQorICAgIDB4MDAzNSwgMHgwMDI5LCAweDAwMDQsIDB4MDAyOCwgMHgwMDMxLCAweDAwMzYsIDB4MDAyOSwgMHgwMDA0LCAweDAwMjgsIDB4MDAzMSwgMHgwMDM3LCAweDAwMjksIDB4MDAwNCwgMHgwMDI4LCAweDAwMzEsIDB4MDAzOCwNCisgICAgMHgwMDI5LCAweDAwMDQsIDB4MDAyOCwgMHgwMDMxLCAweDAwMzksIDB4MDAyOSwgMHgwMDA0LCAweDAwMjgsIDB4MDAzMiwgMHgwMDMwLCAweDAwMjksIDB4MDAwNCwgMHgyMjJCLCAweDIyMkIsIDB4MjIyQiwgMHgyMjJCLA0KKyAgICAweDAwMDQsIDB4MDAyOCwgMHgxMTAwLCAweDExNjEsIDB4MDAyOSwgMHgwMDA0LCAweDAwMjgsIDB4MTEwMiwgMHgxMTYxLCAweDAwMjksIDB4MDAwNCwgMHgwMDI4LCAweDExMDMsIDB4MTE2MSwgMHgwMDI5LCAweDAwMDQsDQorICAgIDB4MDAyOCwgMHgxMTA1LCAweDExNjEsIDB4MDAyOSwgMHgwMDA0LCAweDAwMjgsIDB4MTEwNiwgMHgxMTYxLCAweDAwMjksIDB4MDAwNCwgMHgwMDI4LCAweDExMDcsIDB4MTE2MSwgMHgwMDI5LCAweDAwMDQsIDB4MDAyOCwNCisgICAgMHgxMTA5LCAweDExNjEsIDB4MDAyOSwgMHgwMDA0LCAweDAwMjgsIDB4MTEwQiwgMHgxMTYxLCAweDAwMjksIDB4MDAwNCwgMHgwMDI4LCAweDExMEMsIDB4MTE2MSwgMHgwMDI5LCAweDAwMDQsIDB4MDAyOCwgMHgxMTBFLA0KKyAgICAweDExNjEsIDB4MDAyOSwgMHgwMDA0LCAweDAwMjgsIDB4MTEwRiwgMHgxMTYxLCAweDAwMjksIDB4MDAwNCwgMHgwMDI4LCAweDExMTAsIDB4MTE2MSwgMHgwMDI5LCAweDAwMDQsIDB4MDAyOCwgMHgxMTExLCAweDExNjEsDQorICAgIDB4MDAyOSwgMHgwMDA0LCAweDAwMjgsIDB4MTExMiwgMHgxMTYxLCAweDAwMjksIDB4MDAwNCwgMHgwMDI4LCAweDExMEMsIDB4MTE2RSwgMHgwMDI5LCAweDAwMDcsIDB4MDAyOCwgMHgxMTBCLCAweDExNjksIDB4MTEwQywNCisgICAgMHgxMTY1LCAweDExQUIsIDB4MDAyOSwgMHgwMDA2LCAweDAwMjgsIDB4MTEwQiwgMHgxMTY5LCAweDExMTIsIDB4MTE2RSwgMHgwMDI5LCAweDAwMDUsIDB4MTEwRSwgMHgxMTYxLCAweDExQjcsIDB4MTEwMCwgMHgxMTY5LA0KKyAgICAweDAwMDQsIDB4MTEwQywgMHgxMTZFLCAweDExMEIsIDB4MTE3NCwgMHgwMDA0LCAweDMwQTIsIDB4MzBEMSwgMHgzMEZDLCAweDMwQzgsIDB4MDAwNCwgMHgzMEEyLCAweDMwRUIsIDB4MzBENSwgMHgzMEExLCAweDAwMDQsDQorICAgIDB4MzBBMiwgMHgzMEYzLCAweDMwREEsIDB4MzBBMiwgMHgwMDA0LCAweDMwQTQsIDB4MzBDQiwgMHgzMEYzLCAweDMwQjAsIDB4MDAwNSwgMHgzMEE4LCAweDMwQjksIDB4MzBBRiwgMHgzMEZDLCAweDMwQzksIDB4MDAwNCwNCisgICAgMHgzMEE4LCAweDMwRkMsIDB4MzBBQiwgMHgzMEZDLCAweDAwMDQsIDB4MzBBQiwgMHgzMEU5LCAweDMwQzMsIDB4MzBDOCwgMHgwMDA0LCAweDMwQUIsIDB4MzBFRCwgMHgzMEVBLCAweDMwRkMsIDB4MDAwNCwgMHgzMEFELA0KKyAgICAweDMwRTUsIDB4MzBFQSwgMHgzMEZDLCAweDAwMDQsIDB4MzBBRSwgMHgzMEVCLCAweDMwQzAsIDB4MzBGQywgMHgwMDA1LCAweDMwQUQsIDB4MzBFRCwgMHgzMEIwLCAweDMwRTksIDB4MzBFMCwgMHgwMDA2LCAweDMwQUQsDQorICAgIDB4MzBFRCwgMHgzMEUxLCAweDMwRkMsIDB4MzBDOCwgMHgzMEVCLCAweDAwMDUsIDB4MzBBRCwgMHgzMEVELCAweDMwRUYsIDB4MzBDMywgMHgzMEM4LCAweDAwMDUsIDB4MzBCMCwgMHgzMEU5LCAweDMwRTAsIDB4MzBDOCwNCisgICAgMHgzMEYzLCAweDAwMDUsIDB4MzBBRiwgMHgzMEVCLCAweDMwQkMsIDB4MzBBNCwgMHgzMEVELCAweDAwMDQsIDB4MzBBRiwgMHgzMEVELCAweDMwRkMsIDB4MzBDRCwgMHgwMDA0LCAweDMwQjUsIDB4MzBBNCwgMHgzMEFGLA0KKyAgICAweDMwRUIsIDB4MDAwNSwgMHgzMEI1LCAweDMwRjMsIDB4MzBDMSwgMHgzMEZDLCAweDMwRTAsIDB4MDAwNCwgMHgzMEI3LCAweDMwRUEsIDB4MzBGMywgMHgzMEIwLCAweDAwMDUsIDB4MzBEMSwgMHgzMEZDLCAweDMwQkIsDQorICAgIDB4MzBGMywgMHgzMEM4LCAweDAwMDQsIDB4MzBEMCwgMHgzMEZDLCAweDMwRUMsIDB4MzBFQiwgMHgwMDA1LCAweDMwRDQsIDB4MzBBMiwgMHgzMEI5LCAweDMwQzgsIDB4MzBFQiwgMHgwMDA1LCAweDMwRDUsIDB4MzBBMSwNCisgICAgMHgzMEU5LCAweDMwQzMsIDB4MzBDOSwgMHgwMDA0LCAweDMwRDUsIDB4MzBBMywgMHgzMEZDLCAweDMwQzgsIDB4MDAwNSwgMHgzMEQ2LCAweDMwQzMsIDB4MzBCNywgMHgzMEE3LCAweDMwRUIsIDB4MDAwNSwgMHgzMEQ4LA0KKyAgICAweDMwQUYsIDB4MzBCRiwgMHgzMEZDLCAweDMwRUIsIDB4MDAwNCwgMHgzMERELCAweDMwQTQsIDB4MzBGMywgMHgzMEM4LCAweDAwMDQsIDB4MzBERSwgMHgzMEE0LCAweDMwQUYsIDB4MzBFRCwgMHgwMDA1LCAweDMwREUsDQorICAgIDB4MzBGMywgMHgzMEI3LCAweDMwRTcsIDB4MzBGMywgMHgwMDA0LCAweDMwREYsIDB4MzBBRiwgMHgzMEVELCAweDMwRjMsIDB4MDAwNSwgMHgzMERGLCAweDMwRUEsIDB4MzBEMCwgMHgzMEZDLCAweDMwRUIsIDB4MDAwNCwNCisgICAgMHgzMEUxLCAweDMwQUMsIDB4MzBDOCwgMHgzMEYzLCAweDAwMDQsIDB4MzBFMSwgMHgzMEZDLCAweDMwQzgsIDB4MzBFQiwgMHgwMDA0LCAweDMwRUEsIDB4MzBDMywgMHgzMEM4LCAweDMwRUIsIDB4MDAwNCwgMHgzMEVCLA0KKyAgICAweDMwRkMsIDB4MzBENiwgMHgzMEVCLCAweDAwMDUsIDB4MzBFQywgMHgzMEYzLCAweDMwQzgsIDB4MzBCMiwgMHgzMEYzLCAweDAwMDQsIDB4NjgyQSwgMHg1RjBGLCAweDRGMUEsIDB4NzkzRSwgMHgwMDA0LCAweDAwNkIsDQorICAgIDB4MDA2MywgMHgwMDYxLCAweDAwNkMsIDB4MDAwNCwgMHgwMDZELCAweDIyMTUsIDB4MDA3MywgMHgwMEIyLCAweDAwMDUsIDB4MDA3MiwgMHgwMDYxLCAweDAwNjQsIDB4MjIxNSwgMHgwMDczLCAweDAwMDYsIDB4MDA3MiwNCisgICAgMHgwMDYxLCAweDAwNjQsIDB4MjIxNSwgMHgwMDczLCAweDAwQjIsIDB4MDAwNCwgMHgwMDYxLCAweDAwMkUsIDB4MDA2RCwgMHgwMDJFLCAweDAwMDQsIDB4MDA0MywgMHgyMjE1LCAweDAwNkIsIDB4MDA2NywgMHgwMDA0LA0KKyAgICAweDAwNzAsIDB4MDAyRSwgMHgwMDZELCAweDAwMkUsIDB4MDAwNCwgMHgwNjI3LCAweDA2NDQsIDB4MDY0NCwgMHgwNjQ3LCAweDAwMDQsIDB4MDYyNywgMHgwNjQzLCAweDA2MjgsIDB4MDYzMSwgMHgwMDA0LCAweDA2NDUsDQorICAgIDB4MDYyRCwgMHgwNjQ1LCAweDA2MkYsIDB4MDAwNCwgMHgwNjM1LCAweDA2NDQsIDB4MDYzOSwgMHgwNjQ1LCAweDAwMDQsIDB4MDYzMSwgMHgwNjMzLCAweDA2NDgsIDB4MDY0NCwgMHgwMDA0LCAweDA2MzksIDB4MDY0NCwNCisgICAgMHgwNjRBLCAweDA2NDcsIDB4MDAwNCwgMHgwNjQ4LCAweDA2MzMsIDB4MDY0NCwgMHgwNjQ1LCAweDAwMTIsIDB4MDYzNSwgMHgwNjQ0LCAweDA2NDksIDB4MDAyMCwgMHgwNjI3LCAweDA2NDQsIDB4MDY0NCwgMHgwNjQ3LA0KKyAgICAweDAwMjAsIDB4MDYzOSwgMHgwNjQ0LCAweDA2NEEsIDB4MDY0NywgMHgwMDIwLCAweDA2NDgsIDB4MDYzMywgMHgwNjQ0LCAweDA2NDUsIDB4MDAwOCwgMHgwNjJDLCAweDA2NDQsIDB4MDAyMCwgMHgwNjJDLCAweDA2NDQsDQorICAgIDB4MDYyNywgMHgwNjQ0LCAweDA2NDcsIDB4MDAwNCwgMHgwNjMxLCAweDA2Q0MsIDB4MDYyNywgMHgwNjQ0DQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meF9mcmVldHlwZS5oIGIvY29yZS9zcmMvZnhfZnJlZXR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzUwZjY4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhfZnJlZXR5cGUuaApAQCAtMCwwICsxLDE1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9GWF9TUkNfRlJFRVRZUEVfSF8NCisjZGVmaW5lIF9GWF9TUkNfRlJFRVRZUEVfSF8NCisjaW5jbHVkZSAiLi9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mdDJidWlsZC5oIg0KKyNpbmNsdWRlICIuL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiDQorI2luY2x1ZGUgIi4vZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIg0KKyNpbmNsdWRlICIuL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW0uaCINCisjaW5jbHVkZSAiLi9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCINCisjaW5jbHVkZSAiLi9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIg0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4X2pwZWdsaWIuaCBiL2NvcmUvc3JjL2Z4X2pwZWdsaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2UyMTcyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhfanBlZ2xpYi5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX1NSQ19KUEVHTElCX0hfDQorI2RlZmluZSBfRlhfU1JDX0pQRUdMSUJfSF8NCisjaW5jbHVkZSAiLi9meGNvZGVjL2xpYmpwZWcvanBlZ2xpYi5oIg0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4X3psaWIuaCBiL2NvcmUvc3JjL2Z4X3psaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzZjNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhfemxpYi5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX1NSQ19aTElCX0hfDQorI2RlZmluZSBfRlhfU1JDX1pMSUJfSF8NCisjaW5jbHVkZSAiLi9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L3psaWIuaCINCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2NvZGVjL2NvZGVjX2ludC5oIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9jb2RlY19pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzFhZjYxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9jb2RlY19pbnQuaApAQCAtMCwwICsxLDI3MCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgPGxpbWl0cy5oPg0KK2NsYXNzIENDb2RlY19CYXNpY01vZHVsZSA6IHB1YmxpYyBJQ29kZWNfQmFzaWNNb2R1bGUNCit7DQorcHVibGljOg0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJUnVuTGVuZ3RoRW5jb2RlKGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBGWF9MUEJZVEUmIGRlc3RfYnVmLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEJiBkZXN0X3NpemUpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJQTg1RW5jb2RlKGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBGWF9MUEJZVEUmIGRlc3RfYnVmLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEJiBkZXN0X3NpemUpOw0KKyAgICB2aXJ0dWFsIElDb2RlY19TY2FubGluZURlY29kZXIqCUNyZWF0ZVJ1bkxlbmd0aERlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgICAgIGludCBuQ29tcHMsIGludCBicGMpOw0KK307DQorc3RydWN0IENDb2RlY19JbWFnZURhdGFDYWNoZSB7DQorICAgIGludAkJCW1fV2lkdGgsIG1fSGVpZ2h0Ow0KKyAgICBpbnQJCQltX25DYWNoZWRMaW5lczsNCisgICAgRlhfQllURQkJbV9EYXRhOw0KK307DQorY2xhc3MgQ0NvZGVjX1NjYW5saW5lRGVjb2RlciA6IHB1YmxpYyBJQ29kZWNfU2NhbmxpbmVEZWNvZGVyDQorew0KK3B1YmxpYzoNCisNCisgICAgQ0NvZGVjX1NjYW5saW5lRGVjb2RlcigpOw0KKw0KKyAgICB2aXJ0dWFsIH5DQ29kZWNfU2NhbmxpbmVEZWNvZGVyKCk7DQorDQorICAgIHZpcnR1YWwgRlhfRFdPUkQJR2V0U3JjT2Zmc2V0KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorDQorICAgIHZpcnR1YWwgdm9pZAkJRG93blNjYWxlKGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpOw0KKw0KKyAgICBGWF9MUEJZVEUJCQlHZXRTY2FubGluZShpbnQgbGluZSk7DQorDQorICAgIEZYX0JPT0wJCQkJU2tpcFRvU2NhbmxpbmUoaW50IGxpbmUsIElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisgICAgaW50CQkJCQlHZXRXaWR0aCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX091dHB1dFdpZHRoOw0KKyAgICB9DQorDQorICAgIGludAkJCQkJR2V0SGVpZ2h0KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fT3V0cHV0SGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIGludAkJCQkJQ291bnRDb21wcygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25Db21wczsNCisgICAgfQ0KKw0KKyAgICBpbnQJCQkJCUdldEJQQygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JwYzsNCisgICAgfQ0KKw0KKyAgICBGWF9CT09MCQkJCUlzQ29sb3JUcmFuc2Zvcm1lZCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JDb2xvclRyYW5zZm9ybWVkOw0KKyAgICB9DQorDQorICAgIHZvaWQJCQkJQ2xlYXJJbWFnZURhdGEoKQ0KKyAgICB7DQorICAgICAgICBpZiAobV9wRGF0YUNhY2hlKSB7DQorICAgICAgICAgICAgRlhfRnJlZShtX3BEYXRhQ2FjaGUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wRGF0YUNhY2hlID0gTlVMTDsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisNCisgICAgaW50CQkJCQltX09yaWdXaWR0aDsNCisNCisgICAgaW50CQkJCQltX09yaWdIZWlnaHQ7DQorDQorICAgIGludAkJCQkJbV9Eb3duU2NhbGU7DQorDQorICAgIGludAkJCQkJbV9PdXRwdXRXaWR0aDsNCisNCisgICAgaW50CQkJCQltX091dHB1dEhlaWdodDsNCisNCisgICAgaW50CQkJCQltX25Db21wczsNCisNCisgICAgaW50CQkJCQltX2JwYzsNCisNCisgICAgaW50CQkJCQltX1BpdGNoOw0KKw0KKyAgICBGWF9CT09MCQkJCW1fYkNvbG9yVHJhbnNmb3JtZWQ7DQorDQorICAgIEZYX0xQQllURQkJCVJlYWROZXh0TGluZSgpOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCXZfUmV3aW5kKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0xQQllURQl2X0dldE5leHRMaW5lKCkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQJCXZfRG93blNjYWxlKGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpID0gMDsNCisNCisgICAgaW50CQkJCQltX05leHRMaW5lOw0KKw0KKyAgICBGWF9MUEJZVEUJCQltX3BMYXN0U2NhbmxpbmU7DQorDQorICAgIENDb2RlY19JbWFnZURhdGFDYWNoZSoJbV9wRGF0YUNhY2hlOw0KK307DQorY2xhc3MgQ0NvZGVjX0ZheE1vZHVsZSA6IHB1YmxpYyBJQ29kZWNfRmF4TW9kdWxlDQorew0KK3B1YmxpYzoNCisgICAgdmlydHVhbCBJQ29kZWNfU2NhbmxpbmVEZWNvZGVyKglDcmVhdGVEZWNvZGVyKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICBpbnQgSywgRlhfQk9PTCBFbmRPZkxpbmUsIEZYX0JPT0wgRW5jb2RlZEJ5dGVBbGlnbiwgRlhfQk9PTCBCbGFja0lzMSwgaW50IENvbHVtbnMsIGludCBSb3dzKTsNCisgICAgRlhfQk9PTAkJRW5jb2RlKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgcGl0Y2gsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpOw0KK307DQorY2xhc3MgQ0NvZGVjX0ZsYXRlTW9kdWxlIDogcHVibGljIElDb2RlY19GbGF0ZU1vZHVsZQ0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgSUNvZGVjX1NjYW5saW5lRGVjb2RlcioJQ3JlYXRlRGVjb2RlcihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgaW50IG5Db21wcywgaW50IGJwYywgaW50IHByZWRpY3RvciwgaW50IENvbG9ycywgaW50IEJpdHNQZXJDb21wb25lbnQsIGludCBDb2x1bW5zKTsNCisgICAgdmlydHVhbCBGWF9EV09SRCBGbGF0ZU9yTFpXRGVjb2RlKEZYX0JPT0wgYkxaVywgY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIEZYX0JPT0wgYkVhcmx5Q2hhbmdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByZWRpY3RvciwgaW50IENvbG9ycywgaW50IEJpdHNQZXJDb21wb25lbnQsIGludCBDb2x1bW5zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZXN0aW1hdGVkX3NpemUsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgRW5jb2RlKGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcmVkaWN0b3IsIGludCBDb2xvcnMsIGludCBCaXRzUGVyQ29tcG9uZW50LCBpbnQgQ29sdW1ucywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQlFbmNvZGUoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSk7DQorfTsNCitjbGFzcyBDQ29kZWNfSnBlZ01vZHVsZSA6IHB1YmxpYyBJQ29kZWNfSnBlZ01vZHVsZQ0KK3sNCitwdWJsaWM6DQorICAgIENDb2RlY19KcGVnTW9kdWxlKCkgOiBtX3BFeHRQcm92aWRlcihOVUxMKSB7fQ0KKyAgICB2b2lkIFNldFBvdmlkZXIoSUZYX0pwZWdQcm92aWRlciogcEpQKQ0KKyAgICB7DQorICAgICAgICBtX3BFeHRQcm92aWRlciA9IHBKUDsNCisgICAgfQ0KKyAgICBJQ29kZWNfU2NhbmxpbmVEZWNvZGVyKglDcmVhdGVEZWNvZGVyKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbkNvbXBzLCBGWF9CT09MIENvbG9yVHJhbnNmb3JtKTsNCisgICAgRlhfQk9PTAkJTG9hZEluZm8oRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50JiB3aWR0aCwgaW50JiBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbnVtX2NvbXBvbmVudHMsIGludCYgYml0c19wZXJfY29tcG9uZW50cywgRlhfQk9PTCYgY29sb3JfdHJhbnNmb3JtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUqIGljY19idWZfcHRyLCBGWF9EV09SRCogaWNjX2xlbmd0aCk7DQorICAgIEZYX0JPT0wJCUVuY29kZShjb25zdCBDRlhfRElCU291cmNlKiBwU291cmNlLCBGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9TVFJTSVpFJiBkZXN0X3NpemUsIGludCBxdWFsaXR5LCBGWF9MUENCWVRFIGljY19idWYsIEZYX0RXT1JEIGljY19sZW5ndGgpOw0KKyAgICB2aXJ0dWFsIHZvaWQqCQlTdGFydCgpOw0KKyAgICB2aXJ0dWFsIHZvaWQJCUZpbmlzaCh2b2lkKiBwQ29udGV4dCk7DQorICAgIHZpcnR1YWwgdm9pZAkJSW5wdXQodm9pZCogcENvbnRleHQsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUpOw0KKyAgICB2aXJ0dWFsIGludAkJCVJlYWRIZWFkZXIodm9pZCogcENvbnRleHQsIGludCogd2lkdGgsIGludCogaGVpZ2h0LCBpbnQqIG5Db21wcyk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJU3RhcnRTY2FubGluZSh2b2lkKiBwQ29udGV4dCwgaW50IGRvd25fc2NhbGUpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVJlYWRTY2FubGluZSh2b2lkKiBwQ29udGV4dCwgRlhfTFBCWVRFIGRlc3RfYnVmKTsNCisgICAgdmlydHVhbCBGWF9EV09SRAlHZXRBdmFpbElucHV0KHZvaWQqIHBDb250ZXh0LCBGWF9MUEJZVEUqIGF2YWlsX2J1Zl9wdHIpOw0KK3Byb3RlY3RlZDoNCisgICAgSUZYX0pwZWdQcm92aWRlciogbV9wRXh0UHJvdmlkZXI7DQorfTsNCitjbGFzcyBDQ29kZWNfSWNjTW9kdWxlIDogcHVibGljIElDb2RlY19JY2NNb2R1bGUNCit7DQorcHVibGljOg0KKyAgICB2aXJ0dWFsIEljY0NTCQkJR2V0UHJvZmlsZUNTKEZYX0xQQ0JZVEUgcFByb2ZpbGVEYXRhLCB1bnNpZ25lZCBpbnQgZHdQcm9maWxlU2l6ZSk7DQorICAgIHZpcnR1YWwgSWNjQ1MJCQlHZXRQcm9maWxlQ1MoSUZYX0ZpbGVSZWFkKiBwRmlsZSk7DQorICAgIHZpcnR1YWwgRlhfTFBWT0lECQlDcmVhdGVUcmFuc2Zvcm0oSUNvZGVjX0ljY01vZHVsZTo6SWNjUGFyYW0qIHBJbnB1dFBhcmFtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUNvZGVjX0ljY01vZHVsZTo6SWNjUGFyYW0qIHBPdXRwdXRQYXJhbSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElDb2RlY19JY2NNb2R1bGU6OkljY1BhcmFtKiBwUHJvb2ZQYXJhbSA9IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBkd0ludGVudCA9IEljY19JTlRFTlRfUEVSQ0VQVFVBTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGR3RmxhZyA9IEljY19GTEFHU19ERUZBVUxULA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZHdQcmZJbnRlbnQgPSBJY2NfSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGR3UHJmRmxhZyA9IEljY19GTEFHU19TT0ZUUFJPT0ZJTkcNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorICAgIHZpcnR1YWwgRlhfTFBWT0lECQlDcmVhdGVUcmFuc2Zvcm1fc1JHQihGWF9MUENCWVRFIHBQcm9maWxlRGF0YSwgdW5zaWduZWQgaW50IGR3UHJvZmlsZVNpemUsIGludCBuQ29tcG9uZW50cywgaW50IGludGVudCA9IDAsDQorICAgICAgICAgICAgRlhfRFdPUkQgZHdTcmNGb3JtYXQgPSBJY2NfRk9STUFUX0RFRkFVTFQpOw0KKyAgICB2aXJ0dWFsIEZYX0xQVk9JRAkJQ3JlYXRlVHJhbnNmb3JtX0NNWUsoRlhfTFBDQllURSBwU3JjUHJvZmlsZURhdGEsIHVuc2lnbmVkIGludCBkd1NyY1Byb2ZpbGVTaXplLCBpbnQgblNyY0NvbXBvbmVudHMsDQorICAgICAgICAgICAgRlhfTFBDQllURSBwRHN0UHJvZmlsZURhdGEsIHVuc2lnbmVkIGludCBkd0RzdFByb2ZpbGVTaXplLCBpbnQgaW50ZW50ID0gMCwNCisgICAgICAgICAgICBGWF9EV09SRCBkd1NyY0Zvcm1hdCA9IEljY19GT1JNQVRfREVGQVVMVCwNCisgICAgICAgICAgICBGWF9EV09SRCBkd0RzdEZvcm1hdCA9IEljY19GT1JNQVRfREVGQVVMVA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICB2aXJ0dWFsIHZvaWQJCQlEZXN0cm95VHJhbnNmb3JtKEZYX0xQVk9JRCBwVHJhbnNmb3JtKTsNCisgICAgdmlydHVhbCB2b2lkCQkJVHJhbnNsYXRlKEZYX0xQVk9JRCBwVHJhbnNmb3JtLCBGWF9GTE9BVCogcFNyY1ZhbHVlcywgRlhfRkxPQVQqIHBEZXN0VmFsdWVzKTsNCisgICAgdmlydHVhbCB2b2lkCQkJVHJhbnNsYXRlU2NhbmxpbmUoRlhfTFBWT0lEIHBUcmFuc2Zvcm0sIEZYX0xQQllURSBwRGVzdCwgRlhfTFBDQllURSBwU3JjLCBpbnQgcGl4ZWxzKTsNCisgICAgdmlydHVhbCB+Q0NvZGVjX0ljY01vZHVsZSgpOw0KK3Byb3RlY3RlZDoNCisgICAgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cgkJbV9NYXBUcmFuZm9ybTsNCisgICAgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cgkJbV9NYXBQcm9maWxlOw0KKyAgICB0eXBlZGVmIGVudW0gew0KKyAgICAgICAgSWNjX0NMQVNTX0lOUFVUID0gMCwNCisgICAgICAgIEljY19DTEFTU19PVVRQVVQsDQorICAgICAgICBJY2NfQ0xBU1NfUFJPT0YsDQorICAgICAgICBJY2NfQ0xBU1NfTUFYDQorICAgIH0gSWNjX0NMQVNTOw0KKyAgICBGWF9MUFZPSUQJCUNyZWF0ZVByb2ZpbGUoSUNvZGVjX0ljY01vZHVsZTo6SWNjUGFyYW0qIHBJY2NQYXJhbSwgSWNjX0NMQVNTIGljLCBDRlhfQmluYXJ5QnVmKiBwVHJhbnNmb3JtS2V5KTsNCit9Ow0KK2NsYXNzIENDb2RlY19KcHhNb2R1bGUgOiBwdWJsaWMgSUNvZGVjX0pweE1vZHVsZQ0KK3sNCitwdWJsaWM6DQorICAgIENDb2RlY19KcHhNb2R1bGUoKTsNCisgICAgdm9pZCoJCUNyZWF0ZURlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfQk9PTCB1c2VDb2xvclNwYWNlID0gRkFMU0UpOw0KKyAgICB2b2lkCQlHZXRJbWFnZUluZm8oRlhfTFBWT0lEIGN0eCwgRlhfRFdPUkQmIHdpZHRoLCBGWF9EV09SRCYgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQmIGNvZGVzdHJlYW1fbkNvbXBzLCBGWF9EV09SRCYgb3V0cHV0X25Db21wcyk7DQorICAgIEZYX0JPT0wJCURlY29kZSh2b2lkKiBjdHgsIEZYX0xQQllURSBkZXN0X2RhdGEsIGludCBwaXRjaCwgRlhfQk9PTCBiVHJhbnNsYXRlQ29sb3IsIEZYX0xQQllURSBvZmZzZXRzKTsNCisgICAgdm9pZAkJRGVzdHJveURlY29kZXIodm9pZCogY3R4KTsNCit9Ow0KKyNpbmNsdWRlICIuLi9qYmlnMi9KQmlnMl9Db250ZXh0LmgiDQorY2xhc3MgQ1BERl9KYmlnMkludGVyZmFjZSA6IHB1YmxpYyBDRlhfT2JqZWN0LCBwdWJsaWMgQ0pCaWcyX01vZHVsZQ0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgdm9pZCAqSkJpZzJfTWFsbG9jKEZYX0RXT1JEIGR3U2l6ZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX0FsbG9jKEZYX0JZVEUsIGR3U2l6ZSk7DQorICAgIH0NCisgICAgdmlydHVhbCB2b2lkICpKQmlnMl9NYWxsb2MyKEZYX0RXT1JEIG51bSwgRlhfRFdPUkQgZHdTaXplKQ0KKyAgICB7DQorICAgICAgICBpZiAoZHdTaXplICYmIG51bSA+PSBVSU5UX01BWCAvIGR3U2l6ZSkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEZYX0FsbG9jKEZYX0JZVEUsIG51bSAqIGR3U2l6ZSk7DQorICAgIH0NCisgICAgdmlydHVhbCB2b2lkICpKQmlnMl9NYWxsb2MzKEZYX0RXT1JEIG51bSwgRlhfRFdPUkQgZHdTaXplLCBGWF9EV09SRCBkd1NpemUyKQ0KKyAgICB7DQorICAgICAgICBpZiAoZHdTaXplMiAmJiBkd1NpemUgPj0gVUlOVF9NQVggLyBkd1NpemUyKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCBzaXplID0gZHdTaXplMiAqIGR3U2l6ZTsNCisgICAgICAgIGlmIChzaXplICYmIG51bSA+PSBVSU5UX01BWCAvIHNpemUpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBGWF9BbGxvYyhGWF9CWVRFLCBudW0gKiBzaXplKTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQgKkpCaWcyX1JlYWxsb2MoRlhfTFBWT0lEIHBNZW0sIEZYX0RXT1JEIGR3U2l6ZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZYX1JlYWxsb2MoRlhfQllURSwgcE1lbSwgZHdTaXplKTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQgSkJpZzJfRnJlZShGWF9MUFZPSUQgcE1lbSkNCisgICAgew0KKyAgICAgICAgRlhfRnJlZShwTWVtKTsNCisgICAgfQ0KK307DQorY2xhc3MgQ0NvZGVjX0piaWcyQ29udGV4dCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ0NvZGVjX0piaWcyQ29udGV4dCgpOw0KKyAgICB+Q0NvZGVjX0piaWcyQ29udGV4dCgpIHt9Ow0KKyAgICBJRlhfRmlsZVJlYWQqIG1fZmlsZV9wdHI7DQorICAgIEZYX0RXT1JEIG1fd2lkdGg7DQorICAgIEZYX0RXT1JEIG1faGVpZ2h0Ow0KKyAgICBGWF9MUEJZVEUgbV9zcmNfYnVmOw0KKyAgICBGWF9EV09SRCBtX3NyY19zaXplOw0KKyAgICBGWF9MUENCWVRFIG1fZ2xvYmFsX2RhdGE7DQorICAgIEZYX0RXT1JEIG1fZ2xvYmFsX3NpemU7DQorICAgIEZYX0xQQllURSBtX2Rlc3RfYnVmOw0KKyAgICBGWF9EV09SRCBtX2Rlc3RfcGl0Y2g7DQorICAgIEZYX0JPT0wJbV9iRmlsZVJlYWRlcjsNCisgICAgSUZYX1BhdXNlKiBtX3BQYXVzZTsNCisgICAgQ0pCaWcyX0NvbnRleHQqIG1fcENvbnRleHQ7DQorICAgIENKQmlnMl9JbWFnZSogbV9kZXN0X2ltYWdlOw0KK307DQorY2xhc3MgQ0NvZGVjX0piaWcyTW9kdWxlIDogcHVibGljIElDb2RlY19KYmlnMk1vZHVsZQ0KK3sNCitwdWJsaWM6DQorICAgIENDb2RlY19KYmlnMk1vZHVsZSgpIHt9Ow0KKyAgICB+Q0NvZGVjX0piaWcyTW9kdWxlKCk7DQorICAgIEZYX0JPT0wJCURlY29kZShGWF9EV09SRCB3aWR0aCwgRlhfRFdPUkQgaGVpZ2h0LCBGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBnbG9iYWxfZGF0YSwgRlhfRFdPUkQgZ2xvYmFsX3NpemUsIEZYX0xQQllURSBkZXN0X2J1ZiwgRlhfRFdPUkQgZGVzdF9waXRjaCk7DQorICAgIEZYX0JPT0wJCURlY29kZShJRlhfRmlsZVJlYWQqIGZpbGVfcHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQmIHdpZHRoLCBGWF9EV09SRCYgaGVpZ2h0LCBGWF9EV09SRCYgcGl0Y2gsIEZYX0xQQllURSYgZGVzdF9idWYpOw0KKyAgICB2b2lkKgkJCQlDcmVhdGVKYmlnMkNvbnRleHQoKTsNCisgICAgRlhDT0RFQ19TVEFUVVMJCVN0YXJ0RGVjb2RlKHZvaWQqIHBKYmlnMkNvbnRleHQsIEZYX0RXT1JEIHdpZHRoLCBGWF9EV09SRCBoZWlnaHQsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBnbG9iYWxfZGF0YSwgRlhfRFdPUkQgZ2xvYmFsX3NpemUsIEZYX0xQQllURSBkZXN0X2J1ZiwgRlhfRFdPUkQgZGVzdF9waXRjaCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKw0KKyAgICBGWENPREVDX1NUQVRVUwkJU3RhcnREZWNvZGUodm9pZCogcEpiaWcyQ29udGV4dCwgSUZYX0ZpbGVSZWFkKiBmaWxlX3B0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCYgd2lkdGgsIEZYX0RXT1JEJiBoZWlnaHQsIEZYX0RXT1JEJiBwaXRjaCwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBGWENPREVDX1NUQVRVUwkJQ29udGludWVEZWNvZGUodm9pZCogcEpiaWcyQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICB2b2lkCQkJCURlc3Ryb3lKYmlnMkNvbnRleHQodm9pZCogcEpiaWcyQ29udGV4dCk7DQorICAgIENQREZfSmJpZzJJbnRlcmZhY2UJbV9Nb2R1bGU7DQorcHJpdmF0ZToNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvY29kZWMvZnhfY29kZWMuY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY1ODZjYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvY29kZWMvZnhfY29kZWMuY3BwCkBAIC0wLDAgKzEsNDQ3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorI2luY2x1ZGUgImNvZGVjX2ludC5oIg0KK0NDb2RlY19Nb2R1bGVNZ3I6OkNDb2RlY19Nb2R1bGVNZ3IoKQ0KK3sNCisgICAgbV9wQmFzaWNNb2R1bGUgPSBGWF9ORVcgQ0NvZGVjX0Jhc2ljTW9kdWxlOw0KKyAgICBtX3BGYXhNb2R1bGUgPSBGWF9ORVcgQ0NvZGVjX0ZheE1vZHVsZTsNCisgICAgbV9wSnBlZ01vZHVsZSA9IEZYX05FVyBDQ29kZWNfSnBlZ01vZHVsZTsNCisgICAgbV9wSnB4TW9kdWxlID0gRlhfTkVXIENDb2RlY19KcHhNb2R1bGU7DQorICAgIG1fcEpiaWcyTW9kdWxlID0gRlhfTkVXIENDb2RlY19KYmlnMk1vZHVsZTsNCisgICAgbV9wSWNjTW9kdWxlID0gRlhfTkVXIENDb2RlY19JY2NNb2R1bGU7DQorICAgIG1fcEZsYXRlTW9kdWxlID0gRlhfTkVXIENDb2RlY19GbGF0ZU1vZHVsZTsNCit9DQorQ0NvZGVjX01vZHVsZU1ncjo6fkNDb2RlY19Nb2R1bGVNZ3IoKQ0KK3sNCisgICAgZGVsZXRlIG1fcEJhc2ljTW9kdWxlOw0KKyAgICBkZWxldGUgbV9wRmF4TW9kdWxlOw0KKyAgICBkZWxldGUgbV9wSnBlZ01vZHVsZTsNCisgICAgZGVsZXRlIG1fcEZsYXRlTW9kdWxlOw0KKyAgICBkZWxldGUgbV9wSnB4TW9kdWxlOw0KKyAgICBkZWxldGUgbV9wSmJpZzJNb2R1bGU7DQorICAgIGRlbGV0ZSBtX3BJY2NNb2R1bGU7DQorfQ0KK3ZvaWQgQ0NvZGVjX01vZHVsZU1ncjo6SW5pdEpiaWcyRGVjb2RlcigpDQorew0KK30NCit2b2lkIENDb2RlY19Nb2R1bGVNZ3I6OkluaXRKcHhEZWNvZGVyKCkNCit7DQorfQ0KK3ZvaWQgQ0NvZGVjX01vZHVsZU1ncjo6SW5pdEljY0RlY29kZXIoKQ0KK3sNCit9DQorQ0NvZGVjX1NjYW5saW5lRGVjb2Rlcjo6Q0NvZGVjX1NjYW5saW5lRGVjb2RlcigpDQorew0KKyAgICBtX05leHRMaW5lID0gLTE7DQorICAgIG1fcERhdGFDYWNoZSA9IE5VTEw7DQorICAgIG1fcExhc3RTY2FubGluZSA9IE5VTEw7DQorfQ0KK0NDb2RlY19TY2FubGluZURlY29kZXI6On5DQ29kZWNfU2NhbmxpbmVEZWNvZGVyKCkNCit7DQorICAgIGlmIChtX3BEYXRhQ2FjaGUpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wRGF0YUNhY2hlKTsNCisgICAgfQ0KK30NCitGWF9MUEJZVEUgQ0NvZGVjX1NjYW5saW5lRGVjb2Rlcjo6R2V0U2NhbmxpbmUoaW50IGxpbmUpDQorew0KKyAgICBpZiAobV9wRGF0YUNhY2hlICYmIGxpbmUgPCBtX3BEYXRhQ2FjaGUtPm1fbkNhY2hlZExpbmVzKSB7DQorICAgICAgICByZXR1cm4gJm1fcERhdGFDYWNoZS0+bV9EYXRhICsgbGluZSAqIG1fUGl0Y2g7DQorICAgIH0NCisgICAgaWYgKG1fTmV4dExpbmUgPT0gbGluZSArIDEpIHsNCisgICAgICAgIHJldHVybiBtX3BMYXN0U2NhbmxpbmU7DQorICAgIH0NCisgICAgaWYgKG1fTmV4dExpbmUgPCAwIHx8IG1fTmV4dExpbmUgPiBsaW5lKSB7DQorICAgICAgICBpZiAoIXZfUmV3aW5kKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIG1fTmV4dExpbmUgPSAwOw0KKyAgICB9DQorICAgIHdoaWxlIChtX05leHRMaW5lIDwgbGluZSkgew0KKyAgICAgICAgUmVhZE5leHRMaW5lKCk7DQorICAgICAgICBtX05leHRMaW5lICsrOw0KKyAgICB9DQorICAgIG1fcExhc3RTY2FubGluZSA9IFJlYWROZXh0TGluZSgpOw0KKyAgICBtX05leHRMaW5lICsrOw0KKyAgICByZXR1cm4gbV9wTGFzdFNjYW5saW5lOw0KK30NCitGWF9CT09MIENDb2RlY19TY2FubGluZURlY29kZXI6OlNraXBUb1NjYW5saW5lKGludCBsaW5lLCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIGlmIChtX3BEYXRhQ2FjaGUgJiYgbGluZSA8IG1fcERhdGFDYWNoZS0+bV9uQ2FjaGVkTGluZXMpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9OZXh0TGluZSA9PSBsaW5lIHx8IG1fTmV4dExpbmUgPT0gbGluZSArIDEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9OZXh0TGluZSA8IDAgfHwgbV9OZXh0TGluZSA+IGxpbmUpIHsNCisgICAgICAgIHZfUmV3aW5kKCk7DQorICAgICAgICBtX05leHRMaW5lID0gMDsNCisgICAgfQ0KKyAgICBtX3BMYXN0U2NhbmxpbmUgPSBOVUxMOw0KKyAgICB3aGlsZSAobV9OZXh0TGluZSA8IGxpbmUpIHsNCisgICAgICAgIG1fcExhc3RTY2FubGluZSA9IFJlYWROZXh0TGluZSgpOw0KKyAgICAgICAgbV9OZXh0TGluZSArKzsNCisgICAgICAgIGlmIChwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9MUEJZVEUgQ0NvZGVjX1NjYW5saW5lRGVjb2Rlcjo6UmVhZE5leHRMaW5lKCkNCit7DQorICAgIEZYX0xQQllURSBwTGluZSA9IHZfR2V0TmV4dExpbmUoKTsNCisgICAgaWYgKHBMaW5lID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BEYXRhQ2FjaGUgJiYgbV9OZXh0TGluZSA9PSBtX3BEYXRhQ2FjaGUtPm1fbkNhY2hlZExpbmVzKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMigmbV9wRGF0YUNhY2hlLT5tX0RhdGEgKyBtX05leHRMaW5lICogbV9QaXRjaCwgcExpbmUsIG1fUGl0Y2gpOw0KKyAgICAgICAgbV9wRGF0YUNhY2hlLT5tX25DYWNoZWRMaW5lcyArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gcExpbmU7DQorfQ0KK3ZvaWQgQ0NvZGVjX1NjYW5saW5lRGVjb2Rlcjo6RG93blNjYWxlKGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpDQorew0KKyAgICBpZiAoZGVzdF93aWR0aCA8IDApIHsNCisgICAgICAgIGRlc3Rfd2lkdGggPSAtZGVzdF93aWR0aDsNCisgICAgfQ0KKyAgICBpZiAoZGVzdF9oZWlnaHQgPCAwKSB7DQorICAgICAgICBkZXN0X2hlaWdodCA9IC1kZXN0X2hlaWdodDsNCisgICAgfQ0KKyAgICB2X0Rvd25TY2FsZShkZXN0X3dpZHRoLCBkZXN0X2hlaWdodCk7DQorICAgIGlmIChtX3BEYXRhQ2FjaGUpIHsNCisgICAgICAgIGlmIChtX3BEYXRhQ2FjaGUtPm1fSGVpZ2h0ID09IG1fT3V0cHV0SGVpZ2h0ICYmIG1fcERhdGFDYWNoZS0+bV9XaWR0aCA9PSBtX091dHB1dFdpZHRoKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRnJlZShtX3BEYXRhQ2FjaGUpOw0KKyAgICAgICAgbV9wRGF0YUNhY2hlID0gTlVMTDsNCisgICAgfQ0KKyAgICBtX3BEYXRhQ2FjaGUgPSAoQ0NvZGVjX0ltYWdlRGF0YUNhY2hlKilGWE1FTV9EZWZhdWx0QWxsb2MoDQorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoQ0NvZGVjX0ltYWdlRGF0YUNhY2hlKSArIG1fUGl0Y2ggKiBtX091dHB1dEhlaWdodCwgRlhNRU1fTk9OTEVBVkUpOw0KKyAgICBpZiAobV9wRGF0YUNhY2hlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BEYXRhQ2FjaGUtPm1fSGVpZ2h0ID0gbV9PdXRwdXRIZWlnaHQ7DQorICAgIG1fcERhdGFDYWNoZS0+bV9XaWR0aCA9IG1fT3V0cHV0V2lkdGg7DQorICAgIG1fcERhdGFDYWNoZS0+bV9uQ2FjaGVkTGluZXMgPSAwOw0KK30NCitGWF9CT09MIENDb2RlY19CYXNpY01vZHVsZTo6UnVuTGVuZ3RoRW5jb2RlKGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBGWF9MUEJZVEUmIGRlc3RfYnVmLA0KKyAgICAgICAgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkNCit7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorZXh0ZXJuICJDIiBkb3VibGUgRlhzdHJ0b2QoY29uc3QgY2hhciogbnB0ciwgY2hhcioqIGVuZHB0cikNCit7DQorICAgIGRvdWJsZSByZXQgPSAwLjA7DQorICAgIGNvbnN0IGNoYXIqIHB0ciA9IG5wdHI7DQorICAgIGNvbnN0IGNoYXIqIGV4cF9wdHIgPSBOVUxMOw0KKyAgICBpbnQJZV9udW1iZXIgPSAwLA0KKyAgICAgICAgZV9zaWduYWwgPSAwLA0KKyAgICAgICAgZV9wb2ludCA9IDAsDQorICAgICAgICBpc19uZWdhdGl2ZSA9IDA7DQorICAgIGludCBleHBfcmV0ID0gMCwgZXhwX3NpZyA9IDEsDQorICAgICAgICBmcmFfcmV0ID0gMCwgZnJhX2NvdW50ID0gMCwgZnJhX2Jhc2UgPSAxOw0KKyAgICBpZihucHRyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwLjA7DQorICAgIH0NCisgICAgZm9yICg7OyBwdHIrKykgew0KKyAgICAgICAgaWYoIWVfbnVtYmVyICYmICFlX3BvaW50ICYmICgqcHRyID09ICdcdCcgfHwgKnB0ciA9PSAnICcpKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZigqcHRyID49ICcwJyAmJiAqcHRyIDw9ICc5Jykgew0KKyAgICAgICAgICAgIGlmKCFlX251bWJlcikgew0KKyAgICAgICAgICAgICAgICBlX251bWJlciA9IDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmKCFlX3BvaW50KSB7DQorICAgICAgICAgICAgICAgIHJldCAqPSAxMDsNCisgICAgICAgICAgICAgICAgcmV0ICs9ICgqcHRyIC0gJzAnKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBmcmFfY291bnQrKzsNCisgICAgICAgICAgICAgICAgZnJhX3JldCAqPSAxMDsNCisgICAgICAgICAgICAgICAgZnJhX3JldCArPSAoKnB0ciAtICcwJyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoIWVfcG9pbnQgJiYgKnB0ciA9PSAnLicpIHsNCisgICAgICAgICAgICBlX3BvaW50ID0gMTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmKCFlX251bWJlciAmJiAhZV9wb2ludCAmJiAhZV9zaWduYWwpIHsNCisgICAgICAgICAgICBzd2l0Y2goKnB0cikgew0KKyAgICAgICAgICAgICAgICBjYXNlICctJzoNCisgICAgICAgICAgICAgICAgICAgIGlzX25lZ2F0aXZlID0gMTsNCisgICAgICAgICAgICAgICAgY2FzZSAnKyc6DQorICAgICAgICAgICAgICAgICAgICBlX3NpZ25hbCA9IDE7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZihlX251bWJlciAmJiAoKnB0ciA9PSAnZScgfHwgKnB0ciA9PSAnRScpKSB7DQorI2RlZmluZSBFWFBPTkVOVF9ERVRFQ1QocHRyKQlcDQorICAgIGZvcig7O3B0cisrKXsJCVwNCisgICAgICAgIGlmKCpwdHIgPCAnMCcgfHwgKnB0ciA+ICc5Jyl7CVwNCisgICAgICAgICAgICBpZihlbmRwdHIpCSplbmRwdHIgPSAoY2hhciopcHRyOwlcDQorICAgICAgICAgICAgYnJlYWs7CVwNCisgICAgICAgIH1lbHNlewkJXA0KKyAgICAgICAgICAgIGV4cF9yZXQgKj0gMTA7CVwNCisgICAgICAgICAgICBleHBfcmV0ICs9ICgqcHRyIC0gJzAnKTsJXA0KKyAgICAgICAgICAgIGNvbnRpbnVlOwkJXA0KKyAgICAgICAgfQlcDQorICAgIH0NCisgICAgICAgICAgICBleHBfcHRyID0gcHRyKys7DQorICAgICAgICAgICAgaWYoKnB0ciA9PSAnKycgfHwgKnB0ciA9PSAnLScpIHsNCisgICAgICAgICAgICAgICAgZXhwX3NpZyA9ICgqcHRyKysgPT0gJysnKSA/IDEgOiAtMTsNCisgICAgICAgICAgICAgICAgaWYoKnB0ciA8ICcwJyB8fCAqcHRyID4gJzknKSB7DQorICAgICAgICAgICAgICAgICAgICBpZihlbmRwdHIpCXsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZW5kcHRyID0gKGNoYXIqKWV4cF9wdHI7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBFWFBPTkVOVF9ERVRFQ1QocHRyKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYoKnB0ciA+PSAnMCcgJiYgKnB0ciA8PSAnOScpIHsNCisgICAgICAgICAgICAgICAgRVhQT05FTlRfREVURUNUKHB0cik7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYoZW5kcHRyKQl7DQorICAgICAgICAgICAgICAgICAgICAqZW5kcHRyID0gKGNoYXIqKWV4cF9wdHI7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyN1bmRlZiBFWFBPTkVOVF9ERVRFQ1QNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGlmKHB0ciAhPSBucHRyICYmICFlX251bWJlcikgew0KKyAgICAgICAgICAgIGlmKGVuZHB0cikJew0KKyAgICAgICAgICAgICAgICAqZW5kcHRyID0gKGNoYXIqKW5wdHI7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoZW5kcHRyKQl7DQorICAgICAgICAgICAgKmVuZHB0ciA9IChjaGFyKilwdHI7DQorICAgICAgICB9DQorICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICB3aGlsZShmcmFfY291bnQtLSkgew0KKyAgICAgICAgZnJhX2Jhc2UgKj0gMTA7DQorICAgIH0NCisgICAgcmV0ICs9IChkb3VibGUpZnJhX3JldCAvIChkb3VibGUpZnJhX2Jhc2U7DQorICAgIGlmKGV4cF9zaWcgPT0gMSkgew0KKyAgICAgICAgd2hpbGUoZXhwX3JldC0tKSB7DQorICAgICAgICAgICAgcmV0ICo9IDEwLjA7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICB3aGlsZShleHBfcmV0LS0pIHsNCisgICAgICAgICAgICByZXQgLz0gMTAuMDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gaXNfbmVnYXRpdmUgPyAtcmV0IDogcmV0Ow0KK30NCitGWF9CT09MIENDb2RlY19CYXNpY01vZHVsZTo6QTg1RW5jb2RlKGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBGWF9MUEJZVEUmIGRlc3RfYnVmLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQmIGRlc3Rfc2l6ZSkNCit7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorQ0NvZGVjX01vZHVsZU1nciogQ0NvZGVjX01vZHVsZU1ncjo6Q3JlYXRlKCkNCit7DQorICAgIHJldHVybiBGWF9ORVcgQ0NvZGVjX01vZHVsZU1ncjsNCit9DQordm9pZCBDQ29kZWNfTW9kdWxlTWdyOjpEZXN0cm95KCkNCit7DQorICAgIGRlbGV0ZSB0aGlzOw0KK30NCitjbGFzcyBDQ29kZWNfUkxTY2FubGluZURlY29kZXIgOiBwdWJsaWMgQ0NvZGVjX1NjYW5saW5lRGVjb2Rlcg0KK3sNCitwdWJsaWM6DQorICAgIENDb2RlY19STFNjYW5saW5lRGVjb2RlcigpOw0KKyAgICB2aXJ0dWFsIH5DQ29kZWNfUkxTY2FubGluZURlY29kZXIoKTsNCisgICAgRlhfQk9PTAkJCQlDcmVhdGUoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbkNvbXBzLCBpbnQgYnBjKTsNCisgICAgdmlydHVhbCB2b2lkCQl2X0Rvd25TY2FsZShpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0KSB7fQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCXZfUmV3aW5kKCk7DQorICAgIHZpcnR1YWwgRlhfTFBCWVRFCXZfR2V0TmV4dExpbmUoKTsNCisgICAgdmlydHVhbCBGWF9EV09SRAlHZXRTcmNPZmZzZXQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9TcmNPZmZzZXQ7DQorICAgIH0NCitwcm90ZWN0ZWQ6DQorICAgIEZYX0JPT0wJCQkJQ2hlY2tEZXN0U2l6ZSgpOw0KKyAgICB2b2lkCQkJCUdldE5leHRPcGVyYXRvcigpOw0KKyAgICB2b2lkCQkJCVVwZGF0ZU9wZXJhdG9yKEZYX0JZVEUgdXNlZF9ieXRlcyk7DQorDQorICAgIEZYX0xQQllURQkJCW1fcFNjYW5saW5lOw0KKyAgICBGWF9MUENCWVRFCQkJbV9wU3JjQnVmOw0KKyAgICBGWF9EV09SRAkJCW1fU3JjU2l6ZTsNCisgICAgRlhfRFdPUkQJCQltX2R3TGluZUJ5dGVzOw0KKyAgICBGWF9EV09SRAkJCW1fU3JjT2Zmc2V0Ow0KKyAgICBGWF9CT09MCQkJCW1fYkVPRDsNCisgICAgRlhfQllURQkJCQltX09wZXJhdG9yOw0KK307DQorQ0NvZGVjX1JMU2NhbmxpbmVEZWNvZGVyOjpDQ29kZWNfUkxTY2FubGluZURlY29kZXIoKQ0KKyAgICA6IG1fcFNjYW5saW5lKE5VTEwpDQorICAgICwgbV9wU3JjQnVmKE5VTEwpDQorICAgICwgbV9TcmNTaXplKDApDQorICAgICwgbV9kd0xpbmVCeXRlcygwKQ0KKyAgICAsIG1fU3JjT2Zmc2V0KDApDQorICAgICwgbV9iRU9EKEZBTFNFKQ0KKyAgICAsIG1fT3BlcmF0b3IoMCkNCit7DQorfQ0KK0NDb2RlY19STFNjYW5saW5lRGVjb2Rlcjo6fkNDb2RlY19STFNjYW5saW5lRGVjb2RlcigpDQorew0KKyAgICBpZiAobV9wU2NhbmxpbmUpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wU2NhbmxpbmUpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ0NvZGVjX1JMU2NhbmxpbmVEZWNvZGVyOjpDaGVja0Rlc3RTaXplKCkNCit7DQorICAgIEZYX0RXT1JEIGkgPSAwOw0KKyAgICBGWF9EV09SRCBvbGRfc2l6ZSA9IDA7DQorICAgIEZYX0RXT1JEIGRlc3Rfc2l6ZSA9IDA7DQorICAgIHdoaWxlIChpIDwgbV9TcmNTaXplKSB7DQorICAgICAgICBpZiAobV9wU3JjQnVmW2ldIDwgMTI4KSB7DQorICAgICAgICAgICAgb2xkX3NpemUgPSBkZXN0X3NpemU7DQorICAgICAgICAgICAgZGVzdF9zaXplICs9IG1fcFNyY0J1ZltpXSArIDE7DQorICAgICAgICAgICAgaWYgKGRlc3Rfc2l6ZSA8IG9sZF9zaXplKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaSArPSBtX3BTcmNCdWZbaV0gKyAyOw0KKyAgICAgICAgfSBlbHNlIGlmIChtX3BTcmNCdWZbaV0gPiAxMjgpIHsNCisgICAgICAgICAgICBvbGRfc2l6ZSA9IGRlc3Rfc2l6ZTsNCisgICAgICAgICAgICBkZXN0X3NpemUgKz0gMjU3IC0gbV9wU3JjQnVmW2ldOw0KKyAgICAgICAgICAgIGlmIChkZXN0X3NpemUgPCBvbGRfc2l6ZSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGkgKz0gMjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCgoRlhfRFdPUkQpbV9PcmlnV2lkdGggKiBtX25Db21wcyAqIG1fYnBjICogbV9PcmlnSGVpZ2h0ICsgNykgLyA4ID4gZGVzdF9zaXplKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0NvZGVjX1JMU2NhbmxpbmVEZWNvZGVyOjpDcmVhdGUoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbkNvbXBzLCBpbnQgYnBjKQ0KK3sNCisgICAgbV9wU3JjQnVmID0gc3JjX2J1ZjsNCisgICAgbV9TcmNTaXplID0gc3JjX3NpemU7DQorICAgIG1fT3V0cHV0V2lkdGggPSBtX09yaWdXaWR0aCA9IHdpZHRoOw0KKyAgICBtX091dHB1dEhlaWdodCA9IG1fT3JpZ0hlaWdodCA9IGhlaWdodDsNCisgICAgbV9uQ29tcHMgPSBuQ29tcHM7DQorICAgIG1fYnBjID0gYnBjOw0KKyAgICBtX2JDb2xvclRyYW5zZm9ybWVkID0gRkFMU0U7DQorICAgIG1fRG93blNjYWxlID0gMTsNCisgICAgbV9QaXRjaCA9ICh3aWR0aCAqIG5Db21wcyAqIGJwYyArIDMxKSAvIDMyICogNDsNCisgICAgbV9kd0xpbmVCeXRlcyA9ICh3aWR0aCAqIG5Db21wcyAqIGJwYyArIDcpIC8gODsNCisgICAgbV9wU2NhbmxpbmUgPSBGWF9BbGxvYyhGWF9CWVRFLCBtX1BpdGNoKTsNCisgICAgaWYgKG1fcFNjYW5saW5lID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1zZXQzMihtX3BTY2FubGluZSwgMCwgbV9QaXRjaCk7DQorICAgIHJldHVybiBDaGVja0Rlc3RTaXplKCk7DQorfQ0KK0ZYX0JPT0wgQ0NvZGVjX1JMU2NhbmxpbmVEZWNvZGVyOjp2X1Jld2luZCgpDQorew0KKyAgICBGWFNZU19tZW1zZXQzMihtX3BTY2FubGluZSwgMCwgbV9QaXRjaCk7DQorICAgIG1fU3JjT2Zmc2V0ID0gMDsNCisgICAgbV9iRU9EID0gRkFMU0U7DQorICAgIG1fT3BlcmF0b3IgPSAwOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfTFBCWVRFIENDb2RlY19STFNjYW5saW5lRGVjb2Rlcjo6dl9HZXROZXh0TGluZSgpDQorew0KKyAgICBpZiAobV9TcmNPZmZzZXQgPT0gMCkgew0KKyAgICAgICAgR2V0TmV4dE9wZXJhdG9yKCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAobV9iRU9EKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhTWVNfbWVtc2V0MzIobV9wU2NhbmxpbmUsIDAsIG1fUGl0Y2gpOw0KKyAgICBGWF9EV09SRCBjb2xfcG9zID0gMDsNCisgICAgRlhfQk9PTAllb2wgPSBGQUxTRTsNCisgICAgd2hpbGUgKG1fU3JjT2Zmc2V0IDwgbV9TcmNTaXplICYmICFlb2wpIHsNCisgICAgICAgIGlmIChtX09wZXJhdG9yIDwgMTI4KSB7DQorICAgICAgICAgICAgRlhfRFdPUkQgY29weV9sZW4gPSBtX09wZXJhdG9yICsgMTsNCisgICAgICAgICAgICBpZiAoY29sX3BvcyArIGNvcHlfbGVuID49IG1fZHdMaW5lQnl0ZXMpIHsNCisgICAgICAgICAgICAgICAgY29weV9sZW4gPSBtX2R3TGluZUJ5dGVzIC0gY29sX3BvczsNCisgICAgICAgICAgICAgICAgZW9sID0gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGNvcHlfbGVuID49IG1fU3JjU2l6ZSAtIG1fU3JjT2Zmc2V0KSB7DQorICAgICAgICAgICAgICAgIGNvcHlfbGVuID0gbV9TcmNTaXplIC0gbV9TcmNPZmZzZXQ7DQorICAgICAgICAgICAgICAgIG1fYkVPRCA9IFRSVUU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcFNjYW5saW5lICsgY29sX3BvcywgbV9wU3JjQnVmICsgbV9TcmNPZmZzZXQsIGNvcHlfbGVuKTsNCisgICAgICAgICAgICBjb2xfcG9zICs9IGNvcHlfbGVuOw0KKyAgICAgICAgICAgIFVwZGF0ZU9wZXJhdG9yKChGWF9CWVRFKWNvcHlfbGVuKTsNCisgICAgICAgIH0gZWxzZSBpZiAobV9PcGVyYXRvciA+IDEyOCkgew0KKyAgICAgICAgICAgIGludCBmaWxsID0gMDsNCisgICAgICAgICAgICBpZiAobV9TcmNPZmZzZXQgLSAxIDwgbV9TcmNTaXplIC0gMSkgew0KKyAgICAgICAgICAgICAgICBmaWxsID0gbV9wU3JjQnVmW21fU3JjT2Zmc2V0XTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRFdPUkQgZHVwbGljYXRlX2xlbiA9IDI1NyAtIG1fT3BlcmF0b3I7DQorICAgICAgICAgICAgaWYgKGNvbF9wb3MgKyBkdXBsaWNhdGVfbGVuID49IG1fZHdMaW5lQnl0ZXMpIHsNCisgICAgICAgICAgICAgICAgZHVwbGljYXRlX2xlbiA9IG1fZHdMaW5lQnl0ZXMgLSBjb2xfcG9zOw0KKyAgICAgICAgICAgICAgICBlb2wgPSBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWFNZU19tZW1zZXQ4KG1fcFNjYW5saW5lICsgY29sX3BvcywgZmlsbCwgZHVwbGljYXRlX2xlbik7DQorICAgICAgICAgICAgY29sX3BvcyArPSBkdXBsaWNhdGVfbGVuOw0KKyAgICAgICAgICAgIFVwZGF0ZU9wZXJhdG9yKChGWF9CWVRFKWR1cGxpY2F0ZV9sZW4pOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX2JFT0QgPSBUUlVFOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBtX3BTY2FubGluZTsNCit9DQordm9pZCBDQ29kZWNfUkxTY2FubGluZURlY29kZXI6OkdldE5leHRPcGVyYXRvcigpDQorew0KKyAgICBpZiAobV9TcmNPZmZzZXQgPj0gbV9TcmNTaXplKSB7DQorICAgICAgICBtX09wZXJhdG9yID0gMTI4Ow0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fT3BlcmF0b3IgPSBtX3BTcmNCdWZbbV9TcmNPZmZzZXRdOw0KKyAgICBtX1NyY09mZnNldCArKzsNCit9DQordm9pZCBDQ29kZWNfUkxTY2FubGluZURlY29kZXI6OlVwZGF0ZU9wZXJhdG9yKEZYX0JZVEUgdXNlZF9ieXRlcykNCit7DQorICAgIGlmICh1c2VkX2J5dGVzID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9PcGVyYXRvciA8IDEyOCkgew0KKyAgICAgICAgRlhTWVNfYXNzZXJ0KChGWF9EV09SRCltX09wZXJhdG9yICsgMSA+PSB1c2VkX2J5dGVzKTsNCisgICAgICAgIGlmICh1c2VkX2J5dGVzID09IG1fT3BlcmF0b3IgKyAxKSB7DQorICAgICAgICAgICAgbV9TcmNPZmZzZXQgKz0gdXNlZF9ieXRlczsNCisgICAgICAgICAgICBHZXROZXh0T3BlcmF0b3IoKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBtX09wZXJhdG9yIC09IHVzZWRfYnl0ZXM7DQorICAgICAgICBtX1NyY09mZnNldCArPSB1c2VkX2J5dGVzOw0KKyAgICAgICAgaWYgKG1fU3JjT2Zmc2V0ID49IG1fU3JjU2l6ZSkgew0KKyAgICAgICAgICAgIG1fT3BlcmF0b3IgPSAxMjg7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfQllURSBjb3VudCA9IDI1NyAtIG1fT3BlcmF0b3I7DQorICAgIEZYU1lTX2Fzc2VydCgoRlhfRFdPUkQpY291bnQgPj0gdXNlZF9ieXRlcyk7DQorICAgIGlmICh1c2VkX2J5dGVzID09IGNvdW50KSB7DQorICAgICAgICBtX1NyY09mZnNldCArKzsNCisgICAgICAgIEdldE5leHRPcGVyYXRvcigpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGNvdW50IC09IHVzZWRfYnl0ZXM7DQorICAgIG1fT3BlcmF0b3IgPSAyNTcgLSBjb3VudDsNCit9DQorSUNvZGVjX1NjYW5saW5lRGVjb2RlciogQ0NvZGVjX0Jhc2ljTW9kdWxlOjpDcmVhdGVSdW5MZW5ndGhEZWNvZGVyKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgIGludCBuQ29tcHMsIGludCBicGMpDQorew0KKyAgICBDQ29kZWNfUkxTY2FubGluZURlY29kZXIqIHBSTFNjYW5saW5lRGVjb2RlciA9IEZYX05FVyBDQ29kZWNfUkxTY2FubGluZURlY29kZXI7DQorICAgIGlmIChwUkxTY2FubGluZURlY29kZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKCFwUkxTY2FubGluZURlY29kZXItPkNyZWF0ZShzcmNfYnVmLCBzcmNfc2l6ZSwgd2lkdGgsIGhlaWdodCwgbkNvbXBzLCBicGMpKSB7DQorICAgICAgICBkZWxldGUgcFJMU2NhbmxpbmVEZWNvZGVyOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBSTFNjYW5saW5lRGVjb2RlcjsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19mYXguY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19mYXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYzdkZWIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2NvZGVjL2Z4X2NvZGVjX2ZheC5jcHAKQEAgLTAsMCArMSw5NjggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWMuaCINCisjaW5jbHVkZSAiY29kZWNfaW50LmgiDQorZXh0ZXJuIGNvbnN0IEZYX0JZVEUgT25lTGVhZFBvc1syNTZdOw0KK2V4dGVybiBjb25zdCBGWF9CWVRFIFplcm9MZWFkUG9zWzI1Nl07DQoraW50IF9GaW5kQml0KGNvbnN0IEZYX0JZVEUqIGRhdGFfYnVmLCBpbnQgbWF4X3BvcywgaW50IHN0YXJ0X3BvcywgaW50IGJpdCkNCit7DQorICAgIGlmIChzdGFydF9wb3MgPj0gbWF4X3Bvcykgew0KKyAgICAgICAgcmV0dXJuIG1heF9wb3M7DQorICAgIH0NCisgICAgRlhfTFBDQllURSBsZWFkaW5nX3BvcyA9IGJpdCA/IE9uZUxlYWRQb3MgOiBaZXJvTGVhZFBvczsNCisgICAgaWYgKHN0YXJ0X3BvcyAlIDgpIHsNCisgICAgICAgIEZYX0JZVEUgZGF0YSA9IGRhdGFfYnVmW3N0YXJ0X3BvcyAvIDhdOw0KKyAgICAgICAgaWYgKGJpdCkgew0KKyAgICAgICAgICAgIGRhdGEgJj0gMHhmZiA+PiAoc3RhcnRfcG9zICUgOCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGRhdGEgfD0gMHhmZiA8PCAoOCAtIHN0YXJ0X3BvcyAlIDgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGxlYWRpbmdfcG9zW2RhdGFdIDwgOCkgew0KKyAgICAgICAgICAgIHJldHVybiBzdGFydF9wb3MgLyA4ICogOCArIGxlYWRpbmdfcG9zW2RhdGFdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3RhcnRfcG9zICs9IDc7DQorICAgIH0NCisgICAgRlhfQllURSBza2lwID0gYml0ID8gMHgwMCA6IDB4ZmY7DQorICAgIGludCBieXRlX3BvcyA9IHN0YXJ0X3BvcyAvIDg7DQorICAgIGludCBtYXhfYnl0ZSA9IChtYXhfcG9zICsgNykgLyA4Ow0KKyAgICB3aGlsZSAoYnl0ZV9wb3MgPCBtYXhfYnl0ZSkgew0KKyAgICAgICAgaWYgKGRhdGFfYnVmW2J5dGVfcG9zXSAhPSBza2lwKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBieXRlX3BvcyArKzsNCisgICAgfQ0KKyAgICBpZiAoYnl0ZV9wb3MgPT0gbWF4X2J5dGUpIHsNCisgICAgICAgIHJldHVybiBtYXhfcG9zOw0KKyAgICB9DQorICAgIGludCBwb3MgPSBsZWFkaW5nX3Bvc1tkYXRhX2J1ZltieXRlX3Bvc11dICsgYnl0ZV9wb3MgKiA4Ow0KKyAgICBpZiAocG9zID4gbWF4X3Bvcykgew0KKyAgICAgICAgcG9zID0gbWF4X3BvczsNCisgICAgfQ0KKyAgICByZXR1cm4gcG9zOw0KK30NCit2b2lkIF9GYXhHNEZpbmRCMUIyKGNvbnN0IEZYX0JZVEUqIHJlZl9idWYsIGludCBjb2x1bW5zLCBpbnQgYTAsIEZYX0JPT0wgYTBjb2xvciwgaW50JiBiMSwgaW50JiBiMikNCit7DQorICAgIGlmIChhMGNvbG9yKSB7DQorICAgICAgICBhMGNvbG9yID0gMTsNCisgICAgfQ0KKyAgICBGWF9CWVRFIGZpcnN0X2JpdCA9IChhMCA8IDApID8gMSA6ICgocmVmX2J1ZlthMCAvIDhdICYgKDEgPDwgKDcgLSBhMCAlIDgpKSkgIT0gMCk7DQorICAgIGIxID0gX0ZpbmRCaXQocmVmX2J1ZiwgY29sdW1ucywgYTAgKyAxLCAhZmlyc3RfYml0KTsNCisgICAgaWYgKGIxID49IGNvbHVtbnMpIHsNCisgICAgICAgIGIxID0gYjIgPSBjb2x1bW5zOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChmaXJzdF9iaXQgPT0gIWEwY29sb3IpIHsNCisgICAgICAgIGIxID0gX0ZpbmRCaXQocmVmX2J1ZiwgY29sdW1ucywgYjEgKyAxLCBmaXJzdF9iaXQpOw0KKyAgICAgICAgZmlyc3RfYml0ID0gIWZpcnN0X2JpdDsNCisgICAgfQ0KKyAgICBpZiAoYjEgPj0gY29sdW1ucykgew0KKyAgICAgICAgYjEgPSBiMiA9IGNvbHVtbnM7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgYjIgPSBfRmluZEJpdChyZWZfYnVmLCBjb2x1bW5zLCBiMSArIDEsIGZpcnN0X2JpdCk7DQorfQ0KK3ZvaWQgX0ZheEZpbGxCaXRzKEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IGNvbHVtbnMsIGludCBzdGFydHBvcywgaW50IGVuZHBvcykNCit7DQorICAgIGlmIChzdGFydHBvcyA8IDApIHsNCisgICAgICAgIHN0YXJ0cG9zID0gMDsNCisgICAgfQ0KKyAgICBpZiAoZW5kcG9zIDwgMCkgew0KKyAgICAgICAgZW5kcG9zID0gMDsNCisgICAgfQ0KKyAgICBpZiAoZW5kcG9zID49IGNvbHVtbnMpIHsNCisgICAgICAgIGVuZHBvcyA9IGNvbHVtbnM7DQorICAgIH0NCisgICAgaWYgKHN0YXJ0cG9zID49IGVuZHBvcykgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBmaXJzdF9ieXRlID0gc3RhcnRwb3MgLyA4Ow0KKyAgICBpbnQgbGFzdF9ieXRlID0gKGVuZHBvcyAtIDEpIC8gODsNCisgICAgaWYgKGZpcnN0X2J5dGUgPT0gbGFzdF9ieXRlKSB7DQorICAgICAgICBmb3IgKGludCBpID0gc3RhcnRwb3MgJSA4OyBpIDw9IChlbmRwb3MgLSAxKSAlIDg7IGkgKyspIHsNCisgICAgICAgICAgICBkZXN0X2J1ZltmaXJzdF9ieXRlXSAtPSAxIDw8ICg3IC0gaSk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IGk7DQorICAgIGZvciAoaSA9IHN0YXJ0cG9zICUgODsgaSA8IDg7IGkgKyspIHsNCisgICAgICAgIGRlc3RfYnVmW2ZpcnN0X2J5dGVdIC09IDEgPDwgKDcgLSBpKTsNCisgICAgfQ0KKyAgICBmb3IgKGkgPSAwOyBpIDw9IChlbmRwb3MgLSAxKSAlIDg7IGkgKyspIHsNCisgICAgICAgIGRlc3RfYnVmW2xhc3RfYnl0ZV0gLT0gMSA8PCAoNyAtIGkpOw0KKyAgICB9DQorICAgIGlmIChsYXN0X2J5dGUgPiBmaXJzdF9ieXRlICsgMSkgew0KKyAgICAgICAgRlhTWVNfbWVtc2V0MzIoZGVzdF9idWYgKyBmaXJzdF9ieXRlICsgMSwgMCwgbGFzdF9ieXRlIC0gZmlyc3RfYnl0ZSAtIDEpOw0KKyAgICB9DQorfQ0KKyNkZWZpbmUgTkVYVEJJVCBzcmNfYnVmW2JpdHBvcy84XSAmICgxIDw8ICg3LWJpdHBvcyU4KSk7IGJpdHBvcyArKzsNCisjZGVmaW5lIEFEREJJVChjb2RlLCBiaXQpIGNvZGUgPSBjb2RlIDw8IDE7IGlmIChiaXQpIGNvZGUgKys7DQorI2RlZmluZSBHRVRCSVQoYml0cG9zKSBzcmNfYnVmW2JpdHBvcy84XSAmICgxIDw8ICg3LWJpdHBvcyU4KSkNCitzdGF0aWMgY29uc3QgRlhfQllURSBGYXhCbGFja1J1bkluc1tdID0gew0KKyAgICAwLA0KKyAgICAyLA0KKyAgICAweDAyLCAzLCAwLA0KKyAgICAweDAzLCAyLCAwLA0KKyAgICAyLA0KKyAgICAweDAyLCAxLCAwLA0KKyAgICAweDAzLCA0LCAwLA0KKyAgICAyLA0KKyAgICAweDAyLCA2LCAwLA0KKyAgICAweDAzLCA1LCAwLA0KKyAgICAxLA0KKyAgICAweDAzLCA3LCAwLA0KKyAgICAyLA0KKyAgICAweDA0LCA5LCAwLA0KKyAgICAweDA1LCA4LCAwLA0KKyAgICAzLA0KKyAgICAweDA0LCAxMCwgMCwNCisgICAgMHgwNSwgMTEsIDAsDQorICAgIDB4MDcsIDEyLCAwLA0KKyAgICAyLA0KKyAgICAweDA0LCAxMywgMCwNCisgICAgMHgwNywgMTQsIDAsDQorICAgIDEsDQorICAgIDB4MTgsIDE1LCAwLA0KKyAgICA1LA0KKyAgICAweDA4LCAxOCwgMCwNCisgICAgMHgwZiwgNjQsIDAsDQorICAgIDB4MTcsIDE2LCAwLA0KKyAgICAweDE4LCAxNywgMCwNCisgICAgMHgzNywgMCwgMCwNCisgICAgMTAsDQorICAgIDB4MDgsIDB4MDAsIDB4MDcsDQorICAgIDB4MGMsIDB4NDAsIDB4MDcsDQorICAgIDB4MGQsIDB4ODAsIDB4MDcsDQorICAgIDB4MTcsIDI0LCAwLA0KKyAgICAweDE4LCAyNSwgMCwNCisgICAgMHgyOCwgMjMsIDAsDQorICAgIDB4MzcsIDIyLCAwLA0KKyAgICAweDY3LCAxOSwgMCwNCisgICAgMHg2OCwgMjAsIDAsDQorICAgIDB4NmMsIDIxLCAwLA0KKyAgICA1NCwNCisgICAgMHgxMiwgMTk4NCAlIDI1NiwgMTk4NCAvIDI1NiwNCisgICAgMHgxMywgMjA0OCAlIDI1NiwgMjA0OCAvIDI1NiwNCisgICAgMHgxNCwgMjExMiAlIDI1NiwgMjExMiAvIDI1NiwNCisgICAgMHgxNSwgMjE3NiAlIDI1NiwgMjE3NiAvIDI1NiwNCisgICAgMHgxNiwgMjI0MCAlIDI1NiwgMjI0MCAvIDI1NiwNCisgICAgMHgxNywgMjMwNCAlIDI1NiwgMjMwNCAvIDI1NiwNCisgICAgMHgxYywgMjM2OCAlIDI1NiwgMjM2OCAvIDI1NiwNCisgICAgMHgxZCwgMjQzMiAlIDI1NiwgMjQzMiAvIDI1NiwNCisgICAgMHgxZSwgMjQ5NiAlIDI1NiwgMjQ5NiAvIDI1NiwNCisgICAgMHgxZiwgMjU2MCAlIDI1NiwgMjU2MCAvIDI1NiwNCisgICAgMHgyNCwgNTIsIDAsDQorICAgIDB4MjcsIDU1LCAwLA0KKyAgICAweDI4LCA1NiwgMCwNCisgICAgMHgyYiwgNTksIDAsDQorICAgIDB4MmMsIDYwLCAwLA0KKyAgICAweDMzLCAzMjAgJSAyNTYsIDMyMCAvIDI1NiwNCisgICAgMHgzNCwgMzg0ICUgMjU2LCAzODQgLyAyNTYsDQorICAgIDB4MzUsIDQ0OCAlIDI1NiwgNDQ4IC8gMjU2LA0KKyAgICAweDM3LCA1MywgMCwNCisgICAgMHgzOCwgNTQsIDAsDQorICAgIDB4NTIsIDUwLCAwLA0KKyAgICAweDUzLCA1MSwgMCwNCisgICAgMHg1NCwgNDQsIDAsDQorICAgIDB4NTUsIDQ1LCAwLA0KKyAgICAweDU2LCA0NiwgMCwNCisgICAgMHg1NywgNDcsIDAsDQorICAgIDB4NTgsIDU3LCAwLA0KKyAgICAweDU5LCA1OCwgMCwNCisgICAgMHg1YSwgNjEsIDAsDQorICAgIDB4NWIsIDI1NiAlIDI1NiwgMjU2IC8gMjU2LA0KKyAgICAweDY0LCA0OCwgMCwNCisgICAgMHg2NSwgNDksIDAsDQorICAgIDB4NjYsIDYyLCAwLA0KKyAgICAweDY3LCA2MywgMCwNCisgICAgMHg2OCwgMzAsIDAsDQorICAgIDB4NjksIDMxLCAwLA0KKyAgICAweDZhLCAzMiwgMCwNCisgICAgMHg2YiwgMzMsIDAsDQorICAgIDB4NmMsIDQwLCAwLA0KKyAgICAweDZkLCA0MSwgMCwNCisgICAgMHhjOCwgMTI4LCAwLA0KKyAgICAweGM5LCAxOTIsIDAsDQorICAgIDB4Y2EsIDI2LCAwLA0KKyAgICAweGNiLCAyNywgMCwNCisgICAgMHhjYywgMjgsIDAsDQorICAgIDB4Y2QsIDI5LCAwLA0KKyAgICAweGQyLCAzNCwgMCwNCisgICAgMHhkMywgMzUsIDAsDQorICAgIDB4ZDQsIDM2LCAwLA0KKyAgICAweGQ1LCAzNywgMCwNCisgICAgMHhkNiwgMzgsIDAsDQorICAgIDB4ZDcsIDM5LCAwLA0KKyAgICAweGRhLCA0MiwgMCwNCisgICAgMHhkYiwgNDMsIDAsDQorICAgIDIwLA0KKyAgICAweDRhLCA2NDAgJSAyNTYsIDY0MCAvIDI1NiwNCisgICAgMHg0YiwgNzA0ICUgMjU2LCA3MDQgLyAyNTYsDQorICAgIDB4NGMsIDc2OCAlIDI1NiwgNzY4IC8gMjU2LA0KKyAgICAweDRkLCA4MzIgJSAyNTYsIDgzMiAvIDI1NiwNCisgICAgMHg1MiwgMTI4MCAlIDI1NiwgMTI4MCAvIDI1NiwNCisgICAgMHg1MywgMTM0NCAlIDI1NiwgMTM0NCAvIDI1NiwNCisgICAgMHg1NCwgMTQwOCAlIDI1NiwgMTQwOCAvIDI1NiwNCisgICAgMHg1NSwgMTQ3MiAlIDI1NiwgMTQ3MiAvIDI1NiwNCisgICAgMHg1YSwgMTUzNiAlIDI1NiwgMTUzNiAvIDI1NiwNCisgICAgMHg1YiwgMTYwMCAlIDI1NiwgMTYwMCAvIDI1NiwNCisgICAgMHg2NCwgMTY2NCAlIDI1NiwgMTY2NCAvIDI1NiwNCisgICAgMHg2NSwgMTcyOCAlIDI1NiwgMTcyOCAvIDI1NiwNCisgICAgMHg2YywgNTEyICUgMjU2LCA1MTIgLyAyNTYsDQorICAgIDB4NmQsIDU3NiAlIDI1NiwgNTc2IC8gMjU2LA0KKyAgICAweDcyLCA4OTYgJSAyNTYsIDg5NiAvIDI1NiwNCisgICAgMHg3MywgOTYwICUgMjU2LCA5NjAgLyAyNTYsDQorICAgIDB4NzQsIDEwMjQgJSAyNTYsIDEwMjQgLyAyNTYsDQorICAgIDB4NzUsIDEwODggJSAyNTYsIDEwODggLyAyNTYsDQorICAgIDB4NzYsIDExNTIgJSAyNTYsIDExNTIgLyAyNTYsDQorICAgIDB4NzcsIDEyMTYgJSAyNTYsIDEyMTYgLyAyNTYsDQorICAgIDB4ZmYNCit9Ow0KK3N0YXRpYyBjb25zdCBGWF9CWVRFIEZheFdoaXRlUnVuSW5zW10gPSB7DQorICAgIDAsDQorICAgIDAsDQorICAgIDAsDQorICAgIDYsDQorICAgIDB4MDcsIDIsIDAsDQorICAgIDB4MDgsIDMsIDAsDQorICAgIDB4MEIsIDQsIDAsDQorICAgIDB4MEMsIDUsIDAsDQorICAgIDB4MEUsIDYsIDAsDQorICAgIDB4MEYsIDcsIDAsDQorICAgIDYsDQorICAgIDB4MDcsIDEwLCAwLA0KKyAgICAweDA4LCAxMSwgMCwNCisgICAgMHgxMiwgMTI4LCAwLA0KKyAgICAweDEzLCA4LCAwLA0KKyAgICAweDE0LCA5LCAwLA0KKyAgICAweDFiLCA2NCwgMCwNCisgICAgOSwNCisgICAgMHgwMywgMTMsIDAsDQorICAgIDB4MDcsIDEsIDAsDQorICAgIDB4MDgsIDEyLCAwLA0KKyAgICAweDE3LCAxOTIsIDAsDQorICAgIDB4MTgsIDE2NjQgJSAyNTYsIDE2NjQgLyAyNTYsDQorICAgIDB4MmEsIDE2LCAwLA0KKyAgICAweDJCLCAxNywgMCwNCisgICAgMHgzNCwgMTQsIDAsDQorICAgIDB4MzUsIDE1LCAwLA0KKyAgICAxMiwNCisgICAgMHgwMywgMjIsIDAsDQorICAgIDB4MDQsIDIzLCAwLA0KKyAgICAweDA4LCAyMCwgMCwNCisgICAgMHgwYywgMTksIDAsDQorICAgIDB4MTMsIDI2LCAwLA0KKyAgICAweDE3LCAyMSwgMCwNCisgICAgMHgxOCwgMjgsIDAsDQorICAgIDB4MjQsIDI3LCAwLA0KKyAgICAweDI3LCAxOCwgMCwNCisgICAgMHgyOCwgMjQsIDAsDQorICAgIDB4MkIsIDI1LCAwLA0KKyAgICAweDM3LCAyNTYgJSAyNTYsIDI1NiAvIDI1NiwNCisgICAgNDIsDQorICAgIDB4MDIsIDI5LCAwLA0KKyAgICAweDAzLCAzMCwgMCwNCisgICAgMHgwNCwgNDUsIDAsDQorICAgIDB4MDUsIDQ2LCAwLA0KKyAgICAweDBhLCA0NywgMCwNCisgICAgMHgwYiwgNDgsIDAsDQorICAgIDB4MTIsIDMzLCAwLA0KKyAgICAweDEzLCAzNCwgMCwNCisgICAgMHgxNCwgMzUsIDAsDQorICAgIDB4MTUsIDM2LCAwLA0KKyAgICAweDE2LCAzNywgMCwNCisgICAgMHgxNywgMzgsIDAsDQorICAgIDB4MWEsIDMxLCAwLA0KKyAgICAweDFiLCAzMiwgMCwNCisgICAgMHgyNCwgNTMsIDAsDQorICAgIDB4MjUsIDU0LCAwLA0KKyAgICAweDI4LCAzOSwgMCwNCisgICAgMHgyOSwgNDAsIDAsDQorICAgIDB4MmEsIDQxLCAwLA0KKyAgICAweDJiLCA0MiwgMCwNCisgICAgMHgyYywgNDMsIDAsDQorICAgIDB4MmQsIDQ0LCAwLA0KKyAgICAweDMyLCA2MSwgMCwNCisgICAgMHgzMywgNjIsIDAsDQorICAgIDB4MzQsIDYzLCAwLA0KKyAgICAweDM1LCAwLCAwLA0KKyAgICAweDM2LCAzMjAgJSAyNTYsIDMyMCAvIDI1NiwNCisgICAgMHgzNywgMzg0ICUgMjU2LCAzODQgLyAyNTYsDQorICAgIDB4NGEsIDU5LCAwLA0KKyAgICAweDRiLCA2MCwgMCwNCisgICAgMHg1MiwgNDksIDAsDQorICAgIDB4NTMsIDUwLCAwLA0KKyAgICAweDU0LCA1MSwgMCwNCisgICAgMHg1NSwgNTIsIDAsDQorICAgIDB4NTgsIDU1LCAwLA0KKyAgICAweDU5LCA1NiwgMCwNCisgICAgMHg1YSwgNTcsIDAsDQorICAgIDB4NWIsIDU4LCAwLA0KKyAgICAweDY0LCA0NDggJSAyNTYsIDQ0OCAvIDI1NiwNCisgICAgMHg2NSwgNTEyICUgMjU2LCA1MTIgLyAyNTYsDQorICAgIDB4NjcsIDY0MCAlIDI1NiwgNjQwIC8gMjU2LA0KKyAgICAweDY4LCA1NzYgJSAyNTYsIDU3NiAvIDI1NiwNCisgICAgMTYsDQorICAgIDB4OTgsIDE0NzIgJSAyNTYsIDE0NzIgLyAyNTYsDQorICAgIDB4OTksIDE1MzYgJSAyNTYsIDE1MzYgLyAyNTYsDQorICAgIDB4OWEsIDE2MDAgJSAyNTYsIDE2MDAgLyAyNTYsDQorICAgIDB4OWIsIDE3MjggJSAyNTYsIDE3MjggLyAyNTYsDQorICAgIDB4Y2MsIDcwNCAlIDI1NiwgNzA0IC8gMjU2LA0KKyAgICAweGNkLCA3NjggJSAyNTYsIDc2OCAvIDI1NiwNCisgICAgMHhkMiwgODMyICUgMjU2LCA4MzIgLyAyNTYsDQorICAgIDB4ZDMsIDg5NiAlIDI1NiwgODk2IC8gMjU2LA0KKyAgICAweGQ0LCA5NjAgJSAyNTYsIDk2MCAvIDI1NiwNCisgICAgMHhkNSwgMTAyNCAlIDI1NiwgMTAyNCAvIDI1NiwNCisgICAgMHhkNiwgMTA4OCAlIDI1NiwgMTA4OCAvIDI1NiwNCisgICAgMHhkNywgMTE1MiAlIDI1NiwgMTE1MiAvIDI1NiwNCisgICAgMHhkOCwgMTIxNiAlIDI1NiwgMTIxNiAvIDI1NiwNCisgICAgMHhkOSwgMTI4MCAlIDI1NiwgMTI4MCAvIDI1NiwNCisgICAgMHhkYSwgMTM0NCAlIDI1NiwgMTM0NCAvIDI1NiwNCisgICAgMHhkYiwgMTQwOCAlIDI1NiwgMTQwOCAvIDI1NiwNCisgICAgMCwNCisgICAgMywNCisgICAgMHgwOCwgMTc5MiAlIDI1NiwgMTc5MiAvIDI1NiwNCisgICAgMHgwYywgMTg1NiAlIDI1NiwgMTg1NiAvIDI1NiwNCisgICAgMHgwZCwgMTkyMCAlIDI1NiwgMTkyMCAvIDI1NiwNCisgICAgMTAsDQorICAgIDB4MTIsIDE5ODQgJSAyNTYsIDE5ODQgLyAyNTYsDQorICAgIDB4MTMsIDIwNDggJSAyNTYsIDIwNDggLyAyNTYsDQorICAgIDB4MTQsIDIxMTIgJSAyNTYsIDIxMTIgLyAyNTYsDQorICAgIDB4MTUsIDIxNzYgJSAyNTYsIDIxNzYgLyAyNTYsDQorICAgIDB4MTYsIDIyNDAgJSAyNTYsIDIyNDAgLyAyNTYsDQorICAgIDB4MTcsIDIzMDQgJSAyNTYsIDIzMDQgLyAyNTYsDQorICAgIDB4MWMsIDIzNjggJSAyNTYsIDIzNjggLyAyNTYsDQorICAgIDB4MWQsIDI0MzIgJSAyNTYsIDI0MzIgLyAyNTYsDQorICAgIDB4MWUsIDI0OTYgJSAyNTYsIDI0OTYgLyAyNTYsDQorICAgIDB4MWYsIDI1NjAgJSAyNTYsIDI1NjAgLyAyNTYsDQorICAgIDB4ZmYsDQorfTsNCitpbnQgX0ZheEdldFJ1bihGWF9MUENCWVRFIGluc19hcnJheSwgY29uc3QgRlhfQllURSogc3JjX2J1ZiwgaW50JiBiaXRwb3MsIGludCBiaXRzaXplKQ0KK3sNCisgICAgRlhfRFdPUkQgY29kZSA9IDA7DQorICAgIGludCBpbnNfb2ZmID0gMDsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIEZYX0JZVEUgaW5zID0gaW5zX2FycmF5W2luc19vZmYrK107DQorICAgICAgICBpZiAoaW5zID09IDB4ZmYpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYml0cG9zID49IGJpdHNpemUpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBjb2RlIDw8PSAxOw0KKyAgICAgICAgaWYgKHNyY19idWZbYml0cG9zIC8gOF0gJiAoMSA8PCAoNyAtIGJpdHBvcyAlIDgpKSkgew0KKyAgICAgICAgICAgIGNvZGUgKys7DQorICAgICAgICB9DQorICAgICAgICBiaXRwb3MgKys7DQorICAgICAgICBpbnQgbmV4dF9vZmYgPSBpbnNfb2ZmICsgaW5zICogMzsNCisgICAgICAgIGZvciAoOyBpbnNfb2ZmIDwgbmV4dF9vZmY7IGluc19vZmYgKz0gMykgew0KKyAgICAgICAgICAgIGlmIChpbnNfYXJyYXlbaW5zX29mZl0gPT0gY29kZSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gaW5zX2FycmF5W2luc19vZmYgKyAxXSArIGluc19hcnJheVtpbnNfb2ZmICsgMl0gKiAyNTY7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgX0ZheEc0R2V0Um93KGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIGludCBiaXRzaXplLCBpbnQmIGJpdHBvcywgRlhfTFBCWVRFIGRlc3RfYnVmLCBjb25zdCBGWF9CWVRFKiByZWZfYnVmLCBpbnQgY29sdW1ucykNCit7DQorICAgIGludCBhMCA9IC0xLCBhMGNvbG9yID0gMTsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGlmIChiaXRwb3MgPj0gYml0c2l6ZSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBhMSwgYTIsIGIxLCBiMjsNCisgICAgICAgIF9GYXhHNEZpbmRCMUIyKHJlZl9idWYsIGNvbHVtbnMsIGEwLCBhMGNvbG9yLCBiMSwgYjIpOw0KKyAgICAgICAgRlhfQk9PTCBiaXQgPSBORVhUQklUOw0KKyAgICAgICAgaW50IHZfZGVsdGEgPSAwOw0KKyAgICAgICAgaWYgKGJpdCkgew0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAoYml0cG9zID49IGJpdHNpemUpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9CT09MIGJpdDEgPSBORVhUQklUOw0KKyAgICAgICAgICAgIGlmIChiaXRwb3MgPj0gYml0c2l6ZSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0JPT0wgYml0MiA9IE5FWFRCSVQ7DQorICAgICAgICAgICAgaWYgKGJpdDEgJiYgYml0Mikgew0KKyAgICAgICAgICAgICAgICB2X2RlbHRhID0gMTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKGJpdDEpIHsNCisgICAgICAgICAgICAgICAgdl9kZWx0YSA9IC0xOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYml0Mikgew0KKyAgICAgICAgICAgICAgICBpbnQgcnVuX2xlbjEgPSAwOw0KKyAgICAgICAgICAgICAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IHJ1biA9IF9GYXhHZXRSdW4oYTBjb2xvciA/IEZheFdoaXRlUnVuSW5zIDogRmF4QmxhY2tSdW5JbnMsIHNyY19idWYsIGJpdHBvcywgYml0c2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICBydW5fbGVuMSArPSBydW47DQorICAgICAgICAgICAgICAgICAgICBpZiAocnVuIDwgNjQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoYTAgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICBydW5fbGVuMSArKzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBhMSA9IGEwICsgcnVuX2xlbjE7DQorICAgICAgICAgICAgICAgIGlmICghYTBjb2xvcikgew0KKyAgICAgICAgICAgICAgICAgICAgX0ZheEZpbGxCaXRzKGRlc3RfYnVmLCBjb2x1bW5zLCBhMCwgYTEpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGludCBydW5fbGVuMiA9IDA7DQorICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgcnVuID0gX0ZheEdldFJ1bihhMGNvbG9yID8gRmF4QmxhY2tSdW5JbnMgOiBGYXhXaGl0ZVJ1bklucywgc3JjX2J1ZiwgYml0cG9zLCBiaXRzaXplKTsNCisgICAgICAgICAgICAgICAgICAgIHJ1bl9sZW4yICs9IHJ1bjsNCisgICAgICAgICAgICAgICAgICAgIGlmIChydW4gPCA2NCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGEyID0gYTEgKyBydW5fbGVuMjsNCisgICAgICAgICAgICAgICAgaWYgKGEwY29sb3IpIHsNCisgICAgICAgICAgICAgICAgICAgIF9GYXhGaWxsQml0cyhkZXN0X2J1ZiwgY29sdW1ucywgYTEsIGEyKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBhMCA9IGEyOw0KKyAgICAgICAgICAgICAgICBpZiAoYTAgPCBjb2x1bW5zKSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAoYml0cG9zID49IGJpdHNpemUpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBiaXQgPSBORVhUQklUOw0KKyAgICAgICAgICAgICAgICBpZiAoYml0KSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoIWEwY29sb3IpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBfRmF4RmlsbEJpdHMoZGVzdF9idWYsIGNvbHVtbnMsIGEwLCBiMik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAoYjIgPj0gY29sdW1ucykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYTAgPSBiMjsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJpdHBvcyA+PSBiaXRzaXplKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgRlhfQk9PTCBiaXQxID0gTkVYVEJJVDsNCisgICAgICAgICAgICAgICAgICAgIGlmIChiaXRwb3MgPj0gYml0c2l6ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYml0MiA9IE5FWFRCSVQ7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYml0MSAmJiBiaXQyKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgdl9kZWx0YSA9IDI7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJpdDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICB2X2RlbHRhID0gLTI7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJpdDIpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYml0cG9zID49IGJpdHNpemUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBiaXQgPSBORVhUQklUOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaXQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdl9kZWx0YSA9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdl9kZWx0YSA9IC0zOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdHBvcyA+PSBiaXRzaXplKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgYml0ID0gTkVYVEJJVDsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYml0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHBvcyArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRwb3MgKz0gNTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgYTEgPSBiMSArIHZfZGVsdGE7DQorICAgICAgICBpZiAoIWEwY29sb3IpIHsNCisgICAgICAgICAgICBfRmF4RmlsbEJpdHMoZGVzdF9idWYsIGNvbHVtbnMsIGEwLCBhMSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYTEgPj0gY29sdW1ucykgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgYTAgPSBhMTsNCisgICAgICAgIGEwY29sb3IgPSAhYTBjb2xvcjsNCisgICAgfQ0KK30NCitGWF9CT09MIF9GYXhTa2lwRU9MKGNvbnN0IEZYX0JZVEUqIHNyY19idWYsIGludCBiaXRzaXplLCBpbnQmIGJpdHBvcykNCit7DQorICAgIGludCBzdGFydGJpdCA9IGJpdHBvczsNCisgICAgd2hpbGUgKGJpdHBvcyA8IGJpdHNpemUpIHsNCisgICAgICAgIGludCBiaXQgPSBORVhUQklUOw0KKyAgICAgICAgaWYgKGJpdCkgew0KKyAgICAgICAgICAgIGlmIChiaXRwb3MgLSBzdGFydGJpdCA8PSAxMSkgew0KKyAgICAgICAgICAgICAgICBiaXRwb3MgPSBzdGFydGJpdDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MIF9GYXhHZXQxRExpbmUoY29uc3QgRlhfQllURSogc3JjX2J1ZiwgaW50IGJpdHNpemUsIGludCYgYml0cG9zLCBGWF9MUEJZVEUgZGVzdF9idWYsIGludCBjb2x1bW5zKQ0KK3sNCisgICAgaW50IGNvbG9yID0gVFJVRTsNCisgICAgaW50IHN0YXJ0cG9zID0gMDsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGlmIChiaXRwb3MgPj0gYml0c2l6ZSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBydW5fbGVuID0gMDsNCisgICAgICAgIHdoaWxlICgxKSB7DQorICAgICAgICAgICAgaW50IHJ1biA9IF9GYXhHZXRSdW4oY29sb3IgPyBGYXhXaGl0ZVJ1bklucyA6IEZheEJsYWNrUnVuSW5zLCBzcmNfYnVmLCBiaXRwb3MsIGJpdHNpemUpOw0KKyAgICAgICAgICAgIGlmIChydW4gPCAwKSB7DQorICAgICAgICAgICAgICAgIHdoaWxlIChiaXRwb3MgPCBiaXRzaXplKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgYml0ID0gTkVYVEJJVDsNCisgICAgICAgICAgICAgICAgICAgIGlmIChiaXQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJ1bl9sZW4gKz0gcnVuOw0KKyAgICAgICAgICAgIGlmIChydW4gPCA2NCkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoIWNvbG9yKSB7DQorICAgICAgICAgICAgX0ZheEZpbGxCaXRzKGRlc3RfYnVmLCBjb2x1bW5zLCBzdGFydHBvcywgc3RhcnRwb3MgKyBydW5fbGVuKTsNCisgICAgICAgIH0NCisgICAgICAgIHN0YXJ0cG9zICs9IHJ1bl9sZW47DQorICAgICAgICBpZiAoc3RhcnRwb3MgPj0gY29sdW1ucykgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY29sb3IgPSAhY29sb3I7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2NsYXNzIENDb2RlY19GYXhEZWNvZGVyIDogcHVibGljIENDb2RlY19TY2FubGluZURlY29kZXINCit7DQorcHVibGljOg0KKyAgICBDQ29kZWNfRmF4RGVjb2RlcigpOw0KKyAgICB2aXJ0dWFsIH5DQ29kZWNfRmF4RGVjb2RlcigpOw0KKyAgICBGWF9CT09MCQkJCUNyZWF0ZShGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBLLCBGWF9CT09MIEVuZE9mTGluZSwgRlhfQk9PTCBFbmNvZGVkQnl0ZUFsaWduLCBGWF9CT09MIEJsYWNrSXMxLCBpbnQgQ29sdW1ucywgaW50IFJvd3MpOw0KKyAgICB2aXJ0dWFsIHZvaWQJCXZfRG93blNjYWxlKGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpIHt9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJdl9SZXdpbmQoKTsNCisgICAgdmlydHVhbCBGWF9MUEJZVEUJdl9HZXROZXh0TGluZSgpOw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECUdldFNyY09mZnNldCgpOw0KKyAgICBpbnQJCQltX0VuY29kaW5nLCBtX2JFbmRPZkxpbmUsIG1fYkJ5dGVBbGlnbiwgbV9iQmxhY2s7DQorICAgIGludAkJCWJpdHBvczsNCisgICAgRlhfTFBDQllURQltX3BTcmNCdWY7DQorICAgIEZYX0RXT1JECW1fU3JjU2l6ZTsNCisgICAgRlhfTFBCWVRFCW1fcFNjYW5saW5lQnVmLCBtX3BSZWZCdWY7DQorfTsNCitDQ29kZWNfRmF4RGVjb2Rlcjo6Q0NvZGVjX0ZheERlY29kZXIoKQ0KK3sNCisgICAgbV9wU2NhbmxpbmVCdWYgPSBOVUxMOw0KKyAgICBtX3BSZWZCdWYgPSBOVUxMOw0KK30NCitDQ29kZWNfRmF4RGVjb2Rlcjo6fkNDb2RlY19GYXhEZWNvZGVyKCkNCit7DQorICAgIGlmIChtX3BTY2FubGluZUJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BTY2FubGluZUJ1Zik7DQorICAgIH0NCisgICAgaWYgKG1fcFJlZkJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BSZWZCdWYpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ0NvZGVjX0ZheERlY29kZXI6OkNyZWF0ZShGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBLLCBGWF9CT09MIEVuZE9mTGluZSwgRlhfQk9PTCBFbmNvZGVkQnl0ZUFsaWduLCBGWF9CT09MIEJsYWNrSXMxLCBpbnQgQ29sdW1ucywgaW50IFJvd3MpDQorew0KKyAgICBtX0VuY29kaW5nID0gSzsNCisgICAgbV9iRW5kT2ZMaW5lID0gRW5kT2ZMaW5lOw0KKyAgICBtX2JCeXRlQWxpZ24gPSBFbmNvZGVkQnl0ZUFsaWduOw0KKyAgICBtX2JCbGFjayA9IEJsYWNrSXMxOw0KKyAgICBtX09yaWdXaWR0aCA9IENvbHVtbnM7DQorICAgIG1fT3JpZ0hlaWdodCA9IFJvd3M7DQorICAgIGlmIChtX09yaWdXaWR0aCA9PSAwKSB7DQorICAgICAgICBtX09yaWdXaWR0aCA9IHdpZHRoOw0KKyAgICB9DQorICAgIGlmIChtX09yaWdIZWlnaHQgPT0gMCkgew0KKyAgICAgICAgbV9PcmlnSGVpZ2h0ID0gaGVpZ2h0Ow0KKyAgICB9DQorICAgIG1fUGl0Y2ggPSAobV9PcmlnV2lkdGggKyAzMSkgLyAzMiAqIDQ7DQorICAgIG1fT3V0cHV0V2lkdGggPSBtX09yaWdXaWR0aDsNCisgICAgbV9PdXRwdXRIZWlnaHQgPSBtX09yaWdIZWlnaHQ7DQorICAgIG1fcFNjYW5saW5lQnVmID0gRlhfQWxsb2MoRlhfQllURSwgbV9QaXRjaCk7DQorICAgIGlmIChtX3BTY2FubGluZUJ1ZiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9wUmVmQnVmID0gRlhfQWxsb2MoRlhfQllURSwgbV9QaXRjaCk7DQorICAgIGlmIChtX3BSZWZCdWYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fcFNyY0J1ZiA9IHNyY19idWY7DQorICAgIG1fU3JjU2l6ZSA9IHNyY19zaXplOw0KKyAgICBtX25Db21wcyA9IDE7DQorICAgIG1fYnBjID0gMTsNCisgICAgbV9iQ29sb3JUcmFuc2Zvcm1lZCA9IEZBTFNFOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDQ29kZWNfRmF4RGVjb2Rlcjo6dl9SZXdpbmQoKQ0KK3sNCisgICAgRlhTWVNfbWVtc2V0OChtX3BSZWZCdWYsIDB4ZmYsIG1fUGl0Y2gpOw0KKyAgICBiaXRwb3MgPSAwOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfTFBCWVRFIENDb2RlY19GYXhEZWNvZGVyOjp2X0dldE5leHRMaW5lKCkNCit7DQorICAgIGludCBiaXRzaXplID0gbV9TcmNTaXplICogODsNCisgICAgX0ZheFNraXBFT0wobV9wU3JjQnVmLCBiaXRzaXplLCBiaXRwb3MpOw0KKyAgICBpZiAoYml0cG9zID49IGJpdHNpemUpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYU1lTX21lbXNldDgobV9wU2NhbmxpbmVCdWYsIDB4ZmYsIG1fUGl0Y2gpOw0KKyAgICBpZiAobV9FbmNvZGluZyA8IDApIHsNCisgICAgICAgIF9GYXhHNEdldFJvdyhtX3BTcmNCdWYsIGJpdHNpemUsIGJpdHBvcywgbV9wU2NhbmxpbmVCdWYsIG1fcFJlZkJ1ZiwgbV9PcmlnV2lkdGgpOw0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wUmVmQnVmLCBtX3BTY2FubGluZUJ1ZiwgbV9QaXRjaCk7DQorICAgIH0gZWxzZSBpZiAobV9FbmNvZGluZyA9PSAwKSB7DQorICAgICAgICBfRmF4R2V0MURMaW5lKG1fcFNyY0J1ZiwgYml0c2l6ZSwgYml0cG9zLCBtX3BTY2FubGluZUJ1ZiwgbV9PcmlnV2lkdGgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfQk9PTCBiTmV4dDFEID0gbV9wU3JjQnVmW2JpdHBvcyAvIDhdICYgKDEgPDwgKDcgLSBiaXRwb3MgJSA4KSk7DQorICAgICAgICBiaXRwb3MgKys7DQorICAgICAgICBpZiAoYk5leHQxRCkgew0KKyAgICAgICAgICAgIF9GYXhHZXQxRExpbmUobV9wU3JjQnVmLCBiaXRzaXplLCBiaXRwb3MsIG1fcFNjYW5saW5lQnVmLCBtX09yaWdXaWR0aCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIF9GYXhHNEdldFJvdyhtX3BTcmNCdWYsIGJpdHNpemUsIGJpdHBvcywgbV9wU2NhbmxpbmVCdWYsIG1fcFJlZkJ1ZiwgbV9PcmlnV2lkdGgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wUmVmQnVmLCBtX3BTY2FubGluZUJ1ZiwgbV9QaXRjaCk7DQorICAgIH0NCisgICAgaWYgKG1fYkVuZE9mTGluZSkgew0KKyAgICAgICAgX0ZheFNraXBFT0wobV9wU3JjQnVmLCBiaXRzaXplLCBiaXRwb3MpOw0KKyAgICB9DQorICAgIGlmIChtX2JCeXRlQWxpZ24gJiYgYml0cG9zIDwgYml0c2l6ZSkgew0KKyAgICAgICAgaW50IGJpdHBvczAgPSBiaXRwb3M7DQorICAgICAgICBpbnQgYml0cG9zMSA9IChiaXRwb3MgKyA3KSAvIDggKiA4Ow0KKyAgICAgICAgd2hpbGUgKG1fYkJ5dGVBbGlnbiAmJiBiaXRwb3MwIDwgYml0cG9zMSkgew0KKyAgICAgICAgICAgIGludCBiaXQgPSBtX3BTcmNCdWZbYml0cG9zMCAvIDhdICYgKDEgPDwgKDcgLSBiaXRwb3MwICUgOCkpOw0KKyAgICAgICAgICAgIGlmIChiaXQgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBtX2JCeXRlQWxpZ24gPSBGQUxTRTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBiaXRwb3MwICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX2JCeXRlQWxpZ24pIHsNCisgICAgICAgICAgICBiaXRwb3MgPSBiaXRwb3MxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX2JCbGFjaykgew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX1BpdGNoOyBpICsrKSB7DQorICAgICAgICAgICAgbV9wU2NhbmxpbmVCdWZbaV0gPSB+bV9wU2NhbmxpbmVCdWZbaV07DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIG1fcFNjYW5saW5lQnVmOw0KK30NCitGWF9EV09SRCBDQ29kZWNfRmF4RGVjb2Rlcjo6R2V0U3JjT2Zmc2V0KCkNCit7DQorICAgIEZYX0RXT1JEIHJldCA9IChiaXRwb3MgKyA3KSAvIDg7DQorICAgIGlmIChyZXQgPiBtX1NyY1NpemUpIHsNCisgICAgICAgIHJldCA9IG1fU3JjU2l6ZTsNCisgICAgfQ0KKyAgICByZXR1cm4gcmV0Ow0KK30NCitleHRlcm4gIkMiIHsNCisgICAgdm9pZCBfRmF4RzREZWNvZGUodm9pZCosIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCogcGJpdHBvcywgRlhfTFBCWVRFIGRlc3RfYnVmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBwaXRjaCkNCisgICAgew0KKyAgICAgICAgaWYgKHBpdGNoID09IDApIHsNCisgICAgICAgICAgICBwaXRjaCA9ICh3aWR0aCArIDcpIC8gODsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQQllURSByZWZfYnVmID0gRlhfQWxsb2MoRlhfQllURSwgcGl0Y2gpOw0KKyAgICAgICAgaWYgKHJlZl9idWYgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbXNldDgocmVmX2J1ZiwgMHhmZiwgcGl0Y2gpOw0KKyAgICAgICAgaW50IGJpdHBvcyA9ICpwYml0cG9zOw0KKyAgICAgICAgZm9yIChpbnQgaVJvdyA9IDA7IGlSb3cgPCBoZWlnaHQ7IGlSb3cgKyspIHsNCisgICAgICAgICAgICBGWF9MUEJZVEUgbGluZV9idWYgPSBkZXN0X2J1ZiArIGlSb3cgKiBwaXRjaDsNCisgICAgICAgICAgICBGWFNZU19tZW1zZXQ4KGxpbmVfYnVmLCAweGZmLCBwaXRjaCk7DQorICAgICAgICAgICAgX0ZheEc0R2V0Um93KHNyY19idWYsIHNyY19zaXplIDw8IDMsIGJpdHBvcywgbGluZV9idWYsIHJlZl9idWYsIHdpZHRoKTsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihyZWZfYnVmLCBsaW5lX2J1ZiwgcGl0Y2gpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRnJlZShyZWZfYnVmKTsNCisgICAgICAgICpwYml0cG9zID0gYml0cG9zOw0KKyAgICB9DQorfTsNCitzdGF0aWMgY29uc3QgRlhfQllURSBCbGFja1J1blRlcm1pbmF0b3JbMTI4XSA9IHsNCisgICAgMHgzNywgMTAsIDB4MDIsIDMsIDB4MDMsIDIsIDB4MDIsIDIsIDB4MDMsIDMsIDB4MDMsIDQsIDB4MDIsIDQsIDB4MDMsIDUsDQorICAgIDB4MDUsIDYsIDB4MDQsIDYsIDB4MDQsIDcsIDB4MDUsIDcsIDB4MDcsIDcsIDB4MDQsIDgsIDB4MDcsIDgsIDB4MTgsIDksDQorICAgIDB4MTcsIDEwLCAweDE4LCAxMCwgMHgwOCwgMTAsIDB4NjcsIDExLCAweDY4LCAxMSwgMHg2YywgMTEsIDB4MzcsIDExLCAweDI4LCAxMSwNCisgICAgMHgxNywgMTEsIDB4MTgsIDExLCAweGNhLCAxMiwgMHhjYiwgMTIsIDB4Y2MsIDEyLCAweGNkLCAxMiwgMHg2OCwgMTIsIDB4NjksIDEyLA0KKyAgICAweDZhLCAxMiwgMHg2YiwgMTIsIDB4ZDIsIDEyLCAweGQzLCAxMiwgMHhkNCwgMTIsIDB4ZDUsIDEyLCAweGQ2LCAxMiwgMHhkNywgMTIsDQorICAgIDB4NmMsIDEyLCAweDZkLCAxMiwgMHhkYSwgMTIsIDB4ZGIsIDEyLCAweDU0LCAxMiwgMHg1NSwgMTIsIDB4NTYsIDEyLCAweDU3LCAxMiwNCisgICAgMHg2NCwgMTIsIDB4NjUsIDEyLCAweDUyLCAxMiwgMHg1MywgMTIsIDB4MjQsIDEyLCAweDM3LCAxMiwgMHgzOCwgMTIsIDB4MjcsIDEyLA0KKyAgICAweDI4LCAxMiwgMHg1OCwgMTIsIDB4NTksIDEyLCAweDJiLCAxMiwgMHgyYywgMTIsIDB4NWEsIDEyLCAweDY2LCAxMiwgMHg2NywgMTIsDQorfTsNCitzdGF0aWMgY29uc3QgRlhfQllURSBCbGFja1J1bk1hcmt1cFs4MF0gPSB7DQorICAgIDB4MGYsIDEwLCAweGM4LCAxMiwgMHhjOSwgMTIsIDB4NWIsIDEyLCAweDMzLCAxMiwgMHgzNCwgMTIsIDB4MzUsIDEyLCAweDZjLCAxMywNCisgICAgMHg2ZCwgMTMsIDB4NGEsIDEzLCAweDRiLCAxMywgMHg0YywgMTMsIDB4NGQsIDEzLCAweDcyLCAxMywgMHg3MywgMTMsIDB4NzQsIDEzLA0KKyAgICAweDc1LCAxMywgMHg3NiwgMTMsIDB4NzcsIDEzLCAweDUyLCAxMywgMHg1MywgMTMsIDB4NTQsIDEzLCAweDU1LCAxMywgMHg1YSwgMTMsDQorICAgIDB4NWIsIDEzLCAweDY0LCAxMywgMHg2NSwgMTMsIDB4MDgsIDExLCAweDBjLCAxMSwgMHgwZCwgMTEsIDB4MTIsIDEyLCAweDEzLCAxMiwNCisgICAgMHgxNCwgMTIsIDB4MTUsIDEyLCAweDE2LCAxMiwgMHgxNywgMTIsIDB4MWMsIDEyLCAweDFkLCAxMiwgMHgxZSwgMTIsIDB4MWYsIDEyLA0KK307DQorc3RhdGljIGNvbnN0IEZYX0JZVEUgV2hpdGVSdW5UZXJtaW5hdG9yWzEyOF0gPSB7DQorICAgIDB4MzUsIDgsDQorICAgIDB4MDcsIDYsDQorICAgIDB4MDcsIDQsDQorICAgIDB4MDgsIDQsDQorICAgIDB4MEIsIDQsDQorICAgIDB4MEMsIDQsDQorICAgIDB4MEUsIDQsDQorICAgIDB4MEYsIDQsDQorICAgIDB4MTMsIDUsDQorICAgIDB4MTQsIDUsDQorICAgIDB4MDcsIDUsDQorICAgIDB4MDgsIDUsDQorICAgIDB4MDgsIDYsDQorICAgIDB4MDMsIDYsDQorICAgIDB4MzQsIDYsDQorICAgIDB4MzUsIDYsDQorICAgIDB4MmEsIDYsDQorICAgIDB4MkIsIDYsDQorICAgIDB4MjcsIDcsDQorICAgIDB4MGMsIDcsDQorICAgIDB4MDgsIDcsDQorICAgIDB4MTcsIDcsDQorICAgIDB4MDMsIDcsDQorICAgIDB4MDQsIDcsDQorICAgIDB4MjgsIDcsDQorICAgIDB4MkIsIDcsDQorICAgIDB4MTMsIDcsDQorICAgIDB4MjQsIDcsDQorICAgIDB4MTgsIDcsDQorICAgIDB4MDIsIDgsDQorICAgIDB4MDMsIDgsDQorICAgIDB4MWEsIDgsDQorICAgIDB4MWIsIDgsDQorICAgIDB4MTIsIDgsDQorICAgIDB4MTMsIDgsDQorICAgIDB4MTQsIDgsDQorICAgIDB4MTUsIDgsDQorICAgIDB4MTYsIDgsDQorICAgIDB4MTcsIDgsDQorICAgIDB4MjgsIDgsDQorICAgIDB4MjksIDgsDQorICAgIDB4MmEsIDgsDQorICAgIDB4MmIsIDgsDQorICAgIDB4MmMsIDgsDQorICAgIDB4MmQsIDgsDQorICAgIDB4MDQsIDgsDQorICAgIDB4MDUsIDgsDQorICAgIDB4MGEsIDgsDQorICAgIDB4MGIsIDgsDQorICAgIDB4NTIsIDgsDQorICAgIDB4NTMsIDgsDQorICAgIDB4NTQsIDgsDQorICAgIDB4NTUsIDgsDQorICAgIDB4MjQsIDgsDQorICAgIDB4MjUsIDgsDQorICAgIDB4NTgsIDgsDQorICAgIDB4NTksIDgsDQorICAgIDB4NWEsIDgsDQorICAgIDB4NWIsIDgsDQorICAgIDB4NGEsIDgsDQorICAgIDB4NGIsIDgsDQorICAgIDB4MzIsIDgsDQorICAgIDB4MzMsIDgsDQorICAgIDB4MzQsIDgsDQorfTsNCitzdGF0aWMgY29uc3QgRlhfQllURSBXaGl0ZVJ1bk1hcmt1cFs4MF0gPSB7DQorICAgIDB4MWIsIDUsDQorICAgIDB4MTIsIDUsDQorICAgIDB4MTcsIDYsDQorICAgIDB4MzcsIDcsDQorICAgIDB4MzYsIDgsDQorICAgIDB4MzcsIDgsDQorICAgIDB4NjQsIDgsDQorICAgIDB4NjUsIDgsDQorICAgIDB4NjgsIDgsDQorICAgIDB4NjcsIDgsDQorICAgIDB4Y2MsIDksDQorICAgIDB4Y2QsIDksDQorICAgIDB4ZDIsIDksDQorICAgIDB4ZDMsIDksDQorICAgIDB4ZDQsIDksDQorICAgIDB4ZDUsIDksDQorICAgIDB4ZDYsIDksDQorICAgIDB4ZDcsIDksDQorICAgIDB4ZDgsIDksDQorICAgIDB4ZDksIDksDQorICAgIDB4ZGEsIDksDQorICAgIDB4ZGIsIDksDQorICAgIDB4OTgsIDksDQorICAgIDB4OTksIDksDQorICAgIDB4OWEsIDksDQorICAgIDB4MTgsIDYsDQorICAgIDB4OWIsIDksDQorICAgIDB4MDgsIDExLA0KKyAgICAweDBjLCAxMSwNCisgICAgMHgwZCwgMTEsDQorICAgIDB4MTIsIDEyLA0KKyAgICAweDEzLCAxMiwNCisgICAgMHgxNCwgMTIsDQorICAgIDB4MTUsIDEyLA0KKyAgICAweDE2LCAxMiwNCisgICAgMHgxNywgMTIsDQorICAgIDB4MWMsIDEyLA0KKyAgICAweDFkLCAxMiwNCisgICAgMHgxZSwgMTIsDQorICAgIDB4MWYsIDEyLA0KK307DQorc3RhdGljIHZvaWQgX0FkZEJpdFN0cmVhbShGWF9MUEJZVEUgZGVzdF9idWYsIGludCYgZGVzdF9iaXRwb3MsIGludCBkYXRhLCBpbnQgYml0bGVuKQ0KK3sNCisgICAgZm9yIChpbnQgaSA9IGJpdGxlbiAtIDE7IGkgPj0gMDsgaSAtLSkgew0KKyAgICAgICAgaWYgKGRhdGEgJiAoMSA8PCBpKSkgew0KKyAgICAgICAgICAgIGRlc3RfYnVmW2Rlc3RfYml0cG9zIC8gOF0gfD0gMSA8PCAoNyAtIGRlc3RfYml0cG9zICUgOCk7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X2JpdHBvcyArKzsNCisgICAgfQ0KK30NCitzdGF0aWMgdm9pZCBfRmF4RW5jb2RlUnVuKEZYX0xQQllURSBkZXN0X2J1ZiwgaW50JiBkZXN0X2JpdHBvcywgaW50IHJ1biwgRlhfQk9PTCBiV2hpdGUpDQorew0KKyAgICB3aGlsZSAocnVuID49IDI1NjApIHsNCisgICAgICAgIF9BZGRCaXRTdHJlYW0oZGVzdF9idWYsIGRlc3RfYml0cG9zLCAweDFmLCAxMik7DQorICAgICAgICBydW4gLT0gMjU2MDsNCisgICAgfQ0KKyAgICBpZiAocnVuID49IDY0KSB7DQorICAgICAgICBpbnQgbWFya3VwID0gcnVuIC0gcnVuICUgNjQ7DQorICAgICAgICBGWF9MUENCWVRFIHAgPSBiV2hpdGUgPyBXaGl0ZVJ1bk1hcmt1cCA6IEJsYWNrUnVuTWFya3VwOw0KKyAgICAgICAgcCArPSAobWFya3VwIC8gNjQgLSAxKSAqIDI7DQorICAgICAgICBfQWRkQml0U3RyZWFtKGRlc3RfYnVmLCBkZXN0X2JpdHBvcywgKnAsIHBbMV0pOw0KKyAgICB9DQorICAgIHJ1biAlPSA2NDsNCisgICAgRlhfTFBDQllURSBwID0gYldoaXRlID8gV2hpdGVSdW5UZXJtaW5hdG9yIDogQmxhY2tSdW5UZXJtaW5hdG9yOw0KKyAgICBwICs9IHJ1biAqIDI7DQorICAgIF9BZGRCaXRTdHJlYW0oZGVzdF9idWYsIGRlc3RfYml0cG9zLCAqcCwgcFsxXSk7DQorfQ0KK3N0YXRpYyB2b2lkIF9GYXhFbmNvZGUyRExpbmUoRlhfTFBCWVRFIGRlc3RfYnVmLCBpbnQmIGRlc3RfYml0cG9zLCBGWF9MUENCWVRFIHNyY19idWYsIEZYX0xQQ0JZVEUgcmVmX2J1ZiwgaW50IGNvbHMpDQorew0KKyAgICBpbnQgYTAgPSAtMSwgYTBjb2xvciA9IDE7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpbnQgYTEgPSBfRmluZEJpdChzcmNfYnVmLCBjb2xzLCBhMCArIDEsIDEgLSBhMGNvbG9yKTsNCisgICAgICAgIGludCBiMSwgYjI7DQorICAgICAgICBfRmF4RzRGaW5kQjFCMihyZWZfYnVmLCBjb2xzLCBhMCwgYTBjb2xvciwgYjEsIGIyKTsNCisgICAgICAgIGlmIChiMiA8IGExKSB7DQorICAgICAgICAgICAgZGVzdF9iaXRwb3MgKz0gMzsNCisgICAgICAgICAgICBkZXN0X2J1ZltkZXN0X2JpdHBvcyAvIDhdIHw9IDEgPDwgKDcgLSBkZXN0X2JpdHBvcyAlIDgpOw0KKyAgICAgICAgICAgIGRlc3RfYml0cG9zICsrOw0KKyAgICAgICAgICAgIGEwID0gYjI7DQorICAgICAgICB9IGVsc2UgaWYgKGExIC0gYjEgPD0gMyAmJiBiMSAtIGExIDw9IDMpIHsNCisgICAgICAgICAgICBpbnQgZGVsdGEgPSBhMSAtIGIxOw0KKyAgICAgICAgICAgIHN3aXRjaCAoZGVsdGEpIHsNCisgICAgICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9idWZbZGVzdF9iaXRwb3MgLyA4XSB8PSAxIDw8ICg3IC0gZGVzdF9iaXRwb3MgJSA4KTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgIGNhc2UgMjoNCisgICAgICAgICAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9iaXRwb3MgKz0gZGVsdGEgPT0gMSA/IDEgOiBkZWx0YSArIDI7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X2J1ZltkZXN0X2JpdHBvcyAvIDhdIHw9IDEgPDwgKDcgLSBkZXN0X2JpdHBvcyAlIDgpOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9iaXRwb3MgKys7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X2J1ZltkZXN0X2JpdHBvcyAvIDhdIHw9IDEgPDwgKDcgLSBkZXN0X2JpdHBvcyAlIDgpOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgLTE6DQorICAgICAgICAgICAgICAgIGNhc2UgLTI6DQorICAgICAgICAgICAgICAgIGNhc2UgLTM6DQorICAgICAgICAgICAgICAgICAgICBkZXN0X2JpdHBvcyArPSBkZWx0YSA9PSAtMSA/IDEgOiAtZGVsdGEgKyAyOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9idWZbZGVzdF9iaXRwb3MgLyA4XSB8PSAxIDw8ICg3IC0gZGVzdF9iaXRwb3MgJSA4KTsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYml0cG9zICsrOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3RfYml0cG9zICsrOw0KKyAgICAgICAgICAgIGEwID0gYTE7DQorICAgICAgICAgICAgYTBjb2xvciA9IDEgLSBhMGNvbG9yOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpbnQgYTIgPSBfRmluZEJpdChzcmNfYnVmLCBjb2xzLCBhMSArIDEsIGEwY29sb3IpOw0KKyAgICAgICAgICAgIGRlc3RfYml0cG9zICsrOw0KKyAgICAgICAgICAgIGRlc3RfYml0cG9zICsrOw0KKyAgICAgICAgICAgIGRlc3RfYnVmW2Rlc3RfYml0cG9zIC8gOF0gfD0gMSA8PCAoNyAtIGRlc3RfYml0cG9zICUgOCk7DQorICAgICAgICAgICAgZGVzdF9iaXRwb3MgKys7DQorICAgICAgICAgICAgaWYgKGEwIDwgMCkgew0KKyAgICAgICAgICAgICAgICBhMCA9IDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIF9GYXhFbmNvZGVSdW4oZGVzdF9idWYsIGRlc3RfYml0cG9zLCBhMSAtIGEwLCBhMGNvbG9yKTsNCisgICAgICAgICAgICBfRmF4RW5jb2RlUnVuKGRlc3RfYnVmLCBkZXN0X2JpdHBvcywgYTIgLSBhMSwgMSAtIGEwY29sb3IpOw0KKyAgICAgICAgICAgIGEwID0gYTI7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYTAgPj0gY29scykgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitjbGFzcyBDQ29kZWNfRmF4RW5jb2RlciA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ0NvZGVjX0ZheEVuY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBwaXRjaCk7DQorICAgIH5DQ29kZWNfRmF4RW5jb2RlcigpOw0KKyAgICB2b2lkCQkJRW5jb2RlKEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpOw0KKyAgICB2b2lkCQkJRW5jb2RlMkRMaW5lKEZYX0xQQ0JZVEUgc2Nhbl9saW5lKTsNCisgICAgQ0ZYX0JpbmFyeUJ1ZgltX0Rlc3RCdWY7DQorICAgIEZYX0xQQllURQkJbV9wUmVmTGluZSwgbV9wTGluZUJ1ZjsNCisgICAgaW50CQkJCW1fQ29scywgbV9Sb3dzLCBtX1BpdGNoOw0KKyAgICBGWF9MUENCWVRFCQltX3BTcmNCdWY7DQorfTsNCitDQ29kZWNfRmF4RW5jb2Rlcjo6Q0NvZGVjX0ZheEVuY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBwaXRjaCkNCit7DQorICAgIG1fcFNyY0J1ZiA9IHNyY19idWY7DQorICAgIG1fQ29scyA9IHdpZHRoOw0KKyAgICBtX1Jvd3MgPSBoZWlnaHQ7DQorICAgIG1fUGl0Y2ggPSBwaXRjaDsNCisgICAgbV9wUmVmTGluZSA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2gpOw0KKyAgICBpZiAobV9wUmVmTGluZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhTWVNfbWVtc2V0OChtX3BSZWZMaW5lLCAweGZmLCBtX1BpdGNoKTsNCisgICAgbV9wTGluZUJ1ZiA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2ggKiA4KTsNCisgICAgaWYgKG1fcExpbmVCdWYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fRGVzdEJ1Zi5Fc3RpbWF0ZVNpemUoMCwgMTAyNDApOw0KK30NCitDQ29kZWNfRmF4RW5jb2Rlcjo6fkNDb2RlY19GYXhFbmNvZGVyKCkNCit7DQorICAgIGlmIChtX3BSZWZMaW5lKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFJlZkxpbmUpOw0KKyAgICB9DQorICAgIGlmIChtX3BMaW5lQnVmKSB7DQorICAgICAgICBGWF9GcmVlKG1fcExpbmVCdWYpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0NvZGVjX0ZheEVuY29kZXI6OkVuY29kZShGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplKQ0KK3sNCisgICAgaW50IGRlc3RfYml0cG9zID0gMDsNCisgICAgRlhfQllURSBsYXN0X2J5dGUgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fUm93czsgaSArKykgew0KKyAgICAgICAgRlhfTFBDQllURSBzY2FuX2xpbmUgPSBtX3BTcmNCdWYgKyBpICogbV9QaXRjaDsNCisgICAgICAgIEZYU1lTX21lbXNldDMyKG1fcExpbmVCdWYsIDAsIG1fUGl0Y2ggKiA4KTsNCisgICAgICAgIG1fcExpbmVCdWZbMF0gPSBsYXN0X2J5dGU7DQorICAgICAgICBfRmF4RW5jb2RlMkRMaW5lKG1fcExpbmVCdWYsIGRlc3RfYml0cG9zLCBzY2FuX2xpbmUsIG1fcFJlZkxpbmUsIG1fQ29scyk7DQorICAgICAgICBtX0Rlc3RCdWYuQXBwZW5kQmxvY2sobV9wTGluZUJ1ZiwgZGVzdF9iaXRwb3MgLyA4KTsNCisgICAgICAgIGxhc3RfYnl0ZSA9IG1fcExpbmVCdWZbZGVzdF9iaXRwb3MgLyA4XTsNCisgICAgICAgIGRlc3RfYml0cG9zICU9IDg7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BSZWZMaW5lLCBzY2FuX2xpbmUsIG1fUGl0Y2gpOw0KKyAgICB9DQorICAgIGlmIChkZXN0X2JpdHBvcykgew0KKyAgICAgICAgbV9EZXN0QnVmLkFwcGVuZEJ5dGUobGFzdF9ieXRlKTsNCisgICAgfQ0KKyAgICBkZXN0X2J1ZiA9IG1fRGVzdEJ1Zi5HZXRCdWZmZXIoKTsNCisgICAgZGVzdF9zaXplID0gbV9EZXN0QnVmLkdldFNpemUoKTsNCisgICAgbV9EZXN0QnVmLkRldGFjaEJ1ZmZlcigpOw0KK30NCitGWF9CT09MCUNDb2RlY19GYXhNb2R1bGU6OkVuY29kZShGWF9MUENCWVRFIHNyY19idWYsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHBpdGNoLCBGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplKQ0KK3sNCisgICAgQ0NvZGVjX0ZheEVuY29kZXIgZW5jb2RlcihzcmNfYnVmLCB3aWR0aCwgaGVpZ2h0LCBwaXRjaCk7DQorICAgIGVuY29kZXIuRW5jb2RlKGRlc3RfYnVmLCBkZXN0X3NpemUpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorSUNvZGVjX1NjYW5saW5lRGVjb2RlcioJQ0NvZGVjX0ZheE1vZHVsZTo6Q3JlYXRlRGVjb2RlcihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICBpbnQgSywgRlhfQk9PTCBFbmRPZkxpbmUsIEZYX0JPT0wgRW5jb2RlZEJ5dGVBbGlnbiwgRlhfQk9PTCBCbGFja0lzMSwgaW50IENvbHVtbnMsIGludCBSb3dzKQ0KK3sNCisgICAgQ0NvZGVjX0ZheERlY29kZXIqIHBEZWNvZGVyID0gRlhfTkVXIENDb2RlY19GYXhEZWNvZGVyOw0KKyAgICBpZiAocERlY29kZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcERlY29kZXItPkNyZWF0ZShzcmNfYnVmLCBzcmNfc2l6ZSwgd2lkdGgsIGhlaWdodCwgSywgRW5kT2ZMaW5lLCBFbmNvZGVkQnl0ZUFsaWduLCBCbGFja0lzMSwgQ29sdW1ucywgUm93cyk7DQorICAgIHJldHVybiBwRGVjb2RlcjsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19mbGF0ZS5jcHAgYi9jb3JlL3NyYy9meGNvZGVjL2NvZGVjL2Z4X2NvZGVjX2ZsYXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmY5NGUwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19mbGF0ZS5jcHAKQEAgLTAsMCArMSw5NDUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9meF96bGliLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjb2RlYy9meF9jb2RlYy5oIg0KKyNpbmNsdWRlICJjb2RlY19pbnQuaCINCitleHRlcm4gIkMiDQorew0KKyAgICBzdGF0aWMgdm9pZCogbXlfYWxsb2NfZnVuYyAodm9pZCogb3BhcXVlLCB1bnNpZ25lZCBpbnQgaXRlbXMsIHVuc2lnbmVkIGludCBzaXplKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRlhfQWxsb2MoRlhfQllURSwgaXRlbXMgKiBzaXplKTsNCisgICAgfQ0KKyAgICBzdGF0aWMgdm9pZCAgIG15X2ZyZWVfZnVuYyAgKHZvaWQqIG9wYXF1ZSwgdm9pZCogYWRkcmVzcykNCisgICAgew0KKyAgICAgICAgRlhfRnJlZShhZGRyZXNzKTsNCisgICAgfQ0KKyAgICB2b2lkKiBGUERGQVBJX0ZsYXRlSW5pdCh2b2lkKiAoKmFsbG9jX2Z1bmMpKHZvaWQqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpmcmVlX2Z1bmMpKHZvaWQqLCB2b2lkKikpDQorICAgIHsNCisgICAgICAgIHpfc3RyZWFtKiBwID0gKHpfc3RyZWFtKilhbGxvY19mdW5jKDAsIDEsIHNpemVvZih6X3N0cmVhbSkpOw0KKyAgICAgICAgaWYgKHAgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhTWVNfbWVtc2V0MzIocCwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7DQorICAgICAgICBwLT56YWxsb2MgPSBhbGxvY19mdW5jOw0KKyAgICAgICAgcC0+emZyZWUgPSBmcmVlX2Z1bmM7DQorICAgICAgICBpbmZsYXRlSW5pdChwKTsNCisgICAgICAgIHJldHVybiBwOw0KKyAgICB9DQorICAgIHZvaWQgRlBERkFQSV9GbGF0ZUlucHV0KHZvaWQqIGNvbnRleHQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyY19idWYsIHVuc2lnbmVkIGludCBzcmNfc2l6ZSkNCisgICAgew0KKyAgICAgICAgKCh6X3N0cmVhbSopY29udGV4dCktPm5leHRfaW4gPSAodW5zaWduZWQgY2hhciopc3JjX2J1ZjsNCisgICAgICAgICgoel9zdHJlYW0qKWNvbnRleHQpLT5hdmFpbF9pbiA9IHNyY19zaXplOw0KKyAgICB9DQorICAgIGludCBGUERGQVBJX0ZsYXRlR2V0VG90YWxPdXQodm9pZCogY29udGV4dCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuICgoel9zdHJlYW0qKWNvbnRleHQpLT50b3RhbF9vdXQ7DQorICAgIH0NCisgICAgaW50IEZQREZBUElfRmxhdGVPdXRwdXQodm9pZCogY29udGV4dCwgdW5zaWduZWQgY2hhciogZGVzdF9idWYsIHVuc2lnbmVkIGludCBkZXN0X3NpemUpDQorICAgIHsNCisgICAgICAgICgoel9zdHJlYW0qKWNvbnRleHQpLT5uZXh0X291dCA9IGRlc3RfYnVmOw0KKyAgICAgICAgKCh6X3N0cmVhbSopY29udGV4dCktPmF2YWlsX291dCA9IGRlc3Rfc2l6ZTsNCisgICAgICAgIHVuc2lnbmVkIGludCBwcmVfcG9zID0gKHVuc2lnbmVkIGludClGUERGQVBJX0ZsYXRlR2V0VG90YWxPdXQoY29udGV4dCk7DQorICAgICAgICBpbnQgcmV0ID0gaW5mbGF0ZSgoel9zdHJlYW0qKWNvbnRleHQsIFpfU1lOQ19GTFVTSCk7DQorICAgICAgICB1bnNpZ25lZCBpbnQgcG9zdF9wb3MgPSAodW5zaWduZWQgaW50KUZQREZBUElfRmxhdGVHZXRUb3RhbE91dChjb250ZXh0KTsNCisgICAgICAgIHVuc2lnbmVkIGludCB3cml0dGVuID0gcG9zdF9wb3MgLSBwcmVfcG9zOw0KKyAgICAgICAgaWYgKHdyaXR0ZW4gPCBkZXN0X3NpemUpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1zZXQ4KGRlc3RfYnVmICsgd3JpdHRlbiwgJ1wwJywgZGVzdF9zaXplIC0gd3JpdHRlbik7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorICAgIGludCBGUERGQVBJX0ZsYXRlR2V0VG90YWxJbih2b2lkKiBjb250ZXh0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKCh6X3N0cmVhbSopY29udGV4dCktPnRvdGFsX2luOw0KKyAgICB9DQorICAgIGludCBGUERGQVBJX0ZsYXRlR2V0QXZhaWxPdXQodm9pZCogY29udGV4dCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuICgoel9zdHJlYW0qKWNvbnRleHQpLT5hdmFpbF9vdXQ7DQorICAgIH0NCisgICAgaW50IEZQREZBUElfRmxhdGVHZXRBdmFpbEluKHZvaWQqIGNvbnRleHQpDQorICAgIHsNCisgICAgICAgIHJldHVybiAoKHpfc3RyZWFtKiljb250ZXh0KS0+YXZhaWxfaW47DQorICAgIH0NCisgICAgdm9pZCBGUERGQVBJX0ZsYXRlRW5kKHZvaWQqIGNvbnRleHQpDQorICAgIHsNCisgICAgICAgIGluZmxhdGVFbmQoKHpfc3RyZWFtKiljb250ZXh0KTsNCisgICAgICAgICgoel9zdHJlYW0qKWNvbnRleHQpLT56ZnJlZSgwLCBjb250ZXh0KTsNCisgICAgfQ0KKyAgICB2b2lkIEZQREZBUElfRmxhdGVDb21wcmVzcyh1bnNpZ25lZCBjaGFyKiBkZXN0X2J1ZiwgdW5zaWduZWQgbG9uZyogZGVzdF9zaXplLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmNfYnVmLCB1bnNpZ25lZCBsb25nIHNyY19zaXplKQ0KKyAgICB7DQorICAgICAgICBjb21wcmVzcyhkZXN0X2J1ZiwgZGVzdF9zaXplLCBzcmNfYnVmLCBzcmNfc2l6ZSk7DQorICAgIH0NCit9DQorY2xhc3MgQ0xaV0RlY29kZXIgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIEZYX0JPT0wgRGVjb2RlKEZYX0xQQllURSBvdXRwdXQsIEZYX0RXT1JEJiBvdXRsZW4sIGNvbnN0IEZYX0JZVEUqIGlucHV0LCBGWF9EV09SRCYgc2l6ZSwgRlhfQk9PTCBiRWFybHlDaGFuZ2UpOw0KK3ByaXZhdGU6DQorICAgIEZYX0RXT1JECW1fSW5Qb3M7DQorICAgIEZYX0RXT1JECW1fT3V0UG9zOw0KKyAgICBGWF9MUEJZVEUJbV9wT3V0cHV0Ow0KKyAgICBjb25zdCBGWF9CWVRFKgltX3BJbnB1dDsNCisgICAgRlhfQk9PTAkJbV9FYXJseTsNCisgICAgdm9pZAkJQWRkQ29kZShGWF9EV09SRCBwcmVmaXhfY29kZSwgRlhfQllURSBhcHBlbmRfY2hhcik7DQorICAgIEZYX0RXT1JECW1fQ29kZUFycmF5WzUwMjFdOw0KKyAgICBGWF9EV09SRAltX25Db2RlczsNCisgICAgRlhfQllURQkJbV9EZWNvZGVTdGFja1s0MDAwXTsNCisgICAgRlhfRFdPUkQJbV9TdGFja0xlbjsNCisgICAgdm9pZAkJRGVjb2RlU3RyaW5nKEZYX0RXT1JEIGNvZGUpOw0KKyAgICBpbnQJCQltX0NvZGVMZW47DQorfTsNCit2b2lkIENMWldEZWNvZGVyOjpBZGRDb2RlKEZYX0RXT1JEIHByZWZpeF9jb2RlLCBGWF9CWVRFIGFwcGVuZF9jaGFyKQ0KK3sNCisgICAgaWYgKG1fbkNvZGVzICsgbV9FYXJseSA9PSA0MDk0KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9Db2RlQXJyYXlbbV9uQ29kZXMgKytdID0gKHByZWZpeF9jb2RlIDw8IDE2KSB8IGFwcGVuZF9jaGFyOw0KKyAgICBpZiAobV9uQ29kZXMgKyBtX0Vhcmx5ID09IDUxMiAtIDI1OCkgew0KKyAgICAgICAgbV9Db2RlTGVuID0gMTA7DQorICAgIH0gZWxzZSBpZiAobV9uQ29kZXMgKyBtX0Vhcmx5ID09IDEwMjQgLSAyNTgpIHsNCisgICAgICAgIG1fQ29kZUxlbiA9IDExOw0KKyAgICB9IGVsc2UgaWYgKG1fbkNvZGVzICsgbV9FYXJseSA9PSAyMDQ4IC0gMjU4KSB7DQorICAgICAgICBtX0NvZGVMZW4gPSAxMjsNCisgICAgfQ0KK30NCit2b2lkIENMWldEZWNvZGVyOjpEZWNvZGVTdHJpbmcoRlhfRFdPUkQgY29kZSkNCit7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBpbnQgaW5kZXggPSBjb2RlIC0gMjU4Ow0KKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSAoaW50KW1fbkNvZGVzKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCBkYXRhID0gbV9Db2RlQXJyYXlbaW5kZXhdOw0KKyAgICAgICAgaWYgKG1fU3RhY2tMZW4gPj0gc2l6ZW9mKG1fRGVjb2RlU3RhY2spKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9EZWNvZGVTdGFja1ttX1N0YWNrTGVuKytdID0gKEZYX0JZVEUpZGF0YTsNCisgICAgICAgIGNvZGUgPSBkYXRhID4+IDE2Ow0KKyAgICB9DQorICAgIGlmIChtX1N0YWNrTGVuID49IHNpemVvZihtX0RlY29kZVN0YWNrKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fRGVjb2RlU3RhY2tbbV9TdGFja0xlbisrXSA9IChGWF9CWVRFKWNvZGU7DQorfQ0KK2ludCBDTFpXRGVjb2Rlcjo6RGVjb2RlKEZYX0xQQllURSBkZXN0X2J1ZiwgRlhfRFdPUkQmIGRlc3Rfc2l6ZSwgY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQmIHNyY19zaXplLCBGWF9CT09MIGJFYXJseUNoYW5nZSkNCit7DQorICAgIG1fQ29kZUxlbiA9IDk7DQorICAgIG1fSW5Qb3MgPSAwOw0KKyAgICBtX091dFBvcyA9IDA7DQorICAgIG1fcElucHV0ID0gc3JjX2J1ZjsNCisgICAgbV9wT3V0cHV0ID0gZGVzdF9idWY7DQorICAgIG1fRWFybHkgPSBiRWFybHlDaGFuZ2UgPyAxIDogMDsNCisgICAgbV9uQ29kZXMgPSAwOw0KKyAgICBGWF9EV09SRCBvbGRfY29kZSA9IChGWF9EV09SRCkgLSAxOw0KKyAgICBGWF9CWVRFIGxhc3RfY2hhcjsNCisgICAgd2hpbGUgKDEpIHsNCisgICAgICAgIGlmIChtX0luUG9zICsgbV9Db2RlTGVuID4gc3JjX3NpemUgKiA4KSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpbnQgYnl0ZV9wb3MgPSBtX0luUG9zIC8gODsNCisgICAgICAgIGludCBiaXRfcG9zID0gbV9JblBvcyAlIDgsIGJpdF9sZWZ0ID0gbV9Db2RlTGVuOw0KKyAgICAgICAgRlhfRFdPUkQgY29kZSA9IDA7DQorICAgICAgICBpZiAoYml0X3Bvcykgew0KKyAgICAgICAgICAgIGJpdF9sZWZ0IC09IDggLSBiaXRfcG9zOw0KKyAgICAgICAgICAgIGNvZGUgPSAobV9wSW5wdXRbYnl0ZV9wb3MrK10gJiAoKDEgPDwgKDggLSBiaXRfcG9zKSkgLSAxKSkgPDwgYml0X2xlZnQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYml0X2xlZnQgPCA4KSB7DQorICAgICAgICAgICAgY29kZSB8PSBtX3BJbnB1dFtieXRlX3Bvc10gPj4gKDggLSBiaXRfbGVmdCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGJpdF9sZWZ0IC09IDg7DQorICAgICAgICAgICAgY29kZSB8PSBtX3BJbnB1dFtieXRlX3BvcysrXSA8PCBiaXRfbGVmdDsNCisgICAgICAgICAgICBpZiAoYml0X2xlZnQpIHsNCisgICAgICAgICAgICAgICAgY29kZSB8PSBtX3BJbnB1dFtieXRlX3Bvc10gPj4gKDggLSBiaXRfbGVmdCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9JblBvcyArPSBtX0NvZGVMZW47DQorICAgICAgICBpZiAoY29kZSA8IDI1Nikgew0KKyAgICAgICAgICAgIGlmIChtX091dFBvcyA9PSBkZXN0X3NpemUpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC01Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9wT3V0cHV0KSB7DQorICAgICAgICAgICAgICAgIG1fcE91dHB1dFttX091dFBvc10gPSAoRlhfQllURSljb2RlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX091dFBvcyArKzsNCisgICAgICAgICAgICBsYXN0X2NoYXIgPSAoRlhfQllURSljb2RlOw0KKyAgICAgICAgICAgIGlmIChvbGRfY29kZSAhPSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgICAgICAgICBBZGRDb2RlKG9sZF9jb2RlLCBsYXN0X2NoYXIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBvbGRfY29kZSA9IGNvZGU7DQorICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gMjU2KSB7DQorICAgICAgICAgICAgbV9Db2RlTGVuID0gOTsNCisgICAgICAgICAgICBtX25Db2RlcyA9IDA7DQorICAgICAgICAgICAgb2xkX2NvZGUgPSAoRlhfRFdPUkQpIC0gMTsNCisgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSAyNTcpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKG9sZF9jb2RlID09IChGWF9EV09SRCkgLSAxKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX1N0YWNrTGVuID0gMDsNCisgICAgICAgICAgICBpZiAoY29kZSA+PSBtX25Db2RlcyArIDI1OCkgew0KKyAgICAgICAgICAgICAgICBpZiAobV9TdGFja0xlbiA8IHNpemVvZihtX0RlY29kZVN0YWNrKSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9EZWNvZGVTdGFja1ttX1N0YWNrTGVuKytdID0gbGFzdF9jaGFyOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIERlY29kZVN0cmluZyhvbGRfY29kZSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgRGVjb2RlU3RyaW5nKGNvZGUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9PdXRQb3MgKyBtX1N0YWNrTGVuID4gZGVzdF9zaXplKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAtNTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG1fcE91dHB1dCkgew0KKyAgICAgICAgICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgbV9TdGFja0xlbjsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wT3V0cHV0W21fT3V0UG9zICsgaV0gPSBtX0RlY29kZVN0YWNrW21fU3RhY2tMZW4gLSBpIC0gMV07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9PdXRQb3MgKz0gbV9TdGFja0xlbjsNCisgICAgICAgICAgICBsYXN0X2NoYXIgPSBtX0RlY29kZVN0YWNrW21fU3RhY2tMZW4gLSAxXTsNCisgICAgICAgICAgICBpZiAob2xkX2NvZGUgPCAyNTYpIHsNCisgICAgICAgICAgICAgICAgQWRkQ29kZShvbGRfY29kZSwgbGFzdF9jaGFyKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKG9sZF9jb2RlIC0gMjU4ID49IG1fbkNvZGVzKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IG1fT3V0UG9zOw0KKyAgICAgICAgICAgICAgICBzcmNfc2l6ZSA9IChtX0luUG9zICsgNykgLyA4Ow0KKyAgICAgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBBZGRDb2RlKG9sZF9jb2RlLCBsYXN0X2NoYXIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBvbGRfY29kZSA9IGNvZGU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgZGVzdF9zaXplID0gbV9PdXRQb3M7DQorICAgIHNyY19zaXplID0gKG1fSW5Qb3MgKyA3KSAvIDg7DQorICAgIHJldHVybiAwOw0KK30NCitzdGF0aWMgRlhfQllURSBQYWV0aFByZWRpY3RvcihpbnQgYSwgaW50IGIsIGludCBjKQ0KK3sNCisgICAgaW50IHAgPSBhICsgYiAtIGM7DQorICAgIGludCBwYSA9IEZYU1lTX2FicyhwIC0gYSk7DQorICAgIGludCBwYiA9IEZYU1lTX2FicyhwIC0gYik7DQorICAgIGludCBwYyA9IEZYU1lTX2FicyhwIC0gYyk7DQorICAgIGlmIChwYSA8PSBwYiAmJiBwYSA8PSBwYykgew0KKyAgICAgICAgcmV0dXJuIChGWF9CWVRFKWE7DQorICAgIH0NCisgICAgaWYgKHBiIDw9IHBjKSB7DQorICAgICAgICByZXR1cm4gKEZYX0JZVEUpYjsNCisgICAgfQ0KKyAgICByZXR1cm4gKEZYX0JZVEUpYzsNCit9DQorc3RhdGljIHZvaWQgUE5HX1ByZWRpY3RvckVuY29kZShGWF9MUEJZVEUmIGRhdGFfYnVmLCBGWF9EV09SRCYgZGF0YV9zaXplLCBpbnQgcHJlZGljdG9yLCBpbnQgQ29sb3JzLCBpbnQgQml0c1BlckNvbXBvbmVudCwgaW50IENvbHVtbnMpDQorew0KKyAgICBpbnQgQnl0ZXNQZXJQaXhlbCA9IChDb2xvcnMgKiBCaXRzUGVyQ29tcG9uZW50ICsgNykgLyA4Ow0KKyAgICBpbnQgcm93X3NpemUgPSAoQ29sb3JzICogQml0c1BlckNvbXBvbmVudCAqIENvbHVtbnMgKyA3KSAvIDg7DQorICAgIGludCByb3dfY291bnQgPSAoZGF0YV9zaXplICsgcm93X3NpemUgLSAxKSAvIHJvd19zaXplOw0KKyAgICBpbnQgbGFzdF9yb3dfc2l6ZSA9IGRhdGFfc2l6ZSAlIHJvd19zaXplOw0KKyAgICBGWF9MUEJZVEUgZGVzdF9idWYgPSBGWF9BbGxvYyggRlhfQllURSwgKHJvd19zaXplICsgMSkgKiByb3dfY291bnQpOw0KKyAgICBpZiAoZGVzdF9idWYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBieXRlX2NudCA9IDA7DQorICAgIEZYX0xQQllURSBwU3JjRGF0YSA9IGRhdGFfYnVmOw0KKyAgICBGWF9MUEJZVEUgcERlc3REYXRhID0gZGVzdF9idWY7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHJvd19jb3VudDsgcm93KyspIHsNCisgICAgICAgIGlmIChwcmVkaWN0b3IgPT0gMTApIHsNCisgICAgICAgICAgICBwRGVzdERhdGFbMF0gPSAwOw0KKyAgICAgICAgICAgIGludCBtb3ZlX3NpemUgPSByb3dfc2l6ZTsNCisgICAgICAgICAgICBpZiAobW92ZV9zaXplICogKHJvdyArIDEpID4gKGludClkYXRhX3NpemUpIHsNCisgICAgICAgICAgICAgICAgbW92ZV9zaXplID0gZGF0YV9zaXplIC0gKG1vdmVfc2l6ZSAqIHJvdyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYU1lTX21lbW1vdmUzMihwRGVzdERhdGEgKyAxLCBwU3JjRGF0YSwgbW92ZV9zaXplKTsNCisgICAgICAgICAgICBwRGVzdERhdGEgKz0gKG1vdmVfc2l6ZSArIDEpOw0KKyAgICAgICAgICAgIHBTcmNEYXRhICs9IG1vdmVfc2l6ZTsNCisgICAgICAgICAgICBieXRlX2NudCArPSBtb3ZlX3NpemU7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCBieXRlID0gMDsgYnl0ZSA8IHJvd19zaXplICYmIGJ5dGVfY250IDwgKGludClkYXRhX3NpemU7IGJ5dGUrKykgew0KKyAgICAgICAgICAgIHN3aXRjaCAocHJlZGljdG9yKSB7DQorICAgICAgICAgICAgICAgIGNhc2UgMTE6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwRGVzdERhdGFbMF0gPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgbGVmdCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPj0gQnl0ZXNQZXJQaXhlbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gcFNyY0RhdGFbYnl0ZSAtIEJ5dGVzUGVyUGl4ZWxdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBwRGVzdERhdGFbYnl0ZSArIDFdID0gcFNyY0RhdGFbYnl0ZV0gLSBsZWZ0Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMTI6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwRGVzdERhdGFbMF0gPSAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgdXAgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3cpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXAgPSBwU3JjRGF0YVtieXRlIC0gcm93X3NpemVdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBwRGVzdERhdGFbYnl0ZSArIDFdID0gcFNyY0RhdGFbYnl0ZV0gLSB1cDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDEzOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcERlc3REYXRhWzBdID0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGxlZnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID49IEJ5dGVzUGVyUGl4ZWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHBTcmNEYXRhW2J5dGUgLSBCeXRlc1BlclBpeGVsXTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSB1cCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cCA9IHBTcmNEYXRhW2J5dGUgLSByb3dfc2l6ZV07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBEZXN0RGF0YVtieXRlICsgMV0gPSBwU3JjRGF0YVtieXRlXSAtIChsZWZ0ICsgdXApIC8gMjsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDE0OiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcERlc3REYXRhWzBdID0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGxlZnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID49IEJ5dGVzUGVyUGl4ZWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHBTcmNEYXRhW2J5dGUgLSBCeXRlc1BlclBpeGVsXTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSB1cCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cCA9IHBTcmNEYXRhW2J5dGUgLSByb3dfc2l6ZV07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgdXBwZXJfbGVmdCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPj0gQnl0ZXNQZXJQaXhlbCAmJiByb3cpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJfbGVmdCA9IHBTcmNEYXRhW2J5dGUgLSByb3dfc2l6ZSAtIEJ5dGVzUGVyUGl4ZWxdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBwRGVzdERhdGFbYnl0ZSArIDFdID0gcFNyY0RhdGFbYnl0ZV0gLSBQYWV0aFByZWRpY3RvcihsZWZ0LCB1cCwgdXBwZXJfbGVmdCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgZGVmYXVsdDogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBEZXN0RGF0YVtieXRlICsgMV0gPSBwU3JjRGF0YVtieXRlXTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBieXRlX2NudCsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcERlc3REYXRhICs9IChyb3dfc2l6ZSArIDEpOw0KKyAgICAgICAgcFNyY0RhdGEgKz0gcm93X3NpemU7DQorICAgIH0NCisgICAgRlhfRnJlZShkYXRhX2J1Zik7DQorICAgIGRhdGFfYnVmID0gZGVzdF9idWY7DQorICAgIGRhdGFfc2l6ZSA9IChyb3dfc2l6ZSArIDEpICogcm93X2NvdW50IC0gKGxhc3Rfcm93X3NpemUgPiAwID8gKHJvd19zaXplIC0gbGFzdF9yb3dfc2l6ZSkgOiAwKTsNCit9DQorc3RhdGljIHZvaWQgUE5HX1ByZWRpY3RMaW5lKEZYX0xQQllURSBwRGVzdERhdGEsIEZYX0xQQ0JZVEUgcFNyY0RhdGEsIEZYX0xQQ0JZVEUgcExhc3RMaW5lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnBjLCBpbnQgbkNvbG9ycywgaW50IG5QaXhlbHMpDQorew0KKyAgICBpbnQgcm93X3NpemUgPSAoblBpeGVscyAqIGJwYyAqIG5Db2xvcnMgKyA3KSAvIDg7DQorICAgIGludCBCeXRlc1BlclBpeGVsID0gKGJwYyAqIG5Db2xvcnMgKyA3KSAvIDg7DQorICAgIEZYX0JZVEUgdGFnID0gcFNyY0RhdGFbMF07DQorICAgIGlmICh0YWcgPT0gMCkgew0KKyAgICAgICAgRlhTWVNfbWVtbW92ZTMyKHBEZXN0RGF0YSwgcFNyY0RhdGEgKyAxLCByb3dfc2l6ZSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgZm9yIChpbnQgYnl0ZSA9IDA7IGJ5dGUgPCByb3dfc2l6ZTsgYnl0ZSArKykgew0KKyAgICAgICAgRlhfQllURSByYXdfYnl0ZSA9IHBTcmNEYXRhW2J5dGUgKyAxXTsNCisgICAgICAgIHN3aXRjaCAodGFnKSB7DQorICAgICAgICAgICAgY2FzZSAxOgl7DQorICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGxlZnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPj0gQnl0ZXNQZXJQaXhlbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBwRGVzdERhdGFbYnl0ZSAtIEJ5dGVzUGVyUGl4ZWxdOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgcERlc3REYXRhW2J5dGVdID0gcmF3X2J5dGUgKyBsZWZ0Ow0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjYXNlIDI6IHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgdXAgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBMYXN0TGluZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHVwID0gcExhc3RMaW5lW2J5dGVdOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgcERlc3REYXRhW2J5dGVdID0gcmF3X2J5dGUgKyB1cDsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2FzZSAzOiB7DQorICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGxlZnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPj0gQnl0ZXNQZXJQaXhlbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBwRGVzdERhdGFbYnl0ZSAtIEJ5dGVzUGVyUGl4ZWxdOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSB1cCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBpZiAocExhc3RMaW5lKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgdXAgPSBwTGFzdExpbmVbYnl0ZV07DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwRGVzdERhdGFbYnl0ZV0gPSByYXdfYnl0ZSArICh1cCArIGxlZnQpIC8gMjsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2FzZSA0OiB7DQorICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGxlZnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPj0gQnl0ZXNQZXJQaXhlbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBwRGVzdERhdGFbYnl0ZSAtIEJ5dGVzUGVyUGl4ZWxdOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSB1cCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBpZiAocExhc3RMaW5lKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgdXAgPSBwTGFzdExpbmVbYnl0ZV07DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIHVwcGVyX2xlZnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPj0gQnl0ZXNQZXJQaXhlbCAmJiBwTGFzdExpbmUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICB1cHBlcl9sZWZ0ID0gcExhc3RMaW5lW2J5dGUgLSBCeXRlc1BlclBpeGVsXTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHBEZXN0RGF0YVtieXRlXSA9IHJhd19ieXRlICsgUGFldGhQcmVkaWN0b3IobGVmdCwgdXAsIHVwcGVyX2xlZnQpOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgICBwRGVzdERhdGFbYnl0ZV0gPSByYXdfYnl0ZTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCit9DQorc3RhdGljIHZvaWQgUE5HX1ByZWRpY3RvcihGWF9MUEJZVEUmIGRhdGFfYnVmLCBGWF9EV09SRCYgZGF0YV9zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IENvbG9ycywgaW50IEJpdHNQZXJDb21wb25lbnQsIGludCBDb2x1bW5zKQ0KK3sNCisgICAgaW50IEJ5dGVzUGVyUGl4ZWwgPSAoQ29sb3JzICogQml0c1BlckNvbXBvbmVudCArIDcpIC8gODsNCisgICAgaW50IHJvd19zaXplID0gKENvbG9ycyAqIEJpdHNQZXJDb21wb25lbnQgKiBDb2x1bW5zICsgNykgLyA4Ow0KKyAgICBpbnQgcm93X2NvdW50ID0gKGRhdGFfc2l6ZSArIHJvd19zaXplKSAvIChyb3dfc2l6ZSArIDEpOw0KKyAgICBpbnQgbGFzdF9yb3dfc2l6ZSA9IGRhdGFfc2l6ZSAlIChyb3dfc2l6ZSArIDEpOw0KKyAgICBGWF9MUEJZVEUgZGVzdF9idWYgPSBGWF9BbGxvYyggRlhfQllURSwgcm93X3NpemUgKiByb3dfY291bnQpOw0KKyAgICBpZiAoZGVzdF9idWYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBieXRlX2NudCA9IDA7DQorICAgIEZYX0xQQllURSBwU3JjRGF0YSA9IGRhdGFfYnVmOw0KKyAgICBGWF9MUEJZVEUgcERlc3REYXRhID0gZGVzdF9idWY7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHJvd19jb3VudDsgcm93ICsrKSB7DQorICAgICAgICBGWF9CWVRFIHRhZyA9IHBTcmNEYXRhWzBdOw0KKyAgICAgICAgaWYgKHRhZyA9PSAwKSB7DQorICAgICAgICAgICAgaW50IG1vdmVfc2l6ZSA9IHJvd19zaXplOw0KKyAgICAgICAgICAgIGlmICgocm93ICsgMSkgKiAobW92ZV9zaXplICsgMSkgPiAoaW50KWRhdGFfc2l6ZSkgew0KKyAgICAgICAgICAgICAgICBtb3ZlX3NpemUgPSBsYXN0X3Jvd19zaXplIC0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhTWVNfbWVtbW92ZTMyKHBEZXN0RGF0YSwgcFNyY0RhdGEgKyAxLCBtb3ZlX3NpemUpOw0KKyAgICAgICAgICAgIHBTcmNEYXRhICs9IG1vdmVfc2l6ZSArIDE7DQorICAgICAgICAgICAgcERlc3REYXRhICs9IG1vdmVfc2l6ZTsNCisgICAgICAgICAgICBieXRlX2NudCArPSBtb3ZlX3NpemUgKyAxOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgYnl0ZSA9IDA7IGJ5dGUgPCByb3dfc2l6ZSAmJiBieXRlX2NudCA8IChpbnQpZGF0YV9zaXplOyBieXRlICsrKSB7DQorICAgICAgICAgICAgRlhfQllURSByYXdfYnl0ZSA9IHBTcmNEYXRhW2J5dGUgKyAxXTsNCisgICAgICAgICAgICBzd2l0Y2ggKHRhZykgew0KKyAgICAgICAgICAgICAgICBjYXNlIDE6CXsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGxlZnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID49IEJ5dGVzUGVyUGl4ZWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHBEZXN0RGF0YVtieXRlIC0gQnl0ZXNQZXJQaXhlbF07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBEZXN0RGF0YVtieXRlXSA9IHJhd19ieXRlICsgbGVmdDsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY2FzZSAyOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSB1cCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cCA9IHBEZXN0RGF0YVtieXRlIC0gcm93X3NpemVdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBwRGVzdERhdGFbYnl0ZV0gPSByYXdfYnl0ZSArIHVwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBjYXNlIDM6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGxlZnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID49IEJ5dGVzUGVyUGl4ZWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHBEZXN0RGF0YVtieXRlIC0gQnl0ZXNQZXJQaXhlbF07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgdXAgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3cpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXAgPSBwRGVzdERhdGFbYnl0ZSAtIHJvd19zaXplXTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgcERlc3REYXRhW2J5dGVdID0gcmF3X2J5dGUgKyAodXAgKyBsZWZ0KSAvIDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNhc2UgNDogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgbGVmdCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPj0gQnl0ZXNQZXJQaXhlbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gcERlc3REYXRhW2J5dGUgLSBCeXRlc1BlclBpeGVsXTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSB1cCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cCA9IHBEZXN0RGF0YVtieXRlIC0gcm93X3NpemVdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIHVwcGVyX2xlZnQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChieXRlID49IEJ5dGVzUGVyUGl4ZWwgJiYgcm93KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyX2xlZnQgPSBwRGVzdERhdGFbYnl0ZSAtIHJvd19zaXplIC0gQnl0ZXNQZXJQaXhlbF07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBEZXN0RGF0YVtieXRlXSA9IHJhd19ieXRlICsgUGFldGhQcmVkaWN0b3IobGVmdCwgdXAsIHVwcGVyX2xlZnQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgICAgICAgcERlc3REYXRhW2J5dGVdID0gcmF3X2J5dGU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnl0ZV9jbnQrKzsNCisgICAgICAgIH0NCisgICAgICAgIHBTcmNEYXRhICs9IHJvd19zaXplICsgMTsNCisgICAgICAgIHBEZXN0RGF0YSArPSByb3dfc2l6ZTsNCisgICAgICAgIGJ5dGVfY250Kys7DQorICAgIH0NCisgICAgRlhfRnJlZShkYXRhX2J1Zik7DQorICAgIGRhdGFfYnVmID0gZGVzdF9idWY7DQorICAgIGRhdGFfc2l6ZSA9IHJvd19zaXplICogcm93X2NvdW50IC0gKGxhc3Rfcm93X3NpemUgPiAwID8gKHJvd19zaXplICsgMSAtIGxhc3Rfcm93X3NpemUpIDogMCk7DQorfQ0KK3N0YXRpYyB2b2lkIFRJRkZfUHJlZGljdG9yRW5jb2RlTGluZShGWF9MUEJZVEUgZGVzdF9idWYsIGludCByb3dfc2l6ZSwgaW50IEJpdHNQZXJDb21wb25lbnQsIGludCBDb2xvcnMsIGludCBDb2x1bW5zKQ0KK3sNCisgICAgaW50IEJ5dGVzUGVyUGl4ZWwgPSBCaXRzUGVyQ29tcG9uZW50ICogQ29sb3JzIC8gODsNCisgICAgaWYgKEJpdHNQZXJDb21wb25lbnQgPCA4KSB7DQorICAgICAgICBGWF9CWVRFIG1hc2sgPSAweDAxOw0KKyAgICAgICAgaWYgKEJpdHNQZXJDb21wb25lbnQgPT0gMikgew0KKyAgICAgICAgICAgIG1hc2sgPSAweDAzOw0KKyAgICAgICAgfSBlbHNlIGlmIChCaXRzUGVyQ29tcG9uZW50ID09IDQpIHsNCisgICAgICAgICAgICBtYXNrID0gMHgwRjsNCisgICAgICAgIH0NCisgICAgICAgIGludCByb3dfYml0cyA9IENvbG9ycyAqIEJpdHNQZXJDb21wb25lbnQgKiBDb2x1bW5zOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IHJvd19iaXRzIC0gQml0c1BlckNvbXBvbmVudDsgaSA+PSBCaXRzUGVyQ29tcG9uZW50OyBpIC09IEJpdHNQZXJDb21wb25lbnQpIHsNCisgICAgICAgICAgICBpbnQgY29sID0gaSAlIDg7DQorICAgICAgICAgICAgaW50IGluZGV4ID0gaSAvIDg7DQorICAgICAgICAgICAgaW50IGNvbF9wcmUgPSAoY29sID09IDApID8gKDggLSBCaXRzUGVyQ29tcG9uZW50KSA6IChjb2wgLSBCaXRzUGVyQ29tcG9uZW50KTsNCisgICAgICAgICAgICBpbnQgaW5kZXhfcHJlID0gKGNvbCA9PSAwKSA/IChpbmRleCAtIDEpIDogaW5kZXg7DQorICAgICAgICAgICAgRlhfQllURSBjdXIgPSAoZGVzdF9idWZbaW5kZXhdID4+ICg4IC0gY29sIC0gQml0c1BlckNvbXBvbmVudCkpICYgbWFzazsNCisgICAgICAgICAgICBGWF9CWVRFIGxlZnQgPSAoZGVzdF9idWZbaW5kZXhfcHJlXSA+PiAoOCAtIGNvbF9wcmUgLSBCaXRzUGVyQ29tcG9uZW50KSkgJiBtYXNrOw0KKyAgICAgICAgICAgIGN1ciAtPSBsZWZ0Ow0KKyAgICAgICAgICAgIGN1ciAmPSBtYXNrOw0KKyAgICAgICAgICAgIGN1ciA8PD0gKDggLSBjb2wgLSBCaXRzUGVyQ29tcG9uZW50KTsNCisgICAgICAgICAgICBkZXN0X2J1ZltpbmRleF0gJj0gfihtYXNrIDw8ICgoOCAtIGNvbCAtIEJpdHNQZXJDb21wb25lbnQpKSk7DQorICAgICAgICAgICAgZGVzdF9idWZbaW5kZXhdIHw9IGN1cjsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChCaXRzUGVyQ29tcG9uZW50ID09IDgpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSByb3dfc2l6ZSAtIDE7IGkgPj0gQnl0ZXNQZXJQaXhlbDsgaS0tKSB7DQorICAgICAgICAgICAgZGVzdF9idWZbaV0gLT0gZGVzdF9idWZbaSAtIEJ5dGVzUGVyUGl4ZWxdOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZm9yIChpbnQgaSA9IHJvd19zaXplIC0gQnl0ZXNQZXJQaXhlbDsgaSA+PSBCeXRlc1BlclBpeGVsOyBpIC09IEJ5dGVzUGVyUGl4ZWwpIHsNCisgICAgICAgICAgICBGWF9XT1JEIHBpeGVsID0gKGRlc3RfYnVmW2ldIDw8IDgpIHwgZGVzdF9idWZbaSArIDFdOw0KKyAgICAgICAgICAgIHBpeGVsIC09IChkZXN0X2J1ZltpIC0gQnl0ZXNQZXJQaXhlbF0gPDwgOCkgfCBkZXN0X2J1ZltpIC0gQnl0ZXNQZXJQaXhlbCArIDFdOw0KKyAgICAgICAgICAgIGRlc3RfYnVmW2ldID0gcGl4ZWwgPj4gODsNCisgICAgICAgICAgICBkZXN0X2J1ZltpICsgMV0gPSAoRlhfQllURSlwaXhlbDsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitzdGF0aWMgdm9pZCBUSUZGX1ByZWRpY3RvckVuY29kZShGWF9MUEJZVEUmIGRhdGFfYnVmLCBGWF9EV09SRCYgZGF0YV9zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBDb2xvcnMsIGludCBCaXRzUGVyQ29tcG9uZW50LCBpbnQgQ29sdW1ucykNCit7DQorICAgIGludCByb3dfc2l6ZSA9IChDb2xvcnMgKiBCaXRzUGVyQ29tcG9uZW50ICogQ29sdW1ucyArIDcpIC8gODsNCisgICAgaW50IHJvd19jb3VudCA9IChkYXRhX3NpemUgKyByb3dfc2l6ZSAtIDEpIC8gcm93X3NpemU7DQorICAgIGludCBsYXN0X3Jvd19zaXplID0gZGF0YV9zaXplICUgcm93X3NpemU7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHJvd19jb3VudDsgcm93KyspIHsNCisgICAgICAgIEZYX0xQQllURSBzY2FuX2xpbmUgPSBkYXRhX2J1ZiArIHJvdyAqIHJvd19zaXplOw0KKyAgICAgICAgaWYgKChyb3cgKyAxKSAqIHJvd19zaXplID4gKGludClkYXRhX3NpemUpIHsNCisgICAgICAgICAgICByb3dfc2l6ZSA9IGxhc3Rfcm93X3NpemU7DQorICAgICAgICB9DQorICAgICAgICBUSUZGX1ByZWRpY3RvckVuY29kZUxpbmUoc2Nhbl9saW5lLCByb3dfc2l6ZSwgQml0c1BlckNvbXBvbmVudCwgQ29sb3JzLCBDb2x1bW5zKTsNCisgICAgfQ0KK30NCitzdGF0aWMgdm9pZCBUSUZGX1ByZWRpY3RMaW5lKEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IHJvd19zaXplLCBpbnQgQml0c1BlckNvbXBvbmVudCwgaW50IENvbG9ycywgaW50IENvbHVtbnMpDQorew0KKyAgICBpZiAoQml0c1BlckNvbXBvbmVudCA9PSAxKSB7DQorICAgICAgICBpbnQgcm93X2JpdHMgPSBCaXRzUGVyQ29tcG9uZW50ICogQ29sb3JzICogQ29sdW1uczsNCisgICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPCByb3dfYml0czsgaSArKykgew0KKyAgICAgICAgICAgIGludCBjb2wgPSBpICUgODsNCisgICAgICAgICAgICBpbnQgaW5kZXggPSBpIC8gODsNCisgICAgICAgICAgICBpbnQgaW5kZXhfcHJlID0gKGNvbCA9PSAwKSA/IChpbmRleCAtIDEpIDogaW5kZXg7DQorICAgICAgICAgICAgaW50IGNvbF9wcmUgPSAoY29sID09IDApID8gOCA6IGNvbDsNCisgICAgICAgICAgICBpZiggKChkZXN0X2J1ZltpbmRleF0gPj4gKDcgLSBjb2wpKSAmIDEpIF4gKChkZXN0X2J1ZltpbmRleF9wcmVdID4+ICg4IC0gY29sX3ByZSkpICYgMSkgKSB7DQorICAgICAgICAgICAgICAgIGRlc3RfYnVmW2luZGV4XSB8PSAxIDw8ICg3IC0gY29sKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBkZXN0X2J1ZltpbmRleF0gJj0gfigxIDw8ICg3IC0gY29sKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBCeXRlc1BlclBpeGVsID0gQml0c1BlckNvbXBvbmVudCAqIENvbG9ycyAvIDg7DQorICAgIGlmIChCaXRzUGVyQ29tcG9uZW50ID09IDE2KSB7DQorICAgICAgICBmb3IgKGludCBpID0gQnl0ZXNQZXJQaXhlbDsgaSA8IHJvd19zaXplOyBpICs9IDIpIHsNCisgICAgICAgICAgICBGWF9XT1JEIHBpeGVsID0gKGRlc3RfYnVmW2kgLSBCeXRlc1BlclBpeGVsXSA8PCA4KSB8IGRlc3RfYnVmW2kgLSBCeXRlc1BlclBpeGVsICsgMV07DQorICAgICAgICAgICAgcGl4ZWwgKz0gKGRlc3RfYnVmW2ldIDw8IDgpIHwgZGVzdF9idWZbaSArIDFdOw0KKyAgICAgICAgICAgIGRlc3RfYnVmW2ldID0gcGl4ZWwgPj4gODsNCisgICAgICAgICAgICBkZXN0X2J1ZltpICsgMV0gPSAoRlhfQllURSlwaXhlbDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZvciAoaW50IGkgPSBCeXRlc1BlclBpeGVsOyBpIDwgcm93X3NpemU7IGkgKyspIHsNCisgICAgICAgICAgICBkZXN0X2J1ZltpXSArPSBkZXN0X2J1ZltpIC0gQnl0ZXNQZXJQaXhlbF07DQorICAgICAgICB9DQorICAgIH0NCit9DQorc3RhdGljIHZvaWQgVElGRl9QcmVkaWN0b3IoRlhfTFBCWVRFJiBkYXRhX2J1ZiwgRlhfRFdPUkQmIGRhdGFfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgQ29sb3JzLCBpbnQgQml0c1BlckNvbXBvbmVudCwgaW50IENvbHVtbnMpDQorew0KKyAgICBpbnQgcm93X3NpemUgPSAoQ29sb3JzICogQml0c1BlckNvbXBvbmVudCAqIENvbHVtbnMgKyA3KSAvIDg7DQorICAgIGludCByb3dfY291bnQgPSAoZGF0YV9zaXplICsgcm93X3NpemUgLSAxKSAvIHJvd19zaXplOw0KKyAgICBpbnQgbGFzdF9yb3dfc2l6ZSA9IGRhdGFfc2l6ZSAlIHJvd19zaXplOw0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCByb3dfY291bnQ7IHJvdyArKykgew0KKyAgICAgICAgRlhfTFBCWVRFIHNjYW5fbGluZSA9IGRhdGFfYnVmICsgcm93ICogcm93X3NpemU7DQorICAgICAgICBpZiAoKHJvdyArIDEpICogcm93X3NpemUgPiAoaW50KWRhdGFfc2l6ZSkgew0KKyAgICAgICAgICAgIHJvd19zaXplID0gbGFzdF9yb3dfc2l6ZTsNCisgICAgICAgIH0NCisgICAgICAgIFRJRkZfUHJlZGljdExpbmUoc2Nhbl9saW5lLCByb3dfc2l6ZSwgQml0c1BlckNvbXBvbmVudCwgQ29sb3JzLCBDb2x1bW5zKTsNCisgICAgfQ0KK30NCitjbGFzcyBDQ29kZWNfRmxhdGVTY2FubGluZURlY29kZXIgOiBwdWJsaWMgQ0NvZGVjX1NjYW5saW5lRGVjb2Rlcg0KK3sNCitwdWJsaWM6DQorICAgIENDb2RlY19GbGF0ZVNjYW5saW5lRGVjb2RlcigpOw0KKyAgICB+Q0NvZGVjX0ZsYXRlU2NhbmxpbmVEZWNvZGVyKCk7DQorICAgIEZYX0JPT0wJCUNyZWF0ZShGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBuQ29tcHMsIGludCBicGMsDQorICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJlZGljdG9yLCBpbnQgQ29sb3JzLCBpbnQgQml0c1BlckNvbXBvbmVudCwgaW50IENvbHVtbnMpOw0KKyAgICB2aXJ0dWFsIHZvaWQJCURlc3Ryb3koKQ0KKyAgICB7DQorICAgICAgICBkZWxldGUgdGhpczsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQJCXZfRG93blNjYWxlKGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpIHt9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJdl9SZXdpbmQoKTsNCisgICAgdmlydHVhbCBGWF9MUEJZVEUJdl9HZXROZXh0TGluZSgpOw0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECUdldFNyY09mZnNldCgpOw0KKyAgICB2b2lkKgkJCQltX3BGbGF0ZTsNCisgICAgRlhfTFBDQllURQkJCW1fU3JjQnVmOw0KKyAgICBGWF9EV09SRAkJCW1fU3JjU2l6ZTsNCisgICAgRlhfTFBCWVRFCQkJbV9wU2NhbmxpbmU7DQorICAgIEZYX0xQQllURQkJCW1fcExhc3RMaW5lOw0KKyAgICBGWF9MUEJZVEUJCQltX3BQcmVkaWN0QnVmZmVyOw0KKyAgICBGWF9MUEJZVEUJCQltX3BQcmVkaWN0UmF3Ow0KKyAgICBpbnQJCQkJCW1fUHJlZGljdG9yOw0KKyAgICBpbnQJCQkJCW1fQ29sb3JzLCBtX0JpdHNQZXJDb21wb25lbnQsIG1fQ29sdW1ucywgbV9QcmVkaWN0UGl0Y2gsIG1fTGVmdE92ZXI7DQorfTsNCitDQ29kZWNfRmxhdGVTY2FubGluZURlY29kZXI6OkNDb2RlY19GbGF0ZVNjYW5saW5lRGVjb2RlcigpDQorew0KKyAgICBtX3BGbGF0ZSA9IE5VTEw7DQorICAgIG1fcFNjYW5saW5lID0gTlVMTDsNCisgICAgbV9wTGFzdExpbmUgPSBOVUxMOw0KKyAgICBtX3BQcmVkaWN0QnVmZmVyID0gTlVMTDsNCisgICAgbV9wUHJlZGljdFJhdyA9IE5VTEw7DQorICAgIG1fTGVmdE92ZXIgPSAwOw0KK30NCitDQ29kZWNfRmxhdGVTY2FubGluZURlY29kZXI6On5DQ29kZWNfRmxhdGVTY2FubGluZURlY29kZXIoKQ0KK3sNCisgICAgaWYgKG1fcFNjYW5saW5lKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFNjYW5saW5lKTsNCisgICAgfQ0KKyAgICBpZiAobV9wTGFzdExpbmUpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wTGFzdExpbmUpOw0KKyAgICB9DQorICAgIGlmIChtX3BQcmVkaWN0QnVmZmVyKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFByZWRpY3RCdWZmZXIpOw0KKyAgICB9DQorICAgIGlmIChtX3BQcmVkaWN0UmF3KSB7DQorICAgICAgICBGWF9GcmVlKG1fcFByZWRpY3RSYXcpOw0KKyAgICB9DQorICAgIGlmIChtX3BGbGF0ZSkgew0KKyAgICAgICAgRlBERkFQSV9GbGF0ZUVuZChtX3BGbGF0ZSk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDQ29kZWNfRmxhdGVTY2FubGluZURlY29kZXI6OkNyZWF0ZShGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICBpbnQgbkNvbXBzLCBpbnQgYnBjLCBpbnQgcHJlZGljdG9yLCBpbnQgQ29sb3JzLCBpbnQgQml0c1BlckNvbXBvbmVudCwgaW50IENvbHVtbnMpDQorew0KKyAgICBtX1NyY0J1ZiA9IHNyY19idWY7DQorICAgIG1fU3JjU2l6ZSA9IHNyY19zaXplOw0KKyAgICBtX091dHB1dFdpZHRoID0gbV9PcmlnV2lkdGggPSB3aWR0aDsNCisgICAgbV9PdXRwdXRIZWlnaHQgPSBtX09yaWdIZWlnaHQgPSBoZWlnaHQ7DQorICAgIG1fbkNvbXBzID0gbkNvbXBzOw0KKyAgICBtX2JwYyA9IGJwYzsNCisgICAgbV9iQ29sb3JUcmFuc2Zvcm1lZCA9IEZBTFNFOw0KKyAgICBtX1BpdGNoID0gKHdpZHRoICogbkNvbXBzICogYnBjICsgNykgLyA4Ow0KKyAgICBtX3BTY2FubGluZSA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2gpOw0KKyAgICBpZiAobV9wU2NhbmxpbmUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fUHJlZGljdG9yID0gMDsNCisgICAgaWYgKHByZWRpY3Rvcikgew0KKyAgICAgICAgaWYgKHByZWRpY3RvciA+PSAxMCkgew0KKyAgICAgICAgICAgIG1fUHJlZGljdG9yID0gMjsNCisgICAgICAgIH0gZWxzZSBpZiAocHJlZGljdG9yID09IDIpIHsNCisgICAgICAgICAgICBtX1ByZWRpY3RvciA9IDE7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9QcmVkaWN0b3IpIHsNCisgICAgICAgICAgICBpZiAoQml0c1BlckNvbXBvbmVudCAqIENvbG9ycyAqIENvbHVtbnMgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBCaXRzUGVyQ29tcG9uZW50ID0gbV9icGM7DQorICAgICAgICAgICAgICAgIENvbG9ycyA9IG1fbkNvbXBzOw0KKyAgICAgICAgICAgICAgICBDb2x1bW5zID0gbV9PcmlnV2lkdGg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fQ29sb3JzID0gQ29sb3JzOw0KKyAgICAgICAgICAgIG1fQml0c1BlckNvbXBvbmVudCA9IEJpdHNQZXJDb21wb25lbnQ7DQorICAgICAgICAgICAgbV9Db2x1bW5zID0gQ29sdW1uczsNCisgICAgICAgICAgICBtX1ByZWRpY3RQaXRjaCA9IChtX0JpdHNQZXJDb21wb25lbnQgKiBtX0NvbG9ycyAqIG1fQ29sdW1ucyArIDcpIC8gODsNCisgICAgICAgICAgICBtX3BMYXN0TGluZSA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUHJlZGljdFBpdGNoKTsNCisgICAgICAgICAgICBpZiAobV9wTGFzdExpbmUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYU1lTX21lbXNldDMyKG1fcExhc3RMaW5lLCAwLCBtX1ByZWRpY3RQaXRjaCk7DQorICAgICAgICAgICAgbV9wUHJlZGljdFJhdyA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUHJlZGljdFBpdGNoICsgMSk7DQorICAgICAgICAgICAgaWYgKG1fcFByZWRpY3RSYXcgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fcFByZWRpY3RCdWZmZXIgPSBGWF9BbGxvYyhGWF9CWVRFLCBtX1ByZWRpY3RQaXRjaCk7DQorICAgICAgICAgICAgaWYgKG1fcFByZWRpY3RCdWZmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENDb2RlY19GbGF0ZVNjYW5saW5lRGVjb2Rlcjo6dl9SZXdpbmQoKQ0KK3sNCisgICAgaWYgKG1fcEZsYXRlKSB7DQorICAgICAgICBGUERGQVBJX0ZsYXRlRW5kKG1fcEZsYXRlKTsNCisgICAgfQ0KKyAgICBtX3BGbGF0ZSA9IEZQREZBUElfRmxhdGVJbml0KG15X2FsbG9jX2Z1bmMsIG15X2ZyZWVfZnVuYyk7DQorICAgIGlmIChtX3BGbGF0ZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlBERkFQSV9GbGF0ZUlucHV0KG1fcEZsYXRlLCBtX1NyY0J1ZiwgbV9TcmNTaXplKTsNCisgICAgbV9MZWZ0T3ZlciA9IDA7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9MUEJZVEUgQ0NvZGVjX0ZsYXRlU2NhbmxpbmVEZWNvZGVyOjp2X0dldE5leHRMaW5lKCkNCit7DQorICAgIGlmIChtX1ByZWRpY3Rvcikgew0KKyAgICAgICAgaWYgKG1fUGl0Y2ggPT0gbV9QcmVkaWN0UGl0Y2gpIHsNCisgICAgICAgICAgICBpZiAobV9QcmVkaWN0b3IgPT0gMikgew0KKyAgICAgICAgICAgICAgICBGUERGQVBJX0ZsYXRlT3V0cHV0KG1fcEZsYXRlLCBtX3BQcmVkaWN0UmF3LCBtX1ByZWRpY3RQaXRjaCArIDEpOw0KKyAgICAgICAgICAgICAgICBQTkdfUHJlZGljdExpbmUobV9wU2NhbmxpbmUsIG1fcFByZWRpY3RSYXcsIG1fcExhc3RMaW5lLCBtX0JpdHNQZXJDb21wb25lbnQsIG1fQ29sb3JzLCBtX0NvbHVtbnMpOw0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BMYXN0TGluZSwgbV9wU2NhbmxpbmUsIG1fUHJlZGljdFBpdGNoKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBGUERGQVBJX0ZsYXRlT3V0cHV0KG1fcEZsYXRlLCBtX3BTY2FubGluZSwgbV9QaXRjaCk7DQorICAgICAgICAgICAgICAgIFRJRkZfUHJlZGljdExpbmUobV9wU2NhbmxpbmUsIG1fUHJlZGljdFBpdGNoLCBtX2JwYywgbV9uQ29tcHMsIG1fT3V0cHV0V2lkdGgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaW50IGJ5dGVzX3RvX2dvID0gbV9QaXRjaDsNCisgICAgICAgICAgICBpbnQgcmVhZF9sZWZ0b3ZlciA9IG1fTGVmdE92ZXIgPiBieXRlc190b19nbyA/IGJ5dGVzX3RvX2dvIDogbV9MZWZ0T3ZlcjsNCisgICAgICAgICAgICBpZiAocmVhZF9sZWZ0b3Zlcikgew0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BTY2FubGluZSwgbV9wUHJlZGljdEJ1ZmZlciArIG1fUHJlZGljdFBpdGNoIC0gbV9MZWZ0T3ZlciwgcmVhZF9sZWZ0b3Zlcik7DQorICAgICAgICAgICAgICAgIG1fTGVmdE92ZXIgLT0gcmVhZF9sZWZ0b3ZlcjsNCisgICAgICAgICAgICAgICAgYnl0ZXNfdG9fZ28gLT0gcmVhZF9sZWZ0b3ZlcjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgd2hpbGUgKGJ5dGVzX3RvX2dvKSB7DQorICAgICAgICAgICAgICAgIGlmIChtX1ByZWRpY3RvciA9PSAyKSB7DQorICAgICAgICAgICAgICAgICAgICBGUERGQVBJX0ZsYXRlT3V0cHV0KG1fcEZsYXRlLCBtX3BQcmVkaWN0UmF3LCBtX1ByZWRpY3RQaXRjaCArIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgUE5HX1ByZWRpY3RMaW5lKG1fcFByZWRpY3RCdWZmZXIsIG1fcFByZWRpY3RSYXcsIG1fcExhc3RMaW5lLCBtX0JpdHNQZXJDb21wb25lbnQsIG1fQ29sb3JzLCBtX0NvbHVtbnMpOw0KKyAgICAgICAgICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wTGFzdExpbmUsIG1fcFByZWRpY3RCdWZmZXIsIG1fUHJlZGljdFBpdGNoKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIEZQREZBUElfRmxhdGVPdXRwdXQobV9wRmxhdGUsIG1fcFByZWRpY3RCdWZmZXIsIG1fUHJlZGljdFBpdGNoKTsNCisgICAgICAgICAgICAgICAgICAgIFRJRkZfUHJlZGljdExpbmUobV9wUHJlZGljdEJ1ZmZlciwgbV9QcmVkaWN0UGl0Y2gsIG1fQml0c1BlckNvbXBvbmVudCwgbV9Db2xvcnMsIG1fQ29sdW1ucyk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW50IHJlYWRfYnl0ZXMgPSBtX1ByZWRpY3RQaXRjaCA+IGJ5dGVzX3RvX2dvID8gYnl0ZXNfdG9fZ28gOiBtX1ByZWRpY3RQaXRjaDsNCisgICAgICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wU2NhbmxpbmUgKyBtX1BpdGNoIC0gYnl0ZXNfdG9fZ28sIG1fcFByZWRpY3RCdWZmZXIsIHJlYWRfYnl0ZXMpOw0KKyAgICAgICAgICAgICAgICBtX0xlZnRPdmVyICs9IG1fUHJlZGljdFBpdGNoIC0gcmVhZF9ieXRlczsNCisgICAgICAgICAgICAgICAgYnl0ZXNfdG9fZ28gLT0gcmVhZF9ieXRlczsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGUERGQVBJX0ZsYXRlT3V0cHV0KG1fcEZsYXRlLCBtX3BTY2FubGluZSwgbV9QaXRjaCk7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcFNjYW5saW5lOw0KK30NCitGWF9EV09SRCBDQ29kZWNfRmxhdGVTY2FubGluZURlY29kZXI6OkdldFNyY09mZnNldCgpDQorew0KKyAgICByZXR1cm4gRlBERkFQSV9GbGF0ZUdldFRvdGFsSW4obV9wRmxhdGUpOw0KK30NCitzdGF0aWMgdm9pZCBGbGF0ZVVuY29tcHJlc3MoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgRlhfRFdPUkQgb3JpZ19zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9EV09SRCYgZGVzdF9zaXplLCBGWF9EV09SRCYgb2Zmc2V0KQ0KK3sNCisgICAgRlhfRFdPUkQgZ3Vlc3Nfc2l6ZSA9IG9yaWdfc2l6ZSA/IG9yaWdfc2l6ZSA6IHNyY19zaXplICogMjsNCisgICAgRlhfRFdPUkQgYWxsb2Nfc3RlcCA9IG9yaWdfc2l6ZSA/IDEwMjQwIDogKHNyY19zaXplIDwgMTAyNDAgPyAxMDI0MCA6IHNyY19zaXplKTsNCisgICAgc3RhdGljIGNvbnN0IEZYX0RXT1JEIGtNYXhJbml0aWFsQWxsb2NTaXplID0gMTAwMDAwMDA7DQorICAgIGlmIChndWVzc19zaXplID4ga01heEluaXRpYWxBbGxvY1NpemUpIHsNCisgICAgICAgIGd1ZXNzX3NpemUgPSBrTWF4SW5pdGlhbEFsbG9jU2l6ZTsNCisgICAgICAgIGFsbG9jX3N0ZXAgPSBrTWF4SW5pdGlhbEFsbG9jU2l6ZTsNCisgICAgfQ0KKyAgICBGWF9MUEJZVEUgZ3Vlc3NfYnVmID0gRlhfQWxsb2MoRlhfQllURSwgZ3Vlc3Nfc2l6ZSArIDEpOw0KKyAgICBpZiAoIWd1ZXNzX2J1Zikgew0KKyAgICAgICAgZGVzdF9idWYgPSBOVUxMOw0KKyAgICAgICAgZGVzdF9zaXplID0gMDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBndWVzc19idWZbZ3Vlc3Nfc2l6ZV0gPSAnXDAnOw0KKyAgICBGWF9CT09MIHVzZU9sZEltcGwgPSBzcmNfc2l6ZSA8IDEwMjQwOw0KKyAgICB2b2lkKiBjb250ZXh0ID0gRlBERkFQSV9GbGF0ZUluaXQobXlfYWxsb2NfZnVuYywgbXlfZnJlZV9mdW5jKTsNCisgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkgew0KKyAgICAgICAgZGVzdF9idWYgPSBOVUxMOw0KKyAgICAgICAgZGVzdF9zaXplID0gMDsNCisgICAgICAgIHJldHVybiA7DQorICAgIH0NCisgICAgRlBERkFQSV9GbGF0ZUlucHV0KGNvbnRleHQsIHNyY19idWYsIHNyY19zaXplKTsNCisgICAgQ0ZYX0FycmF5VGVtcGxhdGU8RlhfTFBCWVRFPiByZXN1bHRfdG1wX2J1ZnM7DQorICAgIEZYX0xQQllURSBidWYgPSBndWVzc19idWY7DQorICAgIEZYX0RXT1JEIGJ1Zl9zaXplID0gZ3Vlc3Nfc2l6ZTsNCisgICAgRlhfRFdPUkQgbGFzdF9idWZfc2l6ZSA9IGJ1Zl9zaXplOw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgICAgRlhfSU5UMzIgcmV0ID0gRlBERkFQSV9GbGF0ZU91dHB1dChjb250ZXh0LCBidWYsIGJ1Zl9zaXplKTsNCisgICAgICAgIEZYX0lOVDMyIGF2YWlsX2J1Zl9zaXplID0gRlBERkFQSV9GbGF0ZUdldEF2YWlsT3V0KGNvbnRleHQpOw0KKyAgICAgICAgaWYgKCF1c2VPbGRJbXBsKSB7DQorICAgICAgICAgICAgaWYgKHJldCAhPSBaX09LKSB7DQorICAgICAgICAgICAgICAgIGxhc3RfYnVmX3NpemUgPSBidWZfc2l6ZSAtIGF2YWlsX2J1Zl9zaXplOw0KKyAgICAgICAgICAgICAgICByZXN1bHRfdG1wX2J1ZnMuQWRkKGJ1Zik7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoYXZhaWxfYnVmX3NpemUgPT0gMCkgew0KKyAgICAgICAgICAgICAgICByZXN1bHRfdG1wX2J1ZnMuQWRkKGJ1Zik7DQorICAgICAgICAgICAgICAgIGJ1ZiA9IE5VTEw7DQorICAgICAgICAgICAgICAgIGJ1ZiA9IEZYX0FsbG9jKEZYX0JZVEUsIGJ1Zl9zaXplICsgMSk7DQorICAgICAgICAgICAgICAgIGlmICghYnVmKSB7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X2J1ZiA9IE5VTEw7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NpemUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJ1ZltidWZfc2l6ZV0gPSAnXDAnOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGxhc3RfYnVmX3NpemUgPSBidWZfc2l6ZSAtIGF2YWlsX2J1Zl9zaXplOw0KKyAgICAgICAgICAgICAgICByZXN1bHRfdG1wX2J1ZnMuQWRkKGJ1Zik7DQorICAgICAgICAgICAgICAgIGJ1ZiA9IE5VTEw7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKHJldCAhPSBaX09LKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoYXZhaWxfYnVmX3NpemUgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBGWF9EV09SRCBvbGRfc2l6ZSA9IGd1ZXNzX3NpemU7DQorICAgICAgICAgICAgICAgIGd1ZXNzX3NpemUgKz0gYWxsb2Nfc3RlcDsNCisgICAgICAgICAgICAgICAgaWYgKGd1ZXNzX3NpemUgPCBvbGRfc2l6ZSB8fCBndWVzc19zaXplICsgMSA8IGd1ZXNzX3NpemUpIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYnVmID0gTlVMTDsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZ3Vlc3NfYnVmID0gRlhfUmVhbGxvYyhGWF9CWVRFLCBndWVzc19idWYsIGd1ZXNzX3NpemUgKyAxKTsNCisgICAgICAgICAgICAgICAgaWYgKCFndWVzc19idWYpIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYnVmID0gTlVMTDsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZ3Vlc3NfYnVmW2d1ZXNzX3NpemVdID0gJ1wwJzsNCisgICAgICAgICAgICAgICAgYnVmID0gZ3Vlc3NfYnVmICsgb2xkX3NpemU7DQorICAgICAgICAgICAgICAgIGJ1Zl9zaXplID0gZ3Vlc3Nfc2l6ZSAtIG9sZF9zaXplOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBkZXN0X3NpemUgPSBGUERGQVBJX0ZsYXRlR2V0VG90YWxPdXQoY29udGV4dCk7DQorICAgIG9mZnNldCA9IEZQREZBUElfRmxhdGVHZXRUb3RhbEluKGNvbnRleHQpOw0KKyAgICBpZiAoIXVzZU9sZEltcGwpIHsNCisgICAgICAgIGlmIChyZXN1bHRfdG1wX2J1ZnMuR2V0U2l6ZSgpID09IDEpIHsNCisgICAgICAgICAgICBkZXN0X2J1ZiA9IHJlc3VsdF90bXBfYnVmc1swXTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIHJlc3VsdF9idWYgPSBGWF9BbGxvYyhGWF9CWVRFLCBkZXN0X3NpemUpOw0KKyAgICAgICAgICAgIGlmICghcmVzdWx0X2J1Zikgew0KKyAgICAgICAgICAgICAgICBkZXN0X2J1ZiA9IE5VTEw7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IDA7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfRFdPUkQgcmVzdWx0X3BvcyA9IDA7DQorICAgICAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gMDsgaSA8IHJlc3VsdF90bXBfYnVmcy5HZXRTaXplKCk7IGkrKykgew0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgdG1wX2J1ZiA9IHJlc3VsdF90bXBfYnVmc1tpXTsNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgdG1wX2J1Zl9zaXplID0gYnVmX3NpemU7DQorICAgICAgICAgICAgICAgIGlmIChpID09IHJlc3VsdF90bXBfYnVmcy5HZXRTaXplKCkgLSAxKSB7DQorICAgICAgICAgICAgICAgICAgICB0bXBfYnVmX3NpemUgPSBsYXN0X2J1Zl9zaXplOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKHJlc3VsdF9idWYgKyByZXN1bHRfcG9zLCB0bXBfYnVmLCB0bXBfYnVmX3NpemUpOw0KKyAgICAgICAgICAgICAgICByZXN1bHRfcG9zICs9IHRtcF9idWZfc2l6ZTsNCisgICAgICAgICAgICAgICAgRlhfRnJlZSh0bXBfYnVmKTsNCisgICAgICAgICAgICAgICAgdG1wX2J1ZiA9IE5VTEw7DQorICAgICAgICAgICAgICAgIHJlc3VsdF90bXBfYnVmc1tpXSA9IE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3RfYnVmID0gcmVzdWx0X2J1ZjsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChndWVzc19zaXplIC8gMiA+IGRlc3Rfc2l6ZSkgew0KKyAgICAgICAgICAgIGd1ZXNzX2J1ZiA9IEZYX1JlYWxsb2MoRlhfQllURSwgZ3Vlc3NfYnVmLCBkZXN0X3NpemUgKyAxKTsNCisgICAgICAgICAgICBpZiAoIWd1ZXNzX2J1Zikgew0KKyAgICAgICAgICAgICAgICBkZXN0X2J1ZiA9IE5VTEw7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2l6ZSA9IDA7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZ3Vlc3Nfc2l6ZSA9IGRlc3Rfc2l6ZTsNCisgICAgICAgICAgICBndWVzc19idWZbZ3Vlc3Nfc2l6ZV0gPSAnXDAnOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9idWYgPSBndWVzc19idWY7DQorICAgIH0NCisgICAgRlBERkFQSV9GbGF0ZUVuZChjb250ZXh0KTsNCisgICAgY29udGV4dCA9IE5VTEw7DQorfQ0KK0lDb2RlY19TY2FubGluZURlY29kZXIqCUNDb2RlY19GbGF0ZU1vZHVsZTo6Q3JlYXRlRGVjb2RlcihGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICBpbnQgbkNvbXBzLCBpbnQgYnBjLCBpbnQgcHJlZGljdG9yLCBpbnQgQ29sb3JzLCBpbnQgQml0c1BlckNvbXBvbmVudCwgaW50IENvbHVtbnMpDQorew0KKyAgICBDQ29kZWNfRmxhdGVTY2FubGluZURlY29kZXIqIHBEZWNvZGVyID0gRlhfTkVXIENDb2RlY19GbGF0ZVNjYW5saW5lRGVjb2RlcjsNCisgICAgaWYgKHBEZWNvZGVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBEZWNvZGVyLT5DcmVhdGUoc3JjX2J1Ziwgc3JjX3NpemUsIHdpZHRoLCBoZWlnaHQsIG5Db21wcywgYnBjLCBwcmVkaWN0b3IsIENvbG9ycywgQml0c1BlckNvbXBvbmVudCwgQ29sdW1ucyk7DQorICAgIHJldHVybiBwRGVjb2RlcjsNCit9DQorRlhfRFdPUkQgQ0NvZGVjX0ZsYXRlTW9kdWxlOjpGbGF0ZU9yTFpXRGVjb2RlKEZYX0JPT0wgYkxaVywgY29uc3QgRlhfQllURSogc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIEZYX0JPT0wgYkVhcmx5Q2hhbmdlLA0KKyAgICAgICAgaW50IHByZWRpY3RvciwgaW50IENvbG9ycywgaW50IEJpdHNQZXJDb21wb25lbnQsIGludCBDb2x1bW5zLA0KKyAgICAgICAgRlhfRFdPUkQgZXN0aW1hdGVkX3NpemUsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpDQorew0KKyAgICBDTFpXRGVjb2RlciogcERlY29kZXIgPSBOVUxMOw0KKyAgICBkZXN0X2J1ZiA9IE5VTEw7DQorICAgIEZYX0RXT1JEIG9mZnNldCA9IDA7DQorICAgIGludCBwcmVkaWN0b3JfdHlwZSA9IDA7DQorICAgIGlmIChwcmVkaWN0b3IpIHsNCisgICAgICAgIGlmIChwcmVkaWN0b3IgPj0gMTApIHsNCisgICAgICAgICAgICBwcmVkaWN0b3JfdHlwZSA9IDI7DQorICAgICAgICB9IGVsc2UgaWYgKHByZWRpY3RvciA9PSAyKSB7DQorICAgICAgICAgICAgcHJlZGljdG9yX3R5cGUgPSAxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChiTFpXKSB7DQorICAgICAgICBwRGVjb2RlciA9IEZYX05FVyBDTFpXRGVjb2RlcjsNCisgICAgICAgIGlmIChwRGVjb2RlciA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zaXplID0gKEZYX0RXT1JEKSAtIDE7DQorICAgICAgICBvZmZzZXQgPSBzcmNfc2l6ZTsNCisgICAgICAgIGludCBlcnIgPSBwRGVjb2Rlci0+RGVjb2RlKE5VTEwsIGRlc3Rfc2l6ZSwgc3JjX2J1Ziwgb2Zmc2V0LCBiRWFybHlDaGFuZ2UpOw0KKyAgICAgICAgZGVsZXRlIHBEZWNvZGVyOw0KKyAgICAgICAgaWYgKGVyciB8fCBkZXN0X3NpemUgPT0gMCB8fCBkZXN0X3NpemUgKyAxIDwgZGVzdF9zaXplKSB7DQorICAgICAgICAgICAgcmV0dXJuIChGWF9EV09SRCkgLSAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcERlY29kZXIgPSBGWF9ORVcgQ0xaV0RlY29kZXI7DQorICAgICAgICBpZiAocERlY29kZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3RfYnVmID0gRlhfQWxsb2MoIEZYX0JZVEUsIGRlc3Rfc2l6ZSArIDEpOw0KKyAgICAgICAgaWYgKGRlc3RfYnVmID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X2J1ZltkZXN0X3NpemVdID0gJ1wwJzsNCisgICAgICAgIHBEZWNvZGVyLT5EZWNvZGUoZGVzdF9idWYsIGRlc3Rfc2l6ZSwgc3JjX2J1Ziwgb2Zmc2V0LCBiRWFybHlDaGFuZ2UpOw0KKyAgICAgICAgZGVsZXRlIHBEZWNvZGVyOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRmxhdGVVbmNvbXByZXNzKHNyY19idWYsIHNyY19zaXplLCBlc3RpbWF0ZWRfc2l6ZSwgZGVzdF9idWYsIGRlc3Rfc2l6ZSwgb2Zmc2V0KTsNCisgICAgfQ0KKyAgICBpZiAocHJlZGljdG9yX3R5cGUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIG9mZnNldDsNCisgICAgfQ0KKyAgICBpZiAocHJlZGljdG9yX3R5cGUgPT0gMikgew0KKyAgICAgICAgUE5HX1ByZWRpY3RvcihkZXN0X2J1ZiwgZGVzdF9zaXplLCBDb2xvcnMsIEJpdHNQZXJDb21wb25lbnQsIENvbHVtbnMpOw0KKyAgICB9IGVsc2UgaWYgKHByZWRpY3Rvcl90eXBlID09IDEpIHsNCisgICAgICAgIFRJRkZfUHJlZGljdG9yKGRlc3RfYnVmLCBkZXN0X3NpemUsIENvbG9ycywgQml0c1BlckNvbXBvbmVudCwgQ29sdW1ucyk7DQorICAgIH0NCisgICAgcmV0dXJuIG9mZnNldDsNCit9DQorRlhfQk9PTCBDQ29kZWNfRmxhdGVNb2R1bGU6OkVuY29kZShjb25zdCBGWF9CWVRFKiBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcmVkaWN0b3IsIGludCBDb2xvcnMsIGludCBCaXRzUGVyQ29tcG9uZW50LCBpbnQgQ29sdW1ucywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpDQorew0KKyAgICBpZiAocHJlZGljdG9yICE9IDIgJiYgcHJlZGljdG9yIDwgMTApIHsNCisgICAgICAgIHJldHVybiBFbmNvZGUoc3JjX2J1Ziwgc3JjX3NpemUsIGRlc3RfYnVmLCBkZXN0X3NpemUpOw0KKyAgICB9DQorICAgIEZYX0JPT0wgcmV0ID0gRkFMU0U7DQorICAgIEZYX0xQQllURSBwU3JjQnVmID0gTlVMTDsNCisgICAgcFNyY0J1ZiA9IEZYX0FsbG9jKEZYX0JZVEUsIHNyY19zaXplKTsNCisgICAgaWYgKHBTcmNCdWYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYU1lTX21lbWNweTMyKHBTcmNCdWYsIHNyY19idWYsIHNyY19zaXplKTsNCisgICAgaWYgKHByZWRpY3RvciA9PSAyKSB7DQorICAgICAgICBUSUZGX1ByZWRpY3RvckVuY29kZShwU3JjQnVmLCBzcmNfc2l6ZSwgQ29sb3JzLCBCaXRzUGVyQ29tcG9uZW50LCBDb2x1bW5zKTsNCisgICAgfSBlbHNlIGlmIChwcmVkaWN0b3IgPj0gMTApIHsNCisgICAgICAgIFBOR19QcmVkaWN0b3JFbmNvZGUocFNyY0J1Ziwgc3JjX3NpemUsIHByZWRpY3RvciwgQ29sb3JzLCBCaXRzUGVyQ29tcG9uZW50LCBDb2x1bW5zKTsNCisgICAgfQ0KKyAgICByZXQgPSBFbmNvZGUocFNyY0J1Ziwgc3JjX3NpemUsIGRlc3RfYnVmLCBkZXN0X3NpemUpOw0KKyAgICBGWF9GcmVlKHBTcmNCdWYpOw0KKyAgICByZXR1cm4gcmV0Ow0KK30NCitGWF9CT09MIENDb2RlY19GbGF0ZU1vZHVsZTo6RW5jb2RlKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpDQorew0KKyAgICBkZXN0X3NpemUgPSBzcmNfc2l6ZSArIHNyY19zaXplIC8gMTAwMCArIDEyOw0KKyAgICBkZXN0X2J1ZiA9IEZYX0FsbG9jKCBGWF9CWVRFLCBkZXN0X3NpemUpOw0KKyAgICBpZiAoZGVzdF9idWYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHVuc2lnbmVkIGxvbmcgdGVtcF9zaXplID0gZGVzdF9zaXplOw0KKyAgICBGUERGQVBJX0ZsYXRlQ29tcHJlc3MoZGVzdF9idWYsICZ0ZW1wX3NpemUsIHNyY19idWYsIHNyY19zaXplKTsNCisgICAgZGVzdF9zaXplID0gKEZYX0RXT1JEKXRlbXBfc2l6ZTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvY29kZWMvZnhfY29kZWNfaWNjLmNwcCBiL2NvcmUvc3JjL2Z4Y29kZWMvY29kZWMvZnhfY29kZWNfaWNjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTYxNzY0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19pY2MuY3BwCkBAIC0wLDAgKzEsMTM2MCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjb2RlYy9meF9jb2RlYy5oIg0KKyNpbmNsdWRlICJjb2RlY19pbnQuaCINCisjaW5jbHVkZSAiLi4vbGNtczIvaW5jbHVkZS9meF9sY21zMi5oIg0KK0ZYX0JPT0wgTUQ1Q29tcHV0ZUlEKCBGWF9MUENWT0lEIGJ1ZiwgRlhfRFdPUkQgZHdTaXplLCBGWF9CWVRFIElEWzE2XSApDQorew0KKyAgICByZXR1cm4gY21zTUQ1Y29tcHV0ZUlERXh0KGJ1ZiwgZHdTaXplLCBJRCk7DQorfQ0KK3N0cnVjdCBDTGNtc0NtbSA6IHB1YmxpYyBDRlhfT2JqZWN0IHsNCisgICAgY21zSFRSQU5TRk9STSBtX2hUcmFuc2Zvcm07DQorICAgIGludAkJCW1fblNyY0NvbXBvbmVudHM7DQorICAgIGludAkJCW1fbkRzdENvbXBvbmVudHM7DQorICAgIEZYX0JPT0wJCW1fYkxhYjsNCit9Ow0KK2V4dGVybiAiQyIgew0KKyAgICBpbnQgb3VySGFuZGxlcihpbnQgRXJyb3JDb2RlLCBjb25zdCBjaGFyICpFcnJvclRleHQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorfTsNCitGWF9CT09MIENoZWNrQ29tcG9uZW50cyhjbXNDb2xvclNwYWNlU2lnbmF0dXJlIGNzLCBpbnQgbkNvbXBvbmVudHMsIEZYX0JPT0wgYkRzdCkNCit7DQorICAgIGlmIChuQ29tcG9uZW50cyA8PSAwIHx8IG5Db21wb25lbnRzID4gMTUpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBzd2l0Y2goY3MpIHsNCisgICAgICAgIGNhc2UgY21zU2lnTGFiRGF0YToNCisgICAgICAgICAgICBpZiAobkNvbXBvbmVudHMgPCAzKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIGNtc1NpZ0dyYXlEYXRhOg0KKyAgICAgICAgICAgIGlmIChiRHN0ICYmIG5Db21wb25lbnRzICE9IDEpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWJEc3QgJiYgbkNvbXBvbmVudHMgPiAyKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIGNtc1NpZ1JnYkRhdGE6DQorICAgICAgICAgICAgaWYgKGJEc3QgJiYgbkNvbXBvbmVudHMgIT0gMykgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBjbXNTaWdDbXlrRGF0YToNCisgICAgICAgICAgICBpZiAoYkRzdCAmJiBuQ29tcG9uZW50cyAhPSA0KSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGlmIChuQ29tcG9uZW50cyAhPSAzKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQqIEljY0xpYl9DcmVhdGVUcmFuc2Zvcm0oY29uc3QgdW5zaWduZWQgY2hhciogcFNyY1Byb2ZpbGVEYXRhLCB1bnNpZ25lZCBpbnQgZHdTcmNQcm9maWxlU2l6ZSwgaW50IG5TcmNDb21wb25lbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogcERzdFByb2ZpbGVEYXRhLCB1bnNpZ25lZCBpbnQgZHdEc3RQcm9maWxlU2l6ZSwgaW50IG5Ec3RDb21wb25lbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGludGVudCwgRlhfRFdPUkQgZHdTcmNGb3JtYXQgPSBJY2NfRk9STUFUX0RFRkFVTFQsIEZYX0RXT1JEIGR3RHN0Rm9ybWF0ID0gSWNjX0ZPUk1BVF9ERUZBVUxUKQ0KK3sNCisgICAgY21zSFBST0ZJTEUgc3JjUHJvZmlsZSA9IE5VTEw7DQorICAgIGNtc0hQUk9GSUxFIGRzdFByb2ZpbGUgPSBOVUxMOw0KKyAgICBjbXNIVFJBTlNGT1JNIGhUcmFuc2Zvcm0gPSBOVUxMOw0KKyAgICBDTGNtc0NtbSogcENtbSA9IE5VTEw7DQorICAgIHNyY1Byb2ZpbGUgPSBjbXNPcGVuUHJvZmlsZUZyb21NZW0oKHZvaWQqKXBTcmNQcm9maWxlRGF0YSwgZHdTcmNQcm9maWxlU2l6ZSk7DQorICAgIGlmIChzcmNQcm9maWxlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmKHBEc3RQcm9maWxlRGF0YSA9PSBOVUxMICYmIGR3RHN0UHJvZmlsZVNpemUgPT0gMCAmJiBuRHN0Q29tcG9uZW50cyA9PSAzKSB7DQorICAgICAgICBkc3RQcm9maWxlID0gY21zQ3JlYXRlX3NSR0JQcm9maWxlKCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBkc3RQcm9maWxlID0gY21zT3BlblByb2ZpbGVGcm9tTWVtKCh2b2lkKilwRHN0UHJvZmlsZURhdGEsIGR3RHN0UHJvZmlsZVNpemUpOw0KKyAgICB9DQorICAgIGlmIChkc3RQcm9maWxlID09IE5VTEwpIHsNCisgICAgICAgIGNtc0Nsb3NlUHJvZmlsZShzcmNQcm9maWxlKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGludCBzcmNGb3JtYXQ7DQorICAgIEZYX0JPT0wgYkxhYiA9IEZBTFNFOw0KKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIHNyY0NTID0gY21zR2V0Q29sb3JTcGFjZShzcmNQcm9maWxlKTsNCisgICAgaWYgKCFDaGVja0NvbXBvbmVudHMoc3JjQ1MsIG5TcmNDb21wb25lbnRzLCBGQUxTRSkpIHsNCisgICAgICAgIGNtc0Nsb3NlUHJvZmlsZShzcmNQcm9maWxlKTsNCisgICAgICAgIGNtc0Nsb3NlUHJvZmlsZShkc3RQcm9maWxlKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChzcmNDUyA9PSBjbXNTaWdMYWJEYXRhKSB7DQorICAgICAgICBzcmNGb3JtYXQgPSBDT0xPUlNQQUNFX1NIKFBUX0xhYikgfCBDSEFOTkVMU19TSChuU3JjQ29tcG9uZW50cykgfCBCWVRFU19TSCgwKTsNCisgICAgICAgIGJMYWIgPSBUUlVFOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgc3JjRm9ybWF0ID0gQ09MT1JTUEFDRV9TSChQVF9BTlkpIHwgQ0hBTk5FTFNfU0goblNyY0NvbXBvbmVudHMpIHwgQllURVNfU0goMSk7DQorICAgICAgICBpZiAoc3JjQ1MgPT0gY21zU2lnUmdiRGF0YSAmJiBUX0RPU1dBUChkd1NyY0Zvcm1hdCkpIHsNCisgICAgICAgICAgICBzcmNGb3JtYXQgfD0gRE9TV0FQX1NIKDEpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgZHN0Q1MgPSBjbXNHZXRDb2xvclNwYWNlKGRzdFByb2ZpbGUpOw0KKyAgICBpZiAoIUNoZWNrQ29tcG9uZW50cyhkc3RDUywgbkRzdENvbXBvbmVudHMsIFRSVUUpKSB7DQorICAgICAgICBjbXNDbG9zZVByb2ZpbGUoc3JjUHJvZmlsZSk7DQorICAgICAgICBjbXNDbG9zZVByb2ZpbGUoZHN0UHJvZmlsZSk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBzd2l0Y2goZHN0Q1MpIHsNCisgICAgICAgIGNhc2UgY21zU2lnR3JheURhdGE6DQorICAgICAgICAgICAgaFRyYW5zZm9ybSA9IGNtc0NyZWF0ZVRyYW5zZm9ybShzcmNQcm9maWxlLCBzcmNGb3JtYXQsIGRzdFByb2ZpbGUsIFRZUEVfR1JBWV84LCBpbnRlbnQsIDApOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBjbXNTaWdSZ2JEYXRhOg0KKyAgICAgICAgICAgIGhUcmFuc2Zvcm0gPSBjbXNDcmVhdGVUcmFuc2Zvcm0oc3JjUHJvZmlsZSwgc3JjRm9ybWF0LCBkc3RQcm9maWxlLCBUWVBFX0JHUl84LCBpbnRlbnQsIDApOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBjbXNTaWdDbXlrRGF0YToNCisgICAgICAgICAgICBoVHJhbnNmb3JtID0gY21zQ3JlYXRlVHJhbnNmb3JtKHNyY1Byb2ZpbGUsIHNyY0Zvcm1hdCwgZHN0UHJvZmlsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfRE9TV0FQKGR3RHN0Rm9ybWF0KSA/IFRZUEVfS1lNQ184IDogVFlQRV9DTVlLXzgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQsIDApOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICBpZiAoaFRyYW5zZm9ybSA9PSBOVUxMKSB7DQorICAgICAgICBjbXNDbG9zZVByb2ZpbGUoc3JjUHJvZmlsZSk7DQorICAgICAgICBjbXNDbG9zZVByb2ZpbGUoZHN0UHJvZmlsZSk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwQ21tID0gRlhfTkVXIENMY21zQ21tOw0KKyAgICBpZiAocENtbSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwQ21tLT5tX25TcmNDb21wb25lbnRzID0gblNyY0NvbXBvbmVudHM7DQorICAgIHBDbW0tPm1fbkRzdENvbXBvbmVudHMgPSBuRHN0Q29tcG9uZW50czsNCisgICAgcENtbS0+bV9oVHJhbnNmb3JtID0gaFRyYW5zZm9ybTsNCisgICAgcENtbS0+bV9iTGFiID0gYkxhYjsNCisgICAgY21zQ2xvc2VQcm9maWxlKHNyY1Byb2ZpbGUpOw0KKyAgICBjbXNDbG9zZVByb2ZpbGUoZHN0UHJvZmlsZSk7DQorICAgIHJldHVybiBwQ21tOw0KK30NCit2b2lkKiBJY2NMaWJfQ3JlYXRlVHJhbnNmb3JtX3NSR0IoY29uc3QgdW5zaWduZWQgY2hhciogcFByb2ZpbGVEYXRhLCB1bnNpZ25lZCBpbnQgZHdQcm9maWxlU2l6ZSwgaW50IG5Db21wb25lbnRzLCBpbnQgaW50ZW50LCBGWF9EV09SRCBkd1NyY0Zvcm1hdCkNCit7DQorICAgIHJldHVybiBJY2NMaWJfQ3JlYXRlVHJhbnNmb3JtKHBQcm9maWxlRGF0YSwgZHdQcm9maWxlU2l6ZSwgbkNvbXBvbmVudHMsIE5VTEwsIDAsIDMsIGludGVudCwgZHdTcmNGb3JtYXQpOw0KK30NCit2b2lkIEljY0xpYl9EZXN0cm95VHJhbnNmb3JtKHZvaWQqIHBUcmFuc2Zvcm0pDQorew0KKyAgICBpZiAocFRyYW5zZm9ybSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgY21zRGVsZXRlVHJhbnNmb3JtKCgoQ0xjbXNDbW0qKXBUcmFuc2Zvcm0pLT5tX2hUcmFuc2Zvcm0pOw0KKyAgICBkZWxldGUgKENMY21zQ21tKilwVHJhbnNmb3JtOw0KK30NCit2b2lkIEljY0xpYl9UcmFuc2xhdGUodm9pZCogcFRyYW5zZm9ybSwgRlhfRkxPQVQqIHBTcmNWYWx1ZXMsIEZYX0ZMT0FUKiBwRGVzdFZhbHVlcykNCit7DQorICAgIGlmIChwVHJhbnNmb3JtID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDTGNtc0NtbSogcCA9IChDTGNtc0NtbSopcFRyYW5zZm9ybTsNCisgICAgRlhfQllURSBvdXRwdXRbNF07DQorICAgIGlmIChwLT5tX2JMYWIpIHsNCisgICAgICAgIENGWF9GaXhlZEJ1Zkdyb3c8ZG91YmxlLCAxNj4gaW5wdXRzKHAtPm1fblNyY0NvbXBvbmVudHMpOw0KKyAgICAgICAgZG91YmxlKiBpbnB1dCA9IGlucHV0czsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcC0+bV9uU3JjQ29tcG9uZW50czsgaSArKykgew0KKyAgICAgICAgICAgIGlucHV0W2ldID0gcFNyY1ZhbHVlc1tpXTsNCisgICAgICAgIH0NCisgICAgICAgIGNtc0RvVHJhbnNmb3JtKHAtPm1faFRyYW5zZm9ybSwgaW5wdXQsIG91dHB1dCwgMSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDRlhfRml4ZWRCdWZHcm93PEZYX0JZVEUsIDE2PiBpbnB1dHMocC0+bV9uU3JjQ29tcG9uZW50cyk7DQorICAgICAgICBGWF9CWVRFKiBpbnB1dCA9IGlucHV0czsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcC0+bV9uU3JjQ29tcG9uZW50czsgaSArKykgew0KKyAgICAgICAgICAgIGlmIChwU3JjVmFsdWVzW2ldID4gMS4wZikgew0KKyAgICAgICAgICAgICAgICBpbnB1dFtpXSA9IDI1NTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKHBTcmNWYWx1ZXNbaV0gPCAwKSB7DQorICAgICAgICAgICAgICAgIGlucHV0W2ldID0gMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpbnB1dFtpXSA9IChpbnQpKHBTcmNWYWx1ZXNbaV0gKiAyNTUuMGYpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGNtc0RvVHJhbnNmb3JtKHAtPm1faFRyYW5zZm9ybSwgaW5wdXQsIG91dHB1dCwgMSk7DQorICAgIH0NCisgICAgc3dpdGNoKHAtPm1fbkRzdENvbXBvbmVudHMpIHsNCisgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICBwRGVzdFZhbHVlc1swXSA9IG91dHB1dFswXSAvIDI1NS4wZjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMzoNCisgICAgICAgICAgICBwRGVzdFZhbHVlc1swXSA9IG91dHB1dFsyXSAvIDI1NS4wZjsNCisgICAgICAgICAgICBwRGVzdFZhbHVlc1sxXSA9IG91dHB1dFsxXSAvIDI1NS4wZjsNCisgICAgICAgICAgICBwRGVzdFZhbHVlc1syXSA9IG91dHB1dFswXSAvIDI1NS4wZjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgNDoNCisgICAgICAgICAgICBwRGVzdFZhbHVlc1swXSA9IG91dHB1dFswXSAvIDI1NS4wZjsNCisgICAgICAgICAgICBwRGVzdFZhbHVlc1sxXSA9IG91dHB1dFsxXSAvIDI1NS4wZjsNCisgICAgICAgICAgICBwRGVzdFZhbHVlc1syXSA9IG91dHB1dFsyXSAvIDI1NS4wZjsNCisgICAgICAgICAgICBwRGVzdFZhbHVlc1szXSA9IG91dHB1dFszXSAvIDI1NS4wZjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KK30NCit2b2lkIEljY0xpYl9UcmFuc2xhdGVJbWFnZSh2b2lkKiBwVHJhbnNmb3JtLCB1bnNpZ25lZCBjaGFyKiBwRGVzdCwgY29uc3QgdW5zaWduZWQgY2hhciogcFNyYywgaW50IHBpeGVscykNCit7DQorICAgIGNtc0RvVHJhbnNmb3JtKCgoQ0xjbXNDbW0qKXBUcmFuc2Zvcm0pLT5tX2hUcmFuc2Zvcm0sICh2b2lkKilwU3JjLCBwRGVzdCwgcGl4ZWxzKTsNCit9DQorRlhfTFBWT0lEIENyZWF0ZVByb2ZpbGVfR3JheShkb3VibGUgZ2FtbWEpDQorew0KKyAgICBjbXNDSUV4eVkqIEQ1MCA9IChjbXNDSUV4eVkqKWNtc0Q1MF94eVkoKTsNCisgICAgaWYgKCFjbXNXaGl0ZVBvaW50RnJvbVRlbXAoRDUwLCA2NTA0KSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgY21zVG9uZUN1cnZlKiBjdXJ2ZSA9IGNtc0J1aWxkR2FtbWEoTlVMTCwgZ2FtbWEpOw0KKyAgICBpZiAoY3VydmUgPT0gTlVMTCkJew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhfTFBWT0lEIHByb2ZpbGUgPSBjbXNDcmVhdGVHcmF5UHJvZmlsZShENTAsIGN1cnZlKTsNCisgICAgY21zRnJlZVRvbmVDdXJ2ZShjdXJ2ZSk7DQorICAgIHJldHVybiBwcm9maWxlOw0KK30NCitJQ29kZWNfSWNjTW9kdWxlOjpJY2NDUyBHZXRQcm9maWxlQ1NGcm9tSGFuZGxlKEZYX0xQVk9JRCBwUHJvZmlsZSkNCit7DQorICAgIGlmIChwUHJvZmlsZSA9PSBOVUxMKQl7DQorICAgICAgICByZXR1cm4gSUNvZGVjX0ljY01vZHVsZTo6SWNjQ1NfVW5rbm93bjsNCisgICAgfQ0KKyAgICBzd2l0Y2ggKGNtc0dldENvbG9yU3BhY2UocFByb2ZpbGUpKSB7DQorICAgICAgICBjYXNlIGNtc1NpZ1hZWkRhdGE6DQorICAgICAgICAgICAgcmV0dXJuIElDb2RlY19JY2NNb2R1bGU6OkljY0NTX1hZWjsNCisgICAgICAgIGNhc2UgY21zU2lnTGFiRGF0YToNCisgICAgICAgICAgICByZXR1cm4gSUNvZGVjX0ljY01vZHVsZTo6SWNjQ1NfTGFiOw0KKyAgICAgICAgY2FzZSBjbXNTaWdMdXZEYXRhOg0KKyAgICAgICAgICAgIHJldHVybiBJQ29kZWNfSWNjTW9kdWxlOjpJY2NDU19MdXY7DQorICAgICAgICBjYXNlIGNtc1NpZ1lDYkNyRGF0YToNCisgICAgICAgICAgICByZXR1cm4gSUNvZGVjX0ljY01vZHVsZTo6SWNjQ1NfWUNiQ3I7DQorICAgICAgICBjYXNlIGNtc1NpZ1l4eURhdGE6DQorICAgICAgICAgICAgcmV0dXJuIElDb2RlY19JY2NNb2R1bGU6OkljY0NTX1l4eTsNCisgICAgICAgIGNhc2UgY21zU2lnUmdiRGF0YToNCisgICAgICAgICAgICByZXR1cm4gSUNvZGVjX0ljY01vZHVsZTo6SWNjQ1NfUmdiOw0KKyAgICAgICAgY2FzZSBjbXNTaWdHcmF5RGF0YToNCisgICAgICAgICAgICByZXR1cm4gSUNvZGVjX0ljY01vZHVsZTo6SWNjQ1NfR3JheTsNCisgICAgICAgIGNhc2UgY21zU2lnSHN2RGF0YToNCisgICAgICAgICAgICByZXR1cm4gSUNvZGVjX0ljY01vZHVsZTo6SWNjQ1NfSHN2Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdIbHNEYXRhOg0KKyAgICAgICAgICAgIHJldHVybiBJQ29kZWNfSWNjTW9kdWxlOjpJY2NDU19IbHM7DQorICAgICAgICBjYXNlIGNtc1NpZ0NteWtEYXRhOg0KKyAgICAgICAgICAgIHJldHVybiBJQ29kZWNfSWNjTW9kdWxlOjpJY2NDU19DbXlrOw0KKyAgICAgICAgY2FzZSBjbXNTaWdDbXlEYXRhOg0KKyAgICAgICAgICAgIHJldHVybiBJQ29kZWNfSWNjTW9kdWxlOjpJY2NDU19DbXk7DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIHJldHVybiBJQ29kZWNfSWNjTW9kdWxlOjpJY2NDU19Vbmtub3duOw0KKyAgICB9DQorfQ0KK0lDb2RlY19JY2NNb2R1bGU6OkljY0NTIENDb2RlY19JY2NNb2R1bGU6OkdldFByb2ZpbGVDUyhGWF9MUENCWVRFIHBQcm9maWxlRGF0YSwgdW5zaWduZWQgaW50IGR3UHJvZmlsZVNpemUpDQorew0KKyAgICBJQ29kZWNfSWNjTW9kdWxlOjpJY2NDUyBjczsNCisgICAgY21zSFBST0ZJTEUgaFByb2ZpbGUgPSBjbXNPcGVuUHJvZmlsZUZyb21NZW0oKHZvaWQqKXBQcm9maWxlRGF0YSwgZHdQcm9maWxlU2l6ZSk7DQorICAgIGlmIChoUHJvZmlsZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gSWNjQ1NfVW5rbm93bjsNCisgICAgfQ0KKyAgICBjcyA9IEdldFByb2ZpbGVDU0Zyb21IYW5kbGUoaFByb2ZpbGUpOw0KKyAgICBpZiAoaFByb2ZpbGUpCXsNCisgICAgICAgIGNtc0Nsb3NlUHJvZmlsZShoUHJvZmlsZSk7DQorICAgIH0NCisgICAgcmV0dXJuIGNzOw0KK30NCitJQ29kZWNfSWNjTW9kdWxlOjpJY2NDUyBDQ29kZWNfSWNjTW9kdWxlOjpHZXRQcm9maWxlQ1MoSUZYX0ZpbGVSZWFkKiBwRmlsZSkNCit7DQorICAgIGlmIChwRmlsZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gSWNjQ1NfVW5rbm93bjsNCisgICAgfQ0KKyAgICBJQ29kZWNfSWNjTW9kdWxlOjpJY2NDUyBjczsNCisgICAgRlhfRFdPUkQgZHdTaXplID0gKEZYX0RXT1JEKXBGaWxlLT5HZXRTaXplKCk7DQorICAgIEZYX0xQQllURSBwQnVmID0gRlhfQWxsb2MoRlhfQllURSwgZHdTaXplKTsNCisgICAgaWYgKHBCdWYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEljY0NTX1Vua25vd247DQorICAgIH0NCisgICAgcEZpbGUtPlJlYWRCbG9jayhwQnVmLCAwLCBkd1NpemUpOw0KKyAgICBjcyA9IEdldFByb2ZpbGVDUyhwQnVmLCBkd1NpemUpOw0KKyAgICBGWF9GcmVlKHBCdWYpOw0KKyAgICByZXR1cm4gY3M7DQorfQ0KK0ZYX0RXT1JEIFRyYW5zZmVyUHJvZmlsZVR5cGUoRlhfTFBWT0lEIHBQcm9maWxlLCBGWF9EV09SRCBkd0Zvcm1hdCkNCit7DQorICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgY3MgPSBjbXNHZXRDb2xvclNwYWNlKHBQcm9maWxlKTsNCisgICAgc3dpdGNoIChjcykgew0KKyAgICAgICAgY2FzZSBjbXNTaWdYWVpEYXRhOg0KKyAgICAgICAgICAgIHJldHVybiBUWVBFX1hZWl8xNjsNCisgICAgICAgIGNhc2UgY21zU2lnTGFiRGF0YToNCisgICAgICAgICAgICByZXR1cm4gVFlQRV9MYWJfREJMOw0KKyAgICAgICAgY2FzZSBjbXNTaWdMdXZEYXRhOg0KKyAgICAgICAgICAgIHJldHVybiBUWVBFX1lVVl84Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdZQ2JDckRhdGE6DQorICAgICAgICAgICAgcmV0dXJuIFRZUEVfWUNiQ3JfODsNCisgICAgICAgIGNhc2UgY21zU2lnWXh5RGF0YToNCisgICAgICAgICAgICByZXR1cm4gVFlQRV9ZeHlfMTY7DQorICAgICAgICBjYXNlIGNtc1NpZ1JnYkRhdGE6DQorICAgICAgICAgICAgcmV0dXJuIFRfRE9TV0FQKGR3Rm9ybWF0KSA/IFRZUEVfUkdCXzggOiBUWVBFX0JHUl84Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdHcmF5RGF0YToNCisgICAgICAgICAgICByZXR1cm4gVFlQRV9HUkFZXzg7DQorICAgICAgICBjYXNlIGNtc1NpZ0hzdkRhdGE6DQorICAgICAgICAgICAgcmV0dXJuIFRZUEVfSFNWXzg7DQorICAgICAgICBjYXNlIGNtc1NpZ0hsc0RhdGE6DQorICAgICAgICAgICAgcmV0dXJuIFRZUEVfSExTXzg7DQorICAgICAgICBjYXNlIGNtc1NpZ0NteWtEYXRhOg0KKyAgICAgICAgICAgIHJldHVybiBUX0RPU1dBUChkd0Zvcm1hdCkgPyBUWVBFX0tZTUNfOCA6IFRZUEVfQ01ZS184Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdDbXlEYXRhOg0KKyAgICAgICAgICAgIHJldHVybiBUWVBFX0NNWV84Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdNQ0g1RGF0YToNCisgICAgICAgICAgICByZXR1cm4gVF9ET1NXQVAoZHdGb3JtYXQpID8gVFlQRV9LWU1DNV84IDogVFlQRV9DTVlLNV84Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdNQ0g2RGF0YToNCisgICAgICAgICAgICByZXR1cm4gVFlQRV9DTVlLNl84Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdNQ0g3RGF0YToNCisgICAgICAgICAgICByZXR1cm4gVF9ET1NXQVAoZHdGb3JtYXQpID8gVFlQRV9LWU1DN184IDogVFlQRV9DTVlLN184Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdNQ0g4RGF0YToNCisgICAgICAgICAgICByZXR1cm4gVF9ET1NXQVAoZHdGb3JtYXQpID8gVFlQRV9LWU1DOF84IDogVFlQRV9DTVlLOF84Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdNQ0g5RGF0YToNCisgICAgICAgICAgICByZXR1cm4gVF9ET1NXQVAoZHdGb3JtYXQpID8gVFlQRV9LWU1DOV84IDogVFlQRV9DTVlLOV84Ow0KKyAgICAgICAgY2FzZSBjbXNTaWdNQ0hBRGF0YToNCisgICAgICAgICAgICByZXR1cm4gVF9ET1NXQVAoZHdGb3JtYXQpID8gVFlQRV9LWU1DMTBfOCA6IFRZUEVfQ01ZSzEwXzg7DQorICAgICAgICBjYXNlIGNtc1NpZ01DSEJEYXRhOg0KKyAgICAgICAgICAgIHJldHVybiBUX0RPU1dBUChkd0Zvcm1hdCkgPyBUWVBFX0tZTUMxMV84IDogVFlQRV9DTVlLMTFfODsNCisgICAgICAgIGNhc2UgY21zU2lnTUNIQ0RhdGE6DQorICAgICAgICAgICAgcmV0dXJuIFRfRE9TV0FQKGR3Rm9ybWF0KSA/IFRZUEVfS1lNQzEyXzggOiBUWVBFX0NNWUsxMl84Ow0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KK30NCitjbGFzcyBDRlhfSWNjUHJvZmlsZUNhY2hlIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhfSWNjUHJvZmlsZUNhY2hlKCk7DQorICAgIH5DRlhfSWNjUHJvZmlsZUNhY2hlKCk7DQorICAgIEZYX0xQVk9JRCBtX3BQcm9maWxlOw0KKyAgICBGWF9EV09SRAltX2R3UmF0ZTsNCitwcm90ZWN0ZWQ6DQorICAgIHZvaWQJUHVyZ2UoKTsNCit9Ow0KK0NGWF9JY2NQcm9maWxlQ2FjaGU6OkNGWF9JY2NQcm9maWxlQ2FjaGUoKQ0KK3sNCisgICAgbV9wUHJvZmlsZSA9IE5VTEw7DQorICAgIG1fZHdSYXRlID0gMTsNCit9DQorQ0ZYX0ljY1Byb2ZpbGVDYWNoZTo6fkNGWF9JY2NQcm9maWxlQ2FjaGUoKQ0KK3sNCisgICAgaWYgKG1fcFByb2ZpbGUpIHsNCisgICAgICAgIGNtc0Nsb3NlUHJvZmlsZShtX3BQcm9maWxlKTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9JY2NQcm9maWxlQ2FjaGU6OlB1cmdlKCkNCit7DQorfQ0KK2NsYXNzIENGWF9JY2NUcmFuc2Zvcm1DYWNoZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ0ZYX0ljY1RyYW5zZm9ybUNhY2hlKENMY21zQ21tKiBwQ21tID0gTlVMTCk7DQorICAgIH5DRlhfSWNjVHJhbnNmb3JtQ2FjaGUoKTsNCisgICAgRlhfTFBWT0lECW1fcEljY1RyYW5zZm9ybTsNCisgICAgRlhfRFdPUkQJCW1fZHdSYXRlOw0KKyAgICBDTGNtc0NtbSoJCW1fcENtbTsNCitwcm90ZWN0ZWQ6DQorICAgIHZvaWQJCQlQdXJnZSgpOw0KK307DQorQ0ZYX0ljY1RyYW5zZm9ybUNhY2hlOjpDRlhfSWNjVHJhbnNmb3JtQ2FjaGUoQ0xjbXNDbW0qIHBDbW0pDQorew0KKyAgICBtX3BJY2NUcmFuc2Zvcm0gPSBOVUxMOw0KKyAgICBtX2R3UmF0ZSA9IDE7DQorICAgIG1fcENtbSA9IHBDbW07DQorfQ0KK0NGWF9JY2NUcmFuc2Zvcm1DYWNoZTo6fkNGWF9JY2NUcmFuc2Zvcm1DYWNoZSgpDQorew0KKyAgICBpZiAobV9wSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICBjbXNEZWxldGVUcmFuc2Zvcm0obV9wSWNjVHJhbnNmb3JtKTsNCisgICAgfQ0KKyAgICBpZiAobV9wQ21tKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENtbSk7DQorICAgIH0NCit9DQordm9pZCBDRlhfSWNjVHJhbnNmb3JtQ2FjaGU6OlB1cmdlKCkNCit7DQorfQ0KK2NsYXNzIENGWF9CeXRlU3RyaW5nS2V5IDogcHVibGljIENGWF9CaW5hcnlCdWYNCit7DQorcHVibGljOg0KKyAgICBDRlhfQnl0ZVN0cmluZ0tleSgpIDogQ0ZYX0JpbmFyeUJ1ZigpIHt9DQorICAgIENGWF9CeXRlU3RyaW5nS2V5JgkJb3BlcmF0b3IgPDwgKEZYX0RXT1JEIGkpOw0KK307DQorQ0ZYX0J5dGVTdHJpbmdLZXkmIENGWF9CeXRlU3RyaW5nS2V5OjpvcGVyYXRvciA8PCAoRlhfRFdPUkQgaSkNCit7DQorICAgIEFwcGVuZEJsb2NrKCZpLCBzaXplb2YoRlhfRFdPUkQpKTsNCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitGWF9MUFZPSUQgQ0NvZGVjX0ljY01vZHVsZTo6Q3JlYXRlUHJvZmlsZShJQ29kZWNfSWNjTW9kdWxlOjpJY2NQYXJhbSogcEljY1BhcmFtLCBJY2NfQ0xBU1MgaWMsIENGWF9CaW5hcnlCdWYqIHBUcmFuc2Zvcm1LZXkpDQorew0KKyAgICBDRlhfSWNjUHJvZmlsZUNhY2hlKiBwQ2FjaGUgPSBOVUxMOw0KKyAgICBDRlhfQnl0ZVN0cmluZ0tleSBrZXk7DQorICAgIENGWF9CeXRlU3RyaW5nIHRleHQ7DQorICAgIGtleSA8PCBwSWNjUGFyYW0tPkNvbG9yU3BhY2UgPDwgKHBJY2NQYXJhbS0+ZHdQcm9maWxlVHlwZSB8IGljIDw8IDgpOw0KKyAgICBGWF9CWVRFIElEWzE2XTsNCisgICAgc3dpdGNoIChwSWNjUGFyYW0tPmR3UHJvZmlsZVR5cGUpIHsNCisgICAgICAgIGNhc2UgSWNjX1BBUkFNVFlQRV9OT05FOg0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgY2FzZSBJY2NfUEFSQU1UWVBFX0JVRkZFUjoNCisgICAgICAgICAgICBNRDVDb21wdXRlSUQocEljY1BhcmFtLT5wUHJvZmlsZURhdGEsIHBJY2NQYXJhbS0+ZHdQcm9maWxlU2l6ZSwgSUQpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBJY2NfUEFSQU1UWVBFX1BBUkFNOg0KKyAgICAgICAgICAgIEZYU1lTX21lbXNldDMyKElELCAwLCAxNik7DQorICAgICAgICAgICAgc3dpdGNoIChwSWNjUGFyYW0tPkNvbG9yU3BhY2UpIHsNCisgICAgICAgICAgICAgICAgY2FzZSBJY2NDU19HcmF5Og0KKyAgICAgICAgICAgICAgICAgICAgdGV4dC5Gb3JtYXQoIiVsZiIsIHBJY2NQYXJhbS0+R2FtbWEpOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgICAgICA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIE1ENUNvbXB1dGVJRCh0ZXh0LkdldEJ1ZmZlcigwKSwgdGV4dC5HZXRMZW5ndGgoKSwgSUQpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICA7DQorICAgIH0NCisgICAga2V5LkFwcGVuZEJsb2NrKElELCAxNik7DQorICAgIENGWF9CeXRlU3RyaW5nIFByb2ZpbGVLZXkoa2V5LkdldEJ1ZmZlcigpLCBrZXkuR2V0U2l6ZSgpKTsNCisgICAgQVNTRVJUKHBUcmFuc2Zvcm1LZXkpOw0KKyAgICBwVHJhbnNmb3JtS2V5LT5BcHBlbmRCbG9jayhQcm9maWxlS2V5LkdldEJ1ZmZlcigwKSwgUHJvZmlsZUtleS5HZXRMZW5ndGgoKSk7DQorICAgIGlmICghbV9NYXBQcm9maWxlLkxvb2t1cChQcm9maWxlS2V5LCAoRlhfTFBWT0lEJilwQ2FjaGUpKSB7DQorICAgICAgICBwQ2FjaGUgPSBGWF9ORVcgQ0ZYX0ljY1Byb2ZpbGVDYWNoZTsNCisgICAgICAgIGlmIChwQ2FjaGUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3dpdGNoIChwSWNjUGFyYW0tPmR3UHJvZmlsZVR5cGUpIHsNCisgICAgICAgICAgICBjYXNlIEljY19QQVJBTVRZUEVfQlVGRkVSOg0KKyAgICAgICAgICAgICAgICBwQ2FjaGUtPm1fcFByb2ZpbGUgPSBjbXNPcGVuUHJvZmlsZUZyb21NZW0ocEljY1BhcmFtLT5wUHJvZmlsZURhdGEsIHBJY2NQYXJhbS0+ZHdQcm9maWxlU2l6ZSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgSWNjX1BBUkFNVFlQRV9QQVJBTToNCisgICAgICAgICAgICAgICAgc3dpdGNoIChwSWNjUGFyYW0tPkNvbG9yU3BhY2UpIHsNCisgICAgICAgICAgICAgICAgICAgIGNhc2UgSWNjQ1NfUmdiOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBDYWNoZS0+bV9wUHJvZmlsZSA9IGNtc0NyZWF0ZV9zUkdCUHJvZmlsZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJY2NDU19HcmF5Og0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBDYWNoZS0+bV9wUHJvZmlsZSA9IENyZWF0ZVByb2ZpbGVfR3JheShwSWNjUGFyYW0tPkdhbW1hKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBtX01hcFByb2ZpbGUuU2V0QXQoUHJvZmlsZUtleSwgcENhY2hlKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBDYWNoZS0+bV9kd1JhdGUrKzsNCisgICAgfQ0KKyAgICByZXR1cm4gcENhY2hlLT5tX3BQcm9maWxlOw0KK30NCitGWF9MUFZPSUQgQ0NvZGVjX0ljY01vZHVsZTo6Q3JlYXRlVHJhbnNmb3JtKElDb2RlY19JY2NNb2R1bGU6OkljY1BhcmFtKiBwSW5wdXRQYXJhbSwNCisgICAgICAgIElDb2RlY19JY2NNb2R1bGU6OkljY1BhcmFtKiBwT3V0cHV0UGFyYW0sDQorICAgICAgICBJQ29kZWNfSWNjTW9kdWxlOjpJY2NQYXJhbSogcFByb29mUGFyYW0sDQorICAgICAgICBGWF9EV09SRCBkd0ludGVudCwgRlhfRFdPUkQgZHdGbGFnLCBGWF9EV09SRCBkd1ByZkludGVudCwgRlhfRFdPUkQgZHdQcmZGbGFnKQ0KK3sNCisgICAgQ0xjbXNDbW0qIHBDbW0gPSBOVUxMOw0KKyAgICBBU1NFUlQocElucHV0UGFyYW0gJiYgcE91dHB1dFBhcmFtKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmdLZXkga2V5Ow0KKyAgICBGWF9MUFZPSUQgcElucHV0UHJvZmlsZSA9IENyZWF0ZVByb2ZpbGUocElucHV0UGFyYW0sIEljY19DTEFTU19JTlBVVCwgJmtleSk7DQorICAgIGlmIChwSW5wdXRQcm9maWxlID09IE5VTEwpCXsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0xQVk9JRCBwT3V0cHV0UHJvZmlsZSA9IENyZWF0ZVByb2ZpbGUocE91dHB1dFBhcmFtLCBJY2NfQ0xBU1NfT1VUUFVULCAma2V5KTsNCisgICAgaWYgKHBPdXRwdXRQcm9maWxlID09IE5VTEwpCXsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3SW5wdXRQcm9maWxlVHlwZSA9IFRyYW5zZmVyUHJvZmlsZVR5cGUocElucHV0UHJvZmlsZSwgcElucHV0UGFyYW0tPmR3Rm9ybWF0KTsNCisgICAgRlhfRFdPUkQgZHdPdXRwdXRQcm9maWxlVHlwZSA9IFRyYW5zZmVyUHJvZmlsZVR5cGUocE91dHB1dFByb2ZpbGUsIHBPdXRwdXRQYXJhbS0+ZHdGb3JtYXQpOw0KKyAgICBpZiAoZHdJbnB1dFByb2ZpbGVUeXBlID09IDAgfHwgZHdPdXRwdXRQcm9maWxlVHlwZSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9MUFZPSUQgcFByb29mUHJvZmlsZSA9IE5VTEw7DQorICAgIGlmIChwUHJvb2ZQYXJhbSkgew0KKyAgICAgICAgcFByb29mUHJvZmlsZSA9IENyZWF0ZVByb2ZpbGUocFByb29mUGFyYW0sIEljY19DTEFTU19QUk9PRiwgJmtleSk7DQorICAgIH0NCisgICAga2V5IDw8IGR3SW5wdXRQcm9maWxlVHlwZSA8PCBkd091dHB1dFByb2ZpbGVUeXBlIDw8IGR3SW50ZW50IDw8IGR3RmxhZyA8PCAocFByb29mUHJvZmlsZSAhPSBOVUxMKSA8PCBkd1ByZkludGVudCA8PCBkd1ByZkZsYWc7DQorICAgIENGWF9CeXRlU3RyaW5nQyBUcmFuc2Zvcm1LZXkoa2V5LkdldEJ1ZmZlcigpLCBrZXkuR2V0U2l6ZSgpKTsNCisgICAgQ0ZYX0ljY1RyYW5zZm9ybUNhY2hlKiBwVHJhbnNmb3JtQ2FjaGU7DQorICAgIGlmICghbV9NYXBUcmFuZm9ybS5Mb29rdXAoVHJhbnNmb3JtS2V5LCAoRlhfTFBWT0lEJilwVHJhbnNmb3JtQ2FjaGUpKSB7DQorICAgICAgICBwQ21tID0gRlhfQWxsb2MoQ0xjbXNDbW0sIDEpOw0KKyAgICAgICAgaWYgKHBDbW0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcENtbS0+bV9uU3JjQ29tcG9uZW50cyA9IFRfQ0hBTk5FTFMoZHdJbnB1dFByb2ZpbGVUeXBlKTsNCisgICAgICAgIHBDbW0tPm1fbkRzdENvbXBvbmVudHMgPSBUX0NIQU5ORUxTKGR3T3V0cHV0UHJvZmlsZVR5cGUpOw0KKyAgICAgICAgcENtbS0+bV9iTGFiID0gVF9DT0xPUlNQQUNFKHBJbnB1dFBhcmFtLT5kd0Zvcm1hdCkgPT0gUFRfTGFiOw0KKyAgICAgICAgcFRyYW5zZm9ybUNhY2hlID0gRlhfTkVXIENGWF9JY2NUcmFuc2Zvcm1DYWNoZShwQ21tKTsNCisgICAgICAgIGlmIChwVHJhbnNmb3JtQ2FjaGUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIEZYX0ZyZWUocENtbSk7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFByb29mUHJvZmlsZSkgew0KKyAgICAgICAgICAgIHBUcmFuc2Zvcm1DYWNoZS0+bV9wSWNjVHJhbnNmb3JtID0gY21zQ3JlYXRlUHJvb2ZpbmdUcmFuc2Zvcm0ocElucHV0UHJvZmlsZSwgZHdJbnB1dFByb2ZpbGVUeXBlLCBwT3V0cHV0UHJvZmlsZSwgZHdPdXRwdXRQcm9maWxlVHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBQcm9vZlByb2ZpbGUsIGR3SW50ZW50LCBkd1ByZkludGVudCwgZHdQcmZGbGFnKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcFRyYW5zZm9ybUNhY2hlLT5tX3BJY2NUcmFuc2Zvcm0gPSBjbXNDcmVhdGVUcmFuc2Zvcm0ocElucHV0UHJvZmlsZSwgZHdJbnB1dFByb2ZpbGVUeXBlLCBwT3V0cHV0UHJvZmlsZSwgZHdPdXRwdXRQcm9maWxlVHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3SW50ZW50LCBkd0ZsYWcpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcENtbS0+bV9oVHJhbnNmb3JtID0gcFRyYW5zZm9ybUNhY2hlLT5tX3BJY2NUcmFuc2Zvcm07DQorICAgICAgICBtX01hcFRyYW5mb3JtLlNldEF0KFRyYW5zZm9ybUtleSwgcFRyYW5zZm9ybUNhY2hlKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBUcmFuc2Zvcm1DYWNoZS0+bV9kd1JhdGUrKzsNCisgICAgfQ0KKyAgICByZXR1cm4gcFRyYW5zZm9ybUNhY2hlLT5tX3BDbW07DQorfQ0KK0NDb2RlY19JY2NNb2R1bGU6On5DQ29kZWNfSWNjTW9kdWxlKCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fTWFwUHJvZmlsZS5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIENGWF9CeXRlU3RyaW5nIGtleTsNCisgICAgQ0ZYX0ljY1Byb2ZpbGVDYWNoZSogcFByb2ZpbGVDYWNoZTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgbV9NYXBQcm9maWxlLkdldE5leHRBc3NvYyhwb3MsIGtleSwgKEZYX0xQVk9JRCYpcFByb2ZpbGVDYWNoZSk7DQorICAgICAgICBpZiAocFByb2ZpbGVDYWNoZSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwUHJvZmlsZUNhY2hlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHBvcyA9IG1fTWFwVHJhbmZvcm0uR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICBDRlhfSWNjVHJhbnNmb3JtQ2FjaGUqIHBUcmFuc2Zvcm1DYWNoZTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgbV9NYXBUcmFuZm9ybS5HZXROZXh0QXNzb2MocG9zLCBrZXksIChGWF9MUFZPSUQmKXBUcmFuc2Zvcm1DYWNoZSk7DQorICAgICAgICBpZiAocFRyYW5zZm9ybUNhY2hlKSB7DQorICAgICAgICAgICAgZGVsZXRlIHBUcmFuc2Zvcm1DYWNoZTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCit2b2lkKiBDQ29kZWNfSWNjTW9kdWxlOjpDcmVhdGVUcmFuc2Zvcm1fc1JHQihGWF9MUENCWVRFIHBQcm9maWxlRGF0YSwgdW5zaWduZWQgaW50IGR3UHJvZmlsZVNpemUsIGludCBuQ29tcG9uZW50cywgaW50IGludGVudCwgRlhfRFdPUkQgZHdTcmNGb3JtYXQpDQorew0KKyAgICByZXR1cm4gSWNjTGliX0NyZWF0ZVRyYW5zZm9ybV9zUkdCKHBQcm9maWxlRGF0YSwgZHdQcm9maWxlU2l6ZSwgbkNvbXBvbmVudHMsIGludGVudCwgZHdTcmNGb3JtYXQpOw0KK30NCit2b2lkKiBDQ29kZWNfSWNjTW9kdWxlOjpDcmVhdGVUcmFuc2Zvcm1fQ01ZSyhGWF9MUENCWVRFIHBTcmNQcm9maWxlRGF0YSwgdW5zaWduZWQgaW50IGR3U3JjUHJvZmlsZVNpemUsIGludCBuU3JjQ29tcG9uZW50cywNCisgICAgICAgIEZYX0xQQ0JZVEUgcERzdFByb2ZpbGVEYXRhLCB1bnNpZ25lZCBpbnQgZHdEc3RQcm9maWxlU2l6ZSwgaW50IGludGVudCwNCisgICAgICAgIEZYX0RXT1JEIGR3U3JjRm9ybWF0ICwgRlhfRFdPUkQgZHdEc3RGb3JtYXQpDQorew0KKyAgICByZXR1cm4gSWNjTGliX0NyZWF0ZVRyYW5zZm9ybShwU3JjUHJvZmlsZURhdGEsIGR3U3JjUHJvZmlsZVNpemUsIG5TcmNDb21wb25lbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwRHN0UHJvZmlsZURhdGEsIGR3RHN0UHJvZmlsZVNpemUsIDQsIGludGVudCwgZHdTcmNGb3JtYXQsIGR3RHN0Rm9ybWF0KTsNCit9DQordm9pZCBDQ29kZWNfSWNjTW9kdWxlOjpEZXN0cm95VHJhbnNmb3JtKHZvaWQqIHBUcmFuc2Zvcm0pDQorew0KKyAgICBJY2NMaWJfRGVzdHJveVRyYW5zZm9ybShwVHJhbnNmb3JtKTsNCit9DQordm9pZCBDQ29kZWNfSWNjTW9kdWxlOjpUcmFuc2xhdGUodm9pZCogcFRyYW5zZm9ybSwgRlhfRkxPQVQqIHBTcmNWYWx1ZXMsIEZYX0ZMT0FUKiBwRGVzdFZhbHVlcykNCit7DQorICAgIEljY0xpYl9UcmFuc2xhdGUocFRyYW5zZm9ybSwgcFNyY1ZhbHVlcywgcERlc3RWYWx1ZXMpOw0KK30NCit2b2lkIENDb2RlY19JY2NNb2R1bGU6OlRyYW5zbGF0ZVNjYW5saW5lKHZvaWQqIHBUcmFuc2Zvcm0sIEZYX0xQQllURSBwRGVzdCwgRlhfTFBDQllURSBwU3JjLCBpbnQgcGl4ZWxzKQ0KK3sNCisgICAgSWNjTGliX1RyYW5zbGF0ZUltYWdlKHBUcmFuc2Zvcm0sIHBEZXN0LCBwU3JjLCBwaXhlbHMpOw0KK30NCitjb25zdCBGWF9CWVRFIGdfQ01ZS1NhbXBsZXNbODEgKiA4MSAqIDNdID0gew0KKyAgICAyNTUsIDI1NSwgMjU1LCAyMjUsIDIyNiwgMjI4LCAxOTksIDIwMCwgMjAyLCAxNzMsIDE3NCwgMTc4LCAxNDcsIDE0OSwgMTUyLCAxMjMsIDEyNSwgMTI4LCAgOTksIDk5LCAxMDIsICA2OSwgNzAsIDcxLCAgMzQsIDMwLCAzMSwNCisgICAgMjU1LCAyNTMsIDIyOSwgMjI2LCAyMjQsIDIwMywgMjAwLCAxOTksIDE4MiwgMTczLCAxNzMsIDE1OCwgMTQ5LCAxNDgsIDEzNSwgMTI1LCAxMjQsIDExMywgIDk5LCA5OSwgOTAsICA3MCwgNjksIDYzLCAgMzMsIDI5LCAyNCwNCisgICAgMjU1LCAyNTEsIDIwNCwgMjI4LCAyMjMsIDE4MiwgMjAxLCAxOTgsIDE2MywgMTc0LCAxNzIsIDE0MiwgMTUwLCAxNDcsIDEyMiwgMTI1LCAxMjMsIDEwMSwgIDk5LCA5OCwgODAsICA3MCwgNjgsIDU0LCAgMzIsIDI4LCAxNiwNCisgICAgMjU1LCAyNDksIDE3OSwgMjMwLCAyMjIsIDE2MCwgMjAzLCAxOTcsIDE0NCwgMTc0LCAxNzAsIDEyNCwgMTUwLCAxNDUsIDEwNSwgMTI1LCAxMjIsIDg4LCAgOTksIDk3LCA2OSwgIDcwLCA2OCwgNDYsICAzMSwgMjgsICA2LA0KKyAgICAyNTUsIDI0NywgMTU0LCAyMjksIDIyMCwgMTM4LCAyMDMsIDE5NSwgMTIyLCAxNzYsIDE2OSwgMTA3LCAxNTAsIDE0NSwgOTEsIDEyNSwgMTIxLCA3NCwgMTAwLCA5NiwgNTcsICA3MCwgNjcsIDM1LCAgMjksIDI2LCAgMCwNCisgICAgMjU1LCAyNDYsIDEyOCwgMjMxLCAyMTcsIDExNCwgMjA1LCAxOTQsIDEwMSwgMTc2LCAxNjcsIDg4LCAxNTAsIDE0NCwgNzUsIDEyNSwgMTIwLCA2MCwgMTAwLCA5NiwgNDQsICA3MCwgNjYsIDI0LCAgMjgsIDI2LCAgMCwNCisgICAgMjU1LCAyNDQsIDk2LCAyMzEsIDIxNywgODcsIDIwMywgMTkyLCA3OCwgMTc1LCAxNjcsIDY2LCAxNTAsIDE0MywgNTYsIDEyNSwgMTE5LCA0MywgMTAwLCA5NSwgMjksICA2OSwgNjYsICA3LCAgMjYsIDI2LCAgMCwNCisgICAgMjU1LCAyNDMsIDUxLCAyMzIsIDIxNSwgNTEsIDIwNCwgMTkxLCA0MywgMTc2LCAxNjUsIDM4LCAxNTAsIDE0MiwgMjgsIDEyNSwgMTE4LCAxNywgIDk5LCA5NCwgIDAsICA2OCwgNjUsICAwLCAgMjQsIDI1LCAgMCwNCisgICAgMjU1LCAyNDEsICAwLCAyMzEsIDIxNSwgIDAsIDIwMywgMTkwLCAgMCwgMTc2LCAxNjQsICAwLCAxNTAsIDE0MSwgIDAsIDEyNiwgMTE3LCAgMCwgIDk5LCA5MywgIDAsICA2OCwgNjUsICAwLCAgMjQsIDI1LCAgMCwNCisgICAgMjUyLCAyMjgsIDIzOCwgMjIyLCAyMDEsIDIxMSwgMTk3LCAxODAsIDE5MCwgMTcxLCAxNTYsIDE2NiwgMTQ3LCAxMzMsIDE0MywgMTIzLCAxMTEsIDExOSwgIDk5LCA4OCwgOTQsICA3MSwgNjEsIDY2LCAgMzQsIDIyLCAyNiwNCisgICAgMjU0LCAyMjYsIDIxMywgMjI0LCAyMDEsIDE5MSwgMTk5LCAxNzksIDE3MSwgMTcyLCAxNTUsIDE0OCwgMTQ3LCAxMzMsIDEyOCwgMTIzLCAxMTAsIDEwNiwgIDk4LCA4NywgODMsICA3MCwgNTksIDU3LCAgMzMsIDIxLCAxOCwNCisgICAgMjU0LCAyMjQsIDE5MSwgMjI0LCAxOTksIDE3MiwgMjAwLCAxNzcsIDE1MywgMTczLCAxNTQsIDEzMywgMTQ3LCAxMzIsIDExNSwgMTIzLCAxMDksIDk0LCAgOTgsIDg2LCA3NCwgIDcwLCA1OSwgNDksICAzMiwgMjEsICA5LA0KKyAgICAyNTUsIDIyMiwgMTY4LCAyMjcsIDE5OCwgMTUwLCAyMDAsIDE3NSwgMTM1LCAxNzMsIDE1MywgMTE4LCAxNDgsIDEzMCwgOTksIDEyMywgMTA5LCA4MiwgIDk4LCA4NiwgNjQsICA2OSwgNTgsIDQwLCAgMzEsIDE5LCAgMCwNCisgICAgMjU1LCAyMjEsIDE0NSwgMjI3LCAxOTYsIDEyOSwgMjAxLCAxNzQsIDExNSwgMTczLCAxNTEsIDk5LCAxNDgsIDEyOSwgODUsIDEyNCwgMTA4LCA2OSwgIDk4LCA4NSwgNTIsICA2OSwgNTgsIDMwLCAgMzAsIDE5LCAgMCwNCisgICAgMjU1LCAyMTksIDEyMSwgMjI3LCAxOTUsIDEwOSwgMjAxLCAxNzQsIDk3LCAxNzQsIDE1MCwgODMsIDE0OCwgMTI5LCA3MCwgMTI0LCAxMDcsIDU1LCAgOTgsIDg0LCA0MCwgIDY5LCA1OCwgMTksICAyOCwgMTgsICAwLA0KKyAgICAyNTUsIDIxOCwgOTIsIDIyOSwgMTk0LCA4MiwgMjAyLCAxNzMsIDc1LCAxNzQsIDE1MCwgNjMsIDE0OSwgMTI4LCA1MSwgMTI0LCAxMDYsIDM5LCAgOTgsIDg0LCAyNCwgIDY4LCA1NywgIDMsICAyNiwgMTgsICAwLA0KKyAgICAyNTUsIDIxNywgNTQsIDIyOCwgMTkzLCA1MiwgMjAxLCAxNzIsIDQ2LCAxNzQsIDE0OCwgMzYsIDE0OCwgMTI3LCAyNywgMTIzLCAxMDUsIDE0LCAgOTgsIDgzLCAgMCwgIDY4LCA1NiwgIDAsICAyNSwgMTgsICAwLA0KKyAgICAyNTUsIDIxNiwgIDAsIDIyOSwgMTkyLCAgMiwgMjAyLCAxNzEsICA0LCAxNzMsIDE0OCwgIDAsIDE0OCwgMTI2LCAgMCwgMTI0LCAxMDUsICAwLCAgOTgsIDgzLCAgMCwgIDY4LCA1NiwgIDAsICAyNCwgMTcsICAwLA0KKyAgICAyNDksIDIwNCwgMjIzLCAyMTksIDE4MSwgMTk5LCAxOTUsIDE2MCwgMTc4LCAxNzAsIDE0MCwgMTU2LCAxNDYsIDExOSwgMTM0LCAxMjMsIDk5LCAxMTIsICA5OCwgNzcsIDg4LCAgNzAsIDUyLCA2MSwgIDM0LCAxMSwgMjAsDQorICAgIDI1MCwgMjAxLCAyMDAsIDIyMSwgMTgwLCAxNzgsIDE5NywgMTU5LCAxNjEsIDE3MSwgMTM5LCAxMzksIDE0NywgMTE5LCAxMjAsIDEyMywgOTgsIDk5LCAgOTgsIDc3LCA3OCwgIDY5LCA1MSwgNTIsICAzNCwgMTEsIDEwLA0KKyAgICAyNTIsIDIwMSwgMTgwLCAyMjMsIDE3OSwgMTYyLCAxOTcsIDE1OSwgMTQ0LCAxNzAsIDEzOCwgMTI1LCAxNDYsIDExNywgMTA3LCAxMjIsIDk3LCA4OSwgIDk4LCA3NiwgNjksICA2OSwgNTAsIDQ0LCAgMzIsIDExLCAgMiwNCisgICAgMjUyLCAxOTksIDE1OCwgMjIyLCAxNzcsIDE0MywgMTk5LCAxNTgsIDEyNywgMTcxLCAxMzcsIDExMCwgMTQ3LCAxMTcsIDkzLCAxMjIsIDk2LCA3NiwgIDk3LCA3NSwgNTgsICA2OSwgNTAsIDM2LCAgMzIsIDEwLCAgMCwNCisgICAgMjUzLCAxOTgsIDEzNywgMjIzLCAxNzcsIDEyMywgMTk4LCAxNTYsIDExMCwgMTcxLCAxMzYsIDk1LCAxNDYsIDExNiwgODAsIDEyMiwgOTYsIDY1LCAgOTcsIDc1LCA0NywgIDY5LCA1MCwgMjUsICAzMCwgMTAsICAwLA0KKyAgICAyNTQsIDE5NywgMTE1LCAyMjUsIDE3NSwgMTA0LCAxOTgsIDE1NiwgOTIsIDE3MiwgMTM1LCA3OSwgMTQ3LCAxMTUsIDY2LCAxMjMsIDk1LCA1MiwgIDk4LCA3NCwgMzcsICA2OSwgNDksIDE1LCAgMjksIDEwLCAgMCwNCisgICAgMjU0LCAxOTYsIDg5LCAyMjQsIDE3NSwgODAsIDE5OSwgMTU0LCA3MCwgMTcyLCAxMzQsIDU5LCAxNDYsIDExNCwgNDgsIDEyMiwgOTUsIDM2LCAgOTcsIDc0LCAyMSwgIDY4LCA0OSwgIDAsICAyNywgIDksICAwLA0KKyAgICAyNTUsIDE5NSwgNTcsIDIyNSwgMTczLCA1MiwgMTk4LCAxNTQsIDQ0LCAxNzIsIDEzMywgMzYsIDE0NywgMTEzLCAyNiwgMTIzLCA5NCwgMTQsICA5OCwgNzQsICAwLCAgNjgsIDQ5LCAgMCwgIDI2LCAxMCwgIDAsDQorICAgIDI1NCwgMTk0LCAxNSwgMjI1LCAxNzIsIDEyLCAxOTgsIDE1MywgIDcsIDE3MiwgMTMyLCAgMywgMTQ2LCAxMTMsICAwLCAxMjMsIDkzLCAgMCwgIDk4LCA3MywgIDAsICA2OCwgNDksICAwLCAgMjYsICA5LCAgMCwNCisgICAgMjQ2LCAxNzgsIDIwOSwgMjE4LCAxNTksIDE4NiwgMTk0LCAxNDAsIDE2NiwgMTY4LCAxMjIsIDE0NSwgMTQ0LCAxMDQsIDEyNSwgMTIxLCA4NSwgMTAzLCAgOTcsIDY1LCA4MSwgIDY5LCA0MSwgNTUsICAzNCwgIDAsIDEyLA0KKyAgICAyNDgsIDE3NiwgMTg2LCAyMTksIDE1NywgMTY2LCAxOTUsIDEzOSwgMTQ5LCAxNjgsIDEyMSwgMTMwLCAxNDQsIDEwMywgMTExLCAxMjEsIDg1LCA5MSwgIDk3LCA2NSwgNzEsICA2OSwgNDEsIDQ2LCAgMzQsICAwLCAgNCwNCisgICAgMjQ5LCAxNzUsIDE2OCwgMjIwLCAxNTYsIDE1MCwgMTk2LCAxMzksIDEzNSwgMTY5LCAxMjEsIDExNiwgMTQ0LCAxMDMsIDEwMCwgMTIyLCA4NCwgODMsICA5OCwgNjUsIDYzLCAgNzAsIDQxLCAzOSwgIDMzLCAgMCwgIDAsDQorICAgIDI0OSwgMTc1LCAxNDgsIDIyMCwgMTU1LCAxMzMsIDE5NiwgMTM4LCAxMTksIDE2OSwgMTIwLCAxMDMsIDE0NSwgMTAxLCA4NywgMTIxLCA4MywgNzEsICA5NywgNjUsIDU0LCAgNjksIDQxLCAzMSwgIDMyLCAgMCwgIDAsDQorICAgIDI0OSwgMTczLCAxMjgsIDIyMiwgMTU0LCAxMTUsIDE5NSwgMTM3LCAxMDIsIDE3MCwgMTE5LCA4OCwgMTQ1LCAxMDEsIDc0LCAxMjIsIDgzLCA1OSwgIDk3LCA2NCwgNDMsICA2OCwgNDAsIDIwLCAgMzAsICAwLCAgMCwNCisgICAgMjUwLCAxNzIsIDEwOCwgMjIxLCAxNTQsIDk4LCAxOTUsIDEzNiwgODYsIDE3MCwgMTE4LCA3MywgMTQ1LCAxMDAsIDYxLCAxMjIsIDgyLCA0OCwgIDk3LCA2MywgMzIsICA2OSwgNDAsIDExLCAgMjgsICAwLCAgMCwNCisgICAgMjUwLCAxNzEsIDg1LCAyMjEsIDE1MywgNzYsIDE5NiwgMTM2LCA2NywgMTcwLCAxMTcsIDU2LCAxNDUsIDk5LCA0NCwgMTIxLCA4MiwgMzMsICA5NywgNjMsIDE3LCAgNjgsIDQwLCAgMCwgIDI4LCAgMCwgIDAsDQorICAgIDI1MSwgMTcxLCA1OCwgMjIyLCAxNTIsIDUwLCAxOTcsIDEzNSwgNDMsIDE2OSwgMTE3LCAzNCwgMTQ2LCA5OSwgMjUsIDEyMSwgODEsIDEwLCAgOTYsIDYzLCAgMCwgIDY4LCA0MCwgIDAsICAyNywgIDAsICAwLA0KKyAgICAyNTAsIDE3MCwgMjYsIDIyMiwgMTUxLCAxOSwgMTk2LCAxMzQsIDEzLCAxNjksIDExNiwgIDQsIDE0NSwgOTksICAwLCAxMjIsIDgxLCAgMCwgIDk3LCA2MywgIDAsICA2NywgNDAsICAwLCAgMjYsICAwLCAgMCwNCisgICAgMjQ0LCAxNTMsIDE5NCwgMjE1LCAxMzYsIDE3MywgMTkyLCAxMjEsIDE1NSwgMTY3LCAxMDQsIDEzNSwgMTQzLCA4OSwgMTE1LCAxMjEsIDcyLCA5NiwgIDk3LCA1NCwgNzUsICA3MCwgMzEsIDQ5LCAgMzQsICAwLCAgNiwNCisgICAgMjQ1LCAxNTMsIDE3MywgMjE2LCAxMzYsIDE1NSwgMTkyLCAxMjAsIDEzOCwgMTY3LCAxMDQsIDEyMSwgMTQ0LCA4OCwgMTAzLCAxMjEsIDcxLCA4NSwgIDk3LCA1NCwgNjYsICA2OSwgMzEsIDQyLCAgMzQsICAwLCAgMCwNCisgICAgMjQ2LCAxNTIsIDE1NywgMjE3LCAxMzUsIDE0MCwgMTkzLCAxMjAsIDEyNiwgMTY3LCAxMDMsIDEwOSwgMTQzLCA4OCwgOTIsIDEyMSwgNzIsIDc2LCAgOTcsIDU0LCA1OCwgIDY5LCAzMSwgMzUsICAzMywgIDAsICAwLA0KKyAgICAyNDUsIDE1MCwgMTM5LCAyMTgsIDEzNCwgMTI1LCAxOTMsIDExOSwgMTExLCAxNjcsIDEwMywgOTYsIDE0NCwgODcsIDgwLCAxMjEsIDcxLCA2NiwgIDk2LCA1MywgNDksICA2OCwgMzEsIDI2LCAgMzIsICAwLCAgMCwNCisgICAgMjQ2LCAxNTEsIDEyMiwgMjE4LCAxMzMsIDEwOCwgMTk0LCAxMTgsIDk2LCAxNjgsIDEwMiwgODEsIDE0NCwgODYsIDY5LCAxMjAsIDcxLCA1NSwgIDk1LCA1MywgMzksICA2OCwgMzAsIDE3LCAgMzEsICAwLCAgMCwNCisgICAgMjQ4LCAxNTAsIDEwMywgMjE4LCAxMzMsIDkxLCAxOTMsIDExOCwgODEsIDE2OCwgMTAyLCA2OSwgMTQzLCA4NiwgNTYsIDEyMCwgNzAsIDQzLCAgOTYsIDUzLCAyOCwgIDY4LCAzMSwgIDYsICAyOSwgIDAsICAwLA0KKyAgICAyNDcsIDE0OSwgODEsIDIxOCwgMTMyLCA3MiwgMTk0LCAxMTcsIDYyLCAxNjgsIDEwMSwgNTIsIDE0NCwgODYsIDQyLCAxMjEsIDcwLCAyOSwgIDk2LCA1MiwgMTMsICA2OCwgMzAsICAwLCAgMjgsICAwLCAgMCwNCisgICAgMjQ3LCAxNDgsIDU1LCAyMTksIDEzMSwgNTAsIDE5NCwgMTE3LCA0MywgMTY3LCAxMDEsIDMyLCAxNDQsIDg1LCAyMiwgMTIwLCA2OSwgIDgsICA5NiwgNTIsICAwLCAgNjcsIDMwLCAgMCwgIDI3LCAgMCwgIDAsDQorICAgIDI0NywgMTQ3LCAyOSwgMjE4LCAxMzEsIDI0LCAxOTQsIDExNiwgMjAsIDE2OCwgMTAwLCAxMSwgMTQ0LCA4NSwgIDAsIDEyMCwgNjksICAwLCAgOTYsIDUyLCAgMCwgIDY3LCAzMCwgIDAsICAyNiwgIDAsICAwLA0KKyAgICAyNDIsIDEzMCwgMTc5LCAyMTQsIDExNCwgMTYwLCAxOTAsIDEwMSwgMTQzLCAxNjYsIDg3LCAxMjUsIDE0MywgNzIsIDEwNywgMTIwLCA1OCwgODgsICA5NiwgNDIsIDY4LCAgNjksIDE3LCA0NCwgIDM1LCAgMCwgIDAsDQorICAgIDI0MywgMTI5LCAxNjEsIDIxNSwgMTE0LCAxNDMsIDE5MSwgMTAxLCAxMjgsIDE2NiwgODcsIDExMywgMTQzLCA3MywgOTYsIDEyMCwgNTgsIDc5LCAgOTYsIDQxLCA2MCwgIDY5LCAxOCwgMzcsICAzMywgIDAsICAwLA0KKyAgICAyNDMsIDEyOSwgMTQ2LCAyMTYsIDExNCwgMTMwLCAxOTIsIDEwMSwgMTE3LCAxNjYsIDg3LCAxMDEsIDE0MywgNzIsIDg2LCAxMjEsIDU4LCA2OSwgIDk2LCA0MiwgNTIsICA2OSwgMTgsIDI5LCAgMzEsICAwLCAgMCwNCisgICAgMjQzLCAxMjgsIDEzMCwgMjE2LCAxMTQsIDExNSwgMTkxLCAxMDEsIDEwMiwgMTY1LCA4NiwgODgsIDE0MiwgNzIsIDc1LCAxMjAsIDU4LCA2MCwgIDk1LCA0MiwgNDMsICA2OCwgMTksIDIxLCAgMzAsICAwLCAgMCwNCisgICAgMjQ0LCAxMjcsIDExMiwgMjE3LCAxMTMsIDEwMSwgMTkyLCA5OSwgODksIDE2NiwgODUsIDc1LCAxNDIsIDcyLCA2MywgMTE5LCA1NywgNTAsICA5NiwgNDEsIDM1LCAgNjgsIDE5LCAxMywgIDMwLCAgMCwgIDAsDQorICAgIDI0NCwgMTI3LCA5NiwgMjE2LCAxMTIsIDg2LCAxOTEsIDk5LCA3NSwgMTY2LCA4NiwgNjQsIDE0MywgNzIsIDUyLCAxMjAsIDU3LCA0MCwgIDk1LCA0MSwgMjQsICA2NywgMjAsICAxLCAgMjksICAwLCAgMCwNCisgICAgMjQ1LCAxMjYsIDc3LCAyMTYsIDExMywgNjgsIDE5MSwgMTAwLCA1OSwgMTY2LCA4NSwgNDksIDE0MiwgNzEsIDM4LCAxMTksIDU3LCAyNiwgIDk1LCA0MSwgMTAsICA2NywgMjAsICAwLCAgMjgsICAwLCAgMCwNCisgICAgMjQ0LCAxMjYsIDU1LCAyMTYsIDExMiwgNDgsIDE5MSwgOTksIDQwLCAxNjYsIDg1LCAzMSwgMTQzLCA3MSwgMjAsIDExOSwgNTcsICA2LCAgOTUsIDQyLCAgMCwgIDY3LCAyMCwgIDAsICAyOCwgIDAsICAwLA0KKyAgICAyNDUsIDEyNiwgMzMsIDIxNywgMTEyLCAyNiwgMTkyLCA5OSwgMjIsIDE2NiwgODQsIDExLCAxNDIsIDcwLCAgMCwgMTE5LCA1NywgIDAsICA5NSwgNDEsICAwLCAgNjYsIDIwLCAgMCwgIDI3LCAgMCwgIDAsDQorICAgIDI0MSwgMTAyLCAxNjcsIDIxMywgOTAsIDE0OSwgMTg5LCA3OSwgMTMzLCAxNjUsIDY2LCAxMTUsIDE0MSwgNTQsIDk4LCAxMTksIDQxLCA4MSwgIDk2LCAyNSwgNjMsICA2OSwgIDAsIDM4LCAgMzAsICAwLCAgMCwNCisgICAgMjQxLCAxMDIsIDE0OSwgMjEzLCA5MCwgMTMzLCAxODksIDc5LCAxMTksIDE2NSwgNjYsIDEwMywgMTQyLCA1NSwgODgsIDExOSwgNDEsIDcxLCAgOTYsIDI1LCA1MywgIDY5LCAgMCwgMzEsICAyOCwgIDAsICAwLA0KKyAgICAyNDEsIDEwMiwgMTM1LCAyMTQsIDkwLCAxMjEsIDE5MCwgNzksIDEwOCwgMTY1LCA2NiwgOTIsIDE0MSwgNTUsIDc4LCAxMTksIDQyLCA2MywgIDk2LCAyNiwgNDYsICA2OSwgIDAsIDI0LCAgMjgsICAwLCAgMCwNCisgICAgMjQxLCAxMDEsIDEyMCwgMjE0LCA5MCwgMTA3LCAxODksIDc5LCA5NSwgMTY1LCA2NywgODMsIDE0MSwgNTQsIDY4LCAxMTgsIDQxLCA1NCwgIDk1LCAyNywgMzksICA2OCwgIDAsIDE2LCAgMjcsICAwLCAgMCwNCisgICAgMjQxLCAxMDIsIDEwNiwgMjEzLCA5MCwgOTMsIDE4OSwgNzgsIDgyLCAxNjQsIDY3LCA3MCwgMTQxLCA1NSwgNTgsIDExOCwgNDIsIDQ1LCAgOTQsIDI3LCAyOSwgIDY3LCAgMiwgIDYsICAyNywgIDAsICAwLA0KKyAgICAyNDIsIDEwMSwgOTAsIDIxNCwgODksIDc5LCAxOTAsIDc5LCA2OSwgMTY2LCA2NywgNTksIDE0MSwgNTUsIDQ3LCAxMTgsIDQxLCAzNSwgIDk1LCAyNywgMTksICA2NywgIDMsICAwLCAgMjYsICAwLCAgMCwNCisgICAgMjQyLCAxMDIsIDcyLCAyMTMsIDg5LCA2MywgMTkxLCA3OSwgNTYsIDE2NCwgNjcsIDQ1LCAxNDEsIDU1LCAzNCwgMTE4LCA0MiwgMjIsICA5NCwgMjgsICA2LCAgNjcsICAzLCAgMCwgIDI2LCAgMCwgIDAsDQorICAgIDI0MiwgMTAwLCA1MSwgMjE0LCA4OSwgNDUsIDE5MCwgNzgsIDM4LCAxNjQsIDY3LCAzMCwgMTQxLCA1NSwgMTgsIDExOCwgNDIsICAzLCAgOTUsIDI4LCAgMCwgIDY2LCAgNCwgIDAsICAyNiwgIDAsICAwLA0KKyAgICAyNDMsIDEwMCwgMzMsIDIxNCwgOTAsIDI3LCAxOTAsIDc4LCAyMiwgMTY1LCA2NywgMTMsIDE0MSwgNTUsICAwLCAxMTgsIDQzLCAgMCwgIDk0LCAyOSwgIDAsICA2NiwgIDUsICAwLCAgMjYsICAwLCAgMCwNCisgICAgMjM3LCA2OSwgMTUzLCAyMTEsIDU4LCAxMzUsIDE4NywgNTEsIDEyMSwgMTYzLCA0MSwgMTA1LCAxNDEsIDI4LCA5MCwgMTE4LCAxNSwgNzMsICA5NiwgIDAsIDU2LCAgNjgsICAwLCAzMywgIDI1LCAgMCwgIDAsDQorICAgIDIzOSwgNjcsIDEzNywgMjEyLCA2MCwgMTIzLCAxODksIDUwLCAxMTAsIDE2MywgNDEsIDk0LCAxNDEsIDI5LCA3OSwgMTE4LCAxNywgNjUsICA5NSwgIDAsIDQ4LCAgNjksICAwLCAyNiwgIDI1LCAgMCwgIDAsDQorICAgIDI0MCwgNjksIDEyNCwgMjExLCA2MCwgMTExLCAxODgsIDUwLCA5OCwgMTYzLCA0MiwgODUsIDE0MSwgMzEsIDcyLCAxMTgsIDE4LCA1NywgIDk0LCAgMCwgNDEsICA2OCwgIDAsIDE5LCAgMjUsICAwLCAgMCwNCisgICAgMjQwLCA3MCwgMTEyLCAyMTIsIDYxLCA5OSwgMTg4LCA1MiwgODcsIDE2MywgNDEsIDc0LCAxNDAsIDMxLCA2MiwgMTE4LCAyMCwgNDgsICA5NCwgIDIsIDMyLCAgNjgsICAwLCAxMSwgIDI0LCAgMCwgIDAsDQorICAgIDIzOSwgNzAsIDk4LCAyMTIsIDYyLCA4NiwgMTg4LCA1MywgNzcsIDE2NCwgNDIsIDY0LCAxNDAsIDMyLCA1MiwgMTE4LCAyMCwgNDAsICA5NCwgIDMsIDI0LCAgNjcsICAwLCAgMywgIDIzLCAgMCwgIDAsDQorICAgIDIzOSwgNzEsIDg1LCAyMTIsIDYxLCA3NCwgMTg3LCA1MywgNjUsIDE2MywgNDQsIDU0LCAxNDAsIDM0LCA0MywgMTE4LCAyMiwgMzAsICA5NSwgIDMsIDE0LCAgNjcsICAwLCAgMCwgIDIzLCAgMCwgIDAsDQorICAgIDIzOSwgNzAsIDY3LCAyMTIsIDYyLCA1OSwgMTg4LCA1MywgNTEsIDE2MywgNDUsIDQyLCAxNDEsIDM0LCAzMSwgMTE3LCAyMiwgMTcsICA5NCwgIDUsICAyLCAgNjYsICAwLCAgMCwgIDIzLCAgMCwgIDAsDQorICAgIDIzOSwgNzEsIDUwLCAyMTMsIDYyLCA0MywgMTg4LCA1NCwgMzcsIDE2NCwgNDUsIDI4LCAxMzksIDM0LCAxNiwgMTE3LCAyMiwgIDIsICA5NCwgIDcsICAwLCAgNjUsICAwLCAgMCwgIDIzLCAgMCwgIDAsDQorICAgIDI0MCwgNzEsIDM0LCAyMTIsIDYzLCAyOSwgMTg5LCA1NCwgMjQsIDE2MywgNDYsIDE1LCAxMzksIDM2LCAgMiwgMTE3LCAyNSwgIDAsICA5NCwgIDgsICAwLCAgNjYsICAwLCAgMCwgIDIzLCAgMCwgIDAsDQorICAgIDIzNywgIDAsIDE0MCwgMjA5LCAgMCwgMTI0LCAxODYsICAwLCAxMTIsIDE2MiwgIDAsIDk3LCAxNDEsICAwLCA4MiwgMTE4LCAgMCwgNjcsICA5NSwgIDAsIDQ5LCAgNjgsICAwLCAyNywgIDIwLCAgMCwgIDAsDQorICAgIDIzNywgIDAsIDEyNiwgMjEwLCAgMCwgMTEzLCAxODcsICAwLCA5OSwgMTYzLCAgMCwgODYsIDEzOSwgIDAsIDcyLCAxMTgsICAwLCA1OCwgIDk1LCAgMCwgNDIsICA2NywgIDAsIDIwLCAgMjAsICAwLCAgMCwNCisgICAgMjM3LCAgMSwgMTE0LCAyMDksICAxLCAxMDIsIDE4NywgIDAsIDkwLCAxNjMsICAwLCA3OCwgMTM5LCAgMCwgNjQsIDExOCwgIDAsIDUwLCAgOTUsICAwLCAzNSwgIDY3LCAgMCwgMTMsICAyMCwgIDAsICAwLA0KKyAgICAyMzYsIDE2LCAxMDIsIDIwOSwgIDcsIDkxLCAxODYsICAwLCA4MCwgMTYyLCAgMCwgNjgsIDEzOSwgIDAsIDU2LCAxMTcsICAwLCA0MywgIDk0LCAgMCwgMjcsICA2NywgIDAsICA2LCAgMjAsICAwLCAgMCwNCisgICAgMjM4LCAxNSwgODksIDIwOSwgMTMsIDc5LCAxODYsICA2LCA2OSwgMTYyLCAgMCwgNTgsIDEzOSwgIDAsIDQ3LCAxMTcsICAwLCAzNCwgIDkzLCAgMCwgMjAsICA2NiwgIDAsICAyLCAgMjAsICAwLCAgMCwNCisgICAgMjM3LCAyMCwgNzgsIDIxMCwgMTIsIDY4LCAxODcsICA0LCA1OSwgMTYzLCAgMCwgNDksIDEzOSwgIDAsIDM4LCAxMTYsICAwLCAyNiwgIDk0LCAgMCwgMTEsICA2NiwgIDAsICAwLCAgMjAsICAwLCAgMCwNCisgICAgMjM3LCAyNSwgNjQsIDIxMCwgMTgsIDU2LCAxODYsIDExLCA0OCwgMTYyLCAgNCwgMzksIDEzOCwgIDAsIDI3LCAxMTcsICAwLCAxNCwgIDkzLCAgMCwgIDAsICA2NiwgIDAsICAwLCAgMjAsICAwLCAgMCwNCisgICAgMjM4LCAyNSwgNDgsIDIxMCwgMjIsIDQzLCAxODYsIDE1LCAzNSwgMTYyLCAgOCwgMjYsIDE0MCwgIDAsIDE0LCAxMTcsICAwLCAgMCwgIDkzLCAgMCwgIDAsICA2NSwgIDAsICAwLCAgMjAsICAwLCAgMCwNCisgICAgMjM4LCAyOCwgMzUsIDIxMCwgMjEsIDMwLCAxODcsIDE1LCAyNCwgMTYyLCAgOCwgMTYsIDEzOSwgIDEsICAyLCAxMTcsICAwLCAgMCwgIDkzLCAgMCwgIDAsICA2NSwgIDAsICAwLCAgMjIsICAwLCAgMCwNCisgICAgMjE5LCAyNDIsIDI1MiwgMTk1LCAyMTQsIDIyNSwgMTcyLCAxOTEsIDIwMSwgMTQ4LCAxNjUsIDE3NSwgMTI3LCAxNDIsIDE1MCwgMTA2LCAxMTksIDEyNiwgIDg0LCA5NSwgMTAxLCAgNTgsIDY2LCA3MiwgIDI0LCAyNywgMzIsDQorICAgIDIyMiwgMjM5LCAyMjYsIDE5NiwgMjEzLCAyMDIsIDE3MywgMTg5LCAxODAsIDE1MCwgMTY1LCAxNTgsIDEyOSwgMTQxLCAxMzUsIDEwNywgMTE4LCAxMTMsICA4NSwgOTQsIDkwLCAgNTgsIDY2LCA2MywgIDIxLCAyNiwgMjQsDQorICAgIDIyMywgMjM3LCAyMDMsIDE5OCwgMjExLCAxODIsIDE3NSwgMTg4LCAxNjMsIDE1MiwgMTY0LCAxNDEsIDEyOSwgMTQwLCAxMjEsIDEwNywgMTE3LCAxMDEsICA4NSwgOTMsIDgwLCAgNTgsIDY0LCA1NCwgIDIxLCAyNiwgMTgsDQorICAgIDIyNiwgMjM2LCAxNzksIDIwMSwgMjEwLCAxNjAsIDE3NywgMTg3LCAxNDMsIDE1MywgMTYyLCAxMjUsIDEzMCwgMTM5LCAxMDYsIDEwOCwgMTE2LCA4OSwgIDg1LCA5MiwgNjksICA1OCwgNjQsIDQ1LCAgMjAsIDI1LCAgOCwNCisgICAgMjI3LCAyMzQsIDE1MywgMjAxLCAyMDgsIDEzOSwgMTc4LCAxODUsIDEyNCwgMTU0LCAxNjEsIDEwNywgMTMxLCAxMzgsIDkxLCAxMDgsIDExNSwgNzUsICA4NSwgOTEsIDU4LCAgNTgsIDYzLCAzNSwgIDE3LCAyNSwgIDAsDQorICAgIDIyOSwgMjMzLCAxMzAsIDIwMywgMjA3LCAxMTYsIDE3OCwgMTg0LCAxMDQsIDE1NCwgMTYwLCA5MCwgMTMxLCAxMzcsIDc2LCAxMDksIDExNCwgNjIsICA4NSwgOTAsIDQ2LCAgNTgsIDYzLCAyNSwgIDE2LCAyNCwgIDAsDQorICAgIDIzMCwgMjMxLCAxMDAsIDIwMiwgMjA1LCA5MCwgMTc5LCAxODMsIDgwLCAxNTQsIDE1OSwgNjksIDEzMSwgMTM2LCA1NywgMTA5LCAxMTMsIDQ2LCAgODYsIDkwLCAzMiwgIDU4LCA2MywgMTAsICAxNCwgMjQsICAwLA0KKyAgICAyMzAsIDIzMCwgNjUsIDIwNCwgMjA0LCA1OCwgMTgwLCAxODIsIDUyLCAxNTUsIDE1NywgNDQsIDEzMiwgMTM1LCAzNSwgMTEwLCAxMTMsIDI0LCAgODYsIDg5LCAgOSwgIDU3LCA2MiwgIDAsICAxMSwgMjQsICAwLA0KKyAgICAyMzIsIDIzMCwgMTksIDIwNCwgMjA0LCAxOSwgMTgwLCAxODEsIDE3LCAxNTUsIDE1NywgMTAsIDEzMSwgMTM0LCAgMiwgMTA5LCAxMTIsICAwLCAgODUsIDg5LCAgMCwgIDU3LCA2MiwgIDAsICAxMCwgMjMsICAwLA0KKyAgICAyMTgsIDIxNiwgMjM2LCAxOTQsIDE5MiwgMjExLCAxNzIsIDE3MSwgMTg4LCAxNDksIDE0OSwgMTY0LCAxMjgsIDEyNywgMTQxLCAxMDYsIDEwNiwgMTE5LCAgODQsIDg0LCA5NCwgIDU5LCA1NywgNjYsICAyNSwgMTgsIDI2LA0KKyAgICAyMjEsIDIxNCwgMjExLCAxOTYsIDE5MSwgMTkwLCAxNzQsIDE3MCwgMTcwLCAxNTAsIDE0OCwgMTQ4LCAxMjgsIDEyNiwgMTI3LCAxMDcsIDEwNSwgMTA2LCAgODUsIDgzLCA4NCwgIDU5LCA1NiwgNTgsICAyMywgMTcsIDE4LA0KKyAgICAyMjIsIDIxMywgMTkwLCAxOTcsIDE4OSwgMTcwLCAxNzUsIDE2OSwgMTUzLCAxNTEsIDE0NywgMTMzLCAxMjksIDEyNiwgMTEzLCAxMDgsIDEwNSwgOTQsICA4NSwgODIsIDc0LCAgNTksIDU2LCA0OSwgIDIyLCAxNywgMTEsDQorICAgIDIyNCwgMjExLCAxNjgsIDE5OSwgMTg4LCAxNTEsIDE3NSwgMTY4LCAxMzUsIDE1MiwgMTQ2LCAxMTcsIDEyOSwgMTI0LCA5OSwgMTA3LCAxMDMsIDgyLCAgODQsIDgyLCA2NCwgIDU5LCA1NSwgNDEsICAyMSwgMTcsICAxLA0KKyAgICAyMjQsIDIxMCwgMTQ1LCAxOTksIDE4NywgMTMwLCAxNzYsIDE2NiwgMTE3LCAxNTIsIDE0NSwgMTAxLCAxMjksIDEyMywgODYsIDEwNywgMTAzLCA3MCwgIDg1LCA4MSwgNTMsICA1OCwgNTUsIDMxLCAgMTksIDE3LCAgMCwNCisgICAgMjI3LCAyMDgsIDEyMywgMjAwLCAxODYsIDExMCwgMTc3LCAxNjUsIDk4LCAxNTMsIDE0MywgODQsIDEzMCwgMTIyLCA3MCwgMTA4LCAxMDIsIDU3LCAgODUsIDgwLCA0MSwgIDU4LCA1NCwgMjAsICAxOCwgMTYsICAwLA0KKyAgICAyMjcsIDIwOCwgOTcsIDIwMiwgMTg1LCA4NiwgMTc3LCAxNjQsIDc3LCAxNTMsIDE0MiwgNjUsIDEzMCwgMTIyLCA1NCwgMTA4LCAxMDEsIDQyLCAgODUsIDgwLCAyNywgIDU4LCA1NCwgIDcsICAxNiwgMTYsICAwLA0KKyAgICAyMjgsIDIwNiwgNjYsIDIwMiwgMTg0LCA1OCwgMTc4LCAxNjMsIDUwLCAxNTQsIDE0MSwgNDIsIDEzMSwgMTIxLCAzMywgMTA5LCAxMDEsIDIxLCAgODYsIDc5LCAgNSwgIDU4LCA1NCwgIDAsICAxMywgMTYsICAwLA0KKyAgICAyMjgsIDIwNiwgMjksIDIwMiwgMTgzLCAyNSwgMTc4LCAxNjMsIDIwLCAxNTQsIDE0MSwgMTUsIDEzMSwgMTIxLCAgNSwgMTA4LCAxMDAsICAwLCAgODUsIDc5LCAgMCwgIDU4LCA1MywgIDAsICAxMywgMTYsICAwLA0KKyAgICAyMTcsIDE5MywgMjIxLCAxOTMsIDE3MiwgMTk4LCAxNzIsIDE1MywgMTc4LCAxNDksIDEzMywgMTU0LCAxMjgsIDExNCwgMTMyLCAxMDcsIDk0LCAxMTEsICA4NSwgNzQsIDg5LCAgNTksIDQ5LCA2MSwgIDI1LCAgOCwgMjIsDQorICAgIDIxOSwgMTkxLCAxOTgsIDE5NSwgMTcxLCAxNzgsIDE3MywgMTUzLCAxNTksIDE0OSwgMTMyLCAxMzksIDEyOCwgMTEzLCAxMTksIDEwNywgOTQsIDEwMCwgIDg1LCA3MywgNzksICA1OSwgNDgsIDUyLCAgMjUsICA3LCAxNCwNCisgICAgMjIxLCAxOTEsIDE4MCwgMTk2LCAxNzAsIDE2MCwgMTc0LCAxNTIsIDE0NCwgMTUwLCAxMzIsIDEyNSwgMTI5LCAxMTMsIDEwNywgMTA3LCA5MywgODksICA4NSwgNzMsIDY5LCAgNTksIDQ4LCA0NSwgIDIzLCAgNywgIDQsDQorICAgIDIyMiwgMTg5LCAxNTksIDE5NywgMTY5LCAxNDIsIDE3NCwgMTUxLCAxMjcsIDE1MSwgMTMxLCAxMTAsIDEyOSwgMTEyLCA5NCwgMTA4LCA5MywgNzgsICA4NSwgNzIsIDYwLCAgNTgsIDQ3LCAzNywgIDIyLCAgNywgIDAsDQorICAgIDIyMywgMTg4LCAxMzgsIDE5NywgMTY4LCAxMjMsIDE3NSwgMTUwLCAxMDksIDE1MSwgMTMwLCA5NSwgMTMwLCAxMTEsIDgxLCAxMDgsIDkyLCA2NSwgIDg1LCA3MiwgNDksICA1OSwgNDcsIDI3LCAgMjEsICA3LCAgMCwNCisgICAgMjI0LCAxODcsIDExOCwgMTk4LCAxNjcsIDEwNSwgMTc2LCAxNDksIDkzLCAxNTIsIDEyOSwgNzksIDEzMCwgMTEwLCA2OCwgMTA4LCA5MSwgNTQsICA4NSwgNzEsIDM4LCAgNTksIDQ3LCAxNywgIDE4LCAgNywgIDAsDQorICAgIDIyNCwgMTg3LCA5MywgMTk5LCAxNjYsIDgzLCAxNzYsIDE0OCwgNzMsIDE1MiwgMTI4LCA2MiwgMTI5LCAxMDksIDUxLCAxMDgsIDkwLCAzOSwgIDg1LCA3MSwgMjUsICA1OCwgNDYsICAzLCAgMTYsICA4LCAgMCwNCisgICAgMjI2LCAxODYsIDY0LCAyMDAsIDE2NSwgNTcsIDE3NywgMTQ3LCA1MCwgMTUzLCAxMjcsIDQwLCAxMzAsIDEwOCwgMzEsIDEwOCwgOTAsIDE5LCAgODUsIDcwLCAgMywgIDU4LCA0NiwgIDAsICAxNiwgIDgsICAwLA0KKyAgICAyMjcsIDE4NSwgMzUsIDIwMCwgMTY1LCAzMCwgMTc2LCAxNDYsIDI1LCAxNTIsIDEyNywgMTgsIDEzMCwgMTA4LCAgNywgMTA4LCA4OSwgIDAsICA4NSwgNzAsICAwLCAgNTcsIDQ2LCAgMCwgIDE0LCAgOCwgIDAsDQorICAgIDIxNiwgMTY5LCAyMDUsIDE5MiwgMTUwLCAxODQsIDE3MSwgMTM0LCAxNjQsIDE0OSwgMTE2LCAxNDQsIDEyOCwgOTksIDEyNCwgMTA3LCA4MSwgMTAzLCAgODUsIDYzLCA4MSwgIDYwLCAzOSwgNTUsICAyNiwgIDAsIDE1LA0KKyAgICAyMTcsIDE2OCwgMTg2LCAxOTMsIDE1MCwgMTY1LCAxNzIsIDEzNCwgMTQ5LCAxNTAsIDExNiwgMTMwLCAxMjgsIDk5LCAxMTEsIDEwNywgODEsIDkyLCAgODUsIDYyLCA3MiwgIDU5LCAzOSwgNDcsICAyNSwgIDAsICA2LA0KKyAgICAyMTksIDE2OCwgMTY4LCAxOTQsIDE0OSwgMTUwLCAxNzMsIDEzMywgMTM1LCAxNTAsIDExNiwgMTE3LCAxMjgsIDk4LCA5OSwgMTA3LCA4MCwgODIsICA4NiwgNjIsIDYzLCAgNTksIDM4LCAzOSwgIDI0LCAgMCwgIDAsDQorICAgIDIxOSwgMTY2LCAxNDgsIDE5NSwgMTQ5LCAxMzMsIDE3MywgMTMzLCAxMTksIDE1MCwgMTE1LCAxMDMsIDEyOCwgOTgsIDg4LCAxMDcsIDgwLCA3MiwgIDg1LCA2MSwgNTQsICA1OSwgMzgsIDMyLCAgMjMsICAwLCAgMCwNCisgICAgMjIwLCAxNjYsIDEyOSwgMTk2LCAxNDgsIDExNiwgMTc0LCAxMzIsIDEwMywgMTUxLCAxMTQsIDg5LCAxMjksIDk3LCA3NSwgMTA3LCA3OSwgNjAsICA4NSwgNjEsIDQ0LCAgNTksIDM4LCAyMiwgIDIxLCAgMCwgIDAsDQorICAgIDIyMiwgMTY0LCAxMTAsIDE5NywgMTQ3LCA5OSwgMTc1LCAxMzEsIDg3LCAxNTEsIDExMywgNzUsIDEyOSwgOTYsIDYzLCAxMDcsIDc5LCA0OSwgIDg1LCA2MSwgMzMsICA1OCwgMzgsIDEyLCAgMTksICAwLCAgMCwNCisgICAgMjIyLCAxNjQsIDg4LCAxOTcsIDE0NiwgNzksIDE3NCwgMTMwLCA2OSwgMTUxLCAxMTMsIDU4LCAxMjksIDk1LCA0NywgMTA3LCA3OCwgMzUsICA4NSwgNjAsIDIwLCAgNTgsIDM4LCAgMCwgIDE4LCAgMCwgIDAsDQorICAgIDIyMywgMTY0LCA2MywgMTk4LCAxNDUsIDU1LCAxNzUsIDEyOSwgNDgsIDE1MSwgMTEyLCAzOSwgMTI5LCA5NSwgMjksIDEwNywgNzgsIDE2LCAgODUsIDYwLCAgMSwgIDU4LCAzOCwgIDAsICAxNywgIDAsICAwLA0KKyAgICAyMjMsIDE2MywgMzYsIDE5OCwgMTQ1LCAzMiwgMTc0LCAxMjksIDI2LCAxNTEsIDExMSwgMTcsIDEyOSwgOTUsICA3LCAxMDcsIDc4LCAgMCwgIDg0LCA2MCwgIDAsICA1NywgMzcsICAwLCAgMTUsICAwLCAgMCwNCisgICAgMjE1LCAxNDcsIDE5MiwgMTkxLCAxMzAsIDE3MiwgMTcwLCAxMTYsIDE1MywgMTQ4LCAxMDAsIDEzMywgMTI3LCA4NSwgMTE1LCAxMDcsIDY5LCA5NiwgIDg1LCA1MSwgNzUsICA2MCwgMjgsIDUwLCAgMjUsICAwLCAgOCwNCisgICAgMjE3LCAxNDYsIDE3MywgMTkyLCAxMzAsIDE1NCwgMTcxLCAxMTUsIDEzOCwgMTQ5LCAxMDAsIDEyMSwgMTI4LCA4NCwgMTAzLCAxMDcsIDY4LCA4NSwgIDg1LCA1MSwgNjYsICA2MCwgMjgsIDQyLCAgMjUsICAwLCAgMCwNCisgICAgMjE3LCAxNDUsIDE1NywgMTkzLCAxMjksIDE0MCwgMTczLCAxMTUsIDEyNSwgMTQ5LCAxMDAsIDEwOSwgMTI4LCA4NCwgOTIsIDEwNywgNjgsIDc2LCAgODUsIDUxLCA1OCwgIDU5LCAyOCwgMzUsICAyMywgIDAsICAwLA0KKyAgICAyMTgsIDE0NSwgMTQwLCAxOTMsIDEyOSwgMTI1LCAxNzIsIDExNCwgMTEwLCAxNDksIDk5LCA5NiwgMTI4LCA4MywgODEsIDEwNywgNjcsIDY1LCAgODQsIDUxLCA0OSwgIDU5LCAyOSwgMjcsICAyMiwgIDAsICAwLA0KKyAgICAyMTksIDE0NCwgMTIxLCAxOTQsIDEyOCwgMTA4LCAxNzIsIDExMywgOTYsIDE0OSwgOTgsIDgzLCAxMjgsIDgzLCA2OSwgMTA3LCA2OCwgNTUsICA4NSwgNTAsIDQwLCAgNTksIDI4LCAxOCwgIDIwLCAgMCwgIDAsDQorICAgIDIyMCwgMTQzLCAxMDQsIDE5NSwgMTI4LCA5MywgMTczLCAxMTQsIDgyLCAxNTAsIDk4LCA2OSwgMTI3LCA4MiwgNTgsIDEwNywgNjcsIDQ1LCAgODUsIDUwLCAzMCwgIDU5LCAyOCwgIDcsICAxOSwgIDAsICAwLA0KKyAgICAyMjAsIDE0MywgODQsIDE5NSwgMTI3LCA3NCwgMTczLCAxMTMsIDY1LCAxNDksIDk3LCA1NSwgMTI4LCA4MiwgNDQsIDEwNiwgNjcsIDMyLCAgODQsIDUwLCAxNiwgIDU4LCAyOCwgIDAsICAxOCwgIDAsICAwLA0KKyAgICAyMjEsIDE0MiwgNjIsIDE5NiwgMTI2LCA1MywgMTczLCAxMTIsIDQ2LCAxNTAsIDk3LCAzNywgMTI4LCA4MiwgMjYsIDEwNywgNjYsIDE0LCAgODQsIDUwLCAgMCwgIDU4LCAyOCwgIDAsICAxNiwgIDAsICAwLA0KKyAgICAyMjIsIDE0MiwgMzgsIDE5NiwgMTI2LCAzNCwgMTc0LCAxMTIsIDI3LCAxNTAsIDk2LCAxNywgMTI4LCA4MiwgIDYsIDEwNiwgNjYsICAwLCAgODQsIDUwLCAgMCwgIDU3LCAyOSwgIDAsICAxNiwgIDAsICAwLA0KKyAgICAyMTQsIDEyMywgMTc5LCAxOTEsIDExMCwgMTU5LCAxNjksIDk4LCAxNDMsIDE0NywgODQsIDEyNCwgMTI2LCA3MCwgMTA2LCAxMDcsIDU1LCA4OCwgIDg1LCAzOSwgNjksICA2MCwgMTUsIDQ1LCAgMjMsICAwLCAgMiwNCisgICAgMjE2LCAxMjMsIDE2MSwgMTkyLCAxMTAsIDE0NCwgMTcwLCA5OCwgMTI5LCAxNDgsIDg0LCAxMTIsIDEyNywgNzAsIDk1LCAxMDcsIDU1LCA3OSwgIDg1LCAzOSwgNjEsICA2MCwgMTUsIDM3LCAgMjAsICAwLCAgMCwNCisgICAgMjE3LCAxMjIsIDE0NSwgMTkyLCAxMTAsIDEzMCwgMTcwLCA5NywgMTE2LCAxNDksIDg0LCAxMDEsIDEyNywgNzAsIDg1LCAxMDYsIDU1LCA3MCwgIDg1LCAzOSwgNTMsICA1OSwgMTYsIDMwLCAgMTksICAwLCAgMCwNCisgICAgMjE3LCAxMjMsIDEzMSwgMTkyLCAxMDksIDExNiwgMTcxLCA5NiwgMTAzLCAxNDksIDgzLCA4OSwgMTI3LCA3MCwgNzUsIDEwNiwgNTUsIDYwLCAgODUsIDQwLCA0NSwgIDU5LCAxNiwgMjMsICAxNywgIDAsICAwLA0KKyAgICAyMTcsIDEyMiwgMTE0LCAxOTMsIDEwOSwgMTAxLCAxNzIsIDk2LCA5MSwgMTQ5LCA4MiwgNzcsIDEyOCwgNjksIDY0LCAxMDYsIDU1LCA1MCwgIDg0LCAzOSwgMzUsICA1OSwgMTcsIDE0LCAgMTcsICAwLCAgMCwNCisgICAgMjE4LCAxMjIsIDk4LCAxOTQsIDEwOCwgODcsIDE3MSwgOTYsIDc3LCAxNDksIDgyLCA2NSwgMTI3LCA2OSwgNTIsIDEwNiwgNTUsIDQwLCAgODQsIDQwLCAyNSwgIDU5LCAxOCwgIDMsICAxNSwgIDAsICAwLA0KKyAgICAyMTksIDEyMiwgODAsIDE5MywgMTA4LCA3MCwgMTcyLCA5NSwgNjEsIDE0OSwgODIsIDUxLCAxMjcsIDY5LCA0MCwgMTA2LCA1NSwgMjgsICA4NCwgMzksIDEyLCAgNTgsIDE3LCAgMCwgIDEzLCAgMCwgIDAsDQorICAgIDIxOSwgMTIxLCA1OSwgMTk0LCAxMDgsIDUyLCAxNzIsIDk2LCA0NCwgMTQ5LCA4MiwgMzUsIDEyNywgNjgsIDI0LCAxMDYsIDU1LCAxMSwgIDg0LCA0MCwgIDAsICA1NywgMTgsICAwLCAgMTMsICAwLCAgMCwNCisgICAgMjE5LCAxMjEsIDQwLCAxOTMsIDEwOCwgMzMsIDE3MiwgOTUsIDI2LCAxNDksIDgxLCAxOSwgMTI4LCA2OCwgIDYsIDEwNiwgNTQsICAwLCAgODQsIDM5LCAgMCwgIDU3LCAxOCwgIDAsICAxMywgIDAsICAwLA0KKyAgICAyMTMsIDk5LCAxNjUsIDE4OSwgODcsIDE0OCwgMTY5LCA3NiwgMTMyLCAxNDcsIDY0LCAxMTUsIDEyNiwgNTIsIDk4LCAxMDYsIDM5LCA4MSwgIDg1LCAyMywgNjMsICA2MCwgIDAsIDM5LCAgMTYsICAwLCAgMCwNCisgICAgMjE0LCA5OCwgMTQ5LCAxOTEsIDg3LCAxMzMsIDE3MCwgNzYsIDExOSwgMTQ4LCA2NSwgMTAzLCAxMjcsIDUzLCA4OCwgMTA2LCAzOSwgNzIsICA4NSwgMjQsIDU1LCAgNjAsICAwLCAzMiwgIDE1LCAgMCwgIDAsDQorICAgIDIxNSwgOTksIDEzNiwgMTkxLCA4NywgMTIxLCAxNzAsIDc3LCAxMDgsIDE0OCwgNjUsIDkzLCAxMjYsIDUzLCA3OSwgMTA2LCA0MCwgNjQsICA4NSwgMjQsIDQ3LCAgNTksICAwLCAyNSwgIDE0LCAgMCwgIDAsDQorICAgIDIxNSwgOTksIDEyMSwgMTkyLCA4NywgMTA4LCAxNzAsIDc3LCA5NiwgMTQ4LCA2NSwgODIsIDEyNiwgNTMsIDY5LCAxMDYsIDQwLCA1NSwgIDg1LCAyNSwgMzksICA1OSwgIDAsIDE4LCAgMTMsICAwLCAgMCwNCisgICAgMjE2LCA5OSwgMTA2LCAxOTEsIDg3LCA5NSwgMTcwLCA3NiwgODMsIDE0OCwgNjUsIDcxLCAxMjYsIDUzLCA1OCwgMTA2LCA0MSwgNDUsICA4NSwgMjYsIDMwLCAgNTksICAwLCAgOCwgIDExLCAgMCwgIDAsDQorICAgIDIxNiwgOTgsIDkxLCAxOTIsIDg4LCA4MiwgMTcwLCA3NywgNzEsIDE0OCwgNjUsIDYwLCAxMjcsIDUzLCA0OCwgMTA1LCA0MSwgMzYsICA4MywgMjYsIDIxLCAgNTgsICAxLCAgMiwgIDExLCAgMCwgIDAsDQorICAgIDIxNywgOTksIDc1LCAxOTIsIDg3LCA2NiwgMTcwLCA3NiwgNTcsIDE0OCwgNjUsIDQ3LCAxMjYsIDUzLCAzNiwgMTA1LCA0MSwgMjQsICA4MywgMjYsICA4LCAgNTcsICAyLCAgMCwgICA5LCAgMCwgIDAsDQorICAgIDIxNywgOTgsIDU3LCAxOTIsIDg3LCA0OSwgMTcxLCA3NywgNDEsIDE0NywgNjUsIDMyLCAxMjYsIDUzLCAyMSwgMTA1LCA0MSwgIDgsICA4NCwgMjcsICAwLCAgNTcsICAzLCAgMCwgICA5LCAgMCwgIDAsDQorICAgIDIxNywgOTgsIDQwLCAxOTMsIDg3LCAzNCwgMTcxLCA3NiwgMjcsIDE0OCwgNjUsIDE5LCAxMjYsIDUzLCAgNiwgMTA1LCA0MSwgIDAsICA4MywgMjcsICAwLCAgNTcsICA0LCAgMCwgICA5LCAgMCwgIDAsDQorICAgIDIxMSwgNjcsIDE1MiwgMTg5LCA1OCwgMTM2LCAxNjgsIDUwLCAxMjIsIDE0NywgMzksIDEwNSwgMTI3LCAyOCwgODksIDEwNiwgMTQsIDc0LCAgODUsICAwLCA1NiwgIDU5LCAgMCwgMzMsICAgOSwgIDAsICAwLA0KKyAgICAyMTMsIDY4LCAxMzgsIDE5MCwgNTksIDEyMywgMTY5LCA1MSwgMTA5LCAxNDgsIDQwLCA5NSwgMTI2LCAzMCwgODAsIDEwNiwgMTYsIDY1LCAgODUsICAwLCA0OCwgIDU5LCAgMCwgMjcsICAgOSwgIDAsICAwLA0KKyAgICAyMTQsIDY5LCAxMjUsIDE5MCwgNTksIDExMSwgMTY4LCA1MSwgOTksIDE0OCwgNDEsIDg2LCAxMjYsIDMxLCA3MiwgMTA2LCAxOCwgNTgsICA4NSwgIDAsIDQxLCAgNTksICAwLCAyMCwgICA3LCAgMCwgIDAsDQorICAgIDIxNSwgNzAsIDExMiwgMTkwLCA2MSwgMTAwLCAxNjksIDUyLCA4OCwgMTQ3LCA0MiwgNzYsIDEyNiwgMzIsIDYzLCAxMDYsIDE5LCA0OSwgIDg0LCAgMSwgMzQsICA1OCwgIDAsIDEzLCAgIDcsICAwLCAgMCwNCisgICAgMjE0LCA3MCwgOTksIDE5MCwgNjIsIDg4LCAxNjksIDUzLCA3NywgMTQ3LCA0MywgNjUsIDEyNSwgMzIsIDUzLCAxMDYsIDIwLCA0MCwgIDg0LCAgMywgMjYsICA1OCwgIDAsICA0LCAgIDcsICAwLCAgMCwNCisgICAgMjE0LCA3MSwgODYsIDE5MCwgNjEsIDc1LCAxNjksIDUzLCA2NSwgMTQ2LCA0MywgNTQsIDEyNiwgMzMsIDQ0LCAxMDUsIDIxLCAzMSwgIDgzLCAgNCwgMTcsICA1NywgIDAsICAwLCAgIDcsICAwLCAgMCwNCisgICAgMjE1LCA3MSwgNzEsIDE5MSwgNjIsIDYyLCAxNjksIDUzLCA1MywgMTQ3LCA0NCwgNDQsIDEyNiwgMzQsIDMzLCAxMDUsIDIyLCAyMCwgIDgzLCAgNSwgIDQsICA1NywgIDAsICAwLCAgIDcsICAwLCAgMCwNCisgICAgMjE1LCA3MSwgNTQsIDE5MSwgNjIsIDQ3LCAxNjksIDU0LCAzOSwgMTQ3LCA0NCwgMzAsIDEyNiwgMzUsIDIwLCAxMDUsIDIzLCAgNiwgIDgzLCAgNiwgIDAsICA1NiwgIDAsICAwLCAgIDUsICAwLCAgMCwNCisgICAgMjE1LCA3MSwgNDEsIDE5MSwgNjMsIDM0LCAxNzAsIDU0LCAyNywgMTQ3LCA0NSwgMTcsIDEyNiwgMzUsICA2LCAxMDUsIDIzLCAgMCwgIDgzLCAgOCwgIDAsICA1NiwgIDAsICAwLCAgIDUsICAwLCAgMCwNCisgICAgMjEwLCAxMywgMTQwLCAxODksICAxLCAxMjUsIDE2NywgIDAsIDExMCwgMTQ2LCAgMCwgOTYsIDEyNiwgIDAsIDgxLCAxMDYsICAwLCA2NywgIDg1LCAgMCwgNTEsICA1OSwgIDAsIDI4LCAgIDQsICAwLCAgMCwNCisgICAgMjEyLCAxOCwgMTI2LCAxOTAsICA3LCAxMTMsIDE2OCwgIDAsIDEwMCwgMTQ2LCAgMCwgODYsIDEyNiwgIDAsIDczLCAxMDYsICAwLCA1OSwgIDg0LCAgMCwgNDMsICA1OSwgIDAsIDIyLCAgIDQsICAwLCAgMCwNCisgICAgMjEyLCAyMSwgMTE1LCAxOTAsIDEzLCAxMDMsIDE2OCwgIDMsIDkxLCAxNDYsICAwLCA3OCwgMTI1LCAgMCwgNjUsIDEwNSwgIDAsIDUyLCAgODQsICAwLCAzNiwgIDU4LCAgMCwgMTYsICAgNCwgIDAsICAwLA0KKyAgICAyMTMsIDI0LCAxMDMsIDE4OSwgMTksIDkxLCAxNjgsICA5LCA4MiwgMTQ2LCAgMCwgNjksIDEyNSwgIDAsIDU3LCAxMDUsICAwLCA0NCwgIDg0LCAgMCwgMjksICA1OCwgIDAsICA3LCAgIDQsICAwLCAgMCwNCisgICAgMjEzLCAyNywgOTIsIDE4OCwgMjEsIDgxLCAxNjgsIDE0LCA3MSwgMTQ2LCAgMSwgNTksIDEyNSwgIDAsIDQ4LCAxMDUsICAwLCAzNiwgIDg0LCAgMCwgMjEsICA1OCwgIDAsICA0LCAgIDQsICAwLCAgMCwNCisgICAgMjEzLCAzMCwgODAsIDE4OSwgMjIsIDY5LCAxNjgsIDE3LCA2MSwgMTQ2LCAgNSwgNTAsIDEyNSwgIDAsIDM5LCAxMDQsICAwLCAyNywgIDgzLCAgMCwgMTIsICA1NywgIDAsICAwLCAgIDQsICAwLCAgMCwNCisgICAgMjE0LCAzMCwgNjcsIDE4OSwgMjUsIDU3LCAxNjgsIDIwLCA1MCwgMTQ2LCAgOSwgNDAsIDEyNSwgIDAsIDI5LCAxMDQsICAwLCAxNywgIDgzLCAgMCwgIDIsICA1NiwgIDAsICAwLCAgIDQsICAwLCAgMCwNCisgICAgMjE0LCAzMiwgNTMsIDE4OSwgMjcsIDQ0LCAxNjksIDIwLCAzOCwgMTQ2LCAxMywgMjgsIDEyNCwgIDIsIDE3LCAxMDQsICAwLCAgNCwgIDgzLCAgMCwgIDAsICA1NiwgIDAsICAwLCAgIDQsICAwLCAgMCwNCisgICAgMjE0LCAzMywgNDEsIDE5MCwgMjcsIDMzLCAxNjgsIDIzLCAyNywgMTQ2LCAxMywgMTgsIDEyNSwgIDMsICA1LCAxMDUsICAwLCAgMCwgIDgzLCAgMCwgIDAsICA1NiwgIDAsICAwLCAgIDQsICAwLCAgMCwNCisgICAgMTg1LCAyMjksIDI1MCwgMTY0LCAyMDQsIDIyMywgMTQ2LCAxODIsIDE5OSwgMTI3LCAxNTgsIDE3NCwgMTA4LCAxMzYsIDE0OSwgIDg5LCAxMTMsIDEyNSwgIDcwLCA5MCwgMTAwLCAgNDYsIDYyLCA3MSwgIDEwLCAyNSwgMzMsDQorICAgIDE4OSwgMjI3LCAyMjUsIDE2OCwgMjAyLCAyMDEsIDE0OCwgMTgxLCAxNzksIDEyOSwgMTU3LCAxNTYsIDEwOSwgMTM1LCAxMzQsICA5MCwgMTEzLCAxMTMsICA3MCwgODksIDkwLCAgNDYsIDYyLCA2MiwgICA4LCAyNCwgMjUsDQorICAgIDE5MiwgMjI2LCAyMDIsIDE3MCwgMjAyLCAxODIsIDE1MSwgMTc5LCAxNjIsIDEzMCwgMTU2LCAxNDEsIDExMCwgMTMzLCAxMjEsICA5MSwgMTEyLCAxMDEsICA3MSwgODksIDgwLCAgNDYsIDYxLCA1NCwgICA3LCAyNCwgMTksDQorICAgIDE5NCwgMjI0LCAxNzksIDE3MywgMjAwLCAxNjAsIDE1MywgMTc4LCAxNDQsIDEzMiwgMTU1LCAxMjUsIDExMiwgMTMzLCAxMDcsICA5MiwgMTExLCA4OSwgIDcxLCA4OCwgNjksICA0NiwgNjEsIDQ1LCAgIDYsIDIzLCAxMCwNCisgICAgMTk2LCAyMjMsIDE1NSwgMTc0LCAxOTgsIDEzOSwgMTU0LCAxNzYsIDEyNCwgMTMyLCAxNTMsIDEwNywgMTEzLCAxMzEsIDkxLCAgOTIsIDExMCwgNzUsICA3MiwgODcsIDU4LCAgNDcsIDYwLCAzNywgICA0LCAyMywgIDAsDQorICAgIDE5OCwgMjIxLCAxMzEsIDE3NSwgMTk3LCAxMTcsIDE1NSwgMTc1LCAxMDUsIDEzMywgMTUyLCA5MSwgMTEzLCAxMzAsIDc2LCAgOTIsIDEwOSwgNjMsICA3MiwgODYsIDQ3LCAgNDYsIDYwLCAyNiwgICAzLCAyMywgIDAsDQorICAgIDIwMCwgMjIwLCAxMDQsIDE3NiwgMTk2LCA5NCwgMTU2LCAxNzUsIDg0LCAxMzQsIDE1MSwgNzIsIDExMywgMTI5LCA1OSwgIDkzLCAxMDgsIDQ3LCAgNzIsIDg1LCAzMywgIDQ2LCA1OSwgMTMsICAgMCwgMjMsICAwLA0KKyAgICAyMDEsIDIxOSwgNzMsIDE3OSwgMTk1LCA2NSwgMTU3LCAxNzMsIDU3LCAxMzUsIDE1MCwgNDgsIDExNCwgMTI5LCAzOSwgIDk0LCAxMDgsIDI4LCAgNzIsIDg1LCAxNSwgIDQ3LCA1OSwgIDAsICAgMCwgMjIsICAwLA0KKyAgICAyMDMsIDIxOSwgNDIsIDE3OCwgMTk1LCAzNywgMTU3LCAxNzMsIDMyLCAxMzUsIDE1MCwgMjYsIDExNCwgMTI4LCAxNiwgIDk0LCAxMDcsICA2LCAgNzMsIDg1LCAgMCwgIDQ2LCA1OCwgIDAsICAgMCwgMjIsICAwLA0KKyAgICAxODYsIDIwNSwgMjMzLCAxNjUsIDE4MywgMjA5LCAxNDgsIDE2MywgMTg3LCAxMjgsIDE0MiwgMTYzLCAxMDksIDEyMSwgMTQwLCAgOTEsIDEwMSwgMTE4LCAgNzEsIDgwLCA5NCwgIDQ4LCA1NCwgNjYsICAxMiwgMTUsIDI3LA0KKyAgICAxODksIDIwNCwgMjExLCAxNjksIDE4MiwgMTg5LCAxNTEsIDE2MywgMTY5LCAxMzEsIDE0MSwgMTQ3LCAxMTEsIDEyMSwgMTI2LCAgOTIsIDEwMSwgMTA1LCAgNzIsIDc5LCA4NCwgIDQ4LCA1NCwgNTgsICAxMSwgMTUsIDE5LA0KKyAgICAxOTIsIDIwMiwgMTkwLCAxNzEsIDE4MSwgMTcwLCAxNTIsIDE2MSwgMTUyLCAxMzEsIDE0MSwgMTMzLCAxMTIsIDEyMCwgMTEzLCAgOTMsIDEwMCwgOTQsICA3MiwgNzksIDc0LCAgNDgsIDUzLCA1MCwgIDEwLCAxNSwgMTEsDQorICAgIDE5NSwgMjAxLCAxNjksIDE3MiwgMTc5LCAxNTEsIDE1MywgMTYwLCAxMzUsIDEzMiwgMTM5LCAxMTcsIDExMywgMTE5LCAxMDAsICA5MywgOTksIDgyLCAgNzIsIDc4LCA2NCwgIDQ4LCA1MywgNDEsICAgOSwgMTQsICAzLA0KKyAgICAxOTUsIDIwMCwgMTQ2LCAxNzQsIDE3OSwgMTMxLCAxNTQsIDE1OSwgMTE3LCAxMzMsIDEzOCwgMTAxLCAxMTMsIDExOCwgODYsICA5MywgOTgsIDcwLCAgNzMsIDc3LCA1MywgIDQ4LCA1MiwgMzIsICAgOCwgMTUsICAwLA0KKyAgICAxOTgsIDE5OSwgMTI1LCAxNzUsIDE3NywgMTExLCAxNTUsIDE1OCwgMTAwLCAxMzMsIDEzNywgODUsIDExMywgMTE3LCA3MSwgIDkzLCA5NywgNTcsICA3MiwgNzcsIDQyLCAgNDcsIDUyLCAyMiwgICA1LCAxNCwgIDAsDQorICAgIDE5OSwgMTk4LCAxMDEsIDE3NiwgMTc3LCA4OSwgMTU1LCAxNTcsIDc5LCAxMzQsIDEzNiwgNjgsIDExMywgMTE2LCA1NiwgIDk0LCA5NywgNDQsICA3MywgNzYsIDMwLCAgNDcsIDUyLCAxMCwgICAyLCAxNSwgIDAsDQorICAgIDIwMCwgMTk3LCA3MiwgMTc4LCAxNzYsIDYzLCAxNTcsIDE1NiwgNTYsIDEzNSwgMTM2LCA0NiwgMTE0LCAxMTYsIDM3LCAgOTQsIDk2LCAyNiwgIDczLCA3NiwgMTEsICA0NywgNTEsICAwLCAgIDAsIDE0LCAgMCwNCisgICAgMjAxLCAxOTcsIDQ1LCAxNzcsIDE3NSwgMzgsIDE1NiwgMTU1LCAzMSwgMTM1LCAxMzUsIDI1LCAxMTQsIDExNSwgMTcsICA5NCwgOTYsICA1LCAgNzMsIDc1LCAgMCwgIDQ2LCA1MSwgIDAsICAgMCwgMTQsICAwLA0KKyAgICAxODcsIDE4MywgMjE4LCAxNjcsIDE2NSwgMTk3LCAxNDksIDE0NywgMTc2LCAxMjksIDEyNywgMTUzLCAxMTEsIDEwOSwgMTMyLCAgOTIsIDkwLCAxMTEsICA3MywgNzAsIDg5LCAgNDksIDQ2LCA2MiwgIDE1LCAgNCwgMjIsDQorICAgIDE5MCwgMTgzLCAxOTcsIDE3MCwgMTY0LCAxNzcsIDE1MSwgMTQ2LCAxNTksIDEzMCwgMTI3LCAxMzksIDExMiwgMTA5LCAxMTksICA5MywgOTAsIDk5LCAgNzIsIDcwLCA3OCwgIDQ5LCA0NSwgNTMsICAxNCwgIDQsIDE1LA0KKyAgICAxOTIsIDE4MiwgMTc5LCAxNzEsIDE2MywgMTYxLCAxNTMsIDE0NSwgMTQ0LCAxMzIsIDEyNiwgMTI1LCAxMTMsIDEwOCwgMTA3LCAgOTMsIDg5LCA4OCwgIDczLCA3MCwgNjksICA0OSwgNDUsIDQ1LCAgMTMsICA1LCAgNiwNCisgICAgMTk1LCAxODEsIDE1OSwgMTcyLCAxNjIsIDE0MiwgMTUyLCAxNDUsIDEyNywgMTMyLCAxMjUsIDExMSwgMTEzLCAxMDcsIDk0LCAgOTMsIDg4LCA3NywgIDczLCA2OSwgNTksICA0OCwgNDUsIDM3LCAgMTEsICA1LCAgMCwNCisgICAgMTk1LCAxODAsIDEzOSwgMTczLCAxNjEsIDEyNCwgMTUzLCAxNDMsIDExMCwgMTMzLCAxMjUsIDk2LCAxMTMsIDEwNiwgODEsICA5NCwgODgsIDY2LCAgNzMsIDY4LCA0OSwgIDQ5LCA0NCwgMjgsICAgOSwgIDYsICAwLA0KKyAgICAxOTYsIDE3OSwgMTE4LCAxNzQsIDE2MCwgMTA2LCAxNTQsIDE0MiwgOTQsIDEzMywgMTI0LCA4MSwgMTEzLCAxMDUsIDY4LCAgOTQsIDg3LCA1NCwgIDczLCA2OCwgMzksICA0OCwgNDQsIDE4LCAgIDUsICA1LCAgMCwNCisgICAgMTk3LCAxNzgsIDk2LCAxNzYsIDE1OSwgODYsIDE1NSwgMTQxLCA3NSwgMTM0LCAxMjMsIDY0LCAxMTQsIDEwNSwgNTMsICA5NCwgODcsIDQwLCAgNzMsIDY4LCAyNiwgIDQ4LCA0NCwgIDUsICAgMiwgIDYsICAwLA0KKyAgICAxOTksIDE3OCwgNzAsIDE3NiwgMTU4LCA2MiwgMTU2LCAxNDEsIDU0LCAxMzQsIDEyMiwgNDQsIDExNCwgMTA0LCAzNSwgIDk0LCA4NiwgMjMsICA3MywgNjcsICA4LCAgNDcsIDQ0LCAgMCwgICAyLCAgNiwgIDAsDQorICAgIDE5OSwgMTc3LCA0NSwgMTc4LCAxNTgsIDQwLCAxNTYsIDE0MCwgMzIsIDEzNSwgMTIyLCAyNiwgMTE0LCAxMDQsIDE2LCAgOTQsIDg2LCAgNCwgIDczLCA2NywgIDAsICA0NywgNDQsICAwLCAgIDAsICA3LCAgMCwNCisgICAgMTg4LCAxNjEsIDIwNCwgMTY4LCAxNDQsIDE4MywgMTQ5LCAxMjksIDE2NCwgMTMwLCAxMTIsIDE0NCwgMTEyLCA5NSwgMTIzLCAgOTMsIDc4LCAxMDMsICA3NCwgNjAsIDgxLCAgNTAsIDM2LCA1NiwgIDE2LCAgMCwgMTYsDQorICAgIDE5MCwgMTYwLCAxODUsIDE3MCwgMTQ0LCAxNjUsIDE1MSwgMTI4LCAxNDgsIDEzMiwgMTExLCAxMzAsIDExMiwgOTUsIDExMCwgIDkzLCA3OCwgOTIsICA3NCwgNTksIDcyLCAgNTAsIDM2LCA0OCwgIDE2LCAgMCwgIDgsDQorICAgIDE5MiwgMTYwLCAxNjcsIDE3MSwgMTQzLCAxNTAsIDE1MywgMTI4LCAxMzQsIDEzMiwgMTExLCAxMTcsIDExMiwgOTQsIDEwMCwgIDk0LCA3NywgODIsICA3NCwgNTksIDYzLCAgNTAsIDM2LCA0MCwgIDE0LCAgMCwgIDAsDQorICAgIDE5MywgMTU5LCAxNDksIDE3MiwgMTQzLCAxMzQsIDE1MywgMTI3LCAxMTksIDEzMywgMTEwLCAxMDMsIDExMywgOTQsIDg3LCAgOTMsIDc3LCA3MiwgIDczLCA1OSwgNTQsICA1MCwgMzYsIDMyLCAgMTIsICAwLCAgMCwNCisgICAgMTk1LCAxNTksIDEzMSwgMTczLCAxNDIsIDExNywgMTUzLCAxMjcsIDEwNCwgMTMyLCAxMTAsIDkwLCAxMTMsIDkzLCA3NiwgIDkzLCA3NiwgNjEsICA3NCwgNTksIDQ1LCAgNDksIDM2LCAyMywgICA5LCAgMCwgIDAsDQorICAgIDE5NiwgMTU4LCAxMTMsIDE3NCwgMTQxLCAxMDEsIDE1NSwgMTI2LCA4OSwgMTMzLCAxMDksIDc2LCAxMTMsIDkzLCA2NCwgIDk0LCA3NiwgNTEsICA3NCwgNTgsIDM1LCAgNDksIDM2LCAxNCwgICA2LCAgMCwgIDAsDQorICAgIDE5NywgMTU3LCA5MiwgMTc0LCAxNDEsIDgwLCAxNTQsIDEyNSwgNzEsIDEzNCwgMTA4LCA2MCwgMTE0LCA5MiwgNTAsICA5NCwgNzUsIDM3LCAgNzMsIDU4LCAyMiwgIDQ4LCAzNiwgIDEsICAgNSwgIDAsICAwLA0KKyAgICAxOTcsIDE1NywgNjgsIDE3NSwgMTQwLCA1OSwgMTU1LCAxMjQsIDUxLCAxMzQsIDEwOCwgNDEsIDExMywgOTEsIDMyLCAgOTQsIDc1LCAyMSwgIDczLCA1NywgIDUsICA0OCwgMzUsICAwLCAgIDUsICAwLCAgMCwNCisgICAgMTk4LCAxNTYsIDQ2LCAxNzYsIDE0MCwgNDAsIDE1NSwgMTI0LCAzMiwgMTM0LCAxMDcsIDI0LCAxMTQsIDkxLCAxNCwgIDk0LCA3NSwgIDIsICA3MywgNTcsICAwLCAgNDgsIDM2LCAgMCwgICAzLCAgMCwgIDAsDQorICAgIDE4OSwgMTQwLCAxOTEsIDE2OCwgMTI2LCAxNzIsIDE1MCwgMTEyLCAxNTQsIDEzMSwgOTcsIDEzNCwgMTEyLCA4MiwgMTE1LCAgOTQsIDY2LCA5NiwgIDc0LCA0OSwgNzUsICA1MSwgMjUsIDUwLCAgMTIsICAwLCAxMCwNCisgICAgMTkxLCAxMzksIDE3MywgMTcwLCAxMjUsIDE1NCwgMTUyLCAxMTEsIDEzOCwgMTMyLCA5NiwgMTIxLCAxMTMsIDgxLCAxMDMsICA5NCwgNjYsIDg1LCAgNzQsIDQ4LCA2NiwgIDUwLCAyNiwgNDIsICAxMiwgIDAsICAxLA0KKyAgICAxOTIsIDEzOSwgMTU3LCAxNzEsIDEyNSwgMTQwLCAxNTIsIDExMSwgMTI1LCAxMzIsIDk2LCAxMDksIDExMywgODEsIDkyLCAgOTQsIDY1LCA3NiwgIDc0LCA0OCwgNTgsICA1MCwgMjYsIDM1LCAgIDksICAwLCAgMCwNCisgICAgMTkzLCAxMzksIDE0MCwgMTcyLCAxMjQsIDEyNSwgMTUzLCAxMTAsIDExMiwgMTMzLCA5NSwgOTYsIDExMywgODAsIDgyLCAgOTQsIDY1LCA2NiwgIDc0LCA0OSwgNTAsICA1MCwgMjYsIDI4LCAgIDcsICAwLCAgMCwNCisgICAgMTk0LCAxMzgsIDEyMywgMTcyLCAxMjMsIDEwOSwgMTUzLCAxMTAsIDk3LCAxMzMsIDk1LCA4NCwgMTEzLCA4MCwgNzAsICA5NCwgNjUsIDU2LCAgNzQsIDQ4LCA0MCwgIDUwLCAyNiwgMjAsICAgNiwgIDAsICAwLA0KKyAgICAxOTQsIDEzOCwgMTA1LCAxNzMsIDEyMywgOTQsIDE1MywgMTA5LCA4MywgMTMzLCA5NCwgNzAsIDExMiwgNzksIDU5LCAgOTQsIDY0LCA0NiwgIDc0LCA0OCwgMzEsICA1MCwgMjYsICA5LCAgIDQsICAwLCAgMCwNCisgICAgMTk2LCAxMzgsIDg3LCAxNzQsIDEyMiwgNzcsIDE1MywgMTA5LCA2NywgMTMzLCA5MywgNTYsIDExMywgNzksIDQ2LCAgOTQsIDY0LCAzNCwgIDczLCA0OCwgMTgsICA0OSwgMjcsICAwLCAgIDQsICAwLCAgMCwNCisgICAgMTk2LCAxMzcsIDY1LCAxNzQsIDEyMiwgNTcsIDE1NCwgMTA4LCA0OSwgMTMzLCA5MywgMzksIDExMywgNzksIDI5LCAgOTQsIDY0LCAxOCwgIDc0LCA0OCwgIDMsICA0OSwgMjcsICAwLCAgIDIsICAwLCAgMCwNCisgICAgMTk3LCAxMzcsIDQ3LCAxNzUsIDEyMiwgNDAsIDE1NSwgMTA4LCAzMiwgMTMzLCA5MywgMjMsIDExNCwgNzksIDE0LCAgOTQsIDY0LCAgMSwgIDczLCA0OCwgIDAsICA0OCwgMjcsICAwLCAgIDIsICAwLCAgMCwNCisgICAgMTg5LCAxMTksIDE3NywgMTY4LCAxMDYsIDE1OSwgMTUwLCA5NCwgMTQyLCAxMzEsIDgxLCAxMjQsIDExMywgNjcsIDEwNywgIDk0LCA1MywgODksICA3NCwgMzcsIDY5LCAgNTEsIDExLCA0NSwgICA2LCAgMCwgIDMsDQorICAgIDE5MSwgMTE5LCAxNjEsIDE3MCwgMTA2LCAxNDQsIDE1MiwgOTQsIDEyOSwgMTMyLCA4MSwgMTEyLCAxMTMsIDY3LCA5NiwgIDk0LCA1MywgNzksICA3NCwgMzcsIDYxLCAgNTEsIDEzLCAzOCwgICA2LCAgMCwgIDAsDQorICAgIDE5MiwgMTE5LCAxNDYsIDE3MCwgMTA2LCAxMzEsIDE1MiwgOTQsIDExNywgMTMyLCA4MCwgMTAxLCAxMTIsIDY3LCA4NSwgIDk0LCA1MywgNzAsICA3NCwgMzcsIDUzLCAgNTAsIDE0LCAzMSwgICA0LCAgMCwgIDAsDQorICAgIDE5MiwgMTE5LCAxMzEsIDE3MSwgMTA2LCAxMTcsIDE1MywgOTQsIDEwNSwgMTMyLCA4MCwgODksIDExMywgNjcsIDc1LCAgOTQsIDU0LCA2MSwgIDc0LCAzOCwgNDUsICA1MSwgMTQsIDIzLCAgIDMsICAwLCAgMCwNCisgICAgMTkzLCAxMTgsIDExNCwgMTcxLCAxMDYsIDEwMiwgMTUzLCA5MywgOTAsIDEzMiwgODAsIDc4LCAxMTMsIDY3LCA2NSwgIDk0LCA1MywgNTIsICA3NCwgMzcsIDM2LCAgNTAsIDE1LCAxNiwgICAxLCAgMCwgIDAsDQorICAgIDE5NCwgMTE4LCA5OSwgMTcyLCAxMDUsIDg5LCAxNTMsIDkzLCA3OCwgMTMyLCA4MCwgNjYsIDExMywgNjcsIDU0LCAgOTQsIDUzLCA0MiwgIDc0LCAzOCwgMjcsICA1MCwgMTYsICA1LCAgIDEsICAwLCAgMCwNCisgICAgMTk0LCAxMTgsIDgyLCAxNzMsIDEwNSwgNzIsIDE1MywgOTMsIDYzLCAxMzIsIDc5LCA1MywgMTEzLCA2NywgNDIsICA5NCwgNTMsIDMwLCAgNzQsIDM4LCAxNSwgIDQ5LCAxNiwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxOTUsIDExNywgNjMsIDE3MywgMTA1LCA1NSwgMTU0LCA5MywgNDcsIDEzMywgNzksIDM3LCAxMTMsIDY2LCAyNywgIDk0LCA1MywgMTUsICA3MywgMzgsICAwLCAgNDgsIDE2LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE5NSwgMTE3LCA0NiwgMTczLCAxMDQsIDM5LCAxNTQsIDkyLCAzMiwgMTMzLCA3OSwgMjIsIDExMywgNjYsIDEzLCAgOTQsIDUzLCAgMCwgIDczLCAzOCwgIDAsICA0OCwgMTcsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTg5LCA5NiwgMTY2LCAxNjgsIDg1LCAxNDcsIDE1MCwgNzQsIDEzMiwgMTMxLCA2MiwgMTE1LCAxMTMsIDUxLCA5OSwgIDk0LCAzOCwgODIsICA3NCwgMjEsIDYzLCAgNTEsICAwLCA0MCwgICAxLCAgMCwgIDAsDQorICAgIDE5MCwgOTYsIDE1MCwgMTcwLCA4NSwgMTMzLCAxNTIsIDc1LCAxMTksIDEzMiwgNjMsIDEwNCwgMTEzLCA1MSwgODgsICA5NCwgMzgsIDcyLCAgNzUsIDIyLCA1NSwgIDUxLCAgMCwgMzMsICAgMSwgIDAsICAwLA0KKyAgICAxOTIsIDk2LCAxMzcsIDE3MCwgODUsIDEyMSwgMTUyLCA3NCwgMTA4LCAxMzIsIDY0LCA5NCwgMTEzLCA1MiwgNzksICA5NCwgMzksIDY0LCAgNzQsIDIzLCA0OCwgIDUwLCAgMCwgMjYsICAgMCwgIDAsICAwLA0KKyAgICAxOTIsIDk2LCAxMjIsIDE3MSwgODYsIDEwOSwgMTUyLCA3NSwgOTYsIDEzMiwgNjMsIDgzLCAxMTMsIDUyLCA2OSwgIDk0LCAzOSwgNTYsICA3NCwgMjQsIDQxLCAgNTAsICAwLCAxOSwgICAwLCAgMCwgIDAsDQorICAgIDE5MywgOTYsIDEwNywgMTcxLCA4NSwgOTYsIDE1MiwgNzUsIDg0LCAxMzIsIDY0LCA3MiwgMTEzLCA1MiwgNjAsICA5NCwgMzksIDQ3LCAgNzQsIDI0LCAzMiwgIDUwLCAgMSwgMTAsICAgMCwgIDAsICAwLA0KKyAgICAxOTMsIDk2LCA5MywgMTcyLCA4NSwgODIsIDE1MiwgNzUsIDcyLCAxMzMsIDYzLCA2MSwgMTEzLCA1MSwgNDksICA5NCwgMzksIDM3LCAgNzMsIDI1LCAyMywgIDQ5LCAgMiwgIDIsICAgMCwgIDAsICAwLA0KKyAgICAxOTQsIDk2LCA3OCwgMTcyLCA4NSwgNjgsIDE1MiwgNzUsIDU5LCAxMzIsIDYzLCA0OSwgMTEzLCA1MiwgMzksICA5NCwgNDAsIDI2LCAgNzMsIDI1LCAxMSwgIDQ4LCAgMywgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxOTQsIDk2LCA2MCwgMTczLCA4NSwgNTIsIDE1MywgNzUsIDQ0LCAxMzIsIDY0LCAzNSwgMTEyLCA1MiwgMjUsICA5NCwgNDAsIDEyLCAgNzMsIDI2LCAgMCwgIDQ4LCAgNCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxOTUsIDk2LCA0NiwgMTczLCA4NSwgMzgsIDE1NCwgNzQsIDMxLCAxMzMsIDYzLCAyMiwgMTEzLCA1MiwgMTEsICA5MywgNDAsICAwLCAgNzMsIDI2LCAgMCwgIDQ3LCAgNSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxODgsIDY3LCAxNTMsIDE2OCwgNTgsIDEzNywgMTUxLCA0OSwgMTIyLCAxMzEsIDM5LCAxMDYsIDExMywgMjgsIDkwLCAgOTQsIDEzLCA3NSwgIDc1LCAgMCwgNTcsICA1MSwgIDAsIDM1LCAgIDAsICAwLCAgMCwNCisgICAgMTkwLCA2OCwgMTM4LCAxNzAsIDU5LCAxMjMsIDE1MiwgNTAsIDExMCwgMTMyLCA0MSwgOTYsIDExMywgMjksIDgwLCAgOTQsIDE2LCA2NiwgIDc1LCAgMCwgNDksICA1MCwgIDAsIDI3LCAgIDAsICAwLCAgMCwNCisgICAgMTkxLCA2OSwgMTI2LCAxNzAsIDU5LCAxMTIsIDE1MSwgNTIsIDEwMCwgMTMyLCA0MiwgODYsIDExMywgMzAsIDczLCAgOTUsIDE3LCA1OCwgIDc1LCAgMCwgNDIsICA1MCwgIDAsIDIxLCAgIDAsICAwLCAgMCwNCisgICAgMTkyLCA3MCwgMTEzLCAxNzAsIDYxLCAxMDAsIDE1MSwgNTIsIDg5LCAxMzIsIDQyLCA3NywgMTEzLCAzMSwgNjQsICA5NCwgMTksIDUwLCAgNzQsICAxLCAzNSwgIDUwLCAgMCwgMTQsICAgMCwgIDAsICAwLA0KKyAgICAxOTIsIDcwLCAxMDAsIDE3MCwgNjIsIDg5LCAxNTEsIDUzLCA3NywgMTMxLCA0MywgNjYsIDExMiwgMzIsIDU0LCAgOTQsIDIwLCA0MiwgIDc0LCAgMiwgMjcsICA0OSwgIDAsICA1LCAgIDAsICAwLCAgMCwNCisgICAgMTkyLCA3MSwgODcsIDE3MSwgNjEsIDc3LCAxNTIsIDUzLCA2NywgMTMxLCA0NCwgNTcsIDExMiwgMzMsIDQ1LCAgOTQsIDIxLCAzMywgIDc0LCAgNCwgMTksICA0OSwgIDAsICAxLCAgIDAsICAwLCAgMCwNCisgICAgMTkzLCA3MSwgNzQsIDE3MSwgNjIsIDY0LCAxNTIsIDUzLCA1NSwgMTMyLCA0NCwgNDUsIDExMywgMzQsIDM0LCAgOTQsIDIyLCAyMywgIDczLCAgNSwgIDcsICA0OCwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTkzLCA3MCwgNTgsIDE3MiwgNjIsIDUwLCAxNTIsIDU0LCA0MiwgMTMyLCA0NCwgMzIsIDExMiwgMzUsIDIyLCAgOTMsIDIzLCAxMCwgIDczLCAgNiwgIDAsICA0NywgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTkzLCA3MCwgNDUsIDE3MiwgNjIsIDM4LCAxNTMsIDU0LCAzMSwgMTMyLCA0NCwgMjEsIDExMiwgMzUsICA5LCAgOTQsIDIzLCAgMCwgIDczLCAgNywgIDAsICA0NywgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTg5LCAyNiwgMTQxLCAxNjksIDE1LCAxMjYsIDE1MCwgIDIsIDExMiwgMTMxLCAgMCwgOTcsIDExMywgIDAsIDgyLCAgOTQsICAwLCA2NywgIDc1LCAgMCwgNTEsICA1MCwgIDAsIDI5LCAgIDAsICAwLCAgMCwNCisgICAgMTkwLCAyOCwgMTI4LCAxNzAsIDE4LCAxMTQsIDE1MSwgIDgsIDEwMSwgMTMyLCAgMCwgODgsIDExMywgIDAsIDc0LCAgOTQsICAwLCA2MCwgIDc1LCAgMCwgNDQsICA1MCwgIDAsIDIzLCAgIDAsICAwLCAgMCwNCisgICAgMTkxLCAzMCwgMTE3LCAxNzAsIDIzLCAxMDQsIDE1MiwgMTEsIDkyLCAxMzIsICAxLCA3OSwgMTEzLCAgMCwgNjcsICA5NSwgIDAsIDUzLCAgNzUsICAwLCAzNywgIDUwLCAgMCwgMTcsICAgMCwgIDAsICAwLA0KKyAgICAxOTEsIDMzLCAxMDUsIDE3MCwgMjYsIDkzLCAxNTEsIDE4LCA4MywgMTMyLCAgNiwgNzAsIDExMiwgIDAsIDU4LCAgOTQsICAwLCA0NSwgIDc1LCAgMCwgMzAsICA0OSwgIDAsICA4LCAgIDAsICAwLCAgMCwNCisgICAgMTkxLCAzNCwgOTMsIDE3MCwgMjcsIDgyLCAxNTEsIDIwLCA3MiwgMTMxLCAgOCwgNjEsIDExMiwgIDAsIDQ5LCAgOTQsICAwLCAzOCwgIDc0LCAgMCwgMjMsICA0OSwgIDAsICA0LCAgIDAsICAwLCAgMCwNCisgICAgMTkxLCAzNiwgODIsIDE3MCwgMjksIDcxLCAxNTEsIDIyLCA2MywgMTMxLCAxMSwgNTIsIDExMiwgIDAsIDQxLCAgOTMsICAwLCAyOSwgIDc0LCAgMCwgMTQsICA0OCwgIDAsICAxLCAgIDAsICAwLCAgMCwNCisgICAgMTkxLCAzOCwgNjksIDE3MCwgMzEsIDYwLCAxNTEsIDI0LCA1MSwgMTMxLCAxNCwgNDEsIDExMiwgIDEsIDMxLCAgOTMsICAwLCAxOSwgIDczLCAgMCwgIDMsICA0OCwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTkyLCAzNywgNTYsIDE3MSwgMzEsIDQ3LCAxNTIsIDI1LCA0MCwgMTMxLCAxNywgMzAsIDExMiwgIDQsIDE5LCAgOTMsICAwLCAgNywgIDczLCAgMCwgIDAsICA0NywgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTkyLCAzOCwgNDUsIDE3MSwgMzMsIDM2LCAxNTIsIDI2LCAzMCwgMTMxLCAxOCwgMjEsIDExMSwgIDcsICA5LCAgOTMsICAwLCAgMCwgIDczLCAgMCwgIDAsICA0NywgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTQ5LCAyMTgsIDI0OCwgMTMzLCAxOTQsIDIyMiwgMTE5LCAxNzMsIDE5OCwgMTAyLCAxNTEsIDE3MywgIDg2LCAxMzAsIDE0OCwgIDcwLCAxMDgsIDEyNSwgIDUzLCA4NSwgMTAwLCAgMzIsIDU5LCA3MSwgICAwLCAyMiwgMzMsDQorICAgIDE1NCwgMjE2LCAyMjMsIDEzNywgMTkzLCAyMDAsIDEyMiwgMTcyLCAxNzgsIDEwNiwgMTUwLCAxNTYsICA4OSwgMTI4LCAxMzMsICA3MywgMTA3LCAxMTIsICA1NCwgODUsIDg5LCAgMzEsIDU5LCA2MywgICAwLCAyMiwgMjYsDQorICAgIDE1OSwgMjE1LCAyMDIsIDE0MSwgMTkyLCAxODEsIDEyNiwgMTcxLCAxNjEsIDEwOCwgMTQ5LCAxNDEsICA5MCwgMTI4LCAxMjEsICA3NCwgMTA3LCAxMDAsICA1NSwgODUsIDgwLCAgMzIsIDU4LCA1NSwgICAwLCAyMiwgMTksDQorICAgIDE2MSwgMjEzLCAxNzksIDE0NCwgMTkwLCAxNjAsIDEyNiwgMTcwLCAxNDMsIDEwOSwgMTQ4LCAxMjUsICA5MiwgMTI3LCAxMDcsICA3NCwgMTA2LCA4OSwgIDU2LCA4NCwgNjksICAzMiwgNTgsIDQ2LCAgIDAsIDIxLCAxMSwNCisgICAgMTYzLCAyMTEsIDE1NiwgMTQ0LCAxODksIDEzOSwgMTI5LCAxNjgsIDEyNSwgMTEwLCAxNDcsIDEwOCwgIDkzLCAxMjYsIDkyLCAgNzUsIDEwNSwgNzYsICA1NywgODMsIDU4LCAgMzMsIDU4LCAzNywgICAwLCAyMSwgIDEsDQorICAgIDE2NywgMjExLCAxMzMsIDE0NywgMTg4LCAxMjAsIDEzMCwgMTY3LCAxMDUsIDExMCwgMTQ1LCA5MiwgIDkzLCAxMjUsIDc4LCAgNzYsIDEwNCwgNjQsICA1OCwgODMsIDQ4LCAgMzMsIDU3LCAyNywgICAwLCAyMSwgIDAsDQorICAgIDE2OSwgMjEwLCAxMDgsIDE0OSwgMTg3LCA5NiwgMTMxLCAxNjYsIDg2LCAxMTIsIDE0NCwgNzQsICA5NCwgMTI0LCA2MiwgIDc3LCAxMDMsIDQ5LCAgNTgsIDgyLCAzNSwgIDMzLCA1NywgMTUsICAgMCwgMjEsICAwLA0KKyAgICAxNzAsIDIwOSwgODAsIDE1MSwgMTg2LCA3MSwgMTMzLCAxNjUsIDYyLCAxMTQsIDE0MywgNTIsICA5NSwgMTIzLCA0MiwgIDc3LCAxMDMsIDMyLCAgNTgsIDgxLCAxOCwgIDMzLCA1NiwgIDAsICAgMCwgMjEsICAwLA0KKyAgICAxNzMsIDIwOCwgNTUsIDE1MiwgMTg2LCA0OSwgMTM0LCAxNjUsIDQxLCAxMTQsIDE0MywgMzQsICA5NSwgMTIyLCAyNSwgIDc3LCAxMDIsIDE0LCAgNTgsIDgxLCAgMCwgIDMzLCA1NiwgIDAsICAgMCwgMjEsICAwLA0KKyAgICAxNTQsIDE5NSwgMjMyLCAxMzcsIDE3NCwgMjA3LCAxMjIsIDE1NiwgMTg1LCAxMDUsIDEzNiwgMTYzLCAgODksIDExNiwgMTQwLCAgNzMsIDk3LCAxMTcsICA1NiwgNzYsIDk0LCAgMzUsIDUxLCA2NiwgICAwLCAxMywgMjgsDQorICAgIDE1OCwgMTk0LCAyMDksIDE0MSwgMTc0LCAxODcsIDEyNSwgMTU1LCAxNjcsIDEwOSwgMTM1LCAxNDYsICA5MSwgMTE2LCAxMjUsICA3NSwgOTYsIDEwNSwgIDU3LCA3NSwgODMsICAzNSwgNTAsIDU3LCAgIDAsIDEyLCAyMSwNCisgICAgMTYxLCAxOTMsIDE4OSwgMTQ0LCAxNzMsIDE2OSwgMTI4LCAxNTQsIDE1MSwgMTEwLCAxMzQsIDEzMiwgIDkzLCAxMTUsIDExMywgIDc3LCA5NSwgOTQsICA1OCwgNzUsIDc0LCAgMzUsIDUwLCA1MCwgICAwLCAxMiwgMTMsDQorICAgIDE2NCwgMTkyLCAxNjgsIDE0NSwgMTcxLCAxNTEsIDEyOSwgMTUzLCAxMzQsIDExMSwgMTMzLCAxMTcsICA5NCwgMTE0LCAxMDAsICA3NiwgOTUsIDgyLCAgNTgsIDc1LCA2NCwgIDM2LCA1MCwgNDIsICAgMCwgMTIsICA1LA0KKyAgICAxNjUsIDE5MSwgMTQ3LCAxNDcsIDE3MCwgMTMxLCAxMzAsIDE1MiwgMTE3LCAxMTMsIDEzMiwgMTAyLCAgOTUsIDExMywgODYsICA3NywgOTQsIDcxLCAgNTgsIDc0LCA1NCwgIDM1LCA1MCwgMzMsICAgMCwgMTMsICAwLA0KKyAgICAxNjcsIDE4OSwgMTI2LCAxNDgsIDE2OSwgMTEzLCAxMzIsIDE1MSwgMTAwLCAxMTMsIDEzMSwgODYsICA5NiwgMTEyLCA3MywgIDc3LCA5MywgNTksICA1OSwgNzMsIDQzLCAgMzUsIDQ5LCAyMywgICAwLCAxMiwgIDAsDQorICAgIDE3MCwgMTg5LCAxMDQsIDE1MCwgMTY4LCA5MSwgMTMzLCAxNTAsIDgxLCAxMTQsIDEzMCwgNjksICA5NiwgMTExLCA1NywgIDc4LCA5MiwgNDYsICA1OSwgNzMsIDMxLCAgMzUsIDQ5LCAxMSwgICAwLCAxMywgIDAsDQorICAgIDE3MSwgMTg4LCA3OCwgMTUyLCAxNjgsIDY4LCAxMzQsIDE0OSwgNjAsIDExNSwgMTMwLCA1MCwgIDk2LCAxMTEsIDQxLCAgNzgsIDkyLCAyOSwgIDYwLCA3MywgMTUsICAzNSwgNDksICAwLCAgIDAsIDEyLCAgMCwNCisgICAgMTczLCAxODcsIDU1LCAxNTMsIDE2NywgNDcsIDEzNCwgMTQ5LCAzOSwgMTE1LCAxMjksIDMzLCAgOTcsIDExMCwgMjQsICA3OSwgOTIsIDEzLCAgNjAsIDcyLCAgMCwgIDM1LCA0OCwgIDAsICAgMCwgMTIsICAwLA0KKyAgICAxNTcsIDE3NSwgMjE3LCAxMzksIDE1NywgMTk2LCAxMjUsIDE0MSwgMTc1LCAxMDksIDEyMiwgMTUzLCAgOTIsIDEwNCwgMTMyLCAgNzYsIDg2LCAxMTAsICA1OSwgNjcsIDg4LCAgMzcsIDQzLCA2MSwgICAxLCAgMSwgMjMsDQorICAgIDE2MSwgMTc0LCAxOTYsIDE0NCwgMTU2LCAxNzYsIDEyNywgMTQwLCAxNTgsIDExMCwgMTIxLCAxMzcsICA5NCwgMTA0LCAxMTgsICA3NywgODUsIDk4LCAgNTksIDY3LCA3OCwgIDM3LCA0MywgNTMsICAgMCwgIDIsIDE2LA0KKyAgICAxNjMsIDE3NCwgMTc4LCAxNDYsIDE1NiwgMTYwLCAxMzAsIDEzOSwgMTQzLCAxMTIsIDEyMSwgMTI0LCAgOTUsIDEwMywgMTA2LCAgNzgsIDg1LCA4OCwgIDYwLCA2NiwgNjksICAzNywgNDIsIDQ2LCAgIDAsICAyLCAgNywNCisgICAgMTY2LCAxNzMsIDE1OSwgMTQ3LCAxNTQsIDE0MiwgMTMwLCAxMzgsIDEyNywgMTEzLCAxMjAsIDExMSwgIDk2LCAxMDMsIDk1LCAgNzgsIDg0LCA3NywgIDYwLCA2NiwgNTksICAzNywgNDMsIDM3LCAgIDAsICAyLCAgMCwNCisgICAgMTY2LCAxNzIsIDEzOSwgMTQ4LCAxNTQsIDEyNSwgMTMxLCAxMzcsIDExMiwgMTEzLCAxMjAsIDk2LCAgOTYsIDEwMiwgODEsICA3OCwgODQsIDY2LCAgNjAsIDY1LCA1MCwgIDM3LCA0MiwgMjksICAgMCwgIDMsICAwLA0KKyAgICAxNjcsIDE3MSwgMTIwLCAxNDksIDE1MywgMTA3LCAxMzMsIDEzNywgOTUsIDExNCwgMTE4LCA4MSwgIDk3LCAxMDEsIDY5LCAgNzksIDg0LCA1NiwgIDYwLCA2NSwgNDAsICAzNywgNDIsIDE5LCAgIDAsICAzLCAgMCwNCisgICAgMTcwLCAxNzAsIDk5LCAxNTEsIDE1MiwgODcsIDEzNCwgMTM2LCA3NywgMTE1LCAxMTgsIDY2LCAgOTcsIDEwMSwgNTUsICA3OSwgODMsIDQyLCAgNjEsIDY1LCAyOCwgIDM3LCA0MiwgIDcsICAgMCwgIDMsICAwLA0KKyAgICAxNzIsIDE3MCwgNzUsIDE1MiwgMTUxLCA2NSwgMTM0LCAxMzUsIDU3LCAxMTUsIDExNywgNDgsICA5NywgMTAwLCAzOCwgIDc5LCA4MywgMjcsICA2MSwgNjQsIDEyLCAgMzYsIDQyLCAgMCwgICAwLCAgMywgIDAsDQorICAgIDE3MiwgMTY5LCA1NSwgMTU0LCAxNTEsIDQ2LCAxMzUsIDEzNCwgNDAsIDExNiwgMTE2LCAzMiwgIDk3LCA5OSwgMjEsICA4MCwgODIsIDEwLCAgNjEsIDY0LCAgMCwgIDM2LCA0MSwgIDAsICAgMCwgIDMsICAwLA0KKyAgICAxNjAsIDE1NCwgMjAzLCAxNDMsIDEzOSwgMTgyLCAxMjcsIDEyNCwgMTY0LCAxMTEsIDEwNywgMTQzLCAgOTUsIDkxLCAxMjIsICA3OCwgNzUsIDEwMywgIDYwLCA1NywgODEsICAzOSwgMzMsIDU2LCAgIDEsICAwLCAxOCwNCisgICAgMTYzLCAxNTQsIDE4NCwgMTQ2LCAxMzgsIDE2NSwgMTMwLCAxMjMsIDE0OCwgMTEzLCAxMDcsIDEyOSwgIDk2LCA5MCwgMTEwLCAgNzksIDc0LCA5MiwgIDYxLCA1NiwgNzIsICAzOSwgMzQsIDQ4LCAgIDIsICAwLCAgOSwNCisgICAgMTY1LCAxNTQsIDE2NywgMTQ3LCAxMzcsIDE0OSwgMTMxLCAxMjIsIDEzNCwgMTE0LCAxMDYsIDExNywgIDk2LCA5MCwgMTAwLCAgNzksIDc0LCA4MiwgIDYxLCA1NiwgNjQsICAzOSwgMzMsIDQwLCAgIDIsICAwLCAgMSwNCisgICAgMTY2LCAxNTMsIDE1MCwgMTQ5LCAxMzcsIDEzMywgMTMyLCAxMjIsIDExOSwgMTE0LCAxMDYsIDEwNCwgIDk3LCA5MCwgODgsICA3OSwgNzQsIDcyLCAgNjEsIDU2LCA1NSwgIDM5LCAzNCwgMzMsICAgMCwgIDAsICAwLA0KKyAgICAxNjgsIDE1MiwgMTMyLCAxNDksIDEzNiwgMTE3LCAxMzIsIDEyMSwgMTA0LCAxMTQsIDEwNSwgOTAsICA5NywgODksIDc2LCAgNzksIDczLCA2MiwgIDYxLCA1NiwgNDYsICAzOCwgMzQsIDI1LCAgIDAsICAwLCAgMCwNCisgICAgMTY5LCAxNTEsIDExNCwgMTUwLCAxMzUsIDEwMSwgMTMzLCAxMjEsIDkwLCAxMTQsIDEwNCwgNzcsICA5NywgODksIDY1LCAgODAsIDczLCA1MSwgIDYxLCA1NiwgMzYsICAzOCwgMzQsIDE2LCAgIDAsICAwLCAgMCwNCisgICAgMTcwLCAxNTAsIDk0LCAxNTEsIDEzNSwgODMsIDEzNCwgMTIwLCA3MywgMTE1LCAxMDQsIDYyLCAgOTgsIDg4LCA1MSwgIDgwLCA3MiwgMzksICA2MSwgNTYsIDI0LCAgMzgsIDM0LCAgMywgICAwLCAgMCwgIDAsDQorICAgIDE3MiwgMTUwLCA3MiwgMTUzLCAxMzQsIDYzLCAxMzUsIDExOSwgNTUsIDExNSwgMTAzLCA0NSwgIDk4LCA4OCwgMzYsICA4MCwgNzIsIDI0LCAgNjEsIDU1LCAgOSwgIDM4LCAzNCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxNzIsIDE1MCwgNTQsIDE1MywgMTM0LCA0NywgMTM1LCAxMTksIDM4LCAxMTYsIDEwMywgMzAsICA5OCwgODcsIDIxLCAgODAsIDcyLCAgOCwgIDYyLCA1NSwgIDAsICAzNywgMzQsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTYyLCAxMzQsIDE5MCwgMTQ1LCAxMjAsIDE3MSwgMTI5LCAxMDgsIDE1MywgMTEzLCA5MywgMTM0LCAgOTcsIDc4LCAxMTUsICA4MCwgNjMsIDk2LCAgNjIsIDQ2LCA3NSwgIDQxLCAyMywgNTEsICAgMCwgIDAsIDExLA0KKyAgICAxNjUsIDEzNCwgMTczLCAxNDcsIDEyMCwgMTU0LCAxMzEsIDEwNywgMTM4LCAxMTQsIDkyLCAxMjAsICA5NywgNzgsIDEwMywgIDgwLCA2MywgODUsICA2MiwgNDYsIDY2LCAgNDAsIDIzLCA0MywgICAwLCAgMCwgIDIsDQorICAgIDE2NiwgMTM0LCAxNTcsIDE0OCwgMTIwLCAxNDAsIDEzMiwgMTA2LCAxMjUsIDExNCwgOTIsIDEwOSwgIDk3LCA3NywgOTMsICA4MSwgNjMsIDc3LCAgNjIsIDQ2LCA1OCwgIDQwLCAyNCwgMzYsICAgMCwgIDAsICAwLA0KKyAgICAxNjgsIDEzMywgMTQwLCAxNDksIDExOSwgMTI1LCAxMzIsIDEwNiwgMTEyLCAxMTUsIDkyLCA5NywgIDk4LCA3NywgODIsICA4MSwgNjIsIDY3LCAgNjIsIDQ2LCA1MCwgIDQwLCAyNCwgMjksICAgMCwgIDAsICAwLA0KKyAgICAxNjgsIDEzMywgMTIzLCAxNTAsIDExOSwgMTEwLCAxMzMsIDEwNiwgOTcsIDExNSwgOTEsIDg0LCAgOTgsIDc3LCA3MCwgIDgxLCA2MiwgNTcsICA2MiwgNDYsIDQxLCAgNDAsIDI0LCAyMCwgICAwLCAgMCwgIDAsDQorICAgIDE2OSwgMTMyLCAxMDcsIDE1MCwgMTE4LCA5NCwgMTMzLCAxMDUsIDg0LCAxMTUsIDkxLCA3MiwgIDk4LCA3NiwgNjAsICA4MCwgNjIsIDQ3LCAgNjIsIDQ2LCAzMiwgIDM5LCAyNSwgMTEsICAgMCwgIDAsICAwLA0KKyAgICAxNzEsIDEzMiwgODksIDE1MiwgMTE4LCA3OSwgMTM1LCAxMDUsIDY5LCAxMTUsIDkwLCA1OCwgIDk4LCA3NiwgNDcsICA4MCwgNjIsIDM2LCAgNjIsIDQ2LCAyMSwgIDM5LCAyNSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxNzEsIDEzMiwgNjksIDE1MywgMTE3LCA2MCwgMTM1LCAxMDQsIDUyLCAxMTYsIDkwLCA0MiwgIDk4LCA3NiwgMzMsICA4MSwgNjEsIDIxLCAgNjIsIDQ2LCAgNiwgIDM4LCAyNSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxNzIsIDEzMiwgNTQsIDE1MywgMTE4LCA0NSwgMTM1LCAxMDQsIDM4LCAxMTYsIDkwLCAyOCwgIDk4LCA3NiwgMTgsICA4MSwgNjEsICA2LCAgNjIsIDQ2LCAgMCwgIDM4LCAyNSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxNjQsIDExNSwgMTc3LCAxNDYsIDEwMywgMTU5LCAxMzAsIDkxLCAxNDMsIDExNCwgNzgsIDEyNSwgIDk3LCA2NSwgMTA3LCAgODEsIDUxLCA4OSwgIDYzLCAzNCwgNjksICA0MSwgIDksIDQ2LCAgIDAsICAwLCAgNCwNCisgICAgMTY2LCAxMTUsIDE2MSwgMTQ4LCAxMDMsIDE0NCwgMTMyLCA5MSwgMTI5LCAxMTUsIDc4LCAxMTIsICA5OCwgNjUsIDk2LCAgODEsIDUxLCA3OSwgIDYzLCAzNSwgNjEsICA0MSwgMTEsIDM4LCAgIDAsICAwLCAgMCwNCisgICAgMTY3LCAxMTUsIDE0NiwgMTUwLCAxMDIsIDEzMSwgMTMyLCA5MSwgMTE3LCAxMTUsIDc4LCAxMDEsICA5OCwgNjUsIDg2LCAgODEsIDUxLCA3MSwgIDYzLCAzNSwgNTQsICA0MSwgMTIsIDMyLCAgIDAsICAwLCAgMCwNCisgICAgMTY4LCAxMTQsIDEzMiwgMTUwLCAxMDMsIDExOCwgMTMzLCA5MSwgMTA1LCAxMTYsIDc4LCA5MSwgIDk4LCA2NCwgNzYsICA4MiwgNTEsIDYxLCAgNjMsIDM2LCA0NiwgIDQxLCAxMywgMjQsICAgMCwgIDAsICAwLA0KKyAgICAxNjksIDExNCwgMTE2LCAxNTAsIDEwMiwgMTAzLCAxMzQsIDkwLCA5MSwgMTE2LCA3OCwgNzksICA5OCwgNjUsIDY2LCAgODEsIDUxLCA1MywgIDYzLCAzNiwgMzcsICA0MCwgMTQsIDE3LCAgIDAsICAwLCAgMCwNCisgICAgMTY5LCAxMTQsIDEwMSwgMTUxLCAxMDEsIDg5LCAxMzQsIDkwLCA3OSwgMTE2LCA3NywgNjcsICA5OCwgNjQsIDU2LCAgODEsIDUxLCA0NCwgIDYzLCAzNiwgMjksICA0MCwgMTUsICA3LCAgIDAsICAwLCAgMCwNCisgICAgMTcwLCAxMTQsIDg1LCAxNTIsIDEwMSwgNzUsIDEzNSwgOTAsIDY1LCAxMTYsIDc3LCA1NCwgIDk4LCA2NCwgNDQsICA4MSwgNTEsIDMyLCAgNjMsIDM2LCAxNywgIDM5LCAxNSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxNzIsIDExMywgNjYsIDE1MiwgMTAxLCA1OCwgMTM1LCA4OSwgNDksIDExNiwgNzcsIDQwLCAgOTksIDY0LCAzMCwgIDgxLCA1MSwgMTgsICA2MiwgMzYsICAzLCAgMzgsIDE2LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE3MSwgMTEzLCA1MSwgMTUzLCAxMDEsIDQ0LCAxMzYsIDg5LCAzNiwgMTE2LCA3NywgMjgsICA5OSwgNjQsIDE4LCAgODEsIDUxLCAgNSwgIDYyLCAzNiwgIDAsICAzOCwgMTYsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTY1LCA5NCwgMTY2LCAxNDcsIDgyLCAxNDcsIDEzMiwgNzIsIDEzMiwgMTE1LCA2MSwgMTE1LCAgOTgsIDQ5LCA5OSwgIDgyLCAzNiwgODIsICA2NCwgMTksIDY0LCAgNDIsICAwLCA0MSwgICAwLCAgMCwgIDAsDQorICAgIDE2NywgOTMsIDE1MCwgMTUwLCA4MywgMTM0LCAxMzMsIDczLCAxMjAsIDExNiwgNjIsIDEwNCwgIDk5LCA0OSwgODgsICA4MiwgMzYsIDcyLCAgNjQsIDIwLCA1NSwgIDQxLCAgMCwgMzMsICAgMCwgIDAsICAwLA0KKyAgICAxNjksIDkzLCAxMzcsIDE1MCwgODMsIDEyMiwgMTM0LCA3MywgMTA5LCAxMTYsIDYxLCA5NCwgIDk5LCA1MCwgODAsICA4MiwgMzcsIDY1LCAgNjQsIDIxLCA0OSwgIDQxLCAgMCwgMjcsICAgMCwgIDAsICAwLA0KKyAgICAxNjksIDk0LCAxMjMsIDE1MCwgODMsIDExMCwgMTMzLCA3MywgOTcsIDExNiwgNjEsIDgzLCAgOTksIDUwLCA3MCwgIDgyLCAzOCwgNTcsICA2MywgMjMsIDQyLCAgNDEsICAwLCAyMCwgICAwLCAgMCwgIDAsDQorICAgIDE2OSwgOTQsIDEwOSwgMTUwLCA4NCwgOTcsIDEzNCwgNzMsIDg1LCAxMTYsIDYyLCA3MywgIDk5LCA1MSwgNjEsICA4MSwgMzgsIDQ4LCAgNjMsIDIzLCAzMywgIDQxLCAgMSwgMTEsICAgMCwgIDAsICAwLA0KKyAgICAxNzAsIDk0LCA5NiwgMTUwLCA4MywgODQsIDEzNCwgNzMsIDc0LCAxMTYsIDYxLCA2MiwgIDk5LCA1MCwgNTEsICA4MiwgMzgsIDM5LCAgNjQsIDIzLCAyNCwgIDQwLCAgMywgIDQsICAgMCwgIDAsICAwLA0KKyAgICAxNzEsIDkzLCA3OSwgMTUyLCA4MiwgNzAsIDEzNSwgNzMsIDYxLCAxMTYsIDYyLCA1MSwgIDk4LCA1MSwgNDAsICA4MSwgMzgsIDI4LCAgNjMsIDI0LCAxNCwgIDM5LCAgNCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxNzEsIDk0LCA2NCwgMTUyLCA4MywgNTUsIDEzNSwgNzMsIDQ3LCAxMTYsIDYyLCAzNywgIDk4LCA1MCwgMjcsICA4MSwgMzgsIDE1LCAgNjMsIDI0LCAgMSwgIDM5LCAgNCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxNzIsIDkzLCA1MSwgMTUzLCA4MiwgNDIsIDEzNSwgNzMsIDM1LCAxMTcsIDYyLCAyNiwgIDk5LCA1MSwgMTYsICA4MSwgMzksICAzLCAgNjMsIDI1LCAgMCwgIDM4LCAgNSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxNjYsIDY4LCAxNTMsIDE0OCwgNTksIDEzNywgMTMzLCA0OSwgMTIxLCAxMTUsIDM5LCAxMDYsICA5OSwgMjgsIDkxLCAgODIsIDEzLCA3NSwgIDY1LCAgMCwgNTgsICA0MiwgIDAsIDM2LCAgIDAsICAwLCAgMCwNCisgICAgMTY4LCA2OCwgMTM5LCAxNTAsIDU5LCAxMjQsIDEzNCwgNTAsIDExMCwgMTE2LCA0MCwgOTYsICA5OSwgMzAsIDgxLCAgODIsIDE2LCA2NiwgIDY0LCAgMCwgNTAsICA0MSwgIDAsIDI5LCAgIDAsICAwLCAgMCwNCisgICAgMTY5LCA2OSwgMTI2LCAxNTAsIDU5LCAxMTMsIDEzNCwgNTEsIDEwMSwgMTE3LCA0MiwgODcsIDEwMCwgMzAsIDczLCAgODIsIDE3LCA1OSwgIDY1LCAgMCwgNDMsICA0MSwgIDAsIDIzLCAgIDAsICAwLCAgMCwNCisgICAgMTY5LCA3MCwgMTE1LCAxNTAsIDYxLCAxMDIsIDEzNCwgNTIsIDg5LCAxMTYsIDQyLCA3NywgIDk5LCAzMiwgNjUsICA4MiwgMTksIDUyLCAgNjQsICAwLCAzNiwgIDQxLCAgMCwgMTUsICAgMCwgIDAsICAwLA0KKyAgICAxNjksIDcwLCAxMDEsIDE1MCwgNjEsIDkwLCAxMzQsIDUyLCA3OSwgMTE2LCA0MywgNjgsICA5OSwgMzIsIDU1LCAgODIsIDIxLCA0MywgIDY0LCAgMiwgMjgsICA0MSwgIDAsICA2LCAgIDAsICAwLCAgMCwNCisgICAgMTcwLCA3MCwgODksIDE1MSwgNjIsIDc5LCAxMzQsIDUzLCA2OSwgMTE2LCA0NCwgNTgsICA5OSwgMzMsIDQ2LCAgODEsIDIxLCAzNCwgIDY0LCAgMywgMjAsICA0MSwgIDAsICAyLCAgIDAsICAwLCAgMCwNCisgICAgMTcwLCA3MSwgNzYsIDE1MiwgNjIsIDY2LCAxMzQsIDUzLCA1NywgMTE2LCA0MywgNDYsICA5OSwgMzMsIDM2LCAgODIsIDIyLCAyNCwgIDY0LCAgNSwgMTAsICA0MCwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTcxLCA3MCwgNjEsIDE1MiwgNjIsIDUyLCAxMzUsIDUzLCA0NCwgMTE2LCA0NCwgMzUsICA5OSwgMzQsIDI0LCAgODIsIDIyLCAxMiwgIDYzLCAgNiwgIDAsICAzOSwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTcxLCA3MSwgNDksIDE1MywgNjIsIDQxLCAxMzUsIDU0LCAzMywgMTE3LCA0NSwgMjUsICA5OCwgMzQsIDEzLCAgODEsIDIzLCAgMCwgIDYzLCAgNywgIDAsICAzOSwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTY3LCAzMywgMTQyLCAxNDksIDI0LCAxMjcsIDEzNCwgMTAsIDExMywgMTE2LCAgMCwgOTcsIDEwMCwgIDAsIDgzLCAgODMsICAwLCA2OCwgIDY1LCAgMCwgNTIsICA0MCwgIDAsIDMwLCAgIDAsICAwLCAgMCwNCisgICAgMTY5LCAzMywgMTI5LCAxNTAsIDI2LCAxMTUsIDEzNCwgMTcsIDEwMiwgMTE2LCAgMywgODksIDEwMCwgIDAsIDc1LCAgODMsICAwLCA2MCwgIDY1LCAgMCwgNDUsICA0MCwgIDAsIDI0LCAgIDAsICAwLCAgMCwNCisgICAgMTY5LCAzNiwgMTE4LCAxNTEsIDI3LCAxMDQsIDEzNCwgMTksIDkzLCAxMTYsICA3LCA4MCwgMTAwLCAgMCwgNjcsICA4MywgIDAsIDU0LCAgNjUsICAwLCAzOCwgIDQxLCAgMCwgMTcsICAgMCwgIDAsICAwLA0KKyAgICAxNjksIDM5LCAxMDcsIDE1MCwgMzAsIDk0LCAxMzQsIDIyLCA4NCwgMTE2LCAxMSwgNzEsICA5OSwgIDAsIDU5LCAgODMsICAwLCA0NiwgIDY0LCAgMCwgMzEsICA0MCwgIDAsICA5LCAgIDAsICAwLCAgMCwNCisgICAgMTY5LCAzOSwgOTUsIDE1MSwgMzEsIDgzLCAxMzQsIDI0LCA3MywgMTE2LCAxNSwgNjIsIDEwMCwgIDEsIDUxLCAgODMsICAwLCAzOCwgIDY0LCAgMCwgMjQsICA0MCwgIDAsICA1LCAgIDAsICAwLCAgMCwNCisgICAgMTY5LCA0MSwgODMsIDE1MSwgMzMsIDczLCAxMzQsIDI2LCA2NCwgMTE3LCAxNywgNTQsICA5OSwgIDQsIDQyLCAgODIsICAwLCAzMCwgIDY0LCAgMCwgMTYsICA0MCwgIDAsICAxLCAgIDAsICAwLCAgMCwNCisgICAgMTcwLCA0MiwgNzEsIDE1MiwgMzQsIDYyLCAxMzQsIDI4LCA1MywgMTE3LCAxOSwgNDQsICA5OSwgIDYsIDMzLCAgODIsICAwLCAyMSwgIDYzLCAgMCwgIDQsICAzOSwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTcxLCA0MiwgNTksIDE1MiwgMzUsIDUwLCAxMzQsIDI5LCA0MiwgMTE3LCAyMSwgMzIsICA5OSwgIDksIDIyLCAgODIsICAwLCAgOSwgIDYzLCAgMCwgIDAsICAzOCwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTcyLCA0MiwgNDgsIDE1MiwgMzYsIDQwLCAxMzUsIDI5LCAzMiwgMTE3LCAyMSwgMjMsICA5OSwgMTAsIDEyLCAgODIsICAwLCAgMCwgIDYzLCAgMCwgIDAsICAzOCwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTA3LCAyMDcsIDI0NiwgIDk2LCAxODUsIDIyMCwgIDg2LCAxNjUsIDE5NiwgIDczLCAxNDQsIDE3MSwgIDYwLCAxMjMsIDE0NywgIDQ2LCAxMDMsIDEyNSwgIDMyLCA4MiwgMTAwLCAgIDksIDU2LCA3MSwgICAwLCAyMCwgMzMsDQorICAgIDExNSwgMjA2LCAyMjEsIDEwNCwgMTg0LCAxOTgsICA5MiwgMTY0LCAxNzgsICA3OCwgMTQzLCAxNTQsICA2NCwgMTIzLCAxMzMsICA1MSwgMTAyLCAxMTEsICAzNCwgODEsIDg5LCAgMTAsIDU2LCA2MywgICAwLCAyMCwgMjcsDQorICAgIDEyMiwgMjA0LCAyMDAsIDEwOCwgMTgzLCAxODAsICA5NSwgMTYzLCAxNjEsICA4MiwgMTQyLCAxNDAsICA2OCwgMTIyLCAxMjAsICA1NCwgMTAyLCAxMDEsICAzNiwgODEsIDc5LCAgMTEsIDU2LCA1NSwgICAwLCAyMCwgMjAsDQorICAgIDEyNSwgMjAzLCAxNzksIDExMSwgMTgxLCAxNjAsICA5NywgMTYyLCAxNDMsICA4NSwgMTQxLCAxMjQsICA3MCwgMTIxLCAxMDcsICA1NSwgMTAxLCA4OSwgIDM4LCA4MCwgNjksICAxNCwgNTUsIDQ2LCAgIDAsIDE5LCAxMCwNCisgICAgMTI4LCAyMDIsIDE1NiwgMTEzLCAxODAsIDE0MCwgMTAyLCAxNjEsIDEyNSwgIDg3LCAxNDAsIDEwOCwgIDcxLCAxMjAsIDkyLCAgNTYsIDEwMCwgNzYsICAzOSwgNzksIDU5LCAgMTQsIDU1LCAzOCwgICAwLCAyMCwgIDMsDQorICAgIDEzMiwgMjAwLCAxMzUsIDExNywgMTc5LCAxMjEsIDEwMywgMTU5LCAxMDYsICA4OCwgMTM5LCA5MywgIDczLCAxMTksIDc5LCAgNTcsIDEwMCwgNjUsICA0MSwgNzksIDQ5LCAgMTUsIDU0LCAyOCwgICAwLCAxOSwgIDAsDQorICAgIDEzNCwgMjAwLCAxMTEsIDExOSwgMTc4LCA5OCwgMTA1LCAxNTgsIDg3LCAgODksIDEzOCwgNzYsICA3NCwgMTE4LCA2NCwgIDU4LCA5OSwgNTEsICA0MSwgNzgsIDM3LCAgMTYsIDU0LCAxNywgICAwLCAxOSwgIDAsDQorICAgIDEzNywgMTk5LCA4NSwgMTIyLCAxNzcsIDc1LCAxMDgsIDE1OCwgNjYsICA5MSwgMTM3LCA1NiwgIDc1LCAxMTgsIDQ2LCAgNTksIDk4LCAzNSwgIDQyLCA3OCwgMjIsICAxNiwgNTQsICAzLCAgIDAsIDE5LCAgMCwNCisgICAgMTQwLCAxOTgsIDYyLCAxMjUsIDE3NywgNTUsIDEwOSwgMTU4LCA0NywgIDkyLCAxMzcsIDQwLCAgNzYsIDExNywgMzIsICA1OSwgOTgsIDIxLCAgNDIsIDc4LCAgNiwgIDE2LCA1NCwgIDAsICAgMCwgMTgsICAwLA0KKyAgICAxMTgsIDE4NiwgMjMxLCAxMDYsIDE2NywgMjA2LCAgOTMsIDE0OSwgMTg0LCAgODEsIDEzMCwgMTYxLCAgNjcsIDExMSwgMTM5LCAgNTQsIDkyLCAxMTcsICAzOSwgNzIsIDkzLCAgMTcsIDQ4LCA2NiwgICAwLCAxMCwgMjksDQorICAgIDEyMywgMTg1LCAyMDcsIDExMCwgMTY2LCAxODYsICA5OCwgMTQ4LCAxNjcsICA4NSwgMTI5LCAxNDUsICA3MSwgMTExLCAxMjUsICA1NiwgOTIsIDEwNCwgIDQwLCA3MiwgODMsICAxOCwgNDgsIDU3LCAgIDAsIDEwLCAyMiwNCisgICAgMTI4LCAxODQsIDE4OCwgMTEzLCAxNjUsIDE2OCwgMTAyLCAxNDcsIDE1MSwgIDg4LCAxMjgsIDEzMSwgIDczLCAxMTAsIDExMywgIDU4LCA5MSwgOTQsICA0MiwgNzEsIDc0LCAgMTksIDQ4LCA1MCwgICAwLCAgOSwgMTUsDQorICAgIDEzMSwgMTgzLCAxNjgsIDExNiwgMTY0LCAxNTEsIDEwNCwgMTQ2LCAxMzQsICA4OSwgMTI3LCAxMTcsICA3MywgMTA5LCAxMDAsICA1OCwgOTAsIDgzLCAgNDIsIDcxLCA2NSwgIDIwLCA0OCwgNDIsICAgMCwgIDksICA1LA0KKyAgICAxMzQsIDE4MiwgMTQ4LCAxMjAsIDE2MywgMTMxLCAxMDUsIDE0NSwgMTE4LCAgOTAsIDEyNiwgMTAyLCAgNzUsIDEwOCwgODYsICA1OSwgOTAsIDcyLCAgNDMsIDcxLCA1NSwgIDE5LCA0NywgMzQsICAgMCwgIDksICAwLA0KKyAgICAxMzYsIDE4MSwgMTI4LCAxMjIsIDE2MiwgMTE1LCAxMDcsIDE0NCwgMTAyLCAgOTIsIDEyNSwgODcsICA3NiwgMTA3LCA3NCwgIDYxLCA4OSwgNjAsICA0NCwgNzAsIDQ1LCAgMjAsIDQ3LCAyNCwgICAwLCAgOCwgIDAsDQorICAgIDEzOSwgMTgwLCAxMDYsIDEyNCwgMTYxLCA5NSwgMTA5LCAxNDQsIDgzLCAgOTMsIDEyNCwgNzEsICA3NywgMTA3LCA2MCwgIDYxLCA4OSwgNDcsICA0NCwgNzAsIDMzLCAgMjAsIDQ3LCAxMywgICAwLCAgOCwgIDAsDQorICAgIDE0MiwgMTc5LCA4MiwgMTI1LCAxNjAsIDcyLCAxMTEsIDE0MywgNjMsICA5NCwgMTI0LCA1NCwgIDc3LCAxMDYsIDQ0LCAgNjEsIDg4LCAzMiwgIDQ0LCA2OSwgMTgsICAyMCwgNDYsICAwLCAgIDAsICA4LCAgMCwNCisgICAgMTQzLCAxNzksIDYyLCAxMjcsIDE2MCwgNTQsIDExMSwgMTQyLCA0NywgIDk0LCAxMjQsIDM5LCAgNzgsIDEwNiwgMjksICA2MiwgODgsIDE4LCAgNDUsIDY5LCAgMywgIDIwLCA0NiwgIDAsICAgMCwgIDgsICAwLA0KKyAgICAxMjQsIDE2NywgMjE2LCAxMTIsIDE1MCwgMTk0LCAgOTksIDEzNCwgMTc0LCAgODcsIDExNywgMTUzLCAgNzMsIDEwMCwgMTMxLCAgNTgsIDgyLCAxMTAsICA0MywgNjQsIDg4LCAgMjMsIDQwLCA2MSwgICAwLCAgMCwgMjQsDQorICAgIDEyOSwgMTY2LCAxOTUsIDExNiwgMTUwLCAxNzUsIDEwMywgMTM0LCAxNTgsICA4OSwgMTE2LCAxMzcsICA3NSwgOTksIDExOCwgIDYwLCA4MiwgOTgsICA0NCwgNjMsIDc4LCAgMjMsIDQwLCA1MywgICAwLCAgMCwgMTcsDQorICAgIDEzMiwgMTY2LCAxNzcsIDExOSwgMTQ5LCAxNjAsIDEwNiwgMTMzLCAxNDMsICA5MCwgMTE1LCAxMjQsICA3NiwgOTksIDEwNywgIDYxLCA4MSwgODgsICA0NSwgNjMsIDY5LCAgMjQsIDQwLCA0NiwgICAwLCAgMCwgIDksDQorICAgIDEzNiwgMTY2LCAxNTksIDEyMSwgMTQ4LCAxNDMsIDEwNywgMTMyLCAxMjYsICA5MiwgMTE1LCAxMTEsICA3NywgOTgsIDk0LCAgNjIsIDgxLCA3OCwgIDQ2LCA2MywgNjAsICAyMywgNDAsIDM4LCAgIDAsICAwLCAgMCwNCisgICAgMTM4LCAxNjQsIDE0MCwgMTIyLCAxNDcsIDEyNSwgMTA4LCAxMzEsIDExMSwgIDkzLCAxMTQsIDk3LCAgNzksIDk4LCA4MiwgIDYzLCA4MCwgNjcsICA0NiwgNjIsIDUwLCAgMjQsIDQwLCAyOSwgICAwLCAgMCwgIDAsDQorICAgIDEzOSwgMTYzLCAxMjIsIDEyNCwgMTQ2LCAxMDksIDExMCwgMTMxLCA5NiwgIDk0LCAxMTQsIDgzLCAgNzksIDk3LCA3MCwgIDYzLCA4MSwgNTcsICA0NiwgNjIsIDQxLCAgMjQsIDQwLCAyMSwgICAwLCAgMCwgIDAsDQorICAgIDE0MSwgMTYzLCAxMDEsIDEyNiwgMTQ1LCA5MCwgMTExLCAxMzAsIDc5LCAgOTUsIDExMywgNjgsICA3OSwgOTYsIDU2LCAgNjMsIDgwLCA0NCwgIDQ3LCA2MiwgMzAsICAyMywgNDAsIDEwLCAgIDAsICAwLCAgMCwNCisgICAgMTQ0LCAxNjIsIDc5LCAxMjcsIDE0NSwgNzAsIDExMiwgMTI5LCA2MCwgIDk1LCAxMTIsIDUxLCAgNzksIDk2LCA0MSwgIDY0LCA3OSwgMzAsICA0NywgNjEsIDE1LCAgMjMsIDQwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE0NSwgMTYyLCA2MCwgMTI5LCAxNDUsIDUyLCAxMTMsIDEyOSwgNDYsICA5NiwgMTEyLCAzNywgIDc5LCA5NSwgMjcsICA2NCwgNzksIDE2LCAgNDcsIDYxLCAgMSwgIDIzLCAzOSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMzEsIDE0NywgMjAyLCAxMTcsIDEzMywgMTgxLCAxMDUsIDExOSwgMTYyLCAgOTEsIDEwMywgMTQyLCAgNzcsIDg3LCAxMjIsICA2MiwgNzEsIDEwMiwgIDQ3LCA1NCwgODEsICAyNiwgMzEsIDU2LCAgIDAsICAwLCAxOCwNCisgICAgMTM1LCAxNDcsIDE4MywgMTIwLCAxMzIsIDE2NCwgMTA3LCAxMTgsIDE0NywgIDkzLCAxMDIsIDEyOCwgIDc4LCA4NywgMTEwLCAgNjMsIDcxLCA5MiwgIDQ3LCA1NCwgNzIsICAyNiwgMzEsIDQ4LCAgIDAsICAwLCAxMCwNCisgICAgMTM4LCAxNDcsIDE2NiwgMTIzLCAxMzEsIDE0OSwgMTA4LCAxMTgsIDEzMywgIDk0LCAxMDIsIDExNiwgIDc5LCA4NiwgMTAwLCAgNjQsIDcxLCA4MiwgIDQ4LCA1NCwgNjQsICAyNywgMzEsIDQxLCAgIDAsICAwLCAgMiwNCisgICAgMTM5LCAxNDYsIDE0OSwgMTI0LCAxMzEsIDEzNCwgMTExLCAxMTcsIDExOSwgIDk0LCAxMDEsIDEwMywgIDc5LCA4NiwgODgsICA2NCwgNzAsIDcyLCAgNDgsIDUzLCA1NSwgIDI3LCAzMSwgMzMsICAgMCwgIDAsICAwLA0KKyAgICAxNDEsIDE0NiwgMTMyLCAxMjUsIDEzMSwgMTE3LCAxMTEsIDExNywgMTA0LCAgOTUsIDEwMSwgOTEsICA4MCwgODYsIDc3LCAgNjUsIDcwLCA2MiwgIDQ4LCA1MywgNDYsICAyNiwgMzEsIDI1LCAgIDAsICAwLCAgMCwNCisgICAgMTQzLCAxNDUsIDExNSwgMTI2LCAxMzAsIDEwMSwgMTEyLCAxMTYsIDkwLCAgOTYsIDEwMCwgNzgsICA4MCwgODUsIDY1LCAgNjUsIDcwLCA1MiwgIDQ5LCA1MywgMzcsICAyNywgMzIsIDE3LCAgIDAsICAwLCAgMCwNCisgICAgMTQ0LCAxNDQsIDk2LCAxMjgsIDEyOSwgODUsIDExMiwgMTE1LCA3NSwgIDk3LCAxMDAsIDY0LCAgODEsIDg1LCA1MiwgIDY1LCA2OSwgNDAsICA0OSwgNTMsIDI2LCAgMjYsIDMxLCAgNSwgICAwLCAgMCwgIDAsDQorICAgIDE0NiwgMTQ0LCA3NiwgMTI5LCAxMjksIDY3LCAxMTQsIDExNSwgNTgsICA5NywgOTksIDQ4LCAgODIsIDg0LCAzOCwgIDY2LCA2OSwgMjcsICA0OSwgNTMsIDEyLCAgMjYsIDMyLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE0NiwgMTQ0LCA1OSwgMTMwLCAxMjgsIDUxLCAxMTQsIDExNCwgNDMsICA5OCwgOTksIDM1LCAgODIsIDg0LCAyNSwgIDY2LCA2OSwgMTMsICA0OSwgNTMsICAwLCAgMjYsIDMyLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDEzNSwgMTI5LCAxODksIDEyMiwgMTE1LCAxNzAsIDEwNywgMTAzLCAxNTIsICA5NCwgODksIDEzMywgIDc5LCA3NCwgMTE0LCAgNjQsIDYwLCA5NSwgIDQ5LCA0MywgNzUsICAyOSwgMjAsIDUxLCAgIDAsICAwLCAxMiwNCisgICAgMTM4LCAxMjksIDE3MSwgMTI0LCAxMTUsIDE1MywgMTEwLCAxMDMsIDEzOCwgIDk1LCA4OSwgMTIwLCAgODEsIDc0LCAxMDMsICA2NiwgNjAsIDg2LCAgNTAsIDQ0LCA2NywgIDI4LCAyMSwgNDMsICAgMCwgIDAsICAzLA0KKyAgICAxNDAsIDEyOSwgMTU2LCAxMjUsIDExNSwgMTQwLCAxMTEsIDEwMywgMTI1LCAgOTYsIDg5LCAxMDksICA4MSwgNzQsIDkzLCAgNjcsIDYwLCA3NiwgIDUwLCA0NCwgNTksICAyOSwgMjIsIDM2LCAgIDAsICAwLCAgMCwNCisgICAgMTQyLCAxMjgsIDE0MCwgMTI3LCAxMTUsIDEyNSwgMTEyLCAxMDIsIDExMiwgIDk3LCA4OCwgOTcsICA4MiwgNzQsIDgzLCAgNjcsIDYwLCA2NywgIDUwLCA0NCwgNTEsICAyOSwgMjIsIDI5LCAgIDAsICAwLCAgMCwNCisgICAgMTQyLCAxMjgsIDEyNCwgMTI3LCAxMTQsIDExMSwgMTEzLCAxMDIsIDk4LCAgOTgsIDg4LCA4NSwgIDgyLCA3NCwgNzEsICA2NiwgNjAsIDU4LCAgNTAsIDQ0LCA0MiwgIDI5LCAyMiwgMjEsICAgMCwgIDAsICAwLA0KKyAgICAxNDQsIDEyNywgMTA4LCAxMjgsIDExNCwgOTYsIDExMywgMTAxLCA4NSwgIDk4LCA4NywgNzMsICA4MiwgNzQsIDYxLCAgNjcsIDYwLCA0OCwgIDUwLCA0NCwgMzMsICAyOCwgMjMsIDEyLCAgIDAsICAwLCAgMCwNCisgICAgMTQ1LCAxMjcsIDkxLCAxMjksIDExNCwgODEsIDExNSwgMTAxLCA3MSwgIDk4LCA4NywgNjAsICA4MiwgNzMsIDQ4LCAgNjcsIDU5LCAzNywgIDUwLCA0NCwgMjIsICAyOSwgMjMsICAxLCAgIDAsICAwLCAgMCwNCisgICAgMTQ3LCAxMjcsIDczLCAxMzAsIDExMywgNjMsIDExNSwgMTAxLCA1NSwgIDk4LCA4NywgNDUsICA4MywgNzMsIDM1LCAgNjcsIDU5LCAyNCwgIDUwLCA0NCwgMTAsICAyOCwgMjQsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTQ3LCAxMjcsIDU4LCAxMzEsIDExMywgNDksIDExNSwgMTAwLCA0MiwgIDk5LCA4NiwgMzMsICA4MywgNzMsIDIzLCAgNjcsIDU5LCAxMCwgIDUwLCA0NCwgIDAsICAyNywgMjQsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTM4LCAxMTAsIDE3NywgMTI0LCA5OSwgMTU5LCAxMTAsIDg4LCAxNDIsICA5NiwgNzUsIDEyNSwgIDgyLCA2MiwgMTA3LCAgNjYsIDQ4LCA4OSwgIDUxLCAzMywgNzAsICAzMCwgIDgsIDQ2LCAgIDAsICAwLCAgNSwNCisgICAgMTQyLCAxMTEsIDE2MCwgMTI3LCA5OSwgMTQ0LCAxMTMsIDg4LCAxMzAsICA5OCwgNzUsIDExMiwgIDgyLCA2MiwgOTYsICA2OCwgNDksIDgwLCAgNTEsIDMzLCA2MSwgIDMwLCAxMCwgMzksICAgMCwgIDAsICAwLA0KKyAgICAxNDMsIDExMSwgMTQ2LCAxMjgsIDk5LCAxMzEsIDExNCwgODgsIDExOCwgIDk4LCA3NSwgMTAxLCAgODMsIDYyLCA4NiwgIDY4LCA0OSwgNzEsICA1MiwgMzMsIDU0LCAgMzAsIDExLCAzMiwgICAwLCAgMCwgIDAsDQorICAgIDE0NCwgMTExLCAxMzIsIDEyOCwgOTksIDExOCwgMTEzLCA4OCwgMTA2LCAgOTksIDc1LCA5MSwgIDgzLCA2MiwgNzcsICA2OCwgNDksIDYyLCAgNTIsIDM0LCA0NiwgIDMwLCAxMiwgMjUsICAgMCwgIDAsICAwLA0KKyAgICAxNDQsIDExMSwgMTE3LCAxMjksIDk4LCAxMDQsIDExNCwgODcsIDkyLCAgOTksIDc1LCA4MCwgIDgzLCA2MiwgNjcsICA2OCwgNDksIDUzLCAgNTEsIDM0LCAzOCwgIDMwLCAxMywgMTgsICAgMCwgIDAsICAwLA0KKyAgICAxNDUsIDExMSwgMTAzLCAxMzAsIDk4LCA5MSwgMTE0LCA4NywgODAsICA5OSwgNzUsIDY4LCAgODMsIDYzLCA1NywgIDY4LCA1MCwgNDUsICA1MSwgMzQsIDMwLCAgMzAsIDE0LCAgOCwgICAwLCAgMCwgIDAsDQorICAgIDE0NiwgMTEwLCA4NywgMTMxLCA5OCwgNzYsIDExNSwgODcsIDY3LCAgOTksIDc1LCA1NiwgIDgzLCA2MiwgNDUsICA2OCwgNDksIDMzLCAgNTIsIDM1LCAxOSwgIDMwLCAxNSwgIDIsICAgMCwgIDAsICAwLA0KKyAgICAxNDgsIDExMCwgNzAsIDEzMSwgOTgsIDYwLCAxMTYsIDg2LCA1MiwgIDk5LCA3NCwgNDMsICA4NCwgNjIsIDMzLCAgNjksIDQ5LCAyMSwgIDUyLCAzNSwgIDYsICAyOSwgMTUsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTQ4LCAxMTAsIDU2LCAxMzIsIDk3LCA0OCwgMTE3LCA4NywgNDAsIDEwMCwgNzUsIDMxLCAgODQsIDYyLCAyMiwgIDY4LCA0OSwgIDksICA1MSwgMzUsICAwLCAgMjgsIDE1LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE0MiwgOTEsIDE2NiwgMTI2LCA4MCwgMTQ4LCAxMTMsIDcxLCAxMzIsICA5OCwgNTksIDExNSwgIDgzLCA0NywgOTksICA2OSwgMzQsIDgyLCAgNTMsIDE3LCA2NCwgIDMyLCAgMCwgNDEsICAgMCwgIDAsICAwLA0KKyAgICAxNDMsIDkxLCAxNTAsIDEyOCwgODEsIDEzNSwgMTE0LCA3MSwgMTIwLCAgOTksIDYwLCAxMDQsICA4NSwgNDgsIDg5LCAgNjksIDM1LCA3MywgIDUzLCAxOSwgNTYsICAzMiwgIDAsIDM0LCAgIDAsICAwLCAgMCwNCisgICAgMTQ1LCA5MSwgMTM3LCAxMjksIDgxLCAxMjIsIDExNSwgNzEsIDEwOSwgMTAwLCA2MCwgOTQsICA4NSwgNDgsIDgxLCAgNjksIDM1LCA2NSwgIDUzLCAxOSwgNDksICAzMiwgIDAsIDI4LCAgIDAsICAwLCAgMCwNCisgICAgMTQ2LCA5MiwgMTI0LCAxMzAsIDgxLCAxMTAsIDExNSwgNzEsIDk4LCAxMDAsIDYwLCA4NCwgIDg1LCA0OSwgNzEsICA2OSwgMzYsIDU3LCAgNTMsIDIxLCA0MiwgIDMyLCAgMCwgMjEsICAgMCwgIDAsICAwLA0KKyAgICAxNDcsIDkxLCAxMTAsIDEzMCwgODEsIDk3LCAxMTUsIDcxLCA4NiwgMTAwLCA2MCwgNzQsICA4NCwgNDksIDYyLCAgNjksIDM2LCA0OCwgIDUzLCAyMiwgMzQsICAzMiwgIDAsIDEzLCAgIDAsICAwLCAgMCwNCisgICAgMTQ3LCA5MiwgOTcsIDEzMCwgODEsIDg1LCAxMTYsIDcyLCA3NiwgMTAwLCA2MCwgNjMsICA4NSwgNDksIDUyLCAgNjksIDM3LCA0MCwgIDUzLCAyMiwgMjYsICAzMSwgIDEsICA1LCAgIDAsICAwLCAgMCwNCisgICAgMTQ4LCA5MiwgODIsIDEzMSwgODEsIDcxLCAxMTYsIDcxLCA2MiwgMTAwLCA2MCwgNTMsICA4NCwgNDksIDQyLCAgNjksIDM3LCAzMCwgIDUyLCAyMywgMTYsICAzMSwgIDIsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTQ4LCA5MSwgNjcsIDEzMiwgODEsIDU3LCAxMTcsIDcxLCA0OSwgMTAwLCA2MCwgMzksICA4NCwgNDksIDMwLCAgNjksIDM3LCAxOCwgIDUyLCAyMywgIDIsICAzMCwgIDIsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTQ5LCA5MSwgNTQsIDEzMiwgODEsIDQ2LCAxMTgsIDcxLCAzOSwgMTAxLCA2MCwgMjksICA4NSwgNDksIDE5LCAgNjksIDM3LCAgNiwgIDUyLCAyMywgIDAsICAyOSwgIDMsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTQzLCA2OCwgMTUzLCAxMjgsIDU5LCAxMzcsIDExNSwgNDksIDEyMiwgIDk5LCAzOSwgMTA3LCAgODUsIDI4LCA5MSwgIDcwLCAxMywgNzUsICA1NCwgIDAsIDU4LCAgMzIsICAwLCAzNiwgICAwLCAgMCwgIDAsDQorICAgIDE0NiwgNjgsIDE0MCwgMTMxLCA1OSwgMTI1LCAxMTYsIDUxLCAxMTEsIDEwMCwgNDAsIDk3LCAgODUsIDI5LCA4MiwgIDcwLCAxNSwgNjcsICA1NCwgIDAsIDUwLCAgMzIsICAwLCAyOSwgICAwLCAgMCwgIDAsDQorICAgIDE0NywgNjgsIDEyNywgMTMxLCA1OSwgMTE0LCAxMTcsIDUxLCAxMDIsIDEwMSwgNDEsIDg4LCAgODYsIDMwLCA3NCwgIDcwLCAxNywgNjAsICA1NCwgIDAsIDQ0LCAgMzIsICAwLCAyMywgICAwLCAgMCwgIDAsDQorICAgIDE0NywgNzAsIDExNSwgMTMxLCA2MCwgMTAzLCAxMTYsIDUyLCA5MSwgMTAwLCA0MiwgNzgsICA4NSwgMzIsIDY1LCAgNzAsIDE5LCA1MywgIDU0LCAgMSwgMzgsICAzMiwgIDAsIDE3LCAgIDAsICAwLCAgMCwNCisgICAgMTQ3LCA3MCwgMTAzLCAxMzEsIDYxLCA5MSwgMTE3LCA1MywgODEsIDEwMSwgNDMsIDY5LCAgODYsIDMyLCA1NywgIDcwLCAyMCwgNDQsICA1NCwgIDIsIDMwLCAgMzIsICAwLCAgNywgICAwLCAgMCwgIDAsDQorICAgIDE0OCwgNzAsIDkxLCAxMzIsIDYxLCA4MCwgMTE3LCA1MiwgNzAsIDEwMSwgNDMsIDU5LCAgODUsIDMzLCA0OCwgIDcwLCAyMSwgMzYsICA1MywgIDQsIDIyLCAgMzIsICAwLCAgMywgICAwLCAgMCwgIDAsDQorICAgIDE0OCwgNzAsIDc4LCAxMzIsIDYyLCA2OCwgMTE3LCA1MywgNTgsIDEwMSwgNDMsIDQ4LCAgODUsIDM0LCAzOCwgIDcwLCAyMiwgMjYsICA1MywgIDYsIDEyLCAgMzEsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE0OSwgNzEsIDY0LCAxMzIsIDYyLCA1NCwgMTE4LCA1NCwgNDYsIDEwMSwgNDQsIDM3LCAgODUsIDM0LCAyNywgIDY5LCAyMywgMTUsICA1MywgIDcsICAxLCAgMzAsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE1MCwgNzAsIDUzLCAxMzQsIDYxLCA0NCwgMTE4LCA1NCwgMzYsIDEwMSwgNDQsIDI4LCAgODUsIDM1LCAxNywgIDY5LCAyMywgIDQsICA1MiwgIDgsICAwLCAgMzAsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE0NSwgMzgsIDE0MywgMTMwLCAyOSwgMTI4LCAxMTcsIDE4LCAxMTQsIDEwMSwgIDMsIDk4LCAgODcsICAwLCA4NCwgIDcyLCAgMCwgNjksICA1NCwgIDAsIDUzLCAgMzAsICAwLCAzMSwgICAwLCAgMCwgIDAsDQorICAgIDE0NywgMzgsIDEzMCwgMTMyLCAzMCwgMTE2LCAxMTcsIDIyLCAxMDMsIDEwMSwgIDgsIDg5LCAgODcsICAwLCA3NiwgIDcyLCAgMCwgNjIsICA1NCwgIDAsIDQ2LCAgMzAsICAwLCAyNCwgICAwLCAgMCwgIDAsDQorICAgIDE0OCwgNDAsIDExOSwgMTMyLCAzMSwgMTA1LCAxMTcsIDIzLCA5NCwgMTAxLCAxMywgODEsICA4NywgIDAsIDY4LCAgNzEsICAwLCA1NSwgIDU0LCAgMCwgMzksICAzMCwgIDAsIDE4LCAgIDAsICAwLCAgMCwNCisgICAgMTQ4LCA0MiwgMTA4LCAxMzIsIDM0LCA5NiwgMTE3LCAyNSwgODUsIDEwMiwgMTUsIDczLCAgODYsICAyLCA2MCwgIDcxLCAgMCwgNDcsICA1NCwgIDAsIDMzLCAgMzAsICAwLCAxMSwgICAwLCAgMCwgIDAsDQorICAgIDE0OCwgNDMsIDk2LCAxMzMsIDM1LCA4NSwgMTE3LCAyOCwgNzUsIDEwMiwgMTgsIDY0LCAgODcsICA1LCA1MiwgIDcxLCAgMCwgNDAsICA1NCwgIDAsIDI1LCAgMzAsICAwLCAgNSwgICAwLCAgMCwgIDAsDQorICAgIDE0OSwgNDQsIDg1LCAxMzIsIDM2LCA3NSwgMTE4LCAyOSwgNjYsIDEwMSwgMjAsIDU1LCAgODYsICA4LCA0NCwgIDcwLCAgMCwgMzIsICA1MywgIDAsIDE4LCAgMjksICAwLCAgMiwgICAwLCAgMCwgIDAsDQorICAgIDE0OSwgNDUsIDc0LCAxMzMsIDM3LCA2NCwgMTE4LCAzMSwgNTUsIDEwMiwgMjEsIDQ1LCAgODUsIDEwLCAzNCwgIDcwLCAgMCwgMjIsICA1MywgIDAsICA2LCAgMjgsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE1MCwgNDYsIDYxLCAxMzMsIDM5LCA1MiwgMTE4LCAzMSwgNDQsIDEwMiwgMjMsIDM0LCAgODUsIDEyLCAyNCwgIDcwLCAgMCwgMTIsICA1MiwgIDAsICAwLCAgMjgsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDE1MCwgNDYsIDUxLCAxMzMsIDQwLCA0MiwgMTE5LCAzMiwgMzUsIDEwMiwgMjQsIDI1LCAgODUsIDEzLCAxNCwgIDcwLCAgMCwgIDEsICA1MiwgIDAsICAwLCAgMjcsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDUzLCAxOTgsIDI0NCwgIDQ5LCAxNzcsIDIxOCwgIDQxLCAxNTgsIDE5NSwgIDMyLCAxMzgsIDE3MSwgIDIyLCAxMTgsIDE0NywgIDExLCA5OCwgMTI0LCAgIDAsIDc4LCAxMDAsICAgMCwgNTQsIDcxLCAgIDAsIDE4LCAzNCwNCisgICAgNjksIDE5NiwgMjIwLCAgNjQsIDE3NSwgMTk2LCAgNTQsIDE1NywgMTc2LCAgNDUsIDEzNywgMTU0LCAgMzIsIDExNywgMTMzLCAgMTksIDk4LCAxMTEsICAgMCwgNzgsIDg5LCAgIDAsIDUzLCA2MywgICAwLCAxNywgMjcsDQorICAgIDgwLCAxOTUsIDE5OCwgIDY5LCAxNzUsIDE3OSwgIDYwLCAxNTYsIDE1OSwgIDUwLCAxMzYsIDEzOSwgIDM4LCAxMTYsIDEyMCwgIDI1LCA5OCwgMTAxLCAgIDQsIDc3LCA4MCwgICAwLCA1MywgNTUsICAgMCwgMTcsIDIxLA0KKyAgICA4NCwgMTkzLCAxNzcsICA3NSwgMTczLCAxNTksICA2NCwgMTU1LCAxNDIsICA1NSwgMTM1LCAxMjQsICA0MSwgMTE2LCAxMDcsICAyNywgOTcsIDg5LCAgIDksIDc2LCA3MCwgICAwLCA1MywgNDcsICAgMCwgMTcsIDExLA0KKyAgICA4OSwgMTkzLCAxNTcsICA3OSwgMTcyLCAxNDAsICA3MCwgMTU0LCAxMjUsICA1NywgMTM0LCAxMDksICA0NCwgMTE1LCA5MiwgIDMyLCA5NiwgNzYsICAxMywgNzYsIDU5LCAgIDAsIDUyLCAzOSwgICAwLCAxNiwgIDQsDQorICAgIDk0LCAxOTEsIDEzNSwgIDg1LCAxNzEsIDEyMSwgIDcyLCAxNTIsIDEwOCwgIDYwLCAxMzMsIDk0LCAgNDcsIDExNCwgODAsICAzMiwgOTUsIDY1LCAgMTUsIDc2LCA0OSwgICAwLCA1MiwgMjksICAgMCwgMTYsICAwLA0KKyAgICA5OCwgMTkwLCAxMTMsICA4NywgMTcwLCAxMDAsICA3NiwgMTUyLCA4OSwgIDYyLCAxMzIsIDc3LCAgNDksIDExMywgNjUsICAzNSwgOTUsIDUyLCAgMTgsIDc1LCAzNywgICAwLCA1MiwgMTgsICAgMCwgMTUsICAwLA0KKyAgICAxMDMsIDE5MCwgODksICA5MCwgMTY5LCA4MCwgIDc4LCAxNTEsIDcwLCAgNjQsIDEzMiwgNjAsICA1MSwgMTEzLCA0OSwgIDM3LCA5NCwgMzgsICAyMCwgNzUsIDI1LCAgIDAsIDUyLCAgNSwgICAwLCAxNSwgIDAsDQorICAgIDEwNiwgMTg5LCA2OSwgIDkzLCAxNjksIDYxLCAgODAsIDE1MSwgNTMsICA2NiwgMTMxLCA0NSwgIDUyLCAxMTMsIDM2LCAgMzcsIDk0LCAyNSwgIDE5LCA3NCwgMTEsICAgMCwgNTEsICAwLCAgIDAsIDE1LCAgMCwNCisgICAgNzYsIDE3OCwgMjI5LCAgNjgsIDE1OSwgMjA1LCAgNjEsIDE0MiwgMTgzLCAgNTAsIDEyNCwgMTYwLCAgNDAsIDEwNiwgMTM4LCAgMjgsIDg4LCAxMTYsICAxMiwgNjksIDkzLCAgIDAsIDQ1LCA2NiwgICAwLCAgNSwgMjksDQorICAgIDg2LCAxNzcsIDIwNywgIDc4LCAxNTgsIDE4NCwgIDY3LCAxNDIsIDE2NiwgIDU2LCAxMjMsIDE0NSwgIDQ1LCAxMDYsIDEyNSwgIDMxLCA4OCwgMTA1LCAgMTYsIDY5LCA4MywgICAwLCA0NSwgNTgsICAgMCwgIDYsIDIyLA0KKyAgICA5MywgMTc2LCAxODcsICA4MSwgMTU4LCAxNjgsICA3MSwgMTQxLCAxNTAsICA2MSwgMTIzLCAxMzEsICA0NywgMTA1LCAxMTMsICAzNSwgODcsIDk0LCAgMjAsIDY4LCA3NCwgICAwLCA0NSwgNTEsICAgMCwgIDUsIDE2LA0KKyAgICA5OCwgMTc1LCAxNjgsICA4NCwgMTU3LCAxNTAsICA3NSwgMTQwLCAxMzQsICA2MywgMTIyLCAxMTcsICA1MCwgMTA0LCAxMDAsICAzNywgODcsIDgzLCAgMjEsIDY4LCA2NSwgICAwLCA0NSwgNDIsICAgMCwgIDQsICA3LA0KKyAgICAxMDAsIDE3NCwgMTQ5LCAgODksIDE1NSwgMTMyLCAgNzYsIDEzOSwgMTE3LCAgNjUsIDEyMSwgMTAyLCAgNTMsIDEwNCwgODcsICAzOSwgODYsIDcyLCAgMjMsIDY3LCA1NSwgICAwLCA0NSwgMzQsICAgMCwgIDMsICAwLA0KKyAgICAxMDMsIDE3MywgMTMwLCAgOTIsIDE1NSwgMTE1LCAgODAsIDEzOCwgMTAyLCAgNjgsIDEyMCwgODgsICA1MywgMTAzLCA3NSwgIDQwLCA4NiwgNjEsICAyNCwgNjcsIDQ1LCAgIDAsIDQ1LCAyNSwgICAwLCAgMywgIDAsDQorICAgIDEwNywgMTcyLCAxMDgsICA5NSwgMTU0LCA5NiwgIDgyLCAxMzcsIDg1LCAgNzAsIDExOSwgNzMsICA1NSwgMTAyLCA2MSwgIDQyLCA4NSwgNDksICAyNSwgNjcsIDM0LCAgIDAsIDQ1LCAxNCwgICAwLCAgMywgIDAsDQorICAgIDExMCwgMTcyLCA4NiwgIDk3LCAxNTMsIDc2LCAgODUsIDEzNywgNjcsICA3MCwgMTE5LCA1NywgIDU2LCAxMDIsIDQ2LCAgNDIsIDg0LCAzNSwgIDI2LCA2NiwgMjEsICAgMCwgNDQsICAxLCAgIDAsICAzLCAgMCwNCisgICAgMTEyLCAxNzEsIDY3LCAgOTgsIDE1MywgNTksICA4NiwgMTM3LCA1MiwgIDcxLCAxMTksIDQ0LCAgNTgsIDEwMiwgMzQsICA0NCwgODUsIDIyLCAgMjcsIDY2LCAgNywgICAwLCA0NCwgIDAsICAgMCwgIDMsICAwLA0KKyAgICA5MCwgMTYwLCAyMTUsICA4MSwgMTQ0LCAxOTMsICA3MCwgMTI5LCAxNzMsICA2MSwgMTEyLCAxNTEsICA0OSwgOTUsIDEzMSwgIDM3LCA3OSwgMTA5LCAgMjIsIDYxLCA4NywgICAwLCAzOCwgNjEsICAgMCwgIDAsIDI1LA0KKyAgICA5NiwgMTYwLCAxOTQsICA4NiwgMTQzLCAxNzQsICA3NSwgMTI4LCAxNTcsICA2NSwgMTEyLCAxMzcsICA1MywgOTUsIDExNywgIDQwLCA3OCwgOTgsICAyNSwgNjAsIDc4LCAgIDAsIDM4LCA1MywgICAwLCAgMCwgMTcsDQorICAgIDEwMCwgMTU5LCAxNzcsICA4OSwgMTQzLCAxNTksICA3OSwgMTI4LCAxNDMsICA2NywgMTExLCAxMjQsICA1NSwgOTUsIDEwNywgIDQyLCA3OCwgODksICAyNywgNjAsIDcwLCAgIDIsIDM4LCA0NiwgICAwLCAgMCwgIDksDQorICAgIDEwNCwgMTU4LCAxNTksICA5MiwgMTQyLCAxNDMsICA4MSwgMTI3LCAxMjcsICA2OSwgMTEwLCAxMTAsICA1NiwgOTQsIDk0LCAgNDMsIDc4LCA3OCwgIDI4LCA2MCwgNjAsICAgMiwgMzgsIDM4LCAgIDAsICAwLCAgMSwNCisgICAgMTA3LCAxNTcsIDE0MCwgIDk0LCAxNDEsIDEyNSwgIDgyLCAxMjYsIDExMiwgIDcxLCAxMTAsIDk3LCAgNTksIDk0LCA4MiwgIDQ1LCA3NywgNjcsICAyOSwgNTksIDUxLCAgIDQsIDM3LCAzMCwgICAwLCAgMCwgIDAsDQorICAgIDExMCwgMTU2LCAxMjIsICA5NywgMTQwLCAxMDksICA4NSwgMTI1LCA5NywgIDcyLCAxMDksIDgzLCAgNTgsIDkzLCA3MSwgIDQ1LCA3NywgNTcsICAyOSwgNjAsIDQyLCAgIDUsIDM4LCAyMiwgICAwLCAgMCwgIDAsDQorICAgIDExMSwgMTU2LCAxMDMsICA5OSwgMTM5LCA5MSwgIDg3LCAxMjUsIDgxLCAgNzMsIDEwOCwgNjksICA2MCwgOTIsIDU4LCAgNDYsIDc3LCA0NSwgIDMwLCA1OSwgMzEsICAgNSwgMzgsIDEyLCAgIDAsICAwLCAgMCwNCisgICAgMTE1LCAxNTYsIDgyLCAxMDEsIDE0MCwgNzMsICA4OCwgMTI0LCA2MywgIDc0LCAxMDgsIDUzLCAgNjAsIDkyLCA0NCwgIDQ2LCA3NiwgMzIsICAzMSwgNTksIDE4LCAgIDYsIDM3LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDExNiwgMTU1LCA2NSwgMTAyLCAxMzksIDU4LCAgODksIDEyNCwgNDksICA3NSwgMTA4LCA0MSwgIDYxLCA5MiwgMzIsICA0OCwgNzYsIDIxLCAgMzEsIDU5LCAgNiwgICA1LCAzNywgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMDAsIDE0MSwgMjAxLCAgODgsIDEyNywgMTgxLCAgNzksIDExNCwgMTYyLCAgNjksIDk5LCAxNDIsICA1NywgODMsIDEyMiwgIDQ0LCA2OCwgMTAyLCAgMzAsIDUxLCA4MSwgICA3LCAyOCwgNTYsICAgMCwgIDAsIDE5LA0KKyAgICAxMDUsIDE0MSwgMTgyLCAgOTQsIDEyNywgMTYzLCAgODMsIDExNCwgMTQ2LCAgNzEsIDk4LCAxMjgsICA1OSwgODMsIDExMCwgIDQ2LCA2OCwgOTEsICAzMSwgNTEsIDcyLCAgMTAsIDI4LCA0OCwgICAwLCAgMCwgMTEsDQorICAgIDEwOCwgMTQxLCAxNjYsICA5NiwgMTI3LCAxNDksICA4NSwgMTEzLCAxMzMsICA3MywgOTgsIDExNiwgIDYwLCA4MywgOTksICA0NiwgNjgsIDgyLCAgMzIsIDUxLCA2NCwgIDExLCAyOSwgNDEsICAgMCwgIDAsICAyLA0KKyAgICAxMTEsIDE0MSwgMTQ5LCAgOTgsIDEyNiwgMTM0LCAgODgsIDExMiwgMTE5LCAgNzQsIDk3LCAxMDMsICA2MSwgODMsIDg4LCAgNDgsIDY3LCA3MiwgIDMzLCA1MSwgNTYsICAxMSwgMjksIDM0LCAgIDAsICAwLCAgMCwNCisgICAgMTEyLCAxNDAsIDEzMiwgMTAwLCAxMjUsIDExOCwgIDg5LCAxMTIsIDEwNSwgIDc1LCA5NywgOTEsICA2MiwgODIsIDc3LCAgNDksIDY4LCA2MiwgIDMzLCA1MSwgNDcsICAxMiwgMjksIDI2LCAgIDAsICAwLCAgMCwNCisgICAgMTE1LCAxNDAsIDExNiwgMTAyLCAxMjUsIDEwMywgIDkwLCAxMTEsIDkxLCAgNzYsIDk2LCA3OCwgIDYyLCA4MiwgNjUsICA0OSwgNjcsIDUyLCAgMzQsIDUxLCAzOCwgIDEzLCAyOSwgMTgsICAgMCwgIDAsICAwLA0KKyAgICAxMTcsIDEzOSwgOTcsIDEwMywgMTI0LCA4NywgIDkxLCAxMTEsIDc3LCAgNzgsIDk2LCA2NSwgIDYzLCA4MSwgNTQsICA0OSwgNjcsIDQxLCAgMzQsIDUxLCAyNywgIDEyLCAyOSwgIDcsICAgMCwgIDAsICAwLA0KKyAgICAxMTksIDEzOCwgNzgsIDEwNSwgMTI0LCA2OSwgIDkyLCAxMTAsIDYwLCAgNzgsIDk1LCA1MCwgIDY1LCA4MSwgNDAsICA1MCwgNjcsIDI5LCAgMzQsIDUxLCAxNSwgIDEzLCAzMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMjAsIDEzOCwgNjQsIDEwNiwgMTI0LCA1NCwgIDkzLCAxMTAsIDQ3LCAgNzgsIDk1LCAzOCwgIDY1LCA4MSwgMjksICA1MCwgNjYsIDE3LCAgMzQsIDUwLCAgMiwgIDEzLCAyOSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMDcsIDEyNCwgMTg5LCAgOTYsIDExMSwgMTY5LCAgODUsIDk5LCAxNTIsICA3MywgODUsIDEzMiwgIDYxLCA3MSwgMTE0LCAgNDgsIDU3LCA5NSwgIDM0LCA0MSwgNzUsICAxNCwgMTgsIDUxLCAgIDAsICAwLCAxMywNCisgICAgMTExLCAxMjQsIDE3MSwgMTAwLCAxMTEsIDE1MywgIDg4LCA5OSwgMTM3LCAgNzUsIDg1LCAxMjAsICA2MywgNzIsIDEwMywgIDUwLCA1OCwgODUsICAzNiwgNDEsIDY2LCAgMTUsIDE5LCA0MywgICAwLCAgMCwgIDQsDQorICAgIDExMywgMTI0LCAxNTYsIDEwMSwgMTExLCAxMzksICA5MCwgOTksIDEyNSwgIDc3LCA4NSwgMTA5LCAgNjQsIDcxLCA5MywgIDUxLCA1NywgNzcsICAzNiwgNDIsIDU5LCAgMTcsIDIwLCAzNywgICAwLCAgMCwgIDAsDQorICAgIDExNSwgMTI0LCAxNDAsIDEwMywgMTExLCAxMjUsICA5MCwgOTksIDExMiwgIDc4LCA4NSwgOTcsICA2NCwgNzEsIDgyLCAgNTIsIDU3LCA2NywgIDM2LCA0MiwgNTAsICAxNiwgMjAsIDMwLCAgIDAsICAwLCAgMCwNCisgICAgMTE3LCAxMjMsIDEyNSwgMTA0LCAxMTAsIDExMSwgIDkyLCA5OCwgOTksICA3OSwgODUsIDg2LCAgNjUsIDcxLCA3MiwgIDUxLCA1OCwgNTksICAzNywgNDIsIDQzLCAgMTcsIDIxLCAyMiwgICAwLCAgMCwgIDAsDQorICAgIDExOCwgMTIzLCAxMTAsIDEwNSwgMTEwLCA5NywgIDkzLCA5OCwgODYsICA3OCwgODQsIDc0LCAgNjYsIDcxLCA2MiwgIDUyLCA1NywgNDksICAzNywgNDIsIDM0LCAgMTcsIDIyLCAxNCwgICAwLCAgMCwgIDAsDQorICAgIDEyMCwgMTIzLCA5MywgMTA2LCAxMDksIDgyLCAgOTQsIDk3LCA3MiwgIDgwLCA4NCwgNjEsICA2NiwgNzEsIDUwLCAgNTIsIDU3LCAzOCwgIDM3LCA0MiwgMjQsICAxNywgMjIsICAyLCAgIDAsICAwLCAgMCwNCisgICAgMTIxLCAxMjIsIDc1LCAxMDgsIDEwOSwgNjYsICA5NSwgOTcsIDU4LCAgODAsIDg0LCA0OCwgIDY2LCA3MSwgMzcsICA1MiwgNTcsIDI2LCAgMzcsIDQyLCAxMiwgIDE2LCAyMiwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMjIsIDEyMywgNjIsIDEwOCwgMTA5LCA1MiwgIDk1LCA5NywgNDUsICA4MSwgODQsIDM2LCAgNjcsIDcwLCAyNiwgIDUyLCA1NywgMTQsICAzNywgNDIsICAwLCAgMTUsIDIyLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDExMywgMTA3LCAxNzcsIDEwMiwgOTYsIDE1OSwgIDg5LCA4NSwgMTQxLCAgNzgsIDcyLCAxMjQsICA2NSwgNjAsIDEwNywgIDUyLCA0NiwgODksICAzNywgMzAsIDcwLCAgMTgsICA1LCA0NiwgICAwLCAgMCwgIDYsDQorICAgIDExNiwgMTA3LCAxNjAsIDEwNCwgOTYsIDE0NCwgIDkyLCA4NSwgMTI5LCAgODAsIDcyLCAxMTIsICA2NywgNjAsIDk2LCAgNTMsIDQ3LCA4MCwgIDM4LCAzMSwgNjIsICAxOSwgIDcsIDM5LCAgIDAsICAwLCAgMCwNCisgICAgMTE4LCAxMDcsIDE0NywgMTA1LCA5NiwgMTMxLCAgOTMsIDg1LCAxMTgsICA4MCwgNzIsIDEwMSwgIDY3LCA2MCwgODcsICA1NCwgNDcsIDcxLCAgMzksIDMxLCA1NCwgIDE5LCAgOCwgMzIsICAgMCwgIDAsICAwLA0KKyAgICAxMTksIDEwNywgMTMyLCAxMDYsIDk2LCAxMTgsICA5NCwgODUsIDEwNiwgIDgxLCA3MywgOTEsICA2NywgNjAsIDc3LCAgNTQsIDQ3LCA2MywgIDM5LCAzMiwgNDcsICAyMCwgIDksIDI1LCAgIDAsICAwLCAgMCwNCisgICAgMTE5LCAxMDcsIDExOCwgMTA2LCA5NSwgMTA1LCAgOTQsIDg1LCA5MywgIDgxLCA3MiwgODAsICA2OCwgNjAsIDY4LCAgNTQsIDQ3LCA1NCwgIDM5LCAzMiwgMzksICAyMCwgMTEsIDE4LCAgIDAsICAwLCAgMCwNCisgICAgMTIxLCAxMDcsIDEwNCwgMTA3LCA5NiwgOTIsICA5NSwgODQsIDgwLCAgODEsIDcyLCA2OSwgIDY4LCA2MSwgNTgsICA1NCwgNDgsIDQ2LCAgMzksIDMzLCAzMSwgIDIwLCAxMiwgIDksICAgMCwgIDAsICAwLA0KKyAgICAxMjMsIDEwNywgODgsIDEwOCwgOTUsIDc3LCAgOTYsIDg0LCA2OCwgIDgyLCA3MiwgNTcsICA2OCwgNjAsIDQ2LCAgNTQsIDQ3LCAzNSwgIDM5LCAzMywgMjAsICAxOSwgMTMsICAyLCAgIDAsICAwLCAgMCwNCisgICAgMTIzLCAxMDYsIDcyLCAxMTAsIDk1LCA2MywgIDk2LCA4NCwgNTQsICA4MiwgNzIsIDQ1LCAgNjksIDYwLCAzNSwgIDU1LCA0OCwgMjMsICAzOSwgMzMsICA5LCAgMTgsIDE0LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDEyNSwgMTA2LCA2MCwgMTEwLCA5NCwgNTAsICA5OCwgODQsIDQyLCAgODMsIDcyLCAzNCwgIDY5LCA2MCwgMjUsICA1NSwgNDgsIDEyLCAgMzksIDMzLCAgMCwgIDE3LCAxMywgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMTgsIDg5LCAxNjUsIDEwNSwgNzksIDE0OCwgIDkzLCA2OSwgMTMyLCAgODEsIDU3LCAxMTUsICA2OCwgNDUsIDk5LCAgNTUsIDMyLCA4MiwgIDQxLCAxNSwgNjQsICAyMSwgIDAsIDQxLCAgIDAsICAwLCAgMCwNCisgICAgMTIwLCA4OSwgMTUwLCAxMDcsIDc5LCAxMzUsICA5NiwgNjksIDEyMSwgIDgyLCA1OCwgMTA1LCAgNzAsIDQ2LCA4OSwgIDU2LCAzNCwgNzMsICA0MSwgMTcsIDU2LCAgMjEsICAwLCAzNCwgICAwLCAgMCwgIDAsDQorICAgIDEyMSwgODksIDEzNywgMTA4LCA3OSwgMTIzLCAgOTYsIDY5LCAxMDksICA4MiwgNTgsIDk1LCAgNzAsIDQ3LCA4MSwgIDU2LCAzNCwgNjYsICA0MSwgMTgsIDQ5LCAgMjEsICAwLCAyOCwgICAwLCAgMCwgIDAsDQorICAgIDEyMiwgOTAsIDEyNCwgMTA5LCA3OSwgMTEwLCAgOTYsIDY5LCA5OSwgIDgzLCA1OCwgODUsICA3MCwgNDcsIDcyLCAgNTYsIDM1LCA1OCwgIDQxLCAxOSwgNDIsICAyMSwgIDAsIDIyLCAgIDAsICAwLCAgMCwNCisgICAgMTIzLCA5MCwgMTExLCAxMTAsIDc5LCA5OCwgIDk3LCA2OSwgODcsICA4MywgNTksIDc1LCAgNzAsIDQ3LCA2MywgIDU2LCAzNSwgNTAsICA0MSwgMjAsIDM1LCAgMjEsICAwLCAxNCwgICAwLCAgMCwgIDAsDQorICAgIDEyMywgOTAsIDk4LCAxMTAsIDc5LCA4NywgIDk3LCA3MCwgNzYsICA4NCwgNTgsIDY0LCAgNzAsIDQ4LCA1MywgIDU2LCAzNiwgNDEsICA0MCwgMjEsIDI2LCAgMjEsICAwLCAgNSwgICAwLCAgMCwgIDAsDQorICAgIDEyNSwgODksIDg0LCAxMTEsIDc5LCA3MywgIDk3LCA2OSwgNjQsICA4NCwgNTksIDU0LCAgNzAsIDQ4LCA0MywgIDU2LCAzNiwgMzEsICA0MCwgMjIsIDE3LCAgMjAsICAxLCAgMSwgICAwLCAgMCwgIDAsDQorICAgIDEyNSwgODksIDY5LCAxMTIsIDc5LCA2MCwgIDk4LCA3MCwgNTEsICA4NCwgNTksIDQyLCAgNzAsIDQ4LCAzMiwgIDU2LCAzNiwgMjAsICA0MSwgMjIsICA1LCAgMTksICAyLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDEyNiwgODksIDU3LCAxMTIsIDc5LCA0OSwgIDk5LCA3MCwgNDEsICA4NCwgNTksIDMyLCAgNzAsIDQ4LCAyMiwgIDU2LCAzNiwgMTAsICA0MCwgMjIsICAwLCAgMTgsICAyLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDEyMSwgNjcsIDE1NCwgMTA4LCA1OCwgMTM4LCAgOTcsIDUwLCAxMjQsICA4NCwgMzksIDEwNywgIDcxLCAyOCwgOTIsICA1OCwgMTIsIDc2LCAgNDMsICAwLCA1OSwgIDIwLCAgMCwgMzcsICAgMCwgIDAsICAwLA0KKyAgICAxMjQsIDY4LCAxNDAsIDExMSwgNTksIDEyNiwgIDk4LCA1MCwgMTEyLCAgODQsIDQwLCA5OCwgIDcxLCAyOSwgODMsICA1OCwgMTUsIDY3LCAgNDIsICAwLCA1MSwgIDIwLCAgMCwgMzAsICAgMCwgIDAsICAwLA0KKyAgICAxMjQsIDY4LCAxMjksIDExMSwgNTksIDExNCwgIDk5LCA1MSwgMTAyLCAgODYsIDQxLCA4OCwgIDcxLCAzMCwgNzUsICA1OCwgMTcsIDYwLCAgNDIsICAwLCA0NSwgIDIwLCAgMCwgMjQsICAgMCwgIDAsICAwLA0KKyAgICAxMjUsIDcwLCAxMTYsIDExMSwgNjAsIDEwMywgIDk5LCA1MSwgOTIsICA4NSwgNDEsIDc5LCAgNzEsIDMxLCA2NiwgIDU4LCAxOSwgNTMsICA0MiwgIDMsIDM4LCAgMjAsICAwLCAxNywgICAwLCAgMCwgIDAsDQorICAgIDEyNSwgNzAsIDEwNCwgMTExLCA2MSwgOTMsICA5OSwgNTIsIDgxLCAgODUsIDQzLCA2OSwgIDcyLCAzMiwgNTgsICA1OCwgMjAsIDQ1LCAgNDIsICA0LCAzMSwgIDIwLCAgMCwgIDgsICAgMCwgIDAsICAwLA0KKyAgICAxMjYsIDcwLCA5MiwgMTExLCA2MSwgODEsICA5OSwgNTIsIDcxLCAgODUsIDQyLCA2MCwgIDcxLCAzMywgNDksICA1NywgMjEsIDM3LCAgNDIsICA2LCAyMywgIDIwLCAgMCwgIDMsICAgMCwgIDAsICAwLA0KKyAgICAxMjYsIDcwLCA3OSwgMTEyLCA2MSwgNzAsICA5OSwgNTMsIDYwLCAgODUsIDQzLCA1MCwgIDcxLCAzMywgMzksICA1NywgMjIsIDI4LCAgNDEsICA3LCAxMywgIDE5LCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMjcsIDcxLCA2NiwgMTEzLCA2MiwgNTYsIDEwMCwgNTMsIDQ4LCAgODYsIDQ0LCAzOSwgIDcxLCAzNCwgMjksICA1NywgMjMsIDE4LCAgNDEsICA4LCAgMiwgIDE4LCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMjgsIDcwLCA1NSwgMTE0LCA2MiwgNDYsIDEwMCwgNTQsIDM5LCAgODYsIDQ0LCAzMCwgIDcxLCAzNCwgMjAsICA1NywgMjMsICA3LCAgNDEsICA5LCAgMCwgIDE4LCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMjQsIDQxLCAxNDUsIDExMSwgMzIsIDEyOCwgIDk5LCAyMywgMTE0LCAgODYsIDEwLCAxMDAsICA3MywgIDAsIDg1LCAgNjAsICAwLCA3MSwgIDQzLCAgMCwgNTQsICAxNywgIDAsIDMyLCAgIDAsICAwLCAgMCwNCisgICAgMTI2LCA0MiwgMTMxLCAxMTMsIDMzLCAxMTcsIDEwMCwgMjUsIDEwNCwgIDg2LCAxNCwgOTAsICA3MywgIDAsIDc3LCAgNjAsICAwLCA2MywgIDQ0LCAgMCwgNDcsICAxOCwgIDAsIDI1LCAgIDAsICAwLCAgMCwNCisgICAgMTI3LCA0MywgMTIwLCAxMTMsIDM0LCAxMDYsIDEwMSwgMjYsIDk1LCAgODYsIDE3LCA4MiwgIDczLCAgMiwgNjksICA1OSwgIDAsIDU2LCAgNDMsICAwLCA0MSwgIDE4LCAgMCwgMTksICAgMCwgIDAsICAwLA0KKyAgICAxMjcsIDQ1LCAxMDksIDExMywgMzcsIDk3LCAxMDEsIDI4LCA4NSwgIDg2LCAxOSwgNzQsICA3MywgIDUsIDYxLCAgNTksICAwLCA0OCwgIDQzLCAgMCwgMzQsICAxOSwgIDAsIDExLCAgIDAsICAwLCAgMCwNCisgICAgMTI3LCA0NiwgOTgsIDExNCwgMzgsIDg2LCAxMDAsIDMwLCA3NiwgIDg3LCAyMSwgNjUsICA3MywgIDksIDU0LCAgNTksICAwLCA0MSwgIDQzLCAgMCwgMjYsICAxOCwgIDAsICA1LCAgIDAsICAwLCAgMCwNCisgICAgMTI3LCA0NywgODcsIDExMywgMzksIDc2LCAxMDEsIDMxLCA2NywgIDg2LCAyMiwgNTYsICA3MiwgMTEsIDQ1LCAgNTksICAwLCAzMywgIDQzLCAgMCwgMTksICAxOCwgIDAsICAyLCAgIDAsICAwLCAgMCwNCisgICAgMTI4LCA0OCwgNzUsIDExNCwgMzksIDY1LCAxMDEsIDMzLCA1NiwgIDg2LCAyMywgNDYsICA3MiwgMTIsIDM2LCAgNTgsICAwLCAyNCwgIDQyLCAgMCwgIDksICAxNywgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTI5LCA0OCwgNjMsIDExNCwgNDEsIDU0LCAxMDIsIDMzLCA0NiwgIDg3LCAyNCwgMzYsICA3MiwgMTQsIDI2LCAgNTgsICAxLCAxNCwgIDQyLCAgMCwgIDIsICAxNiwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMTI4LCA0OCwgNTMsIDExNCwgNDEsIDQ0LCAxMDIsIDM0LCAzNywgIDg3LCAyNSwgMjcsICA3MiwgMTUsIDE3LCAgNTgsICAxLCAgMywgIDQxLCAgMCwgIDAsICAxNSwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTg5LCAyNDIsICAgMCwgMTY5LCAyMTcsICAgMCwgMTUxLCAxOTQsICAgMCwgMTMyLCAxNzAsICAgMCwgMTEzLCAxNDcsICAgMCwgOTQsIDEyMywgICAwLCA3NCwgOTksICAgMCwgNTEsIDcxLCAgIDAsIDE1LCAzNCwNCisgICAgMSwgMTg3LCAyMTksICAgMSwgMTY3LCAxOTUsICAgMCwgMTUwLCAxNzUsICAgMCwgMTMxLCAxNTMsICAgMCwgMTEzLCAxMzIsICAgMCwgOTQsIDExMSwgICAwLCA3NCwgODksICAgMCwgNTAsIDYzLCAgIDAsIDEzLCAyOCwNCisgICAgMSwgMTg2LCAxOTgsICAgMSwgMTY3LCAxNzgsICAgMCwgMTQ5LCAxNTgsICAgMCwgMTMwLCAxMzksICAgMCwgMTExLCAxMTksICAgMCwgOTMsIDEwMCwgICAwLCA3NCwgODAsICAgMCwgNTAsIDU1LCAgIDAsIDEzLCAyMiwNCisgICAgMSwgMTg1LCAxNzYsICAgMSwgMTY1LCAxNTksICAgMSwgMTQ4LCAxNDIsICAgMCwgMTI5LCAxMjMsICAgMCwgMTExLCAxMDYsICAgMCwgOTMsIDg5LCAgIDAsIDczLCA3MCwgICAwLCA1MCwgNDcsICAgMCwgMTMsIDEzLA0KKyAgICAxLCAxODQsIDE1NywgICAxLCAxNjQsIDE0MSwgICAxLCAxNDcsIDEyNSwgICAwLCAxMjgsIDExMCwgICAwLCAxMTAsIDkzLCAgIDAsIDkyLCA3NywgICAwLCA3MywgNjAsICAgMCwgNTAsIDM5LCAgIDAsIDEyLCAgNSwNCisgICAgMjUsIDE4MiwgMTM3LCAgMjUsIDE2MywgMTIyLCAgMTcsIDE0NiwgMTA5LCAgIDAsIDEyOCwgOTYsICAgMCwgMTEwLCA4MSwgICAwLCA5MiwgNjYsICAgMCwgNzMsIDUxLCAgIDAsIDUwLCAzMCwgICAwLCAxMCwgIDAsDQorICAgIDQyLCAxODEsIDExNCwgIDM1LCAxNjMsIDEwMiwgIDMwLCAxNDUsIDkxLCAgMTQsIDEyNywgODAsICAgMCwgMTA5LCA2NywgICAwLCA5MSwgNTMsICAgMCwgNzIsIDM5LCAgIDAsIDUwLCAxOSwgICAwLCAxMCwgIDAsDQorICAgIDUyLCAxODEsIDkyLCAgNDMsIDE2MiwgODMsICAzMiwgMTQ1LCA3MywgIDE5LCAxMjYsIDYzLCAgIDAsIDEwOCwgNTIsICAgMCwgOTAsIDQwLCAgIDAsIDcyLCAyNywgICAwLCA1MCwgIDcsICAgMCwgMTAsICAwLA0KKyAgICA1NywgMTgxLCA3NCwgIDQ4LCAxNjIsIDY2LCAgMzcsIDE0NCwgNTcsICAyNCwgMTI2LCA0OSwgICA3LCAxMDgsIDQwLCAgIDAsIDkwLCAyOSwgICAwLCA3MiwgMTUsICAgMCwgNDksICAwLCAgIDAsIDEwLCAgMCwNCisgICAgMSwgMTcwLCAyMjcsICAgMSwgMTUyLCAyMDMsICAgMCwgMTM2LCAxODIsICAgMCwgMTE5LCAxNTksICAgMCwgMTAxLCAxMzcsICAgMCwgODQsIDExNSwgICAwLCA2NSwgOTIsICAgMCwgNDMsIDY2LCAgIDAsICAxLCAyOSwNCisgICAgMSwgMTY5LCAyMDYsICAgMSwgMTUxLCAxODQsICAgMSwgMTM2LCAxNjUsICAgMCwgMTE4LCAxNDQsICAgMCwgMTAyLCAxMjUsICAgMCwgODQsIDEwNSwgICAwLCA2NSwgODMsICAgMCwgNDMsIDU4LCAgIDAsICAwLCAyMiwNCisgICAgMjksIDE2OCwgMTg2LCAgMjEsIDE1MSwgMTY3LCAgMTQsIDEzNSwgMTUwLCAgIDQsIDExOCwgMTMxLCAgIDAsIDEwMSwgMTEyLCAgIDAsIDgzLCA5NCwgICAwLCA2NSwgNzUsICAgMCwgNDMsIDUxLCAgIDAsICAwLCAxNiwNCisgICAgNDEsIDE2NywgMTY3LCAgMzMsIDE1MCwgMTUwLCAgMzEsIDEzNCwgMTM0LCAgMTksIDExNywgMTE3LCAgIDQsIDEwMCwgMTAwLCAgIDAsIDgzLCA4MywgICAwLCA2NSwgNjUsICAgMCwgNDIsIDQzLCAgIDAsICAwLCAgOCwNCisgICAgNDgsIDE2NywgMTQ5LCAgNDEsIDE0OSwgMTMzLCAgMzMsIDEzMywgMTE4LCAgMjUsIDExNiwgMTAzLCAgMTMsIDk5LCA4OCwgICAwLCA4MywgNzMsICAgMCwgNjUsIDU2LCAgIDAsIDQyLCAzNSwgICAwLCAgMCwgIDAsDQorICAgIDU4LCAxNjUsIDEzMCwgIDQ5LCAxNDgsIDExNSwgIDQyLCAxMzIsIDEwMywgIDMxLCAxMTUsIDg5LCAgMTgsIDk5LCA3NSwgICAwLCA4MiwgNjEsICAgMCwgNjQsIDQ2LCAgIDAsIDQyLCAyNiwgICAwLCAgMCwgIDAsDQorICAgIDYyLCAxNjQsIDExMCwgIDU1LCAxNDcsIDk3LCAgNDUsIDEzMiwgODcsICAzNSwgMTE1LCA3NSwgIDIyLCA5OCwgNjMsICAgNSwgODIsIDUwLCAgIDAsIDY0LCAzNiwgICAwLCA0MiwgMTYsICAgMCwgIDAsICAwLA0KKyAgICA2OSwgMTY0LCA4OSwgIDYwLCAxNDcsIDc4LCAgNTAsIDEzMSwgNzAsICAzNywgMTE0LCA1OSwgIDI2LCA5OCwgNDksICAxMCwgODEsIDM3LCAgIDAsIDY0LCAyNCwgICAwLCA0MiwgIDQsICAgMCwgIDAsICAwLA0KKyAgICA3MSwgMTY0LCA3MSwgIDYzLCAxNDcsIDYzLCAgNTMsIDEzMSwgNTUsICA0MCwgMTE0LCA0NywgIDI4LCA5OCwgMzgsICAxMywgODEsIDI2LCAgIDAsIDY0LCAxMiwgICAwLCA0MiwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAyOCwgMTUzLCAyMTQsICAyNCwgMTM4LCAxOTMsICAyMywgMTIzLCAxNzEsICAxNiwgMTA3LCAxNTAsICAgMCwgOTEsIDEzMCwgICAwLCA3NSwgMTA5LCAgIDAsIDU4LCA4NywgICAwLCAzNSwgNjEsICAgMCwgIDAsIDI1LA0KKyAgICA0OCwgMTUzLCAxOTQsICA0MSwgMTM4LCAxNzQsICAzNCwgMTIzLCAxNTYsICAyNywgMTA3LCAxMzYsICAxNiwgOTEsIDExNywgICAxLCA3NSwgOTgsICAgMCwgNTcsIDc4LCAgIDAsIDM1LCA1MywgICAwLCAgMCwgMTcsDQorICAgIDU1LCAxNTMsIDE3NywgIDQ3LCAxMzcsIDE1OCwgIDQyLCAxMjIsIDE0MiwgIDMzLCAxMDcsIDEyNCwgIDIyLCA5MSwgMTA2LCAgIDYsIDc1LCA4OCwgICAwLCA1NywgNzAsICAgMCwgMzUsIDQ2LCAgIDAsICAwLCAgOSwNCisgICAgNjEsIDE1MiwgMTU4LCAgNTMsIDEzNiwgMTQzLCAgNDUsIDEyMiwgMTI3LCAgMzYsIDEwNiwgMTExLCAgMjQsIDkwLCA5NCwgIDEwLCA3NCwgNzgsICAgMCwgNTcsIDYxLCAgIDAsIDM1LCAzOSwgICAwLCAgMCwgIDIsDQorICAgIDY3LCAxNTEsIDE0MSwgIDU5LCAxMzUsIDEyNiwgIDQ5LCAxMjEsIDExMiwgIDM5LCAxMDUsIDk4LCAgMjksIDkwLCA4MywgIDE0LCA3NCwgNjgsICAgMCwgNTcsIDUyLCAgIDAsIDM1LCAzMSwgICAwLCAgMCwgIDAsDQorICAgIDcxLCAxNTAsIDEyMywgIDYyLCAxMzUsIDExMCwgIDU0LCAxMjAsIDk4LCAgNDIsIDEwNSwgODQsICAzMSwgODksIDcxLCAgMTYsIDc0LCA1OCwgICAwLCA1NywgNDMsICAgMCwgMzUsIDIyLCAgIDAsICAwLCAgMCwNCisgICAgNzQsIDE1MCwgMTA1LCAgNjQsIDEzNCwgOTIsICA1NSwgMTIwLCA4MywgIDQ1LCAxMDQsIDcxLCAgMzQsIDg5LCA1OSwgIDIwLCA3MywgNDcsICAgMCwgNTcsIDMyLCAgIDAsIDM1LCAxMywgICAwLCAgMCwgIDAsDQorICAgIDc4LCAxNDksIDg0LCAgNjksIDEzNCwgNzUsICA1OSwgMTIwLCA2NiwgIDQ3LCAxMDMsIDU2LCAgMzQsIDg4LCA0NiwgIDIyLCA3MywgMzQsICAgMSwgNTcsIDIwLCAgIDAsIDM1LCAgMSwgICAwLCAgMCwgIDAsDQorICAgIDgwLCAxNDksIDY5LCAgNzAsIDEzMywgNjEsICA2MCwgMTE5LCA1MywgIDQ5LCAxMDMsIDQ0LCAgMzYsIDg4LCAzNSwgIDIzLCA3MywgMjQsICAgMiwgNTYsIDEwLCAgIDAsIDM1LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDU4LCAxMzYsIDIwMCwgIDUwLCAxMjIsIDE4MCwgIDQ1LCAxMDksIDE2MiwgIDM4LCA5NCwgMTQxLCAgMjcsIDgwLCAxMjEsICAxNSwgNjUsIDEwMiwgICAwLCA0OCwgODEsICAgMCwgMjYsIDU2LCAgIDAsICAwLCAxOSwNCisgICAgNjYsIDEzNiwgMTgyLCAgNTksIDEyMiwgMTYzLCAgNTIsIDEwOSwgMTQ2LCAgNDIsIDk0LCAxMjgsICAzMiwgODAsIDEwOSwgIDIwLCA2NSwgOTEsICAgMiwgNDgsIDcyLCAgIDAsIDI2LCA0OSwgICAwLCAgMCwgMTEsDQorICAgIDcwLCAxMzYsIDE2NSwgIDYyLCAxMjIsIDE0OSwgIDU1LCAxMDgsIDEzMywgIDQ2LCA5NCwgMTE2LCAgMzUsIDgwLCA5OSwgIDIxLCA2NSwgODIsICAgNCwgNDksIDY0LCAgIDAsIDI2LCA0MSwgICAwLCAgMCwgIDMsDQorICAgIDc2LCAxMzUsIDE0OSwgIDY2LCAxMjEsIDEzMywgIDU4LCAxMDgsIDExOSwgIDQ4LCA5NCwgMTAzLCAgMzYsIDc5LCA4OCwgIDIzLCA2NSwgNzMsICAgNywgNDksIDU2LCAgIDAsIDI3LCAzNCwgICAwLCAgMCwgIDAsDQorICAgIDc4LCAxMzUsIDEzMywgIDY5LCAxMjAsIDExOCwgIDYwLCAxMDcsIDEwNiwgIDUwLCA5MywgOTIsICAzOSwgNzksIDc3LCAgMjYsIDY1LCA2MywgICA4LCA0OSwgNDcsICAgMCwgMjcsIDI2LCAgIDAsICAwLCAgMCwNCisgICAgODIsIDEzNCwgMTE3LCAgNzEsIDEyMCwgMTA0LCAgNjIsIDEwNywgOTIsICA1MSwgOTMsIDc5LCAgMzksIDc4LCA2NiwgIDI3LCA2NCwgNTMsICAxMCwgNDgsIDM5LCAgIDAsIDI3LCAxOCwgICAwLCAgMCwgIDAsDQorICAgIDg0LCAxMzQsIDk5LCAgNzMsIDExOSwgODcsICA2NCwgMTA2LCA3NywgIDUzLCA5MiwgNjYsICA0MiwgNzgsIDU1LCAgMjgsIDY0LCA0MiwgIDExLCA0OCwgMjksICAgMCwgMjgsICA5LCAgIDAsICAwLCAgMCwNCisgICAgODcsIDEzMywgODEsICA3NiwgMTE5LCA3MiwgIDY2LCAxMDYsIDYyLCAgNTUsIDkyLCA1MiwgIDQzLCA3OCwgNDIsICAyOSwgNjQsIDMxLCAgMTIsIDQ4LCAxNywgICAwLCAyOCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICA4OCwgMTM0LCA2NywgIDc3LCAxMTksIDU4LCAgNjgsIDEwNiwgNTEsICA1NiwgOTIsIDQyLCAgNDQsIDc4LCAzMiwgIDMwLCA2NCwgMjAsICAxMiwgNDgsICA2LCAgIDAsIDI4LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDczLCAxMjAsIDE4OSwgIDY0LCAxMDcsIDE2OCwgIDU3LCA5NiwgMTUxLCAgNDcsIDgyLCAxMzMsICAzOCwgNjksIDExNCwgIDI2LCA1NSwgOTUsICAxMSwgMzksIDc1LCAgIDAsIDE2LCA1MSwgICAwLCAgMCwgMTQsDQorICAgIDc4LCAxMjAsIDE3MSwgIDY5LCAxMDcsIDE1MywgIDYyLCA5NSwgMTM3LCAgNTEsIDgyLCAxMTksICA0MCwgNjksIDEwMiwgIDI5LCA1NSwgODUsICAxNSwgMzksIDY2LCAgIDAsIDE3LCA0NCwgICAwLCAgMCwgIDQsDQorICAgIDgxLCAxMjAsIDE1NiwgIDcxLCAxMDcsIDE0MCwgIDY0LCA5NSwgMTI1LCAgNTMsIDgyLCAxMDksICA0MiwgNjksIDkzLCAgMzEsIDU1LCA3NywgIDE2LCAzOSwgNTksICAgMCwgMTgsIDM3LCAgIDAsICAwLCAgMCwNCisgICAgODUsIDEyMCwgMTQxLCAgNzQsIDEwNywgMTI2LCAgNjUsIDk1LCAxMTIsICA1NCwgODIsIDk3LCAgNDMsIDY5LCA4MiwgIDMyLCA1NSwgNjcsICAxNywgMzksIDUxLCAgIDAsIDE5LCAzMCwgICAwLCAgMCwgIDAsDQorICAgIDg2LCAxMTksIDEyNiwgIDc2LCAxMDYsIDExMiwgIDY2LCA5NSwgMTAwLCAgNTYsIDgxLCA4NSwgIDQ1LCA2OSwgNzIsICAzMywgNTUsIDU5LCAgMTgsIDQwLCA0MywgICAwLCAxOSwgMjIsICAgMCwgIDAsICAwLA0KKyAgICA4OSwgMTE5LCAxMTAsICA3OCwgMTA2LCA5OCwgIDY5LCA5NCwgODcsICA1NiwgODEsIDc1LCAgNDYsIDY4LCA2MiwgIDMzLCA1NSwgNDksICAxOCwgNDAsIDM1LCAgIDAsIDIwLCAxNSwgICAwLCAgMCwgIDAsDQorICAgIDg5LCAxMTksIDk1LCAgODAsIDEwNiwgODMsICA3MCwgOTQsIDczLCAgNTgsIDgxLCA2MywgIDQ2LCA2OCwgNTEsICAzNCwgNTUsIDM5LCAgMTksIDQwLCAyNSwgICAwLCAyMCwgIDQsICAgMCwgIDAsICAwLA0KKyAgICA5MiwgMTE4LCA3OCwgIDgyLCAxMDYsIDY4LCAgNzAsIDkzLCA1OSwgIDU5LCA4MSwgNDksICA0NywgNjgsIDM5LCAgMzQsIDU1LCAyOCwgIDE5LCA0MCwgMTQsICAgMCwgMjAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgOTMsIDExOCwgNjUsICA4MiwgMTA1LCA1NSwgIDcyLCA5MywgNDgsICA2MCwgODEsIDM5LCAgNDcsIDY4LCAyOSwgIDM0LCA1NSwgMTgsICAyMCwgNDAsICAyLCAgIDAsIDIwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDgzLCAxMDQsIDE3NywgIDc0LCA5MywgMTU5LCAgNjUsIDgyLCAxNDIsICA1NiwgNzAsIDEyNCwgIDQ1LCA1NywgMTA2LCAgMzMsIDQ0LCA4OSwgIDIwLCAyOCwgNzAsICAgMSwgIDQsIDQ2LCAgIDAsICAwLCAgOCwNCisgICAgODYsIDEwNCwgMTYxLCAgNzgsIDkzLCAxNDUsICA2OCwgODIsIDEyOCwgIDU4LCA3MCwgMTEyLCAgNDgsIDU4LCA5NiwgIDM1LCA0NSwgODAsICAyMSwgMjksIDYyLCAgIDEsICA2LCA0MCwgICAwLCAgMCwgIDAsDQorICAgIDg5LCAxMDQsIDE0NywgIDc5LCA5MywgMTMxLCAgNjksIDgyLCAxMTgsICA1OSwgNzAsIDEwMiwgIDQ3LCA1OCwgODcsICAzNiwgNDUsIDcyLCAgMjMsIDI5LCA1NSwgICAzLCAgNywgMzMsICAgMCwgIDAsICAwLA0KKyAgICA5MCwgMTA0LCAxMzIsICA4MCwgOTMsIDExOSwgIDcxLCA4MiwgMTA2LCAgNjAsIDcwLCA5MSwgIDQ4LCA1OCwgNzcsICAzNywgNDUsIDYyLCAgMjMsIDMwLCA0NywgICA0LCAgNywgMjYsICAgMCwgIDAsICAwLA0KKyAgICA5MiwgMTA0LCAxMTgsICA4MiwgOTMsIDEwNSwgIDcyLCA4MiwgOTMsICA2MSwgNjksIDgwLCAgNTAsIDU4LCA2OCwgIDM3LCA0NSwgNTUsICAyMywgMzAsIDM5LCAgIDQsICA4LCAxOCwgICAwLCAgMCwgIDAsDQorICAgIDk0LCAxMDQsIDEwNSwgIDgyLCA5MiwgOTMsICA3MiwgODIsIDgyLCAgNjEsIDcwLCA3MCwgIDUwLCA1OCwgNTgsICAzOCwgNDYsIDQ2LCAgMjMsIDMxLCAzMSwgICA2LCAxMCwgMTEsICAgMCwgIDAsICAwLA0KKyAgICA5NSwgMTA0LCA5MCwgIDg0LCA5MiwgNzksICA3NCwgODIsIDcwLCAgNjIsIDcwLCA1OCwgIDUwLCA1OCwgNDgsICAzNywgNDYsIDM2LCAgMjMsIDMxLCAyMiwgICA0LCAxMSwgIDMsICAgMCwgIDAsICAwLA0KKyAgICA5NiwgMTAzLCA3NCwgIDg1LCA5MiwgNjUsICA3NSwgODEsIDU2LCAgNjMsIDcwLCA0NywgIDUwLCA1OCwgMzcsICAzOCwgNDYsIDI1LCAgMjQsIDMxLCAxMSwgICAzLCAxMSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICA5NywgMTAzLCA2MiwgIDg2LCA5MiwgNTMsICA3NiwgODEsIDQ1LCAgNjMsIDY5LCAzNiwgIDUxLCA1OCwgMjcsICAzOCwgNDYsIDE1LCAgMjMsIDMxLCAgMCwgICAzLCAxMSwgIDAsICAgMCwgIDAsICAwLA0KKyAgICA5MCwgODcsIDE2NSwgIDgxLCA3NywgMTQ4LCAgNzIsIDY3LCAxMzIsICA2MiwgNTUsIDExNiwgIDUwLCA0NCwgOTksICAzOSwgMzEsIDgyLCAgMjUsIDE0LCA2NCwgICAxLCAgMCwgNDIsICAgMCwgIDAsICAxLA0KKyAgICA5MywgODcsIDE1MCwgIDgzLCA3NywgMTM1LCAgNzQsIDY3LCAxMjEsICA2MywgNTYsIDEwNSwgIDUyLCA0NSwgOTAsICA0MCwgMzIsIDc0LCAgMjUsIDE2LCA1NywgICAzLCAgMCwgMzUsICAgMCwgIDAsICAwLA0KKyAgICA5NSwgODcsIDEzOCwgIDg1LCA3NywgMTIzLCAgNzUsIDY3LCAxMDksICA2MywgNTcsIDk1LCAgNTMsIDQ1LCA4MSwgIDQxLCAzMywgNjYsICAyNiwgMTcsIDUwLCAgIDQsICAwLCAyOCwgICAwLCAgMCwgIDAsDQorICAgIDk1LCA4OCwgMTI0LCAgODUsIDc3LCAxMTEsICA3NSwgNjcsIDk5LCAgNjMsIDU3LCA4NiwgIDUzLCA0NSwgNzIsICA0MSwgMzMsIDU4LCAgMjYsIDE4LCA0MywgICA1LCAgMSwgMjIsICAgMCwgIDAsICAwLA0KKyAgICA5NywgODgsIDExMiwgIDg3LCA3NywgMTAwLCAgNzYsIDY4LCA4OCwgIDY0LCA1NywgNzYsICA1MywgNDYsIDYzLCAgNDEsIDM0LCA1MCwgIDI2LCAxOSwgMzUsICAgNSwgIDIsIDE0LCAgIDAsICAwLCAgMCwNCisgICAgOTksIDg3LCA5OSwgIDg3LCA3OCwgODgsICA3NiwgNjgsIDc3LCAgNjUsIDU3LCA2NSwgIDUzLCA0NiwgNTQsICA0MSwgMzUsIDQyLCAgMjcsIDIwLCAyNywgICA2LCAgMiwgIDUsICAgMCwgIDAsICAwLA0KKyAgICAxMDAsIDg3LCA4NSwgIDg4LCA3NywgNzUsICA3NywgNjgsIDY1LCAgNjUsIDU3LCA1NCwgIDUzLCA0NiwgNDQsICA0MSwgMzUsIDMyLCAgMjcsIDIxLCAxOSwgICA1LCAgMywgIDIsICAgMCwgIDAsICAwLA0KKyAgICAxMDAsIDg4LCA3MSwgIDg5LCA3NywgNjEsICA3OCwgNjgsIDUzLCAgNjYsIDU3LCA0NCwgIDUzLCA0NywgMzMsICA0MSwgMzUsIDIyLCAgMjcsIDIxLCAgNywgICA1LCAgMywgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMDEsIDg3LCA2MCwgIDkwLCA3NywgNTIsICA3OSwgNjgsIDQ0LCAgNjYsIDU4LCAzNCwgIDUzLCA0NywgMjUsICA0MSwgMzUsIDEzLCAgMjYsIDIyLCAgMCwgICA1LCAgMywgIDAsICAgMCwgIDAsICAwLA0KKyAgICA5NywgNjcsIDE1NSwgIDg2LCA1OCwgMTM4LCAgNzcsIDUwLCAxMjUsICA2NiwgMzksIDEwOCwgIDU1LCAyOCwgOTIsICA0MywgMTIsIDc2LCAgMjksICAwLCA1OSwgICAyLCAgMCwgMzcsICAgMCwgIDAsICAwLA0KKyAgICA5OSwgNjcsIDE0MSwgIDg4LCA1OSwgMTI3LCAgNzgsIDUwLCAxMTMsICA2OCwgNDAsIDk4LCAgNTYsIDI5LCA4MywgIDQ0LCAxNSwgNjgsICAyOSwgIDAsIDUyLCAgIDMsICAwLCAzMCwgICAwLCAgMCwgIDAsDQorICAgIDEwMCwgNjgsIDEyOSwgIDg5LCA1OSwgMTE1LCAgODAsIDUxLCAxMDMsICA2OCwgNDEsIDg5LCAgNTYsIDMwLCA3NSwgIDQ0LCAxNiwgNjEsICAzMCwgIDAsIDQ1LCAgIDQsICAwLCAyNCwgICAwLCAgMCwgIDAsDQorICAgIDEwMCwgNjksIDExOCwgIDkwLCA2MCwgMTA0LCAgODAsIDUxLCA5MiwgIDY3LCA0MSwgNzksICA1NiwgMzEsIDY2LCAgNDQsIDE4LCA1MywgIDI5LCAgMiwgMzgsICAgNCwgIDAsIDE4LCAgIDAsICAwLCAgMCwNCisgICAgMTAxLCA2OSwgMTA0LCAgOTAsIDYxLCA5MywgIDc5LCA1MSwgODIsICA2NywgNDIsIDcwLCAgNTYsIDMyLCA1OSwgIDQ0LCAyMCwgNDYsICAyOSwgIDQsIDMxLCAgIDYsICAwLCAgOSwgICAwLCAgMCwgIDAsDQorICAgIDEwMiwgNjksIDkzLCAgOTAsIDYxLCA4MywgIDgwLCA1MiwgNzIsICA2OCwgNDIsIDYxLCAgNTYsIDMzLCA1MCwgIDQzLCAyMCwgMzgsICAyOSwgIDUsIDIzLCAgIDcsICAwLCAgNCwgICAwLCAgMCwgIDAsDQorICAgIDEwMiwgNzAsIDgwLCAgOTEsIDYxLCA3MSwgIDgwLCA1MiwgNjEsICA2OCwgNDMsIDUxLCAgNTYsIDMyLCA0MCwgIDQ0LCAyMSwgMjksICAzMCwgIDYsIDE0LCAgIDcsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDEwMywgNzAsIDY4LCAgOTIsIDYxLCA1OCwgIDgxLCA1MywgNTAsICA2OSwgNDMsIDQxLCAgNTYsIDM0LCAzMSwgIDQzLCAyMiwgMTksICAyOSwgIDcsICAzLCAgIDcsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDEwNCwgNzAsIDU3LCAgOTIsIDYxLCA0OCwgIDgyLCA1MywgNDAsICA2OSwgNDMsIDMyLCAgNTYsIDM0LCAyMiwgIDQzLCAyMywgMTAsICAyOSwgIDgsICAwLCAgIDYsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDEwMSwgNDUsIDE0NSwgIDkxLCAzNSwgMTI5LCAgODAsIDI2LCAxMTYsICA2OSwgMTUsIDEwMSwgIDU5LCAgMCwgODYsICA0NiwgIDAsIDcxLCAgMzEsICAwLCA1NSwgICAwLCAgMCwgMzMsICAgMCwgIDAsICAwLA0KKyAgICAxMDQsIDQ0LCAxMzIsICA5MiwgMzYsIDExOCwgIDgyLCAyOCwgMTA1LCAgNzEsIDE3LCA5MSwgIDU4LCAgMywgNzcsICA0NiwgIDAsIDYzLCAgMzEsICAwLCA0OCwgICAyLCAgMCwgMjYsICAgMCwgIDAsICAwLA0KKyAgICAxMDQsIDQ2LCAxMjEsICA5MywgMzcsIDEwNywgIDgyLCAzMCwgOTYsICA3MCwgMjAsIDgzLCAgNTgsICA2LCA3MCwgIDQ2LCAgMCwgNTcsICAzMiwgIDAsIDQxLCAgIDQsICAwLCAyMCwgICAwLCAgMCwgIDAsDQorICAgIDEwNCwgNDgsIDExMCwgIDkzLCA0MCwgOTgsICA4MiwgMzEsIDg3LCAgNzAsIDIyLCA3NCwgIDU5LCAgOSwgNjIsICA0NSwgIDAsIDQ5LCAgMzEsICAwLCAzNSwgICA2LCAgMCwgMTMsICAgMCwgIDAsICAwLA0KKyAgICAxMDQsIDQ4LCA5OSwgIDkyLCA0MSwgODgsICA4MiwgMzIsIDc3LCAgNzAsIDIzLCA2NSwgIDU4LCAxMSwgNTQsICA0NiwgIDAsIDQyLCAgMzIsICAwLCAyNywgICA3LCAgMCwgIDUsICAgMCwgIDAsICAwLA0KKyAgICAxMDUsIDUwLCA4OCwgIDkzLCA0MSwgNzcsICA4MiwgMzQsIDY4LCAgNzEsIDI0LCA1NywgIDU4LCAxMywgNDYsICA0NSwgIDEsIDM1LCAgMzEsICAwLCAyMSwgICA3LCAgMCwgIDIsICAgMCwgIDAsICAwLA0KKyAgICAxMDUsIDUwLCA3NiwgIDk0LCA0MSwgNjYsICA4MywgMzQsIDU3LCAgNzEsIDI1LCA0NywgIDU4LCAxNSwgMzcsICA0NSwgIDIsIDI1LCAgMzIsICAwLCAxMSwgICA3LCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMDYsIDUwLCA2NCwgIDk0LCA0MiwgNTUsICA4MywgMzUsIDQ3LCAgNzEsIDI2LCAzOCwgIDU4LCAxNiwgMjcsICA0NSwgIDQsIDE3LCAgMzEsICAwLCAgNCwgICA3LCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAxMDYsIDUxLCA1NCwgIDk1LCA0MiwgNDUsICA4MywgMzUsIDM4LCAgNzEsIDI3LCAzMCwgIDU4LCAxNiwgMTksICA0NSwgIDUsICA3LCAgMzAsICAwLCAgMCwgICA2LCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxODEsIDI0MCwgICAwLCAxNjIsIDIxNiwgICAwLCAxNDQsIDE5MywgICAwLCAxMjYsIDE2OCwgICAwLCAxMDksIDE0NiwgICAwLCA5MSwgMTIzLCAgIDAsIDcxLCA5OCwgICAwLCA0OCwgNzEsICAgMCwgIDksIDM0LA0KKyAgICAwLCAxNzksIDIxOCwgICAwLCAxNjEsIDE5NSwgICAwLCAxNDQsIDE3NCwgICAwLCAxMjYsIDE1MywgICAwLCAxMDgsIDEzMiwgICAwLCA5MCwgMTEwLCAgIDAsIDcxLCA4OCwgICAwLCA0OCwgNjMsICAgMCwgIDgsIDI5LA0KKyAgICAwLCAxNzgsIDE5NywgICAwLCAxNTksIDE3NywgICAwLCAxNDMsIDE1OSwgICAwLCAxMjUsIDEzOSwgICAwLCAxMDcsIDExOSwgICAwLCA5MCwgOTksICAgMCwgNzEsIDc5LCAgIDAsIDQ4LCA1NSwgICAwLCAgOCwgMjIsDQorICAgIDAsIDE3NywgMTc3LCAgIDAsIDE1OCwgMTU4LCAgIDAsIDE0MiwgMTQxLCAgIDAsIDEyNCwgMTIzLCAgIDAsIDEwNywgMTA2LCAgIDAsIDg5LCA4OCwgICAwLCA3MSwgNzAsICAgMCwgNDgsIDQ3LCAgIDAsICA4LCAxNCwNCisgICAgMCwgMTc2LCAxNTcsICAgMCwgMTU4LCAxNDEsICAgMCwgMTQxLCAxMjYsICAgMCwgMTIzLCAxMDksICAgMCwgMTA2LCA5MywgICAwLCA4OSwgNzgsICAgMCwgNzAsIDYwLCAgIDAsIDQ3LCAzOSwgICAwLCAgNywgIDUsDQorICAgIDAsIDE3NSwgMTM4LCAgIDAsIDE1NywgMTIzLCAgIDAsIDE0MSwgMTEwLCAgIDAsIDEyMywgOTYsICAgMCwgMTA1LCA4MSwgICAwLCA4OCwgNjcsICAgMCwgNzAsIDUxLCAgIDAsIDQ4LCAzMCwgICAwLCAgNiwgIDAsDQorICAgIDAsIDE3MywgMTE1LCAgIDAsIDE1NSwgMTA0LCAgIDAsIDE0MCwgOTIsICAgMCwgMTIyLCA4MCwgICAwLCAxMDUsIDY3LCAgIDAsIDg4LCA1NSwgICAwLCA2OSwgNDAsICAgMCwgNDcsIDIwLCAgIDAsICA2LCAgMCwNCisgICAgMCwgMTczLCA5NCwgICAwLCAxNTUsIDg1LCAgIDAsIDEzOSwgNzUsICAgMCwgMTIxLCA2NCwgICAwLCAxMDQsIDUzLCAgIDAsIDg4LCA0MiwgICAwLCA3MCwgMjgsICAgMCwgNDcsICA5LCAgIDAsICA2LCAgMCwNCisgICAgMCwgMTczLCA3NiwgICAwLCAxNTUsIDcwLCAgIDAsIDEzOCwgNjEsICAgMCwgMTIyLCA1MywgICAwLCAxMDQsIDQ0LCAgIDAsIDg3LCAzMiwgICAwLCA2OSwgMTgsICAgMCwgNDcsICAwLCAgIDAsICA2LCAgMCwNCisgICAgMCwgMTY0LCAyMjYsICAgMCwgMTQ3LCAyMDMsICAgMCwgMTMxLCAxODEsICAgMCwgMTE0LCAxNTgsICAgMCwgOTcsIDEzNiwgICAwLCA4MCwgMTE1LCAgIDAsIDYzLCA5MiwgICAwLCA0MCwgNjUsICAgMCwgIDAsIDMwLA0KKyAgICAwLCAxNjIsIDIwNSwgICAwLCAxNDUsIDE4NCwgICAwLCAxMzAsIDE2NCwgICAwLCAxMTQsIDE0MywgICAwLCA5NywgMTI0LCAgIDAsIDgxLCAxMDQsICAgMCwgNjMsIDgzLCAgIDAsIDQwLCA1OCwgICAwLCAgMCwgMjMsDQorICAgIDAsIDE2MiwgMTg3LCAgIDAsIDE0NSwgMTY3LCAgIDAsIDEzMCwgMTUwLCAgIDAsIDExMywgMTMxLCAgIDAsIDk2LCAxMTIsICAgMCwgODAsIDkzLCAgIDAsIDYyLCA3NCwgICAwLCA0MCwgNTAsICAgMCwgIDAsIDE2LA0KKyAgICAwLCAxNjAsIDE2NywgICAwLCAxNDQsIDE1MCwgICAwLCAxMjksIDEzNCwgICAwLCAxMTIsIDExNiwgICAwLCA5NiwgMTAwLCAgIDAsIDgwLCA4MiwgICAwLCA2MiwgNjUsICAgMCwgNDAsIDQzLCAgIDAsICAwLCAgNywNCisgICAgMCwgMTYwLCAxNDgsICAgMCwgMTQzLCAxMzMsICAgMCwgMTI4LCAxMTgsICAgMCwgMTExLCAxMDMsICAgMCwgOTYsIDg4LCAgIDAsIDgwLCA3MywgICAwLCA2MiwgNTYsICAgMCwgNDAsIDM1LCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTU4LCAxMzAsICAgMCwgMTQyLCAxMTcsICAgMCwgMTI3LCAxMDQsICAgMCwgMTExLCA4OSwgICAwLCA5NSwgNzYsICAgMCwgNzksIDYyLCAgIDAsIDYyLCA0NiwgICAwLCA0MCwgMjYsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxNTgsIDExMSwgICAwLCAxNDEsIDk5LCAgIDAsIDEyNywgODgsICAgMCwgMTExLCA3NiwgICAwLCA5NSwgNjMsICAgMCwgNzksIDUxLCAgIDAsIDYyLCAzNywgICAwLCA0MCwgMTgsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxNTgsIDkxLCAgIDAsIDE0MSwgODEsICAgMCwgMTI2LCA3MiwgICAwLCAxMTAsIDYyLCAgIDAsIDk0LCA1MCwgICAwLCA3OSwgMzksICAgMCwgNjIsIDI1LCAgIDAsIDQwLCAgNSwgICAwLCAgMCwgIDAsDQorICAgIDAsIDE1NywgNzQsICAgMCwgMTQxLCA2NiwgICAwLCAxMjYsIDU5LCAgIDAsIDExMCwgNDksICAgMCwgOTQsIDQwLCAgIDAsIDc4LCAyOSwgICAwLCA2MSwgMTUsICAgMCwgNDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTQ4LCAyMTQsICAgMCwgMTMzLCAxOTIsICAgMCwgMTE5LCAxNzEsICAgMCwgMTAzLCAxNTAsICAgMCwgODcsIDEyOSwgICAwLCA3MiwgMTA4LCAgIDAsIDU1LCA4NiwgICAwLCAzMiwgNjEsICAgMCwgIDAsIDI1LA0KKyAgICAwLCAxNDcsIDE5MywgICAwLCAxMzIsIDE3MywgICAwLCAxMTgsIDE1NSwgICAwLCAxMDMsIDEzNiwgICAwLCA4NywgMTE2LCAgIDAsIDcyLCA5OCwgICAwLCA1NSwgNzgsICAgMCwgMzIsIDUzLCAgIDAsICAwLCAxNywNCisgICAgMCwgMTQ3LCAxNzYsICAgMCwgMTMyLCAxNTgsICAgMCwgMTE4LCAxNDIsICAgMCwgMTAyLCAxMjQsICAgMCwgODcsIDEwNiwgICAwLCA3MiwgODgsICAgMCwgNTUsIDY5LCAgIDAsIDMzLCA0NiwgICAwLCAgMCwgIDksDQorICAgIDAsIDE0NiwgMTU5LCAgIDAsIDEzMSwgMTQyLCAgIDAsIDExNywgMTI3LCAgIDAsIDEwMiwgMTExLCAgIDAsIDg3LCA5NSwgICAwLCA3MSwgNzksICAgMCwgNTUsIDYxLCAgIDAsIDMzLCAzOSwgICAwLCAgMCwgIDIsDQorICAgIDAsIDE0NSwgMTQwLCAgIDAsIDEzMCwgMTI2LCAgIDAsIDExNywgMTEyLCAgIDAsIDEwMSwgOTgsICAgMCwgODYsIDgzLCAgIDAsIDcxLCA2OCwgICAwLCA1NSwgNTIsICAgMCwgMzMsIDMxLCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTQ0LCAxMjQsICAgMCwgMTMwLCAxMTEsICAgMCwgMTE2LCA5OSwgICAwLCAxMDEsIDg0LCAgIDAsIDg2LCA3MiwgICAwLCA3MSwgNTksICAgMCwgNTUsIDQzLCAgIDAsIDMzLCAyMywgICAwLCAgMCwgIDAsDQorICAgIDAsIDE0NCwgMTA2LCAgIDAsIDEyOSwgOTQsICAgMCwgMTE1LCA4MywgICAwLCAxMDEsIDcyLCAgIDAsIDg1LCA2MCwgICAwLCA3MSwgNDgsICAgMCwgNTUsIDM0LCAgIDAsIDMzLCAxNCwgICAwLCAgMCwgIDAsDQorICAgIDMsIDE0MywgODYsICAgMCwgMTI5LCA3NywgICAwLCAxMTUsIDY4LCAgIDAsIDEwMCwgNTgsICAgMCwgODUsIDQ4LCAgIDAsIDcwLCAzNiwgICAwLCA1NCwgMjIsICAgMCwgMzMsICAzLCAgIDAsICAwLCAgMCwNCisgICAgMTgsIDE0MywgNzIsICAxMywgMTI4LCA2MywgICAwLCAxMTUsIDU3LCAgIDAsIDEwMCwgNDcsICAgMCwgODUsIDM3LCAgIDAsIDcwLCAyNiwgICAwLCA1NCwgMTMsICAgMCwgMzMsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTMyLCAyMDAsICAgMCwgMTE4LCAxNzksICAgMCwgMTA1LCAxNjEsICAgMCwgOTEsIDE0MCwgICAwLCA3NiwgMTIxLCAgIDAsIDYyLCAxMDEsICAgMCwgNDYsIDgxLCAgIDAsIDI0LCA1NiwgICAwLCAgMCwgMTksDQorICAgIDAsIDEzMSwgMTgyLCAgIDAsIDExOCwgMTYzLCAgIDAsIDEwNSwgMTQ2LCAgIDAsIDkxLCAxMjgsICAgMCwgNzcsIDExMCwgICAwLCA2MiwgOTEsICAgMCwgNDYsIDcyLCAgIDAsIDI1LCA0OCwgICAwLCAgMCwgMTEsDQorICAgIDAsIDEzMSwgMTY1LCAgIDAsIDExNywgMTQ5LCAgIDAsIDEwNCwgMTMzLCAgIDAsIDkxLCAxMTYsICAgMCwgNzcsIDk5LCAgIDAsIDYyLCA4MiwgICAwLCA0NiwgNjQsICAgMCwgMjUsIDQxLCAgIDAsICAwLCAgNCwNCisgICAgMCwgMTMxLCAxNDksICAgMCwgMTE2LCAxMzQsICAgMCwgMTA0LCAxMTksICAgMCwgOTEsIDEwNCwgICAwLCA3NywgODksICAgMCwgNjIsIDczLCAgIDAsIDQ2LCA1NiwgICAwLCAyNSwgMzQsICAgMCwgIDAsICAwLA0KKyAgICAxMCwgMTMwLCAxMzMsICAgMiwgMTE2LCAxMTksICAgMCwgMTA0LCAxMDYsICAgMCwgOTAsIDkxLCAgIDAsIDc2LCA3OCwgICAwLCA2MiwgNjQsICAgMCwgNDYsIDQ4LCAgIDAsIDI2LCAyNywgICAwLCAgMCwgIDAsDQorICAgIDIzLCAxMzAsIDExOCwgIDIwLCAxMTYsIDEwNCwgIDEzLCAxMDMsIDkzLCAgIDMsIDg5LCA3OSwgICAwLCA3NiwgNjcsICAgMCwgNjIsIDU0LCAgIDAsIDQ2LCAzOSwgICAwLCAyNiwgMTksICAgMCwgIDAsICAwLA0KKyAgICAzMywgMTI5LCAxMDEsICAyNywgMTE1LCA4OSwgIDE5LCAxMDMsIDc5LCAgIDksIDg5LCA2NywgICAwLCA3NSwgNTYsICAgMCwgNjEsIDQzLCAgIDAsIDQ2LCAyOSwgICAwLCAyNiwgMTAsICAgMCwgIDAsICAwLA0KKyAgICA0MSwgMTI4LCA4MywgIDM1LCAxMTUsIDczLCAgMjcsIDEwMiwgNjQsICAxNSwgODksIDU1LCAgIDAsIDc2LCA0NSwgICAwLCA2MiwgMzMsICAgMCwgNDYsIDE4LCAgIDAsIDI2LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDQzLCAxMjksIDY5LCAgMzgsIDExNSwgNjEsICAzMCwgMTAyLCA1NCwgIDE3LCA4OSwgNDUsICAgMiwgNzUsIDM0LCAgIDAsIDYxLCAyMywgICAwLCA0NiwgIDksICAgMCwgMjYsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMSwgMTE2LCAxODgsICAgMSwgMTA0LCAxNjgsICAgMCwgOTIsIDE1MSwgICAwLCA3OSwgMTMyLCAgIDAsIDY2LCAxMTMsICAgMCwgNTIsIDk0LCAgIDAsIDM2LCA3NSwgICAwLCAxNCwgNTIsICAgMCwgIDAsIDE0LA0KKyAgICAxNywgMTE2LCAxNzEsICAxNiwgMTA0LCAxNTMsICAxNCwgOTIsIDEzNywgICA4LCA3OSwgMTE5LCAgIDAsIDY3LCAxMDIsICAgMCwgNTMsIDg1LCAgIDAsIDM3LCA2NywgICAwLCAxNiwgNDQsICAgMCwgIDAsICA0LA0KKyAgICAzMSwgMTE2LCAxNTUsICAyNywgMTA0LCAxNDAsICAyMSwgOTIsIDEyNSwgIDEzLCA3OSwgMTA5LCAgIDMsIDY2LCA5MywgICAwLCA1MywgNzcsICAgMCwgMzcsIDU5LCAgIDAsIDE2LCAzOCwgICAwLCAgMCwgIDAsDQorICAgIDM3LCAxMTUsIDE0MSwgIDMwLCAxMDMsIDEyNiwgIDI2LCA5MiwgMTEyLCAgMTYsIDc5LCA5OCwgICA1LCA2NiwgODMsICAgMCwgNTMsIDY3LCAgIDAsIDM4LCA1MSwgICAwLCAxNywgMzEsICAgMCwgIDAsICAwLA0KKyAgICA0MSwgMTE1LCAxMjYsICAzNywgMTAzLCAxMTIsICAzMSwgOTIsIDEwMCwgIDIyLCA3OSwgODYsICAxMCwgNjYsIDcyLCAgIDAsIDUzLCA1OSwgICAwLCAzOCwgNDQsICAgMCwgMTcsIDIzLCAgIDAsICAwLCAgMCwNCisgICAgNDgsIDExNSwgMTExLCAgNDEsIDEwMiwgOTksICAzNCwgOTEsIDg4LCAgMjQsIDc4LCA3NiwgIDE0LCA2NiwgNjMsICAgMCwgNTMsIDUwLCAgIDAsIDM4LCAzNiwgICAwLCAxOCwgMTUsICAgMCwgIDAsICAwLA0KKyAgICA1MSwgMTE1LCA5NSwgIDQ2LCAxMDIsIDg1LCAgMzcsIDkxLCA3NCwgIDI2LCA3OCwgNjMsICAxNiwgNjYsIDUyLCAgIDAsIDUzLCA0MCwgICAwLCAzOCwgMjYsICAgMCwgMTgsICA1LCAgIDAsICAwLCAgMCwNCisgICAgNTUsIDExNCwgODAsICA0NywgMTAyLCA2OSwgIDQwLCA5MCwgNjAsICAzMCwgNzgsIDUxLCAgMTksIDY2LCA0MSwgICAzLCA1MywgMjksICAgMCwgMzgsIDE1LCAgIDAsIDE3LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDU2LCAxMTQsIDY2LCAgNTAsIDEwMiwgNTgsICA0MCwgOTEsIDUwLCAgMzIsIDc4LCA0MSwgIDE4LCA2NiwgMzIsICAgNCwgNTMsIDIxLCAgIDAsIDM4LCAgNSwgICAwLCAxNywgIDAsICAgMCwgIDAsICAwLA0KKyAgICAzOSwgMTAyLCAxNzgsICAzNywgOTAsIDE1OSwgIDMwLCA3OSwgMTQyLCAgMjEsIDY4LCAxMjQsICAxNCwgNTUsIDEwNiwgICAwLCA0MiwgODksICAgMCwgMjYsIDcwLCAgIDAsICA0LCA0NiwgICAwLCAgMCwgIDgsDQorICAgIDQ4LCAxMDIsIDE2MSwgIDQyLCA5MCwgMTQ1LCAgMzUsIDc5LCAxMjgsICAyNiwgNjgsIDExMiwgIDE5LCA1NSwgOTYsICAgMywgNDMsIDc5LCAgIDAsIDI3LCA2MiwgICAwLCAgNiwgNDAsICAgMCwgIDAsICAwLA0KKyAgICA1MCwgMTAyLCAxNDcsICA0NCwgOTAsIDEzMiwgIDM3LCA3OSwgMTE4LCAgMzAsIDY4LCAxMDIsICAyMCwgNTYsIDg3LCAgIDcsIDQzLCA3MiwgICAwLCAyOCwgNTUsICAgMCwgIDYsIDM0LCAgIDAsICAwLCAgMCwNCisgICAgNTMsIDEwMSwgMTMzLCAgNDcsIDkwLCAxMTgsICA0MSwgNzksIDEwNiwgIDMyLCA2OCwgOTEsICAyMSwgNTYsIDc4LCAgIDksIDQzLCA2MywgICAwLCAyOCwgNDcsICAgMCwgIDYsIDI2LCAgIDAsICAwLCAgMCwNCisgICAgNTcsIDEwMSwgMTE5LCAgNTAsIDg5LCAxMDYsICA0MiwgNzksIDk0LCAgMzQsIDY3LCA4MSwgIDI0LCA1NiwgNjgsICAgOSwgNDQsIDU1LCAgIDAsIDI5LCA0MCwgICAwLCAgNiwgMTksICAgMCwgIDAsICAwLA0KKyAgICA2MCwgMTAwLCAxMDUsICA1MCwgOTAsIDk0LCAgNDUsIDgwLCA4MywgIDM2LCA2OCwgNzEsICAyNCwgNTYsIDU5LCAgMTEsIDQ0LCA0NiwgICAwLCAyOSwgMzIsICAgMCwgIDcsIDEyLCAgIDAsICAwLCAgMCwNCisgICAgNjMsIDEwMSwgOTEsICA1NSwgOTAsIDgwLCAgNDYsIDc5LCA3MCwgIDM3LCA2OCwgNTksICAyNiwgNTYsIDQ5LCAgMTIsIDQ0LCAzNywgICAxLCAyOSwgMjMsICAgMCwgIDcsICAzLCAgIDAsICAwLCAgMCwNCisgICAgNjQsIDEwMSwgNzUsICA1NiwgODksIDY3LCAgNDgsIDc5LCA1NywgIDM3LCA2OCwgNDgsICAyNywgNTYsIDM3LCAgMTUsIDQ0LCAyNiwgICAwLCAyOSwgMTIsICAgMCwgIDcsICAwLCAgIDAsICAwLCAgMCwNCisgICAgNjYsIDEwMSwgNjQsICA1OCwgODksIDU1LCAgNDksIDc5LCA0NywgIDM5LCA2OCwgMzgsICAyNywgNTYsIDI5LCAgMTQsIDQ0LCAxOCwgICAxLCAzMCwgIDIsICAgMCwgIDcsICAwLCAgIDAsICAwLCAgMCwNCisgICAgNTcsIDg2LCAxNjUsICA1MSwgNzUsIDE0OCwgIDQ1LCA2NSwgMTMzLCAgMzgsIDU0LCAxMTYsICAyOCwgNDMsIDEwMCwgIDE2LCAyOSwgODMsICAgMCwgMTMsIDY0LCAgIDAsICAwLCA0MiwgICAwLCAgMCwgIDMsDQorICAgIDYwLCA4NiwgMTUxLCAgNTUsIDc1LCAxMzUsICA0NywgNjYsIDEyMSwgIDM5LCA1NSwgMTA1LCAgMzAsIDQ0LCA5MCwgIDE4LCAzMSwgNzQsICAgMywgMTYsIDU3LCAgIDAsICAxLCAzNSwgICAwLCAgMCwgIDAsDQorICAgIDYyLCA4NiwgMTM5LCAgNTYsIDc1LCAxMjMsICA0OSwgNjYsIDExMCwgIDQwLCA1NSwgOTUsICAzMCwgNDQsIDgxLCAgMTksIDMxLCA2NiwgICA0LCAxNywgNTEsICAgMCwgIDEsIDI5LCAgIDAsICAwLCAgMCwNCisgICAgNjUsIDg2LCAxMjUsICA1NiwgNzYsIDExMiwgIDQ5LCA2NiwgOTksICAzOSwgNTUsIDg2LCAgMzEsIDQ0LCA3MiwgIDE5LCAzMiwgNTksICAgNSwgMTgsIDQ0LCAgIDAsICAxLCAyMywgICAwLCAgMCwgIDAsDQorICAgIDY3LCA4NiwgMTEzLCAgNTgsIDc1LCAxMDAsICA1MSwgNjYsIDg4LCAgNDEsIDU2LCA3NywgIDMxLCA0NSwgNjQsICAyMCwgMzIsIDUxLCAgIDYsIDE4LCAzNSwgICAwLCAgMSwgMTQsICAgMCwgIDAsICAwLA0KKyAgICA2OSwgODYsIDk5LCAgNjEsIDc2LCA4OCwgIDUyLCA2NiwgNzgsICA0MywgNTYsIDY2LCAgMzIsIDQ1LCA1NSwgIDIwLCAzMywgNDIsICAgNywgMTksIDI3LCAgIDAsICAxLCAgNiwgICAwLCAgMCwgIDAsDQorICAgIDY5LCA4NiwgODYsICA2MSwgNzYsIDc1LCAgNTMsIDY3LCA2NiwgIDQzLCA1NiwgNTUsICAzMywgNDUsIDQ1LCAgMjEsIDM0LCAzNCwgICA4LCAyMCwgMjAsICAgMCwgIDIsICAyLCAgIDAsICAwLCAgMCwNCisgICAgNzEsIDg2LCA3MiwgIDYzLCA3NSwgNjIsICA1NCwgNjYsIDU1LCAgNDUsIDU2LCA0NSwgIDMzLCA0NSwgMzUsICAyMiwgMzQsIDIzLCAgIDcsIDIwLCAgOCwgICAwLCAgMiwgIDAsICAgMCwgIDAsICAwLA0KKyAgICA3MSwgODYsIDYyLCAgNjQsIDc1LCA1MywgIDU1LCA2NiwgNDYsICA0NSwgNTYsIDM2LCAgMzMsIDQ2LCAyNywgIDIyLCAzNCwgMTUsICAgOCwgMjAsICAwLCAgIDAsICAyLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDY5LCA2NywgMTU2LCAgNjEsIDU4LCAxNDAsICA1MywgNTAsIDEyNSwgIDQ1LCAzOSwgMTA4LCAgMzUsIDI4LCA5MywgIDI1LCAxMiwgNzcsICAxMiwgIDAsIDU5LCAgIDAsICAwLCAzNywgICAwLCAgMCwgIDAsDQorICAgIDcxLCA2OCwgMTQyLCAgNjMsIDU5LCAxMjYsICA1NiwgNTAsIDExNCwgIDQ3LCA0MCwgOTgsICAzNywgMjgsIDg0LCAgMjYsIDE1LCA2OCwgIDEyLCAgMCwgNTMsICAgMCwgIDAsIDMwLCAgIDAsICAwLCAgMCwNCisgICAgNzIsIDY4LCAxMzAsICA2MywgNTksIDExNiwgIDU2LCA1MCwgMTA0LCAgNDcsIDQwLCA5MCwgIDM4LCAzMCwgNzUsICAyNywgMTYsIDYxLCAgMTMsICAwLCA0NiwgICAwLCAgMCwgMjQsICAgMCwgIDAsICAwLA0KKyAgICA3MywgNjksIDExOCwgIDY1LCA1OSwgMTA1LCAgNTcsIDUxLCA5MiwgIDQ3LCA0MSwgODAsICAzNywgMzAsIDY3LCAgMjYsIDE4LCA1MywgIDE0LCAgMSwgMzksICAgMCwgIDAsIDE4LCAgIDAsICAwLCAgMCwNCisgICAgNzQsIDY5LCAxMDYsICA2NSwgNjAsIDkzLCAgNTcsIDUxLCA4MiwgIDQ4LCA0MSwgNzAsICAzOCwgMzEsIDU5LCAgMjYsIDE5LCA0NiwgIDEzLCAgMiwgMzIsICAgMCwgIDAsIDEwLCAgIDAsICAwLCAgMCwNCisgICAgNzYsIDY5LCA5NSwgIDY2LCA2MSwgODQsICA1OCwgNTIsIDczLCAgNDgsIDQyLCA2MSwgIDM3LCAzMiwgNTAsICAyNiwgMjAsIDM4LCAgMTQsICA0LCAyNCwgICAwLCAgMCwgIDQsICAgMCwgIDAsICAwLA0KKyAgICA3NiwgNjksIDgxLCAgNjgsIDYwLCA3MiwgIDU4LCA1MiwgNjIsICA0OCwgNDIsIDUxLCAgMzgsIDMyLCA0MSwgIDI3LCAyMSwgMzAsICAxNCwgIDQsIDE2LCAgIDAsICAwLCAgMSwgICAwLCAgMCwgIDAsDQorICAgIDc2LCA2OSwgNjgsICA2OCwgNjEsIDYwLCAgNjAsIDUyLCA1MSwgIDQ5LCA0MywgNDEsICAzOCwgMzMsIDMyLCAgMjcsIDIxLCAyMCwgIDE0LCAgNSwgIDUsICAgMCwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgNzgsIDcwLCA1OSwgIDY5LCA2MSwgNTAsICA2MCwgNTIsIDQyLCAgNDksIDQzLCAzNCwgIDM5LCAzMywgMjQsICAyNywgMjIsIDEzLCAgMTQsICA3LCAgMSwgICAwLCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICA3NSwgNDYsIDE0NiwgIDY4LCAzOCwgMTMxLCAgNjAsIDMwLCAxMTcsICA1MCwgMTksIDEwMiwgIDQxLCAgNCwgODcsICAyOSwgIDAsIDcyLCAgMTMsICAwLCA1NSwgICAwLCAgMCwgMzMsICAgMCwgIDAsICAwLA0KKyAgICA3OCwgNDcsIDEzMiwgIDcwLCAzOSwgMTE5LCAgNjEsIDMwLCAxMDUsICA1MywgMjAsIDkyLCAgNDIsICA1LCA3OCwgIDMwLCAgMCwgNjQsICAxMywgIDAsIDQ5LCAgIDAsICAwLCAyNywgICAwLCAgMCwgIDAsDQorICAgIDc5LCA0OCwgMTIyLCAgNzAsIDQwLCAxMDgsICA2MiwgMzIsIDk2LCAgNTIsIDIyLCA4NCwgIDQyLCAgOSwgNzEsICAzMCwgIDAsIDU4LCAgMTQsICAwLCA0MiwgICAwLCAgMCwgMjAsICAgMCwgIDAsICAwLA0KKyAgICA3OSwgNTAsIDExMSwgIDcwLCA0MiwgOTksICA2MiwgMzMsIDg4LCAgNTIsIDIzLCA3NCwgIDQxLCAxMSwgNjMsICAyOSwgIDAsIDUwLCAgMTQsICAwLCAzNiwgICAwLCAgMCwgMTQsICAgMCwgIDAsICAwLA0KKyAgICA4MCwgNTAsIDk5LCAgNzAsIDQyLCA4OSwgIDYxLCAzNCwgNzgsICA1MiwgMjUsIDY3LCAgNDEsIDE0LCA1NSwgIDMwLCAgMCwgNDIsICAxNSwgIDAsIDI4LCAgIDAsICAwLCAgNiwgICAwLCAgMCwgIDAsDQorICAgIDgxLCA1MSwgODksICA3MSwgNDMsIDc4LCAgNjIsIDM1LCA2OSwgIDUyLCAyNSwgNTgsICA0MiwgMTUsIDQ3LCAgMzAsICAzLCAzNiwgIDE1LCAgMCwgMjIsICAgMCwgIDAsICAzLCAgIDAsICAwLCAgMCwNCisgICAgODEsIDUxLCA3NywgIDcxLCA0NCwgNjgsICA2MywgMzYsIDU5LCAgNTMsIDI2LCA0OSwgIDQxLCAxNiwgMzgsICAzMSwgIDQsIDI3LCAgMTYsICAwLCAxMiwgICAwLCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICA4MSwgNTIsIDY1LCAgNzIsIDQzLCA1NiwgIDYzLCAzNiwgNDgsICA1MywgMjcsIDM5LCAgNDEsIDE3LCAyOSwgIDMwLCAgNCwgMTgsICAxNCwgIDAsICAzLCAgIDAsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDgxLCA1MiwgNTUsICA3MywgNDQsIDQ3LCAgNjQsIDM2LCAzOSwgIDUzLCAyOCwgMzIsICA0MiwgMTgsIDIxLCAgMzEsICA2LCAgOSwgIDE0LCAgMCwgIDAsICAgMCwgIDAsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTc0LCAyMzksICAgMCwgMTU2LCAyMTQsICAgMCwgMTM5LCAxOTIsICAgMCwgMTIxLCAxNjgsICAgMCwgMTA1LCAxNDUsICAgMCwgODcsIDEyMywgICAwLCA2OCwgOTgsICAgMCwgNDYsIDcwLCAgIDAsICAzLCAzNSwNCisgICAgMCwgMTcyLCAyMTcsICAgMCwgMTU1LCAxOTQsICAgMCwgMTM5LCAxNzMsICAgMCwgMTIxLCAxNTIsICAgMCwgMTA0LCAxMzAsICAgMCwgODcsIDExMCwgICAwLCA2OSwgODgsICAgMCwgNDYsIDYzLCAgIDAsICA0LCAyOCwNCisgICAgMCwgMTcxLCAxOTcsICAgMCwgMTUzLCAxNzUsICAgMCwgMTM4LCAxNTgsICAgMCwgMTIxLCAxMzksICAgMCwgMTAzLCAxMTgsICAgMCwgODYsIDEwMCwgICAwLCA2OCwgNzksICAgMCwgNDYsIDU1LCAgIDAsICA0LCAyMiwNCisgICAgMCwgMTcwLCAxNzcsICAgMCwgMTUyLCAxNTgsICAgMCwgMTM2LCAxNDEsICAgMCwgMTE5LCAxMjQsICAgMCwgMTAzLCAxMDYsICAgMCwgODYsIDg4LCAgIDAsIDY4LCA3MCwgICAwLCA0NSwgNDcsICAgMCwgIDMsIDE0LA0KKyAgICAwLCAxNjksIDE1NywgICAwLCAxNTIsIDE0MSwgICAwLCAxMzYsIDEyNiwgICAwLCAxMTksIDEwOSwgICAwLCAxMDIsIDk0LCAgIDAsIDg2LCA3OCwgICAwLCA2OCwgNjAsICAgMCwgNDYsIDM5LCAgIDAsICAzLCAgNSwNCisgICAgMCwgMTY3LCAxMzgsICAgMCwgMTUwLCAxMjQsICAgMCwgMTM1LCAxMTEsICAgMCwgMTE4LCA5NywgICAwLCAxMDIsIDgyLCAgIDAsIDg1LCA2OCwgICAwLCA2OCwgNTIsICAgMCwgNDYsIDMxLCAgIDAsICAzLCAgMCwNCisgICAgMCwgMTY3LCAxMTgsICAgMCwgMTUwLCAxMDQsICAgMCwgMTM1LCA5NCwgICAwLCAxMTgsIDgxLCAgIDAsIDEwMSwgNjksICAgMCwgODQsIDU2LCAgIDAsIDY3LCA0MSwgICAwLCA0NSwgMjEsICAgMCwgIDMsICAwLA0KKyAgICAwLCAxNjYsIDk3LCAgIDAsIDE0OSwgODcsICAgMCwgMTM0LCA3NywgICAwLCAxMTcsIDY3LCAgIDAsIDEwMSwgNTYsICAgMCwgODUsIDQ0LCAgIDAsIDY3LCAzMCwgICAwLCA0NSwgMTAsICAgMCwgIDMsICAwLA0KKyAgICAwLCAxNjUsIDc5LCAgIDAsIDE0OSwgNzMsICAgMCwgMTMzLCA2NCwgICAwLCAxMTcsIDU2LCAgIDAsIDEwMSwgNDYsICAgMCwgODUsIDM0LCAgIDAsIDY4LCAyMSwgICAwLCA0NiwgIDEsICAgMCwgIDMsICAwLA0KKyAgICAwLCAxNTgsIDIyNSwgICAwLCAxNDEsIDIwMSwgICAwLCAxMjYsIDE4MCwgICAwLCAxMDksIDE1OCwgICAwLCA5NCwgMTM2LCAgIDAsIDc4LCAxMTQsICAgMCwgNjAsIDkxLCAgIDAsIDM4LCA2NiwgICAwLCAgMCwgMzAsDQorICAgIDAsIDE1NiwgMjAzLCAgIDAsIDE0MCwgMTgzLCAgIDAsIDEyNSwgMTY0LCAgIDAsIDEwOSwgMTQzLCAgIDAsIDk0LCAxMjQsICAgMCwgNzgsIDEwNCwgICAwLCA2MSwgODMsICAgMCwgMzgsIDU3LCAgIDAsICAwLCAyMywNCisgICAgMCwgMTU2LCAxODYsICAgMCwgMTQwLCAxNjYsICAgMCwgMTI1LCAxNTAsICAgMCwgMTA5LCAxMzAsICAgMCwgOTMsIDExMSwgICAwLCA3NywgOTMsICAgMCwgNjAsIDc0LCAgIDAsIDM4LCA1MCwgICAwLCAgMCwgMTcsDQorICAgIDAsIDE1NSwgMTY3LCAgIDAsIDEzOCwgMTQ5LCAgIDAsIDEyNCwgMTM0LCAgIDAsIDEwOSwgMTE3LCAgIDAsIDkzLCAxMDAsICAgMCwgNzYsIDgzLCAgIDAsIDYwLCA2NSwgICAwLCAzOCwgNDMsICAgMCwgIDAsICA5LA0KKyAgICAwLCAxNTMsIDE0NywgICAwLCAxMzgsIDEzNCwgICAwLCAxMjQsIDEyMCwgICAwLCAxMDcsIDEwMywgICAwLCA5MiwgODgsICAgMCwgNzcsIDczLCAgIDAsIDYwLCA1NiwgICAwLCAzOCwgMzUsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxNTMsIDEzMSwgICAwLCAxMzcsIDExOCwgICAwLCAxMjIsIDEwNSwgICAwLCAxMDcsIDkwLCAgIDAsIDkxLCA3NiwgICAwLCA3NiwgNjMsICAgMCwgNjAsIDQ3LCAgIDAsIDM5LCAyOCwgICAwLCAgMCwgIDAsDQorICAgIDAsIDE1MywgMTExLCAgIDAsIDEzNiwgMTAwLCAgIDAsIDEyMywgOTAsICAgMCwgMTA3LCA3NywgICAwLCA5MiwgNjUsICAgMCwgNzYsIDUyLCAgIDAsIDYwLCAzNywgICAwLCAzOCwgMTgsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxNTIsIDkzLCAgIDAsIDEzNiwgODIsICAgMCwgMTIyLCA3NCwgICAwLCAxMDYsIDYzLCAgIDAsIDkxLCA1MiwgICAwLCA3NiwgNDAsICAgMCwgNTksIDI2LCAgIDAsIDM4LCAgNiwgICAwLCAgMCwgIDAsDQorICAgIDAsIDE1MSwgNzgsICAgMCwgMTM2LCA2OSwgICAwLCAxMjEsIDYxLCAgIDAsIDEwNiwgNTIsICAgMCwgOTEsIDQzLCAgIDAsIDc2LCAzMiwgICAwLCA1OSwgMTcsICAgMCwgMzgsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTQzLCAyMTMsICAgMCwgMTI4LCAxOTEsICAgMCwgMTE1LCAxNzEsICAgMCwgMTAwLCAxNDksICAgMCwgODQsIDEyOCwgICAwLCA2OSwgMTA4LCAgIDAsIDUyLCA4NiwgICAwLCAzMCwgNjEsICAgMCwgIDAsIDI1LA0KKyAgICAwLCAxNDIsIDE5MywgICAwLCAxMjcsIDE3MywgICAwLCAxMTQsIDE1NCwgICAwLCA5OSwgMTM0LCAgIDAsIDg0LCAxMTYsICAgMCwgNjksIDk4LCAgIDAsIDUyLCA3NywgICAwLCAzMSwgNTMsICAgMCwgIDAsIDE4LA0KKyAgICAwLCAxNDEsIDE3NiwgICAwLCAxMjcsIDE1OCwgICAwLCAxMTQsIDE0MSwgICAwLCA5OCwgMTIyLCAgIDAsIDg0LCAxMDUsICAgMCwgNjksIDg4LCAgIDAsIDUzLCA2OSwgICAwLCAzMSwgNDYsICAgMCwgIDAsICA5LA0KKyAgICAwLCAxNDEsIDE1OSwgICAwLCAxMjYsIDE0MiwgICAwLCAxMTMsIDEyNywgICAwLCA5OCwgMTEwLCAgIDAsIDgzLCA5NSwgICAwLCA2OSwgNzgsICAgMCwgNTMsIDYwLCAgIDAsIDMyLCAzOSwgICAwLCAgMCwgIDIsDQorICAgIDAsIDE0MCwgMTQwLCAgIDAsIDEyNiwgMTI2LCAgIDAsIDExMiwgMTEyLCAgIDAsIDk4LCA5OCwgICAwLCA4MywgODMsICAgMCwgNjgsIDY5LCAgIDAsIDUyLCA1MiwgICAwLCAzMSwgMzEsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxNDAsIDEyNCwgICAwLCAxMjUsIDExMiwgICAwLCAxMTIsIDEwMCwgICAwLCA5NywgODYsICAgMCwgODMsIDcyLCAgIDAsIDY4LCA1OSwgICAwLCA1MiwgNDQsICAgMCwgMzEsIDIzLCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTM5LCAxMDYsICAgMCwgMTI1LCA5NiwgICAwLCAxMTEsIDg1LCAgIDAsIDk3LCA3MiwgICAwLCA4MywgNjIsICAgMCwgNjgsIDQ5LCAgIDAsIDUyLCAzNSwgICAwLCAzMSwgMTUsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxMzgsIDg4LCAgIDAsIDEyNCwgNzksICAgMCwgMTExLCA3MCwgICAwLCA5NiwgNTksICAgMCwgODIsIDQ4LCAgIDAsIDY4LCAzOCwgICAwLCA1MiwgMjQsICAgMCwgMzEsICA0LCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTM5LCA3NiwgICAwLCAxMjQsIDY2LCAgIDAsIDExMSwgNTgsICAgMCwgOTYsIDUwLCAgIDAsIDgyLCA0MCwgICAwLCA2OCwgMjksICAgMCwgNTIsIDE1LCAgIDAsIDMxLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDAsIDEyOSwgMjAwLCAgIDAsIDExNCwgMTc5LCAgIDAsIDEwMiwgMTYwLCAgIDAsIDg3LCAxMzksICAgMCwgNzQsIDEyMCwgICAwLCA2MCwgMTAxLCAgIDAsIDQ0LCA4MSwgICAwLCAyMiwgNTYsICAgMCwgIDAsIDE5LA0KKyAgICAwLCAxMjcsIDE4MSwgICAwLCAxMTQsIDE2MywgICAwLCAxMDIsIDE0NiwgICAwLCA4OCwgMTI3LCAgIDAsIDc0LCAxMDksICAgMCwgNjAsIDkxLCAgIDAsIDQ0LCA3MiwgICAwLCAyMywgNDgsICAgMCwgIDAsIDExLA0KKyAgICAwLCAxMjcsIDE2NiwgICAwLCAxMTMsIDE0OCwgICAwLCAxMDEsIDEzMywgICAwLCA4NywgMTE1LCAgIDAsIDc0LCA5OSwgICAwLCA2MCwgODIsICAgMCwgNDQsIDY0LCAgIDAsIDIzLCA0MiwgICAwLCAgMCwgIDQsDQorICAgIDAsIDEyNywgMTUwLCAgIDAsIDExMywgMTM0LCAgIDAsIDEwMSwgMTE5LCAgIDAsIDg3LCAxMDQsICAgMCwgNzQsIDg5LCAgIDAsIDYwLCA3MywgICAwLCA0NCwgNTYsICAgMCwgMjMsIDM1LCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTI1LCAxMzQsICAgMCwgMTEyLCAxMTgsICAgMCwgMTAwLCAxMDYsICAgMCwgODcsIDkyLCAgIDAsIDczLCA3OCwgICAwLCA2MCwgNjQsICAgMCwgNDQsIDQ4LCAgIDAsIDIzLCAyNywgICAwLCAgMCwgIDAsDQorICAgIDAsIDEyNSwgMTE4LCAgIDAsIDExMiwgMTA1LCAgIDAsIDEwMCwgOTQsICAgMCwgODYsIDgwLCAgIDAsIDczLCA2OCwgICAwLCA2MCwgNTQsICAgMCwgNDQsIDM5LCAgIDAsIDIzLCAyMCwgICAwLCAgMCwgIDAsDQorICAgIDAsIDEyNSwgMTAxLCAgIDAsIDExMSwgOTAsICAgMCwgOTksIDgwLCAgIDAsIDg2LCA2OSwgICAwLCA3MywgNTgsICAgMCwgNTksIDQ1LCAgIDAsIDQ0LCAzMCwgICAwLCAyMywgMTEsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxMjQsIDg1LCAgIDAsIDExMSwgNzUsICAgMCwgOTksIDY2LCAgIDAsIDg2LCA1NiwgICAwLCA3MywgNDUsICAgMCwgNTksIDM0LCAgIDAsIDQ0LCAyMCwgICAwLCAyMywgIDEsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxMjUsIDcyLCAgIDAsIDExMSwgNjIsICAgMCwgOTksIDU2LCAgIDAsIDg2LCA0NiwgICAwLCA3MywgMzYsICAgMCwgNjAsIDI2LCAgIDAsIDQ0LCAxMiwgICAwLCAyMywgIDAsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxMTQsIDE4OCwgICAwLCAxMDEsIDE2NywgICAwLCA4OSwgMTUwLCAgIDAsIDc3LCAxMzEsICAgMCwgNjQsIDExMywgICAwLCA1MCwgOTUsICAgMCwgMzQsIDc1LCAgIDAsIDEyLCA1MiwgICAwLCAgMCwgMTQsDQorICAgIDAsIDExMywgMTcwLCAgIDAsIDEwMSwgMTUzLCAgIDAsIDg5LCAxMzcsICAgMCwgNzcsIDEyMCwgICAwLCA2NCwgMTAyLCAgIDAsIDUwLCA4NSwgICAwLCAzNSwgNjcsICAgMCwgMTIsIDQ0LCAgIDAsICAwLCAgNCwNCisgICAgMCwgMTEzLCAxNTYsICAgMCwgMTAwLCAxMzksICAgMCwgODksIDEyNSwgICAwLCA3NywgMTA5LCAgIDAsIDY0LCA5MiwgICAwLCA1MSwgNzcsICAgMCwgMzUsIDYwLCAgIDAsIDEyLCAzOCwgICAwLCAgMCwgIDAsDQorICAgIDAsIDExMiwgMTQxLCAgIDAsIDEwMCwgMTI2LCAgIDAsIDg5LCAxMTMsICAgMCwgNzcsIDk4LCAgIDAsIDY0LCA4MywgICAwLCA1MSwgNjgsICAgMCwgMzUsIDUxLCAgIDAsIDEyLCAzMCwgICAwLCAgMCwgIDAsDQorICAgIDAsIDExMiwgMTI3LCAgIDAsIDEwMCwgMTEyLCAgIDAsIDg5LCAxMDAsICAgMCwgNzYsIDg3LCAgIDAsIDY0LCA3NCwgICAwLCA1MSwgNTksICAgMCwgMzUsIDQ0LCAgIDAsIDEzLCAyNCwgICAwLCAgMCwgIDAsDQorICAgIDAsIDExMiwgMTExLCAgIDAsIDEwMCwgMTAwLCAgIDAsIDg4LCA4OCwgICAwLCA3NiwgNzYsICAgMCwgNjQsIDY0LCAgIDAsIDUxLCA1MiwgICAwLCAzNiwgMzcsICAgMCwgMTMsIDE3LCAgIDAsICAwLCAgMCwNCisgICAgMCwgMTExLCA5NiwgICAwLCA5OSwgODUsICAgMCwgODgsIDc2LCAgIDAsIDc2LCA2NCwgICAwLCA2NCwgNTMsICAgMCwgNTEsIDQxLCAgIDAsIDM2LCAyNywgICAwLCAxMywgIDYsICAgMCwgIDAsICAwLA0KKyAgICAwLCAxMTEsIDgxLCAgIDAsIDk5LCA3MSwgICAwLCA4OCwgNjIsICAgMCwgNzYsIDUyLCAgIDAsIDY0LCA0MywgICAwLCA1MSwgMzEsICAgMCwgMzYsIDE3LCAgIDAsIDEzLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDAsIDExMSwgNjksICAgMCwgOTksIDYwLCAgIDAsIDg4LCA1MiwgICAwLCA3NSwgNDMsICAgMCwgNjMsIDM0LCAgIDAsIDUxLCAyMSwgICAwLCAzNiwgIDcsICAgMCwgMTMsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMCwgOTksIDE3NywgICAwLCA4OCwgMTU4LCAgIDAsIDc3LCAxNDEsICAgMCwgNjYsIDEyMywgICAwLCA1MywgMTA2LCAgIDAsIDQwLCA4OSwgICAwLCAyNSwgNzEsICAgMCwgIDUsIDQ3LCAgIDAsICAwLCAgOCwNCisgICAgMCwgOTksIDE2MCwgICAwLCA4OCwgMTQ0LCAgIDAsIDc3LCAxMjksICAgMCwgNjYsIDExMiwgICAwLCA1NCwgOTcsICAgMCwgNDEsIDgwLCAgIDAsIDI2LCA2MiwgICAwLCAgNSwgNDAsICAgMCwgIDAsICAwLA0KKyAgICAwLCA5OSwgMTQ3LCAgIDAsIDg3LCAxMzIsICAgMCwgNzgsIDExNywgICAwLCA2NiwgMTAyLCAgIDAsIDU0LCA4NywgICAwLCA0MiwgNzIsICAgMCwgMjYsIDU1LCAgIDAsICA1LCAzNCwgICAwLCAgMCwgIDAsDQorICAgIDAsIDk5LCAxMzQsICAgMCwgODgsIDExOSwgICAwLCA3NywgMTA3LCAgIDAsIDY2LCA5MiwgICAwLCA1NCwgNzgsICAgMCwgNDIsIDY0LCAgIDAsIDI3LCA0OCwgICAwLCAgNSwgMjcsICAgMCwgIDAsICAwLA0KKyAgICAwLCA5OSwgMTIwLCAgIDAsIDg3LCAxMDcsICAgMCwgNzgsIDk0LCAgIDAsIDY2LCA4MSwgICAwLCA1NCwgNjgsICAgMCwgNDIsIDU1LCAgIDAsIDI3LCA0MCwgICAwLCAgNiwgMjAsICAgMCwgIDAsICAwLA0KKyAgICAwLCA5OCwgMTA1LCAgIDAsIDg3LCA5NCwgICAwLCA3NywgODQsICAgMCwgNjUsIDcxLCAgIDAsIDU1LCA1OSwgICAwLCA0MiwgNDcsICAgMCwgMjgsIDMzLCAgIDAsICA2LCAxMiwgICAwLCAgMCwgIDAsDQorICAgIDAsIDk4LCA5MywgICAwLCA4NywgODEsICAgMCwgNzcsIDcyLCAgIDAsIDY2LCA2MSwgICAwLCA1NCwgNDksICAgMCwgNDIsIDM3LCAgIDAsIDI4LCAyNCwgICAwLCAgNiwgIDQsICAgMCwgIDAsICAwLA0KKyAgICAwLCA5OCwgNzcsICAgMCwgODcsIDY4LCAgIDAsIDc3LCA1OSwgICAwLCA2NSwgNDksICAgMCwgNTQsIDM5LCAgIDAsIDQyLCAyNywgICAwLCAyOSwgMTQsICAgMCwgIDYsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMSwgOTgsIDY1LCAgIDcsIDg3LCA1NiwgICAwLCA3NywgNDksICAgMCwgNjYsIDQxLCAgIDAsIDU0LCAzMCwgICAwLCA0MiwgMTksICAgMCwgMjksICAzLCAgIDAsICA2LCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDAsIDg0LCAxNjYsICAgMCwgNzQsIDE0OSwgICAwLCA2NCwgMTM0LCAgIDAsIDUzLCAxMTcsICAgMCwgNDEsIDEwMCwgICAwLCAyOCwgODMsICAgMCwgMTEsIDY0LCAgIDAsICAwLCA0MiwgICAwLCAgMCwgIDMsDQorICAgIDAsIDg0LCAxNTEsICAgMCwgNzQsIDEzNSwgICAwLCA2NCwgMTIxLCAgIDAsIDUzLCAxMDUsICAgMCwgNDIsIDkwLCAgIDAsIDMwLCA3NSwgICAwLCAxNCwgNTgsICAgMCwgIDAsIDM2LCAgIDAsICAwLCAgMCwNCisgICAgMCwgODQsIDEzOCwgICAwLCA3NCwgMTI0LCAgIDEsIDY0LCAxMTAsICAgMCwgNTQsIDk1LCAgIDAsIDQzLCA4MSwgICAwLCAzMCwgNjcsICAgMCwgMTUsIDUxLCAgIDAsICAxLCAyOSwgICAwLCAgMCwgIDAsDQorICAgIDE0LCA4NCwgMTI2LCAgMTIsIDc0LCAxMTIsICAgMiwgNjUsIDk5LCAgIDAsIDU0LCA4NSwgICAwLCA0NCwgNzMsICAgMCwgMzEsIDU5LCAgIDAsIDE2LCA0NCwgICAwLCAgMSwgMjMsICAgMCwgIDAsICAwLA0KKyAgICAxNiwgODQsIDExMywgIDEzLCA3NCwgMTAwLCAgIDYsIDY1LCA4OSwgICAwLCA1NCwgNzcsICAgMCwgNDQsIDY1LCAgIDAsIDMxLCA1MSwgICAwLCAxNywgMzYsICAgMCwgIDEsIDE2LCAgIDAsICAwLCAgMCwNCisgICAgMjQsIDg0LCAxMDAsICAxOCwgNzQsIDg4LCAgMTMsIDY1LCA3OCwgICAyLCA1NSwgNjgsICAgMCwgNDQsIDU1LCAgIDAsIDMyLCA0MywgICAwLCAxOCwgMjgsICAgMCwgIDEsICA2LCAgIDAsICAwLCAgMCwNCisgICAgMjYsIDg0LCA4NywgIDI0LCA3NCwgNzYsICAxNywgNjUsIDY3LCAgIDcsIDU0LCA1NywgICAwLCA0NCwgNDYsICAgMCwgMzIsIDM1LCAgIDAsIDE5LCAyMSwgICAwLCAgMiwgIDMsICAgMCwgIDAsICAwLA0KKyAgICAzMCwgODQsIDc0LCAgMjgsIDc0LCA2NCwgIDIwLCA2NSwgNTUsICAxMiwgNTUsIDQ2LCAgIDAsIDQ0LCAzNSwgICAwLCAzMiwgMjQsICAgMCwgMTgsICA5LCAgIDAsICAxLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDMyLCA4NCwgNjMsICAyOCwgNzQsIDU0LCAgMjEsIDY1LCA0NywgIDEzLCA1NCwgMzgsICAgMCwgNDQsIDI4LCAgIDAsIDMyLCAxNiwgICAwLCAxOCwgIDEsICAgMCwgIDEsICAwLCAgIDAsICAwLCAgMCwNCisgICAgMzAsIDY3LCAxNTUsICAyMCwgNTgsIDEzOSwgIDIwLCA0OSwgMTI2LCAgMTIsIDM5LCAxMTAsICAgMCwgMjcsIDk0LCAgIDAsIDEzLCA3NywgICAwLCAgMCwgNjAsICAgMCwgIDAsIDM3LCAgIDAsICAwLCAgMCwNCisgICAgMzUsIDY3LCAxNDIsICAzMCwgNTgsIDEyNiwgIDIzLCA1MCwgMTE0LCAgMTYsIDQwLCA5OSwgICA3LCAyOSwgODUsICAgMCwgMTUsIDY5LCAgIDAsICAwLCA1MiwgICAwLCAgMCwgMzAsICAgMCwgIDAsICAwLA0KKyAgICAzNSwgNjgsIDEzMSwgIDMwLCA1OSwgMTE2LCAgMjcsIDUwLCAxMDQsICAxOCwgNDAsIDkwLCAgIDksIDI5LCA3NiwgICAwLCAxNywgNjIsICAgMCwgIDIsIDQ2LCAgIDAsICAwLCAyNCwgICAwLCAgMCwgIDAsDQorICAgIDM3LCA2OSwgMTE5LCAgMzMsIDU5LCAxMDYsICAyNywgNTEsIDk0LCAgMjEsIDQxLCA4MCwgICA5LCAzMCwgNjcsICAgMCwgMTgsIDU0LCAgIDAsICAzLCAzOSwgICAwLCAgMCwgMTgsICAgMCwgIDAsICAwLA0KKyAgICA0MCwgNjksIDEwNywgIDM2LCA1OSwgOTQsICAyOCwgNTEsIDg0LCAgMTgsIDQxLCA3MiwgIDEwLCAzMSwgNjAsICAgMCwgMTksIDQ3LCAgIDAsICA0LCAzMiwgICAwLCAgMCwgMTAsICAgMCwgIDAsICAwLA0KKyAgICA0MiwgNjksIDk1LCAgMzYsIDU5LCA4NCwgIDI5LCA1MSwgNzQsICAxOSwgNDEsIDYzLCAgMTAsIDMxLCA1MiwgICAwLCAyMCwgMzksICAgMCwgIDQsIDI1LCAgIDAsICAwLCAgNCwgICAwLCAgMCwgIDAsDQorICAgIDQzLCA2OSwgODMsICAzOCwgNjAsIDczLCAgMzIsIDUxLCA2MiwgIDIzLCA0MiwgNTMsICAxMSwgMzEsIDQyLCAgIDAsIDIwLCAzMSwgICAwLCAgNSwgMTcsICAgMCwgIDAsICAxLCAgIDAsICAwLCAgMCwNCisgICAgNDUsIDY5LCA3MCwgIDM5LCA2MCwgNjAsICAzMywgNTEsIDUyLCAgMjQsIDQyLCA0MywgIDEzLCAzMiwgMzMsICAgMCwgMjEsIDIxLCAgIDAsICA1LCAgNiwgICAwLCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICA0NywgNjksIDU5LCAgNDEsIDYwLCA1MSwgIDM0LCA1MSwgNDMsICAyNCwgNDIsIDM1LCAgMTIsIDMzLCAyNiwgICAxLCAyMiwgMTQsICAgMCwgIDUsICAxLCAgIDAsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDQ2LCA0OCwgMTQ2LCAgNDIsIDQwLCAxMzEsICAzNiwgMzIsIDExOCwgIDI3LCAyMiwgMTAzLCAgMTcsICA2LCA4OCwgICA1LCAgMCwgNzMsICAgMCwgIDAsIDU1LCAgIDAsICAwLCAzMywgICAwLCAgMCwgIDAsDQorICAgIDQ4LCA0OCwgMTMzLCAgNDQsIDQwLCAxMTksICAzNywgMzIsIDEwNywgIDI4LCAyMiwgOTMsICAyMCwgIDgsIDc5LCAgIDcsICAwLCA2NSwgICAwLCAgMCwgNDksICAgMCwgIDAsIDI3LCAgIDAsICAwLCAgMCwNCisgICAgNDgsIDUwLCAxMjMsICA0NCwgNDEsIDEwOSwgIDM3LCAzMywgOTcsICAzMCwgMjMsIDgzLCAgMjEsIDExLCA3MSwgICA4LCAgMCwgNTgsICAgMCwgIDAsIDQyLCAgIDAsICAwLCAyMSwgICAwLCAgMCwgIDAsDQorICAgIDQ5LCA1MSwgMTExLCAgNDUsIDQyLCA5OSwgIDM4LCAzNCwgODcsICAyOSwgMjUsIDc1LCAgMjAsIDEzLCA2MywgICA4LCAgMCwgNTEsICAgMCwgIDAsIDM2LCAgIDAsICAwLCAxNCwgICAwLCAgMCwgIDAsDQorICAgIDUyLCA1MiwgMTAwLCAgNDQsIDQzLCA4OSwgIDM4LCAzNSwgNzksICAyOSwgMjYsIDY4LCAgMTksIDE1LCA1NiwgIDEwLCAgMSwgNDMsICAgMCwgIDAsIDI4LCAgIDAsICAwLCAgNiwgICAwLCAgMCwgIDAsDQorICAgIDUyLCA1MiwgOTAsICA0NywgNDQsIDc5LCAgMzksIDM2LCA3MCwgIDMwLCAyNywgNTksICAyMCwgMTYsIDQ3LCAgIDksICAyLCAzNiwgICAwLCAgMCwgMjIsICAgMCwgIDAsICAyLCAgIDAsICAwLCAgMCwNCisgICAgNTIsIDUzLCA3OCwgIDQ2LCA0NCwgNjgsICAzOSwgMzcsIDYwLCAgMzIsIDI3LCA0OSwgIDIyLCAxNywgMzksICAxMCwgIDMsIDI4LCAgIDAsICAwLCAxMiwgICAwLCAgMCwgIDAsICAgMCwgIDAsICAwLA0KKyAgICA1MywgNTMsIDY2LCAgNDcsIDQ0LCA1NywgIDQwLCAzNiwgNDgsICAzMiwgMjcsIDM5LCAgMjIsIDE4LCAzMCwgICA5LCAgNCwgMTgsICAgMCwgIDAsICAzLCAgIDAsICAwLCAgMCwgICAwLCAgMCwgIDAsDQorICAgIDU0LCA1MywgNTcsICA0OCwgNDUsIDQ5LCAgNDEsIDM3LCA0MSwgIDMzLCAyOCwgMzIsICAyMiwgMTksIDIzLCAgMTEsICA2LCAxMCwgICAxLCAgMCwgIDAsICAgMCwgIDAsICAwLCAgIDAsICAwLCAgMCwNCit9Ow0KK3ZvaWQgQWRvYmVDTVlLX3RvX3NSR0IxKEZYX0JZVEUgYywgRlhfQllURSBtLCBGWF9CWVRFIHksIEZYX0JZVEUgaywgRlhfQllURSYgUiwgRlhfQllURSYgRywgRlhfQllURSYgQikNCit7DQorICAgIGludCBmaXhfYyA9IGMgPDwgODsNCisgICAgaW50IGZpeF9tID0gbSA8PCA4Ow0KKyAgICBpbnQgZml4X3kgPSB5IDw8IDg7DQorICAgIGludCBmaXhfayA9IGsgPDwgODsNCisgICAgaW50IGNfaW5kZXggPSAoZml4X2MgKyA0MDk2KSA+PiAxMzsNCisgICAgaW50IG1faW5kZXggPSAoZml4X20gKyA0MDk2KSA+PiAxMzsNCisgICAgaW50IHlfaW5kZXggPSAoZml4X3kgKyA0MDk2KSA+PiAxMzsNCisgICAgaW50IGtfaW5kZXggPSAoZml4X2sgKyA0MDk2KSA+PiAxMzsNCisgICAgaW50IHBvcyA9IChjX2luZGV4ICogOSAqIDkgKiA5ICsgbV9pbmRleCAqIDkgKiA5ICsgeV9pbmRleCAqIDkgKyBrX2luZGV4KSAqIDM7DQorICAgIGludCBmaXhfciA9IGdfQ01ZS1NhbXBsZXNbcG9zXSA8PCA4Ow0KKyAgICBpbnQgZml4X2cgPSBnX0NNWUtTYW1wbGVzW3BvcyArIDFdIDw8IDg7DQorICAgIGludCBmaXhfYiA9IGdfQ01ZS1NhbXBsZXNbcG9zICsgMl0gPDwgODsNCisgICAgaW50IGMxX2luZGV4ID0gZml4X2MgPj4gMTM7DQorICAgIGlmIChjMV9pbmRleCA9PSBjX2luZGV4KSB7DQorICAgICAgICBjMV9pbmRleCA9IGMxX2luZGV4ID09IDggPyBjMV9pbmRleCAtIDEgOiBjMV9pbmRleCArIDE7DQorICAgIH0NCisgICAgaW50IG0xX2luZGV4ID0gZml4X20gPj4gMTM7DQorICAgIGlmIChtMV9pbmRleCA9PSBtX2luZGV4KSB7DQorICAgICAgICBtMV9pbmRleCA9IG0xX2luZGV4ID09IDggPyBtMV9pbmRleCAtIDEgOiBtMV9pbmRleCArIDE7DQorICAgIH0NCisgICAgaW50IHkxX2luZGV4ID0gZml4X3kgPj4gMTM7DQorICAgIGlmICh5MV9pbmRleCA9PSB5X2luZGV4KSB7DQorICAgICAgICB5MV9pbmRleCA9IHkxX2luZGV4ID09IDggPyB5MV9pbmRleCAtIDEgOiB5MV9pbmRleCArIDE7DQorICAgIH0NCisgICAgaW50IGsxX2luZGV4ID0gZml4X2sgPj4gMTM7DQorICAgIGlmIChrMV9pbmRleCA9PSBrX2luZGV4KSB7DQorICAgICAgICBrMV9pbmRleCA9IGsxX2luZGV4ID09IDggPyBrMV9pbmRleCAtIDEgOiBrMV9pbmRleCArIDE7DQorICAgIH0NCisgICAgaW50IGMxX3BvcyA9IHBvcyArIChjMV9pbmRleCAtIGNfaW5kZXgpICogOSAqIDkgKiA5ICogMzsNCisgICAgaW50IG0xX3BvcyA9IHBvcyArIChtMV9pbmRleCAtIG1faW5kZXgpICogOSAqIDkgKiAzOw0KKyAgICBpbnQgeTFfcG9zID0gcG9zICsgKHkxX2luZGV4IC0geV9pbmRleCkgKiA5ICogMzsNCisgICAgaW50IGsxX3BvcyA9IHBvcyArIChrMV9pbmRleCAtIGtfaW5kZXgpICogMzsNCisgICAgaW50IGNfcl9kZWx0YSA9IGdfQ01ZS1NhbXBsZXNbcG9zXSAtIGdfQ01ZS1NhbXBsZXNbYzFfcG9zXTsNCisgICAgaW50IGNfZ19kZWx0YSA9IGdfQ01ZS1NhbXBsZXNbcG9zICsgMV0gLSBnX0NNWUtTYW1wbGVzW2MxX3BvcyArIDFdOw0KKyAgICBpbnQgY19iX2RlbHRhID0gZ19DTVlLU2FtcGxlc1twb3MgKyAyXSAtIGdfQ01ZS1NhbXBsZXNbYzFfcG9zICsgMl07DQorICAgIGludCBtX3JfZGVsdGEgPSBnX0NNWUtTYW1wbGVzW3Bvc10gLSBnX0NNWUtTYW1wbGVzW20xX3Bvc107DQorICAgIGludCBtX2dfZGVsdGEgPSBnX0NNWUtTYW1wbGVzW3BvcyArIDFdIC0gZ19DTVlLU2FtcGxlc1ttMV9wb3MgKyAxXTsNCisgICAgaW50IG1fYl9kZWx0YSA9IGdfQ01ZS1NhbXBsZXNbcG9zICsgMl0gLSBnX0NNWUtTYW1wbGVzW20xX3BvcyArIDJdOw0KKyAgICBpbnQgeV9yX2RlbHRhID0gZ19DTVlLU2FtcGxlc1twb3NdIC0gZ19DTVlLU2FtcGxlc1t5MV9wb3NdOw0KKyAgICBpbnQgeV9nX2RlbHRhID0gZ19DTVlLU2FtcGxlc1twb3MgKyAxXSAtIGdfQ01ZS1NhbXBsZXNbeTFfcG9zICsgMV07DQorICAgIGludCB5X2JfZGVsdGEgPSBnX0NNWUtTYW1wbGVzW3BvcyArIDJdIC0gZ19DTVlLU2FtcGxlc1t5MV9wb3MgKyAyXTsNCisgICAgaW50IGtfcl9kZWx0YSA9IGdfQ01ZS1NhbXBsZXNbcG9zXSAtIGdfQ01ZS1NhbXBsZXNbazFfcG9zXTsNCisgICAgaW50IGtfZ19kZWx0YSA9IGdfQ01ZS1NhbXBsZXNbcG9zICsgMV0gLSBnX0NNWUtTYW1wbGVzW2sxX3BvcyArIDFdOw0KKyAgICBpbnQga19iX2RlbHRhID0gZ19DTVlLU2FtcGxlc1twb3MgKyAyXSAtIGdfQ01ZS1NhbXBsZXNbazFfcG9zICsgMl07DQorICAgIGludCBjX3JhdGUgPSAoZml4X2MgLSAoY19pbmRleCA8PCAxMykpICogKGNfaW5kZXggLSBjMV9pbmRleCk7DQorICAgIGZpeF9yICs9IGNfcl9kZWx0YSAqIGNfcmF0ZSAvIDMyOw0KKyAgICBmaXhfZyArPSBjX2dfZGVsdGEgKiBjX3JhdGUgLyAzMjsNCisgICAgZml4X2IgKz0gY19iX2RlbHRhICogY19yYXRlIC8gMzI7DQorICAgIGludCBtX3JhdGUgPSAoZml4X20gLSAobV9pbmRleCA8PCAxMykpICogKG1faW5kZXggLSBtMV9pbmRleCk7DQorICAgIGZpeF9yICs9IG1fcl9kZWx0YSAqIG1fcmF0ZSAvIDMyOw0KKyAgICBmaXhfZyArPSBtX2dfZGVsdGEgKiBtX3JhdGUgLyAzMjsNCisgICAgZml4X2IgKz0gbV9iX2RlbHRhICogbV9yYXRlIC8gMzI7DQorICAgIGludCB5X3JhdGUgPSAoZml4X3kgLSAoeV9pbmRleCA8PCAxMykpICogKHlfaW5kZXggLSB5MV9pbmRleCk7DQorICAgIGZpeF9yICs9IHlfcl9kZWx0YSAqIHlfcmF0ZSAvIDMyOw0KKyAgICBmaXhfZyArPSB5X2dfZGVsdGEgKiB5X3JhdGUgLyAzMjsNCisgICAgZml4X2IgKz0geV9iX2RlbHRhICogeV9yYXRlIC8gMzI7DQorICAgIGludCBrX3JhdGUgPSAoZml4X2sgLSAoa19pbmRleCA8PCAxMykpICogKGtfaW5kZXggLSBrMV9pbmRleCk7DQorICAgIGZpeF9yICs9IGtfcl9kZWx0YSAqIGtfcmF0ZSAvIDMyOw0KKyAgICBmaXhfZyArPSBrX2dfZGVsdGEgKiBrX3JhdGUgLyAzMjsNCisgICAgZml4X2IgKz0ga19iX2RlbHRhICoga19yYXRlIC8gMzI7DQorICAgIGlmIChmaXhfciA8IDApIHsNCisgICAgICAgIGZpeF9yID0gMDsNCisgICAgfQ0KKyAgICBpZiAoZml4X2cgPCAwKSB7DQorICAgICAgICBmaXhfZyA9IDA7DQorICAgIH0NCisgICAgaWYgKGZpeF9iIDwgMCkgew0KKyAgICAgICAgZml4X2IgPSAwOw0KKyAgICB9DQorICAgIFIgPSBmaXhfciA+PiA4Ow0KKyAgICBHID0gZml4X2cgPj4gODsNCisgICAgQiA9IGZpeF9iID4+IDg7DQorfQ0KK3ZvaWQgQWRvYmVDTVlLX3RvX3NSR0IoRlhfRkxPQVQgYywgRlhfRkxPQVQgbSwgRlhfRkxPQVQgeSwgRlhfRkxPQVQgaywgRlhfRkxPQVQmIFIsIEZYX0ZMT0FUJiBHLCBGWF9GTE9BVCYgQikNCit7DQorICAgIEZYX0JZVEUgYzEgPSBGWFNZU19yb3VuZChjICogMjU1KTsNCisgICAgRlhfQllURSBtMSA9IEZYU1lTX3JvdW5kKG0gKiAyNTUpOw0KKyAgICBGWF9CWVRFIHkxID0gRlhTWVNfcm91bmQoeSAqIDI1NSk7DQorICAgIEZYX0JZVEUgazEgPSBGWFNZU19yb3VuZChrICogMjU1KTsNCisgICAgRlhfQllURSByLCBnLCBiOw0KKyAgICBBZG9iZUNNWUtfdG9fc1JHQjEoYzEsIG0xLCB5MSwgazEsIHIsIGcsIGIpOw0KKyAgICBSID0gMS4wZiAqIHIgLyAyNTU7DQorICAgIEcgPSAxLjBmICogZyAvIDI1NTsNCisgICAgQiA9IDEuMGYgKiBiIC8gMjU1Ow0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2NvZGVjL2Z4X2NvZGVjX2piaWcuY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19qYmlnLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjQ0ZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19qYmlnLmNwcApAQCAtMCwwICsxLDIxMiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjb2RlYy9meF9jb2RlYy5oIg0KKyNpbmNsdWRlICJjb2RlY19pbnQuaCINCitDQ29kZWNfSmJpZzJDb250ZXh0OjpDQ29kZWNfSmJpZzJDb250ZXh0KCkNCit7DQorICAgIEZYU1lTX21lbXNldDMyKHRoaXMsIDAsIHNpemVvZihDQ29kZWNfSmJpZzJDb250ZXh0KSk7DQorfQ0KK0NDb2RlY19KYmlnMk1vZHVsZTo6fkNDb2RlY19KYmlnMk1vZHVsZSgpDQorew0KK30NCit2b2lkKiBDQ29kZWNfSmJpZzJNb2R1bGU6OkNyZWF0ZUpiaWcyQ29udGV4dCgpDQorew0KKyAgICByZXR1cm4gRlhfTkVXIENDb2RlY19KYmlnMkNvbnRleHQoKTsNCit9DQordm9pZCBDQ29kZWNfSmJpZzJNb2R1bGU6OkRlc3Ryb3lKYmlnMkNvbnRleHQodm9pZCogcEpiaWcyQ29udGVudCkNCit7DQorICAgIGlmKHBKYmlnMkNvbnRlbnQpIHsNCisgICAgICAgIENKQmlnMl9Db250ZXh0OjpEZXN0cm95Q29udGV4dCgoKENDb2RlY19KYmlnMkNvbnRleHQqKXBKYmlnMkNvbnRlbnQpLT5tX3BDb250ZXh0KTsNCisgICAgICAgIGRlbGV0ZSAoQ0NvZGVjX0piaWcyQ29udGV4dCopcEpiaWcyQ29udGVudDsNCisgICAgfQ0KKyAgICBwSmJpZzJDb250ZW50ID0gTlVMTDsNCit9DQorRlhfQk9PTCBDQ29kZWNfSmJpZzJNb2R1bGU6OkRlY29kZShGWF9EV09SRCB3aWR0aCwgRlhfRFdPUkQgaGVpZ2h0LCBGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBnbG9iYWxfZGF0YSwgRlhfRFdPUkQgZ2xvYmFsX3NpemUsIEZYX0xQQllURSBkZXN0X2J1ZiwgRlhfRFdPUkQgZGVzdF9waXRjaCkNCit7DQorICAgIEZYU1lTX21lbXNldDMyKGRlc3RfYnVmLCAwLCBoZWlnaHQgKiBkZXN0X3BpdGNoKTsNCisgICAgQ0pCaWcyX0NvbnRleHQqIHBDb250ZXh0ID0gQ0pCaWcyX0NvbnRleHQ6OkNyZWF0ZUNvbnRleHQoJm1fTW9kdWxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlhfTFBCWVRFKWdsb2JhbF9kYXRhLCBnbG9iYWxfc2l6ZSwgKEZYX0xQQllURSlzcmNfYnVmLCBzcmNfc2l6ZSwgSkJJRzJfRU1CRURfU1RSRUFNKTsNCisgICAgaWYgKHBDb250ZXh0ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpbnQgcmV0ID0gcENvbnRleHQtPmdldEZpcnN0UGFnZShkZXN0X2J1Ziwgd2lkdGgsIGhlaWdodCwgZGVzdF9waXRjaCwgTlVMTCk7DQorICAgIENKQmlnMl9Db250ZXh0OjpEZXN0cm95Q29udGV4dChwQ29udGV4dCk7DQorICAgIGlmIChyZXQgIT0gSkJJRzJfU1VDQ0VTUykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGludCBkd29yZF9zaXplID0gaGVpZ2h0ICogZGVzdF9waXRjaCAvIDQ7DQorICAgIEZYX0RXT1JEKiBkd29yZF9idWYgPSAoRlhfRFdPUkQqKWRlc3RfYnVmOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGR3b3JkX3NpemU7IGkgKyspIHsNCisgICAgICAgIGR3b3JkX2J1ZltpXSA9IH5kd29yZF9idWZbaV07DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0NvZGVjX0piaWcyTW9kdWxlOjpEZWNvZGUoSUZYX0ZpbGVSZWFkKiBmaWxlX3B0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEJiB3aWR0aCwgRlhfRFdPUkQmIGhlaWdodCwgRlhfRFdPUkQmIHBpdGNoLCBGWF9MUEJZVEUmIGRlc3RfYnVmKQ0KK3sNCisgICAgQ0pCaWcyX0NvbnRleHQqIHBDb250ZXh0ID0gTlVMTDsNCisgICAgQ0pCaWcyX0ltYWdlKiBkZXN0X2ltYWdlID0gTlVMTDsNCisgICAgRlhfRFdPUkQgc3JjX3NpemUgPSAoRlhfRFdPUkQpZmlsZV9wdHItPkdldFNpemUoKTsNCisgICAgRlhfTFBCWVRFIHNyY19idWYgPSBGWF9BbGxvYyhGWF9CWVRFLCBzcmNfc2l6ZSk7DQorICAgIGlmIChzcmNfYnVmID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpbnQgcmV0ID0gMDsNCisgICAgaWYoIWZpbGVfcHRyLT5SZWFkQmxvY2soc3JjX2J1ZiwgMCwgc3JjX3NpemUpKSB7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBwQ29udGV4dCA9IENKQmlnMl9Db250ZXh0OjpDcmVhdGVDb250ZXh0KCZtX01vZHVsZSwgTlVMTCwgMCwgc3JjX2J1Ziwgc3JjX3NpemUsIEpCSUcyX0ZJTEVfU1RSRUFNKTsNCisgICAgaWYocENvbnRleHQgPT0gTlVMTCkgew0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgcmV0ID0gcENvbnRleHQtPmdldEZpcnN0UGFnZSgmZGVzdF9pbWFnZSwgTlVMTCk7DQorICAgIENKQmlnMl9Db250ZXh0OjpEZXN0cm95Q29udGV4dChwQ29udGV4dCk7DQorICAgIGlmIChyZXQgIT0gSkJJRzJfU1VDQ0VTUykgew0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgd2lkdGggPSAoRlhfRFdPUkQpZGVzdF9pbWFnZS0+bV9uV2lkdGg7DQorICAgIGhlaWdodCA9IChGWF9EV09SRClkZXN0X2ltYWdlLT5tX25IZWlnaHQ7DQorICAgIHBpdGNoID0gKEZYX0RXT1JEKWRlc3RfaW1hZ2UtPm1fblN0cmlkZTsNCisgICAgZGVzdF9idWYgPSBkZXN0X2ltYWdlLT5tX3BEYXRhOw0KKyAgICBkZXN0X2ltYWdlLT5tX2JOZWVkRnJlZSA9IEZBTFNFOw0KKyAgICBkZWxldGUgZGVzdF9pbWFnZTsNCisgICAgRlhfRnJlZShzcmNfYnVmKTsNCisgICAgcmV0dXJuIFRSVUU7DQorZmFpbGVkOg0KKyAgICBpZihzcmNfYnVmKSB7DQorICAgICAgICBGWF9GcmVlKHNyY19idWYpOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhDT0RFQ19TVEFUVVMgQ0NvZGVjX0piaWcyTW9kdWxlOjpTdGFydERlY29kZSh2b2lkKiBwSmJpZzJDb250ZXh0LCBGWF9EV09SRCB3aWR0aCwgRlhfRFdPUkQgaGVpZ2h0LCBGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLA0KKyAgICAgICAgRlhfTFBDQllURSBnbG9iYWxfZGF0YSwgRlhfRFdPUkQgZ2xvYmFsX3NpemUsIEZYX0xQQllURSBkZXN0X2J1ZiwgRlhfRFdPUkQgZGVzdF9waXRjaCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZighcEpiaWcyQ29udGV4dCkgew0KKyAgICAgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0VSUl9QQVJBTVM7DQorICAgIH0NCisgICAgQ0NvZGVjX0piaWcyQ29udGV4dCogbV9wSmJpZzJDb250ZXh0ID0gKENDb2RlY19KYmlnMkNvbnRleHQqKXBKYmlnMkNvbnRleHQ7DQorICAgIG1fcEpiaWcyQ29udGV4dC0+bV93aWR0aCA9IHdpZHRoOw0KKyAgICBtX3BKYmlnMkNvbnRleHQtPm1faGVpZ2h0ID0gaGVpZ2h0Ow0KKyAgICBtX3BKYmlnMkNvbnRleHQtPm1fc3JjX2J1ZiA9ICh1bnNpZ25lZCBjaGFyICopc3JjX2J1ZjsNCisgICAgbV9wSmJpZzJDb250ZXh0LT5tX3NyY19zaXplID0gc3JjX3NpemU7DQorICAgIG1fcEpiaWcyQ29udGV4dC0+bV9nbG9iYWxfZGF0YSA9IGdsb2JhbF9kYXRhOw0KKyAgICBtX3BKYmlnMkNvbnRleHQtPm1fZ2xvYmFsX3NpemUgPSBnbG9iYWxfc2l6ZTsNCisgICAgbV9wSmJpZzJDb250ZXh0LT5tX2Rlc3RfYnVmID0gZGVzdF9idWY7DQorICAgIG1fcEpiaWcyQ29udGV4dC0+bV9kZXN0X3BpdGNoID0gZGVzdF9waXRjaDsNCisgICAgbV9wSmJpZzJDb250ZXh0LT5tX3BQYXVzZSA9IHBQYXVzZTsNCisgICAgbV9wSmJpZzJDb250ZXh0LT5tX2JGaWxlUmVhZGVyID0gRkFMU0U7DQorICAgIEZYU1lTX21lbXNldDMyKGRlc3RfYnVmLCAwLCBoZWlnaHQgKiBkZXN0X3BpdGNoKTsNCisgICAgbV9wSmJpZzJDb250ZXh0LT5tX3BDb250ZXh0ID0gQ0pCaWcyX0NvbnRleHQ6OkNyZWF0ZUNvbnRleHQoJm1fTW9kdWxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlhfTFBCWVRFKWdsb2JhbF9kYXRhLCBnbG9iYWxfc2l6ZSwgKEZYX0xQQllURSlzcmNfYnVmLCBzcmNfc2l6ZSwgSkJJRzJfRU1CRURfU1RSRUFNLCBwUGF1c2UpOw0KKyAgICBpZighbV9wSmJpZzJDb250ZXh0LT5tX3BDb250ZXh0KSB7DQorICAgICAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfRVJST1I7DQorICAgIH0NCisgICAgaW50IHJldCA9IG1fcEpiaWcyQ29udGV4dC0+bV9wQ29udGV4dC0+Z2V0Rmlyc3RQYWdlKGRlc3RfYnVmLCB3aWR0aCwgaGVpZ2h0LCBkZXN0X3BpdGNoLCBwUGF1c2UpOw0KKyAgICBpZihtX3BKYmlnMkNvbnRleHQtPm1fcENvbnRleHQtPkdldFByb2Nlc3NpdmVTdGF0dXMoKSA9PSBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIKSB7DQorICAgICAgICBDSkJpZzJfQ29udGV4dDo6RGVzdHJveUNvbnRleHQobV9wSmJpZzJDb250ZXh0LT5tX3BDb250ZXh0KTsNCisgICAgICAgIG1fcEpiaWcyQ29udGV4dC0+bV9wQ29udGV4dCA9IE5VTEw7DQorICAgICAgICBpZiAocmV0ICE9IEpCSUcyX1NVQ0NFU1MpIHsNCisgICAgICAgICAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfRVJST1I7DQorICAgICAgICB9DQorICAgICAgICBpbnQgZHdvcmRfc2l6ZSA9IGhlaWdodCAqIGRlc3RfcGl0Y2ggLyA0Ow0KKyAgICAgICAgRlhfRFdPUkQqIGR3b3JkX2J1ZiA9IChGWF9EV09SRCopZGVzdF9idWY7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGR3b3JkX3NpemU7IGkgKyspIHsNCisgICAgICAgICAgICBkd29yZF9idWZbaV0gPSB+ZHdvcmRfYnVmW2ldOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0g7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcEpiaWcyQ29udGV4dC0+bV9wQ29udGV4dC0+R2V0UHJvY2Vzc2l2ZVN0YXR1cygpOw0KK30NCitGWENPREVDX1NUQVRVUyBDQ29kZWNfSmJpZzJNb2R1bGU6OlN0YXJ0RGVjb2RlKHZvaWQqIHBKYmlnMkNvbnRleHQsIElGWF9GaWxlUmVhZCogZmlsZV9wdHIsDQorICAgICAgICBGWF9EV09SRCYgd2lkdGgsIEZYX0RXT1JEJiBoZWlnaHQsIEZYX0RXT1JEJiBwaXRjaCwgRlhfTFBCWVRFJiBkZXN0X2J1ZiwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZighcEpiaWcyQ29udGV4dCkgew0KKyAgICAgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0VSUl9QQVJBTVM7DQorICAgIH0NCisgICAgQ0NvZGVjX0piaWcyQ29udGV4dCogbV9wSmJpZzJDb250ZXh0ID0gKENDb2RlY19KYmlnMkNvbnRleHQqKXBKYmlnMkNvbnRleHQ7DQorICAgIG1fcEpiaWcyQ29udGV4dC0+bV9iRmlsZVJlYWRlciA9IFRSVUU7DQorICAgIG1fcEpiaWcyQ29udGV4dC0+bV9kZXN0X2ltYWdlID0gTlVMTDsNCisgICAgbV9wSmJpZzJDb250ZXh0LT5tX3NyY19zaXplID0gKEZYX0RXT1JEKWZpbGVfcHRyLT5HZXRTaXplKCk7DQorICAgIG1fcEpiaWcyQ29udGV4dC0+bV9zcmNfYnVmID0gRlhfQWxsb2MoRlhfQllURSwgbV9wSmJpZzJDb250ZXh0LT5tX3NyY19zaXplKTsNCisgICAgaWYgKG1fcEpiaWcyQ29udGV4dC0+bV9zcmNfYnVmID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19FUlJfTUVNT1JZOw0KKyAgICB9DQorICAgIGludCByZXQgPSAwOw0KKyAgICBpZighZmlsZV9wdHItPlJlYWRCbG9jaygodm9pZCopbV9wSmJpZzJDb250ZXh0LT5tX3NyY19idWYsIDAsIG1fcEpiaWcyQ29udGV4dC0+bV9zcmNfc2l6ZSkpIHsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIG1fcEpiaWcyQ29udGV4dC0+bV9wQ29udGV4dCA9IENKQmlnMl9Db250ZXh0OjpDcmVhdGVDb250ZXh0KCZtX01vZHVsZSwgTlVMTCwgMCwgbV9wSmJpZzJDb250ZXh0LT5tX3NyY19idWYsIG1fcEpiaWcyQ29udGV4dC0+bV9zcmNfc2l6ZSwgSkJJRzJfRklMRV9TVFJFQU0sIHBQYXVzZSk7DQorICAgIGlmKG1fcEpiaWcyQ29udGV4dC0+bV9wQ29udGV4dCA9PSBOVUxMKSB7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICByZXQgPSBtX3BKYmlnMkNvbnRleHQtPm1fcENvbnRleHQtPmdldEZpcnN0UGFnZSgmbV9wSmJpZzJDb250ZXh0LT5tX2Rlc3RfaW1hZ2UsIHBQYXVzZSk7DQorICAgIGlmKG1fcEpiaWcyQ29udGV4dC0+bV9wQ29udGV4dC0+R2V0UHJvY2Vzc2l2ZVN0YXR1cygpID09IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUUpIHsNCisgICAgICAgIHdpZHRoID0gKEZYX0RXT1JEKW1fcEpiaWcyQ29udGV4dC0+bV9kZXN0X2ltYWdlLT5tX25XaWR0aDsNCisgICAgICAgIGhlaWdodCA9IChGWF9EV09SRCltX3BKYmlnMkNvbnRleHQtPm1fZGVzdF9pbWFnZS0+bV9uSGVpZ2h0Ow0KKyAgICAgICAgcGl0Y2ggPSAoRlhfRFdPUkQpbV9wSmJpZzJDb250ZXh0LT5tX2Rlc3RfaW1hZ2UtPm1fblN0cmlkZTsNCisgICAgICAgIGRlc3RfYnVmID0gbV9wSmJpZzJDb250ZXh0LT5tX2Rlc3RfaW1hZ2UtPm1fcERhdGE7DQorICAgICAgICBtX3BKYmlnMkNvbnRleHQtPm1fZGVzdF9pbWFnZS0+bV9iTmVlZEZyZWUgPSBGQUxTRTsNCisgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICB9DQorICAgIENKQmlnMl9Db250ZXh0OjpEZXN0cm95Q29udGV4dChtX3BKYmlnMkNvbnRleHQtPm1fcENvbnRleHQpOw0KKyAgICBtX3BKYmlnMkNvbnRleHQtPm1fcENvbnRleHQgPSBOVUxMOw0KKyAgICBpZiAocmV0ICE9IEpCSUcyX1NVQ0NFU1MpIHsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIHdpZHRoID0gKEZYX0RXT1JEKW1fcEpiaWcyQ29udGV4dC0+bV9kZXN0X2ltYWdlLT5tX25XaWR0aDsNCisgICAgaGVpZ2h0ID0gKEZYX0RXT1JEKW1fcEpiaWcyQ29udGV4dC0+bV9kZXN0X2ltYWdlLT5tX25IZWlnaHQ7DQorICAgIHBpdGNoID0gKEZYX0RXT1JEKW1fcEpiaWcyQ29udGV4dC0+bV9kZXN0X2ltYWdlLT5tX25TdHJpZGU7DQorICAgIGRlc3RfYnVmID0gbV9wSmJpZzJDb250ZXh0LT5tX2Rlc3RfaW1hZ2UtPm1fcERhdGE7DQorICAgIG1fcEpiaWcyQ29udGV4dC0+bV9kZXN0X2ltYWdlLT5tX2JOZWVkRnJlZSA9IEZBTFNFOw0KKyAgICBkZWxldGUgbV9wSmJpZzJDb250ZXh0LT5tX2Rlc3RfaW1hZ2U7DQorICAgIEZYX0ZyZWUobV9wSmJpZzJDb250ZXh0LT5tX3NyY19idWYpOw0KKyAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCitmYWlsZWQ6DQorICAgIGlmKG1fcEpiaWcyQ29udGV4dC0+bV9zcmNfYnVmKSB7DQorICAgICAgICBGWF9GcmVlKG1fcEpiaWcyQ29udGV4dC0+bV9zcmNfYnVmKTsNCisgICAgfQ0KKyAgICBtX3BKYmlnMkNvbnRleHQtPm1fc3JjX2J1ZiA9IE5VTEw7DQorICAgIHJldHVybiBGWENPREVDX1NUQVRVU19FUlJPUjsNCit9DQorRlhDT0RFQ19TVEFUVVMgQ0NvZGVjX0piaWcyTW9kdWxlOjpDb250aW51ZURlY29kZSh2b2lkKiBwSmJpZzJDb250ZXh0LCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIENDb2RlY19KYmlnMkNvbnRleHQqIG1fcEpiaWcyQ29udGV4dCA9IChDQ29kZWNfSmJpZzJDb250ZXh0KilwSmJpZzJDb250ZXh0Ow0KKyAgICBpbnQgcmV0ID0gbV9wSmJpZzJDb250ZXh0LT5tX3BDb250ZXh0LT5Db250aW51ZShwUGF1c2UpOw0KKyAgICBpZihtX3BKYmlnMkNvbnRleHQtPm1fcENvbnRleHQtPkdldFByb2Nlc3NpdmVTdGF0dXMoKSA9PSBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIKSB7DQorICAgICAgICBpZihtX3BKYmlnMkNvbnRleHQtPm1fYkZpbGVSZWFkZXIpIHsNCisgICAgICAgICAgICBDSkJpZzJfQ29udGV4dDo6RGVzdHJveUNvbnRleHQobV9wSmJpZzJDb250ZXh0LT5tX3BDb250ZXh0KTsNCisgICAgICAgICAgICBtX3BKYmlnMkNvbnRleHQtPm1fcENvbnRleHQgPSBOVUxMOw0KKyAgICAgICAgICAgIGlmIChyZXQgIT0gSkJJRzJfU1VDQ0VTUykgew0KKyAgICAgICAgICAgICAgICBpZihtX3BKYmlnMkNvbnRleHQtPm1fc3JjX2J1Zikgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfRnJlZShtX3BKYmlnMkNvbnRleHQtPm1fc3JjX2J1Zik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wSmJpZzJDb250ZXh0LT5tX3NyY19idWYgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfRVJST1I7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlbGV0ZSBtX3BKYmlnMkNvbnRleHQtPm1fZGVzdF9pbWFnZTsNCisgICAgICAgICAgICBGWF9GcmVlKG1fcEpiaWcyQ29udGV4dC0+bV9zcmNfYnVmKTsNCisgICAgICAgICAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgQ0pCaWcyX0NvbnRleHQ6OkRlc3Ryb3lDb250ZXh0KG1fcEpiaWcyQ29udGV4dC0+bV9wQ29udGV4dCk7DQorICAgICAgICAgICAgbV9wSmJpZzJDb250ZXh0LT5tX3BDb250ZXh0ID0gTlVMTDsNCisgICAgICAgICAgICBpZiAocmV0ICE9IEpCSUcyX1NVQ0NFU1MpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0VSUk9SOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgZHdvcmRfc2l6ZSA9IG1fcEpiaWcyQ29udGV4dC0+bV9oZWlnaHQgKiBtX3BKYmlnMkNvbnRleHQtPm1fZGVzdF9waXRjaCAvIDQ7DQorICAgICAgICAgICAgRlhfRFdPUkQqIGR3b3JkX2J1ZiA9IChGWF9EV09SRCopbV9wSmJpZzJDb250ZXh0LT5tX2Rlc3RfYnVmOw0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZHdvcmRfc2l6ZTsgaSArKykgew0KKyAgICAgICAgICAgICAgICBkd29yZF9idWZbaV0gPSB+ZHdvcmRfYnVmW2ldOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gbV9wSmJpZzJDb250ZXh0LT5tX3BDb250ZXh0LT5HZXRQcm9jZXNzaXZlU3RhdHVzKCk7DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvY29kZWMvZnhfY29kZWNfamJpZ19lbmMuY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19qYmlnX2VuYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE5ODJlNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvY29kZWMvZnhfY29kZWNfamJpZ19lbmMuY3BwCkBAIC0wLDAgKzEsMTEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWMuaCIKK0lDb2RlY19KYmlnMkVuY29kZXIqIENDb2RlY19Nb2R1bGVNZ3I6OkNyZWF0ZUpiaWcyRW5jb2RlcigpCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2NvZGVjL2Z4X2NvZGVjX2pwZWcuY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19qcGVnLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzkxYTZjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19qcGVnLmNwcApAQCAtMCwwICsxLDczNSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjb2RlYy9meF9jb2RlYy5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZGliLmgiDQorI2luY2x1ZGUgImNvZGVjX2ludC5oIg0KK2V4dGVybiAiQyIgew0KKyAgICBzdGF0aWMgdm9pZCBfSnBlZ1NjYW5TT0koY29uc3QgRlhfQllURSomIHNyY19idWYsIEZYX0RXT1JEJiBzcmNfc2l6ZSkNCisgICAgew0KKyAgICAgICAgaWYgKHNyY19zaXplID09IDApIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBGWF9EV09SRCBvZmZzZXQgPSAwOw0KKyAgICAgICAgd2hpbGUgKG9mZnNldCA8IHNyY19zaXplIC0gMSkgew0KKyAgICAgICAgICAgIGlmIChzcmNfYnVmW29mZnNldF0gPT0gMHhmZiAmJiBzcmNfYnVmW29mZnNldCArIDFdID09IDB4ZDgpIHsNCisgICAgICAgICAgICAgICAgc3JjX2J1ZiArPSBvZmZzZXQ7DQorICAgICAgICAgICAgICAgIHNyY19zaXplIC09IG9mZnNldDsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBvZmZzZXQgKys7DQorICAgICAgICB9DQorICAgIH0NCit9Ow0KK2V4dGVybiAiQyIgew0KKyN1bmRlZiBGQVINCisjaW5jbHVkZSAiLi4vLi4vZnhfanBlZ2xpYi5oIg0KK30NCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIHZvaWQgX3NyY19kb19ub3RoaW5nKHN0cnVjdCBqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBjaW5mbykge30NCit9Ow0KK2V4dGVybiAiQyIgew0KKyAgICBzdGF0aWMgdm9pZCBfZXJyb3JfZmF0YWwoal9jb21tb25fcHRyIGNpbmZvKQ0KKyAgICB7DQorICAgICAgICBsb25nam1wKCooam1wX2J1ZiopY2luZm8tPmNsaWVudF9kYXRhLCAtMSk7DQorICAgIH0NCit9Ow0KK2V4dGVybiAiQyIgew0KKyAgICBzdGF0aWMgdm9pZCBfc3JjX3NraXBfZGF0YShzdHJ1Y3QganBlZ19kZWNvbXByZXNzX3N0cnVjdCogY2luZm8sIGxvbmcgbnVtKQ0KKyAgICB7DQorICAgICAgICBpZiAobnVtID4gKGxvbmcpY2luZm8tPnNyYy0+Ynl0ZXNfaW5fYnVmZmVyKSB7DQorICAgICAgICAgICAgX2Vycm9yX2ZhdGFsKChqX2NvbW1vbl9wdHIpY2luZm8pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2luZm8tPnNyYy0+bmV4dF9pbnB1dF9ieXRlICs9IG51bTsNCisgICAgICAgIGNpbmZvLT5zcmMtPmJ5dGVzX2luX2J1ZmZlciAtPSBudW07DQorICAgIH0NCit9Ow0KK2V4dGVybiAiQyIgew0KKyAgICBzdGF0aWMgYm9vbGVhbiBfc3JjX2ZpbGxfYnVmZmVyKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorICAgIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorfTsNCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIGJvb2xlYW4gX3NyY19yZXN5bmMoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgaW50IGRlc2lyZWQpDQorICAgIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorfTsNCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIHZvaWQgX2Vycm9yX2RvX25vdGhpbmcoal9jb21tb25fcHRyIGNpbmZvKSB7fQ0KK307DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyB2b2lkIF9lcnJvcl9kb19ub3RoaW5nMShqX2NvbW1vbl9wdHIgY2luZm8sIGludCkge30NCit9Ow0KK2V4dGVybiAiQyIgew0KKyAgICBzdGF0aWMgdm9pZCBfZXJyb3JfZG9fbm90aGluZzIoal9jb21tb25fcHRyIGNpbmZvLCBjaGFyKikge30NCit9Ow0KKyNkZWZpbmUgSlBFR19NQVJLRVJfRVhJRgkJKEpQRUdfQVBQMCArIDEpDQorI2RlZmluZQlKUEVHX01BUktFUl9JQ0MJCQkoSlBFR19BUFAwICsgMikNCisjZGVmaW5lCUpQRUdfTUFSS0VSX0FVVEhPUlRJTUUJKEpQRUdfQVBQMCArIDMpDQorI2RlZmluZQlKUEVHX01BUktFUl9NQVhTSVpFCTB4RkZGRg0KKyNkZWZpbmUJSlBFR19PVkVSSEVBRF9MRU4JMTQNCitzdGF0aWMgRlhfQk9PTCBfSnBlZ0lzSWNjTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpDQorew0KKyAgICBpZiAobWFya2VyLT5tYXJrZXIgPT0gSlBFR19NQVJLRVJfSUNDICYmDQorICAgICAgICAgICAgbWFya2VyLT5kYXRhX2xlbmd0aCA+PSBKUEVHX09WRVJIRUFEX0xFTiAmJg0KKyAgICAgICAgICAgIChGWFNZU19tZW1jbXAzMihtYXJrZXItPmRhdGEsICJceDQ5XHg0M1x4NDNceDVmXHg1MFx4NTJceDRmXHg0Nlx4NDlceDRjXHg0NVx4MDAiLCAxMikgPT0gMCkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorc3RhdGljCUZYX0JPT0wgX0pwZWdMb2FkSWNjUHJvZmlsZShqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBGWF9MUEJZVEUqIGljY19idWZfcHRyLCBGWF9EV09SRCogaWNjX2xlbmd0aCkNCit7DQorICAgIGlmKGljY19idWZfcHRyID09IE5VTEwgfHwgaWNjX2xlbmd0aCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgKmljY19idWZfcHRyID0gTlVMTDsNCisgICAgKmljY19sZW5ndGggPSAwOw0KKyAgICBGWF9MUEJZVEUgaWNjX2RhdGFfcHRyID0gTlVMTDsNCisgICAgRlhfRFdPUkQgaWNjX2RhdGFfbGVuID0gMDsNCisgICAgRlhfQllURSBjb3VudF9pY2NfbWFya2VyID0gMDsNCisgICAgRlhfQllURSBudW1faWNjX21hcmtlciA9IDA7DQorICAgIGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXJfbGlzdFsyNTZdID0ge05VTEx9Ow0KKyAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBjdXJfbWFya2VyID0gY2luZm8tPm1hcmtlcl9saXN0Ow0KKyAgICAgICAgICAgIGN1cl9tYXJrZXIgIT0gTlVMTDsNCisgICAgICAgICAgICBjdXJfbWFya2VyID0gY3VyX21hcmtlci0+bmV4dCkgew0KKyAgICAgICAgaWYoX0pwZWdJc0ljY01hcmtlcihjdXJfbWFya2VyKSkgew0KKyAgICAgICAgICAgIGlmKGNvdW50X2ljY19tYXJrZXIgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBudW1faWNjX21hcmtlciA9IGN1cl9tYXJrZXItPmRhdGFbMTNdOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZihudW1faWNjX21hcmtlciAhPSBjdXJfbWFya2VyLT5kYXRhWzEzXSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGludCBzbiA9IGN1cl9tYXJrZXItPmRhdGFbMTJdIC0gMTsNCisgICAgICAgICAgICBpZihzbiA8IDAgfHwgc24gPj0gbnVtX2ljY19tYXJrZXIpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZihtYXJrZXJfbGlzdFtzbl0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBtYXJrZXJfbGlzdFtzbl0gPSBjdXJfbWFya2VyOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgY291bnRfaWNjX21hcmtlciArKzsNCisgICAgICAgICAgICBpY2NfZGF0YV9sZW4gKz0JKGN1cl9tYXJrZXItPmRhdGFfbGVuZ3RoIC0gSlBFR19PVkVSSEVBRF9MRU4pOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmKGNvdW50X2ljY19tYXJrZXIgIT0gbnVtX2ljY19tYXJrZXIpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZihudW1faWNjX21hcmtlciA9PSAwKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpY2NfZGF0YV9wdHIgPSBGWF9BbGxvYyhGWF9CWVRFLCBpY2NfZGF0YV9sZW4pOw0KKyAgICBpZihpY2NfYnVmX3B0ciA9PSBOVUxMKQl7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgKmljY19idWZfcHRyID0gaWNjX2RhdGFfcHRyOw0KKyAgICAqaWNjX2xlbmd0aCA9IGljY19kYXRhX2xlbjsNCisgICAgZm9yIChpbnQgaWR4ID0gMDsgaWR4IDwgbnVtX2ljY19tYXJrZXI7IGlkeCsrKSB7DQorICAgICAgICBpY2NfZGF0YV9sZW4gPSBtYXJrZXJfbGlzdFtpZHhdLT5kYXRhX2xlbmd0aCAtIEpQRUdfT1ZFUkhFQURfTEVOOw0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoaWNjX2RhdGFfcHRyLCBtYXJrZXJfbGlzdFtpZHhdLT5kYXRhICsgSlBFR19PVkVSSEVBRF9MRU4sIGljY19kYXRhX2xlbik7DQorICAgICAgICBpY2NfZGF0YV9wdHIgKz0gaWNjX2RhdGFfbGVuOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitzdGF0aWMJRlhfQk9PTCBfSnBlZ0VtYmVkSWNjUHJvZmlsZShqX2NvbXByZXNzX3B0ciBjaW5mbywgRlhfTFBDQllURSBpY2NfYnVmX3B0ciwgRlhfRFdPUkQgaWNjX2xlbmd0aCkNCit7DQorICAgIGlmKGljY19idWZfcHRyID09IE5VTEwgfHwgaWNjX2xlbmd0aCA9PSAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfRFdPUkQgaWNjX3NlZ21lbnRfc2l6ZSA9IChKUEVHX01BUktFUl9NQVhTSVpFIC0gMiAtIEpQRUdfT1ZFUkhFQURfTEVOKTsNCisgICAgRlhfRFdPUkQgaWNjX3NlZ21lbnRfbnVtID0gKGljY19sZW5ndGggLyBpY2Nfc2VnbWVudF9zaXplKSArIDE7DQorICAgIGlmIChpY2Nfc2VnbWVudF9udW0gPiAyNTUpCXsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCBpY2NfZGF0YV9sZW5ndGggPSBKUEVHX09WRVJIRUFEX0xFTiArIChpY2Nfc2VnbWVudF9udW0gPiAxID8gaWNjX3NlZ21lbnRfc2l6ZSA6IGljY19sZW5ndGgpOw0KKyAgICBGWF9MUEJZVEUgaWNjX2RhdGEgPSBGWF9BbGxvYyhGWF9CWVRFLCBpY2NfZGF0YV9sZW5ndGgpOw0KKyAgICBpZiAoaWNjX2RhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYU1lTX21lbWNweTMyKGljY19kYXRhLCAiXHg0OVx4NDNceDQzXHg1Zlx4NTBceDUyXHg0Zlx4NDZceDQ5XHg0Y1x4NDVceDAwIiwgMTIpOw0KKyAgICBpY2NfZGF0YVsxM10gPSAoRlhfQllURSlpY2Nfc2VnbWVudF9udW07DQorICAgIGZvciAoRlhfQllURSBpID0gMDsgaSA8IChpY2Nfc2VnbWVudF9udW0gLSAxKTsgaSsrKSB7DQorICAgICAgICBpY2NfZGF0YVsxMl0gPSBpICsgMTsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKGljY19kYXRhICsgSlBFR19PVkVSSEVBRF9MRU4sIGljY19idWZfcHRyICsgaSAqIGljY19zZWdtZW50X3NpemUsIGljY19zZWdtZW50X3NpemUpOw0KKyAgICAgICAganBlZ193cml0ZV9tYXJrZXIoY2luZm8sIEpQRUdfTUFSS0VSX0lDQywgaWNjX2RhdGEsIGljY19kYXRhX2xlbmd0aCk7DQorICAgIH0NCisgICAgaWNjX2RhdGFbMTJdID0gKEZYX0JZVEUpaWNjX3NlZ21lbnRfbnVtOw0KKyAgICBGWF9EV09SRCBpY2Nfc2l6ZSA9IChpY2Nfc2VnbWVudF9udW0gLSAxKSAqIGljY19zZWdtZW50X3NpemU7DQorICAgIEZYU1lTX21lbWNweTMyKGljY19kYXRhICsgSlBFR19PVkVSSEVBRF9MRU4sIGljY19idWZfcHRyICsgaWNjX3NpemUsIGljY19sZW5ndGggLSBpY2Nfc2l6ZSk7DQorICAgIGpwZWdfd3JpdGVfbWFya2VyKGNpbmZvLCBKUEVHX01BUktFUl9JQ0MsIGljY19kYXRhLCBKUEVHX09WRVJIRUFEX0xFTiArIGljY19sZW5ndGggLSBpY2Nfc2l6ZSk7DQorICAgIEZYX0ZyZWUoaWNjX2RhdGEpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyB2b2lkIF9kZXN0X2RvX25vdGhpbmcoal9jb21wcmVzc19wdHIgY2luZm8pIHt9DQorfTsNCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIGJvb2xlYW4gX2Rlc3RfZW1wdHkoal9jb21wcmVzc19wdHIgY2luZm8pDQorICAgIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KK307DQorI2RlZmluZQlKUEVHX0JMT0NLX1NJWkUJMTA0ODU3Ng0KK3N0YXRpYyB2b2lkIF9KcGVnRW5jb2RlKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX1NUUlNJWkUmIGRlc3Rfc2l6ZSwgaW50IHF1YWxpdHksIEZYX0xQQ0JZVEUgaWNjX2J1ZiwgRlhfRFdPUkQgaWNjX2xlbmd0aCkNCit7DQorICAgIHN0cnVjdCBqcGVnX2NvbXByZXNzX3N0cnVjdCBjaW5mbzsNCisgICAgc3RydWN0IGpwZWdfZXJyb3JfbWdyIGplcnI7DQorICAgIGplcnIuZXJyb3JfZXhpdCA9IF9lcnJvcl9kb19ub3RoaW5nOw0KKyAgICBqZXJyLmVtaXRfbWVzc2FnZSA9IF9lcnJvcl9kb19ub3RoaW5nMTsNCisgICAgamVyci5vdXRwdXRfbWVzc2FnZSA9IF9lcnJvcl9kb19ub3RoaW5nOw0KKyAgICBqZXJyLmZvcm1hdF9tZXNzYWdlID0gX2Vycm9yX2RvX25vdGhpbmcyOw0KKyAgICBqZXJyLnJlc2V0X2Vycm9yX21nciA9IF9lcnJvcl9kb19ub3RoaW5nOw0KKyAgICBjaW5mby5lcnIgPSAmamVycjsNCisgICAganBlZ19jcmVhdGVfY29tcHJlc3MoJmNpbmZvKTsNCisgICAgaW50IEJwcCA9IHBTb3VyY2UtPkdldEJQUCgpIC8gODsNCisgICAgaW50IG5Db21wb25lbnRzID0gQnBwID49IDMgPyAocFNvdXJjZS0+SXNDbXlrSW1hZ2UoKSA/IDQgOiAzKSA6IDE7DQorICAgIGludCBwaXRjaCA9IHBTb3VyY2UtPkdldFBpdGNoKCk7DQorICAgIGludCB3aWR0aCA9IHBTb3VyY2UtPkdldFdpZHRoKCk7DQorICAgIGludCBoZWlnaHQgPSBwU291cmNlLT5HZXRIZWlnaHQoKTsNCisgICAgRlhfRFdPUkQgZGVzdF9idWZfbGVuZ3RoID0gd2lkdGggKiBoZWlnaHQgKiBuQ29tcG9uZW50cyArIDEwMjQgKyAoaWNjX2xlbmd0aCA/IChpY2NfbGVuZ3RoICsgMjU1ICogMTgpIDogMCk7DQorICAgIGRlc3RfYnVmID0gRlhfQWxsb2MoRlhfQllURSwgZGVzdF9idWZfbGVuZ3RoKTsNCisgICAgd2hpbGUgKGRlc3RfYnVmID09IE5VTEwpIHsNCisgICAgICAgIGRlc3RfYnVmX2xlbmd0aCA+Pj0gMTsNCisgICAgICAgIGRlc3RfYnVmID0gRlhfQWxsb2MoRlhfQllURSwgZGVzdF9idWZfbGVuZ3RoKTsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1zZXQzMihkZXN0X2J1ZiwgMCwgZGVzdF9idWZfbGVuZ3RoKTsNCisgICAgc3RydWN0IGpwZWdfZGVzdGluYXRpb25fbWdyIGRlc3Q7DQorICAgIGRlc3QuaW5pdF9kZXN0aW5hdGlvbiA9IF9kZXN0X2RvX25vdGhpbmc7DQorICAgIGRlc3QudGVybV9kZXN0aW5hdGlvbiA9IF9kZXN0X2RvX25vdGhpbmc7DQorICAgIGRlc3QuZW1wdHlfb3V0cHV0X2J1ZmZlciA9IF9kZXN0X2VtcHR5Ow0KKyAgICBkZXN0Lm5leHRfb3V0cHV0X2J5dGUgPSBkZXN0X2J1ZjsNCisgICAgZGVzdC5mcmVlX2luX2J1ZmZlciA9IGRlc3RfYnVmX2xlbmd0aDsNCisgICAgY2luZm8uZGVzdCA9ICZkZXN0Ow0KKyAgICBjaW5mby5pbWFnZV93aWR0aCA9IHdpZHRoOw0KKyAgICBjaW5mby5pbWFnZV9oZWlnaHQgPSBoZWlnaHQ7DQorICAgIGNpbmZvLmlucHV0X2NvbXBvbmVudHMgPSBuQ29tcG9uZW50czsNCisgICAgaWYgKG5Db21wb25lbnRzID09IDEpIHsNCisgICAgICAgIGNpbmZvLmluX2NvbG9yX3NwYWNlID0gSkNTX0dSQVlTQ0FMRTsNCisgICAgfSBlbHNlIGlmIChuQ29tcG9uZW50cyA9PSAzKSB7DQorICAgICAgICBjaW5mby5pbl9jb2xvcl9zcGFjZSA9IEpDU19SR0I7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBjaW5mby5pbl9jb2xvcl9zcGFjZSA9IEpDU19DTVlLOw0KKyAgICB9DQorICAgIEZYX0xQQllURSBsaW5lX2J1ZiA9IE5VTEw7DQorICAgIGlmIChuQ29tcG9uZW50cyA+IDEpIHsNCisgICAgICAgIGxpbmVfYnVmID0gRlhfQWxsb2MoRlhfQllURSwgd2lkdGggKiBuQ29tcG9uZW50cyk7DQorICAgICAgICBpZiAobGluZV9idWYgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBqcGVnX3NldF9kZWZhdWx0cygmY2luZm8pOw0KKyAgICBpZihxdWFsaXR5ICE9IDc1KSB7DQorICAgICAgICBqcGVnX3NldF9xdWFsaXR5KCZjaW5mbywgcXVhbGl0eSwgVFJVRSk7DQorICAgIH0NCisgICAganBlZ19zdGFydF9jb21wcmVzcygmY2luZm8sIFRSVUUpOw0KKyAgICBfSnBlZ0VtYmVkSWNjUHJvZmlsZSgmY2luZm8sIGljY19idWYsIGljY19sZW5ndGgpOw0KKyAgICBKU0FNUFJPVyByb3dfcG9pbnRlclsxXTsNCisgICAgSkRJTUVOU0lPTiByb3c7DQorICAgIHdoaWxlIChjaW5mby5uZXh0X3NjYW5saW5lIDwgY2luZm8uaW1hZ2VfaGVpZ2h0KSB7DQorICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gcFNvdXJjZS0+R2V0U2NhbmxpbmUoY2luZm8ubmV4dF9zY2FubGluZSk7DQorICAgICAgICBpZiAobkNvbXBvbmVudHMgPiAxKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGxpbmVfYnVmOw0KKyAgICAgICAgICAgIGlmIChuQ29tcG9uZW50cyA9PSAzKSB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd2lkdGg7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IHNyY19zY2FuWzJdOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gc3JjX3NjYW5bMV07DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gQnBwOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwaXRjaDsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gfipzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJvd19wb2ludGVyWzBdID0gbGluZV9idWY7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJvd19wb2ludGVyWzBdID0gKEZYX0xQQllURSlzcmNfc2NhbjsNCisgICAgICAgIH0NCisgICAgICAgIHJvdyA9IGNpbmZvLm5leHRfc2NhbmxpbmU7DQorICAgICAgICBqcGVnX3dyaXRlX3NjYW5saW5lcygmY2luZm8sIHJvd19wb2ludGVyLCAxKTsNCisgICAgICAgIGlmIChjaW5mby5uZXh0X3NjYW5saW5lID09IHJvdykgew0KKyAgICAgICAgICAgIGRlc3RfYnVmID0gRlhfUmVhbGxvYyhGWF9CWVRFLCBkZXN0X2J1ZiwgZGVzdF9idWZfbGVuZ3RoICsgSlBFR19CTE9DS19TSVpFKTsNCisgICAgICAgICAgICBpZiAoZGVzdF9idWYgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBGWF9GcmVlKGxpbmVfYnVmKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0Lm5leHRfb3V0cHV0X2J5dGUgPSBkZXN0X2J1ZiArIGRlc3RfYnVmX2xlbmd0aCAtIGRlc3QuZnJlZV9pbl9idWZmZXI7DQorICAgICAgICAgICAgZGVzdF9idWZfbGVuZ3RoICs9IEpQRUdfQkxPQ0tfU0laRTsNCisgICAgICAgICAgICBkZXN0LmZyZWVfaW5fYnVmZmVyICs9IEpQRUdfQkxPQ0tfU0laRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBqcGVnX2ZpbmlzaF9jb21wcmVzcygmY2luZm8pOw0KKyAgICBqcGVnX2Rlc3Ryb3lfY29tcHJlc3MoJmNpbmZvKTsNCisgICAgaWYgKGxpbmVfYnVmKSB7DQorICAgICAgICBGWF9GcmVlKGxpbmVfYnVmKTsNCisgICAgfQ0KKyAgICBkZXN0X3NpemUgPSBkZXN0X2J1Zl9sZW5ndGggLSAoRlhfU1RSU0laRSlkZXN0LmZyZWVfaW5fYnVmZmVyOw0KK30NCitzdGF0aWMgRlhfQk9PTCBfSnBlZ0xvYWRJbmZvKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCYgd2lkdGgsIGludCYgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBudW1fY29tcG9uZW50cywgaW50JiBiaXRzX3Blcl9jb21wb25lbnRzLCBGWF9CT09MJiBjb2xvcl90cmFuc2Zvcm0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUqIGljY19idWZfcHRyLCBGWF9EV09SRCogaWNjX2xlbmd0aCkNCit7DQorICAgIF9KcGVnU2NhblNPSShzcmNfYnVmLCBzcmNfc2l6ZSk7DQorICAgIHN0cnVjdCBqcGVnX2RlY29tcHJlc3Nfc3RydWN0IGNpbmZvOw0KKyAgICBzdHJ1Y3QganBlZ19lcnJvcl9tZ3IgamVycjsNCisgICAgamVyci5lcnJvcl9leGl0ID0gX2Vycm9yX2ZhdGFsOw0KKyAgICBqZXJyLmVtaXRfbWVzc2FnZSA9IF9lcnJvcl9kb19ub3RoaW5nMTsNCisgICAgamVyci5vdXRwdXRfbWVzc2FnZSA9IF9lcnJvcl9kb19ub3RoaW5nOw0KKyAgICBqZXJyLmZvcm1hdF9tZXNzYWdlID0gX2Vycm9yX2RvX25vdGhpbmcyOw0KKyAgICBqZXJyLnJlc2V0X2Vycm9yX21nciA9IF9lcnJvcl9kb19ub3RoaW5nOw0KKyAgICBjaW5mby5lcnIgPSAmamVycjsNCisgICAgam1wX2J1ZiBtYXJrOw0KKyAgICBjaW5mby5jbGllbnRfZGF0YSA9ICZtYXJrOw0KKyAgICBpZiAoc2V0am1wKG1hcmspID09IC0xKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAganBlZ19jcmVhdGVfZGVjb21wcmVzcygmY2luZm8pOw0KKyAgICBzdHJ1Y3QganBlZ19zb3VyY2VfbWdyIHNyYzsNCisgICAgc3JjLmluaXRfc291cmNlID0gX3NyY19kb19ub3RoaW5nOw0KKyAgICBzcmMudGVybV9zb3VyY2UgPSBfc3JjX2RvX25vdGhpbmc7DQorICAgIHNyYy5za2lwX2lucHV0X2RhdGEgPSBfc3JjX3NraXBfZGF0YTsNCisgICAgc3JjLmZpbGxfaW5wdXRfYnVmZmVyID0gX3NyY19maWxsX2J1ZmZlcjsNCisgICAgc3JjLnJlc3luY190b19yZXN0YXJ0ID0gX3NyY19yZXN5bmM7DQorICAgIHNyYy5ieXRlc19pbl9idWZmZXIgPSBzcmNfc2l6ZTsNCisgICAgc3JjLm5leHRfaW5wdXRfYnl0ZSA9IHNyY19idWY7DQorICAgIGNpbmZvLnNyYyA9ICZzcmM7DQorICAgIGlmIChzZXRqbXAobWFyaykgPT0gLTEpIHsNCisgICAgICAgIGpwZWdfZGVzdHJveV9kZWNvbXByZXNzKCZjaW5mbyk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYoaWNjX2J1Zl9wdHIgJiYgaWNjX2xlbmd0aCkgew0KKyAgICAgICAganBlZ19zYXZlX21hcmtlcnMoJmNpbmZvLCBKUEVHX01BUktFUl9JQ0MsIEpQRUdfTUFSS0VSX01BWFNJWkUpOw0KKyAgICB9DQorICAgIGludCByZXQgPSBqcGVnX3JlYWRfaGVhZGVyKCZjaW5mbywgVFJVRSk7DQorICAgIGlmIChyZXQgIT0gSlBFR19IRUFERVJfT0spIHsNCisgICAgICAgIGpwZWdfZGVzdHJveV9kZWNvbXByZXNzKCZjaW5mbyk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgd2lkdGggPSBjaW5mby5pbWFnZV93aWR0aDsNCisgICAgaGVpZ2h0ID0gY2luZm8uaW1hZ2VfaGVpZ2h0Ow0KKyAgICBudW1fY29tcG9uZW50cyA9IGNpbmZvLm51bV9jb21wb25lbnRzOw0KKyAgICBjb2xvcl90cmFuc2Zvcm0gPSBjaW5mby5qcGVnX2NvbG9yX3NwYWNlID09IEpDU19ZQ2JDciB8fCBjaW5mby5qcGVnX2NvbG9yX3NwYWNlID09IEpDU19ZQ0NLOw0KKyAgICBiaXRzX3Blcl9jb21wb25lbnRzID0gY2luZm8uZGF0YV9wcmVjaXNpb247DQorICAgIGlmKGljY19idWZfcHRyICE9IE5VTEwpIHsNCisgICAgICAgICppY2NfYnVmX3B0ciA9IE5VTEw7DQorICAgIH0NCisgICAgaWYoaWNjX2xlbmd0aCAhPSBOVUxMKSB7DQorICAgICAgICAqaWNjX2xlbmd0aCA9IDA7DQorICAgIH0NCisgICAganBlZ19kZXN0cm95X2RlY29tcHJlc3MoJmNpbmZvKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2NsYXNzIENDb2RlY19KcGVnRGVjb2RlciA6IHB1YmxpYyBDQ29kZWNfU2NhbmxpbmVEZWNvZGVyDQorew0KK3B1YmxpYzoNCisgICAgQ0NvZGVjX0pwZWdEZWNvZGVyKCk7DQorICAgIH5DQ29kZWNfSnBlZ0RlY29kZXIoKTsNCisgICAgRlhfQk9PTAkJCQlDcmVhdGUoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbkNvbXBzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIENvbG9yVHJhbnNmb3JtLCBJRlhfSnBlZ1Byb3ZpZGVyKiBwSlApOw0KKyAgICB2aXJ0dWFsIHZvaWQJCURlc3Ryb3koKQ0KKyAgICB7DQorICAgICAgICBkZWxldGUgdGhpczsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQJCXZfRG93blNjYWxlKGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCXZfUmV3aW5kKCk7DQorICAgIHZpcnR1YWwgRlhfTFBCWVRFCXZfR2V0TmV4dExpbmUoKTsNCisgICAgdmlydHVhbCBGWF9EV09SRAlHZXRTcmNPZmZzZXQoKTsNCisgICAgam1wX2J1ZgkJbV9KbXBCdWY7DQorICAgIHN0cnVjdCBqcGVnX2RlY29tcHJlc3Nfc3RydWN0IGNpbmZvOw0KKyAgICBzdHJ1Y3QganBlZ19lcnJvcl9tZ3IgamVycjsNCisgICAgc3RydWN0IGpwZWdfc291cmNlX21nciBzcmM7DQorICAgIEZYX0xQQ0JZVEUJbV9TcmNCdWY7DQorICAgIEZYX0RXT1JECW1fU3JjU2l6ZTsNCisgICAgRlhfTFBCWVRFCW1fcFNjYW5saW5lQnVmOw0KKyAgICBGWF9CT09MCQlJbml0RGVjb2RlKCk7DQorICAgIEZYX0JPT0wJCW1fYkluaXRlZCwgbV9iU3RhcnRlZCwgbV9iSnBlZ1RyYW5zZm9ybTsNCitwcm90ZWN0ZWQ6DQorICAgIElGWF9KcGVnUHJvdmlkZXIqCW1fcEV4dFByb3ZpZGVyOw0KKyAgICB2b2lkKgkJCQltX3BFeHRDb250ZXh0Ow0KKyAgICBGWF9EV09SRAkJCW1fbkRlZmF1bHRTY2FsZURlbm9tOw0KK307DQorQ0NvZGVjX0pwZWdEZWNvZGVyOjpDQ29kZWNfSnBlZ0RlY29kZXIoKQ0KK3sNCisgICAgbV9wU2NhbmxpbmVCdWYgPSBOVUxMOw0KKyAgICBtX0Rvd25TY2FsZSA9IDE7DQorICAgIG1fYlN0YXJ0ZWQgPSBGQUxTRTsNCisgICAgbV9iSW5pdGVkID0gRkFMU0U7DQorICAgIG1fcEV4dFByb3ZpZGVyID0gTlVMTDsNCisgICAgbV9wRXh0Q29udGV4dCA9IE5VTEw7DQorICAgIEZYU1lTX21lbXNldDMyKCZjaW5mbywgMCwgc2l6ZW9mKGNpbmZvKSk7DQorICAgIEZYU1lTX21lbXNldDMyKCZqZXJyLCAwLCBzaXplb2YoamVycikpOw0KKyAgICBGWFNZU19tZW1zZXQzMigmc3JjLCAwLCBzaXplb2Yoc3JjKSk7DQorICAgIG1fbkRlZmF1bHRTY2FsZURlbm9tID0gMTsNCit9DQorQ0NvZGVjX0pwZWdEZWNvZGVyOjp+Q0NvZGVjX0pwZWdEZWNvZGVyKCkNCit7DQorICAgIGlmIChtX3BFeHRQcm92aWRlcikgew0KKyAgICAgICAgbV9wRXh0UHJvdmlkZXItPkRlc3Ryb3lEZWNvZGVyKG1fcEV4dENvbnRleHQpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX3BTY2FubGluZUJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BTY2FubGluZUJ1Zik7DQorICAgIH0NCisgICAgaWYgKG1fYkluaXRlZCkgew0KKyAgICAgICAganBlZ19kZXN0cm95X2RlY29tcHJlc3MoJmNpbmZvKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENDb2RlY19KcGVnRGVjb2Rlcjo6SW5pdERlY29kZSgpDQorew0KKyAgICBjaW5mby5lcnIgPSAmamVycjsNCisgICAgY2luZm8uY2xpZW50X2RhdGEgPSAmbV9KbXBCdWY7DQorICAgIGlmIChzZXRqbXAobV9KbXBCdWYpID09IC0xKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAganBlZ19jcmVhdGVfZGVjb21wcmVzcygmY2luZm8pOw0KKyAgICBtX2JJbml0ZWQgPSBUUlVFOw0KKyAgICBjaW5mby5zcmMgPSAmc3JjOw0KKyAgICBzcmMuYnl0ZXNfaW5fYnVmZmVyID0gbV9TcmNTaXplOw0KKyAgICBzcmMubmV4dF9pbnB1dF9ieXRlID0gbV9TcmNCdWY7DQorICAgIGlmIChzZXRqbXAobV9KbXBCdWYpID09IC0xKSB7DQorICAgICAgICBqcGVnX2Rlc3Ryb3lfZGVjb21wcmVzcygmY2luZm8pOw0KKyAgICAgICAgbV9iSW5pdGVkID0gRkFMU0U7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgY2luZm8uaW1hZ2Vfd2lkdGggPSBtX09yaWdXaWR0aDsNCisgICAgY2luZm8uaW1hZ2VfaGVpZ2h0ID0gbV9PcmlnSGVpZ2h0Ow0KKyAgICBpbnQgcmV0ID0ganBlZ19yZWFkX2hlYWRlcigmY2luZm8sIFRSVUUpOw0KKyAgICBpZiAocmV0ICE9IEpQRUdfSEVBREVSX09LKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKGNpbmZvLnNhd19BZG9iZV9tYXJrZXIpIHsNCisgICAgICAgIG1fYkpwZWdUcmFuc2Zvcm0gPSBUUlVFOw0KKyAgICB9DQorICAgIGlmIChjaW5mby5udW1fY29tcG9uZW50cyA9PSAzICYmICFtX2JKcGVnVHJhbnNmb3JtKSB7DQorICAgICAgICBjaW5mby5vdXRfY29sb3Jfc3BhY2UgPSBjaW5mby5qcGVnX2NvbG9yX3NwYWNlOw0KKyAgICB9DQorICAgIG1fT3JpZ1dpZHRoID0gY2luZm8uaW1hZ2Vfd2lkdGg7DQorICAgIG1fT3JpZ0hlaWdodCA9IGNpbmZvLmltYWdlX2hlaWdodDsNCisgICAgbV9PdXRwdXRXaWR0aCA9IG1fT3JpZ1dpZHRoOw0KKyAgICBtX091dHB1dEhlaWdodCA9IG1fT3V0cHV0SGVpZ2h0Ow0KKyAgICBtX25EZWZhdWx0U2NhbGVEZW5vbSA9IGNpbmZvLnNjYWxlX2Rlbm9tOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDQ29kZWNfSnBlZ0RlY29kZXI6OkNyZWF0ZShGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkNvbXBzLCBGWF9CT09MIENvbG9yVHJhbnNmb3JtLCBJRlhfSnBlZ1Byb3ZpZGVyKiBwSlApDQorew0KKyAgICBpZiAocEpQKSB7DQorICAgICAgICBtX3BFeHRQcm92aWRlciA9IHBKUDsNCisgICAgICAgIG1fcEV4dENvbnRleHQgPSBtX3BFeHRQcm92aWRlci0+Q3JlYXRlRGVjb2RlcihzcmNfYnVmLCBzcmNfc2l6ZSwgd2lkdGgsIGhlaWdodCwgbkNvbXBzLCBDb2xvclRyYW5zZm9ybSk7DQorICAgICAgICByZXR1cm4gbV9wRXh0Q29udGV4dCAhPSBOVUxMOw0KKyAgICB9DQorICAgIF9KcGVnU2NhblNPSShzcmNfYnVmLCBzcmNfc2l6ZSk7DQorICAgIG1fU3JjQnVmID0gc3JjX2J1ZjsNCisgICAgbV9TcmNTaXplID0gc3JjX3NpemU7DQorICAgIGplcnIuZXJyb3JfZXhpdCA9IF9lcnJvcl9mYXRhbDsNCisgICAgamVyci5lbWl0X21lc3NhZ2UgPSBfZXJyb3JfZG9fbm90aGluZzE7DQorICAgIGplcnIub3V0cHV0X21lc3NhZ2UgPSBfZXJyb3JfZG9fbm90aGluZzsNCisgICAgamVyci5mb3JtYXRfbWVzc2FnZSA9IF9lcnJvcl9kb19ub3RoaW5nMjsNCisgICAgamVyci5yZXNldF9lcnJvcl9tZ3IgPSBfZXJyb3JfZG9fbm90aGluZzsNCisgICAgc3JjLmluaXRfc291cmNlID0gX3NyY19kb19ub3RoaW5nOw0KKyAgICBzcmMudGVybV9zb3VyY2UgPSBfc3JjX2RvX25vdGhpbmc7DQorICAgIHNyYy5za2lwX2lucHV0X2RhdGEgPSBfc3JjX3NraXBfZGF0YTsNCisgICAgc3JjLmZpbGxfaW5wdXRfYnVmZmVyID0gX3NyY19maWxsX2J1ZmZlcjsNCisgICAgc3JjLnJlc3luY190b19yZXN0YXJ0ID0gX3NyY19yZXN5bmM7DQorICAgIG1fYkpwZWdUcmFuc2Zvcm0gPSBDb2xvclRyYW5zZm9ybTsNCisgICAgaWYoc3JjX3NpemUgPiAxICYmIEZYU1lTX21lbWNtcDMyKHNyY19idWYgKyBzcmNfc2l6ZSAtIDIsICJceEZGXHhEOSIsIDIpICE9IDApIHsNCisgICAgICAgICgoRlhfTFBCWVRFKXNyY19idWYpW3NyY19zaXplIC0gMl0gPSAweEZGOw0KKyAgICAgICAgKChGWF9MUEJZVEUpc3JjX2J1Zilbc3JjX3NpemUgLSAxXSA9IDB4RDk7DQorICAgIH0NCisgICAgbV9PdXRwdXRXaWR0aCA9IG1fT3JpZ1dpZHRoID0gd2lkdGg7DQorICAgIG1fT3V0cHV0SGVpZ2h0ID0gbV9PcmlnSGVpZ2h0ID0gaGVpZ2h0Ow0KKyAgICBpZiAoIUluaXREZWNvZGUoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChjaW5mby5udW1fY29tcG9uZW50cyA8IG5Db21wcykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICgoaW50KWNpbmZvLmltYWdlX3dpZHRoIDwgd2lkdGgpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX1BpdGNoID0gKGNpbmZvLmltYWdlX3dpZHRoICogY2luZm8ubnVtX2NvbXBvbmVudHMgKyAzKSAvIDQgKiA0Ow0KKyAgICBtX3BTY2FubGluZUJ1ZiA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fUGl0Y2gpOw0KKyAgICBpZiAobV9wU2NhbmxpbmVCdWYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fbkNvbXBzID0gY2luZm8ubnVtX2NvbXBvbmVudHM7DQorICAgIG1fYnBjID0gODsNCisgICAgbV9iQ29sb3JUcmFuc2Zvcm1lZCA9IEZBTFNFOw0KKyAgICBtX2JTdGFydGVkID0gRkFMU0U7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitleHRlcm4gIkMiIHsNCisgICAgRlhfSU5UMzIgRlhfR2V0RG93bnNhbXBsZVJhdGlvKEZYX0lOVDMyIG9yaWdpbldpZHRoLCBGWF9JTlQzMiBvcmlnaW5IZWlnaHQsIEZYX0lOVDMyIGRvd25zYW1wbGVXaWR0aCwgRlhfSU5UMzIgZG93bnNhbXBsZUhlaWdodCkNCisgICAgew0KKyAgICAgICAgaW50IGlyYXRpb193ID0gb3JpZ2luV2lkdGggLyBkb3duc2FtcGxlV2lkdGg7DQorICAgICAgICBpbnQgaXJhdGlvX2ggPSBvcmlnaW5IZWlnaHQgLyBkb3duc2FtcGxlSGVpZ2h0Ow0KKyAgICAgICAgaW50IHJhdGlvID0gKGlyYXRpb193ID4gaXJhdGlvX2gpID8gaXJhdGlvX2ggOiBpcmF0aW9fdzsNCisgICAgICAgIGlmIChyYXRpbyA+PSA4KSB7DQorICAgICAgICAgICAgcmV0dXJuIDg7DQorICAgICAgICB9IGVsc2UgaWYgKHJhdGlvID49IDQpIHsNCisgICAgICAgICAgICByZXR1cm4gNDsNCisgICAgICAgIH0gZWxzZSBpZiAocmF0aW8gPj0gMikgew0KKyAgICAgICAgICAgIHJldHVybiAyOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCit9DQordm9pZCBDQ29kZWNfSnBlZ0RlY29kZXI6OnZfRG93blNjYWxlKGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpDQorew0KKyAgICBpZiAobV9wRXh0UHJvdmlkZXIpIHsNCisgICAgICAgIG1fcEV4dFByb3ZpZGVyLT5Eb3duU2NhbGUobV9wRXh0Q29udGV4dCwgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBvbGRfc2NhbGUgPSBtX0Rvd25TY2FsZTsNCisgICAgbV9Eb3duU2NhbGUgPSBGWF9HZXREb3duc2FtcGxlUmF0aW8obV9PcmlnV2lkdGgsIG1fT3JpZ0hlaWdodCwgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQpOw0KKyAgICBtX091dHB1dFdpZHRoID0gKG1fT3JpZ1dpZHRoICsgbV9Eb3duU2NhbGUgLSAxKSAvIG1fRG93blNjYWxlOw0KKyAgICBtX091dHB1dEhlaWdodCA9IChtX09yaWdIZWlnaHQgKyBtX0Rvd25TY2FsZSAtIDEpIC8gbV9Eb3duU2NhbGU7DQorICAgIG1fUGl0Y2ggPSAobV9PdXRwdXRXaWR0aCAqIG1fbkNvbXBzICsgMykgLyA0ICogNDsNCisgICAgaWYgKG9sZF9zY2FsZSAhPSBtX0Rvd25TY2FsZSkgew0KKyAgICAgICAgbV9OZXh0TGluZSA9IC0xOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ0NvZGVjX0pwZWdEZWNvZGVyOjp2X1Jld2luZCgpDQorew0KKyAgICBpZiAobV9wRXh0UHJvdmlkZXIpIHsNCisgICAgICAgIHJldHVybiBtX3BFeHRQcm92aWRlci0+UmV3aW5kKG1fcEV4dENvbnRleHQpOw0KKyAgICB9DQorICAgIGlmIChtX2JTdGFydGVkKSB7DQorICAgICAgICBqcGVnX2Rlc3Ryb3lfZGVjb21wcmVzcygmY2luZm8pOw0KKyAgICAgICAgaWYgKCFJbml0RGVjb2RlKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHNldGptcChtX0ptcEJ1ZikgPT0gLTEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBjaW5mby5zY2FsZV9kZW5vbSA9IG1fbkRlZmF1bHRTY2FsZURlbm9tICogbV9Eb3duU2NhbGU7DQorICAgIG1fT3V0cHV0V2lkdGggPSAobV9PcmlnV2lkdGggKyBtX0Rvd25TY2FsZSAtIDEpIC8gbV9Eb3duU2NhbGU7DQorICAgIG1fT3V0cHV0SGVpZ2h0ID0gKG1fT3JpZ0hlaWdodCArIG1fRG93blNjYWxlIC0gMSkgLyBtX0Rvd25TY2FsZTsNCisgICAgaWYgKCFqcGVnX3N0YXJ0X2RlY29tcHJlc3MoJmNpbmZvKSkgew0KKyAgICAgICAganBlZ19kZXN0cm95X2RlY29tcHJlc3MoJmNpbmZvKTsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoKGludCljaW5mby5vdXRwdXRfd2lkdGggPiBtX09yaWdXaWR0aCkgew0KKyAgICAgICAgRlhTWVNfYXNzZXJ0KEZBTFNFKTsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX2JTdGFydGVkID0gVFJVRTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0xQQllURSBDQ29kZWNfSnBlZ0RlY29kZXI6OnZfR2V0TmV4dExpbmUoKQ0KK3sNCisgICAgaWYgKG1fcEV4dFByb3ZpZGVyKSB7DQorICAgICAgICByZXR1cm4gbV9wRXh0UHJvdmlkZXItPkdldE5leHRMaW5lKG1fcEV4dENvbnRleHQpOw0KKyAgICB9DQorICAgIGludCBubGluZXMgPSBqcGVnX3JlYWRfc2NhbmxpbmVzKCZjaW5mbywgJm1fcFNjYW5saW5lQnVmLCAxKTsNCisgICAgaWYgKG5saW5lcyA8IDEpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BTY2FubGluZUJ1ZjsNCit9DQorRlhfRFdPUkQgQ0NvZGVjX0pwZWdEZWNvZGVyOjpHZXRTcmNPZmZzZXQoKQ0KK3sNCisgICAgaWYgKG1fcEV4dFByb3ZpZGVyKSB7DQorICAgICAgICByZXR1cm4gbV9wRXh0UHJvdmlkZXItPkdldFNyY09mZnNldChtX3BFeHRDb250ZXh0KTsNCisgICAgfQ0KKyAgICByZXR1cm4gKEZYX0RXT1JEKShtX1NyY1NpemUgLSBzcmMuYnl0ZXNfaW5fYnVmZmVyKTsNCit9DQorSUNvZGVjX1NjYW5saW5lRGVjb2RlcioJQ0NvZGVjX0pwZWdNb2R1bGU6OkNyZWF0ZURlY29kZXIoRlhfTFBDQllURSBzcmNfYnVmLCBGWF9EV09SRCBzcmNfc2l6ZSwNCisgICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG5Db21wcywgRlhfQk9PTCBDb2xvclRyYW5zZm9ybSkNCit7DQorICAgIGlmIChzcmNfYnVmID09IE5VTEwgfHwgc3JjX3NpemUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0NvZGVjX0pwZWdEZWNvZGVyKiBwRGVjb2RlciA9IEZYX05FVyBDQ29kZWNfSnBlZ0RlY29kZXI7DQorICAgIGlmIChwRGVjb2RlciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoIXBEZWNvZGVyLT5DcmVhdGUoc3JjX2J1Ziwgc3JjX3NpemUsIHdpZHRoLCBoZWlnaHQsIG5Db21wcywgQ29sb3JUcmFuc2Zvcm0sIG1fcEV4dFByb3ZpZGVyKSkgew0KKyAgICAgICAgZGVsZXRlIHBEZWNvZGVyOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBEZWNvZGVyOw0KK30NCitGWF9CT09MIENDb2RlY19KcGVnTW9kdWxlOjpMb2FkSW5mbyhGWF9MUENCWVRFIHNyY19idWYsIEZYX0RXT1JEIHNyY19zaXplLCBpbnQmIHdpZHRoLCBpbnQmIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG51bV9jb21wb25lbnRzLCBpbnQmIGJpdHNfcGVyX2NvbXBvbmVudHMsIEZYX0JPT0wmIGNvbG9yX3RyYW5zZm9ybSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUqIGljY19idWZfcHRyLCBGWF9EV09SRCogaWNjX2xlbmd0aCkNCit7DQorICAgIGlmIChtX3BFeHRQcm92aWRlcikgew0KKyAgICAgICAgcmV0dXJuIG1fcEV4dFByb3ZpZGVyLT5Mb2FkSW5mbyhzcmNfYnVmLCBzcmNfc2l6ZSwgd2lkdGgsIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2NvbXBvbmVudHMsIGJpdHNfcGVyX2NvbXBvbmVudHMsIGNvbG9yX3RyYW5zZm9ybSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNjX2J1Zl9wdHIsIGljY19sZW5ndGgpOw0KKyAgICB9DQorICAgIHJldHVybiBfSnBlZ0xvYWRJbmZvKHNyY19idWYsIHNyY19zaXplLCB3aWR0aCwgaGVpZ2h0LCBudW1fY29tcG9uZW50cywgYml0c19wZXJfY29tcG9uZW50cywgY29sb3JfdHJhbnNmb3JtLCBpY2NfYnVmX3B0ciwgaWNjX2xlbmd0aCk7DQorfQ0KK0ZYX0JPT0wgQ0NvZGVjX0pwZWdNb2R1bGU6OkVuY29kZShjb25zdCBDRlhfRElCU291cmNlKiBwU291cmNlLCBGWF9MUEJZVEUmIGRlc3RfYnVmLCBGWF9TVFJTSVpFJiBkZXN0X3NpemUsIGludCBxdWFsaXR5LCBGWF9MUENCWVRFIGljY19idWYsIEZYX0RXT1JEIGljY19sZW5ndGgpDQorew0KKyAgICBpZiAobV9wRXh0UHJvdmlkZXIpIHsNCisgICAgICAgIHJldHVybiBtX3BFeHRQcm92aWRlci0+RW5jb2RlKHBTb3VyY2UsIGRlc3RfYnVmLCBkZXN0X3NpemUsIHF1YWxpdHksIGljY19idWYsIGljY19sZW5ndGgpOw0KKyAgICB9DQorICAgIGlmKHBTb3VyY2UtPkdldEJQUCgpIDwgOCB8fCBwU291cmNlLT5HZXRQYWxldHRlKCkgIT0gTlVMTCkgew0KKyAgICAgICAgQVNTRVJUKHBTb3VyY2UtPkdldEJQUCgpID49IDggJiYgcFNvdXJjZS0+R2V0UGFsZXR0ZSgpID09IE5VTEwpOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIF9KcGVnRW5jb2RlKHBTb3VyY2UsIGRlc3RfYnVmLCBkZXN0X3NpemUsIHF1YWxpdHksIGljY19idWYsIGljY19sZW5ndGgpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorc3RydWN0IEZYSlBFR19Db250ZXh0IHsNCisgICAgam1wX2J1ZgkJCW1fSnVtcE1hcms7DQorICAgIGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QgbV9JbmZvOw0KKyAgICBqcGVnX2Vycm9yX21ncgltX0Vyck1ncjsNCisgICAganBlZ19zb3VyY2VfbWdyCW1fU3JjTWdyOw0KKyAgICB1bnNpZ25lZCBpbnQJbV9Ta2lwU2l6ZTsNCisgICAgdm9pZCoJCSgqbV9BbGxvY0Z1bmMpKHVuc2lnbmVkIGludCk7DQorICAgIHZvaWQJCSgqbV9GcmVlRnVuYykodm9pZCopOw0KK307DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyB2b2lkIF9lcnJvcl9mYXRhbDEoal9jb21tb25fcHRyIGNpbmZvKQ0KKyAgICB7DQorICAgICAgICBsb25nam1wKCgoRlhKUEVHX0NvbnRleHQqKWNpbmZvLT5jbGllbnRfZGF0YSktPm1fSnVtcE1hcmssIC0xKTsNCisgICAgfQ0KK307DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyB2b2lkIF9zcmNfc2tpcF9kYXRhMShzdHJ1Y3QganBlZ19kZWNvbXByZXNzX3N0cnVjdCogY2luZm8sIGxvbmcgbnVtKQ0KKyAgICB7DQorICAgICAgICBpZiAoY2luZm8tPnNyYy0+Ynl0ZXNfaW5fYnVmZmVyIDwgKHNpemVfdCludW0pIHsNCisgICAgICAgICAgICAoKEZYSlBFR19Db250ZXh0KiljaW5mby0+Y2xpZW50X2RhdGEpLT5tX1NraXBTaXplID0gKHVuc2lnbmVkIGludCkobnVtIC0gY2luZm8tPnNyYy0+Ynl0ZXNfaW5fYnVmZmVyKTsNCisgICAgICAgICAgICBjaW5mby0+c3JjLT5ieXRlc19pbl9idWZmZXIgPSAwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBjaW5mby0+c3JjLT5uZXh0X2lucHV0X2J5dGUgKz0gbnVtOw0KKyAgICAgICAgICAgIGNpbmZvLT5zcmMtPmJ5dGVzX2luX2J1ZmZlciAtPSBudW07DQorICAgICAgICB9DQorICAgIH0NCit9Ow0KK3N0YXRpYyB2b2lkKiBqcGVnX2FsbG9jX2Z1bmModW5zaWduZWQgaW50IHNpemUpDQorew0KKyAgICByZXR1cm4gRlhfQWxsb2MoY2hhciwgc2l6ZSk7DQorfQ0KK3N0YXRpYyB2b2lkIGpwZWdfZnJlZV9mdW5jKHZvaWQqIHApDQorew0KKyAgICBGWF9GcmVlKHApOw0KK30NCit2b2lkKiBDQ29kZWNfSnBlZ01vZHVsZTo6U3RhcnQoKQ0KK3sNCisgICAgaWYgKG1fcEV4dFByb3ZpZGVyKSB7DQorICAgICAgICByZXR1cm4gbV9wRXh0UHJvdmlkZXItPlN0YXJ0KCk7DQorICAgIH0NCisgICAgRlhKUEVHX0NvbnRleHQqIHAgPSAoRlhKUEVHX0NvbnRleHQqKUZYX0FsbG9jKEZYX0JZVEUsIHNpemVvZihGWEpQRUdfQ29udGV4dCkpOw0KKyAgICBpZiAocCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwLT5tX0FsbG9jRnVuYyA9IGpwZWdfYWxsb2NfZnVuYzsNCisgICAgcC0+bV9GcmVlRnVuYyA9IGpwZWdfZnJlZV9mdW5jOw0KKyAgICBwLT5tX0Vyck1nci5lcnJvcl9leGl0ID0gX2Vycm9yX2ZhdGFsMTsNCisgICAgcC0+bV9FcnJNZ3IuZW1pdF9tZXNzYWdlID0gX2Vycm9yX2RvX25vdGhpbmcxOw0KKyAgICBwLT5tX0Vyck1nci5vdXRwdXRfbWVzc2FnZSA9IF9lcnJvcl9kb19ub3RoaW5nOw0KKyAgICBwLT5tX0Vyck1nci5mb3JtYXRfbWVzc2FnZSA9IF9lcnJvcl9kb19ub3RoaW5nMjsNCisgICAgcC0+bV9FcnJNZ3IucmVzZXRfZXJyb3JfbWdyID0gX2Vycm9yX2RvX25vdGhpbmc7DQorICAgIHAtPm1fU3JjTWdyLmluaXRfc291cmNlID0gX3NyY19kb19ub3RoaW5nOw0KKyAgICBwLT5tX1NyY01nci50ZXJtX3NvdXJjZSA9IF9zcmNfZG9fbm90aGluZzsNCisgICAgcC0+bV9TcmNNZ3Iuc2tpcF9pbnB1dF9kYXRhID0gX3NyY19za2lwX2RhdGExOw0KKyAgICBwLT5tX1NyY01nci5maWxsX2lucHV0X2J1ZmZlciA9IF9zcmNfZmlsbF9idWZmZXI7DQorICAgIHAtPm1fU3JjTWdyLnJlc3luY190b19yZXN0YXJ0ID0gX3NyY19yZXN5bmM7DQorICAgIHAtPm1fSW5mby5jbGllbnRfZGF0YSA9IHA7DQorICAgIHAtPm1fSW5mby5lcnIgPSAmcC0+bV9FcnJNZ3I7DQorICAgIGlmIChzZXRqbXAocC0+bV9KdW1wTWFyaykgPT0gLTEpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGpwZWdfY3JlYXRlX2RlY29tcHJlc3MoJnAtPm1fSW5mbyk7DQorICAgIHAtPm1fSW5mby5zcmMgPSAmcC0+bV9TcmNNZ3I7DQorICAgIHAtPm1fU2tpcFNpemUgPSAwOw0KKyAgICByZXR1cm4gcDsNCit9DQordm9pZCBDQ29kZWNfSnBlZ01vZHVsZTo6RmluaXNoKHZvaWQqIHBDb250ZXh0KQ0KK3sNCisgICAgaWYgKG1fcEV4dFByb3ZpZGVyKSB7DQorICAgICAgICBtX3BFeHRQcm92aWRlci0+RmluaXNoKHBDb250ZXh0KTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWEpQRUdfQ29udGV4dCogcCA9IChGWEpQRUdfQ29udGV4dCopcENvbnRleHQ7DQorICAgIGpwZWdfZGVzdHJveV9kZWNvbXByZXNzKCZwLT5tX0luZm8pOw0KKyAgICBwLT5tX0ZyZWVGdW5jKHApOw0KK30NCit2b2lkIENDb2RlY19KcGVnTW9kdWxlOjpJbnB1dCh2b2lkKiBwQ29udGV4dCwgY29uc3QgdW5zaWduZWQgY2hhciogc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUpDQorew0KKyAgICBpZiAobV9wRXh0UHJvdmlkZXIpIHsNCisgICAgICAgIG1fcEV4dFByb3ZpZGVyLT5JbnB1dChwQ29udGV4dCwgc3JjX2J1Ziwgc3JjX3NpemUpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYSlBFR19Db250ZXh0KiBwID0gKEZYSlBFR19Db250ZXh0KilwQ29udGV4dDsNCisgICAgaWYgKHAtPm1fU2tpcFNpemUpIHsNCisgICAgICAgIGlmIChwLT5tX1NraXBTaXplID4gc3JjX3NpemUpIHsNCisgICAgICAgICAgICBwLT5tX1NyY01nci5ieXRlc19pbl9idWZmZXIgPSAwOw0KKyAgICAgICAgICAgIHAtPm1fU2tpcFNpemUgLT0gc3JjX3NpemU7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3JjX3NpemUgLT0gcC0+bV9Ta2lwU2l6ZTsNCisgICAgICAgIHNyY19idWYgKz0gcC0+bV9Ta2lwU2l6ZTsNCisgICAgICAgIHAtPm1fU2tpcFNpemUgPSAwOw0KKyAgICB9DQorICAgIHAtPm1fU3JjTWdyLm5leHRfaW5wdXRfYnl0ZSA9IHNyY19idWY7DQorICAgIHAtPm1fU3JjTWdyLmJ5dGVzX2luX2J1ZmZlciA9IHNyY19zaXplOw0KK30NCitpbnQgQ0NvZGVjX0pwZWdNb2R1bGU6OlJlYWRIZWFkZXIodm9pZCogcENvbnRleHQsIGludCogd2lkdGgsIGludCogaGVpZ2h0LCBpbnQqIG5Db21wcykNCit7DQorICAgIGlmIChtX3BFeHRQcm92aWRlcikgew0KKyAgICAgICAgcmV0dXJuIG1fcEV4dFByb3ZpZGVyLT5SZWFkSGVhZGVyKHBDb250ZXh0LCB3aWR0aCwgaGVpZ2h0LCBuQ29tcHMpOw0KKyAgICB9DQorICAgIEZYSlBFR19Db250ZXh0KiBwID0gKEZYSlBFR19Db250ZXh0KilwQ29udGV4dDsNCisgICAgaWYgKHNldGptcChwLT5tX0p1bXBNYXJrKSA9PSAtMSkgew0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgaW50IHJldCA9IGpwZWdfcmVhZF9oZWFkZXIoJnAtPm1fSW5mbywgdHJ1ZSk7DQorICAgIGlmIChyZXQgPT0gSlBFR19TVVNQRU5ERUQpIHsNCisgICAgICAgIHJldHVybiAyOw0KKyAgICB9DQorICAgIGlmIChyZXQgIT0gSlBFR19IRUFERVJfT0spIHsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgICp3aWR0aCA9IHAtPm1fSW5mby5pbWFnZV93aWR0aDsNCisgICAgKmhlaWdodCA9IHAtPm1fSW5mby5pbWFnZV9oZWlnaHQ7DQorICAgICpuQ29tcHMgPSBwLT5tX0luZm8ubnVtX2NvbXBvbmVudHM7DQorICAgIHJldHVybiAwOw0KK30NCitGWF9CT09MIENDb2RlY19KcGVnTW9kdWxlOjpTdGFydFNjYW5saW5lKHZvaWQqIHBDb250ZXh0LCBpbnQgZG93bl9zY2FsZSkNCit7DQorICAgIGlmIChtX3BFeHRQcm92aWRlcikgew0KKyAgICAgICAgcmV0dXJuIG1fcEV4dFByb3ZpZGVyLT5TdGFydFNjYW5saW5lKHBDb250ZXh0LCBkb3duX3NjYWxlKTsNCisgICAgfQ0KKyAgICBGWEpQRUdfQ29udGV4dCogcCA9IChGWEpQRUdfQ29udGV4dCopcENvbnRleHQ7DQorICAgIGlmIChzZXRqbXAocC0+bV9KdW1wTWFyaykgPT0gLTEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBwLT5tX0luZm8uc2NhbGVfZGVub20gPSBkb3duX3NjYWxlOw0KKyAgICByZXR1cm4ganBlZ19zdGFydF9kZWNvbXByZXNzKCZwLT5tX0luZm8pOw0KK30NCitGWF9CT09MIENDb2RlY19KcGVnTW9kdWxlOjpSZWFkU2NhbmxpbmUodm9pZCogcENvbnRleHQsIHVuc2lnbmVkIGNoYXIqIGRlc3RfYnVmKQ0KK3sNCisgICAgaWYgKG1fcEV4dFByb3ZpZGVyKSB7DQorICAgICAgICByZXR1cm4gbV9wRXh0UHJvdmlkZXItPlJlYWRTY2FubGluZShwQ29udGV4dCwgZGVzdF9idWYpOw0KKyAgICB9DQorICAgIEZYSlBFR19Db250ZXh0KiBwID0gKEZYSlBFR19Db250ZXh0KilwQ29udGV4dDsNCisgICAgaWYgKHNldGptcChwLT5tX0p1bXBNYXJrKSA9PSAtMSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGludCBubGluZXMgPSBqcGVnX3JlYWRfc2NhbmxpbmVzKCZwLT5tX0luZm8sICZkZXN0X2J1ZiwgMSk7DQorICAgIHJldHVybiBubGluZXMgPT0gMTsNCit9DQorRlhfRFdPUkQgQ0NvZGVjX0pwZWdNb2R1bGU6OkdldEF2YWlsSW5wdXQodm9pZCogcENvbnRleHQsIEZYX0xQQllURSogYXZhaWxfYnVmX3B0cikNCit7DQorICAgIGlmIChtX3BFeHRQcm92aWRlcikgew0KKyAgICAgICAgcmV0dXJuIG1fcEV4dFByb3ZpZGVyLT5HZXRBdmFpbElucHV0KHBDb250ZXh0LCBhdmFpbF9idWZfcHRyKTsNCisgICAgfQ0KKyAgICBpZihhdmFpbF9idWZfcHRyICE9IE5VTEwpIHsNCisgICAgICAgICphdmFpbF9idWZfcHRyID0gTlVMTDsNCisgICAgICAgIGlmKCgoRlhKUEVHX0NvbnRleHQqKXBDb250ZXh0KS0+bV9TcmNNZ3IuYnl0ZXNfaW5fYnVmZmVyID4gMCkgew0KKyAgICAgICAgICAgICphdmFpbF9idWZfcHRyID0gKEZYX0xQQllURSkoKEZYSlBFR19Db250ZXh0KilwQ29udGV4dCktPm1fU3JjTWdyLm5leHRfaW5wdXRfYnl0ZTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gKEZYX0RXT1JEKSgoRlhKUEVHX0NvbnRleHQqKXBDb250ZXh0KS0+bV9TcmNNZ3IuYnl0ZXNfaW5fYnVmZmVyOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2NvZGVjL2Z4X2NvZGVjX2pweF9vcGouY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19qcHhfb3BqLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjM4MTlmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9jb2RlYy9meF9jb2RlY19qcHhfb3BqLmNwcApAQCAtMCwwICsxLDc5OSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjb2RlYy9meF9jb2RlYy5oIg0KKyNpbmNsdWRlICJjb2RlY19pbnQuaCINCisjaW5jbHVkZSAiLi4vZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGVuanBlZy5oIg0KKyNpbmNsdWRlICIuLi9sY21zMi9pbmNsdWRlL2Z4X2xjbXMyLmgiDQorc3RhdGljIHZvaWQgZnhfZXJyb3JfY2FsbGJhY2soY29uc3QgY2hhciAqbXNnLCB2b2lkICpjbGllbnRfZGF0YSkNCit7DQorICAgICh2b2lkKWNsaWVudF9kYXRhOw0KK30NCitzdGF0aWMgdm9pZCBmeF93YXJuaW5nX2NhbGxiYWNrKGNvbnN0IGNoYXIgKm1zZywgdm9pZCAqY2xpZW50X2RhdGEpDQorew0KKyAgICAodm9pZCljbGllbnRfZGF0YTsNCit9DQorc3RhdGljIHZvaWQgZnhfaW5mb19jYWxsYmFjayhjb25zdCBjaGFyICptc2csIHZvaWQgKmNsaWVudF9kYXRhKQ0KK3sNCisgICAgKHZvaWQpY2xpZW50X2RhdGE7DQorfQ0KK3R5cGVkZWYgc3RydWN0IHsNCisgICAgY29uc3QgdW5zaWduZWQgY2hhciogc3JjX2RhdGE7DQorICAgIGludAkJCQkJIHNyY19zaXplOw0KKyAgICBpbnQJCQkJCSBvZmZzZXQ7DQorfSBkZWNvZGVEYXRhOw0KK3N0YXRpYyBPUEpfU0laRV9UIG9wal9yZWFkX2Zyb21fbWVtb3J5ICh2b2lkICogcF9idWZmZXIsIE9QSl9TSVpFX1QgcF9uYl9ieXRlcywgIGRlY29kZURhdGEqIHNyY0RhdGEpDQorew0KKyAgICBpZihzcmNEYXRhID09IE5VTEwgfHwgc3JjRGF0YS0+c3JjX3NpemUgPT0gMCB8fCBzcmNEYXRhLT5zcmNfZGF0YSA9PSBOVUxMIHx8IHNyY0RhdGEtPm9mZnNldCA+PSBzcmNEYXRhLT5zcmNfc2l6ZSkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIE9QSl9TSVpFX1QgcmVhZGxlbmd0aCA9IHBfbmJfYnl0ZXM7DQorICAgIE9QSl9TSVpFX1QgYnVmZmVyTGVuZ3RoID0gKE9QSl9TSVpFX1QpKHNyY0RhdGEtPnNyY19zaXplIC0gc3JjRGF0YS0+b2Zmc2V0KTsNCisgICAgaWYoYnVmZmVyTGVuZ3RoIDw9IDApIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmKGJ1ZmZlckxlbmd0aCA8PSBwX25iX2J5dGVzKSB7DQorICAgICAgICByZWFkbGVuZ3RoID0gYnVmZmVyTGVuZ3RoOw0KKyAgICB9DQorICAgIG1lbWNweShwX2J1ZmZlciwgJihzcmNEYXRhLT5zcmNfZGF0YVtzcmNEYXRhLT5vZmZzZXRdKSwgcmVhZGxlbmd0aCk7DQorICAgIHNyY0RhdGEtPm9mZnNldCArPSAoaW50KXJlYWRsZW5ndGg7DQorICAgIHJldHVybiByZWFkbGVuZ3RoOw0KK30NCitzdGF0aWMgT1BKX1NJWkVfVCBvcGpfd3JpdGVfZnJvbV9tZW1vcnkgKHZvaWQgKiBwX2J1ZmZlciwgT1BKX1NJWkVfVCBwX25iX2J5dGVzLCBkZWNvZGVEYXRhKiBzcmNEYXRhKQ0KK3sNCisgICAgaWYoc3JjRGF0YSA9PSBOVUxMIHx8IHNyY0RhdGEtPnNyY19zaXplID09IDAgfHwgc3JjRGF0YS0+c3JjX2RhdGEgPT0gTlVMTCB8fCBzcmNEYXRhLT5vZmZzZXQgPj0gc3JjRGF0YS0+c3JjX3NpemUpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBPUEpfU0laRV9UIHdyaXRlTGVuZ3RoID0gcF9uYl9ieXRlczsNCisgICAgT1BKX1NJWkVfVCBidWZmZXJMZW5ndGggPSAoT1BKX1NJWkVfVCkoc3JjRGF0YS0+c3JjX3NpemUgLSBzcmNEYXRhLT5vZmZzZXQpOw0KKyAgICBpZihidWZmZXJMZW5ndGggPD0gcF9uYl9ieXRlcykgew0KKyAgICAgICAgd3JpdGVMZW5ndGggPSBidWZmZXJMZW5ndGg7DQorICAgIH0NCisgICAgbWVtY3B5KCh2b2lkKiYpKHNyY0RhdGEtPnNyY19kYXRhW3NyY0RhdGEtPm9mZnNldF0pLCBwX2J1ZmZlciwgd3JpdGVMZW5ndGgpOw0KKyAgICBzcmNEYXRhLT5vZmZzZXQgKz0gKGludCl3cml0ZUxlbmd0aDsNCisgICAgcmV0dXJuIHdyaXRlTGVuZ3RoOw0KK30NCitzdGF0aWMgT1BKX09GRl9UIG9wal9za2lwX2Zyb21fbWVtb3J5IChPUEpfT0ZGX1QgcF9uYl9ieXRlcywgZGVjb2RlRGF0YSogc3JjRGF0YSkNCit7DQorICAgIGlmKHNyY0RhdGEgPT0gTlVMTCB8fCBzcmNEYXRhLT5zcmNfc2l6ZSA9PSAwIHx8IHNyY0RhdGEtPnNyY19kYXRhID09IE5VTEwgfHwgc3JjRGF0YS0+b2Zmc2V0ID49IHNyY0RhdGEtPnNyY19zaXplKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgT1BKX09GRl9UIHBvc3Rpb24gPSBzcmNEYXRhLT5vZmZzZXQgKyBwX25iX2J5dGVzOw0KKyAgICBpZihwb3N0aW9uIDwgMCApIHsNCisgICAgICAgIHBvc3Rpb24gPSAwOw0KKyAgICB9IGVsc2UgaWYgKHBvc3Rpb24gPiBzcmNEYXRhLT5zcmNfc2l6ZSkgew0KKyAgICB9DQorICAgIHNyY0RhdGEtPm9mZnNldCA9IChpbnQpcG9zdGlvbjsNCisgICAgcmV0dXJuIHBfbmJfYnl0ZXM7DQorfQ0KK3N0YXRpYyBPUEpfQk9PTCBvcGpfc2Vla19mcm9tX21lbW9yeSAoT1BKX09GRl9UIHBfbmJfYnl0ZXMsIGRlY29kZURhdGEgKiBzcmNEYXRhKQ0KK3sNCisgICAgaWYoc3JjRGF0YSA9PSBOVUxMIHx8IHNyY0RhdGEtPnNyY19zaXplID09IDAgfHwgc3JjRGF0YS0+c3JjX2RhdGEgPT0gTlVMTCB8fCBzcmNEYXRhLT5vZmZzZXQgPj0gc3JjRGF0YS0+c3JjX3NpemUpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBzcmNEYXRhLT5vZmZzZXQgPSAoaW50KXBfbmJfYnl0ZXM7DQorICAgIGlmKHNyY0RhdGEtPm9mZnNldCA8IDApIHsNCisgICAgICAgIHNyY0RhdGEtPm9mZnNldCA9IDA7DQorICAgIH0gZWxzZSBpZihzcmNEYXRhLT5vZmZzZXQgPiBzcmNEYXRhLT5zcmNfc2l6ZSkgew0KKyAgICAgICAgc3JjRGF0YS0+b2Zmc2V0ID0gc3JjRGF0YS0+c3JjX3NpemU7DQorICAgIH0NCisgICAgcmV0dXJuIE9QSl9UUlVFOw0KK30NCitvcGpfc3RyZWFtX3QqIGZ4X29wal9zdHJlYW1fY3JlYXRlX21lbW9yeV9zdHJlYW0gKGRlY29kZURhdGEqIGRhdGEsCU9QSl9TSVpFX1QgcF9zaXplLCAJT1BKX0JPT0wgcF9pc19yZWFkX3N0cmVhbSkNCit7DQorICAgIG9wal9zdHJlYW1fdCogbF9zdHJlYW0gPSAwMDsNCisgICAgaWYgKCFkYXRhIHx8ICEgZGF0YS0+c3JjX2RhdGEgfHwgZGF0YS0+c3JjX3NpemUgPD0gMCApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGxfc3RyZWFtID0gb3BqX3N0cmVhbV9jcmVhdGUocF9zaXplLCBwX2lzX3JlYWRfc3RyZWFtKTsNCisgICAgaWYgKCEgbF9zdHJlYW0pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIG9wal9zdHJlYW1fc2V0X3VzZXJfZGF0YV92MyhsX3N0cmVhbSwgZGF0YSwgTlVMTCk7DQorICAgIG9wal9zdHJlYW1fc2V0X3VzZXJfZGF0YV9sZW5ndGgobF9zdHJlYW0sIGRhdGEtPnNyY19zaXplKTsNCisgICAgb3BqX3N0cmVhbV9zZXRfcmVhZF9mdW5jdGlvbihsX3N0cmVhbSwgKG9wal9zdHJlYW1fcmVhZF9mbikgb3BqX3JlYWRfZnJvbV9tZW1vcnkpOw0KKyAgICBvcGpfc3RyZWFtX3NldF93cml0ZV9mdW5jdGlvbihsX3N0cmVhbSwgKG9wal9zdHJlYW1fd3JpdGVfZm4pIG9wal93cml0ZV9mcm9tX21lbW9yeSk7DQorICAgIG9wal9zdHJlYW1fc2V0X3NraXBfZnVuY3Rpb24obF9zdHJlYW0sIChvcGpfc3RyZWFtX3NraXBfZm4pIG9wal9za2lwX2Zyb21fbWVtb3J5KTsNCisgICAgb3BqX3N0cmVhbV9zZXRfc2Vla19mdW5jdGlvbihsX3N0cmVhbSwgKG9wal9zdHJlYW1fc2Vla19mbikgb3BqX3NlZWtfZnJvbV9tZW1vcnkpOw0KKyAgICByZXR1cm4gbF9zdHJlYW07DQorfQ0KK3N0YXRpYyB2b2lkIHN5Y2NfdG9fcmdiKGludCBvZmZzZXQsIGludCB1cGIsIGludCB5LCBpbnQgY2IsIGludCBjciwNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm91dF9yLCBpbnQgKm91dF9nLCBpbnQgKm91dF9iKQ0KK3sNCisgICAgaW50IHIsIGcsIGI7DQorICAgIGNiIC09IG9mZnNldDsNCisgICAgY3IgLT0gb2Zmc2V0Ow0KKyAgICByID0geSArIChpbnQpKDEuNDAyICogKGZsb2F0KWNyKTsNCisgICAgaWYociA8IDApIHsNCisgICAgICAgIHIgPSAwOw0KKyAgICB9IGVsc2UgaWYociA+IHVwYikgew0KKyAgICAgICAgciA9IHVwYjsNCisgICAgfSAqb3V0X3IgPSByOw0KKyAgICBnID0geSAtIChpbnQpKDAuMzQ0ICogKGZsb2F0KWNiICsgMC43MTQgKiAoZmxvYXQpY3IpOw0KKyAgICBpZihnIDwgMCkgew0KKyAgICAgICAgZyA9IDA7DQorICAgIH0gZWxzZSBpZihnID4gdXBiKSB7DQorICAgICAgICBnID0gdXBiOw0KKyAgICB9ICpvdXRfZyA9IGc7DQorICAgIGIgPSB5ICsgKGludCkoMS43NzIgKiAoZmxvYXQpY2IpOw0KKyAgICBpZihiIDwgMCkgew0KKyAgICAgICAgYiA9IDA7DQorICAgIH0gZWxzZSBpZihiID4gdXBiKSB7DQorICAgICAgICBiID0gdXBiOw0KKyAgICB9ICpvdXRfYiA9IGI7DQorfQ0KK3N0YXRpYyB2b2lkIHN5Y2M0NDRfdG9fcmdiKG9wal9pbWFnZV90ICppbWcpDQorew0KKyAgICBpbnQgKmQwLCAqZDEsICpkMiwgKnIsICpnLCAqYjsNCisgICAgY29uc3QgaW50ICp5LCAqY2IsICpjcjsNCisgICAgaW50IG1heHcsIG1heGgsIG1heCwgaSwgb2Zmc2V0LCB1cGI7DQorICAgIGkgPSAoaW50KWltZy0+Y29tcHNbMF0ucHJlYzsNCisgICAgb2Zmc2V0ID0gMSA8PCAoaSAtIDEpOw0KKyAgICB1cGIgPSAoMSA8PCBpKSAtIDE7DQorICAgIG1heHcgPSAoaW50KWltZy0+Y29tcHNbMF0udzsNCisgICAgbWF4aCA9IChpbnQpaW1nLT5jb21wc1swXS5oOw0KKyAgICBtYXggPSBtYXh3ICogbWF4aDsNCisgICAgeSA9IGltZy0+Y29tcHNbMF0uZGF0YTsNCisgICAgY2IgPSBpbWctPmNvbXBzWzFdLmRhdGE7DQorICAgIGNyID0gaW1nLT5jb21wc1syXS5kYXRhOw0KKyAgICBkMCA9IHIgPSBGWF9BbGxvYyhpbnQsIChzaXplX3QpbWF4KTsNCisgICAgZDEgPSBnID0gRlhfQWxsb2MoaW50LCAoc2l6ZV90KW1heCk7DQorICAgIGQyID0gYiA9IEZYX0FsbG9jKGludCwgKHNpemVfdCltYXgpOw0KKyAgICBmb3IoaSA9IDA7IGkgPCBtYXg7ICsraSkgew0KKyAgICAgICAgc3ljY190b19yZ2Iob2Zmc2V0LCB1cGIsICp5LCAqY2IsICpjciwgciwgZywgYik7DQorICAgICAgICArK3k7DQorICAgICAgICArK2NiOw0KKyAgICAgICAgKytjcjsNCisgICAgICAgICsrcjsNCisgICAgICAgICsrZzsNCisgICAgICAgICsrYjsNCisgICAgfQ0KKyAgICBGWF9GcmVlKGltZy0+Y29tcHNbMF0uZGF0YSk7DQorICAgIGltZy0+Y29tcHNbMF0uZGF0YSA9IGQwOw0KKyAgICBGWF9GcmVlKGltZy0+Y29tcHNbMV0uZGF0YSk7DQorICAgIGltZy0+Y29tcHNbMV0uZGF0YSA9IGQxOw0KKyAgICBGWF9GcmVlKGltZy0+Y29tcHNbMl0uZGF0YSk7DQorICAgIGltZy0+Y29tcHNbMl0uZGF0YSA9IGQyOw0KK30NCitzdGF0aWMgdm9pZCBzeWNjNDIyX3RvX3JnYihvcGpfaW1hZ2VfdCAqaW1nKQ0KK3sNCisgICAgaW50ICpkMCwgKmQxLCAqZDIsICpyLCAqZywgKmI7DQorICAgIGNvbnN0IGludCAqeSwgKmNiLCAqY3I7DQorICAgIGludCBtYXh3LCBtYXhoLCBtYXgsIG9mZnNldCwgdXBiOw0KKyAgICBpbnQgaSwgajsNCisgICAgaSA9IChpbnQpaW1nLT5jb21wc1swXS5wcmVjOw0KKyAgICBvZmZzZXQgPSAxIDw8IChpIC0gMSk7DQorICAgIHVwYiA9ICgxIDw8IGkpIC0gMTsNCisgICAgbWF4dyA9IChpbnQpaW1nLT5jb21wc1swXS53Ow0KKyAgICBtYXhoID0gKGludClpbWctPmNvbXBzWzBdLmg7DQorICAgIG1heCA9IG1heHcgKiBtYXhoOw0KKyAgICB5ID0gaW1nLT5jb21wc1swXS5kYXRhOw0KKyAgICBjYiA9IGltZy0+Y29tcHNbMV0uZGF0YTsNCisgICAgY3IgPSBpbWctPmNvbXBzWzJdLmRhdGE7DQorICAgIGQwID0gciA9IEZYX0FsbG9jKGludCwgKHNpemVfdCltYXgpOw0KKyAgICBkMSA9IGcgPSBGWF9BbGxvYyhpbnQsIChzaXplX3QpbWF4KTsNCisgICAgZDIgPSBiID0gRlhfQWxsb2MoaW50LCAoc2l6ZV90KW1heCk7DQorICAgIGZvcihpID0gMDsgaSA8IG1heGg7ICsraSkgew0KKyAgICAgICAgZm9yKGogPSAwOyBqIDwgbWF4dzsgaiArPSAyKSB7DQorICAgICAgICAgICAgc3ljY190b19yZ2Iob2Zmc2V0LCB1cGIsICp5LCAqY2IsICpjciwgciwgZywgYik7DQorICAgICAgICAgICAgKyt5Ow0KKyAgICAgICAgICAgICsrcjsNCisgICAgICAgICAgICArK2c7DQorICAgICAgICAgICAgKytiOw0KKyAgICAgICAgICAgIHN5Y2NfdG9fcmdiKG9mZnNldCwgdXBiLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOw0KKyAgICAgICAgICAgICsreTsNCisgICAgICAgICAgICArK3I7DQorICAgICAgICAgICAgKytnOw0KKyAgICAgICAgICAgICsrYjsNCisgICAgICAgICAgICArK2NiOw0KKyAgICAgICAgICAgICsrY3I7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfRnJlZShpbWctPmNvbXBzWzBdLmRhdGEpOw0KKyAgICBpbWctPmNvbXBzWzBdLmRhdGEgPSBkMDsNCisgICAgRlhfRnJlZShpbWctPmNvbXBzWzFdLmRhdGEpOw0KKyAgICBpbWctPmNvbXBzWzFdLmRhdGEgPSBkMTsNCisgICAgRlhfRnJlZShpbWctPmNvbXBzWzJdLmRhdGEpOw0KKyAgICBpbWctPmNvbXBzWzJdLmRhdGEgPSBkMjsNCisgICAgaW1nLT5jb21wc1sxXS53ID0gbWF4dzsNCisgICAgaW1nLT5jb21wc1sxXS5oID0gbWF4aDsNCisgICAgaW1nLT5jb21wc1syXS53ID0gbWF4dzsNCisgICAgaW1nLT5jb21wc1syXS5oID0gbWF4aDsNCisgICAgaW1nLT5jb21wc1sxXS53ID0gKE9QSl9VSU5UMzIpbWF4dzsNCisgICAgaW1nLT5jb21wc1sxXS5oID0gKE9QSl9VSU5UMzIpbWF4aDsNCisgICAgaW1nLT5jb21wc1syXS53ID0gKE9QSl9VSU5UMzIpbWF4dzsNCisgICAgaW1nLT5jb21wc1syXS5oID0gKE9QSl9VSU5UMzIpbWF4aDsNCisgICAgaW1nLT5jb21wc1sxXS5keCA9IGltZy0+Y29tcHNbMF0uZHg7DQorICAgIGltZy0+Y29tcHNbMl0uZHggPSBpbWctPmNvbXBzWzBdLmR4Ow0KKyAgICBpbWctPmNvbXBzWzFdLmR5ID0gaW1nLT5jb21wc1swXS5keTsNCisgICAgaW1nLT5jb21wc1syXS5keSA9IGltZy0+Y29tcHNbMF0uZHk7DQorfQ0KK3N0YXRpYyB2b2lkIHN5Y2M0MjBfdG9fcmdiKG9wal9pbWFnZV90ICppbWcpDQorew0KKyAgICBpbnQgKmQwLCAqZDEsICpkMiwgKnIsICpnLCAqYiwgKm5yLCAqbmcsICpuYjsNCisgICAgY29uc3QgaW50ICp5LCAqY2IsICpjciwgKm55Ow0KKyAgICBpbnQgbWF4dywgbWF4aCwgbWF4LCBvZmZzZXQsIHVwYjsNCisgICAgaW50IGksIGo7DQorICAgIGkgPSAoaW50KWltZy0+Y29tcHNbMF0ucHJlYzsNCisgICAgb2Zmc2V0ID0gMSA8PCAoaSAtIDEpOw0KKyAgICB1cGIgPSAoMSA8PCBpKSAtIDE7DQorICAgIG1heHcgPSAoaW50KWltZy0+Y29tcHNbMF0udzsNCisgICAgbWF4aCA9IChpbnQpaW1nLT5jb21wc1swXS5oOw0KKyAgICBtYXggPSBtYXh3ICogbWF4aDsNCisgICAgeSA9IGltZy0+Y29tcHNbMF0uZGF0YTsNCisgICAgY2IgPSBpbWctPmNvbXBzWzFdLmRhdGE7DQorICAgIGNyID0gaW1nLT5jb21wc1syXS5kYXRhOw0KKyAgICBkMCA9IHIgPSBGWF9BbGxvYyhpbnQsIChzaXplX3QpbWF4KTsNCisgICAgZDEgPSBnID0gRlhfQWxsb2MoaW50LCAoc2l6ZV90KW1heCk7DQorICAgIGQyID0gYiA9IEZYX0FsbG9jKGludCwgKHNpemVfdCltYXgpOw0KKyAgICBmb3IoaSA9IDA7IGkgPCBtYXhoOyBpICs9IDIpIHsNCisgICAgICAgIG55ID0geSArIG1heHc7DQorICAgICAgICBuciA9IHIgKyBtYXh3Ow0KKyAgICAgICAgbmcgPSBnICsgbWF4dzsNCisgICAgICAgIG5iID0gYiArIG1heHc7DQorICAgICAgICBmb3IoaiA9IDA7IGogPCBtYXh3OyAgaiArPSAyKSB7DQorICAgICAgICAgICAgc3ljY190b19yZ2Iob2Zmc2V0LCB1cGIsICp5LCAqY2IsICpjciwgciwgZywgYik7DQorICAgICAgICAgICAgKyt5Ow0KKyAgICAgICAgICAgICsrcjsNCisgICAgICAgICAgICArK2c7DQorICAgICAgICAgICAgKytiOw0KKyAgICAgICAgICAgIHN5Y2NfdG9fcmdiKG9mZnNldCwgdXBiLCAqeSwgKmNiLCAqY3IsIHIsIGcsIGIpOw0KKyAgICAgICAgICAgICsreTsNCisgICAgICAgICAgICArK3I7DQorICAgICAgICAgICAgKytnOw0KKyAgICAgICAgICAgICsrYjsNCisgICAgICAgICAgICBzeWNjX3RvX3JnYihvZmZzZXQsIHVwYiwgKm55LCAqY2IsICpjciwgbnIsIG5nLCBuYik7DQorICAgICAgICAgICAgKytueTsNCisgICAgICAgICAgICArK25yOw0KKyAgICAgICAgICAgICsrbmc7DQorICAgICAgICAgICAgKytuYjsNCisgICAgICAgICAgICBzeWNjX3RvX3JnYihvZmZzZXQsIHVwYiwgKm55LCAqY2IsICpjciwgbnIsIG5nLCBuYik7DQorICAgICAgICAgICAgKytueTsNCisgICAgICAgICAgICArK25yOw0KKyAgICAgICAgICAgICsrbmc7DQorICAgICAgICAgICAgKytuYjsNCisgICAgICAgICAgICArK2NiOw0KKyAgICAgICAgICAgICsrY3I7DQorICAgICAgICB9DQorICAgICAgICB5ICs9IG1heHc7DQorICAgICAgICByICs9IG1heHc7DQorICAgICAgICBnICs9IG1heHc7DQorICAgICAgICBiICs9IG1heHc7DQorICAgIH0NCisgICAgRlhfRnJlZShpbWctPmNvbXBzWzBdLmRhdGEpOw0KKyAgICBpbWctPmNvbXBzWzBdLmRhdGEgPSBkMDsNCisgICAgRlhfRnJlZShpbWctPmNvbXBzWzFdLmRhdGEpOw0KKyAgICBpbWctPmNvbXBzWzFdLmRhdGEgPSBkMTsNCisgICAgRlhfRnJlZShpbWctPmNvbXBzWzJdLmRhdGEpOw0KKyAgICBpbWctPmNvbXBzWzJdLmRhdGEgPSBkMjsNCisgICAgaW1nLT5jb21wc1sxXS53ID0gbWF4dzsNCisgICAgaW1nLT5jb21wc1sxXS5oID0gbWF4aDsNCisgICAgaW1nLT5jb21wc1syXS53ID0gbWF4dzsNCisgICAgaW1nLT5jb21wc1syXS5oID0gbWF4aDsNCisgICAgaW1nLT5jb21wc1sxXS53ID0gKE9QSl9VSU5UMzIpbWF4dzsNCisgICAgaW1nLT5jb21wc1sxXS5oID0gKE9QSl9VSU5UMzIpbWF4aDsNCisgICAgaW1nLT5jb21wc1syXS53ID0gKE9QSl9VSU5UMzIpbWF4dzsNCisgICAgaW1nLT5jb21wc1syXS5oID0gKE9QSl9VSU5UMzIpbWF4aDsNCisgICAgaW1nLT5jb21wc1sxXS5keCA9IGltZy0+Y29tcHNbMF0uZHg7DQorICAgIGltZy0+Y29tcHNbMl0uZHggPSBpbWctPmNvbXBzWzBdLmR4Ow0KKyAgICBpbWctPmNvbXBzWzFdLmR5ID0gaW1nLT5jb21wc1swXS5keTsNCisgICAgaW1nLT5jb21wc1syXS5keSA9IGltZy0+Y29tcHNbMF0uZHk7DQorfQ0KK3ZvaWQgY29sb3Jfc3ljY190b19yZ2Iob3BqX2ltYWdlX3QgKmltZykNCit7DQorICAgIGlmKGltZy0+bnVtY29tcHMgPCAzKSB7DQorICAgICAgICBpbWctPmNvbG9yX3NwYWNlID0gT1BKX0NMUlNQQ19HUkFZOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmKChpbWctPmNvbXBzWzBdLmR4ID09IDEpDQorICAgICAgICAgICAgJiYgKGltZy0+Y29tcHNbMV0uZHggPT0gMikNCisgICAgICAgICAgICAmJiAoaW1nLT5jb21wc1syXS5keCA9PSAyKQ0KKyAgICAgICAgICAgICYmIChpbWctPmNvbXBzWzBdLmR5ID09IDEpDQorICAgICAgICAgICAgJiYgKGltZy0+Y29tcHNbMV0uZHkgPT0gMikNCisgICAgICAgICAgICAmJiAoaW1nLT5jb21wc1syXS5keSA9PSAyKSkgew0KKyAgICAgICAgc3ljYzQyMF90b19yZ2IoaW1nKTsNCisgICAgfSBlbHNlIGlmKChpbWctPmNvbXBzWzBdLmR4ID09IDEpDQorICAgICAgICAgICAgICAmJiAoaW1nLT5jb21wc1sxXS5keCA9PSAyKQ0KKyAgICAgICAgICAgICAgJiYgKGltZy0+Y29tcHNbMl0uZHggPT0gMikNCisgICAgICAgICAgICAgICYmIChpbWctPmNvbXBzWzBdLmR5ID09IDEpDQorICAgICAgICAgICAgICAmJiAoaW1nLT5jb21wc1sxXS5keSA9PSAxKQ0KKyAgICAgICAgICAgICAgJiYgKGltZy0+Y29tcHNbMl0uZHkgPT0gMSkpIHsNCisgICAgICAgIHN5Y2M0MjJfdG9fcmdiKGltZyk7DQorICAgIH0gZWxzZSBpZigoaW1nLT5jb21wc1swXS5keCA9PSAxKQ0KKyAgICAgICAgICAgICAgJiYgKGltZy0+Y29tcHNbMV0uZHggPT0gMSkNCisgICAgICAgICAgICAgICYmIChpbWctPmNvbXBzWzJdLmR4ID09IDEpDQorICAgICAgICAgICAgICAmJiAoaW1nLT5jb21wc1swXS5keSA9PSAxKQ0KKyAgICAgICAgICAgICAgJiYgKGltZy0+Y29tcHNbMV0uZHkgPT0gMSkNCisgICAgICAgICAgICAgICYmIChpbWctPmNvbXBzWzJdLmR5ID09IDEpKSB7DQorICAgICAgICBzeWNjNDQ0X3RvX3JnYihpbWcpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGltZy0+Y29sb3Jfc3BhY2UgPSBPUEpfQ0xSU1BDX1NSR0I7DQorfQ0KK3ZvaWQgY29sb3JfYXBwbHlfaWNjX3Byb2ZpbGUob3BqX2ltYWdlX3QgKmltYWdlKQ0KK3sNCisgICAgY21zSFBST0ZJTEUgaW5fcHJvZiwgb3V0X3Byb2Y7DQorICAgIGNtc0hUUkFOU0ZPUk0gdHJhbnNmb3JtOw0KKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIGluX3NwYWNlLCBvdXRfc3BhY2U7DQorICAgIGNtc1VJbnQzMk51bWJlciBpbnRlbnQsIGluX3R5cGUsIG91dF90eXBlLCBucl9zYW1wbGVzOw0KKyAgICBpbnQgKnIsICpnLCAqYjsNCisgICAgaW50IHByZWMsIGksIG1heCwgbWF4X3csIG1heF9oOw0KKyAgICBPUEpfQ09MT1JfU1BBQ0Ugb2xkc3BhY2U7DQorICAgIGluX3Byb2YgPQ0KKyAgICAgICAgY21zT3BlblByb2ZpbGVGcm9tTWVtKGltYWdlLT5pY2NfcHJvZmlsZV9idWYsIGltYWdlLT5pY2NfcHJvZmlsZV9sZW4pOw0KKyAgICBpZihpbl9wcm9mID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbl9zcGFjZSA9IGNtc0dldFBDUyhpbl9wcm9mKTsNCisgICAgb3V0X3NwYWNlID0gY21zR2V0Q29sb3JTcGFjZShpbl9wcm9mKTsNCisgICAgaW50ZW50ID0gY21zR2V0SGVhZGVyUmVuZGVyaW5nSW50ZW50KGluX3Byb2YpOw0KKyAgICBtYXhfdyA9IChpbnQpaW1hZ2UtPmNvbXBzWzBdLnc7DQorICAgIG1heF9oID0gKGludClpbWFnZS0+Y29tcHNbMF0uaDsNCisgICAgcHJlYyA9IChpbnQpaW1hZ2UtPmNvbXBzWzBdLnByZWM7DQorICAgIG9sZHNwYWNlID0gaW1hZ2UtPmNvbG9yX3NwYWNlOw0KKyAgICBpZihvdXRfc3BhY2UgPT0gY21zU2lnUmdiRGF0YSkgew0KKyAgICAgICAgaWYoIHByZWMgPD0gOCApIHsNCisgICAgICAgICAgICBpbl90eXBlID0gVFlQRV9SR0JfODsNCisgICAgICAgICAgICBvdXRfdHlwZSA9IFRZUEVfUkdCXzg7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGluX3R5cGUgPSBUWVBFX1JHQl8xNjsNCisgICAgICAgICAgICBvdXRfdHlwZSA9IFRZUEVfUkdCXzE2Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgb3V0X3Byb2YgPSBjbXNDcmVhdGVfc1JHQlByb2ZpbGUoKTsNCisgICAgICAgIGltYWdlLT5jb2xvcl9zcGFjZSA9IE9QSl9DTFJTUENfU1JHQjsNCisgICAgfSBlbHNlIGlmKG91dF9zcGFjZSA9PSBjbXNTaWdHcmF5RGF0YSkgew0KKyAgICAgICAgaWYoIHByZWMgPD0gOCApIHsNCisgICAgICAgICAgICBpbl90eXBlID0gVFlQRV9HUkFZXzg7DQorICAgICAgICAgICAgb3V0X3R5cGUgPSBUWVBFX1JHQl84Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpbl90eXBlID0gVFlQRV9HUkFZXzE2Ow0KKyAgICAgICAgICAgIG91dF90eXBlID0gVFlQRV9SR0JfMTY7DQorICAgICAgICB9DQorICAgICAgICBvdXRfcHJvZiA9IGNtc0NyZWF0ZV9zUkdCUHJvZmlsZSgpOw0KKyAgICAgICAgaW1hZ2UtPmNvbG9yX3NwYWNlID0gT1BKX0NMUlNQQ19TUkdCOw0KKyAgICB9IGVsc2UgaWYob3V0X3NwYWNlID09IGNtc1NpZ1lDYkNyRGF0YSkgew0KKyAgICAgICAgaW5fdHlwZSA9IFRZUEVfWUNiQ3JfMTY7DQorICAgICAgICBvdXRfdHlwZSA9IFRZUEVfUkdCXzE2Ow0KKyAgICAgICAgb3V0X3Byb2YgPSBjbXNDcmVhdGVfc1JHQlByb2ZpbGUoKTsNCisgICAgICAgIGltYWdlLT5jb2xvcl9zcGFjZSA9IE9QSl9DTFJTUENfU1JHQjsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICB0cmFuc2Zvcm0gPSBjbXNDcmVhdGVUcmFuc2Zvcm0oaW5fcHJvZiwgaW5fdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9wcm9mLCBvdXRfdHlwZSwgaW50ZW50LCAwKTsNCisgICAgY21zQ2xvc2VQcm9maWxlKGluX3Byb2YpOw0KKyAgICBjbXNDbG9zZVByb2ZpbGUob3V0X3Byb2YpOw0KKyAgICBpZih0cmFuc2Zvcm0gPT0gTlVMTCkgew0KKyAgICAgICAgaW1hZ2UtPmNvbG9yX3NwYWNlID0gb2xkc3BhY2U7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYoaW1hZ2UtPm51bWNvbXBzID4gMikgew0KKyAgICAgICAgaWYoIHByZWMgPD0gOCApIHsNCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICppbmJ1ZiwgKm91dGJ1ZiwgKmluLCAqb3V0Ow0KKyAgICAgICAgICAgIG1heCA9IG1heF93ICogbWF4X2g7DQorICAgICAgICAgICAgbnJfc2FtcGxlcyA9IChjbXNVSW50MzJOdW1iZXIpbWF4ICogMyAqIChjbXNVSW50MzJOdW1iZXIpc2l6ZW9mKHVuc2lnbmVkIGNoYXIpOw0KKyAgICAgICAgICAgIGluID0gaW5idWYgPSBGWF9BbGxvYyh1bnNpZ25lZCBjaGFyLCBucl9zYW1wbGVzKTsNCisgICAgICAgICAgICBvdXQgPSBvdXRidWYgPSBGWF9BbGxvYyh1bnNpZ25lZCBjaGFyLCBucl9zYW1wbGVzKTsNCisgICAgICAgICAgICByID0gaW1hZ2UtPmNvbXBzWzBdLmRhdGE7DQorICAgICAgICAgICAgZyA9IGltYWdlLT5jb21wc1sxXS5kYXRhOw0KKyAgICAgICAgICAgIGIgPSBpbWFnZS0+Y29tcHNbMl0uZGF0YTsNCisgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBtYXg7ICsraSkgew0KKyAgICAgICAgICAgICAgICAqaW4rKyA9ICh1bnNpZ25lZCBjaGFyKSAqIHIrKzsNCisgICAgICAgICAgICAgICAgKmluKysgPSAodW5zaWduZWQgY2hhcikgKiBnKys7DQorICAgICAgICAgICAgICAgICppbisrID0gKHVuc2lnbmVkIGNoYXIpICogYisrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjbXNEb1RyYW5zZm9ybSh0cmFuc2Zvcm0sIGluYnVmLCBvdXRidWYsIChjbXNVSW50MzJOdW1iZXIpbWF4KTsNCisgICAgICAgICAgICByID0gaW1hZ2UtPmNvbXBzWzBdLmRhdGE7DQorICAgICAgICAgICAgZyA9IGltYWdlLT5jb21wc1sxXS5kYXRhOw0KKyAgICAgICAgICAgIGIgPSBpbWFnZS0+Y29tcHNbMl0uZGF0YTsNCisgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBtYXg7ICsraSkgew0KKyAgICAgICAgICAgICAgICAqcisrID0gKGludCkgKiBvdXQrKzsNCisgICAgICAgICAgICAgICAgKmcrKyA9IChpbnQpICogb3V0Kys7DQorICAgICAgICAgICAgICAgICpiKysgPSAoaW50KSAqIG91dCsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9GcmVlKGluYnVmKTsNCisgICAgICAgICAgICBGWF9GcmVlKG91dGJ1Zik7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICppbmJ1ZiwgKm91dGJ1ZiwgKmluLCAqb3V0Ow0KKyAgICAgICAgICAgIG1heCA9IG1heF93ICogbWF4X2g7DQorICAgICAgICAgICAgbnJfc2FtcGxlcyA9IChjbXNVSW50MzJOdW1iZXIpbWF4ICogMyAqIChjbXNVSW50MzJOdW1iZXIpc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsNCisgICAgICAgICAgICBpbiA9IGluYnVmID0gRlhfQWxsb2ModW5zaWduZWQgc2hvcnQsIG5yX3NhbXBsZXMpOw0KKyAgICAgICAgICAgIG91dCA9IG91dGJ1ZiA9IEZYX0FsbG9jKHVuc2lnbmVkIHNob3J0LCBucl9zYW1wbGVzKTsNCisgICAgICAgICAgICByID0gaW1hZ2UtPmNvbXBzWzBdLmRhdGE7DQorICAgICAgICAgICAgZyA9IGltYWdlLT5jb21wc1sxXS5kYXRhOw0KKyAgICAgICAgICAgIGIgPSBpbWFnZS0+Y29tcHNbMl0uZGF0YTsNCisgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBtYXg7ICsraSkgew0KKyAgICAgICAgICAgICAgICAqaW4rKyA9ICh1bnNpZ25lZCBzaG9ydCkgKiByKys7DQorICAgICAgICAgICAgICAgICppbisrID0gKHVuc2lnbmVkIHNob3J0KSAqIGcrKzsNCisgICAgICAgICAgICAgICAgKmluKysgPSAodW5zaWduZWQgc2hvcnQpICogYisrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjbXNEb1RyYW5zZm9ybSh0cmFuc2Zvcm0sIGluYnVmLCBvdXRidWYsIChjbXNVSW50MzJOdW1iZXIpbWF4KTsNCisgICAgICAgICAgICByID0gaW1hZ2UtPmNvbXBzWzBdLmRhdGE7DQorICAgICAgICAgICAgZyA9IGltYWdlLT5jb21wc1sxXS5kYXRhOw0KKyAgICAgICAgICAgIGIgPSBpbWFnZS0+Y29tcHNbMl0uZGF0YTsNCisgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBtYXg7ICsraSkgew0KKyAgICAgICAgICAgICAgICAqcisrID0gKGludCkgKiBvdXQrKzsNCisgICAgICAgICAgICAgICAgKmcrKyA9IChpbnQpICogb3V0Kys7DQorICAgICAgICAgICAgICAgICpiKysgPSAoaW50KSAqIG91dCsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9GcmVlKGluYnVmKTsNCisgICAgICAgICAgICBGWF9GcmVlKG91dGJ1Zik7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICB1bnNpZ25lZCBjaGFyICppbiwgKmluYnVmLCAqb3V0LCAqb3V0YnVmOw0KKyAgICAgICAgbWF4ID0gbWF4X3cgKiBtYXhfaDsNCisgICAgICAgIG5yX3NhbXBsZXMgPSAoY21zVUludDMyTnVtYmVyKW1heCAqIDMgKiBzaXplb2YodW5zaWduZWQgY2hhcik7DQorICAgICAgICBpbiA9IGluYnVmID0gRlhfQWxsb2ModW5zaWduZWQgY2hhciwgbnJfc2FtcGxlcyk7DQorICAgICAgICBvdXQgPSBvdXRidWYgPSBGWF9BbGxvYyh1bnNpZ25lZCBjaGFyLCBucl9zYW1wbGVzKTsNCisgICAgICAgIGltYWdlLT5jb21wcyA9IChvcGpfaW1hZ2VfY29tcF90KikNCisgICAgICAgICAgICAgICAgICAgICAgIHJlYWxsb2MoaW1hZ2UtPmNvbXBzLCAoaW1hZ2UtPm51bWNvbXBzICsgMikgKiBzaXplb2Yob3BqX2ltYWdlX2NvbXBfdCkpOw0KKyAgICAgICAgaWYoaW1hZ2UtPm51bWNvbXBzID09IDIpIHsNCisgICAgICAgICAgICBpbWFnZS0+Y29tcHNbM10gPSBpbWFnZS0+Y29tcHNbMV07DQorICAgICAgICB9DQorICAgICAgICBpbWFnZS0+Y29tcHNbMV0gPSBpbWFnZS0+Y29tcHNbMF07DQorICAgICAgICBpbWFnZS0+Y29tcHNbMl0gPSBpbWFnZS0+Y29tcHNbMF07DQorICAgICAgICBpbWFnZS0+Y29tcHNbMV0uZGF0YSA9IEZYX0FsbG9jKGludCwgKHNpemVfdCltYXgpOw0KKyAgICAgICAgRlhTWVNfbWVtc2V0OChpbWFnZS0+Y29tcHNbMV0uZGF0YSwgMCwgc2l6ZW9mKGludCkgKiAoc2l6ZV90KW1heCk7DQorICAgICAgICBpbWFnZS0+Y29tcHNbMl0uZGF0YSA9IEZYX0FsbG9jKGludCwgKHNpemVfdCltYXgpOw0KKyAgICAgICAgRlhTWVNfbWVtc2V0OChpbWFnZS0+Y29tcHNbMl0uZGF0YSwgMCwgc2l6ZW9mKGludCkgKiAoc2l6ZV90KW1heCk7DQorICAgICAgICBpbWFnZS0+bnVtY29tcHMgKz0gMjsNCisgICAgICAgIHIgPSBpbWFnZS0+Y29tcHNbMF0uZGF0YTsNCisgICAgICAgIGZvcihpID0gMDsgaSA8IG1heDsgKytpKSB7DQorICAgICAgICAgICAgKmluKysgPSAodW5zaWduZWQgY2hhcikgKiByKys7DQorICAgICAgICB9DQorICAgICAgICBjbXNEb1RyYW5zZm9ybSh0cmFuc2Zvcm0sIGluYnVmLCBvdXRidWYsIChjbXNVSW50MzJOdW1iZXIpbWF4KTsNCisgICAgICAgIHIgPSBpbWFnZS0+Y29tcHNbMF0uZGF0YTsNCisgICAgICAgIGcgPSBpbWFnZS0+Y29tcHNbMV0uZGF0YTsNCisgICAgICAgIGIgPSBpbWFnZS0+Y29tcHNbMl0uZGF0YTsNCisgICAgICAgIGZvcihpID0gMDsgaSA8IG1heDsgKytpKSB7DQorICAgICAgICAgICAgKnIrKyA9IChpbnQpICogb3V0Kys7DQorICAgICAgICAgICAgKmcrKyA9IChpbnQpICogb3V0Kys7DQorICAgICAgICAgICAgKmIrKyA9IChpbnQpICogb3V0Kys7DQorICAgICAgICB9DQorICAgICAgICBGWF9GcmVlKGluYnVmKTsNCisgICAgICAgIEZYX0ZyZWUob3V0YnVmKTsNCisgICAgfQ0KKyAgICBjbXNEZWxldGVUcmFuc2Zvcm0odHJhbnNmb3JtKTsNCit9DQordm9pZCBjb2xvcl9hcHBseV9jb252ZXJzaW9uKG9wal9pbWFnZV90ICppbWFnZSkNCit7DQorICAgIGludCAqcm93Ow0KKyAgICBpbnQgZW51bWNzLCBudW1jb21wczsNCisgICAgbnVtY29tcHMgPSBpbWFnZS0+bnVtY29tcHM7DQorICAgIGlmKG51bWNvbXBzIDwgMykgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHJvdyA9IChpbnQqKWltYWdlLT5pY2NfcHJvZmlsZV9idWY7DQorICAgIGVudW1jcyA9IHJvd1swXTsNCisgICAgaWYoZW51bWNzID09IDE0KSB7DQorICAgICAgICBpbnQgKkwsICphLCAqYiwgKnJlZCwgKmdyZWVuLCAqYmx1ZSwgKnNyYzAsICpzcmMxLCAqc3JjMjsNCisgICAgICAgIGRvdWJsZSBybCwgb2wsIHJhLCBvYSwgcmIsIG9iLCBwcmVjMCwgcHJlYzEsIHByZWMyOw0KKyAgICAgICAgZG91YmxlIG1pbkwsIG1heEwsIG1pbmEsIG1heGEsIG1pbmIsIG1heGI7DQorICAgICAgICB1bnNpZ25lZCBpbnQgZGVmYXVsdF90eXBlLCBpbDsNCisgICAgICAgIHVuc2lnbmVkIGludCBpLCBtYXgsIGlsbHU7DQorICAgICAgICBjbXNIUFJPRklMRSBpbiwgb3V0Ow0KKyAgICAgICAgY21zSFRSQU5TRk9STSB0cmFuc2Zvcm07DQorICAgICAgICBjbXNVSW50MTZOdW1iZXIgUkdCWzNdOw0KKyAgICAgICAgY21zQ0lFTGFiIExhYjsNCisgICAgICAgIGlsbHUgPSAwOw0KKyAgICAgICAgaWwgPSAwOw0KKyAgICAgICAgaW4gPSBjbXNDcmVhdGVMYWI0UHJvZmlsZShOVUxMKTsNCisgICAgICAgIG91dCA9IGNtc0NyZWF0ZV9zUkdCUHJvZmlsZSgpOw0KKyAgICAgICAgdHJhbnNmb3JtID0NCisgICAgICAgICAgICBjbXNDcmVhdGVUcmFuc2Zvcm0oaW4sIFRZUEVfTGFiX0RCTCwgb3V0LCBUWVBFX1JHQl8xNiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URU5UX1BFUkNFUFRVQUwsIDApOw0KKyAgICAgICAgY21zQ2xvc2VQcm9maWxlKGluKTsNCisgICAgICAgIGNtc0Nsb3NlUHJvZmlsZShvdXQpOw0KKyAgICAgICAgaWYodHJhbnNmb3JtID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBwcmVjMCA9IChkb3VibGUpaW1hZ2UtPmNvbXBzWzBdLnByZWM7DQorICAgICAgICBwcmVjMSA9IChkb3VibGUpaW1hZ2UtPmNvbXBzWzFdLnByZWM7DQorICAgICAgICBwcmVjMiA9IChkb3VibGUpaW1hZ2UtPmNvbXBzWzJdLnByZWM7DQorICAgICAgICBkZWZhdWx0X3R5cGUgPSByb3dbMV07DQorICAgICAgICBpZihkZWZhdWx0X3R5cGUgPT0gMHg0NDQ1NDYwMCkgew0KKyAgICAgICAgICAgIHJsID0gMTAwOw0KKyAgICAgICAgICAgIHJhID0gMTcwOw0KKyAgICAgICAgICAgIHJiID0gMjAwOw0KKyAgICAgICAgICAgIG9sID0gMDsNCisgICAgICAgICAgICBvYSA9IHBvdygyLCBwcmVjMSAtIDEpOw0KKyAgICAgICAgICAgIG9iID0gcG93KDIsIHByZWMyIC0gMikgICsgcG93KDIsIHByZWMyIC0gMyk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJsID0gcm93WzJdOw0KKyAgICAgICAgICAgIHJhID0gcm93WzRdOw0KKyAgICAgICAgICAgIHJiID0gcm93WzZdOw0KKyAgICAgICAgICAgIG9sID0gcm93WzNdOw0KKyAgICAgICAgICAgIG9hID0gcm93WzVdOw0KKyAgICAgICAgICAgIG9iID0gcm93WzddOw0KKyAgICAgICAgfQ0KKyAgICAgICAgTCA9IHNyYzAgPSBpbWFnZS0+Y29tcHNbMF0uZGF0YTsNCisgICAgICAgIGEgPSBzcmMxID0gaW1hZ2UtPmNvbXBzWzFdLmRhdGE7DQorICAgICAgICBiID0gc3JjMiA9IGltYWdlLT5jb21wc1syXS5kYXRhOw0KKyAgICAgICAgbWF4ID0gaW1hZ2UtPmNvbXBzWzBdLncgKiBpbWFnZS0+Y29tcHNbMF0uaDsNCisgICAgICAgIHJlZCA9IEZYX0FsbG9jKGludCwgbWF4KTsNCisgICAgICAgIGltYWdlLT5jb21wc1swXS5kYXRhID0gcmVkOw0KKyAgICAgICAgZ3JlZW4gPSBGWF9BbGxvYyhpbnQsIG1heCk7DQorICAgICAgICBpbWFnZS0+Y29tcHNbMV0uZGF0YSA9IGdyZWVuOw0KKyAgICAgICAgYmx1ZSA9IEZYX0FsbG9jKGludCwgbWF4KTsNCisgICAgICAgIGltYWdlLT5jb21wc1syXS5kYXRhID0gYmx1ZTsNCisgICAgICAgIG1pbkwgPSAtKHJsICogb2wpIC8gKHBvdygyLCBwcmVjMCkgLSAxKTsNCisgICAgICAgIG1heEwgPSBtaW5MICsgcmw7DQorICAgICAgICBtaW5hID0gLShyYSAqIG9hKSAvIChwb3coMiwgcHJlYzEpIC0gMSk7DQorICAgICAgICBtYXhhID0gbWluYSArIHJhOw0KKyAgICAgICAgbWluYiA9IC0ocmIgKiBvYikgLyAocG93KDIsIHByZWMyKSAtIDEpOw0KKyAgICAgICAgbWF4YiA9IG1pbmIgKyByYjsNCisgICAgICAgIGZvcihpID0gMDsgaSA8IG1heDsgKytpKSB7DQorICAgICAgICAgICAgTGFiLkwgPSBtaW5MICsgKGRvdWJsZSkoKkwpICogKG1heEwgLSBtaW5MKSAvIChwb3coMiwgcHJlYzApIC0gMSk7DQorICAgICAgICAgICAgKytMOw0KKyAgICAgICAgICAgIExhYi5hID0gbWluYSArIChkb3VibGUpKCphKSAqIChtYXhhIC0gbWluYSkgLyAocG93KDIsIHByZWMxKSAtIDEpOw0KKyAgICAgICAgICAgICsrYTsNCisgICAgICAgICAgICBMYWIuYiA9IG1pbmIgKyAoZG91YmxlKSgqYikgKiAobWF4YiAtIG1pbmIpIC8gKHBvdygyLCBwcmVjMikgLSAxKTsNCisgICAgICAgICAgICArK2I7DQorICAgICAgICAgICAgY21zRG9UcmFuc2Zvcm0odHJhbnNmb3JtLCAmTGFiLCBSR0IsIDEpOw0KKyAgICAgICAgICAgICpyZWQrKyA9IFJHQlswXTsNCisgICAgICAgICAgICAqZ3JlZW4rKyA9IFJHQlsxXTsNCisgICAgICAgICAgICAqYmx1ZSsrID0gUkdCWzJdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY21zRGVsZXRlVHJhbnNmb3JtKHRyYW5zZm9ybSk7DQorICAgICAgICBGWF9GcmVlKHNyYzApOw0KKyAgICAgICAgRlhfRnJlZShzcmMxKTsNCisgICAgICAgIEZYX0ZyZWUoc3JjMik7DQorICAgICAgICBpbWFnZS0+Y29sb3Jfc3BhY2UgPSBPUEpfQ0xSU1BDX1NSR0I7DQorICAgICAgICBpbWFnZS0+Y29tcHNbMF0ucHJlYyA9IDE2Ow0KKyAgICAgICAgaW1hZ2UtPmNvbXBzWzFdLnByZWMgPSAxNjsNCisgICAgICAgIGltYWdlLT5jb21wc1syXS5wcmVjID0gMTY7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCit9DQorY2xhc3MgQ0pQWF9EZWNvZGVyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDSlBYX0RlY29kZXIoKTsNCisgICAgfkNKUFhfRGVjb2RlcigpOw0KKyAgICBGWF9CT09MCUluaXQoY29uc3QgdW5zaWduZWQgY2hhciogc3JjX2RhdGEsIGludCBzcmNfc2l6ZSk7DQorICAgIHZvaWQJR2V0SW5mbyhGWF9EV09SRCYgd2lkdGgsIEZYX0RXT1JEJiBoZWlnaHQsIEZYX0RXT1JEJiBjb2Rlc3RyZWFtX25Db21wcywgRlhfRFdPUkQmIG91dHB1dF9uQ29tcHMpOw0KKyAgICBGWF9CT09MCURlY29kZShGWF9MUEJZVEUgZGVzdF9idWYsIGludCBwaXRjaCwgRlhfQk9PTCBiVHJhbnNsYXRlQ29sb3IsIEZYX0xQQllURSBvZmZzZXRzKTsNCisgICAgRlhfTFBDQllURSBtX1NyY0RhdGE7DQorICAgIGludCBtX1NyY1NpemU7DQorICAgIG9wal9pbWFnZV90ICppbWFnZTsNCisgICAgb3BqX2NvZGVjX3QqIGxfY29kZWM7DQorICAgIG9wal9zdHJlYW1fdCAqbF9zdHJlYW07DQorICAgIEZYX0JPT0wgbV91c2VDb2xvclNwYWNlOw0KK307DQorQ0pQWF9EZWNvZGVyOjpDSlBYX0RlY29kZXIoKTogaW1hZ2UoTlVMTCksIGxfY29kZWMoTlVMTCksIGxfc3RyZWFtKE5VTEwpLCBtX3VzZUNvbG9yU3BhY2UoRkFMU0UpDQorew0KK30NCitDSlBYX0RlY29kZXI6On5DSlBYX0RlY29kZXIoKQ0KK3sNCisgICAgaWYobF9jb2RlYykgew0KKyAgICAgICAgb3BqX2Rlc3Ryb3lfY29kZWMobF9jb2RlYyk7DQorICAgIH0NCisgICAgaWYobF9zdHJlYW0pIHsNCisgICAgICAgIG9wal9zdHJlYW1fZGVzdHJveShsX3N0cmVhbSk7DQorICAgIH0NCisgICAgaWYoaW1hZ2UpIHsNCisgICAgICAgIG9wal9pbWFnZV9kZXN0cm95KGltYWdlKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENKUFhfRGVjb2Rlcjo6SW5pdChjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmNfZGF0YSwgaW50IHNyY19zaXplKQ0KK3sNCisgICAgb3BqX2RwYXJhbWV0ZXJzX3QgcGFyYW1ldGVyczsNCisgICAgdHJ5IHsNCisgICAgICAgIGltYWdlID0gTlVMTDsNCisgICAgICAgIG1fU3JjRGF0YSA9IHNyY19kYXRhOw0KKyAgICAgICAgbV9TcmNTaXplID0gc3JjX3NpemU7DQorICAgICAgICBkZWNvZGVEYXRhIHNyY0RhdGE7DQorICAgICAgICBzcmNEYXRhLm9mZnNldCAgPSAwOw0KKyAgICAgICAgc3JjRGF0YS5zcmNfc2l6ZSA9IHNyY19zaXplOw0KKyAgICAgICAgc3JjRGF0YS5zcmNfZGF0YSA9IHNyY19kYXRhOw0KKyAgICAgICAgbF9zdHJlYW0gPSBmeF9vcGpfc3RyZWFtX2NyZWF0ZV9tZW1vcnlfc3RyZWFtKCZzcmNEYXRhLCBPUEpfSjJLX1NUUkVBTV9DSFVOS19TSVpFLCAxKTsNCisgICAgICAgIGlmIChsX3N0cmVhbSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgb3BqX3NldF9kZWZhdWx0X2RlY29kZXJfcGFyYW1ldGVycygmcGFyYW1ldGVycyk7DQorICAgICAgICBwYXJhbWV0ZXJzLmRlY29kX2Zvcm1hdCA9IDA7DQorICAgICAgICBwYXJhbWV0ZXJzLmNvZF9mb3JtYXQgPSAzOw0KKyAgICAgICAgaWYoRlhTWVNfbWVtY21wMzIobV9TcmNEYXRhLCAiXHgwMFx4MDBceDAwXHgwY1x4NmFceDUwXHgyMFx4MjBceDBkXHgwYVx4ODdceDBhIiwgMTIpID09IDApIHsNCisgICAgICAgICAgICBsX2NvZGVjID0gb3BqX2NyZWF0ZV9kZWNvbXByZXNzKE9QSl9DT0RFQ19KUDIpOw0KKyAgICAgICAgICAgIHBhcmFtZXRlcnMuZGVjb2RfZm9ybWF0ID0gMTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbF9jb2RlYyA9IG9wal9jcmVhdGVfZGVjb21wcmVzcyhPUEpfQ09ERUNfSjJLKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmKCFsX2NvZGVjKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgb3BqX3NldF9pbmZvX2hhbmRsZXIobF9jb2RlYywgZnhfaW5mb19jYWxsYmFjaywgMDApOw0KKyAgICAgICAgb3BqX3NldF93YXJuaW5nX2hhbmRsZXIobF9jb2RlYywgZnhfd2FybmluZ19jYWxsYmFjaywgMDApOw0KKyAgICAgICAgb3BqX3NldF9lcnJvcl9oYW5kbGVyKGxfY29kZWMsIGZ4X2Vycm9yX2NhbGxiYWNrLCAwMCk7DQorICAgICAgICBpZiAoICFvcGpfc2V0dXBfZGVjb2RlcihsX2NvZGVjLCAmcGFyYW1ldGVycykgKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoISBvcGpfcmVhZF9oZWFkZXIobF9zdHJlYW0sIGxfY29kZWMsICZpbWFnZSkpIHsNCisgICAgICAgICAgICBpbWFnZSA9IE5VTEw7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYodGhpcy0+bV91c2VDb2xvclNwYWNlKSB7DQorICAgICAgICAgICAgaW1hZ2UtPnVzZUNvbG9yU3BhY2UgPSAxOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpbWFnZS0+dXNlQ29sb3JTcGFjZSA9IDA7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIXBhcmFtZXRlcnMubmJfdGlsZV90b19kZWNvZGUpIHsNCisgICAgICAgICAgICBpZiAoIW9wal9zZXRfZGVjb2RlX2FyZWEobF9jb2RlYywgaW1hZ2UsIHBhcmFtZXRlcnMuREFfeDAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuREFfeTAsIHBhcmFtZXRlcnMuREFfeDEsIHBhcmFtZXRlcnMuREFfeTEpKSB7DQorICAgICAgICAgICAgICAgIG9wal9pbWFnZV9kZXN0cm95KGltYWdlKTsNCisgICAgICAgICAgICAgICAgaW1hZ2UgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICghKG9wal9kZWNvZGUobF9jb2RlYywgbF9zdHJlYW0sIGltYWdlKSAmJiBvcGpfZW5kX2RlY29tcHJlc3MobF9jb2RlYywJbF9zdHJlYW0pKSkgew0KKyAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfZGVzdHJveShpbWFnZSk7DQorICAgICAgICAgICAgICAgIGltYWdlID0gTlVMTDsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKCFvcGpfZ2V0X2RlY29kZWRfdGlsZShsX2NvZGVjLCBsX3N0cmVhbSwgaW1hZ2UsIHBhcmFtZXRlcnMudGlsZV9pbmRleCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG9wal9zdHJlYW1fZGVzdHJveShsX3N0cmVhbSk7DQorICAgICAgICBsX3N0cmVhbSA9IE5VTEw7DQorICAgICAgICBpZiggaW1hZ2UtPmNvbG9yX3NwYWNlICE9IE9QSl9DTFJTUENfU1lDQw0KKyAgICAgICAgICAgICAgICAmJiBpbWFnZS0+bnVtY29tcHMgPT0gMyAmJiBpbWFnZS0+Y29tcHNbMF0uZHggPT0gaW1hZ2UtPmNvbXBzWzBdLmR5DQorICAgICAgICAgICAgICAgICYmIGltYWdlLT5jb21wc1sxXS5keCAhPSAxICkgew0KKyAgICAgICAgICAgIGltYWdlLT5jb2xvcl9zcGFjZSA9IE9QSl9DTFJTUENfU1lDQzsNCisgICAgICAgIH0gZWxzZSBpZiAoaW1hZ2UtPm51bWNvbXBzIDw9IDIpIHsNCisgICAgICAgICAgICBpbWFnZS0+Y29sb3Jfc3BhY2UgPSBPUEpfQ0xSU1BDX0dSQVk7DQorICAgICAgICB9DQorICAgICAgICBpZihpbWFnZS0+Y29sb3Jfc3BhY2UgPT0gT1BKX0NMUlNQQ19TWUNDKSB7DQorICAgICAgICAgICAgY29sb3Jfc3ljY190b19yZ2IoaW1hZ2UpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoaW1hZ2UtPmljY19wcm9maWxlX2J1ZiAmJiAhaW1hZ2UtPnVzZUNvbG9yU3BhY2UpIHsNCisgICAgICAgICAgICBGWF9GcmVlKGltYWdlLT5pY2NfcHJvZmlsZV9idWYpOw0KKyAgICAgICAgICAgIGltYWdlLT5pY2NfcHJvZmlsZV9idWYgPSBOVUxMOw0KKyAgICAgICAgICAgIGltYWdlLT5pY2NfcHJvZmlsZV9sZW4gPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoIWltYWdlKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9IGNhdGNoICguLi4pIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDSlBYX0RlY29kZXI6OkdldEluZm8oRlhfRFdPUkQmIHdpZHRoLCBGWF9EV09SRCYgaGVpZ2h0LCBGWF9EV09SRCYgY29kZXN0cmVhbV9uQ29tcHMsIEZYX0RXT1JEJiBvdXRwdXRfbkNvbXBzKQ0KK3sNCisgICAgd2lkdGggPSAoRlhfRFdPUkQpaW1hZ2UtPngxOw0KKyAgICBoZWlnaHQgPSAoRlhfRFdPUkQpaW1hZ2UtPnkxOw0KKyAgICBvdXRwdXRfbkNvbXBzID0gY29kZXN0cmVhbV9uQ29tcHMgPSAoRlhfRFdPUkQpaW1hZ2UtPm51bWNvbXBzOw0KK30NCitGWF9CT09MIENKUFhfRGVjb2Rlcjo6RGVjb2RlKEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IHBpdGNoLCBGWF9CT09MIGJUcmFuc2xhdGVDb2xvciwgRlhfTFBCWVRFIG9mZnNldHMpDQorew0KKyAgICBGWF9CWVRFKiogY2hhbm5lbF9idWZzOw0KKyAgICBpbnQqIGFkanVzdF9jb21wczsNCisgICAgaW50IGksIHdpZCwgaGVpLCByb3csIGNvbCwgY2hhbm5lbCwgc3JjOw0KKyAgICBGWF9CT09MIGZsYWc7DQorICAgIEZYX0xQQllURSBwQ2hhbm5lbCwgcFNjYW5saW5lLCBwUGl4ZWw7DQorICAgIHRyeSB7DQorICAgICAgICBpZihpbWFnZS0+Y29tcHNbMF0udyAhPSBpbWFnZS0+eDEgfHwgaW1hZ2UtPmNvbXBzWzBdLmggIT0gaW1hZ2UtPnkxKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYocGl0Y2ggPCAoaW50KShpbWFnZS0+Y29tcHNbMF0udyAqIDggKiBpbWFnZS0+bnVtY29tcHMgKyAzMSkgPj4gNSA8PCAyKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhTWVNfbWVtc2V0OChkZXN0X2J1ZiwgMHhmZiwgaW1hZ2UtPnkxICogcGl0Y2gpOw0KKyAgICAgICAgY2hhbm5lbF9idWZzID0gRlhfQWxsb2MoRlhfQllURSosIGltYWdlLT5udW1jb21wcyk7DQorICAgICAgICBpZiAoY2hhbm5lbF9idWZzID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBhZGp1c3RfY29tcHMgPSBGWF9BbGxvYyhpbnQsIGltYWdlLT5udW1jb21wcyk7DQorICAgICAgICBpZiAoYWRqdXN0X2NvbXBzID09IE5VTEwpIHsNCisgICAgICAgICAgICBGWF9GcmVlKGNoYW5uZWxfYnVmcyk7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZmxhZyA9IFRSVUU7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludClpbWFnZS0+bnVtY29tcHM7IGkgKyspIHsNCisgICAgICAgICAgICBjaGFubmVsX2J1ZnNbaV0gPSBkZXN0X2J1ZiArIG9mZnNldHNbaV07DQorICAgICAgICAgICAgYWRqdXN0X2NvbXBzW2ldID0gaW1hZ2UtPmNvbXBzW2ldLnByZWMgLSA4Ow0KKyAgICAgICAgICAgIGlmKGkgPiAwKSB7DQorICAgICAgICAgICAgICAgIGlmKGltYWdlLT5jb21wc1tpXS5keCAhPSBpbWFnZS0+Y29tcHNbaSAtIDFdLmR4DQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgaW1hZ2UtPmNvbXBzW2ldLmR5ICE9IGltYWdlLT5jb21wc1tpIC0gMV0uZHkNCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBpbWFnZS0+Y29tcHNbaV0ucHJlYyAhPSBpbWFnZS0+Y29tcHNbaSAtIDFdLnByZWMpIHsNCisgICAgICAgICAgICAgICAgICAgIGZsYWcgPSBGQUxTRTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgd2lkID0gaW1hZ2UtPmNvbXBzWzBdLnc7DQorICAgICAgICBoZWkgPSBpbWFnZS0+Y29tcHNbMF0uaDsNCisgICAgICAgIGZvciAoY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCAoaW50KWltYWdlLT5udW1jb21wczsgY2hhbm5lbCsrKSB7DQorICAgICAgICAgICAgcENoYW5uZWwgPSBjaGFubmVsX2J1ZnNbY2hhbm5lbF07DQorICAgICAgICAgICAgaWYoYWRqdXN0X2NvbXBzW2NoYW5uZWxdIDwgMCkgew0KKyAgICAgICAgICAgICAgICBmb3Iocm93ID0gMDsgcm93IDwgaGVpOyByb3crKykgew0KKyAgICAgICAgICAgICAgICAgICAgcFNjYW5saW5lID0gcENoYW5uZWwgKyByb3cgKiBwaXRjaDsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoY29sID0gMDsgY29sIDwgd2lkOyBjb2wrKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBQaXhlbCA9IHBTY2FubGluZSArIGNvbCAqIGltYWdlLT5udW1jb21wczsNCisgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSBpbWFnZS0+Y29tcHNbY2hhbm5lbF0uZGF0YVtyb3cgKiB3aWQgKyBjb2xdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyYyArPSBpbWFnZS0+Y29tcHNbY2hhbm5lbF0uc2duZCA/IDEgPDwgKGltYWdlLT5jb21wc1tjaGFubmVsXS5wcmVjIC0gMSkgOiAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGp1c3RfY29tcHNbY2hhbm5lbF0gPiAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwUGl4ZWwgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwUGl4ZWwgPSAoRlhfQllURSkoc3JjIDw8IC1hZGp1c3RfY29tcHNbY2hhbm5lbF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGZvcihyb3cgPSAwOyByb3cgPCBoZWk7IHJvdysrKSB7DQorICAgICAgICAgICAgICAgICAgICBwU2NhbmxpbmUgPSBwQ2hhbm5lbCArIHJvdyAqIHBpdGNoOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChjb2wgPSAwOyBjb2wgPCB3aWQ7IGNvbCsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcFBpeGVsID0gcFNjYW5saW5lICsgY29sICogaW1hZ2UtPm51bWNvbXBzOw0KKwkJCQkJCWlmICghaW1hZ2UtPmNvbXBzW2NoYW5uZWxdLmRhdGEpIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyYyA9IGltYWdlLT5jb21wc1tjaGFubmVsXS5kYXRhW3JvdyAqIHdpZCArIGNvbF07DQorICAgICAgICAgICAgICAgICAgICAgICAgc3JjICs9IGltYWdlLT5jb21wc1tjaGFubmVsXS5zZ25kID8gMSA8PCAoaW1hZ2UtPmNvbXBzW2NoYW5uZWxdLnByZWMgLSAxKSA6IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFkanVzdF9jb21wc1tjaGFubmVsXSAtIDEgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwUGl4ZWwgPSAoRlhfQllURSkoKHNyYyA+PiBhZGp1c3RfY29tcHNbY2hhbm5lbF0pKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG1wUGl4ZWwgPSAoc3JjID4+IGFkanVzdF9jb21wc1tjaGFubmVsXSkgKyAoKHNyYyA+PiAoYWRqdXN0X2NvbXBzW2NoYW5uZWxdIC0gMSkpICUgMik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXBQaXhlbCA+IDI1NSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wUGl4ZWwgPSAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG1wUGl4ZWwgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBQaXhlbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBQaXhlbCA9IChGWF9CWVRFKXRtcFBpeGVsOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBjYXRjaCAoLi4uKSB7DQorICAgICAgICBpZiAoY2hhbm5lbF9idWZzKSB7DQorICAgICAgICAgICAgRlhfRnJlZShjaGFubmVsX2J1ZnMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRnJlZShhZGp1c3RfY29tcHMpOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0ZyZWUoY2hhbm5lbF9idWZzKTsNCisgICAgRlhfRnJlZShhZGp1c3RfY29tcHMpOw0KKyAgICByZXR1cm4gVFJVRTsNCitmYWlsZWQ6DQorICAgIEZYX0ZyZWUoY2hhbm5lbF9idWZzKTsNCisgICAgRlhfRnJlZShhZGp1c3RfY29tcHMpOw0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK3ZvaWQgaW5pdGlhbGl6ZV90cmFuc2l0aW9uX3RhYmxlKCk7DQordm9pZCBpbml0aWFsaXplX3NpZ25pZmljYW5jZV9sdXRzKCk7DQordm9pZCBpbml0aWFsaXplX3NpZ25fbHV0KCk7DQorQ0NvZGVjX0pweE1vZHVsZTo6Q0NvZGVjX0pweE1vZHVsZSgpDQorew0KK30NCit2b2lkKiBDQ29kZWNfSnB4TW9kdWxlOjpDcmVhdGVEZWNvZGVyKEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUgLCBGWF9CT09MIHVzZUNvbG9yU3BhY2UpDQorew0KKyAgICBDSlBYX0RlY29kZXIqIHBEZWNvZGVyID0gRlhfTkVXIENKUFhfRGVjb2RlcjsNCisgICAgaWYgKHBEZWNvZGVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBEZWNvZGVyLT5tX3VzZUNvbG9yU3BhY2UgPSB1c2VDb2xvclNwYWNlOw0KKyAgICBpZiAoIXBEZWNvZGVyLT5Jbml0KHNyY19idWYsIHNyY19zaXplKSkgew0KKyAgICAgICAgZGVsZXRlIHBEZWNvZGVyOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBEZWNvZGVyOw0KK30NCit2b2lkIENDb2RlY19KcHhNb2R1bGU6OkdldEltYWdlSW5mbyhGWF9MUFZPSUQgY3R4LCBGWF9EV09SRCYgd2lkdGgsIEZYX0RXT1JEJiBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQmIGNvZGVzdHJlYW1fbkNvbXBzLCBGWF9EV09SRCYgb3V0cHV0X25Db21wcykNCit7DQorICAgIENKUFhfRGVjb2RlciogcERlY29kZXIgPSAoQ0pQWF9EZWNvZGVyKiljdHg7DQorICAgIHBEZWNvZGVyLT5HZXRJbmZvKHdpZHRoLCBoZWlnaHQsIGNvZGVzdHJlYW1fbkNvbXBzLCBvdXRwdXRfbkNvbXBzKTsNCit9DQorRlhfQk9PTCBDQ29kZWNfSnB4TW9kdWxlOjpEZWNvZGUodm9pZCogY3R4LCBGWF9MUEJZVEUgZGVzdF9kYXRhLCBpbnQgcGl0Y2gsIEZYX0JPT0wgYlRyYW5zbGF0ZUNvbG9yLCBGWF9MUEJZVEUgb2Zmc2V0cykNCit7DQorICAgIENKUFhfRGVjb2RlciogcERlY29kZXIgPSAoQ0pQWF9EZWNvZGVyKiljdHg7DQorICAgIHJldHVybiBwRGVjb2Rlci0+RGVjb2RlKGRlc3RfZGF0YSwgcGl0Y2gsIGJUcmFuc2xhdGVDb2xvciwgb2Zmc2V0cyk7DQorfQ0KK3ZvaWQgQ0NvZGVjX0pweE1vZHVsZTo6RGVzdHJveURlY29kZXIodm9pZCogY3R4KQ0KK3sNCisgICAgQ0pQWF9EZWNvZGVyKiBwRGVjb2RlciA9IChDSlBYX0RlY29kZXIqKWN0eDsNCisgICAgZGVsZXRlIHBEZWNvZGVyOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2luY2x1ZGUvZnhfb3BlbmpwZWcuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvaW5jbHVkZS9meF9vcGVuanBlZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNDgwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2luY2x1ZGUvZnhfb3BlbmpwZWcuaApAQCAtMCwwICsxLDEzIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWF9PUEVOSlBFR19IXworI2RlZmluZSBfRlhfT1BFTkpQRUdfSF8KKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC9vcGVuanBlZy5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvQ01ha2VMaXN0cy50eHQgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM4N2YyOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDk4IEBACitpbmNsdWRlX3JlZ3VsYXJfZXhwcmVzc2lvbigiXi4qJCIpCisKKyMKK2luc3RhbGwoIEZJTEVTICAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vb3BqX2NvbmZpZy5oCisgREVTVElOQVRJT04gJHtPUEVOSlBFR19JTlNUQUxMX0lOQ0xVREVfRElSfSBDT01QT05FTlQgSGVhZGVycykKKworaW5jbHVkZV9kaXJlY3RvcmllcygKKyAgJHtPUEVOSlBFR19CSU5BUllfRElSfS9zcmMvbGliL29wZW5qcDIgIyBvcGpfY29uZmlnLmggYW5kIG9wal9jb25maWdfcHJpdmF0ZS5oCispCisjIERlZmluZXMgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgbGlicmFyeQorc2V0KE9QRU5KUEVHX1NSQ1MKKyAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2Jpby5jCisgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jaW8uYworICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZHd0LmMKKyAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2V2ZW50LmMKKyAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2ltYWdlLmMKKyAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2ludmVydC5jCisgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9qMmsuYworICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vanAyLmMKKyAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L21jdC5jCisgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9tcWMuYworICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vb3BlbmpwZWcuYworICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vb3BqX2Nsb2NrLmMKKyAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BpLmMKKyAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Jhdy5jCisgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90MS5jCisgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90Mi5jCisgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90Y2QuYworICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGd0LmMKKyAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2Z1bmN0aW9uX2xpc3QuYworKQoraWYoQlVJTERfSlBJUCkKKyAgYWRkX2RlZmluaXRpb25zKC1EVVNFX0pQSVApCisgIHNldChPUEVOSlBFR19TUkNTCisgICAgJHtPUEVOSlBFR19TUkNTfQorICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jaWR4X21hbmFnZXIuYworICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9waGl4X21hbmFnZXIuYworICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wcGl4X21hbmFnZXIuYworICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90aGl4X21hbmFnZXIuYworICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90cGl4X21hbmFnZXIuYworICApCitlbmRpZigpCisKKyMgQnVpbGQgdGhlIGxpYnJhcnkKK2lmKFdJTjMyKQorICBpZihCVUlMRF9TSEFSRURfTElCUykKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURPUEpfRVhQT1JUUykKKyAgZWxzZSgpCisgICAgYWRkX2RlZmluaXRpb25zKC1ET1BKX1NUQVRJQykKKyAgZW5kaWYoKQorZW5kaWYoKQorYWRkX2xpYnJhcnkoJHtPUEVOSlBFR19MSUJSQVJZX05BTUV9ICR7T1BFTkpQRUdfU1JDU30pCitpZihVTklYKQorICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtPUEVOSlBFR19MSUJSQVJZX05BTUV9IG0pCitlbmRpZigpCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtPUEVOSlBFR19MSUJSQVJZX05BTUV9IFBST1BFUlRJRVMgJHtPUEVOSlBFR19MSUJSQVJZX1BST1BFUlRJRVN9KQorCisjIEluc3RhbGwgbGlicmFyeQoraW5zdGFsbChUQVJHRVRTICR7T1BFTkpQRUdfTElCUkFSWV9OQU1FfQorICBFWFBPUlQgT3BlbkpQRUdUYXJnZXRzCisgIFJVTlRJTUUgREVTVElOQVRJT04gJHtPUEVOSlBFR19JTlNUQUxMX0JJTl9ESVJ9IENPTVBPTkVOVCBBcHBsaWNhdGlvbnMKKyAgTElCUkFSWSBERVNUSU5BVElPTiAke09QRU5KUEVHX0lOU1RBTExfTElCX0RJUn0gQ09NUE9ORU5UIExpYnJhcmllcworICBBUkNISVZFIERFU1RJTkFUSU9OICR7T1BFTkpQRUdfSU5TVEFMTF9MSUJfRElSfSBDT01QT05FTlQgTGlicmFyaWVzCispCisKKyMgSW5zdGFsbCBpbmNsdWRlcyBmaWxlcworaW5zdGFsbChGSUxFUyBvcGVuanBlZy5oIG9wal9zdGRpbnQuaAorICBERVNUSU5BVElPTiAke09QRU5KUEVHX0lOU1RBTExfSU5DTFVERV9ESVJ9IENPTVBPTkVOVCBIZWFkZXJzCispCisKKyMgaW5zdGFsbCBtYW4gcGFnZSBvZiB0aGUgbGlicmFyeQoraW5zdGFsbCgKKyAgRklMRVMgICAgICAgJHtPUEVOSlBFR19TT1VSQ0VfRElSfS9kb2MvbWFuL21hbjMvbGlib3BlbmpwMi4zCisgIERFU1RJTkFUSU9OICR7T1BFTkpQRUdfSU5TVEFMTF9NQU5fRElSfS9tYW4zKQorCisjIGludGVybmFsIHV0aWxpdGllcyB0byBnZW5lcmF0ZSB0MV9sdXRzLmggKHBhcnQgb2YgdGhlIGpwMiBsaWIpCisjIG5vIG5lZWQgdG8gaW5zdGFsbDoKK2FkZF9leGVjdXRhYmxlKHQxX2dlbmVyYXRlX2x1dHMgdDFfZ2VuZXJhdGVfbHV0cy5jKQoraWYoVU5JWCkKKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHQxX2dlbmVyYXRlX2x1dHMgbSkKK2VuZGlmKCkKKworIyBFeHBlcmltZW50YWwgb3B0aW9uOyBsZXQncyBob3cgY3BwY2hlY2sgcGVyZm9ybXMKKyMgSW1wbGVtZW50YXRpb24gZGV0YWlsczoKKyPCoEkgY291bGQgbm90IGZpZ3VyZSBvdXQgaG93IHRvIGVhc2lseSB1cGxvYWQgYSBmaWxlIHRvIENEYXNoLiBJbnN0ZWFkIHNpbXBseQorIyBwcmV0ZW5kIGNwcGNoZWNrIGlzIHBhcnQgb2YgdGhlIEJ1aWxkIHN0ZXAuIFRlY2huaWNhbGx5IGNwcGNoZWNrIGNhbiBldmVuCisjIG91dHB1dCBnY2MgZm9ybWF0dGVkIGVycm9yL3dhcm5pbmcgcmVwb3J0CisjIEFub3RoZXIgaW1wbGVtZW50YXRpb24gZGV0YWlsOiBJIGNvdWxkIG5vdCByZWRpcmVjdCBlcnJvciB0byB0aGUgZXJyb3IKKyMgY2F0Y2hpbmcgbWVjaGFuaXNtIHNvbWV0aGluZyBpcyBidXN0ZWQgaW4gY21ha2UgMi44LjUsIEkgaGFkIHRvIHVzZSB0aGUKKyMgd2FybmluZyByZWdleCB0byBjYXRjaCB0aGVtLgoraWYoT1BFTkpQRUdfQ1BQQ0hFQ0spCisgIGZpbmRfcGFja2FnZShDUFBDSEVDSyBSRVFVSVJFRCkKKyAgZm9yZWFjaChmICR7T1BFTkpQRUdfU1JDU30pCisgICAgIyBjcHBjaGVjayBjb21wbGFpbnMgYWJvdXQgdG9vIG1hbnkgY29uZmlndXJhdGlvbiwgcHJldGVuZCB0byBiZSBXSU4zMjoKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoVEFSR0VUICR7T1BFTkpQRUdfTElCUkFSWV9OQU1FfQorICAgICAgQ09NTUFORCAke0NQUENIRUNLX0VYRUNVVEFCTEV9IC1EV0lOMzIgJHtmfSkKKyAgZW5kZm9yZWFjaCgpCitlbmRpZigpCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvYmlvLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvYmlvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ0OTU4MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9iaW8uYwpAQCAtMCwwICsxLDE5NCBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAib3BqX2luY2x1ZGVzLmgiCisKKy8qKiBAZGVmZ3JvdXAgQklPIEJJTyAtIEluZGl2aWR1YWwgYml0IGlucHV0LW91dHB1dCBzdHJlYW0gKi8KKy8qQHsqLworCisvKiogQG5hbWUgTG9jYWwgc3RhdGljIGZ1bmN0aW9ucyAqLworLypAeyovCisKKy8qKgorV3JpdGUgYSBiaXQKK0BwYXJhbSBiaW8gQklPIGhhbmRsZQorQHBhcmFtIGIgQml0IHRvIHdyaXRlICgwIG9yIDEpCisqLworc3RhdGljIHZvaWQgb3BqX2Jpb19wdXRiaXQob3BqX2Jpb190ICpiaW8sIE9QSl9VSU5UMzIgYik7CisvKioKK1JlYWQgYSBiaXQKK0BwYXJhbSBiaW8gQklPIGhhbmRsZQorQHJldHVybiBSZXR1cm5zIHRoZSByZWFkIGJpdAorKi8KK3N0YXRpYyBPUEpfVUlOVDMyIG9wal9iaW9fZ2V0Yml0KG9wal9iaW9fdCAqYmlvKTsKKy8qKgorV3JpdGUgYSBieXRlCitAcGFyYW0gYmlvIEJJTyBoYW5kbGUKK0ByZXR1cm4gUmV0dXJucyBPUEpfVFJVRSBpZiBzdWNjZXNzZnVsLCByZXR1cm5zIE9QSl9GQUxTRSBvdGhlcndpc2UKKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2Jpb19ieXRlb3V0KG9wal9iaW9fdCAqYmlvKTsKKy8qKgorUmVhZCBhIGJ5dGUKK0BwYXJhbSBiaW8gQklPIGhhbmRsZQorQHJldHVybiBSZXR1cm5zIE9QSl9UUlVFIGlmIHN1Y2Nlc3NmdWwsIHJldHVybnMgT1BKX0ZBTFNFIG90aGVyd2lzZQorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfYmlvX2J5dGVpbihvcGpfYmlvX3QgKmJpbyk7CisKKy8qQH0qLworCisvKkB9Ki8KKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBsb2NhbCBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKK09QSl9CT09MIG9wal9iaW9fYnl0ZW91dChvcGpfYmlvX3QgKmJpbykgeworCWJpby0+YnVmID0gKGJpby0+YnVmIDw8IDgpICYgMHhmZmZmOworCWJpby0+Y3QgPSBiaW8tPmJ1ZiA9PSAweGZmMDAgPyA3IDogODsKKwlpZiAoYmlvLT5icCA+PSBiaW8tPmVuZCkgeworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKwkqYmlvLT5icCsrID0gKE9QSl9CWVRFKShiaW8tPmJ1ZiA+PiA4KTsKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9iaW9fYnl0ZWluKG9wal9iaW9fdCAqYmlvKSB7CisJYmlvLT5idWYgPSAoYmlvLT5idWYgPDwgOCkgJiAweGZmZmY7CisJYmlvLT5jdCA9IGJpby0+YnVmID09IDB4ZmYwMCA/IDcgOiA4OworCWlmIChiaW8tPmJwID49IGJpby0+ZW5kKSB7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCWJpby0+YnVmIHw9ICpiaW8tPmJwKys7CisJcmV0dXJuIE9QSl9UUlVFOworfQorCit2b2lkIG9wal9iaW9fcHV0Yml0KG9wal9iaW9fdCAqYmlvLCBPUEpfVUlOVDMyIGIpIHsKKwlpZiAoYmlvLT5jdCA9PSAwKSB7CisJCW9wal9iaW9fYnl0ZW91dChiaW8pOyAvKiBNU0Q6IHdoeSBub3QgY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uID8gKi8KKwl9CisJYmlvLT5jdC0tOworCWJpby0+YnVmIHw9IGIgPDwgYmlvLT5jdDsKK30KKworT1BKX1VJTlQzMiBvcGpfYmlvX2dldGJpdChvcGpfYmlvX3QgKmJpbykgeworCWlmIChiaW8tPmN0ID09IDApIHsKKwkJb3BqX2Jpb19ieXRlaW4oYmlvKTsgLyogTVNEOiB3aHkgbm90IGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiA/ICovCisJfQorCWJpby0+Y3QtLTsKKwlyZXR1cm4gKGJpby0+YnVmID4+IGJpby0+Y3QpICYgMTsKK30KKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBCaXQgSW5wdXQvT3V0cHV0IGludGVyZmFjZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworb3BqX2Jpb190KiBvcGpfYmlvX2NyZWF0ZSh2b2lkKSB7CisJb3BqX2Jpb190ICpiaW8gPSAob3BqX2Jpb190KilvcGpfbWFsbG9jKHNpemVvZihvcGpfYmlvX3QpKTsKKwlyZXR1cm4gYmlvOworfQorCit2b2lkIG9wal9iaW9fZGVzdHJveShvcGpfYmlvX3QgKmJpbykgeworCWlmKGJpbykgeworCQlvcGpfZnJlZShiaW8pOworCX0KK30KKworcHRyZGlmZl90IG9wal9iaW9fbnVtYnl0ZXMob3BqX2Jpb190ICpiaW8pIHsKKwlyZXR1cm4gKGJpby0+YnAgLSBiaW8tPnN0YXJ0KTsKK30KKwordm9pZCBvcGpfYmlvX2luaXRfZW5jKG9wal9iaW9fdCAqYmlvLCBPUEpfQllURSAqYnAsIE9QSl9VSU5UMzIgbGVuKSB7CisJYmlvLT5zdGFydCA9IGJwOworCWJpby0+ZW5kID0gYnAgKyBsZW47CisJYmlvLT5icCA9IGJwOworCWJpby0+YnVmID0gMDsKKwliaW8tPmN0ID0gODsKK30KKwordm9pZCBvcGpfYmlvX2luaXRfZGVjKG9wal9iaW9fdCAqYmlvLCBPUEpfQllURSAqYnAsIE9QSl9VSU5UMzIgbGVuKSB7CisJYmlvLT5zdGFydCA9IGJwOworCWJpby0+ZW5kID0gYnAgKyBsZW47CisJYmlvLT5icCA9IGJwOworCWJpby0+YnVmID0gMDsKKwliaW8tPmN0ID0gMDsKK30KKwordm9pZCBvcGpfYmlvX3dyaXRlKG9wal9iaW9fdCAqYmlvLCBPUEpfVUlOVDMyIHYsIE9QSl9VSU5UMzIgbikgeworCU9QSl9VSU5UMzIgaTsKKwlmb3IgKGkgPSBuIC0gMTsgaSA8IG47IGktLSkgeworCQlvcGpfYmlvX3B1dGJpdChiaW8sICh2ID4+IGkpICYgMSk7CisJfQorfQorCitPUEpfVUlOVDMyIG9wal9iaW9fcmVhZChvcGpfYmlvX3QgKmJpbywgT1BKX1VJTlQzMiBuKSB7CisJT1BKX1VJTlQzMiBpOworICAgIE9QSl9VSU5UMzIgdjsKKwl2ID0gMDsKKwlmb3IgKGkgPSBuIC0gMTsgaSA8IG47IGktLSkgeworCQl2ICs9IG9wal9iaW9fZ2V0Yml0KGJpbykgPDwgaTsKKwl9CisJcmV0dXJuIHY7Cit9CisKK09QSl9CT09MIG9wal9iaW9fZmx1c2gob3BqX2Jpb190ICpiaW8pIHsKKwliaW8tPmN0ID0gMDsKKwlpZiAoISBvcGpfYmlvX2J5dGVvdXQoYmlvKSkgeworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKwlpZiAoYmlvLT5jdCA9PSA3KSB7CisJCWJpby0+Y3QgPSAwOworCQlpZiAoISBvcGpfYmlvX2J5dGVvdXQoYmlvKSkgeworCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJfQorCX0KKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9iaW9faW5hbGlnbihvcGpfYmlvX3QgKmJpbykgeworCWJpby0+Y3QgPSAwOworCWlmICgoYmlvLT5idWYgJiAweGZmKSA9PSAweGZmKSB7CisJCWlmICghIG9wal9iaW9fYnl0ZWluKGJpbykpIHsKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKwkJYmlvLT5jdCA9IDA7CisJfQorCXJldHVybiBPUEpfVFJVRTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9iaW8uaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9iaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmEyNDI4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2Jpby5oCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgX19CSU9fSAorI2RlZmluZSBfX0JJT19ICisKKyNpbmNsdWRlIDxzdGRkZWYuaD4gLyogcHRyZGlmZl90ICovCisKKy8qKiAKK0BmaWxlIGJpby5oCitAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgYW4gaW5kaXZpZHVhbCBiaXQgaW5wdXQtb3V0cHV0IChCSU8pCisKK1RoZSBmdW5jdGlvbnMgaW4gQklPLkMgaGF2ZSBmb3IgZ29hbCB0byByZWFsaXplIGFuIGluZGl2aWR1YWwgYml0IGlucHV0IC0gb3V0cHV0LgorKi8KKworLyoqIEBkZWZncm91cCBCSU8gQklPIC0gSW5kaXZpZHVhbCBiaXQgaW5wdXQtb3V0cHV0IHN0cmVhbSAqLworLypAeyovCisKKy8qKgorSW5kaXZpZHVhbCBiaXQgaW5wdXQtb3V0cHV0IHN0cmVhbSAoQklPKQorKi8KK3R5cGVkZWYgc3RydWN0IG9wal9iaW8geworCS8qKiBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyICovCisJT1BKX0JZVEUgKnN0YXJ0OworCS8qKiBwb2ludGVyIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqLworCU9QSl9CWVRFICplbmQ7CisJLyoqIHBvaW50ZXIgdG8gdGhlIHByZXNlbnQgcG9zaXRpb24gaW4gdGhlIGJ1ZmZlciAqLworCU9QSl9CWVRFICpicDsKKwkvKiogdGVtcG9yYXJ5IHBsYWNlIHdoZXJlIGVhY2ggYnl0ZSBpcyByZWFkIG9yIHdyaXR0ZW4gKi8KKwlPUEpfVUlOVDMyIGJ1ZjsKKwkvKiogY29kZXIgOiBudW1iZXIgb2YgYml0cyBmcmVlIHRvIHdyaXRlLiBkZWNvZGVyIDogbnVtYmVyIG9mIGJpdHMgcmVhZCAqLworCU9QSl9VSU5UMzIgY3Q7Cit9IG9wal9iaW9fdDsKKworLyoqIEBuYW1lIEV4cG9ydGVkIGZ1bmN0aW9ucyAqLworLypAeyovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoqCitDcmVhdGUgYSBuZXcgQklPIGhhbmRsZSAKK0ByZXR1cm4gUmV0dXJucyBhIG5ldyBCSU8gaGFuZGxlIGlmIHN1Y2Nlc3NmdWwsIHJldHVybnMgTlVMTCBvdGhlcndpc2UKKyovCitvcGpfYmlvX3QqIG9wal9iaW9fY3JlYXRlKHZvaWQpOworLyoqCitEZXN0cm95IGEgcHJldmlvdXNseSBjcmVhdGVkIEJJTyBoYW5kbGUKK0BwYXJhbSBiaW8gQklPIGhhbmRsZSB0byBkZXN0cm95CisqLwordm9pZCBvcGpfYmlvX2Rlc3Ryb3kob3BqX2Jpb190ICpiaW8pOworLyoqCitOdW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KK0BwYXJhbSBiaW8gQklPIGhhbmRsZQorQHJldHVybiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbgorKi8KK3B0cmRpZmZfdCBvcGpfYmlvX251bWJ5dGVzKG9wal9iaW9fdCAqYmlvKTsKKy8qKgorSW5pdCBlbmNvZGVyCitAcGFyYW0gYmlvIEJJTyBoYW5kbGUKK0BwYXJhbSBicCBPdXRwdXQgYnVmZmVyCitAcGFyYW0gbGVuIE91dHB1dCBidWZmZXIgbGVuZ3RoIAorKi8KK3ZvaWQgb3BqX2Jpb19pbml0X2VuYyhvcGpfYmlvX3QgKmJpbywgT1BKX0JZVEUgKmJwLCBPUEpfVUlOVDMyIGxlbik7CisvKioKK0luaXQgZGVjb2RlcgorQHBhcmFtIGJpbyBCSU8gaGFuZGxlCitAcGFyYW0gYnAgSW5wdXQgYnVmZmVyCitAcGFyYW0gbGVuIElucHV0IGJ1ZmZlciBsZW5ndGggCisqLwordm9pZCBvcGpfYmlvX2luaXRfZGVjKG9wal9iaW9fdCAqYmlvLCBPUEpfQllURSAqYnAsIE9QSl9VSU5UMzIgbGVuKTsKKy8qKgorV3JpdGUgYml0cworQHBhcmFtIGJpbyBCSU8gaGFuZGxlCitAcGFyYW0gdiBWYWx1ZSBvZiBiaXRzCitAcGFyYW0gbiBOdW1iZXIgb2YgYml0cyB0byB3cml0ZQorKi8KK3ZvaWQgb3BqX2Jpb193cml0ZShvcGpfYmlvX3QgKmJpbywgT1BKX1VJTlQzMiB2LCBPUEpfVUlOVDMyIG4pOworLyoqCitSZWFkIGJpdHMKK0BwYXJhbSBiaW8gQklPIGhhbmRsZQorQHBhcmFtIG4gTnVtYmVyIG9mIGJpdHMgdG8gcmVhZCAKK0ByZXR1cm4gUmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByZWFkIG51bWJlcgorKi8KK09QSl9VSU5UMzIgb3BqX2Jpb19yZWFkKG9wal9iaW9fdCAqYmlvLCBPUEpfVUlOVDMyIG4pOworLyoqCitGbHVzaCBiaXRzCitAcGFyYW0gYmlvIEJJTyBoYW5kbGUKK0ByZXR1cm4gUmV0dXJucyBPUEpfVFJVRSBpZiBzdWNjZXNzZnVsLCByZXR1cm5zIE9QSl9GQUxTRSBvdGhlcndpc2UKKyovCitPUEpfQk9PTCBvcGpfYmlvX2ZsdXNoKG9wal9iaW9fdCAqYmlvKTsKKy8qKgorUGFzc2VzIHRoZSBlbmRpbmcgYml0cyAoY29taW5nIGZyb20gZmx1c2hpbmcpCitAcGFyYW0gYmlvIEJJTyBoYW5kbGUKK0ByZXR1cm4gUmV0dXJucyBPUEpfVFJVRSBpZiBzdWNjZXNzZnVsLCByZXR1cm5zIE9QSl9GQUxTRSBvdGhlcndpc2UKKyovCitPUEpfQk9PTCBvcGpfYmlvX2luYWxpZ24ob3BqX2Jpb190ICpiaW8pOworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qQH0qLworCisvKkB9Ki8KKworI2VuZGlmIC8qIF9fQklPX0ggKi8KKwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2Npby5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2Npby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYmE2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvY2lvLmMKQEAgLTAsMCArMSw2NTggQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgVW5pdmVyc2l0ZSBjYXRob2xpcXVlIGRlIExvdXZhaW4gKFVDTCksIEJlbGdpdW0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBQcm9mZXNzb3IgQmVub2l0IE1hY3EKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDAzLCBEYXZpZCBKYW5zc2VucworICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMsIFlhbm5pY2sgVmVyc2NodWVyZW4KKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA3LCBGcmFuY29pcy1PbGl2aWVyIERldmF1eCAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDE0LCBBbnRvbmluIERlc2NhbXBlCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMS0yMDEyLCBDZW50cmUgTmF0aW9uYWwgZCdFdHVkZXMgU3BhdGlhbGVzIChDTkVTKSwgRlIgCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIENTIFN5c3RlbWVzIGQnSW5mb3JtYXRpb24sIEZyYW5jZQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAib3BqX2luY2x1ZGVzLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBvcGpfd3JpdGVfYnl0ZXNfQkUgKE9QSl9CWVRFICogcF9idWZmZXIsIE9QSl9VSU5UMzIgcF92YWx1ZSwgT1BKX1VJTlQzMiBwX25iX2J5dGVzKQoreworCWNvbnN0IE9QSl9CWVRFICogbF9kYXRhX3B0ciA9ICgoY29uc3QgT1BKX0JZVEUgKikgJnBfdmFsdWUpICsgcF9uYl9ieXRlczsKKworCWFzc2VydChwX25iX2J5dGVzID4gMCAmJiBwX25iX2J5dGVzIDw9ICBzaXplb2YoT1BKX1VJTlQzMikpOworCisJbWVtY3B5KHBfYnVmZmVyLGxfZGF0YV9wdHIscF9uYl9ieXRlcyk7Cit9CisKK3ZvaWQgb3BqX3dyaXRlX2J5dGVzX0xFIChPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfVUlOVDMyIHBfdmFsdWUsIE9QSl9VSU5UMzIgcF9uYl9ieXRlcykKK3sKKwljb25zdCBPUEpfQllURSAqIGxfZGF0YV9wdHIgPSAoKGNvbnN0IE9QSl9CWVRFICopICZwX3ZhbHVlKSArIHBfbmJfYnl0ZXMgLSAxOworCU9QSl9VSU5UMzIgaTsKKworCWFzc2VydChwX25iX2J5dGVzID4gMCAmJiBwX25iX2J5dGVzIDw9IHNpemVvZihPUEpfVUlOVDMyKSk7CisKKwlmb3IJKGk9MDtpPHBfbmJfYnl0ZXM7KytpKSB7CisJCSoocF9idWZmZXIrKykgPSAqKGxfZGF0YV9wdHItLSk7CisJfQorfQorCit2b2lkIG9wal9yZWFkX2J5dGVzX0JFKGNvbnN0IE9QSl9CWVRFICogcF9idWZmZXIsIE9QSl9VSU5UMzIgKiBwX3ZhbHVlLCBPUEpfVUlOVDMyIHBfbmJfYnl0ZXMpCit7CisJT1BKX0JZVEUgKiBsX2RhdGFfcHRyID0gKChPUEpfQllURSAqKSBwX3ZhbHVlKTsKKworCWFzc2VydChwX25iX2J5dGVzID4gMCAmJiBwX25iX2J5dGVzIDw9IHNpemVvZihPUEpfVUlOVDMyKSk7CisKKwkqcF92YWx1ZSA9IDA7CisJbWVtY3B5KGxfZGF0YV9wdHIrNC1wX25iX2J5dGVzLHBfYnVmZmVyLHBfbmJfYnl0ZXMpOworfQorCit2b2lkIG9wal9yZWFkX2J5dGVzX0xFKGNvbnN0IE9QSl9CWVRFICogcF9idWZmZXIsIE9QSl9VSU5UMzIgKiBwX3ZhbHVlLCBPUEpfVUlOVDMyIHBfbmJfYnl0ZXMpCit7CisJT1BKX0JZVEUgKiBsX2RhdGFfcHRyID0gKChPUEpfQllURSAqKSBwX3ZhbHVlKSArIHBfbmJfYnl0ZXMtMTsKKwlPUEpfVUlOVDMyIGk7CisKKwlhc3NlcnQocF9uYl9ieXRlcyA+IDAgJiYgcF9uYl9ieXRlcyA8PSBzaXplb2YoT1BKX1VJTlQzMikpOworCisJKnBfdmFsdWUgPSAwOworCWZvciAoaT0wO2k8cF9uYl9ieXRlczsrK2kpIHsKKwkJKihsX2RhdGFfcHRyLS0pID0gKihwX2J1ZmZlcisrKTsKKwl9Cit9CisKK3ZvaWQgb3BqX3dyaXRlX2RvdWJsZV9CRShPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfRkxPQVQ2NCBwX3ZhbHVlKQoreworCWNvbnN0IE9QSl9CWVRFICogbF9kYXRhX3B0ciA9ICgoY29uc3QgT1BKX0JZVEUgKikgJnBfdmFsdWUpOworCW1lbWNweShwX2J1ZmZlcixsX2RhdGFfcHRyLHNpemVvZihPUEpfRkxPQVQ2NCkpOworfQorCit2b2lkIG9wal93cml0ZV9kb3VibGVfTEUoT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX0ZMT0FUNjQgcF92YWx1ZSkKK3sKKwljb25zdCBPUEpfQllURSAqIGxfZGF0YV9wdHIgPSAoKGNvbnN0IE9QSl9CWVRFICopICZwX3ZhbHVlKSArIHNpemVvZihPUEpfRkxPQVQ2NCkgLSAxOworCU9QSl9VSU5UMzIgaTsKKwlmb3IJKGk9MDtpPHNpemVvZihPUEpfRkxPQVQ2NCk7KytpKSB7CisJCSoocF9idWZmZXIrKykgPSAqKGxfZGF0YV9wdHItLSk7CisJfQorfQorCit2b2lkIG9wal9yZWFkX2RvdWJsZV9CRShjb25zdCBPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfRkxPQVQ2NCAqIHBfdmFsdWUpCit7CisJT1BKX0JZVEUgKiBsX2RhdGFfcHRyID0gKChPUEpfQllURSAqKSBwX3ZhbHVlKTsKKwltZW1jcHkobF9kYXRhX3B0cixwX2J1ZmZlcixzaXplb2YoT1BKX0ZMT0FUNjQpKTsKK30KKwordm9pZCBvcGpfcmVhZF9kb3VibGVfTEUoY29uc3QgT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX0ZMT0FUNjQgKiBwX3ZhbHVlKQoreworCU9QSl9CWVRFICogbF9kYXRhX3B0ciA9ICgoT1BKX0JZVEUgKikgcF92YWx1ZSkgKyBzaXplb2YoT1BKX0ZMT0FUNjQpLTE7CisJT1BKX1VJTlQzMiBpOworCWZvciAoaT0wO2k8c2l6ZW9mKE9QSl9GTE9BVDY0KTsrK2kpIHsKKwkJKihsX2RhdGFfcHRyLS0pID0gKihwX2J1ZmZlcisrKTsKKwl9Cit9CisKK3ZvaWQgb3BqX3dyaXRlX2Zsb2F0X0JFKE9QSl9CWVRFICogcF9idWZmZXIsIE9QSl9GTE9BVDMyIHBfdmFsdWUpCit7CisJY29uc3QgT1BKX0JZVEUgKiBsX2RhdGFfcHRyID0gKChjb25zdCBPUEpfQllURSAqKSAmcF92YWx1ZSk7CisJbWVtY3B5KHBfYnVmZmVyLGxfZGF0YV9wdHIsc2l6ZW9mKE9QSl9GTE9BVDMyKSk7Cit9CisKK3ZvaWQgb3BqX3dyaXRlX2Zsb2F0X0xFKE9QSl9CWVRFICogcF9idWZmZXIsIE9QSl9GTE9BVDMyIHBfdmFsdWUpCit7CisJY29uc3QgT1BKX0JZVEUgKiBsX2RhdGFfcHRyID0gKChjb25zdCBPUEpfQllURSAqKSAmcF92YWx1ZSkgKyBzaXplb2YoT1BKX0ZMT0FUMzIpIC0gMTsKKwlPUEpfVUlOVDMyIGk7CisJZm9yCShpPTA7aTxzaXplb2YoT1BKX0ZMT0FUMzIpOysraSkgeworCQkqKHBfYnVmZmVyKyspID0gKihsX2RhdGFfcHRyLS0pOworCX0KK30KKwordm9pZCBvcGpfcmVhZF9mbG9hdF9CRShjb25zdCBPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfRkxPQVQzMiAqIHBfdmFsdWUpCit7CisJT1BKX0JZVEUgKiBsX2RhdGFfcHRyID0gKChPUEpfQllURSAqKSBwX3ZhbHVlKTsKKwltZW1jcHkobF9kYXRhX3B0cixwX2J1ZmZlcixzaXplb2YoT1BKX0ZMT0FUMzIpKTsKK30KKwordm9pZCBvcGpfcmVhZF9mbG9hdF9MRShjb25zdCBPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfRkxPQVQzMiAqIHBfdmFsdWUpCit7CisJT1BKX0JZVEUgKiBsX2RhdGFfcHRyID0gKChPUEpfQllURSAqKSBwX3ZhbHVlKSArIHNpemVvZihPUEpfRkxPQVQzMiktMTsKKwlPUEpfVUlOVDMyIGk7CisJZm9yCShpPTA7aTxzaXplb2YoT1BKX0ZMT0FUMzIpOysraSkgeworCQkqKGxfZGF0YV9wdHItLSkgPSAqKHBfYnVmZmVyKyspOworCX0KK30KKworb3BqX3N0cmVhbV90KiBPUEpfQ0FMTENPTlYgb3BqX3N0cmVhbV9jcmVhdGUoT1BKX1NJWkVfVCBwX2J1ZmZlcl9zaXplLE9QSl9CT09MIGxfaXNfaW5wdXQpCit7CisJb3BqX3N0cmVhbV9wcml2YXRlX3QgKiBsX3N0cmVhbSA9IDAwOworCWxfc3RyZWFtID0gKG9wal9zdHJlYW1fcHJpdmF0ZV90Kikgb3BqX21hbGxvYyhzaXplb2Yob3BqX3N0cmVhbV9wcml2YXRlX3QpKTsKKwlpZiAoISBsX3N0cmVhbSkgeworCQlyZXR1cm4gMDA7CisJfQorCisJbWVtc2V0KGxfc3RyZWFtLDAsc2l6ZW9mKG9wal9zdHJlYW1fcHJpdmF0ZV90KSk7CisJbF9zdHJlYW0tPm1fYnVmZmVyX3NpemUgPSBwX2J1ZmZlcl9zaXplOworCWxfc3RyZWFtLT5tX3N0b3JlZF9kYXRhID0gKE9QSl9CWVRFICopIG9wal9tYWxsb2MocF9idWZmZXJfc2l6ZSk7CisJaWYgKCEgbF9zdHJlYW0tPm1fc3RvcmVkX2RhdGEpIHsKKwkJb3BqX2ZyZWUobF9zdHJlYW0pOworCQlyZXR1cm4gMDA7CisJfQorCisJbF9zdHJlYW0tPm1fY3VycmVudF9kYXRhID0gbF9zdHJlYW0tPm1fc3RvcmVkX2RhdGE7CisKKwlpZiAobF9pc19pbnB1dCkgeworCQlsX3N0cmVhbS0+bV9zdGF0dXMgfD0gb3BqX3N0cmVhbV9lX2lucHV0OworCQlsX3N0cmVhbS0+bV9vcGpfc2tpcCA9IG9wal9zdHJlYW1fcmVhZF9za2lwOworCQlsX3N0cmVhbS0+bV9vcGpfc2VlayA9IG9wal9zdHJlYW1fcmVhZF9zZWVrOworCX0KKwllbHNlIHsKKwkJbF9zdHJlYW0tPm1fc3RhdHVzIHw9IG9wal9zdHJlYW1fZV9vdXRwdXQ7CisJCWxfc3RyZWFtLT5tX29wal9za2lwID0gb3BqX3N0cmVhbV93cml0ZV9za2lwOworCQlsX3N0cmVhbS0+bV9vcGpfc2VlayA9IG9wal9zdHJlYW1fd3JpdGVfc2VlazsKKwl9CisKKwlsX3N0cmVhbS0+bV9yZWFkX2ZuID0gb3BqX3N0cmVhbV9kZWZhdWx0X3JlYWQ7CisJbF9zdHJlYW0tPm1fd3JpdGVfZm4gPSBvcGpfc3RyZWFtX2RlZmF1bHRfd3JpdGU7CisJbF9zdHJlYW0tPm1fc2tpcF9mbiA9IG9wal9zdHJlYW1fZGVmYXVsdF9za2lwOworCWxfc3RyZWFtLT5tX3NlZWtfZm4gPSBvcGpfc3RyZWFtX2RlZmF1bHRfc2VlazsKKworCXJldHVybiAob3BqX3N0cmVhbV90ICopIGxfc3RyZWFtOworfQorCitvcGpfc3RyZWFtX3QqIE9QSl9DQUxMQ09OViBvcGpfc3RyZWFtX2RlZmF1bHRfY3JlYXRlKE9QSl9CT09MIGxfaXNfaW5wdXQpCit7CisJcmV0dXJuIG9wal9zdHJlYW1fY3JlYXRlKE9QSl9KMktfU1RSRUFNX0NIVU5LX1NJWkUsbF9pc19pbnB1dCk7Cit9CisKK3ZvaWQgT1BKX0NBTExDT05WIG9wal9zdHJlYW1fZGVzdHJveShvcGpfc3RyZWFtX3QqIHBfc3RyZWFtKQoreworCW9wal9zdHJlYW1fcHJpdmF0ZV90KiBsX3N0cmVhbSA9IChvcGpfc3RyZWFtX3ByaXZhdGVfdCopIHBfc3RyZWFtOworCQorCWlmIChsX3N0cmVhbSkgeworCQlpZiAobF9zdHJlYW0tPm1fZnJlZV91c2VyX2RhdGFfZm4pIHsKKwkJCWxfc3RyZWFtLT5tX2ZyZWVfdXNlcl9kYXRhX2ZuKGxfc3RyZWFtLT5tX3VzZXJfZGF0YSk7CisJCX0KKwkJb3BqX2ZyZWUobF9zdHJlYW0tPm1fc3RvcmVkX2RhdGEpOworCQlsX3N0cmVhbS0+bV9zdG9yZWRfZGF0YSA9IDAwOworCQlvcGpfZnJlZShsX3N0cmVhbSk7CisJfQorfQorCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfc3RyZWFtX2Rlc3Ryb3lfdjMob3BqX3N0cmVhbV90KiBwX3N0cmVhbSkKK3sKKwlvcGpfc3RyZWFtX2Rlc3Ryb3kocF9zdHJlYW0pOworfQorCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfc3RyZWFtX3NldF9yZWFkX2Z1bmN0aW9uKG9wal9zdHJlYW1fdCogcF9zdHJlYW0sIG9wal9zdHJlYW1fcmVhZF9mbiBwX2Z1bmN0aW9uKQoreworCW9wal9zdHJlYW1fcHJpdmF0ZV90KiBsX3N0cmVhbSA9IChvcGpfc3RyZWFtX3ByaXZhdGVfdCopIHBfc3RyZWFtOworCisJaWYgKCghbF9zdHJlYW0pIHx8ICghIChsX3N0cmVhbS0+bV9zdGF0dXMgJiBvcGpfc3RyZWFtX2VfaW5wdXQpKSkgeworCQlyZXR1cm47CisJfQorCisJbF9zdHJlYW0tPm1fcmVhZF9mbiA9IHBfZnVuY3Rpb247Cit9CisKK3ZvaWQgT1BKX0NBTExDT05WIG9wal9zdHJlYW1fc2V0X3NlZWtfZnVuY3Rpb24ob3BqX3N0cmVhbV90KiBwX3N0cmVhbSwgb3BqX3N0cmVhbV9zZWVrX2ZuIHBfZnVuY3Rpb24pCit7CisJb3BqX3N0cmVhbV9wcml2YXRlX3QqIGxfc3RyZWFtID0gKG9wal9zdHJlYW1fcHJpdmF0ZV90KikgcF9zdHJlYW07CisJCisJaWYgKCFsX3N0cmVhbSkgeworCQlyZXR1cm47CisJfQorCWxfc3RyZWFtLT5tX3NlZWtfZm4gPSBwX2Z1bmN0aW9uOworfQorCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfc3RyZWFtX3NldF93cml0ZV9mdW5jdGlvbihvcGpfc3RyZWFtX3QqIHBfc3RyZWFtLCBvcGpfc3RyZWFtX3dyaXRlX2ZuIHBfZnVuY3Rpb24pCit7CisJb3BqX3N0cmVhbV9wcml2YXRlX3QqIGxfc3RyZWFtID0gKG9wal9zdHJlYW1fcHJpdmF0ZV90KikgcF9zdHJlYW07CisJCisJaWYgKCghbF9zdHJlYW0gKXx8ICghIChsX3N0cmVhbS0+bV9zdGF0dXMgJiBvcGpfc3RyZWFtX2Vfb3V0cHV0KSkpIHsKKwkJcmV0dXJuOworCX0KKworCWxfc3RyZWFtLT5tX3dyaXRlX2ZuID0gcF9mdW5jdGlvbjsKK30KKwordm9pZCBPUEpfQ0FMTENPTlYgb3BqX3N0cmVhbV9zZXRfc2tpcF9mdW5jdGlvbihvcGpfc3RyZWFtX3QqIHBfc3RyZWFtLCBvcGpfc3RyZWFtX3NraXBfZm4gcF9mdW5jdGlvbikKK3sKKwlvcGpfc3RyZWFtX3ByaXZhdGVfdCogbF9zdHJlYW0gPSAob3BqX3N0cmVhbV9wcml2YXRlX3QqKSBwX3N0cmVhbTsKKwkKKwlpZiAoISBsX3N0cmVhbSkgeworCQlyZXR1cm47CisJfQorCisJbF9zdHJlYW0tPm1fc2tpcF9mbiA9IHBfZnVuY3Rpb247Cit9CisKK3ZvaWQgT1BKX0NBTExDT05WIG9wal9zdHJlYW1fc2V0X3VzZXJfZGF0YShvcGpfc3RyZWFtX3QqIHBfc3RyZWFtLCB2b2lkICogcF9kYXRhKQoreworCW9wal9zdHJlYW1fcHJpdmF0ZV90KiBsX3N0cmVhbSA9IChvcGpfc3RyZWFtX3ByaXZhdGVfdCopIHBfc3RyZWFtOworCWlmICghbF9zdHJlYW0pCisJCXJldHVybjsKKwlsX3N0cmVhbS0+bV91c2VyX2RhdGEgPSBwX2RhdGE7Cit9CisKK3ZvaWQgT1BKX0NBTExDT05WIG9wal9zdHJlYW1fc2V0X3VzZXJfZGF0YV92MyhvcGpfc3RyZWFtX3QqIHBfc3RyZWFtLCB2b2lkICogcF9kYXRhLCBvcGpfc3RyZWFtX2ZyZWVfdXNlcl9kYXRhX2ZuIHBfZnVuY3Rpb24pCit7CisJb3BqX3N0cmVhbV9wcml2YXRlX3QqIGxfc3RyZWFtID0gKG9wal9zdHJlYW1fcHJpdmF0ZV90KikgcF9zdHJlYW07CisJaWYgKCFsX3N0cmVhbSkKKwkJcmV0dXJuOworCWxfc3RyZWFtLT5tX3VzZXJfZGF0YSA9IHBfZGF0YTsKKyAgbF9zdHJlYW0tPm1fZnJlZV91c2VyX2RhdGFfZm4gPSBwX2Z1bmN0aW9uOworfQorCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfc3RyZWFtX3NldF91c2VyX2RhdGFfbGVuZ3RoKG9wal9zdHJlYW1fdCogcF9zdHJlYW0sIE9QSl9VSU5UNjQgZGF0YV9sZW5ndGgpCit7CisJb3BqX3N0cmVhbV9wcml2YXRlX3QqIGxfc3RyZWFtID0gKG9wal9zdHJlYW1fcHJpdmF0ZV90KikgcF9zdHJlYW07CisJaWYgKCFsX3N0cmVhbSkKKwkJcmV0dXJuOworCWxfc3RyZWFtLT5tX3VzZXJfZGF0YV9sZW5ndGggPSBkYXRhX2xlbmd0aDsKK30KKworT1BKX1NJWkVfVCBvcGpfc3RyZWFtX3JlYWRfZGF0YSAob3BqX3N0cmVhbV9wcml2YXRlX3QgKiBwX3N0cmVhbSxPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfU0laRV9UIHBfc2l6ZSwgb3BqX2V2ZW50X21ncl90ICogcF9ldmVudF9tZ3IpCit7CisJT1BKX1NJWkVfVCBsX3JlYWRfbmJfYnl0ZXMgPSAwOworCWlmIChwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXIgPj0gcF9zaXplKSB7CisJCW1lbWNweShwX2J1ZmZlcixwX3N0cmVhbS0+bV9jdXJyZW50X2RhdGEscF9zaXplKTsKKwkJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhICs9IHBfc2l6ZTsKKwkJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyIC09IHBfc2l6ZTsKKwkJbF9yZWFkX25iX2J5dGVzICs9IHBfc2l6ZTsKKwkJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gKE9QSl9PRkZfVClwX3NpemU7CisJCXJldHVybiBsX3JlYWRfbmJfYnl0ZXM7CisJfQorCisJLyogd2UgYXJlIG5vdyBpbiB0aGUgY2FzZSB3aGVuIHRoZSByZW1haW5pbmcgZGF0YSBpZiBub3Qgc3VmZmljaWVudCAqLworCWlmIChwX3N0cmVhbS0+bV9zdGF0dXMgJiBvcGpfc3RyZWFtX2VfZW5kKSB7CisJCWxfcmVhZF9uYl9ieXRlcyArPSBwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCW1lbWNweShwX2J1ZmZlcixwX3N0cmVhbS0+bV9jdXJyZW50X2RhdGEscF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyKTsKKwkJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhICs9IHBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlcjsKKwkJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gKE9QSl9PRkZfVClwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCXBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlciA9IDA7CisJCXJldHVybiBsX3JlYWRfbmJfYnl0ZXMgPyBsX3JlYWRfbmJfYnl0ZXMgOiAoT1BKX1NJWkVfVCktMTsKKwl9CisKKwkvKiB0aGUgZmxhZyBpcyBub3Qgc2V0LCB3ZSBjb3B5IGRhdGEgYW5kIHRoZW4gZG8gYW4gYWN0dWFsIHJlYWQgb24gdGhlIHN0cmVhbSAqLworCWlmIChwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXIpIHsKKwkJbF9yZWFkX25iX2J5dGVzICs9IHBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlcjsKKwkJbWVtY3B5KHBfYnVmZmVyLHBfc3RyZWFtLT5tX2N1cnJlbnRfZGF0YSxwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXIpOworCQlwX3N0cmVhbS0+bV9jdXJyZW50X2RhdGEgPSBwX3N0cmVhbS0+bV9zdG9yZWRfZGF0YTsKKwkJcF9idWZmZXIgKz0gcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyOworCQlwX3NpemUgLT0gcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyOworCQlwX3N0cmVhbS0+bV9ieXRlX29mZnNldCArPSAoT1BKX09GRl9UKXBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlcjsKKwkJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyID0gMDsKKwl9CisJZWxzZSB7CisgICAgLyogY2FzZSB3aGVyZSB3ZSBhcmUgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIKKyAgICAgICBzbyByZXNldCB0aGUgbV9jdXJyZW50X2RhdGEgdG8gcG9pbnQgdG8gdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgIHN0b3JlZCBidWZmZXIgdG8gZ2V0IHJlYWR5IHRvIHJlYWQgZnJvbSBkaXNrKi8KKwkJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhID0gcF9zdHJlYW0tPm1fc3RvcmVkX2RhdGE7CisJfQorCisJd2hpbGUoMSl7CisJCS8qIHdlIHNob3VsZCByZWFkIGxlc3MgdGhhbiBhIGNodW5rIC0+IHJlYWQgYSBjaHVuayAqLworCQlpZiAocF9zaXplIDwgcF9zdHJlYW0tPm1fYnVmZmVyX3NpemUpIHsKKwkJCS8qIHdlIHNob3VsZCBkbyBhbiBhY3R1YWwgcmVhZCBvbiB0aGUgbWVkaWEgKi8KKwkJCXBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlciA9IHBfc3RyZWFtLT5tX3JlYWRfZm4ocF9zdHJlYW0tPm1fc3RvcmVkX2RhdGEscF9zdHJlYW0tPm1fYnVmZmVyX3NpemUscF9zdHJlYW0tPm1fdXNlcl9kYXRhKTsKKworCQkJaWYgKHBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlciA9PSAoT1BKX1NJWkVfVCktMSkgeworCQkJCS8qIGVuZCBvZiBzdHJlYW0gKi8KKwkJCQlvcGpfZXZlbnRfbXNnKHBfZXZlbnRfbWdyLCBFVlRfSU5GTywgIlN0cmVhbSByZWFjaGVkIGl0cyBlbmQgIVxuIik7CisKKwkJCQlwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXIgPSAwOworCQkJCXBfc3RyZWFtLT5tX3N0YXR1cyB8PSBvcGpfc3RyZWFtX2VfZW5kOworCQkJCS8qIGVuZCBvZiBzdHJlYW0gKi8KKwkJCQlyZXR1cm4gbF9yZWFkX25iX2J5dGVzID8gbF9yZWFkX25iX2J5dGVzIDogKE9QSl9TSVpFX1QpLTE7CisJCQl9CisJCQllbHNlIGlmCShwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXIgPCBwX3NpemUpIHsKKwkJCQkvKiBub3QgZW5vdWdoIGRhdGEgKi8KKwkJCQlsX3JlYWRfbmJfYnl0ZXMgKz0gcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyOworCQkJCW1lbWNweShwX2J1ZmZlcixwX3N0cmVhbS0+bV9jdXJyZW50X2RhdGEscF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyKTsKKwkJCQlwX3N0cmVhbS0+bV9jdXJyZW50X2RhdGEgPSBwX3N0cmVhbS0+bV9zdG9yZWRfZGF0YTsKKwkJCQlwX2J1ZmZlciArPSBwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCQkJcF9zaXplIC09IHBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlcjsKKwkJCQlwX3N0cmVhbS0+bV9ieXRlX29mZnNldCArPSAoT1BKX09GRl9UKXBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlcjsKKwkJCQlwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXIgPSAwOworCQkJfQorCQkJZWxzZSB7CisJCQkJbF9yZWFkX25iX2J5dGVzICs9IHBfc2l6ZTsKKwkJCQltZW1jcHkocF9idWZmZXIscF9zdHJlYW0tPm1fY3VycmVudF9kYXRhLHBfc2l6ZSk7CisJCQkJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhICs9IHBfc2l6ZTsKKwkJCQlwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXIgLT0gcF9zaXplOworCQkJCXBfc3RyZWFtLT5tX2J5dGVfb2Zmc2V0ICs9IChPUEpfT0ZGX1QpcF9zaXplOworCQkJCXJldHVybiBsX3JlYWRfbmJfYnl0ZXM7CisJCQl9CisJCX0KKwkJZWxzZSB7CisJCQkvKiBkaXJlY3QgcmVhZCBvbiB0aGUgZGVzdCBidWZmZXIgKi8KKwkJCXBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlciA9IHBfc3RyZWFtLT5tX3JlYWRfZm4ocF9idWZmZXIscF9zaXplLHBfc3RyZWFtLT5tX3VzZXJfZGF0YSk7CisKKwkJCWlmIChwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXIgPT0gKE9QSl9TSVpFX1QpLTEpIHsKKwkJCQkvKiAgZW5kIG9mIHN0cmVhbSAqLworCQkJCW9wal9ldmVudF9tc2cocF9ldmVudF9tZ3IsIEVWVF9JTkZPLCAiU3RyZWFtIHJlYWNoZWQgaXRzIGVuZCAhXG4iKTsKKworCQkJCXBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlciA9IDA7CisJCQkJcF9zdHJlYW0tPm1fc3RhdHVzIHw9IG9wal9zdHJlYW1fZV9lbmQ7CisJCQkJLyogZW5kIG9mIHN0cmVhbSAqLworCQkJCXJldHVybiBsX3JlYWRfbmJfYnl0ZXMgPyBsX3JlYWRfbmJfYnl0ZXMgOiAoT1BKX1NJWkVfVCktMTsKKwkJCX0KKwkJCWVsc2UgaWYgKHBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlciA8IHBfc2l6ZSkgeworCQkJCS8qIG5vdCBlbm91Z2ggZGF0YSAqLworCQkJCWxfcmVhZF9uYl9ieXRlcyArPSBwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCQkJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhID0gcF9zdHJlYW0tPm1fc3RvcmVkX2RhdGE7CisJCQkJcF9idWZmZXIgKz0gcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyOworCQkJCXBfc2l6ZSAtPSBwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCQkJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gKE9QSl9PRkZfVClwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCQkJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyID0gMDsKKwkJCX0KKwkJCWVsc2UgeworCQkJCS8qIHdlIGhhdmUgcmVhZCB0aGUgZXhhY3Qgc2l6ZSAqLworCQkJCWxfcmVhZF9uYl9ieXRlcyArPSBwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCQkJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gKE9QSl9PRkZfVClwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCQkJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhID0gcF9zdHJlYW0tPm1fc3RvcmVkX2RhdGE7CisJCQkJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyID0gMDsKKwkJCQlyZXR1cm4gbF9yZWFkX25iX2J5dGVzOworCQkJfQorCQl9CisJfQorfQorCitPUEpfU0laRV9UIG9wal9zdHJlYW1fd3JpdGVfZGF0YSAob3BqX3N0cmVhbV9wcml2YXRlX3QgKiBwX3N0cmVhbSwKKwkJCQkJCQkJICBjb25zdCBPUEpfQllURSAqIHBfYnVmZmVyLAorCQkJCQkJCQkgIE9QSl9TSVpFX1QgcF9zaXplLCAKKwkJCQkJCQkJICBvcGpfZXZlbnRfbWdyX3QgKiBwX2V2ZW50X21ncikKK3sKKwlPUEpfU0laRV9UIGxfcmVtYWluaW5nX2J5dGVzID0gMDsKKwlPUEpfU0laRV9UIGxfd3JpdGVfbmJfYnl0ZXMgPSAwOworCisJaWYgKHBfc3RyZWFtLT5tX3N0YXR1cyAmIG9wal9zdHJlYW1fZV9lcnJvcikgeworCQlyZXR1cm4gKE9QSl9TSVpFX1QpLTE7CisJfQorCisJd2hpbGUoMSkgeworCQlsX3JlbWFpbmluZ19ieXRlcyA9IHBfc3RyZWFtLT5tX2J1ZmZlcl9zaXplIC0gcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyOworCQkKKwkJLyogd2UgaGF2ZSBtb3JlIG1lbW9yeSB0aGFuIHJlcXVpcmVkICovCisJCWlmIChsX3JlbWFpbmluZ19ieXRlcyA+PSBwX3NpemUpIHsKKwkJCW1lbWNweShwX3N0cmVhbS0+bV9jdXJyZW50X2RhdGEsIHBfYnVmZmVyLCBwX3NpemUpOworCQkJCisJCQlwX3N0cmVhbS0+bV9jdXJyZW50X2RhdGEgKz0gcF9zaXplOworCQkJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyICs9IHBfc2l6ZTsKKwkJCWxfd3JpdGVfbmJfYnl0ZXMgKz0gcF9zaXplOworCQkJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gKE9QSl9PRkZfVClwX3NpemU7CisJCQkKKwkJCXJldHVybiBsX3dyaXRlX25iX2J5dGVzOworCQl9CisKKwkJLyogd2UgY29weSBkYXRhIGFuZCB0aGVuIGRvIGFuIGFjdHVhbCByZWFkIG9uIHRoZSBzdHJlYW0gKi8KKwkJaWYgKGxfcmVtYWluaW5nX2J5dGVzKSB7CisJCQlsX3dyaXRlX25iX2J5dGVzICs9IGxfcmVtYWluaW5nX2J5dGVzOworCQkJCisJCQltZW1jcHkocF9zdHJlYW0tPm1fY3VycmVudF9kYXRhLHBfYnVmZmVyLGxfcmVtYWluaW5nX2J5dGVzKTsKKwkJCQorCQkJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhID0gcF9zdHJlYW0tPm1fc3RvcmVkX2RhdGE7CisJCQkKKwkJCXBfYnVmZmVyICs9IGxfcmVtYWluaW5nX2J5dGVzOworCQkJcF9zaXplIC09IGxfcmVtYWluaW5nX2J5dGVzOworCQkJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyICs9IGxfcmVtYWluaW5nX2J5dGVzOworCQkJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gKE9QSl9PRkZfVClsX3JlbWFpbmluZ19ieXRlczsKKwkJfQorCisJCWlmICghIG9wal9zdHJlYW1fZmx1c2gocF9zdHJlYW0sIHBfZXZlbnRfbWdyKSkgeworCQkJcmV0dXJuIChPUEpfU0laRV9UKS0xOworCQl9CisJfQorCit9CisKK09QSl9CT09MIG9wal9zdHJlYW1fZmx1c2ggKG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0sIG9wal9ldmVudF9tZ3JfdCAqIHBfZXZlbnRfbWdyKQoreworCS8qIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBvbiB0aGUgbWVkaWEuICovCisJT1BKX1NJWkVfVCBsX2N1cnJlbnRfd3JpdGVfbmJfYnl0ZXMgPSAwOworCisJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhID0gcF9zdHJlYW0tPm1fc3RvcmVkX2RhdGE7CisKKwl3aGlsZSAocF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyKSB7CisJCS8qIHdlIHNob3VsZCBkbyBhbiBhY3R1YWwgd3JpdGUgb24gdGhlIG1lZGlhICovCisJCWxfY3VycmVudF93cml0ZV9uYl9ieXRlcyA9IHBfc3RyZWFtLT5tX3dyaXRlX2ZuKHBfc3RyZWFtLT5tX2N1cnJlbnRfZGF0YSwKKwkJCQkJCQkJCQkJCQkJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyLAorCQkJCQkJCQkJCQkJCQlwX3N0cmVhbS0+bV91c2VyX2RhdGEpOworCQkKKwkJaWYgKGxfY3VycmVudF93cml0ZV9uYl9ieXRlcyA9PSAoT1BKX1NJWkVfVCktMSkgeworCQkJcF9zdHJlYW0tPm1fc3RhdHVzIHw9IG9wal9zdHJlYW1fZV9lcnJvcjsKKwkJCW9wal9ldmVudF9tc2cocF9ldmVudF9tZ3IsIEVWVF9JTkZPLCAiRXJyb3Igb24gd3JpdGluZyBzdHJlYW0hXG4iKTsKKworCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJfQorCisJCXBfc3RyZWFtLT5tX2N1cnJlbnRfZGF0YSArPSBsX2N1cnJlbnRfd3JpdGVfbmJfYnl0ZXM7CisJCXBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlciAtPSBsX2N1cnJlbnRfd3JpdGVfbmJfYnl0ZXM7CisJfQorCisJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhID0gcF9zdHJlYW0tPm1fc3RvcmVkX2RhdGE7CisJCisJcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfT0ZGX1Qgb3BqX3N0cmVhbV9yZWFkX3NraXAgKG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0sIE9QSl9PRkZfVCBwX3NpemUsIG9wal9ldmVudF9tZ3JfdCAqIHBfZXZlbnRfbWdyKQoreworCU9QSl9PRkZfVCBsX3NraXBfbmJfYnl0ZXMgPSAwOworCU9QSl9PRkZfVCBsX2N1cnJlbnRfc2tpcF9uYl9ieXRlcyA9IDA7CisJCisJYXNzZXJ0KCBwX3NpemUgPj0gMCApOworCQorCWlmIChwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXIgPj0gKE9QSl9TSVpFX1QpcF9zaXplKSB7CisJCXBfc3RyZWFtLT5tX2N1cnJlbnRfZGF0YSArPSBwX3NpemU7CisJCS8qIGl0IGlzIHNhZmUgdG8gY2FzdCBwX3NpemUgdG8gT1BKX1NJWkVfVCBzaW5jZSBpdCBpcyA8PSBtX2J5dGVzX2luX2J1ZmZlcgorCQl3aGljaCBpcyBvZiB0eXBlIE9QSl9TSVpFX1QgKi8KKwkJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyIC09IChPUEpfU0laRV9UKXBfc2l6ZTsKKwkJbF9za2lwX25iX2J5dGVzICs9IHBfc2l6ZTsKKwkJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gbF9za2lwX25iX2J5dGVzOworCQlyZXR1cm4gbF9za2lwX25iX2J5dGVzOworCX0KKworCS8qIHdlIGFyZSBub3cgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgcmVtYWluaW5nIGRhdGEgaWYgbm90IHN1ZmZpY2llbnQgKi8KKwlpZiAocF9zdHJlYW0tPm1fc3RhdHVzICYgb3BqX3N0cmVhbV9lX2VuZCkgeworCQlsX3NraXBfbmJfYnl0ZXMgKz0gKE9QSl9PRkZfVClwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCXBfc3RyZWFtLT5tX2N1cnJlbnRfZGF0YSArPSBwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCXBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlciA9IDA7CisJCXBfc3RyZWFtLT5tX2J5dGVfb2Zmc2V0ICs9IGxfc2tpcF9uYl9ieXRlczsKKwkJcmV0dXJuIGxfc2tpcF9uYl9ieXRlcyA/IGxfc2tpcF9uYl9ieXRlcyA6IChPUEpfT0ZGX1QpIC0xOworCX0KKworCS8qIHRoZSBmbGFnIGlzIG5vdCBzZXQsIHdlIGNvcHkgZGF0YSBhbmQgdGhlbiBkbyBhbiBhY3R1YWwgc2tpcCBvbiB0aGUgc3RyZWFtICovCisJaWYgKHBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlcikgeworCQlsX3NraXBfbmJfYnl0ZXMgKz0gKE9QSl9PRkZfVClwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCXBfc3RyZWFtLT5tX2N1cnJlbnRfZGF0YSA9IHBfc3RyZWFtLT5tX3N0b3JlZF9kYXRhOworCQlwX3NpemUgLT0gKE9QSl9PRkZfVClwX3N0cmVhbS0+bV9ieXRlc19pbl9idWZmZXI7CisJCXBfc3RyZWFtLT5tX2J5dGVzX2luX2J1ZmZlciA9IDA7CisJfQorCisJd2hpbGUgKHBfc2l6ZSA+IDApIHsKKwkJLyogd2Ugc2hvdWxkIGRvIGFuIGFjdHVhbCBza2lwIG9uIHRoZSBtZWRpYSAqLworCQlsX2N1cnJlbnRfc2tpcF9uYl9ieXRlcyA9IHBfc3RyZWFtLT5tX3NraXBfZm4ocF9zaXplLCBwX3N0cmVhbS0+bV91c2VyX2RhdGEpOworCQlpZiAobF9jdXJyZW50X3NraXBfbmJfYnl0ZXMgPT0gKE9QSl9PRkZfVCkgLTEpIHsKKwkJCW9wal9ldmVudF9tc2cocF9ldmVudF9tZ3IsIEVWVF9JTkZPLCAiU3RyZWFtIHJlYWNoZWQgaXRzIGVuZCAhXG4iKTsKKworCQkJcF9zdHJlYW0tPm1fc3RhdHVzIHw9IG9wal9zdHJlYW1fZV9lbmQ7CisJCQlwX3N0cmVhbS0+bV9ieXRlX29mZnNldCArPSBsX3NraXBfbmJfYnl0ZXM7CisJCQkvKiBlbmQgaWYgc3RyZWFtICovCisJCQlyZXR1cm4gbF9za2lwX25iX2J5dGVzID8gbF9za2lwX25iX2J5dGVzIDogKE9QSl9PRkZfVCkgLTE7CisJCX0KKwkJcF9zaXplIC09IGxfY3VycmVudF9za2lwX25iX2J5dGVzOworCQlsX3NraXBfbmJfYnl0ZXMgKz0gbF9jdXJyZW50X3NraXBfbmJfYnl0ZXM7CisJfQorCisJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gbF9za2lwX25iX2J5dGVzOworCQorCXJldHVybiBsX3NraXBfbmJfYnl0ZXM7Cit9CisKK09QSl9PRkZfVCBvcGpfc3RyZWFtX3dyaXRlX3NraXAgKG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0sIE9QSl9PRkZfVCBwX3NpemUsIG9wal9ldmVudF9tZ3JfdCAqIHBfZXZlbnRfbWdyKQoreworCU9QSl9CT09MIGxfaXNfd3JpdHRlbiA9IDA7CisJT1BKX09GRl9UIGxfY3VycmVudF9za2lwX25iX2J5dGVzID0gMDsKKwlPUEpfT0ZGX1QgbF9za2lwX25iX2J5dGVzID0gMDsKKworCWlmIChwX3N0cmVhbS0+bV9zdGF0dXMgJiBvcGpfc3RyZWFtX2VfZXJyb3IpIHsKKwkJcmV0dXJuIChPUEpfT0ZGX1QpIC0xOworCX0KKworCS8qIHdlIHNob3VsZCBmbHVzaCBkYXRhICovCisJbF9pc193cml0dGVuID0gb3BqX3N0cmVhbV9mbHVzaCAocF9zdHJlYW0sIHBfZXZlbnRfbWdyKTsKKwlpZiAoISBsX2lzX3dyaXR0ZW4pIHsKKwkJcF9zdHJlYW0tPm1fc3RhdHVzIHw9IG9wal9zdHJlYW1fZV9lcnJvcjsKKwkJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyID0gMDsKKwkJcmV0dXJuIChPUEpfT0ZGX1QpIC0xOworCX0KKwkvKiB0aGVuIHNraXAgKi8KKworCXdoaWxlIChwX3NpemUgPiAwKSB7CisJCS8qIHdlIHNob3VsZCBkbyBhbiBhY3R1YWwgc2tpcCBvbiB0aGUgbWVkaWEgKi8KKwkJbF9jdXJyZW50X3NraXBfbmJfYnl0ZXMgPSBwX3N0cmVhbS0+bV9za2lwX2ZuKHBfc2l6ZSwgcF9zdHJlYW0tPm1fdXNlcl9kYXRhKTsKKwkJCisJCWlmIChsX2N1cnJlbnRfc2tpcF9uYl9ieXRlcyA9PSAoT1BKX09GRl9UKS0xKSB7CisJCQlvcGpfZXZlbnRfbXNnKHBfZXZlbnRfbWdyLCBFVlRfSU5GTywgIlN0cmVhbSBlcnJvciFcbiIpOworCisJCQlwX3N0cmVhbS0+bV9zdGF0dXMgfD0gb3BqX3N0cmVhbV9lX2Vycm9yOworCQkJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gbF9za2lwX25iX2J5dGVzOworCQkJLyogZW5kIGlmIHN0cmVhbSAqLworCQkJcmV0dXJuIGxfc2tpcF9uYl9ieXRlcyA/IGxfc2tpcF9uYl9ieXRlcyA6IChPUEpfT0ZGX1QpLTE7CisJCX0KKwkJcF9zaXplIC09IGxfY3VycmVudF9za2lwX25iX2J5dGVzOworCQlsX3NraXBfbmJfYnl0ZXMgKz0gbF9jdXJyZW50X3NraXBfbmJfYnl0ZXM7CisJfQorCisJcF9zdHJlYW0tPm1fYnl0ZV9vZmZzZXQgKz0gbF9za2lwX25iX2J5dGVzOworCQorCXJldHVybiBsX3NraXBfbmJfYnl0ZXM7Cit9CisKK09QSl9PRkZfVCBvcGpfc3RyZWFtX3RlbGwgKGNvbnN0IG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0pCit7CisJcmV0dXJuIHBfc3RyZWFtLT5tX2J5dGVfb2Zmc2V0OworfQorCitPUEpfT0ZGX1Qgb3BqX3N0cmVhbV9nZXRfbnVtYmVyX2J5dGVfbGVmdCAoY29uc3Qgb3BqX3N0cmVhbV9wcml2YXRlX3QgKiBwX3N0cmVhbSkKK3sKKyAgYXNzZXJ0KCBwX3N0cmVhbS0+bV9ieXRlX29mZnNldCA+PSAwICk7CisgIGFzc2VydCggcF9zdHJlYW0tPm1fdXNlcl9kYXRhX2xlbmd0aCA+PSAoT1BKX1VJTlQ2NClwX3N0cmVhbS0+bV9ieXRlX29mZnNldCk7CisgIHJldHVybiBwX3N0cmVhbS0+bV91c2VyX2RhdGFfbGVuZ3RoID8KKwkJCQkoT1BKX09GRl9UKShwX3N0cmVhbS0+bV91c2VyX2RhdGFfbGVuZ3RoKSAtIHBfc3RyZWFtLT5tX2J5dGVfb2Zmc2V0IDoKKwkJCQkwOworfQorCitPUEpfT0ZGX1Qgb3BqX3N0cmVhbV9za2lwIChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIHBfc3RyZWFtLCBPUEpfT0ZGX1QgcF9zaXplLCBvcGpfZXZlbnRfbWdyX3QgKiBwX2V2ZW50X21ncikKK3sKKwlhc3NlcnQocF9zaXplID49IDApOworCXJldHVybiBwX3N0cmVhbS0+bV9vcGpfc2tpcChwX3N0cmVhbSxwX3NpemUscF9ldmVudF9tZ3IpOworfQorCitPUEpfQk9PTCBvcGpfc3RyZWFtX3JlYWRfc2VlayAob3BqX3N0cmVhbV9wcml2YXRlX3QgKiBwX3N0cmVhbSwgT1BKX09GRl9UIHBfc2l6ZSwgb3BqX2V2ZW50X21ncl90ICogcF9ldmVudF9tZ3IpCit7CisJT1BKX0FSR19OT1RfVVNFRChwX2V2ZW50X21ncik7CisJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhID0gcF9zdHJlYW0tPm1fc3RvcmVkX2RhdGE7CisJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyID0gMDsKKworCWlmKCAhKHBfc3RyZWFtLT5tX3NlZWtfZm4ocF9zaXplLHBfc3RyZWFtLT5tX3VzZXJfZGF0YSkpICkgeworCQlwX3N0cmVhbS0+bV9zdGF0dXMgfD0gb3BqX3N0cmVhbV9lX2VuZDsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisJZWxzZSB7CisJCS8qIHJlc2V0IHN0cmVhbSBzdGF0dXMgKi8KKwkJcF9zdHJlYW0tPm1fc3RhdHVzICY9ICh+b3BqX3N0cmVhbV9lX2VuZCk7CisJCXBfc3RyZWFtLT5tX2J5dGVfb2Zmc2V0ID0gcF9zaXplOworCisJfQorCisJcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfc3RyZWFtX3dyaXRlX3NlZWsgKG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0sIE9QSl9PRkZfVCBwX3NpemUsIG9wal9ldmVudF9tZ3JfdCAqIHBfZXZlbnRfbWdyKQoreworCWlmICghIG9wal9zdHJlYW1fZmx1c2gocF9zdHJlYW0scF9ldmVudF9tZ3IpKSB7CisJCXBfc3RyZWFtLT5tX3N0YXR1cyB8PSBvcGpfc3RyZWFtX2VfZXJyb3I7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJcF9zdHJlYW0tPm1fY3VycmVudF9kYXRhID0gcF9zdHJlYW0tPm1fc3RvcmVkX2RhdGE7CisJcF9zdHJlYW0tPm1fYnl0ZXNfaW5fYnVmZmVyID0gMDsKKworCWlmICghIHBfc3RyZWFtLT5tX3NlZWtfZm4ocF9zaXplLHBfc3RyZWFtLT5tX3VzZXJfZGF0YSkpIHsKKwkJcF9zdHJlYW0tPm1fc3RhdHVzIHw9IG9wal9zdHJlYW1fZV9lcnJvcjsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisJZWxzZSB7CisJCXBfc3RyZWFtLT5tX2J5dGVfb2Zmc2V0ID0gcF9zaXplOworCX0KKworCXJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX3N0cmVhbV9zZWVrIChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIHBfc3RyZWFtLCBPUEpfT0ZGX1QgcF9zaXplLCBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfZXZlbnRfbWdyKQoreworCWFzc2VydChwX3NpemUgPj0gMCk7CisJcmV0dXJuIHBfc3RyZWFtLT5tX29wal9zZWVrKHBfc3RyZWFtLHBfc2l6ZSxwX2V2ZW50X21ncik7Cit9CisKK09QSl9CT09MIG9wal9zdHJlYW1faGFzX3NlZWsgKGNvbnN0IG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0pCit7CisJcmV0dXJuIHBfc3RyZWFtLT5tX3NlZWtfZm4gIT0gb3BqX3N0cmVhbV9kZWZhdWx0X3NlZWs7Cit9CisKK09QSl9TSVpFX1Qgb3BqX3N0cmVhbV9kZWZhdWx0X3JlYWQgKHZvaWQgKiBwX2J1ZmZlciwgT1BKX1NJWkVfVCBwX25iX2J5dGVzLCB2b2lkICogcF91c2VyX2RhdGEpCit7CisJT1BKX0FSR19OT1RfVVNFRChwX2J1ZmZlcik7CisJT1BKX0FSR19OT1RfVVNFRChwX25iX2J5dGVzKTsKKwlPUEpfQVJHX05PVF9VU0VEKHBfdXNlcl9kYXRhKTsKKwlyZXR1cm4gKE9QSl9TSVpFX1QpIC0xOworfQorCitPUEpfU0laRV9UIG9wal9zdHJlYW1fZGVmYXVsdF93cml0ZSAodm9pZCAqIHBfYnVmZmVyLCBPUEpfU0laRV9UIHBfbmJfYnl0ZXMsIHZvaWQgKiBwX3VzZXJfZGF0YSkKK3sKKwlPUEpfQVJHX05PVF9VU0VEKHBfYnVmZmVyKTsKKwlPUEpfQVJHX05PVF9VU0VEKHBfbmJfYnl0ZXMpOworCU9QSl9BUkdfTk9UX1VTRUQocF91c2VyX2RhdGEpOworCXJldHVybiAoT1BKX1NJWkVfVCkgLTE7Cit9CisKK09QSl9PRkZfVCBvcGpfc3RyZWFtX2RlZmF1bHRfc2tpcCAoT1BKX09GRl9UIHBfbmJfYnl0ZXMsIHZvaWQgKiBwX3VzZXJfZGF0YSkKK3sKKwlPUEpfQVJHX05PVF9VU0VEKHBfbmJfYnl0ZXMpOworCU9QSl9BUkdfTk9UX1VTRUQocF91c2VyX2RhdGEpOworCXJldHVybiAoT1BKX09GRl9UKSAtMTsKK30KKworT1BKX0JPT0wgb3BqX3N0cmVhbV9kZWZhdWx0X3NlZWsgKE9QSl9PRkZfVCBwX25iX2J5dGVzLCB2b2lkICogcF91c2VyX2RhdGEpCit7CisJT1BKX0FSR19OT1RfVVNFRChwX25iX2J5dGVzKTsKKwlPUEpfQVJHX05PVF9VU0VEKHBfdXNlcl9kYXRhKTsKKwlyZXR1cm4gT1BKX0ZBTFNFOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2Npby5oIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2Npby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyOWQwNzMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvY2lvLmgKQEAgLTAsMCArMSwzOTkgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgVW5pdmVyc2l0ZSBjYXRob2xpcXVlIGRlIExvdXZhaW4gKFVDTCksIEJlbGdpdW0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBQcm9mZXNzb3IgQmVub2l0IE1hY3EKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDAzLCBEYXZpZCBKYW5zc2VucworICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMsIFlhbm5pY2sgVmVyc2NodWVyZW4KKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA3LCBGcmFuY29pcy1PbGl2aWVyIERldmF1eCAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDE0LCBBbnRvbmluIERlc2NhbXBlCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMS0yMDEyLCBDZW50cmUgTmF0aW9uYWwgZCdFdHVkZXMgU3BhdGlhbGVzIChDTkVTKSwgRlIgCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIENTIFN5c3RlbWVzIGQnSW5mb3JtYXRpb24sIEZyYW5jZQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIF9fQ0lPX0gKKyNkZWZpbmUgX19DSU9fSAorLyoqCitAZmlsZSBjaW8uaAorQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIGEgYnl0ZSBpbnB1dC1vdXRwdXQgcHJvY2VzcyAoQ0lPKQorCitUaGUgZnVuY3Rpb25zIGluIENJTy5DIGhhdmUgZm9yIGdvYWwgdG8gcmVhbGl6ZSBhIGJ5dGUgaW5wdXQgLyBvdXRwdXQgcHJvY2Vzcy4KKyovCisKKy8qKiBAZGVmZ3JvdXAgQ0lPIENJTyAtIGJ5dGUgaW5wdXQtb3V0cHV0IHN0cmVhbSAqLworLypAeyovCisKKyNpbmNsdWRlICJvcGpfY29uZmlnLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNpZiBkZWZpbmVkKE9QSl9CSUdfRU5ESUFOKQorCSNkZWZpbmUgb3BqX3dyaXRlX2J5dGVzCQlvcGpfd3JpdGVfYnl0ZXNfQkUKKwkjZGVmaW5lIG9wal9yZWFkX2J5dGVzCQlvcGpfcmVhZF9ieXRlc19CRQorCSNkZWZpbmUgb3BqX3dyaXRlX2RvdWJsZQlvcGpfd3JpdGVfZG91YmxlX0JFCisJI2RlZmluZSBvcGpfcmVhZF9kb3VibGUJCW9wal9yZWFkX2RvdWJsZV9CRQorCSNkZWZpbmUgb3BqX3dyaXRlX2Zsb2F0CQlvcGpfd3JpdGVfZmxvYXRfQkUKKwkjZGVmaW5lIG9wal9yZWFkX2Zsb2F0CQlvcGpfcmVhZF9mbG9hdF9CRQorI2Vsc2UKKwkjZGVmaW5lIG9wal93cml0ZV9ieXRlcwkJb3BqX3dyaXRlX2J5dGVzX0xFCisJI2RlZmluZSBvcGpfcmVhZF9ieXRlcwkJb3BqX3JlYWRfYnl0ZXNfTEUKKwkjZGVmaW5lIG9wal93cml0ZV9kb3VibGUJb3BqX3dyaXRlX2RvdWJsZV9MRQorCSNkZWZpbmUgb3BqX3JlYWRfZG91YmxlCQlvcGpfcmVhZF9kb3VibGVfTEUKKwkjZGVmaW5lIG9wal93cml0ZV9mbG9hdAkJb3BqX3dyaXRlX2Zsb2F0X0xFCisJI2RlZmluZSBvcGpfcmVhZF9mbG9hdAkJb3BqX3JlYWRfZmxvYXRfTEUKKyNlbmRpZgorCisKKwordHlwZWRlZiBlbnVtCit7CisJb3BqX3NpZ25lZF9zZW50aW5lbAkJPSAtMSwgLyogZG8gbm90IHVzZSBpbiBjb2RlICovCisJb3BqX3N0cmVhbV9lX291dHB1dAkJPSAweDEsCisJb3BqX3N0cmVhbV9lX2lucHV0CQk9IDB4MiwKKwlvcGpfc3RyZWFtX2VfZW5kCQk9IDB4NCwKKwlvcGpfc3RyZWFtX2VfZXJyb3IJCT0gMHg4Cit9CitvcGpfc3RyZWFtX2ZsYWcgOworCisvKioKK0J5dGUgaW5wdXQtb3V0cHV0IHN0cmVhbS4KKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUKK3sKKwkvKioKKwkgKiBVc2VyIGRhdGEsIGJlIGl0IGZpbGVzLCAuLi4gVGhlIGFjdHVhbCBkYXRhIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlIHN0cmVhbS4KKwkgKi8KKwl2b2lkICoJCQkJCW1fdXNlcl9kYXRhOworCisJLyoqCisJICogUG9pbnRlciB0byBmdW5jdGlvbiB0byBmcmVlIG1fdXNlcl9kYXRhIChOVUxMIGF0IGluaXRpYWxpemF0aW9uKQorCSAqIHdoZW4gZGVzdHJveWluZyB0aGUgc3RyZWFtLiBJZiBwb2ludGVyIGlzIE5VTEwgdGhlIGZ1bmN0aW9uIGlzIG5vdAorCSAqIGNhbGxlZCBhbmQgdGhlIG1fdXNlcl9kYXRhIGlzIG5vdCBmcmVlZCAoZXZlbiBpZiBub24tTlVMTCkuCisJICovCisJb3BqX3N0cmVhbV9mcmVlX3VzZXJfZGF0YV9mbgkJbV9mcmVlX3VzZXJfZGF0YV9mbjsKKworCS8qKgorCSAqIFVzZXIgZGF0YSBsZW5ndGgKKwkgKi8KKwlPUEpfVUlOVDY0IAkJCQltX3VzZXJfZGF0YV9sZW5ndGg7CisKKwkvKioKKwkgKiBQb2ludGVyIHRvIGFjdHVhbCByZWFkIGZ1bmN0aW9uIChOVUxMIGF0IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2lvLgorCSAqLworCW9wal9zdHJlYW1fcmVhZF9mbgkJbV9yZWFkX2ZuOworCisJLyoqCisJICogUG9pbnRlciB0byBhY3R1YWwgd3JpdGUgZnVuY3Rpb24gKE5VTEwgYXQgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjaW8uCisJICovCisJb3BqX3N0cmVhbV93cml0ZV9mbgkJbV93cml0ZV9mbjsKKworCS8qKgorCSAqIFBvaW50ZXIgdG8gYWN0dWFsIHNraXAgZnVuY3Rpb24gKE5VTEwgYXQgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjaW8uCisJICogVGhlcmUgaXMgbm8gc2VlayBmdW5jdGlvbiB0byBwcmV2ZW50IGZyb20gYmFjayBhbmQgZm9ydGggc2xvdyBwcm9jZWR1cmVzLgorCSAqLworCW9wal9zdHJlYW1fc2tpcF9mbgkJbV9za2lwX2ZuOworCisJLyoqCisJICogUG9pbnRlciB0byBhY3R1YWwgc2VlayBmdW5jdGlvbiAoaWYgYXZhaWxhYmxlKS4KKwkgKi8KKwlvcGpfc3RyZWFtX3NlZWtfZm4JCW1fc2Vla19mbjsKKworCS8qKgorCSAqIEFjdHVhbCBkYXRhIHN0b3JlZCBpbnRvIHRoZSBzdHJlYW0gaWYgcmVhZGVkIGZyb20uIERhdGEgaXMgcmVhZCBieSBjaHVuayBvZiBmaXhlZCBzaXplLgorCSAqIHlvdSBzaG91bGQgbmV2ZXIgYWNjZXNzIHRoaXMgZGF0YSBkaXJlY3RseS4KKwkgKi8KKwlPUEpfQllURSAqCQkJCQltX3N0b3JlZF9kYXRhOworCisJLyoqCisJICogUG9pbnRlciB0byB0aGUgY3VycmVudCByZWFkIGRhdGEuCisJICovCisJT1BKX0JZVEUgKgkJCQkJbV9jdXJyZW50X2RhdGE7CisKKyAgICAvKioKKyAgICAqIEZJWE1FIERPQy4KKyAgICAqLworCU9QSl9PRkZfVCAoKiBtX29wal9za2lwKShzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICogLE9QSl9PRkZfVCAsIHN0cnVjdCBvcGpfZXZlbnRfbWdyICopOworCisgICAgLyoqCisgICAgKiBGSVhNRSBET0MuCisgICAgKi8KKwlPUEpfQk9PTCAoKiBtX29wal9zZWVrKSAoc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqICwgT1BKX09GRl9UICwgc3RydWN0IG9wal9ldmVudF9tZ3IgKik7CisKKwkvKioKKwkgKiBudW1iZXIgb2YgYnl0ZXMgY29udGFpbmluZyBpbiB0aGUgYnVmZmVyLgorCSAqLworCU9QSl9TSVpFX1QJCQltX2J5dGVzX2luX2J1ZmZlcjsKKworCS8qKgorCSAqIFRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC93cml0dGVuIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtCisJICovCisJT1BKX09GRl9UCQkJbV9ieXRlX29mZnNldDsKKworCS8qKgorCSAqIFRoZSBzaXplIG9mIHRoZSBidWZmZXIuCisJICovCisJT1BKX1NJWkVfVAkJCW1fYnVmZmVyX3NpemU7CisKKwkvKioKKwkgKiBGbGFncyB0byB0ZWxsIHRoZSBzdGF0dXMgb2YgdGhlIHN0cmVhbS4KKwkgKi8KKwlvcGpfc3RyZWFtX2ZsYWcgbV9zdGF0dXM7CisKK30KK29wal9zdHJlYW1fcHJpdmF0ZV90OworCisvKiogQG5hbWUgRXhwb3J0ZWQgZnVuY3Rpb25zIChzZWUgYWxzbyBvcGVuanBlZy5oKSAqLworLypAeyovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoqCisgKiBXcml0ZSBzb21lIGJ5dGVzIHRvIHRoZSBnaXZlbiBkYXRhIGJ1ZmZlciwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIEJpZyBFbmRpYW4gY3B1cy4KKyAqIEBwYXJhbSBwX2J1ZmZlcgkJcG9pbnRlciB0aGUgZGF0YSBidWZmZXIgdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSBwX3ZhbHVlCQl0aGUgdmFsdWUgdG8gd3JpdGUKKyAqIEBwYXJhbSBwX25iX2J5dGVzCXRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUKKyovCit2b2lkIG9wal93cml0ZV9ieXRlc19CRSAoT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX1VJTlQzMiBwX3ZhbHVlLCBPUEpfVUlOVDMyIHBfbmJfYnl0ZXMpOworCisvKioKKyAqIFJlYWRzIHNvbWUgYnl0ZXMgZnJvbSB0aGUgZ2l2ZW4gZGF0YSBidWZmZXIsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbiBCaWcgRW5kaWFuIGNwdXMuCisgKiBAcGFyYW0gcF9idWZmZXIJCXBvaW50ZXIgdGhlIGRhdGEgYnVmZmVyIHRvIHJlYWQgZGF0YSBmcm9tLgorICogQHBhcmFtIHBfdmFsdWUJCXBvaW50ZXIgdG8gdGhlIHZhbHVlIHRoYXQgd2lsbCBzdG9yZSB0aGUgZGF0YS4KKyAqIEBwYXJhbSBwX25iX2J5dGVzCXRoZSBuYiBieXRlcyB0byByZWFkLgorICogQHJldHVybgkJCQl0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKyAqLwordm9pZCBvcGpfcmVhZF9ieXRlc19CRShjb25zdCBPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfVUlOVDMyICogcF92YWx1ZSwgT1BKX1VJTlQzMiBwX25iX2J5dGVzKTsKKworLyoqCisgKiBXcml0ZSBzb21lIGJ5dGVzIHRvIHRoZSBnaXZlbiBkYXRhIGJ1ZmZlciwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIExpdHRsZSBFbmRpYW4gY3B1cy4KKyAqIEBwYXJhbSBwX2J1ZmZlcgkJcG9pbnRlciB0aGUgZGF0YSBidWZmZXIgdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSBwX3ZhbHVlCQl0aGUgdmFsdWUgdG8gd3JpdGUKKyAqIEBwYXJhbSBwX25iX2J5dGVzCXRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUKKyAqIEByZXR1cm4JCQkJdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VyZWQKKyovCit2b2lkIG9wal93cml0ZV9ieXRlc19MRSAoT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX1VJTlQzMiBwX3ZhbHVlLCBPUEpfVUlOVDMyIHBfbmJfYnl0ZXMpOworCisvKioKKyAqIFJlYWRzIHNvbWUgYnl0ZXMgZnJvbSB0aGUgZ2l2ZW4gZGF0YSBidWZmZXIsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbiBMaXR0bGUgRW5kaWFuIGNwdXMuCisgKiBAcGFyYW0gcF9idWZmZXIJCXBvaW50ZXIgdGhlIGRhdGEgYnVmZmVyIHRvIHJlYWQgZGF0YSBmcm9tLgorICogQHBhcmFtIHBfdmFsdWUJCXBvaW50ZXIgdG8gdGhlIHZhbHVlIHRoYXQgd2lsbCBzdG9yZSB0aGUgZGF0YS4KKyAqIEBwYXJhbSBwX25iX2J5dGVzCXRoZSBuYiBieXRlcyB0byByZWFkLgorICogQHJldHVybgkJCQl0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKyAqLwordm9pZCBvcGpfcmVhZF9ieXRlc19MRShjb25zdCBPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfVUlOVDMyICogcF92YWx1ZSwgT1BKX1VJTlQzMiBwX25iX2J5dGVzKTsKKworCisvKioKKyAqIFdyaXRlIHNvbWUgYnl0ZXMgdG8gdGhlIGdpdmVuIGRhdGEgYnVmZmVyLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gTGl0dGxlIEVuZGlhbiBjcHVzLgorICogQHBhcmFtIHBfYnVmZmVyCQlwb2ludGVyIHRoZSBkYXRhIGJ1ZmZlciB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtIHBfdmFsdWUJCXRoZSB2YWx1ZSB0byB3cml0ZQorICovCit2b2lkIG9wal93cml0ZV9kb3VibGVfTEUoT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX0ZMT0FUNjQgcF92YWx1ZSk7CisKKy8qKioKKyAqIFdyaXRlIHNvbWUgYnl0ZXMgdG8gdGhlIGdpdmVuIGRhdGEgYnVmZmVyLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gQmlnIEVuZGlhbiBjcHVzLgorICogQHBhcmFtIHBfYnVmZmVyCQlwb2ludGVyIHRoZSBkYXRhIGJ1ZmZlciB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtIHBfdmFsdWUJCXRoZSB2YWx1ZSB0byB3cml0ZQorICovCit2b2lkIG9wal93cml0ZV9kb3VibGVfQkUoT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX0ZMT0FUNjQgcF92YWx1ZSk7CisKKy8qKgorICogUmVhZHMgc29tZSBieXRlcyBmcm9tIHRoZSBnaXZlbiBkYXRhIGJ1ZmZlciwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIExpdHRsZSBFbmRpYW4gY3B1cy4KKyAqIEBwYXJhbSBwX2J1ZmZlcgkJcG9pbnRlciB0aGUgZGF0YSBidWZmZXIgdG8gcmVhZCBkYXRhIGZyb20uCisgKiBAcGFyYW0gcF92YWx1ZQkJcG9pbnRlciB0byB0aGUgdmFsdWUgdGhhdCB3aWxsIHN0b3JlIHRoZSBkYXRhLgorICovCit2b2lkIG9wal9yZWFkX2RvdWJsZV9MRShjb25zdCBPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfRkxPQVQ2NCAqIHBfdmFsdWUpOworCisvKioKKyAqIFJlYWRzIHNvbWUgYnl0ZXMgZnJvbSB0aGUgZ2l2ZW4gZGF0YSBidWZmZXIsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbiBCaWcgRW5kaWFuIGNwdXMuCisgKiBAcGFyYW0gcF9idWZmZXIJCXBvaW50ZXIgdGhlIGRhdGEgYnVmZmVyIHRvIHJlYWQgZGF0YSBmcm9tLgorICogQHBhcmFtIHBfdmFsdWUJCXBvaW50ZXIgdG8gdGhlIHZhbHVlIHRoYXQgd2lsbCBzdG9yZSB0aGUgZGF0YS4KKyAqLwordm9pZCBvcGpfcmVhZF9kb3VibGVfQkUoY29uc3QgT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX0ZMT0FUNjQgKiBwX3ZhbHVlKTsKKworLyoqCisgKiBSZWFkcyBzb21lIGJ5dGVzIGZyb20gdGhlIGdpdmVuIGRhdGEgYnVmZmVyLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gTGl0dGxlIEVuZGlhbiBjcHVzLgorICogQHBhcmFtIHBfYnVmZmVyCQlwb2ludGVyIHRoZSBkYXRhIGJ1ZmZlciB0byByZWFkIGRhdGEgZnJvbS4KKyAqIEBwYXJhbSBwX3ZhbHVlCQlwb2ludGVyIHRvIHRoZSB2YWx1ZSB0aGF0IHdpbGwgc3RvcmUgdGhlIGRhdGEuCisgKi8KK3ZvaWQgb3BqX3JlYWRfZmxvYXRfTEUoY29uc3QgT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX0ZMT0FUMzIgKiBwX3ZhbHVlKTsKKworLyoqCisgKiBSZWFkcyBzb21lIGJ5dGVzIGZyb20gdGhlIGdpdmVuIGRhdGEgYnVmZmVyLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gQmlnIEVuZGlhbiBjcHVzLgorICogQHBhcmFtIHBfYnVmZmVyCQlwb2ludGVyIHRoZSBkYXRhIGJ1ZmZlciB0byByZWFkIGRhdGEgZnJvbS4KKyAqIEBwYXJhbSBwX3ZhbHVlCQlwb2ludGVyIHRvIHRoZSB2YWx1ZSB0aGF0IHdpbGwgc3RvcmUgdGhlIGRhdGEuCisgKi8KK3ZvaWQgb3BqX3JlYWRfZmxvYXRfQkUoY29uc3QgT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX0ZMT0FUMzIgKiBwX3ZhbHVlKTsKKworLyoqCisgKiBXcml0ZSBzb21lIGJ5dGVzIHRvIHRoZSBnaXZlbiBkYXRhIGJ1ZmZlciwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIExpdHRsZSBFbmRpYW4gY3B1cy4KKyAqIEBwYXJhbSBwX2J1ZmZlcgkJcG9pbnRlciB0aGUgZGF0YSBidWZmZXIgdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSBwX3ZhbHVlCQl0aGUgdmFsdWUgdG8gd3JpdGUKKyAqLwordm9pZCBvcGpfd3JpdGVfZmxvYXRfTEUoT1BKX0JZVEUgKiBwX2J1ZmZlciwgT1BKX0ZMT0FUMzIgcF92YWx1ZSk7CisKKy8qKioKKyAqIFdyaXRlIHNvbWUgYnl0ZXMgdG8gdGhlIGdpdmVuIGRhdGEgYnVmZmVyLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gQmlnIEVuZGlhbiBjcHVzLgorICogQHBhcmFtIHBfYnVmZmVyCQlwb2ludGVyIHRoZSBkYXRhIGJ1ZmZlciB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtIHBfdmFsdWUJCXRoZSB2YWx1ZSB0byB3cml0ZQorICovCit2b2lkIG9wal93cml0ZV9mbG9hdF9CRShPUEpfQllURSAqIHBfYnVmZmVyLCBPUEpfRkxPQVQzMiBwX3ZhbHVlKTsKKworLyoqCisgKiBSZWFkcyBzb21lIGJ5dGVzIGZyb20gdGhlIHN0cmVhbS4KKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byByZWFkIGRhdGEgZnJvbS4KKyAqIEBwYXJhbQkJcF9idWZmZXIJcG9pbnRlciB0byB0aGUgZGF0YSBidWZmZXIgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGRhdGEuCisgKiBAcGFyYW0JCXBfc2l6ZQkJbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQuCisgKiBAcGFyYW0JCXBfZXZlbnRfbWdyCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIgdG8gYmUgbm90aWZpZWQgb2Ygc3BlY2lhbCBldmVudHMuCisgKiBAcmV0dXJuCQl0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VyZWQgb3IgaWYgdGhlIHN0cmVhbSBpcyBhdCB0aGUgZW5kLgorICovCitPUEpfU0laRV9UIG9wal9zdHJlYW1fcmVhZF9kYXRhIChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIHBfc3RyZWFtLE9QSl9CWVRFICogcF9idWZmZXIsIE9QSl9TSVpFX1QgcF9zaXplLCBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfZXZlbnRfbWdyKTsKKworLyoqCisgKiBXcml0ZXMgc29tZSBieXRlcyB0byB0aGUgc3RyZWFtLgorICogQHBhcmFtCQlwX3N0cmVhbQl0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0JCXBfYnVmZmVyCXBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIGhvbGRzIHRoZSBkYXRhIHRvIGJlIHdyaXR0ZW50LgorICogQHBhcmFtCQlwX3NpemUJCW51bWJlciBvZiBieXRlcyB0byB3cml0ZS4KKyAqIEBwYXJhbQkJcF9ldmVudF9tZ3IJdGhlIHVzZXIgZXZlbnQgbWFuYWdlciB0byBiZSBub3RpZmllZCBvZiBzcGVjaWFsIGV2ZW50cy4KKyAqIEByZXR1cm4JCXRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbnQsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VyZWQuCisgKi8KK09QSl9TSVpFX1Qgb3BqX3N0cmVhbV93cml0ZV9kYXRhIChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIHBfc3RyZWFtLGNvbnN0IE9QSl9CWVRFICogcF9idWZmZXIsIE9QSl9TSVpFX1QgcF9zaXplLCBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfZXZlbnRfbWdyKTsKKworLyoqCisgKiBXcml0ZXMgdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmVhbSBidWZmZXIgdG8gdGhlIHN0cmVhbS4KKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtCQlwX2V2ZW50X21ncgl0aGUgdXNlciBldmVudCBtYW5hZ2VyIHRvIGJlIG5vdGlmaWVkIG9mIHNwZWNpYWwgZXZlbnRzLgorICogQHJldHVybgkJdHJ1ZSBpZiB0aGUgZGF0YSBjb3VsZCBiZSBmbHVzaGVkLCBmYWxzZSBlbHNlLgorICovCitPUEpfQk9PTCBvcGpfc3RyZWFtX2ZsdXNoIChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIHBfc3RyZWFtLCBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfZXZlbnRfbWdyKTsKKworLyoqCisgKiBTa2lwcyBhIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSBzdHJlYW0uCisgKiBAcGFyYW0JCXBfc3RyZWFtCXRoZSBzdHJlYW0gdG8gc2tpcCBkYXRhIGZyb20uCisgKiBAcGFyYW0JCXBfc2l6ZQkJdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwLgorICogQHBhcmFtCQlwX2V2ZW50X21ncgl0aGUgdXNlciBldmVudCBtYW5hZ2VyIHRvIGJlIG5vdGlmaWVkIG9mIHNwZWNpYWwgZXZlbnRzLgorICogQHJldHVybgkJdGhlIG51bWJlciBvZiBieXRlcyBza2lwcGVkLCBvciAtMSBpZiBhbiBlcnJvciBvY2N1cmVkLgorICovCitPUEpfT0ZGX1Qgb3BqX3N0cmVhbV9za2lwIChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIHBfc3RyZWFtLE9QSl9PRkZfVCBwX3NpemUsIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9ldmVudF9tZ3IpOworCisvKioKKyAqIFRlbGxzIHRoZSBieXRlIG9mZnNldCBvbiB0aGUgc3RyZWFtIChzaW1pbGFyIHRvIGZ0ZWxsKS4KKyAqCisgKiBAcGFyYW0JCXBfc3RyZWFtCXRoZSBzdHJlYW0gdG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiBmcm9tLgorICoKKyAqIEByZXR1cm4JCXRoZSBjdXJyZW50IHBvc2l0aW9uIG8gZnRoZSBzdHJlYW0uCisgKi8KK09QSl9PRkZfVCBvcGpfc3RyZWFtX3RlbGwgKGNvbnN0IG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0pOworCisKKy8qKgorICogR2V0IHRoZSBudW1iZXIgb2YgYnl0ZXMgbGVmdCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIChzaW1pbGFyIHRvIGNpb19udW1ieXRlc2xlZnQpLgorICoKKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byBnZXQgdGhlIGluZm9ybWF0aW9uIGZyb20uCisgKgorICogQHJldHVybgkJTnVtYmVyIG9mIGJ5dGVzIGxlZnQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbS4KKyAqLworT1BKX09GRl9UIG9wal9zdHJlYW1fZ2V0X251bWJlcl9ieXRlX2xlZnQgKGNvbnN0IG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0pOworCisvKioKKyAqIFNraXBzIGEgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHN0cmVhbS4KKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byBza2lwIGRhdGEgZnJvbS4KKyAqIEBwYXJhbQkJcF9zaXplCQl0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAuCisgKiBAcGFyYW0JCXBfZXZlbnRfbWdyCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIgdG8gYmUgbm90aWZpZWQgb2Ygc3BlY2lhbCBldmVudHMuCisgKiBAcmV0dXJuCQl0aGUgbnVtYmVyIG9mIGJ5dGVzIHNraXBwZWQsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VyZWQuCisgKi8KK09QSl9PRkZfVCBvcGpfc3RyZWFtX3dyaXRlX3NraXAgKG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0sIE9QSl9PRkZfVCBwX3NpemUsIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9ldmVudF9tZ3IpOworCisvKioKKyAqIFNraXBzIGEgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHN0cmVhbS4KKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byBza2lwIGRhdGEgZnJvbS4KKyAqIEBwYXJhbQkJcF9zaXplCQl0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAuCisgKiBAcGFyYW0JCXBfZXZlbnRfbWdyCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIgdG8gYmUgbm90aWZpZWQgb2Ygc3BlY2lhbCBldmVudHMuCisgKiBAcmV0dXJuCQl0aGUgbnVtYmVyIG9mIGJ5dGVzIHNraXBwZWQsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VyZWQuCisgKi8KK09QSl9PRkZfVCBvcGpfc3RyZWFtX3JlYWRfc2tpcCAob3BqX3N0cmVhbV9wcml2YXRlX3QgKiBwX3N0cmVhbSwgT1BKX09GRl9UIHBfc2l6ZSwgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX2V2ZW50X21ncik7CisKKy8qKgorICogU2tpcHMgYSBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgc3RyZWFtLgorICogQHBhcmFtCQlwX3N0cmVhbQl0aGUgc3RyZWFtIHRvIHNraXAgZGF0YSBmcm9tLgorICogQHBhcmFtCQlwX3NpemUJCXRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcC4KKyAqIEBwYXJhbQkJcF9ldmVudF9tZ3IJdGhlIHVzZXIgZXZlbnQgbWFuYWdlciB0byBiZSBub3RpZmllZCBvZiBzcGVjaWFsIGV2ZW50cy4KKyAqIEByZXR1cm4JCU9QSl9UUlVFIGlmIHN1Y2Nlc3MsIG9yIE9QSl9GQUxTRSBpZiBhbiBlcnJvciBvY2N1cmVkLgorICovCitPUEpfQk9PTCBvcGpfc3RyZWFtX3JlYWRfc2VlayAob3BqX3N0cmVhbV9wcml2YXRlX3QgKiBwX3N0cmVhbSwgT1BKX09GRl9UIHBfc2l6ZSwgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX2V2ZW50X21ncik7CisKKy8qKgorICogU2tpcHMgYSBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgc3RyZWFtLgorICogQHBhcmFtCQlwX3N0cmVhbQl0aGUgc3RyZWFtIHRvIHNraXAgZGF0YSBmcm9tLgorICogQHBhcmFtCQlwX3NpemUJCXRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcC4KKyAqIEBwYXJhbQkJcF9ldmVudF9tZ3IJdGhlIHVzZXIgZXZlbnQgbWFuYWdlciB0byBiZSBub3RpZmllZCBvZiBzcGVjaWFsIGV2ZW50cy4KKyAqIEByZXR1cm4JCXRoZSBudW1iZXIgb2YgYnl0ZXMgc2tpcHBlZCwgb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKyAqLworT1BKX0JPT0wgb3BqX3N0cmVhbV93cml0ZV9zZWVrIChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIHBfc3RyZWFtLCBPUEpfT0ZGX1QgcF9zaXplLCBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfZXZlbnRfbWdyKTsKKworLyoqCisgKiBTZWVrcyBhIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSBzdHJlYW0uCisgKiBAcGFyYW0JCXBfc3RyZWFtCXRoZSBzdHJlYW0gdG8gc2tpcCBkYXRhIGZyb20uCisgKiBAcGFyYW0JCXBfc2l6ZQkJdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwLgorICogQHBhcmFtCQlwX2V2ZW50X21ncgl0aGUgdXNlciBldmVudCBtYW5hZ2VyIHRvIGJlIG5vdGlmaWVkIG9mIHNwZWNpYWwgZXZlbnRzLgorICogQHJldHVybgkJdHJ1ZSBpZiB0aGUgc3RyZWFtIGlzIHNlZWthYmxlLgorICovCitPUEpfQk9PTCBvcGpfc3RyZWFtX3NlZWsgKG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0sIE9QSl9PRkZfVCBwX3NpemUsIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9ldmVudF9tZ3IpOworCisvKioKKyAqIFRlbGxzIGlmIHRoZSBnaXZlbiBzdHJlYW0gaXMgc2Vla2FibGUuCisgKi8KK09QSl9CT09MIG9wal9zdHJlYW1faGFzX3NlZWsgKGNvbnN0IG9wal9zdHJlYW1fcHJpdmF0ZV90ICogcF9zdHJlYW0pOworCisvKioKKyAqIEZJWE1FIERPQy4KKyAqLworT1BKX1NJWkVfVCBvcGpfc3RyZWFtX2RlZmF1bHRfcmVhZCAodm9pZCAqIHBfYnVmZmVyLCBPUEpfU0laRV9UIHBfbmJfYnl0ZXMsIHZvaWQgKiBwX3VzZXJfZGF0YSk7CisKKy8qKgorICogRklYTUUgRE9DLgorICovCitPUEpfU0laRV9UIG9wal9zdHJlYW1fZGVmYXVsdF93cml0ZSAodm9pZCAqIHBfYnVmZmVyLCBPUEpfU0laRV9UIHBfbmJfYnl0ZXMsIHZvaWQgKiBwX3VzZXJfZGF0YSk7CisKKy8qKgorICogRklYTUUgRE9DLgorICovCitPUEpfT0ZGX1Qgb3BqX3N0cmVhbV9kZWZhdWx0X3NraXAgKE9QSl9PRkZfVCBwX25iX2J5dGVzLCB2b2lkICogcF91c2VyX2RhdGEpOworCisvKioKKyAqIEZJWE1FIERPQy4KKyAqLworT1BKX0JPT0wgb3BqX3N0cmVhbV9kZWZhdWx0X3NlZWsgKE9QSl9PRkZfVCBwX25iX2J5dGVzLCB2b2lkICogcF91c2VyX2RhdGEpOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypAfSovCisKKy8qQH0qLworCisKKyNlbmRpZiAvKiBfX0NJT19IICovCisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9kd3QuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9kd3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWY4YTMzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2R3dC5jCkBAIC0wLDAgKzEsOTI1IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIEpvbmF0aGFuIEJhbGxhcmQgPGR6b25hdGFzQGR6b251eC5uZXQ+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIENhbGx1bSBMZXJ3aWNrIDxzZWdAaGF4eGVkLmNvbT4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmZGVmIF9fU1NFX18KKyNpbmNsdWRlIDx4bW1pbnRyaW4uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAib3BqX2luY2x1ZGVzLmgiCisKKy8qKiBAZGVmZ3JvdXAgRFdUIERXVCAtIEltcGxlbWVudGF0aW9uIG9mIGEgZGlzY3JldGUgd2F2ZWxldCB0cmFuc2Zvcm0gKi8KKy8qQHsqLworCisjZGVmaW5lIE9QSl9XUyhpKSB2LT5tZW1bKGkpKjJdCisjZGVmaW5lIE9QSl9XRChpKSB2LT5tZW1bKDErKGkpKjIpXQorCisvKiogQG5hbWUgTG9jYWwgZGF0YSBzdHJ1Y3R1cmVzICovCisvKkB7Ki8KKwordHlwZWRlZiBzdHJ1Y3QgZHd0X2xvY2FsIHsKKwlPUEpfSU5UMzIqIG1lbTsKKwlPUEpfSU5UMzIgZG47CisJT1BKX0lOVDMyIHNuOworCU9QSl9JTlQzMiBjYXM7Cit9IG9wal9kd3RfdDsKKwordHlwZWRlZiB1bmlvbiB7CisJT1BKX0ZMT0FUMzIJZls0XTsKK30gb3BqX3Y0X3Q7CisKK3R5cGVkZWYgc3RydWN0IHY0ZHd0X2xvY2FsIHsKKwlvcGpfdjRfdCoJd2F2ZWxldCA7CisJT1BKX0lOVDMyCQlkbiA7CisJT1BKX0lOVDMyCQlzbiA7CisJT1BKX0lOVDMyCQljYXMgOworfSBvcGpfdjRkd3RfdCA7CisKK3N0YXRpYyBjb25zdCBPUEpfRkxPQVQzMiBvcGpfZHd0X2FscGhhID0gIDEuNTg2MTM0MzQyZjsgLyogIDEyOTk0ICovCitzdGF0aWMgY29uc3QgT1BKX0ZMT0FUMzIgb3BqX2R3dF9iZXRhICA9ICAwLjA1Mjk4MDExOGY7IC8qICAgIDQzNCAqLworc3RhdGljIGNvbnN0IE9QSl9GTE9BVDMyIG9wal9kd3RfZ2FtbWEgPSAtMC44ODI5MTEwNzVmOyAvKiAgLTcyMzMgKi8KK3N0YXRpYyBjb25zdCBPUEpfRkxPQVQzMiBvcGpfZHd0X2RlbHRhID0gLTAuNDQzNTA2ODUyZjsgLyogIC0zNjMzICovCisKK3N0YXRpYyBjb25zdCBPUEpfRkxPQVQzMiBvcGpfSyAgICAgID0gMS4yMzAxNzQxMDVmOyAvKiAgMTAwNzggKi8KK3N0YXRpYyBjb25zdCBPUEpfRkxPQVQzMiBvcGpfYzEzMzE4ID0gMS42MjU3MzI0MjJmOworCisvKkB9Ki8KKworLyoqCitWaXJ0dWFsIGZ1bmN0aW9uIHR5cGUgZm9yIHdhdmVsZXQgdHJhbnNmb3JtIGluIDEtRCAKKyovCit0eXBlZGVmIHZvaWQgKCpEV1QxREZOKShvcGpfZHd0X3QqIHYpOworCisvKiogQG5hbWUgTG9jYWwgc3RhdGljIGZ1bmN0aW9ucyAqLworLypAeyovCisKKy8qKgorRm9yd2FyZCBsYXp5IHRyYW5zZm9ybSAoaG9yaXpvbnRhbCkKKyovCitzdGF0aWMgdm9pZCBvcGpfZHd0X2RlaW50ZXJsZWF2ZV9oKE9QSl9JTlQzMiAqYSwgT1BKX0lOVDMyICpiLCBPUEpfSU5UMzIgZG4sIE9QSl9JTlQzMiBzbiwgT1BKX0lOVDMyIGNhcyk7CisvKioKK0ZvcndhcmQgbGF6eSB0cmFuc2Zvcm0gKHZlcnRpY2FsKQorKi8KK3N0YXRpYyB2b2lkIG9wal9kd3RfZGVpbnRlcmxlYXZlX3YoT1BKX0lOVDMyICphLCBPUEpfSU5UMzIgKmIsIE9QSl9JTlQzMiBkbiwgT1BKX0lOVDMyIHNuLCBPUEpfSU5UMzIgeCwgT1BKX0lOVDMyIGNhcyk7CisvKioKK0ludmVyc2UgbGF6eSB0cmFuc2Zvcm0gKGhvcml6b250YWwpCisqLworc3RhdGljIHZvaWQgb3BqX2R3dF9pbnRlcmxlYXZlX2gob3BqX2R3dF90KiBoLCBPUEpfSU5UMzIgKmEpOworLyoqCitJbnZlcnNlIGxhenkgdHJhbnNmb3JtICh2ZXJ0aWNhbCkKKyovCitzdGF0aWMgdm9pZCBvcGpfZHd0X2ludGVybGVhdmVfdihvcGpfZHd0X3QqIHYsIE9QSl9JTlQzMiAqYSwgT1BKX0lOVDMyIHgpOworLyoqCitGb3J3YXJkIDUtMyB3YXZlbGV0IHRyYW5zZm9ybSBpbiAxLUQKKyovCitzdGF0aWMgdm9pZCBvcGpfZHd0X2VuY29kZV8xKE9QSl9JTlQzMiAqYSwgT1BKX0lOVDMyIGRuLCBPUEpfSU5UMzIgc24sIE9QSl9JTlQzMiBjYXMpOworLyoqCitJbnZlcnNlIDUtMyB3YXZlbGV0IHRyYW5zZm9ybSBpbiAxLUQKKyovCitzdGF0aWMgdm9pZCBvcGpfZHd0X2RlY29kZV8xKG9wal9kd3RfdCAqdik7CitzdGF0aWMgdm9pZCBvcGpfZHd0X2RlY29kZV8xXyhPUEpfSU5UMzIgKmEsIE9QSl9JTlQzMiBkbiwgT1BKX0lOVDMyIHNuLCBPUEpfSU5UMzIgY2FzKTsKKy8qKgorRm9yd2FyZCA5LTcgd2F2ZWxldCB0cmFuc2Zvcm0gaW4gMS1ECisqLworc3RhdGljIHZvaWQgb3BqX2R3dF9lbmNvZGVfMV9yZWFsKE9QSl9JTlQzMiAqYSwgT1BKX0lOVDMyIGRuLCBPUEpfSU5UMzIgc24sIE9QSl9JTlQzMiBjYXMpOworLyoqCitFeHBsaWNpdCBjYWxjdWxhdGlvbiBvZiB0aGUgUXVhbnRpemF0aW9uIFN0ZXBzaXplcyAKKyovCitzdGF0aWMgdm9pZCBvcGpfZHd0X2VuY29kZV9zdGVwc2l6ZShPUEpfSU5UMzIgc3RlcHNpemUsIE9QSl9JTlQzMiBudW1icHMsIG9wal9zdGVwc2l6ZV90ICpiYW5kbm9fc3RlcHNpemUpOworLyoqCitJbnZlcnNlIHdhdmVsZXQgdHJhbnNmb3JtIGluIDItRC4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2R3dF9kZWNvZGVfdGlsZShvcGpfdGNkX3RpbGVjb21wX3QqIHRpbGVjLCBPUEpfVUlOVDMyIGksIERXVDFERk4gZm4pOworCitzdGF0aWMgT1BKX0JPT0wgb3BqX2R3dF9lbmNvZGVfcHJvY2VkdXJlKAlvcGpfdGNkX3RpbGVjb21wX3QgKiB0aWxlYywKKwkJCQkJCQkJCQkgICAgdm9pZCAoKnBfZnVuY3Rpb24pKE9QSl9JTlQzMiAqLCBPUEpfSU5UMzIsT1BKX0lOVDMyLE9QSl9JTlQzMikgKTsKKworc3RhdGljIE9QSl9VSU5UMzIgb3BqX2R3dF9tYXhfcmVzb2x1dGlvbihvcGpfdGNkX3Jlc29sdXRpb25fdCogcmVzdHJpY3QgciwgT1BKX1VJTlQzMiBpKTsKKworLyogPHN1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogSW52ZXJzZSA5LTcgd2F2ZWxldCB0cmFuc2Zvcm0gaW4gMS1ELiAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworc3RhdGljIHZvaWQgb3BqX3Y0ZHd0X2RlY29kZShvcGpfdjRkd3RfdCogcmVzdHJpY3QgZHd0KTsKKworc3RhdGljIHZvaWQgb3BqX3Y0ZHd0X2ludGVybGVhdmVfaChvcGpfdjRkd3RfdCogcmVzdHJpY3QgdywgT1BKX0ZMT0FUMzIqIHJlc3RyaWN0IGEsIE9QSl9JTlQzMiB4LCBPUEpfSU5UMzIgc2l6ZSk7CisKK3N0YXRpYyB2b2lkIG9wal92NGR3dF9pbnRlcmxlYXZlX3Yob3BqX3Y0ZHd0X3QqIHJlc3RyaWN0IHYgLCBPUEpfRkxPQVQzMiogcmVzdHJpY3QgYSAsIE9QSl9JTlQzMiB4LCBPUEpfSU5UMzIgbmJfZWx0c19yZWFkKTsKKworI2lmZGVmIF9fU1NFX18KK3N0YXRpYyB2b2lkIG9wal92NGR3dF9kZWNvZGVfc3RlcDFfc3NlKG9wal92NF90KiB3LCBPUEpfSU5UMzIgY291bnQsIGNvbnN0IF9fbTEyOCBjKTsKKworc3RhdGljIHZvaWQgb3BqX3Y0ZHd0X2RlY29kZV9zdGVwMl9zc2Uob3BqX3Y0X3QqIGwsIG9wal92NF90KiB3LCBPUEpfSU5UMzIgaywgT1BKX0lOVDMyIG0sIF9fbTEyOCBjKTsKKworI2Vsc2UKK3N0YXRpYyB2b2lkIG9wal92NGR3dF9kZWNvZGVfc3RlcDEob3BqX3Y0X3QqIHcsIE9QSl9JTlQzMiBjb3VudCwgY29uc3QgT1BKX0ZMT0FUMzIgYyk7CisKK3N0YXRpYyB2b2lkIG9wal92NGR3dF9kZWNvZGVfc3RlcDIob3BqX3Y0X3QqIGwsIG9wal92NF90KiB3LCBPUEpfSU5UMzIgaywgT1BKX0lOVDMyIG0sIE9QSl9GTE9BVDMyIGMpOworCisjZW5kaWYKKworLypAfSovCisKKy8qQH0qLworCisjZGVmaW5lIE9QSl9TKGkpIGFbKGkpKjJdCisjZGVmaW5lIE9QSl9EKGkpIGFbKDErKGkpKjIpXQorI2RlZmluZSBPUEpfU18oaSkgKChpKTwwP09QSl9TKDApOigoaSk+PXNuP09QSl9TKHNuLTEpOk9QSl9TKGkpKSkKKyNkZWZpbmUgT1BKX0RfKGkpICgoaSk8MD9PUEpfRCgwKTooKGkpPj1kbj9PUEpfRChkbi0xKTpPUEpfRChpKSkpCisvKiBuZXcgKi8KKyNkZWZpbmUgT1BKX1NTXyhpKSAoKGkpPDA/T1BKX1MoMCk6KChpKT49ZG4/T1BKX1MoZG4tMSk6T1BKX1MoaSkpKQorI2RlZmluZSBPUEpfRERfKGkpICgoaSk8MD9PUEpfRCgwKTooKGkpPj1zbj9PUEpfRChzbi0xKTpPUEpfRChpKSkpCisKKy8qIDxzdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIFRoaXMgdGFibGUgY29udGFpbnMgdGhlIG5vcm1zIG9mIHRoZSA1LTMgd2F2ZWxldHMgZm9yIGRpZmZlcmVudCBiYW5kcy4gKi8KKy8qIDwvc3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK3N0YXRpYyBjb25zdCBPUEpfRkxPQVQ2NCBvcGpfZHd0X25vcm1zWzRdWzEwXSA9IHsKKwl7MS4wMDAsIDEuNTAwLCAyLjc1MCwgNS4zNzUsIDEwLjY4LCAyMS4zNCwgNDIuNjcsIDg1LjMzLCAxNzAuNywgMzQxLjN9LAorCXsxLjAzOCwgMS41OTIsIDIuOTE5LCA1LjcwMywgMTEuMzMsIDIyLjY0LCA0NS4yNSwgOTAuNDgsIDE4MC45fSwKKwl7MS4wMzgsIDEuNTkyLCAyLjkxOSwgNS43MDMsIDExLjMzLCAyMi42NCwgNDUuMjUsIDkwLjQ4LCAxODAuOX0sCisJey43MTg2LCAuOTIxOCwgMS41ODYsIDMuMDQzLCA2LjAxOSwgMTIuMDEsIDI0LjAwLCA0Ny45NywgOTUuOTN9Cit9OworCisvKiA8c3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBUaGlzIHRhYmxlIGNvbnRhaW5zIHRoZSBub3JtcyBvZiB0aGUgOS03IHdhdmVsZXRzIGZvciBkaWZmZXJlbnQgYmFuZHMuICovCisvKiA8L3N1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCitzdGF0aWMgY29uc3QgT1BKX0ZMT0FUNjQgb3BqX2R3dF9ub3Jtc19yZWFsWzRdWzEwXSA9IHsKKwl7MS4wMDAsIDEuOTY1LCA0LjE3NywgOC40MDMsIDE2LjkwLCAzMy44NCwgNjcuNjksIDEzNS4zLCAyNzAuNiwgNTQwLjl9LAorCXsyLjAyMiwgMy45ODksIDguMzU1LCAxNy4wNCwgMzQuMjcsIDY4LjYzLCAxMzcuMywgMjc0LjYsIDU0OS4wfSwKKwl7Mi4wMjIsIDMuOTg5LCA4LjM1NSwgMTcuMDQsIDM0LjI3LCA2OC42MywgMTM3LjMsIDI3NC42LCA1NDkuMH0sCisJezIuMDgwLCAzLjg2NSwgOC4zMDcsIDE3LjE4LCAzNC43MSwgNjkuNTksIDEzOS4zLCAyNzguNiwgNTU3LjJ9Cit9OworCisvKiAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIGxvY2FsIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworLyogPHN1bW1hcnk+CQkJICAgICAgICAgICAgICAgICAqLworLyogRm9yd2FyZCBsYXp5IHRyYW5zZm9ybSAoaG9yaXpvbnRhbCkuICAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAKK3ZvaWQgb3BqX2R3dF9kZWludGVybGVhdmVfaChPUEpfSU5UMzIgKmEsIE9QSl9JTlQzMiAqYiwgT1BKX0lOVDMyIGRuLCBPUEpfSU5UMzIgc24sIE9QSl9JTlQzMiBjYXMpIHsKKwlPUEpfSU5UMzIgaTsKKwlPUEpfSU5UMzIgKiBsX2Rlc3QgPSBiOworCU9QSl9JTlQzMiAqIGxfc3JjID0gYStjYXM7CisKKyAgICBmb3IgKGk9MDsgaTxzbjsgKytpKSB7CisJCSpsX2Rlc3QrKyA9ICpsX3NyYzsKKwkJbF9zcmMgKz0gMjsKKwl9CisJCisgICAgbF9kZXN0ID0gYiArIHNuOworCWxfc3JjID0gYSArIDEgLSBjYXM7CisKKyAgICBmb3IJKGk9MDsgaTxkbjsgKytpKSAgeworCQkqbF9kZXN0Kys9Kmxfc3JjOworCQlsX3NyYyArPSAyOworCX0KK30KKworLyogPHN1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAgCisvKiBGb3J3YXJkIGxhenkgdHJhbnNmb3JtICh2ZXJ0aWNhbCkuICAgICovCisvKiA8L3N1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovIAordm9pZCBvcGpfZHd0X2RlaW50ZXJsZWF2ZV92KE9QSl9JTlQzMiAqYSwgT1BKX0lOVDMyICpiLCBPUEpfSU5UMzIgZG4sIE9QSl9JTlQzMiBzbiwgT1BKX0lOVDMyIHgsIE9QSl9JTlQzMiBjYXMpIHsKKyAgICBPUEpfSU5UMzIgaSA9IHNuOworCU9QSl9JTlQzMiAqIGxfZGVzdCA9IGI7CisJT1BKX0lOVDMyICogbF9zcmMgPSBhK2NhczsKKworICAgIHdoaWxlIChpLS0pIHsKKwkJKmxfZGVzdCA9ICpsX3NyYzsKKwkJbF9kZXN0ICs9IHg7CisJCWxfc3JjICs9IDI7CisJCX0gLyogYltpKnhdPWFbMippK2Nhc107ICovCisKKwlsX2Rlc3QgPSBiICsgc24gKiB4OworCWxfc3JjID0gYSArIDEgLSBjYXM7CisJCisJaSA9IGRuOworICAgIHdoaWxlIChpLS0pIHsKKwkJKmxfZGVzdCA9ICpsX3NyYzsKKwkJbF9kZXN0ICs9IHg7CisJCWxfc3JjICs9IDI7CisgICAgICAgIH0gLypiWyhzbitpKSp4XT1hWygyKmkrMS1jYXMpXTsqLworfQorCisvKiA8c3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBJbnZlcnNlIGxhenkgdHJhbnNmb3JtIChob3Jpem9udGFsKS4gICovCisvKiA8L3N1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCit2b2lkIG9wal9kd3RfaW50ZXJsZWF2ZV9oKG9wal9kd3RfdCogaCwgT1BKX0lOVDMyICphKSB7CisgICAgT1BKX0lOVDMyICphaSA9IGE7CisgICAgT1BKX0lOVDMyICpiaSA9IGgtPm1lbSArIGgtPmNhczsKKyAgICBPUEpfSU5UMzIgIGkJPSBoLT5zbjsKKyAgICB3aGlsZSggaS0tICkgeworICAgICAgKmJpID0gKihhaSsrKTsKKwkgIGJpICs9IDI7CisgICAgfQorICAgIGFpCT0gYSArIGgtPnNuOworICAgIGJpCT0gaC0+bWVtICsgMSAtIGgtPmNhczsKKyAgICBpCT0gaC0+ZG4gOworICAgIHdoaWxlKCBpLS0gKSB7CisgICAgICAqYmkgPSAqKGFpKyspOworCSAgYmkgKz0gMjsKKyAgICB9Cit9CisKKy8qIDxzdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gIAorLyogSW52ZXJzZSBsYXp5IHRyYW5zZm9ybSAodmVydGljYWwpLiAgICAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAKK3ZvaWQgb3BqX2R3dF9pbnRlcmxlYXZlX3Yob3BqX2R3dF90KiB2LCBPUEpfSU5UMzIgKmEsIE9QSl9JTlQzMiB4KSB7CisgICAgT1BKX0lOVDMyICphaSA9IGE7CisgICAgT1BKX0lOVDMyICpiaSA9IHYtPm1lbSArIHYtPmNhczsKKyAgICBPUEpfSU5UMzIgIGkgPSB2LT5zbjsKKyAgICB3aGlsZSggaS0tICkgeworICAgICAgKmJpID0gKmFpOworCSAgYmkgKz0gMjsKKwkgIGFpICs9IHg7CisgICAgfQorICAgIGFpID0gYSArICh2LT5zbiAqIHgpOworICAgIGJpID0gdi0+bWVtICsgMSAtIHYtPmNhczsKKyAgICBpID0gdi0+ZG4gOworICAgIHdoaWxlKCBpLS0gKSB7CisgICAgICAqYmkgPSAqYWk7CisJICBiaSArPSAyOyAgCisJICBhaSArPSB4OworICAgIH0KK30KKworCisvKiA8c3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIEZvcndhcmQgNS0zIHdhdmVsZXQgdHJhbnNmb3JtIGluIDEtRC4gKi8KKy8qIDwvc3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLwordm9pZCBvcGpfZHd0X2VuY29kZV8xKE9QSl9JTlQzMiAqYSwgT1BKX0lOVDMyIGRuLCBPUEpfSU5UMzIgc24sIE9QSl9JTlQzMiBjYXMpIHsKKwlPUEpfSU5UMzIgaTsKKwkKKwlpZiAoIWNhcykgeworCQlpZiAoKGRuID4gMCkgfHwgKHNuID4gMSkpIHsJLyogTkVXIDogIENBU0UgT05FIEVMRU1FTlQgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCBkbjsgaSsrKSBPUEpfRChpKSAtPSAoT1BKX1NfKGkpICsgT1BKX1NfKGkgKyAxKSkgPj4gMTsKKwkJCWZvciAoaSA9IDA7IGkgPCBzbjsgaSsrKSBPUEpfUyhpKSArPSAoT1BKX0RfKGkgLSAxKSArIE9QSl9EXyhpKSArIDIpID4+IDI7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoIXNuICYmIGRuID09IDEpCQkgICAgLyogTkVXIDogIENBU0UgT05FIEVMRU1FTlQgKi8KKwkJCU9QSl9TKDApICo9IDI7CisJCWVsc2UgeworCQkJZm9yIChpID0gMDsgaSA8IGRuOyBpKyspIE9QSl9TKGkpIC09IChPUEpfRERfKGkpICsgT1BKX0REXyhpIC0gMSkpID4+IDE7CisJCQlmb3IgKGkgPSAwOyBpIDwgc247IGkrKykgT1BKX0QoaSkgKz0gKE9QSl9TU18oaSkgKyBPUEpfU1NfKGkgKyAxKSArIDIpID4+IDI7CisJCX0KKwl9Cit9CisKKy8qIDxzdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogSW52ZXJzZSA1LTMgd2F2ZWxldCB0cmFuc2Zvcm0gaW4gMS1ELiAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICovIAordm9pZCBvcGpfZHd0X2RlY29kZV8xXyhPUEpfSU5UMzIgKmEsIE9QSl9JTlQzMiBkbiwgT1BKX0lOVDMyIHNuLCBPUEpfSU5UMzIgY2FzKSB7CisJT1BKX0lOVDMyIGk7CisJCisJaWYgKCFjYXMpIHsKKwkJaWYgKChkbiA+IDApIHx8IChzbiA+IDEpKSB7IC8qIE5FVyA6ICBDQVNFIE9ORSBFTEVNRU5UICovCisJCQlmb3IgKGkgPSAwOyBpIDwgc247IGkrKykgT1BKX1MoaSkgLT0gKE9QSl9EXyhpIC0gMSkgKyBPUEpfRF8oaSkgKyAyKSA+PiAyOworCQkJZm9yIChpID0gMDsgaSA8IGRuOyBpKyspIE9QSl9EKGkpICs9IChPUEpfU18oaSkgKyBPUEpfU18oaSArIDEpKSA+PiAxOworCQl9CisJfSBlbHNlIHsKKwkJaWYgKCFzbiAgJiYgZG4gPT0gMSkgICAgICAgICAgLyogTkVXIDogIENBU0UgT05FIEVMRU1FTlQgKi8KKwkJCU9QSl9TKDApIC89IDI7CisJCWVsc2UgeworCQkJZm9yIChpID0gMDsgaSA8IHNuOyBpKyspIE9QSl9EKGkpIC09IChPUEpfU1NfKGkpICsgT1BKX1NTXyhpICsgMSkgKyAyKSA+PiAyOworCQkJZm9yIChpID0gMDsgaSA8IGRuOyBpKyspIE9QSl9TKGkpICs9IChPUEpfRERfKGkpICsgT1BKX0REXyhpIC0gMSkpID4+IDE7CisJCX0KKwl9Cit9CisKKy8qIDxzdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogSW52ZXJzZSA1LTMgd2F2ZWxldCB0cmFuc2Zvcm0gaW4gMS1ELiAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICovIAordm9pZCBvcGpfZHd0X2RlY29kZV8xKG9wal9kd3RfdCAqdikgeworCW9wal9kd3RfZGVjb2RlXzFfKHYtPm1lbSwgdi0+ZG4sIHYtPnNuLCB2LT5jYXMpOworfQorCisvKiA8c3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBGb3J3YXJkIDktNyB3YXZlbGV0IHRyYW5zZm9ybSBpbiAxLUQuICovCisvKiA8L3N1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCit2b2lkIG9wal9kd3RfZW5jb2RlXzFfcmVhbChPUEpfSU5UMzIgKmEsIE9QSl9JTlQzMiBkbiwgT1BKX0lOVDMyIHNuLCBPUEpfSU5UMzIgY2FzKSB7CisJT1BKX0lOVDMyIGk7CisJaWYgKCFjYXMpIHsKKwkJaWYgKChkbiA+IDApIHx8IChzbiA+IDEpKSB7CS8qIE5FVyA6ICBDQVNFIE9ORSBFTEVNRU5UICovCisJCQlmb3IgKGkgPSAwOyBpIDwgZG47IGkrKykKKwkJCQlPUEpfRChpKSAtPSBvcGpfaW50X2ZpeF9tdWwoT1BKX1NfKGkpICsgT1BKX1NfKGkgKyAxKSwgMTI5OTMpOworCQkJZm9yIChpID0gMDsgaSA8IHNuOyBpKyspCisJCQkJT1BKX1MoaSkgLT0gb3BqX2ludF9maXhfbXVsKE9QSl9EXyhpIC0gMSkgKyBPUEpfRF8oaSksIDQzNCk7CisJCQlmb3IgKGkgPSAwOyBpIDwgZG47IGkrKykKKwkJCQlPUEpfRChpKSArPSBvcGpfaW50X2ZpeF9tdWwoT1BKX1NfKGkpICsgT1BKX1NfKGkgKyAxKSwgNzIzMyk7CisJCQlmb3IgKGkgPSAwOyBpIDwgc247IGkrKykKKwkJCQlPUEpfUyhpKSArPSBvcGpfaW50X2ZpeF9tdWwoT1BKX0RfKGkgLSAxKSArIE9QSl9EXyhpKSwgMzYzMyk7CisJCQlmb3IgKGkgPSAwOyBpIDwgZG47IGkrKykKKwkJCQlPUEpfRChpKSA9IG9wal9pbnRfZml4X211bChPUEpfRChpKSwgNTAzOCk7CS8qNTAzOCAqLworCQkJZm9yIChpID0gMDsgaSA8IHNuOyBpKyspCisJCQkJT1BKX1MoaSkgPSBvcGpfaW50X2ZpeF9tdWwoT1BKX1MoaSksIDY2NTkpOwkvKjY2NjAgKi8KKwkJfQorCX0gZWxzZSB7CisJCWlmICgoc24gPiAwKSB8fCAoZG4gPiAxKSkgewkvKiBORVcgOiAgQ0FTRSBPTkUgRUxFTUVOVCAqLworCQkJZm9yIChpID0gMDsgaSA8IGRuOyBpKyspCisJCQkJT1BKX1MoaSkgLT0gb3BqX2ludF9maXhfbXVsKE9QSl9ERF8oaSkgKyBPUEpfRERfKGkgLSAxKSwgMTI5OTMpOworCQkJZm9yIChpID0gMDsgaSA8IHNuOyBpKyspCisJCQkJT1BKX0QoaSkgLT0gb3BqX2ludF9maXhfbXVsKE9QSl9TU18oaSkgKyBPUEpfU1NfKGkgKyAxKSwgNDM0KTsKKwkJCWZvciAoaSA9IDA7IGkgPCBkbjsgaSsrKQorCQkJCU9QSl9TKGkpICs9IG9wal9pbnRfZml4X211bChPUEpfRERfKGkpICsgT1BKX0REXyhpIC0gMSksIDcyMzMpOworCQkJZm9yIChpID0gMDsgaSA8IHNuOyBpKyspCisJCQkJT1BKX0QoaSkgKz0gb3BqX2ludF9maXhfbXVsKE9QSl9TU18oaSkgKyBPUEpfU1NfKGkgKyAxKSwgMzYzMyk7CisJCQlmb3IgKGkgPSAwOyBpIDwgZG47IGkrKykKKwkJCQlPUEpfUyhpKSA9IG9wal9pbnRfZml4X211bChPUEpfUyhpKSwgNTAzOCk7CS8qNTAzOCAqLworCQkJZm9yIChpID0gMDsgaSA8IHNuOyBpKyspCisJCQkJT1BKX0QoaSkgPSBvcGpfaW50X2ZpeF9tdWwoT1BKX0QoaSksIDY2NTkpOwkvKjY2NjAgKi8KKwkJfQorCX0KK30KKwordm9pZCBvcGpfZHd0X2VuY29kZV9zdGVwc2l6ZShPUEpfSU5UMzIgc3RlcHNpemUsIE9QSl9JTlQzMiBudW1icHMsIG9wal9zdGVwc2l6ZV90ICpiYW5kbm9fc3RlcHNpemUpIHsKKwlPUEpfSU5UMzIgcCwgbjsKKwlwID0gb3BqX2ludF9mbG9vcmxvZzIoc3RlcHNpemUpIC0gMTM7CisJbiA9IDExIC0gb3BqX2ludF9mbG9vcmxvZzIoc3RlcHNpemUpOworCWJhbmRub19zdGVwc2l6ZS0+bWFudCA9IChuIDwgMCA/IHN0ZXBzaXplID4+IC1uIDogc3RlcHNpemUgPDwgbikgJiAweDdmZjsKKwliYW5kbm9fc3RlcHNpemUtPmV4cG4gPSBudW1icHMgLSBwOworfQorCisvKiAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIERXVCBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKKworLyogPHN1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBGb3J3YXJkIDUtMyB3YXZlbGV0IHRyYW5zZm9ybSBpbiAyLUQuICovCisvKiA8L3N1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0lOTElORSBPUEpfQk9PTCBvcGpfZHd0X2VuY29kZV9wcm9jZWR1cmUob3BqX3RjZF90aWxlY29tcF90ICogdGlsZWMsdm9pZCAoKnBfZnVuY3Rpb24pKE9QSl9JTlQzMiAqLCBPUEpfSU5UMzIsT1BKX0lOVDMyLE9QSl9JTlQzMikgKQoreworCU9QSl9JTlQzMiBpLCBqLCBrOworCU9QSl9JTlQzMiAqYSA9IDAwOworCU9QSl9JTlQzMiAqYWogPSAwMDsKKwlPUEpfSU5UMzIgKmJqID0gMDA7CisJT1BKX0lOVDMyIHcsIGw7CisKKwlPUEpfSU5UMzIgcnc7CQkJLyogd2lkdGggb2YgdGhlIHJlc29sdXRpb24gbGV2ZWwgY29tcHV0ZWQgICAqLworCU9QSl9JTlQzMiByaDsJCQkvKiBoZWlnaHQgb2YgdGhlIHJlc29sdXRpb24gbGV2ZWwgY29tcHV0ZWQgICovCisJT1BKX1VJTlQzMiBsX2RhdGFfc2l6ZTsKKworCW9wal90Y2RfcmVzb2x1dGlvbl90ICogbF9jdXJfcmVzID0gMDsKKwlvcGpfdGNkX3Jlc29sdXRpb25fdCAqIGxfbGFzdF9yZXMgPSAwOworCisJdyA9IHRpbGVjLT54MS10aWxlYy0+eDA7CisJbCA9IChPUEpfSU5UMzIpdGlsZWMtPm51bXJlc29sdXRpb25zLTE7CisJYSA9IHRpbGVjLT5kYXRhOworCisJbF9jdXJfcmVzID0gdGlsZWMtPnJlc29sdXRpb25zICsgbDsKKwlsX2xhc3RfcmVzID0gbF9jdXJfcmVzIC0gMTsKKworCWxfZGF0YV9zaXplID0gb3BqX2R3dF9tYXhfcmVzb2x1dGlvbiggdGlsZWMtPnJlc29sdXRpb25zLHRpbGVjLT5udW1yZXNvbHV0aW9ucykgKiAoT1BKX1VJTlQzMilzaXplb2YoT1BKX0lOVDMyKTsKKwliaiA9IChPUEpfSU5UMzIqKW9wal9tYWxsb2MoKHNpemVfdClsX2RhdGFfc2l6ZSk7CisJaWYgKCEgYmopIHsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisJaSA9IGw7CisKKwl3aGlsZSAoaS0tKSB7CisJCU9QSl9JTlQzMiBydzE7CQkvKiB3aWR0aCBvZiB0aGUgcmVzb2x1dGlvbiBsZXZlbCBvbmNlIGxvd2VyIHRoYW4gY29tcHV0ZWQgb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwkJT1BKX0lOVDMyIHJoMTsJCS8qIGhlaWdodCBvZiB0aGUgcmVzb2x1dGlvbiBsZXZlbCBvbmNlIGxvd2VyIHRoYW4gY29tcHV0ZWQgb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCQlPUEpfSU5UMzIgY2FzX2NvbDsJLyogMCA9IG5vbiBpbnZlcnNpb24gb24gaG9yaXpvbnRhbCBmaWx0ZXJpbmcgMSA9IGludmVyc2lvbiBiZXR3ZWVuIGxvdy1wYXNzIGFuZCBoaWdoLXBhc3MgZmlsdGVyaW5nICovCisJCU9QSl9JTlQzMiBjYXNfcm93OwkvKiAwID0gbm9uIGludmVyc2lvbiBvbiB2ZXJ0aWNhbCBmaWx0ZXJpbmcgMSA9IGludmVyc2lvbiBiZXR3ZWVuIGxvdy1wYXNzIGFuZCBoaWdoLXBhc3MgZmlsdGVyaW5nICAgKi8KKwkJT1BKX0lOVDMyIGRuLCBzbjsKKworCQlydyAgPSBsX2N1cl9yZXMtPngxIC0gbF9jdXJfcmVzLT54MDsKKwkJcmggID0gbF9jdXJfcmVzLT55MSAtIGxfY3VyX3Jlcy0+eTA7CisJCXJ3MSA9IGxfbGFzdF9yZXMtPngxIC0gbF9sYXN0X3Jlcy0+eDA7CisJCXJoMSA9IGxfbGFzdF9yZXMtPnkxIC0gbF9sYXN0X3Jlcy0+eTA7CisKKwkJY2FzX3JvdyA9IGxfY3VyX3Jlcy0+eDAgJiAxOworCQljYXNfY29sID0gbF9jdXJfcmVzLT55MCAmIDE7CisKKwkJc24gPSByaDE7CisJCWRuID0gcmggLSByaDE7CisJCWZvciAoaiA9IDA7IGogPCBydzsgKytqKSB7CisJCQlhaiA9IGEgKyBqOworCQkJZm9yIChrID0gMDsgayA8IHJoOyArK2spIHsKKwkJCQlialtrXSA9IGFqW2sqd107CisJCQl9CisKKwkJCSgqcF9mdW5jdGlvbikgKGJqLCBkbiwgc24sIGNhc19jb2wpOworCisJCQlvcGpfZHd0X2RlaW50ZXJsZWF2ZV92KGJqLCBhaiwgZG4sIHNuLCB3LCBjYXNfY29sKTsKKwkJfQorCisJCXNuID0gcncxOworCQlkbiA9IHJ3IC0gcncxOworCisJCWZvciAoaiA9IDA7IGogPCByaDsgaisrKSB7CisJCQlhaiA9IGEgKyBqICogdzsKKwkJCWZvciAoayA9IDA7IGsgPCBydzsgaysrKSAgYmpba10gPSBhaltrXTsKKwkJCSgqcF9mdW5jdGlvbikgKGJqLCBkbiwgc24sIGNhc19yb3cpOworCQkJb3BqX2R3dF9kZWludGVybGVhdmVfaChiaiwgYWosIGRuLCBzbiwgY2FzX3Jvdyk7CisJCX0KKworCQlsX2N1cl9yZXMgPSBsX2xhc3RfcmVzOworCisJCS0tbF9sYXN0X3JlczsKKwl9CisKKwlvcGpfZnJlZShiaik7CisJcmV0dXJuIE9QSl9UUlVFOworfQorCisvKiBGb3J3YXJkIDUtMyB3YXZlbGV0IHRyYW5zZm9ybSBpbiAyLUQuICovCisvKiA8L3N1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK09QSl9CT09MIG9wal9kd3RfZW5jb2RlKG9wal90Y2RfdGlsZWNvbXBfdCAqIHRpbGVjKQoreworCXJldHVybiBvcGpfZHd0X2VuY29kZV9wcm9jZWR1cmUodGlsZWMsb3BqX2R3dF9lbmNvZGVfMSk7Cit9CisKKy8qIDxzdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogSW52ZXJzZSA1LTMgd2F2ZWxldCB0cmFuc2Zvcm0gaW4gMi1ELiAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCitPUEpfQk9PTCBvcGpfZHd0X2RlY29kZShvcGpfdGNkX3RpbGVjb21wX3QqIHRpbGVjLCBPUEpfVUlOVDMyIG51bXJlcykgeworCXJldHVybiBvcGpfZHd0X2RlY29kZV90aWxlKHRpbGVjLCBudW1yZXMsICZvcGpfZHd0X2RlY29kZV8xKTsKK30KKworCisvKiA8c3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBHZXQgZ2FpbiBvZiA1LTMgd2F2ZWxldCB0cmFuc2Zvcm0uICovCisvKiA8L3N1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICovCitPUEpfVUlOVDMyIG9wal9kd3RfZ2V0Z2FpbihPUEpfVUlOVDMyIG9yaWVudCkgeworCWlmIChvcmllbnQgPT0gMCkKKwkJcmV0dXJuIDA7CisJaWYgKG9yaWVudCA9PSAxIHx8IG9yaWVudCA9PSAyKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMjsKK30KKworLyogPHN1bW1hcnk+ICAgICAgICAgICAgICAgICovCisvKiBHZXQgbm9ybSBvZiA1LTMgd2F2ZWxldC4gKi8KKy8qIDwvc3VtbWFyeT4gICAgICAgICAgICAgICAqLworT1BKX0ZMT0FUNjQgb3BqX2R3dF9nZXRub3JtKE9QSl9VSU5UMzIgbGV2ZWwsIE9QSl9VSU5UMzIgb3JpZW50KSB7CisJcmV0dXJuIG9wal9kd3Rfbm9ybXNbb3JpZW50XVtsZXZlbF07Cit9CisKKy8qIDxzdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIEZvcndhcmQgOS03IHdhdmVsZXQgdHJhbnNmb3JtIGluIDItRC4gKi8KKy8qIDwvc3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK09QSl9CT09MIG9wal9kd3RfZW5jb2RlX3JlYWwob3BqX3RjZF90aWxlY29tcF90ICogdGlsZWMpCit7CisJcmV0dXJuIG9wal9kd3RfZW5jb2RlX3Byb2NlZHVyZSh0aWxlYyxvcGpfZHd0X2VuY29kZV8xX3JlYWwpOworfQorCisvKiA8c3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBHZXQgZ2FpbiBvZiA5LTcgd2F2ZWxldCB0cmFuc2Zvcm0uICovCisvKiA8L3N1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICovCitPUEpfVUlOVDMyIG9wal9kd3RfZ2V0Z2Fpbl9yZWFsKE9QSl9VSU5UMzIgb3JpZW50KSB7CisJKHZvaWQpb3JpZW50OworCXJldHVybiAwOworfQorCisvKiA8c3VtbWFyeT4gICAgICAgICAgICAgICAgKi8KKy8qIEdldCBub3JtIG9mIDktNyB3YXZlbGV0LiAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICovCitPUEpfRkxPQVQ2NCBvcGpfZHd0X2dldG5vcm1fcmVhbChPUEpfVUlOVDMyIGxldmVsLCBPUEpfVUlOVDMyIG9yaWVudCkgeworCXJldHVybiBvcGpfZHd0X25vcm1zX3JlYWxbb3JpZW50XVtsZXZlbF07Cit9CisKK3ZvaWQgb3BqX2R3dF9jYWxjX2V4cGxpY2l0X3N0ZXBzaXplcyhvcGpfdGNjcF90ICogdGNjcCwgT1BKX1VJTlQzMiBwcmVjKSB7CisJT1BKX1VJTlQzMiBudW1iYW5kcywgYmFuZG5vOworCW51bWJhbmRzID0gMyAqIHRjY3AtPm51bXJlc29sdXRpb25zIC0gMjsKKwlmb3IgKGJhbmRubyA9IDA7IGJhbmRubyA8IG51bWJhbmRzOyBiYW5kbm8rKykgeworCQlPUEpfRkxPQVQ2NCBzdGVwc2l6ZTsKKwkJT1BKX1VJTlQzMiByZXNubywgbGV2ZWwsIG9yaWVudCwgZ2FpbjsKKworCQlyZXNubyA9IChiYW5kbm8gPT0gMCkgPyAwIDogKChiYW5kbm8gLSAxKSAvIDMgKyAxKTsKKwkJb3JpZW50ID0gKGJhbmRubyA9PSAwKSA/IDAgOiAoKGJhbmRubyAtIDEpICUgMyArIDEpOworCQlsZXZlbCA9IHRjY3AtPm51bXJlc29sdXRpb25zIC0gMSAtIHJlc25vOworCQlnYWluID0gKHRjY3AtPnFtZmJpZCA9PSAwKSA/IDAgOiAoKG9yaWVudCA9PSAwKSA/IDAgOiAoKChvcmllbnQgPT0gMSkgfHwgKG9yaWVudCA9PSAyKSkgPyAxIDogMikpOworCQlpZiAodGNjcC0+cW50c3R5ID09IEoyS19DQ1BfUU5UU1RZX05PUU5UKSB7CisJCQlzdGVwc2l6ZSA9IDEuMDsKKwkJfSBlbHNlIHsKKwkJCU9QSl9GTE9BVDY0IG5vcm0gPSBvcGpfZHd0X25vcm1zX3JlYWxbb3JpZW50XVtsZXZlbF07CisJCQlzdGVwc2l6ZSA9ICgxIDw8IChnYWluKSkgLyBub3JtOworCQl9CisJCW9wal9kd3RfZW5jb2RlX3N0ZXBzaXplKChPUEpfSU5UMzIpIGZsb29yKHN0ZXBzaXplICogODE5Mi4wKSwgKE9QSl9JTlQzMikocHJlYyArIGdhaW4pLCAmdGNjcC0+c3RlcHNpemVzW2JhbmRub10pOworCX0KK30KKworLyogPHN1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogRGV0ZXJtaW5lIG1heGltdW0gY29tcHV0ZWQgcmVzb2x1dGlvbiBsZXZlbCBmb3IgaW52ZXJzZSB3YXZlbGV0IHRyYW5zZm9ybSAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworT1BKX1VJTlQzMiBvcGpfZHd0X21heF9yZXNvbHV0aW9uKG9wal90Y2RfcmVzb2x1dGlvbl90KiByZXN0cmljdCByLCBPUEpfVUlOVDMyIGkpIHsKKwlPUEpfVUlOVDMyIG1yCT0gMDsKKwlPUEpfVUlOVDMyIHc7CisJd2hpbGUoIC0taSApIHsKKwkJKytyOworCQlpZiggbXIgPCAoIHcgPSAoT1BKX1VJTlQzMikoci0+eDEgLSByLT54MCkgKSApCisJCQltciA9IHcgOworCQlpZiggbXIgPCAoIHcgPSAoT1BKX1VJTlQzMikoci0+eTEgLSByLT55MCkgKSApCisJCQltciA9IHcgOworCX0KKwlyZXR1cm4gbXIgOworfQorCisvKiA8c3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIEludmVyc2Ugd2F2ZWxldCB0cmFuc2Zvcm0gaW4gMi1ELiAgICAgKi8KKy8qIDwvc3VtbWFyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworT1BKX0JPT0wgb3BqX2R3dF9kZWNvZGVfdGlsZShvcGpfdGNkX3RpbGVjb21wX3QqIHRpbGVjLCBPUEpfVUlOVDMyIG51bXJlcywgRFdUMURGTiBkd3RfMUQpIHsKKwlvcGpfZHd0X3QgaDsKKwlvcGpfZHd0X3QgdjsKKworCW9wal90Y2RfcmVzb2x1dGlvbl90KiB0ciA9IHRpbGVjLT5yZXNvbHV0aW9uczsKKworCU9QSl9VSU5UMzIgcncgPSAoT1BKX1VJTlQzMikodHItPngxIC0gdHItPngwKTsJLyogd2lkdGggb2YgdGhlIHJlc29sdXRpb24gbGV2ZWwgY29tcHV0ZWQgKi8KKwlPUEpfVUlOVDMyIHJoID0gKE9QSl9VSU5UMzIpKHRyLT55MSAtIHRyLT55MCk7CS8qIGhlaWdodCBvZiB0aGUgcmVzb2x1dGlvbiBsZXZlbCBjb21wdXRlZCAqLworCisJT1BKX1VJTlQzMiB3ID0gKE9QSl9VSU5UMzIpKHRpbGVjLT54MSAtIHRpbGVjLT54MCk7CisKKwloLm1lbSA9IChPUEpfSU5UMzIqKQorCW9wal9hbGlnbmVkX21hbGxvYyhvcGpfZHd0X21heF9yZXNvbHV0aW9uKHRyLCBudW1yZXMpICogc2l6ZW9mKE9QSl9JTlQzMikpOworCWlmICghIGgubWVtKXsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwl2Lm1lbSA9IGgubWVtOworCisJd2hpbGUoIC0tbnVtcmVzKSB7CisJCU9QSl9JTlQzMiAqIHJlc3RyaWN0IHRpbGVkcCA9IHRpbGVjLT5kYXRhOworCQlPUEpfVUlOVDMyIGo7CisKKwkJKyt0cjsKKwkJaC5zbiA9IChPUEpfSU5UMzIpcnc7CisJCXYuc24gPSAoT1BKX0lOVDMyKXJoOworCisJCXJ3ID0gKE9QSl9VSU5UMzIpKHRyLT54MSAtIHRyLT54MCk7CisJCXJoID0gKE9QSl9VSU5UMzIpKHRyLT55MSAtIHRyLT55MCk7CisKKwkJaC5kbiA9IChPUEpfSU5UMzIpKHJ3IC0gKE9QSl9VSU5UMzIpaC5zbik7CisJCWguY2FzID0gdHItPngwICUgMjsKKworCQlmb3IoaiA9IDA7IGogPCByaDsgKytqKSB7CisJCQlvcGpfZHd0X2ludGVybGVhdmVfaCgmaCwgJnRpbGVkcFtqKnddKTsKKwkJCShkd3RfMUQpKCZoKTsKKwkJCW1lbWNweSgmdGlsZWRwW2oqd10sIGgubWVtLCBydyAqIHNpemVvZihPUEpfSU5UMzIpKTsKKwkJfQorCisJCXYuZG4gPSAoT1BKX0lOVDMyKShyaCAtIChPUEpfVUlOVDMyKXYuc24pOworCQl2LmNhcyA9IHRyLT55MCAlIDI7CisKKwkJZm9yKGogPSAwOyBqIDwgcnc7ICsrail7CisJCQlPUEpfVUlOVDMyIGs7CisJCQlvcGpfZHd0X2ludGVybGVhdmVfdigmdiwgJnRpbGVkcFtqXSwgKE9QSl9JTlQzMil3KTsKKwkJCShkd3RfMUQpKCZ2KTsKKwkJCWZvcihrID0gMDsgayA8IHJoOyArK2spIHsKKwkJCQl0aWxlZHBbayAqIHcgKyBqXSA9IHYubWVtW2tdOworCQkJfQorCQl9CisJfQorCW9wal9hbGlnbmVkX2ZyZWUoaC5tZW0pOworCXJldHVybiBPUEpfVFJVRTsKK30KKwordm9pZCBvcGpfdjRkd3RfaW50ZXJsZWF2ZV9oKG9wal92NGR3dF90KiByZXN0cmljdCB3LCBPUEpfRkxPQVQzMiogcmVzdHJpY3QgYSwgT1BKX0lOVDMyIHgsIE9QSl9JTlQzMiBzaXplKXsKKwlPUEpfRkxPQVQzMiogcmVzdHJpY3QgYmkgPSAoT1BKX0ZMT0FUMzIqKSAody0+d2F2ZWxldCArIHctPmNhcyk7CisJT1BKX0lOVDMyIGNvdW50ID0gdy0+c247CisJT1BKX0lOVDMyIGksIGs7CisKKwlmb3IoayA9IDA7IGsgPCAyOyArK2speworCQlpZiAoIGNvdW50ICsgMyAqIHggPCBzaXplICYmICgoc2l6ZV90KSBhICYgMHgwZikgPT0gMCAmJiAoKHNpemVfdCkgYmkgJiAweDBmKSA9PSAwICYmICh4ICYgMHgwZikgPT0gMCApIHsKKwkJCS8qIEZhc3QgY29kZSBwYXRoICovCisJCQlmb3IoaSA9IDA7IGkgPCBjb3VudDsgKytpKXsKKwkJCQlPUEpfSU5UMzIgaiA9IGk7CisJCQkJYmlbaSo4ICAgIF0gPSBhW2pdOworCQkJCWogKz0geDsKKwkJCQliaVtpKjggKyAxXSA9IGFbal07CisJCQkJaiArPSB4OworCQkJCWJpW2kqOCArIDJdID0gYVtqXTsKKwkJCQlqICs9IHg7CisJCQkJYmlbaSo4ICsgM10gPSBhW2pdOworCQkJfQorCQl9CisJCWVsc2UgeworCQkJLyogU2xvdyBjb2RlIHBhdGggKi8KKwkJCWZvcihpID0gMDsgaSA8IGNvdW50OyArK2kpeworCQkJCU9QSl9JTlQzMiBqID0gaTsKKwkJCQliaVtpKjggICAgXSA9IGFbal07CisJCQkJaiArPSB4OworCQkJCWlmKGogPj0gc2l6ZSkgY29udGludWU7CisJCQkJYmlbaSo4ICsgMV0gPSBhW2pdOworCQkJCWogKz0geDsKKwkJCQlpZihqID49IHNpemUpIGNvbnRpbnVlOworCQkJCWJpW2kqOCArIDJdID0gYVtqXTsKKwkJCQlqICs9IHg7CisJCQkJaWYoaiA+PSBzaXplKSBjb250aW51ZTsKKwkJCQliaVtpKjggKyAzXSA9IGFbal07IC8qIFRoaXMgb25lKi8KKwkJCX0KKwkJfQorCisJCWJpID0gKE9QSl9GTE9BVDMyKikgKHctPndhdmVsZXQgKyAxIC0gdy0+Y2FzKTsKKwkJYSArPSB3LT5zbjsKKwkJc2l6ZSAtPSB3LT5zbjsKKwkJY291bnQgPSB3LT5kbjsKKwl9Cit9CisKK3ZvaWQgb3BqX3Y0ZHd0X2ludGVybGVhdmVfdihvcGpfdjRkd3RfdCogcmVzdHJpY3QgdiAsIE9QSl9GTE9BVDMyKiByZXN0cmljdCBhICwgT1BKX0lOVDMyIHgsIE9QSl9JTlQzMiBuYl9lbHRzX3JlYWQpeworCW9wal92NF90KiByZXN0cmljdCBiaSA9IHYtPndhdmVsZXQgKyB2LT5jYXM7CisJT1BKX0lOVDMyIGk7CisKKwlmb3IoaSA9IDA7IGkgPCB2LT5zbjsgKytpKXsKKwkJbWVtY3B5KCZiaVtpKjJdLCAmYVtpKnhdLCAoc2l6ZV90KW5iX2VsdHNfcmVhZCAqIHNpemVvZihPUEpfRkxPQVQzMikpOworCX0KKworCWEgKz0gdi0+c24gKiB4OworCWJpID0gdi0+d2F2ZWxldCArIDEgLSB2LT5jYXM7CisKKwlmb3IoaSA9IDA7IGkgPCB2LT5kbjsgKytpKXsKKwkJbWVtY3B5KCZiaVtpKjJdLCAmYVtpKnhdLCAoc2l6ZV90KW5iX2VsdHNfcmVhZCAqIHNpemVvZihPUEpfRkxPQVQzMikpOworCX0KK30KKworI2lmZGVmIF9fU1NFX18KKwordm9pZCBvcGpfdjRkd3RfZGVjb2RlX3N0ZXAxX3NzZShvcGpfdjRfdCogdywgT1BKX0lOVDMyIGNvdW50LCBjb25zdCBfX20xMjggYyl7CisJX19tMTI4KiByZXN0cmljdCB2dyA9IChfX20xMjgqKSB3OworCU9QSl9JTlQzMiBpOworCS8qIDR4IHVucm9sbGVkIGxvb3AgKi8KKwlmb3IoaSA9IDA7IGkgPCBjb3VudCA+PiAyOyArK2kpeworCQkqdncgPSBfbW1fbXVsX3BzKCp2dywgYyk7CisJCXZ3ICs9IDI7CisJCSp2dyA9IF9tbV9tdWxfcHMoKnZ3LCBjKTsKKwkJdncgKz0gMjsKKwkJKnZ3ID0gX21tX211bF9wcygqdncsIGMpOworCQl2dyArPSAyOworCQkqdncgPSBfbW1fbXVsX3BzKCp2dywgYyk7CisJCXZ3ICs9IDI7CisJfQorCWNvdW50ICY9IDM7CisJZm9yKGkgPSAwOyBpIDwgY291bnQ7ICsraSl7CisJCSp2dyA9IF9tbV9tdWxfcHMoKnZ3LCBjKTsKKwkJdncgKz0gMjsKKwl9Cit9CisKK3ZvaWQgb3BqX3Y0ZHd0X2RlY29kZV9zdGVwMl9zc2Uob3BqX3Y0X3QqIGwsIG9wal92NF90KiB3LCBPUEpfSU5UMzIgaywgT1BKX0lOVDMyIG0sIF9fbTEyOCBjKXsKKwlfX20xMjgqIHJlc3RyaWN0IHZsID0gKF9fbTEyOCopIGw7CisJX19tMTI4KiByZXN0cmljdCB2dyA9IChfX20xMjgqKSB3OworCU9QSl9JTlQzMiBpOworCV9fbTEyOCB0bXAxLCB0bXAyLCB0bXAzOworCXRtcDEgPSB2bFswXTsKKwlmb3IoaSA9IDA7IGkgPCBtOyArK2kpeworCQl0bXAyID0gdndbLTFdOworCQl0bXAzID0gdndbIDBdOworCQl2d1stMV0gPSBfbW1fYWRkX3BzKHRtcDIsIF9tbV9tdWxfcHMoX21tX2FkZF9wcyh0bXAxLCB0bXAzKSwgYykpOworCQl0bXAxID0gdG1wMzsKKwkJdncgKz0gMjsKKwl9CisJdmwgPSB2dyAtIDI7CisJaWYobSA+PSBrKXsKKwkJcmV0dXJuOworCX0KKwljID0gX21tX2FkZF9wcyhjLCBjKTsKKwljID0gX21tX211bF9wcyhjLCB2bFswXSk7CisJZm9yKDsgbSA8IGs7ICsrbSl7CisJCV9fbTEyOCB0bXAgPSB2d1stMV07CisJCXZ3Wy0xXSA9IF9tbV9hZGRfcHModG1wLCBjKTsKKwkJdncgKz0gMjsKKwl9Cit9CisKKyNlbHNlCisKK3ZvaWQgb3BqX3Y0ZHd0X2RlY29kZV9zdGVwMShvcGpfdjRfdCogdywgT1BKX0lOVDMyIGNvdW50LCBjb25zdCBPUEpfRkxPQVQzMiBjKQoreworCU9QSl9GTE9BVDMyKiByZXN0cmljdCBmdyA9IChPUEpfRkxPQVQzMiopIHc7CisJT1BKX0lOVDMyIGk7CisJZm9yKGkgPSAwOyBpIDwgY291bnQ7ICsraSl7CisJCU9QSl9GTE9BVDMyIHRtcDEgPSBmd1tpKjggICAgXTsKKwkJT1BKX0ZMT0FUMzIgdG1wMiA9IGZ3W2kqOCArIDFdOworCQlPUEpfRkxPQVQzMiB0bXAzID0gZndbaSo4ICsgMl07CisJCU9QSl9GTE9BVDMyIHRtcDQgPSBmd1tpKjggKyAzXTsKKwkJZndbaSo4ICAgIF0gPSB0bXAxICogYzsKKwkJZndbaSo4ICsgMV0gPSB0bXAyICogYzsKKwkJZndbaSo4ICsgMl0gPSB0bXAzICogYzsKKwkJZndbaSo4ICsgM10gPSB0bXA0ICogYzsKKwl9Cit9CisKK3ZvaWQgb3BqX3Y0ZHd0X2RlY29kZV9zdGVwMihvcGpfdjRfdCogbCwgb3BqX3Y0X3QqIHcsIE9QSl9JTlQzMiBrLCBPUEpfSU5UMzIgbSwgT1BKX0ZMT0FUMzIgYykKK3sKKwlPUEpfRkxPQVQzMiogcmVzdHJpY3QgZmwgPSAoT1BKX0ZMT0FUMzIqKSBsOworCU9QSl9GTE9BVDMyKiByZXN0cmljdCBmdyA9IChPUEpfRkxPQVQzMiopIHc7CisJT1BKX0lOVDMyIGk7CisJZm9yKGkgPSAwOyBpIDwgbTsgKytpKXsKKwkJT1BKX0ZMT0FUMzIgdG1wMV8xID0gZmxbMF07CisJCU9QSl9GTE9BVDMyIHRtcDFfMiA9IGZsWzFdOworCQlPUEpfRkxPQVQzMiB0bXAxXzMgPSBmbFsyXTsKKwkJT1BKX0ZMT0FUMzIgdG1wMV80ID0gZmxbM107CisJCU9QSl9GTE9BVDMyIHRtcDJfMSA9IGZ3Wy00XTsKKwkJT1BKX0ZMT0FUMzIgdG1wMl8yID0gZndbLTNdOworCQlPUEpfRkxPQVQzMiB0bXAyXzMgPSBmd1stMl07CisJCU9QSl9GTE9BVDMyIHRtcDJfNCA9IGZ3Wy0xXTsKKwkJT1BKX0ZMT0FUMzIgdG1wM18xID0gZndbMF07CisJCU9QSl9GTE9BVDMyIHRtcDNfMiA9IGZ3WzFdOworCQlPUEpfRkxPQVQzMiB0bXAzXzMgPSBmd1syXTsKKwkJT1BKX0ZMT0FUMzIgdG1wM180ID0gZndbM107CisJCWZ3Wy00XSA9IHRtcDJfMSArICgodG1wMV8xICsgdG1wM18xKSAqIGMpOworCQlmd1stM10gPSB0bXAyXzIgKyAoKHRtcDFfMiArIHRtcDNfMikgKiBjKTsKKwkJZndbLTJdID0gdG1wMl8zICsgKCh0bXAxXzMgKyB0bXAzXzMpICogYyk7CisJCWZ3Wy0xXSA9IHRtcDJfNCArICgodG1wMV80ICsgdG1wM180KSAqIGMpOworCQlmbCA9IGZ3OworCQlmdyArPSA4OworCX0KKwlpZihtIDwgayl7CisJCU9QSl9GTE9BVDMyIGMxOworCQlPUEpfRkxPQVQzMiBjMjsKKwkJT1BKX0ZMT0FUMzIgYzM7CisJCU9QSl9GTE9BVDMyIGM0OworCQljICs9IGM7CisJCWMxID0gZmxbMF0gKiBjOworCQljMiA9IGZsWzFdICogYzsKKwkJYzMgPSBmbFsyXSAqIGM7CisJCWM0ID0gZmxbM10gKiBjOworCQlmb3IoOyBtIDwgazsgKyttKXsKKwkJCU9QSl9GTE9BVDMyIHRtcDEgPSBmd1stNF07CisJCQlPUEpfRkxPQVQzMiB0bXAyID0gZndbLTNdOworCQkJT1BKX0ZMT0FUMzIgdG1wMyA9IGZ3Wy0yXTsKKwkJCU9QSl9GTE9BVDMyIHRtcDQgPSBmd1stMV07CisJCQlmd1stNF0gPSB0bXAxICsgYzE7CisJCQlmd1stM10gPSB0bXAyICsgYzI7CisJCQlmd1stMl0gPSB0bXAzICsgYzM7CisJCQlmd1stMV0gPSB0bXA0ICsgYzQ7CisJCQlmdyArPSA4OworCQl9CisJfQorfQorCisjZW5kaWYKKworLyogPHN1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogSW52ZXJzZSA5LTcgd2F2ZWxldCB0cmFuc2Zvcm0gaW4gMS1ELiAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwordm9pZCBvcGpfdjRkd3RfZGVjb2RlKG9wal92NGR3dF90KiByZXN0cmljdCBkd3QpCit7CisJT1BKX0lOVDMyIGEsIGI7CisJaWYoZHd0LT5jYXMgPT0gMCkgeworCQlpZighKChkd3QtPmRuID4gMCkgfHwgKGR3dC0+c24gPiAxKSkpeworCQkJcmV0dXJuOworCQl9CisJCWEgPSAwOworCQliID0gMTsKKwl9ZWxzZXsKKwkJaWYoISgoZHd0LT5zbiA+IDApIHx8IChkd3QtPmRuID4gMSkpKSB7CisJCQlyZXR1cm47CisJCX0KKwkJYSA9IDE7CisJCWIgPSAwOworCX0KKyNpZmRlZiBfX1NTRV9fCisJb3BqX3Y0ZHd0X2RlY29kZV9zdGVwMV9zc2UoZHd0LT53YXZlbGV0K2EsIGR3dC0+c24sIF9tbV9zZXQxX3BzKG9wal9LKSk7CisJb3BqX3Y0ZHd0X2RlY29kZV9zdGVwMV9zc2UoZHd0LT53YXZlbGV0K2IsIGR3dC0+ZG4sIF9tbV9zZXQxX3BzKG9wal9jMTMzMTgpKTsKKwlvcGpfdjRkd3RfZGVjb2RlX3N0ZXAyX3NzZShkd3QtPndhdmVsZXQrYiwgZHd0LT53YXZlbGV0K2ErMSwgZHd0LT5zbiwgb3BqX2ludF9taW4oZHd0LT5zbiwgZHd0LT5kbi1hKSwgX21tX3NldDFfcHMob3BqX2R3dF9kZWx0YSkpOworCW9wal92NGR3dF9kZWNvZGVfc3RlcDJfc3NlKGR3dC0+d2F2ZWxldCthLCBkd3QtPndhdmVsZXQrYisxLCBkd3QtPmRuLCBvcGpfaW50X21pbihkd3QtPmRuLCBkd3QtPnNuLWIpLCBfbW1fc2V0MV9wcyhvcGpfZHd0X2dhbW1hKSk7CisJb3BqX3Y0ZHd0X2RlY29kZV9zdGVwMl9zc2UoZHd0LT53YXZlbGV0K2IsIGR3dC0+d2F2ZWxldCthKzEsIGR3dC0+c24sIG9wal9pbnRfbWluKGR3dC0+c24sIGR3dC0+ZG4tYSksIF9tbV9zZXQxX3BzKG9wal9kd3RfYmV0YSkpOworCW9wal92NGR3dF9kZWNvZGVfc3RlcDJfc3NlKGR3dC0+d2F2ZWxldCthLCBkd3QtPndhdmVsZXQrYisxLCBkd3QtPmRuLCBvcGpfaW50X21pbihkd3QtPmRuLCBkd3QtPnNuLWIpLCBfbW1fc2V0MV9wcyhvcGpfZHd0X2FscGhhKSk7CisjZWxzZQorCW9wal92NGR3dF9kZWNvZGVfc3RlcDEoZHd0LT53YXZlbGV0K2EsIGR3dC0+c24sIG9wal9LKTsKKwlvcGpfdjRkd3RfZGVjb2RlX3N0ZXAxKGR3dC0+d2F2ZWxldCtiLCBkd3QtPmRuLCBvcGpfYzEzMzE4KTsKKwlvcGpfdjRkd3RfZGVjb2RlX3N0ZXAyKGR3dC0+d2F2ZWxldCtiLCBkd3QtPndhdmVsZXQrYSsxLCBkd3QtPnNuLCBvcGpfaW50X21pbihkd3QtPnNuLCBkd3QtPmRuLWEpLCBvcGpfZHd0X2RlbHRhKTsKKwlvcGpfdjRkd3RfZGVjb2RlX3N0ZXAyKGR3dC0+d2F2ZWxldCthLCBkd3QtPndhdmVsZXQrYisxLCBkd3QtPmRuLCBvcGpfaW50X21pbihkd3QtPmRuLCBkd3QtPnNuLWIpLCBvcGpfZHd0X2dhbW1hKTsKKwlvcGpfdjRkd3RfZGVjb2RlX3N0ZXAyKGR3dC0+d2F2ZWxldCtiLCBkd3QtPndhdmVsZXQrYSsxLCBkd3QtPnNuLCBvcGpfaW50X21pbihkd3QtPnNuLCBkd3QtPmRuLWEpLCBvcGpfZHd0X2JldGEpOworCW9wal92NGR3dF9kZWNvZGVfc3RlcDIoZHd0LT53YXZlbGV0K2EsIGR3dC0+d2F2ZWxldCtiKzEsIGR3dC0+ZG4sIG9wal9pbnRfbWluKGR3dC0+ZG4sIGR3dC0+c24tYiksIG9wal9kd3RfYWxwaGEpOworI2VuZGlmCit9CisKKworLyogPHN1bW1hcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogSW52ZXJzZSA5LTcgd2F2ZWxldCB0cmFuc2Zvcm0gaW4gMi1ELiAqLworLyogPC9zdW1tYXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworT1BKX0JPT0wgb3BqX2R3dF9kZWNvZGVfcmVhbChvcGpfdGNkX3RpbGVjb21wX3QqIHJlc3RyaWN0IHRpbGVjLCBPUEpfVUlOVDMyIG51bXJlcykKK3sKKwlvcGpfdjRkd3RfdCBoOworCW9wal92NGR3dF90IHY7CisKKwlvcGpfdGNkX3Jlc29sdXRpb25fdCogcmVzID0gdGlsZWMtPnJlc29sdXRpb25zOworCisJT1BKX1VJTlQzMiBydyA9IChPUEpfVUlOVDMyKShyZXMtPngxIC0gcmVzLT54MCk7CS8qIHdpZHRoIG9mIHRoZSByZXNvbHV0aW9uIGxldmVsIGNvbXB1dGVkICovCisJT1BKX1VJTlQzMiByaCA9IChPUEpfVUlOVDMyKShyZXMtPnkxIC0gcmVzLT55MCk7CS8qIGhlaWdodCBvZiB0aGUgcmVzb2x1dGlvbiBsZXZlbCBjb21wdXRlZCAqLworCisJT1BKX1VJTlQzMiB3ID0gKE9QSl9VSU5UMzIpKHRpbGVjLT54MSAtIHRpbGVjLT54MCk7CisKKwloLndhdmVsZXQgPSAob3BqX3Y0X3QqKSBvcGpfYWxpZ25lZF9tYWxsb2MoKG9wal9kd3RfbWF4X3Jlc29sdXRpb24ocmVzLCBudW1yZXMpKzUpICogc2l6ZW9mKG9wal92NF90KSk7CisJdi53YXZlbGV0ID0gaC53YXZlbGV0OworCisJd2hpbGUoIC0tbnVtcmVzKSB7CisJCU9QSl9GTE9BVDMyICogcmVzdHJpY3QgYWogPSAoT1BKX0ZMT0FUMzIqKSB0aWxlYy0+ZGF0YTsKKwkJT1BKX1VJTlQzMiBidWZzaXplID0gKE9QSl9VSU5UMzIpKCh0aWxlYy0+eDEgLSB0aWxlYy0+eDApICogKHRpbGVjLT55MSAtIHRpbGVjLT55MCkpOworCQlPUEpfSU5UMzIgajsKKworCQloLnNuID0gKE9QSl9JTlQzMilydzsKKwkJdi5zbiA9IChPUEpfSU5UMzIpcmg7CisKKwkJKytyZXM7CisKKwkJcncgPSAoT1BKX1VJTlQzMikocmVzLT54MSAtIHJlcy0+eDApOwkvKiB3aWR0aCBvZiB0aGUgcmVzb2x1dGlvbiBsZXZlbCBjb21wdXRlZCAqLworCQlyaCA9IChPUEpfVUlOVDMyKShyZXMtPnkxIC0gcmVzLT55MCk7CS8qIGhlaWdodCBvZiB0aGUgcmVzb2x1dGlvbiBsZXZlbCBjb21wdXRlZCAqLworCisJCWguZG4gPSAoT1BKX0lOVDMyKShydyAtIChPUEpfVUlOVDMyKWguc24pOworCQloLmNhcyA9IHJlcy0+eDAgJSAyOworCisJCWZvcihqID0gKE9QSl9JTlQzMilyaDsgaiA+IDM7IGogLT0gNCkgeworCQkJT1BKX0lOVDMyIGs7CisJCQlvcGpfdjRkd3RfaW50ZXJsZWF2ZV9oKCZoLCBhaiwgKE9QSl9JTlQzMil3LCAoT1BKX0lOVDMyKWJ1ZnNpemUpOworCQkJb3BqX3Y0ZHd0X2RlY29kZSgmaCk7CisKKwkJCWZvcihrID0gKE9QSl9JTlQzMilydzsgLS1rID49IDA7KXsKKwkJCQlhaltrICAgICAgICAgICAgICAgXSA9IGgud2F2ZWxldFtrXS5mWzBdOworCQkJCWFqW2srKE9QSl9JTlQzMil3ICBdID0gaC53YXZlbGV0W2tdLmZbMV07CisJCQkJYWpbaysoT1BKX0lOVDMyKXcqMl0gPSBoLndhdmVsZXRba10uZlsyXTsKKwkJCQlhaltrKyhPUEpfSU5UMzIpdyozXSA9IGgud2F2ZWxldFtrXS5mWzNdOworCQkJfQorCisJCQlhaiArPSB3KjQ7CisJCQlidWZzaXplIC09IHcqNDsKKwkJfQorCisJCWlmIChyaCAmIDB4MDMpIHsKKwkJCU9QSl9JTlQzMiBrOworCQkJaiA9IHJoICYgMHgwMzsKKwkJCW9wal92NGR3dF9pbnRlcmxlYXZlX2goJmgsIGFqLCAoT1BKX0lOVDMyKXcsIChPUEpfSU5UMzIpYnVmc2l6ZSk7CisJCQlvcGpfdjRkd3RfZGVjb2RlKCZoKTsKKwkJCWZvcihrID0gKE9QSl9JTlQzMilydzsgLS1rID49IDA7KXsKKwkJCQlzd2l0Y2goaikgeworCQkJCQljYXNlIDM6IGFqW2srKE9QSl9JTlQzMil3KjJdID0gaC53YXZlbGV0W2tdLmZbMl07CisJCQkJCWNhc2UgMjogYWpbaysoT1BKX0lOVDMyKXcgIF0gPSBoLndhdmVsZXRba10uZlsxXTsKKwkJCQkJY2FzZSAxOiBhaltrICAgICAgICAgICAgICAgXSA9IGgud2F2ZWxldFtrXS5mWzBdOworCQkJCX0KKwkJCX0KKwkJfQorCisJCXYuZG4gPSAoT1BKX0lOVDMyKShyaCAtIChPUEpfVUlOVDMyKXYuc24pOworCQl2LmNhcyA9IHJlcy0+eTAgJSAyOworCisJCWFqID0gKE9QSl9GTE9BVDMyKikgdGlsZWMtPmRhdGE7CisJCWZvcihqID0gKE9QSl9JTlQzMilydzsgaiA+IDM7IGogLT0gNCl7CisJCQlPUEpfVUlOVDMyIGs7CisKKwkJCW9wal92NGR3dF9pbnRlcmxlYXZlX3YoJnYsIGFqLCAoT1BKX0lOVDMyKXcsIDQpOworCQkJb3BqX3Y0ZHd0X2RlY29kZSgmdik7CisKKwkJCWZvcihrID0gMDsgayA8IHJoOyArK2speworCQkJCW1lbWNweSgmYWpbayp3XSwgJnYud2F2ZWxldFtrXSwgNCAqIHNpemVvZihPUEpfRkxPQVQzMikpOworCQkJfQorCQkJYWogKz0gNDsKKwkJfQorCisJCWlmIChydyAmIDB4MDMpeworCQkJT1BKX1VJTlQzMiBrOworCisJCQlqID0gcncgJiAweDAzOworCisJCQlvcGpfdjRkd3RfaW50ZXJsZWF2ZV92KCZ2LCBhaiwgKE9QSl9JTlQzMil3LCBqKTsKKwkJCW9wal92NGR3dF9kZWNvZGUoJnYpOworCisJCQlmb3IoayA9IDA7IGsgPCByaDsgKytrKXsKKwkJCQltZW1jcHkoJmFqW2sqd10sICZ2LndhdmVsZXRba10sIChzaXplX3QpaiAqIHNpemVvZihPUEpfRkxPQVQzMikpOworCQkJfQorCQl9CisJfQorCisJb3BqX2FsaWduZWRfZnJlZShoLndhdmVsZXQpOworCXJldHVybiBPUEpfVFJVRTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9kd3QuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9kd3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGI1N2JjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2R3dC5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgX19EV1RfSAorI2RlZmluZSBfX0RXVF9ICisvKioKK0BmaWxlIGR3dC5oCitAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgYSBkaXNjcmV0ZSB3YXZlbGV0IHRyYW5zZm9ybSAoRFdUKQorCitUaGUgZnVuY3Rpb25zIGluIERXVC5DIGhhdmUgZm9yIGdvYWwgdG8gcmVhbGl6ZSBmb3J3YXJkIGFuZCBpbnZlcnNlIGRpc2NyZXQgd2F2ZWxldAordHJhbnNmb3JtIHdpdGggZmlsdGVyIDUtMyAocmV2ZXJzaWJsZSkgYW5kIGZpbHRlciA5LTcgKGlycmV2ZXJzaWJsZSkuIFRoZSBmdW5jdGlvbnMgaW4KK0RXVC5DIGFyZSB1c2VkIGJ5IHNvbWUgZnVuY3Rpb24gaW4gVENELkMuCisqLworCisvKiogQGRlZmdyb3VwIERXVCBEV1QgLSBJbXBsZW1lbnRhdGlvbiBvZiBhIGRpc2NyZXRlIHdhdmVsZXQgdHJhbnNmb3JtICovCisvKkB7Ki8KKworCisvKiogQG5hbWUgRXhwb3J0ZWQgZnVuY3Rpb25zICovCisvKkB7Ki8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKioKK0ZvcndhcmQgNS0zIHdhdmVsZXQgdHJhbmZvcm0gaW4gMi1ELiAKK0FwcGx5IGEgcmV2ZXJzaWJsZSBEV1QgdHJhbnNmb3JtIHRvIGEgY29tcG9uZW50IG9mIGFuIGltYWdlLgorQHBhcmFtIHRpbGVjIFRpbGUgY29tcG9uZW50IGluZm9ybWF0aW9uIChjdXJyZW50IHRpbGUpCisqLworT1BKX0JPT0wgb3BqX2R3dF9lbmNvZGUob3BqX3RjZF90aWxlY29tcF90ICogdGlsZWMpOworCisvKioKK0ludmVyc2UgNS0zIHdhdmVsZXQgdHJhbmZvcm0gaW4gMi1ELgorQXBwbHkgYSByZXZlcnNpYmxlIGludmVyc2UgRFdUIHRyYW5zZm9ybSB0byBhIGNvbXBvbmVudCBvZiBhbiBpbWFnZS4KK0BwYXJhbSB0aWxlYyBUaWxlIGNvbXBvbmVudCBpbmZvcm1hdGlvbiAoY3VycmVudCB0aWxlKQorQHBhcmFtIG51bXJlcyBOdW1iZXIgb2YgcmVzb2x1dGlvbiBsZXZlbHMgdG8gZGVjb2RlCisqLworT1BKX0JPT0wgb3BqX2R3dF9kZWNvZGUob3BqX3RjZF90aWxlY29tcF90KiB0aWxlYywgT1BKX1VJTlQzMiBudW1yZXMpOworCisvKioKK0dldCB0aGUgZ2FpbiBvZiBhIHN1YmJhbmQgZm9yIHRoZSByZXZlcnNpYmxlIDUtMyBEV1QuCitAcGFyYW0gb3JpZW50IE51bWJlciB0aGF0IGlkZW50aWZpZXMgdGhlIHN1YmJhbmQgKDAtPkxMLCAxLT5ITCwgMi0+TEgsIDMtPkhIKQorQHJldHVybiBSZXR1cm5zIDAgaWYgb3JpZW50ID0gMCwgcmV0dXJucyAxIGlmIG9yaWVudCA9IDEgb3IgMiwgcmV0dXJucyAyIG90aGVyd2lzZQorKi8KK09QSl9VSU5UMzIgb3BqX2R3dF9nZXRnYWluKE9QSl9VSU5UMzIgb3JpZW50KSA7CisvKioKK0dldCB0aGUgbm9ybSBvZiBhIHdhdmVsZXQgZnVuY3Rpb24gb2YgYSBzdWJiYW5kIGF0IGEgc3BlY2lmaWVkIGxldmVsIGZvciB0aGUgcmV2ZXJzaWJsZSA1LTMgRFdULgorQHBhcmFtIGxldmVsIExldmVsIG9mIHRoZSB3YXZlbGV0IGZ1bmN0aW9uCitAcGFyYW0gb3JpZW50IEJhbmQgb2YgdGhlIHdhdmVsZXQgZnVuY3Rpb24KK0ByZXR1cm4gUmV0dXJucyB0aGUgbm9ybSBvZiB0aGUgd2F2ZWxldCBmdW5jdGlvbgorKi8KK09QSl9GTE9BVDY0IG9wal9kd3RfZ2V0bm9ybShPUEpfVUlOVDMyIGxldmVsLCBPUEpfVUlOVDMyIG9yaWVudCk7CisvKioKK0ZvcndhcmQgOS03IHdhdmVsZXQgdHJhbnNmb3JtIGluIDItRC4gCitBcHBseSBhbiBpcnJldmVyc2libGUgRFdUIHRyYW5zZm9ybSB0byBhIGNvbXBvbmVudCBvZiBhbiBpbWFnZS4KK0BwYXJhbSB0aWxlYyBUaWxlIGNvbXBvbmVudCBpbmZvcm1hdGlvbiAoY3VycmVudCB0aWxlKQorKi8KK09QSl9CT09MIG9wal9kd3RfZW5jb2RlX3JlYWwob3BqX3RjZF90aWxlY29tcF90ICogdGlsZWMpOworLyoqCitJbnZlcnNlIDktNyB3YXZlbGV0IHRyYW5zZm9ybSBpbiAyLUQuIAorQXBwbHkgYW4gaXJyZXZlcnNpYmxlIGludmVyc2UgRFdUIHRyYW5zZm9ybSB0byBhIGNvbXBvbmVudCBvZiBhbiBpbWFnZS4KK0BwYXJhbSB0aWxlYyBUaWxlIGNvbXBvbmVudCBpbmZvcm1hdGlvbiAoY3VycmVudCB0aWxlKQorQHBhcmFtIG51bXJlcyBOdW1iZXIgb2YgcmVzb2x1dGlvbiBsZXZlbHMgdG8gZGVjb2RlCisqLworT1BKX0JPT0wgb3BqX2R3dF9kZWNvZGVfcmVhbChvcGpfdGNkX3RpbGVjb21wX3QqIHJlc3RyaWN0IHRpbGVjLCBPUEpfVUlOVDMyIG51bXJlcyk7CisKKy8qKgorR2V0IHRoZSBnYWluIG9mIGEgc3ViYmFuZCBmb3IgdGhlIGlycmV2ZXJzaWJsZSA5LTcgRFdULgorQHBhcmFtIG9yaWVudCBOdW1iZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJiYW5kICgwLT5MTCwgMS0+SEwsIDItPkxILCAzLT5ISCkKK0ByZXR1cm4gUmV0dXJucyB0aGUgZ2FpbiBvZiB0aGUgOS03IHdhdmVsZXQgdHJhbnNmb3JtCisqLworT1BKX1VJTlQzMiBvcGpfZHd0X2dldGdhaW5fcmVhbChPUEpfVUlOVDMyIG9yaWVudCk7CisvKioKK0dldCB0aGUgbm9ybSBvZiBhIHdhdmVsZXQgZnVuY3Rpb24gb2YgYSBzdWJiYW5kIGF0IGEgc3BlY2lmaWVkIGxldmVsIGZvciB0aGUgaXJyZXZlcnNpYmxlIDktNyBEV1QKK0BwYXJhbSBsZXZlbCBMZXZlbCBvZiB0aGUgd2F2ZWxldCBmdW5jdGlvbgorQHBhcmFtIG9yaWVudCBCYW5kIG9mIHRoZSB3YXZlbGV0IGZ1bmN0aW9uCitAcmV0dXJuIFJldHVybnMgdGhlIG5vcm0gb2YgdGhlIDktNyB3YXZlbGV0CisqLworT1BKX0ZMT0FUNjQgb3BqX2R3dF9nZXRub3JtX3JlYWwoT1BKX1VJTlQzMiBsZXZlbCwgT1BKX1VJTlQzMiBvcmllbnQpOworLyoqCitFeHBsaWNpdCBjYWxjdWxhdGlvbiBvZiB0aGUgUXVhbnRpemF0aW9uIFN0ZXBzaXplcyAKK0BwYXJhbSB0Y2NwIFRpbGUtY29tcG9uZW50IGNvZGluZyBwYXJhbWV0ZXJzCitAcGFyYW0gcHJlYyBQcmVjaW50IGFuYWx5emVkCisqLwordm9pZCBvcGpfZHd0X2NhbGNfZXhwbGljaXRfc3RlcHNpemVzKG9wal90Y2NwX3QgKiB0Y2NwLCBPUEpfVUlOVDMyIHByZWMpOworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qQH0qLworCisvKkB9Ki8KKworI2VuZGlmIC8qIF9fRFdUX0ggKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9ldmVudC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2V2ZW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYwMzRiNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9ldmVudC5jCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEtMjAxMiwgQ2VudHJlIE5hdGlvbmFsIGQnRXR1ZGVzIFNwYXRpYWxlcyAoQ05FUyksIEZSIAorICogQ29weXJpZ2h0IChjKSAyMDEyLCBDUyBTeXN0ZW1lcyBkJ0luZm9ybWF0aW9uLCBGcmFuY2UKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIm9wal9pbmNsdWRlcy5oIgorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgIFV0aWxpdHkgZnVuY3Rpb25zCisgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2lmZGVmIE9QSl9DT0RFX05PVF9VU0VECisjaWZuZGVmIF9XSU4zMgorc3RhdGljIGNoYXIqCitpMmEodW5zaWduZWQgaSwgY2hhciAqYSwgdW5zaWduZWQgcikgeworCWlmIChpL3IgPiAwKSBhID0gaTJhKGkvcixhLHIpOworCSphID0gIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiJbaSVyXTsKKwlyZXR1cm4gYSsxOworfQorCisvKiogCisgVHJhbnNmb3JtcyBpbnRlZ2VyIGkgaW50byBhbiBhc2NpaSBzdHJpbmcgYW5kIHN0b3JlcyB0aGUgcmVzdWx0IGluIGE7IAorIHN0cmluZyBpcyBlbmNvZGVkIGluIHRoZSBiYXNlIGluZGljYXRlZCBieSByLgorIEBwYXJhbSBpIE51bWJlciB0byBiZSBjb252ZXJ0ZWQKKyBAcGFyYW0gYSBTdHJpbmcgcmVzdWx0CisgQHBhcmFtIHIgQmFzZSBvZiB2YWx1ZTsgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMiAtIDM2CisgQHJldHVybiBSZXR1cm5zIGEKKyovCitzdGF0aWMgY2hhciAqCitfaXRvYShpbnQgaSwgY2hhciAqYSwgaW50IHIpIHsKKwlyID0gKChyIDwgMikgfHwgKHIgPiAzNikpID8gMTAgOiByOworCWlmKGkgPCAwKSB7CisJCSphID0gJy0nOworCQkqaTJhKC1pLCBhKzEsIHIpID0gMDsKKwl9CisJZWxzZSAqaTJhKGksIGEsIHIpID0gMDsKKwlyZXR1cm4gYTsKK30KKworI2VuZGlmIC8qICFfV0lOMzIgKi8KKyNlbmRpZgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoqCisgKiBEZWZhdWx0IGNhbGxiYWNrIGZ1bmN0aW9uLgorICogRG8gbm90aGluZy4KKyAqLworc3RhdGljIHZvaWQgb3BqX2RlZmF1bHRfY2FsbGJhY2sgKGNvbnN0IGNoYXIgKm1zZywgdm9pZCAqY2xpZW50X2RhdGEpCit7CisgICAgT1BKX0FSR19OT1RfVVNFRChtc2cpOworICAgIE9QSl9BUkdfTk9UX1VTRUQoY2xpZW50X2RhdGEpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCitPUEpfQk9PTCBvcGpfZXZlbnRfbXNnKG9wal9ldmVudF9tZ3JfdCogcF9ldmVudF9tZ3IsIE9QSl9JTlQzMiBldmVudF90eXBlLCBjb25zdCBjaGFyICpmbXQsIC4uLikgeworI2RlZmluZSBPUEpfTVNHX1NJWkUgNTEyIC8qIDUxMiBieXRlcyBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCBmb3IgYSBzaG9ydCBtZXNzYWdlICovCisJb3BqX21zZ19jYWxsYmFjayBtc2dfaGFuZGxlciA9IDAwOworCXZvaWQgKiBsX2RhdGEgPSAwMDsKKworCWlmKHBfZXZlbnRfbWdyICE9IDAwKSB7CisJCXN3aXRjaChldmVudF90eXBlKSB7CisJCQljYXNlIEVWVF9FUlJPUjoKKwkJCQltc2dfaGFuZGxlciA9IHBfZXZlbnRfbWdyLT5lcnJvcl9oYW5kbGVyOworCQkJCWxfZGF0YSA9IHBfZXZlbnRfbWdyLT5tX2Vycm9yX2RhdGE7CisJCQkJYnJlYWs7CisJCQljYXNlIEVWVF9XQVJOSU5HOgorCQkJCW1zZ19oYW5kbGVyID0gcF9ldmVudF9tZ3ItPndhcm5pbmdfaGFuZGxlcjsKKwkJCQlsX2RhdGEgPSBwX2V2ZW50X21nci0+bV93YXJuaW5nX2RhdGE7CisJCQkJYnJlYWs7CisJCQljYXNlIEVWVF9JTkZPOgorCQkJCW1zZ19oYW5kbGVyID0gcF9ldmVudF9tZ3ItPmluZm9faGFuZGxlcjsKKwkJCQlsX2RhdGEgPSBwX2V2ZW50X21nci0+bV9pbmZvX2RhdGE7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQl9CisJCWlmKG1zZ19oYW5kbGVyID09IDAwKSB7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisJfSBlbHNlIHsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwlpZiAoKGZtdCAhPSAwMCkgJiYgKHBfZXZlbnRfbWdyICE9IDAwKSkgeworCQl2YV9saXN0IGFyZzsKKwkJc2l6ZV90IHN0cl9sZW5ndGgvKiwgaSwgaiovOyAvKiBVbmlQRyAqLworCQljaGFyIG1lc3NhZ2VbT1BKX01TR19TSVpFXTsKKwkJbWVtc2V0KG1lc3NhZ2UsIDAsIE9QSl9NU0dfU0laRSk7CisJCS8qIGluaXRpYWxpemUgdGhlIG9wdGlvbmFsIHBhcmFtZXRlciBsaXN0ICovCisJCXZhX3N0YXJ0KGFyZywgZm10KTsKKwkJLyogY2hlY2sgdGhlIGxlbmd0aCBvZiB0aGUgZm9ybWF0IHN0cmluZyAqLworCQlzdHJfbGVuZ3RoID0gKHN0cmxlbihmbXQpID4gT1BKX01TR19TSVpFKSA/IE9QSl9NU0dfU0laRSA6IHN0cmxlbihmbXQpOworICAgICAgICAodm9pZClzdHJfbGVuZ3RoOworCQkvKiBwYXJzZSB0aGUgZm9ybWF0IHN0cmluZyBhbmQgcHV0IHRoZSByZXN1bHQgaW4gJ21lc3NhZ2UnICovCisJCXZzbnByaW50ZihtZXNzYWdlLCBPUEpfTVNHX1NJWkUsIGZtdCwgYXJnKTsgLyogVW5pUEcgKi8KKwkJLyogZGVpbml0aWFsaXplIHRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgbGlzdCAqLworCQl2YV9lbmQoYXJnKTsKKworCQkvKiBvdXRwdXQgdGhlIG1lc3NhZ2UgdG8gdGhlIHVzZXIgcHJvZ3JhbSAqLworCQltc2dfaGFuZGxlcihtZXNzYWdlLCBsX2RhdGEpOworCX0KKworCXJldHVybiBPUEpfVFJVRTsKK30KKwordm9pZCBvcGpfc2V0X2RlZmF1bHRfZXZlbnRfaGFuZGxlcihvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpCit7CisJcF9tYW5hZ2VyLT5tX2Vycm9yX2RhdGEgPSAwMDsKKwlwX21hbmFnZXItPm1fd2FybmluZ19kYXRhID0gMDA7CisJcF9tYW5hZ2VyLT5tX2luZm9fZGF0YSA9IDAwOworCXBfbWFuYWdlci0+ZXJyb3JfaGFuZGxlciA9IG9wal9kZWZhdWx0X2NhbGxiYWNrOworCXBfbWFuYWdlci0+aW5mb19oYW5kbGVyID0gb3BqX2RlZmF1bHRfY2FsbGJhY2s7CisJcF9tYW5hZ2VyLT53YXJuaW5nX2hhbmRsZXIgPSBvcGpfZGVmYXVsdF9jYWxsYmFjazsKK30KKwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2V2ZW50LmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvZXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGUwMzk1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2V2ZW50LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMS0yMDEyLCBDZW50cmUgTmF0aW9uYWwgZCdFdHVkZXMgU3BhdGlhbGVzIChDTkVTKSwgRlIgCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIENTIFN5c3RlbWVzIGQnSW5mb3JtYXRpb24sIEZyYW5jZQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBfX0VWRU5UX0gKKyNkZWZpbmUgX19FVkVOVF9ICisvKioKK0BmaWxlIGV2ZW50LmgKK0BicmllZiBJbXBsZW1lbnRhdGlvbiBvZiBhIGV2ZW50IGNhbGxiYWNrIHN5c3RlbQorCitUaGUgZnVuY3Rpb25zIGluIEVWRU5ULkMgaGF2ZSBmb3IgZ29hbCB0byBzZW5kIG91dHB1dCBtZXNzYWdlcyAoZXJyb3JzLCB3YXJuaW5ncywgZGVidWcpIHRvIHRoZSB1c2VyLgorKi8KKy8qKgorTWVzc2FnZSBoYW5kbGVyIG9iamVjdAordXNlZCBmb3IgCis8dWw+Cis8bGk+RXJyb3IgbWVzc2FnZXMKKzxsaT5XYXJuaW5nIG1lc3NhZ2VzCis8bGk+RGVidWdnaW5nIG1lc3NhZ2VzCis8L3VsPgorKi8KK3R5cGVkZWYgc3RydWN0IG9wal9ldmVudF9tZ3IgCit7CisJLyoqIERhdGEgdG8gY2FsbCB0aGUgZXZlbnQgbWFuYWdlciB1cG9uICovCisJdm9pZCAqCQkJbV9lcnJvcl9kYXRhOworCS8qKiBEYXRhIHRvIGNhbGwgdGhlIGV2ZW50IG1hbmFnZXIgdXBvbiAqLworCXZvaWQgKgkJCW1fd2FybmluZ19kYXRhOworCS8qKiBEYXRhIHRvIGNhbGwgdGhlIGV2ZW50IG1hbmFnZXIgdXBvbiAqLworCXZvaWQgKgkJCW1faW5mb19kYXRhOworCS8qKiBFcnJvciBtZXNzYWdlIGNhbGxiYWNrIGlmIGF2YWlsYWJsZSwgTlVMTCBvdGhlcndpc2UgKi8KKwlvcGpfbXNnX2NhbGxiYWNrIGVycm9yX2hhbmRsZXI7CisJLyoqIFdhcm5pbmcgbWVzc2FnZSBjYWxsYmFjayBpZiBhdmFpbGFibGUsIE5VTEwgb3RoZXJ3aXNlICovCisJb3BqX21zZ19jYWxsYmFjayB3YXJuaW5nX2hhbmRsZXI7CisJLyoqIERlYnVnIG1lc3NhZ2UgY2FsbGJhY2sgaWYgYXZhaWxhYmxlLCBOVUxMIG90aGVyd2lzZSAqLworCW9wal9tc2dfY2FsbGJhY2sgaW5mb19oYW5kbGVyOworfSBvcGpfZXZlbnRfbWdyX3Q7CisKKworI2RlZmluZSBFVlRfRVJST1IJMQkvKio8IEVycm9yIGV2ZW50IHR5cGUgKi8KKyNkZWZpbmUgRVZUX1dBUk5JTkcJMgkvKio8IFdhcm5pbmcgZXZlbnQgdHlwZSAqLworI2RlZmluZSBFVlRfSU5GTwk0CS8qKjwgRGVidWcgZXZlbnQgdHlwZSAqLworCisvKiogQGRlZmdyb3VwIEVWRU5UIEVWRU5UIC0gSW1wbGVtZW50YXRpb24gb2YgYSBldmVudCBjYWxsYmFjayBzeXN0ZW0gKi8KKy8qQHsqLworCisvKiogQG5hbWUgRXhwb3J0ZWQgZnVuY3Rpb25zIChzZWUgYWxzbyBvcGVuanBlZy5oKSAqLworLypAeyovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgorICogV3JpdGUgZm9ybWF0dGVkIGRhdGEgdG8gYSBzdHJpbmcgYW5kIHNlbmQgdGhlIHN0cmluZyB0byBhIHVzZXIgY2FsbGJhY2suCisgKgorICogQHBhcmFtIGV2ZW50X21ncgkJCUV2ZW50IGhhbmRsZXIKKyAqIEBwYXJhbSBldmVudF90eXBlIAkJRXZlbnQgdHlwZSBvciBjYWxsYmFjayB0byB1c2UgdG8gc2VuZCB0aGUgbWVzc2FnZQorICogQHBhcmFtIGZtdCAJCQkJRm9ybWF0LWNvbnRyb2wgc3RyaW5nIChwbHVzIG9wdGlvbmFsIGFyZ3VtZW50cykKKyAqCisgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCByZXR1cm5zIGZhbHNlIG90aGVyd2lzZQorICovCitPUEpfQk9PTCBvcGpfZXZlbnRfbXNnKG9wal9ldmVudF9tZ3JfdCogZXZlbnRfbWdyLCBPUEpfSU5UMzIgZXZlbnRfdHlwZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisgKiBTZXQgdGhlIGV2ZW50IG1hbmFnZXIgd2l0aCB0aGUgZGVmYXVsdCBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIDMgbGV2ZWxzLgorICovCit2b2lkIG9wal9zZXRfZGVmYXVsdF9ldmVudF9oYW5kbGVyKG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisKKy8qQH0qLworCisvKkB9Ki8KKworI2VuZGlmIC8qIF9fRVZFTlRfSCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2Z1bmN0aW9uX2xpc3QuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9mdW5jdGlvbl9saXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM4YWFlNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9mdW5jdGlvbl9saXN0LmMKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEplcm9tZSBGaW1lcywgQ29tbXVuaWNhdGlvbnMgJiBTeXN0ZW1lcyA8amVyb21lLmZpbWVzQGMtcy5mcj4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIm9wal9pbmNsdWRlcy5oIgorCisvKioKKyAqIERlZmF1bHQgc2l6ZSBvZiB0aGUgdmFsaWRhdGlvbiBsaXN0LCBpZiBub3Qgc3VmZmljaWVudCwgZGF0YSB3aWxsIGJlIHJlYWxsb2NhdGVkIHdpdGggYSBkb3VibGUgc2l6ZS4KKyAqLworI2RlZmluZSBPUEpfVkFMSURBVElPTl9TSVpFIDEwCisKK29wal9wcm9jZWR1cmVfbGlzdF90ICogIG9wal9wcm9jZWR1cmVfbGlzdF9jcmVhdGUoKQoreworICAgICAgICAvKiBtZW1vcnkgYWxsb2NhdGlvbiAqLworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfdCAqIGxfdmFsaWRhdGlvbiA9IChvcGpfcHJvY2VkdXJlX2xpc3RfdCAqKSBvcGpfbWFsbG9jKHNpemVvZihvcGpfcHJvY2VkdXJlX2xpc3RfdCkpOworICAgICAgICBpZiAoISBsX3ZhbGlkYXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDA7CisgICAgICAgIH0KKyAgICAgICAgLyogaW5pdGlhbGl6YXRpb24gKi8KKyAgICAgICAgbWVtc2V0KGxfdmFsaWRhdGlvbiwwLHNpemVvZihvcGpfcHJvY2VkdXJlX2xpc3RfdCkpOworICAgICAgICBsX3ZhbGlkYXRpb24tPm1fbmJfbWF4X3Byb2NlZHVyZXMgPSBPUEpfVkFMSURBVElPTl9TSVpFOworICAgICAgICBsX3ZhbGlkYXRpb24tPm1fcHJvY2VkdXJlcyA9IChvcGpfcHJvY2VkdXJlKilvcGpfbWFsbG9jKAorICAgICAgICAgICAgICAgIE9QSl9WQUxJREFUSU9OX1NJWkUgKiBzaXplb2Yob3BqX3Byb2NlZHVyZSkpOworICAgICAgICBpZiAoISBsX3ZhbGlkYXRpb24tPm1fcHJvY2VkdXJlcykKKyAgICAgICAgeworICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfdmFsaWRhdGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDAwOworICAgICAgICB9CisgICAgICAgIG1lbXNldChsX3ZhbGlkYXRpb24tPm1fcHJvY2VkdXJlcywwLE9QSl9WQUxJREFUSU9OX1NJWkUgKiBzaXplb2Yob3BqX3Byb2NlZHVyZSkpOworICAgICAgICByZXR1cm4gbF92YWxpZGF0aW9uOworfQorCit2b2lkICBvcGpfcHJvY2VkdXJlX2xpc3RfZGVzdHJveShvcGpfcHJvY2VkdXJlX2xpc3RfdCAqIHBfbGlzdCkKK3sKKyAgICAgICAgaWYgKCEgcF9saXN0KQorICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIGluaXRpYWxpemF0aW9uICovCisgICAgICAgIGlmIChwX2xpc3QtPm1fcHJvY2VkdXJlcykKKyAgICAgICAgeworICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfbGlzdC0+bV9wcm9jZWR1cmVzKTsKKyAgICAgICAgfQorICAgICAgICBvcGpfZnJlZShwX2xpc3QpOworfQorCitPUEpfQk9PTCBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZSAob3BqX3Byb2NlZHVyZV9saXN0X3QgKiBwX3ZhbGlkYXRpb25fbGlzdCwgb3BqX3Byb2NlZHVyZSBwX3Byb2NlZHVyZSkKK3sKKyAgICAgICAgaWYgKHBfdmFsaWRhdGlvbl9saXN0LT5tX25iX21heF9wcm9jZWR1cmVzID09IHBfdmFsaWRhdGlvbl9saXN0LT5tX25iX3Byb2NlZHVyZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvcGpfcHJvY2VkdXJlICogbmV3X3Byb2NlZHVyZXM7CisKKyAgICAgICAgICAgICAgICBwX3ZhbGlkYXRpb25fbGlzdC0+bV9uYl9tYXhfcHJvY2VkdXJlcyArPSBPUEpfVkFMSURBVElPTl9TSVpFOworICAgICAgICAgICAgICAgIG5ld19wcm9jZWR1cmVzID0gKG9wal9wcm9jZWR1cmUqKW9wal9yZWFsbG9jKAorICAgICAgICAgICAgICAgICAgICAgICAgcF92YWxpZGF0aW9uX2xpc3QtPm1fcHJvY2VkdXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdmFsaWRhdGlvbl9saXN0LT5tX25iX21heF9wcm9jZWR1cmVzICogc2l6ZW9mKG9wal9wcm9jZWR1cmUpKTsKKyAgICAgICAgICAgICAgICBpZiAoISBuZXdfcHJvY2VkdXJlcykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX3ZhbGlkYXRpb25fbGlzdC0+bV9wcm9jZWR1cmVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdmFsaWRhdGlvbl9saXN0LT5tX25iX21heF9wcm9jZWR1cmVzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdmFsaWRhdGlvbl9saXN0LT5tX25iX3Byb2NlZHVyZXMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgLyogb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCBhIG5ldyB2YWxpZGF0aW9uIHByb2NlZHVyZVxuIik7ICovCisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCBhIG5ldyB2YWxpZGF0aW9uIHByb2NlZHVyZVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBwX3ZhbGlkYXRpb25fbGlzdC0+bV9wcm9jZWR1cmVzID0gbmV3X3Byb2NlZHVyZXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHBfdmFsaWRhdGlvbl9saXN0LT5tX3Byb2NlZHVyZXNbcF92YWxpZGF0aW9uX2xpc3QtPm1fbmJfcHJvY2VkdXJlc10gPSBwX3Byb2NlZHVyZTsKKyAgICAgICAgKytwX3ZhbGlkYXRpb25fbGlzdC0+bV9uYl9wcm9jZWR1cmVzOworCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX1VJTlQzMiBvcGpfcHJvY2VkdXJlX2xpc3RfZ2V0X25iX3Byb2NlZHVyZXMgKG9wal9wcm9jZWR1cmVfbGlzdF90ICogcF92YWxpZGF0aW9uX2xpc3QpCit7CisgICAgICAgIHJldHVybiBwX3ZhbGlkYXRpb25fbGlzdC0+bV9uYl9wcm9jZWR1cmVzOworfQorCitvcGpfcHJvY2VkdXJlKiBvcGpfcHJvY2VkdXJlX2xpc3RfZ2V0X2ZpcnN0X3Byb2NlZHVyZSAob3BqX3Byb2NlZHVyZV9saXN0X3QgKiBwX3ZhbGlkYXRpb25fbGlzdCkKK3sKKyAgICAgICAgcmV0dXJuIHBfdmFsaWRhdGlvbl9saXN0LT5tX3Byb2NlZHVyZXM7Cit9CisKK3ZvaWQgb3BqX3Byb2NlZHVyZV9saXN0X2NsZWFyIChvcGpfcHJvY2VkdXJlX2xpc3RfdCAqIHBfdmFsaWRhdGlvbl9saXN0KQoreworICAgICAgICBwX3ZhbGlkYXRpb25fbGlzdC0+bV9uYl9wcm9jZWR1cmVzID0gMDsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9mdW5jdGlvbl9saXN0LmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvZnVuY3Rpb25fbGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0OWFkOWUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvZnVuY3Rpb25fbGlzdC5oCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBKZXJvbWUgRmltZXMsIENvbW11bmljYXRpb25zICYgU3lzdGVtZXMgPGplcm9tZS5maW1lc0BjLXMuZnI+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgX19GVU5DVElPTl9MSVNUX0gKKyNkZWZpbmUgX19GVU5DVElPTl9MSVNUX0gKKworLyoqIAorICogQGZpbGUgZnVuY3Rpb25fbGlzdC5oCisgKiBAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgYSBsaXN0IG9mIHByb2NlZHVyZXMuCisKKyAqIFRoZSBmdW5jdGlvbnMgaW4gdmFsaWRhdGlvbi5jIGFpbXMgdG8gaGF2ZSBhY2Nlc3MgdG8gYSBsaXN0IG9mIHByb2NlZHVyZXMuCisqLworCisvKiogQGRlZmdyb3VwIFZBTCBWQUwgLSB2YWxpZGF0aW9uIHByb2NlZHVyZSovCisvKkB7Ki8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRk9SV0FSRCBERUNMQVJBVElPTiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqCisgKiBkZWNsYXJlIGEgZnVuY3Rpb24gcG9pbnRlcgorICovCit0eXBlZGVmIHZvaWQgKCpvcGpfcHJvY2VkdXJlKSh2b2lkKTsKKworLyoqCisgKiBBIGxpc3Qgb2YgcHJvY2VkdXJlcy4KKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfcHJvY2VkdXJlX2xpc3QgCit7CisJLyoqCisJICogVGhlIG51bWJlciBvZiB2YWxpZGF0aW9uIHByb2NlZHVyZXMuCisJICovCisJT1BKX1VJTlQzMiBtX25iX3Byb2NlZHVyZXM7CisJLyoqCisJICogVGhlIG51bWJlciBvZiB0aGUgYXJyYXkgb2YgdmFsaWRhdGlvbiBwcm9jZWR1cmVzLgorCSAqLworCU9QSl9VSU5UMzIgbV9uYl9tYXhfcHJvY2VkdXJlczsKKwkvKioKKwkgKiBUaGUgYXJyYXkgb2YgcHJvY2VkdXJlcy4KKwkgKi8KKwlvcGpfcHJvY2VkdXJlICogbV9wcm9jZWR1cmVzOworCit9IG9wal9wcm9jZWR1cmVfbGlzdF90OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKioKKyAqIENyZWF0ZXMgYSB2YWxpZGF0aW9uIGxpc3QuCisgKgorICogQHJldHVybgl0aGUgbmV3bHkgY3JlYXRlZCB2YWxpZGF0aW9uIGxpc3QuCisgKi8KK29wal9wcm9jZWR1cmVfbGlzdF90ICogIG9wal9wcm9jZWR1cmVfbGlzdF9jcmVhdGUodm9pZCk7CisKKy8qKgorICogRGVzdHJveXMgYSB2YWxpZGF0aW9uIGxpc3QuCisgKgorICogQHBhcmFtIHBfbGlzdCB0aGUgbGlzdCB0byBkZXN0cm95LgorICovCit2b2lkICBvcGpfcHJvY2VkdXJlX2xpc3RfZGVzdHJveShvcGpfcHJvY2VkdXJlX2xpc3RfdCAqIHBfbGlzdCk7CisKKy8qKgorICogQWRkcyBhIG5ldyB2YWxpZGF0aW9uIHByb2NlZHVyZS4KKyAqCisgKiBAcGFyYW0JcF92YWxpZGF0aW9uX2xpc3QgdGhlIGxpc3Qgb2YgcHJvY2VkdXJlIHRvIG1vZGlmeS4KKyAqIEBwYXJhbQlwX3Byb2NlZHVyZQkJdGhlIHByb2NlZHVyZSB0byBhZGQuCisgKgorICogQHJldHVybglPUEpfVFJVRSBpZiB0aGUgcHJvY2VkdXJlIGNvdWxkIGJlIGFkZGVkLgorICovCitPUEpfQk9PTCBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZSAob3BqX3Byb2NlZHVyZV9saXN0X3QgKiBwX3ZhbGlkYXRpb25fbGlzdCwgb3BqX3Byb2NlZHVyZSBwX3Byb2NlZHVyZSk7CisKKy8qKgorICogR2V0cyB0aGUgbnVtYmVyIG9mIHZhbGlkYXRpb24gcHJvY2VkdXJlcy4KKyAqCisgKiBAcGFyYW0JcF92YWxpZGF0aW9uX2xpc3QgdGhlIGxpc3Qgb2YgcHJvY2VkdXJlIHRvIG1vZGlmeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgdmFsaWRhdGlvbiBwcm9jZWR1cmVzLgorICovCitPUEpfVUlOVDMyIG9wal9wcm9jZWR1cmVfbGlzdF9nZXRfbmJfcHJvY2VkdXJlcyAob3BqX3Byb2NlZHVyZV9saXN0X3QgKiBwX3ZhbGlkYXRpb25fbGlzdCk7CisKKy8qKgorICogR2V0cyB0aGUgcG9pbnRlciBvbiB0aGUgZmlyc3QgdmFsaWRhdGlvbiBwcm9jZWR1cmUuIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byB0aGUgQysrCisgKiBpdGVyYXRvciBjbGFzcyB0byBpdGVyYXRlIHRocm91Z2ggYWxsIHRoZSBwcm9jZWR1cmVzIGluc2lkZSB0aGUgdmFsaWRhdGlvbiBsaXN0LgorICogdGhlIGNhbGxlciBkb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlci4KKyAqCisgKiBAcGFyYW0JcF92YWxpZGF0aW9uX2xpc3QgdGhlIGxpc3Qgb2YgcHJvY2VkdXJlIHRvIGdldCB0aGUgZmlyc3QgcHJvY2VkdXJlIGZyb20uCisgKgorICogQHJldHVybglhIHBvaW50ZXIgdG8gdGhlIGZpcnN0IHByb2NlZHVyZS4KKyAqLworb3BqX3Byb2NlZHVyZSogb3BqX3Byb2NlZHVyZV9saXN0X2dldF9maXJzdF9wcm9jZWR1cmUgKG9wal9wcm9jZWR1cmVfbGlzdF90ICogcF92YWxpZGF0aW9uX2xpc3QpOworCisKKy8qKgorICogQ2xlYXJzIHRoZSBsaXN0IG9mIHZhbGlkYXRpb24gcHJvY2VkdXJlcy4KKyAqCisgKiBAcGFyYW0JcF92YWxpZGF0aW9uX2xpc3QgdGhlIGxpc3Qgb2YgcHJvY2VkdXJlIHRvIGNsZWFyLgorICoKKyAqLwordm9pZCBvcGpfcHJvY2VkdXJlX2xpc3RfY2xlYXIgKG9wal9wcm9jZWR1cmVfbGlzdF90ICogcF92YWxpZGF0aW9uX2xpc3QpOworLypAfSovCisKKyNlbmRpZiAvKiBfX0ZVTkNUSU9OX0xJU1RfSCAqLworCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvaW1hZ2UuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9pbWFnZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMzU0MGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvaW1hZ2UuYwpAQCAtMCwwICsxLDI0MCBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAib3BqX2luY2x1ZGVzLmgiCisKK29wal9pbWFnZV90KiBvcGpfaW1hZ2VfY3JlYXRlMCh2b2lkKSB7CisJb3BqX2ltYWdlX3QgKmltYWdlID0gKG9wal9pbWFnZV90KilvcGpfY2FsbG9jKDEsIHNpemVvZihvcGpfaW1hZ2VfdCkpOworCXJldHVybiBpbWFnZTsKK30KKworb3BqX2ltYWdlX3QqIE9QSl9DQUxMQ09OViBvcGpfaW1hZ2VfY3JlYXRlKE9QSl9VSU5UMzIgbnVtY21wdHMsIG9wal9pbWFnZV9jbXB0cGFybV90ICpjbXB0cGFybXMsIE9QSl9DT0xPUl9TUEFDRSBjbHJzcGMpIHsKKwlPUEpfVUlOVDMyIGNvbXBubzsKKwlvcGpfaW1hZ2VfdCAqaW1hZ2UgPSBOVUxMOworCisJaW1hZ2UgPSAob3BqX2ltYWdlX3QqKSBvcGpfY2FsbG9jKDEsIHNpemVvZihvcGpfaW1hZ2VfdCkpOworCWlmKGltYWdlKSB7CisJCWltYWdlLT5jb2xvcl9zcGFjZSA9IGNscnNwYzsKKwkJaW1hZ2UtPm51bWNvbXBzID0gbnVtY21wdHM7CisJCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHBlci1jb21wb25lbnQgaW5mb3JtYXRpb24gKi8KKwkJaW1hZ2UtPmNvbXBzID0gKG9wal9pbWFnZV9jb21wX3QqKW9wal9jYWxsb2MoMSxpbWFnZS0+bnVtY29tcHMgKiBzaXplb2Yob3BqX2ltYWdlX2NvbXBfdCkpOworCQlpZighaW1hZ2UtPmNvbXBzKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwiVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgaW1hZ2UuXG4iKTsKKwkJCW9wal9pbWFnZV9kZXN0cm95KGltYWdlKTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJCS8qIGNyZWF0ZSB0aGUgaW5kaXZpZHVhbCBpbWFnZSBjb21wb25lbnRzICovCisJCWZvcihjb21wbm8gPSAwOyBjb21wbm8gPCBudW1jbXB0czsgY29tcG5vKyspIHsKKwkJCW9wal9pbWFnZV9jb21wX3QgKmNvbXAgPSAmaW1hZ2UtPmNvbXBzW2NvbXBub107CisJCQljb21wLT5keCA9IGNtcHRwYXJtc1tjb21wbm9dLmR4OworCQkJY29tcC0+ZHkgPSBjbXB0cGFybXNbY29tcG5vXS5keTsKKwkJCWNvbXAtPncgPSBjbXB0cGFybXNbY29tcG5vXS53OworCQkJY29tcC0+aCA9IGNtcHRwYXJtc1tjb21wbm9dLmg7CisJCQljb21wLT54MCA9IGNtcHRwYXJtc1tjb21wbm9dLngwOworCQkJY29tcC0+eTAgPSBjbXB0cGFybXNbY29tcG5vXS55MDsKKwkJCWNvbXAtPnByZWMgPSBjbXB0cGFybXNbY29tcG5vXS5wcmVjOworCQkJY29tcC0+YnBwID0gY21wdHBhcm1zW2NvbXBub10uYnBwOworCQkJY29tcC0+c2duZCA9IGNtcHRwYXJtc1tjb21wbm9dLnNnbmQ7CisJCQljb21wLT5kYXRhID0gKE9QSl9JTlQzMiopIG9wal9jYWxsb2MoY29tcC0+dyAqIGNvbXAtPmgsIHNpemVvZihPUEpfSU5UMzIpKTsKKwkJCWlmKCFjb21wLT5kYXRhKSB7CisJCQkJZnByaW50ZihzdGRlcnIsIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGltYWdlLlxuIik7CisJCQkJb3BqX2ltYWdlX2Rlc3Ryb3koaW1hZ2UpOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGltYWdlOworfQorCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfaW1hZ2VfZGVzdHJveShvcGpfaW1hZ2VfdCAqaW1hZ2UpIHsKKwlpZihpbWFnZSkgeworCQlpZihpbWFnZS0+Y29tcHMpIHsKKwkJCU9QSl9VSU5UMzIgY29tcG5vOworCisJCQkvKiBpbWFnZSBjb21wb25lbnRzICovCisJCQlmb3IoY29tcG5vID0gMDsgY29tcG5vIDwgaW1hZ2UtPm51bWNvbXBzOyBjb21wbm8rKykgeworCQkJCW9wal9pbWFnZV9jb21wX3QgKmltYWdlX2NvbXAgPSAmKGltYWdlLT5jb21wc1tjb21wbm9dKTsKKwkJCQlpZihpbWFnZV9jb21wLT5kYXRhKSB7CisJCQkJCW9wal9mcmVlKGltYWdlX2NvbXAtPmRhdGEpOworCQkJCX0KKwkJCX0KKwkJCW9wal9mcmVlKGltYWdlLT5jb21wcyk7CisJCX0KKworCQlpZihpbWFnZS0+aWNjX3Byb2ZpbGVfYnVmKSB7CisJCQlvcGpfZnJlZShpbWFnZS0+aWNjX3Byb2ZpbGVfYnVmKTsKKwkJfQorCisJCW9wal9mcmVlKGltYWdlKTsKKwl9Cit9CisKKy8qKgorICogVXBkYXRlcyB0aGUgY29tcG9uZW50cyBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGltYWdlIGZyb20gdGhlIGNvZGluZyBwYXJhbWV0ZXJzLgorICoKKyAqIEBwYXJhbSBwX2ltYWdlX2hlYWRlcgl0aGUgaW1hZ2UgaGVhZGVyIHRvIHVwZGF0ZS4KKyAqIEBwYXJhbSBwX2NwCQkJCXRoZSBjb2RpbmcgcGFyYW1ldGVycyBmcm9tIHdoaWNoIHRvIHVwZGF0ZSB0aGUgaW1hZ2UuCisgKi8KK3ZvaWQgb3BqX2ltYWdlX2NvbXBfaGVhZGVyX3VwZGF0ZShvcGpfaW1hZ2VfdCAqIHBfaW1hZ2VfaGVhZGVyLCBjb25zdCBzdHJ1Y3Qgb3BqX2NwICogcF9jcCkKK3sKKwlPUEpfVUlOVDMyIGksIGxfd2lkdGgsIGxfaGVpZ2h0OworCU9QSl9JTlQzMiBsX3gwLCBsX3kwLCBsX3gxLCBsX3kxOworCU9QSl9JTlQzMiBsX2NvbXBfeDAsIGxfY29tcF95MCwgbF9jb21wX3gxLCBsX2NvbXBfeTE7CisJb3BqX2ltYWdlX2NvbXBfdCogbF9pbWdfY29tcCA9IE5VTEw7CisKKwlsX3gwID0gb3BqX2ludF9tYXgoKE9QSl9JTlQzMilwX2NwLT50eDAgLCAoT1BKX0lOVDMyKXBfaW1hZ2VfaGVhZGVyLT54MCk7CisJbF95MCA9IG9wal9pbnRfbWF4KChPUEpfSU5UMzIpcF9jcC0+dHkwICwgKE9QSl9JTlQzMilwX2ltYWdlX2hlYWRlci0+eTApOworCWxfeDEgPSBvcGpfaW50X21pbigoT1BKX0lOVDMyKShwX2NwLT50eDAgKyBwX2NwLT50dyAqIHBfY3AtPnRkeCksIChPUEpfSU5UMzIpcF9pbWFnZV9oZWFkZXItPngxKTsKKwlsX3kxID0gb3BqX2ludF9taW4oKE9QSl9JTlQzMikocF9jcC0+dHkwICsgcF9jcC0+dGggKiBwX2NwLT50ZHkpLCAoT1BKX0lOVDMyKXBfaW1hZ2VfaGVhZGVyLT55MSk7CisKKwlsX2ltZ19jb21wID0gcF9pbWFnZV9oZWFkZXItPmNvbXBzOworCWZvcgkoaSA9IDA7IGkgPCBwX2ltYWdlX2hlYWRlci0+bnVtY29tcHM7ICsraSkgeworCQlsX2NvbXBfeDAgPSBvcGpfaW50X2NlaWxkaXYobF94MCwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5keCk7CisJCWxfY29tcF95MCA9IG9wal9pbnRfY2VpbGRpdihsX3kwLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmR5KTsKKwkJbF9jb21wX3gxID0gb3BqX2ludF9jZWlsZGl2KGxfeDEsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHgpOworCQlsX2NvbXBfeTEgPSBvcGpfaW50X2NlaWxkaXYobF95MSwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5keSk7CisJCWxfd2lkdGggPSAoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXZwb3cyKGxfY29tcF94MSAtIGxfY29tcF94MCwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5mYWN0b3IpOworCQlsX2hlaWdodCA9IChPUEpfVUlOVDMyKW9wal9pbnRfY2VpbGRpdnBvdzIobF9jb21wX3kxIC0gbF9jb21wX3kwLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmZhY3Rvcik7CisJCWxfaW1nX2NvbXAtPncgPSBsX3dpZHRoOworCQlsX2ltZ19jb21wLT5oID0gbF9oZWlnaHQ7CisJCWxfaW1nX2NvbXAtPngwID0gKE9QSl9VSU5UMzIpbF9jb21wX3gwLypsX3gwKi87CisJCWxfaW1nX2NvbXAtPnkwID0gKE9QSl9VSU5UMzIpbF9jb21wX3kwLypsX3kwKi87CisJCSsrbF9pbWdfY29tcDsKKwl9Cit9CisKKworLyoqCisgKiBDb3B5IG9ubHkgaGVhZGVyIG9mIGltYWdlIGFuZCBpdHMgY29tcG9uZW50IGhlYWRlciAobm8gZGF0YSBhcmUgY29waWVkKQorICogaWYgZGVzdCBpbWFnZSBoYXZlIGRhdGEsIHRoZXkgd2lsbCBiZSBmcmVlZAorICoKKyAqIEBwYXJhbQlwX2ltYWdlX3NyYwkJdGhlIHNyYyBpbWFnZQorICogQHBhcmFtCXBfaW1hZ2VfZGVzdAl0aGUgZGVzdCBpbWFnZQorICoKKyAqLwordm9pZCBvcGpfY29weV9pbWFnZV9oZWFkZXIoY29uc3Qgb3BqX2ltYWdlX3QqIHBfaW1hZ2Vfc3JjLCBvcGpfaW1hZ2VfdCogcF9pbWFnZV9kZXN0KQoreworCU9QSl9VSU5UMzIgY29tcG5vOworCisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChwX2ltYWdlX3NyYyAhPSAwMCk7CisJYXNzZXJ0KHBfaW1hZ2VfZGVzdCAhPSAwMCk7CisKKwlwX2ltYWdlX2Rlc3QtPngwID0gcF9pbWFnZV9zcmMtPngwOworCXBfaW1hZ2VfZGVzdC0+eTAgPSBwX2ltYWdlX3NyYy0+eTA7CisJcF9pbWFnZV9kZXN0LT54MSA9IHBfaW1hZ2Vfc3JjLT54MTsKKwlwX2ltYWdlX2Rlc3QtPnkxID0gcF9pbWFnZV9zcmMtPnkxOworCisJaWYgKHBfaW1hZ2VfZGVzdC0+Y29tcHMpeworCQlmb3IoY29tcG5vID0gMDsgY29tcG5vIDwgcF9pbWFnZV9kZXN0LT5udW1jb21wczsgY29tcG5vKyspIHsKKwkJCW9wal9pbWFnZV9jb21wX3QgKmltYWdlX2NvbXAgPSAmKHBfaW1hZ2VfZGVzdC0+Y29tcHNbY29tcG5vXSk7CisJCQlpZihpbWFnZV9jb21wLT5kYXRhKSB7CisJCQkJb3BqX2ZyZWUoaW1hZ2VfY29tcC0+ZGF0YSk7CisJCQl9CisJCX0KKwkJb3BqX2ZyZWUocF9pbWFnZV9kZXN0LT5jb21wcyk7CisJCXBfaW1hZ2VfZGVzdC0+Y29tcHMgPSBOVUxMOworCX0KKworCXBfaW1hZ2VfZGVzdC0+bnVtY29tcHMgPSBwX2ltYWdlX3NyYy0+bnVtY29tcHM7CisKKwlwX2ltYWdlX2Rlc3QtPmNvbXBzID0gKG9wal9pbWFnZV9jb21wX3QqKSBvcGpfbWFsbG9jKHBfaW1hZ2VfZGVzdC0+bnVtY29tcHMgKiBzaXplb2Yob3BqX2ltYWdlX2NvbXBfdCkpOworCWlmICghcF9pbWFnZV9kZXN0LT5jb21wcyl7CisJCXBfaW1hZ2VfZGVzdC0+Y29tcHMgPSBOVUxMOworCQlwX2ltYWdlX2Rlc3QtPm51bWNvbXBzID0gMDsKKwkJcmV0dXJuOworCX0KKworCWZvciAoY29tcG5vPTA7IGNvbXBubyA8IHBfaW1hZ2VfZGVzdC0+bnVtY29tcHM7IGNvbXBubysrKXsKKwkJbWVtY3B5KCAmKHBfaW1hZ2VfZGVzdC0+Y29tcHNbY29tcG5vXSksCisJCQkJJihwX2ltYWdlX3NyYy0+Y29tcHNbY29tcG5vXSksCisJCQkJc2l6ZW9mKG9wal9pbWFnZV9jb21wX3QpKTsKKwkJcF9pbWFnZV9kZXN0LT5jb21wc1tjb21wbm9dLmRhdGEgPSBOVUxMOworCX0KKworCXBfaW1hZ2VfZGVzdC0+Y29sb3Jfc3BhY2UgPSBwX2ltYWdlX3NyYy0+Y29sb3Jfc3BhY2U7CisJcF9pbWFnZV9kZXN0LT5pY2NfcHJvZmlsZV9sZW4gPSBwX2ltYWdlX3NyYy0+aWNjX3Byb2ZpbGVfbGVuOworCisJaWYgKHBfaW1hZ2VfZGVzdC0+aWNjX3Byb2ZpbGVfbGVuKSB7CisJCXBfaW1hZ2VfZGVzdC0+aWNjX3Byb2ZpbGVfYnVmID0gKE9QSl9CWVRFKilvcGpfbWFsbG9jKHBfaW1hZ2VfZGVzdC0+aWNjX3Byb2ZpbGVfbGVuKTsKKwkJaWYgKCFwX2ltYWdlX2Rlc3QtPmljY19wcm9maWxlX2J1Zil7CisJCQlwX2ltYWdlX2Rlc3QtPmljY19wcm9maWxlX2J1ZiA9IE5VTEw7CisJCQlwX2ltYWdlX2Rlc3QtPmljY19wcm9maWxlX2xlbiA9IDA7CisJCQlyZXR1cm47CisJCX0KKwkJbWVtY3B5KCBwX2ltYWdlX2Rlc3QtPmljY19wcm9maWxlX2J1ZiwKKwkJCQlwX2ltYWdlX3NyYy0+aWNjX3Byb2ZpbGVfYnVmLAorCQkJCXBfaW1hZ2Vfc3JjLT5pY2NfcHJvZmlsZV9sZW4pOworCQl9CisJCWVsc2UKKwkJCXBfaW1hZ2VfZGVzdC0+aWNjX3Byb2ZpbGVfYnVmID0gTlVMTDsKKworCXJldHVybjsKK30KKworb3BqX2ltYWdlX3QqIE9QSl9DQUxMQ09OViBvcGpfaW1hZ2VfdGlsZV9jcmVhdGUoT1BKX1VJTlQzMiBudW1jbXB0cywgb3BqX2ltYWdlX2NtcHRwYXJtX3QgKmNtcHRwYXJtcywgT1BKX0NPTE9SX1NQQUNFIGNscnNwYykgeworCU9QSl9VSU5UMzIgY29tcG5vOworCW9wal9pbWFnZV90ICppbWFnZSA9IDAwOworCisJaW1hZ2UgPSAob3BqX2ltYWdlX3QqKSBvcGpfbWFsbG9jKHNpemVvZihvcGpfaW1hZ2VfdCkpOworCWlmIChpbWFnZSkKKwl7CisJCW1lbXNldChpbWFnZSwwLHNpemVvZihvcGpfaW1hZ2VfdCkpOworCQkKKwkJaW1hZ2UtPmNvbG9yX3NwYWNlID0gY2xyc3BjOworCQlpbWFnZS0+bnVtY29tcHMgPSBudW1jbXB0czsKKwkJCisJCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHBlci1jb21wb25lbnQgaW5mb3JtYXRpb24gKi8KKwkJaW1hZ2UtPmNvbXBzID0gKG9wal9pbWFnZV9jb21wX3QqKW9wal9tYWxsb2MoaW1hZ2UtPm51bWNvbXBzICogc2l6ZW9mKG9wal9pbWFnZV9jb21wX3QpKTsKKwkJaWYgKCFpbWFnZS0+Y29tcHMpIHsKKwkJCW9wal9pbWFnZV9kZXN0cm95KGltYWdlKTsKKwkJCXJldHVybiAwMDsKKwkJfQorCQltZW1zZXQoaW1hZ2UtPmNvbXBzLDAsaW1hZ2UtPm51bWNvbXBzICogc2l6ZW9mKG9wal9pbWFnZV9jb21wX3QpKTsKKwkJCisJCS8qIGNyZWF0ZSB0aGUgaW5kaXZpZHVhbCBpbWFnZSBjb21wb25lbnRzICovCisJCWZvcihjb21wbm8gPSAwOyBjb21wbm8gPCBudW1jbXB0czsgY29tcG5vKyspIHsKKwkJCW9wal9pbWFnZV9jb21wX3QgKmNvbXAgPSAmaW1hZ2UtPmNvbXBzW2NvbXBub107CisJCQljb21wLT5keCA9IGNtcHRwYXJtc1tjb21wbm9dLmR4OworCQkJY29tcC0+ZHkgPSBjbXB0cGFybXNbY29tcG5vXS5keTsKKwkJCWNvbXAtPncgPSBjbXB0cGFybXNbY29tcG5vXS53OworCQkJY29tcC0+aCA9IGNtcHRwYXJtc1tjb21wbm9dLmg7CisJCQljb21wLT54MCA9IGNtcHRwYXJtc1tjb21wbm9dLngwOworCQkJY29tcC0+eTAgPSBjbXB0cGFybXNbY29tcG5vXS55MDsKKwkJCWNvbXAtPnByZWMgPSBjbXB0cGFybXNbY29tcG5vXS5wcmVjOworCQkJY29tcC0+c2duZCA9IGNtcHRwYXJtc1tjb21wbm9dLnNnbmQ7CisJCQljb21wLT5kYXRhID0gMDsKKwkJfQorCX0KKworCXJldHVybiBpbWFnZTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9pbWFnZS5oIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2ltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBlMjc3MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9pbWFnZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgX19JTUFHRV9ICisjZGVmaW5lIF9fSU1BR0VfSAorLyoqCitAZmlsZSBpbWFnZS5oCitAYnJpZWYgSW1wbGVtZW50YXRpb24gb2Ygb3BlcmF0aW9ucyBvbiBpbWFnZXMgKElNQUdFKQorCitUaGUgZnVuY3Rpb25zIGluIElNQUdFLkMgaGF2ZSBmb3IgZ29hbCB0byByZWFsaXplIG9wZXJhdGlvbnMgb24gaW1hZ2VzLgorKi8KKworc3RydWN0IG9wal9pbWFnZTsKK3N0cnVjdCBvcGpfY3A7CisKKy8qKiBAZGVmZ3JvdXAgSU1BR0UgSU1BR0UgLSBJbXBsZW1lbnRhdGlvbiBvZiBvcGVyYXRpb25zIG9uIGltYWdlcyAqLworLypAeyovCisKKy8qKgorICogQ3JlYXRlIGFuIGVtcHR5IGltYWdlCisgKgorICogQHJldHVybiByZXR1cm5zIGFuIGVtcHR5IGltYWdlIGlmIHN1Y2Nlc3NmdWwsIHJldHVybnMgTlVMTCBvdGhlcndpc2UKKyAqLworb3BqX2ltYWdlX3QqIG9wal9pbWFnZV9jcmVhdGUwKHZvaWQpOworCisKKworLyoqCisgKiBVcGRhdGVzIHRoZSBjb21wb25lbnRzIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgaW1hZ2UgZnJvbSB0aGUgY29kaW5nIHBhcmFtZXRlcnMuCisgKgorICogQHBhcmFtIHBfaW1hZ2VfaGVhZGVyCQl0aGUgaW1hZ2UgaGVhZGVyIHRvIHVwZGF0ZS4KKyAqIEBwYXJhbSBwX2NwCQkJCQl0aGUgY29kaW5nIHBhcmFtZXRlcnMgZnJvbSB3aGljaCB0byB1cGRhdGUgdGhlIGltYWdlLgorICovCit2b2lkIG9wal9pbWFnZV9jb21wX2hlYWRlcl91cGRhdGUob3BqX2ltYWdlX3QgKiBwX2ltYWdlLCBjb25zdCBzdHJ1Y3Qgb3BqX2NwKiBwX2NwKTsKKwordm9pZCBvcGpfY29weV9pbWFnZV9oZWFkZXIoY29uc3Qgb3BqX2ltYWdlX3QqIHBfaW1hZ2Vfc3JjLCBvcGpfaW1hZ2VfdCogcF9pbWFnZV9kZXN0KTsKKworLypAfSovCisKKyNlbmRpZiAvKiBfX0lNQUdFX0ggKi8KKwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2luZGV4Ym94X21hbmFnZXIuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9pbmRleGJveF9tYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM1NTI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9pbmRleGJveF9tYW5hZ2VyLmgKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiAkSWQ6IGluZGV4Ym94X21hbmFnZXIuaCA4OTcgMjAxMS0wOC0yOCAyMTo0Mzo1N1ogS2FvcmkuSGFnaWhhcmFAZ21haWwuY29tICQKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgVW5pdmVyc2l0ZSBjYXRob2xpcXVlIGRlIExvdXZhaW4gKFVDTCksIEJlbGdpdW0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBQcm9mZXNzb3IgQmVub2l0IE1hY3EKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMSwgS2FvcmkgSGFnaWhhcmEKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyohIFxmaWxlCisgKiAgXGJyaWVmIE1vZGlmaWNhdGlvbiBvZiBqcGlwLmMgZnJvbSAyS0FOIGluZGV4ZXIKKyAqLworCisjaWZuZGVmICBJTkRFWEJPWF9NQU5BR0VSX0hfCisjIGRlZmluZSBJTkRFWEJPWF9NQU5BR0VSX0hfCisKKyNpbmNsdWRlICJvcGVuanBlZy5oIgorI2luY2x1ZGUgImoyay5oIiAvKiBuZWVkZWQgdG8gdXNlIGpwMi5oICovCisjaW5jbHVkZSAianAyLmgiCisKKyNkZWZpbmUgSlBJUF9DSURYIDB4NjM2OTY0NzggICAvKiBDb2Rlc3RyZWFtIGluZGV4ICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEpQSVBfQ1BUUiAweDYzNzA3NDcyICAgLyogQ29kZXN0cmVhbSBGaW5kZXIgQm94ICAgICAgICAgICAqLworI2RlZmluZSBKUElQX01BTkYgMHg2ZDYxNmU2NiAgIC8qIE1hbmlmZXN0IEJveCAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSlBJUF9GQUlYIDB4NjY2MTY5NzggICAvKiBGcmFnbWVudCBhcnJheSBJbmRleCBib3ggICAgICAgICovCisjZGVmaW5lIEpQSVBfTUhJWCAweDZkNjg2OTc4ICAgLyogTWFpbiBIZWFkZXIgSW5kZXggVGFibGUgICAgICAgICAqLworI2RlZmluZSBKUElQX1RQSVggMHg3NDcwNjk3OCAgIC8qIFRpbGUtcGFydCBJbmRleCBUYWJsZSBib3ggICAgICAgKi8KKyNkZWZpbmUgSlBJUF9USElYIDB4NzQ2ODY5NzggICAvKiBUaWxlIGhlYWRlciBJbmRleCBUYWJsZSBib3ggICAgICovCisjZGVmaW5lIEpQSVBfUFBJWCAweDcwNzA2OTc4ICAgLyogUHJlY2luY3QgUGFja2V0IEluZGV4IFRhYmxlIGJveCAqLworI2RlZmluZSBKUElQX1BISVggMHg3MDY4Njk3OCAgIC8qIFBhY2tldCBIZWFkZXIgaW5kZXggVGFibGUgICAgICAgKi8KKyNkZWZpbmUgSlBJUF9GSURYIDB4NjY2OTY0NzggICAvKiBGaWxlIEluZGV4ICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEpQSVBfRlBUUiAweDY2NzA3NDcyICAgLyogRmlsZSBGaW5kZXIgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBKUElQX1BSWFkgMHg3MDcyNzg3OSAgIC8qIFByb3h5IGJveGVzICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSlBJUF9JUFRSIDB4Njk3MDc0NzIgICAvKiBJbmRleCBmaW5kZXIgYm94ICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEpQSVBfUEhMRCAweDcwNjg2YzY0ICAgLyogUGxhY2UgaG9sZGVyICAgICAgICAgICAgICAgICAgICAqLworCisKKy8qIAorICogV3JpdGUgdGlsZS1wYXJ0IEluZGV4IHRhYmxlIGJveCAoc3VwZXJib3gpCisgKgorICogQHBhcmFtW2luXSBjb2ZmICAgICAgb2Zmc2V0IG9mIGoyayBjb2Rlc3RyZWFtCisgKiBAcGFyYW1baW5dIGNzdHJfaW5mbyBjb2Rlc3RyZWFtIGluZm9ybWF0aW9uCisgKiBAcGFyYW1baW5dIGoya2xlbiAgICBsZW5ndGggb2YgajJrIGNvZGVzdHJlYW0KKyAqIEBwYXJhbVtpbl0gY2lvICAgICAgIGZpbGUgb3V0cHV0IGhhbmRsZQorICogQHJldHVybiAgICAgICAgICAgICAgbGVuZ3RoIG9mIHRwaXggYm94CisgKi8KK2ludCBvcGpfd3JpdGVfdHBpeCggaW50IGNvZmYsIG9wal9jb2Rlc3RyZWFtX2luZm9fdCBjc3RyX2luZm8sIGludCBqMmtsZW4sIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisKKy8qIAorICogV3JpdGUgdGlsZSBoZWFkZXIgaW5kZXggdGFibGUgYm94IChzdXBlcmJveCkKKyAqCisgKiBAcGFyYW1baW5dIGNvZmYgICAgICBvZmZzZXQgb2YgajJrIGNvZGVzdHJlYW0KKyAqIEBwYXJhbVtpbl0gY3N0cl9pbmZvIGNvZGVzdHJlYW0gaW5mb3JtYXRpb24gcG9pbnRlcgorICogQHBhcmFtW2luXSBjaW8gICAgICAgZmlsZSBvdXRwdXQgaGFuZGxlCisgKiBAcmV0dXJuICAgICAgICAgICAgICBsZW5ndGggb2YgdGhpeCBib3gKKyAqLworaW50IG9wal93cml0ZV90aGl4KCBpbnQgY29mZiwgb3BqX2NvZGVzdHJlYW1faW5mb190IGNzdHJfaW5mbywgb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKworLyogCisgKiBXcml0ZSBwcmVjaW5jdCBwYWNrZXQgaW5kZXggdGFibGUgYm94IChzdXBlcmJveCkKKyAqCisgKiBAcGFyYW1baW5dIGNvZmYgICAgICBvZmZzZXQgb2YgajJrIGNvZGVzdHJlYW0KKyAqIEBwYXJhbVtpbl0gY3N0cl9pbmZvIGNvZGVzdHJlYW0gaW5mb3JtYXRpb24KKyAqIEBwYXJhbVtpbl0gRVBIdXNlZCAgIHRydWUgaWYgRVBIIG9wdGlvbiB1c2VkCisgKiBAcGFyYW1baW5dIGoya2xlbiAgICBsZW5ndGggb2YgajJrIGNvZGVzdHJlYW0KKyAqIEBwYXJhbVtpbl0gY2lvICAgICAgIGZpbGUgb3V0cHV0IGhhbmRsZQorICogQHJldHVybiAgICAgICAgICAgICAgbGVuZ3RoIG9mIHBwaXggYm94CisgKi8KK2ludCBvcGpfd3JpdGVfcHBpeCggaW50IGNvZmYsIG9wal9jb2Rlc3RyZWFtX2luZm9fdCBjc3RyX2luZm8sIE9QSl9CT09MIEVQSHVzZWQsIGludCBqMmtsZW4sIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisKKy8qIAorICogV3JpdGUgcGFja2V0IGhlYWRlciBpbmRleCB0YWJsZSBib3ggKHN1cGVyYm94KQorICoKKyAqIEBwYXJhbVtpbl0gY29mZiAgICAgIG9mZnNldCBvZiBqMmsgY29kZXN0cmVhbQorICogQHBhcmFtW2luXSBjc3RyX2luZm8gY29kZXN0cmVhbSBpbmZvcm1hdGlvbgorICogQHBhcmFtW2luXSBFUEh1c2VkICAgdHJ1ZSBpZiBFUEggb3B0aW9uIHVzZWQKKyAqIEBwYXJhbVtpbl0gajJrbGVuICAgIGxlbmd0aCBvZiBqMmsgY29kZXN0cmVhbQorICogQHBhcmFtW2luXSBjaW8gICAgICAgZmlsZSBvdXRwdXQgaGFuZGxlCisgKiBAcmV0dXJuICAgICAgICAgICAgICBsZW5ndGggb2YgcHBpeCBib3gKKyAqLworaW50IG9wal93cml0ZV9waGl4KCBpbnQgY29mZiwgb3BqX2NvZGVzdHJlYW1faW5mb190IGNzdHJfaW5mbywgT1BKX0JPT0wgRVBIdXNlZCwgaW50IGoya2xlbiwgb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywKKyAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qIAorICogV3JpZXQgbWFuaWZlc3QgYm94IChib3gpCisgKgorICogQHBhcmFtW2luXSBzZWNvbmQgbnVtYmVyIHRvIGJlIHZpc2l0ZWQKKyAqIEBwYXJhbVtpbl0gdiAgICAgIG51bWJlciBvZiBib3hlcworICogQHBhcmFtW2luXSBib3ggICAgYm94IHRvIGJlIG1hbmlmZXN0ZWQKKyAqIEBwYXJhbVtpbl0gY2lvICAgIGZpbGUgb3V0cHV0IGhhbmRsZQorICovCisKK3ZvaWQgb3BqX3dyaXRlX21hbmYoaW50IHNlY29uZCwgCisgICAgICAgICAgICAgICAgICAgIGludCB2LCAKKyAgICAgICAgICAgICAgICAgICAgb3BqX2pwMl9ib3hfdCAqYm94LCAKKyAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywKKyAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qIAorICogV3JpdGUgbWFpbiBoZWFkZXIgaW5kZXggdGFibGUgKGJveCkKKyAqCisgKiBAcGFyYW1baW5dIGNvZmYgb2Zmc2V0IG9mIGoyayBjb2Rlc3RyZWFtCisgKiBAcGFyYW1baW5dIGNzdHJfaW5mbyBjb2Rlc3RyZWFtIGluZm9ybWF0aW9uCisgKiBAcGFyYW1baW5dIGNpbyAgZmlsZSBvdXRwdXQgaGFuZGxlCisgKiBAcmV0dXJuICAgICAgICAgbGVuZ3RoIG9mIG1haW5taGl4IGJveAorICovCitpbnQgb3BqX3dyaXRlX21haW5taGl4KCBpbnQgY29mZiwgb3BqX2NvZGVzdHJlYW1faW5mb190IGNzdHJfaW5mbywgb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywKKyAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKK2ludCBvcGpfd3JpdGVfcGhpeGZhaXgoIGludCBjb2ZmLCBpbnQgY29tcG5vLCBvcGpfY29kZXN0cmVhbV9pbmZvX3QgY3N0cl9pbmZvLCBPUEpfQk9PTCBFUEh1c2VkLCBpbnQgajJrbGVuLCBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqY2lvLAorICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworaW50IG9wal93cml0ZV9wcGl4ZmFpeCggaW50IGNvZmYsIGludCBjb21wbm8sIG9wal9jb2Rlc3RyZWFtX2luZm9fdCBjc3RyX2luZm8sIE9QSl9CT09MIEVQSHVzZWQsIGludCBqMmtsZW4sIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCitpbnQgb3BqX3dyaXRlX3RpbGVtaGl4KCBpbnQgY29mZiwgb3BqX2NvZGVzdHJlYW1faW5mb190IGNzdHJfaW5mbywgaW50IHRpbGVubywgb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywKKyAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKK2ludCBvcGpfd3JpdGVfdHBpeGZhaXgoIGludCBjb2ZmLCBpbnQgY29tcG5vLCBvcGpfY29kZXN0cmVhbV9pbmZvX3QgY3N0cl9pbmZvLCBpbnQgajJrbGVuLCBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqY2lvLAorICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworI2VuZGlmICAgICAgLyogIUlOREVYQk9YX01BTkFHRVJfSF8gKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9pbnZlcnQuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9pbnZlcnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzFlZTc4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2ludmVydC5jCkBAIC0wLDAgKzEsMjk0IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBKZXJvbWUgRmltZXMsIENvbW11bmljYXRpb25zICYgU3lzdGVtZXMgPGplcm9tZS5maW1lc0BjLXMuZnI+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJvcGpfaW5jbHVkZXMuaCIKKworLyoqIAorICogTFVQIGRlY29tcG9zaXRpb24KKyAqLworc3RhdGljIE9QSl9CT09MIG9wal9sdXBEZWNvbXBvc2UoT1BKX0ZMT0FUMzIgKiBtYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcGVybXV0YXRpb25zLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogcF9zd2FwX2FyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG5iX2NvbXBvKTsKKy8qKiAKKyAqIExVUCBzb2x2aW5nCisgKi8KK3N0YXRpYyB2b2lkIG9wal9sdXBTb2x2ZShPUEpfRkxPQVQzMiAqIHBSZXN1bHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyKiBwTWF0cml4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQzMiogcFZlY3RvciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiogcFBlcm11dGF0aW9ucywgCisgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBuYl9jb21wbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQzMiAqIHBfaW50ZXJtZWRpYXRlX2RhdGEpOworCisvKiogCisgKkxVUCBpbnZlcnNpb24gKGNhbGwgd2l0aCB0aGUgcmVzdWx0IG9mIGx1cERlY29tcG9zZSkKKyAqLworc3RhdGljIHZvaWQgb3BqX2x1cEludmVydCAoIE9QSl9GTE9BVDMyICogcFNyY01hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQzMiAqIHBEZXN0TWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbmJfY29tcG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBQZXJtdXRhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0ZMT0FUMzIgKiBwX3NyY190ZW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogcF9kZXN0X3RlbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0ZMT0FUMzIgKiBwX3N3YXBfYXJlYSk7CisKKy8qCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBNYXRyaWMgaW52ZXJzaW9uIGludGVyZmFjZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKy8qKgorICogTWF0cml4IGludmVyc2lvbi4KKyAqLworT1BKX0JPT0wgb3BqX21hdHJpeF9pbnZlcnNpb25fZihPUEpfRkxPQVQzMiAqIHBTcmNNYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogcERlc3RNYXRyaXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG5iX2NvbXBvKQoreworCU9QSl9CWVRFICogbF9kYXRhID0gMDA7CisJT1BKX1VJTlQzMiBsX3Blcm11dGF0aW9uX3NpemUgPSBuYl9jb21wbyAqIChPUEpfVUlOVDMyKXNpemVvZihPUEpfVUlOVDMyKTsKKwlPUEpfVUlOVDMyIGxfc3dhcF9zaXplID0gbmJfY29tcG8gKiAoT1BKX1VJTlQzMilzaXplb2YoT1BKX0ZMT0FUMzIpOworCU9QSl9VSU5UMzIgbF90b3RhbF9zaXplID0gbF9wZXJtdXRhdGlvbl9zaXplICsgMyAqIGxfc3dhcF9zaXplOworCU9QSl9VSU5UMzIgKiBsUGVybXV0YXRpb25zID0gMDA7CisJT1BKX0ZMT0FUMzIgKiBsX2RvdWJsZV9kYXRhID0gMDA7CisKKwlsX2RhdGEgPSAoT1BKX0JZVEUgKikgb3BqX21hbGxvYyhsX3RvdGFsX3NpemUpOworCWlmIChsX2RhdGEgPT0gMCkgeworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKwlsUGVybXV0YXRpb25zID0gKE9QSl9VSU5UMzIgKikgbF9kYXRhOworCWxfZG91YmxlX2RhdGEgPSAoT1BKX0ZMT0FUMzIgKikgKGxfZGF0YSArIGxfcGVybXV0YXRpb25fc2l6ZSk7CisJbWVtc2V0KGxQZXJtdXRhdGlvbnMsMCxsX3Blcm11dGF0aW9uX3NpemUpOworCisJaWYoISBvcGpfbHVwRGVjb21wb3NlKHBTcmNNYXRyaXgsbFBlcm11dGF0aW9ucyxsX2RvdWJsZV9kYXRhLG5iX2NvbXBvKSkgeworCQlvcGpfZnJlZShsX2RhdGEpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKwkKKyAgICBvcGpfbHVwSW52ZXJ0KHBTcmNNYXRyaXgscERlc3RNYXRyaXgsbmJfY29tcG8sbFBlcm11dGF0aW9ucyxsX2RvdWJsZV9kYXRhLGxfZG91YmxlX2RhdGEgKyBuYl9jb21wbyxsX2RvdWJsZV9kYXRhICsgMipuYl9jb21wbyk7CisJb3BqX2ZyZWUobF9kYXRhKTsKKwkKKyAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKworLyoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIExvY2FsIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KK09QSl9CT09MIG9wal9sdXBEZWNvbXBvc2UoT1BKX0ZMT0FUMzIgKiBtYXRyaXgsT1BKX1VJTlQzMiAqIHBlcm11dGF0aW9ucywgCisgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogcF9zd2FwX2FyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbmJfY29tcG8pIAoreworCU9QSl9VSU5UMzIgKiB0bXBQZXJtdXRhdGlvbnMgPSBwZXJtdXRhdGlvbnM7CisJT1BKX1VJTlQzMiAqIGRzdFBlcm11dGF0aW9uczsKKwlPUEpfVUlOVDMyIGsyPTAsdDsKKwlPUEpfRkxPQVQzMiB0ZW1wOworCU9QSl9VSU5UMzIgaSxqLGs7CisJT1BKX0ZMT0FUMzIgcDsKKwlPUEpfVUlOVDMyIGxMYXN0Q29sdW0gPSBuYl9jb21wbyAtIDE7CisJT1BKX1VJTlQzMiBsU3dhcFNpemUgPSBuYl9jb21wbyAqIChPUEpfVUlOVDMyKXNpemVvZihPUEpfRkxPQVQzMik7CisJT1BKX0ZMT0FUMzIgKiBsVG1wTWF0cml4ID0gbWF0cml4OworCU9QSl9GTE9BVDMyICogbENvbHVtbk1hdHJpeCwqIGxEZXN0TWF0cml4OworCU9QSl9VSU5UMzIgb2Zmc2V0ID0gMTsKKwlPUEpfVUlOVDMyIGxTdHJpZGUgPSBuYl9jb21wby0xOworCisJLyppbml0aWFsaXplIHBlcm11dGF0aW9ucyAqLworCWZvciAoaSA9IDA7IGkgPCBuYl9jb21wbzsgKytpKSAKKwl7CisgICAgCSp0bXBQZXJtdXRhdGlvbnMrKyA9IGk7CisJfQorCS8qIG5vdyBtYWtlIGEgcGl2b3Qgd2l0aCBjb2x1bSBzd2l0Y2ggKi8KKwl0bXBQZXJtdXRhdGlvbnMgPSBwZXJtdXRhdGlvbnM7CisJZm9yIChrID0gMDsgayA8IGxMYXN0Q29sdW07ICsraykgeworCQlwID0gMC4wOworCisJCS8qIHRha2UgdGhlIG1pZGRsZSBlbGVtZW50ICovCisJCWxDb2x1bW5NYXRyaXggPSBsVG1wTWF0cml4ICsgazsKKwkJCisJCS8qIG1ha2UgcGVybXV0YXRpb24gd2l0aCB0aGUgYmlnZ2VzdCB2YWx1ZSBpbiB0aGUgY29sdW1uICovCisgICAgICAgIGZvciAoaSA9IGs7IGkgPCBuYl9jb21wbzsgKytpKSB7CisJCQl0ZW1wID0gKCgqbENvbHVtbk1hdHJpeCA+IDApID8gKmxDb2x1bW5NYXRyaXggOiAtKCpsQ29sdW1uTWF0cml4KSk7CisgICAgIAkJaWYgKHRlbXAgPiBwKSB7CisgICAgIAkJCXAgPSB0ZW1wOworICAgICAJCQlrMiA9IGk7CisgICAgIAkJfQorCQkJLyogbmV4dCBsaW5lICovCisJCQlsQ29sdW1uTWF0cml4ICs9IG5iX2NvbXBvOworICAgICAJfQorCisgICAgIAkvKiBhIHdob2xlIHJlc3Qgb2YgMCAtPiBub24gc2luZ3VsYXIgKi8KKyAgICAgCWlmIChwID09IDAuMCkgeworICAgIAkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJfQorCisJCS8qIHNob3VsZCB3ZSBwZXJtdXRlID8gKi8KKwkJaWYgKGsyICE9IGspIHsKKwkJCS8qZXhjaGFuZ2Ugb2YgbGluZSAqLworICAgICAJCS8qIGsyID4gayAqLworCQkJZHN0UGVybXV0YXRpb25zID0gdG1wUGVybXV0YXRpb25zICsgazIgLSBrOworCQkJLyogc3dhcCBpbmRpY2VzICovCisJCQl0ID0gKnRtcFBlcm11dGF0aW9uczsKKyAgICAgCQkqdG1wUGVybXV0YXRpb25zID0gKmRzdFBlcm11dGF0aW9uczsKKyAgICAgCQkqZHN0UGVybXV0YXRpb25zID0gdDsKKworCQkJLyogYW5kIHN3YXAgZW50aXJlIGxpbmUuICovCisJCQlsQ29sdW1uTWF0cml4ID0gbFRtcE1hdHJpeCArIChrMiAtIGspICogbmJfY29tcG87CisJCQltZW1jcHkocF9zd2FwX2FyZWEsbENvbHVtbk1hdHJpeCxsU3dhcFNpemUpOworCQkJbWVtY3B5KGxDb2x1bW5NYXRyaXgsbFRtcE1hdHJpeCxsU3dhcFNpemUpOworCQkJbWVtY3B5KGxUbXBNYXRyaXgscF9zd2FwX2FyZWEsbFN3YXBTaXplKTsKKwkJfQorCisJCS8qIG5vdyB1cGRhdGUgZGF0YSBpbiB0aGUgcmVzdCBvZiB0aGUgbGluZSBhbmQgbGluZSBhZnRlciAqLworCQlsRGVzdE1hdHJpeCA9IGxUbXBNYXRyaXggKyBrOworCQlsQ29sdW1uTWF0cml4ID0gbERlc3RNYXRyaXggKyBuYl9jb21wbzsKKwkJLyogdGFrZSB0aGUgbWlkZGxlIGVsZW1lbnQgKi8KKwkJdGVtcCA9ICoobERlc3RNYXRyaXgrKyk7CisKKwkJLyogbm93IGNvbXB1dGUgdXAgZGF0YSAoaS5lLiBjb2VmZiB1cCBvZiB0aGUgZGlhZ29uYWwpLiAqLworICAgICAJZm9yIChpID0gb2Zmc2V0OyBpIDwgbmJfY29tcG87ICsraSkgIHsKKwkJCS8qbENvbHVtbk1hdHJpeDsgKi8KKwkJCS8qIGRpdmlkZSB0aGUgbG93ZXIgY29sdW1uIGVsZW1lbnRzIGJ5IHRoZSBkaWFnb25hbCB2YWx1ZSAqLworCisJCQkvKiBtYXRyaXhbaV1ba10gLz0gbWF0cml4W2tdW2tdOyAqLworICAgICAJCS8qIHAgPSBtYXRyaXhbaV1ba10gKi8KKwkJCXAgPSAqbENvbHVtbk1hdHJpeCAvIHRlbXA7CisJCQkqKGxDb2x1bW5NYXRyaXgrKykgPSBwOworICAgICAJCQorICAgICAgICAgICAgZm9yIChqID0gLyogayArIDEgKi8gb2Zmc2V0OyBqIDwgbmJfY29tcG87ICsraikgeworCQkJCS8qIG1hdHJpeFtpXVtqXSAtPSBtYXRyaXhbaV1ba10gKiBtYXRyaXhba11bal07ICovCisgICAgIAkJCSoobENvbHVtbk1hdHJpeCsrKSAtPSBwICogKCoobERlc3RNYXRyaXgrKykpOworCQkJfQorCQkJLyogY29tZSBiYWNrIHRvIHRoZSBrKzF0aCBlbGVtZW50ICovCisJCQlsRGVzdE1hdHJpeCAtPSBsU3RyaWRlOworCQkJLyogZ28gdG8ga3RoIGVsZW1lbnQgb2YgdGhlIG5leHQgbGluZSAqLworCQkJbENvbHVtbk1hdHJpeCArPSBrOworICAgICAJfQorCisJCS8qIG9mZnNldCBpcyBub3cgaysyICovCisJCSsrb2Zmc2V0OworCQkvKiAxIGVsZW1lbnQgbGVzcyBmb3Igc3RyaWRlICovCisJCS0tbFN0cmlkZTsKKwkJLyogbmV4dCBsaW5lICovCisJCWxUbXBNYXRyaXgrPW5iX2NvbXBvOworCQkvKiBuZXh0IHBlcm11dGF0aW9uIGVsZW1lbnQgKi8KKwkJKyt0bXBQZXJtdXRhdGlvbnM7CisJfQorICAgIHJldHVybiBPUEpfVFJVRTsKK30KKyAgIAkJCit2b2lkIG9wal9sdXBTb2x2ZSAoT1BKX0ZMT0FUMzIgKiBwUmVzdWx0LCAKKyAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQzMiAqIHBNYXRyaXgsIAorICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogcFZlY3RvciwgCisgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiogcFBlcm11dGF0aW9ucywgCisgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBuYl9jb21wbyxPUEpfRkxPQVQzMiAqIHBfaW50ZXJtZWRpYXRlX2RhdGEpIAoreworCU9QSl9JTlQzMiBrOworICAgIE9QSl9VSU5UMzIgaSxqOworCU9QSl9GTE9BVDMyIHN1bTsKKwlPUEpfRkxPQVQzMiB1OworICAgIE9QSl9VSU5UMzIgbFN0cmlkZSA9IG5iX2NvbXBvKzE7CisJT1BKX0ZMT0FUMzIgKiBsQ3VycmVudFB0cjsKKwlPUEpfRkxPQVQzMiAqIGxJbnRlcm1lZGlhdGVQdHI7CisJT1BKX0ZMT0FUMzIgKiBsRGVzdFB0cjsKKwlPUEpfRkxPQVQzMiAqIGxUbXBNYXRyaXg7CisJT1BKX0ZMT0FUMzIgKiBsTGluZU1hdHJpeCA9IHBNYXRyaXg7CisJT1BKX0ZMT0FUMzIgKiBsQmVnaW5QdHIgPSBwUmVzdWx0ICsgbmJfY29tcG8gLSAxOworCU9QSl9GTE9BVDMyICogbEdlbmVyYXRlZERhdGE7CisJT1BKX1VJTlQzMiAqIGxDdXJyZW50UGVybXV0YXRpb25QdHIgPSBwUGVybXV0YXRpb25zOworCisJCisJbEludGVybWVkaWF0ZVB0ciA9IHBfaW50ZXJtZWRpYXRlX2RhdGE7CisJbEdlbmVyYXRlZERhdGEgPSBwX2ludGVybWVkaWF0ZV9kYXRhICsgbmJfY29tcG8gLSAxOworCQorICAgIGZvciAoaSA9IDA7IGkgPCBuYl9jb21wbzsgKytpKSB7CisgICAgICAgCXN1bSA9IDAuMDsKKwkJbEN1cnJlbnRQdHIgPSBwX2ludGVybWVkaWF0ZV9kYXRhOworCQlsVG1wTWF0cml4ID0gbExpbmVNYXRyaXg7CisgICAgICAgIGZvciAoaiA9IDE7IGogPD0gaTsgKytqKSAKKwkJeworCQkJLyogc3VtICs9IG1hdHJpeFtpXVtqLTFdICogeVtqLTFdOyAqLworICAgICAgICAJc3VtICs9ICgqKGxUbXBNYXRyaXgrKykpICogKCoobEN1cnJlbnRQdHIrKykpOworICAgICAgICB9CisJCS8qeVtpXSA9IHBWZWN0b3JbcFBlcm11dGF0aW9uc1tpXV0gLSBzdW07ICovCisgICAgICAgICoobEludGVybWVkaWF0ZVB0cisrKSA9IHBWZWN0b3JbKihsQ3VycmVudFBlcm11dGF0aW9uUHRyKyspXSAtIHN1bTsKKwkJbExpbmVNYXRyaXggKz0gbmJfY29tcG87CisJfQorCisJLyogd2UgdGFrZSB0aGUgbGFzdCBwb2ludCBvZiB0aGUgbWF0cml4ICovCisJbExpbmVNYXRyaXggPSBwTWF0cml4ICsgbmJfY29tcG8qbmJfY29tcG8gLSAxOworCisJLyogYW5kIHdlIHRha2UgYWZ0ZXIgdGhlIGxhc3QgcG9pbnQgb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3RvciAqLworCWxEZXN0UHRyID0gcFJlc3VsdCArIG5iX2NvbXBvOworCisKKyAgICBhc3NlcnQobmJfY29tcG8gIT0gMCk7CisJZm9yIChrID0gKE9QSl9JTlQzMiluYl9jb21wbyAtIDE7IGsgIT0gLTEgOyAtLWspIHsKKwkJc3VtID0gMC4wOworCQlsVG1wTWF0cml4ID0gbExpbmVNYXRyaXg7CisgICAgICAgIHUgPSAqKGxUbXBNYXRyaXgrKyk7CisJCWxDdXJyZW50UHRyID0gbERlc3RQdHItLTsKKyAgICAgICAgZm9yIChqID0gKE9QSl9VSU5UMzIpKGsgKyAxKTsgaiA8IG5iX2NvbXBvOyArK2opIHsKKwkJCS8qIHN1bSArPSBtYXRyaXhba11bal0gKiB4W2pdICovCisgICAgICAgIAlzdW0gKz0gKCoobFRtcE1hdHJpeCsrKSkgKiAoKihsQ3VycmVudFB0cisrKSk7CisJCX0KKwkJLyp4W2tdID0gKHlba10gLSBzdW0pIC8gdTsgKi8KKyAgICAgICAgKihsQmVnaW5QdHItLSkgPSAoKihsR2VuZXJhdGVkRGF0YS0tKSAtIHN1bSkgLyB1OworCQlsTGluZU1hdHJpeCAtPSBsU3RyaWRlOworCX0KK30KKyAgICAKKwordm9pZCBvcGpfbHVwSW52ZXJ0IChPUEpfRkxPQVQzMiAqIHBTcmNNYXRyaXgsCisgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogcERlc3RNYXRyaXgsCisgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbmJfY29tcG8sCisgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwUGVybXV0YXRpb25zLAorICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQzMiAqIHBfc3JjX3RlbXAsCisgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogcF9kZXN0X3RlbXAsCisgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogcF9zd2FwX2FyZWEgKQoreworCU9QSl9VSU5UMzIgaixpOworCU9QSl9GTE9BVDMyICogbEN1cnJlbnRQdHI7CisJT1BKX0ZMT0FUMzIgKiBsTGluZU1hdHJpeCA9IHBEZXN0TWF0cml4OworCU9QSl9VSU5UMzIgbFN3YXBTaXplID0gbmJfY29tcG8gKiAoT1BKX1VJTlQzMilzaXplb2YoT1BKX0ZMT0FUMzIpOworCisJZm9yIChqID0gMDsgaiA8IG5iX2NvbXBvOyArK2opIHsKKwkJbEN1cnJlbnRQdHIgPSBsTGluZU1hdHJpeCsrOworICAgICAgICBtZW1zZXQocF9zcmNfdGVtcCwwLGxTd2FwU2l6ZSk7CisgICAgCXBfc3JjX3RlbXBbal0gPSAxLjA7CisJCW9wal9sdXBTb2x2ZShwX2Rlc3RfdGVtcCxwU3JjTWF0cml4LHBfc3JjX3RlbXAsIHBQZXJtdXRhdGlvbnMsIG5iX2NvbXBvICwgcF9zd2FwX2FyZWEpOworCisJCWZvciAoaSA9IDA7IGkgPCBuYl9jb21wbzsgKytpKSB7CisgICAgCQkqKGxDdXJyZW50UHRyKSA9IHBfZGVzdF90ZW1wW2ldOworCQkJbEN1cnJlbnRQdHIrPW5iX2NvbXBvOworICAgIAl9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvaW52ZXJ0LmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvaW52ZXJ0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZhZThlNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9pbnZlcnQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBKZXJvbWUgRmltZXMsIENvbW11bmljYXRpb25zICYgU3lzdGVtZXMgPGplcm9tZS5maW1lc0BjLXMuZnI+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgX19JTlZFUlRfSAorI2RlZmluZSBfX0lOVkVSVF9ICisvKioKK0BmaWxlIGludmVydC5oCitAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgdGhlIG1hdHJpeCBpbnZlcnNpb24KKworVGhlIGZ1bmN0aW9uIGluIElOVkVSVC5IIGNvbXB1dGUgYSBtYXRyaXggaW52ZXJzaW9uIHdpdGggYSBMVVAgbWV0aG9kCisqLworCisvKiogQGRlZmdyb3VwIElOVkVSVCBJTlZFUlQgLSBJbXBsZW1lbnRhdGlvbiBvZiBhIG1hdHJpeCBpbnZlcnNpb24gKi8KKy8qQHsqLworLyoqIEBuYW1lIEV4cG9ydGVkIGZ1bmN0aW9ucyAqLworLypAeyovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKioKKyAqIENhbGN1bGF0ZXMgYSBuIHggbiBkb3VibGUgbWF0cml4IGludmVyc2lvbiB3aXRoIGEgTFVQIG1ldGhvZC4gRGF0YSBpcyBhbGlnbmVkLCByb3dzIGFmdGVyIHJvd3MgKG9yIGNvbHVtbnMgYWZ0ZXIgY29sdW1ucykuCisgKiBUaGUgZnVuY3Rpb24gZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgYW55IG1lbW9yeSBibG9jaywgZGF0YSBtdXN0IGJlIGZyZWQgYnkgdGhlIHVzZXIuCisgKgorICogQHBhcmFtIHBTcmNNYXRyaXgJdGhlIG1hdHJpeCB0byBpbnZlcnQuCisgKiBAcGFyYW0gcERlc3RNYXRyaXgJZGF0YSB0byBzdG9yZSB0aGUgaW52ZXJ0ZWQgbWF0cml4LiAKKyAqIEBwYXJhbSBuIHNpemUgb2YgdGhlIG1hdHJpeAorICogQHJldHVybiBPUEpfVFJVRSBpZiB0aGUgaW52ZXJzaW9uIGlzIHN1Y2Nlc3NmdWwsIE9QSl9GQUxTRSBpZiB0aGUgbWF0cml4IGlzIHNpbmd1bGFyLgorICovCitPUEpfQk9PTCBvcGpfbWF0cml4X2ludmVyc2lvbl9mKE9QSl9GTE9BVDMyICogcFNyY01hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0ZMT0FUMzIgKiBwRGVzdE1hdHJpeCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbmJfY29tcG8pOworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qQH0qLworCisvKkB9Ki8KKworI2VuZGlmIC8qIF9fSU5WRVJUX0ggKi8gCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvajJrLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvajJrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdhODY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9qMmsuYwpAQCAtMCwwICsxLDEwMjk1IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEplcm9tZSBGaW1lcywgQ29tbXVuaWNhdGlvbnMgJiBTeXN0ZW1lcyA8amVyb21lLmZpbWVzQGMtcy5mcj4KKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBQYXJ2YXRoYSBFbGFuZ292YW4KKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDExLCBLYW9yaSBIYWdpaGFyYQorICogQ29weXJpZ2h0IChjKSAyMDExLTIwMTIsIENlbnRyZSBOYXRpb25hbCBkJ0V0dWRlcyBTcGF0aWFsZXMgKENORVMpLCBGcmFuY2UgCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIENTIFN5c3RlbWVzIGQnSW5mb3JtYXRpb24sIEZyYW5jZQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAib3BqX2luY2x1ZGVzLmgiCisKKyNkZWZpbmUgQ0lORU1BXzI0X0NTIDEzMDIwODMJLypDb2Rlc3RyZWFtIGxlbmd0aCBmb3IgMjRmcHMqLworI2RlZmluZSBDSU5FTUFfNDhfQ1MgNjUxMDQxCQkvKkNvZGVzdHJlYW0gbGVuZ3RoIGZvciA0OGZwcyovCisjZGVmaW5lIENPTVBfMjRfQ1MgMTA0MTY2NgkJLypNYXhpbXVtIHNpemUgcGVyIGNvbG9yIGNvbXBvbmVudCBmb3IgMksgJiA0SyBAIDI0ZnBzKi8KKyNkZWZpbmUgQ09NUF80OF9DUyA1MjA4MzMJCS8qTWF4aW11bSBzaXplIHBlciBjb2xvciBjb21wb25lbnQgZm9yIDJLIEAgNDhmcHMqLworCisvKiogQGRlZmdyb3VwIEoySyBKMksgLSBKUEVHLTIwMDAgY29kZXN0cmVhbSByZWFkZXIvd3JpdGVyICovCisvKkB7Ki8KKworLyoqIEBuYW1lIExvY2FsIHN0YXRpYyBmdW5jdGlvbnMgKi8KKy8qQHsqLworCisvKioKKyAqIFNldHMgdXAgdGhlIHByb2NlZHVyZXMgdG8gZG8gb24gcmVhZGluZyBoZWFkZXIuIERldmVsb3BwZXJzIHdhbnRpbmcgdG8gZXh0ZW5kIHRoZSBsaWJyYXJ5IGNhbiBhZGQgdGhlaXIgb3duIHJlYWRpbmcgcHJvY2VkdXJlcy4KKyAqLworc3RhdGljIHZvaWQgb3BqX2oya19zZXR1cF9oZWFkZXJfcmVhZGluZyAob3BqX2oya190ICpwX2oyayk7CisKKy8qKgorICogVGhlIHJlYWQgaGVhZGVyIHByb2NlZHVyZS4KKyAqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9oZWFkZXJfcHJvY2VkdXJlKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisKKy8qKgorICogVGhlIGRlZmF1bHQgZW5jb2RpbmcgdmFsaWRhdGlvbiBwcm9jZWR1cmUgd2l0aG91dCBhbnkgZXh0ZW5zaW9uLgorICoKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUganBlZzIwMDAgY29kZWMgdG8gdmFsaWRhdGUuCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgdGhlIGlucHV0IHN0cmVhbSB0byB2YWxpZGF0ZS4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYW1ldGVycyBhcmUgY29ycmVjdC4KKyAqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfZW5jb2RpbmdfdmFsaWRhdGlvbiAoICAgb3BqX2oya190ICogcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBUaGUgZGVmYXVsdCBkZWNvZGluZyB2YWxpZGF0aW9uIHByb2NlZHVyZSB3aXRob3V0IGFueSBleHRlbnNpb24uCisgKgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYyB0byB2YWxpZGF0ZS4KKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGlucHV0IHN0cmVhbSB0byB2YWxpZGF0ZS4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYW1ldGVycyBhcmUgY29ycmVjdC4KKyAqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfZGVjb2RpbmdfdmFsaWRhdGlvbiAoICAgb3BqX2oya190ICogcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBTZXRzIHVwIHRoZSB2YWxpZGF0aW9uICxpLmUuIGFkZHMgdGhlIHByb2NlZHVyZXMgdG8gbGF1Y2ggdG8gbWFrZSBzdXJlIHRoZSBjb2RlYyBwYXJhbWV0ZXJzCisgKiBhcmUgdmFsaWQuIERldmVsb3BwZXJzIHdhbnRpbmcgdG8gZXh0ZW5kIHRoZSBsaWJyYXJ5IGNhbiBhZGQgdGhlaXIgb3duIHZhbGlkYXRpb24gcHJvY2VkdXJlcy4KKyAqLworc3RhdGljIHZvaWQgb3BqX2oya19zZXR1cF9lbmNvZGluZ192YWxpZGF0aW9uIChvcGpfajJrX3QgKnBfajJrKTsKKworLyoqCisgKiBTZXRzIHVwIHRoZSB2YWxpZGF0aW9uICxpLmUuIGFkZHMgdGhlIHByb2NlZHVyZXMgdG8gbGF1Y2ggdG8gbWFrZSBzdXJlIHRoZSBjb2RlYyBwYXJhbWV0ZXJzCisgKiBhcmUgdmFsaWQuIERldmVsb3BwZXJzIHdhbnRpbmcgdG8gZXh0ZW5kIHRoZSBsaWJyYXJ5IGNhbiBhZGQgdGhlaXIgb3duIHZhbGlkYXRpb24gcHJvY2VkdXJlcy4KKyAqLworc3RhdGljIHZvaWQgb3BqX2oya19zZXR1cF9kZWNvZGluZ192YWxpZGF0aW9uIChvcGpfajJrX3QgKnBfajJrKTsKKworLyoqCisgKiBTZXRzIHVwIHRoZSB2YWxpZGF0aW9uICxpLmUuIGFkZHMgdGhlIHByb2NlZHVyZXMgdG8gbGF1Y2ggdG8gbWFrZSBzdXJlIHRoZSBjb2RlYyBwYXJhbWV0ZXJzCisgKiBhcmUgdmFsaWQuIERldmVsb3BwZXJzIHdhbnRpbmcgdG8gZXh0ZW5kIHRoZSBsaWJyYXJ5IGNhbiBhZGQgdGhlaXIgb3duIHZhbGlkYXRpb24gcHJvY2VkdXJlcy4KKyAqLworc3RhdGljIHZvaWQgb3BqX2oya19zZXR1cF9lbmRfY29tcHJlc3MgKG9wal9qMmtfdCAqcF9qMmspOworCisvKioKKyAqIFRoZSBtY3QgZW5jb2RpbmcgdmFsaWRhdGlvbiBwcm9jZWR1cmUuCisgKgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYyB0byB2YWxpZGF0ZS4KKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGlucHV0IHN0cmVhbSB0byB2YWxpZGF0ZS4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYW1ldGVycyBhcmUgY29ycmVjdC4KKyAqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfbWN0X3ZhbGlkYXRpb24gKG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBCdWlsZHMgdGhlIHRjZCBkZWNvZGVyIHRvIHVzZSB0byBkZWNvZGUgdGlsZS4KKyAqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfYnVpbGRfZGVjb2RlciAoIG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKy8qKgorICogQnVpbGRzIHRoZSB0Y2QgZW5jb2RlciB0byB1c2UgdG8gZW5jb2RlIHRpbGUuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2J1aWxkX2VuY29kZXIgKCBvcGpfajJrX3QgKiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogQ3JlYXRlcyBhIHRpbGUtY29kZXIgZGVjb2Rlci4KKyAqCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgICAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfY3JlYXRlX3RjZCggICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogRXhjdXRlcyB0aGUgZ2l2ZW4gcHJvY2VkdXJlcyBvbiB0aGUgZ2l2ZW4gY29kZWMuCisgKgorICogQHBhcmFtICAgICAgIHBfcHJvY2VkdXJlX2xpc3QgICAgICAgIHRoZSBsaXN0IG9mIHByb2NlZHVyZXMgdG8gZXhlY3V0ZQorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjIHRvIGV4ZWN1dGUgdGhlIHByb2NlZHVyZXMgb24uCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3RyZWFtIHRvIGV4ZWN1dGUgdGhlIHByb2NlZHVyZXMgb24uCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXNlciBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gICAgICB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFsbCB0aGUgcHJvY2VkdXJlcyB3ZXJlIHN1Y2Nlc3NmdWxseSBleGVjdXRlZC4KKyAqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfZXhlYyAoICBvcGpfajJrX3QgKiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfdCAqIHBfcHJvY2VkdXJlX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisKKy8qKgorICogVXBkYXRlcyB0aGUgcmF0ZXMgb2YgdGhlIHRjcC4KKyAqCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3VwZGF0ZV9yYXRlcyggICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBDb3BpZXMgdGhlIGRlY29kaW5nIHRpbGUgcGFyYW1ldGVycyBvbnRvIGFsbCB0aGUgdGlsZSBwYXJhbWV0ZXJzLgorICogQ3JlYXRlcyBhbHNvIHRoZSB0aWxlIGRlY29kZXIuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2NvcHlfZGVmYXVsdF90Y3BfYW5kX2NyZWF0ZV90Y2QgKCAgICAgICBvcGpfajJrX3QgKiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIERlc3Ryb3lzIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZWNvZGluZyBvZiBoZWFkZXJzLgorICovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19kZXN0cm95X2hlYWRlcl9tZW1vcnkgKCBvcGpfajJrX3QgKiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIHRoZSBsb29rdXAgdGFibGUgY29udGFpbmluZyBhbGwgdGhlIG1hcmtlciwgc3RhdHVzIGFuZCBhY3Rpb24sIGFuZCByZXR1cm5zIHRoZSBoYW5kbGVyIGFzc29jaWF0ZWQKKyAqIHdpdGggdGhlIG1hcmtlciB2YWx1ZS4KKyAqIEBwYXJhbSAgICAgICBwX2lkICAgICAgICAgICAgTWFya2VyIHZhbHVlIHRvIGxvb2sgdXAKKyAqCisgKiBAcmV0dXJuICAgICAgdGhlIGhhbmRsZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZC4KKyovCitzdGF0aWMgY29uc3Qgc3RydWN0IG9wal9kZWNfbWVtb3J5X21hcmtlcl9oYW5kbGVyICogb3BqX2oya19nZXRfbWFya2VyX2hhbmRsZXIgKE9QSl9VSU5UMzIgcF9pZCk7CisKKy8qKgorICogRGVzdHJveXMgYSB0aWxlIGNvZGluZyBwYXJhbWV0ZXIgc3RydWN0dXJlLgorICoKKyAqIEBwYXJhbSAgICAgICBwX3RjcCAgICAgICAgICAgdGhlIHRpbGUgY29kaW5nIHBhcmFtZXRlciB0byBkZXN0cm95LgorICovCitzdGF0aWMgdm9pZCBvcGpfajJrX3RjcF9kZXN0cm95IChvcGpfdGNwX3QgKnBfdGNwKTsKKworLyoqCisgKiBEZXN0cm95cyB0aGUgZGF0YSBpbnNpZGUgYSB0aWxlIGNvZGluZyBwYXJhbWV0ZXIgc3RydWN0dXJlLgorICoKKyAqIEBwYXJhbSAgICAgICBwX3RjcCAgICAgICAgICAgdGhlIHRpbGUgY29kaW5nIHBhcmFtZXRlciB3aGljaCBjb250YWluIGRhdGEgdG8gZGVzdHJveS4KKyAqLworc3RhdGljIHZvaWQgb3BqX2oya190Y3BfZGF0YV9kZXN0cm95IChvcGpfdGNwX3QgKnBfdGNwKTsKKworLyoqCisgKiBEZXN0cm95cyBhIGNvZGluZyBwYXJhbWV0ZXIgc3RydWN0dXJlLgorICoKKyAqIEBwYXJhbSAgICAgICBwX2NwICAgICAgICAgICAgdGhlIGNvZGluZyBwYXJhbWV0ZXIgdG8gZGVzdHJveS4KKyAqLworc3RhdGljIHZvaWQgb3BqX2oya19jcF9kZXN0cm95IChvcGpfY3BfdCAqcF9jcCk7CisKKy8qKgorICogV3JpdGVzIGEgU1BDb2Qgb3IgU1BDb2MgZWxlbWVudCwgaS5lLiB0aGUgY29kaW5nIHN0eWxlIG9mIGEgZ2l2ZW4gY29tcG9uZW50IG9mIGEgdGlsZS4KKyAqCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX3RpbGVfbm8gICAgICAgRklYTUUgRE9DCisgKiBAcGFyYW0gICAgICAgcF9jb21wX25vICAgICAgIHRoZSBjb21wb25lbnQgbnVtYmVyIHRvIG91dHB1dC4KKyAqIEBwYXJhbSAgICAgICBwX2RhdGEgICAgICAgICAgRklYTUUgRE9DCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIEZJWE1FIERPQworICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gRklYTUUgRE9DCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfd3JpdGVfU1BDb2RfU1BDb2MoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbXBfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogR2V0cyB0aGUgc2l6ZSB0YWtlbiBieSB3cml0aW5nIGEgU1BDb2Qgb3IgU1BDb2MgZm9yIHRoZSBnaXZlbiB0aWxlIGFuZCBjb21wb25lbnQuCisgKgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF90aWxlX25vICAgICAgICAgICAgICAgdGhlIHRpbGUgaW5kZXguCisgKiBAcGFyYW0gICAgICAgcF9jb21wX25vICAgICAgICAgICAgICAgdGhlIGNvbXBvbmVudCBiZWluZyBvdXRwdXR0ZWQuCisgKgorICogQHJldHVybiAgICAgIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGFrZW4gYnkgdGhlIFNQQ29kIGVsZW1lbnQuCisgKi8KK3N0YXRpYyBPUEpfVUlOVDMyIG9wal9qMmtfZ2V0X1NQQ29kX1NQQ29jX3NpemUgKG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfY29tcF9ubyApOworCisvKioKKyAqIFJlYWRzIGEgU1BDb2Qgb3IgU1BDb2MgZWxlbWVudCwgaS5lLiB0aGUgY29kaW5nIHN0eWxlIG9mIGEgZ2l2ZW4gY29tcG9uZW50IG9mIGEgdGlsZS4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIGNvbXBubyAgICAgICAgICBGSVhNRSBET0MKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBDT00gYm94LgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIENPTSBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9TUENvZF9TUENvYyggICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGNvbXBubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogR2V0cyB0aGUgc2l6ZSB0YWtlbiBieSB3cml0aW5nIFNRY2Qgb3IgU1FjYyBlbGVtZW50LCBpLmUuIHRoZSBxdWFudGl6YXRpb24gdmFsdWVzIG9mIGEgYmFuZCBpbiB0aGUgUUNEIG9yIFFDQy4KKyAqCisgKiBAcGFyYW0gICAgICAgcF90aWxlX25vICAgICAgICAgICAgICAgdGhlIHRpbGUgaW5kZXguCisgKiBAcGFyYW0gICAgICAgcF9jb21wX25vICAgICAgICAgICAgICAgdGhlIGNvbXBvbmVudCBiZWluZyBvdXRwdXR0ZWQuCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIEoySyBjb2RlYy4KKyAqCisgKiBAcmV0dXJuICAgICAgdGhlIG51bWJlciBvZiBieXRlcyB0YWtlbiBieSB0aGUgU1BDb2QgZWxlbWVudC4KKyAqLworc3RhdGljIE9QSl9VSU5UMzIgb3BqX2oya19nZXRfU1FjZF9TUWNjX3NpemUgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbXBfbm8gKTsKKworLyoqCisgKiBXcml0ZXMgYSBTUWNkIG9yIFNRY2MgZWxlbWVudCwgaS5lLiB0aGUgcXVhbnRpemF0aW9uIHZhbHVlcyBvZiBhIGJhbmQgaW4gdGhlIFFDRCBvciBRQ0MuCisgKgorICogQHBhcmFtICAgICAgIHBfdGlsZV9ubyAgICAgICAgICAgICAgIHRoZSB0aWxlIHRvIG91dHB1dC4KKyAqIEBwYXJhbSAgICAgICBwX2NvbXBfbm8gICAgICAgICAgICAgICB0aGUgY29tcG9uZW50IG51bWJlciB0byBvdXRwdXQuCisgKiBAcGFyYW0gICAgICAgcF9kYXRhICAgICAgICAgICAgICAgICAgdGhlIGRhdGEgYnVmZmVyLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICBwb2ludGVyIHRvIHRoZSBzaXplIG9mIHRoZSBkYXRhIGJ1ZmZlciwgaXQgaXMgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24uCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3dyaXRlX1NRY2RfU1FjYyhvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9jb21wX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisKKy8qKgorICogVXBkYXRlcyB0aGUgVGlsZSBMZW5ndGggTWFya2VyLgorICovCitzdGF0aWMgdm9pZCBvcGpfajJrX3VwZGF0ZV90bG0gKCBvcGpfajJrX3QgKiBwX2oyaywgT1BKX1VJTlQzMiBwX3RpbGVfcGFydF9zaXplKTsKKworLyoqCisgKiBSZWFkcyBhIFNRY2Qgb3IgU1FjYyBlbGVtZW50LCBpLmUuIHRoZSBxdWFudGl6YXRpb24gdmFsdWVzIG9mIGEgYmFuZCBpbiB0aGUgUUNEIG9yIFFDQy4KKyAqCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBjb21wbm8gICAgICAgICAgdGhlIGNvbXBvbmVudCBudW1iZXIgdG8gb3V0cHV0LgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBidWZmZXIuCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHBvaW50ZXIgdG8gdGhlIHNpemUgb2YgdGhlIGRhdGEgYnVmZmVyLCBpdCBpcyBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbi4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyAqCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9TUWNkX1NRY2MoIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBjb21wbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIENvcGllcyB0aGUgdGlsZSBjb21wb25lbnQgcGFyYW1ldGVycyBvZiBhbGwgdGhlIGNvbXBvbmVudCBmcm9tIHRoZSBmaXJzdCB0aWxlIGNvbXBvbmVudC4KKyAqCisgKiBAcGFyYW0gICAgICAgICAgICAgICBwX2oyayAgICAgICAgICAgdGhlIEoyayBjb2RlYy4KKyAqLworc3RhdGljIHZvaWQgb3BqX2oya19jb3B5X3RpbGVfY29tcG9uZW50X3BhcmFtZXRlcnMoIG9wal9qMmtfdCAqcF9qMmsgKTsKKworLyoqCisgKiBDb3BpZXMgdGhlIHRpbGUgcXVhbnRpemF0aW9uIHBhcmFtZXRlcnMgb2YgYWxsIHRoZSBjb21wb25lbnQgZnJvbSB0aGUgZmlyc3QgdGlsZSBjb21wb25lbnQuCisgKgorICogQHBhcmFtICAgICAgICAgICAgICAgcF9qMmsgICAgICAgICAgIHRoZSBKMmsgY29kZWMuCisgKi8KK3N0YXRpYyB2b2lkIG9wal9qMmtfY29weV90aWxlX3F1YW50aXphdGlvbl9wYXJhbWV0ZXJzKCBvcGpfajJrX3QgKnBfajJrICk7CisKKy8qKgorICogUmVhZHMgdGhlIHRpbGVzLgorICovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19kZWNvZGVfdGlsZXMgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcHJlX3dyaXRlX3RpbGUgKCBvcGpfajJrX3QgKiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3VwZGF0ZV9pbWFnZV9kYXRhIChvcGpfdGNkX3QgKiBwX3RjZCwgT1BKX0JZVEUgKiBwX2RhdGEsIG9wal9pbWFnZV90KiBwX291dHB1dF9pbWFnZSk7CisKK3N0YXRpYyB2b2lkIG9wal9qMmtfZ2V0X3RpbGVfZGF0YSAob3BqX3RjZF90ICogcF90Y2QsIE9QSl9CWVRFICogcF9kYXRhKTsKKworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcG9zdF93cml0ZV90aWxlIChvcGpfajJrX3QgKiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogU2V0cyB1cCB0aGUgcHJvY2VkdXJlcyB0byBkbyBvbiB3cml0aW5nIGhlYWRlci4KKyAqIERldmVsb3BlcnMgd2FudGluZyB0byBleHRlbmQgdGhlIGxpYnJhcnkgY2FuIGFkZCB0aGVpciBvd24gd3JpdGluZyBwcm9jZWR1cmVzLgorICovCitzdGF0aWMgdm9pZCBvcGpfajJrX3NldHVwX2hlYWRlcl93cml0aW5nIChvcGpfajJrX3QgKnBfajJrKTsKKworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfd3JpdGVfZmlyc3RfdGlsZV9wYXJ0KCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RvdGFsX2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlciApOworCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya193cml0ZV9hbGxfdGlsZV9wYXJ0cyggICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdG90YWxfZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogR2V0cyB0aGUgb2Zmc2V0IG9mIHRoZSBoZWFkZXIuCisgKgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19nZXRfZW5kX2hlYWRlciggb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2FsbG9jYXRlX3RpbGVfZWxlbWVudF9jc3RyX2luZGV4KG9wal9qMmtfdCAqcF9qMmspOworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qKgorICogV3JpdGVzIHRoZSBTT0MgbWFya2VyIChTdGFydCBPZiBDb2Rlc3RyZWFtKQorICoKKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfd3JpdGVfc29jKCAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgU09DIG1hcmtlciAoU3RhcnQgb2YgQ29kZXN0cmVhbSkKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgIFhYWCBuZWVkcyBkYXRhCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9zb2MoICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFdyaXRlcyB0aGUgU0laIG1hcmtlciAoaW1hZ2UgYW5kIHRpbGUgc2l6ZSkKKyAqCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3dyaXRlX3NpeiggICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBSZWFkcyBhIFNJWiBtYXJrZXIgKGltYWdlIGFuZCB0aWxlIHNpemUpCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgIHRoZSBqcGVnMjAwMCBmaWxlIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFNJWiBib3guCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgU0laIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX3NpeihvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworLyoqCisgKiBXcml0ZXMgdGhlIENPTSBtYXJrZXIgKGNvbW1lbnQpCisgKgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya193cml0ZV9jb20oICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgQ09NIG1hcmtlciAoY29tbWVudHMpCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgIHRoZSBqcGVnMjAwMCBmaWxlIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIENPTSBib3guCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgQ09NIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX2NvbSAoICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisvKioKKyAqIFdyaXRlcyB0aGUgQ09EIG1hcmtlciAoQ29kaW5nIHN0eWxlIGRlZmF1bHQpCisgKgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya193cml0ZV9jb2QoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgQ09EIG1hcmtlciAoQ29kaW5nIFN0eWtlIGRlZmF1bHRzKQorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIENPRCBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIENPRCBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX2NvZCAoICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworI2lmIDAKKy8qKgorICogV3JpdGVzIHRoZSBDT0MgbWFya2VyIChDb2Rpbmcgc3R5bGUgY29tcG9uZW50KQorICoKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9jb21wX25vICAgdGhlIGluZGV4IG9mIHRoZSBjb21wb25lbnQgdG8gb3V0cHV0LgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3dyaXRlX2NvYyggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbXBfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworI2VuZGlmCisKKyNpZiAwCisvKioKKyAqIFdyaXRlcyB0aGUgQ09DIG1hcmtlciAoQ29kaW5nIHN0eWxlIGNvbXBvbmVudCkKKyAqCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfY29tcF9ubyAgICAgICAgICAgICAgIHRoZSBpbmRleCBvZiB0aGUgY29tcG9uZW50IHRvIG91dHB1dC4KKyAqIEBwYXJhbSAgICAgICBwX2RhdGEgICAgICAgICAgRklYTUUgRE9DCisgKiBAcGFyYW0gICAgICAgcF9kYXRhX3dyaXR0ZW4gIEZJWE1FIERPQworICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIHZvaWQgb3BqX2oya193cml0ZV9jb2NfaW5fbWVtb3J5KG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbXBfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworI2VuZGlmCisKKy8qKgorICogR2V0cyB0aGUgbWF4aW11bSBzaXplIHRha2VuIGJ5IGEgY29jLgorICoKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgIHRoZSBqcGVnMjAwMCBjb2RlYyB0byB1c2UuCisgKi8KK3N0YXRpYyBPUEpfVUlOVDMyIG9wal9qMmtfZ2V0X21heF9jb2Nfc2l6ZShvcGpfajJrX3QgKnBfajJrKTsKKworLyoqCisgKiBSZWFkcyBhIENPQyBtYXJrZXIgKENvZGluZyBTdHlsZSBDb21wb25lbnQpCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfZGF0YSAgIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgQ09DIGJveC4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgQ09DIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3JlYWRfY29jICggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBXcml0ZXMgdGhlIFFDRCBtYXJrZXIgKHF1YW50aXphdGlvbiBkZWZhdWx0KQorICoKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfd3JpdGVfcWNkKCAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBSZWFkcyBhIFFDRCBtYXJrZXIgKFF1YW50aXphdGlvbiBkZWZhdWx0cykKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBRQ0QgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBRQ0QgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9xY2QgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworI2lmIDAKKy8qKgorICogV3JpdGVzIHRoZSBRQ0MgbWFya2VyIChxdWFudGl6YXRpb24gY29tcG9uZW50KQorICoKKyAqIEBwYXJhbSAgICAgICBwX2NvbXBfbm8gICAgICAgdGhlIGluZGV4IG9mIHRoZSBjb21wb25lbnQgdG8gb3V0cHV0LgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya193cml0ZV9xY2MoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9jb21wX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisjZW5kaWYKKworI2lmIDAKKy8qKgorICogV3JpdGVzIHRoZSBRQ0MgbWFya2VyIChxdWFudGl6YXRpb24gY29tcG9uZW50KQorICoKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfY29tcF9ubyAgICAgICB0aGUgaW5kZXggb2YgdGhlIGNvbXBvbmVudCB0byBvdXRwdXQuCisgKiBAcGFyYW0gICAgICAgcF9kYXRhICAgICAgICAgIEZJWE1FIERPQworICogQHBhcmFtICAgICAgIHBfZGF0YV93cml0dGVuICB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIHZvaWQgb3BqX2oya193cml0ZV9xY2NfaW5fbWVtb3J5KG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbXBfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworI2VuZGlmCisKKy8qKgorICogR2V0cyB0aGUgbWF4aW11bSBzaXplIHRha2VuIGJ5IGEgcWNjLgorICovCitzdGF0aWMgT1BKX1VJTlQzMiBvcGpfajJrX2dldF9tYXhfcWNjX3NpemUgKG9wal9qMmtfdCAqcF9qMmspOworCisvKioKKyAqIFJlYWRzIGEgUUNDIG1hcmtlciAoUXVhbnRpemF0aW9uIGNvbXBvbmVudCkKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBRQ0MgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBRQ0MgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9xY2MoICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisvKioKKyAqIFdyaXRlcyB0aGUgUE9DIG1hcmtlciAoUHJvZ3Jlc3Npb24gT3JkZXIgQ2hhbmdlKQorICoKKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfd3JpdGVfcG9jKCAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKy8qKgorICogV3JpdGVzIHRoZSBQT0MgbWFya2VyIChQcm9ncmVzc2lvbiBPcmRlciBDaGFuZ2UpCisgKgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2RhdGEgICAgICAgICBGSVhNRSBET0MKKyAqIEBwYXJhbSAgICAgICBwX2RhdGFfd3JpdHRlbiB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyAqLworc3RhdGljIHZvaWQgb3BqX2oya193cml0ZV9wb2NfaW5fbWVtb3J5KG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworLyoqCisgKiBHZXRzIHRoZSBtYXhpbXVtIHNpemUgdGFrZW4gYnkgdGhlIHdyaXRpbmcgb2YgYSBQT0MuCisgKi8KK3N0YXRpYyBPUEpfVUlOVDMyIG9wal9qMmtfZ2V0X21heF9wb2Nfc2l6ZShvcGpfajJrX3QgKnBfajJrKTsKKworLyoqCisgKiBSZWFkcyBhIFBPQyBtYXJrZXIgKFByb2dyZXNzaW9uIE9yZGVyIENoYW5nZSkKKyAqCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfZGF0YSAgIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgUE9DIGJveC4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgUE9DIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3JlYWRfcG9jICggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBHZXRzIHRoZSBtYXhpbXVtIHNpemUgdGFrZW4gYnkgdGhlIHRvYyBoZWFkZXJzIG9mIGFsbCB0aGUgdGlsZSBwYXJ0cyBvZiBhbnkgZ2l2ZW4gdGlsZS4KKyAqLworc3RhdGljIE9QSl9VSU5UMzIgb3BqX2oya19nZXRfbWF4X3RvY19zaXplIChvcGpfajJrX3QgKnBfajJrKTsKKworLyoqCisgKiBHZXRzIHRoZSBtYXhpbXVtIHNpemUgdGFrZW4gYnkgdGhlIGhlYWRlcnMgb2YgdGhlIFNPVC4KKyAqCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICB0aGUganBlZzIwMDAgY29kZWMgdG8gdXNlLgorICovCitzdGF0aWMgT1BKX1VJTlQzMiBvcGpfajJrX2dldF9zcGVjaWZpY19oZWFkZXJfc2l6ZXMob3BqX2oya190ICpwX2oyayk7CisKKy8qKgorICogUmVhZHMgYSBDUkcgbWFya2VyIChDb21wb25lbnQgcmVnaXN0cmF0aW9uKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBUTE0gYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBUTE0gbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9jcmcgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworLyoqCisgKiBSZWFkcyBhIFRMTSBtYXJrZXIgKFRpbGUgTGVuZ3RoIE1hcmtlcikKKyAqCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfZGF0YSAgIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgVExNIGJveC4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgVExNIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3JlYWRfdGxtICggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpOworCisvKioKKyAqIFdyaXRlcyB0aGUgdXBkYXRlZCB0bG0uCisgKgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya193cml0ZV91cGRhdGVkX3RsbSggICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgUExNIG1hcmtlciAoUGFja2V0IGxlbmd0aCwgbWFpbiBoZWFkZXIgbWFya2VyKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBUTE0gYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBUTE0gbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9wbG0gKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisvKioKKyAqIFJlYWRzIGEgUExUIG1hcmtlciAoUGFja2V0IGxlbmd0aCwgdGlsZS1wYXJ0IGhlYWRlcikKKyAqCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfZGF0YSAgIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgUExUIGJveC4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgUExUIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3JlYWRfcGx0ICggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworI2lmIDAKKy8qKgorICogUmVhZHMgYSBQUE0gbWFya2VyIChQYWNrZWQgcGFja2V0IGhlYWRlcnMsIG1haW4gaGVhZGVyKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQT0MgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQT0MgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIGoya19yZWFkX3BwbV92MiAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworI2VuZGlmCisKK3N0YXRpYyBPUEpfQk9PTCBqMmtfcmVhZF9wcG1fdjMgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgUFBUIG1hcmtlciAoUGFja2VkIHBhY2tldCBoZWFkZXJzLCB0aWxlLXBhcnQgaGVhZGVyKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQUFQgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQUFQgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9wcHQgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworLyoqCisgKiBXcml0ZXMgdGhlIFRMTSBtYXJrZXIgKFRpbGUgTGVuZ3RoIE1hcmtlcikKKyAqCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3dyaXRlX3RsbSggICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogV3JpdGVzIHRoZSBTT1QgbWFya2VyIChTdGFydCBvZiB0aWxlLXBhcnQpCisgKgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfZGF0YSAgICAgICAgICAgRklYTUUgRE9DCisgKiBAcGFyYW0gICAgICAgcF9kYXRhX3dyaXR0ZW4gICBGSVhNRSBET0MKKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfd3JpdGVfc290KCAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgUFBUIG1hcmtlciAoUGFja2VkIHBhY2tldCBoZWFkZXJzLCB0aWxlLXBhcnQgaGVhZGVyKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQUFQgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQUFQgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9zb3QgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworLyoqCisgKiBXcml0ZXMgdGhlIFNPRCBtYXJrZXIgKFN0YXJ0IG9mIGRhdGEpCisgKgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfdGlsZV9jb2RlciAgICAgICAgRklYTUUgRE9DCisgKiBAcGFyYW0gICAgICAgcF9kYXRhICAgICAgICAgICAgICBGSVhNRSBET0MKKyAqIEBwYXJhbSAgICAgICBwX2RhdGFfd3JpdHRlbiAgICAgIEZJWE1FIERPQworICogQHBhcmFtICAgICAgIHBfdG90YWxfZGF0YV9zaXplICAgRklYTUUgRE9DCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3dyaXRlX3NvZCggICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90ICogcF90aWxlX2NvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9kYXRhX3dyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdG90YWxfZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogUmVhZHMgYSBTT0QgbWFya2VyIChTdGFydCBPZiBEYXRhKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgRklYTUUgRE9DCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX3NvZCggICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKK3ZvaWQgb3BqX2oya191cGRhdGVfdGxtIChvcGpfajJrX3QgKiBwX2oyaywgT1BKX1VJTlQzMiBwX3RpbGVfcGFydF9zaXplICkKK3sKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX3RsbV9zb3Rfb2Zmc2V0c19jdXJyZW50LHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIsMSk7ICAgICAgICAgICAgLyogUFNPVCAqLworICAgICAgICArK3BfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX3RsbV9zb3Rfb2Zmc2V0c19jdXJyZW50OworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV90bG1fc290X29mZnNldHNfY3VycmVudCxwX3RpbGVfcGFydF9zaXplLDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQU09UICovCisgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX3RsbV9zb3Rfb2Zmc2V0c19jdXJyZW50ICs9IDQ7Cit9CisKKy8qKgorICogV3JpdGVzIHRoZSBSR04gbWFya2VyIChSZWdpb24gT2YgSW50ZXJlc3QpCisgKgorICogQHBhcmFtICAgICAgIHBfdGlsZV9ubyAgICAgICAgICAgICAgIHRoZSB0aWxlIHRvIG91dHB1dAorICogQHBhcmFtICAgICAgIHBfY29tcF9ubyAgICAgICAgICAgICAgIHRoZSBjb21wb25lbnQgdG8gb3V0cHV0CisgKiBAcGFyYW0gICAgICAgbmJfY29tcHMgICAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiBjb21wb25lbnRzCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3dyaXRlX3JnbiggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9jb21wX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBuYl9jb21wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgUkdOIG1hcmtlciAoUmVnaW9uIE9mIEludGVyZXN0KQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQT0MgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQT0MgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9yZ24gKG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBXcml0ZXMgdGhlIEVPQyBtYXJrZXIgKEVuZCBvZiBDb2Rlc3RyZWFtKQorICoKKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgICAgICAgICB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfd3JpdGVfZW9jKCAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworI2lmIDAKKy8qKgorICogUmVhZHMgYSBFT0MgbWFya2VyIChFbmQgT2YgQ29kZXN0cmVhbSkKKyAqCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgIEZJWE1FIERPQworICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9lb2MgKCAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworI2VuZGlmCisKKy8qKgorICogV3JpdGVzIHRoZSBDQkQtTUNULU1DQy1NQ08gbWFya2VycyAoTXVsdGkgY29tcG9uZW50cyB0cmFuc2Zvcm0pCisgKgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya193cml0ZV9tY3RfZGF0YV9ncm91cCggICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogSW5pdHMgdGhlIEluZm8KKyAqCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2luaXRfaW5mbyggICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorQWRkIG1haW4gaGVhZGVyIG1hcmtlciBpbmZvcm1hdGlvbgorQHBhcmFtIGNzdHJfaW5kZXggICAgQ29kZXN0cmVhbSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUKK0BwYXJhbSB0eXBlICAgICAgICAgbWFya2VyIHR5cGUKK0BwYXJhbSBwb3MgICAgICAgICAgYnl0ZSBvZmZzZXQgb2YgbWFya2VyIHNlZ21lbnQKK0BwYXJhbSBsZW4gICAgICAgICAgbGVuZ3RoIG9mIG1hcmtlciBzZWdtZW50CisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2FkZF9taG1hcmtlcihvcGpfY29kZXN0cmVhbV9pbmRleF90ICpjc3RyX2luZGV4LCBPUEpfVUlOVDMyIHR5cGUsIE9QSl9PRkZfVCBwb3MsIE9QSl9VSU5UMzIgbGVuKSA7CisvKioKK0FkZCB0aWxlIGhlYWRlciBtYXJrZXIgaW5mb3JtYXRpb24KK0BwYXJhbSB0aWxlbm8gICAgICAgdGlsZSBpbmRleCBudW1iZXIKK0BwYXJhbSBjc3RyX2luZGV4ICAgQ29kZXN0cmVhbSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUKK0BwYXJhbSB0eXBlICAgICAgICAgbWFya2VyIHR5cGUKK0BwYXJhbSBwb3MgICAgICAgICAgYnl0ZSBvZmZzZXQgb2YgbWFya2VyIHNlZ21lbnQKK0BwYXJhbSBsZW4gICAgICAgICAgbGVuZ3RoIG9mIG1hcmtlciBzZWdtZW50CisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2FkZF90bG1hcmtlcihPUEpfVUlOVDMyIHRpbGVubywgb3BqX2NvZGVzdHJlYW1faW5kZXhfdCAqY3N0cl9pbmRleCwgT1BKX1VJTlQzMiB0eXBlLCBPUEpfT0ZGX1QgcG9zLCBPUEpfVUlOVDMyIGxlbik7CisKKy8qKgorICogUmVhZHMgYW4gdW5rbm93biBtYXJrZXIKKyAqCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgIHRoZSBzdHJlYW0gb2JqZWN0IHRvIHJlYWQgZnJvbS4KKyAqIEBwYXJhbSAgICAgICBvdXRwdXRfbWFya2VyICAgICAgICAgICBGSVhNRSBET0MKKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gICAgICB0cnVlICAgICAgICAgICAgICAgICAgICBpZiB0aGUgbWFya2VyIGNvdWxkIGJlIGRlZHVjZWQuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF91bmsoIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKm91dHB1dF9tYXJrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogV3JpdGVzIHRoZSBNQ1QgbWFya2VyIChNdWx0aXBsZSBDb21wb25lbnQgVHJhbnNmb3JtKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfbWN0X3JlY29yZCAgICBGSVhNRSBET0MKKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3dyaXRlX21jdF9yZWNvcmQoICAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfbWN0X2RhdGFfdCAqIHBfbWN0X3JlY29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBSZWFkcyBhIE1DVCBtYXJrZXIgKE11bHRpcGxlIENvbXBvbmVudCBUcmFuc2Zvcm0pCisgKgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIE1DVCBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIE1DVCBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX21jdCAoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFdyaXRlcyB0aGUgTUNDIG1hcmtlciAoTXVsdGlwbGUgQ29tcG9uZW50IENvbGxlY3Rpb24pCisgKgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21jY19yZWNvcmQgICAgICAgICAgICBGSVhNRSBET0MKKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgICAgICAgICB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya193cml0ZV9tY2NfcmVjb3JkKCAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zaW1wbGVfbWNjX2RlY29ycmVsYXRpb25fZGF0YV90ICogcF9tY2NfcmVjb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgTUNDIG1hcmtlciAoTXVsdGlwbGUgQ29tcG9uZW50IENvbGxlY3Rpb24pCisgKgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIE1DQyBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIE1DQyBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX21jYyAoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFdyaXRlcyB0aGUgTUNPIG1hcmtlciAoTXVsdGlwbGUgY29tcG9uZW50IHRyYW5zZm9ybWF0aW9uIG9yZGVyaW5nKQorICoKKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfd3JpdGVfbWNvKCAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBSZWFkcyBhIE1DTyBtYXJrZXIgKE11bHRpcGxlIENvbXBvbmVudCBUcmFuc2Zvcm0gT3JkZXJpbmcpCisgKgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIE1DTyBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIE1DTyBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX21jbyAoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19hZGRfbWN0KG9wal90Y3BfdCAqIHBfdGNwLCBvcGpfaW1hZ2VfdCAqIHBfaW1hZ2UsIE9QSl9VSU5UMzIgcF9pbmRleCk7CisKK3N0YXRpYyB2b2lkICBvcGpfajJrX3JlYWRfaW50MTZfdG9fZmxvYXQgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKTsKK3N0YXRpYyB2b2lkICBvcGpfajJrX3JlYWRfaW50MzJfdG9fZmxvYXQgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKTsKK3N0YXRpYyB2b2lkICBvcGpfajJrX3JlYWRfZmxvYXQzMl90b19mbG9hdCAoY29uc3Qgdm9pZCAqIHBfc3JjX2RhdGEsIHZvaWQgKiBwX2Rlc3RfZGF0YSwgT1BKX1VJTlQzMiBwX25iX2VsZW0pOworc3RhdGljIHZvaWQgIG9wal9qMmtfcmVhZF9mbG9hdDY0X3RvX2Zsb2F0IChjb25zdCB2b2lkICogcF9zcmNfZGF0YSwgdm9pZCAqIHBfZGVzdF9kYXRhLCBPUEpfVUlOVDMyIHBfbmJfZWxlbSk7CisKK3N0YXRpYyB2b2lkICBvcGpfajJrX3JlYWRfaW50MTZfdG9faW50MzIgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKTsKK3N0YXRpYyB2b2lkICBvcGpfajJrX3JlYWRfaW50MzJfdG9faW50MzIgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKTsKK3N0YXRpYyB2b2lkICBvcGpfajJrX3JlYWRfZmxvYXQzMl90b19pbnQzMiAoY29uc3Qgdm9pZCAqIHBfc3JjX2RhdGEsIHZvaWQgKiBwX2Rlc3RfZGF0YSwgT1BKX1VJTlQzMiBwX25iX2VsZW0pOworc3RhdGljIHZvaWQgIG9wal9qMmtfcmVhZF9mbG9hdDY0X3RvX2ludDMyIChjb25zdCB2b2lkICogcF9zcmNfZGF0YSwgdm9pZCAqIHBfZGVzdF9kYXRhLCBPUEpfVUlOVDMyIHBfbmJfZWxlbSk7CisKK3N0YXRpYyB2b2lkICBvcGpfajJrX3dyaXRlX2Zsb2F0X3RvX2ludDE2IChjb25zdCB2b2lkICogcF9zcmNfZGF0YSwgdm9pZCAqIHBfZGVzdF9kYXRhLCBPUEpfVUlOVDMyIHBfbmJfZWxlbSk7CitzdGF0aWMgdm9pZCAgb3BqX2oya193cml0ZV9mbG9hdF90b19pbnQzMiAoY29uc3Qgdm9pZCAqIHBfc3JjX2RhdGEsIHZvaWQgKiBwX2Rlc3RfZGF0YSwgT1BKX1VJTlQzMiBwX25iX2VsZW0pOworc3RhdGljIHZvaWQgIG9wal9qMmtfd3JpdGVfZmxvYXRfdG9fZmxvYXQgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKTsKK3N0YXRpYyB2b2lkICBvcGpfajJrX3dyaXRlX2Zsb2F0X3RvX2Zsb2F0NjQgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKTsKKworLyoqCisgKiBFbmRzIHRoZSBlbmNvZGluZywgaS5lLiBmcmVlcyBtZW1vcnkuCisgKgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19lbmRfZW5jb2RpbmcoICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogV3JpdGVzIHRoZSBDQkQgbWFya2VyIChDb21wb25lbnQgYml0IGRlcHRoIGRlZmluaXRpb24pCisgKgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgICAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya193cml0ZV9jYmQoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogUmVhZHMgYSBDQkQgbWFya2VyIChDb21wb25lbnQgYml0IGRlcHRoIGRlZmluaXRpb24pCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfZGF0YSAgIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgQ0JEIGJveC4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgQ0JEIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3JlYWRfY2JkICggICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworI2lmIDAKKy8qKgorICogV3JpdGVzIENPQyBtYXJrZXIgZm9yIGVhY2ggY29tcG9uZW50LgorICoKKyAqIEBwYXJhbSAgICAgICBwX3N0cmVhbSAgICAgICAgICAgICAgICB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgSjJLIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfd3JpdGVfYWxsX2NvYyggb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworI2VuZGlmCisKKyNpZiAwCisvKioKKyAqIFdyaXRlcyBRQ0MgbWFya2VyIGZvciBlYWNoIGNvbXBvbmVudC4KKyAqCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3dyaXRlX2FsbF9xY2MoIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKyNlbmRpZgorCisvKioKKyAqIFdyaXRlcyByZWdpb25zIG9mIGludGVyZXN0cy4KKyAqCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3dyaXRlX3JlZ2lvbnMoICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogV3JpdGVzIEVQQyA/Pz8/CisgKgorICogQHBhcmFtICAgICAgIHBfc3RyZWFtICAgICAgICAgICAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICBKMksgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya193cml0ZV9lcGMoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBDaGVja3MgdGhlIHByb2dyZXNzaW9uIG9yZGVyIGNoYW5nZXMgdmFsdWVzLiBUZWxscyBvZiB0aGUgcG9jIGdpdmVuIGFzIGlucHV0IGFyZSB2YWxpZC4KKyAqIEEgbmljZSBtZXNzYWdlIGlzIG91dHB1dHRlZCBhdCBlcnJvcnMuCisgKgorICogQHBhcmFtICAgICAgIHBfcG9jcyAgICAgICAgICAgICAgICAgIHRoZSBwcm9ncmVzc2lvbiBvcmRlciBjaGFuZ2VzLgorICogQHBhcmFtICAgICAgIHBfbmJfcG9jcyAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgcHJvZ3Jlc3Npb24gb3JkZXIgY2hhbmdlcy4KKyAqIEBwYXJhbSAgICAgICBwX25iX3Jlc29sdXRpb25zICAgICAgICB0aGUgbnVtYmVyIG9mIHJlc29sdXRpb25zLgorICogQHBhcmFtICAgICAgIG51bWNvbXBzICAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cworICogQHBhcmFtICAgICAgIG51bWxheWVycyAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgbGF5ZXJzLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKgorICogQHJldHVybiAgICAgIHRydWUgaWYgdGhlIHBvY3MgYXJlIHZhbGlkLgorICovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19jaGVja19wb2NfdmFsKCAgY29uc3Qgb3BqX3BvY190ICpwX3BvY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX25iX3BvY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX25iX3Jlc29sdXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbnVtY29tcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBudW1sYXllcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworLyoqCisgKiBHZXRzIHRoZSBudW1iZXIgb2YgdGlsZSBwYXJ0cyB1c2VkIGZvciB0aGUgZ2l2ZW4gY2hhbmdlIG9mIHByb2dyZXNzaW9uIChpZiBhbnkpIGFuZCB0aGUgZ2l2ZW4gdGlsZS4KKyAqCisgKiBAcGFyYW0gICAgICAgICAgICAgICBjcCAgICAgICAgICAgICAgICAgICAgICB0aGUgY29kaW5nIHBhcmFtZXRlcnMuCisgKiBAcGFyYW0gICAgICAgICAgICAgICBwaW5vICAgICAgICAgICAgdGhlIG9mZnNldCBvZiB0aGUgZ2l2ZW4gcG9jIChpLmUuIGl0cyBwb3NpdGlvbiBpbiB0aGUgY29kaW5nIHBhcmFtZXRlcikuCisgKiBAcGFyYW0gICAgICAgICAgICAgICB0aWxlbm8gICAgICAgICAgdGhlIGdpdmVuIHRpbGUuCisgKgorICogQHJldHVybiAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiB0aWxlIHBhcnRzLgorICovCitzdGF0aWMgT1BKX1VJTlQzMiBvcGpfajJrX2dldF9udW1fdHAoIG9wal9jcF90ICpjcCwgT1BKX1VJTlQzMiBwaW5vLCBPUEpfVUlOVDMyIHRpbGVubyk7CisKKy8qKgorICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHRpbGUgcGFydHMgbmVlZGVkIGJ5IHRoZSBlbmNvZGVyIHRvCisgKiBlbmNvZGUgc3VjaCBhbiBpbWFnZS4gSWYgbm90IGVub3VnaCBtZW1vcnkgaXMgYXZhaWxhYmxlLCB0aGVuIHRoZSBmdW5jdGlvbiByZXR1cm4gZmFsc2UuCisgKgorICogQHBhcmFtICAgICAgIHBfbmJfdGlsZXMgICAgICBwb2ludGVyIHRoYXQgd2lsbCBob2xkIHRoZSBudW1iZXIgb2YgdGlsZSBwYXJ0cy4KKyAqIEBwYXJhbSAgICAgICBjcCAgICAgICAgICAgICAgICAgICAgICB0aGUgY29kaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBpbWFnZS4KKyAqIEBwYXJhbSAgICAgICBpbWFnZSAgICAgICAgICAgdGhlIGltYWdlIHRvIGVuY29kZS4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUgcF9qMmsgZW5jb2Rlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyAqCisgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGZ1bmN0aW9uIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBlbHNlLgorICovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19jYWxjdWxhdGVfdHAoICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfY3BfdCAqY3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbmJfdGlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QgKmltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisKK3N0YXRpYyB2b2lkIG9wal9qMmtfZHVtcF9NSF9pbmZvKG9wal9qMmtfdCogcF9qMmssIEZJTEUqIG91dF9zdHJlYW0pOworCitzdGF0aWMgdm9pZCBvcGpfajJrX2R1bXBfTUhfaW5kZXgob3BqX2oya190KiBwX2oyaywgRklMRSogb3V0X3N0cmVhbSk7CisKK3N0YXRpYyBvcGpfY29kZXN0cmVhbV9pbmRleF90KiBvcGpfajJrX2NyZWF0ZV9jc3RyX2luZGV4KHZvaWQpOworCitzdGF0aWMgT1BKX0ZMT0FUMzIgb3BqX2oya19nZXRfdHBfc3RyaWRlIChvcGpfdGNwX3QgKiBwX3RjcCk7CisKK3N0YXRpYyBPUEpfRkxPQVQzMiBvcGpfajJrX2dldF9kZWZhdWx0X3N0cmlkZSAob3BqX3RjcF90ICogcF90Y3ApOworCitzdGF0aWMgaW50IG9wal9qMmtfaW5pdGlhbGlzZV80S19wb2Mob3BqX3BvY190ICpQT0MsIGludCBudW1yZXMpOworCitzdGF0aWMgdm9pZCBvcGpfajJrX3NldF9jaW5lbWFfcGFyYW1ldGVycyhvcGpfY3BhcmFtZXRlcnNfdCAqcGFyYW1ldGVycywgb3BqX2ltYWdlX3QgKmltYWdlLCBvcGpfZXZlbnRfbWdyX3QgKnBfbWFuYWdlcik7CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2lzX2NpbmVtYV9jb21wbGlhbnQob3BqX2ltYWdlX3QgKmltYWdlLCBPUEpfQ0lORU1BX01PREUgY2luZW1hX21vZGUsIG9wal9ldmVudF9tZ3JfdCAqcF9tYW5hZ2VyKTsKKworLypAfSovCisKKy8qQH0qLworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwordHlwZWRlZiBzdHJ1Y3QgajJrX3Byb2dfb3JkZXJ7CisgICAgICAgIE9QSl9QUk9HX09SREVSIGVudW1fcHJvZzsKKyAgICAgICAgY2hhciBzdHJfcHJvZ1s1XTsKK31qMmtfcHJvZ19vcmRlcl90OworCitqMmtfcHJvZ19vcmRlcl90IGoya19wcm9nX29yZGVyX2xpc3RbXSA9IHsKKyAgICAgICAge09QSl9DUFJMLCAiQ1BSTCJ9LAorICAgICAgICB7T1BKX0xSQ1AsICJMUkNQIn0sCisgICAgICAgIHtPUEpfUENSTCwgIlBDUkwifSwKKyAgICAgICAge09QSl9STENQLCAiUkxDUCJ9LAorICAgICAgICB7T1BKX1JQQ0wsICJSUENMIn0sCisgICAgICAgIHsoT1BKX1BST0dfT1JERVIpLTEsICIifQorfTsKKworLyoqCisgKiBGSVhNRSBET0MKKyAqLworc3RhdGljIGNvbnN0IE9QSl9VSU5UMzIgTUNUX0VMRU1FTlRfU0laRSBbXSA9Cit7CisgICAgICAgIDIsCisgICAgICAgIDQsCisgICAgICAgIDQsCisgICAgICAgIDgKK307CisKK3R5cGVkZWYgdm9pZCAoKiBvcGpfajJrX21jdF9mdW5jdGlvbikgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKTsKKworY29uc3Qgb3BqX2oya19tY3RfZnVuY3Rpb24gajJrX21jdF9yZWFkX2Z1bmN0aW9uc190b19mbG9hdCBbXSA9Cit7CisgICAgICAgIG9wal9qMmtfcmVhZF9pbnQxNl90b19mbG9hdCwKKyAgICAgICAgb3BqX2oya19yZWFkX2ludDMyX3RvX2Zsb2F0LAorICAgICAgICBvcGpfajJrX3JlYWRfZmxvYXQzMl90b19mbG9hdCwKKyAgICAgICAgb3BqX2oya19yZWFkX2Zsb2F0NjRfdG9fZmxvYXQKK307CisKK2NvbnN0IG9wal9qMmtfbWN0X2Z1bmN0aW9uIGoya19tY3RfcmVhZF9mdW5jdGlvbnNfdG9faW50MzIgW10gPQoreworICAgICAgICBvcGpfajJrX3JlYWRfaW50MTZfdG9faW50MzIsCisgICAgICAgIG9wal9qMmtfcmVhZF9pbnQzMl90b19pbnQzMiwKKyAgICAgICAgb3BqX2oya19yZWFkX2Zsb2F0MzJfdG9faW50MzIsCisgICAgICAgIG9wal9qMmtfcmVhZF9mbG9hdDY0X3RvX2ludDMyCit9OworCitjb25zdCBvcGpfajJrX21jdF9mdW5jdGlvbiBqMmtfbWN0X3dyaXRlX2Z1bmN0aW9uc19mcm9tX2Zsb2F0IFtdID0KK3sKKyAgICAgICAgb3BqX2oya193cml0ZV9mbG9hdF90b19pbnQxNiwKKyAgICAgICAgb3BqX2oya193cml0ZV9mbG9hdF90b19pbnQzMiwKKyAgICAgICAgb3BqX2oya193cml0ZV9mbG9hdF90b19mbG9hdCwKKyAgICAgICAgb3BqX2oya193cml0ZV9mbG9hdF90b19mbG9hdDY0Cit9OworCit0eXBlZGVmIHN0cnVjdCBvcGpfZGVjX21lbW9yeV9tYXJrZXJfaGFuZGxlcgoreworICAgICAgICAvKiogbWFya2VyIHZhbHVlICovCisgICAgICAgIE9QSl9VSU5UMzIgaWQ7CisgICAgICAgIC8qKiB2YWx1ZSBvZiB0aGUgc3RhdGUgd2hlbiB0aGUgbWFya2VyIGNhbiBhcHBlYXIgKi8KKyAgICAgICAgT1BKX1VJTlQzMiBzdGF0ZXM7CisgICAgICAgIC8qKiBhY3Rpb24gbGlua2VkIHRvIHRoZSBtYXJrZXIgKi8KKyAgICAgICAgT1BKX0JPT0wgKCpoYW5kbGVyKSAoICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworfQorb3BqX2RlY19tZW1vcnlfbWFya2VyX2hhbmRsZXJfdDsKKworY29uc3Qgb3BqX2RlY19tZW1vcnlfbWFya2VyX2hhbmRsZXJfdCBqMmtfbWVtb3J5X21hcmtlcl9oYW5kbGVyX3RhYiBbXSA9Cit7CisgIHtKMktfTVNfU09ULCBKMktfU1RBVEVfTUggfCBKMktfU1RBVEVfVFBIU09ULCBvcGpfajJrX3JlYWRfc290fSwKKyAge0oyS19NU19DT0QsIEoyS19TVEFURV9NSCB8IEoyS19TVEFURV9UUEgsIG9wal9qMmtfcmVhZF9jb2R9LAorICB7SjJLX01TX0NPQywgSjJLX1NUQVRFX01IIHwgSjJLX1NUQVRFX1RQSCwgb3BqX2oya19yZWFkX2NvY30sCisgIHtKMktfTVNfUkdOLCBKMktfU1RBVEVfTUggfCBKMktfU1RBVEVfVFBILCBvcGpfajJrX3JlYWRfcmdufSwKKyAge0oyS19NU19RQ0QsIEoyS19TVEFURV9NSCB8IEoyS19TVEFURV9UUEgsIG9wal9qMmtfcmVhZF9xY2R9LAorICB7SjJLX01TX1FDQywgSjJLX1NUQVRFX01IIHwgSjJLX1NUQVRFX1RQSCwgb3BqX2oya19yZWFkX3FjY30sCisgIHtKMktfTVNfUE9DLCBKMktfU1RBVEVfTUggfCBKMktfU1RBVEVfVFBILCBvcGpfajJrX3JlYWRfcG9jfSwKKyAge0oyS19NU19TSVosIEoyS19TVEFURV9NSFNJWiwgb3BqX2oya19yZWFkX3Npen0sCisgIHtKMktfTVNfVExNLCBKMktfU1RBVEVfTUgsIG9wal9qMmtfcmVhZF90bG19LAorICB7SjJLX01TX1BMTSwgSjJLX1NUQVRFX01ILCBvcGpfajJrX3JlYWRfcGxtfSwKKyAge0oyS19NU19QTFQsIEoyS19TVEFURV9UUEgsIG9wal9qMmtfcmVhZF9wbHR9LAorICB7SjJLX01TX1BQTSwgSjJLX1NUQVRFX01ILCBqMmtfcmVhZF9wcG1fdjN9LAorICB7SjJLX01TX1BQVCwgSjJLX1NUQVRFX1RQSCwgb3BqX2oya19yZWFkX3BwdH0sCisgIHtKMktfTVNfU09QLCAwLCAwfSwKKyAge0oyS19NU19DUkcsIEoyS19TVEFURV9NSCwgb3BqX2oya19yZWFkX2NyZ30sCisgIHtKMktfTVNfQ09NLCBKMktfU1RBVEVfTUggfCBKMktfU1RBVEVfVFBILCBvcGpfajJrX3JlYWRfY29tfSwKKyAge0oyS19NU19NQ1QsIEoyS19TVEFURV9NSCB8IEoyS19TVEFURV9UUEgsIG9wal9qMmtfcmVhZF9tY3R9LAorICB7SjJLX01TX0NCRCwgSjJLX1NUQVRFX01IICwgb3BqX2oya19yZWFkX2NiZH0sCisgIHtKMktfTVNfTUNDLCBKMktfU1RBVEVfTUggfCBKMktfU1RBVEVfVFBILCBvcGpfajJrX3JlYWRfbWNjfSwKKyAge0oyS19NU19NQ08sIEoyS19TVEFURV9NSCB8IEoyS19TVEFURV9UUEgsIG9wal9qMmtfcmVhZF9tY299LAorI2lmZGVmIFVTRV9KUFdMCisjaWZkZWYgVE9ET19NUyAvKiByZW1vdmUgdGhlc2UgZnVuY3Rpb25zIHdoaWNoIGFyZSBub3QgY29tbXBhdGlibGUgd2l0aCB0aGUgdjIgQVBJICovCisgIHtKMktfTVNfRVBDLCBKMktfU1RBVEVfTUggfCBKMktfU1RBVEVfVFBILCBqMmtfcmVhZF9lcGN9LAorICB7SjJLX01TX0VQQiwgSjJLX1NUQVRFX01IIHwgSjJLX1NUQVRFX1RQSCwgajJrX3JlYWRfZXBifSwKKyAge0oyS19NU19FU0QsIEoyS19TVEFURV9NSCB8IEoyS19TVEFURV9UUEgsIGoya19yZWFkX2VzZH0sCisgIHtKMktfTVNfUkVELCBKMktfU1RBVEVfTUggfCBKMktfU1RBVEVfVFBILCBqMmtfcmVhZF9yZWR9LAorI2VuZGlmCisjZW5kaWYgLyogVVNFX0pQV0wgKi8KKyNpZmRlZiBVU0VfSlBTRUMKKyAge0oyS19NU19TRUMsIEoyS19ERUNfU1RBVEVfTUgsIGoya19yZWFkX3NlY30sCisgIHtKMktfTVNfSU5TRUMsIDAsIGoya19yZWFkX2luc2VjfQorI2VuZGlmIC8qIFVTRV9KUFNFQyAqLworICB7SjJLX01TX1VOSywgSjJLX1NUQVRFX01IIHwgSjJLX1NUQVRFX1RQSCwgMH0vKm9wal9qMmtfcmVhZF91bmsgaXMgZGlyZWN0bHkgdXNlZCovCit9OworCit2b2lkICBvcGpfajJrX3JlYWRfaW50MTZfdG9fZmxvYXQgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKQoreworICAgICAgICBPUEpfQllURSAqIGxfc3JjX2RhdGEgPSAoT1BKX0JZVEUgKikgcF9zcmNfZGF0YTsKKyAgICAgICAgT1BKX0ZMT0FUMzIgKiBsX2Rlc3RfZGF0YSA9IChPUEpfRkxPQVQzMiAqKSBwX2Rlc3RfZGF0YTsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfVUlOVDMyIGxfdGVtcDsKKworICAgICAgICBmb3IgKGk9MDtpPHBfbmJfZWxlbTsrK2kpIHsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhsX3NyY19kYXRhLCZsX3RlbXAsMik7CisKKyAgICAgICAgICAgICAgICBsX3NyY19kYXRhKz1zaXplb2YoT1BKX0lOVDE2KTsKKworICAgICAgICAgICAgICAgICoobF9kZXN0X2RhdGErKykgPSAoT1BKX0ZMT0FUMzIpIGxfdGVtcDsKKyAgICAgICAgfQorfQorCit2b2lkICBvcGpfajJrX3JlYWRfaW50MzJfdG9fZmxvYXQgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKQoreworICAgICAgICBPUEpfQllURSAqIGxfc3JjX2RhdGEgPSAoT1BKX0JZVEUgKikgcF9zcmNfZGF0YTsKKyAgICAgICAgT1BKX0ZMT0FUMzIgKiBsX2Rlc3RfZGF0YSA9IChPUEpfRkxPQVQzMiAqKSBwX2Rlc3RfZGF0YTsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfVUlOVDMyIGxfdGVtcDsKKworICAgICAgICBmb3IgKGk9MDtpPHBfbmJfZWxlbTsrK2kpIHsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhsX3NyY19kYXRhLCZsX3RlbXAsNCk7CisKKyAgICAgICAgICAgICAgICBsX3NyY19kYXRhKz1zaXplb2YoT1BKX0lOVDMyKTsKKworICAgICAgICAgICAgICAgICoobF9kZXN0X2RhdGErKykgPSAoT1BKX0ZMT0FUMzIpIGxfdGVtcDsKKyAgICAgICAgfQorfQorCit2b2lkICBvcGpfajJrX3JlYWRfZmxvYXQzMl90b19mbG9hdCAoY29uc3Qgdm9pZCAqIHBfc3JjX2RhdGEsIHZvaWQgKiBwX2Rlc3RfZGF0YSwgT1BKX1VJTlQzMiBwX25iX2VsZW0pCit7CisgICAgICAgIE9QSl9CWVRFICogbF9zcmNfZGF0YSA9IChPUEpfQllURSAqKSBwX3NyY19kYXRhOworICAgICAgICBPUEpfRkxPQVQzMiAqIGxfZGVzdF9kYXRhID0gKE9QSl9GTE9BVDMyICopIHBfZGVzdF9kYXRhOworICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgIE9QSl9GTE9BVDMyIGxfdGVtcDsKKworICAgICAgICBmb3IgKGk9MDtpPHBfbmJfZWxlbTsrK2kpIHsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9mbG9hdChsX3NyY19kYXRhLCZsX3RlbXApOworCisgICAgICAgICAgICAgICAgbF9zcmNfZGF0YSs9c2l6ZW9mKE9QSl9GTE9BVDMyKTsKKworICAgICAgICAgICAgICAgICoobF9kZXN0X2RhdGErKykgPSBsX3RlbXA7CisgICAgICAgIH0KK30KKwordm9pZCAgb3BqX2oya19yZWFkX2Zsb2F0NjRfdG9fZmxvYXQgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKQoreworICAgICAgICBPUEpfQllURSAqIGxfc3JjX2RhdGEgPSAoT1BKX0JZVEUgKikgcF9zcmNfZGF0YTsKKyAgICAgICAgT1BKX0ZMT0FUMzIgKiBsX2Rlc3RfZGF0YSA9IChPUEpfRkxPQVQzMiAqKSBwX2Rlc3RfZGF0YTsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfRkxPQVQ2NCBsX3RlbXA7CisKKyAgICAgICAgZm9yIChpPTA7aTxwX25iX2VsZW07KytpKSB7CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfZG91YmxlKGxfc3JjX2RhdGEsJmxfdGVtcCk7CisKKyAgICAgICAgICAgICAgICBsX3NyY19kYXRhKz1zaXplb2YoT1BKX0ZMT0FUNjQpOworCisgICAgICAgICAgICAgICAgKihsX2Rlc3RfZGF0YSsrKSA9IChPUEpfRkxPQVQzMikgbF90ZW1wOworICAgICAgICB9Cit9CisKK3ZvaWQgIG9wal9qMmtfcmVhZF9pbnQxNl90b19pbnQzMiAoY29uc3Qgdm9pZCAqIHBfc3JjX2RhdGEsIHZvaWQgKiBwX2Rlc3RfZGF0YSwgT1BKX1VJTlQzMiBwX25iX2VsZW0pCit7CisgICAgICAgIE9QSl9CWVRFICogbF9zcmNfZGF0YSA9IChPUEpfQllURSAqKSBwX3NyY19kYXRhOworICAgICAgICBPUEpfSU5UMzIgKiBsX2Rlc3RfZGF0YSA9IChPUEpfSU5UMzIgKikgcF9kZXN0X2RhdGE7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3RlbXA7CisKKyAgICAgICAgZm9yIChpPTA7aTxwX25iX2VsZW07KytpKSB7CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMobF9zcmNfZGF0YSwmbF90ZW1wLDIpOworCisgICAgICAgICAgICAgICAgbF9zcmNfZGF0YSs9c2l6ZW9mKE9QSl9JTlQxNik7CisKKyAgICAgICAgICAgICAgICAqKGxfZGVzdF9kYXRhKyspID0gKE9QSl9JTlQzMikgbF90ZW1wOworICAgICAgICB9Cit9CisKK3ZvaWQgIG9wal9qMmtfcmVhZF9pbnQzMl90b19pbnQzMiAoY29uc3Qgdm9pZCAqIHBfc3JjX2RhdGEsIHZvaWQgKiBwX2Rlc3RfZGF0YSwgT1BKX1VJTlQzMiBwX25iX2VsZW0pCit7CisgICAgICAgIE9QSl9CWVRFICogbF9zcmNfZGF0YSA9IChPUEpfQllURSAqKSBwX3NyY19kYXRhOworICAgICAgICBPUEpfSU5UMzIgKiBsX2Rlc3RfZGF0YSA9IChPUEpfSU5UMzIgKikgcF9kZXN0X2RhdGE7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3RlbXA7CisKKyAgICAgICAgZm9yIChpPTA7aTxwX25iX2VsZW07KytpKSB7CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMobF9zcmNfZGF0YSwmbF90ZW1wLDQpOworCisgICAgICAgICAgICAgICAgbF9zcmNfZGF0YSs9c2l6ZW9mKE9QSl9JTlQzMik7CisKKyAgICAgICAgICAgICAgICAqKGxfZGVzdF9kYXRhKyspID0gKE9QSl9JTlQzMikgbF90ZW1wOworICAgICAgICB9Cit9CisKK3ZvaWQgIG9wal9qMmtfcmVhZF9mbG9hdDMyX3RvX2ludDMyIChjb25zdCB2b2lkICogcF9zcmNfZGF0YSwgdm9pZCAqIHBfZGVzdF9kYXRhLCBPUEpfVUlOVDMyIHBfbmJfZWxlbSkKK3sKKyAgICAgICAgT1BKX0JZVEUgKiBsX3NyY19kYXRhID0gKE9QSl9CWVRFICopIHBfc3JjX2RhdGE7CisgICAgICAgIE9QSl9JTlQzMiAqIGxfZGVzdF9kYXRhID0gKE9QSl9JTlQzMiAqKSBwX2Rlc3RfZGF0YTsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfRkxPQVQzMiBsX3RlbXA7CisKKyAgICAgICAgZm9yIChpPTA7aTxwX25iX2VsZW07KytpKSB7CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfZmxvYXQobF9zcmNfZGF0YSwmbF90ZW1wKTsKKworICAgICAgICAgICAgICAgIGxfc3JjX2RhdGErPXNpemVvZihPUEpfRkxPQVQzMik7CisKKyAgICAgICAgICAgICAgICAqKGxfZGVzdF9kYXRhKyspID0gKE9QSl9JTlQzMikgbF90ZW1wOworICAgICAgICB9Cit9CisKK3ZvaWQgIG9wal9qMmtfcmVhZF9mbG9hdDY0X3RvX2ludDMyIChjb25zdCB2b2lkICogcF9zcmNfZGF0YSwgdm9pZCAqIHBfZGVzdF9kYXRhLCBPUEpfVUlOVDMyIHBfbmJfZWxlbSkKK3sKKyAgICAgICAgT1BKX0JZVEUgKiBsX3NyY19kYXRhID0gKE9QSl9CWVRFICopIHBfc3JjX2RhdGE7CisgICAgICAgIE9QSl9JTlQzMiAqIGxfZGVzdF9kYXRhID0gKE9QSl9JTlQzMiAqKSBwX2Rlc3RfZGF0YTsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfRkxPQVQ2NCBsX3RlbXA7CisKKyAgICAgICAgZm9yIChpPTA7aTxwX25iX2VsZW07KytpKSB7CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfZG91YmxlKGxfc3JjX2RhdGEsJmxfdGVtcCk7CisKKyAgICAgICAgICAgICAgICBsX3NyY19kYXRhKz1zaXplb2YoT1BKX0ZMT0FUNjQpOworCisgICAgICAgICAgICAgICAgKihsX2Rlc3RfZGF0YSsrKSA9IChPUEpfSU5UMzIpIGxfdGVtcDsKKyAgICAgICAgfQorfQorCit2b2lkICBvcGpfajJrX3dyaXRlX2Zsb2F0X3RvX2ludDE2IChjb25zdCB2b2lkICogcF9zcmNfZGF0YSwgdm9pZCAqIHBfZGVzdF9kYXRhLCBPUEpfVUlOVDMyIHBfbmJfZWxlbSkKK3sKKyAgICAgICAgT1BKX0JZVEUgKiBsX2Rlc3RfZGF0YSA9IChPUEpfQllURSAqKSBwX2Rlc3RfZGF0YTsKKyAgICAgICAgT1BKX0ZMT0FUMzIgKiBsX3NyY19kYXRhID0gKE9QSl9GTE9BVDMyICopIHBfc3JjX2RhdGE7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3RlbXA7CisKKyAgICAgICAgZm9yIChpPTA7aTxwX25iX2VsZW07KytpKSB7CisgICAgICAgICAgICAgICAgbF90ZW1wID0gKE9QSl9VSU5UMzIpICoobF9zcmNfZGF0YSsrKTsKKworICAgICAgICAgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2Rlc3RfZGF0YSxsX3RlbXAsc2l6ZW9mKE9QSl9JTlQxNikpOworCisgICAgICAgICAgICAgICAgbF9kZXN0X2RhdGErPXNpemVvZihPUEpfSU5UMTYpOworICAgICAgICB9Cit9CisKK3ZvaWQgb3BqX2oya193cml0ZV9mbG9hdF90b19pbnQzMiAoY29uc3Qgdm9pZCAqIHBfc3JjX2RhdGEsIHZvaWQgKiBwX2Rlc3RfZGF0YSwgT1BKX1VJTlQzMiBwX25iX2VsZW0pCit7CisgICAgICAgIE9QSl9CWVRFICogbF9kZXN0X2RhdGEgPSAoT1BKX0JZVEUgKikgcF9kZXN0X2RhdGE7CisgICAgICAgIE9QSl9GTE9BVDMyICogbF9zcmNfZGF0YSA9IChPUEpfRkxPQVQzMiAqKSBwX3NyY19kYXRhOworICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgIE9QSl9VSU5UMzIgbF90ZW1wOworCisgICAgICAgIGZvciAoaT0wO2k8cF9uYl9lbGVtOysraSkgeworICAgICAgICAgICAgICAgIGxfdGVtcCA9IChPUEpfVUlOVDMyKSAqKGxfc3JjX2RhdGErKyk7CisKKyAgICAgICAgICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9kZXN0X2RhdGEsbF90ZW1wLHNpemVvZihPUEpfSU5UMzIpKTsKKworICAgICAgICAgICAgICAgIGxfZGVzdF9kYXRhKz1zaXplb2YoT1BKX0lOVDMyKTsKKyAgICAgICAgfQorfQorCit2b2lkICBvcGpfajJrX3dyaXRlX2Zsb2F0X3RvX2Zsb2F0IChjb25zdCB2b2lkICogcF9zcmNfZGF0YSwgdm9pZCAqIHBfZGVzdF9kYXRhLCBPUEpfVUlOVDMyIHBfbmJfZWxlbSkKK3sKKyAgICAgICAgT1BKX0JZVEUgKiBsX2Rlc3RfZGF0YSA9IChPUEpfQllURSAqKSBwX2Rlc3RfZGF0YTsKKyAgICAgICAgT1BKX0ZMT0FUMzIgKiBsX3NyY19kYXRhID0gKE9QSl9GTE9BVDMyICopIHBfc3JjX2RhdGE7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX0ZMT0FUMzIgbF90ZW1wOworCisgICAgICAgIGZvciAoaT0wO2k8cF9uYl9lbGVtOysraSkgeworICAgICAgICAgICAgICAgIGxfdGVtcCA9IChPUEpfRkxPQVQzMikgKihsX3NyY19kYXRhKyspOworCisgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2Zsb2F0KGxfZGVzdF9kYXRhLGxfdGVtcCk7CisKKyAgICAgICAgICAgICAgICBsX2Rlc3RfZGF0YSs9c2l6ZW9mKE9QSl9GTE9BVDMyKTsKKyAgICAgICAgfQorfQorCit2b2lkICBvcGpfajJrX3dyaXRlX2Zsb2F0X3RvX2Zsb2F0NjQgKGNvbnN0IHZvaWQgKiBwX3NyY19kYXRhLCB2b2lkICogcF9kZXN0X2RhdGEsIE9QSl9VSU5UMzIgcF9uYl9lbGVtKQoreworICAgICAgICBPUEpfQllURSAqIGxfZGVzdF9kYXRhID0gKE9QSl9CWVRFICopIHBfZGVzdF9kYXRhOworICAgICAgICBPUEpfRkxPQVQzMiAqIGxfc3JjX2RhdGEgPSAoT1BKX0ZMT0FUMzIgKikgcF9zcmNfZGF0YTsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfRkxPQVQ2NCBsX3RlbXA7CisKKyAgICAgICAgZm9yIChpPTA7aTxwX25iX2VsZW07KytpKSB7CisgICAgICAgICAgICAgICAgbF90ZW1wID0gKE9QSl9GTE9BVDY0KSAqKGxfc3JjX2RhdGErKyk7CisKKyAgICAgICAgICAgICAgICBvcGpfd3JpdGVfZG91YmxlKGxfZGVzdF9kYXRhLGxfdGVtcCk7CisKKyAgICAgICAgICAgICAgICBsX2Rlc3RfZGF0YSs9c2l6ZW9mKE9QSl9GTE9BVDY0KTsKKyAgICAgICAgfQorfQorCitjaGFyICpvcGpfajJrX2NvbnZlcnRfcHJvZ3Jlc3Npb25fb3JkZXIoT1BKX1BST0dfT1JERVIgcHJnX29yZGVyKXsKKyAgICAgICAgajJrX3Byb2dfb3JkZXJfdCAqcG87CisgICAgICAgIGZvcihwbyA9IGoya19wcm9nX29yZGVyX2xpc3Q7IHBvLT5lbnVtX3Byb2cgIT0gLTE7IHBvKysgKXsKKyAgICAgICAgICAgICAgICBpZihwby0+ZW51bV9wcm9nID09IHByZ19vcmRlcil7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG8tPnN0cl9wcm9nOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcG8tPnN0cl9wcm9nOworfQorCitPUEpfQk9PTCBvcGpfajJrX2NoZWNrX3BvY192YWwoIGNvbnN0IG9wal9wb2NfdCAqcF9wb2NzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbmJfcG9jcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX25iX3Jlc29sdXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbnVtX2NvbXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbnVtX2xheWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKQoreworICAgICAgICBPUEpfVUlOVDMyKiBwYWNrZXRfYXJyYXk7CisgICAgICAgIE9QSl9VSU5UMzIgaW5kZXggLCByZXNubywgY29tcG5vLCBsYXlubzsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfVUlOVDMyIHN0ZXBfYyA9IDE7CisgICAgICAgIE9QSl9VSU5UMzIgc3RlcF9yID0gcF9udW1fY29tcHMgKiBzdGVwX2M7CisgICAgICAgIE9QSl9VSU5UMzIgc3RlcF9sID0gcF9uYl9yZXNvbHV0aW9ucyAqIHN0ZXBfcjsKKyAgICAgICAgT1BKX0JPT0wgbG9zcyA9IE9QSl9GQUxTRTsKKyAgICAgICAgT1BKX1VJTlQzMiBsYXlubzAgPSAwOworCisgICAgICAgIHBhY2tldF9hcnJheSA9IChPUEpfVUlOVDMyKikgb3BqX2NhbGxvYyhzdGVwX2wgKiBwX251bV9sYXllcnMsIHNpemVvZihPUEpfVUlOVDMyKSk7CisgICAgICAgIGlmIChwYWNrZXRfYXJyYXkgPT0gMDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciAsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IGZvciBjaGVja2luZyB0aGUgcG9jIHZhbHVlcy5cbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KHBhY2tldF9hcnJheSwwLHN0ZXBfbCAqIHBfbnVtX2xheWVycyogc2l6ZW9mKE9QSl9VSU5UMzIpKTsKKworICAgICAgICBpZiAocF9uYl9wb2NzID09IDApIHsKKyAgICAgICAgb3BqX2ZyZWUocGFja2V0X2FycmF5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgIH0KKworICAgICAgICBpbmRleCA9IHN0ZXBfciAqIHBfcG9jcy0+cmVzbm8wOworICAgICAgICAvKiB0YWtlIGVhY2ggcmVzb2x1dGlvbiBmb3IgZWFjaCBwb2MgKi8KKyAgICAgICAgZm9yIChyZXNubyA9IHBfcG9jcy0+cmVzbm8wIDsgcmVzbm8gPCBwX3BvY3MtPnJlc25vMSA7ICsrcmVzbm8pCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHJlc19pbmRleCA9IGluZGV4ICsgcF9wb2NzLT5jb21wbm8wICogc3RlcF9jOworCisgICAgICAgICAgICAgICAgLyogdGFrZSBlYWNoIGNvbXAgb2YgZWFjaCByZXNvbHV0aW9uIGZvciBlYWNoIHBvYyAqLworICAgICAgICAgICAgICAgIGZvciAoY29tcG5vID0gcF9wb2NzLT5jb21wbm8wIDsgY29tcG5vIDwgcF9wb2NzLT5jb21wbm8xIDsgKytjb21wbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY29tcF9pbmRleCA9IHJlc19pbmRleCArIGxheW5vMCAqIHN0ZXBfbDsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogYW5kIGZpbmFsbHkgdGFrZSBlYWNoIGxheWVyIG9mIGVhY2ggcmVzIG9mIC4uLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsYXlubyA9IGxheW5vMDsgbGF5bm8gPCBwX3BvY3MtPmxheW5vMSA7ICsrbGF5bm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppbmRleCA9IHN0ZXBfciAqIHJlc25vICsgc3RlcF9jICogY29tcG5vICsgc3RlcF9sICogbGF5bm87Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X2FycmF5W2NvbXBfaW5kZXhdID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcF9pbmRleCArPSBzdGVwX2w7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc19pbmRleCArPSBzdGVwX2M7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaW5kZXggKz0gc3RlcF9yOworICAgICAgICB9CisgICAgICAgICsrcF9wb2NzOworCisgICAgICAgIC8qIGl0ZXJhdGUgdGhyb3VnaCBhbGwgdGhlIHBvY3MgKi8KKyAgICAgICAgZm9yIChpID0gMTsgaSA8IHBfbmJfcG9jcyA7ICsraSkgeworICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbF9sYXN0X2xheW5vMSA9IChwX3BvY3MtMSktPmxheW5vMSA7CisKKyAgICAgICAgICAgICAgICBsYXlubzAgPSAocF9wb2NzLT5sYXlubzEgPiBsX2xhc3RfbGF5bm8xKT8gbF9sYXN0X2xheW5vMSA6IDA7CisgICAgICAgICAgICAgICAgaW5kZXggPSBzdGVwX3IgKiBwX3BvY3MtPnJlc25vMDsKKworICAgICAgICAgICAgICAgIC8qIHRha2UgZWFjaCByZXNvbHV0aW9uIGZvciBlYWNoIHBvYyAqLworICAgICAgICAgICAgICAgIGZvciAocmVzbm8gPSBwX3BvY3MtPnJlc25vMCA7IHJlc25vIDwgcF9wb2NzLT5yZXNubzEgOyArK3Jlc25vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHJlc19pbmRleCA9IGluZGV4ICsgcF9wb2NzLT5jb21wbm8wICogc3RlcF9jOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiB0YWtlIGVhY2ggY29tcCBvZiBlYWNoIHJlc29sdXRpb24gZm9yIGVhY2ggcG9jICovCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbXBubyA9IHBfcG9jcy0+Y29tcG5vMCA7IGNvbXBubyA8IHBfcG9jcy0+Y29tcG5vMSA7ICsrY29tcG5vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY29tcF9pbmRleCA9IHJlc19pbmRleCArIGxheW5vMCAqIHN0ZXBfbDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbmQgZmluYWxseSB0YWtlIGVhY2ggbGF5ZXIgb2YgZWFjaCByZXMgb2YgLi4uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGF5bm8gPSBsYXlubzA7IGxheW5vIDwgcF9wb2NzLT5sYXlubzEgOyArK2xheW5vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppbmRleCA9IHN0ZXBfciAqIHJlc25vICsgc3RlcF9jICogY29tcG5vICsgc3RlcF9sICogbGF5bm87Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfYXJyYXlbY29tcF9pbmRleF0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBfaW5kZXggKz0gc3RlcF9sOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzX2luZGV4ICs9IHN0ZXBfYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gc3RlcF9yOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICsrcF9wb2NzOworICAgICAgICB9CisKKyAgICAgICAgaW5kZXggPSAwOworICAgICAgICBmb3IgKGxheW5vID0gMDsgbGF5bm8gPCBwX251bV9sYXllcnMgOyArK2xheW5vKSB7CisgICAgICAgICAgICAgICAgZm9yIChyZXNubyA9IDA7IHJlc25vIDwgcF9uYl9yZXNvbHV0aW9uczsgKytyZXNubykgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCBwX251bV9jb21wczsgKytjb21wbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9zcyB8PSAocGFja2V0X2FycmF5W2luZGV4XSE9MSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qaW5kZXggPSBzdGVwX3IgKiByZXNubyArIHN0ZXBfYyAqIGNvbXBubyArIHN0ZXBfbCAqIGxheW5vOyovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IHN0ZXBfYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9zcykgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyICwgRVZUX0VSUk9SLCAiTWlzc2luZyBwYWNrZXRzIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YVxuIik7CisgICAgICAgIH0KKworICAgICAgICBvcGpfZnJlZShwYWNrZXRfYXJyYXkpOworCisgICAgICAgIHJldHVybiAhbG9zczsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworT1BKX1VJTlQzMiBvcGpfajJrX2dldF9udW1fdHAob3BqX2NwX3QgKmNwLCBPUEpfVUlOVDMyIHBpbm8sIE9QSl9VSU5UMzIgdGlsZW5vKQoreworICAgICAgICBjb25zdCBPUEpfQ0hBUiAqcHJvZyA9IDAwOworICAgICAgICBPUEpfSU5UMzIgaTsKKyAgICAgICAgT1BKX1VJTlQzMiB0cG51bSA9IDE7CisgICAgICAgIG9wal90Y3BfdCAqdGNwID0gMDA7CisgICAgICAgIG9wal9wb2NfdCAqIGxfY3VycmVudF9wb2MgPSAwMDsKKworICAgICAgICAvKiAgcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQodGlsZW5vIDwgKGNwLT50dyAqIGNwLT50aCkpOworICAgICAgICBhc3NlcnQocGlubyA8IChjcC0+dGNwc1t0aWxlbm9dLm51bXBvY3MgKyAxKSk7CisKKyAgICAgICAgLyogZ2V0IHRoZSBnaXZlbiB0aWxlIGNvZGluZyBwYXJhbWV0ZXIgKi8KKyAgICAgICAgdGNwID0gJmNwLT50Y3BzW3RpbGVub107CisgICAgICAgIGFzc2VydCh0Y3AgIT0gMDApOworCisgICAgICAgIGxfY3VycmVudF9wb2MgPSAmKHRjcC0+cG9jc1twaW5vXSk7CisgICAgICAgIGFzc2VydChsX2N1cnJlbnRfcG9jICE9IDApOworCisgICAgICAgIC8qIGdldCB0aGUgcHJvZ3Jlc3Npb24gb3JkZXIgYXMgYSBjaGFyYWN0ZXIgc3RyaW5nICovCisgICAgICAgIHByb2cgPSBvcGpfajJrX2NvbnZlcnRfcHJvZ3Jlc3Npb25fb3JkZXIodGNwLT5wcmcpOworICAgICAgICBhc3NlcnQoc3RybGVuKHByb2cpID4gMCk7CisKKyAgICAgICAgaWYgKGNwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fdHBfb24gPT0gMSkgeworICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8NDsrK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvZ1tpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29tcG9uZW50IHdpc2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBudW0gKj0gbF9jdXJyZW50X3BvYy0+Y29tcEU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc29sdXRpb24gd2lzZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdSJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG51bSAqPSBsX2N1cnJlbnRfcG9jLT5yZXNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcmVjaW5jdCB3aXNlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1AnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbnVtICo9IGxfY3VycmVudF9wb2MtPnByY0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxheWVyIHdpc2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnTCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBudW0gKj0gbF9jdXJyZW50X3BvYy0+bGF5RTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdob3VsZCB3ZSBzcGxpdCBoZXJlID8gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV90cF9mbGFnID09IHByb2dbaV0gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fdHBfcG9zPWk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0cG51bT0xOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRwbnVtOworfQorCitPUEpfQk9PTCBvcGpfajJrX2NhbGN1bGF0ZV90cCggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jcF90ICpjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbmJfdGlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90ICppbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBwaW5vLHRpbGVubzsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3RpbGVzOworICAgICAgICBvcGpfdGNwX3QgKnRjcDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX25iX3RpbGVzICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KGNwICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KGltYWdlICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgbF9uYl90aWxlcyA9IGNwLT50dyAqIGNwLT50aDsKKyAgICAgICAgKiBwX25iX3RpbGVzID0gMDsKKyAgICAgICAgdGNwID0gY3AtPnRjcHM7CisKKyAgICAgICAgLyogSU5ERVggPj4gKi8KKyAgICAgICAgLyogVE9ETyBtZXJnZVYyOiBjaGVjayB0aGlzIHBhcnQgd2hpY2ggdXNlIGNzdHJfaW5mbyAqLworICAgICAgICAvKmlmIChwX2oyay0+Y3N0cl9pbmZvKSB7CisgICAgICAgICAgICAgICAgb3BqX3RpbGVfaW5mb190ICogbF9pbmZvX3RpbGVfcHRyID0gcF9qMmstPmNzdHJfaW5mby0+dGlsZTsKKworICAgICAgICAgICAgICAgIGZvciAodGlsZW5vID0gMDsgdGlsZW5vIDwgbF9uYl90aWxlczsgKyt0aWxlbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY3VyX3RvdG51bV90cCA9IDA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9waV91cGRhdGVfZW5jb2RpbmdfcGFyYW1ldGVycyhpbWFnZSxjcCx0aWxlbm8pOworCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHBpbm8gPSAwOyBwaW5vIDw9IHRjcC0+bnVtcG9jczsgKytwaW5vKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRwX251bSA9IG9wal9qMmtfZ2V0X251bV90cChjcCxwaW5vLHRpbGVubyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBfbmJfdGlsZXMgPSAqcF9uYl90aWxlcyArIHRwX251bTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfdG90bnVtX3RwICs9IHRwX251bTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdGNwLT5tX25iX3RpbGVfcGFydHMgPSBjdXJfdG90bnVtX3RwOworCisgICAgICAgICAgICAgICAgICAgICAgICBsX2luZm9fdGlsZV9wdHItPnRwID0gKG9wal90cF9pbmZvX3QgKikgb3BqX21hbGxvYyhjdXJfdG90bnVtX3RwICogc2l6ZW9mKG9wal90cF9pbmZvX3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2luZm9fdGlsZV9wdHItPnRwID09IDAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbXNldChsX2luZm9fdGlsZV9wdHItPnRwLDAsY3VyX3RvdG51bV90cCAqIHNpemVvZihvcGpfdHBfaW5mb190KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfaW5mb190aWxlX3B0ci0+bnVtX3RwcyA9IGN1cl90b3RudW1fdHA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9pbmZvX3RpbGVfcHRyOworICAgICAgICAgICAgICAgICAgICAgICAgKyt0Y3A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgKi97CisgICAgICAgICAgICAgICAgZm9yICh0aWxlbm8gPSAwOyB0aWxlbm8gPCBsX25iX3RpbGVzOyArK3RpbGVubykgeworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBjdXJfdG90bnVtX3RwID0gMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BpX3VwZGF0ZV9lbmNvZGluZ19wYXJhbWV0ZXJzKGltYWdlLGNwLHRpbGVubyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocGlubyA9IDA7IHBpbm8gPD0gdGNwLT5udW1wb2NzOyArK3Bpbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiB0cF9udW0gPSBvcGpfajJrX2dldF9udW1fdHAoY3AscGlubyx0aWxlbm8pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwX25iX3RpbGVzID0gKnBfbmJfdGlsZXMgKyB0cF9udW07CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX3RvdG51bV90cCArPSB0cF9udW07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0Y3AtPm1fbmJfdGlsZV9wYXJ0cyA9IGN1cl90b3RudW1fdHA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICsrdGNwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya193cml0ZV9zb2MoICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgICAgICAgIC8qIDIgYnl0ZXMgd2lsbCBiZSB3cml0dGVuICovCisgICAgICAgIE9QSl9CWVRFICogbF9zdGFydF9zdHJlYW0gPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIGxfc3RhcnRfc3RyZWFtID0gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YTsKKworICAgICAgICAvKiB3cml0ZSBTT0MgaWRlbnRpZmllciAqLworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9zdGFydF9zdHJlYW0sSjJLX01TX1NPQywyKTsKKworICAgICAgICBpZiAob3BqX3N0cmVhbV93cml0ZV9kYXRhKHBfc3RyZWFtLGxfc3RhcnRfc3RyZWFtLDIscF9tYW5hZ2VyKSAhPSAyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisvKiBVbmlQRz4+ICovCisjaWZkZWYgVVNFX0pQV0wKKyAgICAgICAgLyogdXBkYXRlIG1hcmtlcnMgc3RydWN0ICovCisvKgorICAgICAgICBPUEpfQk9PTCByZXMgPSBqMmtfYWRkX21hcmtlcihwX2oyay0+Y3N0cl9pbmZvLCBKMktfTVNfU09DLCBwX3N0cmVhbV90ZWxsKHBfc3RyZWFtKSAtIDIsIDIpOworKi8KKyAgYXNzZXJ0KCAwICYmICJUT0RPIiApOworI2VuZGlmIC8qIFVTRV9KUFdMICovCisvKiA8PFVuaVBHICovCisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisvKioKKyAqIFJlYWRzIGEgU09DIG1hcmtlciAoU3RhcnQgb2YgQ29kZXN0cmVhbSkKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgIEZJWE1FIERPQworICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3JlYWRfc29jKCAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX0JZVEUgbF9kYXRhIFsyXTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX21hcmtlcjsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGlmIChvcGpfc3RyZWFtX3JlYWRfZGF0YShwX3N0cmVhbSxsX2RhdGEsMixwX21hbmFnZXIpICE9IDIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMobF9kYXRhLCZsX21hcmtlciwyKTsKKyAgICAgICAgaWYgKGxfbWFya2VyICE9IEoyS19NU19TT0MpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogTmV4dCBtYXJrZXIgc2hvdWxkIGJlIGEgU0laIG1hcmtlciBpbiB0aGUgbWFpbiBoZWFkZXIgKi8KKyAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPSBKMktfU1RBVEVfTUhTSVo7CisKKyAgICAgICAgLyogRklYTUUgbW92ZSBpdCBpbiBhIGluZGV4IHN0cnVjdHVyZSBpbmNsdWRlZCBpbiBwX2oyayovCisgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT5tYWluX2hlYWRfc3RhcnQgPSBvcGpfc3RyZWFtX3RlbGwocF9zdHJlYW0pIC0gMjsKKworICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0lORk8sICJTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWQpLlxuIiwgcF9qMmstPmNzdHJfaW5kZXgtPm1haW5faGVhZF9zdGFydCk7CisKKyAgICAgICAgLyogQWRkIHRoZSBtYXJrZXIgdG8gdGhlIGNvZGVzdHJlYW0gaW5kZXgqLworICAgICAgICBpZiAoT1BKX0ZBTFNFID09IG9wal9qMmtfYWRkX21obWFya2VyKHBfajJrLT5jc3RyX2luZGV4LCBKMktfTVNfU09DLCBwX2oyay0+Y3N0cl9pbmRleC0+bWFpbl9oZWFkX3N0YXJ0LCAyKSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgbWggbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya193cml0ZV9zaXooICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3NpemVfbGVuOworICAgICAgICBPUEpfQllURSAqIGxfY3VycmVudF9wdHI7CisgICAgICAgIG9wal9pbWFnZV90ICogbF9pbWFnZSA9IDAwOworICAgICAgICBvcGpfY3BfdCAqY3AgPSAwMDsKKyAgICAgICAgb3BqX2ltYWdlX2NvbXBfdCAqIGxfaW1nX2NvbXAgPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIGxfaW1hZ2UgPSBwX2oyay0+bV9wcml2YXRlX2ltYWdlOworICAgICAgICBjcCA9ICYocF9qMmstPm1fY3ApOworICAgICAgICBsX3NpemVfbGVuID0gNDAgKyAzICogbF9pbWFnZS0+bnVtY29tcHM7CisgICAgICAgIGxfaW1nX2NvbXAgPSBsX2ltYWdlLT5jb21wczsKKworICAgICAgICBpZiAobF9zaXplX2xlbiA+IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSkgeworCisgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19oZWFkZXJfdGlsZV9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsIGxfc2l6ZV9sZW4pOworICAgICAgICAgICAgICAgIGlmICghIG5ld19oZWFkZXJfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSBmb3IgdGhlIFNJWiBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSA9IG5ld19oZWFkZXJfdGlsZV9kYXRhOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSA9IGxfc2l6ZV9sZW47CisgICAgICAgIH0KKworICAgICAgICBsX2N1cnJlbnRfcHRyID0gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YTsKKworICAgICAgICAvKiB3cml0ZSBTT0MgaWRlbnRpZmllciAqLworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X3B0cixKMktfTVNfU0laLDIpOyAgICAvKiBTSVogKi8KKyAgICAgICAgbF9jdXJyZW50X3B0cis9MjsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X3B0cixsX3NpemVfbGVuLTIsMik7IC8qIExfU0laICovCisgICAgICAgIGxfY3VycmVudF9wdHIrPTI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9wdHIsIGNwLT5yc2l6LCAyKTsgICAgLyogUnNpeiAoY2FwYWJpbGl0aWVzKSAqLworICAgICAgICBsX2N1cnJlbnRfcHRyKz0yOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfcHRyLCBsX2ltYWdlLT54MSwgNCk7IC8qIFhzaXogKi8KKyAgICAgICAgbF9jdXJyZW50X3B0cis9NDsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X3B0ciwgbF9pbWFnZS0+eTEsIDQpOyAvKiBZc2l6ICovCisgICAgICAgIGxfY3VycmVudF9wdHIrPTQ7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9wdHIsIGxfaW1hZ2UtPngwLCA0KTsgLyogWDBzaXogKi8KKyAgICAgICAgbF9jdXJyZW50X3B0cis9NDsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X3B0ciwgbF9pbWFnZS0+eTAsIDQpOyAvKiBZMHNpeiAqLworICAgICAgICBsX2N1cnJlbnRfcHRyKz00OworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfcHRyLCBjcC0+dGR4LCA0KTsgICAgICAgICAgICAgLyogWFRzaXogKi8KKyAgICAgICAgbF9jdXJyZW50X3B0cis9NDsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X3B0ciwgY3AtPnRkeSwgNCk7ICAgICAgICAgICAgIC8qIFlUc2l6ICovCisgICAgICAgIGxfY3VycmVudF9wdHIrPTQ7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9wdHIsIGNwLT50eDAsIDQpOyAgICAgICAgICAgICAvKiBYVDBzaXogKi8KKyAgICAgICAgbF9jdXJyZW50X3B0cis9NDsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X3B0ciwgY3AtPnR5MCwgNCk7ICAgICAgICAgICAgIC8qIFlUMHNpeiAqLworICAgICAgICBsX2N1cnJlbnRfcHRyKz00OworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfcHRyLCBsX2ltYWdlLT5udW1jb21wcywgMik7ICAgLyogQ3NpeiAqLworICAgICAgICBsX2N1cnJlbnRfcHRyKz0yOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsX2ltYWdlLT5udW1jb21wczsgKytpKSB7CisgICAgICAgICAgICAgICAgLyogVE9ETyBoZXJlIHdpdGggTUNUID8gKi8KKyAgICAgICAgICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X3B0ciwgbF9pbWdfY29tcC0+cHJlYyAtIDEgKyAobF9pbWdfY29tcC0+c2duZCA8PCA3KSwgMSk7ICAgICAgLyogU3Npel9pICovCisgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfcHRyOworCisgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9wdHIsIGxfaW1nX2NvbXAtPmR4LCAxKTsgICAgICAvKiBYUnNpel9pICovCisgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfcHRyOworCisgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9wdHIsIGxfaW1nX2NvbXAtPmR5LCAxKTsgICAgICAvKiBZUnNpel9pICovCisgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfcHRyOworCisgICAgICAgICAgICAgICAgKytsX2ltZ19jb21wOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9wal9zdHJlYW1fd3JpdGVfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLGxfc2l6ZV9sZW4scF9tYW5hZ2VyKSAhPSBsX3NpemVfbGVuKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworLyoqCisgKiBSZWFkcyBhIFNJWiBtYXJrZXIgKGltYWdlIGFuZCB0aWxlIHNpemUpCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgIHRoZSBqcGVnMjAwMCBmaWxlIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFNJWiBib3guCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgU0laIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX3NpeihvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2NvbXA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9jb21wX3JlbWFpbjsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3JlbWFpbmluZ19zaXplOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfdGlsZXM7CisgICAgICAgIE9QSl9VSU5UMzIgbF90bXA7CisgICAgICAgIG9wal9pbWFnZV90ICpsX2ltYWdlID0gMDA7CisgICAgICAgIG9wal9jcF90ICpsX2NwID0gMDA7CisgICAgICAgIG9wal9pbWFnZV9jb21wX3QgKiBsX2ltZ19jb21wID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqIGxfY3VycmVudF90aWxlX3BhcmFtID0gMDA7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfaGVhZGVyX2RhdGEgIT0gMDApOworCisgICAgICAgIGxfaW1hZ2UgPSBwX2oyay0+bV9wcml2YXRlX2ltYWdlOworICAgICAgICBsX2NwID0gJihwX2oyay0+bV9jcCk7CisKKyAgICAgICAgLyogbWluaW11bSBzaXplID09IDM5IC0gMyAoPSBtaW5pbXVtIGNvbXBvbmVudCBwYXJhbWV0ZXIpICovCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplIDwgMzYpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3Igd2l0aCBTSVogbWFya2VyIHNpemVcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBsX3JlbWFpbmluZ19zaXplID0gcF9oZWFkZXJfc2l6ZSAtIDM2OworICAgICAgICBsX25iX2NvbXAgPSBsX3JlbWFpbmluZ19zaXplIC8gMzsKKyAgICAgICAgbF9uYl9jb21wX3JlbWFpbiA9IGxfcmVtYWluaW5nX3NpemUgJSAzOworICAgICAgICBpZiAobF9uYl9jb21wX3JlbWFpbiAhPSAwKXsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3Igd2l0aCBTSVogbWFya2VyIHNpemVcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX3RtcCAsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUnNpeiAoY2FwYWJpbGl0aWVzKSAqLworICAgICAgICBwX2hlYWRlcl9kYXRhKz0yOworICAgICAgICBsX2NwLT5yc2l6ID0gKE9QSl9SU0laX0NBUEFCSUxJVElFUykgbF90bXA7CisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsIChPUEpfVUlOVDMyKikgJmxfaW1hZ2UtPngxLCA0KTsgICAvKiBYc2l6ICovCisgICAgICAgIHBfaGVhZGVyX2RhdGErPTQ7CisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsIChPUEpfVUlOVDMyKikgJmxfaW1hZ2UtPnkxLCA0KTsgICAvKiBZc2l6ICovCisgICAgICAgIHBfaGVhZGVyX2RhdGErPTQ7CisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsIChPUEpfVUlOVDMyKikgJmxfaW1hZ2UtPngwLCA0KTsgICAvKiBYMHNpeiAqLworICAgICAgICBwX2hlYWRlcl9kYXRhKz00OworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCAoT1BKX1VJTlQzMiopICZsX2ltYWdlLT55MCwgNCk7ICAgLyogWTBzaXogKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSs9NDsKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwgKE9QSl9VSU5UMzIqKSAmbF9jcC0+dGR4LCA0KTsgICAgICAgICAgICAgLyogWFRzaXogKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSs9NDsKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwgKE9QSl9VSU5UMzIqKSAmbF9jcC0+dGR5LCA0KTsgICAgICAgICAgICAgLyogWVRzaXogKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSs9NDsKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwgKE9QSl9VSU5UMzIqKSAmbF9jcC0+dHgwLCA0KTsgICAgICAgICAgICAgLyogWFQwc2l6ICovCisgICAgICAgIHBfaGVhZGVyX2RhdGErPTQ7CisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsIChPUEpfVUlOVDMyKikgJmxfY3AtPnR5MCwgNCk7ICAgICAgICAgICAgIC8qIFlUMHNpeiAqLworICAgICAgICBwX2hlYWRlcl9kYXRhKz00OworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCAoT1BKX1VJTlQzMiopICZsX3RtcCwgMik7ICAgICAgICAgICAgICAgICAvKiBDc2l6ICovCisgICAgICAgIHBfaGVhZGVyX2RhdGErPTI7CisgICAgICAgIGlmIChsX3RtcCA8IDE2Mzg1KQorICAgICAgICAgICAgICAgIGxfaW1hZ2UtPm51bWNvbXBzID0gKE9QSl9VSU5UMTYpIGxfdG1wOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3Igd2l0aCBTSVogbWFya2VyOiBudW1iZXIgb2YgY29tcG9uZW50IGlzIGlsbGVnYWwgLT4gJWRcbiIsIGxfdG1wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxfaW1hZ2UtPm51bWNvbXBzICE9IGxfbmJfY29tcCkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpXG4iLCBsX2ltYWdlLT5udW1jb21wcywgbF9uYl9jb21wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogdGVzdGNhc2UgNDAzNS5wZGYuU0lHU0VHVi5kOGIuMzM3NSAqLworICAgICAgICBpZiAobF9pbWFnZS0+eDAgPiBsX2ltYWdlLT54MSB8fCBsX2ltYWdlLT55MCA+IGxfaW1hZ2UtPnkxKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHdpdGggU0laIG1hcmtlcjogbmVnYXRpdmUgaW1hZ2Ugc2l6ZSAoJWQgeCAlZClcbiIsIGxfaW1hZ2UtPngxIC0gbF9pbWFnZS0+eDAsIGxfaW1hZ2UtPnkxIC0gbF9pbWFnZS0+eTApOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgLyogdGVzdGNhc2UgMjUzOS5wZGYuU0lHRlBFLjcwNi4xNzEyIChhbHNvIDM2MjIucGRmLlNJR0ZQRS43MDYuMjkxNiBhbmQgNDAwOC5wZGYuU0lHRlBFLjcwNi4zMzQ1IGFuZCBtYXliZSBtb3JlKSAqLworICAgICAgICBpZiAoIShsX2NwLT50ZHggKiBsX2NwLT50ZHkpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHdpdGggU0laIG1hcmtlcjogaW52YWxpZCB0aWxlIHNpemUgKHRkeDogJWQsIHRkeTogJWQpXG4iLCBsX2NwLT50ZHgsIGxfY3AtPnRkeSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHRlc3RjYXNlIDE2MTAucGRmLlNJR1NFR1YuNTljLjY4MSAqLworICAgICAgICBpZiAoKChPUEpfVUlOVDY0KWxfaW1hZ2UtPngxKSAqICgoT1BKX1VJTlQ2NClsX2ltYWdlLT55MSkgIT0gKGxfaW1hZ2UtPngxICogbF9pbWFnZS0+eTEpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlByZXZlbnQgYnVmZmVyIG92ZXJmbG93ICh4MTogJWQsIHkxOiAlZClcbiIsIGxfaW1hZ2UtPngxLCBsX2ltYWdlLT55MSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisjaWZkZWYgVVNFX0pQV0wKKyAgICAgICAgaWYgKGxfY3AtPmNvcnJlY3QpIHsKKyAgICAgICAgICAgICAgICAvKiBpZiBKUFdMIGlzIG9uLCB3ZSBjaGVjayB3aGV0aGVyIFRYIGVycm9ycyBoYXZlIGRhbWFnZWQKKyAgICAgICAgICAgICAgICAgIHRvbyBtdWNoIHRoZSBTSVogcGFyYW1ldGVycyAqLworICAgICAgICAgICAgICAgIGlmICghKGxfaW1hZ2UtPngxICogbF9pbWFnZS0+eTEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSlBXTDogYmFkIGltYWdlIHNpemUgKCVkIHggJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2ltYWdlLT54MSwgbF9pbWFnZS0+eTEpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFKUFdMX0FTU1VNRSB8fCBKUFdMX0FTU1VNRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSlBXTDogZ2l2aW5nIHVwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgLyogRklYTUUgY2hlY2sgcHJldmlvdXNseSBpbiB0aGUgZnVuY3Rpb24gc28gd2h5IGtlZXAgdGhpcyBwaWVjZSBvZiBjb2RlID8gTmVlZCBieSB0aGUgbm9ybSA/CisgICAgICAgICAgICAgICAgaWYgKGxfaW1hZ2UtPm51bWNvbXBzICE9ICgobGVuIC0gMzgpIC8gMykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBKUFdMX0FTU1VNRSA/IEVWVF9XQVJOSU5HIDogRVZUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSlBXTDogQ3NpeiBpcyAlZCA9PiBzcGFjZSBpbiBTSVogb25seSBmb3IgJWQgY29tcHMuISEhXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2ltYWdlLT5udW1jb21wcywgKChsZW4gLSAzOCkgLyAzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUpQV0xfQVNTVU1FKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJKUFdMOiBnaXZpbmcgdXBcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAqLyAgICAgICAgICAgICAgLyogd2UgdHJ5IHRvIGNvcnJlY3QgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIi0gdHJ5aW5nIHRvIGFkanVzdCB0aGlzXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2ltYWdlLT5udW1jb21wcyA8ICgobGVuIC0gMzgpIC8gMykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gMzggKyAzICogbF9pbWFnZS0+bnVtY29tcHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIi0gc2V0dGluZyBMc2l6IHRvICVkID0+IEhZUE9USEVTSVMhISFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfaW1hZ2UtPm51bWNvbXBzID0gKChsZW4gLSAzOCkgLyAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiLSBzZXR0aW5nIENzaXogdG8gJWQgPT4gSFlQT1RIRVNJUyEhIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2ltYWdlLT5udW1jb21wcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAqLworCisgICAgICAgICAgICAgICAgLyogdXBkYXRlIGNvbXBvbmVudHMgbnVtYmVyIGluIHRoZSBqcHdsX2V4cF9jb21wcyBmaWxlZCAqLworICAgICAgICAgICAgICAgIGxfY3AtPmV4cF9jb21wcyA9IGxfaW1hZ2UtPm51bWNvbXBzOworICAgICAgICB9CisjZW5kaWYgLyogVVNFX0pQV0wgKi8KKworICAgICAgICAvKiBBbGxvY2F0ZSB0aGUgcmVzdWx0aW5nIGltYWdlIGNvbXBvbmVudHMgKi8KKyAgICAgICAgbF9pbWFnZS0+Y29tcHMgPSAob3BqX2ltYWdlX2NvbXBfdCopIG9wal9jYWxsb2MobF9pbWFnZS0+bnVtY29tcHMsIHNpemVvZihvcGpfaW1hZ2VfY29tcF90KSk7CisgICAgICAgIGlmIChsX2ltYWdlLT5jb21wcyA9PSAwMCl7CisgICAgICAgICAgICAgICAgbF9pbWFnZS0+bnVtY29tcHMgPSAwOworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byB0YWtlIGluIGNoYXJnZSBTSVogbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgbWVtc2V0KGxfaW1hZ2UtPmNvbXBzLDAsbF9pbWFnZS0+bnVtY29tcHMgKiBzaXplb2Yob3BqX2ltYWdlX2NvbXBfdCkpOworICAgICAgICBsX2ltZ19jb21wID0gbF9pbWFnZS0+Y29tcHM7CisKKyAgICAgICAgLyogUmVhZCB0aGUgY29tcG9uZW50IGluZm9ybWF0aW9uICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsX2ltYWdlLT5udW1jb21wczsgKytpKXsKKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRtcDsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZ0bXAsMSk7ICAgLyogU3Npel9pICovCisgICAgICAgICAgICAgICAgKytwX2hlYWRlcl9kYXRhOworICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAtPnByZWMgPSAodG1wICYgMHg3ZikgKyAxOworICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAtPnNnbmQgPSB0bXAgPj4gNzsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZ0bXAsMSk7ICAgLyogWFJzaXpfaSAqLworICAgICAgICAgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKyAgICAgICAgICAgICAgICBsX2ltZ19jb21wLT5keCA9IChPUEpfVUlOVDMyKXRtcDsgLyogc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1ICovCisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmdG1wLDEpOyAgIC8qIFlSc2l6X2kgKi8KKyAgICAgICAgICAgICAgICArK3BfaGVhZGVyX2RhdGE7CisgICAgICAgICAgICAgICAgbF9pbWdfY29tcC0+ZHkgPSAoT1BKX1VJTlQzMil0bXA7IC8qIHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDI1NSAqLworICAgICAgICAgICAgICAgIGlmKCBsX2ltZ19jb21wLT5keCA8IDEgfHwgbF9pbWdfY29tcC0+ZHggPiAyNTUgfHwKKyAgICAgICAgICAgICAgICAgICAgbF9pbWdfY29tcC0+ZHkgPCAxIHx8IGxfaW1nX2NvbXAtPmR5ID4gMjU1ICkgeworICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHZhbHVlcyBmb3IgY29tcCA9ICVkIDogZHg9JXUgZHk9JXVcbiAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1IGFjY29yZGluZyB0aGUgSlBFRzIwMDAgbm9ybSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIGxfaW1nX2NvbXAtPmR4LCBsX2ltZ19jb21wLT5keSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisjaWZkZWYgVVNFX0pQV0wKKyAgICAgICAgICAgICAgICBpZiAobF9jcC0+Y29ycmVjdCkgeworICAgICAgICAgICAgICAgIC8qIGlmIEpQV0wgaXMgb24sIHdlIGNoZWNrIHdoZXRoZXIgVFggZXJyb3JzIGhhdmUgZGFtYWdlZAorICAgICAgICAgICAgICAgICAgICAgICAgdG9vIG11Y2ggdGhlIFNJWiBwYXJhbWV0ZXJzLCBhZ2FpbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobF9pbWFnZS0+Y29tcHNbaV0uZHggKiBsX2ltYWdlLT5jb21wc1tpXS5keSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEpQV0xfQVNTVU1FID8gRVZUX1dBUk5JTkcgOiBFVlRfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkpQV0w6IGJhZCBYUnNpel8lZC9ZUnNpel8lZCAoJWQgeCAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgaSwgbF9pbWFnZS0+Y29tcHNbaV0uZHgsIGxfaW1hZ2UtPmNvbXBzW2ldLmR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFKUFdMX0FTU1VNRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJKUFdMOiBnaXZpbmcgdXBcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogd2UgdHJ5IHRvIGNvcnJlY3QgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiLSB0cnlpbmcgdG8gYWRqdXN0IHRoZW1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxfaW1hZ2UtPmNvbXBzW2ldLmR4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9pbWFnZS0+Y29tcHNbaV0uZHggPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIi0gc2V0dGluZyBYUnNpel8lZCB0byAlZCA9PiBIWVBPVEhFU0lTISEhXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgbF9pbWFnZS0+Y29tcHNbaV0uZHgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbF9pbWFnZS0+Y29tcHNbaV0uZHkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2ltYWdlLT5jb21wc1tpXS5keSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiLSBzZXR0aW5nIFlSc2l6XyVkIHRvICVkID0+IEhZUE9USEVTSVMhISFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBsX2ltYWdlLT5jb21wc1tpXS5keSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisjZW5kaWYgLyogVVNFX0pQV0wgKi8KKyAgICAgICAgICAgICAgICBsX2ltZ19jb21wLT5yZXNub19kZWNvZGVkID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHJlc29sdXRpb24gZGVjb2RlZCAqLworICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAtPmZhY3RvciA9IGxfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWMubV9yZWR1Y2U7IC8qIHJlZHVjaW5nIGZhY3RvciBwZXIgY29tcG9uZW50ICovCisgICAgICAgICAgICAgICAgKytsX2ltZ19jb21wOworICAgICAgICB9CisKKyAgICAgICAgLyogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIHRpbGVzICovCisgICAgICAgIGxfY3AtPnR3ID0gKE9QSl9VSU5UMzIpb3BqX2ludF9jZWlsZGl2KChPUEpfSU5UMzIpKGxfaW1hZ2UtPngxIC0gbF9jcC0+dHgwKSwgKE9QSl9JTlQzMilsX2NwLT50ZHgpOworICAgICAgICBsX2NwLT50aCA9IChPUEpfVUlOVDMyKW9wal9pbnRfY2VpbGRpdigoT1BKX0lOVDMyKShsX2ltYWdlLT55MSAtIGxfY3AtPnR5MCksIChPUEpfSU5UMzIpbF9jcC0+dGR5KTsKKworICAgICAgICAvKiBDaGVjayB0aGF0IHRoZSBudW1iZXIgb2YgdGlsZXMgaXMgdmFsaWQgKi8KKyAgICAgICAgaWYgKGxfY3AtPnR3ID09IDAgfHwgbF9jcC0+dGggPT0gMCB8fCBsX2NwLT50dyA+IDY1NTM1IC8gbF9jcC0+dGgpIHsKKyAgICAgICAgICAgIG9wal9ldmVudF9tc2coICBwX21hbmFnZXIsIEVWVF9FUlJPUiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgbnVtYmVyIG9mIHRpbGVzIDogJXUgeCAldSAobWF4aW11bSBmaXhlZCBieSBqcGVnMjAwMCBub3JtIGlzIDY1NTM1IHRpbGVzKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT50dywgbF9jcC0+dGgpOworICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBsX25iX3RpbGVzID0gbF9jcC0+dHcgKiBsX2NwLT50aDsKKworICAgICAgICAvKiBEZWZpbmUgdGhlIHRpbGVzIHdoaWNoIHdpbGwgYmUgZGVjb2RlZCAqLworICAgICAgICBpZiAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGlzY2FyZF90aWxlcykgeworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXJ0X3RpbGVfeCA9IChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGFydF90aWxlX3ggLSBsX2NwLT50eDApIC8gbF9jcC0+dGR4OworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXJ0X3RpbGVfeSA9IChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGFydF90aWxlX3kgLSBsX2NwLT50eTApIC8gbF9jcC0+dGR5OworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2VuZF90aWxlX3ggPSAoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXYoKE9QSl9JTlQzMikocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZW5kX3RpbGVfeCAtIGxfY3AtPnR4MCksIChPUEpfSU5UMzIpbF9jcC0+dGR4KTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9lbmRfdGlsZV95ID0gKE9QSl9VSU5UMzIpb3BqX2ludF9jZWlsZGl2KChPUEpfSU5UMzIpKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2VuZF90aWxlX3kgLSBsX2NwLT50eTApLCAoT1BKX0lOVDMyKWxfY3AtPnRkeSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhcnRfdGlsZV94ID0gMDsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGFydF90aWxlX3kgPSAwOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2VuZF90aWxlX3ggPSBsX2NwLT50dzsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9lbmRfdGlsZV95ID0gbF9jcC0+dGg7CisgICAgICAgIH0KKworI2lmZGVmIFVTRV9KUFdMCisgICAgICAgIGlmIChsX2NwLT5jb3JyZWN0KSB7CisgICAgICAgICAgICAgICAgLyogaWYgSlBXTCBpcyBvbiwgd2UgY2hlY2sgd2hldGhlciBUWCBlcnJvcnMgaGF2ZSBkYW1hZ2VkCisgICAgICAgICAgICAgICAgICB0b28gbXVjaCB0aGUgU0laIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAgICBpZiAoKGxfY3AtPnR3IDwgMSkgfHwgKGxfY3AtPnRoIDwgMSkgfHwgKGxfY3AtPnR3ID4gbF9jcC0+bWF4X3RpbGVzKSB8fCAobF9jcC0+dGggPiBsX2NwLT5tYXhfdGlsZXMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgSlBXTF9BU1NVTUUgPyBFVlRfV0FSTklORyA6IEVWVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkpQV0w6IGJhZCBudW1iZXIgb2YgdGlsZXMgKCVkIHggJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT50dywgbF9jcC0+dGgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFKUFdMX0FTU1VNRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSlBXTDogZ2l2aW5nIHVwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdlIHRyeSB0byBjb3JyZWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICItIHRyeWluZyB0byBhZGp1c3QgdGhlbVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9jcC0+dHcgPCAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnR3PSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICItIHNldHRpbmcgJWQgdGlsZXMgaW4geCA9PiBIWVBPVEhFU0lTISEhXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+dHcpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfY3AtPnR3ID4gbF9jcC0+bWF4X3RpbGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnR3PSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICItIHRvbyBsYXJnZSB4LCBpbmNyZWFzZSBleHBlY3RhbmNlIG9mICVkXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0gc2V0dGluZyAlZCB0aWxlcyBpbiB4ID0+IEhZUE9USEVTSVMhISFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+bWF4X3RpbGVzLCBsX2NwLT50dyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9jcC0+dGggPCAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnRoPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICItIHNldHRpbmcgJWQgdGlsZXMgaW4geSA9PiBIWVBPVEhFU0lTISEhXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+dGgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfY3AtPnRoID4gbF9jcC0+bWF4X3RpbGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnRoPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICItIHRvbyBsYXJnZSB5LCBpbmNyZWFzZSBleHBlY3RhbmNlIG9mICVkIHRvIGNvbnRpbnVlXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItIHNldHRpbmcgJWQgdGlsZXMgaW4geSA9PiBIWVBPVEhFU0lTISEhXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPm1heF90aWxlcywgbF9jcC0+dGgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmIC8qIFVTRV9KUFdMICovCisKKyAgICAgICAgLyogbWVtb3J5IGFsbG9jYXRpb25zICovCisgICAgICAgIGxfY3AtPnRjcHMgPSAob3BqX3RjcF90Kikgb3BqX2NhbGxvYyhsX25iX3RpbGVzLCBzaXplb2Yob3BqX3RjcF90KSk7CisgICAgICAgIGlmIChsX2NwLT50Y3BzID09IDAwKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHRha2UgaW4gY2hhcmdlIFNJWiBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KGxfY3AtPnRjcHMsMCxsX25iX3RpbGVzKnNpemVvZihvcGpfdGNwX3QpKTsKKworI2lmZGVmIFVTRV9KUFdMCisgICAgICAgIGlmIChsX2NwLT5jb3JyZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKCFsX2NwLT50Y3BzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgSlBXTF9BU1NVTUUgPyBFVlRfV0FSTklORyA6IEVWVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkpQV0w6IGNvdWxkIG5vdCBhbGxvYyB0Y3BzIGZpZWxkIG9mIGNwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSlBXTF9BU1NVTUUgfHwgSlBXTF9BU1NVTUUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkpQV0w6IGdpdmluZyB1cFxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYgLyogVVNFX0pQV0wgKi8KKworICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcC0+dGNjcHMgPQorICAgICAgICAgICAgICAgICAgICAgICAgKG9wal90Y2NwX3QqKSBvcGpfY2FsbG9jKGxfaW1hZ2UtPm51bWNvbXBzLCBzaXplb2Yob3BqX3RjY3BfdCkpOworICAgICAgICBpZihwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcC0+dGNjcHMgID09IDAwKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHRha2UgaW4gY2hhcmdlIFNJWiBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2RlZmF1bHRfdGNwLT50Y2NwcyAsMCxsX2ltYWdlLT5udW1jb21wcypzaXplb2Yob3BqX3RjY3BfdCkpOworCisgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2RlZmF1bHRfdGNwLT5tX21jdF9yZWNvcmRzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIChvcGpfbWN0X2RhdGFfdCopb3BqX21hbGxvYyhPUEpfSjJLX01DVF9ERUZBVUxUX05CX1JFQ09SRFMgKiBzaXplb2Yob3BqX21jdF9kYXRhX3QpKTsKKworICAgICAgICBpZiAoISBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcC0+bV9tY3RfcmVjb3JkcykgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byB0YWtlIGluIGNoYXJnZSBTSVogbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIG1lbXNldChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcC0+bV9tY3RfcmVjb3JkcywwLE9QSl9KMktfTUNUX0RFRkFVTFRfTkJfUkVDT1JEUyAqIHNpemVvZihvcGpfbWN0X2RhdGFfdCkpOworICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcC0+bV9uYl9tYXhfbWN0X3JlY29yZHMgPSBPUEpfSjJLX01DVF9ERUZBVUxUX05CX1JFQ09SRFM7CisKKyAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3AtPm1fbWNjX3JlY29yZHMgPQorICAgICAgICAgICAgICAgICAgICAgICAgKG9wal9zaW1wbGVfbWNjX2RlY29ycmVsYXRpb25fZGF0YV90KikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9tYWxsb2MoT1BKX0oyS19NQ0NfREVGQVVMVF9OQl9SRUNPUkRTICogc2l6ZW9mKG9wal9zaW1wbGVfbWNjX2RlY29ycmVsYXRpb25fZGF0YV90KSk7CisKKyAgICAgICAgaWYgKCEgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3AtPm1fbWNjX3JlY29yZHMpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gdGFrZSBpbiBjaGFyZ2UgU0laIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBtZW1zZXQocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3AtPm1fbWNjX3JlY29yZHMsMCxPUEpfSjJLX01DQ19ERUZBVUxUX05CX1JFQ09SRFMgKiBzaXplb2Yob3BqX3NpbXBsZV9tY2NfZGVjb3JyZWxhdGlvbl9kYXRhX3QpKTsKKyAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3AtPm1fbmJfbWF4X21jY19yZWNvcmRzID0gT1BKX0oyS19NQ0NfREVGQVVMVF9OQl9SRUNPUkRTOworCisgICAgICAgIC8qIHNldCB1cCBkZWZhdWx0IGRjIGxldmVsIHNoaWZ0ICovCisgICAgICAgIGZvciAoaT0wO2k8bF9pbWFnZS0+bnVtY29tcHM7KytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEgbF9pbWFnZS0+Y29tcHNbaV0uc2duZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3AtPnRjY3BzW2ldLm1fZGNfbGV2ZWxfc2hpZnQgPSAxIDw8IChsX2ltYWdlLT5jb21wc1tpXS5wcmVjIC0gMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbF9jdXJyZW50X3RpbGVfcGFyYW0gPSBsX2NwLT50Y3BzOworICAgICAgICBmb3IgICAgIChpID0gMDsgaSA8IGxfbmJfdGlsZXM7ICsraSkgeworICAgICAgICAgICAgICAgIGxfY3VycmVudF90aWxlX3BhcmFtLT50Y2NwcyA9IChvcGpfdGNjcF90Kikgb3BqX21hbGxvYyhsX2ltYWdlLT5udW1jb21wcyAqIHNpemVvZihvcGpfdGNjcF90KSk7CisgICAgICAgICAgICAgICAgaWYgKGxfY3VycmVudF90aWxlX3BhcmFtLT50Y2NwcyA9PSAwMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHRha2UgaW4gY2hhcmdlIFNJWiBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWVtc2V0KGxfY3VycmVudF90aWxlX3BhcmFtLT50Y2NwcywwLGxfaW1hZ2UtPm51bWNvbXBzICogc2l6ZW9mKG9wal90Y2NwX3QpKTsKKworICAgICAgICAgICAgICAgICsrbF9jdXJyZW50X3RpbGVfcGFyYW07CisgICAgICAgIH0KKworICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9ICBKMktfU1RBVEVfTUg7IC8qIEZJWE1FIEoyS19ERUNfU1RBVEVfTUg7ICovCisgICAgICAgIG9wal9pbWFnZV9jb21wX2hlYWRlcl91cGRhdGUobF9pbWFnZSxsX2NwKTsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfY29tKCAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIE9QSl9VSU5UMzIgbF9jb21tZW50X3NpemU7CisgICAgICAgIE9QSl9VSU5UMzIgbF90b3RhbF9jb21fc2l6ZTsKKyAgICAgICAgY29uc3QgT1BKX0NIQVIgKmxfY29tbWVudDsKKyAgICAgICAgT1BKX0JZVEUgKiBsX2N1cnJlbnRfcHRyID0gMDA7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICBsX2NvbW1lbnQgPSBwX2oyay0+bV9jcC5jb21tZW50OworICAgICAgICBsX2NvbW1lbnRfc2l6ZSA9IChPUEpfVUlOVDMyKXN0cmxlbihsX2NvbW1lbnQpOworICAgICAgICBsX3RvdGFsX2NvbV9zaXplID0gbF9jb21tZW50X3NpemUgKyA2OworCisgICAgICAgIGlmIChsX3RvdGFsX2NvbV9zaXplID4gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplKSB7CisgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19oZWFkZXJfdGlsZV9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsIGxfdG90YWxfY29tX3NpemUpOworICAgICAgICAgICAgICAgIGlmICghIG5ld19oZWFkZXJfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byB3cml0ZSB0aGUgQ09NIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhID0gbmV3X2hlYWRlcl90aWxlX2RhdGE7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gbF90b3RhbF9jb21fc2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIGxfY3VycmVudF9wdHIgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfcHRyLEoyS19NU19DT00gLCAyKTsgIC8qIENPTSAqLworICAgICAgICBsX2N1cnJlbnRfcHRyKz0yOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfcHRyLGxfdG90YWxfY29tX3NpemUgLSAyICwgMik7ICAgICAgICAvKiBMX0NPTSAqLworICAgICAgICBsX2N1cnJlbnRfcHRyKz0yOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfcHRyLDEgLCAyKTsgICAvKiBHZW5lcmFsIHVzZSAoSVMgODg1OS0xNToxOTk5IChMYXRpbikgdmFsdWVzKSAqLworICAgICAgICBsX2N1cnJlbnRfcHRyKz0yOworCisgICAgICAgIG1lbWNweSggbF9jdXJyZW50X3B0cixsX2NvbW1lbnQsbF9jb21tZW50X3NpemUpOworCisgICAgICAgIGlmIChvcGpfc3RyZWFtX3dyaXRlX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSxsX3RvdGFsX2NvbV9zaXplLHBfbWFuYWdlcikgIT0gbF90b3RhbF9jb21fc2l6ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogUmVhZHMgYSBDT00gbWFya2VyIChjb21tZW50cykKKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfZGF0YSAgIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgQ09NIGJveC4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBDT00gbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9jb20gKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9oZWFkZXJfZGF0YSAhPSAwMCk7CisgICh2b2lkKXBfaGVhZGVyX3NpemU7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX3dyaXRlX2NvZCggICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgb3BqX2NwX3QgKmxfY3AgPSAwMDsKKyAgICAgICAgb3BqX3RjcF90ICpsX3RjcCA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfY29kZV9zaXplLGxfcmVtYWluaW5nX3NpemU7CisgICAgICAgIE9QSl9CWVRFICogbF9jdXJyZW50X2RhdGEgPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGxfY3AgPSAmKHBfajJrLT5tX2NwKTsKKyAgICAgICAgbF90Y3AgPSAmbF9jcC0+dGNwc1twX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXTsKKyAgICAgICAgbF9jb2RlX3NpemUgPSA5ICsgb3BqX2oya19nZXRfU1BDb2RfU1BDb2Nfc2l6ZShwX2oyayxwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyLDApOworICAgICAgICBsX3JlbWFpbmluZ19zaXplID0gbF9jb2RlX3NpemU7CisKKyAgICAgICAgaWYgKGxfY29kZV9zaXplID4gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplKSB7CisgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19oZWFkZXJfdGlsZV9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsIGxfY29kZV9zaXplKTsKKyAgICAgICAgICAgICAgICBpZiAoISBuZXdfaGVhZGVyX3RpbGVfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgQ09EIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhID0gbmV3X2hlYWRlcl90aWxlX2RhdGE7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gbF9jb2RlX3NpemU7CisgICAgICAgIH0KKworICAgICAgICBsX2N1cnJlbnRfZGF0YSA9IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGE7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLEoyS19NU19DT0QsMik7ICAgICAgICAgICAvKiBDT0QgKi8KKyAgICAgICAgbF9jdXJyZW50X2RhdGEgKz0gMjsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsbF9jb2RlX3NpemUtMiwyKTsgICAgICAgIC8qIExfQ09EICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfdGNwLT5jc3R5LDEpOyAgICAgICAgICAvKiBTY29kICovCisgICAgICAgICsrbF9jdXJyZW50X2RhdGE7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfdGNwLT5wcmcsMSk7ICAgICAgICAgICAvKiBTR2NvZCAoQSkgKi8KKyAgICAgICAgKytsX2N1cnJlbnRfZGF0YTsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsbF90Y3AtPm51bWxheWVycywyKTsgICAgIC8qIFNHY29kIChCKSAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSs9MjsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsbF90Y3AtPm1jdCwxKTsgICAgICAgICAgIC8qIFNHY29kIChDKSAqLworICAgICAgICArK2xfY3VycmVudF9kYXRhOworCisgICAgICAgIGxfcmVtYWluaW5nX3NpemUgLT0gOTsKKworICAgICAgICBpZiAoISBvcGpfajJrX3dyaXRlX1NQQ29kX1NQQ29jKHBfajJrLHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIsMCxsX2N1cnJlbnRfZGF0YSwmbF9yZW1haW5pbmdfc2l6ZSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHdyaXRpbmcgQ09EIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsX3JlbWFpbmluZ19zaXplICE9IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3Igd3JpdGluZyBDT0QgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9wal9zdHJlYW1fd3JpdGVfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLGxfY29kZV9zaXplLHBfbWFuYWdlcikgIT0gbF9jb2RlX3NpemUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisvKioKKyAqIFJlYWRzIGEgQ09EIG1hcmtlciAoQ29kaW5nIFN0eWtlIGRlZmF1bHRzKQorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIENPRCBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIENPRCBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX2NvZCAoICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIC8qIGxvb3AgKi8KKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfVUlOVDMyIGxfdG1wOworICAgICAgICBvcGpfY3BfdCAqbF9jcCA9IDAwOworICAgICAgICBvcGpfdGNwX3QgKmxfdGNwID0gMDA7CisgICAgICAgIG9wal9pbWFnZV90ICpsX2ltYWdlID0gMDA7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9oZWFkZXJfZGF0YSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIGxfaW1hZ2UgPSBwX2oyay0+bV9wcml2YXRlX2ltYWdlOworICAgICAgICBsX2NwID0gJihwX2oyay0+bV9jcCk7CisKKyAgICAgICAgLyogSWYgd2UgYXJlIGluIHRoZSBmaXJzdCB0aWxlLXBhcnQgaGVhZGVyIG9mIHRoZSBjdXJyZW50IHRpbGUgKi8KKyAgICAgICAgbF90Y3AgPSAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPT0gSjJLX1NUQVRFX1RQSCkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbF9jcC0+dGNwc1twX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2RlZmF1bHRfdGNwOworCisgICAgICAgIC8qIE1ha2Ugc3VyZSByb29tIGlzIHN1ZmZpY2llbnQgKi8KKyAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgPCA1KSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgQ09EIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfdGNwLT5jc3R5LDEpOyAgICAgICAgICAgLyogU2NvZCAqLworICAgICAgICArK3BfaGVhZGVyX2RhdGE7CisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfdG1wLDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR2NvZCAoQSkgKi8KKyAgICAgICAgKytwX2hlYWRlcl9kYXRhOworICAgICAgICBsX3RjcC0+cHJnID0gKE9QSl9QUk9HX09SREVSKSBsX3RtcDsKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF90Y3AtPm51bWxheWVycywyKTsgICAgICAvKiBTR2NvZCAoQikgKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSs9MjsKKworICAgICAgICAvKiBJZiB1c2VyIGRpZG4ndCBzZXQgYSBudW1iZXIgbGF5ZXIgdG8gZGVjb2RlIHRha2UgdGhlIG1heCBzcGVjaWZ5IGluIHRoZSBjb2Rlc3RyZWFtLiAqLworICAgICAgICBpZiAgICAgIChsX2NwLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjLm1fbGF5ZXIpIHsKKyAgICAgICAgICAgICAgICBsX3RjcC0+bnVtX2xheWVyc190b19kZWNvZGUgPSBsX2NwLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjLm1fbGF5ZXI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbF90Y3AtPm51bV9sYXllcnNfdG9fZGVjb2RlID0gbF90Y3AtPm51bWxheWVyczsKKyAgICAgICAgfQorCisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfdGNwLT5tY3QsMSk7ICAgICAgICAgICAgLyogU0djb2QgKEMpICovCisgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKworICAgICAgICBwX2hlYWRlcl9zaXplIC09IDU7CisgICAgICAgIGZvciAgICAgKGkgPSAwOyBpIDwgbF9pbWFnZS0+bnVtY29tcHM7ICsraSkgeworICAgICAgICAgICAgICAgIGxfdGNwLT50Y2Nwc1tpXS5jc3R5ID0gbF90Y3AtPmNzdHkgJiBKMktfQ0NQX0NTVFlfUFJUOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEgb3BqX2oya19yZWFkX1NQQ29kX1NQQ29jKHBfajJrLDAscF9oZWFkZXJfZGF0YSwmcF9oZWFkZXJfc2l6ZSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgQ09EIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplICE9IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBDT0QgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogQXBwbHkgdGhlIGNvZGluZyBzdHlsZSB0byBvdGhlciBjb21wb25lbnRzIG9mIHRoZSBjdXJyZW50IHRpbGUgb3IgdGhlIG1fZGVmYXVsdF90Y3AqLworICAgICAgICBvcGpfajJrX2NvcHlfdGlsZV9jb21wb25lbnRfcGFyYW1ldGVycyhwX2oyayk7CisKKyAgICAgICAgLyogSW5kZXggKi8KKyNpZmRlZiBXSVBfUkVNT1ZFX01TRAorICAgICAgICBpZiAocF9qMmstPmNzdHJfaW5mbykgeworICAgICAgICAgICAgICAgIC8qb3BqX2NvZGVzdHJlYW1faW5mb190ICpsX2NzdHJfaW5mbyA9IHBfajJrLT5jc3RyX2luZm87Ki8KKyAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT5wcm9nID0gbF90Y3AtPnByZzsKKyAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT5udW1sYXllcnMgPSBsX3RjcC0+bnVtbGF5ZXJzOworICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZm8tPm51bWRlY29tcG9zID0gKE9QSl9JTlQzMiopIG9wal9tYWxsb2MobF9pbWFnZS0+bnVtY29tcHMgKiBzaXplb2YoT1BKX1VJTlQzMikpOworICAgICAgICAgICAgICAgIGZvciAgICAgKGkgPSAwOyBpIDwgbF9pbWFnZS0+bnVtY29tcHM7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5mby0+bnVtZGVjb21wb3NbaV0gPSBsX3RjcC0+dGNjcHNbaV0ubnVtcmVzb2x1dGlvbnMgLSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisjaWYgMAorT1BKX0JPT0wgb3BqX2oya193cml0ZV9jb2MoIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfY29tcF9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgICAgICAgIE9QSl9VSU5UMzIgbF9jb2Nfc2l6ZSxsX3JlbWFpbmluZ19zaXplOworICAgICAgICBPUEpfVUlOVDMyIGxfY29tcF9yb29tOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgbF9jb21wX3Jvb20gPSAocF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHMgPD0gMjU2KSA/IDEgOiAyOworCisgICAgICAgIGxfY29jX3NpemUgPSA1ICsgbF9jb21wX3Jvb20gKyBvcGpfajJrX2dldF9TUENvZF9TUENvY19zaXplKHBfajJrLHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIscF9jb21wX25vKTsKKworICAgICAgICBpZiAobF9jb2Nfc2l6ZSA+IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSkgeworICAgICAgICAgICAgICAgIE9QSl9CWVRFICpuZXdfaGVhZGVyX3RpbGVfZGF0YTsKKyAgICAgICAgICAgICAgICAvKnBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgID0gKE9QSl9CWVRFKilvcGpfcmVhbGxvYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jb2Nfc2l6ZSk7Ki8KKworICAgICAgICAgICAgICAgIG5ld19oZWFkZXJfdGlsZV9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsIGxfY29jX3NpemUpOworICAgICAgICAgICAgICAgIGlmICghIG5ld19oZWFkZXJfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byB3cml0ZSBDT0MgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBuZXdfaGVhZGVyX3RpbGVfZGF0YTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhX3NpemUgPSBsX2NvY19zaXplOworICAgICAgICB9CisKKyAgICAgICAgb3BqX2oya193cml0ZV9jb2NfaW5fbWVtb3J5KHBfajJrLHBfY29tcF9ubyxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLCZsX3JlbWFpbmluZ19zaXplLHBfbWFuYWdlcik7CisKKyAgICAgICAgaWYgKG9wal9zdHJlYW1fd3JpdGVfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLGxfY29jX3NpemUscF9tYW5hZ2VyKSAhPSBsX2NvY19zaXplKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKyNlbmRpZgorCisjaWYgMAordm9pZCBvcGpfajJrX3dyaXRlX2NvY19pbl9tZW1vcnkoICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9jb21wX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9kYXRhX3dyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgb3BqX2NwX3QgKmxfY3AgPSAwMDsKKyAgICAgICAgb3BqX3RjcF90ICpsX3RjcCA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfY29jX3NpemUsbF9yZW1haW5pbmdfc2l6ZTsKKyAgICAgICAgT1BKX0JZVEUgKiBsX2N1cnJlbnRfZGF0YSA9IDAwOworICAgICAgICBvcGpfaW1hZ2VfdCAqbF9pbWFnZSA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfY29tcF9yb29tOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgbF9jcCA9ICYocF9qMmstPm1fY3ApOworICAgICAgICBsX3RjcCA9ICZsX2NwLT50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdOworICAgICAgICBsX2ltYWdlID0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZTsKKyAgICAgICAgbF9jb21wX3Jvb20gPSAobF9pbWFnZS0+bnVtY29tcHMgPD0gMjU2KSA/IDEgOiAyOworCisgICAgICAgIGxfY29jX3NpemUgPSA1ICsgbF9jb21wX3Jvb20gKyBvcGpfajJrX2dldF9TUENvZF9TUENvY19zaXplKHBfajJrLHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIscF9jb21wX25vKTsKKyAgICAgICAgbF9yZW1haW5pbmdfc2l6ZSA9IGxfY29jX3NpemU7CisKKyAgICAgICAgbF9jdXJyZW50X2RhdGEgPSBwX2RhdGE7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLEoyS19NU19DT0MsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ09DICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfY29jX3NpemUtMiwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogTF9DT0MgKi8KKyAgICAgICAgbF9jdXJyZW50X2RhdGEgKz0gMjsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEscF9jb21wX25vLCBsX2NvbXBfcm9vbSk7ICAgICAgICAgLyogQ2NvYyAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSs9bF9jb21wX3Jvb207CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLCBsX3RjcC0+dGNjcHNbcF9jb21wX25vXS5jc3R5LCAxKTsgICAgICAgICAgICAgICAvKiBTY29jICovCisgICAgICAgICsrbF9jdXJyZW50X2RhdGE7CisKKyAgICAgICAgbF9yZW1haW5pbmdfc2l6ZSAtPSAoNSArIGxfY29tcF9yb29tKTsKKyAgICAgICAgb3BqX2oya193cml0ZV9TUENvZF9TUENvYyhwX2oyayxwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyLDAsbF9jdXJyZW50X2RhdGEsJmxfcmVtYWluaW5nX3NpemUscF9tYW5hZ2VyKTsKKyAgICAgICAgKiBwX2RhdGFfd3JpdHRlbiA9IGxfY29jX3NpemU7Cit9CisjZW5kaWYKKworT1BKX1VJTlQzMiBvcGpfajJrX2dldF9tYXhfY29jX3NpemUob3BqX2oya190ICpwX2oyaykKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBpLGo7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9jb21wOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfdGlsZXM7CisgICAgICAgIE9QSl9VSU5UMzIgbF9tYXggPSAwOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKworICAgICAgICBsX25iX3RpbGVzID0gcF9qMmstPm1fY3AudHcgKiBwX2oyay0+bV9jcC50aCA7CisgICAgICAgIGxfbmJfY29tcCA9IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzOworCisgICAgICAgIGZvciAoaT0wO2k8bF9uYl90aWxlczsrK2kpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGo9MDtqPGxfbmJfY29tcDsrK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWF4ID0gb3BqX3VpbnRfbWF4KGxfbWF4LG9wal9qMmtfZ2V0X1NQQ29kX1NQQ29jX3NpemUocF9qMmssaSxqKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDYgKyBsX21heDsKK30KKworLyoqCisgKiBSZWFkcyBhIENPQyBtYXJrZXIgKENvZGluZyBTdHlsZSBDb21wb25lbnQpCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfZGF0YSAgIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgQ09DIGJveC4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgQ09DIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3JlYWRfY29jICggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgb3BqX2NwX3QgKmxfY3AgPSBOVUxMOworICAgICAgICBvcGpfdGNwX3QgKmxfdGNwID0gTlVMTDsKKyAgICAgICAgb3BqX2ltYWdlX3QgKmxfaW1hZ2UgPSBOVUxMOworICAgICAgICBPUEpfVUlOVDMyIGxfY29tcF9yb29tOworICAgICAgICBPUEpfVUlOVDMyIGxfY29tcF9ubzsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2hlYWRlcl9kYXRhICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgbF9jcCA9ICYocF9qMmstPm1fY3ApOworICAgICAgICBsX3RjcCA9IChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9PSBKMktfU1RBVEVfVFBIICkgPyAvKkZJWE1FIEoyS19ERUNfU1RBVEVfVFBIKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxfY3AtPnRjcHNbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0gOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcDsKKyAgICAgICAgbF9pbWFnZSA9IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2U7CisKKyAgICAgICAgbF9jb21wX3Jvb20gPSBsX2ltYWdlLT5udW1jb21wcyA8PSAyNTYgPyAxIDogMjsKKworICAgICAgICAvKiBtYWtlIHN1cmUgcm9vbSBpcyBzdWZmaWNpZW50Ki8KKyAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgPCBsX2NvbXBfcm9vbSArIDEpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBDT0MgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIHBfaGVhZGVyX3NpemUgLT0gbF9jb21wX3Jvb20gKyAxOworCisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfY29tcF9ubyxsX2NvbXBfcm9vbSk7ICAgICAgICAgICAgICAgICAgIC8qIENjb2MgKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSArPSBsX2NvbXBfcm9vbTsKKyAgICAgICAgaWYgKGxfY29tcF9ubyA+PSBsX2ltYWdlLT5udW1jb21wcykgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIENPQyBtYXJrZXIgKGJhZCBudW1iZXIgb2YgY29tcG9uZW50cylcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX3RjcC0+dGNjcHNbbF9jb21wX25vXS5jc3R5LDEpOyAgICAgICAgICAgICAgICAgIC8qIFNjb2MgKi8KKyAgICAgICAgKytwX2hlYWRlcl9kYXRhIDsKKworICAgICAgICBpZiAoISBvcGpfajJrX3JlYWRfU1BDb2RfU1BDb2MocF9qMmssbF9jb21wX25vLHBfaGVhZGVyX2RhdGEsJnBfaGVhZGVyX3NpemUscF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIENPQyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAocF9oZWFkZXJfc2l6ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgQ09DIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfcWNkKCAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIE9QSl9VSU5UMzIgbF9xY2Rfc2l6ZSxsX3JlbWFpbmluZ19zaXplOworICAgICAgICBPUEpfQllURSAqIGxfY3VycmVudF9kYXRhID0gMDA7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfc3RyZWFtICE9IDAwKTsKKworICAgICAgICBsX3FjZF9zaXplID0gNCArIG9wal9qMmtfZ2V0X1NRY2RfU1FjY19zaXplKHBfajJrLHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIsMCk7CisgICAgICAgIGxfcmVtYWluaW5nX3NpemUgPSBsX3FjZF9zaXplOworCisgICAgICAgIGlmIChsX3FjZF9zaXplID4gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplKSB7CisgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19oZWFkZXJfdGlsZV9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsIGxfcWNkX3NpemUpOworICAgICAgICAgICAgICAgIGlmICghIG5ld19oZWFkZXJfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byB3cml0ZSBRQ0QgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBuZXdfaGVhZGVyX3RpbGVfZGF0YTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhX3NpemUgPSBsX3FjZF9zaXplOworICAgICAgICB9CisKKyAgICAgICAgbF9jdXJyZW50X2RhdGEgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxKMktfTVNfUUNELDIpOyAgICAgICAgICAgLyogUUNEICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfcWNkX3NpemUtMiwyKTsgICAgICAgICAvKiBMX1FDRCAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSAyOworCisgICAgICAgIGxfcmVtYWluaW5nX3NpemUgLT0gNDsKKworICAgICAgICBpZiAoISBvcGpfajJrX3dyaXRlX1NRY2RfU1FjYyhwX2oyayxwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyLDAsbF9jdXJyZW50X2RhdGEsJmxfcmVtYWluaW5nX3NpemUscF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciB3cml0aW5nIFFDRCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAobF9yZW1haW5pbmdfc2l6ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHdyaXRpbmcgUUNEIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvcGpfc3RyZWFtX3dyaXRlX2RhdGEocF9zdHJlYW0sIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsbF9xY2Rfc2l6ZSxwX21hbmFnZXIpICE9IGxfcWNkX3NpemUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisvKioKKyAqIFJlYWRzIGEgUUNEIG1hcmtlciAoUXVhbnRpemF0aW9uIGRlZmF1bHRzKQorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFFDRCBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFFDRCBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX3FjZCAoICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfaGVhZGVyX2RhdGEgIT0gMDApOworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICBpZiAoISBvcGpfajJrX3JlYWRfU1FjZF9TUWNjKHBfajJrLDAscF9oZWFkZXJfZGF0YSwmcF9oZWFkZXJfc2l6ZSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgUUNEIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplICE9IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBRQ0QgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogQXBwbHkgdGhlIHF1YW50aXphdGlvbiBwYXJhbWV0ZXJzIHRvIG90aGVyIGNvbXBvbmVudHMgb2YgdGhlIGN1cnJlbnQgdGlsZSBvciB0aGUgbV9kZWZhdWx0X3RjcCAqLworICAgICAgICBvcGpfajJrX2NvcHlfdGlsZV9xdWFudGl6YXRpb25fcGFyYW1ldGVycyhwX2oyayk7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisjaWYgMAorT1BKX0JPT0wgb3BqX2oya193cml0ZV9xY2MoICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbXBfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIE9QSl9VSU5UMzIgbF9xY2Nfc2l6ZSxsX3JlbWFpbmluZ19zaXplOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgbF9xY2Nfc2l6ZSA9IDUgKyBvcGpfajJrX2dldF9TUWNkX1NRY2Nfc2l6ZShwX2oyayxwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyLHBfY29tcF9ubyk7CisgICAgICAgIGxfcWNjX3NpemUgKz0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHMgPD0gMjU2ID8gMDoxOworICAgICAgICBsX3JlbWFpbmluZ19zaXplID0gbF9xY2Nfc2l6ZTsKKworICAgICAgICBpZiAobF9xY2Nfc2l6ZSA+IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSkgeworICAgICAgICAgICAgICAgIE9QSl9CWVRFICpuZXdfaGVhZGVyX3RpbGVfZGF0YSA9IChPUEpfQllURSAqKSBvcGpfcmVhbGxvYyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLCBsX3FjY19zaXplKTsKKyAgICAgICAgICAgICAgICBpZiAoISBuZXdfaGVhZGVyX3RpbGVfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgUUNDIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhID0gbmV3X2hlYWRlcl90aWxlX2RhdGE7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gbF9xY2Nfc2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIG9wal9qMmtfd3JpdGVfcWNjX2luX21lbW9yeShwX2oyayxwX2NvbXBfbm8scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSwmbF9yZW1haW5pbmdfc2l6ZSxwX21hbmFnZXIpOworCisgICAgICAgIGlmIChvcGpfc3RyZWFtX3dyaXRlX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSxsX3FjY19zaXplLHBfbWFuYWdlcikgIT0gbF9xY2Nfc2l6ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisjZW5kaWYKKworI2lmIDAKK3ZvaWQgb3BqX2oya193cml0ZV9xY2NfaW5fbWVtb3J5KCAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbXBfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBPUEpfVUlOVDMyIGxfcWNjX3NpemUsbF9yZW1haW5pbmdfc2l6ZTsKKyAgICAgICAgT1BKX0JZVEUgKiBsX2N1cnJlbnRfZGF0YSA9IDAwOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgbF9xY2Nfc2l6ZSA9IDYgKyBvcGpfajJrX2dldF9TUWNkX1NRY2Nfc2l6ZShwX2oyayxwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyLHBfY29tcF9ubyk7CisgICAgICAgIGxfcmVtYWluaW5nX3NpemUgPSBsX3FjY19zaXplOworCisgICAgICAgIGxfY3VycmVudF9kYXRhID0gcF9kYXRhOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxKMktfTVNfUUNDLDIpOyAgICAgICAgICAgLyogUUNDICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgaWYgKHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzIDw9IDI1NikgeworICAgICAgICAgICAgICAgIC0tbF9xY2Nfc2l6ZTsKKworICAgICAgICAgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxsX3FjY19zaXplLTIsMik7ICAgICAgICAgLyogTF9RQ0MgKi8KKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSAyOworCisgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLCBwX2NvbXBfbm8sIDEpOyAgLyogQ3FjYyAqLworICAgICAgICAgICAgICAgICsrbF9jdXJyZW50X2RhdGE7CisKKyAgICAgICAgICAgICAgICAvKiBpbiB0aGUgY2FzZSBvbmx5IG9uZSBieXRlIGlzIHN1ZmZpY2llbnQgdGhlIGxhc3QgYnl0ZSBhbGxvY2F0ZWQgaXMgdXNlbGVzcyAtPiBzdGlsbCBkbyAtNiBmb3IgYXZhaWxhYmxlICovCisgICAgICAgICAgICAgICAgbF9yZW1haW5pbmdfc2l6ZSAtPSA2OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxsX3FjY19zaXplLTIsMik7ICAgICAgICAgLyogTF9RQ0MgKi8KKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSAyOworCisgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLCBwX2NvbXBfbm8sIDIpOyAgLyogQ3FjYyAqLworICAgICAgICAgICAgICAgIGxfY3VycmVudF9kYXRhKz0yOworCisgICAgICAgICAgICAgICAgbF9yZW1haW5pbmdfc2l6ZSAtPSA2OworICAgICAgICB9CisKKyAgICAgICAgb3BqX2oya193cml0ZV9TUWNkX1NRY2MocF9qMmsscF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcixwX2NvbXBfbm8sbF9jdXJyZW50X2RhdGEsJmxfcmVtYWluaW5nX3NpemUscF9tYW5hZ2VyKTsKKworICAgICAgICAqcF9kYXRhX3dyaXR0ZW4gPSBsX3FjY19zaXplOworfQorI2VuZGlmCisKK09QSl9VSU5UMzIgb3BqX2oya19nZXRfbWF4X3FjY19zaXplIChvcGpfajJrX3QgKnBfajJrKQoreworICAgICAgICByZXR1cm4gb3BqX2oya19nZXRfbWF4X2NvY19zaXplKHBfajJrKTsKK30KKworLyoqCisgKiBSZWFkcyBhIFFDQyBtYXJrZXIgKFF1YW50aXphdGlvbiBjb21wb25lbnQpCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfZGF0YSAgIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgUUNDIGJveC4KKyAqIEBwYXJhbSAgICAgICBwX2oyayAgICAgICAgICAgICAgICAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gICAgICAgcF9oZWFkZXJfc2l6ZSAgIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgUUNDIG1hcmtlci4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3JlYWRfcWNjKCAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBsX251bV9jb21wLGxfY29tcF9ubzsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2hlYWRlcl9kYXRhICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgbF9udW1fY29tcCA9IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzOworCisgICAgICAgIGlmIChsX251bV9jb21wIDw9IDI1NikgeworICAgICAgICAgICAgICAgIGlmIChwX2hlYWRlcl9zaXplIDwgMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgUUNDIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX2NvbXBfbm8sMSk7CisgICAgICAgICAgICAgICAgKytwX2hlYWRlcl9kYXRhOworICAgICAgICAgICAgICAgIC0tcF9oZWFkZXJfc2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocF9oZWFkZXJfc2l6ZSA8IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIFFDQyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9jb21wX25vLDIpOworICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGErPTI7CisgICAgICAgICAgICAgICAgcF9oZWFkZXJfc2l6ZS09MjsKKyAgICAgICAgfQorCisjaWZkZWYgVVNFX0pQV0wKKyAgICAgICAgaWYgKHBfajJrLT5tX2NwLmNvcnJlY3QpIHsKKworICAgICAgICAgICAgICAgIHN0YXRpYyBPUEpfVUlOVDMyIGJhY2t1cF9jb21wbm8gPSAwOworCisgICAgICAgICAgICAgICAgLyogY29tcG5vIGlzIG5lZ2F0aXZlIG9yIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyEhISAqLworICAgICAgICAgICAgICAgIGlmICgvKihsX2NvbXBfbm8gPCAwKSB8fCovIChsX2NvbXBfbm8gPj0gbF9udW1fY29tcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKUFdMOiBiYWQgY29tcG9uZW50IG51bWJlciBpbiBRQ0MgKCVkIG91dCBvZiBhIG1heGltdW0gb2YgJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NvbXBfbm8sIGxfbnVtX2NvbXApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFKUFdMX0FTU1VNRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSlBXTDogZ2l2aW5nIHVwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdlIHRyeSB0byBjb3JyZWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBsX2NvbXBfbm8gPSBiYWNrdXBfY29tcG5vICUgbF9udW1fY29tcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIi0gdHJ5aW5nIHRvIGFkanVzdCB0aGlzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItIHNldHRpbmcgY29tcG9uZW50IG51bWJlciB0byAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jb21wX25vKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBrZWVwIHlvdXIgcHJpdmF0ZSBjb3VudCBvZiB0aWxlcyAqLworICAgICAgICAgICAgICAgIGJhY2t1cF9jb21wbm8rKzsKKyAgICAgICAgfTsKKyNlbmRpZiAvKiBVU0VfSlBXTCAqLworCisgICAgICAgIGlmIChsX2NvbXBfbm8gPj0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHMpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgY29tcG9uZW50IG51bWJlcjogJWQsIHJlZ2FyZGluZyB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NvbXBfbm8sIHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEgb3BqX2oya19yZWFkX1NRY2RfU1FjYyhwX2oyayxsX2NvbXBfbm8scF9oZWFkZXJfZGF0YSwmcF9oZWFkZXJfc2l6ZSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgUUNDIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplICE9IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBRQ0MgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX3dyaXRlX3BvYyggICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfY29tcDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3BvYzsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3BvY19zaXplOworICAgICAgICBPUEpfVUlOVDMyIGxfd3JpdHRlbl9zaXplID0gMDsKKyAgICAgICAgb3BqX3RjcF90ICpsX3RjcCA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfcG9jX3Jvb207CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfc3RyZWFtICE9IDAwKTsKKworICAgICAgICBsX3RjcCA9ICZwX2oyay0+bV9jcC50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdOworICAgICAgICBsX25iX2NvbXAgPSBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wczsKKyAgICAgICAgbF9uYl9wb2MgPSAxICsgbF90Y3AtPm51bXBvY3M7CisKKyAgICAgICAgaWYgKGxfbmJfY29tcCA8PSAyNTYpIHsKKyAgICAgICAgICAgICAgICBsX3BvY19yb29tID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsX3BvY19yb29tID0gMjsKKyAgICAgICAgfQorICAgICAgICBsX3BvY19zaXplID0gNCArICg1ICsgMiAqIGxfcG9jX3Jvb20pICogbF9uYl9wb2M7CisKKyAgICAgICAgaWYgKGxfcG9jX3NpemUgPiBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhX3NpemUpIHsKKyAgICAgICAgICAgICAgICBPUEpfQllURSAqbmV3X2hlYWRlcl90aWxlX2RhdGEgPSAoT1BKX0JZVEUgKikgb3BqX3JlYWxsb2MocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSwgbF9wb2Nfc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKCEgbmV3X2hlYWRlcl90aWxlX2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhX3NpemUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIFBPQyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSA9IG5ld19oZWFkZXJfdGlsZV9kYXRhOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSA9IGxfcG9jX3NpemU7CisgICAgICAgIH0KKworICAgICAgICBvcGpfajJrX3dyaXRlX3BvY19pbl9tZW1vcnkocF9qMmsscF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSwmbF93cml0dGVuX3NpemUscF9tYW5hZ2VyKTsKKworICAgICAgICBpZiAob3BqX3N0cmVhbV93cml0ZV9kYXRhKHBfc3RyZWFtLHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsbF9wb2Nfc2l6ZSxwX21hbmFnZXIpICE9IGxfcG9jX3NpemUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCit2b2lkIG9wal9qMmtfd3JpdGVfcG9jX2luX21lbW9yeSggICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfQllURSAqIGxfY3VycmVudF9kYXRhID0gMDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9jb21wOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfcG9jOworICAgICAgICBPUEpfVUlOVDMyIGxfcG9jX3NpemU7CisgICAgICAgIG9wal9pbWFnZV90ICpsX2ltYWdlID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqbF90Y3AgPSAwMDsKKyAgICAgICAgb3BqX3RjY3BfdCAqbF90Y2NwID0gMDA7CisgICAgICAgIG9wal9wb2NfdCAqbF9jdXJyZW50X3BvYyA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfcG9jX3Jvb207CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICBsX3RjcCA9ICZwX2oyay0+bV9jcC50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdOworICAgICAgICBsX3RjY3AgPSAmbF90Y3AtPnRjY3BzWzBdOworICAgICAgICBsX2ltYWdlID0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZTsKKyAgICAgICAgbF9uYl9jb21wID0gbF9pbWFnZS0+bnVtY29tcHM7CisgICAgICAgIGxfbmJfcG9jID0gMSArIGxfdGNwLT5udW1wb2NzOworCisgICAgICAgIGlmIChsX25iX2NvbXAgPD0gMjU2KSB7CisgICAgICAgICAgICAgICAgbF9wb2Nfcm9vbSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbF9wb2Nfcm9vbSA9IDI7CisgICAgICAgIH0KKworICAgICAgICBsX3BvY19zaXplID0gNCArICg1ICsgMiAqIGxfcG9jX3Jvb20pICogbF9uYl9wb2M7CisKKyAgICAgICAgbF9jdXJyZW50X2RhdGEgPSBwX2RhdGE7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLEoyS19NU19QT0MsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQT0MgICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfcG9jX3NpemUtMiwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMcG9jICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgbF9jdXJyZW50X3BvYyA9ICBsX3RjcC0+cG9jczsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxfbmJfcG9jOyArK2kpIHsKKyAgICAgICAgICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsbF9jdXJyZW50X3BvYy0+cmVzbm8wLDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlNwb2NfaSAqLworICAgICAgICAgICAgICAgICsrbF9jdXJyZW50X2RhdGE7CisKKyAgICAgICAgICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsbF9jdXJyZW50X3BvYy0+Y29tcG5vMCxsX3BvY19yb29tKTsgICAgICAgICAgICAgIC8qIENTcG9jX2kgKi8KKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSs9bF9wb2Nfcm9vbTsKKworICAgICAgICAgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxsX2N1cnJlbnRfcG9jLT5sYXlubzEsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMWUVwb2NfaSAqLworICAgICAgICAgICAgICAgIGxfY3VycmVudF9kYXRhKz0yOworCisgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfY3VycmVudF9wb2MtPnJlc25vMSwxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJFcG9jX2kgKi8KKyAgICAgICAgICAgICAgICArK2xfY3VycmVudF9kYXRhOworCisgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfY3VycmVudF9wb2MtPmNvbXBubzEsbF9wb2Nfcm9vbSk7ICAgICAgICAgICAgICAvKiBDRXBvY19pICovCisgICAgICAgICAgICAgICAgbF9jdXJyZW50X2RhdGErPWxfcG9jX3Jvb207CisKKyAgICAgICAgICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsbF9jdXJyZW50X3BvYy0+cHJnLDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUHBvY19pICovCisgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfZGF0YTsKKworICAgICAgICAgICAgICAgIC8qIGNoYW5nZSB0aGUgdmFsdWUgb2YgdGhlIG1heCBsYXllciBhY2NvcmRpbmcgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgbGF5ZXJzIGluIHRoZSBmaWxlLCBjb21wb25lbnRzIGFuZCByZXNvbHV0aW9ucyovCisgICAgICAgICAgICAgICAgbF9jdXJyZW50X3BvYy0+bGF5bm8xID0gKE9QSl9VSU5UMzIpb3BqX2ludF9taW4oKE9QSl9JTlQzMilsX2N1cnJlbnRfcG9jLT5sYXlubzEsIChPUEpfSU5UMzIpbF90Y3AtPm51bWxheWVycyk7CisgICAgICAgICAgICAgICAgbF9jdXJyZW50X3BvYy0+cmVzbm8xID0gKE9QSl9VSU5UMzIpb3BqX2ludF9taW4oKE9QSl9JTlQzMilsX2N1cnJlbnRfcG9jLT5yZXNubzEsIChPUEpfSU5UMzIpbF90Y2NwLT5udW1yZXNvbHV0aW9ucyk7CisgICAgICAgICAgICAgICAgbF9jdXJyZW50X3BvYy0+Y29tcG5vMSA9IChPUEpfVUlOVDMyKW9wal9pbnRfbWluKChPUEpfSU5UMzIpbF9jdXJyZW50X3BvYy0+Y29tcG5vMSwgKE9QSl9JTlQzMilsX25iX2NvbXApOworCisgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfcG9jOworICAgICAgICB9CisKKyAgICAgICAgKnBfZGF0YV93cml0dGVuID0gbF9wb2Nfc2l6ZTsKK30KKworT1BKX1VJTlQzMiBvcGpfajJrX2dldF9tYXhfcG9jX3NpemUob3BqX2oya190ICpwX2oyaykKK3sKKyAgICAgICAgb3BqX3RjcF90ICogbF90Y3AgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3RpbGVzID0gMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX21heF9wb2MgPSAwOworICAgICAgICBPUEpfVUlOVDMyIGk7CisKKyAgICAgICAgbF90Y3AgPSBwX2oyay0+bV9jcC50Y3BzOworICAgICAgICBsX25iX3RpbGVzID0gcF9qMmstPm1fY3AudGggKiBwX2oyay0+bV9jcC50dzsKKworICAgICAgICBmb3IgKGk9MDtpPGxfbmJfdGlsZXM7KytpKSB7CisgICAgICAgICAgICAgICAgbF9tYXhfcG9jID0gb3BqX3VpbnRfbWF4KGxfbWF4X3BvYyxsX3RjcC0+bnVtcG9jcyk7CisgICAgICAgICAgICAgICAgKytsX3RjcDsKKyAgICAgICAgfQorCisgICAgICAgICsrbF9tYXhfcG9jOworCisgICAgICAgIHJldHVybiA0ICsgOSAqIGxfbWF4X3BvYzsKK30KKworT1BKX1VJTlQzMiBvcGpfajJrX2dldF9tYXhfdG9jX3NpemUgKG9wal9qMmtfdCAqcF9qMmspCit7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3RpbGVzOworICAgICAgICBPUEpfVUlOVDMyIGxfbWF4ID0gMDsKKyAgICAgICAgb3BqX3RjcF90ICogbF90Y3AgPSAwMDsKKworICAgICAgICBsX3RjcCA9IHBfajJrLT5tX2NwLnRjcHM7CisgICAgICAgIGxfbmJfdGlsZXMgPSBwX2oyay0+bV9jcC50dyAqIHBfajJrLT5tX2NwLnRoIDsKKworICAgICAgICBmb3IgKGk9MDtpPGxfbmJfdGlsZXM7KytpKSB7CisgICAgICAgICAgICAgICAgbF9tYXggPSBvcGpfdWludF9tYXgobF9tYXgsbF90Y3AtPm1fbmJfdGlsZV9wYXJ0cyk7CisKKyAgICAgICAgICAgICAgICArK2xfdGNwOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDEyICogbF9tYXg7Cit9CisKK09QSl9VSU5UMzIgb3BqX2oya19nZXRfc3BlY2lmaWNfaGVhZGVyX3NpemVzKG9wal9qMmtfdCAqcF9qMmspCit7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9ieXRlcyA9IDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9jb21wczsKKyAgICAgICAgT1BKX1VJTlQzMiBsX2NvY19ieXRlcyxsX3FjY19ieXRlczsKKworICAgICAgICBsX25iX2NvbXBzID0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHMgLSAxOworICAgICAgICBsX25iX2J5dGVzICs9IG9wal9qMmtfZ2V0X21heF90b2Nfc2l6ZShwX2oyayk7CisKKyAgICAgICAgaWYgKHBfajJrLT5tX2NwLm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9jaW5lbWEgPT0gMCkgeworICAgICAgICAgICAgICAgIGxfY29jX2J5dGVzID0gb3BqX2oya19nZXRfbWF4X2NvY19zaXplKHBfajJrKTsKKyAgICAgICAgICAgICAgICBsX25iX2J5dGVzICs9IGxfbmJfY29tcHMgKiBsX2NvY19ieXRlczsKKworICAgICAgICAgICAgICAgIGxfcWNjX2J5dGVzID0gb3BqX2oya19nZXRfbWF4X3FjY19zaXplKHBfajJrKTsKKyAgICAgICAgICAgICAgICBsX25iX2J5dGVzICs9IGxfbmJfY29tcHMgKiBsX3FjY19ieXRlczsKKyAgICAgICAgfQorCisgICAgICAgIGxfbmJfYnl0ZXMgKz0gb3BqX2oya19nZXRfbWF4X3BvY19zaXplKHBfajJrKTsKKworICAgICAgICAvKioqIERFVkVMT1BFUiBDT1JORVIsIEFkZCByb29tIGZvciB5b3VyIGhlYWRlcnMgKioqLworCisgICAgICAgIHJldHVybiBsX25iX2J5dGVzOworfQorCisvKioKKyAqIFJlYWRzIGEgUE9DIG1hcmtlciAoUHJvZ3Jlc3Npb24gT3JkZXIgQ2hhbmdlKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQT0MgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQT0MgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9wb2MgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBPUEpfVUlOVDMyIGksIGxfbmJfY29tcCwgbF90bXA7CisgICAgICAgIG9wal9pbWFnZV90ICogbF9pbWFnZSA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfb2xkX3BvY19uYiwgbF9jdXJyZW50X3BvY19uYiwgbF9jdXJyZW50X3BvY19yZW1haW5pbmc7CisgICAgICAgIE9QSl9VSU5UMzIgbF9jaHVua19zaXplLCBsX2NvbXBfcm9vbTsKKworICAgICAgICBvcGpfY3BfdCAqbF9jcCA9IDAwOworICAgICAgICBvcGpfdGNwX3QgKmxfdGNwID0gMDA7CisgICAgICAgIG9wal9wb2NfdCAqbF9jdXJyZW50X3BvYyA9IDAwOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfaGVhZGVyX2RhdGEgIT0gMDApOworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICBsX2ltYWdlID0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZTsKKyAgICAgICAgbF9uYl9jb21wID0gbF9pbWFnZS0+bnVtY29tcHM7CisgICAgICAgIGlmIChsX25iX2NvbXAgPD0gMjU2KSB7CisgICAgICAgICAgICAgICAgbF9jb21wX3Jvb20gPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxfY29tcF9yb29tID0gMjsKKyAgICAgICAgfQorICAgICAgICBsX2NodW5rX3NpemUgPSA1ICsgMiAqIGxfY29tcF9yb29tOworICAgICAgICBsX2N1cnJlbnRfcG9jX25iID0gcF9oZWFkZXJfc2l6ZSAvIGxfY2h1bmtfc2l6ZTsKKyAgICAgICAgbF9jdXJyZW50X3BvY19yZW1haW5pbmcgPSBwX2hlYWRlcl9zaXplICUgbF9jaHVua19zaXplOworCisgICAgICAgIGlmICgobF9jdXJyZW50X3BvY19uYiA8PSAwKSB8fCAobF9jdXJyZW50X3BvY19yZW1haW5pbmcgIT0gMCkpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBQT0MgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgbF9jcCA9ICYocF9qMmstPm1fY3ApOworICAgICAgICBsX3RjcCA9IChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9PSBKMktfU1RBVEVfVFBIKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX2NwLT50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3A7CisgICAgICAgIGxfb2xkX3BvY19uYiA9IGxfdGNwLT5QT0MgPyBsX3RjcC0+bnVtcG9jcyArIDEgOiAwOworICAgICAgICBsX2N1cnJlbnRfcG9jX25iICs9IGxfb2xkX3BvY19uYjsKKworICAgICAgICBpZihsX2N1cnJlbnRfcG9jX25iID49IDMyKQorICAgICAgICAgIHsKKyAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiVG9vIG1hbnkgUE9DcyAlZFxuIiwgbF9jdXJyZW50X3BvY19uYik7CisgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICB9CisgICAgICAgIGFzc2VydChsX2N1cnJlbnRfcG9jX25iIDwgMzIpOworCisgICAgICAgIC8qIG5vdyBwb2MgaXMgaW4gdXNlLiovCisgICAgICAgIGxfdGNwLT5QT0MgPSAxOworCisgICAgICAgIGxfY3VycmVudF9wb2MgPSAmbF90Y3AtPnBvY3NbbF9vbGRfcG9jX25iXTsKKyAgICAgICAgZm9yICAgICAoaSA9IGxfb2xkX3BvY19uYjsgaSA8IGxfY3VycmVudF9wb2NfbmI7ICsraSkgeworICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJihsX2N1cnJlbnRfcG9jLT5yZXNubzApLDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU3BvY19pICovCisgICAgICAgICAgICAgICAgKytwX2hlYWRlcl9kYXRhOworICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJihsX2N1cnJlbnRfcG9jLT5jb21wbm8wKSxsX2NvbXBfcm9vbSk7ICAgIC8qIENTcG9jX2kgKi8KKyAgICAgICAgICAgICAgICBwX2hlYWRlcl9kYXRhKz1sX2NvbXBfcm9vbTsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCYobF9jdXJyZW50X3BvYy0+bGF5bm8xKSwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTFlFcG9jX2kgKi8KKyAgICAgICAgICAgICAgICAvKiBtYWtlIHN1cmUgbGF5ZXIgZW5kIGlzIGluIGFjY2VwdGFibGUgYm91bmRzICovCisgICAgICAgICAgICAgICAgbF9jdXJyZW50X3BvYy0+bGF5bm8xID0gb3BqX3VpbnRfbWluKGxfY3VycmVudF9wb2MtPmxheW5vMSwgbF90Y3AtPm51bWxheWVycyk7CisgICAgICAgICAgICAgICAgcF9oZWFkZXJfZGF0YSs9MjsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCYobF9jdXJyZW50X3BvYy0+cmVzbm8xKSwxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkVwb2NfaSAqLworICAgICAgICAgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCYobF9jdXJyZW50X3BvYy0+Y29tcG5vMSksbF9jb21wX3Jvb20pOyAgICAvKiBDRXBvY19pICovCisgICAgICAgICAgICAgICAgcF9oZWFkZXJfZGF0YSs9bF9jb21wX3Jvb207CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF90bXAsMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQcG9jX2kgKi8KKyAgICAgICAgICAgICAgICArK3BfaGVhZGVyX2RhdGE7CisgICAgICAgICAgICAgICAgbF9jdXJyZW50X3BvYy0+cHJnID0gKE9QSl9QUk9HX09SREVSKSBsX3RtcDsKKyAgICAgICAgICAgICAgICAvKiBtYWtlIHN1cmUgY29tcCBpcyBpbiBhY2NlcHRhYmxlIGJvdW5kcyAqLworICAgICAgICAgICAgICAgIGxfY3VycmVudF9wb2MtPmNvbXBubzEgPSBvcGpfdWludF9taW4obF9jdXJyZW50X3BvYy0+Y29tcG5vMSwgbF9uYl9jb21wKTsKKyAgICAgICAgICAgICAgICArK2xfY3VycmVudF9wb2M7CisgICAgICAgIH0KKworICAgICAgICBsX3RjcC0+bnVtcG9jcyA9IGxfY3VycmVudF9wb2NfbmIgLSAxOworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogUmVhZHMgYSBDUkcgbWFya2VyIChDb21wb25lbnQgcmVnaXN0cmF0aW9uKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBUTE0gYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBUTE0gbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9jcmcgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfY29tcDsKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9oZWFkZXJfZGF0YSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIGxfbmJfY29tcCA9IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzOworCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplICE9IGxfbmJfY29tcCAqNCkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIENSRyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgLyogRG8gbm90IGNhcmUgb2YgdGhpcyBhdCB0aGUgbW9tZW50IHNpbmNlIG9ubHkgbG9jYWwgdmFyaWFibGVzIGFyZSBzZXQgaGVyZSAqLworICAgICAgICAvKgorICAgICAgICBmb3IKKyAgICAgICAgICAgICAgICAoaSA9IDA7IGkgPCBsX25iX2NvbXA7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfWGNyZ19pLDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhjcmdfaQorICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGErPTI7CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9ZY3JnX2ksMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWGNyZ19pCisgICAgICAgICAgICAgICAgcF9oZWFkZXJfZGF0YSs9MjsKKyAgICAgICAgfQorICAgICAgICAqLworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogUmVhZHMgYSBUTE0gbWFya2VyIChUaWxlIExlbmd0aCBNYXJrZXIpCisgKgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFRMTSBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFRMTSBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX3RsbSAoICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIE9QSl9VSU5UMzIgbF9adGxtLCBsX1N0bG0sIGxfU1QsIGxfU1AsIGxfdG90X251bV90cF9yZW1haW5pbmcsIGxfcXVvdGllbnQsIGxfUHRsbV9zaXplOworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2hlYWRlcl9kYXRhICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgPCAyKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgVExNIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBwX2hlYWRlcl9zaXplIC09IDI7CisKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9adGxtLDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWnRsbSAqLworICAgICAgICArK3BfaGVhZGVyX2RhdGE7CisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfU3RsbSwxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0bG0gKi8KKyAgICAgICAgKytwX2hlYWRlcl9kYXRhOworCisgICAgICAgIGxfU1QgPSAoKGxfU3RsbSA+PiA0KSAmIDB4Myk7CisgICAgICAgIGxfU1AgPSAobF9TdGxtID4+IDYpICYgMHgxOworCisgICAgICAgIGxfUHRsbV9zaXplID0gKGxfU1AgKyAxKSAqIDI7CisgICAgICAgIGxfcXVvdGllbnQgPSBsX1B0bG1fc2l6ZSArIGxfU1Q7CisKKyAgICAgICAgbF90b3RfbnVtX3RwX3JlbWFpbmluZyA9IHBfaGVhZGVyX3NpemUgJSBsX3F1b3RpZW50OworCisgICAgICAgIGlmIChsX3RvdF9udW1fdHBfcmVtYWluaW5nICE9IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBUTE0gbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIC8qIEZJWE1FIERvIG5vdCBjYXJlIG9mIHRoaXMgYXQgdGhlIG1vbWVudCBzaW5jZSBvbmx5IGxvY2FsIHZhcmlhYmxlcyBhcmUgc2V0IGhlcmUgKi8KKyAgICAgICAgLyoKKyAgICAgICAgZm9yCisgICAgICAgICAgICAgICAgKGkgPSAwOyBpIDwgbF90b3RfbnVtX3RwOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX1R0bG1faSxsX1NUKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUdGxtX2kKKyAgICAgICAgICAgICAgICBwX2hlYWRlcl9kYXRhICs9IGxfU1Q7CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9QdGxtX2ksbF9QdGxtX3NpemUpOyAgICAgICAgICAgIC8vIFB0bG1faQorICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGEgKz0gbF9QdGxtX3NpemU7CisgICAgICAgIH0qLworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogUmVhZHMgYSBQTE0gbWFya2VyIChQYWNrZXQgbGVuZ3RoLCBtYWluIGhlYWRlciBtYXJrZXIpCisgKgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFRMTSBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFRMTSBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX3BsbSAoICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfaGVhZGVyX2RhdGEgIT0gMDApOworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICBpZiAocF9oZWFkZXJfc2l6ZSA8IDEpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBQTE0gbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIC8qIERvIG5vdCBjYXJlIG9mIHRoaXMgYXQgdGhlIG1vbWVudCBzaW5jZSBvbmx5IGxvY2FsIHZhcmlhYmxlcyBhcmUgc2V0IGhlcmUgKi8KKyAgICAgICAgLyoKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9acGxtLDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBacGxtCisgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKyAgICAgICAgLS1wX2hlYWRlcl9zaXplOworCisgICAgICAgIHdoaWxlCisgICAgICAgICAgICAgICAgKHBfaGVhZGVyX3NpemUgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9OcGxtLDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTnBsbQorICAgICAgICAgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKyAgICAgICAgICAgICAgICBwX2hlYWRlcl9zaXplIC09ICgxK2xfTnBsbSk7CisgICAgICAgICAgICAgICAgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIChwX2hlYWRlcl9zaXplIDwgMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBQTE0gbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAoaSA9IDA7IGkgPCBsX05wbG07ICsraSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX3RtcCwxKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXBsbV9pagorICAgICAgICAgICAgICAgICAgICAgICAgKytwX2hlYWRlcl9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFrZSBvbmx5IHRoZSBsYXN0IHNldmVuIGJ5dGVzCisgICAgICAgICAgICAgICAgICAgICAgICBsX3BhY2tldF9sZW4gfD0gKGxfdG1wICYgMHg3Zik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobF90bXAgJiAweDgwKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3BhY2tldF9sZW4gPDw9IDc7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gc3RvcmUgcGFja2V0IGxlbmd0aCBhbmQgcHJvY2VlZCB0byBuZXh0IHBhY2tldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3BhY2tldF9sZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZgorICAgICAgICAgICAgICAgICAgICAgICAgKGxfcGFja2V0X2xlbiAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIFBMTSBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAqLworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogUmVhZHMgYSBQTFQgbWFya2VyIChQYWNrZXQgbGVuZ3RoLCB0aWxlLXBhcnQgaGVhZGVyKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQTFQgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQTFQgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9wbHQgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBPUEpfVUlOVDMyIGxfWnBsdCwgbF90bXAsIGxfcGFja2V0X2xlbiA9IDAsIGk7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9oZWFkZXJfZGF0YSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplIDwgMSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIFBMVCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX1pwbHQsMSk7ICAgICAgICAgICAgICAgIC8qIFpwbHQgKi8KKyAgICAgICAgKytwX2hlYWRlcl9kYXRhOworICAgICAgICAtLXBfaGVhZGVyX3NpemU7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBfaGVhZGVyX3NpemU7ICsraSkgeworICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfdG1wLDEpOyAgICAgICAgIC8qIElwbHRfaWogKi8KKyAgICAgICAgICAgICAgICArK3BfaGVhZGVyX2RhdGE7CisgICAgICAgICAgICAgICAgLyogdGFrZSBvbmx5IHRoZSBsYXN0IHNldmVuIGJ5dGVzICovCisgICAgICAgICAgICAgICAgbF9wYWNrZXRfbGVuIHw9IChsX3RtcCAmIDB4N2YpOworICAgICAgICAgICAgICAgIGlmIChsX3RtcCAmIDB4ODApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcGFja2V0X2xlbiA8PD0gNzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBzdG9yZSBwYWNrZXQgbGVuZ3RoIGFuZCBwcm9jZWVkIHRvIG5leHQgcGFja2V0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBsX3BhY2tldF9sZW4gPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChsX3BhY2tldF9sZW4gIT0gMCkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIFBMVCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKyNpZiAwCitPUEpfQk9PTCBqMmtfcmVhZF9wcG1fdjIgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCisgICAgICAgIG9wal9jcF90ICpsX2NwID0gMDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9yZW1haW5pbmdfZGF0YSwgbF9aX3BwbSwgbF9OX3BwbTsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2hlYWRlcl9kYXRhICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgPCAxKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgUFBNIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGxfY3AgPSAmKHBfajJrLT5tX2NwKTsKKyAgICAgICAgbF9jcC0+cHBtID0gMTsKKworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX1pfcHBtLDEpOyAgICAgICAgICAgICAgIC8qIFpfcHBtICovCisgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKyAgICAgICAgLS1wX2hlYWRlcl9zaXplOworCisgICAgICAgIC8qIEZpcnN0IFBQTSBtYXJrZXIgKi8KKyAgICAgICAgaWYgKGxfWl9wcG0gPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChwX2hlYWRlcl9zaXplIDwgNCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgUFBNIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfTl9wcG0sNCk7ICAgICAgICAgICAgICAgLyogTl9wcG0gKi8KKyAgICAgICAgICAgICAgICBwX2hlYWRlcl9kYXRhKz00OworICAgICAgICAgICAgICAgIHBfaGVhZGVyX3NpemUtPTQ7CisKKyAgICAgICAgICAgICAgICAvKiBGaXJzdCBQUE0gbWFya2VyOiBJbml0aWFsaXphdGlvbiAqLworICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9sZW4gPSBsX05fcHBtOworICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9kYXRhX3NpemUgPSAwOworCisgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2J1ZmZlciA9IChPUEpfQllURSAqKSBvcGpfbWFsbG9jKGxfY3AtPnBwbV9sZW4pOworICAgICAgICAgICAgICAgIGlmIChsX2NwLT5wcG1fYnVmZmVyID09IDAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgcmVhZGluZyBwcG0gbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1lbXNldChsX2NwLT5wcG1fYnVmZmVyLDAsbF9jcC0+cHBtX2xlbik7CisKKyAgICAgICAgICAgICAgICBsX2NwLT5wcG1fZGF0YSA9IGxfY3AtPnBwbV9idWZmZXI7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIGlmIChsX2NwLT5wcG1fZGF0YV9zaXplID09IGxfY3AtPnBwbV9sZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwX2hlYWRlcl9zaXplID49IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVhZCBhIE5fcHBtICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfTl9wcG0sNCk7ICAgICAgICAgICAgICAgLyogTl9wcG0gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9oZWFkZXJfZGF0YSs9NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9oZWFkZXJfc2l6ZS09NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2xlbiArPSBsX05fcHBtIDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqbmV3X3BwbV9idWZmZXIgPSAoT1BKX0JZVEUgKikgb3BqX3JlYWxsb2MobF9jcC0+cHBtX2J1ZmZlciwgbF9jcC0+cHBtX2xlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG5ld19wcG1fYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jcC0+cHBtX2J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2xlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSByZWFkaW5nIHBwbSBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2J1ZmZlciA9IG5ld19wcG1fYnVmZmVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQobF9jcC0+cHBtX2J1ZmZlcitsX2NwLT5wcG1fZGF0YV9zaXplLDAsbF9OX3BwbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9kYXRhID0gbF9jcC0+cHBtX2J1ZmZlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxfcmVtYWluaW5nX2RhdGEgPSBsX2NwLT5wcG1fbGVuIC0gbF9jcC0+cHBtX2RhdGFfc2l6ZTsKKworICAgICAgICAgICAgICAgIGlmIChsX3JlbWFpbmluZ19kYXRhIDw9IHBfaGVhZGVyX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdlIG11c3Qgc3RvcmUgbGVzcyBpbmZvcm1hdGlvbiB0aGFuIGF2YWlsYWJsZSBpbiB0aGUgcGFja2V0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkobF9jcC0+cHBtX2J1ZmZlciArIGxfY3AtPnBwbV9kYXRhX3NpemUgLCBwX2hlYWRlcl9kYXRhICwgbF9yZW1haW5pbmdfZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT5wcG1fZGF0YV9zaXplID0gbF9jcC0+cHBtX2xlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfaGVhZGVyX3NpemUgLT0gbF9yZW1haW5pbmdfZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGEgKz0gbF9yZW1haW5pbmdfZGF0YTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkobF9jcC0+cHBtX2J1ZmZlciArIGxfY3AtPnBwbV9kYXRhX3NpemUgLCBwX2hlYWRlcl9kYXRhICwgcF9oZWFkZXJfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT5wcG1fZGF0YV9zaXplICs9IHBfaGVhZGVyX3NpemU7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2hlYWRlcl9kYXRhICs9IHBfaGVhZGVyX3NpemU7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2hlYWRlcl9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKyNlbmRpZgorCitPUEpfQk9PTCBqMmtfcmVhZF9wcG1fdjMgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBvcGpfY3BfdCAqbF9jcCA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfcmVtYWluaW5nX2RhdGEsIGxfWl9wcG0sIGxfTl9wcG07CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9oZWFkZXJfZGF0YSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIC8qIE1pbmltdW0gc2l6ZSBvZiBQUE0gbWFya2VyIGlzIGVxdWFsIHRvIHRoZSBzaXplIG9mIFpwcG0gZWxlbWVudCAqLworICAgICAgICBpZiAocF9oZWFkZXJfc2l6ZSA8IDEpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBQUE0gbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgbF9jcCA9ICYocF9qMmstPm1fY3ApOworICAgICAgICBsX2NwLT5wcG0gPSAxOworCisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfWl9wcG0sMSk7ICAgICAgICAgICAgICAgLyogWl9wcG0gKi8KKyAgICAgICAgKytwX2hlYWRlcl9kYXRhOworICAgICAgICAtLXBfaGVhZGVyX3NpemU7CisKKyAgICAgICAgLyogRmlyc3QgUFBNIG1hcmtlciAqLworICAgICAgICBpZiAobF9aX3BwbSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogV2UgbmVlZCBub3cgYXQgbGVhc3QgdGhlIE5wcG1eMCBlbGVtZW50ICovCisgICAgICAgICAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgPCA0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBQUE0gbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9OX3BwbSw0KTsgICAgICAgICAgICAgICAvKiBGaXJzdCBOX3BwbSAqLworICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGErPTQ7CisgICAgICAgICAgICAgICAgcF9oZWFkZXJfc2l6ZS09NDsKKworICAgICAgICAgICAgICAgIC8qIHNhbml0eSBjaGVjazogaG93IG11Y2ggYnl0ZXMgaXMgbGVmdCBmb3IgSXBwbSAqLworICAgICAgICAgICAgICAgIGlmKCBwX2hlYWRlcl9zaXplIDwgbF9OX3BwbSApCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBieXRlcyAoJXUpIHRvIGhvbGQgSXBwbSBzZXJpZXMgKCV1KSwgSW5kZXggKCVkKVxuIiwgcF9oZWFkZXJfc2l6ZSwgbF9OX3BwbSwgbF9aX3BwbSApOworICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jcC0+cHBtX2RhdGEpOworICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgICBsX2NwLT5wcG0gPSAwOyAvKiBkbyBub3QgdXNlIFBQTSAqLworICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIEZpcnN0IFBQTSBtYXJrZXI6IEluaXRpYWxpemF0aW9uICovCisgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2xlbiA9IGxfTl9wcG07CisgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2RhdGFfcmVhZCA9IDA7CisKKyAgICAgICAgICAgICAgICBsX2NwLT5wcG1fZGF0YSA9IChPUEpfQllURSAqKSBvcGpfbWFsbG9jKGxfY3AtPnBwbV9sZW4pOworICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9idWZmZXIgPSBsX2NwLT5wcG1fZGF0YTsKKyAgICAgICAgICAgICAgICBpZiAobF9jcC0+cHBtX2RhdGEgPT0gMDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIHBwbSBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWVtc2V0KGxfY3AtPnBwbV9kYXRhLDAsbF9jcC0+cHBtX2xlbik7CisKKyAgICAgICAgICAgICAgICBsX2NwLT5wcG1fZGF0YV9jdXJyZW50ID0gbF9jcC0+cHBtX2RhdGE7CisKKyAgICAgICAgICAgICAgICAvKmxfY3AtPnBwbV9kYXRhID0gbF9jcC0+cHBtX2J1ZmZlcjsqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChwX2hlYWRlcl9zaXplIDwgNCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiRW1wdHkgUFBNIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogVW5jb21wbGV0ZWQgSXBwbSBzZXJpZXMgaW4gdGhlIHByZXZpb3VzIFBQTSBtYXJrZXI/Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2NwLT5wcG1fZGF0YV9yZWFkIDwgbF9jcC0+cHBtX2xlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHZXQgdGhlIHBsYWNlIHdoZXJlIGFkZCB0aGUgcmVtYWluaW5nIElwcG0gc2VyaWVzKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2RhdGFfY3VycmVudCA9ICYobF9jcC0+cHBtX2RhdGFbbF9jcC0+cHBtX2RhdGFfcmVhZF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX05fcHBtID0gbF9jcC0+cHBtX2xlbiAtIGxfY3AtPnBwbV9kYXRhX3JlYWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19wcG1fZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9OX3BwbSw0KTsgICAgICAgICAgICAgICAvKiBGaXJzdCBOX3BwbSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2hlYWRlcl9kYXRhKz00OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2hlYWRlcl9zaXplLT00OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNhbml0eSBjaGVjazogaG93IG11Y2ggYnl0ZXMgaXMgbGVmdCBmb3IgSXBwbSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggcF9oZWFkZXJfc2l6ZSA8IGxfTl9wcG0gKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBieXRlcyAoJXUpIHRvIGhvbGQgSXBwbSBzZXJpZXMgKCV1KSwgSW5kZXggKCVkKVxuIiwgcF9oZWFkZXJfc2l6ZSwgbF9OX3BwbSwgbF9aX3BwbSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfY3AtPnBwbV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT5wcG1fZGF0YSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtID0gMDsgLyogZG8gbm90IHVzZSBQUE0gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5jcmVhc2UgdGhlIHNpemUgb2YgcHBtX2RhdGEgdG8gYWRkIHRoZSBuZXcgSXBwbSBzZXJpZXMqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQobF9jcC0+cHBtX2RhdGEgPT0gbF9jcC0+cHBtX2J1ZmZlciAmJiAiV2UgbmVlZCBwcG1fZGF0YSBhbmQgcHBtX2J1ZmZlciB0byBiZSB0aGUgc2FtZSB3aGVuIHJlYWxsb2NhdGluZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHBtX2RhdGEgPSAoT1BKX0JZVEUgKikgb3BqX3JlYWxsb2MobF9jcC0+cHBtX2RhdGEsIGxfY3AtPnBwbV9sZW4gKyBsX05fcHBtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbmV3X3BwbV9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jcC0+cHBtX2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9kYXRhID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT5wcG1fYnVmZmVyID0gTlVMTDsgIC8qIFRPRE86IG5vIG5lZWQgZm9yIGEgbmV3IGxvY2FsIHZhcmlhYmxlOiBwcG1fYnVmZmVyIGFuZCBwcG1fZGF0YSBhcmUgZW5vdWdoICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2xlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGluY3JlYXNlIHRoZSBzaXplIG9mIHBwbV9kYXRhIHRvIGFkZCB0aGUgbmV3IElwcG0gc2VyaWVzXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9kYXRhID0gbmV3X3BwbV9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT5wcG1fYnVmZmVyID0gbF9jcC0+cHBtX2RhdGE7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogS2VlcCB0aGUgcG9zaXRpb24gb2YgdGhlIHBsYWNlIHdoZXJlIGNvbmNhdGVuYXRlIHRoZSBuZXcgc2VyaWVzKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2RhdGFfY3VycmVudCA9ICYobF9jcC0+cHBtX2RhdGFbbF9jcC0+cHBtX2xlbl0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT5wcG1fbGVuICs9IGxfTl9wcG07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbF9yZW1haW5pbmdfZGF0YSA9IHBfaGVhZGVyX3NpemU7CisKKyAgICAgICAgd2hpbGUgKGxfcmVtYWluaW5nX2RhdGEgPj0gbF9OX3BwbSkgeworICAgICAgICAgICAgICAgIC8qIHJlYWQgYSBjb21wbGV0ZSBJcHBtIHNlcmllcyovCisgICAgICAgICAgICAgICAgbWVtY3B5KGxfY3AtPnBwbV9kYXRhX2N1cnJlbnQsIHBfaGVhZGVyX2RhdGEsIGxfTl9wcG0pOworICAgICAgICAgICAgICAgIHBfaGVhZGVyX3NpemUgLT0gbF9OX3BwbTsKKyAgICAgICAgICAgICAgICBwX2hlYWRlcl9kYXRhICs9IGxfTl9wcG07CisKKyAgICAgICAgICAgICAgICBsX2NwLT5wcG1fZGF0YV9yZWFkICs9IGxfTl9wcG07IC8qIEluY3JlYXNlIHRoZSBudW1iZXIgb2YgZGF0YSByZWFkKi8KKworICAgICAgICAgICAgICAgIGlmIChwX2hlYWRlcl9zaXplKQorICAgICAgICAgICAgICAgIHsKKwkJCQkJCWlmIChwX2hlYWRlcl9zaXplIDwgNCkgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfTl9wcG0sNCk7ICAgICAgICAgICAgICAgLyogTl9wcG1eaSAqLworICAgICAgICAgICAgICAgICAgICAgICAgcF9oZWFkZXJfZGF0YSs9NDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfaGVhZGVyX3NpemUtPTQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbF9yZW1haW5pbmdfZGF0YSA9IHBfaGVhZGVyX3NpemU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsX3JlbWFpbmluZ19kYXRhID0gcF9oZWFkZXJfc2l6ZTsKKworICAgICAgICAgICAgICAgIC8qIE5leHQgSXBwbSBzZXJpZXMgaXMgYSBjb21wbGV0ZSBzZXJpZXMgPyovCisgICAgICAgICAgICAgICAgaWYgKGxfcmVtYWluaW5nX2RhdGEgPj0gbF9OX3BwbSkgeworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19wcG1fZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluY3JlYXNlIHRoZSBzaXplIG9mIHBwbV9kYXRhIHRvIGFkZCB0aGUgbmV3IElwcG0gc2VyaWVzKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChsX2NwLT5wcG1fZGF0YSA9PSBsX2NwLT5wcG1fYnVmZmVyICYmICJXZSBuZWVkIHBwbV9kYXRhIGFuZCBwcG1fYnVmZmVyIHRvIGJlIHRoZSBzYW1lIHdoZW4gcmVhbGxvY2F0aW5nIik7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHBtX2RhdGEgPSAoT1BKX0JZVEUgKikgb3BqX3JlYWxsb2MobF9jcC0+cHBtX2RhdGEsIGxfY3AtPnBwbV9sZW4gKyBsX05fcHBtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG5ld19wcG1fZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2NwLT5wcG1fZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9kYXRhID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2J1ZmZlciA9IE5VTEw7ICAvKiBUT0RPOiBubyBuZWVkIGZvciBhIG5ldyBsb2NhbCB2YXJpYWJsZTogcHBtX2J1ZmZlciBhbmQgcHBtX2RhdGEgYXJlIGVub3VnaCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT5wcG1fbGVuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGluY3JlYXNlIHRoZSBzaXplIG9mIHBwbV9kYXRhIHRvIGFkZCB0aGUgbmV3IChjb21wbGV0ZSkgSXBwbSBzZXJpZXNcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2RhdGEgPSBuZXdfcHBtX2RhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICBsX2NwLT5wcG1fYnVmZmVyID0gbF9jcC0+cHBtX2RhdGE7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEtlZXAgdGhlIHBvc2l0aW9uIG9mIHRoZSBwbGFjZSB3aGVyZSBjb25jYXRlbmF0ZSB0aGUgbmV3IHNlcmllcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2RhdGFfY3VycmVudCA9ICYobF9jcC0+cHBtX2RhdGFbbF9jcC0+cHBtX2xlbl0pOworICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2xlbiArPSBsX05fcHBtOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICB9CisKKyAgICAgICAgLyogTmVlZCB0byByZWFkIGFuIGluY29tcGxldGUgSXBwbSBzZXJpZXMqLworICAgICAgICBpZiAobF9yZW1haW5pbmdfZGF0YSkgeworICAgICAgICAgICAgICAgIE9QSl9CWVRFICpuZXdfcHBtX2RhdGE7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGxfY3AtPnBwbV9kYXRhID09IGxfY3AtPnBwbV9idWZmZXIgJiYgIldlIG5lZWQgcHBtX2RhdGEgYW5kIHBwbV9idWZmZXIgdG8gYmUgdGhlIHNhbWUgd2hlbiByZWFsbG9jYXRpbmciKTsKKyAgICAgICAgICAgICAgICBuZXdfcHBtX2RhdGEgPSAoT1BKX0JZVEUgKikgb3BqX3JlYWxsb2MobF9jcC0+cHBtX2RhdGEsIGxfY3AtPnBwbV9sZW4gKyBsX05fcHBtKTsKKyAgICAgICAgICAgICAgICBpZiAoISBuZXdfcHBtX2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfY3AtPnBwbV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9kYXRhID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9idWZmZXIgPSBOVUxMOyAgLyogVE9ETzogbm8gbmVlZCBmb3IgYSBuZXcgbG9jYWwgdmFyaWFibGU6IHBwbV9idWZmZXIgYW5kIHBwbV9kYXRhIGFyZSBlbm91Z2ggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9sZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGluY3JlYXNlIHRoZSBzaXplIG9mIHBwbV9kYXRhIHRvIGFkZCB0aGUgbmV3IChpbmNvbXBsZXRlKSBJcHBtIHNlcmllc1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsX2NwLT5wcG1fZGF0YSA9IG5ld19wcG1fZGF0YTsKKyAgICAgICAgICAgICAgICBsX2NwLT5wcG1fYnVmZmVyID0gbF9jcC0+cHBtX2RhdGE7CisKKyAgICAgICAgICAgICAgICAvKiBLZWVwIHRoZSBwb3NpdGlvbiBvZiB0aGUgcGxhY2Ugd2hlcmUgY29uY2F0ZW5hdGUgdGhlIG5ldyBzZXJpZXMqLworICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9kYXRhX2N1cnJlbnQgPSAmKGxfY3AtPnBwbV9kYXRhW2xfY3AtPnBwbV9sZW5dKTsKKyAgICAgICAgICAgICAgICBsX2NwLT5wcG1fbGVuICs9IGxfTl9wcG07CisKKyAgICAgICAgICAgICAgICAvKiBSZWFkIGluY29tcGxldGUgSXBwbSBzZXJpZXMqLworICAgICAgICAgICAgICAgIG1lbWNweShsX2NwLT5wcG1fZGF0YV9jdXJyZW50LCBwX2hlYWRlcl9kYXRhLCBsX3JlbWFpbmluZ19kYXRhKTsKKyAgICAgICAgICAgICAgICBwX2hlYWRlcl9zaXplIC09IGxfcmVtYWluaW5nX2RhdGE7CisgICAgICAgICAgICAgICAgcF9oZWFkZXJfZGF0YSArPSBsX3JlbWFpbmluZ19kYXRhOworCisgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2RhdGFfcmVhZCArPSBsX3JlbWFpbmluZ19kYXRhOyAvKiBJbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGRhdGEgcmVhZCovCisgICAgICAgIH0KKworI2lmZGVmIENMRUFOX01TRAorCisgICAgICAgICAgICAgICAgaWYgKGxfY3AtPnBwbV9kYXRhX3NpemUgPT0gbF9jcC0+cHBtX2xlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgPj0gNCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZWFkIGEgTl9wcG0qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX05fcHBtLDQpOyAgICAgICAgICAgICAgIC8qIE5fcHBtICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGErPTQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfaGVhZGVyX3NpemUtPTQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9sZW4gKz0gbF9OX3BwbSA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19wcG1fYnVmZmVyID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKGxfY3AtPnBwbV9idWZmZXIsIGxfY3AtPnBwbV9sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBuZXdfcHBtX2J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfY3AtPnBwbV9idWZmZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9idWZmZXIgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9sZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIHBwbSBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2J1ZmZlciA9IG5ld19wcG1fYnVmZmVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQobF9jcC0+cHBtX2J1ZmZlcitsX2NwLT5wcG1fZGF0YV9zaXplLDAsbF9OX3BwbSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jcC0+cHBtX2RhdGEgPSBsX2NwLT5wcG1fYnVmZmVyOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbF9yZW1haW5pbmdfZGF0YSA9IGxfY3AtPnBwbV9sZW4gLSBsX2NwLT5wcG1fZGF0YV9zaXplOworCisgICAgICAgICAgICAgICAgaWYgKGxfcmVtYWluaW5nX2RhdGEgPD0gcF9oZWFkZXJfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogd2UgbXVzdCBzdG9yZSBsZXNzIGluZm9ybWF0aW9uIHRoYW4gYXZhaWxhYmxlIGluIHRoZSBwYWNrZXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShsX2NwLT5wcG1fYnVmZmVyICsgbF9jcC0+cHBtX2RhdGFfc2l6ZSAsIHBfaGVhZGVyX2RhdGEgLCBsX3JlbWFpbmluZ19kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9kYXRhX3NpemUgPSBsX2NwLT5wcG1fbGVuOworICAgICAgICAgICAgICAgICAgICAgICAgcF9oZWFkZXJfc2l6ZSAtPSBsX3JlbWFpbmluZ19kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgcF9oZWFkZXJfZGF0YSArPSBsX3JlbWFpbmluZ19kYXRhOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShsX2NwLT5wcG1fYnVmZmVyICsgbF9jcC0+cHBtX2RhdGFfc2l6ZSAsIHBfaGVhZGVyX2RhdGEgLCBwX2hlYWRlcl9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3AtPnBwbV9kYXRhX3NpemUgKz0gcF9oZWFkZXJfc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGEgKz0gcF9oZWFkZXJfc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfaGVhZGVyX3NpemUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisvKioKKyAqIFJlYWRzIGEgUFBUIG1hcmtlciAoUGFja2VkIHBhY2tldCBoZWFkZXJzLCB0aWxlLXBhcnQgaGVhZGVyKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQUFQgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQUFQgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9wcHQgKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBvcGpfY3BfdCAqbF9jcCA9IDAwOworICAgICAgICBvcGpfdGNwX3QgKmxfdGNwID0gMDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9aX3BwdDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2hlYWRlcl9kYXRhICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgLyogV2UgbmVlZCB0byBoYXZlIHRoZSBaX3BwdCBlbGVtZW50IGF0IG1pbmltdW0gKi8KKyAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgPCAxKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgUFBUIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGxfY3AgPSAmKHBfajJrLT5tX2NwKTsKKyAgICAgICAgaWYgKGxfY3AtPnBwbSl7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgUFBUIG1hcmtlcjogcGFja2V0IGhlYWRlciBoYXZlIGJlZW4gcHJldmlvdXNseSBmb3VuZCBpbiB0aGUgbWFpbiBoZWFkZXIgKFBQTSBtYXJrZXIpLlxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGxfdGNwID0gJihsX2NwLT50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdKTsKKyAgICAgICAgbF90Y3AtPnBwdCA9IDE7CisKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9aX3BwdCwxKTsgICAgICAgICAgICAgICAvKiBaX3BwdCAqLworICAgICAgICArK3BfaGVhZGVyX2RhdGE7CisgICAgICAgIC0tcF9oZWFkZXJfc2l6ZTsKKworICAgICAgICAvKiBBbGxvY2F0ZSBidWZmZXIgdG8gcmVhZCB0aGUgcGFja2V0IGhlYWRlciAqLworICAgICAgICBpZiAobF9aX3BwdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogRmlyc3QgUFBUIG1hcmtlciAqLworICAgICAgICAgICAgICAgIGxfdGNwLT5wcHRfZGF0YV9zaXplID0gMDsKKyAgICAgICAgICAgICAgICBsX3RjcC0+cHB0X2xlbiA9IHBfaGVhZGVyX3NpemU7CisKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShsX3RjcC0+cHB0X2J1ZmZlcik7CisgICAgICAgICAgICAgICAgbF90Y3AtPnBwdF9idWZmZXIgPSAoT1BKX0JZVEUgKikgb3BqX2NhbGxvYyhsX3RjcC0+cHB0X2xlbiwgc2l6ZW9mKE9QSl9CWVRFKSApOworICAgICAgICAgICAgICAgIGlmIChsX3RjcC0+cHB0X2J1ZmZlciA9PSAwMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgUFBUIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsX3RjcC0+cHB0X2RhdGEgPSBsX3RjcC0+cHB0X2J1ZmZlcjsKKworICAgICAgICAgICAgICAgIC8qIG1lbXNldChsX3RjcC0+cHB0X2J1ZmZlciwwLGxfdGNwLT5wcHRfbGVuKTsgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBPUEpfQllURSAqbmV3X3BwdF9idWZmZXI7CisgICAgICAgICAgICAgICAgbF90Y3AtPnBwdF9sZW4gKz0gcF9oZWFkZXJfc2l6ZTsKKworICAgICAgICAgICAgICAgIG5ld19wcHRfYnVmZmVyID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKGxfdGNwLT5wcHRfYnVmZmVyLCBsX3RjcC0+cHB0X2xlbik7CisgICAgICAgICAgICAgICAgaWYgKCEgbmV3X3BwdF9idWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfdGNwLT5wcHRfYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGNwLT5wcHRfYnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGNwLT5wcHRfbGVuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFBQVCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbF90Y3AtPnBwdF9idWZmZXIgPSBuZXdfcHB0X2J1ZmZlcjsKKyAgICAgICAgICAgICAgICBsX3RjcC0+cHB0X2RhdGEgPSBsX3RjcC0+cHB0X2J1ZmZlcjsKKworICAgICAgICAgICAgICAgIG1lbXNldChsX3RjcC0+cHB0X2J1ZmZlcitsX3RjcC0+cHB0X2RhdGFfc2l6ZSwwLHBfaGVhZGVyX3NpemUpOworICAgICAgICB9CisKKyAgICAgICAgLyogUmVhZCBwYWNrZXQgaGVhZGVyIGZyb20gYnVmZmVyICovCisgICAgICAgIG1lbWNweShsX3RjcC0+cHB0X2J1ZmZlcitsX3RjcC0+cHB0X2RhdGFfc2l6ZSxwX2hlYWRlcl9kYXRhLHBfaGVhZGVyX3NpemUpOworCisgICAgICAgIGxfdGNwLT5wcHRfZGF0YV9zaXplICs9IHBfaGVhZGVyX3NpemU7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX3dyaXRlX3RsbSggICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBPUEpfQllURSAqIGxfY3VycmVudF9kYXRhID0gMDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF90bG1fc2l6ZTsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGxfdGxtX3NpemUgPSA2ICsgKDUqcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdG90YWxfdGlsZV9wYXJ0cyk7CisKKyAgICAgICAgaWYgKGxfdGxtX3NpemUgPiBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhX3NpemUpIHsKKyAgICAgICAgICAgICAgICBPUEpfQllURSAqbmV3X2hlYWRlcl90aWxlX2RhdGEgPSAoT1BKX0JZVEUgKikgb3BqX3JlYWxsb2MocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSwgbF90bG1fc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKCEgbmV3X2hlYWRlcl90aWxlX2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhX3NpemUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHdyaXRlIFRMTSBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSA9IG5ld19oZWFkZXJfdGlsZV9kYXRhOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSA9IGxfdGxtX3NpemU7CisgICAgICAgIH0KKworICAgICAgICBsX2N1cnJlbnRfZGF0YSA9IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGE7CisKKyAgICAgICAgLyogY2hhbmdlIHRoZSB3YXkgZGF0YSBpcyB3cml0dGVuIHRvIGF2b2lkIHNlZWtpbmcgaWYgcG9zc2libGUgKi8KKyAgICAgICAgLyogVE9ETyAqLworICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV90bG1fc3RhcnQgPSBvcGpfc3RyZWFtX3RlbGwocF9zdHJlYW0pOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxKMktfTVNfVExNLDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVExNICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfdGxtX3NpemUtMiwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMcG9jICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLDAsMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFp0bG09MCovCisgICAgICAgICsrbF9jdXJyZW50X2RhdGE7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLDB4NTAsMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0bG0gU1Q9MSg4Yml0cy0yNTUgdGlsZXMgbWF4KSxTUD0xKFB0bG09MzJiaXRzKSAqLworICAgICAgICArK2xfY3VycmVudF9kYXRhOworCisgICAgICAgIC8qIGRvIG5vdGhpbmcgb24gdGhlIDUgKiBsX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV90b3RhbF90aWxlX3BhcnRzIHJlbWFpbmluZyBkYXRhICovCisgICAgICAgIGlmIChvcGpfc3RyZWFtX3dyaXRlX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSxsX3RsbV9zaXplLHBfbWFuYWdlcikgIT0gbF90bG1fc2l6ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfc290KCAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKHBfZGF0YSxKMktfTVNfU09ULDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU09UICovCisgICAgICAgIHBfZGF0YSArPSAyOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhwX2RhdGEsMTAsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTHNvdCAqLworICAgICAgICBwX2RhdGEgKz0gMjsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMocF9kYXRhLCBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyLDIpOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIElzb3QgKi8KKyAgICAgICAgcF9kYXRhICs9IDI7CisKKyAgICAgICAgLyogUHNvdCAgKi8KKyAgICAgICAgcF9kYXRhICs9IDQ7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKHBfZGF0YSwgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fY3VycmVudF90aWxlX3BhcnRfbnVtYmVyLDEpOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRQc290ICovCisgICAgICAgICsrcF9kYXRhOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhwX2RhdGEsIHBfajJrLT5tX2NwLnRjcHNbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0ubV9uYl90aWxlX3BhcnRzLDEpOyAgICAgICAgICAgICAgICAgICAgICAvKiBUTnNvdCAqLworICAgICAgICArK3BfZGF0YTsKKworICAgICAgICAvKiBVbmlQRz4+ICovCisjaWZkZWYgVVNFX0pQV0wKKyAgICAgICAgLyogdXBkYXRlIG1hcmtlcnMgc3RydWN0ICovCisvKgorICAgICAgICBPUEpfQk9PTCByZXMgPSBqMmtfYWRkX21hcmtlcihwX2oyay0+Y3N0cl9pbmZvLCBKMktfTVNfU09ULCBwX2oyay0+c290X3N0YXJ0LCBsZW4gKyAyKTsKKyovCisgIGFzc2VydCggMCAmJiAiVE9ETyIgKTsKKyNlbmRpZiAvKiBVU0VfSlBXTCAqLworCisgICAgICAgICogcF9kYXRhX3dyaXR0ZW4gPSAxMjsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfcmVhZF9zb3QgKCBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgb3BqX2NwX3QgKmxfY3AgPSAwMDsKKyAgICAgICAgb3BqX3RjcF90ICpsX3RjcCA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfdG90X2xlbiwgbF9udW1fcGFydHMgPSAwOworICAgICAgICBPUEpfVUlOVDMyIGxfY3VycmVudF9wYXJ0OworICAgICAgICBPUEpfVUlOVDMyIGxfdGlsZV94LGxfdGlsZV95OworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfaGVhZGVyX2RhdGEgIT0gMDApOworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICAvKiBTaXplIG9mIHRoaXMgbWFya2VyIGlzIGZpeGVkID0gMTIgKHdlIGhhdmUgYWxyZWFkeSByZWFkIG1hcmtlciBhbmQgaXRzIHNpemUpKi8KKyAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgIT0gOCkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIFNPVCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBsX2NwID0gJihwX2oyay0+bV9jcCk7CisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJihwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyKSwyKTsgICAgICAgICAgICAgICAgLyogSXNvdCAqLworICAgICAgICBwX2hlYWRlcl9kYXRhKz0yOworCisgICAgICAgIC8qIHRlc3RjYXNlIDIucGRmLlNJR0ZQRS43MDYuMTExMiAqLworICAgICAgICBpZiAocF9qMmstPm1fY3VycmVudF90aWxlX251bWJlciA+PSBsX2NwLT50dyAqIGxfY3AtPnRoKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkludmFsaWQgdGlsZSBudW1iZXIgJWRcbiIsIHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBsX3RjcCA9ICZsX2NwLT50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdOworICAgICAgICBsX3RpbGVfeCA9IHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIgJSBsX2NwLT50dzsKKyAgICAgICAgbF90aWxlX3kgPSBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyIC8gbF9jcC0+dHc7CisKKyNpZmRlZiBVU0VfSlBXTAorICAgICAgICBpZiAobF9jcC0+Y29ycmVjdCkgeworCisgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiB0aWxlbm8gPSBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyOworICAgICAgICAgICAgICAgIHN0YXRpYyBPUEpfVUlOVDMyIGJhY2t1cF90aWxlbm8gPSAwOworCisgICAgICAgICAgICAgICAgLyogdGlsZW5vIGlzIG5lZ2F0aXZlIG9yIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgdGlsZXMhISEgKi8KKyAgICAgICAgICAgICAgICBpZiAodGlsZW5vID4gKGxfY3AtPnR3ICogbF9jcC0+dGgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKUFdMOiBiYWQgdGlsZSBudW1iZXIgKCVkIG91dCBvZiBhIG1heGltdW0gb2YgJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVubywgKGxfY3AtPnR3ICogbF9jcC0+dGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSlBXTF9BU1NVTUUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkpQV0w6IGdpdmluZyB1cFxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvKiB3ZSB0cnkgdG8gY29ycmVjdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgdGlsZW5vID0gYmFja3VwX3RpbGVubzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIi0gdHJ5aW5nIHRvIGFkanVzdCB0aGlzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0gc2V0dGluZyB0aWxlIG51bWJlciB0byAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlbm8pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIGtlZXAgeW91ciBwcml2YXRlIGNvdW50IG9mIHRpbGVzICovCisgICAgICAgICAgICAgICAgYmFja3VwX3RpbGVubysrOworICAgICAgICB9OworI2VuZGlmIC8qIFVTRV9KUFdMICovCisKKyAgICAgICAgLyogbG9vayBmb3IgdGhlIHRpbGUgaW4gdGhlIGxpc3Qgb2YgYWxyZWFkeSBwcm9jZXNzZWQgdGlsZSAoaW4gcGFydHMpLiAqLworICAgICAgICAvKiBPcHRpbWl6YXRpb24gcG9zc2libGUgaGVyZSB3aXRoIGEgbW9yZSBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFuZCB3aXRoIHRoZSByZW1vdmluZyBvZiB0aWxlcyAqLworICAgICAgICAvKiBzaW5jZSB0aGUgdGltZSB0YWtlbiBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGdyb3cgYXQgdGhlIHRpbWUgKi8KKworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX3RvdF9sZW4sNCk7ICAgICAgICAgICAgIC8qIFBzb3QgKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSs9NDsKKworICAgICAgICAvKiBQU290IHNob3VsZCBiZSBlcXVhbCB0byB6ZXJvIG9yID49MTQgb3IgPD0gMl4zMi0xICovCisgICAgICAgIGlmICgobF90b3RfbGVuICE9MCApICYmIChsX3RvdF9sZW4gPCAxNCkgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobF90b3RfbGVuID09IDEyICkgLyogTVNEOiBTcGVjaWFsIGNhc2UgZm9yIHRoZSBQSFIgZGF0YSB3aGljaCBhcmUgcmVhZCBieSBrYWthZHUqLworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIkVtcHR5IFNPVCBtYXJrZXIgZGV0ZWN0ZWQ6IFBzb3Q9JWQuXG4iLCBsX3RvdF9sZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJQc290IHZhbHVlIGlzIG5vdCBjb3JyZWN0IHJlZ2FyZHMgdG8gdGhlIEpQRUcyMDAwIG5vcm06ICVkLlxuIiwgbF90b3RfbGVuKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyNpZmRlZiBVU0VfSlBXTAorICAgICAgICBpZiAobF9jcC0+Y29ycmVjdCkgeworCisgICAgICAgICAgICAgICAgLyogdG90bGVuIGlzIG5lZ2F0aXZlIG9yIGxhcmdlciB0aGFuIHRoZSBieXRlcyBsZWZ0ISEhICovCisgICAgICAgICAgICAgICAgaWYgKC8qKGxfdG90X2xlbiA8IDApIHx8Ki8gKGxfdG90X2xlbiA+IHBfaGVhZGVyX3NpemUgKSApIHsgLyogRklYTUUgaXQgc2VlbXMgY29ycmVjdDsgZm9yIGluZm8gaW4gVjEgLT4gKHBfc3RyZWFtX251bWJ5dGVzbGVmdChwX3N0cmVhbSkgKyA4KSkpIHsgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkpQV0w6IGJhZCB0aWxlIGJ5dGUgc2l6ZSAoJWQgYnl0ZXMgYWdhaW5zdCAlZCBieXRlcyBsZWZ0KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RvdF9sZW4sIHBfaGVhZGVyX3NpemUgKTsgLyogRklYTUUgaXQgc2VlbXMgY29ycmVjdDsgZm9yIGluZm8gaW4gVjEgLT4gcF9zdHJlYW1fbnVtYnl0ZXNsZWZ0KHBfc3RyZWFtKSArIDgpOyAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFKUFdMX0FTU1VNRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSlBXTDogZ2l2aW5nIHVwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdlIHRyeSB0byBjb3JyZWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBsX3RvdF9sZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiLSB0cnlpbmcgdG8gYWRqdXN0IHRoaXNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLSBzZXR0aW5nIFBzb3QgdG8gJWQgPT4gYXNzdW1pbmcgaXQgaXMgdGhlIGxhc3QgdGlsZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RvdF9sZW4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworI2VuZGlmIC8qIFVTRV9KUFdMICovCisKKyAgICAgICAgICAgICAgICAvKiBSZWYgQS40LjI6IFBzb3QgY291bGQgYmUgZXF1YWwgemVybyBpZiBpdCBpcyB0aGUgbGFzdCB0aWxlLXBhcnQgb2YgdGhlIGNvZGVzdHJlYW0uKi8KKyAgICAgICAgICAgICAgICBpZiAoIWxfdG90X2xlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9JTkZPLCAiUHNvdCB2YWx1ZSBvZiB0aGUgY3VycmVudCB0aWxlLXBhcnQgaXMgZXF1YWwgdG8gemVybywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZSBhc3N1bWluZyBpdCBpcyB0aGUgbGFzdCB0aWxlLXBhcnQgb2YgdGhlIGNvZGVzdHJlYW0uXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2xhc3RfdGlsZV9wYXJ0ID0gMTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX2N1cnJlbnRfcGFydCAsMSk7ICAgICAgIC8qIFRQc290ICovCisgICAgICAgICAgICAgICAgKytwX2hlYWRlcl9kYXRhOworCisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9udW1fcGFydHMgLDEpOyAgICAgICAgICAvKiBUTnNvdCAqLworICAgICAgICAgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKworICAgICAgICAgICAgICAgIGlmIChsX251bV9wYXJ0cyAhPSAwKSB7IC8qIE51bWJlciBvZiB0aWxlLXBhcnQgaGVhZGVyIGlzIHByb3ZpZGVkIGJ5IHRoaXMgdGlsZS1wYXJ0IGhlYWRlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgLyogVXNlZnVsIHRvIG1hbmFnZSB0aGUgY2FzZSBvZiB0ZXh0R0JSLmpwMiBmaWxlIGJlY2F1c2UgdHdvIHZhbHVlcyBvZiBUTlNvdCBhcmUgYWxsb3dlZDogdGhlIGNvcnJlY3QgbnVtYmVycyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICogdGlsZS1wYXJ0cyBmb3IgdGhhdCB0aWxlIGFuZCB6ZXJvIChBLjQuMiBvZiAxNTQ0NC0xIDogMjAwMikuICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF90Y3AtPm1fbmJfdGlsZV9wYXJ0cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9jdXJyZW50X3BhcnQgPj0gbF90Y3AtPm1fbmJfdGlsZV9wYXJ0cyl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkluIFNPVCBtYXJrZXIsIFRQU290ICglZCkgaXMgbm90IHZhbGlkIHJlZ2FyZHMgdG8gdGhlIGN1cnJlbnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibnVtYmVyIG9mIHRpbGUtcGFydCAoJWQpLCBnaXZpbmcgdXBcbiIsIGxfY3VycmVudF9wYXJ0LCBsX3RjcC0+bV9uYl90aWxlX3BhcnRzICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9sYXN0X3RpbGVfcGFydCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICByZXR1cm4gT1BKX0ZBTFNFOworCQkJCQkJCQkJCQorCQkJCQkJCQkJCWxfbnVtX3BhcnRzKys7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiggbF9jdXJyZW50X3BhcnQgPj0gbF9udW1fcGFydHMgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRlc3RjYXNlIDQ1MS5wZGYuU0lHU0VHVi5jZTkuMzcyMyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm51bWJlciBvZiB0aWxlLXBhcnQgKGhlYWRlcikgKCVkKSwgZ2l2aW5nIHVwXG4iLCBsX2N1cnJlbnRfcGFydCwgbF9udW1fcGFydHMgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fbGFzdF90aWxlX3BhcnQgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbF90Y3AtPm1fbmJfdGlsZV9wYXJ0cyA9IGxfbnVtX3BhcnRzOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIElmIGtub3cgdGhlIG51bWJlciBvZiB0aWxlIHBhcnQgaGVhZGVyIHdlIHdpbGwgY2hlY2sgaWYgd2UgZGlkbid0IHJlYWQgdGhlIGxhc3QqLworICAgICAgICAgICAgICAgIGlmIChsX3RjcC0+bV9uYl90aWxlX3BhcnRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF90Y3AtPm1fbmJfdGlsZV9wYXJ0cyA9PSAobF9jdXJyZW50X3BhcnQrMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fY2FuX2RlY29kZSA9IDA7IC8qIFByb2Nlc3MgdGhlIGxhc3QgdGlsZS1wYXJ0IGhlYWRlciovCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9sYXN0X3RpbGVfcGFydCl7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBLZWVwIHRoZSBzaXplIG9mIGRhdGEgdG8gc2tpcCBhZnRlciB0aGlzIG1hcmtlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc290X2xlbmd0aCA9IGxfdG90X2xlbiAtIDEyOyAvKiBTT1RfbWFya2VyX3NpemUgPSAxMiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZJWE1FOiBuZWVkIHRvIGJlIGNvbXB1dGVkIGZyb20gdGhlIG51bWJlciBvZiBieXRlcyByZW1haW5pbmcgaW4gdGhlIGNvZGVzdHJlYW0gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3NvdF9sZW5ndGggPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID0gSjJLX1NUQVRFX1RQSDsKKworICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjdXJyZW50IHRpbGUgaXMgb3V0c2lkZSB0aGUgYXJlYSB3ZSB3YW50IGRlY29kZSBvciBub3QgY29ycmVzcG9uZGluZyB0byB0aGUgdGlsZSBpbmRleCovCisgICAgICAgICAgICAgICAgaWYgKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3RpbGVfaW5kX3RvX2RlYyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc2tpcF9kYXRhID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxfdGlsZV94IDwgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhcnRfdGlsZV94KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgIChsX3RpbGVfeCA+PSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9lbmRfdGlsZV94KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgKGxfdGlsZV95IDwgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhcnRfdGlsZV95KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgIChsX3RpbGVfeSA+PSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9lbmRfdGlsZV95KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3RpbGVfaW5kX3RvX2RlYyA+PSAwICk7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9za2lwX2RhdGEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocF9qMmstPm1fY3VycmVudF90aWxlX251bWJlciAhPSAoT1BKX1VJTlQzMilwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV90aWxlX2luZF90b19kZWMpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIEluZGV4ICovCisgICAgICAgICAgICAgICAgaWYgKHBfajJrLT5jc3RyX2luZGV4KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleCAhPSAwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS50aWxlbm8gPSBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0uY3VycmVudF90cHNubyA9IGxfY3VycmVudF9wYXJ0OworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9udW1fcGFydHMgIT0gMCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLm5iX3RwcyA9IGxfbnVtX3BhcnRzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS5jdXJyZW50X25iX3RwcyA9IGxfbnVtX3BhcnRzOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0udHBfaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS50cF9pbmRleCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BqX3RwX2luZGV4X3QqKW9wal9jYWxsb2MobF9udW1fcGFydHMsIHNpemVvZihvcGpfdHBfaW5kZXhfdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90cF9pbmRleF90ICpuZXdfdHBfaW5kZXggPSAob3BqX3RwX2luZGV4X3QgKikgb3BqX3JlYWxsb2MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnRwX2luZGV4LCBsX251bV9wYXJ0cyogc2l6ZW9mKG9wal90cF9pbmRleF90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbmV3X3RwX2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS50cF9pbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS50cF9pbmRleCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUFQgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnRwX2luZGV4ID0gbmV3X3RwX2luZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNleworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmlmICghcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0udHBfaW5kZXgpKi8geworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS50cF9pbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0uY3VycmVudF9uYl90cHMgPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnRwX2luZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wal90cF9pbmRleF90KilvcGpfY2FsbG9jKCBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS5jdXJyZW50X25iX3RwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihvcGpfdHBfaW5kZXhfdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbF9jdXJyZW50X3BhcnQgPj0gcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0uY3VycmVudF9uYl90cHMgKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90cF9pbmRleF90ICpuZXdfdHBfaW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS5jdXJyZW50X25iX3RwcyA9IGxfY3VycmVudF9wYXJ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld190cF9pbmRleCA9IChvcGpfdHBfaW5kZXhfdCAqKSBvcGpfcmVhbGxvYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS50cF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS5jdXJyZW50X25iX3RwcyAqIHNpemVvZihvcGpfdHBfaW5kZXhfdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbmV3X3RwX2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnRwX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0udHBfaW5kZXggPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS5jdXJyZW50X25iX3RwcyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFBQVCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0udHBfaW5kZXggPSBuZXdfdHBfaW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIEZJWE1FIG1vdmUgdGhpcyBvbnRvIGEgc2VwYXJhdGUgbWV0aG9kIHRvIGNhbGwgYmVmb3JlIHJlYWRpbmcgYW55IFNPVCwgcmVtb3ZlIHBhcnQgYWJvdXQgbWFpbl9lbmQgaGVhZGVyLCB1c2UgYSBpbmRleCBzdHJ1Y3QgaW5zaWRlIHBfajJrICovCisgICAgICAgICAgICAgICAgLyogaWYgKHBfajJrLT5jc3RyX2luZm8pIHsKKyAgICAgICAgICAgICAgICAgICBpZiAobF90Y3AtPmZpcnN0KSB7CisgICAgICAgICAgICAgICAgICAgaWYgKHRpbGVubyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5mby0+bWFpbl9oZWFkX2VuZCA9IHBfc3RyZWFtX3RlbGwocF9zdHJlYW0pIC0gMTM7CisgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5mby0+dGlsZVt0aWxlbm9dLnRpbGVubyA9IHRpbGVubzsKKyAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT50aWxlW3RpbGVub10uc3RhcnRfcG9zID0gcF9zdHJlYW1fdGVsbChwX3N0cmVhbSkgLSAxMjsKKyAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT50aWxlW3RpbGVub10uZW5kX3BvcyA9IHBfajJrLT5jc3RyX2luZm8tPnRpbGVbdGlsZW5vXS5zdGFydF9wb3MgKyB0b3RsZW4gLSAxOworICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZm8tPnRpbGVbdGlsZW5vXS5udW1fdHBzID0gbnVtcGFydHM7CisKKyAgICAgICAgICAgICAgICAgICBpZiAobnVtcGFydHMpIHsKKyAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT50aWxlW3RpbGVub10udHAgPSAob3BqX3RwX2luZm9fdCAqKSBvcGpfbWFsbG9jKG51bXBhcnRzICogc2l6ZW9mKG9wal90cF9pbmZvX3QpKTsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5mby0+dGlsZVt0aWxlbm9dLnRwID0gKG9wal90cF9pbmZvX3QgKikgb3BqX21hbGxvYygxMCAqIHNpemVvZihvcGpfdHBfaW5mb190KSk7IC8vIEZpeG1lICgxMCkKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZm8tPnRpbGVbdGlsZW5vXS5lbmRfcG9zICs9IHRvdGxlbjsKKyAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT50aWxlW3RpbGVub10udHBbcGFydG5vXS50cF9zdGFydF9wb3MgPSBwX3N0cmVhbV90ZWxsKHBfc3RyZWFtKSAtIDEyOworICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZm8tPnRpbGVbdGlsZW5vXS50cFtwYXJ0bm9dLnRwX2VuZF9wb3MgPQorICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZm8tPnRpbGVbdGlsZW5vXS50cFtwYXJ0bm9dLnRwX3N0YXJ0X3BvcyArIHRvdGxlbiAtIDE7CisgICAgICAgICAgICAgICAgICAgfSovCisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworICAgICAgICB9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfc29kKCAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90ICogcF90aWxlX2NvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdG90YWxfZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgb3BqX2NvZGVzdHJlYW1faW5mb190ICpsX2NzdHJfaW5mbyA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfcmVtYWluaW5nX2RhdGE7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfc3RyZWFtICE9IDAwKTsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMocF9kYXRhLEoyS19NU19TT0QsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTT0QgKi8KKyAgICAgICAgcF9kYXRhICs9IDI7CisKKyAgICAgICAgLyogbWFrZSByb29tIGZvciB0aGUgRU9GIG1hcmtlciAqLworICAgICAgICBsX3JlbWFpbmluZ19kYXRhID0gIHBfdG90YWxfZGF0YV9zaXplIC0gNDsKKworICAgICAgICAvKiB1cGRhdGUgdGlsZSBjb2RlciAqLworICAgICAgICBwX3RpbGVfY29kZXItPnRwX251bSA9IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2N1cnJlbnRfcG9jX3RpbGVfcGFydF9udW1iZXIgOworICAgICAgICBwX3RpbGVfY29kZXItPmN1cl90cF9udW0gPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9jdXJyZW50X3RpbGVfcGFydF9udW1iZXI7CisKKyAgICAgICAgIC8qIElOREVYID4+ICovCisgICAgICAgIC8qIFRPRE8gbWVyZ2VWMjogY2hlY2sgdGhpcyBwYXJ0IHdoaWNoIHVzZSBjc3RyX2luZm8gKi8KKyAgICAgICAgLypsX2NzdHJfaW5mbyA9IHBfajJrLT5jc3RyX2luZm87CisgICAgICAgIGlmIChsX2NzdHJfaW5mbykgeworICAgICAgICAgICAgICAgIGlmICghcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fY3VycmVudF90aWxlX3BhcnRfbnVtYmVyICkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9UT0RPIGNzdHJfaW5mby0+dGlsZVtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS5lbmRfaGVhZGVyID0gcF9zdHJlYW1fdGVsbChwX3N0cmVhbSkgKyBwX2oyay0+cG9zX2NvcnJlY3Rpb24gLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgbF9jc3RyX2luZm8tPnRpbGVbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0udGlsZW5vID0gcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICBUT0RPCisgICAgICAgICAgICAgICAgICAgICAgICBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3N0cl9pbmZvLT50aWxlW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnBhY2tldFtjc3RyX2luZm8tPnBhY2tubyAtIDFdLmVuZF9wb3MgPCBwX3N0cmVhbV90ZWxsKHBfc3RyZWFtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3N0cl9pbmZvLT50aWxlW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnBhY2tldFtjc3RyX2luZm8tPnBhY2tub10uc3RhcnRfcG9zID0gcF9zdHJlYW1fdGVsbChwX3N0cmVhbSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Ki8KKyAgICAgICAgICAgICAgICAvKn0qLworICAgICAgICAgICAgICAgIC8qIFVuaVBHPj4gKi8KKyNpZmRlZiBVU0VfSlBXTAorICAgICAgICAgICAgICAgIC8qIHVwZGF0ZSBtYXJrZXJzIHN0cnVjdCAqLworICAgICAgICAgICAgICAgIC8qT1BKX0JPT0wgcmVzID0gajJrX2FkZF9tYXJrZXIocF9qMmstPmNzdHJfaW5mbywgSjJLX01TX1NPRCwgcF9qMmstPnNvZF9zdGFydCwgMik7CisqLworICBhc3NlcnQoIDAgJiYgIlRPRE8iICk7CisjZW5kaWYgLyogVVNFX0pQV0wgKi8KKyAgICAgICAgICAgICAgICAvKiA8PFVuaVBHICovCisgICAgICAgIC8qfSovCisgICAgICAgIC8qIDw8IElOREVYICovCisKKyAgICAgICAgaWYgKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2N1cnJlbnRfdGlsZV9wYXJ0X251bWJlciA9PSAwKSB7CisgICAgICAgICAgICAgICAgcF90aWxlX2NvZGVyLT50Y2RfaW1hZ2UtPnRpbGVzLT5wYWNrbm8gPSAwOworICAgICAgICAgICAgICAgIGlmIChsX2NzdHJfaW5mbykgeworICAgICAgICAgICAgICAgICAgICAgICAgbF9jc3RyX2luZm8tPnBhY2tubyA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgKnBfZGF0YV93cml0dGVuID0gMDsKKworICAgICAgICBpZiAoISBvcGpfdGNkX2VuY29kZV90aWxlKHBfdGlsZV9jb2RlciwgcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlciwgcF9kYXRhLCBwX2RhdGFfd3JpdHRlbiwgbF9yZW1haW5pbmdfZGF0YSAsIGxfY3N0cl9pbmZvKSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJDYW5ub3QgZW5jb2RlIHRpbGVcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICAqcF9kYXRhX3dyaXR0ZW4gKz0gMjsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfcmVhZF9zb2QgKG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX1NJWkVfVCBsX2N1cnJlbnRfcmVhZF9zaXplOworICAgICAgICBvcGpfY29kZXN0cmVhbV9pbmRleF90ICogbF9jc3RyX2luZGV4ID0gMDA7CisgICAgICAgIE9QSl9CWVRFICoqIGxfY3VycmVudF9kYXRhID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqIGxfdGNwID0gMDA7CisgICAgICAgIE9QSl9VSU5UMzIgKiBsX3RpbGVfbGVuID0gMDA7CisgICAgICAgIE9QSl9CT09MIGxfc290X2xlbmd0aF9wYl9kZXRlY3RlZCA9IE9QSl9GQUxTRTsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGxfdGNwID0gJihwX2oyay0+bV9jcC50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdKTsKKworICAgICAgICBpZiAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fbGFzdF90aWxlX3BhcnQpIHsKKyAgICAgICAgICAgICAgICAvKiBvcGpfc3RyZWFtX2dldF9udW1iZXJfYnl0ZV9sZWZ0IHJldHVybnMgT1BKX09GRl9UCisgICAgICAgICAgICAgICAgLy8gYnV0IHdlIGFyZSBpbiB0aGUgbGFzdCB0aWxlIHBhcnQsCisgICAgICAgICAgICAgICAgLy8gc28gaXRzIHJlc3VsdCB3aWxsIGZpdCBvbiBPUEpfVUlOVDMyIHVubGVzcyB3ZSBmaW5kCisgICAgICAgICAgICAgICAgLy8gYSBmaWxlIHdpdGggYSBzaW5nbGUgdGlsZSBwYXJ0IG9mIG1vcmUgdGhhbiA0IEdCLi4uKi8KKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoID0gKE9QSl9VSU5UMzIpKG9wal9zdHJlYW1fZ2V0X251bWJlcl9ieXRlX2xlZnQocF9zdHJlYW0pIC0gMik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBDaGVjayB0byBhdm9pZCBwYXNzIHRoZSBsaW1pdCBvZiBPUEpfVUlOVDMyICovCisgICAgICAgICAgICBpZiAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc290X2xlbmd0aCA+PSAyICkKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoIC09IDI7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBNU0Q6IGNhc2UgY29tbWVudGVkIHRvIHN1cHBvcnQgZW1wdHkgU09UIG1hcmtlciAoUEhSIGRhdGEpICovCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsX2N1cnJlbnRfZGF0YSA9ICYobF90Y3AtPm1fZGF0YSk7CisgICAgICAgIGxfdGlsZV9sZW4gPSAmbF90Y3AtPm1fZGF0YV9zaXplOworCisgICAgICAgIC8qIFBhdGNoIHRvIHN1cHBvcnQgbmV3IFBIUiBkYXRhICovCisgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoISAqbF9jdXJyZW50X2RhdGEpIHsKKyAgICAgICAgICAgICAgICAvKiBMSDogb2RkbHkgZW5vdWdoLCBpbiB0aGlzIHBhdGgsIGxfdGlsZV9sZW4hPTAuCisgICAgICAgICAgICAgICAgICogVE9ETzogSWYgdGhpcyB3YXMgY29uc2lzdGFudCwgd2UgY291bGQgc2ltcGxpZnkgdGhlIGNvZGUgdG8gb25seSB1c2UgcmVhbGxvYygpLCBhcyByZWFsbG9jKDAsLi4uKSBkZWZhdWx0IHRvIG1hbGxvYygwLC4uLikuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgKmxfY3VycmVudF9kYXRhID0gKE9QSl9CWVRFKikgb3BqX21hbGxvYyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworCQkJCU9QSl9CWVRFICpsX25ld19jdXJyZW50X2RhdGEgPSBOVUxMOworCQkJCS8vQlVHSUQ6IDAwNTYwMDUgYW5kIDAwNTYwMjIuCisJCQkJLy90ZXN0IGZpbGU6IDM2NjY4M19mdXp6LWFzYW5faGVhcC1vb2JfNmJhZTk5XzMxNTVfNTI0NS5wZGYgYW5kIGZ1enotMTIucGRmLgorCQkJCWlmICgoT1BKX1VJTlQzMiktMSAtIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3NvdF9sZW5ndGggPj0gKmxfdGlsZV9sZW4pCisJCQkJCWxfbmV3X2N1cnJlbnRfZGF0YSA9IChPUEpfQllURSAqKSBvcGpfcmVhbGxvYygqbF9jdXJyZW50X2RhdGEsICpsX3RpbGVfbGVuICsgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc290X2xlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYgKCEgbF9uZXdfY3VycmVudF9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZSgqbF9jdXJyZW50X2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgLypub3RoaW5nIG1vcmUgaXMgZG9uZSBhcyBsX2N1cnJlbnRfZGF0YSB3aWxsIGJlIHNldCB0byBudWxsLCBhbmQganVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcndhcmQgd2UgZW50ZXIgaW4gdGhlIGVycm9yIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBhY3R1YWwgdGlsZV9sZW4gaXMgdXBkYXRlZCAoY29tbWl0dGVkKSBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKmxfY3VycmVudF9kYXRhID0gbF9uZXdfY3VycmVudF9kYXRhOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoKmxfY3VycmVudF9kYXRhID09IDAwKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGRlY29kZSB0aWxlXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbF9zb3RfbGVuZ3RoX3BiX2RldGVjdGVkID0gT1BKX1RSVUU7CisgICAgICAgIH0KKworICAgICAgICAvKiBJbmRleCAqLworICAgICAgICBsX2NzdHJfaW5kZXggPSBwX2oyay0+Y3N0cl9pbmRleDsKKyAgICAgICAgaWYgKGxfY3N0cl9pbmRleCkgeworICAgICAgICAgICAgICAgIE9QSl9PRkZfVCBsX2N1cnJlbnRfcG9zID0gb3BqX3N0cmVhbV90ZWxsKHBfc3RyZWFtKSAtIDI7CisKKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGxfY3VycmVudF90aWxlX3BhcnQgPSBsX2NzdHJfaW5kZXgtPnRpbGVfaW5kZXhbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0uY3VycmVudF90cHNubzsKKyAgICAgICAgICAgICAgICBsX2NzdHJfaW5kZXgtPnRpbGVfaW5kZXhbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0udHBfaW5kZXhbbF9jdXJyZW50X3RpbGVfcGFydF0uZW5kX2hlYWRlciA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9wb3M7CisgICAgICAgICAgICAgICAgbF9jc3RyX2luZGV4LT50aWxlX2luZGV4W3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnRwX2luZGV4W2xfY3VycmVudF90aWxlX3BhcnRdLmVuZF9wb3MgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcG9zICsgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc290X2xlbmd0aCArIDI7CisKKyAgICAgICAgICAgICAgICBpZiAoT1BKX0ZBTFNFID09IG9wal9qMmtfYWRkX3RsbWFya2VyKHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jc3RyX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEoyS19NU19TT0QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoICsgMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgdGwgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLypsX2NzdHJfaW5kZXgtPnBhY2tubyA9IDA7Ki8KKyAgICAgICAgfQorCisgICAgICAgIC8qIFBhdGNoIHRvIHN1cHBvcnQgbmV3IFBIUiBkYXRhICovCisgICAgICAgIGlmICghbF9zb3RfbGVuZ3RoX3BiX2RldGVjdGVkKSB7CisgICAgICAgICAgICBsX2N1cnJlbnRfcmVhZF9zaXplID0gb3BqX3N0cmVhbV9yZWFkX2RhdGEoCisgICAgICAgICAgICAgICAgICAgICAgICBwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICpsX2N1cnJlbnRfZGF0YSArICpsX3RpbGVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc290X2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfbWFuYWdlcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBsX2N1cnJlbnRfcmVhZF9zaXplID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsX2N1cnJlbnRfcmVhZF9zaXplICE9IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3NvdF9sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9IEoyS19TVEFURV9ORU9DOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID0gSjJLX1NUQVRFX1RQSFNPVDsKKyAgICAgICAgfQorCisgICAgICAgICpsX3RpbGVfbGVuICs9IChPUEpfVUlOVDMyKWxfY3VycmVudF9yZWFkX3NpemU7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisgT1BKX0JPT0wgb3BqX2oya193cml0ZV9yZ24ob3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfY29tcF9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG5iX2NvbXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIE9QSl9CWVRFICogbF9jdXJyZW50X2RhdGEgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3Jnbl9zaXplOworICAgICAgICBvcGpfY3BfdCAqbF9jcCA9IDAwOworICAgICAgICBvcGpfdGNwX3QgKmxfdGNwID0gMDA7CisgICAgICAgIG9wal90Y2NwX3QgKmxfdGNjcCA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfY29tcF9yb29tOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgbF9jcCA9ICYocF9qMmstPm1fY3ApOworICAgICAgICBsX3RjcCA9ICZsX2NwLT50Y3BzW3BfdGlsZV9ub107CisgICAgICAgIGxfdGNjcCA9ICZsX3RjcC0+dGNjcHNbcF9jb21wX25vXTsKKworICAgICAgICBpZiAobmJfY29tcHMgPD0gMjU2KSB7CisgICAgICAgICAgICAgICAgbF9jb21wX3Jvb20gPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxfY29tcF9yb29tID0gMjsKKyAgICAgICAgfQorCisgICAgICAgIGxfcmduX3NpemUgPSA2ICsgbF9jb21wX3Jvb207CisKKyAgICAgICAgbF9jdXJyZW50X2RhdGEgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxKMktfTVNfUkdOLDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkdOICAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSAyOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxsX3Jnbl9zaXplLTIsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTHJnbiAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSAyOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxwX2NvbXBfbm8sbF9jb21wX3Jvb20pOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ3JnbiAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSs9bF9jb21wX3Jvb207CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLCAwLDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTcmduICovCisgICAgICAgICsrbF9jdXJyZW50X2RhdGE7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLCAoT1BKX1VJTlQzMilsX3RjY3AtPnJvaXNoaWZ0LDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUHJnbiAqLworICAgICAgICArK2xfY3VycmVudF9kYXRhOworCisgICAgICAgIGlmIChvcGpfc3RyZWFtX3dyaXRlX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSxsX3Jnbl9zaXplLHBfbWFuYWdlcikgIT0gbF9yZ25fc2l6ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfZW9jKCAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLEoyS19NU19FT0MsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVPQyAqLworCisvKiBVbmlQRz4+ICovCisjaWZkZWYgVVNFX0pQV0wKKyAgICAgICAgLyogdXBkYXRlIG1hcmtlcnMgc3RydWN0ICovCisgICAgICAgIC8qCisgICAgICAgIE9QSl9CT09MIHJlcyA9IGoya19hZGRfbWFya2VyKHBfajJrLT5jc3RyX2luZm8sIEoyS19NU19FT0MsIHBfc3RyZWFtX3RlbGwocF9zdHJlYW0pIC0gMiwgMik7CisqLworI2VuZGlmIC8qIFVTRV9KUFdMICovCisKKyAgICAgICAgaWYgKCBvcGpfc3RyZWFtX3dyaXRlX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSwyLHBfbWFuYWdlcikgIT0gMikgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICEgb3BqX3N0cmVhbV9mbHVzaChwX3N0cmVhbSxwX21hbmFnZXIpICkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogUmVhZHMgYSBSR04gbWFya2VyIChSZWdpb24gT2YgSW50ZXJlc3QpCisgKgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFBPQyBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIFBPQyBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX3JnbiAob3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2NvbXA7CisgICAgICAgIG9wal9pbWFnZV90ICogbF9pbWFnZSA9IDAwOworCisgICAgICAgIG9wal9jcF90ICpsX2NwID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqbF90Y3AgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX2NvbXBfcm9vbSwgbF9jb21wX25vLCBsX3JvaV9zdHk7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyovCisgICAgICAgIGFzc2VydChwX2hlYWRlcl9kYXRhICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgbF9pbWFnZSA9IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2U7CisgICAgICAgIGxfbmJfY29tcCA9IGxfaW1hZ2UtPm51bWNvbXBzOworCisgICAgICAgIGlmIChsX25iX2NvbXAgPD0gMjU2KSB7CisgICAgICAgICAgICAgICAgbF9jb21wX3Jvb20gPSAxOyB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxfY29tcF9yb29tID0gMjsgfQorCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplICE9IDIgKyBsX2NvbXBfcm9vbSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIFJHTiBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBsX2NwID0gJihwX2oyay0+bV9jcCk7CisgICAgICAgIGxfdGNwID0gKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID09IEoyS19TVEFURV9UUEgpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxfY3AtPnRjcHNbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0gOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcDsKKworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX2NvbXBfbm8sbF9jb21wX3Jvb20pOyAgICAgICAgICAgLyogQ3JnbiAqLworICAgICAgICBwX2hlYWRlcl9kYXRhKz1sX2NvbXBfcm9vbTsKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9yb2lfc3R5LDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTcmduICovCisgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKworI2lmZGVmIFVTRV9KUFdMCisgICAgICAgIGlmIChsX2NwLT5jb3JyZWN0KSB7CisgICAgICAgICAgICAgICAgLyogdG90bGVuIGlzIG5lZ2F0aXZlIG9yIGxhcmdlciB0aGFuIHRoZSBieXRlcyBsZWZ0ISEhICovCisgICAgICAgICAgICAgICAgaWYgKGxfY29tcF9yb29tID49IGxfbmJfY29tcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkpQV0w6IGJhZCBjb21wb25lbnQgbnVtYmVyIGluIFJHTiAoJWQgd2hlbiB0aGVyZSBhcmUgb25seSAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY29tcF9yb29tLCBsX25iX2NvbXApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFKUFdMX0FTU1VNRSB8fCBKUFdMX0FTU1VNRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSlBXTDogZ2l2aW5nIHVwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH07CisjZW5kaWYgLyogVVNFX0pQV0wgKi8KKworICAgICAgICAvKiB0ZXN0Y2FzZSAzNjM1LnBkZi5hc2FuLjc3LjI5MzAgKi8KKyAgICAgICAgaWYgKGxfY29tcF9ubyA+PSBsX25iX2NvbXApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjb21wb25lbnQgbnVtYmVyIGluIFJHTiAoJWQgd2hlbiB0aGVyZSBhcmUgb25seSAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBsX2NvbXBfbm8sIGxfbmJfY29tcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsKE9QSl9VSU5UMzIgKikgKCYobF90Y3AtPnRjY3BzW2xfY29tcF9ub10ucm9pc2hpZnQpKSwxKTsgICAvKiBTUHJnbiAqLworICAgICAgICArK3BfaGVhZGVyX2RhdGE7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworCit9CisKK09QSl9GTE9BVDMyIG9wal9qMmtfZ2V0X3RwX3N0cmlkZSAob3BqX3RjcF90ICogcF90Y3ApCit7CisgICAgICAgIHJldHVybiAoT1BKX0ZMT0FUMzIpICgocF90Y3AtPm1fbmJfdGlsZV9wYXJ0cyAtIDEpICogMTQpOworfQorCitPUEpfRkxPQVQzMiBvcGpfajJrX2dldF9kZWZhdWx0X3N0cmlkZSAob3BqX3RjcF90ICogcF90Y3ApCit7CisgICAgKHZvaWQpcF90Y3A7CisgICAgcmV0dXJuIDA7Cit9CisKK09QSl9CT09MIG9wal9qMmtfdXBkYXRlX3JhdGVzKCAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgICAgICAgIG9wal9jcF90ICogbF9jcCA9IDAwOworICAgICAgICBvcGpfaW1hZ2VfdCAqIGxfaW1hZ2UgPSAwMDsKKyAgICAgICAgb3BqX3RjcF90ICogbF90Y3AgPSAwMDsKKyAgICAgICAgb3BqX2ltYWdlX2NvbXBfdCAqIGxfaW1nX2NvbXAgPSAwMDsKKworICAgICAgICBPUEpfVUlOVDMyIGksaixrOworICAgICAgICBPUEpfSU5UMzIgbF94MCxsX3kwLGxfeDEsbF95MTsKKyAgICAgICAgT1BKX0ZMT0FUMzIgKiBsX3JhdGVzID0gMDsKKyAgICAgICAgT1BKX0ZMT0FUMzIgbF9zb3RfcmVtb3ZlOworICAgICAgICBPUEpfVUlOVDMyIGxfYml0c19lbXB0eSwgbF9zaXplX3BpeGVsOworICAgICAgICBPUEpfVUlOVDMyIGxfdGlsZV9zaXplID0gMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX2xhc3RfcmVzOworICAgICAgICBPUEpfRkxPQVQzMiAoKiBsX3RwX3N0cmlkZV9mdW5jKShvcGpfdGNwX3QgKikgPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGxfY3AgPSAmKHBfajJrLT5tX2NwKTsKKyAgICAgICAgbF9pbWFnZSA9IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2U7CisgICAgICAgIGxfdGNwID0gbF9jcC0+dGNwczsKKworICAgICAgICBsX2JpdHNfZW1wdHkgPSA4ICogbF9pbWFnZS0+Y29tcHMtPmR4ICogbF9pbWFnZS0+Y29tcHMtPmR5OworICAgICAgICBsX3NpemVfcGl4ZWwgPSBsX2ltYWdlLT5udW1jb21wcyAqIGxfaW1hZ2UtPmNvbXBzLT5wcmVjOworICAgICAgICBsX3NvdF9yZW1vdmUgPSAoT1BKX0ZMT0FUMzIpIG9wal9zdHJlYW1fdGVsbChwX3N0cmVhbSkgLyAoT1BKX0ZMT0FUMzIpKGxfY3AtPnRoICogbF9jcC0+dHcpOworCisgICAgICAgIGlmIChsX2NwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fdHBfb24pIHsKKyAgICAgICAgICAgICAgICBsX3RwX3N0cmlkZV9mdW5jID0gb3BqX2oya19nZXRfdHBfc3RyaWRlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxfdHBfc3RyaWRlX2Z1bmMgPSBvcGpfajJrX2dldF9kZWZhdWx0X3N0cmlkZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaT0wO2k8bF9jcC0+dGg7KytpKSB7CisgICAgICAgICAgICAgICAgZm9yIChqPTA7ajxsX2NwLT50dzsrK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyIGxfb2Zmc2V0ID0gKE9QSl9GTE9BVDMyKSgqbF90cF9zdHJpZGVfZnVuYykobF90Y3ApIC8gKE9QSl9GTE9BVDMyKWxfdGNwLT5udW1sYXllcnM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDQgYm9yZGVycyBvZiB0aGUgdGlsZSByZXNjYWxlIG9uIHRoZSBpbWFnZSBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGxfeDAgPSBvcGpfaW50X21heCgoT1BKX0lOVDMyKShsX2NwLT50eDAgKyBqICogbF9jcC0+dGR4KSwgKE9QSl9JTlQzMilsX2ltYWdlLT54MCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3kwID0gb3BqX2ludF9tYXgoKE9QSl9JTlQzMikobF9jcC0+dHkwICsgaSAqIGxfY3AtPnRkeSksIChPUEpfSU5UMzIpbF9pbWFnZS0+eTApOworICAgICAgICAgICAgICAgICAgICAgICAgbF94MSA9IG9wal9pbnRfbWluKChPUEpfSU5UMzIpKGxfY3AtPnR4MCArIChqICsgMSkgKiBsX2NwLT50ZHgpLCAoT1BKX0lOVDMyKWxfaW1hZ2UtPngxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfeTEgPSBvcGpfaW50X21pbigoT1BKX0lOVDMyKShsX2NwLT50eTAgKyAoaSArIDEpICogbF9jcC0+dGR5KSwgKE9QSl9JTlQzMilsX2ltYWdlLT55MSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcmF0ZXMgPSBsX3RjcC0+cmF0ZXM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1vZGlmaWNhdGlvbiBvZiB0aGUgUkFURSA+PiAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpsX3JhdGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsX3JhdGVzID0gICAgICAgICAgICAgICgoIChPUEpfRkxPQVQzMikgKGxfc2l6ZV9waXhlbCAqIChPUEpfVUlOVDMyKShsX3gxIC0gbF94MCkgKiAoT1BKX1VJTlQzMikobF95MSAtIGxfeTApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgqbF9yYXRlcykgKiAoT1BKX0ZMT0FUMzIpbF9iaXRzX2VtcHR5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9vZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9yYXRlczsKKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMTsgayA8IGxfdGNwLT5udW1sYXllcnM7ICsraykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmxfcmF0ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbF9yYXRlcyA9ICAgICAgICAgICAgICAoKCAoT1BKX0ZMT0FUMzIpIChsX3NpemVfcGl4ZWwgKiAoT1BKX1VJTlQzMikobF94MSAtIGxfeDApICogKE9QSl9VSU5UMzIpKGxfeTEgLSBsX3kwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKmxfcmF0ZXMpICogKE9QSl9GTE9BVDMyKWxfYml0c19lbXB0eSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX3JhdGVzOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICArK2xfdGNwOworCisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbF90Y3AgPSBsX2NwLT50Y3BzOworCisgICAgICAgIGZvciAoaT0wO2k8bF9jcC0+dGg7KytpKSB7CisgICAgICAgICAgICAgICAgZm9yICAgICAoaj0wO2o8bF9jcC0+dHc7KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3JhdGVzID0gbF90Y3AtPnJhdGVzOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmxfcmF0ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxfcmF0ZXMgLT0gbF9zb3RfcmVtb3ZlOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqbF9yYXRlcyA8IDMwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxfcmF0ZXMgPSAzMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICArK2xfcmF0ZXM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbGFzdF9yZXMgPSBsX3RjcC0+bnVtbGF5ZXJzIC0gMTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMTsgayA8IGxfbGFzdF9yZXM7ICsraykgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqbF9yYXRlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsX3JhdGVzIC09IGxfc290X3JlbW92ZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqbF9yYXRlcyA8ICoobF9yYXRlcyAtIDEpICsgMTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsX3JhdGVzICA9ICgqKGxfcmF0ZXMgLSAxKSkgKyAyMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfcmF0ZXM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqbF9yYXRlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbF9yYXRlcyAtPSAobF9zb3RfcmVtb3ZlICsgMi5mKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmxfcmF0ZXMgPCAqKGxfcmF0ZXMgLSAxKSArIDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxfcmF0ZXMgID0gKCoobF9yYXRlcyAtIDEpKSArIDIwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF90Y3A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbF9pbWdfY29tcCA9IGxfaW1hZ2UtPmNvbXBzOworICAgICAgICBsX3RpbGVfc2l6ZSA9IDA7CisKKyAgICAgICAgZm9yIChpPTA7aTxsX2ltYWdlLT5udW1jb21wczsrK2kpIHsKKyAgICAgICAgICAgICAgICBsX3RpbGVfc2l6ZSArPSAoICAgICAgICBvcGpfdWludF9jZWlsZGl2KGxfY3AtPnRkeCxsX2ltZ19jb21wLT5keCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdWludF9jZWlsZGl2KGxfY3AtPnRkeSxsX2ltZ19jb21wLT5keSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2ltZ19jb21wLT5wcmVjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgKytsX2ltZ19jb21wOworICAgICAgICB9CisKKyAgICAgICAgbF90aWxlX3NpemUgPSAoT1BKX1VJTlQzMikgKGxfdGlsZV9zaXplICogMC4xNjI1KTsgLyogMS4zLzggPSAwLjE2MjUgKi8KKworICAgICAgICBsX3RpbGVfc2l6ZSArPSBvcGpfajJrX2dldF9zcGVjaWZpY19oZWFkZXJfc2l6ZXMocF9qMmspOworCisgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2VuY29kZWRfdGlsZV9zaXplID0gbF90aWxlX3NpemU7CisgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2VuY29kZWRfdGlsZV9kYXRhID0KKyAgICAgICAgICAgICAgICAgICAgICAgIChPUEpfQllURSAqKSBvcGpfbWFsbG9jKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2VuY29kZWRfdGlsZV9zaXplKTsKKyAgICAgICAgaWYgKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2VuY29kZWRfdGlsZV9kYXRhID09IDAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsX2NwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fY2luZW1hKSB7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdGxtX3NvdF9vZmZzZXRzX2J1ZmZlciA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPUEpfQllURSAqKSBvcGpfbWFsbG9jKDUqcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdG90YWxfdGlsZV9wYXJ0cyk7CisgICAgICAgICAgICAgICAgaWYgKCEgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdGxtX3NvdF9vZmZzZXRzX2J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV90bG1fc290X29mZnNldHNfY3VycmVudCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX3RsbV9zb3Rfb2Zmc2V0c19idWZmZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKyNpZiAwCitPUEpfQk9PTCBvcGpfajJrX3JlYWRfZW9jICggICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBvcGpfdGNkX3QgKiBsX3RjZCA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfdGlsZXM7CisgICAgICAgIG9wal90Y3BfdCAqIGxfdGNwID0gMDA7CisgICAgICAgIE9QSl9CT09MIGxfc3VjY2VzczsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGxfbmJfdGlsZXMgPSBwX2oyay0+bV9jcC50aCAqIHBfajJrLT5tX2NwLnR3OworICAgICAgICBsX3RjcCA9IHBfajJrLT5tX2NwLnRjcHM7CisKKyAgICAgICAgbF90Y2QgPSBvcGpfdGNkX2NyZWF0ZShPUEpfVFJVRSk7CisgICAgICAgIGlmIChsX3RjZCA9PSAwMCkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJDYW5ub3QgZGVjb2RlIHRpbGUsIG1lbW9yeSBlcnJvclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsX25iX3RpbGVzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAobF90Y3AtPm1fZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgb3BqX3RjZF9pbml0X2RlY29kZV90aWxlKGxfdGNkLCBpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX2Rlc3Ryb3kobF90Y2QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiQ2Fubm90IGRlY29kZSB0aWxlLCBtZW1vcnkgZXJyb3JcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBsX3N1Y2Nlc3MgPSBvcGpfdGNkX2RlY29kZV90aWxlKGxfdGNkLCBsX3RjcC0+bV9kYXRhLCBsX3RjcC0+bV9kYXRhX3NpemUsIGksIHBfajJrLT5jc3RyX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNsZWFudXAgKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbF9zdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlIHw9IEoyS19TVEFURV9FUlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG9wal9qMmtfdGNwX2Rlc3Ryb3kobF90Y3ApOworICAgICAgICAgICAgICAgICsrbF90Y3A7CisgICAgICAgIH0KKworICAgICAgICBvcGpfdGNkX2Rlc3Ryb3kobF90Y2QpOworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisjZW5kaWYKKworT1BKX0JPT0wgb3BqX2oya19nZXRfZW5kX2hlYWRlcihvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIgKQoreworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT5tYWluX2hlYWRfZW5kID0gb3BqX3N0cmVhbV90ZWxsKHBfc3RyZWFtKTsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfbWN0X2RhdGFfZ3JvdXAoICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlciApCit7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgb3BqX3NpbXBsZV9tY2NfZGVjb3JyZWxhdGlvbl9kYXRhX3QgKiBsX21jY19yZWNvcmQ7CisgICAgICAgIG9wal9tY3RfZGF0YV90ICogbF9tY3RfcmVjb3JkOworICAgICAgICBvcGpfdGNwX3QgKiBsX3RjcDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIGlmICghIG9wal9qMmtfd3JpdGVfY2JkKHBfajJrLHBfc3RyZWFtLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgbF90Y3AgPSAmKHBfajJrLT5tX2NwLnRjcHNbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0pOworICAgICAgICBsX21jdF9yZWNvcmQgPSBsX3RjcC0+bV9tY3RfcmVjb3JkczsKKworICAgICAgICBmb3IgKGk9MDtpPGxfdGNwLT5tX25iX21jdF9yZWNvcmRzOysraSkgeworCisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX2oya193cml0ZV9tY3RfcmVjb3JkKHBfajJrLGxfbWN0X3JlY29yZCxwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICsrbF9tY3RfcmVjb3JkOworICAgICAgICB9CisKKyAgICAgICAgbF9tY2NfcmVjb3JkID0gbF90Y3AtPm1fbWNjX3JlY29yZHM7CisKKyAgICAgICAgZm9yICAgICAoaT0wO2k8bF90Y3AtPm1fbmJfbWNjX3JlY29yZHM7KytpKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfajJrX3dyaXRlX21jY19yZWNvcmQocF9qMmssbF9tY2NfcmVjb3JkLHBfc3RyZWFtLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKytsX21jY19yZWNvcmQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoISBvcGpfajJrX3dyaXRlX21jbyhwX2oyayxwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworI2lmIDAKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfYWxsX2NvYyhvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlciApCit7CisgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wczsgKytjb21wbm8pCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfajJrX3dyaXRlX2NvYyhwX2oyayxjb21wbm8scF9zdHJlYW0sIHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorI2VuZGlmCisKKyNpZiAwCitPUEpfQk9PTCBvcGpfajJrX3dyaXRlX2FsbF9xY2Mob3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIgKQoreworICAgICAgICBPUEpfVUlOVDMyIGNvbXBubzsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHM7ICsrY29tcG5vKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX2oya193cml0ZV9xY2MocF9qMmssY29tcG5vLHBfc3RyZWFtLCBwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKyNlbmRpZgorCisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfcmVnaW9ucyggb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBjb21wbm87CisgICAgICAgIGNvbnN0IG9wal90Y2NwX3QgKmxfdGNjcCA9IDAwOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgbF90Y2NwID0gcF9qMmstPm1fY3AudGNwcy0+dGNjcHM7CisKKyAgICAgICAgZm9yICAgICAoY29tcG5vID0gMDsgY29tcG5vIDwgcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHM7ICsrY29tcG5vKSAgeworICAgICAgICAgICAgICAgIGlmIChsX3RjY3AtPnJvaXNoaWZ0KSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG9wal9qMmtfd3JpdGVfcmduKHBfajJrLDAsY29tcG5vLHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzLHBfc3RyZWFtLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK2xfdGNjcDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya193cml0ZV9lcGMoICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlciApCit7CisgICAgICAgIG9wal9jb2Rlc3RyZWFtX2luZGV4X3QgKiBsX2NzdHJfaW5kZXggPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGxfY3N0cl9pbmRleCA9IHBfajJrLT5jc3RyX2luZGV4OworICAgICAgICBpZiAobF9jc3RyX2luZGV4KSB7CisgICAgICAgICAgICAgICAgbF9jc3RyX2luZGV4LT5jb2Rlc3RyZWFtX3NpemUgPSAoT1BKX1VJTlQ2NClvcGpfc3RyZWFtX3RlbGwocF9zdHJlYW0pOworICAgICAgICAgICAgICAgIC8qIFVuaVBHPj4gKi8KKyAgICAgICAgICAgICAgICAvKiBUaGUgZm9sbG93aW5nIGFkanVzdG1lbnQgaXMgZG9uZSB0byBhZGp1c3QgdGhlIGNvZGVzdHJlYW0gc2l6ZSAqLworICAgICAgICAgICAgICAgIC8qIGlmIFNPRCBpcyBub3QgYXQgMCBpbiB0aGUgYnVmZmVyLiBVc2VmdWwgaW4gY2FzZSBvZiBKUDIsIHdoZXJlICovCisgICAgICAgICAgICAgICAgLyogdGhlIGZpcnN0IGJ1bmNoIG9mIGJ5dGVzIGlzIG5vdCBpbiB0aGUgY29kZXN0cmVhbSAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBsX2NzdHJfaW5kZXgtPmNvZGVzdHJlYW1fc2l6ZSAtPSAoT1BKX1VJTlQ2NClsX2NzdHJfaW5kZXgtPm1haW5faGVhZF9zdGFydDsKKyAgICAgICAgICAgICAgICAvKiA8PFVuaVBHICovCisgICAgICAgIH0KKworI2lmZGVmIFVTRV9KUFdMCisgICAgICAgIC8qIHByZXBhcmF0aW9uIG9mIEpQV0wgbWFya2VyIHNlZ21lbnRzICovCisjaWYgMAorICAgICAgICBpZihjcC0+ZXBjX29uKSB7CisKKyAgICAgICAgICAgICAgICAvKiBlbmNvZGUgYWNjb3JkaW5nIHRvIEpQV0wgKi8KKyAgICAgICAgICAgICAgICBqcHdsX2VuY29kZShwX2oyaywgcF9zdHJlYW0sIGltYWdlKTsKKworICAgICAgICB9CisjZW5kaWYKKyAgYXNzZXJ0KCAwICYmICJUT0RPIiApOworI2VuZGlmIC8qIFVTRV9KUFdMICovCisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX3JlYWRfdW5rICggICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqb3V0cHV0X21hcmtlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBsX3Vua25vd25fbWFya2VyOworICAgICAgICBjb25zdCBvcGpfZGVjX21lbW9yeV9tYXJrZXJfaGFuZGxlcl90ICogbF9tYXJrZXJfaGFuZGxlcjsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3NpemVfdW5rID0gMjsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiVW5rbm93biBtYXJrZXJcbiIpOworCisgICAgICAgIHdoaWxlKDEpIHsKKyAgICAgICAgICAgICAgICAvKiBUcnkgdG8gcmVhZCAyIGJ5dGVzICh0aGUgbmV4dCBtYXJrZXIgSUQpIGZyb20gc3RyZWFtIGFuZCBjb3B5IHRoZW0gaW50byB0aGUgYnVmZmVyKi8KKyAgICAgICAgICAgICAgICBpZiAob3BqX3N0cmVhbV9yZWFkX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEsMixwX21hbmFnZXIpICE9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJTdHJlYW0gdG9vIHNob3J0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogcmVhZCAyIGJ5dGVzIGFzIHRoZSBuZXcgbWFya2VyIElEKi8KKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwmbF91bmtub3duX21hcmtlciwyKTsKKworICAgICAgICAgICAgICAgIGlmICghKGxfdW5rbm93bl9tYXJrZXIgPCAweGZmMDApKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdldCB0aGUgbWFya2VyIGhhbmRsZXIgZnJvbSB0aGUgbWFya2VyIElEKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWFya2VyX2hhbmRsZXIgPSBvcGpfajJrX2dldF9tYXJrZXJfaGFuZGxlcihsX3Vua25vd25fbWFya2VyKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgJiBsX21hcmtlcl9oYW5kbGVyLT5zdGF0ZXMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJNYXJrZXIgaXMgbm90IGNvbXBsaWFudCB3aXRoIGl0cyBwb3NpdGlvblxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfbWFya2VyX2hhbmRsZXItPmlkICE9IEoyS19NU19VTkspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIG1hcmtlciB0byB0aGUgY29kZXN0cmVhbSBpbmRleCovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfbWFya2VyX2hhbmRsZXItPmlkICE9IEoyS19NU19TT1QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JPT0wgcmVzID0gb3BqX2oya19hZGRfbWhtYXJrZXIocF9qMmstPmNzdHJfaW5kZXgsIEoyS19NU19VTkssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9QSl9VSU5UMzIpIG9wal9zdHJlYW1fdGVsbChwX3N0cmVhbSkgLSBsX3NpemVfdW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc2l6ZV91bmspOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBPUEpfRkFMU0UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCBtaCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLyogbmV4dCBtYXJrZXIgaXMga25vd24gYW5kIHdlbGwgbG9jYXRlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NpemVfdW5rICs9IDI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgKm91dHB1dF9tYXJrZXIgPSBsX21hcmtlcl9oYW5kbGVyLT5pZCA7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX3dyaXRlX21jdF9yZWNvcmQoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfbWN0X2RhdGFfdCAqIHBfbWN0X3JlY29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlciApCit7CisgICAgICAgIE9QSl9VSU5UMzIgbF9tY3Rfc2l6ZTsKKyAgICAgICAgT1BKX0JZVEUgKiBsX2N1cnJlbnRfZGF0YSA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfdG1wOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgbF9tY3Rfc2l6ZSA9IDEwICsgcF9tY3RfcmVjb3JkLT5tX2RhdGFfc2l6ZTsKKworICAgICAgICBpZiAobF9tY3Rfc2l6ZSA+IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSkgeworICAgICAgICAgICAgICAgIE9QSl9CWVRFICpuZXdfaGVhZGVyX3RpbGVfZGF0YSA9IChPUEpfQllURSAqKSBvcGpfcmVhbGxvYyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLCBsX21jdF9zaXplKTsKKyAgICAgICAgICAgICAgICBpZiAoISBuZXdfaGVhZGVyX3RpbGVfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gd3JpdGUgTUNUIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhID0gbmV3X2hlYWRlcl90aWxlX2RhdGE7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gbF9tY3Rfc2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIGxfY3VycmVudF9kYXRhID0gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YTsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsSjJLX01TX01DVCwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1DVCAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSAyOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxsX21jdF9zaXplLTIsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTG1jdCAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSAyOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSwwLDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBabWN0ICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgLyogb25seSBvbmUgbWFya2VyIGF0bSAqLworICAgICAgICBsX3RtcCA9IChwX21jdF9yZWNvcmQtPm1faW5kZXggJiAweGZmKSB8IChwX21jdF9yZWNvcmQtPm1fYXJyYXlfdHlwZSA8PCA4KSB8IChwX21jdF9yZWNvcmQtPm1fZWxlbWVudF90eXBlIDw8IDEwKTsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsbF90bXAsMik7CisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLDAsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFltY3QgKi8KKyAgICAgICAgbF9jdXJyZW50X2RhdGErPTI7CisKKyAgICAgICAgbWVtY3B5KGxfY3VycmVudF9kYXRhLHBfbWN0X3JlY29yZC0+bV9kYXRhLHBfbWN0X3JlY29yZC0+bV9kYXRhX3NpemUpOworCisgICAgICAgIGlmIChvcGpfc3RyZWFtX3dyaXRlX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YSxsX21jdF9zaXplLHBfbWFuYWdlcikgIT0gbF9tY3Rfc2l6ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogUmVhZHMgYSBNQ1QgbWFya2VyIChNdWx0aXBsZSBDb21wb25lbnQgVHJhbnNmb3JtKQorICoKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBNQ1QgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBNQ1QgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9tY3QgKCAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBvcGpfdGNwX3QgKmxfdGNwID0gMDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF90bXA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9pbmRpeDsKKyAgICAgICAgb3BqX21jdF9kYXRhX3QgKiBsX21jdF9kYXRhOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfaGVhZGVyX2RhdGEgIT0gMDApOworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworCisgICAgICAgIGxfdGNwID0gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPT0gSjJLX1NUQVRFX1RQSCA/CisgICAgICAgICAgICAgICAgICAgICAgICAmcF9qMmstPm1fY3AudGNwc1twX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXSA6CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcDsKKworICAgICAgICBpZiAocF9oZWFkZXJfc2l6ZSA8IDIpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBNQ1QgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogZmlyc3QgbWFya2VyICovCisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfdG1wLDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBabWN0ICovCisgICAgICAgIHBfaGVhZGVyX2RhdGEgKz0gMjsKKyAgICAgICAgaWYgKGxfdG1wICE9IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICJDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbWN0IGRhdGEgd2l0aGluIG11bHRpcGxlIE1DVCByZWNvcmRzXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgIH0KKworICAgICAgICBpZihwX2hlYWRlcl9zaXplIDw9IDYpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBNQ1QgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogSW1jdCAtPiBubyBuZWVkIGZvciBvdGhlciB2YWx1ZXMsIHRha2UgdGhlIGZpcnN0LCB0eXBlIGlzIGRvdWJsZSB3aXRoIGRlY29ycmVsYXRpb24geDAwMDAgMTEwMSAwMDAwIDAwMDAqLworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX3RtcCwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW1jdCAqLworICAgICAgICBwX2hlYWRlcl9kYXRhICs9IDI7CisKKyAgICAgICAgbF9pbmRpeCA9IGxfdG1wICYgMHhmZjsKKyAgICAgICAgbF9tY3RfZGF0YSA9IGxfdGNwLT5tX21jdF9yZWNvcmRzOworCisgICAgICAgIGZvciAoaT0wO2k8bF90Y3AtPm1fbmJfbWN0X3JlY29yZHM7KytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGxfbWN0X2RhdGEtPm1faW5kZXggPT0gbF9pbmRpeCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrbF9tY3RfZGF0YTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIE5PVCBGT1VORCAqLworICAgICAgICBpZiAoaSA9PSBsX3RjcC0+bV9uYl9tY3RfcmVjb3JkcykgeworICAgICAgICAgICAgICAgIGlmIChsX3RjcC0+bV9uYl9tY3RfcmVjb3JkcyA9PSBsX3RjcC0+bV9uYl9tYXhfbWN0X3JlY29yZHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9tY3RfZGF0YV90ICpuZXdfbWN0X3JlY29yZHM7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3RjcC0+bV9uYl9tYXhfbWN0X3JlY29yZHMgKz0gT1BKX0oyS19NQ1RfREVGQVVMVF9OQl9SRUNPUkRTOworCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWN0X3JlY29yZHMgPSAob3BqX21jdF9kYXRhX3QgKikgb3BqX3JlYWxsb2MobF90Y3AtPm1fbWN0X3JlY29yZHMsIGxfdGNwLT5tX25iX21heF9tY3RfcmVjb3JkcyAqIHNpemVvZihvcGpfbWN0X2RhdGFfdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbmV3X21jdF9yZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfdGNwLT5tX21jdF9yZWNvcmRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF90Y3AtPm1fbWN0X3JlY29yZHMgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RjcC0+bV9uYl9tYXhfbWN0X3JlY29yZHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RjcC0+bV9uYl9tY3RfcmVjb3JkcyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIE1DVCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbF90Y3AtPm1fbWN0X3JlY29yZHMgPSBuZXdfbWN0X3JlY29yZHM7CisgICAgICAgICAgICAgICAgICAgICAgICBsX21jdF9kYXRhID0gbF90Y3AtPm1fbWN0X3JlY29yZHMgKyBsX3RjcC0+bV9uYl9tY3RfcmVjb3JkczsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbXNldChsX21jdF9kYXRhICwwLChsX3RjcC0+bV9uYl9tYXhfbWN0X3JlY29yZHMgLSBsX3RjcC0+bV9uYl9tY3RfcmVjb3JkcykgKiBzaXplb2Yob3BqX21jdF9kYXRhX3QpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsX21jdF9kYXRhID0gbF90Y3AtPm1fbWN0X3JlY29yZHMgKyBsX3RjcC0+bV9uYl9tY3RfcmVjb3JkczsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsX21jdF9kYXRhLT5tX2RhdGEpIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShsX21jdF9kYXRhLT5tX2RhdGEpOworICAgICAgICAgICAgICAgIGxfbWN0X2RhdGEtPm1fZGF0YSA9IDAwOworICAgICAgICB9CisKKyAgICAgICAgbF9tY3RfZGF0YS0+bV9pbmRleCA9IGxfaW5kaXg7CisgICAgICAgIGxfbWN0X2RhdGEtPm1fYXJyYXlfdHlwZSA9IChKMktfTUNUX0FSUkFZX1RZUEUpKChsX3RtcCAgPj4gOCkgJiAzKTsKKyAgICAgICAgbF9tY3RfZGF0YS0+bV9lbGVtZW50X3R5cGUgPSAoSjJLX01DVF9FTEVNRU5UX1RZUEUpKChsX3RtcCAgPj4gMTApICYgMyk7CisKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF90bXAsMik7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFltY3QgKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSs9MjsKKyAgICAgICAgaWYgKGxfdG1wICE9IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICJDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgTUNUIG1hcmtlcnNcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfVFJVRTsKKyAgICAgICAgfQorCisgICAgICAgIHBfaGVhZGVyX3NpemUgLT0gNjsKKworICAgICAgICBsX21jdF9kYXRhLT5tX2RhdGEgPSAoT1BKX0JZVEUqKW9wal9tYWxsb2MocF9oZWFkZXJfc2l6ZSk7CisgICAgICAgIGlmICghIGxfbWN0X2RhdGEtPm1fZGF0YSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIE1DVCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KGxfbWN0X2RhdGEtPm1fZGF0YSxwX2hlYWRlcl9kYXRhLHBfaGVhZGVyX3NpemUpOworCisgICAgICAgIGxfbWN0X2RhdGEtPm1fZGF0YV9zaXplID0gcF9oZWFkZXJfc2l6ZTsKKyAgICAgICAgKytsX3RjcC0+bV9uYl9tY3RfcmVjb3JkczsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfbWNjX3JlY29yZCggICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfc2ltcGxlX21jY19kZWNvcnJlbGF0aW9uX2RhdGEgKiBwX21jY19yZWNvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIgKQoreworICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgIE9QSl9VSU5UMzIgbF9tY2Nfc2l6ZTsKKyAgICAgICAgT1BKX0JZVEUgKiBsX2N1cnJlbnRfZGF0YSA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfYnl0ZXNfZm9yX2NvbXA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9tYXNrOworICAgICAgICBPUEpfVUlOVDMyIGxfdG1jYzsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGlmIChwX21jY19yZWNvcmQtPm1fbmJfY29tcHMgPiAyNTUgKSB7CisgICAgICAgIGxfbmJfYnl0ZXNfZm9yX2NvbXAgPSAyOworICAgICAgICAgICAgICAgIGxfbWFzayA9IDB4ODAwMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsX25iX2J5dGVzX2Zvcl9jb21wID0gMTsKKyAgICAgICAgICAgICAgICBsX21hc2sgPSAwOworICAgICAgICB9CisKKyAgICAgICAgbF9tY2Nfc2l6ZSA9IHBfbWNjX3JlY29yZC0+bV9uYl9jb21wcyAqIDIgKiBsX25iX2J5dGVzX2Zvcl9jb21wICsgMTk7CisgICAgICAgIGlmIChsX21jY19zaXplID4gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19oZWFkZXJfdGlsZV9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsIGxfbWNjX3NpemUpOworICAgICAgICAgICAgICAgIGlmICghIG5ld19oZWFkZXJfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byB3cml0ZSBNQ0MgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBuZXdfaGVhZGVyX3RpbGVfZGF0YTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhX3NpemUgPSBsX21jY19zaXplOworICAgICAgICB9CisKKyAgICAgICAgbF9jdXJyZW50X2RhdGEgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxKMktfTVNfTUNDLDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTUNDICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfbWNjX3NpemUtMiwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMbWNjICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgLyogZmlyc3QgbWFya2VyICovCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSwwLDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFptY2MgKi8KKyAgICAgICAgbF9jdXJyZW50X2RhdGEgKz0gMjsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEscF9tY2NfcmVjb3JkLT5tX2luZGV4LDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbWNjIC0+IG5vIG5lZWQgZm9yIG90aGVyIHZhbHVlcywgdGFrZSB0aGUgZmlyc3QgKi8KKyAgICAgICAgKytsX2N1cnJlbnRfZGF0YTsKKworICAgICAgICAvKiBvbmx5IG9uZSBtYXJrZXIgYXRtICovCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSwwLDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFltY2MgKi8KKyAgICAgICAgbF9jdXJyZW50X2RhdGErPTI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLDEsMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUW1jYyAtPiBudW1iZXIgb2YgY29sbGVjdGlvbnMgLT4gMSAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSs9MjsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsMHgxLDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBYbWNjaSB0eXBlIG9mIGNvbXBvbmVudCB0cmFuc2Zvcm1hdGlvbiAtPiBhcnJheSBiYXNlZCBkZWNvcnJlbGF0aW9uICovCisgICAgICAgICsrbF9jdXJyZW50X2RhdGE7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLHBfbWNjX3JlY29yZC0+bV9uYl9jb21wcyB8IGxfbWFzaywyKTsgICAgLyogTm1jY2kgbnVtYmVyIG9mIGlucHV0IGNvbXBvbmVudHMgaW52b2x2ZWQgYW5kIHNpemUgZm9yIGVhY2ggY29tcG9uZW50IG9mZnNldCA9IDggYml0cyAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSs9MjsKKworICAgICAgICBmb3IgKGk9MDtpPHBfbWNjX3JlY29yZC0+bV9uYl9jb21wczsrK2kpIHsKKyAgICAgICAgICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsaSxsX25iX2J5dGVzX2Zvcl9jb21wKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENtY2NpaiBDb21wb25lbnQgb2Zmc2V0Ki8KKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSs9bF9uYl9ieXRlc19mb3JfY29tcDsKKyAgICAgICAgfQorCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxwX21jY19yZWNvcmQtPm1fbmJfY29tcHN8bF9tYXNrLDIpOyAgICAgIC8qIE1tY2NpIG51bWJlciBvZiBvdXRwdXQgY29tcG9uZW50cyBpbnZvbHZlZCBhbmQgc2l6ZSBmb3IgZWFjaCBjb21wb25lbnQgb2Zmc2V0ID0gOCBiaXRzICovCisgICAgICAgIGxfY3VycmVudF9kYXRhKz0yOworCisgICAgICAgIGZvciAoaT0wO2k8cF9tY2NfcmVjb3JkLT5tX25iX2NvbXBzOysraSkKKyAgICAgICAgeworICAgICAgICAgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxpLGxfbmJfYnl0ZXNfZm9yX2NvbXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV21jY2lqIENvbXBvbmVudCBvZmZzZXQqLworICAgICAgICAgICAgICAgIGxfY3VycmVudF9kYXRhKz1sX25iX2J5dGVzX2Zvcl9jb21wOworICAgICAgICB9CisKKyAgICAgICAgbF90bWNjID0gKCghcF9tY2NfcmVjb3JkLT5tX2lzX2lycmV2ZXJzaWJsZSkmMSk8PDE2OworCisgICAgICAgIGlmIChwX21jY19yZWNvcmQtPm1fZGVjb3JyZWxhdGlvbl9hcnJheSkgeworICAgICAgICAgICAgICAgIGxfdG1jYyB8PSBwX21jY19yZWNvcmQtPm1fZGVjb3JyZWxhdGlvbl9hcnJheS0+bV9pbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwX21jY19yZWNvcmQtPm1fb2Zmc2V0X2FycmF5KSB7CisgICAgICAgICAgICAgICAgbF90bWNjIHw9ICgocF9tY2NfcmVjb3JkLT5tX29mZnNldF9hcnJheS0+bV9pbmRleCk8PDgpOworICAgICAgICB9CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfdG1jYywzKTsgICAgICAgLyogVG1jY2kgOiB1c2UgTUNUIGRlZmluZWQgYXMgbnVtYmVyIDEgYW5kIGlycmV2ZXJzaWJsZSBhcnJheSBiYXNlZC4gKi8KKyAgICAgICAgbF9jdXJyZW50X2RhdGErPTM7CisKKyAgICAgICAgaWYgKG9wal9zdHJlYW1fd3JpdGVfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLGxfbWNjX3NpemUscF9tYW5hZ2VyKSAhPSBsX21jY19zaXplKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya19yZWFkX21jYyAoICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBpLGo7CisgICAgICAgIE9QSl9VSU5UMzIgbF90bXA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9pbmRpeDsKKyAgICAgICAgb3BqX3RjcF90ICogbF90Y3A7CisgICAgICAgIG9wal9zaW1wbGVfbWNjX2RlY29ycmVsYXRpb25fZGF0YV90ICogbF9tY2NfcmVjb3JkOworICAgICAgICBvcGpfbWN0X2RhdGFfdCAqIGxfbWN0X2RhdGE7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9jb2xsZWN0aW9uczsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2NvbXBzOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfYnl0ZXNfYnlfY29tcDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2hlYWRlcl9kYXRhICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgbF90Y3AgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9PSBKMktfU1RBVEVfVFBIID8KKyAgICAgICAgICAgICAgICAgICAgICAgICZwX2oyay0+bV9jcC50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2RlZmF1bHRfdGNwOworCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplIDwgMikgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIE1DQyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICAvKiBmaXJzdCBtYXJrZXIgKi8KKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF90bXAsMik7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFptY2MgKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSArPSAyOworICAgICAgICBpZiAobF90bXAgIT0gMCkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIkNhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSBkYXRhIHNwYW5uaW5nXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocF9oZWFkZXJfc2l6ZSA8IDcpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBNQ0MgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9pbmRpeCwxKTsgLyogSW1jYyAtPiBubyBuZWVkIGZvciBvdGhlciB2YWx1ZXMsIHRha2UgdGhlIGZpcnN0ICovCisgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKworICAgICAgICBsX21jY19yZWNvcmQgPSBsX3RjcC0+bV9tY2NfcmVjb3JkczsKKworICAgICAgICBmb3IoaT0wO2k8bF90Y3AtPm1fbmJfbWNjX3JlY29yZHM7KytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGxfbWNjX3JlY29yZC0+bV9pbmRleCA9PSBsX2luZGl4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKytsX21jY19yZWNvcmQ7CisgICAgICAgIH0KKworICAgICAgICAvKiogTk9UIEZPVU5EICovCisgICAgICAgIGlmIChpID09IGxfdGNwLT5tX25iX21jY19yZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgaWYgKGxfdGNwLT5tX25iX21jY19yZWNvcmRzID09IGxfdGNwLT5tX25iX21heF9tY2NfcmVjb3JkcykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3NpbXBsZV9tY2NfZGVjb3JyZWxhdGlvbl9kYXRhX3QgKm5ld19tY2NfcmVjb3JkczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGNwLT5tX25iX21heF9tY2NfcmVjb3JkcyArPSBPUEpfSjJLX01DQ19ERUZBVUxUX05CX1JFQ09SRFM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tY2NfcmVjb3JkcyA9IChvcGpfc2ltcGxlX21jY19kZWNvcnJlbGF0aW9uX2RhdGFfdCAqKSBvcGpfcmVhbGxvYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RjcC0+bV9tY2NfcmVjb3JkcywgbF90Y3AtPm1fbmJfbWF4X21jY19yZWNvcmRzICogc2l6ZW9mKG9wal9zaW1wbGVfbWNjX2RlY29ycmVsYXRpb25fZGF0YV90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBuZXdfbWNjX3JlY29yZHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF90Y3AtPm1fbWNjX3JlY29yZHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RjcC0+bV9tY2NfcmVjb3JkcyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfdGNwLT5tX25iX21heF9tY2NfcmVjb3JkcyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfdGNwLT5tX25iX21jY19yZWNvcmRzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNDIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBsX3RjcC0+bV9tY2NfcmVjb3JkcyA9IG5ld19tY2NfcmVjb3JkczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWNjX3JlY29yZCA9IGxfdGNwLT5tX21jY19yZWNvcmRzICsgbF90Y3AtPm1fbmJfbWNjX3JlY29yZHM7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQobF9tY2NfcmVjb3JkLDAsKGxfdGNwLT5tX25iX21heF9tY2NfcmVjb3Jkcy1sX3RjcC0+bV9uYl9tY2NfcmVjb3JkcykgKiBzaXplb2Yob3BqX3NpbXBsZV9tY2NfZGVjb3JyZWxhdGlvbl9kYXRhX3QpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbF9tY2NfcmVjb3JkID0gbF90Y3AtPm1fbWNjX3JlY29yZHMgKyBsX3RjcC0+bV9uYl9tY2NfcmVjb3JkczsKKyAgICAgICAgfQorICAgICAgICBsX21jY19yZWNvcmQtPm1faW5kZXggPSBsX2luZGl4OworCisgICAgICAgIC8qIG9ubHkgb25lIG1hcmtlciBhdG0gKi8KKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF90bXAsMik7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFltY2MgKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSs9MjsKKyAgICAgICAgaWYgKGxfdG1wICE9IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICJDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZ1xuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworICAgICAgICB9CisKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF9uYl9jb2xsZWN0aW9ucywyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRbWNjIC0+IG51bWJlciBvZiBjb2xsZWN0aW9ucyAtPiAxICovCisgICAgICAgIHBfaGVhZGVyX2RhdGErPTI7CisKKyAgICAgICAgaWYgKGxfbmJfY29sbGVjdGlvbnMgPiAxKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIGNvbGxlY3Rpb25zXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgIH0KKworICAgICAgICBwX2hlYWRlcl9zaXplIC09IDc7CisKKyAgICAgICAgZm9yIChpPTA7aTxsX25iX2NvbGxlY3Rpb25zOysraSkgeworICAgICAgICAgICAgICAgIGlmIChwX2hlYWRlcl9zaXplIDwgMykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgTUNDIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfdG1wLDEpOyAvKiBYbWNjaSB0eXBlIG9mIGNvbXBvbmVudCB0cmFuc2Zvcm1hdGlvbiAtPiBhcnJheSBiYXNlZCBkZWNvcnJlbGF0aW9uICovCisgICAgICAgICAgICAgICAgKytwX2hlYWRlcl9kYXRhOworCisgICAgICAgICAgICAgICAgaWYgKGxfdG1wICE9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIkNhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyBvdGhlciB0aGFuIGFycmF5IGRlY29ycmVsYXRpb25cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfbmJfY29tcHMsMik7CisKKyAgICAgICAgICAgICAgICBwX2hlYWRlcl9kYXRhKz0yOworICAgICAgICAgICAgICAgIHBfaGVhZGVyX3NpemUtPTM7CisKKyAgICAgICAgICAgICAgICBsX25iX2J5dGVzX2J5X2NvbXAgPSAxICsgKGxfbmJfY29tcHM+PjE1KTsKKyAgICAgICAgICAgICAgICBsX21jY19yZWNvcmQtPm1fbmJfY29tcHMgPSBsX25iX2NvbXBzICYgMHg3ZmZmOworCisgICAgICAgICAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgPCAobF9uYl9ieXRlc19ieV9jb21wICogbF9tY2NfcmVjb3JkLT5tX25iX2NvbXBzICsgMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIE1DQyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwX2hlYWRlcl9zaXplIC09IChsX25iX2J5dGVzX2J5X2NvbXAgKiBsX21jY19yZWNvcmQtPm1fbmJfY29tcHMgKyAyKTsKKworICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8bF9tY2NfcmVjb3JkLT5tX25iX2NvbXBzOysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF90bXAsbF9uYl9ieXRlc19ieV9jb21wKTsgICAgICAgIC8qIENtY2NpaiBDb21wb25lbnQgb2Zmc2V0Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGErPWxfbmJfYnl0ZXNfYnlfY29tcDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfdG1wICE9IGopIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiQ2Fubm90IHRha2UgaW4gY2hhcmdlIGNvbGxlY3Rpb25zIHdpdGggaW5kaXggc2h1ZmZsZVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX25iX2NvbXBzLDIpOworICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGErPTI7CisKKyAgICAgICAgICAgICAgICBsX25iX2J5dGVzX2J5X2NvbXAgPSAxICsgKGxfbmJfY29tcHM+PjE1KTsKKyAgICAgICAgICAgICAgICBsX25iX2NvbXBzICY9IDB4N2ZmZjsKKworICAgICAgICAgICAgICAgIGlmIChsX25iX2NvbXBzICE9IGxfbWNjX3JlY29yZC0+bV9uYl9jb21wcykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiQ2Fubm90IHRha2UgaW4gY2hhcmdlIGNvbGxlY3Rpb25zIHdpdGhvdXQgc2FtZSBudW1iZXIgb2YgaW5kaXhlc1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHBfaGVhZGVyX3NpemUgPCAobF9uYl9ieXRlc19ieV9jb21wICogbF9tY2NfcmVjb3JkLT5tX25iX2NvbXBzICsgMykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIE1DQyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwX2hlYWRlcl9zaXplIC09IChsX25iX2J5dGVzX2J5X2NvbXAgKiBsX21jY19yZWNvcmQtPm1fbmJfY29tcHMgKyAzKTsKKworICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8bF9tY2NfcmVjb3JkLT5tX25iX2NvbXBzOysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmbF90bXAsbF9uYl9ieXRlc19ieV9jb21wKTsgICAgICAgIC8qIFdtY2NpaiBDb21wb25lbnQgb2Zmc2V0Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGErPWxfbmJfYnl0ZXNfYnlfY29tcDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfdG1wICE9IGopIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiQ2Fubm90IHRha2UgaW4gY2hhcmdlIGNvbGxlY3Rpb25zIHdpdGggaW5kaXggc2h1ZmZsZVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX3RtcCwzKTsgLyogV21jY2lqIENvbXBvbmVudCBvZmZzZXQqLworICAgICAgICAgICAgICAgIHBfaGVhZGVyX2RhdGEgKz0gMzsKKworICAgICAgICAgICAgICAgIGxfbWNjX3JlY29yZC0+bV9pc19pcnJldmVyc2libGUgPSAhICgobF90bXA+PjE2KSAmIDEpOworICAgICAgICAgICAgICAgIGxfbWNjX3JlY29yZC0+bV9kZWNvcnJlbGF0aW9uX2FycmF5ID0gMDA7CisgICAgICAgICAgICAgICAgbF9tY2NfcmVjb3JkLT5tX29mZnNldF9hcnJheSA9IDAwOworCisgICAgICAgICAgICAgICAgbF9pbmRpeCA9IGxfdG1wICYgMHhmZjsKKyAgICAgICAgICAgICAgICBpZiAobF9pbmRpeCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX21jdF9kYXRhID0gbF90Y3AtPm1fbWN0X3JlY29yZHM7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDtqPGxfdGNwLT5tX25iX21jdF9yZWNvcmRzOysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9tY3RfZGF0YS0+bV9pbmRleCA9PSBsX2luZGl4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9tY2NfcmVjb3JkLT5tX2RlY29ycmVsYXRpb25fYXJyYXkgPSBsX21jdF9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9tY3RfZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfbWNjX3JlY29yZC0+bV9kZWNvcnJlbGF0aW9uX2FycmF5ID09IDAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIE1DQyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxfaW5kaXggPSAobF90bXAgPj4gOCkgJiAweGZmOworICAgICAgICAgICAgICAgIGlmIChsX2luZGl4ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWN0X2RhdGEgPSBsX3RjcC0+bV9tY3RfcmVjb3JkczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8bF90Y3AtPm1fbmJfbWN0X3JlY29yZHM7KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX21jdF9kYXRhLT5tX2luZGV4ID09IGxfaW5kaXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX21jY19yZWNvcmQtPm1fb2Zmc2V0X2FycmF5ID0gbF9tY3RfZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfbWN0X2RhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX21jY19yZWNvcmQtPm1fb2Zmc2V0X2FycmF5ID09IDAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIE1DQyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplICE9IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBNQ0MgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgKytsX3RjcC0+bV9uYl9tY2NfcmVjb3JkczsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfbWNvKCAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIE9QSl9CWVRFICogbF9jdXJyZW50X2RhdGEgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX21jb19zaXplOworICAgICAgICBvcGpfdGNwX3QgKiBsX3RjcCA9IDAwOworICAgICAgICBvcGpfc2ltcGxlX21jY19kZWNvcnJlbGF0aW9uX2RhdGFfdCAqIGxfbWNjX3JlY29yZDsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgbF90Y3AgPSYocF9qMmstPm1fY3AudGNwc1twX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXSk7CisgICAgICAgIGxfY3VycmVudF9kYXRhID0gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YTsKKworICAgICAgICBsX21jb19zaXplID0gNSArIGxfdGNwLT5tX25iX21jY19yZWNvcmRzOworICAgICAgICBpZiAobF9tY29fc2l6ZSA+IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSkgeworCisgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19oZWFkZXJfdGlsZV9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsIGxfbWNvX3NpemUpOworICAgICAgICAgICAgICAgIGlmICghIG5ld19oZWFkZXJfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byB3cml0ZSBNQ08gbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBuZXdfaGVhZGVyX3RpbGVfZGF0YTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhX3NpemUgPSBsX21jb19zaXplOworICAgICAgICB9CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLEoyS19NU19NQ08sMik7ICAgICAgICAgICAgICAgICAgIC8qIE1DTyAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSAyOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxsX21jb19zaXplLTIsMik7ICAgICAgICAgICAgICAgICAvKiBMbWNvICovCisgICAgICAgIGxfY3VycmVudF9kYXRhICs9IDI7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhLGxfdGNwLT5tX25iX21jY19yZWNvcmRzLDEpOyAgICAgIC8qIE5tY28gOiBvbmx5IG9uZSB0cmFuZm9ybSBzdGFnZSovCisgICAgICAgICsrbF9jdXJyZW50X2RhdGE7CisKKyAgICAgICAgbF9tY2NfcmVjb3JkID0gbF90Y3AtPm1fbWNjX3JlY29yZHM7CisgICAgICAgIGZvciAgICAgKGk9MDtpPGxfdGNwLT5tX25iX21jY19yZWNvcmRzOysraSkgeworICAgICAgICAgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxsX21jY19yZWNvcmQtPm1faW5kZXgsMSk7LyogSW1jbyAtPiB1c2UgdGhlIG1jYyBpbmRpY2F0ZWQgYnkgMSovCisgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfZGF0YTsKKworICAgICAgICAgICAgICAgICsrbF9tY2NfcmVjb3JkOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9wal9zdHJlYW1fd3JpdGVfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLGxfbWNvX3NpemUscF9tYW5hZ2VyKSAhPSBsX21jb19zaXplKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworLyoqCisgKiBSZWFkcyBhIE1DTyBtYXJrZXIgKE11bHRpcGxlIENvbXBvbmVudCBUcmFuc2Zvcm0gT3JkZXJpbmcpCisgKgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX2RhdGEgICB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIE1DTyBib3guCisgKiBAcGFyYW0gICAgICAgcF9qMmsgICAgICAgICAgICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICAgICAgIHBfaGVhZGVyX3NpemUgICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIE1DTyBtYXJrZXIuCisgKiBAcGFyYW0gICAgICAgcF9tYW5hZ2VyICAgICAgICAgICAgICAgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19yZWFkX21jbyAoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBPUEpfVUlOVDMyIGxfdG1wLCBpOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfc3RhZ2VzOworICAgICAgICBvcGpfdGNwX3QgKiBsX3RjcDsKKyAgICAgICAgb3BqX3RjY3BfdCAqIGxfdGNjcDsKKyAgICAgICAgb3BqX2ltYWdlX3QgKiBsX2ltYWdlOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfaGVhZGVyX2RhdGEgIT0gMDApOworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICBsX2ltYWdlID0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZTsKKyAgICAgICAgbF90Y3AgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9PSBKMktfU1RBVEVfVFBIID8KKyAgICAgICAgICAgICAgICAgICAgICAgICZwX2oyay0+bV9jcC50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2RlZmF1bHRfdGNwOworCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplIDwgMSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciByZWFkaW5nIE1DTyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX25iX3N0YWdlcywxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBObWNvIDogb25seSBvbmUgdHJhbmZvcm0gc3RhZ2UqLworICAgICAgICArK3BfaGVhZGVyX2RhdGE7CisKKyAgICAgICAgaWYgKGxfbmJfc3RhZ2VzID4gMSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIkNhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSB0cmFuc2Zvcm1hdGlvbiBzdGFnZXMuXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocF9oZWFkZXJfc2l6ZSAhPSBsX25iX3N0YWdlcyArIDEpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICJFcnJvciByZWFkaW5nIE1DTyBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBsX3RjY3AgPSBsX3RjcC0+dGNjcHM7CisKKyAgICAgICAgZm9yIChpPTA7aTxsX2ltYWdlLT5udW1jb21wczsrK2kpIHsKKyAgICAgICAgICAgICAgICBsX3RjY3AtPm1fZGNfbGV2ZWxfc2hpZnQgPSAwOworICAgICAgICAgICAgICAgICsrbF90Y2NwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxfdGNwLT5tX21jdF9kZWNvZGluZ19tYXRyaXgpIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShsX3RjcC0+bV9tY3RfZGVjb2RpbmdfbWF0cml4KTsKKyAgICAgICAgICAgICAgICBsX3RjcC0+bV9tY3RfZGVjb2RpbmdfbWF0cml4ID0gMDA7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGk9MDtpPGxfbmJfc3RhZ2VzOysraSkgeworICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfdG1wLDEpOworICAgICAgICAgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKworICAgICAgICAgICAgICAgIGlmICghIG9wal9qMmtfYWRkX21jdChsX3RjcCxwX2oyay0+bV9wcml2YXRlX2ltYWdlLGxfdG1wKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfYWRkX21jdChvcGpfdGNwX3QgKiBwX3RjcCwgb3BqX2ltYWdlX3QgKiBwX2ltYWdlLCBPUEpfVUlOVDMyIHBfaW5kZXgpCit7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgb3BqX3NpbXBsZV9tY2NfZGVjb3JyZWxhdGlvbl9kYXRhX3QgKiBsX21jY19yZWNvcmQ7CisgICAgICAgIG9wal9tY3RfZGF0YV90ICogbF9kZWNvX2FycmF5LCAqIGxfb2Zmc2V0X2FycmF5OworICAgICAgICBPUEpfVUlOVDMyIGxfZGF0YV9zaXplLGxfbWN0X3NpemUsIGxfb2Zmc2V0X3NpemU7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9lbGVtOworICAgICAgICBPUEpfVUlOVDMyICogbF9vZmZzZXRfZGF0YSwgKiBsX2N1cnJlbnRfb2Zmc2V0X2RhdGE7CisgICAgICAgIG9wal90Y2NwX3QgKiBsX3RjY3A7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF90Y3AgIT0gMDApOworCisgICAgICAgIGxfbWNjX3JlY29yZCA9IHBfdGNwLT5tX21jY19yZWNvcmRzOworCisgICAgICAgIGZvciAoaT0wO2k8cF90Y3AtPm1fbmJfbWNjX3JlY29yZHM7KytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGxfbWNjX3JlY29yZC0+bV9pbmRleCA9PSBwX2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaT09cF90Y3AtPm1fbmJfbWNjX3JlY29yZHMpIHsKKyAgICAgICAgICAgICAgICAvKiogZWxlbWVudCBkaXNjYXJkZWQgKiovCisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxfbWNjX3JlY29yZC0+bV9uYl9jb21wcyAhPSBwX2ltYWdlLT5udW1jb21wcykgeworICAgICAgICAgICAgICAgIC8qKiBkbyBub3Qgc3VwcG9ydCBudW1iZXIgb2YgY29tcHMgIT0gaW1hZ2UgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgIH0KKworICAgICAgICBsX2RlY29fYXJyYXkgPSBsX21jY19yZWNvcmQtPm1fZGVjb3JyZWxhdGlvbl9hcnJheTsKKworICAgICAgICBpZiAobF9kZWNvX2FycmF5KSB7CisgICAgICAgICAgICAgICAgbF9kYXRhX3NpemUgPSBNQ1RfRUxFTUVOVF9TSVpFW2xfZGVjb19hcnJheS0+bV9lbGVtZW50X3R5cGVdICogcF9pbWFnZS0+bnVtY29tcHMgKiBwX2ltYWdlLT5udW1jb21wczsKKyAgICAgICAgICAgICAgICBpZiAobF9kZWNvX2FycmF5LT5tX2RhdGFfc2l6ZSAhPSBsX2RhdGFfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsX25iX2VsZW0gPSBwX2ltYWdlLT5udW1jb21wcyAqIHBfaW1hZ2UtPm51bWNvbXBzOworICAgICAgICAgICAgICAgIGxfbWN0X3NpemUgPSBsX25iX2VsZW0gKiAoT1BKX1VJTlQzMilzaXplb2YoT1BKX0ZMT0FUMzIpOworICAgICAgICAgICAgICAgIHBfdGNwLT5tX21jdF9kZWNvZGluZ19tYXRyaXggPSAoT1BKX0ZMT0FUMzIqKW9wal9tYWxsb2MobF9tY3Rfc2l6ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoISBwX3RjcC0+bV9tY3RfZGVjb2RpbmdfbWF0cml4ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBqMmtfbWN0X3JlYWRfZnVuY3Rpb25zX3RvX2Zsb2F0W2xfZGVjb19hcnJheS0+bV9lbGVtZW50X3R5cGVdKGxfZGVjb19hcnJheS0+bV9kYXRhLHBfdGNwLT5tX21jdF9kZWNvZGluZ19tYXRyaXgsbF9uYl9lbGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIGxfb2Zmc2V0X2FycmF5ID0gbF9tY2NfcmVjb3JkLT5tX29mZnNldF9hcnJheTsKKworICAgICAgICBpZiAobF9vZmZzZXRfYXJyYXkpIHsKKyAgICAgICAgICAgICAgICBsX2RhdGFfc2l6ZSA9IE1DVF9FTEVNRU5UX1NJWkVbbF9vZmZzZXRfYXJyYXktPm1fZWxlbWVudF90eXBlXSAqIHBfaW1hZ2UtPm51bWNvbXBzOworICAgICAgICAgICAgICAgIGlmIChsX29mZnNldF9hcnJheS0+bV9kYXRhX3NpemUgIT0gbF9kYXRhX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbF9uYl9lbGVtID0gcF9pbWFnZS0+bnVtY29tcHM7CisgICAgICAgICAgICAgICAgbF9vZmZzZXRfc2l6ZSA9IGxfbmJfZWxlbSAqIChPUEpfVUlOVDMyKXNpemVvZihPUEpfVUlOVDMyKTsKKyAgICAgICAgICAgICAgICBsX29mZnNldF9kYXRhID0gKE9QSl9VSU5UMzIqKW9wal9tYWxsb2MobF9vZmZzZXRfc2l6ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoISBsX29mZnNldF9kYXRhICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBqMmtfbWN0X3JlYWRfZnVuY3Rpb25zX3RvX2ludDMyW2xfb2Zmc2V0X2FycmF5LT5tX2VsZW1lbnRfdHlwZV0obF9vZmZzZXRfYXJyYXktPm1fZGF0YSxsX29mZnNldF9kYXRhLGxfbmJfZWxlbSk7CisKKyAgICAgICAgICAgICAgICBsX3RjY3AgPSBwX3RjcC0+dGNjcHM7CisgICAgICAgICAgICAgICAgbF9jdXJyZW50X29mZnNldF9kYXRhID0gbF9vZmZzZXRfZGF0YTsKKworICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8cF9pbWFnZS0+bnVtY29tcHM7KytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3RjY3AtPm1fZGNfbGV2ZWxfc2hpZnQgPSAoT1BKX0lOVDMyKSoobF9jdXJyZW50X29mZnNldF9kYXRhKyspOworICAgICAgICAgICAgICAgICAgICAgICAgKytsX3RjY3A7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9vZmZzZXRfZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfY2JkKCBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlciApCit7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX2NiZF9zaXplOworICAgICAgICBPUEpfQllURSAqIGxfY3VycmVudF9kYXRhID0gMDA7CisgICAgICAgIG9wal9pbWFnZV90ICpsX2ltYWdlID0gMDA7CisgICAgICAgIG9wal9pbWFnZV9jb21wX3QgKiBsX2NvbXAgPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGxfaW1hZ2UgPSBwX2oyay0+bV9wcml2YXRlX2ltYWdlOworICAgICAgICBsX2NiZF9zaXplID0gNiArIHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzOworCisgICAgICAgIGlmIChsX2NiZF9zaXplID4gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplKSB7CisgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19oZWFkZXJfdGlsZV9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEsIGxfY2JkX3NpemUpOworICAgICAgICAgICAgICAgIGlmICghIG5ld19oZWFkZXJfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1faGVhZGVyX3RpbGVfZGF0YV9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byB3cml0ZSBDQkQgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSBuZXdfaGVhZGVyX3RpbGVfZGF0YTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhX3NpemUgPSBsX2NiZF9zaXplOworICAgICAgICB9CisKKyAgICAgICAgbF9jdXJyZW50X2RhdGEgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSxKMktfTVNfQ0JELDIpOyAgICAgICAgICAgICAgICAgICAvKiBDQkQgKi8KKyAgICAgICAgbF9jdXJyZW50X2RhdGEgKz0gMjsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsbF9jYmRfc2l6ZS0yLDIpOyAgICAgICAgICAgICAgICAgLyogTF9DQkQgKi8KKyAgICAgICAgbF9jdXJyZW50X2RhdGEgKz0gMjsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGEsbF9pbWFnZS0+bnVtY29tcHMsIDIpOyAgICAgICAgICAgLyogTmNiZCAqLworICAgICAgICBsX2N1cnJlbnRfZGF0YSs9MjsKKworICAgICAgICBsX2NvbXAgPSBsX2ltYWdlLT5jb21wczsKKworICAgICAgICBmb3IgKGk9MDtpPGxfaW1hZ2UtPm51bWNvbXBzOysraSkgeworICAgICAgICAgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YSwgKGxfY29tcC0+c2duZCA8PCA3KSB8IChsX2NvbXAtPnByZWMgLSAxKSwgMSk7ICAgICAgICAgICAvKiBDb21wb25lbnQgYml0IGRlcHRoICovCisgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfZGF0YTsKKworICAgICAgICAgICAgICAgICsrbF9jb21wOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9wal9zdHJlYW1fd3JpdGVfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhLGxfY2JkX3NpemUscF9tYW5hZ2VyKSAhPSBsX2NiZF9zaXplKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworLyoqCisgKiBSZWFkcyBhIENCRCBtYXJrZXIgKENvbXBvbmVudCBiaXQgZGVwdGggZGVmaW5pdGlvbikKKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9kYXRhICAgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBDQkQgYm94LgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIHRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX2hlYWRlcl9zaXplICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBDQkQgbWFya2VyLgorICogQHBhcmFtICAgICAgIHBfbWFuYWdlciAgICAgICAgICAgICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfcmVhZF9jYmQgKCAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2NvbXAsbF9udW1fY29tcDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX2NvbXBfZGVmOworICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgIG9wal9pbWFnZV9jb21wX3QgKiBsX2NvbXAgPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2hlYWRlcl9kYXRhICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgbF9udW1fY29tcCA9IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzOworCisgICAgICAgIGlmIChwX2hlYWRlcl9zaXplICE9IChwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wcyArIDIpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkNycm9yIHJlYWRpbmcgQ0JEIG1hcmtlclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfaGVhZGVyX2RhdGEsJmxfbmJfY29tcCwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5jYmQgKi8KKyAgICAgICAgcF9oZWFkZXJfZGF0YSs9MjsKKworICAgICAgICBpZiAobF9uYl9jb21wICE9IGxfbnVtX2NvbXApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiQ3Jyb3IgcmVhZGluZyBDQkQgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgbF9jb21wID0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+Y29tcHM7CisgICAgICAgIGZvciAoaT0wO2k8bF9udW1fY29tcDsrK2kpIHsKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX2NvbXBfZGVmLDEpOyAgICAgICAgICAgICAgICAgICAgLyogQ29tcG9uZW50IGJpdCBkZXB0aCAqLworICAgICAgICAgICAgICAgICsrcF9oZWFkZXJfZGF0YTsKKyAgICAgICAgbF9jb21wLT5zZ25kID0gKGxfY29tcF9kZWY+PjcpICYgMTsKKyAgICAgICAgICAgICAgICBsX2NvbXAtPnByZWMgPSAobF9jb21wX2RlZiYweDdmKSArIDE7CisgICAgICAgICAgICAgICAgKytsX2NvbXA7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBKMksgLyBKUFQgZGVjb2RlciBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBvcGpfajJrX3NldHVwX2RlY29kZXIob3BqX2oya190ICpqMmssIG9wal9kcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzKQoreworICAgICAgICBpZihqMmsgJiYgcGFyYW1ldGVycykgeworICAgICAgICAgICAgICAgIGoyay0+bV9jcC5tX3NwZWNpZmljX3BhcmFtLm1fZGVjLm1fbGF5ZXIgPSBwYXJhbWV0ZXJzLT5jcF9sYXllcjsKKyAgICAgICAgICAgICAgICBqMmstPm1fY3AubV9zcGVjaWZpY19wYXJhbS5tX2RlYy5tX3JlZHVjZSA9IHBhcmFtZXRlcnMtPmNwX3JlZHVjZTsKKworI2lmZGVmIFVTRV9KUFdMCisgICAgICAgICAgICAgICAgajJrLT5tX2NwLmNvcnJlY3QgPSBwYXJhbWV0ZXJzLT5qcHdsX2NvcnJlY3Q7CisgICAgICAgICAgICAgICAgajJrLT5tX2NwLmV4cF9jb21wcyA9IHBhcmFtZXRlcnMtPmpwd2xfZXhwX2NvbXBzOworICAgICAgICAgICAgICAgIGoyay0+bV9jcC5tYXhfdGlsZXMgPSBwYXJhbWV0ZXJzLT5qcHdsX21heF90aWxlczsKKyNlbmRpZiAvKiBVU0VfSlBXTCAqLworICAgICAgICB9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBKMksgZW5jb2RlciBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK29wal9qMmtfdCogb3BqX2oya19jcmVhdGVfY29tcHJlc3Modm9pZCkKK3sKKyAgICAgICAgb3BqX2oya190ICpsX2oyayA9IChvcGpfajJrX3QqKSBvcGpfbWFsbG9jKHNpemVvZihvcGpfajJrX3QpKTsKKyAgICAgICAgaWYgKCFsX2oyaykgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgbWVtc2V0KGxfajJrLDAsc2l6ZW9mKG9wal9qMmtfdCkpOworCisgICAgICAgIGxfajJrLT5tX2lzX2RlY29kZXIgPSAwOworICAgICAgICBsX2oyay0+bV9jcC5tX2lzX2RlY29kZXIgPSAwOworCisgICAgICAgIGxfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSAoT1BKX0JZVEUgKikgb3BqX21hbGxvYyhPUEpfSjJLX0RFRkFVTFRfSEVBREVSX1NJWkUpOworICAgICAgICBpZiAoISBsX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgb3BqX2oya19kZXN0cm95KGxfajJrKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGxfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSA9IE9QSl9KMktfREVGQVVMVF9IRUFERVJfU0laRTsKKworICAgICAgICAvKiB2YWxpZGF0aW9uIGxpc3QgY3JlYXRpb24qLworICAgICAgICBsX2oyay0+bV92YWxpZGF0aW9uX2xpc3QgPSBvcGpfcHJvY2VkdXJlX2xpc3RfY3JlYXRlKCk7CisgICAgICAgIGlmICghIGxfajJrLT5tX3ZhbGlkYXRpb25fbGlzdCkgeworICAgICAgICAgICAgICAgIG9wal9qMmtfZGVzdHJveShsX2oyayk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiBleGVjdXRpb24gbGlzdCBjcmVhdGlvbiovCisgICAgICAgIGxfajJrLT5tX3Byb2NlZHVyZV9saXN0ID0gb3BqX3Byb2NlZHVyZV9saXN0X2NyZWF0ZSgpOworICAgICAgICBpZiAoISBsX2oyay0+bV9wcm9jZWR1cmVfbGlzdCkgeworICAgICAgICAgICAgICAgIG9wal9qMmtfZGVzdHJveShsX2oyayk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbF9qMms7Cit9CisKK2ludCBvcGpfajJrX2luaXRpYWxpc2VfNEtfcG9jKG9wal9wb2NfdCAqUE9DLCBpbnQgbnVtcmVzKXsKKyAgICBQT0NbMF0udGlsZSAgPSAxOworICAgIFBPQ1swXS5yZXNubzAgID0gMDsKKyAgICBQT0NbMF0uY29tcG5vMCA9IDA7CisgICAgUE9DWzBdLmxheW5vMSAgPSAxOworICAgIFBPQ1swXS5yZXNubzEgID0gKE9QSl9VSU5UMzIpKG51bXJlcy0xKTsKKyAgICBQT0NbMF0uY29tcG5vMSA9IDM7CisgICAgUE9DWzBdLnByZzEgPSBPUEpfQ1BSTDsKKyAgICBQT0NbMV0udGlsZSAgPSAxOworICAgIFBPQ1sxXS5yZXNubzAgID0gKE9QSl9VSU5UMzIpKG51bXJlcy0xKTsKKyAgICBQT0NbMV0uY29tcG5vMCA9IDA7CisgICAgUE9DWzFdLmxheW5vMSAgPSAxOworICAgIFBPQ1sxXS5yZXNubzEgID0gKE9QSl9VSU5UMzIpbnVtcmVzOworICAgIFBPQ1sxXS5jb21wbm8xID0gMzsKKyAgICBQT0NbMV0ucHJnMSA9IE9QSl9DUFJMOworICAgIHJldHVybiAyOworfQorCit2b2lkIG9wal9qMmtfc2V0X2NpbmVtYV9wYXJhbWV0ZXJzKG9wal9jcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzLCBvcGpfaW1hZ2VfdCAqaW1hZ2UsIG9wal9ldmVudF9tZ3JfdCAqcF9tYW5hZ2VyKQoreworICAgIC8qIENvbmZpZ3VyZSBjaW5lbWEgcGFyYW1ldGVycyAqLworICAgIE9QSl9GTE9BVDMyIG1heF9yYXRlID0gMDsKKyAgICBPUEpfRkxPQVQzMiB0ZW1wX3JhdGUgPSAwOworICAgIGludCBpOworCisgICAgLyogcHJvZmlsZSAoUnNpeikgKi8KKyAgICBzd2l0Y2ggKHBhcmFtZXRlcnMtPmNwX2NpbmVtYSl7CisgICAgY2FzZSBPUEpfQ0lORU1BMktfMjQ6CisgICAgY2FzZSBPUEpfQ0lORU1BMktfNDg6CisgICAgICAgIHBhcmFtZXRlcnMtPmNwX3JzaXogPSBPUEpfQ0lORU1BMks7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT1BKX0NJTkVNQTRLXzI0OgorICAgICAgICBwYXJhbWV0ZXJzLT5jcF9yc2l6ID0gT1BKX0NJTkVNQTRLOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9QSl9PRkY6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyogTm8gdGlsaW5nICovCisgICAgcGFyYW1ldGVycy0+dGlsZV9zaXplX29uID0gT1BKX0ZBTFNFOworICAgIHBhcmFtZXRlcnMtPmNwX3RkeD0xOworICAgIHBhcmFtZXRlcnMtPmNwX3RkeT0xOworCisgICAgLyogT25lIHRpbGUgcGFydCBmb3IgZWFjaCBjb21wb25lbnQgKi8KKyAgICBwYXJhbWV0ZXJzLT50cF9mbGFnID0gJ0MnOworICAgIHBhcmFtZXRlcnMtPnRwX29uID0gMTsKKworICAgIC8qIFRpbGUgYW5kIEltYWdlIHNoYWxsIGJlIGF0ICgwLDApICovCisgICAgcGFyYW1ldGVycy0+Y3BfdHgwID0gMDsKKyAgICBwYXJhbWV0ZXJzLT5jcF90eTAgPSAwOworICAgIHBhcmFtZXRlcnMtPmltYWdlX29mZnNldF94MCA9IDA7CisgICAgcGFyYW1ldGVycy0+aW1hZ2Vfb2Zmc2V0X3kwID0gMDsKKworICAgIC8qIENvZGVibG9jayBzaXplPSAzMiozMiAqLworICAgIHBhcmFtZXRlcnMtPmNibG9ja3dfaW5pdCA9IDMyOworICAgIHBhcmFtZXRlcnMtPmNibG9ja2hfaW5pdCA9IDMyOworCisgICAgLyogQ29kZWJsb2NrIHN0eWxlOiBubyBtb2RlIHN3aXRjaCBlbmFibGVkICovCisgICAgcGFyYW1ldGVycy0+bW9kZSA9IDA7CisKKyAgICAvKiBObyBST0kgKi8KKyAgICBwYXJhbWV0ZXJzLT5yb2lfY29tcG5vID0gLTE7CisKKyAgICAvKiBObyBzdWJzYW1wbGluZyAqLworICAgIHBhcmFtZXRlcnMtPnN1YnNhbXBsaW5nX2R4ID0gMTsKKyAgICBwYXJhbWV0ZXJzLT5zdWJzYW1wbGluZ19keSA9IDE7CisKKyAgICAvKiA5LTcgdHJhbnNmb3JtICovCisgICAgcGFyYW1ldGVycy0+aXJyZXZlcnNpYmxlID0gMTsKKworICAgIC8qIE51bWJlciBvZiBsYXllcnMgKi8KKyAgICBpZiAocGFyYW1ldGVycy0+dGNwX251bWxheWVycyA+IDEpeworICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgIkpQRUcgMjAwMCBQcm9maWxlLTMgYW5kIDQgKDJrLzRrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOlxuIgorICAgICAgICAgICAgICAgICIxIHNpbmdsZSBxdWFsaXR5IGxheWVyIgorICAgICAgICAgICAgICAgICItPiBOdW1iZXIgb2YgbGF5ZXJzIGZvcmNlZCB0byAxIChyYXRoZXIgdGhhbiAlZClcbiIsCisgICAgICAgICAgICAgICAgcGFyYW1ldGVycy0+dGNwX251bWxheWVycyk7CisgICAgICAgIHBhcmFtZXRlcnMtPnRjcF9udW1sYXllcnMgPSAxOworICAgIH0KKworICAgIC8qIFJlc29sdXRpb24gbGV2ZWxzICovCisgICAgc3dpdGNoIChwYXJhbWV0ZXJzLT5jcF9jaW5lbWEpeworICAgIGNhc2UgT1BKX0NJTkVNQTJLXzI0OgorICAgIGNhc2UgT1BKX0NJTkVNQTJLXzQ4OgorICAgICAgICBpZihwYXJhbWV0ZXJzLT5udW1yZXNvbHV0aW9uID4gNil7CisgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICJKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczpcbiIKKyAgICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiBkZWNvbXBvc2l0aW9uIGxldmVscyA8PSA1XG4iCisgICAgICAgICAgICAgICAgICAgICItPiBOdW1iZXIgb2YgZGVjb21wb3NpdGlvbiBsZXZlbHMgZm9yY2VkIHRvIDUgKHJhdGhlciB0aGFuICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy0+bnVtcmVzb2x1dGlvbisxKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMtPm51bXJlc29sdXRpb24gPSA2OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT1BKX0NJTkVNQTRLXzI0OgorICAgICAgICBpZihwYXJhbWV0ZXJzLT5udW1yZXNvbHV0aW9uIDwgMil7CisgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICJKUEVHIDIwMDAgUHJvZmlsZS00ICg0ayBkYyBwcm9maWxlKSByZXF1aXJlczpcbiIKKyAgICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiBkZWNvbXBvc2l0aW9uIGxldmVscyA+PSAxICYmIDw9IDZcbiIKKyAgICAgICAgICAgICAgICAgICAgIi0+IE51bWJlciBvZiBkZWNvbXBvc2l0aW9uIGxldmVscyBmb3JjZWQgdG8gMSAocmF0aGVyIHRoYW4gJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5udW1yZXNvbHV0aW9uKzEpOworICAgICAgICAgICAgcGFyYW1ldGVycy0+bnVtcmVzb2x1dGlvbiA9IDE7CisgICAgICAgIH1lbHNlIGlmKHBhcmFtZXRlcnMtPm51bXJlc29sdXRpb24gPiA3KXsKKyAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgIkpQRUcgMjAwMCBQcm9maWxlLTQgKDRrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOlxuIgorICAgICAgICAgICAgICAgICAgICAiTnVtYmVyIG9mIGRlY29tcG9zaXRpb24gbGV2ZWxzID49IDEgJiYgPD0gNlxuIgorICAgICAgICAgICAgICAgICAgICAiLT4gTnVtYmVyIG9mIGRlY29tcG9zaXRpb24gbGV2ZWxzIGZvcmNlZCB0byA2IChyYXRoZXIgdGhhbiAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMtPm51bXJlc29sdXRpb24rMSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLT5udW1yZXNvbHV0aW9uID0gNzsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0IDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyogUHJlY2luY3RzICovCisgICAgcGFyYW1ldGVycy0+Y3N0eSB8PSAweDAxOworICAgIHBhcmFtZXRlcnMtPnJlc19zcGVjID0gcGFyYW1ldGVycy0+bnVtcmVzb2x1dGlvbi0xOworICAgIGZvciAoaSA9IDA7IGk8cGFyYW1ldGVycy0+cmVzX3NwZWM7IGkrKykgeworICAgICAgICBwYXJhbWV0ZXJzLT5wcmN3X2luaXRbaV0gPSAyNTY7CisgICAgICAgIHBhcmFtZXRlcnMtPnByY2hfaW5pdFtpXSA9IDI1NjsKKyAgICB9CisKKyAgICAvKiBUaGUgcHJvZ3Jlc3Npb24gb3JkZXIgc2hhbGwgYmUgQ1BSTCAqLworICAgIHBhcmFtZXRlcnMtPnByb2dfb3JkZXIgPSBPUEpfQ1BSTDsKKworICAgIC8qIFByb2dyZXNzaW9uIG9yZGVyIGNoYW5nZXMgZm9yIDRLLCBkaXNhbGxvd2VkIGZvciAySyAqLworICAgIGlmIChwYXJhbWV0ZXJzLT5jcF9jaW5lbWEgPT0gT1BKX0NJTkVNQTRLXzI0KSB7CisgICAgICAgIHBhcmFtZXRlcnMtPm51bXBvY3MgPSAoT1BKX1VJTlQzMilvcGpfajJrX2luaXRpYWxpc2VfNEtfcG9jKHBhcmFtZXRlcnMtPlBPQyxwYXJhbWV0ZXJzLT5udW1yZXNvbHV0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXJhbWV0ZXJzLT5udW1wb2NzID0gMDsKKyAgICB9CisKKyAgICAvKiBMaW1pdGVkIGJpdC1yYXRlICovCisgICAgcGFyYW1ldGVycy0+Y3BfZGlzdG9fYWxsb2MgPSAxOworICAgIHN3aXRjaCAocGFyYW1ldGVycy0+Y3BfY2luZW1hKXsKKyAgICBjYXNlIE9QSl9DSU5FTUEyS18yNDoKKyAgICBjYXNlIE9QSl9DSU5FTUE0S18yNDoKKyAgICAgICAgbWF4X3JhdGUgPSAoT1BKX0ZMT0FUMzIpIChpbWFnZS0+bnVtY29tcHMgKiBpbWFnZS0+Y29tcHNbMF0udyAqIGltYWdlLT5jb21wc1swXS5oICogaW1hZ2UtPmNvbXBzWzBdLnByZWMpLworICAgICAgICAgICAgICAgIChPUEpfRkxPQVQzMikoQ0lORU1BXzI0X0NTICogOCAqIGltYWdlLT5jb21wc1swXS5keCAqIGltYWdlLT5jb21wc1swXS5keSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLT50Y3BfcmF0ZXNbMF0gPT0gMCl7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLT50Y3BfcmF0ZXNbMF0gPSBtYXhfcmF0ZTsKKyAgICAgICAgfWVsc2V7CisgICAgICAgICAgICB0ZW1wX3JhdGUgPShPUEpfRkxPQVQzMikoaW1hZ2UtPm51bWNvbXBzICogaW1hZ2UtPmNvbXBzWzBdLncgKiBpbWFnZS0+Y29tcHNbMF0uaCAqIGltYWdlLT5jb21wc1swXS5wcmVjKS8KKyAgICAgICAgICAgICAgICAgICAgKHBhcmFtZXRlcnMtPnRjcF9yYXRlc1swXSAqIDggKiAoT1BKX0ZMT0FUMzIpaW1hZ2UtPmNvbXBzWzBdLmR4ICogKE9QSl9GTE9BVDMyKWltYWdlLT5jb21wc1swXS5keSk7CisgICAgICAgICAgICBpZiAodGVtcF9yYXRlID4gQ0lORU1BXzI0X0NTICl7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgIkpQRUcgMjAwMCBQcm9maWxlLTMgYW5kIDQgKDJrLzRrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIk1heGltdW0gMTMwMjA4MyBjb21wcmVzc2VkIGJ5dGVzIEAgMjRmcHNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICItPiBTcGVjaWZpZWQgcmF0ZSAoJTMuMWYpIGV4Y2VlZHMgdGhpcyBsaW1pdC4gUmF0ZSB3aWxsIGJlIGZvcmNlZCB0byAlMy4xZi5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT50Y3BfcmF0ZXNbMF0sIG1heF9yYXRlKTsKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT50Y3BfcmF0ZXNbMF09IG1heF9yYXRlOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgIkpQRUcgMjAwMCBQcm9maWxlLTMgYW5kIDQgKDJrLzRrIGRjIHByb2ZpbGUpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIklORk8gOiBTcGVjaWZpZWQgcmF0ZSAoJTMuMWYpIGlzIGJlbG93IHRoZSAyay80ayBsaW1pdCBAIDI0ZnBzLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnRjcF9yYXRlc1swXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcGFyYW1ldGVycy0+bWF4X2NvbXBfc2l6ZSA9IENPTVBfMjRfQ1M7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT1BKX0NJTkVNQTJLXzQ4OgorICAgICAgICBtYXhfcmF0ZSA9ICgoZmxvYXQpIChpbWFnZS0+bnVtY29tcHMgKiBpbWFnZS0+Y29tcHNbMF0udyAqIGltYWdlLT5jb21wc1swXS5oICogaW1hZ2UtPmNvbXBzWzBdLnByZWMpKS8KKyAgICAgICAgICAgICAgICAoZmxvYXQpKENJTkVNQV80OF9DUyAqIDggKiBpbWFnZS0+Y29tcHNbMF0uZHggKiBpbWFnZS0+Y29tcHNbMF0uZHkpOworICAgICAgICBpZiAocGFyYW1ldGVycy0+dGNwX3JhdGVzWzBdID09IDApeworICAgICAgICAgICAgcGFyYW1ldGVycy0+dGNwX3JhdGVzWzBdID0gbWF4X3JhdGU7CisgICAgICAgIH1lbHNleworICAgICAgICAgICAgdGVtcF9yYXRlID0oKGZsb2F0KSAoaW1hZ2UtPm51bWNvbXBzICogaW1hZ2UtPmNvbXBzWzBdLncgKiBpbWFnZS0+Y29tcHNbMF0uaCAqIGltYWdlLT5jb21wc1swXS5wcmVjKSkvCisgICAgICAgICAgICAgICAgICAgIChwYXJhbWV0ZXJzLT50Y3BfcmF0ZXNbMF0gKiA4ICogKGZsb2F0KWltYWdlLT5jb21wc1swXS5keCAqIChmbG9hdClpbWFnZS0+Y29tcHNbMF0uZHkpOworICAgICAgICAgICAgaWYgKHRlbXBfcmF0ZSA+IENJTkVNQV80OF9DUyApeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICJKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJNYXhpbXVtIDY1MTA0MSBjb21wcmVzc2VkIGJ5dGVzIEAgNDhmcHNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICItPiBTcGVjaWZpZWQgcmF0ZSAoJTMuMWYpIGV4Y2VlZHMgdGhpcyBsaW1pdC4gUmF0ZSB3aWxsIGJlIGZvcmNlZCB0byAlMy4xZi5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT50Y3BfcmF0ZXNbMF0sIG1heF9yYXRlKTsKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT50Y3BfcmF0ZXNbMF09IG1heF9yYXRlOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgIkpQRUcgMjAwMCBQcm9maWxlLTMgKDJrIGRjIHByb2ZpbGUpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIklORk8gOiBTcGVjaWZpZWQgcmF0ZSAoJTMuMWYpIGlzIGJlbG93IHRoZSAyayBsaW1pdCBAIDQ4IGZwcy5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLT50Y3BfcmF0ZXNbMF0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHBhcmFtZXRlcnMtPm1heF9jb21wX3NpemUgPSBDT01QXzQ4X0NTOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK09QSl9CT09MIG9wal9qMmtfaXNfY2luZW1hX2NvbXBsaWFudChvcGpfaW1hZ2VfdCAqaW1hZ2UsIE9QSl9DSU5FTUFfTU9ERSBjaW5lbWFfbW9kZSwgb3BqX2V2ZW50X21ncl90ICpwX21hbmFnZXIpCit7CisgICAgT1BKX1VJTlQzMiBpOworCisgICAgLyogTnVtYmVyIG9mIGNvbXBvbmVudHMgKi8KKyAgICBpZiAoaW1hZ2UtPm51bWNvbXBzICE9IDMpeworICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgIkpQRUcgMjAwMCBQcm9maWxlLTMgKDJrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOlxuIgorICAgICAgICAgICAgICAgICIzIGNvbXBvbmVudHMiCisgICAgICAgICAgICAgICAgIi0+IE51bWJlciBvZiBjb21wb25lbnRzIG9mIGlucHV0IGltYWdlICglZCkgaXMgbm90IGNvbXBsaWFudFxuIgorICAgICAgICAgICAgICAgICItPiBOb24tcHJvZmlsZS0zIGNvZGVzdHJlYW0gd2lsbCBiZSBnZW5lcmF0ZWRcbiIsCisgICAgICAgICAgICAgICAgaW1hZ2UtPm51bWNvbXBzKTsKKyAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICB9CisKKyAgICAvKiBCaXRkZXB0aCAqLworICAgIGZvciAoaSA9IDA7IGkgPCBpbWFnZS0+bnVtY29tcHM7IGkrKykgeworICAgICAgICBpZiAoKGltYWdlLT5jb21wc1tpXS5icHAgIT0gMTIpIHwgKGltYWdlLT5jb21wc1tpXS5zZ25kKSl7CisgICAgICAgICAgICBjaGFyIHNpZ25lZF9zdHJbXSA9ICJzaWduZWQiOworICAgICAgICAgICAgY2hhciB1bnNpZ25lZF9zdHJbXSA9ICJ1bnNpZ25lZCI7CisgICAgICAgICAgICBjaGFyICp0bXBfc3RyID0gaW1hZ2UtPmNvbXBzW2ldLnNnbmQ/c2lnbmVkX3N0cjp1bnNpZ25lZF9zdHI7CisgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICJKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczpcbiIKKyAgICAgICAgICAgICAgICAgICAgIlByZWNpc2lvbiBvZiBlYWNoIGNvbXBvbmVudCBzaGFsbCBiZSAxMiBiaXRzIHVuc2lnbmVkIgorICAgICAgICAgICAgICAgICAgICAiLT4gQXQgbGVhc3QgY29tcG9uZW50ICVkIG9mIGlucHV0IGltYWdlICglZCBiaXRzLCAlcykgaXMgbm90IGNvbXBsaWFudFxuIgorICAgICAgICAgICAgICAgICAgICAiLT4gTm9uLXByb2ZpbGUtMyBjb2Rlc3RyZWFtIHdpbGwgYmUgZ2VuZXJhdGVkXG4iLAorICAgICAgICAgICAgICAgICAgICBpLGltYWdlLT5jb21wc1tpXS5icHAsIHRtcF9zdHIpOworICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEltYWdlIHNpemUgKi8KKyAgICBzd2l0Y2ggKGNpbmVtYV9tb2RlKXsKKyAgICBjYXNlIE9QSl9DSU5FTUEyS18yNDoKKyAgICBjYXNlIE9QSl9DSU5FTUEyS180ODoKKyAgICAgICAgaWYgKCgoaW1hZ2UtPmNvbXBzWzBdLncgPiAyMDQ4KSB8IChpbWFnZS0+Y29tcHNbMF0uaCA+IDEwODApKSl7CisgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICJKUEVHIDIwMDAgUHJvZmlsZS0zICgyayBkYyBwcm9maWxlKSByZXF1aXJlczpcbiIKKyAgICAgICAgICAgICAgICAgICAgIndpZHRoIDw9IDIwNDggYW5kIGhlaWdodCA8PSAxMDgwXG4iCisgICAgICAgICAgICAgICAgICAgICItPiBJbnB1dCBpbWFnZSBzaXplICVkIHggJWQgaXMgbm90IGNvbXBsaWFudFxuIgorICAgICAgICAgICAgICAgICAgICAiLT4gTm9uLXByb2ZpbGUtMyBjb2Rlc3RyZWFtIHdpbGwgYmUgZ2VuZXJhdGVkXG4iLAorICAgICAgICAgICAgICAgICAgICBpbWFnZS0+Y29tcHNbMF0udyxpbWFnZS0+Y29tcHNbMF0uaCk7CisgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT1BKX0NJTkVNQTRLXzI0OgorICAgICAgICBpZiAoKChpbWFnZS0+Y29tcHNbMF0udyA+IDQwOTYpIHwgKGltYWdlLT5jb21wc1swXS5oID4gMjE2MCkpKXsKKyAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgIkpQRUcgMjAwMCBQcm9maWxlLTQgKDRrIGRjIHByb2ZpbGUpIHJlcXVpcmVzOlxuIgorICAgICAgICAgICAgICAgICAgICAid2lkdGggPD0gNDA5NiBhbmQgaGVpZ2h0IDw9IDIxNjBcbiIKKyAgICAgICAgICAgICAgICAgICAgIi0+IEltYWdlIHNpemUgJWQgeCAlZCBpcyBub3QgY29tcGxpYW50XG4iCisgICAgICAgICAgICAgICAgICAgICItPiBOb24tcHJvZmlsZS00IGNvZGVzdHJlYW0gd2lsbCBiZSBnZW5lcmF0ZWRcbiIsCisgICAgICAgICAgICAgICAgICAgIGltYWdlLT5jb21wc1swXS53LGltYWdlLT5jb21wc1swXS5oKTsKKyAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdCA6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBPUEpfVFJVRTsKK30KKwordm9pZCBvcGpfajJrX3NldHVwX2VuY29kZXIoICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90ICppbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpCit7CisgICAgICAgIE9QSl9VSU5UMzIgaSwgaiwgdGlsZW5vLCBudW1wb2NzX3RpbGU7CisgICAgICAgIG9wal9jcF90ICpjcCA9IDAwOworCisgICAgICAgIGlmKCFwX2oyayB8fCAhcGFyYW1ldGVycyB8fCAhIGltYWdlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLyoga2VlcCBhIGxpbmsgdG8gY3Agc28gdGhhdCB3ZSBjYW4gZGVzdHJveSBpdCBsYXRlciBpbiBqMmtfZGVzdHJveV9jb21wcmVzcyAqLworICAgICAgICBjcCA9ICYocF9qMmstPm1fY3ApOworCisgICAgICAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgY3AgKi8KKyAgICAgICAgY3AtPnR3ID0gMTsKKyAgICAgICAgY3AtPnRoID0gMTsKKworICAgICAgICAvKiBzZXQgY2luZW1hIHBhcmFtZXRlcnMgaWYgcmVxdWlyZWQgKi8KKyAgICAgICAgaWYgKHBhcmFtZXRlcnMtPmNwX2NpbmVtYSl7CisgICAgICAgICAgICBvcGpfajJrX3NldF9jaW5lbWFfcGFyYW1ldGVycyhwYXJhbWV0ZXJzLGltYWdlLHBfbWFuYWdlcik7CisgICAgICAgICAgICBpZiAoIW9wal9qMmtfaXNfY2luZW1hX2NvbXBsaWFudChpbWFnZSxwYXJhbWV0ZXJzLT5jcF9jaW5lbWEscF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMtPmNwX3JzaXogPSBPUEpfU1REX1JTSVo7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICBjb3B5IHVzZXIgZW5jb2RpbmcgcGFyYW1ldGVycworICAgICAgICAqLworICAgICAgICBjcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX2NpbmVtYSA9IHBhcmFtZXRlcnMtPmNwX2NpbmVtYTsKKyAgICAgICAgY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9tYXhfY29tcF9zaXplID0gKE9QSl9VSU5UMzIpcGFyYW1ldGVycy0+bWF4X2NvbXBfc2l6ZTsKKyAgICAgICAgY3AtPnJzaXogICA9IHBhcmFtZXRlcnMtPmNwX3JzaXo7CisgICAgICAgIGNwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fZGlzdG9fYWxsb2MgPSAoT1BKX1VJTlQzMilwYXJhbWV0ZXJzLT5jcF9kaXN0b19hbGxvYyAmIDF1OworICAgICAgICBjcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX2ZpeGVkX2FsbG9jID0gKE9QSl9VSU5UMzIpcGFyYW1ldGVycy0+Y3BfZml4ZWRfYWxsb2MgJiAxdTsKKyAgICAgICAgY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9maXhlZF9xdWFsaXR5ID0gKE9QSl9VSU5UMzIpcGFyYW1ldGVycy0+Y3BfZml4ZWRfcXVhbGl0eSAmIDF1OworCisgICAgICAgIC8qIG1vZCBmaXhlZF9xdWFsaXR5ICovCisgICAgICAgIGlmIChwYXJhbWV0ZXJzLT5jcF9maXhlZF9hbGxvYyAmJiBwYXJhbWV0ZXJzLT5jcF9tYXRyaWNlKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IGFycmF5X3NpemUgPSAoc2l6ZV90KXBhcmFtZXRlcnMtPnRjcF9udW1sYXllcnMgKiAoc2l6ZV90KXBhcmFtZXRlcnMtPm51bXJlc29sdXRpb24gKiAzICogc2l6ZW9mKE9QSl9JTlQzMik7CisgICAgICAgICAgICAgICAgY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9tYXRyaWNlID0gKE9QSl9JTlQzMiAqKSBvcGpfbWFsbG9jKGFycmF5X3NpemUpOworICAgICAgICAgICAgICAgIG1lbWNweShjcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX21hdHJpY2UsIHBhcmFtZXRlcnMtPmNwX21hdHJpY2UsIGFycmF5X3NpemUpOworICAgICAgICB9CisKKyAgICAgICAgLyogdGlsZXMgKi8KKyAgICAgICAgY3AtPnRkeCA9IChPUEpfVUlOVDMyKXBhcmFtZXRlcnMtPmNwX3RkeDsKKyAgICAgICAgY3AtPnRkeSA9IChPUEpfVUlOVDMyKXBhcmFtZXRlcnMtPmNwX3RkeTsKKworICAgICAgICAvKiB0aWxlIG9mZnNldCAqLworICAgICAgICBjcC0+dHgwID0gKE9QSl9VSU5UMzIpcGFyYW1ldGVycy0+Y3BfdHgwOworICAgICAgICBjcC0+dHkwID0gKE9QSl9VSU5UMzIpcGFyYW1ldGVycy0+Y3BfdHkwOworCisgICAgICAgIC8qIGNvbW1lbnQgc3RyaW5nICovCisgICAgICAgIGlmKHBhcmFtZXRlcnMtPmNwX2NvbW1lbnQpIHsKKyAgICAgICAgICAgICAgICBjcC0+Y29tbWVudCA9IChjaGFyKilvcGpfbWFsbG9jKHN0cmxlbihwYXJhbWV0ZXJzLT5jcF9jb21tZW50KSArIDEpOworICAgICAgICAgICAgICAgIGlmKGNwLT5jb21tZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHkoY3AtPmNvbW1lbnQsIHBhcmFtZXRlcnMtPmNwX2NvbW1lbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgIGNhbGN1bGF0ZSBvdGhlciBlbmNvZGluZyBwYXJhbWV0ZXJzCisgICAgICAgICovCisKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMtPnRpbGVfc2l6ZV9vbikgeworICAgICAgICAgICAgICAgIGNwLT50dyA9IChPUEpfVUlOVDMyKW9wal9pbnRfY2VpbGRpdigoT1BKX0lOVDMyKShpbWFnZS0+eDEgLSBjcC0+dHgwKSwgKE9QSl9JTlQzMiljcC0+dGR4KTsKKyAgICAgICAgICAgICAgICBjcC0+dGggPSAoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXYoKE9QSl9JTlQzMikoaW1hZ2UtPnkxIC0gY3AtPnR5MCksIChPUEpfSU5UMzIpY3AtPnRkeSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY3AtPnRkeCA9IGltYWdlLT54MSAtIGNwLT50eDA7CisgICAgICAgICAgICAgICAgY3AtPnRkeSA9IGltYWdlLT55MSAtIGNwLT50eTA7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGFyYW1ldGVycy0+dHBfb24pIHsKKyAgICAgICAgICAgICAgICBjcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX3RwX2ZsYWcgPSAoT1BKX0JZVEUpcGFyYW1ldGVycy0+dHBfZmxhZzsKKyAgICAgICAgICAgICAgICBjcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX3RwX29uID0gMTsKKyAgICAgICAgfQorCisjaWZkZWYgVVNFX0pQV0wKKyAgICAgICAgLyoKKyAgICAgICAgY2FsY3VsYXRlIEpQV0wgZW5jb2RpbmcgcGFyYW1ldGVycworICAgICAgICAqLworCisgICAgICAgIGlmIChwYXJhbWV0ZXJzLT5qcHdsX2VwY19vbikgeworICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBpOworCisgICAgICAgICAgICAgICAgLyogc2V0IEpQV0wgb24gKi8KKyAgICAgICAgICAgICAgICBjcC0+ZXBjX29uID0gT1BKX1RSVUU7CisgICAgICAgICAgICAgICAgY3AtPmluZm9fb24gPSBPUEpfRkFMU0U7IC8qIG5vIGluZm9ybWF0aXZlIHRlY2huaXF1ZSAqLworCisgICAgICAgICAgICAgICAgLyogc2V0IEVQQiBvbiAqLworICAgICAgICAgICAgICAgIGlmICgocGFyYW1ldGVycy0+anB3bF9ocHJvdF9NSCA+IDApIHx8IChwYXJhbWV0ZXJzLT5qcHdsX2hwcm90X1RQSFswXSA+IDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjcC0+ZXBiX29uID0gT1BKX1RSVUU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNwLT5ocHJvdF9NSCA9IHBhcmFtZXRlcnMtPmpwd2xfaHByb3RfTUg7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgSlBXTF9NQVhfTk9fVElMRVNQRUNTOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3AtPmhwcm90X1RQSF90aWxlbm9baV0gPSBwYXJhbWV0ZXJzLT5qcHdsX2hwcm90X1RQSF90aWxlbm9baV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwLT5ocHJvdF9UUEhbaV0gPSBwYXJhbWV0ZXJzLT5qcHdsX2hwcm90X1RQSFtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIHRpbGUgc3BlY3MgYXJlIG5vdCBzcGVjaWZpZWQsIGNvcHkgTUggc3BlY3MgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcC0+aHByb3RfVFBIWzBdID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwLT5ocHJvdF9UUEhfdGlsZW5vWzBdID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3AtPmhwcm90X1RQSFswXSA9IHBhcmFtZXRlcnMtPmpwd2xfaHByb3RfTUg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgSlBXTF9NQVhfTk9fUEFDS1NQRUNTOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3AtPnBwcm90X3RpbGVub1tpXSA9IHBhcmFtZXRlcnMtPmpwd2xfcHByb3RfdGlsZW5vW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcC0+cHByb3RfcGFja25vW2ldID0gcGFyYW1ldGVycy0+anB3bF9wcHJvdF9wYWNrbm9baV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwLT5wcHJvdFtpXSA9IHBhcmFtZXRlcnMtPmpwd2xfcHByb3RbaV07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogc2V0IEVTRCB3cml0aW5nICovCisgICAgICAgICAgICAgICAgaWYgKChwYXJhbWV0ZXJzLT5qcHdsX3NlbnNfc2l6ZSA9PSAxKSB8fCAocGFyYW1ldGVycy0+anB3bF9zZW5zX3NpemUgPT0gMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNwLT5lc2Rfb24gPSBPUEpfVFJVRTsKKworICAgICAgICAgICAgICAgICAgICAgICAgY3AtPnNlbnNfc2l6ZSA9IHBhcmFtZXRlcnMtPmpwd2xfc2Vuc19zaXplOworICAgICAgICAgICAgICAgICAgICAgICAgY3AtPnNlbnNfYWRkciA9IHBhcmFtZXRlcnMtPmpwd2xfc2Vuc19hZGRyOworICAgICAgICAgICAgICAgICAgICAgICAgY3AtPnNlbnNfcmFuZ2UgPSBwYXJhbWV0ZXJzLT5qcHdsX3NlbnNfcmFuZ2U7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNwLT5zZW5zX01IID0gcGFyYW1ldGVycy0+anB3bF9zZW5zX01IOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IEpQV0xfTUFYX05PX1RJTEVTUEVDUzsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwLT5zZW5zX1RQSF90aWxlbm9baV0gPSBwYXJhbWV0ZXJzLT5qcHdsX3NlbnNfVFBIX3RpbGVub1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3AtPnNlbnNfVFBIW2ldID0gcGFyYW1ldGVycy0+anB3bF9zZW5zX1RQSFtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBhbHdheXMgc2V0IFJFRCB3cml0aW5nIHRvIGZhbHNlOiB3ZSBhcmUgYXQgdGhlIGVuY29kZXIgKi8KKyAgICAgICAgICAgICAgICBjcC0+cmVkX29uID0gT1BKX0ZBTFNFOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY3AtPmVwY19vbiA9IE9QSl9GQUxTRTsKKyAgICAgICAgfQorI2VuZGlmIC8qIFVTRV9KUFdMICovCisKKyAgICAgICAgLyogaW5pdGlhbGl6ZSB0aGUgbXV0aXBsZSB0aWxlcyAqLworICAgICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgICAgICAgIGNwLT50Y3BzID0gKG9wal90Y3BfdCopIG9wal9jYWxsb2MoY3AtPnR3ICogY3AtPnRoLCBzaXplb2Yob3BqX3RjcF90KSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLT5udW1wb2NzKSB7CisgICAgICAgICAgICAgICAgLyogaW5pdGlhbGlzYXRpb24gb2YgUE9DICovCisgICAgICAgICAgICAgICAgb3BqX2oya19jaGVja19wb2NfdmFsKHBhcmFtZXRlcnMtPlBPQyxwYXJhbWV0ZXJzLT5udW1wb2NzLCAoT1BKX1VJTlQzMilwYXJhbWV0ZXJzLT5udW1yZXNvbHV0aW9uLCBpbWFnZS0+bnVtY29tcHMsIChPUEpfVUlOVDMyKXBhcmFtZXRlcnMtPnRjcF9udW1sYXllcnMsIHBfbWFuYWdlcik7CisgICAgICAgICAgICAgICAgLyogVE9ETyBNU0QgdXNlIHRoZSByZXR1cm4gdmFsdWUqLworICAgICAgICB9CisKKyAgICAgICAgZm9yICh0aWxlbm8gPSAwOyB0aWxlbm8gPCBjcC0+dHcgKiBjcC0+dGg7IHRpbGVubysrKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjcF90ICp0Y3AgPSAmY3AtPnRjcHNbdGlsZW5vXTsKKyAgICAgICAgICAgICAgICB0Y3AtPm51bWxheWVycyA9IChPUEpfVUlOVDMyKXBhcmFtZXRlcnMtPnRjcF9udW1sYXllcnM7CisKKyAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdGNwLT5udW1sYXllcnM7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYoY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9jaW5lbWEpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9maXhlZF9xdWFsaXR5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwLT5kaXN0b3JhdGlvW2pdID0gcGFyYW1ldGVycy0+dGNwX2Rpc3RvcmF0aW9bal07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwLT5yYXRlc1tqXSA9IHBhcmFtZXRlcnMtPnRjcF9yYXRlc1tqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9maXhlZF9xdWFsaXR5KSB7ICAgICAgIC8qIGFkZCBmaXhlZF9xdWFsaXR5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwLT5kaXN0b3JhdGlvW2pdID0gcGFyYW1ldGVycy0+dGNwX2Rpc3RvcmF0aW9bal07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwLT5yYXRlc1tqXSA9IHBhcmFtZXRlcnMtPnRjcF9yYXRlc1tqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRjcC0+Y3N0eSA9IChPUEpfVUlOVDMyKXBhcmFtZXRlcnMtPmNzdHk7CisgICAgICAgICAgICAgICAgdGNwLT5wcmcgPSBwYXJhbWV0ZXJzLT5wcm9nX29yZGVyOworICAgICAgICAgICAgICAgIHRjcC0+bWN0ID0gKE9QSl9VSU5UMzIpcGFyYW1ldGVycy0+dGNwX21jdDsKKworICAgICAgICAgICAgICAgIG51bXBvY3NfdGlsZSA9IDA7CisgICAgICAgICAgICAgICAgdGNwLT5QT0MgPSAwOworCisgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMtPm51bXBvY3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWxpc2F0aW9uIG9mIFBPQyAqLworICAgICAgICAgICAgICAgICAgICAgICAgdGNwLT5QT0MgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBhcmFtZXRlcnMtPm51bXBvY3M7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGlsZW5vICsgMSA9PSBwYXJhbWV0ZXJzLT5QT0NbaV0udGlsZSApICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BvY190ICp0Y3BfcG9jID0gJnRjcC0+cG9jc1tudW1wb2NzX3RpbGVdOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX3BvYy0+cmVzbm8wICAgICAgICAgPSBwYXJhbWV0ZXJzLT5QT0NbbnVtcG9jc190aWxlXS5yZXNubzA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX3BvYy0+Y29tcG5vMCAgICAgICAgPSBwYXJhbWV0ZXJzLT5QT0NbbnVtcG9jc190aWxlXS5jb21wbm8wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9wb2MtPmxheW5vMSAgICAgICAgID0gcGFyYW1ldGVycy0+UE9DW251bXBvY3NfdGlsZV0ubGF5bm8xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9wb2MtPnJlc25vMSAgICAgICAgID0gcGFyYW1ldGVycy0+UE9DW251bXBvY3NfdGlsZV0ucmVzbm8xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9wb2MtPmNvbXBubzEgICAgICAgID0gcGFyYW1ldGVycy0+UE9DW251bXBvY3NfdGlsZV0uY29tcG5vMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BfcG9jLT5wcmcxICAgICAgICAgICA9IHBhcmFtZXRlcnMtPlBPQ1tudW1wb2NzX3RpbGVdLnByZzE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX3BvYy0+dGlsZSAgICAgICAgICAgPSBwYXJhbWV0ZXJzLT5QT0NbbnVtcG9jc190aWxlXS50aWxlOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtcG9jc190aWxlKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdGNwLT5udW1wb2NzID0gbnVtcG9jc190aWxlIC0xIDsKKyAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjcC0+bnVtcG9jcyA9IDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGNwLT50Y2NwcyA9IChvcGpfdGNjcF90Kikgb3BqX2NhbGxvYyhpbWFnZS0+bnVtY29tcHMsIHNpemVvZihvcGpfdGNjcF90KSk7CisKKyAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVycy0+bWN0X2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBsTWN0U2l6ZSA9IGltYWdlLT5udW1jb21wcyAqIGltYWdlLT5udW1jb21wcyAqIChPUEpfVUlOVDMyKXNpemVvZihPUEpfRkxPQVQzMik7CisgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogbFRtcEJ1ZiA9IChPUEpfRkxPQVQzMiopb3BqX21hbGxvYyhsTWN0U2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIGxfZGNfc2hpZnQgPSAoT1BKX0lOVDMyICopICgoT1BKX0JZVEUgKikgcGFyYW1ldGVycy0+bWN0X2RhdGEgKyBsTWN0U2l6ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgdGNwLT5tY3QgPSAyOworICAgICAgICAgICAgICAgICAgICB0Y3AtPm1fbWN0X2NvZGluZ19tYXRyaXggPSAoT1BKX0ZMT0FUMzIqKW9wal9tYWxsb2MobE1jdFNpemUpOworICAgICAgICAgICAgICAgICAgICBtZW1jcHkodGNwLT5tX21jdF9jb2RpbmdfbWF0cml4LHBhcmFtZXRlcnMtPm1jdF9kYXRhLGxNY3RTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGxUbXBCdWYscGFyYW1ldGVycy0+bWN0X2RhdGEsbE1jdFNpemUpOworCisgICAgICAgICAgICAgICAgICAgIHRjcC0+bV9tY3RfZGVjb2RpbmdfbWF0cml4ID0gKE9QSl9GTE9BVDMyKilvcGpfbWFsbG9jKGxNY3RTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KG9wal9tYXRyaXhfaW52ZXJzaW9uX2YobFRtcEJ1ZiwodGNwLT5tX21jdF9kZWNvZGluZ19tYXRyaXgpLGltYWdlLT5udW1jb21wcykpOworCisgICAgICAgICAgICAgICAgICAgIHRjcC0+bWN0X25vcm1zID0gKE9QSl9GTE9BVDY0KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9tYWxsb2MoaW1hZ2UtPm51bWNvbXBzICogc2l6ZW9mKE9QSl9GTE9BVDY0KSk7CisKKyAgICAgICAgICAgICAgICAgICAgb3BqX2NhbGN1bGF0ZV9ub3Jtcyh0Y3AtPm1jdF9ub3JtcyxpbWFnZS0+bnVtY29tcHMsdGNwLT5tX21jdF9kZWNvZGluZ19tYXRyaXgpOworICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsVG1wQnVmKTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW1hZ2UtPm51bWNvbXBzOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNjcF90ICp0Y2NwID0gJnRjcC0+dGNjcHNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+bV9kY19sZXZlbF9zaGlmdCA9IGxfZGNfc2hpZnRbaV07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBvcGpfajJrX3NldHVwX21jdF9lbmNvZGluZyh0Y3AsaW1hZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbWFnZS0+bnVtY29tcHM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNjcF90ICp0Y2NwID0gJnRjcC0+dGNjcHNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV9jb21wX3QgKiBsX2NvbXAgPSAmKGltYWdlLT5jb21wc1tpXSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbF9jb21wLT5zZ25kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+bV9kY19sZXZlbF9zaGlmdCA9IDEgPDwgKGxfY29tcC0+cHJlYyAtIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGltYWdlLT5udW1jb21wczsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNjcF90ICp0Y2NwID0gJnRjcC0+dGNjcHNbaV07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjY3AtPmNzdHkgPSBwYXJhbWV0ZXJzLT5jc3R5ICYgMHgwMTsgICAvKiAwID0+IG9uZSBwcmVjaW5jdCB8fCAxID0+IGN1c3RvbSBwcmVjaW5jdCAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRjY3AtPm51bXJlc29sdXRpb25zID0gKE9QSl9VSU5UMzIpcGFyYW1ldGVycy0+bnVtcmVzb2x1dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjY3AtPmNibGt3ID0gKE9QSl9VSU5UMzIpb3BqX2ludF9mbG9vcmxvZzIocGFyYW1ldGVycy0+Y2Jsb2Nrd19pbml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjY3AtPmNibGtoID0gKE9QSl9VSU5UMzIpb3BqX2ludF9mbG9vcmxvZzIocGFyYW1ldGVycy0+Y2Jsb2NraF9pbml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjY3AtPmNibGtzdHkgPSAoT1BKX1VJTlQzMilwYXJhbWV0ZXJzLT5tb2RlOworICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+cW1mYmlkID0gcGFyYW1ldGVycy0+aXJyZXZlcnNpYmxlID8gMCA6IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2NwLT5xbnRzdHkgPSBwYXJhbWV0ZXJzLT5pcnJldmVyc2libGUgPyBKMktfQ0NQX1FOVFNUWV9TRVFOVCA6IEoyS19DQ1BfUU5UU1RZX05PUU5UOworICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+bnVtZ2JpdHMgPSAyOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKE9QSl9JTlQzMilpID09IHBhcmFtZXRlcnMtPnJvaV9jb21wbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+cm9pc2hpZnQgPSBwYXJhbWV0ZXJzLT5yb2lfc2hpZnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2NwLT5yb2lzaGlmdCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMtPmNzdHkgJiBKMktfQ0NQX0NTVFlfUFJUKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHAgPSAwLCBpdF9yZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KCB0Y2NwLT5udW1yZXNvbHV0aW9ucyA+IDAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGl0X3JlcyA9IChPUEpfSU5UMzIpdGNjcC0+bnVtcmVzb2x1dGlvbnMgLSAxOyBpdF9yZXMgPj0gMDsgaXRfcmVzLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwIDwgcGFyYW1ldGVycy0+cmVzX3NwZWMpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVycy0+cHJjd19pbml0W3BdIDwgMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjY3AtPnByY3dbaXRfcmVzXSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+cHJjd1tpdF9yZXNdID0gKE9QSl9VSU5UMzIpb3BqX2ludF9mbG9vcmxvZzIocGFyYW1ldGVycy0+cHJjd19pbml0W3BdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLT5wcmNoX2luaXRbcF0gPCAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+cHJjaFtpdF9yZXNdID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjY3AtPnByY2hbaXRfcmVzXSA9IChPUEpfVUlOVDMyKW9wal9pbnRfZmxvb3Jsb2cyKHBhcmFtZXRlcnMtPnByY2hfaW5pdFtwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHJlc19zcGVjID0gcGFyYW1ldGVycy0+cmVzX3NwZWM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBzaXplX3ByY3cgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgc2l6ZV9wcmNoID0gMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQocmVzX3NwZWM+MCk7IC8qIGlzc3VlIDE4OSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3ByY3cgPSBwYXJhbWV0ZXJzLT5wcmN3X2luaXRbcmVzX3NwZWMgLSAxXSA+PiAocCAtIChyZXNfc3BlYyAtIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV9wcmNoID0gcGFyYW1ldGVycy0+cHJjaF9pbml0W3Jlc19zcGVjIC0gMV0gPj4gKHAgLSAocmVzX3NwZWMgLSAxKSk7CisKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2l6ZV9wcmN3IDwgMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjY3AtPnByY3dbaXRfcmVzXSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+cHJjd1tpdF9yZXNdID0gKE9QSl9VSU5UMzIpb3BqX2ludF9mbG9vcmxvZzIoc2l6ZV9wcmN3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaXplX3ByY2ggPCAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+cHJjaFtpdF9yZXNdID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2NwLT5wcmNoW2l0X3Jlc10gPSAoT1BKX1VJTlQzMilvcGpfaW50X2Zsb29ybG9nMihzaXplX3ByY2gpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnByaW50ZigiXG5zaXplIHByZWNpbmN0IGZvciBsZXZlbCAlZCA6ICVkLCVkXG4iLCBpdF9yZXMsdGNjcC0+cHJjd1tpdF9yZXNdLCB0Y2NwLT5wcmNoW2l0X3Jlc10pOyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgLyplbmQgZm9yKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdGNjcC0+bnVtcmVzb2x1dGlvbnM7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+cHJjd1tqXSA9IDE1OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+cHJjaFtqXSA9IDE1OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZHd0X2NhbGNfZXhwbGljaXRfc3RlcHNpemVzKHRjY3AsIGltYWdlLT5jb21wc1tpXS5wcmVjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocGFyYW1ldGVycy0+bWN0X2RhdGEpIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShwYXJhbWV0ZXJzLT5tY3RfZGF0YSk7CisgICAgICAgICAgICAgICAgcGFyYW1ldGVycy0+bWN0X2RhdGEgPSAwMDsKKyAgICAgICAgfQorfQorCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19hZGRfbWhtYXJrZXIob3BqX2NvZGVzdHJlYW1faW5kZXhfdCAqY3N0cl9pbmRleCwgT1BKX1VJTlQzMiB0eXBlLCBPUEpfT0ZGX1QgcG9zLCBPUEpfVUlOVDMyIGxlbikKK3sKKyAgICAgICAgYXNzZXJ0KGNzdHJfaW5kZXggIT0gMDApOworCisgICAgICAgIC8qIGV4cGFuZCB0aGUgbGlzdD8gKi8KKyAgICAgICAgaWYgKChjc3RyX2luZGV4LT5tYXJrbnVtICsgMSkgPiBjc3RyX2luZGV4LT5tYXhtYXJrbnVtKSB7CisgICAgICAgICAgICAgICAgb3BqX21hcmtlcl9pbmZvX3QgKm5ld19tYXJrZXI7CisgICAgICAgICAgICAgICAgY3N0cl9pbmRleC0+bWF4bWFya251bSA9IChPUEpfVUlOVDMyKSgxMDAgKyAoT1BKX0ZMT0FUMzIpIGNzdHJfaW5kZXgtPm1heG1hcmtudW0pOworICAgICAgICAgICAgICAgIG5ld19tYXJrZXIgPSAob3BqX21hcmtlcl9pbmZvX3QgKikgb3BqX3JlYWxsb2MoY3N0cl9pbmRleC0+bWFya2VyLCBjc3RyX2luZGV4LT5tYXhtYXJrbnVtICpzaXplb2Yob3BqX21hcmtlcl9pbmZvX3QpKTsKKyAgICAgICAgICAgICAgICBpZiAoISBuZXdfbWFya2VyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShjc3RyX2luZGV4LT5tYXJrZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgY3N0cl9pbmRleC0+bWFya2VyID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNzdHJfaW5kZXgtPm1heG1hcmtudW0gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY3N0cl9pbmRleC0+bWFya251bSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIG1oIG1hcmtlclxuIik7ICovCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjc3RyX2luZGV4LT5tYXJrZXIgPSBuZXdfbWFya2VyOworICAgICAgICB9CisKKyAgICAgICAgLyogYWRkIHRoZSBtYXJrZXIgKi8KKyAgICAgICAgY3N0cl9pbmRleC0+bWFya2VyW2NzdHJfaW5kZXgtPm1hcmtudW1dLnR5cGUgPSAoT1BKX1VJTlQxNil0eXBlOworICAgICAgICBjc3RyX2luZGV4LT5tYXJrZXJbY3N0cl9pbmRleC0+bWFya251bV0ucG9zID0gKE9QSl9JTlQzMilwb3M7CisgICAgICAgIGNzdHJfaW5kZXgtPm1hcmtlcltjc3RyX2luZGV4LT5tYXJrbnVtXS5sZW4gPSAoT1BKX0lOVDMyKWxlbjsKKyAgICAgICAgY3N0cl9pbmRleC0+bWFya251bSsrOworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2FkZF90bG1hcmtlcihPUEpfVUlOVDMyIHRpbGVubywgb3BqX2NvZGVzdHJlYW1faW5kZXhfdCAqY3N0cl9pbmRleCwgT1BKX1VJTlQzMiB0eXBlLCBPUEpfT0ZGX1QgcG9zLCBPUEpfVUlOVDMyIGxlbikKK3sKKyAgICAgICAgYXNzZXJ0KGNzdHJfaW5kZXggIT0gMDApOworICAgICAgICBhc3NlcnQoY3N0cl9pbmRleC0+dGlsZV9pbmRleCAhPSAwMCk7CisKKyAgICAgICAgLyogZXhwYW5kIHRoZSBsaXN0PyAqLworICAgICAgICBpZiAoKGNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbdGlsZW5vXS5tYXJrbnVtICsgMSkgPiBjc3RyX2luZGV4LT50aWxlX2luZGV4W3RpbGVub10ubWF4bWFya251bSkgeworICAgICAgICAgICAgICAgIG9wal9tYXJrZXJfaW5mb190ICpuZXdfbWFya2VyOworICAgICAgICAgICAgICAgIGNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbdGlsZW5vXS5tYXhtYXJrbnVtID0gKE9QSl9VSU5UMzIpKDEwMCArIChPUEpfRkxPQVQzMikgY3N0cl9pbmRleC0+dGlsZV9pbmRleFt0aWxlbm9dLm1heG1hcmtudW0pOworICAgICAgICAgICAgICAgIG5ld19tYXJrZXIgPSAob3BqX21hcmtlcl9pbmZvX3QgKikgb3BqX3JlYWxsb2MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbdGlsZW5vXS5tYXJrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbdGlsZW5vXS5tYXhtYXJrbnVtICpzaXplb2Yob3BqX21hcmtlcl9pbmZvX3QpKTsKKyAgICAgICAgICAgICAgICBpZiAoISBuZXdfbWFya2VyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShjc3RyX2luZGV4LT50aWxlX2luZGV4W3RpbGVub10ubWFya2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbdGlsZW5vXS5tYXJrZXIgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgY3N0cl9pbmRleC0+dGlsZV9pbmRleFt0aWxlbm9dLm1heG1hcmtudW0gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY3N0cl9pbmRleC0+dGlsZV9pbmRleFt0aWxlbm9dLm1hcmtudW0gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgLyogb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCB0bCBtYXJrZXJcbiIpOyAqLworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3N0cl9pbmRleC0+dGlsZV9pbmRleFt0aWxlbm9dLm1hcmtlciA9IG5ld19tYXJrZXI7CisgICAgICAgIH0KKworICAgICAgICAvKiBhZGQgdGhlIG1hcmtlciAqLworICAgICAgICBjc3RyX2luZGV4LT50aWxlX2luZGV4W3RpbGVub10ubWFya2VyW2NzdHJfaW5kZXgtPnRpbGVfaW5kZXhbdGlsZW5vXS5tYXJrbnVtXS50eXBlID0gKE9QSl9VSU5UMTYpdHlwZTsKKyAgICAgICAgY3N0cl9pbmRleC0+dGlsZV9pbmRleFt0aWxlbm9dLm1hcmtlcltjc3RyX2luZGV4LT50aWxlX2luZGV4W3RpbGVub10ubWFya251bV0ucG9zID0gKE9QSl9JTlQzMilwb3M7CisgICAgICAgIGNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbdGlsZW5vXS5tYXJrZXJbY3N0cl9pbmRleC0+dGlsZV9pbmRleFt0aWxlbm9dLm1hcmtudW1dLmxlbiA9IChPUEpfSU5UMzIpbGVuOworICAgICAgICBjc3RyX2luZGV4LT50aWxlX2luZGV4W3RpbGVub10ubWFya251bSsrOworCisgICAgICAgIGlmICh0eXBlID09IEoyS19NU19TT1QpIHsKKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGxfY3VycmVudF90aWxlX3BhcnQgPSBjc3RyX2luZGV4LT50aWxlX2luZGV4W3RpbGVub10uY3VycmVudF90cHNubzsKKworICAgICAgICAgICAgICAgIGlmIChjc3RyX2luZGV4LT50aWxlX2luZGV4W3RpbGVub10udHBfaW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICBjc3RyX2luZGV4LT50aWxlX2luZGV4W3RpbGVub10udHBfaW5kZXhbbF9jdXJyZW50X3RpbGVfcGFydF0uc3RhcnRfcG9zID0gcG9zOworCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK09QSl9CT09MIG9wal9qMmtfZW5kX2RlY29tcHJlc3Mob3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICh2b2lkKXBfajJrOworICAgICh2b2lkKXBfc3RyZWFtOworICAgICh2b2lkKXBfbWFuYWdlcjsKKyAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfcmVhZF9oZWFkZXIoICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2oya190KiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90KiogcF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICAvKiBjcmVhdGUgYW4gZW1wdHkgaW1hZ2UgaGVhZGVyICovCisgICAgICAgIHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UgPSBvcGpfaW1hZ2VfY3JlYXRlMCgpOworICAgICAgICBpZiAoISBwX2oyay0+bV9wcml2YXRlX2ltYWdlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGN1c3RvbWl6YXRpb24gb2YgdGhlIHZhbGlkYXRpb24gKi8KKyAgICAgICAgb3BqX2oya19zZXR1cF9kZWNvZGluZ192YWxpZGF0aW9uKHBfajJrKTsKKworICAgICAgICAvKiB2YWxpZGF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzIGNvZGVjICovCisgICAgICAgIGlmICghIG9wal9qMmtfZXhlYyhwX2oyaywgcF9qMmstPm1fdmFsaWRhdGlvbl9saXN0LCBwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgb3BqX2ltYWdlX2Rlc3Ryb3kocF9qMmstPm1fcHJpdmF0ZV9pbWFnZSk7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fcHJpdmF0ZV9pbWFnZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGN1c3RvbWl6YXRpb24gb2YgdGhlIGVuY29kaW5nICovCisgICAgICAgIG9wal9qMmtfc2V0dXBfaGVhZGVyX3JlYWRpbmcocF9qMmspOworCisgICAgICAgIC8qIHJlYWQgaGVhZGVyICovCisgICAgICAgIGlmICghIG9wal9qMmtfZXhlYyAocF9qMmsscF9qMmstPm1fcHJvY2VkdXJlX2xpc3QscF9zdHJlYW0scF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgIG9wal9pbWFnZV9kZXN0cm95KHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UpOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UgPSBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICAqcF9pbWFnZSA9IG9wal9pbWFnZV9jcmVhdGUwKCk7CisgICAgICAgIGlmICghICgqcF9pbWFnZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogQ29weSBjb2Rlc3RyZWFtIGltYWdlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgaW1hZ2UgKi8KKyAgICAgICAgb3BqX2NvcHlfaW1hZ2VfaGVhZGVyKHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UsICpwX2ltYWdlKTsKKworICAgIC8qQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgc29tZSBlbGVtZW50cyBvZiBjb2Rlc3RyZW0gaW5kZXgqLworICAgICAgICBpZiAoIW9wal9qMmtfYWxsb2NhdGVfdGlsZV9lbGVtZW50X2NzdHJfaW5kZXgocF9qMmspKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCit2b2lkIG9wal9qMmtfc2V0dXBfaGVhZGVyX3JlYWRpbmcgKG9wal9qMmtfdCAqcF9qMmspCit7CisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworCisgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF9hZGRfcHJvY2VkdXJlKHBfajJrLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qMmtfcmVhZF9oZWFkZXJfcHJvY2VkdXJlKTsKKworICAgICAgICAvKiBERVZFTE9QRVIgQ09STkVSLCBhZGQgeW91ciBjdXN0b20gcHJvY2VkdXJlcyAqLworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX2NvcHlfZGVmYXVsdF90Y3BfYW5kX2NyZWF0ZV90Y2QpOworCit9CisKK3ZvaWQgb3BqX2oya19zZXR1cF9kZWNvZGluZ192YWxpZGF0aW9uIChvcGpfajJrX3QgKnBfajJrKQoreworICAgICAgICAvKiBwcmVjb25kaXRpb25zKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV92YWxpZGF0aW9uX2xpc3QsIChvcGpfcHJvY2VkdXJlKW9wal9qMmtfYnVpbGRfZGVjb2Rlcik7CisgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF9hZGRfcHJvY2VkdXJlKHBfajJrLT5tX3ZhbGlkYXRpb25fbGlzdCwgKG9wal9wcm9jZWR1cmUpb3BqX2oya19kZWNvZGluZ192YWxpZGF0aW9uKTsKKyAgICAgICAgLyogREVWRUxPUEVSIENPUk5FUiwgYWRkIHlvdXIgY3VzdG9tIHZhbGlkYXRpb24gcHJvY2VkdXJlICovCisKK30KKworT1BKX0JPT0wgb3BqX2oya19tY3RfdmFsaWRhdGlvbiAoICAgICAgIG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKQoreworICAgICAgICBPUEpfQk9PTCBsX2lzX3ZhbGlkID0gT1BKX1RSVUU7CisgICAgICAgIE9QSl9VSU5UMzIgaSxqOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfc3RyZWFtICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgaWYgKChwX2oyay0+bV9jcC5yc2l6ICYgMHg4MjAwKSA9PSAweDgyMDApIHsKKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGxfbmJfdGlsZXMgPSBwX2oyay0+bV9jcC50aCAqIHBfajJrLT5tX2NwLnR3OworICAgICAgICAgICAgICAgIG9wal90Y3BfdCAqIGxfdGNwID0gcF9qMmstPm1fY3AudGNwczsKKworICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bF9uYl90aWxlczsrK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX3RjcC0+bWN0ID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjY3BfdCAqIGxfdGNjcCA9IGxfdGNwLT50Y2NwczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9pc192YWxpZCAmPSAobF90Y3AtPm1fbWN0X2NvZGluZ19tYXRyaXggIT0gMDApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8cF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHM7KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9pc192YWxpZCAmPSAhIChsX3RjY3AtPnFtZmJpZCAmIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF90Y2NwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICArK2xfdGNwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsX2lzX3ZhbGlkOworfQorCitPUEpfQk9PTCBvcGpfajJrX3NldHVwX21jdF9lbmNvZGluZyhvcGpfdGNwX3QgKiBwX3RjcCwgb3BqX2ltYWdlX3QgKiBwX2ltYWdlKQoreworICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgIE9QSl9VSU5UMzIgbF9pbmRpeCA9IDE7CisgICAgICAgIG9wal9tY3RfZGF0YV90ICogbF9tY3RfZGVjb19kYXRhID0gMDAsKiBsX21jdF9vZmZzZXRfZGF0YSA9IDAwOworICAgICAgICBvcGpfc2ltcGxlX21jY19kZWNvcnJlbGF0aW9uX2RhdGFfdCAqIGxfbWNjX2RhdGE7CisgICAgICAgIE9QSl9VSU5UMzIgbF9tY3Rfc2l6ZSxsX25iX2VsZW07CisgICAgICAgIE9QSl9GTE9BVDMyICogbF9kYXRhLCAqIGxfY3VycmVudF9kYXRhOworICAgICAgICBvcGpfdGNjcF90ICogbF90Y2NwOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfdGNwICE9IDAwKTsKKworICAgICAgICBpZiAocF90Y3AtPm1jdCAhPSAyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBfdGNwLT5tX21jdF9kZWNvZGluZ19tYXRyaXgpIHsKKyAgICAgICAgICAgICAgICBpZiAocF90Y3AtPm1fbmJfbWN0X3JlY29yZHMgPT0gcF90Y3AtPm1fbmJfbWF4X21jdF9yZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfbWN0X2RhdGFfdCAqbmV3X21jdF9yZWNvcmRzOworICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3AtPm1fbmJfbWF4X21jdF9yZWNvcmRzICs9IE9QSl9KMktfTUNUX0RFRkFVTFRfTkJfUkVDT1JEUzsKKworICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21jdF9yZWNvcmRzID0gKG9wal9tY3RfZGF0YV90ICopIG9wal9yZWFsbG9jKHBfdGNwLT5tX21jdF9yZWNvcmRzLCBwX3RjcC0+bV9uYl9tYXhfbWN0X3JlY29yZHMgKiBzaXplb2Yob3BqX21jdF9kYXRhX3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG5ld19tY3RfcmVjb3JkcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX3RjcC0+bV9tY3RfcmVjb3Jkcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfdGNwLT5tX21jdF9yZWNvcmRzID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3AtPm1fbmJfbWF4X21jdF9yZWNvcmRzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3AtPm1fbmJfbWN0X3JlY29yZHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gc2V0dXAgbWN0IGVuY29kaW5nXG4iKTsgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdGNwLT5tX21jdF9yZWNvcmRzID0gbmV3X21jdF9yZWNvcmRzOworICAgICAgICAgICAgICAgICAgICAgICAgbF9tY3RfZGVjb19kYXRhID0gcF90Y3AtPm1fbWN0X3JlY29yZHMgKyBwX3RjcC0+bV9uYl9tY3RfcmVjb3JkczsKKworICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGxfbWN0X2RlY29fZGF0YSAsMCwocF90Y3AtPm1fbmJfbWF4X21jdF9yZWNvcmRzIC0gcF90Y3AtPm1fbmJfbWN0X3JlY29yZHMpICogc2l6ZW9mKG9wal9tY3RfZGF0YV90KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxfbWN0X2RlY29fZGF0YSA9IHBfdGNwLT5tX21jdF9yZWNvcmRzICsgcF90Y3AtPm1fbmJfbWN0X3JlY29yZHM7CisKKyAgICAgICAgICAgICAgICBpZiAobF9tY3RfZGVjb19kYXRhLT5tX2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfbWN0X2RlY29fZGF0YS0+bV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWN0X2RlY29fZGF0YS0+bV9kYXRhID0gMDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbF9tY3RfZGVjb19kYXRhLT5tX2luZGV4ID0gbF9pbmRpeCsrOworICAgICAgICAgICAgICAgIGxfbWN0X2RlY29fZGF0YS0+bV9hcnJheV90eXBlID0gTUNUX1RZUEVfREVDT1JSRUxBVElPTjsKKyAgICAgICAgICAgICAgICBsX21jdF9kZWNvX2RhdGEtPm1fZWxlbWVudF90eXBlID0gTUNUX1RZUEVfRkxPQVQ7CisgICAgICAgICAgICAgICAgbF9uYl9lbGVtID0gcF9pbWFnZS0+bnVtY29tcHMgKiBwX2ltYWdlLT5udW1jb21wczsKKyAgICAgICAgICAgICAgICBsX21jdF9zaXplID0gbF9uYl9lbGVtICogTUNUX0VMRU1FTlRfU0laRVtsX21jdF9kZWNvX2RhdGEtPm1fZWxlbWVudF90eXBlXTsKKyAgICAgICAgICAgICAgICBsX21jdF9kZWNvX2RhdGEtPm1fZGF0YSA9IChPUEpfQllURSopb3BqX21hbGxvYyhsX21jdF9zaXplICk7CisKKyAgICAgICAgICAgICAgICBpZiAoISBsX21jdF9kZWNvX2RhdGEtPm1fZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBqMmtfbWN0X3dyaXRlX2Z1bmN0aW9uc19mcm9tX2Zsb2F0W2xfbWN0X2RlY29fZGF0YS0+bV9lbGVtZW50X3R5cGVdKHBfdGNwLT5tX21jdF9kZWNvZGluZ19tYXRyaXgsbF9tY3RfZGVjb19kYXRhLT5tX2RhdGEsbF9uYl9lbGVtKTsKKworICAgICAgICAgICAgICAgIGxfbWN0X2RlY29fZGF0YS0+bV9kYXRhX3NpemUgPSBsX21jdF9zaXplOworICAgICAgICAgICAgICAgICsrcF90Y3AtPm1fbmJfbWN0X3JlY29yZHM7CisgICAgICAgIH0KKworICAgICAgICBpZiAocF90Y3AtPm1fbmJfbWN0X3JlY29yZHMgPT0gcF90Y3AtPm1fbmJfbWF4X21jdF9yZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgb3BqX21jdF9kYXRhX3QgKm5ld19tY3RfcmVjb3JkczsKKyAgICAgICAgICAgICAgICBwX3RjcC0+bV9uYl9tYXhfbWN0X3JlY29yZHMgKz0gT1BKX0oyS19NQ1RfREVGQVVMVF9OQl9SRUNPUkRTOworICAgICAgICAgICAgICAgIG5ld19tY3RfcmVjb3JkcyA9IChvcGpfbWN0X2RhdGFfdCAqKSBvcGpfcmVhbGxvYyhwX3RjcC0+bV9tY3RfcmVjb3JkcywgcF90Y3AtPm1fbmJfbWF4X21jdF9yZWNvcmRzICogc2l6ZW9mKG9wal9tY3RfZGF0YV90KSk7CisgICAgICAgICAgICAgICAgaWYgKCEgbmV3X21jdF9yZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX3RjcC0+bV9tY3RfcmVjb3Jkcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBwX3RjcC0+bV9tY3RfcmVjb3JkcyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICBwX3RjcC0+bV9uYl9tYXhfbWN0X3JlY29yZHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3AtPm1fbmJfbWN0X3JlY29yZHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgLyogb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHNldHVwIG1jdCBlbmNvZGluZ1xuIik7ICovCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwX3RjcC0+bV9tY3RfcmVjb3JkcyA9IG5ld19tY3RfcmVjb3JkczsKKyAgICAgICAgICAgICAgICBsX21jdF9vZmZzZXRfZGF0YSA9IHBfdGNwLT5tX21jdF9yZWNvcmRzICsgcF90Y3AtPm1fbmJfbWN0X3JlY29yZHM7CisKKyAgICAgICAgICAgICAgICBtZW1zZXQobF9tY3Rfb2Zmc2V0X2RhdGEgLDAsKHBfdGNwLT5tX25iX21heF9tY3RfcmVjb3JkcyAtIHBfdGNwLT5tX25iX21jdF9yZWNvcmRzKSAqIHNpemVvZihvcGpfbWN0X2RhdGFfdCkpOworCisgICAgICAgICAgICAgICAgaWYgKGxfbWN0X2RlY29fZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbF9tY3RfZGVjb19kYXRhID0gbF9tY3Rfb2Zmc2V0X2RhdGEgLSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxfbWN0X29mZnNldF9kYXRhID0gcF90Y3AtPm1fbWN0X3JlY29yZHMgKyBwX3RjcC0+bV9uYl9tY3RfcmVjb3JkczsKKworICAgICAgICBpZiAobF9tY3Rfb2Zmc2V0X2RhdGEtPm1fZGF0YSkgeworICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfbWN0X29mZnNldF9kYXRhLT5tX2RhdGEpOworICAgICAgICAgICAgICAgIGxfbWN0X29mZnNldF9kYXRhLT5tX2RhdGEgPSAwMDsKKyAgICAgICAgfQorCisgICAgICAgIGxfbWN0X29mZnNldF9kYXRhLT5tX2luZGV4ID0gbF9pbmRpeCsrOworICAgICAgICBsX21jdF9vZmZzZXRfZGF0YS0+bV9hcnJheV90eXBlID0gTUNUX1RZUEVfT0ZGU0VUOworICAgICAgICBsX21jdF9vZmZzZXRfZGF0YS0+bV9lbGVtZW50X3R5cGUgPSBNQ1RfVFlQRV9GTE9BVDsKKyAgICAgICAgbF9uYl9lbGVtID0gcF9pbWFnZS0+bnVtY29tcHM7CisgICAgICAgIGxfbWN0X3NpemUgPSBsX25iX2VsZW0gKiBNQ1RfRUxFTUVOVF9TSVpFW2xfbWN0X29mZnNldF9kYXRhLT5tX2VsZW1lbnRfdHlwZV07CisgICAgICAgIGxfbWN0X29mZnNldF9kYXRhLT5tX2RhdGEgPSAoT1BKX0JZVEUqKW9wal9tYWxsb2MobF9tY3Rfc2l6ZSApOworCisgICAgICAgIGlmICghIGxfbWN0X29mZnNldF9kYXRhLT5tX2RhdGEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgbF9kYXRhID0gKE9QSl9GTE9BVDMyKilvcGpfbWFsbG9jKGxfbmJfZWxlbSAqIHNpemVvZihPUEpfRkxPQVQzMikpOworICAgICAgICBpZiAoISBsX2RhdGEpIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShsX21jdF9vZmZzZXRfZGF0YS0+bV9kYXRhKTsKKyAgICAgICAgICAgICAgICBsX21jdF9vZmZzZXRfZGF0YS0+bV9kYXRhID0gMDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGxfdGNjcCA9IHBfdGNwLT50Y2NwczsKKyAgICAgICAgbF9jdXJyZW50X2RhdGEgPSBsX2RhdGE7CisKKyAgICAgICAgZm9yIChpPTA7aTxsX25iX2VsZW07KytpKSB7CisgICAgICAgICAgICAgICAgKihsX2N1cnJlbnRfZGF0YSsrKSA9IChPUEpfRkxPQVQzMikgKGxfdGNjcC0+bV9kY19sZXZlbF9zaGlmdCk7CisgICAgICAgICAgICAgICAgKytsX3RjY3A7CisgICAgICAgIH0KKworICAgICAgICBqMmtfbWN0X3dyaXRlX2Z1bmN0aW9uc19mcm9tX2Zsb2F0W2xfbWN0X29mZnNldF9kYXRhLT5tX2VsZW1lbnRfdHlwZV0obF9kYXRhLGxfbWN0X29mZnNldF9kYXRhLT5tX2RhdGEsbF9uYl9lbGVtKTsKKworICAgICAgICBvcGpfZnJlZShsX2RhdGEpOworCisgICAgICAgIGxfbWN0X29mZnNldF9kYXRhLT5tX2RhdGFfc2l6ZSA9IGxfbWN0X3NpemU7CisKKyAgICAgICAgKytwX3RjcC0+bV9uYl9tY3RfcmVjb3JkczsKKworICAgICAgICBpZiAocF90Y3AtPm1fbmJfbWNjX3JlY29yZHMgPT0gcF90Y3AtPm1fbmJfbWF4X21jY19yZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgb3BqX3NpbXBsZV9tY2NfZGVjb3JyZWxhdGlvbl9kYXRhX3QgKm5ld19tY2NfcmVjb3JkczsKKyAgICAgICAgICAgICAgICBwX3RjcC0+bV9uYl9tYXhfbWNjX3JlY29yZHMgKz0gT1BKX0oyS19NQ1RfREVGQVVMVF9OQl9SRUNPUkRTOworICAgICAgICAgICAgICAgIG5ld19tY2NfcmVjb3JkcyA9IChvcGpfc2ltcGxlX21jY19kZWNvcnJlbGF0aW9uX2RhdGFfdCAqKSBvcGpfcmVhbGxvYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3AtPm1fbWNjX3JlY29yZHMsIHBfdGNwLT5tX25iX21heF9tY2NfcmVjb3JkcyAqIHNpemVvZihvcGpfc2ltcGxlX21jY19kZWNvcnJlbGF0aW9uX2RhdGFfdCkpOworICAgICAgICAgICAgICAgIGlmICghIG5ld19tY2NfcmVjb3JkcykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF90Y3AtPm1fbWNjX3JlY29yZHMpOworICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3AtPm1fbWNjX3JlY29yZHMgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3AtPm1fbmJfbWF4X21jY19yZWNvcmRzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdGNwLT5tX25iX21jY19yZWNvcmRzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBzZXR1cCBtY3QgZW5jb2RpbmdcbiIpOyAqLworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcF90Y3AtPm1fbWNjX3JlY29yZHMgPSBuZXdfbWNjX3JlY29yZHM7CisgICAgICAgICAgICAgICAgbF9tY2NfZGF0YSA9IHBfdGNwLT5tX21jY19yZWNvcmRzICsgcF90Y3AtPm1fbmJfbWNjX3JlY29yZHM7CisgICAgICAgICAgICAgICAgbWVtc2V0KGxfbWNjX2RhdGEgLDAsKHBfdGNwLT5tX25iX21heF9tY2NfcmVjb3JkcyAtIHBfdGNwLT5tX25iX21jY19yZWNvcmRzKSAqIHNpemVvZihvcGpfc2ltcGxlX21jY19kZWNvcnJlbGF0aW9uX2RhdGFfdCkpOworCisgICAgICAgIH0KKworICAgICAgICBsX21jY19kYXRhID0gcF90Y3AtPm1fbWNjX3JlY29yZHMgKyBwX3RjcC0+bV9uYl9tY2NfcmVjb3JkczsKKyAgICAgICAgbF9tY2NfZGF0YS0+bV9kZWNvcnJlbGF0aW9uX2FycmF5ID0gbF9tY3RfZGVjb19kYXRhOworICAgICAgICBsX21jY19kYXRhLT5tX2lzX2lycmV2ZXJzaWJsZSA9IDE7CisgICAgICAgIGxfbWNjX2RhdGEtPm1fbmJfY29tcHMgPSBwX2ltYWdlLT5udW1jb21wczsKKyAgICAgICAgbF9tY2NfZGF0YS0+bV9pbmRleCA9IGxfaW5kaXgrKzsKKyAgICAgICAgbF9tY2NfZGF0YS0+bV9vZmZzZXRfYXJyYXkgPSBsX21jdF9vZmZzZXRfZGF0YTsKKyAgICAgICAgKytwX3RjcC0+bV9uYl9tY2NfcmVjb3JkczsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfYnVpbGRfZGVjb2RlciAob3BqX2oya190ICogcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKQoreworICAgICAgICAvKiBhZGQgaGVyZSBpbml0aWFsaXphdGlvbiBvZiBjcAorICAgICAgICAgICBjb3B5IHBhc3RlIG9mIHNldHVwX2RlY29kZXIgKi8KKyAgKHZvaWQpcF9qMms7CisgICh2b2lkKXBfc3RyZWFtOworICAodm9pZClwX21hbmFnZXI7CisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya19idWlsZF9lbmNvZGVyIChvcGpfajJrX3QgKiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKQoreworICAgICAgICAvKiBhZGQgaGVyZSBpbml0aWFsaXphdGlvbiBvZiBjcAorICAgICAgICAgICBjb3B5IHBhc3RlIG9mIHNldHVwX2VuY29kZXIgKi8KKyAgKHZvaWQpcF9qMms7CisgICh2b2lkKXBfc3RyZWFtOworICAodm9pZClwX21hbmFnZXI7CisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya19lbmNvZGluZ192YWxpZGF0aW9uICggIG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKQoreworICAgICAgICBPUEpfQk9PTCBsX2lzX3ZhbGlkID0gT1BKX1RSVUU7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICAvKiBTVEFURSBjaGVja2luZyAqLworICAgICAgICAvKiBtYWtlIHN1cmUgdGhlIHN0YXRlIGlzIGF0IDAgKi8KKyAgICAgICAgbF9pc192YWxpZCAmPSAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPT0gSjJLX1NUQVRFX05PTkUpOworCisgICAgICAgIC8qIFBPSU5URVIgdmFsaWRhdGlvbiAqLworICAgICAgICAvKiBtYWtlIHN1cmUgYSBwX2oyayBjb2RlYyBpcyBwcmVzZW50ICovCisgICAgICAgIGxfaXNfdmFsaWQgJj0gKHBfajJrLT5tX3Byb2NlZHVyZV9saXN0ICE9IDAwKTsKKyAgICAgICAgLyogbWFrZSBzdXJlIGEgdmFsaWRhdGlvbiBsaXN0IGlzIHByZXNlbnQgKi8KKyAgICAgICAgbF9pc192YWxpZCAmPSAocF9qMmstPm1fdmFsaWRhdGlvbl9saXN0ICE9IDAwKTsKKworICAgICAgICBpZiAoKHBfajJrLT5tX2NwLnRkeCkgPCAoT1BKX1VJTlQzMikgKDEgPDwgcF9qMmstPm1fY3AudGNwcy0+dGNjcHMtPm51bXJlc29sdXRpb25zKSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOdW1iZXIgb2YgcmVzb2x1dGlvbnMgaXMgdG9vIGhpZ2ggaW4gY29tcGFyaXNvbiB0byB0aGUgc2l6ZSBvZiB0aWxlc1xuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgocF9qMmstPm1fY3AudGR5KSA8IChPUEpfVUlOVDMyKSAoMSA8PCBwX2oyay0+bV9jcC50Y3BzLT50Y2Nwcy0+bnVtcmVzb2x1dGlvbnMpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk51bWJlciBvZiByZXNvbHV0aW9ucyBpcyB0b28gaGlnaCBpbiBjb21wYXJpc29uIHRvIHRoZSBzaXplIG9mIHRpbGVzXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogUEFSQU1FVEVSIFZBTElEQVRJT04gKi8KKyAgICAgICAgcmV0dXJuIGxfaXNfdmFsaWQ7Cit9CisKK09QSl9CT09MIG9wal9qMmtfZGVjb2RpbmdfdmFsaWRhdGlvbiAoICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIE9QSl9CT09MIGxfaXNfdmFsaWQgPSBPUEpfVFJVRTsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfc3RyZWFtICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgLyogU1RBVEUgY2hlY2tpbmcgKi8KKyAgICAgICAgLyogbWFrZSBzdXJlIHRoZSBzdGF0ZSBpcyBhdCAwICovCisjaWZkZWYgVE9ET19NU0QKKyAgICAgICAgbF9pc192YWxpZCAmPSAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPT0gSjJLX0RFQ19TVEFURV9OT05FKTsKKyNlbmRpZgorICAgICAgICBsX2lzX3ZhbGlkICY9IChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9PSAweDAwMDApOworCisgICAgICAgIC8qIFBPSU5URVIgdmFsaWRhdGlvbiAqLworICAgICAgICAvKiBtYWtlIHN1cmUgYSBwX2oyayBjb2RlYyBpcyBwcmVzZW50ICovCisgICAgICAgIC8qIG1ha2Ugc3VyZSBhIHByb2NlZHVyZSBsaXN0IGlzIHByZXNlbnQgKi8KKyAgICAgICAgbF9pc192YWxpZCAmPSAocF9qMmstPm1fcHJvY2VkdXJlX2xpc3QgIT0gMDApOworICAgICAgICAvKiBtYWtlIHN1cmUgYSB2YWxpZGF0aW9uIGxpc3QgaXMgcHJlc2VudCAqLworICAgICAgICBsX2lzX3ZhbGlkICY9IChwX2oyay0+bV92YWxpZGF0aW9uX2xpc3QgIT0gMDApOworCisgICAgICAgIC8qIFBBUkFNRVRFUiBWQUxJREFUSU9OICovCisgICAgICAgIHJldHVybiBsX2lzX3ZhbGlkOworfQorCitPUEpfQk9PTCBvcGpfajJrX3JlYWRfaGVhZGVyX3Byb2NlZHVyZSggb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKQoreworICAgICAgICBPUEpfVUlOVDMyIGxfY3VycmVudF9tYXJrZXI7CisgICAgICAgIE9QSl9VSU5UMzIgbF9tYXJrZXJfc2l6ZTsKKyAgICAgICAgY29uc3Qgb3BqX2RlY19tZW1vcnlfbWFya2VyX2hhbmRsZXJfdCAqIGxfbWFya2VyX2hhbmRsZXIgPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIC8qICBXZSBlbnRlciBpbiB0aGUgbWFpbiBoZWFkZXIgKi8KKyAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPSBKMktfU1RBVEVfTUhTT0M7CisKKyAgICAgICAgLyogVHJ5IHRvIHJlYWQgdGhlIFNPQyBtYXJrZXIsIHRoZSBjb2Rlc3RyZWFtIG11c3QgYmVnaW4gd2l0aCBTT0MgbWFya2VyICovCisgICAgICAgIGlmICghIG9wal9qMmtfcmVhZF9zb2MocF9qMmsscF9zdHJlYW0scF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFeHBlY3RlZCBhIFNPQyBtYXJrZXIgXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogVHJ5IHRvIHJlYWQgMiBieXRlcyAodGhlIG5leHQgbWFya2VyIElEKSBmcm9tIHN0cmVhbSBhbmQgY29weSB0aGVtIGludG8gdGhlIGJ1ZmZlciAqLworICAgICAgICBpZiAob3BqX3N0cmVhbV9yZWFkX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEsMixwX21hbmFnZXIpICE9IDIpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiU3RyZWFtIHRvbyBzaG9ydFxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFJlYWQgMiBieXRlcyBhcyB0aGUgbmV3IG1hcmtlciBJRCAqLworICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwmbF9jdXJyZW50X21hcmtlciwyKTsKKworICAgICAgICAvKiBUcnkgdG8gcmVhZCB1bnRpbCB0aGUgU09UIGlzIGRldGVjdGVkICovCisgICAgICAgIHdoaWxlIChsX2N1cnJlbnRfbWFya2VyICE9IEoyS19NU19TT1QpIHsKKworICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjdXJyZW50IG1hcmtlciBJRCBpcyB2YWxpZCAqLworICAgICAgICAgICAgICAgIGlmIChsX2N1cnJlbnRfbWFya2VyIDwgMHhmZjAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiV2UgZXhwZWN0ZWQgcmVhZCBhIG1hcmtlciBJRCAoMHhmZi0tKSBpbnN0ZWFkIG9mICUuOHhcbiIsIGxfY3VycmVudF9tYXJrZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBHZXQgdGhlIG1hcmtlciBoYW5kbGVyIGZyb20gdGhlIG1hcmtlciBJRCAqLworICAgICAgICAgICAgICAgIGxfbWFya2VyX2hhbmRsZXIgPSBvcGpfajJrX2dldF9tYXJrZXJfaGFuZGxlcihsX2N1cnJlbnRfbWFya2VyKTsKKworICAgICAgICAgICAgICAgIC8qIE1hbmFnZSBjYXNlIHdoZXJlIG1hcmtlciBpcyB1bmtub3duICovCisgICAgICAgICAgICAgICAgaWYgKGxfbWFya2VyX2hhbmRsZXItPmlkID09IEoyS19NU19VTkspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG9wal9qMmtfcmVhZF91bmsocF9qMmssIHBfc3RyZWFtLCAmbF9jdXJyZW50X21hcmtlciwgcF9tYW5hZ2VyKSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJVbmtub3cgbWFya2VyIGhhdmUgYmVlbiBkZXRlY3RlZCBhbmQgZ2VuZXJhdGVkIGVycm9yLlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2N1cnJlbnRfbWFya2VyID09IEoyS19NU19TT1QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBTT1QgbWFya2VyIGlzIGRldGVjdGVkIG1haW4gaGVhZGVyIGlzIGNvbXBsZXRlbHkgcmVhZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgICAvKiBHZXQgdGhlIG1hcmtlciBoYW5kbGVyIGZyb20gdGhlIG1hcmtlciBJRCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX21hcmtlcl9oYW5kbGVyID0gb3BqX2oya19nZXRfbWFya2VyX2hhbmRsZXIobF9jdXJyZW50X21hcmtlcik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIG1hcmtlciBpcyBrbm93biBhbmQgaWYgaXQgaXMgdGhlIHJpZ2h0IHBsYWNlIHRvIGZpbmQgaXQgKi8KKyAgICAgICAgICAgICAgICBpZiAoISAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgJiBsX21hcmtlcl9oYW5kbGVyLT5zdGF0ZXMpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk1hcmtlciBpcyBub3QgY29tcGxpYW50IHdpdGggaXRzIHBvc2l0aW9uXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogVHJ5IHRvIHJlYWQgMiBieXRlcyAodGhlIG1hcmtlciBzaXplKSBmcm9tIHN0cmVhbSBhbmQgY29weSB0aGVtIGludG8gdGhlIGJ1ZmZlciAqLworICAgICAgICAgICAgICAgIGlmIChvcGpfc3RyZWFtX3JlYWRfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwyLHBfbWFuYWdlcikgIT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlN0cmVhbSB0b28gc2hvcnRcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiByZWFkIDIgYnl0ZXMgYXMgdGhlIG1hcmtlciBzaXplICovCisgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEsJmxfbWFya2VyX3NpemUsMik7CisgICAgICAgICAgICAgICAgbF9tYXJrZXJfc2l6ZSAtPSAyOyAvKiBTdWJ0cmFjdCB0aGUgc2l6ZSBvZiB0aGUgbWFya2VyIElEIGFscmVhZHkgcmVhZCAqLworCisgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIG1hcmtlciBzaXplIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgaGVhZGVyIGRhdGEgc2l6ZSAqLworICAgICAgICAgICAgICAgIGlmIChsX21hcmtlcl9zaXplID4gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGFfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19oZWFkZXJfZGF0YSA9IChPUEpfQllURSAqKSBvcGpfcmVhbGxvYyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwgbF9tYXJrZXJfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBuZXdfaGVhZGVyX2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2hlYWRlcl9kYXRhX3NpemUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBoZWFkZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEgPSBuZXdfaGVhZGVyX2RhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YV9zaXplID0gbF9tYXJrZXJfc2l6ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBUcnkgdG8gcmVhZCB0aGUgcmVzdCBvZiB0aGUgbWFya2VyIHNlZ21lbnQgZnJvbSBzdHJlYW0gYW5kIGNvcHkgdGhlbSBpbnRvIHRoZSBidWZmZXIgKi8KKyAgICAgICAgICAgICAgICBpZiAob3BqX3N0cmVhbV9yZWFkX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEsbF9tYXJrZXJfc2l6ZSxwX21hbmFnZXIpICE9IGxfbWFya2VyX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJTdHJlYW0gdG9vIHNob3J0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogUmVhZCB0aGUgbWFya2VyIHNlZ21lbnQgd2l0aCB0aGUgY29ycmVjdCBtYXJrZXIgaGFuZGxlciAqLworICAgICAgICAgICAgICAgIGlmICghICgqKGxfbWFya2VyX2hhbmRsZXItPmhhbmRsZXIpKShwX2oyayxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSxsX21hcmtlcl9zaXplLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJNYXJrZXIgaGFuZGxlciBmdW5jdGlvbiBmYWlsZWQgdG8gcmVhZCB0aGUgbWFya2VyIHNlZ21lbnRcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIG1hcmtlciB0byB0aGUgY29kZXN0cmVhbSBpbmRleCovCisgICAgICAgICAgICAgICAgaWYgKE9QSl9GQUxTRSA9PSBvcGpfajJrX2FkZF9taG1hcmtlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX21hcmtlcl9oYW5kbGVyLT5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT1BKX1VJTlQzMikgb3BqX3N0cmVhbV90ZWxsKHBfc3RyZWFtKSAtIGxfbWFya2VyX3NpemUgLSA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfbWFya2VyX3NpemUgKyA0ICkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgbWggbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogVHJ5IHRvIHJlYWQgMiBieXRlcyAodGhlIG5leHQgbWFya2VyIElEKSBmcm9tIHN0cmVhbSBhbmQgY29weSB0aGVtIGludG8gdGhlIGJ1ZmZlciAqLworICAgICAgICAgICAgICAgIGlmIChvcGpfc3RyZWFtX3JlYWRfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwyLHBfbWFuYWdlcikgIT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlN0cmVhbSB0b28gc2hvcnRcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiByZWFkIDIgYnl0ZXMgYXMgdGhlIG5ldyBtYXJrZXIgSUQgKi8KKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwmbF9jdXJyZW50X21hcmtlciwyKTsKKyAgICAgICAgfQorCisgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfSU5GTywgIk1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLlxuIik7CisKKyAgICAgICAgLyogUG9zaXRpb24gb2YgdGhlIGxhc3QgZWxlbWVudCBpZiB0aGUgbWFpbiBoZWFkZXIgKi8KKyAgICAgICAgcF9qMmstPmNzdHJfaW5kZXgtPm1haW5faGVhZF9lbmQgPSAoT1BKX1VJTlQzMikgb3BqX3N0cmVhbV90ZWxsKHBfc3RyZWFtKSAtIDI7CisKKyAgICAgICAgLyogTmV4dCBzdGVwOiByZWFkIGEgdGlsZS1wYXJ0IGhlYWRlciAqLworICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9IEoyS19TVEFURV9UUEhTT1Q7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX2V4ZWMgKCBvcGpfajJrX3QgKiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfdCAqIHBfcHJvY2VkdXJlX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgICAgICAgIE9QSl9CT09MICgqKiBsX3Byb2NlZHVyZSkgKG9wal9qMmtfdCAqICxvcGpfc3RyZWFtX3ByaXZhdGVfdCAqLG9wal9ldmVudF9tZ3JfdCAqKSA9IDAwOworICAgICAgICBPUEpfQk9PTCBsX3Jlc3VsdCA9IE9QSl9UUlVFOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfcHJvYywgaTsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zKi8KKyAgICAgICAgYXNzZXJ0KHBfcHJvY2VkdXJlX2xpc3QgIT0gMDApOworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworICAgICAgICBsX25iX3Byb2MgPSBvcGpfcHJvY2VkdXJlX2xpc3RfZ2V0X25iX3Byb2NlZHVyZXMocF9wcm9jZWR1cmVfbGlzdCk7CisgICAgICAgIGxfcHJvY2VkdXJlID0gKE9QSl9CT09MICgqKikgKG9wal9qMmtfdCAqICxvcGpfc3RyZWFtX3ByaXZhdGVfdCAqLG9wal9ldmVudF9tZ3JfdCAqKSkgb3BqX3Byb2NlZHVyZV9saXN0X2dldF9maXJzdF9wcm9jZWR1cmUocF9wcm9jZWR1cmVfbGlzdCk7CisKKyAgICAgICAgZm9yICAgICAoaT0wO2k8bF9uYl9wcm9jOysraSkgeworICAgICAgICAgICAgICAgIGxfcmVzdWx0ID0gbF9yZXN1bHQgJiYgKCgqbF9wcm9jZWR1cmUpIChwX2oyayxwX3N0cmVhbSxwX21hbmFnZXIpKTsKKyAgICAgICAgICAgICAgICArK2xfcHJvY2VkdXJlOworICAgICAgICB9CisKKyAgICAgICAgLyogYW5kIGNsZWFyIHRoZSBwcm9jZWR1cmUgbGlzdCBhdCB0aGUgZW5kLiovCisgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF9jbGVhcihwX3Byb2NlZHVyZV9saXN0KTsKKyAgICAgICAgcmV0dXJuIGxfcmVzdWx0OworfQorCisvKiBGSVhNRSBET0MqLworc3RhdGljIE9QSl9CT09MIG9wal9qMmtfY29weV9kZWZhdWx0X3RjcF9hbmRfY3JlYXRlX3RjZCAoICAgICAgIG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIG9wal90Y3BfdCAqIGxfdGNwID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqIGxfZGVmYXVsdF90Y3AgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3RpbGVzOworICAgICAgICBPUEpfVUlOVDMyIGksajsKKyAgICAgICAgb3BqX3RjY3BfdCAqbF9jdXJyZW50X3RjY3AgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3RjY3Bfc2l6ZTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX21jdF9zaXplOworICAgICAgICBvcGpfaW1hZ2VfdCAqIGxfaW1hZ2U7CisgICAgICAgIE9QSl9VSU5UMzIgbF9tY2NfcmVjb3Jkc19zaXplLGxfbWN0X3JlY29yZHNfc2l6ZTsKKyAgICAgICAgb3BqX21jdF9kYXRhX3QgKiBsX3NyY19tY3RfcmVjLCAqbF9kZXN0X21jdF9yZWM7CisgICAgICAgIG9wal9zaW1wbGVfbWNjX2RlY29ycmVsYXRpb25fZGF0YV90ICogbF9zcmNfbWNjX3JlYywgKmxfZGVzdF9tY2NfcmVjOworICAgICAgICBPUEpfVUlOVDMyIGxfb2Zmc2V0OworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfc3RyZWFtICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgbF9pbWFnZSA9IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2U7CisgICAgICAgIGxfbmJfdGlsZXMgPSBwX2oyay0+bV9jcC50aCAqIHBfajJrLT5tX2NwLnR3OworICAgICAgICBsX3RjcCA9IHBfajJrLT5tX2NwLnRjcHM7CisgICAgICAgIGxfdGNjcF9zaXplID0gbF9pbWFnZS0+bnVtY29tcHMgKiAoT1BKX1VJTlQzMilzaXplb2Yob3BqX3RjY3BfdCk7CisgICAgICAgIGxfZGVmYXVsdF90Y3AgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcDsKKyAgICAgICAgbF9tY3Rfc2l6ZSA9IGxfaW1hZ2UtPm51bWNvbXBzICogbF9pbWFnZS0+bnVtY29tcHMgKiAoT1BKX1VJTlQzMilzaXplb2YoT1BKX0ZMT0FUMzIpOworCisgICAgICAgIC8qIEZvciBlYWNoIHRpbGUgKi8KKyAgICAgICAgZm9yIChpPTA7IGk8bF9uYl90aWxlczsgKytpKSB7CisgICAgICAgICAgICAgICAgLyoga2VlcCB0aGUgdGlsZS1jb21wbyBjb2RpbmcgcGFyYW1ldGVycyBwb2ludGVyIG9mIHRoZSBjdXJyZW50IHRpbGUgY29kaW5nIHBhcmFtZXRlcnMqLworICAgICAgICAgICAgICAgIGxfY3VycmVudF90Y2NwID0gbF90Y3AtPnRjY3BzOworICAgICAgICAgICAgICAgIC8qQ29weSBkZWZhdWx0IGNvZGluZyBwYXJhbWV0ZXJzIGludG8gdGhlIGN1cnJlbnQgdGlsZSBjb2RpbmcgcGFyYW1ldGVycyovCisgICAgICAgICAgICAgICAgbWVtY3B5KGxfdGNwLCBsX2RlZmF1bHRfdGNwLCBzaXplb2Yob3BqX3RjcF90KSk7CisgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZSBzb21lIHZhbHVlcyBvZiB0aGUgY3VycmVudCB0aWxlIGNvZGluZyBwYXJhbWV0ZXJzKi8KKyAgICAgICAgICAgICAgICBsX3RjcC0+cHB0ID0gMDsKKyAgICAgICAgICAgICAgICBsX3RjcC0+cHB0X2RhdGEgPSAwMDsKKyAgICAgICAgICAgICAgICAvKiBSZWNvbm5lY3QgdGhlIHRpbGUtY29tcG8gY29kaW5nIHBhcmFtZXRlcnMgcG9pbnRlciB0byB0aGUgY3VycmVudCB0aWxlIGNvZGluZyBwYXJhbWV0ZXJzKi8KKyAgICAgICAgICAgICAgICBsX3RjcC0+dGNjcHMgPSBsX2N1cnJlbnRfdGNjcDsKKworICAgICAgICAgICAgICAgIC8qIEdldCB0aGUgbWN0X2RlY29kaW5nX21hdHJpeCBvZiB0aGUgZGZsdF90aWxlX2NwIGFuZCBjb3B5IHRoZW0gaW50byB0aGUgY3VycmVudCB0aWxlIGNwKi8KKyAgICAgICAgICAgICAgICBpZiAobF9kZWZhdWx0X3RjcC0+bV9tY3RfZGVjb2RpbmdfbWF0cml4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3RjcC0+bV9tY3RfZGVjb2RpbmdfbWF0cml4ID0gKE9QSl9GTE9BVDMyKilvcGpfbWFsbG9jKGxfbWN0X3NpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbF90Y3AtPm1fbWN0X2RlY29kaW5nX21hdHJpeCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShsX3RjcC0+bV9tY3RfZGVjb2RpbmdfbWF0cml4LGxfZGVmYXVsdF90Y3AtPm1fbWN0X2RlY29kaW5nX21hdHJpeCxsX21jdF9zaXplKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBHZXQgdGhlIG1jdF9yZWNvcmQgb2YgdGhlIGRmbHRfdGlsZV9jcCBhbmQgY29weSB0aGVtIGludG8gdGhlIGN1cnJlbnQgdGlsZSBjcCovCisgICAgICAgICAgICAgICAgbF9tY3RfcmVjb3Jkc19zaXplID0gbF9kZWZhdWx0X3RjcC0+bV9uYl9tYXhfbWN0X3JlY29yZHMgKiAoT1BKX1VJTlQzMilzaXplb2Yob3BqX21jdF9kYXRhX3QpOworICAgICAgICAgICAgICAgIGxfdGNwLT5tX21jdF9yZWNvcmRzID0gKG9wal9tY3RfZGF0YV90KilvcGpfbWFsbG9jKGxfbWN0X3JlY29yZHNfc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKCEgbF90Y3AtPm1fbWN0X3JlY29yZHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1lbWNweShsX3RjcC0+bV9tY3RfcmVjb3JkcywgbF9kZWZhdWx0X3RjcC0+bV9tY3RfcmVjb3JkcyxsX21jdF9yZWNvcmRzX3NpemUpOworCisgICAgICAgICAgICAgICAgLyogQ29weSB0aGUgbWN0IHJlY29yZCBkYXRhIGZyb20gZGZsdF90aWxlX2NwIHRvIHRoZSBjdXJyZW50IHRpbGUqLworICAgICAgICAgICAgICAgIGxfc3JjX21jdF9yZWMgPSBsX2RlZmF1bHRfdGNwLT5tX21jdF9yZWNvcmRzOworICAgICAgICAgICAgICAgIGxfZGVzdF9tY3RfcmVjID0gbF90Y3AtPm1fbWN0X3JlY29yZHM7CisKKyAgICAgICAgICAgICAgICBmb3IgKGo9MDtqPGxfZGVmYXVsdF90Y3AtPm1fbmJfbWN0X3JlY29yZHM7KytqKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX3NyY19tY3RfcmVjLT5tX2RhdGEpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2Rlc3RfbWN0X3JlYy0+bV9kYXRhID0gKE9QSl9CWVRFKikgb3BqX21hbGxvYyhsX3NyY19tY3RfcmVjLT5tX2RhdGFfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEgbF9kZXN0X21jdF9yZWMtPm1fZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGxfZGVzdF9tY3RfcmVjLT5tX2RhdGEsbF9zcmNfbWN0X3JlYy0+bV9kYXRhLGxfc3JjX21jdF9yZWMtPm1fZGF0YV9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgKytsX3NyY19tY3RfcmVjOworICAgICAgICAgICAgICAgICAgICAgICAgKytsX2Rlc3RfbWN0X3JlYzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBHZXQgdGhlIG1jY19yZWNvcmQgb2YgdGhlIGRmbHRfdGlsZV9jcCBhbmQgY29weSB0aGVtIGludG8gdGhlIGN1cnJlbnQgdGlsZSBjcCovCisgICAgICAgICAgICAgICAgbF9tY2NfcmVjb3Jkc19zaXplID0gbF9kZWZhdWx0X3RjcC0+bV9uYl9tYXhfbWNjX3JlY29yZHMgKiAoT1BKX1VJTlQzMilzaXplb2Yob3BqX3NpbXBsZV9tY2NfZGVjb3JyZWxhdGlvbl9kYXRhX3QpOworICAgICAgICAgICAgICAgIGxfdGNwLT5tX21jY19yZWNvcmRzID0gKG9wal9zaW1wbGVfbWNjX2RlY29ycmVsYXRpb25fZGF0YV90Kikgb3BqX21hbGxvYyhsX21jY19yZWNvcmRzX3NpemUpOworICAgICAgICAgICAgICAgIGlmICghIGxfdGNwLT5tX21jY19yZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtZW1jcHkobF90Y3AtPm1fbWNjX3JlY29yZHMsbF9kZWZhdWx0X3RjcC0+bV9tY2NfcmVjb3JkcyxsX21jY19yZWNvcmRzX3NpemUpOworCisgICAgICAgICAgICAgICAgLyogQ29weSB0aGUgbWNjIHJlY29yZCBkYXRhIGZyb20gZGZsdF90aWxlX2NwIHRvIHRoZSBjdXJyZW50IHRpbGUqLworICAgICAgICAgICAgICAgIGxfc3JjX21jY19yZWMgPSBsX2RlZmF1bHRfdGNwLT5tX21jY19yZWNvcmRzOworICAgICAgICAgICAgICAgIGxfZGVzdF9tY2NfcmVjID0gbF90Y3AtPm1fbWNjX3JlY29yZHM7CisKKyAgICAgICAgICAgICAgICBmb3IgKGo9MDtqPGxfZGVmYXVsdF90Y3AtPm1fbmJfbWF4X21jY19yZWNvcmRzOysraikgeworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9zcmNfbWNjX3JlYy0+bV9kZWNvcnJlbGF0aW9uX2FycmF5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfb2Zmc2V0ID0gKE9QSl9VSU5UMzIpKGxfc3JjX21jY19yZWMtPm1fZGVjb3JyZWxhdGlvbl9hcnJheSAtIGxfZGVmYXVsdF90Y3AtPm1fbWN0X3JlY29yZHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2Rlc3RfbWNjX3JlYy0+bV9kZWNvcnJlbGF0aW9uX2FycmF5ID0gbF90Y3AtPm1fbWN0X3JlY29yZHMgKyBsX29mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfc3JjX21jY19yZWMtPm1fb2Zmc2V0X2FycmF5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfb2Zmc2V0ID0gKE9QSl9VSU5UMzIpKGxfc3JjX21jY19yZWMtPm1fb2Zmc2V0X2FycmF5IC0gbF9kZWZhdWx0X3RjcC0+bV9tY3RfcmVjb3Jkcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfZGVzdF9tY2NfcmVjLT5tX29mZnNldF9hcnJheSA9IGxfdGNwLT5tX21jdF9yZWNvcmRzICsgbF9vZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9zcmNfbWNjX3JlYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9kZXN0X21jY19yZWM7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogQ29weSBhbGwgdGhlIGRmbHRfdGlsZV9jb21wb19jcCB0byB0aGUgY3VycmVudCB0aWxlIGNwICovCisgICAgICAgICAgICAgICAgbWVtY3B5KGxfY3VycmVudF90Y2NwLGxfZGVmYXVsdF90Y3AtPnRjY3BzLGxfdGNjcF9zaXplKTsKKworICAgICAgICAgICAgICAgIC8qIE1vdmUgdG8gbmV4dCB0aWxlIGNwKi8KKyAgICAgICAgICAgICAgICArK2xfdGNwOworICAgICAgICB9CisKKyAgICAgICAgLyogQ3JlYXRlIHRoZSBjdXJyZW50IHRpbGUgZGVjb2RlciovCisgICAgICAgIHBfajJrLT5tX3RjZCA9IChvcGpfdGNkX3QqKW9wal90Y2RfY3JlYXRlKE9QSl9UUlVFKTsgLyogRklYTUUgd2h5IGEgY2FzdCA/ICovCisgICAgICAgIGlmICghIHBfajJrLT5tX3RjZCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAhb3BqX3RjZF9pbml0KHBfajJrLT5tX3RjZCwgbF9pbWFnZSwgJihwX2oyay0+bV9jcCkpICkgeworICAgICAgICAgICAgICAgIG9wal90Y2RfZGVzdHJveShwX2oyay0+bV90Y2QpOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3RjZCA9IDAwOworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJDYW5ub3QgZGVjb2RlIHRpbGUsIG1lbW9yeSBlcnJvclxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworY29uc3Qgb3BqX2RlY19tZW1vcnlfbWFya2VyX2hhbmRsZXJfdCAqIG9wal9qMmtfZ2V0X21hcmtlcl9oYW5kbGVyIChPUEpfVUlOVDMyIHBfaWQpCit7CisgICAgICAgIGNvbnN0IG9wal9kZWNfbWVtb3J5X21hcmtlcl9oYW5kbGVyX3QgKmU7CisgICAgICAgIGZvciAoZSA9IGoya19tZW1vcnlfbWFya2VyX2hhbmRsZXJfdGFiOyBlLT5pZCAhPSAwOyArK2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoZS0+aWQgPT0gcF9pZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIHdlIGZpbmQgYSBoYW5kbGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1hcmtlciBJRCovCisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBlOworfQorCit2b2lkIG9wal9qMmtfZGVzdHJveSAob3BqX2oya190ICpwX2oyaykKK3sKKyAgICAgICAgaWYgKHBfajJrID09IDAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBfajJrLT5tX2lzX2RlY29kZXIpIHsKKworICAgICAgICAgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcCAhPSAwMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2oya190Y3BfZGVzdHJveShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcCA9IDAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSAhPSAwMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEgPSAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2hlYWRlcl9kYXRhX3NpemUgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9lbmNvZGVkX3RpbGVfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fZW5jb2RlZF90aWxlX2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fZW5jb2RlZF90aWxlX2RhdGEgPSAwMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdGxtX3NvdF9vZmZzZXRzX2J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdGxtX3NvdF9vZmZzZXRzX2J1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV90bG1fc290X29mZnNldHNfYnVmZmVyID0gMDA7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV90bG1fc290X29mZnNldHNfY3VycmVudCA9IDAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEgPSAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb3BqX3RjZF9kZXN0cm95KHBfajJrLT5tX3RjZCk7CisKKyAgICAgICAgb3BqX2oya19jcF9kZXN0cm95KCYocF9qMmstPm1fY3ApKTsKKyAgICAgICAgbWVtc2V0KCYocF9qMmstPm1fY3ApLDAsc2l6ZW9mKG9wal9jcF90KSk7CisKKyAgICAgICAgb3BqX3Byb2NlZHVyZV9saXN0X2Rlc3Ryb3kocF9qMmstPm1fcHJvY2VkdXJlX2xpc3QpOworICAgICAgICBwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCA9IDAwOworCisgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF9kZXN0cm95KHBfajJrLT5tX3ZhbGlkYXRpb25fbGlzdCk7CisgICAgICAgIHBfajJrLT5tX3Byb2NlZHVyZV9saXN0ID0gMDA7CisKKyAgICAgICAgajJrX2Rlc3Ryb3lfY3N0cl9pbmRleChwX2oyay0+Y3N0cl9pbmRleCk7CisgICAgICAgIHBfajJrLT5jc3RyX2luZGV4ID0gTlVMTDsKKworICAgICAgICBvcGpfaW1hZ2VfZGVzdHJveShwX2oyay0+bV9wcml2YXRlX2ltYWdlKTsKKyAgICAgICAgcF9qMmstPm1fcHJpdmF0ZV9pbWFnZSA9IE5VTEw7CisKKyAgICAgICAgb3BqX2ltYWdlX2Rlc3Ryb3kocF9qMmstPm1fb3V0cHV0X2ltYWdlKTsKKyAgICAgICAgcF9qMmstPm1fb3V0cHV0X2ltYWdlID0gTlVMTDsKKworICAgICAgICBvcGpfZnJlZShwX2oyayk7Cit9CisKK3ZvaWQgajJrX2Rlc3Ryb3lfY3N0cl9pbmRleCAob3BqX2NvZGVzdHJlYW1faW5kZXhfdCAqcF9jc3RyX2luZCkKK3sKKyAgICAgICAgaWYgKHBfY3N0cl9pbmQpIHsKKworICAgICAgICAgICAgICAgIGlmIChwX2NzdHJfaW5kLT5tYXJrZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfY3N0cl9pbmQtPm1hcmtlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2NzdHJfaW5kLT5tYXJrZXIgPSBOVUxMOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwX2NzdHJfaW5kLT50aWxlX2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGl0X3RpbGUgPSAwOworCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGl0X3RpbGU9MDsgaXRfdGlsZSA8IHBfY3N0cl9pbmQtPm5iX29mX3RpbGVzOyBpdF90aWxlKyspIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihwX2NzdHJfaW5kLT50aWxlX2luZGV4W2l0X3RpbGVdLnBhY2tldF9pbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfY3N0cl9pbmQtPnRpbGVfaW5kZXhbaXRfdGlsZV0ucGFja2V0X2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2NzdHJfaW5kLT50aWxlX2luZGV4W2l0X3RpbGVdLnBhY2tldF9pbmRleCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihwX2NzdHJfaW5kLT50aWxlX2luZGV4W2l0X3RpbGVdLnRwX2luZGV4KXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2NzdHJfaW5kLT50aWxlX2luZGV4W2l0X3RpbGVdLnRwX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2NzdHJfaW5kLT50aWxlX2luZGV4W2l0X3RpbGVdLnRwX2luZGV4ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHBfY3N0cl9pbmQtPnRpbGVfaW5kZXhbaXRfdGlsZV0ubWFya2VyKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2NzdHJfaW5kLT50aWxlX2luZGV4W2l0X3RpbGVdLm1hcmtlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9jc3RyX2luZC0+dGlsZV9pbmRleFtpdF90aWxlXS5tYXJrZXIgPSBOVUxMOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUoIHBfY3N0cl9pbmQtPnRpbGVfaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgcF9jc3RyX2luZC0+dGlsZV9pbmRleCA9IE5VTEw7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9jc3RyX2luZCk7CisgICAgICAgIH0KK30KKwordm9pZCBvcGpfajJrX3RjcF9kZXN0cm95IChvcGpfdGNwX3QgKnBfdGNwKQoreworICAgICAgICBpZiAocF90Y3AgPT0gMDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocF90Y3AtPnBwdF9idWZmZXIgIT0gMDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShwX3RjcC0+cHB0X2J1ZmZlcik7CisgICAgICAgICAgICAgICAgcF90Y3AtPnBwdF9idWZmZXIgPSAwMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwX3RjcC0+dGNjcHMgIT0gMDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShwX3RjcC0+dGNjcHMpOworICAgICAgICAgICAgICAgIHBfdGNwLT50Y2NwcyA9IDAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBfdGNwLT5tX21jdF9jb2RpbmdfbWF0cml4ICE9IDAwKSB7CisgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF90Y3AtPm1fbWN0X2NvZGluZ19tYXRyaXgpOworICAgICAgICAgICAgICAgIHBfdGNwLT5tX21jdF9jb2RpbmdfbWF0cml4ID0gMDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAocF90Y3AtPm1fbWN0X2RlY29kaW5nX21hdHJpeCAhPSAwMCkgeworICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfdGNwLT5tX21jdF9kZWNvZGluZ19tYXRyaXgpOworICAgICAgICAgICAgICAgIHBfdGNwLT5tX21jdF9kZWNvZGluZ19tYXRyaXggPSAwMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwX3RjcC0+bV9tY2NfcmVjb3JkcykgeworICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfdGNwLT5tX21jY19yZWNvcmRzKTsKKyAgICAgICAgICAgICAgICBwX3RjcC0+bV9tY2NfcmVjb3JkcyA9IDAwOworICAgICAgICAgICAgICAgIHBfdGNwLT5tX25iX21heF9tY2NfcmVjb3JkcyA9IDA7CisgICAgICAgICAgICAgICAgcF90Y3AtPm1fbmJfbWNjX3JlY29yZHMgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBfdGNwLT5tX21jdF9yZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgb3BqX21jdF9kYXRhX3QgKiBsX21jdF9kYXRhID0gcF90Y3AtPm1fbWN0X3JlY29yZHM7CisgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBpOworCisgICAgICAgICAgICAgICAgZm9yIChpPTA7aTxwX3RjcC0+bV9uYl9tY3RfcmVjb3JkczsrK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX21jdF9kYXRhLT5tX2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9tY3RfZGF0YS0+bV9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9tY3RfZGF0YS0+bV9kYXRhID0gMDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9tY3RfZGF0YTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShwX3RjcC0+bV9tY3RfcmVjb3Jkcyk7CisgICAgICAgICAgICAgICAgcF90Y3AtPm1fbWN0X3JlY29yZHMgPSAwMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwX3RjcC0+bWN0X25vcm1zICE9IDAwKSB7CisgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF90Y3AtPm1jdF9ub3Jtcyk7CisgICAgICAgICAgICAgICAgcF90Y3AtPm1jdF9ub3JtcyA9IDAwOworICAgICAgICB9CisKKyAgICAgICAgb3BqX2oya190Y3BfZGF0YV9kZXN0cm95KHBfdGNwKTsKKworfQorCit2b2lkIG9wal9qMmtfdGNwX2RhdGFfZGVzdHJveSAob3BqX3RjcF90ICpwX3RjcCkKK3sKKyAgICAgICAgaWYgKHBfdGNwLT5tX2RhdGEpIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShwX3RjcC0+bV9kYXRhKTsKKyAgICAgICAgICAgICAgICBwX3RjcC0+bV9kYXRhID0gTlVMTDsKKyAgICAgICAgICAgICAgICBwX3RjcC0+bV9kYXRhX3NpemUgPSAwOworICAgICAgICB9Cit9CisKK3ZvaWQgb3BqX2oya19jcF9kZXN0cm95IChvcGpfY3BfdCAqcF9jcCkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3RpbGVzOworICAgICAgICBvcGpfdGNwX3QgKiBsX2N1cnJlbnRfdGlsZSA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGk7CisKKyAgICAgICAgaWYgKHBfY3AgPT0gMDApCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBfY3AtPnRjcHMgIT0gMDApCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfdGlsZSA9IHBfY3AtPnRjcHM7CisgICAgICAgICAgICAgICAgbF9uYl90aWxlcyA9IHBfY3AtPnRoICogcF9jcC0+dHc7CisKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbF9uYl90aWxlczsgKytpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9qMmtfdGNwX2Rlc3Ryb3kobF9jdXJyZW50X3RpbGUpOworICAgICAgICAgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfdGlsZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9jcC0+dGNwcyk7CisgICAgICAgICAgICAgICAgcF9jcC0+dGNwcyA9IDAwOworICAgICAgICB9CisgICAgICAgIG9wal9mcmVlKHBfY3AtPnBwbV9idWZmZXIpOworICAgICAgICBwX2NwLT5wcG1fYnVmZmVyID0gMDA7CisgICAgICAgIHBfY3AtPnBwbV9kYXRhID0gTlVMTDsgLyogcHBtX2RhdGEgYmVsb25ncyB0byB0aGUgYWxsb2NhdGVkIGJ1ZmZlciBwb2ludGVkIGJ5IHBwbV9idWZmZXIgKi8KKyAgICAgICAgb3BqX2ZyZWUocF9jcC0+Y29tbWVudCk7CisgICAgICAgIHBfY3AtPmNvbW1lbnQgPSAwMDsKKyAgICAgICAgaWYgKCEgcF9jcC0+bV9pc19kZWNvZGVyKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9jcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX21hdHJpY2UpOworICAgICAgICAgICAgICAgIHBfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9tYXRyaWNlID0gMDA7CisgICAgICAgIH0KK30KKworT1BKX0JPT0wgb3BqX2oya19yZWFkX3RpbGVfaGVhZGVyKCAgICAgIG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF90aWxlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdGlsZV94MCwgT1BKX0lOVDMyICogcF90aWxlX3kwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3RpbGVfeDEsIE9QSl9JTlQzMiAqIHBfdGlsZV95MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbmJfY29tcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CT09MICogcF9nb19vbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKQoreworICAgICAgICBPUEpfVUlOVDMyIGxfY3VycmVudF9tYXJrZXIgPSBKMktfTVNfU09UOworICAgICAgICBPUEpfVUlOVDMyIGxfbWFya2VyX3NpemU7CisgICAgICAgIGNvbnN0IG9wal9kZWNfbWVtb3J5X21hcmtlcl9oYW5kbGVyX3QgKiBsX21hcmtlcl9oYW5kbGVyID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqIGxfdGNwID0gTlVMTDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3RpbGVzOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfc3RyZWFtICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgLyogUmVhY2ggdGhlIEVuZCBPZiBDb2Rlc3RyZWFtID8qLworICAgICAgICBpZiAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPT0gSjJLX1NUQVRFX0VPQyl7CisgICAgICAgICAgICAgICAgbF9jdXJyZW50X21hcmtlciA9IEoyS19NU19FT0M7CisgICAgICAgIH0KKyAgICAgICAgLyogV2UgbmVlZCB0byBlbmNvdW50ZXIgYSBTT1QgbWFya2VyIChhIG5ldyB0aWxlLXBhcnQgaGVhZGVyKSAqLworICAgICAgICBlbHNlIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSAhPSBKMktfU1RBVEVfVFBIU09UKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogUmVhZCBpbnRvIHRoZSBjb2Rlc3RyZWFtIHVudGlsIHJlYWNoIHRoZSBFT0Mgb3IgISBjYW5fZGVjb2RlID8/PyBGSVhNRSAqLworICAgICAgICB3aGlsZSAoICghcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fY2FuX2RlY29kZSkgJiYgKGxfY3VycmVudF9tYXJrZXIgIT0gSjJLX01TX0VPQykgKSB7CisKKyAgICAgICAgICAgICAgICAvKiBUcnkgdG8gcmVhZCB1bnRpbCB0aGUgU3RhcnQgT2YgRGF0YSBpcyBkZXRlY3RlZCAqLworICAgICAgICAgICAgICAgIHdoaWxlIChsX2N1cnJlbnRfbWFya2VyICE9IEoyS19NU19TT0QpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmKG9wal9zdHJlYW1fZ2V0X251bWJlcl9ieXRlX2xlZnQocF9zdHJlYW0pID09IDApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID0gSjJLX1NUQVRFX05FT0M7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUcnkgdG8gcmVhZCAyIGJ5dGVzICh0aGUgbWFya2VyIHNpemUpIGZyb20gc3RyZWFtIGFuZCBjb3B5IHRoZW0gaW50byB0aGUgYnVmZmVyICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BqX3N0cmVhbV9yZWFkX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEsMixwX21hbmFnZXIpICE9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlN0cmVhbSB0b28gc2hvcnRcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWFkIDIgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyIGFzIHRoZSBtYXJrZXIgc2l6ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEsJmxfbWFya2VyX3NpemUsMik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNmLiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL29wZW5qcGVnL2lzc3Vlcy9kZXRhaWw/aWQ9MjI2ICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9jdXJyZW50X21hcmtlciA9PSAweDgwODAgJiYgb3BqX3N0cmVhbV9nZXRfbnVtYmVyX2J5dGVfbGVmdChwX3N0cmVhbSkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9IEoyS19TVEFURV9ORU9DOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogV2h5IHRoaXMgY29uZGl0aW9uPyBGSVhNRSAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlICYgSjJLX1NUQVRFX1RQSCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3NvdF9sZW5ndGggLT0gKGxfbWFya2VyX3NpemUgKyAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWFya2VyX3NpemUgLT0gMjsgLyogU3VidHJhY3QgdGhlIHNpemUgb2YgdGhlIG1hcmtlciBJRCBhbHJlYWR5IHJlYWQgKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogR2V0IHRoZSBtYXJrZXIgaGFuZGxlciBmcm9tIHRoZSBtYXJrZXIgSUQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWFya2VyX2hhbmRsZXIgPSBvcGpfajJrX2dldF9tYXJrZXJfaGFuZGxlcihsX2N1cnJlbnRfbWFya2VyKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIG1hcmtlciBpcyBrbm93biBhbmQgaWYgaXQgaXMgdGhlIHJpZ2h0IHBsYWNlIHRvIGZpbmQgaXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSAmIGxfbWFya2VyX2hhbmRsZXItPnN0YXRlcykgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJNYXJrZXIgaXMgbm90IGNvbXBsaWFudCB3aXRoIGl0cyBwb3NpdGlvblxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisvKiBGSVhNRSBtYW5hZ2UgY2FzZSBvZiB1bmtub3duIG1hcmtlciBhcyBpbiB0aGUgbWFpbiBoZWFkZXIgPyAqLworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgbWFya2VyIHNpemUgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBoZWFkZXIgZGF0YSBzaXplICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9tYXJrZXJfc2l6ZSA+IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2hlYWRlcl9kYXRhX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKm5ld19oZWFkZXJfZGF0YSA9IChPUEpfQllURSAqKSBvcGpfcmVhbGxvYyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwgbF9tYXJrZXJfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG5ld19oZWFkZXJfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2hlYWRlcl9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGFfc2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgaGVhZGVyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2hlYWRlcl9kYXRhID0gbmV3X2hlYWRlcl9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YV9zaXplID0gbF9tYXJrZXJfc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogVHJ5IHRvIHJlYWQgdGhlIHJlc3Qgb2YgdGhlIG1hcmtlciBzZWdtZW50IGZyb20gc3RyZWFtIGFuZCBjb3B5IHRoZW0gaW50byB0aGUgYnVmZmVyICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BqX3N0cmVhbV9yZWFkX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEsbF9tYXJrZXJfc2l6ZSxwX21hbmFnZXIpICE9IGxfbWFya2VyX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlN0cmVhbSB0b28gc2hvcnRcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxfbWFya2VyX2hhbmRsZXItPmhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU2VlIGlzc3VlICMxNzUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBzdXJlIGhvdyB0aGF0IGhhcHBlbmVkLlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWFkIHRoZSBtYXJrZXIgc2VnbWVudCB3aXRoIHRoZSBjb3JyZWN0IG1hcmtlciBoYW5kbGVyICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISAoKihsX21hcmtlcl9oYW5kbGVyLT5oYW5kbGVyKSkocF9qMmsscF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEsbF9tYXJrZXJfc2l6ZSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJGYWlsIHRvIHJlYWQgdGhlIGN1cnJlbnQgbWFya2VyIHNlZ21lbnQgKCUjeClcbiIsIGxfY3VycmVudF9tYXJrZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIG1hcmtlciB0byB0aGUgY29kZXN0cmVhbSBpbmRleCovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT1BKX0ZBTFNFID09IG9wal9qMmtfYWRkX3RsbWFya2VyKHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfbWFya2VyX2hhbmRsZXItPmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9QSl9VSU5UMzIpIG9wal9zdHJlYW1fdGVsbChwX3N0cmVhbSkgLSBsX21hcmtlcl9zaXplIC0gNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfbWFya2VyX3NpemUgKyA0ICkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCB0bCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBLZWVwIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGFzdCBTT1QgbWFya2VyIHJlYWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbF9tYXJrZXJfaGFuZGxlci0+aWQgPT0gSjJLX01TX1NPVCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBzb3RfcG9zID0gKE9QSl9VSU5UMzIpIG9wal9zdHJlYW1fdGVsbChwX3N0cmVhbSkgLSBsX21hcmtlcl9zaXplIC0gNCA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3RfcG9zID4gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fbGFzdF9zb3RfcmVhZF9wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9sYXN0X3NvdF9yZWFkX3BvcyA9IHNvdF9wb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3NraXBfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTa2lwIHRoZSByZXN0IG9mIHRoZSB0aWxlIHBhcnQgaGVhZGVyKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wal9zdHJlYW1fc2tpcChwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoLHBfbWFuYWdlcikgIT0gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc290X2xlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJTdHJlYW0gdG9vIHNob3J0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9tYXJrZXIgPSBKMktfTVNfU09EOyAvKiBOb3JtYWxseSB3ZSByZWFjaGVkIGEgU09EICovCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVHJ5IHRvIHJlYWQgMiBieXRlcyAodGhlIG5leHQgbWFya2VyIElEKSBmcm9tIHN0cmVhbSBhbmQgY29weSB0aGVtIGludG8gdGhlIGJ1ZmZlciovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGpfc3RyZWFtX3JlYWRfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwyLHBfbWFuYWdlcikgIT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJTdHJlYW0gdG9vIHNob3J0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlYWQgMiBieXRlcyBmcm9tIHRoZSBidWZmZXIgYXMgdGhlIG5ldyBtYXJrZXIgSUQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3JlYWRfYnl0ZXMocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1faGVhZGVyX2RhdGEsJmxfY3VycmVudF9tYXJrZXIsMik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKG9wal9zdHJlYW1fZ2V0X251bWJlcl9ieXRlX2xlZnQocF9zdHJlYW0pID09IDAKKyAgICAgICAgICAgICAgICAgICAgJiYgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPT0gSjJLX1NUQVRFX05FT0MpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgLyogSWYgd2UgZGlkbid0IHNraXAgZGF0YSBiZWZvcmUsIHdlIG5lZWQgdG8gcmVhZCB0aGUgU09EIG1hcmtlciovCisgICAgICAgICAgICAgICAgaWYgKCEgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc2tpcF9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUcnkgdG8gcmVhZCB0aGUgU09EIG1hcmtlciBhbmQgc2tpcCBkYXRhID8gRklYTUUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG9wal9qMmtfcmVhZF9zb2QocF9qMmssIHBfc3RyZWFtLCBwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2Nhbl9kZWNvZGUpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUcnkgdG8gcmVhZCAyIGJ5dGVzICh0aGUgbmV4dCBtYXJrZXIgSUQpIGZyb20gc3RyZWFtIGFuZCBjb3B5IHRoZW0gaW50byB0aGUgYnVmZmVyICovCisJCQkJCQkJd2hpbGUoMSkgIC8vbGlhbmcKKwkJCQkJCQl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGpfc3RyZWFtX3JlYWRfZGF0YShwX3N0cmVhbSxwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwyLHBfbWFuYWdlcikgIT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJTdHJlYW0gdG9vIHNob3J0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmVhZCAyIGJ5dGVzIGZyb20gYnVmZmVyIGFzIHRoZSBuZXcgbWFya2VyIElEICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2hlYWRlcl9kYXRhLCZsX2N1cnJlbnRfbWFya2VyLDIpOworCQkJCQkJCQlpZigobF9jdXJyZW50X21hcmtlciAmIDB4ZmYwMCkgPT0gMHhmZjAwKSBicmVhazsKKwkJCQkJCQl9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5kaWNhdGUgd2Ugd2lsbCB0cnkgdG8gcmVhZCBhIG5ldyB0aWxlLXBhcnQgaGVhZGVyKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3NraXBfZGF0YSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9jYW5fZGVjb2RlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID0gSjJLX1NUQVRFX1RQSFNPVDsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogVHJ5IHRvIHJlYWQgMiBieXRlcyAodGhlIG5leHQgbWFya2VyIElEKSBmcm9tIHN0cmVhbSBhbmQgY29weSB0aGVtIGludG8gdGhlIGJ1ZmZlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wal9zdHJlYW1fcmVhZF9kYXRhKHBfc3RyZWFtLHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2hlYWRlcl9kYXRhLDIscF9tYW5hZ2VyKSAhPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJTdHJlYW0gdG9vIHNob3J0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogUmVhZCAyIGJ5dGVzIGZyb20gYnVmZmVyIGFzIHRoZSBuZXcgbWFya2VyIElEICovCisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSwmbF9jdXJyZW50X21hcmtlciwyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBDdXJyZW50IG1hcmtlciBpcyB0aGUgRU9DIG1hcmtlciA/Ki8KKyAgICAgICAgaWYgKGxfY3VycmVudF9tYXJrZXIgPT0gSjJLX01TX0VPQykgeworICAgICAgICAgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSAhPSBKMktfU1RBVEVfRU9DICl7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID0gSjJLX1NUQVRFX0VPQzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBGSVhNRSBET0MgPz8/Ki8KKyAgICAgICAgaWYgKCAhIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2Nhbl9kZWNvZGUpIHsKKyAgICAgICAgICAgICAgICBsX3RjcCA9IHBfajJrLT5tX2NwLnRjcHMgKyBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyOworICAgICAgICAgICAgICAgIGxfbmJfdGlsZXMgPSBwX2oyay0+bV9jcC50aCAqIHBfajJrLT5tX2NwLnR3OworCisgICAgICAgICAgICAgICAgd2hpbGUoIChwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyIDwgbF9uYl90aWxlcykgJiYgKGxfdGNwLT5tX2RhdGEgPT0gMDApICkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyOworICAgICAgICAgICAgICAgICAgICAgICAgKytsX3RjcDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocF9qMmstPm1fY3VycmVudF90aWxlX251bWJlciA9PSBsX25iX3RpbGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqcF9nb19vbiA9IE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfVFJVRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKkZJWE1FID8/PyovCisgICAgICAgIGlmICghIG9wal90Y2RfaW5pdF9kZWNvZGVfdGlsZShwX2oyay0+bV90Y2QsIHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkNhbm5vdCBkZWNvZGUgdGlsZSwgbWVtb3J5IGVycm9yXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9JTkZPLCAiSGVhZGVyIG9mIHRpbGUgJWQgLyAlZCBoYXMgYmVlbiByZWFkLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXIsIChwX2oyay0+bV9jcC50aCAqIHBfajJrLT5tX2NwLnR3KSAtIDEpOworCisgICAgICAgICpwX3RpbGVfaW5kZXggPSBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyOworICAgICAgICAqcF9nb19vbiA9IE9QSl9UUlVFOworICAgICAgICAqcF9kYXRhX3NpemUgPSBvcGpfdGNkX2dldF9kZWNvZGVkX3RpbGVfc2l6ZShwX2oyay0+bV90Y2QpOworICAgICAgICAqcF90aWxlX3gwID0gcF9qMmstPm1fdGNkLT50Y2RfaW1hZ2UtPnRpbGVzLT54MDsKKyAgICAgICAgKnBfdGlsZV95MCA9IHBfajJrLT5tX3RjZC0+dGNkX2ltYWdlLT50aWxlcy0+eTA7CisgICAgICAgICpwX3RpbGVfeDEgPSBwX2oyay0+bV90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPngxOworICAgICAgICAqcF90aWxlX3kxID0gcF9qMmstPm1fdGNkLT50Y2RfaW1hZ2UtPnRpbGVzLT55MTsKKyAgICAgICAgKnBfbmJfY29tcHMgPSBwX2oyay0+bV90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPm51bWNvbXBzOworCisgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSB8PSAweDAwODA7LyogRklYTUUgSjJLX0RFQ19TVEFURV9EQVRBOyovCisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX2RlY29kZV90aWxlICggIG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBsX2N1cnJlbnRfbWFya2VyOworICAgICAgICBPUEpfQllURSBsX2RhdGEgWzJdOworICAgICAgICBvcGpfdGNwX3QgKiBsX3RjcDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIGlmICggIShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSAmIDB4MDA4MC8qRklYTUUgSjJLX0RFQ19TVEFURV9EQVRBKi8pCisgICAgICAgICAgICAgICAgfHwgKHBfdGlsZV9pbmRleCAhPSBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyKSApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgbF90Y3AgPSAmKHBfajJrLT5tX2NwLnRjcHNbcF90aWxlX2luZGV4XSk7CisgICAgICAgIGlmICghIGxfdGNwLT5tX2RhdGEpIHsKKyAgICAgICAgICAgICAgICBvcGpfajJrX3RjcF9kZXN0cm95KGxfdGNwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEgb3BqX3RjZF9kZWNvZGVfdGlsZSggICAgICBwX2oyay0+bV90Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF90Y3AtPm1fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RjcC0+bV9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90aWxlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZGV4KSApIHsKKyAgICAgICAgICAgICAgICBvcGpfajJrX3RjcF9kZXN0cm95KGxfdGNwKTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSB8PSAweDgwMDA7LypGSVhNRSBKMktfREVDX1NUQVRFX0VSUjsqLworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJGYWlsZWQgdG8gZGVjb2RlLlxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghIG9wal90Y2RfdXBkYXRlX3RpbGVfZGF0YShwX2oyay0+bV90Y2QscF9kYXRhLHBfZGF0YV9zaXplKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICAvKiBUbyBhdm9pZCB0byBkZXN0cm95IHRoZSB0Y3Agd2hpY2ggY2FuIGJlIHVzZWZ1bCB3aGVuIHdlIHRyeSB0byBkZWNvZGUgYSB0aWxlIGRlY29kZWQgYmVmb3JlIChjZiBqMmtfcmFuZG9tX3RpbGVfYWNjZXNzKQorICAgICAgICAgKiB3ZSBkZXN0cm95IGp1c3QgdGhlIGRhdGEgd2hpY2ggd2lsbCBiZSByZS1yZWFkIGluIHJlYWRfdGlsZV9oZWFkZXIqLworICAgICAgICAvKm9wal9qMmtfdGNwX2Rlc3Ryb3kobF90Y3ApOworICAgICAgICBwX2oyay0+bV90Y2QtPnRjcCA9IDA7Ki8KKyAgICAgICAgb3BqX2oya190Y3BfZGF0YV9kZXN0cm95KGxfdGNwKTsKKworICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9jYW5fZGVjb2RlID0gMDsKKyAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgJj0gKH4gKDB4MDA4MHUpKTsvKiBGSVhNRSBKMktfREVDX1NUQVRFX0RBVEEpOyovCisKKyAgICAgICAgaWYob3BqX3N0cmVhbV9nZXRfbnVtYmVyX2J5dGVfbGVmdChwX3N0cmVhbSkgPT0gMCAKKyAgICAgICAgICAgICYmIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID09IEoyS19TVEFURV9ORU9DKXsKKyAgICAgICAgICAgIHJldHVybiBPUEpfVFJVRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSAhPSAweDAxMDApeyAvKkZJWE1FIEoyS19ERUNfU1RBVEVfRU9DKSovCisgICAgICAgICAgICAgICAgaWYgKG9wal9zdHJlYW1fcmVhZF9kYXRhKHBfc3RyZWFtLGxfZGF0YSwyLHBfbWFuYWdlcikgIT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlN0cmVhbSB0b28gc2hvcnRcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhsX2RhdGEsJmxfY3VycmVudF9tYXJrZXIsMik7CisKKyAgICAgICAgICAgICAgICBpZiAobF9jdXJyZW50X21hcmtlciA9PSBKMktfTVNfRU9DKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID0gIDB4MDEwMDsvKkZJWE1FIEoyS19ERUNfU1RBVEVfRU9DOyovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxfY3VycmVudF9tYXJrZXIgIT0gSjJLX01TX1NPVCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiU3RyZWFtIHRvbyBzaG9ydCwgZXhwZWN0ZWQgU09UXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYob3BqX3N0cmVhbV9nZXRfbnVtYmVyX2J5dGVfbGVmdChwX3N0cmVhbSkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID0gSjJLX1NUQVRFX05FT0M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfdXBkYXRlX2ltYWdlX2RhdGEgKG9wal90Y2RfdCAqIHBfdGNkLCBPUEpfQllURSAqIHBfZGF0YSwgb3BqX2ltYWdlX3QqIHBfb3V0cHV0X2ltYWdlKQoreworICAgICAgICBPUEpfVUlOVDMyIGksaixrID0gMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3dpZHRoX3NyYyxsX2hlaWdodF9zcmM7CisgICAgICAgIE9QSl9VSU5UMzIgbF93aWR0aF9kZXN0LGxfaGVpZ2h0X2Rlc3Q7CisgICAgICAgIE9QSl9JTlQzMiBsX29mZnNldF94MF9zcmMsIGxfb2Zmc2V0X3kwX3NyYywgbF9vZmZzZXRfeDFfc3JjLCBsX29mZnNldF95MV9zcmM7CisgICAgICAgIE9QSl9JTlQzMiBsX3N0YXJ0X29mZnNldF9zcmMsIGxfbGluZV9vZmZzZXRfc3JjLCBsX2VuZF9vZmZzZXRfc3JjIDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3N0YXJ0X3hfZGVzdCAsIGxfc3RhcnRfeV9kZXN0OworICAgICAgICBPUEpfVUlOVDMyIGxfeDBfZGVzdCwgbF95MF9kZXN0LCBsX3gxX2Rlc3QsIGxfeTFfZGVzdDsKKyAgICAgICAgT1BKX0lOVDMyIGxfc3RhcnRfb2Zmc2V0X2Rlc3QsIGxfbGluZV9vZmZzZXRfZGVzdDsKKworICAgICAgICBvcGpfaW1hZ2VfY29tcF90ICogbF9pbWdfY29tcF9zcmMgPSAwMDsKKyAgICAgICAgb3BqX2ltYWdlX2NvbXBfdCAqIGxfaW1nX2NvbXBfZGVzdCA9IDAwOworCisgICAgICAgIG9wal90Y2RfdGlsZWNvbXBfdCAqIGxfdGlsZWMgPSAwMDsKKyAgICAgICAgb3BqX2ltYWdlX3QgKiBsX2ltYWdlX3NyYyA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfc2l6ZV9jb21wLCBsX3JlbWFpbmluZzsKKyAgICAgICAgT1BKX0lOVDMyICogbF9kZXN0X3B0cjsKKyAgICAgICAgb3BqX3RjZF9yZXNvbHV0aW9uX3QqIGxfcmVzPSAwMDsKKworICAgICAgICBsX3RpbGVjID0gcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPmNvbXBzOworICAgICAgICBsX2ltYWdlX3NyYyA9IHBfdGNkLT5pbWFnZTsKKyAgICAgICAgbF9pbWdfY29tcF9zcmMgPSBsX2ltYWdlX3NyYy0+Y29tcHM7CisKKyAgICAgICAgbF9pbWdfY29tcF9kZXN0ID0gcF9vdXRwdXRfaW1hZ2UtPmNvbXBzOworCisgICAgICAgIGZvciAoaT0wOyBpPGxfaW1hZ2Vfc3JjLT5udW1jb21wczsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICAvKiBBbGxvY2F0ZSBvdXRwdXQgY29tcG9uZW50IGJ1ZmZlciBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgICAgICAgICBpZiAoIWxfaW1nX2NvbXBfZGVzdC0+ZGF0YSkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBsX2ltZ19jb21wX2Rlc3QtPmRhdGEgPSAoT1BKX0lOVDMyKikgb3BqX2NhbGxvYyhsX2ltZ19jb21wX2Rlc3QtPncgKiBsX2ltZ19jb21wX2Rlc3QtPmgsIHNpemVvZihPUEpfSU5UMzIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGxfaW1nX2NvbXBfZGVzdC0+ZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIENvcHkgaW5mbyBmcm9tIGRlY29kZWQgY29tcCBpbWFnZSB0byBvdXRwdXQgaW1hZ2UgKi8KKyAgICAgICAgICAgICAgICBsX2ltZ19jb21wX2Rlc3QtPnJlc25vX2RlY29kZWQgPSBsX2ltZ19jb21wX3NyYy0+cmVzbm9fZGVjb2RlZDsKKworICAgICAgICAgICAgICAgIC8qLS0tLS0qLworICAgICAgICAgICAgICAgIC8qIENvbXB1dGUgdGhlIHByZWNpc2lvbiBvZiB0aGUgb3V0cHV0IGJ1ZmZlciAqLworICAgICAgICAgICAgICAgIGxfc2l6ZV9jb21wID0gbF9pbWdfY29tcF9zcmMtPnByZWMgPj4gMzsgLyooLyA4KSovCisgICAgICAgICAgICAgICAgbF9yZW1haW5pbmcgPSBsX2ltZ19jb21wX3NyYy0+cHJlYyAmIDc7ICAvKiAoJTgpICovCisgICAgICAgICAgICAgICAgbF9yZXMgPSBsX3RpbGVjLT5yZXNvbHV0aW9ucyArIGxfaW1nX2NvbXBfc3JjLT5yZXNub19kZWNvZGVkOworCisgICAgICAgICAgICAgICAgaWYgKGxfcmVtYWluaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK2xfc2l6ZV9jb21wOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChsX3NpemVfY29tcCA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3NpemVfY29tcCA9IDQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qLS0tLS0qLworCisgICAgICAgICAgICAgICAgLyogQ3VycmVudCB0aWxlIGNvbXBvbmVudCBzaXplKi8KKyAgICAgICAgICAgICAgICAvKmlmIChpID09IDApIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIlNSQzogbF9yZXNfeDA9JWQsIGxfcmVzX3gxPSVkLCBsX3Jlc195MD0lZCwgbF9yZXNfeTE9JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfcmVzLT54MCwgbF9yZXMtPngxLCBsX3Jlcy0+eTAsIGxfcmVzLT55MSk7CisgICAgICAgICAgICAgICAgfSovCisKKyAgICAgICAgICAgICAgICBsX3dpZHRoX3NyYyA9IChPUEpfVUlOVDMyKShsX3Jlcy0+eDEgLSBsX3Jlcy0+eDApOworICAgICAgICAgICAgICAgIGxfaGVpZ2h0X3NyYyA9IChPUEpfVUlOVDMyKShsX3Jlcy0+eTEgLSBsX3Jlcy0+eTApOworCisgICAgICAgICAgICAgICAgLyogQm9yZGVyIG9mIHRoZSBjdXJyZW50IG91dHB1dCBjb21wb25lbnQqLworICAgICAgICAgICAgICAgIGxfeDBfZGVzdCA9IChPUEpfVUlOVDMyKW9wal9pbnRfY2VpbGRpdnBvdzIoKE9QSl9JTlQzMilsX2ltZ19jb21wX2Rlc3QtPngwLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXBfZGVzdC0+ZmFjdG9yKTsKKyAgICAgICAgICAgICAgICBsX3kwX2Rlc3QgPSAoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXZwb3cyKChPUEpfSU5UMzIpbF9pbWdfY29tcF9kZXN0LT55MCwgKE9QSl9JTlQzMilsX2ltZ19jb21wX2Rlc3QtPmZhY3Rvcik7CisgICAgICAgICAgICAgICAgbF94MV9kZXN0ID0gbF94MF9kZXN0ICsgbF9pbWdfY29tcF9kZXN0LT53OworICAgICAgICAgICAgICAgIGxfeTFfZGVzdCA9IGxfeTBfZGVzdCArIGxfaW1nX2NvbXBfZGVzdC0+aDsKKworICAgICAgICAgICAgICAgIC8qaWYgKGkgPT0gMCkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiREVTVDogbF94MF9kZXN0PSVkLCBsX3gxX2Rlc3Q9JWQsIGxfeTBfZGVzdD0lZCwgbF95MV9kZXN0PSVkICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfeDBfZGVzdCwgbF94MV9kZXN0LCBsX3kwX2Rlc3QsIGxfeTFfZGVzdCwgbF9pbWdfY29tcF9kZXN0LT5mYWN0b3IgKTsKKyAgICAgICAgICAgICAgICB9Ki8KKworICAgICAgICAgICAgICAgIC8qLS0tLS0qLworICAgICAgICAgICAgICAgIC8qIENvbXB1dGUgdGhlIGFyZWEgKGxfb2Zmc2V0X3gwX3NyYywgbF9vZmZzZXRfeTBfc3JjLCBsX29mZnNldF94MV9zcmMsIGxfb2Zmc2V0X3kxX3NyYykKKyAgICAgICAgICAgICAgICAgKiBvZiB0aGUgaW5wdXQgYnVmZmVyIChkZWNvZGVkIHRpbGUgY29tcG9uZW50KSB3aGljaCB3aWxsIGJlIG1vdmUKKyAgICAgICAgICAgICAgICAgKiBpbiB0aGUgb3V0cHV0IGJ1ZmZlci4gQ29tcHV0ZSB0aGUgYXJlYSBvZiB0aGUgb3V0cHV0IGJ1ZmZlciAobF9zdGFydF94X2Rlc3QsCisgICAgICAgICAgICAgICAgICogbF9zdGFydF95X2Rlc3QsIGxfd2lkdGhfZGVzdCwgbF9oZWlnaHRfZGVzdCkgIHdoaWNoIHdpbGwgYmUgbW9kaWZpZWQKKyAgICAgICAgICAgICAgICAgKiBieSB0aGlzIGlucHV0IGFyZWEuCisgICAgICAgICAgICAgICAgICogKi8KKyAgICAgICAgICAgICAgICBhc3NlcnQoIGxfcmVzLT54MCA+PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIGxfcmVzLT54MSA+PSAwKTsKKyAgICAgICAgICAgICAgICBpZiAoIGxfeDBfZGVzdCA8IChPUEpfVUlOVDMyKWxfcmVzLT54MCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfc3RhcnRfeF9kZXN0ID0gKE9QSl9VSU5UMzIpbF9yZXMtPngwIC0gbF94MF9kZXN0OworICAgICAgICAgICAgICAgICAgICAgICAgbF9vZmZzZXRfeDBfc3JjID0gMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBsX3gxX2Rlc3QgPj0gKE9QSl9VSU5UMzIpbF9yZXMtPngxICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3dpZHRoX2Rlc3QgPSBsX3dpZHRoX3NyYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9vZmZzZXRfeDFfc3JjID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3dpZHRoX2Rlc3QgPSBsX3gxX2Rlc3QgLSAoT1BKX1VJTlQzMilsX3Jlcy0+eDAgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX29mZnNldF94MV9zcmMgPSAoT1BKX0lOVDMyKShsX3dpZHRoX3NyYyAtIGxfd2lkdGhfZGVzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbF9zdGFydF94X2Rlc3QgPSAwIDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfb2Zmc2V0X3gwX3NyYyA9IChPUEpfSU5UMzIpbF94MF9kZXN0IC0gbF9yZXMtPngwOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxfeDFfZGVzdCA+PSAoT1BKX1VJTlQzMilsX3Jlcy0+eDEgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfd2lkdGhfZGVzdCA9IGxfd2lkdGhfc3JjIC0gKE9QSl9VSU5UMzIpbF9vZmZzZXRfeDBfc3JjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX29mZnNldF94MV9zcmMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfd2lkdGhfZGVzdCA9IGxfaW1nX2NvbXBfZGVzdC0+dyA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfb2Zmc2V0X3gxX3NyYyA9IGxfcmVzLT54MSAtIChPUEpfSU5UMzIpbF94MV9kZXN0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICggbF95MF9kZXN0IDwgKE9QSl9VSU5UMzIpbF9yZXMtPnkwICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbF9zdGFydF95X2Rlc3QgPSAoT1BKX1VJTlQzMilsX3Jlcy0+eTAgLSBsX3kwX2Rlc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICBsX29mZnNldF95MF9zcmMgPSAwOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxfeTFfZGVzdCA+PSAoT1BKX1VJTlQzMilsX3Jlcy0+eTEgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfaGVpZ2h0X2Rlc3QgPSBsX2hlaWdodF9zcmM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfb2Zmc2V0X3kxX3NyYyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9oZWlnaHRfZGVzdCA9IGxfeTFfZGVzdCAtIChPUEpfVUlOVDMyKWxfcmVzLT55MCA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfb2Zmc2V0X3kxX3NyYyA9ICAoT1BKX0lOVDMyKShsX2hlaWdodF9zcmMgLSBsX2hlaWdodF9kZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3N0YXJ0X3lfZGVzdCA9IDAgOworICAgICAgICAgICAgICAgICAgICAgICAgbF9vZmZzZXRfeTBfc3JjID0gKE9QSl9JTlQzMilsX3kwX2Rlc3QgLSBsX3Jlcy0+eTA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbF95MV9kZXN0ID49IChPUEpfVUlOVDMyKWxfcmVzLT55MSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9oZWlnaHRfZGVzdCA9IGxfaGVpZ2h0X3NyYyAtIChPUEpfVUlOVDMyKWxfb2Zmc2V0X3kwX3NyYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9vZmZzZXRfeTFfc3JjID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2hlaWdodF9kZXN0ID0gbF9pbWdfY29tcF9kZXN0LT5oIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9vZmZzZXRfeTFfc3JjID0gbF9yZXMtPnkxIC0gKE9QSl9JTlQzMilsX3kxX2Rlc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYoIChsX29mZnNldF94MF9zcmMgPCAwICkgfHwgKGxfb2Zmc2V0X3kwX3NyYyA8IDAgKSB8fCAobF9vZmZzZXRfeDFfc3JjIDwgMCApIHx8IChsX29mZnNldF95MV9zcmMgPCAwICkgKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIHRlc3RjYXNlIDI5NzcucGRmLmFzYW4uNjcuMjE5OCAqLworICAgICAgICAgICAgICAgIGlmICgoT1BKX0lOVDMyKWxfd2lkdGhfZGVzdCA8IDAgfHwgKE9QSl9JTlQzMilsX2hlaWdodF9kZXN0IDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyotLS0tLSovCisKKyAgICAgICAgICAgICAgICAvKiBDb21wdXRlIHRoZSBpbnB1dCBidWZmZXIgb2Zmc2V0ICovCisgICAgICAgICAgICAgICAgbF9zdGFydF9vZmZzZXRfc3JjID0gbF9vZmZzZXRfeDBfc3JjICsgbF9vZmZzZXRfeTBfc3JjICogKE9QSl9JTlQzMilsX3dpZHRoX3NyYzsKKyAgICAgICAgICAgICAgICBsX2xpbmVfb2Zmc2V0X3NyYyA9IGxfb2Zmc2V0X3gxX3NyYyArIGxfb2Zmc2V0X3gwX3NyYzsKKyAgICAgICAgICAgICAgICBsX2VuZF9vZmZzZXRfc3JjID0gbF9vZmZzZXRfeTFfc3JjICogKE9QSl9JTlQzMilsX3dpZHRoX3NyYyAtIGxfb2Zmc2V0X3gwX3NyYzsKKworICAgICAgICAgICAgICAgIC8qIENvbXB1dGUgdGhlIG91dHB1dCBidWZmZXIgb2Zmc2V0ICovCisgICAgICAgICAgICAgICAgbF9zdGFydF9vZmZzZXRfZGVzdCA9IChPUEpfSU5UMzIpKGxfc3RhcnRfeF9kZXN0ICsgbF9zdGFydF95X2Rlc3QgKiBsX2ltZ19jb21wX2Rlc3QtPncpOworICAgICAgICAgICAgICAgIGxfbGluZV9vZmZzZXRfZGVzdCA9IChPUEpfSU5UMzIpKGxfaW1nX2NvbXBfZGVzdC0+dyAtIGxfd2lkdGhfZGVzdCk7CisKKyAgICAgICAgICAgICAgICAvKiBNb3ZlIHRoZSBvdXRwdXQgYnVmZmVyIHRvIHRoZSBmaXJzdCBwbGFjZSB3aGVyZSB3ZSB3aWxsIHdyaXRlKi8KKyAgICAgICAgICAgICAgICBsX2Rlc3RfcHRyID0gbF9pbWdfY29tcF9kZXN0LT5kYXRhICsgbF9zdGFydF9vZmZzZXRfZGVzdDsKKworICAgICAgICAgICAgICAgIC8qaWYgKGkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJDT01QT1slZF06XG4iLGkpOworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJTUkM6IGxfc3RhcnRfeF9zcmM9JWQsIGxfc3RhcnRfeV9zcmM9JWQsIGxfd2lkdGhfc3JjPSVkLCBsX2hlaWdodF9zcmM9JWRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHQgdGlsZSBvZmZzZXQ6JWQsICVkLCAlZCwgJWRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHQgYnVmZmVyIG9mZnNldDogJWQ7ICVkLCAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3Jlcy0+eDAsIGxfcmVzLT55MCwgbF93aWR0aF9zcmMsIGxfaGVpZ2h0X3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX29mZnNldF94MF9zcmMsIGxfb2Zmc2V0X3kwX3NyYywgbF9vZmZzZXRfeDFfc3JjLCBsX29mZnNldF95MV9zcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zdGFydF9vZmZzZXRfc3JjLCBsX2xpbmVfb2Zmc2V0X3NyYywgbF9lbmRfb2Zmc2V0X3NyYyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiREVTVDogbF9zdGFydF94X2Rlc3Q9JWQsIGxfc3RhcnRfeV9kZXN0PSVkLCBsX3dpZHRoX2Rlc3Q9JWQsIGxfaGVpZ2h0X2Rlc3Q9JWRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHQgc3RhcnQgb2Zmc2V0OiAlZCwgbGluZSBvZmZzZXQ9ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc3RhcnRfeF9kZXN0LCBsX3N0YXJ0X3lfZGVzdCwgbF93aWR0aF9kZXN0LCBsX2hlaWdodF9kZXN0LCBsX3N0YXJ0X29mZnNldF9kZXN0LCBsX2xpbmVfb2Zmc2V0X2Rlc3QpOworICAgICAgICAgICAgICAgIH0qLworCisgICAgICAgICAgICAgICAgc3dpdGNoIChsX3NpemVfY29tcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0NIQVIgKiBsX3NyY19wdHIgPSAoT1BKX0NIQVIqKSBwX2RhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfc3RhcnRfb2Zmc2V0X3NyYzsgLyogTW92ZSB0byB0aGUgZmlyc3QgcGxhY2Ugd2hlcmUgd2Ugd2lsbCByZWFkKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2ltZ19jb21wX3NyYy0+c2duZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMCA7IGogPCBsX2hlaWdodF9kZXN0IDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGsgPSAwIDsgayA8IGxfd2lkdGhfZGVzdCA7ICsraykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9IChPUEpfSU5UMzIpICgqKGxfc3JjX3B0cisrKSk7IC8qIENvcHkgb25seSB0aGUgZGF0YSBuZWVkZWQgZm9yIHRoZSBvdXRwdXQgaW1hZ2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfZGVzdF9wdHIrPSBsX2xpbmVfb2Zmc2V0X2Rlc3Q7IC8qIE1vdmUgdG8gdGhlIG5leHQgcGxhY2Ugd2hlcmUgd2Ugd2lsbCB3cml0ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NyY19wdHIgKz0gbF9saW5lX29mZnNldF9zcmMgOyAvKiBNb3ZlIHRvIHRoZSBuZXh0IHBsYWNlIHdoZXJlIHdlIHdpbGwgcmVhZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGogPSAwIDsgaiA8IGxfaGVpZ2h0X2Rlc3QgOyArK2ogKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGsgPSAwIDsgayA8IGxfd2lkdGhfZGVzdCA7ICsraykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9IChPUEpfSU5UMzIpICgoKihsX3NyY19wdHIrKykpJjB4ZmYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9kZXN0X3B0cis9IGxfbGluZV9vZmZzZXRfZGVzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfbGluZV9vZmZzZXRfc3JjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc3JjX3B0ciArPSBsX2VuZF9vZmZzZXRfc3JjOyAvKiBNb3ZlIHRvIHRoZSBlbmQgb2YgdGhpcyBjb21wb25lbnQtcGFydCBvZiB0aGUgaW5wdXQgYnVmZmVyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9kYXRhID0gKE9QSl9CWVRFKikgbF9zcmNfcHRyOyAvKiBLZWVwIHRoZSBjdXJyZW50IHBvc2l0aW9uIGZvciB0aGUgbmV4dCBjb21wb25lbnQtcGFydCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDE2ICogbF9zcmNfcHRyID0gKE9QSl9JTlQxNiAqKSBwX2RhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfc3RhcnRfb2Zmc2V0X3NyYzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2ltZ19jb21wX3NyYy0+c2duZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7ajxsX2hlaWdodF9kZXN0OysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGs9MDtrPGxfd2lkdGhfZGVzdDsrK2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGxfZGVzdF9wdHIrKykgPSAqKGxfc3JjX3B0cisrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfZGVzdF9wdHIrPSBsX2xpbmVfb2Zmc2V0X2Rlc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc3JjX3B0ciArPSBsX2xpbmVfb2Zmc2V0X3NyYyA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7ajxsX2hlaWdodF9kZXN0OysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGs9MDtrPGxfd2lkdGhfZGVzdDsrK2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGxfZGVzdF9wdHIrKykgPSAoKihsX3NyY19wdHIrKykpJjB4ZmZmZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfZGVzdF9wdHIrPSBsX2xpbmVfb2Zmc2V0X2Rlc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc3JjX3B0ciArPSBsX2xpbmVfb2Zmc2V0X3NyYyA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfZW5kX29mZnNldF9zcmM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9kYXRhID0gKE9QSl9CWVRFKikgbF9zcmNfcHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogbF9zcmNfcHRyID0gKE9QSl9JTlQzMiAqKSBwX2RhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfc3RhcnRfb2Zmc2V0X3NyYzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8bF9oZWlnaHRfZGVzdDsrK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaz0wO2s8bF93aWR0aF9kZXN0OysraykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGxfZGVzdF9wdHIrKykgPSAoKihsX3NyY19wdHIrKykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2Rlc3RfcHRyKz0gbF9saW5lX29mZnNldF9kZXN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfbGluZV9vZmZzZXRfc3JjIDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NyY19wdHIgKz0gbF9lbmRfb2Zmc2V0X3NyYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2RhdGEgPSAoT1BKX0JZVEUqKSBsX3NyY19wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKytsX2ltZ19jb21wX2Rlc3Q7CisgICAgICAgICAgICAgICAgKytsX2ltZ19jb21wX3NyYzsKKyAgICAgICAgICAgICAgICArK2xfdGlsZWM7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfc2V0X2RlY29kZV9hcmVhKCAgICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfdCogcF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBfc3RhcnRfeCwgT1BKX0lOVDMyIHBfc3RhcnRfeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBfZW5kX3gsIE9QSl9JTlQzMiBwX2VuZF95LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKQoreworICAgICAgICBvcGpfY3BfdCAqIGxfY3AgPSAmKHBfajJrLT5tX2NwKTsKKyAgICAgICAgb3BqX2ltYWdlX3QgKiBsX2ltYWdlID0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZTsKKworICAgICAgICBPUEpfVUlOVDMyIGl0X2NvbXA7CisgICAgICAgIE9QSl9JTlQzMiBsX2NvbXBfeDEsIGxfY29tcF95MTsKKyAgICAgICAgb3BqX2ltYWdlX2NvbXBfdCogbF9pbWdfY29tcCA9IE5VTEw7CisKKyAgICAgICAgLyogQ2hlY2sgaWYgd2UgYXJlIHJlYWQgdGhlIG1haW4gaGVhZGVyICovCisgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSAhPSBKMktfU1RBVEVfVFBIU09UKSB7IC8qIEZJWE1FIEoyS19ERUNfU1RBVEVfVFBIU09UKSovCisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5lZWQgdG8gZGVjb2RlIHRoZSBtYWluIGhlYWRlciBiZWZvcmUgYmVnaW4gdG8gZGVjb2RlIHRoZSByZW1haW5pbmcgY29kZXN0cmVhbSIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICFwX3N0YXJ0X3ggJiYgIXBfc3RhcnRfeSAmJiAhcF9lbmRfeCAmJiAhcF9lbmRfeSl7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9JTkZPLCAiTm8gZGVjb2RlZCBhcmVhIHBhcmFtZXRlcnMsIHNldCB0aGUgZGVjb2RlZCBhcmVhIHRvIHRoZSB3aG9sZSBpbWFnZVxuIik7CisKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGFydF90aWxlX3ggPSAwOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXJ0X3RpbGVfeSA9IDA7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZW5kX3RpbGVfeCA9IGxfY3AtPnR3OworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2VuZF90aWxlX3kgPSBsX2NwLT50aDsKKworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfVFJVRTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIC0tLS0tICovCisgICAgICAgIC8qIENoZWNrIGlmIHRoZSBwb3NpdGlvbnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgYXJlIGNvcnJlY3QgKi8KKworICAgICAgICAvKiBMZWZ0ICovCisgICAgICAgIGFzc2VydChwX3N0YXJ0X3ggPj0gMCApOworICAgICAgICBhc3NlcnQocF9zdGFydF95ID49IDAgKTsKKworICAgICAgICBpZiAoKE9QSl9VSU5UMzIpcF9zdGFydF94ID4gbF9pbWFnZS0+eDEgKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJMZWZ0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWHNpej0lZCkuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgcF9zdGFydF94LCBsX2ltYWdlLT54MSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgoT1BKX1VJTlQzMilwX3N0YXJ0X3ggPCBsX2ltYWdlLT54MCl7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfc3RhcnRfeCwgbF9pbWFnZS0+eDApOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXJ0X3RpbGVfeCA9IDA7CisgICAgICAgICAgICAgICAgcF9pbWFnZS0+eDAgPSBsX2ltYWdlLT54MDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGFydF90aWxlX3ggPSAoKE9QSl9VSU5UMzIpcF9zdGFydF94IC0gbF9jcC0+dHgwKSAvIGxfY3AtPnRkeDsKKyAgICAgICAgICAgICAgICBwX2ltYWdlLT54MCA9IChPUEpfVUlOVDMyKXBfc3RhcnRfeDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFVwICovCisgICAgICAgIGlmICgoT1BKX1VJTlQzMilwX3N0YXJ0X3kgPiBsX2ltYWdlLT55MSl7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWXNpej0lZCkuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3N0YXJ0X3ksIGxfaW1hZ2UtPnkxKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKChPUEpfVUlOVDMyKXBfc3RhcnRfeSA8IGxfaW1hZ2UtPnkwKXsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlPc2l6PSVkKS5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfc3RhcnRfeSwgbF9pbWFnZS0+eTApOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXJ0X3RpbGVfeSA9IDA7CisgICAgICAgICAgICAgICAgcF9pbWFnZS0+eTAgPSBsX2ltYWdlLT55MDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGFydF90aWxlX3kgPSAoKE9QSl9VSU5UMzIpcF9zdGFydF95IC0gbF9jcC0+dHkwKSAvIGxfY3AtPnRkeTsKKyAgICAgICAgICAgICAgICBwX2ltYWdlLT55MCA9IChPUEpfVUlOVDMyKXBfc3RhcnRfeTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFJpZ2h0ICovCisgICAgICAgIGFzc2VydCgoT1BKX1VJTlQzMilwX2VuZF94ID4gMCk7CisgICAgICAgIGFzc2VydCgoT1BKX1VJTlQzMilwX2VuZF95ID4gMCk7CisgICAgICAgIGlmICgoT1BKX1VJTlQzMilwX2VuZF94IDwgbF9pbWFnZS0+eDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgIlJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWE9zaXo9JWQpLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfZW5kX3gsIGxfaW1hZ2UtPngwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKChPUEpfVUlOVDMyKXBfZW5kX3ggPiBsX2ltYWdlLT54MSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICJSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfZW5kX3gsIGxfaW1hZ2UtPngxKTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9lbmRfdGlsZV94ID0gbF9jcC0+dHc7CisgICAgICAgICAgICAgICAgcF9pbWFnZS0+eDEgPSBsX2ltYWdlLT54MTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9lbmRfdGlsZV94ID0gKE9QSl9VSU5UMzIpb3BqX2ludF9jZWlsZGl2KHBfZW5kX3ggLSAoT1BKX0lOVDMyKWxfY3AtPnR4MCwgKE9QSl9JTlQzMilsX2NwLT50ZHgpOworICAgICAgICAgICAgICAgIHBfaW1hZ2UtPngxID0gKE9QSl9VSU5UMzIpcF9lbmRfeDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEJvdHRvbSAqLworICAgICAgICBpZiAoKE9QSl9VSU5UMzIpcF9lbmRfeSA8IGxfaW1hZ2UtPnkwKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgcF9lbmRfeSwgbF9pbWFnZS0+eTApOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChPUEpfVUlOVDMyKXBfZW5kX3kgPiBsX2ltYWdlLT55MSl7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgIkJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlzaXo9JWQpLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfZW5kX3ksIGxfaW1hZ2UtPnkxKTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9lbmRfdGlsZV95ID0gbF9jcC0+dGg7CisgICAgICAgICAgICAgICAgcF9pbWFnZS0+eTEgPSBsX2ltYWdlLT55MTsKKyAgICAgICAgfQorICAgICAgICBlbHNleworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2VuZF90aWxlX3kgPSAoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXYocF9lbmRfeSAtIChPUEpfSU5UMzIpbF9jcC0+dHkwLCAoT1BKX0lOVDMyKWxfY3AtPnRkeSk7CisgICAgICAgICAgICAgICAgcF9pbWFnZS0+eTEgPSAoT1BKX1VJTlQzMilwX2VuZF95OworICAgICAgICB9CisgICAgICAgIC8qIC0tLS0tICovCisKKyAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGlzY2FyZF90aWxlcyA9IDE7CisKKyAgICAgICAgbF9pbWdfY29tcCA9IHBfaW1hZ2UtPmNvbXBzOworICAgICAgICBmb3IgKGl0X2NvbXA9MDsgaXRfY29tcCA8IHBfaW1hZ2UtPm51bWNvbXBzOyArK2l0X2NvbXApCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgbF9oLGxfdzsKKworICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAtPngwID0gKE9QSl9VSU5UMzIpb3BqX2ludF9jZWlsZGl2KChPUEpfSU5UMzIpcF9pbWFnZS0+eDAsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHgpOworICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAtPnkwID0gKE9QSl9VSU5UMzIpb3BqX2ludF9jZWlsZGl2KChPUEpfSU5UMzIpcF9pbWFnZS0+eTAsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHkpOworICAgICAgICAgICAgICAgIGxfY29tcF94MSA9IG9wal9pbnRfY2VpbGRpdigoT1BKX0lOVDMyKXBfaW1hZ2UtPngxLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmR4KTsKKyAgICAgICAgICAgICAgICBsX2NvbXBfeTEgPSBvcGpfaW50X2NlaWxkaXYoKE9QSl9JTlQzMilwX2ltYWdlLT55MSwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5keSk7CisKKyAgICAgICAgICAgICAgICBsX3cgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfY29tcF94MSwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5mYWN0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gb3BqX2ludF9jZWlsZGl2cG93MigoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPngwLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmZhY3Rvcik7CisgICAgICAgICAgICAgICAgaWYgKGxfdyA8IDApeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNpemUgeCBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS53PSVkKS5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0X2NvbXAsIGxfdyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsX2ltZ19jb21wLT53ID0gKE9QSl9VSU5UMzIpbF93OworCisgICAgICAgICAgICAgICAgbF9oID0gb3BqX2ludF9jZWlsZGl2cG93MihsX2NvbXBfeTEsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZmFjdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIG9wal9pbnRfY2VpbGRpdnBvdzIoKE9QSl9JTlQzMilsX2ltZ19jb21wLT55MCwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5mYWN0b3IpOworICAgICAgICAgICAgICAgIGlmIChsX2ggPCAwKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaXplIHkgb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0uaD0lZCkuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdF9jb21wLCBsX2gpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbF9pbWdfY29tcC0+aCA9IChPUEpfVUlOVDMyKWxfaDsKKworICAgICAgICAgICAgICAgIGxfaW1nX2NvbXArKzsKKyAgICAgICAgfQorCisgICAgICAgIG9wal9ldmVudF9tc2coIHBfbWFuYWdlciwgRVZUX0lORk8sIlNldHRpbmcgZGVjb2RpbmcgYXJlYSB0byAlZCwlZCwlZCwlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfaW1hZ2UtPngwLCBwX2ltYWdlLT55MCwgcF9pbWFnZS0+eDEsIHBfaW1hZ2UtPnkxKTsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK29wal9qMmtfdCogb3BqX2oya19jcmVhdGVfZGVjb21wcmVzcyh2b2lkKQoreworICAgICAgICBvcGpfajJrX3QgKmxfajJrID0gKG9wal9qMmtfdCopIG9wal9tYWxsb2Moc2l6ZW9mKG9wal9qMmtfdCkpOworICAgICAgICBpZiAoIWxfajJrKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDAwOworICAgICAgICB9CisgICAgICAgIG1lbXNldChsX2oyaywwLHNpemVvZihvcGpfajJrX3QpKTsKKworICAgICAgICBsX2oyay0+bV9pc19kZWNvZGVyID0gMTsKKyAgICAgICAgbF9qMmstPm1fY3AubV9pc19kZWNvZGVyID0gMTsKKworICAgICAgICBsX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcCA9IChvcGpfdGNwX3QqKSBvcGpfbWFsbG9jKHNpemVvZihvcGpfdGNwX3QpKTsKKyAgICAgICAgaWYgKCFsX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcCkgeworICAgICAgICAgICAgICAgIG9wal9qMmtfZGVzdHJveShsX2oyayk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDAwOworICAgICAgICB9CisgICAgICAgIG1lbXNldChsX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcCwwLHNpemVvZihvcGpfdGNwX3QpKTsKKworICAgICAgICBsX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YSA9IChPUEpfQllURSAqKSBvcGpfbWFsbG9jKE9QSl9KMktfREVGQVVMVF9IRUFERVJfU0laRSk7CisgICAgICAgIGlmICghIGxfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2hlYWRlcl9kYXRhKSB7CisgICAgICAgICAgICAgICAgb3BqX2oya19kZXN0cm95KGxfajJrKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDA7CisgICAgICAgIH0KKworICAgICAgICBsX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9oZWFkZXJfZGF0YV9zaXplID0gT1BKX0oyS19ERUZBVUxUX0hFQURFUl9TSVpFOworCisgICAgICAgIGxfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3RpbGVfaW5kX3RvX2RlYyA9IC0xIDsKKworICAgICAgICBsX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9sYXN0X3NvdF9yZWFkX3BvcyA9IDAgOworCisgICAgICAgIC8qIGNvZGVzdHJlYW0gaW5kZXggY3JlYXRpb24gKi8KKyAgICAgICAgbF9qMmstPmNzdHJfaW5kZXggPSBvcGpfajJrX2NyZWF0ZV9jc3RyX2luZGV4KCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKG9wal9jb2Rlc3RyZWFtX2luZGV4X3QqKSBvcGpfbWFsbG9jKHNpemVvZihvcGpfY29kZXN0cmVhbV9pbmRleF90KSk7CisgICAgICAgIGlmICghbF9qMmstPmNzdHJfaW5kZXgpeworICAgICAgICAgICAgICAgIG9wal9qMmtfZGVzdHJveShsX2oyayk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBsX2oyay0+Y3N0cl9pbmRleC0+bWFya2VyID0gKG9wal9tYXJrZXJfaW5mb190Kikgb3BqX21hbGxvYygxMDAgKiBzaXplb2Yob3BqX21hcmtlcl9pbmZvX3QpKTsKKyovCisKKyAgICAgICAgLyogdmFsaWRhdGlvbiBsaXN0IGNyZWF0aW9uICovCisgICAgICAgIGxfajJrLT5tX3ZhbGlkYXRpb25fbGlzdCA9IG9wal9wcm9jZWR1cmVfbGlzdF9jcmVhdGUoKTsKKyAgICAgICAgaWYgKCEgbF9qMmstPm1fdmFsaWRhdGlvbl9saXN0KSB7CisgICAgICAgICAgICAgICAgb3BqX2oya19kZXN0cm95KGxfajJrKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDA7CisgICAgICAgIH0KKworICAgICAgICAvKiBleGVjdXRpb24gbGlzdCBjcmVhdGlvbiAqLworICAgICAgICBsX2oyay0+bV9wcm9jZWR1cmVfbGlzdCA9IG9wal9wcm9jZWR1cmVfbGlzdF9jcmVhdGUoKTsKKyAgICAgICAgaWYgKCEgbF9qMmstPm1fcHJvY2VkdXJlX2xpc3QpIHsKKyAgICAgICAgICAgICAgICBvcGpfajJrX2Rlc3Ryb3kobF9qMmspOworICAgICAgICAgICAgICAgIHJldHVybiAwMDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsX2oyazsKK30KKworb3BqX2NvZGVzdHJlYW1faW5kZXhfdCogb3BqX2oya19jcmVhdGVfY3N0cl9pbmRleCh2b2lkKQoreworICAgICAgICBvcGpfY29kZXN0cmVhbV9pbmRleF90KiBjc3RyX2luZGV4ID0gKG9wal9jb2Rlc3RyZWFtX2luZGV4X3QqKQorICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NhbGxvYygxLHNpemVvZihvcGpfY29kZXN0cmVhbV9pbmRleF90KSk7CisgICAgICAgIGlmICghY3N0cl9pbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBjc3RyX2luZGV4LT5tYXhtYXJrbnVtID0gMTAwOworICAgICAgICBjc3RyX2luZGV4LT5tYXJrbnVtID0gMDsKKyAgICAgICAgY3N0cl9pbmRleC0+bWFya2VyID0gKG9wal9tYXJrZXJfaW5mb190KikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jYWxsb2MoY3N0cl9pbmRleC0+bWF4bWFya251bSwgc2l6ZW9mKG9wal9tYXJrZXJfaW5mb190KSk7CisgICAgICAgIGlmICghY3N0cl9pbmRleC0+IG1hcmtlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBjc3RyX2luZGV4LT50aWxlX2luZGV4ID0gTlVMTDsKKworICAgICAgICByZXR1cm4gY3N0cl9pbmRleDsKK30KKworT1BKX1VJTlQzMiBvcGpfajJrX2dldF9TUENvZF9TUENvY19zaXplICggICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9jb21wX25vICkKK3sKKyAgICAgICAgb3BqX2NwX3QgKmxfY3AgPSAwMDsKKyAgICAgICAgb3BqX3RjcF90ICpsX3RjcCA9IDAwOworICAgICAgICBvcGpfdGNjcF90ICpsX3RjY3AgPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisKKyAgICAgICAgbF9jcCA9ICYocF9qMmstPm1fY3ApOworICAgICAgICBsX3RjcCA9ICZsX2NwLT50Y3BzW3BfdGlsZV9ub107CisgICAgICAgIGxfdGNjcCA9ICZsX3RjcC0+dGNjcHNbcF9jb21wX25vXTsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zIGFnYWluICovCisgICAgICAgIGFzc2VydChwX3RpbGVfbm8gPCAobF9jcC0+dHcgKiBsX2NwLT50aCkpOworICAgICAgICBhc3NlcnQocF9jb21wX25vIDwgcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHMpOworCisgICAgICAgIGlmIChsX3RjY3AtPmNzdHkgJiBKMktfQ0NQX0NTVFlfUFJUKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDUgKyBsX3RjY3AtPm51bXJlc29sdXRpb25zOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiA1OworICAgICAgICB9Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfU1BDb2RfU1BDb2MoICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbXBfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIgKQoreworICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgIG9wal9jcF90ICpsX2NwID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqbF90Y3AgPSAwMDsKKyAgICAgICAgb3BqX3RjY3BfdCAqbF90Y2NwID0gMDA7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9oZWFkZXJfc2l6ZSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9kYXRhICE9IDAwKTsKKworICAgICAgICBsX2NwID0gJihwX2oyay0+bV9jcCk7CisgICAgICAgIGxfdGNwID0gJmxfY3AtPnRjcHNbcF90aWxlX25vXTsKKyAgICAgICAgbF90Y2NwID0gJmxfdGNwLT50Y2Nwc1twX2NvbXBfbm9dOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgYWdhaW4gKi8KKyAgICAgICAgYXNzZXJ0KHBfdGlsZV9ubyA8IChsX2NwLT50dyAqIGxfY3AtPnRoKSk7CisgICAgICAgIGFzc2VydChwX2NvbXBfbm8gPChwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wcykpOworCisgICAgICAgIGlmICgqcF9oZWFkZXJfc2l6ZSA8IDUpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3Igd3JpdGluZyBTUENvZCBTUENvYyBlbGVtZW50XG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKHBfZGF0YSxsX3RjY3AtPm51bXJlc29sdXRpb25zIC0gMSwgMSk7ICAvKiBTUGNvYyAoRCkgKi8KKyAgICAgICAgKytwX2RhdGE7CisKKyAgICAgICAgb3BqX3dyaXRlX2J5dGVzKHBfZGF0YSxsX3RjY3AtPmNibGt3IC0gMiwgMSk7ICAgICAgICAgICAgICAgICAgIC8qIFNQY29jIChFKSAqLworICAgICAgICArK3BfZGF0YTsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMocF9kYXRhLGxfdGNjcC0+Y2Jsa2ggLSAyLCAxKTsgICAgICAgICAgICAgICAgICAgLyogU1Bjb2MgKEYpICovCisgICAgICAgICsrcF9kYXRhOworCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhwX2RhdGEsbF90Y2NwLT5jYmxrc3R5LCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQY29jIChHKSAqLworICAgICAgICArK3BfZGF0YTsKKworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMocF9kYXRhLGxfdGNjcC0+cW1mYmlkLCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUGNvYyAoSCkgKi8KKyAgICAgICAgKytwX2RhdGE7CisKKyAgICAgICAgKnBfaGVhZGVyX3NpemUgPSAqcF9oZWFkZXJfc2l6ZSAtIDU7CisKKyAgICAgICAgaWYgKGxfdGNjcC0+Y3N0eSAmIEoyS19DQ1BfQ1NUWV9QUlQpIHsKKworICAgICAgICAgICAgICAgIGlmICgqcF9oZWFkZXJfc2l6ZSA8IGxfdGNjcC0+bnVtcmVzb2x1dGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciB3cml0aW5nIFNQQ29kIFNQQ29jIGVsZW1lbnRcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbF90Y2NwLT5udW1yZXNvbHV0aW9uczsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfd3JpdGVfYnl0ZXMocF9kYXRhLGxfdGNjcC0+cHJjd1tpXSArIChsX3RjY3AtPnByY2hbaV0gPDwgNCksIDEpOyAgICAvKiBTUGNvYyAoSV9pKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgKytwX2RhdGE7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKnBfaGVhZGVyX3NpemUgPSAqcF9oZWFkZXJfc2l6ZSAtIGxfdGNjcC0+bnVtcmVzb2x1dGlvbnM7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfcmVhZF9TUENvZF9TUENvYyggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBjb21wbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcikKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBpLCBsX3RtcDsKKyAgICAgICAgb3BqX2NwX3QgKmxfY3AgPSBOVUxMOworICAgICAgICBvcGpfdGNwX3QgKmxfdGNwID0gTlVMTDsKKyAgICAgICAgb3BqX3RjY3BfdCAqbF90Y2NwID0gTlVMTDsKKyAgICAgICAgT1BKX0JZVEUgKiBsX2N1cnJlbnRfcHRyID0gTlVMTDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9oZWFkZXJfZGF0YSAhPSAwMCk7CisKKyAgICAgICAgbF9jcCA9ICYocF9qMmstPm1fY3ApOworICAgICAgICBsX3RjcCA9IChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9PSBKMktfU1RBVEVfVFBIKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX2NwLT50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3A7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9uIGFnYWluICovCisgICAgICAgIGFzc2VydChjb21wbm8gPCBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wcyk7CisKKyAgICAgICAgbF90Y2NwID0gJmxfdGNwLT50Y2Nwc1tjb21wbm9dOworICAgICAgICBsX2N1cnJlbnRfcHRyID0gcF9oZWFkZXJfZGF0YTsKKworICAgICAgICAvKiBtYWtlIHN1cmUgcm9vbSBpcyBzdWZmaWNpZW50ICovCisgICAgICAgIGlmICgqcF9oZWFkZXJfc2l6ZSA8IDUpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50XG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMobF9jdXJyZW50X3B0ciwgJmxfdGNjcC0+bnVtcmVzb2x1dGlvbnMgLDEpOyAgICAgICAgICAgICAgLyogU1Bjb3ggKEQpICovCisgICAgICAgICsrbF90Y2NwLT5udW1yZXNvbHV0aW9uczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdGNjcC0+bnVtcmVzb2x1dGlvbnMgPSByZWFkKCkgKyAxICovCisgICAgICAgIGlmIChsX3RjY3AtPm51bXJlc29sdXRpb25zID4gT1BKX0oyS19NQVhSTFZMUykgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCB2YWx1ZSBmb3IgbnVtcmVzb2x1dGlvbnMgOiAlZCwgbWF4IHZhbHVlIGlzIHNldCBpbiBvcGVuanBlZy5oIGF0ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF90Y2NwLT5udW1yZXNvbHV0aW9ucywgT1BKX0oyS19NQVhSTFZMUyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICArK2xfY3VycmVudF9wdHI7CisKKyAgICAgICAgLyogSWYgdXNlciB3YW50cyB0byByZW1vdmUgbW9yZSByZXNvbHV0aW9ucyB0aGFuIHRoZSBjb2Rlc3RyZWFtIGNvbnRhaW5zLCByZXR1cm4gZXJyb3IgKi8KKyAgICAgICAgaWYgKGxfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWMubV9yZWR1Y2UgPj0gbF90Y2NwLT5udW1yZXNvbHV0aW9ucykgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciBkZWNvZGluZyBjb21wb25lbnQgJWQuXG5UaGUgbnVtYmVyIG9mIHJlc29sdXRpb25zIHRvIHJlbW92ZSBpcyBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgcmVzb2x1dGlvbnMgb2YgdGhpcyBjb21wb25lbnRcbk1vZGlmeSB0aGUgY3BfcmVkdWNlIHBhcmFtZXRlci5cblxuIiwgY29tcG5vKTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSB8PSAweDgwMDA7LyogRklYTUUgSjJLX0RFQ19TVEFURV9FUlI7Ki8KKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgb3BqX3JlYWRfYnl0ZXMobF9jdXJyZW50X3B0ciwmbF90Y2NwLT5jYmxrdyAsMSk7ICAgICAgICAgICAgICAgIC8qIFNQY29jIChFKSAqLworICAgICAgICArK2xfY3VycmVudF9wdHI7CisgICAgICAgIGxfdGNjcC0+Y2Jsa3cgKz0gMjsKKworICAgICAgICBvcGpfcmVhZF9ieXRlcyhsX2N1cnJlbnRfcHRyLCZsX3RjY3AtPmNibGtoICwxKTsgICAgICAgICAgICAgICAgLyogU1Bjb2MgKEYpICovCisgICAgICAgICsrbF9jdXJyZW50X3B0cjsKKyAgICAgICAgbF90Y2NwLT5jYmxraCArPSAyOworCisgICAgICAgIG9wal9yZWFkX2J5dGVzKGxfY3VycmVudF9wdHIsJmxfdGNjcC0+Y2Jsa3N0eSAsMSk7ICAgICAgICAgICAgICAvKiBTUGNvYyAoRykgKi8KKyAgICAgICAgKytsX2N1cnJlbnRfcHRyOworCisgICAgICAgIG9wal9yZWFkX2J5dGVzKGxfY3VycmVudF9wdHIsJmxfdGNjcC0+cW1mYmlkICwxKTsgICAgICAgICAgICAgICAvKiBTUGNvYyAoSCkgKi8KKyAgICAgICAgKytsX2N1cnJlbnRfcHRyOworCisgICAgICAgICpwX2hlYWRlcl9zaXplID0gKnBfaGVhZGVyX3NpemUgLSA1OworCisgICAgICAgIC8qIHVzZSBjdXN0b20gcHJlY2luY3Qgc2l6ZSA/ICovCisgICAgICAgIGlmIChsX3RjY3AtPmNzdHkgJiBKMktfQ0NQX0NTVFlfUFJUKSB7CisgICAgICAgICAgICAgICAgaWYgKCpwX2hlYWRlcl9zaXplIDwgbF90Y2NwLT5udW1yZXNvbHV0aW9ucykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudFxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciAgICAgKGkgPSAwOyBpIDwgbF90Y2NwLT5udW1yZXNvbHV0aW9uczsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhsX2N1cnJlbnRfcHRyLCZsX3RtcCAsMSk7ICAgICAgICAgICAgICAgIC8qIFNQY29jIChJX2kpICovCisgICAgICAgICAgICAgICAgICAgICAgICArK2xfY3VycmVudF9wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3RjY3AtPnByY3dbaV0gPSBsX3RtcCAmIDB4ZjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGNjcC0+cHJjaFtpXSA9IGxfdG1wID4+IDQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKnBfaGVhZGVyX3NpemUgPSAqcF9oZWFkZXJfc2l6ZSAtIGxfdGNjcC0+bnVtcmVzb2x1dGlvbnM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogc2V0IGRlZmF1bHQgc2l6ZSBmb3IgdGhlIHByZWNpbmN0IHdpZHRoIGFuZCBoZWlnaHQgKi8KKyAgICAgICAgICAgICAgICBmb3IgICAgIChpID0gMDsgaSA8IGxfdGNjcC0+bnVtcmVzb2x1dGlvbnM7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbF90Y2NwLT5wcmN3W2ldID0gMTU7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3RjY3AtPnByY2hbaV0gPSAxNTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworI2lmZGVmIFdJUF9SRU1PVkVfTVNECisgICAgICAgIC8qIElOREVYID4+ICovCisgICAgICAgIGlmIChwX2oyay0+Y3N0cl9pbmZvICYmIGNvbXBubyA9PSAwKSB7CisgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBsX2RhdGFfc2l6ZSA9IGxfdGNjcC0+bnVtcmVzb2x1dGlvbnMgKiBzaXplb2YoT1BKX1VJTlQzMik7CisKKyAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT50aWxlW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnRjY3BfaW5mb1tjb21wbm9dLmNibGtoID0gbF90Y2NwLT5jYmxraDsKKyAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT50aWxlW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnRjY3BfaW5mb1tjb21wbm9dLmNibGt3ID0gbF90Y2NwLT5jYmxrdzsKKyAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT50aWxlW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnRjY3BfaW5mb1tjb21wbm9dLm51bXJlc29sdXRpb25zID0gbF90Y2NwLT5udW1yZXNvbHV0aW9uczsKKyAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmZvLT50aWxlW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnRjY3BfaW5mb1tjb21wbm9dLmNibGtzdHkgPSBsX3RjY3AtPmNibGtzdHk7CisgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5mby0+dGlsZVtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS50Y2NwX2luZm9bY29tcG5vXS5xbWZiaWQgPSBsX3RjY3AtPnFtZmJpZDsKKworICAgICAgICAgICAgICAgIG1lbWNweShwX2oyay0+Y3N0cl9pbmZvLT50aWxlW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdLnBkeCxsX3RjY3AtPnByY3csIGxfZGF0YV9zaXplKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkocF9qMmstPmNzdHJfaW5mby0+dGlsZVtwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyXS5wZHksbF90Y2NwLT5wcmNoLCBsX2RhdGFfc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgLyogPDwgSU5ERVggKi8KKyNlbmRpZgorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKwordm9pZCBvcGpfajJrX2NvcHlfdGlsZV9jb21wb25lbnRfcGFyYW1ldGVycyggb3BqX2oya190ICpwX2oyayApCit7CisgICAgICAgIC8qIGxvb3AgKi8KKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBvcGpfY3BfdCAqbF9jcCA9IE5VTEw7CisgICAgICAgIG9wal90Y3BfdCAqbF90Y3AgPSBOVUxMOworICAgICAgICBvcGpfdGNjcF90ICpsX3JlZl90Y2NwID0gTlVMTCwgKmxfY29waWVkX3RjY3AgPSBOVUxMOworICAgICAgICBPUEpfVUlOVDMyIGxfcHJjX3NpemU7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworCisgICAgICAgIGxfY3AgPSAmKHBfajJrLT5tX2NwKTsKKyAgICAgICAgbF90Y3AgPSAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPT0gSjJLX1NUQVRFX1RQSCkgPyAvKiBGSVhNRSBKMktfREVDX1NUQVRFX1RQSCovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX2NwLT50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3A7CisKKyAgICAgICAgbF9yZWZfdGNjcCA9ICZsX3RjcC0+dGNjcHNbMF07CisgICAgICAgIGxfY29waWVkX3RjY3AgPSBsX3JlZl90Y2NwICsgMTsKKyAgICAgICAgbF9wcmNfc2l6ZSA9IGxfcmVmX3RjY3AtPm51bXJlc29sdXRpb25zICogKE9QSl9VSU5UMzIpc2l6ZW9mKE9QSl9VSU5UMzIpOworCisgICAgICAgIGZvciAgICAgKGk9MTsgaTxwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wczsgKytpKSB7CisgICAgICAgICAgICAgICAgbF9jb3BpZWRfdGNjcC0+bnVtcmVzb2x1dGlvbnMgPSBsX3JlZl90Y2NwLT5udW1yZXNvbHV0aW9uczsKKyAgICAgICAgICAgICAgICBsX2NvcGllZF90Y2NwLT5jYmxrdyA9IGxfcmVmX3RjY3AtPmNibGt3OworICAgICAgICAgICAgICAgIGxfY29waWVkX3RjY3AtPmNibGtoID0gbF9yZWZfdGNjcC0+Y2Jsa2g7CisgICAgICAgICAgICAgICAgbF9jb3BpZWRfdGNjcC0+Y2Jsa3N0eSA9IGxfcmVmX3RjY3AtPmNibGtzdHk7CisgICAgICAgICAgICAgICAgbF9jb3BpZWRfdGNjcC0+cW1mYmlkID0gbF9yZWZfdGNjcC0+cW1mYmlkOworICAgICAgICAgICAgICAgIG1lbWNweShsX2NvcGllZF90Y2NwLT5wcmN3LGxfcmVmX3RjY3AtPnByY3csbF9wcmNfc2l6ZSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KGxfY29waWVkX3RjY3AtPnByY2gsbF9yZWZfdGNjcC0+cHJjaCxsX3ByY19zaXplKTsKKyAgICAgICAgICAgICAgICArK2xfY29waWVkX3RjY3A7CisgICAgICAgIH0KK30KKworT1BKX1VJTlQzMiBvcGpfajJrX2dldF9TUWNkX1NRY2Nfc2l6ZSAoIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9jb21wX25vICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBsX251bV9iYW5kczsKKworICAgICAgICBvcGpfY3BfdCAqbF9jcCA9IDAwOworICAgICAgICBvcGpfdGNwX3QgKmxfdGNwID0gMDA7CisgICAgICAgIG9wal90Y2NwX3QgKmxfdGNjcCA9IDAwOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKworICAgICAgICBsX2NwID0gJihwX2oyay0+bV9jcCk7CisgICAgICAgIGxfdGNwID0gJmxfY3AtPnRjcHNbcF90aWxlX25vXTsKKyAgICAgICAgbF90Y2NwID0gJmxfdGNwLT50Y2Nwc1twX2NvbXBfbm9dOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgYWdhaW4gKi8KKyAgICAgICAgYXNzZXJ0KHBfdGlsZV9ubyA8IGxfY3AtPnR3ICogbF9jcC0+dGgpOworICAgICAgICBhc3NlcnQocF9jb21wX25vIDwgcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHMpOworCisgICAgICAgIGxfbnVtX2JhbmRzID0gKGxfdGNjcC0+cW50c3R5ID09IEoyS19DQ1BfUU5UU1RZX1NJUU5UKSA/IDEgOiAobF90Y2NwLT5udW1yZXNvbHV0aW9ucyAqIDMgLSAyKTsKKworICAgICAgICBpZiAobF90Y2NwLT5xbnRzdHkgPT0gSjJLX0NDUF9RTlRTVFlfTk9RTlQpICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDEgKyBsX251bV9iYW5kczsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMSArIDIqbF9udW1fYmFuZHM7CisgICAgICAgIH0KK30KKworT1BKX0JPT0wgb3BqX2oya193cml0ZV9TUWNkX1NRY2MoICAgICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbXBfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIgKQoreworICAgICAgICBPUEpfVUlOVDMyIGxfaGVhZGVyX3NpemU7CisgICAgICAgIE9QSl9VSU5UMzIgbF9iYW5kX25vLCBsX251bV9iYW5kczsKKyAgICAgICAgT1BKX1VJTlQzMiBsX2V4cG4sbF9tYW50OworCisgICAgICAgIG9wal9jcF90ICpsX2NwID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqbF90Y3AgPSAwMDsKKyAgICAgICAgb3BqX3RjY3BfdCAqbF90Y2NwID0gMDA7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9oZWFkZXJfc2l6ZSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9kYXRhICE9IDAwKTsKKworICAgICAgICBsX2NwID0gJihwX2oyay0+bV9jcCk7CisgICAgICAgIGxfdGNwID0gJmxfY3AtPnRjcHNbcF90aWxlX25vXTsKKyAgICAgICAgbF90Y2NwID0gJmxfdGNwLT50Y2Nwc1twX2NvbXBfbm9dOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgYWdhaW4gKi8KKyAgICAgICAgYXNzZXJ0KHBfdGlsZV9ubyA8IGxfY3AtPnR3ICogbF9jcC0+dGgpOworICAgICAgICBhc3NlcnQocF9jb21wX25vIDxwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wcyk7CisKKyAgICAgICAgbF9udW1fYmFuZHMgPSAobF90Y2NwLT5xbnRzdHkgPT0gSjJLX0NDUF9RTlRTVFlfU0lRTlQpID8gMSA6IChsX3RjY3AtPm51bXJlc29sdXRpb25zICogMyAtIDIpOworCisgICAgICAgIGlmIChsX3RjY3AtPnFudHN0eSA9PSBKMktfQ0NQX1FOVFNUWV9OT1FOVCkgIHsKKyAgICAgICAgICAgICAgICBsX2hlYWRlcl9zaXplID0gMSArIGxfbnVtX2JhbmRzOworCisgICAgICAgICAgICAgICAgaWYgKCpwX2hlYWRlcl9zaXplIDwgbF9oZWFkZXJfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHdyaXRpbmcgU1FjZCBTUWNjIGVsZW1lbnRcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBvcGpfd3JpdGVfYnl0ZXMocF9kYXRhLGxfdGNjcC0+cW50c3R5ICsgKGxfdGNjcC0+bnVtZ2JpdHMgPDwgNSksIDEpOyAgICAvKiBTcWN4ICovCisgICAgICAgICAgICAgICAgKytwX2RhdGE7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxfYmFuZF9ubyA9IDA7IGxfYmFuZF9ubyA8IGxfbnVtX2JhbmRzOyArK2xfYmFuZF9ubykgeworICAgICAgICAgICAgICAgICAgICAgICAgbF9leHBuID0gKE9QSl9VSU5UMzIpbF90Y2NwLT5zdGVwc2l6ZXNbbF9iYW5kX25vXS5leHBuOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKHBfZGF0YSwgbF9leHBuIDw8IDMsIDEpOyAgICAgICAgLyogU1BxY3hfaSAqLworICAgICAgICAgICAgICAgICAgICAgICAgKytwX2RhdGE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxfaGVhZGVyX3NpemUgPSAxICsgMipsX251bV9iYW5kczsKKworICAgICAgICAgICAgICAgIGlmICgqcF9oZWFkZXJfc2l6ZSA8IGxfaGVhZGVyX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciB3cml0aW5nIFNRY2QgU1FjYyBlbGVtZW50XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKHBfZGF0YSxsX3RjY3AtPnFudHN0eSArIChsX3RjY3AtPm51bWdiaXRzIDw8IDUpLCAxKTsgICAgLyogU3FjeCAqLworICAgICAgICAgICAgICAgICsrcF9kYXRhOworCisgICAgICAgICAgICAgICAgZm9yIChsX2JhbmRfbm8gPSAwOyBsX2JhbmRfbm8gPCBsX251bV9iYW5kczsgKytsX2JhbmRfbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfZXhwbiA9IChPUEpfVUlOVDMyKWxfdGNjcC0+c3RlcHNpemVzW2xfYmFuZF9ub10uZXhwbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWFudCA9IChPUEpfVUlOVDMyKWxfdGNjcC0+c3RlcHNpemVzW2xfYmFuZF9ub10ubWFudDsKKworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKHBfZGF0YSwgKGxfZXhwbiA8PCAxMSkgKyBsX21hbnQsIDIpOyAgICAvKiBTUHFjeF9pICovCisgICAgICAgICAgICAgICAgICAgICAgICBwX2RhdGEgKz0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAqcF9oZWFkZXJfc2l6ZSA9ICpwX2hlYWRlcl9zaXplIC0gbF9oZWFkZXJfc2l6ZTsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfcmVhZF9TUWNkX1NRY2Mob3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9jb21wX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICAvKiBsb29wKi8KKyAgICAgICAgT1BKX1VJTlQzMiBsX2JhbmRfbm87CisgICAgICAgIG9wal9jcF90ICpsX2NwID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqbF90Y3AgPSAwMDsKKyAgICAgICAgb3BqX3RjY3BfdCAqbF90Y2NwID0gMDA7CisgICAgICAgIE9QSl9CWVRFICogbF9jdXJyZW50X3B0ciA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfdG1wLCBsX251bV9iYW5kOworCisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworICAgICAgICBhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfaGVhZGVyX2RhdGEgIT0gMDApOworCisgICAgICAgIGxfY3AgPSAmKHBfajJrLT5tX2NwKTsKKyAgICAgICAgLyogY29tZSBmcm9tIHRpbGUgcGFydCBoZWFkZXIgb3IgbWFpbiBoZWFkZXIgPyovCisgICAgICAgIGxfdGNwID0gKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3N0YXRlID09IEoyS19TVEFURV9UUEgpID8gLypGSVhNRSBKMktfREVDX1NUQVRFX1RQSCovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX2NwLT50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3A7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9uIGFnYWluKi8KKyAgICAgICAgYXNzZXJ0KHBfY29tcF9ubyA8ICBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wcyk7CisKKyAgICAgICAgbF90Y2NwID0gJmxfdGNwLT50Y2Nwc1twX2NvbXBfbm9dOworICAgICAgICBsX2N1cnJlbnRfcHRyID0gcF9oZWFkZXJfZGF0YTsKKworICAgICAgICBpZiAoKnBfaGVhZGVyX3NpemUgPCAxKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHJlYWRpbmcgU1FjZCBvciBTUWNjIGVsZW1lbnRcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgKnBfaGVhZGVyX3NpemUgLT0gMTsKKworICAgICAgICBvcGpfcmVhZF9ieXRlcyhsX2N1cnJlbnRfcHRyLCAmbF90bXAgLDEpOyAgICAgICAgICAgICAgICAgICAgICAgLyogU3FjeCAqLworICAgICAgICArK2xfY3VycmVudF9wdHI7CisKKyAgICAgICAgbF90Y2NwLT5xbnRzdHkgPSBsX3RtcCAmIDB4MWY7CisgICAgICAgIGxfdGNjcC0+bnVtZ2JpdHMgPSBsX3RtcCA+PiA1OworICAgICAgICBpZiAobF90Y2NwLT5xbnRzdHkgPT0gSjJLX0NDUF9RTlRTVFlfU0lRTlQpIHsKKyAgICAgICAgbF9udW1fYmFuZCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbF9udW1fYmFuZCA9IChsX3RjY3AtPnFudHN0eSA9PSBKMktfQ0NQX1FOVFNUWV9OT1FOVCkgPworICAgICAgICAgICAgICAgICAgICAgICAgKCpwX2hlYWRlcl9zaXplKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAoKnBfaGVhZGVyX3NpemUpIC8gMjsKKworICAgICAgICAgICAgICAgIGlmKCBsX251bV9iYW5kID4gT1BKX0oyS19NQVhCQU5EUyApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIldoaWxlIHJlYWRpbmcgQ0NQX1FOVFNUWSBlbGVtZW50IGluc2lkZSBRQ0Qgb3IgUUNDIG1hcmtlciBzZWdtZW50LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJudW1iZXIgb2Ygc3ViYmFuZHMgKCVkKSBpcyBncmVhdGVyIHRvIE9QSl9KMktfTUFYQkFORFMgKCVkKS4gU28gd2UgbGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgdG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT1BKX0oyS19NQVhCQU5EUyAoJWQpIGFuZCBza2lwIHRoZSByZXN0LiBcbiIsIGxfbnVtX2JhbmQsIE9QSl9KMktfTUFYQkFORFMsIE9QSl9KMktfTUFYQkFORFMpOworICAgICAgICAgICAgICAgICAgICAgICAgLypyZXR1cm4gT1BKX0ZBTFNFOyovCisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyNpZmRlZiBVU0VfSlBXTAorICAgICAgICBpZiAobF9jcC0+Y29ycmVjdCkgeworCisgICAgICAgICAgICAgICAgLyogaWYgSlBXTCBpcyBvbiwgd2UgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgdG9vIG1hbnkgc3ViYmFuZHMgKi8KKyAgICAgICAgICAgICAgICBpZiAoLyoobF9udW1fYmFuZCA8IDApIHx8Ki8gKGxfbnVtX2JhbmQgPj0gT1BKX0oyS19NQVhCQU5EUykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBKUFdMX0FTU1VNRSA/IEVWVF9XQVJOSU5HIDogRVZUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSlBXTDogYmFkIG51bWJlciBvZiBzdWJiYW5kcyBpbiBTcWN4ICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfbnVtX2JhbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFKUFdMX0FTU1VNRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSlBXTDogZ2l2aW5nIHVwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdlIHRyeSB0byBjb3JyZWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBsX251bV9iYW5kID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIi0gdHJ5aW5nIHRvIGFkanVzdCB0aGVtXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItIHNldHRpbmcgbnVtYmVyIG9mIGJhbmRzIHRvICVkID0+IEhZUE9USEVTSVMhISFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfbnVtX2JhbmQpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgfTsKKyNlbmRpZiAvKiBVU0VfSlBXTCAqLworCisgICAgICAgIGlmIChsX3RjY3AtPnFudHN0eSA9PSBKMktfQ0NQX1FOVFNUWV9OT1FOVCkgeworICAgICAgICAgICAgICAgIGZvciAgICAgKGxfYmFuZF9ubyA9IDA7IGxfYmFuZF9ubyA8IGxfbnVtX2JhbmQ7IGxfYmFuZF9ubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcmVhZF9ieXRlcyhsX2N1cnJlbnRfcHRyLCAmbF90bXAgLDEpOyAgICAgICAgICAgICAgICAgICAgICAgLyogU1BxY3hfaSAqLworICAgICAgICAgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfcHRyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfYmFuZF9ubyA8IE9QSl9KMktfTUFYQkFORFMpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RjY3AtPnN0ZXBzaXplc1tsX2JhbmRfbm9dLmV4cG4gPSAoT1BKX0lOVDMyKShsX3RtcCA+PiAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF90Y2NwLT5zdGVwc2l6ZXNbbF9iYW5kX25vXS5tYW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKnBfaGVhZGVyX3NpemUgPSAqcF9oZWFkZXJfc2l6ZSAtIGxfbnVtX2JhbmQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yICAgICAobF9iYW5kX25vID0gMDsgbF9iYW5kX25vIDwgbF9udW1fYmFuZDsgbF9iYW5kX25vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9yZWFkX2J5dGVzKGxfY3VycmVudF9wdHIsICZsX3RtcCAsMik7ICAgICAgICAgICAgICAgICAgICAgICAvKiBTUHFjeF9pICovCisgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHRyKz0yOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfYmFuZF9ubyA8IE9QSl9KMktfTUFYQkFORFMpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RjY3AtPnN0ZXBzaXplc1tsX2JhbmRfbm9dLmV4cG4gPSAoT1BKX0lOVDMyKShsX3RtcCA+PiAxMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfdGNjcC0+c3RlcHNpemVzW2xfYmFuZF9ub10ubWFudCA9IGxfdG1wICYgMHg3ZmY7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpwX2hlYWRlcl9zaXplID0gKnBfaGVhZGVyX3NpemUgLSAyKmxfbnVtX2JhbmQ7CisgICAgICAgIH0KKworICAgICAgICAvKiBBZGQgQW50b25pbiA6IGlmIHNjYWxhcl9kZXJpdmVkIC0+IGNvbXB1dGUgb3RoZXIgc3RlcHNpemVzICovCisgICAgICAgIGlmIChsX3RjY3AtPnFudHN0eSA9PSBKMktfQ0NQX1FOVFNUWV9TSVFOVCkgeworICAgICAgICAgICAgICAgIGZvciAobF9iYW5kX25vID0gMTsgbF9iYW5kX25vIDwgT1BKX0oyS19NQVhCQU5EUzsgbF9iYW5kX25vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGNjcC0+c3RlcHNpemVzW2xfYmFuZF9ub10uZXhwbiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoT1BKX0lOVDMyKShsX3RjY3AtPnN0ZXBzaXplc1swXS5leHBuKSAtIChPUEpfSU5UMzIpKChsX2JhbmRfbm8gLSAxKSAvIDMpID4gMCkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPUEpfSU5UMzIpKGxfdGNjcC0+c3RlcHNpemVzWzBdLmV4cG4pIC0gKE9QSl9JTlQzMikoKGxfYmFuZF9ubyAtIDEpIC8gMykgOiAwOworICAgICAgICAgICAgICAgICAgICAgICAgbF90Y2NwLT5zdGVwc2l6ZXNbbF9iYW5kX25vXS5tYW50ID0gbF90Y2NwLT5zdGVwc2l6ZXNbMF0ubWFudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK3ZvaWQgb3BqX2oya19jb3B5X3RpbGVfcXVhbnRpemF0aW9uX3BhcmFtZXRlcnMoIG9wal9qMmtfdCAqcF9qMmsgKQoreworICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgIG9wal9jcF90ICpsX2NwID0gTlVMTDsKKyAgICAgICAgb3BqX3RjcF90ICpsX3RjcCA9IE5VTEw7CisgICAgICAgIG9wal90Y2NwX3QgKmxfcmVmX3RjY3AgPSBOVUxMOworICAgICAgICBvcGpfdGNjcF90ICpsX2NvcGllZF90Y2NwID0gTlVMTDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3NpemU7CisKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworCisgICAgICAgIGxfY3AgPSAmKHBfajJrLT5tX2NwKTsKKyAgICAgICAgbF90Y3AgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zdGF0ZSA9PSBKMktfU1RBVEVfVFBIID8KKyAgICAgICAgICAgICAgICAgICAgICAgICZsX2NwLT50Y3BzW3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXJdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX2RlZmF1bHRfdGNwOworCisgICAgICAgIGxfcmVmX3RjY3AgPSAmbF90Y3AtPnRjY3BzWzBdOworICAgICAgICBsX2NvcGllZF90Y2NwID0gbF9yZWZfdGNjcCArIDE7CisgICAgICAgIGxfc2l6ZSA9IE9QSl9KMktfTUFYQkFORFMgKiBzaXplb2Yob3BqX3N0ZXBzaXplX3QpOworCisgICAgICAgIGZvciAgICAgKGk9MTtpPHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzOysraSkgeworICAgICAgICAgICAgICAgIGxfY29waWVkX3RjY3AtPnFudHN0eSA9IGxfcmVmX3RjY3AtPnFudHN0eTsKKyAgICAgICAgICAgICAgICBsX2NvcGllZF90Y2NwLT5udW1nYml0cyA9IGxfcmVmX3RjY3AtPm51bWdiaXRzOworICAgICAgICAgICAgICAgIG1lbWNweShsX2NvcGllZF90Y2NwLT5zdGVwc2l6ZXMsbF9yZWZfdGNjcC0+c3RlcHNpemVzLGxfc2l6ZSk7CisgICAgICAgICAgICAgICAgKytsX2NvcGllZF90Y2NwOworICAgICAgICB9Cit9CisKK3N0YXRpYyB2b2lkIG9wal9qMmtfZHVtcF90aWxlX2luZm8oIG9wal90Y3BfdCAqIGxfZGVmYXVsdF90aWxlLE9QSl9JTlQzMiBudW1jb21wcyxGSUxFKiBvdXRfc3RyZWFtKQoreworICAgICAgICBpZiAobF9kZWZhdWx0X3RpbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgY29tcG5vOworCisgICAgICAgICAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiXHQgZGVmYXVsdCB0aWxlIHtcbiIpOworICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0XHQgY3N0eT0lI3hcbiIsIGxfZGVmYXVsdF90aWxlLT5jc3R5KTsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcdFx0IHByZz0lI3hcbiIsIGxfZGVmYXVsdF90aWxlLT5wcmcpOworICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0XHQgbnVtbGF5ZXJzPSVkXG4iLCBsX2RlZmF1bHRfdGlsZS0+bnVtbGF5ZXJzKTsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcdFx0IG1jdD0leFxuIiwgbF9kZWZhdWx0X3RpbGUtPm1jdCk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGNvbXBubyA9IDA7IGNvbXBubyA8IG51bWNvbXBzOyBjb21wbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjY3BfdCAqbF90Y2NwID0gJihsX2RlZmF1bHRfdGlsZS0+dGNjcHNbY29tcG5vXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHJlc25vOworICAgICAgT1BKX0lOVDMyIGJhbmRubywgbnVtYmFuZHM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGluZyBzdHlsZSovCisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcdFx0IGNvbXAgJWQge1xuIiwgY29tcG5vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0XHRcdCBjc3R5PSUjeFxuIiwgbF90Y2NwLT5jc3R5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0XHRcdCBudW1yZXNvbHV0aW9ucz0lZFxuIiwgbF90Y2NwLT5udW1yZXNvbHV0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcdFx0XHQgY2Jsa3c9Ml4lZFxuIiwgbF90Y2NwLT5jYmxrdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcdFx0XHQgY2Jsa2g9Ml4lZFxuIiwgbF90Y2NwLT5jYmxraCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcdFx0XHQgY2Jsa3N0eT0lI3hcbiIsIGxfdGNjcC0+Y2Jsa3N0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcdFx0XHQgcW1mYmlkPSVkXG4iLCBsX3RjY3AtPnFtZmJpZCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0XHRcdCBwcmVjY2ludHNpemUgKHcsaCk9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHJlc25vID0gMDsgcmVzbm8gPCBsX3RjY3AtPm51bXJlc29sdXRpb25zOyByZXNubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIiglZCwlZCkgIiwgbF90Y2NwLT5wcmN3W3Jlc25vXSwgbF90Y2NwLT5wcmNoW3Jlc25vXSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcbiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBxdWFudGl6YXRpb24gc3R5bGUqLworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiXHRcdFx0IHFudHN0eT0lZFxuIiwgbF90Y2NwLT5xbnRzdHkpOworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiXHRcdFx0IG51bWdiaXRzPSVkXG4iLCBsX3RjY3AtPm51bWdiaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0XHRcdCBzdGVwc2l6ZXMgKG0sZSk9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBudW1iYW5kcyA9IChsX3RjY3AtPnFudHN0eSA9PSBKMktfQ0NQX1FOVFNUWV9TSVFOVCkgPyAxIDogKE9QSl9JTlQzMilsX3RjY3AtPm51bXJlc29sdXRpb25zICogMyAtIDI7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGJhbmRubyA9IDA7IGJhbmRubyA8IG51bWJhbmRzOyBiYW5kbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICIoJWQsJWQpICIsIGxfdGNjcC0+c3RlcHNpemVzW2JhbmRub10ubWFudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RjY3AtPnN0ZXBzaXplc1tiYW5kbm9dLmV4cG4pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiXG4iKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogUkdOIHZhbHVlKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0XHRcdCByb2lzaGlmdD0lZFxuIiwgbF90Y2NwLT5yb2lzaGlmdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0XHQgfVxuIik7CisgICAgICAgICAgICAgICAgfSAvKmVuZCBvZiBjb21wb25lbnQgb2YgZGVmYXVsdCB0aWxlKi8KKyAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcdCB9XG4iKTsgLyplbmQgb2YgZGVmYXVsdCB0aWxlKi8KKyAgICAgICAgICAgIH0KK30KKwordm9pZCBqMmtfZHVtcCAob3BqX2oya190KiBwX2oyaywgT1BKX0lOVDMyIGZsYWcsIEZJTEUqIG91dF9zdHJlYW0pCit7CisgICAgICAgIC8qIENoZWNrIGlmIHRoZSBmbGFnIGlzIGNvbXBhdGlibGUgd2l0aCBqMmsgZmlsZSovCisgICAgICAgIGlmICggKGZsYWcgJiBPUEpfSlAyX0lORk8pIHx8IChmbGFnICYgT1BKX0pQMl9JTkQpKXsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJXcm9uZyBmbGFnXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKiBEdW1wIHRoZSBpbWFnZV9oZWFkZXIgKi8KKyAgICAgICAgaWYgKGZsYWcgJiBPUEpfSU1HX0lORk8peworICAgICAgICAgICAgICAgIGlmIChwX2oyay0+bV9wcml2YXRlX2ltYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgajJrX2R1bXBfaW1hZ2VfaGVhZGVyKHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UsIDAsIG91dF9zdHJlYW0pOworICAgICAgICB9CisKKyAgICAgICAgLyogRHVtcCB0aGUgY29kZXN0cmVhbSBpbmZvIGZyb20gbWFpbiBoZWFkZXIgKi8KKyAgICAgICAgaWYgKGZsYWcgJiBPUEpfSjJLX01IX0lORk8peworICAgICAgICAgICAgICAgIG9wal9qMmtfZHVtcF9NSF9pbmZvKHBfajJrLCBvdXRfc3RyZWFtKTsKKyAgICAgICAgfQorICAgICAgICAvKiBEdW1wIGFsbCB0aWxlL2NvZGVzdHJlYW0gaW5mbyAqLworICAgICAgICBpZiAoZmxhZyAmIE9QSl9KMktfVENIX0lORk8peworICAgICAgICAgIE9QSl9VSU5UMzIgbF9uYl90aWxlcyA9IHBfajJrLT5tX2NwLnRoICogcF9qMmstPm1fY3AudHc7CisgICAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICAgIG9wal90Y3BfdCAqIGxfdGNwID0gcF9qMmstPm1fY3AudGNwczsKKyAgICAgICAgICBmb3IgKGk9MDtpPGxfbmJfdGlsZXM7KytpKSB7CisgICAgICAgICAgICBvcGpfajJrX2R1bXBfdGlsZV9pbmZvKCBsX3RjcCwoT1BKX0lOVDMyKXBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzLCBvdXRfc3RyZWFtKTsKKyAgICAgICAgICAgICsrbF90Y3A7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogRHVtcCB0aGUgY29kZXN0cmVhbSBpbmZvIG9mIHRoZSBjdXJyZW50IHRpbGUgKi8KKyAgICAgICAgaWYgKGZsYWcgJiBPUEpfSjJLX1RIX0lORk8peworCisgICAgICAgIH0KKworICAgICAgICAvKiBEdW1wIHRoZSBjb2Rlc3RyZWFtIGluZGV4IGZyb20gbWFpbiBoZWFkZXIgKi8KKyAgICAgICAgaWYgKGZsYWcgJiBPUEpfSjJLX01IX0lORCl7CisgICAgICAgICAgICAgICAgb3BqX2oya19kdW1wX01IX2luZGV4KHBfajJrLCBvdXRfc3RyZWFtKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIER1bXAgdGhlIGNvZGVzdHJlYW0gaW5kZXggb2YgdGhlIGN1cnJlbnQgdGlsZSAqLworICAgICAgICBpZiAoZmxhZyAmIE9QSl9KMktfVEhfSU5EKXsKKworICAgICAgICB9CisKK30KKwordm9pZCBvcGpfajJrX2R1bXBfTUhfaW5kZXgob3BqX2oya190KiBwX2oyaywgRklMRSogb3V0X3N0cmVhbSkKK3sKKyAgICAgICAgb3BqX2NvZGVzdHJlYW1faW5kZXhfdCogY3N0cl9pbmRleCA9IHBfajJrLT5jc3RyX2luZGV4OworICAgICAgICBPUEpfVUlOVDMyIGl0X21hcmtlciwgaXRfdGlsZSwgaXRfdGlsZV9wYXJ0OworCisgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIkNvZGVzdHJlYW0gaW5kZXggZnJvbSBtYWluIGhlYWRlcjoge1xuIik7CisKKyAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiXHQgTWFpbiBoZWFkZXIgc3RhcnQgcG9zaXRpb249JSIgUFJJaTY0ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdCBNYWluIGhlYWRlciBlbmQgcG9zaXRpb249JSIgUFJJaTY0ICJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBjc3RyX2luZGV4LT5tYWluX2hlYWRfc3RhcnQsIGNzdHJfaW5kZXgtPm1haW5faGVhZF9lbmQpOworCisgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0IE1hcmtlciBsaXN0OiB7XG4iKTsKKworICAgICAgICBpZiAoY3N0cl9pbmRleC0+bWFya2VyKXsKKyAgICAgICAgICAgICAgICBmb3IgKGl0X21hcmtlcj0wOyBpdF9tYXJrZXIgPCBjc3RyX2luZGV4LT5tYXJrbnVtIDsgaXRfbWFya2VyKyspeworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiXHRcdCB0eXBlPSUjeCwgcG9zPSUiIFBSSWk2NCAiLCBsZW49JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3N0cl9pbmRleC0+bWFya2VyW2l0X21hcmtlcl0udHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyX2luZGV4LT5tYXJrZXJbaXRfbWFya2VyXS5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3N0cl9pbmRleC0+bWFya2VyW2l0X21hcmtlcl0ubGVuICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiXHQgfVxuIik7CisKKyAgICAgICAgaWYgKGNzdHJfaW5kZXgtPnRpbGVfaW5kZXgpeworCisgICAgICAgIC8qIFNpbXBsZSB0ZXN0IHRvIGF2b2lkIHRvIHdyaXRlIGVtcHR5IGluZm9ybWF0aW9uKi8KKyAgICAgICAgT1BKX1VJTlQzMiBsX2FjY19uYl9vZl90aWxlX3BhcnQgPSAwOworICAgICAgICBmb3IgKGl0X3RpbGU9MDsgaXRfdGlsZSA8IGNzdHJfaW5kZXgtPm5iX29mX3RpbGVzIDsgaXRfdGlsZSsrKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfYWNjX25iX29mX3RpbGVfcGFydCArPSBjc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm5iX3RwczsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsX2FjY19uYl9vZl90aWxlX3BhcnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0IFRpbGUgaW5kZXg6IHtcbiIpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoaXRfdGlsZT0wOyBpdF90aWxlIDwgY3N0cl9pbmRleC0+bmJfb2ZfdGlsZXMgOyBpdF90aWxlKyspeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbmJfb2ZfdGlsZV9wYXJ0ID0gY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS5uYl90cHM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJcdFx0IG5iIG9mIHRpbGUtcGFydCBpbiB0aWxlIFslZF09JWRcbiIsIGl0X3RpbGUsIG5iX29mX3RpbGVfcGFydCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS50cF9pbmRleCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGl0X3RpbGVfcGFydCA9MDsgaXRfdGlsZV9wYXJ0IDwgbmJfb2ZfdGlsZV9wYXJ0OyBpdF90aWxlX3BhcnQrKyl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0XHRcdCB0aWxlLXBhcnRbJWRdOiBzdGFyX3Bvcz0lIiBQUklpNjQgIiwgZW5kX2hlYWRlcj0lIiBQUklpNjQgIiwgZW5kX3Bvcz0lIiBQUklpNjQgIi5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdF90aWxlX3BhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLnRwX2luZGV4W2l0X3RpbGVfcGFydF0uc3RhcnRfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS50cF9pbmRleFtpdF90aWxlX3BhcnRdLmVuZF9oZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLnRwX2luZGV4W2l0X3RpbGVfcGFydF0uZW5kX3Bvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbaXRfdGlsZV0ubWFya2VyKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaXRfbWFya2VyPTA7IGl0X21hcmtlciA8IGNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbaXRfdGlsZV0ubWFya251bSA7IGl0X21hcmtlcisrKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiXHRcdCB0eXBlPSUjeCwgcG9zPSUiIFBSSWk2NCAiLCBsZW49JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm1hcmtlcltpdF9tYXJrZXJdLnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm1hcmtlcltpdF9tYXJrZXJdLnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbaXRfdGlsZV0ubWFya2VyW2l0X21hcmtlcl0ubGVuICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwiXHQgfVxuIik7CisgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwifVxuIik7CisKK30KKworCit2b2lkIG9wal9qMmtfZHVtcF9NSF9pbmZvKG9wal9qMmtfdCogcF9qMmssIEZJTEUqIG91dF9zdHJlYW0pCit7CisKKyAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiQ29kZXN0cmVhbSBpbmZvIGZyb20gbWFpbiBoZWFkZXI6IHtcbiIpOworCisgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0IHR4MD0lZCwgdHkwPSVkXG4iLCBwX2oyay0+bV9jcC50eDAsIHBfajJrLT5tX2NwLnR5MCk7CisgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0IHRkeD0lZCwgdGR5PSVkXG4iLCBwX2oyay0+bV9jcC50ZHgsIHBfajJrLT5tX2NwLnRkeSk7CisgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIlx0IHR3PSVkLCB0aD0lZFxuIiwgcF9qMmstPm1fY3AudHcsIHBfajJrLT5tX2NwLnRoKTsKKyAgICAgICAgb3BqX2oya19kdW1wX3RpbGVfaW5mbyhwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcCwoT1BKX0lOVDMyKXBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPm51bWNvbXBzLCBvdXRfc3RyZWFtKTsKKyAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAifVxuIik7Cit9CisKK3ZvaWQgajJrX2R1bXBfaW1hZ2VfaGVhZGVyKG9wal9pbWFnZV90KiBpbWdfaGVhZGVyLCBPUEpfQk9PTCBkZXZfZHVtcF9mbGFnLCBGSUxFKiBvdXRfc3RyZWFtKQoreworICAgICAgICBjaGFyIHRhYlsyXTsKKworICAgICAgICBpZiAoZGV2X2R1bXBfZmxhZyl7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJbREVWXSBEdW1wIGFuIGltYWdlX2hlYWRlciBzdHJ1Y3Qge1xuIik7CisgICAgICAgICAgICAgICAgdGFiWzBdID0gJ1wwJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICJJbWFnZSBpbmZvIHtcbiIpOworICAgICAgICAgICAgICAgIHRhYlswXSA9ICdcdCc7dGFiWzFdID0gJ1wwJzsKKyAgICAgICAgfQorCisgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIiVzIHgwPSVkLCB5MD0lZFxuIiwgdGFiLCBpbWdfaGVhZGVyLT54MCwgaW1nX2hlYWRlci0+eTApOworICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICAgICAiJXMgeDE9JWQsIHkxPSVkXG4iLCB0YWIsIGltZ19oZWFkZXItPngxLCBpbWdfaGVhZGVyLT55MSk7CisgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwgIiVzIG51bWNvbXBzPSVkXG4iLCB0YWIsIGltZ19oZWFkZXItPm51bWNvbXBzKTsKKworICAgICAgICBpZiAoaW1nX2hlYWRlci0+Y29tcHMpeworICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vOworICAgICAgICAgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgaW1nX2hlYWRlci0+bnVtY29tcHM7IGNvbXBubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICIlc1x0IGNvbXBvbmVudCAlZCB7XG4iLCB0YWIsIGNvbXBubyk7CisgICAgICAgICAgICAgICAgICAgICAgICBqMmtfZHVtcF9pbWFnZV9jb21wX2hlYWRlcigmKGltZ19oZWFkZXItPmNvbXBzW2NvbXBub10pLCBkZXZfZHVtcF9mbGFnLCBvdXRfc3RyZWFtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0X3N0cmVhbSwiJXN9XG4iLHRhYik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAifVxuIik7Cit9CisKK3ZvaWQgajJrX2R1bXBfaW1hZ2VfY29tcF9oZWFkZXIob3BqX2ltYWdlX2NvbXBfdCogY29tcF9oZWFkZXIsIE9QSl9CT09MIGRldl9kdW1wX2ZsYWcsIEZJTEUqIG91dF9zdHJlYW0pCit7CisgICAgICAgIGNoYXIgdGFiWzNdOworCisgICAgICAgIGlmIChkZXZfZHVtcF9mbGFnKXsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIltERVZdIER1bXAgYW4gaW1hZ2VfY29tcF9oZWFkZXIgc3RydWN0IHtcbiIpOworICAgICAgICAgICAgICAgIHRhYlswXSA9ICdcMCc7CisgICAgICAgIH0gICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGFiWzBdID0gJ1x0Jzt0YWJbMV0gPSAnXHQnO3RhYlsyXSA9ICdcMCc7CisgICAgICAgIH0KKworICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICIlcyBkeD0lZCwgZHk9JWRcbiIsIHRhYiwgY29tcF9oZWFkZXItPmR4LCBjb21wX2hlYWRlci0+ZHkpOworICAgICAgICBmcHJpbnRmKG91dF9zdHJlYW0sICIlcyBwcmVjPSVkXG4iLCB0YWIsIGNvbXBfaGVhZGVyLT5wcmVjKTsKKyAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAiJXMgc2duZD0lZFxuIiwgdGFiLCBjb21wX2hlYWRlci0+c2duZCk7CisKKyAgICAgICAgaWYgKGRldl9kdW1wX2ZsYWcpCisgICAgICAgICAgICAgICAgZnByaW50ZihvdXRfc3RyZWFtLCAifVxuIik7Cit9CisKK29wal9jb2Rlc3RyZWFtX2luZm9fdjJfdCogajJrX2dldF9jc3RyX2luZm8ob3BqX2oya190KiBwX2oyaykKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBjb21wbm87CisgICAgICAgIE9QSl9VSU5UMzIgbnVtY29tcHMgPSBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wczsKKyAgICAgICAgb3BqX3RjcF90ICpsX2RlZmF1bHRfdGlsZTsKKyAgICAgICAgb3BqX2NvZGVzdHJlYW1faW5mb192Ml90KiBjc3RyX2luZm8gPSAob3BqX2NvZGVzdHJlYW1faW5mb192Ml90Kikgb3BqX2NhbGxvYygxLHNpemVvZihvcGpfY29kZXN0cmVhbV9pbmZvX3YyX3QpKTsKKwkJaWYgKCFjc3RyX2luZm8pCisJCQlyZXR1cm4gTlVMTDsKKworICAgICAgICBjc3RyX2luZm8tPm5iY29tcHMgPSBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wczsKKworICAgICAgICBjc3RyX2luZm8tPnR4MCA9IHBfajJrLT5tX2NwLnR4MDsKKyAgICAgICAgY3N0cl9pbmZvLT50eTAgPSBwX2oyay0+bV9jcC50eTA7CisgICAgICAgIGNzdHJfaW5mby0+dGR4ID0gcF9qMmstPm1fY3AudGR4OworICAgICAgICBjc3RyX2luZm8tPnRkeSA9IHBfajJrLT5tX2NwLnRkeTsKKyAgICAgICAgY3N0cl9pbmZvLT50dyA9IHBfajJrLT5tX2NwLnR3OworICAgICAgICBjc3RyX2luZm8tPnRoID0gcF9qMmstPm1fY3AudGg7CisKKyAgICAgICAgY3N0cl9pbmZvLT50aWxlX2luZm8gPSBOVUxMOyAvKiBOb3QgZmlsbCBmcm9tIHRoZSBtYWluIGhlYWRlciovCisKKyAgICAgICAgbF9kZWZhdWx0X3RpbGUgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcDsKKworICAgICAgICBjc3RyX2luZm8tPm1fZGVmYXVsdF90aWxlX2luZm8uY3N0eSA9IGxfZGVmYXVsdF90aWxlLT5jc3R5OworICAgICAgICBjc3RyX2luZm8tPm1fZGVmYXVsdF90aWxlX2luZm8ucHJnID0gbF9kZWZhdWx0X3RpbGUtPnByZzsKKyAgICAgICAgY3N0cl9pbmZvLT5tX2RlZmF1bHRfdGlsZV9pbmZvLm51bWxheWVycyA9IGxfZGVmYXVsdF90aWxlLT5udW1sYXllcnM7CisgICAgICAgIGNzdHJfaW5mby0+bV9kZWZhdWx0X3RpbGVfaW5mby5tY3QgPSBsX2RlZmF1bHRfdGlsZS0+bWN0OworCisgICAgICAgIGNzdHJfaW5mby0+bV9kZWZhdWx0X3RpbGVfaW5mby50Y2NwX2luZm8gPSAob3BqX3RjY3BfaW5mb190Kikgb3BqX2NhbGxvYyhjc3RyX2luZm8tPm5iY29tcHMsIHNpemVvZihvcGpfdGNjcF9pbmZvX3QpKTsKKwkJaWYgKCFjc3RyX2luZm8tPm1fZGVmYXVsdF90aWxlX2luZm8udGNjcF9pbmZvKQorCQl7CisJCQlvcGpfZGVzdHJveV9jc3RyX2luZm8oJmNzdHJfaW5mbyk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCisgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgbnVtY29tcHM7IGNvbXBubysrKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjY3BfdCAqbF90Y2NwID0gJihsX2RlZmF1bHRfdGlsZS0+dGNjcHNbY29tcG5vXSk7CisgICAgICAgICAgICAgICAgb3BqX3RjY3BfaW5mb190ICpsX3RjY3BfaW5mbyA9ICYoY3N0cl9pbmZvLT5tX2RlZmF1bHRfdGlsZV9pbmZvLnRjY3BfaW5mb1tjb21wbm9dKTsKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYmFuZG5vLCBudW1iYW5kczsKKworICAgICAgICAgICAgICAgIC8qIGNvZGluZyBzdHlsZSovCisgICAgICAgICAgICAgICAgbF90Y2NwX2luZm8tPmNzdHkgPSBsX3RjY3AtPmNzdHk7CisgICAgICAgICAgICAgICAgbF90Y2NwX2luZm8tPm51bXJlc29sdXRpb25zID0gbF90Y2NwLT5udW1yZXNvbHV0aW9uczsKKyAgICAgICAgICAgICAgICBsX3RjY3BfaW5mby0+Y2Jsa3cgPSBsX3RjY3AtPmNibGt3OworICAgICAgICAgICAgICAgIGxfdGNjcF9pbmZvLT5jYmxraCA9IGxfdGNjcC0+Y2Jsa2g7CisgICAgICAgICAgICAgICAgbF90Y2NwX2luZm8tPmNibGtzdHkgPSBsX3RjY3AtPmNibGtzdHk7CisgICAgICAgICAgICAgICAgbF90Y2NwX2luZm8tPnFtZmJpZCA9IGxfdGNjcC0+cW1mYmlkOworICAgICAgICAgICAgICAgIGlmIChsX3RjY3AtPm51bXJlc29sdXRpb25zIDwgT1BKX0oyS19NQVhSTFZMUykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkobF90Y2NwX2luZm8tPnByY2gsIGxfdGNjcC0+cHJjaCwgbF90Y2NwLT5udW1yZXNvbHV0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkobF90Y2NwX2luZm8tPnByY3csIGxfdGNjcC0+cHJjdywgbF90Y2NwLT5udW1yZXNvbHV0aW9ucyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogcXVhbnRpemF0aW9uIHN0eWxlKi8KKyAgICAgICAgICAgICAgICBsX3RjY3BfaW5mby0+cW50c3R5ID0gbF90Y2NwLT5xbnRzdHk7CisgICAgICAgICAgICAgICAgbF90Y2NwX2luZm8tPm51bWdiaXRzID0gbF90Y2NwLT5udW1nYml0czsKKworICAgICAgICAgICAgICAgIG51bWJhbmRzID0gKGxfdGNjcC0+cW50c3R5ID09IEoyS19DQ1BfUU5UU1RZX1NJUU5UKSA/IDEgOiAoT1BKX0lOVDMyKWxfdGNjcC0+bnVtcmVzb2x1dGlvbnMgKiAzIC0gMjsKKyAgICAgICAgICAgICAgICBpZiAobnVtYmFuZHMgPCBPUEpfSjJLX01BWEJBTkRTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGJhbmRubyA9IDA7IGJhbmRubyA8IG51bWJhbmRzOyBiYW5kbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RjY3BfaW5mby0+c3RlcHNpemVzX21hbnRbYmFuZG5vXSA9IChPUEpfVUlOVDMyKWxfdGNjcC0+c3RlcHNpemVzW2JhbmRub10ubWFudDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF90Y2NwX2luZm8tPnN0ZXBzaXplc19leHBuW2JhbmRub10gPSAoT1BKX1VJTlQzMilsX3RjY3AtPnN0ZXBzaXplc1tiYW5kbm9dLmV4cG47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogUkdOIHZhbHVlKi8KKyAgICAgICAgICAgICAgICBsX3RjY3BfaW5mby0+cm9pc2hpZnQgPSBsX3RjY3AtPnJvaXNoaWZ0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNzdHJfaW5mbzsKK30KKworb3BqX2NvZGVzdHJlYW1faW5kZXhfdCogajJrX2dldF9jc3RyX2luZGV4KG9wal9qMmtfdCogcF9qMmspCit7CisgICAgICAgIG9wal9jb2Rlc3RyZWFtX2luZGV4X3QqIGxfY3N0cl9pbmRleCA9IChvcGpfY29kZXN0cmVhbV9pbmRleF90KikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jYWxsb2MoMSxzaXplb2Yob3BqX2NvZGVzdHJlYW1faW5kZXhfdCkpOworICAgICAgICBpZiAoIWxfY3N0cl9pbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBsX2NzdHJfaW5kZXgtPm1haW5faGVhZF9zdGFydCA9IHBfajJrLT5jc3RyX2luZGV4LT5tYWluX2hlYWRfc3RhcnQ7CisgICAgICAgIGxfY3N0cl9pbmRleC0+bWFpbl9oZWFkX2VuZCA9IHBfajJrLT5jc3RyX2luZGV4LT5tYWluX2hlYWRfZW5kOworICAgICAgICBsX2NzdHJfaW5kZXgtPmNvZGVzdHJlYW1fc2l6ZSA9IHBfajJrLT5jc3RyX2luZGV4LT5jb2Rlc3RyZWFtX3NpemU7CisKKyAgICAgICAgbF9jc3RyX2luZGV4LT5tYXJrbnVtID0gcF9qMmstPmNzdHJfaW5kZXgtPm1hcmtudW07CisgICAgICAgIGxfY3N0cl9pbmRleC0+bWFya2VyID0gKG9wal9tYXJrZXJfaW5mb190KilvcGpfbWFsbG9jKGxfY3N0cl9pbmRleC0+bWFya251bSpzaXplb2Yob3BqX21hcmtlcl9pbmZvX3QpKTsKKyAgICAgICAgaWYgKCFsX2NzdHJfaW5kZXgtPm1hcmtlcil7CisgICAgICAgICAgICAgICAgb3BqX2ZyZWUoIGxfY3N0cl9pbmRleCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAocF9qMmstPmNzdHJfaW5kZXgtPm1hcmtlcikKKyAgICAgICAgICAgICAgICBtZW1jcHkobF9jc3RyX2luZGV4LT5tYXJrZXIsIHBfajJrLT5jc3RyX2luZGV4LT5tYXJrZXIsIGxfY3N0cl9pbmRleC0+bWFya251bSAqIHNpemVvZihvcGpfbWFya2VyX2luZm9fdCkgKTsKKyAgICAgICAgZWxzZXsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2NzdHJfaW5kZXgtPm1hcmtlcik7CisgICAgICAgICAgICAgICAgbF9jc3RyX2luZGV4LT5tYXJrZXIgPSBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgbF9jc3RyX2luZGV4LT5uYl9vZl90aWxlcyA9IHBfajJrLT5jc3RyX2luZGV4LT5uYl9vZl90aWxlczsKKyAgICAgICAgbF9jc3RyX2luZGV4LT50aWxlX2luZGV4ID0gKG9wal90aWxlX2luZGV4X3QqKW9wal9jYWxsb2MobF9jc3RyX2luZGV4LT5uYl9vZl90aWxlcywgc2l6ZW9mKG9wal90aWxlX2luZGV4X3QpICk7CisgICAgICAgIGlmICghbF9jc3RyX2luZGV4LT50aWxlX2luZGV4KXsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZSggbF9jc3RyX2luZGV4LT5tYXJrZXIpOworICAgICAgICAgICAgICAgIG9wal9mcmVlKCBsX2NzdHJfaW5kZXgpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleCl7CisgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jc3RyX2luZGV4LT50aWxlX2luZGV4KTsKKyAgICAgICAgICAgICAgICBsX2NzdHJfaW5kZXgtPnRpbGVfaW5kZXggPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgaXRfdGlsZSA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpdF90aWxlID0gMDsgaXRfdGlsZSA8IGxfY3N0cl9pbmRleC0+bmJfb2ZfdGlsZXM7IGl0X3RpbGUrKyApeworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaWxlIE1hcmtlciovCisgICAgICAgICAgICAgICAgICAgICAgICBsX2NzdHJfaW5kZXgtPnRpbGVfaW5kZXhbaXRfdGlsZV0ubWFya251bSA9IHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm1hcmtudW07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS5tYXJrZXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BqX21hcmtlcl9pbmZvX3QqKW9wal9tYWxsb2MobF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm1hcmtudW0qc2l6ZW9mKG9wal9tYXJrZXJfaW5mb190KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm1hcmtlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGl0X3RpbGVfZnJlZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGl0X3RpbGVfZnJlZT0wOyBpdF90aWxlX2ZyZWUgPCBpdF90aWxlOyBpdF90aWxlX2ZyZWUrKyl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVfZnJlZV0ubWFya2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKCBsX2NzdHJfaW5kZXgtPnRpbGVfaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZSggbF9jc3RyX2luZGV4LT5tYXJrZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZSggbF9jc3RyX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS5tYXJrZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSggbF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm1hcmtlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm1hcmtlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS5tYXJrbnVtICogc2l6ZW9mKG9wal9tYXJrZXJfaW5mb190KSApOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm1hcmtlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS5tYXJrZXIgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaWxlIHBhcnQgaW5kZXgqLworICAgICAgICAgICAgICAgICAgICAgICAgbF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm5iX3RwcyA9IHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm5iX3RwczsKKworICAgICAgICAgICAgICAgICAgICAgICAgbF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLnRwX2luZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wal90cF9pbmRleF90KilvcGpfbWFsbG9jKGxfY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS5uYl90cHMqc2l6ZW9mKG9wal90cF9pbmRleF90KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFsX2NzdHJfaW5kZXgtPnRpbGVfaW5kZXhbaXRfdGlsZV0udHBfaW5kZXgpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGl0X3RpbGVfZnJlZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGl0X3RpbGVfZnJlZT0wOyBpdF90aWxlX2ZyZWUgPCBpdF90aWxlOyBpdF90aWxlX2ZyZWUrKyl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVfZnJlZV0ubWFya2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2NzdHJfaW5kZXgtPnRpbGVfaW5kZXhbaXRfdGlsZV9mcmVlXS50cF9pbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZSggbF9jc3RyX2luZGV4LT50aWxlX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUoIGxfY3N0cl9pbmRleC0+bWFya2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUoIGxfY3N0cl9pbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbaXRfdGlsZV0udHBfaW5kZXgpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoIGxfY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS50cF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLnRwX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm5iX3RwcyAqIHNpemVvZihvcGpfdHBfaW5kZXhfdCkgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS50cF9pbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS50cF9pbmRleCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBhY2tldCBpbmRleCAoTk9UIFVTRUQpKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS5uYl9wYWNrZXQgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbF9jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLnBhY2tldF9pbmRleCA9IE5VTEw7CisKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbF9jc3RyX2luZGV4OworfQorCitPUEpfQk9PTCBvcGpfajJrX2FsbG9jYXRlX3RpbGVfZWxlbWVudF9jc3RyX2luZGV4KG9wal9qMmtfdCAqcF9qMmspCit7CisgICAgICAgIE9QSl9VSU5UMzIgaXRfdGlsZT0wOworCisgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT5uYl9vZl90aWxlcyA9IHBfajJrLT5tX2NwLnR3ICogcF9qMmstPm1fY3AudGg7CisgICAgICAgIHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4ID0gKG9wal90aWxlX2luZGV4X3QqKW9wal9jYWxsb2MocF9qMmstPmNzdHJfaW5kZXgtPm5iX29mX3RpbGVzLCBzaXplb2Yob3BqX3RpbGVfaW5kZXhfdCkpOworICAgICAgICBpZiAoIXBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisKKyAgICAgICAgZm9yIChpdF90aWxlPTA7IGl0X3RpbGUgPCBwX2oyay0+Y3N0cl9pbmRleC0+bmJfb2ZfdGlsZXM7IGl0X3RpbGUrKyl7CisgICAgICAgICAgICAgICAgcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbaXRfdGlsZV0ubWF4bWFya251bSA9IDEwMDsKKyAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS5tYXJrbnVtID0gMDsKKyAgICAgICAgICAgICAgICBwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleFtpdF90aWxlXS5tYXJrZXIgPSAob3BqX21hcmtlcl9pbmZvX3QqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfY2FsbG9jKHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W2l0X3RpbGVdLm1heG1hcmtudW0sIHNpemVvZihvcGpfbWFya2VyX2luZm9fdCkpOworICAgICAgICAgICAgICAgIGlmICghcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbaXRfdGlsZV0ubWFya2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya19kZWNvZGVfdGlsZXMgKCBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKQoreworICAgICAgICBPUEpfQk9PTCBsX2dvX29uID0gT1BKX1RSVUU7CisgICAgICAgIE9QSl9VSU5UMzIgbF9jdXJyZW50X3RpbGVfbm87CisgICAgICAgIE9QSl9VSU5UMzIgbF9kYXRhX3NpemUsbF9tYXhfZGF0YV9zaXplOworICAgICAgICBPUEpfSU5UMzIgbF90aWxlX3gwLGxfdGlsZV95MCxsX3RpbGVfeDEsbF90aWxlX3kxOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfY29tcHM7CisgICAgICAgIE9QSl9CWVRFICogbF9jdXJyZW50X2RhdGE7CisgICAgICAgIE9QSl9VSU5UMzIgbnJfdGlsZXMgPSAwOworCisgICAgICAgIGxfY3VycmVudF9kYXRhID0gKE9QSl9CWVRFKilvcGpfbWFsbG9jKDEwMDApOworICAgICAgICBpZiAoISBsX2N1cnJlbnRfZGF0YSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgdGlsZXNcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgbF9tYXhfZGF0YV9zaXplID0gMTAwMDsKKworICAgICAgICB3aGlsZSAoT1BKX1RSVUUpIHsKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfajJrX3JlYWRfdGlsZV9oZWFkZXIoIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX2N1cnJlbnRfdGlsZV9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbF9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxfdGlsZV94MCwgJmxfdGlsZV95MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbF90aWxlX3gxLCAmbF90aWxlX3kxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX25iX2NvbXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX2dvX29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCEgbF9nb19vbikgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGxfZGF0YV9zaXplID4gbF9tYXhfZGF0YV9zaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqbF9uZXdfY3VycmVudF9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKGxfY3VycmVudF9kYXRhLCBsX2RhdGFfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBsX25ld19jdXJyZW50X2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gZGVjb2RlIHRpbGUgJWQvJWRcbiIsIGxfY3VycmVudF90aWxlX25vICsxLCBwX2oyay0+bV9jcC50aCAqIHBfajJrLT5tX2NwLnR3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9kYXRhID0gbF9uZXdfY3VycmVudF9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgbF9tYXhfZGF0YV9zaXplID0gbF9kYXRhX3NpemU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX2oya19kZWNvZGVfdGlsZShwX2oyayxsX2N1cnJlbnRfdGlsZV9ubyxsX2N1cnJlbnRfZGF0YSxsX2RhdGFfc2l6ZSxwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2N1cnJlbnRfZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRmFpbGVkIHRvIGRlY29kZSB0aWxlICVkLyVkXG4iLCBsX2N1cnJlbnRfdGlsZV9ubyArMSwgcF9qMmstPm1fY3AudGggKiBwX2oyay0+bV9jcC50dyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0lORk8sICJUaWxlICVkLyVkIGhhcyBiZWVuIGRlY29kZWQuXG4iLCBsX2N1cnJlbnRfdGlsZV9ubyArMSwgcF9qMmstPm1fY3AudGggKiBwX2oyay0+bV9jcC50dyk7CisKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfajJrX3VwZGF0ZV9pbWFnZV9kYXRhKHBfajJrLT5tX3RjZCxsX2N1cnJlbnRfZGF0YSwgcF9qMmstPm1fb3V0cHV0X2ltYWdlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9JTkZPLCAiSW1hZ2UgZGF0YSBoYXMgYmVlbiB1cGRhdGVkIHdpdGggdGlsZSAlZC5cblxuIiwgbF9jdXJyZW50X3RpbGVfbm8gKyAxKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZihvcGpfc3RyZWFtX2dldF9udW1iZXJfYnl0ZV9sZWZ0KHBfc3RyZWFtKSA9PSAwICAKKyAgICAgICAgICAgICAgICAgICAgJiYgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPT0gSjJLX1NUQVRFX05FT0MpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmKCsrbnJfdGlsZXMgPT0gIHBfajJrLT5tX2NwLnRoICogcF9qMmstPm1fY3AudHcpIAorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogU2V0cyB1cCB0aGUgcHJvY2VkdXJlcyB0byBkbyBvbiBkZWNvZGluZyBkYXRhLiBEZXZlbG9wcGVycyB3YW50aW5nIHRvIGV4dGVuZCB0aGUgbGlicmFyeSBjYW4gYWRkIHRoZWlyIG93biByZWFkaW5nIHByb2NlZHVyZXMuCisgKi8KK3N0YXRpYyB2b2lkIG9wal9qMmtfc2V0dXBfZGVjb2RpbmcgKG9wal9qMmtfdCAqcF9qMmspCit7CisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworCisgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF9hZGRfcHJvY2VkdXJlKHBfajJrLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qMmtfZGVjb2RlX3RpbGVzKTsKKyAgICAgICAgLyogREVWRUxPUEVSIENPUk5FUiwgYWRkIHlvdXIgY3VzdG9tIHByb2NlZHVyZXMgKi8KKworfQorCisvKgorICogUmVhZCBhbmQgZGVjb2RlIG9uZSB0aWxlLgorICovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2oya19kZWNvZGVfb25lX3RpbGUgKCAgICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpCit7CisgICAgICAgIE9QSl9CT09MIGxfZ29fb24gPSBPUEpfVFJVRTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX2N1cnJlbnRfdGlsZV9ubzsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3RpbGVfbm9fdG9fZGVjOworICAgICAgICBPUEpfVUlOVDMyIGxfZGF0YV9zaXplLGxfbWF4X2RhdGFfc2l6ZTsKKyAgICAgICAgT1BKX0lOVDMyIGxfdGlsZV94MCxsX3RpbGVfeTAsbF90aWxlX3gxLGxfdGlsZV95MTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2NvbXBzOworICAgICAgICBPUEpfQllURSAqIGxfY3VycmVudF9kYXRhOworCisgICAgICAgIGxfY3VycmVudF9kYXRhID0gKE9QSl9CWVRFKilvcGpfbWFsbG9jKDEwMDApOworICAgICAgICBpZiAoISBsX2N1cnJlbnRfZGF0YSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgb25lIHRpbGVcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgbF9tYXhfZGF0YV9zaXplID0gMTAwMDsKKworICAgICAgICAvKkFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHNvbWUgZWxlbWVudHMgb2YgY29kZXN0cmVtIGluZGV4IGlmIG5vdCBhbHJlYWR5IGRvbmUqLworICAgICAgICBpZiggIXBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4KQorICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFvcGpfajJrX2FsbG9jYXRlX3RpbGVfZWxlbWVudF9jc3RyX2luZGV4KHBfajJrKSl7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2N1cnJlbnRfZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBNb3ZlIGludG8gdGhlIGNvZGVzdHJlYW0gdG8gdGhlIGZpcnN0IFNPVCB1c2VkIHRvIGRlY29kZSB0aGUgZGVzaXJlZCB0aWxlICovCisgICAgICAgIGxfdGlsZV9ub190b19kZWMgPSAoT1BKX1VJTlQzMilwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV90aWxlX2luZF90b19kZWM7CisgICAgICAgIGlmIChwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleCkKKyAgICAgICAgICAgICAgICBpZihwX2oyay0+Y3N0cl9pbmRleC0+dGlsZV9pbmRleC0+dHBfaW5kZXgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhIHBfajJrLT5jc3RyX2luZGV4LT50aWxlX2luZGV4W2xfdGlsZV9ub190b19kZWNdLm5iX3RwcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0aGUgaW5kZXggZm9yIHRoaXMgdGlsZSBoYXMgbm90IGJlZW4gYnVpbHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICBzbyBtb3ZlIHRvIHRoZSBsYXN0IFNPVCByZWFkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIShvcGpfc3RyZWFtX3JlYWRfc2VlayhwX3N0cmVhbSwgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fbGFzdF9zb3RfcmVhZF9wb3MrMiwgcF9tYW5hZ2VyKSkgKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiUHJvYmxlbSB3aXRoIHNlZWsgZnVuY3Rpb25cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIShvcGpfc3RyZWFtX3JlYWRfc2VlayhwX3N0cmVhbSwgcF9qMmstPmNzdHJfaW5kZXgtPnRpbGVfaW5kZXhbbF90aWxlX25vX3RvX2RlY10udHBfaW5kZXhbMF0uc3RhcnRfcG9zKzIsIHBfbWFuYWdlcikpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJQcm9ibGVtIHdpdGggc2VlayBmdW5jdGlvblxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2N1cnJlbnRfZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlIGlmIHdlIGhhdmUgcHJldmlvdXNseSByZWFkIHRoZSBFT0MgbWFya2VyIChpZiB0aGUgcHJldmlvdXMgdGlsZSBnZXR0ZWQgaXMgdGhlIGxhc3QgKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPT0gSjJLX1NUQVRFX0VPQykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc3RhdGUgPSBKMktfU1RBVEVfVFBIU09UOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoT1BKX1RSVUUpIHsKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfajJrX3JlYWRfdGlsZV9oZWFkZXIoIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX2N1cnJlbnRfdGlsZV9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbF9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxfdGlsZV94MCwgJmxfdGlsZV95MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbF90aWxlX3gxLCAmbF90aWxlX3kxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX25iX2NvbXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsX2dvX29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCEgbF9nb19vbikgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGxfZGF0YV9zaXplID4gbF9tYXhfZGF0YV9zaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqbF9uZXdfY3VycmVudF9kYXRhID0gKE9QSl9CWVRFICopIG9wal9yZWFsbG9jKGxfY3VycmVudF9kYXRhLCBsX2RhdGFfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBsX25ld19jdXJyZW50X2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRE86IExIOiB3aHkgdGlsZSBudW1iZXJpbmcgcG9saWN5IHVzZWQgaW4gbWVzc2FnZXMgZGlmZmVycyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvbmUgdXNlZCBpbiBvcGpfajJrX2RlY29kZV90aWxlcygpID8gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGRlY29kZSB0aWxlICVkLyVkXG4iLCBsX2N1cnJlbnRfdGlsZV9ubywgKHBfajJrLT5tX2NwLnRoICogcF9qMmstPm1fY3AudHcpIC0gMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSA9IGxfbmV3X2N1cnJlbnRfZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWF4X2RhdGFfc2l6ZSA9IGxfZGF0YV9zaXplOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghIG9wal9qMmtfZGVjb2RlX3RpbGUocF9qMmssbF9jdXJyZW50X3RpbGVfbm8sbF9jdXJyZW50X2RhdGEsbF9kYXRhX3NpemUscF9zdHJlYW0scF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9JTkZPLCAiVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLlxuIiwgbF9jdXJyZW50X3RpbGVfbm8sIChwX2oyay0+bV9jcC50aCAqIHBfajJrLT5tX2NwLnR3KSAtIDEpOworCisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX2oya191cGRhdGVfaW1hZ2VfZGF0YShwX2oyay0+bV90Y2QsbF9jdXJyZW50X2RhdGEsIHBfajJrLT5tX291dHB1dF9pbWFnZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfSU5GTywgIkltYWdlIGRhdGEgaGFzIGJlZW4gdXBkYXRlZCB3aXRoIHRpbGUgJWQuXG5cbiIsIGxfY3VycmVudF90aWxlX25vKTsKKworICAgICAgICAgICAgICAgIGlmKGxfY3VycmVudF90aWxlX25vID09IGxfdGlsZV9ub190b19kZWMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogbW92ZSBpbnRvIHRoZSBjb2Rlc3RyZWFtIHRvIHRoZSB0aGUgZmlyc3QgU09UIChGSVhNRSBvciBub3QgbW92ZT8pKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG9wal9zdHJlYW1fcmVhZF9zZWVrKHBfc3RyZWFtLCBwX2oyay0+Y3N0cl9pbmRleC0+bWFpbl9oZWFkX2VuZCArIDIsIHBfbWFuYWdlcikgKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIlRpbGUgcmVhZCwgZGVjb2RlIGFuZCB1cGRhdGVkIGlzIG5vdCB0aGUgZGVzaXJlZCAoJWQgdnMgJWQpLlxuIiwgbF9jdXJyZW50X3RpbGVfbm8sIGxfdGlsZV9ub190b19kZWMpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICB9CisKKyAgICAgICAgb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworLyoqCisgKiBTZXRzIHVwIHRoZSBwcm9jZWR1cmVzIHRvIGRvIG9uIGRlY29kaW5nIG9uZSB0aWxlLiBEZXZlbG9wcGVycyB3YW50aW5nIHRvIGV4dGVuZCB0aGUgbGlicmFyeSBjYW4gYWRkIHRoZWlyIG93biByZWFkaW5nIHByb2NlZHVyZXMuCisgKi8KK3N0YXRpYyB2b2lkIG9wal9qMmtfc2V0dXBfZGVjb2RpbmdfdGlsZSAob3BqX2oya190ICpwX2oyaykKK3sKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisKKyAgICAgICAgb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUocF9qMmstPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2oya19kZWNvZGVfb25lX3RpbGUpOworICAgICAgICAvKiBERVZFTE9QRVIgQ09STkVSLCBhZGQgeW91ciBjdXN0b20gcHJvY2VkdXJlcyAqLworCit9CisKK09QSl9CT09MIG9wal9qMmtfZGVjb2RlKG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKiBwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90ICogcF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcikKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBjb21wbm87CisKKyAgICAgICAgaWYgKCFwX2ltYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisKKyAgICAgICAgcF9qMmstPm1fb3V0cHV0X2ltYWdlID0gb3BqX2ltYWdlX2NyZWF0ZTAoKTsKKyAgICAgICAgaWYgKCEgKHBfajJrLT5tX291dHB1dF9pbWFnZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIG9wal9jb3B5X2ltYWdlX2hlYWRlcihwX2ltYWdlLCBwX2oyay0+bV9vdXRwdXRfaW1hZ2UpOworCisgICAgICAgIC8qIGN1c3RvbWl6YXRpb24gb2YgdGhlIGRlY29kaW5nICovCisgICAgICAgIG9wal9qMmtfc2V0dXBfZGVjb2RpbmcocF9qMmspOworCisgICAgICAgIC8qIERlY29kZSB0aGUgY29kZXN0cmVhbSAqLworICAgICAgICBpZiAoISBvcGpfajJrX2V4ZWMgKHBfajJrLHBfajJrLT5tX3Byb2NlZHVyZV9saXN0LHBfc3RyZWFtLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfZGVzdHJveShwX2oyay0+bV9wcml2YXRlX2ltYWdlKTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9wcml2YXRlX2ltYWdlID0gTlVMTDsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogTW92ZSBkYXRhIGFuZCBjb3B5IG9uZSBpbmZvcm1hdGlvbiBmcm9tIGNvZGVjIHRvIG91dHB1dCBpbWFnZSovCisgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgcF9pbWFnZS0+bnVtY29tcHM7IGNvbXBubysrKSB7CisgICAgICAgICAgICAgICAgcF9pbWFnZS0+Y29tcHNbY29tcG5vXS5yZXNub19kZWNvZGVkID0gcF9qMmstPm1fb3V0cHV0X2ltYWdlLT5jb21wc1tjb21wbm9dLnJlc25vX2RlY29kZWQ7CisgICAgICAgICAgICAgICAgcF9pbWFnZS0+Y29tcHNbY29tcG5vXS5kYXRhID0gcF9qMmstPm1fb3V0cHV0X2ltYWdlLT5jb21wc1tjb21wbm9dLmRhdGE7CisjaWYgMAorICAgICAgICAgICAgICAgIGNoYXIgZm5bMjU2XTsKKyAgICAgICAgICAgICAgICBzcHJpbnRmKCBmbiwgIi90bXAvJWQucmF3IiwgY29tcG5vICk7CisgICAgICAgICAgICAgICAgRklMRSAqZGVidWcgPSBmb3BlbiggZm4sICJ3YiIgKTsKKyAgICAgICAgICAgICAgICBmd3JpdGUoIHBfaW1hZ2UtPmNvbXBzW2NvbXBub10uZGF0YSwgc2l6ZW9mKE9QSl9JTlQzMiksIHBfaW1hZ2UtPmNvbXBzW2NvbXBub10udyAqIHBfaW1hZ2UtPmNvbXBzW2NvbXBub10uaCwgZGVidWcgKTsKKyAgICAgICAgICAgICAgICBmY2xvc2UoIGRlYnVnICk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9vdXRwdXRfaW1hZ2UtPmNvbXBzW2NvbXBub10uZGF0YSA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfZ2V0X3RpbGUoICAgICAgb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QqIHBfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgdGlsZV9pbmRleCApCit7CisgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vOworICAgICAgICBPUEpfVUlOVDMyIGxfdGlsZV94LCBsX3RpbGVfeTsKKyAgICAgICAgb3BqX2ltYWdlX2NvbXBfdCogbF9pbWdfY29tcDsKKworICAgICAgICBpZiAoIXBfaW1hZ2UpIHsKKyAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiV2UgbmVlZCBhbiBpbWFnZSBwcmV2aW91c2x5IGNyZWF0ZWQuXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAvKih0aWxlX2luZGV4IDwgMCkgJiYqLyAodGlsZV9pbmRleCA+PSBwX2oyay0+bV9jcC50dyAqIHBfajJrLT5tX2NwLnRoKSApeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJUaWxlIGluZGV4IHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGlzIGluY29ycmVjdCAlZCAobWF4ID0gJWQpIFxuIiwgdGlsZV9pbmRleCwgKHBfajJrLT5tX2NwLnR3ICogcF9qMmstPm1fY3AudGgpIC0gMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIENvbXB1dGUgdGhlIGRpbWVuc2lvbiBvZiB0aGUgZGVzaXJlZCB0aWxlKi8KKyAgICAgICAgbF90aWxlX3ggPSB0aWxlX2luZGV4ICUgcF9qMmstPm1fY3AudHc7CisgICAgICAgIGxfdGlsZV95ID0gdGlsZV9pbmRleCAvIHBfajJrLT5tX2NwLnR3OworCisgICAgICAgIHBfaW1hZ2UtPngwID0gbF90aWxlX3ggKiBwX2oyay0+bV9jcC50ZHggKyBwX2oyay0+bV9jcC50eDA7CisgICAgICAgIGlmIChwX2ltYWdlLT54MCA8IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPngwKQorICAgICAgICAgICAgICAgIHBfaW1hZ2UtPngwID0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+eDA7CisgICAgICAgIHBfaW1hZ2UtPngxID0gKGxfdGlsZV94ICsgMSkgKiBwX2oyay0+bV9jcC50ZHggKyBwX2oyay0+bV9jcC50eDA7CisgICAgICAgIGlmIChwX2ltYWdlLT54MSA+IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPngxKQorICAgICAgICAgICAgICAgIHBfaW1hZ2UtPngxID0gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+eDE7CisKKyAgICAgICAgcF9pbWFnZS0+eTAgPSBsX3RpbGVfeSAqIHBfajJrLT5tX2NwLnRkeSArIHBfajJrLT5tX2NwLnR5MDsKKyAgICAgICAgaWYgKHBfaW1hZ2UtPnkwIDwgcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+eTApCisgICAgICAgICAgICAgICAgcF9pbWFnZS0+eTAgPSBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT55MDsKKyAgICAgICAgcF9pbWFnZS0+eTEgPSAobF90aWxlX3kgKyAxKSAqIHBfajJrLT5tX2NwLnRkeSArIHBfajJrLT5tX2NwLnR5MDsKKyAgICAgICAgaWYgKHBfaW1hZ2UtPnkxID4gcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+eTEpCisgICAgICAgICAgICAgICAgcF9pbWFnZS0+eTEgPSBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT55MTsKKworICAgICAgICBsX2ltZ19jb21wID0gcF9pbWFnZS0+Y29tcHM7CisgICAgICAgIGZvciAoY29tcG5vPTA7IGNvbXBubyA8IHBfaW1hZ2UtPm51bWNvbXBzOyArK2NvbXBubykKKyAgICAgICAgeworICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBsX2NvbXBfeDEsIGxfY29tcF95MTsKKworICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAtPmZhY3RvciA9IHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPmNvbXBzW2NvbXBub10uZmFjdG9yOworCisgICAgICAgICAgICAgICAgbF9pbWdfY29tcC0+eDAgPSAoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXYoKE9QSl9JTlQzMilwX2ltYWdlLT54MCwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5keCk7CisgICAgICAgICAgICAgICAgbF9pbWdfY29tcC0+eTAgPSAoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXYoKE9QSl9JTlQzMilwX2ltYWdlLT55MCwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5keSk7CisgICAgICAgICAgICAgICAgbF9jb21wX3gxID0gb3BqX2ludF9jZWlsZGl2KChPUEpfSU5UMzIpcF9pbWFnZS0+eDEsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHgpOworICAgICAgICAgICAgICAgIGxfY29tcF95MSA9IG9wal9pbnRfY2VpbGRpdigoT1BKX0lOVDMyKXBfaW1hZ2UtPnkxLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmR5KTsKKworICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAtPncgPSAoT1BKX1VJTlQzMikob3BqX2ludF9jZWlsZGl2cG93MihsX2NvbXBfeDEsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZmFjdG9yKSAtIG9wal9pbnRfY2VpbGRpdnBvdzIoKE9QSl9JTlQzMilsX2ltZ19jb21wLT54MCwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5mYWN0b3IpKTsKKyAgICAgICAgICAgICAgICBsX2ltZ19jb21wLT5oID0gKE9QSl9VSU5UMzIpKG9wal9pbnRfY2VpbGRpdnBvdzIobF9jb21wX3kxLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmZhY3RvcikgLSBvcGpfaW50X2NlaWxkaXZwb3cyKChPUEpfSU5UMzIpbF9pbWdfY29tcC0+eTAsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZmFjdG9yKSk7CisKKyAgICAgICAgICAgICAgICBsX2ltZ19jb21wKys7CisgICAgICAgIH0KKworICAgICAgICAvKiBEZXN0cm95IHRoZSBwcmV2aW91cyBvdXRwdXQgaW1hZ2UqLworICAgICAgICBpZiAocF9qMmstPm1fb3V0cHV0X2ltYWdlKQorICAgICAgICAgICAgICAgIG9wal9pbWFnZV9kZXN0cm95KHBfajJrLT5tX291dHB1dF9pbWFnZSk7CisKKyAgICAgICAgLyogQ3JlYXRlIHRoZSBvdXB1dCBpbWFnZSBmcm9tIHRoZSBpbmZvcm1hdGlvbiBwcmV2aW91c2x5IGNvbXB1dGVkKi8KKyAgICAgICAgcF9qMmstPm1fb3V0cHV0X2ltYWdlID0gb3BqX2ltYWdlX2NyZWF0ZTAoKTsKKyAgICAgICAgaWYgKCEgKHBfajJrLT5tX291dHB1dF9pbWFnZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIG9wal9jb3B5X2ltYWdlX2hlYWRlcihwX2ltYWdlLCBwX2oyay0+bV9vdXRwdXRfaW1hZ2UpOworCisgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3RpbGVfaW5kX3RvX2RlYyA9IChPUEpfSU5UMzIpdGlsZV9pbmRleDsKKworICAgICAgICAvKiBjdXN0b21pemF0aW9uIG9mIHRoZSBkZWNvZGluZyAqLworICAgICAgICBvcGpfajJrX3NldHVwX2RlY29kaW5nX3RpbGUocF9qMmspOworCisgICAgICAgIC8qIERlY29kZSB0aGUgY29kZXN0cmVhbSAqLworICAgICAgICBpZiAoISBvcGpfajJrX2V4ZWMgKHBfajJrLHBfajJrLT5tX3Byb2NlZHVyZV9saXN0LHBfc3RyZWFtLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfZGVzdHJveShwX2oyay0+bV9wcml2YXRlX2ltYWdlKTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9wcml2YXRlX2ltYWdlID0gTlVMTDsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLyogTW92ZSBkYXRhIGFuZCBjb3B5IG9uZSBpbmZvcm1hdGlvbiBmcm9tIGNvZGVjIHRvIG91dHB1dCBpbWFnZSovCisgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgcF9pbWFnZS0+bnVtY29tcHM7IGNvbXBubysrKSB7CisgICAgICAgICAgICAgICAgcF9pbWFnZS0+Y29tcHNbY29tcG5vXS5yZXNub19kZWNvZGVkID0gcF9qMmstPm1fb3V0cHV0X2ltYWdlLT5jb21wc1tjb21wbm9dLnJlc25vX2RlY29kZWQ7CisKKyAgICAgICAgICAgICAgICBpZiAocF9pbWFnZS0+Y29tcHNbY29tcG5vXS5kYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9pbWFnZS0+Y29tcHNbY29tcG5vXS5kYXRhKTsKKworICAgICAgICAgICAgICAgIHBfaW1hZ2UtPmNvbXBzW2NvbXBub10uZGF0YSA9IHBfajJrLT5tX291dHB1dF9pbWFnZS0+Y29tcHNbY29tcG5vXS5kYXRhOworCisgICAgICAgICAgICAgICAgcF9qMmstPm1fb3V0cHV0X2ltYWdlLT5jb21wc1tjb21wbm9dLmRhdGEgPSBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX3NldF9kZWNvZGVkX3Jlc29sdXRpb25fZmFjdG9yKG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcmVzX2ZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKQoreworICAgICAgICBPUEpfVUlOVDMyIGl0X2NvbXA7CisKKyAgICAgICAgcF9qMmstPm1fY3AubV9zcGVjaWZpY19wYXJhbS5tX2RlYy5tX3JlZHVjZSA9IHJlc19mYWN0b3I7CisKKyAgICAgICAgaWYgKHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UpIHsKKyAgICAgICAgICAgICAgICBpZiAocF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+Y29tcHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fZGVmYXVsdF90Y3AtPnRjY3BzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpdF9jb21wID0gMCA7IGl0X2NvbXAgPCBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5udW1jb21wczsgaXRfY29tcCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG1heF9yZXMgPSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9kZWZhdWx0X3RjcC0+dGNjcHNbaXRfY29tcF0ubnVtcmVzb2x1dGlvbnM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlc19mYWN0b3IgPj0gbWF4X3Jlcyl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJSZXNvbHV0aW9uIGZhY3RvciBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gcmVzb2x1dGlvbiBpbiB0aGUgY29tcG9uZW50LlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2oyay0+bV9wcml2YXRlX2ltYWdlLT5jb21wc1tpdF9jb21wXS5mYWN0b3IgPSByZXNfZmFjdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworfQorCitPUEpfQk9PTCBvcGpfajJrX2VuY29kZShvcGpfajJrX3QgKiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3RpbGVzOworICAgICAgICBPUEpfVUlOVDMyIGxfbWF4X3RpbGVfc2l6ZSwgbF9jdXJyZW50X3RpbGVfc2l6ZTsKKyAgICAgICAgT1BKX0JZVEUgKiBsX2N1cnJlbnRfZGF0YTsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIGxfY3VycmVudF9kYXRhID0gKE9QSl9CWVRFKilvcGpfbWFsbG9jKDEwMDApOworICAgICAgICBpZiAoISBsX2N1cnJlbnRfZGF0YSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBlbmNvZGUgYWxsIHRpbGVzXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGxfbWF4X3RpbGVfc2l6ZSA9IDEwMDA7CisKKyAgICAgICAgbF9uYl90aWxlcyA9IHBfajJrLT5tX2NwLnRoICogcF9qMmstPm1fY3AudHc7CisgICAgICAgIGZvciAoaT0wO2k8bF9uYl90aWxlczsrK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfajJrX3ByZV93cml0ZV90aWxlKHBfajJrLGkscF9zdHJlYW0scF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfdGlsZV9zaXplID0gb3BqX3RjZF9nZXRfZW5jb2RlZF90aWxlX3NpemUocF9qMmstPm1fdGNkKTsKKyAgICAgICAgICAgICAgICBpZiAobF9jdXJyZW50X3RpbGVfc2l6ZSA+IGxfbWF4X3RpbGVfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKmxfbmV3X2N1cnJlbnRfZGF0YSA9IChPUEpfQllURSAqKSBvcGpfcmVhbGxvYyhsX2N1cnJlbnRfZGF0YSwgbF9jdXJyZW50X3RpbGVfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBsX25ld19jdXJyZW50X2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gZW5jb2RlIGFsbCB0aWxlc1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSA9IGxfbmV3X2N1cnJlbnRfZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWF4X3RpbGVfc2l6ZSA9IGxfY3VycmVudF90aWxlX3NpemU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgb3BqX2oya19nZXRfdGlsZV9kYXRhKHBfajJrLT5tX3RjZCxsX2N1cnJlbnRfZGF0YSk7CisKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfajJrX3Bvc3Rfd3JpdGVfdGlsZSAocF9qMmssbF9jdXJyZW50X2RhdGEsbF9jdXJyZW50X3RpbGVfc2l6ZSxwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX2VuZF9jb21wcmVzcyggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKQoreworICAgICAgICAvKiBjdXN0b21pemF0aW9uIG9mIHRoZSBlbmNvZGluZyAqLworICAgICAgICBvcGpfajJrX3NldHVwX2VuZF9jb21wcmVzcyhwX2oyayk7CisKKyAgICAgICAgaWYgKCEgb3BqX2oya19leGVjIChwX2oyaywgcF9qMmstPm1fcHJvY2VkdXJlX2xpc3QsIHBfc3RyZWFtLCBwX21hbmFnZXIpKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya19zdGFydF9jb21wcmVzcyhvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QgKiBwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKQoreworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisgICAgICAgIHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UgPSBvcGpfaW1hZ2VfY3JlYXRlMCgpOworICAgICAgICBvcGpfY29weV9pbWFnZV9oZWFkZXIocF9pbWFnZSwgcF9qMmstPm1fcHJpdmF0ZV9pbWFnZSk7CisKKyAgICAgICAgLyogVE9ET19NU0Q6IEZpbmQgYSBiZXR0ZXIgd2F5ICovCisgICAgICAgIGlmIChwX2ltYWdlLT5jb21wcykgeworICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgaXRfY29tcDsKKyAgICAgICAgICAgICAgICBmb3IgKGl0X2NvbXAgPSAwIDsgaXRfY29tcCA8IHBfaW1hZ2UtPm51bWNvbXBzOyBpdF9jb21wKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwX2ltYWdlLT5jb21wc1tpdF9jb21wXS5kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UtPmNvbXBzW2l0X2NvbXBdLmRhdGEgPXBfaW1hZ2UtPmNvbXBzW2l0X2NvbXBdLmRhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfaW1hZ2UtPmNvbXBzW2l0X2NvbXBdLmRhdGEgPSBOVUxMOworCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogY3VzdG9taXphdGlvbiBvZiB0aGUgdmFsaWRhdGlvbiAqLworICAgICAgICBvcGpfajJrX3NldHVwX2VuY29kaW5nX3ZhbGlkYXRpb24gKHBfajJrKTsKKworICAgICAgICAvKiB2YWxpZGF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzIGNvZGVjICovCisgICAgICAgIGlmICghIG9wal9qMmtfZXhlYyhwX2oyayxwX2oyay0+bV92YWxpZGF0aW9uX2xpc3QscF9zdHJlYW0scF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICAvKiBjdXN0b21pemF0aW9uIG9mIHRoZSBlbmNvZGluZyAqLworICAgICAgICBvcGpfajJrX3NldHVwX2hlYWRlcl93cml0aW5nKHBfajJrKTsKKworICAgICAgICAvKiB3cml0ZSBoZWFkZXIgKi8KKyAgICAgICAgaWYgKCEgb3BqX2oya19leGVjIChwX2oyayxwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCxwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya19wcmVfd3JpdGVfdGlsZSAoICAgICAgIG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKQoreworICAodm9pZClwX3N0cmVhbTsKKyAgICAgICAgaWYgKHBfdGlsZV9pbmRleCAhPSBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlRoZSBnaXZlbiB0aWxlIGluZGV4IGRvZXMgbm90IG1hdGNoLiIgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9JTkZPLCAidGlsZSBudW1iZXIgJWQgLyAlZFxuIiwgcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlciArIDEsIHBfajJrLT5tX2NwLnR3ICogcF9qMmstPm1fY3AudGgpOworCisgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2N1cnJlbnRfdGlsZV9wYXJ0X251bWJlciA9IDA7CisgICAgICAgIHBfajJrLT5tX3RjZC0+Y3VyX3RvdG51bV90cCA9IHBfajJrLT5tX2NwLnRjcHNbcF90aWxlX2luZGV4XS5tX25iX3RpbGVfcGFydHM7CisgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2N1cnJlbnRfcG9jX3RpbGVfcGFydF9udW1iZXIgPSAwOworCisgICAgICAgIC8qIGluaXRpYWxpc2F0aW9uIGJlZm9yZSB0aWxlIGVuY29kaW5nICAqLworICAgICAgICBpZiAoISBvcGpfdGNkX2luaXRfZW5jb2RlX3RpbGUocF9qMmstPm1fdGNkLCBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK3ZvaWQgb3BqX2oya19nZXRfdGlsZV9kYXRhIChvcGpfdGNkX3QgKiBwX3RjZCwgT1BKX0JZVEUgKiBwX2RhdGEpCit7CisgICAgICAgIE9QSl9VSU5UMzIgaSxqLGsgPSAwOworICAgICAgICBPUEpfVUlOVDMyIGxfd2lkdGgsbF9oZWlnaHQsbF9zdHJpZGUsIGxfb2Zmc2V0X3gsbF9vZmZzZXRfeSwgbF9pbWFnZV93aWR0aDsKKyAgICAgICAgb3BqX2ltYWdlX2NvbXBfdCAqIGxfaW1nX2NvbXAgPSAwMDsKKyAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICogbF90aWxlYyA9IDAwOworICAgICAgICBvcGpfaW1hZ2VfdCAqIGxfaW1hZ2UgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3NpemVfY29tcCwgbF9yZW1haW5pbmc7CisgICAgICAgIE9QSl9JTlQzMiAqIGxfc3JjX3B0cjsKKyAgICAgICAgbF90aWxlYyA9IHBfdGNkLT50Y2RfaW1hZ2UtPnRpbGVzLT5jb21wczsKKyAgICAgICAgbF9pbWFnZSA9IHBfdGNkLT5pbWFnZTsKKyAgICAgICAgbF9pbWdfY29tcCA9IGxfaW1hZ2UtPmNvbXBzOworCisgICAgICAgIGZvciAoaT0wO2k8cF90Y2QtPmltYWdlLT5udW1jb21wczsrK2kpIHsKKyAgICAgICAgICAgICAgICBsX3NpemVfY29tcCA9IGxfaW1nX2NvbXAtPnByZWMgPj4gMzsgLyogKC84KSAqLworICAgICAgICAgICAgICAgIGxfcmVtYWluaW5nID0gbF9pbWdfY29tcC0+cHJlYyAmIDc7ICAvKiAoJTgpICovCisgICAgICAgICAgICAgICAgaWYgKGxfcmVtYWluaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK2xfc2l6ZV9jb21wOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChsX3NpemVfY29tcCA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3NpemVfY29tcCA9IDQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbF93aWR0aCAgPSAoT1BKX1VJTlQzMikobF90aWxlYy0+eDEgLSBsX3RpbGVjLT54MCk7CisgICAgICAgICAgICAgICAgbF9oZWlnaHQgPSAoT1BKX1VJTlQzMikobF90aWxlYy0+eTEgLSBsX3RpbGVjLT55MCk7CisgICAgICAgICAgICAgICAgbF9vZmZzZXRfeCA9IChPUEpfVUlOVDMyKW9wal9pbnRfY2VpbGRpdigoT1BKX0lOVDMyKWxfaW1hZ2UtPngwLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmR4KTsKKyAgICAgICAgICAgICAgICBsX29mZnNldF95ID0gKE9QSl9VSU5UMzIpb3BqX2ludF9jZWlsZGl2KChPUEpfSU5UMzIpbF9pbWFnZS0+eTAsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHkpOworICAgICAgICAgICAgICAgIGxfaW1hZ2Vfd2lkdGggPSAoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXYoKE9QSl9JTlQzMilsX2ltYWdlLT54MSAtIChPUEpfSU5UMzIpbF9pbWFnZS0+eDAsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHgpOworICAgICAgICAgICAgICAgIGxfc3RyaWRlID0gbF9pbWFnZV93aWR0aCAtIGxfd2lkdGg7CisgICAgICAgICAgICAgICAgbF9zcmNfcHRyID0gbF9pbWdfY29tcC0+ZGF0YSArICgoT1BKX1VJTlQzMilsX3RpbGVjLT54MCAtIGxfb2Zmc2V0X3gpICsgKChPUEpfVUlOVDMyKWxfdGlsZWMtPnkwIC0gbF9vZmZzZXRfeSkgKiBsX2ltYWdlX3dpZHRoOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChsX3NpemVfY29tcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0NIQVIgKiBsX2Rlc3RfcHRyID0gKE9QSl9DSEFSKikgcF9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2ltZ19jb21wLT5zZ25kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgICAgIChqPTA7ajxsX2hlaWdodDsrK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrPTA7azxsX3dpZHRoOysraykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cikgPSAoT1BKX0NIQVIpICgqbF9zcmNfcHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfZGVzdF9wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX3NyY19wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfc3RyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8bF9oZWlnaHQ7KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaz0wO2s8bF93aWR0aDsrK2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGxfZGVzdF9wdHIpID0gKE9QSl9DSEFSKSgoKmxfc3JjX3B0cikmMHhmZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX2Rlc3RfcHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9zcmNfcHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc3JjX3B0ciArPSBsX3N0cmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2RhdGEgPSAoT1BKX0JZVEUqKSBsX2Rlc3RfcHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDE2ICogbF9kZXN0X3B0ciA9IChPUEpfSU5UMTYgKikgcF9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2ltZ19jb21wLT5zZ25kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDtqPGxfaGVpZ2h0OysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGs9MDtrPGxfd2lkdGg7KytrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihsX2Rlc3RfcHRyKyspID0gKE9QSl9JTlQxNikgKCoobF9zcmNfcHRyKyspKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NyY19wdHIgKz0gbF9zdHJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7ajxsX2hlaWdodDsrK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrPTA7azxsX3dpZHRoOysraykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9IChPUEpfSU5UMTYpKCgqKGxfc3JjX3B0cisrKSkgJiAweGZmZmYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc3JjX3B0ciArPSBsX3N0cmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2RhdGEgPSAoT1BKX0JZVEUqKSBsX2Rlc3RfcHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogbF9kZXN0X3B0ciA9IChPUEpfSU5UMzIgKikgcF9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8bF9oZWlnaHQ7KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGs9MDtrPGxfd2lkdGg7KytrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9ICoobF9zcmNfcHRyKyspOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfc3RyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfZGF0YSA9IChPUEpfQllURSopIGxfZGVzdF9wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKytsX2ltZ19jb21wOworICAgICAgICAgICAgICAgICsrbF90aWxlYzsKKyAgICAgICAgfQorfQorCitPUEpfQk9PTCBvcGpfajJrX3Bvc3Rfd3JpdGVfdGlsZSAoICAgICAgb3BqX2oya190ICogcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgb3BqX3RjZF90ICogbF90Y2QgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2J5dGVzX3dyaXR0ZW47CisgICAgICAgIE9QSl9CWVRFICogbF9jdXJyZW50X2RhdGEgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3RpbGVfc2l6ZSA9IDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9hdmFpbGFibGVfZGF0YTsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9lbmNvZGVkX3RpbGVfZGF0YSk7CisKKyAgICAgICAgbF90Y2QgPSBwX2oyay0+bV90Y2Q7CisgICAgICAgIAorICAgICAgICBsX3RpbGVfc2l6ZSA9IHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2VuY29kZWRfdGlsZV9zaXplOworICAgICAgICBsX2F2YWlsYWJsZV9kYXRhID0gbF90aWxlX3NpemU7CisgICAgICAgIGxfY3VycmVudF9kYXRhID0gcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fZW5jb2RlZF90aWxlX2RhdGE7CisKKyAgICAgICAgaWYgKCEgb3BqX3RjZF9jb3B5X3RpbGVfZGF0YShsX3RjZCxwX2RhdGEscF9kYXRhX3NpemUpKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlNpemUgbWlzbWF0Y2ggYmV0d2VlbiB0aWxlIGRhdGEgYW5kIHNlbnQgZGF0YS4iICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiA9IDA7CisgICAgICAgIGlmICghIG9wal9qMmtfd3JpdGVfZmlyc3RfdGlsZV9wYXJ0KHBfajJrLGxfY3VycmVudF9kYXRhLCZsX25iX2J5dGVzX3dyaXR0ZW4sbF9hdmFpbGFibGVfZGF0YSxwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSBsX25iX2J5dGVzX3dyaXR0ZW47CisgICAgICAgIGxfYXZhaWxhYmxlX2RhdGEgLT0gbF9uYl9ieXRlc193cml0dGVuOworCisgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiA9IDA7CisgICAgICAgIGlmICghIG9wal9qMmtfd3JpdGVfYWxsX3RpbGVfcGFydHMocF9qMmssbF9jdXJyZW50X2RhdGEsJmxfbmJfYnl0ZXNfd3JpdHRlbixsX2F2YWlsYWJsZV9kYXRhLHBfc3RyZWFtLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgbF9hdmFpbGFibGVfZGF0YSAtPSBsX25iX2J5dGVzX3dyaXR0ZW47CisgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiA9IGxfdGlsZV9zaXplIC0gbF9hdmFpbGFibGVfZGF0YTsKKworICAgICAgICBpZiAoIG9wal9zdHJlYW1fd3JpdGVfZGF0YSggICAgIHBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2VuY29kZWRfdGlsZV9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbixwX21hbmFnZXIpICE9IGxfbmJfYnl0ZXNfd3JpdHRlbikgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICArK3BfajJrLT5tX2N1cnJlbnRfdGlsZV9udW1iZXI7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCit2b2lkIG9wal9qMmtfc2V0dXBfZW5kX2NvbXByZXNzIChvcGpfajJrX3QgKnBfajJrKQoreworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisKKyAgICAgICAgLyogREVWRUxPUEVSIENPUk5FUiwgaW5zZXJ0IHlvdXIgY3VzdG9tIHByb2NlZHVyZXMgKi8KKyAgICAgICAgb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUocF9qMmstPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2oya193cml0ZV9lb2MgKTsKKworICAgICAgICBpZiAocF9qMmstPm1fY3AubV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX2NpbmVtYSkgeworICAgICAgICAgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF9hZGRfcHJvY2VkdXJlKHBfajJrLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qMmtfd3JpdGVfdXBkYXRlZF90bG0pOworICAgICAgICB9CisKKyAgICAgICAgb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUocF9qMmstPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2oya193cml0ZV9lcGMgKTsKKyAgICAgICAgb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUocF9qMmstPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2oya19lbmRfZW5jb2RpbmcgKTsKKyAgICAgICAgb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUocF9qMmstPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2oya19kZXN0cm95X2hlYWRlcl9tZW1vcnkpOworfQorCit2b2lkIG9wal9qMmtfc2V0dXBfZW5jb2RpbmdfdmFsaWRhdGlvbiAob3BqX2oya190ICpwX2oyaykKK3sKKyAgICAgICAgLyogcHJlY29uZGl0aW9ucyAqLworICAgICAgICBhc3NlcnQocF9qMmsgIT0gMDApOworCisgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF9hZGRfcHJvY2VkdXJlKHBfajJrLT5tX3ZhbGlkYXRpb25fbGlzdCwgKG9wal9wcm9jZWR1cmUpb3BqX2oya19idWlsZF9lbmNvZGVyKTsKKyAgICAgICAgb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUocF9qMmstPm1fdmFsaWRhdGlvbl9saXN0LCAob3BqX3Byb2NlZHVyZSlvcGpfajJrX2VuY29kaW5nX3ZhbGlkYXRpb24pOworCisgICAgICAgIC8qIERFVkVMT1BFUiBDT1JORVIsIGFkZCB5b3VyIGN1c3RvbSB2YWxpZGF0aW9uIHByb2NlZHVyZSAqLworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV92YWxpZGF0aW9uX2xpc3QsIChvcGpfcHJvY2VkdXJlKW9wal9qMmtfbWN0X3ZhbGlkYXRpb24pOworfQorCit2b2lkIG9wal9qMmtfc2V0dXBfaGVhZGVyX3dyaXRpbmcgKG9wal9qMmtfdCAqcF9qMmspCit7CisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX2luaXRfaW5mbyApOworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX3dyaXRlX3NvYyApOworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX3dyaXRlX3NpeiApOworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX3dyaXRlX2NvZCApOworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX3dyaXRlX3FjZCApOworCisgICAgICAgIGlmIChwX2oyay0+bV9jcC5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fY2luZW1hKSB7CisgICAgICAgICAgICAgICAgLyogTm8gbmVlZCBmb3IgQ09DIG9yIFFDQywgUUNEIGFuZCBDT0QgYXJlIHVzZWQKKyAgICAgICAgICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX3dyaXRlX2FsbF9jb2MgKTsKKyAgICAgICAgICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX3dyaXRlX2FsbF9xY2MgKTsKKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF9hZGRfcHJvY2VkdXJlKHBfajJrLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qMmtfd3JpdGVfdGxtICk7CisKKyAgICAgICAgICAgICAgICBpZiAocF9qMmstPm1fY3AubV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX2NpbmVtYSA9PSBPUEpfQ0lORU1BNEtfMjQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF9hZGRfcHJvY2VkdXJlKHBfajJrLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qMmtfd3JpdGVfcG9jICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUocF9qMmstPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2oya193cml0ZV9yZWdpb25zKTsKKworICAgICAgICBpZiAocF9qMmstPm1fY3AuY29tbWVudCAhPSAwMCkgIHsKKyAgICAgICAgICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX3dyaXRlX2NvbSk7CisgICAgICAgIH0KKworICAgICAgICAvKiBERVZFTE9QRVIgQ09STkVSLCBpbnNlcnQgeW91ciBjdXN0b20gcHJvY2VkdXJlcyAqLworICAgICAgICBpZiAocF9qMmstPm1fY3AucnNpeiAmIE9QSl9NQ1QpIHsKKyAgICAgICAgICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX3dyaXRlX21jdF9kYXRhX2dyb3VwICk7CisgICAgICAgIH0KKyAgICAgICAgLyogRW5kIG9mIERldmVsb3BlciBDb3JuZXIgKi8KKworICAgICAgICBpZiAocF9qMmstPmNzdHJfaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX2dldF9lbmRfaGVhZGVyICk7CisgICAgICAgIH0KKworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX2NyZWF0ZV90Y2QpOworICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShwX2oyay0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfajJrX3VwZGF0ZV9yYXRlcyk7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfZmlyc3RfdGlsZV9wYXJ0IChvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9kYXRhX3dyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdG90YWxfZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIgKQoreworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfYnl0ZXNfd3JpdHRlbiA9IDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW47CisgICAgICAgIE9QSl9CWVRFICogbF9iZWdpbl9kYXRhID0gMDA7CisKKyAgICAgICAgb3BqX3RjZF90ICogbF90Y2QgPSAwMDsKKyAgICAgICAgb3BqX2NwX3QgKiBsX2NwID0gMDA7CisKKyAgICAgICAgbF90Y2QgPSBwX2oyay0+bV90Y2Q7CisgICAgICAgIGxfY3AgPSAmKHBfajJrLT5tX2NwKTsKKworICAgICAgICBsX3RjZC0+Y3VyX3Bpbm8gPSAwOworCisgICAgICAgIC8qR2V0IG51bWJlciBvZiB0aWxlIHBhcnRzKi8KKyAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fY3VycmVudF9wb2NfdGlsZV9wYXJ0X251bWJlciA9IDA7CisKKyAgICAgICAgLyogSU5ERVggPj4gKi8KKyAgICAgICAgLyogPDwgSU5ERVggKi8KKworICAgICAgICBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbiA9IDA7CisgICAgICAgIGxfYmVnaW5fZGF0YSA9IHBfZGF0YTsKKyAgICAgICAgaWYgKCEgb3BqX2oya193cml0ZV9zb3QocF9qMmsscF9kYXRhLCZsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbixwX3N0cmVhbSxwX21hbmFnZXIpKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgcF9kYXRhICs9IGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuOworICAgICAgICBwX3RvdGFsX2RhdGFfc2l6ZSAtPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKworICAgICAgICBpZiAobF9jcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX2NpbmVtYSA9PSAwKSB7CisjaWYgMAorICAgICAgICAgICAgICAgIGZvciAoY29tcG5vID0gMTsgY29tcG5vIDwgcF9qMmstPm1fcHJpdmF0ZV9pbWFnZS0+bnVtY29tcHM7IGNvbXBubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfajJrX3dyaXRlX2NvY19pbl9tZW1vcnkocF9qMmssY29tcG5vLHBfZGF0YSwmbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW4scF9tYW5hZ2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfZGF0YSArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdG90YWxfZGF0YV9zaXplIC09IGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuOworCisgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfajJrX3dyaXRlX3FjY19pbl9tZW1vcnkocF9qMmssY29tcG5vLHBfZGF0YSwmbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW4scF9tYW5hZ2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfZGF0YSArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdG90YWxfZGF0YV9zaXplIC09IGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgICAgICAgICAgaWYgKGxfY3AtPnRjcHNbcF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcl0ubnVtcG9jcykgeworICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2oya193cml0ZV9wb2NfaW5fbWVtb3J5KHBfajJrLHBfZGF0YSwmbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW4scF9tYW5hZ2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfZGF0YSArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdG90YWxfZGF0YV9zaXplIC09IGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuID0gMDsKKyAgICAgICAgaWYgKCEgb3BqX2oya193cml0ZV9zb2QocF9qMmssbF90Y2QscF9kYXRhLCZsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbixwX3RvdGFsX2RhdGFfc2l6ZSxwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgKiBwX2RhdGFfd3JpdHRlbiA9IGxfbmJfYnl0ZXNfd3JpdHRlbjsKKworICAgICAgICAvKiBXcml0aW5nIFBzb3QgaW4gU09UIG1hcmtlciAqLworICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9iZWdpbl9kYXRhICsgNixsX25iX2J5dGVzX3dyaXR0ZW4sNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFNPVCAqLworCisgICAgICAgIGlmIChsX2NwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fY2luZW1hKXsKKyAgICAgICAgICAgICAgICBvcGpfajJrX3VwZGF0ZV90bG0ocF9qMmssbF9uYl9ieXRlc193cml0dGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya193cml0ZV9hbGxfdGlsZV9wYXJ0cyggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90b3RhbF9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiB0aWxlcGFydG5vPTA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9ieXRlc193cml0dGVuID0gMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3BhcnRfdGlsZV9zaXplOworICAgICAgICBPUEpfVUlOVDMyIHRvdF9udW1fdHA7CisgICAgICAgIE9QSl9VSU5UMzIgcGlubzsKKworICAgICAgICBPUEpfQllURSAqIGxfYmVnaW5fZGF0YTsKKyAgICAgICAgb3BqX3RjcF90ICpsX3RjcCA9IDAwOworICAgICAgICBvcGpfdGNkX3QgKiBsX3RjZCA9IDAwOworICAgICAgICBvcGpfY3BfdCAqIGxfY3AgPSAwMDsKKworICAgICAgICBsX3RjZCA9IHBfajJrLT5tX3RjZDsKKyAgICAgICAgbF9jcCA9ICYocF9qMmstPm1fY3ApOworICAgICAgICBsX3RjcCA9IGxfY3AtPnRjcHMgKyBwX2oyay0+bV9jdXJyZW50X3RpbGVfbnVtYmVyOworCisgICAgICAgIC8qR2V0IG51bWJlciBvZiB0aWxlIHBhcnRzKi8KKyAgICAgICAgdG90X251bV90cCA9IG9wal9qMmtfZ2V0X251bV90cChsX2NwLDAscF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcik7CisKKyAgICAgICAgLyogc3RhcnQgd3JpdGluZyByZW1haW5pbmcgdGlsZSBwYXJ0cyAqLworICAgICAgICArK3BfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2N1cnJlbnRfdGlsZV9wYXJ0X251bWJlcjsKKyAgICAgICAgZm9yICh0aWxlcGFydG5vID0gMTsgdGlsZXBhcnRubyA8IHRvdF9udW1fdHAgOyArK3RpbGVwYXJ0bm8pIHsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9jdXJyZW50X3BvY190aWxlX3BhcnRfbnVtYmVyID0gdGlsZXBhcnRubzsKKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbiA9IDA7CisgICAgICAgICAgICAgICAgbF9wYXJ0X3RpbGVfc2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgbF9iZWdpbl9kYXRhID0gcF9kYXRhOworCisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX2oya193cml0ZV9zb3QocF9qMmsscF9kYXRhLCZsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbixwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICBwX2RhdGEgKz0gbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW47CisgICAgICAgICAgICAgICAgcF90b3RhbF9kYXRhX3NpemUgLT0gbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW47CisgICAgICAgICAgICAgICAgbF9wYXJ0X3RpbGVfc2l6ZSArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKworICAgICAgICAgICAgICAgIGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfajJrX3dyaXRlX3NvZChwX2oyayxsX3RjZCxwX2RhdGEsJmxfY3VycmVudF9uYl9ieXRlc193cml0dGVuLHBfdG90YWxfZGF0YV9zaXplLHBfc3RyZWFtLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcF9kYXRhICs9IGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuOworICAgICAgICAgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICBwX3RvdGFsX2RhdGFfc2l6ZSAtPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICBsX3BhcnRfdGlsZV9zaXplICs9IGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuOworCisgICAgICAgICAgICAgICAgLyogV3JpdGluZyBQc290IGluIFNPVCBtYXJrZXIgKi8KKyAgICAgICAgICAgICAgICBvcGpfd3JpdGVfYnl0ZXMobF9iZWdpbl9kYXRhICsgNixsX3BhcnRfdGlsZV9zaXplLDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFNPVCAqLworCisgICAgICAgICAgICAgICAgaWYgKGxfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9jaW5lbWEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9qMmtfdXBkYXRlX3RsbShwX2oyayxsX3BhcnRfdGlsZV9zaXplKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK3BfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2N1cnJlbnRfdGlsZV9wYXJ0X251bWJlcjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAocGlubyA9IDE7IHBpbm8gPD0gbF90Y3AtPm51bXBvY3M7ICsrcGlubykgeworICAgICAgICAgICAgICAgIGxfdGNkLT5jdXJfcGlubyA9IHBpbm87CisKKyAgICAgICAgICAgICAgICAvKkdldCBudW1iZXIgb2YgdGlsZSBwYXJ0cyovCisgICAgICAgICAgICAgICAgdG90X251bV90cCA9IG9wal9qMmtfZ2V0X251bV90cChsX2NwLHBpbm8scF9qMmstPm1fY3VycmVudF90aWxlX251bWJlcik7CisgICAgICAgICAgICAgICAgZm9yICh0aWxlcGFydG5vID0gMDsgdGlsZXBhcnRubyA8IHRvdF9udW1fdHAgOyArK3RpbGVwYXJ0bm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2N1cnJlbnRfcG9jX3RpbGVfcGFydF9udW1iZXIgPSB0aWxlcGFydG5vOworICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbF9wYXJ0X3RpbGVfc2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBsX2JlZ2luX2RhdGEgPSBwX2RhdGE7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG9wal9qMmtfd3JpdGVfc290KHBfajJrLHBfZGF0YSwmbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW4scF9zdHJlYW0scF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBsX25iX2J5dGVzX3dyaXR0ZW4gKz0gbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW47CisgICAgICAgICAgICAgICAgICAgICAgICBwX2RhdGEgKz0gbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW47CisgICAgICAgICAgICAgICAgICAgICAgICBwX3RvdGFsX2RhdGFfc2l6ZSAtPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcGFydF90aWxlX3NpemUgKz0gbF9jdXJyZW50X25iX2J5dGVzX3dyaXR0ZW47CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuID0gMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgb3BqX2oya193cml0ZV9zb2QocF9qMmssbF90Y2QscF9kYXRhLCZsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbixwX3RvdGFsX2RhdGFfc2l6ZSxwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfYnl0ZXNfd3JpdHRlbiArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfZGF0YSArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdG90YWxfZGF0YV9zaXplIC09IGxfY3VycmVudF9uYl9ieXRlc193cml0dGVuOworICAgICAgICAgICAgICAgICAgICAgICAgbF9wYXJ0X3RpbGVfc2l6ZSArPSBsX2N1cnJlbnRfbmJfYnl0ZXNfd3JpdHRlbjsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogV3JpdGluZyBQc290IGluIFNPVCBtYXJrZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2JlZ2luX2RhdGEgKyA2LGxfcGFydF90aWxlX3NpemUsNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQU09UICovCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2NwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fY2luZW1hKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9qMmtfdXBkYXRlX3RsbShwX2oyayxsX3BhcnRfdGlsZV9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgKytwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9jdXJyZW50X3RpbGVfcGFydF9udW1iZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgKnBfZGF0YV93cml0dGVuID0gbF9uYl9ieXRlc193cml0dGVuOworCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2oya193cml0ZV91cGRhdGVkX3RsbSggb3BqX2oya190ICpwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBsX3RsbV9zaXplOworICAgICAgICBPUEpfT0ZGX1QgbF90bG1fcG9zaXRpb24sIGxfY3VycmVudF9wb3NpdGlvbjsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIGxfdGxtX3NpemUgPSA1ICogcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdG90YWxfdGlsZV9wYXJ0czsKKyAgICAgICAgbF90bG1fcG9zaXRpb24gPSA2ICsgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdGxtX3N0YXJ0OworICAgICAgICBsX2N1cnJlbnRfcG9zaXRpb24gPSBvcGpfc3RyZWFtX3RlbGwocF9zdHJlYW0pOworCisgICAgICAgIGlmICghIG9wal9zdHJlYW1fc2VlayhwX3N0cmVhbSxsX3RsbV9wb3NpdGlvbixwX21hbmFnZXIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvcGpfc3RyZWFtX3dyaXRlX2RhdGEocF9zdHJlYW0scF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdGxtX3NvdF9vZmZzZXRzX2J1ZmZlcixsX3RsbV9zaXplLHBfbWFuYWdlcikgIT0gbF90bG1fc2l6ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoISBvcGpfc3RyZWFtX3NlZWsocF9zdHJlYW0sbF9jdXJyZW50X3Bvc2l0aW9uLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX2VuZF9lbmNvZGluZyggIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlciApCit7CisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX3N0cmVhbSAhPSAwMCk7CisKKyAgICAgICAgb3BqX3RjZF9kZXN0cm95KHBfajJrLT5tX3RjZCk7CisgICAgICAgIHBfajJrLT5tX3RjZCA9IDAwOworCisgICAgICAgIGlmIChwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV90bG1fc290X29mZnNldHNfYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdGxtX3NvdF9vZmZzZXRzX2J1ZmZlcik7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdGxtX3NvdF9vZmZzZXRzX2J1ZmZlciA9IDA7CisgICAgICAgICAgICAgICAgcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdGxtX3NvdF9vZmZzZXRzX2N1cnJlbnQgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2VuY29kZWRfdGlsZV9kYXRhKSB7CisgICAgICAgICAgICAgICAgb3BqX2ZyZWUocF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fZW5jb2RlZF90aWxlX2RhdGEpOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2VuY29kZWRfdGlsZV9kYXRhID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2VuY29kZWRfdGlsZV9zaXplID0gMDsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogRGVzdHJveXMgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIGRlY29kaW5nIG9mIGhlYWRlcnMuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2Rlc3Ryb3lfaGVhZGVyX21lbW9yeSAoIG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIC8qIHByZWNvbmRpdGlvbnMgKi8KKyAgICAgICAgYXNzZXJ0KHBfajJrICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfc3RyZWFtICE9IDAwKTsKKyAgICAgICAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAgICAgICAgaWYgKHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGEpIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhKTsKKyAgICAgICAgICAgICAgICBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2VuY29kZXIubV9oZWFkZXJfdGlsZV9kYXRhID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jb2Rlci5tX2hlYWRlcl90aWxlX2RhdGFfc2l6ZSA9IDA7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfajJrX2luaXRfaW5mbyggICAgIG9wal9qMmtfdCAqcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgb3BqX2NvZGVzdHJlYW1faW5mb190ICogbF9jc3RyX2luZm8gPSAwMDsKKworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworICAodm9pZClsX2NzdHJfaW5mbzsKKworICAgICAgICAvKiBUT0RPIG1lcmdlVjI6IGNoZWNrIHRoaXMgcGFydCB3aGljaCB1c2UgY3N0cl9pbmZvICovCisgICAgICAgIC8qbF9jc3RyX2luZm8gPSBwX2oyay0+Y3N0cl9pbmZvOworCisgICAgICAgIGlmIChsX2NzdHJfaW5mbykgIHsKKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGNvbXBubzsKKyAgICAgICAgICAgICAgICBsX2NzdHJfaW5mby0+dGlsZSA9IChvcGpfdGlsZV9pbmZvX3QgKikgb3BqX21hbGxvYyhwX2oyay0+bV9jcC50dyAqIHBfajJrLT5tX2NwLnRoICogc2l6ZW9mKG9wal90aWxlX2luZm9fdCkpOworCisgICAgICAgICAgICAgICAgbF9jc3RyX2luZm8tPmltYWdlX3cgPSBwX2oyay0+bV9pbWFnZS0+eDEgLSBwX2oyay0+bV9pbWFnZS0+eDA7CisgICAgICAgICAgICAgICAgbF9jc3RyX2luZm8tPmltYWdlX2ggPSBwX2oyay0+bV9pbWFnZS0+eTEgLSBwX2oyay0+bV9pbWFnZS0+eTA7CisKKyAgICAgICAgICAgICAgICBsX2NzdHJfaW5mby0+cHJvZyA9ICgmcF9qMmstPm1fY3AudGNwc1swXSktPnByZzsKKworICAgICAgICAgICAgICAgIGxfY3N0cl9pbmZvLT50dyA9IHBfajJrLT5tX2NwLnR3OworICAgICAgICAgICAgICAgIGxfY3N0cl9pbmZvLT50aCA9IHBfajJrLT5tX2NwLnRoOworCisgICAgICAgICAgICAgICAgbF9jc3RyX2luZm8tPnRpbGVfeCA9IHBfajJrLT5tX2NwLnRkeDsqLyAgICAgICAgLyogbmV3IHZlcnNpb24gcGFyc2VyICovCisgICAgICAgICAgICAgICAgLypsX2NzdHJfaW5mby0+dGlsZV95ID0gcF9qMmstPm1fY3AudGR5OyovICAgICAgLyogbmV3IHZlcnNpb24gcGFyc2VyICovCisgICAgICAgICAgICAgICAgLypsX2NzdHJfaW5mby0+dGlsZV9PeCA9IHBfajJrLT5tX2NwLnR4MDsqLyAgICAgLyogbmV3IHZlcnNpb24gcGFyc2VyICovCisgICAgICAgICAgICAgICAgLypsX2NzdHJfaW5mby0+dGlsZV9PeSA9IHBfajJrLT5tX2NwLnR5MDsqLyAgICAgLyogbmV3IHZlcnNpb24gcGFyc2VyICovCisKKyAgICAgICAgICAgICAgICAvKmxfY3N0cl9pbmZvLT5udW1jb21wcyA9IHBfajJrLT5tX2ltYWdlLT5udW1jb21wczsKKworICAgICAgICAgICAgICAgIGxfY3N0cl9pbmZvLT5udW1sYXllcnMgPSAoJnBfajJrLT5tX2NwLnRjcHNbMF0pLT5udW1sYXllcnM7CisKKyAgICAgICAgICAgICAgICBsX2NzdHJfaW5mby0+bnVtZGVjb21wb3MgPSAoT1BKX0lOVDMyKikgb3BqX21hbGxvYyhwX2oyay0+bV9pbWFnZS0+bnVtY29tcHMgKiBzaXplb2YoT1BKX0lOVDMyKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGNvbXBubz0wOyBjb21wbm8gPCBwX2oyay0+bV9pbWFnZS0+bnVtY29tcHM7IGNvbXBubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX2NzdHJfaW5mby0+bnVtZGVjb21wb3NbY29tcG5vXSA9ICgmcF9qMmstPm1fY3AudGNwc1swXSktPnRjY3BzLT5udW1yZXNvbHV0aW9ucyAtIDE7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbF9jc3RyX2luZm8tPkRfbWF4ID0gMC4wOyAgICAgICAqLyAgICAgIC8qIEFERCBNYXJjZWxhICovCisKKyAgICAgICAgICAgICAgICAvKmxfY3N0cl9pbmZvLT5tYWluX2hlYWRfc3RhcnQgPSBvcGpfc3RyZWFtX3RlbGwocF9zdHJlYW0pOyovIC8qIHBvc2l0aW9uIG9mIFNPQyAqLworCisgICAgICAgICAgICAgICAgLypsX2NzdHJfaW5mby0+bWF4bWFya251bSA9IDEwMDsKKyAgICAgICAgICAgICAgICBsX2NzdHJfaW5mby0+bWFya2VyID0gKG9wal9tYXJrZXJfaW5mb190ICopIG9wal9tYWxsb2MobF9jc3RyX2luZm8tPm1heG1hcmtudW0gKiBzaXplb2Yob3BqX21hcmtlcl9pbmZvX3QpKTsKKyAgICAgICAgICAgICAgICBsX2NzdHJfaW5mby0+bWFya251bSA9IDA7CisgICAgICAgIH0qLworCisgICAgICAgIHJldHVybiBvcGpfajJrX2NhbGN1bGF0ZV90cChwX2oyaywmKHBfajJrLT5tX2NwKSwmcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmNvZGVyLm1fdG90YWxfdGlsZV9wYXJ0cyxwX2oyay0+bV9wcml2YXRlX2ltYWdlLHBfbWFuYWdlcik7Cit9CisKKy8qKgorICogQ3JlYXRlcyBhIHRpbGUtY29kZXIgZGVjb2Rlci4KKyAqCisgKiBAcGFyYW0gICAgICAgcF9zdHJlYW0gICAgICAgICAgICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICAgICAgIHBfajJrICAgICAgICAgICAgICAgICAgIEoySyBjb2RlYy4KKyAqIEBwYXJhbSAgICAgICBwX21hbmFnZXIgICAgICAgICAgICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfajJrX2NyZWF0ZV90Y2QoICAgICBvcGpfajJrX3QgKnBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICAvKiBwcmVjb25kaXRpb25zICovCisgICAgICAgIGFzc2VydChwX2oyayAhPSAwMCk7CisgICAgICAgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICAgICBhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCisgICAgICAgIHBfajJrLT5tX3RjZCA9IG9wal90Y2RfY3JlYXRlKE9QSl9GQUxTRSk7CisKKyAgICAgICAgaWYgKCEgcF9qMmstPm1fdGNkKSB7CisgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGNyZWF0ZSBUaWxlIENvZGVyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFvcGpfdGNkX2luaXQocF9qMmstPm1fdGNkLHBfajJrLT5tX3ByaXZhdGVfaW1hZ2UsJnBfajJrLT5tX2NwKSkgeworICAgICAgICAgICAgICAgIG9wal90Y2RfZGVzdHJveShwX2oyay0+bV90Y2QpOworICAgICAgICAgICAgICAgIHBfajJrLT5tX3RjZCA9IDAwOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qMmtfd3JpdGVfdGlsZSAob3BqX2oya190ICogcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKyAgICAgICAgaWYgKCEgb3BqX2oya19wcmVfd3JpdGVfdGlsZShwX2oyayxwX3RpbGVfaW5kZXgscF9zdHJlYW0scF9tYW5hZ2VyKSkgeworICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciB3aGlsZSBvcGpfajJrX3ByZV93cml0ZV90aWxlIHdpdGggdGlsZSBpbmRleCA9ICVkXG4iLCBwX3RpbGVfaW5kZXgpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX2oya19wb3N0X3dyaXRlX3RpbGUocF9qMmsscF9kYXRhLHBfZGF0YV9zaXplLHBfc3RyZWFtLHBfbWFuYWdlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciB3aGlsZSBvcGpfajJrX3Bvc3Rfd3JpdGVfdGlsZSB3aXRoIHRpbGUgaW5kZXggPSAlZFxuIiwgcF90aWxlX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisjaWZkZWYgX0ZPWElUX01FTV9NQU5BR0VSXworLyoqIEFsbG9jYXRlIG51bWJlciBvZiBieXRlcyAqLwordm9pZCoJRlhNRU1fRGVmYXVsdEFsbG9jKGludCBieXRlX3NpemUsIGludCBmbGFncyk7Cit2b2lkKglGWE1FTV9EZWZhdWx0UmVhbGxvYyh2b2lkKiBwb2ludGVyLCBpbnQgbmV3X3NpemUsIGludCBmbGFncyk7Cit2b2lkCUZYTUVNX0RlZmF1bHRGcmVlKHZvaWQqIHBvaW50ZXIsIGludCBmbGFncyk7CisKK3ZvaWQqIG9wal9tYWxsb2Moc2l6ZV90IHNpemUpCit7CisJaWYgKHNpemUgPj0gKHNpemVfdCktMHgxMDAgfHwgKGludClzaXplIDwgMCkgcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gRlhNRU1fRGVmYXVsdEFsbG9jKHNpemUsIDApOworfQorCit2b2lkKiBvcGpfY2FsbG9jKHNpemVfdCBfTnVtT2ZFbGVtZW50cywgc2l6ZV90IF9TaXplT2ZFbGVtZW50cykKK3sKKwl2b2lkKiBidWZmZXIgPSBOVUxMOworCisJaWYgKF9OdW1PZkVsZW1lbnRzICE9IDAgJiYgX051bU9mRWxlbWVudHMgPj0gKHNpemVfdCktMHgxMDAgLyBfU2l6ZU9mRWxlbWVudHMpIHJldHVybiBOVUxMOworCWlmICgoaW50KV9OdW1PZkVsZW1lbnRzIDwgMCB8fCAoaW50KV9TaXplT2ZFbGVtZW50cyA8IDApIHJldHVybiBOVUxMOworCisJYnVmZmVyID0gRlhNRU1fRGVmYXVsdEFsbG9jKF9OdW1PZkVsZW1lbnRzICogX1NpemVPZkVsZW1lbnRzLCAwKTsKKwlpZiAoIWJ1ZmZlcikgcmV0dXJuIDA7CisKKwltZW1zZXQoYnVmZmVyLCAwLCBfTnVtT2ZFbGVtZW50cyAqIF9TaXplT2ZFbGVtZW50cyk7CisJcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCogb3BqX3JlYWxsb2Modm9pZCAqIG0sIHNpemVfdCBzKQoreworCWlmIChzID49IChzaXplX3QpLTB4MTAwIHx8IChpbnQpcyA8IDApIHJldHVybiBOVUxMOworCXJldHVybiBGWE1FTV9EZWZhdWx0UmVhbGxvYyhtLCBzLCAwKTsKK30KKwordm9pZCBvcGpfZnJlZSh2b2lkICogbSkKK3sKKwlGWE1FTV9EZWZhdWx0RnJlZShtLCAwKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvajJrLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvajJrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIyOGJkNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9qMmsuaApAQCAtMCwwICsxLDg0NCBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsIFBhcnZhdGhhIEVsYW5nb3ZhbgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBKZXJvbWUgRmltZXMsIENvbW11bmljYXRpb25zICYgU3lzdGVtZXMgPGplcm9tZS5maW1lc0BjLXMuZnI+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMiwgQ2VudHJlIE5hdGlvbmFsIGQnRXR1ZGVzIFNwYXRpYWxlcyAoQ05FUyksIEZyYW5jZSAKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgQ1MgU3lzdGVtZXMgZCdJbmZvcm1hdGlvbiwgRnJhbmNlCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBfX0oyS19ICisjZGVmaW5lIF9fSjJLX0gKKy8qKgorQGZpbGUgajJrLmgKK0BicmllZiBUaGUgSlBFRy0yMDAwIENvZGVzdHJlYW0gUmVhZGVyL1dyaXRlciAoSjJLKQorCitUaGUgZnVuY3Rpb25zIGluIEoySy5DIGhhdmUgZm9yIGdvYWwgdG8gcmVhZC93cml0ZSB0aGUgc2V2ZXJhbCBwYXJ0cyBvZiB0aGUgY29kZXN0cmVhbTogbWFya2VycyBhbmQgZGF0YS4KKyovCisKKy8qKiBAZGVmZ3JvdXAgSjJLIEoySyAtIEpQRUctMjAwMCBjb2Rlc3RyZWFtIHJlYWRlci93cml0ZXIgKi8KKy8qQHsqLworCisjZGVmaW5lIEoyS19DUF9DU1RZX1BSVCAweDAxCisjZGVmaW5lIEoyS19DUF9DU1RZX1NPUCAweDAyCisjZGVmaW5lIEoyS19DUF9DU1RZX0VQSCAweDA0CisjZGVmaW5lIEoyS19DQ1BfQ1NUWV9QUlQgMHgwMQorI2RlZmluZSBKMktfQ0NQX0NCTEtTVFlfTEFaWSAweDAxICAgICAvKio8IFNlbGVjdGl2ZSBhcml0aG1ldGljIGNvZGluZyBieXBhc3MgKi8KKyNkZWZpbmUgSjJLX0NDUF9DQkxLU1RZX1JFU0VUIDB4MDIgICAgLyoqPCBSZXNldCBjb250ZXh0IHByb2JhYmlsaXRpZXMgb24gY29kaW5nIHBhc3MgYm91bmRhcmllcyAqLworI2RlZmluZSBKMktfQ0NQX0NCTEtTVFlfVEVSTUFMTCAweDA0ICAvKio8IFRlcm1pbmF0aW9uIG9uIGVhY2ggY29kaW5nIHBhc3MgKi8KKyNkZWZpbmUgSjJLX0NDUF9DQkxLU1RZX1ZTQyAweDA4ICAgICAgLyoqPCBWZXJ0aWNhbGx5IHN0cmlwZSBjYXVzYWwgY29udGV4dCAqLworI2RlZmluZSBKMktfQ0NQX0NCTEtTVFlfUFRFUk0gMHgxMCAgICAvKio8IFByZWRpY3RhYmxlIHRlcm1pbmF0aW9uICovCisjZGVmaW5lIEoyS19DQ1BfQ0JMS1NUWV9TRUdTWU0gMHgyMCAgIC8qKjwgU2VnbWVudGF0aW9uIHN5bWJvbHMgYXJlIHVzZWQgKi8KKyNkZWZpbmUgSjJLX0NDUF9RTlRTVFlfTk9RTlQgMAorI2RlZmluZSBKMktfQ0NQX1FOVFNUWV9TSVFOVCAxCisjZGVmaW5lIEoyS19DQ1BfUU5UU1RZX1NFUU5UIDIKKworI2RlZmluZSBPUEpfSjJLX0RFRkFVTFRfQ0JMS19EQVRBX1NJWkUgODE5MgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEoyS19NU19TT0MgMHhmZjRmCS8qKjwgU09DIG1hcmtlciB2YWx1ZSAqLworI2RlZmluZSBKMktfTVNfU09UIDB4ZmY5MAkvKio8IFNPVCBtYXJrZXIgdmFsdWUgKi8KKyNkZWZpbmUgSjJLX01TX1NPRCAweGZmOTMJLyoqPCBTT0QgbWFya2VyIHZhbHVlICovCisjZGVmaW5lIEoyS19NU19FT0MgMHhmZmQ5CS8qKjwgRU9DIG1hcmtlciB2YWx1ZSAqLworI2RlZmluZSBKMktfTVNfU0laIDB4ZmY1MQkvKio8IFNJWiBtYXJrZXIgdmFsdWUgKi8KKyNkZWZpbmUgSjJLX01TX0NPRCAweGZmNTIJLyoqPCBDT0QgbWFya2VyIHZhbHVlICovCisjZGVmaW5lIEoyS19NU19DT0MgMHhmZjUzCS8qKjwgQ09DIG1hcmtlciB2YWx1ZSAqLworI2RlZmluZSBKMktfTVNfUkdOIDB4ZmY1ZQkvKio8IFJHTiBtYXJrZXIgdmFsdWUgKi8KKyNkZWZpbmUgSjJLX01TX1FDRCAweGZmNWMJLyoqPCBRQ0QgbWFya2VyIHZhbHVlICovCisjZGVmaW5lIEoyS19NU19RQ0MgMHhmZjVkCS8qKjwgUUNDIG1hcmtlciB2YWx1ZSAqLworI2RlZmluZSBKMktfTVNfUE9DIDB4ZmY1ZgkvKio8IFBPQyBtYXJrZXIgdmFsdWUgKi8KKyNkZWZpbmUgSjJLX01TX1RMTSAweGZmNTUJLyoqPCBUTE0gbWFya2VyIHZhbHVlICovCisjZGVmaW5lIEoyS19NU19QTE0gMHhmZjU3CS8qKjwgUExNIG1hcmtlciB2YWx1ZSAqLworI2RlZmluZSBKMktfTVNfUExUIDB4ZmY1OAkvKio8IFBMVCBtYXJrZXIgdmFsdWUgKi8KKyNkZWZpbmUgSjJLX01TX1BQTSAweGZmNjAJLyoqPCBQUE0gbWFya2VyIHZhbHVlICovCisjZGVmaW5lIEoyS19NU19QUFQgMHhmZjYxCS8qKjwgUFBUIG1hcmtlciB2YWx1ZSAqLworI2RlZmluZSBKMktfTVNfU09QIDB4ZmY5MQkvKio8IFNPUCBtYXJrZXIgdmFsdWUgKi8KKyNkZWZpbmUgSjJLX01TX0VQSCAweGZmOTIJLyoqPCBFUEggbWFya2VyIHZhbHVlICovCisjZGVmaW5lIEoyS19NU19DUkcgMHhmZjYzCS8qKjwgQ1JHIG1hcmtlciB2YWx1ZSAqLworI2RlZmluZSBKMktfTVNfQ09NIDB4ZmY2NAkvKio8IENPTSBtYXJrZXIgdmFsdWUgKi8KKyNkZWZpbmUgSjJLX01TX0NCRCAweGZmNzgJLyoqPCBDQkQgbWFya2VyIHZhbHVlICovCisjZGVmaW5lIEoyS19NU19NQ0MgMHhmZjc1CS8qKjwgTUNDIG1hcmtlciB2YWx1ZSAqLworI2RlZmluZSBKMktfTVNfTUNUIDB4ZmY3NAkvKio8IE1DVCBtYXJrZXIgdmFsdWUgKi8KKyNkZWZpbmUgSjJLX01TX01DTyAweGZmNzcJLyoqPCBNQ08gbWFya2VyIHZhbHVlICovCisKKyNkZWZpbmUgSjJLX01TX1VOSyAwCQkvKio8IFVOS05PV04gbWFya2VyIHZhbHVlICovCisKKy8qIFVuaVBHPj4gKi8KKyNpZmRlZiBVU0VfSlBXTAorI2RlZmluZSBKMktfTVNfRVBDIDB4ZmY2OAkvKio8IEVQQyBtYXJrZXIgdmFsdWUgKFBhcnQgMTE6IEpQRUcgMjAwMCBmb3IgV2lyZWxlc3MpICovCisjZGVmaW5lIEoyS19NU19FUEIgMHhmZjY2CS8qKjwgRVBCIG1hcmtlciB2YWx1ZSAoUGFydCAxMTogSlBFRyAyMDAwIGZvciBXaXJlbGVzcykgKi8gCisjZGVmaW5lIEoyS19NU19FU0QgMHhmZjY3CS8qKjwgRVNEIG1hcmtlciB2YWx1ZSAoUGFydCAxMTogSlBFRyAyMDAwIGZvciBXaXJlbGVzcykgKi8gCisjZGVmaW5lIEoyS19NU19SRUQgMHhmZjY5CS8qKjwgUkVEIG1hcmtlciB2YWx1ZSAoUGFydCAxMTogSlBFRyAyMDAwIGZvciBXaXJlbGVzcykgKi8KKyNlbmRpZiAvKiBVU0VfSlBXTCAqLworI2lmZGVmIFVTRV9KUFNFQworI2RlZmluZSBKMktfTVNfU0VDIDB4ZmY2NSAgICAvKio8IFNFQyBtYXJrZXIgdmFsdWUgKFBhcnQgODogU2VjdXJlIEpQRUcgMjAwMCkgKi8KKyNkZWZpbmUgSjJLX01TX0lOU0VDIDB4ZmY5NCAgLyoqPCBJTlNFQyBtYXJrZXIgdmFsdWUgKFBhcnQgODogU2VjdXJlIEpQRUcgMjAwMCkgKi8KKyNlbmRpZiAvKiBVU0VfSlBTRUMgKi8KKy8qIDw8VW5pUEcgKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisgKiBWYWx1ZXMgdGhhdCBzcGVjaWZ5IHRoZSBzdGF0dXMgb2YgdGhlIGRlY29kaW5nIHByb2Nlc3Mgd2hlbiBkZWNvZGluZyB0aGUgbWFpbiBoZWFkZXIuCisgKiBUaGVzZSB2YWx1ZXMgbWF5IGJlIGNvbWJpbmVkIHdpdGggYSB8IG9wZXJhdG9yLgorICogKi8KK3R5cGVkZWYgZW51bSBKMktfU1RBVFVTIHsKKwlKMktfU1RBVEVfTk9ORSAgPSAgMHgwMDAwLCAvKio8IGEgU09DIG1hcmtlciBpcyBleHBlY3RlZCAqLworCUoyS19TVEFURV9NSFNPQyAgPSAweDAwMDEsIC8qKjwgYSBTT0MgbWFya2VyIGlzIGV4cGVjdGVkICovCisJSjJLX1NUQVRFX01IU0laICA9IDB4MDAwMiwgLyoqPCBhIFNJWiBtYXJrZXIgaXMgZXhwZWN0ZWQgKi8KKwlKMktfU1RBVEVfTUggICAgID0gMHgwMDA0LCAvKio8IHRoZSBkZWNvZGluZyBwcm9jZXNzIGlzIGluIHRoZSBtYWluIGhlYWRlciAqLworCUoyS19TVEFURV9UUEhTT1QgPSAweDAwMDgsIC8qKjwgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgaW4gYSB0aWxlIHBhcnQgaGVhZGVyIGFuZCBleHBlY3RzIGEgU09UIG1hcmtlciAqLworCUoyS19TVEFURV9UUEggICAgPSAweDAwMTAsIC8qKjwgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgaW4gYSB0aWxlIHBhcnQgaGVhZGVyICovCisJSjJLX1NUQVRFX01UICAgICA9IDB4MDAyMCwgLyoqPCB0aGUgRU9DIG1hcmtlciBoYXMganVzdCBiZWVuIHJlYWQgKi8KKwlKMktfU1RBVEVfTkVPQyAgID0gMHgwMDQwLCAvKio8IHRoZSBkZWNvZGluZyBwcm9jZXNzIG11c3Qgbm90IGV4cGVjdCBhIEVPQyBtYXJrZXIgYmVjYXVzZSB0aGUgY29kZXN0cmVhbSBpcyB0cnVuY2F0ZWQgKi8KKworCUoyS19TVEFURV9FT0MJID0gMHgwMTAwLCAvKio8IHRoZSBkZWNvZGluZyBwcm9jZXNzIGhhcyBlbmNvdW50ZXJlZCB0aGUgRU9DIG1hcmtlciAqLworCUoyS19TVEFURV9FUlIgICAgPSAweDgwMDAgIC8qKjwgdGhlIGRlY29kaW5nIHByb2Nlc3MgaGFzIGVuY291bnRlcmVkIGFuIGVycm9yIChGSVhNRSB3YXJuaW5nIFYxID0gMHgwMDgwKSovCit9IEoyS19TVEFUVVM7CisKKy8qKgorICogVHlwZSBvZiBlbGVtZW50cyBzdG9yaW5nIGluIHRoZSBNQ1QgZGF0YQorICovCit0eXBlZGVmIGVudW0gTUNUX0VMRU1FTlRfVFlQRQoreworCU1DVF9UWVBFX0lOVDE2ID0gMCwJCS8qKiBNQ1QgZGF0YSBpcyBzdG9yZWQgYXMgc2lnbmVkIHNob3J0cyovCisJTUNUX1RZUEVfSU5UMzIgPSAxLAkJLyoqIE1DVCBkYXRhIGlzIHN0b3JlZCBhcyBzaWduZWQgaW50ZWdlcnMqLworCU1DVF9UWVBFX0ZMT0FUID0gMiwJCS8qKiBNQ1QgZGF0YSBpcyBzdG9yZWQgYXMgZmxvYXRzKi8KKwlNQ1RfVFlQRV9ET1VCTEUgPSAzCQkvKiogTUNUIGRhdGEgaXMgc3RvcmVkIGFzIGRvdWJsZXMqLworfSBKMktfTUNUX0VMRU1FTlRfVFlQRTsKKworLyoqCisgKiBUeXBlIG9mIE1DVCBhcnJheQorICovCit0eXBlZGVmIGVudW0gTUNUX0FSUkFZX1RZUEUKK3sKKwlNQ1RfVFlQRV9ERVBFTkRFTkNZID0gMCwKKwlNQ1RfVFlQRV9ERUNPUlJFTEFUSU9OID0gMSwKKwlNQ1RfVFlQRV9PRkZTRVQgPSAyCit9IEoyS19NQ1RfQVJSQVlfVFlQRTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqIAorVDIgZW5jb2RpbmcgbW9kZSAKKyovCit0eXBlZGVmIGVudW0gVDJfTU9ERSB7CisJVEhSRVNIX0NBTEMgPSAwLAkvKiogRnVuY3Rpb24gY2FsbGVkIGluIFJhdGUgYWxsb2NhdGlvbiBwcm9jZXNzKi8KKwlGSU5BTF9QQVNTID0gMQkJLyoqIEZ1bmN0aW9uIGNhbGxlZCBpbiBUaWVyIDIgcHJvY2VzcyovCit9SjJLX1QyX01PREU7CisKKy8qKgorICogUXVhbnRpemF0aW9uIHN0ZXBzaXplCisgKi8KK3R5cGVkZWYgc3RydWN0IG9wal9zdGVwc2l6ZSB7CisJLyoqIGV4cG9uZW50ICovCisJT1BKX0lOVDMyIGV4cG47CisJLyoqIG1hbnRpc3NhICovCisJT1BKX0lOVDMyIG1hbnQ7Cit9IG9wal9zdGVwc2l6ZV90OworCisvKioKK1RpbGUtY29tcG9uZW50IGNvZGluZyBwYXJhbWV0ZXJzCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX3RjY3AKK3sKKwkvKiogY29kaW5nIHN0eWxlICovCisJT1BKX1VJTlQzMiBjc3R5OworCS8qKiBudW1iZXIgb2YgcmVzb2x1dGlvbnMgKi8KKwlPUEpfVUlOVDMyIG51bXJlc29sdXRpb25zOworCS8qKiBjb2RlLWJsb2NrcyB3aWR0aCAqLworCU9QSl9VSU5UMzIgY2Jsa3c7CisJLyoqIGNvZGUtYmxvY2tzIGhlaWdodCAqLworCU9QSl9VSU5UMzIgY2Jsa2g7CisJLyoqIGNvZGUtYmxvY2sgY29kaW5nIHN0eWxlICovCisJT1BKX1VJTlQzMiBjYmxrc3R5OworCS8qKiBkaXNjcmV0ZSB3YXZlbGV0IHRyYW5zZm9ybSBpZGVudGlmaWVyICovCisJT1BKX1VJTlQzMiBxbWZiaWQ7CisJLyoqIHF1YW50aXNhdGlvbiBzdHlsZSAqLworCU9QSl9VSU5UMzIgcW50c3R5OworCS8qKiBzdGVwc2l6ZXMgdXNlZCBmb3IgcXVhbnRpemF0aW9uICovCisJb3BqX3N0ZXBzaXplX3Qgc3RlcHNpemVzW09QSl9KMktfTUFYQkFORFNdOworCS8qKiBudW1iZXIgb2YgZ3VhcmQgYml0cyAqLworCU9QSl9VSU5UMzIgbnVtZ2JpdHM7CisJLyoqIFJlZ2lvbiBPZiBJbnRlcmVzdCBzaGlmdCAqLworCU9QSl9JTlQzMiByb2lzaGlmdDsKKwkvKiogcHJlY2luY3Qgd2lkdGggKi8KKwlPUEpfVUlOVDMyIHByY3dbT1BKX0oyS19NQVhSTFZMU107CisJLyoqIHByZWNpbmN0IGhlaWdodCAqLworCU9QSl9VSU5UMzIgcHJjaFtPUEpfSjJLX01BWFJMVkxTXTsKKwkvKiogdGhlIGRjX2xldmVsX3NoaWZ0ICoqLworCU9QSl9JTlQzMiBtX2RjX2xldmVsX3NoaWZ0OworfQorb3BqX3RjY3BfdDsKKworCisKKy8qKgorICogRklYTUUgRE9DCisgKi8KK3R5cGVkZWYgc3RydWN0IG9wal9tY3RfZGF0YQoreworCUoyS19NQ1RfRUxFTUVOVF9UWVBFIG1fZWxlbWVudF90eXBlOworCUoyS19NQ1RfQVJSQVlfVFlQRQkgbV9hcnJheV90eXBlOworCU9QSl9VSU5UMzIJCQkgbV9pbmRleDsKKwlPUEpfQllURSAqCQkJIG1fZGF0YTsKKwlPUEpfVUlOVDMyCQkJIG1fZGF0YV9zaXplOworfQorb3BqX21jdF9kYXRhX3Q7CisKKy8qKgorICogRklYTUUgRE9DCisgKi8KK3R5cGVkZWYgc3RydWN0IG9wal9zaW1wbGVfbWNjX2RlY29ycmVsYXRpb25fZGF0YQoreworCU9QSl9VSU5UMzIJCQkgbV9pbmRleDsKKwlPUEpfVUlOVDMyCQkJIG1fbmJfY29tcHM7CisJb3BqX21jdF9kYXRhX3QgKgkgbV9kZWNvcnJlbGF0aW9uX2FycmF5OworCW9wal9tY3RfZGF0YV90ICoJIG1fb2Zmc2V0X2FycmF5OworCU9QSl9VSU5UMzIJCQkgbV9pc19pcnJldmVyc2libGUgOiAxOworfQorb3BqX3NpbXBsZV9tY2NfZGVjb3JyZWxhdGlvbl9kYXRhX3Q7CisKKy8qKgorVGlsZSBjb2RpbmcgcGFyYW1ldGVycyA6Cit0aGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHN0b3JlIGNvZGluZy9kZWNvZGluZyBwYXJhbWV0ZXJzIGNvbW1vbiB0byBhbGwKK3RpbGVzIChpbmZvcm1hdGlvbiBsaWtlIENPRCwgQ09DIGluIG1haW4gaGVhZGVyKQorKi8KK3R5cGVkZWYgc3RydWN0IG9wal90Y3AKK3sKKwkvKiogY29kaW5nIHN0eWxlICovCisJT1BKX1VJTlQzMiBjc3R5OworCS8qKiBwcm9ncmVzc2lvbiBvcmRlciAqLworCU9QSl9QUk9HX09SREVSIHByZzsKKwkvKiogbnVtYmVyIG9mIGxheWVycyAqLworCU9QSl9VSU5UMzIgbnVtbGF5ZXJzOworCU9QSl9VSU5UMzIgbnVtX2xheWVyc190b19kZWNvZGU7CisJLyoqIG11bHRpLWNvbXBvbmVudCB0cmFuc2Zvcm0gaWRlbnRpZmllciAqLworCU9QSl9VSU5UMzIgbWN0OworCS8qKiByYXRlcyBvZiBsYXllcnMgKi8KKwlPUEpfRkxPQVQzMiByYXRlc1sxMDBdOworCS8qKiBudW1iZXIgb2YgcHJvZ3Jlc3Npb24gb3JkZXIgY2hhbmdlcyAqLworCU9QSl9VSU5UMzIgbnVtcG9jczsKKwkvKiogcHJvZ3Jlc3Npb24gb3JkZXIgY2hhbmdlcyAqLworCW9wal9wb2NfdCBwb2NzWzMyXTsKKwkvKiogcGFja2V0IGhlYWRlciBzdG9yZSB0aGVyZSBmb3IgZnV0dXIgdXNlIGluIHQyX2RlY29kZV9wYWNrZXQgKi8KKwlPUEpfQllURSAqcHB0X2RhdGE7CisJLyoqIHVzZWQgdG8ga2VlcCBhIHRyYWNrIG9mIHRoZSBhbGxvY2F0ZWQgbWVtb3J5ICovCisJT1BKX0JZVEUgKnBwdF9idWZmZXI7CisJLyoqIE51bWJlciBvZiBieXRlcyBzdG9yZWQgaW5zaWRlIHBwdF9kYXRhKi8KKwlPUEpfVUlOVDMyIHBwdF9kYXRhX3NpemU7CisJLyoqIHNpemUgb2YgcHB0X2RhdGEqLworCU9QSl9VSU5UMzIgcHB0X2xlbjsKKwkvKiogYWRkIGZpeGVkX3F1YWxpdHkgKi8KKwlPUEpfRkxPQVQzMiBkaXN0b3JhdGlvWzEwMF07CisJLyoqIHRpbGUtY29tcG9uZW50IGNvZGluZyBwYXJhbWV0ZXJzICovCisJb3BqX3RjY3BfdCAqdGNjcHM7CisJLyoqIG51bWJlciBvZiB0aWxlIHBhcnRzIGZvciB0aGUgdGlsZS4gKi8KKwlPUEpfVUlOVDMyIG1fbmJfdGlsZV9wYXJ0czsKKwkvKiogZGF0YSBmb3IgdGhlIHRpbGUgKi8KKwlPUEpfQllURSAqCQltX2RhdGE7CisJLyoqIHNpemUgb2YgZGF0YSAqLworCU9QSl9VSU5UMzIJCW1fZGF0YV9zaXplOworCS8qKiBlbmNvZGluZyBub3JtcyAqLworCU9QSl9GTE9BVDY0ICoJbWN0X25vcm1zOworCS8qKiB0aGUgbWN0IGRlY29kaW5nIG1hdHJpeCAqLworCU9QSl9GTE9BVDMyICoJbV9tY3RfZGVjb2RpbmdfbWF0cml4OworCS8qKiB0aGUgbWN0IGNvZGluZyBtYXRyaXggKi8KKwlPUEpfRkxPQVQzMiAqCW1fbWN0X2NvZGluZ19tYXRyaXg7CisJLyoqIG1jdCByZWNvcmRzICovCisJb3BqX21jdF9kYXRhX3QgKiBtX21jdF9yZWNvcmRzOworCS8qKiB0aGUgbnVtYmVyIG9mIG1jdCByZWNvcmRzLiAqLworCU9QSl9VSU5UMzIgbV9uYl9tY3RfcmVjb3JkczsKKwkvKiogdGhlIG1heCBudW1iZXIgb2YgbWN0IHJlY29yZHMuICovCisJT1BKX1VJTlQzMiBtX25iX21heF9tY3RfcmVjb3JkczsKKwkvKiogbWNjIHJlY29yZHMgKi8KKwlvcGpfc2ltcGxlX21jY19kZWNvcnJlbGF0aW9uX2RhdGFfdCAqIG1fbWNjX3JlY29yZHM7CisJLyoqIHRoZSBudW1iZXIgb2YgbWN0IHJlY29yZHMuICovCisJT1BKX1VJTlQzMiBtX25iX21jY19yZWNvcmRzOworCS8qKiB0aGUgbWF4IG51bWJlciBvZiBtY3QgcmVjb3Jkcy4gKi8KKwlPUEpfVUlOVDMyIG1fbmJfbWF4X21jY19yZWNvcmRzOworCisKKwkvKioqKiogRkxBR1MgKioqKioqKi8KKwkvKiogSWYgcHB0ID09IDEgLS0+IHRoZXJlIHdhcyBhIFBQVCBtYXJrZXIgZm9yIHRoZSBwcmVzZW50IHRpbGUgKi8KKwlPUEpfVUlOVDMyIHBwdCA6IDE7CisJLyoqIGluZGljYXRlcyBpZiBhIFBPQyBtYXJrZXIgaGFzIGJlZW4gdXNlZCBPOk5PLCAxOllFUyAqLworCU9QSl9VSU5UMzIgUE9DIDogMTsKK30gb3BqX3RjcF90OworCisKKworCit0eXBlZGVmIHN0cnVjdCBvcGpfZW5jb2RpbmdfcGFyYW0KK3sKKwkvKiogRGlnaXRhbCBjaW5lbWEgcHJvZmlsZSovCisJT1BKX0NJTkVNQV9NT0RFIG1fY2luZW1hOworCS8qKiBNYXhpbXVtIHJhdGUgZm9yIGVhY2ggY29tcG9uZW50LiBJZiA9PSAwLCBjb21wb25lbnQgc2l6ZSBsaW1pdGF0aW9uIGlzIG5vdCBjb25zaWRlcmVkICovCisJT1BKX1VJTlQzMiBtX21heF9jb21wX3NpemU7CisJLyoqIFBvc2l0aW9uIG9mIHRpbGUgcGFydCBmbGFnIGluIHByb2dyZXNzaW9uIG9yZGVyKi8KKwlPUEpfSU5UMzIgbV90cF9wb3M7CisJLyoqIGZpeGVkIGxheWVyICovCisJT1BKX0lOVDMyICptX21hdHJpY2U7CisJLyoqIEZsYWcgZGV0ZXJtaW5pbmcgdGlsZSBwYXJ0IGdlbmVyYXRpb24qLworCU9QSl9CWVRFIG1fdHBfZmxhZzsKKwkvKiogYWxsb2NhdGlvbiBieSByYXRlL2Rpc3RvcnRpb24gKi8KKwlPUEpfVUlOVDMyIG1fZGlzdG9fYWxsb2MgOiAxOworCS8qKiBhbGxvY2F0aW9uIGJ5IGZpeGVkIGxheWVyICovCisJT1BKX1VJTlQzMiBtX2ZpeGVkX2FsbG9jIDogMTsKKwkvKiogYWRkIGZpeGVkX3F1YWxpdHkgKi8KKwlPUEpfVUlOVDMyIG1fZml4ZWRfcXVhbGl0eSA6IDE7CisJLyoqIEVuYWJsaW5nIFRpbGUgcGFydCBnZW5lcmF0aW9uKi8KKwlPUEpfVUlOVDMyIG1fdHBfb24gOiAxOworfQorb3BqX2VuY29kaW5nX3BhcmFtX3Q7CisKK3R5cGVkZWYgc3RydWN0IG9wal9kZWNvZGluZ19wYXJhbQoreworCS8qKiBpZiAhPSAwLCB0aGVuIG9yaWdpbmFsIGRpbWVuc2lvbiBkaXZpZGVkIGJ5IDJeKHJlZHVjZSk7IGlmID09IDAgb3Igbm90IHVzZWQsIGltYWdlIGlzIGRlY29kZWQgdG8gdGhlIGZ1bGwgcmVzb2x1dGlvbiAqLworCU9QSl9VSU5UMzIgbV9yZWR1Y2U7CisJLyoqIGlmICE9IDAsIHRoZW4gb25seSB0aGUgZmlyc3QgImxheWVyIiBsYXllcnMgYXJlIGRlY29kZWQ7IGlmID09IDAgb3Igbm90IHVzZWQsIGFsbCB0aGUgcXVhbGl0eSBsYXllcnMgYXJlIGRlY29kZWQgKi8KKwlPUEpfVUlOVDMyIG1fbGF5ZXI7Cit9CitvcGpfZGVjb2RpbmdfcGFyYW1fdDsKKworCisvKioKKyAqIENvZGluZyBwYXJhbWV0ZXJzCisgKi8KK3R5cGVkZWYgc3RydWN0IG9wal9jcAoreworCS8qKiBTaXplIG9mIHRoZSBpbWFnZSBpbiBiaXRzKi8KKwkvKmludCBpbWdfc2l6ZTsqLworCS8qKiBSc2l6Ki8KKwlPUEpfUlNJWl9DQVBBQklMSVRJRVMgcnNpejsKKwkvKiogWFRPc2l6ICovCisJT1BKX1VJTlQzMiB0eDA7IC8qIE1TRCBzZWUgbm9ybSAqLworCS8qKiBZVE9zaXogKi8KKwlPUEpfVUlOVDMyIHR5MDsgLyogTVNEIHNlZSBub3JtICovCisJLyoqIFhUc2l6ICovCisJT1BKX1VJTlQzMiB0ZHg7CisJLyoqIFlUc2l6ICovCisJT1BKX1VJTlQzMiB0ZHk7CisJLyoqIGNvbW1lbnQgKi8KKwlPUEpfQ0hBUiAqY29tbWVudDsKKwkvKiogbnVtYmVyIG9mIHRpbGVzIGluIHdpZHRoICovCisJT1BKX1VJTlQzMiB0dzsKKwkvKiogbnVtYmVyIG9mIHRpbGVzIGluIGhlaWd0aCAqLworCU9QSl9VSU5UMzIgdGg7CisKKwkvKiogcGFja2V0IGhlYWRlciBzdG9yZSB0aGVyZSBmb3IgZnV0dXIgdXNlIGluIHQyX2RlY29kZV9wYWNrZXQgKi8KKwlPUEpfQllURSAqcHBtX2RhdGE7CisJLyoqIHNpemUgb2YgdGhlIHBwbV9kYXRhKi8KKwlPUEpfVUlOVDMyIHBwbV9sZW47CisJLyoqIHNpemUgb2YgdGhlIHBwbV9kYXRhKi8KKwlPUEpfVUlOVDMyIHBwbV9kYXRhX3JlYWQ7CisKKwlPUEpfQllURSAqcHBtX2RhdGFfY3VycmVudDsKKworCS8qKiBwYWNrZXQgaGVhZGVyIHN0b3JhZ2Ugb3JpZ2luYWwgYnVmZmVyICovCisJT1BKX0JZVEUgKnBwbV9idWZmZXI7CisJLyoqIHBvaW50ZXIgcmVtYWluaW5nIG9uIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBmaXJzdCBoZWFkZXIgaWYgcHBtIGlzIHVzZWQgKi8KKwlPUEpfQllURSAqcHBtX2RhdGFfZmlyc3Q7CisJLyoqIE51bWJlciBvZiBieXRlcyBhY3R1YWxseSBzdG9yZWQgaW5zaWRlIHRoZSBwcG1fZGF0YSAqLworCU9QSl9VSU5UMzIgcHBtX2RhdGFfc2l6ZTsKKwkvKiogdXNlIGluIGNhc2Ugb2YgbXVsdGlwbGUgbWFya2VyIFBQTSAobnVtYmVyIG9mIGluZm8gYWxyZWFkeSBzdG9yZSkgKi8KKwlPUEpfSU5UMzIgcHBtX3N0b3JlOworCS8qKiB1c2UgaW4gY2FzZSBvZiBtdWx0aXBsZSBtYXJrZXIgUFBNIChjYXNlIG9uIG5vbi1maW5pc2hlZCBwcmV2aW91cyBpbmZvKSAqLworCU9QSl9JTlQzMiBwcG1fcHJldmlvdXM7CisKKwkvKiogdGlsZSBjb2RpbmcgcGFyYW1ldGVycyAqLworCW9wal90Y3BfdCAqdGNwczsKKworCXVuaW9uCisJeworCQlvcGpfZGVjb2RpbmdfcGFyYW1fdCBtX2RlYzsKKwkJb3BqX2VuY29kaW5nX3BhcmFtX3QgbV9lbmM7CisJfQorCW1fc3BlY2lmaWNfcGFyYW07CisKKworLyogVW5pUEc+PiAqLworI2lmZGVmIFVTRV9KUFdMCisJLyoqIGVuYWJsZXMgd3JpdGluZyBvZiBFUEMgaW4gTUgsIHRodXMgYWN0aXZhdGluZyBKUFdMICovCisJT1BKX0JPT0wgZXBjX29uOworCS8qKiBlbmFibGVzIHdyaXRpbmcgb2YgRVBCLCBpbiBjYXNlIG9mIGFjdGl2YXRlZCBKUFdMICovCisJT1BKX0JPT0wgZXBiX29uOworCS8qKiBlbmFibGVzIHdyaXRpbmcgb2YgRVNELCBpbiBjYXNlIG9mIGFjdGl2YXRlZCBKUFdMICovCisJT1BKX0JPT0wgZXNkX29uOworCS8qKiBlbmFibGVzIHdyaXRpbmcgb2YgaW5mb3JtYXRpdmUgdGVjaG5pcXVlcyBvZiBFU0QsIGluIGNhc2Ugb2YgYWN0aXZhdGVkIEpQV0wgKi8KKwlPUEpfQk9PTCBpbmZvX29uOworCS8qKiBlbmFibGVzIHdyaXRpbmcgb2YgUkVELCBpbiBjYXNlIG9mIGFjdGl2YXRlZCBKUFdMICovCisJT1BKX0JPT0wgcmVkX29uOworCS8qKiBlcnJvciBwcm90ZWN0aW9uIG1ldGhvZCBmb3IgTUggKDAsMSwxNiwzMiwzNy0xMjgpICovCisJaW50IGhwcm90X01IOworCS8qKiB0aWxlIG51bWJlciBvZiBoZWFkZXIgcHJvdGVjdGlvbiBzcGVjaWZpY2F0aW9uICg+PTApICovCisJaW50IGhwcm90X1RQSF90aWxlbm9bSlBXTF9NQVhfTk9fVElMRVNQRUNTXTsKKwkvKiogZXJyb3IgcHJvdGVjdGlvbiBtZXRob2RzIGZvciBUUEhzICgwLDEsMTYsMzIsMzctMTI4KSAqLworCWludCBocHJvdF9UUEhbSlBXTF9NQVhfTk9fVElMRVNQRUNTXTsKKwkvKiogdGlsZSBudW1iZXIgb2YgcGFja2V0IHByb3RlY3Rpb24gc3BlY2lmaWNhdGlvbiAoPj0wKSAqLworCWludCBwcHJvdF90aWxlbm9bSlBXTF9NQVhfTk9fUEFDS1NQRUNTXTsKKwkvKiogcGFja2V0IG51bWJlciBvZiBwYWNrZXQgcHJvdGVjdGlvbiBzcGVjaWZpY2F0aW9uICg+PTApICovCisJaW50IHBwcm90X3BhY2tub1tKUFdMX01BWF9OT19QQUNLU1BFQ1NdOworCS8qKiBlcnJvciBwcm90ZWN0aW9uIG1ldGhvZHMgZm9yIHBhY2tldHMgKDAsMSwxNiwzMiwzNy0xMjgpICovCisJaW50IHBwcm90W0pQV0xfTUFYX05PX1BBQ0tTUEVDU107CisJLyoqIGVuYWJsZXMgd3JpdGluZyBvZiBFU0QsICgwLzIvNCBieXRlcykgKi8KKwlpbnQgc2Vuc19zaXplOworCS8qKiBzZW5zaXRpdml0eSBhZGRyZXNzaW5nIHNpemUgKDA9YXV0by8yLzQgYnl0ZXMpICovCisJaW50IHNlbnNfYWRkcjsKKwkvKiogc2Vuc2l0aXZpdHkgcmFuZ2UgKDAtMykgKi8KKwlpbnQgc2Vuc19yYW5nZTsKKwkvKiogc2Vuc2l0aXZpdHkgbWV0aG9kIGZvciBNSCAoLTEsMC03KSAqLworCWludCBzZW5zX01IOworCS8qKiB0aWxlIG51bWJlciBvZiBzZW5zaXRpdml0eSBzcGVjaWZpY2F0aW9uICg+PTApICovCisJaW50IHNlbnNfVFBIX3RpbGVub1tKUFdMX01BWF9OT19USUxFU1BFQ1NdOworCS8qKiBzZW5zaXRpdml0eSBtZXRob2RzIGZvciBUUEhzICgtMSwwLTcpICovCisJaW50IHNlbnNfVFBIW0pQV0xfTUFYX05PX1RJTEVTUEVDU107CisJLyoqIGVuYWJsZXMgSlBXTCBjb3JyZWN0aW9uIGF0IHRoZSBkZWNvZGVyICovCisJT1BKX0JPT0wgY29ycmVjdDsKKwkvKiogZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbXBvbmVudHMgYXQgdGhlIGRlY29kZXIgKi8KKwlpbnQgZXhwX2NvbXBzOworCS8qKiBtYXhpbXVtIG51bWJlciBvZiB0aWxlcyBhdCB0aGUgZGVjb2RlciAqLworCU9QSl9VSU5UMzIgbWF4X3RpbGVzOworI2VuZGlmIC8qIFVTRV9KUFdMICovCisKKwkvKioqKioqKiogRkxBR1MgKioqKioqKioqLworCS8qKiBpZiBwcG0gPT0gMSAtLT4gdGhlcmUgd2FzIGEgUFBNIG1hcmtlciovCisJT1BKX1VJTlQzMiBwcG0gOiAxOworCS8qKiB0ZWxscyBpZiB0aGUgcGFyYW1ldGVyIGlzIGEgY29kaW5nIG9yIGRlY29kaW5nIG9uZSAqLworCU9QSl9VSU5UMzIgbV9pc19kZWNvZGVyIDogMTsKKy8qIDw8VW5pUEcgKi8KK30gb3BqX2NwX3Q7CisKKwordHlwZWRlZiBzdHJ1Y3Qgb3BqX2oya19kZWMKK3sKKwkvKiogbG9jYXRlIGluIHdoaWNoIHBhcnQgb2YgdGhlIGNvZGVzdHJlYW0gdGhlIGRlY29kZXIgaXMgKG1haW4gaGVhZGVyLCB0aWxlIGhlYWRlciwgZW5kKSAqLworCU9QSl9VSU5UMzIgbV9zdGF0ZTsKKwkvKioKKwkgKiBzdG9yZSBkZWNvZGluZyBwYXJhbWV0ZXJzIGNvbW1vbiB0byBhbGwgdGlsZXMgKGluZm9ybWF0aW9uIGxpa2UgQ09ELCBDT0MgaW4gbWFpbiBoZWFkZXIpCisJICovCisJb3BqX3RjcF90ICptX2RlZmF1bHRfdGNwOworCU9QSl9CWVRFICAqbV9oZWFkZXJfZGF0YTsKKwlPUEpfVUlOVDMyIG1faGVhZGVyX2RhdGFfc2l6ZTsKKwkvKiogdG8gdGVsbCB0aGUgdGlsZSBwYXJ0IGxlbmd0aCAqLworCU9QSl9VSU5UMzIgbV9zb3RfbGVuZ3RoOworCS8qKiBPbmx5IHRpbGVzIGluZGV4IGluIHRoZSBjb3JyZWN0IHJhbmdlIHdpbGwgYmUgZGVjb2RlZC4qLworCU9QSl9VSU5UMzIgbV9zdGFydF90aWxlX3g7CisJT1BKX1VJTlQzMiBtX3N0YXJ0X3RpbGVfeTsKKwlPUEpfVUlOVDMyIG1fZW5kX3RpbGVfeDsKKwlPUEpfVUlOVDMyIG1fZW5kX3RpbGVfeTsKKwkvKioKKwkgKiBEZWNvZGVkIGFyZWEgc2V0IGJ5IHRoZSB1c2VyCisJICovCisJT1BKX1VJTlQzMiBtX0RBX3gwOworCU9QSl9VSU5UMzIgbV9EQV95MDsKKwlPUEpfVUlOVDMyIG1fREFfeDE7CisJT1BKX1VJTlQzMiBtX0RBX3kxOworCisJLyoqIEluZGV4IG9mIHRoZSB0aWxlIHRvIGRlY29kZSAodXNlZCBpbiBnZXRfdGlsZSkgKi8KKwlPUEpfSU5UMzIgbV90aWxlX2luZF90b19kZWM7CisJLyoqIFBvc2l0aW9uIG9mIHRoZSBsYXN0IFNPVCBtYXJrZXIgcmVhZCAqLworCU9QSl9PRkZfVCBtX2xhc3Rfc290X3JlYWRfcG9zOworCisJLyoqCisJICogSW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB0aWxlLXBhcnQgaXMgYXNzdW1lIGFzIHRoZSBsYXN0IHRpbGUgcGFydCBvZiB0aGUgY29kZXN0cmVhbS4KKwkgKiBJdCBpcyB1c2VmdWwgaW4gdGhlIGNhc2Ugb2YgUFNvdCBpcyBlcXVhbCB0byB6ZXJvLiBUaGUgc290IGxlbmd0aCB3aWxsIGJlIGNvbXB1dGUgaW4gdGhlCisJICogU09EIHJlYWRlciBmdW5jdGlvbi4gRklYTUUgTk9UIFVTRUQgZm9yIHRoZSBtb21lbnQKKwkgKi8KKwlPUEpfQk9PTCAgIG1fbGFzdF90aWxlX3BhcnQ7CisJLyoqIHRvIHRlbGwgdGhhdCBhIHRpbGUgY2FuIGJlIGRlY29kZWQuICovCisJT1BKX1VJTlQzMiBtX2Nhbl9kZWNvZGUJCQk6IDE7CisJT1BKX1VJTlQzMiBtX2Rpc2NhcmRfdGlsZXMJCTogMTsKKwlPUEpfVUlOVDMyIG1fc2tpcF9kYXRhCQkJOiAxOworCit9IG9wal9qMmtfZGVjX3Q7CisKK3R5cGVkZWYgc3RydWN0IG9wal9qMmtfZW5jCit7CisJLyoqIFRpbGUgcGFydCBudW1iZXIsIHJlZ2FyZGxlc3Mgb2YgcG9jLCBmb3IgZWFjaCBuZXcgcG9jLCB0cCBpcyByZXNldCB0byAxKi8KKwlPUEpfVUlOVDMyIG1fY3VycmVudF9wb2NfdGlsZV9wYXJ0X251bWJlcjsgLyogdHBfbnVtICovCisKKwkvKiogVGlsZSBwYXJ0IG51bWJlciBjdXJyZW50bHkgY29kaW5nLCB0YWtpbmcgaW50byBhY2NvdW50IFBPQy4gbV9jdXJyZW50X3RpbGVfcGFydF9udW1iZXIgaG9sZHMgdGhlIHRvdGFsIG51bWJlciBvZiB0aWxlIHBhcnRzIHdoaWxlIGVuY29kaW5nIHRoZSBsYXN0IHRpbGUgcGFydC4qLworCU9QSl9VSU5UMzIgbV9jdXJyZW50X3RpbGVfcGFydF9udW1iZXI7IC8qY3VyX3RwX251bSAqLworCisJLyoqCisJbG9jYXRlIHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgVExNIG1hcmtlcgorCWFmdGVyIGVuY29kaW5nIHRoZSB0aWxlcGFydCwgYSBqdW1wIChpbiBqMmtfd3JpdGVfc29kKSBpcyBkb25lIHRvIHRoZSBUTE0gbWFya2VyIHRvIHN0b3JlIHRoZSB2YWx1ZSBvZiBpdHMgbGVuZ3RoLgorCSovCisgICAgT1BKX09GRl9UIG1fdGxtX3N0YXJ0OworCS8qKgorCSAqIFN0b3JlcyB0aGUgc2l6ZXMgb2YgdGhlIHRsbS4KKwkgKi8KKwlPUEpfQllURSAqIG1fdGxtX3NvdF9vZmZzZXRzX2J1ZmZlcjsKKwkvKioKKwkgKiBUaGUgY3VycmVudCBvZmZzZXQgb2YgdGhlIHRsbSBidWZmZXIuCisJICovCisJT1BKX0JZVEUgKiBtX3RsbV9zb3Rfb2Zmc2V0c19jdXJyZW50OworCisJLyoqIFRvdGFsIG51bSBvZiB0aWxlIHBhcnRzIGluIHdob2xlIGltYWdlID0gbnVtIHRpbGVzKiBudW0gdGlsZXBhcnRzIGluIGVhY2ggdGlsZSovCisJLyoqIHVzZWQgaW4gVExNbWFya2VyKi8KKwlPUEpfVUlOVDMyIG1fdG90YWxfdGlsZV9wYXJ0czsJIC8qIHRvdG51bV90cCAqLworCisJLyogZW5jb2RlZCBkYXRhIGZvciBhIHRpbGUgKi8KKwlPUEpfQllURSAqIG1fZW5jb2RlZF90aWxlX2RhdGE7CisKKwkvKiBzaXplIG9mIHRoZSBlbmNvZGVkX2RhdGEgKi8KKwlPUEpfVUlOVDMyIG1fZW5jb2RlZF90aWxlX3NpemU7CisKKwkvKiBlbmNvZGVkIGRhdGEgZm9yIGEgdGlsZSAqLworCU9QSl9CWVRFICogbV9oZWFkZXJfdGlsZV9kYXRhOworCisJLyogc2l6ZSBvZiB0aGUgZW5jb2RlZF9kYXRhICovCisJT1BKX1VJTlQzMiBtX2hlYWRlcl90aWxlX2RhdGFfc2l6ZTsKKworCit9IG9wal9qMmtfZW5jX3Q7CisKKworCitzdHJ1Y3Qgb3BqX3RjZDsKKy8qKgorSlBFRy0yMDAwIGNvZGVzdHJlYW0gcmVhZGVyL3dyaXRlcgorKi8KK3R5cGVkZWYgc3RydWN0IG9wal9qMmsKK3sKKwkvKiBKMksgY29kZXN0cmVhbSBpcyBkZWNvZGVkKi8KKwlPUEpfQk9PTCBtX2lzX2RlY29kZXI7CisKKwkvKiBGSVhNRSBET0MqLworCXVuaW9uCisJeworCQlvcGpfajJrX2RlY190IG1fZGVjb2RlcjsKKwkJb3BqX2oya19lbmNfdCBtX2VuY29kZXI7CisJfQorCW1fc3BlY2lmaWNfcGFyYW07CisKKwkvKiogcG9pbnRlciB0byB0aGUgaW50ZXJuYWwvcHJpdmF0ZSBlbmNvZGVkIC8gZGVjb2RlZCBpbWFnZSAqLworCW9wal9pbWFnZV90KiBtX3ByaXZhdGVfaW1hZ2U7CisKKwkvKiBwb2ludGVyIHRvIHRoZSBvdXRwdXQgaW1hZ2UgKGRlY29kZWQpKi8KKwlvcGpfaW1hZ2VfdCogbV9vdXRwdXRfaW1hZ2U7CisKKwkvKiogQ29kaW5nIHBhcmFtZXRlcnMgKi8KKwlvcGpfY3BfdCBtX2NwOworCisJLyoqIHRoZSBsaXN0IG9mIHByb2NlZHVyZXMgdG8gZXhlYyAqKi8KKwlvcGpfcHJvY2VkdXJlX2xpc3RfdCAqCW1fcHJvY2VkdXJlX2xpc3Q7CisKKwkvKiogdGhlIGxpc3Qgb2YgdmFsaWRhdGlvbiBwcm9jZWR1cmVzIHRvIGZvbGxvdyB0byBtYWtlIHN1cmUgdGhlIGNvZGUgaXMgdmFsaWQgKiovCisJb3BqX3Byb2NlZHVyZV9saXN0X3QgKgltX3ZhbGlkYXRpb25fbGlzdDsKKworCS8qKiBoZWxwZXIgdXNlZCB0byB3cml0ZSB0aGUgaW5kZXggZmlsZSAqLworCW9wal9jb2Rlc3RyZWFtX2luZGV4X3QgKmNzdHJfaW5kZXg7CisKKwkvKiogbnVtYmVyIG9mIHRoZSB0aWxlIGN1cmVudGx5IGNvbmNlcm4gYnkgY29kaW5nL2RlY29kaW5nICovCisJT1BKX1VJTlQzMiBtX2N1cnJlbnRfdGlsZV9udW1iZXI7CisKKwkvKiogdGhlIGN1cnJlbnQgdGlsZSBjb2Rlci9kZWNvZGVyICoqLworCXN0cnVjdCBvcGpfdGNkICoJbV90Y2Q7CisKK30KK29wal9qMmtfdDsKKworCisKKworLyoqIEBuYW1lIEV4cG9ydGVkIGZ1bmN0aW9ucyAqLworLypAeyovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKioKK1NldHVwIHRoZSBkZWNvZGVyIGRlY29kaW5nIHBhcmFtZXRlcnMgdXNpbmcgdXNlciBwYXJhbWV0ZXJzLgorRGVjb2RpbmcgcGFyYW1ldGVycyBhcmUgcmV0dXJuZWQgaW4gajJrLT5jcC4gCitAcGFyYW0gajJrIEoySyBkZWNvbXByZXNzb3IgaGFuZGxlCitAcGFyYW0gcGFyYW1ldGVycyBkZWNvbXByZXNzaW9uIHBhcmFtZXRlcnMKKyovCit2b2lkIG9wal9qMmtfc2V0dXBfZGVjb2RlcihvcGpfajJrX3QgKmoyaywgb3BqX2RwYXJhbWV0ZXJzX3QgKnBhcmFtZXRlcnMpOworCisvKioKKyAqIENyZWF0ZXMgYSBKMksgY29tcHJlc3Npb24gc3RydWN0dXJlCisgKgorICogQHJldHVybiBSZXR1cm5zIGEgaGFuZGxlIHRvIGEgSjJLIGNvbXByZXNzb3IgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBOVUxMIG90aGVyd2lzZQorKi8KK29wal9qMmtfdCogb3BqX2oya19jcmVhdGVfY29tcHJlc3Modm9pZCk7CisKKwordm9pZCBvcGpfajJrX3NldHVwX2VuY29kZXIoCW9wal9qMmtfdCAqcF9qMmssCisJCQkJCQkgICAgb3BqX2NwYXJhbWV0ZXJzX3QgKnBhcmFtZXRlcnMsCisJCQkJCQkgICAgb3BqX2ltYWdlX3QgKmltYWdlLAorCQkJCQkJICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisKKy8qKgorQ29udmVydHMgYW4gZW51bSB0eXBlIHByb2dyZXNzaW9uIG9yZGVyIHRvIHN0cmluZyB0eXBlCisqLworY2hhciAqb3BqX2oya19jb252ZXJ0X3Byb2dyZXNzaW9uX29yZGVyKE9QSl9QUk9HX09SREVSIHByZ19vcmRlcik7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKkB9Ki8KKworLypAfSovCisKKy8qKgorICogRW5kcyB0aGUgZGVjb21wcmVzc2lvbiBwcm9jZWR1cmVzIGFuZCBwb3NzaWJpbGl5IGFkZCBkYXRhIHRvIGJlIHJlYWQgYWZ0ZXIgdGhlCisgKiBjb2Rlc3RyZWFtLgorICovCitPUEpfQk9PTCBvcGpfajJrX2VuZF9kZWNvbXByZXNzKG9wal9qMmtfdCAqajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisKKy8qKgorICogUmVhZHMgYSBqcGVnMjAwMCBjb2Rlc3RyZWFtIGhlYWRlciBzdHJ1Y3R1cmUuCisgKgorICogQHBhcmFtIHBfc3RyZWFtIHRoZSBzdHJlYW0gdG8gcmVhZCBkYXRhIGZyb20uCisgKiBAcGFyYW0gcF9qMmsgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtIHBfaW1hZ2UgRklYTUUgRE9DCisgKiBAcGFyYW0gcF9tYW5hZ2VyIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKgorICogQHJldHVybiB0cnVlIGlmIHRoZSBib3ggaXMgdmFsaWQuCisgKi8KK09QSl9CT09MIG9wal9qMmtfcmVhZF9oZWFkZXIoCW9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2oya190KiBwX2oyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QqKiBwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QqIHBfbWFuYWdlciApOworCisKKy8qKgorICogRGVzdHJveXMgYSBqcGVnMjAwMCBjb2RlYy4KKyAqCisgKiBAcGFyYW0JcF9qMmsJdGhlIGpwZWcyMDAwMCBzdHJ1Y3R1cmUgdG8gZGVzdHJveS4KKyAqLwordm9pZCBvcGpfajJrX2Rlc3Ryb3kgKG9wal9qMmtfdCAqcF9qMmspOworCisvKioKKyAqIERlc3Ryb3lzIGEgY29kZXN0cmVhbSBpbmRleCBzdHJ1Y3R1cmUuCisgKgorICogQHBhcmFtCXBfY3N0cl9pbmQJdGhlIGNvZGVzdHJlYW0gaW5kZXggcGFyYW1ldGVyIHRvIGRlc3Ryb3kuCisgKi8KK3ZvaWQgajJrX2Rlc3Ryb3lfY3N0cl9pbmRleCAob3BqX2NvZGVzdHJlYW1faW5kZXhfdCAqcF9jc3RyX2luZCk7CisKKy8qKgorICogRGVjb2RlIHRpbGUgZGF0YS4KKyAqIEBwYXJhbQlwX2oyawkJdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtCXBfdGlsZV9pbmRleAorICogQHBhcmFtIHBfZGF0YSAgICAgICBGSVhNRSBET0MKKyAqIEBwYXJhbSBwX2RhdGFfc2l6ZSAgRklYTUUgRE9DCisgKiBAcGFyYW0JcF9zdHJlYW0JCQl0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0JcF9tYW5hZ2VyCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKi8KK09QSl9CT09MIG9wal9qMmtfZGVjb2RlX3RpbGUgKCAgb3BqX2oya190ICogcF9qMmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBSZWFkcyBhIHRpbGUgaGVhZGVyLgorICogQHBhcmFtCXBfajJrCQl0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0JcF90aWxlX2luZGV4IEZJWE1FIERPQworICogQHBhcmFtCXBfZGF0YV9zaXplIEZJWE1FIERPQworICogQHBhcmFtCXBfdGlsZV94MCBGSVhNRSBET0MKKyAqIEBwYXJhbQlwX3RpbGVfeTAgRklYTUUgRE9DCisgKiBAcGFyYW0JcF90aWxlX3gxIEZJWE1FIERPQworICogQHBhcmFtCXBfdGlsZV95MSBGSVhNRSBET0MKKyAqIEBwYXJhbQlwX25iX2NvbXBzIEZJWE1FIERPQworICogQHBhcmFtCXBfZ29fb24gRklYTUUgRE9DCisgKiBAcGFyYW0JcF9zdHJlYW0JCQl0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0JcF9tYW5hZ2VyCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKi8KK09QSl9CT09MIG9wal9qMmtfcmVhZF90aWxlX2hlYWRlciAoIG9wal9qMmtfdCAqIHBfajJrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfdGlsZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdGlsZV94MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdGlsZV95MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdGlsZV94MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdGlsZV95MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX25iX2NvbXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JPT0wgKiBwX2dvX29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKworLyoqCisgKiBTZXRzIHRoZSBnaXZlbiBhcmVhIHRvIGJlIGRlY29kZWQuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCByaWdodCBhZnRlciBvcGpfcmVhZF9oZWFkZXIgYW5kIGJlZm9yZSBhbnkgdGlsZSBoZWFkZXIgcmVhZGluZy4KKyAqCisgKiBAcGFyYW0JcF9qMmsJCQl0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0JcF9pbWFnZSAgICAgRklYTUUgRE9DCisgKiBAcGFyYW0JcF9zdGFydF94CQl0aGUgbGVmdCBwb3NpdGlvbiBvZiB0aGUgcmVjdGFuZ2xlIHRvIGRlY29kZSAoaW4gaW1hZ2UgY29vcmRpbmF0ZXMpLgorICogQHBhcmFtCXBfc3RhcnRfeQkJdGhlIHVwIHBvc2l0aW9uIG9mIHRoZSByZWN0YW5nbGUgdG8gZGVjb2RlIChpbiBpbWFnZSBjb29yZGluYXRlcykuCisgKiBAcGFyYW0JcF9lbmRfeAkJCXRoZSByaWdodCBwb3NpdGlvbiBvZiB0aGUgcmVjdGFuZ2xlIHRvIGRlY29kZSAoaW4gaW1hZ2UgY29vcmRpbmF0ZXMpLgorICogQHBhcmFtCXBfZW5kX3kJCQl0aGUgYm90dG9tIHBvc2l0aW9uIG9mIHRoZSByZWN0YW5nbGUgdG8gZGVjb2RlIChpbiBpbWFnZSBjb29yZGluYXRlcykuCisgKiBAcGFyYW0JcF9tYW5hZ2VyCQl0aGUgdXNlciBldmVudCBtYW5hZ2VyCisgKgorICogQHJldHVybgl0cnVlCQkJaWYgdGhlIGFyZWEgY291bGQgYmUgc2V0LgorICovCitPUEpfQk9PTCBvcGpfajJrX3NldF9kZWNvZGVfYXJlYSgJb3BqX2oya190ICpwX2oyaywKKwkJCQkJCQkJICAgIG9wal9pbWFnZV90KiBwX2ltYWdlLAorCQkJCQkJCQkgICAgT1BKX0lOVDMyIHBfc3RhcnRfeCwgT1BKX0lOVDMyIHBfc3RhcnRfeSwKKwkJCQkJCQkJICAgIE9QSl9JTlQzMiBwX2VuZF94LCBPUEpfSU5UMzIgcF9lbmRfeSwKKwkJCQkJCQkJICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIENyZWF0ZXMgYSBKMksgZGVjb21wcmVzc2lvbiBzdHJ1Y3R1cmUuCisgKgorICogQHJldHVybiBhIGhhbmRsZSB0byBhIEoySyBkZWNvbXByZXNzb3IgaWYgc3VjY2Vzc2Z1bCwgTlVMTCBvdGhlcndpc2UuCisgKi8KK29wal9qMmtfdCogb3BqX2oya19jcmVhdGVfZGVjb21wcmVzcyh2b2lkKTsKKworCisvKioKKyAqIER1bXAgc29tZSBlbGVtZW50cyBmcm9tIHRoZSBKMksgZGVjb21wcmVzc2lvbiBzdHJ1Y3R1cmUgLgorICoKKyAqQHBhcmFtIHBfajJrCQkJCXRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqQHBhcmFtIGZsYWcJCQkJZmxhZyB0byBkZXNjcmliZSB3aGF0IGVsbWVudHMgYXJlIGR1bXAuCisgKkBwYXJhbSBvdXRfc3RyZWFtCQkJb3V0cHV0IHN0cmVhbSB3aGVyZSBkdW1wIHRoZSBlbGVtZW50cy4KKyAqCisqLwordm9pZCBqMmtfZHVtcCAob3BqX2oya190KiBwX2oyaywgT1BKX0lOVDMyIGZsYWcsIEZJTEUqIG91dF9zdHJlYW0pOworCisKKworLyoqCisgKiBEdW1wIGFuIGltYWdlIGhlYWRlciBzdHJ1Y3R1cmUuCisgKgorICpAcGFyYW0gaW1hZ2UJCQl0aGUgaW1hZ2UgaGVhZGVyIHRvIGR1bXAuCisgKkBwYXJhbSBkZXZfZHVtcF9mbGFnCQlmbGFnIHRvIGRlc2NyaWJlIGlmIHdlIGFyZSBpbiB0aGUgY2FzZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZSBvdXRzaWRlIGoya19kdW1wIGZ1bmN0aW9uCisgKkBwYXJhbSBvdXRfc3RyZWFtCQkJb3V0cHV0IHN0cmVhbSB3aGVyZSBkdW1wIHRoZSBlbGVtZW50cy4KKyAqLwordm9pZCBqMmtfZHVtcF9pbWFnZV9oZWFkZXIob3BqX2ltYWdlX3QqIGltYWdlLCBPUEpfQk9PTCBkZXZfZHVtcF9mbGFnLCBGSUxFKiBvdXRfc3RyZWFtKTsKKworLyoqCisgKiBEdW1wIGEgY29tcG9uZW50IGltYWdlIGhlYWRlciBzdHJ1Y3R1cmUuCisgKgorICpAcGFyYW0gY29tcAkJdGhlIGNvbXBvbmVudCBpbWFnZSBoZWFkZXIgdG8gZHVtcC4KKyAqQHBhcmFtIGRldl9kdW1wX2ZsYWcJCWZsYWcgdG8gZGVzY3JpYmUgaWYgd2UgYXJlIGluIHRoZSBjYXNlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdXNlIG91dHNpZGUgajJrX2R1bXAgZnVuY3Rpb24KKyAqQHBhcmFtIG91dF9zdHJlYW0JCQlvdXRwdXQgc3RyZWFtIHdoZXJlIGR1bXAgdGhlIGVsZW1lbnRzLgorICovCit2b2lkIGoya19kdW1wX2ltYWdlX2NvbXBfaGVhZGVyKG9wal9pbWFnZV9jb21wX3QqIGNvbXAsIE9QSl9CT09MIGRldl9kdW1wX2ZsYWcsIEZJTEUqIG91dF9zdHJlYW0pOworCisvKioKKyAqIEdldCB0aGUgY29kZXN0cmVhbSBpbmZvIGZyb20gYSBKUEVHMjAwMCBjb2RlYy4KKyAqCisgKkBwYXJhbQlwX2oyawkJCQl0aGUgY29tcG9uZW50IGltYWdlIGhlYWRlciB0byBkdW1wLgorICoKKyAqQHJldHVybgl0aGUgY29kZXN0cmVhbSBpbmZvcm1hdGlvbiBleHRyYWN0IGZyb20gdGhlIGpwZzIwMDAgY29kZWMKKyAqLworb3BqX2NvZGVzdHJlYW1faW5mb192Ml90KiBqMmtfZ2V0X2NzdHJfaW5mbyhvcGpfajJrX3QqIHBfajJrKTsKKworLyoqCisgKiBHZXQgdGhlIGNvZGVzdHJlYW0gaW5kZXggZnJvbSBhIEpQRUcyMDAwIGNvZGVjLgorICoKKyAqQHBhcmFtCXBfajJrCQkJCXRoZSBjb21wb25lbnQgaW1hZ2UgaGVhZGVyIHRvIGR1bXAuCisgKgorICpAcmV0dXJuCXRoZSBjb2Rlc3RyZWFtIGluZGV4IGV4dHJhY3QgZnJvbSB0aGUganBnMjAwMCBjb2RlYworICovCitvcGpfY29kZXN0cmVhbV9pbmRleF90KiBqMmtfZ2V0X2NzdHJfaW5kZXgob3BqX2oya190KiBwX2oyayk7CisKKy8qKgorICogRGVjb2RlIGFuIGltYWdlIGZyb20gYSBKUEVHLTIwMDAgY29kZXN0cmVhbQorICogQHBhcmFtIGoyayBKMksgZGVjb21wcmVzc29yIGhhbmRsZQorICogQHBhcmFtIHBfc3RyZWFtICBGSVhNRSBET0MKKyAqIEBwYXJhbSBwX2ltYWdlICAgRklYTUUgRE9DCisgKiBAcGFyYW0gcF9tYW5hZ2VyIEZJWE1FIERPQworICogQHJldHVybiBGSVhNRSBET0MKKyovCitPUEpfQk9PTCBvcGpfajJrX2RlY29kZShvcGpfajJrX3QgKmoyaywKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90ICpwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICpwX21hbmFnZXIpOworCisKK09QSl9CT09MIG9wal9qMmtfZ2V0X3RpbGUoCW9wal9qMmtfdCAqcF9qMmssCisJCQkgICAgCQkJb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorCQkJCSAgICAJCW9wal9pbWFnZV90KiBwX2ltYWdlLAorCQkJCQkgICAgCW9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciwKKwkJCQkJCSAgICBPUEpfVUlOVDMyIHRpbGVfaW5kZXggKTsKKworT1BKX0JPT0wgb3BqX2oya19zZXRfZGVjb2RlZF9yZXNvbHV0aW9uX2ZhY3RvcihvcGpfajJrX3QgKnBfajJrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiByZXNfZmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpOworCisKKy8qKgorICogV3JpdGVzIGEgdGlsZS4KKyAqIEBwYXJhbQlwX2oyawkJdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtIHBfdGlsZV9pbmRleCBGSVhNRSBET0MKKyAqIEBwYXJhbSBwX2RhdGEgRklYTUUgRE9DCisgKiBAcGFyYW0gcF9kYXRhX3NpemUgRklYTUUgRE9DCisgKiBAcGFyYW0JcF9zdHJlYW0JCQl0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0JcF9tYW5hZ2VyCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKi8KK09QSl9CT09MIG9wal9qMmtfd3JpdGVfdGlsZSAoCW9wal9qMmtfdCAqIHBfajJrLAorCQkJCQkJCSAgICBPUEpfVUlOVDMyIHBfdGlsZV9pbmRleCwKKwkJCQkJCQkgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisJCQkJCQkJICAgIE9QSl9VSU5UMzIgcF9kYXRhX3NpemUsCisJCQkJCQkJICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKwkJCQkJCQkgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogRW5jb2RlcyBhbiBpbWFnZSBpbnRvIGEgSlBFRy0yMDAwIGNvZGVzdHJlYW0KKyAqLworT1BKX0JPT0wgb3BqX2oya19lbmNvZGUoCW9wal9qMmtfdCAqIHBfajJrLAorCQkJICAgIAkJCW9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisJCQkJICAgIAkJb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogU3RhcnRzIGEgY29tcHJlc3Npb24gc2NoZW1lLCBpLmUuIHZhbGlkYXRlcyB0aGUgY29kZWMgcGFyYW1ldGVycywgd3JpdGVzIHRoZSBoZWFkZXIuCisgKgorICogQHBhcmFtCXBfajJrCQl0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0JcF9zdHJlYW0JCQl0aGUgc3RyZWFtIG9iamVjdC4KKyAqIEBwYXJhbQlwX2ltYWdlIEZJWE1FIERPQworICogQHBhcmFtCXBfbWFuYWdlcgl0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZWMgaXMgdmFsaWQuCisgKi8KK09QSl9CT09MIG9wal9qMmtfc3RhcnRfY29tcHJlc3Mob3BqX2oya190ICpwX2oyaywKKwkJCQkJCQkgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorCQkJCQkJCSAgICBvcGpfaW1hZ2VfdCAqIHBfaW1hZ2UsCisJCQkJCQkJICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisKKy8qKgorICogRW5kcyB0aGUgY29tcHJlc3Npb24gcHJvY2VkdXJlcyBhbmQgcG9zc2liaWxpeSBhZGQgZGF0YSB0byBiZSByZWFkIGFmdGVyIHRoZQorICogY29kZXN0cmVhbS4KKyAqLworT1BKX0JPT0wgb3BqX2oya19lbmRfY29tcHJlc3MoIAlvcGpfajJrX3QgKnBfajJrLAorCQkJCQkJCSAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqY2lvLAorCQkJCQkJCSAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpOworCitPUEpfQk9PTCBvcGpfajJrX3NldHVwX21jdF9lbmNvZGluZyAob3BqX3RjcF90ICogcF90Y3AsIG9wal9pbWFnZV90ICogcF9pbWFnZSk7CisKKworI2VuZGlmIC8qIF9fSjJLX0ggKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9qcDIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9qcDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTE2ZDFlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2pwMi5jCkBAIC0wLDAgKzEsMjgyNSBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTEsIEthb3JpIEhhZ2loYXJhCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEtMjAxMiwgQ2VudHJlIE5hdGlvbmFsIGQnRXR1ZGVzIFNwYXRpYWxlcyAoQ05FUyksIEZSIAorICogQ29weXJpZ2h0IChjKSAyMDEyLCBDUyBTeXN0ZW1lcyBkJ0luZm9ybWF0aW9uLCBGcmFuY2UKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJvcGpfaW5jbHVkZXMuaCIKKworLyoqIEBkZWZncm91cCBKUDIgSlAyIC0gSlBFRy0yMDAwIGZpbGUgZm9ybWF0IHJlYWRlci93cml0ZXIgKi8KKy8qQHsqLworCisjZGVmaW5lIE9QSl9CT1hfU0laRQkxMDI0CisKKy8qKiBAbmFtZSBMb2NhbCBzdGF0aWMgZnVuY3Rpb25zICovCisvKkB7Ki8KKworLypzdGF0aWMgdm9pZCBqcDJfd3JpdGVfdXJsKG9wal9jaW9fdCAqY2lvLCBjaGFyICpJZHhfZmlsZSk7Ki8KKworLyoqCisgKiBSZWFkcyBhIElIRFIgYm94IC0gSW1hZ2UgSGVhZGVyIGJveAorICoKKyAqIEBwYXJhbQlwX2ltYWdlX2hlYWRlcl9kYXRhCQkJcG9pbnRlciB0byBhY3R1YWwgZGF0YSAoYWxyZWFkeSByZWFkIGZyb20gZmlsZSkKKyAqIEBwYXJhbQlqcDIJCQkJCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0JcF9pbWFnZV9oZWFkZXJfc2l6ZQkJCXRoZSBzaXplIG9mIHRoZSBpbWFnZSBoZWFkZXIKKyAqIEBwYXJhbQlwX21hbmFnZXIJCQkJCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKgorICogQHJldHVybgl0cnVlIGlmIHRoZSBpbWFnZSBoZWFkZXIgaXMgdmFsaWQsIGZhbHNlIGVsc2UuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX3JlYWRfaWhkciggIG9wal9qcDJfdCAqanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKnBfaW1hZ2VfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaW1hZ2VfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBXcml0ZXMgdGhlIEltYWdlIEhlYWRlciBib3ggLSBJbWFnZSBIZWFkZXIgYm94LgorICoKKyAqIEBwYXJhbSBqcDIJCQkJCWpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0gcF9uYl9ieXRlc193cml0dGVuCXBvaW50ZXIgdG8gc3RvcmUgdGhlIG5iIG9mIGJ5dGVzIHdyaXR0ZW4gYnkgdGhlIGZ1bmN0aW9uLgorICoKKyAqIEByZXR1cm4JdGhlIGRhdGEgYmVpbmcgY29waWVkLgorKi8KK3N0YXRpYyBPUEpfQllURSAqIG9wal9qcDJfd3JpdGVfaWhkcihvcGpfanAyX3QgKmpwMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9uYl9ieXRlc193cml0dGVuICk7CisKKy8qKgorICogV3JpdGVzIHRoZSBCaXQgcGVyIENvbXBvbmVudCBib3guCisgKgorICogQHBhcmFtCWpwMgkJCQkJCWpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0JcF9uYl9ieXRlc193cml0dGVuCQlwb2ludGVyIHRvIHN0b3JlIHRoZSBuYiBvZiBieXRlcyB3cml0dGVuIGJ5IHRoZSBmdW5jdGlvbi4KKyAqCisgKiBAcmV0dXJuCXRoZSBkYXRhIGJlaW5nIGNvcGllZC4KKyovCitzdGF0aWMgT1BKX0JZVEUgKiBvcGpfanAyX3dyaXRlX2JwY2MoCW9wal9qcDJfdCAqanAyLAorCQkJCQkJCQkgICAgICAgIE9QSl9VSU5UMzIgKiBwX25iX2J5dGVzX3dyaXR0ZW4gKTsKKworLyoqCisgKiBSZWFkcyBhIEJpdCBwZXIgQ29tcG9uZW50IGJveC4KKyAqCisgKiBAcGFyYW0JcF9icGNfaGVhZGVyX2RhdGEJCQlwb2ludGVyIHRvIGFjdHVhbCBkYXRhIChhbHJlYWR5IHJlYWQgZnJvbSBmaWxlKQorICogQHBhcmFtCWpwMgkJCQkJCQl0aGUganBlZzIwMDAgZmlsZSBjb2RlYy4KKyAqIEBwYXJhbQlwX2JwY19oZWFkZXJfc2l6ZQkJCXRoZSBzaXplIG9mIHRoZSBicGMgaGVhZGVyCisgKiBAcGFyYW0JcF9tYW5hZ2VyCQkJCQl0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4JdHJ1ZSBpZiB0aGUgYnBjIGhlYWRlciBpcyB2YWxpZCwgZmFsZSBlbHNlLgorICovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2pwMl9yZWFkX2JwY2MoICBvcGpfanAyX3QgKmpwMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9icGNfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfYnBjX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX3JlYWRfY2RlZigJb3BqX2pwMl90ICoganAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2NkZWZfaGVhZGVyX2RhdGEsCisJCQkJCQkJCQlPUEpfVUlOVDMyIHBfY2RlZl9oZWFkZXJfc2l6ZSwKKwkJCQkJCQkJCW9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCitzdGF0aWMgdm9pZCBvcGpfanAyX2FwcGx5X2NkZWYob3BqX2ltYWdlX3QgKmltYWdlLCBvcGpfanAyX2NvbG9yX3QgKmNvbG9yKTsKKworLyoqCisgKiBXcml0ZXMgdGhlIENvbG91ciBTcGVjaWZpY2F0aW9uIGJveC4KKyAqCisgKiBAcGFyYW0ganAyCQkJCQlqcGVnMjAwMCBmaWxlIGNvZGVjLgorICogQHBhcmFtIHBfbmJfYnl0ZXNfd3JpdHRlbglwb2ludGVyIHRvIHN0b3JlIHRoZSBuYiBvZiBieXRlcyB3cml0dGVuIGJ5IHRoZSBmdW5jdGlvbi4KKyAqCisgKiBAcmV0dXJuCXRoZSBkYXRhIGJlaW5nIGNvcGllZC4KKyovCitzdGF0aWMgT1BKX0JZVEUgKiBvcGpfanAyX3dyaXRlX2NvbHIoICAgb3BqX2pwMl90ICpqcDIsCisJCQkJCQkJCQkgICAgT1BKX1VJTlQzMiAqIHBfbmJfYnl0ZXNfd3JpdHRlbiApOworCisvKioKKyAqIFdyaXRlcyBhIEZUWVAgYm94IC0gRmlsZSB0eXBlIGJveAorICoKKyAqIEBwYXJhbQljaW8JCQl0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0JanAyCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0JcF9tYW5hZ2VyCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKgorICogQHJldHVybgl0cnVlIGlmIHdyaXRpbmcgd2FzIHN1Y2Nlc3NmdWwuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX3dyaXRlX2Z0eXAoCW9wal9qcDJfdCAqanAyLAorCQkJCQkJCQkJb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywKKwkJCQkJCQkJCW9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgYSBGVFlQIGJveCAtIEZpbGUgdHlwZSBib3gKKyAqCisgKiBAcGFyYW0JcF9oZWFkZXJfZGF0YQl0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIEZUWVAgYm94LgorICogQHBhcmFtCWpwMgkJCQl0aGUganBlZzIwMDAgZmlsZSBjb2RlYy4KKyAqIEBwYXJhbQlwX2hlYWRlcl9zaXplCXRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgRlRZUCBib3guCisgKiBAcGFyYW0JcF9tYW5hZ2VyCQl0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgRlRZUCBib3ggaXMgdmFsaWQuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX3JlYWRfZnR5cCgJb3BqX2pwMl90ICpqcDIsCisJCQkJCQkJCQlPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisJCQkJCQkJCQlPUEpfVUlOVDMyIHBfaGVhZGVyX3NpemUsCisJCQkJCQkJCQlvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworT1BKX0JPT0wgb3BqX2pwMl9za2lwX2pwMmMoCW9wal9qcDJfdCAqanAyLAorCQkJCQkJICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisJCQkJCQkgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogUmVhZHMgdGhlIEpwZWcyMDAwIGZpbGUgSGVhZGVyIGJveCAtIEpQMiBIZWFkZXIgYm94ICh3YXJuaW5nLCB0aGlzIGlzIGEgc3VwZXIgYm94KS4KKyAqCisgKiBAcGFyYW0JcF9oZWFkZXJfZGF0YQl0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIGZpbGUgaGVhZGVyIGJveC4KKyAqIEBwYXJhbQlqcDIJCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0JcF9oZWFkZXJfc2l6ZQl0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIGZpbGUgaGVhZGVyIGJveC4KKyAqIEBwYXJhbQlwX21hbmFnZXIJCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKgorICogQHJldHVybiB0cnVlIGlmIHRoZSBKUDIgSGVhZGVyIGJveCB3YXMgc3VjY2Vzc2Z1bGx5IHJlY29uaXplZC4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2pwMl9yZWFkX2pwMmgoICBvcGpfanAyX3QgKmpwMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogV3JpdGVzIHRoZSBKcGVnMjAwMCBjb2Rlc3RyZWFtIEhlYWRlciBib3ggLSBKUDJDIEhlYWRlciBib3guIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgQUZURVIgdGhlIGNvZGluZyBoYXMgYmVlbiBkb25lLgorICoKKyAqIEBwYXJhbQljaW8JCQl0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0JanAyCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0JcF9tYW5hZ2VyCXVzZXIgZXZlbnQgbWFuYWdlci4KKyAqCisgKiBAcmV0dXJuIHRydWUgaWYgd3JpdGluZyB3YXMgc3VjY2Vzc2Z1bC4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2pwMl93cml0ZV9qcDJjKAlvcGpfanAyX3QgKmpwMiwKKwkJCQkJCQkJICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisJCQkJCQkJCSAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworI2lmZGVmIFVTRV9KUElQCisvKioKKyAqIFdyaXRlIGluZGV4IEZpbmRlciBib3gKKyAqIEBwYXJhbSBjaW8gICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgdG8uCisgKiBAcGFyYW0JanAyCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0JcF9tYW5hZ2VyCXVzZXIgZXZlbnQgbWFuYWdlci4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2pwaXBfd3JpdGVfaXB0cigJb3BqX2pwMl90ICpqcDIsCisJCQkJCQkJCSAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqY2lvLAorCQkJCQkJCQkgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogV3JpdGUgaW5kZXggRmluZGVyIGJveAorICogQHBhcmFtIGNpbyAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSB0by4KKyAqIEBwYXJhbQlqcDIJCQl0aGUganBlZzIwMDAgZmlsZSBjb2RlYy4KKyAqIEBwYXJhbQlwX21hbmFnZXIJdXNlciBldmVudCBtYW5hZ2VyLgorICovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2pwaXBfd3JpdGVfY2lkeChvcGpfanAyX3QgKmpwMiwKKyAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywKKyAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogV3JpdGUgZmlsZSBJbmRleCAoc3VwZXJib3gpCisgKiBAcGFyYW0gY2lvICAgICB0aGUgc3RyZWFtIHRvIHdyaXRlIHRvLgorICogQHBhcmFtCWpwMgkJCXRoZSBqcGVnMjAwMCBmaWxlIGNvZGVjLgorICogQHBhcmFtCXBfbWFuYWdlcgl1c2VyIGV2ZW50IG1hbmFnZXIuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfanBpcF93cml0ZV9maWR4KG9wal9qcDJfdCAqanAyLAorICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqY2lvLAorICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKyNlbmRpZiAvKiBVU0VfSlBJUCAqLworCisvKioKKyAqIFJlYWRzIGEganBlZzIwMDAgZmlsZSBzaWduYXR1cmUgYm94LgorICoKKyAqIEBwYXJhbQlwX2hlYWRlcl9kYXRhCXRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgc2lnbmF0dXJlIGJveC4KKyAqIEBwYXJhbQlqcDIJCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0JcF9oZWFkZXJfc2l6ZQl0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIHNpZ25hdHVyZSBib3guCisgKiBAcGFyYW0JcF9tYW5hZ2VyCQl0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZSBzaWduYXR1cmUgYm94IGlzIHZhbGlkLgorICovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2pwMl9yZWFkX2pwKG9wal9qcDJfdCAqanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworLyoqCisgKiBXcml0ZXMgYSBqcGVnMjAwMCBmaWxlIHNpZ25hdHVyZSBib3guCisgKgorICogQHBhcmFtIGNpbyB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0JanAyCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0gcF9tYW5hZ2VyIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKgorICogQHJldHVybiB0cnVlIGlmIHdyaXRpbmcgd2FzIHN1Y2Nlc3NmdWwuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX3dyaXRlX2pwKAlvcGpfanAyX3QgKmpwMiwKKwkJCSAgICAJICAgICAgICAJICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisJCQkJICAgICAgICAgICAgCQlvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCitBcHBseSBjb2xsZWN0ZWQgcGFsZXR0ZSBkYXRhCitAcGFyYW0gY29sb3IgQ29sbGVjdG9yIGZvciBwcm9maWxlLCBjZGVmIGFuZCBwY2xyIGRhdGEKK0BwYXJhbSBpbWFnZQorKi8KK3N0YXRpYyB2b2lkIG9wal9qcDJfYXBwbHlfcGNscihvcGpfaW1hZ2VfdCAqaW1hZ2UsIG9wal9qcDJfY29sb3JfdCAqY29sb3IpOworCitzdGF0aWMgdm9pZCBvcGpfanAyX2ZyZWVfcGNscihvcGpfanAyX2NvbG9yX3QgKmNvbG9yKTsKKworLyoqCisgKiBDb2xsZWN0IHBhbGV0dGUgZGF0YQorICoKKyAqIEBwYXJhbSBqcDIgSlAyIGhhbmRsZQorICogQHBhcmFtIHBfcGNscl9oZWFkZXJfZGF0YSAgICBGSVhNRSBET0MKKyAqIEBwYXJhbSBwX3BjbHJfaGVhZGVyX3NpemUgICAgRklYTUUgRE9DCisgKiBAcGFyYW0gcF9tYW5hZ2VyCisgKgorICogQHJldHVybiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBmYWxzZSBvdGhlcndpc2UKKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2pwMl9yZWFkX3BjbHIoCW9wal9qcDJfdCAqanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX3BjbHJfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfcGNscl9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIENvbGxlY3QgY29tcG9uZW50IG1hcHBpbmcgZGF0YQorICoKKyAqIEBwYXJhbSBqcDIgICAgICAgICAgICAgICAgIEpQMiBoYW5kbGUKKyAqIEBwYXJhbSBwX2NtYXBfaGVhZGVyX2RhdGEgIEZJWE1FIERPQworICogQHBhcmFtIHBfY21hcF9oZWFkZXJfc2l6ZSAgRklYTUUgRE9DCisgKiBAcGFyYW0gcF9tYW5hZ2VyICAgICAgICAgICBGSVhNRSBET0MKKyAqCisgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCByZXR1cm5zIGZhbHNlIG90aGVyd2lzZQorKi8KKworc3RhdGljIE9QSl9CT09MIG9wal9qcDJfcmVhZF9jbWFwKAlvcGpfanAyX3QgKiBqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfY21hcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9jbWFwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogUmVhZHMgdGhlIENvbG9yIFNwZWNpZmljYXRpb24gYm94LgorICoKKyAqIEBwYXJhbQlwX2NvbHJfaGVhZGVyX2RhdGEJCQlwb2ludGVyIHRvIGFjdHVhbCBkYXRhIChhbHJlYWR5IHJlYWQgZnJvbSBmaWxlKQorICogQHBhcmFtCWpwMgkJCQkJCQl0aGUganBlZzIwMDAgZmlsZSBjb2RlYy4KKyAqIEBwYXJhbQlwX2NvbHJfaGVhZGVyX3NpemUJCQl0aGUgc2l6ZSBvZiB0aGUgY29sb3IgaGVhZGVyCisgKiBAcGFyYW0JcF9tYW5hZ2VyCQkJCQl0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4JdHJ1ZSBpZiB0aGUgYnBjIGhlYWRlciBpcyB2YWxpZCwgZmFsZSBlbHNlLgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX3JlYWRfY29sciggIG9wal9qcDJfdCAqanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2NvbHJfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfY29scl9oZWFkZXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKkB9Ki8KKworLypAfSovCisKKy8qKgorICogU2V0cyB1cCB0aGUgcHJvY2VkdXJlcyB0byBkbyBvbiB3cml0aW5nIGhlYWRlciBhZnRlciB0aGUgY29kZXN0cmVhbS4KKyAqIERldmVsb3BwZXJzIHdhbnRpbmcgdG8gZXh0ZW5kIHRoZSBsaWJyYXJ5IGNhbiBhZGQgdGhlaXIgb3duIHdyaXRpbmcgcHJvY2VkdXJlcy4KKyAqLworc3RhdGljIHZvaWQgb3BqX2pwMl9zZXR1cF9lbmRfaGVhZGVyX3dyaXRpbmcgKG9wal9qcDJfdCAqanAyKTsKKworLyoqCisgKiBTZXRzIHVwIHRoZSBwcm9jZWR1cmVzIHRvIGRvIG9uIHJlYWRpbmcgaGVhZGVyIGFmdGVyIHRoZSBjb2Rlc3RyZWFtLgorICogRGV2ZWxvcHBlcnMgd2FudGluZyB0byBleHRlbmQgdGhlIGxpYnJhcnkgY2FuIGFkZCB0aGVpciBvd24gd3JpdGluZyBwcm9jZWR1cmVzLgorICovCitzdGF0aWMgdm9pZCBvcGpfanAyX3NldHVwX2VuZF9oZWFkZXJfcmVhZGluZyAob3BqX2pwMl90ICpqcDIpOworCisvKioKKyAqIFJlYWRzIGEganBlZzIwMDAgZmlsZSBoZWFkZXIgc3RydWN0dXJlLgorICoKKyAqIEBwYXJhbSBqcDIgdGhlIGpwZWcyMDAwIGZpbGUgaGVhZGVyIHN0cnVjdHVyZS4KKyAqIEBwYXJhbSBzdHJlYW0gdGhlIHN0cmVhbSB0byByZWFkIGRhdGEgZnJvbS4KKyAqIEBwYXJhbSBwX21hbmFnZXIgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyAqCisgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGJveCBpcyB2YWxpZC4KKyAqLworc3RhdGljIE9QSl9CT09MIG9wal9qcDJfcmVhZF9oZWFkZXJfcHJvY2VkdXJlKCAgb3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogRXhjdXRlcyB0aGUgZ2l2ZW4gcHJvY2VkdXJlcyBvbiB0aGUgZ2l2ZW4gY29kZWMuCisgKgorICogQHBhcmFtCXBfcHJvY2VkdXJlX2xpc3QJdGhlIGxpc3Qgb2YgcHJvY2VkdXJlcyB0byBleGVjdXRlCisgKiBAcGFyYW0JanAyCQkJCQl0aGUganBlZzIwMDAgZmlsZSBjb2RlYyB0byBleGVjdXRlIHRoZSBwcm9jZWR1cmVzIG9uLgorICogQHBhcmFtCXN0cmVhbQkJCQkJdGhlIHN0cmVhbSB0byBleGVjdXRlIHRoZSBwcm9jZWR1cmVzIG9uLgorICogQHBhcmFtCXBfbWFuYWdlcgkJCXRoZSB1c2VyIG1hbmFnZXIuCisgKgorICogQHJldHVybgl0cnVlCQkJCWlmIGFsbCB0aGUgcHJvY2VkdXJlcyB3ZXJlIHN1Y2Nlc3NmdWxseSBleGVjdXRlZC4KKyAqLworc3RhdGljIE9QSl9CT09MIG9wal9qcDJfZXhlYyAoICBvcGpfanAyX3QgKiBqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9wcm9jZWR1cmVfbGlzdF90ICogcF9wcm9jZWR1cmVfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogUmVhZHMgYSBib3ggaGVhZGVyLiBUaGUgYm94IGlzIHRoZSB3YXkgZGF0YSBpcyBwYWNrZWQgaW5zaWRlIGEganBlZzIwMDAgZmlsZSBzdHJ1Y3R1cmUuCisgKgorICogQHBhcmFtCWNpbwkJCQkJCXRoZSBpbnB1dCBzdHJlYW0gdG8gcmVhZCBkYXRhIGZyb20uCisgKiBAcGFyYW0JYm94CQkJCQkJdGhlIGJveCBzdHJ1Y3R1cmUgdG8gZmlsbC4KKyAqIEBwYXJhbQlwX251bWJlcl9ieXRlc19yZWFkCQlwb2ludGVyIHRvIGFuIGludCB0aGF0IHdpbGwgc3RvcmUgdGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gdGhlIHN0cmVhbSAoc2hvdWwgdXN1YWxseSBiZSAyKS4KKyAqIEBwYXJhbQlwX21hbmFnZXIJCQkJdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4JdHJ1ZSBpZiB0aGUgYm94IGlzIHJlY29uaXplZCwgZmFsc2Ugb3RoZXJ3aXNlCisqLworc3RhdGljIE9QSl9CT09MIG9wal9qcDJfcmVhZF9ib3hoZHIob3BqX2pwMl9ib3hfdCAqYm94LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbnVtYmVyX2J5dGVzX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqY2lvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworLyoqCisgKiBTZXRzIHVwIHRoZSB2YWxpZGF0aW9uICxpLmUuIGFkZHMgdGhlIHByb2NlZHVyZXMgdG8gbGF1Y2ggdG8gbWFrZSBzdXJlIHRoZSBjb2RlYyBwYXJhbWV0ZXJzCisgKiBhcmUgdmFsaWQuIERldmVsb3BwZXJzIHdhbnRpbmcgdG8gZXh0ZW5kIHRoZSBsaWJyYXJ5IGNhbiBhZGQgdGhlaXIgb3duIHZhbGlkYXRpb24gcHJvY2VkdXJlcy4KKyAqLworc3RhdGljIHZvaWQgb3BqX2pwMl9zZXR1cF9lbmNvZGluZ192YWxpZGF0aW9uIChvcGpfanAyX3QgKmpwMik7CisKKy8qKgorICogU2V0cyB1cCB0aGUgcHJvY2VkdXJlcyB0byBkbyBvbiB3cml0aW5nIGhlYWRlci4gRGV2ZWxvcHBlcnMgd2FudGluZyB0byBleHRlbmQgdGhlIGxpYnJhcnkgY2FuIGFkZCB0aGVpciBvd24gd3JpdGluZyBwcm9jZWR1cmVzLgorICovCitzdGF0aWMgdm9pZCBvcGpfanAyX3NldHVwX2hlYWRlcl93cml0aW5nIChvcGpfanAyX3QgKmpwMik7CisKK09QSl9CT09MIG9wal9qcDJfZGVmYXVsdF92YWxpZGF0aW9uICgJb3BqX2pwMl90ICoganAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogRmluZHMgdGhlIGltYWdlIGV4ZWN1dGlvbiBmdW5jdGlvbiByZWxhdGVkIHRvIHRoZSBnaXZlbiBib3ggaWQuCisgKgorICogQHBhcmFtCXBfaWQJdGhlIGlkIG9mIHRoZSBoYW5kbGVyIHRvIGZldGNoLgorICoKKyAqIEByZXR1cm4JdGhlIGdpdmVuIGhhbmRsZXIgb3IgTlVMTCBpZiBpdCBjb3VsZCBub3QgYmUgZm91bmQuCisgKi8KK3N0YXRpYyBjb25zdCBvcGpfanAyX2hlYWRlcl9oYW5kbGVyX3QgKiBvcGpfanAyX2ltZ19maW5kX2hhbmRsZXIgKE9QSl9VSU5UMzIgcF9pZCk7CisKKy8qKgorICogRmluZHMgdGhlIGV4ZWN1dGlvbiBmdW5jdGlvbiByZWxhdGVkIHRvIHRoZSBnaXZlbiBib3ggaWQuCisgKgorICogQHBhcmFtCXBfaWQJdGhlIGlkIG9mIHRoZSBoYW5kbGVyIHRvIGZldGNoLgorICoKKyAqIEByZXR1cm4JdGhlIGdpdmVuIGhhbmRsZXIgb3IgTlVMTCBpZiBpdCBjb3VsZCBub3QgYmUgZm91bmQuCisgKi8KK3N0YXRpYyBjb25zdCBvcGpfanAyX2hlYWRlcl9oYW5kbGVyX3QgKiBvcGpfanAyX2ZpbmRfaGFuZGxlciAoT1BKX1VJTlQzMiBwX2lkICk7CisKK2NvbnN0IG9wal9qcDJfaGVhZGVyX2hhbmRsZXJfdCBqcDJfaGVhZGVyIFtdID0KK3sKKwl7SlAyX0pQLG9wal9qcDJfcmVhZF9qcH0sCisJe0pQMl9GVFlQLG9wal9qcDJfcmVhZF9mdHlwfSwKKwl7SlAyX0pQMkgsb3BqX2pwMl9yZWFkX2pwMmh9Cit9OworCitjb25zdCBvcGpfanAyX2hlYWRlcl9oYW5kbGVyX3QganAyX2ltZ19oZWFkZXIgW10gPQoreworCXtKUDJfSUhEUixvcGpfanAyX3JlYWRfaWhkcn0sCisJe0pQMl9DT0xSLG9wal9qcDJfcmVhZF9jb2xyfSwKKwl7SlAyX0JQQ0Msb3BqX2pwMl9yZWFkX2JwY2N9LAorCXtKUDJfUENMUixvcGpfanAyX3JlYWRfcGNscn0sCisJe0pQMl9DTUFQLG9wal9qcDJfcmVhZF9jbWFwfSwKKwl7SlAyX0NERUYsb3BqX2pwMl9yZWFkX2NkZWZ9CisKK307CisKKy8qKgorICogUmVhZHMgYSBib3ggaGVhZGVyLiBUaGUgYm94IGlzIHRoZSB3YXkgZGF0YSBpcyBwYWNrZWQgaW5zaWRlIGEganBlZzIwMDAgZmlsZSBzdHJ1Y3R1cmUuIERhdGEgaXMgcmVhZCBmcm9tIGEgY2hhcmFjdGVyIHN0cmluZworICoKKyAqIEBwYXJhbQlib3gJCQkJCQl0aGUgYm94IHN0cnVjdHVyZSB0byBmaWxsLgorICogQHBhcmFtCXBfZGF0YQkJCQkJdGhlIGNoYXJhY3RlciBzdHJpbmcgdG8gcmVhZCBkYXRhIGZyb20uCisgKiBAcGFyYW0JcF9udW1iZXJfYnl0ZXNfcmVhZAkJcG9pbnRlciB0byBhbiBpbnQgdGhhdCB3aWxsIHN0b3JlIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCBmcm9tIHRoZSBzdHJlYW0gKHNob3VsIHVzdWFsbHkgYmUgMikuCisgKiBAcGFyYW0JcF9ib3hfbWF4X3NpemUJCQl0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGJveC4KKyAqIEBwYXJhbQlwX21hbmFnZXIgICAgICAgICBGSVhNRSBET0MKKyAqCisgKiBAcmV0dXJuCXRydWUgaWYgdGhlIGJveCBpcyByZWNvbml6ZWQsIGZhbHNlIG90aGVyd2lzZQorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX3JlYWRfYm94aGRyX2NoYXIoICAgb3BqX2pwMl9ib3hfdCAqYm94LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbnVtYmVyX2J5dGVzX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9ib3hfbWF4X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFNldHMgdXAgdGhlIHZhbGlkYXRpb24gLGkuZS4gYWRkcyB0aGUgcHJvY2VkdXJlcyB0byBsYXVjaCB0byBtYWtlIHN1cmUgdGhlIGNvZGVjIHBhcmFtZXRlcnMKKyAqIGFyZSB2YWxpZC4gRGV2ZWxvcHBlcnMgd2FudGluZyB0byBleHRlbmQgdGhlIGxpYnJhcnkgY2FuIGFkZCB0aGVpciBvd24gdmFsaWRhdGlvbiBwcm9jZWR1cmVzLgorICovCitzdGF0aWMgdm9pZCBvcGpfanAyX3NldHVwX2RlY29kaW5nX3ZhbGlkYXRpb24gKG9wal9qcDJfdCAqanAyKTsKKworLyoqCisgKiBTZXRzIHVwIHRoZSBwcm9jZWR1cmVzIHRvIGRvIG9uIHJlYWRpbmcgaGVhZGVyLgorICogRGV2ZWxvcHBlcnMgd2FudGluZyB0byBleHRlbmQgdGhlIGxpYnJhcnkgY2FuIGFkZCB0aGVpciBvd24gd3JpdGluZyBwcm9jZWR1cmVzLgorICovCitzdGF0aWMgdm9pZCBvcGpfanAyX3NldHVwX2hlYWRlcl9yZWFkaW5nIChvcGpfanAyX3QgKmpwMik7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgT1BKX0JPT0wgb3BqX2pwMl9yZWFkX2JveGhkcihvcGpfanAyX2JveF90ICpib3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9udW1iZXJfYnl0ZXNfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKQoreworCS8qIHJlYWQgaGVhZGVyIGZyb20gZmlsZSAqLworCU9QSl9CWVRFIGxfZGF0YV9oZWFkZXIgWzhdOworCisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChjaW8gIT0gMDApOworCWFzc2VydChib3ggIT0gMDApOworCWFzc2VydChwX251bWJlcl9ieXRlc19yZWFkICE9IDAwKTsKKwlhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworCSpwX251bWJlcl9ieXRlc19yZWFkID0gKE9QSl9VSU5UMzIpb3BqX3N0cmVhbV9yZWFkX2RhdGEoY2lvLGxfZGF0YV9oZWFkZXIsOCxwX21hbmFnZXIpOworCWlmICgqcF9udW1iZXJfYnl0ZXNfcmVhZCAhPSA4KSB7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJLyogcHJvY2VzcyByZWFkIGRhdGEgKi8KKwlvcGpfcmVhZF9ieXRlcyhsX2RhdGFfaGVhZGVyLCYoYm94LT5sZW5ndGgpLCA0KTsKKwlvcGpfcmVhZF9ieXRlcyhsX2RhdGFfaGVhZGVyKzQsJihib3gtPnR5cGUpLCA0KTsKKyAgICAKKyAgaWYoYm94LT5sZW5ndGggPT0gMCkvKiBsYXN0IGJveCAqLworICAgIHsKKyAgICBjb25zdCBPUEpfT0ZGX1QgYmxlZnQgPSBvcGpfc3RyZWFtX2dldF9udW1iZXJfYnl0ZV9sZWZ0KGNpbyk7CisgICAgYm94LT5sZW5ndGggPSAoT1BKX1VJTlQzMilibGVmdDsKKyAgICBhc3NlcnQoIChPUEpfT0ZGX1QpYm94LT5sZW5ndGggPT0gYmxlZnQgKTsKKyAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgfQorCisJLyogZG8gd2UgaGF2ZSBhICJzcGVjaWFsIHZlcnkgbGFyZ2UgYm94ID8iICovCisJLyogcmVhZCB0aGVuIHRoZSBYTEJveCAqLworCWlmIChib3gtPmxlbmd0aCA9PSAxKSB7CisJCU9QSl9VSU5UMzIgbF94bF9wYXJ0X3NpemU7CisKKwkJT1BKX1VJTlQzMiBsX25iX2J5dGVzX3JlYWQgPSAoT1BKX1VJTlQzMilvcGpfc3RyZWFtX3JlYWRfZGF0YShjaW8sbF9kYXRhX2hlYWRlciw4LHBfbWFuYWdlcik7CisJCWlmIChsX25iX2J5dGVzX3JlYWQgIT0gOCkgeworCQkJaWYgKGxfbmJfYnl0ZXNfcmVhZCA+IDApIHsKKwkJCQkqcF9udW1iZXJfYnl0ZXNfcmVhZCArPSBsX25iX2J5dGVzX3JlYWQ7CisJCQl9CisKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKworICAgICAgICAqcF9udW1iZXJfYnl0ZXNfcmVhZCA9IDE2OworCQlvcGpfcmVhZF9ieXRlcyhsX2RhdGFfaGVhZGVyLCZsX3hsX3BhcnRfc2l6ZSwgNCk7CisJCWlmIChsX3hsX3BhcnRfc2l6ZSAhPSAwKSB7CisJCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiQ2Fubm90IGhhbmRsZSBib3ggc2l6ZXMgaGlnaGVyIHRoYW4gMl4zMlxuIik7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisJCW9wal9yZWFkX2J5dGVzKGxfZGF0YV9oZWFkZXIrNCwmKGJveC0+bGVuZ3RoKSwgNCk7CisJfQorICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworI2lmIDAKK3N0YXRpYyB2b2lkIGpwMl93cml0ZV91cmwob3BqX2Npb190ICpjaW8sIGNoYXIgKklkeF9maWxlKSB7CisJT1BKX1VJTlQzMiBpOworCW9wal9qcDJfYm94X3QgYm94OworCisJYm94LmluaXRfcG9zID0gY2lvX3RlbGwoY2lvKTsKKwljaW9fc2tpcChjaW8sIDQpOworCWNpb193cml0ZShjaW8sIEpQMl9VUkwsIDQpOwkvKiBEQlRMICovCisJY2lvX3dyaXRlKGNpbywgMCwgMSk7CQkvKiBWRVJTICovCisJY2lvX3dyaXRlKGNpbywgMCwgMyk7CQkvKiBGTEFHICovCisKKwlpZihJZHhfZmlsZSkgeworCQlmb3IgKGkgPSAwOyBpIDwgc3RybGVuKElkeF9maWxlKTsgaSsrKSB7CisJCQljaW9fd3JpdGUoY2lvLCBJZHhfZmlsZVtpXSwgMSk7CisJCX0KKwl9CisKKwlib3gubGVuZ3RoID0gY2lvX3RlbGwoY2lvKSAtIGJveC5pbml0X3BvczsKKwljaW9fc2VlayhjaW8sIGJveC5pbml0X3Bvcyk7CisJY2lvX3dyaXRlKGNpbywgYm94Lmxlbmd0aCwgNCk7CS8qIEwgKi8KKwljaW9fc2VlayhjaW8sIGJveC5pbml0X3BvcyArIGJveC5sZW5ndGgpOworfQorI2VuZGlmCisKK09QSl9CT09MIG9wal9qcDJfcmVhZF9paGRyKCBvcGpfanAyX3QgKmpwMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqcF9pbWFnZV9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfaW1hZ2VfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KHBfaW1hZ2VfaGVhZGVyX2RhdGEgIT0gMDApOworCWFzc2VydChqcDIgIT0gMDApOworCWFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisJaWYgKHBfaW1hZ2VfaGVhZGVyX3NpemUgIT0gMTQpIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSlcbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCW9wal9yZWFkX2J5dGVzKHBfaW1hZ2VfaGVhZGVyX2RhdGEsJihqcDItPmgpLDQpOwkJCS8qIEhFSUdIVCAqLworCXBfaW1hZ2VfaGVhZGVyX2RhdGEgKz0gNDsKKwlvcGpfcmVhZF9ieXRlcyhwX2ltYWdlX2hlYWRlcl9kYXRhLCYoanAyLT53KSw0KTsJCQkvKiBXSURUSCAqLworCXBfaW1hZ2VfaGVhZGVyX2RhdGEgKz0gNDsKKwlvcGpfcmVhZF9ieXRlcyhwX2ltYWdlX2hlYWRlcl9kYXRhLCYoanAyLT5udW1jb21wcyksMik7CQkvKiBOQyAqLworCXBfaW1hZ2VfaGVhZGVyX2RhdGEgKz0gMjsKKworCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgY29tcG9uZW50cyAqLworCWpwMi0+Y29tcHMgPSAob3BqX2pwMl9jb21wc190Kikgb3BqX21hbGxvYyhqcDItPm51bWNvbXBzICogc2l6ZW9mKG9wal9qcDJfY29tcHNfdCkpOworCWlmIChqcDItPmNvbXBzID09IDApIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBpbWFnZSBoZWFkZXIgKGloZHIpXG4iKTsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisJbWVtc2V0KGpwMi0+Y29tcHMsMCxqcDItPm51bWNvbXBzICogc2l6ZW9mKG9wal9qcDJfY29tcHNfdCkpOworCisJb3BqX3JlYWRfYnl0ZXMocF9pbWFnZV9oZWFkZXJfZGF0YSwmKGpwMi0+YnBjKSwxKTsJCQkvKiBCUEMgKi8KKwkrKyBwX2ltYWdlX2hlYWRlcl9kYXRhOworCisJb3BqX3JlYWRfYnl0ZXMocF9pbWFnZV9oZWFkZXJfZGF0YSwmKGpwMi0+QyksMSk7CQkJLyogQyAqLworCSsrIHBfaW1hZ2VfaGVhZGVyX2RhdGE7CisKKwkvKiBTaG91bGQgYmUgZXF1YWwgdG8gNyBjZi4gY2hhcHRlciBhYm91dCBpbWFnZSBoZWFkZXIgYm94IG9mIHRoZSBub3JtICovCisJaWYgKGpwMi0+QyAhPSA3KXsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9JTkZPLCAiSlAyIElIRFIgYm94OiBjb21wcmVzc2lvbiB0eXBlIGluZGljYXRlIHRoYXQgdGhlIGZpbGUgaXMgbm90IGEgY29uZm9ybWluZyBKUDIgZmlsZSAoJWQpIFxuIiwganAyLT5DKTsKKwl9CisKKwlvcGpfcmVhZF9ieXRlcyhwX2ltYWdlX2hlYWRlcl9kYXRhLCYoanAyLT5VbmtDKSwxKTsJCQkvKiBVbmtDICovCisJKysgcF9pbWFnZV9oZWFkZXJfZGF0YTsKKwlvcGpfcmVhZF9ieXRlcyhwX2ltYWdlX2hlYWRlcl9kYXRhLCYoanAyLT5JUFIpLDEpOwkJCS8qIElQUiAqLworCSsrIHBfaW1hZ2VfaGVhZGVyX2RhdGE7CisKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CWVRFICogb3BqX2pwMl93cml0ZV9paGRyKG9wal9qcDJfdCAqanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbmJfYnl0ZXNfd3JpdHRlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCU9QSl9CWVRFICogbF9paGRyX2RhdGEsKiBsX2N1cnJlbnRfaWhkcl9wdHI7CisJCisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChqcDIgIT0gMDApOworCWFzc2VydChwX25iX2J5dGVzX3dyaXR0ZW4gIT0gMDApOworCisJLyogZGVmYXVsdCBpbWFnZSBoZWFkZXIgaXMgMjIgYnl0ZXMgd2lkZSAqLworCWxfaWhkcl9kYXRhID0gKE9QSl9CWVRFICopIG9wal9tYWxsb2MoMjIpOworCWlmIChsX2loZHJfZGF0YSA9PSAwMCkgeworCQlyZXR1cm4gMDA7CisJfQorCW1lbXNldChsX2loZHJfZGF0YSwwLDIyKTsKKworCWxfY3VycmVudF9paGRyX3B0ciA9IGxfaWhkcl9kYXRhOworCQorCW9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfaWhkcl9wdHIsMjIsNCk7CQkJCS8qIHdyaXRlIGJveCBzaXplICovCisJbF9jdXJyZW50X2loZHJfcHRyKz00OworCisJb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9paGRyX3B0cixKUDJfSUhEUiwgNCk7CQkvKiBJSERSICovCisJbF9jdXJyZW50X2loZHJfcHRyKz00OworCQorCW9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfaWhkcl9wdHIsanAyLT5oLCA0KTsJCS8qIEhFSUdIVCAqLworCWxfY3VycmVudF9paGRyX3B0cis9NDsKKwkKKwlvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2loZHJfcHRyLCBqcDItPncsIDQpOwkJLyogV0lEVEggKi8KKwlsX2N1cnJlbnRfaWhkcl9wdHIrPTQ7CisJCisJb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9paGRyX3B0ciwganAyLT5udW1jb21wcywgMik7CQkvKiBOQyAqLworCWxfY3VycmVudF9paGRyX3B0cis9MjsKKwkKKwlvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2loZHJfcHRyLCBqcDItPmJwYywgMSk7CQkvKiBCUEMgKi8KKwkrK2xfY3VycmVudF9paGRyX3B0cjsKKwkKKwlvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2loZHJfcHRyLCBqcDItPkMsIDEpOwkJLyogQyA6IEFsd2F5cyA3ICovCisJKytsX2N1cnJlbnRfaWhkcl9wdHI7CisJCisJb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9paGRyX3B0ciwganAyLT5VbmtDLCAxKTsJCS8qIFVua0MsIGNvbG9yc3BhY2UgdW5rbm93biAqLworCSsrbF9jdXJyZW50X2loZHJfcHRyOworCQorCW9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfaWhkcl9wdHIsIGpwMi0+SVBSLCAxKTsJCS8qIElQUiwgbm8gaW50ZWxsZWN0dWFsIHByb3BlcnR5ICovCisJKytsX2N1cnJlbnRfaWhkcl9wdHI7CisJCisJKnBfbmJfYnl0ZXNfd3JpdHRlbiA9IDIyOworCQorCXJldHVybiBsX2loZHJfZGF0YTsKK30KKworT1BKX0JZVEUgKiBvcGpfanAyX3dyaXRlX2JwY2MoCW9wal9qcDJfdCAqanAyLAorCQkJCQkJICAgICAgICBPUEpfVUlOVDMyICogcF9uYl9ieXRlc193cml0dGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKwlPUEpfVUlOVDMyIGk7CisJLyogcm9vbSBmb3IgOCBieXRlcyBmb3IgYm94IGFuZCAxIGJ5dGUgZm9yIGVhY2ggY29tcG9uZW50ICovCisJT1BKX1VJTlQzMiBsX2JwY2Nfc2l6ZSA9IDggKyBqcDItPm51bWNvbXBzOworCU9QSl9CWVRFICogbF9icGNjX2RhdGEsKiBsX2N1cnJlbnRfYnBjY19wdHI7CisJCisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChqcDIgIT0gMDApOworCWFzc2VydChwX25iX2J5dGVzX3dyaXR0ZW4gIT0gMDApOworCisJbF9icGNjX2RhdGEgPSAoT1BKX0JZVEUgKikgb3BqX21hbGxvYyhsX2JwY2Nfc2l6ZSk7CisJaWYgKGxfYnBjY19kYXRhID09IDAwKSB7CisJCXJldHVybiAwMDsKKwl9CisJbWVtc2V0KGxfYnBjY19kYXRhLDAsbF9icGNjX3NpemUpOworCisJbF9jdXJyZW50X2JwY2NfcHRyID0gbF9icGNjX2RhdGE7CisKKwlvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2JwY2NfcHRyLGxfYnBjY19zaXplLDQpOwkJCQkvKiB3cml0ZSBib3ggc2l6ZSAqLworCWxfY3VycmVudF9icGNjX3B0ciArPSA0OworCQorCW9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfYnBjY19wdHIsSlAyX0JQQ0MsNCk7CQkJCQkvKiBCUENDICovCisJbF9jdXJyZW50X2JwY2NfcHRyICs9IDQ7CisKKwlmb3IgKGkgPSAwOyBpIDwganAyLT5udW1jb21wczsgKytpKSAgeworCQlvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2JwY2NfcHRyLCBqcDItPmNvbXBzW2ldLmJwY2MsIDEpOyAvKiB3cml0ZSBlYWNoIGNvbXBvbmVudCBpbmZvcm1hdGlvbiAqLworCQkrK2xfY3VycmVudF9icGNjX3B0cjsKKwl9CisKKwkqcF9uYl9ieXRlc193cml0dGVuID0gbF9icGNjX3NpemU7CisJCisJcmV0dXJuIGxfYnBjY19kYXRhOworfQorCitPUEpfQk9PTCBvcGpfanAyX3JlYWRfYnBjYyggb3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2JwY19oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfYnBjX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKwlPUEpfVUlOVDMyIGk7CisKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KHBfYnBjX2hlYWRlcl9kYXRhICE9IDAwKTsKKwlhc3NlcnQoanAyICE9IDAwKTsKKwlhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworCQorCWlmIChqcDItPmJwYyAhPSAyNTUgKXsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9XQVJOSU5HLCAiQSBCUENDIGhlYWRlciBib3ggaXMgYXZhaWxhYmxlIGFsdGhvdWdoIEJQQyBnaXZlbiBieSB0aGUgSUhEUiBib3ggKCVkKSBpbmRpY2F0ZSBjb21wb25lbnRzIGJpdCBkZXB0aCBpcyBjb25zdGFudFxuIixqcDItPmJwYyk7CisJfQorCisJLyogYW5kIGxlbmd0aCBpcyByZWxldmFudCAqLworCWlmIChwX2JwY19oZWFkZXJfc2l6ZSAhPSBqcDItPm51bWNvbXBzKSB7CisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJCYWQgQlBDQyBoZWFkZXIgYm94IChiYWQgc2l6ZSlcbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCS8qIHJlYWQgaW5mbyBmb3IgZWFjaCBjb21wb25lbnQgKi8KKwlmb3IgKGkgPSAwOyBpIDwganAyLT5udW1jb21wczsgKytpKSB7CisJCW9wal9yZWFkX2J5dGVzKHBfYnBjX2hlYWRlcl9kYXRhLCZqcDItPmNvbXBzW2ldLmJwY2MgLDEpOwkvKiByZWFkIGVhY2ggQlBDQyBjb21wb25lbnQgKi8KKwkJKytwX2JwY19oZWFkZXJfZGF0YTsKKwl9CisKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CWVRFICogb3BqX2pwMl93cml0ZV9jb2xyKCAgb3BqX2pwMl90ICpqcDIsCisJCQkJCQkJICAgIE9QSl9VSU5UMzIgKiBwX25iX2J5dGVzX3dyaXR0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCS8qIHJvb20gZm9yIDggYnl0ZXMgZm9yIGJveCAzIGZvciBjb21tb24gZGF0YSBhbmQgdmFyaWFibGUgdXBvbiBwcm9maWxlKi8KKwlPUEpfVUlOVDMyIGxfY29scl9zaXplID0gMTE7CisJT1BKX0JZVEUgKiBsX2NvbHJfZGF0YSwqIGxfY3VycmVudF9jb2xyX3B0cjsKKwkKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KHBfbmJfYnl0ZXNfd3JpdHRlbiAhPSAwMCk7CisgICAgYXNzZXJ0KGpwMi0+bWV0aCA9PSAxIHx8IGpwMi0+bWV0aCA9PSAyKTsKKworCXN3aXRjaCAoanAyLT5tZXRoKSB7IAorCQljYXNlIDEgOgorCQkJbF9jb2xyX3NpemUgKz0gNDsgLyogRW51bUNTICovCisJCQlicmVhazsKKwkJY2FzZSAyIDoKKyAgICAgICAgICAgIGFzc2VydChqcDItPmNvbG9yLmljY19wcm9maWxlX2xlbik7CS8qIElDQyBwcm9maWxlICovCisgICAgICAgICAgICBsX2NvbHJfc2l6ZSArPSBqcDItPmNvbG9yLmljY19wcm9maWxlX2xlbjsKKwkJCWJyZWFrOworCQlkZWZhdWx0IDoKKwkJCXJldHVybiAwMDsKKwl9CisKKwlsX2NvbHJfZGF0YSA9IChPUEpfQllURSAqKSBvcGpfbWFsbG9jKGxfY29scl9zaXplKTsKKwlpZiAobF9jb2xyX2RhdGEgPT0gMDApIHsKKwkJcmV0dXJuIDAwOworCX0KKwltZW1zZXQobF9jb2xyX2RhdGEsMCxsX2NvbHJfc2l6ZSk7CisJCisJbF9jdXJyZW50X2NvbHJfcHRyID0gbF9jb2xyX2RhdGE7CisKKwlvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2NvbHJfcHRyLGxfY29scl9zaXplLDQpOwkJCQkvKiB3cml0ZSBib3ggc2l6ZSAqLworCWxfY3VycmVudF9jb2xyX3B0ciArPSA0OworCQorCW9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfY29scl9wdHIsSlAyX0NPTFIsNCk7CQkJCQkvKiBCUENDICovCisJbF9jdXJyZW50X2NvbHJfcHRyICs9IDQ7CisJCisJb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9jb2xyX3B0ciwganAyLT5tZXRoLDEpOwkJCQkvKiBNRVRIICovCisJKytsX2N1cnJlbnRfY29scl9wdHI7CisJCisJb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9jb2xyX3B0ciwganAyLT5wcmVjZWRlbmNlLDEpOwkJCS8qIFBSRUNFREVOQ0UgKi8KKwkrK2xfY3VycmVudF9jb2xyX3B0cjsKKwkKKwlvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2NvbHJfcHRyLCBqcDItPmFwcHJveCwxKTsJCQkJLyogQVBQUk9YICovCisJKytsX2N1cnJlbnRfY29scl9wdHI7CisJCisJaWYgKGpwMi0+bWV0aCA9PSAxKSB7IC8qIE1ldGggdmFsdWUgaXMgcmVzdHJpY3RlZCB0byAxIG9yIDIgKFRhYmxlIEkuOSBvZiBwYXJ0IDEpICovCisgICAgICAgIG9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfY29scl9wdHIsIGpwMi0+ZW51bWNzLDQpOyB9ICAgICAgIC8qIEVudW1DUyAqLworICAgIGVsc2UgeworICAgICAgICBpZiAoanAyLT5tZXRoID09IDIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDQyBwcm9maWxlICovCisgICAgICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBqcDItPmNvbG9yLmljY19wcm9maWxlX2xlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9jb2xyX3B0ciwganAyLT5jb2xvci5pY2NfcHJvZmlsZV9idWZbaV0sIDEpOworICAgICAgICAgICAgICAgICsrbF9jdXJyZW50X2NvbHJfcHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CisJfQorCisJKnBfbmJfYnl0ZXNfd3JpdHRlbiA9IGxfY29scl9zaXplOworCQorCXJldHVybiBsX2NvbHJfZGF0YTsKK30KKwordm9pZCBvcGpfanAyX2ZyZWVfcGNscihvcGpfanAyX2NvbG9yX3QgKmNvbG9yKQoreworICAgIG9wal9mcmVlKGNvbG9yLT5qcDJfcGNsci0+Y2hhbm5lbF9zaWduKTsKKyAgICBvcGpfZnJlZShjb2xvci0+anAyX3BjbHItPmNoYW5uZWxfc2l6ZSk7CisgICAgb3BqX2ZyZWUoY29sb3ItPmpwMl9wY2xyLT5lbnRyaWVzKTsKKworCWlmKGNvbG9yLT5qcDJfcGNsci0+Y21hcCkgb3BqX2ZyZWUoY29sb3ItPmpwMl9wY2xyLT5jbWFwKTsKKworICAgIG9wal9mcmVlKGNvbG9yLT5qcDJfcGNscik7IGNvbG9yLT5qcDJfcGNsciA9IE5VTEw7Cit9CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX2NoZWNrX2NvbG9yKG9wal9pbWFnZV90ICppbWFnZSwgb3BqX2pwMl9jb2xvcl90ICpjb2xvciwgb3BqX2V2ZW50X21ncl90ICpwX21hbmFnZXIpCit7CisJT1BKX1VJTlQxNiBpOworCisJLyogdGVzdGNhc2UgNDE0OS5wZGYuU0lHU0VHVi5jZjcuMzUwMSAqLworCWlmIChjb2xvci0+anAyX2NkZWYpIHsKKwkJb3BqX2pwMl9jZGVmX2luZm9fdCAqaW5mbyA9IGNvbG9yLT5qcDJfY2RlZi0+aW5mbzsKKwkJT1BKX1VJTlQxNiBuID0gY29sb3ItPmpwMl9jZGVmLT5uOworCisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCWlmIChpbmZvW2ldLmNuID49IGltYWdlLT5udW1jb21wcykgeworCQkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJJbnZhbGlkIGNvbXBvbmVudCBpbmRleCAlZCAoPj0gJWQpLlxuIiwgaW5mb1tpXS5jbiwgaW1hZ2UtPm51bWNvbXBzKTsKKwkJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQkJfQorCQkJaWYgKGluZm9baV0uYXNvYyA+IDAgJiYgKE9QSl9VSU5UMzIpKGluZm9baV0uYXNvYyAtIDEpID49IGltYWdlLT5udW1jb21wcykgeworCQkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJJbnZhbGlkIGNvbXBvbmVudCBpbmRleCAlZCAoPj0gJWQpLlxuIiwgaW5mb1tpXS5hc29jIC0gMSwgaW1hZ2UtPm51bWNvbXBzKTsKKwkJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQkJfQorCQl9CisJfQorCisJLyogdGVzdGNhc2VzIDQ1MS5wZGYuU0lHU0VHVi5mNGMuMzcyMywgNDUxLnBkZi5TSUdTRUdWLjViNS4zNzIzIGFuZAorCSAgIDY2ZWEzMWFjYmIwZjIzYTJiYmM5MWY2NGQ2OWEwM2Y1X3NpZ25hbF9zaWdzZWd2XzEzOTM3YzBfNzAzMF81NzI1LnBkZiAqLworCWlmIChjb2xvci0+anAyX3BjbHIgJiYgY29sb3ItPmpwMl9wY2xyLT5jbWFwKSB7CisJCU9QSl9VSU5UMTYgbnJfY2hhbm5lbHMgPSBjb2xvci0+anAyX3BjbHItPm5yX2NoYW5uZWxzOworCQlvcGpfanAyX2NtYXBfY29tcF90ICpjbWFwID0gY29sb3ItPmpwMl9wY2xyLT5jbWFwOworCQlPUEpfQk9PTCAqcGNvbF91c2FnZSwgaXNfc2FuZSA9IE9QSl9UUlVFOworCisJCS8qIHZlcmlmeSB0aGF0IGFsbCBvcmlnaW5hbCBjb21wb25lbnRzIG1hdGNoIGFuIGV4aXN0aW5nIG9uZSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnJfY2hhbm5lbHM7IGkrKykgeworCQkJaWYgKGNtYXBbaV0uY21wID49IGltYWdlLT5udW1jb21wcykgeworCQkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJJbnZhbGlkIGNvbXBvbmVudCBpbmRleCAlZCAoPj0gJWQpLlxuIiwgY21hcFtpXS5jbXAsIGltYWdlLT5udW1jb21wcyk7CisJCQkJaXNfc2FuZSA9IE9QSl9GQUxTRTsKKwkJCX0KKwkJfQorCisJCXBjb2xfdXNhZ2UgPSBvcGpfY2FsbG9jKG5yX2NoYW5uZWxzLCBzaXplb2YoT1BKX0JPT0wpKTsKKwkJaWYgKCFwY29sX3VzYWdlKSB7CisJCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiVW5leHBlY3RlZCBPT00uXG4iKTsKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKwkJLyogdmVyaWZ5IHRoYXQgbm8gY29tcG9uZW50IGlzIHRhcmdldGVkIG1vcmUgdGhhbiBvbmNlICovCisJCWZvciAoaSA9IDA7IGkgPCBucl9jaGFubmVsczsgaSsrKSB7CisgICAgICBPUEpfVUlOVDE2IHBjb2wgPSBjbWFwW2ldLnBjb2w7CisgICAgICBhc3NlcnQoY21hcFtpXS5tdHlwID09IDAgfHwgY21hcFtpXS5tdHlwID09IDEpOworCQkJaWYgKHBjb2wgPj0gbnJfY2hhbm5lbHMpIHsKKwkJCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuXG4iLCBwY29sKTsKKwkJCQlpc19zYW5lID0gT1BKX0ZBTFNFOworCQkJfQorCQkJZWxzZSBpZiAocGNvbF91c2FnZVtwY29sXSAmJiBjbWFwW2ldLm10eXAgPT0gMSkgeworCQkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJDb21wb25lbnQgJWQgaXMgbWFwcGVkIHR3aWNlLlxuIiwgcGNvbCk7CisJCQkJaXNfc2FuZSA9IE9QSl9GQUxTRTsKKwkJCX0KKyAgICAgIGVsc2UgaWYgKGNtYXBbaV0ubXR5cCA9PSAwICYmIGNtYXBbaV0ucGNvbCAhPSAwKSB7CisgICAgICAgIC8qIEkuNS4zLjUgUENPTDogSWYgdGhlIHZhbHVlIG9mIHRoZSBNVFlQIGZpZWxkIGZvciB0aGlzIGNoYW5uZWwgaXMgMCwgdGhlbgorICAgICAgICAgKiB0aGUgdmFsdWUgb2YgdGhpcyBmaWVsZCBzaGFsbCBiZSAwLiAqLworCQkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJEaXJlY3QgdXNlIGF0ICMlZCBob3dldmVyIHBjb2w9JWQuXG4iLCBpLCBwY29sKTsKKwkJCQlpc19zYW5lID0gT1BKX0ZBTFNFOworICAgICAgfQorCQkJZWxzZQorCQkJCXBjb2xfdXNhZ2VbcGNvbF0gPSBPUEpfVFJVRTsKKwkJfQorCQkvKiB2ZXJpZnkgdGhhdCBhbGwgY29tcG9uZW50cyBhcmUgdGFyZ2V0ZWQgYXQgbGVhc3Qgb25jZSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnJfY2hhbm5lbHM7IGkrKykgeworCQkJaWYgKCFwY29sX3VzYWdlW2ldICYmIGNtYXBbaV0ubXR5cCAhPSAwKSB7CisJCQkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkNvbXBvbmVudCAlZCBkb2Vzbid0IGhhdmUgYSBtYXBwaW5nLlxuIiwgaSk7CisJCQkJaXNfc2FuZSA9IE9QSl9GQUxTRTsKKwkJCX0KKwkJfQorCQlvcGpfZnJlZShwY29sX3VzYWdlKTsKKwkJaWYgKCFpc19zYW5lKSB7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisJfQorCisJcmV0dXJuIE9QSl9UUlVFOworfQorCisvKiBmaWxlOS5qcDIgKi8KK3ZvaWQgb3BqX2pwMl9hcHBseV9wY2xyKG9wal9pbWFnZV90ICppbWFnZSwgb3BqX2pwMl9jb2xvcl90ICpjb2xvcikKK3sKKwlvcGpfaW1hZ2VfY29tcF90ICpvbGRfY29tcHMsICpuZXdfY29tcHM7CisJT1BKX0JZVEUgKmNoYW5uZWxfc2l6ZSwgKmNoYW5uZWxfc2lnbjsKKwlPUEpfVUlOVDMyICplbnRyaWVzOworCW9wal9qcDJfY21hcF9jb21wX3QgKmNtYXA7CisJT1BKX0lOVDMyICpzcmMsICpkc3Q7CisJT1BKX1VJTlQzMiBqLCBtYXg7CisJT1BKX1VJTlQxNiBpLCBucl9jaGFubmVscywgY21wLCBwY29sOworCU9QSl9JTlQzMiBrLCB0b3BfazsKKworCWNoYW5uZWxfc2l6ZSA9IGNvbG9yLT5qcDJfcGNsci0+Y2hhbm5lbF9zaXplOworCWNoYW5uZWxfc2lnbiA9IGNvbG9yLT5qcDJfcGNsci0+Y2hhbm5lbF9zaWduOworCWVudHJpZXMgPSBjb2xvci0+anAyX3BjbHItPmVudHJpZXM7CisJY21hcCA9IGNvbG9yLT5qcDJfcGNsci0+Y21hcDsKKwlucl9jaGFubmVscyA9IGNvbG9yLT5qcDJfcGNsci0+bnJfY2hhbm5lbHM7CisKKwlvbGRfY29tcHMgPSBpbWFnZS0+Y29tcHM7CisJbmV3X2NvbXBzID0gKG9wal9pbWFnZV9jb21wX3QqKQorCQkJb3BqX21hbGxvYyhucl9jaGFubmVscyAqIHNpemVvZihvcGpfaW1hZ2VfY29tcF90KSk7CisKKwlmb3IoaSA9IDA7IGkgPCBucl9jaGFubmVsczsgKytpKSB7CisJCXBjb2wgPSBjbWFwW2ldLnBjb2w7IGNtcCA9IGNtYXBbaV0uY21wOworCisJCS8qIERpcmVjdCB1c2UgKi8KKyAgICBpZihjbWFwW2ldLm10eXAgPT0gMCl7CisgICAgICBhc3NlcnQoIHBjb2wgPT0gMCApOworICAgICAgbmV3X2NvbXBzW2ldID0gb2xkX2NvbXBzW2NtcF07CisgICAgfSBlbHNlIHsKKyAgICAgIGFzc2VydCggaSA9PSBwY29sICk7CisgICAgICBuZXdfY29tcHNbcGNvbF0gPSBvbGRfY29tcHNbY21wXTsKKyAgICB9CisKKwkJLyogUGFsZXR0ZSBtYXBwaW5nOiAqLworCQluZXdfY29tcHNbaV0uZGF0YSA9IChPUEpfSU5UMzIqKQorCQkJCW9wal9tYWxsb2Mob2xkX2NvbXBzW2NtcF0udyAqIG9sZF9jb21wc1tjbXBdLmggKiBzaXplb2YoT1BKX0lOVDMyKSk7CisJCW5ld19jb21wc1tpXS5wcmVjID0gY2hhbm5lbF9zaXplW2ldOworCQluZXdfY29tcHNbaV0uc2duZCA9IGNoYW5uZWxfc2lnbltpXTsKKwl9CisKKwl0b3BfayA9IGNvbG9yLT5qcDJfcGNsci0+bnJfZW50cmllcyAtIDE7CisKKwlmb3IoaSA9IDA7IGkgPCBucl9jaGFubmVsczsgKytpKSB7CisJCS8qIFBhbGV0dGUgbWFwcGluZzogKi8KKwkJY21wID0gY21hcFtpXS5jbXA7IHBjb2wgPSBjbWFwW2ldLnBjb2w7CisJCXNyYyA9IG9sZF9jb21wc1tjbXBdLmRhdGE7CisgICAgYXNzZXJ0KCBzcmMgKTsKKwkJbWF4ID0gbmV3X2NvbXBzW3Bjb2xdLncgKiBuZXdfY29tcHNbcGNvbF0uaDsKKworCQkvKiBEaXJlY3QgdXNlOiAqLworICAgIGlmKGNtYXBbaV0ubXR5cCA9PSAwKSB7CisgICAgICBhc3NlcnQoIGNtcCA9PSAwICk7CisgICAgICBkc3QgPSBuZXdfY29tcHNbaV0uZGF0YTsKKyAgICAgIGFzc2VydCggZHN0ICk7CisgICAgICBmb3IoaiA9IDA7IGogPCBtYXg7ICsraikgeworICAgICAgICBkc3Rbal0gPSBzcmNbal07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgYXNzZXJ0KCBpID09IHBjb2wgKTsKKyAgICAgIGRzdCA9IG5ld19jb21wc1twY29sXS5kYXRhOworICAgICAgYXNzZXJ0KCBkc3QgKTsKKyAgICAgIGZvcihqID0gMDsgaiA8IG1heDsgKytqKSB7CisgICAgICAgIC8qIFRoZSBpbmRleCAqLworICAgICAgICBpZigoayA9IHNyY1tqXSkgPCAwKSBrID0gMDsgZWxzZSBpZihrID4gdG9wX2spIGsgPSB0b3BfazsKKworICAgICAgICAvKiBUaGUgY29sb3VyICovCisgICAgICAgIGRzdFtqXSA9IChPUEpfSU5UMzIpZW50cmllc1trICogbnJfY2hhbm5lbHMgKyBwY29sXTsKKyAgICAgICAgfQorICAgIH0KKwl9CisKKwltYXggPSBpbWFnZS0+bnVtY29tcHM7CisJZm9yKGkgPSAwOyBpIDwgbWF4OyArK2kpIHsKKwkJaWYob2xkX2NvbXBzW2ldLmRhdGEpIG9wal9mcmVlKG9sZF9jb21wc1tpXS5kYXRhKTsKKwl9CisKKwlvcGpfZnJlZShvbGRfY29tcHMpOworCWltYWdlLT5jb21wcyA9IG5ld19jb21wczsKKwlpbWFnZS0+bnVtY29tcHMgPSBucl9jaGFubmVsczsKKworCW9wal9qcDJfZnJlZV9wY2xyKGNvbG9yKTsKKworfS8qIGFwcGx5X3BjbHIoKSAqLworCitPUEpfQk9PTCBvcGpfanAyX3JlYWRfcGNscigJb3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX3BjbHJfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3BjbHJfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCW9wal9qcDJfcGNscl90ICpqcDJfcGNscjsKKwlPUEpfQllURSAqY2hhbm5lbF9zaXplLCAqY2hhbm5lbF9zaWduOworCU9QSl9VSU5UMzIgKmVudHJpZXM7CisJT1BKX1VJTlQxNiBucl9lbnRyaWVzLG5yX2NoYW5uZWxzOworCU9QSl9VSU5UMTYgaSwgajsKKwlPUEpfVUlOVDMyIGxfdmFsdWU7CisJT1BKX0JZVEUgKm9yaWdfaGVhZGVyX2RhdGEgPSBwX3BjbHJfaGVhZGVyX2RhdGE7CisKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KHBfcGNscl9oZWFkZXJfZGF0YSAhPSAwMCk7CisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisgICAgKHZvaWQpcF9wY2xyX2hlYWRlcl9zaXplOworCisJaWYoanAyLT5jb2xvci5qcDJfcGNscikKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKworCWlmIChwX3BjbHJfaGVhZGVyX3NpemUgPCAzKQorCQlyZXR1cm4gT1BKX0ZBTFNFOworCisJb3BqX3JlYWRfYnl0ZXMocF9wY2xyX2hlYWRlcl9kYXRhLCAmbF92YWx1ZSAsIDIpOwkvKiBORSAqLworCXBfcGNscl9oZWFkZXJfZGF0YSArPSAyOworCW5yX2VudHJpZXMgPSAoT1BKX1VJTlQxNikgbF92YWx1ZTsKKworCW9wal9yZWFkX2J5dGVzKHBfcGNscl9oZWFkZXJfZGF0YSwgJmxfdmFsdWUgLCAxKTsJLyogTlBDICovCisJKytwX3BjbHJfaGVhZGVyX2RhdGE7CisJbnJfY2hhbm5lbHMgPSAoT1BKX1VJTlQxNikgbF92YWx1ZTsKKworCWlmIChwX3BjbHJfaGVhZGVyX3NpemUgPCAzICsgKE9QSl9VSU5UMzIpbnJfY2hhbm5lbHMgfHwgbnJfY2hhbm5lbHMgPT0gMCB8fCBucl9lbnRyaWVzID49IChPUEpfVUlOVDMyKS0xIC8gbnJfY2hhbm5lbHMpCisJCXJldHVybiBPUEpfRkFMU0U7CisKKwllbnRyaWVzID0gKE9QSl9VSU5UMzIqKSBvcGpfbWFsbG9jKChzaXplX3QpbnJfY2hhbm5lbHMgKiBucl9lbnRyaWVzICogc2l6ZW9mKE9QSl9VSU5UMzIpKTsKKyAgICBpZiAoIWVudHJpZXMpCisgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisJY2hhbm5lbF9zaXplID0gKE9QSl9CWVRFKikgb3BqX21hbGxvYyhucl9jaGFubmVscyk7CisgICAgaWYgKCFjaGFubmVsX3NpemUpCisgICAgeworICAgICAgICBvcGpfZnJlZShlbnRyaWVzKTsKKyAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICB9CisJY2hhbm5lbF9zaWduID0gKE9QSl9CWVRFKikgb3BqX21hbGxvYyhucl9jaGFubmVscyk7CisJaWYgKCFjaGFubmVsX3NpZ24pCisJeworICAgICAgICBvcGpfZnJlZShlbnRyaWVzKTsKKyAgICAgICAgb3BqX2ZyZWUoY2hhbm5lbF9zaXplKTsKKyAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwlqcDJfcGNsciA9IChvcGpfanAyX3BjbHJfdCopb3BqX21hbGxvYyhzaXplb2Yob3BqX2pwMl9wY2xyX3QpKTsKKyAgICBpZiAoIWpwMl9wY2xyKQorICAgIHsKKyAgICAgICAgb3BqX2ZyZWUoZW50cmllcyk7CisgICAgICAgIG9wal9mcmVlKGNoYW5uZWxfc2l6ZSk7CisgICAgICAgIG9wal9mcmVlKGNoYW5uZWxfc2lnbik7CisgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgfQorCisJanAyX3BjbHItPmNoYW5uZWxfc2lnbiA9IGNoYW5uZWxfc2lnbjsKKwlqcDJfcGNsci0+Y2hhbm5lbF9zaXplID0gY2hhbm5lbF9zaXplOworCWpwMl9wY2xyLT5lbnRyaWVzID0gZW50cmllczsKKwlqcDJfcGNsci0+bnJfZW50cmllcyA9IG5yX2VudHJpZXM7CisJanAyX3BjbHItPm5yX2NoYW5uZWxzID0gKE9QSl9CWVRFKSBsX3ZhbHVlOworCWpwMl9wY2xyLT5jbWFwID0gTlVMTDsKKworCWpwMi0+Y29sb3IuanAyX3BjbHIgPSBqcDJfcGNscjsKKworCWZvcihpID0gMDsgaSA8IG5yX2NoYW5uZWxzOyArK2kpIHsKKwkJb3BqX3JlYWRfYnl0ZXMocF9wY2xyX2hlYWRlcl9kYXRhLCAmbF92YWx1ZSAsIDEpOwkvKiBCaSAqLworCQkrK3BfcGNscl9oZWFkZXJfZGF0YTsKKworCQljaGFubmVsX3NpemVbaV0gPSAoT1BKX0JZVEUpKChsX3ZhbHVlICYgMHg3ZikgKyAxKTsKKwkJY2hhbm5lbF9zaWduW2ldID0gKGxfdmFsdWUgJiAweDgwKSA/IDEgOiAwOworCX0KKworCWZvcihqID0gMDsgaiA8IG5yX2VudHJpZXM7ICsraikgeworCQlmb3IoaSA9IDA7IGkgPCBucl9jaGFubmVsczsgKytpKSB7CisJCQlPUEpfVUlOVDMyIGJ5dGVzX3RvX3JlYWQgPSAoT1BKX1VJTlQzMikoKGNoYW5uZWxfc2l6ZVtpXSs3KT4+Myk7CisKKwkJCWlmIChieXRlc190b19yZWFkID4gc2l6ZW9mKE9QSl9VSU5UMzIpKQorCQkJCWJ5dGVzX3RvX3JlYWQgPSBzaXplb2YoT1BKX1VJTlQzMik7CisJCQlpZiAoKHB0cmRpZmZfdClwX3BjbHJfaGVhZGVyX3NpemUgPCBwX3BjbHJfaGVhZGVyX2RhdGEgLSBvcmlnX2hlYWRlcl9kYXRhICsgKHB0cmRpZmZfdClieXRlc190b19yZWFkKQorCQkJCXJldHVybiBPUEpfRkFMU0U7CisKKwkJCW9wal9yZWFkX2J5dGVzKHBfcGNscl9oZWFkZXJfZGF0YSwgJmxfdmFsdWUgLCBieXRlc190b19yZWFkKTsJLyogQ2ppICovCisJCQlwX3BjbHJfaGVhZGVyX2RhdGEgKz0gYnl0ZXNfdG9fcmVhZDsKKwkJCSplbnRyaWVzID0gKE9QSl9VSU5UMzIpIGxfdmFsdWU7CisJCQllbnRyaWVzKys7CisJCX0KKwl9CisKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qcDJfcmVhZF9jbWFwKAlvcGpfanAyX3QgKiBqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2NtYXBfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NtYXBfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCW9wal9qcDJfY21hcF9jb21wX3QgKmNtYXA7CisJT1BKX0JZVEUgaSwgbnJfY2hhbm5lbHM7CisJT1BKX1VJTlQzMiBsX3ZhbHVlOworCisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChqcDIgIT0gMDApOworCWFzc2VydChwX2NtYXBfaGVhZGVyX2RhdGEgIT0gMDApOworCWFzc2VydChwX21hbmFnZXIgIT0gMDApOworICAgICh2b2lkKXBfY21hcF9oZWFkZXJfc2l6ZTsKKworCS8qIE5lZWQgbnJfY2hhbm5lbHM6ICovCisJaWYoanAyLT5jb2xvci5qcDJfcGNsciA9PSBOVUxMKSB7CisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOZWVkIHRvIHJlYWQgYSBQQ0xSIGJveCBiZWZvcmUgdGhlIENNQVAgYm94LlxuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJLyogUGFydCAxLCBJLjUuMy41OiAnVGhlcmUgc2hhbGwgYmUgYXQgbW9zdCBvbmUgQ29tcG9uZW50IE1hcHBpbmcgYm94CisJICogaW5zaWRlIGEgSlAyIEhlYWRlciBib3gnIDoKKwkqLworCWlmKGpwMi0+Y29sb3IuanAyX3BjbHItPmNtYXApIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk9ubHkgb25lIENNQVAgYm94IGlzIGFsbG93ZWQuXG4iKTsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwlucl9jaGFubmVscyA9IGpwMi0+Y29sb3IuanAyX3BjbHItPm5yX2NoYW5uZWxzOworCWlmIChwX2NtYXBfaGVhZGVyX3NpemUgPCAoT1BKX1VJTlQzMilucl9jaGFubmVscyAqIDQpIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkluc3VmZmljaWVudCBkYXRhIGZvciBDTUFQIGJveC5cbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCWNtYXAgPSAob3BqX2pwMl9jbWFwX2NvbXBfdCopIG9wal9tYWxsb2MobnJfY2hhbm5lbHMgKiBzaXplb2Yob3BqX2pwMl9jbWFwX2NvbXBfdCkpOworICAgIGlmICghY21hcCkKKyAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKworCisJZm9yKGkgPSAwOyBpIDwgbnJfY2hhbm5lbHM7ICsraSkgeworCQlvcGpfcmVhZF9ieXRlcyhwX2NtYXBfaGVhZGVyX2RhdGEsICZsX3ZhbHVlLCAyKTsJCQkvKiBDTVBeaSAqLworCQlwX2NtYXBfaGVhZGVyX2RhdGEgKz0yOworCQljbWFwW2ldLmNtcCA9IChPUEpfVUlOVDE2KSBsX3ZhbHVlOworCisJCW9wal9yZWFkX2J5dGVzKHBfY21hcF9oZWFkZXJfZGF0YSwgJmxfdmFsdWUsIDEpOwkJCS8qIE1UWVBeaSAqLworCQkrK3BfY21hcF9oZWFkZXJfZGF0YTsKKwkJY21hcFtpXS5tdHlwID0gKE9QSl9CWVRFKSBsX3ZhbHVlOworCisJCW9wal9yZWFkX2J5dGVzKHBfY21hcF9oZWFkZXJfZGF0YSwgJmxfdmFsdWUsIDEpOwkJCS8qIFBDT0xeaSAqLworCQkrK3BfY21hcF9oZWFkZXJfZGF0YTsKKwkJY21hcFtpXS5wY29sID0gKE9QSl9CWVRFKSBsX3ZhbHVlOworCX0KKworCWpwMi0+Y29sb3IuanAyX3BjbHItPmNtYXAgPSBjbWFwOworCisJcmV0dXJuIE9QSl9UUlVFOworfQorCit2b2lkIG9wal9qcDJfYXBwbHlfY2RlZihvcGpfaW1hZ2VfdCAqaW1hZ2UsIG9wal9qcDJfY29sb3JfdCAqY29sb3IpCit7CisJb3BqX2pwMl9jZGVmX2luZm9fdCAqaW5mbzsKKwlPUEpfVUlOVDE2IGksIG4sIGNuLCBhc29jLCBhY247CisKKwlpbmZvID0gY29sb3ItPmpwMl9jZGVmLT5pbmZvOworCW4gPSBjb2xvci0+anAyX2NkZWYtPm47CisKKyAgZm9yKGkgPSAwOyBpIDwgbjsgKytpKQorICAgIHsKKyAgICAvKiBXQVRDSDogYWNuID0gYXNvYyAtIDEgISAqLworICAgIGFzb2MgPSBpbmZvW2ldLmFzb2M7CisgICAgaWYoYXNvYyA9PSAwIHx8IGFzb2MgPT0gNjU1MzUpCisgICAgICB7CisgICAgICBpZiAoaSA8IGltYWdlLT5udW1jb21wcykKKyAgICAgICAgaW1hZ2UtPmNvbXBzW2ldLmFscGhhID0gaW5mb1tpXS50eXA7CisgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgIGNuID0gaW5mb1tpXS5jbjsgCisgICAgYWNuID0gKE9QSl9VSU5UMTYpKGFzb2MgLSAxKTsKKyAgICBpZiggY24gPj0gaW1hZ2UtPm51bWNvbXBzIHx8IGFjbiA+PSBpbWFnZS0+bnVtY29tcHMgKQorICAgICAgeworICAgICAgZnByaW50ZihzdGRlcnIsICJjbj0lZCwgYWNuPSVkLCBudW1jb21wcz0lZFxuIiwgY24sIGFjbiwgaW1hZ2UtPm51bWNvbXBzKTsKKyAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisJCWlmKGNuICE9IGFjbikKKwkJeworCQkJb3BqX2ltYWdlX2NvbXBfdCBzYXZlZDsKKworCQkJbWVtY3B5KCZzYXZlZCwgJmltYWdlLT5jb21wc1tjbl0sIHNpemVvZihvcGpfaW1hZ2VfY29tcF90KSk7CisJCQltZW1jcHkoJmltYWdlLT5jb21wc1tjbl0sICZpbWFnZS0+Y29tcHNbYWNuXSwgc2l6ZW9mKG9wal9pbWFnZV9jb21wX3QpKTsKKwkJCW1lbWNweSgmaW1hZ2UtPmNvbXBzW2Fjbl0sICZzYXZlZCwgc2l6ZW9mKG9wal9pbWFnZV9jb21wX3QpKTsKKworCQkJaW5mb1tpXS5hc29jID0gKE9QSl9VSU5UMTYpKGNuICsgMSk7CisJCQlpbmZvW2Fjbl0uYXNvYyA9IChPUEpfVUlOVDE2KShpbmZvW2Fjbl0uY24gKyAxKTsKKwkJfQorCisJCWltYWdlLT5jb21wc1tjbl0uYWxwaGEgPSBpbmZvW2ldLnR5cDsKKwl9CisKKwlpZihjb2xvci0+anAyX2NkZWYtPmluZm8pIG9wal9mcmVlKGNvbG9yLT5qcDJfY2RlZi0+aW5mbyk7CisKKwlvcGpfZnJlZShjb2xvci0+anAyX2NkZWYpOyBjb2xvci0+anAyX2NkZWYgPSBOVUxMOworCit9LyoganAyX2FwcGx5X2NkZWYoKSAqLworCitPUEpfQk9PTCBvcGpfanAyX3JlYWRfY2RlZigJb3BqX2pwMl90ICoganAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9jZGVmX2hlYWRlcl9kYXRhLAorCQkJCQkJCU9QSl9VSU5UMzIgcF9jZGVmX2hlYWRlcl9zaXplLAorCQkJCQkJCW9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKwlvcGpfanAyX2NkZWZfaW5mb190ICpjZGVmX2luZm87CisJT1BKX1VJTlQxNiBpOworCU9QSl9VSU5UMzIgbF92YWx1ZTsKKworCS8qIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQoanAyICE9IDAwKTsKKwlhc3NlcnQocF9jZGVmX2hlYWRlcl9kYXRhICE9IDAwKTsKKwlhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKyAgICAodm9pZClwX2NkZWZfaGVhZGVyX3NpemU7CisKKwkvKiBQYXJ0IDEsIEkuNS4zLjY6ICdUaGUgc2hhbGwgYmUgYXQgbW9zdCBvbmUgQ2hhbm5lbCBEZWZpbml0aW9uIGJveAorCSAqIGluc2lkZSBhIEpQMiBIZWFkZXIgYm94LicqLworCWlmKGpwMi0+Y29sb3IuanAyX2NkZWYpIHJldHVybiBPUEpfRkFMU0U7CisKKwlpZiAocF9jZGVmX2hlYWRlcl9zaXplIDwgMikgeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSW5zdWZmaWNpZW50IGRhdGEgZm9yIENERUYgYm94LlxuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJb3BqX3JlYWRfYnl0ZXMocF9jZGVmX2hlYWRlcl9kYXRhLCZsX3ZhbHVlICwyKTsJCQkvKiBOICovCisJcF9jZGVmX2hlYWRlcl9kYXRhKz0gMjsKKworCWlmICggKE9QSl9VSU5UMTYpbF92YWx1ZSA9PSAwKXsgLyogc3p1a3cwMDA6IEZJWE1FICovCisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOdW1iZXIgb2YgY2hhbm5lbCBkZXNjcmlwdGlvbiBpcyBlcXVhbCB0byB6ZXJvIGluIENERUYgYm94LlxuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJaWYgKHBfY2RlZl9oZWFkZXJfc2l6ZSA8IDIgKyAoT1BKX1VJTlQzMikoT1BKX1VJTlQxNilsX3ZhbHVlICogNikgeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSW5zdWZmaWNpZW50IGRhdGEgZm9yIENERUYgYm94LlxuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJY2RlZl9pbmZvID0gKG9wal9qcDJfY2RlZl9pbmZvX3QqKSBvcGpfbWFsbG9jKGxfdmFsdWUgKiBzaXplb2Yob3BqX2pwMl9jZGVmX2luZm9fdCkpOworICAgIGlmICghY2RlZl9pbmZvKQorICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworCisJanAyLT5jb2xvci5qcDJfY2RlZiA9IChvcGpfanAyX2NkZWZfdCopb3BqX21hbGxvYyhzaXplb2Yob3BqX2pwMl9jZGVmX3QpKTsKKyAgICBpZighanAyLT5jb2xvci5qcDJfY2RlZikKKyAgICB7CisgICAgICAgIG9wal9mcmVlKGNkZWZfaW5mbyk7CisgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgfQorCWpwMi0+Y29sb3IuanAyX2NkZWYtPmluZm8gPSBjZGVmX2luZm87CisJanAyLT5jb2xvci5qcDJfY2RlZi0+biA9IChPUEpfVUlOVDE2KSBsX3ZhbHVlOworCisJZm9yKGkgPSAwOyBpIDwganAyLT5jb2xvci5qcDJfY2RlZi0+bjsgKytpKSB7CisJCW9wal9yZWFkX2J5dGVzKHBfY2RlZl9oZWFkZXJfZGF0YSwgJmxfdmFsdWUsIDIpOwkJCS8qIENuXmkgKi8KKwkJcF9jZGVmX2hlYWRlcl9kYXRhICs9MjsKKwkJY2RlZl9pbmZvW2ldLmNuID0gKE9QSl9VSU5UMTYpIGxfdmFsdWU7CisKKwkJb3BqX3JlYWRfYnl0ZXMocF9jZGVmX2hlYWRlcl9kYXRhLCAmbF92YWx1ZSwgMik7CQkJLyogVHlwXmkgKi8KKwkJcF9jZGVmX2hlYWRlcl9kYXRhICs9MjsKKwkJY2RlZl9pbmZvW2ldLnR5cCA9IChPUEpfVUlOVDE2KSBsX3ZhbHVlOworCisJCW9wal9yZWFkX2J5dGVzKHBfY2RlZl9oZWFkZXJfZGF0YSwgJmxfdmFsdWUsIDIpOwkJCS8qIEFzb2NeaSAqLworCQlwX2NkZWZfaGVhZGVyX2RhdGEgKz0yOworCQljZGVmX2luZm9baV0uYXNvYyA9IChPUEpfVUlOVDE2KSBsX3ZhbHVlOworICAgfQorCisJcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfanAyX3JlYWRfY29sciggb3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2NvbHJfaGVhZGVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2NvbHJfaGVhZGVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCU9QSl9VSU5UMzIgbF92YWx1ZTsKKworCS8qIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQoanAyICE9IDAwKTsKKwlhc3NlcnQocF9jb2xyX2hlYWRlcl9kYXRhICE9IDAwKTsKKwlhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworCWlmIChwX2NvbHJfaGVhZGVyX3NpemUgPCAzKSB7CisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJCYWQgQ09MUiBoZWFkZXIgYm94IChiYWQgc2l6ZSlcbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCS8qIFBhcnQgMSwgSS41LjMuMyA6ICdBIGNvbmZvcm1pbmcgSlAyIHJlYWRlciBzaGFsbCBpZ25vcmUgYWxsIENvbG91cgorCSAqIFNwZWNpZmljYXRpb24gYm94ZXMgYWZ0ZXIgdGhlIGZpcnN0LicKKwkqLworCWlmKGpwMi0+Y29sb3IuanAyX2hhc19jb2xyKSB7CisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfSU5GTywgIkEgY29uZm9ybWluZyBKUDIgcmVhZGVyIHNoYWxsIGlnbm9yZSBhbGwgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94ZXMgYWZ0ZXIgdGhlIGZpcnN0LCBzbyB3ZSBpZ25vcmUgdGhpcyBvbmUuXG4iKTsKKwkJcF9jb2xyX2hlYWRlcl9kYXRhICs9IHBfY29scl9oZWFkZXJfc2l6ZTsKKwkJcmV0dXJuIE9QSl9UUlVFOworCX0KKworCW9wal9yZWFkX2J5dGVzKHBfY29scl9oZWFkZXJfZGF0YSwmanAyLT5tZXRoICwxKTsJCQkvKiBNRVRIICovCisJKytwX2NvbHJfaGVhZGVyX2RhdGE7CisKKwlvcGpfcmVhZF9ieXRlcyhwX2NvbHJfaGVhZGVyX2RhdGEsJmpwMi0+cHJlY2VkZW5jZSAsMSk7CQkvKiBQUkVDRURFTkNFICovCisJKytwX2NvbHJfaGVhZGVyX2RhdGE7CisKKwlvcGpfcmVhZF9ieXRlcyhwX2NvbHJfaGVhZGVyX2RhdGEsJmpwMi0+YXBwcm94ICwxKTsJCQkvKiBBUFBST1ggKi8KKwkrK3BfY29scl9oZWFkZXJfZGF0YTsKKworCWlmIChqcDItPm1ldGggPT0gMSkgeworCQlpZiAocF9jb2xyX2hlYWRlcl9zaXplID4gNykgeworCQkJLyogdGVzdGNhc2UgQWx0b25hX1RlY2huaWNhbF92MjBfeDQucGRmICovCisJCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX1dBUk5JTkcsICJCYWQgQ09MUiBoZWFkZXIgYm94IChiYWQgc2l6ZTogJWQpXG4iLCBwX2NvbHJfaGVhZGVyX3NpemUpOworCQl9CisKKwkJb3BqX3JlYWRfYnl0ZXMocF9jb2xyX2hlYWRlcl9kYXRhLCZqcDItPmVudW1jcyAsNCk7CQkJLyogRW51bUNTICovCisgICAgICAgIAorCQlwX2NvbHJfaGVhZGVyX2RhdGEgKz0gNDsKKworCQlpZihqcDItPmVudW1jcyA9PSAxNCkvKiBDSUVMYWIgKi8KKwkJeworCQkJT1BKX1VJTlQzMiAqY2llbGFiOworCQkJT1BKX1VJTlQzMiBybCwgb2wsIHJhLCBvYSwgcmIsIG9iLCBpbDsKKworCQkJY2llbGFiID0gKE9QSl9VSU5UMzIqKW9wal9tYWxsb2MoOSAqIHNpemVvZihPUEpfVUlOVDMyKSk7CisJCQljaWVsYWJbMF0gPSAxNDsgLyogZW51bWNzICovCisKKwkJCWlmKHBfY29scl9oZWFkZXJfc2l6ZSA9PSA3KS8qIGRlZmF1bHQgdmFsdWVzICovCisJCQl7CisJCQkJcmwgPSByYSA9IHJiID0gb2wgPSBvYSA9IG9iID0gMDsKKwkJCQlpbCA9IDB4MDA0NDM1MzA7IC8qIEQ1MCAqLworCQkJCWNpZWxhYlsxXSA9IDB4NDQ0NTQ2MDA7LyogREVGICovCisJCQl9CisJCQllbHNlIGlmKHBfY29scl9oZWFkZXJfc2l6ZSA9PSAzNSkKKwkJCXsKKwkJCQlvcGpfcmVhZF9ieXRlcyhwX2NvbHJfaGVhZGVyX2RhdGEsICZybCwgNCk7CisJCQkJcF9jb2xyX2hlYWRlcl9kYXRhICs9IDQ7CisJCQkJb3BqX3JlYWRfYnl0ZXMocF9jb2xyX2hlYWRlcl9kYXRhLCAmb2wsIDQpOworCQkJCXBfY29scl9oZWFkZXJfZGF0YSArPSA0OworCQkJCW9wal9yZWFkX2J5dGVzKHBfY29scl9oZWFkZXJfZGF0YSwgJnJhLCA0KTsKKwkJCQlwX2NvbHJfaGVhZGVyX2RhdGEgKz0gNDsKKwkJCQlvcGpfcmVhZF9ieXRlcyhwX2NvbHJfaGVhZGVyX2RhdGEsICZvYSwgNCk7CisJCQkJcF9jb2xyX2hlYWRlcl9kYXRhICs9IDQ7CisJCQkJb3BqX3JlYWRfYnl0ZXMocF9jb2xyX2hlYWRlcl9kYXRhLCAmcmIsIDQpOworCQkJCXBfY29scl9oZWFkZXJfZGF0YSArPSA0OworCQkJCW9wal9yZWFkX2J5dGVzKHBfY29scl9oZWFkZXJfZGF0YSwgJm9iLCA0KTsKKwkJCQlwX2NvbHJfaGVhZGVyX2RhdGEgKz0gNDsKKwkJCQlvcGpfcmVhZF9ieXRlcyhwX2NvbHJfaGVhZGVyX2RhdGEsICZpbCwgNCk7CisJCQkJcF9jb2xyX2hlYWRlcl9kYXRhICs9IDQ7CisJCQkJY2llbGFiWzFdID0gMDsKKwkJCX0KKwkJCWNpZWxhYlsyXSA9IHJsOyBjaWVsYWJbNF0gPSByYTsgY2llbGFiWzZdID0gcmI7CisJCQljaWVsYWJbM10gPSBvbDsgY2llbGFiWzVdID0gb2E7IGNpZWxhYls3XSA9IG9iOworCQkJY2llbGFiWzhdID0gaWw7CisKKwkJCWpwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfYnVmID0gKHVuc2lnbmVkIGNoYXIqKWNpZWxhYjsKKwkJCWpwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfbGVuID0gMDsKKwkJfQorCisgICAgICAgIGpwMi0+Y29sb3IuanAyX2hhc19jb2xyID0gMTsKKwl9CisJZWxzZSBpZiAoanAyLT5tZXRoID09IDIpIHsKKwkJLyogSUNDIHByb2ZpbGUgKi8KKwkJT1BKX0lOVDMyIGl0X2ljY192YWx1ZSA9IDA7CisJCU9QSl9JTlQzMiBpY2NfbGVuID0gKE9QSl9JTlQzMilwX2NvbHJfaGVhZGVyX3NpemUgLSAzOworCisJCWpwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfbGVuID0gKE9QSl9VSU5UMzIpaWNjX2xlbjsKKwkJanAyLT5jb2xvci5pY2NfcHJvZmlsZV9idWYgPSAoT1BKX0JZVEUqKSBvcGpfbWFsbG9jKChzaXplX3QpaWNjX2xlbik7CisgICAgICAgIGlmICghanAyLT5jb2xvci5pY2NfcHJvZmlsZV9idWYpCisgICAgICAgIHsKKyAgICAgICAgICAgIGpwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfbGVuID0gMDsKKyAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKwkJbWVtc2V0KGpwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfYnVmLCAwLCAoc2l6ZV90KWljY19sZW4gKiBzaXplb2YoT1BKX0JZVEUpKTsKKworCQlmb3IgKGl0X2ljY192YWx1ZSA9IDA7IGl0X2ljY192YWx1ZSA8IGljY19sZW47ICsraXRfaWNjX3ZhbHVlKQorCQl7CisJCQlvcGpfcmVhZF9ieXRlcyhwX2NvbHJfaGVhZGVyX2RhdGEsJmxfdmFsdWUsMSk7CQkvKiBpY2MgdmFsdWVzICovCisJCQkrK3BfY29scl9oZWFkZXJfZGF0YTsKKwkJCWpwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfYnVmW2l0X2ljY192YWx1ZV0gPSAoT1BKX0JZVEUpIGxfdmFsdWU7CisJCX0KKwkgICAgCisgICAgICAgIGpwMi0+Y29sb3IuanAyX2hhc19jb2xyID0gMTsKKwl9CisJZWxzZSBpZiAoanAyLT5tZXRoID4gMikKKyAgICB7CisgICAgICAgIC8qCUlTTy9JRUMgMTU0NDQtMToyMDA0IChFKSwgVGFibGUgSS45ID9MZWdhbCBNRVRIIHZhbHVlczoKKyAgICAgICAgY29uZm9ybWluZyBKUDIgcmVhZGVyIHNoYWxsIGlnbm9yZSB0aGUgZW50aXJlIENvbG91ciBTcGVjaWZpY2F0aW9uIGJveC4qLworICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0lORk8sICJDT0xSIEJPWCBtZXRoIHZhbHVlIGlzIG5vdCBhIHJlZ3VsYXIgdmFsdWUgKCVkKSwgIiAKKyAgICAgICAgICAgICJzbyB3ZSB3aWxsIGlnbm9yZSB0aGUgZW50aXJlIENvbG91ciBTcGVjaWZpY2F0aW9uIGJveC4gXG4iLCBqcDItPm1ldGgpOworICAgIH0KKyAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qcDJfZGVjb2RlKG9wal9qcDJfdCAqanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QqIHBfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpCit7CisJaWYgKCFwX2ltYWdlKQorCQlyZXR1cm4gT1BKX0ZBTFNFOworCisJLyogSjJLIGRlY29kaW5nICovCisJaWYoICEgb3BqX2oya19kZWNvZGUoanAyLT5qMmssIHBfc3RyZWFtLCBwX2ltYWdlLCBwX21hbmFnZXIpICkgeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRmFpbGVkIHRvIGRlY29kZSB0aGUgY29kZXN0cmVhbSBpbiB0aGUgSlAyIGZpbGVcbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworICAgIGlmICghanAyLT5pZ25vcmVfcGNscl9jbWFwX2NkZWYpeworCSAgICBpZiAoIW9wal9qcDJfY2hlY2tfY29sb3IocF9pbWFnZSwgJihqcDItPmNvbG9yKSwgcF9tYW5hZ2VyKSkgeworCQkgICAgcmV0dXJuIE9QSl9GQUxTRTsKKwkgICAgfQorCisJICAgIC8qIFNldCBJbWFnZSBDb2xvciBTcGFjZSAqLworCSAgICBpZiAoanAyLT5lbnVtY3MgPT0gMTYpCisJCSAgICBwX2ltYWdlLT5jb2xvcl9zcGFjZSA9IE9QSl9DTFJTUENfU1JHQjsKKwkgICAgZWxzZSBpZiAoanAyLT5lbnVtY3MgPT0gMTcpCisJCSAgICBwX2ltYWdlLT5jb2xvcl9zcGFjZSA9IE9QSl9DTFJTUENfR1JBWTsKKwkgICAgZWxzZSBpZiAoanAyLT5lbnVtY3MgPT0gMTgpCisJCSAgICBwX2ltYWdlLT5jb2xvcl9zcGFjZSA9IE9QSl9DTFJTUENfU1lDQzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGpwMi0+ZW51bWNzID09IDI0KQorICAgICAgICAgICAgICAgICAgICBwX2ltYWdlLT5jb2xvcl9zcGFjZSA9IE9QSl9DTFJTUENfRVlDQzsKKwkgICAgZWxzZQorCQkgICAgcF9pbWFnZS0+Y29sb3Jfc3BhY2UgPSBPUEpfQ0xSU1BDX1VOS05PV047CisKKwkgICAgLyogQXBwbHkgdGhlIGNvbG9yIHNwYWNlIGlmIG5lZWRlZCAqLworCSAgICBpZihqcDItPmNvbG9yLmpwMl9jZGVmKSB7CisJCSAgICBvcGpfanAyX2FwcGx5X2NkZWYocF9pbWFnZSwgJihqcDItPmNvbG9yKSk7CisJICAgIH0KKworCSAgICBpZihqcDItPmNvbG9yLmpwMl9wY2xyKSB7CisJCSAgICAvKiBQYXJ0IDEsIEkuNS4zLjQ6IEVpdGhlciBib3RoIG9yIG5vbmUgOiAqLworCQkgICAgaWYoICFqcDItPmNvbG9yLmpwMl9wY2xyLT5jbWFwKQorCQkJICAgIG9wal9qcDJfZnJlZV9wY2xyKCYoanAyLT5jb2xvcikpOworCQkgICAgZWxzZQorCQkJCWlmKCFwX2ltYWdlLT51c2VDb2xvclNwYWNlKQorCQkJICAgIG9wal9qcDJfYXBwbHlfcGNscihwX2ltYWdlLCAmKGpwMi0+Y29sb3IpKTsKKwkgICAgfQorCisJICAgIGlmKGpwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfYnVmKSB7CisJCSAgICBwX2ltYWdlLT5pY2NfcHJvZmlsZV9idWYgPSBqcDItPmNvbG9yLmljY19wcm9maWxlX2J1ZjsKKwkJICAgIHBfaW1hZ2UtPmljY19wcm9maWxlX2xlbiA9IGpwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfbGVuOworCQkgICAganAyLT5jb2xvci5pY2NfcHJvZmlsZV9idWYgPSBOVUxMOworCSAgICB9CisgICAgfQorCisJcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfanAyX3dyaXRlX2pwMmgob3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisJb3BqX2pwMl9pbWdfaGVhZGVyX3dyaXRlcl9oYW5kbGVyX3QgbF93cml0ZXJzIFszXTsKKwlvcGpfanAyX2ltZ19oZWFkZXJfd3JpdGVyX2hhbmRsZXJfdCAqIGxfY3VycmVudF93cml0ZXI7CisKKwlPUEpfSU5UMzIgaSwgbF9uYl9wYXNzOworCS8qIHNpemUgb2YgZGF0YSBmb3Igc3VwZXIgYm94Ki8KKwlPUEpfVUlOVDMyIGxfanAyaF9zaXplID0gODsKKwlPUEpfQk9PTCBsX3Jlc3VsdCA9IE9QSl9UUlVFOworCisJLyogdG8gc3RvcmUgdGhlIGRhdGEgb2YgdGhlIHN1cGVyIGJveCAqLworCU9QSl9CWVRFIGxfanAyaF9kYXRhIFs4XTsKKwkKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KHN0cmVhbSAhPSAwMCk7CisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKwltZW1zZXQobF93cml0ZXJzLDAsc2l6ZW9mKGxfd3JpdGVycykpOworCisJaWYgKGpwMi0+YnBjID09IDI1NSkgeworCQlsX25iX3Bhc3MgPSAzOworCQlsX3dyaXRlcnNbMF0uaGFuZGxlciA9IG9wal9qcDJfd3JpdGVfaWhkcjsKKwkJbF93cml0ZXJzWzFdLmhhbmRsZXIgPSBvcGpfanAyX3dyaXRlX2JwY2M7CisJCWxfd3JpdGVyc1syXS5oYW5kbGVyID0gb3BqX2pwMl93cml0ZV9jb2xyOworCX0KKwllbHNlIHsKKwkJbF9uYl9wYXNzID0gMjsKKwkJbF93cml0ZXJzWzBdLmhhbmRsZXIgPSBvcGpfanAyX3dyaXRlX2loZHI7CisJCWxfd3JpdGVyc1sxXS5oYW5kbGVyID0gb3BqX2pwMl93cml0ZV9jb2xyOworCX0KKwkKKwkvKiB3cml0ZSBib3ggaGVhZGVyICovCisJLyogd3JpdGUgSlAySCB0eXBlICovCisJb3BqX3dyaXRlX2J5dGVzKGxfanAyaF9kYXRhKzQsSlAyX0pQMkgsNCk7CisKKwlsX2N1cnJlbnRfd3JpdGVyID0gbF93cml0ZXJzOworCWZvciAoaT0wO2k8bF9uYl9wYXNzOysraSkgeworCQlsX2N1cnJlbnRfd3JpdGVyLT5tX2RhdGEgPSBsX2N1cnJlbnRfd3JpdGVyLT5oYW5kbGVyKGpwMiwmKGxfY3VycmVudF93cml0ZXItPm1fc2l6ZSkpOworCQlpZiAobF9jdXJyZW50X3dyaXRlci0+bV9kYXRhID09IDAwKSB7CisJCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gaG9sZCBKUDIgSGVhZGVyIGRhdGFcbiIpOworCQkJbF9yZXN1bHQgPSBPUEpfRkFMU0U7CisJCQlicmVhazsKKwkJfQorCisJCWxfanAyaF9zaXplICs9IGxfY3VycmVudF93cml0ZXItPm1fc2l6ZTsKKwkJKytsX2N1cnJlbnRfd3JpdGVyOworCX0KKworCWlmICghIGxfcmVzdWx0KSB7CisJCWxfY3VycmVudF93cml0ZXIgPSBsX3dyaXRlcnM7CisJCWZvciAoaT0wO2k8bF9uYl9wYXNzOysraSkgeworCQkJaWYgKGxfY3VycmVudF93cml0ZXItPm1fZGF0YSAhPSAwMCkgeworCQkJCW9wal9mcmVlKGxfY3VycmVudF93cml0ZXItPm1fZGF0YSApOworCQkJfQorCQkJKytsX2N1cnJlbnRfd3JpdGVyOworCQl9CisKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwkvKiB3cml0ZSBzdXBlciBib3ggc2l6ZSAqLworCW9wal93cml0ZV9ieXRlcyhsX2pwMmhfZGF0YSxsX2pwMmhfc2l6ZSw0KTsKKwkKKwkvKiB3cml0ZSBzdXBlciBib3ggZGF0YSBvbiBzdHJlYW0gKi8KKwlpZiAob3BqX3N0cmVhbV93cml0ZV9kYXRhKHN0cmVhbSxsX2pwMmhfZGF0YSw4LHBfbWFuYWdlcikgIT0gOCkgeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiU3RyZWFtIGVycm9yIHdoaWxlIHdyaXRpbmcgSlAyIEhlYWRlciBib3hcbiIpOworCQlsX3Jlc3VsdCA9IE9QSl9GQUxTRTsKKwl9CisJCisJaWYgKGxfcmVzdWx0KSB7CisJCWxfY3VycmVudF93cml0ZXIgPSBsX3dyaXRlcnM7CisJCWZvciAoaT0wO2k8bF9uYl9wYXNzOysraSkgeworCQkJaWYgKG9wal9zdHJlYW1fd3JpdGVfZGF0YShzdHJlYW0sbF9jdXJyZW50X3dyaXRlci0+bV9kYXRhLGxfY3VycmVudF93cml0ZXItPm1fc2l6ZSxwX21hbmFnZXIpICE9IGxfY3VycmVudF93cml0ZXItPm1fc2l6ZSkgeworCQkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJTdHJlYW0gZXJyb3Igd2hpbGUgd3JpdGluZyBKUDIgSGVhZGVyIGJveFxuIik7CisJCQkJbF9yZXN1bHQgPSBPUEpfRkFMU0U7CisJCQkJYnJlYWs7CisJCQl9CisJCQkrK2xfY3VycmVudF93cml0ZXI7CisJCX0KKwl9CisKKwlsX2N1cnJlbnRfd3JpdGVyID0gbF93cml0ZXJzOworCQorCS8qIGNsZWFudXAgKi8KKwlmb3IgKGk9MDtpPGxfbmJfcGFzczsrK2kpIHsKKwkJaWYgKGxfY3VycmVudF93cml0ZXItPm1fZGF0YSAhPSAwMCkgeworCQkJb3BqX2ZyZWUobF9jdXJyZW50X3dyaXRlci0+bV9kYXRhICk7CisJCX0KKwkJKytsX2N1cnJlbnRfd3JpdGVyOworCX0KKworCXJldHVybiBsX3Jlc3VsdDsKK30KKworT1BKX0JPT0wgb3BqX2pwMl93cml0ZV9mdHlwKG9wal9qcDJfdCAqanAyLAorCQkJCQkJCW9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisJCQkJCQkJb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKwlPUEpfVUlOVDMyIGk7CisJT1BKX1VJTlQzMiBsX2Z0eXBfc2l6ZSA9IDE2ICsgNCAqIGpwMi0+bnVtY2w7CisJT1BKX0JZVEUgKiBsX2Z0eXBfZGF0YSwgKiBsX2N1cnJlbnRfZGF0YV9wdHI7CisJT1BKX0JPT0wgbF9yZXN1bHQ7CisKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KGNpbyAhPSAwMCk7CisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKwlsX2Z0eXBfZGF0YSA9IChPUEpfQllURSAqKSBvcGpfbWFsbG9jKGxfZnR5cF9zaXplKTsKKwkKKwlpZiAobF9mdHlwX2RhdGEgPT0gMDApIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBmdHlwIGRhdGFcbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCW1lbXNldChsX2Z0eXBfZGF0YSwwLGxfZnR5cF9zaXplKTsKKworCWxfY3VycmVudF9kYXRhX3B0ciA9IGxfZnR5cF9kYXRhOworCisJb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhX3B0ciwgbF9mdHlwX3NpemUsNCk7IC8qIGJveCBzaXplICovCisJbF9jdXJyZW50X2RhdGFfcHRyICs9IDQ7CisKKwlvcGpfd3JpdGVfYnl0ZXMobF9jdXJyZW50X2RhdGFfcHRyLCBKUDJfRlRZUCw0KTsgLyogRlRZUCAqLworCWxfY3VycmVudF9kYXRhX3B0ciArPSA0OworCisJb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhX3B0ciwganAyLT5icmFuZCw0KTsgLyogQlIgKi8KKwlsX2N1cnJlbnRfZGF0YV9wdHIgKz0gNDsKKworCW9wal93cml0ZV9ieXRlcyhsX2N1cnJlbnRfZGF0YV9wdHIsIGpwMi0+bWludmVyc2lvbiw0KTsgLyogTWluViAqLworCWxfY3VycmVudF9kYXRhX3B0ciArPSA0OworCisJZm9yIChpID0gMDsgaSA8IGpwMi0+bnVtY2w7IGkrKykgIHsKKwkJb3BqX3dyaXRlX2J5dGVzKGxfY3VycmVudF9kYXRhX3B0ciwganAyLT5jbFtpXSw0KTsJLyogQ0wgKi8KKwl9CisJCisJbF9yZXN1bHQgPSAob3BqX3N0cmVhbV93cml0ZV9kYXRhKGNpbyxsX2Z0eXBfZGF0YSxsX2Z0eXBfc2l6ZSxwX21hbmFnZXIpID09IGxfZnR5cF9zaXplKTsKKwlpZiAoISBsX3Jlc3VsdCkKKwl7CisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciB3aGlsZSB3cml0aW5nIGZ0eXAgZGF0YSB0byBzdHJlYW1cbiIpOworCX0KKworCW9wal9mcmVlKGxfZnR5cF9kYXRhKTsKKwkKKwlyZXR1cm4gbF9yZXN1bHQ7Cit9CisKK09QSl9CT09MIG9wal9qcDJfd3JpdGVfanAyYyhvcGpfanAyX3QgKmpwMiwKKwkJCQkJCQlvcGpfc3RyZWFtX3ByaXZhdGVfdCAqY2lvLAorCQkJCQkJCW9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisJT1BKX09GRl9UIGoya19jb2Rlc3RyZWFtX2V4aXQ7CisJT1BKX0JZVEUgbF9kYXRhX2hlYWRlciBbOF07CisJCisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChqcDIgIT0gMDApOworCWFzc2VydChjaW8gIT0gMDApOworCWFzc2VydChwX21hbmFnZXIgIT0gMDApOworCWFzc2VydChvcGpfc3RyZWFtX2hhc19zZWVrKGNpbykpOworCQorCWoya19jb2Rlc3RyZWFtX2V4aXQgPSBvcGpfc3RyZWFtX3RlbGwoY2lvKTsKKwlvcGpfd3JpdGVfYnl0ZXMobF9kYXRhX2hlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgKE9QSl9VSU5UMzIpIChqMmtfY29kZXN0cmVhbV9leGl0IC0ganAyLT5qMmtfY29kZXN0cmVhbV9vZmZzZXQpLAorICAgICAgICAgICAgICAgICAgICA0KTsgLyogc2l6ZSBvZiBjb2Rlc3RyZWFtICovCisJb3BqX3dyaXRlX2J5dGVzKGxfZGF0YV9oZWFkZXIgKyA0LEpQMl9KUDJDLDQpOwkJCQkJCQkJCSAgIC8qIEpQMkMgKi8KKworCWlmICghIG9wal9zdHJlYW1fc2VlayhjaW8sanAyLT5qMmtfY29kZXN0cmVhbV9vZmZzZXQscF9tYW5hZ2VyKSkgeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRmFpbGVkIHRvIHNlZWsgaW4gdGhlIHN0cmVhbS5cbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKwkKKwlpZiAob3BqX3N0cmVhbV93cml0ZV9kYXRhKGNpbyxsX2RhdGFfaGVhZGVyLDgscF9tYW5hZ2VyKSAhPSA4KSB7CisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJGYWlsZWQgdG8gc2VlayBpbiB0aGUgc3RyZWFtLlxuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJaWYgKCEgb3BqX3N0cmVhbV9zZWVrKGNpbyxqMmtfY29kZXN0cmVhbV9leGl0LHBfbWFuYWdlcikpIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkZhaWxlZCB0byBzZWVrIGluIHRoZSBzdHJlYW0uXG4iKTsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qcDJfd3JpdGVfanAoCW9wal9qcDJfdCAqanAyLAorCQkJICAgIAkJICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisJCQkJICAgIAkJb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKwkvKiAxMiBieXRlcyB3aWxsIGJlIHJlYWQgKi8KKwlPUEpfQllURSBsX3NpZ25hdHVyZV9kYXRhIFsxMl07CisKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KGNpbyAhPSAwMCk7CisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKwkvKiB3cml0ZSBib3ggbGVuZ3RoICovCisJb3BqX3dyaXRlX2J5dGVzKGxfc2lnbmF0dXJlX2RhdGEsMTIsNCk7CisJLyogd3JpdGVzIGJveCB0eXBlICovCisJb3BqX3dyaXRlX2J5dGVzKGxfc2lnbmF0dXJlX2RhdGErNCxKUDJfSlAsNCk7CisJLyogd3JpdGVzIG1hZ2ljIG51bWJlciovCisJb3BqX3dyaXRlX2J5dGVzKGxfc2lnbmF0dXJlX2RhdGErOCwweDBkMGE4NzBhLDQpOworCQorCWlmIChvcGpfc3RyZWFtX3dyaXRlX2RhdGEoY2lvLGxfc2lnbmF0dXJlX2RhdGEsMTIscF9tYW5hZ2VyKSAhPSAxMikgeworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCXJldHVybiBPUEpfVFJVRTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIEpQMiBkZWNvZGVyIGludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIG9wal9qcDJfc2V0dXBfZGVjb2RlcihvcGpfanAyX3QgKmpwMiwgb3BqX2RwYXJhbWV0ZXJzX3QgKnBhcmFtZXRlcnMpCit7CisJLyogc2V0dXAgdGhlIEoySyBjb2RlYyAqLworCW9wal9qMmtfc2V0dXBfZGVjb2RlcihqcDItPmoyaywgcGFyYW1ldGVycyk7CisKKwkvKiBmdXJ0aGVyIEpQMiBpbml0aWFsaXphdGlvbnMgZ28gaGVyZSAqLworCWpwMi0+Y29sb3IuanAyX2hhc19jb2xyID0gMDsKKyAgICBqcDItPmlnbm9yZV9wY2xyX2NtYXBfY2RlZiA9IHBhcmFtZXRlcnMtPmZsYWdzICYgT1BKX0RQQVJBTUVURVJTX0lHTk9SRV9QQ0xSX0NNQVBfQ0RFRl9GTEFHOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogSlAyIGVuY29kZXIgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgb3BqX2pwMl9zZXR1cF9lbmNvZGVyKAlvcGpfanAyX3QgKmpwMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfY3BhcmFtZXRlcnNfdCAqcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfdCAqaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKQoreworICAgIE9QSl9VSU5UMzIgaTsKKwlPUEpfVUlOVDMyIGRlcHRoXzA7CisgIE9QSl9VSU5UMzIgc2lnbjsKKworCWlmKCFqcDIgfHwgIXBhcmFtZXRlcnMgfHwgIWltYWdlKQorCQlyZXR1cm47CisKKwkvKiBzZXR1cCB0aGUgSjJLIGNvZGVjICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLyogQ2hlY2sgaWYgbnVtYmVyIG9mIGNvbXBvbmVudHMgcmVzcGVjdHMgc3RhbmRhcmQgKi8KKwlpZiAoaW1hZ2UtPm51bWNvbXBzIDwgMSB8fCBpbWFnZS0+bnVtY29tcHMgPiAxNjM4NCkgeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiSW52YWxpZCBudW1iZXIgb2YgY29tcG9uZW50cyBzcGVjaWZpZWQgd2hpbGUgc2V0dGluZyB1cCBKUDIgZW5jb2RlclxuIik7CisJCXJldHVybjsKKwl9CisKKwlvcGpfajJrX3NldHVwX2VuY29kZXIoanAyLT5qMmssIHBhcmFtZXRlcnMsIGltYWdlLCBwX21hbmFnZXIgKTsKKworCS8qIHNldHVwIHRoZSBKUDIgY29kZWMgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tICovCisJCisJLyogUHJvZmlsZSBib3ggKi8KKworCWpwMi0+YnJhbmQgPSBKUDJfSlAyOwkvKiBCUiAqLworCWpwMi0+bWludmVyc2lvbiA9IDA7CS8qIE1pblYgKi8KKwlqcDItPm51bWNsID0gMTsKKwlqcDItPmNsID0gKE9QSl9VSU5UMzIqKSBvcGpfbWFsbG9jKGpwMi0+bnVtY2wgKiBzaXplb2YoT1BKX1VJTlQzMikpOworICAgIGlmICghanAyLT5jbCl7CisgICAgICAgIGpwMi0+Y2wgPSBOVUxMOworICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgd2hlbiBzZXR1cCB0aGUgSlAyIGVuY29kZXJcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCWpwMi0+Y2xbMF0gPSBKUDJfSlAyOwkvKiBDTDAgOiBKUDIgKi8KKworCS8qIEltYWdlIEhlYWRlciBib3ggKi8KKworCWpwMi0+bnVtY29tcHMgPSBpbWFnZS0+bnVtY29tcHM7CS8qIE5DICovCisJanAyLT5jb21wcyA9IChvcGpfanAyX2NvbXBzX3QqKSBvcGpfbWFsbG9jKGpwMi0+bnVtY29tcHMgKiBzaXplb2Yob3BqX2pwMl9jb21wc190KSk7CisgICAgaWYgKCFqcDItPmNvbXBzKSB7CisgICAgICAgIGpwMi0+Y29tcHMgPSBOVUxMOworICAgICAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgd2hlbiBzZXR1cCB0aGUgSlAyIGVuY29kZXJcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisJanAyLT5oID0gaW1hZ2UtPnkxIC0gaW1hZ2UtPnkwOwkJLyogSEVJR0hUICovCisJanAyLT53ID0gaW1hZ2UtPngxIC0gaW1hZ2UtPngwOwkJLyogV0lEVEggKi8KKwkvKiBCUEMgKi8KKwlkZXB0aF8wID0gaW1hZ2UtPmNvbXBzWzBdLnByZWMgLSAxOworCXNpZ24gPSBpbWFnZS0+Y29tcHNbMF0uc2duZDsKKwlqcDItPmJwYyA9IGRlcHRoXzAgKyAoc2lnbiA8PCA3KTsKKwlmb3IgKGkgPSAxOyBpIDwgaW1hZ2UtPm51bWNvbXBzOyBpKyspIHsKKwkJT1BKX1VJTlQzMiBkZXB0aCA9IGltYWdlLT5jb21wc1tpXS5wcmVjIC0gMTsKKwkJc2lnbiA9IGltYWdlLT5jb21wc1tpXS5zZ25kOworCQlpZiAoZGVwdGhfMCAhPSBkZXB0aCkKKwkJCWpwMi0+YnBjID0gMjU1OworCX0KKwlqcDItPkMgPSA3OwkJCS8qIEMgOiBBbHdheXMgNyAqLworCWpwMi0+VW5rQyA9IDA7CQkvKiBVbmtDLCBjb2xvcnNwYWNlIHNwZWNpZmllZCBpbiBjb2xyIGJveCAqLworCWpwMi0+SVBSID0gMDsJCS8qIElQUiwgbm8gaW50ZWxsZWN0dWFsIHByb3BlcnR5ICovCisJCisJLyogQml0c1BlckNvbXBvbmVudCBib3ggKi8KKwlmb3IgKGkgPSAwOyBpIDwgaW1hZ2UtPm51bWNvbXBzOyBpKyspIHsKKwkJanAyLT5jb21wc1tpXS5icGNjID0gaW1hZ2UtPmNvbXBzW2ldLnByZWMgLSAxICsgKGltYWdlLT5jb21wc1tpXS5zZ25kIDw8IDcpOworCX0KKworCS8qIENvbG91ciBTcGVjaWZpY2F0aW9uIGJveCAqLworICAgIGlmKGltYWdlLT5pY2NfcHJvZmlsZV9sZW4pIHsKKyAgICAgICAganAyLT5tZXRoID0gMjsKKyAgICAgICAganAyLT5lbnVtY3MgPSAwOworICAgIH0gCisgICAgZWxzZSB7CisgICAgICAgIGpwMi0+bWV0aCA9IDE7CisgICAgICAgIGlmIChpbWFnZS0+Y29sb3Jfc3BhY2UgPT0gMSkKKyAgICAgICAgICAgIGpwMi0+ZW51bWNzID0gMTY7CS8qIHNSR0IgYXMgZGVmaW5lZCBieSBJRUMgNjE5NjYtMi0xICovCisgICAgICAgIGVsc2UgaWYgKGltYWdlLT5jb2xvcl9zcGFjZSA9PSAyKQorICAgICAgICAgICAganAyLT5lbnVtY3MgPSAxNzsJLyogZ3JleXNjYWxlICovCisgICAgICAgIGVsc2UgaWYgKGltYWdlLT5jb2xvcl9zcGFjZSA9PSAzKQorICAgICAgICAgICAganAyLT5lbnVtY3MgPSAxODsJLyogWVVWICovCisgICAgfQorCisKKwlqcDItPnByZWNlZGVuY2UgPSAwOwkvKiBQUkVDRURFTkNFICovCisJanAyLT5hcHByb3ggPSAwOwkJLyogQVBQUk9YICovCisKKwlqcDItPmpwaXBfb24gPSBwYXJhbWV0ZXJzLT5qcGlwX29uOworfQorCitPUEpfQk9PTCBvcGpfanAyX2VuY29kZShvcGpfanAyX3QgKmpwMiwKKwkJCQkJCW9wal9zdHJlYW1fcHJpdmF0ZV90ICpzdHJlYW0sCisJCQkJCQlvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpCit7CisJcmV0dXJuIG9wal9qMmtfZW5jb2RlKGpwMi0+ajJrLCBzdHJlYW0sIHBfbWFuYWdlcik7Cit9CisKK09QSl9CT09MIG9wal9qcDJfZW5kX2RlY29tcHJlc3Mob3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChqcDIgIT0gMDApOworCWFzc2VydChjaW8gIT0gMDApOworCWFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisJLyogY3VzdG9taXphdGlvbiBvZiB0aGUgZW5kIGVuY29kaW5nICovCisJb3BqX2pwMl9zZXR1cF9lbmRfaGVhZGVyX3JlYWRpbmcoanAyKTsKKworCS8qIHdyaXRlIGhlYWRlciAqLworCWlmICghIG9wal9qcDJfZXhlYyAoanAyLGpwMi0+bV9wcm9jZWR1cmVfbGlzdCxjaW8scF9tYW5hZ2VyKSkgeworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCXJldHVybiBvcGpfajJrX2VuZF9kZWNvbXByZXNzKGpwMi0+ajJrLCBjaW8sIHBfbWFuYWdlcik7Cit9CisKK09QSl9CT09MIG9wal9qcDJfZW5kX2NvbXByZXNzKAlvcGpfanAyX3QgKmpwMiwKKwkJCQkJCQkgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywKKwkJCQkJCQkgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KGNpbyAhPSAwMCk7CisJYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKwkvKiBjdXN0b21pemF0aW9uIG9mIHRoZSBlbmQgZW5jb2RpbmcgKi8KKwlvcGpfanAyX3NldHVwX2VuZF9oZWFkZXJfd3JpdGluZyhqcDIpOworCisJaWYgKCEgb3BqX2oya19lbmRfY29tcHJlc3MoanAyLT5qMmssY2lvLHBfbWFuYWdlcikpIHsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwkvKiB3cml0ZSBoZWFkZXIgKi8KKwlyZXR1cm4gb3BqX2pwMl9leGVjKGpwMixqcDItPm1fcHJvY2VkdXJlX2xpc3QsY2lvLHBfbWFuYWdlcik7Cit9CisKK3ZvaWQgb3BqX2pwMl9zZXR1cF9lbmRfaGVhZGVyX3dyaXRpbmcgKG9wal9qcDJfdCAqanAyKQoreworCS8qIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQoanAyICE9IDAwKTsKKworI2lmZGVmIFVTRV9KUElQCisgIGlmKCBqcDItPmpwaXBfb24gKQorICAgIG9wal9wcm9jZWR1cmVfbGlzdF9hZGRfcHJvY2VkdXJlKGpwMi0+bV9wcm9jZWR1cmVfbGlzdCwob3BqX3Byb2NlZHVyZSlvcGpfanBpcF93cml0ZV9pcHRyICk7CisjZW5kaWYKKwlvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShqcDItPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2pwMl93cml0ZV9qcDJjICk7CisJLyogREVWRUxPUEVSIENPUk5FUiwgYWRkIHlvdXIgY3VzdG9tIHByb2NlZHVyZXMgKi8KKyNpZmRlZiBVU0VfSlBJUAorICBpZigganAyLT5qcGlwX29uICkKKyAgICB7CisgICAgb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUoanAyLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qcGlwX3dyaXRlX2NpZHggKTsKKyAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShqcDItPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2pwaXBfd3JpdGVfZmlkeCApOworICAgIH0KKyNlbmRpZgorfQorCit2b2lkIG9wal9qcDJfc2V0dXBfZW5kX2hlYWRlcl9yZWFkaW5nIChvcGpfanAyX3QgKmpwMikKK3sKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUoanAyLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qcDJfcmVhZF9oZWFkZXJfcHJvY2VkdXJlICk7CisJLyogREVWRUxPUEVSIENPUk5FUiwgYWRkIHlvdXIgY3VzdG9tIHByb2NlZHVyZXMgKi8KK30KKworT1BKX0JPT0wgb3BqX2pwMl9kZWZhdWx0X3ZhbGlkYXRpb24gKAlvcGpfanAyX3QgKiBqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisJT1BKX0JPT0wgbF9pc192YWxpZCA9IE9QSl9UUlVFOworCU9QSl9VSU5UMzIgaTsKKworCS8qIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQoanAyICE9IDAwKTsKKwlhc3NlcnQoY2lvICE9IDAwKTsKKwlhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworCS8qIEpQRUcyMDAwIGNvZGVjIHZhbGlkYXRpb24gKi8KKworCS8qIFNUQVRFIGNoZWNraW5nICovCisJLyogbWFrZSBzdXJlIHRoZSBzdGF0ZSBpcyBhdCAwICovCisJbF9pc192YWxpZCAmPSAoanAyLT5qcDJfc3RhdGUgPT0gSlAyX1NUQVRFX05PTkUpOworCisJLyogbWFrZSBzdXJlIG5vdCByZWFkaW5nIGEganAyaCA/Pz8/IFdFSVJEICovCisJbF9pc192YWxpZCAmPSAoanAyLT5qcDJfaW1nX3N0YXRlID09IEpQMl9JTUdfU1RBVEVfTk9ORSk7CisKKwkvKiBQT0lOVEVSIHZhbGlkYXRpb24gKi8KKwkvKiBtYWtlIHN1cmUgYSBqMmsgY29kZWMgaXMgcHJlc2VudCAqLworCWxfaXNfdmFsaWQgJj0gKGpwMi0+ajJrICE9IDAwKTsKKworCS8qIG1ha2Ugc3VyZSBhIHByb2NlZHVyZSBsaXN0IGlzIHByZXNlbnQgKi8KKwlsX2lzX3ZhbGlkICY9IChqcDItPm1fcHJvY2VkdXJlX2xpc3QgIT0gMDApOworCisJLyogbWFrZSBzdXJlIGEgdmFsaWRhdGlvbiBsaXN0IGlzIHByZXNlbnQgKi8KKwlsX2lzX3ZhbGlkICY9IChqcDItPm1fdmFsaWRhdGlvbl9saXN0ICE9IDAwKTsKKworCS8qIFBBUkFNRVRFUiBWQUxJREFUSU9OICovCisJLyogbnVtYmVyIG9mIGNvbXBvbmVudHMgKi8KKwlsX2lzX3ZhbGlkICY9IChqcDItPm51bWNsID4gMCk7CisJLyogd2lkdGggKi8KKwlsX2lzX3ZhbGlkICY9IChqcDItPmggPiAwKTsKKwkvKiBoZWlnaHQgKi8KKwlsX2lzX3ZhbGlkICY9IChqcDItPncgPiAwKTsKKwkvKiBwcmVjaXNpb24gKi8KKwlmb3IgKGkgPSAwOyBpIDwganAyLT5udW1jb21wczsgKytpKQl7CisJCWxfaXNfdmFsaWQgJj0gKGpwMi0+Y29tcHNbaV0uYnBjYyA+IDApOworCX0KKworCS8qIE1FVEggKi8KKwlsX2lzX3ZhbGlkICY9ICgoanAyLT5tZXRoID4gMCkgJiYgKGpwMi0+bWV0aCA8IDMpKTsKKworCS8qIHN0cmVhbSB2YWxpZGF0aW9uICovCisJLyogYmFjayBhbmQgZm9ydGggaXMgbmVlZGVkICovCisJbF9pc192YWxpZCAmPSBvcGpfc3RyZWFtX2hhc19zZWVrKGNpbyk7CisKKwlyZXR1cm4gbF9pc192YWxpZDsKK30KKworT1BKX0JPT0wgb3BqX2pwMl9yZWFkX2hlYWRlcl9wcm9jZWR1cmUoICBvcGpfanAyX3QgKmpwMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKwlvcGpfanAyX2JveF90IGJveDsKKwlPUEpfVUlOVDMyIGxfbmJfYnl0ZXNfcmVhZDsKKwljb25zdCBvcGpfanAyX2hlYWRlcl9oYW5kbGVyX3QgKiBsX2N1cnJlbnRfaGFuZGxlcjsKKwlPUEpfVUlOVDMyIGxfbGFzdF9kYXRhX3NpemUgPSBPUEpfQk9YX1NJWkU7CisJT1BKX1VJTlQzMiBsX2N1cnJlbnRfZGF0YV9zaXplOworCU9QSl9CWVRFICogbF9jdXJyZW50X2RhdGEgPSAwMDsKKworCS8qIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQoc3RyZWFtICE9IDAwKTsKKwlhc3NlcnQoanAyICE9IDAwKTsKKwlhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworCWxfY3VycmVudF9kYXRhID0gKE9QSl9CWVRFKilvcGpfbWFsbG9jKGxfbGFzdF9kYXRhX3NpemUpOworCisJaWYgKGxfY3VycmVudF9kYXRhID09IDAwKSB7CisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUganBlZzIwMDAgZmlsZSBoZWFkZXJcbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKwltZW1zZXQobF9jdXJyZW50X2RhdGEsIDAgLCBsX2xhc3RfZGF0YV9zaXplKTsKKworCXdoaWxlIChvcGpfanAyX3JlYWRfYm94aGRyKCZib3gsJmxfbmJfYnl0ZXNfcmVhZCxzdHJlYW0scF9tYW5hZ2VyKSkgeworCQkvKiBpcyBpdCB0aGUgY29kZXN0cmVhbSBib3ggPyAqLworCQlpZiAoYm94LnR5cGUgPT0gSlAyX0pQMkMpIHsKKwkJCWlmIChqcDItPmpwMl9zdGF0ZSAmIEpQMl9TVEFURV9IRUFERVIpIHsKKwkJCQlqcDItPmpwMl9zdGF0ZSB8PSBKUDJfU1RBVEVfQ09ERVNUUkVBTTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworCQkJCXJldHVybiBPUEpfVFJVRTsKKwkJCX0KKwkJCWVsc2UgeworCQkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJiYWQgcGxhY2VkIGpwZWcgY29kZXN0cmVhbVxuIik7CisJCQkJb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworCQkJCXJldHVybiBPUEpfRkFMU0U7CisJCQl9CisJCX0KKwkJZWxzZSBpZgkoYm94Lmxlbmd0aCA9PSAwKSB7CisJCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiQ2Fubm90IGhhbmRsZSBib3ggb2YgdW5kZWZpbmVkIHNpemVzXG4iKTsKKwkJCW9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKwkJLyogdGVzdGNhc2UgMTg1MS5wZGYuU0lHU0VHVi5jZTkuOTQ4ICovCisJCS8qIHRlc3RjYXNlIEstNTc4NzQ1NzEyNTYxMzU2OCAqLworCQllbHNlIGlmCShib3gubGVuZ3RoIDwgbF9uYl9ieXRlc19yZWFkIHx8IGJveC5sZW5ndGggPiBvcGpfc3RyZWFtX2dldF9udW1iZXJfYnl0ZV9sZWZ0KHN0cmVhbSkpIHsKKwkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJpbnZhbGlkIGJveCBzaXplICVkICgleClcbiIsIGJveC5sZW5ndGgsIGJveC50eXBlKTsKKwkJCW9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKworCQlsX2N1cnJlbnRfaGFuZGxlciA9IG9wal9qcDJfZmluZF9oYW5kbGVyKGJveC50eXBlKTsKKwkJbF9jdXJyZW50X2RhdGFfc2l6ZSA9IGJveC5sZW5ndGggLSBsX25iX2J5dGVzX3JlYWQ7CisKKwkJaWYgKGxfY3VycmVudF9oYW5kbGVyICE9IDAwKSB7CisJCQlpZiAobF9jdXJyZW50X2RhdGFfc2l6ZSA+IGxfbGFzdF9kYXRhX3NpemUpIHsKKwkJCQlPUEpfQllURSogbmV3X2N1cnJlbnRfZGF0YSA9IChPUEpfQllURSopb3BqX3JlYWxsb2MobF9jdXJyZW50X2RhdGEsbF9jdXJyZW50X2RhdGFfc2l6ZSk7CisJCQkJaWYgKCFuZXdfY3VycmVudF9kYXRhKSB7CisJCQkJCW9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBqcGVnMjAwMCBib3hcbiIpOworCQkJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQkJCX0KKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSA9IG5ld19jdXJyZW50X2RhdGE7CisJCQkJbF9sYXN0X2RhdGFfc2l6ZSA9IGxfY3VycmVudF9kYXRhX3NpemU7CisJCQl9CisKKwkJCWxfbmJfYnl0ZXNfcmVhZCA9IChPUEpfVUlOVDMyKW9wal9zdHJlYW1fcmVhZF9kYXRhKHN0cmVhbSxsX2N1cnJlbnRfZGF0YSxsX2N1cnJlbnRfZGF0YV9zaXplLHBfbWFuYWdlcik7CisJCQlpZiAobF9uYl9ieXRlc19yZWFkICE9IGxfY3VycmVudF9kYXRhX3NpemUpIHsKKwkJCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiUHJvYmxlbSB3aXRoIHJlYWRpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3JcbiIpOworICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsgICAgICAgICAgICAgICAgCisJCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJCX0KKworCQkJaWYgKCEgbF9jdXJyZW50X2hhbmRsZXItPmhhbmRsZXIoanAyLGxfY3VycmVudF9kYXRhLGxfY3VycmVudF9kYXRhX3NpemUscF9tYW5hZ2VyKSkgeworCQkJCW9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKwkJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQkJfQorCQl9CisJCWVsc2UgeworCQkJanAyLT5qcDJfc3RhdGUgfD0gSlAyX1NUQVRFX1VOS05PV047CisJCQlpZiAob3BqX3N0cmVhbV9za2lwKHN0cmVhbSxsX2N1cnJlbnRfZGF0YV9zaXplLHBfbWFuYWdlcikgIT0gbF9jdXJyZW50X2RhdGFfc2l6ZSkgeworCQkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJQcm9ibGVtIHdpdGggc2tpcHBpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3JcbiIpOworCQkJCW9wal9mcmVlKGxfY3VycmVudF9kYXRhKTsKKwkJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQkJfQorCQl9CisJfQorCisJb3BqX2ZyZWUobF9jdXJyZW50X2RhdGEpOworCisJcmV0dXJuIE9QSl9UUlVFOworfQorCisvKioKKyAqIEV4Y3V0ZXMgdGhlIGdpdmVuIHByb2NlZHVyZXMgb24gdGhlIGdpdmVuIGNvZGVjLgorICoKKyAqIEBwYXJhbQlwX3Byb2NlZHVyZV9saXN0CXRoZSBsaXN0IG9mIHByb2NlZHVyZXMgdG8gZXhlY3V0ZQorICogQHBhcmFtCWpwMgkJCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMgdG8gZXhlY3V0ZSB0aGUgcHJvY2VkdXJlcyBvbi4KKyAqIEBwYXJhbQlzdHJlYW0JCQkJCXRoZSBzdHJlYW0gdG8gZXhlY3V0ZSB0aGUgcHJvY2VkdXJlcyBvbi4KKyAqIEBwYXJhbQlwX21hbmFnZXIJCQl0aGUgdXNlciBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4JdHJ1ZQkJCQlpZiBhbGwgdGhlIHByb2NlZHVyZXMgd2VyZSBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX2V4ZWMgKCAgb3BqX2pwMl90ICoganAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcHJvY2VkdXJlX2xpc3RfdCAqIHBfcHJvY2VkdXJlX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKK3sKKwlPUEpfQk9PTCAoKiogbF9wcm9jZWR1cmUpIChvcGpfanAyX3QgKiBqcDIsIG9wal9zdHJlYW1fcHJpdmF0ZV90ICosIG9wal9ldmVudF9tZ3JfdCAqKSA9IDAwOworCU9QSl9CT09MIGxfcmVzdWx0ID0gT1BKX1RSVUU7CisJT1BKX1VJTlQzMiBsX25iX3Byb2MsIGk7CisKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KHBfcHJvY2VkdXJlX2xpc3QgIT0gMDApOworCWFzc2VydChqcDIgIT0gMDApOworCWFzc2VydChzdHJlYW0gIT0gMDApOworCWFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisJbF9uYl9wcm9jID0gb3BqX3Byb2NlZHVyZV9saXN0X2dldF9uYl9wcm9jZWR1cmVzKHBfcHJvY2VkdXJlX2xpc3QpOworCWxfcHJvY2VkdXJlID0gKE9QSl9CT09MICgqKikgKG9wal9qcDJfdCAqIGpwMiwgb3BqX3N0cmVhbV9wcml2YXRlX3QgKiwgb3BqX2V2ZW50X21ncl90ICopKSBvcGpfcHJvY2VkdXJlX2xpc3RfZ2V0X2ZpcnN0X3Byb2NlZHVyZShwX3Byb2NlZHVyZV9saXN0KTsKKworCWZvcgkoaT0wO2k8bF9uYl9wcm9jOysraSkgeworCQlsX3Jlc3VsdCA9IGxfcmVzdWx0ICYmICgqbF9wcm9jZWR1cmUpIChqcDIsc3RyZWFtLHBfbWFuYWdlcik7CisJCSsrbF9wcm9jZWR1cmU7CisJfQorCisJLyogYW5kIGNsZWFyIHRoZSBwcm9jZWR1cmUgbGlzdCBhdCB0aGUgZW5kLiAqLworCW9wal9wcm9jZWR1cmVfbGlzdF9jbGVhcihwX3Byb2NlZHVyZV9saXN0KTsKKwlyZXR1cm4gbF9yZXN1bHQ7Cit9CisKK09QSl9CT09MIG9wal9qcDJfc3RhcnRfY29tcHJlc3Mob3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90ICogcF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KHN0cmVhbSAhPSAwMCk7CisJYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKwkvKiBjdXN0b21pemF0aW9uIG9mIHRoZSB2YWxpZGF0aW9uICovCisJb3BqX2pwMl9zZXR1cF9lbmNvZGluZ192YWxpZGF0aW9uIChqcDIpOworCisJLyogdmFsaWRhdGlvbiBvZiB0aGUgcGFyYW1ldGVycyBjb2RlYyAqLworCWlmICghIG9wal9qcDJfZXhlYyhqcDIsanAyLT5tX3ZhbGlkYXRpb25fbGlzdCxzdHJlYW0scF9tYW5hZ2VyKSkgeworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCS8qIGN1c3RvbWl6YXRpb24gb2YgdGhlIGVuY29kaW5nICovCisJb3BqX2pwMl9zZXR1cF9oZWFkZXJfd3JpdGluZyhqcDIpOworCisJLyogd3JpdGUgaGVhZGVyICovCisJaWYgKCEgb3BqX2pwMl9leGVjIChqcDIsanAyLT5tX3Byb2NlZHVyZV9saXN0LHN0cmVhbSxwX21hbmFnZXIpKSB7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJcmV0dXJuIG9wal9qMmtfc3RhcnRfY29tcHJlc3MoanAyLT5qMmssc3RyZWFtLHBfaW1hZ2UscF9tYW5hZ2VyKTsKK30KKworY29uc3Qgb3BqX2pwMl9oZWFkZXJfaGFuZGxlcl90ICogb3BqX2pwMl9maW5kX2hhbmRsZXIgKE9QSl9VSU5UMzIgcF9pZCkKK3sKKwlPUEpfVUlOVDMyIGksIGxfaGFuZGxlcl9zaXplID0gc2l6ZW9mKGpwMl9oZWFkZXIpIC8gc2l6ZW9mKG9wal9qcDJfaGVhZGVyX2hhbmRsZXJfdCk7CisKKwlmb3IgKGk9MDtpPGxfaGFuZGxlcl9zaXplOysraSkgeworCQlpZiAoanAyX2hlYWRlcltpXS5pZCA9PSBwX2lkKSB7CisJCQlyZXR1cm4gJmpwMl9oZWFkZXJbaV07CisJCX0KKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qKgorICogRmluZHMgdGhlIGltYWdlIGV4ZWN1dGlvbiBmdW5jdGlvbiByZWxhdGVkIHRvIHRoZSBnaXZlbiBib3ggaWQuCisgKgorICogQHBhcmFtCXBfaWQJdGhlIGlkIG9mIHRoZSBoYW5kbGVyIHRvIGZldGNoLgorICoKKyAqIEByZXR1cm4JdGhlIGdpdmVuIGhhbmRsZXIgb3IgMDAgaWYgaXQgY291bGQgbm90IGJlIGZvdW5kLgorICovCitzdGF0aWMgY29uc3Qgb3BqX2pwMl9oZWFkZXJfaGFuZGxlcl90ICogb3BqX2pwMl9pbWdfZmluZF9oYW5kbGVyIChPUEpfVUlOVDMyIHBfaWQpCit7CisJT1BKX1VJTlQzMiBpLCBsX2hhbmRsZXJfc2l6ZSA9IHNpemVvZihqcDJfaW1nX2hlYWRlcikgLyBzaXplb2Yob3BqX2pwMl9oZWFkZXJfaGFuZGxlcl90KTsKKwlmb3IgKGk9MDtpPGxfaGFuZGxlcl9zaXplOysraSkKKwl7CisJCWlmIChqcDJfaW1nX2hlYWRlcltpXS5pZCA9PSBwX2lkKSB7CisJCQlyZXR1cm4gJmpwMl9pbWdfaGVhZGVyW2ldOworCQl9CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qKgorICogUmVhZHMgYSBqcGVnMjAwMCBmaWxlIHNpZ25hdHVyZSBib3guCisgKgorICogQHBhcmFtCXBfaGVhZGVyX2RhdGEJdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBzaWduYXR1cmUgYm94LgorICogQHBhcmFtCWpwMgkJCQl0aGUganBlZzIwMDAgZmlsZSBjb2RlYy4KKyAqIEBwYXJhbQlwX2hlYWRlcl9zaXplCXRoZSBzaXplIG9mIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgc2lnbmF0dXJlIGJveC4KKyAqIEBwYXJhbQlwX21hbmFnZXIJCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKgorICogQHJldHVybiB0cnVlIGlmIHRoZSBmaWxlIHNpZ25hdHVyZSBib3ggaXMgdmFsaWQuCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfanAyX3JlYWRfanAob3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9oZWFkZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCit7CisJT1BKX1VJTlQzMiBsX21hZ2ljX251bWJlcjsKKworCS8qIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQocF9oZWFkZXJfZGF0YSAhPSAwMCk7CisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKwlpZiAoanAyLT5qcDJfc3RhdGUgIT0gSlAyX1NUQVRFX05PTkUpIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS5cbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCS8qIGFzc3VyZSBsZW5ndGggb2YgZGF0YSBpcyBjb3JyZWN0ICg0IC0+IG1hZ2ljIG51bWJlcikgKi8KKwlpZiAocF9oZWFkZXJfc2l6ZSAhPSA0KSB7CisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJFcnJvciB3aXRoIEpQIHNpZ25hdHVyZSBCb3ggc2l6ZVxuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJLyogcmVhcnJhbmdlIGRhdGEgKi8KKwlvcGpfcmVhZF9ieXRlcyhwX2hlYWRlcl9kYXRhLCZsX21hZ2ljX251bWJlciw0KTsKKwlpZiAobF9tYWdpY19udW1iZXIgIT0gMHgwZDBhODcwYSApIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkVycm9yIHdpdGggSlAgU2lnbmF0dXJlIDogYmFkIG1hZ2ljIG51bWJlclxuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJanAyLT5qcDJfc3RhdGUgfD0gSlAyX1NUQVRFX1NJR05BVFVSRTsKKworCXJldHVybiBPUEpfVFJVRTsKK30KKworLyoqCisgKiBSZWFkcyBhIGEgRlRZUCBib3ggLSBGaWxlIHR5cGUgYm94CisgKgorICogQHBhcmFtCXBfaGVhZGVyX2RhdGEJdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBGVFlQIGJveC4KKyAqIEBwYXJhbQlqcDIJCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0JcF9oZWFkZXJfc2l6ZQl0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIEZUWVAgYm94LgorICogQHBhcmFtCXBfbWFuYWdlcgkJdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyAqCisgKiBAcmV0dXJuIHRydWUgaWYgdGhlIEZUWVAgYm94IGlzIHZhbGlkLgorICovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2pwMl9yZWFkX2Z0eXAoCW9wal9qcDJfdCAqanAyLAorCQkJCQkJCQkJT1BKX0JZVEUgKiBwX2hlYWRlcl9kYXRhLAorCQkJCQkJCQkJT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorCQkJCQkJCQkJb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisJT1BKX1VJTlQzMiBpLCBsX3JlbWFpbmluZ19ieXRlczsKKworCS8qIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQocF9oZWFkZXJfZGF0YSAhPSAwMCk7CisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKwlpZiAoanAyLT5qcDJfc3RhdGUgIT0gSlAyX1NUQVRFX1NJR05BVFVSRSkgeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiVGhlIGZ0eXAgYm94IG11c3QgYmUgdGhlIHNlY29uZCBib3ggaW4gdGhlIGZpbGUuXG4iKTsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwkvKiBhc3N1cmUgbGVuZ3RoIG9mIGRhdGEgaXMgY29ycmVjdCAqLworCWlmIChwX2hlYWRlcl9zaXplIDwgOCkgeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3Igd2l0aCBGVFlQIHNpZ25hdHVyZSBCb3ggc2l6ZVxuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmanAyLT5icmFuZCw0KTsJCS8qIEJSICovCisJcF9oZWFkZXJfZGF0YSArPSA0OworCisJb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmanAyLT5taW52ZXJzaW9uLDQpOwkJLyogTWluViAqLworCXBfaGVhZGVyX2RhdGEgKz0gNDsKKworCWxfcmVtYWluaW5nX2J5dGVzID0gcF9oZWFkZXJfc2l6ZSAtIDg7CisKKwkvKiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBieXRlcyBzaG91bGQgYmUgYSBtdWx0aXBsZSBvZiA0ICovCisJaWYgKChsX3JlbWFpbmluZ19ieXRlcyAmIDB4MykgIT0gMCkgeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRXJyb3Igd2l0aCBGVFlQIHNpZ25hdHVyZSBCb3ggc2l6ZVxuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJLyogZGl2IGJ5IDQgKi8KKwlqcDItPm51bWNsID0gbF9yZW1haW5pbmdfYnl0ZXMgPj4gMjsKKwlpZiAoanAyLT5udW1jbCkgeworCQlqcDItPmNsID0gKE9QSl9VSU5UMzIgKikgb3BqX21hbGxvYyhqcDItPm51bWNsICogc2l6ZW9mKE9QSl9VSU5UMzIpKTsKKwkJaWYgKGpwMi0+Y2wgPT0gMDApIHsKKwkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB3aXRoIEZUWVAgQm94XG4iKTsKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKwkJbWVtc2V0KGpwMi0+Y2wsMCxqcDItPm51bWNsICogc2l6ZW9mKE9QSl9VSU5UMzIpKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwganAyLT5udW1jbDsgKytpKQorCXsKKwkJb3BqX3JlYWRfYnl0ZXMocF9oZWFkZXJfZGF0YSwmanAyLT5jbFtpXSw0KTsJCS8qIENMaSAqLworCQlwX2hlYWRlcl9kYXRhICs9IDQ7CisJfQorCisJanAyLT5qcDJfc3RhdGUgfD0gSlAyX1NUQVRFX0ZJTEVfVFlQRTsKKworCXJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX2pwMl9za2lwX2pwMmMoCW9wal9qcDJfdCAqanAyLAorCQkJCQkgICAgCW9wal9zdHJlYW1fcHJpdmF0ZV90ICpzdHJlYW0sCisJCQkJCSAgICAJb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJYXNzZXJ0KHN0cmVhbSAhPSAwMCk7CisJYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKwlqcDItPmoya19jb2Rlc3RyZWFtX29mZnNldCA9IG9wal9zdHJlYW1fdGVsbChzdHJlYW0pOworCisJaWYgKG9wal9zdHJlYW1fc2tpcChzdHJlYW0sOCxwX21hbmFnZXIpICE9IDgpIHsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfanBpcF9za2lwX2lwdHIoCW9wal9qcDJfdCAqanAyLAorICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqc3RyZWFtLAorICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKQoreworICAvKiBwcmVjb25kaXRpb25zICovCisgIGFzc2VydChqcDIgIT0gMDApOworICBhc3NlcnQoc3RyZWFtICE9IDAwKTsKKyAgYXNzZXJ0KHBfbWFuYWdlciAhPSAwMCk7CisKKyAganAyLT5qcGlwX2lwdHJfb2Zmc2V0ID0gb3BqX3N0cmVhbV90ZWxsKHN0cmVhbSk7CisKKyAgaWYgKG9wal9zdHJlYW1fc2tpcChzdHJlYW0sMjQscF9tYW5hZ2VyKSAhPSAyNCkgeworICAgIHJldHVybiBPUEpfRkFMU0U7CisgIH0KKworICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKgorICogUmVhZHMgdGhlIEpwZWcyMDAwIGZpbGUgSGVhZGVyIGJveCAtIEpQMiBIZWFkZXIgYm94ICh3YXJuaW5nLCB0aGlzIGlzIGEgc3VwZXIgYm94KS4KKyAqCisgKiBAcGFyYW0JcF9oZWFkZXJfZGF0YQl0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIGZpbGUgaGVhZGVyIGJveC4KKyAqIEBwYXJhbQlqcDIJCQkJdGhlIGpwZWcyMDAwIGZpbGUgY29kZWMuCisgKiBAcGFyYW0JcF9oZWFkZXJfc2l6ZQl0aGUgc2l6ZSBvZiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIGZpbGUgaGVhZGVyIGJveC4KKyAqIEBwYXJhbQlwX21hbmFnZXIJCXRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKgorICogQHJldHVybiB0cnVlIGlmIHRoZSBKUDIgSGVhZGVyIGJveCB3YXMgc3VjY2Vzc2Z1bGx5IHJlY29uaXplZC4KKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX2pwMl9yZWFkX2pwMmgoICBvcGpfanAyX3QgKmpwMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpwX2hlYWRlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisJT1BKX1VJTlQzMiBsX2JveF9zaXplPTAsIGxfY3VycmVudF9kYXRhX3NpemUgPSAwOworCW9wal9qcDJfYm94X3QgYm94OworCWNvbnN0IG9wal9qcDJfaGVhZGVyX2hhbmRsZXJfdCAqIGxfY3VycmVudF9oYW5kbGVyOworCisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChwX2hlYWRlcl9kYXRhICE9IDAwKTsKKwlhc3NlcnQoanAyICE9IDAwKTsKKwlhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworCS8qIG1ha2Ugc3VyZSB0aGUgYm94IGlzIHdlbGwgcGxhY2VkICovCisJaWYgKChqcDItPmpwMl9zdGF0ZSAmIEpQMl9TVEFURV9GSUxFX1RZUEUpICE9IEpQMl9TVEFURV9GSUxFX1RZUEUgKSB7CisJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJUaGUgIGJveCBtdXN0IGJlIHRoZSBmaXJzdCBib3ggaW4gdGhlIGZpbGUuXG4iKTsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwlqcDItPmpwMl9pbWdfc3RhdGUgPSBKUDJfSU1HX1NUQVRFX05PTkU7CisKKwkvKiBpdGVyYXRlIHdoaWxlIHJlbWFpbmluZyBkYXRhICovCisJd2hpbGUgKHBfaGVhZGVyX3NpemUgPiAwKSB7CisKKwkJaWYgKCEgb3BqX2pwMl9yZWFkX2JveGhkcl9jaGFyKCZib3gscF9oZWFkZXJfZGF0YSwmbF9ib3hfc2l6ZSxwX2hlYWRlcl9zaXplLCBwX21hbmFnZXIpKSB7CisJCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3hcbiIpOworCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJfQorCisJCWlmIChib3gubGVuZ3RoID4gcF9oZWFkZXJfc2l6ZSkgeworCQkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIlN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94OiBib3ggbGVuZ3RoIGlzIGluY29uc2lzdGVudC5cbiIpOworCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJfQorCisJCWxfY3VycmVudF9oYW5kbGVyID0gb3BqX2pwMl9pbWdfZmluZF9oYW5kbGVyKGJveC50eXBlKTsKKwkJLy9CVUdJRDowMDU1OTk5CisJCS8vdGVzdCBmaWxlOiBmdXp6LXNpZ25hbF9zaWdzZWd2XzZiODhkZV8xMTIzXzI1MDkucGRmCisJCWlmIChib3gubGVuZ3RoIDwgbF9ib3hfc2l6ZSkgcmV0dXJuIE9QSl9GQUxTRTsKKwkJbF9jdXJyZW50X2RhdGFfc2l6ZSA9IGJveC5sZW5ndGggLSBsX2JveF9zaXplOworCQlwX2hlYWRlcl9kYXRhICs9IGxfYm94X3NpemU7CisKKwkJaWYgKGxfY3VycmVudF9oYW5kbGVyICE9IDAwKSB7CisJCQlpZiAoISBsX2N1cnJlbnRfaGFuZGxlci0+aGFuZGxlcihqcDIscF9oZWFkZXJfZGF0YSxsX2N1cnJlbnRfZGF0YV9zaXplLHBfbWFuYWdlcikpIHsKKwkJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQkJfQorCQl9CisJCWVsc2UgeworCQkJanAyLT5qcDJfaW1nX3N0YXRlIHw9IEpQMl9JTUdfU1RBVEVfVU5LTk9XTjsKKwkJfQorCisJCXBfaGVhZGVyX2RhdGEgKz0gbF9jdXJyZW50X2RhdGFfc2l6ZTsKKwkJcF9oZWFkZXJfc2l6ZSAtPSBib3gubGVuZ3RoOworCX0KKworCWpwMi0+anAyX3N0YXRlIHw9IEpQMl9TVEFURV9IRUFERVI7CisKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal9qcDJfcmVhZF9ib3hoZHJfY2hhciggICBvcGpfanAyX2JveF90ICpib3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbnVtYmVyX2J5dGVzX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2JveF9tYXhfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisJT1BKX1VJTlQzMiBsX3ZhbHVlOworCisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChwX2RhdGEgIT0gMDApOworCWFzc2VydChib3ggIT0gMDApOworCWFzc2VydChwX251bWJlcl9ieXRlc19yZWFkICE9IDAwKTsKKwlhc3NlcnQocF9tYW5hZ2VyICE9IDAwKTsKKworCWlmIChwX2JveF9tYXhfc2l6ZSA8IDgpIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkNhbm5vdCBoYW5kbGUgYm94IG9mIGxlc3MgdGhhbiA4IGJ5dGVzXG4iKTsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwkvKiBwcm9jZXNzIHJlYWQgZGF0YSAqLworCW9wal9yZWFkX2J5dGVzKHBfZGF0YSwgJmxfdmFsdWUsIDQpOworCXBfZGF0YSArPSA0OworCWJveC0+bGVuZ3RoID0gKE9QSl9VSU5UMzIpKGxfdmFsdWUpOworCisJb3BqX3JlYWRfYnl0ZXMocF9kYXRhLCAmbF92YWx1ZSwgNCk7CisJcF9kYXRhICs9IDQ7CisJYm94LT50eXBlID0gKE9QSl9VSU5UMzIpKGxfdmFsdWUpOworCisJKnBfbnVtYmVyX2J5dGVzX3JlYWQgPSA4OworCisJLyogZG8gd2UgaGF2ZSBhICJzcGVjaWFsIHZlcnkgbGFyZ2UgYm94ID8iICovCisJLyogcmVhZCB0aGVuIHRoZSBYTEJveCAqLworCWlmIChib3gtPmxlbmd0aCA9PSAxKSB7CisJCU9QSl9VSU5UMzIgbF94bF9wYXJ0X3NpemU7CisKKwkJaWYgKHBfYm94X21heF9zaXplIDwgMTYpIHsKKwkJCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJDYW5ub3QgaGFuZGxlIFhMIGJveCBvZiBsZXNzIHRoYW4gMTYgYnl0ZXNcbiIpOworCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJfQorCisJCW9wal9yZWFkX2J5dGVzKHBfZGF0YSwmbF94bF9wYXJ0X3NpemUsIDQpOworCQlwX2RhdGEgKz0gNDsKKwkJKnBfbnVtYmVyX2J5dGVzX3JlYWQgKz0gNDsKKworCQlpZiAobF94bF9wYXJ0X3NpemUgIT0gMCkgeworCQkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkNhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzJcbiIpOworCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJfQorCisJCW9wal9yZWFkX2J5dGVzKHBfZGF0YSwgJmxfdmFsdWUsIDQpOworCQkqcF9udW1iZXJfYnl0ZXNfcmVhZCArPSA0OworCQlib3gtPmxlbmd0aCA9IChPUEpfVUlOVDMyKShsX3ZhbHVlKTsKKworCQlpZiAoYm94LT5sZW5ndGggPT0gMCkgeworCQkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkNhbm5vdCBoYW5kbGUgYm94IG9mIHVuZGVmaW5lZCBzaXplc1xuIik7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisJfQorCWVsc2UgaWYgKGJveC0+bGVuZ3RoID09IDApIHsKKwkJb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkNhbm5vdCBoYW5kbGUgYm94IG9mIHVuZGVmaW5lZCBzaXplc1xuIik7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfanAyX3JlYWRfaGVhZGVyKAlvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9qcDJfdCAqanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfdCAqKiBwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCS8qIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQoanAyICE9IDAwKTsKKwlhc3NlcnQocF9zdHJlYW0gIT0gMDApOworCWFzc2VydChwX21hbmFnZXIgIT0gMDApOworCisJLyogY3VzdG9taXphdGlvbiBvZiB0aGUgdmFsaWRhdGlvbiAqLworCW9wal9qcDJfc2V0dXBfZGVjb2RpbmdfdmFsaWRhdGlvbiAoanAyKTsKKworCS8qIGN1c3RvbWl6YXRpb24gb2YgdGhlIGVuY29kaW5nICovCisJb3BqX2pwMl9zZXR1cF9oZWFkZXJfcmVhZGluZyhqcDIpOworCisJLyogdmFsaWRhdGlvbiBvZiB0aGUgcGFyYW1ldGVycyBjb2RlYyAqLworCWlmICghIG9wal9qcDJfZXhlYyhqcDIsanAyLT5tX3ZhbGlkYXRpb25fbGlzdCxwX3N0cmVhbSxwX21hbmFnZXIpKSB7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJLyogcmVhZCBoZWFkZXIgKi8KKwlpZiAoISBvcGpfanAyX2V4ZWMgKGpwMixqcDItPm1fcHJvY2VkdXJlX2xpc3QscF9zdHJlYW0scF9tYW5hZ2VyKSkgeworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCXJldHVybiBvcGpfajJrX3JlYWRfaGVhZGVyKAlwX3N0cmVhbSwKKwkJCQkJCQlqcDItPmoyaywKKwkJCQkJCQlwX2ltYWdlLAorCQkJCQkJCXBfbWFuYWdlcik7Cit9CisKK3ZvaWQgb3BqX2pwMl9zZXR1cF9lbmNvZGluZ192YWxpZGF0aW9uIChvcGpfanAyX3QgKmpwMikKK3sKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KGpwMiAhPSAwMCk7CisKKwlvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShqcDItPm1fdmFsaWRhdGlvbl9saXN0LCAob3BqX3Byb2NlZHVyZSlvcGpfanAyX2RlZmF1bHRfdmFsaWRhdGlvbik7CisJLyogREVWRUxPUEVSIENPUk5FUiwgYWRkIHlvdXIgY3VzdG9tIHZhbGlkYXRpb24gcHJvY2VkdXJlICovCit9CisKK3ZvaWQgb3BqX2pwMl9zZXR1cF9kZWNvZGluZ192YWxpZGF0aW9uIChvcGpfanAyX3QgKmpwMikKK3sKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KGpwMiAhPSAwMCk7CisJLyogREVWRUxPUEVSIENPUk5FUiwgYWRkIHlvdXIgY3VzdG9tIHZhbGlkYXRpb24gcHJvY2VkdXJlICovCit9CisKK3ZvaWQgb3BqX2pwMl9zZXR1cF9oZWFkZXJfd3JpdGluZyAob3BqX2pwMl90ICpqcDIpCit7CisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChqcDIgIT0gMDApOworCisJb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUoanAyLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qcDJfd3JpdGVfanAgKTsKKwlvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShqcDItPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2pwMl93cml0ZV9mdHlwICk7CisJb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUoanAyLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qcDJfd3JpdGVfanAyaCApOworICBpZigganAyLT5qcGlwX29uICkKKyAgICBvcGpfcHJvY2VkdXJlX2xpc3RfYWRkX3Byb2NlZHVyZShqcDItPm1fcHJvY2VkdXJlX2xpc3QsKG9wal9wcm9jZWR1cmUpb3BqX2pwaXBfc2tpcF9pcHRyICk7CisJb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUoanAyLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qcDJfc2tpcF9qcDJjICk7CisKKwkvKiBERVZFTE9QRVIgQ09STkVSLCBpbnNlcnQgeW91ciBjdXN0b20gcHJvY2VkdXJlcyAqLworCit9CisKK3ZvaWQgb3BqX2pwMl9zZXR1cF9oZWFkZXJfcmVhZGluZyAob3BqX2pwMl90ICpqcDIpCit7CisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChqcDIgIT0gMDApOworCisJb3BqX3Byb2NlZHVyZV9saXN0X2FkZF9wcm9jZWR1cmUoanAyLT5tX3Byb2NlZHVyZV9saXN0LChvcGpfcHJvY2VkdXJlKW9wal9qcDJfcmVhZF9oZWFkZXJfcHJvY2VkdXJlICk7CisJLyogREVWRUxPUEVSIENPUk5FUiwgYWRkIHlvdXIgY3VzdG9tIHByb2NlZHVyZXMgKi8KK30KKworT1BKX0JPT0wgb3BqX2pwMl9yZWFkX3RpbGVfaGVhZGVyICggb3BqX2pwMl90ICogcF9qcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF90aWxlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogcF90aWxlX3gwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogcF90aWxlX3kwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogcF90aWxlX3gxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogcF90aWxlX3kxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbmJfY29tcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQk9PTCAqIHBfZ29fb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKwlyZXR1cm4gb3BqX2oya19yZWFkX3RpbGVfaGVhZGVyKHBfanAyLT5qMmssCisJCQkJCQkJCXBfdGlsZV9pbmRleCwKKwkJCQkJCQkJcF9kYXRhX3NpemUsCisJCQkJCQkJCXBfdGlsZV94MCwgcF90aWxlX3kwLAorCQkJCQkJCQlwX3RpbGVfeDEsIHBfdGlsZV95MSwKKwkJCQkJCQkJcF9uYl9jb21wcywKKwkJCQkJCQkJcF9nb19vbiwKKwkJCQkJCQkJcF9zdHJlYW0sCisJCQkJCQkJCXBfbWFuYWdlcik7Cit9CisKK09QSl9CT09MIG9wal9qcDJfd3JpdGVfdGlsZSAoCW9wal9qcDJfdCAqcF9qcDIsCisJCQkJCSAJIAkgICAgT1BKX1VJTlQzMiBwX3RpbGVfaW5kZXgsCisJCQkJCSAJIAkgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisJCQkJCSAJIAkgICAgT1BKX1VJTlQzMiBwX2RhdGFfc2l6ZSwKKwkJCQkJIAkgCSAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqcF9zdHJlYW0sCisJCQkJCSAJIAkgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworeworCXJldHVybiBvcGpfajJrX3dyaXRlX3RpbGUgKHBfanAyLT5qMmsscF90aWxlX2luZGV4LHBfZGF0YSxwX2RhdGFfc2l6ZSxwX3N0cmVhbSxwX21hbmFnZXIpOworfQorCitPUEpfQk9PTCBvcGpfanAyX2RlY29kZV90aWxlICggIG9wal9qcDJfdCAqIHBfanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKwlyZXR1cm4gb3BqX2oya19kZWNvZGVfdGlsZSAocF9qcDItPmoyayxwX3RpbGVfaW5kZXgscF9kYXRhLHBfZGF0YV9zaXplLHBfc3RyZWFtLHBfbWFuYWdlcik7Cit9CisKK3ZvaWQgb3BqX2pwMl9kZXN0cm95KG9wal9qcDJfdCAqanAyKQoreworCWlmIChqcDIpIHsKKwkJLyogZGVzdHJveSB0aGUgSjJLIGNvZGVjICovCisJCW9wal9qMmtfZGVzdHJveShqcDItPmoyayk7CisJCWpwMi0+ajJrID0gMDA7CisKKwkJaWYgKGpwMi0+Y29tcHMpIHsKKwkJCW9wal9mcmVlKGpwMi0+Y29tcHMpOworCQkJanAyLT5jb21wcyA9IDAwOworCQl9CisKKwkJaWYgKGpwMi0+Y2wpIHsKKwkJCW9wal9mcmVlKGpwMi0+Y2wpOworCQkJanAyLT5jbCA9IDAwOworCQl9CisKKwkJaWYgKGpwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfYnVmKSB7CisJCQlvcGpfZnJlZShqcDItPmNvbG9yLmljY19wcm9maWxlX2J1Zik7CisJCQlqcDItPmNvbG9yLmljY19wcm9maWxlX2J1ZiA9IDAwOworCQl9CisKKwkJaWYgKGpwMi0+Y29sb3IuanAyX2NkZWYpIHsKKwkJCWlmIChqcDItPmNvbG9yLmpwMl9jZGVmLT5pbmZvKSB7CisJCQkJb3BqX2ZyZWUoanAyLT5jb2xvci5qcDJfY2RlZi0+aW5mbyk7CisJCQkJanAyLT5jb2xvci5qcDJfY2RlZi0+aW5mbyA9IE5VTEw7CisJCQl9CisKKwkJCW9wal9mcmVlKGpwMi0+Y29sb3IuanAyX2NkZWYpOworCQkJanAyLT5jb2xvci5qcDJfY2RlZiA9IDAwOworCQl9CisKKwkJaWYgKGpwMi0+Y29sb3IuanAyX3BjbHIpIHsKKwkJCWlmIChqcDItPmNvbG9yLmpwMl9wY2xyLT5jbWFwKSB7CisJCQkJb3BqX2ZyZWUoanAyLT5jb2xvci5qcDJfcGNsci0+Y21hcCk7CisJCQkJanAyLT5jb2xvci5qcDJfcGNsci0+Y21hcCA9IE5VTEw7CisJCQl9CisJCQlpZiAoanAyLT5jb2xvci5qcDJfcGNsci0+Y2hhbm5lbF9zaWduKSB7CisJCQkJb3BqX2ZyZWUoanAyLT5jb2xvci5qcDJfcGNsci0+Y2hhbm5lbF9zaWduKTsKKwkJCQlqcDItPmNvbG9yLmpwMl9wY2xyLT5jaGFubmVsX3NpZ24gPSBOVUxMOworCQkJfQorCQkJaWYgKGpwMi0+Y29sb3IuanAyX3BjbHItPmNoYW5uZWxfc2l6ZSkgeworCQkJCW9wal9mcmVlKGpwMi0+Y29sb3IuanAyX3BjbHItPmNoYW5uZWxfc2l6ZSk7CisJCQkJanAyLT5jb2xvci5qcDJfcGNsci0+Y2hhbm5lbF9zaXplID0gTlVMTDsKKwkJCX0KKwkJCWlmIChqcDItPmNvbG9yLmpwMl9wY2xyLT5lbnRyaWVzKSB7CisJCQkJb3BqX2ZyZWUoanAyLT5jb2xvci5qcDJfcGNsci0+ZW50cmllcyk7CisJCQkJanAyLT5jb2xvci5qcDJfcGNsci0+ZW50cmllcyA9IE5VTEw7CisJCQl9CisKKwkJCW9wal9mcmVlKGpwMi0+Y29sb3IuanAyX3BjbHIpOworCQkJanAyLT5jb2xvci5qcDJfcGNsciA9IDAwOworCQl9CisKKwkJaWYgKGpwMi0+bV92YWxpZGF0aW9uX2xpc3QpIHsKKwkJCW9wal9wcm9jZWR1cmVfbGlzdF9kZXN0cm95KGpwMi0+bV92YWxpZGF0aW9uX2xpc3QpOworCQkJanAyLT5tX3ZhbGlkYXRpb25fbGlzdCA9IDAwOworCQl9CisKKwkJaWYgKGpwMi0+bV9wcm9jZWR1cmVfbGlzdCkgeworCQkJb3BqX3Byb2NlZHVyZV9saXN0X2Rlc3Ryb3koanAyLT5tX3Byb2NlZHVyZV9saXN0KTsKKwkJCWpwMi0+bV9wcm9jZWR1cmVfbGlzdCA9IDAwOworCQl9CisKKwkJb3BqX2ZyZWUoanAyKTsKKwl9Cit9CisKK09QSl9CT09MIG9wal9qcDJfc2V0X2RlY29kZV9hcmVhKAlvcGpfanAyX3QgKnBfanAyLAorCQkJCQkJCQkgICAgb3BqX2ltYWdlX3QqIHBfaW1hZ2UsCisJCQkJCQkJCSAgICBPUEpfSU5UMzIgcF9zdGFydF94LCBPUEpfSU5UMzIgcF9zdGFydF95LAorCQkJCQkJCQkgICAgT1BKX0lOVDMyIHBfZW5kX3gsIE9QSl9JTlQzMiBwX2VuZF95LAorCQkJCQkJCQkgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisJcmV0dXJuIG9wal9qMmtfc2V0X2RlY29kZV9hcmVhKHBfanAyLT5qMmssIHBfaW1hZ2UsIHBfc3RhcnRfeCwgcF9zdGFydF95LCBwX2VuZF94LCBwX2VuZF95LCBwX21hbmFnZXIpOworfQorCitPUEpfQk9PTCBvcGpfanAyX2dldF90aWxlKAlvcGpfanAyX3QgKnBfanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfdCogcF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiB0aWxlX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCWlmICghcF9pbWFnZSkKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKworCW9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfV0FSTklORywgIkpQMiBib3ggd2hpY2ggYXJlIGFmdGVyIHRoZSBjb2Rlc3RyZWFtIHdpbGwgbm90IGJlIHJlYWQgYnkgdGhpcyBmdW5jdGlvbi5cbiIpOworCisJaWYgKCEgb3BqX2oya19nZXRfdGlsZShwX2pwMi0+ajJrLCBwX3N0cmVhbSwgcF9pbWFnZSwgcF9tYW5hZ2VyLCB0aWxlX2luZGV4KSApeworCQlvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRmFpbGVkIHRvIGRlY29kZSB0aGUgY29kZXN0cmVhbSBpbiB0aGUgSlAyIGZpbGVcbiIpOworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCWlmICghb3BqX2pwMl9jaGVja19jb2xvcihwX2ltYWdlLCAmKHBfanAyLT5jb2xvciksIHBfbWFuYWdlcikpIHsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwkvKiBTZXQgSW1hZ2UgQ29sb3IgU3BhY2UgKi8KKwlpZiAocF9qcDItPmVudW1jcyA9PSAxNikKKwkJcF9pbWFnZS0+Y29sb3Jfc3BhY2UgPSBPUEpfQ0xSU1BDX1NSR0I7CisJZWxzZSBpZiAocF9qcDItPmVudW1jcyA9PSAxNykKKwkJcF9pbWFnZS0+Y29sb3Jfc3BhY2UgPSBPUEpfQ0xSU1BDX0dSQVk7CisJZWxzZSBpZiAocF9qcDItPmVudW1jcyA9PSAxOCkKKwkJcF9pbWFnZS0+Y29sb3Jfc3BhY2UgPSBPUEpfQ0xSU1BDX1NZQ0M7CisJZWxzZQorCQlwX2ltYWdlLT5jb2xvcl9zcGFjZSA9IE9QSl9DTFJTUENfVU5LTk9XTjsKKworCS8qIEFwcGx5IHRoZSBjb2xvciBzcGFjZSBpZiBuZWVkZWQgKi8KKwlpZihwX2pwMi0+Y29sb3IuanAyX2NkZWYpIHsKKwkJb3BqX2pwMl9hcHBseV9jZGVmKHBfaW1hZ2UsICYocF9qcDItPmNvbG9yKSk7CisJfQorCisJaWYocF9qcDItPmNvbG9yLmpwMl9wY2xyKSB7CisJCS8qIFBhcnQgMSwgSS41LjMuNDogRWl0aGVyIGJvdGggb3Igbm9uZSA6ICovCisJCWlmKCAhcF9qcDItPmNvbG9yLmpwMl9wY2xyLT5jbWFwKQorCQkJb3BqX2pwMl9mcmVlX3BjbHIoJihwX2pwMi0+Y29sb3IpKTsKKwkJZWxzZQorCQkJb3BqX2pwMl9hcHBseV9wY2xyKHBfaW1hZ2UsICYocF9qcDItPmNvbG9yKSk7CisJfQorCisJaWYocF9qcDItPmNvbG9yLmljY19wcm9maWxlX2J1ZikgeworCQlwX2ltYWdlLT5pY2NfcHJvZmlsZV9idWYgPSBwX2pwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfYnVmOworCQlwX2ltYWdlLT5pY2NfcHJvZmlsZV9sZW4gPSBwX2pwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfbGVuOworCQlwX2pwMi0+Y29sb3IuaWNjX3Byb2ZpbGVfYnVmID0gTlVMTDsKKwl9CisKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBKUDIgZW5jb2RlciBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworb3BqX2pwMl90KiBvcGpfanAyX2NyZWF0ZShPUEpfQk9PTCBwX2lzX2RlY29kZXIpCit7CisJb3BqX2pwMl90ICpqcDIgPSAob3BqX2pwMl90KilvcGpfbWFsbG9jKHNpemVvZihvcGpfanAyX3QpKTsKKwlpZiAoanAyKSB7CisJCW1lbXNldChqcDIsMCxzaXplb2Yob3BqX2pwMl90KSk7CisKKwkJLyogY3JlYXRlIHRoZSBKMksgY29kZWMgKi8KKwkJaWYgKCEgcF9pc19kZWNvZGVyKSB7CisJCQlqcDItPmoyayA9IG9wal9qMmtfY3JlYXRlX2NvbXByZXNzKCk7CisJCX0KKwkJZWxzZSB7CisJCQlqcDItPmoyayA9IG9wal9qMmtfY3JlYXRlX2RlY29tcHJlc3MoKTsKKwkJfQorCisJCWlmIChqcDItPmoyayA9PSAwMCkgeworCQkJb3BqX2pwMl9kZXN0cm95KGpwMik7CisJCQlyZXR1cm4gMDA7CisJCX0KKworCQkvKiBDb2xvciBzdHJ1Y3R1cmUgKi8KKwkJanAyLT5jb2xvci5pY2NfcHJvZmlsZV9idWYgPSBOVUxMOworCQlqcDItPmNvbG9yLmljY19wcm9maWxlX2xlbiA9IDA7CisJCWpwMi0+Y29sb3IuanAyX2NkZWYgPSBOVUxMOworCQlqcDItPmNvbG9yLmpwMl9wY2xyID0gTlVMTDsKKwkJanAyLT5jb2xvci5qcDJfaGFzX2NvbHIgPSAwOworCisJCS8qIHZhbGlkYXRpb24gbGlzdCBjcmVhdGlvbiAqLworCQlqcDItPm1fdmFsaWRhdGlvbl9saXN0ID0gb3BqX3Byb2NlZHVyZV9saXN0X2NyZWF0ZSgpOworCQlpZiAoISBqcDItPm1fdmFsaWRhdGlvbl9saXN0KSB7CisJCQlvcGpfanAyX2Rlc3Ryb3koanAyKTsKKwkJCXJldHVybiAwMDsKKwkJfQorCisJCS8qIGV4ZWN1dGlvbiBsaXN0IGNyZWF0aW9uICovCisJCWpwMi0+bV9wcm9jZWR1cmVfbGlzdCA9IG9wal9wcm9jZWR1cmVfbGlzdF9jcmVhdGUoKTsKKwkJaWYgKCEganAyLT5tX3Byb2NlZHVyZV9saXN0KSB7CisJCQlvcGpfanAyX2Rlc3Ryb3koanAyKTsKKwkJCXJldHVybiAwMDsKKwkJfQorCX0KKworCXJldHVybiBqcDI7Cit9CisKK3ZvaWQganAyX2R1bXAob3BqX2pwMl90KiBwX2pwMiwgT1BKX0lOVDMyIGZsYWcsIEZJTEUqIG91dF9zdHJlYW0pCit7CisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChwX2pwMiAhPSAwMCk7CisKKwlqMmtfZHVtcChwX2pwMi0+ajJrLAorCQkJCQlmbGFnLAorCQkJCQlvdXRfc3RyZWFtKTsKK30KKworb3BqX2NvZGVzdHJlYW1faW5kZXhfdCoganAyX2dldF9jc3RyX2luZGV4KG9wal9qcDJfdCogcF9qcDIpCit7CisJcmV0dXJuIGoya19nZXRfY3N0cl9pbmRleChwX2pwMi0+ajJrKTsKK30KKworb3BqX2NvZGVzdHJlYW1faW5mb192Ml90KiBqcDJfZ2V0X2NzdHJfaW5mbyhvcGpfanAyX3QqIHBfanAyKQoreworCXJldHVybiBqMmtfZ2V0X2NzdHJfaW5mbyhwX2pwMi0+ajJrKTsKK30KKworT1BKX0JPT0wgb3BqX2pwMl9zZXRfZGVjb2RlZF9yZXNvbHV0aW9uX2ZhY3RvcihvcGpfanAyX3QgKnBfanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHJlc19mYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcikKK3sKKwlyZXR1cm4gb3BqX2oya19zZXRfZGVjb2RlZF9yZXNvbHV0aW9uX2ZhY3RvcihwX2pwMi0+ajJrLCByZXNfZmFjdG9yLCBwX21hbmFnZXIpOworfQorCisvKiBKUElQIHNwZWNpZmljICovCisKKyNpZmRlZiBVU0VfSlBJUAorc3RhdGljIE9QSl9CT09MIG9wal9qcGlwX3dyaXRlX2lwdHIob3BqX2pwMl90ICpqcDIsCisgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgIE9QSl9PRkZfVCBqMmtfY29kZXN0cmVhbV9leGl0OworICBPUEpfQllURSBsX2RhdGFfaGVhZGVyIFsyNF07CisKKyAgLyogcHJlY29uZGl0aW9ucyAqLworICBhc3NlcnQoanAyICE9IDAwKTsKKyAgYXNzZXJ0KGNpbyAhPSAwMCk7CisgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICBhc3NlcnQob3BqX3N0cmVhbV9oYXNfc2VlayhjaW8pKTsKKworICBqMmtfY29kZXN0cmVhbV9leGl0ID0gb3BqX3N0cmVhbV90ZWxsKGNpbyk7CisgIG9wal93cml0ZV9ieXRlcyhsX2RhdGFfaGVhZGVyLCAyNCwgNCk7IC8qIHNpemUgb2YgaXB0ciAqLworICBvcGpfd3JpdGVfYnl0ZXMobF9kYXRhX2hlYWRlciArIDQsSlBJUF9JUFRSLDQpOwkJCQkJCQkJCSAgIC8qIElQVFIgKi8KKyNpZiAwCisgIG9wal93cml0ZV9ieXRlcyhsX2RhdGFfaGVhZGVyICsgNCArIDQsIDAsIDgpOyAvKiBvZmZzZXQgKi8KKyAgb3BqX3dyaXRlX2J5dGVzKGxfZGF0YV9oZWFkZXIgKyA4ICsgOCwgMCwgOCk7IC8qIGxlbmd0aCAqLworI2Vsc2UKKyAgb3BqX3dyaXRlX2RvdWJsZShsX2RhdGFfaGVhZGVyICsgNCArIDQsIDApOyAvKiBvZmZzZXQgKi8KKyAgb3BqX3dyaXRlX2RvdWJsZShsX2RhdGFfaGVhZGVyICsgOCArIDgsIDApOyAvKiBsZW5ndGggKi8KKyNlbmRpZgorCisgIGlmICghIG9wal9zdHJlYW1fc2VlayhjaW8sanAyLT5qcGlwX2lwdHJfb2Zmc2V0LHBfbWFuYWdlcikpIHsKKyAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRmFpbGVkIHRvIHNlZWsgaW4gdGhlIHN0cmVhbS5cbiIpOworICAgIHJldHVybiBPUEpfRkFMU0U7CisgIH0KKworICBpZiAob3BqX3N0cmVhbV93cml0ZV9kYXRhKGNpbyxsX2RhdGFfaGVhZGVyLDI0LHBfbWFuYWdlcikgIT0gMjQpIHsKKyAgICBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiRmFpbGVkIHRvIHNlZWsgaW4gdGhlIHN0cmVhbS5cbiIpOworICAgIHJldHVybiBPUEpfRkFMU0U7CisgIH0KKworICBpZiAoISBvcGpfc3RyZWFtX3NlZWsoY2lvLGoya19jb2Rlc3RyZWFtX2V4aXQscF9tYW5hZ2VyKSkgeworICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJGYWlsZWQgdG8gc2VlayBpbiB0aGUgc3RyZWFtLlxuIik7CisgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgfQorCisgIHJldHVybiBPUEpfVFJVRTsKK30KKworc3RhdGljIE9QSl9CT09MIG9wal9qcGlwX3dyaXRlX2ZpZHgob3BqX2pwMl90ICpqcDIsCisgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgIE9QSl9PRkZfVCBqMmtfY29kZXN0cmVhbV9leGl0OworICBPUEpfQllURSBsX2RhdGFfaGVhZGVyIFsyNF07CisKKyAgLyogcHJlY29uZGl0aW9ucyAqLworICBhc3NlcnQoanAyICE9IDAwKTsKKyAgYXNzZXJ0KGNpbyAhPSAwMCk7CisgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICBhc3NlcnQob3BqX3N0cmVhbV9oYXNfc2VlayhjaW8pKTsKKworICBvcGpfd3JpdGVfYnl0ZXMobF9kYXRhX2hlYWRlciwgMjQsIDQpOyAvKiBzaXplIG9mIGlwdHIgKi8KKyAgb3BqX3dyaXRlX2J5dGVzKGxfZGF0YV9oZWFkZXIgKyA0LEpQSVBfRklEWCw0KTsJCQkJCQkJCQkgICAvKiBJUFRSICovCisgIG9wal93cml0ZV9kb3VibGUobF9kYXRhX2hlYWRlciArIDQgKyA0LCAwKTsgLyogb2Zmc2V0ICovCisgIG9wal93cml0ZV9kb3VibGUobF9kYXRhX2hlYWRlciArIDggKyA4LCAwKTsgLyogbGVuZ3RoICovCisKKyAgaWYgKG9wal9zdHJlYW1fd3JpdGVfZGF0YShjaW8sbF9kYXRhX2hlYWRlciwyNCxwX21hbmFnZXIpICE9IDI0KSB7CisgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkZhaWxlZCB0byBzZWVrIGluIHRoZSBzdHJlYW0uXG4iKTsKKyAgICByZXR1cm4gT1BKX0ZBTFNFOworICB9CisKKyAgajJrX2NvZGVzdHJlYW1fZXhpdCA9IG9wal9zdHJlYW1fdGVsbChjaW8pOworICBpZiAoISBvcGpfc3RyZWFtX3NlZWsoY2lvLGoya19jb2Rlc3RyZWFtX2V4aXQscF9tYW5hZ2VyKSkgeworICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJGYWlsZWQgdG8gc2VlayBpbiB0aGUgc3RyZWFtLlxuIik7CisgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgfQorCisgIHJldHVybiBPUEpfVFJVRTsKK30KKworc3RhdGljIE9QSl9CT09MIG9wal9qcGlwX3dyaXRlX2NpZHgob3BqX2pwMl90ICpqcDIsCisgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgIE9QSl9PRkZfVCBqMmtfY29kZXN0cmVhbV9leGl0OworICBPUEpfQllURSBsX2RhdGFfaGVhZGVyIFsyNF07CisKKyAgLyogcHJlY29uZGl0aW9ucyAqLworICBhc3NlcnQoanAyICE9IDAwKTsKKyAgYXNzZXJ0KGNpbyAhPSAwMCk7CisgIGFzc2VydChwX21hbmFnZXIgIT0gMDApOworICBhc3NlcnQob3BqX3N0cmVhbV9oYXNfc2VlayhjaW8pKTsKKworICBqMmtfY29kZXN0cmVhbV9leGl0ID0gb3BqX3N0cmVhbV90ZWxsKGNpbyk7CisgIG9wal93cml0ZV9ieXRlcyhsX2RhdGFfaGVhZGVyLCAyNCwgNCk7IC8qIHNpemUgb2YgaXB0ciAqLworICBvcGpfd3JpdGVfYnl0ZXMobF9kYXRhX2hlYWRlciArIDQsSlBJUF9DSURYLDQpOwkJCQkJCQkJCSAgIC8qIElQVFIgKi8KKyNpZiAwCisgIG9wal93cml0ZV9ieXRlcyhsX2RhdGFfaGVhZGVyICsgNCArIDQsIDAsIDgpOyAvKiBvZmZzZXQgKi8KKyAgb3BqX3dyaXRlX2J5dGVzKGxfZGF0YV9oZWFkZXIgKyA4ICsgOCwgMCwgOCk7IC8qIGxlbmd0aCAqLworI2Vsc2UKKyAgb3BqX3dyaXRlX2RvdWJsZShsX2RhdGFfaGVhZGVyICsgNCArIDQsIDApOyAvKiBvZmZzZXQgKi8KKyAgb3BqX3dyaXRlX2RvdWJsZShsX2RhdGFfaGVhZGVyICsgOCArIDgsIDApOyAvKiBsZW5ndGggKi8KKyNlbmRpZgorCisgIGlmICghIG9wal9zdHJlYW1fc2VlayhjaW8sajJrX2NvZGVzdHJlYW1fZXhpdCxwX21hbmFnZXIpKSB7CisgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkZhaWxlZCB0byBzZWVrIGluIHRoZSBzdHJlYW0uXG4iKTsKKyAgICByZXR1cm4gT1BKX0ZBTFNFOworICB9CisKKyAgaWYgKG9wal9zdHJlYW1fd3JpdGVfZGF0YShjaW8sbF9kYXRhX2hlYWRlciwyNCxwX21hbmFnZXIpICE9IDI0KSB7CisgICAgb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIkZhaWxlZCB0byBzZWVrIGluIHRoZSBzdHJlYW0uXG4iKTsKKyAgICByZXR1cm4gT1BKX0ZBTFNFOworICB9CisKKyAgajJrX2NvZGVzdHJlYW1fZXhpdCA9IG9wal9zdHJlYW1fdGVsbChjaW8pOworICBpZiAoISBvcGpfc3RyZWFtX3NlZWsoY2lvLGoya19jb2Rlc3RyZWFtX2V4aXQscF9tYW5hZ2VyKSkgeworICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJGYWlsZWQgdG8gc2VlayBpbiB0aGUgc3RyZWFtLlxuIik7CisgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgfQorCisgIHJldHVybiBPUEpfVFJVRTsKK30KKworI2lmIDAKK3N0YXRpYyB2b2lkIHdyaXRlX3ByeHkoIGludCBvZmZzZXRfanAyYywgaW50IGxlbmd0aF9qcDJjLCBpbnQgb2Zmc2V0X2lkeCwgaW50IGxlbmd0aF9pZHgsIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpjaW8sCisgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApCit7CisgIE9QSl9CWVRFIGxfZGF0YV9oZWFkZXIgWzhdOworICBPUEpfT0ZGX1QgbGVuLCBsZW5wOworCisgIGxlbnAgPSBvcGpfc3RyZWFtX3RlbGwoY2lvKTsKKyAgb3BqX3N0cmVhbV9za2lwKGNpbywgNCwgcF9tYW5hZ2VyKTsgICAgICAgICAvKiBMIFthdCB0aGUgZW5kXSAqLworICBvcGpfd3JpdGVfYnl0ZXMobF9kYXRhX2hlYWRlcixKUElQX1BSWFksNCk7IC8qIElQVFIgICAgICAgICAgICovCisgIG9wal9zdHJlYW1fd3JpdGVfZGF0YShjaW8sbF9kYXRhX2hlYWRlciw0LHBfbWFuYWdlcik7CisKKyAgb3BqX3dyaXRlX2J5dGVzKCBsX2RhdGFfaGVhZGVyLCBvZmZzZXRfanAyYywgOCk7IC8qIE9PRkYgICAgICAgICAgICovCisgIG9wal9zdHJlYW1fd3JpdGVfZGF0YShjaW8sbF9kYXRhX2hlYWRlciw4LHBfbWFuYWdlcik7CisgIG9wal93cml0ZV9ieXRlcyggbF9kYXRhX2hlYWRlciwgbGVuZ3RoX2pwMmMsIDQpOyAvKiBPQkggcGFydCAxICAgICAqLworICBvcGpfd3JpdGVfYnl0ZXMoIGxfZGF0YV9oZWFkZXIrNCwgSlAyX0pQMkMsIDQpOyAgLyogT0JIIHBhcnQgMiAgICAgKi8KKyAgb3BqX3N0cmVhbV93cml0ZV9kYXRhKGNpbyxsX2RhdGFfaGVhZGVyLDgscF9tYW5hZ2VyKTsKKworICBvcGpfd3JpdGVfYnl0ZXMoIGxfZGF0YV9oZWFkZXIsIDEsIDEpOy8qIE5JICAgICAgICAgICAgICovCisgIG9wal9zdHJlYW1fd3JpdGVfZGF0YShjaW8sbF9kYXRhX2hlYWRlciwxLHBfbWFuYWdlcik7CisKKyAgb3BqX3dyaXRlX2J5dGVzKCBsX2RhdGFfaGVhZGVyLCBvZmZzZXRfaWR4LCA4KTsgIC8qIElPRkYgICAgICAgICAgICovCisgIG9wal9zdHJlYW1fd3JpdGVfZGF0YShjaW8sbF9kYXRhX2hlYWRlciw4LHBfbWFuYWdlcik7CisgIG9wal93cml0ZV9ieXRlcyggbF9kYXRhX2hlYWRlciwgbGVuZ3RoX2lkeCwgNCk7ICAvKiBJQkggcGFydCAxICAgICAqLworICBvcGpfd3JpdGVfYnl0ZXMoIGxfZGF0YV9oZWFkZXIrNCwgSlBJUF9DSURYLCA0KTsgICAvKiBJQkggcGFydCAyICAgICAqLworICBvcGpfc3RyZWFtX3dyaXRlX2RhdGEoY2lvLGxfZGF0YV9oZWFkZXIsOCxwX21hbmFnZXIpOworCisgIGxlbiA9IG9wal9zdHJlYW1fdGVsbChjaW8pLWxlbnA7CisgIG9wal9zdHJlYW1fc2tpcChjaW8sIGxlbnAsIHBfbWFuYWdlcik7CisgIG9wal93cml0ZV9ieXRlcyhsX2RhdGFfaGVhZGVyLGxlbiw0KTsvKiBMICAgICAgICAgICAgICAqLworICBvcGpfc3RyZWFtX3dyaXRlX2RhdGEoY2lvLGxfZGF0YV9oZWFkZXIsNCxwX21hbmFnZXIpOworICBvcGpfc3RyZWFtX3NlZWsoY2lvLCBsZW5wK2xlbixwX21hbmFnZXIpOworfQorI2VuZGlmCisKKworI2lmIDAKK3N0YXRpYyBpbnQgd3JpdGVfZmlkeCggaW50IG9mZnNldF9qcDJjLCBpbnQgbGVuZ3RoX2pwMmMsIGludCBvZmZzZXRfaWR4LCBpbnQgbGVuZ3RoX2lkeCwgb3BqX3N0cmVhbV9wcml2YXRlX3QgKmNpbywKKyAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICkKK3sKKyAgT1BKX0JZVEUgbF9kYXRhX2hlYWRlciBbNF07CisgIE9QSl9PRkZfVCBsZW4sIGxlbnA7CisKKyAgbGVucCA9IG9wal9zdHJlYW1fdGVsbChjaW8pOworICBvcGpfc3RyZWFtX3NraXAoY2lvLCA0LCBwX21hbmFnZXIpOworICBvcGpfd3JpdGVfYnl0ZXMobF9kYXRhX2hlYWRlcixKUElQX0ZJRFgsNCk7IC8qIEZJRFggKi8KKyAgb3BqX3N0cmVhbV93cml0ZV9kYXRhKGNpbyxsX2RhdGFfaGVhZGVyLDQscF9tYW5hZ2VyKTsKKworICB3cml0ZV9wcnh5KCBvZmZzZXRfanAyYywgbGVuZ3RoX2pwMmMsIG9mZnNldF9pZHgsIGxlbmd0aF9pZHgsIGNpbyxwX21hbmFnZXIpOworCisgIGxlbiA9IG9wal9zdHJlYW1fdGVsbChjaW8pLWxlbnA7CisgIG9wal9zdHJlYW1fc2tpcChjaW8sIGxlbnAsIHBfbWFuYWdlcik7CisgIG9wal93cml0ZV9ieXRlcyhsX2RhdGFfaGVhZGVyLGxlbiw0KTsvKiBMICAgICAgICAgICAgICAqLworICBvcGpfc3RyZWFtX3dyaXRlX2RhdGEoY2lvLGxfZGF0YV9oZWFkZXIsNCxwX21hbmFnZXIpOworICBvcGpfc3RyZWFtX3NlZWsoY2lvLCBsZW5wK2xlbixwX21hbmFnZXIpOworCisgIHJldHVybiBsZW47Cit9CisjZW5kaWYKKyNlbmRpZiAvKiBVU0VfSlBJUCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2pwMi5oIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL2pwMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMWQyZjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvanAyLmgKQEAgLTAsMCArMSw0OTUgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgVW5pdmVyc2l0ZSBjYXRob2xpcXVlIGRlIExvdXZhaW4gKFVDTCksIEJlbGdpdW0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBQcm9mZXNzb3IgQmVub2l0IE1hY3EKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMS0yMDEyLCBDZW50cmUgTmF0aW9uYWwgZCdFdHVkZXMgU3BhdGlhbGVzIChDTkVTKSwgRlIgCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIENTIFN5c3RlbWVzIGQnSW5mb3JtYXRpb24sIEZyYW5jZQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBfX0pQMl9ICisjZGVmaW5lIF9fSlAyX0gKKy8qKgorQGZpbGUganAyLmgKK0BicmllZiBUaGUgSlBFRy0yMDAwIGZpbGUgZm9ybWF0IFJlYWRlci9Xcml0ZXIgKEpQMikKKworKi8KKworLyoqIEBkZWZncm91cCBKUDIgSlAyIC0gSlBFRy0yMDAwIGZpbGUgZm9ybWF0IHJlYWRlci93cml0ZXIgKi8KKy8qQHsqLworCisvKiNkZWZpbmUgSlBJUF9KUElQIDB4NmE3MDY5NzAqLworCisjZGVmaW5lICAgICBKUDJfSlAgICAweDZhNTAyMDIwICAgIC8qKjwgSlBFRyAyMDAwIHNpZ25hdHVyZSBib3ggKi8KKyNkZWZpbmUgICAgIEpQMl9GVFlQIDB4NjY3NDc5NzAgICAgLyoqPCBGaWxlIHR5cGUgYm94ICovCisjZGVmaW5lICAgICBKUDJfSlAySCAweDZhNzAzMjY4ICAgIC8qKjwgSlAyIGhlYWRlciBib3ggKHN1cGVyLWJveCkgKi8KKyNkZWZpbmUgICAgIEpQMl9JSERSIDB4Njk2ODY0NzIgICAgLyoqPCBJbWFnZSBoZWFkZXIgYm94ICovCisjZGVmaW5lICAgICBKUDJfQ09MUiAweDYzNmY2YzcyICAgIC8qKjwgQ29sb3VyIHNwZWNpZmljYXRpb24gYm94ICovCisjZGVmaW5lICAgICBKUDJfSlAyQyAweDZhNzAzMjYzICAgIC8qKjwgQ29udGlndW91cyBjb2Rlc3RyZWFtIGJveCAqLworI2RlZmluZSAgICAgSlAyX1VSTCAgMHg3NTcyNmMyMCAgICAvKio8IERhdGEgZW50cnkgVVJMIGJveCAqLworI2RlZmluZSAgICAgSlAyX1BDTFIgMHg3MDYzNmM3MiAgICAvKio8IFBhbGV0dGUgYm94ICovCisjZGVmaW5lICAgICBKUDJfQ01BUCAweDYzNmQ2MTcwICAgIC8qKjwgQ29tcG9uZW50IE1hcHBpbmcgYm94ICovCisjZGVmaW5lICAgICBKUDJfQ0RFRiAweDYzNjQ2NTY2ICAgIC8qKjwgQ2hhbm5lbCBEZWZpbml0aW9uIGJveCAqLworI2RlZmluZSAgICAgSlAyX0RUQkwgMHg2NDc0NjI2YyAgICAvKio8IERhdGEgUmVmZXJlbmNlIGJveCAqLworI2RlZmluZSAgICAgSlAyX0JQQ0MgMHg2MjcwNjM2MyAgICAvKio8IEJpdHMgcGVyIGNvbXBvbmVudCBib3ggKi8KKyNkZWZpbmUgICAgIEpQMl9KUDIgIDB4NmE3MDMyMjAgICAgLyoqPCBGaWxlIHR5cGUgZmllbGRzICovCisKKy8qIEZvciB0aGUgZnV0dXJlICovCisvKiAjZGVmaW5lIEpQMl9SRVMgMHg3MjY1NzMyMCAqLyAgLyoqPCBSZXNvbHV0aW9uIGJveCAoc3VwZXItYm94KSAqLworLyogI2RlZmluZSBKUDJfSlAySSAweDZhNzAzMjY5ICovICAvKio8IEludGVsbGVjdHVhbCBwcm9wZXJ0eSBib3ggKi8KKy8qICNkZWZpbmUgSlAyX1hNTCAgMHg3ODZkNmMyMCAqLyAgLyoqPCBYTUwgYm94ICovCisvKiAjZGVmaW5lIEpQMl9VVUlEIDB4NzU3NTY5OTQgKi8gIC8qKjwgVVVJRCBib3ggKi8KKy8qICNkZWZpbmUgSlAyX1VJTkYgMHg3NTY5NmU2NiAqLyAgLyoqPCBVVUlEIGluZm8gYm94IChzdXBlci1ib3gpICovCisvKiAjZGVmaW5lIEpQMl9VTFNUIDB4NzU2YzczNzQgKi8gIC8qKjwgVVVJRCBsaXN0IGJveCAqLworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit0eXBlZGVmIGVudW0KK3sKKyAgSlAyX1NUQVRFX05PTkUgICAgICAgICAgICA9IDB4MCwKKyAgSlAyX1NUQVRFX1NJR05BVFVSRSAgICAgICA9IDB4MSwKKyAgSlAyX1NUQVRFX0ZJTEVfVFlQRSAgICAgICA9IDB4MiwKKyAgSlAyX1NUQVRFX0hFQURFUiAgICAgICAgICA9IDB4NCwKKyAgSlAyX1NUQVRFX0NPREVTVFJFQU0gICAgICA9IDB4OCwKKyAgSlAyX1NUQVRFX0VORF9DT0RFU1RSRUFNICA9IDB4MTAsCisgIEpQMl9TVEFURV9VTktOT1dOICAgICAgICAgPSAweDdmZmZmZmZmIC8qIElTTyBDIHJlc3RyaWN0cyBlbnVtZXJhdG9yIHZhbHVlcyB0byByYW5nZSBvZiAnaW50JyAqLworfQorSlAyX1NUQVRFOworCit0eXBlZGVmIGVudW0KK3sKKyAgSlAyX0lNR19TVEFURV9OT05FICAgICAgICA9IDB4MCwKKyAgSlAyX0lNR19TVEFURV9VTktOT1dOICAgICA9IDB4N2ZmZmZmZmYKK30KK0pQMl9JTUdfU1RBVEU7CisKKy8qKiAKK0NoYW5uZWwgZGVzY3JpcHRpb246IGNoYW5uZWwgaW5kZXgsIHR5cGUsIGFzc29jYXRpb24KKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfanAyX2NkZWZfaW5mbworeworICAgIE9QSl9VSU5UMTYgY24sIHR5cCwgYXNvYzsKK30gb3BqX2pwMl9jZGVmX2luZm9fdDsKKworLyoqIAorQ2hhbm5lbCBkZXNjcmlwdGlvbnMgYW5kIG51bWJlciBvZiBkZXNjcmlwdGlvbnMKKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfanAyX2NkZWYKK3sKKyAgICBvcGpfanAyX2NkZWZfaW5mb190ICppbmZvOworICAgIE9QSl9VSU5UMTYgbjsKK30gb3BqX2pwMl9jZGVmX3Q7CisKKy8qKiAKK0NvbXBvbmVudCBtYXBwaW5nczogY2hhbm5lbCBpbmRleCwgbWFwcGluZyB0eXBlLCBwYWxldHRlIGluZGV4CisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX2pwMl9jbWFwX2NvbXAKK3sKKyAgICBPUEpfVUlOVDE2IGNtcDsKKyAgICBPUEpfQllURSBtdHlwLCBwY29sOworfSBvcGpfanAyX2NtYXBfY29tcF90OworCisvKiogCitQYWxldHRlIGRhdGE6IHRhYmxlIGVudHJpZXMsIHBhbGV0dGUgY29sdW1ucworKi8KK3R5cGVkZWYgc3RydWN0IG9wal9qcDJfcGNscgoreworICAgIE9QSl9VSU5UMzIgKmVudHJpZXM7CisgICAgT1BKX0JZVEUgKmNoYW5uZWxfc2lnbjsKKyAgICBPUEpfQllURSAqY2hhbm5lbF9zaXplOworICAgIG9wal9qcDJfY21hcF9jb21wX3QgKmNtYXA7CisgICAgT1BKX1VJTlQxNiBucl9lbnRyaWVzOworICAgIE9QSl9CWVRFIG5yX2NoYW5uZWxzOworfSBvcGpfanAyX3BjbHJfdDsKKworLyoqIAorQ29sbGVjdG9yIGZvciBJQ0MgcHJvZmlsZSwgcGFsZXR0ZSwgY29tcG9uZW50IG1hcHBpbmcsIGNoYW5uZWwgZGVzY3JpcHRpb24gCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX2pwMl9jb2xvcgoreworICAgIE9QSl9CWVRFICppY2NfcHJvZmlsZV9idWY7CisgICAgT1BKX1VJTlQzMiBpY2NfcHJvZmlsZV9sZW47CisKKyAgICBvcGpfanAyX2NkZWZfdCAqanAyX2NkZWY7CisgICAgb3BqX2pwMl9wY2xyX3QgKmpwMl9wY2xyOworICAgIE9QSl9CWVRFIGpwMl9oYXNfY29scjsKK30gb3BqX2pwMl9jb2xvcl90OworCisvKiogCitKUDIgY29tcG9uZW50CisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX2pwMl9jb21wcyB7CisgIE9QSl9VSU5UMzIgZGVwdGg7ICAgICAgCisgIE9QSl9VSU5UMzIgc2duZDsgICAgICAgCisgIE9QSl9VSU5UMzIgYnBjYzsKK30gb3BqX2pwMl9jb21wc190OworCisvKioKK0pQRUctMjAwMCBmaWxlIGZvcm1hdCByZWFkZXIvd3JpdGVyCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX2pwMgoreworICAvKiogaGFuZGxlIHRvIHRoZSBKMksgY29kZWMgICovCisgIG9wal9qMmtfdCAqajJrOworICAvKiogbGlzdCBvZiB2YWxpZGF0aW9uIHByb2NlZHVyZXMgKi8KKyAgc3RydWN0IG9wal9wcm9jZWR1cmVfbGlzdCAqIG1fdmFsaWRhdGlvbl9saXN0OworICAvKiogbGlzdCBvZiBleGVjdXRpb24gcHJvY2VkdXJlcyAqLworICBzdHJ1Y3Qgb3BqX3Byb2NlZHVyZV9saXN0ICogbV9wcm9jZWR1cmVfbGlzdDsKKworICAvKiB3aWR0aCBvZiBpbWFnZSAqLworICBPUEpfVUlOVDMyIHc7CisgIC8qIGhlaWdodCBvZiBpbWFnZSAqLworICBPUEpfVUlOVDMyIGg7CisgIC8qIG51bWJlciBvZiBjb21wb25lbnRzIGluIHRoZSBpbWFnZSAqLworICBPUEpfVUlOVDMyIG51bWNvbXBzOworICBPUEpfVUlOVDMyIGJwYzsKKyAgT1BKX1VJTlQzMiBDOworICBPUEpfVUlOVDMyIFVua0M7CisgIE9QSl9VSU5UMzIgSVBSOworICBPUEpfVUlOVDMyIG1ldGg7CisgIE9QSl9VSU5UMzIgYXBwcm94OworICBPUEpfVUlOVDMyIGVudW1jczsKKyAgT1BKX1VJTlQzMiBwcmVjZWRlbmNlOworICBPUEpfVUlOVDMyIGJyYW5kOworICBPUEpfVUlOVDMyIG1pbnZlcnNpb247CisgIE9QSl9VSU5UMzIgbnVtY2w7CisgIE9QSl9VSU5UMzIgKmNsOworICBvcGpfanAyX2NvbXBzX3QgKmNvbXBzOworICAvKiBGSVhNRTogVGhlIGZvbGxvd2luZyB0d28gdmFyaWFibGVzIGFyZSB1c2VkIHRvIHNhdmUgb2Zmc2V0CisgICAgYXMgd2Ugd3JpdGUgb3V0IGEgSlAyIGZpbGUgdG8gZGlzay4gVGhpcyBtZWNhbmlzbSBpcyBub3QgZmxleGlibGUKKyAgICBhcyBjb2RlYyB3cml0ZXJzIHdpbGwgbmVlZCB0byBleHRhbmQgdGhvc2UgZmllbGRzIGFzIG5ldyBwYXJ0CisgICAgb2YgdGhlIHN0YW5kYXJkIGFyZSBpbXBsZW1lbnRlZC4KKyAgKi8KKyAgICBPUEpfT0ZGX1QgajJrX2NvZGVzdHJlYW1fb2Zmc2V0OworICAgIE9QSl9PRkZfVCBqcGlwX2lwdHJfb2Zmc2V0OworCU9QSl9CT09MIGpwaXBfb247CisgIE9QSl9VSU5UMzIganAyX3N0YXRlOworICBPUEpfVUlOVDMyIGpwMl9pbWdfc3RhdGU7CisKKyAgb3BqX2pwMl9jb2xvcl90IGNvbG9yOworICAgIAorICAgIE9QSl9CT09MIGlnbm9yZV9wY2xyX2NtYXBfY2RlZjsKK30KK29wal9qcDJfdDsKKworLyoqCitKUDIgQm94CisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX2pwMl9ib3ggeworICAgIE9QSl9VSU5UMzIgbGVuZ3RoOworICAgIE9QSl9VSU5UMzIgdHlwZTsKKyAgICBPUEpfSU5UMzIgaW5pdF9wb3M7Cit9IG9wal9qcDJfYm94X3Q7CisKK3R5cGVkZWYgc3RydWN0IG9wal9qcDJfaGVhZGVyX2hhbmRsZXIKK3sKKyAgLyogbWFya2VyIHZhbHVlICovCisgIE9QSl9VSU5UMzIgaWQ7CisgIC8qIGFjdGlvbiBsaW5rZWQgdG8gdGhlIG1hcmtlciAqLworICBPUEpfQk9PTCAoKmhhbmRsZXIpICggICAgIG9wal9qcDJfdCAqanAyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqcF9oZWFkZXJfZGF0YSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2hlYWRlcl9zaXplLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpOworfQorb3BqX2pwMl9oZWFkZXJfaGFuZGxlcl90OworCisKK3R5cGVkZWYgc3RydWN0IG9wal9qcDJfaW1nX2hlYWRlcl93cml0ZXJfaGFuZGxlciAKK3sKKyAgLyogYWN0aW9uIHRvIHBlcmZvcm0gKi8KKyAgT1BKX0JZVEUqICAgKCpoYW5kbGVyKSAob3BqX2pwMl90ICpqcDIsIE9QSl9VSU5UMzIgKiBwX2RhdGFfc2l6ZSk7CisgIC8qIHJlc3VsdCBvZiB0aGUgYWN0aW9uIDogZGF0YSAqLworICBPUEpfQllURSogICBtX2RhdGE7CisgIC8qIHNpemUgb2YgZGF0YSAqLworICBPUEpfVUlOVDMyICBtX3NpemU7Cit9IAorb3BqX2pwMl9pbWdfaGVhZGVyX3dyaXRlcl9oYW5kbGVyX3Q7CisKKy8qKiBAbmFtZSBFeHBvcnRlZCBmdW5jdGlvbnMgKi8KKy8qQHsqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisgKiBXcml0ZXMgdGhlIEpwZWcyMDAwIGZpbGUgSGVhZGVyIGJveCAtIEpQMiBIZWFkZXIgYm94ICh3YXJuaW5nLCB0aGlzIGlzIGEgc3VwZXIgYm94KS4KKyAqCisgKiBAcGFyYW0gIGpwMiAgICAgIHRoZSBqcGVnMjAwMCBmaWxlIGNvZGVjLgorICogQHBhcmFtICBzdHJlYW0gICAgICB0aGUgc3RyZWFtIHRvIHdyaXRlIGRhdGEgdG8uCisgKiBAcGFyYW0gIHBfbWFuYWdlciAgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gdHJ1ZSBpZiB3cml0aW5nIHdhcyBzdWNjZXNzZnVsLgorKi8KK09QSl9CT09MIG9wal9qcDJfd3JpdGVfanAyaChvcGpfanAyX3QgKmpwMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKK1NldHVwIHRoZSBkZWNvZGVyIGRlY29kaW5nIHBhcmFtZXRlcnMgdXNpbmcgdXNlciBwYXJhbWV0ZXJzLgorRGVjb2RpbmcgcGFyYW1ldGVycyBhcmUgcmV0dXJuZWQgaW4ganAyLT5qMmstPmNwLgorQHBhcmFtIGpwMiBKUDIgZGVjb21wcmVzc29yIGhhbmRsZQorQHBhcmFtIHBhcmFtZXRlcnMgZGVjb21wcmVzc2lvbiBwYXJhbWV0ZXJzCisqLwordm9pZCBvcGpfanAyX3NldHVwX2RlY29kZXIob3BqX2pwMl90ICpqcDIsIG9wal9kcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzKTsKKworLyoqCisgKiBEZWNvZGUgYW4gaW1hZ2UgZnJvbSBhIEpQRUctMjAwMCBmaWxlIHN0cmVhbQorICogQHBhcmFtIGpwMiBKUDIgZGVjb21wcmVzc29yIGhhbmRsZQorICogQHBhcmFtIHBfc3RyZWFtICBGSVhNRSBET0MKKyAqIEBwYXJhbSBwX2ltYWdlICAgRklYTUUgRE9DCisgKiBAcGFyYW0gcF9tYW5hZ2VyIEZJWE1FIERPQworICoKKyAqIEByZXR1cm4gUmV0dXJucyBhIGRlY29kZWQgaW1hZ2UgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBOVUxMIG90aGVyd2lzZQorKi8KK09QSl9CT09MIG9wal9qcDJfZGVjb2RlKG9wal9qcDJfdCAqanAyLAorICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgb3BqX2ltYWdlX3QqIHBfaW1hZ2UsCisgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpOworCisvKioKKyAqIFNldHVwIHRoZSBlbmNvZGVyIHBhcmFtZXRlcnMgdXNpbmcgdGhlIGN1cnJlbnQgaW1hZ2UgYW5kIHVzaW5nIHVzZXIgcGFyYW1ldGVycy4gCisgKiBDb2RpbmcgcGFyYW1ldGVycyBhcmUgcmV0dXJuZWQgaW4ganAyLT5qMmstPmNwLiAKKyAqCisgKiBAcGFyYW0ganAyIEpQMiBjb21wcmVzc29yIGhhbmRsZQorICogQHBhcmFtIHBhcmFtZXRlcnMgY29tcHJlc3Npb24gcGFyYW1ldGVycworICogQHBhcmFtIGltYWdlIGlucHV0IGZpbGxlZCBpbWFnZQorICogQHBhcmFtIHBfbWFuYWdlciAgRklYTUUgRE9DCisqLwordm9pZCBvcGpfanAyX3NldHVwX2VuY29kZXIoICBvcGpfanAyX3QgKmpwMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NwYXJhbWV0ZXJzX3QgKnBhcmFtZXRlcnMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90ICppbWFnZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworLyoqCitFbmNvZGUgYW4gaW1hZ2UgaW50byBhIEpQRUctMjAwMCBmaWxlIHN0cmVhbQorQHBhcmFtIGpwMiAgICAgIEpQMiBjb21wcmVzc29yIGhhbmRsZQorQHBhcmFtIHN0cmVhbSAgICBPdXRwdXQgYnVmZmVyIHN0cmVhbQorQHBhcmFtIHBfbWFuYWdlciAgZXZlbnQgbWFuYWdlcgorQHJldHVybiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBmYWxzZSBvdGhlcndpc2UKKyovCitPUEpfQk9PTCBvcGpfanAyX2VuY29kZSggIG9wal9qcDJfdCAqanAyLCAKKyAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnN0cmVhbSwgCisgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlcik7CisKKworLyoqCisgKiBTdGFydHMgYSBjb21wcmVzc2lvbiBzY2hlbWUsIGkuZS4gdmFsaWRhdGVzIHRoZSBjb2RlYyBwYXJhbWV0ZXJzLCB3cml0ZXMgdGhlIGhlYWRlci4KKyAqCisgKiBAcGFyYW0gIGpwMiAgICB0aGUganBlZzIwMDAgZmlsZSBjb2RlYy4KKyAqIEBwYXJhbSAgc3RyZWFtICAgIHRoZSBzdHJlYW0gb2JqZWN0LgorICogQHBhcmFtICBwX2ltYWdlICAgRklYTUUgRE9DCisgKiBAcGFyYW0gcF9tYW5hZ2VyIEZJWE1FIERPQworICoKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZWMgaXMgdmFsaWQuCisgKi8KK09QSl9CT09MIG9wal9qcDJfc3RhcnRfY29tcHJlc3Mob3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90ICogcF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworCisvKioKKyAqIEVuZHMgdGhlIGNvbXByZXNzaW9uIHByb2NlZHVyZXMgYW5kIHBvc3NpYmlsaXkgYWRkIGRhdGEgdG8gYmUgcmVhZCBhZnRlciB0aGUKKyAqIGNvZGVzdHJlYW0uCisgKi8KK09QSl9CT09MIG9wal9qcDJfZW5kX2NvbXByZXNzKCAgb3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqY2lvLAorICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisgKiBFbmRzIHRoZSBkZWNvbXByZXNzaW9uIHByb2NlZHVyZXMgYW5kIHBvc3NpYmlsaXkgYWRkIGRhdGEgdG8gYmUgcmVhZCBhZnRlciB0aGUKKyAqIGNvZGVzdHJlYW0uCisgKi8KK09QSl9CT09MIG9wal9qcDJfZW5kX2RlY29tcHJlc3Mob3BqX2pwMl90ICpqcDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqY2lvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpOworCisvKioKKyAqIFJlYWRzIGEganBlZzIwMDAgZmlsZSBoZWFkZXIgc3RydWN0dXJlLgorICoKKyAqIEBwYXJhbSBwX3N0cmVhbSB0aGUgc3RyZWFtIHRvIHJlYWQgZGF0YSBmcm9tLgorICogQHBhcmFtIGpwMiB0aGUganBlZzIwMDAgZmlsZSBoZWFkZXIgc3RydWN0dXJlLgorICogQHBhcmFtIHBfaW1hZ2UgICBGSVhNRSBET0MKKyAqIEBwYXJhbSBwX21hbmFnZXIgdGhlIHVzZXIgZXZlbnQgbWFuYWdlci4KKyAqCisgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGJveCBpcyB2YWxpZC4KKyAqLworT1BKX0JPT0wgb3BqX2pwMl9yZWFkX2hlYWRlciggIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2pwMl90ICpqcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90ICoqIHBfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFJlYWRzIGEgdGlsZSBoZWFkZXIuCisgKiBAcGFyYW0gIHBfanAyICAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICBwX3RpbGVfaW5kZXggIEZJWE1FIERPQworICogQHBhcmFtICBwX2RhdGFfc2l6ZSAgIEZJWE1FIERPQworICogQHBhcmFtICBwX3RpbGVfeDAgICAgIEZJWE1FIERPQworICogQHBhcmFtICBwX3RpbGVfeTAgICAgIEZJWE1FIERPQworICogQHBhcmFtICBwX3RpbGVfeDEgICAgIEZJWE1FIERPQworICogQHBhcmFtICBwX3RpbGVfeTEgICAgIEZJWE1FIERPQworICogQHBhcmFtICBwX25iX2NvbXBzICAgIEZJWE1FIERPQworICogQHBhcmFtICBwX2dvX29uICAgICAgIEZJWE1FIERPQworICogQHBhcmFtICBwX3N0cmVhbSAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgcF9tYW5hZ2VyICAgICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICovCitPUEpfQk9PTCBvcGpfanAyX3JlYWRfdGlsZV9oZWFkZXIgKCBvcGpfanAyX3QgKiBwX2pwMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX3RpbGVfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3RpbGVfeDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3RpbGVfeTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3RpbGVfeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3RpbGVfeTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9uYl9jb21wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CT09MICogcF9nb19vbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisvKioKKyAqIFdyaXRlcyBhIHRpbGUuCisgKgorICogQHBhcmFtICBwX2pwMiAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gcF90aWxlX2luZGV4ICBGSVhNRSBET0MKKyAqIEBwYXJhbSBwX2RhdGEgICAgICAgIEZJWE1FIERPQworICogQHBhcmFtIHBfZGF0YV9zaXplICAgRklYTUUgRE9DCisgKiBAcGFyYW0gIHBfc3RyZWFtICAgICAgdGhlIHN0cmVhbSB0byB3cml0ZSBkYXRhIHRvLgorICogQHBhcmFtICBwX21hbmFnZXIgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIuCisgKi8KK09QSl9CT09MIG9wal9qcDJfd3JpdGVfdGlsZSAoICBvcGpfanAyX3QgKnBfanAyLAorICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9kYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyICk7CisKKy8qKgorICogRGVjb2RlIHRpbGUgZGF0YS4KKyAqIEBwYXJhbSAgcF9qcDIgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtICBwX3RpbGVfaW5kZXggRklYTUUgRE9DCisgKiBAcGFyYW0gIHBfZGF0YSAgICAgICBGSVhNRSBET0MKKyAqIEBwYXJhbSAgcF9kYXRhX3NpemUgIEZJWE1FIERPQworICogQHBhcmFtICBwX3N0cmVhbSAgICAgIHRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqIEBwYXJhbSAgcF9tYW5hZ2VyICB0aGUgdXNlciBldmVudCBtYW5hZ2VyLgorICoKKyAqIEByZXR1cm4gRklYTUUgRE9DCisgKi8KK09QSl9CT09MIG9wal9qcDJfZGVjb2RlX3RpbGUgKCAgb3BqX2pwMl90ICogcF9qcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIgKTsKKworLyoqCisgKiBDcmVhdGVzIGEganBlZzIwMDAgZmlsZSBkZWNvbXByZXNzb3IuCisgKgorICogQHJldHVybiAgYW4gZW1wdHkganBlZzIwMDAgZmlsZSBjb2RlYy4KKyAqLworb3BqX2pwMl90KiBvcGpfanAyX2NyZWF0ZSAoT1BKX0JPT0wgcF9pc19kZWNvZGVyKTsKKworLyoqCitEZXN0cm95IGEgSlAyIGRlY29tcHJlc3NvciBoYW5kbGUKK0BwYXJhbSBqcDIgSlAyIGRlY29tcHJlc3NvciBoYW5kbGUgdG8gZGVzdHJveQorKi8KK3ZvaWQgb3BqX2pwMl9kZXN0cm95KG9wal9qcDJfdCAqanAyKTsKKworCisvKioKKyAqIFNldHMgdGhlIGdpdmVuIGFyZWEgdG8gYmUgZGVjb2RlZC4gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHJpZ2h0IGFmdGVyIG9wal9yZWFkX2hlYWRlciBhbmQgYmVmb3JlIGFueSB0aWxlIGhlYWRlciByZWFkaW5nLgorICoKKyAqIEBwYXJhbSAgcF9qcDIgICAgICB0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0gIHBfaW1hZ2UgICAgIEZJWE1FIERPQworICogQHBhcmFtICBwX3N0YXJ0X3ggICB0aGUgbGVmdCBwb3NpdGlvbiBvZiB0aGUgcmVjdGFuZ2xlIHRvIGRlY29kZSAoaW4gaW1hZ2UgY29vcmRpbmF0ZXMpLgorICogQHBhcmFtICBwX3N0YXJ0X3kgICAgdGhlIHVwIHBvc2l0aW9uIG9mIHRoZSByZWN0YW5nbGUgdG8gZGVjb2RlIChpbiBpbWFnZSBjb29yZGluYXRlcykuCisgKiBAcGFyYW0gIHBfZW5kX3ggICAgICB0aGUgcmlnaHQgcG9zaXRpb24gb2YgdGhlIHJlY3RhbmdsZSB0byBkZWNvZGUgKGluIGltYWdlIGNvb3JkaW5hdGVzKS4KKyAqIEBwYXJhbSAgcF9lbmRfeSAgICAgIHRoZSBib3R0b20gcG9zaXRpb24gb2YgdGhlIHJlY3RhbmdsZSB0byBkZWNvZGUgKGluIGltYWdlIGNvb3JkaW5hdGVzKS4KKyAqIEBwYXJhbSAgcF9tYW5hZ2VyICAgIHRoZSB1c2VyIGV2ZW50IG1hbmFnZXIKKyAqCisgKiBAcmV0dXJuICB0cnVlICAgICAgaWYgdGhlIGFyZWEgY291bGQgYmUgc2V0LgorICovCitPUEpfQk9PTCBvcGpfanAyX3NldF9kZWNvZGVfYXJlYSggIG9wal9qcDJfdCAqcF9qcDIsCisgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90KiBwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgcF9zdGFydF94LCBPUEpfSU5UMzIgcF9zdGFydF95LAorICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgcF9lbmRfeCwgT1BKX0lOVDMyIHBfZW5kX3ksCisgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciApOworCisgLyoqCisgKiAKKyAqLworT1BKX0JPT0wgb3BqX2pwMl9nZXRfdGlsZSggIG9wal9qcDJfdCAqcF9qcDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV9wcml2YXRlX3QgKnBfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90KiBwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tZ3JfdCAqIHBfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRpbGVfaW5kZXggKTsKKworCisvKioKKyAqIAorICovCitPUEpfQk9PTCBvcGpfanAyX3NldF9kZWNvZGVkX3Jlc29sdXRpb25fZmFjdG9yKG9wal9qcDJfdCAqcF9qcDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHJlc19mYWN0b3IsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpOworCisKKy8qIFRPRE8gTVNEOiBjbGVhbiB0aGVzZSAzIGZ1bmN0aW9ucyAqLworLyoqCisgKiBEdW1wIHNvbWUgZWxlbWVudHMgZnJvbSB0aGUgSlAyIGRlY29tcHJlc3Npb24gc3RydWN0dXJlIC4KKyAqCisgKkBwYXJhbSBwX2pwMiAgICAgICAgdGhlIGpwMiBjb2RlYy4KKyAqQHBhcmFtIGZsYWcgICAgICAgIGZsYWcgdG8gZGVzY3JpYmUgd2hhdCBlbG1lbnRzIGFyZSBkdW1wLgorICpAcGFyYW0gb3V0X3N0cmVhbSAgICAgIG91dHB1dCBzdHJlYW0gd2hlcmUgZHVtcCB0aGUgZWxlbWVudHMuCisgKgorKi8KK3ZvaWQganAyX2R1bXAgKG9wal9qcDJfdCogcF9qcDIsIE9QSl9JTlQzMiBmbGFnLCBGSUxFKiBvdXRfc3RyZWFtKTsKKworLyoqCisgKiBHZXQgdGhlIGNvZGVzdHJlYW0gaW5mbyBmcm9tIGEgSlBFRzIwMDAgY29kZWMuCisgKgorICpAcGFyYW0gIHBfanAyICAgICAgICBqcDIgY29kZWMuCisgKgorICpAcmV0dXJuICB0aGUgY29kZXN0cmVhbSBpbmZvcm1hdGlvbiBleHRyYWN0IGZyb20gdGhlIGpwZzIwMDAgY29kZWMKKyAqLworb3BqX2NvZGVzdHJlYW1faW5mb192Ml90KiBqcDJfZ2V0X2NzdHJfaW5mbyhvcGpfanAyX3QqIHBfanAyKTsKKworLyoqCisgKiBHZXQgdGhlIGNvZGVzdHJlYW0gaW5kZXggZnJvbSBhIEpQRUcyMDAwIGNvZGVjLgorICoKKyAqQHBhcmFtICBwX2pwMiAgICAgICAganAyIGNvZGVjLgorICoKKyAqQHJldHVybiAgdGhlIGNvZGVzdHJlYW0gaW5kZXggZXh0cmFjdCBmcm9tIHRoZSBqcGcyMDAwIGNvZGVjCisgKi8KK29wal9jb2Rlc3RyZWFtX2luZGV4X3QqIGpwMl9nZXRfY3N0cl9pbmRleChvcGpfanAyX3QqIHBfanAyKTsKKworCisvKkB9Ki8KKworLypAfSovCisKKyNlbmRpZiAvKiBfX0pQMl9IICovCisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9tY3QuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9tY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTY0OTM4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL21jdC5jCkBAIC0wLDAgKzEsMzQyIEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEtMjAxMiwgQ2VudHJlIE5hdGlvbmFsIGQnRXR1ZGVzIFNwYXRpYWxlcyAoQ05FUyksIEZSIAorICogQ29weXJpZ2h0IChjKSAyMDEyLCBDUyBTeXN0ZW1lcyBkJ0luZm9ybWF0aW9uLCBGcmFuY2UKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmZGVmIF9fU1NFX18KKyNpbmNsdWRlIDx4bW1pbnRyaW4uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAib3BqX2luY2x1ZGVzLmgiCisKKy8qIDxzdW1tYXJ5PiAqLworLyogVGhpcyB0YWJsZSBjb250YWlucyB0aGUgbm9ybXMgb2YgdGhlIGJhc2lzIGZ1bmN0aW9uIG9mIHRoZSByZXZlcnNpYmxlIE1DVC4gKi8KKy8qIDwvc3VtbWFyeT4gKi8KK3N0YXRpYyBjb25zdCBPUEpfRkxPQVQ2NCBvcGpfbWN0X25vcm1zWzNdID0geyAxLjczMiwgLjgyOTIsIC44MjkyIH07CisKKy8qIDxzdW1tYXJ5PiAqLworLyogVGhpcyB0YWJsZSBjb250YWlucyB0aGUgbm9ybXMgb2YgdGhlIGJhc2lzIGZ1bmN0aW9uIG9mIHRoZSBpcnJldmVyc2libGUgTUNULiAqLworLyogPC9zdW1tYXJ5PiAqLworc3RhdGljIGNvbnN0IE9QSl9GTE9BVDY0IG9wal9tY3Rfbm9ybXNfcmVhbFszXSA9IHsgMS43MzIsIDEuODA1LCAxLjU3MyB9OworCitjb25zdCBPUEpfRkxPQVQ2NCAqIG9wal9tY3RfZ2V0X21jdF9ub3JtcyAoKQoreworCXJldHVybiBvcGpfbWN0X25vcm1zOworfQorCitjb25zdCBPUEpfRkxPQVQ2NCAqIG9wal9tY3RfZ2V0X21jdF9ub3Jtc19yZWFsICgpCit7CisJcmV0dXJuIG9wal9tY3Rfbm9ybXNfcmVhbDsKK30KKworLyogPHN1bW1hcnk+ICovCisvKiBGb3dhcmQgcmV2ZXJzaWJsZSBNQ1QuICovCisvKiA8L3N1bW1hcnk+ICovCit2b2lkIG9wal9tY3RfZW5jb2RlKAorCQlPUEpfSU5UMzIqIHJlc3RyaWN0IGMwLAorCQlPUEpfSU5UMzIqIHJlc3RyaWN0IGMxLAorCQlPUEpfSU5UMzIqIHJlc3RyaWN0IGMyLAorCQlPUEpfVUlOVDMyIG4pCit7CisJT1BKX1VJTlQzMiBpOworCWZvcihpID0gMDsgaSA8IG47ICsraSkgeworCQlPUEpfSU5UMzIgciA9IGMwW2ldOworCQlPUEpfSU5UMzIgZyA9IGMxW2ldOworCQlPUEpfSU5UMzIgYiA9IGMyW2ldOworCQlPUEpfSU5UMzIgeSA9IChyICsgKGcgKiAyKSArIGIpID4+IDI7CisJCU9QSl9JTlQzMiB1ID0gYiAtIGc7CisJCU9QSl9JTlQzMiB2ID0gciAtIGc7CisJCWMwW2ldID0geTsKKwkJYzFbaV0gPSB1OworCQljMltpXSA9IHY7CisJfQorfQorCisvKiA8c3VtbWFyeT4gKi8KKy8qIEludmVyc2UgcmV2ZXJzaWJsZSBNQ1QuICovCisvKiA8L3N1bW1hcnk+ICovCit2b2lkIG9wal9tY3RfZGVjb2RlKAorCQlPUEpfSU5UMzIqIHJlc3RyaWN0IGMwLAorCQlPUEpfSU5UMzIqIHJlc3RyaWN0IGMxLCAKKwkJT1BKX0lOVDMyKiByZXN0cmljdCBjMiwgCisJCU9QSl9VSU5UMzIgbikKK3sKKwlPUEpfVUlOVDMyIGk7CisJZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworCQlPUEpfSU5UMzIgeSA9IGMwW2ldOworCQlPUEpfSU5UMzIgdSA9IGMxW2ldOworCQlPUEpfSU5UMzIgdiA9IGMyW2ldOworCQlPUEpfSU5UMzIgZyA9IHkgLSAoKHUgKyB2KSA+PiAyKTsKKwkJT1BKX0lOVDMyIHIgPSB2ICsgZzsKKwkJT1BKX0lOVDMyIGIgPSB1ICsgZzsKKwkJYzBbaV0gPSByOworCQljMVtpXSA9IGc7CisJCWMyW2ldID0gYjsKKwl9Cit9CisKKy8qIDxzdW1tYXJ5PiAqLworLyogR2V0IG5vcm0gb2YgYmFzaXMgZnVuY3Rpb24gb2YgcmV2ZXJzaWJsZSBNQ1QuICovCisvKiA8L3N1bW1hcnk+ICovCitPUEpfRkxPQVQ2NCBvcGpfbWN0X2dldG5vcm0oT1BKX1VJTlQzMiBjb21wbm8pIHsKKwlyZXR1cm4gb3BqX21jdF9ub3Jtc1tjb21wbm9dOworfQorCisvKiA8c3VtbWFyeT4gKi8KKy8qIEZvd2FyZCBpcnJldmVyc2libGUgTUNULiAqLworLyogPC9zdW1tYXJ5PiAqLwordm9pZCBvcGpfbWN0X2VuY29kZV9yZWFsKAorCQlPUEpfSU5UMzIqIHJlc3RyaWN0IGMwLAorCQlPUEpfSU5UMzIqIHJlc3RyaWN0IGMxLAorCQlPUEpfSU5UMzIqIHJlc3RyaWN0IGMyLAorCQlPUEpfVUlOVDMyIG4pCit7CisJT1BKX1VJTlQzMiBpOworCWZvcihpID0gMDsgaSA8IG47ICsraSkgeworCQlPUEpfSU5UMzIgciA9IGMwW2ldOworCQlPUEpfSU5UMzIgZyA9IGMxW2ldOworCQlPUEpfSU5UMzIgYiA9IGMyW2ldOworCQlPUEpfSU5UMzIgeSA9ICBvcGpfaW50X2ZpeF9tdWwociwgMjQ0OSkgKyBvcGpfaW50X2ZpeF9tdWwoZywgNDgwOSkgKyBvcGpfaW50X2ZpeF9tdWwoYiwgOTM0KTsKKwkJT1BKX0lOVDMyIHUgPSAtb3BqX2ludF9maXhfbXVsKHIsIDEzODIpIC0gb3BqX2ludF9maXhfbXVsKGcsIDI3MTQpICsgb3BqX2ludF9maXhfbXVsKGIsIDQwOTYpOworCQlPUEpfSU5UMzIgdiA9ICBvcGpfaW50X2ZpeF9tdWwociwgNDA5NikgLSBvcGpfaW50X2ZpeF9tdWwoZywgMzQzMCkgLSBvcGpfaW50X2ZpeF9tdWwoYiwgNjY2KTsKKwkJYzBbaV0gPSB5OworCQljMVtpXSA9IHU7CisJCWMyW2ldID0gdjsKKwl9Cit9CisKKy8qIDxzdW1tYXJ5PiAqLworLyogSW52ZXJzZSBpcnJldmVyc2libGUgTUNULiAqLworLyogPC9zdW1tYXJ5PiAqLwordm9pZCBvcGpfbWN0X2RlY29kZV9yZWFsKAorCQlPUEpfRkxPQVQzMiogcmVzdHJpY3QgYzAsCisJCU9QSl9GTE9BVDMyKiByZXN0cmljdCBjMSwKKwkJT1BKX0ZMT0FUMzIqIHJlc3RyaWN0IGMyLAorCQlPUEpfVUlOVDMyIG4pCit7CisJT1BKX1VJTlQzMiBpOworI2lmZGVmIF9fU1NFX18KKwkvLyBNYW50aXMgQlVHSUQ6IDAwNTYyOTEuIFRoZSBhZGRyZXNzIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkLgorCS8vIFRlc3RGaWxlOiBmdXp6LXNpZ25hbF9zaWdzZWd2XzZlOWU3Zl81MDc2XzUyNjUucGRmCisJaWYgKChPUEpfVUlOVDMyKWMwICUgMTYgPT0gMCAmJiAoT1BKX1VJTlQzMiljMSAlIDE2ID09IDAgJiYgKE9QSl9VSU5UMzIpYzIgJSAxNiA9PSAwKXsKKwkJX19tMTI4IHZydiwgdmd1LCB2Z3YsIHZidTsKKwkJdnJ2ID0gX21tX3NldDFfcHMoMS40MDJmKTsKKwkJdmd1ID0gX21tX3NldDFfcHMoMC4zNDQxM2YpOworCQl2Z3YgPSBfbW1fc2V0MV9wcygwLjcxNDE0Zik7CisJCXZidSA9IF9tbV9zZXQxX3BzKDEuNzcyZik7CisJCWZvciAoaSA9IDA7IGkgPCAobiA+PiAzKTsgKytpKSB7CisJCQlfX20xMjggdnksIHZ1LCB2djsKKwkJCV9fbTEyOCB2ciwgdmcsIHZiOworCisJCQl2eSA9IF9tbV9sb2FkX3BzKGMwKTsKKwkJCXZ1ID0gX21tX2xvYWRfcHMoYzEpOworCQkJdnYgPSBfbW1fbG9hZF9wcyhjMik7CisJCQl2ciA9IF9tbV9hZGRfcHModnksIF9tbV9tdWxfcHModnYsIHZydikpOworCQkJdmcgPSBfbW1fc3ViX3BzKF9tbV9zdWJfcHModnksIF9tbV9tdWxfcHModnUsIHZndSkpLCBfbW1fbXVsX3BzKHZ2LCB2Z3YpKTsKKwkJCXZiID0gX21tX2FkZF9wcyh2eSwgX21tX211bF9wcyh2dSwgdmJ1KSk7CisJCQlfbW1fc3RvcmVfcHMoYzAsIHZyKTsKKwkJCV9tbV9zdG9yZV9wcyhjMSwgdmcpOworCQkJX21tX3N0b3JlX3BzKGMyLCB2Yik7CisJCQljMCArPSA0OworCQkJYzEgKz0gNDsKKwkJCWMyICs9IDQ7CisKKwkJCXZ5ID0gX21tX2xvYWRfcHMoYzApOworCQkJdnUgPSBfbW1fbG9hZF9wcyhjMSk7CisJCQl2diA9IF9tbV9sb2FkX3BzKGMyKTsKKwkJCXZyID0gX21tX2FkZF9wcyh2eSwgX21tX211bF9wcyh2diwgdnJ2KSk7CisJCQl2ZyA9IF9tbV9zdWJfcHMoX21tX3N1Yl9wcyh2eSwgX21tX211bF9wcyh2dSwgdmd1KSksIF9tbV9tdWxfcHModnYsIHZndikpOworCQkJdmIgPSBfbW1fYWRkX3BzKHZ5LCBfbW1fbXVsX3BzKHZ1LCB2YnUpKTsKKwkJCV9tbV9zdG9yZV9wcyhjMCwgdnIpOworCQkJX21tX3N0b3JlX3BzKGMxLCB2Zyk7CisJCQlfbW1fc3RvcmVfcHMoYzIsIHZiKTsKKwkJCWMwICs9IDQ7CisJCQljMSArPSA0OworCQkJYzIgKz0gNDsKKwkJfQorCQluICY9IDc7CisJfSBlbHNlIHsKKwkJZm9yKGkgPSAwOyBpIDwgbjsgKytpKSB7CisJCQlPUEpfRkxPQVQzMiB5ID0gYzBbaV07CisJCQlPUEpfRkxPQVQzMiB1ID0gYzFbaV07CisJCQlPUEpfRkxPQVQzMiB2ID0gYzJbaV07CisJCQlPUEpfRkxPQVQzMiByID0geSArICh2ICogMS40MDJmKTsKKwkJCU9QSl9GTE9BVDMyIGcgPSB5IC0gKHUgKiAwLjM0NDEzZikgLSAodiAqICgwLjcxNDE0ZikpOworCQkJT1BKX0ZMT0FUMzIgYiA9IHkgKyAodSAqIDEuNzcyZik7CisJCQljMFtpXSA9IHI7CisJCQljMVtpXSA9IGc7CisJCQljMltpXSA9IGI7CisJCX0KKwl9CisJCisjZW5kaWYKKwlmb3IoaSA9IDA7IGkgPCBuOyArK2kpIHsKKwkJT1BKX0ZMT0FUMzIgeSA9IGMwW2ldOworCQlPUEpfRkxPQVQzMiB1ID0gYzFbaV07CisJCU9QSl9GTE9BVDMyIHYgPSBjMltpXTsKKwkJT1BKX0ZMT0FUMzIgciA9IHkgKyAodiAqIDEuNDAyZik7CisJCU9QSl9GTE9BVDMyIGcgPSB5IC0gKHUgKiAwLjM0NDEzZikgLSAodiAqICgwLjcxNDE0ZikpOworCQlPUEpfRkxPQVQzMiBiID0geSArICh1ICogMS43NzJmKTsKKwkJYzBbaV0gPSByOworCQljMVtpXSA9IGc7CisJCWMyW2ldID0gYjsKKwl9Cit9CisKKy8qIDxzdW1tYXJ5PiAqLworLyogR2V0IG5vcm0gb2YgYmFzaXMgZnVuY3Rpb24gb2YgaXJyZXZlcnNpYmxlIE1DVC4gKi8KKy8qIDwvc3VtbWFyeT4gKi8KK09QSl9GTE9BVDY0IG9wal9tY3RfZ2V0bm9ybV9yZWFsKE9QSl9VSU5UMzIgY29tcG5vKSB7CisJcmV0dXJuIG9wal9tY3Rfbm9ybXNfcmVhbFtjb21wbm9dOworfQorCisKK09QSl9CT09MIG9wal9tY3RfZW5jb2RlX2N1c3RvbSgKKwkJCQkJICAgT1BKX0JZVEUgKiBwQ29kaW5nZGF0YSwKKwkJCQkJICAgT1BKX1VJTlQzMiBuLAorCQkJCQkgICBPUEpfQllURSAqKiBwRGF0YSwKKwkJCQkJICAgT1BKX1VJTlQzMiBwTmJDb21wLAorCQkJCQkgICBPUEpfVUlOVDMyIGlzU2lnbmVkKQoreworCU9QSl9GTE9BVDMyICogbE1jdCA9IChPUEpfRkxPQVQzMiAqKSBwQ29kaW5nZGF0YTsKKwlPUEpfVUlOVDMyIGk7CisJT1BKX1VJTlQzMiBqOworCU9QSl9VSU5UMzIgazsKKwlPUEpfVUlOVDMyIGxOYk1hdENvZWZmID0gcE5iQ29tcCAqIHBOYkNvbXA7CisJT1BKX0lOVDMyICogbEN1cnJlbnREYXRhID0gMDA7CisJT1BKX0lOVDMyICogbEN1cnJlbnRNYXRyaXggPSAwMDsKKwlPUEpfSU5UMzIgKiogbERhdGEgPSAoT1BKX0lOVDMyICoqKSBwRGF0YTsKKwlPUEpfVUlOVDMyIGxNdWx0aXBsaWNhdG9yID0gMSA8PCAxMzsKKwlPUEpfSU5UMzIgKiBsTWN0UHRyOworCisgICAgT1BKX0FSR19OT1RfVVNFRChpc1NpZ25lZCk7CisKKwlsQ3VycmVudERhdGEgPSAoT1BKX0lOVDMyICopIG9wal9tYWxsb2MoKHBOYkNvbXAgKyBsTmJNYXRDb2VmZikgKiBzaXplb2YoT1BKX0lOVDMyKSk7CisJaWYgKCEgbEN1cnJlbnREYXRhKSB7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJbEN1cnJlbnRNYXRyaXggPSBsQ3VycmVudERhdGEgKyBwTmJDb21wOworCisJZm9yIChpID0wO2k8bE5iTWF0Q29lZmY7KytpKSB7CisJCWxDdXJyZW50TWF0cml4W2ldID0gKE9QSl9JTlQzMikgKCoobE1jdCsrKSAqIChPUEpfRkxPQVQzMilsTXVsdGlwbGljYXRvcik7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG47ICsraSkgIHsKKwkJbE1jdFB0ciA9IGxDdXJyZW50TWF0cml4OworCQlmb3IgKGo9MDtqPHBOYkNvbXA7KytqKSB7CisJCQlsQ3VycmVudERhdGFbal0gPSAoKihsRGF0YVtqXSkpOworCQl9CisKKwkJZm9yIChqPTA7ajxwTmJDb21wOysraikgeworCQkJKihsRGF0YVtqXSkgPSAwOworCQkJZm9yIChrPTA7azxwTmJDb21wOysraykgeworCQkJCSoobERhdGFbal0pICs9IG9wal9pbnRfZml4X211bCgqbE1jdFB0ciwgbEN1cnJlbnREYXRhW2tdKTsKKwkJCQkrK2xNY3RQdHI7CisJCQl9CisKKwkJCSsrbERhdGFbal07CisJCX0KKwl9CisKKwlvcGpfZnJlZShsQ3VycmVudERhdGEpOworCisJcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfbWN0X2RlY29kZV9jdXN0b20oCisJCQkJCSAgIE9QSl9CWVRFICogcERlY29kaW5nRGF0YSwKKwkJCQkJICAgT1BKX1VJTlQzMiBuLAorCQkJCQkgICBPUEpfQllURSAqKiBwRGF0YSwKKwkJCQkJICAgT1BKX1VJTlQzMiBwTmJDb21wLAorCQkJCQkgICBPUEpfVUlOVDMyIGlzU2lnbmVkKQoreworCU9QSl9GTE9BVDMyICogbE1jdDsKKwlPUEpfVUlOVDMyIGk7CisJT1BKX1VJTlQzMiBqOworCU9QSl9VSU5UMzIgazsKKworCU9QSl9GTE9BVDMyICogbEN1cnJlbnREYXRhID0gMDA7CisJT1BKX0ZMT0FUMzIgKiBsQ3VycmVudFJlc3VsdCA9IDAwOworCU9QSl9GTE9BVDMyICoqIGxEYXRhID0gKE9QSl9GTE9BVDMyICoqKSBwRGF0YTsKKworICAgIE9QSl9BUkdfTk9UX1VTRUQoaXNTaWduZWQpOworCisJbEN1cnJlbnREYXRhID0gKE9QSl9GTE9BVDMyICopIG9wal9tYWxsb2MgKDIgKiBwTmJDb21wICogc2l6ZW9mKE9QSl9GTE9BVDMyKSk7CisJaWYgKCEgbEN1cnJlbnREYXRhKSB7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCWxDdXJyZW50UmVzdWx0ID0gbEN1cnJlbnREYXRhICsgcE5iQ29tcDsKKworCWZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKKwkJbE1jdCA9IChPUEpfRkxPQVQzMiAqKSBwRGVjb2RpbmdEYXRhOworCQlmb3IgKGo9MDtqPHBOYkNvbXA7KytqKSB7CisJCQlsQ3VycmVudERhdGFbal0gPSAoT1BKX0ZMT0FUMzIpICgqKGxEYXRhW2pdKSk7CisJCX0KKwkJZm9yIChqPTA7ajxwTmJDb21wOysraikgeworCQkJbEN1cnJlbnRSZXN1bHRbal0gPSAwOworCQkJZm9yCShrPTA7azxwTmJDb21wOysraykJeworCQkJCWxDdXJyZW50UmVzdWx0W2pdICs9ICoobE1jdCsrKSAqIGxDdXJyZW50RGF0YVtrXTsKKwkJCX0KKwkJCSoobERhdGFbal0rKykgPSAoT1BKX0ZMT0FUMzIpIChsQ3VycmVudFJlc3VsdFtqXSk7CisJCX0KKwl9CisJb3BqX2ZyZWUobEN1cnJlbnREYXRhKTsKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK3ZvaWQgb3BqX2NhbGN1bGF0ZV9ub3JtcygJT1BKX0ZMT0FUNjQgKiBwTm9ybXMsCisJCQkJCQkJT1BKX1VJTlQzMiBwTmJDb21wcywKKwkJCQkJCQlPUEpfRkxPQVQzMiAqIHBNYXRyaXgpCit7CisJT1BKX1VJTlQzMiBpLGosbEluZGV4OworCU9QSl9GTE9BVDMyIGxDdXJyZW50VmFsdWU7CisJT1BKX0ZMT0FUNjQgKiBsTm9ybXMgPSAoT1BKX0ZMT0FUNjQgKikgcE5vcm1zOworCU9QSl9GTE9BVDMyICogbE1hdHJpeCA9IChPUEpfRkxPQVQzMiAqKSBwTWF0cml4OworCisJZm9yCShpPTA7aTxwTmJDb21wczsrK2kpIHsKKwkJbE5vcm1zW2ldID0gMDsKKwkJbEluZGV4ID0gaTsKKworCQlmb3IJKGo9MDtqPHBOYkNvbXBzOysraikgeworCQkJbEN1cnJlbnRWYWx1ZSA9IGxNYXRyaXhbbEluZGV4XTsKKwkJCWxJbmRleCArPSBwTmJDb21wczsKKwkJCWxOb3Jtc1tpXSArPSBsQ3VycmVudFZhbHVlICogbEN1cnJlbnRWYWx1ZTsKKwkJfQorCQlsTm9ybXNbaV0gPSBzcXJ0KGxOb3Jtc1tpXSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL21jdC5oIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL21jdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMWY0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvbWN0LmgKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgVW5pdmVyc2l0ZSBjYXRob2xpcXVlIGRlIExvdXZhaW4gKFVDTCksIEJlbGdpdW0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBQcm9mZXNzb3IgQmVub2l0IE1hY3EKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDAzLCBEYXZpZCBKYW5zc2VucworICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMsIFlhbm5pY2sgVmVyc2NodWVyZW4KKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA3LCBGcmFuY29pcy1PbGl2aWVyIERldmF1eCAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDE0LCBBbnRvbmluIERlc2NhbXBlCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMS0yMDEyLCBDZW50cmUgTmF0aW9uYWwgZCdFdHVkZXMgU3BhdGlhbGVzIChDTkVTKSwgRlIgCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIENTIFN5c3RlbWVzIGQnSW5mb3JtYXRpb24sIEZyYW5jZQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIF9fTUNUX0gKKyNkZWZpbmUgX19NQ1RfSAorLyoqCitAZmlsZSBtY3QuaAorQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIGEgbXVsdGktY29tcG9uZW50IHRyYW5zZm9ybXMgKE1DVCkKKworVGhlIGZ1bmN0aW9ucyBpbiBNQ1QuQyBoYXZlIGZvciBnb2FsIHRvIHJlYWxpemUgcmV2ZXJzaWJsZSBhbmQgaXJyZXZlcnNpYmxlIG11bHRpY29tcG9uZW50Cit0cmFuc2Zvcm0uIFRoZSBmdW5jdGlvbnMgaW4gTUNULkMgYXJlIHVzZWQgYnkgc29tZSBmdW5jdGlvbiBpbiBUQ0QuQy4KKyovCisKKy8qKiBAZGVmZ3JvdXAgTUNUIE1DVCAtIEltcGxlbWVudGF0aW9uIG9mIGEgbXVsdGktY29tcG9uZW50IHRyYW5zZm9ybSAqLworLypAeyovCisKKy8qKiBAbmFtZSBFeHBvcnRlZCBmdW5jdGlvbnMgKi8KKy8qQHsqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qKgorQXBwbHkgYSByZXZlcnNpYmxlIG11bHRpLWNvbXBvbmVudCB0cmFuc2Zvcm0gdG8gYW4gaW1hZ2UKK0BwYXJhbSBjMCBTYW1wbGVzIGZvciByZWQgY29tcG9uZW50CitAcGFyYW0gYzEgU2FtcGxlcyBmb3IgZ3JlZW4gY29tcG9uZW50CitAcGFyYW0gYzIgU2FtcGxlcyBibHVlIGNvbXBvbmVudAorQHBhcmFtIG4gTnVtYmVyIG9mIHNhbXBsZXMgZm9yIGVhY2ggY29tcG9uZW50CisqLwordm9pZCBvcGpfbWN0X2VuY29kZShPUEpfSU5UMzIgKmMwLCBPUEpfSU5UMzIgKmMxLCBPUEpfSU5UMzIgKmMyLCBPUEpfVUlOVDMyIG4pOworLyoqCitBcHBseSBhIHJldmVyc2libGUgbXVsdGktY29tcG9uZW50IGludmVyc2UgdHJhbnNmb3JtIHRvIGFuIGltYWdlCitAcGFyYW0gYzAgU2FtcGxlcyBmb3IgbHVtaW5hbmNlIGNvbXBvbmVudAorQHBhcmFtIGMxIFNhbXBsZXMgZm9yIHJlZCBjaHJvbWluYW5jZSBjb21wb25lbnQKK0BwYXJhbSBjMiBTYW1wbGVzIGZvciBibHVlIGNocm9taW5hbmNlIGNvbXBvbmVudAorQHBhcmFtIG4gTnVtYmVyIG9mIHNhbXBsZXMgZm9yIGVhY2ggY29tcG9uZW50CisqLwordm9pZCBvcGpfbWN0X2RlY29kZShPUEpfSU5UMzIgKmMwLCBPUEpfSU5UMzIgKmMxLCBPUEpfSU5UMzIgKmMyLCBPUEpfVUlOVDMyIG4pOworLyoqCitHZXQgbm9ybSBvZiB0aGUgYmFzaXMgZnVuY3Rpb24gdXNlZCBmb3IgdGhlIHJldmVyc2libGUgbXVsdGktY29tcG9uZW50IHRyYW5zZm9ybQorQHBhcmFtIGNvbXBubyBOdW1iZXIgb2YgdGhlIGNvbXBvbmVudCAoMC0+WSwgMS0+VSwgMi0+VikKK0ByZXR1cm4gCisqLworT1BKX0ZMT0FUNjQgb3BqX21jdF9nZXRub3JtKE9QSl9VSU5UMzIgY29tcG5vKTsKKworLyoqCitBcHBseSBhbiBpcnJldmVyc2libGUgbXVsdGktY29tcG9uZW50IHRyYW5zZm9ybSB0byBhbiBpbWFnZQorQHBhcmFtIGMwIFNhbXBsZXMgZm9yIHJlZCBjb21wb25lbnQKK0BwYXJhbSBjMSBTYW1wbGVzIGZvciBncmVlbiBjb21wb25lbnQKK0BwYXJhbSBjMiBTYW1wbGVzIGJsdWUgY29tcG9uZW50CitAcGFyYW0gbiBOdW1iZXIgb2Ygc2FtcGxlcyBmb3IgZWFjaCBjb21wb25lbnQKKyovCit2b2lkIG9wal9tY3RfZW5jb2RlX3JlYWwoT1BKX0lOVDMyICpjMCwgT1BKX0lOVDMyICpjMSwgT1BKX0lOVDMyICpjMiwgT1BKX1VJTlQzMiBuKTsKKy8qKgorQXBwbHkgYW4gaXJyZXZlcnNpYmxlIG11bHRpLWNvbXBvbmVudCBpbnZlcnNlIHRyYW5zZm9ybSB0byBhbiBpbWFnZQorQHBhcmFtIGMwIFNhbXBsZXMgZm9yIGx1bWluYW5jZSBjb21wb25lbnQKK0BwYXJhbSBjMSBTYW1wbGVzIGZvciByZWQgY2hyb21pbmFuY2UgY29tcG9uZW50CitAcGFyYW0gYzIgU2FtcGxlcyBmb3IgYmx1ZSBjaHJvbWluYW5jZSBjb21wb25lbnQKK0BwYXJhbSBuIE51bWJlciBvZiBzYW1wbGVzIGZvciBlYWNoIGNvbXBvbmVudAorKi8KK3ZvaWQgb3BqX21jdF9kZWNvZGVfcmVhbChPUEpfRkxPQVQzMiogYzAsIE9QSl9GTE9BVDMyKiBjMSwgT1BKX0ZMT0FUMzIqIGMyLCBPUEpfVUlOVDMyIG4pOworLyoqCitHZXQgbm9ybSBvZiB0aGUgYmFzaXMgZnVuY3Rpb24gdXNlZCBmb3IgdGhlIGlycmV2ZXJzaWJsZSBtdWx0aS1jb21wb25lbnQgdHJhbnNmb3JtCitAcGFyYW0gY29tcG5vIE51bWJlciBvZiB0aGUgY29tcG9uZW50ICgwLT5ZLCAxLT5VLCAyLT5WKQorQHJldHVybiAKKyovCitPUEpfRkxPQVQ2NCBvcGpfbWN0X2dldG5vcm1fcmVhbChPUEpfVUlOVDMyIGNvbXBubyk7CisKKy8qKgorRklYTUUgRE9DCitAcGFyYW0gcF9jb2RpbmdfZGF0YSAgICBNQ1QgZGF0YQorQHBhcmFtIG4gICAgICAgICAgICAgICAgc2l6ZSBvZiBjb21wb25lbnRzCitAcGFyYW0gcF9kYXRhICAgICAgICAgICBjb21wb25lbnRzCitAcGFyYW0gcF9uYl9jb21wICAgICAgICBuYiBvZiBjb21wb25lbnRzIChpLmUuIHNpemUgb2YgcF9kYXRhKQorQHBhcmFtIGlzX3NpZ25lZCAgICAgICAgdGVsbHMgaWYgdGhlIGRhdGEgaXMgc2lnbmVkCitAcmV0dXJuIE9QSl9GQUxTRSBpZiBmdW5jdGlvbiBlbmNvdW50ZXIgYSBwcm9ibGVtLCBPUEpfVFJVRSBvdGhlcndpc2UKKyovCitPUEpfQk9PTCBvcGpfbWN0X2VuY29kZV9jdXN0b20oCisJCQkJCSAgIE9QSl9CWVRFICogcF9jb2RpbmdfZGF0YSwKKwkJCQkJICAgT1BKX1VJTlQzMiBuLAorCQkJCQkgICBPUEpfQllURSAqKiBwX2RhdGEsCisJCQkJCSAgIE9QSl9VSU5UMzIgcF9uYl9jb21wLAorCQkJCQkgICBPUEpfVUlOVDMyIGlzX3NpZ25lZCk7CisvKioKK0ZJWE1FIERPQworQHBhcmFtIHBEZWNvZGluZ0RhdGEgICAgTUNUIGRhdGEKK0BwYXJhbSBuICAgICAgICAgICAgICAgIHNpemUgb2YgY29tcG9uZW50cworQHBhcmFtIHBEYXRhICAgICAgICAgICAgY29tcG9uZW50cworQHBhcmFtIHBOYkNvbXAgICAgICAgICAgbmIgb2YgY29tcG9uZW50cyAoaS5lLiBzaXplIG9mIHBfZGF0YSkKK0BwYXJhbSBpc1NpZ25lZCAgICAgICAgIHRlbGxzIGlmIHRoZSBkYXRhIGlzIHNpZ25lZAorQHJldHVybiBPUEpfRkFMU0UgaWYgZnVuY3Rpb24gZW5jb3VudGVyIGEgcHJvYmxlbSwgT1BKX1RSVUUgb3RoZXJ3aXNlCisqLworT1BKX0JPT0wgb3BqX21jdF9kZWNvZGVfY3VzdG9tKAorCQkJCQkgICBPUEpfQllURSAqIHBEZWNvZGluZ0RhdGEsCisJCQkJCSAgIE9QSl9VSU5UMzIgbiwKKwkJCQkJICAgT1BKX0JZVEUgKiogcERhdGEsCisJCQkJCSAgIE9QSl9VSU5UMzIgcE5iQ29tcCwKKwkJCQkJICAgT1BKX1VJTlQzMiBpc1NpZ25lZCk7CisvKioKK0ZJWE1FIERPQworQHBhcmFtIHBOb3JtcyAgICAgICAgICAgTUNUIGRhdGEKK0BwYXJhbSBwX25iX2NvbXBzICAgICAgIHNpemUgb2YgY29tcG9uZW50cworQHBhcmFtIHBNYXRyaXggICAgICAgICAgY29tcG9uZW50cworQHJldHVybiAKKyovCit2b2lkIG9wal9jYWxjdWxhdGVfbm9ybXMoICAgT1BKX0ZMT0FUNjQgKiBwTm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX25iX2NvbXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyICogcE1hdHJpeCk7CisvKioKK0ZJWE1FIERPQyAKKyovCitjb25zdCBPUEpfRkxPQVQ2NCAqIG9wal9tY3RfZ2V0X21jdF9ub3JtcyAodm9pZCk7CisvKioKK0ZJWE1FIERPQyAKKyovCitjb25zdCBPUEpfRkxPQVQ2NCAqIG9wal9tY3RfZ2V0X21jdF9ub3Jtc19yZWFsICh2b2lkKTsKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKkB9Ki8KKworLypAfSovCisKKyNlbmRpZiAvKiBfX01DVF9IICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvbXFjLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvbXFjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThmY2M0NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9tcWMuYwpAQCAtMCwwICsxLDYxMCBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQ29weXJpZ2h0IChjKSAyMDA4LCBKZXJvbWUgRmltZXMsIENvbW11bmljYXRpb25zICYgU3lzdGVtZXMgPGplcm9tZS5maW1lc0BjLXMuZnI+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJvcGpfaW5jbHVkZXMuaCIKKworLyoqIEBkZWZncm91cCBNUUMgTVFDIC0gSW1wbGVtZW50YXRpb24gb2YgYW4gTVEtQ29kZXIgKi8KKy8qQHsqLworCisvKiogQG5hbWUgTG9jYWwgc3RhdGljIGZ1bmN0aW9ucyAqLworLypAeyovCisKKy8qKgorT3V0cHV0IGEgYnl0ZSwgZG9pbmcgYml0LXN0dWZmaW5nIGlmIG5lY2Vzc2FyeS4KK0FmdGVyIGEgMHhmZiBieXRlLCB0aGUgbmV4dCBieXRlIG11c3QgYmUgc21hbGxlciB0aGFuIDB4OTAuCitAcGFyYW0gbXFjIE1RQyBoYW5kbGUKKyovCitzdGF0aWMgdm9pZCBvcGpfbXFjX2J5dGVvdXQob3BqX21xY190ICptcWMpOworLyoqCitSZW5vcm1hbGl6ZSBtcWMtPmEgYW5kIG1xYy0+YyB3aGlsZSBlbmNvZGluZywgc28gdGhhdCBtcWMtPmEgc3RheXMgYmV0d2VlbiAweDgwMDAgYW5kIDB4MTAwMDAKK0BwYXJhbSBtcWMgTVFDIGhhbmRsZQorKi8KK3N0YXRpYyB2b2lkIG9wal9tcWNfcmVub3JtZShvcGpfbXFjX3QgKm1xYyk7CisvKioKK0VuY29kZSB0aGUgbW9zdCBwcm9iYWJsZSBzeW1ib2wKK0BwYXJhbSBtcWMgTVFDIGhhbmRsZQorKi8KK3N0YXRpYyB2b2lkIG9wal9tcWNfY29kZW1wcyhvcGpfbXFjX3QgKm1xYyk7CisvKioKK0VuY29kZSB0aGUgbW9zdCBsZWFzdCBzeW1ib2wKK0BwYXJhbSBtcWMgTVFDIGhhbmRsZQorKi8KK3N0YXRpYyB2b2lkIG9wal9tcWNfY29kZWxwcyhvcGpfbXFjX3QgKm1xYyk7CisvKioKK0ZpbGwgbXFjLT5jIHdpdGggMSdzIGZvciBmbHVzaGluZworQHBhcmFtIG1xYyBNUUMgaGFuZGxlCisqLworc3RhdGljIHZvaWQgb3BqX21xY19zZXRiaXRzKG9wal9tcWNfdCAqbXFjKTsKKy8qKgorRklYTUUgRE9DCitAcGFyYW0gbXFjIE1RQyBoYW5kbGUKK0ByZXR1cm4gCisqLworc3RhdGljIElOTElORSBPUEpfSU5UMzIgb3BqX21xY19tcHNleGNoYW5nZShvcGpfbXFjX3QgKmNvbnN0IG1xYyk7CisvKioKK0ZJWE1FIERPQworQHBhcmFtIG1xYyBNUUMgaGFuZGxlCitAcmV0dXJuIAorKi8KK3N0YXRpYyBJTkxJTkUgT1BKX0lOVDMyIG9wal9tcWNfbHBzZXhjaGFuZ2Uob3BqX21xY190ICpjb25zdCBtcWMpOworLyoqCitJbnB1dCBhIGJ5dGUKK0BwYXJhbSBtcWMgTVFDIGhhbmRsZQorKi8KK3N0YXRpYyBJTkxJTkUgdm9pZCBvcGpfbXFjX2J5dGVpbihvcGpfbXFjX3QgKmNvbnN0IG1xYyk7CisvKioKK1Jlbm9ybWFsaXplIG1xYy0+YSBhbmQgbXFjLT5jIHdoaWxlIGRlY29kaW5nCitAcGFyYW0gbXFjIE1RQyBoYW5kbGUKKyovCitzdGF0aWMgSU5MSU5FIHZvaWQgb3BqX21xY19yZW5vcm1kKG9wal9tcWNfdCAqY29uc3QgbXFjKTsKKy8qQH0qLworCisvKkB9Ki8KKworLyogPHN1bW1hcnk+ICovCisvKiBUaGlzIGFycmF5IGRlZmluZXMgYWxsIHRoZSBwb3NzaWJsZSBzdGF0ZXMgZm9yIGEgY29udGV4dC4gKi8KKy8qIDwvc3VtbWFyeT4gKi8KK3N0YXRpYyBvcGpfbXFjX3N0YXRlX3QgbXFjX3N0YXRlc1s0NyAqIDJdID0geworCXsweDU2MDEsIDAsICZtcWNfc3RhdGVzWzJdLCAmbXFjX3N0YXRlc1szXX0sCisJezB4NTYwMSwgMSwgJm1xY19zdGF0ZXNbM10sICZtcWNfc3RhdGVzWzJdfSwKKwl7MHgzNDAxLCAwLCAmbXFjX3N0YXRlc1s0XSwgJm1xY19zdGF0ZXNbMTJdfSwKKwl7MHgzNDAxLCAxLCAmbXFjX3N0YXRlc1s1XSwgJm1xY19zdGF0ZXNbMTNdfSwKKwl7MHgxODAxLCAwLCAmbXFjX3N0YXRlc1s2XSwgJm1xY19zdGF0ZXNbMThdfSwKKwl7MHgxODAxLCAxLCAmbXFjX3N0YXRlc1s3XSwgJm1xY19zdGF0ZXNbMTldfSwKKwl7MHgwYWMxLCAwLCAmbXFjX3N0YXRlc1s4XSwgJm1xY19zdGF0ZXNbMjRdfSwKKwl7MHgwYWMxLCAxLCAmbXFjX3N0YXRlc1s5XSwgJm1xY19zdGF0ZXNbMjVdfSwKKwl7MHgwNTIxLCAwLCAmbXFjX3N0YXRlc1sxMF0sICZtcWNfc3RhdGVzWzU4XX0sCisJezB4MDUyMSwgMSwgJm1xY19zdGF0ZXNbMTFdLCAmbXFjX3N0YXRlc1s1OV19LAorCXsweDAyMjEsIDAsICZtcWNfc3RhdGVzWzc2XSwgJm1xY19zdGF0ZXNbNjZdfSwKKwl7MHgwMjIxLCAxLCAmbXFjX3N0YXRlc1s3N10sICZtcWNfc3RhdGVzWzY3XX0sCisJezB4NTYwMSwgMCwgJm1xY19zdGF0ZXNbMTRdLCAmbXFjX3N0YXRlc1sxM119LAorCXsweDU2MDEsIDEsICZtcWNfc3RhdGVzWzE1XSwgJm1xY19zdGF0ZXNbMTJdfSwKKwl7MHg1NDAxLCAwLCAmbXFjX3N0YXRlc1sxNl0sICZtcWNfc3RhdGVzWzI4XX0sCisJezB4NTQwMSwgMSwgJm1xY19zdGF0ZXNbMTddLCAmbXFjX3N0YXRlc1syOV19LAorCXsweDQ4MDEsIDAsICZtcWNfc3RhdGVzWzE4XSwgJm1xY19zdGF0ZXNbMjhdfSwKKwl7MHg0ODAxLCAxLCAmbXFjX3N0YXRlc1sxOV0sICZtcWNfc3RhdGVzWzI5XX0sCisJezB4MzgwMSwgMCwgJm1xY19zdGF0ZXNbMjBdLCAmbXFjX3N0YXRlc1syOF19LAorCXsweDM4MDEsIDEsICZtcWNfc3RhdGVzWzIxXSwgJm1xY19zdGF0ZXNbMjldfSwKKwl7MHgzMDAxLCAwLCAmbXFjX3N0YXRlc1syMl0sICZtcWNfc3RhdGVzWzM0XX0sCisJezB4MzAwMSwgMSwgJm1xY19zdGF0ZXNbMjNdLCAmbXFjX3N0YXRlc1szNV19LAorCXsweDI0MDEsIDAsICZtcWNfc3RhdGVzWzI0XSwgJm1xY19zdGF0ZXNbMzZdfSwKKwl7MHgyNDAxLCAxLCAmbXFjX3N0YXRlc1syNV0sICZtcWNfc3RhdGVzWzM3XX0sCisJezB4MWMwMSwgMCwgJm1xY19zdGF0ZXNbMjZdLCAmbXFjX3N0YXRlc1s0MF19LAorCXsweDFjMDEsIDEsICZtcWNfc3RhdGVzWzI3XSwgJm1xY19zdGF0ZXNbNDFdfSwKKwl7MHgxNjAxLCAwLCAmbXFjX3N0YXRlc1s1OF0sICZtcWNfc3RhdGVzWzQyXX0sCisJezB4MTYwMSwgMSwgJm1xY19zdGF0ZXNbNTldLCAmbXFjX3N0YXRlc1s0M119LAorCXsweDU2MDEsIDAsICZtcWNfc3RhdGVzWzMwXSwgJm1xY19zdGF0ZXNbMjldfSwKKwl7MHg1NjAxLCAxLCAmbXFjX3N0YXRlc1szMV0sICZtcWNfc3RhdGVzWzI4XX0sCisJezB4NTQwMSwgMCwgJm1xY19zdGF0ZXNbMzJdLCAmbXFjX3N0YXRlc1syOF19LAorCXsweDU0MDEsIDEsICZtcWNfc3RhdGVzWzMzXSwgJm1xY19zdGF0ZXNbMjldfSwKKwl7MHg1MTAxLCAwLCAmbXFjX3N0YXRlc1szNF0sICZtcWNfc3RhdGVzWzMwXX0sCisJezB4NTEwMSwgMSwgJm1xY19zdGF0ZXNbMzVdLCAmbXFjX3N0YXRlc1szMV19LAorCXsweDQ4MDEsIDAsICZtcWNfc3RhdGVzWzM2XSwgJm1xY19zdGF0ZXNbMzJdfSwKKwl7MHg0ODAxLCAxLCAmbXFjX3N0YXRlc1szN10sICZtcWNfc3RhdGVzWzMzXX0sCisJezB4MzgwMSwgMCwgJm1xY19zdGF0ZXNbMzhdLCAmbXFjX3N0YXRlc1szNF19LAorCXsweDM4MDEsIDEsICZtcWNfc3RhdGVzWzM5XSwgJm1xY19zdGF0ZXNbMzVdfSwKKwl7MHgzNDAxLCAwLCAmbXFjX3N0YXRlc1s0MF0sICZtcWNfc3RhdGVzWzM2XX0sCisJezB4MzQwMSwgMSwgJm1xY19zdGF0ZXNbNDFdLCAmbXFjX3N0YXRlc1szN119LAorCXsweDMwMDEsIDAsICZtcWNfc3RhdGVzWzQyXSwgJm1xY19zdGF0ZXNbMzhdfSwKKwl7MHgzMDAxLCAxLCAmbXFjX3N0YXRlc1s0M10sICZtcWNfc3RhdGVzWzM5XX0sCisJezB4MjgwMSwgMCwgJm1xY19zdGF0ZXNbNDRdLCAmbXFjX3N0YXRlc1szOF19LAorCXsweDI4MDEsIDEsICZtcWNfc3RhdGVzWzQ1XSwgJm1xY19zdGF0ZXNbMzldfSwKKwl7MHgyNDAxLCAwLCAmbXFjX3N0YXRlc1s0Nl0sICZtcWNfc3RhdGVzWzQwXX0sCisJezB4MjQwMSwgMSwgJm1xY19zdGF0ZXNbNDddLCAmbXFjX3N0YXRlc1s0MV19LAorCXsweDIyMDEsIDAsICZtcWNfc3RhdGVzWzQ4XSwgJm1xY19zdGF0ZXNbNDJdfSwKKwl7MHgyMjAxLCAxLCAmbXFjX3N0YXRlc1s0OV0sICZtcWNfc3RhdGVzWzQzXX0sCisJezB4MWMwMSwgMCwgJm1xY19zdGF0ZXNbNTBdLCAmbXFjX3N0YXRlc1s0NF19LAorCXsweDFjMDEsIDEsICZtcWNfc3RhdGVzWzUxXSwgJm1xY19zdGF0ZXNbNDVdfSwKKwl7MHgxODAxLCAwLCAmbXFjX3N0YXRlc1s1Ml0sICZtcWNfc3RhdGVzWzQ2XX0sCisJezB4MTgwMSwgMSwgJm1xY19zdGF0ZXNbNTNdLCAmbXFjX3N0YXRlc1s0N119LAorCXsweDE2MDEsIDAsICZtcWNfc3RhdGVzWzU0XSwgJm1xY19zdGF0ZXNbNDhdfSwKKwl7MHgxNjAxLCAxLCAmbXFjX3N0YXRlc1s1NV0sICZtcWNfc3RhdGVzWzQ5XX0sCisJezB4MTQwMSwgMCwgJm1xY19zdGF0ZXNbNTZdLCAmbXFjX3N0YXRlc1s1MF19LAorCXsweDE0MDEsIDEsICZtcWNfc3RhdGVzWzU3XSwgJm1xY19zdGF0ZXNbNTFdfSwKKwl7MHgxMjAxLCAwLCAmbXFjX3N0YXRlc1s1OF0sICZtcWNfc3RhdGVzWzUyXX0sCisJezB4MTIwMSwgMSwgJm1xY19zdGF0ZXNbNTldLCAmbXFjX3N0YXRlc1s1M119LAorCXsweDExMDEsIDAsICZtcWNfc3RhdGVzWzYwXSwgJm1xY19zdGF0ZXNbNTRdfSwKKwl7MHgxMTAxLCAxLCAmbXFjX3N0YXRlc1s2MV0sICZtcWNfc3RhdGVzWzU1XX0sCisJezB4MGFjMSwgMCwgJm1xY19zdGF0ZXNbNjJdLCAmbXFjX3N0YXRlc1s1Nl19LAorCXsweDBhYzEsIDEsICZtcWNfc3RhdGVzWzYzXSwgJm1xY19zdGF0ZXNbNTddfSwKKwl7MHgwOWMxLCAwLCAmbXFjX3N0YXRlc1s2NF0sICZtcWNfc3RhdGVzWzU4XX0sCisJezB4MDljMSwgMSwgJm1xY19zdGF0ZXNbNjVdLCAmbXFjX3N0YXRlc1s1OV19LAorCXsweDA4YTEsIDAsICZtcWNfc3RhdGVzWzY2XSwgJm1xY19zdGF0ZXNbNjBdfSwKKwl7MHgwOGExLCAxLCAmbXFjX3N0YXRlc1s2N10sICZtcWNfc3RhdGVzWzYxXX0sCisJezB4MDUyMSwgMCwgJm1xY19zdGF0ZXNbNjhdLCAmbXFjX3N0YXRlc1s2Ml19LAorCXsweDA1MjEsIDEsICZtcWNfc3RhdGVzWzY5XSwgJm1xY19zdGF0ZXNbNjNdfSwKKwl7MHgwNDQxLCAwLCAmbXFjX3N0YXRlc1s3MF0sICZtcWNfc3RhdGVzWzY0XX0sCisJezB4MDQ0MSwgMSwgJm1xY19zdGF0ZXNbNzFdLCAmbXFjX3N0YXRlc1s2NV19LAorCXsweDAyYTEsIDAsICZtcWNfc3RhdGVzWzcyXSwgJm1xY19zdGF0ZXNbNjZdfSwKKwl7MHgwMmExLCAxLCAmbXFjX3N0YXRlc1s3M10sICZtcWNfc3RhdGVzWzY3XX0sCisJezB4MDIyMSwgMCwgJm1xY19zdGF0ZXNbNzRdLCAmbXFjX3N0YXRlc1s2OF19LAorCXsweDAyMjEsIDEsICZtcWNfc3RhdGVzWzc1XSwgJm1xY19zdGF0ZXNbNjldfSwKKwl7MHgwMTQxLCAwLCAmbXFjX3N0YXRlc1s3Nl0sICZtcWNfc3RhdGVzWzcwXX0sCisJezB4MDE0MSwgMSwgJm1xY19zdGF0ZXNbNzddLCAmbXFjX3N0YXRlc1s3MV19LAorCXsweDAxMTEsIDAsICZtcWNfc3RhdGVzWzc4XSwgJm1xY19zdGF0ZXNbNzJdfSwKKwl7MHgwMTExLCAxLCAmbXFjX3N0YXRlc1s3OV0sICZtcWNfc3RhdGVzWzczXX0sCisJezB4MDA4NSwgMCwgJm1xY19zdGF0ZXNbODBdLCAmbXFjX3N0YXRlc1s3NF19LAorCXsweDAwODUsIDEsICZtcWNfc3RhdGVzWzgxXSwgJm1xY19zdGF0ZXNbNzVdfSwKKwl7MHgwMDQ5LCAwLCAmbXFjX3N0YXRlc1s4Ml0sICZtcWNfc3RhdGVzWzc2XX0sCisJezB4MDA0OSwgMSwgJm1xY19zdGF0ZXNbODNdLCAmbXFjX3N0YXRlc1s3N119LAorCXsweDAwMjUsIDAsICZtcWNfc3RhdGVzWzg0XSwgJm1xY19zdGF0ZXNbNzhdfSwKKwl7MHgwMDI1LCAxLCAmbXFjX3N0YXRlc1s4NV0sICZtcWNfc3RhdGVzWzc5XX0sCisJezB4MDAxNSwgMCwgJm1xY19zdGF0ZXNbODZdLCAmbXFjX3N0YXRlc1s4MF19LAorCXsweDAwMTUsIDEsICZtcWNfc3RhdGVzWzg3XSwgJm1xY19zdGF0ZXNbODFdfSwKKwl7MHgwMDA5LCAwLCAmbXFjX3N0YXRlc1s4OF0sICZtcWNfc3RhdGVzWzgyXX0sCisJezB4MDAwOSwgMSwgJm1xY19zdGF0ZXNbODldLCAmbXFjX3N0YXRlc1s4M119LAorCXsweDAwMDUsIDAsICZtcWNfc3RhdGVzWzkwXSwgJm1xY19zdGF0ZXNbODRdfSwKKwl7MHgwMDA1LCAxLCAmbXFjX3N0YXRlc1s5MV0sICZtcWNfc3RhdGVzWzg1XX0sCisJezB4MDAwMSwgMCwgJm1xY19zdGF0ZXNbOTBdLCAmbXFjX3N0YXRlc1s4Nl19LAorCXsweDAwMDEsIDEsICZtcWNfc3RhdGVzWzkxXSwgJm1xY19zdGF0ZXNbODddfSwKKwl7MHg1NjAxLCAwLCAmbXFjX3N0YXRlc1s5Ml0sICZtcWNfc3RhdGVzWzkyXX0sCisJezB4NTYwMSwgMSwgJm1xY19zdGF0ZXNbOTNdLCAmbXFjX3N0YXRlc1s5M119LAorfTsKKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBsb2NhbCBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKK3ZvaWQgb3BqX21xY19ieXRlb3V0KG9wal9tcWNfdCAqbXFjKSB7CisJaWYgKCptcWMtPmJwID09IDB4ZmYpIHsKKwkJbXFjLT5icCsrOworCQkqbXFjLT5icCA9IChPUEpfQllURSkobXFjLT5jID4+IDIwKTsKKwkJbXFjLT5jICY9IDB4ZmZmZmY7CisJCW1xYy0+Y3QgPSA3OworCX0gZWxzZSB7CisJCWlmICgobXFjLT5jICYgMHg4MDAwMDAwKSA9PSAwKSB7CS8qICgobXFjLT5jJjB4ODAwMDAwMCk9PTApIENIQU5HRSAqLworCQkJbXFjLT5icCsrOworCQkJKm1xYy0+YnAgPSAoT1BKX0JZVEUpKG1xYy0+YyA+PiAxOSk7CisJCQltcWMtPmMgJj0gMHg3ZmZmZjsKKwkJCW1xYy0+Y3QgPSA4OworCQl9IGVsc2UgeworCQkJKCptcWMtPmJwKSsrOworCQkJaWYgKCptcWMtPmJwID09IDB4ZmYpIHsKKwkJCQltcWMtPmMgJj0gMHg3ZmZmZmZmOworCQkJCW1xYy0+YnArKzsKKwkJCQkqbXFjLT5icCA9IChPUEpfQllURSkobXFjLT5jID4+IDIwKTsKKwkJCQltcWMtPmMgJj0gMHhmZmZmZjsKKwkJCQltcWMtPmN0ID0gNzsKKwkJCX0gZWxzZSB7CisJCQkJbXFjLT5icCsrOworCQkJCSptcWMtPmJwID0gKE9QSl9CWVRFKShtcWMtPmMgPj4gMTkpOworCQkJCW1xYy0+YyAmPSAweDdmZmZmOworCQkJCW1xYy0+Y3QgPSA4OworCQkJfQorCQl9CisJfQorfQorCit2b2lkIG9wal9tcWNfcmVub3JtZShvcGpfbXFjX3QgKm1xYykgeworCWRvIHsKKwkJbXFjLT5hIDw8PSAxOworCQltcWMtPmMgPDw9IDE7CisJCW1xYy0+Y3QtLTsKKwkJaWYgKG1xYy0+Y3QgPT0gMCkgeworCQkJb3BqX21xY19ieXRlb3V0KG1xYyk7CisJCX0KKwl9IHdoaWxlICgobXFjLT5hICYgMHg4MDAwKSA9PSAwKTsKK30KKwordm9pZCBvcGpfbXFjX2NvZGVtcHMob3BqX21xY190ICptcWMpIHsKKwltcWMtPmEgLT0gKCptcWMtPmN1cmN0eCktPnFldmFsOworCWlmICgobXFjLT5hICYgMHg4MDAwKSA9PSAwKSB7CisJCWlmIChtcWMtPmEgPCAoKm1xYy0+Y3VyY3R4KS0+cWV2YWwpIHsKKwkJCW1xYy0+YSA9ICgqbXFjLT5jdXJjdHgpLT5xZXZhbDsKKwkJfSBlbHNlIHsKKwkJCW1xYy0+YyArPSAoKm1xYy0+Y3VyY3R4KS0+cWV2YWw7CisJCX0KKwkJKm1xYy0+Y3VyY3R4ID0gKCptcWMtPmN1cmN0eCktPm5tcHM7CisJCW9wal9tcWNfcmVub3JtZShtcWMpOworCX0gZWxzZSB7CisJCW1xYy0+YyArPSAoKm1xYy0+Y3VyY3R4KS0+cWV2YWw7CisJfQorfQorCit2b2lkIG9wal9tcWNfY29kZWxwcyhvcGpfbXFjX3QgKm1xYykgeworCW1xYy0+YSAtPSAoKm1xYy0+Y3VyY3R4KS0+cWV2YWw7CisJaWYgKG1xYy0+YSA8ICgqbXFjLT5jdXJjdHgpLT5xZXZhbCkgeworCQltcWMtPmMgKz0gKCptcWMtPmN1cmN0eCktPnFldmFsOworCX0gZWxzZSB7CisJCW1xYy0+YSA9ICgqbXFjLT5jdXJjdHgpLT5xZXZhbDsKKwl9CisJKm1xYy0+Y3VyY3R4ID0gKCptcWMtPmN1cmN0eCktPm5scHM7CisJb3BqX21xY19yZW5vcm1lKG1xYyk7Cit9CisKK3ZvaWQgb3BqX21xY19zZXRiaXRzKG9wal9tcWNfdCAqbXFjKSB7CisJT1BKX1VJTlQzMiB0ZW1wYyA9IG1xYy0+YyArIG1xYy0+YTsKKwltcWMtPmMgfD0gMHhmZmZmOworCWlmIChtcWMtPmMgPj0gdGVtcGMpIHsKKwkJbXFjLT5jIC09IDB4ODAwMDsKKwl9Cit9CisKK3N0YXRpYyBJTkxJTkUgT1BKX0lOVDMyIG9wal9tcWNfbXBzZXhjaGFuZ2Uob3BqX21xY190ICpjb25zdCBtcWMpIHsKKwlPUEpfSU5UMzIgZDsKKwlpZiAobXFjLT5hIDwgKCptcWMtPmN1cmN0eCktPnFldmFsKSB7CisJCWQgPSAoT1BKX0lOVDMyKSgxIC0gKCptcWMtPmN1cmN0eCktPm1wcyk7CisJCSptcWMtPmN1cmN0eCA9ICgqbXFjLT5jdXJjdHgpLT5ubHBzOworCX0gZWxzZSB7CisJCWQgPSAoT1BKX0lOVDMyKSgqbXFjLT5jdXJjdHgpLT5tcHM7CisJCSptcWMtPmN1cmN0eCA9ICgqbXFjLT5jdXJjdHgpLT5ubXBzOworCX0KKwkKKwlyZXR1cm4gZDsKK30KKworc3RhdGljIElOTElORSBPUEpfSU5UMzIgb3BqX21xY19scHNleGNoYW5nZShvcGpfbXFjX3QgKmNvbnN0IG1xYykgeworCU9QSl9JTlQzMiBkOworCWlmIChtcWMtPmEgPCAoKm1xYy0+Y3VyY3R4KS0+cWV2YWwpIHsKKwkJbXFjLT5hID0gKCptcWMtPmN1cmN0eCktPnFldmFsOworCQlkID0gKE9QSl9JTlQzMikoKm1xYy0+Y3VyY3R4KS0+bXBzOworCQkqbXFjLT5jdXJjdHggPSAoKm1xYy0+Y3VyY3R4KS0+bm1wczsKKwl9IGVsc2UgeworCQltcWMtPmEgPSAoKm1xYy0+Y3VyY3R4KS0+cWV2YWw7CisJCWQgPSAoT1BKX0lOVDMyKSgxIC0gKCptcWMtPmN1cmN0eCktPm1wcyk7CisJCSptcWMtPmN1cmN0eCA9ICgqbXFjLT5jdXJjdHgpLT5ubHBzOworCX0KKwkKKwlyZXR1cm4gZDsKK30KKworI2lmZGVmIE1RQ19QRVJGX09QVAorc3RhdGljIElOTElORSB2b2lkIG9wal9tcWNfYnl0ZWluKG9wal9tcWNfdCAqY29uc3QgbXFjKSB7CisJdW5zaWduZWQgaW50IGkgPSAqKCh1bnNpZ25lZCBpbnQgKikgbXFjLT5icCk7CisJbXFjLT5jICs9IGkgJiAweGZmZmYwMDsKKwltcWMtPmN0ID0gaSAmIDB4MGY7CisJbXFjLT5icCArPSAoaSA+PiAyKSAmIDB4MDQ7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgb3BqX21xY19ieXRlaW4ob3BqX21xY190ICpjb25zdCBtcWMpIHsKKwlpZiAobXFjLT5icCAhPSBtcWMtPmVuZCkgeworCQlPUEpfVUlOVDMyIGM7CisJCWlmIChtcWMtPmJwICsgMSAhPSBtcWMtPmVuZCkgeworCQkJYyA9ICoobXFjLT5icCArIDEpOworCQl9IGVsc2UgeworCQkJYyA9IDB4ZmY7CisJCX0KKwkJaWYgKCptcWMtPmJwID09IDB4ZmYpIHsKKwkJCWlmIChjID4gMHg4ZikgeworCQkJCW1xYy0+YyArPSAweGZmMDA7CisJCQkJbXFjLT5jdCA9IDg7CisJCQl9IGVsc2UgeworCQkJCW1xYy0+YnArKzsKKwkJCQltcWMtPmMgKz0gYyA8PCA5OworCQkJCW1xYy0+Y3QgPSA3OworCQkJfQorCQl9IGVsc2UgeworCQkJbXFjLT5icCsrOworCQkJbXFjLT5jICs9IGMgPDwgODsKKwkJCW1xYy0+Y3QgPSA4OworCQl9CisJfSBlbHNlIHsKKwkJbXFjLT5jICs9IDB4ZmYwMDsKKwkJbXFjLT5jdCA9IDg7CisJfQorfQorI2VuZGlmCisKK3N0YXRpYyBJTkxJTkUgdm9pZCBvcGpfbXFjX3Jlbm9ybWQob3BqX21xY190ICpjb25zdCBtcWMpIHsKKwlkbyB7CisJCWlmIChtcWMtPmN0ID09IDApIHsKKwkJCW9wal9tcWNfYnl0ZWluKG1xYyk7CisJCX0KKwkJbXFjLT5hIDw8PSAxOworCQltcWMtPmMgPDw9IDE7CisJCW1xYy0+Y3QtLTsKKwl9IHdoaWxlIChtcWMtPmEgPCAweDgwMDApOworfQorCisvKiAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIE1RLUNvZGVyIGludGVyZmFjZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworb3BqX21xY190KiBvcGpfbXFjX2NyZWF0ZSh2b2lkKSB7CisJb3BqX21xY190ICptcWMgPSAob3BqX21xY190KilvcGpfbWFsbG9jKHNpemVvZihvcGpfbXFjX3QpKTsKKyNpZmRlZiBNUUNfUEVSRl9PUFQKKwltcWMtPmJ1ZmZlciA9IE5VTEw7CisjZW5kaWYKKwlyZXR1cm4gbXFjOworfQorCit2b2lkIG9wal9tcWNfZGVzdHJveShvcGpfbXFjX3QgKm1xYykgeworCWlmKG1xYykgeworI2lmZGVmIE1RQ19QRVJGX09QVAorCQlvcGpfZnJlZShtcWMtPmJ1ZmZlcik7CisjZW5kaWYKKwkJb3BqX2ZyZWUobXFjKTsKKwl9Cit9CisKK09QSl9VSU5UMzIgb3BqX21xY19udW1ieXRlcyhvcGpfbXFjX3QgKm1xYykgeworCWNvbnN0IHB0cmRpZmZfdCBkaWZmID0gbXFjLT5icCAtIG1xYy0+c3RhcnQ7CisjaWYgMAorICBhc3NlcnQoIGRpZmYgPD0gMHhmZmZmZmZmZiAmJiBkaWZmID49IDAgKTsgLyogVUlOVDMyX01BWCAqLworI2VuZGlmCisJcmV0dXJuIChPUEpfVUlOVDMyKWRpZmY7Cit9CisKK3ZvaWQgb3BqX21xY19pbml0X2VuYyhvcGpfbXFjX3QgKm1xYywgT1BKX0JZVEUgKmJwKSB7CisgICAgLyogVE9ETyBNU0Q6IG5lZWQgdG8gdGFrZSBhIGxvb2sgdG8gdGhlIHYyIHZlcnNpb24gKi8KKwlvcGpfbXFjX3NldGN1cmN0eChtcWMsIDApOworCW1xYy0+YSA9IDB4ODAwMDsKKwltcWMtPmMgPSAwOworCW1xYy0+YnAgPSBicCAtIDE7CisJbXFjLT5jdCA9IDEyOworCWlmICgqbXFjLT5icCA9PSAweGZmKSB7CisJCW1xYy0+Y3QgPSAxMzsKKwl9CisJbXFjLT5zdGFydCA9IGJwOworfQorCit2b2lkIG9wal9tcWNfZW5jb2RlKG9wal9tcWNfdCAqbXFjLCBPUEpfVUlOVDMyIGQpIHsKKwlpZiAoKCptcWMtPmN1cmN0eCktPm1wcyA9PSBkKSB7CisJCW9wal9tcWNfY29kZW1wcyhtcWMpOworCX0gZWxzZSB7CisJCW9wal9tcWNfY29kZWxwcyhtcWMpOworCX0KK30KKwordm9pZCBvcGpfbXFjX2ZsdXNoKG9wal9tcWNfdCAqbXFjKSB7CisJb3BqX21xY19zZXRiaXRzKG1xYyk7CisJbXFjLT5jIDw8PSBtcWMtPmN0OworCW9wal9tcWNfYnl0ZW91dChtcWMpOworCW1xYy0+YyA8PD0gbXFjLT5jdDsKKwlvcGpfbXFjX2J5dGVvdXQobXFjKTsKKwkKKwlpZiAoKm1xYy0+YnAgIT0gMHhmZikgeworCQltcWMtPmJwKys7CisJfQorfQorCit2b2lkIG9wal9tcWNfYnlwYXNzX2luaXRfZW5jKG9wal9tcWNfdCAqbXFjKSB7CisJbXFjLT5jID0gMDsKKwltcWMtPmN0ID0gODsKKwkvKmlmICgqbXFjLT5icCA9PSAweGZmKSB7CisJbXFjLT5jdCA9IDc7CisgICAgIH0gKi8KK30KKwordm9pZCBvcGpfbXFjX2J5cGFzc19lbmMob3BqX21xY190ICptcWMsIE9QSl9VSU5UMzIgZCkgeworCW1xYy0+Y3QtLTsKKwltcWMtPmMgPSBtcWMtPmMgKyAoZCA8PCBtcWMtPmN0KTsKKwlpZiAobXFjLT5jdCA9PSAwKSB7CisJCW1xYy0+YnArKzsKKwkJKm1xYy0+YnAgPSAoT1BKX0JZVEUpbXFjLT5jOworCQltcWMtPmN0ID0gODsKKwkJaWYgKCptcWMtPmJwID09IDB4ZmYpIHsKKwkJCW1xYy0+Y3QgPSA3OworCQl9CisJCW1xYy0+YyA9IDA7CisJfQorfQorCitPUEpfVUlOVDMyIG9wal9tcWNfYnlwYXNzX2ZsdXNoX2VuYyhvcGpfbXFjX3QgKm1xYykgeworCU9QSl9CWVRFIGJpdF9wYWRkaW5nOworCQorCWJpdF9wYWRkaW5nID0gMDsKKwkKKwlpZiAobXFjLT5jdCAhPSAwKSB7CisJCXdoaWxlIChtcWMtPmN0ID4gMCkgeworCQkJbXFjLT5jdC0tOworCQkJbXFjLT5jICs9IChPUEpfVUlOVDMyKShiaXRfcGFkZGluZyA8PCBtcWMtPmN0KTsKKwkJCWJpdF9wYWRkaW5nID0gKGJpdF9wYWRkaW5nICsgMSkgJiAweDAxOworCQl9CisJCW1xYy0+YnArKzsKKwkJKm1xYy0+YnAgPSAoT1BKX0JZVEUpbXFjLT5jOworCQltcWMtPmN0ID0gODsKKwkJbXFjLT5jID0gMDsKKwl9CisJCisJcmV0dXJuIDE7Cit9CisKK3ZvaWQgb3BqX21xY19yZXNldF9lbmMob3BqX21xY190ICptcWMpIHsKKwlvcGpfbXFjX3Jlc2V0c3RhdGVzKG1xYyk7CisJb3BqX21xY19zZXRzdGF0ZShtcWMsIFQxX0NUWE5PX1VOSSwgMCwgNDYpOworCW9wal9tcWNfc2V0c3RhdGUobXFjLCBUMV9DVFhOT19BR0csIDAsIDMpOworCW9wal9tcWNfc2V0c3RhdGUobXFjLCBUMV9DVFhOT19aQywgMCwgNCk7Cit9CisKK09QSl9VSU5UMzIgb3BqX21xY19yZXN0YXJ0X2VuYyhvcGpfbXFjX3QgKm1xYykgeworCU9QSl9VSU5UMzIgY29ycmVjdGlvbiA9IDE7CisJCisJLyogPGZsdXNoIHBhcnQ+ICovCisJT1BKX0lOVDMyIG4gPSAoT1BKX0lOVDMyKSgyNyAtIDE1IC0gbXFjLT5jdCk7CisJbXFjLT5jIDw8PSBtcWMtPmN0OworCXdoaWxlIChuID4gMCkgeworCQlvcGpfbXFjX2J5dGVvdXQobXFjKTsKKwkJbiAtPSAoT1BKX0lOVDMyKW1xYy0+Y3Q7CisJCW1xYy0+YyA8PD0gbXFjLT5jdDsKKwl9CisJb3BqX21xY19ieXRlb3V0KG1xYyk7CisJCisJcmV0dXJuIGNvcnJlY3Rpb247Cit9CisKK3ZvaWQgb3BqX21xY19yZXN0YXJ0X2luaXRfZW5jKG9wal9tcWNfdCAqbXFjKSB7CisJLyogPFJlLWluaXQgcGFydD4gKi8KKwlvcGpfbXFjX3NldGN1cmN0eChtcWMsIDApOworCW1xYy0+YSA9IDB4ODAwMDsKKwltcWMtPmMgPSAwOworCW1xYy0+Y3QgPSAxMjsKKwltcWMtPmJwLS07CisJaWYgKCptcWMtPmJwID09IDB4ZmYpIHsKKwkJbXFjLT5jdCA9IDEzOworCX0KK30KKwordm9pZCBvcGpfbXFjX2VydGVybV9lbmMob3BqX21xY190ICptcWMpIHsKKwlPUEpfSU5UMzIgayA9IChPUEpfSU5UMzIpKDExIC0gbXFjLT5jdCArIDEpOworCQorCXdoaWxlIChrID4gMCkgeworCQltcWMtPmMgPDw9IG1xYy0+Y3Q7CisJCW1xYy0+Y3QgPSAwOworCQlvcGpfbXFjX2J5dGVvdXQobXFjKTsKKwkJayAtPSAoT1BKX0lOVDMyKW1xYy0+Y3Q7CisJfQorCQorCWlmICgqbXFjLT5icCAhPSAweGZmKSB7CisJCW9wal9tcWNfYnl0ZW91dChtcWMpOworCX0KK30KKwordm9pZCBvcGpfbXFjX3NlZ21hcmtfZW5jKG9wal9tcWNfdCAqbXFjKSB7CisJT1BKX1VJTlQzMiBpOworCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgMTgpOworCQorCWZvciAoaSA9IDE7IGkgPCA1OyBpKyspIHsKKwkJb3BqX21xY19lbmNvZGUobXFjLCBpICUgMik7CisJfQorfQorCitPUEpfQk9PTCBvcGpfbXFjX2luaXRfZGVjKG9wal9tcWNfdCAqbXFjLCBPUEpfQllURSAqYnAsIE9QSl9VSU5UMzIgbGVuKSB7CisJb3BqX21xY19zZXRjdXJjdHgobXFjLCAwKTsKKwltcWMtPnN0YXJ0ID0gYnA7CisJbXFjLT5lbmQgPSBicCArIGxlbjsKKwltcWMtPmJwID0gYnA7CisJaWYgKGxlbj09MCkgbXFjLT5jID0gMHhmZiA8PCAxNjsKKwllbHNlIG1xYy0+YyA9IChPUEpfVUlOVDMyKSgqbXFjLT5icCA8PCAxNik7CisKKyNpZmRlZiBNUUNfUEVSRl9PUFQgLyogVE9ET19NU0Q6IGNoZWNrIHRoaXMgb3B0aW9uIGFuZCBwdXQgaW4gZXhwZXJpbWVudGFsICovCisJeworICAgICAgICBPUEpfVUlOVDMyIGM7CisJCU9QSl9VSU5UMzIgKmlwOworCQlPUEpfQllURSAqZW5kID0gbXFjLT5lbmQgLSAxOworICAgICAgICB2b2lkKiBuZXdfYnVmZmVyID0gb3BqX3JlYWxsb2MobXFjLT5idWZmZXIsIChsZW4gKyAxKSAqIHNpemVvZihPUEpfVUlOVDMyKSk7CisgICAgICAgIGlmICghIG5ld19idWZmZXIpIHsKKyAgICAgICAgICAgIG9wal9mcmVlKG1xYy0+YnVmZmVyKTsKKyAgICAgICAgICAgIG1xYy0+YnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgbXFjLT5idWZmZXIgPSBuZXdfYnVmZmVyOworCQkKKyAgICAgICAgaXAgPSAoT1BKX1VJTlQzMiAqKSBtcWMtPmJ1ZmZlcjsKKworCQl3aGlsZSAoYnAgPCBlbmQpIHsKKwkJCWMgPSAqKGJwICsgMSk7CisJCQlpZiAoKmJwID09IDB4ZmYpIHsKKwkJCQlpZiAoYyA+IDB4OGYpIHsKKwkJCQkJYnJlYWs7CisJCQkJfSBlbHNlIHsKKwkJCQkJKmlwID0gMHgwMDAwMDAxNyB8IChjIDw8IDkpOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJKmlwID0gMHgwMDAwMDAxOCB8IChjIDw8IDgpOworCQkJfQorCQkJYnArKzsKKwkJCWlwKys7CisJCX0KKworCQkvKiBIYW5kbGUgbGFzdCBieXRlIG9mIGRhdGEgKi8KKwkJYyA9IDB4ZmY7CisJCWlmICgqYnAgPT0gMHhmZikgeworCQkJKmlwID0gMHgwMDAwZmYxODsKKwkJfSBlbHNlIHsKKwkJCWJwKys7CisJCQkqaXAgPSAweDAwMDAwMDE4IHwgKGMgPDwgOCk7CisJCX0KKwkJaXArKzsKKworCQkqaXAgPSAweDAwMDBmZjA4OworCQltcWMtPmJwID0gbXFjLT5idWZmZXI7CisJfQorI2VuZGlmCisJb3BqX21xY19ieXRlaW4obXFjKTsKKwltcWMtPmMgPDw9IDc7CisJbXFjLT5jdCAtPSA3OworCW1xYy0+YSA9IDB4ODAwMDsKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfSU5UMzIgb3BqX21xY19kZWNvZGUob3BqX21xY190ICpjb25zdCBtcWMpIHsKKwlPUEpfSU5UMzIgZDsKKwltcWMtPmEgLT0gKCptcWMtPmN1cmN0eCktPnFldmFsOworCWlmICgobXFjLT5jID4+IDE2KSA8ICgqbXFjLT5jdXJjdHgpLT5xZXZhbCkgeworCQlkID0gb3BqX21xY19scHNleGNoYW5nZShtcWMpOworCQlvcGpfbXFjX3Jlbm9ybWQobXFjKTsKKwl9IGVsc2UgeworCQltcWMtPmMgLT0gKCptcWMtPmN1cmN0eCktPnFldmFsIDw8IDE2OworCQlpZiAoKG1xYy0+YSAmIDB4ODAwMCkgPT0gMCkgeworCQkJZCA9IG9wal9tcWNfbXBzZXhjaGFuZ2UobXFjKTsKKwkJCW9wal9tcWNfcmVub3JtZChtcWMpOworCQl9IGVsc2UgeworCQkJZCA9IChPUEpfSU5UMzIpKCptcWMtPmN1cmN0eCktPm1wczsKKwkJfQorCX0KKworCXJldHVybiBkOworfQorCit2b2lkIG9wal9tcWNfcmVzZXRzdGF0ZXMob3BqX21xY190ICptcWMpIHsKKwlPUEpfVUlOVDMyIGk7CisJZm9yIChpID0gMDsgaSA8IE1RQ19OVU1DVFhTOyBpKyspIHsKKwkJbXFjLT5jdHhzW2ldID0gbXFjX3N0YXRlczsKKwl9Cit9CisKK3ZvaWQgb3BqX21xY19zZXRzdGF0ZShvcGpfbXFjX3QgKm1xYywgT1BKX1VJTlQzMiBjdHhubywgT1BKX1VJTlQzMiBtc2IsIE9QSl9JTlQzMiBwcm9iKSB7CisJbXFjLT5jdHhzW2N0eG5vXSA9ICZtcWNfc3RhdGVzW21zYiArIChPUEpfVUlOVDMyKShwcm9iIDw8IDEpXTsKK30KKworCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvbXFjLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvbXFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjlhMmQ0NgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9tcWMuaApAQCAtMCwwICsxLDIwNyBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQ29weXJpZ2h0IChjKSAyMDA4LCBKZXJvbWUgRmltZXMsIENvbW11bmljYXRpb25zICYgU3lzdGVtZXMgPGplcm9tZS5maW1lc0BjLXMuZnI+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgX19NUUNfSAorI2RlZmluZSBfX01RQ19ICisvKioKK0BmaWxlIG1xYy5oCitAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgYW4gTVEtQ29kZXIgKE1RQykKKworVGhlIGZ1bmN0aW9ucyBpbiBNUUMuQyBoYXZlIGZvciBnb2FsIHRvIHJlYWxpemUgdGhlIE1RLWNvZGVyIG9wZXJhdGlvbnMuIFRoZSBmdW5jdGlvbnMKK2luIE1RQy5DIGFyZSB1c2VkIGJ5IHNvbWUgZnVuY3Rpb24gaW4gVDEuQy4KKyovCisKKy8qKiBAZGVmZ3JvdXAgTVFDIE1RQyAtIEltcGxlbWVudGF0aW9uIG9mIGFuIE1RLUNvZGVyICovCisvKkB7Ki8KKworLyoqCitUaGlzIHN0cnVjdCBkZWZpbmVzIHRoZSBzdGF0ZSBvZiBhIGNvbnRleHQuCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX21xY19zdGF0ZSB7CisJLyoqIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgTGVhc3QgUHJvYmFibGUgU3ltYm9sICgwLjc1LT4weDgwMDAsIDEuNS0+MHhmZmZmKSAqLworCU9QSl9VSU5UMzIgcWV2YWw7CisJLyoqIHRoZSBNb3N0IFByb2JhYmxlIFN5bWJvbCAoMCBvciAxKSAqLworCU9QSl9VSU5UMzIgbXBzOworCS8qKiBuZXh0IHN0YXRlIGlmIHRoZSBuZXh0IGVuY29kZWQgc3ltYm9sIGlzIHRoZSBNUFMgKi8KKwlzdHJ1Y3Qgb3BqX21xY19zdGF0ZSAqbm1wczsKKwkvKiogbmV4dCBzdGF0ZSBpZiB0aGUgbmV4dCBlbmNvZGVkIHN5bWJvbCBpcyB0aGUgTFBTICovCisJc3RydWN0IG9wal9tcWNfc3RhdGUgKm5scHM7Cit9IG9wal9tcWNfc3RhdGVfdDsKKworI2RlZmluZSBNUUNfTlVNQ1RYUyAxOQorCisvKioKK01RIGNvZGVyCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX21xYyB7CisJT1BKX1VJTlQzMiBjOworCU9QSl9VSU5UMzIgYTsKKwlPUEpfVUlOVDMyIGN0OworCU9QSl9CWVRFICpicDsKKwlPUEpfQllURSAqc3RhcnQ7CisJT1BKX0JZVEUgKmVuZDsKKwlvcGpfbXFjX3N0YXRlX3QgKmN0eHNbTVFDX05VTUNUWFNdOworCW9wal9tcWNfc3RhdGVfdCAqKmN1cmN0eDsKKyNpZmRlZiBNUUNfUEVSRl9PUFQKKwl1bnNpZ25lZCBjaGFyICpidWZmZXI7CisjZW5kaWYKK30gb3BqX21xY190OworCisvKiogQG5hbWUgRXhwb3J0ZWQgZnVuY3Rpb25zICovCisvKkB7Ki8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKioKK0NyZWF0ZSBhIG5ldyBNUUMgaGFuZGxlIAorQHJldHVybiBSZXR1cm5zIGEgbmV3IE1RQyBoYW5kbGUgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBOVUxMIG90aGVyd2lzZQorKi8KK29wal9tcWNfdCogb3BqX21xY19jcmVhdGUodm9pZCk7CisvKioKK0Rlc3Ryb3kgYSBwcmV2aW91c2x5IGNyZWF0ZWQgTVFDIGhhbmRsZQorQHBhcmFtIG1xYyBNUUMgaGFuZGxlIHRvIGRlc3Ryb3kKKyovCit2b2lkIG9wal9tcWNfZGVzdHJveShvcGpfbXFjX3QgKm1xYyk7CisvKioKK1JldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4vcmVhZCBzaW5jZSBpbml0aWFsaXNhdGlvbgorQHBhcmFtIG1xYyBNUUMgaGFuZGxlCitAcmV0dXJuIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBhbHJlYWR5IGVuY29kZWQKKyovCitPUEpfVUlOVDMyIG9wal9tcWNfbnVtYnl0ZXMob3BqX21xY190ICptcWMpOworLyoqCitSZXNldCB0aGUgc3RhdGVzIG9mIGFsbCB0aGUgY29udGV4dCBvZiB0aGUgY29kZXIvZGVjb2RlciAKKyhlYWNoIGNvbnRleHQgaXMgc2V0IHRvIGEgc3RhdGUgd2hlcmUgMCBhbmQgMSBhcmUgbW9yZSBvciBsZXNzIGVxdWlwcm9iYWJsZSkKK0BwYXJhbSBtcWMgTVFDIGhhbmRsZQorKi8KK3ZvaWQgb3BqX21xY19yZXNldHN0YXRlcyhvcGpfbXFjX3QgKm1xYyk7CisvKioKK1NldCB0aGUgc3RhdGUgb2YgYSBwYXJ0aWN1bGFyIGNvbnRleHQKK0BwYXJhbSBtcWMgTVFDIGhhbmRsZQorQHBhcmFtIGN0eG5vIE51bWJlciB0aGF0IGlkZW50aWZpZXMgdGhlIGNvbnRleHQKK0BwYXJhbSBtc2IgVGhlIE1TQiBvZiB0aGUgbmV3IHN0YXRlIG9mIHRoZSBjb250ZXh0CitAcGFyYW0gcHJvYiBOdW1iZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgc3ltYm9scyBmb3IgdGhlIG5ldyBzdGF0ZSBvZiB0aGUgY29udGV4dAorKi8KK3ZvaWQgb3BqX21xY19zZXRzdGF0ZShvcGpfbXFjX3QgKm1xYywgT1BKX1VJTlQzMiBjdHhubywgT1BKX1VJTlQzMiBtc2IsIE9QSl9JTlQzMiBwcm9iKTsKKy8qKgorSW5pdGlhbGl6ZSB0aGUgZW5jb2RlcgorQHBhcmFtIG1xYyBNUUMgaGFuZGxlCitAcGFyYW0gYnAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciB3aGVyZSB0aGUgYnl0ZXMgd2lsbCBiZSB3cml0dGVuCisqLwordm9pZCBvcGpfbXFjX2luaXRfZW5jKG9wal9tcWNfdCAqbXFjLCBPUEpfQllURSAqYnApOworLyoqCitTZXQgdGhlIGN1cnJlbnQgY29udGV4dCB1c2VkIGZvciBjb2RpbmcvZGVjb2RpbmcKK0BwYXJhbSBtcWMgTVFDIGhhbmRsZQorQHBhcmFtIGN0eG5vIE51bWJlciB0aGF0IGlkZW50aWZpZXMgdGhlIGNvbnRleHQKKyovCisjZGVmaW5lIG9wal9tcWNfc2V0Y3VyY3R4KG1xYywgY3R4bm8pCShtcWMpLT5jdXJjdHggPSAmKG1xYyktPmN0eHNbKE9QSl9VSU5UMzIpKGN0eG5vKV0KKy8qKgorRW5jb2RlIGEgc3ltYm9sIHVzaW5nIHRoZSBNUS1jb2RlcgorQHBhcmFtIG1xYyBNUUMgaGFuZGxlCitAcGFyYW0gZCBUaGUgc3ltYm9sIHRvIGJlIGVuY29kZWQgKDAgb3IgMSkKKyovCit2b2lkIG9wal9tcWNfZW5jb2RlKG9wal9tcWNfdCAqbXFjLCBPUEpfVUlOVDMyIGQpOworLyoqCitGbHVzaCB0aGUgZW5jb2Rlciwgc28gdGhhdCBhbGwgcmVtYWluaW5nIGRhdGEgaXMgd3JpdHRlbgorQHBhcmFtIG1xYyBNUUMgaGFuZGxlCisqLwordm9pZCBvcGpfbXFjX2ZsdXNoKG9wal9tcWNfdCAqbXFjKTsKKy8qKgorQllQQVNTIG1vZGUgc3dpdGNoLCBpbml0aWFsaXphdGlvbiBvcGVyYXRpb24uIAorSlBFRyAyMDAwIHAgNTA1LiAKKzxoMj5Ob3QgZnVsbHkgaW1wbGVtZW50ZWQgYW5kIHRlc3RlZCAhITwvaDI+CitAcGFyYW0gbXFjIE1RQyBoYW5kbGUKKyovCit2b2lkIG9wal9tcWNfYnlwYXNzX2luaXRfZW5jKG9wal9tcWNfdCAqbXFjKTsKKy8qKgorQllQQVNTIG1vZGUgc3dpdGNoLCBjb2Rpbmcgb3BlcmF0aW9uLiAKK0pQRUcgMjAwMCBwIDUwNS4gCis8aDI+Tm90IGZ1bGx5IGltcGxlbWVudGVkIGFuZCB0ZXN0ZWQgISE8L2gyPgorQHBhcmFtIG1xYyBNUUMgaGFuZGxlCitAcGFyYW0gZCBUaGUgc3ltYm9sIHRvIGJlIGVuY29kZWQgKDAgb3IgMSkKKyovCit2b2lkIG9wal9tcWNfYnlwYXNzX2VuYyhvcGpfbXFjX3QgKm1xYywgT1BKX1VJTlQzMiBkKTsKKy8qKgorQllQQVNTIG1vZGUgc3dpdGNoLCBmbHVzaCBvcGVyYXRpb24KKzxoMj5Ob3QgZnVsbHkgaW1wbGVtZW50ZWQgYW5kIHRlc3RlZCAhITwvaDI+CitAcGFyYW0gbXFjIE1RQyBoYW5kbGUKK0ByZXR1cm4gUmV0dXJucyAxIChhbHdheXMpCisqLworT1BKX1VJTlQzMiBvcGpfbXFjX2J5cGFzc19mbHVzaF9lbmMob3BqX21xY190ICptcWMpOworLyoqCitSRVNFVCBtb2RlIHN3aXRjaAorQHBhcmFtIG1xYyBNUUMgaGFuZGxlCisqLwordm9pZCBvcGpfbXFjX3Jlc2V0X2VuYyhvcGpfbXFjX3QgKm1xYyk7CisvKioKK1JFU1RBUlQgbW9kZSBzd2l0Y2ggKFRFUk1BTEwpCitAcGFyYW0gbXFjIE1RQyBoYW5kbGUKK0ByZXR1cm4gUmV0dXJucyAxIChhbHdheXMpCisqLworT1BKX1VJTlQzMiBvcGpfbXFjX3Jlc3RhcnRfZW5jKG9wal9tcWNfdCAqbXFjKTsKKy8qKgorUkVTVEFSVCBtb2RlIHN3aXRjaCAoVEVSTUFMTCkgcmVpbml0aWFsaXNhdGlvbgorQHBhcmFtIG1xYyBNUUMgaGFuZGxlCisqLwordm9pZCBvcGpfbXFjX3Jlc3RhcnRfaW5pdF9lbmMob3BqX21xY190ICptcWMpOworLyoqCitFUlRFUk0gbW9kZSBzd2l0Y2ggKFBURVJNKQorQHBhcmFtIG1xYyBNUUMgaGFuZGxlCisqLwordm9pZCBvcGpfbXFjX2VydGVybV9lbmMob3BqX21xY190ICptcWMpOworLyoqCitTRUdNQVJLIG1vZGUgc3dpdGNoIChTRUdTWU0pCitAcGFyYW0gbXFjIE1RQyBoYW5kbGUKKyovCit2b2lkIG9wal9tcWNfc2VnbWFya19lbmMob3BqX21xY190ICptcWMpOworLyoqCitJbml0aWFsaXplIHRoZSBkZWNvZGVyCitAcGFyYW0gbXFjIE1RQyBoYW5kbGUKK0BwYXJhbSBicCBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIGZyb20gd2hpY2ggdGhlIGJ5dGVzIHdpbGwgYmUgcmVhZAorQHBhcmFtIGxlbiBMZW5ndGggb2YgdGhlIGlucHV0IGJ1ZmZlcgorKi8KK09QSl9CT09MIG9wal9tcWNfaW5pdF9kZWMob3BqX21xY190ICptcWMsIE9QSl9CWVRFICpicCwgT1BKX1VJTlQzMiBsZW4pOworLyoqCitEZWNvZGUgYSBzeW1ib2wKK0BwYXJhbSBtcWMgTVFDIGhhbmRsZQorQHJldHVybiBSZXR1cm5zIHRoZSBkZWNvZGVkIHN5bWJvbCAoMCBvciAxKQorKi8KK09QSl9JTlQzMiBvcGpfbXFjX2RlY29kZShvcGpfbXFjX3QgKiBjb25zdCBtcWMpOworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qQH0qLworCisvKkB9Ki8KKworI2VuZGlmIC8qIF9fTVFDX0ggKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGVuanBlZy5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wZW5qcGVnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODliYjc1YQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGVuanBlZy5jCkBAIC0wLDAgKzEsOTYwIEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEtMjAxMiwgQ2VudHJlIE5hdGlvbmFsIGQnRXR1ZGVzIFNwYXRpYWxlcyAoQ05FUyksIEZSIAorICogQ29weXJpZ2h0IChjKSAyMDEyLCBDUyBTeXN0ZW1lcyBkJ0luZm9ybWF0aW9uLCBGcmFuY2UKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmZGVmIF9XSU4zMgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZiAvKiBfV0lOMzIgKi8KKworI2luY2x1ZGUgIm9wal9pbmNsdWRlcy5oIgorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIEZ1bmN0aW9ucyB0byBzZXQgdGhlIG1lc3NhZ2UgaGFuZGxlcnMgKi8KKworT1BKX0JPT0wgT1BKX0NBTExDT05WIG9wal9zZXRfaW5mb19oYW5kbGVyKAlvcGpfY29kZWNfdCAqIHBfY29kZWMsIAorCQkJCQkJCQkJCQlvcGpfbXNnX2NhbGxiYWNrIHBfY2FsbGJhY2ssCisJCQkJCQkJCQkJCXZvaWQgKiBwX3VzZXJfZGF0YSkKK3sKKwlvcGpfY29kZWNfcHJpdmF0ZV90ICogbF9jb2RlYyA9IChvcGpfY29kZWNfcHJpdmF0ZV90ICopIHBfY29kZWM7CisJaWYoISBsX2NvZGVjKXsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisJCisJbF9jb2RlYy0+bV9ldmVudF9tZ3IuaW5mb19oYW5kbGVyID0gcF9jYWxsYmFjazsKKwlsX2NvZGVjLT5tX2V2ZW50X21nci5tX2luZm9fZGF0YSA9IHBfdXNlcl9kYXRhOworCQorCXJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgT1BKX0NBTExDT05WIG9wal9zZXRfd2FybmluZ19oYW5kbGVyKAlvcGpfY29kZWNfdCAqIHBfY29kZWMsIAorCQkJCQkJCQkJCQkJb3BqX21zZ19jYWxsYmFjayBwX2NhbGxiYWNrLAorCQkJCQkJCQkJCQkJdm9pZCAqIHBfdXNlcl9kYXRhKQoreworCW9wal9jb2RlY19wcml2YXRlX3QgKiBsX2NvZGVjID0gKG9wal9jb2RlY19wcml2YXRlX3QgKikgcF9jb2RlYzsKKwlpZiAoISBsX2NvZGVjKSB7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCQorCWxfY29kZWMtPm1fZXZlbnRfbWdyLndhcm5pbmdfaGFuZGxlciA9IHBfY2FsbGJhY2s7CisJbF9jb2RlYy0+bV9ldmVudF9tZ3IubV93YXJuaW5nX2RhdGEgPSBwX3VzZXJfZGF0YTsKKwkKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfc2V0X2Vycm9yX2hhbmRsZXIob3BqX2NvZGVjX3QgKiBwX2NvZGVjLCAKKwkJCQkJCQkJCQkJb3BqX21zZ19jYWxsYmFjayBwX2NhbGxiYWNrLAorCQkJCQkJCQkJCQl2b2lkICogcF91c2VyX2RhdGEpCit7CisJb3BqX2NvZGVjX3ByaXZhdGVfdCAqIGxfY29kZWMgPSAob3BqX2NvZGVjX3ByaXZhdGVfdCAqKSBwX2NvZGVjOworCWlmICghIGxfY29kZWMpIHsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisJCisJbF9jb2RlYy0+bV9ldmVudF9tZ3IuZXJyb3JfaGFuZGxlciA9IHBfY2FsbGJhY2s7CisJbF9jb2RlYy0+bV9ldmVudF9tZ3IubV9lcnJvcl9kYXRhID0gcF91c2VyX2RhdGE7CisJCisJcmV0dXJuIE9QSl9UUlVFOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyBPUEpfU0laRV9UIG9wal9yZWFkX2Zyb21fZmlsZSAodm9pZCAqIHBfYnVmZmVyLCBPUEpfU0laRV9UIHBfbmJfYnl0ZXMsIEZJTEUgKiBwX2ZpbGUpCit7CisJT1BKX1NJWkVfVCBsX25iX3JlYWQgPSBmcmVhZChwX2J1ZmZlciwxLHBfbmJfYnl0ZXMscF9maWxlKTsKKwlyZXR1cm4gbF9uYl9yZWFkID8gbF9uYl9yZWFkIDogKE9QSl9TSVpFX1QpLTE7Cit9CisKK3N0YXRpYyBPUEpfVUlOVDY0IG9wal9nZXRfZGF0YV9sZW5ndGhfZnJvbV9maWxlIChGSUxFICogcF9maWxlKQoreworCU9QSl9PRkZfVCBmaWxlX2xlbmd0aCA9IDA7CisKKwlPUEpfRlNFRUsocF9maWxlLCAwLCBTRUVLX0VORCk7CisJZmlsZV9sZW5ndGggPSAoT1BKX09GRl9UKU9QSl9GVEVMTChwX2ZpbGUpOworCU9QSl9GU0VFSyhwX2ZpbGUsIDAsIFNFRUtfU0VUKTsKKworCXJldHVybiAoT1BKX1VJTlQ2NClmaWxlX2xlbmd0aDsKK30KKworc3RhdGljIE9QSl9TSVpFX1Qgb3BqX3dyaXRlX2Zyb21fZmlsZSAodm9pZCAqIHBfYnVmZmVyLCBPUEpfU0laRV9UIHBfbmJfYnl0ZXMsIEZJTEUgKiBwX2ZpbGUpCit7CisJcmV0dXJuIGZ3cml0ZShwX2J1ZmZlciwxLHBfbmJfYnl0ZXMscF9maWxlKTsKK30KKworc3RhdGljIE9QSl9PRkZfVCBvcGpfc2tpcF9mcm9tX2ZpbGUgKE9QSl9PRkZfVCBwX25iX2J5dGVzLCBGSUxFICogcF91c2VyX2RhdGEpCit7CisJaWYgKE9QSl9GU0VFSyhwX3VzZXJfZGF0YSxwX25iX2J5dGVzLFNFRUtfQ1VSKSkgeworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0dXJuIHBfbmJfYnl0ZXM7Cit9CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfc2Vla19mcm9tX2ZpbGUgKE9QSl9PRkZfVCBwX25iX2J5dGVzLCBGSUxFICogcF91c2VyX2RhdGEpCit7CisJaWYgKE9QSl9GU0VFSyhwX3VzZXJfZGF0YSxwX25iX2J5dGVzLFNFRUtfU0VUKSkgeworCQlyZXR1cm4gT1BKX0ZBTFNFOworCX0KKworCXJldHVybiBPUEpfVFJVRTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworI2lmZGVmIF9XSU4zMgorI2lmbmRlZiBPUEpfU1RBVElDCitCT09MIEFQSUVOVFJZCitEbGxNYWluKEhBTkRMRSBoTW9kdWxlLCBEV09SRCB1bF9yZWFzb25fZm9yX2NhbGwsIExQVk9JRCBscFJlc2VydmVkKSB7CisKKwlPUEpfQVJHX05PVF9VU0VEKGxwUmVzZXJ2ZWQpOworCU9QSl9BUkdfTk9UX1VTRUQoaE1vZHVsZSk7CisKKwlzd2l0Y2ggKHVsX3JlYXNvbl9mb3JfY2FsbCkgeworCQljYXNlIERMTF9QUk9DRVNTX0FUVEFDSCA6CisJCQlicmVhazsKKwkJY2FzZSBETExfUFJPQ0VTU19ERVRBQ0ggOgorCQkJYnJlYWs7CisJCWNhc2UgRExMX1RIUkVBRF9BVFRBQ0ggOgorCQljYXNlIERMTF9USFJFQURfREVUQUNIIDoKKwkJCWJyZWFrOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorI2VuZGlmIC8qIE9QSl9TVEFUSUMgKi8KKyNlbmRpZiAvKiBfV0lOMzIgKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitjb25zdCBjaGFyKiBPUEpfQ0FMTENPTlYgb3BqX3ZlcnNpb24odm9pZCkgeworICAgIHJldHVybiBPUEpfUEFDS0FHRV9WRVJTSU9OOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBERUNPTVBSRVNTSU9OIEZVTkNUSU9OUyovCisKK29wal9jb2RlY190KiBPUEpfQ0FMTENPTlYgb3BqX2NyZWF0ZV9kZWNvbXByZXNzKE9QSl9DT0RFQ19GT1JNQVQgcF9mb3JtYXQpCit7CisJb3BqX2NvZGVjX3ByaXZhdGVfdCAqbF9jb2RlYyA9IDAwOworCisJbF9jb2RlYyA9IChvcGpfY29kZWNfcHJpdmF0ZV90Kikgb3BqX2NhbGxvYygxLCBzaXplb2Yob3BqX2NvZGVjX3ByaXZhdGVfdCkpOworCWlmICghbF9jb2RlYyl7CisJCXJldHVybiAwMDsKKwl9CisJbWVtc2V0KGxfY29kZWMsIDAsIHNpemVvZihvcGpfY29kZWNfcHJpdmF0ZV90KSk7CisKKwlsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IgPSAxOworCisJc3dpdGNoIChwX2Zvcm1hdCkgeworCQljYXNlIE9QSl9DT0RFQ19KMks6CisJCQlsX2NvZGVjLT5vcGpfZHVtcF9jb2RlYyA9ICh2b2lkICgqKSAodm9pZCosIE9QSl9JTlQzMiwgRklMRSopKSBqMmtfZHVtcDsKKworCQkJbF9jb2RlYy0+b3BqX2dldF9jb2RlY19pbmZvID0gKG9wal9jb2Rlc3RyZWFtX2luZm9fdjJfdCogKCopICh2b2lkKikgKSBqMmtfZ2V0X2NzdHJfaW5mbzsKKworCQkJbF9jb2RlYy0+b3BqX2dldF9jb2RlY19pbmRleCA9IChvcGpfY29kZXN0cmVhbV9pbmRleF90KiAoKikgKHZvaWQqKSApIGoya19nZXRfY3N0cl9pbmRleDsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfZGVjb2RlID0KKwkJCQkJKE9QSl9CT09MICgqKSAoCXZvaWQgKiwKKwkJCQkJCQkJCXN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiwKKwkJCQkJCQkJCW9wal9pbWFnZV90Kiwgc3RydWN0IG9wal9ldmVudF9tZ3IgKiApKSBvcGpfajJrX2RlY29kZTsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfZW5kX2RlY29tcHJlc3MgPQorCQkJCQkoT1BKX0JPT0wgKCopICgJdm9pZCAqLAorCQkJCQkJCQkJc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqLAorCQkJCQkJCQkJc3RydWN0IG9wal9ldmVudF9tZ3IgKikpIG9wal9qMmtfZW5kX2RlY29tcHJlc3M7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2RlY29tcHJlc3Npb24ub3BqX3JlYWRfaGVhZGVyID0KKwkJCQkJKE9QSl9CT09MICgqKSAoCXN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiwKKwkJCQkJCQkJCXZvaWQgKiwKKwkJCQkJCQkJCW9wal9pbWFnZV90ICoqLAorCQkJCQkJCQkJc3RydWN0IG9wal9ldmVudF9tZ3IgKiApKSBvcGpfajJrX3JlYWRfaGVhZGVyOworCisJCQlsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9kZWNvbXByZXNzaW9uLm9wal9kZXN0cm95ID0KKwkJCQkJKHZvaWQgKCopICh2b2lkICopKW9wal9qMmtfZGVzdHJveTsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfc2V0dXBfZGVjb2RlciA9CisJCQkJCSh2b2lkICgqKSAodm9pZCAqICwgb3BqX2RwYXJhbWV0ZXJzX3QgKiApKSBvcGpfajJrX3NldHVwX2RlY29kZXI7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2RlY29tcHJlc3Npb24ub3BqX3JlYWRfdGlsZV9oZWFkZXIgPQorCQkJCQkoT1BKX0JPT0wgKCopICgJdm9pZCAqLAorCQkJCQkJCQkJT1BKX1VJTlQzMiosCisJCQkJCQkJCQlPUEpfVUlOVDMyKiwKKwkJCQkJCQkJCU9QSl9JTlQzMiosIE9QSl9JTlQzMiosCisJCQkJCQkJCQlPUEpfSU5UMzIqLCBPUEpfSU5UMzIqLAorCQkJCQkJCQkJT1BKX1VJTlQzMiosCisJCQkJCQkJCQlPUEpfQk9PTCosCisJCQkJCQkJCQlzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICosCisJCQkJCQkJCQlzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqICkpIG9wal9qMmtfcmVhZF90aWxlX2hlYWRlcjsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfZGVjb2RlX3RpbGVfZGF0YSA9CisJCQkJCShPUEpfQk9PTCAoKikgKCB2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqKSkgb3BqX2oya19kZWNvZGVfdGlsZTsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfc2V0X2RlY29kZV9hcmVhID0KKwkJCQkJKE9QSl9CT09MICgqKSAoIHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfdCosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyLCBPUEpfSU5UMzIsIE9QSl9JTlQzMiwgT1BKX0lOVDMyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICopKSBvcGpfajJrX3NldF9kZWNvZGVfYXJlYTsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfZ2V0X2RlY29kZWRfdGlsZSA9IAorICAgICAgICAgICAgICAgICAgICAoT1BKX0JPT0wgKCopICggdm9pZCAqcF9jb2RlYywKKwkJCQkJCQkJICAgIG9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX2NpbywKKwkJCQkJCQkJICAgIG9wal9pbWFnZV90ICpwX2ltYWdlLAorCQkJCQkJCQkgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIsCisJCQkJCQkJCSAgICBPUEpfVUlOVDMyIHRpbGVfaW5kZXgpKSBvcGpfajJrX2dldF90aWxlOworCisJCQlsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9kZWNvbXByZXNzaW9uLm9wal9zZXRfZGVjb2RlZF9yZXNvbHV0aW9uX2ZhY3RvciA9IAorICAgICAgICAgICAgICAgICAgICAoT1BKX0JPT0wgKCopICggdm9pZCAqIHBfY29kZWMsCisJCQkJCQkJCQlPUEpfVUlOVDMyIHJlc19mYWN0b3IsCisJCQkJCQkJCQlzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlcikpIG9wal9qMmtfc2V0X2RlY29kZWRfcmVzb2x1dGlvbl9mYWN0b3I7CisKKwkJCWxfY29kZWMtPm1fY29kZWMgPSBvcGpfajJrX2NyZWF0ZV9kZWNvbXByZXNzKCk7CisKKwkJCWlmICghIGxfY29kZWMtPm1fY29kZWMpIHsKKwkJCQlvcGpfZnJlZShsX2NvZGVjKTsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJYnJlYWs7CisKKwkJY2FzZSBPUEpfQ09ERUNfSlAyOgorCQkJLyogZ2V0IGEgSlAyIGRlY29kZXIgaGFuZGxlICovCisJCQlsX2NvZGVjLT5vcGpfZHVtcF9jb2RlYyA9ICh2b2lkICgqKSAodm9pZCosIE9QSl9JTlQzMiwgRklMRSopKSBqcDJfZHVtcDsKKworCQkJbF9jb2RlYy0+b3BqX2dldF9jb2RlY19pbmZvID0gKG9wal9jb2Rlc3RyZWFtX2luZm9fdjJfdCogKCopICh2b2lkKikgKSBqcDJfZ2V0X2NzdHJfaW5mbzsKKworCQkJbF9jb2RlYy0+b3BqX2dldF9jb2RlY19pbmRleCA9IChvcGpfY29kZXN0cmVhbV9pbmRleF90KiAoKikgKHZvaWQqKSApIGpwMl9nZXRfY3N0cl9pbmRleDsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfZGVjb2RlID0KKwkJCQkJKE9QSl9CT09MICgqKSAoCXZvaWQgKiwKKwkJCQkJCQkJCXN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiwKKwkJCQkJCQkJCW9wal9pbWFnZV90KiwKKwkJCQkJCQkJCXN0cnVjdCBvcGpfZXZlbnRfbWdyICogKSkgb3BqX2pwMl9kZWNvZGU7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2RlY29tcHJlc3Npb24ub3BqX2VuZF9kZWNvbXByZXNzID0gIAorICAgICAgICAgICAgICAgICAgICAoT1BKX0JPT0wgKCopICggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKikpIG9wal9qcDJfZW5kX2RlY29tcHJlc3M7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2RlY29tcHJlc3Npb24ub3BqX3JlYWRfaGVhZGVyID0gIAorICAgICAgICAgICAgICAgICAgICAoT1BKX0JPT0wgKCopICggc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqLAorCQkJCQkgICAgICAgICAgICAgICAgdm9pZCAqLAorCQkJCQkgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QgKiosCisJCQkJCSAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqICkpIG9wal9qcDJfcmVhZF9oZWFkZXI7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2RlY29tcHJlc3Npb24ub3BqX3JlYWRfdGlsZV9oZWFkZXIgPSAKKyAgICAgICAgICAgICAgICAgICAgKE9QSl9CT09MICgqKSAoIHZvaWQgKiwKKwkJCQkJICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIqLAorCQkJCQkgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiosCisJCQkJCSAgICAgICAgICAgICAgICBPUEpfSU5UMzIqLAorCQkJCQkgICAgICAgICAgICAgICAgT1BKX0lOVDMyKiwKKwkJCQkJICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqICwKKwkJCQkJICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqICwKKwkJCQkJICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiAsCisJCQkJCSAgICAgICAgICAgICAgICBPUEpfQk9PTCAqLAorCQkJCQkgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqLAorCQkJCQkgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiApKSBvcGpfanAyX3JlYWRfdGlsZV9oZWFkZXI7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2RlY29tcHJlc3Npb24ub3BqX2RlY29kZV90aWxlX2RhdGEgPSAKKyAgICAgICAgICAgICAgICAgICAgKE9QSl9CT09MICgqKSAoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIsT1BKX0JZVEUqLE9QSl9VSU5UMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqICkpIG9wal9qcDJfZGVjb2RlX3RpbGU7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2RlY29tcHJlc3Npb24ub3BqX2Rlc3Ryb3kgPSAodm9pZCAoKikgKHZvaWQgKikpb3BqX2pwMl9kZXN0cm95OworCisJCQlsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9kZWNvbXByZXNzaW9uLm9wal9zZXR1cF9kZWNvZGVyID0gCisgICAgICAgICAgICAgICAgICAgICh2b2lkICgqKSAodm9pZCAqICxvcGpfZHBhcmFtZXRlcnNfdCAqICkpIG9wal9qcDJfc2V0dXBfZGVjb2RlcjsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfc2V0X2RlY29kZV9hcmVhID0gCisgICAgICAgICAgICAgICAgICAgIChPUEpfQk9PTCAoKikgKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfdCosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyLE9QSl9JTlQzMixPUEpfSU5UMzIsT1BKX0lOVDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiApKSBvcGpfanAyX3NldF9kZWNvZGVfYXJlYTsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfZ2V0X2RlY29kZWRfdGlsZSA9IAorICAgICAgICAgICAgICAgICAgICAoT1BKX0JPT0wgKCopICggdm9pZCAqcF9jb2RlYywKKwkJCQkJCQkJCW9wal9zdHJlYW1fcHJpdmF0ZV90ICpwX2NpbywKKwkJCQkJCQkJCW9wal9pbWFnZV90ICpwX2ltYWdlLAorCQkJCQkJCQkJc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIsCisJCQkJCQkJCQlPUEpfVUlOVDMyIHRpbGVfaW5kZXgpKSBvcGpfanAyX2dldF90aWxlOworCisJCQlsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9kZWNvbXByZXNzaW9uLm9wal9zZXRfZGVjb2RlZF9yZXNvbHV0aW9uX2ZhY3RvciA9IAorICAgICAgICAgICAgICAgICAgICAoT1BKX0JPT0wgKCopICggdm9pZCAqIHBfY29kZWMsCisJCQkJCQkgICAgCQlPUEpfVUlOVDMyIHJlc19mYWN0b3IsCisJCQkJCQkJICAgIAlvcGpfZXZlbnRfbWdyX3QgKiBwX21hbmFnZXIpKSBvcGpfanAyX3NldF9kZWNvZGVkX3Jlc29sdXRpb25fZmFjdG9yOworCisJCQlsX2NvZGVjLT5tX2NvZGVjID0gb3BqX2pwMl9jcmVhdGUoT1BKX1RSVUUpOworCisJCQlpZiAoISBsX2NvZGVjLT5tX2NvZGVjKSB7CisJCQkJb3BqX2ZyZWUobF9jb2RlYyk7CisJCQkJcmV0dXJuIDAwOworCQkJfQorCisJCQlicmVhazsKKwkJY2FzZSBPUEpfQ09ERUNfVU5LTk9XTjoKKwkJY2FzZSBPUEpfQ09ERUNfSlBUOgorCQlkZWZhdWx0OgorCQkJb3BqX2ZyZWUobF9jb2RlYyk7CisJCQlyZXR1cm4gMDA7CisJfQorCisJb3BqX3NldF9kZWZhdWx0X2V2ZW50X2hhbmRsZXIoJihsX2NvZGVjLT5tX2V2ZW50X21ncikpOworCXJldHVybiAob3BqX2NvZGVjX3QqKSBsX2NvZGVjOworfQorCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfc2V0X2RlZmF1bHRfZGVjb2Rlcl9wYXJhbWV0ZXJzKG9wal9kcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzKSB7CisJaWYocGFyYW1ldGVycykgeworCQltZW1zZXQocGFyYW1ldGVycywgMCwgc2l6ZW9mKG9wal9kcGFyYW1ldGVyc190KSk7CisJCS8qIGRlZmF1bHQgZGVjb2RpbmcgcGFyYW1ldGVycyAqLworCQlwYXJhbWV0ZXJzLT5jcF9sYXllciA9IDA7CisJCXBhcmFtZXRlcnMtPmNwX3JlZHVjZSA9IDA7CisKKwkJcGFyYW1ldGVycy0+ZGVjb2RfZm9ybWF0ID0gLTE7CisJCXBhcmFtZXRlcnMtPmNvZF9mb3JtYXQgPSAtMTsKKwkJcGFyYW1ldGVycy0+ZmxhZ3MgPSAwOwkJCisvKiBVbmlQRz4+ICovCisjaWZkZWYgVVNFX0pQV0wKKwkJcGFyYW1ldGVycy0+anB3bF9jb3JyZWN0ID0gT1BKX0ZBTFNFOworCQlwYXJhbWV0ZXJzLT5qcHdsX2V4cF9jb21wcyA9IEpQV0xfRVhQRUNURURfQ09NUE9ORU5UUzsKKwkJcGFyYW1ldGVycy0+anB3bF9tYXhfdGlsZXMgPSBKUFdMX01BWElNVU1fVElMRVM7CisjZW5kaWYgLyogVVNFX0pQV0wgKi8KKy8qIDw8VW5pUEcgKi8KKwl9Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfc2V0dXBfZGVjb2RlcihvcGpfY29kZWNfdCAqcF9jb2RlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZHBhcmFtZXRlcnNfdCAqcGFyYW1ldGVycyAKKwkJCQkJCQkJCQkpCit7CisJaWYgKHBfY29kZWMgJiYgcGFyYW1ldGVycykgeyAKKwkJb3BqX2NvZGVjX3ByaXZhdGVfdCAqIGxfY29kZWMgPSAob3BqX2NvZGVjX3ByaXZhdGVfdCAqKSBwX2NvZGVjOworCisJCWlmICghIGxfY29kZWMtPmlzX2RlY29tcHJlc3NvcikgeworCQkJb3BqX2V2ZW50X21zZygmKGxfY29kZWMtPm1fZXZlbnRfbWdyKSwgRVZUX0VSUk9SLCAKKyAgICAgICAgICAgICAgICAiQ29kZWMgcHJvdmlkZWQgdG8gdGhlIG9wal9zZXR1cF9kZWNvZGVyIGZ1bmN0aW9uIGlzIG5vdCBhIGRlY29tcHJlc3NvciBoYW5kbGVyLlxuIik7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisKKwkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfc2V0dXBfZGVjb2RlcihsX2NvZGVjLT5tX2NvZGVjLAorCQkJCQkJCQkJCQkJCQkJCXBhcmFtZXRlcnMpOworCQlyZXR1cm4gT1BKX1RSVUU7CisJfQorCXJldHVybiBPUEpfRkFMU0U7Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfcmVhZF9oZWFkZXIgKAlvcGpfc3RyZWFtX3QgKnBfc3RyZWFtLAorCQkJCQkJCQkJCW9wal9jb2RlY190ICpwX2NvZGVjLAorCQkJCQkJCQkJCW9wal9pbWFnZV90ICoqcF9pbWFnZSApCit7CisJaWYgKHBfY29kZWMgJiYgcF9zdHJlYW0pIHsKKwkJb3BqX2NvZGVjX3ByaXZhdGVfdCogbF9jb2RlYyA9IChvcGpfY29kZWNfcHJpdmF0ZV90KikgcF9jb2RlYzsKKwkJb3BqX3N0cmVhbV9wcml2YXRlX3QqIGxfc3RyZWFtID0gKG9wal9zdHJlYW1fcHJpdmF0ZV90KikgcF9zdHJlYW07CisKKwkJaWYoISBsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IpIHsKKwkJCW9wal9ldmVudF9tc2coJihsX2NvZGVjLT5tX2V2ZW50X21nciksIEVWVF9FUlJPUiwgCisgICAgICAgICAgICAgICAgIkNvZGVjIHByb3ZpZGVkIHRvIHRoZSBvcGpfcmVhZF9oZWFkZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuXG4iKTsKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKworCQlyZXR1cm4gbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfcmVhZF9oZWFkZXIoCWxfc3RyZWFtLAorCQkJCQkJCQkJCQkJCQkJCQkJbF9jb2RlYy0+bV9jb2RlYywKKwkJCQkJCQkJCQkJCQkJCQkJCXBfaW1hZ2UsCisJCQkJCQkJCQkJCQkJCQkJCQkmKGxfY29kZWMtPm1fZXZlbnRfbWdyKSApOworCX0KKworCXJldHVybiBPUEpfRkFMU0U7Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZGVjb2RlKCAgIG9wal9jb2RlY190ICpwX2NvZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9pbWFnZV90KiBwX2ltYWdlKQoreworCWlmIChwX2NvZGVjICYmIHBfc3RyZWFtKSB7CisJCW9wal9jb2RlY19wcml2YXRlX3QgKiBsX2NvZGVjID0gKG9wal9jb2RlY19wcml2YXRlX3QgKikgcF9jb2RlYzsKKwkJb3BqX3N0cmVhbV9wcml2YXRlX3QgKiBsX3N0cmVhbSA9IChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqKSBwX3N0cmVhbTsKKworCQlpZiAoISBsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IpIHsKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKworCQlyZXR1cm4gbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfZGVjb2RlKGxfY29kZWMtPm1fY29kZWMsCisJCQkJCQkJCQkJCQkJCQkJbF9zdHJlYW0sCisJCQkJCQkJCQkJCQkJCQkJcF9pbWFnZSwKKwkJCQkJCQkJCQkJCQkJCQkmKGxfY29kZWMtPm1fZXZlbnRfbWdyKSApOworCX0KKworCXJldHVybiBPUEpfRkFMU0U7Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfc2V0X2RlY29kZV9hcmVhKAlvcGpfY29kZWNfdCAqcF9jb2RlYywKKwkJCQkJCQkJCQkJb3BqX2ltYWdlX3QqIHBfaW1hZ2UsCisJCQkJCQkJCQkJCU9QSl9JTlQzMiBwX3N0YXJ0X3gsIE9QSl9JTlQzMiBwX3N0YXJ0X3ksCisJCQkJCQkJCQkJCU9QSl9JTlQzMiBwX2VuZF94LCBPUEpfSU5UMzIgcF9lbmRfeQorCQkJCQkJCQkJCQkpCit7CisJaWYgKHBfY29kZWMpIHsKKwkJb3BqX2NvZGVjX3ByaXZhdGVfdCAqIGxfY29kZWMgPSAob3BqX2NvZGVjX3ByaXZhdGVfdCAqKSBwX2NvZGVjOworCQkKKwkJaWYgKCEgbF9jb2RlYy0+aXNfZGVjb21wcmVzc29yKSB7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisKKwkJcmV0dXJuICBsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9kZWNvbXByZXNzaW9uLm9wal9zZXRfZGVjb2RlX2FyZWEoCWxfY29kZWMtPm1fY29kZWMsCisJCQkJCQkJCQkJCQkJCQkJCQkJcF9pbWFnZSwKKwkJCQkJCQkJCQkJCQkJCQkJCQlwX3N0YXJ0X3gsIHBfc3RhcnRfeSwKKwkJCQkJCQkJCQkJCQkJCQkJCQlwX2VuZF94LCBwX2VuZF95LAorCQkJCQkJCQkJCQkJCQkJCQkJCSYobF9jb2RlYy0+bV9ldmVudF9tZ3IpICk7CisJfQorCXJldHVybiBPUEpfRkFMU0U7Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfcmVhZF90aWxlX2hlYWRlcigJb3BqX2NvZGVjX3QgKnBfY29kZWMsCisJCQkJCQkJCQkJCW9wal9zdHJlYW1fdCAqIHBfc3RyZWFtLAorCQkJCQkJCQkJCQlPUEpfVUlOVDMyICogcF90aWxlX2luZGV4LAorCQkJCQkJCQkJCQlPUEpfVUlOVDMyICogcF9kYXRhX3NpemUsCisJCQkJCQkJCQkJCU9QSl9JTlQzMiAqIHBfdGlsZV94MCwgT1BKX0lOVDMyICogcF90aWxlX3kwLAorCQkJCQkJCQkJCQlPUEpfSU5UMzIgKiBwX3RpbGVfeDEsIE9QSl9JTlQzMiAqIHBfdGlsZV95MSwKKwkJCQkJCQkJCQkJT1BKX1VJTlQzMiAqIHBfbmJfY29tcHMsCisJCQkJCQkJCQkJCU9QSl9CT09MICogcF9zaG91bGRfZ29fb24pCit7CisJaWYgKHBfY29kZWMgJiYgcF9zdHJlYW0gJiYgcF9kYXRhX3NpemUgJiYgcF90aWxlX2luZGV4KSB7CisJCW9wal9jb2RlY19wcml2YXRlX3QgKiBsX2NvZGVjID0gKG9wal9jb2RlY19wcml2YXRlX3QgKikgcF9jb2RlYzsKKwkJb3BqX3N0cmVhbV9wcml2YXRlX3QgKiBsX3N0cmVhbSA9IChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqKSBwX3N0cmVhbTsKKworCQlpZiAoISBsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IpIHsKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKworCQlyZXR1cm4gbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfcmVhZF90aWxlX2hlYWRlcigJbF9jb2RlYy0+bV9jb2RlYywKKwkJCQkJCQkJCQkJCQkJCQkJCQlwX3RpbGVfaW5kZXgsCisJCQkJCQkJCQkJCQkJCQkJCQkJcF9kYXRhX3NpemUsCisJCQkJCQkJCQkJCQkJCQkJCQkJcF90aWxlX3gwLCBwX3RpbGVfeTAsCisJCQkJCQkJCQkJCQkJCQkJCQkJcF90aWxlX3gxLCBwX3RpbGVfeTEsCisJCQkJCQkJCQkJCQkJCQkJCQkJcF9uYl9jb21wcywKKwkJCQkJCQkJCQkJCQkJCQkJCQlwX3Nob3VsZF9nb19vbiwKKwkJCQkJCQkJCQkJCQkJCQkJCQlsX3N0cmVhbSwKKwkJCQkJCQkJCQkJCQkJCQkJCQkmKGxfY29kZWMtPm1fZXZlbnRfbWdyKSk7CisJfQorCXJldHVybiBPUEpfRkFMU0U7Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZGVjb2RlX3RpbGVfZGF0YSgJb3BqX2NvZGVjX3QgKnBfY29kZWMsCisJCQkJCQkJCQkJCU9QSl9VSU5UMzIgcF90aWxlX2luZGV4LAorCQkJCQkJCQkJCQlPUEpfQllURSAqIHBfZGF0YSwKKwkJCQkJCQkJCQkJT1BKX1VJTlQzMiBwX2RhdGFfc2l6ZSwKKwkJCQkJCQkJCQkJb3BqX3N0cmVhbV90ICpwX3N0cmVhbQorCQkJCQkJCQkJCQkpCit7CisJaWYgKHBfY29kZWMgJiYgcF9kYXRhICYmIHBfc3RyZWFtKSB7CisJCW9wal9jb2RlY19wcml2YXRlX3QgKiBsX2NvZGVjID0gKG9wal9jb2RlY19wcml2YXRlX3QgKikgcF9jb2RlYzsKKwkJb3BqX3N0cmVhbV9wcml2YXRlX3QgKiBsX3N0cmVhbSA9IChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqKSBwX3N0cmVhbTsKKworCQlpZiAoISBsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IpIHsKKwkJCXJldHVybiBPUEpfRkFMU0U7CisJCX0KKworCQlyZXR1cm4gbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfZGVjb2RlX3RpbGVfZGF0YSgJbF9jb2RlYy0+bV9jb2RlYywKKwkJCQkJCQkJCQkJCQkJCQkJCQlwX3RpbGVfaW5kZXgsCisJCQkJCQkJCQkJCQkJCQkJCQkJcF9kYXRhLAorCQkJCQkJCQkJCQkJCQkJCQkJCXBfZGF0YV9zaXplLAorCQkJCQkJCQkJCQkJCQkJCQkJCWxfc3RyZWFtLAorCQkJCQkJCQkJCQkJCQkJCQkJCSYobF9jb2RlYy0+bV9ldmVudF9tZ3IpICk7CisJfQorCXJldHVybiBPUEpfRkFMU0U7Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZ2V0X2RlY29kZWRfdGlsZSgJb3BqX2NvZGVjX3QgKnBfY29kZWMsCisJCQkJCQkJCQkJCW9wal9zdHJlYW1fdCAqcF9zdHJlYW0sCisJCQkJCQkJCQkJCW9wal9pbWFnZV90ICpwX2ltYWdlLAorCQkJCQkJCQkJCQlPUEpfVUlOVDMyIHRpbGVfaW5kZXgpCit7CisJaWYgKHBfY29kZWMgJiYgcF9zdHJlYW0pIHsKKwkJb3BqX2NvZGVjX3ByaXZhdGVfdCAqIGxfY29kZWMgPSAob3BqX2NvZGVjX3ByaXZhdGVfdCAqKSBwX2NvZGVjOworCQlvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIGxfc3RyZWFtID0gKG9wal9zdHJlYW1fcHJpdmF0ZV90ICopIHBfc3RyZWFtOworCisJCWlmICghIGxfY29kZWMtPmlzX2RlY29tcHJlc3NvcikgeworCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJfQorCQkKKwkJcmV0dXJuIGxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2RlY29tcHJlc3Npb24ub3BqX2dldF9kZWNvZGVkX3RpbGUoCWxfY29kZWMtPm1fY29kZWMsCisJCQkJCQkJCQkJCQkJCQkJCQkJbF9zdHJlYW0sCisJCQkJCQkJCQkJCQkJCQkJCQkJcF9pbWFnZSwKKwkJCQkJCQkJCQkJCQkJCQkJCQkmKGxfY29kZWMtPm1fZXZlbnRfbWdyKSwKKwkJCQkJCQkJCQkJCQkJCQkJCQl0aWxlX2luZGV4KTsKKwl9CisKKwlyZXR1cm4gT1BKX0ZBTFNFOworfQorCitPUEpfQk9PTCBPUEpfQ0FMTENPTlYgb3BqX3NldF9kZWNvZGVkX3Jlc29sdXRpb25fZmFjdG9yKG9wal9jb2RlY190ICpwX2NvZGVjLCAKKwkJCQkJCQkJCQkJCQkJT1BKX1VJTlQzMiByZXNfZmFjdG9yICkKK3sKKwlvcGpfY29kZWNfcHJpdmF0ZV90ICogbF9jb2RlYyA9IChvcGpfY29kZWNfcHJpdmF0ZV90ICopIHBfY29kZWM7CisKKwlpZiAoICFsX2NvZGVjICl7CisJCWZwcmludGYoc3RkZXJyLCAiW0VSUk9SXSBJbnB1dCBwYXJhbWV0ZXJzIG9mIHRoZSBzZXR1cF9kZWNvZGVyIGZ1bmN0aW9uIGFyZSBpbmNvcnJlY3QuXG4iKTsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwlsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9kZWNvbXByZXNzaW9uLm9wal9zZXRfZGVjb2RlZF9yZXNvbHV0aW9uX2ZhY3RvcihsX2NvZGVjLT5tX2NvZGVjLCAKKwkJCQkJCQkJCQkJCQkJCQkJCQlyZXNfZmFjdG9yLAorCQkJCQkJCQkJCQkJCQkJCQkJCSYobF9jb2RlYy0+bV9ldmVudF9tZ3IpICk7CisJcmV0dXJuIE9QSl9UUlVFOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBDT01QUkVTU0lPTiBGVU5DVElPTlMqLworCitvcGpfY29kZWNfdCogT1BKX0NBTExDT05WIG9wal9jcmVhdGVfY29tcHJlc3MoT1BKX0NPREVDX0ZPUk1BVCBwX2Zvcm1hdCkKK3sKKwlvcGpfY29kZWNfcHJpdmF0ZV90ICpsX2NvZGVjID0gMDA7CisKKwlsX2NvZGVjID0gKG9wal9jb2RlY19wcml2YXRlX3QqKW9wal9jYWxsb2MoMSwgc2l6ZW9mKG9wal9jb2RlY19wcml2YXRlX3QpKTsKKwlpZiAoIWxfY29kZWMpIHsKKwkJcmV0dXJuIDAwOworCX0KKwltZW1zZXQobF9jb2RlYywgMCwgc2l6ZW9mKG9wal9jb2RlY19wcml2YXRlX3QpKTsKKwkKKwlsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IgPSAwOworCisJc3dpdGNoKHBfZm9ybWF0KSB7CisJCWNhc2UgT1BKX0NPREVDX0oySzoKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal9lbmNvZGUgPSAoT1BKX0JPT0wgKCopICh2b2lkICosCisJCQkJCQkJCQkJCQkJCQkJCQkJc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqLAorCQkJCQkJCQkJCQkJCQkJCQkJCXN0cnVjdCBvcGpfZXZlbnRfbWdyICogKSkgb3BqX2oya19lbmNvZGU7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal9lbmRfY29tcHJlc3MgPSAoT1BKX0JPT0wgKCopICgJdm9pZCAqLAorCQkJCQkJCQkJCQkJCQkJCQkJCQkJc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqLAorCQkJCQkJCQkJCQkJCQkJCQkJCQkJc3RydWN0IG9wal9ldmVudF9tZ3IgKikpIG9wal9qMmtfZW5kX2NvbXByZXNzOworCisJCQlsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9jb21wcmVzc2lvbi5vcGpfc3RhcnRfY29tcHJlc3MgPSAoT1BKX0JPT0wgKCopICh2b2lkICosCisJCQkJCQkJCQkJCQkJCQkJCQkJCQlzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICosCisJCQkJCQkJCQkJCQkJCQkJCQkJCQlzdHJ1Y3Qgb3BqX2ltYWdlICogLAorCQkJCQkJCQkJCQkJCQkJCQkJCQkJc3RydWN0IG9wal9ldmVudF9tZ3IgKikpIG9wal9qMmtfc3RhcnRfY29tcHJlc3M7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal93cml0ZV90aWxlID0gKE9QSl9CT09MICgqKSAodm9pZCAqLAorCQkJCQkJCQkJCQkJCQkJCQkJCQlPUEpfVUlOVDMyLAorCQkJCQkJCQkJCQkJCQkJCQkJCQlPUEpfQllURSosCisJCQkJCQkJCQkJCQkJCQkJCQkJCU9QSl9VSU5UMzIsCisJCQkJCQkJCQkJCQkJCQkJCQkJCXN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiwKKwkJCQkJCQkJCQkJCQkJCQkJCQkJc3RydWN0IG9wal9ldmVudF9tZ3IgKikgKSBvcGpfajJrX3dyaXRlX3RpbGU7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal9kZXN0cm95ID0gKHZvaWQgKCopICh2b2lkICopKSBvcGpfajJrX2Rlc3Ryb3k7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal9zZXR1cF9lbmNvZGVyID0gKHZvaWQgKCopICgJdm9pZCAqLAorCQkJCQkJCQkJCQkJCQkJCQkJCQlvcGpfY3BhcmFtZXRlcnNfdCAqLAorCQkJCQkJCQkJCQkJCQkJCQkJCQlzdHJ1Y3Qgb3BqX2ltYWdlICosCisJCQkJCQkJCQkJCQkJCQkJCQkJCXN0cnVjdCBvcGpfZXZlbnRfbWdyICogKSkgb3BqX2oya19zZXR1cF9lbmNvZGVyOworCisJCQlsX2NvZGVjLT5tX2NvZGVjID0gb3BqX2oya19jcmVhdGVfY29tcHJlc3MoKTsKKwkJCWlmICghIGxfY29kZWMtPm1fY29kZWMpIHsKKwkJCQlvcGpfZnJlZShsX2NvZGVjKTsKKwkJCQlyZXR1cm4gMDA7CisJCQl9CisKKwkJCWJyZWFrOworCisJCWNhc2UgT1BKX0NPREVDX0pQMjoKKwkJCS8qIGdldCBhIEpQMiBkZWNvZGVyIGhhbmRsZSAqLworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fY29tcHJlc3Npb24ub3BqX2VuY29kZSA9IChPUEpfQk9PTCAoKikgKHZvaWQgKiwKKwkJCQkJCQkJCQkJCQkJCQkJCQlzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICosCisJCQkJCQkJCQkJCQkJCQkJCQkJc3RydWN0IG9wal9ldmVudF9tZ3IgKiApKSBvcGpfanAyX2VuY29kZTsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fY29tcHJlc3Npb24ub3BqX2VuZF9jb21wcmVzcyA9IChPUEpfQk9PTCAoKikgKAl2b2lkICosCisJCQkJCQkJCQkJCQkJCQkJCQkJCQlzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICosCisJCQkJCQkJCQkJCQkJCQkJCQkJCQlzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqKSkgb3BqX2pwMl9lbmRfY29tcHJlc3M7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal9zdGFydF9jb21wcmVzcyA9IChPUEpfQk9PTCAoKikgKHZvaWQgKiwKKwkJCQkJCQkJCQkJCQkJCQkJCQkJCXN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiwKKwkJCQkJCQkJCQkJCQkJCQkJCQkJCXN0cnVjdCBvcGpfaW1hZ2UgKiAsCisJCQkJCQkJCQkJCQkJCQkJCQkJCQlzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqKSkgIG9wal9qcDJfc3RhcnRfY29tcHJlc3M7CisKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal93cml0ZV90aWxlID0gKE9QSl9CT09MICgqKSAodm9pZCAqLAorCQkJCQkJCQkJCQkJCQkJCQkJCQlPUEpfVUlOVDMyLAorCQkJCQkJCQkJCQkJCQkJCQkJCQlPUEpfQllURSosCisJCQkJCQkJCQkJCQkJCQkJCQkJCU9QSl9VSU5UMzIsCisJCQkJCQkJCQkJCQkJCQkJCQkJCXN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiwKKwkJCQkJCQkJCQkJCQkJCQkJCQkJc3RydWN0IG9wal9ldmVudF9tZ3IgKikpIG9wal9qcDJfd3JpdGVfdGlsZTsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fY29tcHJlc3Npb24ub3BqX2Rlc3Ryb3kgPSAodm9pZCAoKikgKHZvaWQgKikpIG9wal9qcDJfZGVzdHJveTsKKworCQkJbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fY29tcHJlc3Npb24ub3BqX3NldHVwX2VuY29kZXIgPSAodm9pZCAoKikgKAl2b2lkICosCisJCQkJCQkJCQkJCQkJCQkJCQkJCW9wal9jcGFyYW1ldGVyc190ICosCisJCQkJCQkJCQkJCQkJCQkJCQkJCXN0cnVjdCBvcGpfaW1hZ2UgKiwKKwkJCQkJCQkJCQkJCQkJCQkJCQkJc3RydWN0IG9wal9ldmVudF9tZ3IgKiApKSBvcGpfanAyX3NldHVwX2VuY29kZXI7CisKKwkJCWxfY29kZWMtPm1fY29kZWMgPSBvcGpfanAyX2NyZWF0ZShPUEpfRkFMU0UpOworCQkJaWYgKCEgbF9jb2RlYy0+bV9jb2RlYykgeworCQkJCW9wal9mcmVlKGxfY29kZWMpOworCQkJCXJldHVybiAwMDsKKwkJCX0KKworCQkJYnJlYWs7CisKKwkJY2FzZSBPUEpfQ09ERUNfVU5LTk9XTjoKKwkJY2FzZSBPUEpfQ09ERUNfSlBUOgorCQlkZWZhdWx0OgorCQkJb3BqX2ZyZWUobF9jb2RlYyk7CisJCQlyZXR1cm4gMDA7CisJfQorCisJb3BqX3NldF9kZWZhdWx0X2V2ZW50X2hhbmRsZXIoJihsX2NvZGVjLT5tX2V2ZW50X21ncikpOworCXJldHVybiAob3BqX2NvZGVjX3QqKSBsX2NvZGVjOworfQorCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfc2V0X2RlZmF1bHRfZW5jb2Rlcl9wYXJhbWV0ZXJzKG9wal9jcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzKSB7CisJaWYocGFyYW1ldGVycykgeworCQltZW1zZXQocGFyYW1ldGVycywgMCwgc2l6ZW9mKG9wal9jcGFyYW1ldGVyc190KSk7CisJCS8qIGRlZmF1bHQgY29kaW5nIHBhcmFtZXRlcnMgKi8KKwkJcGFyYW1ldGVycy0+Y3BfY2luZW1hID0gT1BKX09GRjsgCisJCXBhcmFtZXRlcnMtPm1heF9jb21wX3NpemUgPSAwOworCQlwYXJhbWV0ZXJzLT5udW1yZXNvbHV0aW9uID0gNjsKKwkJcGFyYW1ldGVycy0+Y3BfcnNpeiA9IE9QSl9TVERfUlNJWjsKKwkJcGFyYW1ldGVycy0+Y2Jsb2Nrd19pbml0ID0gNjQ7CisJCXBhcmFtZXRlcnMtPmNibG9ja2hfaW5pdCA9IDY0OworCQlwYXJhbWV0ZXJzLT5wcm9nX29yZGVyID0gT1BKX0xSQ1A7CisJCXBhcmFtZXRlcnMtPnJvaV9jb21wbm8gPSAtMTsJCS8qIG5vIFJPSSAqLworCQlwYXJhbWV0ZXJzLT5zdWJzYW1wbGluZ19keCA9IDE7CisJCXBhcmFtZXRlcnMtPnN1YnNhbXBsaW5nX2R5ID0gMTsKKwkJcGFyYW1ldGVycy0+dHBfb24gPSAwOworCQlwYXJhbWV0ZXJzLT5kZWNvZF9mb3JtYXQgPSAtMTsKKwkJcGFyYW1ldGVycy0+Y29kX2Zvcm1hdCA9IC0xOworCQlwYXJhbWV0ZXJzLT50Y3BfcmF0ZXNbMF0gPSAwOyAgIAorCQlwYXJhbWV0ZXJzLT50Y3BfbnVtbGF5ZXJzID0gMDsKKwkJcGFyYW1ldGVycy0+Y3BfZGlzdG9fYWxsb2MgPSAwOworCQlwYXJhbWV0ZXJzLT5jcF9maXhlZF9hbGxvYyA9IDA7CisJCXBhcmFtZXRlcnMtPmNwX2ZpeGVkX3F1YWxpdHkgPSAwOworCQlwYXJhbWV0ZXJzLT5qcGlwX29uID0gT1BKX0ZBTFNFOworLyogVW5pUEc+PiAqLworI2lmZGVmIFVTRV9KUFdMCisJCXBhcmFtZXRlcnMtPmpwd2xfZXBjX29uID0gT1BKX0ZBTFNFOworCQlwYXJhbWV0ZXJzLT5qcHdsX2hwcm90X01IID0gLTE7IC8qIC0xIG1lYW5zIHVuYXNzaWduZWQgKi8KKwkJeworCQkJaW50IGk7CisJCQlmb3IgKGkgPSAwOyBpIDwgSlBXTF9NQVhfTk9fVElMRVNQRUNTOyBpKyspIHsKKwkJCQlwYXJhbWV0ZXJzLT5qcHdsX2hwcm90X1RQSF90aWxlbm9baV0gPSAtMTsgLyogdW5hc3NpZ25lZCAqLworCQkJCXBhcmFtZXRlcnMtPmpwd2xfaHByb3RfVFBIW2ldID0gMDsgLyogYWJzZW50ICovCisJCQl9CisJCX07CisJCXsKKwkJCWludCBpOworCQkJZm9yIChpID0gMDsgaSA8IEpQV0xfTUFYX05PX1BBQ0tTUEVDUzsgaSsrKSB7CisJCQkJcGFyYW1ldGVycy0+anB3bF9wcHJvdF90aWxlbm9baV0gPSAtMTsgLyogdW5hc3NpZ25lZCAqLworCQkJCXBhcmFtZXRlcnMtPmpwd2xfcHByb3RfcGFja25vW2ldID0gLTE7IC8qIHVuYXNzaWduZWQgKi8KKwkJCQlwYXJhbWV0ZXJzLT5qcHdsX3Bwcm90W2ldID0gMDsgLyogYWJzZW50ICovCisJCQl9CisJCX07CisJCXBhcmFtZXRlcnMtPmpwd2xfc2Vuc19zaXplID0gMDsgLyogMCBtZWFucyBubyBFU0QgKi8KKwkJcGFyYW1ldGVycy0+anB3bF9zZW5zX2FkZHIgPSAwOyAvKiAwIG1lYW5zIGF1dG8gKi8KKwkJcGFyYW1ldGVycy0+anB3bF9zZW5zX3JhbmdlID0gMDsgLyogMCBtZWFucyBwYWNrZXQgKi8KKwkJcGFyYW1ldGVycy0+anB3bF9zZW5zX01IID0gLTE7IC8qIC0xIG1lYW5zIHVuYXNzaWduZWQgKi8KKwkJeworCQkJaW50IGk7CisJCQlmb3IgKGkgPSAwOyBpIDwgSlBXTF9NQVhfTk9fVElMRVNQRUNTOyBpKyspIHsKKwkJCQlwYXJhbWV0ZXJzLT5qcHdsX3NlbnNfVFBIX3RpbGVub1tpXSA9IC0xOyAvKiB1bmFzc2lnbmVkICovCisJCQkJcGFyYW1ldGVycy0+anB3bF9zZW5zX1RQSFtpXSA9IC0xOyAvKiBhYnNlbnQgKi8KKwkJCX0KKwkJfTsKKyNlbmRpZiAvKiBVU0VfSlBXTCAqLworLyogPDxVbmlQRyAqLworCX0KK30KKworT1BKX0JPT0wgT1BKX0NBTExDT05WIG9wal9zZXR1cF9lbmNvZGVyKG9wal9jb2RlY190ICpwX2NvZGVjLCAKKwkJCQkJCQkJCQlvcGpfY3BhcmFtZXRlcnNfdCAqcGFyYW1ldGVycywgCisJCQkJCQkJCQkJb3BqX2ltYWdlX3QgKnBfaW1hZ2UpCit7CisJaWYgKHBfY29kZWMgJiYgcGFyYW1ldGVycyAmJiBwX2ltYWdlKSB7CisJCW9wal9jb2RlY19wcml2YXRlX3QgKiBsX2NvZGVjID0gKG9wal9jb2RlY19wcml2YXRlX3QgKikgcF9jb2RlYzsKKworCQlpZiAoISBsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IpIHsKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal9zZXR1cF9lbmNvZGVyKAlsX2NvZGVjLT5tX2NvZGVjLAorCQkJCQkJCQkJCQkJCQkJCQlwYXJhbWV0ZXJzLAorCQkJCQkJCQkJCQkJCQkJCQlwX2ltYWdlLAorCQkJCQkJCQkJCQkJCQkJCQkmKGxfY29kZWMtPm1fZXZlbnRfbWdyKSApOworCQkJcmV0dXJuIE9QSl9UUlVFOworCQl9CisJfQorCisJcmV0dXJuIE9QSl9GQUxTRTsKK30KKworT1BKX0JPT0wgT1BKX0NBTExDT05WIG9wal9zdGFydF9jb21wcmVzcyAoCW9wal9jb2RlY190ICpwX2NvZGVjLAorCQkJCQkJCQkJCQlvcGpfaW1hZ2VfdCAqIHBfaW1hZ2UsCisJCQkJCQkJCQkJCW9wal9zdHJlYW1fdCAqcF9zdHJlYW0pCit7CisJaWYgKHBfY29kZWMgJiYgcF9zdHJlYW0pIHsKKwkJb3BqX2NvZGVjX3ByaXZhdGVfdCAqIGxfY29kZWMgPSAob3BqX2NvZGVjX3ByaXZhdGVfdCAqKSBwX2NvZGVjOworCQlvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIGxfc3RyZWFtID0gKG9wal9zdHJlYW1fcHJpdmF0ZV90ICopIHBfc3RyZWFtOworCisJCWlmICghIGxfY29kZWMtPmlzX2RlY29tcHJlc3NvcikgeworCQkJcmV0dXJuIGxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal9zdGFydF9jb21wcmVzcygJbF9jb2RlYy0+bV9jb2RlYywKKwkJCQkJCQkJCQkJCQkJCQkJCQlsX3N0cmVhbSwKKwkJCQkJCQkJCQkJCQkJCQkJCQlwX2ltYWdlLAorCQkJCQkJCQkJCQkJCQkJCQkJCSYobF9jb2RlYy0+bV9ldmVudF9tZ3IpKTsKKwkJfQorCX0KKworCXJldHVybiBPUEpfRkFMU0U7Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZW5jb2RlKG9wal9jb2RlY190ICpwX2luZm8sIG9wal9zdHJlYW1fdCAqcF9zdHJlYW0pCit7CisJaWYgKHBfaW5mbyAmJiBwX3N0cmVhbSkgeworCQlvcGpfY29kZWNfcHJpdmF0ZV90ICogbF9jb2RlYyA9IChvcGpfY29kZWNfcHJpdmF0ZV90ICopIHBfaW5mbzsKKwkJb3BqX3N0cmVhbV9wcml2YXRlX3QgKiBsX3N0cmVhbSA9IChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqKSBwX3N0cmVhbTsKKworCQlpZiAoISBsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IpIHsKKwkJCXJldHVybiBsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9jb21wcmVzc2lvbi5vcGpfZW5jb2RlKAlsX2NvZGVjLT5tX2NvZGVjLAorCQkJCQkJCQkJCQkJCQkJbF9zdHJlYW0sCisJCQkJCQkJCQkJCQkJCQkmKGxfY29kZWMtPm1fZXZlbnRfbWdyKSk7CisJCX0KKwl9CisKKwlyZXR1cm4gT1BKX0ZBTFNFOworCit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZW5kX2NvbXByZXNzIChvcGpfY29kZWNfdCAqcF9jb2RlYywKKwkJCQkJCQkJCQlvcGpfc3RyZWFtX3QgKnBfc3RyZWFtKQoreworCWlmIChwX2NvZGVjICYmIHBfc3RyZWFtKSB7CisJCW9wal9jb2RlY19wcml2YXRlX3QgKiBsX2NvZGVjID0gKG9wal9jb2RlY19wcml2YXRlX3QgKikgcF9jb2RlYzsKKwkJb3BqX3N0cmVhbV9wcml2YXRlX3QgKiBsX3N0cmVhbSA9IChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqKSBwX3N0cmVhbTsKKworCQlpZiAoISBsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IpIHsKKwkJCXJldHVybiBsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9jb21wcmVzc2lvbi5vcGpfZW5kX2NvbXByZXNzKGxfY29kZWMtPm1fY29kZWMsCisJCQkJCQkJCQkJCQkJCQkJCQlsX3N0cmVhbSwKKwkJCQkJCQkJCQkJCQkJCQkJCSYobF9jb2RlYy0+bV9ldmVudF9tZ3IpKTsKKwkJfQorCX0KKwlyZXR1cm4gT1BKX0ZBTFNFOworCit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZW5kX2RlY29tcHJlc3MgKAlvcGpfY29kZWNfdCAqcF9jb2RlYywKKwkJCQkJCQkJCQkJb3BqX3N0cmVhbV90ICpwX3N0cmVhbSkKK3sKKwlpZiAocF9jb2RlYyAmJiBwX3N0cmVhbSkgeworCQlvcGpfY29kZWNfcHJpdmF0ZV90ICogbF9jb2RlYyA9IChvcGpfY29kZWNfcHJpdmF0ZV90ICopIHBfY29kZWM7CisJCW9wal9zdHJlYW1fcHJpdmF0ZV90ICogbF9zdHJlYW0gPSAob3BqX3N0cmVhbV9wcml2YXRlX3QgKikgcF9zdHJlYW07CisKKwkJaWYgKCEgbF9jb2RlYy0+aXNfZGVjb21wcmVzc29yKSB7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisJCQorCQlyZXR1cm4gbF9jb2RlYy0+bV9jb2RlY19kYXRhLm1fZGVjb21wcmVzc2lvbi5vcGpfZW5kX2RlY29tcHJlc3MobF9jb2RlYy0+bV9jb2RlYywKKwkJCQkJCQkJCQkJCQkJCQkJCWxfc3RyZWFtLAorCQkJCQkJCQkJCQkJCQkJCQkJJihsX2NvZGVjLT5tX2V2ZW50X21ncikgKTsKKwl9CisKKwlyZXR1cm4gT1BKX0ZBTFNFOworfQorCitPUEpfQk9PTCBPUEpfQ0FMTENPTlYgb3BqX3NldF9NQ1Qob3BqX2NwYXJhbWV0ZXJzX3QgKnBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0ZMT0FUMzIgKiBwRW5jb2RpbmdNYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogcF9kY19zaGlmdCxPUEpfVUlOVDMyIHBOYkNvbXApCit7CisJT1BKX1VJTlQzMiBsX21hdHJpeF9zaXplID0gcE5iQ29tcCAqIHBOYkNvbXAgKiAoT1BKX1VJTlQzMilzaXplb2YoT1BKX0ZMT0FUMzIpOworCU9QSl9VSU5UMzIgbF9kY19zaGlmdF9zaXplID0gcE5iQ29tcCAqIChPUEpfVUlOVDMyKXNpemVvZihPUEpfSU5UMzIpOworCU9QSl9VSU5UMzIgbF9tY3RfdG90YWxfc2l6ZSA9IGxfbWF0cml4X3NpemUgKyBsX2RjX3NoaWZ0X3NpemU7CisKKwkvKiBhZGQgTUNUIGNhcGFiaWxpdHkgKi8KKwlPUEpfSU5UMzIgcnNpeiA9IChPUEpfSU5UMzIpcGFyYW1ldGVycy0+Y3BfcnNpeiB8IChPUEpfSU5UMzIpT1BKX01DVDsKKwlwYXJhbWV0ZXJzLT5jcF9yc2l6ID0gKE9QSl9SU0laX0NBUEFCSUxJVElFUylyc2l6OworCXBhcmFtZXRlcnMtPmlycmV2ZXJzaWJsZSA9IDE7CisKKwkvKiB1c2UgYXJyYXkgYmFzZWQgTUNUICovCisJcGFyYW1ldGVycy0+dGNwX21jdCA9IDI7CisJcGFyYW1ldGVycy0+bWN0X2RhdGEgPSBvcGpfbWFsbG9jKGxfbWN0X3RvdGFsX3NpemUpOworCWlmICghIHBhcmFtZXRlcnMtPm1jdF9kYXRhKSB7CisJCXJldHVybiBPUEpfRkFMU0U7CisJfQorCisJbWVtY3B5KHBhcmFtZXRlcnMtPm1jdF9kYXRhLHBFbmNvZGluZ01hdHJpeCxsX21hdHJpeF9zaXplKTsKKwltZW1jcHkoKChPUEpfQllURSAqKSBwYXJhbWV0ZXJzLT5tY3RfZGF0YSkgKyAgbF9tYXRyaXhfc2l6ZSxwX2RjX3NoaWZ0LGxfZGNfc2hpZnRfc2l6ZSk7CisKKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfd3JpdGVfdGlsZSAoCW9wal9jb2RlY190ICpwX2NvZGVjLAorCQkJCQkJCQkJCU9QSl9VSU5UMzIgcF90aWxlX2luZGV4LAorCQkJCQkJCQkJCU9QSl9CWVRFICogcF9kYXRhLAorCQkJCQkJCQkJCU9QSl9VSU5UMzIgcF9kYXRhX3NpemUsCisJCQkJCQkJCQkJb3BqX3N0cmVhbV90ICpwX3N0cmVhbSApCit7CisJaWYgKHBfY29kZWMgJiYgcF9zdHJlYW0gJiYgcF9kYXRhKSB7CisJCW9wal9jb2RlY19wcml2YXRlX3QgKiBsX2NvZGVjID0gKG9wal9jb2RlY19wcml2YXRlX3QgKikgcF9jb2RlYzsKKwkJb3BqX3N0cmVhbV9wcml2YXRlX3QgKiBsX3N0cmVhbSA9IChvcGpfc3RyZWFtX3ByaXZhdGVfdCAqKSBwX3N0cmVhbTsKKworCQlpZiAobF9jb2RlYy0+aXNfZGVjb21wcmVzc29yKSB7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisKKwkJcmV0dXJuIGxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2NvbXByZXNzaW9uLm9wal93cml0ZV90aWxlKAlsX2NvZGVjLT5tX2NvZGVjLAorCQkJCQkJCQkJCQkJCQkJCQlwX3RpbGVfaW5kZXgsCisJCQkJCQkJCQkJCQkJCQkJCXBfZGF0YSwKKwkJCQkJCQkJCQkJCQkJCQkJcF9kYXRhX3NpemUsCisJCQkJCQkJCQkJCQkJCQkJCWxfc3RyZWFtLAorCQkJCQkJCQkJCQkJCQkJCQkmKGxfY29kZWMtPm1fZXZlbnRfbWdyKSApOworCX0KKworCXJldHVybiBPUEpfRkFMU0U7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBPUEpfQ0FMTENPTlYgb3BqX2Rlc3Ryb3lfY29kZWMob3BqX2NvZGVjX3QgKnBfY29kZWMpCit7CisJaWYgKHBfY29kZWMpIHsKKwkJb3BqX2NvZGVjX3ByaXZhdGVfdCAqIGxfY29kZWMgPSAob3BqX2NvZGVjX3ByaXZhdGVfdCAqKSBwX2NvZGVjOworCisJCWlmIChsX2NvZGVjLT5pc19kZWNvbXByZXNzb3IpIHsKKwkJCWxfY29kZWMtPm1fY29kZWNfZGF0YS5tX2RlY29tcHJlc3Npb24ub3BqX2Rlc3Ryb3kobF9jb2RlYy0+bV9jb2RlYyk7CisJCX0KKwkJZWxzZSB7CisJCQlsX2NvZGVjLT5tX2NvZGVjX2RhdGEubV9jb21wcmVzc2lvbi5vcGpfZGVzdHJveShsX2NvZGVjLT5tX2NvZGVjKTsKKwkJfQorCisJCWxfY29kZWMtPm1fY29kZWMgPSAwMDsKKwkJb3BqX2ZyZWUobF9jb2RlYyk7CisJfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgT1BKX0NBTExDT05WIG9wal9kdW1wX2NvZGVjKAlvcGpfY29kZWNfdCAqcF9jb2RlYywKKwkJCQkJCQkJCU9QSl9JTlQzMiBpbmZvX2ZsYWcsCisJCQkJCQkJCQlGSUxFKiBvdXRwdXRfc3RyZWFtKQoreworCWlmIChwX2NvZGVjKSB7CisJCW9wal9jb2RlY19wcml2YXRlX3QqIGxfY29kZWMgPSAob3BqX2NvZGVjX3ByaXZhdGVfdCopIHBfY29kZWM7CisKKwkJbF9jb2RlYy0+b3BqX2R1bXBfY29kZWMobF9jb2RlYy0+bV9jb2RlYywgaW5mb19mbGFnLCBvdXRwdXRfc3RyZWFtKTsKKwkJcmV0dXJuOworCX0KKworCWZwcmludGYoc3RkZXJyLCAiW0VSUk9SXSBJbnB1dCBwYXJhbWV0ZXIgb2YgdGhlIGR1bXBfY29kZWMgZnVuY3Rpb24gYXJlIGluY29ycmVjdC5cbiIpOworCXJldHVybjsKK30KKworb3BqX2NvZGVzdHJlYW1faW5mb192Ml90KiBPUEpfQ0FMTENPTlYgb3BqX2dldF9jc3RyX2luZm8ob3BqX2NvZGVjX3QgKnBfY29kZWMpCit7CisJaWYgKHBfY29kZWMpIHsKKwkJb3BqX2NvZGVjX3ByaXZhdGVfdCogbF9jb2RlYyA9IChvcGpfY29kZWNfcHJpdmF0ZV90KikgcF9jb2RlYzsKKworCQlyZXR1cm4gbF9jb2RlYy0+b3BqX2dldF9jb2RlY19pbmZvKGxfY29kZWMtPm1fY29kZWMpOworCX0KKworCXJldHVybiBOVUxMOworfQorCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfZGVzdHJveV9jc3RyX2luZm8ob3BqX2NvZGVzdHJlYW1faW5mb192Ml90ICoqY3N0cl9pbmZvKSB7CisJaWYgKGNzdHJfaW5mbykgeworCisJCWlmICgoKmNzdHJfaW5mbyktPm1fZGVmYXVsdF90aWxlX2luZm8udGNjcF9pbmZvKXsKKwkJCW9wal9mcmVlKCgqY3N0cl9pbmZvKS0+bV9kZWZhdWx0X3RpbGVfaW5mby50Y2NwX2luZm8pOworCQl9CisKKwkJaWYgKCgqY3N0cl9pbmZvKS0+dGlsZV9pbmZvKXsKKwkJCS8qIEZJWE1FIG5vdCB1c2VkIGZvciB0aGUgbW9tZW50Ki8KKwkJfQorCisJCW9wal9mcmVlKCgqY3N0cl9pbmZvKSk7CisJCSgqY3N0cl9pbmZvKSA9IE5VTEw7CisJfQorfQorCitvcGpfY29kZXN0cmVhbV9pbmRleF90ICogT1BKX0NBTExDT05WIG9wal9nZXRfY3N0cl9pbmRleChvcGpfY29kZWNfdCAqcF9jb2RlYykKK3sKKwlpZiAocF9jb2RlYykgeworCQlvcGpfY29kZWNfcHJpdmF0ZV90KiBsX2NvZGVjID0gKG9wal9jb2RlY19wcml2YXRlX3QqKSBwX2NvZGVjOworCisJCXJldHVybiBsX2NvZGVjLT5vcGpfZ2V0X2NvZGVjX2luZGV4KGxfY29kZWMtPm1fY29kZWMpOworCX0KKworCXJldHVybiBOVUxMOworfQorCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfZGVzdHJveV9jc3RyX2luZGV4KG9wal9jb2Rlc3RyZWFtX2luZGV4X3QgKipwX2NzdHJfaW5kZXgpCit7CisJaWYgKCpwX2NzdHJfaW5kZXgpeworCQlqMmtfZGVzdHJveV9jc3RyX2luZGV4KCpwX2NzdHJfaW5kZXgpOworCQkoKnBfY3N0cl9pbmRleCkgPSBOVUxMOworCX0KK30KKworb3BqX3N0cmVhbV90KiBPUEpfQ0FMTENPTlYgb3BqX3N0cmVhbV9jcmVhdGVfZGVmYXVsdF9maWxlX3N0cmVhbV92MyAoY29uc3QgY2hhciAqZm5hbWUsIE9QSl9CT09MIHBfaXNfcmVhZF9zdHJlYW0pCit7CisgICAgcmV0dXJuIG9wal9zdHJlYW1fY3JlYXRlX2ZpbGVfc3RyZWFtX3YzKGZuYW1lLCBPUEpfSjJLX1NUUkVBTV9DSFVOS19TSVpFLCBwX2lzX3JlYWRfc3RyZWFtKTsKK30KKworb3BqX3N0cmVhbV90KiBPUEpfQ0FMTENPTlYgb3BqX3N0cmVhbV9jcmVhdGVfZmlsZV9zdHJlYW1fdjMgKAorICAgICAgICBjb25zdCBjaGFyICpmbmFtZSwgCisJCU9QSl9TSVpFX1QgcF9zaXplLCAKKyAgICAgICAgT1BKX0JPT0wgcF9pc19yZWFkX3N0cmVhbSkKK3sKKyAgICBvcGpfc3RyZWFtX3QqIGxfc3RyZWFtID0gMDA7CisgICAgRklMRSAqcF9maWxlOworICAgIGNvbnN0IGNoYXIgKm1vZGU7CisKKyAgICBpZiAoISBmbmFtZSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgCisgICAgaWYocF9pc19yZWFkX3N0cmVhbSkgbW9kZSA9ICJyYiI7IGVsc2UgbW9kZSA9ICJ3YiI7CisKKyAgICBwX2ZpbGUgPSBmb3BlbihmbmFtZSwgbW9kZSk7CisKKyAgICBpZiAoISBwX2ZpbGUpIHsKKwkgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbF9zdHJlYW0gPSBvcGpfc3RyZWFtX2NyZWF0ZShwX3NpemUscF9pc19yZWFkX3N0cmVhbSk7CisgICAgaWYgKCEgbF9zdHJlYW0pIHsKKyAgICAgICAgZmNsb3NlKHBfZmlsZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9wal9zdHJlYW1fc2V0X3VzZXJfZGF0YV92MyhsX3N0cmVhbSwgcF9maWxlLCAob3BqX3N0cmVhbV9mcmVlX3VzZXJfZGF0YV9mbikgZmNsb3NlKTsKKyAgICBvcGpfc3RyZWFtX3NldF91c2VyX2RhdGFfbGVuZ3RoKGxfc3RyZWFtLCBvcGpfZ2V0X2RhdGFfbGVuZ3RoX2Zyb21fZmlsZShwX2ZpbGUpKTsKKyAgICBvcGpfc3RyZWFtX3NldF9yZWFkX2Z1bmN0aW9uKGxfc3RyZWFtLCAob3BqX3N0cmVhbV9yZWFkX2ZuKSBvcGpfcmVhZF9mcm9tX2ZpbGUpOworICAgIG9wal9zdHJlYW1fc2V0X3dyaXRlX2Z1bmN0aW9uKGxfc3RyZWFtLCAob3BqX3N0cmVhbV93cml0ZV9mbikgb3BqX3dyaXRlX2Zyb21fZmlsZSk7CisgICAgb3BqX3N0cmVhbV9zZXRfc2tpcF9mdW5jdGlvbihsX3N0cmVhbSwgKG9wal9zdHJlYW1fc2tpcF9mbikgb3BqX3NraXBfZnJvbV9maWxlKTsKKyAgICBvcGpfc3RyZWFtX3NldF9zZWVrX2Z1bmN0aW9uKGxfc3RyZWFtLCAob3BqX3N0cmVhbV9zZWVrX2ZuKSBvcGpfc2Vla19mcm9tX2ZpbGUpOworCisgICAgcmV0dXJuIGxfc3RyZWFtOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wZW5qcGVnLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BlbmpwZWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWE5YTkwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wZW5qcGVnLmgKQEAgLTAsMCArMSwxNTAxIEBACisgLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsIFBhcnZhdGhhIEVsYW5nb3ZhbgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBKZXJvbWUgRmltZXMsIENvbW11bmljYXRpb25zICYgU3lzdGVtZXMgPGplcm9tZS5maW1lc0BjLXMuZnI+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMSwgS2FvcmkgSGFnaWhhcmEKKyAqIENvcHlyaWdodCAoYykgMjAxMS0yMDEyLCBDZW50cmUgTmF0aW9uYWwgZCdFdHVkZXMgU3BhdGlhbGVzIChDTkVTKSwgRnJhbmNlIAorICogQ29weXJpZ2h0IChjKSAyMDEyLCBDUyBTeXN0ZW1lcyBkJ0luZm9ybWF0aW9uLCBGcmFuY2UKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgT1BFTkpQRUdfSAorI2RlZmluZSBPUEVOSlBFR19ICisKKyNpZm5kZWYgT1BKX1NUQVRJQworI2RlZmluZSBPUEpfU1RBVElDCisjZW5kaWYKKworCisKKy8qIAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgQ29tcGlsZXIgZGlyZWN0aXZlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworLyoKK1RoZSBpbmxpbmUga2V5d29yZCBpcyBzdXBwb3J0ZWQgYnkgQzk5IGJ1dCBub3QgYnkgQzkwLiAKK01vc3QgY29tcGlsZXJzIGltcGxlbWVudCB0aGVpciBvd24gdmVyc2lvbiBvZiB0aGlzIGtleXdvcmQgLi4uIAorKi8KKyNpZm5kZWYgSU5MSU5FCisJI2lmIGRlZmluZWQoX01TQ19WRVIpCisJCSNkZWZpbmUgSU5MSU5FIF9fZm9yY2VpbmxpbmUKKwkjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorCQkjZGVmaW5lIElOTElORSBfX2lubGluZV9fCisJI2VsaWYgZGVmaW5lZChfX01XRVJLU19fKQorCQkjZGVmaW5lIElOTElORSBpbmxpbmUKKwkjZWxzZSAKKwkJLyogYWRkIG90aGVyIGNvbXBpbGVycyBoZXJlIC4uLiAqLworCQkjZGVmaW5lIElOTElORSAKKwkjZW5kaWYgLyogZGVmaW5lZCg8Q29tcGlsZXI+KSAqLworI2VuZGlmIC8qIElOTElORSAqLworCisvKiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAqLworI2lmZGVmIF9fR05VQ19fCisJI2RlZmluZSBPUEpfREVQUkVDQVRFRChmdW5jKSBmdW5jIF9fYXR0cmlidXRlX18gKChkZXByZWNhdGVkKSkKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisJI2RlZmluZSBPUEpfREVQUkVDQVRFRChmdW5jKSBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQpIGZ1bmMKKyNlbHNlCisJI3ByYWdtYSBtZXNzYWdlKCJXQVJOSU5HOiBZb3UgbmVlZCB0byBpbXBsZW1lbnQgREVQUkVDQVRFRCBmb3IgdGhpcyBjb21waWxlciIpCisJI2RlZmluZSBPUEpfREVQUkVDQVRFRChmdW5jKSBmdW5jCisjZW5kaWYKKworI2lmIGRlZmluZWQoT1BKX1NUQVRJQykgfHwgIWRlZmluZWQoX1dJTjMyKQorLyogaHR0cDovL2djYy5nbnUub3JnL3dpa2kvVmlzaWJpbGl0eSAqLworI2lmIF9fR05VQ19fID49IDQKKyNkZWZpbmUgT1BKX0FQSSAgICBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCisjZGVmaW5lIE9QSl9MT0NBTCAgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpCisjZWxzZQorI2RlZmluZSBPUEpfQVBJCisjZGVmaW5lIE9QSl9MT0NBTAorI2VuZGlmCisjZGVmaW5lIE9QSl9DQUxMQ09OVgorI2Vsc2UKKyNkZWZpbmUgT1BKX0NBTExDT05WIF9fc3RkY2FsbAorLyoKK1RoZSBmb2xsb3dpbmcgaWZkZWYgYmxvY2sgaXMgdGhlIHN0YW5kYXJkIHdheSBvZiBjcmVhdGluZyBtYWNyb3Mgd2hpY2ggbWFrZSBleHBvcnRpbmcgCitmcm9tIGEgRExMIHNpbXBsZXIuIEFsbCBmaWxlcyB3aXRoaW4gdGhpcyBETEwgYXJlIGNvbXBpbGVkIHdpdGggdGhlIE9QSl9FWFBPUlRTCitzeW1ib2wgZGVmaW5lZCBvbiB0aGUgY29tbWFuZCBsaW5lLiB0aGlzIHN5bWJvbCBzaG91bGQgbm90IGJlIGRlZmluZWQgb24gYW55IHByb2plY3QKK3RoYXQgdXNlcyB0aGlzIERMTC4gVGhpcyB3YXkgYW55IG90aGVyIHByb2plY3Qgd2hvc2Ugc291cmNlIGZpbGVzIGluY2x1ZGUgdGhpcyBmaWxlIHNlZSAKK09QSl9BUEkgZnVuY3Rpb25zIGFzIGJlaW5nIGltcG9ydGVkIGZyb20gYSBETEwsIHdoZXJhcyB0aGlzIERMTCBzZWVzIHN5bWJvbHMKK2RlZmluZWQgd2l0aCB0aGlzIG1hY3JvIGFzIGJlaW5nIGV4cG9ydGVkLgorKi8KKyNpZiBkZWZpbmVkKE9QSl9FWFBPUlRTKSB8fCBkZWZpbmVkKERMTF9FWFBPUlQpCisjZGVmaW5lIE9QSl9BUEkgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZWxzZQorI2RlZmluZSBPUEpfQVBJIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2VuZGlmIC8qIE9QSl9FWFBPUlRTICovCisjZW5kaWYgLyogIU9QSl9TVEFUSUMgfHwgIV9XSU4zMiAqLworCit0eXBlZGVmIGludCBPUEpfQk9PTDsKKyNkZWZpbmUgT1BKX1RSVUUgMQorI2RlZmluZSBPUEpfRkFMU0UgMAorCit0eXBlZGVmIGNoYXIgICAgICAgICAgT1BKX0NIQVI7Cit0eXBlZGVmIGZsb2F0ICAgICAgICAgT1BKX0ZMT0FUMzI7Cit0eXBlZGVmIGRvdWJsZSAgICAgICAgT1BKX0ZMT0FUNjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgT1BKX0JZVEU7CisjaW5jbHVkZSAib3BqX3N0ZGludC5oIgorCit0eXBlZGVmIGludDhfdCAgIE9QSl9JTlQ4OwordHlwZWRlZiB1aW50OF90ICBPUEpfVUlOVDg7Cit0eXBlZGVmIGludDE2X3QgIE9QSl9JTlQxNjsKK3R5cGVkZWYgdWludDE2X3QgT1BKX1VJTlQxNjsKK3R5cGVkZWYgaW50MzJfdCAgT1BKX0lOVDMyOwordHlwZWRlZiB1aW50MzJfdCBPUEpfVUlOVDMyOwordHlwZWRlZiBpbnQ2NF90ICBPUEpfSU5UNjQ7Cit0eXBlZGVmIHVpbnQ2NF90IE9QSl9VSU5UNjQ7CisKK3R5cGVkZWYgaW50NjRfdCAgT1BKX09GRl9UOyAvKiA2NC1iaXQgZmlsZSBvZmZzZXQgdHlwZSAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KK3R5cGVkZWYgc2l6ZV90ICAgT1BKX1NJWkVfVDsKKworLyogQXZvaWQgY29tcGlsZS10aW1lIHdhcm5pbmcgYmVjYXVzZSBwYXJhbWV0ZXIgaXMgbm90IHVzZWQgKi8KKyNkZWZpbmUgT1BKX0FSR19OT1RfVVNFRCh4KSAodm9pZCkoeCkKKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBVc2VmdWwgY29uc3RhbnQgZGVmaW5pdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKKyNkZWZpbmUgT1BKX1BBVEhfTEVOIDQwOTYgLyoqPCBNYXhpbXVtIGFsbG93ZWQgc2l6ZSBmb3IgZmlsZW5hbWVzICovCisKKyNkZWZpbmUgT1BKX0oyS19NQVhSTFZMUyAzMwkJCQkJLyoqPCBOdW1iZXIgb2YgbWF4aW11bSByZXNvbHV0aW9uIGxldmVsIGF1dGhvcml6ZWQgKi8KKyNkZWZpbmUgT1BKX0oyS19NQVhCQU5EUyAoMypPUEpfSjJLX01BWFJMVkxTLTIpCS8qKjwgTnVtYmVyIG9mIG1heGltdW0gc3ViLWJhbmQgbGlua2VkIHRvIG51bWJlciBvZiByZXNvbHV0aW9uIGxldmVsICovCisKKyNkZWZpbmUgT1BKX0oyS19ERUZBVUxUX05CX1NFR1MJCQkJMTAKKyNkZWZpbmUgT1BKX0oyS19TVFJFQU1fQ0hVTktfU0laRQkJCTB4MTAwMDAwIC8qKiAxIG1lZ2EgYnkgZGVmYXVsdCAqLworI2RlZmluZSBPUEpfSjJLX0RFRkFVTFRfSEVBREVSX1NJWkUJCQkxMDAwCisjZGVmaW5lIE9QSl9KMktfTUNDX0RFRkFVTFRfTkJfUkVDT1JEUwkJMTAKKyNkZWZpbmUgT1BKX0oyS19NQ1RfREVGQVVMVF9OQl9SRUNPUkRTCQkxMAorCisvKiBVbmlQRz4+ICovIC8qIE5PVCBZRVQgVVNFRCBJTiBUSEUgVjIgVkVSU0lPTiBPRiBPUEVOSlBFRyAqLworI2RlZmluZSBKUFdMX01BWF9OT19USUxFU1BFQ1MJMTYgLyoqPCBNYXhpbXVtIG51bWJlciBvZiB0aWxlIHBhcnRzIGV4cGVjdGVkIGJ5IEpQV0w6IGluY3JlYXNlIGF0IHlvdXIgd2lsbCAqLworI2RlZmluZSBKUFdMX01BWF9OT19QQUNLU1BFQ1MJMTYgLyoqPCBNYXhpbXVtIG51bWJlciBvZiBwYWNrZXQgcGFydHMgZXhwZWN0ZWQgYnkgSlBXTDogaW5jcmVhc2UgYXQgeW91ciB3aWxsICovCisjZGVmaW5lIEpQV0xfTUFYX05PX01BUktFUlMJNTEyIC8qKjwgTWF4aW11bSBudW1iZXIgb2YgSlBXTCBtYXJrZXJzOiBpbmNyZWFzZSBhdCB5b3VyIHdpbGwgKi8KKyNkZWZpbmUgSlBXTF9QUklWQVRFSU5ERVhfTkFNRSAianB3bF9pbmRleF9wcml2YXRlZmlsZW5hbWUiIC8qKjwgaW5kZXggZmlsZSBuYW1lIHVzZWQgd2hlbiBKUFdMIGlzIG9uICovCisjZGVmaW5lIEpQV0xfRVhQRUNURURfQ09NUE9ORU5UUyAzIC8qKjwgRXhwZWN0IHRoaXMgbnVtYmVyIG9mIGNvbXBvbmVudHMsIHNvIHlvdSdsbCBmaW5kIGJldHRlciB0aGUgZmlyc3QgRVBCICovCisjZGVmaW5lIEpQV0xfTUFYSU1VTV9USUxFUyA4MTkyIC8qKjwgRXhwZWN0IHRoaXMgbWF4aW11bSBudW1iZXIgb2YgdGlsZXMsIHRvIGF2b2lkIHNvbWUgY3Jhc2hlcyAqLworI2RlZmluZSBKUFdMX01BWElNVU1fSEFNTUlORyAyIC8qKjwgRXhwZWN0IHRoaXMgbWF4aW11bSBudW1iZXIgb2YgYml0IGVycm9ycyBpbiBtYXJrZXIgaWQncyAqLworI2RlZmluZSBKUFdMX01BWElNVU1fRVBCX1JPT00gNjU0NTAgLyoqPCBFeHBlY3QgdGhpcyBtYXhpbXVtIG51bWJlciBvZiBieXRlcyBmb3IgY29tcG9zaXRpb24gb2YgRVBCcyAqLworLyogPDxVbmlQRyAqLworCisvKioKKyAqIEVYUEVSSU1FTlRBTCBGT1IgVEhFIE1PTUVOVAorICogU3VwcG9ydGVkIG9wdGlvbnMgYWJvdXQgZmlsZSBpbmZvcm1hdGlvbiB1c2VkIG9ubHkgaW4gajJrX2R1bXAKKyovCisjZGVmaW5lIE9QSl9JTUdfSU5GTwkJMQkvKio8IEJhc2ljIGltYWdlIGluZm9ybWF0aW9uIHByb3ZpZGVkIHRvIHRoZSB1c2VyICovCisjZGVmaW5lIE9QSl9KMktfTUhfSU5GTwkJMgkvKio8IENvZGVzdHJlYW0gaW5mb3JtYXRpb24gYmFzZWQgb25seSBvbiB0aGUgbWFpbiBoZWFkZXIgKi8KKyNkZWZpbmUgT1BKX0oyS19USF9JTkZPCQk0CS8qKjwgVGlsZSBpbmZvcm1hdGlvbiBiYXNlZCBvbiB0aGUgY3VycmVudCB0aWxlIGhlYWRlciAqLworI2RlZmluZSBPUEpfSjJLX1RDSF9JTkZPCTgJLyoqPCBUaWxlL0NvbXBvbmVudCBpbmZvcm1hdGlvbiBvZiBhbGwgdGlsZXMgKi8KKyNkZWZpbmUgT1BKX0oyS19NSF9JTkQJCTE2CS8qKjwgQ29kZXN0cmVhbSBpbmRleCBiYXNlZCBvbmx5IG9uIHRoZSBtYWluIGhlYWRlciAqLworI2RlZmluZSBPUEpfSjJLX1RIX0lORAkJMzIJLyoqPCBUaWxlIGluZGV4IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbGUgKi8KKy8qRklYTUUgI2RlZmluZSBPUEpfSjJLX0NTVFJfSU5ECTQ4Ki8JLyoqPCAgKi8KKyNkZWZpbmUgT1BKX0pQMl9JTkZPCQkxMjgJLyoqPCBKUDIgZmlsZSBpbmZvcm1hdGlvbiAqLworI2RlZmluZSBPUEpfSlAyX0lORAkJCTI1NgkvKio8IEpQMiBmaWxlIGluZGV4ICovCisKKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBlbnVtIGRlZmluaXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworLyoqIAorICogUnNpeiBDYXBhYmlsaXRpZXMKKyAqICovCit0eXBlZGVmIGVudW0gUlNJWl9DQVBBQklMSVRJRVMgeworCU9QSl9TVERfUlNJWiA9IDAsCQkvKiogU3RhbmRhcmQgSlBFRzIwMDAgcHJvZmlsZSovCisJT1BKX0NJTkVNQTJLID0gMywJCS8qKiBQcm9maWxlIG5hbWUgZm9yIGEgMksgaW1hZ2UqLworCU9QSl9DSU5FTUE0SyA9IDQsCQkvKiogUHJvZmlsZSBuYW1lIGZvciBhIDRLIGltYWdlKi8KKwlPUEpfTUNUID0gMHg4MTAwCit9IE9QSl9SU0laX0NBUEFCSUxJVElFUzsKKworLyoqIAorICogRGlnaXRhbCBjaW5lbWEgb3BlcmF0aW9uIG1vZGUKKyAqICovCit0eXBlZGVmIGVudW0gQ0lORU1BX01PREUgeworCU9QSl9PRkYgPSAwLAkJCS8qKiBOb3QgRGlnaXRhbCBDaW5lbWEqLworCU9QSl9DSU5FTUEyS18yNCA9IDEsCS8qKiAySyBEaWdpdGFsIENpbmVtYSBhdCAyNCBmcHMqLworCU9QSl9DSU5FTUEyS180OCA9IDIsCS8qKiAySyBEaWdpdGFsIENpbmVtYSBhdCA0OCBmcHMqLworCU9QSl9DSU5FTUE0S18yNCA9IDMJCS8qKiA0SyBEaWdpdGFsIENpbmVtYSBhdCAyNCBmcHMqLworfU9QSl9DSU5FTUFfTU9ERTsKKworLyoqIAorICogUHJvZ3Jlc3Npb24gb3JkZXIKKyAqICovCit0eXBlZGVmIGVudW0gUFJPR19PUkRFUiB7CisJT1BKX1BST0dfVU5LTk9XTiA9IC0xLAkvKio8IHBsYWNlLWhvbGRlciAqLworCU9QSl9MUkNQID0gMCwJCQkvKio8IGxheWVyLXJlc29sdXRpb24tY29tcG9uZW50LXByZWNpbmN0IG9yZGVyICovCisJT1BKX1JMQ1AgPSAxLAkJCS8qKjwgcmVzb2x1dGlvbi1sYXllci1jb21wb25lbnQtcHJlY2luY3Qgb3JkZXIgKi8KKwlPUEpfUlBDTCA9IDIsCQkJLyoqPCByZXNvbHV0aW9uLXByZWNpbmN0LWNvbXBvbmVudC1sYXllciBvcmRlciAqLworCU9QSl9QQ1JMID0gMywJCQkvKio8IHByZWNpbmN0LWNvbXBvbmVudC1yZXNvbHV0aW9uLWxheWVyIG9yZGVyICovCisJT1BKX0NQUkwgPSA0CQkJLyoqPCBjb21wb25lbnQtcHJlY2luY3QtcmVzb2x1dGlvbi1sYXllciBvcmRlciAqLworfSBPUEpfUFJPR19PUkRFUjsKKworLyoqCisgKiBTdXBwb3J0ZWQgaW1hZ2UgY29sb3Igc3BhY2VzCisqLwordHlwZWRlZiBlbnVtIENPTE9SX1NQQUNFIHsKKwlPUEpfQ0xSU1BDX1VOS05PV04gPSAtMSwJLyoqPCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBsaWJyYXJ5ICovCisJT1BKX0NMUlNQQ19VTlNQRUNJRklFRCA9IDAsCS8qKjwgbm90IHNwZWNpZmllZCBpbiB0aGUgY29kZXN0cmVhbSAqLyAKKwlPUEpfQ0xSU1BDX1NSR0IgPSAxLAkJLyoqPCBzUkdCICovCisJT1BKX0NMUlNQQ19HUkFZID0gMiwJCS8qKjwgZ3JheXNjYWxlICovCisJT1BKX0NMUlNQQ19TWUNDID0gMywJCS8qKjwgWVVWICovCisgIE9QSl9DTFJTUENfRVlDQyA9IDQJCS8qKjwgZS1ZQ0MgKi8KK30gT1BKX0NPTE9SX1NQQUNFOworCisvKioKKyAqIFN1cHBvcnRlZCBjb2RlYworKi8KK3R5cGVkZWYgZW51bSBDT0RFQ19GT1JNQVQgeworCU9QSl9DT0RFQ19VTktOT1dOID0gLTEsCS8qKjwgcGxhY2UtaG9sZGVyICovCisJT1BKX0NPREVDX0oySyAgPSAwLAkJLyoqPCBKUEVHLTIwMDAgY29kZXN0cmVhbSA6IHJlYWQvd3JpdGUgKi8KKwlPUEpfQ09ERUNfSlBUICA9IDEsCQkvKio8IEpQVC1zdHJlYW0gKEpQRUcgMjAwMCwgSlBJUCkgOiByZWFkIG9ubHkgKi8KKwlPUEpfQ09ERUNfSlAyICA9IDIgCQkvKio8IEpQRUctMjAwMCBmaWxlIGZvcm1hdCA6IHJlYWQvd3JpdGUgKi8KK30gT1BKX0NPREVDX0ZPUk1BVDsKKworCisvKiAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIGV2ZW50IG1hbmFnZXIgdHlwZWRlZiBkZWZpbml0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworLyoqCisgKiBDYWxsYmFjayBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIGV2ZW50cworICogQHBhcmFtIG1zZyAgICAgICAgICAgICAgIEV2ZW50IG1lc3NhZ2UKKyAqIEBwYXJhbSBjbGllbnRfZGF0YSAgICAgICBDbGllbnQgb2JqZWN0IHdoZXJlIHdpbGwgYmUgcmV0dXJuIHRoZSBldmVudCBtZXNzYWdlIAorICogKi8KK3R5cGVkZWYgdm9pZCAoKm9wal9tc2dfY2FsbGJhY2spIChjb25zdCBjaGFyICptc2csIHZvaWQgKmNsaWVudF9kYXRhKTsKKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBjb2RlYyB0eXBlZGVmIGRlZmluaXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworCisvKioKKyAqIFByb2dyZXNzaW9uIG9yZGVyIGNoYW5nZXMKKyAqIAorICovCit0eXBlZGVmIHN0cnVjdCBvcGpfcG9jIHsKKwkvKiogUmVzb2x1dGlvbiBudW0gc3RhcnQsIENvbXBvbmVudCBudW0gc3RhcnQsIGdpdmVuIGJ5IFBPQyAqLworCU9QSl9VSU5UMzIgcmVzbm8wLCBjb21wbm8wOworCS8qKiBMYXllciBudW0gZW5kLFJlc29sdXRpb24gbnVtIGVuZCwgQ29tcG9uZW50IG51bSBlbmQsIGdpdmVuIGJ5IFBPQyAqLworCU9QSl9VSU5UMzIgbGF5bm8xLCByZXNubzEsIGNvbXBubzE7CisJLyoqIExheWVyIG51bSBzdGFydCxQcmVjaW5jdCBudW0gc3RhcnQsIFByZWNpbmN0IG51bSBlbmQgKi8KKwlPUEpfVUlOVDMyIGxheW5vMCwgcHJlY25vMCwgcHJlY25vMTsKKwkvKiogUHJvZ3Jlc3Npb24gb3JkZXIgZW51bSovCisJT1BKX1BST0dfT1JERVIgcHJnMSxwcmc7CisJLyoqIFByb2dyZXNzaW9uIG9yZGVyIHN0cmluZyovCisJT1BKX0NIQVIgcHJvZ29yZGVyWzVdOworCS8qKiBUaWxlIG51bWJlciAqLworCU9QSl9VSU5UMzIgdGlsZTsKKwkvKiogU3RhcnQgYW5kIGVuZCB2YWx1ZXMgZm9yIFRpbGUgd2lkdGggYW5kIGhlaWdodCovCisJT1BKX0lOVDMyIHR4MCx0eDEsdHkwLHR5MTsKKwkvKiogU3RhcnQgdmFsdWUsIGluaXRpYWxpc2VkIGluIHBpX2luaXRpYWxpc2VfZW5jb2RlKi8KKwlPUEpfVUlOVDMyIGxheVMsIHJlc1MsIGNvbXBTLCBwcmNTOworCS8qKiBFbmQgdmFsdWUsIGluaXRpYWxpc2VkIGluIHBpX2luaXRpYWxpc2VfZW5jb2RlICovCisJT1BKX1VJTlQzMiBsYXlFLCByZXNFLCBjb21wRSwgcHJjRTsKKwkvKiogU3RhcnQgYW5kIGVuZCB2YWx1ZXMgb2YgVGlsZSB3aWR0aCBhbmQgaGVpZ2h0LCBpbml0aWFsaXNlZCBpbiBwaV9pbml0aWFsaXNlX2VuY29kZSovCisJT1BKX1VJTlQzMiB0eFMsdHhFLHR5Uyx0eUUsZHgsZHk7CisJLyoqIFRlbXBvcmFyeSB2YWx1ZXMgZm9yIFRpbGUgcGFydHMsIGluaXRpYWxpc2VkIGluIHBpX2NyZWF0ZV9lbmNvZGUgKi8KKwlPUEpfVUlOVDMyIGxheV90LCByZXNfdCwgY29tcF90LCBwcmNfdCx0eDBfdCx0eTBfdDsKK30gb3BqX3BvY190OworCisvKioKKyAqIENvbXByZXNzaW9uIHBhcmFtZXRlcnMKKyAqICovCit0eXBlZGVmIHN0cnVjdCBvcGpfY3BhcmFtZXRlcnMgeworCS8qKiBzaXplIG9mIHRpbGU6IHRpbGVfc2l6ZV9vbiA9IGZhbHNlIChub3QgaW4gYXJndW1lbnQpIG9yID0gdHJ1ZSAoaW4gYXJndW1lbnQpICovCisJT1BKX0JPT0wgdGlsZV9zaXplX29uOworCS8qKiBYVE9zaXogKi8KKwlpbnQgY3BfdHgwOworCS8qKiBZVE9zaXogKi8KKwlpbnQgY3BfdHkwOworCS8qKiBYVHNpeiAqLworCWludCBjcF90ZHg7CisJLyoqIFlUc2l6ICovCisJaW50IGNwX3RkeTsKKwkvKiogYWxsb2NhdGlvbiBieSByYXRlL2Rpc3RvcnRpb24gKi8KKwlpbnQgY3BfZGlzdG9fYWxsb2M7CisJLyoqIGFsbG9jYXRpb24gYnkgZml4ZWQgbGF5ZXIgKi8KKwlpbnQgY3BfZml4ZWRfYWxsb2M7CisJLyoqIGFkZCBmaXhlZF9xdWFsaXR5ICovCisJaW50IGNwX2ZpeGVkX3F1YWxpdHk7CisJLyoqIGZpeGVkIGxheWVyICovCisJaW50ICpjcF9tYXRyaWNlOworCS8qKiBjb21tZW50IGZvciBjb2RpbmcgKi8KKwljaGFyICpjcF9jb21tZW50OworCS8qKiBjc3R5IDogY29kaW5nIHN0eWxlICovCisJaW50IGNzdHk7CisJLyoqIHByb2dyZXNzaW9uIG9yZGVyIChkZWZhdWx0IE9QSl9MUkNQKSAqLworCU9QSl9QUk9HX09SREVSIHByb2dfb3JkZXI7CisJLyoqIHByb2dyZXNzaW9uIG9yZGVyIGNoYW5nZXMgKi8KKwlvcGpfcG9jX3QgUE9DWzMyXTsKKwkvKiogbnVtYmVyIG9mIHByb2dyZXNzaW9uIG9yZGVyIGNoYW5nZXMgKFBPQyksIGRlZmF1bHQgdG8gMCAqLworCU9QSl9VSU5UMzIgbnVtcG9jczsKKwkvKiogbnVtYmVyIG9mIGxheWVycyAqLworCWludCB0Y3BfbnVtbGF5ZXJzOworCS8qKiByYXRlcyBvZiBsYXllcnMgKi8KKwlmbG9hdCB0Y3BfcmF0ZXNbMTAwXTsKKwkvKiogZGlmZmVyZW50IHBzbnIgZm9yIHN1Y2Nlc3NpdmUgbGF5ZXJzICovCisJZmxvYXQgdGNwX2Rpc3RvcmF0aW9bMTAwXTsKKwkvKiogbnVtYmVyIG9mIHJlc29sdXRpb25zICovCisJaW50IG51bXJlc29sdXRpb247CisJLyoqIGluaXRpYWwgY29kZSBibG9jayB3aWR0aCwgZGVmYXVsdCB0byA2NCAqLworIAlpbnQgY2Jsb2Nrd19pbml0OworCS8qKiBpbml0aWFsIGNvZGUgYmxvY2sgaGVpZ2h0LCBkZWZhdWx0IHRvIDY0ICovCisJaW50IGNibG9ja2hfaW5pdDsKKwkvKiogbW9kZSBzd2l0Y2ggKGNibGtfc3R5bGUpICovCisJaW50IG1vZGU7CisJLyoqIDEgOiB1c2UgdGhlIGlycmV2ZXJzaWJsZSBEV1QgOS03LCAwIDogdXNlIGxvc3NsZXNzIGNvbXByZXNzaW9uIChkZWZhdWx0KSAqLworCWludCBpcnJldmVyc2libGU7CisJLyoqIHJlZ2lvbiBvZiBpbnRlcmVzdDogYWZmZWN0ZWQgY29tcG9uZW50IGluIFswLi4zXSwgLTEgbWVhbnMgbm8gUk9JICovCisJaW50IHJvaV9jb21wbm87CisJLyoqIHJlZ2lvbiBvZiBpbnRlcmVzdDogdXBzaGlmdCB2YWx1ZSAqLworCWludCByb2lfc2hpZnQ7CisJLyogbnVtYmVyIG9mIHByZWNpbmN0IHNpemUgc3BlY2lmaWNhdGlvbnMgKi8KKwlpbnQgcmVzX3NwZWM7CisJLyoqIGluaXRpYWwgcHJlY2luY3Qgd2lkdGggKi8KKwlpbnQgcHJjd19pbml0W09QSl9KMktfTUFYUkxWTFNdOworCS8qKiBpbml0aWFsIHByZWNpbmN0IGhlaWdodCAqLworCWludCBwcmNoX2luaXRbT1BKX0oyS19NQVhSTFZMU107CisKKwkvKipAbmFtZSBjb21tYW5kIGxpbmUgZW5jb2RlciBwYXJhbWV0ZXJzIChub3QgdXNlZCBpbnNpZGUgdGhlIGxpYnJhcnkpICovCisJLypAeyovCisJLyoqIGlucHV0IGZpbGUgbmFtZSAqLworCWNoYXIgaW5maWxlW09QSl9QQVRIX0xFTl07CisJLyoqIG91dHB1dCBmaWxlIG5hbWUgKi8KKwljaGFyIG91dGZpbGVbT1BKX1BBVEhfTEVOXTsKKwkvKiogREVQUkVDQVRFRC4gSW5kZXggZ2VuZXJhdGlvbiBpcyBub3cgaGFuZGVsZCB3aXRoIHRoZSBvcGpfZW5jb2RlX3dpdGhfaW5mbygpIGZ1bmN0aW9uLiBTZXQgdG8gTlVMTCAqLworCWludCBpbmRleF9vbjsKKwkvKiogREVQUkVDQVRFRC4gSW5kZXggZ2VuZXJhdGlvbiBpcyBub3cgaGFuZGVsZCB3aXRoIHRoZSBvcGpfZW5jb2RlX3dpdGhfaW5mbygpIGZ1bmN0aW9uLiBTZXQgdG8gTlVMTCAqLworCWNoYXIgaW5kZXhbT1BKX1BBVEhfTEVOXTsKKwkvKiogc3ViaW1hZ2UgZW5jb2Rpbmc6IG9yaWdpbiBpbWFnZSBvZmZzZXQgaW4geCBkaXJlY3Rpb24gKi8KKwlpbnQgaW1hZ2Vfb2Zmc2V0X3gwOworCS8qKiBzdWJpbWFnZSBlbmNvZGluZzogb3JpZ2luIGltYWdlIG9mZnNldCBpbiB5IGRpcmVjdGlvbiAqLworCWludCBpbWFnZV9vZmZzZXRfeTA7CisJLyoqIHN1YnNhbXBsaW5nIHZhbHVlIGZvciBkeCAqLworCWludCBzdWJzYW1wbGluZ19keDsKKwkvKiogc3Vic2FtcGxpbmcgdmFsdWUgZm9yIGR5ICovCisJaW50IHN1YnNhbXBsaW5nX2R5OworCS8qKiBpbnB1dCBmaWxlIGZvcm1hdCAwOiBQR1gsIDE6IFB4TSwgMjogQk1QIDM6VElGKi8KKwlpbnQgZGVjb2RfZm9ybWF0OworCS8qKiBvdXRwdXQgZmlsZSBmb3JtYXQgMDogSjJLLCAxOiBKUDIsIDI6IEpQVCAqLworCWludCBjb2RfZm9ybWF0OworCS8qQH0qLworCisvKiBVbmlQRz4+ICovIC8qIE5PVCBZRVQgVVNFRCBJTiBUSEUgVjIgVkVSU0lPTiBPRiBPUEVOSlBFRyAqLworCS8qKkBuYW1lIEpQV0wgZW5jb2RpbmcgcGFyYW1ldGVycyAqLworCS8qQHsqLworCS8qKiBlbmFibGVzIHdyaXRpbmcgb2YgRVBDIGluIE1ILCB0aHVzIGFjdGl2YXRpbmcgSlBXTCAqLworCU9QSl9CT09MIGpwd2xfZXBjX29uOworCS8qKiBlcnJvciBwcm90ZWN0aW9uIG1ldGhvZCBmb3IgTUggKDAsMSwxNiwzMiwzNy0xMjgpICovCisJaW50IGpwd2xfaHByb3RfTUg7CisJLyoqIHRpbGUgbnVtYmVyIG9mIGhlYWRlciBwcm90ZWN0aW9uIHNwZWNpZmljYXRpb24gKD49MCkgKi8KKwlpbnQganB3bF9ocHJvdF9UUEhfdGlsZW5vW0pQV0xfTUFYX05PX1RJTEVTUEVDU107CisJLyoqIGVycm9yIHByb3RlY3Rpb24gbWV0aG9kcyBmb3IgVFBIcyAoMCwxLDE2LDMyLDM3LTEyOCkgKi8KKwlpbnQganB3bF9ocHJvdF9UUEhbSlBXTF9NQVhfTk9fVElMRVNQRUNTXTsKKwkvKiogdGlsZSBudW1iZXIgb2YgcGFja2V0IHByb3RlY3Rpb24gc3BlY2lmaWNhdGlvbiAoPj0wKSAqLworCWludCBqcHdsX3Bwcm90X3RpbGVub1tKUFdMX01BWF9OT19QQUNLU1BFQ1NdOworCS8qKiBwYWNrZXQgbnVtYmVyIG9mIHBhY2tldCBwcm90ZWN0aW9uIHNwZWNpZmljYXRpb24gKD49MCkgKi8KKwlpbnQganB3bF9wcHJvdF9wYWNrbm9bSlBXTF9NQVhfTk9fUEFDS1NQRUNTXTsKKwkvKiogZXJyb3IgcHJvdGVjdGlvbiBtZXRob2RzIGZvciBwYWNrZXRzICgwLDEsMTYsMzIsMzctMTI4KSAqLworCWludCBqcHdsX3Bwcm90W0pQV0xfTUFYX05PX1BBQ0tTUEVDU107CisJLyoqIGVuYWJsZXMgd3JpdGluZyBvZiBFU0QsICgwPW5vLzEvMiBieXRlcykgKi8KKwlpbnQganB3bF9zZW5zX3NpemU7CisJLyoqIHNlbnNpdGl2aXR5IGFkZHJlc3Npbmcgc2l6ZSAoMD1hdXRvLzIvNCBieXRlcykgKi8KKwlpbnQganB3bF9zZW5zX2FkZHI7CisJLyoqIHNlbnNpdGl2aXR5IHJhbmdlICgwLTMpICovCisJaW50IGpwd2xfc2Vuc19yYW5nZTsKKwkvKiogc2Vuc2l0aXZpdHkgbWV0aG9kIGZvciBNSCAoLTE9bm8sMC03KSAqLworCWludCBqcHdsX3NlbnNfTUg7CisJLyoqIHRpbGUgbnVtYmVyIG9mIHNlbnNpdGl2aXR5IHNwZWNpZmljYXRpb24gKD49MCkgKi8KKwlpbnQganB3bF9zZW5zX1RQSF90aWxlbm9bSlBXTF9NQVhfTk9fVElMRVNQRUNTXTsKKwkvKiogc2Vuc2l0aXZpdHkgbWV0aG9kcyBmb3IgVFBIcyAoLTE9bm8sMC03KSAqLworCWludCBqcHdsX3NlbnNfVFBIW0pQV0xfTUFYX05PX1RJTEVTUEVDU107CisJLypAfSovCisvKiA8PFVuaVBHICovCisKKwkvKiogRGlnaXRhbCBDaW5lbWEgY29tcGxpYW5jZSAwLW5vdCBjb21wbGlhbnQsIDEtY29tcGxpYW50Ki8KKwlPUEpfQ0lORU1BX01PREUgY3BfY2luZW1hOworCS8qKiBNYXhpbXVtIHJhdGUgZm9yIGVhY2ggY29tcG9uZW50LiBJZiA9PSAwLCBjb21wb25lbnQgc2l6ZSBsaW1pdGF0aW9uIGlzIG5vdCBjb25zaWRlcmVkICovCisJaW50IG1heF9jb21wX3NpemU7CisJLyoqIFByb2ZpbGUgbmFtZSovCisJT1BKX1JTSVpfQ0FQQUJJTElUSUVTIGNwX3JzaXo7CisJLyoqIFRpbGUgcGFydCBnZW5lcmF0aW9uKi8KKwljaGFyIHRwX29uOworCS8qKiBGbGFnIGZvciBUaWxlIHBhcnQgZ2VuZXJhdGlvbiovCisJY2hhciB0cF9mbGFnOworCS8qKiBNQ1QgKG11bHRpcGxlIGNvbXBvbmVudCB0cmFuc2Zvcm0pICovCisJY2hhciB0Y3BfbWN0OworCS8qKiBFbmFibGUgSlBJUCBpbmRleGluZyovCisJT1BKX0JPT0wganBpcF9vbjsKKwkvKiogTmFpdmUgaW1wbGVtZW50YXRpb24gb2YgTUNUIHJlc3RyaWN0ZWQgdG8gYSBzaW5nbGUgcmV2ZXJzaWJsZSBhcnJheSBiYXNlZCAKKyAgICAgICAgZW5jb2Rpbmcgd2l0aG91dCBvZmZzZXQgY29uY2VybmluZyBhbGwgdGhlIGNvbXBvbmVudHMuICovCisJdm9pZCAqIG1jdF9kYXRhOworfSBvcGpfY3BhcmFtZXRlcnNfdDsgIAorCisjZGVmaW5lIE9QSl9EUEFSQU1FVEVSU19JR05PUkVfUENMUl9DTUFQX0NERUZfRkxBRwkweDAwMDEKKworLyoqCisgKiBEZWNvbXByZXNzaW9uIHBhcmFtZXRlcnMKKyAqICovCit0eXBlZGVmIHN0cnVjdCBvcGpfZHBhcmFtZXRlcnMgeworCS8qKiAKKwlTZXQgdGhlIG51bWJlciBvZiBoaWdoZXN0IHJlc29sdXRpb24gbGV2ZWxzIHRvIGJlIGRpc2NhcmRlZC4gCisJVGhlIGltYWdlIHJlc29sdXRpb24gaXMgZWZmZWN0aXZlbHkgZGl2aWRlZCBieSAyIHRvIHRoZSBwb3dlciBvZiB0aGUgbnVtYmVyIG9mIGRpc2NhcmRlZCBsZXZlbHMuIAorCVRoZSByZWR1Y2UgZmFjdG9yIGlzIGxpbWl0ZWQgYnkgdGhlIHNtYWxsZXN0IHRvdGFsIG51bWJlciBvZiBkZWNvbXBvc2l0aW9uIGxldmVscyBhbW9uZyB0aWxlcy4KKwlpZiAhPSAwLCB0aGVuIG9yaWdpbmFsIGRpbWVuc2lvbiBkaXZpZGVkIGJ5IDJeKHJlZHVjZSk7IAorCWlmID09IDAgb3Igbm90IHVzZWQsIGltYWdlIGlzIGRlY29kZWQgdG8gdGhlIGZ1bGwgcmVzb2x1dGlvbiAKKwkqLworCU9QSl9VSU5UMzIgY3BfcmVkdWNlOworCS8qKiAKKwlTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHF1YWxpdHkgbGF5ZXJzIHRvIGRlY29kZS4gCisJSWYgdGhlcmUgYXJlIGxlc3MgcXVhbGl0eSBsYXllcnMgdGhhbiB0aGUgc3BlY2lmaWVkIG51bWJlciwgYWxsIHRoZSBxdWFsaXR5IGxheWVycyBhcmUgZGVjb2RlZC4KKwlpZiAhPSAwLCB0aGVuIG9ubHkgdGhlIGZpcnN0ICJsYXllciIgbGF5ZXJzIGFyZSBkZWNvZGVkOyAKKwlpZiA9PSAwIG9yIG5vdCB1c2VkLCBhbGwgdGhlIHF1YWxpdHkgbGF5ZXJzIGFyZSBkZWNvZGVkIAorCSovCisJT1BKX1VJTlQzMiBjcF9sYXllcjsKKworCS8qKkBuYW1lIGNvbW1hbmQgbGluZSBkZWNvZGVyIHBhcmFtZXRlcnMgKG5vdCB1c2VkIGluc2lkZSB0aGUgbGlicmFyeSkgKi8KKwkvKkB7Ki8KKwkvKiogaW5wdXQgZmlsZSBuYW1lICovCisJY2hhciBpbmZpbGVbT1BKX1BBVEhfTEVOXTsKKwkvKiogb3V0cHV0IGZpbGUgbmFtZSAqLworCWNoYXIgb3V0ZmlsZVtPUEpfUEFUSF9MRU5dOworCS8qKiBpbnB1dCBmaWxlIGZvcm1hdCAwOiBKMkssIDE6IEpQMiwgMjogSlBUICovCisJaW50IGRlY29kX2Zvcm1hdDsKKwkvKiogb3V0cHV0IGZpbGUgZm9ybWF0IDA6IFBHWCwgMTogUHhNLCAyOiBCTVAgKi8KKwlpbnQgY29kX2Zvcm1hdDsKKworCS8qKiBEZWNvZGluZyBhcmVhIGxlZnQgYm91bmRhcnkgKi8KKwlPUEpfVUlOVDMyIERBX3gwOworCS8qKiBEZWNvZGluZyBhcmVhIHJpZ2h0IGJvdW5kYXJ5ICovCisJT1BKX1VJTlQzMiBEQV94MTsKKwkvKiogRGVjb2RpbmcgYXJlYSB1cCBib3VuZGFyeSAqLworCU9QSl9VSU5UMzIgREFfeTA7CisJLyoqIERlY29kaW5nIGFyZWEgYm90dG9tIGJvdW5kYXJ5ICovCisJT1BKX1VJTlQzMiBEQV95MTsKKwkvKiogVmVyYm9zZSBtb2RlICovCisJT1BKX0JPT0wgbV92ZXJib3NlOworCisJLyoqIHRpbGUgbnVtYmVyIG90IHRoZSBkZWNvZGVkIHRpbGUqLworCU9QSl9VSU5UMzIgdGlsZV9pbmRleDsKKwkvKiogTmIgb2YgdGlsZSB0byBkZWNvZGUgKi8KKwlPUEpfVUlOVDMyIG5iX3RpbGVfdG9fZGVjb2RlOworCisJLypAfSovCisKKy8qIFVuaVBHPj4gKi8gLyogTk9UIFlFVCBVU0VEIElOIFRIRSBWMiBWRVJTSU9OIE9GIE9QRU5KUEVHICovCisJLyoqQG5hbWUgSlBXTCBkZWNvZGluZyBwYXJhbWV0ZXJzICovCisJLypAeyovCisJLyoqIGFjdGl2YXRlcyB0aGUgSlBXTCBjb3JyZWN0aW9uIGNhcGFiaWxpdGllcyAqLworCU9QSl9CT09MIGpwd2xfY29ycmVjdDsKKwkvKiogZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbXBvbmVudHMgKi8KKwlpbnQganB3bF9leHBfY29tcHM7CisJLyoqIG1heGltdW0gbnVtYmVyIG9mIHRpbGVzICovCisJaW50IGpwd2xfbWF4X3RpbGVzOworCS8qQH0qLworLyogPDxVbmlQRyAqLworCisJdW5zaWduZWQgaW50IGZsYWdzOworCit9IG9wal9kcGFyYW1ldGVyc190OworCisKKy8qKgorICogSlBFRzIwMDAgY29kZWMgVjIuCisgKiAqLwordHlwZWRlZiB2b2lkICogb3BqX2NvZGVjX3Q7CisKKy8qIAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgSS9PIHN0cmVhbSB0eXBlZGVmIGRlZmluaXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworCisvKioKKyAqIFN0cmVhbSBvcGVuIGZsYWdzLgorICogKi8KKy8qKiBUaGUgc3RyZWFtIHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuICovCisjZGVmaW5lIE9QSl9TVFJFQU1fUkVBRAlPUEpfVFJVRQorLyoqIFRoZSBzdHJlYW0gd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4gKi8KKyNkZWZpbmUgT1BKX1NUUkVBTV9XUklURSBPUEpfRkFMU0UKKworLyoKKyAqIENhbGxiYWNrIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3IgcmVhZCBmdW5jdGlvbgorICovCit0eXBlZGVmIE9QSl9TSVpFX1QgKCogb3BqX3N0cmVhbV9yZWFkX2ZuKSAodm9pZCAqIHBfYnVmZmVyLCBPUEpfU0laRV9UIHBfbmJfYnl0ZXMsIHZvaWQgKiBwX3VzZXJfZGF0YSkgOworCisvKgorICogQ2FsbGJhY2sgZnVuY3Rpb24gcHJvdG90eXBlIGZvciB3cml0ZSBmdW5jdGlvbgorICovCit0eXBlZGVmIE9QSl9TSVpFX1QgKCogb3BqX3N0cmVhbV93cml0ZV9mbikgKHZvaWQgKiBwX2J1ZmZlciwgT1BKX1NJWkVfVCBwX25iX2J5dGVzLCB2b2lkICogcF91c2VyX2RhdGEpIDsKKworLyoKKyAqIENhbGxiYWNrIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3Igc2tpcCBmdW5jdGlvbgorICovCit0eXBlZGVmIE9QSl9PRkZfVCAoKiBvcGpfc3RyZWFtX3NraXBfZm4pIChPUEpfT0ZGX1QgcF9uYl9ieXRlcywgdm9pZCAqIHBfdXNlcl9kYXRhKSA7CisKKy8qCisgKiBDYWxsYmFjayBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIHNlZWsgZnVuY3Rpb24KKyAqLwordHlwZWRlZiBPUEpfQk9PTCAoKiBvcGpfc3RyZWFtX3NlZWtfZm4pIChPUEpfT0ZGX1QgcF9uYl9ieXRlcywgdm9pZCAqIHBfdXNlcl9kYXRhKSA7CisKKy8qCisgKiBDYWxsYmFjayBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIGZyZWUgdXNlciBkYXRhIGZ1bmN0aW9uCisgKi8KK3R5cGVkZWYgdm9pZCAoKiBvcGpfc3RyZWFtX2ZyZWVfdXNlcl9kYXRhX2ZuKSAodm9pZCAqIHBfdXNlcl9kYXRhKSA7CisKKy8qCisgKiBKUEVHMjAwMCBTdHJlYW0uCisgKi8KK3R5cGVkZWYgdm9pZCAqIG9wal9zdHJlYW1fdDsKKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBpbWFnZSB0eXBlZGVmIGRlZmluaXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworCisvKioKKyAqIERlZmluZXMgYSBzaW5nbGUgaW1hZ2UgY29tcG9uZW50CisgKiAqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX2ltYWdlX2NvbXAgeworCS8qKiBYUnNpejogaG9yaXpvbnRhbCBzZXBhcmF0aW9uIG9mIGEgc2FtcGxlIG9mIGl0aCBjb21wb25lbnQgd2l0aCByZXNwZWN0IHRvIHRoZSByZWZlcmVuY2UgZ3JpZCAqLworCU9QSl9VSU5UMzIgZHg7CisJLyoqIFlSc2l6OiB2ZXJ0aWNhbCBzZXBhcmF0aW9uIG9mIGEgc2FtcGxlIG9mIGl0aCBjb21wb25lbnQgd2l0aCByZXNwZWN0IHRvIHRoZSByZWZlcmVuY2UgZ3JpZCAqLworCU9QSl9VSU5UMzIgZHk7CisJLyoqIGRhdGEgd2lkdGggKi8KKwlPUEpfVUlOVDMyIHc7CisJLyoqIGRhdGEgaGVpZ2h0ICovCisJT1BKX1VJTlQzMiBoOworCS8qKiB4IGNvbXBvbmVudCBvZmZzZXQgY29tcGFyZWQgdG8gdGhlIHdob2xlIGltYWdlICovCisJT1BKX1VJTlQzMiB4MDsKKwkvKiogeSBjb21wb25lbnQgb2Zmc2V0IGNvbXBhcmVkIHRvIHRoZSB3aG9sZSBpbWFnZSAqLworCU9QSl9VSU5UMzIgeTA7CisJLyoqIHByZWNpc2lvbiAqLworCU9QSl9VSU5UMzIgcHJlYzsKKwkvKiogaW1hZ2UgZGVwdGggaW4gYml0cyAqLworCU9QSl9VSU5UMzIgYnBwOworCS8qKiBzaWduZWQgKDEpIC8gdW5zaWduZWQgKDApICovCisJT1BKX1VJTlQzMiBzZ25kOworCS8qKiBudW1iZXIgb2YgZGVjb2RlZCByZXNvbHV0aW9uICovCisJT1BKX1VJTlQzMiByZXNub19kZWNvZGVkOworCS8qKiBudW1iZXIgb2YgZGl2aXNpb24gYnkgMiBvZiB0aGUgb3V0IGltYWdlIGNvbXBhcmVkIHRvIHRoZSBvcmlnaW5hbCBzaXplIG9mIGltYWdlICovCisJT1BKX1VJTlQzMiBmYWN0b3I7CisJLyoqIGltYWdlIGNvbXBvbmVudCBkYXRhICovCisJT1BKX0lOVDMyICpkYXRhOworICAvKiogYWxwaGEgY2hhbm5lbCAqLworICBPUEpfVUlOVDE2IGFscGhhOworfSBvcGpfaW1hZ2VfY29tcF90OworCisvKiogCisgKiBEZWZpbmVzIGltYWdlIGRhdGEgYW5kIGNoYXJhY3RlcmlzdGljcworICogKi8KK3R5cGVkZWYgc3RydWN0IG9wal9pbWFnZSB7CisJLyoqIFhPc2l6OiBob3Jpem9udGFsIG9mZnNldCBmcm9tIHRoZSBvcmlnaW4gb2YgdGhlIHJlZmVyZW5jZSBncmlkIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGltYWdlIGFyZWEgKi8KKwlPUEpfVUlOVDMyIHgwOworCS8qKiBZT3NpejogdmVydGljYWwgb2Zmc2V0IGZyb20gdGhlIG9yaWdpbiBvZiB0aGUgcmVmZXJlbmNlIGdyaWQgdG8gdGhlIHRvcCBzaWRlIG9mIHRoZSBpbWFnZSBhcmVhICovCisJT1BKX1VJTlQzMiB5MDsKKwkvKiogWHNpejogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBncmlkICovCisJT1BKX1VJTlQzMiB4MTsKKwkvKiogWXNpejogaGVpZ2h0IG9mIHRoZSByZWZlcmVuY2UgZ3JpZCAqLworCU9QSl9VSU5UMzIgeTE7CisJLyoqIG51bWJlciBvZiBjb21wb25lbnRzIGluIHRoZSBpbWFnZSAqLworCU9QSl9VSU5UMzIgbnVtY29tcHM7CisJLyoqIGNvbG9yIHNwYWNlOiBzUkdCLCBHcmV5c2NhbGUgb3IgWVVWICovCisJT1BKX0NPTE9SX1NQQUNFIGNvbG9yX3NwYWNlOworCS8qKiBpbWFnZSBjb21wb25lbnRzICovCisJb3BqX2ltYWdlX2NvbXBfdCAqY29tcHM7CisJLyoqICdyZXN0cmljdGVkJyBJQ0MgcHJvZmlsZSAqLworCU9QSl9CWVRFICppY2NfcHJvZmlsZV9idWY7CisJLyoqIHNpemUgb2YgSUNDIHByb2ZpbGUgKi8KKwlPUEpfVUlOVDMyIGljY19wcm9maWxlX2xlbjsKKworCU9QSl9JTlQ4ICB1c2VDb2xvclNwYWNlOyAgLy9saWFuZworfSBvcGpfaW1hZ2VfdDsKKworCisvKioKKyAqIENvbXBvbmVudCBwYXJhbWV0ZXJzIHN0cnVjdHVyZSB1c2VkIGJ5IHRoZSBvcGpfaW1hZ2VfY3JlYXRlIGZ1bmN0aW9uCisgKiAqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX2ltYWdlX2NvbXB0cGFybSB7CisJLyoqIFhSc2l6OiBob3Jpem9udGFsIHNlcGFyYXRpb24gb2YgYSBzYW1wbGUgb2YgaXRoIGNvbXBvbmVudCB3aXRoIHJlc3BlY3QgdG8gdGhlIHJlZmVyZW5jZSBncmlkICovCisJT1BKX1VJTlQzMiBkeDsKKwkvKiogWVJzaXo6IHZlcnRpY2FsIHNlcGFyYXRpb24gb2YgYSBzYW1wbGUgb2YgaXRoIGNvbXBvbmVudCB3aXRoIHJlc3BlY3QgdG8gdGhlIHJlZmVyZW5jZSBncmlkICovCisJT1BKX1VJTlQzMiBkeTsKKwkvKiogZGF0YSB3aWR0aCAqLworCU9QSl9VSU5UMzIgdzsKKwkvKiogZGF0YSBoZWlnaHQgKi8KKwlPUEpfVUlOVDMyIGg7CisJLyoqIHggY29tcG9uZW50IG9mZnNldCBjb21wYXJlZCB0byB0aGUgd2hvbGUgaW1hZ2UgKi8KKwlPUEpfVUlOVDMyIHgwOworCS8qKiB5IGNvbXBvbmVudCBvZmZzZXQgY29tcGFyZWQgdG8gdGhlIHdob2xlIGltYWdlICovCisJT1BKX1VJTlQzMiB5MDsKKwkvKiogcHJlY2lzaW9uICovCisJT1BKX1VJTlQzMiBwcmVjOworCS8qKiBpbWFnZSBkZXB0aCBpbiBiaXRzICovCisJT1BKX1VJTlQzMiBicHA7CisJLyoqIHNpZ25lZCAoMSkgLyB1bnNpZ25lZCAoMCkgKi8KKwlPUEpfVUlOVDMyIHNnbmQ7Cit9IG9wal9pbWFnZV9jbXB0cGFybV90OworCisKKy8qIAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgSW5mb3JtYXRpb24gb24gdGhlIEpQRUcgMjAwMCBjb2Rlc3RyZWFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworLyogUVVJVEUgRVhQRVJJTUVOVEFMIEZPUiBUSEUgTU9NRU5UICovCisKKy8qKgorICogSW5kZXggc3RydWN0dXJlIDogSW5mb3JtYXRpb24gY29uY2VybmluZyBhIHBhY2tldCBpbnNpZGUgdGlsZQorICogKi8KK3R5cGVkZWYgc3RydWN0IG9wal9wYWNrZXRfaW5mbyB7CisJLyoqIHBhY2tldCBzdGFydCBwb3NpdGlvbiAoaW5jbHVkaW5nIFNPUCBtYXJrZXIgaWYgaXQgZXhpc3RzKSAqLworCU9QSl9PRkZfVCBzdGFydF9wb3M7CisJLyoqIGVuZCBvZiBwYWNrZXQgaGVhZGVyIHBvc2l0aW9uIChpbmNsdWRpbmcgRVBIIG1hcmtlciBpZiBpdCBleGlzdHMpKi8KKwlPUEpfT0ZGX1QgZW5kX3BoX3BvczsKKwkvKiogcGFja2V0IGVuZCBwb3NpdGlvbiAqLworCU9QSl9PRkZfVCBlbmRfcG9zOworCS8qKiBwYWNrZXQgZGlzdG9yc2lvbiAqLworCWRvdWJsZSBkaXN0bzsKK30gb3BqX3BhY2tldF9pbmZvX3Q7CisKKworLyogVW5pUEc+PiAqLworLyoqCisgKiBNYXJrZXIgc3RydWN0dXJlCisgKiAqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX21hcmtlcl9pbmZvIHsKKwkvKiogbWFya2VyIHR5cGUgKi8KKwl1bnNpZ25lZCBzaG9ydCBpbnQgdHlwZTsKKwkvKiogcG9zaXRpb24gaW4gY29kZXN0cmVhbSAqLworCU9QSl9PRkZfVCBwb3M7CisJLyoqIGxlbmd0aCwgbWFya2VyIHZhbCBpbmNsdWRlZCAqLworCWludCBsZW47Cit9IG9wal9tYXJrZXJfaW5mb190OworLyogPDxVbmlQRyAqLworCisvKioKKyAqIEluZGV4IHN0cnVjdHVyZSA6IEluZm9ybWF0aW9uIGNvbmNlcm5pbmcgdGlsZS1wYXJ0cworKi8KK3R5cGVkZWYgc3RydWN0IG9wal90cF9pbmZvIHsKKwkvKiogc3RhcnQgcG9zaXRpb24gb2YgdGlsZSBwYXJ0ICovCisJaW50IHRwX3N0YXJ0X3BvczsKKwkvKiogZW5kIHBvc2l0aW9uIG9mIHRpbGUgcGFydCBoZWFkZXIgKi8KKwlpbnQgdHBfZW5kX2hlYWRlcjsKKwkvKiogZW5kIHBvc2l0aW9uIG9mIHRpbGUgcGFydCAqLworCWludCB0cF9lbmRfcG9zOworCS8qKiBzdGFydCBwYWNrZXQgb2YgdGlsZSBwYXJ0ICovCisJaW50IHRwX3N0YXJ0X3BhY2s7CisJLyoqIG51bWJlciBvZiBwYWNrZXRzIG9mIHRpbGUgcGFydCAqLworCWludCB0cF9udW1wYWNrczsKK30gb3BqX3RwX2luZm9fdDsKKworLyoqCisgKiBJbmRleCBzdHJ1Y3R1cmUgOiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGlsZXMKKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfdGlsZV9pbmZvIHsKKwkvKiogdmFsdWUgb2YgdGhyZXNoIGZvciBlYWNoIGxheWVyIGJ5IHRpbGUgY2ZyLiBNYXJjZWxhICAgKi8KKwlkb3VibGUgKnRocmVzaDsKKwkvKiogbnVtYmVyIG9mIHRpbGUgKi8KKwlpbnQgdGlsZW5vOworCS8qKiBzdGFydCBwb3NpdGlvbiAqLworCWludCBzdGFydF9wb3M7CisJLyoqIGVuZCBwb3NpdGlvbiBvZiB0aGUgaGVhZGVyICovCisJaW50IGVuZF9oZWFkZXI7CisJLyoqIGVuZCBwb3NpdGlvbiAqLworCWludCBlbmRfcG9zOworCS8qKiBwcmVjaW5jdCBudW1iZXIgZm9yIGVhY2ggcmVzb2x1dGlvbiBsZXZlbCAod2lkdGgpICovCisJaW50IHB3WzMzXTsKKwkvKiogcHJlY2luY3QgbnVtYmVyIGZvciBlYWNoIHJlc29sdXRpb24gbGV2ZWwgKGhlaWdodCkgKi8KKwlpbnQgcGhbMzNdOworCS8qKiBwcmVjaW5jdCBzaXplIChpbiBwb3dlciBvZiAyKSwgaW4gWCBmb3IgZWFjaCByZXNvbHV0aW9uIGxldmVsICovCisJaW50IHBkeFszM107CisJLyoqIHByZWNpbmN0IHNpemUgKGluIHBvd2VyIG9mIDIpLCBpbiBZIGZvciBlYWNoIHJlc29sdXRpb24gbGV2ZWwgKi8KKwlpbnQgcGR5WzMzXTsKKwkvKiogaW5mb3JtYXRpb24gY29uY2VybmluZyBwYWNrZXRzIGluc2lkZSB0aWxlICovCisJb3BqX3BhY2tldF9pbmZvX3QgKnBhY2tldDsKKwkvKiogYWRkIGZpeGVkX3F1YWxpdHkgKi8KKwlpbnQgbnVtcGl4OworCS8qKiBhZGQgZml4ZWRfcXVhbGl0eSAqLworCWRvdWJsZSBkaXN0b3RpbGU7CisgIAkvKiogbnVtYmVyIG9mIG1hcmtlcnMgKi8KKwlpbnQgbWFya251bTsKKwkvKiogbGlzdCBvZiBtYXJrZXJzICovCisJb3BqX21hcmtlcl9pbmZvX3QgKm1hcmtlcjsKKwkvKiogYWN0dWFsIHNpemUgb2YgbWFya2VycyBhcnJheSAqLworCWludCBtYXhtYXJrbnVtOworCS8qKiBudW1iZXIgb2YgdGlsZSBwYXJ0cyAqLworCWludCBudW1fdHBzOworCS8qKiBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRpbGUgcGFydHMgKi8KKwlvcGpfdHBfaW5mb190ICp0cDsKK30gb3BqX3RpbGVfaW5mb190OworCisvKioKKyAqIEluZGV4IHN0cnVjdHVyZSBvZiB0aGUgY29kZXN0cmVhbQorKi8KK3R5cGVkZWYgc3RydWN0IG9wal9jb2Rlc3RyZWFtX2luZm8geworCS8qKiBtYXhpbXVtIGRpc3RvcnRpb24gcmVkdWN0aW9uIG9uIHRoZSB3aG9sZSBpbWFnZSAoYWRkIGZvciBNYXJjZWxhKSAqLworCWRvdWJsZSBEX21heDsKKwkvKiogcGFja2V0IG51bWJlciAqLworCWludCBwYWNrbm87CisJLyoqIHdyaXRpbmcgdGhlIHBhY2tldCBpbiB0aGUgaW5kZXggd2l0aCB0Ml9lbmNvZGVfcGFja2V0cyAqLworCWludCBpbmRleF93cml0ZTsKKwkvKiogaW1hZ2Ugd2lkdGggKi8KKwlpbnQgaW1hZ2VfdzsKKwkvKiogaW1hZ2UgaGVpZ2h0ICovCisJaW50IGltYWdlX2g7CisJLyoqIHByb2dyZXNzaW9uIG9yZGVyICovCisJT1BKX1BST0dfT1JERVIgcHJvZzsKKwkvKiogdGlsZSBzaXplIGluIHggKi8KKwlpbnQgdGlsZV94OworCS8qKiB0aWxlIHNpemUgaW4geSAqLworCWludCB0aWxlX3k7CisJLyoqICovCisJaW50IHRpbGVfT3g7CisJLyoqICovCisJaW50IHRpbGVfT3k7CisJLyoqIG51bWJlciBvZiB0aWxlcyBpbiBYICovCisJaW50IHR3OworCS8qKiBudW1iZXIgb2YgdGlsZXMgaW4gWSAqLworCWludCB0aDsKKwkvKiogY29tcG9uZW50IG51bWJlcnMgKi8KKwlpbnQgbnVtY29tcHM7CisJLyoqIG51bWJlciBvZiBsYXllciAqLworCWludCBudW1sYXllcnM7CisJLyoqIG51bWJlciBvZiBkZWNvbXBvc2l0aW9uIGZvciBlYWNoIGNvbXBvbmVudCAqLworCWludCAqbnVtZGVjb21wb3M7CisvKiBVbmlQRz4+ICovCisJLyoqIG51bWJlciBvZiBtYXJrZXJzICovCisJaW50IG1hcmtudW07CisJLyoqIGxpc3Qgb2YgbWFya2VycyAqLworCW9wal9tYXJrZXJfaW5mb190ICptYXJrZXI7CisJLyoqIGFjdHVhbCBzaXplIG9mIG1hcmtlcnMgYXJyYXkgKi8KKwlpbnQgbWF4bWFya251bTsKKy8qIDw8VW5pUEcgKi8KKwkvKiogbWFpbiBoZWFkZXIgcG9zaXRpb24gKi8KKwlpbnQgbWFpbl9oZWFkX3N0YXJ0OworCS8qKiBtYWluIGhlYWRlciBwb3NpdGlvbiAqLworCWludCBtYWluX2hlYWRfZW5kOworCS8qKiBjb2Rlc3RyZWFtJ3Mgc2l6ZSAqLworCWludCBjb2Rlc3RyZWFtX3NpemU7CisJLyoqIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aWxlcyBpbnNpZGUgaW1hZ2UgKi8KKwlvcGpfdGlsZV9pbmZvX3QgKnRpbGU7Cit9IG9wal9jb2Rlc3RyZWFtX2luZm9fdDsKKworLyogPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBuZXcgb3V0cHV0IG1hbmFnbWVudCBvZiB0aGUgY29kZXN0cmVhbSBpbmZvcm1hdGlvbiBhbmQgaW5kZXggKi8KKworLyoqCisgKiBUaWxlLWNvbXBvbmVudCBjb2RpbmcgcGFyYW1ldGVycyBpbmZvcm1hdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBvcGpfdGNjcF9pbmZvCit7CisJLyoqIGNvbXBvbmVudCBpbmRleCAqLworCU9QSl9VSU5UMzIgY29tcG5vOworCS8qKiBjb2Rpbmcgc3R5bGUgKi8KKwlPUEpfVUlOVDMyIGNzdHk7CisJLyoqIG51bWJlciBvZiByZXNvbHV0aW9ucyAqLworCU9QSl9VSU5UMzIgbnVtcmVzb2x1dGlvbnM7CisJLyoqIGNvZGUtYmxvY2tzIHdpZHRoICovCisJT1BKX1VJTlQzMiBjYmxrdzsKKwkvKiogY29kZS1ibG9ja3MgaGVpZ2h0ICovCisJT1BKX1VJTlQzMiBjYmxraDsKKwkvKiogY29kZS1ibG9jayBjb2Rpbmcgc3R5bGUgKi8KKwlPUEpfVUlOVDMyIGNibGtzdHk7CisJLyoqIGRpc2NyZXRlIHdhdmVsZXQgdHJhbnNmb3JtIGlkZW50aWZpZXIgKi8KKwlPUEpfVUlOVDMyIHFtZmJpZDsKKwkvKiogcXVhbnRpc2F0aW9uIHN0eWxlICovCisJT1BKX1VJTlQzMiBxbnRzdHk7CisJLyoqIHN0ZXBzaXplcyB1c2VkIGZvciBxdWFudGl6YXRpb24gKi8KKwlPUEpfVUlOVDMyIHN0ZXBzaXplc19tYW50W09QSl9KMktfTUFYQkFORFNdOworCS8qKiBzdGVwc2l6ZXMgdXNlZCBmb3IgcXVhbnRpemF0aW9uICovCisJT1BKX1VJTlQzMiBzdGVwc2l6ZXNfZXhwbltPUEpfSjJLX01BWEJBTkRTXTsKKwkvKiogbnVtYmVyIG9mIGd1YXJkIGJpdHMgKi8KKwlPUEpfVUlOVDMyIG51bWdiaXRzOworCS8qKiBSZWdpb24gT2YgSW50ZXJlc3Qgc2hpZnQgKi8KKwlPUEpfSU5UMzIgcm9pc2hpZnQ7CisJLyoqIHByZWNpbmN0IHdpZHRoICovCisJT1BKX1VJTlQzMiBwcmN3W09QSl9KMktfTUFYUkxWTFNdOworCS8qKiBwcmVjaW5jdCBoZWlnaHQgKi8KKwlPUEpfVUlOVDMyIHByY2hbT1BKX0oyS19NQVhSTFZMU107Cit9CitvcGpfdGNjcF9pbmZvX3Q7CisKKy8qKgorICogVGlsZSBjb2RpbmcgcGFyYW1ldGVycyBpbmZvcm1hdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBvcGpfdGlsZV92Ml9pbmZvIHsKKworCS8qKiBudW1iZXIgKGluZGV4KSBvZiB0aWxlICovCisJaW50IHRpbGVubzsKKwkvKiogY29kaW5nIHN0eWxlICovCisJT1BKX1VJTlQzMiBjc3R5OworCS8qKiBwcm9ncmVzc2lvbiBvcmRlciAqLworCU9QSl9QUk9HX09SREVSIHByZzsKKwkvKiogbnVtYmVyIG9mIGxheWVycyAqLworCU9QSl9VSU5UMzIgbnVtbGF5ZXJzOworCS8qKiBtdWx0aS1jb21wb25lbnQgdHJhbnNmb3JtIGlkZW50aWZpZXIgKi8KKwlPUEpfVUlOVDMyIG1jdDsKKworCS8qKiBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRpbGUgY29tcG9uZW50IHBhcmFtZXRlcnMqLworCW9wal90Y2NwX2luZm9fdCAqdGNjcF9pbmZvOworCit9IG9wal90aWxlX2luZm9fdjJfdDsKKworLyoqCisgKiBJbmZvcm1hdGlvbiBzdHJ1Y3R1cmUgYWJvdXQgdGhlIGNvZGVzdHJlYW0gKEZJWE1FIHNob3VsZCBiZSBleHBhbmQgYW5kIGVuaGFuY2UpCisgKi8KK3R5cGVkZWYgc3RydWN0IG9wal9jb2Rlc3RyZWFtX2luZm9fdjIgeworCS8qIFRpbGUgaW5mbyAqLworCS8qKiB0aWxlIG9yaWdpbiBpbiB4ID0gWFRPc2l6ICovCisJT1BKX1VJTlQzMiB0eDA7CisJLyoqIHRpbGUgb3JpZ2luIGluIHkgPSBZVE9zaXogKi8KKwlPUEpfVUlOVDMyIHR5MDsKKwkvKiogdGlsZSBzaXplIGluIHggPSBYVHNpeiAqLworCU9QSl9VSU5UMzIgdGR4OworCS8qKiB0aWxlIHNpemUgaW4geSA9IFlUc2l6ICovCisJT1BKX1VJTlQzMiB0ZHk7CisJLyoqIG51bWJlciBvZiB0aWxlcyBpbiBYICovCisJT1BKX1VJTlQzMiB0dzsKKwkvKiogbnVtYmVyIG9mIHRpbGVzIGluIFkgKi8KKwlPUEpfVUlOVDMyIHRoOworCisJLyoqIG51bWJlciBvZiBjb21wb25lbnRzKi8KKwlPUEpfVUlOVDMyIG5iY29tcHM7CisKKwkvKiogRGVmYXVsdCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGlsZXMgaW5zaWRlIGltYWdlICovCisJb3BqX3RpbGVfaW5mb192Ml90IG1fZGVmYXVsdF90aWxlX2luZm87CisKKwkvKiogaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRpbGVzIGluc2lkZSBpbWFnZSAqLworCW9wal90aWxlX2luZm9fdjJfdCAqdGlsZV9pbmZvOyAvKiBGSVhNRSBub3QgdXNlZCBmb3IgdGhlIG1vbWVudCAqLworCit9IG9wal9jb2Rlc3RyZWFtX2luZm9fdjJfdDsKKworCisvKioKKyAqIEluZGV4IHN0cnVjdHVyZSBhYm91dCBhIHRpbGUgcGFydAorICovCit0eXBlZGVmIHN0cnVjdCBvcGpfdHBfaW5kZXggeworCS8qKiBzdGFydCBwb3NpdGlvbiAqLworCU9QSl9PRkZfVCBzdGFydF9wb3M7CisJLyoqIGVuZCBwb3NpdGlvbiBvZiB0aGUgaGVhZGVyICovCisJT1BKX09GRl9UIGVuZF9oZWFkZXI7CisJLyoqIGVuZCBwb3NpdGlvbiAqLworCU9QSl9PRkZfVCBlbmRfcG9zOworCit9IG9wal90cF9pbmRleF90OworCisvKioKKyAqIEluZGV4IHN0cnVjdHVyZSBhYm91dCBhIHRpbGUKKyAqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX3RpbGVfaW5kZXggeworCS8qKiB0aWxlIGluZGV4ICovCisJT1BKX1VJTlQzMiB0aWxlbm87CisKKwkvKiogbnVtYmVyIG9mIHRpbGUgcGFydHMgKi8KKwlPUEpfVUlOVDMyIG5iX3RwczsKKwkvKiogY3VycmVudCBuYiBvZiB0aWxlIHBhcnQgKGFsbG9jYXRlZCkqLworCU9QSl9VSU5UMzIgY3VycmVudF9uYl90cHM7CisJLyoqIGN1cnJlbnQgdGlsZS1wYXJ0IGluZGV4ICovCisJT1BKX1VJTlQzMiBjdXJyZW50X3Rwc25vOworCS8qKiBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRpbGUgcGFydHMgKi8KKwlvcGpfdHBfaW5kZXhfdCAqdHBfaW5kZXg7CisKKwkvKiBVbmlQRz4+ICovIC8qIE5PVCBVU0VEIEZPUiBUSEUgTU9NRU5UIElOIFRIRSBWMiBWRVJTSU9OICovCisJCS8qKiBudW1iZXIgb2YgbWFya2VycyAqLworCQlPUEpfVUlOVDMyIG1hcmtudW07CisJCS8qKiBsaXN0IG9mIG1hcmtlcnMgKi8KKwkJb3BqX21hcmtlcl9pbmZvX3QgKm1hcmtlcjsKKwkJLyoqIGFjdHVhbCBzaXplIG9mIG1hcmtlcnMgYXJyYXkgKi8KKwkJT1BKX1VJTlQzMiBtYXhtYXJrbnVtOworCS8qIDw8VW5pUEcgKi8KKworCS8qKiBwYWNrZXQgbnVtYmVyICovCisJT1BKX1VJTlQzMiBuYl9wYWNrZXQ7CisJLyoqIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgcGFja2V0cyBpbnNpZGUgdGlsZSAqLworCW9wal9wYWNrZXRfaW5mb190ICpwYWNrZXRfaW5kZXg7CisKK30gb3BqX3RpbGVfaW5kZXhfdDsKKworLyoqCisgKiBJbmRleCBzdHJ1Y3R1cmUgb2YgdGhlIGNvZGVzdHJlYW0gKEZJWE1FIHNob3VsZCBiZSBleHBhbmQgYW5kIGVuaGFuY2UpCisgKi8KK3R5cGVkZWYgc3RydWN0IG9wal9jb2Rlc3RyZWFtX2luZGV4IHsKKwkvKiogbWFpbiBoZWFkZXIgc3RhcnQgcG9zaXRpb24gKFNPQyBwb3NpdGlvbikgKi8KKwlPUEpfT0ZGX1QgbWFpbl9oZWFkX3N0YXJ0OworCS8qKiBtYWluIGhlYWRlciBlbmQgcG9zaXRpb24gKGZpcnN0IFNPVCBwb3NpdGlvbikgKi8KKwlPUEpfT0ZGX1QgbWFpbl9oZWFkX2VuZDsKKworCS8qKiBjb2Rlc3RyZWFtJ3Mgc2l6ZSAqLworCU9QSl9VSU5UNjQgY29kZXN0cmVhbV9zaXplOworCisvKiBVbmlQRz4+ICovIC8qIE5PVCBVU0VEIEZPUiBUSEUgTU9NRU5UIElOIFRIRSBWMiBWRVJTSU9OICovCisJLyoqIG51bWJlciBvZiBtYXJrZXJzICovCisJT1BKX1VJTlQzMiBtYXJrbnVtOworCS8qKiBsaXN0IG9mIG1hcmtlcnMgKi8KKwlvcGpfbWFya2VyX2luZm9fdCAqbWFya2VyOworCS8qKiBhY3R1YWwgc2l6ZSBvZiBtYXJrZXJzIGFycmF5ICovCisJT1BKX1VJTlQzMiBtYXhtYXJrbnVtOworLyogPDxVbmlQRyAqLworCisJLyoqICovCisJT1BKX1VJTlQzMiBuYl9vZl90aWxlczsKKwkvKiogKi8KKwlvcGpfdGlsZV9pbmRleF90ICp0aWxlX2luZGV4OyAvKiBGSVhNRSBub3QgdXNlZCBmb3IgdGhlIG1vbWVudCAqLworCit9b3BqX2NvZGVzdHJlYW1faW5kZXhfdDsKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiAqLworCisvKgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgTWV0YWRhdGEgZnJvbSB0aGUgSlAyZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworLyoqCisgKiBJbmZvIHN0cnVjdHVyZSBvZiB0aGUgSlAyIGZpbGUKKyAqIEVYUEVSSU1FTlRBTCBGT1IgVEhFIE1PTUVOVAorICovCit0eXBlZGVmIHN0cnVjdCBvcGpfanAyX21ldGFkYXRhIHsKKwkvKiogKi8KKwlPUEpfSU5UMzIJbm90X3VzZWQ7CisKK30gb3BqX2pwMl9tZXRhZGF0YV90OworCisvKioKKyAqIEluZGV4IHN0cnVjdHVyZSBvZiB0aGUgSlAyIGZpbGUKKyAqIEVYUEVSSU1FTlRBTCBGT1IgVEhFIE1PTUVOVAorICovCit0eXBlZGVmIHN0cnVjdCBvcGpfanAyX2luZGV4IHsKKwkvKiogKi8KKwlPUEpfSU5UMzIJbm90X3VzZWQ7CisKK30gb3BqX2pwMl9pbmRleF90OworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworCisvKiAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIG9wZW5qcGVnIHZlcnNpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKKy8qIEdldCB0aGUgdmVyc2lvbiBvZiB0aGUgb3BlbmpwZWcgbGlicmFyeSovCitPUEpfQVBJIGNvbnN0IGNoYXIgKiBPUEpfQ0FMTENPTlYgb3BqX3ZlcnNpb24odm9pZCk7CisKKy8qIAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgaW1hZ2UgZnVuY3Rpb25zIGRlZmluaXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworCisvKioKKyAqIENyZWF0ZSBhbiBpbWFnZQorICoKKyAqIEBwYXJhbSBudW1jbXB0cyAgICAgIG51bWJlciBvZiBjb21wb25lbnRzCisgKiBAcGFyYW0gY21wdHBhcm1zICAgICBjb21wb25lbnRzIHBhcmFtZXRlcnMKKyAqIEBwYXJhbSBjbHJzcGMgICAgICAgIGltYWdlIGNvbG9yIHNwYWNlCisgKiBAcmV0dXJuIHJldHVybnMgICAgICBhIG5ldyBpbWFnZSBzdHJ1Y3R1cmUgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBOVUxMIG90aGVyd2lzZQorICogKi8KK09QSl9BUEkgb3BqX2ltYWdlX3QqIE9QSl9DQUxMQ09OViBvcGpfaW1hZ2VfY3JlYXRlKE9QSl9VSU5UMzIgbnVtY21wdHMsIG9wal9pbWFnZV9jbXB0cGFybV90ICpjbXB0cGFybXMsIE9QSl9DT0xPUl9TUEFDRSBjbHJzcGMpOworCisvKioKKyAqIERlYWxsb2NhdGUgYW55IHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW1hZ2UKKyAqCisgKiBAcGFyYW0gaW1hZ2UgICAgICAgICBpbWFnZSB0byBiZSBkZXN0cm95ZWQKKyAqLworT1BKX0FQSSB2b2lkIE9QSl9DQUxMQ09OViBvcGpfaW1hZ2VfZGVzdHJveShvcGpfaW1hZ2VfdCAqaW1hZ2UpOworCisvKioKKyAqIENyZWF0ZXMgYW4gaW1hZ2Ugd2l0aG91dCBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgdGhlIGltYWdlICh1c2VkIGluIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSkuCisgKgorICogQHBhcmFtCW51bWNtcHRzICAgIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cworICogQHBhcmFtCWNtcHRwYXJtcyAgIHRoZSBjb21wb25lbnRzIHBhcmFtZXRlcnMKKyAqIEBwYXJhbQljbHJzcGMgICAgICB0aGUgaW1hZ2UgY29sb3Igc3BhY2UKKyAqCisgKiBAcmV0dXJuCWEgbmV3IGltYWdlIHN0cnVjdHVyZSBpZiBzdWNjZXNzZnVsLCBOVUxMIG90aGVyd2lzZS4KKyovCitPUEpfQVBJIG9wal9pbWFnZV90KiBPUEpfQ0FMTENPTlYgb3BqX2ltYWdlX3RpbGVfY3JlYXRlKE9QSl9VSU5UMzIgbnVtY21wdHMsIG9wal9pbWFnZV9jbXB0cGFybV90ICpjbXB0cGFybXMsIE9QSl9DT0xPUl9TUEFDRSBjbHJzcGMpOworCisvKiAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIHN0cmVhbSBmdW5jdGlvbnMgZGVmaW5pdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKKy8qKgorICogQ3JlYXRlcyBhbiBhYnN0cmFjdCBzdHJlYW0uIFRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGV4Y2VwdCBhbGxvY2F0aW5nIG1lbW9yeSBhbmQgaW5pdGlhbGl6aW5nIHRoZSBhYnN0cmFjdCBzdHJlYW0uCisgKgorICogQHBhcmFtCXBfaXNfaW5wdXQJCWlmIHNldCB0byB0cnVlIHRoZW4gdGhlIHN0cmVhbSB3aWxsIGJlIGFuIGlucHV0IHN0cmVhbSwgYW4gb3V0cHV0IHN0cmVhbSBlbHNlLgorICoKKyAqIEByZXR1cm4JYSBzdHJlYW0gb2JqZWN0LgorKi8KK09QSl9BUEkgb3BqX3N0cmVhbV90KiBPUEpfQ0FMTENPTlYgb3BqX3N0cmVhbV9kZWZhdWx0X2NyZWF0ZShPUEpfQk9PTCBwX2lzX2lucHV0KTsKKworLyoqCisgKiBDcmVhdGVzIGFuIGFic3RyYWN0IHN0cmVhbS4gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgZXhjZXB0IGFsbG9jYXRpbmcgbWVtb3J5IGFuZCBpbml0aWFsaXppbmcgdGhlIGFic3RyYWN0IHN0cmVhbS4KKyAqCisgKiBAcGFyYW0JcF9idWZmZXJfc2l6ZSAgRklYTUUgRE9DCisgKiBAcGFyYW0JcF9pc19pbnB1dAkJaWYgc2V0IHRvIHRydWUgdGhlbiB0aGUgc3RyZWFtIHdpbGwgYmUgYW4gaW5wdXQgc3RyZWFtLCBhbiBvdXRwdXQgc3RyZWFtIGVsc2UuCisgKgorICogQHJldHVybglhIHN0cmVhbSBvYmplY3QuCisqLworT1BKX0FQSSBvcGpfc3RyZWFtX3QqIE9QSl9DQUxMQ09OViBvcGpfc3RyZWFtX2NyZWF0ZShPUEpfU0laRV9UIHBfYnVmZmVyX3NpemUsIE9QSl9CT09MIHBfaXNfaW5wdXQpOworCisvKioKKyAqIERlc3Ryb3lzIGEgc3RyZWFtIGNyZWF0ZWQgYnkgb3BqX2NyZWF0ZV9zdHJlYW0uIFRoaXMgZnVuY3Rpb24gZG9lcyBOT1QgY2xvc2UgdGhlIGFic3RyYWN0IHN0cmVhbS4gSWYgbmVlZGVkIHRoZSB1c2VyIG11c3QKKyAqIGNsb3NlIGl0cyBvd24gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0cmVhbS4KKyAqCisgKiBAcGFyYW0JcF9zdHJlYW0JdGhlIHN0cmVhbSB0byBkZXN0cm95LgorICovCitPUEpfQVBJIHZvaWQgT1BKX0NBTExDT05WIG9wal9zdHJlYW1fZGVzdHJveShvcGpfc3RyZWFtX3QqIHBfc3RyZWFtKTsKKworLyoqCisgKiBEZXN0cm95cyBhIHN0cmVhbSBjcmVhdGVkIGJ5IG9wal9jcmVhdGVfc3RyZWFtLiBUaGlzIGZ1bmN0aW9uIGRvZXMgTk9UIGNsb3NlIHRoZSBhYnN0cmFjdCBzdHJlYW0uIAorICogSWYgbmVlZGVkIHRoZSB1c2VyIG11c3QgY2xvc2UgaXRzIG93biBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RyZWFtLgorICoKKyAqIEBwYXJhbQlwX3N0cmVhbQl0aGUgc3RyZWFtIHRvIGRlc3Ryb3kuCisgKi8KK09QSl9BUEkgdm9pZCBPUEpfQ0FMTENPTlYgb3BqX3N0cmVhbV9kZXN0cm95X3YzKG9wal9zdHJlYW1fdCogcF9zdHJlYW0pOworIAorLyoqCisgKiBTZXRzIHRoZSBnaXZlbiBmdW5jdGlvbiB0byBiZSB1c2VkIGFzIGEgcmVhZCBmdW5jdGlvbi4KKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byBtb2RpZnkKKyAqIEBwYXJhbQkJcF9mdW5jdGlvbgl0aGUgZnVuY3Rpb24gdG8gdXNlIGEgcmVhZCBmdW5jdGlvbi4KKyovCitPUEpfQVBJIHZvaWQgT1BKX0NBTExDT05WIG9wal9zdHJlYW1fc2V0X3JlYWRfZnVuY3Rpb24ob3BqX3N0cmVhbV90KiBwX3N0cmVhbSwgb3BqX3N0cmVhbV9yZWFkX2ZuIHBfZnVuY3Rpb24pOworCisvKioKKyAqIFNldHMgdGhlIGdpdmVuIGZ1bmN0aW9uIHRvIGJlIHVzZWQgYXMgYSB3cml0ZSBmdW5jdGlvbi4KKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byBtb2RpZnkKKyAqIEBwYXJhbQkJcF9mdW5jdGlvbgl0aGUgZnVuY3Rpb24gdG8gdXNlIGEgd3JpdGUgZnVuY3Rpb24uCisqLworT1BKX0FQSSB2b2lkIE9QSl9DQUxMQ09OViBvcGpfc3RyZWFtX3NldF93cml0ZV9mdW5jdGlvbihvcGpfc3RyZWFtX3QqIHBfc3RyZWFtLCBvcGpfc3RyZWFtX3dyaXRlX2ZuIHBfZnVuY3Rpb24pOworCisvKioKKyAqIFNldHMgdGhlIGdpdmVuIGZ1bmN0aW9uIHRvIGJlIHVzZWQgYXMgYSBza2lwIGZ1bmN0aW9uLgorICogQHBhcmFtCQlwX3N0cmVhbQl0aGUgc3RyZWFtIHRvIG1vZGlmeQorICogQHBhcmFtCQlwX2Z1bmN0aW9uCXRoZSBmdW5jdGlvbiB0byB1c2UgYSBza2lwIGZ1bmN0aW9uLgorKi8KK09QSl9BUEkgdm9pZCBPUEpfQ0FMTENPTlYgb3BqX3N0cmVhbV9zZXRfc2tpcF9mdW5jdGlvbihvcGpfc3RyZWFtX3QqIHBfc3RyZWFtLCBvcGpfc3RyZWFtX3NraXBfZm4gcF9mdW5jdGlvbik7CisKKy8qKgorICogU2V0cyB0aGUgZ2l2ZW4gZnVuY3Rpb24gdG8gYmUgdXNlZCBhcyBhIHNlZWsgZnVuY3Rpb24sIHRoZSBzdHJlYW0gaXMgdGhlbiBzZWVrYWJsZS4KKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byBtb2RpZnkKKyAqIEBwYXJhbQkJcF9mdW5jdGlvbgl0aGUgZnVuY3Rpb24gdG8gdXNlIGEgc2tpcCBmdW5jdGlvbi4KKyovCitPUEpfQVBJIHZvaWQgT1BKX0NBTExDT05WIG9wal9zdHJlYW1fc2V0X3NlZWtfZnVuY3Rpb24ob3BqX3N0cmVhbV90KiBwX3N0cmVhbSwgb3BqX3N0cmVhbV9zZWVrX2ZuIHBfZnVuY3Rpb24pOworCisvKioKKyAqIFNldHMgdGhlIGdpdmVuIGRhdGEgdG8gYmUgdXNlZCBhcyBhIHVzZXIgZGF0YSBmb3IgdGhlIHN0cmVhbS4KKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byBtb2RpZnkKKyAqIEBwYXJhbQkJcF9kYXRhCQl0aGUgZGF0YSB0byBzZXQuCisgKiBAd2FybmluZyBkZXBlbmRpbmcgb24geW91ciBzb3VyY2Ugb2JqZWN0IHBfc3RyZWFtIHRoaXMgZnVuY3Rpb24gbWF5IGxlYWssIHVzZSBvcGpfc3RyZWFtX3NldF91c2VyX2RhdGFfdjMKKyovCitPUEpfREVQUkVDQVRFRChPUEpfQVBJIHZvaWQgT1BKX0NBTExDT05WIG9wal9zdHJlYW1fc2V0X3VzZXJfZGF0YSAob3BqX3N0cmVhbV90KiBwX3N0cmVhbSwgdm9pZCAqIHBfZGF0YSkpOworCisvKioKKyAqIFNldHMgdGhlIGdpdmVuIGRhdGEgdG8gYmUgdXNlZCBhcyBhIHVzZXIgZGF0YSBmb3IgdGhlIHN0cmVhbS4KKyAqIEBwYXJhbQkJcF9zdHJlYW0JdGhlIHN0cmVhbSB0byBtb2RpZnkKKyAqIEBwYXJhbQkJcF9kYXRhCQl0aGUgZGF0YSB0byBzZXQuCisgKiBAcGFyYW0JCXBfZnVuY3Rpb24JdGhlIGZ1bmN0aW9uIHRvIGZyZWUgcF9kYXRhIHdoZW4gb3BqX3N0cmVhbV9kZXN0cm95KCkgaXMgY2FsbGVkLgorKi8KK09QSl9BUEkgdm9pZCBPUEpfQ0FMTENPTlYgb3BqX3N0cmVhbV9zZXRfdXNlcl9kYXRhX3YzIChvcGpfc3RyZWFtX3QqIHBfc3RyZWFtLCB2b2lkICogcF9kYXRhLCBvcGpfc3RyZWFtX2ZyZWVfdXNlcl9kYXRhX2ZuIHBfZnVuY3Rpb24pOworCisvKioKKyAqIFNldHMgdGhlIGxlbmd0aCBvZiB0aGUgdXNlciBkYXRhIGZvciB0aGUgc3RyZWFtLgorICoKKyAqIEBwYXJhbSBwX3N0cmVhbSAgICB0aGUgc3RyZWFtIHRvIG1vZGlmeQorICogQHBhcmFtIGRhdGFfbGVuZ3RoIGxlbmd0aCBvZiB0aGUgdXNlcl9kYXRhLgorKi8KK09QSl9BUEkgdm9pZCBPUEpfQ0FMTENPTlYgb3BqX3N0cmVhbV9zZXRfdXNlcl9kYXRhX2xlbmd0aChvcGpfc3RyZWFtX3QqIHBfc3RyZWFtLCBPUEpfVUlOVDY0IGRhdGFfbGVuZ3RoKTsKKworLyoqCisgKiBDcmVhdGUgYSBzdHJlYW0gZnJvbSBhIGZpbGUgaWRlbnRpZmllZCB3aXRoIGl0cyBmaWxlbmFtZSB3aXRoIGRlZmF1bHQgcGFyYW1ldGVycyAoaGVscGVyIGZ1bmN0aW9uKQorICogQHBhcmFtIGZuYW1lICAgICAgICAgICAgIHRoZSBmaWxlbmFtZSBvZiB0aGUgZmlsZSB0byBzdHJlYW0KKyAqIEBwYXJhbSBwX2lzX3JlYWRfc3RyZWFtICB3aGV0aGVyIHRoZSBzdHJlYW0gaXMgYSByZWFkIHN0cmVhbSAodHJ1ZSkgb3Igbm90IChmYWxzZSkKKyovCitPUEpfQVBJIG9wal9zdHJlYW1fdCogT1BKX0NBTExDT05WIG9wal9zdHJlYW1fY3JlYXRlX2RlZmF1bHRfZmlsZV9zdHJlYW1fdjMgKGNvbnN0IGNoYXIgKmZuYW1lLCBPUEpfQk9PTCBwX2lzX3JlYWRfc3RyZWFtKTsKKyAKKy8qKiBDcmVhdGUgYSBzdHJlYW0gZnJvbSBhIGZpbGUgaWRlbnRpZmllZCB3aXRoIGl0cyBmaWxlbmFtZSB3aXRoIGEgc3BlY2lmaWMgYnVmZmVyIHNpemUKKyAqIEBwYXJhbSBmbmFtZSAgICAgICAgICAgICB0aGUgZmlsZW5hbWUgb2YgdGhlIGZpbGUgdG8gc3RyZWFtCisgKiBAcGFyYW0gcF9idWZmZXJfc2l6ZSAgICAgc2l6ZSBvZiB0aGUgY2h1bmsgdXNlZCB0byBzdHJlYW0KKyAqIEBwYXJhbSBwX2lzX3JlYWRfc3RyZWFtICB3aGV0aGVyIHRoZSBzdHJlYW0gaXMgYSByZWFkIHN0cmVhbSAodHJ1ZSkgb3Igbm90IChmYWxzZSkKKyovCitPUEpfQVBJIG9wal9zdHJlYW1fdCogT1BKX0NBTExDT05WIG9wal9zdHJlYW1fY3JlYXRlX2ZpbGVfc3RyZWFtX3YzIChjb25zdCBjaGFyICpmbmFtZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfU0laRV9UIHBfYnVmZmVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQk9PTCBwX2lzX3JlYWRfc3RyZWFtKTsKKyAKKy8qIAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgZXZlbnQgbWFuYWdlciBmdW5jdGlvbnMgZGVmaW5pdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisvKioKKyAqIFNldCB0aGUgaW5mbyBoYW5kbGVyIHVzZSBieSBvcGVuanBlZy4KKyAqIEBwYXJhbSBwX2NvZGVjICAgICAgIHRoZSBjb2RlYyBwcmV2aW91c2x5IGluaXRpYWxpc2UKKyAqIEBwYXJhbSBwX2NhbGxiYWNrICAgIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIHVzZWQKKyAqIEBwYXJhbSBwX3VzZXJfZGF0YSAgIGNsaWVudCBvYmplY3Qgd2hlcmUgd2lsbCBiZSByZXR1cm5lZCB0aGUgbWVzc2FnZQorKi8KK09QSl9BUEkgT1BKX0JPT0wgT1BKX0NBTExDT05WIG9wal9zZXRfaW5mb19oYW5kbGVyKG9wal9jb2RlY190ICogcF9jb2RlYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfbXNnX2NhbGxiYWNrIHBfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICogcF91c2VyX2RhdGEpOworLyoqCisgKiBTZXQgdGhlIHdhcm5pbmcgaGFuZGxlciB1c2UgYnkgb3BlbmpwZWcuCisgKiBAcGFyYW0gcF9jb2RlYyAgICAgICB0aGUgY29kZWMgcHJldmlvdXNseSBpbml0aWFsaXNlCisgKiBAcGFyYW0gcF9jYWxsYmFjayAgICB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSB1c2VkCisgKiBAcGFyYW0gcF91c2VyX2RhdGEgICBjbGllbnQgb2JqZWN0IHdoZXJlIHdpbGwgYmUgcmV0dXJuZWQgdGhlIG1lc3NhZ2UKKyovCitPUEpfQVBJIE9QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfc2V0X3dhcm5pbmdfaGFuZGxlcihvcGpfY29kZWNfdCAqIHBfY29kZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfbXNnX2NhbGxiYWNrIHBfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICogcF91c2VyX2RhdGEpOworLyoqCisgKiBTZXQgdGhlIGVycm9yIGhhbmRsZXIgdXNlIGJ5IG9wZW5qcGVnLgorICogQHBhcmFtIHBfY29kZWMgICAgICAgdGhlIGNvZGVjIHByZXZpb3VzbHkgaW5pdGlhbGlzZQorICogQHBhcmFtIHBfY2FsbGJhY2sgICAgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgdXNlZAorICogQHBhcmFtIHBfdXNlcl9kYXRhICAgY2xpZW50IG9iamVjdCB3aGVyZSB3aWxsIGJlIHJldHVybmVkIHRoZSBtZXNzYWdlCisqLworT1BKX0FQSSBPUEpfQk9PTCBPUEpfQ0FMTENPTlYgb3BqX3NldF9lcnJvcl9oYW5kbGVyKG9wal9jb2RlY190ICogcF9jb2RlYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX21zZ19jYWxsYmFjayBwX2NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiBwX3VzZXJfZGF0YSk7CisKKy8qIAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgY29kZWMgZnVuY3Rpb25zIGRlZmluaXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworCisvKioKKyAqIENyZWF0ZXMgYSBKMksvSlAyIGRlY29tcHJlc3Npb24gc3RydWN0dXJlCisgKiBAcGFyYW0gZm9ybWF0IAkJRGVjb2RlciB0byBzZWxlY3QKKyAqCisgKiBAcmV0dXJuIFJldHVybnMgYSBoYW5kbGUgdG8gYSBkZWNvbXByZXNzb3IgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBOVUxMIG90aGVyd2lzZQorICogKi8KK09QSl9BUEkgb3BqX2NvZGVjX3QqIE9QSl9DQUxMQ09OViBvcGpfY3JlYXRlX2RlY29tcHJlc3MoT1BKX0NPREVDX0ZPUk1BVCBmb3JtYXQpOworCisvKioKKyAqIERlc3Ryb3kgYSBkZWNvbXByZXNzb3IgaGFuZGxlCisgKgorICogQHBhcmFtCXBfY29kZWMJCQlkZWNvbXByZXNzb3IgaGFuZGxlIHRvIGRlc3Ryb3kKKyAqLworT1BKX0FQSSB2b2lkIE9QSl9DQUxMQ09OViBvcGpfZGVzdHJveV9jb2RlYyhvcGpfY29kZWNfdCAqIHBfY29kZWMpOworCisvKioKKyAqIFJlYWQgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gaWYgbmVjZXNzYXJ5CisgKiBAcGFyYW0JcF9jb2RlYwkJCXRoZSBKUEVHMjAwMCBjb2RlYyB0byByZWFkLgorICogQHBhcmFtCXBfc3RyZWFtCQl0aGUgSlBFRzIwMDAgc3RyZWFtLgorICovCitPUEpfQVBJIE9QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZW5kX2RlY29tcHJlc3MgKAlvcGpfY29kZWNfdCAqcF9jb2RlYywKKwkJCQkJCQkJCQkJCQlvcGpfc3RyZWFtX3QgKnBfc3RyZWFtKTsKKworCisvKioKKyAqIFNldCBkZWNvZGluZyBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQgdmFsdWVzCisgKiBAcGFyYW0gcGFyYW1ldGVycyBEZWNvbXByZXNzaW9uIHBhcmFtZXRlcnMKKyAqLworT1BKX0FQSSB2b2lkIE9QSl9DQUxMQ09OViBvcGpfc2V0X2RlZmF1bHRfZGVjb2Rlcl9wYXJhbWV0ZXJzKG9wal9kcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzKTsKKworLyoqCisgKiBTZXR1cCB0aGUgZGVjb2RlciB3aXRoIGRlY29tcHJlc3Npb24gcGFyYW1ldGVycyBwcm92aWRlZCBieSB0aGUgdXNlciBhbmQgd2l0aCB0aGUgbWVzc2FnZSBoYW5kbGVyCisgKiBwcm92aWRlZCBieSB0aGUgdXNlci4KKyAqCisgKiBAcGFyYW0gcF9jb2RlYyAJCWRlY29tcHJlc3NvciBoYW5kbGVyCisgKiBAcGFyYW0gcGFyYW1ldGVycyAJZGVjb21wcmVzc2lvbiBwYXJhbWV0ZXJzCisgKgorICogQHJldHVybiB0cnVlCQkJaWYgdGhlIGRlY29kZXIgaXMgY29ycmVjdGx5IHNldAorICovCitPUEpfQVBJIE9QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfc2V0dXBfZGVjb2RlcihvcGpfY29kZWNfdCAqcF9jb2RlYywKKwkJCQkJCQkJCQkJCW9wal9kcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzICk7CisKKy8qKgorICogRGVjb2RlcyBhbiBpbWFnZSBoZWFkZXIuCisgKgorICogQHBhcmFtCXBfc3RyZWFtCQl0aGUganBlZzIwMDAgc3RyZWFtLgorICogQHBhcmFtCXBfY29kZWMJCQl0aGUganBlZzIwMDAgY29kZWMgdG8gcmVhZC4KKyAqIEBwYXJhbQlwX2ltYWdlCQkJdGhlIGltYWdlIHN0cnVjdHVyZSBpbml0aWFsaXplZCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgZW5jb2RlZCBpbWFnZS4KKyAqCisgKiBAcmV0dXJuIHRydWUJCQkJaWYgdGhlIG1haW4gaGVhZGVyIG9mIHRoZSBjb2Rlc3RyZWFtIGFuZCB0aGUgSlAyIGhlYWRlciBpcyBjb3JyZWN0bHkgcmVhZC4KKyAqLworT1BKX0FQSSBPUEpfQk9PTCBPUEpfQ0FMTENPTlYgb3BqX3JlYWRfaGVhZGVyICgJb3BqX3N0cmVhbV90ICpwX3N0cmVhbSwKKwkJCQkJCQkJCQkJCW9wal9jb2RlY190ICpwX2NvZGVjLAorCQkJCQkJCQkJCQkJb3BqX2ltYWdlX3QgKipwX2ltYWdlKTsKKworLyoqCisgKiBTZXRzIHRoZSBnaXZlbiBhcmVhIHRvIGJlIGRlY29kZWQuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCByaWdodCBhZnRlciBvcGpfcmVhZF9oZWFkZXIgYW5kIGJlZm9yZSBhbnkgdGlsZSBoZWFkZXIgcmVhZGluZy4KKyAqCisgKiBAcGFyYW0JcF9jb2RlYwkJCXRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbQlwX2ltYWdlICAgICAgICAgdGhlIGRlY29kZWQgaW1hZ2UgcHJldmlvdXNseSBzZXR0ZWQgYnkgb3BqX3JlYWRfaGVhZGVyCisgKiBAcGFyYW0JcF9zdGFydF94CQl0aGUgbGVmdCBwb3NpdGlvbiBvZiB0aGUgcmVjdGFuZ2xlIHRvIGRlY29kZSAoaW4gaW1hZ2UgY29vcmRpbmF0ZXMpLgorICogQHBhcmFtCXBfZW5kX3gJCQl0aGUgcmlnaHQgcG9zaXRpb24gb2YgdGhlIHJlY3RhbmdsZSB0byBkZWNvZGUgKGluIGltYWdlIGNvb3JkaW5hdGVzKS4KKyAqIEBwYXJhbQlwX3N0YXJ0X3kJCXRoZSB1cCBwb3NpdGlvbiBvZiB0aGUgcmVjdGFuZ2xlIHRvIGRlY29kZSAoaW4gaW1hZ2UgY29vcmRpbmF0ZXMpLgorICogQHBhcmFtCXBfZW5kX3kJCQl0aGUgYm90dG9tIHBvc2l0aW9uIG9mIHRoZSByZWN0YW5nbGUgdG8gZGVjb2RlIChpbiBpbWFnZSBjb29yZGluYXRlcykuCisgKgorICogQHJldHVybgl0cnVlCQkJaWYgdGhlIGFyZWEgY291bGQgYmUgc2V0LgorICovCitPUEpfQVBJIE9QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfc2V0X2RlY29kZV9hcmVhKAlvcGpfY29kZWNfdCAqcF9jb2RlYywKKwkJCQkJCQkJCQkJCQlvcGpfaW1hZ2VfdCogcF9pbWFnZSwKKwkJCQkJCQkJCQkJCQlPUEpfSU5UMzIgcF9zdGFydF94LCBPUEpfSU5UMzIgcF9zdGFydF95LAorCQkJCQkJCQkJCQkJCU9QSl9JTlQzMiBwX2VuZF94LCBPUEpfSU5UMzIgcF9lbmRfeSApOworCisvKioKKyAqIERlY29kZSBhbiBpbWFnZSBmcm9tIGEgSlBFRy0yMDAwIGNvZGVzdHJlYW0KKyAqCisgKiBAcGFyYW0gcF9kZWNvbXByZXNzb3IgCWRlY29tcHJlc3NvciBoYW5kbGUKKyAqIEBwYXJhbSBwX3N0cmVhbQkJCUlucHV0IGJ1ZmZlciBzdHJlYW0KKyAqIEBwYXJhbSBwX2ltYWdlIAkJCXRoZSBkZWNvZGVkIGltYWdlCisgKiBAcmV0dXJuIAkJCQkJdHJ1ZSBpZiBzdWNjZXNzLCBvdGhlcndpc2UgZmFsc2UKKyAqICovCitPUEpfQVBJIE9QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZGVjb2RlKCAgIG9wal9jb2RlY190ICpwX2RlY29tcHJlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3N0cmVhbV90ICpwX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QgKnBfaW1hZ2UpOworCisvKioKKyAqIEdldCB0aGUgZGVjb2RlZCB0aWxlIGZyb20gdGhlIGNvZGVjCisgKgorICogQHBhcmFtCXBfY29kZWMJCQl0aGUganBlZzIwMDAgY29kZWMuCisgKiBAcGFyYW0JcF9zdHJlYW0JCWlucHV0IHN0cmVhbW0KKyAqIEBwYXJhbQlwX2ltYWdlCQkJb3V0cHV0IGltYWdlCisgKiBAcGFyYW0JdGlsZV9pbmRleAkJaW5kZXggb2YgdGhlIHRpbGUgd2hpY2ggd2lsbCBiZSBkZWNvZGUKKyAqCisgKiBAcmV0dXJuCQkJCQl0cnVlIGlmIHN1Y2Nlc3MsIG90aGVyd2lzZSBmYWxzZQorICovCitPUEpfQVBJIE9QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZ2V0X2RlY29kZWRfdGlsZSgJb3BqX2NvZGVjX3QgKnBfY29kZWMsCisJCQkJCQkJCQkJCQkJb3BqX3N0cmVhbV90ICpwX3N0cmVhbSwKKwkJCQkJCQkJCQkJCQlvcGpfaW1hZ2VfdCAqcF9pbWFnZSwKKwkJCQkJCQkJCQkJCQlPUEpfVUlOVDMyIHRpbGVfaW5kZXgpOworCisvKioKKyAqIFNldCB0aGUgcmVzb2x1dGlvbiBmYWN0b3Igb2YgdGhlIGRlY29kZWQgaW1hZ2UKKyAqIEBwYXJhbQlwX2NvZGVjCQkJdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtCXJlc19mYWN0b3IJCXJlc29sdXRpb24gZmFjdG9yIHRvIHNldAorICoKKyAqIEByZXR1cm4JCQkJCXRydWUgaWYgc3VjY2Vzcywgb3RoZXJ3aXNlIGZhbHNlCisgKi8KK09QSl9BUEkgT1BKX0JPT0wgT1BKX0NBTExDT05WIG9wal9zZXRfZGVjb2RlZF9yZXNvbHV0aW9uX2ZhY3RvcihvcGpfY29kZWNfdCAqcF9jb2RlYywgT1BKX1VJTlQzMiByZXNfZmFjdG9yKTsKKworLyoqCisgKiBXcml0ZXMgYSB0aWxlIHdpdGggdGhlIGdpdmVuIGRhdGEuCisgKgorICogQHBhcmFtCXBfY29kZWMJCSAgICAgICAgdGhlIGpwZWcyMDAwIGNvZGVjLgorICogQHBhcmFtCXBfdGlsZV9pbmRleAkJdGhlIGluZGV4IG9mIHRoZSB0aWxlIHRvIHdyaXRlLiBBdCB0aGUgbW9tZW50LCB0aGUgdGlsZXMgbXVzdCBiZSB3cml0dGVuIGZyb20gMCB0byBuLTEgaW4gc2VxdWVuY2UuCisgKiBAcGFyYW0JcF9kYXRhCQkJCXBvaW50ZXIgdG8gdGhlIGRhdGEgdG8gd3JpdGUuIERhdGEgaXMgYXJyYW5nZWQgaW4gc2VxdWVuY2UsIGRhdGFfY29tcDAsIHRoZW4gZGF0YV9jb21wMSwgdGhlbiAuLi4gTk8gSU5URVJMRUFWSU5HIHNob3VsZCBiZSBzZXQuCisgKiBAcGFyYW0JcF9kYXRhX3NpemUJCQl0aGlzIHZhbHVlIG9zIHVzZWQgdG8gbWFrZSBzdXJlIHRoZSBkYXRhIGJlaW5nIHdyaXR0ZW4gaXMgY29ycmVjdC4gVGhlIHNpemUgbXVzdCBiZSBlcXVhbCB0byB0aGUgc3VtIGZvciBlYWNoIGNvbXBvbmVudCBvZiAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZV93aWR0aCAqIHRpbGVfaGVpZ2h0ICogY29tcG9uZW50X3NpemUuIGNvbXBvbmVudF9zaXplIGNhbiBiZSAxLDIgb3IgNCBieXRlcywgZGVwZW5kaW5nIG9uIHRoZSBwcmVjaXNpb24gb2YgdGhlIGdpdmVuIGNvbXBvbmVudC4KKyAqIEBwYXJhbQlwX3N0cmVhbQkJCXRoZSBzdHJlYW0gdG8gd3JpdGUgZGF0YSB0by4KKyAqCisgKiBAcmV0dXJuCXRydWUgaWYgdGhlIGRhdGEgY291bGQgYmUgd3JpdHRlbi4KKyAqLworT1BKX0FQSSBPUEpfQk9PTCBPUEpfQ0FMTENPTlYgb3BqX3dyaXRlX3RpbGUgKAlvcGpfY29kZWNfdCAqcF9jb2RlYywKKwkJCQkJCQkJCQkJCU9QSl9VSU5UMzIgcF90aWxlX2luZGV4LAorCQkJCQkJCQkJCQkJT1BKX0JZVEUgKiBwX2RhdGEsCisJCQkJCQkJCQkJCQlPUEpfVUlOVDMyIHBfZGF0YV9zaXplLAorCQkJCQkJCQkJCQkJb3BqX3N0cmVhbV90ICpwX3N0cmVhbSApOworCisvKioKKyAqIFJlYWRzIGEgdGlsZSBoZWFkZXIuIFRoaXMgZnVuY3Rpb24gaXMgY29tcHVsc29yeSBhbmQgYWxsb3dzIG9uZSB0byBrbm93IHRoZSBzaXplIG9mIHRoZSB0aWxlIHRodGEgd2lsbCBiZSBkZWNvZGVkLgorICogVGhlIHVzZXIgbWF5IG5lZWQgdG8gcmVmZXIgdG8gdGhlIGltYWdlIGdvdCBieSBvcGpfcmVhZF9oZWFkZXIgdG8gdW5kZXJzdGFuZCB0aGUgc2l6ZSBiZWluZyB0YWtlbiBieSB0aGUgdGlsZS4KKyAqCisgKiBAcGFyYW0JcF9jb2RlYwkJCXRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbQlwX3RpbGVfaW5kZXgJcG9pbnRlciB0byBhIHZhbHVlIHRoYXQgd2lsbCBob2xkIHRoZSBpbmRleCBvZiB0aGUgdGlsZSBiZWluZyBkZWNvZGVkLCBpbiBjYXNlIG9mIHN1Y2Nlc3MuCisgKiBAcGFyYW0JcF9kYXRhX3NpemUJCXBvaW50ZXIgdG8gYSB2YWx1ZSB0aGF0IHdpbGwgaG9sZCB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBkZWNvZGVkIGRhdGEsIGluIGNhc2Ugb2Ygc3VjY2Vzcy4gSW4gY2FzZQorICoJCQkJCQkJb2YgdHJ1bmNhdGVkIGNvZGVzdHJlYW1zLCB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyBkZWNvZGVkIG1heSBiZSBsb3dlci4gVGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBzaXplIGlzIHRoZSBzYW1lCisgKgkJCQkJCQlhcyBkZXBpY3RlZCBpbiBvcGpfd3JpdGVfdGlsZS4KKyAqIEBwYXJhbQlwX3RpbGVfeDAJCXBvaW50ZXIgdG8gYSB2YWx1ZSB0aGF0IHdpbGwgaG9sZCB0aGUgeDAgcG9zIG9mIHRoZSB0aWxlIChpbiB0aGUgaW1hZ2UpLgorICogQHBhcmFtCXBfdGlsZV95MAkJcG9pbnRlciB0byBhIHZhbHVlIHRoYXQgd2lsbCBob2xkIHRoZSB5MCBwb3Mgb2YgdGhlIHRpbGUgKGluIHRoZSBpbWFnZSkuCisgKiBAcGFyYW0JcF90aWxlX3gxCQlwb2ludGVyIHRvIGEgdmFsdWUgdGhhdCB3aWxsIGhvbGQgdGhlIHgxIHBvcyBvZiB0aGUgdGlsZSAoaW4gdGhlIGltYWdlKS4KKyAqIEBwYXJhbQlwX3RpbGVfeTEJCXBvaW50ZXIgdG8gYSB2YWx1ZSB0aGF0IHdpbGwgaG9sZCB0aGUgeTEgcG9zIG9mIHRoZSB0aWxlIChpbiB0aGUgaW1hZ2UpLgorICogQHBhcmFtCXBfbmJfY29tcHMJCXBvaW50ZXIgdG8gYSB2YWx1ZSB0aGF0IHdpbGwgaG9sZCB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgaW4gdGhlIHRpbGUuCisgKiBAcGFyYW0JcF9zaG91bGRfZ29fb24JcG9pbnRlciB0byBhIGJvb2xlYW4gdGhhdCB3aWxsIGhvbGQgdGhlIGZhY3QgdGhhdCB0aGUgZGVjb2Rpbmcgc2hvdWxkIGdvIG9uLiBJbiBjYXNlIHRoZQorICoJCQkJCQkJY29kZXN0cmVhbSBpcyBvdmVyIGF0IHRoZSB0aW1lIG9mIHRoZSBjYWxsLCB0aGUgdmFsdWUgd2lsbCBiZSBzZXQgdG8gZmFsc2UuIFRoZSB1c2VyIHNob3VsZCB0aGVuIHN0b3AKKyAqCQkJCQkJCXRoZSBkZWNvZGluZy4KKyAqIEBwYXJhbQlwX3N0cmVhbQkJdGhlIHN0cmVhbSB0byBkZWNvZGUuCisgKiBAcmV0dXJuCXRydWUJCQlpZiB0aGUgdGlsZSBoZWFkZXIgY291bGQgYmUgZGVjb2RlZC4gSW4gY2FzZSB0aGUgZGVjb2Rpbmcgc2hvdWxkIGVuZCwgdGhlIHJldHVybmVkIHZhbHVlIGlzIHN0aWxsIHRydWUuCisgKgkJCQkJCQlyZXR1cm5pbmcgZmFsc2UgbWF5IGJlIHRoZSByZXN1bHQgb2YgYSBzaG9ydGFnZSBvZiBtZW1vcnkgb3IgYW4gaW50ZXJuYWwgZXJyb3IuCisgKi8KK09QSl9BUEkgT1BKX0JPT0wgT1BKX0NBTExDT05WIG9wal9yZWFkX3RpbGVfaGVhZGVyKAlvcGpfY29kZWNfdCAqcF9jb2RlYywKKwkJCQkJCQkJCQkJCW9wal9zdHJlYW1fdCAqIHBfc3RyZWFtLAorCQkJCQkJCQkJCQkJT1BKX1VJTlQzMiAqIHBfdGlsZV9pbmRleCwKKwkJCQkJCQkJCQkJCU9QSl9VSU5UMzIgKiBwX2RhdGFfc2l6ZSwKKwkJCQkJCQkJCQkJCU9QSl9JTlQzMiAqIHBfdGlsZV94MCwgT1BKX0lOVDMyICogcF90aWxlX3kwLAorCQkJCQkJCQkJCQkJT1BKX0lOVDMyICogcF90aWxlX3gxLCBPUEpfSU5UMzIgKiBwX3RpbGVfeTEsCisJCQkJCQkJCQkJCQlPUEpfVUlOVDMyICogcF9uYl9jb21wcywKKwkJCQkJCQkJCQkJCU9QSl9CT09MICogcF9zaG91bGRfZ29fb24gKTsKKworLyoqCisgKiBSZWFkcyBhIHRpbGUgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyBjb21wdWxzb3J5IGFuZCBhbGxvd3Mgb25lIHRvIGRlY29kZSB0aWxlIGRhdGEuIG9wal9yZWFkX3RpbGVfaGVhZGVyIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlLgorICogVGhlIHVzZXIgbWF5IG5lZWQgdG8gcmVmZXIgdG8gdGhlIGltYWdlIGdvdCBieSBvcGpfcmVhZF9oZWFkZXIgdG8gdW5kZXJzdGFuZCB0aGUgc2l6ZSBiZWluZyB0YWtlbiBieSB0aGUgdGlsZS4KKyAqCisgKiBAcGFyYW0JcF9jb2RlYwkJCXRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbQlwX3RpbGVfaW5kZXgJdGhlIGluZGV4IG9mIHRoZSB0aWxlIGJlaW5nIGRlY29kZWQsIHRoaXMgc2hvdWxkIGJlIHRoZSB2YWx1ZSBzZXQgYnkgb3BqX3JlYWRfdGlsZV9oZWFkZXIuCisgKiBAcGFyYW0JcF9kYXRhCQkJcG9pbnRlciB0byBhIG1lbW9yeSBibG9jayB0aGF0IHdpbGwgaG9sZCB0aGUgZGVjb2RlZCBkYXRhLgorICogQHBhcmFtCXBfZGF0YV9zaXplCQlzaXplIG9mIHBfZGF0YS4gcF9kYXRhX3NpemUgc2hvdWxkIGJlIGJpZ2dlciBvciBlcXVhbCB0byB0aGUgdmFsdWUgc2V0IGJ5IG9wal9yZWFkX3RpbGVfaGVhZGVyLgorICogQHBhcmFtCXBfc3RyZWFtCQl0aGUgc3RyZWFtIHRvIGRlY29kZS4KKyAqCisgKiBAcmV0dXJuCXRydWUJCQlpZiB0aGUgZGF0YSBjb3VsZCBiZSBkZWNvZGVkLgorICovCitPUEpfQVBJIE9QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZGVjb2RlX3RpbGVfZGF0YSgJb3BqX2NvZGVjX3QgKnBfY29kZWMsCisJCQkJCQkJCQkJCQkJT1BKX1VJTlQzMiBwX3RpbGVfaW5kZXgsCisJCQkJCQkJCQkJCQkJT1BKX0JZVEUgKiBwX2RhdGEsCisJCQkJCQkJCQkJCQkJT1BKX1VJTlQzMiBwX2RhdGFfc2l6ZSwKKwkJCQkJCQkJCQkJCQlvcGpfc3RyZWFtX3QgKnBfc3RyZWFtICk7CisKKy8qIENPTVBSRVNTSU9OIEZVTkNUSU9OUyovCisKKy8qKgorICogQ3JlYXRlcyBhIEoySy9KUDIgY29tcHJlc3Npb24gc3RydWN0dXJlCisgKiBAcGFyYW0gCWZvcm1hdCAJCUNvZGVyIHRvIHNlbGVjdAorICogQHJldHVybiAJCQkJUmV0dXJucyBhIGhhbmRsZSB0byBhIGNvbXByZXNzb3IgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBOVUxMIG90aGVyd2lzZQorICovCitPUEpfQVBJIG9wal9jb2RlY190KiBPUEpfQ0FMTENPTlYgb3BqX2NyZWF0ZV9jb21wcmVzcyhPUEpfQ09ERUNfRk9STUFUIGZvcm1hdCk7CisKKy8qKgorU2V0IGVuY29kaW5nIHBhcmFtZXRlcnMgdG8gZGVmYXVsdCB2YWx1ZXMsIHRoYXQgbWVhbnMgOiAKKzx1bD4KKzxsaT5Mb3NzbGVzcworPGxpPjEgdGlsZQorPGxpPlNpemUgb2YgcHJlY2luY3QgOiAyXjE1IHggMl4xNSAobWVhbnMgMSBwcmVjaW5jdCkKKzxsaT5TaXplIG9mIGNvZGUtYmxvY2sgOiA2NCB4IDY0Cis8bGk+TnVtYmVyIG9mIHJlc29sdXRpb25zOiA2Cis8bGk+Tm8gU09QIG1hcmtlciBpbiB0aGUgY29kZXN0cmVhbQorPGxpPk5vIEVQSCBtYXJrZXIgaW4gdGhlIGNvZGVzdHJlYW0KKzxsaT5ObyBzdWItc2FtcGxpbmcgaW4geCBvciB5IGRpcmVjdGlvbgorPGxpPk5vIG1vZGUgc3dpdGNoIGFjdGl2YXRlZAorPGxpPlByb2dyZXNzaW9uIG9yZGVyOiBMUkNQCis8bGk+Tm8gaW5kZXggZmlsZQorPGxpPk5vIFJPSSB1cHNoaWZ0ZWQKKzxsaT5ObyBvZmZzZXQgb2YgdGhlIG9yaWdpbiBvZiB0aGUgaW1hZ2UKKzxsaT5ObyBvZmZzZXQgb2YgdGhlIG9yaWdpbiBvZiB0aGUgdGlsZXMKKzxsaT5SZXZlcnNpYmxlIERXVCA1LTMKKzwvdWw+CitAcGFyYW0gcGFyYW1ldGVycyBDb21wcmVzc2lvbiBwYXJhbWV0ZXJzCisqLworT1BKX0FQSSB2b2lkIE9QSl9DQUxMQ09OViBvcGpfc2V0X2RlZmF1bHRfZW5jb2Rlcl9wYXJhbWV0ZXJzKG9wal9jcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzKTsKKworLyoqCisgKiBTZXR1cCB0aGUgZW5jb2RlciBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBjdXJyZW50IGltYWdlIGFuZCB1c2luZyB1c2VyIHBhcmFtZXRlcnMuCisgKiBAcGFyYW0gcF9jb2RlYyAJCUNvbXByZXNzb3IgaGFuZGxlCisgKiBAcGFyYW0gcGFyYW1ldGVycyAJQ29tcHJlc3Npb24gcGFyYW1ldGVycworICogQHBhcmFtIGltYWdlIAkJSW5wdXQgZmlsbGVkIGltYWdlCisgKi8KK09QSl9BUEkgT1BKX0JPT0wgT1BKX0NBTExDT05WIG9wal9zZXR1cF9lbmNvZGVyKG9wal9jb2RlY190ICpwX2NvZGVjLCAKKwkJCQkJCQkJCQkJCW9wal9jcGFyYW1ldGVyc190ICpwYXJhbWV0ZXJzLCAKKwkJCQkJCQkJCQkJCW9wal9pbWFnZV90ICppbWFnZSk7CisKKy8qKgorICogU3RhcnQgdG8gY29tcHJlc3MgdGhlIGN1cnJlbnQgaW1hZ2UuCisgKiBAcGFyYW0gcF9jb2RlYyAJCUNvbXByZXNzb3IgaGFuZGxlCisgKiBAcGFyYW0gaW1hZ2UgCSAgICBJbnB1dCBmaWxsZWQgaW1hZ2UKKyAqIEBwYXJhbSBwX3N0cmVhbSAJCUlucHV0IHN0Z3JlYW0KKyAqLworT1BKX0FQSSBPUEpfQk9PTCBPUEpfQ0FMTENPTlYgb3BqX3N0YXJ0X2NvbXByZXNzICgJb3BqX2NvZGVjX3QgKnBfY29kZWMsCisJCQkJCQkJCQkJCQkJb3BqX2ltYWdlX3QgKiBwX2ltYWdlLAorCQkJCQkJCQkJCQkJCW9wal9zdHJlYW1fdCAqcF9zdHJlYW0pOworCisvKioKKyAqIEVuZCB0byBjb21wcmVzcyB0aGUgY3VycmVudCBpbWFnZS4KKyAqIEBwYXJhbSBwX2NvZGVjIAkJQ29tcHJlc3NvciBoYW5kbGUKKyAqIEBwYXJhbSBwX3N0cmVhbSAJCUlucHV0IHN0Z3JlYW0KKyAqLworT1BKX0FQSSBPUEpfQk9PTCBPUEpfQ0FMTENPTlYgb3BqX2VuZF9jb21wcmVzcyAob3BqX2NvZGVjX3QgKnBfY29kZWMsCisJCQkJCQkJCQkJCQlvcGpfc3RyZWFtX3QgKnBfc3RyZWFtKTsKKworLyoqCisgKiBFbmNvZGUgYW4gaW1hZ2UgaW50byBhIEpQRUctMjAwMCBjb2Rlc3RyZWFtCisgKiBAcGFyYW0gcF9jb2RlYyAJCWNvbXByZXNzb3IgaGFuZGxlCisgKiBAcGFyYW0gcF9zdHJlYW0gCQlPdXRwdXQgYnVmZmVyIHN0cmVhbQorICoKKyAqIEByZXR1cm4gCQkJCVJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCByZXR1cm5zIGZhbHNlIG90aGVyd2lzZQorICovCitPUEpfQVBJIE9QSl9CT09MIE9QSl9DQUxMQ09OViBvcGpfZW5jb2RlKG9wal9jb2RlY190ICpwX2NvZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3QgKnBfc3RyZWFtKTsKKy8qCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBjb2RlYyBvdXRwdXQgZnVuY3Rpb25zIGRlZmluaXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworLyogRVhQRVJJTUVOVEFMIEZVTkNUSU9OUyBGT1IgTk9XLCBVU0VEIE9OTFkgSU4gSjJLX0RVTVAqLworCisvKioKK0Rlc3Ryb3kgQ29kZXN0cmVhbSBpbmZvcm1hdGlvbiBhZnRlciBjb21wcmVzc2lvbiBvciBkZWNvbXByZXNzaW9uCitAcGFyYW0gY3N0cl9pbmZvIENvZGVzdHJlYW0gaW5mb3JtYXRpb24gc3RydWN0dXJlCisqLworT1BKX0FQSSB2b2lkIE9QSl9DQUxMQ09OViBvcGpfZGVzdHJveV9jc3RyX2luZm8ob3BqX2NvZGVzdHJlYW1faW5mb192Ml90ICoqY3N0cl9pbmZvKTsKKworCisvKioKKyAqIER1bXAgdGhlIGNvZGVjIGluZm9ybWF0aW9uIGludG8gdGhlIG91dHB1dCBzdHJlYW0KKyAqCisgKiBAcGFyYW0JcF9jb2RlYwkJCXRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqIEBwYXJhbQlpbmZvX2ZsYWcJCXR5cGUgb2YgaW5mb3JtYXRpb24gZHVtcC4KKyAqIEBwYXJhbQlvdXRwdXRfc3RyZWFtCW91dHB1dCBzdHJlYW0gd2hlcmUgZHVtcCB0aGUgaW5mb3JtYXRpb25zIGdldCBmcm9tIHRoZSBjb2RlYy4KKyAqCisgKi8KK09QSl9BUEkgdm9pZCBPUEpfQ0FMTENPTlYgb3BqX2R1bXBfY29kZWMoCW9wal9jb2RlY190ICpwX2NvZGVjLAorCQkJCQkJCQkJCQlPUEpfSU5UMzIgaW5mb19mbGFnLAorCQkJCQkJCQkJCQlGSUxFKiBvdXRwdXRfc3RyZWFtKTsKKworLyoqCisgKiBHZXQgdGhlIGNvZGVzdHJlYW0gaW5mb3JtYXRpb24gZnJvbSB0aGUgY29kZWMKKyAqCisgKiBAcGFyYW0JcF9jb2RlYwkJCXRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqCisgKiBAcmV0dXJuCQkJCQlhIHBvaW50ZXIgdG8gYSBjb2Rlc3RyZWFtIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4KKyAqCisgKi8KK09QSl9BUEkgb3BqX2NvZGVzdHJlYW1faW5mb192Ml90KiBPUEpfQ0FMTENPTlYgb3BqX2dldF9jc3RyX2luZm8ob3BqX2NvZGVjX3QgKnBfY29kZWMpOworCisvKioKKyAqIEdldCB0aGUgY29kZXN0cmVhbSBpbmRleCBmcm9tIHRoZSBjb2RlYworICoKKyAqIEBwYXJhbQlwX2NvZGVjCQkJdGhlIGpwZWcyMDAwIGNvZGVjLgorICoKKyAqIEByZXR1cm4JCQkJCWEgcG9pbnRlciB0byBhIGNvZGVzdHJlYW0gaW5kZXggc3RydWN0dXJlLgorICoKKyAqLworT1BKX0FQSSBvcGpfY29kZXN0cmVhbV9pbmRleF90ICogT1BKX0NBTExDT05WIG9wal9nZXRfY3N0cl9pbmRleChvcGpfY29kZWNfdCAqcF9jb2RlYyk7CisKK09QSl9BUEkgdm9pZCBPUEpfQ0FMTENPTlYgb3BqX2Rlc3Ryb3lfY3N0cl9pbmRleChvcGpfY29kZXN0cmVhbV9pbmRleF90ICoqcF9jc3RyX2luZGV4KTsKKworCisvKioKKyAqIEdldCB0aGUgSlAyIGZpbGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29kZWMgRklYTUUKKyAqCisgKiBAcGFyYW0JcF9jb2RlYwkJCXRoZSBqcGVnMjAwMCBjb2RlYy4KKyAqCisgKiBAcmV0dXJuCQkJCQlhIHBvaW50ZXIgdG8gYSBKUDIgbWV0YWRhdGEgc3RydWN0dXJlLgorICoKKyAqLworT1BKX0FQSSBvcGpfanAyX21ldGFkYXRhX3QqIE9QSl9DQUxMQ09OViBvcGpfZ2V0X2pwMl9tZXRhZGF0YShvcGpfY29kZWNfdCAqcF9jb2RlYyk7CisKKy8qKgorICogR2V0IHRoZSBKUDIgZmlsZSBpbmRleCBmcm9tIHRoZSBjb2RlYyBGSVhNRQorICoKKyAqIEBwYXJhbQlwX2NvZGVjCQkJdGhlIGpwZWcyMDAwIGNvZGVjLgorICoKKyAqIEByZXR1cm4JCQkJCWEgcG9pbnRlciB0byBhIEpQMiBpbmRleCBzdHJ1Y3R1cmUuCisgKgorICovCitPUEpfQVBJIG9wal9qcDJfaW5kZXhfdCogT1BKX0NBTExDT05WIG9wal9nZXRfanAyX2luZGV4KG9wal9jb2RlY190ICpwX2NvZGVjKTsKKworCisvKgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgTUNUIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworLyoqCisgKiBTZXRzIHRoZSBNQ1QgbWF0cml4IHRvIHVzZS4KKyAqCisgKiBAcGFyYW0JcGFyYW1ldGVycwkJdGhlIHBhcmFtZXRlcnMgdG8gY2hhbmdlLgorICogQHBhcmFtCXBFbmNvZGluZ01hdHJpeAl0aGUgZW5jb2RpbmcgbWF0cml4LgorICogQHBhcmFtCXBfZGNfc2hpZnQJCXRoZSBkYyBzaGlmdCBjb2VmZmljaWVudHMgdG8gdXNlLgorICogQHBhcmFtCXBOYkNvbXAJCQl0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgb2YgdGhlIGltYWdlLgorICoKKyAqIEByZXR1cm4JdHJ1ZSBpZiB0aGUgcGFyYW1ldGVycyBjb3VsZCBiZSBzZXQuCisgKi8KK09QSl9BUEkgT1BKX0JPT0wgT1BKX0NBTExDT05WIG9wal9zZXRfTUNUKCBvcGpfY3BhcmFtZXRlcnNfdCAqcGFyYW1ldGVycywKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICBPUEpfRkxPQVQzMiAqIHBFbmNvZGluZ01hdHJpeCwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICBPUEpfSU5UMzIgKiBwX2RjX3NoaWZ0LAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgIE9QSl9VSU5UMzIgcE5iQ29tcCk7CisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogT1BFTkpQRUdfSCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wal9jbG9jay5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wal9jbG9jay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZjk5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX2Nsb2NrLmMKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZkZWYgX1dJTjMyCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorI2luY2x1ZGUgPHN5cy90aW1lcy5oPgorI2VuZGlmIC8qIF9XSU4zMiAqLworI2luY2x1ZGUgIm9wal9pbmNsdWRlcy5oIgorCitPUEpfRkxPQVQ2NCBvcGpfY2xvY2sodm9pZCkgeworI2lmZGVmIF9XSU4zMgorCS8qIF9XSU4zMjogdXNlIFF1ZXJ5UGVyZm9ybWFuY2UgKHZlcnkgYWNjdXJhdGUpICovCisgICAgTEFSR0VfSU5URUdFUiBmcmVxICwgdCA7CisgICAgLyogZnJlcSBpcyB0aGUgY2xvY2sgc3BlZWQgb2YgdGhlIENQVSAqLworICAgIFF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJmZyZXEpIDsKKwkvKiBjb3V0IDw8ICJmcmVxID0gIiA8PCAoKGRvdWJsZSkgZnJlcS5RdWFkUGFydCkgPDwgZW5kbDsgKi8KKyAgICAvKiB0IGlzIHRoZSBoaWdoIHJlc29sdXRpb24gcGVyZm9ybWFuY2UgY291bnRlciAoc2VlIE1TRE4pICovCisgICAgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIgKCAmIHQgKSA7CisgICAgcmV0dXJuICggdC5RdWFkUGFydCAvKE9QSl9GTE9BVDY0KSBmcmVxLlF1YWRQYXJ0ICkgOworI2Vsc2UKKwkvKiBVbml4IG9yIExpbnV4OiB1c2UgcmVzb3VyY2UgdXNhZ2UgKi8KKyAgICBzdHJ1Y3QgcnVzYWdlIHQ7CisgICAgT1BKX0ZMT0FUNjQgcHJvY1RpbWU7CisgICAgLyogKDEpIEdldCB0aGUgcnVzYWdlIGRhdGEgc3RydWN0dXJlIGF0IHRoaXMgbW9tZW50IChtYW4gZ2V0cnVzYWdlKSAqLworICAgIGdldHJ1c2FnZSgwLCZ0KTsKKyAgICAvKiAoMikgV2hhdCBpcyB0aGUgZWxhcHNlZCB0aW1lID8gLSBDUFUgdGltZSA9IFVzZXIgdGltZSArIFN5c3RlbSB0aW1lICovCisJLyogKDJhKSBHZXQgdGhlIHNlY29uZHMgKi8KKyAgICBwcm9jVGltZSA9IChPUEpfRkxPQVQ2NCkodC5ydV91dGltZS50dl9zZWMgKyB0LnJ1X3N0aW1lLnR2X3NlYyk7CisgICAgLyogKDJiKSBNb3JlIHByZWNpc2VseSEgR2V0IHRoZSBtaWNyb3NlY29uZHMgcGFydCAhICovCisgICAgcmV0dXJuICggcHJvY1RpbWUgKyAoT1BKX0ZMT0FUNjQpKHQucnVfdXRpbWUudHZfdXNlYyArIHQucnVfc3RpbWUudHZfdXNlYykgKiAxZS02ICkgOworI2VuZGlmCit9CisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfY2xvY2suaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfY2xvY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjUxNjhiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wal9jbG9jay5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgX19PUEpfQ0xPQ0tfSAorI2RlZmluZSBfX09QSl9DTE9DS19ICisvKioKK0BmaWxlIG9wal9jbG9jay5oCitAYnJpZWYgSW50ZXJuYWwgZnVuY3Rpb24gZm9yIHRpbWluZworCitUaGUgZnVuY3Rpb25zIGluIE9QSl9DTE9DSy5DIGFyZSBpbnRlcm5hbCB1dGlsaXRpZXMgbWFpbmx5IHVzZWQgZm9yIHRpbWluZy4KKyovCisKKy8qKiBAZGVmZ3JvdXAgTUlTQyBNSVNDIC0gTWlzY2VsbGFuZW91cyBpbnRlcm5hbCBmdW5jdGlvbnMgKi8KKy8qQHsqLworCisvKiogQG5hbWUgRXhwb3J0ZWQgZnVuY3Rpb25zICovCisvKkB7Ki8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgorRGlmZmVyZW5jZSBpbiBzdWNjZXNzaXZlIG9wal9jbG9jaygpIGNhbGxzIHRlbGxzIHlvdSB0aGUgZWxhcHNlZCB0aW1lCitAcmV0dXJuIFJldHVybnMgdGltZSBpbiBzZWNvbmRzCisqLworT1BKX0ZMT0FUNjQgb3BqX2Nsb2NrKHZvaWQpOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypAfSovCisKKy8qQH0qLworCisjZW5kaWYgLyogX19PUEpfQ0xPQ0tfSCAqLworCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX2NvZGVjLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX2NvZGVjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZkZmE3ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfY29kZWMuaApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBfX09QSl9DT0RFQ19ICisjZGVmaW5lIF9fT1BKX0NPREVDX0gKKy8qKgorQGZpbGUgb3BqX2NvZGVjLmgKKyovCisKKworLyoqCisgKiBNYWluIGNvZGVjIGhhbmRsZXIgdXNlZCBmb3IgY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX2NvZGVjX3ByaXZhdGUKK3sKKyAgICAvKiogRklYTUUgRE9DICovCisgICAgdW5pb24KKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBEZWNvbXByZXNzaW9uIGhhbmRsZXIuCisgICAgICAgICAqLworICAgICAgICBzdHJ1Y3Qgb3BqX2RlY29tcHJlc3Npb24KKyAgICAgICAgeworICAgICAgICAgICAgLyoqIE1haW4gaGVhZGVyIHJlYWRpbmcgZnVuY3Rpb24gaGFuZGxlciAqLworICAgICAgICAgICAgT1BKX0JPT0wgKCpvcGpfcmVhZF9oZWFkZXIpICggc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqIGNpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiBwX2NvZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QgKipwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIpOworCisgICAgICAgICAgICAvKiogRGVjb2RpbmcgZnVuY3Rpb24gKi8KKyAgICAgICAgICAgIE9QSl9CT09MICgqb3BqX2RlY29kZSkgKCB2b2lkICogcF9jb2RlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICogcF9jaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QgKiBwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyKTsKKworICAgICAgICAgICAgLyoqIEZJWE1FIERPQyAqLworICAgICAgICAgICAgT1BKX0JPT0wgKCpvcGpfcmVhZF90aWxlX2hlYWRlcikoIHZvaWQgKiBwX2NvZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX3RpbGVfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdGlsZV94MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3RpbGVfeTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogcF90aWxlX3gxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdGlsZV95MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9uYl9jb21wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQk9PTCAqIHBfc2hvdWxkX2dvX29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiBwX2NpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlcik7CisKKyAgICAgICAgICAgIC8qKiBGSVhNRSBET0MgKi8KKyAgICAgICAgICAgIE9QSl9CT09MICgqb3BqX2RlY29kZV90aWxlX2RhdGEpKCB2b2lkICogcF9jb2RlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiBwX2NpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlcik7CisKKyAgICAgICAgICAgIC8qKiBSZWFkaW5nIGZ1bmN0aW9uIHVzZWQgYWZ0ZXIgY29kZXN0cmVhbSBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgICAgIE9QSl9CT09MICgqIG9wal9lbmRfZGVjb21wcmVzcykgKCB2b2lkICpwX2NvZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiBjaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIpOworCisgICAgICAgICAgICAvKiogQ29kZWMgZGVzdHJveSBmdW5jdGlvbiBoYW5kbGVyICovCisgICAgICAgICAgICB2b2lkICgqb3BqX2Rlc3Ryb3kpICh2b2lkICogcF9jb2RlYyk7CisKKyAgICAgICAgICAgIC8qKiBTZXR1cCBkZWNvZGVyIGZ1bmN0aW9uIGhhbmRsZXIgKi8KKyAgICAgICAgICAgIHZvaWQgKCpvcGpfc2V0dXBfZGVjb2RlcikgKCB2b2lkICogcF9jb2RlYywgb3BqX2RwYXJhbWV0ZXJzX3QgKiBwX3BhcmFtKTsKKworICAgICAgICAgICAgLyoqIFNldCBkZWNvZGUgYXJlYSBmdW5jdGlvbiBoYW5kbGVyICovCisgICAgICAgICAgICBPUEpfQk9PTCAoKm9wal9zZXRfZGVjb2RlX2FyZWEpICggdm9pZCAqIHBfY29kZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QgKiBwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwX3N0YXJ0X3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBfZW5kX3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBfc3RhcnRfeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgcF9lbmRfeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlcik7CisKKyAgICAgICAgICAgIC8qKiBHZXQgdGlsZSBmdW5jdGlvbiAqLworICAgICAgICAgICAgT1BKX0JPT0wgKCpvcGpfZ2V0X2RlY29kZWRfdGlsZSkgKCB2b2lkICpwX2NvZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfc3RyZWFtX3ByaXZhdGVfdCAqIHBfY2lvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfaW1hZ2VfdCAqcF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9ldmVudF9tZ3IgKiBwX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgdGlsZV9pbmRleCk7CisKKyAgICAgICAgICAgIC8qKiBTZXQgdGhlIGRlY29kZWQgcmVzb2x1dGlvbiBmYWN0b3IgKi8KKyAgICAgICAgICAgIE9QSl9CT09MICgqb3BqX3NldF9kZWNvZGVkX3Jlc29sdXRpb25fZmFjdG9yKSAoIHZvaWQgKiBwX2NvZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiByZXNfZmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21ncl90ICogcF9tYW5hZ2VyKTsKKyAgICAgICAgfSBtX2RlY29tcHJlc3Npb247CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbXByZXNzaW9uIGhhbmRsZXIuIEZJWE1FIERPQworICAgICAgICAgKi8KKyAgICAgICAgc3RydWN0IG9wal9jb21wcmVzc2lvbgorICAgICAgICB7CisgICAgICAgICAgICBPUEpfQk9PTCAoKiBvcGpfc3RhcnRfY29tcHJlc3MpICggdm9pZCAqcF9jb2RlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX3N0cmVhbV9wcml2YXRlICogY2lvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfaW1hZ2UgKiBwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyKTsKKworICAgICAgICAgICAgT1BKX0JPT0wgKCogb3BqX2VuY29kZSkgKCB2b2lkICogcF9jb2RlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqcF9jaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyKTsKKworICAgICAgICAgICAgT1BKX0JPT0wgKCogb3BqX3dyaXRlX3RpbGUpICggdm9pZCAqIHBfY29kZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfc3RyZWFtX3ByaXZhdGUgKiBwX2NpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyKTsKKworICAgICAgICAgICAgT1BKX0JPT0wgKCogb3BqX2VuZF9jb21wcmVzcykgKAl2b2lkICogcF9jb2RlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9zdHJlYW1fcHJpdmF0ZSAqIHBfY2lvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgb3BqX2V2ZW50X21nciAqIHBfbWFuYWdlcik7CisKKyAgICAgICAgICAgIHZvaWQgKCogb3BqX2Rlc3Ryb3kpICh2b2lkICogcF9jb2RlYyk7CisKKyAgICAgICAgICAgIHZvaWQgKCogb3BqX3NldHVwX2VuY29kZXIpICggdm9pZCAqIHBfY29kZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jcGFyYW1ldGVyc190ICogcF9wYXJhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wal9pbWFnZSAqIHBfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcGpfZXZlbnRfbWdyICogcF9tYW5hZ2VyKTsKKyAgICAgICAgfSBtX2NvbXByZXNzaW9uOworICAgIH0gbV9jb2RlY19kYXRhOworICAgIC8qKiBGSVhNRSBET0MqLworICAgIHZvaWQgKiBtX2NvZGVjOworICAgIC8qKiBFdmVudCBoYW5kbGVyICovCisgICAgb3BqX2V2ZW50X21ncl90IG1fZXZlbnRfbWdyOworICAgIC8qKiBGbGFnIHRvIGluZGljYXRlIGlmIHRoZSBjb2RlYyBpcyB1c2VkIHRvIGRlY29kZSBvciBlbmNvZGUqLworICAgIE9QSl9CT09MIGlzX2RlY29tcHJlc3NvcjsKKyAgICB2b2lkICgqb3BqX2R1bXBfY29kZWMpICh2b2lkICogcF9jb2RlYywgT1BKX0lOVDMyIGluZm9fZmxhZywgRklMRSogb3V0cHV0X3N0cmVhbSk7CisgICAgb3BqX2NvZGVzdHJlYW1faW5mb192Ml90KiAoKm9wal9nZXRfY29kZWNfaW5mbykodm9pZCogcF9jb2RlYyk7CisgICAgb3BqX2NvZGVzdHJlYW1faW5kZXhfdCogKCpvcGpfZ2V0X2NvZGVjX2luZGV4KSh2b2lkKiBwX2NvZGVjKTsKK30KK29wal9jb2RlY19wcml2YXRlX3Q7CisKKworI2VuZGlmIC8qIF9fT1BKX0NPREVDX0ggKi8KKwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wal9jb25maWcuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY5MWU4NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfY29uZmlnLmgKQEAgLTAsMCArMSwyIEBACisvKiBjcmVhdGUgb3BqX2NvbmZpZy5oIGZvciBDTWFrZSAqLworI2RlZmluZSBPUEpfSEFWRV9TVERJTlRfSCAJCTEKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfY29uZmlnLmguY21ha2UuaW4gYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX2NvbmZpZy5oLmNtYWtlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNTMxMWIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX2NvbmZpZy5oLmNtYWtlLmluCkBAIC0wLDAgKzEsMiBAQAorLyogY3JlYXRlIG9wal9jb25maWcuaCBmb3IgQ01ha2UgKi8KKyNjbWFrZWRlZmluZSBPUEpfSEFWRV9TVERJTlRfSCAJCUBPUEpfSEFWRV9TVERJTlRfSEAKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfY29uZmlnX3ByaXZhdGUuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfY29uZmlnX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzA3N2ZjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wal9jb25maWdfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qIGNyZWF0ZSBvcGpfY29uZmlnX3ByaXZhdGUuaCBmb3IgQ01ha2UgKi8KKy8qICN1bmRlZiBPUEpfSEFWRV9JTlRUWVBFU19IICovCisKKyNpZm5kZWYgX1dJTjMyCisjaWZuZGVmIE9QSl9IQVZFX0lOVFRZUEVTX0gKKyNkZWZpbmUgT1BKX0hBVkVfSU5UVFlQRVNfSAorI2VuZGlmCisjZW5kaWYKKworI2RlZmluZSBPUEpfUEFDS0FHRV9WRVJTSU9OICIyLjEuMCIKKworLyogTm90IHVzZWQgYnkgb3BlbmpwMiovCisvKiNkZWZpbmUgSEFWRV9NRU1PUllfSCAxKi8KKy8qI2RlZmluZSBIQVZFX1NURExJQl9IIDEqLworLyogI3VuZGVmIEhBVkVfU1RSSU5HU19IICovCisvKiNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxKi8KKy8qI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMSovCisvKiNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxICovCisvKiAjdW5kZWYgSEFWRV9VTklTVERfSCAqLworCisvKiAjdW5kZWYgX0xBUkdFRklMRV9TT1VSQ0UgKi8KKy8qICN1bmRlZiBfTEFSR0VfRklMRVMgKi8KKy8qICN1bmRlZiBfRklMRV9PRkZTRVRfQklUUyAqLworLyogI3VuZGVmIE9QSl9IQVZFX0ZTRUVLTyAqLworCisjaWZuZGVmIF9XSU4zMgorI2lmbmRlZiBPUEpfSEFWRV9GU0VFS08KKyNkZWZpbmUgT1BKX0hBVkVfRlNFRUtPCisjZW5kaWYKKyNlbmRpZgorCisvKiBCeXRlIG9yZGVyLiAgKi8KKy8qIEFsbCBjb21waWxlcnMgdGhhdCBzdXBwb3J0IE1hYyBPUyBYIGRlZmluZSBlaXRoZXIgX19CSUdfRU5ESUFOX18gb3IKK19fTElUVExFX0VORElBTl9fIHRvIG1hdGNoIHRoZSBlbmRpYW5uZXNzIG9mIHRoZSBhcmNoaXRlY3R1cmUgYmVpbmcKK2NvbXBpbGVkIGZvci4gVGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUKK21hY2hpbmUgZG9pbmcgdGhlIGJ1aWxkaW5nLiBJbiBvcmRlciB0byBzdXBwb3J0IFVuaXZlcnNhbCBCaW5hcmllcyBvbgorTWFjIE9TIFgsIHdlIHByZWZlciB0aG9zZSBkZWZpbmVzIHRvIGRlY2lkZSB0aGUgZW5kaWFubmVzcy4KK09uIG90aGVyIHBsYXRmb3JtcyB3ZSB1c2UgdGhlIHJlc3VsdCBvZiB0aGUgVFJZX1JVTi4gKi8KKyNpZiAhZGVmaW5lZChfX0FQUExFX18pCisvKiAjdW5kZWYgT1BKX0JJR19FTkRJQU4gKi8KKyNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX18pCisjIGRlZmluZSBPUEpfQklHX0VORElBTgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX2luY2x1ZGVzLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX2luY2x1ZGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyMzhiMQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfaW5jbHVkZXMuaApAQCAtMCwwICsxLDE4MCBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDExLTIwMTIsIENlbnRyZSBOYXRpb25hbCBkJ0V0dWRlcyBTcGF0aWFsZXMgKENORVMpLCBGUiAKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgQ1MgU3lzdGVtZXMgZCdJbmZvcm1hdGlvbiwgRnJhbmNlCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIE9QSl9JTkNMVURFU19ICisjZGVmaW5lIE9QSl9JTkNMVURFU19ICisKKy8qCisgKiBUaGlzIG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIGFueSBzeXN0ZW0gaGVhZGVycywKKyAqIHNpbmNlIHRoZXkgY2FuIHJlYWN0IHRvIG1hY3JvIGRlZmluZWQgdGhlcmUKKyAqLworI2luY2x1ZGUgIm9wal9jb25maWdfcHJpdmF0ZS5oIgorCisvKgorID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIFN0YW5kYXJkIGluY2x1ZGVzIHVzZWQgYnkgdGhlIGxpYnJhcnkKKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworI2luY2x1ZGUgPG1lbW9yeS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKy8qCisgIFVzZSBmc2Vla28oKSBhbmQgZnRlbGxvKCkgaWYgdGhleSBhcmUgYXZhaWxhYmxlIHNpbmNlIHRoZXkgdXNlCisgICdvZmZfdCcgcmF0aGVyIHRoYW4gJ2xvbmcnLiAgSXQgaXMgd3JvbmcgdG8gdXNlIGZzZWVrbygpIGFuZAorICBmdGVsbG8oKSBvbmx5IG9uIHN5c3RlbXMgd2l0aCBzcGVjaWFsIExGUyBzdXBwb3J0IHNpbmNlIHNvbWUgc3lzdGVtcworICAoZS5nLiBGcmVlQlNEKSBzdXBwb3J0IGEgNjQtYml0IG9mZl90IGJ5IGRlZmF1bHQuCisqLworI2lmIGRlZmluZWQoT1BKX0hBVkVfRlNFRUtPKSAmJiAhZGVmaW5lZChmc2VlaykKKyMgIGRlZmluZSBmc2VlayAgZnNlZWtvCisjICBkZWZpbmUgZnRlbGwgIGZ0ZWxsbworI2VuZGlmCisKKworI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKFdpbmRvd3M5NSkgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBcCisgICEoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxNDAwKSAmJiBcCisgICEoZGVmaW5lZChfX01JTkdXMzJfXykgJiYgX19NU1ZDUlRfVkVSU0lPTl9fIDwgMHg4MDApCisgIC8qCisgICAgV2luZG93cyAnOTUgYW5kIEJvcmxhbmQgQyBkbyBub3Qgc3VwcG9ydCBfbHNlZWtpNjQKKyAgICBWaXN1YWwgU3R1ZGlvIGRvZXMgbm90IHN1cHBvcnQgX2ZzZWVraTY0IGFuZCBfZnRlbGxpNjQgdW50aWwgdGhlIDIwMDUgcmVsZWFzZS4KKyAgICBXaXRob3V0IHRoZXNlIGludGVyZmFjZXMsIGZpbGVzIG92ZXIgMkdCIGluIHNpemUgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIFdpbmRvd3MuCisgICovCisjICBkZWZpbmUgT1BKX0ZTRUVLKHN0cmVhbSxvZmZzZXQsd2hlbmNlKSBfZnNlZWtpNjQoc3RyZWFtLC8qIF9faW50NjQgKi8gb2Zmc2V0LHdoZW5jZSkKKyMgIGRlZmluZSBPUEpfRlNUQVQoZmlsZGVzLHN0YXRfYnVmZikgX2ZzdGF0aTY0KGZpbGRlcywvKiBzdHJ1Y3QgX3N0YXRpNjQgKi8gc3RhdF9idWZmKQorIyAgZGVmaW5lIE9QSl9GVEVMTChzdHJlYW0pIC8qIF9faW50NjQgKi8gX2Z0ZWxsaTY0KHN0cmVhbSkKKyMgIGRlZmluZSBPUEpfU1RBVF9TVFJVQ1RfVCBzdHJ1Y3QgX3N0YXRpNjQKKyMgIGRlZmluZSBPUEpfU1RBVChwYXRoLHN0YXRfYnVmZikgX3N0YXRpNjQocGF0aCwvKiBzdHJ1Y3QgX3N0YXRpNjQgKi8gc3RhdF9idWZmKQorI2Vsc2UKKyMgIGRlZmluZSBPUEpfRlNFRUsoc3RyZWFtLG9mZnNldCx3aGVuY2UpIGZzZWVrKHN0cmVhbSxvZmZzZXQsd2hlbmNlKQorIyAgZGVmaW5lIE9QSl9GU1RBVChmaWxkZXMsc3RhdF9idWZmKSBmc3RhdChmaWxkZXMsc3RhdF9idWZmKQorIyAgZGVmaW5lIE9QSl9GVEVMTChzdHJlYW0pIGZ0ZWxsKHN0cmVhbSkKKyMgIGRlZmluZSBPUEpfU1RBVF9TVFJVQ1RfVCBzdHJ1Y3Qgc3RhdAorIyAgZGVmaW5lIE9QSl9TVEFUKHBhdGgsc3RhdF9idWZmKSBzdGF0KHBhdGgsc3RhdF9idWZmKQorI2VuZGlmCisKKworLyoKKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBPcGVuSlBFRyBpbnRlcmZhY2UKKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKi8KKyNpbmNsdWRlICJvcGVuanBlZy5oIgorCisvKgorID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIE9wZW5KUEVHIG1vZHVsZXMKKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworCisvKiBJZ25vcmUgR0NDIGF0dHJpYnV0ZXMgaWYgdGhpcyBpcyBub3QgR0NDICovCisjaWZuZGVmIF9fR05VQ19fCisJI2RlZmluZSBfX2F0dHJpYnV0ZV9fKHgpIC8qIF9fYXR0cmlidXRlX18oeCkgKi8KKyNlbmRpZgorCisKKy8qIEFyZSByZXN0cmljdGVkIHBvaW50ZXJzIGF2YWlsYWJsZT8gKEM5OSkgKi8KKyNpZiAoX19TVERDX1ZFUlNJT05fXyAhPSAxOTk5MDFMKQorCS8qIE5vdCBhIEM5OSBjb21waWxlciAqLworCSNpZmRlZiBfX0dOVUNfXworCQkjZGVmaW5lIHJlc3RyaWN0IF9fcmVzdHJpY3RfXworCSNlbHNlCisJCSNkZWZpbmUgcmVzdHJpY3QgLyogcmVzdHJpY3QgKi8KKwkjZW5kaWYKKyNlbmRpZgorCisvKiBNU1ZDIGJlZm9yZSAyMDEzIGFuZCBCb3JsYW5kIEMgZG8gbm90IGhhdmUgbHJpbnRmICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDwgMTgwMCkgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCitzdGF0aWMgSU5MSU5FIGxvbmcgbHJpbnRmKGZsb2F0IGYpeworI2lmZGVmIF9NX1g2NAorICAgIHJldHVybiAobG9uZykoKGY+MC4wZikgPyAoZiArIDAuNWYpOihmIC0wLjVmKSk7CisjZWxzZQorICAgIGludCBpOworIAorICAgIF9hc217CisgICAgICAgIGZsZCBmCisgICAgICAgIGZpc3RwIGkKKyAgICB9OworIAorICAgIHJldHVybiBpOworI2VuZGlmCit9CisjZW5kaWYKKworI2luY2x1ZGUgIm9wal9pbnR0eXBlcy5oIgorI2luY2x1ZGUgIm9wal9jbG9jay5oIgorI2luY2x1ZGUgIm9wal9tYWxsb2MuaCIKKyNpbmNsdWRlICJmdW5jdGlvbl9saXN0LmgiCisjaW5jbHVkZSAiZXZlbnQuaCIKKyNpbmNsdWRlICJiaW8uaCIKKyNpbmNsdWRlICJjaW8uaCIKKworI2luY2x1ZGUgImltYWdlLmgiCisjaW5jbHVkZSAiaW52ZXJ0LmgiCisjaW5jbHVkZSAiajJrLmgiCisjaW5jbHVkZSAianAyLmgiCisKKyNpbmNsdWRlICJtcWMuaCIKKyNpbmNsdWRlICJyYXcuaCIKKyNpbmNsdWRlICJiaW8uaCIKKworI2luY2x1ZGUgInBpLmgiCisjaW5jbHVkZSAidGd0LmgiCisjaW5jbHVkZSAidGNkLmgiCisjaW5jbHVkZSAidDEuaCIKKyNpbmNsdWRlICJkd3QuaCIKKyNpbmNsdWRlICJ0Mi5oIgorI2luY2x1ZGUgIm1jdC5oIgorI2luY2x1ZGUgIm9wal9pbnRtYXRoLmgiCisKKyNpZmRlZiBVU0VfSlBJUAorI2luY2x1ZGUgImNpZHhfbWFuYWdlci5oIgorI2luY2x1ZGUgImluZGV4Ym94X21hbmFnZXIuaCIKKyNlbmRpZgorCisvKiBKUFdMPj4gKi8KKyNpZmRlZiBVU0VfSlBXTAorI2luY2x1ZGUgIm9wZW5qcHdsL2pwd2wuaCIKKyNlbmRpZiAvKiBVU0VfSlBXTCAqLworLyogPDxKUFdMICovCisKKy8qIFYyICovCisjaW5jbHVkZSAib3BqX2NvZGVjLmgiCisKKworI2VuZGlmIC8qIE9QSl9JTkNMVURFU19IICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX2ludG1hdGguaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfaW50bWF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjODk4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX2ludG1hdGguaApAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBfX0lOVF9ICisjZGVmaW5lIF9fSU5UX0gKKy8qKgorQGZpbGUgb3BqX2ludG1hdGguaAorQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIG9wZXJhdGlvbnMgb24gaW50ZWdlcnMgKElOVCkKKworVGhlIGZ1bmN0aW9ucyBpbiBPUEpfSU5UTUFUSC5IIGhhdmUgZm9yIGdvYWwgdG8gcmVhbGl6ZSBvcGVyYXRpb25zIG9uIGludGVnZXJzLgorKi8KKworLyoqIEBkZWZncm91cCBPUEpfSU5UTUFUSCBPUEpfSU5UTUFUSCAtIEltcGxlbWVudGF0aW9uIG9mIG9wZXJhdGlvbnMgb24gaW50ZWdlcnMgKi8KKy8qQHsqLworCisvKiogQG5hbWUgRXhwb3J0ZWQgZnVuY3Rpb25zIChzZWUgYWxzbyBvcGVuanBlZy5oKSAqLworLypAeyovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoqCitHZXQgdGhlIG1pbmltdW0gb2YgdHdvIGludGVnZXJzCitAcmV0dXJuIFJldHVybnMgYSBpZiBhIDwgYiBlbHNlIGIKKyovCitzdGF0aWMgSU5MSU5FIE9QSl9JTlQzMiBvcGpfaW50X21pbihPUEpfSU5UMzIgYSwgT1BKX0lOVDMyIGIpIHsKKwlyZXR1cm4gYSA8IGIgPyBhIDogYjsKK30KKworLyoqCitHZXQgdGhlIG1pbmltdW0gb2YgdHdvIGludGVnZXJzCitAcmV0dXJuIFJldHVybnMgYSBpZiBhIDwgYiBlbHNlIGIKKyovCitzdGF0aWMgSU5MSU5FIE9QSl9VSU5UMzIgb3BqX3VpbnRfbWluKE9QSl9VSU5UMzIgYSwgT1BKX1VJTlQzMiBiKSB7CisJcmV0dXJuIGEgPCBiID8gYSA6IGI7Cit9CisKKy8qKgorR2V0IHRoZSBtYXhpbXVtIG9mIHR3byBpbnRlZ2VycworQHJldHVybiBSZXR1cm5zIGEgaWYgYSA+IGIgZWxzZSBiCisqLworc3RhdGljIElOTElORSBPUEpfSU5UMzIgb3BqX2ludF9tYXgoT1BKX0lOVDMyIGEsIE9QSl9JTlQzMiBiKSB7CisJcmV0dXJuIChhID4gYikgPyBhIDogYjsKK30KKworLyoqCitHZXQgdGhlIG1heGltdW0gb2YgdHdvIGludGVnZXJzCitAcmV0dXJuIFJldHVybnMgYSBpZiBhID4gYiBlbHNlIGIKKyovCitzdGF0aWMgSU5MSU5FIE9QSl9VSU5UMzIgb3BqX3VpbnRfbWF4KE9QSl9VSU5UMzIgIGEsIE9QSl9VSU5UMzIgIGIpIHsKKwlyZXR1cm4gKGEgPiBiKSA/IGEgOiBiOworfQorCisvKioKK0NsYW1wIGFuIGludGVnZXIgaW5zaWRlIGFuIGludGVydmFsCitAcmV0dXJuCis8dWw+Cis8bGk+UmV0dXJucyBhIGlmIChtaW4gPCBhIDwgbWF4KQorPGxpPlJldHVybnMgbWF4IGlmIChhID4gbWF4KQorPGxpPlJldHVybnMgbWluIGlmIChhIDwgbWluKSAKKzwvdWw+CisqLworc3RhdGljIElOTElORSBPUEpfSU5UMzIgb3BqX2ludF9jbGFtcChPUEpfSU5UMzIgYSwgT1BKX0lOVDMyIG1pbiwgT1BKX0lOVDMyIG1heCkgeworCWlmIChhIDwgbWluKQorCQlyZXR1cm4gbWluOworCWlmIChhID4gbWF4KQorCQlyZXR1cm4gbWF4OworCXJldHVybiBhOworfQorLyoqCitAcmV0dXJuIEdldCBhYnNvbHV0ZSB2YWx1ZSBvZiBpbnRlZ2VyCisqLworc3RhdGljIElOTElORSBPUEpfSU5UMzIgb3BqX2ludF9hYnMoT1BKX0lOVDMyIGEpIHsKKwlyZXR1cm4gYSA8IDAgPyAtYSA6IGE7Cit9CisvKioKK0RpdmlkZSBhbiBpbnRlZ2VyIGFuZCByb3VuZCB1cHdhcmRzCitAcmV0dXJuIFJldHVybnMgYSBkaXZpZGVkIGJ5IGIKKyovCitzdGF0aWMgSU5MSU5FIE9QSl9JTlQzMiBvcGpfaW50X2NlaWxkaXYoT1BKX0lOVDMyIGEsIE9QSl9JTlQzMiBiKSB7CisgIGFzc2VydChiKTsKKwlyZXR1cm4gKGEgKyBiIC0gMSkgLyBiOworfQorCisvKioKK0RpdmlkZSBhbiBpbnRlZ2VyIGFuZCByb3VuZCB1cHdhcmRzCitAcmV0dXJuIFJldHVybnMgYSBkaXZpZGVkIGJ5IGIKKyovCitzdGF0aWMgSU5MSU5FIE9QSl9VSU5UMzIgIG9wal91aW50X2NlaWxkaXYoT1BKX1VJTlQzMiAgYSwgT1BKX1VJTlQzMiAgYikgeworCXJldHVybiAoYSArIGIgLSAxKSAvIGI7Cit9CisKKy8qKgorRGl2aWRlIGFuIGludGVnZXIgYnkgYSBwb3dlciBvZiAyIGFuZCByb3VuZCB1cHdhcmRzCitAcmV0dXJuIFJldHVybnMgYSBkaXZpZGVkIGJ5IDJeYgorKi8KK3N0YXRpYyBJTkxJTkUgT1BKX0lOVDMyIG9wal9pbnRfY2VpbGRpdnBvdzIoT1BKX0lOVDMyIGEsIE9QSl9JTlQzMiBiKSB7CisJcmV0dXJuIChPUEpfSU5UMzIpKChhICsgKE9QSl9JTlQ2NCkoMSA8PCBiKSAtIDEpID4+IGIpOworfQorLyoqCitEaXZpZGUgYW4gaW50ZWdlciBieSBhIHBvd2VyIG9mIDIgYW5kIHJvdW5kIGRvd253YXJkcworQHJldHVybiBSZXR1cm5zIGEgZGl2aWRlZCBieSAyXmIKKyovCitzdGF0aWMgSU5MSU5FIE9QSl9JTlQzMiBvcGpfaW50X2Zsb29yZGl2cG93MihPUEpfSU5UMzIgYSwgT1BKX0lOVDMyIGIpIHsKKwlyZXR1cm4gYSA+PiBiOworfQorLyoqCitHZXQgbG9nYXJpdGhtIG9mIGFuIGludGVnZXIgYW5kIHJvdW5kIGRvd253YXJkcworQHJldHVybiBSZXR1cm5zIGxvZzIoYSkKKyovCitzdGF0aWMgSU5MSU5FIE9QSl9JTlQzMiBvcGpfaW50X2Zsb29ybG9nMihPUEpfSU5UMzIgYSkgeworCU9QSl9JTlQzMiBsOworCWZvciAobCA9IDA7IGEgPiAxOyBsKyspIHsKKwkJYSA+Pj0gMTsKKwl9CisJcmV0dXJuIGw7Cit9CisvKioKK0dldCBsb2dhcml0aG0gb2YgYW4gaW50ZWdlciBhbmQgcm91bmQgZG93bndhcmRzCitAcmV0dXJuIFJldHVybnMgbG9nMihhKQorKi8KK3N0YXRpYyBJTkxJTkUgT1BKX1VJTlQzMiAgb3BqX3VpbnRfZmxvb3Jsb2cyKE9QSl9VSU5UMzIgIGEpIHsKKwlPUEpfVUlOVDMyICBsOworCWZvciAobCA9IDA7IGEgPiAxOyArK2wpCisJeworCQlhID4+PSAxOworCX0KKwlyZXR1cm4gbDsKK30KKworLyoqCitNdWx0aXBseSB0d28gZml4ZWQtcHJlY2lzaW9uIHJhdGlvbmFsIG51bWJlcnMuCitAcGFyYW0gYQorQHBhcmFtIGIKK0ByZXR1cm4gUmV0dXJucyBhICogYgorKi8KK3N0YXRpYyBJTkxJTkUgT1BKX0lOVDMyIG9wal9pbnRfZml4X211bChPUEpfSU5UMzIgYSwgT1BKX0lOVDMyIGIpIHsKKyAgICBPUEpfSU5UNjQgdGVtcCA9IChPUEpfSU5UNjQpIGEgKiAoT1BKX0lOVDY0KSBiIDsKKyAgICB0ZW1wICs9IHRlbXAgJiA0MDk2OworICAgIHJldHVybiAoT1BKX0lOVDMyKSAodGVtcCA+PiAxMykgOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypAfSovCisKKy8qQH0qLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfaW50dHlwZXMuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfaW50dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzRhZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wal9pbnR0eXBlcy5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIE1hdGhpZXUgTWFsYXRlcnJlIDxtYXRoaWV1Lm1hbGF0ZXJyZUBnbWFpbC5jb20+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIE9QSl9JTlRUWVBFU19ICisjZGVmaW5lIE9QSl9JTlRUWVBFU19ICisKKyNpbmNsdWRlICJvcGpfY29uZmlnX3ByaXZhdGUuaCIKKyNpZmRlZiBPUEpfSEFWRV9JTlRUWVBFU19ICisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNlbHNlCisjaWYgZGVmaW5lZChfV0lOMzIpCisjZGVmaW5lIFBSSWQ2NCAiSTY0ZCIKKyNkZWZpbmUgUFJJaTY0ICJJNjRpIgorI2RlZmluZSBQUkl1NjQgIkk2NHUiCisjZGVmaW5lIFBSSXg2NCAiSTY0eCIKKyNlbHNlCisjZXJyb3IgdW5zdXBwb3J0ZWQgcGxhdGZvcm0KKyNlbmRpZgorI2VuZGlmCisKKyNlbmRpZiAvKiBPUEpfSU5UVFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL29wal9tYWxsb2MuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfbWFsbG9jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQxZGZhZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfbWFsbG9jLmgKQEAgLTAsMCArMSwxOTQgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIENvcHlyaWdodCAoYykgMjAwNywgQ2FsbHVtIExlcndpY2sgPHNlZ0BoYXh4ZWQuY29tPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBfX09QSl9NQUxMT0NfSAorI2RlZmluZSBfX09QSl9NQUxMT0NfSAorLyoqCitAZmlsZSBvcGpfbWFsbG9jLmgKK0BicmllZiBJbnRlcm5hbCBmdW5jdGlvbnMKKworVGhlIGZ1bmN0aW9ucyBpbiBvcGpfbWFsbG9jLmggYXJlIGludGVybmFsIHV0aWxpdGllcyB1c2VkIGZvciBtZW1vcnkgbWFuYWdlbWVudC4KKyovCisKKy8qKiBAZGVmZ3JvdXAgTUlTQyBNSVNDIC0gTWlzY2VsbGFuZW91cyBpbnRlcm5hbCBmdW5jdGlvbnMgKi8KKy8qQHsqLworCisvKiogQG5hbWUgRXhwb3J0ZWQgZnVuY3Rpb25zICovCisvKkB7Ki8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgorQWxsb2NhdGUgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgYmxvY2sKK0BwYXJhbSBzaXplIEJ5dGVzIHRvIGFsbG9jYXRlCitAcmV0dXJuIFJldHVybnMgYSB2b2lkIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBzcGFjZSwgb3IgTlVMTCBpZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZQorKi8KKyNkZWZpbmUgX0ZPWElUX01FTV9NQU5BR0VSXworI2lmZGVmIF9GT1hJVF9NRU1fTUFOQUdFUl8KK3ZvaWQqIG9wal9tYWxsb2Moc2l6ZV90IHNpemUpOwordm9pZCogb3BqX2NhbGxvYyhzaXplX3QgX051bU9mRWxlbWVudHMsIHNpemVfdCBfU2l6ZU9mRWxlbWVudHMpOwordm9pZCogb3BqX3JlYWxsb2Modm9pZCAqIG0sIHNpemVfdCBzKTsKK3ZvaWQgb3BqX2ZyZWUodm9pZCAqIG0pOworCisjZGVmaW5lIG9wal9hbGlnbmVkX21hbGxvYyhzaXplKSBvcGpfbWFsbG9jKHNpemUpCisjZGVmaW5lIG9wal9hbGlnbmVkX2ZyZWUobSkgb3BqX2ZyZWUobSkKKyNlbHNlCisjaWZkZWYgQUxMT0NfUEVSRl9PUFQKK3ZvaWQgKiBPUEpfQ0FMTENPTlYgb3BqX21hbGxvYyhzaXplX3Qgc2l6ZSk7CisjZWxzZQorLyogcHJldmVudCBhc3NlcnRpb24gb24gb3ZlcmZsb3cgZm9yIE1TVkMgKi8KKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBvcGpfbWFsbG9jKHNpemUpICgoc2l6ZV90KShzaXplKSA+PSAoc2l6ZV90KS0weDEwMCA/IE5VTEwgOiBtYWxsb2Moc2l6ZSkpCisjZWxzZQorI2RlZmluZSBvcGpfbWFsbG9jKHNpemUpIG1hbGxvYyhzaXplKQorI2VuZGlmCisjZW5kaWYKKworLyoqCitBbGxvY2F0ZSBhIG1lbW9yeSBibG9jayB3aXRoIGVsZW1lbnRzIGluaXRpYWxpemVkIHRvIDAKK0BwYXJhbSBudW0gQmxvY2tzIHRvIGFsbG9jYXRlCitAcGFyYW0gc2l6ZSBCeXRlcyBwZXIgYmxvY2sgdG8gYWxsb2NhdGUKK0ByZXR1cm4gUmV0dXJucyBhIHZvaWQgcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIHNwYWNlLCBvciBOVUxMIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCisqLworI2lmZGVmIEFMTE9DX1BFUkZfT1BUCit2b2lkICogT1BKX0NBTExDT05WIG9wal9jYWxsb2Moc2l6ZV90IF9OdW1PZkVsZW1lbnRzLCBzaXplX3QgX1NpemVPZkVsZW1lbnRzKTsKKyNlbHNlCisvKiBwcmV2ZW50IGFzc2VydGlvbiBvbiBvdmVyZmxvdyBmb3IgTVNWQyAqLworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIG9wal9jYWxsb2MobnVtLCBzaXplKSAoKHNpemVfdCkobnVtKSAhPSAwICYmIChzaXplX3QpKG51bSkgPj0gKHNpemVfdCktMHgxMDAgLyAoc2l6ZV90KShzaXplKSA/IE5VTEwgOiBjYWxsb2MobnVtLCBzaXplKSkKKyNlbHNlCisjZGVmaW5lIG9wal9jYWxsb2MobnVtLCBzaXplKSBjYWxsb2MobnVtLCBzaXplKQorI2VuZGlmCisjZW5kaWYKKworLyoqCitBbGxvY2F0ZSBtZW1vcnkgYWxpZ25lZCB0byBhIDE2IGJ5dGUgYm91bmRyeQorQHBhcmFtIHNpemUgQnl0ZXMgdG8gYWxsb2NhdGUKK0ByZXR1cm4gUmV0dXJucyBhIHZvaWQgcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIHNwYWNlLCBvciBOVUxMIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCisqLworLyogRklYTUU6IFRoZXNlIHNob3VsZCBiZSBzZXQgd2l0aCBjbWFrZSB0ZXN0cywgYnV0IHdlJ3JlIGN1cnJlbnRseSBub3QgcmVxdWlyaW5nIHVzZSBvZiBjbWFrZSAqLworI2lmZGVmIF9XSU4zMgorCS8qIFNvbWVvbmUgc2hvdWxkIHRlbGwgdGhlIG1pbmd3IHBlb3BsZSB0aGF0IHRoZWlyIG1hbGxvYy5oIG91Z2h0IHRvIHByb3ZpZGUgX21tX21hbGxvYygpICovCisJI2lmZGVmIF9fR05VQ19fCisJCSNpbmNsdWRlIDxtbV9tYWxsb2MuaD4KKwkJI2RlZmluZSBIQVZFX01NX01BTExPQworCSNlbHNlIC8qIE1TVkMsIEludGVsIEMrKyAqLworCQkjaW5jbHVkZSA8bWFsbG9jLmg+CisJCSNpZmRlZiBfbW1fbWFsbG9jCisJCQkjZGVmaW5lIEhBVkVfTU1fTUFMTE9DCisJCSNlbmRpZgorCSNlbmRpZgorI2Vsc2UgLyogTm90IF9XSU4zMiAqLworCSNpZiBkZWZpbmVkKF9fc3VuKQorCQkjZGVmaW5lIEhBVkVfTUVNQUxJR04KKyAgI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyAgICAjZGVmaW5lIEhBVkVfUE9TSVhfTUVNQUxJR04KKwkvKiBMaW51eCB4ODZfNjQgYW5kIE9TWCBhbHdheXMgYWxpZ24gYWxsb2NhdGlvbnMgdG8gMTYgYnl0ZXMgKi8KKwkjZWxpZiAhZGVmaW5lZChfX2FtZDY0X18pICYmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX0FJWCkKKwkJI2RlZmluZSBIQVZFX01FTUFMSUdOCisJCSNpbmNsdWRlIDxtYWxsb2MuaD4JCQkKKwkjZW5kaWYKKyNlbmRpZgorCisjZGVmaW5lIG9wal9hbGlnbmVkX21hbGxvYyhzaXplKSBtYWxsb2Moc2l6ZSkKKyNkZWZpbmUgb3BqX2FsaWduZWRfZnJlZShtKSBmcmVlKG0pCisKKyNpZmRlZiBIQVZFX01NX01BTExPQworCSN1bmRlZiBvcGpfYWxpZ25lZF9tYWxsb2MKKwkjZGVmaW5lIG9wal9hbGlnbmVkX21hbGxvYyhzaXplKSBfbW1fbWFsbG9jKHNpemUsIDE2KQorCSN1bmRlZiBvcGpfYWxpZ25lZF9mcmVlCisJI2RlZmluZSBvcGpfYWxpZ25lZF9mcmVlKG0pIF9tbV9mcmVlKG0pCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUVNQUxJR04KKwlleHRlcm4gdm9pZCogbWVtYWxpZ24oc2l6ZV90LCBzaXplX3QpOworCSN1bmRlZiBvcGpfYWxpZ25lZF9tYWxsb2MKKwkjZGVmaW5lIG9wal9hbGlnbmVkX21hbGxvYyhzaXplKSBtZW1hbGlnbigxNiwgKHNpemUpKQorCSN1bmRlZiBvcGpfYWxpZ25lZF9mcmVlCisJI2RlZmluZSBvcGpfYWxpZ25lZF9mcmVlKG0pIGZyZWUobSkKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9QT1NJWF9NRU1BTElHTgorCSN1bmRlZiBvcGpfYWxpZ25lZF9tYWxsb2MKKwlleHRlcm4gaW50IHBvc2l4X21lbWFsaWduKHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOworCisJc3RhdGljIElOTElORSB2b2lkKiBfX2F0dHJpYnV0ZV9fICgobWFsbG9jKSkgb3BqX2FsaWduZWRfbWFsbG9jKHNpemVfdCBzaXplKXsKKwkJdm9pZCogbWVtID0gTlVMTDsKKwkJcG9zaXhfbWVtYWxpZ24oJm1lbSwgMTYsIHNpemUpOworCQlyZXR1cm4gbWVtOworCX0KKwkjdW5kZWYgb3BqX2FsaWduZWRfZnJlZQorCSNkZWZpbmUgb3BqX2FsaWduZWRfZnJlZShtKSBmcmVlKG0pCisjZW5kaWYKKworI2lmZGVmIEFMTE9DX1BFUkZfT1BUCisJI3VuZGVmIG9wal9hbGlnbmVkX21hbGxvYworCSNkZWZpbmUgb3BqX2FsaWduZWRfbWFsbG9jKHNpemUpIG9wal9tYWxsb2Moc2l6ZSkKKwkjdW5kZWYgb3BqX2FsaWduZWRfZnJlZQorCSNkZWZpbmUgb3BqX2FsaWduZWRfZnJlZShtKSBvcGpfZnJlZShtKQorI2VuZGlmCisKKy8qKgorUmVhbGxvY2F0ZSBtZW1vcnkgYmxvY2tzLgorQHBhcmFtIG0gUG9pbnRlciB0byBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgYmxvY2sKK0BwYXJhbSBzIE5ldyBzaXplIGluIGJ5dGVzCitAcmV0dXJuIFJldHVybnMgYSB2b2lkIHBvaW50ZXIgdG8gdGhlIHJlYWxsb2NhdGVkIChhbmQgcG9zc2libHkgbW92ZWQpIG1lbW9yeSBibG9jaworKi8KKyNpZmRlZiBBTExPQ19QRVJGX09QVAordm9pZCAqIE9QSl9DQUxMQ09OViBvcGpfcmVhbGxvYyh2b2lkICogbSwgc2l6ZV90IHMpOworI2Vsc2UKKy8qIHByZXZlbnQgYXNzZXJ0aW9uIG9uIG92ZXJmbG93IGZvciBNU1ZDICovCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgb3BqX3JlYWxsb2MobSwgcykgKChzaXplX3QpKHMpID49IChzaXplX3QpLTB4MTAwID8gTlVMTCA6IHJlYWxsb2MobSwgcykpCisjZWxzZQorI2RlZmluZSBvcGpfcmVhbGxvYyhtLCBzKSByZWFsbG9jKG0sIHMpCisjZW5kaWYKKyNlbmRpZgorCisvKioKK0RlYWxsb2NhdGVzIG9yIGZyZWVzIGEgbWVtb3J5IGJsb2NrLgorQHBhcmFtIG0gUHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrIHRvIGJlIGZyZWVkCisqLworI2lmZGVmIEFMTE9DX1BFUkZfT1BUCit2b2lkIE9QSl9DQUxMQ09OViBvcGpfZnJlZSh2b2lkICogbSk7CisjZWxzZQorI2RlZmluZSBvcGpfZnJlZShtKSBmcmVlKG0pCisjZW5kaWYKKworI2lmZGVmIF9fR05VQ19fCisjcHJhZ21hIEdDQyBwb2lzb24gbWFsbG9jIGNhbGxvYyByZWFsbG9jIGZyZWUKKyNlbmRpZgorI2VuZGlmCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypAfSovCisKKy8qQH0qLworCisjZW5kaWYgLyogX19PUEpfTUFMTE9DX0ggKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9vcGpfc3RkaW50LmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX3N0ZGludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NTU2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvb3BqX3N0ZGludC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIE1hdGhpZXUgTWFsYXRlcnJlIDxtYXRoaWV1Lm1hbGF0ZXJyZUBnbWFpbC5jb20+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIE9QSl9TVERJTlRfSAorI2RlZmluZSBPUEpfU1RESU5UX0gKKworI2luY2x1ZGUgIm9wal9jb25maWcuaCIKKyNpZmRlZiBPUEpfSEFWRV9TVERJTlRfSAorI2luY2x1ZGUgPHN0ZGludC5oPgorI2Vsc2UKKyNpZiBkZWZpbmVkKF9XSU4zMikKK3R5cGVkZWYgICBzaWduZWQgX19pbnQ4ICAgaW50OF90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDggICB1aW50OF90OwordHlwZWRlZiAgIHNpZ25lZCBfX2ludDE2ICBpbnQxNl90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDE2ICB1aW50MTZfdDsKK3R5cGVkZWYgICBzaWduZWQgX19pbnQzMiAgaW50MzJfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQzMiAgdWludDMyX3Q7Cit0eXBlZGVmICAgc2lnbmVkIF9faW50NjQgIGludDY0X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIHVpbnQ2NF90OworI2Vsc2UKKyNlcnJvciB1bnN1cHBvcnRlZCBwbGF0Zm9ybQorI2VuZGlmCisjZW5kaWYKKworI2VuZGlmIC8qIE9QSl9TVERJTlRfSCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3BpLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmJiZWZlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3BpLmMKQEAgLTAsMCArMSwxODc2IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwNywgUGFydmF0aGEgRWxhbmdvdmFuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJvcGpfaW5jbHVkZXMuaCIKKworLyoqIEBkZWZncm91cCBQSSBQSSAtIEltcGxlbWVudGF0aW9uIG9mIGEgcGFja2V0IGl0ZXJhdG9yICovCisvKkB7Ki8KKworLyoqIEBuYW1lIExvY2FsIHN0YXRpYyBmdW5jdGlvbnMgKi8KKy8qQHsqLworCisvKioKK0dldCBuZXh0IHBhY2tldCBpbiBsYXllci1yZXNvbHV0aW9uLWNvbXBvbmVudC1wcmVjaW5jdCBvcmRlci4KK0BwYXJhbSBwaSBwYWNrZXQgaXRlcmF0b3IgdG8gbW9kaWZ5CitAcmV0dXJuIHJldHVybnMgZmFsc2UgaWYgcGkgcG9pbnRlZCB0byB0aGUgbGFzdCBwYWNrZXQgb3IgZWxzZSByZXR1cm5zIHRydWUKKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX3BpX25leHRfbHJjcChvcGpfcGlfaXRlcmF0b3JfdCAqIHBpKTsKKy8qKgorR2V0IG5leHQgcGFja2V0IGluIHJlc29sdXRpb24tbGF5ZXItY29tcG9uZW50LXByZWNpbmN0IG9yZGVyLgorQHBhcmFtIHBpIHBhY2tldCBpdGVyYXRvciB0byBtb2RpZnkKK0ByZXR1cm4gcmV0dXJucyBmYWxzZSBpZiBwaSBwb2ludGVkIHRvIHRoZSBsYXN0IHBhY2tldCBvciBlbHNlIHJldHVybnMgdHJ1ZQorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfcGlfbmV4dF9ybGNwKG9wal9waV9pdGVyYXRvcl90ICogcGkpOworLyoqCitHZXQgbmV4dCBwYWNrZXQgaW4gcmVzb2x1dGlvbi1wcmVjaW5jdC1jb21wb25lbnQtbGF5ZXIgb3JkZXIuCitAcGFyYW0gcGkgcGFja2V0IGl0ZXJhdG9yIHRvIG1vZGlmeQorQHJldHVybiByZXR1cm5zIGZhbHNlIGlmIHBpIHBvaW50ZWQgdG8gdGhlIGxhc3QgcGFja2V0IG9yIGVsc2UgcmV0dXJucyB0cnVlCisqLworc3RhdGljIE9QSl9CT09MIG9wal9waV9uZXh0X3JwY2wob3BqX3BpX2l0ZXJhdG9yX3QgKiBwaSk7CisvKioKK0dldCBuZXh0IHBhY2tldCBpbiBwcmVjaW5jdC1jb21wb25lbnQtcmVzb2x1dGlvbi1sYXllciBvcmRlci4KK0BwYXJhbSBwaSBwYWNrZXQgaXRlcmF0b3IgdG8gbW9kaWZ5CitAcmV0dXJuIHJldHVybnMgZmFsc2UgaWYgcGkgcG9pbnRlZCB0byB0aGUgbGFzdCBwYWNrZXQgb3IgZWxzZSByZXR1cm5zIHRydWUKKyovCitzdGF0aWMgT1BKX0JPT0wgb3BqX3BpX25leHRfcGNybChvcGpfcGlfaXRlcmF0b3JfdCAqIHBpKTsKKy8qKgorR2V0IG5leHQgcGFja2V0IGluIGNvbXBvbmVudC1wcmVjaW5jdC1yZXNvbHV0aW9uLWxheWVyIG9yZGVyLgorQHBhcmFtIHBpIHBhY2tldCBpdGVyYXRvciB0byBtb2RpZnkKK0ByZXR1cm4gcmV0dXJucyBmYWxzZSBpZiBwaSBwb2ludGVkIHRvIHRoZSBsYXN0IHBhY2tldCBvciBlbHNlIHJldHVybnMgdHJ1ZQorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfcGlfbmV4dF9jcHJsKG9wal9waV9pdGVyYXRvcl90ICogcGkpOworCisvKioKKyAqIFVwZGF0ZXMgdGhlIGNvZGluZyBwYXJhbWV0ZXJzIGlmIHRoZSBlbmNvZGluZyBpcyB1c2VkIHdpdGggUHJvZ3Jlc3Npb24gb3JkZXIgY2hhbmdlcyBhbmQgZmluYWwgKG9yIGNpbmVtYSBwYXJhbWV0ZXJzIGFyZSB1c2VkKS4KKyAqCisgKiBAcGFyYW0JcF9jcAkJdGhlIGNvZGluZyBwYXJhbWV0ZXJzIHRvIG1vZGlmeQorICogQHBhcmFtCXBfdGlsZW5vCXRoZSB0aWxlIGluZGV4IGJlaW5nIGNvbmNlcm5lZC4KKyAqIEBwYXJhbQlwX3R4MAkJWDAgcGFyYW1ldGVyIGZvciB0aGUgdGlsZQorICogQHBhcmFtCXBfdHgxCQlYMSBwYXJhbWV0ZXIgZm9yIHRoZSB0aWxlCisgKiBAcGFyYW0JcF90eTAJCVkwIHBhcmFtZXRlciBmb3IgdGhlIHRpbGUKKyAqIEBwYXJhbQlwX3R5MQkJWTEgcGFyYW1ldGVyIGZvciB0aGUgdGlsZQorICogQHBhcmFtCXBfbWF4X3ByZWMJdGhlIG1heGltdW0gcHJlY2lzaW9uIGZvciBhbGwgdGhlIGJhbmRzIG9mIHRoZSB0aWxlCisgKiBAcGFyYW0JcF9tYXhfcmVzCXRoZSBtYXhpbXVtIG51bWJlciBvZiByZXNvbHV0aW9ucyBmb3IgYWxsIHRoZSBwb2MgaW5zaWRlIHRoZSB0aWxlLgorICogQHBhcmFtCXBfZHhfbWluCQl0aGUgbWluaW11bSBkeCBvZiBhbGwgdGhlIGNvbXBvbmVudHMgb2YgYWxsIHRoZSByZXNvbHV0aW9ucyBmb3IgdGhlIHRpbGUuCisgKiBAcGFyYW0JcF9keV9taW4JCXRoZSBtaW5pbXVtIGR5IG9mIGFsbCB0aGUgY29tcG9uZW50cyBvZiBhbGwgdGhlIHJlc29sdXRpb25zIGZvciB0aGUgdGlsZS4KKyAqLworc3RhdGljIHZvaWQgb3BqX3BpX3VwZGF0ZV9lbmNvZGVfcG9jX2FuZF9maW5hbCAoIG9wal9jcF90ICpwX2NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBfdHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwX3R4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgcF90eTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBfdHkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfcHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X3JlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfZHhfbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9keV9taW4pOworCisvKioKKyAqIFVwZGF0ZXMgdGhlIGNvZGluZyBwYXJhbWV0ZXJzIGlmIHRoZSBlbmNvZGluZyBpcyBub3QgdXNlZCB3aXRoIFByb2dyZXNzaW9uIG9yZGVyIGNoYW5nZXMgYW5kIGZpbmFsIChhbmQgY2luZW1hIHBhcmFtZXRlcnMgYXJlIHVzZWQpLgorICoKKyAqIEBwYXJhbQlwX2NwCQl0aGUgY29kaW5nIHBhcmFtZXRlcnMgdG8gbW9kaWZ5CisgKiBAcGFyYW0JcF9udW1fY29tcHMJCXRoZSBudW1iZXIgb2YgY29tcG9uZW50cworICogQHBhcmFtCXBfdGlsZW5vCXRoZSB0aWxlIGluZGV4IGJlaW5nIGNvbmNlcm5lZC4KKyAqIEBwYXJhbQlwX3R4MAkJWDAgcGFyYW1ldGVyIGZvciB0aGUgdGlsZQorICogQHBhcmFtCXBfdHgxCQlYMSBwYXJhbWV0ZXIgZm9yIHRoZSB0aWxlCisgKiBAcGFyYW0JcF90eTAJCVkwIHBhcmFtZXRlciBmb3IgdGhlIHRpbGUKKyAqIEBwYXJhbQlwX3R5MQkJWTEgcGFyYW1ldGVyIGZvciB0aGUgdGlsZQorICogQHBhcmFtCXBfbWF4X3ByZWMJdGhlIG1heGltdW0gcHJlY2lzaW9uIGZvciBhbGwgdGhlIGJhbmRzIG9mIHRoZSB0aWxlCisgKiBAcGFyYW0JcF9tYXhfcmVzCXRoZSBtYXhpbXVtIG51bWJlciBvZiByZXNvbHV0aW9ucyBmb3IgYWxsIHRoZSBwb2MgaW5zaWRlIHRoZSB0aWxlLgorICogQHBhcmFtCXBfZHhfbWluCQl0aGUgbWluaW11bSBkeCBvZiBhbGwgdGhlIGNvbXBvbmVudHMgb2YgYWxsIHRoZSByZXNvbHV0aW9ucyBmb3IgdGhlIHRpbGUuCisgKiBAcGFyYW0JcF9keV9taW4JCXRoZSBtaW5pbXVtIGR5IG9mIGFsbCB0aGUgY29tcG9uZW50cyBvZiBhbGwgdGhlIHJlc29sdXRpb25zIGZvciB0aGUgdGlsZS4KKyAqLworc3RhdGljIHZvaWQgb3BqX3BpX3VwZGF0ZV9lbmNvZGVfbm90X3BvYyAoICBvcGpfY3BfdCAqcF9jcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX251bV9jb21wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBfdHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgcF90eDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwX3R5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBfdHkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X3ByZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfZHhfbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfZHlfbWluKTsKKy8qKgorICogR2V0cyB0aGUgZW5jb2RpbmcgcGFyYW1ldGVycyBuZWVkZWQgdG8gdXBkYXRlIHRoZSBjb2RpbmcgcGFyYW1ldGVycyBhbmQgYWxsIHRoZSBwb2NzLgorICogCisgKiBAcGFyYW0JcF9pbWFnZQkJCXRoZSBpbWFnZSBiZWluZyBlbmNvZGVkLgorICogQHBhcmFtCXBfY3AJCQl0aGUgY29kaW5nIHBhcmFtZXRlcnMuCisgKiBAcGFyYW0JdGlsZW5vCQkJdGhlIHRpbGUgaW5kZXggb2YgdGhlIHRpbGUgYmVpbmcgZW5jb2RlZC4KKyAqIEBwYXJhbQlwX3R4MAkJCXBvaW50ZXIgdGhhdCB3aWxsIGhvbGQgdGhlIFgwIHBhcmFtZXRlciBmb3IgdGhlIHRpbGUKKyAqIEBwYXJhbQlwX3R4MQkJCXBvaW50ZXIgdGhhdCB3aWxsIGhvbGQgdGhlIFgxIHBhcmFtZXRlciBmb3IgdGhlIHRpbGUKKyAqIEBwYXJhbQlwX3R5MAkJCXBvaW50ZXIgdGhhdCB3aWxsIGhvbGQgdGhlIFkwIHBhcmFtZXRlciBmb3IgdGhlIHRpbGUKKyAqIEBwYXJhbQlwX3R5MQkJCXBvaW50ZXIgdGhhdCB3aWxsIGhvbGQgdGhlIFkxIHBhcmFtZXRlciBmb3IgdGhlIHRpbGUKKyAqIEBwYXJhbQlwX21heF9wcmVjCQlwb2ludGVyIHRoYXQgd2lsbCBob2xkIHRoZSB0aGUgbWF4aW11bSBwcmVjaXNpb24gZm9yIGFsbCB0aGUgYmFuZHMgb2YgdGhlIHRpbGUKKyAqIEBwYXJhbQlwX21heF9yZXMJCXBvaW50ZXIgdGhhdCB3aWxsIGhvbGQgdGhlIHRoZSBtYXhpbXVtIG51bWJlciBvZiByZXNvbHV0aW9ucyBmb3IgYWxsIHRoZSBwb2MgaW5zaWRlIHRoZSB0aWxlLgorICogQHBhcmFtCXBfZHhfbWluCQkJcG9pbnRlciB0aGF0IHdpbGwgaG9sZCB0aGUgdGhlIG1pbmltdW0gZHggb2YgYWxsIHRoZSBjb21wb25lbnRzIG9mIGFsbCB0aGUgcmVzb2x1dGlvbnMgZm9yIHRoZSB0aWxlLgorICogQHBhcmFtCXBfZHlfbWluCQkJcG9pbnRlciB0aGF0IHdpbGwgaG9sZCB0aGUgdGhlIG1pbmltdW0gZHkgb2YgYWxsIHRoZSBjb21wb25lbnRzIG9mIGFsbCB0aGUgcmVzb2x1dGlvbnMgZm9yIHRoZSB0aWxlLgorICovCitzdGF0aWMgdm9pZCBvcGpfZ2V0X2VuY29kaW5nX3BhcmFtZXRlcnMoY29uc3Qgb3BqX2ltYWdlX3QgKnBfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3BqX2NwX3QgKnBfY3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAgdGlsZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAgKiBwX3R4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3R4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3R5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3R5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9keF9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZHlfbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX21heF9wcmVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX21heF9yZXMgKTsKKworLyoqCisgKiBHZXRzIHRoZSBlbmNvZGluZyBwYXJhbWV0ZXJzIG5lZWRlZCB0byB1cGRhdGUgdGhlIGNvZGluZyBwYXJhbWV0ZXJzIGFuZCBhbGwgdGhlIHBvY3MuCisgKiBUaGUgcHJlY2luY3Qgd2lkdGhzLCBoZWlnaHRzLCBkeCBhbmQgZHkgZm9yIGVhY2ggY29tcG9uZW50IGF0IGVhY2ggcmVzb2x1dGlvbiB3aWxsIGJlIHN0b3JlZCBhcyB3ZWxsLgorICogdGhlIGxhc3QgcGFyYW1ldGVyIG9mIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgYW4gYXJyYXkgb2YgcG9pbnRlcnMgb2Ygc2l6ZSBuYiBjb21wb25lbnRzLCBlYWNoIHBvaW50ZXIgbGVhZGluZworICogdG8gYW4gYXJlYSBvZiBzaXplIDQgKiBtYXhfcmVzLiBUaGUgZGF0YSBpcyBzdG9yZWQgaW5zaWRlIHRoaXMgYXJlYSB3aXRoIHRoZSBmb2xsb3dpbmcgcGF0dGVybiA6CisgKiBkeF9jb21waV9yZXMwICwgZHlfY29tcGlfcmVzMCAsIHdfY29tcGlfcmVzMCwgaF9jb21waV9yZXMwICwgZHhfY29tcGlfcmVzMSAsIGR5X2NvbXBpX3JlczEgLCB3X2NvbXBpX3JlczEsIGhfY29tcGlfcmVzMSAsIC4uLgorICoKKyAqIEBwYXJhbQlwX2ltYWdlCQkJdGhlIGltYWdlIGJlaW5nIGVuY29kZWQuCisgKiBAcGFyYW0JcF9jcAkJCXRoZSBjb2RpbmcgcGFyYW1ldGVycy4KKyAqIEBwYXJhbQl0aWxlbm8JCQl0aGUgdGlsZSBpbmRleCBvZiB0aGUgdGlsZSBiZWluZyBlbmNvZGVkLgorICogQHBhcmFtCXBfdHgwCQkJcG9pbnRlciB0aGF0IHdpbGwgaG9sZCB0aGUgWDAgcGFyYW1ldGVyIGZvciB0aGUgdGlsZQorICogQHBhcmFtCXBfdHgxCQkJcG9pbnRlciB0aGF0IHdpbGwgaG9sZCB0aGUgWDEgcGFyYW1ldGVyIGZvciB0aGUgdGlsZQorICogQHBhcmFtCXBfdHkwCQkJcG9pbnRlciB0aGF0IHdpbGwgaG9sZCB0aGUgWTAgcGFyYW1ldGVyIGZvciB0aGUgdGlsZQorICogQHBhcmFtCXBfdHkxCQkJcG9pbnRlciB0aGF0IHdpbGwgaG9sZCB0aGUgWTEgcGFyYW1ldGVyIGZvciB0aGUgdGlsZQorICogQHBhcmFtCXBfbWF4X3ByZWMJCXBvaW50ZXIgdGhhdCB3aWxsIGhvbGQgdGhlIHRoZSBtYXhpbXVtIHByZWNpc2lvbiBmb3IgYWxsIHRoZSBiYW5kcyBvZiB0aGUgdGlsZQorICogQHBhcmFtCXBfbWF4X3JlcwkJcG9pbnRlciB0aGF0IHdpbGwgaG9sZCB0aGUgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlc29sdXRpb25zIGZvciBhbGwgdGhlIHBvYyBpbnNpZGUgdGhlIHRpbGUuCisgKiBAcGFyYW0JcF9keF9taW4JCXBvaW50ZXIgdGhhdCB3aWxsIGhvbGQgdGhlIHRoZSBtaW5pbXVtIGR4IG9mIGFsbCB0aGUgY29tcG9uZW50cyBvZiBhbGwgdGhlIHJlc29sdXRpb25zIGZvciB0aGUgdGlsZS4KKyAqIEBwYXJhbQlwX2R5X21pbgkJcG9pbnRlciB0aGF0IHdpbGwgaG9sZCB0aGUgdGhlIG1pbmltdW0gZHkgb2YgYWxsIHRoZSBjb21wb25lbnRzIG9mIGFsbCB0aGUgcmVzb2x1dGlvbnMgZm9yIHRoZSB0aWxlLgorICogQHBhcmFtCXBfcmVzb2x1dGlvbnMJcG9pbnRlciB0byBhbiBhcmVhIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG9uZSBkZXNjcmliZWQgYWJvdmUuCisgKi8KK3N0YXRpYyB2b2lkIG9wal9nZXRfYWxsX2VuY29kaW5nX3BhcmFtZXRlcnMoY29uc3Qgb3BqX2ltYWdlX3QgKnBfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wal9jcF90ICpwX2NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRpbGVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogcF90eDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBwX3R5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogcF90eTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2R4X21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZHlfbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9tYXhfcHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbWF4X3JlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqKiBwX3Jlc29sdXRpb25zICk7CisvKioKKyAqIEFsbG9jYXRlcyBtZW1vcnkgZm9yIGEgcGFja2V0IGl0ZXJhdG9yLiBEYXRhIGFuZCBkYXRhIHNpemVzIGFyZSBzZXQgYnkgdGhpcyBvcGVyYXRpb24uCisgKiBObyBvdGhlciBkYXRhIGlzIHNldC4gVGhlIGluY2x1ZGUgc2VjdGlvbiBvZiB0aGUgcGFja2V0ICBpdGVyYXRvciBpcyBub3QgYWxsb2NhdGVkLgorICogCisgKiBAcGFyYW0JcF9pbWFnZQkJdGhlIGltYWdlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcGFja2V0IGl0ZXJhdG9yIChpbiBmYWN0IG9ubHkgdGhlIG51bWJlciBvZiBjb21wb25lbnRzIGlzIHJlbGV2YW50LgorICogQHBhcmFtCXBfY3AJCXRoZSBjb2RpbmcgcGFyYW1ldGVycy4KKyAqIEBwYXJhbQl0aWxlbm8JdGhlIGluZGV4IG9mIHRoZSB0aWxlIGZyb20gd2hpY2ggY3JlYXRpbmcgdGhlIHBhY2tldCBpdGVyYXRvci4KKyAqLworc3RhdGljIG9wal9waV9pdGVyYXRvcl90ICogb3BqX3BpX2NyZWF0ZSgJY29uc3Qgb3BqX2ltYWdlX3QgKnBfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wal9jcF90ICpwX2NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRpbGVubyApOworLyoqCisgKiBGSVhNRSBET0MKKyAqLworc3RhdGljIHZvaWQgb3BqX3BpX3VwZGF0ZV9kZWNvZGVfbm90X3BvYyAob3BqX3BpX2l0ZXJhdG9yX3QgKiBwX3BpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjcF90ICogcF90Y3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X3ByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfcmVzKTsKKy8qKgorICogRklYTUUgRE9DCisgKi8KK3N0YXRpYyB2b2lkIG9wal9waV91cGRhdGVfZGVjb2RlX3BvYyAoICBvcGpfcGlfaXRlcmF0b3JfdCAqIHBfcGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjcF90ICogcF90Y3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9wcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9yZXMpOworCisvKioKKyAqIEZJWE1FIERPQworICovCitPUEpfQk9PTCBvcGpfcGlfY2hlY2tfbmV4dF9sZXZlbCgJT1BKX0lOVDMyIHBvcywKKwkJCQkJCQkJb3BqX2NwX3QgKmNwLAorCQkJCQkJCQlPUEpfVUlOVDMyIHRpbGVubywKKwkJCQkJCQkJT1BKX1VJTlQzMiBwaW5vLAorCQkJCQkJCQljb25zdCBPUEpfQ0hBUiAqcHJvZyk7CisKKy8qQH0qLworCisvKkB9Ki8KKworLyoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIGxvY2FsIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworT1BKX0JPT0wgb3BqX3BpX25leHRfbHJjcChvcGpfcGlfaXRlcmF0b3JfdCAqIHBpKSB7CisJb3BqX3BpX2NvbXBfdCAqY29tcCA9IE5VTEw7CisJb3BqX3BpX3Jlc29sdXRpb25fdCAqcmVzID0gTlVMTDsKKwlPUEpfVUlOVDMyIGluZGV4ID0gMDsKKwkKKwlpZiAoIXBpLT5maXJzdCkgeworCQljb21wID0gJnBpLT5jb21wc1twaS0+Y29tcG5vXTsKKwkJcmVzID0gJmNvbXAtPnJlc29sdXRpb25zW3BpLT5yZXNub107CisJCWdvdG8gTEFCRUxfU0tJUDsKKwl9IGVsc2UgeworCQlwaS0+Zmlyc3QgPSAwOworCX0KKworCWZvciAocGktPmxheW5vID0gcGktPnBvYy5sYXlubzA7IHBpLT5sYXlubyA8IHBpLT5wb2MubGF5bm8xOyBwaS0+bGF5bm8rKykgeworCQlmb3IgKHBpLT5yZXNubyA9IHBpLT5wb2MucmVzbm8wOyBwaS0+cmVzbm8gPCBwaS0+cG9jLnJlc25vMTsKKwkJcGktPnJlc25vKyspIHsKKwkJCWZvciAocGktPmNvbXBubyA9IHBpLT5wb2MuY29tcG5vMDsgcGktPmNvbXBubyA8IHBpLT5wb2MuY29tcG5vMTsgcGktPmNvbXBubysrKSB7CisJCQkJY29tcCA9ICZwaS0+Y29tcHNbcGktPmNvbXBub107CisJCQkJaWYgKHBpLT5yZXNubyA+PSBjb21wLT5udW1yZXNvbHV0aW9ucykgeworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQkJcmVzID0gJmNvbXAtPnJlc29sdXRpb25zW3BpLT5yZXNub107CisJCQkJaWYgKCFwaS0+dHBfb24peworCQkJCQlwaS0+cG9jLnByZWNubzEgPSByZXMtPnB3ICogcmVzLT5waDsKKwkJCQl9CisJCQkJZm9yIChwaS0+cHJlY25vID0gcGktPnBvYy5wcmVjbm8wOyBwaS0+cHJlY25vIDwgcGktPnBvYy5wcmVjbm8xOyBwaS0+cHJlY25vKyspIHsKKwkJCQkJaW5kZXggPSBwaS0+bGF5bm8gKiBwaS0+c3RlcF9sICsgcGktPnJlc25vICogcGktPnN0ZXBfciArIHBpLT5jb21wbm8gKiBwaS0+c3RlcF9jICsgcGktPnByZWNubyAqIHBpLT5zdGVwX3A7CisJCQkJCWlmICghcGktPmluY2x1ZGVbaW5kZXhdKSB7CisJCQkJCQlwaS0+aW5jbHVkZVtpbmRleF0gPSAxOworCQkJCQkJcmV0dXJuIE9QSl9UUlVFOworCQkJCQl9CitMQUJFTF9TS0lQOjsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJCisJcmV0dXJuIE9QSl9GQUxTRTsKK30KKworT1BKX0JPT0wgb3BqX3BpX25leHRfcmxjcChvcGpfcGlfaXRlcmF0b3JfdCAqIHBpKSB7CisJb3BqX3BpX2NvbXBfdCAqY29tcCA9IE5VTEw7CisJb3BqX3BpX3Jlc29sdXRpb25fdCAqcmVzID0gTlVMTDsKKwlPUEpfVUlOVDMyIGluZGV4ID0gMDsKKworCWlmICghcGktPmZpcnN0KSB7CisJCWNvbXAgPSAmcGktPmNvbXBzW3BpLT5jb21wbm9dOworCQlyZXMgPSAmY29tcC0+cmVzb2x1dGlvbnNbcGktPnJlc25vXTsKKwkJZ290byBMQUJFTF9TS0lQOworCX0gZWxzZSB7CisJCXBpLT5maXJzdCA9IDA7CisJfQorCisJZm9yIChwaS0+cmVzbm8gPSBwaS0+cG9jLnJlc25vMDsgcGktPnJlc25vIDwgcGktPnBvYy5yZXNubzE7IHBpLT5yZXNubysrKSB7CisJCWZvciAocGktPmxheW5vID0gcGktPnBvYy5sYXlubzA7IHBpLT5sYXlubyA8IHBpLT5wb2MubGF5bm8xOyBwaS0+bGF5bm8rKykgeworCQkJZm9yIChwaS0+Y29tcG5vID0gcGktPnBvYy5jb21wbm8wOyBwaS0+Y29tcG5vIDwgcGktPnBvYy5jb21wbm8xOyBwaS0+Y29tcG5vKyspIHsKKwkJCQljb21wID0gJnBpLT5jb21wc1twaS0+Y29tcG5vXTsKKwkJCQlpZiAocGktPnJlc25vID49IGNvbXAtPm51bXJlc29sdXRpb25zKSB7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCQlyZXMgPSAmY29tcC0+cmVzb2x1dGlvbnNbcGktPnJlc25vXTsKKwkJCQlpZighcGktPnRwX29uKXsKKwkJCQkJcGktPnBvYy5wcmVjbm8xID0gcmVzLT5wdyAqIHJlcy0+cGg7CisJCQkJfQorCQkJCWZvciAocGktPnByZWNubyA9IHBpLT5wb2MucHJlY25vMDsgcGktPnByZWNubyA8IHBpLT5wb2MucHJlY25vMTsgcGktPnByZWNubysrKSB7CisJCQkJCWluZGV4ID0gcGktPmxheW5vICogcGktPnN0ZXBfbCArIHBpLT5yZXNubyAqIHBpLT5zdGVwX3IgKyBwaS0+Y29tcG5vICogcGktPnN0ZXBfYyArIHBpLT5wcmVjbm8gKiBwaS0+c3RlcF9wOworCQkJCQlpZiAoIXBpLT5pbmNsdWRlW2luZGV4XSkgeworCQkJCQkJcGktPmluY2x1ZGVbaW5kZXhdID0gMTsKKwkJCQkJCXJldHVybiBPUEpfVFJVRTsKKwkJCQkJfQorTEFCRUxfU0tJUDo7CisJCQkJfQorCQkJfQorCQl9CisJfQorCQorCXJldHVybiBPUEpfRkFMU0U7Cit9CisKK09QSl9CT09MIG9wal9waV9uZXh0X3JwY2wob3BqX3BpX2l0ZXJhdG9yX3QgKiBwaSkgeworCW9wal9waV9jb21wX3QgKmNvbXAgPSBOVUxMOworCW9wal9waV9yZXNvbHV0aW9uX3QgKnJlcyA9IE5VTEw7CisJT1BKX1VJTlQzMiBpbmRleCA9IDA7CisKKwlpZiAoIXBpLT5maXJzdCkgeworCQlnb3RvIExBQkVMX1NLSVA7CisJfSBlbHNlIHsKKwkJT1BKX1VJTlQzMiBjb21wbm8sIHJlc25vOworCQlwaS0+Zmlyc3QgPSAwOworCQlwaS0+ZHggPSAwOworCQlwaS0+ZHkgPSAwOworCQlmb3IgKGNvbXBubyA9IDA7IGNvbXBubyA8IHBpLT5udW1jb21wczsgY29tcG5vKyspIHsKKwkJCWNvbXAgPSAmcGktPmNvbXBzW2NvbXBub107CisJCQlmb3IgKHJlc25vID0gMDsgcmVzbm8gPCBjb21wLT5udW1yZXNvbHV0aW9uczsgcmVzbm8rKykgeworCQkJCU9QSl9VSU5UMzIgZHgsIGR5OworCQkJCXJlcyA9ICZjb21wLT5yZXNvbHV0aW9uc1tyZXNub107CisJCQkJZHggPSBjb21wLT5keCAqICgxdSA8PCAocmVzLT5wZHggKyBjb21wLT5udW1yZXNvbHV0aW9ucyAtIDEgLSByZXNubykpOworCQkJCWR5ID0gY29tcC0+ZHkgKiAoMXUgPDwgKHJlcy0+cGR5ICsgY29tcC0+bnVtcmVzb2x1dGlvbnMgLSAxIC0gcmVzbm8pKTsKKwkJCQlwaS0+ZHggPSAhcGktPmR4ID8gZHggOiBvcGpfdWludF9taW4ocGktPmR4LCBkeCk7CisJCQkJcGktPmR5ID0gIXBpLT5keSA/IGR5IDogb3BqX3VpbnRfbWluKHBpLT5keSwgZHkpOworCQkJfQorCQl9CisJfQoraWYgKCFwaS0+dHBfb24peworCQkJcGktPnBvYy50eTAgPSBwaS0+dHkwOworCQkJcGktPnBvYy50eDAgPSBwaS0+dHgwOworCQkJcGktPnBvYy50eTEgPSBwaS0+dHkxOworCQkJcGktPnBvYy50eDEgPSBwaS0+dHgxOworCQl9CisJZm9yIChwaS0+cmVzbm8gPSBwaS0+cG9jLnJlc25vMDsgcGktPnJlc25vIDwgcGktPnBvYy5yZXNubzE7IHBpLT5yZXNubysrKSB7CisJCWZvciAocGktPnkgPSBwaS0+cG9jLnR5MDsgcGktPnkgPCBwaS0+cG9jLnR5MTsgcGktPnkgKz0gKE9QSl9JTlQzMikocGktPmR5IC0gKE9QSl9VSU5UMzIpKHBpLT55ICUgKE9QSl9JTlQzMilwaS0+ZHkpKSkgeworCQkJZm9yIChwaS0+eCA9IHBpLT5wb2MudHgwOyBwaS0+eCA8IHBpLT5wb2MudHgxOyBwaS0+eCArPSAoT1BKX0lOVDMyKShwaS0+ZHggLSAoT1BKX1VJTlQzMikocGktPnggJSAoT1BKX0lOVDMyKXBpLT5keCkpKSB7CisJCQkJZm9yIChwaS0+Y29tcG5vID0gcGktPnBvYy5jb21wbm8wOyBwaS0+Y29tcG5vIDwgcGktPnBvYy5jb21wbm8xOyBwaS0+Y29tcG5vKyspIHsKKwkJCQkJT1BKX1VJTlQzMiBsZXZlbG5vOworCQkJCQlPUEpfSU5UMzIgdHJ4MCwgdHJ5MDsKKwkJCQkJT1BKX0lOVDMyICB0cngxLCB0cnkxOworCQkJCQlPUEpfVUlOVDMyICBycHgsIHJweTsKKwkJCQkJT1BKX0lOVDMyICBwcmNpLCBwcmNqOworCQkJCQljb21wID0gJnBpLT5jb21wc1twaS0+Y29tcG5vXTsKKwkJCQkJaWYgKHBpLT5yZXNubyA+PSBjb21wLT5udW1yZXNvbHV0aW9ucykgeworCQkJCQkJY29udGludWU7CisJCQkJCX0KKwkJCQkJcmVzID0gJmNvbXAtPnJlc29sdXRpb25zW3BpLT5yZXNub107CisJCQkJCWxldmVsbm8gPSBjb21wLT5udW1yZXNvbHV0aW9ucyAtIDEgLSBwaS0+cmVzbm87CisJCQkJCXRyeDAgPSBvcGpfaW50X2NlaWxkaXYocGktPnR4MCwgKE9QSl9JTlQzMikoY29tcC0+ZHggPDwgbGV2ZWxubykpOworCQkJCQl0cnkwID0gb3BqX2ludF9jZWlsZGl2KHBpLT50eTAsIChPUEpfSU5UMzIpKGNvbXAtPmR5IDw8IGxldmVsbm8pKTsKKwkJCQkJdHJ4MSA9IG9wal9pbnRfY2VpbGRpdihwaS0+dHgxLCAoT1BKX0lOVDMyKShjb21wLT5keCA8PCBsZXZlbG5vKSk7CisJCQkJCXRyeTEgPSBvcGpfaW50X2NlaWxkaXYocGktPnR5MSwgKE9QSl9JTlQzMikoY29tcC0+ZHkgPDwgbGV2ZWxubykpOworCQkJCQlycHggPSByZXMtPnBkeCArIGxldmVsbm87CisJCQkJCXJweSA9IHJlcy0+cGR5ICsgbGV2ZWxubzsKKwkJCQkJaWYgKCEoKHBpLT55ICUgKE9QSl9JTlQzMikoY29tcC0+ZHkgPDwgcnB5KSA9PSAwKSB8fCAoKHBpLT55ID09IHBpLT50eTApICYmICgodHJ5MCA8PCBsZXZlbG5vKSAlICgxIDw8IHJweSkpKSkpeworCQkJCQkJY29udGludWU7CQorCQkJCQl9CisJCQkJCWlmICghKChwaS0+eCAlIChPUEpfSU5UMzIpKGNvbXAtPmR4IDw8IHJweCkgPT0gMCkgfHwgKChwaS0+eCA9PSBwaS0+dHgwKSAmJiAoKHRyeDAgPDwgbGV2ZWxubykgJSAoMSA8PCBycHgpKSkpKXsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisJCQkJCQorCQkJCQlpZiAoKHJlcy0+cHc9PTApfHwocmVzLT5waD09MCkpIGNvbnRpbnVlOworCQkJCQkKKwkJCQkJaWYgKCh0cngwPT10cngxKXx8KHRyeTA9PXRyeTEpKSBjb250aW51ZTsKKwkJCQkJCisJCQkJCXByY2kgPSBvcGpfaW50X2Zsb29yZGl2cG93MihvcGpfaW50X2NlaWxkaXYocGktPngsIChPUEpfSU5UMzIpKGNvbXAtPmR4IDw8IGxldmVsbm8pKSwgKE9QSl9JTlQzMilyZXMtPnBkeCkKKwkJCQkJCSAtIG9wal9pbnRfZmxvb3JkaXZwb3cyKHRyeDAsIChPUEpfSU5UMzIpcmVzLT5wZHgpOworCQkJCQlwcmNqID0gb3BqX2ludF9mbG9vcmRpdnBvdzIob3BqX2ludF9jZWlsZGl2KHBpLT55LCAoT1BKX0lOVDMyKShjb21wLT5keSA8PCBsZXZlbG5vKSksIChPUEpfSU5UMzIpcmVzLT5wZHkpCisJCQkJCQkgLSBvcGpfaW50X2Zsb29yZGl2cG93Mih0cnkwLCAoT1BKX0lOVDMyKXJlcy0+cGR5KTsKKwkJCQkJcGktPnByZWNubyA9IChPUEpfVUlOVDMyKShwcmNpICsgcHJjaiAqIChPUEpfSU5UMzIpcmVzLT5wdyk7CisJCQkJCWZvciAocGktPmxheW5vID0gcGktPnBvYy5sYXlubzA7IHBpLT5sYXlubyA8IHBpLT5wb2MubGF5bm8xOyBwaS0+bGF5bm8rKykgeworCQkJCQkJaW5kZXggPSBwaS0+bGF5bm8gKiBwaS0+c3RlcF9sICsgcGktPnJlc25vICogcGktPnN0ZXBfciArIHBpLT5jb21wbm8gKiBwaS0+c3RlcF9jICsgcGktPnByZWNubyAqIHBpLT5zdGVwX3A7CisJCQkJCQlpZiAoIXBpLT5pbmNsdWRlW2luZGV4XSkgeworCQkJCQkJCXBpLT5pbmNsdWRlW2luZGV4XSA9IDE7CisJCQkJCQkJcmV0dXJuIE9QSl9UUlVFOworCQkJCQkJfQorTEFCRUxfU0tJUDo7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwl9CisJCisJcmV0dXJuIE9QSl9GQUxTRTsKK30KKworT1BKX0JPT0wgb3BqX3BpX25leHRfcGNybChvcGpfcGlfaXRlcmF0b3JfdCAqIHBpKSB7CisJb3BqX3BpX2NvbXBfdCAqY29tcCA9IE5VTEw7CisJb3BqX3BpX3Jlc29sdXRpb25fdCAqcmVzID0gTlVMTDsKKwlPUEpfVUlOVDMyIGluZGV4ID0gMDsKKworCWlmICghcGktPmZpcnN0KSB7CisJCWNvbXAgPSAmcGktPmNvbXBzW3BpLT5jb21wbm9dOworCQlnb3RvIExBQkVMX1NLSVA7CisJfSBlbHNlIHsKKwkJT1BKX1VJTlQzMiBjb21wbm8sIHJlc25vOworCQlwaS0+Zmlyc3QgPSAwOworCQlwaS0+ZHggPSAwOworCQlwaS0+ZHkgPSAwOworCQlmb3IgKGNvbXBubyA9IDA7IGNvbXBubyA8IHBpLT5udW1jb21wczsgY29tcG5vKyspIHsKKwkJCWNvbXAgPSAmcGktPmNvbXBzW2NvbXBub107CisJCQlmb3IgKHJlc25vID0gMDsgcmVzbm8gPCBjb21wLT5udW1yZXNvbHV0aW9uczsgcmVzbm8rKykgeworCQkJCU9QSl9VSU5UMzIgZHgsIGR5OworCQkJCXJlcyA9ICZjb21wLT5yZXNvbHV0aW9uc1tyZXNub107CisJCQkJZHggPSBjb21wLT5keCAqICgxdSA8PCAocmVzLT5wZHggKyBjb21wLT5udW1yZXNvbHV0aW9ucyAtIDEgLSByZXNubykpOworCQkJCWR5ID0gY29tcC0+ZHkgKiAoMXUgPDwgKHJlcy0+cGR5ICsgY29tcC0+bnVtcmVzb2x1dGlvbnMgLSAxIC0gcmVzbm8pKTsKKwkJCQlwaS0+ZHggPSAhcGktPmR4ID8gZHggOiBvcGpfdWludF9taW4ocGktPmR4LCBkeCk7CisJCQkJcGktPmR5ID0gIXBpLT5keSA/IGR5IDogb3BqX3VpbnRfbWluKHBpLT5keSwgZHkpOworCQkJfQorCQl9CisJfQorCWlmICghcGktPnRwX29uKXsKKwkJCXBpLT5wb2MudHkwID0gcGktPnR5MDsKKwkJCXBpLT5wb2MudHgwID0gcGktPnR4MDsKKwkJCXBpLT5wb2MudHkxID0gcGktPnR5MTsKKwkJCXBpLT5wb2MudHgxID0gcGktPnR4MTsKKwkJfQorCWZvciAocGktPnkgPSBwaS0+cG9jLnR5MDsgcGktPnkgPCBwaS0+cG9jLnR5MTsgcGktPnkgKz0gKE9QSl9JTlQzMikocGktPmR5IC0gKE9QSl9VSU5UMzIpKHBpLT55ICUgKE9QSl9JTlQzMilwaS0+ZHkpKSkgeworCQlmb3IgKHBpLT54ID0gcGktPnBvYy50eDA7IHBpLT54IDwgcGktPnBvYy50eDE7IHBpLT54ICs9IChPUEpfSU5UMzIpKHBpLT5keCAtIChPUEpfVUlOVDMyKShwaS0+eCAlIChPUEpfSU5UMzIpcGktPmR4KSkpIHsKKwkJCWZvciAocGktPmNvbXBubyA9IHBpLT5wb2MuY29tcG5vMDsgcGktPmNvbXBubyA8IHBpLT5wb2MuY29tcG5vMTsgcGktPmNvbXBubysrKSB7CisJCQkJY29tcCA9ICZwaS0+Y29tcHNbcGktPmNvbXBub107CisJCQkJZm9yIChwaS0+cmVzbm8gPSBwaS0+cG9jLnJlc25vMDsgcGktPnJlc25vIDwgb3BqX3VpbnRfbWluKHBpLT5wb2MucmVzbm8xLCBjb21wLT5udW1yZXNvbHV0aW9ucyk7IHBpLT5yZXNubysrKSB7CisJCQkJCU9QSl9VSU5UMzIgbGV2ZWxubzsKKwkJCQkJT1BKX0lOVDMyIHRyeDAsIHRyeTA7CisJCQkJCU9QSl9JTlQzMiB0cngxLCB0cnkxOworCQkJCQlPUEpfVUlOVDMyIHJweCwgcnB5OworCQkJCQlPUEpfSU5UMzIgcHJjaSwgcHJjajsKKwkJCQkJcmVzID0gJmNvbXAtPnJlc29sdXRpb25zW3BpLT5yZXNub107CisJCQkJCWxldmVsbm8gPSBjb21wLT5udW1yZXNvbHV0aW9ucyAtIDEgLSBwaS0+cmVzbm87CisJCQkJCXRyeDAgPSBvcGpfaW50X2NlaWxkaXYocGktPnR4MCwgKE9QSl9JTlQzMikoY29tcC0+ZHggPDwgbGV2ZWxubykpOworCQkJCQl0cnkwID0gb3BqX2ludF9jZWlsZGl2KHBpLT50eTAsIChPUEpfSU5UMzIpKGNvbXAtPmR5IDw8IGxldmVsbm8pKTsKKwkJCQkJdHJ4MSA9IG9wal9pbnRfY2VpbGRpdihwaS0+dHgxLCAoT1BKX0lOVDMyKShjb21wLT5keCA8PCBsZXZlbG5vKSk7CisJCQkJCXRyeTEgPSBvcGpfaW50X2NlaWxkaXYocGktPnR5MSwgKE9QSl9JTlQzMikoY29tcC0+ZHkgPDwgbGV2ZWxubykpOworCQkJCQlycHggPSByZXMtPnBkeCArIGxldmVsbm87CisJCQkJCXJweSA9IHJlcy0+cGR5ICsgbGV2ZWxubzsKKwkJCQkJaWYgKCEoKHBpLT55ICUgKE9QSl9JTlQzMikoY29tcC0+ZHkgPDwgcnB5KSA9PSAwKSB8fCAoKHBpLT55ID09IHBpLT50eTApICYmICgodHJ5MCA8PCBsZXZlbG5vKSAlICgxIDw8IHJweSkpKSkpeworCQkJCQkJY29udGludWU7CQorCQkJCQl9CisJCQkJCWlmICghKChwaS0+eCAlIChPUEpfSU5UMzIpKGNvbXAtPmR4IDw8IHJweCkgPT0gMCkgfHwgKChwaS0+eCA9PSBwaS0+dHgwKSAmJiAoKHRyeDAgPDwgbGV2ZWxubykgJSAoMSA8PCBycHgpKSkpKXsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisJCQkJCQorCQkJCQlpZiAoKHJlcy0+cHc9PTApfHwocmVzLT5waD09MCkpIGNvbnRpbnVlOworCQkJCQkKKwkJCQkJaWYgKCh0cngwPT10cngxKXx8KHRyeTA9PXRyeTEpKSBjb250aW51ZTsKKwkJCQkJCisJCQkJCXByY2kgPSBvcGpfaW50X2Zsb29yZGl2cG93MihvcGpfaW50X2NlaWxkaXYocGktPngsIChPUEpfSU5UMzIpKGNvbXAtPmR4IDw8IGxldmVsbm8pKSwgKE9QSl9JTlQzMilyZXMtPnBkeCkKKwkJCQkJCSAtIG9wal9pbnRfZmxvb3JkaXZwb3cyKHRyeDAsIChPUEpfSU5UMzIpcmVzLT5wZHgpOworCQkJCQlwcmNqID0gb3BqX2ludF9mbG9vcmRpdnBvdzIob3BqX2ludF9jZWlsZGl2KHBpLT55LCAoT1BKX0lOVDMyKShjb21wLT5keSA8PCBsZXZlbG5vKSksIChPUEpfSU5UMzIpcmVzLT5wZHkpCisJCQkJCQkgLSBvcGpfaW50X2Zsb29yZGl2cG93Mih0cnkwLCAoT1BKX0lOVDMyKXJlcy0+cGR5KTsKKwkJCQkJcGktPnByZWNubyA9IChPUEpfVUlOVDMyKShwcmNpICsgcHJjaiAqIChPUEpfSU5UMzIpcmVzLT5wdyk7CisJCQkJCWZvciAocGktPmxheW5vID0gcGktPnBvYy5sYXlubzA7IHBpLT5sYXlubyA8IHBpLT5wb2MubGF5bm8xOyBwaS0+bGF5bm8rKykgeworCQkJCQkJaW5kZXggPSBwaS0+bGF5bm8gKiBwaS0+c3RlcF9sICsgcGktPnJlc25vICogcGktPnN0ZXBfciArIHBpLT5jb21wbm8gKiBwaS0+c3RlcF9jICsgcGktPnByZWNubyAqIHBpLT5zdGVwX3A7CisJCQkJCQlpZiAoIXBpLT5pbmNsdWRlW2luZGV4XSkgeworCQkJCQkJCXBpLT5pbmNsdWRlW2luZGV4XSA9IDE7CisJCQkJCQkJcmV0dXJuIE9QSl9UUlVFOworCQkJCQkJfQkKK0xBQkVMX1NLSVA6OworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorCQorCXJldHVybiBPUEpfRkFMU0U7Cit9CisKK09QSl9CT09MIG9wal9waV9uZXh0X2Nwcmwob3BqX3BpX2l0ZXJhdG9yX3QgKiBwaSkgeworCW9wal9waV9jb21wX3QgKmNvbXAgPSBOVUxMOworCW9wal9waV9yZXNvbHV0aW9uX3QgKnJlcyA9IE5VTEw7CisJT1BKX1VJTlQzMiBpbmRleCA9IDA7CisKKwlpZiAoIXBpLT5maXJzdCkgeworCQljb21wID0gJnBpLT5jb21wc1twaS0+Y29tcG5vXTsKKwkJZ290byBMQUJFTF9TS0lQOworCX0gZWxzZSB7CisJCXBpLT5maXJzdCA9IDA7CisJfQorCisJZm9yIChwaS0+Y29tcG5vID0gcGktPnBvYy5jb21wbm8wOyBwaS0+Y29tcG5vIDwgcGktPnBvYy5jb21wbm8xOyBwaS0+Y29tcG5vKyspIHsKKwkJT1BKX1VJTlQzMiByZXNubzsKKwkJY29tcCA9ICZwaS0+Y29tcHNbcGktPmNvbXBub107CisJCXBpLT5keCA9IDA7CisJCXBpLT5keSA9IDA7CisJCWZvciAocmVzbm8gPSAwOyByZXNubyA8IGNvbXAtPm51bXJlc29sdXRpb25zOyByZXNubysrKSB7CisJCQlPUEpfVUlOVDMyIGR4LCBkeTsKKwkJCXJlcyA9ICZjb21wLT5yZXNvbHV0aW9uc1tyZXNub107CisJCQlkeCA9IGNvbXAtPmR4ICogKDF1IDw8IChyZXMtPnBkeCArIGNvbXAtPm51bXJlc29sdXRpb25zIC0gMSAtIHJlc25vKSk7CisJCQlkeSA9IGNvbXAtPmR5ICogKDF1IDw8IChyZXMtPnBkeSArIGNvbXAtPm51bXJlc29sdXRpb25zIC0gMSAtIHJlc25vKSk7CisJCQlwaS0+ZHggPSAhcGktPmR4ID8gZHggOiBvcGpfdWludF9taW4ocGktPmR4LCBkeCk7CisJCQlwaS0+ZHkgPSAhcGktPmR5ID8gZHkgOiBvcGpfdWludF9taW4ocGktPmR5LCBkeSk7CisJCX0KKwkJaWYgKCFwaS0+dHBfb24peworCQkJcGktPnBvYy50eTAgPSBwaS0+dHkwOworCQkJcGktPnBvYy50eDAgPSBwaS0+dHgwOworCQkJcGktPnBvYy50eTEgPSBwaS0+dHkxOworCQkJcGktPnBvYy50eDEgPSBwaS0+dHgxOworCQl9CisJCWZvciAocGktPnkgPSBwaS0+cG9jLnR5MDsgcGktPnkgPCBwaS0+cG9jLnR5MTsgcGktPnkgKz0gKE9QSl9JTlQzMikocGktPmR5IC0gKE9QSl9VSU5UMzIpKHBpLT55ICUgKE9QSl9JTlQzMilwaS0+ZHkpKSkgeworCQkJZm9yIChwaS0+eCA9IHBpLT5wb2MudHgwOyBwaS0+eCA8IHBpLT5wb2MudHgxOyBwaS0+eCArPSAoT1BKX0lOVDMyKShwaS0+ZHggLSAoT1BKX1VJTlQzMikocGktPnggJSAoT1BKX0lOVDMyKXBpLT5keCkpKSB7CisJCQkJZm9yIChwaS0+cmVzbm8gPSBwaS0+cG9jLnJlc25vMDsgcGktPnJlc25vIDwgb3BqX3VpbnRfbWluKHBpLT5wb2MucmVzbm8xLCBjb21wLT5udW1yZXNvbHV0aW9ucyk7IHBpLT5yZXNubysrKSB7CisJCQkJCU9QSl9VSU5UMzIgbGV2ZWxubzsKKwkJCQkJT1BKX0lOVDMyIHRyeDAsIHRyeTA7CisJCQkJCU9QSl9JTlQzMiB0cngxLCB0cnkxOworCQkJCQlPUEpfVUlOVDMyIHJweCwgcnB5OworCQkJCQlPUEpfSU5UMzIgcHJjaSwgcHJjajsKKwkJCQkJcmVzID0gJmNvbXAtPnJlc29sdXRpb25zW3BpLT5yZXNub107CisJCQkJCWxldmVsbm8gPSBjb21wLT5udW1yZXNvbHV0aW9ucyAtIDEgLSBwaS0+cmVzbm87CisJCQkJCXRyeDAgPSBvcGpfaW50X2NlaWxkaXYocGktPnR4MCwgKE9QSl9JTlQzMikoY29tcC0+ZHggPDwgbGV2ZWxubykpOworCQkJCQl0cnkwID0gb3BqX2ludF9jZWlsZGl2KHBpLT50eTAsIChPUEpfSU5UMzIpKGNvbXAtPmR5IDw8IGxldmVsbm8pKTsKKwkJCQkJdHJ4MSA9IG9wal9pbnRfY2VpbGRpdihwaS0+dHgxLCAoT1BKX0lOVDMyKShjb21wLT5keCA8PCBsZXZlbG5vKSk7CisJCQkJCXRyeTEgPSBvcGpfaW50X2NlaWxkaXYocGktPnR5MSwgKE9QSl9JTlQzMikoY29tcC0+ZHkgPDwgbGV2ZWxubykpOworCQkJCQlycHggPSByZXMtPnBkeCArIGxldmVsbm87CisJCQkJCXJweSA9IHJlcy0+cGR5ICsgbGV2ZWxubzsKKwkJCQkJaWYgKCEoKHBpLT55ICUgKE9QSl9JTlQzMikoY29tcC0+ZHkgPDwgcnB5KSA9PSAwKSB8fCAoKHBpLT55ID09IHBpLT50eTApICYmICgodHJ5MCA8PCBsZXZlbG5vKSAlICgxIDw8IHJweSkpKSkpeworCQkJCQkJY29udGludWU7CQorCQkJCQl9CisJCQkJCWlmICghKChwaS0+eCAlIChPUEpfSU5UMzIpKGNvbXAtPmR4IDw8IHJweCkgPT0gMCkgfHwgKChwaS0+eCA9PSBwaS0+dHgwKSAmJiAoKHRyeDAgPDwgbGV2ZWxubykgJSAoMSA8PCBycHgpKSkpKXsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisJCQkJCQorCQkJCQlpZiAoKHJlcy0+cHc9PTApfHwocmVzLT5waD09MCkpIGNvbnRpbnVlOworCQkJCQkKKwkJCQkJaWYgKCh0cngwPT10cngxKXx8KHRyeTA9PXRyeTEpKSBjb250aW51ZTsKKwkJCQkJCisJCQkJCXByY2kgPSBvcGpfaW50X2Zsb29yZGl2cG93MihvcGpfaW50X2NlaWxkaXYocGktPngsIChPUEpfSU5UMzIpKGNvbXAtPmR4IDw8IGxldmVsbm8pKSwgKE9QSl9JTlQzMilyZXMtPnBkeCkKKwkJCQkJCSAtIG9wal9pbnRfZmxvb3JkaXZwb3cyKHRyeDAsIChPUEpfSU5UMzIpcmVzLT5wZHgpOworCQkJCQlwcmNqID0gb3BqX2ludF9mbG9vcmRpdnBvdzIob3BqX2ludF9jZWlsZGl2KHBpLT55LCAoT1BKX0lOVDMyKShjb21wLT5keSA8PCBsZXZlbG5vKSksIChPUEpfSU5UMzIpcmVzLT5wZHkpCisJCQkJCQkgLSBvcGpfaW50X2Zsb29yZGl2cG93Mih0cnkwLCAoT1BKX0lOVDMyKXJlcy0+cGR5KTsKKwkJCQkJcGktPnByZWNubyA9IChPUEpfVUlOVDMyKShwcmNpICsgcHJjaiAqIChPUEpfSU5UMzIpcmVzLT5wdyk7CisJCQkJCWZvciAocGktPmxheW5vID0gcGktPnBvYy5sYXlubzA7IHBpLT5sYXlubyA8IHBpLT5wb2MubGF5bm8xOyBwaS0+bGF5bm8rKykgeworCQkJCQkJaW5kZXggPSBwaS0+bGF5bm8gKiBwaS0+c3RlcF9sICsgcGktPnJlc25vICogcGktPnN0ZXBfciArIHBpLT5jb21wbm8gKiBwaS0+c3RlcF9jICsgcGktPnByZWNubyAqIHBpLT5zdGVwX3A7CisJCQkJCQlpZiAoIXBpLT5pbmNsdWRlW2luZGV4XSkgeworCQkJCQkJCXBpLT5pbmNsdWRlW2luZGV4XSA9IDE7CisJCQkJCQkJcmV0dXJuIE9QSl9UUlVFOworCQkJCQkJfQorTEFCRUxfU0tJUDo7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwl9CisJCisJcmV0dXJuIE9QSl9GQUxTRTsKK30KKwordm9pZCBvcGpfZ2V0X2VuY29kaW5nX3BhcmFtZXRlcnMoCWNvbnN0IG9wal9pbWFnZV90ICpwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3BqX2NwX3QgKnBfY3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogcF90eDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgICogcF90eDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgICogcF90eTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgICogcF90eTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9keF9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9keV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9tYXhfcHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX21heF9yZXMgKQoreworCS8qIGxvb3AgKi8KKwlPUEpfVUlOVDMyICBjb21wbm8sIHJlc25vOworCS8qIHBvaW50ZXJzICovCisJY29uc3Qgb3BqX3RjcF90ICpsX3RjcCA9IDAwOworCWNvbnN0IG9wal90Y2NwX3QgKiBsX3RjY3AgPSAwMDsKKwljb25zdCBvcGpfaW1hZ2VfY29tcF90ICogbF9pbWdfY29tcCA9IDAwOworCisJLyogcG9zaXRpb24gaW4geCBhbmQgeSBvZiB0aWxlICovCisJT1BKX1VJTlQzMiBwLCBxOworCisJLyogcHJlY29uZGl0aW9ucyAqLworCWFzc2VydChwX2NwICE9IDAwKTsKKwlhc3NlcnQocF9pbWFnZSAhPSAwMCk7CisJYXNzZXJ0KHBfdGlsZW5vIDwgcF9jcC0+dHcgKiBwX2NwLT50aCk7CisKKwkvKiBpbml0aWFsaXphdGlvbnMgKi8KKwlsX3RjcCA9ICZwX2NwLT50Y3BzIFtwX3RpbGVub107CisJbF9pbWdfY29tcCA9IHBfaW1hZ2UtPmNvbXBzOworCWxfdGNjcCA9IGxfdGNwLT50Y2NwczsKKworCS8qIGhlcmUgY2FsY3VsYXRpb24gb2YgdHgwLCB0eDEsIHR5MCwgdHkxLCBtYXhwcmVjLCBkeCBhbmQgZHkgKi8KKwlwID0gcF90aWxlbm8gJSBwX2NwLT50dzsKKwlxID0gcF90aWxlbm8gLyBwX2NwLT50dzsKKworCS8qIGZpbmQgZXh0ZW50IG9mIHRpbGUgKi8KKwkqcF90eDAgPSBvcGpfaW50X21heCgoT1BKX0lOVDMyKShwX2NwLT50eDAgKyBwICogcF9jcC0+dGR4KSwgKE9QSl9JTlQzMilwX2ltYWdlLT54MCk7CisJKnBfdHgxID0gb3BqX2ludF9taW4oKE9QSl9JTlQzMikocF9jcC0+dHgwICsgKHAgKyAxKSAqIHBfY3AtPnRkeCksIChPUEpfSU5UMzIpcF9pbWFnZS0+eDEpOworCSpwX3R5MCA9IG9wal9pbnRfbWF4KChPUEpfSU5UMzIpKHBfY3AtPnR5MCArIHEgKiBwX2NwLT50ZHkpLCAoT1BKX0lOVDMyKXBfaW1hZ2UtPnkwKTsKKwkqcF90eTEgPSBvcGpfaW50X21pbigoT1BKX0lOVDMyKShwX2NwLT50eTAgKyAocSArIDEpICogcF9jcC0+dGR5KSwgKE9QSl9JTlQzMilwX2ltYWdlLT55MSk7CisKKwkvKiBtYXggcHJlY2lzaW9uIGlzIDAgKGNhbiBvbmx5IGdyb3cpICovCisJKnBfbWF4X3ByZWMgPSAwOworCSpwX21heF9yZXMgPSAwOworCisJLyogdGFrZSB0aGUgbGFyZ2VzdCB2YWx1ZSBmb3IgZHhfbWluIGFuZCBkeV9taW4gKi8KKwkqcF9keF9taW4gPSAweDdmZmZmZmZmOworCSpwX2R5X21pbiAgPSAweDdmZmZmZmZmOworCisJZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCBwX2ltYWdlLT5udW1jb21wczsgKytjb21wbm8pIHsKKwkJLyogYXJpdGhtZXRpYyB2YXJpYWJsZXMgdG8gY2FsY3VsYXRlICovCisJCU9QSl9VSU5UMzIgbF9sZXZlbF9ubzsKKwkJT1BKX0lOVDMyIGxfcngwLCBsX3J5MCwgbF9yeDEsIGxfcnkxOworCQlPUEpfSU5UMzIgbF9weDAsIGxfcHkwLCBsX3B4MSwgcHkxOworCQlPUEpfVUlOVDMyIGxfcGR4LCBsX3BkeTsKKwkJT1BKX1VJTlQzMiBsX3B3LCBsX3BoOworCQlPUEpfVUlOVDMyIGxfcHJvZHVjdDsKKwkJT1BKX0lOVDMyIGxfdGN4MCwgbF90Y3kwLCBsX3RjeDEsIGxfdGN5MTsKKworCQlsX3RjeDAgPSBvcGpfaW50X2NlaWxkaXYoKnBfdHgwLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmR4KTsKKwkJbF90Y3kwID0gb3BqX2ludF9jZWlsZGl2KCpwX3R5MCwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5keSk7CisJCWxfdGN4MSA9IG9wal9pbnRfY2VpbGRpdigqcF90eDEsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHgpOworCQlsX3RjeTEgPSBvcGpfaW50X2NlaWxkaXYoKnBfdHkxLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmR5KTsKKworCQlpZiAobF90Y2NwLT5udW1yZXNvbHV0aW9ucyA+ICpwX21heF9yZXMpIHsKKwkJCSpwX21heF9yZXMgPSBsX3RjY3AtPm51bXJlc29sdXRpb25zOworCQl9CisKKwkJLyogdXNlIGN1c3RvbSBzaXplIGZvciBwcmVjaW5jdHMgKi8KKwkJZm9yIChyZXNubyA9IDA7IHJlc25vIDwgbF90Y2NwLT5udW1yZXNvbHV0aW9uczsgKytyZXNubykgeworCQkJT1BKX1VJTlQzMiBsX2R4LCBsX2R5OworCisJCQkvKiBwcmVjaW5jdCB3aWR0aCBhbmQgaGVpZ2h0ICovCisJCQlsX3BkeCA9IGxfdGNjcC0+cHJjd1tyZXNub107CisJCQlsX3BkeSA9IGxfdGNjcC0+cHJjaFtyZXNub107CisKKwkJCWxfZHggPSBsX2ltZ19jb21wLT5keCAqICgxdSA8PCAobF9wZHggKyBsX3RjY3AtPm51bXJlc29sdXRpb25zIC0gMSAtIHJlc25vKSk7CisJCQlsX2R5ID0gbF9pbWdfY29tcC0+ZHkgKiAoMXUgPDwgKGxfcGR5ICsgbF90Y2NwLT5udW1yZXNvbHV0aW9ucyAtIDEgLSByZXNubykpOworCisJCQkvKiB0YWtlIHRoZSBtaW5pbXVtIHNpemUgZm9yIGR4IGZvciBlYWNoIGNvbXAgYW5kIHJlc29sdXRpb24gKi8KKwkJCSpwX2R4X21pbiA9IG9wal91aW50X21pbigqcF9keF9taW4sIGxfZHgpOworCQkJKnBfZHlfbWluID0gb3BqX3VpbnRfbWluKCpwX2R5X21pbiwgbF9keSk7CisKKwkJCS8qIHZhcmlvdXMgY2FsY3VsYXRpb25zIG9mIGV4dGVudHMgKi8KKwkJCWxfbGV2ZWxfbm8gPSBsX3RjY3AtPm51bXJlc29sdXRpb25zIC0gMSAtIHJlc25vOworCisJCQlsX3J4MCA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF90Y3gwLCAoT1BKX0lOVDMyKWxfbGV2ZWxfbm8pOworCQkJbF9yeTAgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfdGN5MCwgKE9QSl9JTlQzMilsX2xldmVsX25vKTsKKwkJCWxfcngxID0gb3BqX2ludF9jZWlsZGl2cG93MihsX3RjeDEsIChPUEpfSU5UMzIpbF9sZXZlbF9ubyk7CisJCQlsX3J5MSA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF90Y3kxLCAoT1BKX0lOVDMyKWxfbGV2ZWxfbm8pOworCisJCQlsX3B4MCA9IG9wal9pbnRfZmxvb3JkaXZwb3cyKGxfcngwLCAoT1BKX0lOVDMyKWxfcGR4KSA8PCBsX3BkeDsKKwkJCWxfcHkwID0gb3BqX2ludF9mbG9vcmRpdnBvdzIobF9yeTAsIChPUEpfSU5UMzIpbF9wZHkpIDw8IGxfcGR5OworCQkJbF9weDEgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfcngxLCAoT1BKX0lOVDMyKWxfcGR4KSA8PCBsX3BkeDsKKworCQkJcHkxID0gb3BqX2ludF9jZWlsZGl2cG93MihsX3J5MSwgKE9QSl9JTlQzMilsX3BkeSkgPDwgbF9wZHk7CisKKwkJCWxfcHcgPSAobF9yeDA9PWxfcngxKT8wOihPUEpfVUlOVDMyKSgobF9weDEgLSBsX3B4MCkgPj4gbF9wZHgpOworCQkJbF9waCA9IChsX3J5MD09bF9yeTEpPzA6KE9QSl9VSU5UMzIpKChweTEgLSBsX3B5MCkgPj4gbF9wZHkpOworCisJCQlsX3Byb2R1Y3QgPSBsX3B3ICogbF9waDsKKworCQkJLyogdXBkYXRlIHByZWNpc2lvbiAqLworCQkJaWYgKGxfcHJvZHVjdCA+ICpwX21heF9wcmVjKSB7CisJCQkJKnBfbWF4X3ByZWMgPSBsX3Byb2R1Y3Q7CisJCQl9CisJCX0KKwkJKytsX2ltZ19jb21wOworCQkrK2xfdGNjcDsKKwl9Cit9CisKKwordm9pZCBvcGpfZ2V0X2FsbF9lbmNvZGluZ19wYXJhbWV0ZXJzKCAgIGNvbnN0IG9wal9pbWFnZV90ICpwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wal9jcF90ICpwX2NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgdGlsZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdHkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIHBfdHkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2R4X21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9keV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbWF4X3ByZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfbWF4X3JlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICoqIHBfcmVzb2x1dGlvbnMgKQoreworCS8qIGxvb3AqLworCU9QSl9VSU5UMzIgY29tcG5vLCByZXNubzsKKworCS8qIHBvaW50ZXJzKi8KKwljb25zdCBvcGpfdGNwX3QgKnRjcCA9IDAwOworCWNvbnN0IG9wal90Y2NwX3QgKiBsX3RjY3AgPSAwMDsKKwljb25zdCBvcGpfaW1hZ2VfY29tcF90ICogbF9pbWdfY29tcCA9IDAwOworCisJLyogdG8gc3RvcmUgbF9keCwgbF9keSwgdyBhbmQgaCBmb3IgZWFjaCByZXNvbHV0aW9uIGFuZCBjb21wb25lbnQuKi8KKwlPUEpfVUlOVDMyICogbFJlc29sdXRpb25QdHI7CisKKwkvKiBwb3NpdGlvbiBpbiB4IGFuZCB5IG9mIHRpbGUqLworCU9QSl9VSU5UMzIgcCwgcTsKKworCS8qIHByZWNvbmRpdGlvbnMgaW4gZGVidWcqLworCWFzc2VydChwX2NwICE9IDAwKTsKKwlhc3NlcnQocF9pbWFnZSAhPSAwMCk7CisJYXNzZXJ0KHRpbGVubyA8IHBfY3AtPnR3ICogcF9jcC0+dGgpOworCisJLyogaW5pdGlhbGl6YXRpb25zKi8KKwl0Y3AgPSAmcF9jcC0+dGNwcyBbdGlsZW5vXTsKKwlsX3RjY3AgPSB0Y3AtPnRjY3BzOworCWxfaW1nX2NvbXAgPSBwX2ltYWdlLT5jb21wczsKKworCS8qIHBvc2l0aW9uIGluIHggYW5kIHkgb2YgdGlsZSovCisJcCA9IHRpbGVubyAlIHBfY3AtPnR3OworCXEgPSB0aWxlbm8gLyBwX2NwLT50dzsKKworCS8qIGhlcmUgY2FsY3VsYXRpb24gb2YgdHgwLCB0eDEsIHR5MCwgdHkxLCBtYXhwcmVjLCBsX2R4IGFuZCBsX2R5ICovCisJKnBfdHgwID0gb3BqX2ludF9tYXgoKE9QSl9JTlQzMikocF9jcC0+dHgwICsgcCAqIHBfY3AtPnRkeCksIChPUEpfSU5UMzIpcF9pbWFnZS0+eDApOworCSpwX3R4MSA9IG9wal9pbnRfbWluKChPUEpfSU5UMzIpKHBfY3AtPnR4MCArIChwICsgMSkgKiBwX2NwLT50ZHgpLCAoT1BKX0lOVDMyKXBfaW1hZ2UtPngxKTsKKwkqcF90eTAgPSBvcGpfaW50X21heCgoT1BKX0lOVDMyKShwX2NwLT50eTAgKyBxICogcF9jcC0+dGR5KSwgKE9QSl9JTlQzMilwX2ltYWdlLT55MCk7CisJKnBfdHkxID0gb3BqX2ludF9taW4oKE9QSl9JTlQzMikocF9jcC0+dHkwICsgKHEgKyAxKSAqIHBfY3AtPnRkeSksIChPUEpfSU5UMzIpcF9pbWFnZS0+eTEpOworCisJLyogbWF4IHByZWNpc2lvbiBhbmQgcmVzb2x1dGlvbiBpcyAwIChjYW4gb25seSBncm93KSovCisJKnBfbWF4X3ByZWMgPSAwOworCSpwX21heF9yZXMgPSAwOworCisJLyogdGFrZSB0aGUgbGFyZ2VzdCB2YWx1ZSBmb3IgZHhfbWluIGFuZCBkeV9taW4qLworCSpwX2R4X21pbiA9IDB4N2ZmZmZmZmY7CisJKnBfZHlfbWluID0gMHg3ZmZmZmZmZjsKKworCWZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgcF9pbWFnZS0+bnVtY29tcHM7ICsrY29tcG5vKSB7CisJCS8qIGFyaXRtZXRpYyB2YXJpYWJsZXMgdG8gY2FsY3VsYXRlKi8KKwkJT1BKX1VJTlQzMiBsX2xldmVsX25vOworCQlPUEpfSU5UMzIgbF9yeDAsIGxfcnkwLCBsX3J4MSwgbF9yeTE7CisJCU9QSl9JTlQzMiBsX3B4MCwgbF9weTAsIGxfcHgxLCBweTE7CisJCU9QSl9VSU5UMzIgbF9wcm9kdWN0OworCQlPUEpfSU5UMzIgbF90Y3gwLCBsX3RjeTAsIGxfdGN4MSwgbF90Y3kxOworCQlPUEpfVUlOVDMyIGxfcGR4LCBsX3BkeSAsIGxfcHcgLCBsX3BoOworCisJCWxSZXNvbHV0aW9uUHRyID0gcF9yZXNvbHV0aW9uc1tjb21wbm9dOworCisJCWxfdGN4MCA9IG9wal9pbnRfY2VpbGRpdigqcF90eDAsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHgpOworCQlsX3RjeTAgPSBvcGpfaW50X2NlaWxkaXYoKnBfdHkwLCAoT1BKX0lOVDMyKWxfaW1nX2NvbXAtPmR5KTsKKwkJbF90Y3gxID0gb3BqX2ludF9jZWlsZGl2KCpwX3R4MSwgKE9QSl9JTlQzMilsX2ltZ19jb21wLT5keCk7CisJCWxfdGN5MSA9IG9wal9pbnRfY2VpbGRpdigqcF90eTEsIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHkpOworCisJCWlmIChsX3RjY3AtPm51bXJlc29sdXRpb25zID4gKnBfbWF4X3JlcykgeworCQkJKnBfbWF4X3JlcyA9IGxfdGNjcC0+bnVtcmVzb2x1dGlvbnM7CisJCX0KKworCQkvKiB1c2UgY3VzdG9tIHNpemUgZm9yIHByZWNpbmN0cyovCisJCWxfbGV2ZWxfbm8gPSBsX3RjY3AtPm51bXJlc29sdXRpb25zIC0gMTsKKwkJZm9yIChyZXNubyA9IDA7IHJlc25vIDwgbF90Y2NwLT5udW1yZXNvbHV0aW9uczsgKytyZXNubykgeworCQkJT1BKX1VJTlQzMiBsX2R4LCBsX2R5OworCisJCQkvKiBwcmVjaW5jdCB3aWR0aCBhbmQgaGVpZ2h0Ki8KKwkJCWxfcGR4ID0gbF90Y2NwLT5wcmN3W3Jlc25vXTsKKwkJCWxfcGR5ID0gbF90Y2NwLT5wcmNoW3Jlc25vXTsKKwkJCSpsUmVzb2x1dGlvblB0cisrID0gbF9wZHg7CisJCQkqbFJlc29sdXRpb25QdHIrKyA9IGxfcGR5OworCQkJbF9keCA9IGxfaW1nX2NvbXAtPmR4ICogKDF1IDw8IChsX3BkeCArIGxfbGV2ZWxfbm8pKTsKKwkJCWxfZHkgPSBsX2ltZ19jb21wLT5keSAqICgxdSA8PCAobF9wZHkgKyBsX2xldmVsX25vKSk7CisJCQkvKiB0YWtlIHRoZSBtaW5pbXVtIHNpemUgZm9yIGxfZHggZm9yIGVhY2ggY29tcCBhbmQgcmVzb2x1dGlvbiovCisJCQkqcF9keF9taW4gPSAoT1BKX1VJTlQzMilvcGpfaW50X21pbigoT1BKX0lOVDMyKSpwX2R4X21pbiwgKE9QSl9JTlQzMilsX2R4KTsKKwkJCSpwX2R5X21pbiA9IChPUEpfVUlOVDMyKW9wal9pbnRfbWluKChPUEpfSU5UMzIpKnBfZHlfbWluLCAoT1BKX0lOVDMyKWxfZHkpOworCisJCQkvKiB2YXJpb3VzIGNhbGN1bGF0aW9ucyBvZiBleHRlbnRzKi8KKwkJCWxfcngwID0gb3BqX2ludF9jZWlsZGl2cG93MihsX3RjeDAsIChPUEpfSU5UMzIpbF9sZXZlbF9ubyk7CisJCQlsX3J5MCA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF90Y3kwLCAoT1BKX0lOVDMyKWxfbGV2ZWxfbm8pOworCQkJbF9yeDEgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfdGN4MSwgKE9QSl9JTlQzMilsX2xldmVsX25vKTsKKwkJCWxfcnkxID0gb3BqX2ludF9jZWlsZGl2cG93MihsX3RjeTEsIChPUEpfSU5UMzIpbF9sZXZlbF9ubyk7CisJCQlsX3B4MCA9IG9wal9pbnRfZmxvb3JkaXZwb3cyKGxfcngwLCAoT1BKX0lOVDMyKWxfcGR4KSA8PCBsX3BkeDsKKwkJCWxfcHkwID0gb3BqX2ludF9mbG9vcmRpdnBvdzIobF9yeTAsIChPUEpfSU5UMzIpbF9wZHkpIDw8IGxfcGR5OworCQkJbF9weDEgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfcngxLCAoT1BKX0lOVDMyKWxfcGR4KSA8PCBsX3BkeDsKKwkJCXB5MSA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF9yeTEsIChPUEpfSU5UMzIpbF9wZHkpIDw8IGxfcGR5OworCQkJbF9wdyA9IChsX3J4MD09bF9yeDEpPzA6KE9QSl9VSU5UMzIpKChsX3B4MSAtIGxfcHgwKSA+PiBsX3BkeCk7CisJCQlsX3BoID0gKGxfcnkwPT1sX3J5MSk/MDooT1BKX1VJTlQzMikoKHB5MSAtIGxfcHkwKSA+PiBsX3BkeSk7CisJCQkqbFJlc29sdXRpb25QdHIrKyA9IGxfcHc7CisJCQkqbFJlc29sdXRpb25QdHIrKyA9IGxfcGg7CisJCQlsX3Byb2R1Y3QgPSBsX3B3ICogbF9waDsKKwkJCQorICAgICAgICAgICAgLyogdXBkYXRlIHByZWNpc2lvbiovCisJCQlpZiAobF9wcm9kdWN0ID4gKnBfbWF4X3ByZWMpIHsKKwkJCQkqcF9tYXhfcHJlYyA9IGxfcHJvZHVjdDsKKwkJCX0KKworCQkJLS1sX2xldmVsX25vOworCQl9CisJCSsrbF90Y2NwOworCQkrK2xfaW1nX2NvbXA7CisJfQorfQorCitvcGpfcGlfaXRlcmF0b3JfdCAqIG9wal9waV9jcmVhdGUoCWNvbnN0IG9wal9pbWFnZV90ICppbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wal9jcF90ICpjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgdGlsZW5vICkKK3sKKwkvKiBsb29wKi8KKwlPUEpfVUlOVDMyIHBpbm8sIGNvbXBubzsKKwkvKiBudW1iZXIgb2YgcG9jIGluIHRoZSBwX3BpKi8KKwlPUEpfVUlOVDMyIGxfcG9jX2JvdW5kOworCisJLyogcG9pbnRlcnMgdG8gdGlsZSBjb2RpbmcgcGFyYW1ldGVycyBhbmQgY29tcG9uZW50cy4qLworCW9wal9waV9pdGVyYXRvcl90ICpsX3BpID0gMDA7CisJb3BqX3RjcF90ICp0Y3AgPSAwMDsKKwljb25zdCBvcGpfdGNjcF90ICp0Y2NwID0gMDA7CisKKwkvKiBjdXJyZW50IHBhY2tldCBpdGVyYXRvciBiZWluZyBhbGxvY2F0ZWQqLworCW9wal9waV9pdGVyYXRvcl90ICpsX2N1cnJlbnRfcGkgPSAwMDsKKworCS8qIHByZWNvbmRpdGlvbnMgaW4gZGVidWcqLworCWFzc2VydChjcCAhPSAwMCk7CisJYXNzZXJ0KGltYWdlICE9IDAwKTsKKwlhc3NlcnQodGlsZW5vIDwgY3AtPnR3ICogY3AtPnRoKTsKKworCS8qIGluaXRpYWxpemF0aW9ucyovCisJdGNwID0gJmNwLT50Y3BzW3RpbGVub107CisJbF9wb2NfYm91bmQgPSB0Y3AtPm51bXBvY3MrMTsKKworCS8qIG1lbW9yeSBhbGxvY2F0aW9ucyovCisJbF9waSA9IChvcGpfcGlfaXRlcmF0b3JfdCopIG9wal9jYWxsb2MoKGxfcG9jX2JvdW5kKSwgc2l6ZW9mKG9wal9waV9pdGVyYXRvcl90KSk7CisJaWYgKCFsX3BpKSB7CisJCXJldHVybiBOVUxMOworCX0KKwltZW1zZXQobF9waSwwLGxfcG9jX2JvdW5kICogc2l6ZW9mKG9wal9waV9pdGVyYXRvcl90KSk7CisKKwlsX2N1cnJlbnRfcGkgPSBsX3BpOworCWZvciAocGlubyA9IDA7IHBpbm8gPCBsX3BvY19ib3VuZCA7ICsrcGlubykgeworCisJCWxfY3VycmVudF9waS0+Y29tcHMgPSAob3BqX3BpX2NvbXBfdCopIG9wal9jYWxsb2MoaW1hZ2UtPm51bWNvbXBzLCBzaXplb2Yob3BqX3BpX2NvbXBfdCkpOworCQlpZiAoISBsX2N1cnJlbnRfcGktPmNvbXBzKSB7CisJCQlvcGpfcGlfZGVzdHJveShsX3BpLCBsX3BvY19ib3VuZCk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCWxfY3VycmVudF9waS0+bnVtY29tcHMgPSBpbWFnZS0+bnVtY29tcHM7CisJCW1lbXNldChsX2N1cnJlbnRfcGktPmNvbXBzLDAsaW1hZ2UtPm51bWNvbXBzICogc2l6ZW9mKG9wal9waV9jb21wX3QpKTsKKworCQlmb3IgKGNvbXBubyA9IDA7IGNvbXBubyA8IGltYWdlLT5udW1jb21wczsgKytjb21wbm8pIHsKKwkJCW9wal9waV9jb21wX3QgKmNvbXAgPSAmbF9jdXJyZW50X3BpLT5jb21wc1tjb21wbm9dOworCisJCQl0Y2NwID0gJnRjcC0+dGNjcHNbY29tcG5vXTsKKworCQkJY29tcC0+cmVzb2x1dGlvbnMgPSAob3BqX3BpX3Jlc29sdXRpb25fdCopIG9wal9tYWxsb2ModGNjcC0+bnVtcmVzb2x1dGlvbnMgKiBzaXplb2Yob3BqX3BpX3Jlc29sdXRpb25fdCkpOworCQkJaWYgKCFjb21wLT5yZXNvbHV0aW9ucykgeworCQkJCW9wal9waV9kZXN0cm95KGxfcGksIGxfcG9jX2JvdW5kKTsKKwkJCQlyZXR1cm4gMDA7CisJCQl9CisKKwkJCWNvbXAtPm51bXJlc29sdXRpb25zID0gdGNjcC0+bnVtcmVzb2x1dGlvbnM7CisJCQltZW1zZXQoY29tcC0+cmVzb2x1dGlvbnMsMCx0Y2NwLT5udW1yZXNvbHV0aW9ucyAqIHNpemVvZihvcGpfcGlfcmVzb2x1dGlvbl90KSk7CisJCX0KKwkJKytsX2N1cnJlbnRfcGk7CisJfQorCXJldHVybiBsX3BpOworfQorCit2b2lkIG9wal9waV91cGRhdGVfZW5jb2RlX3BvY19hbmRfZmluYWwgKCAgIG9wal9jcF90ICpwX2NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgcF90eDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwX3R4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBfdHkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgcF90eTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfcHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9yZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9keF9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9keV9taW4pCit7CisJLyogbG9vcCovCisJT1BKX1VJTlQzMiBwaW5vOworCS8qIHRpbGUgY29kaW5nIHBhcmFtZXRlciovCisJb3BqX3RjcF90ICpsX3RjcCA9IDAwOworCS8qIGN1cnJlbnQgcG9jIGJlaW5nIHVwZGF0ZWQqLworCW9wal9wb2NfdCAqIGxfY3VycmVudF9wb2MgPSAwMDsKKworCS8qIG51bWJlciBvZiBwb2NzKi8KKwlPUEpfVUlOVDMyIGxfcG9jX2JvdW5kOworCisgICAgT1BKX0FSR19OT1RfVVNFRChwX21heF9yZXMpOworCisJLyogcHJlY29uZGl0aW9ucyBpbiBkZWJ1ZyovCisJYXNzZXJ0KHBfY3AgIT0gMDApOworCWFzc2VydChwX3RpbGVubyA8IHBfY3AtPnR3ICogcF9jcC0+dGgpOworCisJLyogaW5pdGlhbGl6YXRpb25zKi8KKwlsX3RjcCA9ICZwX2NwLT50Y3BzIFtwX3RpbGVub107CisJLyogbnVtYmVyIG9mIGl0ZXJhdGlvbnMgaW4gdGhlIGxvb3AgKi8KKwlsX3BvY19ib3VuZCA9IGxfdGNwLT5udW1wb2NzKzE7CisKKwkvKiBzdGFydCBhdCBmaXJzdCBlbGVtZW50LCBhbmQgdG8gbWFrZSBzdXJlIHRoZSBjb21waWxlciB3aWxsIG5vdCBtYWtlIGEgY2FsY3VsYXRpb24gZWFjaCB0aW1lIGluIHRoZSBsb29wCisJICAgc3RvcmUgYSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gbW9kaWZ5IHJhdGhlciB0aGFuIGxfdGNwLT5wb2NzW2ldKi8KKwlsX2N1cnJlbnRfcG9jID0gbF90Y3AtPnBvY3M7CisKKwlsX2N1cnJlbnRfcG9jLT5jb21wUyA9IGxfY3VycmVudF9wb2MtPmNvbXBubzA7CisJbF9jdXJyZW50X3BvYy0+Y29tcEUgPSBsX2N1cnJlbnRfcG9jLT5jb21wbm8xOworCWxfY3VycmVudF9wb2MtPnJlc1MgPSBsX2N1cnJlbnRfcG9jLT5yZXNubzA7CisJbF9jdXJyZW50X3BvYy0+cmVzRSA9IGxfY3VycmVudF9wb2MtPnJlc25vMTsKKwlsX2N1cnJlbnRfcG9jLT5sYXlFID0gbF9jdXJyZW50X3BvYy0+bGF5bm8xOworCisJLyogc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHRoZSBmaXJzdCBlbGVtZW50Ki8KKwlsX2N1cnJlbnRfcG9jLT5sYXlTID0gMDsKKwlsX2N1cnJlbnRfcG9jLT5wcmcgID0gbF9jdXJyZW50X3BvYy0+cHJnMTsKKwlsX2N1cnJlbnRfcG9jLT5wcmNTID0gMDsKKworCWxfY3VycmVudF9wb2MtPnByY0UgPSBwX21heF9wcmVjOworCWxfY3VycmVudF9wb2MtPnR4UyA9IChPUEpfVUlOVDMyKXBfdHgwOworCWxfY3VycmVudF9wb2MtPnR4RSA9IChPUEpfVUlOVDMyKXBfdHgxOworCWxfY3VycmVudF9wb2MtPnR5UyA9IChPUEpfVUlOVDMyKXBfdHkwOworCWxfY3VycmVudF9wb2MtPnR5RSA9IChPUEpfVUlOVDMyKXBfdHkxOworCWxfY3VycmVudF9wb2MtPmR4ID0gcF9keF9taW47CisJbF9jdXJyZW50X3BvYy0+ZHkgPSBwX2R5X21pbjsKKworCSsrIGxfY3VycmVudF9wb2M7CisJZm9yIChwaW5vID0gMTtwaW5vIDwgbF9wb2NfYm91bmQgOyArK3Bpbm8pIHsKKwkJbF9jdXJyZW50X3BvYy0+Y29tcFMgPSBsX2N1cnJlbnRfcG9jLT5jb21wbm8wOworCQlsX2N1cnJlbnRfcG9jLT5jb21wRT0gbF9jdXJyZW50X3BvYy0+Y29tcG5vMTsKKwkJbF9jdXJyZW50X3BvYy0+cmVzUyA9IGxfY3VycmVudF9wb2MtPnJlc25vMDsKKwkJbF9jdXJyZW50X3BvYy0+cmVzRSA9IGxfY3VycmVudF9wb2MtPnJlc25vMTsKKwkJbF9jdXJyZW50X3BvYy0+bGF5RSA9IGxfY3VycmVudF9wb2MtPmxheW5vMTsKKwkJbF9jdXJyZW50X3BvYy0+cHJnICA9IGxfY3VycmVudF9wb2MtPnByZzE7CisJCWxfY3VycmVudF9wb2MtPnByY1MgPSAwOworCQkvKiBzcGVjaWFsIHRyZWF0bWVudCBoZXJlIGRpZmZlcmVudCBmcm9tIHRoZSBmaXJzdCBlbGVtZW50Ki8KKwkJbF9jdXJyZW50X3BvYy0+bGF5UyA9IChsX2N1cnJlbnRfcG9jLT5sYXlFID4gKGxfY3VycmVudF9wb2MtMSktPmxheUUpID8gbF9jdXJyZW50X3BvYy0+bGF5RSA6IDA7CisKKwkJbF9jdXJyZW50X3BvYy0+cHJjRSA9IHBfbWF4X3ByZWM7CisJCWxfY3VycmVudF9wb2MtPnR4UyA9IChPUEpfVUlOVDMyKXBfdHgwOworCQlsX2N1cnJlbnRfcG9jLT50eEUgPSAoT1BKX1VJTlQzMilwX3R4MTsKKwkJbF9jdXJyZW50X3BvYy0+dHlTID0gKE9QSl9VSU5UMzIpcF90eTA7CisJCWxfY3VycmVudF9wb2MtPnR5RSA9IChPUEpfVUlOVDMyKXBfdHkxOworCQlsX2N1cnJlbnRfcG9jLT5keCA9IHBfZHhfbWluOworCQlsX2N1cnJlbnRfcG9jLT5keSA9IHBfZHlfbWluOworCQkrKyBsX2N1cnJlbnRfcG9jOworCX0KK30KKwordm9pZCBvcGpfcGlfdXBkYXRlX2VuY29kZV9ub3RfcG9jICgJb3BqX2NwX3QgKnBfY3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbnVtX2NvbXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwX3R4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwX3R4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwX3R5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwX3R5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfcHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX2R4X21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9keV9taW4pCit7CisJLyogbG9vcCovCisJT1BKX1VJTlQzMiBwaW5vOworCS8qIHRpbGUgY29kaW5nIHBhcmFtZXRlciovCisJb3BqX3RjcF90ICpsX3RjcCA9IDAwOworCS8qIGN1cnJlbnQgcG9jIGJlaW5nIHVwZGF0ZWQqLworCW9wal9wb2NfdCAqIGxfY3VycmVudF9wb2MgPSAwMDsKKwkvKiBudW1iZXIgb2YgcG9jcyovCisJT1BKX1VJTlQzMiBsX3BvY19ib3VuZDsKKworCS8qIHByZWNvbmRpdGlvbnMgaW4gZGVidWcqLworCWFzc2VydChwX2NwICE9IDAwKTsKKwlhc3NlcnQocF90aWxlbm8gPCBwX2NwLT50dyAqIHBfY3AtPnRoKTsKKworCS8qIGluaXRpYWxpemF0aW9ucyovCisJbF90Y3AgPSAmcF9jcC0+dGNwcyBbcF90aWxlbm9dOworCisJLyogbnVtYmVyIG9mIGl0ZXJhdGlvbnMgaW4gdGhlIGxvb3AgKi8KKwlsX3BvY19ib3VuZCA9IGxfdGNwLT5udW1wb2NzKzE7CisKKwkvKiBzdGFydCBhdCBmaXJzdCBlbGVtZW50LCBhbmQgdG8gbWFrZSBzdXJlIHRoZSBjb21waWxlciB3aWxsIG5vdCBtYWtlIGEgY2FsY3VsYXRpb24gZWFjaCB0aW1lIGluIHRoZSBsb29wCisJICAgc3RvcmUgYSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gbW9kaWZ5IHJhdGhlciB0aGFuIGxfdGNwLT5wb2NzW2ldKi8KKwlsX2N1cnJlbnRfcG9jID0gbF90Y3AtPnBvY3M7CisKKwlmb3IgKHBpbm8gPSAwOyBwaW5vIDwgbF9wb2NfYm91bmQgOyArK3Bpbm8pIHsKKwkJbF9jdXJyZW50X3BvYy0+Y29tcFMgPSAwOworCQlsX2N1cnJlbnRfcG9jLT5jb21wRSA9IHBfbnVtX2NvbXBzOy8qcF9pbWFnZS0+bnVtY29tcHM7Ki8KKwkJbF9jdXJyZW50X3BvYy0+cmVzUyA9IDA7CisJCWxfY3VycmVudF9wb2MtPnJlc0UgPSBwX21heF9yZXM7CisJCWxfY3VycmVudF9wb2MtPmxheVMgPSAwOworCQlsX2N1cnJlbnRfcG9jLT5sYXlFID0gbF90Y3AtPm51bWxheWVyczsKKwkJbF9jdXJyZW50X3BvYy0+cHJnICA9IGxfdGNwLT5wcmc7CisJCWxfY3VycmVudF9wb2MtPnByY1MgPSAwOworCQlsX2N1cnJlbnRfcG9jLT5wcmNFID0gcF9tYXhfcHJlYzsKKwkJbF9jdXJyZW50X3BvYy0+dHhTID0gKE9QSl9VSU5UMzIpcF90eDA7CisJCWxfY3VycmVudF9wb2MtPnR4RSA9IChPUEpfVUlOVDMyKXBfdHgxOworCQlsX2N1cnJlbnRfcG9jLT50eVMgPSAoT1BKX1VJTlQzMilwX3R5MDsKKwkJbF9jdXJyZW50X3BvYy0+dHlFID0gKE9QSl9VSU5UMzIpcF90eTE7CisJCWxfY3VycmVudF9wb2MtPmR4ID0gcF9keF9taW47CisJCWxfY3VycmVudF9wb2MtPmR5ID0gcF9keV9taW47CisJCSsrIGxfY3VycmVudF9wb2M7CisJfQorfQorCit2b2lkIG9wal9waV91cGRhdGVfZGVjb2RlX3BvYyAob3BqX3BpX2l0ZXJhdG9yX3QgKiBwX3BpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y3BfdCAqIHBfdGNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfcmVzKQoreworCS8qIGxvb3AqLworCU9QSl9VSU5UMzIgcGlubzsKKworCS8qIGVuY29kaW5nIHByYW1ldGVycyB0byBzZXQqLworCU9QSl9VSU5UMzIgbF9ib3VuZDsKKworCW9wal9waV9pdGVyYXRvcl90ICogbF9jdXJyZW50X3BpID0gMDA7CisJb3BqX3BvY190KiBsX2N1cnJlbnRfcG9jID0gMDsKKworICAgIE9QSl9BUkdfTk9UX1VTRUQocF9tYXhfcmVzKTsKKworCS8qIHByZWNvbmRpdGlvbnMgaW4gZGVidWcqLworCWFzc2VydChwX3BpICE9IDAwKTsKKwlhc3NlcnQocF90Y3AgIT0gMDApOworCisJLyogaW5pdGlhbGl6YXRpb25zKi8KKwlsX2JvdW5kID0gcF90Y3AtPm51bXBvY3MrMTsKKwlsX2N1cnJlbnRfcGkgPSBwX3BpOworCWxfY3VycmVudF9wb2MgPSBwX3RjcC0+cG9jczsKKworCWZvcgkocGlubyA9IDA7cGlubzxsX2JvdW5kOysrcGlubykgeworCQlsX2N1cnJlbnRfcGktPnBvYy5wcmcgPSBsX2N1cnJlbnRfcG9jLT5wcmc7IC8qIFByb2dyZXNzaW9uIE9yZGVyICMwICovCisJCWxfY3VycmVudF9waS0+Zmlyc3QgPSAxOworCisJCWxfY3VycmVudF9waS0+cG9jLnJlc25vMCA9IGxfY3VycmVudF9wb2MtPnJlc25vMDsgLyogUmVzb2x1dGlvbiBMZXZlbCBJbmRleCAjMCAoU3RhcnQpICovCisJCWxfY3VycmVudF9waS0+cG9jLmNvbXBubzAgPSBsX2N1cnJlbnRfcG9jLT5jb21wbm8wOyAvKiBDb21wb25lbnQgSW5kZXggIzAgKFN0YXJ0KSAqLworCQlsX2N1cnJlbnRfcGktPnBvYy5sYXlubzAgPSAwOworCQlsX2N1cnJlbnRfcGktPnBvYy5wcmVjbm8wID0gMDsKKwkJbF9jdXJyZW50X3BpLT5wb2MucmVzbm8xID0gbF9jdXJyZW50X3BvYy0+cmVzbm8xOyAvKiBSZXNvbHV0aW9uIExldmVsIEluZGV4ICMwIChFbmQpICovCisJCWxfY3VycmVudF9waS0+cG9jLmNvbXBubzEgPSBsX2N1cnJlbnRfcG9jLT5jb21wbm8xOyAvKiBDb21wb25lbnQgSW5kZXggIzAgKEVuZCkgKi8KKwkJbF9jdXJyZW50X3BpLT5wb2MubGF5bm8xID0gbF9jdXJyZW50X3BvYy0+bGF5bm8xOyAvKiBMYXllciBJbmRleCAjMCAoRW5kKSAqLworCQlsX2N1cnJlbnRfcGktPnBvYy5wcmVjbm8xID0gcF9tYXhfcHJlY2lzaW9uOworCQkrK2xfY3VycmVudF9waTsKKwkJKytsX2N1cnJlbnRfcG9jOworCX0KK30KKwordm9pZCBvcGpfcGlfdXBkYXRlX2RlY29kZV9ub3RfcG9jIChvcGpfcGlfaXRlcmF0b3JfdCAqIHBfcGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y3BfdCAqIHBfdGNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X3ByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9yZXMpCit7CisJLyogbG9vcCovCisJT1BKX1VJTlQzMiBwaW5vOworCisJLyogZW5jb2RpbmcgcHJhbWV0ZXJzIHRvIHNldCovCisJT1BKX1VJTlQzMiBsX2JvdW5kOworCisJb3BqX3BpX2l0ZXJhdG9yX3QgKiBsX2N1cnJlbnRfcGkgPSAwMDsKKwkvKiBwcmVjb25kaXRpb25zIGluIGRlYnVnKi8KKwlhc3NlcnQocF90Y3AgIT0gMDApOworCWFzc2VydChwX3BpICE9IDAwKTsKKworCS8qIGluaXRpYWxpemF0aW9ucyovCisJbF9ib3VuZCA9IHBfdGNwLT5udW1wb2NzKzE7CisJbF9jdXJyZW50X3BpID0gcF9waTsKKworCWZvciAocGlubyA9IDA7cGlubzxsX2JvdW5kOysrcGlubykgeworCQlsX2N1cnJlbnRfcGktPnBvYy5wcmcgPSBwX3RjcC0+cHJnOworCQlsX2N1cnJlbnRfcGktPmZpcnN0ID0gMTsKKwkJbF9jdXJyZW50X3BpLT5wb2MucmVzbm8wID0gMDsKKwkJbF9jdXJyZW50X3BpLT5wb2MuY29tcG5vMCA9IDA7CisJCWxfY3VycmVudF9waS0+cG9jLmxheW5vMCA9IDA7CisJCWxfY3VycmVudF9waS0+cG9jLnByZWNubzAgPSAwOworCQlsX2N1cnJlbnRfcGktPnBvYy5yZXNubzEgPSBwX21heF9yZXM7CisJCWxfY3VycmVudF9waS0+cG9jLmNvbXBubzEgPSBsX2N1cnJlbnRfcGktPm51bWNvbXBzOworCQlsX2N1cnJlbnRfcGktPnBvYy5sYXlubzEgPSBwX3RjcC0+bnVtbGF5ZXJzOworCQlsX2N1cnJlbnRfcGktPnBvYy5wcmVjbm8xID0gcF9tYXhfcHJlY2lzaW9uOworCQkrK2xfY3VycmVudF9waTsKKwl9Cit9CisKKworCitPUEpfQk9PTCBvcGpfcGlfY2hlY2tfbmV4dF9sZXZlbCgJT1BKX0lOVDMyIHBvcywKKwkJCQkJCQkJb3BqX2NwX3QgKmNwLAorCQkJCQkJCQlPUEpfVUlOVDMyIHRpbGVubywKKwkJCQkJCQkJT1BKX1VJTlQzMiBwaW5vLAorCQkJCQkJCQljb25zdCBPUEpfQ0hBUiAqcHJvZykKK3sKKwlPUEpfSU5UMzIgaTsKKwlvcGpfdGNwX3QgKnRjcHMgPSZjcC0+dGNwc1t0aWxlbm9dOworCW9wal9wb2NfdCAqdGNwID0gJnRjcHMtPnBvY3NbcGlub107CisKKwlpZihwb3M+PTApeworCQlmb3IoaT1wb3M7cG9zPj0wO2ktLSl7CisJCQlzd2l0Y2gocHJvZ1tpXSl7CisJCSAgICBjYXNlICdSJzoKKwkJCSAgICBpZih0Y3AtPnJlc190PT10Y3AtPnJlc0UpeworCQkJCSAgICBpZihvcGpfcGlfY2hlY2tfbmV4dF9sZXZlbChwb3MtMSxjcCx0aWxlbm8scGlubyxwcm9nKSl7CisJCQkJCSAgICByZXR1cm4gT1BKX1RSVUU7CisJCQkJICAgIH1lbHNleworCQkJCQkgICAgcmV0dXJuIE9QSl9GQUxTRTsKKwkJCQkgICAgfQorCQkJICAgIH1lbHNleworCQkJCSAgICByZXR1cm4gT1BKX1RSVUU7CisJCQkgICAgfQorCQkJICAgIGJyZWFrOworCQkgICAgY2FzZSAnQyc6CisJCQkgICAgaWYodGNwLT5jb21wX3Q9PXRjcC0+Y29tcEUpeworCQkJCSAgICBpZihvcGpfcGlfY2hlY2tfbmV4dF9sZXZlbChwb3MtMSxjcCx0aWxlbm8scGlubyxwcm9nKSl7CisJCQkJCSAgICByZXR1cm4gT1BKX1RSVUU7CisJCQkJICAgIH1lbHNleworCQkJCQkgICAgcmV0dXJuIE9QSl9GQUxTRTsKKwkJCQkgICAgfQorCQkJICAgIH1lbHNleworCQkJCSAgICByZXR1cm4gT1BKX1RSVUU7CisJCQkgICAgfQorCQkJICAgIGJyZWFrOworCQkgICAgY2FzZSAnTCc6CisJCQkgICAgaWYodGNwLT5sYXlfdD09dGNwLT5sYXlFKXsKKwkJCQkgICAgaWYob3BqX3BpX2NoZWNrX25leHRfbGV2ZWwocG9zLTEsY3AsdGlsZW5vLHBpbm8scHJvZykpeworCQkJCQkgICAgcmV0dXJuIE9QSl9UUlVFOworCQkJCSAgICB9ZWxzZXsKKwkJCQkJICAgIHJldHVybiBPUEpfRkFMU0U7CisJCQkJICAgIH0KKwkJCSAgICB9ZWxzZXsKKwkJCQkgICAgcmV0dXJuIE9QSl9UUlVFOworCQkJICAgIH0KKwkJCSAgICBicmVhazsKKwkJICAgIGNhc2UgJ1AnOgorCQkJICAgIHN3aXRjaCh0Y3AtPnByZyl7CisJCQkJICAgIGNhc2UgT1BKX0xSQ1B8fE9QSl9STENQOgorCQkJCQkgICAgaWYodGNwLT5wcmNfdCA9PSB0Y3AtPnByY0UpeworCQkJCQkJICAgIGlmKG9wal9waV9jaGVja19uZXh0X2xldmVsKGktMSxjcCx0aWxlbm8scGlubyxwcm9nKSl7CisJCQkJCQkJICAgIHJldHVybiBPUEpfVFJVRTsKKwkJCQkJCSAgICB9ZWxzZXsKKwkJCQkJCQkgICAgcmV0dXJuIE9QSl9GQUxTRTsKKwkJCQkJCSAgICB9CisJCQkJCSAgICB9ZWxzZXsKKwkJCQkJCSAgICByZXR1cm4gT1BKX1RSVUU7CisJCQkJCSAgICB9CisJCQkJCSAgICBicmVhazsKKwkJCSAgICBkZWZhdWx0OgorCQkJCSAgICBpZih0Y3AtPnR4MF90ID09IHRjcC0+dHhFKXsKKwkJCQkJICAgIC8qVFkqLworCQkJCQkgICAgaWYodGNwLT50eTBfdCA9PSB0Y3AtPnR5RSl7CisJCQkJCQkgICAgaWYob3BqX3BpX2NoZWNrX25leHRfbGV2ZWwoaS0xLGNwLHRpbGVubyxwaW5vLHByb2cpKXsKKwkJCQkJCQkgICAgcmV0dXJuIE9QSl9UUlVFOworCQkJCQkJICAgIH1lbHNleworCQkJCQkJCSAgICByZXR1cm4gT1BKX0ZBTFNFOworCQkJCQkJICAgIH0KKwkJCQkJICAgIH1lbHNleworCQkJCQkJICAgIHJldHVybiBPUEpfVFJVRTsKKwkJCQkJICAgIH0vKlRZKi8KKwkJCQkgICAgfWVsc2V7CisJCQkJCSAgICByZXR1cm4gT1BKX1RSVUU7CisJCQkJICAgIH0KKwkJCQkgICAgYnJlYWs7CisJCQkgICAgfS8qZW5kIGNhc2UgUCovCisJCSAgICB9LyplbmQgc3dpdGNoKi8KKwkJfS8qZW5kIGZvciovCisJfS8qZW5kIGlmKi8KKwlyZXR1cm4gT1BKX0ZBTFNFOworfQorCisKKy8qCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBQYWNrZXQgaXRlcmF0b3IgaW50ZXJmYWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworb3BqX3BpX2l0ZXJhdG9yX3QgKm9wal9waV9jcmVhdGVfZGVjb2RlKG9wal9pbWFnZV90ICpwX2ltYWdlLAorCQkJCQkJCQkJCW9wal9jcF90ICpwX2NwLAorCQkJCQkJCQkJCU9QSl9VSU5UMzIgcF90aWxlX25vKQoreworCS8qIGxvb3AgKi8KKwlPUEpfVUlOVDMyIHBpbm87CisJT1BKX1VJTlQzMiBjb21wbm8sIHJlc25vOworCisJLyogdG8gc3RvcmUgdywgaCwgZHggYW5kIGR5IGZybyBhbGwgY29tcG9uZW50cyBhbmQgcmVzb2x1dGlvbnMgKi8KKwlPUEpfVUlOVDMyICogbF90bXBfZGF0YTsKKwlPUEpfVUlOVDMyICoqIGxfdG1wX3B0cjsKKworCS8qIGVuY29kaW5nIHByYW1ldGVycyB0byBzZXQgKi8KKwlPUEpfVUlOVDMyIGxfbWF4X3JlczsKKwlPUEpfVUlOVDMyIGxfbWF4X3ByZWM7CisJT1BKX0lOVDMyIGxfdHgwLGxfdHgxLGxfdHkwLGxfdHkxOworCU9QSl9VSU5UMzIgbF9keF9taW4sbF9keV9taW47CisJT1BKX1VJTlQzMiBsX2JvdW5kOworCU9QSl9VSU5UMzIgbF9zdGVwX3AgLCBsX3N0ZXBfYyAsIGxfc3RlcF9yICwgbF9zdGVwX2wgOworCU9QSl9VSU5UMzIgbF9kYXRhX3N0cmlkZTsKKworCS8qIHBvaW50ZXJzICovCisJb3BqX3BpX2l0ZXJhdG9yX3QgKmxfcGkgPSAwMDsKKwlvcGpfdGNwX3QgKmxfdGNwID0gMDA7CisJY29uc3Qgb3BqX3RjY3BfdCAqbF90Y2NwID0gMDA7CisJb3BqX3BpX2NvbXBfdCAqbF9jdXJyZW50X2NvbXAgPSAwMDsKKwlvcGpfaW1hZ2VfY29tcF90ICogbF9pbWdfY29tcCA9IDAwOworCW9wal9waV9pdGVyYXRvcl90ICogbF9jdXJyZW50X3BpID0gMDA7CisJT1BKX1VJTlQzMiAqIGxfZW5jb2RpbmdfdmFsdWVfcHRyID0gMDA7CisKKwkvKiBwcmVjb25kaXRpb25zIGluIGRlYnVnICovCisJYXNzZXJ0KHBfY3AgIT0gMDApOworCWFzc2VydChwX2ltYWdlICE9IDAwKTsKKwlhc3NlcnQocF90aWxlX25vIDwgcF9jcC0+dHcgKiBwX2NwLT50aCk7CisKKwkvKiBpbml0aWFsaXphdGlvbnMgKi8KKwlsX3RjcCA9ICZwX2NwLT50Y3BzW3BfdGlsZV9ub107CisJbF9ib3VuZCA9IGxfdGNwLT5udW1wb2NzKzE7CisKKwlsX2RhdGFfc3RyaWRlID0gNCAqIE9QSl9KMktfTUFYUkxWTFM7CisJbF90bXBfZGF0YSA9IChPUEpfVUlOVDMyKilvcGpfbWFsbG9jKAorCQlsX2RhdGFfc3RyaWRlICogcF9pbWFnZS0+bnVtY29tcHMgKiBzaXplb2YoT1BKX1VJTlQzMikpOworCWlmCisJCSghIGxfdG1wX2RhdGEpCisJeworCQlyZXR1cm4gMDA7CisJfQorCWxfdG1wX3B0ciA9IChPUEpfVUlOVDMyKiopb3BqX21hbGxvYygKKwkJcF9pbWFnZS0+bnVtY29tcHMgKiBzaXplb2YoT1BKX1VJTlQzMiAqKSk7CisJaWYKKwkJKCEgbF90bXBfcHRyKQorCXsKKwkJb3BqX2ZyZWUobF90bXBfZGF0YSk7CisJCXJldHVybiAwMDsKKwl9CisKKwkvKiBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgcGkgKi8KKwlsX3BpID0gb3BqX3BpX2NyZWF0ZShwX2ltYWdlLCBwX2NwLCBwX3RpbGVfbm8pOworCWlmICghbF9waSkgeworCQlvcGpfZnJlZShsX3RtcF9kYXRhKTsKKwkJb3BqX2ZyZWUobF90bXBfcHRyKTsKKwkJcmV0dXJuIDAwOworCX0KKworCWxfZW5jb2RpbmdfdmFsdWVfcHRyID0gbF90bXBfZGF0YTsKKwkvKiB1cGRhdGUgcG9pbnRlciBhcnJheSAqLworCWZvcgorCQkoY29tcG5vID0gMDsgY29tcG5vIDwgcF9pbWFnZS0+bnVtY29tcHM7ICsrY29tcG5vKQorCXsKKwkJbF90bXBfcHRyW2NvbXBub10gPSBsX2VuY29kaW5nX3ZhbHVlX3B0cjsKKwkJbF9lbmNvZGluZ192YWx1ZV9wdHIgKz0gbF9kYXRhX3N0cmlkZTsKKwl9CisJLyogZ2V0IGVuY29kaW5nIHBhcmFtZXRlcnMgKi8KKwlvcGpfZ2V0X2FsbF9lbmNvZGluZ19wYXJhbWV0ZXJzKHBfaW1hZ2UscF9jcCxwX3RpbGVfbm8sJmxfdHgwLCZsX3R4MSwmbF90eTAsJmxfdHkxLCZsX2R4X21pbiwmbF9keV9taW4sJmxfbWF4X3ByZWMsJmxfbWF4X3JlcyxsX3RtcF9wdHIpOworCisJLyogc3RlcCBjYWxjdWxhdGlvbnMgKi8KKwlsX3N0ZXBfcCA9IDE7CisJbF9zdGVwX2MgPSBsX21heF9wcmVjICogbF9zdGVwX3A7CisJbF9zdGVwX3IgPSBwX2ltYWdlLT5udW1jb21wcyAqIGxfc3RlcF9jOworCWxfc3RlcF9sID0gbF9tYXhfcmVzICogbF9zdGVwX3I7CisKKwkvKiBzZXQgdmFsdWVzIGZvciBmaXJzdCBwYWNrZXQgaXRlcmF0b3IgKi8KKwlsX2N1cnJlbnRfcGkgPSBsX3BpOworCisJLyogbWVtb3J5IGFsbG9jYXRpb24gZm9yIGluY2x1ZGUgKi8KKwlsX2N1cnJlbnRfcGktPmluY2x1ZGUgPSAoT1BKX0lOVDE2Kikgb3BqX2NhbGxvYygobF90Y3AtPm51bWxheWVycyArMSkgKiBsX3N0ZXBfbCwgc2l6ZW9mKE9QSl9JTlQxNikpOworCWlmCisJCSghbF9jdXJyZW50X3BpLT5pbmNsdWRlKQorCXsKKwkJb3BqX2ZyZWUobF90bXBfZGF0YSk7CisJCW9wal9mcmVlKGxfdG1wX3B0cik7CisJCW9wal9waV9kZXN0cm95KGxfcGksIGxfYm91bmQpOworCQlyZXR1cm4gMDA7CisJfQorCW1lbXNldChsX2N1cnJlbnRfcGktPmluY2x1ZGUsMCwgKGxfdGNwLT5udW1sYXllcnMgKyAxKSAqIGxfc3RlcF9sKiBzaXplb2YoT1BKX0lOVDE2KSk7CisKKwkvKiBzcGVjaWFsIHRyZWF0bWVudCBmb3IgdGhlIGZpcnN0IHBhY2tldCBpdGVyYXRvciAqLworCWxfY3VycmVudF9jb21wID0gbF9jdXJyZW50X3BpLT5jb21wczsKKwlsX2ltZ19jb21wID0gcF9pbWFnZS0+Y29tcHM7CisJbF90Y2NwID0gbF90Y3AtPnRjY3BzOworCisJbF9jdXJyZW50X3BpLT50eDAgPSBsX3R4MDsKKwlsX2N1cnJlbnRfcGktPnR5MCA9IGxfdHkwOworCWxfY3VycmVudF9waS0+dHgxID0gbF90eDE7CisJbF9jdXJyZW50X3BpLT50eTEgPSBsX3R5MTsKKworCS8qbF9jdXJyZW50X3BpLT5keCA9IGxfaW1nX2NvbXAtPmR4OyovCisJLypsX2N1cnJlbnRfcGktPmR5ID0gbF9pbWdfY29tcC0+ZHk7Ki8KKworCWxfY3VycmVudF9waS0+c3RlcF9wID0gbF9zdGVwX3A7CisJbF9jdXJyZW50X3BpLT5zdGVwX2MgPSBsX3N0ZXBfYzsKKwlsX2N1cnJlbnRfcGktPnN0ZXBfciA9IGxfc3RlcF9yOworCWxfY3VycmVudF9waS0+c3RlcF9sID0gbF9zdGVwX2w7CisKKwkvKiBhbGxvY2F0aW9uIGZvciBjb21wb25lbnRzIGFuZCBudW1iZXIgb2YgY29tcG9uZW50cyBoYXMgYWxyZWFkeSBiZWVuIGNhbGN1bGF0ZWQgYnkgb3BqX3BpX2NyZWF0ZSAqLworCWZvcgorCQkoY29tcG5vID0gMDsgY29tcG5vIDwgbF9jdXJyZW50X3BpLT5udW1jb21wczsgKytjb21wbm8pCisJeworCQlvcGpfcGlfcmVzb2x1dGlvbl90ICpsX3JlcyA9IGxfY3VycmVudF9jb21wLT5yZXNvbHV0aW9uczsKKwkJbF9lbmNvZGluZ192YWx1ZV9wdHIgPSBsX3RtcF9wdHJbY29tcG5vXTsKKworCQlsX2N1cnJlbnRfY29tcC0+ZHggPSBsX2ltZ19jb21wLT5keDsKKwkJbF9jdXJyZW50X2NvbXAtPmR5ID0gbF9pbWdfY29tcC0+ZHk7CisJCS8qIHJlc29sdXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkICovCisJCWZvcgorCQkJKHJlc25vID0gMDsgcmVzbm8gPCBsX2N1cnJlbnRfY29tcC0+bnVtcmVzb2x1dGlvbnM7IHJlc25vKyspCisJCXsKKwkJCWxfcmVzLT5wZHggPSAqKGxfZW5jb2RpbmdfdmFsdWVfcHRyKyspOworCQkJbF9yZXMtPnBkeSA9ICoobF9lbmNvZGluZ192YWx1ZV9wdHIrKyk7CisJCQlsX3Jlcy0+cHcgPSAgKihsX2VuY29kaW5nX3ZhbHVlX3B0cisrKTsKKwkJCWxfcmVzLT5waCA9ICAqKGxfZW5jb2RpbmdfdmFsdWVfcHRyKyspOworCQkJKytsX3JlczsKKwkJfQorCQkrK2xfY3VycmVudF9jb21wOworCQkrK2xfaW1nX2NvbXA7CisJCSsrbF90Y2NwOworCX0KKwkrK2xfY3VycmVudF9waTsKKworCWZvciAocGlubyA9IDEgOyBwaW5vPGxfYm91bmQgOyArK3Bpbm8gKQorCXsKKwkJbF9jdXJyZW50X2NvbXAgPSBsX2N1cnJlbnRfcGktPmNvbXBzOworCQlsX2ltZ19jb21wID0gcF9pbWFnZS0+Y29tcHM7CisJCWxfdGNjcCA9IGxfdGNwLT50Y2NwczsKKworCQlsX2N1cnJlbnRfcGktPnR4MCA9IGxfdHgwOworCQlsX2N1cnJlbnRfcGktPnR5MCA9IGxfdHkwOworCQlsX2N1cnJlbnRfcGktPnR4MSA9IGxfdHgxOworCQlsX2N1cnJlbnRfcGktPnR5MSA9IGxfdHkxOworCQkvKmxfY3VycmVudF9waS0+ZHggPSBsX2R4X21pbjsqLworCQkvKmxfY3VycmVudF9waS0+ZHkgPSBsX2R5X21pbjsqLworCQlsX2N1cnJlbnRfcGktPnN0ZXBfcCA9IGxfc3RlcF9wOworCQlsX2N1cnJlbnRfcGktPnN0ZXBfYyA9IGxfc3RlcF9jOworCQlsX2N1cnJlbnRfcGktPnN0ZXBfciA9IGxfc3RlcF9yOworCQlsX2N1cnJlbnRfcGktPnN0ZXBfbCA9IGxfc3RlcF9sOworCisJCS8qIGFsbG9jYXRpb24gZm9yIGNvbXBvbmVudHMgYW5kIG51bWJlciBvZiBjb21wb25lbnRzIGhhcyBhbHJlYWR5IGJlZW4gY2FsY3VsYXRlZCBieSBvcGpfcGlfY3JlYXRlICovCisJCWZvcgorCQkJKGNvbXBubyA9IDA7IGNvbXBubyA8IGxfY3VycmVudF9waS0+bnVtY29tcHM7ICsrY29tcG5vKQorCQl7CisJCQlvcGpfcGlfcmVzb2x1dGlvbl90ICpsX3JlcyA9IGxfY3VycmVudF9jb21wLT5yZXNvbHV0aW9uczsKKwkJCWxfZW5jb2RpbmdfdmFsdWVfcHRyID0gbF90bXBfcHRyW2NvbXBub107CisKKwkJCWxfY3VycmVudF9jb21wLT5keCA9IGxfaW1nX2NvbXAtPmR4OworCQkJbF9jdXJyZW50X2NvbXAtPmR5ID0gbF9pbWdfY29tcC0+ZHk7CisJCQkvKiByZXNvbHV0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCAqLworCQkJZm9yCisJCQkJKHJlc25vID0gMDsgcmVzbm8gPCBsX2N1cnJlbnRfY29tcC0+bnVtcmVzb2x1dGlvbnM7IHJlc25vKyspCisJCQl7CisJCQkJbF9yZXMtPnBkeCA9ICoobF9lbmNvZGluZ192YWx1ZV9wdHIrKyk7CisJCQkJbF9yZXMtPnBkeSA9ICoobF9lbmNvZGluZ192YWx1ZV9wdHIrKyk7CisJCQkJbF9yZXMtPnB3ID0gICoobF9lbmNvZGluZ192YWx1ZV9wdHIrKyk7CisJCQkJbF9yZXMtPnBoID0gICoobF9lbmNvZGluZ192YWx1ZV9wdHIrKyk7CisJCQkJKytsX3JlczsKKwkJCX0KKwkJCSsrbF9jdXJyZW50X2NvbXA7CisJCQkrK2xfaW1nX2NvbXA7CisJCQkrK2xfdGNjcDsKKwkJfQorCQkvKiBzcGVjaWFsIHRyZWF0bWVudCovCisJCWxfY3VycmVudF9waS0+aW5jbHVkZSA9IChsX2N1cnJlbnRfcGktMSktPmluY2x1ZGU7CisJCSsrbF9jdXJyZW50X3BpOworCX0KKwlvcGpfZnJlZShsX3RtcF9kYXRhKTsKKwlsX3RtcF9kYXRhID0gMDA7CisJb3BqX2ZyZWUobF90bXBfcHRyKTsKKwlsX3RtcF9wdHIgPSAwMDsKKwlpZgorCQkobF90Y3AtPlBPQykKKwl7CisJCW9wal9waV91cGRhdGVfZGVjb2RlX3BvYyAobF9waSxsX3RjcCxsX21heF9wcmVjLGxfbWF4X3Jlcyk7CisJfQorCWVsc2UKKwl7CisJCW9wal9waV91cGRhdGVfZGVjb2RlX25vdF9wb2MobF9waSxsX3RjcCxsX21heF9wcmVjLGxfbWF4X3Jlcyk7CisJfQorCXJldHVybiBsX3BpOworfQorCisKKworb3BqX3BpX2l0ZXJhdG9yX3QgKm9wal9waV9pbml0aWFsaXNlX2VuY29kZShjb25zdCBvcGpfaW1hZ2VfdCAqcF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NwX3QgKnBfY3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlX25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKMktfVDJfTU9ERSBwX3QyX21vZGUgKQoreworCS8qIGxvb3AqLworCU9QSl9VSU5UMzIgcGlubzsKKwlPUEpfVUlOVDMyIGNvbXBubywgcmVzbm87CisKKwkvKiB0byBzdG9yZSB3LCBoLCBkeCBhbmQgZHkgZnJvIGFsbCBjb21wb25lbnRzIGFuZCByZXNvbHV0aW9ucyovCisJT1BKX1VJTlQzMiAqIGxfdG1wX2RhdGE7CisJT1BKX1VJTlQzMiAqKiBsX3RtcF9wdHI7CisKKwkvKiBlbmNvZGluZyBwcmFtZXRlcnMgdG8gc2V0Ki8KKwlPUEpfVUlOVDMyIGxfbWF4X3JlczsKKwlPUEpfVUlOVDMyIGxfbWF4X3ByZWM7CisJT1BKX0lOVDMyIGxfdHgwLGxfdHgxLGxfdHkwLGxfdHkxOworCU9QSl9VSU5UMzIgbF9keF9taW4sbF9keV9taW47CisJT1BKX1VJTlQzMiBsX2JvdW5kOworCU9QSl9VSU5UMzIgbF9zdGVwX3AgLCBsX3N0ZXBfYyAsIGxfc3RlcF9yICwgbF9zdGVwX2wgOworCU9QSl9VSU5UMzIgbF9kYXRhX3N0cmlkZTsKKworCS8qIHBvaW50ZXJzKi8KKwlvcGpfcGlfaXRlcmF0b3JfdCAqbF9waSA9IDAwOworCW9wal90Y3BfdCAqbF90Y3AgPSAwMDsKKwljb25zdCBvcGpfdGNjcF90ICpsX3RjY3AgPSAwMDsKKwlvcGpfcGlfY29tcF90ICpsX2N1cnJlbnRfY29tcCA9IDAwOworCW9wal9pbWFnZV9jb21wX3QgKiBsX2ltZ19jb21wID0gMDA7CisJb3BqX3BpX2l0ZXJhdG9yX3QgKiBsX2N1cnJlbnRfcGkgPSAwMDsKKwlPUEpfVUlOVDMyICogbF9lbmNvZGluZ192YWx1ZV9wdHIgPSAwMDsKKworCS8qIHByZWNvbmRpdGlvbnMgaW4gZGVidWcqLworCWFzc2VydChwX2NwICE9IDAwKTsKKwlhc3NlcnQocF9pbWFnZSAhPSAwMCk7CisJYXNzZXJ0KHBfdGlsZV9ubyA8IHBfY3AtPnR3ICogcF9jcC0+dGgpOworCisJLyogaW5pdGlhbGl6YXRpb25zKi8KKwlsX3RjcCA9ICZwX2NwLT50Y3BzW3BfdGlsZV9ub107CisJbF9ib3VuZCA9IGxfdGNwLT5udW1wb2NzKzE7CisKKwlsX2RhdGFfc3RyaWRlID0gNCAqIE9QSl9KMktfTUFYUkxWTFM7CisJbF90bXBfZGF0YSA9IChPUEpfVUlOVDMyKilvcGpfbWFsbG9jKAorCQlsX2RhdGFfc3RyaWRlICogcF9pbWFnZS0+bnVtY29tcHMgKiBzaXplb2YoT1BKX1VJTlQzMikpOworCWlmICghIGxfdG1wX2RhdGEpIHsKKwkJcmV0dXJuIDAwOworCX0KKworCWxfdG1wX3B0ciA9IChPUEpfVUlOVDMyKiopb3BqX21hbGxvYygKKwkJcF9pbWFnZS0+bnVtY29tcHMgKiBzaXplb2YoT1BKX1VJTlQzMiAqKSk7CisJaWYgKCEgbF90bXBfcHRyKSB7CisJCW9wal9mcmVlKGxfdG1wX2RhdGEpOworCQlyZXR1cm4gMDA7CisJfQorCisJLyogbWVtb3J5IGFsbG9jYXRpb24gZm9yIHBpKi8KKwlsX3BpID0gb3BqX3BpX2NyZWF0ZShwX2ltYWdlLHBfY3AscF90aWxlX25vKTsKKwlpZiAoIWxfcGkpIHsKKwkJb3BqX2ZyZWUobF90bXBfZGF0YSk7CisJCW9wal9mcmVlKGxfdG1wX3B0cik7CisJCXJldHVybiAwMDsKKwl9CisKKwlsX2VuY29kaW5nX3ZhbHVlX3B0ciA9IGxfdG1wX2RhdGE7CisJLyogdXBkYXRlIHBvaW50ZXIgYXJyYXkqLworCWZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgcF9pbWFnZS0+bnVtY29tcHM7ICsrY29tcG5vKSB7CisJCWxfdG1wX3B0cltjb21wbm9dID0gbF9lbmNvZGluZ192YWx1ZV9wdHI7CisJCWxfZW5jb2RpbmdfdmFsdWVfcHRyICs9IGxfZGF0YV9zdHJpZGU7CisJfQorCisJLyogZ2V0IGVuY29kaW5nIHBhcmFtZXRlcnMqLworCW9wal9nZXRfYWxsX2VuY29kaW5nX3BhcmFtZXRlcnMocF9pbWFnZSxwX2NwLHBfdGlsZV9ubywmbF90eDAsJmxfdHgxLCZsX3R5MCwmbF90eTEsJmxfZHhfbWluLCZsX2R5X21pbiwmbF9tYXhfcHJlYywmbF9tYXhfcmVzLGxfdG1wX3B0cik7CisKKwkvKiBzdGVwIGNhbGN1bGF0aW9ucyovCisJbF9zdGVwX3AgPSAxOworCWxfc3RlcF9jID0gbF9tYXhfcHJlYyAqIGxfc3RlcF9wOworCWxfc3RlcF9yID0gcF9pbWFnZS0+bnVtY29tcHMgKiBsX3N0ZXBfYzsKKwlsX3N0ZXBfbCA9IGxfbWF4X3JlcyAqIGxfc3RlcF9yOworCisJLyogc2V0IHZhbHVlcyBmb3IgZmlyc3QgcGFja2V0IGl0ZXJhdG9yKi8KKwlsX3BpLT50cF9vbiA9IHBfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV90cF9vbjsKKwlsX2N1cnJlbnRfcGkgPSBsX3BpOworCisJLyogbWVtb3J5IGFsbG9jYXRpb24gZm9yIGluY2x1ZGUqLworCWxfY3VycmVudF9waS0+aW5jbHVkZSA9IChPUEpfSU5UMTYqKSBvcGpfY2FsbG9jKGxfdGNwLT5udW1sYXllcnMgKiBsX3N0ZXBfbCwgc2l6ZW9mKE9QSl9JTlQxNikpOworCWlmICghbF9jdXJyZW50X3BpLT5pbmNsdWRlKSB7CisJCW9wal9mcmVlKGxfdG1wX2RhdGEpOworCQlvcGpfZnJlZShsX3RtcF9wdHIpOworCQlvcGpfcGlfZGVzdHJveShsX3BpLCBsX2JvdW5kKTsKKwkJcmV0dXJuIDAwOworCX0KKwltZW1zZXQobF9jdXJyZW50X3BpLT5pbmNsdWRlLDAsbF90Y3AtPm51bWxheWVycyAqIGxfc3RlcF9sKiBzaXplb2YoT1BKX0lOVDE2KSk7CisKKwkvKiBzcGVjaWFsIHRyZWF0bWVudCBmb3IgdGhlIGZpcnN0IHBhY2tldCBpdGVyYXRvciovCisJbF9jdXJyZW50X2NvbXAgPSBsX2N1cnJlbnRfcGktPmNvbXBzOworCWxfaW1nX2NvbXAgPSBwX2ltYWdlLT5jb21wczsKKwlsX3RjY3AgPSBsX3RjcC0+dGNjcHM7CisJbF9jdXJyZW50X3BpLT50eDAgPSBsX3R4MDsKKwlsX2N1cnJlbnRfcGktPnR5MCA9IGxfdHkwOworCWxfY3VycmVudF9waS0+dHgxID0gbF90eDE7CisJbF9jdXJyZW50X3BpLT50eTEgPSBsX3R5MTsKKwlsX2N1cnJlbnRfcGktPmR4ID0gbF9keF9taW47CisJbF9jdXJyZW50X3BpLT5keSA9IGxfZHlfbWluOworCWxfY3VycmVudF9waS0+c3RlcF9wID0gbF9zdGVwX3A7CisJbF9jdXJyZW50X3BpLT5zdGVwX2MgPSBsX3N0ZXBfYzsKKwlsX2N1cnJlbnRfcGktPnN0ZXBfciA9IGxfc3RlcF9yOworCWxfY3VycmVudF9waS0+c3RlcF9sID0gbF9zdGVwX2w7CisKKwkvKiBhbGxvY2F0aW9uIGZvciBjb21wb25lbnRzIGFuZCBudW1iZXIgb2YgY29tcG9uZW50cyBoYXMgYWxyZWFkeSBiZWVuIGNhbGN1bGF0ZWQgYnkgb3BqX3BpX2NyZWF0ZSAqLworCWZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgbF9jdXJyZW50X3BpLT5udW1jb21wczsgKytjb21wbm8pIHsKKwkJb3BqX3BpX3Jlc29sdXRpb25fdCAqbF9yZXMgPSBsX2N1cnJlbnRfY29tcC0+cmVzb2x1dGlvbnM7CisJCWxfZW5jb2RpbmdfdmFsdWVfcHRyID0gbF90bXBfcHRyW2NvbXBub107CisKKwkJbF9jdXJyZW50X2NvbXAtPmR4ID0gbF9pbWdfY29tcC0+ZHg7CisJCWxfY3VycmVudF9jb21wLT5keSA9IGxfaW1nX2NvbXAtPmR5OworCisJCS8qIHJlc29sdXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkICovCisJCWZvciAocmVzbm8gPSAwOyByZXNubyA8IGxfY3VycmVudF9jb21wLT5udW1yZXNvbHV0aW9uczsgcmVzbm8rKykgeworCQkJbF9yZXMtPnBkeCA9ICoobF9lbmNvZGluZ192YWx1ZV9wdHIrKyk7CisJCQlsX3Jlcy0+cGR5ID0gKihsX2VuY29kaW5nX3ZhbHVlX3B0cisrKTsKKwkJCWxfcmVzLT5wdyA9ICAqKGxfZW5jb2RpbmdfdmFsdWVfcHRyKyspOworCQkJbF9yZXMtPnBoID0gICoobF9lbmNvZGluZ192YWx1ZV9wdHIrKyk7CisJCQkrK2xfcmVzOworCQl9CisKKwkJKytsX2N1cnJlbnRfY29tcDsKKwkJKytsX2ltZ19jb21wOworCQkrK2xfdGNjcDsKKwl9CisJKytsX2N1cnJlbnRfcGk7CisKKwlmb3IgKHBpbm8gPSAxIDsgcGlubzxsX2JvdW5kIDsgKytwaW5vICkgeworCQlsX2N1cnJlbnRfY29tcCA9IGxfY3VycmVudF9waS0+Y29tcHM7CisJCWxfaW1nX2NvbXAgPSBwX2ltYWdlLT5jb21wczsKKwkJbF90Y2NwID0gbF90Y3AtPnRjY3BzOworCisJCWxfY3VycmVudF9waS0+dHgwID0gbF90eDA7CisJCWxfY3VycmVudF9waS0+dHkwID0gbF90eTA7CisJCWxfY3VycmVudF9waS0+dHgxID0gbF90eDE7CisJCWxfY3VycmVudF9waS0+dHkxID0gbF90eTE7CisJCWxfY3VycmVudF9waS0+ZHggPSBsX2R4X21pbjsKKwkJbF9jdXJyZW50X3BpLT5keSA9IGxfZHlfbWluOworCQlsX2N1cnJlbnRfcGktPnN0ZXBfcCA9IGxfc3RlcF9wOworCQlsX2N1cnJlbnRfcGktPnN0ZXBfYyA9IGxfc3RlcF9jOworCQlsX2N1cnJlbnRfcGktPnN0ZXBfciA9IGxfc3RlcF9yOworCQlsX2N1cnJlbnRfcGktPnN0ZXBfbCA9IGxfc3RlcF9sOworCisJCS8qIGFsbG9jYXRpb24gZm9yIGNvbXBvbmVudHMgYW5kIG51bWJlciBvZiBjb21wb25lbnRzIGhhcyBhbHJlYWR5IGJlZW4gY2FsY3VsYXRlZCBieSBvcGpfcGlfY3JlYXRlICovCisJCWZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgbF9jdXJyZW50X3BpLT5udW1jb21wczsgKytjb21wbm8pIHsKKwkJCW9wal9waV9yZXNvbHV0aW9uX3QgKmxfcmVzID0gbF9jdXJyZW50X2NvbXAtPnJlc29sdXRpb25zOworCQkJbF9lbmNvZGluZ192YWx1ZV9wdHIgPSBsX3RtcF9wdHJbY29tcG5vXTsKKworCQkJbF9jdXJyZW50X2NvbXAtPmR4ID0gbF9pbWdfY29tcC0+ZHg7CisJCQlsX2N1cnJlbnRfY29tcC0+ZHkgPSBsX2ltZ19jb21wLT5keTsKKwkJCS8qIHJlc29sdXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkICovCisJCQlmb3IgKHJlc25vID0gMDsgcmVzbm8gPCBsX2N1cnJlbnRfY29tcC0+bnVtcmVzb2x1dGlvbnM7IHJlc25vKyspIHsKKwkJCQlsX3Jlcy0+cGR4ID0gKihsX2VuY29kaW5nX3ZhbHVlX3B0cisrKTsKKwkJCQlsX3Jlcy0+cGR5ID0gKihsX2VuY29kaW5nX3ZhbHVlX3B0cisrKTsKKwkJCQlsX3Jlcy0+cHcgPSAgKihsX2VuY29kaW5nX3ZhbHVlX3B0cisrKTsKKwkJCQlsX3Jlcy0+cGggPSAgKihsX2VuY29kaW5nX3ZhbHVlX3B0cisrKTsKKwkJCQkrK2xfcmVzOworCQkJfQorCQkJKytsX2N1cnJlbnRfY29tcDsKKwkJCSsrbF9pbWdfY29tcDsKKwkJCSsrbF90Y2NwOworCQl9CisKKwkJLyogc3BlY2lhbCB0cmVhdG1lbnQqLworCQlsX2N1cnJlbnRfcGktPmluY2x1ZGUgPSAobF9jdXJyZW50X3BpLTEpLT5pbmNsdWRlOworCQkrK2xfY3VycmVudF9waTsKKwl9CisKKwlvcGpfZnJlZShsX3RtcF9kYXRhKTsKKwlsX3RtcF9kYXRhID0gMDA7CisJb3BqX2ZyZWUobF90bXBfcHRyKTsKKwlsX3RtcF9wdHIgPSAwMDsKKworCWlmIChsX3RjcC0+UE9DICYmICggcF9jcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX2NpbmVtYSB8fCBwX3QyX21vZGUgPT0gRklOQUxfUEFTUykpIHsKKwkJb3BqX3BpX3VwZGF0ZV9lbmNvZGVfcG9jX2FuZF9maW5hbChwX2NwLHBfdGlsZV9ubyxsX3R4MCxsX3R4MSxsX3R5MCxsX3R5MSxsX21heF9wcmVjLGxfbWF4X3JlcyxsX2R4X21pbixsX2R5X21pbik7CisJfQorCWVsc2UgeworCQlvcGpfcGlfdXBkYXRlX2VuY29kZV9ub3RfcG9jKHBfY3AscF9pbWFnZS0+bnVtY29tcHMscF90aWxlX25vLGxfdHgwLGxfdHgxLGxfdHkwLGxfdHkxLGxfbWF4X3ByZWMsbF9tYXhfcmVzLGxfZHhfbWluLGxfZHlfbWluKTsKKwl9CisKKwlyZXR1cm4gbF9waTsKK30KKwordm9pZCBvcGpfcGlfY3JlYXRlX2VuY29kZSggCW9wal9waV9pdGVyYXRvcl90ICpwaSwKKwkJCQkJCQlvcGpfY3BfdCAqY3AsCisJCQkJCQkJT1BKX1VJTlQzMiB0aWxlbm8sCisJCQkJCQkJT1BKX1VJTlQzMiBwaW5vLAorCQkJCQkJCU9QSl9VSU5UMzIgdHBudW0sCisJCQkJCQkJT1BKX0lOVDMyIHRwcG9zLAorCQkJCQkJCUoyS19UMl9NT0RFIHQyX21vZGUpCit7CisJY29uc3QgT1BKX0NIQVIgKnByb2c7CisJT1BKX0lOVDMyIGk7CisJT1BKX1VJTlQzMiBpbmNyX3RvcD0xLHJlc2V0WD0wOworCW9wal90Y3BfdCAqdGNwcyA9JmNwLT50Y3BzW3RpbGVub107CisJb3BqX3BvY190ICp0Y3A9ICZ0Y3BzLT5wb2NzW3Bpbm9dOworCisJcHJvZyA9IG9wal9qMmtfY29udmVydF9wcm9ncmVzc2lvbl9vcmRlcih0Y3AtPnByZyk7CisKKwlwaVtwaW5vXS5maXJzdCA9IDE7CisJcGlbcGlub10ucG9jLnByZyA9IHRjcC0+cHJnOworCisJaWYoIShjcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX3RwX29uICYmICgoIWNwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fY2luZW1hICYmICh0Ml9tb2RlID09IEZJTkFMX1BBU1MpKSB8fCBjcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX2NpbmVtYSkpKXsKKwkJcGlbcGlub10ucG9jLnJlc25vMCA9IHRjcC0+cmVzUzsKKwkJcGlbcGlub10ucG9jLnJlc25vMSA9IHRjcC0+cmVzRTsKKwkJcGlbcGlub10ucG9jLmNvbXBubzAgPSB0Y3AtPmNvbXBTOworCQlwaVtwaW5vXS5wb2MuY29tcG5vMSA9IHRjcC0+Y29tcEU7CisJCXBpW3Bpbm9dLnBvYy5sYXlubzAgPSB0Y3AtPmxheVM7CisJCXBpW3Bpbm9dLnBvYy5sYXlubzEgPSB0Y3AtPmxheUU7CisJCXBpW3Bpbm9dLnBvYy5wcmVjbm8wID0gdGNwLT5wcmNTOworCQlwaVtwaW5vXS5wb2MucHJlY25vMSA9IHRjcC0+cHJjRTsKKwkJcGlbcGlub10ucG9jLnR4MCA9IChPUEpfSU5UMzIpdGNwLT50eFM7CisJCXBpW3Bpbm9dLnBvYy50eTAgPSAoT1BKX0lOVDMyKXRjcC0+dHlTOworCQlwaVtwaW5vXS5wb2MudHgxID0gKE9QSl9JTlQzMil0Y3AtPnR4RTsKKwkJcGlbcGlub10ucG9jLnR5MSA9IChPUEpfSU5UMzIpdGNwLT50eUU7CisJfWVsc2UgeworCQlmb3IoaT10cHBvcysxO2k8NDtpKyspeworCQkJc3dpdGNoKHByb2dbaV0peworCQkJY2FzZSAnUic6CisJCQkJcGlbcGlub10ucG9jLnJlc25vMCA9IHRjcC0+cmVzUzsKKwkJCQlwaVtwaW5vXS5wb2MucmVzbm8xID0gdGNwLT5yZXNFOworCQkJCWJyZWFrOworCQkJY2FzZSAnQyc6CisJCQkJcGlbcGlub10ucG9jLmNvbXBubzAgPSB0Y3AtPmNvbXBTOworCQkJCXBpW3Bpbm9dLnBvYy5jb21wbm8xID0gdGNwLT5jb21wRTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ0wnOgorCQkJCXBpW3Bpbm9dLnBvYy5sYXlubzAgPSB0Y3AtPmxheVM7CisJCQkJcGlbcGlub10ucG9jLmxheW5vMSA9IHRjcC0+bGF5RTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ1AnOgorCQkJCXN3aXRjaCh0Y3AtPnByZyl7CisJCQkJY2FzZSBPUEpfTFJDUDoKKwkJCQljYXNlIE9QSl9STENQOgorCQkJCQlwaVtwaW5vXS5wb2MucHJlY25vMCA9IHRjcC0+cHJjUzsKKwkJCQkJcGlbcGlub10ucG9jLnByZWNubzEgPSB0Y3AtPnByY0U7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCXBpW3Bpbm9dLnBvYy50eDAgPSAoT1BKX0lOVDMyKXRjcC0+dHhTOworCQkJCQlwaVtwaW5vXS5wb2MudHkwID0gKE9QSl9JTlQzMil0Y3AtPnR5UzsKKwkJCQkJcGlbcGlub10ucG9jLnR4MSA9IChPUEpfSU5UMzIpdGNwLT50eEU7CisJCQkJCXBpW3Bpbm9dLnBvYy50eTEgPSAoT1BKX0lOVDMyKXRjcC0+dHlFOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZih0cG51bT09MCl7CisJCQlmb3IoaT10cHBvcztpPj0wO2ktLSl7CisJCQkJc3dpdGNoKHByb2dbaV0peworCQkJCWNhc2UgJ0MnOgorCQkJCQl0Y3AtPmNvbXBfdCA9IHRjcC0+Y29tcFM7CisJCQkJCXBpW3Bpbm9dLnBvYy5jb21wbm8wID0gdGNwLT5jb21wX3Q7CisJCQkJCXBpW3Bpbm9dLnBvYy5jb21wbm8xID0gdGNwLT5jb21wX3QrMTsKKwkJCQkJdGNwLT5jb21wX3QrPTE7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ1InOgorCQkJCQl0Y3AtPnJlc190ID0gdGNwLT5yZXNTOworCQkJCQlwaVtwaW5vXS5wb2MucmVzbm8wID0gdGNwLT5yZXNfdDsKKwkJCQkJcGlbcGlub10ucG9jLnJlc25vMSA9IHRjcC0+cmVzX3QrMTsKKwkJCQkJdGNwLT5yZXNfdCs9MTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnTCc6CisJCQkJCXRjcC0+bGF5X3QgPSB0Y3AtPmxheVM7CisJCQkJCXBpW3Bpbm9dLnBvYy5sYXlubzAgPSB0Y3AtPmxheV90OworCQkJCQlwaVtwaW5vXS5wb2MubGF5bm8xID0gdGNwLT5sYXlfdCsxOworCQkJCQl0Y3AtPmxheV90Kz0xOworCQkJCQlicmVhazsKKwkJCQljYXNlICdQJzoKKwkJCQkJc3dpdGNoKHRjcC0+cHJnKXsKKwkJCQkJY2FzZSBPUEpfTFJDUDoKKwkJCQkJY2FzZSBPUEpfUkxDUDoKKwkJCQkJCXRjcC0+cHJjX3QgPSB0Y3AtPnByY1M7CisJCQkJCQlwaVtwaW5vXS5wb2MucHJlY25vMCA9IHRjcC0+cHJjX3Q7CisJCQkJCQlwaVtwaW5vXS5wb2MucHJlY25vMSA9IHRjcC0+cHJjX3QrMTsKKwkJCQkJCXRjcC0+cHJjX3QrPTE7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCXRjcC0+dHgwX3QgPSB0Y3AtPnR4UzsKKwkJCQkJCXRjcC0+dHkwX3QgPSB0Y3AtPnR5UzsKKwkJCQkJCXBpW3Bpbm9dLnBvYy50eDAgPSAoT1BKX0lOVDMyKXRjcC0+dHgwX3Q7CisJCQkJCQlwaVtwaW5vXS5wb2MudHgxID0gKE9QSl9JTlQzMikodGNwLT50eDBfdCArIHRjcC0+ZHggLSAodGNwLT50eDBfdCAlIHRjcC0+ZHgpKTsKKwkJCQkJCXBpW3Bpbm9dLnBvYy50eTAgPSAoT1BKX0lOVDMyKXRjcC0+dHkwX3Q7CisJCQkJCQlwaVtwaW5vXS5wb2MudHkxID0gKE9QSl9JTlQzMikodGNwLT50eTBfdCArIHRjcC0+ZHkgLSAodGNwLT50eTBfdCAlIHRjcC0+ZHkpKTsKKwkJCQkJCXRjcC0+dHgwX3QgPSAoT1BKX1VJTlQzMilwaVtwaW5vXS5wb2MudHgxOworCQkJCQkJdGNwLT50eTBfdCA9IChPUEpfVUlOVDMyKXBpW3Bpbm9dLnBvYy50eTE7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQlpbmNyX3RvcD0xOworCQl9ZWxzZXsKKwkJCWZvcihpPXRwcG9zO2k+PTA7aS0tKXsKKwkJCQlzd2l0Y2gocHJvZ1tpXSl7CisJCQkJY2FzZSAnQyc6CisJCQkJCXBpW3Bpbm9dLnBvYy5jb21wbm8wID0gdGNwLT5jb21wX3QtMTsKKwkJCQkJcGlbcGlub10ucG9jLmNvbXBubzEgPSB0Y3AtPmNvbXBfdDsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnUic6CisJCQkJCXBpW3Bpbm9dLnBvYy5yZXNubzAgPSB0Y3AtPnJlc190LTE7CisJCQkJCXBpW3Bpbm9dLnBvYy5yZXNubzEgPSB0Y3AtPnJlc190OworCQkJCQlicmVhazsKKwkJCQljYXNlICdMJzoKKwkJCQkJcGlbcGlub10ucG9jLmxheW5vMCA9IHRjcC0+bGF5X3QtMTsKKwkJCQkJcGlbcGlub10ucG9jLmxheW5vMSA9IHRjcC0+bGF5X3Q7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgJ1AnOgorCQkJCQlzd2l0Y2godGNwLT5wcmcpeworCQkJCQljYXNlIE9QSl9MUkNQOgorCQkJCQljYXNlIE9QSl9STENQOgorCQkJCQkJcGlbcGlub10ucG9jLnByZWNubzAgPSB0Y3AtPnByY190LTE7CisJCQkJCQlwaVtwaW5vXS5wb2MucHJlY25vMSA9IHRjcC0+cHJjX3Q7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCXBpW3Bpbm9dLnBvYy50eDAgPSAoT1BKX0lOVDMyKSh0Y3AtPnR4MF90IC0gdGNwLT5keCAtICh0Y3AtPnR4MF90ICUgdGNwLT5keCkpOworCQkJCQkJcGlbcGlub10ucG9jLnR4MSA9IChPUEpfSU5UMzIpdGNwLT50eDBfdCA7CisJCQkJCQlwaVtwaW5vXS5wb2MudHkwID0gKE9QSl9JTlQzMikodGNwLT50eTBfdCAtIHRjcC0+ZHkgLSAodGNwLT50eTBfdCAlIHRjcC0+ZHkpKTsKKwkJCQkJCXBpW3Bpbm9dLnBvYy50eTEgPSAoT1BKX0lOVDMyKXRjcC0+dHkwX3QgOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJCWlmKGluY3JfdG9wPT0xKXsKKwkJCQkJc3dpdGNoKHByb2dbaV0peworCQkJCQljYXNlICdSJzoKKwkJCQkJCWlmKHRjcC0+cmVzX3Q9PXRjcC0+cmVzRSl7CisJCQkJCQkJaWYob3BqX3BpX2NoZWNrX25leHRfbGV2ZWwoaS0xLGNwLHRpbGVubyxwaW5vLHByb2cpKXsKKwkJCQkJCQkJdGNwLT5yZXNfdCA9IHRjcC0+cmVzUzsKKwkJCQkJCQkJcGlbcGlub10ucG9jLnJlc25vMCA9IHRjcC0+cmVzX3Q7CisJCQkJCQkJCXBpW3Bpbm9dLnBvYy5yZXNubzEgPSB0Y3AtPnJlc190KzE7CisJCQkJCQkJCXRjcC0+cmVzX3QrPTE7CisJCQkJCQkJCWluY3JfdG9wPTE7CisJCQkJCQkJfWVsc2V7CisJCQkJCQkJCWluY3JfdG9wPTA7CisJCQkJCQkJfQorCQkJCQkJfWVsc2V7CisJCQkJCQkJcGlbcGlub10ucG9jLnJlc25vMCA9IHRjcC0+cmVzX3Q7CisJCQkJCQkJcGlbcGlub10ucG9jLnJlc25vMSA9IHRjcC0+cmVzX3QrMTsKKwkJCQkJCQl0Y3AtPnJlc190Kz0xOworCQkJCQkJCWluY3JfdG9wPTA7CisJCQkJCQl9CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSAnQyc6CisJCQkJCQlpZih0Y3AtPmNvbXBfdCA9PXRjcC0+Y29tcEUpeworCQkJCQkJCWlmKG9wal9waV9jaGVja19uZXh0X2xldmVsKGktMSxjcCx0aWxlbm8scGlubyxwcm9nKSl7CisJCQkJCQkJCXRjcC0+Y29tcF90ID0gdGNwLT5jb21wUzsKKwkJCQkJCQkJcGlbcGlub10ucG9jLmNvbXBubzAgPSB0Y3AtPmNvbXBfdDsKKwkJCQkJCQkJcGlbcGlub10ucG9jLmNvbXBubzEgPSB0Y3AtPmNvbXBfdCsxOworCQkJCQkJCQl0Y3AtPmNvbXBfdCs9MTsKKwkJCQkJCQkJaW5jcl90b3A9MTsKKwkJCQkJCQl9ZWxzZXsKKwkJCQkJCQkJaW5jcl90b3A9MDsKKwkJCQkJCQl9CisJCQkJCQl9ZWxzZXsKKwkJCQkJCQlwaVtwaW5vXS5wb2MuY29tcG5vMCA9IHRjcC0+Y29tcF90OworCQkJCQkJCXBpW3Bpbm9dLnBvYy5jb21wbm8xID0gdGNwLT5jb21wX3QrMTsKKwkJCQkJCQl0Y3AtPmNvbXBfdCs9MTsKKwkJCQkJCQlpbmNyX3RvcD0wOworCQkJCQkJfQorCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgJ0wnOgorCQkJCQkJaWYodGNwLT5sYXlfdCA9PSB0Y3AtPmxheUUpeworCQkJCQkJCWlmKG9wal9waV9jaGVja19uZXh0X2xldmVsKGktMSxjcCx0aWxlbm8scGlubyxwcm9nKSl7CisJCQkJCQkJCXRjcC0+bGF5X3QgPSB0Y3AtPmxheVM7CisJCQkJCQkJCXBpW3Bpbm9dLnBvYy5sYXlubzAgPSB0Y3AtPmxheV90OworCQkJCQkJCQlwaVtwaW5vXS5wb2MubGF5bm8xID0gdGNwLT5sYXlfdCsxOworCQkJCQkJCQl0Y3AtPmxheV90Kz0xOworCQkJCQkJCQlpbmNyX3RvcD0xOworCQkJCQkJCX1lbHNleworCQkJCQkJCQlpbmNyX3RvcD0wOworCQkJCQkJCX0KKwkJCQkJCX1lbHNleworCQkJCQkJCXBpW3Bpbm9dLnBvYy5sYXlubzAgPSB0Y3AtPmxheV90OworCQkJCQkJCXBpW3Bpbm9dLnBvYy5sYXlubzEgPSB0Y3AtPmxheV90KzE7CisJCQkJCQkJdGNwLT5sYXlfdCs9MTsKKwkJCQkJCQlpbmNyX3RvcD0wOworCQkJCQkJfQorCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgJ1AnOgorCQkJCQkJc3dpdGNoKHRjcC0+cHJnKXsKKwkJCQkJCWNhc2UgT1BKX0xSQ1A6CisJCQkJCQljYXNlIE9QSl9STENQOgorCQkJCQkJCWlmKHRjcC0+cHJjX3QgPT0gdGNwLT5wcmNFKXsKKwkJCQkJCQkJaWYob3BqX3BpX2NoZWNrX25leHRfbGV2ZWwoaS0xLGNwLHRpbGVubyxwaW5vLHByb2cpKXsKKwkJCQkJCQkJCXRjcC0+cHJjX3QgPSB0Y3AtPnByY1M7CisJCQkJCQkJCQlwaVtwaW5vXS5wb2MucHJlY25vMCA9IHRjcC0+cHJjX3Q7CisJCQkJCQkJCQlwaVtwaW5vXS5wb2MucHJlY25vMSA9IHRjcC0+cHJjX3QrMTsKKwkJCQkJCQkJCXRjcC0+cHJjX3QrPTE7CisJCQkJCQkJCQlpbmNyX3RvcD0xOworCQkJCQkJCQl9ZWxzZXsKKwkJCQkJCQkJCWluY3JfdG9wPTA7CisJCQkJCQkJCX0KKwkJCQkJCQl9ZWxzZXsKKwkJCQkJCQkJcGlbcGlub10ucG9jLnByZWNubzAgPSB0Y3AtPnByY190OworCQkJCQkJCQlwaVtwaW5vXS5wb2MucHJlY25vMSA9IHRjcC0+cHJjX3QrMTsKKwkJCQkJCQkJdGNwLT5wcmNfdCs9MTsKKwkJCQkJCQkJaW5jcl90b3A9MDsKKwkJCQkJCQl9CisJCQkJCQkJYnJlYWs7CisJCQkJCQlkZWZhdWx0OgorCQkJCQkJCWlmKHRjcC0+dHgwX3QgPj0gdGNwLT50eEUpeworCQkJCQkJCQlpZih0Y3AtPnR5MF90ID49IHRjcC0+dHlFKXsKKwkJCQkJCQkJCWlmKG9wal9waV9jaGVja19uZXh0X2xldmVsKGktMSxjcCx0aWxlbm8scGlubyxwcm9nKSl7CisJCQkJCQkJCQkJdGNwLT50eTBfdCA9IHRjcC0+dHlTOworCQkJCQkJCQkJCXBpW3Bpbm9dLnBvYy50eTAgPSAoT1BKX0lOVDMyKXRjcC0+dHkwX3Q7CisJCQkJCQkJCQkJcGlbcGlub10ucG9jLnR5MSA9IChPUEpfSU5UMzIpKHRjcC0+dHkwX3QgKyB0Y3AtPmR5IC0gKHRjcC0+dHkwX3QgJSB0Y3AtPmR5KSk7CisJCQkJCQkJCQkJdGNwLT50eTBfdCA9IChPUEpfVUlOVDMyKXBpW3Bpbm9dLnBvYy50eTE7CisJCQkJCQkJCQkJaW5jcl90b3A9MTtyZXNldFg9MTsKKwkJCQkJCQkJCX1lbHNleworCQkJCQkJCQkJCWluY3JfdG9wPTA7cmVzZXRYPTA7CisJCQkJCQkJCQl9CisJCQkJCQkJCX1lbHNleworCQkJCQkJCQkJcGlbcGlub10ucG9jLnR5MCA9IChPUEpfSU5UMzIpdGNwLT50eTBfdDsKKwkJCQkJCQkJCXBpW3Bpbm9dLnBvYy50eTEgPSAoT1BKX0lOVDMyKSh0Y3AtPnR5MF90ICsgdGNwLT5keSAtICh0Y3AtPnR5MF90ICUgdGNwLT5keSkpOworCQkJCQkJCQkJdGNwLT50eTBfdCA9IChPUEpfVUlOVDMyKXBpW3Bpbm9dLnBvYy50eTE7CisJCQkJCQkJCQlpbmNyX3RvcD0wO3Jlc2V0WD0xOworCQkJCQkJCQl9CisJCQkJCQkJCWlmKHJlc2V0WD09MSl7CisJCQkJCQkJCQl0Y3AtPnR4MF90ID0gdGNwLT50eFM7CisJCQkJCQkJCQlwaVtwaW5vXS5wb2MudHgwID0gKE9QSl9JTlQzMil0Y3AtPnR4MF90OworCQkJCQkJCQkJcGlbcGlub10ucG9jLnR4MSA9IChPUEpfSU5UMzIpKHRjcC0+dHgwX3QgKyB0Y3AtPmR4LSAodGNwLT50eDBfdCAlIHRjcC0+ZHgpKTsKKwkJCQkJCQkJCXRjcC0+dHgwX3QgPSAoT1BKX1VJTlQzMilwaVtwaW5vXS5wb2MudHgxOworCQkJCQkJCQl9CisJCQkJCQkJfWVsc2V7CisJCQkJCQkJCXBpW3Bpbm9dLnBvYy50eDAgPSAoT1BKX0lOVDMyKXRjcC0+dHgwX3Q7CisJCQkJCQkJCXBpW3Bpbm9dLnBvYy50eDEgPSAoT1BKX0lOVDMyKSh0Y3AtPnR4MF90ICsgdGNwLT5keC0gKHRjcC0+dHgwX3QgJSB0Y3AtPmR4KSk7CisJCQkJCQkJCXRjcC0+dHgwX3QgPSAoT1BKX1VJTlQzMilwaVtwaW5vXS5wb2MudHgxOworCQkJCQkJCQlpbmNyX3RvcD0wOworCQkJCQkJCX0KKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCit2b2lkIG9wal9waV9kZXN0cm95KG9wal9waV9pdGVyYXRvcl90ICpwX3BpLAorICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbmJfZWxlbWVudHMpCit7CisJT1BKX1VJTlQzMiBjb21wbm8sIHBpbm87CisJb3BqX3BpX2l0ZXJhdG9yX3QgKmxfY3VycmVudF9waSA9IHBfcGk7CisgICAgaWYgKHBfcGkpIHsKKwkJaWYgKHBfcGktPmluY2x1ZGUpIHsKKwkJCW9wal9mcmVlKHBfcGktPmluY2x1ZGUpOworCQkJcF9waS0+aW5jbHVkZSA9IDAwOworCQl9CisJCWZvciAocGlubyA9IDA7IHBpbm8gPCBwX25iX2VsZW1lbnRzOyArK3Bpbm8peworCQkJaWYobF9jdXJyZW50X3BpLT5jb21wcykgeworCQkJCW9wal9waV9jb21wX3QgKmxfY3VycmVudF9jb21wb25lbnQgPSBsX2N1cnJlbnRfcGktPmNvbXBzOworICAgICAgICAgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgbF9jdXJyZW50X3BpLT5udW1jb21wczsgY29tcG5vKyspeworICAgICAgICAgICAgICAgICAgICBpZihsX2N1cnJlbnRfY29tcG9uZW50LT5yZXNvbHV0aW9ucykgeworCQkJCQkJb3BqX2ZyZWUobF9jdXJyZW50X2NvbXBvbmVudC0+cmVzb2x1dGlvbnMpOworCQkJCQkJbF9jdXJyZW50X2NvbXBvbmVudC0+cmVzb2x1dGlvbnMgPSAwMDsKKwkJCQkJfQorCisJCQkJCSsrbF9jdXJyZW50X2NvbXBvbmVudDsKKwkJCQl9CisJCQkJb3BqX2ZyZWUobF9jdXJyZW50X3BpLT5jb21wcyk7CisJCQkJbF9jdXJyZW50X3BpLT5jb21wcyA9IDA7CisJCQl9CisJCQkrK2xfY3VycmVudF9waTsKKwkJfQorCQlvcGpfZnJlZShwX3BpKTsKKwl9Cit9CisKKworCit2b2lkIG9wal9waV91cGRhdGVfZW5jb2RpbmdfcGFyYW1ldGVycygJY29uc3Qgb3BqX2ltYWdlX3QgKnBfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NwX3QgKnBfY3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVfbm8gKQoreworCS8qIGVuY29kaW5nIHBhcmFtZXRlcnMgdG8gc2V0ICovCisJT1BKX1VJTlQzMiBsX21heF9yZXM7CisJT1BKX1VJTlQzMiBsX21heF9wcmVjOworCU9QSl9JTlQzMiBsX3R4MCxsX3R4MSxsX3R5MCxsX3R5MTsKKwlPUEpfVUlOVDMyIGxfZHhfbWluLGxfZHlfbWluOworCisJLyogcG9pbnRlcnMgKi8KKwlvcGpfdGNwX3QgKmxfdGNwID0gMDA7CisKKwkvKiBwcmVjb25kaXRpb25zICovCisJYXNzZXJ0KHBfY3AgIT0gMDApOworCWFzc2VydChwX2ltYWdlICE9IDAwKTsKKwlhc3NlcnQocF90aWxlX25vIDwgcF9jcC0+dHcgKiBwX2NwLT50aCk7CisKKwlsX3RjcCA9ICYocF9jcC0+dGNwc1twX3RpbGVfbm9dKTsKKworCS8qIGdldCBlbmNvZGluZyBwYXJhbWV0ZXJzICovCisJb3BqX2dldF9lbmNvZGluZ19wYXJhbWV0ZXJzKHBfaW1hZ2UscF9jcCxwX3RpbGVfbm8sJmxfdHgwLCZsX3R4MSwmbF90eTAsJmxfdHkxLCZsX2R4X21pbiwmbF9keV9taW4sJmxfbWF4X3ByZWMsJmxfbWF4X3Jlcyk7CisKKwlpZiAobF90Y3AtPlBPQykgeworCQlvcGpfcGlfdXBkYXRlX2VuY29kZV9wb2NfYW5kX2ZpbmFsKHBfY3AscF90aWxlX25vLGxfdHgwLGxfdHgxLGxfdHkwLGxfdHkxLGxfbWF4X3ByZWMsbF9tYXhfcmVzLGxfZHhfbWluLGxfZHlfbWluKTsKKwl9CisJZWxzZSB7CisJCW9wal9waV91cGRhdGVfZW5jb2RlX25vdF9wb2MocF9jcCxwX2ltYWdlLT5udW1jb21wcyxwX3RpbGVfbm8sbF90eDAsbF90eDEsbF90eTAsbF90eTEsbF9tYXhfcHJlYyxsX21heF9yZXMsbF9keF9taW4sbF9keV9taW4pOworCX0KK30KKworT1BKX0JPT0wgb3BqX3BpX25leHQob3BqX3BpX2l0ZXJhdG9yX3QgKiBwaSkgeworCXN3aXRjaCAocGktPnBvYy5wcmcpIHsKKwkJY2FzZSBPUEpfTFJDUDoKKwkJCXJldHVybiBvcGpfcGlfbmV4dF9scmNwKHBpKTsKKwkJY2FzZSBPUEpfUkxDUDoKKwkJCXJldHVybiBvcGpfcGlfbmV4dF9ybGNwKHBpKTsKKwkJY2FzZSBPUEpfUlBDTDoKKwkJCXJldHVybiBvcGpfcGlfbmV4dF9ycGNsKHBpKTsKKwkJY2FzZSBPUEpfUENSTDoKKwkJCXJldHVybiBvcGpfcGlfbmV4dF9wY3JsKHBpKTsKKwkJY2FzZSBPUEpfQ1BSTDoKKwkJCXJldHVybiBvcGpfcGlfbmV4dF9jcHJsKHBpKTsKKwkJY2FzZSBPUEpfUFJPR19VTktOT1dOOgorCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisJCisJcmV0dXJuIE9QSl9GQUxTRTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9waS5oIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3BpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIzOTY3OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9waS5oCkBAIC0wLDAgKzEsMTg4IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgX19QSV9ICisjZGVmaW5lIF9fUElfSAorLyoqCitAZmlsZSBwaS5oCitAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgYSBwYWNrZXQgaXRlcmF0b3IgKFBJKQorCitUaGUgZnVuY3Rpb25zIGluIFBJLkMgaGF2ZSBmb3IgZ29hbCB0byByZWFsaXplIGEgcGFja2V0IGl0ZXJhdG9yIHRoYXQgcGVybWl0cyB0byBnZXQgdGhlIG5leHQKK3BhY2tldCBmb2xsb3dpbmcgdGhlIHByb2dyZXNzaW9uIG9yZGVyIGFuZCBjaGFuZ2Ugb2YgaXQuIFRoZSBmdW5jdGlvbnMgaW4gUEkuQyBhcmUgdXNlZAorYnkgc29tZSBmdW5jdGlvbiBpbiBUMi5DLgorKi8KKworLyoqIEBkZWZncm91cCBQSSBQSSAtIEltcGxlbWVudGF0aW9uIG9mIGEgcGFja2V0IGl0ZXJhdG9yICovCisvKkB7Ki8KKworLyoqCitGSVhNRSBET0MKKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfcGlfcmVzb2x1dGlvbiB7CisgIE9QSl9VSU5UMzIgcGR4LCBwZHk7CisgIE9QSl9VSU5UMzIgcHcsIHBoOworfSBvcGpfcGlfcmVzb2x1dGlvbl90OworCisvKioKK0ZJWE1FIERPQworKi8KK3R5cGVkZWYgc3RydWN0IG9wal9waV9jb21wIHsKKyAgT1BKX1VJTlQzMiBkeCwgZHk7CisgIC8qKiBudW1iZXIgb2YgcmVzb2x1dGlvbiBsZXZlbHMgKi8KKyAgT1BKX1VJTlQzMiBudW1yZXNvbHV0aW9uczsKKyAgb3BqX3BpX3Jlc29sdXRpb25fdCAqcmVzb2x1dGlvbnM7Cit9IG9wal9waV9jb21wX3Q7CisKKy8qKgorUGFja2V0IGl0ZXJhdG9yCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX3BpX2l0ZXJhdG9yIHsKKyAgLyoqIEVuYWJsaW5nIFRpbGUgcGFydCBnZW5lcmF0aW9uKi8KKyAgT1BKX0JZVEUgdHBfb247CisgIC8qKiBwcmVjaXNlIGlmIHRoZSBwYWNrZXQgaGFzIGJlZW4gYWxyZWFkeSB1c2VkICh1c2VmdWxsIGZvciBwcm9ncmVzc2lvbiBvcmRlciBjaGFuZ2UpICovCisgIE9QSl9JTlQxNiAqaW5jbHVkZTsKKyAgLyoqIGxheWVyIHN0ZXAgdXNlZCB0byBsb2NhbGl6ZSB0aGUgcGFja2V0IGluIHRoZSBpbmNsdWRlIHZlY3RvciAqLworICBPUEpfVUlOVDMyIHN0ZXBfbDsKKyAgLyoqIHJlc29sdXRpb24gc3RlcCB1c2VkIHRvIGxvY2FsaXplIHRoZSBwYWNrZXQgaW4gdGhlIGluY2x1ZGUgdmVjdG9yICovCisgIE9QSl9VSU5UMzIgc3RlcF9yOworICAvKiogY29tcG9uZW50IHN0ZXAgdXNlZCB0byBsb2NhbGl6ZSB0aGUgcGFja2V0IGluIHRoZSBpbmNsdWRlIHZlY3RvciAqLworICBPUEpfVUlOVDMyIHN0ZXBfYzsKKyAgLyoqIHByZWNpbmN0IHN0ZXAgdXNlZCB0byBsb2NhbGl6ZSB0aGUgcGFja2V0IGluIHRoZSBpbmNsdWRlIHZlY3RvciAqLworICBPUEpfVUlOVDMyIHN0ZXBfcDsKKyAgLyoqIGNvbXBvbmVudCB0aGF0IGlkZW50aWZ5IHRoZSBwYWNrZXQgKi8KKyAgT1BKX1VJTlQzMiBjb21wbm87CisgIC8qKiByZXNvbHV0aW9uIHRoYXQgaWRlbnRpZnkgdGhlIHBhY2tldCAqLworICBPUEpfVUlOVDMyIHJlc25vOworICAvKiogcHJlY2luY3QgdGhhdCBpZGVudGlmeSB0aGUgcGFja2V0ICovCisgIE9QSl9VSU5UMzIgcHJlY25vOworICAvKiogbGF5ZXIgdGhhdCBpZGVudGlmeSB0aGUgcGFja2V0ICovCisgIE9QSl9VSU5UMzIgbGF5bm87CisgIC8qKiAwIGlmIHRoZSBmaXJzdCBwYWNrZXQgKi8KKyAgT1BKX0JPT0wgZmlyc3Q7CisgIC8qKiBwcm9ncmVzc2lvbiBvcmRlciBjaGFuZ2UgaW5mb3JtYXRpb24gKi8KKyAgb3BqX3BvY190IHBvYzsKKyAgLyoqIG51bWJlciBvZiBjb21wb25lbnRzIGluIHRoZSBpbWFnZSAqLworICBPUEpfVUlOVDMyIG51bWNvbXBzOworICAvKiogQ29tcG9uZW50cyovCisgIG9wal9waV9jb21wX3QgKmNvbXBzOworICAvKiogRklYTUUgRE9DKi8KKyAgT1BKX0lOVDMyIHR4MCwgdHkwLCB0eDEsIHR5MTsKKyAgLyoqIEZJWE1FIERPQyovCisgIE9QSl9JTlQzMiB4LCB5OworICAvKiogRklYTUUgRE9DKi8KKyAgT1BKX1VJTlQzMiBkeCwgZHk7Cit9IG9wal9waV9pdGVyYXRvcl90OworCisvKiogQG5hbWUgRXhwb3J0ZWQgZnVuY3Rpb25zICovCisvKkB7Ki8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKioKKyAqIENyZWF0ZXMgYSBwYWNrZXQgaXRlcmF0b3IgZm9yIGVuY29kaW5nLgorICoKKyAqIEBwYXJhbQlpbWFnZQkJdGhlIGltYWdlIGJlaW5nIGVuY29kZWQuCisgKiBAcGFyYW0JY3AJCXRoZSBjb2RpbmcgcGFyYW1ldGVycy4KKyAqIEBwYXJhbQl0aWxlbm8JaW5kZXggb2YgdGhlIHRpbGUgYmVpbmcgZW5jb2RlZC4KKyAqIEBwYXJhbQl0Ml9tb2RlCXRoZSB0eXBlIG9mIHBhc3MgZm9yIGdlbmVyYXRpbmcgdGhlIHBhY2tldCBpdGVyYXRvcgorICoKKyAqIEByZXR1cm4JYSBsaXN0IG9mIHBhY2tldCBpdGVyYXRvciB0aGF0IHBvaW50cyB0byB0aGUgZmlyc3QgcGFja2V0IG9mIHRoZSB0aWxlIChub3QgdHJ1ZSkuCisqLworb3BqX3BpX2l0ZXJhdG9yX3QgKm9wal9waV9pbml0aWFsaXNlX2VuY29kZShjb25zdCBvcGpfaW1hZ2VfdCAqaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jcF90ICpjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiB0aWxlbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEoyS19UMl9NT0RFIHQyX21vZGUpOworCisvKioKKyAqIFVwZGF0ZXMgdGhlIGVuY29kaW5nIHBhcmFtZXRlcnMgb2YgdGhlIGNvZGVjLgorICoKKyAqIEBwYXJhbQlwX2ltYWdlCQl0aGUgaW1hZ2UgYmVpbmcgZW5jb2RlZC4KKyAqIEBwYXJhbQlwX2NwCQl0aGUgY29kaW5nIHBhcmFtZXRlcnMuCisgKiBAcGFyYW0JcF90aWxlX25vCWluZGV4IG9mIHRoZSB0aWxlIGJlaW5nIGVuY29kZWQuCisqLwordm9pZCBvcGpfcGlfdXBkYXRlX2VuY29kaW5nX3BhcmFtZXRlcnMoCWNvbnN0IG9wal9pbWFnZV90ICpwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jcF90ICpwX2NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90aWxlX25vICk7CisKKy8qKgorTW9kaWZ5IHRoZSBwYWNrZXQgaXRlcmF0b3IgZm9yIGVuYWJsaW5nIHRpbGUgcGFydCBnZW5lcmF0aW9uCitAcGFyYW0gcGkgSGFuZGxlIHRvIHRoZSBwYWNrZXQgaXRlcmF0b3IgZ2VuZXJhdGVkIGluIHBpX2luaXRpYWxpc2VfZW5jb2RlCitAcGFyYW0gY3AgQ29kaW5nIHBhcmFtZXRlcnMKK0BwYXJhbSB0aWxlbm8gTnVtYmVyIHRoYXQgaWRlbnRpZmllcyB0aGUgdGlsZSBmb3Igd2hpY2ggdG8gbGlzdCB0aGUgcGFja2V0cworQHBhcmFtIHBpbm8gICBGSVhNRSBET0MKK0BwYXJhbSB0cG51bSBUaWxlIHBhcnQgbnVtYmVyIG9mIHRoZSBjdXJyZW50IHRpbGUKK0BwYXJhbSB0cHBvcyBUaGUgcG9zaXRpb24gb2YgdGhlIHRpbGUgcGFydCBmbGFnIGluIHRoZSBwcm9ncmVzc2lvbiBvcmRlcgorQHBhcmFtIHQyX21vZGUgRklYTUUgRE9DCisqLwordm9pZCBvcGpfcGlfY3JlYXRlX2VuY29kZSggIG9wal9waV9pdGVyYXRvcl90ICpwaSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NwX3QgKmNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgdGlsZW5vLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBpbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiB0cG51bSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHRwcG9zLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBKMktfVDJfTU9ERSB0Ml9tb2RlKTsKKworLyoqCitDcmVhdGUgYSBwYWNrZXQgaXRlcmF0b3IgZm9yIERlY29kZXIKK0BwYXJhbSBpbWFnZSBSYXcgaW1hZ2UgZm9yIHdoaWNoIHRoZSBwYWNrZXRzIHdpbGwgYmUgbGlzdGVkCitAcGFyYW0gY3AgQ29kaW5nIHBhcmFtZXRlcnMKK0BwYXJhbSB0aWxlbm8gTnVtYmVyIHRoYXQgaWRlbnRpZmllcyB0aGUgdGlsZSBmb3Igd2hpY2ggdG8gbGlzdCB0aGUgcGFja2V0cworQHJldHVybiBSZXR1cm5zIGEgcGFja2V0IGl0ZXJhdG9yIHRoYXQgcG9pbnRzIHRvIHRoZSBmaXJzdCBwYWNrZXQgb2YgdGhlIHRpbGUKK0BzZWUgb3BqX3BpX2Rlc3Ryb3kKKyovCitvcGpfcGlfaXRlcmF0b3JfdCAqb3BqX3BpX2NyZWF0ZV9kZWNvZGUob3BqX2ltYWdlX3QgKiBpbWFnZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NwX3QgKiBjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRpbGVubyk7CisvKioKKyAqIERlc3Ryb3lzIGEgcGFja2V0IGl0ZXJhdG9yIGFycmF5LgorICoKKyAqIEBwYXJhbQlwX3BpCQkJdGhlIHBhY2tldCBpdGVyYXRvciBhcnJheSB0byBkZXN0cm95LgorICogQHBhcmFtCXBfbmJfZWxlbWVudHMJdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYXJyYXkuCisgKi8KK3ZvaWQgb3BqX3BpX2Rlc3Ryb3kob3BqX3BpX2l0ZXJhdG9yX3QgKnBfcGksCisgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9uYl9lbGVtZW50cyk7CisKKy8qKgorTW9kaWZ5IHRoZSBwYWNrZXQgaXRlcmF0b3IgdG8gcG9pbnQgdG8gdGhlIG5leHQgcGFja2V0CitAcGFyYW0gcGkgUGFja2V0IGl0ZXJhdG9yIHRvIG1vZGlmeQorQHJldHVybiBSZXR1cm5zIGZhbHNlIGlmIHBpIHBvaW50ZWQgdG8gdGhlIGxhc3QgcGFja2V0IG9yIGVsc2UgcmV0dXJucyB0cnVlCisqLworT1BKX0JPT0wgb3BqX3BpX25leHQob3BqX3BpX2l0ZXJhdG9yX3QgKiBwaSk7CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypAfSovCisKKy8qQH0qLworCisjZW5kaWYgLyogX19QSV9IICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvcmF3LmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvcmF3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ5ODc2MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC9yYXcuYwpAQCAtMCwwICsxLDk1IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJvcGpfaW5jbHVkZXMuaCIKKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBsb2NhbCBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBSQVcgZW5jb2RpbmcgaW50ZXJmYWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworCitvcGpfcmF3X3QqIG9wal9yYXdfY3JlYXRlKHZvaWQpIHsKKwlvcGpfcmF3X3QgKnJhdyA9IChvcGpfcmF3X3QqKW9wal9tYWxsb2Moc2l6ZW9mKG9wal9yYXdfdCkpOworCXJldHVybiByYXc7Cit9CisKK3ZvaWQgb3BqX3Jhd19kZXN0cm95KG9wal9yYXdfdCAqcmF3KSB7CisJaWYocmF3KSB7CisJCW9wal9mcmVlKHJhdyk7CisJfQorfQorCitPUEpfVUlOVDMyIG9wal9yYXdfbnVtYnl0ZXMob3BqX3Jhd190ICpyYXcpIHsKKwljb25zdCBwdHJkaWZmX3QgZGlmZiA9IHJhdy0+YnAgLSByYXctPnN0YXJ0OworICBhc3NlcnQoIGRpZmYgPD0gKHB0cmRpZmZfdCkweGZmZmZmZmZmICYmIGRpZmYgPj0gMCApOyAvKiBVSU5UMzJfTUFYICovCisJcmV0dXJuIChPUEpfVUlOVDMyKWRpZmY7Cit9CisKK3ZvaWQgb3BqX3Jhd19pbml0X2RlYyhvcGpfcmF3X3QgKnJhdywgT1BKX0JZVEUgKmJwLCBPUEpfVUlOVDMyIGxlbikgeworCXJhdy0+c3RhcnQgPSBicDsKKwlyYXctPmxlbm1heCA9IGxlbjsKKwlyYXctPmxlbiA9IDA7CisJcmF3LT5jID0gMDsKKwlyYXctPmN0ID0gMDsKK30KKworT1BKX1VJTlQzMiBvcGpfcmF3X2RlY29kZShvcGpfcmF3X3QgKnJhdykgeworCU9QSl9VSU5UMzIgZDsKKwlpZiAocmF3LT5jdCA9PSAwKSB7CisJCXJhdy0+Y3QgPSA4OworCQlpZiAocmF3LT5sZW4gPT0gcmF3LT5sZW5tYXgpIHsKKwkJCXJhdy0+YyA9IDB4ZmY7CisJCX0gZWxzZSB7CisJCQlpZiAocmF3LT5jID09IDB4ZmYpIHsKKwkJCQlyYXctPmN0ID0gNzsKKwkJCX0KKwkJCXJhdy0+YyA9ICoocmF3LT5zdGFydCArIHJhdy0+bGVuKTsKKwkJCXJhdy0+bGVuKys7CisJCX0KKwl9CisJcmF3LT5jdC0tOworCWQgPSAocmF3LT5jID4+IHJhdy0+Y3QpICYgMHgwMTsKKwkKKwlyZXR1cm4gZDsKK30KKwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3Jhdy5oIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3Jhdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MmM2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvcmF3LmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgVW5pdmVyc2l0ZSBjYXRob2xpcXVlIGRlIExvdXZhaW4gKFVDTCksIEJlbGdpdW0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBQcm9mZXNzb3IgQmVub2l0IE1hY3EKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA3LCBGcmFuY29pcy1PbGl2aWVyIERldmF1eCAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDE0LCBBbnRvbmluIERlc2NhbXBlCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfX1JBV19ICisjZGVmaW5lIF9fUkFXX0gKKy8qKgorQGZpbGUgcmF3LmgKK0BicmllZiBJbXBsZW1lbnRhdGlvbiBvZiBvcGVyYXRpb25zIGZvciByYXcgZW5jb2RpbmcgKFJBVykKKworVGhlIGZ1bmN0aW9ucyBpbiBSQVcuQyBoYXZlIGZvciBnb2FsIHRvIHJlYWxpemUgdGhlIG9wZXJhdGlvbiBvZiByYXcgZW5jb2RpbmcgbGlua2VkCit3aXRoIHRoZSBjb3JyZXNwb25kaW5nIG1vZGUgc3dpdGNoLgorKi8KKworLyoqIEBkZWZncm91cCBSQVcgUkFXIC0gSW1wbGVtZW50YXRpb24gb2Ygb3BlcmF0aW9ucyBmb3IgcmF3IGVuY29kaW5nICovCisvKkB7Ki8KKworLyoqCitSQVcgZW5jb2Rpbmcgb3BlcmF0aW9ucworKi8KK3R5cGVkZWYgc3RydWN0IG9wal9yYXcgeworCS8qKiB0ZW1wb3JhcnkgYnVmZmVyIHdoZXJlIGJpdHMgYXJlIGNvZGVkIG9yIGRlY29kZWQgKi8KKwlPUEpfQllURSBjOworCS8qKiBudW1iZXIgb2YgYml0cyBhbHJlYWR5IHJlYWQgb3IgZnJlZSB0byB3cml0ZSAqLworCU9QSl9VSU5UMzIgY3Q7CisJLyoqIG1heGltdW0gbGVuZ3RoIHRvIGRlY29kZSAqLworCU9QSl9VSU5UMzIgbGVubWF4OworCS8qKiBsZW5ndGggZGVjb2RlZCAqLworCU9QSl9VSU5UMzIgbGVuOworCS8qKiBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBidWZmZXIgKi8KKwlPUEpfQllURSAqYnA7CisJLyoqIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgKi8KKwlPUEpfQllURSAqc3RhcnQ7CisJLyoqIHBvaW50ZXIgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyICovCisJT1BKX0JZVEUgKmVuZDsKK30gb3BqX3Jhd190OworCisvKiogQG5hbWUgRXhwb3J0ZWQgZnVuY3Rpb25zICovCisvKkB7Ki8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKioKK0NyZWF0ZSBhIG5ldyBSQVcgaGFuZGxlIAorQHJldHVybiBSZXR1cm5zIGEgbmV3IFJBVyBoYW5kbGUgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBOVUxMIG90aGVyd2lzZQorKi8KK29wal9yYXdfdCogb3BqX3Jhd19jcmVhdGUodm9pZCk7CisvKioKK0Rlc3Ryb3kgYSBwcmV2aW91c2x5IGNyZWF0ZWQgUkFXIGhhbmRsZQorQHBhcmFtIHJhdyBSQVcgaGFuZGxlIHRvIGRlc3Ryb3kKKyovCit2b2lkIG9wal9yYXdfZGVzdHJveShvcGpfcmF3X3QgKnJhdyk7CisvKioKK1JldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4vcmVhZCBzaW5jZSBpbml0aWFsaXNhdGlvbgorQHBhcmFtIHJhdyBSQVcgaGFuZGxlIHRvIGRlc3Ryb3kKK0ByZXR1cm4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFscmVhZHkgZW5jb2RlZAorKi8KK09QSl9VSU5UMzIgb3BqX3Jhd19udW1ieXRlcyhvcGpfcmF3X3QgKnJhdyk7CisvKioKK0luaXRpYWxpemUgdGhlIGRlY29kZXIKK0BwYXJhbSByYXcgUkFXIGhhbmRsZQorQHBhcmFtIGJwIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgZnJvbSB3aGljaCB0aGUgYnl0ZXMgd2lsbCBiZSByZWFkCitAcGFyYW0gbGVuIExlbmd0aCBvZiB0aGUgaW5wdXQgYnVmZmVyCisqLwordm9pZCBvcGpfcmF3X2luaXRfZGVjKG9wal9yYXdfdCAqcmF3LCBPUEpfQllURSAqYnAsIE9QSl9VSU5UMzIgbGVuKTsKKy8qKgorRGVjb2RlIGEgc3ltYm9sIHVzaW5nIHJhdy1kZWNvZGVyLiBDZnIgcC41MDYgVEFVQk1BTgorQHBhcmFtIHJhdyBSQVcgaGFuZGxlCitAcmV0dXJuIFJldHVybnMgdGhlIGRlY29kZWQgc3ltYm9sICgwIG9yIDEpCisqLworT1BKX1VJTlQzMiBvcGpfcmF3X2RlY29kZShvcGpfcmF3X3QgKnJhdyk7CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypAfSovCisKKy8qQH0qLworCisjZW5kaWYgLyogX19SQVdfSCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3QxLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvdDEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDZjMmY2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3QxLmMKQEAgLTAsMCArMSwxNzU3IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIENhbGx1bSBMZXJ3aWNrIDxzZWdAaGF4eGVkLmNvbT4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIm9wal9pbmNsdWRlcy5oIgorI2luY2x1ZGUgInQxX2x1dHMuaCIKKworLyoqIEBkZWZncm91cCBUMSBUMSAtIEltcGxlbWVudGF0aW9uIG9mIHRoZSB0aWVyLTEgY29kaW5nICovCisvKkB7Ki8KKworLyoqIEBuYW1lIExvY2FsIHN0YXRpYyBmdW5jdGlvbnMgKi8KKy8qQHsqLworCitzdGF0aWMgSU5MSU5FIE9QSl9CWVRFIG9wal90MV9nZXRjdHhub196YyhPUEpfVUlOVDMyIGYsIE9QSl9VSU5UMzIgb3JpZW50KTsKK3N0YXRpYyBPUEpfQllURSBvcGpfdDFfZ2V0Y3R4bm9fc2MoT1BKX1VJTlQzMiBmKTsKK3N0YXRpYyBJTkxJTkUgT1BKX1VJTlQzMiBvcGpfdDFfZ2V0Y3R4bm9fbWFnKE9QSl9VSU5UMzIgZik7CitzdGF0aWMgT1BKX0JZVEUgb3BqX3QxX2dldHNwYihPUEpfVUlOVDMyIGYpOworc3RhdGljIE9QSl9JTlQxNiBvcGpfdDFfZ2V0bm1zZWRlY19zaWcoT1BKX1VJTlQzMiB4LCBPUEpfVUlOVDMyIGJpdHBvcyk7CitzdGF0aWMgT1BKX0lOVDE2IG9wal90MV9nZXRubXNlZGVjX3JlZihPUEpfVUlOVDMyIHgsIE9QSl9VSU5UMzIgYml0cG9zKTsKK3N0YXRpYyB2b2lkIG9wal90MV91cGRhdGVmbGFncyhvcGpfZmxhZ190ICpmbGFnc3AsIE9QSl9VSU5UMzIgcywgT1BKX1VJTlQzMiBzdHJpZGUpOworLyoqCitFbmNvZGUgc2lnbmlmaWNhbnQgcGFzcworKi8KK3N0YXRpYyB2b2lkIG9wal90MV9lbmNfc2lncGFzc19zdGVwKG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mbGFnX3QgKmZsYWdzcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqZGF0YXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG9yaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBicG5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqbm1zZWRlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHZzYyk7CisKKy8qKgorRGVjb2RlIHNpZ25pZmljYW50IHBhc3MKKyovCisjaWYgMAorc3RhdGljIHZvaWQgb3BqX3QxX2RlY19zaWdwYXNzX3N0ZXAob3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZsYWdfdCAqZmxhZ3NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICpkYXRhcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgb3JpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG9uZXBsdXNoYWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgdnNjKTsKKyNlbmRpZgorCitzdGF0aWMgSU5MSU5FIHZvaWQgb3BqX3QxX2RlY19zaWdwYXNzX3N0ZXBfcmF3KAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBvcGpfZmxhZ190ICpmbGFnc3AsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyICpkYXRhcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgb3JpZW50LAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBvbmVwbHVzaGFsZiwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgdnNjKTsKK3N0YXRpYyBJTkxJTkUgdm9pZCBvcGpfdDFfZGVjX3NpZ3Bhc3Nfc3RlcF9tcWMoCisgICAgICAgICAgICAgICAgb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgIG9wal9mbGFnX3QgKmZsYWdzcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBvcmllbnQsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG9uZXBsdXNoYWxmKTsKK3N0YXRpYyBJTkxJTkUgdm9pZCBvcGpfdDFfZGVjX3NpZ3Bhc3Nfc3RlcF9tcWNfdnNjKAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBvcGpfZmxhZ190ICpmbGFnc3AsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyICpkYXRhcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgb3JpZW50LAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBvbmVwbHVzaGFsZiwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgdnNjKTsKKworCisvKioKK0VuY29kZSBzaWduaWZpY2FudCBwYXNzCisqLworc3RhdGljIHZvaWQgb3BqX3QxX2VuY19zaWdwYXNzKCBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBicG5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG9yaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICpubXNlZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGNibGtzdHkpOworCisvKioKK0RlY29kZSBzaWduaWZpY2FudCBwYXNzCisqLworc3RhdGljIHZvaWQgb3BqX3QxX2RlY19zaWdwYXNzX3JhdygKKyAgICAgICAgICAgICAgICBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIGJwbm8sCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG9yaWVudCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgY2Jsa3N0eSk7CitzdGF0aWMgdm9pZCBvcGpfdDFfZGVjX3NpZ3Bhc3NfbXFjKAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYnBubywKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgb3JpZW50KTsKK3N0YXRpYyB2b2lkIG9wal90MV9kZWNfc2lncGFzc19tcWNfdnNjKAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYnBubywKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgb3JpZW50KTsKKworCisKKy8qKgorRW5jb2RlIHJlZmluZW1lbnQgcGFzcworKi8KK3N0YXRpYyB2b2lkIG9wal90MV9lbmNfcmVmcGFzc19zdGVwKG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mbGFnX3QgKmZsYWdzcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqZGF0YXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYnBubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKm5tc2VkZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiB2c2MpOworCisKKy8qKgorRW5jb2RlIHJlZmluZW1lbnQgcGFzcworKi8KK3N0YXRpYyB2b2lkIG9wal90MV9lbmNfcmVmcGFzcyggb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYnBubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICpubXNlZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGNibGtzdHkpOworCisvKioKK0RlY29kZSByZWZpbmVtZW50IHBhc3MKKyovCitzdGF0aWMgdm9pZCBvcGpfdDFfZGVjX3JlZnBhc3NfcmF3KAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYnBubywKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgY2Jsa3N0eSk7CitzdGF0aWMgdm9pZCBvcGpfdDFfZGVjX3JlZnBhc3NfbXFjKAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYnBubyk7CitzdGF0aWMgdm9pZCBvcGpfdDFfZGVjX3JlZnBhc3NfbXFjX3ZzYygKKyAgICAgICAgICAgICAgICBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIGJwbm8pOworCisKKy8qKgorRGVjb2RlIHJlZmluZW1lbnQgcGFzcworKi8KKyNpZiAwCitzdGF0aWMgdm9pZCBvcGpfdDFfZGVjX3JlZnBhc3Nfc3RlcChvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZmxhZ190ICpmbGFnc3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBvc2hhbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgbmVnaGFsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHZzYyk7CisjZW5kaWYKKworc3RhdGljIElOTElORSB2b2lkICBvcGpfdDFfZGVjX3JlZnBhc3Nfc3RlcF9yYXcoCisgICAgICAgICAgICAgICAgb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgIG9wal9mbGFnX3QgKmZsYWdzcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwb3NoYWxmLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBuZWdoYWxmLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiB2c2MpOworc3RhdGljIElOTElORSB2b2lkIG9wal90MV9kZWNfcmVmcGFzc19zdGVwX21xYygKKyAgICAgICAgICAgICAgICBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgb3BqX2ZsYWdfdCAqZmxhZ3NwLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqZGF0YXAsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBvc2hhbGYsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG5lZ2hhbGYpOworc3RhdGljIElOTElORSB2b2lkIG9wal90MV9kZWNfcmVmcGFzc19zdGVwX21xY192c2MoCisgICAgICAgICAgICAgICAgb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgIG9wal9mbGFnX3QgKmZsYWdzcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwb3NoYWxmLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBuZWdoYWxmLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiB2c2MpOworCisKKworLyoqCitFbmNvZGUgY2xlYW4tdXAgcGFzcworKi8KK3N0YXRpYyB2b2lkIG9wal90MV9lbmNfY2xucGFzc19zdGVwKAorCQlvcGpfdDFfdCAqdDEsCisJCW9wal9mbGFnX3QgKmZsYWdzcCwKKwkJT1BKX0lOVDMyICpkYXRhcCwKKwkJT1BKX1VJTlQzMiBvcmllbnQsCisJCU9QSl9JTlQzMiBicG5vLAorCQlPUEpfSU5UMzIgb25lLAorCQlPUEpfSU5UMzIgKm5tc2VkZWMsCisJCU9QSl9VSU5UMzIgcGFydGlhbCwKKwkJT1BKX1VJTlQzMiB2c2MpOworLyoqCitEZWNvZGUgY2xlYW4tdXAgcGFzcworKi8KK3N0YXRpYyB2b2lkIG9wal90MV9kZWNfY2xucGFzc19zdGVwX3BhcnRpYWwoCisJCW9wal90MV90ICp0MSwKKwkJb3BqX2ZsYWdfdCAqZmxhZ3NwLAorCQlPUEpfSU5UMzIgKmRhdGFwLAorCQlPUEpfSU5UMzIgb3JpZW50LAorCQlPUEpfSU5UMzIgb25lcGx1c2hhbGYpOworc3RhdGljIHZvaWQgb3BqX3QxX2RlY19jbG5wYXNzX3N0ZXAoCisJCW9wal90MV90ICp0MSwKKwkJb3BqX2ZsYWdfdCAqZmxhZ3NwLAorCQlPUEpfSU5UMzIgKmRhdGFwLAorCQlPUEpfSU5UMzIgb3JpZW50LAorCQlPUEpfSU5UMzIgb25lcGx1c2hhbGYpOworc3RhdGljIHZvaWQgb3BqX3QxX2RlY19jbG5wYXNzX3N0ZXBfdnNjKAorCQlvcGpfdDFfdCAqdDEsCisJCW9wal9mbGFnX3QgKmZsYWdzcCwKKwkJT1BKX0lOVDMyICpkYXRhcCwKKwkJT1BKX0lOVDMyIG9yaWVudCwKKwkJT1BKX0lOVDMyIG9uZXBsdXNoYWxmLAorCQlPUEpfSU5UMzIgcGFydGlhbCwKKwkJT1BKX0lOVDMyIHZzYyk7CisvKioKK0VuY29kZSBjbGVhbi11cCBwYXNzCisqLworc3RhdGljIHZvaWQgb3BqX3QxX2VuY19jbG5wYXNzKAorCQlvcGpfdDFfdCAqdDEsCisJCU9QSl9JTlQzMiBicG5vLAorCQlPUEpfVUlOVDMyIG9yaWVudCwKKwkJT1BKX0lOVDMyICpubXNlZGVjLAorCQlPUEpfVUlOVDMyIGNibGtzdHkpOworLyoqCitEZWNvZGUgY2xlYW4tdXAgcGFzcworKi8KK3N0YXRpYyB2b2lkIG9wal90MV9kZWNfY2xucGFzcygKKwkJb3BqX3QxX3QgKnQxLAorCQlPUEpfSU5UMzIgYnBubywKKwkJT1BKX0lOVDMyIG9yaWVudCwKKwkJT1BKX0lOVDMyIGNibGtzdHkpOworCitzdGF0aWMgT1BKX0ZMT0FUNjQgb3BqX3QxX2dldHdtc2VkZWMoCisJCU9QSl9JTlQzMiBubXNlZGVjLAorCQlPUEpfVUlOVDMyIGNvbXBubywKKwkJT1BKX1VJTlQzMiBsZXZlbCwKKwkJT1BKX1VJTlQzMiBvcmllbnQsCisJCU9QSl9JTlQzMiBicG5vLAorCQlPUEpfVUlOVDMyIHFtZmJpZCwKKwkJT1BKX0ZMT0FUNjQgc3RlcHNpemUsCisJCU9QSl9VSU5UMzIgbnVtY29tcHMsCisJCWNvbnN0IE9QSl9GTE9BVDY0ICogbWN0X25vcm1zKTsKKworc3RhdGljIHZvaWQgb3BqX3QxX2VuY29kZV9jYmxrKCBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfY2Jsa19lbmNfdCogY2JsaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBvcmllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHFtZmJpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0ZMT0FUNjQgc3RlcHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY2Jsa3N0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBudW1jb21wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlX3QgKiB0aWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPUEpfRkxPQVQ2NCAqIG1jdF9ub3Jtcyk7CisKKy8qKgorRGVjb2RlIDEgY29kZS1ibG9jaworQHBhcmFtIHQxIFQxIGhhbmRsZQorQHBhcmFtIGNibGsgQ29kZS1ibG9jayBjb2RpbmcgcGFyYW1ldGVycworQHBhcmFtIG9yaWVudAorQHBhcmFtIHJvaXNoaWZ0IFJlZ2lvbiBvZiBpbnRlcmVzdCBzaGlmdGluZyB2YWx1ZQorQHBhcmFtIGNibGtzdHkgQ29kZS1ibG9jayBzdHlsZQorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfdDFfZGVjb2RlX2NibGsoIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfY2Jsa19kZWNfdCogY2JsaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgb3JpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiByb2lzaGlmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY2Jsa3N0eSk7CisKK09QSl9CT09MIG9wal90MV9hbGxvY2F0ZV9idWZmZXJzKCAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgaCk7CisKKy8qQH0qLworCisvKkB9Ki8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworT1BKX0JZVEUgb3BqX3QxX2dldGN0eG5vX3pjKE9QSl9VSU5UMzIgZiwgT1BKX1VJTlQzMiBvcmllbnQpIHsKKwlyZXR1cm4gbHV0X2N0eG5vX3pjWyhvcmllbnQgPDwgOCkgfCAoZiAmIFQxX1NJR19PVEgpXTsKK30KKworT1BKX0JZVEUgb3BqX3QxX2dldGN0eG5vX3NjKE9QSl9VSU5UMzIgZikgeworCXJldHVybiBsdXRfY3R4bm9fc2NbKGYgJiAoVDFfU0lHX1BSSU0gfCBUMV9TR04pKSA+PiA0XTsKK30KKworT1BKX1VJTlQzMiBvcGpfdDFfZ2V0Y3R4bm9fbWFnKE9QSl9VSU5UMzIgZikgeworCU9QSl9VSU5UMzIgdG1wMSA9IChmICYgVDFfU0lHX09USCkgPyBUMV9DVFhOT19NQUcgKyAxIDogVDFfQ1RYTk9fTUFHOworCU9QSl9VSU5UMzIgdG1wMiA9IChmICYgVDFfUkVGSU5FKSA/IFQxX0NUWE5PX01BRyArIDIgOiB0bXAxOworCXJldHVybiAodG1wMik7Cit9CisKK09QSl9CWVRFIG9wal90MV9nZXRzcGIoT1BKX1VJTlQzMiBmKSB7CisJcmV0dXJuIGx1dF9zcGJbKGYgJiAoVDFfU0lHX1BSSU0gfCBUMV9TR04pKSA+PiA0XTsKK30KKworT1BKX0lOVDE2IG9wal90MV9nZXRubXNlZGVjX3NpZyhPUEpfVUlOVDMyIHgsIE9QSl9VSU5UMzIgYml0cG9zKSB7CisJaWYgKGJpdHBvcyA+IFQxX05NU0VERUNfRlJBQ0JJVFMpIHsKKwkJcmV0dXJuIGx1dF9ubXNlZGVjX3NpZ1soeCA+PiAoYml0cG9zIC0gVDFfTk1TRURFQ19GUkFDQklUUykpICYgKCgxIDw8IFQxX05NU0VERUNfQklUUykgLSAxKV07CisJfQorCQorCXJldHVybiBsdXRfbm1zZWRlY19zaWcwW3ggJiAoKDEgPDwgVDFfTk1TRURFQ19CSVRTKSAtIDEpXTsKK30KKworT1BKX0lOVDE2IG9wal90MV9nZXRubXNlZGVjX3JlZihPUEpfVUlOVDMyIHgsIE9QSl9VSU5UMzIgYml0cG9zKSB7CisJaWYgKGJpdHBvcyA+IFQxX05NU0VERUNfRlJBQ0JJVFMpIHsKKwkJcmV0dXJuIGx1dF9ubXNlZGVjX3JlZlsoeCA+PiAoYml0cG9zIC0gVDFfTk1TRURFQ19GUkFDQklUUykpICYgKCgxIDw8IFQxX05NU0VERUNfQklUUykgLSAxKV07CisJfQorCisgICAgcmV0dXJuIGx1dF9ubXNlZGVjX3JlZjBbeCAmICgoMSA8PCBUMV9OTVNFREVDX0JJVFMpIC0gMSldOworfQorCit2b2lkIG9wal90MV91cGRhdGVmbGFncyhvcGpfZmxhZ190ICpmbGFnc3AsIE9QSl9VSU5UMzIgcywgT1BKX1VJTlQzMiBzdHJpZGUpIHsKKwlvcGpfZmxhZ190ICpucCA9IGZsYWdzcCAtIHN0cmlkZTsKKwlvcGpfZmxhZ190ICpzcCA9IGZsYWdzcCArIHN0cmlkZTsKKworCXN0YXRpYyBjb25zdCBvcGpfZmxhZ190IG1vZFtdID0geworCQlUMV9TSUdfUywgVDFfU0lHX1N8VDFfU0dOX1MsCisJCVQxX1NJR19FLCBUMV9TSUdfRXxUMV9TR05fRSwKKwkJVDFfU0lHX1csIFQxX1NJR19XfFQxX1NHTl9XLAorCQlUMV9TSUdfTiwgVDFfU0lHX058VDFfU0dOX04KKwl9OworCisJbnBbLTFdIHw9IFQxX1NJR19TRTsKKwlucFswXSAgfD0gbW9kW3NdOworCW5wWzFdICB8PSBUMV9TSUdfU1c7CisKKwlmbGFnc3BbLTFdIHw9IG1vZFtzKzJdOworCWZsYWdzcFswXSAgfD0gVDFfU0lHOworCWZsYWdzcFsxXSAgfD0gbW9kW3MrNF07CisKKwlzcFstMV0gfD0gVDFfU0lHX05FOworCXNwWzBdICB8PSBtb2Rbcys2XTsKKwlzcFsxXSAgfD0gVDFfU0lHX05XOworfQorCit2b2lkIG9wal90MV9lbmNfc2lncGFzc19zdGVwKCAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZsYWdfdCAqZmxhZ3NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG9yaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIGJwbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqbm1zZWRlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiB2c2MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCU9QSl9JTlQzMiB2OworICAgIE9QSl9VSU5UMzIgZmxhZzsKKwkKKwlvcGpfbXFjX3QgKm1xYyA9IHQxLT5tcWM7CS8qIE1RQyBjb21wb25lbnQgKi8KKwkKKwlmbGFnID0gdnNjID8gKE9QSl9VSU5UMzIpKCgqZmxhZ3NwKSAmICh+KFQxX1NJR19TIHwgVDFfU0lHX1NFIHwgVDFfU0lHX1NXIHwgVDFfU0dOX1MpKSkgOiAoT1BKX1VJTlQzMikoKmZsYWdzcCk7CisJaWYgKChmbGFnICYgVDFfU0lHX09USCkgJiYgIShmbGFnICYgKFQxX1NJRyB8IFQxX1ZJU0lUKSkpIHsKKwkJdiA9IG9wal9pbnRfYWJzKCpkYXRhcCkgJiBvbmUgPyAxIDogMDsKKwkJb3BqX21xY19zZXRjdXJjdHgobXFjLCBvcGpfdDFfZ2V0Y3R4bm9femMoZmxhZywgb3JpZW50KSk7CS8qIEVTU0FJICovCisJCWlmICh0eXBlID09IFQxX1RZUEVfUkFXKSB7CS8qIEJZUEFTUy9MQVpZIE1PREUgKi8KKwkJCW9wal9tcWNfYnlwYXNzX2VuYyhtcWMsIChPUEpfVUlOVDMyKXYpOworCQl9IGVsc2UgeworCQkJb3BqX21xY19lbmNvZGUobXFjLCAoT1BKX1VJTlQzMil2KTsKKwkJfQorCQlpZiAodikgeworCQkJdiA9ICpkYXRhcCA8IDAgPyAxIDogMDsKKwkJCSpubXNlZGVjICs9CW9wal90MV9nZXRubXNlZGVjX3NpZygoT1BKX1VJTlQzMilvcGpfaW50X2FicygqZGF0YXApLCAoT1BKX1VJTlQzMikoYnBubyArIFQxX05NU0VERUNfRlJBQ0JJVFMpKTsKKwkJCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgb3BqX3QxX2dldGN0eG5vX3NjKGZsYWcpKTsJLyogRVNTQUkgKi8KKwkJCWlmICh0eXBlID09IFQxX1RZUEVfUkFXKSB7CS8qIEJZUEFTUy9MQVpZIE1PREUgKi8KKwkJCQlvcGpfbXFjX2J5cGFzc19lbmMobXFjLCAoT1BKX1VJTlQzMil2KTsKKwkJCX0gZWxzZSB7CisJCQkJb3BqX21xY19lbmNvZGUobXFjLCAoT1BKX1VJTlQzMikodiBeIG9wal90MV9nZXRzcGIoKE9QSl9VSU5UMzIpZmxhZykpKTsKKwkJCX0KKwkJCW9wal90MV91cGRhdGVmbGFncyhmbGFnc3AsIChPUEpfVUlOVDMyKXYsIHQxLT5mbGFnc19zdHJpZGUpOworCQl9CisJCSpmbGFnc3AgfD0gVDFfVklTSVQ7CisJfQorfQorCisKK3N0YXRpYyBJTkxJTkUgdm9pZCBvcGpfdDFfZGVjX3NpZ3Bhc3Nfc3RlcF9yYXcoCisgICAgICAgICAgICAgICAgb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgIG9wal9mbGFnX3QgKmZsYWdzcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBvcmllbnQsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG9uZXBsdXNoYWxmLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiB2c2MpCit7CisgICAgICAgIE9QSl9JTlQzMiB2LCBmbGFnOworICAgICAgICBvcGpfcmF3X3QgKnJhdyA9IHQxLT5yYXc7ICAgICAgIC8qIFJBVyBjb21wb25lbnQgKi8KKyAgICAgICAgT1BKX0FSR19OT1RfVVNFRChvcmllbnQpOworICAgICAgIAorICAgICAgICBmbGFnID0gdnNjID8gKCgqZmxhZ3NwKSAmICh+KFQxX1NJR19TIHwgVDFfU0lHX1NFIHwgVDFfU0lHX1NXIHwgVDFfU0dOX1MpKSkgOiAoKmZsYWdzcCk7CisgICAgICAgIGlmICgoZmxhZyAmIFQxX1NJR19PVEgpICYmICEoZmxhZyAmIChUMV9TSUcgfCBUMV9WSVNJVCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BqX3Jhd19kZWNvZGUocmF3KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gKE9QSl9JTlQzMilvcGpfcmF3X2RlY29kZShyYXcpOyAgICAvKiBFU1NBSSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YXAgPSB2ID8gLW9uZXBsdXNoYWxmIDogb25lcGx1c2hhbGY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90MV91cGRhdGVmbGFncyhmbGFnc3AsIChPUEpfVUlOVDMyKXYsIHQxLT5mbGFnc19zdHJpZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpmbGFnc3AgfD0gVDFfVklTSVQ7CisgICAgICAgIH0KK30gICAgICAKKworSU5MSU5FIHZvaWQgb3BqX3QxX2RlY19zaWdwYXNzX3N0ZXBfbXFjKAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBvcGpfZmxhZ190ICpmbGFnc3AsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyICpkYXRhcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgb3JpZW50LAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBvbmVwbHVzaGFsZikKK3sKKyAgICAgICAgT1BKX0lOVDMyIHYsIGZsYWc7CisgICAgICAgCisgICAgICAgIG9wal9tcWNfdCAqbXFjID0gdDEtPm1xYzsgICAgICAgLyogTVFDIGNvbXBvbmVudCAqLworICAgICAgIAorICAgICAgICBmbGFnID0gKmZsYWdzcDsKKyAgICAgICAgaWYgKChmbGFnICYgVDFfU0lHX09USCkgJiYgIShmbGFnICYgKFQxX1NJRyB8IFQxX1ZJU0lUKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9tcWNfc2V0Y3VyY3R4KG1xYywgb3BqX3QxX2dldGN0eG5vX3pjKChPUEpfVUlOVDMyKWZsYWcsIChPUEpfVUlOVDMyKW9yaWVudCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wal9tcWNfZGVjb2RlKG1xYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX21xY19zZXRjdXJjdHgobXFjLCBvcGpfdDFfZ2V0Y3R4bm9fc2MoKE9QSl9VSU5UMzIpZmxhZykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gb3BqX21xY19kZWNvZGUobXFjKSBeIG9wal90MV9nZXRzcGIoKE9QSl9VSU5UMzIpZmxhZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhcCA9IHYgPyAtb25lcGx1c2hhbGYgOiBvbmVwbHVzaGFsZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QxX3VwZGF0ZWZsYWdzKGZsYWdzcCwgKE9QSl9VSU5UMzIpdiwgdDEtPmZsYWdzX3N0cmlkZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKmZsYWdzcCB8PSBUMV9WSVNJVDsKKyAgICAgICAgfQorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBWU0MgYW5kICBCWVBBU1MgYnkgQW50b25pbiAqLworCitJTkxJTkUgdm9pZCBvcGpfdDFfZGVjX3NpZ3Bhc3Nfc3RlcF9tcWNfdnNjKAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBvcGpfZmxhZ190ICpmbGFnc3AsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyICpkYXRhcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgb3JpZW50LAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBvbmVwbHVzaGFsZiwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgdnNjKQoreworICAgICAgICBPUEpfSU5UMzIgdiwgZmxhZzsKKyAgICAgICAKKyAgICAgICAgb3BqX21xY190ICptcWMgPSB0MS0+bXFjOyAgICAgICAvKiBNUUMgY29tcG9uZW50ICovCisgICAgICAgCisgICAgICAgIGZsYWcgPSB2c2MgPyAoKCpmbGFnc3ApICYgKH4oVDFfU0lHX1MgfCBUMV9TSUdfU0UgfCBUMV9TSUdfU1cgfCBUMV9TR05fUykpKSA6ICgqZmxhZ3NwKTsKKyAgICAgICAgaWYgKChmbGFnICYgVDFfU0lHX09USCkgJiYgIShmbGFnICYgKFQxX1NJRyB8IFQxX1ZJU0lUKSkpIHsKKyAgICAgICAgICAgICAgICBvcGpfbXFjX3NldGN1cmN0eChtcWMsIG9wal90MV9nZXRjdHhub196YygoT1BKX1VJTlQzMilmbGFnLCAoT1BKX1VJTlQzMilvcmllbnQpKTsKKyAgICAgICAgICAgICAgICBpZiAob3BqX21xY19kZWNvZGUobXFjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX21xY19zZXRjdXJjdHgobXFjLCBvcGpfdDFfZ2V0Y3R4bm9fc2MoKE9QSl9VSU5UMzIpZmxhZykpOworICAgICAgICAgICAgICAgICAgICAgICAgdiA9IG9wal9tcWNfZGVjb2RlKG1xYykgXiBvcGpfdDFfZ2V0c3BiKChPUEpfVUlOVDMyKWZsYWcpOworICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGFwID0gdiA/IC1vbmVwbHVzaGFsZiA6IG9uZXBsdXNoYWxmOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QxX3VwZGF0ZWZsYWdzKGZsYWdzcCwgKE9QSl9VSU5UMzIpdiwgdDEtPmZsYWdzX3N0cmlkZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpmbGFnc3AgfD0gVDFfVklTSVQ7CisgICAgICAgIH0KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVlNDIGFuZCAgQllQQVNTIGJ5IEFudG9uaW4gKi8KKworCisKK3ZvaWQgb3BqX3QxX2VuY19zaWdwYXNzKG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBicG5vLAorICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBvcmllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKm5tc2VkZWMsCisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBjYmxrc3R5CisgICAgICAgICAgICAgICAgICAgICAgICApCit7CisJT1BKX1VJTlQzMiBpLCBqLCBrLCB2c2M7IAorICAgIE9QSl9JTlQzMiBvbmU7CisKKwkqbm1zZWRlYyA9IDA7CisJb25lID0gMSA8PCAoYnBubyArIFQxX05NU0VERUNfRlJBQ0JJVFMpOworCWZvciAoayA9IDA7IGsgPCB0MS0+aDsgayArPSA0KSB7CisJCWZvciAoaSA9IDA7IGkgPCB0MS0+dzsgKytpKSB7CisJCQlmb3IgKGogPSBrOyBqIDwgayArIDQgJiYgaiA8IHQxLT5oOyArK2opIHsKKwkJCQl2c2MgPSAoKGNibGtzdHkgJiBKMktfQ0NQX0NCTEtTVFlfVlNDKSAmJiAoaiA9PSBrICsgMyB8fCBqID09IHQxLT5oIC0gMSkpID8gMSA6IDA7CisJCQkJb3BqX3QxX2VuY19zaWdwYXNzX3N0ZXAoCisJCQkJCQl0MSwKKwkJCQkJCSZ0MS0+ZmxhZ3NbKChqKzEpICogdDEtPmZsYWdzX3N0cmlkZSkgKyBpICsgMV0sCisJCQkJCQkmdDEtPmRhdGFbKGogKiB0MS0+dykgKyBpXSwKKwkJCQkJCW9yaWVudCwKKwkJCQkJCWJwbm8sCisJCQkJCQlvbmUsCisJCQkJCQlubXNlZGVjLAorCQkJCQkJdHlwZSwKKwkJCQkJCXZzYyk7CisJCQl9CisJCX0KKwl9Cit9CisKK3ZvaWQgb3BqX3QxX2RlY19zaWdwYXNzX3JhdygKKyAgICAgICAgICAgICAgICBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIGJwbm8sCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG9yaWVudCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgY2Jsa3N0eSkKK3sKKyAgICAgICAgT1BKX0lOVDMyIG9uZSwgaGFsZiwgb25lcGx1c2hhbGYsIHZzYzsKKyAgICAgICAgT1BKX1VJTlQzMiBpLCBqLCBrOyAKKyAgICAgICAgb25lID0gMSA8PCBicG5vOworICAgICAgICBoYWxmID0gb25lID4+IDE7CisgICAgICAgIG9uZXBsdXNoYWxmID0gb25lIHwgaGFsZjsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IHQxLT5oOyBrICs9IDQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdDEtPnc7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gazsgaiA8IGsgKyA0ICYmIGogPCB0MS0+aDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzYyA9ICgoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9WU0MpICYmIChqID09IGsgKyAzIHx8IGogPT0gdDEtPmggLSAxKSkgPyAxIDogMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QxX2RlY19zaWdwYXNzX3N0ZXBfcmF3KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdDEtPmZsYWdzWygoaisxKSAqIHQxLT5mbGFnc19zdHJpZGUpICsgaSArIDFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnQxLT5kYXRhWyhqICogdDEtPncpICsgaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVwbHVzaGFsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzYyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFZTQyBhbmQgIEJZUEFTUyBieSBBbnRvbmluICovCisKK3ZvaWQgb3BqX3QxX2RlY19zaWdwYXNzX21xYygKKyAgICAgICAgICAgICAgICBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIGJwbm8sCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG9yaWVudCkKK3sKKyAgICAgICAgT1BKX0lOVDMyIG9uZSwgaGFsZiwgb25lcGx1c2hhbGY7CisgICAgICAgIE9QSl9VSU5UMzIgaSwgaiwgazsKKyAgICAgICAgT1BKX0lOVDMyICpkYXRhMSA9IHQxLT5kYXRhOworICAgICAgICBvcGpfZmxhZ190ICpmbGFnczEgPSAmdDEtPmZsYWdzWzFdOworICAgICAgICBvbmUgPSAxIDw8IGJwbm87CisgICAgICAgIGhhbGYgPSBvbmUgPj4gMTsKKyAgICAgICAgb25lcGx1c2hhbGYgPSBvbmUgfCBoYWxmOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgKHQxLT5oICYgfjN1KTsgayArPSA0KSB7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHQxLT53OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqZGF0YTIgPSBkYXRhMSArIGk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZmxhZ190ICpmbGFnczIgPSBmbGFnczEgKyBpOworICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MyICs9IHQxLT5mbGFnc19zdHJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDFfZGVjX3NpZ3Bhc3Nfc3RlcF9tcWModDEsIGZsYWdzMiwgZGF0YTIsIG9yaWVudCwgb25lcGx1c2hhbGYpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTIgKz0gdDEtPnc7CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczIgKz0gdDEtPmZsYWdzX3N0cmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90MV9kZWNfc2lncGFzc19zdGVwX21xYyh0MSwgZmxhZ3MyLCBkYXRhMiwgb3JpZW50LCBvbmVwbHVzaGFsZik7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhMiArPSB0MS0+dzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzMiArPSB0MS0+ZmxhZ3Nfc3RyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QxX2RlY19zaWdwYXNzX3N0ZXBfbXFjKHQxLCBmbGFnczIsIGRhdGEyLCBvcmllbnQsIG9uZXBsdXNoYWxmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEyICs9IHQxLT53OworICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MyICs9IHQxLT5mbGFnc19zdHJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDFfZGVjX3NpZ3Bhc3Nfc3RlcF9tcWModDEsIGZsYWdzMiwgZGF0YTIsIG9yaWVudCwgb25lcGx1c2hhbGYpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTIgKz0gdDEtPnc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRhdGExICs9IHQxLT53IDw8IDI7CisgICAgICAgICAgICAgICAgZmxhZ3MxICs9IHQxLT5mbGFnc19zdHJpZGUgPDwgMjsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdDEtPnc7ICsraSkgeworICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqZGF0YTIgPSBkYXRhMSArIGk7CisgICAgICAgICAgICAgICAgb3BqX2ZsYWdfdCAqZmxhZ3MyID0gZmxhZ3MxICsgaTsKKyAgICAgICAgICAgICAgICBmb3IgKGogPSBrOyBqIDwgdDEtPmg7ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MyICs9IHQxLT5mbGFnc19zdHJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDFfZGVjX3NpZ3Bhc3Nfc3RlcF9tcWModDEsIGZsYWdzMiwgZGF0YTIsIG9yaWVudCwgb25lcGx1c2hhbGYpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTIgKz0gdDEtPnc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFZTQyBhbmQgIEJZUEFTUyBieSBBbnRvbmluICovCisKK3ZvaWQgb3BqX3QxX2RlY19zaWdwYXNzX21xY192c2MoCisgICAgICAgICAgICAgICAgb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBicG5vLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBvcmllbnQpCit7CisgICAgICAgIE9QSl9JTlQzMiBvbmUsIGhhbGYsIG9uZXBsdXNoYWxmLCB2c2M7CisgICAgICAgIE9QSl9VSU5UMzIgaSwgaiwgazsKKyAgICAgICAgb25lID0gMSA8PCBicG5vOworICAgICAgICBoYWxmID0gb25lID4+IDE7CisgICAgICAgIG9uZXBsdXNoYWxmID0gb25lIHwgaGFsZjsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IHQxLT5oOyBrICs9IDQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdDEtPnc7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gazsgaiA8IGsgKyA0ICYmIGogPCB0MS0+aDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzYyA9IChqID09IGsgKyAzIHx8IGogPT0gdDEtPmggLSAxKSA/IDEgOiAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDFfZGVjX3NpZ3Bhc3Nfc3RlcF9tcWNfdnNjKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdDEtPmZsYWdzWygoaisxKSAqIHQxLT5mbGFnc19zdHJpZGUpICsgaSArIDFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnQxLT5kYXRhWyhqICogdDEtPncpICsgaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVwbHVzaGFsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzYyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFZTQyBhbmQgIEJZUEFTUyBieSBBbnRvbmluICovCisKKworCit2b2lkIG9wal90MV9lbmNfcmVmcGFzc19zdGVwKCAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZsYWdfdCAqZmxhZ3NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYnBubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICpubXNlZGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHZzYykKK3sKKwlPUEpfSU5UMzIgdjsKKwlPUEpfVUlOVDMyIGZsYWc7CisJCisJb3BqX21xY190ICptcWMgPSB0MS0+bXFjOwkvKiBNUUMgY29tcG9uZW50ICovCisJCisJZmxhZyA9IHZzYyA/IChPUEpfVUlOVDMyKSgoKmZsYWdzcCkgJiAofihUMV9TSUdfUyB8IFQxX1NJR19TRSB8IFQxX1NJR19TVyB8IFQxX1NHTl9TKSkpIDogKE9QSl9VSU5UMzIpKCpmbGFnc3ApOworCWlmICgoZmxhZyAmIChUMV9TSUcgfCBUMV9WSVNJVCkpID09IFQxX1NJRykgeworCQkqbm1zZWRlYyArPSBvcGpfdDFfZ2V0bm1zZWRlY19yZWYoKE9QSl9VSU5UMzIpb3BqX2ludF9hYnMoKmRhdGFwKSwgKE9QSl9VSU5UMzIpKGJwbm8gKyBUMV9OTVNFREVDX0ZSQUNCSVRTKSk7CisJCXYgPSBvcGpfaW50X2FicygqZGF0YXApICYgb25lID8gMSA6IDA7CisJCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgb3BqX3QxX2dldGN0eG5vX21hZyhmbGFnKSk7CS8qIEVTU0FJICovCisJCWlmICh0eXBlID09IFQxX1RZUEVfUkFXKSB7CS8qIEJZUEFTUy9MQVpZIE1PREUgKi8KKwkJCW9wal9tcWNfYnlwYXNzX2VuYyhtcWMsIChPUEpfVUlOVDMyKXYpOworCQl9IGVsc2UgeworCQkJb3BqX21xY19lbmNvZGUobXFjLCAoT1BKX1VJTlQzMil2KTsKKwkJfQorCQkqZmxhZ3NwIHw9IFQxX1JFRklORTsKKwl9Cit9CisKK0lOTElORSB2b2lkIG9wal90MV9kZWNfcmVmcGFzc19zdGVwX3JhdygKKyAgICAgICAgICAgICAgICBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgb3BqX2ZsYWdfdCAqZmxhZ3NwLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqZGF0YXAsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHBvc2hhbGYsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG5lZ2hhbGYsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHZzYykKK3sKKyAgICAgICAgT1BKX0lOVDMyIHYsIHQsIGZsYWc7CisgICAgICAgCisgICAgICAgIG9wal9yYXdfdCAqcmF3ID0gdDEtPnJhdzsgICAgICAgLyogUkFXIGNvbXBvbmVudCAqLworICAgICAgIAorICAgICAgICBmbGFnID0gdnNjID8gKCgqZmxhZ3NwKSAmICh+KFQxX1NJR19TIHwgVDFfU0lHX1NFIHwgVDFfU0lHX1NXIHwgVDFfU0dOX1MpKSkgOiAoKmZsYWdzcCk7CisgICAgICAgIGlmICgoZmxhZyAmIChUMV9TSUcgfCBUMV9WSVNJVCkpID09IFQxX1NJRykgeworICAgICAgICAgICAgICAgICAgICAgICAgdiA9IChPUEpfSU5UMzIpb3BqX3Jhd19kZWNvZGUocmF3KTsKKyAgICAgICAgICAgICAgICB0ID0gdiA/IHBvc2hhbGYgOiBuZWdoYWxmOworICAgICAgICAgICAgICAgICpkYXRhcCArPSAqZGF0YXAgPCAwID8gLXQgOiB0OworICAgICAgICAgICAgICAgICpmbGFnc3AgfD0gVDFfUkVGSU5FOworICAgICAgICB9Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFZTQyBhbmQgIEJZUEFTUyBieSBBbnRvbmluICAqLworCitJTkxJTkUgdm9pZCBvcGpfdDFfZGVjX3JlZnBhc3Nfc3RlcF9tcWMoCisgICAgICAgICAgICAgICAgb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgIG9wal9mbGFnX3QgKmZsYWdzcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwb3NoYWxmLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBuZWdoYWxmKQoreworICAgICAgICBPUEpfSU5UMzIgdiwgdCwgZmxhZzsKKyAgICAgICAKKyAgICAgICAgb3BqX21xY190ICptcWMgPSB0MS0+bXFjOyAgICAgICAvKiBNUUMgY29tcG9uZW50ICovCisgICAgICAgCisgICAgICAgIGZsYWcgPSAqZmxhZ3NwOworICAgICAgICBpZiAoKGZsYWcgJiAoVDFfU0lHIHwgVDFfVklTSVQpKSA9PSBUMV9TSUcpIHsKKyAgICAgICAgICAgICAgICBvcGpfbXFjX3NldGN1cmN0eChtcWMsIG9wal90MV9nZXRjdHhub19tYWcoKE9QSl9VSU5UMzIpZmxhZykpOyAgICAgIC8qIEVTU0FJICovCisgICAgICAgICAgICAgICAgICAgICAgICB2ID0gb3BqX21xY19kZWNvZGUobXFjKTsKKyAgICAgICAgICAgICAgICB0ID0gdiA/IHBvc2hhbGYgOiBuZWdoYWxmOworICAgICAgICAgICAgICAgICpkYXRhcCArPSAqZGF0YXAgPCAwID8gLXQgOiB0OworICAgICAgICAgICAgICAgICpmbGFnc3AgfD0gVDFfUkVGSU5FOworICAgICAgICAgICAgICAgIH0KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVlNDIGFuZCAgQllQQVNTIGJ5IEFudG9uaW4gICovCisKK0lOTElORSB2b2lkIG9wal90MV9kZWNfcmVmcGFzc19zdGVwX21xY192c2MoCisgICAgICAgICAgICAgICAgb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgIG9wal9mbGFnX3QgKmZsYWdzcCwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwb3NoYWxmLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBuZWdoYWxmLAorICAgICAgICAgICAgICAgIE9QSl9JTlQzMiB2c2MpCit7CisgICAgICAgIE9QSl9JTlQzMiB2LCB0LCBmbGFnOworICAgICAgIAorICAgICAgICBvcGpfbXFjX3QgKm1xYyA9IHQxLT5tcWM7ICAgICAgIC8qIE1RQyBjb21wb25lbnQgKi8KKyAgICAgICAKKyAgICAgICAgZmxhZyA9IHZzYyA/ICgoKmZsYWdzcCkgJiAofihUMV9TSUdfUyB8IFQxX1NJR19TRSB8IFQxX1NJR19TVyB8IFQxX1NHTl9TKSkpIDogKCpmbGFnc3ApOworICAgICAgICBpZiAoKGZsYWcgJiAoVDFfU0lHIHwgVDFfVklTSVQpKSA9PSBUMV9TSUcpIHsKKyAgICAgICAgICAgICAgICBvcGpfbXFjX3NldGN1cmN0eChtcWMsIG9wal90MV9nZXRjdHhub19tYWcoKE9QSl9VSU5UMzIpZmxhZykpOyAgICAgIC8qIEVTU0FJICovCisgICAgICAgICAgICAgICAgdiA9IG9wal9tcWNfZGVjb2RlKG1xYyk7CisgICAgICAgICAgICAgICAgdCA9IHYgPyBwb3NoYWxmIDogbmVnaGFsZjsKKyAgICAgICAgICAgICAgICAqZGF0YXAgKz0gKmRhdGFwIDwgMCA/IC10IDogdDsKKyAgICAgICAgICAgICAgICAqZmxhZ3NwIHw9IFQxX1JFRklORTsKKyAgICAgICAgfQorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBWU0MgYW5kICBCWVBBU1MgYnkgQW50b25pbiAgKi8KKworCit2b2lkIG9wal90MV9lbmNfcmVmcGFzcygKKwkJb3BqX3QxX3QgKnQxLAorCQlPUEpfSU5UMzIgYnBubywKKwkJT1BKX0lOVDMyICpubXNlZGVjLAorCQlPUEpfQllURSB0eXBlLAorCQlPUEpfVUlOVDMyIGNibGtzdHkpCit7CisJT1BKX1VJTlQzMiBpLCBqLCBrLCB2c2M7CisgICAgT1BKX0lOVDMyIG9uZTsKKworCSpubXNlZGVjID0gMDsKKwlvbmUgPSAxIDw8IChicG5vICsgVDFfTk1TRURFQ19GUkFDQklUUyk7CisJZm9yIChrID0gMDsgayA8IHQxLT5oOyBrICs9IDQpIHsKKwkJZm9yIChpID0gMDsgaSA8IHQxLT53OyArK2kpIHsKKwkJCWZvciAoaiA9IGs7IGogPCBrICsgNCAmJiBqIDwgdDEtPmg7ICsraikgeworCQkJCXZzYyA9ICgoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9WU0MpICYmIChqID09IGsgKyAzIHx8IGogPT0gdDEtPmggLSAxKSkgPyAxIDogMDsKKwkJCQlvcGpfdDFfZW5jX3JlZnBhc3Nfc3RlcCgKKwkJCQkJCXQxLAorCQkJCQkJJnQxLT5mbGFnc1soKGorMSkgKiB0MS0+ZmxhZ3Nfc3RyaWRlKSArIGkgKyAxXSwKKwkJCQkJCSZ0MS0+ZGF0YVsoaiAqIHQxLT53KSArIGldLAorCQkJCQkJYnBubywKKwkJCQkJCW9uZSwKKwkJCQkJCW5tc2VkZWMsCisJCQkJCQl0eXBlLAorCQkJCQkJdnNjKTsKKwkJCX0KKwkJfQorCX0KK30KKwordm9pZCBvcGpfdDFfZGVjX3JlZnBhc3NfcmF3KAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYnBubywKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgY2Jsa3N0eSkKK3sKKyAgICAgICAgT1BKX0lOVDMyIG9uZSwgcG9zaGFsZiwgbmVnaGFsZjsKKyAgICAgICAgT1BKX1VJTlQzMiBpLCBqLCBrOworICAgICAgICBPUEpfSU5UMzIgdnNjOworICAgICAgICBvbmUgPSAxIDw8IGJwbm87CisgICAgICAgIHBvc2hhbGYgPSBvbmUgPj4gMTsKKyAgICAgICAgbmVnaGFsZiA9IGJwbm8gPiAwID8gLXBvc2hhbGYgOiAtMTsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IHQxLT5oOyBrICs9IDQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdDEtPnc7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gazsgaiA8IGsgKyA0ICYmIGogPCB0MS0+aDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzYyA9ICgoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9WU0MpICYmIChqID09IGsgKyAzIHx8IGogPT0gdDEtPmggLSAxKSkgPyAxIDogMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QxX2RlY19yZWZwYXNzX3N0ZXBfcmF3KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdDEtPmZsYWdzWygoaisxKSAqIHQxLT5mbGFnc19zdHJpZGUpICsgaSArIDFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnQxLT5kYXRhWyhqICogdDEtPncpICsgaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NoYWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnaGFsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzYyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFZTQyBhbmQgIEJZUEFTUyBieSBBbnRvbmluICovCisKK3ZvaWQgb3BqX3QxX2RlY19yZWZwYXNzX21xYygKKyAgICAgICAgICAgICAgICBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgT1BKX0lOVDMyIGJwbm8pCit7CisgICAgICAgIE9QSl9JTlQzMiBvbmUsIHBvc2hhbGYsIG5lZ2hhbGY7CisgICAgICAgIE9QSl9VSU5UMzIgaSwgaiwgazsKKyAgICAgICAgT1BKX0lOVDMyICpkYXRhMSA9IHQxLT5kYXRhOworICAgICAgICBvcGpfZmxhZ190ICpmbGFnczEgPSAmdDEtPmZsYWdzWzFdOworICAgICAgICBvbmUgPSAxIDw8IGJwbm87CisgICAgICAgIHBvc2hhbGYgPSBvbmUgPj4gMTsKKyAgICAgICAgbmVnaGFsZiA9IGJwbm8gPiAwID8gLXBvc2hhbGYgOiAtMTsKKyAgICAgICAgZm9yIChrID0gMDsgayA8ICh0MS0+aCAmIH4zdSk7IGsgKz0gNCkgeworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0MS0+dzsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGEyID0gZGF0YTEgKyBpOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZsYWdfdCAqZmxhZ3MyID0gZmxhZ3MxICsgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzMiArPSB0MS0+ZmxhZ3Nfc3RyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QxX2RlY19yZWZwYXNzX3N0ZXBfbXFjKHQxLCBmbGFnczIsIGRhdGEyLCBwb3NoYWxmLCBuZWdoYWxmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEyICs9IHQxLT53OworICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MyICs9IHQxLT5mbGFnc19zdHJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDFfZGVjX3JlZnBhc3Nfc3RlcF9tcWModDEsIGZsYWdzMiwgZGF0YTIsIHBvc2hhbGYsIG5lZ2hhbGYpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTIgKz0gdDEtPnc7CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczIgKz0gdDEtPmZsYWdzX3N0cmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90MV9kZWNfcmVmcGFzc19zdGVwX21xYyh0MSwgZmxhZ3MyLCBkYXRhMiwgcG9zaGFsZiwgbmVnaGFsZik7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhMiArPSB0MS0+dzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzMiArPSB0MS0+ZmxhZ3Nfc3RyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QxX2RlY19yZWZwYXNzX3N0ZXBfbXFjKHQxLCBmbGFnczIsIGRhdGEyLCBwb3NoYWxmLCBuZWdoYWxmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEyICs9IHQxLT53OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkYXRhMSArPSB0MS0+dyA8PCAyOworICAgICAgICAgICAgICAgIGZsYWdzMSArPSB0MS0+ZmxhZ3Nfc3RyaWRlIDw8IDI7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHQxLT53OyArK2kpIHsKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGEyID0gZGF0YTEgKyBpOworICAgICAgICAgICAgICAgIG9wal9mbGFnX3QgKmZsYWdzMiA9IGZsYWdzMSArIGk7CisgICAgICAgICAgICAgICAgZm9yIChqID0gazsgaiA8IHQxLT5oOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzMiArPSB0MS0+ZmxhZ3Nfc3RyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QxX2RlY19yZWZwYXNzX3N0ZXBfbXFjKHQxLCBmbGFnczIsIGRhdGEyLCBwb3NoYWxmLCBuZWdoYWxmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEyICs9IHQxLT53OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBWU0MgYW5kICBCWVBBU1MgYnkgQW50b25pbiAqLworCit2b2lkIG9wal90MV9kZWNfcmVmcGFzc19tcWNfdnNjKAorICAgICAgICAgICAgICAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICBPUEpfSU5UMzIgYnBubykKK3sKKyAgICAgICAgT1BKX0lOVDMyIG9uZSwgcG9zaGFsZiwgbmVnaGFsZjsKKyAgICAgICAgT1BKX1VJTlQzMiBpLCBqLCBrOworICAgICAgICBPUEpfSU5UMzIgdnNjOworICAgICAgICBvbmUgPSAxIDw8IGJwbm87CisgICAgICAgIHBvc2hhbGYgPSBvbmUgPj4gMTsKKyAgICAgICAgbmVnaGFsZiA9IGJwbm8gPiAwID8gLXBvc2hhbGYgOiAtMTsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IHQxLT5oOyBrICs9IDQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdDEtPnc7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gazsgaiA8IGsgKyA0ICYmIGogPCB0MS0+aDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzYyA9ICgoaiA9PSBrICsgMyB8fCBqID09IHQxLT5oIC0gMSkpID8gMSA6IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90MV9kZWNfcmVmcGFzc19zdGVwX21xY192c2MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0MS0+ZmxhZ3NbKChqKzEpICogdDEtPmZsYWdzX3N0cmlkZSkgKyBpICsgMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdDEtPmRhdGFbKGogKiB0MS0+dykgKyBpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2hhbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdoYWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnNjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVlNDIGFuZCAgQllQQVNTIGJ5IEFudG9uaW4gKi8KKworCit2b2lkIG9wal90MV9lbmNfY2xucGFzc19zdGVwKAorCQlvcGpfdDFfdCAqdDEsCisJCW9wal9mbGFnX3QgKmZsYWdzcCwKKwkJT1BKX0lOVDMyICpkYXRhcCwKKwkJT1BKX1VJTlQzMiBvcmllbnQsCisJCU9QSl9JTlQzMiBicG5vLAorCQlPUEpfSU5UMzIgb25lLAorCQlPUEpfSU5UMzIgKm5tc2VkZWMsCisJCU9QSl9VSU5UMzIgcGFydGlhbCwKKwkJT1BKX1VJTlQzMiB2c2MpCit7CisJT1BKX0lOVDMyIHY7CisJT1BKX1VJTlQzMiBmbGFnOworCQorCW9wal9tcWNfdCAqbXFjID0gdDEtPm1xYzsJLyogTVFDIGNvbXBvbmVudCAqLworCQorCWZsYWcgPSB2c2MgPyAoT1BKX1VJTlQzMikoKCpmbGFnc3ApICYgKH4oVDFfU0lHX1MgfCBUMV9TSUdfU0UgfCBUMV9TSUdfU1cgfCBUMV9TR05fUykpKSA6IChPUEpfVUlOVDMyKSgqZmxhZ3NwKTsKKwlpZiAocGFydGlhbCkgeworCQlnb3RvIExBQkVMX1BBUlRJQUw7CisJfQorCWlmICghKCpmbGFnc3AgJiAoVDFfU0lHIHwgVDFfVklTSVQpKSkgeworCQlvcGpfbXFjX3NldGN1cmN0eChtcWMsIG9wal90MV9nZXRjdHhub196YyhmbGFnLCBvcmllbnQpKTsKKwkJdiA9IG9wal9pbnRfYWJzKCpkYXRhcCkgJiBvbmUgPyAxIDogMDsKKwkJb3BqX21xY19lbmNvZGUobXFjLCAoT1BKX1VJTlQzMil2KTsKKwkJaWYgKHYpIHsKK0xBQkVMX1BBUlRJQUw6CisJCQkqbm1zZWRlYyArPSBvcGpfdDFfZ2V0bm1zZWRlY19zaWcoKE9QSl9VSU5UMzIpb3BqX2ludF9hYnMoKmRhdGFwKSwgKE9QSl9VSU5UMzIpKGJwbm8gKyBUMV9OTVNFREVDX0ZSQUNCSVRTKSk7CisJCQlvcGpfbXFjX3NldGN1cmN0eChtcWMsIG9wal90MV9nZXRjdHhub19zYyhmbGFnKSk7CisJCQl2ID0gKmRhdGFwIDwgMCA/IDEgOiAwOworCQkJb3BqX21xY19lbmNvZGUobXFjLCAoT1BKX1VJTlQzMikodiBeIG9wal90MV9nZXRzcGIoKE9QSl9VSU5UMzIpZmxhZykpKTsKKwkJCW9wal90MV91cGRhdGVmbGFncyhmbGFnc3AsIChPUEpfVUlOVDMyKXYsIHQxLT5mbGFnc19zdHJpZGUpOworCQl9CisJfQorCSpmbGFnc3AgJj0gflQxX1ZJU0lUOworfQorCitzdGF0aWMgdm9pZCBvcGpfdDFfZGVjX2NsbnBhc3Nfc3RlcF9wYXJ0aWFsKAorCQlvcGpfdDFfdCAqdDEsCisJCW9wal9mbGFnX3QgKmZsYWdzcCwKKwkJT1BKX0lOVDMyICpkYXRhcCwKKwkJT1BKX0lOVDMyIG9yaWVudCwKKwkJT1BKX0lOVDMyIG9uZXBsdXNoYWxmKQoreworCU9QSl9JTlQzMiB2LCBmbGFnOworCW9wal9tcWNfdCAqbXFjID0gdDEtPm1xYzsJLyogTVFDIGNvbXBvbmVudCAqLworCQorCU9QSl9BUkdfTk9UX1VTRUQob3JpZW50KTsKKwkKKwlmbGFnID0gKmZsYWdzcDsKKwlvcGpfbXFjX3NldGN1cmN0eChtcWMsIG9wal90MV9nZXRjdHhub19zYygoT1BKX1VJTlQzMilmbGFnKSk7CisJdiA9IG9wal9tcWNfZGVjb2RlKG1xYykgXiBvcGpfdDFfZ2V0c3BiKChPUEpfVUlOVDMyKWZsYWcpOworCSpkYXRhcCA9IHYgPyAtb25lcGx1c2hhbGYgOiBvbmVwbHVzaGFsZjsKKwlvcGpfdDFfdXBkYXRlZmxhZ3MoZmxhZ3NwLCAoT1BKX1VJTlQzMil2LCB0MS0+ZmxhZ3Nfc3RyaWRlKTsKKwkqZmxhZ3NwICY9IH5UMV9WSVNJVDsKK30JCQkJLyogVlNDIGFuZCAgQllQQVNTIGJ5IEFudG9uaW4gKi8KKworc3RhdGljIHZvaWQgb3BqX3QxX2RlY19jbG5wYXNzX3N0ZXAoCisJCW9wal90MV90ICp0MSwKKwkJb3BqX2ZsYWdfdCAqZmxhZ3NwLAorCQlPUEpfSU5UMzIgKmRhdGFwLAorCQlPUEpfSU5UMzIgb3JpZW50LAorCQlPUEpfSU5UMzIgb25lcGx1c2hhbGYpCit7CisJT1BKX0lOVDMyIHYsIGZsYWc7CisJCisJb3BqX21xY190ICptcWMgPSB0MS0+bXFjOwkvKiBNUUMgY29tcG9uZW50ICovCisJCisJZmxhZyA9ICpmbGFnc3A7CisJaWYgKCEoZmxhZyAmIChUMV9TSUcgfCBUMV9WSVNJVCkpKSB7CisJCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgb3BqX3QxX2dldGN0eG5vX3pjKChPUEpfVUlOVDMyKWZsYWcsIChPUEpfVUlOVDMyKW9yaWVudCkpOworCQlpZiAob3BqX21xY19kZWNvZGUobXFjKSkgeworCQkJb3BqX21xY19zZXRjdXJjdHgobXFjLCBvcGpfdDFfZ2V0Y3R4bm9fc2MoKE9QSl9VSU5UMzIpZmxhZykpOworCQkJdiA9IG9wal9tcWNfZGVjb2RlKG1xYykgXiBvcGpfdDFfZ2V0c3BiKChPUEpfVUlOVDMyKWZsYWcpOworCQkJKmRhdGFwID0gdiA/IC1vbmVwbHVzaGFsZiA6IG9uZXBsdXNoYWxmOworCQkJb3BqX3QxX3VwZGF0ZWZsYWdzKGZsYWdzcCwgKE9QSl9VSU5UMzIpdiwgdDEtPmZsYWdzX3N0cmlkZSk7CisJCX0KKwl9CisJKmZsYWdzcCAmPSB+VDFfVklTSVQ7Cit9CQkJCS8qIFZTQyBhbmQgIEJZUEFTUyBieSBBbnRvbmluICovCisKK3N0YXRpYyB2b2lkIG9wal90MV9kZWNfY2xucGFzc19zdGVwX3ZzYygKKwkJb3BqX3QxX3QgKnQxLAorCQlvcGpfZmxhZ190ICpmbGFnc3AsCisJCU9QSl9JTlQzMiAqZGF0YXAsCisJCU9QSl9JTlQzMiBvcmllbnQsCisJCU9QSl9JTlQzMiBvbmVwbHVzaGFsZiwKKwkJT1BKX0lOVDMyIHBhcnRpYWwsCisJCU9QSl9JTlQzMiB2c2MpCit7CisJT1BKX0lOVDMyIHYsIGZsYWc7CisJCisJb3BqX21xY190ICptcWMgPSB0MS0+bXFjOwkvKiBNUUMgY29tcG9uZW50ICovCisJCisJZmxhZyA9IHZzYyA/ICgoKmZsYWdzcCkgJiAofihUMV9TSUdfUyB8IFQxX1NJR19TRSB8IFQxX1NJR19TVyB8IFQxX1NHTl9TKSkpIDogKCpmbGFnc3ApOworCWlmIChwYXJ0aWFsKSB7CisJCWdvdG8gTEFCRUxfUEFSVElBTDsKKwl9CisJaWYgKCEoZmxhZyAmIChUMV9TSUcgfCBUMV9WSVNJVCkpKSB7CisJCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgb3BqX3QxX2dldGN0eG5vX3pjKChPUEpfVUlOVDMyKWZsYWcsIChPUEpfVUlOVDMyKW9yaWVudCkpOworCQlpZiAob3BqX21xY19kZWNvZGUobXFjKSkgeworTEFCRUxfUEFSVElBTDoKKwkJCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgb3BqX3QxX2dldGN0eG5vX3NjKChPUEpfVUlOVDMyKWZsYWcpKTsKKwkJCXYgPSBvcGpfbXFjX2RlY29kZShtcWMpIF4gb3BqX3QxX2dldHNwYigoT1BKX1VJTlQzMilmbGFnKTsKKwkJCSpkYXRhcCA9IHYgPyAtb25lcGx1c2hhbGYgOiBvbmVwbHVzaGFsZjsKKwkJCW9wal90MV91cGRhdGVmbGFncyhmbGFnc3AsIChPUEpfVUlOVDMyKXYsIHQxLT5mbGFnc19zdHJpZGUpOworCQl9CisJfQorCSpmbGFnc3AgJj0gflQxX1ZJU0lUOworfQorCit2b2lkIG9wal90MV9lbmNfY2xucGFzcygKKwkJb3BqX3QxX3QgKnQxLAorCQlPUEpfSU5UMzIgYnBubywKKwkJT1BKX1VJTlQzMiBvcmllbnQsCisJCU9QSl9JTlQzMiAqbm1zZWRlYywKKwkJT1BKX1VJTlQzMiBjYmxrc3R5KQoreworCU9QSl9VSU5UMzIgaSwgaiwgazsKKwlPUEpfSU5UMzIgb25lOworCU9QSl9VSU5UMzIgYWdnLCBydW5sZW4sIHZzYzsKKwkKKwlvcGpfbXFjX3QgKm1xYyA9IHQxLT5tcWM7CS8qIE1RQyBjb21wb25lbnQgKi8KKwkKKwkqbm1zZWRlYyA9IDA7CisJb25lID0gMSA8PCAoYnBubyArIFQxX05NU0VERUNfRlJBQ0JJVFMpOworCWZvciAoayA9IDA7IGsgPCB0MS0+aDsgayArPSA0KSB7CisJCWZvciAoaSA9IDA7IGkgPCB0MS0+dzsgKytpKSB7CisJCQlpZiAoayArIDMgPCB0MS0+aCkgeworCQkJCWlmIChjYmxrc3R5ICYgSjJLX0NDUF9DQkxLU1RZX1ZTQykgeworCQkJCQlhZ2cgPSAhKE1BQ1JPX3QxX2ZsYWdzKDEgKyBrLDEgKyBpKSAmIChUMV9TSUcgfCBUMV9WSVNJVCB8IFQxX1NJR19PVEgpCisJCQkJCQl8fCBNQUNST190MV9mbGFncygxICsgayArIDEsMSArIGkpICYgKFQxX1NJRyB8IFQxX1ZJU0lUIHwgVDFfU0lHX09USCkKKwkJCQkJCXx8IE1BQ1JPX3QxX2ZsYWdzKDEgKyBrICsgMiwxICsgaSkgJiAoVDFfU0lHIHwgVDFfVklTSVQgfCBUMV9TSUdfT1RIKQorCQkJCQkJfHwgKE1BQ1JPX3QxX2ZsYWdzKDEgKyBrICsgMywxICsgaSkgCisJCQkJCQkmICh+KFQxX1NJR19TIHwgVDFfU0lHX1NFIHwgVDFfU0lHX1NXIHwJVDFfU0dOX1MpKSkgJiAoVDFfU0lHIHwgVDFfVklTSVQgfCBUMV9TSUdfT1RIKSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJYWdnID0gIShNQUNST190MV9mbGFncygxICsgaywxICsgaSkgJiAoVDFfU0lHIHwgVDFfVklTSVQgfCBUMV9TSUdfT1RIKQorCQkJCQkJfHwgTUFDUk9fdDFfZmxhZ3MoMSArIGsgKyAxLDEgKyBpKSAmIChUMV9TSUcgfCBUMV9WSVNJVCB8IFQxX1NJR19PVEgpCisJCQkJCQl8fCBNQUNST190MV9mbGFncygxICsgayArIDIsMSArIGkpICYgKFQxX1NJRyB8IFQxX1ZJU0lUIHwgVDFfU0lHX09USCkKKwkJCQkJCXx8IE1BQ1JPX3QxX2ZsYWdzKDEgKyBrICsgMywxICsgaSkgJiAoVDFfU0lHIHwgVDFfVklTSVQgfCBUMV9TSUdfT1RIKSk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlhZ2cgPSAwOworCQkJfQorCQkJaWYgKGFnZykgeworCQkJCWZvciAocnVubGVuID0gMDsgcnVubGVuIDwgNDsgKytydW5sZW4pIHsKKwkJCQkJaWYgKG9wal9pbnRfYWJzKHQxLT5kYXRhWygoayArIHJ1bmxlbikqdDEtPncpICsgaV0pICYgb25lKQorCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgVDFfQ1RYTk9fQUdHKTsKKwkJCQlvcGpfbXFjX2VuY29kZShtcWMsIHJ1bmxlbiAhPSA0KTsKKwkJCQlpZiAocnVubGVuID09IDQpIHsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgVDFfQ1RYTk9fVU5JKTsKKwkJCQlvcGpfbXFjX2VuY29kZShtcWMsIHJ1bmxlbiA+PiAxKTsKKwkJCQlvcGpfbXFjX2VuY29kZShtcWMsIHJ1bmxlbiAmIDEpOworCQkJfSBlbHNlIHsKKwkJCQlydW5sZW4gPSAwOworCQkJfQorCQkJZm9yIChqID0gayArIHJ1bmxlbjsgaiA8IGsgKyA0ICYmIGogPCB0MS0+aDsgKytqKSB7CisJCQkJdnNjID0gKChjYmxrc3R5ICYgSjJLX0NDUF9DQkxLU1RZX1ZTQykgJiYgKGogPT0gayArIDMgfHwgaiA9PSB0MS0+aCAtIDEpKSA/IDEgOiAwOworCQkJCW9wal90MV9lbmNfY2xucGFzc19zdGVwKAorCQkJCQkJdDEsCisJCQkJCQkmdDEtPmZsYWdzWygoaisxKSAqIHQxLT5mbGFnc19zdHJpZGUpICsgaSArIDFdLAorCQkJCQkJJnQxLT5kYXRhWyhqICogdDEtPncpICsgaV0sCisJCQkJCQlvcmllbnQsCisJCQkJCQlicG5vLAorCQkJCQkJb25lLAorCQkJCQkJbm1zZWRlYywKKwkJCQkJCWFnZyAmJiAoaiA9PSBrICsgcnVubGVuKSwKKwkJCQkJCXZzYyk7CisJCQl9CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lkIG9wal90MV9kZWNfY2xucGFzcygKKwkJb3BqX3QxX3QgKnQxLAorCQlPUEpfSU5UMzIgYnBubywKKwkJT1BKX0lOVDMyIG9yaWVudCwKKwkJT1BKX0lOVDMyIGNibGtzdHkpCit7CisJT1BKX0lOVDMyIG9uZSwgaGFsZiwgb25lcGx1c2hhbGYsIGFnZywgcnVubGVuLCB2c2M7CisgICAgT1BKX1VJTlQzMiBpLCBqLCBrOworCU9QSl9JTlQzMiBzZWdzeW0gPSBjYmxrc3R5ICYgSjJLX0NDUF9DQkxLU1RZX1NFR1NZTTsKKwkKKwlvcGpfbXFjX3QgKm1xYyA9IHQxLT5tcWM7CS8qIE1RQyBjb21wb25lbnQgKi8KKwkKKwlvbmUgPSAxIDw8IGJwbm87CisJaGFsZiA9IG9uZSA+PiAxOworCW9uZXBsdXNoYWxmID0gb25lIHwgaGFsZjsKKwlpZiAoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9WU0MpIHsKKwlmb3IgKGsgPSAwOyBrIDwgdDEtPmg7IGsgKz0gNCkgeworCQlmb3IgKGkgPSAwOyBpIDwgdDEtPnc7ICsraSkgeworCQkJaWYgKGsgKyAzIDwgdDEtPmgpIHsKKwkJCQkJYWdnID0gIShNQUNST190MV9mbGFncygxICsgaywxICsgaSkgJiAoVDFfU0lHIHwgVDFfVklTSVQgfCBUMV9TSUdfT1RIKQorCQkJCQkJfHwgTUFDUk9fdDFfZmxhZ3MoMSArIGsgKyAxLDEgKyBpKSAmIChUMV9TSUcgfCBUMV9WSVNJVCB8IFQxX1NJR19PVEgpCisJCQkJCQl8fCBNQUNST190MV9mbGFncygxICsgayArIDIsMSArIGkpICYgKFQxX1NJRyB8IFQxX1ZJU0lUIHwgVDFfU0lHX09USCkKKwkJCQkJCXx8IChNQUNST190MV9mbGFncygxICsgayArIDMsMSArIGkpIAorCQkJCQkJJiAofihUMV9TSUdfUyB8IFQxX1NJR19TRSB8IFQxX1NJR19TVyB8CVQxX1NHTl9TKSkpICYgKFQxX1NJRyB8IFQxX1ZJU0lUIHwgVDFfU0lHX09USCkpOworCQkJCX0gZWxzZSB7CisJCQkJYWdnID0gMDsKKwkJCX0KKwkJCWlmIChhZ2cpIHsKKwkJCQlvcGpfbXFjX3NldGN1cmN0eChtcWMsIFQxX0NUWE5PX0FHRyk7CisJCQkJaWYgKCFvcGpfbXFjX2RlY29kZShtcWMpKSB7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCQlvcGpfbXFjX3NldGN1cmN0eChtcWMsIFQxX0NUWE5PX1VOSSk7CisJCQkJcnVubGVuID0gb3BqX21xY19kZWNvZGUobXFjKTsKKwkJCQlydW5sZW4gPSAocnVubGVuIDw8IDEpIHwgb3BqX21xY19kZWNvZGUobXFjKTsKKwkJCX0gZWxzZSB7CisJCQkJcnVubGVuID0gMDsKKwkJCX0KKwkJCWZvciAoaiA9IGsgKyAoT1BKX1VJTlQzMilydW5sZW47IGogPCBrICsgNCAmJiBqIDwgdDEtPmg7ICsraikgeworCQkJCQl2c2MgPSAoaiA9PSBrICsgMyB8fCBqID09IHQxLT5oIC0gMSkgPyAxIDogMDsKKwkJCQkJb3BqX3QxX2RlY19jbG5wYXNzX3N0ZXBfdnNjKAorCQkJCQkJdDEsCisJCQkJCQkmdDEtPmZsYWdzWygoaisxKSAqIHQxLT5mbGFnc19zdHJpZGUpICsgaSArIDFdLAorCQkJCQkJJnQxLT5kYXRhWyhqICogdDEtPncpICsgaV0sCisJCQkJCQlvcmllbnQsCisJCQkJCQlvbmVwbHVzaGFsZiwKKwkJCQkJCWFnZyAmJiAoaiA9PSBrICsgKE9QSl9VSU5UMzIpcnVubGVuKSwKKwkJCQkJCXZzYyk7CisJCQl9CisJCX0KKwl9CisJfSBlbHNlIHsKKwkJT1BKX0lOVDMyICpkYXRhMSA9IHQxLT5kYXRhOworCQlvcGpfZmxhZ190ICpmbGFnczEgPSAmdDEtPmZsYWdzWzFdOworCQlmb3IgKGsgPSAwOyBrIDwgKHQxLT5oICYgfjN1KTsgayArPSA0KSB7CisJCQlmb3IgKGkgPSAwOyBpIDwgdDEtPnc7ICsraSkgeworCQkJCU9QSl9JTlQzMiAqZGF0YTIgPSBkYXRhMSArIGk7CisJCQkJb3BqX2ZsYWdfdCAqZmxhZ3MyID0gZmxhZ3MxICsgaTsKKwkJCQlhZ2cgPSAhKE1BQ1JPX3QxX2ZsYWdzKDEgKyBrLDEgKyBpKSAmIChUMV9TSUcgfCBUMV9WSVNJVCB8IFQxX1NJR19PVEgpCisJCQkJCXx8IE1BQ1JPX3QxX2ZsYWdzKDEgKyBrICsgMSwxICsgaSkgJiAoVDFfU0lHIHwgVDFfVklTSVQgfCBUMV9TSUdfT1RIKQorCQkJCQl8fCBNQUNST190MV9mbGFncygxICsgayArIDIsMSArIGkpICYgKFQxX1NJRyB8IFQxX1ZJU0lUIHwgVDFfU0lHX09USCkKKwkJCQkJfHwgTUFDUk9fdDFfZmxhZ3MoMSArIGsgKyAzLDEgKyBpKSAmIChUMV9TSUcgfCBUMV9WSVNJVCB8IFQxX1NJR19PVEgpKTsKKwkJCQlpZiAoYWdnKSB7CisJCQkJCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgVDFfQ1RYTk9fQUdHKTsKKwkJCQkJaWYgKCFvcGpfbXFjX2RlY29kZShtcWMpKSB7CisJCQkJCQljb250aW51ZTsKKwkJCQkJfQorCQkJCQlvcGpfbXFjX3NldGN1cmN0eChtcWMsIFQxX0NUWE5PX1VOSSk7CisJCQkJCXJ1bmxlbiA9IG9wal9tcWNfZGVjb2RlKG1xYyk7CisJCQkJCXJ1bmxlbiA9IChydW5sZW4gPDwgMSkgfCBvcGpfbXFjX2RlY29kZShtcWMpOworCQkJCQlmbGFnczIgKz0gKE9QSl9VSU5UMzIpcnVubGVuICogdDEtPmZsYWdzX3N0cmlkZTsKKwkJCQkJZGF0YTIgKz0gKE9QSl9VSU5UMzIpcnVubGVuICogdDEtPnc7CisJCQkJCWZvciAoaiA9IGsgKyAoT1BKX1VJTlQzMilydW5sZW47IGogPCBrICsgNCAmJiBqIDwgdDEtPmg7ICsraikgeworCQkJCQkJZmxhZ3MyICs9IHQxLT5mbGFnc19zdHJpZGU7CisJCQkJCQlpZiAoYWdnICYmIChqID09IGsgKyAoT1BKX1VJTlQzMilydW5sZW4pKSB7CisJCQkJCQkJb3BqX3QxX2RlY19jbG5wYXNzX3N0ZXBfcGFydGlhbCh0MSwgZmxhZ3MyLCBkYXRhMiwgb3JpZW50LCBvbmVwbHVzaGFsZik7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCW9wal90MV9kZWNfY2xucGFzc19zdGVwKHQxLCBmbGFnczIsIGRhdGEyLCBvcmllbnQsIG9uZXBsdXNoYWxmKTsKKwkJCQkJCX0KKwkJCQkJCWRhdGEyICs9IHQxLT53OworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJZmxhZ3MyICs9IHQxLT5mbGFnc19zdHJpZGU7CisJCQkJCW9wal90MV9kZWNfY2xucGFzc19zdGVwKHQxLCBmbGFnczIsIGRhdGEyLCBvcmllbnQsIG9uZXBsdXNoYWxmKTsKKwkJCQkJZGF0YTIgKz0gdDEtPnc7CisJCQkJCWZsYWdzMiArPSB0MS0+ZmxhZ3Nfc3RyaWRlOworCQkJCQlvcGpfdDFfZGVjX2NsbnBhc3Nfc3RlcCh0MSwgZmxhZ3MyLCBkYXRhMiwgb3JpZW50LCBvbmVwbHVzaGFsZik7CisJCQkJCWRhdGEyICs9IHQxLT53OworCQkJCQlmbGFnczIgKz0gdDEtPmZsYWdzX3N0cmlkZTsKKwkJCQkJb3BqX3QxX2RlY19jbG5wYXNzX3N0ZXAodDEsIGZsYWdzMiwgZGF0YTIsIG9yaWVudCwgb25lcGx1c2hhbGYpOworCQkJCQlkYXRhMiArPSB0MS0+dzsKKwkJCQkJZmxhZ3MyICs9IHQxLT5mbGFnc19zdHJpZGU7CisJCQkJCW9wal90MV9kZWNfY2xucGFzc19zdGVwKHQxLCBmbGFnczIsIGRhdGEyLCBvcmllbnQsIG9uZXBsdXNoYWxmKTsKKwkJCQkJZGF0YTIgKz0gdDEtPnc7CisJCQkJfQorCQkJfQorCQkJZGF0YTEgKz0gdDEtPncgPDwgMjsKKwkJCWZsYWdzMSArPSB0MS0+ZmxhZ3Nfc3RyaWRlIDw8IDI7CisJCX0KKwkJZm9yIChpID0gMDsgaSA8IHQxLT53OyArK2kpIHsKKwkJCU9QSl9JTlQzMiAqZGF0YTIgPSBkYXRhMSArIGk7CisJCQlvcGpfZmxhZ190ICpmbGFnczIgPSBmbGFnczEgKyBpOworCQkJZm9yIChqID0gazsgaiA8IHQxLT5oOyArK2opIHsKKwkJCQlmbGFnczIgKz0gdDEtPmZsYWdzX3N0cmlkZTsKKwkJCQlvcGpfdDFfZGVjX2NsbnBhc3Nfc3RlcCh0MSwgZmxhZ3MyLCBkYXRhMiwgb3JpZW50LCBvbmVwbHVzaGFsZik7CisJCQkJZGF0YTIgKz0gdDEtPnc7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoc2Vnc3ltKSB7CisJCU9QSl9JTlQzMiB2ID0gMDsKKwkJb3BqX21xY19zZXRjdXJjdHgobXFjLCBUMV9DVFhOT19VTkkpOworCQl2ID0gb3BqX21xY19kZWNvZGUobXFjKTsKKwkJdiA9ICh2IDw8IDEpIHwgb3BqX21xY19kZWNvZGUobXFjKTsKKwkJdiA9ICh2IDw8IDEpIHwgb3BqX21xY19kZWNvZGUobXFjKTsKKwkJdiA9ICh2IDw8IDEpIHwgb3BqX21xY19kZWNvZGUobXFjKTsKKwkJLyoKKwkJaWYgKHYhPTB4YSkgeworCQkJb3BqX2V2ZW50X21zZyh0MS0+Y2luZm8sIEVWVF9XQVJOSU5HLCAiQmFkIHNlZ21lbnRhdGlvbiBzeW1ib2wgJXhcbiIsIHYpOworCQl9IAorCQkqLworCX0KK30JCQkJLyogVlNDIGFuZCAgQllQQVNTIGJ5IEFudG9uaW4gKi8KKworCisvKiogbW9kIGZpeGVkX3F1YWxpdHkgKi8KK3N0YXRpYyBPUEpfRkxPQVQ2NCBvcGpfdDFfZ2V0d21zZWRlYygKKwkJT1BKX0lOVDMyIG5tc2VkZWMsCisJCU9QSl9VSU5UMzIgY29tcG5vLAorCQlPUEpfVUlOVDMyIGxldmVsLAorCQlPUEpfVUlOVDMyIG9yaWVudCwKKwkJT1BKX0lOVDMyIGJwbm8sCisJCU9QSl9VSU5UMzIgcW1mYmlkLAorCQlPUEpfRkxPQVQ2NCBzdGVwc2l6ZSwKKwkJT1BKX1VJTlQzMiBudW1jb21wcywKKwkJY29uc3QgT1BKX0ZMT0FUNjQgKiBtY3Rfbm9ybXMpCit7CisJT1BKX0ZMT0FUNjQgdzEgPSAxLCB3Miwgd21zZWRlYzsKKyAgICBPUEpfQVJHX05PVF9VU0VEKG51bWNvbXBzKTsKKworCWlmIChtY3Rfbm9ybXMpIHsKKwkJdzEgPSBtY3Rfbm9ybXNbY29tcG5vXTsKKwl9CisKKwlpZiAocW1mYmlkID09IDEpIHsKKwkJdzIgPSBvcGpfZHd0X2dldG5vcm0obGV2ZWwsIG9yaWVudCk7CisJfSBlbHNlIHsJLyogaWYgKHFtZmJpZCA9PSAwKSAqLworCQl3MiA9IG9wal9kd3RfZ2V0bm9ybV9yZWFsKGxldmVsLCBvcmllbnQpOworCX0KKworCXdtc2VkZWMgPSB3MSAqIHcyICogc3RlcHNpemUgKiAoMSA8PCBicG5vKTsKKwl3bXNlZGVjICo9IHdtc2VkZWMgKiBubXNlZGVjIC8gODE5Mi4wOworCisJcmV0dXJuIHdtc2VkZWM7Cit9CisKK09QSl9CT09MIG9wal90MV9hbGxvY2F0ZV9idWZmZXJzKAorCQlvcGpfdDFfdCAqdDEsCisJCU9QSl9VSU5UMzIgdywKKwkJT1BKX1VJTlQzMiBoKQoreworCU9QSl9VSU5UMzIgZGF0YXNpemU9dyAqIGg7CisJT1BKX1VJTlQzMiBmbGFnc3NpemU7CisKKwlpZihkYXRhc2l6ZSA+IHQxLT5kYXRhc2l6ZSl7CisJCW9wal9hbGlnbmVkX2ZyZWUodDEtPmRhdGEpOworCQl0MS0+ZGF0YSA9IChPUEpfSU5UMzIqKSBvcGpfYWxpZ25lZF9tYWxsb2MoZGF0YXNpemUgKiBzaXplb2YoT1BKX0lOVDMyKSk7CisJCWlmKCF0MS0+ZGF0YSl7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisJCXQxLT5kYXRhc2l6ZT1kYXRhc2l6ZTsKKwl9CisJbWVtc2V0KHQxLT5kYXRhLDAsZGF0YXNpemUgKiBzaXplb2YoT1BKX0lOVDMyKSk7CisKKwl0MS0+ZmxhZ3Nfc3RyaWRlPXcrMjsKKwlmbGFnc3NpemU9dDEtPmZsYWdzX3N0cmlkZSAqIChoKzIpOworCisJaWYoZmxhZ3NzaXplID4gdDEtPmZsYWdzc2l6ZSl7CisJCW9wal9hbGlnbmVkX2ZyZWUodDEtPmZsYWdzKTsKKwkJdDEtPmZsYWdzID0gKG9wal9mbGFnX3QqKSBvcGpfYWxpZ25lZF9tYWxsb2MoZmxhZ3NzaXplICogc2l6ZW9mKG9wal9mbGFnX3QpKTsKKwkJaWYoIXQxLT5mbGFncyl7CisJCQlyZXR1cm4gT1BKX0ZBTFNFOworCQl9CisJCXQxLT5mbGFnc3NpemU9ZmxhZ3NzaXplOworCX0KKwltZW1zZXQodDEtPmZsYWdzLDAsZmxhZ3NzaXplICogc2l6ZW9mKG9wal9mbGFnX3QpKTsKKworCXQxLT53PXc7CisJdDEtPmg9aDsKKworCXJldHVybiBPUEpfVFJVRTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qKgorICogQ3JlYXRlcyBhIG5ldyBUaWVyIDEgaGFuZGxlCisgKiBhbmQgaW5pdGlhbGl6ZXMgdGhlIGxvb2stdXAgdGFibGVzIG9mIHRoZSBUaWVyLTEgY29kZXIvZGVjb2RlcgorICogQHJldHVybiBhIG5ldyBUMSBoYW5kbGUgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBOVUxMIG90aGVyd2lzZQorKi8KK29wal90MV90KiBvcGpfdDFfY3JlYXRlKCkKK3sKKwlvcGpfdDFfdCAqbF90MSA9IDAwOworCisJbF90MSA9IChvcGpfdDFfdCopIG9wal9tYWxsb2Moc2l6ZW9mKG9wal90MV90KSk7CisJaWYgKCFsX3QxKSB7CisJCXJldHVybiAwMDsKKwl9CisJbWVtc2V0KGxfdDEsMCxzaXplb2Yob3BqX3QxX3QpKTsKKworCS8qIGNyZWF0ZSBNUUMgYW5kIFJBVyBoYW5kbGVzICovCisJbF90MS0+bXFjID0gb3BqX21xY19jcmVhdGUoKTsKKwlpZiAoISBsX3QxLT5tcWMpIHsKKwkJb3BqX3QxX2Rlc3Ryb3kobF90MSk7CisJCXJldHVybiAwMDsKKwl9CisKKwlsX3QxLT5yYXcgPSBvcGpfcmF3X2NyZWF0ZSgpOworCWlmICghIGxfdDEtPnJhdykgeworCQlvcGpfdDFfZGVzdHJveShsX3QxKTsKKwkJcmV0dXJuIDAwOworCX0KKworCXJldHVybiBsX3QxOworfQorCisKKy8qKgorICogRGVzdHJveXMgYSBwcmV2aW91c2x5IGNyZWF0ZWQgVDEgaGFuZGxlCisgKgorICogQHBhcmFtIHBfdDEgVGllciAxIGhhbmRsZSB0byBkZXN0cm95CisqLwordm9pZCBvcGpfdDFfZGVzdHJveShvcGpfdDFfdCAqcF90MSkKK3sKKwlpZiAoISBwX3QxKSB7CisJCXJldHVybjsKKwl9CisKKwkvKiBkZXN0cm95IE1RQyBhbmQgUkFXIGhhbmRsZXMgKi8KKwlvcGpfbXFjX2Rlc3Ryb3kocF90MS0+bXFjKTsKKwlwX3QxLT5tcWMgPSAwMDsKKwlvcGpfcmF3X2Rlc3Ryb3kocF90MS0+cmF3KTsKKwlwX3QxLT5yYXcgPSAwMDsKKwkKKyAgICBpZiAocF90MS0+ZGF0YSkgeworCQlvcGpfYWxpZ25lZF9mcmVlKHBfdDEtPmRhdGEpOworCQlwX3QxLT5kYXRhID0gMDA7CisJfQorCisJaWYgKHBfdDEtPmZsYWdzKSB7CisJCW9wal9hbGlnbmVkX2ZyZWUocF90MS0+ZmxhZ3MpOworCQlwX3QxLT5mbGFncyA9IDAwOworCX0KKworCW9wal9mcmVlKHBfdDEpOworfQorCitPUEpfQk9PTCBvcGpfdDFfZGVjb2RlX2NibGtzKCAgIG9wal90MV90KiB0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3RpbGVjb21wX3QqIHRpbGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2NwX3QqIHRjY3AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisJT1BKX1VJTlQzMiByZXNubywgYmFuZG5vLCBwcmVjbm8sIGNibGtubzsKKwlPUEpfVUlOVDMyIHRpbGVfdyA9IChPUEpfVUlOVDMyKSh0aWxlYy0+eDEgLSB0aWxlYy0+eDApOworCisJZm9yIChyZXNubyA9IDA7IHJlc25vIDwgdGlsZWMtPm1pbmltdW1fbnVtX3Jlc29sdXRpb25zOyArK3Jlc25vKSB7CisJCW9wal90Y2RfcmVzb2x1dGlvbl90KiByZXMgPSAmdGlsZWMtPnJlc29sdXRpb25zW3Jlc25vXTsKKworCQlmb3IgKGJhbmRubyA9IDA7IGJhbmRubyA8IHJlcy0+bnVtYmFuZHM7ICsrYmFuZG5vKSB7CisJCQlvcGpfdGNkX2JhbmRfdCogcmVzdHJpY3QgYmFuZCA9ICZyZXMtPmJhbmRzW2JhbmRub107CisKKwkJCWZvciAocHJlY25vID0gMDsgcHJlY25vIDwgcmVzLT5wdyAqIHJlcy0+cGg7ICsrcHJlY25vKSB7CisJCQkJb3BqX3RjZF9wcmVjaW5jdF90KiBwcmVjaW5jdCA9ICZiYW5kLT5wcmVjaW5jdHNbcHJlY25vXTsKKworCQkJCWZvciAoY2Jsa25vID0gMDsgY2Jsa25vIDwgcHJlY2luY3QtPmN3ICogcHJlY2luY3QtPmNoOyArK2NibGtubykgeworCQkJCQlvcGpfdGNkX2NibGtfZGVjX3QqIGNibGsgPSAmcHJlY2luY3QtPmNibGtzLmRlY1tjYmxrbm9dOworCQkJCQlPUEpfSU5UMzIqIHJlc3RyaWN0IGRhdGFwOworCQkJCQkvKnZvaWQqIHJlc3RyaWN0IHRpbGVkcDsqLworCQkJCQlPUEpfVUlOVDMyIGNibGtfdywgY2Jsa19oOworCQkJCQlPUEpfSU5UMzIgeCwgeTsKKwkJCQkJT1BKX1VJTlQzMiBpLCBqOworCisgICAgICAgICAgICAgICAgICAgIGlmIChPUEpfRkFMU0UgPT0gb3BqX3QxX2RlY29kZV9jYmxrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JsaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuZC0+YmFuZG5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT1BKX1VJTlQzMil0Y2NwLT5yb2lzaGlmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNjcC0+Y2Jsa3N0eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICB9CisKKwkJCQkJeCA9IGNibGstPngwIC0gYmFuZC0+eDA7CisJCQkJCXkgPSBjYmxrLT55MCAtIGJhbmQtPnkwOworCQkJCQlpZiAoYmFuZC0+YmFuZG5vICYgMSkgeworCQkJCQkJb3BqX3RjZF9yZXNvbHV0aW9uX3QqIHByZXMgPSAmdGlsZWMtPnJlc29sdXRpb25zW3Jlc25vIC0gMV07CisJCQkJCQl4ICs9IHByZXMtPngxIC0gcHJlcy0+eDA7CisJCQkJCX0KKwkJCQkJaWYgKGJhbmQtPmJhbmRubyAmIDIpIHsKKwkJCQkJCW9wal90Y2RfcmVzb2x1dGlvbl90KiBwcmVzID0gJnRpbGVjLT5yZXNvbHV0aW9uc1tyZXNubyAtIDFdOworCQkJCQkJeSArPSBwcmVzLT55MSAtIHByZXMtPnkwOworCQkJCQl9CisKKwkJCQkJZGF0YXA9dDEtPmRhdGE7CisJCQkJCWNibGtfdyA9IHQxLT53OworCQkJCQljYmxrX2ggPSB0MS0+aDsKKworCQkJCQlpZiAodGNjcC0+cm9pc2hpZnQpIHsKKwkJCQkJCU9QSl9JTlQzMiB0aHJlc2ggPSAxIDw8IHRjY3AtPnJvaXNoaWZ0OworCQkJCQkJZm9yIChqID0gMDsgaiA8IGNibGtfaDsgKytqKSB7CisJCQkJCQkJZm9yIChpID0gMDsgaSA8IGNibGtfdzsgKytpKSB7CisJCQkJCQkJCU9QSl9JTlQzMiB2YWwgPSBkYXRhcFsoaiAqIGNibGtfdykgKyBpXTsKKwkJCQkJCQkJT1BKX0lOVDMyIG1hZyA9IGFicyh2YWwpOworCQkJCQkJCQlpZiAobWFnID49IHRocmVzaCkgeworCQkJCQkJCQkJbWFnID4+PSB0Y2NwLT5yb2lzaGlmdDsKKwkJCQkJCQkJCWRhdGFwWyhqICogY2Jsa193KSArIGldID0gdmFsIDwgMCA/IC1tYWcgOiBtYWc7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQkvKnRpbGVkcD0odm9pZCopJnRpbGVjLT5kYXRhWyh5ICogdGlsZV93KSArIHhdOyovCisJCQkJCWlmICh0Y2NwLT5xbWZiaWQgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyKiByZXN0cmljdCB0aWxlZHAgPSAmdGlsZWMtPmRhdGFbKE9QSl9VSU5UMzIpeSAqIHRpbGVfdyArIChPUEpfVUlOVDMyKXhdOworCQkJCQkJZm9yIChqID0gMDsgaiA8IGNibGtfaDsgKytqKSB7CisJCQkJCQkJZm9yIChpID0gMDsgaSA8IGNibGtfdzsgKytpKSB7CisJCQkJCQkJCU9QSl9JTlQzMiB0bXAgPSBkYXRhcFsoaiAqIGNibGtfdykgKyBpXTsKKwkJCQkJCQkJKChPUEpfSU5UMzIqKXRpbGVkcClbKGogKiB0aWxlX3cpICsgaV0gPSB0bXAgLyAyOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfSBlbHNlIHsJCS8qIGlmICh0Y2NwLT5xbWZiaWQgPT0gMCkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyKiByZXN0cmljdCB0aWxlZHAgPSAoT1BKX0ZMT0FUMzIqKSAmdGlsZWMtPmRhdGFbKE9QSl9VSU5UMzIpeSAqIHRpbGVfdyArIChPUEpfVUlOVDMyKXhdOworCQkJCQkJZm9yIChqID0gMDsgaiA8IGNibGtfaDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0ZMT0FUMzIqIHJlc3RyaWN0IHRpbGVkcDIgPSB0aWxlZHA7CisJCQkJCQkJZm9yIChpID0gMDsgaSA8IGNibGtfdzsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDMyIHRtcCA9IChPUEpfRkxPQVQzMikqZGF0YXAgKiBiYW5kLT5zdGVwc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRpbGVkcDIgPSB0bXA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFwKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVkcDIrKzsKKwkJCQkJCQkJLypmbG9hdCB0bXAgPSBkYXRhcFsoaiAqIGNibGtfdykgKyBpXSAqIGJhbmQtPnN0ZXBzaXplOworCQkJCQkJCQkoKGZsb2F0Kil0aWxlZHApWyhqICogdGlsZV93KSArIGldID0gdG1wOyovCisKKwkJCQkJCQl9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZWRwICs9IHRpbGVfdzsKKwkJCQkJCX0KKwkJCQkJfQorICAgICAgICAgICAgICAgICAgICAvKm9wal9mcmVlKGNibGstPmRhdGEpOworCQkJCQlvcGpfZnJlZShjYmxrLT5zZWdzKTsqLworCQkJCQkvKmNibGstPnNlZ3MgPSAwMDsqLworCQkJCX0gLyogY2Jsa25vICovCisgICAgICAgICAgICAgICAgLypvcGpfZnJlZShwcmVjaW5jdC0+Y2Jsa3MuZGVjKTsqLworCQkJfSAvKiBwcmVjbm8gKi8KKwkJfSAvKiBiYW5kbm8gKi8KKwl9IC8qIHJlc25vICovCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworCitPUEpfQk9PTCBvcGpfdDFfZGVjb2RlX2NibGsob3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfY2Jsa19kZWNfdCogY2JsaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG9yaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHJvaXNoaWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY2Jsa3N0eSkKK3sKKwlvcGpfcmF3X3QgKnJhdyA9IHQxLT5yYXc7CS8qIFJBVyBjb21wb25lbnQgKi8KKwlvcGpfbXFjX3QgKm1xYyA9IHQxLT5tcWM7CS8qIE1RQyBjb21wb25lbnQgKi8KKworCU9QSl9JTlQzMiBicG5vOworCU9QSl9VSU5UMzIgcGFzc3R5cGU7CisJT1BKX1VJTlQzMiBzZWdubywgcGFzc25vOworCU9QSl9CWVRFIHR5cGUgPSBUMV9UWVBFX01ROyAvKiBCWVBBU1MgbW9kZSAqLworCisJaWYoIW9wal90MV9hbGxvY2F0ZV9idWZmZXJzKAorCQkJCXQxLAorCQkJCShPUEpfVUlOVDMyKShjYmxrLT54MSAtIGNibGstPngwKSwKKwkJCQkoT1BKX1VJTlQzMikoY2Jsay0+eTEgLSBjYmxrLT55MCkpKQorCXsKKwkJcmV0dXJuIE9QSl9GQUxTRTsKKwl9CisKKwlicG5vID0gKE9QSl9JTlQzMikocm9pc2hpZnQgKyBjYmxrLT5udW1icHMgLSAxKTsKKwlwYXNzdHlwZSA9IDI7CisKKwlvcGpfbXFjX3Jlc2V0c3RhdGVzKG1xYyk7CisJb3BqX21xY19zZXRzdGF0ZShtcWMsIFQxX0NUWE5PX1VOSSwgMCwgNDYpOworCW9wal9tcWNfc2V0c3RhdGUobXFjLCBUMV9DVFhOT19BR0csIDAsIDMpOworCW9wal9tcWNfc2V0c3RhdGUobXFjLCBUMV9DVFhOT19aQywgMCwgNCk7CisKKwlmb3IgKHNlZ25vID0gMDsgc2Vnbm8gPCBjYmxrLT5yZWFsX251bV9zZWdzOyArK3NlZ25vKSB7CisJCW9wal90Y2Rfc2VnX3QgKnNlZyA9ICZjYmxrLT5zZWdzW3NlZ25vXTsKKworCQkvKiBCWVBBU1MgbW9kZSAqLworCQl0eXBlID0gKChicG5vIDw9ICgoT1BKX0lOVDMyKSAoY2Jsay0+bnVtYnBzKSAtIDEpIC0gNCkgJiYgKHBhc3N0eXBlIDwgMikgJiYgKGNibGtzdHkgJiBKMktfQ0NQX0NCTEtTVFlfTEFaWSkpID8gVDFfVFlQRV9SQVcgOiBUMV9UWVBFX01ROworCQkvKiBGSVhNRTogc2x2aWV3ZXIgZ2V0cyBoZXJlIHdpdGggYSBudWxsIHBvaW50ZXIuIFdoeT8gUGFydGlhbGx5IGRvd25sb2FkZWQgYW5kL29yIGNvcnJ1cHQgdGV4dHVyZXM/ICovCisJCWlmKHNlZy0+ZGF0YSA9PSAwMCl7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAodHlwZSA9PSBUMV9UWVBFX1JBVykgeworCQkJb3BqX3Jhd19pbml0X2RlYyhyYXcsICgqc2VnLT5kYXRhKSArIHNlZy0+ZGF0YWluZGV4LCBzZWctPmxlbik7CisJCX0gZWxzZSB7CisgICAgICAgICAgICBpZiAoT1BKX0ZBTFNFID09IG9wal9tcWNfaW5pdF9kZWMobXFjLCAoKnNlZy0+ZGF0YSkgKyBzZWctPmRhdGFpbmRleCwgc2VnLT5sZW4pKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICB9CisJCX0KKworCQlmb3IgKHBhc3NubyA9IDA7IHBhc3NubyA8IHNlZy0+cmVhbF9udW1fcGFzc2VzOyArK3Bhc3NubykgeworICAgICAgICAgICAgc3dpdGNoIChwYXNzdHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gVDFfVFlQRV9SQVcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90MV9kZWNfc2lncGFzc19yYXcodDEsIGJwbm8rMSwgKE9QSl9JTlQzMilvcmllbnQsIChPUEpfSU5UMzIpY2Jsa3N0eSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9WU0MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDFfZGVjX3NpZ3Bhc3NfbXFjX3ZzYyh0MSwgYnBubysxLCAoT1BKX0lOVDMyKW9yaWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90MV9kZWNfc2lncGFzc19tcWModDEsIGJwbm8rMSwgKE9QSl9JTlQzMilvcmllbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gVDFfVFlQRV9SQVcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDFfZGVjX3JlZnBhc3NfcmF3KHQxLCBicG5vKzEsIChPUEpfSU5UMzIpY2Jsa3N0eSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9WU0MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDFfZGVjX3JlZnBhc3NfbXFjX3ZzYyh0MSwgYnBubysxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QxX2RlY19yZWZwYXNzX21xYyh0MSwgYnBubysxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIG9wal90MV9kZWNfY2xucGFzcyh0MSwgYnBubysxLCAoT1BKX0lOVDMyKW9yaWVudCwgKE9QSl9JTlQzMiljYmxrc3R5KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKwkJCWlmICgoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9SRVNFVCkgJiYgdHlwZSA9PSBUMV9UWVBFX01RKSB7CisJCQkJb3BqX21xY19yZXNldHN0YXRlcyhtcWMpOworCQkJCW9wal9tcWNfc2V0c3RhdGUobXFjLCBUMV9DVFhOT19VTkksIDAsIDQ2KTsKKwkJCQlvcGpfbXFjX3NldHN0YXRlKG1xYywgVDFfQ1RYTk9fQUdHLCAwLCAzKTsKKwkJCQlvcGpfbXFjX3NldHN0YXRlKG1xYywgVDFfQ1RYTk9fWkMsIDAsIDQpOworCQkJfQorCQkJaWYgKCsrcGFzc3R5cGUgPT0gMykgeworCQkJCXBhc3N0eXBlID0gMDsKKwkJCQlicG5vLS07CisJCQl9CisJCX0KKwl9CisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworCisKKworT1BKX0JPT0wgb3BqX3QxX2VuY29kZV9jYmxrcyggICBvcGpfdDFfdCAqdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfdGlsZV90ICp0aWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNwX3QgKnRjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgT1BKX0ZMT0FUNjQgKiBtY3Rfbm9ybXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworCU9QSl9VSU5UMzIgY29tcG5vLCByZXNubywgYmFuZG5vLCBwcmVjbm8sIGNibGtubzsKKworCXRpbGUtPmRpc3RvdGlsZSA9IDA7CQkvKiBmaXhlZF9xdWFsaXR5ICovCisKKwlmb3IgKGNvbXBubyA9IDA7IGNvbXBubyA8IHRpbGUtPm51bWNvbXBzOyArK2NvbXBubykgeworCQlvcGpfdGNkX3RpbGVjb21wX3QqIHRpbGVjID0gJnRpbGUtPmNvbXBzW2NvbXBub107CisJCW9wal90Y2NwX3QqIHRjY3AgPSAmdGNwLT50Y2Nwc1tjb21wbm9dOworCQlPUEpfVUlOVDMyIHRpbGVfdyA9IChPUEpfVUlOVDMyKSh0aWxlYy0+eDEgLSB0aWxlYy0+eDApOworCisJCWZvciAocmVzbm8gPSAwOyByZXNubyA8IHRpbGVjLT5udW1yZXNvbHV0aW9uczsgKytyZXNubykgeworCQkJb3BqX3RjZF9yZXNvbHV0aW9uX3QgKnJlcyA9ICZ0aWxlYy0+cmVzb2x1dGlvbnNbcmVzbm9dOworCisJCQlmb3IgKGJhbmRubyA9IDA7IGJhbmRubyA8IHJlcy0+bnVtYmFuZHM7ICsrYmFuZG5vKSB7CisJCQkJb3BqX3RjZF9iYW5kX3QqIHJlc3RyaWN0IGJhbmQgPSAmcmVzLT5iYW5kc1tiYW5kbm9dOworICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBiYW5kY29uc3QgPSA4MTkyICogODE5MiAvICgoT1BKX0lOVDMyKSBmbG9vcihiYW5kLT5zdGVwc2l6ZSAqIDgxOTIpKTsKKworCQkJCWZvciAocHJlY25vID0gMDsgcHJlY25vIDwgcmVzLT5wdyAqIHJlcy0+cGg7ICsrcHJlY25vKSB7CisJCQkJCW9wal90Y2RfcHJlY2luY3RfdCAqcHJjID0gJmJhbmQtPnByZWNpbmN0c1twcmVjbm9dOworCisJCQkJCWZvciAoY2Jsa25vID0gMDsgY2Jsa25vIDwgcHJjLT5jdyAqIHByYy0+Y2g7ICsrY2Jsa25vKSB7CisJCQkJCQlvcGpfdGNkX2NibGtfZW5jX3QqIGNibGsgPSAmcHJjLT5jYmxrcy5lbmNbY2Jsa25vXTsKKwkJCQkJCU9QSl9JTlQzMiAqIHJlc3RyaWN0IGRhdGFwOworCQkJCQkJT1BKX0lOVDMyKiByZXN0cmljdCB0aWxlZHA7CisJCQkJCQlPUEpfVUlOVDMyIGNibGtfdzsKKwkJCQkJCU9QSl9VSU5UMzIgY2Jsa19oOworCQkJCQkJT1BKX1VJTlQzMiBpLCBqOworCisJCQkJCQlPUEpfSU5UMzIgeCA9IGNibGstPngwIC0gYmFuZC0+eDA7CisJCQkJCQlPUEpfSU5UMzIgeSA9IGNibGstPnkwIC0gYmFuZC0+eTA7CisJCQkJCQlpZiAoYmFuZC0+YmFuZG5vICYgMSkgeworCQkJCQkJCW9wal90Y2RfcmVzb2x1dGlvbl90ICpwcmVzID0gJnRpbGVjLT5yZXNvbHV0aW9uc1tyZXNubyAtIDFdOworCQkJCQkJCXggKz0gcHJlcy0+eDEgLSBwcmVzLT54MDsKKwkJCQkJCX0KKwkJCQkJCWlmIChiYW5kLT5iYW5kbm8gJiAyKSB7CisJCQkJCQkJb3BqX3RjZF9yZXNvbHV0aW9uX3QgKnByZXMgPSAmdGlsZWMtPnJlc29sdXRpb25zW3Jlc25vIC0gMV07CisJCQkJCQkJeSArPSBwcmVzLT55MSAtIHByZXMtPnkwOworCQkJCQkJfQorCisJCQkJCQlpZighb3BqX3QxX2FsbG9jYXRlX2J1ZmZlcnMoCisJCQkJCQkJCQl0MSwKKwkJCQkJCQkJCShPUEpfVUlOVDMyKShjYmxrLT54MSAtIGNibGstPngwKSwKKwkJCQkJCQkJCShPUEpfVUlOVDMyKShjYmxrLT55MSAtIGNibGstPnkwKSkpCisJCQkJCQl7CisJCQkJCQkJcmV0dXJuIE9QSl9GQUxTRTsKKwkJCQkJCX0KKworCQkJCQkJZGF0YXA9dDEtPmRhdGE7CisJCQkJCQljYmxrX3cgPSB0MS0+dzsKKwkJCQkJCWNibGtfaCA9IHQxLT5oOworCisJCQkJCQl0aWxlZHA9JnRpbGVjLT5kYXRhWyhPUEpfVUlOVDMyKXkgKiB0aWxlX3cgKyAoT1BKX1VJTlQzMil4XTsKKwkJCQkJCWlmICh0Y2NwLT5xbWZiaWQgPT0gMSkgeworCQkJCQkJCWZvciAoaiA9IDA7IGogPCBjYmxrX2g7ICsraikgeworCQkJCQkJCQlmb3IgKGkgPSAwOyBpIDwgY2Jsa193OyArK2kpIHsKKwkJCQkJCQkJCU9QSl9JTlQzMiB0bXAgPSB0aWxlZHBbKGogKiB0aWxlX3cpICsgaV07CisJCQkJCQkJCQlkYXRhcFsoaiAqIGNibGtfdykgKyBpXSA9IHRtcCA8PCBUMV9OTVNFREVDX0ZSQUNCSVRTOworCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJfSBlbHNlIHsJCS8qIGlmICh0Y2NwLT5xbWZiaWQgPT0gMCkgKi8KKwkJCQkJCQlmb3IgKGogPSAwOyBqIDwgY2Jsa19oOyArK2opIHsKKwkJCQkJCQkJZm9yIChpID0gMDsgaSA8IGNibGtfdzsgKytpKSB7CisJCQkJCQkJCQlPUEpfSU5UMzIgdG1wID0gdGlsZWRwWyhqICogdGlsZV93KSArIGldOworCQkJCQkJCQkJZGF0YXBbKGogKiBjYmxrX3cpICsgaV0gPQorCQkJCQkJCQkJCW9wal9pbnRfZml4X211bCgKKwkJCQkJCQkJCQl0bXAsCisJCQkJCQkJCQkJYmFuZGNvbnN0KSA+PiAoMTEgLSBUMV9OTVNFREVDX0ZSQUNCSVRTKTsKKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJCX0KKworCQkJCQkJb3BqX3QxX2VuY29kZV9jYmxrKAorCQkJCQkJCQl0MSwKKwkJCQkJCQkJY2JsaywKKwkJCQkJCQkJYmFuZC0+YmFuZG5vLAorCQkJCQkJCQljb21wbm8sCisJCQkJCQkJCXRpbGVjLT5udW1yZXNvbHV0aW9ucyAtIDEgLSByZXNubywKKwkJCQkJCQkJdGNjcC0+cW1mYmlkLAorCQkJCQkJCQliYW5kLT5zdGVwc2l6ZSwKKwkJCQkJCQkJdGNjcC0+Y2Jsa3N0eSwKKwkJCQkJCQkJdGlsZS0+bnVtY29tcHMsCisJCQkJCQkJCXRpbGUsCisJCQkJCQkJCW1jdF9ub3Jtcyk7CisKKwkJCQkJfSAvKiBjYmxrbm8gKi8KKwkJCQl9IC8qIHByZWNubyAqLworCQkJfSAvKiBiYW5kbm8gKi8KKwkJfSAvKiByZXNubyAgKi8KKwl9IC8qIGNvbXBubyAgKi8KKwlyZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qKiBtb2QgZml4ZWRfcXVhbGl0eSAqLwordm9pZCBvcGpfdDFfZW5jb2RlX2NibGsob3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF9jYmxrX2VuY190KiBjYmxrLAorICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBvcmllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGNvbXBubywKKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHFtZmJpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9GTE9BVDY0IHN0ZXBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBjYmxrc3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBudW1jb21wcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfdGlsZV90ICogdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9QSl9GTE9BVDY0ICogbWN0X25vcm1zKQoreworCU9QSl9GTE9BVDY0IGN1bXdtc2VkZWMgPSAwLjA7CisKKwlvcGpfbXFjX3QgKm1xYyA9IHQxLT5tcWM7CS8qIE1RQyBjb21wb25lbnQgKi8KKworCU9QSl9VSU5UMzIgcGFzc25vOworCU9QSl9JTlQzMiBicG5vOworCU9QSl9VSU5UMzIgcGFzc3R5cGU7CisJT1BKX0lOVDMyIG5tc2VkZWMgPSAwOworCU9QSl9JTlQzMiBtYXg7CisJT1BKX1VJTlQzMiBpOworCU9QSl9CWVRFIHR5cGUgPSBUMV9UWVBFX01ROworCU9QSl9GTE9BVDY0IHRlbXB3bXNlZGVjOworCisJbWF4ID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgdDEtPncgKiB0MS0+aDsgKytpKSB7CisJCU9QSl9JTlQzMiB0bXAgPSBhYnModDEtPmRhdGFbaV0pOworCQltYXggPSBvcGpfaW50X21heChtYXgsIHRtcCk7CisJfQorCisJY2Jsay0+bnVtYnBzID0gbWF4ID8gKE9QSl9VSU5UMzIpKChvcGpfaW50X2Zsb29ybG9nMihtYXgpICsgMSkgLSBUMV9OTVNFREVDX0ZSQUNCSVRTKSA6IDA7CisKKwlicG5vID0gKE9QSl9JTlQzMikoY2Jsay0+bnVtYnBzIC0gMSk7CisJcGFzc3R5cGUgPSAyOworCisJb3BqX21xY19yZXNldHN0YXRlcyhtcWMpOworCW9wal9tcWNfc2V0c3RhdGUobXFjLCBUMV9DVFhOT19VTkksIDAsIDQ2KTsKKwlvcGpfbXFjX3NldHN0YXRlKG1xYywgVDFfQ1RYTk9fQUdHLCAwLCAzKTsKKwlvcGpfbXFjX3NldHN0YXRlKG1xYywgVDFfQ1RYTk9fWkMsIDAsIDQpOworCW9wal9tcWNfaW5pdF9lbmMobXFjLCBjYmxrLT5kYXRhKTsKKworCWZvciAocGFzc25vID0gMDsgYnBubyA+PSAwOyArK3Bhc3NubykgeworCQlvcGpfdGNkX3Bhc3NfdCAqcGFzcyA9ICZjYmxrLT5wYXNzZXNbcGFzc25vXTsKKwkJT1BKX1VJTlQzMiBjb3JyZWN0aW9uID0gMzsKKwkJdHlwZSA9ICgoYnBubyA8ICgoT1BKX0lOVDMyKSAoY2Jsay0+bnVtYnBzKSAtIDQpKSAmJiAocGFzc3R5cGUgPCAyKSAmJiAoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9MQVpZKSkgPyBUMV9UWVBFX1JBVyA6IFQxX1RZUEVfTVE7CisKKwkJc3dpdGNoIChwYXNzdHlwZSkgeworCQkJY2FzZSAwOgorCQkJCW9wal90MV9lbmNfc2lncGFzcyh0MSwgYnBubywgb3JpZW50LCAmbm1zZWRlYywgdHlwZSwgY2Jsa3N0eSk7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CisJCQkJb3BqX3QxX2VuY19yZWZwYXNzKHQxLCBicG5vLCAmbm1zZWRlYywgdHlwZSwgY2Jsa3N0eSk7CisJCQkJYnJlYWs7CisJCQljYXNlIDI6CisJCQkJb3BqX3QxX2VuY19jbG5wYXNzKHQxLCBicG5vLCBvcmllbnQsICZubXNlZGVjLCBjYmxrc3R5KTsKKwkJCQkvKiBjb2RlIHN3aXRjaCBTRUdNQVJLIChpLmUuIFNFR1NZTSkgKi8KKwkJCQlpZiAoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9TRUdTWU0pCisJCQkJCW9wal9tcWNfc2VnbWFya19lbmMobXFjKTsKKwkJCQlicmVhazsKKwkJfQorCisJCS8qIGZpeGVkX3F1YWxpdHkgKi8KKwkJdGVtcHdtc2VkZWMgPSBvcGpfdDFfZ2V0d21zZWRlYyhubXNlZGVjLCBjb21wbm8sIGxldmVsLCBvcmllbnQsIGJwbm8sIHFtZmJpZCwgc3RlcHNpemUsIG51bWNvbXBzLG1jdF9ub3JtcykgOworCQljdW13bXNlZGVjICs9IHRlbXB3bXNlZGVjOworCQl0aWxlLT5kaXN0b3RpbGUgKz0gdGVtcHdtc2VkZWM7CisKKwkJLyogQ29kZSBzd2l0Y2ggIlJFU1RBUlQiIChpLmUuIFRFUk1BTEwpICovCisJCWlmICgoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9URVJNQUxMKQkmJiAhKChwYXNzdHlwZSA9PSAyKSAmJiAoYnBubyAtIDEgPCAwKSkpIHsKKwkJCWlmICh0eXBlID09IFQxX1RZUEVfUkFXKSB7CisJCQkJb3BqX21xY19mbHVzaChtcWMpOworCQkJCWNvcnJlY3Rpb24gPSAxOworCQkJCS8qIGNvcnJlY3Rpb24gPSBtcWNfYnlwYXNzX2ZsdXNoX2VuYygpOyAqLworCQkJfSBlbHNlIHsJCQkvKiBjb3JyZWN0aW9uID0gbXFjX3Jlc3RhcnRfZW5jKCk7ICovCisJCQkJb3BqX21xY19mbHVzaChtcWMpOworCQkJCWNvcnJlY3Rpb24gPSAxOworCQkJfQorCQkJcGFzcy0+dGVybSA9IDE7CisJCX0gZWxzZSB7CisJCQlpZiAoKChicG5vIDwgKChPUEpfSU5UMzIpIChjYmxrLT5udW1icHMpIC0gNCkgJiYgKHBhc3N0eXBlID4gMCkpCisJCQkJfHwgKChicG5vID09ICgoT1BKX0lOVDMyKWNibGstPm51bWJwcyAtIDQpKSAmJiAocGFzc3R5cGUgPT0gMikpKSAmJiAoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9MQVpZKSkgeworCQkJCWlmICh0eXBlID09IFQxX1RZUEVfUkFXKSB7CisJCQkJCW9wal9tcWNfZmx1c2gobXFjKTsKKwkJCQkJY29ycmVjdGlvbiA9IDE7CisJCQkJCS8qIGNvcnJlY3Rpb24gPSBtcWNfYnlwYXNzX2ZsdXNoX2VuYygpOyAqLworCQkJCX0gZWxzZSB7CQkvKiBjb3JyZWN0aW9uID0gbXFjX3Jlc3RhcnRfZW5jKCk7ICovCisJCQkJCW9wal9tcWNfZmx1c2gobXFjKTsKKwkJCQkJY29ycmVjdGlvbiA9IDE7CisJCQkJfQorCQkJCXBhc3MtPnRlcm0gPSAxOworCQkJfSBlbHNlIHsKKwkJCQlwYXNzLT50ZXJtID0gMDsKKwkJCX0KKwkJfQorCisJCWlmICgrK3Bhc3N0eXBlID09IDMpIHsKKwkJCXBhc3N0eXBlID0gMDsKKwkJCWJwbm8tLTsKKwkJfQorCisJCWlmIChwYXNzLT50ZXJtICYmIGJwbm8gPiAwKSB7CisJCQl0eXBlID0gKChicG5vIDwgKChPUEpfSU5UMzIpIChjYmxrLT5udW1icHMpIC0gNCkpICYmIChwYXNzdHlwZSA8IDIpICYmIChjYmxrc3R5ICYgSjJLX0NDUF9DQkxLU1RZX0xBWlkpKSA/IFQxX1RZUEVfUkFXIDogVDFfVFlQRV9NUTsKKwkJCWlmICh0eXBlID09IFQxX1RZUEVfUkFXKQorCQkJCW9wal9tcWNfYnlwYXNzX2luaXRfZW5jKG1xYyk7CisJCQllbHNlCisJCQkJb3BqX21xY19yZXN0YXJ0X2luaXRfZW5jKG1xYyk7CisJCX0KKworCQlwYXNzLT5kaXN0b3J0aW9uZGVjID0gY3Vtd21zZWRlYzsKKwkJcGFzcy0+cmF0ZSA9IG9wal9tcWNfbnVtYnl0ZXMobXFjKSArIGNvcnJlY3Rpb247CS8qIEZJWE1FICovCisKKwkJLyogQ29kZS1zd2l0Y2ggIlJFU0VUIiAqLworCQlpZiAoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9SRVNFVCkKKwkJCW9wal9tcWNfcmVzZXRfZW5jKG1xYyk7CisJfQorCisJLyogQ29kZSBzd2l0Y2ggIkVSVEVSTSIgKGkuZS4gUFRFUk0pICovCisJaWYgKGNibGtzdHkgJiBKMktfQ0NQX0NCTEtTVFlfUFRFUk0pCisJCW9wal9tcWNfZXJ0ZXJtX2VuYyhtcWMpOworCWVsc2UgLyogRGVmYXVsdCBjb2RpbmcgKi8gaWYgKCEoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9MQVpZKSkKKwkJb3BqX21xY19mbHVzaChtcWMpOworCisJY2Jsay0+dG90YWxwYXNzZXMgPSBwYXNzbm87CisKKwlmb3IgKHBhc3NubyA9IDA7IHBhc3NubzxjYmxrLT50b3RhbHBhc3NlczsgcGFzc25vKyspIHsKKwkJb3BqX3RjZF9wYXNzX3QgKnBhc3MgPSAmY2Jsay0+cGFzc2VzW3Bhc3Nub107CisJCWlmIChwYXNzLT5yYXRlID4gb3BqX21xY19udW1ieXRlcyhtcWMpKQorCQkJcGFzcy0+cmF0ZSA9IG9wal9tcWNfbnVtYnl0ZXMobXFjKTsKKwkJLypQcmV2ZW50aW5nIGdlbmVyYXRpb24gb2YgRkYgYXMgbGFzdCBkYXRhIGJ5dGUgb2YgYSBwYXNzKi8KKwkJaWYoKHBhc3MtPnJhdGU+MSkgJiYgKGNibGstPmRhdGFbcGFzcy0+cmF0ZSAtIDFdID09IDB4RkYpKXsKKwkJCXBhc3MtPnJhdGUtLTsKKwkJfQorCQlwYXNzLT5sZW4gPSBwYXNzLT5yYXRlIC0gKHBhc3NubyA9PSAwID8gMCA6IGNibGstPnBhc3Nlc1twYXNzbm8gLSAxXS5yYXRlKTsKKwl9Cit9CisKKyNpZiAwCit2b2lkIG9wal90MV9kZWNfcmVmcGFzc19zdGVwKCAgIG9wal90MV90ICp0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZsYWdfdCAqZmxhZ3NwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKmRhdGFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgcG9zaGFsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG5lZ2hhbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgdnNjKQoreworCU9QSl9JTlQzMiAgdDsKKwlPUEpfVUlOVDMyIHYsZmxhZzsKKworCW9wal9tcWNfdCAqbXFjID0gdDEtPm1xYzsJLyogTVFDIGNvbXBvbmVudCAqLworCW9wal9yYXdfdCAqcmF3ID0gdDEtPnJhdzsJLyogUkFXIGNvbXBvbmVudCAqLworCisJZmxhZyA9IHZzYyA/ICgoKmZsYWdzcCkgJiAofihUMV9TSUdfUyB8IFQxX1NJR19TRSB8IFQxX1NJR19TVyB8IFQxX1NHTl9TKSkpIDogKCpmbGFnc3ApOworCWlmICgoZmxhZyAmIChUMV9TSUcgfCBUMV9WSVNJVCkpID09IFQxX1NJRykgeworCQlvcGpfbXFjX3NldGN1cmN0eChtcWMsIG9wal90MV9nZXRjdHhub19tYWcoZmxhZykpOwkvKiBFU1NBSSAqLworCQlpZiAodHlwZSA9PSBUMV9UWVBFX1JBVykgeworCQkJdiA9IG9wal9yYXdfZGVjb2RlKHJhdyk7CisJCX0gZWxzZSB7CisJCQl2ID0gb3BqX21xY19kZWNvZGUobXFjKTsKKwkJfQorCQl0ID0gdiA/IHBvc2hhbGYgOiBuZWdoYWxmOworCQkqZGF0YXAgKz0gKmRhdGFwIDwgMCA/IC10IDogdDsKKwkJKmZsYWdzcCB8PSBUMV9SRUZJTkU7CisJfQorfQkJCQkvKiBWU0MgYW5kICBCWVBBU1MgYnkgQW50b25pbiAgKi8KKyNlbmRpZgorCisKKworI2lmIDAKK3ZvaWQgb3BqX3QxX2RlY19zaWdwYXNzX3N0ZXAoICAgb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZmxhZ190ICpmbGFnc3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqZGF0YXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgb3JpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgb25lcGx1c2hhbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgdnNjKQoreworCU9QSl9VSU5UMzIgdiwgZmxhZzsKKworCW9wal9yYXdfdCAqcmF3ID0gdDEtPnJhdzsJLyogUkFXIGNvbXBvbmVudCAqLworCW9wal9tcWNfdCAqbXFjID0gdDEtPm1xYzsJLyogTVFDIGNvbXBvbmVudCAqLworCisJZmxhZyA9IHZzYyA/ICgoKmZsYWdzcCkgJiAofihUMV9TSUdfUyB8IFQxX1NJR19TRSB8IFQxX1NJR19TVyB8IFQxX1NHTl9TKSkpIDogKCpmbGFnc3ApOworCWlmICgoZmxhZyAmIFQxX1NJR19PVEgpICYmICEoZmxhZyAmIChUMV9TSUcgfCBUMV9WSVNJVCkpKSB7CisJCWlmICh0eXBlID09IFQxX1RZUEVfUkFXKSB7CisJCQlpZiAob3BqX3Jhd19kZWNvZGUocmF3KSkgeworCQkJCXYgPSBvcGpfcmF3X2RlY29kZShyYXcpOwkvKiBFU1NBSSAqLworCQkJCSpkYXRhcCA9IHYgPyAtb25lcGx1c2hhbGYgOiBvbmVwbHVzaGFsZjsKKwkJCQlvcGpfdDFfdXBkYXRlZmxhZ3MoZmxhZ3NwLCB2LCB0MS0+ZmxhZ3Nfc3RyaWRlKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCW9wal9tcWNfc2V0Y3VyY3R4KG1xYywgb3BqX3QxX2dldGN0eG5vX3pjKGZsYWcsIG9yaWVudCkpOworCQkJaWYgKG9wal9tcWNfZGVjb2RlKG1xYykpIHsKKwkJCQlvcGpfbXFjX3NldGN1cmN0eChtcWMsIG9wal90MV9nZXRjdHhub19zYyhmbGFnKSk7CisJCQkJdiA9IG9wal9tcWNfZGVjb2RlKG1xYykgXiBvcGpfdDFfZ2V0c3BiKGZsYWcpOworCQkJCSpkYXRhcCA9IHYgPyAtb25lcGx1c2hhbGYgOiBvbmVwbHVzaGFsZjsKKwkJCQlvcGpfdDFfdXBkYXRlZmxhZ3MoZmxhZ3NwLCB2LCB0MS0+ZmxhZ3Nfc3RyaWRlKTsKKwkJCX0KKwkJfQorCQkqZmxhZ3NwIHw9IFQxX1ZJU0lUOworCX0KK30JCQkJLyogVlNDIGFuZCAgQllQQVNTIGJ5IEFudG9uaW4gKi8KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3QxLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvdDEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWJlNzBlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3QxLmgKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgVW5pdmVyc2l0ZSBjYXRob2xpcXVlIGRlIExvdXZhaW4gKFVDTCksIEJlbGdpdW0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBQcm9mZXNzb3IgQmVub2l0IE1hY3EKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDAzLCBEYXZpZCBKYW5zc2VucworICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMsIFlhbm5pY2sgVmVyc2NodWVyZW4KKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA3LCBGcmFuY29pcy1PbGl2aWVyIERldmF1eCAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDE0LCBBbnRvbmluIERlc2NhbXBlCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgX19UMV9ICisjZGVmaW5lIF9fVDFfSAorLyoqCitAZmlsZSB0MS5oCitAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgdGhlIHRpZXItMSBjb2RpbmcgKGNvZGluZyBvZiBjb2RlLWJsb2NrIGNvZWZmaWNpZW50cykgKFQxKQorCitUaGUgZnVuY3Rpb25zIGluIFQxLkMgaGF2ZSBmb3IgZ29hbCB0byByZWFsaXplIHRoZSB0aWVyLTEgY29kaW5nIG9wZXJhdGlvbi4gVGhlIGZ1bmN0aW9ucworaW4gVDEuQyBhcmUgdXNlZCBieSBzb21lIGZ1bmN0aW9uIGluIFRDRC5DLgorKi8KKworLyoqIEBkZWZncm91cCBUMSBUMSAtIEltcGxlbWVudGF0aW9uIG9mIHRoZSB0aWVyLTEgY29kaW5nICovCisvKkB7Ki8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyNkZWZpbmUgVDFfTk1TRURFQ19CSVRTIDcKKworI2RlZmluZSBUMV9TSUdfTkUgMHgwMDAxCS8qKjwgQ29udGV4dCBvcmllbnRhdGlvbiA6IE5vcnRoLUVhc3QgZGlyZWN0aW9uICovCisjZGVmaW5lIFQxX1NJR19TRSAweDAwMDIJLyoqPCBDb250ZXh0IG9yaWVudGF0aW9uIDogU291dGgtRWFzdCBkaXJlY3Rpb24gKi8KKyNkZWZpbmUgVDFfU0lHX1NXIDB4MDAwNAkvKio8IENvbnRleHQgb3JpZW50YXRpb24gOiBTb3V0aC1XZXN0IGRpcmVjdGlvbiAqLworI2RlZmluZSBUMV9TSUdfTlcgMHgwMDA4CS8qKjwgQ29udGV4dCBvcmllbnRhdGlvbiA6IE5vcnRoLVdlc3QgZGlyZWN0aW9uICovCisjZGVmaW5lIFQxX1NJR19OIDB4MDAxMAkJLyoqPCBDb250ZXh0IG9yaWVudGF0aW9uIDogTm9ydGggZGlyZWN0aW9uICovCisjZGVmaW5lIFQxX1NJR19FIDB4MDAyMAkJLyoqPCBDb250ZXh0IG9yaWVudGF0aW9uIDogRWFzdCBkaXJlY3Rpb24gKi8KKyNkZWZpbmUgVDFfU0lHX1MgMHgwMDQwCQkvKio8IENvbnRleHQgb3JpZW50YXRpb24gOiBTb3V0aCBkaXJlY3Rpb24gKi8KKyNkZWZpbmUgVDFfU0lHX1cgMHgwMDgwCQkvKio8IENvbnRleHQgb3JpZW50YXRpb24gOiBXZXN0IGRpcmVjdGlvbiAqLworI2RlZmluZSBUMV9TSUdfT1RIIChUMV9TSUdfTnxUMV9TSUdfTkV8VDFfU0lHX0V8VDFfU0lHX1NFfFQxX1NJR19TfFQxX1NJR19TV3xUMV9TSUdfV3xUMV9TSUdfTlcpCisjZGVmaW5lIFQxX1NJR19QUklNIChUMV9TSUdfTnxUMV9TSUdfRXxUMV9TSUdfU3xUMV9TSUdfVykKKworI2RlZmluZSBUMV9TR05fTiAweDAxMDAKKyNkZWZpbmUgVDFfU0dOX0UgMHgwMjAwCisjZGVmaW5lIFQxX1NHTl9TIDB4MDQwMAorI2RlZmluZSBUMV9TR05fVyAweDA4MDAKKyNkZWZpbmUgVDFfU0dOIChUMV9TR05fTnxUMV9TR05fRXxUMV9TR05fU3xUMV9TR05fVykKKworI2RlZmluZSBUMV9TSUcgMHgxMDAwCisjZGVmaW5lIFQxX1JFRklORSAweDIwMDAKKyNkZWZpbmUgVDFfVklTSVQgMHg0MDAwCisKKyNkZWZpbmUgVDFfTlVNQ1RYU19aQyA5CisjZGVmaW5lIFQxX05VTUNUWFNfU0MgNQorI2RlZmluZSBUMV9OVU1DVFhTX01BRyAzCisjZGVmaW5lIFQxX05VTUNUWFNfQUdHIDEKKyNkZWZpbmUgVDFfTlVNQ1RYU19VTkkgMQorCisjZGVmaW5lIFQxX0NUWE5PX1pDIDAKKyNkZWZpbmUgVDFfQ1RYTk9fU0MgKFQxX0NUWE5PX1pDK1QxX05VTUNUWFNfWkMpCisjZGVmaW5lIFQxX0NUWE5PX01BRyAoVDFfQ1RYTk9fU0MrVDFfTlVNQ1RYU19TQykKKyNkZWZpbmUgVDFfQ1RYTk9fQUdHIChUMV9DVFhOT19NQUcrVDFfTlVNQ1RYU19NQUcpCisjZGVmaW5lIFQxX0NUWE5PX1VOSSAoVDFfQ1RYTk9fQUdHK1QxX05VTUNUWFNfQUdHKQorI2RlZmluZSBUMV9OVU1DVFhTIChUMV9DVFhOT19VTkkrVDFfTlVNQ1RYU19VTkkpCisKKyNkZWZpbmUgVDFfTk1TRURFQ19GUkFDQklUUyAoVDFfTk1TRURFQ19CSVRTLTEpCisKKyNkZWZpbmUgVDFfVFlQRV9NUSAwCS8qKjwgTm9ybWFsIGNvZGluZyB1c2luZyBlbnRyb3B5IGNvZGVyICovCisjZGVmaW5lIFQxX1RZUEVfUkFXIDEJLyoqPCBObyBlbmNvZGluZyB0aGUgaW5mb3JtYXRpb24gaXMgc3RvcmUgdW5kZXIgcmF3IGZvcm1hdCBpbiBjb2Rlc3RyZWFtIChtb2RlIHN3aXRjaCBSQVcpKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordHlwZWRlZiBPUEpfSU5UMTYgb3BqX2ZsYWdfdDsKKworLyoqCitUaWVyLTEgY29kaW5nIChjb2Rpbmcgb2YgY29kZS1ibG9jayBjb2VmZmljaWVudHMpCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX3QxIHsKKworCS8qKiBNUUMgY29tcG9uZW50ICovCisJb3BqX21xY190ICptcWM7CisJLyoqIFJBVyBjb21wb25lbnQgKi8KKwlvcGpfcmF3X3QgKnJhdzsKKworICAgIE9QSl9JTlQzMiAqZGF0YTsKKwlvcGpfZmxhZ190ICpmbGFnczsKKwlPUEpfVUlOVDMyIHc7CisJT1BKX1VJTlQzMiBoOworCU9QSl9VSU5UMzIgZGF0YXNpemU7CisJT1BKX1VJTlQzMiBmbGFnc3NpemU7CisJT1BKX1VJTlQzMiBmbGFnc19zdHJpZGU7Cit9IG9wal90MV90OworCisjZGVmaW5lIE1BQ1JPX3QxX2ZsYWdzKHgseSkgdDEtPmZsYWdzWygoeCkqKHQxLT5mbGFnc19zdHJpZGUpKSsoeSldCisKKy8qKiBAbmFtZSBFeHBvcnRlZCBmdW5jdGlvbnMgKi8KKy8qQHsqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCitFbmNvZGUgdGhlIGNvZGUtYmxvY2tzIG9mIGEgdGlsZQorQHBhcmFtIHQxIFQxIGhhbmRsZQorQHBhcmFtIHRpbGUgVGhlIHRpbGUgdG8gZW5jb2RlCitAcGFyYW0gdGNwIFRpbGUgY29kaW5nIHBhcmFtZXRlcnMKK0BwYXJhbSBtY3Rfbm9ybXMgIEZJWE1FIERPQworKi8KK09QSl9CT09MIG9wal90MV9lbmNvZGVfY2Jsa3MoICAgb3BqX3QxX3QgKnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3RpbGVfdCAqdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjcF90ICp0Y3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9QSl9GTE9BVDY0ICogbWN0X25vcm1zKTsKKworLyoqCitEZWNvZGUgdGhlIGNvZGUtYmxvY2tzIG9mIGEgdGlsZQorQHBhcmFtIHQxIFQxIGhhbmRsZQorQHBhcmFtIHRpbGVjIFRoZSB0aWxlIHRvIGRlY29kZQorQHBhcmFtIHRjY3AgVGlsZSBjb2RpbmcgcGFyYW1ldGVycworKi8KK09QSl9CT09MIG9wal90MV9kZWNvZGVfY2Jsa3MoICAgb3BqX3QxX3QqIHQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3RpbGVjb21wX3QqIHRpbGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNjcF90KiB0Y2NwKTsKKworCisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBUaWVyIDEgaGFuZGxlCisgKiBhbmQgaW5pdGlhbGl6ZXMgdGhlIGxvb2stdXAgdGFibGVzIG9mIHRoZSBUaWVyLTEgY29kZXIvZGVjb2RlcgorICogQHJldHVybiBhIG5ldyBUMSBoYW5kbGUgaWYgc3VjY2Vzc2Z1bCwgcmV0dXJucyBOVUxMIG90aGVyd2lzZQorKi8KK29wal90MV90KiBvcGpfdDFfY3JlYXRlKHZvaWQpOworCisvKioKKyAqIERlc3Ryb3lzIGEgcHJldmlvdXNseSBjcmVhdGVkIFQxIGhhbmRsZQorICoKKyAqIEBwYXJhbSBwX3QxIFRpZXIgMSBoYW5kbGUgdG8gZGVzdHJveQorKi8KK3ZvaWQgb3BqX3QxX2Rlc3Ryb3kob3BqX3QxX3QgKnBfdDEpOworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qQH0qLworCisvKkB9Ki8KKworI2VuZGlmIC8qIF9fVDFfSCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3QxX2dlbmVyYXRlX2x1dHMuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90MV9nZW5lcmF0ZV9sdXRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk5N2QzOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90MV9nZW5lcmF0ZV9sdXRzLmMKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgVW5pdmVyc2l0ZSBjYXRob2xpcXVlIGRlIExvdXZhaW4gKFVDTCksIEJlbGdpdW0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBQcm9mZXNzb3IgQmVub2l0IE1hY3EKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDAzLCBEYXZpZCBKYW5zc2VucworICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMsIFlhbm5pY2sgVmVyc2NodWVyZW4KKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA3LCBGcmFuY29pcy1PbGl2aWVyIERldmF1eCAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDE0LCBBbnRvbmluIERlc2NhbXBlCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIENvcHlyaWdodCAoYykgMjAwNywgQ2FsbHVtIExlcndpY2sgPHNlZ0BoYXh4ZWQuY29tPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAib3BqX2luY2x1ZGVzLmgiCisKK3N0YXRpYyBpbnQgdDFfaW5pdF9jdHhub196YyhpbnQgZiwgaW50IG9yaWVudCkgeworCWludCBoLCB2LCBkLCBuLCB0LCBodjsKKwluID0gMDsKKwloID0gKChmICYgVDFfU0lHX1cpICE9IDApICsgKChmICYgVDFfU0lHX0UpICE9IDApOworCXYgPSAoKGYgJiBUMV9TSUdfTikgIT0gMCkgKyAoKGYgJiBUMV9TSUdfUykgIT0gMCk7CisJZCA9ICgoZiAmIFQxX1NJR19OVykgIT0gMCkgKyAoKGYgJiBUMV9TSUdfTkUpICE9IDApICsgKChmICYgVDFfU0lHX1NFKSAhPSAwKSArICgoZiAmIFQxX1NJR19TVykgIT0gMCk7CisKKwlzd2l0Y2ggKG9yaWVudCkgeworCQljYXNlIDI6CisJCQl0ID0gaDsKKwkJCWggPSB2OworCQkJdiA9IHQ7CisJCWNhc2UgMDoKKwkJY2FzZSAxOgorCQkJaWYgKCFoKSB7CisJCQkJaWYgKCF2KSB7CisJCQkJCWlmICghZCkKKwkJCQkJCW4gPSAwOworCQkJCQllbHNlIGlmIChkID09IDEpCisJCQkJCQluID0gMTsKKwkJCQkJZWxzZQorCQkJCQkJbiA9IDI7CisJCQkJfSBlbHNlIGlmICh2ID09IDEpIHsKKwkJCQkJbiA9IDM7CisJCQkJfSBlbHNlIHsKKwkJCQkJbiA9IDQ7CisJCQkJfQorCQkJfSBlbHNlIGlmIChoID09IDEpIHsKKwkJCQlpZiAoIXYpIHsKKwkJCQkJaWYgKCFkKQorCQkJCQkJbiA9IDU7CisJCQkJCWVsc2UKKwkJCQkJCW4gPSA2OworCQkJCX0gZWxzZSB7CisJCQkJCW4gPSA3OworCQkJCX0KKwkJCX0gZWxzZQorCQkJCW4gPSA4OworCQkJYnJlYWs7CisJCWNhc2UgMzoKKwkJCWh2ID0gaCArIHY7CisJCQlpZiAoIWQpIHsKKwkJCQlpZiAoIWh2KSB7CisJCQkJCW4gPSAwOworCQkJCX0gZWxzZSBpZiAoaHYgPT0gMSkgeworCQkJCQluID0gMTsKKwkJCQl9IGVsc2UgeworCQkJCQluID0gMjsKKwkJCQl9CisJCQl9IGVsc2UgaWYgKGQgPT0gMSkgeworCQkJCWlmICghaHYpIHsKKwkJCQkJbiA9IDM7CisJCQkJfSBlbHNlIGlmIChodiA9PSAxKSB7CisJCQkJCW4gPSA0OworCQkJCX0gZWxzZSB7CisJCQkJCW4gPSA1OworCQkJCX0KKwkJCX0gZWxzZSBpZiAoZCA9PSAyKSB7CisJCQkJaWYgKCFodikgeworCQkJCQluID0gNjsKKwkJCQl9IGVsc2UgeworCQkJCQluID0gNzsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCW4gPSA4OworCQkJfQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIChUMV9DVFhOT19aQyArIG4pOworfQorCitzdGF0aWMgaW50IHQxX2luaXRfY3R4bm9fc2MoaW50IGYpIHsKKwlpbnQgaGMsIHZjLCBuOworCW4gPSAwOworCisJaGMgPSBvcGpfaW50X21pbigoKGYgJiAoVDFfU0lHX0UgfCBUMV9TR05fRSkpID09CisJCQkJVDFfU0lHX0UpICsgKChmICYgKFQxX1NJR19XIHwgVDFfU0dOX1cpKSA9PSBUMV9TSUdfVyksCisJCQkxKSAtIG9wal9pbnRfbWluKCgoZiAmIChUMV9TSUdfRSB8IFQxX1NHTl9FKSkgPT0KKwkJCQkJKFQxX1NJR19FIHwgVDFfU0dOX0UpKSArCisJCQkJKChmICYgKFQxX1NJR19XIHwgVDFfU0dOX1cpKSA9PQorCQkJCSAoVDFfU0lHX1cgfCBUMV9TR05fVykpLCAxKTsKKworCXZjID0gb3BqX2ludF9taW4oKChmICYgKFQxX1NJR19OIHwgVDFfU0dOX04pKSA9PQorCQkJCVQxX1NJR19OKSArICgoZiAmIChUMV9TSUdfUyB8IFQxX1NHTl9TKSkgPT0gVDFfU0lHX1MpLAorCQkJMSkgLSBvcGpfaW50X21pbigoKGYgJiAoVDFfU0lHX04gfCBUMV9TR05fTikpID09CisJCQkJCShUMV9TSUdfTiB8IFQxX1NHTl9OKSkgKworCQkJCSgoZiAmIChUMV9TSUdfUyB8IFQxX1NHTl9TKSkgPT0KKwkJCQkgKFQxX1NJR19TIHwgVDFfU0dOX1MpKSwgMSk7CisKKwlpZiAoaGMgPCAwKSB7CisJCWhjID0gLWhjOworCQl2YyA9IC12YzsKKwl9CisJaWYgKCFoYykgeworCQlpZiAodmMgPT0gLTEpCisJCQluID0gMTsKKwkJZWxzZSBpZiAoIXZjKQorCQkJbiA9IDA7CisJCWVsc2UKKwkJCW4gPSAxOworCX0gZWxzZSBpZiAoaGMgPT0gMSkgeworCQlpZiAodmMgPT0gLTEpCisJCQluID0gMjsKKwkJZWxzZSBpZiAoIXZjKQorCQkJbiA9IDM7CisJCWVsc2UKKwkJCW4gPSA0OworCX0KKworCXJldHVybiAoVDFfQ1RYTk9fU0MgKyBuKTsKK30KKworc3RhdGljIGludCB0MV9pbml0X3NwYihpbnQgZikgeworCWludCBoYywgdmMsIG47CisKKwloYyA9IG9wal9pbnRfbWluKCgoZiAmIChUMV9TSUdfRSB8IFQxX1NHTl9FKSkgPT0KKwkJCQlUMV9TSUdfRSkgKyAoKGYgJiAoVDFfU0lHX1cgfCBUMV9TR05fVykpID09IFQxX1NJR19XKSwKKwkJCTEpIC0gb3BqX2ludF9taW4oKChmICYgKFQxX1NJR19FIHwgVDFfU0dOX0UpKSA9PQorCQkJCQkoVDFfU0lHX0UgfCBUMV9TR05fRSkpICsKKwkJCQkoKGYgJiAoVDFfU0lHX1cgfCBUMV9TR05fVykpID09CisJCQkJIChUMV9TSUdfVyB8IFQxX1NHTl9XKSksIDEpOworCisJdmMgPSBvcGpfaW50X21pbigoKGYgJiAoVDFfU0lHX04gfCBUMV9TR05fTikpID09CisJCQkJVDFfU0lHX04pICsgKChmICYgKFQxX1NJR19TIHwgVDFfU0dOX1MpKSA9PSBUMV9TSUdfUyksCisJCQkxKSAtIG9wal9pbnRfbWluKCgoZiAmIChUMV9TSUdfTiB8IFQxX1NHTl9OKSkgPT0KKwkJCQkJKFQxX1NJR19OIHwgVDFfU0dOX04pKSArCisJCQkJKChmICYgKFQxX1NJR19TIHwgVDFfU0dOX1MpKSA9PQorCQkJCSAoVDFfU0lHX1MgfCBUMV9TR05fUykpLCAxKTsKKworCWlmICghaGMgJiYgIXZjKQorCQluID0gMDsKKwllbHNlCisJCW4gPSAoIShoYyA+IDAgfHwgKCFoYyAmJiB2YyA+IDApKSk7CisKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIHZvaWQgZHVtcF9hcnJheTE2KGludCBhcnJheVtdLGludCBzaXplKXsKKwlpbnQgaTsKKwktLXNpemU7CisJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgeworCQlwcmludGYoIjB4JTA0eCwgIiwgYXJyYXlbaV0pOworCQlpZighKChpKzEpJjB4NykpCisJCQlwcmludGYoIlxuICAiKTsKKwl9CisJcHJpbnRmKCIweCUwNHhcbn07XG5cbiIsIGFycmF5W3NpemVdKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludCBpLCBqOworCWRvdWJsZSB1LCB2LCB0OworCisJaW50IGx1dF9jdHhub196Y1sxMDI0XTsKKwlpbnQgbHV0X25tc2VkZWNfc2lnWzEgPDwgVDFfTk1TRURFQ19CSVRTXTsKKwlpbnQgbHV0X25tc2VkZWNfc2lnMFsxIDw8IFQxX05NU0VERUNfQklUU107CisJaW50IGx1dF9ubXNlZGVjX3JlZlsxIDw8IFQxX05NU0VERUNfQklUU107CisJaW50IGx1dF9ubXNlZGVjX3JlZjBbMSA8PCBUMV9OTVNFREVDX0JJVFNdOworICAodm9pZClhcmdjOyAodm9pZClhcmd2OworCisJcHJpbnRmKCIvKiBUaGlzIGZpbGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHQxX2dlbmVyYXRlX2x1dHMuYyAqL1xuXG4iKTsKKworCS8qIGx1dF9jdHhub196YyAqLworCWZvciAoaiA9IDA7IGogPCA0OyArK2opIHsKKwkJZm9yIChpID0gMDsgaSA8IDI1NjsgKytpKSB7CisJCQlpbnQgb3JpZW50ID0gajsKKwkJCWlmIChvcmllbnQgPT0gMikgeworCQkJCW9yaWVudCA9IDE7CisJCQl9IGVsc2UgaWYgKG9yaWVudCA9PSAxKSB7CisJCQkJb3JpZW50ID0gMjsKKwkJCX0KKwkJCWx1dF9jdHhub196Y1sob3JpZW50IDw8IDgpIHwgaV0gPSB0MV9pbml0X2N0eG5vX3pjKGksIGopOworCQl9CisJfQorCisJcHJpbnRmKCJzdGF0aWMgT1BKX0JZVEUgbHV0X2N0eG5vX3pjWzEwMjRdID0ge1xuICAiKTsKKwlmb3IgKGkgPSAwOyBpIDwgMTAyMzsgKytpKSB7CisJCXByaW50ZigiJWksICIsIGx1dF9jdHhub196Y1tpXSk7CisJCWlmKCEoKGkrMSkmMHgxZikpCisJCQlwcmludGYoIlxuICAiKTsKKwl9CisJcHJpbnRmKCIlaVxufTtcblxuIiwgbHV0X2N0eG5vX3pjWzEwMjNdKTsKKworCS8qIGx1dF9jdHhub19zYyAqLworCXByaW50Zigic3RhdGljIE9QSl9CWVRFIGx1dF9jdHhub19zY1syNTZdID0ge1xuICAiKTsKKwlmb3IgKGkgPSAwOyBpIDwgMjU1OyArK2kpIHsKKwkJcHJpbnRmKCIweCV4LCAiLCB0MV9pbml0X2N0eG5vX3NjKGkgPDwgNCkpOworCQlpZighKChpKzEpJjB4ZikpCisJCQlwcmludGYoIlxuICAiKTsKKwl9CisJcHJpbnRmKCIweCV4XG59O1xuXG4iLCB0MV9pbml0X2N0eG5vX3NjKDI1NSA8PCA0KSk7CisKKwkvKiBsdXRfc3BiICovCisJcHJpbnRmKCJzdGF0aWMgT1BKX0JZVEUgbHV0X3NwYlsyNTZdID0ge1xuICAiKTsKKwlmb3IgKGkgPSAwOyBpIDwgMjU1OyArK2kpIHsKKwkJcHJpbnRmKCIlaSwgIiwgdDFfaW5pdF9zcGIoaSA8PCA0KSk7CisJCWlmKCEoKGkrMSkmMHgxZikpCisJCQlwcmludGYoIlxuICAiKTsKKwl9CisJcHJpbnRmKCIlaVxufTtcblxuIiwgdDFfaW5pdF9zcGIoMjU1IDw8IDQpKTsKKworCS8qIEZJWE1FIEZJWE1FIEZJWE1FICovCisJLyogZnByaW50ZihzdGRvdXQsIm5tc2VkZWMgbHV0czpcbiIpOyAqLworCWZvciAoaSA9IDA7IGkgPCAoMSA8PCBUMV9OTVNFREVDX0JJVFMpOyArK2kpIHsKKwkJdCA9IGkgLyBwb3coMiwgVDFfTk1TRURFQ19GUkFDQklUUyk7CisJCXUgPSB0OworCQl2ID0gdCAtIDEuNTsKKwkJbHV0X25tc2VkZWNfc2lnW2ldID0gCisJCQlvcGpfaW50X21heCgwLCAKKwkJCQkJKGludCkgKGZsb29yKCh1ICogdSAtIHYgKiB2KSAqIHBvdygyLCBUMV9OTVNFREVDX0ZSQUNCSVRTKSArIDAuNSkgLyBwb3coMiwgVDFfTk1TRURFQ19GUkFDQklUUykgKiA4MTkyLjApKTsKKwkJbHV0X25tc2VkZWNfc2lnMFtpXSA9CisJCQlvcGpfaW50X21heCgwLAorCQkJCQkoaW50KSAoZmxvb3IoKHUgKiB1KSAqIHBvdygyLCBUMV9OTVNFREVDX0ZSQUNCSVRTKSArIDAuNSkgLyBwb3coMiwgVDFfTk1TRURFQ19GUkFDQklUUykgKiA4MTkyLjApKTsKKwkJdSA9IHQgLSAxLjA7CisJCWlmIChpICYgKDEgPDwgKFQxX05NU0VERUNfQklUUyAtIDEpKSkgeworCQkJdiA9IHQgLSAxLjU7CisJCX0gZWxzZSB7CisJCQl2ID0gdCAtIDAuNTsKKwkJfQorCQlsdXRfbm1zZWRlY19yZWZbaV0gPQorCQkJb3BqX2ludF9tYXgoMCwKKwkJCQkJKGludCkgKGZsb29yKCh1ICogdSAtIHYgKiB2KSAqIHBvdygyLCBUMV9OTVNFREVDX0ZSQUNCSVRTKSArIDAuNSkgLyBwb3coMiwgVDFfTk1TRURFQ19GUkFDQklUUykgKiA4MTkyLjApKTsKKwkJbHV0X25tc2VkZWNfcmVmMFtpXSA9CisJCQlvcGpfaW50X21heCgwLAorCQkJCQkoaW50KSAoZmxvb3IoKHUgKiB1KSAqIHBvdygyLCBUMV9OTVNFREVDX0ZSQUNCSVRTKSArIDAuNSkgLyBwb3coMiwgVDFfTk1TRURFQ19GUkFDQklUUykgKiA4MTkyLjApKTsKKwl9CisKKwlwcmludGYoInN0YXRpYyBPUEpfSU5UMTYgbHV0X25tc2VkZWNfc2lnWzEgPDwgVDFfTk1TRURFQ19CSVRTXSA9IHtcbiAgIik7CisJZHVtcF9hcnJheTE2KGx1dF9ubXNlZGVjX3NpZywgMSA8PCBUMV9OTVNFREVDX0JJVFMpOworCisJcHJpbnRmKCJzdGF0aWMgT1BKX0lOVDE2IGx1dF9ubXNlZGVjX3NpZzBbMSA8PCBUMV9OTVNFREVDX0JJVFNdID0ge1xuICAiKTsKKwlkdW1wX2FycmF5MTYobHV0X25tc2VkZWNfc2lnMCwgMSA8PCBUMV9OTVNFREVDX0JJVFMpOworCisJcHJpbnRmKCJzdGF0aWMgT1BKX0lOVDE2IGx1dF9ubXNlZGVjX3JlZlsxIDw8IFQxX05NU0VERUNfQklUU10gPSB7XG4gICIpOworCWR1bXBfYXJyYXkxNihsdXRfbm1zZWRlY19yZWYsIDEgPDwgVDFfTk1TRURFQ19CSVRTKTsKKworCXByaW50Zigic3RhdGljIE9QSl9JTlQxNiBsdXRfbm1zZWRlY19yZWYwWzEgPDwgVDFfTk1TRURFQ19CSVRTXSA9IHtcbiAgIik7CisJZHVtcF9hcnJheTE2KGx1dF9ubXNlZGVjX3JlZjAsIDEgPDwgVDFfTk1TRURFQ19CSVRTKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3QxX2x1dHMuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90MV9sdXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc3NzZiNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90MV9sdXRzLmgKQEAgLTAsMCArMSwxNDMgQEAKKy8qIFRoaXMgZmlsZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdDFfZ2VuZXJhdGVfbHV0cy5jICovCisKK3N0YXRpYyBPUEpfQllURSBsdXRfY3R4bm9femNbMTAyNF0gPSB7CisgIDAsIDEsIDEsIDIsIDEsIDIsIDIsIDIsIDEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIAorICA1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgCisgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICA1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgCisgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCAKKyAgMCwgMSwgMSwgMiwgMSwgMiwgMiwgMiwgMSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNSwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICA1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCAKKyAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgCisgIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgCisgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIAorICAwLCAxLCAxLCAyLCAxLCAyLCAyLCAyLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAKKyAgNSwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIAorICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgNSwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIAorICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgCisgIDAsIDMsIDMsIDYsIDMsIDYsIDYsIDgsIDMsIDYsIDYsIDgsIDYsIDgsIDgsIDgsIDEsIDQsIDQsIDcsIDQsIDcsIDcsIDgsIDQsIDcsIDcsIDgsIDcsIDgsIDgsIDgsIAorICAxLCA0LCA0LCA3LCA0LCA3LCA3LCA4LCA0LCA3LCA3LCA4LCA3LCA4LCA4LCA4LCAyLCA1LCA1LCA3LCA1LCA3LCA3LCA4LCA1LCA3LCA3LCA4LCA3LCA4LCA4LCA4LCAKKyAgMSwgNCwgNCwgNywgNCwgNywgNywgOCwgNCwgNywgNywgOCwgNywgOCwgOCwgOCwgMiwgNSwgNSwgNywgNSwgNywgNywgOCwgNSwgNywgNywgOCwgNywgOCwgOCwgOCwgCisgIDIsIDUsIDUsIDcsIDUsIDcsIDcsIDgsIDUsIDcsIDcsIDgsIDcsIDgsIDgsIDgsIDIsIDUsIDUsIDcsIDUsIDcsIDcsIDgsIDUsIDcsIDcsIDgsIDcsIDgsIDgsIDgsIAorICAxLCA0LCA0LCA3LCA0LCA3LCA3LCA4LCA0LCA3LCA3LCA4LCA3LCA4LCA4LCA4LCAyLCA1LCA1LCA3LCA1LCA3LCA3LCA4LCA1LCA3LCA3LCA4LCA3LCA4LCA4LCA4LCAKKyAgMiwgNSwgNSwgNywgNSwgNywgNywgOCwgNSwgNywgNywgOCwgNywgOCwgOCwgOCwgMiwgNSwgNSwgNywgNSwgNywgNywgOCwgNSwgNywgNywgOCwgNywgOCwgOCwgOCwgCisgIDIsIDUsIDUsIDcsIDUsIDcsIDcsIDgsIDUsIDcsIDcsIDgsIDcsIDgsIDgsIDgsIDIsIDUsIDUsIDcsIDUsIDcsIDcsIDgsIDUsIDcsIDcsIDgsIDcsIDgsIDgsIDgsIAorICAyLCA1LCA1LCA3LCA1LCA3LCA3LCA4LCA1LCA3LCA3LCA4LCA3LCA4LCA4LCA4LCAyLCA1LCA1LCA3LCA1LCA3LCA3LCA4LCA1LCA3LCA3LCA4LCA3LCA4LCA4LCA4Cit9OworCitzdGF0aWMgT1BKX0JZVEUgbHV0X2N0eG5vX3NjWzI1Nl0gPSB7CisgIDB4OSwgMHhhLCAweGMsIDB4ZCwgMHhhLCAweGEsIDB4ZCwgMHhkLCAweGMsIDB4ZCwgMHhjLCAweGQsIDB4ZCwgMHhkLCAweGQsIDB4ZCwgCisgIDB4OSwgMHhhLCAweGMsIDB4YiwgMHhhLCAweDksIDB4ZCwgMHhjLCAweGMsIDB4YiwgMHhjLCAweGIsIDB4ZCwgMHhjLCAweGQsIDB4YywgCisgIDB4OSwgMHhhLCAweGMsIDB4YiwgMHhhLCAweGEsIDB4YiwgMHhiLCAweGMsIDB4ZCwgMHg5LCAweGEsIDB4ZCwgMHhkLCAweGEsIDB4YSwgCisgIDB4OSwgMHhhLCAweGMsIDB4ZCwgMHhhLCAweDksIDB4YiwgMHhjLCAweGMsIDB4YiwgMHg5LCAweGEsIDB4ZCwgMHhjLCAweGEsIDB4OSwgCisgIDB4OSwgMHhhLCAweGMsIDB4ZCwgMHhhLCAweDksIDB4YiwgMHhjLCAweGMsIDB4ZCwgMHhjLCAweGQsIDB4YiwgMHhjLCAweGIsIDB4YywgCisgIDB4OSwgMHhhLCAweGMsIDB4YiwgMHhhLCAweGEsIDB4YiwgMHhiLCAweGMsIDB4YiwgMHhjLCAweGIsIDB4YiwgMHhiLCAweGIsIDB4YiwgCisgIDB4OSwgMHhhLCAweGMsIDB4YiwgMHhhLCAweDksIDB4ZCwgMHhjLCAweGMsIDB4ZCwgMHg5LCAweGEsIDB4YiwgMHhjLCAweGEsIDB4OSwgCisgIDB4OSwgMHhhLCAweGMsIDB4ZCwgMHhhLCAweGEsIDB4ZCwgMHhkLCAweGMsIDB4YiwgMHg5LCAweGEsIDB4YiwgMHhiLCAweGEsIDB4YSwgCisgIDB4OSwgMHhhLCAweGMsIDB4ZCwgMHhhLCAweGEsIDB4ZCwgMHhkLCAweGMsIDB4YiwgMHg5LCAweGEsIDB4YiwgMHhiLCAweGEsIDB4YSwgCisgIDB4OSwgMHhhLCAweGMsIDB4YiwgMHhhLCAweDksIDB4ZCwgMHhjLCAweGMsIDB4ZCwgMHg5LCAweGEsIDB4YiwgMHhjLCAweGEsIDB4OSwgCisgIDB4OSwgMHhhLCAweGMsIDB4YiwgMHhhLCAweGEsIDB4YiwgMHhiLCAweGMsIDB4YiwgMHhjLCAweGIsIDB4YiwgMHhiLCAweGIsIDB4YiwgCisgIDB4OSwgMHhhLCAweGMsIDB4ZCwgMHhhLCAweDksIDB4YiwgMHhjLCAweGMsIDB4ZCwgMHhjLCAweGQsIDB4YiwgMHhjLCAweGIsIDB4YywgCisgIDB4OSwgMHhhLCAweGMsIDB4ZCwgMHhhLCAweDksIDB4YiwgMHhjLCAweGMsIDB4YiwgMHg5LCAweGEsIDB4ZCwgMHhjLCAweGEsIDB4OSwgCisgIDB4OSwgMHhhLCAweGMsIDB4YiwgMHhhLCAweGEsIDB4YiwgMHhiLCAweGMsIDB4ZCwgMHg5LCAweGEsIDB4ZCwgMHhkLCAweGEsIDB4YSwgCisgIDB4OSwgMHhhLCAweGMsIDB4YiwgMHhhLCAweDksIDB4ZCwgMHhjLCAweGMsIDB4YiwgMHhjLCAweGIsIDB4ZCwgMHhjLCAweGQsIDB4YywgCisgIDB4OSwgMHhhLCAweGMsIDB4ZCwgMHhhLCAweGEsIDB4ZCwgMHhkLCAweGMsIDB4ZCwgMHhjLCAweGQsIDB4ZCwgMHhkLCAweGQsIDB4ZAorfTsKKworc3RhdGljIE9QSl9CWVRFIGx1dF9zcGJbMjU2XSA9IHsKKyAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgIDAsIDAsIDEsIDEsIDAsIDAsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDAsIDAsIDEsIDEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIAorICAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgMCwgMCwgMSwgMSwgMSwgMCwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMSwgMSwgCisgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDAsIDAsIDEsIDEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDAsIDEsIDEsIDEsIDAsIDAsIAorICAwLCAwLCAxLCAxLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAxLCAxLCAxLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMSwgMCwgMCwgMSwgMSwgMSwgMCwgMCwgMSwgMCwgMCwgMSwgMSwgMCwgMCwgMSwgMSwgMCwgMSwgMSwgMSwgMSwgMSwgCisgIDAsIDAsIDEsIDEsIDEsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEKK307CisKK3N0YXRpYyBPUEpfSU5UMTYgbHV0X25tc2VkZWNfc2lnWzEgPDwgVDFfTk1TRURFQ19CSVRTXSA9IHsKKyAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIAorICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgCisgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAKKyAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIAorICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgCisgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAKKyAgMHgwMDAwLCAweDAxODAsIDB4MDMwMCwgMHgwNDgwLCAweDA2MDAsIDB4MDc4MCwgMHgwOTAwLCAweDBhODAsIAorICAweDBjMDAsIDB4MGQ4MCwgMHgwZjAwLCAweDEwODAsIDB4MTIwMCwgMHgxMzgwLCAweDE1MDAsIDB4MTY4MCwgCisgIDB4MTgwMCwgMHgxOTgwLCAweDFiMDAsIDB4MWM4MCwgMHgxZTAwLCAweDFmODAsIDB4MjEwMCwgMHgyMjgwLCAKKyAgMHgyNDAwLCAweDI1ODAsIDB4MjcwMCwgMHgyODgwLCAweDJhMDAsIDB4MmI4MCwgMHgyZDAwLCAweDJlODAsIAorICAweDMwMDAsIDB4MzE4MCwgMHgzMzAwLCAweDM0ODAsIDB4MzYwMCwgMHgzNzgwLCAweDM5MDAsIDB4M2E4MCwgCisgIDB4M2MwMCwgMHgzZDgwLCAweDNmMDAsIDB4NDA4MCwgMHg0MjAwLCAweDQzODAsIDB4NDUwMCwgMHg0NjgwLCAKKyAgMHg0ODAwLCAweDQ5ODAsIDB4NGIwMCwgMHg0YzgwLCAweDRlMDAsIDB4NGY4MCwgMHg1MTAwLCAweDUyODAsIAorICAweDU0MDAsIDB4NTU4MCwgMHg1NzAwLCAweDU4ODAsIDB4NWEwMCwgMHg1YjgwLCAweDVkMDAsIDB4NWU4MCwgCisgIDB4NjAwMCwgMHg2MTgwLCAweDYzMDAsIDB4NjQ4MCwgMHg2NjAwLCAweDY3ODAsIDB4NjkwMCwgMHg2YTgwLCAKKyAgMHg2YzAwLCAweDZkODAsIDB4NmYwMCwgMHg3MDgwLCAweDcyMDAsIDB4NzM4MCwgMHg3NTAwLCAweDc2ODAKK307CisKK3N0YXRpYyBPUEpfSU5UMTYgbHV0X25tc2VkZWNfc2lnMFsxIDw8IFQxX05NU0VERUNfQklUU10gPSB7CisgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDA4MCwgMHgwMDgwLCAKKyAgMHgwMDgwLCAweDAwODAsIDB4MDEwMCwgMHgwMTAwLCAweDAxMDAsIDB4MDE4MCwgMHgwMTgwLCAweDAyMDAsIAorICAweDAyMDAsIDB4MDI4MCwgMHgwMjgwLCAweDAzMDAsIDB4MDMwMCwgMHgwMzgwLCAweDA0MDAsIDB4MDQwMCwgCisgIDB4MDQ4MCwgMHgwNTAwLCAweDA1ODAsIDB4MDU4MCwgMHgwNjAwLCAweDA2ODAsIDB4MDcwMCwgMHgwNzgwLCAKKyAgMHgwODAwLCAweDA4ODAsIDB4MDkwMCwgMHgwOTgwLCAweDBhMDAsIDB4MGE4MCwgMHgwYjgwLCAweDBjMDAsIAorICAweDBjODAsIDB4MGQwMCwgMHgwZTAwLCAweDBlODAsIDB4MGYwMCwgMHgxMDAwLCAweDEwODAsIDB4MTE4MCwgCisgIDB4MTIwMCwgMHgxMzAwLCAweDEzODAsIDB4MTQ4MCwgMHgxNTAwLCAweDE2MDAsIDB4MTcwMCwgMHgxNzgwLCAKKyAgMHgxODgwLCAweDE5ODAsIDB4MWE4MCwgMHgxYjAwLCAweDFjMDAsIDB4MWQwMCwgMHgxZTAwLCAweDFmMDAsIAorICAweDIwMDAsIDB4MjEwMCwgMHgyMjAwLCAweDIzMDAsIDB4MjQwMCwgMHgyNTAwLCAweDI2ODAsIDB4Mjc4MCwgCisgIDB4Mjg4MCwgMHgyOTgwLCAweDJiMDAsIDB4MmMwMCwgMHgyZDAwLCAweDJlODAsIDB4MmY4MCwgMHgzMTAwLCAKKyAgMHgzMjAwLCAweDMzODAsIDB4MzQ4MCwgMHgzNjAwLCAweDM3MDAsIDB4Mzg4MCwgMHgzYTAwLCAweDNiMDAsIAorICAweDNjODAsIDB4M2UwMCwgMHgzZjgwLCAweDQwODAsIDB4NDIwMCwgMHg0MzgwLCAweDQ1MDAsIDB4NDY4MCwgCisgIDB4NDgwMCwgMHg0OTgwLCAweDRiMDAsIDB4NGM4MCwgMHg0ZTAwLCAweDRmODAsIDB4NTE4MCwgMHg1MzAwLCAKKyAgMHg1NDgwLCAweDU2MDAsIDB4NTgwMCwgMHg1OTgwLCAweDViMDAsIDB4NWQwMCwgMHg1ZTgwLCAweDYwODAsIAorICAweDYyMDAsIDB4NjQwMCwgMHg2NTgwLCAweDY3ODAsIDB4NjkwMCwgMHg2YjAwLCAweDZkMDAsIDB4NmU4MCwgCisgIDB4NzA4MCwgMHg3MjgwLCAweDc0ODAsIDB4NzYwMCwgMHg3ODAwLCAweDdhMDAsIDB4N2MwMCwgMHg3ZTAwCit9OworCitzdGF0aWMgT1BKX0lOVDE2IGx1dF9ubXNlZGVjX3JlZlsxIDw8IFQxX05NU0VERUNfQklUU10gPSB7CisgIDB4MTgwMCwgMHgxNzgwLCAweDE3MDAsIDB4MTY4MCwgMHgxNjAwLCAweDE1ODAsIDB4MTUwMCwgMHgxNDgwLCAKKyAgMHgxNDAwLCAweDEzODAsIDB4MTMwMCwgMHgxMjgwLCAweDEyMDAsIDB4MTE4MCwgMHgxMTAwLCAweDEwODAsIAorICAweDEwMDAsIDB4MGY4MCwgMHgwZjAwLCAweDBlODAsIDB4MGUwMCwgMHgwZDgwLCAweDBkMDAsIDB4MGM4MCwgCisgIDB4MGMwMCwgMHgwYjgwLCAweDBiMDAsIDB4MGE4MCwgMHgwYTAwLCAweDA5ODAsIDB4MDkwMCwgMHgwODgwLCAKKyAgMHgwODAwLCAweDA3ODAsIDB4MDcwMCwgMHgwNjgwLCAweDA2MDAsIDB4MDU4MCwgMHgwNTAwLCAweDA0ODAsIAorICAweDA0MDAsIDB4MDM4MCwgMHgwMzAwLCAweDAyODAsIDB4MDIwMCwgMHgwMTgwLCAweDAxMDAsIDB4MDA4MCwgCisgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAKKyAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIAorICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgCisgIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAKKyAgMHgwMDAwLCAweDAwODAsIDB4MDEwMCwgMHgwMTgwLCAweDAyMDAsIDB4MDI4MCwgMHgwMzAwLCAweDAzODAsIAorICAweDA0MDAsIDB4MDQ4MCwgMHgwNTAwLCAweDA1ODAsIDB4MDYwMCwgMHgwNjgwLCAweDA3MDAsIDB4MDc4MCwgCisgIDB4MDgwMCwgMHgwODgwLCAweDA5MDAsIDB4MDk4MCwgMHgwYTAwLCAweDBhODAsIDB4MGIwMCwgMHgwYjgwLCAKKyAgMHgwYzAwLCAweDBjODAsIDB4MGQwMCwgMHgwZDgwLCAweDBlMDAsIDB4MGU4MCwgMHgwZjAwLCAweDBmODAsIAorICAweDEwMDAsIDB4MTA4MCwgMHgxMTAwLCAweDExODAsIDB4MTIwMCwgMHgxMjgwLCAweDEzMDAsIDB4MTM4MCwgCisgIDB4MTQwMCwgMHgxNDgwLCAweDE1MDAsIDB4MTU4MCwgMHgxNjAwLCAweDE2ODAsIDB4MTcwMCwgMHgxNzgwCit9OworCitzdGF0aWMgT1BKX0lOVDE2IGx1dF9ubXNlZGVjX3JlZjBbMSA8PCBUMV9OTVNFREVDX0JJVFNdID0geworICAweDIwMDAsIDB4MWYwMCwgMHgxZTAwLCAweDFkMDAsIDB4MWMwMCwgMHgxYjAwLCAweDFhODAsIDB4MTk4MCwgCisgIDB4MTg4MCwgMHgxNzgwLCAweDE3MDAsIDB4MTYwMCwgMHgxNTAwLCAweDE0ODAsIDB4MTM4MCwgMHgxMzAwLCAKKyAgMHgxMjAwLCAweDExODAsIDB4MTA4MCwgMHgxMDAwLCAweDBmMDAsIDB4MGU4MCwgMHgwZTAwLCAweDBkMDAsIAorICAweDBjODAsIDB4MGMwMCwgMHgwYjgwLCAweDBhODAsIDB4MGEwMCwgMHgwOTgwLCAweDA5MDAsIDB4MDg4MCwgCisgIDB4MDgwMCwgMHgwNzgwLCAweDA3MDAsIDB4MDY4MCwgMHgwNjAwLCAweDA1ODAsIDB4MDU4MCwgMHgwNTAwLCAKKyAgMHgwNDgwLCAweDA0MDAsIDB4MDQwMCwgMHgwMzgwLCAweDAzMDAsIDB4MDMwMCwgMHgwMjgwLCAweDAyODAsIAorICAweDAyMDAsIDB4MDIwMCwgMHgwMTgwLCAweDAxODAsIDB4MDEwMCwgMHgwMTAwLCAweDAxMDAsIDB4MDA4MCwgCisgIDB4MDA4MCwgMHgwMDgwLCAweDAwODAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAKKyAgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDgwLCAweDAwODAsIAorICAweDAwODAsIDB4MDA4MCwgMHgwMTAwLCAweDAxMDAsIDB4MDEwMCwgMHgwMTgwLCAweDAxODAsIDB4MDIwMCwgCisgIDB4MDIwMCwgMHgwMjgwLCAweDAyODAsIDB4MDMwMCwgMHgwMzAwLCAweDAzODAsIDB4MDQwMCwgMHgwNDAwLCAKKyAgMHgwNDgwLCAweDA1MDAsIDB4MDU4MCwgMHgwNTgwLCAweDA2MDAsIDB4MDY4MCwgMHgwNzAwLCAweDA3ODAsIAorICAweDA4MDAsIDB4MDg4MCwgMHgwOTAwLCAweDA5ODAsIDB4MGEwMCwgMHgwYTgwLCAweDBiODAsIDB4MGMwMCwgCisgIDB4MGM4MCwgMHgwZDAwLCAweDBlMDAsIDB4MGU4MCwgMHgwZjAwLCAweDEwMDAsIDB4MTA4MCwgMHgxMTgwLCAKKyAgMHgxMjAwLCAweDEzMDAsIDB4MTM4MCwgMHgxNDgwLCAweDE1MDAsIDB4MTYwMCwgMHgxNzAwLCAweDE3ODAsIAorICAweDE4ODAsIDB4MTk4MCwgMHgxYTgwLCAweDFiMDAsIDB4MWMwMCwgMHgxZDAwLCAweDFlMDAsIDB4MWYwMAorfTsKKwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3QyLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvdDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTA1NGFjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3QyLmMKQEAgLTAsMCArMSwxMzQ0IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEtMjAxMiwgQ2VudHJlIE5hdGlvbmFsIGQnRXR1ZGVzIFNwYXRpYWxlcyAoQ05FUyksIEZSIAorICogQ29weXJpZ2h0IChjKSAyMDEyLCBDUyBTeXN0ZW1lcyBkJ0luZm9ybWF0aW9uLCBGcmFuY2UKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIm9wal9pbmNsdWRlcy5oIgorCisvKiogQGRlZmdyb3VwIFQyIFQyIC0gSW1wbGVtZW50YXRpb24gb2YgYSB0aWVyLTIgY29kaW5nICovCisvKkB7Ki8KKworLyoqIEBuYW1lIExvY2FsIHN0YXRpYyBmdW5jdGlvbnMgKi8KKy8qQHsqLworCitzdGF0aWMgdm9pZCBvcGpfdDJfcHV0Y29tbWFjb2RlKG9wal9iaW9fdCAqYmlvLCBPUEpfSU5UMzIgbik7CisKK3N0YXRpYyBPUEpfVUlOVDMyIG9wal90Ml9nZXRjb21tYWNvZGUob3BqX2Jpb190ICpiaW8pOyAKKy8qKgorVmFyaWFibGUgbGVuZ3RoIGNvZGUgZm9yIHNpZ25hbGxpbmcgZGVsdGEgWmlsICh0cnVuY2F0aW9uIHBvaW50KQorQHBhcmFtIGJpbyAgQml0IElucHV0L091dHB1dCBjb21wb25lbnQKK0BwYXJhbSBuICAgIGRlbHRhIFppbAorKi8KK3N0YXRpYyB2b2lkIG9wal90Ml9wdXRudW1wYXNzZXMob3BqX2Jpb190ICpiaW8sIE9QSl9VSU5UMzIgbik7CitzdGF0aWMgT1BKX1VJTlQzMiBvcGpfdDJfZ2V0bnVtcGFzc2VzKG9wal9iaW9fdCAqYmlvKTsKKworLyoqCitFbmNvZGUgYSBwYWNrZXQgb2YgYSB0aWxlIHRvIGEgZGVzdGluYXRpb24gYnVmZmVyCitAcGFyYW0gdGlsZW5vIE51bWJlciBvZiB0aGUgdGlsZSBlbmNvZGVkCitAcGFyYW0gdGlsZSBUaWxlIGZvciB3aGljaCB0byB3cml0ZSB0aGUgcGFja2V0cworQHBhcmFtIHRjcCBUaWxlIGNvZGluZyBwYXJhbWV0ZXJzCitAcGFyYW0gcGkgUGFja2V0IGlkZW50aXR5CitAcGFyYW0gZGVzdCBEZXN0aW5hdGlvbiBidWZmZXIKK0BwYXJhbSBwX2RhdGFfd3JpdHRlbiAgIEZJWE1FIERPQworQHBhcmFtIGxlbiBMZW5ndGggb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcgorQHBhcmFtIGNzdHJfaW5mbyBDb2Rlc3RyZWFtIGluZm9ybWF0aW9uIHN0cnVjdHVyZQorQHJldHVybgorKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfdDJfZW5jb2RlX3BhY2tldCggICBPUEpfVUlOVDMyIHRpbGVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3RpbGVfdCAqdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNwX3QgKnRjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfaXRlcmF0b3JfdCAqcGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jb2Rlc3RyZWFtX2luZm9fdCAqY3N0cl9pbmZvKTsKKworLyoqCitEZWNvZGUgYSBwYWNrZXQgb2YgYSB0aWxlIGZyb20gYSBzb3VyY2UgYnVmZmVyCitAcGFyYW0gdDIgVDIgaGFuZGxlCitAcGFyYW0gdGlsZSBUaWxlIGZvciB3aGljaCB0byB3cml0ZSB0aGUgcGFja2V0cworQHBhcmFtIHRjcCBUaWxlIGNvZGluZyBwYXJhbWV0ZXJzCitAcGFyYW0gcGkgUGFja2V0IGlkZW50aXR5CitAcGFyYW0gc3JjIFNvdXJjZSBidWZmZXIKK0BwYXJhbSBkYXRhX3JlYWQgICBGSVhNRSBET0MKK0BwYXJhbSBtYXhfbGVuZ3RoICBGSVhNRSBET0MKK0BwYXJhbSBwYWNrX2luZm8gUGFja2V0IGluZm9ybWF0aW9uCisKK0ByZXR1cm4gIEZJWE1FIERPQworKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfdDJfZGVjb2RlX3BhY2tldCggICBvcGpfdDJfdCogdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlX3QgKnRpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjcF90ICp0Y3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BpX2l0ZXJhdG9yX3QgKnBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIGRhdGFfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG1heF9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BhY2tldF9pbmZvX3QgKnBhY2tfaW5mbyk7CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfdDJfc2tpcF9wYWNrZXQoIG9wal90Ml90KiBwX3QyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlX3QgKnBfdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y3BfdCAqcF90Y3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfaXRlcmF0b3JfdCAqcF9waSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpwX3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BhY2tldF9pbmZvX3QgKnBfcGFja19pbmZvKTsKKworc3RhdGljIE9QSl9CT09MIG9wal90Ml9yZWFkX3BhY2tldF9oZWFkZXIoICBvcGpfdDJfdCogcF90MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlX3QgKnBfdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjcF90ICpwX3RjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BpX2l0ZXJhdG9yX3QgKnBfcGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CT09MICogcF9pc19kYXRhX3ByZXNlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpwX3NyY19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9kYXRhX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGFja2V0X2luZm9fdCAqcF9wYWNrX2luZm8pOworCitzdGF0aWMgT1BKX0JPT0wgb3BqX3QyX3JlYWRfcGFja2V0X2RhdGEob3BqX3QyX3QqIHBfdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlX3QgKnBfdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfaXRlcmF0b3JfdCAqcF9waSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqcF9zcmNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9kYXRhX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BhY2tldF9pbmZvX3QgKnBhY2tfaW5mbyk7CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfdDJfc2tpcF9wYWNrZXRfZGF0YShvcGpfdDJfdCogcF90MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3RpbGVfdCAqcF90aWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9waV9pdGVyYXRvcl90ICpwX3BpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGFja2V0X2luZm9fdCAqcGFja19pbmZvKTsKKworLyoqCitAcGFyYW0gY2JsaworQHBhcmFtIGluZGV4CitAcGFyYW0gY2Jsa3N0eQorQHBhcmFtIGZpcnN0CisqLworc3RhdGljIE9QSl9CT09MIG9wal90Ml9pbml0X3NlZyggICAgb3BqX3RjZF9jYmxrX2RlY190KiBjYmxrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY2Jsa3N0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgZmlyc3QpOworCisvKkB9Ki8KKworLypAfSovCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qICNkZWZpbmUgUkVTVEFSVCAweDA0ICovCitzdGF0aWMgdm9pZCBvcGpfdDJfcHV0Y29tbWFjb2RlKG9wal9iaW9fdCAqYmlvLCBPUEpfSU5UMzIgbikgeworICAgICAgICB3aGlsZSAoLS1uID49IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfYmlvX3dyaXRlKGJpbywgMSwgMSk7CisgICAgICAgIH0KKyAgICAgICAgb3BqX2Jpb193cml0ZShiaW8sIDAsIDEpOworfQorCitPUEpfVUlOVDMyIG9wal90Ml9nZXRjb21tYWNvZGUob3BqX2Jpb190ICpiaW8pIAoreworICAgIE9QSl9VSU5UMzIgbiA9IDA7CisgICAgd2hpbGUgKG9wal9iaW9fcmVhZChiaW8sIDEpKSB7CisJICAgICsrbjsKKyAgICB9CisgICAgcmV0dXJuIG47Cit9CisKK3ZvaWQgb3BqX3QyX3B1dG51bXBhc3NlcyhvcGpfYmlvX3QgKmJpbywgT1BKX1VJTlQzMiBuKSB7CisgICAgICAgIGlmIChuID09IDEpIHsKKyAgICAgICAgICAgICAgICBvcGpfYmlvX3dyaXRlKGJpbywgMCwgMSk7CisgICAgICAgIH0gZWxzZSBpZiAobiA9PSAyKSB7CisgICAgICAgICAgICAgICAgb3BqX2Jpb193cml0ZShiaW8sIDIsIDIpOworICAgICAgICB9IGVsc2UgaWYgKG4gPD0gNSkgeworICAgICAgICAgICAgICAgIG9wal9iaW9fd3JpdGUoYmlvLCAweGMgfCAobiAtIDMpLCA0KTsKKyAgICAgICAgfSBlbHNlIGlmIChuIDw9IDM2KSB7CisgICAgICAgICAgICAgICAgb3BqX2Jpb193cml0ZShiaW8sIDB4MWUwIHwgKG4gLSA2KSwgOSk7CisgICAgICAgIH0gZWxzZSBpZiAobiA8PSAxNjQpIHsKKyAgICAgICAgICAgICAgICBvcGpfYmlvX3dyaXRlKGJpbywgMHhmZjgwIHwgKG4gLSAzNyksIDE2KTsKKyAgICAgICAgfQorfQorCitPUEpfVUlOVDMyIG9wal90Ml9nZXRudW1wYXNzZXMob3BqX2Jpb190ICpiaW8pIHsKKyAgICAgICAgT1BKX1VJTlQzMiBuOworICAgICAgICBpZiAoIW9wal9iaW9fcmVhZChiaW8sIDEpKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAoIW9wal9iaW9fcmVhZChiaW8sIDEpKQorICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICBpZiAoKG4gPSBvcGpfYmlvX3JlYWQoYmlvLCAyKSkgIT0gMykKKyAgICAgICAgICAgICAgICByZXR1cm4gKDMgKyBuKTsKKyAgICAgICAgaWYgKChuID0gb3BqX2Jpb19yZWFkKGJpbywgNSkpICE9IDMxKQorICAgICAgICAgICAgICAgIHJldHVybiAoNiArIG4pOworICAgICAgICByZXR1cm4gKDM3ICsgb3BqX2Jpb19yZWFkKGJpbywgNykpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitPUEpfQk9PTCBvcGpfdDJfZW5jb2RlX3BhY2tldHMoIG9wal90Ml90KiBwX3QyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfdGlsZV9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlX3QgKnBfdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heGxheWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKnBfZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NvZGVzdHJlYW1faW5mb190ICpjc3RyX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF90cF9udW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBwX3RwX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3Bpbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEoyS19UMl9NT0RFIHBfdDJfbW9kZSkKK3sKKyAgICAgICAgT1BKX0JZVEUgKmxfY3VycmVudF9kYXRhID0gcF9kZXN0OworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfYnl0ZXMgPSAwOworICAgICAgICBPUEpfVUlOVDMyIGNvbXBubzsKKyAgICAgICAgT1BKX1VJTlQzMiBwb2M7CisgICAgICAgIG9wal9waV9pdGVyYXRvcl90ICpsX3BpID0gMDA7CisgICAgICAgIG9wal9waV9pdGVyYXRvcl90ICpsX2N1cnJlbnRfcGkgPSAwMDsKKyAgICAgICAgb3BqX2ltYWdlX3QgKmxfaW1hZ2UgPSBwX3QyLT5pbWFnZTsKKyAgICAgICAgb3BqX2NwX3QgKmxfY3AgPSBwX3QyLT5jcDsKKyAgICAgICAgb3BqX3RjcF90ICpsX3RjcCA9ICZsX2NwLT50Y3BzW3BfdGlsZV9ub107CisgICAgICAgIE9QSl9VSU5UMzIgcG9jbm8gPSBsX2NwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fY2luZW1hID09IE9QSl9DSU5FTUE0S18yND8gMjogMTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX21heF9jb21wID0gbF9jcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX21heF9jb21wX3NpemUgPiAwID8gbF9pbWFnZS0+bnVtY29tcHMgOiAxOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfcG9jcyA9IGxfdGNwLT5udW1wb2NzICsgMTsKKworICAgICAgICBsX3BpID0gb3BqX3BpX2luaXRpYWxpc2VfZW5jb2RlKGxfaW1hZ2UsIGxfY3AsIHBfdGlsZV9ubywgcF90Ml9tb2RlKTsKKyAgICAgICAgaWYgKCFsX3BpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgICogcF9kYXRhX3dyaXR0ZW4gPSAwOworCisgICAgICAgIGlmIChwX3QyX21vZGUgPT0gVEhSRVNIX0NBTEMgKXsgLyogQ2FsY3VsYXRpbmcgdGhyZXNob2xkICovCisgICAgICAgICAgICAgICAgbF9jdXJyZW50X3BpID0gbF9waTsKKworICAgICAgICAgICAgICAgIGZvciAgICAgKGNvbXBubyA9IDA7IGNvbXBubyA8IGxfbWF4X2NvbXA7ICsrY29tcG5vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGxfY29tcF9sZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3BpID0gbF9waTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwb2MgPSAwOyBwb2MgPCBwb2NubyA7ICsrcG9jKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbF90cF9udW0gPSBjb21wbm87CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9ETyBNU0QgOiBjaGVjayB3aHkgdGhpcyBmdW5jdGlvbiBjYW5ub3QgZmFpbCAoY2YuIHYxKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfY3JlYXRlX2VuY29kZShsX3BpLCBsX2NwLHBfdGlsZV9ubyxwb2MsbF90cF9udW0scF90cF9wb3MscF90Ml9tb2RlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAob3BqX3BpX25leHQobF9jdXJyZW50X3BpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2N1cnJlbnRfcGktPmxheW5vIDwgcF9tYXhsYXllcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfYnl0ZXMgPSAwOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBvcGpfdDJfZW5jb2RlX3BhY2tldChwX3RpbGVfbm8scF90aWxlLCBsX3RjcCwgbF9jdXJyZW50X3BpLCBsX2N1cnJlbnRfZGF0YSwgJmxfbmJfYnl0ZXMsIHBfbWF4X2xlbiwgY3N0cl9pbmZvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfZGVzdHJveShsX3BpLCBsX25iX3BvY3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NvbXBfbGVuICs9IGxfbmJfYnl0ZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSBsX25iX2J5dGVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9tYXhfbGVuIC09IGxfbmJfYnl0ZXM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcF9kYXRhX3dyaXR0ZW4gKz0gbF9uYl9ieXRlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9jcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX21heF9jb21wX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9jb21wX2xlbiA+IGxfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9tYXhfY29tcF9zaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfZGVzdHJveShsX3BpLCBsX25iX3BvY3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfY3VycmVudF9waTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7ICAvKiB0Ml9tb2RlID09IEZJTkFMX1BBU1MgICovCisgICAgICAgICAgICAgICAgb3BqX3BpX2NyZWF0ZV9lbmNvZGUobF9waSwgbF9jcCxwX3RpbGVfbm8scF9waW5vLHBfdHBfbnVtLHBfdHBfcG9zLHBfdDJfbW9kZSk7CisKKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcGkgPSAmbF9waVtwX3Bpbm9dOworCisgICAgICAgICAgICAgICAgd2hpbGUgKG9wal9waV9uZXh0KGxfY3VycmVudF9waSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2N1cnJlbnRfcGktPmxheW5vIDwgcF9tYXhsYXllcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9uYl9ieXRlcz0wOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG9wal90Ml9lbmNvZGVfcGFja2V0KHBfdGlsZV9ubyxwX3RpbGUsIGxfdGNwLCBsX2N1cnJlbnRfcGksIGxfY3VycmVudF9kYXRhLCAmbF9uYl9ieXRlcywgcF9tYXhfbGVuLCBjc3RyX2luZm8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BpX2Rlc3Ryb3kobF9waSwgbF9uYl9wb2NzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X2RhdGEgKz0gbF9uYl9ieXRlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9tYXhfbGVuIC09IGxfbmJfYnl0ZXM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBwX2RhdGFfd3JpdHRlbiArPSBsX25iX2J5dGVzOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOREVYID4+ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNzdHJfaW5mbykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNzdHJfaW5mby0+aW5kZXhfd3JpdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90aWxlX2luZm9fdCAqaW5mb19UTCA9ICZjc3RyX2luZm8tPnRpbGVbcF90aWxlX25vXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9wYWNrZXRfaW5mb190ICppbmZvX1BLID0gJmluZm9fVEwtPnBhY2tldFtjc3RyX2luZm8tPnBhY2tub107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNzdHJfaW5mby0+cGFja25vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fUEstPnN0YXJ0X3BvcyA9IGluZm9fVEwtPmVuZF9oZWFkZXIgKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19QSy0+c3RhcnRfcG9zID0gKChsX2NwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fdHBfb24gfCBsX3RjcC0+UE9DKSYmIGluZm9fUEstPnN0YXJ0X3BvcykgPyBpbmZvX1BLLT5zdGFydF9wb3MgOiBpbmZvX1RMLT5wYWNrZXRbY3N0cl9pbmZvLT5wYWNrbm8gLSAxXS5lbmRfcG9zICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fUEstPmVuZF9wb3MgPSBpbmZvX1BLLT5zdGFydF9wb3MgKyBsX25iX2J5dGVzIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fUEstPmVuZF9waF9wb3MgKz0gaW5mb19QSy0+c3RhcnRfcG9zIC0gMTsgIC8qIEVuZCBvZiBwYWNrZXQgaGVhZGVyIHdoaWNoIG5vdyBvbmx5IHJlcHJlc2VudHMgdGhlIGRpc3RhbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzdGFydCBvZiBwYWNrZXQgaXMgaW5jcmVtZW50ZWQgYnkgdmFsdWUgb2Ygc3RhcnQgb2YgcGFja2V0Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyX2luZm8tPnBhY2tubysrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDw8IElOREVYICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcF90aWxlLT5wYWNrbm87CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb3BqX3BpX2Rlc3Ryb3kobF9waSwgbF9uYl9wb2NzKTsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKy8qIHNlZSBpc3N1ZSA4MCAqLworI2lmIDAKKyNkZWZpbmUgSkFTX0ZQUklOVEYgZnByaW50ZgorI2Vsc2UKKy8qIGlzc3VlIDI5MCAqLworc3RhdGljIHZvaWQgb3BqX251bGxfamFzX2ZwcmludGYoRklMRSogZmlsZSwgY29uc3QgY2hhciAqIGZvcm1hdCwgLi4uKQoreworICAodm9pZClmaWxlOworICAodm9pZClmb3JtYXQ7Cit9CisjZGVmaW5lIEpBU19GUFJJTlRGIG9wal9udWxsX2phc19mcHJpbnRmCisjZW5kaWYKKworT1BKX0JPT0wgb3BqX3QyX2RlY29kZV9wYWNrZXRzKCBvcGpfdDJfdCAqcF90MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfdGlsZV90ICpwX3RpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpwX3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NvZGVzdHJlYW1faW5kZXhfdCAqcF9jc3RyX2luZGV4KQoreworICAgICAgICBPUEpfQllURSAqbF9jdXJyZW50X2RhdGEgPSBwX3NyYzsKKyAgICAgICAgb3BqX3BpX2l0ZXJhdG9yX3QgKmxfcGkgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBwaW5vOworICAgICAgICBvcGpfaW1hZ2VfdCAqbF9pbWFnZSA9IHBfdDItPmltYWdlOworICAgICAgICBvcGpfY3BfdCAqbF9jcCA9IHBfdDItPmNwOworICAgICAgICBvcGpfdGNwX3QgKmxfdGNwID0gJihwX3QyLT5jcC0+dGNwc1twX3RpbGVfbm9dKTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2J5dGVzX3JlYWQ7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9wb2NzID0gbF90Y3AtPm51bXBvY3MgKyAxOworICAgICAgICBvcGpfcGlfaXRlcmF0b3JfdCAqbF9jdXJyZW50X3BpID0gMDA7CisjaWZkZWYgVE9ET19NU0QKKyAgICAgICAgT1BKX1VJTlQzMiBjdXJ0cCA9IDA7CisgICAgICAgIE9QSl9VSU5UMzIgdHBfc3RhcnRfcGFja25vOworI2VuZGlmIAorICAgICAgICBvcGpfcGFja2V0X2luZm9fdCAqbF9wYWNrX2luZm8gPSAwMDsKKyAgICAgICAgb3BqX2ltYWdlX2NvbXBfdCogbF9pbWdfY29tcCA9IDAwOworCisgICAgICAgIE9QSl9BUkdfTk9UX1VTRUQocF9jc3RyX2luZGV4KTsKKworI2lmZGVmIFRPRE9fTVNECisgICAgICAgIGlmIChwX2NzdHJfaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBsX3BhY2tfaW5mbyA9IHBfY3N0cl9pbmRleC0+dGlsZV9pbmRleFtwX3RpbGVfbm9dLnBhY2tldDsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgLyogY3JlYXRlIGEgcGFja2V0IGl0ZXJhdG9yICovCisgICAgICAgIGxfcGkgPSBvcGpfcGlfY3JlYXRlX2RlY29kZShsX2ltYWdlLCBsX2NwLCBwX3RpbGVfbm8pOworICAgICAgICBpZiAoIWxfcGkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKworICAgICAgICBsX2N1cnJlbnRfcGkgPSBsX3BpOworCisgICAgICAgIGZvciAgICAgKHBpbm8gPSAwOyBwaW5vIDw9IGxfdGNwLT5udW1wb2NzOyArK3Bpbm8pIHsKKworICAgICAgICAgICAgICAgIC8qIGlmIHRoZSByZXNvbHV0aW9uIG5lZWRlZCBpcyB0b28gbG93LCBvbmUgZGltIG9mIHRoZSB0aWxlYyBjb3VsZCBiZSBlcXVhbCB0byB6ZXJvCisgICAgICAgICAgICAgICAgICogYW5kIG5vIHBhY2tldHMgYXJlIHVzZWQgdG8gZGVjb2RlIHRoaXMgcmVzb2x1dGlvbiBhbmQKKyAgICAgICAgICAgICAgICAgKiBsX2N1cnJlbnRfcGktPnJlc25vIGlzIGFsd2F5cyA+PSBwX3RpbGUtPmNvbXBzW2xfY3VycmVudF9waS0+Y29tcG5vXS5taW5pbXVtX251bV9yZXNvbHV0aW9ucworICAgICAgICAgICAgICAgICAqIGFuZCBubyBsX2ltZ19jb21wLT5yZXNub19kZWNvZGVkIGFyZSBjb21wdXRlZAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIE9QSl9CT09MKiBmaXJzdF9wYXNzX2ZhaWxlZCA9IChPUEpfQk9PTCopb3BqX21hbGxvYyhsX2ltYWdlLT5udW1jb21wcyAqIHNpemVvZihPUEpfQk9PTCkpOworICAgICAgICAgICAgICAgIGlmICghZmlyc3RfcGFzc19mYWlsZWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvcGpfcGlfZGVzdHJveShsX3BpLGxfbmJfcG9jcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1lbXNldChmaXJzdF9wYXNzX2ZhaWxlZCwgT1BKX1RSVUUsIGxfaW1hZ2UtPm51bWNvbXBzICogc2l6ZW9mKE9QSl9CT09MKSk7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAob3BqX3BpX25leHQobF9jdXJyZW50X3BpKSkgeworICAgICAgICAgICAgICAgICAgSkFTX0ZQUklOVEYoIHN0ZGVyciwgInBhY2tldCBvZmZzZXQ9MDAwMDAxNjYgcHJnPSVkIGNtcHRubz0lMDJkIHJsdmxubz0lMDJkIHByY25vPSUwM2QgbHlybm89JTAyZFxuXG4iLAorICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcGktPnBvYy5wcmcxLCBsX2N1cnJlbnRfcGktPmNvbXBubywgbF9jdXJyZW50X3BpLT5yZXNubywgbF9jdXJyZW50X3BpLT5wcmVjbm8sIGxfY3VycmVudF9waS0+bGF5bm8gKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfdGNwLT5udW1fbGF5ZXJzX3RvX2RlY29kZSA+IGxfY3VycmVudF9waS0+bGF5bm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBsX2N1cnJlbnRfcGktPnJlc25vIDwgcF90aWxlLT5jb21wc1tsX2N1cnJlbnRfcGktPmNvbXBub10ubWluaW11bV9udW1fcmVzb2x1dGlvbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9uYl9ieXRlc19yZWFkID0gMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9wYXNzX2ZhaWxlZFtsX2N1cnJlbnRfcGktPmNvbXBub10gPSBPUEpfRkFMU0U7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgb3BqX3QyX2RlY29kZV9wYWNrZXQocF90MixwX3RpbGUsbF90Y3AsbF9jdXJyZW50X3BpLGxfY3VycmVudF9kYXRhLCZsX25iX2J5dGVzX3JlYWQscF9tYXhfbGVuLGxfcGFja19pbmZvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9waV9kZXN0cm95KGxfcGksbF9uYl9wb2NzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShmaXJzdF9wYXNzX2ZhaWxlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAgPSAmKGxfaW1hZ2UtPmNvbXBzW2xfY3VycmVudF9waS0+Y29tcG5vXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAtPnJlc25vX2RlY29kZWQgPSBvcGpfdWludF9tYXgobF9jdXJyZW50X3BpLT5yZXNubywgbF9pbWdfY29tcC0+cmVzbm9fZGVjb2RlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9uYl9ieXRlc19yZWFkID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgb3BqX3QyX3NraXBfcGFja2V0KHBfdDIscF90aWxlLGxfdGNwLGxfY3VycmVudF9waSxsX2N1cnJlbnRfZGF0YSwmbF9uYl9ieXRlc19yZWFkLHBfbWF4X2xlbixsX3BhY2tfaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfZGVzdHJveShsX3BpLGxfbmJfcG9jcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUoZmlyc3RfcGFzc19mYWlsZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0X3Bhc3NfZmFpbGVkW2xfY3VycmVudF9waS0+Y29tcG5vXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2ltZ19jb21wID0gJihsX2ltYWdlLT5jb21wc1tsX2N1cnJlbnRfcGktPmNvbXBub10pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9pbWdfY29tcC0+cmVzbm9fZGVjb2RlZCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfaW1nX2NvbXAtPnJlc25vX2RlY29kZWQgPSBwX3RpbGUtPmNvbXBzW2xfY3VycmVudF9waS0+Y29tcG5vXS5taW5pbXVtX251bV9yZXNvbHV0aW9ucyAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9kYXRhICs9IGxfbmJfYnl0ZXNfcmVhZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfbWF4X2xlbiAtPSBsX25iX2J5dGVzX3JlYWQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOREVYID4+ICovCisjaWZkZWYgVE9ET19NU0QKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHBfY3N0cl9pbmZvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90aWxlX2luZm9fdjJfdCAqaW5mb19UTCA9ICZwX2NzdHJfaW5mby0+dGlsZVtwX3RpbGVfbm9dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGFja2V0X2luZm9fdCAqaW5mb19QSyA9ICZpbmZvX1RMLT5wYWNrZXRbcF9jc3RyX2luZm8tPnBhY2tub107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwX3N0YXJ0X3BhY2tubyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcF9jc3RyX2luZm8tPnBhY2tubykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fUEstPnN0YXJ0X3BvcyA9IGluZm9fVEwtPmVuZF9oZWFkZXIgKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluZm9fVEwtPnBhY2tldFtwX2NzdHJfaW5mby0+cGFja25vLTFdLmVuZF9wb3MgPj0gKE9QSl9JTlQzMilwX2NzdHJfaW5mby0+dGlsZVtwX3RpbGVfbm9dLnRwW2N1cnRwXS50cF9lbmRfcG9zKXsgLyogTmV3IHRpbGUgcGFydCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fVEwtPnRwW2N1cnRwXS50cF9udW1wYWNrcyA9IHBfY3N0cl9pbmZvLT5wYWNrbm8gLSB0cF9zdGFydF9wYWNrbm87IC8qIE51bWJlciBvZiBwYWNrZXRzIGluIHByZXZpb3VzIHRpbGUtcGFydCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwX3N0YXJ0X3BhY2tubyA9IHBfY3N0cl9pbmZvLT5wYWNrbm87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VydHArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX1BLLT5zdGFydF9wb3MgPSBwX2NzdHJfaW5mby0+dGlsZVtwX3RpbGVfbm9dLnRwW2N1cnRwXS50cF9lbmRfaGVhZGVyKzE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19QSy0+c3RhcnRfcG9zID0gKGxfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV90cF9vbiAmJiBpbmZvX1BLLT5zdGFydF9wb3MpID8gaW5mb19QSy0+c3RhcnRfcG9zIDogaW5mb19UTC0+cGFja2V0W3BfY3N0cl9pbmZvLT5wYWNrbm8gLSAxXS5lbmRfcG9zICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX1BLLT5lbmRfcG9zID0gaW5mb19QSy0+c3RhcnRfcG9zICsgbF9uYl9ieXRlc19yZWFkIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19QSy0+ZW5kX3BoX3BvcyArPSBpbmZvX1BLLT5zdGFydF9wb3MgLSAxOyAgLyogRW5kIG9mIHBhY2tldCBoZWFkZXIgd2hpY2ggbm93IG9ubHkgcmVwcmVzZW50cyB0aGUgZGlzdGFuY2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwX2NzdHJfaW5mby0+cGFja25vOworICAgICAgICAgICAgICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAvKiA8PCBJTkRFWCAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK2xfY3VycmVudF9waTsKKworICAgICAgICAgICAgICAgIG9wal9mcmVlKGZpcnN0X3Bhc3NfZmFpbGVkKTsKKyAgICAgICAgfQorICAgICAgICAvKiBJTkRFWCA+PiAqLworI2lmZGVmIFRPRE9fTVNECisgICAgICAgIGlmCisgICAgICAgICAgICAgICAgKHBfY3N0cl9pbmZvKSB7CisgICAgICAgICAgICAgICAgcF9jc3RyX2luZm8tPnRpbGVbcF90aWxlX25vXS50cFtjdXJ0cF0udHBfbnVtcGFja3MgPSBwX2NzdHJfaW5mby0+cGFja25vIC0gdHBfc3RhcnRfcGFja25vOyAvKiBOdW1iZXIgb2YgcGFja2V0cyBpbiBsYXN0IHRpbGUtcGFydCAqLworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgLyogPDwgSU5ERVggKi8KKworICAgICAgICAvKiBkb24ndCBmb3JnZXQgdG8gcmVsZWFzZSBwaSAqLworICAgICAgICBvcGpfcGlfZGVzdHJveShsX3BpLGxfbmJfcG9jcyk7CisgICAgICAgICpwX2RhdGFfcmVhZCA9IChPUEpfVUlOVDMyKShsX2N1cnJlbnRfZGF0YSAtIHBfc3JjKTsKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKioKKyAqIENyZWF0ZXMgYSBUaWVyIDIgaGFuZGxlCisgKgorICogQHBhcmFtICAgICAgIHBfaW1hZ2UgICAgICAgICBTb3VyY2Ugb3IgZGVzdGluYXRpb24gaW1hZ2UKKyAqIEBwYXJhbSAgICAgICBwX2NwICAgICAgICAgICAgSW1hZ2UgY29kaW5nIHBhcmFtZXRlcnMuCisgKiBAcmV0dXJuICAgICAgICAgICAgICBhIG5ldyBUMiBoYW5kbGUgaWYgc3VjY2Vzc2Z1bCwgTlVMTCBvdGhlcndpc2UuCisqLworb3BqX3QyX3QqIG9wal90Ml9jcmVhdGUob3BqX2ltYWdlX3QgKnBfaW1hZ2UsIG9wal9jcF90ICpwX2NwKQoreworICAgICAgICAvKiBjcmVhdGUgdGhlIHQyIHN0cnVjdHVyZSAqLworICAgICAgICBvcGpfdDJfdCAqbF90MiA9IChvcGpfdDJfdCopb3BqX21hbGxvYyhzaXplb2Yob3BqX3QyX3QpKTsKKyAgICAgICAgaWYgKCFsX3QyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KGxfdDIsMCxzaXplb2Yob3BqX3QyX3QpKTsKKworICAgICAgICBsX3QyLT5pbWFnZSA9IHBfaW1hZ2U7CisgICAgICAgIGxfdDItPmNwID0gcF9jcDsKKworICAgICAgICByZXR1cm4gbF90MjsKK30KKwordm9pZCBvcGpfdDJfZGVzdHJveShvcGpfdDJfdCAqdDIpIHsKKyAgICAgICAgaWYodDIpIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZSh0Mik7CisgICAgICAgIH0KK30KKworT1BKX0JPT0wgb3BqX3QyX2RlY29kZV9wYWNrZXQoICBvcGpfdDJfdCogcF90MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlX3QgKnBfdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjcF90ICpwX3RjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BpX2l0ZXJhdG9yX3QgKnBfcGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpwX3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BhY2tldF9pbmZvX3QgKnBfcGFja19pbmZvKQoreworICAgICAgICBPUEpfQk9PTCBsX3JlYWRfZGF0YTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2J5dGVzX3JlYWQgPSAwOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfdG90YWxfYnl0ZXNfcmVhZCA9IDA7CisKKyAgICAgICAgKnBfZGF0YV9yZWFkID0gMDsKKworICAgICAgICBpZiAoISBvcGpfdDJfcmVhZF9wYWNrZXRfaGVhZGVyKHBfdDIscF90aWxlLHBfdGNwLHBfcGksJmxfcmVhZF9kYXRhLHBfc3JjLCZsX25iX2J5dGVzX3JlYWQscF9tYXhfbGVuZ3RoLHBfcGFja19pbmZvKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBwX3NyYyArPSBsX25iX2J5dGVzX3JlYWQ7CisgICAgICAgIGxfbmJfdG90YWxfYnl0ZXNfcmVhZCArPSBsX25iX2J5dGVzX3JlYWQ7CisgICAgICAgIHBfbWF4X2xlbmd0aCAtPSBsX25iX2J5dGVzX3JlYWQ7CisKKyAgICAgICAgLyogd2Ugc2hvdWxkIHJlYWQgZGF0YSBmb3IgdGhlIHBhY2tldCAqLworICAgICAgICBpZiAobF9yZWFkX2RhdGEpIHsKKyAgICAgICAgICAgICAgICBsX25iX2J5dGVzX3JlYWQgPSAwOworCisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX3QyX3JlYWRfcGFja2V0X2RhdGEocF90MixwX3RpbGUscF9waSxwX3NyYywmbF9uYl9ieXRlc19yZWFkLHBfbWF4X2xlbmd0aCxwX3BhY2tfaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbF9uYl90b3RhbF9ieXRlc19yZWFkICs9IGxfbmJfYnl0ZXNfcmVhZDsKKyAgICAgICAgfQorCisgICAgICAgICpwX2RhdGFfcmVhZCA9IGxfbmJfdG90YWxfYnl0ZXNfcmVhZDsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal90Ml9lbmNvZGVfcGFja2V0KCAgT1BKX1VJTlQzMiB0aWxlbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfdGlsZV90ICogdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjcF90ICogdGNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfaXRlcmF0b3JfdCAqcGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICogcF9kYXRhX3dyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfY29kZXN0cmVhbV9pbmZvX3QgKmNzdHJfaW5mbykKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBiYW5kbm8sIGNibGtubzsKKyAgICAgICAgT1BKX0JZVEUqIGMgPSBkZXN0OworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfYnl0ZXM7CisgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vID0gcGktPmNvbXBubzsgICAgIC8qIGNvbXBvbmVudCB2YWx1ZSAqLworICAgICAgICBPUEpfVUlOVDMyIHJlc25vICA9IHBpLT5yZXNubzsgICAgICAvKiByZXNvbHV0aW9uIGxldmVsIHZhbHVlICovCisgICAgICAgIE9QSl9VSU5UMzIgcHJlY25vID0gcGktPnByZWNubzsgICAgIC8qIHByZWNpbmN0IHZhbHVlICovCisgICAgICAgIE9QSl9VSU5UMzIgbGF5bm8gID0gcGktPmxheW5vOyAgICAgIC8qIHF1YWxpdHkgbGF5ZXIgdmFsdWUgKi8KKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2Jsb2NrczsKKyAgICAgICAgb3BqX3RjZF9iYW5kX3QgKmJhbmQgPSAwMDsKKyAgICAgICAgb3BqX3RjZF9jYmxrX2VuY190KiBjYmxrID0gMDA7CisgICAgICAgIG9wal90Y2RfcGFzc190ICpwYXNzID0gMDA7CisKKyAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICp0aWxlYyA9ICZ0aWxlLT5jb21wc1tjb21wbm9dOworICAgICAgICBvcGpfdGNkX3Jlc29sdXRpb25fdCAqcmVzID0gJnRpbGVjLT5yZXNvbHV0aW9uc1tyZXNub107CisKKyAgICAgICAgb3BqX2Jpb190ICpiaW8gPSAwMDsgICAgLyogQklPIGNvbXBvbmVudCAqLworCisgICAgICAgIC8qIDxTT1AgMHhmZjkxPiAqLworICAgICAgICBpZiAodGNwLT5jc3R5ICYgSjJLX0NQX0NTVFlfU09QKSB7CisgICAgICAgICAgICAgICAgY1swXSA9IDI1NTsKKyAgICAgICAgICAgICAgICBjWzFdID0gMTQ1OworICAgICAgICAgICAgICAgIGNbMl0gPSAwOworICAgICAgICAgICAgICAgIGNbM10gPSA0OworI2lmIDAKKyAgICAgICAgICAgICAgICBjWzRdID0gKHRpbGUtPnBhY2tubyAlIDY1NTM2KSAvIDI1NjsKKyAgICAgICAgICAgICAgICBjWzVdID0gKHRpbGUtPnBhY2tubyAlIDY1NTM2KSAlIDI1NjsKKyNlbHNlCisgICAgICAgICAgICAgICAgY1s0XSA9ICh0aWxlLT5wYWNrbm8gPj4gOCkgJiAweGZmOyAvKiBwYWNrbm8gaXMgdWludDMyX3QgKi8KKyAgICAgICAgICAgICAgICBjWzVdID0gdGlsZS0+cGFja25vICYgMHhmZjsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGMgKz0gNjsKKyAgICAgICAgICAgICAgICBsZW5ndGggLT0gNjsKKyAgICAgICAgfQorICAgICAgICAvKiA8L1NPUD4gKi8KKworICAgICAgICBpZiAoIWxheW5vKSB7CisgICAgICAgICAgICAgICAgYmFuZCA9IHJlcy0+YmFuZHM7CisKKyAgICAgICAgICAgICAgICBmb3IoYmFuZG5vID0gMDsgYmFuZG5vIDwgcmVzLT5udW1iYW5kczsgKytiYW5kbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfcHJlY2luY3RfdCAqcHJjID0gJmJhbmQtPnByZWNpbmN0c1twcmVjbm9dOworCisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGd0X3Jlc2V0KHByYy0+aW5jbHRyZWUpOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RndF9yZXNldChwcmMtPmltc2J0cmVlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbF9uYl9ibG9ja3MgPSBwcmMtPmN3ICogcHJjLT5jaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAgICAgKGNibGtubyA9IDA7IGNibGtubyA8IGxfbmJfYmxvY2tzOyArK2NibGtubykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrID0gJnByYy0+Y2Jsa3MuZW5jW2NibGtub107CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsay0+bnVtcGFzc2VzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RndF9zZXR2YWx1ZShwcmMtPmltc2J0cmVlLCBjYmxrbm8sIGJhbmQtPm51bWJwcyAtIChPUEpfSU5UMzIpY2Jsay0+bnVtYnBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICsrYmFuZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBiaW8gPSBvcGpfYmlvX2NyZWF0ZSgpOworICAgICAgICBvcGpfYmlvX2luaXRfZW5jKGJpbywgYywgbGVuZ3RoKTsKKyAgICAgICAgb3BqX2Jpb193cml0ZShiaW8sIDEsIDEpOyAgICAgICAgICAgLyogRW1wdHkgaGVhZGVyIGJpdCAqLworCisgICAgICAgIC8qIFdyaXRpbmcgUGFja2V0IGhlYWRlciAqLworICAgICAgICBiYW5kID0gcmVzLT5iYW5kczsKKyAgICAgICAgZm9yIChiYW5kbm8gPSAwOyBiYW5kbm8gPCByZXMtPm51bWJhbmRzOyArK2JhbmRubykgICAgICB7CisgICAgICAgICAgICAgICAgb3BqX3RjZF9wcmVjaW5jdF90ICpwcmMgPSAmYmFuZC0+cHJlY2luY3RzW3ByZWNub107CisKKyAgICAgICAgICAgICAgICBsX25iX2Jsb2NrcyA9IHByYy0+Y3cgKiBwcmMtPmNoOworICAgICAgICAgICAgICAgIGNibGsgPSBwcmMtPmNibGtzLmVuYzsKKworICAgICAgICAgICAgICAgIGZvciAoY2Jsa25vID0gMDsgY2Jsa25vIDwgbF9uYl9ibG9ja3M7ICsrY2Jsa25vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX2xheWVyX3QgKmxheWVyID0gJmNibGstPmxheWVyc1tsYXlub107CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2Jsay0+bnVtcGFzc2VzICYmIGxheWVyLT5udW1wYXNzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RndF9zZXR2YWx1ZShwcmMtPmluY2x0cmVlLCBjYmxrbm8sIChPUEpfSU5UMzIpbGF5bm8pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICArK2NibGs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2JsayA9IHByYy0+Y2Jsa3MuZW5jOworICAgICAgICAgICAgICAgIGZvciAoY2Jsa25vID0gMDsgY2Jsa25vIDwgbF9uYl9ibG9ja3M7IGNibGtubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX2xheWVyX3QgKmxheWVyID0gJmNibGstPmxheWVyc1tsYXlub107CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGluY3JlbWVudCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG51bXAgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBsZW4gPSAwLCBwYXNzbm87CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGxfbmJfcGFzc2VzOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBjYmxrIGluY2x1c2lvbiBiaXRzICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNibGstPm51bXBhc3NlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGd0X2VuY29kZShiaW8sIHByYy0+aW5jbHRyZWUsIGNibGtubywgKE9QSl9JTlQzMikobGF5bm8gKyAxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfYmlvX3dyaXRlKGJpbywgbGF5ZXItPm51bXBhc3NlcyAhPSAwLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogaWYgY2JsayBub3QgaW5jbHVkZWQsIGdvIHRvIHRoZSBuZXh0IGNibGsgICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxheWVyLT5udW1wYXNzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjYmxrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogaWYgZmlyc3QgaW5zdGFuY2Ugb2YgY2JsayAtLT4gemVybyBiaXQtcGxhbmVzIGluZm9ybWF0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNibGstPm51bXBhc3NlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5udW1sZW5iaXRzID0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RndF9lbmNvZGUoYmlvLCBwcmMtPmltc2J0cmVlLCBjYmxrbm8sIDk5OSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RpbmcgcGFzc2VzIGluY2x1ZGVkICovCisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDJfcHV0bnVtcGFzc2VzKGJpbywgbGF5ZXItPm51bXBhc3Nlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsX25iX3Bhc3NlcyA9IGNibGstPm51bXBhc3NlcyArIGxheWVyLT5udW1wYXNzZXM7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzID0gY2Jsay0+cGFzc2VzICsgIGNibGstPm51bXBhc3NlczsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogY29tcHV0YXRpb24gb2YgdGhlIGluY3JlYXNlIG9mIHRoZSBsZW5ndGggaW5kaWNhdG9yIGFuZCBpbnNlcnRpb24gaW4gdGhlIGhlYWRlciAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocGFzc25vID0gY2Jsay0+bnVtcGFzc2VzOyBwYXNzbm8gPCBsX25iX3Bhc3NlczsgKytwYXNzbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytudW1wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gKz0gcGFzcy0+bGVuOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXNzLT50ZXJtIHx8IHBhc3NubyA9PSAoY2Jsay0+bnVtcGFzc2VzICsgbGF5ZXItPm51bXBhc3NlcykgLSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50ID0gKE9QSl9VSU5UMzIpb3BqX2ludF9tYXgoKE9QSl9JTlQzMilpbmNyZW1lbnQsIG9wal9pbnRfZmxvb3Jsb2cyKChPUEpfSU5UMzIpbGVuKSArIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gKChPUEpfSU5UMzIpY2Jsay0+bnVtbGVuYml0cyArIG9wal9pbnRfZmxvb3Jsb2cyKChPUEpfSU5UMzIpbnVtcCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bXAgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwYXNzOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3QyX3B1dGNvbW1hY29kZShiaW8sIChPUEpfSU5UMzIpaW5jcmVtZW50KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogY29tcHV0YXRpb24gb2YgdGhlIG5ldyBMZW5ndGggaW5kaWNhdG9yICovCisgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5udW1sZW5iaXRzICs9IGluY3JlbWVudDsKKworICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyA9IGNibGstPnBhc3NlcyArICBjYmxrLT5udW1wYXNzZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnNlcnRpb24gb2YgdGhlIGNvZGV3b3JkIHNlZ21lbnQgbGVuZ3RoICovCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHBhc3NubyA9IGNibGstPm51bXBhc3NlczsgcGFzc25vIDwgbF9uYl9wYXNzZXM7ICsrcGFzc25vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bXArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuICs9IHBhc3MtPmxlbjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFzcy0+dGVybSB8fCBwYXNzbm8gPT0gKGNibGstPm51bXBhc3NlcyArIGxheWVyLT5udW1wYXNzZXMpIC0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9iaW9fd3JpdGUoYmlvLCAoT1BKX1VJTlQzMilsZW4sIGNibGstPm51bWxlbmJpdHMgKyAoT1BKX1VJTlQzMilvcGpfaW50X2Zsb29ybG9nMigoT1BKX0lOVDMyKW51bXApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bXAgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcGFzczsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgKytjYmxrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICsrYmFuZDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghb3BqX2Jpb19mbHVzaChiaW8pKSB7CisgICAgICAgICAgICAgICAgb3BqX2Jpb19kZXN0cm95KGJpbyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsgICAgICAgICAgICAgICAvKiBtb2RpZmllZCB0byBlbGltaW5hdGUgbG9uZ2ptcCAhISAqLworICAgICAgICB9CisKKyAgICAgICAgbF9uYl9ieXRlcyA9IChPUEpfVUlOVDMyKW9wal9iaW9fbnVtYnl0ZXMoYmlvKTsKKyAgICAgICAgYyArPSBsX25iX2J5dGVzOworICAgICAgICBsZW5ndGggLT0gbF9uYl9ieXRlczsKKworICAgICAgICBvcGpfYmlvX2Rlc3Ryb3koYmlvKTsKKworICAgICAgICAvKiA8RVBIIDB4ZmY5Mj4gKi8KKyAgICAgICAgaWYgKHRjcC0+Y3N0eSAmIEoyS19DUF9DU1RZX0VQSCkgeworICAgICAgICAgICAgICAgIGNbMF0gPSAyNTU7CisgICAgICAgICAgICAgICAgY1sxXSA9IDE0NjsKKyAgICAgICAgICAgICAgICBjICs9IDI7CisgICAgICAgICAgICAgICAgbGVuZ3RoIC09IDI7CisgICAgICAgIH0KKyAgICAgICAgLyogPC9FUEg+ICovCisKKyAgICAgICAgLyogPDwgSU5ERVggKi8KKyAgICAgICAgLyogRW5kIG9mIHBhY2tldCBoZWFkZXIgcG9zaXRpb24uIEN1cnJlbnRseSBvbmx5IHJlcHJlc2VudHMgdGhlIGRpc3RhbmNlIHRvIHN0YXJ0IG9mIHBhY2tldAorICAgICAgICAgICBXaWxsIGJlIHVwZGF0ZWQgbGF0ZXIgYnkgaW5jcmVtZW50aW5nIHdpdGggcGFja2V0IHN0YXJ0IHZhbHVlKi8KKyAgICAgICAgaWYoY3N0cl9pbmZvICYmIGNzdHJfaW5mby0+aW5kZXhfd3JpdGUpIHsKKyAgICAgICAgICAgICAgICBvcGpfcGFja2V0X2luZm9fdCAqaW5mb19QSyA9ICZjc3RyX2luZm8tPnRpbGVbdGlsZW5vXS5wYWNrZXRbY3N0cl9pbmZvLT5wYWNrbm9dOworICAgICAgICAgICAgICAgIGluZm9fUEstPmVuZF9waF9wb3MgPSAoT1BKX0lOVDMyKShjIC0gZGVzdCk7CisgICAgICAgIH0KKyAgICAgICAgLyogSU5ERVggPj4gKi8KKworICAgICAgICAvKiBXcml0aW5nIHRoZSBwYWNrZXQgYm9keSAqLworICAgICAgICBiYW5kID0gcmVzLT5iYW5kczsKKyAgICAgICAgZm9yIChiYW5kbm8gPSAwOyBiYW5kbm8gPCByZXMtPm51bWJhbmRzOyBiYW5kbm8rKykgeworICAgICAgICAgICAgICAgIG9wal90Y2RfcHJlY2luY3RfdCAqcHJjID0gJmJhbmQtPnByZWNpbmN0c1twcmVjbm9dOworCisgICAgICAgICAgICAgICAgbF9uYl9ibG9ja3MgPSBwcmMtPmN3ICogcHJjLT5jaDsKKyAgICAgICAgICAgICAgICBjYmxrID0gcHJjLT5jYmxrcy5lbmM7CisKKyAgICAgICAgICAgICAgICBmb3IgKGNibGtubyA9IDA7IGNibGtubyA8IGxfbmJfYmxvY2tzOyArK2NibGtubykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF9sYXllcl90ICpsYXllciA9ICZjYmxrLT5sYXllcnNbbGF5bm9dOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxheWVyLT5udW1wYXNzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjYmxrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxheWVyLT5sZW4gPiBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGMsIGxheWVyLT5kYXRhLCBsYXllci0+bGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNibGstPm51bXBhc3NlcyArPSBsYXllci0+bnVtcGFzc2VzOworICAgICAgICAgICAgICAgICAgICAgICAgYyArPSBsYXllci0+bGVuOworICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoIC09IGxheWVyLT5sZW47CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDw8IElOREVYICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZihjc3RyX2luZm8gJiYgY3N0cl9pbmZvLT5pbmRleF93cml0ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGFja2V0X2luZm9fdCAqaW5mb19QSyA9ICZjc3RyX2luZm8tPnRpbGVbdGlsZW5vXS5wYWNrZXRbY3N0cl9pbmZvLT5wYWNrbm9dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX1BLLT5kaXN0byArPSBsYXllci0+ZGlzdG87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjc3RyX2luZm8tPkRfbWF4IDwgaW5mb19QSy0+ZGlzdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyX2luZm8tPkRfbWF4ID0gaW5mb19QSy0+ZGlzdG87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgKytjYmxrOworICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5ERVggPj4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKytiYW5kOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0KCBjID49IGRlc3QgKTsKKyAgICAgICAgKiBwX2RhdGFfd3JpdHRlbiArPSAoT1BKX1VJTlQzMikoYyAtIGRlc3QpOworCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworc3RhdGljIE9QSl9CT09MIG9wal90Ml9za2lwX3BhY2tldCggb3BqX3QyX3QqIHBfdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3RpbGVfdCAqcF90aWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjcF90ICpwX3RjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9waV9pdGVyYXRvcl90ICpwX3BpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKnBfc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGFja2V0X2luZm9fdCAqcF9wYWNrX2luZm8pCit7CisgICAgICAgIE9QSl9CT09MIGxfcmVhZF9kYXRhOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfYnl0ZXNfcmVhZCA9IDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl90b3RhbF9ieXRlc19yZWFkID0gMDsKKworICAgICAgICAqcF9kYXRhX3JlYWQgPSAwOworCisgICAgICAgIGlmICghIG9wal90Ml9yZWFkX3BhY2tldF9oZWFkZXIocF90MixwX3RpbGUscF90Y3AscF9waSwmbF9yZWFkX2RhdGEscF9zcmMsJmxfbmJfYnl0ZXNfcmVhZCxwX21heF9sZW5ndGgscF9wYWNrX2luZm8pKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHBfc3JjICs9IGxfbmJfYnl0ZXNfcmVhZDsKKyAgICAgICAgbF9uYl90b3RhbF9ieXRlc19yZWFkICs9IGxfbmJfYnl0ZXNfcmVhZDsKKyAgICAgICAgcF9tYXhfbGVuZ3RoIC09IGxfbmJfYnl0ZXNfcmVhZDsKKworICAgICAgICAvKiB3ZSBzaG91bGQgcmVhZCBkYXRhIGZvciB0aGUgcGFja2V0ICovCisgICAgICAgIGlmIChsX3JlYWRfZGF0YSkgeworICAgICAgICAgICAgICAgIGxfbmJfYnl0ZXNfcmVhZCA9IDA7CisKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfdDJfc2tpcF9wYWNrZXRfZGF0YShwX3QyLHBfdGlsZSxwX3BpLCZsX25iX2J5dGVzX3JlYWQscF9tYXhfbGVuZ3RoLHBfcGFja19pbmZvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsX25iX3RvdGFsX2J5dGVzX3JlYWQgKz0gbF9uYl9ieXRlc19yZWFkOworICAgICAgICB9CisgICAgICAgICpwX2RhdGFfcmVhZCA9IGxfbmJfdG90YWxfYnl0ZXNfcmVhZDsKKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKworT1BKX0JPT0wgb3BqX3QyX3JlYWRfcGFja2V0X2hlYWRlciggb3BqX3QyX3QqIHBfdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3RpbGVfdCAqcF90aWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjcF90ICpwX3RjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9waV9pdGVyYXRvcl90ICpwX3BpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JPT0wgKiBwX2lzX2RhdGFfcHJlc2VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpwX3NyY19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGFja2V0X2luZm9fdCAqcF9wYWNrX2luZm8pCisKK3sKKyAgICAgICAgLyogbG9vcCAqLworICAgICAgICBPUEpfVUlOVDMyIGJhbmRubywgY2Jsa25vOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfY29kZV9ibG9ja3M7CisgICAgICAgIE9QSl9VSU5UMzIgbF9yZW1haW5pbmdfbGVuZ3RoOworICAgICAgICBPUEpfVUlOVDMyIGxfaGVhZGVyX2xlbmd0aDsKKyAgICAgICAgT1BKX1VJTlQzMiAqIGxfbW9kaWZpZWRfbGVuZ3RoX3B0ciA9IDAwOworICAgICAgICBPUEpfQllURSAqbF9jdXJyZW50X2RhdGEgPSBwX3NyY19kYXRhOworICAgICAgICBvcGpfY3BfdCAqbF9jcCA9IHBfdDItPmNwOworICAgICAgICBvcGpfYmlvX3QgKmxfYmlvID0gMDA7ICAvKiBCSU8gY29tcG9uZW50ICovCisgICAgICAgIG9wal90Y2RfYmFuZF90ICpsX2JhbmQgPSAwMDsKKyAgICAgICAgb3BqX3RjZF9jYmxrX2RlY190KiBsX2NibGsgPSAwMDsKKyAgICAgICAgb3BqX3RjZF9yZXNvbHV0aW9uX3QqIGxfcmVzID0gJnBfdGlsZS0+Y29tcHNbcF9waS0+Y29tcG5vXS5yZXNvbHV0aW9uc1twX3BpLT5yZXNub107CisKKyAgICAgICAgT1BKX0JZVEUgKmxfaGVhZGVyX2RhdGEgPSAwMDsKKyAgICAgICAgT1BKX0JZVEUgKipsX2hlYWRlcl9kYXRhX3N0YXJ0ID0gMDA7CisKKyAgICAgICAgT1BKX1VJTlQzMiBsX3ByZXNlbnQ7CisKKyAgICAgICAgaWYgKHBfcGktPmxheW5vID09IDApIHsKKyAgICAgICAgICAgICAgICBsX2JhbmQgPSBsX3Jlcy0+YmFuZHM7CisKKyAgICAgICAgICAgICAgICAvKiByZXNldCB0YWd0cmVlcyAqLworICAgICAgICAgICAgICAgIGZvciAoYmFuZG5vID0gMDsgYmFuZG5vIDwgbF9yZXMtPm51bWJhbmRzOyArK2JhbmRubykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF9wcmVjaW5jdF90ICpsX3ByYyA9ICZsX2JhbmQtPnByZWNpbmN0c1twX3BpLT5wcmVjbm9dOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgKChsX2JhbmQtPngxLWxfYmFuZC0+eDAgPT0gMCl8fChsX2JhbmQtPnkxLWxfYmFuZC0+eTAgPT0gMCkpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGd0X3Jlc2V0KGxfcHJjLT5pbmNsdHJlZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Z3RfcmVzZXQobF9wcmMtPmltc2J0cmVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrID0gbF9wcmMtPmNibGtzLmRlYzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX25iX2NvZGVfYmxvY2tzID0gbF9wcmMtPmN3ICogbF9wcmMtPmNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNibGtubyA9IDA7IGNibGtubyA8IGxfbmJfY29kZV9ibG9ja3M7ICsrY2Jsa25vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrLT5udW1zZWdzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NibGstPnJlYWxfbnVtX3NlZ3MgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jYmxrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9iYW5kOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIFNPUCBtYXJrZXJzICovCisKKyAgICAgICAgaWYgKHBfdGNwLT5jc3R5ICYgSjJLX0NQX0NTVFlfU09QKSB7CisgICAgICAgICAgICAgICAgaWYgKHBfbWF4X2xlbmd0aCA8IDYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRE8gb3BqX2V2ZW50X21zZyhwX3QyLT5jaW5mby0+ZXZlbnRfbWdyLCBFVlRfV0FSTklORywgIk5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIFNPUCBtYXJrZXJcbiIpOyAqLworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJOb3QgZW5vdWdoIHNwYWNlIGZvciBleHBlY3RlZCBTT1AgbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCgqbF9jdXJyZW50X2RhdGEpICE9IDB4ZmYgfHwgKCoobF9jdXJyZW50X2RhdGEgKyAxKSAhPSAweDkxKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9ETyBvcGpfZXZlbnRfbXNnKHBfdDItPmNpbmZvLT5ldmVudF9tZ3IsIEVWVF9XQVJOSU5HLCAiRXhwZWN0ZWQgU09QIG1hcmtlclxuIik7ICovCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIkV4cGVjdGVkIFNPUCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciA6IGV4cGVjdGVkIFNPUCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfZGF0YSArPSA2OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qKiBUT0RPIDogY2hlY2sgdGhlIE5zb3AgdmFsdWUgKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgIFdoZW4gdGhlIG1hcmtlciBQUFQvUFBNIGlzIHVzZWQgdGhlIHBhY2tldCBoZWFkZXIgYXJlIHN0b3JlIGluIFBQVC9QUE0gbWFya2VyCisgICAgICAgIFRoaXMgcGFydCBkZWFsIHdpdGggdGhpcyBjYXJhY3RlcmlzdGljCisgICAgICAgIHN0ZXAgMTogUmVhZCBwYWNrZXQgaGVhZGVyIGluIHRoZSBzYXZlZCBzdHJ1Y3R1cmUKKyAgICAgICAgc3RlcCAyOiBSZXR1cm4gdG8gY29kZXN0cmVhbSBmb3IgZGVjb2RpbmcKKyAgICAgICAgKi8KKworICAgICAgICBsX2JpbyA9IG9wal9iaW9fY3JlYXRlKCk7CisgICAgICAgIGlmICghIGxfYmlvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsX2NwLT5wcG0gPT0gMSkgeyAvKiBQUE0gKi8KKyAgICAgICAgICAgICAgICBsX2hlYWRlcl9kYXRhX3N0YXJ0ID0gJmxfY3AtPnBwbV9kYXRhOworICAgICAgICAgICAgICAgIGxfaGVhZGVyX2RhdGEgPSAqbF9oZWFkZXJfZGF0YV9zdGFydDsKKyAgICAgICAgICAgICAgICBsX21vZGlmaWVkX2xlbmd0aF9wdHIgPSAmKGxfY3AtPnBwbV9sZW4pOworCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocF90Y3AtPnBwdCA9PSAxKSB7IC8qIFBQVCAqLworICAgICAgICAgICAgICAgIGxfaGVhZGVyX2RhdGFfc3RhcnQgPSAmKHBfdGNwLT5wcHRfZGF0YSk7CisgICAgICAgICAgICAgICAgbF9oZWFkZXJfZGF0YSA9ICpsX2hlYWRlcl9kYXRhX3N0YXJ0OworICAgICAgICAgICAgICAgIGxfbW9kaWZpZWRfbGVuZ3RoX3B0ciA9ICYocF90Y3AtPnBwdF9sZW4pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeyAgLyogTm9ybWFsIENhc2UgKi8KKyAgICAgICAgICAgICAgICBsX2hlYWRlcl9kYXRhX3N0YXJ0ID0gJihsX2N1cnJlbnRfZGF0YSk7CisgICAgICAgICAgICAgICAgbF9oZWFkZXJfZGF0YSA9ICpsX2hlYWRlcl9kYXRhX3N0YXJ0OworICAgICAgICAgICAgICAgIGxfcmVtYWluaW5nX2xlbmd0aCA9IChPUEpfVUlOVDMyKShwX3NyY19kYXRhK3BfbWF4X2xlbmd0aC1sX2hlYWRlcl9kYXRhKTsKKyAgICAgICAgICAgICAgICBsX21vZGlmaWVkX2xlbmd0aF9wdHIgPSAmKGxfcmVtYWluaW5nX2xlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICBvcGpfYmlvX2luaXRfZGVjKGxfYmlvLCBsX2hlYWRlcl9kYXRhLCpsX21vZGlmaWVkX2xlbmd0aF9wdHIpOworCisgICAgICAgIGxfcHJlc2VudCA9IG9wal9iaW9fcmVhZChsX2JpbywgMSk7CisgICAgICAgIEpBU19GUFJJTlRGKHN0ZGVyciwgInByZXNlbnQ9JWQgXG4iLCBsX3ByZXNlbnQgKTsKKyAgICAgICAgaWYgKCFsX3ByZXNlbnQpIHsKKyAgICAgICAgICAgIC8qIFRPRE8gTVNEOiBubyB0ZXN0IHRvIGNvbnRyb2wgdGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uKi8KKyAgICAgICAgICAgICAgICBvcGpfYmlvX2luYWxpZ24obF9iaW8pOworICAgICAgICAgICAgICAgIGxfaGVhZGVyX2RhdGEgKz0gb3BqX2Jpb19udW1ieXRlcyhsX2Jpbyk7CisgICAgICAgICAgICAgICAgb3BqX2Jpb19kZXN0cm95KGxfYmlvKTsKKworICAgICAgICAgICAgICAgIC8qIEVQSCBtYXJrZXJzICovCisgICAgICAgICAgICAgICAgaWYgKHBfdGNwLT5jc3R5ICYgSjJLX0NQX0NTVFlfRVBIKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocF9tYXhfbGVuZ3RoIDwgMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIEVQSCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoKmxfaGVhZGVyX2RhdGEpICE9IDB4ZmYgfHwgKCoobF9oZWFkZXJfZGF0YSArIDEpICE9IDB4OTIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgOiBleHBlY3RlZCBFUEggbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfaGVhZGVyX2RhdGEgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsX2hlYWRlcl9sZW5ndGggPSAoT1BKX1VJTlQzMikobF9oZWFkZXJfZGF0YSAtICpsX2hlYWRlcl9kYXRhX3N0YXJ0KTsKKyAgICAgICAgICAgICAgICAqbF9tb2RpZmllZF9sZW5ndGhfcHRyIC09IGxfaGVhZGVyX2xlbmd0aDsKKyAgICAgICAgICAgICAgICAqbF9oZWFkZXJfZGF0YV9zdGFydCArPSBsX2hlYWRlcl9sZW5ndGg7CisKKyAgICAgICAgICAgICAgICAvKiA8PCBJTkRFWCAqLworICAgICAgICAgICAgICAgIC8qIEVuZCBvZiBwYWNrZXQgaGVhZGVyIHBvc2l0aW9uLiBDdXJyZW50bHkgb25seSByZXByZXNlbnRzIHRoZSBkaXN0YW5jZSB0byBzdGFydCBvZiBwYWNrZXQKKyAgICAgICAgICAgICAgICAgICBXaWxsIGJlIHVwZGF0ZWQgbGF0ZXIgYnkgaW5jcmVtZW50aW5nIHdpdGggcGFja2V0IHN0YXJ0IHZhbHVlICovCisgICAgICAgICAgICAgICAgaWYgKHBfcGFja19pbmZvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwX3BhY2tfaW5mby0+ZW5kX3BoX3BvcyA9IChPUEpfSU5UMzIpKGxfY3VycmVudF9kYXRhIC0gcF9zcmNfZGF0YSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIElOREVYID4+ICovCisKKyAgICAgICAgICAgICAgICAqIHBfaXNfZGF0YV9wcmVzZW50ID0gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICpwX2RhdGFfcmVhZCA9IChPUEpfVUlOVDMyKShsX2N1cnJlbnRfZGF0YSAtIHBfc3JjX2RhdGEpOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfVFJVRTsKKyAgICAgICAgfQorCisgICAgICAgIGxfYmFuZCA9IGxfcmVzLT5iYW5kczsKKyAgICAgICAgZm9yIChiYW5kbm8gPSAwOyBiYW5kbm8gPCBsX3Jlcy0+bnVtYmFuZHM7ICsrYmFuZG5vKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjZF9wcmVjaW5jdF90ICpsX3ByYyA9ICYobF9iYW5kLT5wcmVjaW5jdHNbcF9waS0+cHJlY25vXSk7CisKKyAgICAgICAgICAgICAgICBpZiAoKGxfYmFuZC0+eDEtbF9iYW5kLT54MCA9PSAwKXx8KGxfYmFuZC0+eTEtbF9iYW5kLT55MCA9PSAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytsX2JhbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsX25iX2NvZGVfYmxvY2tzID0gbF9wcmMtPmN3ICogbF9wcmMtPmNoOworICAgICAgICAgICAgICAgIGxfY2JsayA9IGxfcHJjLT5jYmxrcy5kZWM7CisgICAgICAgICAgICAgICAgZm9yIChjYmxrbm8gPSAwOyBjYmxrbm8gPCBsX25iX2NvZGVfYmxvY2tzOyBjYmxrbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBsX2luY2x1ZGVkLGxfaW5jcmVtZW50LCBsX3NlZ25vOworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIG47CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIGNibGsgbm90IHlldCBpbmNsdWRlZCBiZWZvcmUgLS0+IGluY2x1c2lvbiB0YWd0cmVlICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxfY2Jsay0+bnVtc2VncykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2luY2x1ZGVkID0gb3BqX3RndF9kZWNvZGUobF9iaW8sIGxfcHJjLT5pbmNsdHJlZSwgY2Jsa25vLCAoT1BKX0lOVDMyKShwX3BpLT5sYXlubyArIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZWxzZSBvbmUgYml0ICovCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9pbmNsdWRlZCA9IG9wal9iaW9fcmVhZChsX2JpbywgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIGNibGsgbm90IGluY2x1ZGVkICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxfaW5jbHVkZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrLT5udW1uZXdwYXNzZXMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfY2JsazsKKyAgICAgICAgSkFTX0ZQUklOVEYoc3RkZXJyLCAiaW5jbHVkZWQ9JWQgXG4iLCBsX2luY2x1ZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIGNibGsgbm90IHlldCBpbmNsdWRlZCAtLT4gemVyby1iaXRwbGFuZSB0YWd0cmVlICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxfY2Jsay0+bnVtc2VncykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGkgPSAwOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICghb3BqX3RndF9kZWNvZGUobF9iaW8sIGxfcHJjLT5pbXNidHJlZSwgY2Jsa25vLCAoT1BKX0lOVDMyKWkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrLT5udW1icHMgPSAoT1BKX1VJTlQzMilsX2JhbmQtPm51bWJwcyArIDEgLSBpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NibGstPm51bWxlbmJpdHMgPSAzOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kaW5nIHBhc3NlcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrLT5udW1uZXdwYXNzZXMgPSBvcGpfdDJfZ2V0bnVtcGFzc2VzKGxfYmlvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfaW5jcmVtZW50ID0gb3BqX3QyX2dldGNvbW1hY29kZShsX2Jpbyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBpbmRpY2F0b3IgaW5jcmVtZW50ICovCisgICAgICAgICAgICAgICAgICAgICAgICBsX2NibGstPm51bWxlbmJpdHMgKz0gbF9pbmNyZW1lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZ25vID0gMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsX2NibGstPm51bXNlZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgb3BqX3QyX2luaXRfc2VnKGxfY2JsaywgbF9zZWdubywgcF90Y3AtPnRjY3BzW3BfcGktPmNvbXBub10uY2Jsa3N0eSwgMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfYmlvX2Rlc3Ryb3kobF9iaW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZ25vID0gbF9jYmxrLT5udW1zZWdzIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfY2Jsay0+c2Vnc1tsX3NlZ25vXS5udW1wYXNzZXMgPT0gbF9jYmxrLT5zZWdzW2xfc2Vnbm9dLm1heHBhc3NlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9zZWdubzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBvcGpfdDJfaW5pdF9zZWcobF9jYmxrLCBsX3NlZ25vLCBwX3RjcC0+dGNjcHNbcF9waS0+Y29tcG5vXS5jYmxrc3R5LCAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2Jpb19kZXN0cm95KGxfYmlvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBuID0gKE9QSl9JTlQzMilsX2NibGstPm51bW5ld3Bhc3NlczsKKworICAgICAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NibGstPnNlZ3NbbF9zZWdub10ubnVtbmV3cGFzc2VzID0gKE9QSl9VSU5UMzIpb3BqX2ludF9taW4oKE9QSl9JTlQzMikobF9jYmxrLT5zZWdzW2xfc2Vnbm9dLm1heHBhc3NlcyAtIGxfY2Jsay0+c2Vnc1tsX3NlZ25vXS5udW1wYXNzZXMpLCBuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrLT5zZWdzW2xfc2Vnbm9dLm5ld2xlbiA9IG9wal9iaW9fcmVhZChsX2JpbywgbF9jYmxrLT5udW1sZW5iaXRzICsgb3BqX3VpbnRfZmxvb3Jsb2cyKGxfY2Jsay0+c2Vnc1tsX3NlZ25vXS5udW1uZXdwYXNzZXMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKQVNfRlBSSU5URihzdGRlcnIsICJpbmNsdWRlZD0lZCBudW1uZXdwYXNzZXM9JWQgaW5jcmVtZW50PSVkIGxlbj0lZCBcbiIsIGxfaW5jbHVkZWQsIGxfY2Jsay0+c2Vnc1tsX3NlZ25vXS5udW1uZXdwYXNzZXMsIGxfaW5jcmVtZW50LCBsX2NibGstPnNlZ3NbbF9zZWdub10ubmV3bGVuICk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAtPSAoT1BKX0lOVDMyKWxfY2Jsay0+c2Vnc1tsX3NlZ25vXS5udW1uZXdwYXNzZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9zZWdubzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG9wal90Ml9pbml0X3NlZyhsX2NibGssIGxfc2Vnbm8sIHBfdGNwLT50Y2Nwc1twX3BpLT5jb21wbm9dLmNibGtzdHksIDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfYmlvX2Rlc3Ryb3kobF9iaW8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKG4gPiAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgKytsX2NibGs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKytsX2JhbmQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW9wal9iaW9faW5hbGlnbihsX2JpbykpIHsKKyAgICAgICAgICAgICAgICBvcGpfYmlvX2Rlc3Ryb3kobF9iaW8pOworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBsX2hlYWRlcl9kYXRhICs9IG9wal9iaW9fbnVtYnl0ZXMobF9iaW8pOworICAgICAgICBvcGpfYmlvX2Rlc3Ryb3kobF9iaW8pOworCisgICAgICAgIC8qIEVQSCBtYXJrZXJzICovCisgICAgICAgIGlmIChwX3RjcC0+Y3N0eSAmIEoyS19DUF9DU1RZX0VQSCkgeworICAgICAgICAgICAgICAgIGlmIChwX21heF9sZW5ndGggPCAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIEVQSCBtYXJrZXJcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKCpsX2hlYWRlcl9kYXRhKSAhPSAweGZmIHx8ICgqKGxfaGVhZGVyX2RhdGEgKyAxKSAhPSAweDkyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9ETyBvcGpfZXZlbnRfbXNnKHQyLT5jaW5mby0+ZXZlbnRfbWdyLCBFVlRfRVJST1IsICJFeHBlY3RlZCBFUEggbWFya2VyXG4iKTsgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgOiBleHBlY3RlZCBFUEggbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbF9oZWFkZXJfZGF0YSArPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxfaGVhZGVyX2xlbmd0aCA9IChPUEpfVUlOVDMyKShsX2hlYWRlcl9kYXRhIC0gKmxfaGVhZGVyX2RhdGFfc3RhcnQpOworICAgICAgICBKQVNfRlBSSU5URiggc3RkZXJyLCAiaGRybGVuPSVkIFxuIiwgbF9oZWFkZXJfbGVuZ3RoICk7CisgICAgICAgIEpBU19GUFJJTlRGKCBzdGRlcnIsICJwYWNrZXQgYm9keVxuIik7CisgICAgICAgICpsX21vZGlmaWVkX2xlbmd0aF9wdHIgLT0gbF9oZWFkZXJfbGVuZ3RoOworICAgICAgICAqbF9oZWFkZXJfZGF0YV9zdGFydCArPSBsX2hlYWRlcl9sZW5ndGg7CisKKyAgICAgICAgLyogPDwgSU5ERVggKi8KKyAgICAgICAgLyogRW5kIG9mIHBhY2tldCBoZWFkZXIgcG9zaXRpb24uIEN1cnJlbnRseSBvbmx5IHJlcHJlc2VudHMgdGhlIGRpc3RhbmNlIHRvIHN0YXJ0IG9mIHBhY2tldAorICAgICAgICAgV2lsbCBiZSB1cGRhdGVkIGxhdGVyIGJ5IGluY3JlbWVudGluZyB3aXRoIHBhY2tldCBzdGFydCB2YWx1ZSAqLworICAgICAgICBpZiAocF9wYWNrX2luZm8pIHsKKyAgICAgICAgICAgICAgICBwX3BhY2tfaW5mby0+ZW5kX3BoX3BvcyA9IChPUEpfSU5UMzIpKGxfY3VycmVudF9kYXRhIC0gcF9zcmNfZGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgLyogSU5ERVggPj4gKi8KKworICAgICAgICAqcF9pc19kYXRhX3ByZXNlbnQgPSBPUEpfVFJVRTsKKyAgICAgICAgKnBfZGF0YV9yZWFkID0gKE9QSl9VSU5UMzIpKGxfY3VycmVudF9kYXRhIC0gcF9zcmNfZGF0YSk7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfdDJfcmVhZF9wYWNrZXRfZGF0YSggICBvcGpfdDJfdCogcF90MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfdGlsZV90ICpwX3RpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfaXRlcmF0b3JfdCAqcF9waSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpwX3NyY19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGFja2V0X2luZm9fdCAqcGFja19pbmZvKQoreworICAgICAgICBPUEpfVUlOVDMyIGJhbmRubywgY2Jsa25vOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfY29kZV9ibG9ja3M7CisgICAgICAgIE9QSl9CWVRFICpsX2N1cnJlbnRfZGF0YSA9IHBfc3JjX2RhdGE7CisgICAgICAgIG9wal90Y2RfYmFuZF90ICpsX2JhbmQgPSAwMDsKKyAgICAgICAgb3BqX3RjZF9jYmxrX2RlY190KiBsX2NibGsgPSAwMDsKKyAgICAgICAgb3BqX3RjZF9yZXNvbHV0aW9uX3QqIGxfcmVzID0gJnBfdGlsZS0+Y29tcHNbcF9waS0+Y29tcG5vXS5yZXNvbHV0aW9uc1twX3BpLT5yZXNub107CisKKyAgICAgICAgT1BKX0FSR19OT1RfVVNFRChwX3QyKTsKKyAgICAgICAgT1BKX0FSR19OT1RfVVNFRChwYWNrX2luZm8pOworCisgICAgICAgIGxfYmFuZCA9IGxfcmVzLT5iYW5kczsKKyAgICAgICAgZm9yIChiYW5kbm8gPSAwOyBiYW5kbm8gPCBsX3Jlcy0+bnVtYmFuZHM7ICsrYmFuZG5vKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjZF9wcmVjaW5jdF90ICpsX3ByYyA9ICZsX2JhbmQtPnByZWNpbmN0c1twX3BpLT5wcmVjbm9dOworCisgICAgICAgICAgICAgICAgaWYgKChsX2JhbmQtPngxLWxfYmFuZC0+eDAgPT0gMCl8fChsX2JhbmQtPnkxLWxfYmFuZC0+eTAgPT0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9iYW5kOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbF9uYl9jb2RlX2Jsb2NrcyA9IGxfcHJjLT5jdyAqIGxfcHJjLT5jaDsKKyAgICAgICAgICAgICAgICBsX2NibGsgPSBsX3ByYy0+Y2Jsa3MuZGVjOworCisgICAgICAgICAgICAgICAgZm9yIChjYmxrbm8gPSAwOyBjYmxrbm8gPCBsX25iX2NvZGVfYmxvY2tzOyArK2NibGtubykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF9zZWdfdCAqbF9zZWcgPSAwMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsX2NibGstPm51bW5ld3Bhc3NlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBub3RoaW5nIHRvIGRvICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jYmxrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsX2NibGstPm51bXNlZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zZWcgPSBsX2NibGstPnNlZ3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jYmxrLT5udW1zZWdzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NibGstPmRhdGFfY3VycmVudF9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZyA9ICZsX2NibGstPnNlZ3NbbF9jYmxrLT5udW1zZWdzIC0gMV07CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfc2VnLT5udW1wYXNzZXMgPT0gbF9zZWctPm1heHBhc3NlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9zZWc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX2NibGstPm51bXNlZ3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9jdXJyZW50X2RhdGEgKyBsX3NlZy0+bmV3bGVuID4gcF9zcmNfZGF0YSArIHBfbWF4X2xlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicmVhZDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggbWF4ICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZy0+bmV3bGVuLCBwX21heF9sZW5ndGgsIGNibGtubywgcF9waS0+cHJlY25vLCBiYW5kbm8sIHBfcGktPnJlc25vLCBwX3BpLT5jb21wbm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworI2lmZGVmIFVTRV9KUFdMCisgICAgICAgICAgICAgICAgICAgICAgICAvKiB3ZSBuZWVkIGhlcmUgYSBqMmsgaGFuZGxlIHRvIHZlcmlmeSBpZiBtYWtpbmcgYSBjaGVjayB0bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHZhbGlkaXR5IG9mIGNibG9ja3MgcGFyYW1ldGVycyBpcyBzZWxlY3RlZCBmcm9tIHVzZXIgKC1XKSAqLworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxldCdzIGNoZWNrIHRoYXQgd2UgYXJlIG5vdCBleGNlZWRpbmcgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsX2NibGstPmxlbiArIGxfc2VnLT5uZXdsZW4pID4gODE5MikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF90Mi0+Y2luZm8sIEVWVF9XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkpQV0w6IHNlZ21lbnQgdG9vIGxvbmcgKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc2VnLT5uZXdsZW4sIGNibGtubywgcF9waS0+cHJlY25vLCBiYW5kbm8sIHBfcGktPnJlc25vLCBwX3BpLT5jb21wbm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSlBXTF9BU1NVTUUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF90Mi0+Y2luZm8sIEVWVF9FUlJPUiwgIkpQV0w6IGdpdmluZyB1cFxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZy0+bmV3bGVuID0gODE5MiAtIGxfY2Jsay0+bGVuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF90Mi0+Y2luZm8sIEVWVF9XQVJOSU5HLCAiICAgICAgLSB0cnVuY2F0aW5nIHNlZ21lbnQgdG8gJWRcbiIsIGxfc2VnLT5uZXdsZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworCisjZW5kaWYgLyogVVNFX0pQV0wgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGNibGstPmRhdGEgaGF2ZSBhbGxvY2F0ZWQgZW5vdWdoIG1lbW9yeSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxfY2Jsay0+ZGF0YV9jdXJyZW50X3NpemUgKyBsX3NlZy0+bmV3bGVuKSA+IGxfY2Jsay0+ZGF0YV9tYXhfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUqIG5ld19jYmxrX2RhdGEgPSAoT1BKX0JZVEUqKSBvcGpfcmVhbGxvYyhsX2NibGstPmRhdGEsIGxfY2Jsay0+ZGF0YV9jdXJyZW50X3NpemUgKyBsX3NlZy0+bmV3bGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEgbmV3X2NibGtfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfY2Jsay0+ZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrLT5kYXRhX21heF9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gcmVhbGxvYyBjb2RlIGJsb2NrIGNhdGEhXG4iKTsgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrLT5kYXRhX21heF9zaXplID0gbF9jYmxrLT5kYXRhX2N1cnJlbnRfc2l6ZSArIGxfc2VnLT5uZXdsZW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NibGstPmRhdGEgPSBuZXdfY2Jsa19kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShsX2NibGstPmRhdGEgKyBsX2NibGstPmRhdGFfY3VycmVudF9zaXplLCBsX2N1cnJlbnRfZGF0YSwgbF9zZWctPm5ld2xlbik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfc2VnLT5udW1wYXNzZXMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc2VnLT5kYXRhID0gJmxfY2Jsay0+ZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZy0+ZGF0YWluZGV4ID0gbF9jYmxrLT5kYXRhX2N1cnJlbnRfc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9kYXRhICs9IGxfc2VnLT5uZXdsZW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc2VnLT5udW1wYXNzZXMgKz0gbF9zZWctPm51bW5ld3Bhc3NlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrLT5udW1uZXdwYXNzZXMgLT0gbF9zZWctPm51bW5ld3Bhc3NlczsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZy0+cmVhbF9udW1fcGFzc2VzID0gbF9zZWctPm51bXBhc3NlczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jYmxrLT5kYXRhX2N1cnJlbnRfc2l6ZSArPSBsX3NlZy0+bmV3bGVuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZy0+bGVuICs9IGxfc2VnLT5uZXdsZW47CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfY2Jsay0+bnVtbmV3cGFzc2VzID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9zZWc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX2NibGstPm51bXNlZ3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGxfY2Jsay0+bnVtbmV3cGFzc2VzID4gMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfY2Jsay0+cmVhbF9udW1fc2VncyA9IGxfY2Jsay0+bnVtc2VnczsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jYmxrOworICAgICAgICAgICAgICAgIH0gLyogbmV4dCBjb2RlX2Jsb2NrICovCisKKyAgICAgICAgICAgICAgICArK2xfYmFuZDsKKyAgICAgICAgfQorCisgICAgICAgICoocF9kYXRhX3JlYWQpID0gKE9QSl9VSU5UMzIpKGxfY3VycmVudF9kYXRhIC0gcF9zcmNfZGF0YSk7CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfdDJfc2tpcF9wYWNrZXRfZGF0YSggICBvcGpfdDJfdCogcF90MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfdGlsZV90ICpwX3RpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfcGlfaXRlcmF0b3JfdCAqcF9waSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3BhY2tldF9pbmZvX3QgKnBhY2tfaW5mbykKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBiYW5kbm8sIGNibGtubzsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2NvZGVfYmxvY2tzOworICAgICAgICBvcGpfdGNkX2JhbmRfdCAqbF9iYW5kID0gMDA7CisgICAgICAgIG9wal90Y2RfY2Jsa19kZWNfdCogbF9jYmxrID0gMDA7CisgICAgICAgIG9wal90Y2RfcmVzb2x1dGlvbl90KiBsX3JlcyA9ICZwX3RpbGUtPmNvbXBzW3BfcGktPmNvbXBub10ucmVzb2x1dGlvbnNbcF9waS0+cmVzbm9dOworCisgICAgICAgIE9QSl9BUkdfTk9UX1VTRUQocF90Mik7CisgICAgICAgIE9QSl9BUkdfTk9UX1VTRUQocGFja19pbmZvKTsKKworICAgICAgICAqcF9kYXRhX3JlYWQgPSAwOworICAgICAgICBsX2JhbmQgPSBsX3Jlcy0+YmFuZHM7CisKKyAgICAgICAgZm9yIChiYW5kbm8gPSAwOyBiYW5kbm8gPCBsX3Jlcy0+bnVtYmFuZHM7ICsrYmFuZG5vKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjZF9wcmVjaW5jdF90ICpsX3ByYyA9ICZsX2JhbmQtPnByZWNpbmN0c1twX3BpLT5wcmVjbm9dOworCisgICAgICAgICAgICAgICAgaWYgKChsX2JhbmQtPngxLWxfYmFuZC0+eDAgPT0gMCl8fChsX2JhbmQtPnkxLWxfYmFuZC0+eTAgPT0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9iYW5kOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbF9uYl9jb2RlX2Jsb2NrcyA9IGxfcHJjLT5jdyAqIGxfcHJjLT5jaDsKKyAgICAgICAgICAgICAgICBsX2NibGsgPSBsX3ByYy0+Y2Jsa3MuZGVjOworCisgICAgICAgICAgICAgICAgZm9yIChjYmxrbm8gPSAwOyBjYmxrbm8gPCBsX25iX2NvZGVfYmxvY2tzOyArK2NibGtubykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF9zZWdfdCAqbF9zZWcgPSAwMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsX2NibGstPm51bW5ld3Bhc3NlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBub3RoaW5nIHRvIGRvICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jYmxrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsX2NibGstPm51bXNlZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zZWcgPSBsX2NibGstPnNlZ3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jYmxrLT5udW1zZWdzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NibGstPmRhdGFfY3VycmVudF9zaXplID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZyA9ICZsX2NibGstPnNlZ3NbbF9jYmxrLT5udW1zZWdzIC0gMV07CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfc2VnLT5udW1wYXNzZXMgPT0gbF9zZWctPm1heHBhc3NlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9zZWc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX2NibGstPm51bXNlZ3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKiBwX2RhdGFfcmVhZCArIGxfc2VnLT5uZXdsZW4gPiBwX21heF9sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNraXA6IHNlZ21lbnQgdG9vIGxvbmcgKCVkKSB3aXRoIG1heCAoJWQpIGZvciBjb2RlYmxvY2sgJWQgKHA9JWQsIGI9JWQsIHI9JWQsIGM9JWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zZWctPm5ld2xlbiwgcF9tYXhfbGVuZ3RoLCBjYmxrbm8sIHBfcGktPnByZWNubywgYmFuZG5vLCBwX3BpLT5yZXNubywgcF9waS0+Y29tcG5vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyNpZmRlZiBVU0VfSlBXTAorICAgICAgICAgICAgICAgICAgICAgICAgLyogd2UgbmVlZCBoZXJlIGEgajJrIGhhbmRsZSB0byB2ZXJpZnkgaWYgbWFraW5nIGEgY2hlY2sgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB2YWxpZGl0eSBvZiBjYmxvY2tzIHBhcmFtZXRlcnMgaXMgc2VsZWN0ZWQgZnJvbSB1c2VyICgtVykgKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsZXQncyBjaGVjayB0aGF0IHdlIGFyZSBub3QgZXhjZWVkaW5nICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobF9jYmxrLT5sZW4gKyBsX3NlZy0+bmV3bGVuKSA+IDgxOTIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfdDItPmNpbmZvLCBFVlRfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKUFdMOiBzZWdtZW50IHRvbyBsb25nICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZy0+bmV3bGVuLCBjYmxrbm8sIHBfcGktPnByZWNubywgYmFuZG5vLCBwX3BpLT5yZXNubywgcF9waS0+Y29tcG5vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUpQV0xfQVNTVU1FKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZXZlbnRfbXNnKHBfdDItPmNpbmZvLCBFVlRfRVJST1IsICJKUFdMOiBnaXZpbmcgdXBcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC05OTk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc2VnLT5uZXdsZW4gPSA4MTkyIC0gbF9jYmxrLT5sZW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhwX3QyLT5jaW5mbywgRVZUX1dBUk5JTkcsICIgICAgICAtIHRydW5jYXRpbmcgc2VnbWVudCB0byAlZFxuIiwgbF9zZWctPm5ld2xlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisKKyNlbmRpZiAvKiBVU0VfSlBXTCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpBU19GUFJJTlRGKHN0ZGVyciwgInBfZGF0YV9yZWFkICglZCkgbmV3bGVuICglZCkgXG4iLCAqcF9kYXRhX3JlYWQsIGxfc2VnLT5uZXdsZW4gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihwX2RhdGFfcmVhZCkgKz0gbF9zZWctPm5ld2xlbjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NlZy0+bnVtcGFzc2VzICs9IGxfc2VnLT5udW1uZXdwYXNzZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY2Jsay0+bnVtbmV3cGFzc2VzIC09IGxfc2VnLT5udW1uZXdwYXNzZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2NibGstPm51bW5ld3Bhc3NlcyA+IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfc2VnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jYmxrLT5udW1zZWdzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChsX2NibGstPm51bW5ld3Bhc3NlcyA+IDApOworCisgICAgICAgICAgICAgICAgICAgICAgICArK2xfY2JsazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK2xfYmFuZDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworCitPUEpfQk9PTCBvcGpfdDJfaW5pdF9zZWcoICAgb3BqX3RjZF9jYmxrX2RlY190KiBjYmxrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY2Jsa3N0eSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBmaXJzdCkKK3sKKyAgICAgICAgb3BqX3RjZF9zZWdfdCogc2VnID0gMDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9zZWdzID0gaW5kZXggKyAxOworCisgICAgICAgIGlmIChsX25iX3NlZ3MgPiBjYmxrLT5tX2N1cnJlbnRfbWF4X3NlZ3MpIHsKKyAgICAgICAgICAgICAgICBvcGpfdGNkX3NlZ190KiBuZXdfc2VnczsKKyAgICAgICAgICAgICAgICBjYmxrLT5tX2N1cnJlbnRfbWF4X3NlZ3MgKz0gT1BKX0oyS19ERUZBVUxUX05CX1NFR1M7CisKKyAgICAgICAgICAgICAgICBuZXdfc2VncyA9IChvcGpfdGNkX3NlZ190Kikgb3BqX3JlYWxsb2MoY2Jsay0+c2VncywgY2Jsay0+bV9jdXJyZW50X21heF9zZWdzICogc2l6ZW9mKG9wal90Y2Rfc2VnX3QpKTsKKyAgICAgICAgICAgICAgICBpZighIG5ld19zZWdzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShjYmxrLT5zZWdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNibGstPnNlZ3MgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgY2Jsay0+bV9jdXJyZW50X21heF9zZWdzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBpbml0aWFsaXplIHNlZ21lbnQgJWRcbiIsIGxfbmJfc2Vncyk7ICovCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYmxrLT5zZWdzID0gbmV3X3NlZ3M7CisgICAgICAgIH0KKworICAgICAgICBzZWcgPSAmY2Jsay0+c2Vnc1tpbmRleF07CisgICAgICAgIG1lbXNldChzZWcsMCxzaXplb2Yob3BqX3RjZF9zZWdfdCkpOworCisgICAgICAgIGlmIChjYmxrc3R5ICYgSjJLX0NDUF9DQkxLU1RZX1RFUk1BTEwpIHsKKyAgICAgICAgICAgICAgICBzZWctPm1heHBhc3NlcyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2Jsa3N0eSAmIEoyS19DQ1BfQ0JMS1NUWV9MQVpZKSB7CisgICAgICAgICAgICAgICAgaWYgKGZpcnN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWctPm1heHBhc3NlcyA9IDEwOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWctPm1heHBhc3NlcyA9ICgoKHNlZyAtIDEpLT5tYXhwYXNzZXMgPT0gMSkgfHwgKChzZWcgLSAxKS0+bWF4cGFzc2VzID09IDEwKSkgPyAyIDogMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2VnLT5tYXhwYXNzZXMgPSAxMDk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvdDIuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMTE0MWUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvdDIuaApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDExLTIwMTIsIENlbnRyZSBOYXRpb25hbCBkJ0V0dWRlcyBTcGF0aWFsZXMgKENORVMpLCBGUiAKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgQ1MgU3lzdGVtZXMgZCdJbmZvcm1hdGlvbiwgRnJhbmNlCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIF9fVDJfSAorI2RlZmluZSBfX1QyX0gKKy8qKgorQGZpbGUgdDIuaAorQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIGEgdGllci0yIGNvZGluZyAocGFja2V0aXphdGlvbiBvZiBjb2RlLWJsb2NrIGRhdGEpIChUMikKKworKi8KKworLyoqIEBkZWZncm91cCBUMiBUMiAtIEltcGxlbWVudGF0aW9uIG9mIGEgdGllci0yIGNvZGluZyAqLworLypAeyovCisKKy8qKgorVGllci0yIGNvZGluZworKi8KK3R5cGVkZWYgc3RydWN0IG9wal90MiB7CisKKwkvKiogRW5jb2Rpbmc6IHBvaW50ZXIgdG8gdGhlIHNyYyBpbWFnZS4gRGVjb2Rpbmc6IHBvaW50ZXIgdG8gdGhlIGRzdCBpbWFnZS4gKi8KKwlvcGpfaW1hZ2VfdCAqaW1hZ2U7CisJLyoqIHBvaW50ZXIgdG8gdGhlIGltYWdlIGNvZGluZyBwYXJhbWV0ZXJzICovCisJb3BqX2NwX3QgKmNwOworfSBvcGpfdDJfdDsKKworLyoqIEBuYW1lIEV4cG9ydGVkIGZ1bmN0aW9ucyAqLworLypAeyovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKioKK0VuY29kZSB0aGUgcGFja2V0cyBvZiBhIHRpbGUgdG8gYSBkZXN0aW5hdGlvbiBidWZmZXIKK0BwYXJhbSB0MiAgICAgICAgICAgICAgIFQyIGhhbmRsZQorQHBhcmFtIHRpbGVubyAgICAgICAgICAgbnVtYmVyIG9mIHRoZSB0aWxlIGVuY29kZWQKK0BwYXJhbSB0aWxlICAgICAgICAgICAgIHRoZSB0aWxlIGZvciB3aGljaCB0byB3cml0ZSB0aGUgcGFja2V0cworQHBhcmFtIG1heGxheWVycyAgICAgICAgbWF4aW11bSBudW1iZXIgb2YgbGF5ZXJzCitAcGFyYW0gZGVzdCAgICAgICAgICAgICB0aGUgZGVzdGluYXRpb24gYnVmZmVyCitAcGFyYW0gcF9kYXRhX3dyaXR0ZW4gICBGSVhNRSBET0MKK0BwYXJhbSBsZW4gICAgICAgICAgICAgIHRoZSBsZW5ndGggb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcgorQHBhcmFtIGNzdHJfaW5mbyAgICAgICAgQ29kZXN0cmVhbSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUKK0BwYXJhbSB0cG51bSAgICAgICAgICAgIFRpbGUgcGFydCBudW1iZXIgb2YgdGhlIGN1cnJlbnQgdGlsZQorQHBhcmFtIHRwcG9zICAgICAgICAgICAgVGhlIHBvc2l0aW9uIG9mIHRoZSB0aWxlIHBhcnQgZmxhZyBpbiB0aGUgcHJvZ3Jlc3Npb24gb3JkZXIKK0BwYXJhbSBwaW5vICAgICAgICAgICAgIEZJWE1FIERPQworQHBhcmFtIHQyX21vZGUgICAgICAgICAgSWYgPT0gMCBJbiBUaHJlc2hvbGQgY2FsY3VsYXRpb24gLElmID09IDEgRmluYWwgcGFzcworKi8KK09QSl9CT09MIG9wal90Ml9lbmNvZGVfcGFja2V0cygJb3BqX3QyX3QqIHQyLAorCQkJCQkJCQlPUEpfVUlOVDMyIHRpbGVubywKKwkJCQkJCQkJb3BqX3RjZF90aWxlX3QgKnRpbGUsCisJCQkJCQkJCU9QSl9VSU5UMzIgbWF4bGF5ZXJzLAorCQkJCQkJCQlPUEpfQllURSAqZGVzdCwKKwkJCQkJCQkJT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorCQkJCQkJCQlPUEpfVUlOVDMyIGxlbiwKKwkJCQkJCQkJb3BqX2NvZGVzdHJlYW1faW5mb190ICpjc3RyX2luZm8sCisJCQkJCQkJCU9QSl9VSU5UMzIgdHBudW0sCisJCQkJCQkJCU9QSl9JTlQzMiB0cHBvcywKKwkJCQkJCQkJT1BKX1VJTlQzMiBwaW5vLAorCQkJCQkJCQlKMktfVDJfTU9ERSB0Ml9tb2RlKTsKKworLyoqCitEZWNvZGUgdGhlIHBhY2tldHMgb2YgYSB0aWxlIGZyb20gYSBzb3VyY2UgYnVmZmVyCitAcGFyYW0gdDIgVDIgaGFuZGxlCitAcGFyYW0gdGlsZW5vIG51bWJlciB0aGF0IGlkZW50aWZpZXMgdGhlIHRpbGUgZm9yIHdoaWNoIHRvIGRlY29kZSB0aGUgcGFja2V0cworQHBhcmFtIHRpbGUgdGlsZSBmb3Igd2hpY2ggdG8gZGVjb2RlIHRoZSBwYWNrZXRzCitAcGFyYW0gc3JjICAgICAgICAgRklYTUUgRE9DCitAcGFyYW0gcF9kYXRhX3JlYWQgdGhlIHNvdXJjZSBidWZmZXIKK0BwYXJhbSBsZW4gbGVuZ3RoIG9mIHRoZSBzb3VyY2UgYnVmZmVyCitAcGFyYW0gY3N0cl9pbmZvICAgRklYTUUgRE9DCisKK0ByZXR1cm4gRklYTUUgRE9DCisgKi8KK09QSl9CT09MIG9wal90Ml9kZWNvZGVfcGFja2V0cygJb3BqX3QyX3QgKnQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRpbGVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlX3QgKnRpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jb2Rlc3RyZWFtX2luZGV4X3QgKmNzdHJfaW5mbyk7CisKKy8qKgorICogQ3JlYXRlcyBhIFRpZXIgMiBoYW5kbGUKKyAqCisgKiBAcGFyYW0JcF9pbWFnZQkJU291cmNlIG9yIGRlc3RpbmF0aW9uIGltYWdlCisgKiBAcGFyYW0JcF9jcAkJSW1hZ2UgY29kaW5nIHBhcmFtZXRlcnMuCisgKiBAcmV0dXJuCQlhIG5ldyBUMiBoYW5kbGUgaWYgc3VjY2Vzc2Z1bCwgTlVMTCBvdGhlcndpc2UuCisqLworb3BqX3QyX3QqIG9wal90Ml9jcmVhdGUob3BqX2ltYWdlX3QgKnBfaW1hZ2UsIG9wal9jcF90ICpwX2NwKTsKKworLyoqCitEZXN0cm95IGEgVDIgaGFuZGxlCitAcGFyYW0gdDIgVDIgaGFuZGxlIHRvIGRlc3Ryb3kKKyovCit2b2lkIG9wal90Ml9kZXN0cm95KG9wal90Ml90ICp0Mik7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKkB9Ki8KKworLypAfSovCisKKyNlbmRpZiAvKiBfX1QyX0ggKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90Y2QuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90Y2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGZlYjE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3RjZC5jCkBAIC0wLDAgKzEsMjEyOSBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsIFBhcnZhdGhhIEVsYW5nb3ZhbgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDExLTIwMTIsIENlbnRyZSBOYXRpb25hbCBkJ0V0dWRlcyBTcGF0aWFsZXMgKENORVMpLCBGUiAKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgQ1MgU3lzdGVtZXMgZCdJbmZvcm1hdGlvbiwgRnJhbmNlCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJvcGpfaW5jbHVkZXMuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyogVE9ETyBNU0Q6ICovCisjaWZkZWYgVE9ET19NU0QgCit2b2lkIHRjZF9kdW1wKEZJTEUgKmZkLCBvcGpfdGNkX3QgKnRjZCwgb3BqX3RjZF9pbWFnZV90ICogaW1nKSB7CisgICAgICAgIGludCB0aWxlbm8sIGNvbXBubywgcmVzbm8sIGJhbmRubywgcHJlY25vOy8qLCBjYmxrbm87Ki8KKworICAgICAgICBmcHJpbnRmKGZkLCAiaW1hZ2Uge1xuIik7CisgICAgICAgIGZwcmludGYoZmQsICIgIHR3PSVkLCB0aD0lZCB4MD0lZCB4MT0lZCB5MD0lZCB5MT0lZFxuIiwgCisgICAgICAgICAgICAgICAgaW1nLT50dywgaW1nLT50aCwgdGNkLT5pbWFnZS0+eDAsIHRjZC0+aW1hZ2UtPngxLCB0Y2QtPmltYWdlLT55MCwgdGNkLT5pbWFnZS0+eTEpOworCisgICAgICAgIGZvciAodGlsZW5vID0gMDsgdGlsZW5vIDwgaW1nLT50aCAqIGltZy0+dHc7IHRpbGVubysrKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlX3QgKnRpbGUgPSAmdGNkLT50Y2RfaW1hZ2UtPnRpbGVzW3RpbGVub107CisgICAgICAgICAgICAgICAgZnByaW50ZihmZCwgIiAgdGlsZSB7XG4iKTsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiICAgIHgwPSVkLCB5MD0lZCwgeDE9JWQsIHkxPSVkLCBudW1jb21wcz0lZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbGUtPngwLCB0aWxlLT55MCwgdGlsZS0+eDEsIHRpbGUtPnkxLCB0aWxlLT5udW1jb21wcyk7CisgICAgICAgICAgICAgICAgZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCB0aWxlLT5udW1jb21wczsgY29tcG5vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfdGlsZWNvbXBfdCAqdGlsZWMgPSAmdGlsZS0+Y29tcHNbY29tcG5vXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZmQsICIgICAgdGlsZWMge1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgeDA9JWQsIHkwPSVkLCB4MT0lZCwgeTE9JWQsIG51bXJlc29sdXRpb25zPSVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlYy0+eDAsIHRpbGVjLT55MCwgdGlsZWMtPngxLCB0aWxlYy0+eTEsIHRpbGVjLT5udW1yZXNvbHV0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHJlc25vID0gMDsgcmVzbm8gPCB0aWxlYy0+bnVtcmVzb2x1dGlvbnM7IHJlc25vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF9yZXNvbHV0aW9uX3QgKnJlcyA9ICZ0aWxlYy0+cmVzb2x1dGlvbnNbcmVzbm9dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiXG4gICByZXMge1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICB4MD0lZCwgeTA9JWQsIHgxPSVkLCB5MT0lZCwgcHc9JWQsIHBoPSVkLCBudW1iYW5kcz0lZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMtPngwLCByZXMtPnkwLCByZXMtPngxLCByZXMtPnkxLCByZXMtPnB3LCByZXMtPnBoLCByZXMtPm51bWJhbmRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChiYW5kbm8gPSAwOyBiYW5kbm8gPCByZXMtPm51bWJhbmRzOyBiYW5kbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfYmFuZF90ICpiYW5kID0gJnJlcy0+YmFuZHNbYmFuZG5vXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiICAgICAgICBiYW5kIHtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgIHgwPSVkLCB5MD0lZCwgeDE9JWQsIHkxPSVkLCBzdGVwc2l6ZT0lZiwgbnVtYnBzPSVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuZC0+eDAsIGJhbmQtPnkwLCBiYW5kLT54MSwgYmFuZC0+eTEsIGJhbmQtPnN0ZXBzaXplLCBiYW5kLT5udW1icHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocHJlY25vID0gMDsgcHJlY25vIDwgcmVzLT5wdyAqIHJlcy0+cGg7IHByZWNubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3ByZWNpbmN0X3QgKnByZWMgPSAmYmFuZC0+cHJlY2luY3RzW3ByZWNub107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiICAgICAgICAgIHByZWMge1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgeDA9JWQsIHkwPSVkLCB4MT0lZCwgeTE9JWQsIGN3PSVkLCBjaD0lZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYy0+eDAsIHByZWMtPnkwLCBwcmVjLT54MSwgcHJlYy0+eTEsIHByZWMtPmN3LCBwcmVjLT5jaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjYmxrbm8gPSAwOyBjYmxrbm8gPCBwcmVjLT5jdyAqIHByZWMtPmNoOyBjYmxrbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX2NibGtfdCAqY2JsayA9ICZwcmVjLT5jYmxrc1tjYmxrbm9dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiICAgICAgICAgICAgY2JsayB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICB4MD0lZCwgeTA9JWQsIHgxPSVkLCB5MT0lZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT54MCwgY2Jsay0+eTAsIGNibGstPngxLCBjYmxrLT55MSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZmQsICIgICAgICAgICAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiICAgICAgICAgIH1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiICAgICAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiICAgICAgfVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiICAgIH1cbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmcHJpbnRmKGZkLCAiICB9XG4iKTsKKyAgICAgICAgfQorICAgICAgICBmcHJpbnRmKGZkLCAifVxuIik7Cit9CisjZW5kaWYKKy8qKgorKiBBbGxvY2F0ZXMgbWVtb3J5IGZvciBhIGRlY29kaW5nIGNvZGUgYmxvY2suCisqLworc3RhdGljIE9QSl9CT09MIG9wal90Y2RfY29kZV9ibG9ja19kZWNfYWxsb2NhdGUgKG9wal90Y2RfY2Jsa19kZWNfdCAqIHBfY29kZV9ibG9jayk7CisKKy8qKgorICogRGVhbGxvY2F0ZXMgdGhlIGRlY29kaW5nIGRhdGEgb2YgdGhlIGdpdmVuIHByZWNpbmN0LgorICovCitzdGF0aWMgdm9pZCBvcGpfdGNkX2NvZGVfYmxvY2tfZGVjX2RlYWxsb2NhdGUgKG9wal90Y2RfcHJlY2luY3RfdCAqIHBfcHJlY2luY3QpOworCisvKioKKyAqIEFsbG9jYXRlcyBtZW1vcnkgZm9yIGFuIGVuY29kaW5nIGNvZGUgYmxvY2suCisgKi8KK3N0YXRpYyBPUEpfQk9PTCBvcGpfdGNkX2NvZGVfYmxvY2tfZW5jX2FsbG9jYXRlIChvcGpfdGNkX2NibGtfZW5jX3QgKiBwX2NvZGVfYmxvY2spOworCisvKioKKyAqIERlYWxsb2NhdGVzIHRoZSBlbmNvZGluZyBkYXRhIG9mIHRoZSBnaXZlbiBwcmVjaW5jdC4KKyAqLworc3RhdGljIHZvaWQgb3BqX3RjZF9jb2RlX2Jsb2NrX2VuY19kZWFsbG9jYXRlIChvcGpfdGNkX3ByZWNpbmN0X3QgKiBwX3ByZWNpbmN0KTsKKworCisvKioKK0ZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIGVuY29kaW5nCitAcGFyYW0gdGNkIFRDRCBoYW5kbGUKKyovCitzdGF0aWMgdm9pZCBvcGpfdGNkX2ZyZWVfdGlsZShvcGpfdGNkX3QgKnRjZCk7CisKKworc3RhdGljIE9QSl9CT09MIG9wal90Y2RfdDJfZGVjb2RlICggb3BqX3RjZF90ICpwX3RjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9zcmNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9tYXhfc3JjX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfY29kZXN0cmVhbV9pbmRleF90ICpwX2NzdHJfaW5kZXggKTsKKworc3RhdGljIE9QSl9CT09MIG9wal90Y2RfdDFfZGVjb2RlIChvcGpfdGNkX3QgKnBfdGNkKTsKKworc3RhdGljIE9QSl9CT09MIG9wal90Y2RfZHd0X2RlY29kZSAob3BqX3RjZF90ICpwX3RjZCk7CisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfdGNkX21jdF9kZWNvZGUgKG9wal90Y2RfdCAqcF90Y2QpOworCitzdGF0aWMgT1BKX0JPT0wgb3BqX3RjZF9kY19sZXZlbF9zaGlmdF9kZWNvZGUgKG9wal90Y2RfdCAqcF90Y2QpOworCisKK3N0YXRpYyBPUEpfQk9PTCBvcGpfdGNkX2RjX2xldmVsX3NoaWZ0X2VuY29kZSAoIG9wal90Y2RfdCAqcF90Y2QgKTsKKworc3RhdGljIE9QSl9CT09MIG9wal90Y2RfbWN0X2VuY29kZSAoIG9wal90Y2RfdCAqcF90Y2QgKTsKKworc3RhdGljIE9QSl9CT09MIG9wal90Y2RfZHd0X2VuY29kZSAoIG9wal90Y2RfdCAqcF90Y2QgKTsKKworc3RhdGljIE9QSl9CT09MIG9wal90Y2RfdDFfZW5jb2RlICggb3BqX3RjZF90ICpwX3RjZCApOworCitzdGF0aWMgT1BKX0JPT0wgb3BqX3RjZF90Ml9lbmNvZGUgKCAgICAgb3BqX3RjZF90ICpwX3RjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX2Rlc3RfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X2Rlc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NvZGVzdHJlYW1faW5mb190ICpwX2NzdHJfaW5mbyApOworCitzdGF0aWMgT1BKX0JPT0wgb3BqX3RjZF9yYXRlX2FsbG9jYXRlX2VuY29kZSggICBvcGpfdGNkX3QgKnBfdGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9kZXN0X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9kZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NvZGVzdHJlYW1faW5mb190ICpwX2NzdHJfaW5mbyApOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKioKK0NyZWF0ZSBhIG5ldyBUQ0QgaGFuZGxlCisqLworb3BqX3RjZF90KiBvcGpfdGNkX2NyZWF0ZShPUEpfQk9PTCBwX2lzX2RlY29kZXIpCit7CisgICAgICAgIG9wal90Y2RfdCAqbF90Y2QgPSAwMDsKKworICAgICAgICAvKiBjcmVhdGUgdGhlIHRjZCBzdHJ1Y3R1cmUgKi8KKyAgICAgICAgbF90Y2QgPSAob3BqX3RjZF90Kikgb3BqX21hbGxvYyhzaXplb2Yob3BqX3RjZF90KSk7CisgICAgICAgIGlmICghbF90Y2QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDA7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KGxfdGNkLDAsc2l6ZW9mKG9wal90Y2RfdCkpOworCisgICAgICAgIGxfdGNkLT5tX2lzX2RlY29kZXIgPSBwX2lzX2RlY29kZXIgPyAxIDogMDsKKworICAgICAgICBsX3RjZC0+dGNkX2ltYWdlID0gKG9wal90Y2RfaW1hZ2VfdCopb3BqX21hbGxvYyhzaXplb2Yob3BqX3RjZF9pbWFnZV90KSk7CisgICAgICAgIGlmICghbF90Y2QtPnRjZF9pbWFnZSkgeworICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfdGNkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDA7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KGxfdGNkLT50Y2RfaW1hZ2UsMCxzaXplb2Yob3BqX3RjZF9pbWFnZV90KSk7CisKKyAgICAgICAgcmV0dXJuIGxfdGNkOworfQorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgb3BqX3RjZF9yYXRlYWxsb2NhdGVfZml4ZWQob3BqX3RjZF90ICp0Y2QpIHsKKyAgICAgICAgT1BKX1VJTlQzMiBsYXlubzsKKworICAgICAgICBmb3IgKGxheW5vID0gMDsgbGF5bm8gPCB0Y2QtPnRjcC0+bnVtbGF5ZXJzOyBsYXlubysrKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjZF9tYWtlbGF5ZXJfZml4ZWQodGNkLCBsYXlubywgMSk7CisgICAgICAgIH0KK30KKworCit2b2lkIG9wal90Y2RfbWFrZWxheWVyKCBvcGpfdGNkX3QgKnRjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbGF5bm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQ2NCB0aHJlc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGZpbmFsKQoreworICAgICAgICBPUEpfVUlOVDMyIGNvbXBubywgcmVzbm8sIGJhbmRubywgcHJlY25vLCBjYmxrbm87CisgICAgICAgIE9QSl9VSU5UMzIgcGFzc25vOworCisgICAgICAgIG9wal90Y2RfdGlsZV90ICp0Y2RfdGlsZSA9IHRjZC0+dGNkX2ltYWdlLT50aWxlczsKKworICAgICAgICB0Y2RfdGlsZS0+ZGlzdG9sYXllcltsYXlub10gPSAwOyAgICAgICAgLyogZml4ZWRfcXVhbGl0eSAqLworCisgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgdGNkX3RpbGUtPm51bWNvbXBzOyBjb21wbm8rKykgeworICAgICAgICAgICAgICAgIG9wal90Y2RfdGlsZWNvbXBfdCAqdGlsZWMgPSAmdGNkX3RpbGUtPmNvbXBzW2NvbXBub107CisKKyAgICAgICAgICAgICAgICBmb3IgKHJlc25vID0gMDsgcmVzbm8gPCB0aWxlYy0+bnVtcmVzb2x1dGlvbnM7IHJlc25vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfcmVzb2x1dGlvbl90ICpyZXMgPSAmdGlsZWMtPnJlc29sdXRpb25zW3Jlc25vXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChiYW5kbm8gPSAwOyBiYW5kbm8gPCByZXMtPm51bWJhbmRzOyBiYW5kbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX2JhbmRfdCAqYmFuZCA9ICZyZXMtPmJhbmRzW2JhbmRub107CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwcmVjbm8gPSAwOyBwcmVjbm8gPCByZXMtPnB3ICogcmVzLT5waDsgcHJlY25vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3ByZWNpbmN0X3QgKnByYyA9ICZiYW5kLT5wcmVjaW5jdHNbcHJlY25vXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY2Jsa25vID0gMDsgY2Jsa25vIDwgcHJjLT5jdyAqIHByYy0+Y2g7IGNibGtubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX2NibGtfZW5jX3QgKmNibGsgPSAmcHJjLT5jYmxrcy5lbmNbY2Jsa25vXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfbGF5ZXJfdCAqbGF5ZXIgPSAmY2Jsay0+bGF5ZXJzW2xheW5vXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbjsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxheW5vID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsay0+bnVtcGFzc2VzaW5sYXllcnMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gY2Jsay0+bnVtcGFzc2VzaW5sYXllcnM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocGFzc25vID0gY2Jsay0+bnVtcGFzc2VzaW5sYXllcnM7IHBhc3NubyA8IGNibGstPnRvdGFscGFzc2VzOyBwYXNzbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQ2NCBkZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF9wYXNzX3QgKnBhc3MgPSAmY2Jsay0+cGFzc2VzW3Bhc3Nub107CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyID0gcGFzcy0+cmF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZCA9IHBhc3MtPmRpc3RvcnRpb25kZWM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHIgPSBwYXNzLT5yYXRlIC0gY2Jsay0+cGFzc2VzW24gLSAxXS5yYXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkID0gcGFzcy0+ZGlzdG9ydGlvbmRlYyAtIGNibGstPnBhc3Nlc1tuIC0gMV0uZGlzdG9ydGlvbmRlYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZHIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGQgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBwYXNzbm8gKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZCAvIGRyID49IHRocmVzaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gcGFzc25vICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPm51bXBhc3NlcyA9IG4gLSBjYmxrLT5udW1wYXNzZXNpbmxheWVyczsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXllci0+bnVtcGFzc2VzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLT5kaXN0byA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2Jsay0+bnVtcGFzc2VzaW5sYXllcnMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+bGVuID0gY2Jsay0+cGFzc2VzW24gLSAxXS5yYXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+ZGF0YSA9IGNibGstPmRhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLT5kaXN0byA9IGNibGstPnBhc3Nlc1tuIC0gMV0uZGlzdG9ydGlvbmRlYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLT5sZW4gPSBjYmxrLT5wYXNzZXNbbiAtIDFdLnJhdGUgLSBjYmxrLT5wYXNzZXNbY2Jsay0+bnVtcGFzc2VzaW5sYXllcnMgLSAxXS5yYXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+ZGF0YSA9IGNibGstPmRhdGEgKyBjYmxrLT5wYXNzZXNbY2Jsay0+bnVtcGFzc2VzaW5sYXllcnMgLSAxXS5yYXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+ZGlzdG8gPSBjYmxrLT5wYXNzZXNbbiAtIDFdLmRpc3RvcnRpb25kZWMgLSBjYmxrLT5wYXNzZXNbY2Jsay0+bnVtcGFzc2VzaW5sYXllcnMgLSAxXS5kaXN0b3J0aW9uZGVjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2RfdGlsZS0+ZGlzdG9sYXllcltsYXlub10gKz0gbGF5ZXItPmRpc3RvOyAgICAvKiBmaXhlZF9xdWFsaXR5ICovCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsay0+bnVtcGFzc2VzaW5sYXllcnMgPSBuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorfQorCit2b2lkIG9wal90Y2RfbWFrZWxheWVyX2ZpeGVkKG9wal90Y2RfdCAqdGNkLCBPUEpfVUlOVDMyIGxheW5vLCBPUEpfVUlOVDMyIGZpbmFsKSB7CisgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vLCByZXNubywgYmFuZG5vLCBwcmVjbm8sIGNibGtubzsKKyAgICAgICAgT1BKX0lOVDMyIHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgIC8qLCBtYXRyaWNlW3RjZF90Y3AtPm51bWxheWVyc11bdGNkX3RpbGUtPmNvbXBzWzBdLm51bXJlc29sdXRpb25zXVszXTsgKi8KKyAgICAgICAgT1BKX0lOVDMyIG1hdHJpY2VbMTBdWzEwXVszXTsKKyAgICAgICAgT1BKX1VJTlQzMiBpLCBqLCBrOworCisgICAgICAgIG9wal9jcF90ICpjcCA9IHRjZC0+Y3A7CisgICAgICAgIG9wal90Y2RfdGlsZV90ICp0Y2RfdGlsZSA9IHRjZC0+dGNkX2ltYWdlLT50aWxlczsKKyAgICAgICAgb3BqX3RjcF90ICp0Y2RfdGNwID0gdGNkLT50Y3A7CisKKyAgICAgICAgZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCB0Y2RfdGlsZS0+bnVtY29tcHM7IGNvbXBubysrKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICp0aWxlYyA9ICZ0Y2RfdGlsZS0+Y29tcHNbY29tcG5vXTsKKworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0Y2RfdGNwLT5udW1sYXllcnM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRpbGVjLT5udW1yZXNvbHV0aW9uczsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCAzOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaWNlW2ldW2pdW2tdID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPUEpfSU5UMzIpICgoT1BKX0ZMT0FUMzIpY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9tYXRyaWNlW2kgKiB0aWxlYy0+bnVtcmVzb2x1dGlvbnMgKiAzICsgaiAqIDMgKyBrXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAoT1BKX0ZMT0FUMzIpICh0Y2QtPmltYWdlLT5jb21wc1tjb21wbm9dLnByZWMgLyAxNi4wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IgKHJlc25vID0gMDsgcmVzbm8gPCB0aWxlYy0+bnVtcmVzb2x1dGlvbnM7IHJlc25vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfcmVzb2x1dGlvbl90ICpyZXMgPSAmdGlsZWMtPnJlc29sdXRpb25zW3Jlc25vXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChiYW5kbm8gPSAwOyBiYW5kbm8gPCByZXMtPm51bWJhbmRzOyBiYW5kbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX2JhbmRfdCAqYmFuZCA9ICZyZXMtPmJhbmRzW2JhbmRub107CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwcmVjbm8gPSAwOyBwcmVjbm8gPCByZXMtPnB3ICogcmVzLT5waDsgcHJlY25vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3ByZWNpbmN0X3QgKnByYyA9ICZiYW5kLT5wcmVjaW5jdHNbcHJlY25vXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY2Jsa25vID0gMDsgY2Jsa25vIDwgcHJjLT5jdyAqIHByYy0+Y2g7IGNibGtubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX2NibGtfZW5jX3QgKmNibGsgPSAmcHJjLT5jYmxrcy5lbmNbY2Jsa25vXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfbGF5ZXJfdCAqbGF5ZXIgPSAmY2Jsay0+bGF5ZXJzW2xheW5vXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBpbXNiID0gKE9QSl9JTlQzMikodGNkLT5pbWFnZS0+Y29tcHNbY29tcG5vXS5wcmVjIC0gY2Jsay0+bnVtYnBzKTsgLyogbnVtYmVyIG9mIGJpdC1wbGFuIGVxdWFsIHRvIHplcm8gKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29ycmVjdGlvbiBvZiB0aGUgbWF0cml4IG9mIGNvZWZmaWNpZW50IHRvIGluY2x1ZGUgdGhlIElNU0IgaW5mb3JtYXRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXlubyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbWF0cmljZVtsYXlub11bcmVzbm9dW2JhbmRub107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXNiID49IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIC09IGltc2I7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbWF0cmljZVtsYXlub11bcmVzbm9dW2JhbmRub10gLSBtYXRyaWNlW2xheW5vIC0gMV1bcmVzbm9dW2JhbmRub107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXNiID49IG1hdHJpY2VbbGF5bm8gLSAxXVtyZXNub11bYmFuZG5vXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIC09IChpbXNiIC0gbWF0cmljZVtsYXlubyAtIDFdW3Jlc25vXVtiYW5kbm9dKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXlubyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNibGstPm51bXBhc3Nlc2lubGF5ZXJzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGNibGstPm51bXBhc3Nlc2lubGF5ZXJzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNibGstPm51bXBhc3Nlc2lubGF5ZXJzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMyAqIChPUEpfVUlOVDMyKXZhbHVlIC0gMiArIGNibGstPm51bXBhc3Nlc2lubGF5ZXJzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBjYmxrLT5udW1wYXNzZXNpbmxheWVyczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDMgKiAoT1BKX1VJTlQzMil2YWx1ZSArIGNibGstPm51bXBhc3Nlc2lubGF5ZXJzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+bnVtcGFzc2VzID0gbiAtIGNibGstPm51bXBhc3Nlc2lubGF5ZXJzOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxheWVyLT5udW1wYXNzZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2Jsay0+bnVtcGFzc2VzaW5sYXllcnMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+bGVuID0gY2Jsay0+cGFzc2VzW24gLSAxXS5yYXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+ZGF0YSA9IGNibGstPmRhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+bGVuID0gY2Jsay0+cGFzc2VzW24gLSAxXS5yYXRlIC0gY2Jsay0+cGFzc2VzW2NibGstPm51bXBhc3Nlc2lubGF5ZXJzIC0gMV0ucmF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPmRhdGEgPSBjYmxrLT5kYXRhICsgY2Jsay0+cGFzc2VzW2NibGstPm51bXBhc3Nlc2lubGF5ZXJzIC0gMV0ucmF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5udW1wYXNzZXNpbmxheWVycyA9IG47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9CisKK09QSl9CT09MIG9wal90Y2RfcmF0ZWFsbG9jYXRlKCAgb3BqX3RjZF90ICp0Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jb2Rlc3RyZWFtX2luZm9fdCAqY3N0cl9pbmZvKQoreworICAgICAgICBPUEpfVUlOVDMyIGNvbXBubywgcmVzbm8sIGJhbmRubywgcHJlY25vLCBjYmxrbm8sIGxheW5vOworICAgICAgICBPUEpfVUlOVDMyIHBhc3NubzsKKyAgICAgICAgT1BKX0ZMT0FUNjQgbWluLCBtYXg7CisgICAgICAgIE9QSl9GTE9BVDY0IGN1bWRpc3RvWzEwMF07ICAgICAgLyogZml4ZWRfcXVhbGl0eSAqLworICAgICAgICBjb25zdCBPUEpfRkxPQVQ2NCBLID0gMTsgICAgICAgICAgICAgICAgLyogMS4xOyBmaXhlZF9xdWFsaXR5ICovCisgICAgICAgIE9QSl9GTE9BVDY0IG1heFNFID0gMDsKKworICAgICAgICBvcGpfY3BfdCAqY3AgPSB0Y2QtPmNwOworICAgICAgICBvcGpfdGNkX3RpbGVfdCAqdGNkX3RpbGUgPSB0Y2QtPnRjZF9pbWFnZS0+dGlsZXM7CisgICAgICAgIG9wal90Y3BfdCAqdGNkX3RjcCA9IHRjZC0+dGNwOworCisgICAgICAgIG1pbiA9IERCTF9NQVg7CisgICAgICAgIG1heCA9IDA7CisKKyAgICAgICAgdGNkX3RpbGUtPm51bXBpeCA9IDA7ICAgICAgICAgICAvKiBmaXhlZF9xdWFsaXR5ICovCisKKyAgICAgICAgZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCB0Y2RfdGlsZS0+bnVtY29tcHM7IGNvbXBubysrKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICp0aWxlYyA9ICZ0Y2RfdGlsZS0+Y29tcHNbY29tcG5vXTsKKyAgICAgICAgICAgICAgICB0aWxlYy0+bnVtcGl4ID0gMDsKKworICAgICAgICAgICAgICAgIGZvciAocmVzbm8gPSAwOyByZXNubyA8IHRpbGVjLT5udW1yZXNvbHV0aW9uczsgcmVzbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF9yZXNvbHV0aW9uX3QgKnJlcyA9ICZ0aWxlYy0+cmVzb2x1dGlvbnNbcmVzbm9dOworCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGJhbmRubyA9IDA7IGJhbmRubyA8IHJlcy0+bnVtYmFuZHM7IGJhbmRubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfYmFuZF90ICpiYW5kID0gJnJlcy0+YmFuZHNbYmFuZG5vXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHByZWNubyA9IDA7IHByZWNubyA8IHJlcy0+cHcgKiByZXMtPnBoOyBwcmVjbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfcHJlY2luY3RfdCAqcHJjID0gJmJhbmQtPnByZWNpbmN0c1twcmVjbm9dOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjYmxrbm8gPSAwOyBjYmxrbm8gPCBwcmMtPmN3ICogcHJjLT5jaDsgY2Jsa25vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfY2Jsa19lbmNfdCAqY2JsayA9ICZwcmMtPmNibGtzLmVuY1tjYmxrbm9dOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHBhc3NubyA9IDA7IHBhc3NubyA8IGNibGstPnRvdGFscGFzc2VzOyBwYXNzbm8rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3Bhc3NfdCAqcGFzcyA9ICZjYmxrLT5wYXNzZXNbcGFzc25vXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIGRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQ2NCBkZCwgcmRzbG9wZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFzc25vID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkciA9IChPUEpfSU5UMzIpcGFzcy0+cmF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZCA9IHBhc3MtPmRpc3RvcnRpb25kZWM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHIgPSAoT1BKX0lOVDMyKShwYXNzLT5yYXRlIC0gY2Jsay0+cGFzc2VzW3Bhc3NubyAtIDFdLnJhdGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkID0gcGFzcy0+ZGlzdG9ydGlvbmRlYyAtIGNibGstPnBhc3Nlc1twYXNzbm8gLSAxXS5kaXN0b3J0aW9uZGVjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRyID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkc2xvcGUgPSBkZCAvIGRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmRzbG9wZSA8IG1pbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA9IHJkc2xvcGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmRzbG9wZSA+IG1heCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IHJkc2xvcGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gLyogcGFzc25vICovCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpeGVkX3F1YWxpdHkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZF90aWxlLT5udW1waXggKz0gKChjYmxrLT54MSAtIGNibGstPngwKSAqIChjYmxrLT55MSAtIGNibGstPnkwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlYy0+bnVtcGl4ICs9ICgoY2Jsay0+eDEgLSBjYmxrLT54MCkgKiAoY2Jsay0+eTEgLSBjYmxrLT55MCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gLyogY2JrbG5vICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gLyogcHJlY25vICovCisgICAgICAgICAgICAgICAgICAgICAgICB9IC8qIGJhbmRubyAqLworICAgICAgICAgICAgICAgIH0gLyogcmVzbm8gKi8KKworICAgICAgICAgICAgICAgIG1heFNFICs9ICgoKE9QSl9GTE9BVDY0KSgxIDw8IHRjZC0+aW1hZ2UtPmNvbXBzW2NvbXBub10ucHJlYykgLSAxLjApCisgICAgICAgICAgICAgICAgICAgICAgICAqICgoT1BKX0ZMT0FUNjQpKDEgPDwgdGNkLT5pbWFnZS0+Y29tcHNbY29tcG5vXS5wcmVjKSAtMS4wKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICogKChPUEpfRkxPQVQ2NCkodGlsZWMtPm51bXBpeCkpOworICAgICAgICB9IC8qIGNvbXBubyAqLworCisgICAgICAgIC8qIGluZGV4IGZpbGUgKi8KKyAgICAgICAgaWYoY3N0cl9pbmZvKSB7CisgICAgICAgICAgICAgICAgb3BqX3RpbGVfaW5mb190ICp0aWxlX2luZm8gPSAmY3N0cl9pbmZvLT50aWxlW3RjZC0+dGNkX3RpbGVub107CisgICAgICAgICAgICAgICAgdGlsZV9pbmZvLT5udW1waXggPSB0Y2RfdGlsZS0+bnVtcGl4OworICAgICAgICAgICAgICAgIHRpbGVfaW5mby0+ZGlzdG90aWxlID0gdGNkX3RpbGUtPmRpc3RvdGlsZTsKKyAgICAgICAgICAgICAgICB0aWxlX2luZm8tPnRocmVzaCA9IChPUEpfRkxPQVQ2NCAqKSBvcGpfbWFsbG9jKHRjZF90Y3AtPm51bWxheWVycyAqIHNpemVvZihPUEpfRkxPQVQ2NCkpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsYXlubyA9IDA7IGxheW5vIDwgdGNkX3RjcC0+bnVtbGF5ZXJzOyBsYXlubysrKSB7CisgICAgICAgICAgICAgICAgT1BKX0ZMT0FUNjQgbG8gPSBtaW47CisgICAgICAgICAgICAgICAgT1BKX0ZMT0FUNjQgaGkgPSBtYXg7CisgICAgICAgICAgICAgICAgT1BKX0JPT0wgc3VjY2VzcyA9IE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIG1heGxlbiA9IHRjZF90Y3AtPnJhdGVzW2xheW5vXSA/IG9wal91aW50X21pbigoKE9QSl9VSU5UMzIpIGNlaWwodGNkX3RjcC0+cmF0ZXNbbGF5bm9dKSksIGxlbikgOiBsZW47CisgICAgICAgICAgICAgICAgT1BKX0ZMT0FUNjQgZ29vZHRocmVzaCA9IDA7CisgICAgICAgICAgICAgICAgT1BKX0ZMT0FUNjQgc3RhYmxlX3RocmVzaCA9IDA7CisgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICAgICAgICAgIE9QSl9GTE9BVDY0IGRpc3RvdGFyZ2V0OyAgICAgICAgICAgICAgICAvKiBmaXhlZF9xdWFsaXR5ICovCisKKyAgICAgICAgICAgICAgICAvKiBmaXhlZF9xdWFsaXR5ICovCisgICAgICAgICAgICAgICAgZGlzdG90YXJnZXQgPSB0Y2RfdGlsZS0+ZGlzdG90aWxlIC0gKChLICogbWF4U0UpIC8gcG93KChPUEpfRkxPQVQzMikxMCwgdGNkX3RjcC0+ZGlzdG9yYXRpb1tsYXlub10gLyAxMCkpOworCisgICAgICAgICAgICAgICAgLyogRG9uJ3QgdHJ5IHRvIGZpbmQgYW4gb3B0aW1hbCB0aHJlc2hvbGQgYnV0IHJhdGhlciB0YWtlIGV2ZXJ5dGhpbmcgbm90IGluY2x1ZGVkIHlldCwgaWYKKyAgICAgICAgICAgICAgICAgIC1yIHh4LHl5LHp6LDAgICAoZGlzdG9fYWxsb2MgPT0gMSBhbmQgcmF0ZXMgPT0gMCkKKyAgICAgICAgICAgICAgICAgIC1xIHh4LHl5LHp6LDAgICAoZml4ZWRfcXVhbGl0eSA9PSAxIGFuZCBkaXN0b3JhdGlvID09IDApCisgICAgICAgICAgICAgICAgICA9PT4gcG9zc2libGUgdG8gaGF2ZSBzb21lIGxvc3N5IGxheWVycyBhbmQgdGhlIGxhc3QgbGF5ZXIgZm9yIHN1cmUgbG9zc2xlc3MgKi8KKyAgICAgICAgICAgICAgICBpZiAoICgoY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9kaXN0b19hbGxvYz09MSkgJiYgKHRjZF90Y3AtPnJhdGVzW2xheW5vXT4wKSkgfHwgKChjcC0+bV9zcGVjaWZpY19wYXJhbS5tX2VuYy5tX2ZpeGVkX3F1YWxpdHk9PTEpICYmICh0Y2RfdGNwLT5kaXN0b3JhdGlvW2xheW5vXT4wKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Ml90KnQyID0gb3BqX3QyX2NyZWF0ZSh0Y2QtPmltYWdlLCBjcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQ2NCB0aHJlc2ggPSAwOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodDIgPT0gMDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICAgICAoaSA9IDA7IGkgPCAxMjg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQ2NCBkaXN0b2FjaGlldmVkID0gMDsgIC8qIGZpeGVkX3F1YWxpdHkgKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2ggPSAobG8gKyBoaSkgLyAyOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfbWFrZWxheWVyKHRjZCwgbGF5bm8sIHRocmVzaCwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fZml4ZWRfcXVhbGl0eSkgeyAgICAgICAvKiBmaXhlZF9xdWFsaXR5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9jaW5lbWEpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgb3BqX3QyX2VuY29kZV9wYWNrZXRzKHQyLHRjZC0+dGNkX3RpbGVubywgdGNkX3RpbGUsIGxheW5vICsgMSwgZGVzdCwgcF9kYXRhX3dyaXR0ZW4sIG1heGxlbiwgY3N0cl9pbmZvLHRjZC0+Y3VyX3RwX251bSx0Y2QtPnRwX3Bvcyx0Y2QtPmN1cl9waW5vLFRIUkVTSF9DQUxDKSkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvID0gdGhyZXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0b2FjaGlldmVkID0gbGF5bm8gPT0gMCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2RfdGlsZS0+ZGlzdG9sYXllclswXSA6IGN1bWRpc3RvW2xheW5vIC0gMV0gKyB0Y2RfdGlsZS0+ZGlzdG9sYXllcltsYXlub107CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3RvYWNoaWV2ZWQgPCBkaXN0b3RhcmdldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpPXRocmVzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFibGVfdGhyZXNoID0gdGhyZXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbz10aHJlc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RvYWNoaWV2ZWQgPSAobGF5bm8gPT0gMCkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZF90aWxlLT5kaXN0b2xheWVyWzBdIDogKGN1bWRpc3RvW2xheW5vIC0gMV0gKyB0Y2RfdGlsZS0+ZGlzdG9sYXllcltsYXlub10pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlzdG9hY2hpZXZlZCA8IGRpc3RvdGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpID0gdGhyZXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFibGVfdGhyZXNoID0gdGhyZXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvID0gdGhyZXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBvcGpfdDJfZW5jb2RlX3BhY2tldHModDIsIHRjZC0+dGNkX3RpbGVubywgdGNkX3RpbGUsIGxheW5vICsgMSwgZGVzdCxwX2RhdGFfd3JpdHRlbiwgbWF4bGVuLCBjc3RyX2luZm8sdGNkLT5jdXJfdHBfbnVtLHRjZC0+dHBfcG9zLHRjZC0+Y3VyX3Bpbm8sVEhSRVNIX0NBTEMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRE86IHdoYXQgdG8gZG8gd2l0aCBsID8/PyBzZWVrIC8gdGVsbCA/Pz8gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9wal9ldmVudF9tc2codGNkLT5jaW5mbywgRVZUX0lORk8sICJyYXRlIGFsbG9jOiBsZW49JWQsIG1heD0lZFxuIiwgbCwgbWF4bGVuKTsgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvID0gdGhyZXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkgPSB0aHJlc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhYmxlX3RocmVzaCA9IHRocmVzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gT1BKX1RSVUU7CisgICAgICAgICAgICAgICAgICAgICAgICBnb29kdGhyZXNoID0gc3RhYmxlX3RocmVzaCA9PSAwPyB0aHJlc2ggOiBzdGFibGVfdGhyZXNoOworCisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdDJfZGVzdHJveSh0Mik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBPUEpfVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvb2R0aHJlc2ggPSBtaW47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmKGNzdHJfaW5mbykgeyAvKiBUaHJlc2hvbGQgZm9yIE1hcmNlbGEgSW5kZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNzdHJfaW5mby0+dGlsZVt0Y2QtPnRjZF90aWxlbm9dLnRocmVzaFtsYXlub10gPSBnb29kdGhyZXNoOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG9wal90Y2RfbWFrZWxheWVyKHRjZCwgbGF5bm8sIGdvb2R0aHJlc2gsIDEpOworCisgICAgICAgICAgICAgICAgLyogZml4ZWRfcXVhbGl0eSAqLworICAgICAgICAgICAgICAgIGN1bWRpc3RvW2xheW5vXSA9IChsYXlubyA9PSAwKSA/IHRjZF90aWxlLT5kaXN0b2xheWVyWzBdIDogKGN1bWRpc3RvW2xheW5vIC0gMV0gKyB0Y2RfdGlsZS0+ZGlzdG9sYXllcltsYXlub10pOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfdGNkX2luaXQoIG9wal90Y2RfdCAqcF90Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ltYWdlX3QgKiBwX2ltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jcF90ICogcF9jcCApCit7CisgICAgICAgIE9QSl9VSU5UMzIgbF90aWxlX2NvbXBfc2l6ZTsKKworICAgICAgICBwX3RjZC0+aW1hZ2UgPSBwX2ltYWdlOworICAgICAgICBwX3RjZC0+Y3AgPSBwX2NwOworCisgICAgICAgIHBfdGNkLT50Y2RfaW1hZ2UtPnRpbGVzID0gKG9wal90Y2RfdGlsZV90ICopIG9wal9tYWxsb2Moc2l6ZW9mKG9wal90Y2RfdGlsZV90KSk7CisgICAgICAgIGlmICghIHBfdGNkLT50Y2RfaW1hZ2UtPnRpbGVzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBtZW1zZXQocF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMsMCwgc2l6ZW9mKG9wal90Y2RfdGlsZV90KSk7CisKKyAgICAgICAgbF90aWxlX2NvbXBfc2l6ZSA9IHBfaW1hZ2UtPm51bWNvbXBzICogKE9QSl9VSU5UMzIpc2l6ZW9mKG9wal90Y2RfdGlsZWNvbXBfdCk7CisgICAgICAgIHBfdGNkLT50Y2RfaW1hZ2UtPnRpbGVzLT5jb21wcyA9IChvcGpfdGNkX3RpbGVjb21wX3QgKikgb3BqX21hbGxvYyhsX3RpbGVfY29tcF9zaXplKTsKKyAgICAgICAgaWYgKCEgcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPmNvbXBzICkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KCBwX3RjZC0+dGNkX2ltYWdlLT50aWxlcy0+Y29tcHMgLCAwICwgbF90aWxlX2NvbXBfc2l6ZSk7CisKKyAgICAgICAgcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPm51bWNvbXBzID0gcF9pbWFnZS0+bnVtY29tcHM7CisgICAgICAgIHBfdGNkLT50cF9wb3MgPSBwX2NwLT5tX3NwZWNpZmljX3BhcmFtLm1fZW5jLm1fdHBfcG9zOworCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworLyoqCitEZXN0cm95IGEgcHJldmlvdXNseSBjcmVhdGVkIFRDRCBoYW5kbGUKKyovCit2b2lkIG9wal90Y2RfZGVzdHJveShvcGpfdGNkX3QgKnRjZCkgeworICAgICAgICBpZiAodGNkKSB7CisgICAgICAgICAgICAgICAgb3BqX3RjZF9mcmVlX3RpbGUodGNkKTsKKworICAgICAgICAgICAgICAgIGlmICh0Y2QtPnRjZF9pbWFnZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUodGNkLT50Y2RfaW1hZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgdGNkLT50Y2RfaW1hZ2UgPSAwMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3BqX2ZyZWUodGNkKTsKKyAgICAgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworI2RlZmluZSBPUEpfTUFDUk9fVENEX0FMTE9DQVRFKEZVTkNUSU9OLFRZUEUsRlJBQ1RJT04sRUxFTUVOVCxGVU5DVElPTl9FTEVNRU5UKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK09QSl9CT09MIEZVTkNUSU9OICggICAgIG9wal90Y2RfdCAqcF90Y2QsICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVfbm8gICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBPUEpfVUlOVDMyICgqbF9nYWluX3B0cikoT1BKX1VJTlQzMikgPSAwMDsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vLCByZXNubywgYmFuZG5vLCBwcmVjbm8sIGNibGtubzsgICAgICAgICAgIFwKKyAgICAgICAgb3BqX3RjcF90ICogbF90Y3AgPSAwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBvcGpfY3BfdCAqIGxfY3AgPSAwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG9wal90Y2RfdGlsZV90ICogbF90aWxlID0gMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgb3BqX3RjY3BfdCAqbF90Y2NwID0gMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBvcGpfdGNkX3RpbGVjb21wX3QgKmxfdGlsZWMgPSAwMDsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG9wal9pbWFnZV9jb21wX3QgKiBsX2ltYWdlX2NvbXAgPSAwMDsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgb3BqX3RjZF9yZXNvbHV0aW9uX3QgKmxfcmVzID0gMDA7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBvcGpfdGNkX2JhbmRfdCAqbF9iYW5kID0gMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG9wal9zdGVwc2l6ZV90ICogbF9zdGVwX3NpemUgPSAwMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgb3BqX3RjZF9wcmVjaW5jdF90ICpsX2N1cnJlbnRfcHJlY2luY3QgPSAwMDsgICAgICAgICAgICAgXAorICAgICAgICBUWVBFKiBsX2NvZGVfYmxvY2sgPSAwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG9wal9pbWFnZV90ICpsX2ltYWdlID0gMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgT1BKX1VJTlQzMiBwLHE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBPUEpfVUlOVDMyIGxfbGV2ZWxfbm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9QSl9VSU5UMzIgbF9wZHgsIGxfcGR5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgT1BKX1VJTlQzMiBsX2dhaW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBPUEpfSU5UMzIgbF94MGIsIGxfeTBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIGV4dGVudCBvZiBwcmVjaW5jdHMgLCB0b3AgbGVmdCwgYm90dG9tIHJpZ2h0KiovICAgICAgICAgIFwKKyAgICAgICAgT1BKX0lOVDMyIGxfdGxfcHJjX3hfc3RhcnQsIGxfdGxfcHJjX3lfc3RhcnQsIGxfYnJfcHJjX3hfZW5kLCBsX2JyX3ByY195X2VuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogbnVtYmVyIG9mIHByZWNpbmN0IGZvciBhIHJlc29sdXRpb24gKi8gICAgICAgICAgICAgICAgICAgXAorICAgICAgICBPUEpfVUlOVDMyIGxfbmJfcHJlY2luY3RzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIHJvb20gbmVlZGVkIHRvIHN0b3JlIGxfbmJfcHJlY2luY3QgcHJlY2luY3QgZm9yIGEgcmVzb2x1dGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9wcmVjaW5jdF9zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogbnVtYmVyIG9mIGNvZGUgYmxvY2tzIGZvciBhIHByZWNpbmN0Ki8gICAgICAgICAgICAgICAgICAgXAorICAgICAgICBPUEpfVUlOVDMyIGxfbmJfY29kZV9ibG9ja3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIHJvb20gbmVlZGVkIHRvIHN0b3JlIGxfbmJfY29kZV9ibG9ja3MgY29kZSBibG9ja3MgZm9yIGEgcHJlY2luY3QqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9QSl9VSU5UMzIgbF9uYl9jb2RlX2Jsb2Nrc19zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogc2l6ZSBvZiBkYXRhIGZvciBhIHRpbGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBPUEpfVUlOVDMyIGxfZGF0YV9zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbF9jcCA9IHBfdGNkLT5jcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsX3RjcCA9ICYobF9jcC0+dGNwc1twX3RpbGVfbm9dKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGxfdGlsZSA9IHBfdGNkLT50Y2RfaW1hZ2UtPnRpbGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbF90Y2NwID0gbF90Y3AtPnRjY3BzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsX3RpbGVjID0gbF90aWxlLT5jb21wczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGxfaW1hZ2UgPSBwX3RjZC0+aW1hZ2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbF9pbWFnZV9jb21wID0gcF90Y2QtPmltYWdlLT5jb21wczsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHAgPSBwX3RpbGVfbm8gJSBsX2NwLT50dzsgICAgICAgLyogdGlsZSBjb29yZGluYXRlcyAqLyAgICAgIFwKKyAgICAgICAgcSA9IHBfdGlsZV9ubyAvIGxfY3AtPnR3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiVGlsZSBjb29yZGluYXRlID0gJWQsJWRcbiIsIHAsIHEpOyovICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogNCBib3JkZXJzIG9mIHRoZSB0aWxlIHJlc2NhbGUgb24gdGhlIGltYWdlIGlmIG5lY2Vzc2FyeSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbF90aWxlLT54MCA9IG9wal9pbnRfbWF4KChPUEpfSU5UMzIpKGxfY3AtPnR4MCArIHAgKiBsX2NwLT50ZHgpLCAoT1BKX0lOVDMyKWxfaW1hZ2UtPngwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGxfdGlsZS0+eTAgPSBvcGpfaW50X21heCgoT1BKX0lOVDMyKShsX2NwLT50eTAgKyBxICogbF9jcC0+dGR5KSwgKE9QSl9JTlQzMilsX2ltYWdlLT55MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsX3RpbGUtPngxID0gb3BqX2ludF9taW4oKE9QSl9JTlQzMikobF9jcC0+dHgwICsgKHAgKyAxKSAqIGxfY3AtPnRkeCksIChPUEpfSU5UMzIpbF9pbWFnZS0+eDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbF90aWxlLT55MSA9IG9wal9pbnRfbWluKChPUEpfSU5UMzIpKGxfY3AtPnR5MCArIChxICsgMSkgKiBsX2NwLT50ZHkpLCAoT1BKX0lOVDMyKWxfaW1hZ2UtPnkxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIHRlc3RjYXNlIDE4ODgucGRmLmFzYW4uMzUuOTg4ICovIFwKKyAgICAgICAgaWYgKGxfdGNjcC0+bnVtcmVzb2x1dGlvbnMgPT0gMCkgeyBcCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInRpbGVzIHJlcXVpcmUgYXQgbGVhc3Qgb25lIHJlc29sdXRpb25cbiIpOyBcCisgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOyBcCisgICAgICAgIH0gXAorICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiVGlsZSBib3JkZXIgPSAlZCwlZCwlZCwlZFxuIiwgbF90aWxlLT54MCwgbF90aWxlLT55MCxsX3RpbGUtPngxLGxfdGlsZS0+eTEpOyovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qdGlsZS0+bnVtY29tcHMgPSBpbWFnZS0+bnVtY29tcHM7ICovICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZm9yKGNvbXBubyA9IDA7IGNvbXBubyA8IGxfdGlsZS0+bnVtY29tcHM7ICsrY29tcG5vKSB7ICAgICAgXAorICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJjb21wbm8gPSAlZC8lZFxuIiwgY29tcG5vLCBsX3RpbGUtPm51bWNvbXBzKTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgLyogYm9yZGVyIG9mIGVhY2ggbF90aWxlIGNvbXBvbmVudCAoZ2xvYmFsKSAqLyAgICAgIFwKKyAgICAgICAgICAgICAgICBsX3RpbGVjLT54MCA9IG9wal9pbnRfY2VpbGRpdihsX3RpbGUtPngwLCAoT1BKX0lOVDMyKWxfaW1hZ2VfY29tcC0+ZHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBsX3RpbGVjLT55MCA9IG9wal9pbnRfY2VpbGRpdihsX3RpbGUtPnkwLCAoT1BKX0lOVDMyKWxfaW1hZ2VfY29tcC0+ZHkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBsX3RpbGVjLT54MSA9IG9wal9pbnRfY2VpbGRpdihsX3RpbGUtPngxLCAoT1BKX0lOVDMyKWxfaW1hZ2VfY29tcC0+ZHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBsX3RpbGVjLT55MSA9IG9wal9pbnRfY2VpbGRpdihsX3RpbGUtPnkxLCAoT1BKX0lOVDMyKWxfaW1hZ2VfY29tcC0+ZHkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiXHRUaWxlIGNvbXBvIGJvcmRlciA9ICVkLCVkLCVkLCVkXG4iLCBsX3RpbGVjLT54MCwgbF90aWxlYy0+eTAsbF90aWxlYy0+eDEsbF90aWxlYy0+eTEpOyovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAobF90aWxlYy0+eDEgPCAwIHx8IGxfdGlsZWMtPngwIDwgMCB8fCBsX3RpbGVjLT55MSA8IDAgfHwgbF90aWxlYy0+eTAgPCAwKSByZXR1cm4gT1BKX0ZBTFNFO1wKKyAgICAgICAgICAgICAgICBsX2RhdGFfc2l6ZSA9IChPUEpfVUlOVDMyKShsX3RpbGVjLT54MSAtIGxfdGlsZWMtPngwKSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICogKE9QSl9VSU5UMzIpKGxfdGlsZWMtPnkxIC0gbF90aWxlYy0+eTApICogKE9QSl9VSU5UMzIpc2l6ZW9mKE9QSl9VSU5UMzIgKTtcCisgICAgICAgICAgICAgICAgbF90aWxlYy0+bnVtcmVzb2x1dGlvbnMgPSBsX3RjY3AtPm51bXJlc29sdXRpb25zOyAgIFwKKyAgICAgICAgICAgICAgICBpZiAobF90Y2NwLT5udW1yZXNvbHV0aW9ucyA8IGxfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWMubV9yZWR1Y2UpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGlsZWMtPm1pbmltdW1fbnVtX3Jlc29sdXRpb25zID0gMTsgICAgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGlsZWMtPm1pbmltdW1fbnVtX3Jlc29sdXRpb25zID0gbF90Y2NwLT5udW1yZXNvbHV0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC0gbF9jcC0+bV9zcGVjaWZpY19wYXJhbS5tX2RlYy5tX3JlZHVjZTsgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAobF90aWxlYy0+ZGF0YSA9PSAwMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgbF90aWxlYy0+ZGF0YSA9IChPUEpfSU5UMzIgKikgb3BqX21hbGxvYyhsX2RhdGFfc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbF90aWxlYy0+ZGF0YSApIHsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0QWxsb2NhdGUgZGF0YSBvZiB0aWxlYyAoaW50KTogJWQgeCBPUEpfVUlOVDMyXG4iLGxfZGF0YV9zaXplKTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBsX3RpbGVjLT5kYXRhX3NpemUgPSBsX2RhdGFfc2l6ZTsgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxfZGF0YV9zaXplID4gbF90aWxlYy0+ZGF0YV9zaXplKSB7ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBuZXdfZGF0YSA9IChPUEpfSU5UMzIgKikgb3BqX3JlYWxsb2MobF90aWxlYy0+ZGF0YSwgbF9kYXRhX3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIHRpbGUgZGF0YVxuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICBcCisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSB0aWxlIGRhdGFcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBuZXdfZGF0YSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF90aWxlYy0+ZGF0YSk7ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RpbGVjLT5kYXRhID0gTlVMTDsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfdGlsZWMtPmRhdGFfc2l6ZSA9IDA7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBsX3RpbGVjLT5kYXRhID0gbmV3X2RhdGE7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJcdFJlYWxsb2NhdGUgZGF0YSBvZiB0aWxlYyAoaW50KTogZnJvbSAlZCB0byAlZCB4IE9QSl9VSU5UMzJcbiIsIGxfdGlsZWMtPmRhdGFfc2l6ZSwgbF9kYXRhX3NpemUpOyovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGlsZWMtPmRhdGFfc2l6ZSA9IGxfZGF0YV9zaXplOyAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBsX2RhdGFfc2l6ZSA9IGxfdGlsZWMtPm51bXJlc29sdXRpb25zICogKE9QSl9VSU5UMzIpc2l6ZW9mKG9wal90Y2RfcmVzb2x1dGlvbl90KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChsX3RpbGVjLT5yZXNvbHV0aW9ucyA9PSAwMCkgeyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBsX3RpbGVjLT5yZXNvbHV0aW9ucyA9IChvcGpfdGNkX3Jlc29sdXRpb25fdCAqKSBvcGpfbWFsbG9jKGxfZGF0YV9zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBsX3RpbGVjLT5yZXNvbHV0aW9ucyApIHsgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiXHRBbGxvY2F0ZSByZXNvbHV0aW9ucyBvZiB0aWxlYyAob3BqX3RjZF9yZXNvbHV0aW9uX3QpOiAlZFxuIixsX2RhdGFfc2l6ZSk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBsX3RpbGVjLT5yZXNvbHV0aW9uc19zaXplID0gbF9kYXRhX3NpemU7ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbXNldChsX3RpbGVjLT5yZXNvbHV0aW9ucywwLGxfZGF0YV9zaXplKTsgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobF9kYXRhX3NpemUgPiBsX3RpbGVjLT5yZXNvbHV0aW9uc19zaXplKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfcmVzb2x1dGlvbl90KiBuZXdfcmVzb2x1dGlvbnMgPSAob3BqX3RjZF9yZXNvbHV0aW9uX3QgKikgb3BqX3JlYWxsb2MobF90aWxlYy0+cmVzb2x1dGlvbnMsIGxfZGF0YV9zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG5ld19yZXNvbHV0aW9ucykgeyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gdGlsZSByZXNvbHV0aW9uc1xuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHRpbGUgcmVzb2x1dGlvbnNcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX3RpbGVjLT5yZXNvbHV0aW9ucyk7ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfdGlsZWMtPnJlc29sdXRpb25zID0gTlVMTDsgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF90aWxlYy0+cmVzb2x1dGlvbnNfc2l6ZSA9IDA7ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGlsZWMtPnJlc29sdXRpb25zID0gbmV3X3Jlc29sdXRpb25zOyAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0UmVhbGxvY2F0ZSBkYXRhIG9mIHRpbGVjIChpbnQpOiBmcm9tICVkIHRvICVkIHggT1BKX1VJTlQzMlxuIiwgbF90aWxlYy0+cmVzb2x1dGlvbnNfc2l6ZSwgbF9kYXRhX3NpemUpOyovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCgoT1BKX0JZVEUqKSBsX3RpbGVjLT5yZXNvbHV0aW9ucykrbF90aWxlYy0+cmVzb2x1dGlvbnNfc2l6ZSwwLGxfZGF0YV9zaXplIC0gbF90aWxlYy0+cmVzb2x1dGlvbnNfc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgbF90aWxlYy0+cmVzb2x1dGlvbnNfc2l6ZSA9IGxfZGF0YV9zaXplOyAgICBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGxfbGV2ZWxfbm8gPSBsX3RpbGVjLT5udW1yZXNvbHV0aW9ucyAtIDE7ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgbF9yZXMgPSBsX3RpbGVjLT5yZXNvbHV0aW9uczsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBsX3N0ZXBfc2l6ZSA9IGxfdGNjcC0+c3RlcHNpemVzOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChsX3RjY3AtPnFtZmJpZCA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBsX2dhaW5fcHRyID0gJm9wal9kd3RfZ2V0Z2Fpbl9yZWFsOyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBsX2dhaW5fcHRyICA9ICZvcGpfZHd0X2dldGdhaW47ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJcdGxldmVsX25vPSVkXG4iLGxfbGV2ZWxfbm8pOyovICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZm9yKHJlc25vID0gMDsgcmVzbm8gPCBsX3RpbGVjLT5udW1yZXNvbHV0aW9uczsgKytyZXNubykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiXHRcdHJlc25vID0gJWQvJWRcbiIsIHJlc25vLCBsX3RpbGVjLT5udW1yZXNvbHV0aW9ucyk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgdGxjYmd4c3RhcnQsIHRsY2JneXN0YXJ0IC8qLCBicmNiZ3hlbmQsIGJyY2JneWVuZCovOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY2Jnd2lkdGhleHBuLCBjYmdoZWlnaHRleHBuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgY2Jsa3dpZHRoZXhwbiwgY2Jsa2hlaWdodGV4cG47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJvcmRlciBmb3IgZWFjaCByZXNvbHV0aW9uIGxldmVsIChnbG9iYWwpICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcmVzLT54MCA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF90aWxlYy0+eDAsIChPUEpfSU5UMzIpbF9sZXZlbF9ubyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcmVzLT55MCA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF90aWxlYy0+eTAsIChPUEpfSU5UMzIpbF9sZXZlbF9ubyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcmVzLT54MSA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF90aWxlYy0+eDEsIChPUEpfSU5UMzIpbF9sZXZlbF9ubyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcmVzLT55MSA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF90aWxlYy0+eTEsIChPUEpfSU5UMzIpbF9sZXZlbF9ubyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJcdFx0XHRyZXNfeDA9ICVkLCByZXNfeTAgPSVkLCByZXNfeDE9JWQsIHJlc195MT0lZFxuIiwgbF9yZXMtPngwLCBsX3Jlcy0+eTAsIGxfcmVzLT54MSwgbF9yZXMtPnkxKTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHAuIDM1LCB0YWJsZSBBLTIzLCBJU08vSUVDIEZESVMxNTQ0NDQtMSA6IDIwMDAgKDE4IGF1Z3VzdCAyMDAwKSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcGR4ID0gbF90Y2NwLT5wcmN3W3Jlc25vXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcGR5ID0gbF90Y2NwLT5wcmNoW3Jlc25vXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJcdFx0XHRwZHg9JWQsIHBkeT0lZFxuIiwgbF9wZHgsIGxfcGR5KTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHAuIDY0LCBCLjYsIElTTy9JRUMgRkRJUzE1NDQ0LTEgOiAyMDAwICgxOCBhdWd1c3QgMjAwMCkgICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGxfcHJjX3hfc3RhcnQgPSBvcGpfaW50X2Zsb29yZGl2cG93MihsX3Jlcy0+eDAsIChPUEpfSU5UMzIpbF9wZHgpIDw8IGxfcGR4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGxfcHJjX3lfc3RhcnQgPSBvcGpfaW50X2Zsb29yZGl2cG93MihsX3Jlcy0+eTAsIChPUEpfSU5UMzIpbF9wZHkpIDw8IGxfcGR5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfYnJfcHJjX3hfZW5kID0gb3BqX2ludF9jZWlsZGl2cG93MihsX3Jlcy0+eDEsIChPUEpfSU5UMzIpbF9wZHgpIDw8IGxfcGR4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfYnJfcHJjX3lfZW5kID0gb3BqX2ludF9jZWlsZGl2cG93MihsX3Jlcy0+eTEsIChPUEpfSU5UMzIpbF9wZHkpIDw8IGxfcGR5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJcdFx0XHRwcmNfeF9zdGFydD0lZCwgcHJjX3lfc3RhcnQ9JWQsIGJyX3ByY194X2VuZD0lZCwgYnJfcHJjX3lfZW5kPSVkIFxuIiwgbF90bF9wcmNfeF9zdGFydCwgbF90bF9wcmNfeV9zdGFydCwgbF9icl9wcmNfeF9lbmQgLGxfYnJfcHJjX3lfZW5kICk7Ki8gICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcmVzLT5wdyA9IChsX3Jlcy0+eDAgPT0gbF9yZXMtPngxKSA/IDAgOiAoT1BKX1VJTlQzMikoKGxfYnJfcHJjX3hfZW5kIC0gbF90bF9wcmNfeF9zdGFydCkgPj4gbF9wZHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfcmVzLT5waCA9IChsX3Jlcy0+eTAgPT0gbF9yZXMtPnkxKSA/IDAgOiAoT1BKX1VJTlQzMikoKGxfYnJfcHJjX3lfZW5kIC0gbF90bF9wcmNfeV9zdGFydCkgPj4gbF9wZHkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJcdFx0XHRyZXNfcHc9JWQsIHJlc19waD0lZFxuIiwgbF9yZXMtPnB3LCBsX3Jlcy0+cGggKTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfcHJlY2luY3RzID0gbF9yZXMtPnB3ICogbF9yZXMtPnBoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfcHJlY2luY3Rfc2l6ZSA9IGxfbmJfcHJlY2luY3RzICogKE9QSl9VSU5UMzIpc2l6ZW9mKG9wal90Y2RfcHJlY2luY3RfdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNubyA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGxjYmd4c3RhcnQgPSBsX3RsX3ByY194X3N0YXJ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGxjYmd5c3RhcnQgPSBsX3RsX3ByY195X3N0YXJ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypicmNiZ3hlbmQgPSBsX2JyX3ByY194X2VuZDsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnJjYmd5ZW5kID0gbF9icl9wcmNfeV9lbmQ7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmd3aWR0aGV4cG4gPSBsX3BkeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmdoZWlnaHRleHBuID0gbF9wZHk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3Jlcy0+bnVtYmFuZHMgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bGNiZ3hzdGFydCA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF90bF9wcmNfeF9zdGFydCwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGxjYmd5c3RhcnQgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfdGxfcHJjX3lfc3RhcnQsIDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qYnJjYmd4ZW5kID0gb3BqX2ludF9jZWlsZGl2cG93MihsX2JyX3ByY194X2VuZCwgMSk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmJyY2JneWVuZCA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF9icl9wcmNfeV9lbmQsIDEpOyovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jnd2lkdGhleHBuID0gbF9wZHggLSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JnaGVpZ2h0ZXhwbiA9IGxfcGR5IC0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9yZXMtPm51bWJhbmRzID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNibGt3aWR0aGV4cG4gPSBvcGpfdWludF9taW4obF90Y2NwLT5jYmxrdywgY2Jnd2lkdGhleHBuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICBjYmxraGVpZ2h0ZXhwbiA9IG9wal91aW50X21pbihsX3RjY3AtPmNibGtoLCBjYmdoZWlnaHRleHBuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgbF9iYW5kID0gbF9yZXMtPmJhbmRzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChiYW5kbm8gPSAwOyBiYW5kbm8gPCBsX3Jlcy0+bnVtYmFuZHM7ICsrYmFuZG5vKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgbnVtYnBzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiXHRcdFx0YmFuZF9ubz0lZC8lZFxuIiwgYmFuZG5vLCBsX3Jlcy0+bnVtYmFuZHMgKTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzbm8gPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+YmFuZG5vID0gMCA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+eDAgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfdGlsZWMtPngwLCAoT1BKX0lOVDMyKWxfbGV2ZWxfbm8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+eTAgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfdGlsZWMtPnkwLCAoT1BKX0lOVDMyKWxfbGV2ZWxfbm8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+eDEgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfdGlsZWMtPngxLCAoT1BKX0lOVDMyKWxfbGV2ZWxfbm8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+eTEgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfdGlsZWMtPnkxLCAoT1BKX0lOVDMyKWxfbGV2ZWxfbm8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+YmFuZG5vID0gYmFuZG5vICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHgwYiA9IDEgaWYgYmFuZG5vID0gMSBvciAzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfeDBiID0gbF9iYW5kLT5iYW5kbm8mMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHkwYiA9IDEgaWYgYmFuZG5vID0gMiBvciAzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfeTBiID0gKE9QSl9JTlQzMikoKGxfYmFuZC0+YmFuZG5vKT4+MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsX2JhbmQgYm9yZGVyIChnbG9iYWwpICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2JhbmQtPngwID0gb3BqX2ludF9jZWlsZGl2cG93MihsX3RpbGVjLT54MCAtICgxIDw8IGxfbGV2ZWxfbm8pICogbF94MGIsIChPUEpfSU5UMzIpKGxfbGV2ZWxfbm8gKyAxKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+eTAgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfdGlsZWMtPnkwIC0gKDEgPDwgbF9sZXZlbF9ubykgKiBsX3kwYiwgKE9QSl9JTlQzMikobF9sZXZlbF9ubyArIDEpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9iYW5kLT54MSA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF90aWxlYy0+eDEgLSAoMSA8PCBsX2xldmVsX25vKSAqIGxfeDBiLCAoT1BKX0lOVDMyKShsX2xldmVsX25vICsgMSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2JhbmQtPnkxID0gb3BqX2ludF9jZWlsZGl2cG93MihsX3RpbGVjLT55MSAtICgxIDw8IGxfbGV2ZWxfbm8pICogbF95MGIsIChPUEpfSU5UMzIpKGxfbGV2ZWxfbm8gKyAxKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogYXZvaWQgYW4gaWYgd2l0aCBzdG9yaW5nIGZ1bmN0aW9uIHBvaW50ZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2dhaW4gPSAoKmxfZ2Fpbl9wdHIpIChsX2JhbmQtPmJhbmRubyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1icHMgPSAoT1BKX0lOVDMyKShsX2ltYWdlX2NvbXAtPnByZWMgKyBsX2dhaW4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9iYW5kLT5zdGVwc2l6ZSA9IChPUEpfRkxPQVQzMikoKCgxLjAgKyBsX3N0ZXBfc2l6ZS0+bWFudCAvIDIwNDguMCkgKiBwb3coMi4wLCAoT1BKX0lOVDMyKSAobnVtYnBzIC0gbF9zdGVwX3NpemUtPmV4cG4pKSkpICogRlJBQ1RJT047ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9iYW5kLT5udW1icHMgPSBsX3N0ZXBfc2l6ZS0+ZXhwbiArIChPUEpfSU5UMzIpbF90Y2NwLT5udW1nYml0cyAtIDE7ICAgICAgLyogV0hZIC0xID8gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBsX2JhbmQtPnByZWNpbmN0cykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+cHJlY2luY3RzID0gKG9wal90Y2RfcHJlY2luY3RfdCAqKSBvcGpfbWFsbG9jKCAvKjMgKiAqLyBsX25iX3ByZWNpbmN0X3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGxfYmFuZC0+cHJlY2luY3RzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJcdFx0XHRcdEFsbG9jYXRlIHByZWNpbmN0cyBvZiBhIGJhbmQgKG9wal90Y2RfcHJlY2luY3RfdCk6ICVkXG4iLGxfbmJfcHJlY2luY3Rfc2l6ZSk7ICAgICAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbXNldChsX2JhbmQtPnByZWNpbmN0cywwLGxfbmJfcHJlY2luY3Rfc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+cHJlY2luY3RzX2RhdGFfc2l6ZSA9IGxfbmJfcHJlY2luY3Rfc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsX2JhbmQtPnByZWNpbmN0c19kYXRhX3NpemUgPCBsX25iX3ByZWNpbmN0X3NpemUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfcHJlY2luY3RfdCAqIG5ld19wcmVjaW5jdHMgPSAob3BqX3RjZF9wcmVjaW5jdF90ICopIG9wal9yZWFsbG9jKGxfYmFuZC0+cHJlY2luY3RzLC8qMyAqICovIGxfbmJfcHJlY2luY3Rfc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG5ld19wcmVjaW5jdHMpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3BqX2V2ZW50X21zZyhwX21hbmFnZXIsIEVWVF9FUlJPUiwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBiYW5kIHByZWNpbnRzXG4iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgYmFuZCBwcmVjaW50c1xuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9iYW5kLT5wcmVjaW5jdHMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9iYW5kLT5wcmVjaW5jdHMgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9iYW5kLT5wcmVjaW5jdHNfZGF0YV9zaXplID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+cHJlY2luY3RzID0gbmV3X3ByZWNpbmN0czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJcdFx0XHRcdFJlYWxsb2NhdGUgcHJlY2luY3RzIG9mIGEgYmFuZCAob3BqX3RjZF9wcmVjaW5jdF90KTogZnJvbSAlZCB0byAlZFxuIixsX2JhbmQtPnByZWNpbmN0c19kYXRhX3NpemUsIGxfbmJfcHJlY2luY3Rfc2l6ZSk7Ki8gICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbXNldCgoKE9QSl9CWVRFICopIGxfYmFuZC0+cHJlY2luY3RzKSArIGxfYmFuZC0+cHJlY2luY3RzX2RhdGFfc2l6ZSwwLGxfbmJfcHJlY2luY3Rfc2l6ZSAtIGxfYmFuZC0+cHJlY2luY3RzX2RhdGFfc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfYmFuZC0+cHJlY2luY3RzX2RhdGFfc2l6ZSA9IGxfbmJfcHJlY2luY3Rfc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QgPSBsX2JhbmQtPnByZWNpbmN0czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgICAgIChwcmVjbm8gPSAwOyBwcmVjbm8gPCBsX25iX3ByZWNpbmN0czsgKytwcmVjbm8pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiB0bGNibGt4c3RhcnQsIHRsY2Jsa3lzdGFydCwgYnJjYmxreGVuZCwgYnJjYmxreWVuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBjYmd4c3RhcnQgPSB0bGNiZ3hzdGFydCArIChPUEpfSU5UMzIpKHByZWNubyAlIGxfcmVzLT5wdykgKiAoMSA8PCBjYmd3aWR0aGV4cG4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIGNiZ3lzdGFydCA9IHRsY2JneXN0YXJ0ICsgKE9QSl9JTlQzMikocHJlY25vIC8gbF9yZXMtPnB3KSAqICgxIDw8IGNiZ2hlaWdodGV4cG4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgY2JneGVuZCA9IGNiZ3hzdGFydCArICgxIDw8IGNiZ3dpZHRoZXhwbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgY2JneWVuZCA9IGNiZ3lzdGFydCArICgxIDw8IGNiZ2hlaWdodGV4cG4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiXHQgcHJlY25vPSVkOyBiYW5kbm89JWQsIHJlc25vPSVkOyBjb21wbm89JWRcbiIsIHByZWNubywgYmFuZG5vICwgcmVzbm8sIGNvbXBubyk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiXHQgdGxjYmd4c3RhcnQoPSVkKSArIChwcmVjbm8oPSVkKSBwZXJjZW50IHJlcy0+cHcoPSVkKSkgKiAoMSA8PCBjYmd3aWR0aGV4cG4oPSVkKSkgXG4iLHRsY2JneHN0YXJ0LHByZWNubyxsX3Jlcy0+cHcsY2Jnd2lkdGhleHBuKTsqLyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcmVjaW5jdCBzaXplIChnbG9iYWwpICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiXHQgY2JneHN0YXJ0PSVkLCBsX2JhbmQtPngwID0gJWQgXG4iLGNiZ3hzdGFydCwgbF9iYW5kLT54MCk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPngwID0gb3BqX2ludF9tYXgoY2JneHN0YXJ0LCBsX2JhbmQtPngwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT55MCA9IG9wal9pbnRfbWF4KGNiZ3lzdGFydCwgbF9iYW5kLT55MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9wcmVjaW5jdC0+eDEgPSBvcGpfaW50X21pbihjYmd4ZW5kLCBsX2JhbmQtPngxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPnkxID0gb3BqX2ludF9taW4oY2JneWVuZCwgbF9iYW5kLT55MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0IHByY194MD0lZDsgcHJjX3kwPSVkLCBwcmNfeDE9JWQ7IHByY195MT0lZFxuIixsX2N1cnJlbnRfcHJlY2luY3QtPngwLCBsX2N1cnJlbnRfcHJlY2luY3QtPnkwICxsX2N1cnJlbnRfcHJlY2luY3QtPngxLCBsX2N1cnJlbnRfcHJlY2luY3QtPnkxKTsqLyAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGxjYmxreHN0YXJ0ID0gb3BqX2ludF9mbG9vcmRpdnBvdzIobF9jdXJyZW50X3ByZWNpbmN0LT54MCwgKE9QSl9JTlQzMiljYmxrd2lkdGhleHBuKSA8PCBjYmxrd2lkdGhleHBuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0IHRsY2Jsa3hzdGFydCA9JWRcbiIsdGxjYmxreHN0YXJ0ICk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGxjYmxreXN0YXJ0ID0gb3BqX2ludF9mbG9vcmRpdnBvdzIobF9jdXJyZW50X3ByZWNpbmN0LT55MCwgKE9QSl9JTlQzMiljYmxraGVpZ2h0ZXhwbikgPDwgY2Jsa2hlaWdodGV4cG47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0IHRsY2Jsa3lzdGFydCA9JWRcbiIsdGxjYmxreXN0YXJ0ICk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJjYmxreGVuZCA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF9jdXJyZW50X3ByZWNpbmN0LT54MSwgKE9QSl9JTlQzMiljYmxrd2lkdGhleHBuKSA8PCBjYmxrd2lkdGhleHBuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0IGJyY2Jsa3hlbmQgPSVkXG4iLGJyY2Jsa3hlbmQgKTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJjYmxreWVuZCA9IG9wal9pbnRfY2VpbGRpdnBvdzIobF9jdXJyZW50X3ByZWNpbmN0LT55MSwgKE9QSl9JTlQzMiljYmxraGVpZ2h0ZXhwbikgPDwgY2Jsa2hlaWdodGV4cG47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0IGJyY2Jsa3llbmQgPSVkXG4iLGJyY2Jsa3llbmQgKTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT5jdyA9IChPUEpfVUlOVDMyKSgoYnJjYmxreGVuZCAtIHRsY2Jsa3hzdGFydCkgPj4gY2Jsa3dpZHRoZXhwbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPmNoID0gKE9QSl9VSU5UMzIpKChicmNibGt5ZW5kIC0gdGxjYmxreXN0YXJ0KSA+PiBjYmxraGVpZ2h0ZXhwbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfY29kZV9ibG9ja3MgPSBsX2N1cnJlbnRfcHJlY2luY3QtPmN3ICogbF9jdXJyZW50X3ByZWNpbmN0LT5jaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJcdFx0XHRcdCBwcmVjaW5jdF9jdyA9ICVkIHggcmVjaW5jdF9jaCA9ICVkXG4iLGxfY3VycmVudF9wcmVjaW5jdC0+Y3csIGxfY3VycmVudF9wcmVjaW5jdC0+Y2gpOyAgICAgICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfbmJfY29kZV9ibG9ja3Nfc2l6ZSA9IGxfbmJfY29kZV9ibG9ja3MgKiAoT1BKX1VJTlQzMilzaXplb2YoVFlQRSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGxfY3VycmVudF9wcmVjaW5jdC0+Y2Jsa3MuRUxFTUVOVCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT5jYmxrcy5FTEVNRU5UID0gKFRZUEUqKSBvcGpfbWFsbG9jKGxfbmJfY29kZV9ibG9ja3Nfc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbF9jdXJyZW50X3ByZWNpbmN0LT5jYmxrcy5FTEVNRU5UICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0XHRcdFx0QWxsb2NhdGUgY2Jsa3Mgb2YgYSBwcmVjaW5jdCAob3BqX3RjZF9jYmxrX2RlY190KTogJWRcbiIsbF9uYl9jb2RlX2Jsb2Nrc19zaXplKTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGxfY3VycmVudF9wcmVjaW5jdC0+Y2Jsa3MuRUxFTUVOVCwwLGxfbmJfY29kZV9ibG9ja3Nfc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT5ibG9ja19zaXplID0gbF9uYl9jb2RlX2Jsb2Nrc19zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxfbmJfY29kZV9ibG9ja3Nfc2l6ZSA+IGxfY3VycmVudF9wcmVjaW5jdC0+YmxvY2tfc2l6ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFlQRSAqbmV3X0VMRU1FTlQgPSAoVFlQRSopIG9wal9yZWFsbG9jKGxfY3VycmVudF9wcmVjaW5jdC0+Y2Jsa3MuRUxFTUVOVCwgbF9uYl9jb2RlX2Jsb2Nrc19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbmV3X0VMRU1FTlQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2N1cnJlbnRfcHJlY2luY3QtPmNibGtzLkVMRU1FTlQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPmNibGtzLkVMRU1FTlQgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPmJsb2NrX3NpemUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvcGpfZXZlbnRfbXNnKHBfbWFuYWdlciwgRVZUX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgZm9yIGN1cnJlbnQgcHJlY2luY3QgY29kZWJsb2NrIGVsZW1lbnRcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk5vdCBlbm91Z2ggbWVtb3J5IGZvciBjdXJyZW50IHByZWNpbmN0IGNvZGVibG9jayBlbGVtZW50XG4iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT5jYmxrcy5FTEVNRU5UID0gbmV3X0VMRU1FTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0XHRcdFx0UmVhbGxvY2F0ZSBjYmxrcyBvZiBhIHByZWNpbmN0IChvcGpfdGNkX2NibGtfZGVjX3QpOiBmcm9tICVkIHRvICVkXG4iLGxfY3VycmVudF9wcmVjaW5jdC0+YmxvY2tfc2l6ZSwgbF9uYl9jb2RlX2Jsb2Nrc19zaXplKTsgICAgICovXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCgoT1BKX0JZVEUgKikgbF9jdXJyZW50X3ByZWNpbmN0LT5jYmxrcy5FTEVNRU5UKSArIGxfY3VycmVudF9wcmVjaW5jdC0+YmxvY2tfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxsX25iX2NvZGVfYmxvY2tzX3NpemUgLSBsX2N1cnJlbnRfcHJlY2luY3QtPmJsb2NrX3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT5ibG9ja19zaXplID0gbF9uYl9jb2RlX2Jsb2Nrc19zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGxfY3VycmVudF9wcmVjaW5jdC0+aW5jbHRyZWUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT5pbmNsdHJlZSA9IG9wal90Z3RfY3JlYXRlKGxfY3VycmVudF9wcmVjaW5jdC0+Y3csICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPmNoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNleyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9wcmVjaW5jdC0+aW5jbHRyZWUgPSBvcGpfdGd0X2luaXQobF9jdXJyZW50X3ByZWNpbmN0LT5pbmNsdHJlZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT5jdywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT5jaCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbF9jdXJyZW50X3ByZWNpbmN0LT5pbmNsdHJlZSkgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6IE5vIGluY2x0cmVlIGNyZWF0ZWQuXG4iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnJldHVybiBPUEpfRkFMU0U7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbF9jdXJyZW50X3ByZWNpbmN0LT5pbXNidHJlZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPmltc2J0cmVlID0gb3BqX3RndF9jcmVhdGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9wcmVjaW5jdC0+Y3csICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9wcmVjaW5jdC0+Y2gpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jdXJyZW50X3ByZWNpbmN0LT5pbXNidHJlZSA9IG9wal90Z3RfaW5pdCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPmltc2J0cmVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPmN3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHJlY2luY3QtPmNoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBsX2N1cnJlbnRfcHJlY2luY3QtPmltc2J0cmVlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiV0FSTklORzogTm8gaW1zYnRyZWUgY3JlYXRlZC5cbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qcmV0dXJuIE9QSl9GQUxTRTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NvZGVfYmxvY2sgPSBsX2N1cnJlbnRfcHJlY2luY3QtPmNibGtzLkVMRU1FTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNibGtubyA9IDA7IGNibGtubyA8IGxfbmJfY29kZV9ibG9ja3M7ICsrY2Jsa25vKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiBjYmxreHN0YXJ0ID0gdGxjYmxreHN0YXJ0ICsgKE9QSl9JTlQzMikoY2Jsa25vICUgbF9jdXJyZW50X3ByZWNpbmN0LT5jdykgKiAoMSA8PCBjYmxrd2lkdGhleHBuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIGNibGt5c3RhcnQgPSB0bGNibGt5c3RhcnQgKyAoT1BKX0lOVDMyKShjYmxrbm8gLyBsX2N1cnJlbnRfcHJlY2luY3QtPmN3KSAqICgxIDw8IGNibGtoZWlnaHRleHBuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgY2Jsa3hlbmQgPSBjYmxreHN0YXJ0ICsgKDEgPDwgY2Jsa3dpZHRoZXhwbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgY2Jsa3llbmQgPSBjYmxreXN0YXJ0ICsgKDEgPDwgY2Jsa2hlaWdodGV4cG4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlLWJsb2NrIHNpemUgKGdsb2JhbCkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NvZGVfYmxvY2stPngwID0gb3BqX2ludF9tYXgoY2Jsa3hzdGFydCwgbF9jdXJyZW50X3ByZWNpbmN0LT54MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jb2RlX2Jsb2NrLT55MCA9IG9wal9pbnRfbWF4KGNibGt5c3RhcnQsIGxfY3VycmVudF9wcmVjaW5jdC0+eTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY29kZV9ibG9jay0+eDEgPSBvcGpfaW50X21pbihjYmxreGVuZCwgbF9jdXJyZW50X3ByZWNpbmN0LT54MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NvZGVfYmxvY2stPnkxID0gb3BqX2ludF9taW4oY2Jsa3llbmQsIGxfY3VycmVudF9wcmVjaW5jdC0+eTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgRlVOQ1RJT05fRUxFTUVOVChsX2NvZGVfYmxvY2spKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX2NvZGVfYmxvY2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jdXJyZW50X3ByZWNpbmN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8qIHByZWNubyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfYmFuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfc3RlcF9zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgfSAvKiBiYW5kbm8gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgKytsX3JlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgLS1sX2xldmVsX25vOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gLyogcmVzbm8gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICsrbF90Y2NwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICsrbF90aWxlYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICsrbF9pbWFnZV9jb21wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IC8qIGNvbXBubyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gT1BKX1RSVUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCisKK09QSl9NQUNST19UQ0RfQUxMT0NBVEUob3BqX3RjZF9pbml0X2VuY29kZV90aWxlLCBvcGpfdGNkX2NibGtfZW5jX3QsIDEuZiwgZW5jLCBvcGpfdGNkX2NvZGVfYmxvY2tfZW5jX2FsbG9jYXRlKQorT1BKX01BQ1JPX1RDRF9BTExPQ0FURShvcGpfdGNkX2luaXRfZGVjb2RlX3RpbGUsIG9wal90Y2RfY2Jsa19kZWNfdCwgMC41ZiwgZGVjLCBvcGpfdGNkX2NvZGVfYmxvY2tfZGVjX2FsbG9jYXRlKQorCisjdW5kZWYgT1BKX01BQ1JPX1RDRF9BTExPQ0FURQorCisvKioKKyAqIEFsbG9jYXRlcyBtZW1vcnkgZm9yIGFuIGVuY29kaW5nIGNvZGUgYmxvY2suCisgKi8KK09QSl9CT09MIG9wal90Y2RfY29kZV9ibG9ja19lbmNfYWxsb2NhdGUgKG9wal90Y2RfY2Jsa19lbmNfdCAqIHBfY29kZV9ibG9jaykKK3sKKyAgICAgICAgaWYgKCEgcF9jb2RlX2Jsb2NrLT5kYXRhKSB7CisKKyAgICAgICAgICAgICAgICBwX2NvZGVfYmxvY2stPmRhdGEgPSAoT1BKX0JZVEUqKSBvcGpfbWFsbG9jKE9QSl9KMktfREVGQVVMVF9DQkxLX0RBVEFfU0laRSoyKTsgLyp3aHkgKzEgPyovCisgICAgICAgICAgICAgICAgaWYoISBwX2NvZGVfYmxvY2stPmRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcF9jb2RlX2Jsb2NrLT5kYXRhWzBdID0gMDsKKyAgICAgICAgICAgICAgICBwX2NvZGVfYmxvY2stPmRhdGErPTE7CisKKyAgICAgICAgICAgICAgICAvKiBubyBtZW1zZXQgc2luY2UgZGF0YSAqLworICAgICAgICAgICAgICAgIHBfY29kZV9ibG9jay0+bGF5ZXJzID0gKG9wal90Y2RfbGF5ZXJfdCopIG9wal9tYWxsb2MoMTAwICogc2l6ZW9mKG9wal90Y2RfbGF5ZXJfdCkpOworICAgICAgICAgICAgICAgIGlmICghIHBfY29kZV9ibG9jay0+bGF5ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHBfY29kZV9ibG9jay0+cGFzc2VzID0gKG9wal90Y2RfcGFzc190Kikgb3BqX21hbGxvYygxMDAgKiBzaXplb2Yob3BqX3RjZF9wYXNzX3QpKTsKKyAgICAgICAgICAgICAgICBpZiAoISBwX2NvZGVfYmxvY2stPnBhc3NlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtZW1zZXQocF9jb2RlX2Jsb2NrLT5sYXllcnMsMCwxMDAgKiBzaXplb2Yob3BqX3RjZF9sYXllcl90KSk7CisgICAgICAgIG1lbXNldChwX2NvZGVfYmxvY2stPnBhc3NlcywwLDEwMCAqIHNpemVvZihvcGpfdGNkX3Bhc3NfdCkpOworCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworLyoqCisgKiBBbGxvY2F0ZXMgbWVtb3J5IGZvciBhIGRlY29kaW5nIGNvZGUgYmxvY2suCisgKi8KK09QSl9CT09MIG9wal90Y2RfY29kZV9ibG9ja19kZWNfYWxsb2NhdGUgKG9wal90Y2RfY2Jsa19kZWNfdCAqIHBfY29kZV9ibG9jaykKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBsX3NlZ19zaXplOworCisgICAgICAgIGlmICghIHBfY29kZV9ibG9jay0+ZGF0YSkgeworCisgICAgICAgICAgICAgICAgcF9jb2RlX2Jsb2NrLT5kYXRhID0gKE9QSl9CWVRFKikgb3BqX21hbGxvYyhPUEpfSjJLX0RFRkFVTFRfQ0JMS19EQVRBX1NJWkUpOworICAgICAgICAgICAgICAgIGlmICghIHBfY29kZV9ibG9jay0+ZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcF9jb2RlX2Jsb2NrLT5kYXRhX21heF9zaXplID0gT1BKX0oyS19ERUZBVUxUX0NCTEtfREFUQV9TSVpFOworICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJBbGxvY2F0ZSA4MTkyIGVsZW1lbnRzIG9mIGNvZGVfYmxvY2stPmRhdGFcbiIpOyovCisKKyAgICAgICAgICAgICAgICBsX3NlZ19zaXplID0gT1BKX0oyS19ERUZBVUxUX05CX1NFR1MgKiBzaXplb2Yob3BqX3RjZF9zZWdfdCk7CisgICAgICAgICAgICAgICAgcF9jb2RlX2Jsb2NrLT5zZWdzID0gKG9wal90Y2Rfc2VnX3QgKikgb3BqX21hbGxvYyhsX3NlZ19zaXplKTsKKyAgICAgICAgICAgICAgICBpZiAoISBwX2NvZGVfYmxvY2stPnNlZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1lbXNldChwX2NvZGVfYmxvY2stPnNlZ3MsMCxsX3NlZ19zaXplKTsKKyAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCAiQWxsb2NhdGUgJWQgZWxlbWVudHMgb2YgY29kZV9ibG9jay0+ZGF0YVxuIiwgT1BKX0oyS19ERUZBVUxUX05CX1NFR1MgKiBzaXplb2Yob3BqX3RjZF9zZWdfdCkpOyovCisKKyAgICAgICAgICAgICAgICBwX2NvZGVfYmxvY2stPm1fY3VycmVudF9tYXhfc2VncyA9IE9QSl9KMktfREVGQVVMVF9OQl9TRUdTOworICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsICJtX2N1cnJlbnRfbWF4X3NlZ3Mgb2YgY29kZV9ibG9jay0+ZGF0YSA9ICVkXG4iLCBwX2NvZGVfYmxvY2stPm1fY3VycmVudF9tYXhfc2Vncyk7Ki8KKyAgICAgICAgfQorICAgICAgICAvKiBUT0RPICovCisgICAgICAgIC8qcF9jb2RlX2Jsb2NrLT5udW1zZWdzID0gMDsgKi8KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9VSU5UMzIgb3BqX3RjZF9nZXRfZGVjb2RlZF90aWxlX3NpemUgKCBvcGpfdGNkX3QgKnBfdGNkICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfVUlOVDMyIGxfZGF0YV9zaXplID0gMDsKKyAgICAgICAgb3BqX2ltYWdlX2NvbXBfdCAqIGxfaW1nX2NvbXAgPSAwMDsKKyAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICogbF90aWxlX2NvbXAgPSAwMDsKKyAgICAgICAgb3BqX3RjZF9yZXNvbHV0aW9uX3QgKiBsX3JlcyA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGxfc2l6ZV9jb21wLCBsX3JlbWFpbmluZzsKKworICAgICAgICBsX3RpbGVfY29tcCA9IHBfdGNkLT50Y2RfaW1hZ2UtPnRpbGVzLT5jb21wczsKKyAgICAgICAgbF9pbWdfY29tcCA9IHBfdGNkLT5pbWFnZS0+Y29tcHM7CisKKyAgICAgICAgZm9yIChpPTA7aTxwX3RjZC0+aW1hZ2UtPm51bWNvbXBzOysraSkgeworICAgICAgICAgICAgICAgIGxfc2l6ZV9jb21wID0gbF9pbWdfY29tcC0+cHJlYyA+PiAzOyAvKigvIDgpKi8KKyAgICAgICAgICAgICAgICBsX3JlbWFpbmluZyA9IGxfaW1nX2NvbXAtPnByZWMgJiA3OyAgLyogKCU4KSAqLworCisgICAgICAgICAgICAgICAgaWYobF9yZW1haW5pbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9zaXplX2NvbXA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGxfc2l6ZV9jb21wID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfc2l6ZV9jb21wID0gNDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsX3JlcyA9IGxfdGlsZV9jb21wLT5yZXNvbHV0aW9ucyArIGxfdGlsZV9jb21wLT5taW5pbXVtX251bV9yZXNvbHV0aW9ucyAtIDE7CisgICAgICAgICAgICAgICAgbF9kYXRhX3NpemUgKz0gbF9zaXplX2NvbXAgKiAoT1BKX1VJTlQzMikoKGxfcmVzLT54MSAtIGxfcmVzLT54MCkgKiAobF9yZXMtPnkxIC0gbF9yZXMtPnkwKSk7CisgICAgICAgICAgICAgICAgKytsX2ltZ19jb21wOworICAgICAgICAgICAgICAgICsrbF90aWxlX2NvbXA7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbF9kYXRhX3NpemU7Cit9CisKK09QSl9CT09MIG9wal90Y2RfZW5jb2RlX3RpbGUoICAgb3BqX3RjZF90ICpwX3RjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICpwX2Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jb2Rlc3RyZWFtX2luZm9fdCAqcF9jc3RyX2luZm8pCit7CisKKyAgICAgICAgaWYgKHBfdGNkLT5jdXJfdHBfbnVtID09IDApIHsKKworICAgICAgICAgICAgICAgIHBfdGNkLT50Y2RfdGlsZW5vID0gcF90aWxlX25vOworICAgICAgICAgICAgICAgIHBfdGNkLT50Y3AgPSAmcF90Y2QtPmNwLT50Y3BzW3BfdGlsZV9ub107CisKKyAgICAgICAgICAgICAgICAvKiBJTkRFWCA+PiAiUHJlY2luY3RfbmJfWCBldCBQcmVjaW5jdF9uYl9ZIiAqLworICAgICAgICAgICAgICAgIGlmKHBfY3N0cl9pbmZvKSAgeworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBsX251bV9wYWNrcyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNkX3RpbGVjb21wX3QgKmxfdGlsZWNfaWR4ID0gJnBfdGNkLT50Y2RfaW1hZ2UtPnRpbGVzLT5jb21wc1swXTsgICAgICAgIC8qIGJhc2VkIG9uIGNvbXBvbmVudCAwICovCisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGNjcF90ICpsX3RjY3AgPSBwX3RjZC0+dGNwLT50Y2NwczsgLyogYmFzZWQgb24gY29tcG9uZW50IDAgKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxfdGlsZWNfaWR4LT5udW1yZXNvbHV0aW9uczsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfcmVzb2x1dGlvbl90ICpsX3Jlc19pZHggPSAmbF90aWxlY19pZHgtPnJlc29sdXRpb25zW2ldOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfY3N0cl9pbmZvLT50aWxlW3BfdGlsZV9ub10ucHdbaV0gPSAoaW50KWxfcmVzX2lkeC0+cHc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfY3N0cl9pbmZvLT50aWxlW3BfdGlsZV9ub10ucGhbaV0gPSAoaW50KWxfcmVzX2lkeC0+cGg7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9udW1fcGFja3MgKz0gbF9yZXNfaWR4LT5wdyAqIGxfcmVzX2lkeC0+cGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfY3N0cl9pbmZvLT50aWxlW3BfdGlsZV9ub10ucGR4W2ldID0gKGludClsX3RjY3AtPnByY3dbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfY3N0cl9pbmZvLT50aWxlW3BfdGlsZV9ub10ucGR5W2ldID0gKGludClsX3RjY3AtPnByY2hbaV07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwX2NzdHJfaW5mby0+dGlsZVtwX3RpbGVfbm9dLnBhY2tldCA9IChvcGpfcGFja2V0X2luZm9fdCopIG9wal9jYWxsb2MoKHNpemVfdClwX2NzdHJfaW5mby0+bnVtY29tcHMgKiAoc2l6ZV90KXBfY3N0cl9pbmZvLT5udW1sYXllcnMgKiBsX251bV9wYWNrcywgc2l6ZW9mKG9wal9wYWNrZXRfaW5mb190KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIDw8IElOREVYICovCisKKyAgICAgICAgICAgICAgICAvKiBGSVhNRSBfUHJvZlN0YXJ0KFBHUk9VUF9EQ19TSElGVCk7ICovCisgICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS1USUxFLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX3RjZF9kY19sZXZlbF9zaGlmdF9lbmNvZGUocF90Y2QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBGSVhNRSBfUHJvZlN0b3AoUEdST1VQX0RDX1NISUZUKTsgKi8KKworICAgICAgICAgICAgICAgIC8qIEZJWE1FIF9Qcm9mU3RhcnQoUEdST1VQX01DVCk7ICovCisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX3RjZF9tY3RfZW5jb2RlKHBfdGNkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogRklYTUUgX1Byb2ZTdG9wKFBHUk9VUF9NQ1QpOyAqLworCisgICAgICAgICAgICAgICAgLyogRklYTUUgX1Byb2ZTdGFydChQR1JPVVBfRFdUKTsgKi8KKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfdGNkX2R3dF9lbmNvZGUocF90Y2QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBGSVhNRSAgX1Byb2ZTdG9wKFBHUk9VUF9EV1QpOyAqLworCisgICAgICAgICAgICAgICAgLyogRklYTUUgIF9Qcm9mU3RhcnQoUEdST1VQX1QxKTsgKi8KKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfdGNkX3QxX2VuY29kZShwX3RjZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIEZJWE1FIF9Qcm9mU3RvcChQR1JPVVBfVDEpOyAqLworCisgICAgICAgICAgICAgICAgLyogRklYTUUgX1Byb2ZTdGFydChQR1JPVVBfUkFURSk7ICovCisgICAgICAgICAgICAgICAgaWYgKCEgb3BqX3RjZF9yYXRlX2FsbG9jYXRlX2VuY29kZShwX3RjZCxwX2Rlc3QscF9tYXhfbGVuZ3RoLHBfY3N0cl9pbmZvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogRklYTUUgX1Byb2ZTdG9wKFBHUk9VUF9SQVRFKTsgKi8KKworICAgICAgICB9CisgICAgICAgIC8qLS0tLS0tLS0tLS0tLS1USUVSMi0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyAgICAgICAgLyogSU5ERVggKi8KKyAgICAgICAgaWYgKHBfY3N0cl9pbmZvKSB7CisgICAgICAgICAgICAgICAgcF9jc3RyX2luZm8tPmluZGV4X3dyaXRlID0gMTsKKyAgICAgICAgfQorICAgICAgICAvKiBGSVhNRSBfUHJvZlN0YXJ0KFBHUk9VUF9UMik7ICovCisKKyAgICAgICAgaWYgKCEgb3BqX3RjZF90Ml9lbmNvZGUocF90Y2QscF9kZXN0LHBfZGF0YV93cml0dGVuLHBfbWF4X2xlbmd0aCxwX2NzdHJfaW5mbykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIC8qIEZJWE1FIF9Qcm9mU3RvcChQR1JPVVBfVDIpOyAqLworCisgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tQ0xFQU4tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal90Y2RfZGVjb2RlX3RpbGUoICAgb3BqX3RjZF90ICpwX3RjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKnBfc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX3RpbGVfbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jb2Rlc3RyZWFtX2luZGV4X3QgKnBfY3N0cl9pbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgICAgIE9QSl9VSU5UMzIgbF9kYXRhX3JlYWQ7CisgICAgICAgIHBfdGNkLT50Y2RfdGlsZW5vID0gcF90aWxlX25vOworICAgICAgICBwX3RjZC0+dGNwID0gJihwX3RjZC0+Y3AtPnRjcHNbcF90aWxlX25vXSk7CisKKyNpZmRlZiBUT0RPX01TRCAvKiBGSVhNRSAqLworICAgICAgICAvKiBJTkRFWCA+PiAgKi8KKyAgICAgICAgaWYocF9jc3RyX2luZm8pIHsKKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHJlc25vLCBjb21wbm8sIG51bXByZWMgPSAwOworICAgICAgICAgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgKE9QSl9VSU5UMzIpIHBfY3N0cl9pbmZvLT5udW1jb21wczsgY29tcG5vKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y3BfdCAqdGNwID0gJnBfdGNkLT5jcC0+dGNwc1swXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2NwX3QgKnRjY3AgPSAmdGNwLT50Y2Nwc1tjb21wbm9dOworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICp0aWxlY19pZHggPSAmcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPmNvbXBzW2NvbXBub107CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHJlc25vID0gMDsgcmVzbm8gPCB0aWxlY19pZHgtPm51bXJlc29sdXRpb25zOyByZXNubysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Y2RfcmVzb2x1dGlvbl90ICpyZXNfaWR4ID0gJnRpbGVjX2lkeC0+cmVzb2x1dGlvbnNbcmVzbm9dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2NzdHJfaW5mby0+dGlsZVtwX3RpbGVfbm9dLnB3W3Jlc25vXSA9IHJlc19pZHgtPnB3OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2NzdHJfaW5mby0+dGlsZVtwX3RpbGVfbm9dLnBoW3Jlc25vXSA9IHJlc19pZHgtPnBoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1wcmVjICs9IHJlc19pZHgtPnB3ICogcmVzX2lkeC0+cGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfY3N0cl9pbmZvLT50aWxlW3BfdGlsZV9ub10ucGR4W3Jlc25vXSA9IHRjY3AtPnByY3dbcmVzbm9dOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2NzdHJfaW5mby0+dGlsZVtwX3RpbGVfbm9dLnBkeVtyZXNub10gPSB0Y2NwLT5wcmNoW3Jlc25vXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcF9jc3RyX2luZm8tPnRpbGVbcF90aWxlX25vXS5wYWNrZXQgPSAob3BqX3BhY2tldF9pbmZvX3QgKikgb3BqX21hbGxvYyhwX2NzdHJfaW5mby0+bnVtbGF5ZXJzICogbnVtcHJlYyAqIHNpemVvZihvcGpfcGFja2V0X2luZm9fdCkpOworICAgICAgICAgICAgICAgIHBfY3N0cl9pbmZvLT5wYWNrbm8gPSAwOworICAgICAgICB9CisgICAgICAgIC8qIDw8IElOREVYICovCisjZW5kaWYKKworICAgICAgICAvKi0tLS0tLS0tLS0tLS0tVElFUjItLS0tLS0tLS0tLS0tLS0tLS0qLworICAgICAgICAvKiBGSVhNRSBfUHJvZlN0YXJ0KFBHUk9VUF9UMik7ICovCisgICAgICAgIGxfZGF0YV9yZWFkID0gMDsKKyAgICAgICAgaWYgKCEgb3BqX3RjZF90Ml9kZWNvZGUocF90Y2QsIHBfc3JjLCAmbF9kYXRhX3JlYWQsIHBfbWF4X2xlbmd0aCwgcF9jc3RyX2luZGV4KSkKKyAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgLyogRklYTUUgX1Byb2ZTdG9wKFBHUk9VUF9UMik7ICovCisKKyAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS1USUVSMS0tLS0tLS0tLS0tLS0tLS0tKi8KKworICAgICAgICAvKiBGSVhNRSBfUHJvZlN0YXJ0KFBHUk9VUF9UMSk7ICovCisgICAgICAgIGlmCisgICAgICAgICAgICAgICAgKCEgb3BqX3RjZF90MV9kZWNvZGUocF90Y2QpKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICAvKiBGSVhNRSBfUHJvZlN0b3AoUEdST1VQX1QxKTsgKi8KKworICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS1EV1QtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisgICAgICAgIC8qIEZJWE1FIF9Qcm9mU3RhcnQoUEdST1VQX0RXVCk7ICovCisgICAgICAgIGlmCisgICAgICAgICAgICAgICAgKCEgb3BqX3RjZF9kd3RfZGVjb2RlKHBfdGNkKSkKKyAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgLyogRklYTUUgX1Byb2ZTdG9wKFBHUk9VUF9EV1QpOyAqLworCisgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLU1DVC0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAgICAgICAvKiBGSVhNRSBfUHJvZlN0YXJ0KFBHUk9VUF9NQ1QpOyAqLworICAgICAgICBpZgorICAgICAgICAgICAgICAgICghIG9wal90Y2RfbWN0X2RlY29kZShwX3RjZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIC8qIEZJWE1FIF9Qcm9mU3RvcChQR1JPVVBfTUNUKTsgKi8KKworICAgICAgICAvKiBGSVhNRSBfUHJvZlN0YXJ0KFBHUk9VUF9EQ19TSElGVCk7ICovCisgICAgICAgIGlmCisgICAgICAgICAgICAgICAgKCEgb3BqX3RjZF9kY19sZXZlbF9zaGlmdF9kZWNvZGUocF90Y2QpKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICAvKiBGSVhNRSBfUHJvZlN0b3AoUEdST1VQX0RDX1NISUZUKTsgKi8KKworCisgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tVElMRS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKK09QSl9CT09MIG9wal90Y2RfdXBkYXRlX3RpbGVfZGF0YSAoIG9wal90Y2RfdCAqcF90Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9kZXN0X2xlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgICAgICBPUEpfVUlOVDMyIGksaixrLGxfZGF0YV9zaXplID0gMDsKKyAgICAgICAgb3BqX2ltYWdlX2NvbXBfdCAqIGxfaW1nX2NvbXAgPSAwMDsKKyAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICogbF90aWxlYyA9IDAwOworICAgICAgICBvcGpfdGNkX3Jlc29sdXRpb25fdCAqIGxfcmVzOworICAgICAgICBPUEpfVUlOVDMyIGxfc2l6ZV9jb21wLCBsX3JlbWFpbmluZzsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3N0cmlkZSwgbF93aWR0aCxsX2hlaWdodDsKKworICAgICAgICBsX2RhdGFfc2l6ZSA9IG9wal90Y2RfZ2V0X2RlY29kZWRfdGlsZV9zaXplKHBfdGNkKTsKKyAgICAgICAgaWYgKGxfZGF0YV9zaXplID4gcF9kZXN0X2xlbmd0aCkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBsX3RpbGVjID0gcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPmNvbXBzOworICAgICAgICBsX2ltZ19jb21wID0gcF90Y2QtPmltYWdlLT5jb21wczsKKworICAgICAgICBmb3IgKGk9MDtpPHBfdGNkLT5pbWFnZS0+bnVtY29tcHM7KytpKSB7CisgICAgICAgICAgICAgICAgbF9zaXplX2NvbXAgPSBsX2ltZ19jb21wLT5wcmVjID4+IDM7IC8qKC8gOCkqLworICAgICAgICAgICAgICAgIGxfcmVtYWluaW5nID0gbF9pbWdfY29tcC0+cHJlYyAmIDc7ICAvKiAoJTgpICovCisgICAgICAgICAgICAgICAgbF9yZXMgPSBsX3RpbGVjLT5yZXNvbHV0aW9ucyArIGxfaW1nX2NvbXAtPnJlc25vX2RlY29kZWQ7CisgICAgICAgICAgICAgICAgbF93aWR0aCA9IChPUEpfVUlOVDMyKShsX3Jlcy0+eDEgLSBsX3Jlcy0+eDApOworICAgICAgICAgICAgICAgIGxfaGVpZ2h0ID0gKE9QSl9VSU5UMzIpKGxfcmVzLT55MSAtIGxfcmVzLT55MCk7CisgICAgICAgICAgICAgICAgbF9zdHJpZGUgPSAoT1BKX1VJTlQzMikobF90aWxlYy0+eDEgLSBsX3RpbGVjLT54MCkgLSBsX3dpZHRoOworCisgICAgICAgICAgICAgICAgaWYgKGxfcmVtYWluaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK2xfc2l6ZV9jb21wOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChsX3NpemVfY29tcCA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3NpemVfY29tcCA9IDQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc3dpdGNoIChsX3NpemVfY29tcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9DSEFSICogbF9kZXN0X3B0ciA9IChPUEpfQ0hBUiAqKSBwX2Rlc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgT1BKX0lOVDMyICogbF9zcmNfcHRyID0gbF90aWxlYy0+ZGF0YTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2ltZ19jb21wLT5zZ25kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDtqPGxfaGVpZ2h0OysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGs9MDtrPGxfd2lkdGg7KytrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihsX2Rlc3RfcHRyKyspID0gKE9QSl9DSEFSKSAoKihsX3NyY19wdHIrKykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc3JjX3B0ciArPSBsX3N0cmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDtqPGxfaGVpZ2h0OysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgICAgIChrPTA7azxsX3dpZHRoOysraykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9IChPUEpfQ0hBUikgKCgqKGxfc3JjX3B0cisrKSkmMHhmZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfc3RyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfZGVzdCA9IChPUEpfQllURSAqKWxfZGVzdF9wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPUEpfSU5UMzIgKiBsX3NyY19wdHIgPSBsX3RpbGVjLT5kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQxNiAqIGxfZGVzdF9wdHIgPSAoT1BKX0lOVDE2ICopIHBfZGVzdDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2ltZ19jb21wLT5zZ25kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDtqPGxfaGVpZ2h0OysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGs9MDtrPGxfd2lkdGg7KytrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihsX2Rlc3RfcHRyKyspID0gKE9QSl9JTlQxNikgKCoobF9zcmNfcHRyKyspKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NyY19wdHIgKz0gbF9zdHJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7ajxsX2hlaWdodDsrK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrPTA7azxsX3dpZHRoOysraykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9IChPUEpfSU5UMTYpICgoKihsX3NyY19wdHIrKykpJjB4ZmZmZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zcmNfcHRyICs9IGxfc3RyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfZGVzdCA9IChPUEpfQllURSopIGxfZGVzdF9wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBsX2Rlc3RfcHRyID0gKE9QSl9JTlQzMiAqKSBwX2Rlc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogbF9zcmNfcHRyID0gbF90aWxlYy0+ZGF0YTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8bF9oZWlnaHQ7KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGs9MDtrPGxfd2lkdGg7KytrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9ICgqKGxfc3JjX3B0cisrKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3NyY19wdHIgKz0gbF9zdHJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9kZXN0ID0gKE9QSl9CWVRFKikgbF9kZXN0X3B0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK2xfaW1nX2NvbXA7CisgICAgICAgICAgICAgICAgKytsX3RpbGVjOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisKKworCit2b2lkIG9wal90Y2RfZnJlZV90aWxlKG9wal90Y2RfdCAqcF90Y2QpCit7CisgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vLCByZXNubywgYmFuZG5vLCBwcmVjbm87CisgICAgICAgIG9wal90Y2RfdGlsZV90ICpsX3RpbGUgPSAwMDsKKyAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICpsX3RpbGVfY29tcCA9IDAwOworICAgICAgICBvcGpfdGNkX3Jlc29sdXRpb25fdCAqbF9yZXMgPSAwMDsKKyAgICAgICAgb3BqX3RjZF9iYW5kX3QgKmxfYmFuZCA9IDAwOworICAgICAgICBvcGpfdGNkX3ByZWNpbmN0X3QgKmxfcHJlY2luY3QgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3Jlc29sdXRpb25zLCBsX25iX3ByZWNpbmN0czsKKyAgICAgICAgdm9pZCAoKiBsX3RjZF9jb2RlX2Jsb2NrX2RlYWxsb2NhdGUpIChvcGpfdGNkX3ByZWNpbmN0X3QgKikgPSAwMDsKKworICAgICAgICBpZiAoISBwX3RjZCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghIHBfdGNkLT50Y2RfaW1hZ2UpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocF90Y2QtPm1faXNfZGVjb2RlcikgeworICAgICAgICAgICAgICAgIGxfdGNkX2NvZGVfYmxvY2tfZGVhbGxvY2F0ZSA9IG9wal90Y2RfY29kZV9ibG9ja19kZWNfZGVhbGxvY2F0ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsX3RjZF9jb2RlX2Jsb2NrX2RlYWxsb2NhdGUgPSBvcGpfdGNkX2NvZGVfYmxvY2tfZW5jX2RlYWxsb2NhdGU7CisgICAgICAgIH0KKworICAgICAgICBsX3RpbGUgPSBwX3RjZC0+dGNkX2ltYWdlLT50aWxlczsKKyAgICAgICAgaWYgKCEgbF90aWxlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbF90aWxlX2NvbXAgPSBsX3RpbGUtPmNvbXBzOworCisgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgbF90aWxlLT5udW1jb21wczsgKytjb21wbm8pIHsKKyAgICAgICAgICAgICAgICBsX3JlcyA9IGxfdGlsZV9jb21wLT5yZXNvbHV0aW9uczsKKyAgICAgICAgICAgICAgICBpZiAobF9yZXMpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgbF9uYl9yZXNvbHV0aW9ucyA9IGxfdGlsZV9jb21wLT5yZXNvbHV0aW9uc19zaXplIC8gc2l6ZW9mKG9wal90Y2RfcmVzb2x1dGlvbl90KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocmVzbm8gPSAwOyByZXNubyA8IGxfbmJfcmVzb2x1dGlvbnM7ICsrcmVzbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9iYW5kID0gbF9yZXMtPmJhbmRzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgICAgIChiYW5kbm8gPSAwOyBiYW5kbm8gPCAzOyArK2JhbmRubykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfcHJlY2luY3QgPSBsX2JhbmQtPnByZWNpbmN0czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9wcmVjaW5jdCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX25iX3ByZWNpbmN0cyA9IGxfYmFuZC0+cHJlY2luY3RzX2RhdGFfc2l6ZSAvIHNpemVvZihvcGpfdGNkX3ByZWNpbmN0X3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwcmVjbm8gPSAwOyBwcmVjbm8gPCBsX25iX3ByZWNpbmN0czsgKytwcmVjbm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RndF9kZXN0cm95KGxfcHJlY2luY3QtPmluY2x0cmVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9wcmVjaW5jdC0+aW5jbHRyZWUgPSAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RndF9kZXN0cm95KGxfcHJlY2luY3QtPmltc2J0cmVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9wcmVjaW5jdC0+aW1zYnRyZWUgPSAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpsX3RjZF9jb2RlX2Jsb2NrX2RlYWxsb2NhdGUpIChsX3ByZWNpbmN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX3ByZWNpbmN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2JhbmQtPnByZWNpbmN0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2JhbmQtPnByZWNpbmN0cyA9IDAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfYmFuZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAvKiBmb3IgKHJlc25vICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9yZXM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfdGlsZV9jb21wLT5yZXNvbHV0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3RpbGVfY29tcC0+cmVzb2x1dGlvbnMgPSAwMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobF90aWxlX2NvbXAtPmRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal9mcmVlKGxfdGlsZV9jb21wLT5kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfdGlsZV9jb21wLT5kYXRhID0gMDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrbF90aWxlX2NvbXA7CisgICAgICAgIH0KKworICAgICAgICBvcGpfZnJlZShsX3RpbGUtPmNvbXBzKTsKKyAgICAgICAgbF90aWxlLT5jb21wcyA9IDAwOworICAgICAgICBvcGpfZnJlZShwX3RjZC0+dGNkX2ltYWdlLT50aWxlcyk7CisgICAgICAgIHBfdGNkLT50Y2RfaW1hZ2UtPnRpbGVzID0gMDA7Cit9CisKKworT1BKX0JPT0wgb3BqX3RjZF90Ml9kZWNvZGUgKG9wal90Y2RfdCAqcF90Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX3NyY19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHBfbWF4X3NyY19zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9jb2Rlc3RyZWFtX2luZGV4X3QgKnBfY3N0cl9pbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICAgICAgb3BqX3QyX3QgKiBsX3QyOworCisgICAgICAgIGxfdDIgPSBvcGpfdDJfY3JlYXRlKHBfdGNkLT5pbWFnZSwgcF90Y2QtPmNwKTsKKyAgICAgICAgaWYgKGxfdDIgPT0gMDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEgb3BqX3QyX2RlY29kZV9wYWNrZXRzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y2QtPnRjZF90aWxlbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9zcmNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2RhdGFfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX21heF9zcmNfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2NzdHJfaW5kZXgpKSB7CisgICAgICAgICAgICAgICAgb3BqX3QyX2Rlc3Ryb3kobF90Mik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIG9wal90Ml9kZXN0cm95KGxfdDIpOworCisgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tQ0xFQU4tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCitPUEpfQk9PTCBvcGpfdGNkX3QxX2RlY29kZSAoIG9wal90Y2RfdCAqcF90Y2QgKQoreworICAgICAgICBPUEpfVUlOVDMyIGNvbXBubzsKKyAgICAgICAgb3BqX3QxX3QgKiBsX3QxOworICAgICAgICBvcGpfdGNkX3RpbGVfdCAqIGxfdGlsZSA9IHBfdGNkLT50Y2RfaW1hZ2UtPnRpbGVzOworICAgICAgICBvcGpfdGNkX3RpbGVjb21wX3QqIGxfdGlsZV9jb21wID0gbF90aWxlLT5jb21wczsKKyAgICAgICAgb3BqX3RjY3BfdCAqIGxfdGNjcCA9IHBfdGNkLT50Y3AtPnRjY3BzOworCisKKyAgICAgICAgbF90MSA9IG9wal90MV9jcmVhdGUoKTsKKyAgICAgICAgaWYgKGxfdDEgPT0gMDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCBsX3RpbGUtPm51bWNvbXBzOyArK2NvbXBubykgeworICAgICAgICAgICAgICAgIC8qIFRoZSArMyBpcyBoZWFkcm9vbSByZXF1aXJlZCBieSB0aGUgdmVjdG9yaXplZCBEV1QgKi8KKyAgICAgICAgICAgICAgICBpZiAoT1BKX0ZBTFNFID09IG9wal90MV9kZWNvZGVfY2Jsa3MobF90MSwgbF90aWxlX2NvbXAsIGxfdGNjcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wal90MV9kZXN0cm95KGxfdDEpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKytsX3RpbGVfY29tcDsKKyAgICAgICAgICAgICAgICArK2xfdGNjcDsKKyAgICAgICAgfQorCisgICAgICAgIG9wal90MV9kZXN0cm95KGxfdDEpOworCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworCitPUEpfQk9PTCBvcGpfdGNkX2R3dF9kZWNvZGUgKCBvcGpfdGNkX3QgKnBfdGNkICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBjb21wbm87CisgICAgICAgIG9wal90Y2RfdGlsZV90ICogbF90aWxlID0gcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXM7CisgICAgICAgIG9wal90Y2RfdGlsZWNvbXBfdCAqIGxfdGlsZV9jb21wID0gbF90aWxlLT5jb21wczsKKyAgICAgICAgb3BqX3RjY3BfdCAqIGxfdGNjcCA9IHBfdGNkLT50Y3AtPnRjY3BzOworICAgICAgICBvcGpfaW1hZ2VfY29tcF90ICogbF9pbWdfY29tcCA9IHBfdGNkLT5pbWFnZS0+Y29tcHM7CisKKyAgICAgICAgZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCBsX3RpbGUtPm51bWNvbXBzOyBjb21wbm8rKykgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgaWYgKHRjZC0+Y3AtPnJlZHVjZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2QtPmltYWdlLT5jb21wc1tjb21wbm9dLnJlc25vX2RlY29kZWQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlLT5jb21wc1tjb21wbm9dLm51bXJlc29sdXRpb25zIC0gdGNkLT5jcC0+cmVkdWNlIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Y2QtPmltYWdlLT5jb21wc1tjb21wbm9dLnJlc25vX2RlY29kZWQgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG51bXJlczJkZWNvZGUgPSB0Y2QtPmltYWdlLT5jb21wc1tjb21wbm9dLnJlc25vX2RlY29kZWQgKyAxOworICAgICAgICAgICAgICAgIGlmKG51bXJlczJkZWNvZGUgPiAwKXsKKyAgICAgICAgICAgICAgICAqLworCisgICAgICAgICAgICAgICAgaWYgKGxfdGNjcC0+cW1mYmlkID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG9wal9kd3RfZGVjb2RlKGxfdGlsZV9jb21wLCBsX2ltZ19jb21wLT5yZXNub19kZWNvZGVkKzEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgb3BqX2R3dF9kZWNvZGVfcmVhbChsX3RpbGVfY29tcCwgbF9pbWdfY29tcC0+cmVzbm9fZGVjb2RlZCsxKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICsrbF90aWxlX2NvbXA7CisgICAgICAgICAgICAgICAgKytsX2ltZ19jb21wOworICAgICAgICAgICAgICAgICsrbF90Y2NwOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorT1BKX0JPT0wgb3BqX3RjZF9tY3RfZGVjb2RlICggb3BqX3RjZF90ICpwX3RjZCApCit7CisgICAgICAgIG9wal90Y2RfdGlsZV90ICogbF90aWxlID0gcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXM7CisgICAgICAgIG9wal90Y3BfdCAqIGxfdGNwID0gcF90Y2QtPnRjcDsKKyAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICogbF90aWxlX2NvbXAgPSBsX3RpbGUtPmNvbXBzOworICAgICAgICBPUEpfVUlOVDMyIGxfc2FtcGxlcyxpOworCisgICAgICAgIGlmICghIGxfdGNwLT5tY3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX1RSVUU7CisgICAgICAgIH0KKworICAgICAgICBsX3NhbXBsZXMgPSAoT1BKX1VJTlQzMikoKGxfdGlsZV9jb21wLT54MSAtIGxfdGlsZV9jb21wLT54MCkgKiAobF90aWxlX2NvbXAtPnkxIC0gbF90aWxlX2NvbXAtPnkwKSk7CisKKyAgICAgICAgaWYgKGxfdGlsZS0+bnVtY29tcHMgPj0gMyApeworICAgICAgICAgICAgICAgIC8qIHRlc3RjYXNlIDEzMzYucGRmLmFzYW4uNDcuMzc2ICovCisgICAgICAgICAgICAgICAgaWYgKChsX3RpbGUtPmNvbXBzWzBdLngxIC0gbF90aWxlLT5jb21wc1swXS54MCkgKiAobF90aWxlLT5jb21wc1swXS55MSAtIGxfdGlsZS0+Y29tcHNbMF0ueTApIDwgKE9QSl9JTlQzMilsX3NhbXBsZXMgfHwKKyAgICAgICAgICAgICAgICAgICAgKGxfdGlsZS0+Y29tcHNbMV0ueDEgLSBsX3RpbGUtPmNvbXBzWzFdLngwKSAqIChsX3RpbGUtPmNvbXBzWzFdLnkxIC0gbF90aWxlLT5jb21wc1sxXS55MCkgPCAoT1BKX0lOVDMyKWxfc2FtcGxlcyB8fAorICAgICAgICAgICAgICAgICAgICAobF90aWxlLT5jb21wc1syXS54MSAtIGxfdGlsZS0+Y29tcHNbMl0ueDApICogKGxfdGlsZS0+Y29tcHNbMl0ueTEgLSBsX3RpbGUtPmNvbXBzWzJdLnkwKSA8IChPUEpfSU5UMzIpbF9zYW1wbGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlRpbGVzIGRvbid0IGFsbCBoYXZlIHRoZSBzYW1lIGRpbWVuc2lvbi4gU2tpcCB0aGUgTUNUIHN0ZXAuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxfdGNwLT5tY3QgPT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiogbF9kYXRhOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBsX3RjcC0+bV9tY3RfZGVjb2RpbmdfbWF0cml4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgbF9kYXRhID0gKE9QSl9CWVRFICoqKSBvcGpfbWFsbG9jKGxfdGlsZS0+bnVtY29tcHMqc2l6ZW9mKE9QSl9CWVRFKikpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbF9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bF90aWxlLT5udW1jb21wczsrK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9kYXRhW2ldID0gKE9QSl9CWVRFKikgbF90aWxlX2NvbXAtPmRhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF90aWxlX2NvbXA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG9wal9tY3RfZGVjb2RlX2N1c3RvbSgvKiBNQ1QgZGF0YSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9QSl9CWVRFKikgbF90Y3AtPm1fbWN0X2RlY29kaW5nX21hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgY29tcG9uZW50cyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9zYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29tcG9uZW50cyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmIgb2YgY29tcG9uZW50cyAoaS5lLiBzaXplIG9mIHBEYXRhKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF90aWxlLT5udW1jb21wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRlbGxzIGlmIHRoZSBkYXRhIGlzIHNpZ25lZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y2QtPmltYWdlLT5jb21wcy0+c2duZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9kYXRhKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF90Y3AtPnRjY3BzLT5xbWZiaWQgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfbWN0X2RlY29kZSggICAgIGxfdGlsZS0+Y29tcHNbMF0uZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF90aWxlLT5jb21wc1sxXS5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3RpbGUtPmNvbXBzWzJdLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc2FtcGxlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfbWN0X2RlY29kZV9yZWFsKChPUEpfRkxPQVQzMiopbF90aWxlLT5jb21wc1swXS5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9QSl9GTE9BVDMyKilsX3RpbGUtPmNvbXBzWzFdLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT1BKX0ZMT0FUMzIqKWxfdGlsZS0+Y29tcHNbMl0uZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfc2FtcGxlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIEZJWE1FIG5lZWQgdG8gdXNlIG9wal9ldmVudF9tc2cgZnVuY3Rpb24gKi8KKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiTnVtYmVyIG9mIGNvbXBvbmVudHMgKCVkKSBpcyBpbmNvbnNpc3RlbnQgd2l0aCBhIE1DVC4gU2tpcCB0aGUgTUNUIHN0ZXAuXG4iLGxfdGlsZS0+bnVtY29tcHMpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisKK09QSl9CT09MIG9wal90Y2RfZGNfbGV2ZWxfc2hpZnRfZGVjb2RlICggb3BqX3RjZF90ICpwX3RjZCApCit7CisgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vOworICAgICAgICBvcGpfdGNkX3RpbGVjb21wX3QgKiBsX3RpbGVfY29tcCA9IDAwOworICAgICAgICBvcGpfdGNjcF90ICogbF90Y2NwID0gMDA7CisgICAgICAgIG9wal9pbWFnZV9jb21wX3QgKiBsX2ltZ19jb21wID0gMDA7CisgICAgICAgIG9wal90Y2RfcmVzb2x1dGlvbl90KiBsX3JlcyA9IDAwOworICAgICAgICBvcGpfdGNkX3RpbGVfdCAqIGxfdGlsZTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3dpZHRoLGxfaGVpZ2h0LGksajsKKyAgICAgICAgT1BKX0lOVDMyICogbF9jdXJyZW50X3B0cjsKKyAgICAgICAgT1BKX0lOVDMyIGxfbWluLCBsX21heDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX3N0cmlkZTsKKworICAgICAgICBsX3RpbGUgPSBwX3RjZC0+dGNkX2ltYWdlLT50aWxlczsKKyAgICAgICAgbF90aWxlX2NvbXAgPSBsX3RpbGUtPmNvbXBzOworICAgICAgICBsX3RjY3AgPSBwX3RjZC0+dGNwLT50Y2NwczsKKyAgICAgICAgbF9pbWdfY29tcCA9IHBfdGNkLT5pbWFnZS0+Y29tcHM7CisKKyAgICAgICAgZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCBsX3RpbGUtPm51bWNvbXBzOyBjb21wbm8rKykgeworICAgICAgICAgICAgICAgIGxfcmVzID0gbF90aWxlX2NvbXAtPnJlc29sdXRpb25zICsgbF9pbWdfY29tcC0+cmVzbm9fZGVjb2RlZDsKKyAgICAgICAgICAgICAgICBsX3dpZHRoID0gKE9QSl9VSU5UMzIpKGxfcmVzLT54MSAtIGxfcmVzLT54MCk7CisgICAgICAgICAgICAgICAgbF9oZWlnaHQgPSAoT1BKX1VJTlQzMikobF9yZXMtPnkxIC0gbF9yZXMtPnkwKTsKKyAgICAgICAgICAgICAgICBsX3N0cmlkZSA9IChPUEpfVUlOVDMyKShsX3RpbGVfY29tcC0+eDEgLSBsX3RpbGVfY29tcC0+eDApIC0gbF93aWR0aDsKKworICAgICAgICAgICAgICAgIGFzc2VydChsX2hlaWdodCA9PSAwIHx8IGxfd2lkdGggKyBsX3N0cmlkZSA8PSBsX3RpbGVfY29tcC0+ZGF0YV9zaXplIC8gbF9oZWlnaHQpOyAvKk1VUERGKi8KKworICAgICAgICAgICAgICAgIGlmIChsX2ltZ19jb21wLT5zZ25kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX21pbiA9IC0oMSA8PCAobF9pbWdfY29tcC0+cHJlYyAtIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWF4ID0gKDEgPDwgKGxfaW1nX2NvbXAtPnByZWMgLSAxKSkgLSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxfbWluID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbWF4ID0gKDEgPDwgbF9pbWdfY29tcC0+cHJlYykgLSAxOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxfY3VycmVudF9wdHIgPSBsX3RpbGVfY29tcC0+ZGF0YTsKKworICAgICAgICAgICAgICAgIGlmIChsX3RjY3AtPnFtZmJpZCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDtqPGxfaGVpZ2h0OysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbF93aWR0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxfY3VycmVudF9wdHIgPSBvcGpfaW50X2NsYW1wKCpsX2N1cnJlbnRfcHRyICsgbF90Y2NwLT5tX2RjX2xldmVsX3NoaWZ0LCBsX21pbiwgbF9tYXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jdXJyZW50X3B0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2N1cnJlbnRfcHRyICs9IGxfc3RyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8bF9oZWlnaHQ7KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsX3dpZHRoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfRkxPQVQzMiBsX3ZhbHVlID0gKigoT1BKX0ZMT0FUMzIgKikgbF9jdXJyZW50X3B0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxfY3VycmVudF9wdHIgPSBvcGpfaW50X2NsYW1wKChPUEpfSU5UMzIpbHJpbnRmKGxfdmFsdWUpICsgbF90Y2NwLT5tX2RjX2xldmVsX3NoaWZ0LCBsX21pbiwgbF9tYXgpOyA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX2N1cnJlbnRfcHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY3VycmVudF9wdHIgKz0gbF9zdHJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKytsX2ltZ19jb21wOworICAgICAgICAgICAgICAgICsrbF90Y2NwOworICAgICAgICAgICAgICAgICsrbF90aWxlX2NvbXA7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKworCisvKioKKyAqIERlYWxsb2NhdGVzIHRoZSBlbmNvZGluZyBkYXRhIG9mIHRoZSBnaXZlbiBwcmVjaW5jdC4KKyAqLwordm9pZCBvcGpfdGNkX2NvZGVfYmxvY2tfZGVjX2RlYWxsb2NhdGUgKG9wal90Y2RfcHJlY2luY3RfdCAqIHBfcHJlY2luY3QpCit7CisgICAgICAgIE9QSl9VSU5UMzIgY2Jsa25vICwgbF9uYl9jb2RlX2Jsb2NrczsKKworICAgICAgICBvcGpfdGNkX2NibGtfZGVjX3QgKiBsX2NvZGVfYmxvY2sgPSBwX3ByZWNpbmN0LT5jYmxrcy5kZWM7CisgICAgICAgIGlmIChsX2NvZGVfYmxvY2spIHsKKyAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCJkZWFsbG9jYXRlIGNvZGVibG9jazp7XG4iKTsqLworICAgICAgICAgICAgICAgIC8qZnByaW50ZihzdGRlcnIsIlx0IHgwPSVkLCB5MD0lZCwgeDE9JWQsIHkxPSVkXG4iLGxfY29kZV9ibG9jay0+eDAsIGxfY29kZV9ibG9jay0+eTAsIGxfY29kZV9ibG9jay0+eDEsIGxfY29kZV9ibG9jay0+eTEpOyovCisgICAgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwiXHQgbnVtYnBzPSVkLCBudW1sZW5iaXRzPSVkLCBsZW49JWQsIG51bW5ld3Bhc3Nlcz0lZCwgcmVhbF9udW1fc2Vncz0lZCwgbV9jdXJyZW50X21heF9zZWdzPSVkXG4gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jb2RlX2Jsb2NrLT5udW1icHMsIGxfY29kZV9ibG9jay0+bnVtbGVuYml0cywgbF9jb2RlX2Jsb2NrLT5sZW4sIGxfY29kZV9ibG9jay0+bnVtbmV3cGFzc2VzLCBsX2NvZGVfYmxvY2stPnJlYWxfbnVtX3NlZ3MsIGxfY29kZV9ibG9jay0+bV9jdXJyZW50X21heF9zZWdzICk7Ki8KKworCisgICAgICAgICAgICAgICAgbF9uYl9jb2RlX2Jsb2NrcyA9IHBfcHJlY2luY3QtPmJsb2NrX3NpemUgLyBzaXplb2Yob3BqX3RjZF9jYmxrX2RlY190KTsKKyAgICAgICAgICAgICAgICAvKmZwcmludGYoc3RkZXJyLCJuYl9jb2RlX2Jsb2NrcyA9JWRcdH1cbiIsIGxfbmJfY29kZV9ibG9ja3MpOyovCisKKyAgICAgICAgICAgICAgICBmb3IgKGNibGtubyA9IDA7IGNibGtubyA8IGxfbmJfY29kZV9ibG9ja3M7ICsrY2Jsa25vKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2NvZGVfYmxvY2stPmRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jb2RlX2Jsb2NrLT5kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jb2RlX2Jsb2NrLT5kYXRhID0gMDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2NvZGVfYmxvY2stPnNlZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jb2RlX2Jsb2NrLT5zZWdzICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfY29kZV9ibG9jay0+c2VncyA9IDAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICArK2xfY29kZV9ibG9jazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShwX3ByZWNpbmN0LT5jYmxrcy5kZWMpOworICAgICAgICAgICAgICAgIHBfcHJlY2luY3QtPmNibGtzLmRlYyA9IDAwOworICAgICAgICB9Cit9CisKKy8qKgorICogRGVhbGxvY2F0ZXMgdGhlIGVuY29kaW5nIGRhdGEgb2YgdGhlIGdpdmVuIHByZWNpbmN0LgorICovCit2b2lkIG9wal90Y2RfY29kZV9ibG9ja19lbmNfZGVhbGxvY2F0ZSAob3BqX3RjZF9wcmVjaW5jdF90ICogcF9wcmVjaW5jdCkKK3sgICAgICAgCisgICAgICAgIE9QSl9VSU5UMzIgY2Jsa25vICwgbF9uYl9jb2RlX2Jsb2NrczsKKworICAgICAgICBvcGpfdGNkX2NibGtfZW5jX3QgKiBsX2NvZGVfYmxvY2sgPSBwX3ByZWNpbmN0LT5jYmxrcy5lbmM7CisgICAgICAgIGlmIChsX2NvZGVfYmxvY2spIHsKKyAgICAgICAgICAgICAgICBsX25iX2NvZGVfYmxvY2tzID0gcF9wcmVjaW5jdC0+YmxvY2tfc2l6ZSAvIHNpemVvZihvcGpfdGNkX2NibGtfZW5jX3QpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZvciAgICAgKGNibGtubyA9IDA7IGNibGtubyA8IGxfbmJfY29kZV9ibG9ja3M7ICsrY2Jsa25vKSAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxfY29kZV9ibG9jay0+ZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2NvZGVfYmxvY2stPmRhdGEgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jb2RlX2Jsb2NrLT5kYXRhID0gMDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsX2NvZGVfYmxvY2stPmxheWVycykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfZnJlZShsX2NvZGVfYmxvY2stPmxheWVycyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX2NvZGVfYmxvY2stPmxheWVycyA9IDAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9jb2RlX2Jsb2NrLT5wYXNzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9jb2RlX2Jsb2NrLT5wYXNzZXMgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9jb2RlX2Jsb2NrLT5wYXNzZXMgPSAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jb2RlX2Jsb2NrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG9wal9mcmVlKHBfcHJlY2luY3QtPmNibGtzLmVuYyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcF9wcmVjaW5jdC0+Y2Jsa3MuZW5jID0gMDA7CisgICAgICAgIH0KK30KKworT1BKX1VJTlQzMiBvcGpfdGNkX2dldF9lbmNvZGVkX3RpbGVfc2l6ZSAoIG9wal90Y2RfdCAqcF90Y2QgKQoreworICAgICAgICBPUEpfVUlOVDMyIGksbF9kYXRhX3NpemUgPSAwOworICAgICAgICBvcGpfaW1hZ2VfY29tcF90ICogbF9pbWdfY29tcCA9IDAwOworICAgICAgICBvcGpfdGNkX3RpbGVjb21wX3QgKiBsX3RpbGVjID0gMDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9zaXplX2NvbXAsIGxfcmVtYWluaW5nOworCisgICAgICAgIGxfdGlsZWMgPSBwX3RjZC0+dGNkX2ltYWdlLT50aWxlcy0+Y29tcHM7CisgICAgICAgIGxfaW1nX2NvbXAgPSBwX3RjZC0+aW1hZ2UtPmNvbXBzOworICAgICAgICBmb3IgKGk9MDtpPHBfdGNkLT5pbWFnZS0+bnVtY29tcHM7KytpKSB7CisgICAgICAgICAgICAgICAgbF9zaXplX2NvbXAgPSBsX2ltZ19jb21wLT5wcmVjID4+IDM7IC8qKC8gOCkqLworICAgICAgICAgICAgICAgIGxfcmVtYWluaW5nID0gbF9pbWdfY29tcC0+cHJlYyAmIDc7ICAvKiAoJTgpICovCisKKyAgICAgICAgICAgICAgICBpZiAobF9yZW1haW5pbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9zaXplX2NvbXA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGxfc2l6ZV9jb21wID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfc2l6ZV9jb21wID0gNDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsX2RhdGFfc2l6ZSArPSBsX3NpemVfY29tcCAqIChPUEpfVUlOVDMyKSgobF90aWxlYy0+eDEgLSBsX3RpbGVjLT54MCkgKiAobF90aWxlYy0+eTEgLSBsX3RpbGVjLT55MCkpOworICAgICAgICAgICAgICAgICsrbF9pbWdfY29tcDsKKyAgICAgICAgICAgICAgICArK2xfdGlsZWM7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbF9kYXRhX3NpemU7Cit9CisgICAgICAgICAgICAgICAgCitPUEpfQk9PTCBvcGpfdGNkX2RjX2xldmVsX3NoaWZ0X2VuY29kZSAoIG9wal90Y2RfdCAqcF90Y2QgKQoreworICAgICAgICBPUEpfVUlOVDMyIGNvbXBubzsKKyAgICAgICAgb3BqX3RjZF90aWxlY29tcF90ICogbF90aWxlX2NvbXAgPSAwMDsKKyAgICAgICAgb3BqX3RjY3BfdCAqIGxfdGNjcCA9IDAwOworICAgICAgICBvcGpfaW1hZ2VfY29tcF90ICogbF9pbWdfY29tcCA9IDAwOworICAgICAgICBvcGpfdGNkX3RpbGVfdCAqIGxfdGlsZTsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX2VsZW0saTsKKyAgICAgICAgT1BKX0lOVDMyICogbF9jdXJyZW50X3B0cjsKKworICAgICAgICBsX3RpbGUgPSBwX3RjZC0+dGNkX2ltYWdlLT50aWxlczsKKyAgICAgICAgbF90aWxlX2NvbXAgPSBsX3RpbGUtPmNvbXBzOworICAgICAgICBsX3RjY3AgPSBwX3RjZC0+dGNwLT50Y2NwczsKKyAgICAgICAgbF9pbWdfY29tcCA9IHBfdGNkLT5pbWFnZS0+Y29tcHM7CisKKyAgICAgICAgZm9yIChjb21wbm8gPSAwOyBjb21wbm8gPCBsX3RpbGUtPm51bWNvbXBzOyBjb21wbm8rKykgeworICAgICAgICAgICAgICAgIGxfY3VycmVudF9wdHIgPSBsX3RpbGVfY29tcC0+ZGF0YTsKKyAgICAgICAgICAgICAgICBsX25iX2VsZW0gPSAoT1BKX1VJTlQzMikoKGxfdGlsZV9jb21wLT54MSAtIGxfdGlsZV9jb21wLT54MCkgKiAobF90aWxlX2NvbXAtPnkxIC0gbF90aWxlX2NvbXAtPnkwKSk7CisKKyAgICAgICAgICAgICAgICBpZiAobF90Y2NwLT5xbWZiaWQgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICAgICAoaSA9IDA7IGkgPCBsX25iX2VsZW07ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbF9jdXJyZW50X3B0ciAtPSBsX3RjY3AtPm1fZGNfbGV2ZWxfc2hpZnQgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfY3VycmVudF9wdHI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxfbmJfZWxlbTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsX2N1cnJlbnRfcHRyID0gKCpsX2N1cnJlbnRfcHRyIC0gbF90Y2NwLT5tX2RjX2xldmVsX3NoaWZ0KSA8PCAxMSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9jdXJyZW50X3B0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK2xfaW1nX2NvbXA7CisgICAgICAgICAgICAgICAgKytsX3RjY3A7CisgICAgICAgICAgICAgICAgKytsX3RpbGVfY29tcDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX3RjZF9tY3RfZW5jb2RlICggb3BqX3RjZF90ICpwX3RjZCApCit7CisgICAgICAgIG9wal90Y2RfdGlsZV90ICogbF90aWxlID0gcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXM7CisgICAgICAgIG9wal90Y2RfdGlsZWNvbXBfdCAqIGxfdGlsZV9jb21wID0gcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPmNvbXBzOworICAgICAgICBPUEpfVUlOVDMyIHNhbXBsZXMgPSAoT1BKX1VJTlQzMikoKGxfdGlsZV9jb21wLT54MSAtIGxfdGlsZV9jb21wLT54MCkgKiAobF90aWxlX2NvbXAtPnkxIC0gbF90aWxlX2NvbXAtPnkwKSk7CisgICAgICAgIE9QSl9VSU5UMzIgaTsKKyAgICAgICAgT1BKX0JZVEUgKiogbF9kYXRhID0gMDA7CisgICAgICAgIG9wal90Y3BfdCAqIGxfdGNwID0gcF90Y2QtPnRjcDsKKworICAgICAgICBpZighcF90Y2QtPnRjcC0+bWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBfdGNkLT50Y3AtPm1jdCA9PSAyKSB7CisgICAgICAgICAgICAgICAgaWYgKCEgcF90Y2QtPnRjcC0+bV9tY3RfY29kaW5nX21hdHJpeCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICBsX2RhdGEgPSAoT1BKX0JZVEUgKiopIG9wal9tYWxsb2MobF90aWxlLT5udW1jb21wcypzaXplb2YoT1BKX0JZVEUqKSk7CisgICAgICAgICAgICAgICAgaWYgKCEgbF9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciAoaT0wO2k8bF90aWxlLT5udW1jb21wczsrK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfZGF0YVtpXSA9IChPUEpfQllURSopIGxfdGlsZV9jb21wLT5kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgKytsX3RpbGVfY29tcDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfbWN0X2VuY29kZV9jdXN0b20oLyogTUNUIGRhdGEgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT1BKX0JZVEUqKSBwX3RjZC0+dGNwLT5tX21jdF9jb2RpbmdfbWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgb2YgY29tcG9uZW50cyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29tcG9uZW50cyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYiBvZiBjb21wb25lbnRzIChpLmUuIHNpemUgb2YgcERhdGEpICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF90aWxlLT5udW1jb21wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0ZWxscyBpZiB0aGUgZGF0YSBpcyBzaWduZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3RjZC0+aW1hZ2UtPmNvbXBzLT5zZ25kKSApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgb3BqX2ZyZWUobF9kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgb3BqX2ZyZWUobF9kYXRhKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChsX3RjcC0+dGNjcHMtPnFtZmJpZCA9PSAwKSB7CisgICAgICAgICAgICAgICAgb3BqX21jdF9lbmNvZGVfcmVhbChsX3RpbGUtPmNvbXBzWzBdLmRhdGEsIGxfdGlsZS0+Y29tcHNbMV0uZGF0YSwgbF90aWxlLT5jb21wc1syXS5kYXRhLCBzYW1wbGVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBvcGpfbWN0X2VuY29kZShsX3RpbGUtPmNvbXBzWzBdLmRhdGEsIGxfdGlsZS0+Y29tcHNbMV0uZGF0YSwgbF90aWxlLT5jb21wc1syXS5kYXRhLCBzYW1wbGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX3RjZF9kd3RfZW5jb2RlICggb3BqX3RjZF90ICpwX3RjZCApCit7CisgICAgICAgIG9wal90Y2RfdGlsZV90ICogbF90aWxlID0gcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXM7CisgICAgICAgIG9wal90Y2RfdGlsZWNvbXBfdCAqIGxfdGlsZV9jb21wID0gcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPmNvbXBzOworICAgICAgICBvcGpfdGNjcF90ICogbF90Y2NwID0gcF90Y2QtPnRjcC0+dGNjcHM7CisgICAgICAgIE9QSl9VSU5UMzIgY29tcG5vOworCisgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgbF90aWxlLT5udW1jb21wczsgKytjb21wbm8pIHsKKyAgICAgICAgICAgICAgICBpZiAobF90Y2NwLT5xbWZiaWQgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgb3BqX2R3dF9lbmNvZGUobF90aWxlX2NvbXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxfdGNjcC0+cW1mYmlkID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIG9wal9kd3RfZW5jb2RlX3JlYWwobF90aWxlX2NvbXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKytsX3RpbGVfY29tcDsKKyAgICAgICAgICAgICAgICArK2xfdGNjcDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX3RjZF90MV9lbmNvZGUgKCBvcGpfdGNkX3QgKnBfdGNkICkKK3sKKyAgICAgICAgb3BqX3QxX3QgKiBsX3QxOworICAgICAgICBjb25zdCBPUEpfRkxPQVQ2NCAqIGxfbWN0X25vcm1zOworICAgICAgICBvcGpfdGNwX3QgKiBsX3RjcCA9IHBfdGNkLT50Y3A7CisKKyAgICAgICAgbF90MSA9IG9wal90MV9jcmVhdGUoKTsKKyAgICAgICAgaWYgKGxfdDEgPT0gMDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxfdGNwLT5tY3QgPT0gMSkgeworICAgICAgICAgICAgICAgIC8qIGlycmV2ZXJzaWJsZSBlbmNvZGluZyAqLworICAgICAgICAgICAgICAgIGlmIChsX3RjcC0+dGNjcHMtPnFtZmJpZCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX21jdF9ub3JtcyA9IG9wal9tY3RfZ2V0X21jdF9ub3Jtc19yZWFsKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbF9tY3Rfbm9ybXMgPSBvcGpfbWN0X2dldF9tY3Rfbm9ybXMoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbF9tY3Rfbm9ybXMgPSAoY29uc3QgT1BKX0ZMT0FUNjQgKikgKGxfdGNwLT5tY3Rfbm9ybXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEgb3BqX3QxX2VuY29kZV9jYmxrcyhsX3QxLCBwX3RjZC0+dGNkX2ltYWdlLT50aWxlcyAsIGxfdGNwLCBsX21jdF9ub3JtcykpIHsKKyAgICAgICAgb3BqX3QxX2Rlc3Ryb3kobF90MSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIG9wal90MV9kZXN0cm95KGxfdDEpOworCisgICAgICAgIHJldHVybiBPUEpfVFJVRTsKK30KKworT1BKX0JPT0wgb3BqX3RjZF90Ml9lbmNvZGUgKG9wal90Y2RfdCAqcF90Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfQllURSAqIHBfZGVzdF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiAqIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9kZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGpfY29kZXN0cmVhbV9pbmZvX3QgKnBfY3N0cl9pbmZvICkKK3sKKyAgICAgICAgb3BqX3QyX3QgKiBsX3QyOworCisgICAgICAgIGxfdDIgPSBvcGpfdDJfY3JlYXRlKHBfdGNkLT5pbWFnZSwgcF90Y2QtPmNwKTsKKyAgICAgICAgaWYgKGxfdDIgPT0gMDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEgb3BqX3QyX2VuY29kZV9wYWNrZXRzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y2QtPnRjZF90aWxlbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y2QtPnRjcC0+bnVtbGF5ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfZGVzdF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfZGF0YV93cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfbWF4X2Rlc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2NzdHJfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3RjZC0+dHBfbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfdGNkLT50cF9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF90Y2QtPmN1cl9waW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTkFMX1BBU1MpKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgb3BqX3QyX2Rlc3Ryb3kobF90Mik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIG9wal90Ml9kZXN0cm95KGxfdDIpOworCisgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tQ0xFQU4tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQorCisKK09QSl9CT09MIG9wal90Y2RfcmF0ZV9hbGxvY2F0ZV9lbmNvZGUoICBvcGpfdGNkX3QgKnBfdGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9kZXN0X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBwX21heF9kZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BqX2NvZGVzdHJlYW1faW5mb190ICpwX2NzdHJfaW5mbyApCit7CisgICAgICAgIG9wal9jcF90ICogbF9jcCA9IHBfdGNkLT5jcDsKKyAgICAgICAgT1BKX1VJTlQzMiBsX25iX3dyaXR0ZW4gPSAwOworCisgICAgICAgIGlmIChwX2NzdHJfaW5mbykgIHsKKyAgICAgICAgICAgICAgICBwX2NzdHJfaW5mby0+aW5kZXhfd3JpdGUgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9kaXN0b19hbGxvY3x8IGxfY3AtPm1fc3BlY2lmaWNfcGFyYW0ubV9lbmMubV9maXhlZF9xdWFsaXR5KSAgeworICAgICAgICAgICAgICAgIC8qIGZpeGVkX3F1YWxpdHkgKi8KKyAgICAgICAgICAgICAgICAvKiBOb3JtYWwgUmF0ZS9kaXN0b3J0aW9uIGFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgICAgICBpZiAoISBvcGpfdGNkX3JhdGVhbGxvY2F0ZShwX3RjZCwgcF9kZXN0X2RhdGEsJmxfbmJfd3JpdHRlbiwgcF9tYXhfZGVzdF9zaXplLCBwX2NzdHJfaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIEZpeGVkIGxheWVyIGFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgICAgICBvcGpfdGNkX3JhdGVhbGxvY2F0ZV9maXhlZChwX3RjZCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gT1BKX1RSVUU7Cit9CisKKworT1BKX0JPT0wgb3BqX3RjZF9jb3B5X3RpbGVfZGF0YSAoICAgICAgIG9wal90Y2RfdCAqcF90Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9CWVRFICogcF9zcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9zcmNfbGVuZ3RoICkKK3sKKyAgICAgICAgT1BKX1VJTlQzMiBpLGosbF9kYXRhX3NpemUgPSAwOworICAgICAgICBvcGpfaW1hZ2VfY29tcF90ICogbF9pbWdfY29tcCA9IDAwOworICAgICAgICBvcGpfdGNkX3RpbGVjb21wX3QgKiBsX3RpbGVjID0gMDA7CisgICAgICAgIE9QSl9VSU5UMzIgbF9zaXplX2NvbXAsIGxfcmVtYWluaW5nOworICAgICAgICBPUEpfVUlOVDMyIGxfbmJfZWxlbTsKKworICAgICAgICBsX2RhdGFfc2l6ZSA9IG9wal90Y2RfZ2V0X2VuY29kZWRfdGlsZV9zaXplKHBfdGNkKTsKKyAgICAgICAgaWYgKGxfZGF0YV9zaXplICE9IHBfc3JjX2xlbmd0aCkgeworICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBsX3RpbGVjID0gcF90Y2QtPnRjZF9pbWFnZS0+dGlsZXMtPmNvbXBzOworICAgICAgICBsX2ltZ19jb21wID0gcF90Y2QtPmltYWdlLT5jb21wczsKKyAgICAgICAgZm9yIChpPTA7aTxwX3RjZC0+aW1hZ2UtPm51bWNvbXBzOysraSkgeworICAgICAgICAgICAgICAgIGxfc2l6ZV9jb21wID0gbF9pbWdfY29tcC0+cHJlYyA+PiAzOyAvKigvIDgpKi8KKyAgICAgICAgICAgICAgICBsX3JlbWFpbmluZyA9IGxfaW1nX2NvbXAtPnByZWMgJiA3OyAgLyogKCU4KSAqLworICAgICAgICAgICAgICAgIGxfbmJfZWxlbSA9IChPUEpfVUlOVDMyKSgobF90aWxlYy0+eDEgLSBsX3RpbGVjLT54MCkgKiAobF90aWxlYy0+eTEgLSBsX3RpbGVjLT55MCkpOworCisgICAgICAgICAgICAgICAgaWYgKGxfcmVtYWluaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK2xfc2l6ZV9jb21wOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChsX3NpemVfY29tcCA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsX3NpemVfY29tcCA9IDQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc3dpdGNoIChsX3NpemVfY29tcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0NIQVIgKiBsX3NyY19wdHIgPSAoT1BKX0NIQVIgKikgcF9zcmM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogbF9kZXN0X3B0ciA9IGxfdGlsZWMtPmRhdGE7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9pbWdfY29tcC0+c2duZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7ajxsX25iX2VsZW07KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9IChPUEpfSU5UMzIpICgqKGxfc3JjX3B0cisrKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7ajxsX25iX2VsZW07KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9ICgqKGxfc3JjX3B0cisrKSkmMHhmZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3NyYyA9IChPUEpfQllURSopIGxfc3JjX3B0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQzMiAqIGxfZGVzdF9wdHIgPSBsX3RpbGVjLT5kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9JTlQxNiAqIGxfc3JjX3B0ciA9IChPUEpfSU5UMTYgKikgcF9zcmM7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobF9pbWdfY29tcC0+c2duZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7ajxsX25iX2VsZW07KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9IChPUEpfSU5UMzIpICgqKGxfc3JjX3B0cisrKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7ajxsX25iX2VsZW07KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobF9kZXN0X3B0cisrKSA9ICgqKGxfc3JjX3B0cisrKSkmMHhmZmZmOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfc3JjID0gKE9QSl9CWVRFKikgbF9zcmNfcHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyICogbF9zcmNfcHRyID0gKE9QSl9JTlQzMiAqKSBwX3NyYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgKiBsX2Rlc3RfcHRyID0gbF90aWxlYy0+ZGF0YTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wO2o8bF9uYl9lbGVtOysraikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihsX2Rlc3RfcHRyKyspID0gKE9QSl9JTlQzMikgKCoobF9zcmNfcHRyKyspKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3NyYyA9IChPUEpfQllURSopIGxfc3JjX3B0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK2xfaW1nX2NvbXA7CisgICAgICAgICAgICAgICAgKytsX3RpbGVjOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE9QSl9UUlVFOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3RjZC5oIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3RjZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDkyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvdGNkLmgKQEAgLTAsMCArMSwzNTQgQEAKKy8qCisgKiBUaGUgY29weXJpZ2h0IGluIHRoaXMgc29mdHdhcmUgaXMgYmVpbmcgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIDItY2xhdXNlcyAKKyAqIEJTRCBMaWNlbnNlLCBpbmNsdWRlZCBiZWxvdy4gVGhpcyBzb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBvdGhlciB0aGlyZCAKKyAqIHBhcnR5IGFuZCBjb250cmlidXRvciByaWdodHMsIGluY2x1ZGluZyBwYXRlbnQgcmlnaHRzLCBhbmQgbm8gc3VjaCByaWdodHMKKyAqIGFyZSBncmFudGVkIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgVW5pdmVyc2l0ZSBjYXRob2xpcXVlIGRlIExvdXZhaW4gKFVDTCksIEJlbGdpdW0KKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBQcm9mZXNzb3IgQmVub2l0IE1hY3EKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDAzLCBEYXZpZCBKYW5zc2VucworICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMsIFlhbm5pY2sgVmVyc2NodWVyZW4KKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA3LCBGcmFuY29pcy1PbGl2aWVyIERldmF1eCAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDE0LCBBbnRvbmluIERlc2NhbXBlCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEhlcnZlIERyb2xvbiwgRnJlZUltYWdlIFRlYW0KKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMS0yMDEyLCBDZW50cmUgTmF0aW9uYWwgZCdFdHVkZXMgU3BhdGlhbGVzIChDTkVTKSwgRlIgCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIENTIFN5c3RlbWVzIGQnSW5mb3JtYXRpb24sIEZyYW5jZQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBfX1RDRF9ICisjZGVmaW5lIF9fVENEX0gKKy8qKgorQGZpbGUgdGNkLmgKK0BicmllZiBJbXBsZW1lbnRhdGlvbiBvZiBhIHRpbGUgY29kZXIvZGVjb2RlciAoVENEKQorCitUaGUgZnVuY3Rpb25zIGluIFRDRC5DIGVuY29kZSBvciBkZWNvZGUgZWFjaCB0aWxlIGluZGVwZW5kZW50bHkgZnJvbQorZWFjaCBvdGhlci4gVGhlIGZ1bmN0aW9ucyBpbiBUQ0QuQyBhcmUgdXNlZCBieSBvdGhlciBmdW5jdGlvbnMgaW4gSjJLLkMuCisqLworCisvKiogQGRlZmdyb3VwIFRDRCBUQ0QgLSBJbXBsZW1lbnRhdGlvbiBvZiBhIHRpbGUgY29kZXIvZGVjb2RlciAqLworLypAeyovCisKKy8qKgorRklYTUUgRE9DCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX3RjZF9zZWcgeworCU9QSl9CWVRFICoqIGRhdGE7CisJT1BKX1VJTlQzMiBkYXRhaW5kZXg7CisJT1BKX1VJTlQzMiBudW1wYXNzZXM7CisJT1BKX1VJTlQzMiByZWFsX251bV9wYXNzZXM7CisJT1BKX1VJTlQzMiBsZW47CisJT1BKX1VJTlQzMiBtYXhwYXNzZXM7CisJT1BKX1VJTlQzMiBudW1uZXdwYXNzZXM7CisJT1BKX1VJTlQzMiBuZXdsZW47Cit9IG9wal90Y2Rfc2VnX3Q7CisKKy8qKgorRklYTUUgRE9DCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX3RjZF9wYXNzIHsKKwlPUEpfVUlOVDMyIHJhdGU7CisJT1BKX0ZMT0FUNjQgZGlzdG9ydGlvbmRlYzsKKwlPUEpfVUlOVDMyIGxlbjsKKwlPUEpfVUlOVDMyIHRlcm0gOiAxOworfSBvcGpfdGNkX3Bhc3NfdDsKKworLyoqCitGSVhNRSBET0MKKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfdGNkX2xheWVyIHsKKwlPUEpfVUlOVDMyIG51bXBhc3NlczsJCS8qIE51bWJlciBvZiBwYXNzZXMgaW4gdGhlIGxheWVyICovCisJT1BKX1VJTlQzMiBsZW47CQkJCS8qIGxlbiBvZiBpbmZvcm1hdGlvbiAqLworCU9QSl9GTE9BVDY0IGRpc3RvOwkJCS8qIGFkZCBmb3IgaW5kZXggKENmci4gTWFyY2VsYSkgKi8KKwlPUEpfQllURSAqZGF0YTsJCQkJLyogZGF0YSAqLworfSBvcGpfdGNkX2xheWVyX3Q7CisKKy8qKgorRklYTUUgRE9DCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX3RjZF9jYmxrX2VuYyB7CisJT1BKX0JZVEUqIGRhdGE7CQkJCQkvKiBEYXRhICovCisJb3BqX3RjZF9sYXllcl90KiBsYXllcnM7CQkvKiBsYXllciBpbmZvcm1hdGlvbiAqLworCW9wal90Y2RfcGFzc190KiBwYXNzZXM7CQkvKiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFzc2VzICovCisJT1BKX0lOVDMyIHgwLCB5MCwgeDEsIHkxOwkJLyogZGltZW5zaW9uIG9mIHRoZSBjb2RlLWJsb2NrcyA6IGxlZnQgdXBwZXIgY29ybmVyICh4MCwgeTApIHJpZ2h0IGxvdyBjb3JuZXIgKHgxLHkxKSAqLworCU9QSl9VSU5UMzIgbnVtYnBzOworCU9QSl9VSU5UMzIgbnVtbGVuYml0czsKKwlPUEpfVUlOVDMyIG51bXBhc3NlczsJCQkvKiBudW1iZXIgb2YgcGFzcyBhbHJlYWR5IGRvbmUgZm9yIHRoZSBjb2RlLWJsb2NrcyAqLworCU9QSl9VSU5UMzIgbnVtcGFzc2VzaW5sYXllcnM7CS8qIG51bWJlciBvZiBwYXNzZXMgaW4gdGhlIGxheWVyICovCisJT1BKX1VJTlQzMiB0b3RhbHBhc3NlczsJCQkvKiB0b3RhbCBudW1iZXIgb2YgcGFzc2VzICovCit9IG9wal90Y2RfY2Jsa19lbmNfdDsKKworCit0eXBlZGVmIHN0cnVjdCBvcGpfdGNkX2NibGtfZGVjIHsKKwlPUEpfQllURSAqIGRhdGE7CQkJCS8qIERhdGEgKi8KKwlvcGpfdGNkX3NlZ190KiBzZWdzOwkJCS8qIHNlZ21lbnRzIGluZm9ybWF0aW9uICovCisJT1BKX0lOVDMyIHgwLCB5MCwgeDEsIHkxOwkJLyogcG9zaXRpb24gb2YgdGhlIGNvZGUtYmxvY2tzIDogbGVmdCB1cHBlciBjb3JuZXIgKHgwLCB5MCkgcmlnaHQgbG93IGNvcm5lciAoeDEseTEpICovCisJT1BKX1VJTlQzMiBudW1icHM7CisJT1BKX1VJTlQzMiBudW1sZW5iaXRzOworICAgIE9QSl9VSU5UMzIgZGF0YV9tYXhfc2l6ZTsJCS8qIFNpemUgb2YgYWxsb2NhdGVkIGRhdGEgYnVmZmVyICovCisJT1BKX1VJTlQzMiBkYXRhX2N1cnJlbnRfc2l6ZTsJLyogU2l6ZSBvZiB1c2VkIGRhdGEgYnVmZmVyICovCisJT1BKX1VJTlQzMiBudW1uZXdwYXNzZXM7CQkvKiBudW1iZXIgb2YgcGFzcyBhZGRlZCB0byB0aGUgY29kZS1ibG9ja3MgKi8KKwlPUEpfVUlOVDMyIG51bXNlZ3M7CQkJCS8qIG51bWJlciBvZiBzZWdtZW50cyAqLworCU9QSl9VSU5UMzIgcmVhbF9udW1fc2VnczsKKwlPUEpfVUlOVDMyIG1fY3VycmVudF9tYXhfc2VnczsKK30gb3BqX3RjZF9jYmxrX2RlY190OworCisvKioKK0ZJWE1FIERPQworKi8KK3R5cGVkZWYgc3RydWN0IG9wal90Y2RfcHJlY2luY3QgeworCU9QSl9JTlQzMiB4MCwgeTAsIHgxLCB5MTsJCS8qIGRpbWVuc2lvbiBvZiB0aGUgcHJlY2luY3QgOiBsZWZ0IHVwcGVyIGNvcm5lciAoeDAsIHkwKSByaWdodCBsb3cgY29ybmVyICh4MSx5MSkgKi8KKwlPUEpfVUlOVDMyIGN3LCBjaDsJCQkJLyogbnVtYmVyIG9mIHByZWNpbmN0IGluIHdpZHRoIGFuZCBoZWlnaHQgKi8KKwl1bmlvbnsJCQkJCQkJLyogY29kZS1ibG9ja3MgaW5mb3JtYXRpb24gKi8KKwkJb3BqX3RjZF9jYmxrX2VuY190KiBlbmM7CisJCW9wal90Y2RfY2Jsa19kZWNfdCogZGVjOworCX0gY2Jsa3M7CisJT1BKX1VJTlQzMiBibG9ja19zaXplOwkJCS8qIHNpemUgdGFrZW4gYnkgY2Jsa3MgKGluIGJ5dGVzKSAqLworCW9wal90Z3RfdHJlZV90ICppbmNsdHJlZTsJICAgIC8qIGluY2x1c2lvbiB0cmVlICovCisJb3BqX3RndF90cmVlX3QgKmltc2J0cmVlOwkgICAgLyogSU1TQiB0cmVlICovCit9IG9wal90Y2RfcHJlY2luY3RfdDsKKworLyoqCitGSVhNRSBET0MKKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfdGNkX2JhbmQgeworCU9QSl9JTlQzMiB4MCwgeTAsIHgxLCB5MTsJCS8qIGRpbWVuc2lvbiBvZiB0aGUgc3ViYmFuZCA6IGxlZnQgdXBwZXIgY29ybmVyICh4MCwgeTApIHJpZ2h0IGxvdyBjb3JuZXIgKHgxLHkxKSAqLworCU9QSl9VSU5UMzIgYmFuZG5vOworCW9wal90Y2RfcHJlY2luY3RfdCAqcHJlY2luY3RzOwkvKiBwcmVjaW5jdCBpbmZvcm1hdGlvbiAqLworCU9QSl9VSU5UMzIgcHJlY2luY3RzX2RhdGFfc2l6ZTsJLyogc2l6ZSBvZiBkYXRhIHRha2VuIGJ5IHByZWNpbmN0cyAqLworCU9QSl9JTlQzMiBudW1icHM7CisJT1BKX0ZMT0FUMzIgc3RlcHNpemU7Cit9IG9wal90Y2RfYmFuZF90OworCisvKioKK0ZJWE1FIERPQworKi8KK3R5cGVkZWYgc3RydWN0IG9wal90Y2RfcmVzb2x1dGlvbiB7CisJT1BKX0lOVDMyIHgwLCB5MCwgeDEsIHkxOwkJLyogZGltZW5zaW9uIG9mIHRoZSByZXNvbHV0aW9uIGxldmVsIDogbGVmdCB1cHBlciBjb3JuZXIgKHgwLCB5MCkgcmlnaHQgbG93IGNvcm5lciAoeDEseTEpICovCisJT1BKX1VJTlQzMiBwdywgcGg7CisJT1BKX1VJTlQzMiBudW1iYW5kczsJCQkvKiBudW1iZXIgc3ViLWJhbmQgZm9yIHRoZSByZXNvbHV0aW9uIGxldmVsICovCisJb3BqX3RjZF9iYW5kX3QgYmFuZHNbM107CQkvKiBzdWJiYW5kIGluZm9ybWF0aW9uICovCit9IG9wal90Y2RfcmVzb2x1dGlvbl90OworCisvKioKK0ZJWE1FIERPQworKi8KK3R5cGVkZWYgc3RydWN0IG9wal90Y2RfdGlsZWNvbXAKK3sKKwlPUEpfSU5UMzIgeDAsIHkwLCB4MSwgeTE7CQkJCS8qIGRpbWVuc2lvbiBvZiBjb21wb25lbnQgOiBsZWZ0IHVwcGVyIGNvcm5lciAoeDAsIHkwKSByaWdodCBsb3cgY29ybmVyICh4MSx5MSkgKi8KKwlPUEpfVUlOVDMyIG51bXJlc29sdXRpb25zOwkJCQkvKiBudW1iZXIgb2YgcmVzb2x1dGlvbnMgbGV2ZWwgKi8KKwlPUEpfVUlOVDMyIG1pbmltdW1fbnVtX3Jlc29sdXRpb25zOwkJLyogbnVtYmVyIG9mIHJlc29sdXRpb25zIGxldmVsIHRvIGRlY29kZSAoYXQgbWF4KSovCisJb3BqX3RjZF9yZXNvbHV0aW9uX3QgKnJlc29sdXRpb25zOwkvKiByZXNvbHV0aW9ucyBpbmZvcm1hdGlvbiAqLworCU9QSl9VSU5UMzIgcmVzb2x1dGlvbnNfc2l6ZTsJCQkvKiBzaXplIG9mIGRhdGEgZm9yIHJlc29sdXRpb25zIChpbiBieXRlcykgKi8KKwlPUEpfSU5UMzIgKmRhdGE7CQkJCQkJLyogZGF0YSBvZiB0aGUgY29tcG9uZW50ICovCisJT1BKX1VJTlQzMiBkYXRhX3NpemU7CQkJCQkvKiBzaXplIG9mIHRoZSBkYXRhIG9mIHRoZSBjb21wb25lbnQgKi8KKwlPUEpfSU5UMzIgbnVtcGl4OwkJCQkJCS8qIGFkZCBmaXhlZF9xdWFsaXR5ICovCit9IG9wal90Y2RfdGlsZWNvbXBfdDsKKworCisvKioKK0ZJWE1FIERPQworKi8KK3R5cGVkZWYgc3RydWN0IG9wal90Y2RfdGlsZSB7CisJT1BKX0lOVDMyIHgwLCB5MCwgeDEsIHkxOwkJLyogZGltZW5zaW9uIG9mIHRoZSB0aWxlIDogbGVmdCB1cHBlciBjb3JuZXIgKHgwLCB5MCkgcmlnaHQgbG93IGNvcm5lciAoeDEseTEpICovCisJT1BKX1VJTlQzMiBudW1jb21wczsJCQkvKiBudW1iZXIgb2YgY29tcG9uZW50cyBpbiB0aWxlICovCisJb3BqX3RjZF90aWxlY29tcF90ICpjb21wczsJLyogQ29tcG9uZW50cyBpbmZvcm1hdGlvbiAqLworCU9QSl9JTlQzMiBudW1waXg7CQkJCS8qIGFkZCBmaXhlZF9xdWFsaXR5ICovCisJT1BKX0ZMT0FUNjQgZGlzdG90aWxlOwkJCS8qIGFkZCBmaXhlZF9xdWFsaXR5ICovCisJT1BKX0ZMT0FUNjQgZGlzdG9sYXllclsxMDBdOwkvKiBhZGQgZml4ZWRfcXVhbGl0eSAqLworCU9QSl9VSU5UMzIgcGFja25vOyAgICAgICAgICAgICAgLyogcGFja2V0IG51bWJlciAqLworfSBvcGpfdGNkX3RpbGVfdDsKKworLyoqCitGSVhNRSBET0MKKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfdGNkX2ltYWdlCit7CisJb3BqX3RjZF90aWxlX3QgKnRpbGVzOwkJLyogVGlsZXMgaW5mb3JtYXRpb24gKi8KK30KK29wal90Y2RfaW1hZ2VfdDsKKworCisvKioKK1RpbGUgY29kZXIvZGVjb2RlcgorKi8KK3R5cGVkZWYgc3RydWN0IG9wal90Y2QKK3sKKwkvKiogUG9zaXRpb24gb2YgdGhlIHRpbGVwYXJ0IGZsYWcgaW4gUHJvZ3Jlc3Npb24gb3JkZXIqLworCU9QSl9JTlQzMiB0cF9wb3M7CisJLyoqIFRpbGUgcGFydCBudW1iZXIqLworCU9QSl9VSU5UMzIgdHBfbnVtOworCS8qKiBDdXJyZW50IHRpbGUgcGFydCBudW1iZXIqLworCU9QSl9VSU5UMzIgY3VyX3RwX251bTsKKwkvKiogVG90YWwgbnVtYmVyIG9mIHRpbGVwYXJ0cyBvZiB0aGUgY3VycmVudCB0aWxlKi8KKwlPUEpfVUlOVDMyIGN1cl90b3RudW1fdHA7CisJLyoqIEN1cnJlbnQgUGFja2V0IGl0ZXJhdG9yIG51bWJlciAqLworCU9QSl9VSU5UMzIgY3VyX3Bpbm87CisJLyoqIGluZm8gb24gZWFjaCBpbWFnZSB0aWxlICovCisJb3BqX3RjZF9pbWFnZV90ICp0Y2RfaW1hZ2U7CisJLyoqIGltYWdlIGhlYWRlciAqLworCW9wal9pbWFnZV90ICppbWFnZTsKKwkvKiogY29kaW5nIHBhcmFtZXRlcnMgKi8KKwlvcGpfY3BfdCAqY3A7CisJLyoqIGNvZGluZy9kZWNvZGluZyBwYXJhbWV0ZXJzIGNvbW1vbiB0byBhbGwgdGlsZXMgKi8KKwlvcGpfdGNwX3QgKnRjcDsKKwkvKiogY3VycmVudCBlbmNvZGVkL2RlY29kZWQgdGlsZSAqLworCU9QSl9VSU5UMzIgdGNkX3RpbGVubzsKKwkvKiogdGVsbCBpZiB0aGUgdGNkIGlzIGEgZGVjb2Rlci4gKi8KKwlPUEpfVUlOVDMyIG1faXNfZGVjb2RlciA6IDE7Cit9IG9wal90Y2RfdDsKKworLyoqIEBuYW1lIEV4cG9ydGVkIGZ1bmN0aW9ucyAqLworLypAeyovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKioKK0R1bXAgdGhlIGNvbnRlbnQgb2YgYSB0Y2Qgc3RydWN0dXJlCisqLworLyp2b2lkIHRjZF9kdW1wKEZJTEUgKmZkLCBvcGpfdGNkX3QgKnRjZCwgb3BqX3RjZF9pbWFnZV90ICppbWcpOyovIC8qIFRPRE8gTVNEIHNob3VsIHVzZSB0aGUgbmV3IHYyIHN0cnVjdHVyZXMgKi8gCisKKy8qKgorQ3JlYXRlIGEgbmV3IFRDRCBoYW5kbGUKK0BwYXJhbSBwX2lzX2RlY29kZXIgRklYTUUgRE9DCitAcmV0dXJuIFJldHVybnMgYSBuZXcgVENEIGhhbmRsZSBpZiBzdWNjZXNzZnVsIHJldHVybnMgTlVMTCBvdGhlcndpc2UKKyovCitvcGpfdGNkX3QqIG9wal90Y2RfY3JlYXRlKE9QSl9CT09MIHBfaXNfZGVjb2Rlcik7CisKKy8qKgorRGVzdHJveSBhIHByZXZpb3VzbHkgY3JlYXRlZCBUQ0QgaGFuZGxlCitAcGFyYW0gdGNkIFRDRCBoYW5kbGUgdG8gZGVzdHJveQorKi8KK3ZvaWQgb3BqX3RjZF9kZXN0cm95KG9wal90Y2RfdCAqdGNkKTsKKworLyoqCisgKiBJbml0aWFsaXplIHRoZSB0aWxlIGNvZGVyIGFuZCBtYXkgcmV1c2Ugc29tZSBtZW1vcnkuCisgKiBAcGFyYW0JcF90Y2QJCVRDRCBoYW5kbGUuCisgKiBAcGFyYW0JcF9pbWFnZQkJcmF3IGltYWdlLgorICogQHBhcmFtCXBfY3AJCWNvZGluZyBwYXJhbWV0ZXJzLgorICoKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZW5jb2RpbmcgdmFsdWVzIGNvdWxkIGJlIHNldCAoZmFsc2Ugb3RoZXJ3aXNlKS4KKyovCitPUEpfQk9PTCBvcGpfdGNkX2luaXQoCW9wal90Y2RfdCAqcF90Y2QsCisJCQkJCQlvcGpfaW1hZ2VfdCAqIHBfaW1hZ2UsCisJCQkJCQlvcGpfY3BfdCAqIHBfY3AgKTsKKworLyoqCisgKiBBbGxvY2F0ZXMgbWVtb3J5IGZvciBkZWNvZGluZyBhIHNwZWNpZmljIHRpbGUuCisgKgorICogQHBhcmFtCXBfdGNkCQl0aGUgdGlsZSBkZWNvZGVyLgorICogQHBhcmFtCXBfdGlsZV9ubwl0aGUgaW5kZXggb2YgdGhlIHRpbGUgcmVjZWl2ZWQgaW4gc2VxdWVuY2UuIFRoaXMgbm90IG5lY2Vzc2FyaWx5IGxlYWQgdG8gdGhlCisgKiB0aWxlIGF0IGluZGV4IHBfdGlsZV9uby4KKyAqCisgKiBAcmV0dXJuCXRydWUgaWYgdGhlIHJlbWFpbmluZyBkYXRhIGlzIHN1ZmZpY2llbnQuCisgKi8KK09QSl9CT09MIG9wal90Y2RfaW5pdF9kZWNvZGVfdGlsZShvcGpfdGNkX3QgKnBfdGNkLCBPUEpfVUlOVDMyIHBfdGlsZV9ubyk7CisKK3ZvaWQgb3BqX3RjZF9tYWtlbGF5ZXJfZml4ZWQob3BqX3RjZF90ICp0Y2QsIE9QSl9VSU5UMzIgbGF5bm8sIE9QSl9VSU5UMzIgZmluYWwpOworCit2b2lkIG9wal90Y2RfcmF0ZWFsbG9jYXRlX2ZpeGVkKG9wal90Y2RfdCAqdGNkKTsKKwordm9pZCBvcGpfdGNkX21ha2VsYXllcigJb3BqX3RjZF90ICp0Y2QsCisJCQkJCQlPUEpfVUlOVDMyIGxheW5vLAorCQkJCQkJT1BKX0ZMT0FUNjQgdGhyZXNoLAorCQkJCQkJT1BKX1VJTlQzMiBmaW5hbCk7CisKK09QSl9CT09MIG9wal90Y2RfcmF0ZWFsbG9jYXRlKAlvcGpfdGNkX3QgKnRjZCwKKwkJCQkJCQkJT1BKX0JZVEUgKmRlc3QsCisJCQkJCQkJCU9QSl9VSU5UMzIgKiBwX2RhdGFfd3JpdHRlbiwKKwkJCQkJCQkJT1BKX1VJTlQzMiBsZW4sCisJCQkJCQkJCW9wal9jb2Rlc3RyZWFtX2luZm9fdCAqY3N0cl9pbmZvKTsKKworLyoqCisgKiBHZXRzIHRoZSBtYXhpbXVtIHRpbGUgc2l6ZSB0aGF0IHdpbGwgYmUgdGFrZW4gYnkgdGhlIHRpbGUgb25jZSBkZWNvZGVkLgorICovCitPUEpfVUlOVDMyIG9wal90Y2RfZ2V0X2RlY29kZWRfdGlsZV9zaXplIChvcGpfdGNkX3QgKnBfdGNkICk7CisKKy8qKgorICogRW5jb2RlcyBhIHRpbGUgZnJvbSB0aGUgcmF3IGltYWdlIGludG8gdGhlIGdpdmVuIGJ1ZmZlci4KKyAqIEBwYXJhbQlwX3RjZAkJCVRpbGUgQ29kZXIgaGFuZGxlCisgKiBAcGFyYW0JcF90aWxlX25vCQlJbmRleCBvZiB0aGUgdGlsZSB0byBlbmNvZGUuCisgKiBAcGFyYW0JcF9kZXN0CQkJRGVzdGluYXRpb24gYnVmZmVyCisgKiBAcGFyYW0JcF9kYXRhX3dyaXR0ZW4JcG9pbnRlciB0byBhbiBpbnQgdGhhdCBpcyBpbmNyZW1lbnRlZCBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWxseSB3cml0dGVuIG9uIHBfZGVzdAorICogQHBhcmFtCXBfbGVuCQkJTWF4aW11bSBsZW5ndGggb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcgorICogQHBhcmFtCXBfY3N0cl9pbmZvCQlDb2Rlc3RyZWFtIGluZm9ybWF0aW9uIHN0cnVjdHVyZQorICogQHJldHVybiAgdHJ1ZSBpZiB0aGUgY29kaW5nIGlzIHN1Y2Nlc3NmdWxsLgorKi8KK09QSl9CT09MIG9wal90Y2RfZW5jb2RlX3RpbGUoICAgb3BqX3RjZF90ICpwX3RjZCwKKwkJCQkJCQkgICAgT1BKX1VJTlQzMiBwX3RpbGVfbm8sCisJCQkJCQkJICAgIE9QSl9CWVRFICpwX2Rlc3QsCisJCQkJCQkJICAgIE9QSl9VSU5UMzIgKiBwX2RhdGFfd3JpdHRlbiwKKwkJCQkJCQkgICAgT1BKX1VJTlQzMiBwX2xlbiwKKwkJCQkJCQkgICAgc3RydWN0IG9wal9jb2Rlc3RyZWFtX2luZm8gKnBfY3N0cl9pbmZvKTsKKworCisvKioKK0RlY29kZSBhIHRpbGUgZnJvbSBhIGJ1ZmZlciBpbnRvIGEgcmF3IGltYWdlCitAcGFyYW0gdGNkIFRDRCBoYW5kbGUKK0BwYXJhbSBzcmMgU291cmNlIGJ1ZmZlcgorQHBhcmFtIGxlbiBMZW5ndGggb2Ygc291cmNlIGJ1ZmZlcgorQHBhcmFtIHRpbGVubyBOdW1iZXIgdGhhdCBpZGVudGlmaWVzIG9uZSBvZiB0aGUgdGlsZXMgdG8gYmUgZGVjb2RlZAorQHBhcmFtIGNzdHJfaW5mbyAgRklYTUUgRE9DCisqLworT1BKX0JPT0wgb3BqX3RjZF9kZWNvZGVfdGlsZSggICBvcGpfdGNkX3QgKnRjZCwKKwkJCQkJCQkgICAgT1BKX0JZVEUgKnNyYywKKwkJCQkJCQkgICAgT1BKX1VJTlQzMiBsZW4sCisJCQkJCQkJICAgIE9QSl9VSU5UMzIgdGlsZW5vLAorCQkJCQkJCSAgICBvcGpfY29kZXN0cmVhbV9pbmRleF90ICpjc3RyX2luZm8pOworCisKKy8qKgorICogQ29waWVzIHRpbGUgZGF0YSBmcm9tIHRoZSBzeXN0ZW0gb250byB0aGUgZ2l2ZW4gbWVtb3J5IGJsb2NrLgorICovCitPUEpfQk9PTCBvcGpfdGNkX3VwZGF0ZV90aWxlX2RhdGEgKAlvcGpfdGNkX3QgKnBfdGNkLAorCQkJCQkJCQkgICAgT1BKX0JZVEUgKiBwX2Rlc3QsCisJCQkJCQkJCSAgICBPUEpfVUlOVDMyIHBfZGVzdF9sZW5ndGggKTsKKworLyoqCisgKgorICovCitPUEpfVUlOVDMyIG9wal90Y2RfZ2V0X2VuY29kZWRfdGlsZV9zaXplICggb3BqX3RjZF90ICpwX3RjZCApOworCisvKioKKyAqIEluaXRpYWxpemUgdGhlIHRpbGUgY29kZXIgYW5kIG1heSByZXVzZSBzb21lIG1lb3J5LgorICoKKyAqIEBwYXJhbQlwX3RjZAkJVENEIGhhbmRsZS4KKyAqIEBwYXJhbQlwX3RpbGVfbm8JY3VycmVudCB0aWxlIGluZGV4IHRvIGVuY29kZS4KKyAqCisgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGVuY29kaW5nIHZhbHVlcyBjb3VsZCBiZSBzZXQgKGZhbHNlIG90aGVyd2lzZSkuCisqLworT1BKX0JPT0wgb3BqX3RjZF9pbml0X2VuY29kZV90aWxlICgJb3BqX3RjZF90ICpwX3RjZCwKKwkJCQkJCQkJICAgIE9QSl9VSU5UMzIgcF90aWxlX25vICk7CisKKy8qKgorICogQ29waWVzIHRpbGUgZGF0YSBmcm9tIHRoZSBnaXZlbiBtZW1vcnkgYmxvY2sgb250byB0aGUgc3lzdGVtLgorICovCitPUEpfQk9PTCBvcGpfdGNkX2NvcHlfdGlsZV9kYXRhIChvcGpfdGNkX3QgKnBfdGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX0JZVEUgKiBwX3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgcF9zcmNfbGVuZ3RoICk7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKkB9Ki8KKworLypAfSovCisKKyNlbmRpZiAvKiBfX1RDRF9IICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvdGd0LmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL2xpYm9wZW5qcGVnMjAvdGd0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc3YWRiMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90Z3QuYwpAQCAtMCwwICsxLDMzNyBAQAorLyoKKyAqIFRoZSBjb3B5cmlnaHQgaW4gdGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgMi1jbGF1c2VzIAorICogQlNEIExpY2Vuc2UsIGluY2x1ZGVkIGJlbG93LiBUaGlzIHNvZnR3YXJlIG1heSBiZSBzdWJqZWN0IHRvIG90aGVyIHRoaXJkIAorICogcGFydHkgYW5kIGNvbnRyaWJ1dG9yIHJpZ2h0cywgaW5jbHVkaW5nIHBhdGVudCByaWdodHMsIGFuZCBubyBzdWNoIHJpZ2h0cworICogYXJlIGdyYW50ZWQgdW5kZXIgdGhpcyBsaWNlbnNlLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE0LCBVbml2ZXJzaXRlIGNhdGhvbGlxdWUgZGUgTG91dmFpbiAoVUNMKSwgQmVsZ2l1bQorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFByb2Zlc3NvciBCZW5vaXQgTWFjcQorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDMsIERhdmlkIEphbnNzZW5zCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMywgWWFubmljayBWZXJzY2h1ZXJlbgorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMDcsIEZyYW5jb2lzLU9saXZpZXIgRGV2YXV4IAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQsIEFudG9uaW4gRGVzY2FtcGUKKyAqIENvcHlyaWdodCAoYykgMjAwNSwgSGVydmUgRHJvbG9uLCBGcmVlSW1hZ2UgVGVhbQorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDExLTIwMTIsIENlbnRyZSBOYXRpb25hbCBkJ0V0dWRlcyBTcGF0aWFsZXMgKENORVMpLCBGUiAKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgQ1MgU3lzdGVtZXMgZCdJbmZvcm1hdGlvbiwgRnJhbmNlCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYEFTIElTJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJvcGpfaW5jbHVkZXMuaCIKKworLyogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBUYWctdHJlZSBjb2RlciBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKK29wal90Z3RfdHJlZV90ICpvcGpfdGd0X2NyZWF0ZShPUEpfVUlOVDMyIG51bWxlYWZzaCwgT1BKX1VJTlQzMiBudW1sZWFmc3YpIHsKKyAgICAgICAgT1BKX0lOVDMyIG5wbGhbMzJdOworICAgICAgICBPUEpfSU5UMzIgbnBsdlszMl07CisgICAgICAgIG9wal90Z3Rfbm9kZV90ICpub2RlID0gMDA7CisgICAgICAgIG9wal90Z3Rfbm9kZV90ICpsX3BhcmVudF9ub2RlID0gMDA7CisgICAgICAgIG9wal90Z3Rfbm9kZV90ICpsX3BhcmVudF9ub2RlMCA9IDAwOworICAgICAgICBvcGpfdGd0X3RyZWVfdCAqdHJlZSA9IDAwOworICAgICAgICBPUEpfVUlOVDMyIGk7CisgICAgICAgIE9QSl9JTlQzMiAgaixrOworICAgICAgICBPUEpfVUlOVDMyIG51bWx2bHM7CisgICAgICAgIE9QSl9VSU5UMzIgbjsKKworICAgICAgICB0cmVlID0gKG9wal90Z3RfdHJlZV90ICopIG9wal9tYWxsb2Moc2l6ZW9mKG9wal90Z3RfdHJlZV90KSk7CisgICAgICAgIGlmKCF0cmVlKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUiBpbiB0Z3RfY3JlYXRlIHdoaWxlIGFsbG9jYXRpbmcgdHJlZVxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDAwOworICAgICAgICB9CisgICAgICAgIG1lbXNldCh0cmVlLDAsc2l6ZW9mKG9wal90Z3RfdHJlZV90KSk7CisKKyAgICAgICAgdHJlZS0+bnVtbGVhZnNoID0gbnVtbGVhZnNoOworICAgICAgICB0cmVlLT5udW1sZWFmc3YgPSBudW1sZWFmc3Y7CisKKyAgICAgICAgbnVtbHZscyA9IDA7CisgICAgICAgIG5wbGhbMF0gPSAoT1BKX0lOVDMyKW51bWxlYWZzaDsKKyAgICAgICAgbnBsdlswXSA9IChPUEpfSU5UMzIpbnVtbGVhZnN2OworICAgICAgICB0cmVlLT5udW1ub2RlcyA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBuID0gKE9QSl9VSU5UMzIpKG5wbGhbbnVtbHZsc10gKiBucGx2W251bWx2bHNdKTsKKyAgICAgICAgICAgICAgICBucGxoW251bWx2bHMgKyAxXSA9IChucGxoW251bWx2bHNdICsgMSkgLyAyOworICAgICAgICAgICAgICAgIG5wbHZbbnVtbHZscyArIDFdID0gKG5wbHZbbnVtbHZsc10gKyAxKSAvIDI7CisgICAgICAgICAgICAgICAgdHJlZS0+bnVtbm9kZXMgKz0gbjsKKyAgICAgICAgICAgICAgICArK251bWx2bHM7CisgICAgICAgIH0gd2hpbGUgKG4gPiAxKTsKKworICAgICAgICAvKiBBREQgKi8KKyAgICAgICAgaWYgKHRyZWUtPm51bW5vZGVzID09IDApIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZSh0cmVlKTsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkcgaW4gdGd0X2NyZWF0ZSB0cmVlLT5udW1ub2RlcyA9PSAwLCBubyB0cmVlIGNyZWF0ZWQuXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDA7CisgICAgICAgIH0KKworICAgICAgICB0cmVlLT5ub2RlcyA9IChvcGpfdGd0X25vZGVfdCopIG9wal9jYWxsb2ModHJlZS0+bnVtbm9kZXMsIHNpemVvZihvcGpfdGd0X25vZGVfdCkpOworICAgICAgICBpZighdHJlZS0+bm9kZXMpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVSUk9SIGluIHRndF9jcmVhdGUgd2hpbGUgYWxsb2NhdGluZyBub2RlIG9mIHRoZSB0cmVlXG4iKTsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZSh0cmVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDA7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KHRyZWUtPm5vZGVzLDAsdHJlZS0+bnVtbm9kZXMgKiBzaXplb2Yob3BqX3RndF9ub2RlX3QpKTsKKyAgICAgICAgdHJlZS0+bm9kZXNfc2l6ZSA9IHRyZWUtPm51bW5vZGVzICogKE9QSl9VSU5UMzIpc2l6ZW9mKG9wal90Z3Rfbm9kZV90KTsKKworICAgICAgICBub2RlID0gdHJlZS0+bm9kZXM7CisgICAgICAgIGxfcGFyZW50X25vZGUgPSAmdHJlZS0+bm9kZXNbdHJlZS0+bnVtbGVhZnNoICogdHJlZS0+bnVtbGVhZnN2XTsKKyAgICAgICAgbF9wYXJlbnRfbm9kZTAgPSBsX3BhcmVudF9ub2RlOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1sdmxzIC0gMTsgKytpKSB7CisgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG5wbHZbaV07ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAgayA9IG5wbGhbaV07CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoLS1rID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cGFyZW50ID0gbF9wYXJlbnRfbm9kZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytub2RlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLS1rID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5wYXJlbnQgPSBsX3BhcmVudF9ub2RlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbm9kZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xfcGFyZW50X25vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGogJiAxKSB8fCBqID09IG5wbHZbaV0gLSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfcGFyZW50X25vZGUwID0gbF9wYXJlbnRfbm9kZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfcGFyZW50X25vZGUgPSBsX3BhcmVudF9ub2RlMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9wYXJlbnRfbm9kZTAgKz0gbnBsaFtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbm9kZS0+cGFyZW50ID0gMDsKKyAgICAgICAgb3BqX3RndF9yZXNldCh0cmVlKTsKKyAgICAgICAgcmV0dXJuIHRyZWU7Cit9CisKKy8qKgorICogUmVpbml0aWFsaXNlcyBhIHRhZy10cmVlIGZyb20gYW4gZXhpc3Rpbmcgb25lLgorICoKKyAqIEBwYXJhbSAgICAgICBwX3RyZWUgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0cmVlIHRvIHJlaW5pdGlhbGl6ZS4KKyAqIEBwYXJhbSAgICAgICBwX251bV9sZWFmc19oICAgICAgICAgICB0aGUgd2lkdGggb2YgdGhlIGFycmF5IG9mIGxlYWZzIG9mIHRoZSB0cmVlCisgKiBAcGFyYW0gICAgICAgcF9udW1fbGVhZnNfdiAgICAgICAgICAgdGhlIGhlaWdodCBvZiB0aGUgYXJyYXkgb2YgbGVhZnMgb2YgdGhlIHRyZWUKKyAqIEByZXR1cm4gICAgICBhIG5ldyB0YWctdHJlZSBpZiBzdWNjZXNzZnVsLCBOVUxMIG90aGVyd2lzZQorKi8KK29wal90Z3RfdHJlZV90ICpvcGpfdGd0X2luaXQob3BqX3RndF90cmVlX3QgKiBwX3RyZWUsT1BKX1VJTlQzMiBwX251bV9sZWFmc19oLCBPUEpfVUlOVDMyIHBfbnVtX2xlYWZzX3YpCit7CisgICAgICAgIE9QSl9JTlQzMiBsX25wbGhbMzJdOworICAgICAgICBPUEpfSU5UMzIgbF9ucGx2WzMyXTsKKyAgICAgICAgb3BqX3RndF9ub2RlX3QgKmxfbm9kZSA9IDAwOworICAgICAgICBvcGpfdGd0X25vZGVfdCAqbF9wYXJlbnRfbm9kZSA9IDAwOworICAgICAgICBvcGpfdGd0X25vZGVfdCAqbF9wYXJlbnRfbm9kZTAgPSAwMDsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBPUEpfSU5UMzIgaixrOworICAgICAgICBPUEpfVUlOVDMyIGxfbnVtX2xldmVsczsKKyAgICAgICAgT1BKX1VJTlQzMiBuOworICAgICAgICBPUEpfVUlOVDMyIGxfbm9kZV9zaXplOworCisgICAgICAgIGlmICghIHBfdHJlZSl7CisgICAgICAgICAgICAgICAgcmV0dXJuIDAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChwX3RyZWUtPm51bWxlYWZzaCAhPSBwX251bV9sZWFmc19oKSB8fCAocF90cmVlLT5udW1sZWFmc3YgIT0gcF9udW1fbGVhZnNfdikpIHsKKyAgICAgICAgICAgICAgICBwX3RyZWUtPm51bWxlYWZzaCA9IHBfbnVtX2xlYWZzX2g7CisgICAgICAgICAgICAgICAgcF90cmVlLT5udW1sZWFmc3YgPSBwX251bV9sZWFmc192OworCisgICAgICAgICAgICAgICAgbF9udW1fbGV2ZWxzID0gMDsKKyAgICAgICAgICAgICAgICBsX25wbGhbMF0gPSAoT1BKX0lOVDMyKXBfbnVtX2xlYWZzX2g7CisgICAgICAgICAgICAgICAgbF9ucGx2WzBdID0gKE9QSl9JTlQzMilwX251bV9sZWFmc192OworICAgICAgICAgICAgICAgIHBfdHJlZS0+bnVtbm9kZXMgPSAwOworICAgICAgICAgICAgICAgIGRvCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbiA9IChPUEpfVUlOVDMyKShsX25wbGhbbF9udW1fbGV2ZWxzXSAqIGxfbnBsdltsX251bV9sZXZlbHNdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbnBsaFtsX251bV9sZXZlbHMgKyAxXSA9IChsX25wbGhbbF9udW1fbGV2ZWxzXSArIDEpIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxfbnBsdltsX251bV9sZXZlbHMgKyAxXSA9IChsX25wbHZbbF9udW1fbGV2ZWxzXSArIDEpIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdHJlZS0+bnVtbm9kZXMgKz0gbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbF9udW1fbGV2ZWxzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSAobiA+IDEpOworCisgICAgICAgICAgICAgICAgLyogQUREICovCisgICAgICAgICAgICAgICAgaWYgKHBfdHJlZS0+bnVtbm9kZXMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BqX3RndF9kZXN0cm95KHBfdHJlZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxfbm9kZV9zaXplID0gcF90cmVlLT5udW1ub2RlcyAqIChPUEpfVUlOVDMyKXNpemVvZihvcGpfdGd0X25vZGVfdCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGxfbm9kZV9zaXplID4gcF90cmVlLT5ub2Rlc19zaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfdGd0X25vZGVfdCogbmV3X25vZGVzID0gKG9wal90Z3Rfbm9kZV90Kikgb3BqX3JlYWxsb2MocF90cmVlLT5ub2RlcywgbF9ub2RlX3NpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgbmV3X25vZGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRVJST1IgTm90IGVub3VnaCBtZW1vcnkgdG8gcmVpbml0aWFsaXplIHRoZSB0YWcgdHJlZVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Z3RfZGVzdHJveShwX3RyZWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwX3RyZWUtPm5vZGVzID0gbmV3X25vZGVzOworICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCgoY2hhciAqKSBwX3RyZWUtPm5vZGVzKSArIHBfdHJlZS0+bm9kZXNfc2l6ZSwgMCAsIGxfbm9kZV9zaXplIC0gcF90cmVlLT5ub2Rlc19zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdHJlZS0+bm9kZXNfc2l6ZSA9IGxfbm9kZV9zaXplOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsX25vZGUgPSBwX3RyZWUtPm5vZGVzOworICAgICAgICAgICAgICAgIGxfcGFyZW50X25vZGUgPSAmcF90cmVlLT5ub2Rlc1twX3RyZWUtPm51bWxlYWZzaCAqIHBfdHJlZS0+bnVtbGVhZnN2XTsKKyAgICAgICAgICAgICAgICBsX3BhcmVudF9ub2RlMCA9IGxfcGFyZW50X25vZGU7CisKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbF9udW1fbGV2ZWxzIC0gMTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbF9ucGx2W2ldOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGxfbnBsaFtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKC0tayA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9ub2RlLT5wYXJlbnQgPSBsX3BhcmVudF9ub2RlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9ub2RlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLWsgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9ub2RlLT5wYXJlbnQgPSBsX3BhcmVudF9ub2RlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsX25vZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbF9wYXJlbnRfbm9kZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaiAmIDEpIHx8IGogPT0gbF9ucGx2W2ldIC0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfcGFyZW50X25vZGUwID0gbF9wYXJlbnRfbm9kZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsX3BhcmVudF9ub2RlID0gbF9wYXJlbnRfbm9kZTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9wYXJlbnRfbm9kZTAgKz0gbF9ucGxoW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxfbm9kZS0+cGFyZW50ID0gMDsKKyAgICAgICAgfQorICAgICAgICBvcGpfdGd0X3Jlc2V0KHBfdHJlZSk7CisKKyAgICAgICAgcmV0dXJuIHBfdHJlZTsKK30KKwordm9pZCBvcGpfdGd0X2Rlc3Ryb3kob3BqX3RndF90cmVlX3QgKnBfdHJlZSkKK3sKKyAgICAgICAgaWYgKCEgcF90cmVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBfdHJlZS0+bm9kZXMpIHsKKyAgICAgICAgICAgICAgICBvcGpfZnJlZShwX3RyZWUtPm5vZGVzKTsKKyAgICAgICAgICAgICAgICBwX3RyZWUtPm5vZGVzID0gMDA7CisgICAgICAgIH0KKyAgICAgICAgb3BqX2ZyZWUocF90cmVlKTsKK30KKwordm9pZCBvcGpfdGd0X3Jlc2V0KG9wal90Z3RfdHJlZV90ICpwX3RyZWUpIHsKKyAgICAgICAgT1BKX1VJTlQzMiBpOworICAgICAgICBvcGpfdGd0X25vZGVfdCAqIGxfY3VycmVudF9ub2RlID0gMDA7OworCisgICAgICAgIGlmICghIHBfdHJlZSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxfY3VycmVudF9ub2RlID0gcF90cmVlLT5ub2RlczsKKyAgICAgICAgZm9yICAgICAoaSA9IDA7IGkgPCBwX3RyZWUtPm51bW5vZGVzOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsX2N1cnJlbnRfbm9kZS0+dmFsdWUgPSA5OTk7CisgICAgICAgICAgICAgICAgbF9jdXJyZW50X25vZGUtPmxvdyA9IDA7CisgICAgICAgICAgICAgICAgbF9jdXJyZW50X25vZGUtPmtub3duID0gMDsKKyAgICAgICAgICAgICAgICArK2xfY3VycmVudF9ub2RlOworICAgICAgICB9Cit9CisKK3ZvaWQgb3BqX3RndF9zZXR2YWx1ZShvcGpfdGd0X3RyZWVfdCAqdHJlZSwgT1BKX1VJTlQzMiBsZWFmbm8sIE9QSl9JTlQzMiB2YWx1ZSkgeworICAgICAgICBvcGpfdGd0X25vZGVfdCAqbm9kZTsKKyAgICAgICAgbm9kZSA9ICZ0cmVlLT5ub2Rlc1tsZWFmbm9dOworICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT52YWx1ZSA+IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgbm9kZS0+dmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50OworICAgICAgICB9Cit9CisKK3ZvaWQgb3BqX3RndF9lbmNvZGUob3BqX2Jpb190ICpiaW8sIG9wal90Z3RfdHJlZV90ICp0cmVlLCBPUEpfVUlOVDMyIGxlYWZubywgT1BKX0lOVDMyIHRocmVzaG9sZCkgeworICAgICAgICBvcGpfdGd0X25vZGVfdCAqc3RrWzMxXTsKKyAgICAgICAgb3BqX3RndF9ub2RlX3QgKipzdGtwdHI7CisgICAgICAgIG9wal90Z3Rfbm9kZV90ICpub2RlOworICAgICAgICBPUEpfSU5UMzIgbG93OworCisgICAgICAgIHN0a3B0ciA9IHN0azsKKyAgICAgICAgbm9kZSA9ICZ0cmVlLT5ub2Rlc1tsZWFmbm9dOworICAgICAgICB3aGlsZSAobm9kZS0+cGFyZW50KSB7CisgICAgICAgICAgICAgICAgKnN0a3B0cisrID0gbm9kZTsKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsb3cgPSAwOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgaWYgKGxvdyA+IG5vZGUtPmxvdykgeworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bG93ID0gbG93OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb3cgPSBub2RlLT5sb3c7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHdoaWxlIChsb3cgPCB0aHJlc2hvbGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb3cgPj0gbm9kZS0+dmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5rbm93bikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal9iaW9fd3JpdGUoYmlvLCAxLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5rbm93biA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBvcGpfYmlvX3dyaXRlKGJpbywgMCwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK2xvdzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbm9kZS0+bG93ID0gbG93OworICAgICAgICAgICAgICAgIGlmIChzdGtwdHIgPT0gc3RrKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgbm9kZSA9ICotLXN0a3B0cjsKKyAgICAgICAgfQorfQorCitPUEpfVUlOVDMyIG9wal90Z3RfZGVjb2RlKG9wal9iaW9fdCAqYmlvLCBvcGpfdGd0X3RyZWVfdCAqdHJlZSwgT1BKX1VJTlQzMiBsZWFmbm8sIE9QSl9JTlQzMiB0aHJlc2hvbGQpIHsKKyAgICAgICAgb3BqX3RndF9ub2RlX3QgKnN0a1szMV07CisgICAgICAgIG9wal90Z3Rfbm9kZV90ICoqc3RrcHRyOworICAgICAgICBvcGpfdGd0X25vZGVfdCAqbm9kZTsKKyAgICAgICAgT1BKX0lOVDMyIGxvdzsKKworICAgICAgICBzdGtwdHIgPSBzdGs7CisgICAgICAgIG5vZGUgPSAmdHJlZS0+bm9kZXNbbGVhZm5vXTsKKyAgICAgICAgd2hpbGUgKG5vZGUtPnBhcmVudCkgeworICAgICAgICAgICAgICAgICpzdGtwdHIrKyA9IG5vZGU7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbG93ID0gMDsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGlmIChsb3cgPiBub2RlLT5sb3cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmxvdyA9IGxvdzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbG93ID0gbm9kZS0+bG93OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSAobG93IDwgdGhyZXNob2xkICYmIGxvdyA8IG5vZGUtPnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BqX2Jpb19yZWFkKGJpbywgMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+dmFsdWUgPSBsb3c7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2xvdzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbm9kZS0+bG93ID0gbG93OworICAgICAgICAgICAgICAgIGlmIChzdGtwdHIgPT0gc3RrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbm9kZSA9ICotLXN0a3B0cjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIChub2RlLT52YWx1ZSA8IHRocmVzaG9sZCkgPyAxIDogMDsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90Z3QuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvbGlib3BlbmpwZWcyMC90Z3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDE1MmY4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9saWJvcGVuanBlZzIwL3RndC5oCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogVGhlIGNvcHlyaWdodCBpbiB0aGlzIHNvZnR3YXJlIGlzIGJlaW5nIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSAyLWNsYXVzZXMgCisgKiBCU0QgTGljZW5zZSwgaW5jbHVkZWQgYmVsb3cuIFRoaXMgc29mdHdhcmUgbWF5IGJlIHN1YmplY3QgdG8gb3RoZXIgdGhpcmQgCisgKiBwYXJ0eSBhbmQgY29udHJpYnV0b3IgcmlnaHRzLCBpbmNsdWRpbmcgcGF0ZW50IHJpZ2h0cywgYW5kIG5vIHN1Y2ggcmlnaHRzCisgKiBhcmUgZ3JhbnRlZCB1bmRlciB0aGlzIGxpY2Vuc2UuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQsIFVuaXZlcnNpdGUgY2F0aG9saXF1ZSBkZSBMb3V2YWluIChVQ0wpLCBCZWxnaXVtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCwgUHJvZmVzc29yIEJlbm9pdCBNYWNxCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMywgRGF2aWQgSmFuc3NlbnMKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDAzLCBZYW5uaWNrIFZlcnNjaHVlcmVuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNywgRnJhbmNvaXMtT2xpdmllciBEZXZhdXggCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAxNCwgQW50b25pbiBEZXNjYW1wZQorICogQ29weXJpZ2h0IChjKSAyMDA1LCBIZXJ2ZSBEcm9sb24sIEZyZWVJbWFnZSBUZWFtCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEplcm9tZSBGaW1lcywgQ29tbXVuaWNhdGlvbnMgJiBTeXN0ZW1lcyA8amVyb21lLmZpbWVzQGMtcy5mcj4KKyAqIENvcHlyaWdodCAoYykgMjAxMS0yMDEyLCBDZW50cmUgTmF0aW9uYWwgZCdFdHVkZXMgU3BhdGlhbGVzIChDTkVTKSwgRnJhbmNlIAorICogQ29weXJpZ2h0IChjKSAyMDEyLCBDUyBTeXN0ZW1lcyBkJ0luZm9ybWF0aW9uLCBGcmFuY2UKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgQVMgSVMnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfX1RHVF9ICisjZGVmaW5lIF9fVEdUX0gKKy8qKgorQGZpbGUgdGd0LmgKK0BicmllZiBJbXBsZW1lbnRhdGlvbiBvZiBhIHRhZy10cmVlIGNvZGVyIChUR1QpCisKK1RoZSBmdW5jdGlvbnMgaW4gVEdULkMgaGF2ZSBmb3IgZ29hbCB0byByZWFsaXplIGEgdGFnLXRyZWUgY29kZXIuIFRoZSBmdW5jdGlvbnMgaW4gVEdULkMKK2FyZSB1c2VkIGJ5IHNvbWUgZnVuY3Rpb24gaW4gVDIuQy4KKyovCisKKy8qKiBAZGVmZ3JvdXAgVEdUIFRHVCAtIEltcGxlbWVudGF0aW9uIG9mIGEgdGFnLXRyZWUgY29kZXIgKi8KKy8qQHsqLworCisvKioKK1RhZyBub2RlCisqLwordHlwZWRlZiBzdHJ1Y3Qgb3BqX3RndF9ub2RlIHsKKyAgICBzdHJ1Y3Qgb3BqX3RndF9ub2RlICpwYXJlbnQ7CisgICAgT1BKX0lOVDMyIHZhbHVlOworICAgIE9QSl9JTlQzMiBsb3c7CisgICAgT1BKX1VJTlQzMiBrbm93bjsKK30gb3BqX3RndF9ub2RlX3Q7CisKKy8qKgorVGFnIHRyZWUKKyovCit0eXBlZGVmIHN0cnVjdCBvcGpfdGd0X3RyZWUKK3sKKwlPUEpfVUlOVDMyICBudW1sZWFmc2g7CisJT1BKX1VJTlQzMiAgbnVtbGVhZnN2OworCU9QSl9VSU5UMzIgbnVtbm9kZXM7CisJb3BqX3RndF9ub2RlX3QgKm5vZGVzOworCU9QSl9VSU5UMzIgIG5vZGVzX3NpemU7CQkvKiBtYXhpbXVtIHNpemUgdGFrZW4gYnkgbm9kZXMgKi8KK30gb3BqX3RndF90cmVlX3Q7CisKKworLyoqIEBuYW1lIEV4cG9ydGVkIGZ1bmN0aW9ucyAqLworLypAeyovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoqCitDcmVhdGUgYSB0YWctdHJlZQorQHBhcmFtIG51bWxlYWZzaCBXaWR0aCBvZiB0aGUgYXJyYXkgb2YgbGVhZnMgb2YgdGhlIHRyZWUKK0BwYXJhbSBudW1sZWFmc3YgSGVpZ2h0IG9mIHRoZSBhcnJheSBvZiBsZWFmcyBvZiB0aGUgdHJlZQorQHJldHVybiBSZXR1cm5zIGEgbmV3IHRhZy10cmVlIGlmIHN1Y2Nlc3NmdWwsIHJldHVybnMgTlVMTCBvdGhlcndpc2UKKyovCitvcGpfdGd0X3RyZWVfdCAqb3BqX3RndF9jcmVhdGUoT1BKX1VJTlQzMiBudW1sZWFmc2gsIE9QSl9VSU5UMzIgbnVtbGVhZnN2KTsKKworLyoqCisgKiBSZWluaXRpYWxpc2VzIGEgdGFnLXRyZWUgZnJvbSBhbiBleGl4dGluZyBvbmUuCisgKgorICogQHBhcmFtCXBfdHJlZQkJCQl0aGUgdHJlZSB0byByZWluaXRpYWxpemUuCisgKiBAcGFyYW0JcF9udW1fbGVhZnNfaAkJdGhlIHdpZHRoIG9mIHRoZSBhcnJheSBvZiBsZWFmcyBvZiB0aGUgdHJlZQorICogQHBhcmFtCXBfbnVtX2xlYWZzX3YJCXRoZSBoZWlnaHQgb2YgdGhlIGFycmF5IG9mIGxlYWZzIG9mIHRoZSB0cmVlCisgKiBAcmV0dXJuCWEgbmV3IHRhZy10cmVlIGlmIHN1Y2Nlc3NmdWwsIE5VTEwgb3RoZXJ3aXNlCisqLworb3BqX3RndF90cmVlX3QgKm9wal90Z3RfaW5pdChvcGpfdGd0X3RyZWVfdCAqIHBfdHJlZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QSl9VSU5UMzIgIHBfbnVtX2xlYWZzX2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyICBwX251bV9sZWFmc192KTsKKy8qKgorRGVzdHJveSBhIHRhZy10cmVlLCBsaWJlcmF0aW5nIG1lbW9yeQorQHBhcmFtIHRyZWUgVGFnLXRyZWUgdG8gZGVzdHJveQorKi8KK3ZvaWQgb3BqX3RndF9kZXN0cm95KG9wal90Z3RfdHJlZV90ICp0cmVlKTsKKy8qKgorUmVzZXQgYSB0YWctdHJlZSAoc2V0IGFsbCBsZWF2ZXMgdG8gMCkKK0BwYXJhbSB0cmVlIFRhZy10cmVlIHRvIHJlc2V0CisqLwordm9pZCBvcGpfdGd0X3Jlc2V0KG9wal90Z3RfdHJlZV90ICp0cmVlKTsKKy8qKgorU2V0IHRoZSB2YWx1ZSBvZiBhIGxlYWYgb2YgYSB0YWctdHJlZQorQHBhcmFtIHRyZWUgVGFnLXRyZWUgdG8gbW9kaWZ5CitAcGFyYW0gbGVhZm5vIE51bWJlciB0aGF0IGlkZW50aWZpZXMgdGhlIGxlYWYgdG8gbW9kaWZ5CitAcGFyYW0gdmFsdWUgTmV3IHZhbHVlIG9mIHRoZSBsZWFmCisqLwordm9pZCBvcGpfdGd0X3NldHZhbHVlKG9wal90Z3RfdHJlZV90ICp0cmVlLCAKKyAgICAgICAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIGxlYWZubywgCisgICAgICAgICAgICAgICAgICAgICAgT1BKX0lOVDMyIHZhbHVlKTsKKy8qKgorRW5jb2RlIHRoZSB2YWx1ZSBvZiBhIGxlYWYgb2YgdGhlIHRhZy10cmVlIHVwIHRvIGEgZ2l2ZW4gdGhyZXNob2xkCitAcGFyYW0gYmlvIFBvaW50ZXIgdG8gYSBCSU8gaGFuZGxlCitAcGFyYW0gdHJlZSBUYWctdHJlZSB0byBtb2RpZnkKK0BwYXJhbSBsZWFmbm8gTnVtYmVyIHRoYXQgaWRlbnRpZmllcyB0aGUgbGVhZiB0byBlbmNvZGUKK0BwYXJhbSB0aHJlc2hvbGQgVGhyZXNob2xkIHRvIHVzZSB3aGVuIGVuY29kaW5nIHZhbHVlIG9mIHRoZSBsZWFmCisqLwordm9pZCBvcGpfdGd0X2VuY29kZShvcGpfYmlvX3QgKmJpbywgCisgICAgICAgICAgICAgICAgICAgIG9wal90Z3RfdHJlZV90ICp0cmVlLCAKKyAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBsZWFmbm8sIAorICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgdGhyZXNob2xkKTsKKy8qKgorRGVjb2RlIHRoZSB2YWx1ZSBvZiBhIGxlYWYgb2YgdGhlIHRhZy10cmVlIHVwIHRvIGEgZ2l2ZW4gdGhyZXNob2xkCitAcGFyYW0gYmlvIFBvaW50ZXIgdG8gYSBCSU8gaGFuZGxlCitAcGFyYW0gdHJlZSBUYWctdHJlZSB0byBkZWNvZGUKK0BwYXJhbSBsZWFmbm8gTnVtYmVyIHRoYXQgaWRlbnRpZmllcyB0aGUgbGVhZiB0byBkZWNvZGUKK0BwYXJhbSB0aHJlc2hvbGQgVGhyZXNob2xkIHRvIHVzZSB3aGVuIGRlY29kaW5nIHZhbHVlIG9mIHRoZSBsZWFmCitAcmV0dXJuIFJldHVybnMgMSBpZiB0aGUgbm9kZSdzIHZhbHVlIDwgdGhyZXNob2xkLCByZXR1cm5zIDAgb3RoZXJ3aXNlCisqLworT1BKX1VJTlQzMiBvcGpfdGd0X2RlY29kZShvcGpfYmlvX3QgKmJpbywgCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9wal90Z3RfdHJlZV90ICp0cmVlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgT1BKX1VJTlQzMiBsZWFmbm8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICBPUEpfSU5UMzIgdGhyZXNob2xkKTsKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKkB9Ki8KKworLypAfSovCisKKyNlbmRpZiAvKiBfX1RHVF9IICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9iaW8uYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2Jpby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZWQ2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9iaW8uYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL2xpYm9wZW5qcGVnMjAvYmlvLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9jaW8uYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2Npby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNzBlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9jaW8uYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL2xpYm9wZW5qcGVnMjAvY2lvLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9kd3QuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2R3dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZDQyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9kd3QuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL2xpYm9wZW5qcGVnMjAvZHd0LmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9ldmVudC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfZXZlbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2Q5YmNhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfZXZlbnQuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL2xpYm9wZW5qcGVnMjAvZXZlbnQuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2Z1bmN0aW9uX2xpc3QuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2Z1bmN0aW9uX2xpc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTliMTQxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfZnVuY3Rpb25fbGlzdC5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC9mdW5jdGlvbl9saXN0LmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9pbWFnZS5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfaW1hZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmIwZmFhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfaW1hZ2UuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL2xpYm9wZW5qcGVnMjAvaW1hZ2UuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2ludmVydC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfaW52ZXJ0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFhODlhYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2ludmVydC5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC9pbnZlcnQuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2oyay5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfajJrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNhZTZkNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2oyay5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC9qMmsuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2oya19saWIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2oya19saWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWE2MmEwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfajJrX2xpYi5jCkBAIC0wLDAgKzEsOSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2pwdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfanB0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFhNjJhMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X2pwdC5jCkBAIC0wLDAgKzEsOSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X21jdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfbWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhMzg2MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X21jdC5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC9tY3QuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X21xYy5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfbXFjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRhODUxZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X21xYy5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC9tcWMuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X29wZW5qcGVnLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9vcGVuanBlZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZGRiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9vcGVuanBlZy5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC9vcGVuanBlZy5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfb3BlbmpwZWdfanAyLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9vcGVuanBlZ19qcDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjcxZGQwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfb3BlbmpwZWdfanAyLmMKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlICIuLi9saWJvcGVuanBlZzIwL2pwMi5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfb3BqX2Nsb2NrLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9vcGpfY2xvY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWVkNDcxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfb3BqX2Nsb2NrLmMKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlICIuLi9saWJvcGVuanBlZzIwL29wal9jbG9jay5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfcGkuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X3BpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0YTEyMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X3BpLmMKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlICIuLi9saWJvcGVuanBlZzIwL3BpLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9yYXcuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X3Jhdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NzVkZjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF9yYXcuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL2xpYm9wZW5qcGVnMjAvcmF3LmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF90MS5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfdDEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGE4YWUyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfdDEuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL2xpYm9wZW5qcGVnMjAvdDEuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X3QxX2dlbmVyYXRlX2x1dHMuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X3QxX2dlbmVyYXRlX2x1dHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGI4ODkwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfdDFfZ2VuZXJhdGVfbHV0cy5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC90MV9nZW5lcmF0ZV9sdXRzLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X2xpYm9wZW5qcGVnL3NyYy9meF90Mi5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfdDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTVjYTUwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfdDIuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL2xpYm9wZW5qcGVnMjAvdDIuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X3RjZC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfdGNkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ1NzU3MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X3RjZC5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC90Y2QuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X3RndC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF9saWJvcGVuanBlZy9zcmMvZnhfdGd0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgzZGM1NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfbGlib3BlbmpwZWcvc3JjL2Z4X3RndC5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vbGlib3BlbmpwZWcyMC90Z3QuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9pbmNsdWRlL2Z4X3psaWIuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9pbmNsdWRlL2Z4X3psaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTU0ODFjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL2luY2x1ZGUvZnhfemxpYi5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vemxpYl92MTI4L3psaWIuaCIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl9hZGxlcjMyLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfYWRsZXIzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YTM1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfYWRsZXIzMi5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vemxpYl92MTI4L2Z4X3psaWJfYWRsZXIzMi5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2NvbXByZXNzLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfY29tcHJlc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODhhNjc1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2NvbXByZXNzLmMKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlICIuLi96bGliX3YxMjgvZnhfemxpYl9jb21wcmVzcy5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2NyYzMyLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfY3JjMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2Y3NDUzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2NyYzMyLmMKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlICIuLi96bGliX3YxMjgvZnhfemxpYl9jcmMzMi5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2RlZmxhdGUuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl9kZWZsYXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc3Nzc5YQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl9kZWZsYXRlLmMKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlICIuLi96bGliX3YxMjgvZnhfemxpYl9kZWZsYXRlLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfZ3pjbG9zZS5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2d6Y2xvc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjZjYmMyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2d6Y2xvc2UuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL3psaWJfdjEyOC9nemNsb3NlLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfZ3psaWIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl9nemxpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlOTU0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfZ3psaWIuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL3psaWJfdjEyOC9nemxpYi5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2d6cmVhZC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2d6cmVhZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMTRmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfZ3pyZWFkLmMKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlICIuLi96bGliX3YxMjgvZ3pyZWFkLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfZ3p3cml0ZS5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2d6d3JpdGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTM3ZmVkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2d6d3JpdGUuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL3psaWJfdjEyOC9nendyaXRlLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfaW5mYmFjay5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2luZmJhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2JjNzgxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2luZmJhY2suYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL3psaWJfdjEyOC9meF96bGliX2luZmJhY2suYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl9pbmZmYXN0LmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfaW5mZmFzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ODI4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfaW5mZmFzdC5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vemxpYl92MTI4L2Z4X3psaWJfaW5mZmFzdC5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX2luZmxhdGUuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl9pbmZsYXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI4YTM4OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl9pbmZsYXRlLmMKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKyNpbmNsdWRlICIuLi96bGliX3YxMjgvZnhfemxpYl9pbmZsYXRlLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfaW5mdHJlZXMuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl9pbmZ0cmVlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYmUzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfaW5mdHJlZXMuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL3psaWJfdjEyOC9meF96bGliX2luZnRyZWVzLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfdHJlZXMuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl90cmVlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZTE3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfdHJlZXMuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL3psaWJfdjEyOC9meF96bGliX3RyZWVzLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvc3JjL2Z4X3psaWJfdW5jb21wci5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX3VuY29tcHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTFjYjZmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX3VuY29tcHIuYwpAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyNlbmRpZgorI2luY2x1ZGUgIi4uL3psaWJfdjEyOC9meF96bGliX3VuY29tcHIuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl96dXRpbC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3NyYy9meF96bGliX3p1dGlsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk3ZWRkNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi9zcmMvZnhfemxpYl96dXRpbC5jCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisjaW5jbHVkZSAiLi4vemxpYl92MTI4L2Z4X3psaWJfenV0aWwuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvY3JjMzIuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvY3JjMzIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTBjNzc4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9jcmMzMi5oCkBAIC0wLDAgKzEsNDQxIEBACisvKiBjcmMzMi5oIC0tIHRhYmxlcyBmb3IgcmFwaWQgQ1JDIGNhbGN1bGF0aW9uCisgKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjcmMzMi5jCisgKi8KKworbG9jYWwgY29uc3Qgel9jcmNfdCBGQVIgY3JjX3RhYmxlW1RCTFNdWzI1Nl0gPQoreworICB7CisgICAgMHgwMDAwMDAwMFVMLCAweDc3MDczMDk2VUwsIDB4ZWUwZTYxMmNVTCwgMHg5OTA5NTFiYVVMLCAweDA3NmRjNDE5VUwsCisgICAgMHg3MDZhZjQ4ZlVMLCAweGU5NjNhNTM1VUwsIDB4OWU2NDk1YTNVTCwgMHgwZWRiODgzMlVMLCAweDc5ZGNiOGE0VUwsCisgICAgMHhlMGQ1ZTkxZVVMLCAweDk3ZDJkOTg4VUwsIDB4MDliNjRjMmJVTCwgMHg3ZWIxN2NiZFVMLCAweGU3YjgyZDA3VUwsCisgICAgMHg5MGJmMWQ5MVVMLCAweDFkYjcxMDY0VUwsIDB4NmFiMDIwZjJVTCwgMHhmM2I5NzE0OFVMLCAweDg0YmU0MWRlVUwsCisgICAgMHgxYWRhZDQ3ZFVMLCAweDZkZGRlNGViVUwsIDB4ZjRkNGI1NTFVTCwgMHg4M2QzODVjN1VMLCAweDEzNmM5ODU2VUwsCisgICAgMHg2NDZiYThjMFVMLCAweGZkNjJmOTdhVUwsIDB4OGE2NWM5ZWNVTCwgMHgxNDAxNWM0ZlVMLCAweDYzMDY2Y2Q5VUwsCisgICAgMHhmYTBmM2Q2M1VMLCAweDhkMDgwZGY1VUwsIDB4M2I2ZTIwYzhVTCwgMHg0YzY5MTA1ZVVMLCAweGQ1NjA0MWU0VUwsCisgICAgMHhhMjY3NzE3MlVMLCAweDNjMDNlNGQxVUwsIDB4NGIwNGQ0NDdVTCwgMHhkMjBkODVmZFVMLCAweGE1MGFiNTZiVUwsCisgICAgMHgzNWI1YThmYVVMLCAweDQyYjI5ODZjVUwsIDB4ZGJiYmM5ZDZVTCwgMHhhY2JjZjk0MFVMLCAweDMyZDg2Y2UzVUwsCisgICAgMHg0NWRmNWM3NVVMLCAweGRjZDYwZGNmVUwsIDB4YWJkMTNkNTlVTCwgMHgyNmQ5MzBhY1VMLCAweDUxZGUwMDNhVUwsCisgICAgMHhjOGQ3NTE4MFVMLCAweGJmZDA2MTE2VUwsIDB4MjFiNGY0YjVVTCwgMHg1NmIzYzQyM1VMLCAweGNmYmE5NTk5VUwsCisgICAgMHhiOGJkYTUwZlVMLCAweDI4MDJiODllVUwsIDB4NWYwNTg4MDhVTCwgMHhjNjBjZDliMlVMLCAweGIxMGJlOTI0VUwsCisgICAgMHgyZjZmN2M4N1VMLCAweDU4Njg0YzExVUwsIDB4YzE2MTFkYWJVTCwgMHhiNjY2MmQzZFVMLCAweDc2ZGM0MTkwVUwsCisgICAgMHgwMWRiNzEwNlVMLCAweDk4ZDIyMGJjVUwsIDB4ZWZkNTEwMmFVTCwgMHg3MWIxODU4OVVMLCAweDA2YjZiNTFmVUwsCisgICAgMHg5ZmJmZTRhNVVMLCAweGU4YjhkNDMzVUwsIDB4NzgwN2M5YTJVTCwgMHgwZjAwZjkzNFVMLCAweDk2MDlhODhlVUwsCisgICAgMHhlMTBlOTgxOFVMLCAweDdmNmEwZGJiVUwsIDB4MDg2ZDNkMmRVTCwgMHg5MTY0NmM5N1VMLCAweGU2NjM1YzAxVUwsCisgICAgMHg2YjZiNTFmNFVMLCAweDFjNmM2MTYyVUwsIDB4ODU2NTMwZDhVTCwgMHhmMjYyMDA0ZVVMLCAweDZjMDY5NWVkVUwsCisgICAgMHgxYjAxYTU3YlVMLCAweDgyMDhmNGMxVUwsIDB4ZjUwZmM0NTdVTCwgMHg2NWIwZDljNlVMLCAweDEyYjdlOTUwVUwsCisgICAgMHg4YmJlYjhlYVVMLCAweGZjYjk4ODdjVUwsIDB4NjJkZDFkZGZVTCwgMHgxNWRhMmQ0OVVMLCAweDhjZDM3Y2YzVUwsCisgICAgMHhmYmQ0NGM2NVVMLCAweDRkYjI2MTU4VUwsIDB4M2FiNTUxY2VVTCwgMHhhM2JjMDA3NFVMLCAweGQ0YmIzMGUyVUwsCisgICAgMHg0YWRmYTU0MVVMLCAweDNkZDg5NWQ3VUwsIDB4YTRkMWM0NmRVTCwgMHhkM2Q2ZjRmYlVMLCAweDQzNjllOTZhVUwsCisgICAgMHgzNDZlZDlmY1VMLCAweGFkNjc4ODQ2VUwsIDB4ZGE2MGI4ZDBVTCwgMHg0NDA0MmQ3M1VMLCAweDMzMDMxZGU1VUwsCisgICAgMHhhYTBhNGM1ZlVMLCAweGRkMGQ3Y2M5VUwsIDB4NTAwNTcxM2NVTCwgMHgyNzAyNDFhYVVMLCAweGJlMGIxMDEwVUwsCisgICAgMHhjOTBjMjA4NlVMLCAweDU3NjhiNTI1VUwsIDB4MjA2Zjg1YjNVTCwgMHhiOTY2ZDQwOVVMLCAweGNlNjFlNDlmVUwsCisgICAgMHg1ZWRlZjkwZVVMLCAweDI5ZDljOTk4VUwsIDB4YjBkMDk4MjJVTCwgMHhjN2Q3YThiNFVMLCAweDU5YjMzZDE3VUwsCisgICAgMHgyZWI0MGQ4MVVMLCAweGI3YmQ1YzNiVUwsIDB4YzBiYTZjYWRVTCwgMHhlZGI4ODMyMFVMLCAweDlhYmZiM2I2VUwsCisgICAgMHgwM2I2ZTIwY1VMLCAweDc0YjFkMjlhVUwsIDB4ZWFkNTQ3MzlVTCwgMHg5ZGQyNzdhZlVMLCAweDA0ZGIyNjE1VUwsCisgICAgMHg3M2RjMTY4M1VMLCAweGUzNjMwYjEyVUwsIDB4OTQ2NDNiODRVTCwgMHgwZDZkNmEzZVVMLCAweDdhNmE1YWE4VUwsCisgICAgMHhlNDBlY2YwYlVMLCAweDkzMDlmZjlkVUwsIDB4MGEwMGFlMjdVTCwgMHg3ZDA3OWViMVVMLCAweGYwMGY5MzQ0VUwsCisgICAgMHg4NzA4YTNkMlVMLCAweDFlMDFmMjY4VUwsIDB4NjkwNmMyZmVVTCwgMHhmNzYyNTc1ZFVMLCAweDgwNjU2N2NiVUwsCisgICAgMHgxOTZjMzY3MVVMLCAweDZlNmIwNmU3VUwsIDB4ZmVkNDFiNzZVTCwgMHg4OWQzMmJlMFVMLCAweDEwZGE3YTVhVUwsCisgICAgMHg2N2RkNGFjY1VMLCAweGY5YjlkZjZmVUwsIDB4OGViZWVmZjlVTCwgMHgxN2I3YmU0M1VMLCAweDYwYjA4ZWQ1VUwsCisgICAgMHhkNmQ2YTNlOFVMLCAweGExZDE5MzdlVUwsIDB4MzhkOGMyYzRVTCwgMHg0ZmRmZjI1MlVMLCAweGQxYmI2N2YxVUwsCisgICAgMHhhNmJjNTc2N1VMLCAweDNmYjUwNmRkVUwsIDB4NDhiMjM2NGJVTCwgMHhkODBkMmJkYVVMLCAweGFmMGExYjRjVUwsCisgICAgMHgzNjAzNGFmNlVMLCAweDQxMDQ3YTYwVUwsIDB4ZGY2MGVmYzNVTCwgMHhhODY3ZGY1NVVMLCAweDMxNmU4ZWVmVUwsCisgICAgMHg0NjY5YmU3OVVMLCAweGNiNjFiMzhjVUwsIDB4YmM2NjgzMWFVTCwgMHgyNTZmZDJhMFVMLCAweDUyNjhlMjM2VUwsCisgICAgMHhjYzBjNzc5NVVMLCAweGJiMGI0NzAzVUwsIDB4MjIwMjE2YjlVTCwgMHg1NTA1MjYyZlVMLCAweGM1YmEzYmJlVUwsCisgICAgMHhiMmJkMGIyOFVMLCAweDJiYjQ1YTkyVUwsIDB4NWNiMzZhMDRVTCwgMHhjMmQ3ZmZhN1VMLCAweGI1ZDBjZjMxVUwsCisgICAgMHgyY2Q5OWU4YlVMLCAweDViZGVhZTFkVUwsIDB4OWI2NGMyYjBVTCwgMHhlYzYzZjIyNlVMLCAweDc1NmFhMzljVUwsCisgICAgMHgwMjZkOTMwYVVMLCAweDljMDkwNmE5VUwsIDB4ZWIwZTM2M2ZVTCwgMHg3MjA3Njc4NVVMLCAweDA1MDA1NzEzVUwsCisgICAgMHg5NWJmNGE4MlVMLCAweGUyYjg3YTE0VUwsIDB4N2JiMTJiYWVVTCwgMHgwY2I2MWIzOFVMLCAweDkyZDI4ZTliVUwsCisgICAgMHhlNWQ1YmUwZFVMLCAweDdjZGNlZmI3VUwsIDB4MGJkYmRmMjFVTCwgMHg4NmQzZDJkNFVMLCAweGYxZDRlMjQyVUwsCisgICAgMHg2OGRkYjNmOFVMLCAweDFmZGE4MzZlVUwsIDB4ODFiZTE2Y2RVTCwgMHhmNmI5MjY1YlVMLCAweDZmYjA3N2UxVUwsCisgICAgMHgxOGI3NDc3N1VMLCAweDg4MDg1YWU2VUwsIDB4ZmYwZjZhNzBVTCwgMHg2NjA2M2JjYVVMLCAweDExMDEwYjVjVUwsCisgICAgMHg4ZjY1OWVmZlVMLCAweGY4NjJhZTY5VUwsIDB4NjE2YmZmZDNVTCwgMHgxNjZjY2Y0NVVMLCAweGEwMGFlMjc4VUwsCisgICAgMHhkNzBkZDJlZVVMLCAweDRlMDQ4MzU0VUwsIDB4MzkwM2IzYzJVTCwgMHhhNzY3MjY2MVVMLCAweGQwNjAxNmY3VUwsCisgICAgMHg0OTY5NDc0ZFVMLCAweDNlNmU3N2RiVUwsIDB4YWVkMTZhNGFVTCwgMHhkOWQ2NWFkY1VMLCAweDQwZGYwYjY2VUwsCisgICAgMHgzN2Q4M2JmMFVMLCAweGE5YmNhZTUzVUwsIDB4ZGViYjllYzVVTCwgMHg0N2IyY2Y3ZlVMLCAweDMwYjVmZmU5VUwsCisgICAgMHhiZGJkZjIxY1VMLCAweGNhYmFjMjhhVUwsIDB4NTNiMzkzMzBVTCwgMHgyNGI0YTNhNlVMLCAweGJhZDAzNjA1VUwsCisgICAgMHhjZGQ3MDY5M1VMLCAweDU0ZGU1NzI5VUwsIDB4MjNkOTY3YmZVTCwgMHhiMzY2N2EyZVVMLCAweGM0NjE0YWI4VUwsCisgICAgMHg1ZDY4MWIwMlVMLCAweDJhNmYyYjk0VUwsIDB4YjQwYmJlMzdVTCwgMHhjMzBjOGVhMVVMLCAweDVhMDVkZjFiVUwsCisgICAgMHgyZDAyZWY4ZFVMCisjaWZkZWYgQllGT1VSCisgIH0sCisgIHsKKyAgICAweDAwMDAwMDAwVUwsIDB4MTkxYjMxNDFVTCwgMHgzMjM2NjI4MlVMLCAweDJiMmQ1M2MzVUwsIDB4NjQ2Y2M1MDRVTCwKKyAgICAweDdkNzdmNDQ1VUwsIDB4NTY1YWE3ODZVTCwgMHg0ZjQxOTZjN1VMLCAweGM4ZDk4YTA4VUwsIDB4ZDFjMmJiNDlVTCwKKyAgICAweGZhZWZlODhhVUwsIDB4ZTNmNGQ5Y2JVTCwgMHhhY2I1NGYwY1VMLCAweGI1YWU3ZTRkVUwsIDB4OWU4MzJkOGVVTCwKKyAgICAweDg3OTgxY2NmVUwsIDB4NGFjMjEyNTFVTCwgMHg1M2Q5MjMxMFVMLCAweDc4ZjQ3MGQzVUwsIDB4NjFlZjQxOTJVTCwKKyAgICAweDJlYWVkNzU1VUwsIDB4MzdiNWU2MTRVTCwgMHgxYzk4YjVkN1VMLCAweDA1ODM4NDk2VUwsIDB4ODIxYjk4NTlVTCwKKyAgICAweDliMDBhOTE4VUwsIDB4YjAyZGZhZGJVTCwgMHhhOTM2Y2I5YVVMLCAweGU2Nzc1ZDVkVUwsIDB4ZmY2YzZjMWNVTCwKKyAgICAweGQ0NDEzZmRmVUwsIDB4Y2Q1YTBlOWVVTCwgMHg5NTg0MjRhMlVMLCAweDhjOWYxNWUzVUwsIDB4YTdiMjQ2MjBVTCwKKyAgICAweGJlYTk3NzYxVUwsIDB4ZjFlOGUxYTZVTCwgMHhlOGYzZDBlN1VMLCAweGMzZGU4MzI0VUwsIDB4ZGFjNWIyNjVVTCwKKyAgICAweDVkNWRhZWFhVUwsIDB4NDQ0NjlmZWJVTCwgMHg2ZjZiY2MyOFVMLCAweDc2NzBmZDY5VUwsIDB4MzkzMTZiYWVVTCwKKyAgICAweDIwMmE1YWVmVUwsIDB4MGIwNzA5MmNVTCwgMHgxMjFjMzg2ZFVMLCAweGRmNDYzNmYzVUwsIDB4YzY1ZDA3YjJVTCwKKyAgICAweGVkNzA1NDcxVUwsIDB4ZjQ2YjY1MzBVTCwgMHhiYjJhZjNmN1VMLCAweGEyMzFjMmI2VUwsIDB4ODkxYzkxNzVVTCwKKyAgICAweDkwMDdhMDM0VUwsIDB4MTc5ZmJjZmJVTCwgMHgwZTg0OGRiYVVMLCAweDI1YTlkZTc5VUwsIDB4M2NiMmVmMzhVTCwKKyAgICAweDczZjM3OWZmVUwsIDB4NmFlODQ4YmVVTCwgMHg0MWM1MWI3ZFVMLCAweDU4ZGUyYTNjVUwsIDB4ZjA3OTRmMDVVTCwKKyAgICAweGU5NjI3ZTQ0VUwsIDB4YzI0ZjJkODdVTCwgMHhkYjU0MWNjNlVMLCAweDk0MTU4YTAxVUwsIDB4OGQwZWJiNDBVTCwKKyAgICAweGE2MjNlODgzVUwsIDB4YmYzOGQ5YzJVTCwgMHgzOGEwYzUwZFVMLCAweDIxYmJmNDRjVUwsIDB4MGE5NmE3OGZVTCwKKyAgICAweDEzOGQ5NmNlVUwsIDB4NWNjYzAwMDlVTCwgMHg0NWQ3MzE0OFVMLCAweDZlZmE2MjhiVUwsIDB4NzdlMTUzY2FVTCwKKyAgICAweGJhYmI1ZDU0VUwsIDB4YTNhMDZjMTVVTCwgMHg4ODhkM2ZkNlVMLCAweDkxOTYwZTk3VUwsIDB4ZGVkNzk4NTBVTCwKKyAgICAweGM3Y2NhOTExVUwsIDB4ZWNlMWZhZDJVTCwgMHhmNWZhY2I5M1VMLCAweDcyNjJkNzVjVUwsIDB4NmI3OWU2MWRVTCwKKyAgICAweDQwNTRiNWRlVUwsIDB4NTk0Zjg0OWZVTCwgMHgxNjBlMTI1OFVMLCAweDBmMTUyMzE5VUwsIDB4MjQzODcwZGFVTCwKKyAgICAweDNkMjM0MTliVUwsIDB4NjVmZDZiYTdVTCwgMHg3Y2U2NWFlNlVMLCAweDU3Y2IwOTI1VUwsIDB4NGVkMDM4NjRVTCwKKyAgICAweDAxOTFhZWEzVUwsIDB4MTg4YTlmZTJVTCwgMHgzM2E3Y2MyMVVMLCAweDJhYmNmZDYwVUwsIDB4YWQyNGUxYWZVTCwKKyAgICAweGI0M2ZkMGVlVUwsIDB4OWYxMjgzMmRVTCwgMHg4NjA5YjI2Y1VMLCAweGM5NDgyNGFiVUwsIDB4ZDA1MzE1ZWFVTCwKKyAgICAweGZiN2U0NjI5VUwsIDB4ZTI2NTc3NjhVTCwgMHgyZjNmNzlmNlVMLCAweDM2MjQ0OGI3VUwsIDB4MWQwOTFiNzRVTCwKKyAgICAweDA0MTIyYTM1VUwsIDB4NGI1M2JjZjJVTCwgMHg1MjQ4OGRiM1VMLCAweDc5NjVkZTcwVUwsIDB4NjA3ZWVmMzFVTCwKKyAgICAweGU3ZTZmM2ZlVUwsIDB4ZmVmZGMyYmZVTCwgMHhkNWQwOTE3Y1VMLCAweGNjY2JhMDNkVUwsIDB4ODM4YTM2ZmFVTCwKKyAgICAweDlhOTEwN2JiVUwsIDB4YjFiYzU0NzhVTCwgMHhhOGE3NjUzOVVMLCAweDNiODM5ODRiVUwsIDB4MjI5OGE5MGFVTCwKKyAgICAweDA5YjVmYWM5VUwsIDB4MTBhZWNiODhVTCwgMHg1ZmVmNWQ0ZlVMLCAweDQ2ZjQ2YzBlVUwsIDB4NmRkOTNmY2RVTCwKKyAgICAweDc0YzIwZThjVUwsIDB4ZjM1YTEyNDNVTCwgMHhlYTQxMjMwMlVMLCAweGMxNmM3MGMxVUwsIDB4ZDg3NzQxODBVTCwKKyAgICAweDk3MzZkNzQ3VUwsIDB4OGUyZGU2MDZVTCwgMHhhNTAwYjVjNVVMLCAweGJjMWI4NDg0VUwsIDB4NzE0MThhMWFVTCwKKyAgICAweDY4NWFiYjViVUwsIDB4NDM3N2U4OThVTCwgMHg1YTZjZDlkOVVMLCAweDE1MmQ0ZjFlVUwsIDB4MGMzNjdlNWZVTCwKKyAgICAweDI3MWIyZDljVUwsIDB4M2UwMDFjZGRVTCwgMHhiOTk4MDAxMlVMLCAweGEwODMzMTUzVUwsIDB4OGJhZTYyOTBVTCwKKyAgICAweDkyYjU1M2QxVUwsIDB4ZGRmNGM1MTZVTCwgMHhjNGVmZjQ1N1VMLCAweGVmYzJhNzk0VUwsIDB4ZjZkOTk2ZDVVTCwKKyAgICAweGFlMDdiY2U5VUwsIDB4YjcxYzhkYThVTCwgMHg5YzMxZGU2YlVMLCAweDg1MmFlZjJhVUwsIDB4Y2E2Yjc5ZWRVTCwKKyAgICAweGQzNzA0OGFjVUwsIDB4Zjg1ZDFiNmZVTCwgMHhlMTQ2MmEyZVVMLCAweDY2ZGUzNmUxVUwsIDB4N2ZjNTA3YTBVTCwKKyAgICAweDU0ZTg1NDYzVUwsIDB4NGRmMzY1MjJVTCwgMHgwMmIyZjNlNVVMLCAweDFiYTljMmE0VUwsIDB4MzA4NDkxNjdVTCwKKyAgICAweDI5OWZhMDI2VUwsIDB4ZTRjNWFlYjhVTCwgMHhmZGRlOWZmOVVMLCAweGQ2ZjNjYzNhVUwsIDB4Y2ZlOGZkN2JVTCwKKyAgICAweDgwYTk2YmJjVUwsIDB4OTliMjVhZmRVTCwgMHhiMjlmMDkzZVVMLCAweGFiODQzODdmVUwsIDB4MmMxYzI0YjBVTCwKKyAgICAweDM1MDcxNWYxVUwsIDB4MWUyYTQ2MzJVTCwgMHgwNzMxNzc3M1VMLCAweDQ4NzBlMWI0VUwsIDB4NTE2YmQwZjVVTCwKKyAgICAweDdhNDY4MzM2VUwsIDB4NjM1ZGIyNzdVTCwgMHhjYmZhZDc0ZVVMLCAweGQyZTFlNjBmVUwsIDB4ZjljY2I1Y2NVTCwKKyAgICAweGUwZDc4NDhkVUwsIDB4YWY5NjEyNGFVTCwgMHhiNjhkMjMwYlVMLCAweDlkYTA3MGM4VUwsIDB4ODRiYjQxODlVTCwKKyAgICAweDAzMjM1ZDQ2VUwsIDB4MWEzODZjMDdVTCwgMHgzMTE1M2ZjNFVMLCAweDI4MGUwZTg1VUwsIDB4Njc0Zjk4NDJVTCwKKyAgICAweDdlNTRhOTAzVUwsIDB4NTU3OWZhYzBVTCwgMHg0YzYyY2I4MVVMLCAweDgxMzhjNTFmVUwsIDB4OTgyM2Y0NWVVTCwKKyAgICAweGIzMGVhNzlkVUwsIDB4YWExNTk2ZGNVTCwgMHhlNTU0MDAxYlVMLCAweGZjNGYzMTVhVUwsIDB4ZDc2MjYyOTlVTCwKKyAgICAweGNlNzk1M2Q4VUwsIDB4NDllMTRmMTdVTCwgMHg1MGZhN2U1NlVMLCAweDdiZDcyZDk1VUwsIDB4NjJjYzFjZDRVTCwKKyAgICAweDJkOGQ4YTEzVUwsIDB4MzQ5NmJiNTJVTCwgMHgxZmJiZTg5MVVMLCAweDA2YTBkOWQwVUwsIDB4NWU3ZWYzZWNVTCwKKyAgICAweDQ3NjVjMmFkVUwsIDB4NmM0ODkxNmVVTCwgMHg3NTUzYTAyZlVMLCAweDNhMTIzNmU4VUwsIDB4MjMwOTA3YTlVTCwKKyAgICAweDA4MjQ1NDZhVUwsIDB4MTEzZjY1MmJVTCwgMHg5NmE3NzllNFVMLCAweDhmYmM0OGE1VUwsIDB4YTQ5MTFiNjZVTCwKKyAgICAweGJkOGEyYTI3VUwsIDB4ZjJjYmJjZTBVTCwgMHhlYmQwOGRhMVVMLCAweGMwZmRkZTYyVUwsIDB4ZDllNmVmMjNVTCwKKyAgICAweDE0YmNlMWJkVUwsIDB4MGRhN2QwZmNVTCwgMHgyNjhhODMzZlVMLCAweDNmOTFiMjdlVUwsIDB4NzBkMDI0YjlVTCwKKyAgICAweDY5Y2IxNWY4VUwsIDB4NDJlNjQ2M2JVTCwgMHg1YmZkNzc3YVVMLCAweGRjNjU2YmI1VUwsIDB4YzU3ZTVhZjRVTCwKKyAgICAweGVlNTMwOTM3VUwsIDB4Zjc0ODM4NzZVTCwgMHhiODA5YWViMVVMLCAweGExMTI5ZmYwVUwsIDB4OGEzZmNjMzNVTCwKKyAgICAweDkzMjRmZDcyVUwKKyAgfSwKKyAgeworICAgIDB4MDAwMDAwMDBVTCwgMHgwMWMyNmEzN1VMLCAweDAzODRkNDZlVUwsIDB4MDI0NmJlNTlVTCwgMHgwNzA5YThkY1VMLAorICAgIDB4MDZjYmMyZWJVTCwgMHgwNDhkN2NiMlVMLCAweDA1NGYxNjg1VUwsIDB4MGUxMzUxYjhVTCwgMHgwZmQxM2I4ZlVMLAorICAgIDB4MGQ5Nzg1ZDZVTCwgMHgwYzU1ZWZlMVVMLCAweDA5MWFmOTY0VUwsIDB4MDhkODkzNTNVTCwgMHgwYTllMmQwYVVMLAorICAgIDB4MGI1YzQ3M2RVTCwgMHgxYzI2YTM3MFVMLCAweDFkZTRjOTQ3VUwsIDB4MWZhMjc3MWVVTCwgMHgxZTYwMWQyOVVMLAorICAgIDB4MWIyZjBiYWNVTCwgMHgxYWVkNjE5YlVMLCAweDE4YWJkZmMyVUwsIDB4MTk2OWI1ZjVVTCwgMHgxMjM1ZjJjOFVMLAorICAgIDB4MTNmNzk4ZmZVTCwgMHgxMWIxMjZhNlVMLCAweDEwNzM0YzkxVUwsIDB4MTUzYzVhMTRVTCwgMHgxNGZlMzAyM1VMLAorICAgIDB4MTZiODhlN2FVTCwgMHgxNzdhZTQ0ZFVMLCAweDM4NGQ0NmUwVUwsIDB4Mzk4ZjJjZDdVTCwgMHgzYmM5OTI4ZVVMLAorICAgIDB4M2EwYmY4YjlVTCwgMHgzZjQ0ZWUzY1VMLCAweDNlODY4NDBiVUwsIDB4M2NjMDNhNTJVTCwgMHgzZDAyNTA2NVVMLAorICAgIDB4MzY1ZTE3NThVTCwgMHgzNzljN2Q2ZlVMLCAweDM1ZGFjMzM2VUwsIDB4MzQxOGE5MDFVTCwgMHgzMTU3YmY4NFVMLAorICAgIDB4MzA5NWQ1YjNVTCwgMHgzMmQzNmJlYVVMLCAweDMzMTEwMWRkVUwsIDB4MjQ2YmU1OTBVTCwgMHgyNWE5OGZhN1VMLAorICAgIDB4MjdlZjMxZmVVTCwgMHgyNjJkNWJjOVVMLCAweDIzNjI0ZDRjVUwsIDB4MjJhMDI3N2JVTCwgMHgyMGU2OTkyMlVMLAorICAgIDB4MjEyNGYzMTVVTCwgMHgyYTc4YjQyOFVMLCAweDJiYmFkZTFmVUwsIDB4MjlmYzYwNDZVTCwgMHgyODNlMGE3MVVMLAorICAgIDB4MmQ3MTFjZjRVTCwgMHgyY2IzNzZjM1VMLCAweDJlZjVjODlhVUwsIDB4MmYzN2EyYWRVTCwgMHg3MDlhOGRjMFVMLAorICAgIDB4NzE1OGU3ZjdVTCwgMHg3MzFlNTlhZVVMLCAweDcyZGMzMzk5VUwsIDB4Nzc5MzI1MWNVTCwgMHg3NjUxNGYyYlVMLAorICAgIDB4NzQxN2YxNzJVTCwgMHg3NWQ1OWI0NVVMLCAweDdlODlkYzc4VUwsIDB4N2Y0YmI2NGZVTCwgMHg3ZDBkMDgxNlVMLAorICAgIDB4N2NjZjYyMjFVTCwgMHg3OTgwNzRhNFVMLCAweDc4NDIxZTkzVUwsIDB4N2EwNGEwY2FVTCwgMHg3YmM2Y2FmZFVMLAorICAgIDB4NmNiYzJlYjBVTCwgMHg2ZDdlNDQ4N1VMLCAweDZmMzhmYWRlVUwsIDB4NmVmYTkwZTlVTCwgMHg2YmI1ODY2Y1VMLAorICAgIDB4NmE3N2VjNWJVTCwgMHg2ODMxNTIwMlVMLCAweDY5ZjMzODM1VUwsIDB4NjJhZjdmMDhVTCwgMHg2MzZkMTUzZlVMLAorICAgIDB4NjEyYmFiNjZVTCwgMHg2MGU5YzE1MVVMLCAweDY1YTZkN2Q0VUwsIDB4NjQ2NGJkZTNVTCwgMHg2NjIyMDNiYVVMLAorICAgIDB4NjdlMDY5OGRVTCwgMHg0OGQ3Y2IyMFVMLCAweDQ5MTVhMTE3VUwsIDB4NGI1MzFmNGVVTCwgMHg0YTkxNzU3OVVMLAorICAgIDB4NGZkZTYzZmNVTCwgMHg0ZTFjMDljYlVMLCAweDRjNWFiNzkyVUwsIDB4NGQ5OGRkYTVVTCwgMHg0NmM0OWE5OFVMLAorICAgIDB4NDcwNmYwYWZVTCwgMHg0NTQwNGVmNlVMLCAweDQ0ODIyNGMxVUwsIDB4NDFjZDMyNDRVTCwgMHg0MDBmNTg3M1VMLAorICAgIDB4NDI0OWU2MmFVTCwgMHg0MzhiOGMxZFVMLCAweDU0ZjE2ODUwVUwsIDB4NTUzMzAyNjdVTCwgMHg1Nzc1YmMzZVVMLAorICAgIDB4NTZiN2Q2MDlVTCwgMHg1M2Y4YzA4Y1VMLCAweDUyM2FhYWJiVUwsIDB4NTA3YzE0ZTJVTCwgMHg1MWJlN2VkNVVMLAorICAgIDB4NWFlMjM5ZThVTCwgMHg1YjIwNTNkZlVMLCAweDU5NjZlZDg2VUwsIDB4NThhNDg3YjFVTCwgMHg1ZGViOTEzNFVMLAorICAgIDB4NWMyOWZiMDNVTCwgMHg1ZTZmNDU1YVVMLCAweDVmYWQyZjZkVUwsIDB4ZTEzNTFiODBVTCwgMHhlMGY3NzFiN1VMLAorICAgIDB4ZTJiMWNmZWVVTCwgMHhlMzczYTVkOVVMLCAweGU2M2NiMzVjVUwsIDB4ZTdmZWQ5NmJVTCwgMHhlNWI4NjczMlVMLAorICAgIDB4ZTQ3YTBkMDVVTCwgMHhlZjI2NGEzOFVMLCAweGVlZTQyMDBmVUwsIDB4ZWNhMjllNTZVTCwgMHhlZDYwZjQ2MVVMLAorICAgIDB4ZTgyZmUyZTRVTCwgMHhlOWVkODhkM1VMLCAweGViYWIzNjhhVUwsIDB4ZWE2OTVjYmRVTCwgMHhmZDEzYjhmMFVMLAorICAgIDB4ZmNkMWQyYzdVTCwgMHhmZTk3NmM5ZVVMLCAweGZmNTUwNmE5VUwsIDB4ZmExYTEwMmNVTCwgMHhmYmQ4N2ExYlVMLAorICAgIDB4Zjk5ZWM0NDJVTCwgMHhmODVjYWU3NVVMLCAweGYzMDBlOTQ4VUwsIDB4ZjJjMjgzN2ZVTCwgMHhmMDg0M2QyNlVMLAorICAgIDB4ZjE0NjU3MTFVTCwgMHhmNDA5NDE5NFVMLCAweGY1Y2IyYmEzVUwsIDB4Zjc4ZDk1ZmFVTCwgMHhmNjRmZmZjZFVMLAorICAgIDB4ZDk3ODVkNjBVTCwgMHhkOGJhMzc1N1VMLCAweGRhZmM4OTBlVUwsIDB4ZGIzZWUzMzlVTCwgMHhkZTcxZjViY1VMLAorICAgIDB4ZGZiMzlmOGJVTCwgMHhkZGY1MjFkMlVMLCAweGRjMzc0YmU1VUwsIDB4ZDc2YjBjZDhVTCwgMHhkNmE5NjZlZlVMLAorICAgIDB4ZDRlZmQ4YjZVTCwgMHhkNTJkYjI4MVVMLCAweGQwNjJhNDA0VUwsIDB4ZDFhMGNlMzNVTCwgMHhkM2U2NzA2YVVMLAorICAgIDB4ZDIyNDFhNWRVTCwgMHhjNTVlZmUxMFVMLCAweGM0OWM5NDI3VUwsIDB4YzZkYTJhN2VVTCwgMHhjNzE4NDA0OVVMLAorICAgIDB4YzI1NzU2Y2NVTCwgMHhjMzk1M2NmYlVMLCAweGMxZDM4MmEyVUwsIDB4YzAxMWU4OTVVTCwgMHhjYjRkYWZhOFVMLAorICAgIDB4Y2E4ZmM1OWZVTCwgMHhjOGM5N2JjNlVMLCAweGM5MGIxMWYxVUwsIDB4Y2M0NDA3NzRVTCwgMHhjZDg2NmQ0M1VMLAorICAgIDB4Y2ZjMGQzMWFVTCwgMHhjZTAyYjkyZFVMLCAweDkxYWY5NjQwVUwsIDB4OTA2ZGZjNzdVTCwgMHg5MjJiNDIyZVVMLAorICAgIDB4OTNlOTI4MTlVTCwgMHg5NmE2M2U5Y1VMLCAweDk3NjQ1NGFiVUwsIDB4OTUyMmVhZjJVTCwgMHg5NGUwODBjNVVMLAorICAgIDB4OWZiY2M3ZjhVTCwgMHg5ZTdlYWRjZlVMLCAweDljMzgxMzk2VUwsIDB4OWRmYTc5YTFVTCwgMHg5OGI1NmYyNFVMLAorICAgIDB4OTk3NzA1MTNVTCwgMHg5YjMxYmI0YVVMLCAweDlhZjNkMTdkVUwsIDB4OGQ4OTM1MzBVTCwgMHg4YzRiNWYwN1VMLAorICAgIDB4OGUwZGUxNWVVTCwgMHg4ZmNmOGI2OVVMLCAweDhhODA5ZGVjVUwsIDB4OGI0MmY3ZGJVTCwgMHg4OTA0NDk4MlVMLAorICAgIDB4ODhjNjIzYjVVTCwgMHg4MzlhNjQ4OFVMLCAweDgyNTgwZWJmVUwsIDB4ODAxZWIwZTZVTCwgMHg4MWRjZGFkMVVMLAorICAgIDB4ODQ5M2NjNTRVTCwgMHg4NTUxYTY2M1VMLCAweDg3MTcxODNhVUwsIDB4ODZkNTcyMGRVTCwgMHhhOWUyZDBhMFVMLAorICAgIDB4YTgyMGJhOTdVTCwgMHhhYTY2MDRjZVVMLCAweGFiYTQ2ZWY5VUwsIDB4YWVlYjc4N2NVTCwgMHhhZjI5MTI0YlVMLAorICAgIDB4YWQ2ZmFjMTJVTCwgMHhhY2FkYzYyNVVMLCAweGE3ZjE4MTE4VUwsIDB4YTYzM2ViMmZVTCwgMHhhNDc1NTU3NlVMLAorICAgIDB4YTViNzNmNDFVTCwgMHhhMGY4MjljNFVMLCAweGExM2E0M2YzVUwsIDB4YTM3Y2ZkYWFVTCwgMHhhMmJlOTc5ZFVMLAorICAgIDB4YjVjNDczZDBVTCwgMHhiNDA2MTllN1VMLCAweGI2NDBhN2JlVUwsIDB4Yjc4MmNkODlVTCwgMHhiMmNkZGIwY1VMLAorICAgIDB4YjMwZmIxM2JVTCwgMHhiMTQ5MGY2MlVMLCAweGIwOGI2NTU1VUwsIDB4YmJkNzIyNjhVTCwgMHhiYTE1NDg1ZlVMLAorICAgIDB4Yjg1M2Y2MDZVTCwgMHhiOTkxOWMzMVVMLCAweGJjZGU4YWI0VUwsIDB4YmQxY2UwODNVTCwgMHhiZjVhNWVkYVVMLAorICAgIDB4YmU5ODM0ZWRVTAorICB9LAorICB7CisgICAgMHgwMDAwMDAwMFVMLCAweGI4YmM2NzY1VUwsIDB4YWEwOWM4OGJVTCwgMHgxMmI1YWZlZVVMLCAweDhmNjI5NzU3VUwsCisgICAgMHgzN2RlZjAzMlVMLCAweDI1NmI1ZmRjVUwsIDB4OWRkNzM4YjlVTCwgMHhjNWI0MjhlZlVMLCAweDdkMDg0ZjhhVUwsCisgICAgMHg2ZmJkZTA2NFVMLCAweGQ3MDE4NzAxVUwsIDB4NGFkNmJmYjhVTCwgMHhmMjZhZDhkZFVMLCAweGUwZGY3NzMzVUwsCisgICAgMHg1ODYzMTA1NlVMLCAweDUwMTk1NzlmVUwsIDB4ZThhNTMwZmFVTCwgMHhmYTEwOWYxNFVMLCAweDQyYWNmODcxVUwsCisgICAgMHhkZjdiYzBjOFVMLCAweDY3YzdhN2FkVUwsIDB4NzU3MjA4NDNVTCwgMHhjZGNlNmYyNlVMLCAweDk1YWQ3ZjcwVUwsCisgICAgMHgyZDExMTgxNVVMLCAweDNmYTRiN2ZiVUwsIDB4ODcxOGQwOWVVTCwgMHgxYWNmZTgyN1VMLCAweGEyNzM4ZjQyVUwsCisgICAgMHhiMGM2MjBhY1VMLCAweDA4N2E0N2M5VUwsIDB4YTAzMmFmM2VVTCwgMHgxODhlYzg1YlVMLCAweDBhM2I2N2I1VUwsCisgICAgMHhiMjg3MDBkMFVMLCAweDJmNTAzODY5VUwsIDB4OTdlYzVmMGNVTCwgMHg4NTU5ZjBlMlVMLCAweDNkZTU5Nzg3VUwsCisgICAgMHg2NTg2ODdkMVVMLCAweGRkM2FlMGI0VUwsIDB4Y2Y4ZjRmNWFVTCwgMHg3NzMzMjgzZlVMLCAweGVhZTQxMDg2VUwsCisgICAgMHg1MjU4NzdlM1VMLCAweDQwZWRkODBkVUwsIDB4Zjg1MWJmNjhVTCwgMHhmMDJiZjhhMVVMLCAweDQ4OTc5ZmM0VUwsCisgICAgMHg1YTIyMzAyYVVMLCAweGUyOWU1NzRmVUwsIDB4N2Y0OTZmZjZVTCwgMHhjN2Y1MDg5M1VMLCAweGQ1NDBhNzdkVUwsCisgICAgMHg2ZGZjYzAxOFVMLCAweDM1OWZkMDRlVUwsIDB4OGQyM2I3MmJVTCwgMHg5Zjk2MThjNVVMLCAweDI3MmE3ZmEwVUwsCisgICAgMHhiYWZkNDcxOVVMLCAweDAyNDEyMDdjVUwsIDB4MTBmNDhmOTJVTCwgMHhhODQ4ZThmN1VMLCAweDliMTQ1ODNkVUwsCisgICAgMHgyM2E4M2Y1OFVMLCAweDMxMWQ5MGI2VUwsIDB4ODlhMWY3ZDNVTCwgMHgxNDc2Y2Y2YVVMLCAweGFjY2FhODBmVUwsCisgICAgMHhiZTdmMDdlMVVMLCAweDA2YzM2MDg0VUwsIDB4NWVhMDcwZDJVTCwgMHhlNjFjMTdiN1VMLCAweGY0YTliODU5VUwsCisgICAgMHg0YzE1ZGYzY1VMLCAweGQxYzJlNzg1VUwsIDB4Njk3ZTgwZTBVTCwgMHg3YmNiMmYwZVVMLCAweGMzNzc0ODZiVUwsCisgICAgMHhjYjBkMGZhMlVMLCAweDczYjE2OGM3VUwsIDB4NjEwNGM3MjlVTCwgMHhkOWI4YTA0Y1VMLCAweDQ0NmY5OGY1VUwsCisgICAgMHhmY2QzZmY5MFVMLCAweGVlNjY1MDdlVUwsIDB4NTZkYTM3MWJVTCwgMHgwZWI5Mjc0ZFVMLCAweGI2MDU0MDI4VUwsCisgICAgMHhhNGIwZWZjNlVMLCAweDFjMGM4OGEzVUwsIDB4ODFkYmIwMWFVTCwgMHgzOTY3ZDc3ZlVMLCAweDJiZDI3ODkxVUwsCisgICAgMHg5MzZlMWZmNFVMLCAweDNiMjZmNzAzVUwsIDB4ODM5YTkwNjZVTCwgMHg5MTJmM2Y4OFVMLCAweDI5OTM1OGVkVUwsCisgICAgMHhiNDQ0NjA1NFVMLCAweDBjZjgwNzMxVUwsIDB4MWU0ZGE4ZGZVTCwgMHhhNmYxY2ZiYVVMLCAweGZlOTJkZmVjVUwsCisgICAgMHg0NjJlYjg4OVVMLCAweDU0OWIxNzY3VUwsIDB4ZWMyNzcwMDJVTCwgMHg3MWYwNDhiYlVMLCAweGM5NGMyZmRlVUwsCisgICAgMHhkYmY5ODAzMFVMLCAweDYzNDVlNzU1VUwsIDB4NmIzZmEwOWNVTCwgMHhkMzgzYzdmOVVMLCAweGMxMzY2ODE3VUwsCisgICAgMHg3OThhMGY3MlVMLCAweGU0NWQzN2NiVUwsIDB4NWNlMTUwYWVVTCwgMHg0ZTU0ZmY0MFVMLCAweGY2ZTg5ODI1VUwsCisgICAgMHhhZThiODg3M1VMLCAweDE2MzdlZjE2VUwsIDB4MDQ4MjQwZjhVTCwgMHhiYzNlMjc5ZFVMLCAweDIxZTkxZjI0VUwsCisgICAgMHg5OTU1Nzg0MVVMLCAweDhiZTBkN2FmVUwsIDB4MzM1Y2IwY2FVTCwgMHhlZDU5YjYzYlVMLCAweDU1ZTVkMTVlVUwsCisgICAgMHg0NzUwN2ViMFVMLCAweGZmZWMxOWQ1VUwsIDB4NjIzYjIxNmNVTCwgMHhkYTg3NDYwOVVMLCAweGM4MzJlOWU3VUwsCisgICAgMHg3MDhlOGU4MlVMLCAweDI4ZWQ5ZWQ0VUwsIDB4OTA1MWY5YjFVTCwgMHg4MmU0NTY1ZlVMLCAweDNhNTgzMTNhVUwsCisgICAgMHhhNzhmMDk4M1VMLCAweDFmMzM2ZWU2VUwsIDB4MGQ4NmMxMDhVTCwgMHhiNTNhYTY2ZFVMLCAweGJkNDBlMWE0VUwsCisgICAgMHgwNWZjODZjMVVMLCAweDE3NDkyOTJmVUwsIDB4YWZmNTRlNGFVTCwgMHgzMjIyNzZmM1VMLCAweDhhOWUxMTk2VUwsCisgICAgMHg5ODJiYmU3OFVMLCAweDIwOTdkOTFkVUwsIDB4NzhmNGM5NGJVTCwgMHhjMDQ4YWUyZVVMLCAweGQyZmQwMWMwVUwsCisgICAgMHg2YTQxNjZhNVVMLCAweGY3OTY1ZTFjVUwsIDB4NGYyYTM5NzlVTCwgMHg1ZDlmOTY5N1VMLCAweGU1MjNmMWYyVUwsCisgICAgMHg0ZDZiMTkwNVVMLCAweGY1ZDc3ZTYwVUwsIDB4ZTc2MmQxOGVVTCwgMHg1ZmRlYjZlYlVMLCAweGMyMDk4ZTUyVUwsCisgICAgMHg3YWI1ZTkzN1VMLCAweDY4MDA0NmQ5VUwsIDB4ZDBiYzIxYmNVTCwgMHg4OGRmMzFlYVVMLCAweDMwNjM1NjhmVUwsCisgICAgMHgyMmQ2Zjk2MVVMLCAweDlhNmE5ZTA0VUwsIDB4MDdiZGE2YmRVTCwgMHhiZjAxYzFkOFVMLCAweGFkYjQ2ZTM2VUwsCisgICAgMHgxNTA4MDk1M1VMLCAweDFkNzI0ZTlhVUwsIDB4YTVjZTI5ZmZVTCwgMHhiNzdiODYxMVVMLCAweDBmYzdlMTc0VUwsCisgICAgMHg5MjEwZDljZFVMLCAweDJhYWNiZWE4VUwsIDB4MzgxOTExNDZVTCwgMHg4MGE1NzYyM1VMLCAweGQ4YzY2Njc1VUwsCisgICAgMHg2MDdhMDExMFVMLCAweDcyY2ZhZWZlVUwsIDB4Y2E3M2M5OWJVTCwgMHg1N2E0ZjEyMlVMLCAweGVmMTg5NjQ3VUwsCisgICAgMHhmZGFkMzlhOVVMLCAweDQ1MTE1ZWNjVUwsIDB4NzY0ZGVlMDZVTCwgMHhjZWYxODk2M1VMLCAweGRjNDQyNjhkVUwsCisgICAgMHg2NGY4NDFlOFVMLCAweGY5MmY3OTUxVUwsIDB4NDE5MzFlMzRVTCwgMHg1MzI2YjFkYVVMLCAweGViOWFkNmJmVUwsCisgICAgMHhiM2Y5YzZlOVVMLCAweDBiNDVhMThjVUwsIDB4MTlmMDBlNjJVTCwgMHhhMTRjNjkwN1VMLCAweDNjOWI1MWJlVUwsCisgICAgMHg4NDI3MzZkYlVMLCAweDk2OTI5OTM1VUwsIDB4MmUyZWZlNTBVTCwgMHgyNjU0Yjk5OVVMLCAweDllZThkZWZjVUwsCisgICAgMHg4YzVkNzExMlVMLCAweDM0ZTExNjc3VUwsIDB4YTkzNjJlY2VVTCwgMHgxMThhNDlhYlVMLCAweDAzM2ZlNjQ1VUwsCisgICAgMHhiYjgzODEyMFVMLCAweGUzZTA5MTc2VUwsIDB4NWI1Y2Y2MTNVTCwgMHg0OWU5NTlmZFVMLCAweGYxNTUzZTk4VUwsCisgICAgMHg2YzgyMDYyMVVMLCAweGQ0M2U2MTQ0VUwsIDB4YzY4YmNlYWFVTCwgMHg3ZTM3YTljZlVMLCAweGQ2N2Y0MTM4VUwsCisgICAgMHg2ZWMzMjY1ZFVMLCAweDdjNzY4OWIzVUwsIDB4YzRjYWVlZDZVTCwgMHg1OTFkZDY2ZlVMLCAweGUxYTFiMTBhVUwsCisgICAgMHhmMzE0MWVlNFVMLCAweDRiYTg3OTgxVUwsIDB4MTNjYjY5ZDdVTCwgMHhhYjc3MGViMlVMLCAweGI5YzJhMTVjVUwsCisgICAgMHgwMTdlYzYzOVVMLCAweDljYTlmZTgwVUwsIDB4MjQxNTk5ZTVVTCwgMHgzNmEwMzYwYlVMLCAweDhlMWM1MTZlVUwsCisgICAgMHg4NjY2MTZhN1VMLCAweDNlZGE3MWMyVUwsIDB4MmM2ZmRlMmNVTCwgMHg5NGQzYjk0OVVMLCAweDA5MDQ4MWYwVUwsCisgICAgMHhiMWI4ZTY5NVVMLCAweGEzMGQ0OTdiVUwsIDB4MWJiMTJlMWVVTCwgMHg0M2QyM2U0OFVMLCAweGZiNmU1OTJkVUwsCisgICAgMHhlOWRiZjZjM1VMLCAweDUxNjc5MWE2VUwsIDB4Y2NiMGE5MWZVTCwgMHg3NDBjY2U3YVVMLCAweDY2Yjk2MTk0VUwsCisgICAgMHhkZTA1MDZmMVVMCisgIH0sCisgIHsKKyAgICAweDAwMDAwMDAwVUwsIDB4OTYzMDA3NzdVTCwgMHgyYzYxMGVlZVVMLCAweGJhNTEwOTk5VUwsIDB4MTljNDZkMDdVTCwKKyAgICAweDhmZjQ2YTcwVUwsIDB4MzVhNTYzZTlVTCwgMHhhMzk1NjQ5ZVVMLCAweDMyODhkYjBlVUwsIDB4YTRiOGRjNzlVTCwKKyAgICAweDFlZTlkNWUwVUwsIDB4ODhkOWQyOTdVTCwgMHgyYjRjYjYwOVVMLCAweGJkN2NiMTdlVUwsIDB4MDcyZGI4ZTdVTCwKKyAgICAweDkxMWRiZjkwVUwsIDB4NjQxMGI3MWRVTCwgMHhmMjIwYjA2YVVMLCAweDQ4NzFiOWYzVUwsIDB4ZGU0MWJlODRVTCwKKyAgICAweDdkZDRkYTFhVUwsIDB4ZWJlNGRkNmRVTCwgMHg1MWI1ZDRmNFVMLCAweGM3ODVkMzgzVUwsIDB4NTY5ODZjMTNVTCwKKyAgICAweGMwYTg2YjY0VUwsIDB4N2FmOTYyZmRVTCwgMHhlY2M5NjU4YVVMLCAweDRmNWMwMTE0VUwsIDB4ZDk2YzA2NjNVTCwKKyAgICAweDYzM2QwZmZhVUwsIDB4ZjUwZDA4OGRVTCwgMHhjODIwNmUzYlVMLCAweDVlMTA2OTRjVUwsIDB4ZTQ0MTYwZDVVTCwKKyAgICAweDcyNzE2N2EyVUwsIDB4ZDFlNDAzM2NVTCwgMHg0N2Q0MDQ0YlVMLCAweGZkODUwZGQyVUwsIDB4NmJiNTBhYTVVTCwKKyAgICAweGZhYThiNTM1VUwsIDB4NmM5OGIyNDJVTCwgMHhkNmM5YmJkYlVMLCAweDQwZjliY2FjVUwsIDB4ZTM2Y2Q4MzJVTCwKKyAgICAweDc1NWNkZjQ1VUwsIDB4Y2YwZGQ2ZGNVTCwgMHg1OTNkZDFhYlVMLCAweGFjMzBkOTI2VUwsIDB4M2EwMGRlNTFVTCwKKyAgICAweDgwNTFkN2M4VUwsIDB4MTY2MWQwYmZVTCwgMHhiNWY0YjQyMVVMLCAweDIzYzRiMzU2VUwsIDB4OTk5NWJhY2ZVTCwKKyAgICAweDBmYTViZGI4VUwsIDB4OWViODAyMjhVTCwgMHgwODg4MDU1ZlVMLCAweGIyZDkwY2M2VUwsIDB4MjRlOTBiYjFVTCwKKyAgICAweDg3N2M2ZjJmVUwsIDB4MTE0YzY4NThVTCwgMHhhYjFkNjFjMVVMLCAweDNkMmQ2NmI2VUwsIDB4OTA0MWRjNzZVTCwKKyAgICAweDA2NzFkYjAxVUwsIDB4YmMyMGQyOThVTCwgMHgyYTEwZDVlZlVMLCAweDg5ODViMTcxVUwsIDB4MWZiNWI2MDZVTCwKKyAgICAweGE1ZTRiZjlmVUwsIDB4MzNkNGI4ZThVTCwgMHhhMmM5MDc3OFVMLCAweDM0ZjkwMDBmVUwsIDB4OGVhODA5OTZVTCwKKyAgICAweDE4OTgwZWUxVUwsIDB4YmIwZDZhN2ZVTCwgMHgyZDNkNmQwOFVMLCAweDk3NmM2NDkxVUwsIDB4MDE1YzYzZTZVTCwKKyAgICAweGY0NTE2YjZiVUwsIDB4NjI2MTZjMWNVTCwgMHhkODMwNjU4NVVMLCAweDRlMDA2MmYyVUwsIDB4ZWQ5NTA2NmNVTCwKKyAgICAweDdiYTUwMTFiVUwsIDB4YzFmNDA4ODJVTCwgMHg1N2M0MGZmNVVMLCAweGM2ZDliMDY1VUwsIDB4NTBlOWI3MTJVTCwKKyAgICAweGVhYjhiZThiVUwsIDB4N2M4OGI5ZmNVTCwgMHhkZjFkZGQ2MlVMLCAweDQ5MmRkYTE1VUwsIDB4ZjM3Y2QzOGNVTCwKKyAgICAweDY1NGNkNGZiVUwsIDB4NTg2MWIyNGRVTCwgMHhjZTUxYjUzYVVMLCAweDc0MDBiY2EzVUwsIDB4ZTIzMGJiZDRVTCwKKyAgICAweDQxYTVkZjRhVUwsIDB4ZDc5NWQ4M2RVTCwgMHg2ZGM0ZDFhNFVMLCAweGZiZjRkNmQzVUwsIDB4NmFlOTY5NDNVTCwKKyAgICAweGZjZDk2ZTM0VUwsIDB4NDY4ODY3YWRVTCwgMHhkMGI4NjBkYVVMLCAweDczMmQwNDQ0VUwsIDB4ZTUxZDAzMzNVTCwKKyAgICAweDVmNGMwYWFhVUwsIDB4Yzk3YzBkZGRVTCwgMHgzYzcxMDU1MFVMLCAweGFhNDEwMjI3VUwsIDB4MTAxMDBiYmVVTCwKKyAgICAweDg2MjAwY2M5VUwsIDB4MjViNTY4NTdVTCwgMHhiMzg1NmYyMFVMLCAweDA5ZDQ2NmI5VUwsIDB4OWZlNDYxY2VVTCwKKyAgICAweDBlZjlkZTVlVUwsIDB4OThjOWQ5MjlVTCwgMHgyMjk4ZDBiMFVMLCAweGI0YThkN2M3VUwsIDB4MTczZGIzNTlVTCwKKyAgICAweDgxMGRiNDJlVUwsIDB4M2I1Y2JkYjdVTCwgMHhhZDZjYmFjMFVMLCAweDIwODNiOGVkVUwsIDB4YjZiM2JmOWFVTCwKKyAgICAweDBjZTJiNjAzVUwsIDB4OWFkMmIxNzRVTCwgMHgzOTQ3ZDVlYVVMLCAweGFmNzdkMjlkVUwsIDB4MTUyNmRiMDRVTCwKKyAgICAweDgzMTZkYzczVUwsIDB4MTIwYjYzZTNVTCwgMHg4NDNiNjQ5NFVMLCAweDNlNmE2ZDBkVUwsIDB4YTg1YTZhN2FVTCwKKyAgICAweDBiY2YwZWU0VUwsIDB4OWRmZjA5OTNVTCwgMHgyN2FlMDAwYVVMLCAweGIxOWUwNzdkVUwsIDB4NDQ5MzBmZjBVTCwKKyAgICAweGQyYTMwODg3VUwsIDB4NjhmMjAxMWVVTCwgMHhmZWMyMDY2OVVMLCAweDVkNTc2MmY3VUwsIDB4Y2I2NzY1ODBVTCwKKyAgICAweDcxMzY2YzE5VUwsIDB4ZTcwNjZiNmVVTCwgMHg3NjFiZDRmZVVMLCAweGUwMmJkMzg5VUwsIDB4NWE3YWRhMTBVTCwKKyAgICAweGNjNGFkZDY3VUwsIDB4NmZkZmI5ZjlVTCwgMHhmOWVmYmU4ZVVMLCAweDQzYmViNzE3VUwsIDB4ZDU4ZWIwNjBVTCwKKyAgICAweGU4YTNkNmQ2VUwsIDB4N2U5M2QxYTFVTCwgMHhjNGMyZDgzOFVMLCAweDUyZjJkZjRmVUwsIDB4ZjE2N2JiZDFVTCwKKyAgICAweDY3NTdiY2E2VUwsIDB4ZGQwNmI1M2ZVTCwgMHg0YjM2YjI0OFVMLCAweGRhMmIwZGQ4VUwsIDB4NGMxYjBhYWZVTCwKKyAgICAweGY2NGEwMzM2VUwsIDB4NjA3YTA0NDFVTCwgMHhjM2VmNjBkZlVMLCAweDU1ZGY2N2E4VUwsIDB4ZWY4ZTZlMzFVTCwKKyAgICAweDc5YmU2OTQ2VUwsIDB4OGNiMzYxY2JVTCwgMHgxYTgzNjZiY1VMLCAweGEwZDI2ZjI1VUwsIDB4MzZlMjY4NTJVTCwKKyAgICAweDk1NzcwY2NjVUwsIDB4MDM0NzBiYmJVTCwgMHhiOTE2MDIyMlVMLCAweDJmMjYwNTU1VUwsIDB4YmUzYmJhYzVVTCwKKyAgICAweDI4MGJiZGIyVUwsIDB4OTI1YWI0MmJVTCwgMHgwNDZhYjM1Y1VMLCAweGE3ZmZkN2MyVUwsIDB4MzFjZmQwYjVVTCwKKyAgICAweDhiOWVkOTJjVUwsIDB4MWRhZWRlNWJVTCwgMHhiMGMyNjQ5YlVMLCAweDI2ZjI2M2VjVUwsIDB4OWNhMzZhNzVVTCwKKyAgICAweDBhOTM2ZDAyVUwsIDB4YTkwNjA5OWNVTCwgMHgzZjM2MGVlYlVMLCAweDg1NjcwNzcyVUwsIDB4MTM1NzAwMDVVTCwKKyAgICAweDgyNGFiZjk1VUwsIDB4MTQ3YWI4ZTJVTCwgMHhhZTJiYjE3YlVMLCAweDM4MWJiNjBjVUwsIDB4OWI4ZWQyOTJVTCwKKyAgICAweDBkYmVkNWU1VUwsIDB4YjdlZmRjN2NVTCwgMHgyMWRmZGIwYlVMLCAweGQ0ZDJkMzg2VUwsIDB4NDJlMmQ0ZjFVTCwKKyAgICAweGY4YjNkZDY4VUwsIDB4NmU4M2RhMWZVTCwgMHhjZDE2YmU4MVVMLCAweDViMjZiOWY2VUwsIDB4ZTE3N2IwNmZVTCwKKyAgICAweDc3NDdiNzE4VUwsIDB4ZTY1YTA4ODhVTCwgMHg3MDZhMGZmZlVMLCAweGNhM2IwNjY2VUwsIDB4NWMwYjAxMTFVTCwKKyAgICAweGZmOWU2NThmVUwsIDB4NjlhZTYyZjhVTCwgMHhkM2ZmNmI2MVVMLCAweDQ1Y2Y2YzE2VUwsIDB4NzhlMjBhYTBVTCwKKyAgICAweGVlZDIwZGQ3VUwsIDB4NTQ4MzA0NGVVTCwgMHhjMmIzMDMzOVVMLCAweDYxMjY2N2E3VUwsIDB4ZjcxNjYwZDBVTCwKKyAgICAweDRkNDc2OTQ5VUwsIDB4ZGI3NzZlM2VVTCwgMHg0YTZhZDFhZVVMLCAweGRjNWFkNmQ5VUwsIDB4NjYwYmRmNDBVTCwKKyAgICAweGYwM2JkODM3VUwsIDB4NTNhZWJjYTlVTCwgMHhjNTllYmJkZVVMLCAweDdmY2ZiMjQ3VUwsIDB4ZTlmZmI1MzBVTCwKKyAgICAweDFjZjJiZGJkVUwsIDB4OGFjMmJhY2FVTCwgMHgzMDkzYjM1M1VMLCAweGE2YTNiNDI0VUwsIDB4MDUzNmQwYmFVTCwKKyAgICAweDkzMDZkN2NkVUwsIDB4Mjk1N2RlNTRVTCwgMHhiZjY3ZDkyM1VMLCAweDJlN2E2NmIzVUwsIDB4Yjg0YTYxYzRVTCwKKyAgICAweDAyMWI2ODVkVUwsIDB4OTQyYjZmMmFVTCwgMHgzN2JlMGJiNFVMLCAweGExOGUwY2MzVUwsIDB4MWJkZjA1NWFVTCwKKyAgICAweDhkZWYwMjJkVUwKKyAgfSwKKyAgeworICAgIDB4MDAwMDAwMDBVTCwgMHg0MTMxMWIxOVVMLCAweDgyNjIzNjMyVUwsIDB4YzM1MzJkMmJVTCwgMHgwNGM1NmM2NFVMLAorICAgIDB4NDVmNDc3N2RVTCwgMHg4NmE3NWE1NlVMLCAweGM3OTY0MTRmVUwsIDB4MDg4YWQ5YzhVTCwgMHg0OWJiYzJkMVVMLAorICAgIDB4OGFlOGVmZmFVTCwgMHhjYmQ5ZjRlM1VMLCAweDBjNGZiNWFjVUwsIDB4NGQ3ZWFlYjVVTCwgMHg4ZTJkODM5ZVVMLAorICAgIDB4Y2YxYzk4ODdVTCwgMHg1MTEyYzI0YVVMLCAweDEwMjNkOTUzVUwsIDB4ZDM3MGY0NzhVTCwgMHg5MjQxZWY2MVVMLAorICAgIDB4NTVkN2FlMmVVTCwgMHgxNGU2YjUzN1VMLCAweGQ3YjU5ODFjVUwsIDB4OTY4NDgzMDVVTCwgMHg1OTk4MWI4MlVMLAorICAgIDB4MThhOTAwOWJVTCwgMHhkYmZhMmRiMFVMLCAweDlhY2IzNmE5VUwsIDB4NWQ1ZDc3ZTZVTCwgMHgxYzZjNmNmZlVMLAorICAgIDB4ZGYzZjQxZDRVTCwgMHg5ZTBlNWFjZFVMLCAweGEyMjQ4NDk1VUwsIDB4ZTMxNTlmOGNVTCwgMHgyMDQ2YjJhN1VMLAorICAgIDB4NjE3N2E5YmVVTCwgMHhhNmUxZThmMVVMLCAweGU3ZDBmM2U4VUwsIDB4MjQ4M2RlYzNVTCwgMHg2NWIyYzVkYVVMLAorICAgIDB4YWFhZTVkNWRVTCwgMHhlYjlmNDY0NFVMLCAweDI4Y2M2YjZmVUwsIDB4NjlmZDcwNzZVTCwgMHhhZTZiMzEzOVVMLAorICAgIDB4ZWY1YTJhMjBVTCwgMHgyYzA5MDcwYlVMLCAweDZkMzgxYzEyVUwsIDB4ZjMzNjQ2ZGZVTCwgMHhiMjA3NWRjNlVMLAorICAgIDB4NzE1NDcwZWRVTCwgMHgzMDY1NmJmNFVMLCAweGY3ZjMyYWJiVUwsIDB4YjZjMjMxYTJVTCwgMHg3NTkxMWM4OVVMLAorICAgIDB4MzRhMDA3OTBVTCwgMHhmYmJjOWYxN1VMLCAweGJhOGQ4NDBlVUwsIDB4NzlkZWE5MjVVTCwgMHgzOGVmYjIzY1VMLAorICAgIDB4ZmY3OWYzNzNVTCwgMHhiZTQ4ZTg2YVVMLCAweDdkMWJjNTQxVUwsIDB4M2MyYWRlNThVTCwgMHgwNTRmNzlmMFVMLAorICAgIDB4NDQ3ZTYyZTlVTCwgMHg4NzJkNGZjMlVMLCAweGM2MWM1NGRiVUwsIDB4MDE4YTE1OTRVTCwgMHg0MGJiMGU4ZFVMLAorICAgIDB4ODNlODIzYTZVTCwgMHhjMmQ5MzhiZlVMLCAweDBkYzVhMDM4VUwsIDB4NGNmNGJiMjFVTCwgMHg4ZmE3OTYwYVVMLAorICAgIDB4Y2U5NjhkMTNVTCwgMHgwOTAwY2M1Y1VMLCAweDQ4MzFkNzQ1VUwsIDB4OGI2MmZhNmVVTCwgMHhjYTUzZTE3N1VMLAorICAgIDB4NTQ1ZGJiYmFVTCwgMHgxNTZjYTBhM1VMLCAweGQ2M2Y4ZDg4VUwsIDB4OTcwZTk2OTFVTCwgMHg1MDk4ZDdkZVVMLAorICAgIDB4MTFhOWNjYzdVTCwgMHhkMmZhZTFlY1VMLCAweDkzY2JmYWY1VUwsIDB4NWNkNzYyNzJVTCwgMHgxZGU2Nzk2YlVMLAorICAgIDB4ZGViNTU0NDBVTCwgMHg5Zjg0NGY1OVVMLCAweDU4MTIwZTE2VUwsIDB4MTkyMzE1MGZVTCwgMHhkYTcwMzgyNFVMLAorICAgIDB4OWI0MTIzM2RVTCwgMHhhNzZiZmQ2NVVMLCAweGU2NWFlNjdjVUwsIDB4MjUwOWNiNTdVTCwgMHg2NDM4ZDA0ZVVMLAorICAgIDB4YTNhZTkxMDFVTCwgMHhlMjlmOGExOFVMLCAweDIxY2NhNzMzVUwsIDB4NjBmZGJjMmFVTCwgMHhhZmUxMjRhZFVMLAorICAgIDB4ZWVkMDNmYjRVTCwgMHgyZDgzMTI5ZlVMLCAweDZjYjIwOTg2VUwsIDB4YWIyNDQ4YzlVTCwgMHhlYTE1NTNkMFVMLAorICAgIDB4Mjk0NjdlZmJVTCwgMHg2ODc3NjVlMlVMLCAweGY2NzkzZjJmVUwsIDB4Yjc0ODI0MzZVTCwgMHg3NDFiMDkxZFVMLAorICAgIDB4MzUyYTEyMDRVTCwgMHhmMmJjNTM0YlVMLCAweGIzOGQ0ODUyVUwsIDB4NzBkZTY1NzlVTCwgMHgzMWVmN2U2MFVMLAorICAgIDB4ZmVmM2U2ZTdVTCwgMHhiZmMyZmRmZVVMLCAweDdjOTFkMGQ1VUwsIDB4M2RhMGNiY2NVTCwgMHhmYTM2OGE4M1VMLAorICAgIDB4YmIwNzkxOWFVTCwgMHg3ODU0YmNiMVVMLCAweDM5NjVhN2E4VUwsIDB4NGI5ODgzM2JVTCwgMHgwYWE5OTgyMlVMLAorICAgIDB4YzlmYWI1MDlVTCwgMHg4OGNiYWUxMFVMLCAweDRmNWRlZjVmVUwsIDB4MGU2Y2Y0NDZVTCwgMHhjZDNmZDk2ZFVMLAorICAgIDB4OGMwZWMyNzRVTCwgMHg0MzEyNWFmM1VMLCAweDAyMjM0MWVhVUwsIDB4YzE3MDZjYzFVTCwgMHg4MDQxNzdkOFVMLAorICAgIDB4NDdkNzM2OTdVTCwgMHgwNmU2MmQ4ZVVMLCAweGM1YjUwMGE1VUwsIDB4ODQ4NDFiYmNVTCwgMHgxYThhNDE3MVVMLAorICAgIDB4NWJiYjVhNjhVTCwgMHg5OGU4Nzc0M1VMLCAweGQ5ZDk2YzVhVUwsIDB4MWU0ZjJkMTVVTCwgMHg1ZjdlMzYwY1VMLAorICAgIDB4OWMyZDFiMjdVTCwgMHhkZDFjMDAzZVVMLCAweDEyMDA5OGI5VUwsIDB4NTMzMTgzYTBVTCwgMHg5MDYyYWU4YlVMLAorICAgIDB4ZDE1M2I1OTJVTCwgMHgxNmM1ZjRkZFVMLCAweDU3ZjRlZmM0VUwsIDB4OTRhN2MyZWZVTCwgMHhkNTk2ZDlmNlVMLAorICAgIDB4ZTliYzA3YWVVTCwgMHhhODhkMWNiN1VMLCAweDZiZGUzMTljVUwsIDB4MmFlZjJhODVVTCwgMHhlZDc5NmJjYVVMLAorICAgIDB4YWM0ODcwZDNVTCwgMHg2ZjFiNWRmOFVMLCAweDJlMmE0NmUxVUwsIDB4ZTEzNmRlNjZVTCwgMHhhMDA3YzU3ZlVMLAorICAgIDB4NjM1NGU4NTRVTCwgMHgyMjY1ZjM0ZFVMLCAweGU1ZjNiMjAyVUwsIDB4YTRjMmE5MWJVTCwgMHg2NzkxODQzMFVMLAorICAgIDB4MjZhMDlmMjlVTCwgMHhiOGFlYzVlNFVMLCAweGY5OWZkZWZkVUwsIDB4M2FjY2YzZDZVTCwgMHg3YmZkZThjZlVMLAorICAgIDB4YmM2YmE5ODBVTCwgMHhmZDVhYjI5OVVMLCAweDNlMDk5ZmIyVUwsIDB4N2YzODg0YWJVTCwgMHhiMDI0MWMyY1VMLAorICAgIDB4ZjExNTA3MzVVTCwgMHgzMjQ2MmExZVVMLCAweDczNzczMTA3VUwsIDB4YjRlMTcwNDhVTCwgMHhmNWQwNmI1MVVMLAorICAgIDB4MzY4MzQ2N2FVTCwgMHg3N2IyNWQ2M1VMLCAweDRlZDdmYWNiVUwsIDB4MGZlNmUxZDJVTCwgMHhjY2I1Y2NmOVVMLAorICAgIDB4OGQ4NGQ3ZTBVTCwgMHg0YTEyOTZhZlVMLCAweDBiMjM4ZGI2VUwsIDB4Yzg3MGEwOWRVTCwgMHg4OTQxYmI4NFVMLAorICAgIDB4NDY1ZDIzMDNVTCwgMHgwNzZjMzgxYVVMLCAweGM0M2YxNTMxVUwsIDB4ODUwZTBlMjhVTCwgMHg0Mjk4NGY2N1VMLAorICAgIDB4MDNhOTU0N2VVTCwgMHhjMGZhNzk1NVVMLCAweDgxY2I2MjRjVUwsIDB4MWZjNTM4ODFVTCwgMHg1ZWY0MjM5OFVMLAorICAgIDB4OWRhNzBlYjNVTCwgMHhkYzk2MTVhYVVMLCAweDFiMDA1NGU1VUwsIDB4NWEzMTRmZmNVTCwgMHg5OTYyNjJkN1VMLAorICAgIDB4ZDg1Mzc5Y2VVTCwgMHgxNzRmZTE0OVVMLCAweDU2N2VmYTUwVUwsIDB4OTUyZGQ3N2JVTCwgMHhkNDFjY2M2MlVMLAorICAgIDB4MTM4YThkMmRVTCwgMHg1MmJiOTYzNFVMLCAweDkxZThiYjFmVUwsIDB4ZDBkOWEwMDZVTCwgMHhlY2YzN2U1ZVVMLAorICAgIDB4YWRjMjY1NDdVTCwgMHg2ZTkxNDg2Y1VMLCAweDJmYTA1Mzc1VUwsIDB4ZTgzNjEyM2FVTCwgMHhhOTA3MDkyM1VMLAorICAgIDB4NmE1NDI0MDhVTCwgMHgyYjY1M2YxMVVMLCAweGU0NzlhNzk2VUwsIDB4YTU0OGJjOGZVTCwgMHg2NjFiOTFhNFVMLAorICAgIDB4MjcyYThhYmRVTCwgMHhlMGJjY2JmMlVMLCAweGExOGRkMGViVUwsIDB4NjJkZWZkYzBVTCwgMHgyM2VmZTZkOVVMLAorICAgIDB4YmRlMWJjMTRVTCwgMHhmY2QwYTcwZFVMLCAweDNmODM4YTI2VUwsIDB4N2ViMjkxM2ZVTCwgMHhiOTI0ZDA3MFVMLAorICAgIDB4ZjgxNWNiNjlVTCwgMHgzYjQ2ZTY0MlVMLCAweDdhNzdmZDViVUwsIDB4YjU2YjY1ZGNVTCwgMHhmNDVhN2VjNVVMLAorICAgIDB4MzcwOTUzZWVVTCwgMHg3NjM4NDhmN1VMLCAweGIxYWUwOWI4VUwsIDB4ZjA5ZjEyYTFVTCwgMHgzM2NjM2Y4YVVMLAorICAgIDB4NzJmZDI0OTNVTAorICB9LAorICB7CisgICAgMHgwMDAwMDAwMFVMLCAweDM3NmFjMjAxVUwsIDB4NmVkNDg0MDNVTCwgMHg1OWJlNDYwMlVMLCAweGRjYTgwOTA3VUwsCisgICAgMHhlYmMyY2IwNlVMLCAweGIyN2M4ZDA0VUwsIDB4ODUxNjRmMDVVTCwgMHhiODUxMTMwZVVMLCAweDhmM2JkMTBmVUwsCisgICAgMHhkNjg1OTcwZFVMLCAweGUxZWY1NTBjVUwsIDB4NjRmOTFhMDlVTCwgMHg1MzkzZDgwOFVMLCAweDBhMmQ5ZTBhVUwsCisgICAgMHgzZDQ3NWMwYlVMLCAweDcwYTMyNjFjVUwsIDB4NDdjOWU0MWRVTCwgMHgxZTc3YTIxZlVMLCAweDI5MWQ2MDFlVUwsCisgICAgMHhhYzBiMmYxYlVMLCAweDliNjFlZDFhVUwsIDB4YzJkZmFiMThVTCwgMHhmNWI1NjkxOVVMLCAweGM4ZjIzNTEyVUwsCisgICAgMHhmZjk4ZjcxM1VMLCAweGE2MjZiMTExVUwsIDB4OTE0YzczMTBVTCwgMHgxNDVhM2MxNVVMLCAweDIzMzBmZTE0VUwsCisgICAgMHg3YThlYjgxNlVMLCAweDRkZTQ3YTE3VUwsIDB4ZTA0NjRkMzhVTCwgMHhkNzJjOGYzOVVMLCAweDhlOTJjOTNiVUwsCisgICAgMHhiOWY4MGIzYVVMLCAweDNjZWU0NDNmVUwsIDB4MGI4NDg2M2VVTCwgMHg1MjNhYzAzY1VMLCAweDY1NTAwMjNkVUwsCisgICAgMHg1ODE3NWUzNlVMLCAweDZmN2Q5YzM3VUwsIDB4MzZjM2RhMzVVTCwgMHgwMWE5MTgzNFVMLCAweDg0YmY1NzMxVUwsCisgICAgMHhiM2Q1OTUzMFVMLCAweGVhNmJkMzMyVUwsIDB4ZGQwMTExMzNVTCwgMHg5MGU1NmIyNFVMLCAweGE3OGZhOTI1VUwsCisgICAgMHhmZTMxZWYyN1VMLCAweGM5NWIyZDI2VUwsIDB4NGM0ZDYyMjNVTCwgMHg3YjI3YTAyMlVMLCAweDIyOTllNjIwVUwsCisgICAgMHgxNWYzMjQyMVVMLCAweDI4YjQ3ODJhVUwsIDB4MWZkZWJhMmJVTCwgMHg0NjYwZmMyOVVMLCAweDcxMGEzZTI4VUwsCisgICAgMHhmNDFjNzEyZFVMLCAweGMzNzZiMzJjVUwsIDB4OWFjOGY1MmVVTCwgMHhhZGEyMzcyZlVMLCAweGMwOGQ5YTcwVUwsCisgICAgMHhmN2U3NTg3MVVMLCAweGFlNTkxZTczVUwsIDB4OTkzM2RjNzJVTCwgMHgxYzI1OTM3N1VMLCAweDJiNGY1MTc2VUwsCisgICAgMHg3MmYxMTc3NFVMLCAweDQ1OWJkNTc1VUwsIDB4NzhkYzg5N2VVTCwgMHg0ZmI2NGI3ZlVMLCAweDE2MDgwZDdkVUwsCisgICAgMHgyMTYyY2Y3Y1VMLCAweGE0NzQ4MDc5VUwsIDB4OTMxZTQyNzhVTCwgMHhjYWEwMDQ3YVVMLCAweGZkY2FjNjdiVUwsCisgICAgMHhiMDJlYmM2Y1VMLCAweDg3NDQ3ZTZkVUwsIDB4ZGVmYTM4NmZVTCwgMHhlOTkwZmE2ZVVMLCAweDZjODZiNTZiVUwsCisgICAgMHg1YmVjNzc2YVVMLCAweDAyNTIzMTY4VUwsIDB4MzUzOGYzNjlVTCwgMHgwODdmYWY2MlVMLCAweDNmMTU2ZDYzVUwsCisgICAgMHg2NmFiMmI2MVVMLCAweDUxYzFlOTYwVUwsIDB4ZDRkN2E2NjVVTCwgMHhlM2JkNjQ2NFVMLCAweGJhMDMyMjY2VUwsCisgICAgMHg4ZDY5ZTA2N1VMLCAweDIwY2JkNzQ4VUwsIDB4MTdhMTE1NDlVTCwgMHg0ZTFmNTM0YlVMLCAweDc5NzU5MTRhVUwsCisgICAgMHhmYzYzZGU0ZlVMLCAweGNiMDkxYzRlVUwsIDB4OTJiNzVhNGNVTCwgMHhhNWRkOTg0ZFVMLCAweDk4OWFjNDQ2VUwsCisgICAgMHhhZmYwMDY0N1VMLCAweGY2NGU0MDQ1VUwsIDB4YzEyNDgyNDRVTCwgMHg0NDMyY2Q0MVVMLCAweDczNTgwZjQwVUwsCisgICAgMHgyYWU2NDk0MlVMLCAweDFkOGM4YjQzVUwsIDB4NTA2OGYxNTRVTCwgMHg2NzAyMzM1NVVMLCAweDNlYmM3NTU3VUwsCisgICAgMHgwOWQ2Yjc1NlVMLCAweDhjYzBmODUzVUwsIDB4YmJhYTNhNTJVTCwgMHhlMjE0N2M1MFVMLCAweGQ1N2ViZTUxVUwsCisgICAgMHhlODM5ZTI1YVVMLCAweGRmNTMyMDViVUwsIDB4ODZlZDY2NTlVTCwgMHhiMTg3YTQ1OFVMLCAweDM0OTFlYjVkVUwsCisgICAgMHgwM2ZiMjk1Y1VMLCAweDVhNDU2ZjVlVUwsIDB4NmQyZmFkNWZVTCwgMHg4MDFiMzVlMVVMLCAweGI3NzFmN2UwVUwsCisgICAgMHhlZWNmYjFlMlVMLCAweGQ5YTU3M2UzVUwsIDB4NWNiMzNjZTZVTCwgMHg2YmQ5ZmVlN1VMLCAweDMyNjdiOGU1VUwsCisgICAgMHgwNTBkN2FlNFVMLCAweDM4NGEyNmVmVUwsIDB4MGYyMGU0ZWVVTCwgMHg1NjllYTJlY1VMLCAweDYxZjQ2MGVkVUwsCisgICAgMHhlNGUyMmZlOFVMLCAweGQzODhlZGU5VUwsIDB4OGEzNmFiZWJVTCwgMHhiZDVjNjllYVVMLCAweGYwYjgxM2ZkVUwsCisgICAgMHhjN2QyZDFmY1VMLCAweDllNmM5N2ZlVUwsIDB4YTkwNjU1ZmZVTCwgMHgyYzEwMWFmYVVMLCAweDFiN2FkOGZiVUwsCisgICAgMHg0MmM0OWVmOVVMLCAweDc1YWU1Y2Y4VUwsIDB4NDhlOTAwZjNVTCwgMHg3ZjgzYzJmMlVMLCAweDI2M2Q4NGYwVUwsCisgICAgMHgxMTU3NDZmMVVMLCAweDk0NDEwOWY0VUwsIDB4YTMyYmNiZjVVTCwgMHhmYTk1OGRmN1VMLCAweGNkZmY0ZmY2VUwsCisgICAgMHg2MDVkNzhkOVVMLCAweDU3MzdiYWQ4VUwsIDB4MGU4OWZjZGFVTCwgMHgzOWUzM2VkYlVMLCAweGJjZjU3MWRlVUwsCisgICAgMHg4YjlmYjNkZlVMLCAweGQyMjFmNWRkVUwsIDB4ZTU0YjM3ZGNVTCwgMHhkODBjNmJkN1VMLCAweGVmNjZhOWQ2VUwsCisgICAgMHhiNmQ4ZWZkNFVMLCAweDgxYjIyZGQ1VUwsIDB4MDRhNDYyZDBVTCwgMHgzM2NlYTBkMVVMLCAweDZhNzBlNmQzVUwsCisgICAgMHg1ZDFhMjRkMlVMLCAweDEwZmU1ZWM1VUwsIDB4Mjc5NDljYzRVTCwgMHg3ZTJhZGFjNlVMLCAweDQ5NDAxOGM3VUwsCisgICAgMHhjYzU2NTdjMlVMLCAweGZiM2M5NWMzVUwsIDB4YTI4MmQzYzFVTCwgMHg5NWU4MTFjMFVMLCAweGE4YWY0ZGNiVUwsCisgICAgMHg5ZmM1OGZjYVVMLCAweGM2N2JjOWM4VUwsIDB4ZjExMTBiYzlVTCwgMHg3NDA3NDRjY1VMLCAweDQzNmQ4NmNkVUwsCisgICAgMHgxYWQzYzBjZlVMLCAweDJkYjkwMmNlVUwsIDB4NDA5NmFmOTFVTCwgMHg3N2ZjNmQ5MFVMLCAweDJlNDIyYjkyVUwsCisgICAgMHgxOTI4ZTk5M1VMLCAweDljM2VhNjk2VUwsIDB4YWI1NDY0OTdVTCwgMHhmMmVhMjI5NVVMLCAweGM1ODBlMDk0VUwsCisgICAgMHhmOGM3YmM5ZlVMLCAweGNmYWQ3ZTllVUwsIDB4OTYxMzM4OWNVTCwgMHhhMTc5ZmE5ZFVMLCAweDI0NmZiNTk4VUwsCisgICAgMHgxMzA1Nzc5OVVMLCAweDRhYmIzMTliVUwsIDB4N2RkMWYzOWFVTCwgMHgzMDM1ODk4ZFVMLCAweDA3NWY0YjhjVUwsCisgICAgMHg1ZWUxMGQ4ZVVMLCAweDY5OGJjZjhmVUwsIDB4ZWM5ZDgwOGFVTCwgMHhkYmY3NDI4YlVMLCAweDgyNDkwNDg5VUwsCisgICAgMHhiNTIzYzY4OFVMLCAweDg4NjQ5YTgzVUwsIDB4YmYwZTU4ODJVTCwgMHhlNmIwMWU4MFVMLCAweGQxZGFkYzgxVUwsCisgICAgMHg1NGNjOTM4NFVMLCAweDYzYTY1MTg1VUwsIDB4M2ExODE3ODdVTCwgMHgwZDcyZDU4NlVMLCAweGEwZDBlMmE5VUwsCisgICAgMHg5N2JhMjBhOFVMLCAweGNlMDQ2NmFhVUwsIDB4Zjk2ZWE0YWJVTCwgMHg3Yzc4ZWJhZVVMLCAweDRiMTIyOWFmVUwsCisgICAgMHgxMmFjNmZhZFVMLCAweDI1YzZhZGFjVUwsIDB4MTg4MWYxYTdVTCwgMHgyZmViMzNhNlVMLCAweDc2NTU3NWE0VUwsCisgICAgMHg0MTNmYjdhNVVMLCAweGM0MjlmOGEwVUwsIDB4ZjM0MzNhYTFVTCwgMHhhYWZkN2NhM1VMLCAweDlkOTdiZWEyVUwsCisgICAgMHhkMDczYzRiNVVMLCAweGU3MTkwNmI0VUwsIDB4YmVhNzQwYjZVTCwgMHg4OWNkODJiN1VMLCAweDBjZGJjZGIyVUwsCisgICAgMHgzYmIxMGZiM1VMLCAweDYyMGY0OWIxVUwsIDB4NTU2NThiYjBVTCwgMHg2ODIyZDdiYlVMLCAweDVmNDgxNWJhVUwsCisgICAgMHgwNmY2NTNiOFVMLCAweDMxOWM5MWI5VUwsIDB4YjQ4YWRlYmNVTCwgMHg4M2UwMWNiZFVMLCAweGRhNWU1YWJmVUwsCisgICAgMHhlZDM0OThiZVVMCisgIH0sCisgIHsKKyAgICAweDAwMDAwMDAwVUwsIDB4NjU2N2JjYjhVTCwgMHg4YmM4MDlhYVVMLCAweGVlYWZiNTEyVUwsIDB4NTc5NzYyOGZVTCwKKyAgICAweDMyZjBkZTM3VUwsIDB4ZGM1ZjZiMjVVTCwgMHhiOTM4ZDc5ZFVMLCAweGVmMjhiNGM1VUwsIDB4OGE0ZjA4N2RVTCwKKyAgICAweDY0ZTBiZDZmVUwsIDB4MDE4NzAxZDdVTCwgMHhiOGJmZDY0YVVMLCAweGRkZDg2YWYyVUwsIDB4MzM3N2RmZTBVTCwKKyAgICAweDU2MTA2MzU4VUwsIDB4OWY1NzE5NTBVTCwgMHhmYTMwYTVlOFVMLCAweDE0OWYxMGZhVUwsIDB4NzFmOGFjNDJVTCwKKyAgICAweGM4YzA3YmRmVUwsIDB4YWRhN2M3NjdVTCwgMHg0MzA4NzI3NVVMLCAweDI2NmZjZWNkVUwsIDB4NzA3ZmFkOTVVTCwKKyAgICAweDE1MTgxMTJkVUwsIDB4ZmJiN2E0M2ZVTCwgMHg5ZWQwMTg4N1VMLCAweDI3ZThjZjFhVUwsIDB4NDI4ZjczYTJVTCwKKyAgICAweGFjMjBjNmIwVUwsIDB4Yzk0NzdhMDhVTCwgMHgzZWFmMzJhMFVMLCAweDViYzg4ZTE4VUwsIDB4YjU2NzNiMGFVTCwKKyAgICAweGQwMDA4N2IyVUwsIDB4NjkzODUwMmZVTCwgMHgwYzVmZWM5N1VMLCAweGUyZjA1OTg1VUwsIDB4ODc5N2U1M2RVTCwKKyAgICAweGQxODc4NjY1VUwsIDB4YjRlMDNhZGRVTCwgMHg1YTRmOGZjZlVMLCAweDNmMjgzMzc3VUwsIDB4ODYxMGU0ZWFVTCwKKyAgICAweGUzNzc1ODUyVUwsIDB4MGRkOGVkNDBVTCwgMHg2OGJmNTFmOFVMLCAweGExZjgyYmYwVUwsIDB4YzQ5Zjk3NDhVTCwKKyAgICAweDJhMzAyMjVhVUwsIDB4NGY1NzllZTJVTCwgMHhmNjZmNDk3ZlVMLCAweDkzMDhmNWM3VUwsIDB4N2RhNzQwZDVVTCwKKyAgICAweDE4YzBmYzZkVUwsIDB4NGVkMDlmMzVVTCwgMHgyYmI3MjM4ZFVMLCAweGM1MTg5NjlmVUwsIDB4YTA3ZjJhMjdVTCwKKyAgICAweDE5NDdmZGJhVUwsIDB4N2MyMDQxMDJVTCwgMHg5MjhmZjQxMFVMLCAweGY3ZTg0OGE4VUwsIDB4M2Q1ODE0OWJVTCwKKyAgICAweDU4M2ZhODIzVUwsIDB4YjY5MDFkMzFVTCwgMHhkM2Y3YTE4OVVMLCAweDZhY2Y3NjE0VUwsIDB4MGZhOGNhYWNVTCwKKyAgICAweGUxMDc3ZmJlVUwsIDB4ODQ2MGMzMDZVTCwgMHhkMjcwYTA1ZVVMLCAweGI3MTcxY2U2VUwsIDB4NTliOGE5ZjRVTCwKKyAgICAweDNjZGYxNTRjVUwsIDB4ODVlN2MyZDFVTCwgMHhlMDgwN2U2OVVMLCAweDBlMmZjYjdiVUwsIDB4NmI0ODc3YzNVTCwKKyAgICAweGEyMGYwZGNiVUwsIDB4Yzc2OGIxNzNVTCwgMHgyOWM3MDQ2MVVMLCAweDRjYTBiOGQ5VUwsIDB4ZjU5ODZmNDRVTCwKKyAgICAweDkwZmZkM2ZjVUwsIDB4N2U1MDY2ZWVVTCwgMHgxYjM3ZGE1NlVMLCAweDRkMjdiOTBlVUwsIDB4Mjg0MDA1YjZVTCwKKyAgICAweGM2ZWZiMGE0VUwsIDB4YTM4ODBjMWNVTCwgMHgxYWIwZGI4MVVMLCAweDdmZDc2NzM5VUwsIDB4OTE3OGQyMmJVTCwKKyAgICAweGY0MWY2ZTkzVUwsIDB4MDNmNzI2M2JVTCwgMHg2NjkwOWE4M1VMLCAweDg4M2YyZjkxVUwsIDB4ZWQ1ODkzMjlVTCwKKyAgICAweDU0NjA0NGI0VUwsIDB4MzEwN2Y4MGNVTCwgMHhkZmE4NGQxZVVMLCAweGJhY2ZmMWE2VUwsIDB4ZWNkZjkyZmVVTCwKKyAgICAweDg5YjgyZTQ2VUwsIDB4NjcxNzliNTRVTCwgMHgwMjcwMjdlY1VMLCAweGJiNDhmMDcxVUwsIDB4ZGUyZjRjYzlVTCwKKyAgICAweDMwODBmOWRiVUwsIDB4NTVlNzQ1NjNVTCwgMHg5Y2EwM2Y2YlVMLCAweGY5Yzc4M2QzVUwsIDB4MTc2ODM2YzFVTCwKKyAgICAweDcyMGY4YTc5VUwsIDB4Y2IzNzVkZTRVTCwgMHhhZTUwZTE1Y1VMLCAweDQwZmY1NDRlVUwsIDB4MjU5OGU4ZjZVTCwKKyAgICAweDczODg4YmFlVUwsIDB4MTZlZjM3MTZVTCwgMHhmODQwODIwNFVMLCAweDlkMjczZWJjVUwsIDB4MjQxZmU5MjFVTCwKKyAgICAweDQxNzg1NTk5VUwsIDB4YWZkN2UwOGJVTCwgMHhjYWIwNWMzM1VMLCAweDNiYjY1OWVkVUwsIDB4NWVkMWU1NTVVTCwKKyAgICAweGIwN2U1MDQ3VUwsIDB4ZDUxOWVjZmZVTCwgMHg2YzIxM2I2MlVMLCAweDA5NDY4N2RhVUwsIDB4ZTdlOTMyYzhVTCwKKyAgICAweDgyOGU4ZTcwVUwsIDB4ZDQ5ZWVkMjhVTCwgMHhiMWY5NTE5MFVMLCAweDVmNTZlNDgyVUwsIDB4M2EzMTU4M2FVTCwKKyAgICAweDgzMDk4ZmE3VUwsIDB4ZTY2ZTMzMWZVTCwgMHgwOGMxODYwZFVMLCAweDZkYTYzYWI1VUwsIDB4YTRlMTQwYmRVTCwKKyAgICAweGMxODZmYzA1VUwsIDB4MmYyOTQ5MTdVTCwgMHg0YTRlZjVhZlVMLCAweGYzNzYyMjMyVUwsIDB4OTYxMTllOGFVTCwKKyAgICAweDc4YmUyYjk4VUwsIDB4MWRkOTk3MjBVTCwgMHg0YmM5ZjQ3OFVMLCAweDJlYWU0OGMwVUwsIDB4YzAwMWZkZDJVTCwKKyAgICAweGE1NjY0MTZhVUwsIDB4MWM1ZTk2ZjdVTCwgMHg3OTM5MmE0ZlVMLCAweDk3OTY5ZjVkVUwsIDB4ZjJmMTIzZTVVTCwKKyAgICAweDA1MTk2YjRkVUwsIDB4NjA3ZWQ3ZjVVTCwgMHg4ZWQxNjJlN1VMLCAweGViYjZkZTVmVUwsIDB4NTI4ZTA5YzJVTCwKKyAgICAweDM3ZTliNTdhVUwsIDB4ZDk0NjAwNjhVTCwgMHhiYzIxYmNkMFVMLCAweGVhMzFkZjg4VUwsIDB4OGY1NjYzMzBVTCwKKyAgICAweDYxZjlkNjIyVUwsIDB4MDQ5ZTZhOWFVTCwgMHhiZGE2YmQwN1VMLCAweGQ4YzEwMWJmVUwsIDB4MzY2ZWI0YWRVTCwKKyAgICAweDUzMDkwODE1VUwsIDB4OWE0ZTcyMWRVTCwgMHhmZjI5Y2VhNVVMLCAweDExODY3YmI3VUwsIDB4NzRlMWM3MGZVTCwKKyAgICAweGNkZDkxMDkyVUwsIDB4YThiZWFjMmFVTCwgMHg0NjExMTkzOFVMLCAweDIzNzZhNTgwVUwsIDB4NzU2NmM2ZDhVTCwKKyAgICAweDEwMDE3YTYwVUwsIDB4ZmVhZWNmNzJVTCwgMHg5YmM5NzNjYVVMLCAweDIyZjFhNDU3VUwsIDB4NDc5NjE4ZWZVTCwKKyAgICAweGE5MzlhZGZkVUwsIDB4Y2M1ZTExNDVVTCwgMHgwNmVlNGQ3NlVMLCAweDYzODlmMWNlVUwsIDB4OGQyNjQ0ZGNVTCwKKyAgICAweGU4NDFmODY0VUwsIDB4NTE3OTJmZjlVTCwgMHgzNDFlOTM0MVVMLCAweGRhYjEyNjUzVUwsIDB4YmZkNjlhZWJVTCwKKyAgICAweGU5YzZmOWIzVUwsIDB4OGNhMTQ1MGJVTCwgMHg2MjBlZjAxOVVMLCAweDA3Njk0Y2ExVUwsIDB4YmU1MTliM2NVTCwKKyAgICAweGRiMzYyNzg0VUwsIDB4MzU5OTkyOTZVTCwgMHg1MGZlMmUyZVVMLCAweDk5Yjk1NDI2VUwsIDB4ZmNkZWU4OWVVTCwKKyAgICAweDEyNzE1ZDhjVUwsIDB4NzcxNmUxMzRVTCwgMHhjZTJlMzZhOVVMLCAweGFiNDk4YTExVUwsIDB4NDVlNjNmMDNVTCwKKyAgICAweDIwODE4M2JiVUwsIDB4NzY5MWUwZTNVTCwgMHgxM2Y2NWM1YlVMLCAweGZkNTllOTQ5VUwsIDB4OTgzZTU1ZjFVTCwKKyAgICAweDIxMDY4MjZjVUwsIDB4NDQ2MTNlZDRVTCwgMHhhYWNlOGJjNlVMLCAweGNmYTkzNzdlVUwsIDB4Mzg0MTdmZDZVTCwKKyAgICAweDVkMjZjMzZlVUwsIDB4YjM4OTc2N2NVTCwgMHhkNmVlY2FjNFVMLCAweDZmZDYxZDU5VUwsIDB4MGFiMWExZTFVTCwKKyAgICAweGU0MWUxNGYzVUwsIDB4ODE3OWE4NGJVTCwgMHhkNzY5Y2IxM1VMLCAweGIyMGU3N2FiVUwsIDB4NWNhMWMyYjlVTCwKKyAgICAweDM5YzY3ZTAxVUwsIDB4ODBmZWE5OWNVTCwgMHhlNTk5MTUyNFVMLCAweDBiMzZhMDM2VUwsIDB4NmU1MTFjOGVVTCwKKyAgICAweGE3MTY2Njg2VUwsIDB4YzI3MWRhM2VVTCwgMHgyY2RlNmYyY1VMLCAweDQ5YjlkMzk0VUwsIDB4ZjA4MTA0MDlVTCwKKyAgICAweDk1ZTZiOGIxVUwsIDB4N2I0OTBkYTNVTCwgMHgxZTJlYjExYlVMLCAweDQ4M2VkMjQzVUwsIDB4MmQ1OTZlZmJVTCwKKyAgICAweGMzZjZkYmU5VUwsIDB4YTY5MTY3NTFVTCwgMHgxZmE5YjBjY1VMLCAweDdhY2UwYzc0VUwsIDB4OTQ2MWI5NjZVTCwKKyAgICAweGYxMDYwNWRlVUwKKyNlbmRpZgorICB9Cit9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9kZWZsYXRlLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2RlZmxhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTAyOTllCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9kZWZsYXRlLmgKQEAgLTAsMCArMSwzNDYgQEAKKy8qIGRlZmxhdGUuaCAtLSBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZQorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTIgSmVhbi1sb3VwIEdhaWxseQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKy8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuIEl0IGlzCisgICBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSBhbmQgaXMKKyAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KKyAqLworCisvKiBAKCMpICRJZCQgKi8KKworI2lmbmRlZiBERUZMQVRFX0gKKyNkZWZpbmUgREVGTEFURV9ICisKKyNpbmNsdWRlICJ6dXRpbC5oIgorCisvKiBkZWZpbmUgTk9fR1pJUCB3aGVuIGNvbXBpbGluZyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIGd6aXAgaGVhZGVyIGFuZAorICAgdHJhaWxlciBjcmVhdGlvbiBieSBkZWZsYXRlKCkuICBOT19HWklQIHdvdWxkIGJlIHVzZWQgdG8gYXZvaWQgbGlua2luZyBpbgorICAgdGhlIGNyYyBjb2RlIHdoZW4gaXQgaXMgbm90IG5lZWRlZC4gIEZvciBzaGFyZWQgbGlicmFyaWVzLCBnemlwIGVuY29kaW5nCisgICBzaG91bGQgYmUgbGVmdCBlbmFibGVkLiAqLworI2lmbmRlZiBOT19HWklQCisjICBkZWZpbmUgR1pJUAorI2VuZGlmCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogSW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuCisgKi8KKworI2RlZmluZSBMRU5HVEhfQ09ERVMgMjkKKy8qIG51bWJlciBvZiBsZW5ndGggY29kZXMsIG5vdCBjb3VudGluZyB0aGUgc3BlY2lhbCBFTkRfQkxPQ0sgY29kZSAqLworCisjZGVmaW5lIExJVEVSQUxTICAyNTYKKy8qIG51bWJlciBvZiBsaXRlcmFsIGJ5dGVzIDAuLjI1NSAqLworCisjZGVmaW5lIExfQ09ERVMgKExJVEVSQUxTKzErTEVOR1RIX0NPREVTKQorLyogbnVtYmVyIG9mIExpdGVyYWwgb3IgTGVuZ3RoIGNvZGVzLCBpbmNsdWRpbmcgdGhlIEVORF9CTE9DSyBjb2RlICovCisKKyNkZWZpbmUgRF9DT0RFUyAgIDMwCisvKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZXMgKi8KKworI2RlZmluZSBCTF9DT0RFUyAgMTkKKy8qIG51bWJlciBvZiBjb2RlcyB1c2VkIHRvIHRyYW5zZmVyIHRoZSBiaXQgbGVuZ3RocyAqLworCisjZGVmaW5lIEhFQVBfU0laRSAoMipMX0NPREVTKzEpCisvKiBtYXhpbXVtIGhlYXAgc2l6ZSAqLworCisjZGVmaW5lIE1BWF9CSVRTIDE1CisvKiBBbGwgY29kZXMgbXVzdCBub3QgZXhjZWVkIE1BWF9CSVRTIGJpdHMgKi8KKworI2RlZmluZSBCdWZfc2l6ZSAxNgorLyogc2l6ZSBvZiBiaXQgYnVmZmVyIGluIGJpX2J1ZiAqLworCisjZGVmaW5lIElOSVRfU1RBVEUgICAgNDIKKyNkZWZpbmUgRVhUUkFfU1RBVEUgICA2OQorI2RlZmluZSBOQU1FX1NUQVRFICAgIDczCisjZGVmaW5lIENPTU1FTlRfU1RBVEUgOTEKKyNkZWZpbmUgSENSQ19TVEFURSAgIDEwMworI2RlZmluZSBCVVNZX1NUQVRFICAgMTEzCisjZGVmaW5lIEZJTklTSF9TVEFURSA2NjYKKy8qIFN0cmVhbSBzdGF0dXMgKi8KKworCisvKiBEYXRhIHN0cnVjdHVyZSBkZXNjcmliaW5nIGEgc2luZ2xlIHZhbHVlIGFuZCBpdHMgY29kZSBzdHJpbmcuICovCit0eXBlZGVmIHN0cnVjdCBjdF9kYXRhX3MgeworICAgIHVuaW9uIHsKKyAgICAgICAgdXNoICBmcmVxOyAgICAgICAvKiBmcmVxdWVuY3kgY291bnQgKi8KKyAgICAgICAgdXNoICBjb2RlOyAgICAgICAvKiBiaXQgc3RyaW5nICovCisgICAgfSBmYzsKKyAgICB1bmlvbiB7CisgICAgICAgIHVzaCAgZGFkOyAgICAgICAgLyogZmF0aGVyIG5vZGUgaW4gSHVmZm1hbiB0cmVlICovCisgICAgICAgIHVzaCAgbGVuOyAgICAgICAgLyogbGVuZ3RoIG9mIGJpdCBzdHJpbmcgKi8KKyAgICB9IGRsOworfSBGQVIgY3RfZGF0YTsKKworI2RlZmluZSBGcmVxIGZjLmZyZXEKKyNkZWZpbmUgQ29kZSBmYy5jb2RlCisjZGVmaW5lIERhZCAgZGwuZGFkCisjZGVmaW5lIExlbiAgZGwubGVuCisKK3R5cGVkZWYgc3RydWN0IHN0YXRpY190cmVlX2Rlc2NfcyAgc3RhdGljX3RyZWVfZGVzYzsKKwordHlwZWRlZiBzdHJ1Y3QgdHJlZV9kZXNjX3MgeworICAgIGN0X2RhdGEgKmR5bl90cmVlOyAgICAgICAgICAgLyogdGhlIGR5bmFtaWMgdHJlZSAqLworICAgIGludCAgICAgbWF4X2NvZGU7ICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovCisgICAgc3RhdGljX3RyZWVfZGVzYyAqc3RhdF9kZXNjOyAvKiB0aGUgY29ycmVzcG9uZGluZyBzdGF0aWMgdHJlZSAqLworfSBGQVIgdHJlZV9kZXNjOworCit0eXBlZGVmIHVzaCBQb3M7Cit0eXBlZGVmIFBvcyBGQVIgUG9zZjsKK3R5cGVkZWYgdW5zaWduZWQgSVBvczsKKworLyogQSBQb3MgaXMgYW4gaW5kZXggaW4gdGhlIGNoYXJhY3RlciB3aW5kb3cuIFdlIHVzZSBzaG9ydCBpbnN0ZWFkIG9mIGludCB0bworICogc2F2ZSBzcGFjZSBpbiB0aGUgdmFyaW91cyB0YWJsZXMuIElQb3MgaXMgdXNlZCBvbmx5IGZvciBwYXJhbWV0ZXIgcGFzc2luZy4KKyAqLworCit0eXBlZGVmIHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSB7CisgICAgel9zdHJlYW1wIHN0cm07ICAgICAgLyogcG9pbnRlciBiYWNrIHRvIHRoaXMgemxpYiBzdHJlYW0gKi8KKyAgICBpbnQgICBzdGF0dXM7ICAgICAgICAvKiBhcyB0aGUgbmFtZSBpbXBsaWVzICovCisgICAgQnl0ZWYgKnBlbmRpbmdfYnVmOyAgLyogb3V0cHV0IHN0aWxsIHBlbmRpbmcgKi8KKyAgICB1bGcgICBwZW5kaW5nX2J1Zl9zaXplOyAvKiBzaXplIG9mIHBlbmRpbmdfYnVmICovCisgICAgQnl0ZWYgKnBlbmRpbmdfb3V0OyAgLyogbmV4dCBwZW5kaW5nIGJ5dGUgdG8gb3V0cHV0IHRvIHRoZSBzdHJlYW0gKi8KKyAgICB1SW50ICAgcGVuZGluZzsgICAgICAvKiBuYiBvZiBieXRlcyBpbiB0aGUgcGVuZGluZyBidWZmZXIgKi8KKyAgICBpbnQgICB3cmFwOyAgICAgICAgICAvKiBiaXQgMCB0cnVlIGZvciB6bGliLCBiaXQgMSB0cnVlIGZvciBnemlwICovCisgICAgZ3pfaGVhZGVycCAgZ3poZWFkOyAgLyogZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gdG8gd3JpdGUgKi8KKyAgICB1SW50ICAgZ3ppbmRleDsgICAgICAvKiB3aGVyZSBpbiBleHRyYSwgbmFtZSwgb3IgY29tbWVudCAqLworICAgIEJ5dGUgIG1ldGhvZDsgICAgICAgIC8qIGNhbiBvbmx5IGJlIERFRkxBVEVEICovCisgICAgaW50ICAgbGFzdF9mbHVzaDsgICAgLyogdmFsdWUgb2YgZmx1c2ggcGFyYW0gZm9yIHByZXZpb3VzIGRlZmxhdGUgY2FsbCAqLworCisgICAgICAgICAgICAgICAgLyogdXNlZCBieSBkZWZsYXRlLmM6ICovCisKKyAgICB1SW50ICB3X3NpemU7ICAgICAgICAvKiBMWjc3IHdpbmRvdyBzaXplICgzMksgYnkgZGVmYXVsdCkgKi8KKyAgICB1SW50ICB3X2JpdHM7ICAgICAgICAvKiBsb2cyKHdfc2l6ZSkgICg4Li4xNikgKi8KKyAgICB1SW50ICB3X21hc2s7ICAgICAgICAvKiB3X3NpemUgLSAxICovCisKKyAgICBCeXRlZiAqd2luZG93OworICAgIC8qIFNsaWRpbmcgd2luZG93LiBJbnB1dCBieXRlcyBhcmUgcmVhZCBpbnRvIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgd2luZG93LAorICAgICAqIGFuZCBtb3ZlIHRvIHRoZSBmaXJzdCBoYWxmIGxhdGVyIHRvIGtlZXAgYSBkaWN0aW9uYXJ5IG9mIGF0IGxlYXN0IHdTaXplCisgICAgICogYnl0ZXMuIFdpdGggdGhpcyBvcmdhbml6YXRpb24sIG1hdGNoZXMgYXJlIGxpbWl0ZWQgdG8gYSBkaXN0YW5jZSBvZgorICAgICAqIHdTaXplLU1BWF9NQVRDSCBieXRlcywgYnV0IHRoaXMgZW5zdXJlcyB0aGF0IElPIGlzIGFsd2F5cworICAgICAqIHBlcmZvcm1lZCB3aXRoIGEgbGVuZ3RoIG11bHRpcGxlIG9mIHRoZSBibG9jayBzaXplLiBBbHNvLCBpdCBsaW1pdHMKKyAgICAgKiB0aGUgd2luZG93IHNpemUgdG8gNjRLLCB3aGljaCBpcyBxdWl0ZSB1c2VmdWwgb24gTVNET1MuCisgICAgICogVG8gZG86IHVzZSB0aGUgdXNlciBpbnB1dCBidWZmZXIgYXMgc2xpZGluZyB3aW5kb3cuCisgICAgICovCisKKyAgICB1bGcgd2luZG93X3NpemU7CisgICAgLyogQWN0dWFsIHNpemUgb2Ygd2luZG93OiAyKndTaXplLCBleGNlcHQgd2hlbiB0aGUgdXNlciBpbnB1dCBidWZmZXIKKyAgICAgKiBpcyBkaXJlY3RseSB1c2VkIGFzIHNsaWRpbmcgd2luZG93LgorICAgICAqLworCisgICAgUG9zZiAqcHJldjsKKyAgICAvKiBMaW5rIHRvIG9sZGVyIHN0cmluZyB3aXRoIHNhbWUgaGFzaCBpbmRleC4gVG8gbGltaXQgdGhlIHNpemUgb2YgdGhpcworICAgICAqIGFycmF5IHRvIDY0SywgdGhpcyBsaW5rIGlzIG1haW50YWluZWQgb25seSBmb3IgdGhlIGxhc3QgMzJLIHN0cmluZ3MuCisgICAgICogQW4gaW5kZXggaW4gdGhpcyBhcnJheSBpcyB0aHVzIGEgd2luZG93IGluZGV4IG1vZHVsbyAzMksuCisgICAgICovCisKKyAgICBQb3NmICpoZWFkOyAvKiBIZWFkcyBvZiB0aGUgaGFzaCBjaGFpbnMgb3IgTklMLiAqLworCisgICAgdUludCAgaW5zX2g7ICAgICAgICAgIC8qIGhhc2ggaW5kZXggb2Ygc3RyaW5nIHRvIGJlIGluc2VydGVkICovCisgICAgdUludCAgaGFzaF9zaXplOyAgICAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBoYXNoIHRhYmxlICovCisgICAgdUludCAgaGFzaF9iaXRzOyAgICAgIC8qIGxvZzIoaGFzaF9zaXplKSAqLworICAgIHVJbnQgIGhhc2hfbWFzazsgICAgICAvKiBoYXNoX3NpemUtMSAqLworCisgICAgdUludCAgaGFzaF9zaGlmdDsKKyAgICAvKiBOdW1iZXIgb2YgYml0cyBieSB3aGljaCBpbnNfaCBtdXN0IGJlIHNoaWZ0ZWQgYXQgZWFjaCBpbnB1dAorICAgICAqIHN0ZXAuIEl0IG11c3QgYmUgc3VjaCB0aGF0IGFmdGVyIE1JTl9NQVRDSCBzdGVwcywgdGhlIG9sZGVzdAorICAgICAqIGJ5dGUgbm8gbG9uZ2VyIHRha2VzIHBhcnQgaW4gdGhlIGhhc2gga2V5LCB0aGF0IGlzOgorICAgICAqICAgaGFzaF9zaGlmdCAqIE1JTl9NQVRDSCA+PSBoYXNoX2JpdHMKKyAgICAgKi8KKworICAgIGxvbmcgYmxvY2tfc3RhcnQ7CisgICAgLyogV2luZG93IHBvc2l0aW9uIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGN1cnJlbnQgb3V0cHV0IGJsb2NrLiBHZXRzCisgICAgICogbmVnYXRpdmUgd2hlbiB0aGUgd2luZG93IGlzIG1vdmVkIGJhY2t3YXJkcy4KKyAgICAgKi8KKworICAgIHVJbnQgbWF0Y2hfbGVuZ3RoOyAgICAgICAgICAgLyogbGVuZ3RoIG9mIGJlc3QgbWF0Y2ggKi8KKyAgICBJUG9zIHByZXZfbWF0Y2g7ICAgICAgICAgICAgIC8qIHByZXZpb3VzIG1hdGNoICovCisgICAgaW50IG1hdGNoX2F2YWlsYWJsZTsgICAgICAgICAvKiBzZXQgaWYgcHJldmlvdXMgbWF0Y2ggZXhpc3RzICovCisgICAgdUludCBzdHJzdGFydDsgICAgICAgICAgICAgICAvKiBzdGFydCBvZiBzdHJpbmcgdG8gaW5zZXJ0ICovCisgICAgdUludCBtYXRjaF9zdGFydDsgICAgICAgICAgICAvKiBzdGFydCBvZiBtYXRjaGluZyBzdHJpbmcgKi8KKyAgICB1SW50IGxvb2thaGVhZDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiB2YWxpZCBieXRlcyBhaGVhZCBpbiB3aW5kb3cgKi8KKworICAgIHVJbnQgcHJldl9sZW5ndGg7CisgICAgLyogTGVuZ3RoIG9mIHRoZSBiZXN0IG1hdGNoIGF0IHByZXZpb3VzIHN0ZXAuIE1hdGNoZXMgbm90IGdyZWF0ZXIgdGhhbiB0aGlzCisgICAgICogYXJlIGRpc2NhcmRlZC4gVGhpcyBpcyB1c2VkIGluIHRoZSBsYXp5IG1hdGNoIGV2YWx1YXRpb24uCisgICAgICovCisKKyAgICB1SW50IG1heF9jaGFpbl9sZW5ndGg7CisgICAgLyogVG8gc3BlZWQgdXAgZGVmbGF0aW9uLCBoYXNoIGNoYWlucyBhcmUgbmV2ZXIgc2VhcmNoZWQgYmV5b25kIHRoaXMKKyAgICAgKiBsZW5ndGguICBBIGhpZ2hlciBsaW1pdCBpbXByb3ZlcyBjb21wcmVzc2lvbiByYXRpbyBidXQgZGVncmFkZXMgdGhlCisgICAgICogc3BlZWQuCisgICAgICovCisKKyAgICB1SW50IG1heF9sYXp5X21hdGNoOworICAgIC8qIEF0dGVtcHQgdG8gZmluZCBhIGJldHRlciBtYXRjaCBvbmx5IHdoZW4gdGhlIGN1cnJlbnQgbWF0Y2ggaXMgc3RyaWN0bHkKKyAgICAgKiBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZS4gVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBvbmx5IGZvciBjb21wcmVzc2lvbgorICAgICAqIGxldmVscyA+PSA0LgorICAgICAqLworIyAgIGRlZmluZSBtYXhfaW5zZXJ0X2xlbmd0aCAgbWF4X2xhenlfbWF0Y2gKKyAgICAvKiBJbnNlcnQgbmV3IHN0cmluZ3MgaW4gdGhlIGhhc2ggdGFibGUgb25seSBpZiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdAorICAgICAqIGdyZWF0ZXIgdGhhbiB0aGlzIGxlbmd0aC4gVGhpcyBzYXZlcyB0aW1lIGJ1dCBkZWdyYWRlcyBjb21wcmVzc2lvbi4KKyAgICAgKiBtYXhfaW5zZXJ0X2xlbmd0aCBpcyB1c2VkIG9ubHkgZm9yIGNvbXByZXNzaW9uIGxldmVscyA8PSAzLgorICAgICAqLworCisgICAgaW50IGxldmVsOyAgICAvKiBjb21wcmVzc2lvbiBsZXZlbCAoMS4uOSkgKi8KKyAgICBpbnQgc3RyYXRlZ3k7IC8qIGZhdm9yIG9yIGZvcmNlIEh1ZmZtYW4gY29kaW5nKi8KKworICAgIHVJbnQgZ29vZF9tYXRjaDsKKyAgICAvKiBVc2UgYSBmYXN0ZXIgc2VhcmNoIHdoZW4gdGhlIHByZXZpb3VzIG1hdGNoIGlzIGxvbmdlciB0aGFuIHRoaXMgKi8KKworICAgIGludCBuaWNlX21hdGNoOyAvKiBTdG9wIHNlYXJjaGluZyB3aGVuIGN1cnJlbnQgbWF0Y2ggZXhjZWVkcyB0aGlzICovCisKKyAgICAgICAgICAgICAgICAvKiB1c2VkIGJ5IHRyZWVzLmM6ICovCisgICAgLyogRGlkbid0IHVzZSBjdF9kYXRhIHR5cGVkZWYgYmVsb3cgdG8gc3VwcHJlc3MgY29tcGlsZXIgd2FybmluZyAqLworICAgIHN0cnVjdCBjdF9kYXRhX3MgZHluX2x0cmVlW0hFQVBfU0laRV07ICAgLyogbGl0ZXJhbCBhbmQgbGVuZ3RoIHRyZWUgKi8KKyAgICBzdHJ1Y3QgY3RfZGF0YV9zIGR5bl9kdHJlZVsyKkRfQ09ERVMrMV07IC8qIGRpc3RhbmNlIHRyZWUgKi8KKyAgICBzdHJ1Y3QgY3RfZGF0YV9zIGJsX3RyZWVbMipCTF9DT0RFUysxXTsgIC8qIEh1ZmZtYW4gdHJlZSBmb3IgYml0IGxlbmd0aHMgKi8KKworICAgIHN0cnVjdCB0cmVlX2Rlc2NfcyBsX2Rlc2M7ICAgICAgICAgICAgICAgLyogZGVzYy4gZm9yIGxpdGVyYWwgdHJlZSAqLworICAgIHN0cnVjdCB0cmVlX2Rlc2NfcyBkX2Rlc2M7ICAgICAgICAgICAgICAgLyogZGVzYy4gZm9yIGRpc3RhbmNlIHRyZWUgKi8KKyAgICBzdHJ1Y3QgdHJlZV9kZXNjX3MgYmxfZGVzYzsgICAgICAgICAgICAgIC8qIGRlc2MuIGZvciBiaXQgbGVuZ3RoIHRyZWUgKi8KKworICAgIHVzaCBibF9jb3VudFtNQVhfQklUUysxXTsKKyAgICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi8KKworICAgIGludCBoZWFwWzIqTF9DT0RFUysxXTsgICAgICAvKiBoZWFwIHVzZWQgdG8gYnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgKi8KKyAgICBpbnQgaGVhcF9sZW47ICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBoZWFwICovCisgICAgaW50IGhlYXBfbWF4OyAgICAgICAgICAgICAgIC8qIGVsZW1lbnQgb2YgbGFyZ2VzdCBmcmVxdWVuY3kgKi8KKyAgICAvKiBUaGUgc29ucyBvZiBoZWFwW25dIGFyZSBoZWFwWzIqbl0gYW5kIGhlYXBbMipuKzFdLiBoZWFwWzBdIGlzIG5vdCB1c2VkLgorICAgICAqIFRoZSBzYW1lIGhlYXAgYXJyYXkgaXMgdXNlZCB0byBidWlsZCBhbGwgdHJlZXMuCisgICAgICovCisKKyAgICB1Y2ggZGVwdGhbMipMX0NPREVTKzFdOworICAgIC8qIERlcHRoIG9mIGVhY2ggc3VidHJlZSB1c2VkIGFzIHRpZSBicmVha2VyIGZvciB0cmVlcyBvZiBlcXVhbCBmcmVxdWVuY3kKKyAgICAgKi8KKworICAgIHVjaGYgKmxfYnVmOyAgICAgICAgICAvKiBidWZmZXIgZm9yIGxpdGVyYWxzIG9yIGxlbmd0aHMgKi8KKworICAgIHVJbnQgIGxpdF9idWZzaXplOworICAgIC8qIFNpemUgb2YgbWF0Y2ggYnVmZmVyIGZvciBsaXRlcmFscy9sZW5ndGhzLiAgVGhlcmUgYXJlIDQgcmVhc29ucyBmb3IKKyAgICAgKiBsaW1pdGluZyBsaXRfYnVmc2l6ZSB0byA2NEs6CisgICAgICogICAtIGZyZXF1ZW5jaWVzIGNhbiBiZSBrZXB0IGluIDE2IGJpdCBjb3VudGVycworICAgICAqICAgLSBpZiBjb21wcmVzc2lvbiBpcyBub3Qgc3VjY2Vzc2Z1bCBmb3IgdGhlIGZpcnN0IGJsb2NrLCBhbGwgaW5wdXQKKyAgICAgKiAgICAgZGF0YSBpcyBzdGlsbCBpbiB0aGUgd2luZG93IHNvIHdlIGNhbiBzdGlsbCBlbWl0IGEgc3RvcmVkIGJsb2NrIGV2ZW4KKyAgICAgKiAgICAgd2hlbiBpbnB1dCBjb21lcyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgKFRoaXMgY2FuIGFsc28gYmUgZG9uZSBmb3IKKyAgICAgKiAgICAgYWxsIGJsb2NrcyBpZiBsaXRfYnVmc2l6ZSBpcyBub3QgZ3JlYXRlciB0aGFuIDMySy4pCisgICAgICogICAtIGlmIGNvbXByZXNzaW9uIGlzIG5vdCBzdWNjZXNzZnVsIGZvciBhIGZpbGUgc21hbGxlciB0aGFuIDY0Sywgd2UgY2FuCisgICAgICogICAgIGV2ZW4gZW1pdCBhIHN0b3JlZCBmaWxlIGluc3RlYWQgb2YgYSBzdG9yZWQgYmxvY2sgKHNhdmluZyA1IGJ5dGVzKS4KKyAgICAgKiAgICAgVGhpcyBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIHppcCAobm90IGd6aXAgb3IgemxpYikuCisgICAgICogICAtIGNyZWF0aW5nIG5ldyBIdWZmbWFuIHRyZWVzIGxlc3MgZnJlcXVlbnRseSBtYXkgbm90IHByb3ZpZGUgZmFzdAorICAgICAqICAgICBhZGFwdGF0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIGlucHV0IGRhdGEgc3RhdGlzdGljcy4gKFRha2UgZm9yCisgICAgICogICAgIGV4YW1wbGUgYSBiaW5hcnkgZmlsZSB3aXRoIHBvb3JseSBjb21wcmVzc2libGUgY29kZSBmb2xsb3dlZCBieQorICAgICAqICAgICBhIGhpZ2hseSBjb21wcmVzc2libGUgc3RyaW5nIHRhYmxlLikgU21hbGxlciBidWZmZXIgc2l6ZXMgZ2l2ZQorICAgICAqICAgICBmYXN0IGFkYXB0YXRpb24gYnV0IGhhdmUgb2YgY291cnNlIHRoZSBvdmVyaGVhZCBvZiB0cmFuc21pdHRpbmcKKyAgICAgKiAgICAgdHJlZXMgbW9yZSBmcmVxdWVudGx5LgorICAgICAqICAgLSBJIGNhbid0IGNvdW50IGFib3ZlIDQKKyAgICAgKi8KKworICAgIHVJbnQgbGFzdF9saXQ7ICAgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqLworCisgICAgdXNoZiAqZF9idWY7CisgICAgLyogQnVmZmVyIGZvciBkaXN0YW5jZXMuIFRvIHNpbXBsaWZ5IHRoZSBjb2RlLCBkX2J1ZiBhbmQgbF9idWYgaGF2ZQorICAgICAqIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cy4gVG8gdXNlIGRpZmZlcmVudCBsZW5ndGhzLCBhbiBleHRyYSBmbGFnCisgICAgICogYXJyYXkgd291bGQgYmUgbmVjZXNzYXJ5LgorICAgICAqLworCisgICAgdWxnIG9wdF9sZW47ICAgICAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBvcHRpbWFsIHRyZWVzICovCisgICAgdWxnIHN0YXRpY19sZW47ICAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBzdGF0aWMgdHJlZXMgKi8KKyAgICB1SW50IG1hdGNoZXM7ICAgICAgIC8qIG51bWJlciBvZiBzdHJpbmcgbWF0Y2hlcyBpbiBjdXJyZW50IGJsb2NrICovCisgICAgdUludCBpbnNlcnQ7ICAgICAgICAvKiBieXRlcyBhdCBlbmQgb2Ygd2luZG93IGxlZnQgdG8gaW5zZXJ0ICovCisKKyNpZmRlZiBERUJVRworICAgIHVsZyBjb21wcmVzc2VkX2xlbjsgLyogdG90YWwgYml0IGxlbmd0aCBvZiBjb21wcmVzc2VkIGZpbGUgbW9kIDJeMzIgKi8KKyAgICB1bGcgYml0c19zZW50OyAgICAgIC8qIGJpdCBsZW5ndGggb2YgY29tcHJlc3NlZCBkYXRhIHNlbnQgbW9kIDJeMzIgKi8KKyNlbmRpZgorCisgICAgdXNoIGJpX2J1ZjsKKyAgICAvKiBPdXRwdXQgYnVmZmVyLiBiaXRzIGFyZSBpbnNlcnRlZCBzdGFydGluZyBhdCB0aGUgYm90dG9tIChsZWFzdAorICAgICAqIHNpZ25pZmljYW50IGJpdHMpLgorICAgICAqLworICAgIGludCBiaV92YWxpZDsKKyAgICAvKiBOdW1iZXIgb2YgdmFsaWQgYml0cyBpbiBiaV9idWYuICBBbGwgYml0cyBhYm92ZSB0aGUgbGFzdCB2YWxpZCBiaXQKKyAgICAgKiBhcmUgYWx3YXlzIHplcm8uCisgICAgICovCisKKyAgICB1bGcgaGlnaF93YXRlcjsKKyAgICAvKiBIaWdoIHdhdGVyIG1hcmsgb2Zmc2V0IGluIHdpbmRvdyBmb3IgaW5pdGlhbGl6ZWQgYnl0ZXMgLS0gYnl0ZXMgYWJvdmUKKyAgICAgKiB0aGlzIGFyZSBzZXQgdG8gemVybyBpbiBvcmRlciB0byBhdm9pZCBtZW1vcnkgY2hlY2sgd2FybmluZ3Mgd2hlbgorICAgICAqIGxvbmdlc3QgbWF0Y2ggcm91dGluZXMgYWNjZXNzIGJ5dGVzIHBhc3QgdGhlIGlucHV0LiAgVGhpcyBpcyB0aGVuCisgICAgICogdXBkYXRlZCB0byB0aGUgbmV3IGhpZ2ggd2F0ZXIgbWFyay4KKyAgICAgKi8KKworfSBGQVIgZGVmbGF0ZV9zdGF0ZTsKKworLyogT3V0cHV0IGEgYnl0ZSBvbiB0aGUgc3RyZWFtLgorICogSU4gYXNzZXJ0aW9uOiB0aGVyZSBpcyBlbm91Z2ggcm9vbSBpbiBwZW5kaW5nX2J1Zi4KKyAqLworI2RlZmluZSBwdXRfYnl0ZShzLCBjKSB7cy0+cGVuZGluZ19idWZbcy0+cGVuZGluZysrXSA9IChjKTt9CisKKworI2RlZmluZSBNSU5fTE9PS0FIRUFEIChNQVhfTUFUQ0grTUlOX01BVENIKzEpCisvKiBNaW5pbXVtIGFtb3VudCBvZiBsb29rYWhlYWQsIGV4Y2VwdCBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLgorICogU2VlIGRlZmxhdGUuYyBmb3IgY29tbWVudHMgYWJvdXQgdGhlIE1JTl9NQVRDSCsxLgorICovCisKKyNkZWZpbmUgTUFYX0RJU1QocykgICgocyktPndfc2l6ZS1NSU5fTE9PS0FIRUFEKQorLyogSW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhlIGNvZGUsIHBhcnRpY3VsYXJseSBvbiAxNiBiaXQgbWFjaGluZXMsIG1hdGNoCisgKiBkaXN0YW5jZXMgYXJlIGxpbWl0ZWQgdG8gTUFYX0RJU1QgaW5zdGVhZCBvZiBXU0laRS4KKyAqLworCisjZGVmaW5lIFdJTl9JTklUIE1BWF9NQVRDSAorLyogTnVtYmVyIG9mIGJ5dGVzIGFmdGVyIGVuZCBvZiBkYXRhIGluIHdpbmRvdyB0byBpbml0aWFsaXplIGluIG9yZGVyIHRvIGF2b2lkCisgICBtZW1vcnkgY2hlY2tlciBlcnJvcnMgZnJvbSBsb25nZXN0IG1hdGNoIHJvdXRpbmVzICovCisKKyAgICAgICAgLyogaW4gdHJlZXMuYyAqLwordm9pZCBaTElCX0lOVEVSTkFMIF90cl9pbml0IE9GKChkZWZsYXRlX3N0YXRlICpzKSk7CitpbnQgWkxJQl9JTlRFUk5BTCBfdHJfdGFsbHkgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIHVuc2lnbmVkIGRpc3QsIHVuc2lnbmVkIGxjKSk7Cit2b2lkIFpMSUJfSU5URVJOQUwgX3RyX2ZsdXNoX2Jsb2NrIE9GKChkZWZsYXRlX3N0YXRlICpzLCBjaGFyZiAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgdWxnIHN0b3JlZF9sZW4sIGludCBsYXN0KSk7Cit2b2lkIFpMSUJfSU5URVJOQUwgX3RyX2ZsdXNoX2JpdHMgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKK3ZvaWQgWkxJQl9JTlRFUk5BTCBfdHJfYWxpZ24gT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKK3ZvaWQgWkxJQl9JTlRFUk5BTCBfdHJfc3RvcmVkX2Jsb2NrIE9GKChkZWZsYXRlX3N0YXRlICpzLCBjaGFyZiAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgdWxnIHN0b3JlZF9sZW4sIGludCBsYXN0KSk7CisKKyNkZWZpbmUgZF9jb2RlKGRpc3QpIFwKKyAgICgoZGlzdCkgPCAyNTYgPyBfZGlzdF9jb2RlW2Rpc3RdIDogX2Rpc3RfY29kZVsyNTYrKChkaXN0KT4+NyldKQorLyogTWFwcGluZyBmcm9tIGEgZGlzdGFuY2UgdG8gYSBkaXN0YW5jZSBjb2RlLiBkaXN0IGlzIHRoZSBkaXN0YW5jZSAtIDEgYW5kCisgKiBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy4gX2Rpc3RfY29kZVsyNTZdIGFuZCBfZGlzdF9jb2RlWzI1N10gYXJlIG5ldmVyCisgKiB1c2VkLgorICovCisKKyNpZm5kZWYgREVCVUcKKy8qIElubGluZSB2ZXJzaW9ucyBvZiBfdHJfdGFsbHkgZm9yIHNwZWVkOiAqLworCisjaWYgZGVmaW5lZChHRU5fVFJFRVNfSCkgfHwgIWRlZmluZWQoU1REQykKKyAgZXh0ZXJuIHVjaCBaTElCX0lOVEVSTkFMIF9sZW5ndGhfY29kZVtdOworICBleHRlcm4gdWNoIFpMSUJfSU5URVJOQUwgX2Rpc3RfY29kZVtdOworI2Vsc2UKKyAgZXh0ZXJuIGNvbnN0IHVjaCBaTElCX0lOVEVSTkFMIF9sZW5ndGhfY29kZVtdOworICBleHRlcm4gY29uc3QgdWNoIFpMSUJfSU5URVJOQUwgX2Rpc3RfY29kZVtdOworI2VuZGlmCisKKyMgZGVmaW5lIF90cl90YWxseV9saXQocywgYywgZmx1c2gpIFwKKyAgeyB1Y2ggY2MgPSAoYyk7IFwKKyAgICBzLT5kX2J1ZltzLT5sYXN0X2xpdF0gPSAwOyBcCisgICAgcy0+bF9idWZbcy0+bGFzdF9saXQrK10gPSBjYzsgXAorICAgIHMtPmR5bl9sdHJlZVtjY10uRnJlcSsrOyBcCisgICAgZmx1c2ggPSAocy0+bGFzdF9saXQgPT0gcy0+bGl0X2J1ZnNpemUtMSk7IFwKKyAgIH0KKyMgZGVmaW5lIF90cl90YWxseV9kaXN0KHMsIGRpc3RhbmNlLCBsZW5ndGgsIGZsdXNoKSBcCisgIHsgdWNoIGxlbiA9IChsZW5ndGgpOyBcCisgICAgdXNoIGRpc3QgPSAoZGlzdGFuY2UpOyBcCisgICAgcy0+ZF9idWZbcy0+bGFzdF9saXRdID0gZGlzdDsgXAorICAgIHMtPmxfYnVmW3MtPmxhc3RfbGl0KytdID0gbGVuOyBcCisgICAgZGlzdC0tOyBcCisgICAgcy0+ZHluX2x0cmVlW19sZW5ndGhfY29kZVtsZW5dK0xJVEVSQUxTKzFdLkZyZXErKzsgXAorICAgIHMtPmR5bl9kdHJlZVtkX2NvZGUoZGlzdCldLkZyZXErKzsgXAorICAgIGZsdXNoID0gKHMtPmxhc3RfbGl0ID09IHMtPmxpdF9idWZzaXplLTEpOyBcCisgIH0KKyNlbHNlCisjIGRlZmluZSBfdHJfdGFsbHlfbGl0KHMsIGMsIGZsdXNoKSBmbHVzaCA9IF90cl90YWxseShzLCAwLCBjKQorIyBkZWZpbmUgX3RyX3RhbGx5X2Rpc3QocywgZGlzdGFuY2UsIGxlbmd0aCwgZmx1c2gpIFwKKyAgICAgICAgICAgICAgZmx1c2ggPSBfdHJfdGFsbHkocywgZGlzdGFuY2UsIGxlbmd0aCkKKyNlbmRpZgorCisjZW5kaWYgLyogREVGTEFURV9IICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2Z4X3psaWJfYWRsZXIzMi5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2FkbGVyMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmE4NGNlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2FkbGVyMzIuYwpAQCAtMCwwICsxLDE3OSBAQAorLyogYWRsZXIzMi5jIC0tIGNvbXB1dGUgdGhlIEFkbGVyLTMyIGNoZWNrc3VtIG9mIGEgZGF0YSBzdHJlYW0KKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDExIE1hcmsgQWRsZXIKKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAqLworCisvKiBAKCMpICRJZCQgKi8KKworI2luY2x1ZGUgInp1dGlsLmgiCisKKyNkZWZpbmUgbG9jYWwgc3RhdGljCisKK2xvY2FsIHVMb25nIGFkbGVyMzJfY29tYmluZV8gT0YoKHVMb25nIGFkbGVyMSwgdUxvbmcgYWRsZXIyLCB6X29mZjY0X3QgbGVuMikpOworCisjZGVmaW5lIEJBU0UgNjU1MjEgICAgICAvKiBsYXJnZXN0IHByaW1lIHNtYWxsZXIgdGhhbiA2NTUzNiAqLworI2RlZmluZSBOTUFYIDU1NTIKKy8qIE5NQVggaXMgdGhlIGxhcmdlc3QgbiBzdWNoIHRoYXQgMjU1bihuKzEpLzIgKyAobisxKShCQVNFLTEpIDw9IDJeMzItMSAqLworCisjZGVmaW5lIERPMShidWYsaSkgIHthZGxlciArPSAoYnVmKVtpXTsgc3VtMiArPSBhZGxlcjt9CisjZGVmaW5lIERPMihidWYsaSkgIERPMShidWYsaSk7IERPMShidWYsaSsxKTsKKyNkZWZpbmUgRE80KGJ1ZixpKSAgRE8yKGJ1ZixpKTsgRE8yKGJ1ZixpKzIpOworI2RlZmluZSBETzgoYnVmLGkpICBETzQoYnVmLGkpOyBETzQoYnVmLGkrNCk7CisjZGVmaW5lIERPMTYoYnVmKSAgIERPOChidWYsMCk7IERPOChidWYsOCk7CisKKy8qIHVzZSBOT19ESVZJREUgaWYgeW91ciBwcm9jZXNzb3IgZG9lcyBub3QgZG8gZGl2aXNpb24gaW4gaGFyZHdhcmUgLS0KKyAgIHRyeSBpdCBib3RoIHdheXMgdG8gc2VlIHdoaWNoIGlzIGZhc3RlciAqLworI2lmZGVmIE5PX0RJVklERQorLyogbm90ZSB0aGF0IHRoaXMgYXNzdW1lcyBCQVNFIGlzIDY1NTIxLCB3aGVyZSA2NTUzNiAlIDY1NTIxID09IDE1CisgICAodGhhbmsgeW91IHRvIEpvaG4gUmVpc2VyIGZvciBwb2ludGluZyB0aGlzIG91dCkgKi8KKyMgIGRlZmluZSBDSE9QKGEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgdW5zaWduZWQgbG9uZyB0bXAgPSBhID4+IDE2OyBcCisgICAgICAgIGEgJj0gMHhmZmZmVUw7IFwKKyAgICAgICAgYSArPSAodG1wIDw8IDQpIC0gdG1wOyBcCisgICAgfSB3aGlsZSAoMCkKKyMgIGRlZmluZSBNT0QyOChhKSBcCisgICAgZG8geyBcCisgICAgICAgIENIT1AoYSk7IFwKKyAgICAgICAgaWYgKGEgPj0gQkFTRSkgYSAtPSBCQVNFOyBcCisgICAgfSB3aGlsZSAoMCkKKyMgIGRlZmluZSBNT0QoYSkgXAorICAgIGRvIHsgXAorICAgICAgICBDSE9QKGEpOyBcCisgICAgICAgIE1PRDI4KGEpOyBcCisgICAgfSB3aGlsZSAoMCkKKyMgIGRlZmluZSBNT0Q2MyhhKSBcCisgICAgZG8geyAvKiB0aGlzIGFzc3VtZXMgYSBpcyBub3QgbmVnYXRpdmUgKi8gXAorICAgICAgICB6X29mZjY0X3QgdG1wID0gYSA+PiAzMjsgXAorICAgICAgICBhICY9IDB4ZmZmZmZmZmZMOyBcCisgICAgICAgIGEgKz0gKHRtcCA8PCA4KSAtICh0bXAgPDwgNSkgKyB0bXA7IFwKKyAgICAgICAgdG1wID0gYSA+PiAxNjsgXAorICAgICAgICBhICY9IDB4ZmZmZkw7IFwKKyAgICAgICAgYSArPSAodG1wIDw8IDQpIC0gdG1wOyBcCisgICAgICAgIHRtcCA9IGEgPj4gMTY7IFwKKyAgICAgICAgYSAmPSAweGZmZmZMOyBcCisgICAgICAgIGEgKz0gKHRtcCA8PCA0KSAtIHRtcDsgXAorICAgICAgICBpZiAoYSA+PSBCQVNFKSBhIC09IEJBU0U7IFwKKyAgICB9IHdoaWxlICgwKQorI2Vsc2UKKyMgIGRlZmluZSBNT0QoYSkgYSAlPSBCQVNFCisjICBkZWZpbmUgTU9EMjgoYSkgYSAlPSBCQVNFCisjICBkZWZpbmUgTU9ENjMoYSkgYSAlPSBCQVNFCisjZW5kaWYKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwordUxvbmcgWkVYUE9SVCBhZGxlcjMyKAorICAgIHVMb25nIGFkbGVyLAorICAgIGNvbnN0IEJ5dGVmICpidWYsCisgICAgdUludCBsZW4pCit7CisgICAgdW5zaWduZWQgbG9uZyBzdW0yOworICAgIHVuc2lnbmVkIG47CisKKyAgICAvKiBzcGxpdCBBZGxlci0zMiBpbnRvIGNvbXBvbmVudCBzdW1zICovCisgICAgc3VtMiA9IChhZGxlciA+PiAxNikgJiAweGZmZmY7CisgICAgYWRsZXIgJj0gMHhmZmZmOworCisgICAgLyogaW4gY2FzZSB1c2VyIGxpa2VzIGRvaW5nIGEgYnl0ZSBhdCBhIHRpbWUsIGtlZXAgaXQgZmFzdCAqLworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICBhZGxlciArPSBidWZbMF07CisgICAgICAgIGlmIChhZGxlciA+PSBCQVNFKQorICAgICAgICAgICAgYWRsZXIgLT0gQkFTRTsKKyAgICAgICAgc3VtMiArPSBhZGxlcjsKKyAgICAgICAgaWYgKHN1bTIgPj0gQkFTRSkKKyAgICAgICAgICAgIHN1bTIgLT0gQkFTRTsKKyAgICAgICAgcmV0dXJuIGFkbGVyIHwgKHN1bTIgPDwgMTYpOworICAgIH0KKworICAgIC8qIGluaXRpYWwgQWRsZXItMzIgdmFsdWUgKGRlZmVycmVkIGNoZWNrIGZvciBsZW4gPT0gMSBzcGVlZCkgKi8KKyAgICBpZiAoYnVmID09IFpfTlVMTCkKKyAgICAgICAgcmV0dXJuIDFMOworCisgICAgLyogaW4gY2FzZSBzaG9ydCBsZW5ndGhzIGFyZSBwcm92aWRlZCwga2VlcCBpdCBzb21ld2hhdCBmYXN0ICovCisgICAgaWYgKGxlbiA8IDE2KSB7CisgICAgICAgIHdoaWxlIChsZW4tLSkgeworICAgICAgICAgICAgYWRsZXIgKz0gKmJ1ZisrOworICAgICAgICAgICAgc3VtMiArPSBhZGxlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWRsZXIgPj0gQkFTRSkKKyAgICAgICAgICAgIGFkbGVyIC09IEJBU0U7CisgICAgICAgIE1PRDI4KHN1bTIpOyAgICAgICAgICAgIC8qIG9ubHkgYWRkZWQgc28gbWFueSBCQVNFJ3MgKi8KKyAgICAgICAgcmV0dXJuIGFkbGVyIHwgKHN1bTIgPDwgMTYpOworICAgIH0KKworICAgIC8qIGRvIGxlbmd0aCBOTUFYIGJsb2NrcyAtLSByZXF1aXJlcyBqdXN0IG9uZSBtb2R1bG8gb3BlcmF0aW9uICovCisgICAgd2hpbGUgKGxlbiA+PSBOTUFYKSB7CisgICAgICAgIGxlbiAtPSBOTUFYOworICAgICAgICBuID0gTk1BWCAvIDE2OyAgICAgICAgICAvKiBOTUFYIGlzIGRpdmlzaWJsZSBieSAxNiAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICBETzE2KGJ1Zik7ICAgICAgICAgIC8qIDE2IHN1bXMgdW5yb2xsZWQgKi8KKyAgICAgICAgICAgIGJ1ZiArPSAxNjsKKyAgICAgICAgfSB3aGlsZSAoLS1uKTsKKyAgICAgICAgTU9EKGFkbGVyKTsKKyAgICAgICAgTU9EKHN1bTIpOworICAgIH0KKworICAgIC8qIGRvIHJlbWFpbmluZyBieXRlcyAobGVzcyB0aGFuIE5NQVgsIHN0aWxsIGp1c3Qgb25lIG1vZHVsbykgKi8KKyAgICBpZiAobGVuKSB7ICAgICAgICAgICAgICAgICAgLyogYXZvaWQgbW9kdWxvcyBpZiBub25lIHJlbWFpbmluZyAqLworICAgICAgICB3aGlsZSAobGVuID49IDE2KSB7CisgICAgICAgICAgICBsZW4gLT0gMTY7CisgICAgICAgICAgICBETzE2KGJ1Zik7CisgICAgICAgICAgICBidWYgKz0gMTY7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGxlbi0tKSB7CisgICAgICAgICAgICBhZGxlciArPSAqYnVmKys7CisgICAgICAgICAgICBzdW0yICs9IGFkbGVyOworICAgICAgICB9CisgICAgICAgIE1PRChhZGxlcik7CisgICAgICAgIE1PRChzdW0yKTsKKyAgICB9CisKKyAgICAvKiByZXR1cm4gcmVjb21iaW5lZCBzdW1zICovCisgICAgcmV0dXJuIGFkbGVyIHwgKHN1bTIgPDwgMTYpOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitsb2NhbCB1TG9uZyBhZGxlcjMyX2NvbWJpbmVfKAorICAgIHVMb25nIGFkbGVyMSwKKyAgICB1TG9uZyBhZGxlcjIsCisgICAgel9vZmY2NF90IGxlbjIpCit7CisgICAgdW5zaWduZWQgbG9uZyBzdW0xOworICAgIHVuc2lnbmVkIGxvbmcgc3VtMjsKKyAgICB1bnNpZ25lZCByZW07CisKKyAgICAvKiBmb3IgbmVnYXRpdmUgbGVuLCByZXR1cm4gaW52YWxpZCBhZGxlcjMyIGFzIGEgY2x1ZSBmb3IgZGVidWdnaW5nICovCisgICAgaWYgKGxlbjIgPCAwKQorICAgICAgICByZXR1cm4gMHhmZmZmZmZmZlVMOworCisgICAgLyogdGhlIGRlcml2YXRpb24gb2YgdGhpcyBmb3JtdWxhIGlzIGxlZnQgYXMgYW4gZXhlcmNpc2UgZm9yIHRoZSByZWFkZXIgKi8KKyAgICBNT0Q2MyhsZW4yKTsgICAgICAgICAgICAgICAgLyogYXNzdW1lcyBsZW4yID49IDAgKi8KKyAgICByZW0gPSAodW5zaWduZWQpbGVuMjsKKyAgICBzdW0xID0gYWRsZXIxICYgMHhmZmZmOworICAgIHN1bTIgPSByZW0gKiBzdW0xOworICAgIE1PRChzdW0yKTsKKyAgICBzdW0xICs9IChhZGxlcjIgJiAweGZmZmYpICsgQkFTRSAtIDE7CisgICAgc3VtMiArPSAoKGFkbGVyMSA+PiAxNikgJiAweGZmZmYpICsgKChhZGxlcjIgPj4gMTYpICYgMHhmZmZmKSArIEJBU0UgLSByZW07CisgICAgaWYgKHN1bTEgPj0gQkFTRSkgc3VtMSAtPSBCQVNFOworICAgIGlmIChzdW0xID49IEJBU0UpIHN1bTEgLT0gQkFTRTsKKyAgICBpZiAoc3VtMiA+PSAoQkFTRSA8PCAxKSkgc3VtMiAtPSAoQkFTRSA8PCAxKTsKKyAgICBpZiAoc3VtMiA+PSBCQVNFKSBzdW0yIC09IEJBU0U7CisgICAgcmV0dXJuIHN1bTEgfCAoc3VtMiA8PCAxNik7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK3VMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lKAorICAgIHVMb25nIGFkbGVyMSwKKyAgICB1TG9uZyBhZGxlcjIsCisgICAgel9vZmZfdCBsZW4yKQoreworICAgIHJldHVybiBhZGxlcjMyX2NvbWJpbmVfKGFkbGVyMSwgYWRsZXIyLCBsZW4yKTsKK30KKwordUxvbmcgWkVYUE9SVCBhZGxlcjMyX2NvbWJpbmU2NCgKKyAgICB1TG9uZyBhZGxlcjEsCisgICAgdUxvbmcgYWRsZXIyLAorICAgIHpfb2ZmNjRfdCBsZW4yKQoreworICAgIHJldHVybiBhZGxlcjMyX2NvbWJpbmVfKGFkbGVyMSwgYWRsZXIyLCBsZW4yKTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl9jb21wcmVzcy5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2NvbXByZXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMxNGZiYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl9jb21wcmVzcy5jCkBAIC0wLDAgKzEsODAgQEAKKy8qIGNvbXByZXNzLmMgLS0gY29tcHJlc3MgYSBtZW1vcnkgYnVmZmVyCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNSBKZWFuLWxvdXAgR2FpbGx5LgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKy8qIEAoIykgJElkJCAqLworCisjZGVmaW5lIFpMSUJfSU5URVJOQUwKKyNpbmNsdWRlICJ6bGliLmgiCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICBDb21wcmVzc2VzIHRoZSBzb3VyY2UgYnVmZmVyIGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4gVGhlIGxldmVsCisgICBwYXJhbWV0ZXIgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4gZGVmbGF0ZUluaXQuICBzb3VyY2VMZW4gaXMgdGhlIGJ5dGUKKyAgIGxlbmd0aCBvZiB0aGUgc291cmNlIGJ1ZmZlci4gVXBvbiBlbnRyeSwgZGVzdExlbiBpcyB0aGUgdG90YWwgc2l6ZSBvZiB0aGUKKyAgIGRlc3RpbmF0aW9uIGJ1ZmZlciwgd2hpY2ggbXVzdCBiZSBhdCBsZWFzdCAwLjElIGxhcmdlciB0aGFuIHNvdXJjZUxlbiBwbHVzCisgICAxMiBieXRlcy4gVXBvbiBleGl0LCBkZXN0TGVuIGlzIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgY29tcHJlc3NlZCBidWZmZXIuCisKKyAgICAgY29tcHJlc3MyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAorICAgbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyLAorICAgWl9TVFJFQU1fRVJST1IgaWYgdGhlIGxldmVsIHBhcmFtZXRlciBpcyBpbnZhbGlkLgorKi8KK2ludCBaRVhQT1JUIGNvbXByZXNzMiAoCisgICAgQnl0ZWYgKmRlc3QsCisgICAgdUxvbmdmICpkZXN0TGVuLAorICAgIGNvbnN0IEJ5dGVmICpzb3VyY2UsCisgICAgdUxvbmcgc291cmNlTGVuLAorICAgIGludCBsZXZlbCkKK3sKKyAgICB6X3N0cmVhbSBzdHJlYW07CisgICAgaW50IGVycjsKKworICAgIHN0cmVhbS5uZXh0X2luID0gKHpfY29uc3QgQnl0ZWYgKilzb3VyY2U7CisgICAgc3RyZWFtLmF2YWlsX2luID0gKHVJbnQpc291cmNlTGVuOworI2lmZGVmIE1BWFNFR182NEsKKyAgICAvKiBDaGVjayBmb3Igc291cmNlID4gNjRLIG9uIDE2LWJpdCBtYWNoaW5lOiAqLworICAgIGlmICgodUxvbmcpc3RyZWFtLmF2YWlsX2luICE9IHNvdXJjZUxlbikgcmV0dXJuIFpfQlVGX0VSUk9SOworI2VuZGlmCisgICAgc3RyZWFtLm5leHRfb3V0ID0gZGVzdDsKKyAgICBzdHJlYW0uYXZhaWxfb3V0ID0gKHVJbnQpKmRlc3RMZW47CisgICAgaWYgKCh1TG9uZylzdHJlYW0uYXZhaWxfb3V0ICE9ICpkZXN0TGVuKSByZXR1cm4gWl9CVUZfRVJST1I7CisKKyAgICBzdHJlYW0uemFsbG9jID0gKGFsbG9jX2Z1bmMpMDsKKyAgICBzdHJlYW0uemZyZWUgPSAoZnJlZV9mdW5jKTA7CisgICAgc3RyZWFtLm9wYXF1ZSA9ICh2b2lkcGYpMDsKKworICAgIGVyciA9IGRlZmxhdGVJbml0KCZzdHJlYW0sIGxldmVsKTsKKyAgICBpZiAoZXJyICE9IFpfT0spIHJldHVybiBlcnI7CisKKyAgICBlcnIgPSBkZWZsYXRlKCZzdHJlYW0sIFpfRklOSVNIKTsKKyAgICBpZiAoZXJyICE9IFpfU1RSRUFNX0VORCkgeworICAgICAgICBkZWZsYXRlRW5kKCZzdHJlYW0pOworICAgICAgICByZXR1cm4gZXJyID09IFpfT0sgPyBaX0JVRl9FUlJPUiA6IGVycjsKKyAgICB9CisgICAgKmRlc3RMZW4gPSBzdHJlYW0udG90YWxfb3V0OworCisgICAgZXJyID0gZGVmbGF0ZUVuZCgmc3RyZWFtKTsKKyAgICByZXR1cm4gZXJyOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworaW50IFpFWFBPUlQgY29tcHJlc3MgKAorICAgIEJ5dGVmICpkZXN0LAorICAgIHVMb25nZiAqZGVzdExlbiwKKyAgICBjb25zdCBCeXRlZiAqc291cmNlLAorICAgIHVMb25nIHNvdXJjZUxlbikKK3sKKyAgICByZXR1cm4gY29tcHJlc3MyKGRlc3QsIGRlc3RMZW4sIHNvdXJjZSwgc291cmNlTGVuLCBaX0RFRkFVTFRfQ09NUFJFU1NJT04pOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgSWYgdGhlIGRlZmF1bHQgbWVtTGV2ZWwgb3Igd2luZG93Qml0cyBmb3IgZGVmbGF0ZUluaXQoKSBpcyBjaGFuZ2VkLCB0aGVuCisgICB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWQuCisgKi8KK3VMb25nIFpFWFBPUlQgY29tcHJlc3NCb3VuZCAoCisgICAgdUxvbmcgc291cmNlTGVuKQoreworICAgIHJldHVybiBzb3VyY2VMZW4gKyAoc291cmNlTGVuID4+IDEyKSArIChzb3VyY2VMZW4gPj4gMTQpICsKKyAgICAgICAgICAgKHNvdXJjZUxlbiA+PiAyNSkgKyAxMzsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl9jcmMzMi5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2NyYzMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwNzJjOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl9jcmMzMi5jCkBAIC0wLDAgKzEsNDI1IEBACisvKiBjcmMzMi5jIC0tIGNvbXB1dGUgdGhlIENSQy0zMiBvZiBhIGRhdGEgc3RyZWFtCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNiwgMjAxMCwgMjAxMSwgMjAxMiBNYXJrIEFkbGVyCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgKgorICogVGhhbmtzIHRvIFJvZG5leSBCcm93biA8cmJyb3duNjRAY3NjLmNvbS5hdT4gZm9yIGhpcyBjb250cmlidXRpb24gb2YgZmFzdGVyCisgKiBDUkMgbWV0aG9kczogZXhjbHVzaXZlLW9yaW5nIDMyIGJpdHMgb2YgZGF0YSBhdCBhIHRpbWUsIGFuZCBwcmUtY29tcHV0aW5nCisgKiB0YWJsZXMgZm9yIHVwZGF0aW5nIHRoZSBzaGlmdCByZWdpc3RlciBpbiBvbmUgc3RlcCB3aXRoIHRocmVlIGV4Y2x1c2l2ZS1vcnMKKyAqIGluc3RlYWQgb2YgZm91ciBzdGVwcyB3aXRoIGZvdXIgZXhjbHVzaXZlLW9ycy4gIFRoaXMgcmVzdWx0cyBpbiBhYm91dCBhCisgKiBmYWN0b3Igb2YgdHdvIGluY3JlYXNlIGluIHNwZWVkIG9uIGEgUG93ZXIgUEMgRzQgKFBQQzc0NTUpIHVzaW5nIGdjYyAtTzMuCisgKi8KKworLyogQCgjKSAkSWQkICovCisKKy8qCisgIE5vdGUgb24gdGhlIHVzZSBvZiBEWU5BTUlDX0NSQ19UQUJMRTogdGhlcmUgaXMgbm8gbXV0ZXggb3Igc2VtYXBob3JlCisgIHByb3RlY3Rpb24gb24gdGhlIHN0YXRpYyB2YXJpYWJsZXMgdXNlZCB0byBjb250cm9sIHRoZSBmaXJzdC11c2UgZ2VuZXJhdGlvbgorICBvZiB0aGUgY3JjIHRhYmxlcy4gIFRoZXJlZm9yZSwgaWYgeW91ICNkZWZpbmUgRFlOQU1JQ19DUkNfVEFCTEUsIHlvdSBzaG91bGQKKyAgZmlyc3QgY2FsbCBnZXRfY3JjX3RhYmxlKCkgdG8gaW5pdGlhbGl6ZSB0aGUgdGFibGVzIGJlZm9yZSBhbGxvd2luZyBtb3JlIHRoYW4KKyAgb25lIHRocmVhZCB0byB1c2UgY3JjMzIoKS4KKworICBEWU5BTUlDX0NSQ19UQUJMRSBhbmQgTUFLRUNSQ0ggY2FuIGJlICNkZWZpbmVkIHRvIHdyaXRlIG91dCBjcmMzMi5oLgorICovCisKKyNpZmRlZiBNQUtFQ1JDSAorIyAgaW5jbHVkZSA8c3RkaW8uaD4KKyMgIGlmbmRlZiBEWU5BTUlDX0NSQ19UQUJMRQorIyAgICBkZWZpbmUgRFlOQU1JQ19DUkNfVEFCTEUKKyMgIGVuZGlmIC8qICFEWU5BTUlDX0NSQ19UQUJMRSAqLworI2VuZGlmIC8qIE1BS0VDUkNIICovCisKKyNpbmNsdWRlICJ6dXRpbC5oIiAgICAgIC8qIGZvciBTVERDIGFuZCBGQVIgZGVmaW5pdGlvbnMgKi8KKworI2RlZmluZSBsb2NhbCBzdGF0aWMKKworLyogRGVmaW5pdGlvbnMgZm9yIGRvaW5nIHRoZSBjcmMgZm91ciBkYXRhIGJ5dGVzIGF0IGEgdGltZS4gKi8KKyNpZiAhZGVmaW5lZChOT0JZRk9VUikgJiYgZGVmaW5lZChaX1U0KQorIyAgZGVmaW5lIEJZRk9VUgorI2VuZGlmCisjaWZkZWYgQllGT1VSCisgICBsb2NhbCB1bnNpZ25lZCBsb25nIGNyYzMyX2xpdHRsZSBPRigodW5zaWduZWQgbG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICosIHVuc2lnbmVkKSk7CisgICBsb2NhbCB1bnNpZ25lZCBsb25nIGNyYzMyX2JpZyBPRigodW5zaWduZWQgbG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICosIHVuc2lnbmVkKSk7CisjICBkZWZpbmUgVEJMUyA4CisjZWxzZQorIyAgZGVmaW5lIFRCTFMgMQorI2VuZGlmIC8qIEJZRk9VUiAqLworCisvKiBMb2NhbCBmdW5jdGlvbnMgZm9yIGNyYyBjb25jYXRlbmF0aW9uICovCitsb2NhbCB1bnNpZ25lZCBsb25nIGdmMl9tYXRyaXhfdGltZXMgT0YoKHVuc2lnbmVkIGxvbmcgKm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2ZWMpKTsKK2xvY2FsIHZvaWQgZ2YyX21hdHJpeF9zcXVhcmUgT0YoKHVuc2lnbmVkIGxvbmcgKnNxdWFyZSwgdW5zaWduZWQgbG9uZyAqbWF0KSk7Citsb2NhbCB1TG9uZyBjcmMzMl9jb21iaW5lXyBPRigodUxvbmcgY3JjMSwgdUxvbmcgY3JjMiwgel9vZmY2NF90IGxlbjIpKTsKKworCisjaWZkZWYgRFlOQU1JQ19DUkNfVEFCTEUKKworbG9jYWwgdm9sYXRpbGUgaW50IGNyY190YWJsZV9lbXB0eSA9IDE7Citsb2NhbCB6X2NyY190IEZBUiBjcmNfdGFibGVbVEJMU11bMjU2XTsKK2xvY2FsIHZvaWQgbWFrZV9jcmNfdGFibGUgT0YoKHZvaWQpKTsKKyNpZmRlZiBNQUtFQ1JDSAorICAgbG9jYWwgdm9pZCB3cml0ZV90YWJsZSBPRigoRklMRSAqLCBjb25zdCB6X2NyY190IEZBUiAqKSk7CisjZW5kaWYgLyogTUFLRUNSQ0ggKi8KKy8qCisgIEdlbmVyYXRlIHRhYmxlcyBmb3IgYSBieXRlLXdpc2UgMzItYml0IENSQyBjYWxjdWxhdGlvbiBvbiB0aGUgcG9seW5vbWlhbDoKKyAgeF4zMit4XjI2K3heMjMreF4yMit4XjE2K3heMTIreF4xMSt4XjEwK3heOCt4XjcreF41K3heNCt4XjIreCsxLgorCisgIFBvbHlub21pYWxzIG92ZXIgR0YoMikgYXJlIHJlcHJlc2VudGVkIGluIGJpbmFyeSwgb25lIGJpdCBwZXIgY29lZmZpY2llbnQsCisgIHdpdGggdGhlIGxvd2VzdCBwb3dlcnMgaW4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0LiAgVGhlbiBhZGRpbmcgcG9seW5vbWlhbHMKKyAgaXMganVzdCBleGNsdXNpdmUtb3IsIGFuZCBtdWx0aXBseWluZyBhIHBvbHlub21pYWwgYnkgeCBpcyBhIHJpZ2h0IHNoaWZ0IGJ5CisgIG9uZS4gIElmIHdlIGNhbGwgdGhlIGFib3ZlIHBvbHlub21pYWwgcCwgYW5kIHJlcHJlc2VudCBhIGJ5dGUgYXMgdGhlCisgIHBvbHlub21pYWwgcSwgYWxzbyB3aXRoIHRoZSBsb3dlc3QgcG93ZXIgaW4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IChzbyB0aGUKKyAgYnl0ZSAweGIxIGlzIHRoZSBwb2x5bm9taWFsIHheNyt4XjMreCsxKSwgdGhlbiB0aGUgQ1JDIGlzIChxKnheMzIpIG1vZCBwLAorICB3aGVyZSBhIG1vZCBiIG1lYW5zIHRoZSByZW1haW5kZXIgYWZ0ZXIgZGl2aWRpbmcgYSBieSBiLgorCisgIFRoaXMgY2FsY3VsYXRpb24gaXMgZG9uZSB1c2luZyB0aGUgc2hpZnQtcmVnaXN0ZXIgbWV0aG9kIG9mIG11bHRpcGx5aW5nIGFuZAorICB0YWtpbmcgdGhlIHJlbWFpbmRlci4gIFRoZSByZWdpc3RlciBpcyBpbml0aWFsaXplZCB0byB6ZXJvLCBhbmQgZm9yIGVhY2gKKyAgaW5jb21pbmcgYml0LCB4XjMyIGlzIGFkZGVkIG1vZCBwIHRvIHRoZSByZWdpc3RlciBpZiB0aGUgYml0IGlzIGEgb25lICh3aGVyZQorICB4XjMyIG1vZCBwIGlzIHAreF4zMiA9IHheMjYrLi4uKzEpLCBhbmQgdGhlIHJlZ2lzdGVyIGlzIG11bHRpcGxpZWQgbW9kIHAgYnkKKyAgeCAod2hpY2ggaXMgc2hpZnRpbmcgcmlnaHQgYnkgb25lIGFuZCBhZGRpbmcgeF4zMiBtb2QgcCBpZiB0aGUgYml0IHNoaWZ0ZWQKKyAgb3V0IGlzIGEgb25lKS4gIFdlIHN0YXJ0IHdpdGggdGhlIGhpZ2hlc3QgcG93ZXIgKGxlYXN0IHNpZ25pZmljYW50IGJpdCkgb2YKKyAgcSBhbmQgcmVwZWF0IGZvciBhbGwgZWlnaHQgYml0cyBvZiBxLgorCisgIFRoZSBmaXJzdCB0YWJsZSBpcyBzaW1wbHkgdGhlIENSQyBvZiBhbGwgcG9zc2libGUgZWlnaHQgYml0IHZhbHVlcy4gIFRoaXMgaXMKKyAgYWxsIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZ2VuZXJhdGUgQ1JDcyBvbiBkYXRhIGEgYnl0ZSBhdCBhIHRpbWUgZm9yIGFsbAorICBjb21iaW5hdGlvbnMgb2YgQ1JDIHJlZ2lzdGVyIHZhbHVlcyBhbmQgaW5jb21pbmcgYnl0ZXMuICBUaGUgcmVtYWluaW5nIHRhYmxlcworICBhbGxvdyBmb3Igd29yZC1hdC1hLXRpbWUgQ1JDIGNhbGN1bGF0aW9uIGZvciBib3RoIGJpZy1lbmRpYW4gYW5kIGxpdHRsZS0KKyAgZW5kaWFuIG1hY2hpbmVzLCB3aGVyZSBhIHdvcmQgaXMgZm91ciBieXRlcy4KKyovCitsb2NhbCB2b2lkIG1ha2VfY3JjX3RhYmxlKCkKK3sKKyAgICB6X2NyY190IGM7CisgICAgaW50IG4sIGs7CisgICAgel9jcmNfdCBwb2x5OyAgICAgICAgICAgICAgICAgICAgICAgLyogcG9seW5vbWlhbCBleGNsdXNpdmUtb3IgcGF0dGVybiAqLworICAgIC8qIHRlcm1zIG9mIHBvbHlub21pYWwgZGVmaW5pbmcgdGhpcyBjcmMgKGV4Y2VwdCB4XjMyKTogKi8KKyAgICBzdGF0aWMgdm9sYXRpbGUgaW50IGZpcnN0ID0gMTsgICAgICAvKiBmbGFnIHRvIGxpbWl0IGNvbmN1cnJlbnQgbWFraW5nICovCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFtdID0gezAsMSwyLDQsNSw3LDgsMTAsMTEsMTIsMTYsMjIsMjMsMjZ9OworCisgICAgLyogU2VlIGlmIGFub3RoZXIgdGFzayBpcyBhbHJlYWR5IGRvaW5nIHRoaXMgKG5vdCB0aHJlYWQtc2FmZSwgYnV0IGJldHRlcgorICAgICAgIHRoYW4gbm90aGluZyAtLSBzaWduaWZpY2FudGx5IHJlZHVjZXMgZHVyYXRpb24gb2YgdnVsbmVyYWJpbGl0eSBpbgorICAgICAgIGNhc2UgdGhlIGFkdmljZSBhYm91dCBEWU5BTUlDX0NSQ19UQUJMRSBpcyBpZ25vcmVkKSAqLworICAgIGlmIChmaXJzdCkgeworICAgICAgICBmaXJzdCA9IDA7CisKKyAgICAgICAgLyogbWFrZSBleGNsdXNpdmUtb3IgcGF0dGVybiBmcm9tIHBvbHlub21pYWwgKDB4ZWRiODgzMjBVTCkgKi8KKyAgICAgICAgcG9seSA9IDA7CisgICAgICAgIGZvciAobiA9IDA7IG4gPCAoaW50KShzaXplb2YocCkvc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKTsgbisrKQorICAgICAgICAgICAgcG9seSB8PSAoel9jcmNfdCkxIDw8ICgzMSAtIHBbbl0pOworCisgICAgICAgIC8qIGdlbmVyYXRlIGEgY3JjIGZvciBldmVyeSA4LWJpdCB2YWx1ZSAqLworICAgICAgICBmb3IgKG4gPSAwOyBuIDwgMjU2OyBuKyspIHsKKyAgICAgICAgICAgIGMgPSAoel9jcmNfdCluOworICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IDg7IGsrKykKKyAgICAgICAgICAgICAgICBjID0gYyAmIDEgPyBwb2x5IF4gKGMgPj4gMSkgOiBjID4+IDE7CisgICAgICAgICAgICBjcmNfdGFibGVbMF1bbl0gPSBjOworICAgICAgICB9CisKKyNpZmRlZiBCWUZPVVIKKyAgICAgICAgLyogZ2VuZXJhdGUgY3JjIGZvciBlYWNoIHZhbHVlIGZvbGxvd2VkIGJ5IG9uZSwgdHdvLCBhbmQgdGhyZWUgemVyb3MsCisgICAgICAgICAgIGFuZCB0aGVuIHRoZSBieXRlIHJldmVyc2FsIG9mIHRob3NlIGFzIHdlbGwgYXMgdGhlIGZpcnN0IHRhYmxlICovCisgICAgICAgIGZvciAobiA9IDA7IG4gPCAyNTY7IG4rKykgeworICAgICAgICAgICAgYyA9IGNyY190YWJsZVswXVtuXTsKKyAgICAgICAgICAgIGNyY190YWJsZVs0XVtuXSA9IFpTV0FQMzIoYyk7CisgICAgICAgICAgICBmb3IgKGsgPSAxOyBrIDwgNDsgaysrKSB7CisgICAgICAgICAgICAgICAgYyA9IGNyY190YWJsZVswXVtjICYgMHhmZl0gXiAoYyA+PiA4KTsKKyAgICAgICAgICAgICAgICBjcmNfdGFibGVba11bbl0gPSBjOworICAgICAgICAgICAgICAgIGNyY190YWJsZVtrICsgNF1bbl0gPSBaU1dBUDMyKGMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYgLyogQllGT1VSICovCisKKyAgICAgICAgY3JjX3RhYmxlX2VtcHR5ID0gMDsKKyAgICB9CisgICAgZWxzZSB7ICAgICAgLyogbm90IGZpcnN0ICovCisgICAgICAgIC8qIHdhaXQgZm9yIHRoZSBvdGhlciBndXkgdG8gZmluaXNoIChub3QgZWZmaWNpZW50LCBidXQgcmFyZSkgKi8KKyAgICAgICAgd2hpbGUgKGNyY190YWJsZV9lbXB0eSkKKyAgICAgICAgICAgIDsKKyAgICB9CisKKyNpZmRlZiBNQUtFQ1JDSAorICAgIC8qIHdyaXRlIG91dCBDUkMgdGFibGVzIHRvIGNyYzMyLmggKi8KKyAgICB7CisgICAgICAgIEZJTEUgKm91dDsKKworICAgICAgICBvdXQgPSBmb3BlbigiY3JjMzIuaCIsICJ3Iik7CisgICAgICAgIGlmIChvdXQgPT0gTlVMTCkgcmV0dXJuOworICAgICAgICBmcHJpbnRmKG91dCwgIi8qIGNyYzMyLmggLS0gdGFibGVzIGZvciByYXBpZCBDUkMgY2FsY3VsYXRpb25cbiIpOworICAgICAgICBmcHJpbnRmKG91dCwgIiAqIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNyYzMyLmNcbiAqL1xuXG4iKTsKKyAgICAgICAgZnByaW50ZihvdXQsICJsb2NhbCBjb25zdCB6X2NyY190IEZBUiAiKTsKKyAgICAgICAgZnByaW50ZihvdXQsICJjcmNfdGFibGVbVEJMU11bMjU2XSA9XG57XG4gIHtcbiIpOworICAgICAgICB3cml0ZV90YWJsZShvdXQsIGNyY190YWJsZVswXSk7CisjICBpZmRlZiBCWUZPVVIKKyAgICAgICAgZnByaW50ZihvdXQsICIjaWZkZWYgQllGT1VSXG4iKTsKKyAgICAgICAgZm9yIChrID0gMTsgayA8IDg7IGsrKykgeworICAgICAgICAgICAgZnByaW50ZihvdXQsICIgIH0sXG4gIHtcbiIpOworICAgICAgICAgICAgd3JpdGVfdGFibGUob3V0LCBjcmNfdGFibGVba10pOworICAgICAgICB9CisgICAgICAgIGZwcmludGYob3V0LCAiI2VuZGlmXG4iKTsKKyMgIGVuZGlmIC8qIEJZRk9VUiAqLworICAgICAgICBmcHJpbnRmKG91dCwgIiAgfVxufTtcbiIpOworICAgICAgICBmY2xvc2Uob3V0KTsKKyAgICB9CisjZW5kaWYgLyogTUFLRUNSQ0ggKi8KK30KKworI2lmZGVmIE1BS0VDUkNICitsb2NhbCB2b2lkIHdyaXRlX3RhYmxlKAorICAgIEZJTEUgKm91dCwKKyAgICBjb25zdCB6X2NyY190IEZBUiAqdGFibGUpCit7CisgICAgaW50IG47CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgMjU2OyBuKyspCisgICAgICAgIGZwcmludGYob3V0LCAiJXMweCUwOGx4VUwlcyIsIG4gJSA1ID8gIiIgOiAiICAgICIsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKHRhYmxlW25dKSwKKyAgICAgICAgICAgICAgICBuID09IDI1NSA/ICJcbiIgOiAobiAlIDUgPT0gNCA/ICIsXG4iIDogIiwgIikpOworfQorI2VuZGlmIC8qIE1BS0VDUkNIICovCisKKyNlbHNlIC8qICFEWU5BTUlDX0NSQ19UQUJMRSAqLworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBUYWJsZXMgb2YgQ1JDLTMycyBvZiBhbGwgc2luZ2xlLWJ5dGUgdmFsdWVzLCBtYWRlIGJ5IG1ha2VfY3JjX3RhYmxlKCkuCisgKi8KKyNpbmNsdWRlICJjcmMzMi5oIgorI2VuZGlmIC8qIERZTkFNSUNfQ1JDX1RBQkxFICovCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYnkgYXNtIHZlcnNpb25zIG9mIGNyYzMyKCkKKyAqLworY29uc3Qgel9jcmNfdCBGQVIgKiBaRVhQT1JUIGdldF9jcmNfdGFibGUoKQoreworI2lmZGVmIERZTkFNSUNfQ1JDX1RBQkxFCisgICAgaWYgKGNyY190YWJsZV9lbXB0eSkKKyAgICAgICAgbWFrZV9jcmNfdGFibGUoKTsKKyNlbmRpZiAvKiBEWU5BTUlDX0NSQ19UQUJMRSAqLworICAgIHJldHVybiAoY29uc3Qgel9jcmNfdCBGQVIgKiljcmNfdGFibGU7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyNkZWZpbmUgRE8xIGNyYyA9IGNyY190YWJsZVswXVsoKGludCljcmMgXiAoKmJ1ZisrKSkgJiAweGZmXSBeIChjcmMgPj4gOCkKKyNkZWZpbmUgRE84IERPMTsgRE8xOyBETzE7IERPMTsgRE8xOyBETzE7IERPMTsgRE8xCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK3Vuc2lnbmVkIGxvbmcgWkVYUE9SVCBjcmMzMigKKyAgICB1bnNpZ25lZCBsb25nIGNyYywKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqYnVmLAorICAgIHVJbnQgbGVuKQoreworICAgIGlmIChidWYgPT0gWl9OVUxMKSByZXR1cm4gMFVMOworCisjaWZkZWYgRFlOQU1JQ19DUkNfVEFCTEUKKyAgICBpZiAoY3JjX3RhYmxlX2VtcHR5KQorICAgICAgICBtYWtlX2NyY190YWJsZSgpOworI2VuZGlmIC8qIERZTkFNSUNfQ1JDX1RBQkxFICovCisKKyNpZmRlZiBCWUZPVVIKKyAgICBpZiAoc2l6ZW9mKHZvaWQgKikgPT0gc2l6ZW9mKHB0cmRpZmZfdCkpIHsKKyAgICAgICAgel9jcmNfdCBlbmRpYW47CisKKyAgICAgICAgZW5kaWFuID0gMTsKKyAgICAgICAgaWYgKCooKHVuc2lnbmVkIGNoYXIgKikoJmVuZGlhbikpKQorICAgICAgICAgICAgcmV0dXJuIGNyYzMyX2xpdHRsZShjcmMsIGJ1ZiwgbGVuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGNyYzMyX2JpZyhjcmMsIGJ1ZiwgbGVuKTsKKyAgICB9CisjZW5kaWYgLyogQllGT1VSICovCisgICAgY3JjID0gY3JjIF4gMHhmZmZmZmZmZlVMOworICAgIHdoaWxlIChsZW4gPj0gOCkgeworICAgICAgICBETzg7CisgICAgICAgIGxlbiAtPSA4OworICAgIH0KKyAgICBpZiAobGVuKSBkbyB7CisgICAgICAgIERPMTsKKyAgICB9IHdoaWxlICgtLWxlbik7CisgICAgcmV0dXJuIGNyYyBeIDB4ZmZmZmZmZmZVTDsKK30KKworI2lmZGVmIEJZRk9VUgorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisjZGVmaW5lIERPTElUNCBjIF49ICpidWY0Kys7IFwKKyAgICAgICAgYyA9IGNyY190YWJsZVszXVtjICYgMHhmZl0gXiBjcmNfdGFibGVbMl1bKGMgPj4gOCkgJiAweGZmXSBeIFwKKyAgICAgICAgICAgIGNyY190YWJsZVsxXVsoYyA+PiAxNikgJiAweGZmXSBeIGNyY190YWJsZVswXVtjID4+IDI0XQorI2RlZmluZSBET0xJVDMyIERPTElUNDsgRE9MSVQ0OyBET0xJVDQ7IERPTElUNDsgRE9MSVQ0OyBET0xJVDQ7IERPTElUNDsgRE9MSVQ0CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK2xvY2FsIHVuc2lnbmVkIGxvbmcgY3JjMzJfbGl0dGxlKAorICAgIHVuc2lnbmVkIGxvbmcgY3JjLAorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICpidWYsCisgICAgdW5zaWduZWQgbGVuKQoreworICAgIHJlZ2lzdGVyIHpfY3JjX3QgYzsKKyAgICByZWdpc3RlciBjb25zdCB6X2NyY190IEZBUiAqYnVmNDsKKworICAgIGMgPSAoel9jcmNfdCljcmM7CisgICAgYyA9IH5jOworICAgIHdoaWxlIChsZW4gJiYgKChwdHJkaWZmX3QpYnVmICYgMykpIHsKKyAgICAgICAgYyA9IGNyY190YWJsZVswXVsoYyBeICpidWYrKykgJiAweGZmXSBeIChjID4+IDgpOworICAgICAgICBsZW4tLTsKKyAgICB9CisKKyAgICBidWY0ID0gKGNvbnN0IHpfY3JjX3QgRkFSICopKGNvbnN0IHZvaWQgRkFSICopYnVmOworICAgIHdoaWxlIChsZW4gPj0gMzIpIHsKKyAgICAgICAgRE9MSVQzMjsKKyAgICAgICAgbGVuIC09IDMyOworICAgIH0KKyAgICB3aGlsZSAobGVuID49IDQpIHsKKyAgICAgICAgRE9MSVQ0OworICAgICAgICBsZW4gLT0gNDsKKyAgICB9CisgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICopYnVmNDsKKworICAgIGlmIChsZW4pIGRvIHsKKyAgICAgICAgYyA9IGNyY190YWJsZVswXVsoYyBeICpidWYrKykgJiAweGZmXSBeIChjID4+IDgpOworICAgIH0gd2hpbGUgKC0tbGVuKTsKKyAgICBjID0gfmM7CisgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKWM7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyNkZWZpbmUgRE9CSUc0IGMgXj0gKisrYnVmNDsgXAorICAgICAgICBjID0gY3JjX3RhYmxlWzRdW2MgJiAweGZmXSBeIGNyY190YWJsZVs1XVsoYyA+PiA4KSAmIDB4ZmZdIF4gXAorICAgICAgICAgICAgY3JjX3RhYmxlWzZdWyhjID4+IDE2KSAmIDB4ZmZdIF4gY3JjX3RhYmxlWzddW2MgPj4gMjRdCisjZGVmaW5lIERPQklHMzIgRE9CSUc0OyBET0JJRzQ7IERPQklHNDsgRE9CSUc0OyBET0JJRzQ7IERPQklHNDsgRE9CSUc0OyBET0JJRzQKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworbG9jYWwgdW5zaWduZWQgbG9uZyBjcmMzMl9iaWcoCisgICAgdW5zaWduZWQgbG9uZyBjcmMsCisgICAgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKmJ1ZiwKKyAgICB1bnNpZ25lZCBsZW4pCit7CisgICAgcmVnaXN0ZXIgel9jcmNfdCBjOworICAgIHJlZ2lzdGVyIGNvbnN0IHpfY3JjX3QgRkFSICpidWY0OworCisgICAgYyA9IFpTV0FQMzIoKHpfY3JjX3QpY3JjKTsKKyAgICBjID0gfmM7CisgICAgd2hpbGUgKGxlbiAmJiAoKHB0cmRpZmZfdClidWYgJiAzKSkgeworICAgICAgICBjID0gY3JjX3RhYmxlWzRdWyhjID4+IDI0KSBeICpidWYrK10gXiAoYyA8PCA4KTsKKyAgICAgICAgbGVuLS07CisgICAgfQorCisgICAgYnVmNCA9IChjb25zdCB6X2NyY190IEZBUiAqKShjb25zdCB2b2lkIEZBUiAqKWJ1ZjsKKyAgICBidWY0LS07CisgICAgd2hpbGUgKGxlbiA+PSAzMikgeworICAgICAgICBET0JJRzMyOworICAgICAgICBsZW4gLT0gMzI7CisgICAgfQorICAgIHdoaWxlIChsZW4gPj0gNCkgeworICAgICAgICBET0JJRzQ7CisgICAgICAgIGxlbiAtPSA0OworICAgIH0KKyAgICBidWY0Kys7CisgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICopYnVmNDsKKworICAgIGlmIChsZW4pIGRvIHsKKyAgICAgICAgYyA9IGNyY190YWJsZVs0XVsoYyA+PiAyNCkgXiAqYnVmKytdIF4gKGMgPDwgOCk7CisgICAgfSB3aGlsZSAoLS1sZW4pOworICAgIGMgPSB+YzsKKyAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpKFpTV0FQMzIoYykpOworfQorCisjZW5kaWYgLyogQllGT1VSICovCisKKyNkZWZpbmUgR0YyX0RJTSAzMiAgICAgIC8qIGRpbWVuc2lvbiBvZiBHRigyKSB2ZWN0b3JzIChsZW5ndGggb2YgQ1JDKSAqLworCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitsb2NhbCB1bnNpZ25lZCBsb25nIGdmMl9tYXRyaXhfdGltZXMoCisgICAgdW5zaWduZWQgbG9uZyAqbWF0LAorICAgIHVuc2lnbmVkIGxvbmcgdmVjKQoreworICAgIHVuc2lnbmVkIGxvbmcgc3VtOworCisgICAgc3VtID0gMDsKKyAgICB3aGlsZSAodmVjKSB7CisgICAgICAgIGlmICh2ZWMgJiAxKQorICAgICAgICAgICAgc3VtIF49ICptYXQ7CisgICAgICAgIHZlYyA+Pj0gMTsKKyAgICAgICAgbWF0Kys7CisgICAgfQorICAgIHJldHVybiBzdW07Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK2xvY2FsIHZvaWQgZ2YyX21hdHJpeF9zcXVhcmUoCisgICAgdW5zaWduZWQgbG9uZyAqc3F1YXJlLAorICAgIHVuc2lnbmVkIGxvbmcgKm1hdCkKK3sKKyAgICBpbnQgbjsKKworICAgIGZvciAobiA9IDA7IG4gPCBHRjJfRElNOyBuKyspCisgICAgICAgIHNxdWFyZVtuXSA9IGdmMl9tYXRyaXhfdGltZXMobWF0LCBtYXRbbl0pOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitsb2NhbCB1TG9uZyBjcmMzMl9jb21iaW5lXygKKyAgICB1TG9uZyBjcmMxLAorICAgIHVMb25nIGNyYzIsCisgICAgel9vZmY2NF90IGxlbjIpCit7CisgICAgaW50IG47CisgICAgdW5zaWduZWQgbG9uZyByb3c7CisgICAgdW5zaWduZWQgbG9uZyBldmVuW0dGMl9ESU1dOyAgICAvKiBldmVuLXBvd2VyLW9mLXR3byB6ZXJvcyBvcGVyYXRvciAqLworICAgIHVuc2lnbmVkIGxvbmcgb2RkW0dGMl9ESU1dOyAgICAgLyogb2RkLXBvd2VyLW9mLXR3byB6ZXJvcyBvcGVyYXRvciAqLworCisgICAgLyogZGVnZW5lcmF0ZSBjYXNlIChhbHNvIGRpc2FsbG93IG5lZ2F0aXZlIGxlbmd0aHMpICovCisgICAgaWYgKGxlbjIgPD0gMCkKKyAgICAgICAgcmV0dXJuIGNyYzE7CisKKyAgICAvKiBwdXQgb3BlcmF0b3IgZm9yIG9uZSB6ZXJvIGJpdCBpbiBvZGQgKi8KKyAgICBvZGRbMF0gPSAweGVkYjg4MzIwVUw7ICAgICAgICAgIC8qIENSQy0zMiBwb2x5bm9taWFsICovCisgICAgcm93ID0gMTsKKyAgICBmb3IgKG4gPSAxOyBuIDwgR0YyX0RJTTsgbisrKSB7CisgICAgICAgIG9kZFtuXSA9IHJvdzsKKyAgICAgICAgcm93IDw8PSAxOworICAgIH0KKworICAgIC8qIHB1dCBvcGVyYXRvciBmb3IgdHdvIHplcm8gYml0cyBpbiBldmVuICovCisgICAgZ2YyX21hdHJpeF9zcXVhcmUoZXZlbiwgb2RkKTsKKworICAgIC8qIHB1dCBvcGVyYXRvciBmb3IgZm91ciB6ZXJvIGJpdHMgaW4gb2RkICovCisgICAgZ2YyX21hdHJpeF9zcXVhcmUob2RkLCBldmVuKTsKKworICAgIC8qIGFwcGx5IGxlbjIgemVyb3MgdG8gY3JjMSAoZmlyc3Qgc3F1YXJlIHdpbGwgcHV0IHRoZSBvcGVyYXRvciBmb3Igb25lCisgICAgICAgemVybyBieXRlLCBlaWdodCB6ZXJvIGJpdHMsIGluIGV2ZW4pICovCisgICAgZG8geworICAgICAgICAvKiBhcHBseSB6ZXJvcyBvcGVyYXRvciBmb3IgdGhpcyBiaXQgb2YgbGVuMiAqLworICAgICAgICBnZjJfbWF0cml4X3NxdWFyZShldmVuLCBvZGQpOworICAgICAgICBpZiAobGVuMiAmIDEpCisgICAgICAgICAgICBjcmMxID0gZ2YyX21hdHJpeF90aW1lcyhldmVuLCBjcmMxKTsKKyAgICAgICAgbGVuMiA+Pj0gMTsKKworICAgICAgICAvKiBpZiBubyBtb3JlIGJpdHMgc2V0LCB0aGVuIGRvbmUgKi8KKyAgICAgICAgaWYgKGxlbjIgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIGFub3RoZXIgaXRlcmF0aW9uIG9mIHRoZSBsb29wIHdpdGggb2RkIGFuZCBldmVuIHN3YXBwZWQgKi8KKyAgICAgICAgZ2YyX21hdHJpeF9zcXVhcmUob2RkLCBldmVuKTsKKyAgICAgICAgaWYgKGxlbjIgJiAxKQorICAgICAgICAgICAgY3JjMSA9IGdmMl9tYXRyaXhfdGltZXMob2RkLCBjcmMxKTsKKyAgICAgICAgbGVuMiA+Pj0gMTsKKworICAgICAgICAvKiBpZiBubyBtb3JlIGJpdHMgc2V0LCB0aGVuIGRvbmUgKi8KKyAgICB9IHdoaWxlIChsZW4yICE9IDApOworCisgICAgLyogcmV0dXJuIGNvbWJpbmVkIGNyYyAqLworICAgIGNyYzEgXj0gY3JjMjsKKyAgICByZXR1cm4gY3JjMTsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwordUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lKAorICAgIHVMb25nIGNyYzEsCisgICAgdUxvbmcgY3JjMiwKKyAgICB6X29mZl90IGxlbjIpCit7CisgICAgcmV0dXJuIGNyYzMyX2NvbWJpbmVfKGNyYzEsIGNyYzIsIGxlbjIpOworfQorCit1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmU2NCgKKyAgICB1TG9uZyBjcmMxLAorICAgIHVMb25nIGNyYzIsCisgICAgel9vZmY2NF90IGxlbjIpCit7CisgICAgcmV0dXJuIGNyYzMyX2NvbWJpbmVfKGNyYzEsIGNyYzIsIGxlbjIpOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2RlZmxhdGUuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl9kZWZsYXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFmZTIzMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl9kZWZsYXRlLmMKQEAgLTAsMCArMSwxOTY2IEBACisvKiBkZWZsYXRlLmMgLS0gY29tcHJlc3MgZGF0YSB1c2luZyB0aGUgZGVmbGF0aW9uIGFsZ29yaXRobQorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKy8qCisgKiAgQUxHT1JJVEhNCisgKgorICogICAgICBUaGUgImRlZmxhdGlvbiIgcHJvY2VzcyBkZXBlbmRzIG9uIGJlaW5nIGFibGUgdG8gaWRlbnRpZnkgcG9ydGlvbnMKKyAqICAgICAgb2YgdGhlIGlucHV0IHRleHQgd2hpY2ggYXJlIGlkZW50aWNhbCB0byBlYXJsaWVyIGlucHV0ICh3aXRoaW4gYQorICogICAgICBzbGlkaW5nIHdpbmRvdyB0cmFpbGluZyBiZWhpbmQgdGhlIGlucHV0IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQpLgorICoKKyAqICAgICAgVGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHRlY2huaXF1ZSB0dXJucyBvdXQgdG8gYmUgdGhlIGZhc3Rlc3QgZm9yCisgKiAgICAgIG1vc3QgaW5wdXQgZmlsZXM6IHRyeSBhbGwgcG9zc2libGUgbWF0Y2hlcyBhbmQgc2VsZWN0IHRoZSBsb25nZXN0LgorICogICAgICBUaGUga2V5IGZlYXR1cmUgb2YgdGhpcyBhbGdvcml0aG0gaXMgdGhhdCBpbnNlcnRpb25zIGludG8gdGhlIHN0cmluZworICogICAgICBkaWN0aW9uYXJ5IGFyZSB2ZXJ5IHNpbXBsZSBhbmQgdGh1cyBmYXN0LCBhbmQgZGVsZXRpb25zIGFyZSBhdm9pZGVkCisgKiAgICAgIGNvbXBsZXRlbHkuIEluc2VydGlvbnMgYXJlIHBlcmZvcm1lZCBhdCBlYWNoIGlucHV0IGNoYXJhY3Rlciwgd2hlcmVhcworICogICAgICBzdHJpbmcgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkIG9ubHkgd2hlbiB0aGUgcHJldmlvdXMgbWF0Y2ggZW5kcy4gU28gaXQKKyAqICAgICAgaXMgcHJlZmVyYWJsZSB0byBzcGVuZCBtb3JlIHRpbWUgaW4gbWF0Y2hlcyB0byBhbGxvdyB2ZXJ5IGZhc3Qgc3RyaW5nCisgKiAgICAgIGluc2VydGlvbnMgYW5kIGF2b2lkIGRlbGV0aW9ucy4gVGhlIG1hdGNoaW5nIGFsZ29yaXRobSBmb3Igc21hbGwKKyAqICAgICAgc3RyaW5ncyBpcyBpbnNwaXJlZCBmcm9tIHRoYXQgb2YgUmFiaW4gJiBLYXJwLiBBIGJydXRlIGZvcmNlIGFwcHJvYWNoCisgKiAgICAgIGlzIHVzZWQgdG8gZmluZCBsb25nZXIgc3RyaW5ncyB3aGVuIGEgc21hbGwgbWF0Y2ggaGFzIGJlZW4gZm91bmQuCisgKiAgICAgIEEgc2ltaWxhciBhbGdvcml0aG0gaXMgdXNlZCBpbiBjb21pYyAoYnkgSmFuLU1hcmsgV2FtcykgYW5kIGZyZWV6ZQorICogICAgICAoYnkgTGVvbmlkIEJyb3VraGlzKS4KKyAqICAgICAgICAgQSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1c2VkIGEgbW9yZSBzb3BoaXN0aWNhdGVkIGFsZ29yaXRobQorICogICAgICAoYnkgRmlhbGEgYW5kIEdyZWVuZSkgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBydW4gaW4gbGluZWFyIGFtb3J0aXplZAorICogICAgICB0aW1lLCBidXQgaGFzIGEgbGFyZ2VyIGF2ZXJhZ2UgY29zdCwgdXNlcyBtb3JlIG1lbW9yeSBhbmQgaXMgcGF0ZW50ZWQuCisgKiAgICAgIEhvd2V2ZXIgdGhlIEYmRyBhbGdvcml0aG0gbWF5IGJlIGZhc3RlciBmb3Igc29tZSBoaWdobHkgcmVkdW5kYW50CisgKiAgICAgIGZpbGVzIGlmIHRoZSBwYXJhbWV0ZXIgbWF4X2NoYWluX2xlbmd0aCAoZGVzY3JpYmVkIGJlbG93KSBpcyB0b28gbGFyZ2UuCisgKgorICogIEFDS05PV0xFREdFTUVOVFMKKyAqCisgKiAgICAgIFRoZSBpZGVhIG9mIGxhenkgZXZhbHVhdGlvbiBvZiBtYXRjaGVzIGlzIGR1ZSB0byBKYW4tTWFyayBXYW1zLCBhbmQKKyAqICAgICAgSSBmb3VuZCBpdCBpbiAnZnJlZXplJyB3cml0dGVuIGJ5IExlb25pZCBCcm91a2hpcy4KKyAqICAgICAgVGhhbmtzIHRvIG1hbnkgcGVvcGxlIGZvciBidWcgcmVwb3J0cyBhbmQgdGVzdGluZy4KKyAqCisgKiAgUkVGRVJFTkNFUworICoKKyAqICAgICAgRGV1dHNjaCwgTC5QLiwiREVGTEFURSBDb21wcmVzc2VkIERhdGEgRm9ybWF0IFNwZWNpZmljYXRpb24iLgorICogICAgICBBdmFpbGFibGUgaW4gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTk1MQorICoKKyAqICAgICAgQSBkZXNjcmlwdGlvbiBvZiB0aGUgUmFiaW4gYW5kIEthcnAgYWxnb3JpdGhtIGlzIGdpdmVuIGluIHRoZSBib29rCisgKiAgICAgICAgICJBbGdvcml0aG1zIiBieSBSLiBTZWRnZXdpY2ssIEFkZGlzb24tV2VzbGV5LCBwMjUyLgorICoKKyAqICAgICAgRmlhbGEsRS5SLiwgYW5kIEdyZWVuZSxELkguCisgKiAgICAgICAgIERhdGEgQ29tcHJlc3Npb24gd2l0aCBGaW5pdGUgV2luZG93cywgQ29tbS5BQ00sIDMyLDQgKDE5ODkpIDQ5MC01OTUKKyAqCisgKi8KKworLyogQCgjKSAkSWQkICovCisKKyNpbmNsdWRlICJkZWZsYXRlLmgiCisKK2NvbnN0IGNoYXIgZGVmbGF0ZV9jb3B5cmlnaHRbXSA9CisgICAiIGRlZmxhdGUgMS4yLjggQ29weXJpZ2h0IDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyICI7CisvKgorICBJZiB5b3UgdXNlIHRoZSB6bGliIGxpYnJhcnkgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpcyB3ZWxjb21lCisgIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHlvdXIgcHJvZHVjdC4gSWYgZm9yIHNvbWUgcmVhc29uIHlvdSBjYW5ub3QKKyAgaW5jbHVkZSBzdWNoIGFuIGFja25vd2xlZGdtZW50LCBJIHdvdWxkIGFwcHJlY2lhdGUgdGhhdCB5b3Uga2VlcCB0aGlzCisgIGNvcHlyaWdodCBzdHJpbmcgaW4gdGhlIGV4ZWN1dGFibGUgb2YgeW91ciBwcm9kdWN0LgorICovCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogIEZ1bmN0aW9uIHByb3RvdHlwZXMuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgbmVlZF9tb3JlLCAgICAgIC8qIGJsb2NrIG5vdCBjb21wbGV0ZWQsIG5lZWQgbW9yZSBpbnB1dCBvciBtb3JlIG91dHB1dCAqLworICAgIGJsb2NrX2RvbmUsICAgICAvKiBibG9jayBmbHVzaCBwZXJmb3JtZWQgKi8KKyAgICBmaW5pc2hfc3RhcnRlZCwgLyogZmluaXNoIHN0YXJ0ZWQsIG5lZWQgb25seSBtb3JlIG91dHB1dCBhdCBuZXh0IGRlZmxhdGUgKi8KKyAgICBmaW5pc2hfZG9uZSAgICAgLyogZmluaXNoIGRvbmUsIGFjY2VwdCBubyBtb3JlIGlucHV0IG9yIG91dHB1dCAqLworfSBibG9ja19zdGF0ZTsKKwordHlwZWRlZiBibG9ja19zdGF0ZSAoKmNvbXByZXNzX2Z1bmMpIE9GKChkZWZsYXRlX3N0YXRlICpzLCBpbnQgZmx1c2gpKTsKKy8qIENvbXByZXNzaW9uIGZ1bmN0aW9uLiBSZXR1cm5zIHRoZSBibG9jayBzdGF0ZSBhZnRlciB0aGUgY2FsbC4gKi8KKworbG9jYWwgdm9pZCBmaWxsX3dpbmRvdyAgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcykpOworbG9jYWwgYmxvY2tfc3RhdGUgZGVmbGF0ZV9zdG9yZWQgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGludCBmbHVzaCkpOworbG9jYWwgYmxvY2tfc3RhdGUgZGVmbGF0ZV9mYXN0ICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGludCBmbHVzaCkpOworI2lmbmRlZiBGQVNURVNUCitsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRlX3Nsb3cgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgaW50IGZsdXNoKSk7CisjZW5kaWYKK2xvY2FsIGJsb2NrX3N0YXRlIGRlZmxhdGVfcmxlICAgIE9GKChkZWZsYXRlX3N0YXRlICpzLCBpbnQgZmx1c2gpKTsKK2xvY2FsIGJsb2NrX3N0YXRlIGRlZmxhdGVfaHVmZiAgIE9GKChkZWZsYXRlX3N0YXRlICpzLCBpbnQgZmx1c2gpKTsKK2xvY2FsIHZvaWQgbG1faW5pdCAgICAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKK2xvY2FsIHZvaWQgcHV0U2hvcnRNU0IgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIHVJbnQgYikpOworbG9jYWwgdm9pZCBmbHVzaF9wZW5kaW5nICBPRigoel9zdHJlYW1wIHN0cm0pKTsKK2xvY2FsIGludCByZWFkX2J1ZiAgICAgICAgT0YoKHpfc3RyZWFtcCBzdHJtLCBCeXRlZiAqYnVmLCB1bnNpZ25lZCBzaXplKSk7CisjaWZkZWYgQVNNVgorICAgICAgdm9pZCBtYXRjaF9pbml0IE9GKCh2b2lkKSk7IC8qIGFzbSBjb2RlIGluaXRpYWxpemF0aW9uICovCisgICAgICB1SW50IGxvbmdlc3RfbWF0Y2ggIE9GKChkZWZsYXRlX3N0YXRlICpzLCBJUG9zIGN1cl9tYXRjaCkpOworI2Vsc2UKK2xvY2FsIHVJbnQgbG9uZ2VzdF9tYXRjaCAgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIElQb3MgY3VyX21hdGNoKSk7CisjZW5kaWYKKworI2lmZGVmIERFQlVHCitsb2NhbCAgdm9pZCBjaGVja19tYXRjaCBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgSVBvcyBzdGFydCwgSVBvcyBtYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoKSk7CisjZW5kaWYKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBMb2NhbCBkYXRhCisgKi8KKworI2RlZmluZSBOSUwgMAorLyogVGFpbCBvZiBoYXNoIGNoYWlucyAqLworCisjaWZuZGVmIFRPT19GQVIKKyMgIGRlZmluZSBUT09fRkFSIDQwOTYKKyNlbmRpZgorLyogTWF0Y2hlcyBvZiBsZW5ndGggMyBhcmUgZGlzY2FyZGVkIGlmIHRoZWlyIGRpc3RhbmNlIGV4Y2VlZHMgVE9PX0ZBUiAqLworCisvKiBWYWx1ZXMgZm9yIG1heF9sYXp5X21hdGNoLCBnb29kX21hdGNoIGFuZCBtYXhfY2hhaW5fbGVuZ3RoLCBkZXBlbmRpbmcgb24KKyAqIHRoZSBkZXNpcmVkIHBhY2sgbGV2ZWwgKDAuLjkpLiBUaGUgdmFsdWVzIGdpdmVuIGJlbG93IGhhdmUgYmVlbiB0dW5lZCB0bworICogZXhjbHVkZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIGZvciBwYXRob2xvZ2ljYWwgZmlsZXMuIEJldHRlciB2YWx1ZXMgbWF5IGJlCisgKiBmb3VuZCBmb3Igc3BlY2lmaWMgZmlsZXMuCisgKi8KK3R5cGVkZWYgc3RydWN0IGNvbmZpZ19zIHsKKyAgIHVzaCBnb29kX2xlbmd0aDsgLyogcmVkdWNlIGxhenkgc2VhcmNoIGFib3ZlIHRoaXMgbWF0Y2ggbGVuZ3RoICovCisgICB1c2ggbWF4X2xhenk7ICAgIC8qIGRvIG5vdCBwZXJmb3JtIGxhenkgc2VhcmNoIGFib3ZlIHRoaXMgbWF0Y2ggbGVuZ3RoICovCisgICB1c2ggbmljZV9sZW5ndGg7IC8qIHF1aXQgc2VhcmNoIGFib3ZlIHRoaXMgbWF0Y2ggbGVuZ3RoICovCisgICB1c2ggbWF4X2NoYWluOworICAgY29tcHJlc3NfZnVuYyBmdW5jOworfSBjb25maWc7CisKKyNpZmRlZiBGQVNURVNUCitsb2NhbCBjb25zdCBjb25maWcgY29uZmlndXJhdGlvbl90YWJsZVsyXSA9IHsKKy8qICAgICAgZ29vZCBsYXp5IG5pY2UgY2hhaW4gKi8KKy8qIDAgKi8gezAsICAgIDAsICAwLCAgICAwLCBkZWZsYXRlX3N0b3JlZH0sICAvKiBzdG9yZSBvbmx5ICovCisvKiAxICovIHs0LCAgICA0LCAgOCwgICAgNCwgZGVmbGF0ZV9mYXN0fX07IC8qIG1heCBzcGVlZCwgbm8gbGF6eSBtYXRjaGVzICovCisjZWxzZQorbG9jYWwgY29uc3QgY29uZmlnIGNvbmZpZ3VyYXRpb25fdGFibGVbMTBdID0geworLyogICAgICBnb29kIGxhenkgbmljZSBjaGFpbiAqLworLyogMCAqLyB7MCwgICAgMCwgIDAsICAgIDAsIGRlZmxhdGVfc3RvcmVkfSwgIC8qIHN0b3JlIG9ubHkgKi8KKy8qIDEgKi8gezQsICAgIDQsICA4LCAgICA0LCBkZWZsYXRlX2Zhc3R9LCAvKiBtYXggc3BlZWQsIG5vIGxhenkgbWF0Y2hlcyAqLworLyogMiAqLyB7NCwgICAgNSwgMTYsICAgIDgsIGRlZmxhdGVfZmFzdH0sCisvKiAzICovIHs0LCAgICA2LCAzMiwgICAzMiwgZGVmbGF0ZV9mYXN0fSwKKworLyogNCAqLyB7NCwgICAgNCwgMTYsICAgMTYsIGRlZmxhdGVfc2xvd30sICAvKiBsYXp5IG1hdGNoZXMgKi8KKy8qIDUgKi8gezgsICAgMTYsIDMyLCAgIDMyLCBkZWZsYXRlX3Nsb3d9LAorLyogNiAqLyB7OCwgICAxNiwgMTI4LCAxMjgsIGRlZmxhdGVfc2xvd30sCisvKiA3ICovIHs4LCAgIDMyLCAxMjgsIDI1NiwgZGVmbGF0ZV9zbG93fSwKKy8qIDggKi8gezMyLCAxMjgsIDI1OCwgMTAyNCwgZGVmbGF0ZV9zbG93fSwKKy8qIDkgKi8gezMyLCAyNTgsIDI1OCwgNDA5NiwgZGVmbGF0ZV9zbG93fX07IC8qIG1heCBjb21wcmVzc2lvbiAqLworI2VuZGlmCisKKy8qIE5vdGU6IHRoZSBkZWZsYXRlKCkgY29kZSByZXF1aXJlcyBtYXhfbGF6eSA+PSBNSU5fTUFUQ0ggYW5kIG1heF9jaGFpbiA+PSA0CisgKiBGb3IgZGVmbGF0ZV9mYXN0KCkgKGxldmVscyA8PSAzKSBnb29kIGlzIGlnbm9yZWQgYW5kIGxhenkgaGFzIGEgZGlmZmVyZW50CisgKiBtZWFuaW5nLgorICovCisKKyNkZWZpbmUgRVFVQUwgMAorLyogcmVzdWx0IG9mIG1lbWNtcCBmb3IgZXF1YWwgc3RyaW5ncyAqLworCisjaWZuZGVmIE5PX0RVTU1ZX0RFQ0wKK3N0cnVjdCBzdGF0aWNfdHJlZV9kZXNjX3Mge2ludCBkdW1teTt9OyAvKiBmb3IgYnVnZ3kgY29tcGlsZXJzICovCisjZW5kaWYKKworLyogcmFuayBaX0JMT0NLIGJldHdlZW4gWl9OT19GTFVTSCBhbmQgWl9QQVJUSUFMX0ZMVVNIICovCisjZGVmaW5lIFJBTksoZikgKCgoZikgPDwgMSkgLSAoKGYpID4gNCA/IDkgOiAwKSkKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBVcGRhdGUgYSBoYXNoIHZhbHVlIHdpdGggdGhlIGdpdmVuIGlucHV0IGJ5dGUKKyAqIElOICBhc3NlcnRpb246IGFsbCBjYWxscyB0byB0byBVUERBVEVfSEFTSCBhcmUgbWFkZSB3aXRoIGNvbnNlY3V0aXZlCisgKiAgICBpbnB1dCBjaGFyYWN0ZXJzLCBzbyB0aGF0IGEgcnVubmluZyBoYXNoIGtleSBjYW4gYmUgY29tcHV0ZWQgZnJvbSB0aGUKKyAqICAgIHByZXZpb3VzIGtleSBpbnN0ZWFkIG9mIGNvbXBsZXRlIHJlY2FsY3VsYXRpb24gZWFjaCB0aW1lLgorICovCisjZGVmaW5lIFVQREFURV9IQVNIKHMsaCxjKSAoaCA9ICgoKGgpPDxzLT5oYXNoX3NoaWZ0KSBeIChjKSkgJiBzLT5oYXNoX21hc2spCisKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBJbnNlcnQgc3RyaW5nIHN0ciBpbiB0aGUgZGljdGlvbmFyeSBhbmQgc2V0IG1hdGNoX2hlYWQgdG8gdGhlIHByZXZpb3VzIGhlYWQKKyAqIG9mIHRoZSBoYXNoIGNoYWluICh0aGUgbW9zdCByZWNlbnQgc3RyaW5nIHdpdGggc2FtZSBoYXNoIGtleSkuIFJldHVybgorICogdGhlIHByZXZpb3VzIGxlbmd0aCBvZiB0aGUgaGFzaCBjaGFpbi4KKyAqIElmIHRoaXMgZmlsZSBpcyBjb21waWxlZCB3aXRoIC1ERkFTVEVTVCwgdGhlIGNvbXByZXNzaW9uIGxldmVsIGlzIGZvcmNlZAorICogdG8gMSwgYW5kIG5vIGhhc2ggY2hhaW5zIGFyZSBtYWludGFpbmVkLgorICogSU4gIGFzc2VydGlvbjogYWxsIGNhbGxzIHRvIHRvIElOU0VSVF9TVFJJTkcgYXJlIG1hZGUgd2l0aCBjb25zZWN1dGl2ZQorICogICAgaW5wdXQgY2hhcmFjdGVycyBhbmQgdGhlIGZpcnN0IE1JTl9NQVRDSCBieXRlcyBvZiBzdHIgYXJlIHZhbGlkCisgKiAgICAoZXhjZXB0IGZvciB0aGUgbGFzdCBNSU5fTUFUQ0gtMSBieXRlcyBvZiB0aGUgaW5wdXQgZmlsZSkuCisgKi8KKyNpZmRlZiBGQVNURVNUCisjZGVmaW5lIElOU0VSVF9TVFJJTkcocywgc3RyLCBtYXRjaF9oZWFkKSBcCisgICAoVVBEQVRFX0hBU0gocywgcy0+aW5zX2gsIHMtPndpbmRvd1soc3RyKSArIChNSU5fTUFUQ0gtMSldKSwgXAorICAgIG1hdGNoX2hlYWQgPSBzLT5oZWFkW3MtPmluc19oXSwgXAorICAgIHMtPmhlYWRbcy0+aW5zX2hdID0gKFBvcykoc3RyKSkKKyNlbHNlCisjZGVmaW5lIElOU0VSVF9TVFJJTkcocywgc3RyLCBtYXRjaF9oZWFkKSBcCisgICAoVVBEQVRFX0hBU0gocywgcy0+aW5zX2gsIHMtPndpbmRvd1soc3RyKSArIChNSU5fTUFUQ0gtMSldKSwgXAorICAgIG1hdGNoX2hlYWQgPSBzLT5wcmV2WyhzdHIpICYgcy0+d19tYXNrXSA9IHMtPmhlYWRbcy0+aW5zX2hdLCBcCisgICAgcy0+aGVhZFtzLT5pbnNfaF0gPSAoUG9zKShzdHIpKQorI2VuZGlmCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAoYXZvaWRpbmcgNjRLIG92ZXJmbG93IGZvciAxNiBiaXQgc3lzdGVtcykuCisgKiBwcmV2W10gd2lsbCBiZSBpbml0aWFsaXplZCBvbiB0aGUgZmx5LgorICovCisjZGVmaW5lIENMRUFSX0hBU0gocykgXAorICAgIHMtPmhlYWRbcy0+aGFzaF9zaXplLTFdID0gTklMOyBcCisgICAgem1lbXplcm8oKEJ5dGVmICopcy0+aGVhZCwgKHVuc2lnbmVkKShzLT5oYXNoX3NpemUtMSkqc2l6ZW9mKCpzLT5oZWFkKSk7CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK2ludCBaRVhQT1JUIGRlZmxhdGVJbml0XygKKyAgICB6X3N0cmVhbXAgc3RybSwKKyAgICBpbnQgbGV2ZWwsCisgICAgY29uc3QgY2hhciAqdmVyc2lvbiwKKyAgICBpbnQgc3RyZWFtX3NpemUpCit7CisgICAgcmV0dXJuIGRlZmxhdGVJbml0Ml8oc3RybSwgbGV2ZWwsIFpfREVGTEFURUQsIE1BWF9XQklUUywgREVGX01FTV9MRVZFTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBaX0RFRkFVTFRfU1RSQVRFR1ksIHZlcnNpb24sIHN0cmVhbV9zaXplKTsKKyAgICAvKiBUbyBkbzogaWdub3JlIHN0cm0tPm5leHRfaW4gaWYgd2UgdXNlIGl0IGFzIHdpbmRvdyAqLworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitpbnQgWkVYUE9SVCBkZWZsYXRlSW5pdDJfKAorICAgIHpfc3RyZWFtcCBzdHJtLAorICAgIGludCAgbGV2ZWwsCisgICAgaW50ICBtZXRob2QsCisgICAgaW50ICB3aW5kb3dCaXRzLAorICAgIGludCAgbWVtTGV2ZWwsCisgICAgaW50ICBzdHJhdGVneSwKKyAgICBjb25zdCBjaGFyICp2ZXJzaW9uLAorICAgIGludCBzdHJlYW1fc2l6ZSkKK3sKKyAgICBkZWZsYXRlX3N0YXRlICpzOworICAgIGludCB3cmFwID0gMTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBteV92ZXJzaW9uW10gPSBaTElCX1ZFUlNJT047CisKKyAgICB1c2hmICpvdmVybGF5OworICAgIC8qIFdlIG92ZXJsYXkgcGVuZGluZ19idWYgYW5kIGRfYnVmK2xfYnVmLiBUaGlzIHdvcmtzIHNpbmNlIHRoZSBhdmVyYWdlCisgICAgICogb3V0cHV0IHNpemUgZm9yIChsZW5ndGgsZGlzdGFuY2UpIGNvZGVzIGlzIDw9IDI0IGJpdHMuCisgICAgICovCisKKyAgICBpZiAodmVyc2lvbiA9PSBaX05VTEwgfHwgdmVyc2lvblswXSAhPSBteV92ZXJzaW9uWzBdIHx8CisgICAgICAgIHN0cmVhbV9zaXplICE9IHNpemVvZih6X3N0cmVhbSkpIHsKKyAgICAgICAgcmV0dXJuIFpfVkVSU0lPTl9FUlJPUjsKKyAgICB9CisgICAgaWYgKHN0cm0gPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisKKyAgICBzdHJtLT5tc2cgPSBaX05VTEw7CisgICAgaWYgKHN0cm0tPnphbGxvYyA9PSAoYWxsb2NfZnVuYykwKSB7CisjaWZkZWYgWl9TT0xPCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyNlbHNlCisgICAgICAgIHN0cm0tPnphbGxvYyA9IHpjYWxsb2M7CisgICAgICAgIHN0cm0tPm9wYXF1ZSA9ICh2b2lkcGYpMDsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAoc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorI2lmZGVmIFpfU09MTworICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisjZWxzZQorICAgICAgICBzdHJtLT56ZnJlZSA9IHpjZnJlZTsKKyNlbmRpZgorCisjaWZkZWYgRkFTVEVTVAorICAgIGlmIChsZXZlbCAhPSAwKSBsZXZlbCA9IDE7CisjZWxzZQorICAgIGlmIChsZXZlbCA9PSBaX0RFRkFVTFRfQ09NUFJFU1NJT04pIGxldmVsID0gNjsKKyNlbmRpZgorCisgICAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7IC8qIHN1cHByZXNzIHpsaWIgd3JhcHBlciAqLworICAgICAgICB3cmFwID0gMDsKKyAgICAgICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzOworICAgIH0KKyNpZmRlZiBHWklQCisgICAgZWxzZSBpZiAod2luZG93Qml0cyA+IDE1KSB7CisgICAgICAgIHdyYXAgPSAyOyAgICAgICAvKiB3cml0ZSBnemlwIHdyYXBwZXIgaW5zdGVhZCAqLworICAgICAgICB3aW5kb3dCaXRzIC09IDE2OworICAgIH0KKyNlbmRpZgorICAgIGlmIChtZW1MZXZlbCA8IDEgfHwgbWVtTGV2ZWwgPiBNQVhfTUVNX0xFVkVMIHx8IG1ldGhvZCAhPSBaX0RFRkxBVEVEIHx8CisgICAgICAgIHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSB8fCBsZXZlbCA8IDAgfHwgbGV2ZWwgPiA5IHx8CisgICAgICAgIHN0cmF0ZWd5IDwgMCB8fCBzdHJhdGVneSA+IFpfRklYRUQpIHsKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIH0KKyAgICBpZiAod2luZG93Qml0cyA9PSA4KSB3aW5kb3dCaXRzID0gOTsgIC8qIHVudGlsIDI1Ni1ieXRlIHdpbmRvdyBidWcgZml4ZWQgKi8KKyAgICBzID0gKGRlZmxhdGVfc3RhdGUgKikgWkFMTE9DKHN0cm0sIDEsIHNpemVvZihkZWZsYXRlX3N0YXRlKSk7CisgICAgaWYgKHMgPT0gWl9OVUxMKSByZXR1cm4gWl9NRU1fRVJST1I7CisgICAgc3RybS0+c3RhdGUgPSAoc3RydWN0IGludGVybmFsX3N0YXRlIEZBUiAqKXM7CisgICAgcy0+c3RybSA9IHN0cm07CisKKyAgICBzLT53cmFwID0gd3JhcDsKKyAgICBzLT5nemhlYWQgPSBaX05VTEw7CisgICAgcy0+d19iaXRzID0gd2luZG93Qml0czsKKyAgICBzLT53X3NpemUgPSAxIDw8IHMtPndfYml0czsKKyAgICBzLT53X21hc2sgPSBzLT53X3NpemUgLSAxOworCisgICAgcy0+aGFzaF9iaXRzID0gbWVtTGV2ZWwgKyA3OworICAgIHMtPmhhc2hfc2l6ZSA9IDEgPDwgcy0+aGFzaF9iaXRzOworICAgIHMtPmhhc2hfbWFzayA9IHMtPmhhc2hfc2l6ZSAtIDE7CisgICAgcy0+aGFzaF9zaGlmdCA9ICAoKHMtPmhhc2hfYml0cytNSU5fTUFUQ0gtMSkvTUlOX01BVENIKTsKKworICAgIHMtPndpbmRvdyA9IChCeXRlZiAqKSBaQUxMT0Moc3RybSwgcy0+d19zaXplLCAyKnNpemVvZihCeXRlKSk7CisgICAgcy0+cHJldiAgID0gKFBvc2YgKikgIFpBTExPQyhzdHJtLCBzLT53X3NpemUsIHNpemVvZihQb3MpKTsKKyAgICBzLT5oZWFkICAgPSAoUG9zZiAqKSAgWkFMTE9DKHN0cm0sIHMtPmhhc2hfc2l6ZSwgc2l6ZW9mKFBvcykpOworCisgICAgcy0+aGlnaF93YXRlciA9IDA7ICAgICAgLyogbm90aGluZyB3cml0dGVuIHRvIHMtPndpbmRvdyB5ZXQgKi8KKworICAgIHMtPmxpdF9idWZzaXplID0gMSA8PCAobWVtTGV2ZWwgKyA2KTsgLyogMTZLIGVsZW1lbnRzIGJ5IGRlZmF1bHQgKi8KKworICAgIG92ZXJsYXkgPSAodXNoZiAqKSBaQUxMT0Moc3RybSwgcy0+bGl0X2J1ZnNpemUsIHNpemVvZih1c2gpKzIpOworICAgIHMtPnBlbmRpbmdfYnVmID0gKHVjaGYgKikgb3ZlcmxheTsKKyAgICBzLT5wZW5kaW5nX2J1Zl9zaXplID0gKHVsZylzLT5saXRfYnVmc2l6ZSAqIChzaXplb2YodXNoKSsyTCk7CisKKyAgICBpZiAocy0+d2luZG93ID09IFpfTlVMTCB8fCBzLT5wcmV2ID09IFpfTlVMTCB8fCBzLT5oZWFkID09IFpfTlVMTCB8fAorICAgICAgICBzLT5wZW5kaW5nX2J1ZiA9PSBaX05VTEwpIHsKKyAgICAgICAgcy0+c3RhdHVzID0gRklOSVNIX1NUQVRFOworICAgICAgICBzdHJtLT5tc2cgPSBFUlJfTVNHKFpfTUVNX0VSUk9SKTsKKyAgICAgICAgZGVmbGF0ZUVuZCAoc3RybSk7CisgICAgICAgIHJldHVybiBaX01FTV9FUlJPUjsKKyAgICB9CisgICAgcy0+ZF9idWYgPSBvdmVybGF5ICsgcy0+bGl0X2J1ZnNpemUvc2l6ZW9mKHVzaCk7CisgICAgcy0+bF9idWYgPSBzLT5wZW5kaW5nX2J1ZiArICgxK3NpemVvZih1c2gpKSpzLT5saXRfYnVmc2l6ZTsKKworICAgIHMtPmxldmVsID0gbGV2ZWw7CisgICAgcy0+c3RyYXRlZ3kgPSBzdHJhdGVneTsKKyAgICBzLT5tZXRob2QgPSAoQnl0ZSltZXRob2Q7CisKKyAgICByZXR1cm4gZGVmbGF0ZVJlc2V0KHN0cm0pOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitpbnQgWkVYUE9SVCBkZWZsYXRlU2V0RGljdGlvbmFyeSAoCisgICAgel9zdHJlYW1wIHN0cm0sCisgICAgY29uc3QgQnl0ZWYgKmRpY3Rpb25hcnksCisgICAgdUludCAgZGljdExlbmd0aCkKK3sKKyAgICBkZWZsYXRlX3N0YXRlICpzOworICAgIHVJbnQgc3RyLCBuOworICAgIGludCB3cmFwOworICAgIHVuc2lnbmVkIGF2YWlsOworICAgIHpfY29uc3QgdW5zaWduZWQgY2hhciAqbmV4dDsKKworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwgfHwgZGljdGlvbmFyeSA9PSBaX05VTEwpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzID0gc3RybS0+c3RhdGU7CisgICAgd3JhcCA9IHMtPndyYXA7CisgICAgaWYgKHdyYXAgPT0gMiB8fCAod3JhcCA9PSAxICYmIHMtPnN0YXR1cyAhPSBJTklUX1NUQVRFKSB8fCBzLT5sb29rYWhlYWQpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKworICAgIC8qIHdoZW4gdXNpbmcgemxpYiB3cmFwcGVycywgY29tcHV0ZSBBZGxlci0zMiBmb3IgcHJvdmlkZWQgZGljdGlvbmFyeSAqLworICAgIGlmICh3cmFwID09IDEpCisgICAgICAgIHN0cm0tPmFkbGVyID0gYWRsZXIzMihzdHJtLT5hZGxlciwgZGljdGlvbmFyeSwgZGljdExlbmd0aCk7CisgICAgcy0+d3JhcCA9IDA7ICAgICAgICAgICAgICAgICAgICAvKiBhdm9pZCBjb21wdXRpbmcgQWRsZXItMzIgaW4gcmVhZF9idWYgKi8KKworICAgIC8qIGlmIGRpY3Rpb25hcnkgd291bGQgZmlsbCB3aW5kb3csIGp1c3QgcmVwbGFjZSB0aGUgaGlzdG9yeSAqLworICAgIGlmIChkaWN0TGVuZ3RoID49IHMtPndfc2l6ZSkgeworICAgICAgICBpZiAod3JhcCA9PSAwKSB7ICAgICAgICAgICAgLyogYWxyZWFkeSBlbXB0eSBvdGhlcndpc2UgKi8KKyAgICAgICAgICAgIENMRUFSX0hBU0gocyk7CisgICAgICAgICAgICBzLT5zdHJzdGFydCA9IDA7CisgICAgICAgICAgICBzLT5ibG9ja19zdGFydCA9IDBMOworICAgICAgICAgICAgcy0+aW5zZXJ0ID0gMDsKKyAgICAgICAgfQorICAgICAgICBkaWN0aW9uYXJ5ICs9IGRpY3RMZW5ndGggLSBzLT53X3NpemU7ICAvKiB1c2UgdGhlIHRhaWwgKi8KKyAgICAgICAgZGljdExlbmd0aCA9IHMtPndfc2l6ZTsKKyAgICB9CisKKyAgICAvKiBpbnNlcnQgZGljdGlvbmFyeSBpbnRvIHdpbmRvdyBhbmQgaGFzaCAqLworICAgIGF2YWlsID0gc3RybS0+YXZhaWxfaW47CisgICAgbmV4dCA9IHN0cm0tPm5leHRfaW47CisgICAgc3RybS0+YXZhaWxfaW4gPSBkaWN0TGVuZ3RoOworICAgIHN0cm0tPm5leHRfaW4gPSAoel9jb25zdCBCeXRlZiAqKWRpY3Rpb25hcnk7CisgICAgZmlsbF93aW5kb3cocyk7CisgICAgd2hpbGUgKHMtPmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHsKKyAgICAgICAgc3RyID0gcy0+c3Ryc3RhcnQ7CisgICAgICAgIG4gPSBzLT5sb29rYWhlYWQgLSAoTUlOX01BVENILTEpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIE1JTl9NQVRDSC0xXSk7CisjaWZuZGVmIEZBU1RFU1QKKyAgICAgICAgICAgIHMtPnByZXZbc3RyICYgcy0+d19tYXNrXSA9IHMtPmhlYWRbcy0+aW5zX2hdOworI2VuZGlmCisgICAgICAgICAgICBzLT5oZWFkW3MtPmluc19oXSA9IChQb3Mpc3RyOworICAgICAgICAgICAgc3RyKys7CisgICAgICAgIH0gd2hpbGUgKC0tbik7CisgICAgICAgIHMtPnN0cnN0YXJ0ID0gc3RyOworICAgICAgICBzLT5sb29rYWhlYWQgPSBNSU5fTUFUQ0gtMTsKKyAgICAgICAgZmlsbF93aW5kb3cocyk7CisgICAgfQorICAgIHMtPnN0cnN0YXJ0ICs9IHMtPmxvb2thaGVhZDsKKyAgICBzLT5ibG9ja19zdGFydCA9IChsb25nKXMtPnN0cnN0YXJ0OworICAgIHMtPmluc2VydCA9IHMtPmxvb2thaGVhZDsKKyAgICBzLT5sb29rYWhlYWQgPSAwOworICAgIHMtPm1hdGNoX2xlbmd0aCA9IHMtPnByZXZfbGVuZ3RoID0gTUlOX01BVENILTE7CisgICAgcy0+bWF0Y2hfYXZhaWxhYmxlID0gMDsKKyAgICBzdHJtLT5uZXh0X2luID0gbmV4dDsKKyAgICBzdHJtLT5hdmFpbF9pbiA9IGF2YWlsOworICAgIHMtPndyYXAgPSB3cmFwOworICAgIHJldHVybiBaX09LOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitpbnQgWkVYUE9SVCBkZWZsYXRlUmVzZXRLZWVwICgKKyAgICB6X3N0cmVhbXAgc3RybSkKK3sKKyAgICBkZWZsYXRlX3N0YXRlICpzOworCisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCB8fAorICAgICAgICBzdHJtLT56YWxsb2MgPT0gKGFsbG9jX2Z1bmMpMCB8fCBzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTApIHsKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIH0KKworICAgIHN0cm0tPnRvdGFsX2luID0gc3RybS0+dG90YWxfb3V0ID0gMDsKKyAgICBzdHJtLT5tc2cgPSBaX05VTEw7IC8qIHVzZSB6ZnJlZSBpZiB3ZSBldmVyIGFsbG9jYXRlIG1zZyBkeW5hbWljYWxseSAqLworICAgIHN0cm0tPmRhdGFfdHlwZSA9IFpfVU5LTk9XTjsKKworICAgIHMgPSAoZGVmbGF0ZV9zdGF0ZSAqKXN0cm0tPnN0YXRlOworICAgIHMtPnBlbmRpbmcgPSAwOworICAgIHMtPnBlbmRpbmdfb3V0ID0gcy0+cGVuZGluZ19idWY7CisKKyAgICBpZiAocy0+d3JhcCA8IDApIHsKKyAgICAgICAgcy0+d3JhcCA9IC1zLT53cmFwOyAvKiB3YXMgbWFkZSBuZWdhdGl2ZSBieSBkZWZsYXRlKC4uLiwgWl9GSU5JU0gpOyAqLworICAgIH0KKyAgICBzLT5zdGF0dXMgPSBzLT53cmFwID8gSU5JVF9TVEFURSA6IEJVU1lfU1RBVEU7CisgICAgc3RybS0+YWRsZXIgPQorI2lmZGVmIEdaSVAKKyAgICAgICAgcy0+d3JhcCA9PSAyID8gY3JjMzIoMEwsIFpfTlVMTCwgMCkgOgorI2VuZGlmCisgICAgICAgIGFkbGVyMzIoMEwsIFpfTlVMTCwgMCk7CisgICAgcy0+bGFzdF9mbHVzaCA9IFpfTk9fRkxVU0g7CisKKyAgICBfdHJfaW5pdChzKTsKKworICAgIHJldHVybiBaX09LOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitpbnQgWkVYUE9SVCBkZWZsYXRlUmVzZXQgKAorICAgIHpfc3RyZWFtcCBzdHJtKQoreworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBkZWZsYXRlUmVzZXRLZWVwKHN0cm0pOworICAgIGlmIChyZXQgPT0gWl9PSykKKyAgICAgICAgbG1faW5pdChzdHJtLT5zdGF0ZSk7CisgICAgcmV0dXJuIHJldDsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworaW50IFpFWFBPUlQgZGVmbGF0ZVNldEhlYWRlciAoc3RybSwgaGVhZCkKKyAgICB6X3N0cmVhbXAgc3RybTsKKyAgICBnel9oZWFkZXJwIGhlYWQ7Cit7CisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChzdHJtLT5zdGF0ZS0+d3JhcCAhPSAyKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RybS0+c3RhdGUtPmd6aGVhZCA9IGhlYWQ7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK2ludCBaRVhQT1JUIGRlZmxhdGVQZW5kaW5nICgKKwl6X3N0cmVhbXAgc3RybSwKKyAgICB1bnNpZ25lZCAqcGVuZGluZywKKyAgICBpbnQgKmJpdHMpCit7CisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChwZW5kaW5nICE9IFpfTlVMTCkKKyAgICAgICAgKnBlbmRpbmcgPSBzdHJtLT5zdGF0ZS0+cGVuZGluZzsKKyAgICBpZiAoYml0cyAhPSBaX05VTEwpCisgICAgICAgICpiaXRzID0gc3RybS0+c3RhdGUtPmJpX3ZhbGlkOworICAgIHJldHVybiBaX09LOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitpbnQgWkVYUE9SVCBkZWZsYXRlUHJpbWUgKHN0cm0sIGJpdHMsIHZhbHVlKQorICAgIHpfc3RyZWFtcCBzdHJtOworICAgIGludCBiaXRzOworICAgIGludCB2YWx1ZTsKK3sKKyAgICBkZWZsYXRlX3N0YXRlICpzOworICAgIGludCBwdXQ7CisKKyAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgcyA9IHN0cm0tPnN0YXRlOworICAgIGlmICgoQnl0ZWYgKikocy0+ZF9idWYpIDwgcy0+cGVuZGluZ19vdXQgKyAoKEJ1Zl9zaXplICsgNykgPj4gMykpCisgICAgICAgIHJldHVybiBaX0JVRl9FUlJPUjsKKyAgICBkbyB7CisgICAgICAgIHB1dCA9IEJ1Zl9zaXplIC0gcy0+YmlfdmFsaWQ7CisgICAgICAgIGlmIChwdXQgPiBiaXRzKQorICAgICAgICAgICAgcHV0ID0gYml0czsKKyAgICAgICAgcy0+YmlfYnVmIHw9ICh1c2gpKCh2YWx1ZSAmICgoMSA8PCBwdXQpIC0gMSkpIDw8IHMtPmJpX3ZhbGlkKTsKKyAgICAgICAgcy0+YmlfdmFsaWQgKz0gcHV0OworICAgICAgICBfdHJfZmx1c2hfYml0cyhzKTsKKyAgICAgICAgdmFsdWUgPj49IHB1dDsKKyAgICAgICAgYml0cyAtPSBwdXQ7CisgICAgfSB3aGlsZSAoYml0cyk7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK2ludCBaRVhQT1JUIGRlZmxhdGVQYXJhbXMoCisgICAgel9zdHJlYW1wIHN0cm0sCisgICAgaW50IGxldmVsLAorICAgIGludCBzdHJhdGVneSkKK3sKKyAgICBkZWZsYXRlX3N0YXRlICpzOworICAgIGNvbXByZXNzX2Z1bmMgZnVuYzsKKyAgICBpbnQgZXJyID0gWl9PSzsKKworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzID0gc3RybS0+c3RhdGU7CisKKyNpZmRlZiBGQVNURVNUCisgICAgaWYgKGxldmVsICE9IDApIGxldmVsID0gMTsKKyNlbHNlCisgICAgaWYgKGxldmVsID09IFpfREVGQVVMVF9DT01QUkVTU0lPTikgbGV2ZWwgPSA2OworI2VuZGlmCisgICAgaWYgKGxldmVsIDwgMCB8fCBsZXZlbCA+IDkgfHwgc3RyYXRlZ3kgPCAwIHx8IHN0cmF0ZWd5ID4gWl9GSVhFRCkgeworICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgfQorICAgIGZ1bmMgPSBjb25maWd1cmF0aW9uX3RhYmxlW3MtPmxldmVsXS5mdW5jOworCisgICAgaWYgKChzdHJhdGVneSAhPSBzLT5zdHJhdGVneSB8fCBmdW5jICE9IGNvbmZpZ3VyYXRpb25fdGFibGVbbGV2ZWxdLmZ1bmMpICYmCisgICAgICAgIHN0cm0tPnRvdGFsX2luICE9IDApIHsKKyAgICAgICAgLyogRmx1c2ggdGhlIGxhc3QgYnVmZmVyOiAqLworICAgICAgICBlcnIgPSBkZWZsYXRlKHN0cm0sIFpfQkxPQ0spOworICAgICAgICBpZiAoZXJyID09IFpfQlVGX0VSUk9SICYmIHMtPnBlbmRpbmcgPT0gMCkKKyAgICAgICAgICAgIGVyciA9IFpfT0s7CisgICAgfQorICAgIGlmIChzLT5sZXZlbCAhPSBsZXZlbCkgeworICAgICAgICBzLT5sZXZlbCA9IGxldmVsOworICAgICAgICBzLT5tYXhfbGF6eV9tYXRjaCAgID0gY29uZmlndXJhdGlvbl90YWJsZVtsZXZlbF0ubWF4X2xhenk7CisgICAgICAgIHMtPmdvb2RfbWF0Y2ggICAgICAgPSBjb25maWd1cmF0aW9uX3RhYmxlW2xldmVsXS5nb29kX2xlbmd0aDsKKyAgICAgICAgcy0+bmljZV9tYXRjaCAgICAgICA9IGNvbmZpZ3VyYXRpb25fdGFibGVbbGV2ZWxdLm5pY2VfbGVuZ3RoOworICAgICAgICBzLT5tYXhfY2hhaW5fbGVuZ3RoID0gY29uZmlndXJhdGlvbl90YWJsZVtsZXZlbF0ubWF4X2NoYWluOworICAgIH0KKyAgICBzLT5zdHJhdGVneSA9IHN0cmF0ZWd5OworICAgIHJldHVybiBlcnI7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK2ludCBaRVhQT1JUIGRlZmxhdGVUdW5lKAorICAgIHpfc3RyZWFtcCBzdHJtLAorICAgIGludCBnb29kX2xlbmd0aCwKKyAgICBpbnQgbWF4X2xhenksCisgICAgaW50IG5pY2VfbGVuZ3RoLAorICAgIGludCBtYXhfY2hhaW4pCit7CisgICAgZGVmbGF0ZV9zdGF0ZSAqczsKKworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzID0gc3RybS0+c3RhdGU7CisgICAgcy0+Z29vZF9tYXRjaCA9IGdvb2RfbGVuZ3RoOworICAgIHMtPm1heF9sYXp5X21hdGNoID0gbWF4X2xhenk7CisgICAgcy0+bmljZV9tYXRjaCA9IG5pY2VfbGVuZ3RoOworICAgIHMtPm1heF9jaGFpbl9sZW5ndGggPSBtYXhfY2hhaW47CisgICAgcmV0dXJuIFpfT0s7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIEZvciB0aGUgZGVmYXVsdCB3aW5kb3dCaXRzIG9mIDE1IGFuZCBtZW1MZXZlbCBvZiA4LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMKKyAqIGEgY2xvc2UgdG8gZXhhY3QsIGFzIHdlbGwgYXMgc21hbGwsIHVwcGVyIGJvdW5kIG9uIHRoZSBjb21wcmVzc2VkIHNpemUuCisgKiBUaGV5IGFyZSBjb2RlZCBhcyBjb25zdGFudHMgaGVyZSBmb3IgYSByZWFzb24tLWlmIHRoZSAjZGVmaW5lJ3MgYXJlCisgKiBjaGFuZ2VkLCB0aGVuIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgY2hhbmdlZCBhcyB3ZWxsLiAgVGhlIHJldHVybgorICogdmFsdWUgZm9yIDE1IGFuZCA4IG9ubHkgd29ya3MgZm9yIHRob3NlIGV4YWN0IHNldHRpbmdzLgorICoKKyAqIEZvciBhbnkgc2V0dGluZyBvdGhlciB0aGFuIHRob3NlIGRlZmF1bHRzIGZvciB3aW5kb3dCaXRzIGFuZCBtZW1MZXZlbCwKKyAqIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBhIGNvbnNlcnZhdGl2ZSB3b3JzdCBjYXNlIGZvciB0aGUgbWF4aW11bSBleHBhbnNpb24KKyAqIHJlc3VsdGluZyBmcm9tIHVzaW5nIGZpeGVkIGJsb2NrcyBpbnN0ZWFkIG9mIHN0b3JlZCBibG9ja3MsIHdoaWNoIGRlZmxhdGUKKyAqIGNhbiBlbWl0IG9uIGNvbXByZXNzZWQgZGF0YSBmb3Igc29tZSBjb21iaW5hdGlvbnMgb2YgdGhlIHBhcmFtZXRlcnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBtb3JlIHNvcGhpc3RpY2F0ZWQgdG8gcHJvdmlkZSBjbG9zZXIgdXBwZXIgYm91bmRzIGZvcgorICogZXZlcnkgY29tYmluYXRpb24gb2Ygd2luZG93Qml0cyBhbmQgbWVtTGV2ZWwuICBCdXQgZXZlbiB0aGUgY29uc2VydmF0aXZlCisgKiB1cHBlciBib3VuZCBvZiBhYm91dCAxNCUgZXhwYW5zaW9uIGRvZXMgbm90IHNlZW0gb25lcm91cyBmb3Igb3V0cHV0IGJ1ZmZlcgorICogYWxsb2NhdGlvbi4KKyAqLwordUxvbmcgWkVYUE9SVCBkZWZsYXRlQm91bmQoCisgICAgel9zdHJlYW1wIHN0cm0sCisgICAgdUxvbmcgc291cmNlTGVuKQoreworICAgIGRlZmxhdGVfc3RhdGUgKnM7CisgICAgdUxvbmcgY29tcGxlbiwgd3JhcGxlbjsKKyAgICBCeXRlZiAqc3RyOworCisgICAgLyogY29uc2VydmF0aXZlIHVwcGVyIGJvdW5kIGZvciBjb21wcmVzc2VkIGRhdGEgKi8KKyAgICBjb21wbGVuID0gc291cmNlTGVuICsKKyAgICAgICAgICAgICAgKChzb3VyY2VMZW4gKyA3KSA+PiAzKSArICgoc291cmNlTGVuICsgNjMpID4+IDYpICsgNTsKKworICAgIC8qIGlmIGNhbid0IGdldCBwYXJhbWV0ZXJzLCByZXR1cm4gY29uc2VydmF0aXZlIGJvdW5kIHBsdXMgemxpYiB3cmFwcGVyICovCisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZW4gKyA2OworCisgICAgLyogY29tcHV0ZSB3cmFwcGVyIGxlbmd0aCAqLworICAgIHMgPSBzdHJtLT5zdGF0ZTsKKyAgICBzd2l0Y2ggKHMtPndyYXApIHsKKyAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmF3IGRlZmxhdGUgKi8KKyAgICAgICAgd3JhcGxlbiA9IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB6bGliIHdyYXBwZXIgKi8KKyAgICAgICAgd3JhcGxlbiA9IDYgKyAocy0+c3Ryc3RhcnQgPyA0IDogMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBnemlwIHdyYXBwZXIgKi8KKyAgICAgICAgd3JhcGxlbiA9IDE4OworICAgICAgICBpZiAocy0+Z3poZWFkICE9IFpfTlVMTCkgeyAgICAgICAgICAvKiB1c2VyLXN1cHBsaWVkIGd6aXAgaGVhZGVyICovCisgICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5leHRyYSAhPSBaX05VTEwpCisgICAgICAgICAgICAgICAgd3JhcGxlbiArPSAyICsgcy0+Z3poZWFkLT5leHRyYV9sZW47CisgICAgICAgICAgICBzdHIgPSBzLT5nemhlYWQtPm5hbWU7CisgICAgICAgICAgICBpZiAoc3RyICE9IFpfTlVMTCkKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIHdyYXBsZW4rKzsKKyAgICAgICAgICAgICAgICB9IHdoaWxlICgqc3RyKyspOworICAgICAgICAgICAgc3RyID0gcy0+Z3poZWFkLT5jb21tZW50OworICAgICAgICAgICAgaWYgKHN0ciAhPSBaX05VTEwpCisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICB3cmFwbGVuKys7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoKnN0cisrKTsKKyAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmhjcmMpCisgICAgICAgICAgICAgICAgd3JhcGxlbiArPSAyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgY29tcGlsZXIgaGFwcGluZXNzICovCisgICAgICAgIHdyYXBsZW4gPSA2OworICAgIH0KKworICAgIC8qIGlmIG5vdCBkZWZhdWx0IHBhcmFtZXRlcnMsIHJldHVybiBjb25zZXJ2YXRpdmUgYm91bmQgKi8KKyAgICBpZiAocy0+d19iaXRzICE9IDE1IHx8IHMtPmhhc2hfYml0cyAhPSA4ICsgNykKKyAgICAgICAgcmV0dXJuIGNvbXBsZW4gKyB3cmFwbGVuOworCisgICAgLyogZGVmYXVsdCBzZXR0aW5nczogcmV0dXJuIHRpZ2h0IGJvdW5kIGZvciB0aGF0IGNhc2UgKi8KKyAgICByZXR1cm4gc291cmNlTGVuICsgKHNvdXJjZUxlbiA+PiAxMikgKyAoc291cmNlTGVuID4+IDE0KSArCisgICAgICAgICAgIChzb3VyY2VMZW4gPj4gMjUpICsgMTMgLSA2ICsgd3JhcGxlbjsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogUHV0IGEgc2hvcnQgaW4gdGhlIHBlbmRpbmcgYnVmZmVyLiBUaGUgMTYtYml0IHZhbHVlIGlzIHB1dCBpbiBNU0Igb3JkZXIuCisgKiBJTiBhc3NlcnRpb246IHRoZSBzdHJlYW0gc3RhdGUgaXMgY29ycmVjdCBhbmQgdGhlcmUgaXMgZW5vdWdoIHJvb20gaW4KKyAqIHBlbmRpbmdfYnVmLgorICovCitsb2NhbCB2b2lkIHB1dFNob3J0TVNCICgKKyAgICBkZWZsYXRlX3N0YXRlICpzLAorICAgIHVJbnQgYikKK3sKKyAgICBwdXRfYnl0ZShzLCAoQnl0ZSkoYiA+PiA4KSk7CisgICAgcHV0X2J5dGUocywgKEJ5dGUpKGIgJiAweGZmKSk7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIEZsdXNoIGFzIG11Y2ggcGVuZGluZyBvdXRwdXQgYXMgcG9zc2libGUuIEFsbCBkZWZsYXRlKCkgb3V0cHV0IGdvZXMKKyAqIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBzbyBzb21lIGFwcGxpY2F0aW9ucyBtYXkgd2lzaCB0byBtb2RpZnkgaXQKKyAqIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSBsYXJnZSBzdHJtLT5uZXh0X291dCBidWZmZXIgYW5kIGNvcHlpbmcgaW50byBpdC4KKyAqIChTZWUgYWxzbyByZWFkX2J1ZigpKS4KKyAqLworbG9jYWwgdm9pZCBmbHVzaF9wZW5kaW5nKAorICAgIHpfc3RyZWFtcCBzdHJtKQoreworICAgIHVuc2lnbmVkIGxlbjsKKyAgICBkZWZsYXRlX3N0YXRlICpzID0gc3RybS0+c3RhdGU7CisKKyAgICBfdHJfZmx1c2hfYml0cyhzKTsKKyAgICBsZW4gPSBzLT5wZW5kaW5nOworICAgIGlmIChsZW4gPiBzdHJtLT5hdmFpbF9vdXQpIGxlbiA9IHN0cm0tPmF2YWlsX291dDsKKyAgICBpZiAobGVuID09IDApIHJldHVybjsKKworICAgIHptZW1jcHkoc3RybS0+bmV4dF9vdXQsIHMtPnBlbmRpbmdfb3V0LCBsZW4pOworICAgIHN0cm0tPm5leHRfb3V0ICArPSBsZW47CisgICAgcy0+cGVuZGluZ19vdXQgICs9IGxlbjsKKyAgICBzdHJtLT50b3RhbF9vdXQgKz0gbGVuOworICAgIHN0cm0tPmF2YWlsX291dCAgLT0gbGVuOworICAgIHMtPnBlbmRpbmcgLT0gbGVuOworICAgIGlmIChzLT5wZW5kaW5nID09IDApIHsKKyAgICAgICAgcy0+cGVuZGluZ19vdXQgPSBzLT5wZW5kaW5nX2J1ZjsKKyAgICB9Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK2ludCBaRVhQT1JUIGRlZmxhdGUgKAorICAgIHpfc3RyZWFtcCBzdHJtLAorICAgIGludCBmbHVzaCkKK3sKKyAgICBpbnQgb2xkX2ZsdXNoOyAvKiB2YWx1ZSBvZiBmbHVzaCBwYXJhbSBmb3IgcHJldmlvdXMgZGVmbGF0ZSBjYWxsICovCisgICAgZGVmbGF0ZV9zdGF0ZSAqczsKKworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwgfHwKKyAgICAgICAgZmx1c2ggPiBaX0JMT0NLIHx8IGZsdXNoIDwgMCkgeworICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgfQorICAgIHMgPSBzdHJtLT5zdGF0ZTsKKworICAgIGlmIChzdHJtLT5uZXh0X291dCA9PSBaX05VTEwgfHwKKyAgICAgICAgKHN0cm0tPm5leHRfaW4gPT0gWl9OVUxMICYmIHN0cm0tPmF2YWlsX2luICE9IDApIHx8CisgICAgICAgIChzLT5zdGF0dXMgPT0gRklOSVNIX1NUQVRFICYmIGZsdXNoICE9IFpfRklOSVNIKSkgeworICAgICAgICBFUlJfUkVUVVJOKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTsKKyAgICB9CisgICAgaWYgKHN0cm0tPmF2YWlsX291dCA9PSAwKSBFUlJfUkVUVVJOKHN0cm0sIFpfQlVGX0VSUk9SKTsKKworICAgIHMtPnN0cm0gPSBzdHJtOyAvKiBqdXN0IGluIGNhc2UgKi8KKyAgICBvbGRfZmx1c2ggPSBzLT5sYXN0X2ZsdXNoOworICAgIHMtPmxhc3RfZmx1c2ggPSBmbHVzaDsKKworICAgIC8qIFdyaXRlIHRoZSBoZWFkZXIgKi8KKyAgICBpZiAocy0+c3RhdHVzID09IElOSVRfU1RBVEUpIHsKKyNpZmRlZiBHWklQCisgICAgICAgIGlmIChzLT53cmFwID09IDIpIHsKKyAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7CisgICAgICAgICAgICBwdXRfYnl0ZShzLCAzMSk7CisgICAgICAgICAgICBwdXRfYnl0ZShzLCAxMzkpOworICAgICAgICAgICAgcHV0X2J5dGUocywgOCk7CisgICAgICAgICAgICBpZiAocy0+Z3poZWFkID09IFpfTlVMTCkgeworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIDApOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIDApOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIDApOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIDApOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIDApOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIHMtPmxldmVsID09IDkgPyAyIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocy0+c3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy0+bGV2ZWwgPCAyID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCA6IDApKTsKKyAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCBPU19DT0RFKTsKKyAgICAgICAgICAgICAgICBzLT5zdGF0dXMgPSBCVVNZX1NUQVRFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcHV0X2J5dGUocywgKHMtPmd6aGVhZC0+dGV4dCA/IDEgOiAwKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPmd6aGVhZC0+aGNyYyA/IDIgOiAwKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPmd6aGVhZC0+ZXh0cmEgPT0gWl9OVUxMID8gMCA6IDQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocy0+Z3poZWFkLT5uYW1lID09IFpfTlVMTCA/IDAgOiA4KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPmd6aGVhZC0+Y29tbWVudCA9PSBaX05VTEwgPyAwIDogMTYpCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKShzLT5nemhlYWQtPnRpbWUgJiAweGZmKSk7CisgICAgICAgICAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKChzLT5nemhlYWQtPnRpbWUgPj4gOCkgJiAweGZmKSk7CisgICAgICAgICAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKChzLT5nemhlYWQtPnRpbWUgPj4gMTYpICYgMHhmZikpOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgocy0+Z3poZWFkLT50aW1lID4+IDI0KSAmIDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCBzLT5sZXZlbCA9PSA5ID8gMiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMtPmxldmVsIDwgMiA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSk7CisgICAgICAgICAgICAgICAgcHV0X2J5dGUocywgcy0+Z3poZWFkLT5vcyAmIDB4ZmYpOworICAgICAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmV4dHJhICE9IFpfTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCBzLT5nemhlYWQtPmV4dHJhX2xlbiAmIDB4ZmYpOworICAgICAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAocy0+Z3poZWFkLT5leHRyYV9sZW4gPj4gOCkgJiAweGZmKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHMtPmd6aGVhZC0+aGNyYykKKyAgICAgICAgICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMzMihzdHJtLT5hZGxlciwgcy0+cGVuZGluZ19idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+cGVuZGluZyk7CisgICAgICAgICAgICAgICAgcy0+Z3ppbmRleCA9IDA7CisgICAgICAgICAgICAgICAgcy0+c3RhdHVzID0gRVhUUkFfU1RBVEU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIHVJbnQgaGVhZGVyID0gKFpfREVGTEFURUQgKyAoKHMtPndfYml0cy04KTw8NCkpIDw8IDg7CisgICAgICAgICAgICB1SW50IGxldmVsX2ZsYWdzOworCisgICAgICAgICAgICBpZiAocy0+c3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy0+bGV2ZWwgPCAyKQorICAgICAgICAgICAgICAgIGxldmVsX2ZsYWdzID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHMtPmxldmVsIDwgNikKKyAgICAgICAgICAgICAgICBsZXZlbF9mbGFncyA9IDE7CisgICAgICAgICAgICBlbHNlIGlmIChzLT5sZXZlbCA9PSA2KQorICAgICAgICAgICAgICAgIGxldmVsX2ZsYWdzID0gMjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsZXZlbF9mbGFncyA9IDM7CisgICAgICAgICAgICBoZWFkZXIgfD0gKGxldmVsX2ZsYWdzIDw8IDYpOworICAgICAgICAgICAgaWYgKHMtPnN0cnN0YXJ0ICE9IDApIGhlYWRlciB8PSBQUkVTRVRfRElDVDsKKyAgICAgICAgICAgIGhlYWRlciArPSAzMSAtIChoZWFkZXIgJSAzMSk7CisKKyAgICAgICAgICAgIHMtPnN0YXR1cyA9IEJVU1lfU1RBVEU7CisgICAgICAgICAgICBwdXRTaG9ydE1TQihzLCBoZWFkZXIpOworCisgICAgICAgICAgICAvKiBTYXZlIHRoZSBhZGxlcjMyIG9mIHRoZSBwcmVzZXQgZGljdGlvbmFyeTogKi8KKyAgICAgICAgICAgIGlmIChzLT5zdHJzdGFydCAhPSAwKSB7CisgICAgICAgICAgICAgICAgcHV0U2hvcnRNU0IocywgKHVJbnQpKHN0cm0tPmFkbGVyID4+IDE2KSk7CisgICAgICAgICAgICAgICAgcHV0U2hvcnRNU0IocywgKHVJbnQpKHN0cm0tPmFkbGVyICYgMHhmZmZmKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHJtLT5hZGxlciA9IGFkbGVyMzIoMEwsIFpfTlVMTCwgMCk7CisgICAgICAgIH0KKyAgICB9CisjaWZkZWYgR1pJUAorICAgIGlmIChzLT5zdGF0dXMgPT0gRVhUUkFfU1RBVEUpIHsKKyAgICAgICAgaWYgKHMtPmd6aGVhZC0+ZXh0cmEgIT0gWl9OVUxMKSB7CisgICAgICAgICAgICB1SW50IGJlZyA9IHMtPnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovCisKKyAgICAgICAgICAgIHdoaWxlIChzLT5nemluZGV4IDwgKHMtPmd6aGVhZC0+ZXh0cmFfbGVuICYgMHhmZmZmKSkgeworICAgICAgICAgICAgICAgIGlmIChzLT5wZW5kaW5nID09IHMtPnBlbmRpbmdfYnVmX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmd6aGVhZC0+aGNyYyAmJiBzLT5wZW5kaW5nID4gYmVnKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMzMihzdHJtLT5hZGxlciwgcy0+cGVuZGluZ19idWYgKyBiZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBlbmRpbmcgLSBiZWcpOworICAgICAgICAgICAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pOworICAgICAgICAgICAgICAgICAgICBiZWcgPSBzLT5wZW5kaW5nOworICAgICAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyA9PSBzLT5wZW5kaW5nX2J1Zl9zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIHMtPmd6aGVhZC0+ZXh0cmFbcy0+Z3ppbmRleF0pOworICAgICAgICAgICAgICAgIHMtPmd6aW5kZXgrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmhjcmMgJiYgcy0+cGVuZGluZyA+IGJlZykKKyAgICAgICAgICAgICAgICBzdHJtLT5hZGxlciA9IGNyYzMyKHN0cm0tPmFkbGVyLCBzLT5wZW5kaW5nX2J1ZiArIGJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBlbmRpbmcgLSBiZWcpOworICAgICAgICAgICAgaWYgKHMtPmd6aW5kZXggPT0gcy0+Z3poZWFkLT5leHRyYV9sZW4pIHsKKyAgICAgICAgICAgICAgICBzLT5nemluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICBzLT5zdGF0dXMgPSBOQU1FX1NUQVRFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHMtPnN0YXR1cyA9IE5BTUVfU1RBVEU7CisgICAgfQorICAgIGlmIChzLT5zdGF0dXMgPT0gTkFNRV9TVEFURSkgeworICAgICAgICBpZiAocy0+Z3poZWFkLT5uYW1lICE9IFpfTlVMTCkgeworICAgICAgICAgICAgdUludCBiZWcgPSBzLT5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLworICAgICAgICAgICAgaW50IHZhbDsKKworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGlmIChzLT5wZW5kaW5nID09IHMtPnBlbmRpbmdfYnVmX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmd6aGVhZC0+aGNyYyAmJiBzLT5wZW5kaW5nID4gYmVnKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMzMihzdHJtLT5hZGxlciwgcy0+cGVuZGluZ19idWYgKyBiZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBlbmRpbmcgLSBiZWcpOworICAgICAgICAgICAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pOworICAgICAgICAgICAgICAgICAgICBiZWcgPSBzLT5wZW5kaW5nOworICAgICAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyA9PSBzLT5wZW5kaW5nX2J1Zl9zaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFsID0gcy0+Z3poZWFkLT5uYW1lW3MtPmd6aW5kZXgrK107CisgICAgICAgICAgICAgICAgcHV0X2J5dGUocywgdmFsKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHZhbCAhPSAwKTsKKyAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmhjcmMgJiYgcy0+cGVuZGluZyA+IGJlZykKKyAgICAgICAgICAgICAgICBzdHJtLT5hZGxlciA9IGNyYzMyKHN0cm0tPmFkbGVyLCBzLT5wZW5kaW5nX2J1ZiArIGJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBlbmRpbmcgLSBiZWcpOworICAgICAgICAgICAgaWYgKHZhbCA9PSAwKSB7CisgICAgICAgICAgICAgICAgcy0+Z3ppbmRleCA9IDA7CisgICAgICAgICAgICAgICAgcy0+c3RhdHVzID0gQ09NTUVOVF9TVEFURTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzLT5zdGF0dXMgPSBDT01NRU5UX1NUQVRFOworICAgIH0KKyAgICBpZiAocy0+c3RhdHVzID09IENPTU1FTlRfU1RBVEUpIHsKKyAgICAgICAgaWYgKHMtPmd6aGVhZC0+Y29tbWVudCAhPSBaX05VTEwpIHsKKyAgICAgICAgICAgIHVJbnQgYmVnID0gcy0+cGVuZGluZzsgIC8qIHN0YXJ0IG9mIGJ5dGVzIHRvIHVwZGF0ZSBjcmMgKi8KKyAgICAgICAgICAgIGludCB2YWw7CisKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyA9PSBzLT5wZW5kaW5nX2J1Zl9zaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmhjcmMgJiYgcy0+cGVuZGluZyA+IGJlZykKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+YWRsZXIsIHMtPnBlbmRpbmdfYnVmICsgYmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wZW5kaW5nIC0gYmVnKTsKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKKyAgICAgICAgICAgICAgICAgICAgYmVnID0gcy0+cGVuZGluZzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPnBlbmRpbmcgPT0gcy0+cGVuZGluZ19idWZfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhbCA9IHMtPmd6aGVhZC0+Y29tbWVudFtzLT5nemluZGV4KytdOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIHZhbCk7CisgICAgICAgICAgICB9IHdoaWxlICh2YWwgIT0gMCk7CisgICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5oY3JjICYmIHMtPnBlbmRpbmcgPiBiZWcpCisgICAgICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMzMihzdHJtLT5hZGxlciwgcy0+cGVuZGluZ19idWYgKyBiZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wZW5kaW5nIC0gYmVnKTsKKyAgICAgICAgICAgIGlmICh2YWwgPT0gMCkKKyAgICAgICAgICAgICAgICBzLT5zdGF0dXMgPSBIQ1JDX1NUQVRFOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHMtPnN0YXR1cyA9IEhDUkNfU1RBVEU7CisgICAgfQorICAgIGlmIChzLT5zdGF0dXMgPT0gSENSQ19TVEFURSkgeworICAgICAgICBpZiAocy0+Z3poZWFkLT5oY3JjKSB7CisgICAgICAgICAgICBpZiAocy0+cGVuZGluZyArIDIgPiBzLT5wZW5kaW5nX2J1Zl9zaXplKQorICAgICAgICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CisgICAgICAgICAgICBpZiAocy0+cGVuZGluZyArIDIgPD0gcy0+cGVuZGluZ19idWZfc2l6ZSkgeworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKShzdHJtLT5hZGxlciAmIDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkoKHN0cm0tPmFkbGVyID4+IDgpICYgMHhmZikpOworICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgcy0+c3RhdHVzID0gQlVTWV9TVEFURTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzLT5zdGF0dXMgPSBCVVNZX1NUQVRFOworICAgIH0KKyNlbmRpZgorCisgICAgLyogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZSAqLworICAgIGlmIChzLT5wZW5kaW5nICE9IDApIHsKKyAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKKyAgICAgICAgaWYgKHN0cm0tPmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICAvKiBTaW5jZSBhdmFpbF9vdXQgaXMgMCwgZGVmbGF0ZSB3aWxsIGJlIGNhbGxlZCBhZ2FpbiB3aXRoCisgICAgICAgICAgICAgKiBtb3JlIG91dHB1dCBzcGFjZSwgYnV0IHBvc3NpYmx5IHdpdGggYm90aCBwZW5kaW5nIGFuZAorICAgICAgICAgICAgICogYXZhaWxfaW4gZXF1YWwgdG8gemVyby4gVGhlcmUgd29uJ3QgYmUgYW55dGhpbmcgdG8gZG8sCisgICAgICAgICAgICAgKiBidXQgdGhpcyBpcyBub3QgYW4gZXJyb3Igc2l0dWF0aW9uIHNvIG1ha2Ugc3VyZSB3ZQorICAgICAgICAgICAgICogcmV0dXJuIE9LIGluc3RlYWQgb2YgQlVGX0VSUk9SIGF0IG5leHQgY2FsbCBvZiBkZWZsYXRlOgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzLT5sYXN0X2ZsdXNoID0gLTE7CisgICAgICAgICAgICByZXR1cm4gWl9PSzsKKyAgICAgICAgfQorCisgICAgLyogTWFrZSBzdXJlIHRoZXJlIGlzIHNvbWV0aGluZyB0byBkbyBhbmQgYXZvaWQgZHVwbGljYXRlIGNvbnNlY3V0aXZlCisgICAgICogZmx1c2hlcy4gRm9yIHJlcGVhdGVkIGFuZCB1c2VsZXNzIGNhbGxzIHdpdGggWl9GSU5JU0gsIHdlIGtlZXAKKyAgICAgKiByZXR1cm5pbmcgWl9TVFJFQU1fRU5EIGluc3RlYWQgb2YgWl9CVUZfRVJST1IuCisgICAgICovCisgICAgfSBlbHNlIGlmIChzdHJtLT5hdmFpbF9pbiA9PSAwICYmIFJBTksoZmx1c2gpIDw9IFJBTksob2xkX2ZsdXNoKSAmJgorICAgICAgICAgICAgICAgZmx1c2ggIT0gWl9GSU5JU0gpIHsKKyAgICAgICAgRVJSX1JFVFVSTihzdHJtLCBaX0JVRl9FUlJPUik7CisgICAgfQorCisgICAgLyogVXNlciBtdXN0IG5vdCBwcm92aWRlIG1vcmUgaW5wdXQgYWZ0ZXIgdGhlIGZpcnN0IEZJTklTSDogKi8KKyAgICBpZiAocy0+c3RhdHVzID09IEZJTklTSF9TVEFURSAmJiBzdHJtLT5hdmFpbF9pbiAhPSAwKSB7CisgICAgICAgIEVSUl9SRVRVUk4oc3RybSwgWl9CVUZfRVJST1IpOworICAgIH0KKworICAgIC8qIFN0YXJ0IGEgbmV3IGJsb2NrIG9yIGNvbnRpbnVlIHRoZSBjdXJyZW50IG9uZS4KKyAgICAgKi8KKyAgICBpZiAoc3RybS0+YXZhaWxfaW4gIT0gMCB8fCBzLT5sb29rYWhlYWQgIT0gMCB8fAorICAgICAgICAoZmx1c2ggIT0gWl9OT19GTFVTSCAmJiBzLT5zdGF0dXMgIT0gRklOSVNIX1NUQVRFKSkgeworICAgICAgICBibG9ja19zdGF0ZSBic3RhdGU7CisKKyAgICAgICAgYnN0YXRlID0gcy0+c3RyYXRlZ3kgPT0gWl9IVUZGTUFOX09OTFkgPyBkZWZsYXRlX2h1ZmYocywgZmx1c2gpIDoKKyAgICAgICAgICAgICAgICAgICAgKHMtPnN0cmF0ZWd5ID09IFpfUkxFID8gZGVmbGF0ZV9ybGUocywgZmx1c2gpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICgqKGNvbmZpZ3VyYXRpb25fdGFibGVbcy0+bGV2ZWxdLmZ1bmMpKShzLCBmbHVzaCkpOworCisgICAgICAgIGlmIChic3RhdGUgPT0gZmluaXNoX3N0YXJ0ZWQgfHwgYnN0YXRlID09IGZpbmlzaF9kb25lKSB7CisgICAgICAgICAgICBzLT5zdGF0dXMgPSBGSU5JU0hfU1RBVEU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJzdGF0ZSA9PSBuZWVkX21vcmUgfHwgYnN0YXRlID09IGZpbmlzaF9zdGFydGVkKSB7CisgICAgICAgICAgICBpZiAoc3RybS0+YXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgICAgICBzLT5sYXN0X2ZsdXNoID0gLTE7IC8qIGF2b2lkIEJVRl9FUlJPUiBuZXh0IGNhbGwsIHNlZSBhYm92ZSAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFpfT0s7CisgICAgICAgICAgICAvKiBJZiBmbHVzaCAhPSBaX05PX0ZMVVNIICYmIGF2YWlsX291dCA9PSAwLCB0aGUgbmV4dCBjYWxsCisgICAgICAgICAgICAgKiBvZiBkZWZsYXRlIHNob3VsZCB1c2UgdGhlIHNhbWUgZmx1c2ggcGFyYW1ldGVyIHRvIG1ha2Ugc3VyZQorICAgICAgICAgICAgICogdGhhdCB0aGUgZmx1c2ggaXMgY29tcGxldGUuIFNvIHdlIGRvbid0IGhhdmUgdG8gb3V0cHV0IGFuCisgICAgICAgICAgICAgKiBlbXB0eSBibG9jayBoZXJlLCB0aGlzIHdpbGwgYmUgZG9uZSBhdCBuZXh0IGNhbGwuIFRoaXMgYWxzbworICAgICAgICAgICAgICogZW5zdXJlcyB0aGF0IGZvciBhIHZlcnkgc21hbGwgb3V0cHV0IGJ1ZmZlciwgd2UgZW1pdCBhdCBtb3N0CisgICAgICAgICAgICAgKiBvbmUgZW1wdHkgYmxvY2suCisgICAgICAgICAgICAgKi8KKyAgICAgICAgfQorICAgICAgICBpZiAoYnN0YXRlID09IGJsb2NrX2RvbmUpIHsKKyAgICAgICAgICAgIGlmIChmbHVzaCA9PSBaX1BBUlRJQUxfRkxVU0gpIHsKKyAgICAgICAgICAgICAgICBfdHJfYWxpZ24ocyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZsdXNoICE9IFpfQkxPQ0spIHsgLyogRlVMTF9GTFVTSCBvciBTWU5DX0ZMVVNIICovCisgICAgICAgICAgICAgICAgX3RyX3N0b3JlZF9ibG9jayhzLCAoY2hhciopMCwgMEwsIDApOworICAgICAgICAgICAgICAgIC8qIEZvciBhIGZ1bGwgZmx1c2gsIHRoaXMgZW1wdHkgYmxvY2sgd2lsbCBiZSByZWNvZ25pemVkCisgICAgICAgICAgICAgICAgICogYXMgYSBzcGVjaWFsIG1hcmtlciBieSBpbmZsYXRlX3N5bmMoKS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoZmx1c2ggPT0gWl9GVUxMX0ZMVVNIKSB7CisgICAgICAgICAgICAgICAgICAgIENMRUFSX0hBU0gocyk7ICAgICAgICAgICAgIC8qIGZvcmdldCBoaXN0b3J5ICovCisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5sb29rYWhlYWQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcy0+c3Ryc3RhcnQgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+YmxvY2tfc3RhcnQgPSAwTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmluc2VydCA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pOworICAgICAgICAgICAgaWYgKHN0cm0tPmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICAgIHMtPmxhc3RfZmx1c2ggPSAtMTsgLyogYXZvaWQgQlVGX0VSUk9SIGF0IG5leHQgY2FsbCwgc2VlIGFib3ZlICovCisgICAgICAgICAgICAgIHJldHVybiBaX09LOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIEFzc2VydChzdHJtLT5hdmFpbF9vdXQgPiAwLCAiYnVnMiIpOworCisgICAgaWYgKGZsdXNoICE9IFpfRklOSVNIKSByZXR1cm4gWl9PSzsKKyAgICBpZiAocy0+d3JhcCA8PSAwKSByZXR1cm4gWl9TVFJFQU1fRU5EOworCisgICAgLyogV3JpdGUgdGhlIHRyYWlsZXIgKi8KKyNpZmRlZiBHWklQCisgICAgaWYgKHMtPndyYXAgPT0gMikgeworICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkoc3RybS0+YWRsZXIgJiAweGZmKSk7CisgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgoc3RybS0+YWRsZXIgPj4gOCkgJiAweGZmKSk7CisgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgoc3RybS0+YWRsZXIgPj4gMTYpICYgMHhmZikpOworICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkoKHN0cm0tPmFkbGVyID4+IDI0KSAmIDB4ZmYpKTsKKyAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKHN0cm0tPnRvdGFsX2luICYgMHhmZikpOworICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkoKHN0cm0tPnRvdGFsX2luID4+IDgpICYgMHhmZikpOworICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkoKHN0cm0tPnRvdGFsX2luID4+IDE2KSAmIDB4ZmYpKTsKKyAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKChzdHJtLT50b3RhbF9pbiA+PiAyNCkgJiAweGZmKSk7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgICAgcHV0U2hvcnRNU0IocywgKHVJbnQpKHN0cm0tPmFkbGVyID4+IDE2KSk7CisgICAgICAgIHB1dFNob3J0TVNCKHMsICh1SW50KShzdHJtLT5hZGxlciAmIDB4ZmZmZikpOworICAgIH0KKyAgICBmbHVzaF9wZW5kaW5nKHN0cm0pOworICAgIC8qIElmIGF2YWlsX291dCBpcyB6ZXJvLCB0aGUgYXBwbGljYXRpb24gd2lsbCBjYWxsIGRlZmxhdGUgYWdhaW4KKyAgICAgKiB0byBmbHVzaCB0aGUgcmVzdC4KKyAgICAgKi8KKyAgICBpZiAocy0+d3JhcCA+IDApIHMtPndyYXAgPSAtcy0+d3JhcDsgLyogd3JpdGUgdGhlIHRyYWlsZXIgb25seSBvbmNlISAqLworICAgIHJldHVybiBzLT5wZW5kaW5nICE9IDAgPyBaX09LIDogWl9TVFJFQU1fRU5EOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitpbnQgWkVYUE9SVCBkZWZsYXRlRW5kICgKKyAgICB6X3N0cmVhbXAgc3RybSkKK3sKKyAgICBpbnQgc3RhdHVzOworCisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworCisgICAgc3RhdHVzID0gc3RybS0+c3RhdGUtPnN0YXR1czsKKyAgICBpZiAoc3RhdHVzICE9IElOSVRfU1RBVEUgJiYKKyAgICAgICAgc3RhdHVzICE9IEVYVFJBX1NUQVRFICYmCisgICAgICAgIHN0YXR1cyAhPSBOQU1FX1NUQVRFICYmCisgICAgICAgIHN0YXR1cyAhPSBDT01NRU5UX1NUQVRFICYmCisgICAgICAgIHN0YXR1cyAhPSBIQ1JDX1NUQVRFICYmCisgICAgICAgIHN0YXR1cyAhPSBCVVNZX1NUQVRFICYmCisgICAgICAgIHN0YXR1cyAhPSBGSU5JU0hfU1RBVEUpIHsKKyAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICB9CisKKyAgICAvKiBEZWFsbG9jYXRlIGluIHJldmVyc2Ugb3JkZXIgb2YgYWxsb2NhdGlvbnM6ICovCisgICAgVFJZX0ZSRUUoc3RybSwgc3RybS0+c3RhdGUtPnBlbmRpbmdfYnVmKTsKKyAgICBUUllfRlJFRShzdHJtLCBzdHJtLT5zdGF0ZS0+aGVhZCk7CisgICAgVFJZX0ZSRUUoc3RybSwgc3RybS0+c3RhdGUtPnByZXYpOworICAgIFRSWV9GUkVFKHN0cm0sIHN0cm0tPnN0YXRlLT53aW5kb3cpOworCisgICAgWkZSRUUoc3RybSwgc3RybS0+c3RhdGUpOworICAgIHN0cm0tPnN0YXRlID0gWl9OVUxMOworCisgICAgcmV0dXJuIHN0YXR1cyA9PSBCVVNZX1NUQVRFID8gWl9EQVRBX0VSUk9SIDogWl9PSzsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29weSB0aGUgc291cmNlIHN0YXRlIHRvIHRoZSBkZXN0aW5hdGlvbiBzdGF0ZS4KKyAqIFRvIHNpbXBsaWZ5IHRoZSBzb3VyY2UsIHRoaXMgaXMgbm90IHN1cHBvcnRlZCBmb3IgMTYtYml0IE1TRE9TICh3aGljaAorICogZG9lc24ndCBoYXZlIGVub3VnaCBtZW1vcnkgYW55d2F5IHRvIGR1cGxpY2F0ZSBjb21wcmVzc2lvbiBzdGF0ZXMpLgorICovCitpbnQgWkVYUE9SVCBkZWZsYXRlQ29weSAoCisgICAgel9zdHJlYW1wIGRlc3QsCisgICAgel9zdHJlYW1wIHNvdXJjZSkKK3sKKyNpZmRlZiBNQVhTRUdfNjRLCisgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworI2Vsc2UKKyAgICBkZWZsYXRlX3N0YXRlICpkczsKKyAgICBkZWZsYXRlX3N0YXRlICpzczsKKyAgICB1c2hmICpvdmVybGF5OworCisKKyAgICBpZiAoc291cmNlID09IFpfTlVMTCB8fCBkZXN0ID09IFpfTlVMTCB8fCBzb3VyY2UtPnN0YXRlID09IFpfTlVMTCkgeworICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgfQorCisgICAgc3MgPSBzb3VyY2UtPnN0YXRlOworCisgICAgem1lbWNweSgodm9pZHBmKWRlc3QsICh2b2lkcGYpc291cmNlLCBzaXplb2Yoel9zdHJlYW0pKTsKKworICAgIGRzID0gKGRlZmxhdGVfc3RhdGUgKikgWkFMTE9DKGRlc3QsIDEsIHNpemVvZihkZWZsYXRlX3N0YXRlKSk7CisgICAgaWYgKGRzID09IFpfTlVMTCkgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgIGRlc3QtPnN0YXRlID0gKHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSBGQVIgKikgZHM7CisgICAgem1lbWNweSgodm9pZHBmKWRzLCAodm9pZHBmKXNzLCBzaXplb2YoZGVmbGF0ZV9zdGF0ZSkpOworICAgIGRzLT5zdHJtID0gZGVzdDsKKworICAgIGRzLT53aW5kb3cgPSAoQnl0ZWYgKikgWkFMTE9DKGRlc3QsIGRzLT53X3NpemUsIDIqc2l6ZW9mKEJ5dGUpKTsKKyAgICBkcy0+cHJldiAgID0gKFBvc2YgKikgIFpBTExPQyhkZXN0LCBkcy0+d19zaXplLCBzaXplb2YoUG9zKSk7CisgICAgZHMtPmhlYWQgICA9IChQb3NmICopICBaQUxMT0MoZGVzdCwgZHMtPmhhc2hfc2l6ZSwgc2l6ZW9mKFBvcykpOworICAgIG92ZXJsYXkgPSAodXNoZiAqKSBaQUxMT0MoZGVzdCwgZHMtPmxpdF9idWZzaXplLCBzaXplb2YodXNoKSsyKTsKKyAgICBkcy0+cGVuZGluZ19idWYgPSAodWNoZiAqKSBvdmVybGF5OworCisgICAgaWYgKGRzLT53aW5kb3cgPT0gWl9OVUxMIHx8IGRzLT5wcmV2ID09IFpfTlVMTCB8fCBkcy0+aGVhZCA9PSBaX05VTEwgfHwKKyAgICAgICAgZHMtPnBlbmRpbmdfYnVmID09IFpfTlVMTCkgeworICAgICAgICBkZWZsYXRlRW5kIChkZXN0KTsKKyAgICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgIH0KKyAgICAvKiBmb2xsb3dpbmcgem1lbWNweSBkbyBub3Qgd29yayBmb3IgMTYtYml0IE1TRE9TICovCisgICAgem1lbWNweShkcy0+d2luZG93LCBzcy0+d2luZG93LCBkcy0+d19zaXplICogMiAqIHNpemVvZihCeXRlKSk7CisgICAgem1lbWNweSgodm9pZHBmKWRzLT5wcmV2LCAodm9pZHBmKXNzLT5wcmV2LCBkcy0+d19zaXplICogc2l6ZW9mKFBvcykpOworICAgIHptZW1jcHkoKHZvaWRwZilkcy0+aGVhZCwgKHZvaWRwZilzcy0+aGVhZCwgZHMtPmhhc2hfc2l6ZSAqIHNpemVvZihQb3MpKTsKKyAgICB6bWVtY3B5KGRzLT5wZW5kaW5nX2J1Ziwgc3MtPnBlbmRpbmdfYnVmLCAodUludClkcy0+cGVuZGluZ19idWZfc2l6ZSk7CisKKyAgICBkcy0+cGVuZGluZ19vdXQgPSBkcy0+cGVuZGluZ19idWYgKyAoc3MtPnBlbmRpbmdfb3V0IC0gc3MtPnBlbmRpbmdfYnVmKTsKKyAgICBkcy0+ZF9idWYgPSBvdmVybGF5ICsgZHMtPmxpdF9idWZzaXplL3NpemVvZih1c2gpOworICAgIGRzLT5sX2J1ZiA9IGRzLT5wZW5kaW5nX2J1ZiArICgxK3NpemVvZih1c2gpKSpkcy0+bGl0X2J1ZnNpemU7CisKKyAgICBkcy0+bF9kZXNjLmR5bl90cmVlID0gZHMtPmR5bl9sdHJlZTsKKyAgICBkcy0+ZF9kZXNjLmR5bl90cmVlID0gZHMtPmR5bl9kdHJlZTsKKyAgICBkcy0+YmxfZGVzYy5keW5fdHJlZSA9IGRzLT5ibF90cmVlOworCisgICAgcmV0dXJuIFpfT0s7CisjZW5kaWYgLyogTUFYU0VHXzY0SyAqLworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFJlYWQgYSBuZXcgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgaW5wdXQgc3RyZWFtLCB1cGRhdGUgdGhlIGFkbGVyMzIKKyAqIGFuZCB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIEFsbCBkZWZsYXRlKCkgaW5wdXQgZ29lcyB0aHJvdWdoCisgKiB0aGlzIGZ1bmN0aW9uIHNvIHNvbWUgYXBwbGljYXRpb25zIG1heSB3aXNoIHRvIG1vZGlmeSBpdCB0byBhdm9pZAorICogYWxsb2NhdGluZyBhIGxhcmdlIHN0cm0tPm5leHRfaW4gYnVmZmVyIGFuZCBjb3B5aW5nIGZyb20gaXQuCisgKiAoU2VlIGFsc28gZmx1c2hfcGVuZGluZygpKS4KKyAqLworbG9jYWwgaW50IHJlYWRfYnVmKAorICAgIHpfc3RyZWFtcCBzdHJtLAorICAgIEJ5dGVmICpidWYsCisgICAgdW5zaWduZWQgc2l6ZSkKK3sKKyAgICB1bnNpZ25lZCBsZW4gPSBzdHJtLT5hdmFpbF9pbjsKKworICAgIGlmIChsZW4gPiBzaXplKSBsZW4gPSBzaXplOworICAgIGlmIChsZW4gPT0gMCkgcmV0dXJuIDA7CisKKyAgICBzdHJtLT5hdmFpbF9pbiAgLT0gbGVuOworCisgICAgem1lbWNweShidWYsIHN0cm0tPm5leHRfaW4sIGxlbik7CisgICAgaWYgKHN0cm0tPnN0YXRlLT53cmFwID09IDEpIHsKKyAgICAgICAgc3RybS0+YWRsZXIgPSBhZGxlcjMyKHN0cm0tPmFkbGVyLCBidWYsIGxlbik7CisgICAgfQorI2lmZGVmIEdaSVAKKyAgICBlbHNlIGlmIChzdHJtLT5zdGF0ZS0+d3JhcCA9PSAyKSB7CisgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+YWRsZXIsIGJ1ZiwgbGVuKTsKKyAgICB9CisjZW5kaWYKKyAgICBzdHJtLT5uZXh0X2luICArPSBsZW47CisgICAgc3RybS0+dG90YWxfaW4gKz0gbGVuOworCisgICAgcmV0dXJuIChpbnQpbGVuOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIEluaXRpYWxpemUgdGhlICJsb25nZXN0IG1hdGNoIiByb3V0aW5lcyBmb3IgYSBuZXcgemxpYiBzdHJlYW0KKyAqLworbG9jYWwgdm9pZCBsbV9pbml0ICgKKyAgICBkZWZsYXRlX3N0YXRlICpzKQoreworICAgIHMtPndpbmRvd19zaXplID0gKHVsZykyTCpzLT53X3NpemU7CisKKyAgICBDTEVBUl9IQVNIKHMpOworCisgICAgLyogU2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyczoKKyAgICAgKi8KKyAgICBzLT5tYXhfbGF6eV9tYXRjaCAgID0gY29uZmlndXJhdGlvbl90YWJsZVtzLT5sZXZlbF0ubWF4X2xhenk7CisgICAgcy0+Z29vZF9tYXRjaCAgICAgICA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy0+bGV2ZWxdLmdvb2RfbGVuZ3RoOworICAgIHMtPm5pY2VfbWF0Y2ggICAgICAgPSBjb25maWd1cmF0aW9uX3RhYmxlW3MtPmxldmVsXS5uaWNlX2xlbmd0aDsKKyAgICBzLT5tYXhfY2hhaW5fbGVuZ3RoID0gY29uZmlndXJhdGlvbl90YWJsZVtzLT5sZXZlbF0ubWF4X2NoYWluOworCisgICAgcy0+c3Ryc3RhcnQgPSAwOworICAgIHMtPmJsb2NrX3N0YXJ0ID0gMEw7CisgICAgcy0+bG9va2FoZWFkID0gMDsKKyAgICBzLT5pbnNlcnQgPSAwOworICAgIHMtPm1hdGNoX2xlbmd0aCA9IHMtPnByZXZfbGVuZ3RoID0gTUlOX01BVENILTE7CisgICAgcy0+bWF0Y2hfYXZhaWxhYmxlID0gMDsKKyAgICBzLT5pbnNfaCA9IDA7CisjaWZuZGVmIEZBU1RFU1QKKyNpZmRlZiBBU01WCisgICAgbWF0Y2hfaW5pdCgpOyAvKiBpbml0aWFsaXplIHRoZSBhc20gY29kZSAqLworI2VuZGlmCisjZW5kaWYKK30KKworI2lmbmRlZiBGQVNURVNUCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFNldCBtYXRjaF9zdGFydCB0byB0aGUgbG9uZ2VzdCBtYXRjaCBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gc3RyaW5nIGFuZAorICogcmV0dXJuIGl0cyBsZW5ndGguIE1hdGNoZXMgc2hvcnRlciBvciBlcXVhbCB0byBwcmV2X2xlbmd0aCBhcmUgZGlzY2FyZGVkLAorICogaW4gd2hpY2ggY2FzZSB0aGUgcmVzdWx0IGlzIGVxdWFsIHRvIHByZXZfbGVuZ3RoIGFuZCBtYXRjaF9zdGFydCBpcworICogZ2FyYmFnZS4KKyAqIElOIGFzc2VydGlvbnM6IGN1cl9tYXRjaCBpcyB0aGUgaGVhZCBvZiB0aGUgaGFzaCBjaGFpbiBmb3IgdGhlIGN1cnJlbnQKKyAqICAgc3RyaW5nIChzdHJzdGFydCkgYW5kIGl0cyBkaXN0YW5jZSBpcyA8PSBNQVhfRElTVCwgYW5kIHByZXZfbGVuZ3RoID49IDEKKyAqIE9VVCBhc3NlcnRpb246IHRoZSBtYXRjaCBsZW5ndGggaXMgbm90IGdyZWF0ZXIgdGhhbiBzLT5sb29rYWhlYWQuCisgKi8KKyNpZm5kZWYgQVNNVgorLyogRm9yIDgweDg2IGFuZCA2ODB4MCwgYW4gb3B0aW1pemVkIHZlcnNpb24gd2lsbCBiZSBwcm92aWRlZCBpbiBtYXRjaC5hc20gb3IKKyAqIG1hdGNoLlMuIFRoZSBjb2RlIHdpbGwgYmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQuCisgKi8KK2xvY2FsIHVJbnQgbG9uZ2VzdF9tYXRjaCgKKyAgICBkZWZsYXRlX3N0YXRlICpzLAorICAgIElQb3MgY3VyX21hdGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBtYXRjaCAqLworeworICAgIHVuc2lnbmVkIGNoYWluX2xlbmd0aCA9IHMtPm1heF9jaGFpbl9sZW5ndGg7LyogbWF4IGhhc2ggY2hhaW4gbGVuZ3RoICovCisgICAgcmVnaXN0ZXIgQnl0ZWYgKnNjYW4gPSBzLT53aW5kb3cgKyBzLT5zdHJzdGFydDsgLyogY3VycmVudCBzdHJpbmcgKi8KKyAgICByZWdpc3RlciBCeXRlZiAqbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaGVkIHN0cmluZyAqLworICAgIHJlZ2lzdGVyIGludCBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgbWF0Y2ggKi8KKyAgICBpbnQgYmVzdF9sZW4gPSBzLT5wcmV2X2xlbmd0aDsgICAgICAgICAgICAgIC8qIGJlc3QgbWF0Y2ggbGVuZ3RoIHNvIGZhciAqLworICAgIGludCBuaWNlX21hdGNoID0gcy0+bmljZV9tYXRjaDsgICAgICAgICAgICAgLyogc3RvcCBpZiBtYXRjaCBsb25nIGVub3VnaCAqLworICAgIElQb3MgbGltaXQgPSBzLT5zdHJzdGFydCA+IChJUG9zKU1BWF9ESVNUKHMpID8KKyAgICAgICAgcy0+c3Ryc3RhcnQgLSAoSVBvcylNQVhfRElTVChzKSA6IE5JTDsKKyAgICAvKiBTdG9wIHdoZW4gY3VyX21hdGNoIGJlY29tZXMgPD0gbGltaXQuIFRvIHNpbXBsaWZ5IHRoZSBjb2RlLAorICAgICAqIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmcgb2Ygd2luZG93IGluZGV4IDAuCisgICAgICovCisgICAgUG9zZiAqcHJldiA9IHMtPnByZXY7CisgICAgdUludCB3bWFzayA9IHMtPndfbWFzazsKKworI2lmZGVmIFVOQUxJR05FRF9PSworICAgIC8qIENvbXBhcmUgdHdvIGJ5dGVzIGF0IGEgdGltZS4gTm90ZTogdGhpcyBpcyBub3QgYWx3YXlzIGJlbmVmaWNpYWwuCisgICAgICogVHJ5IHdpdGggYW5kIHdpdGhvdXQgLURVTkFMSUdORURfT0sgdG8gY2hlY2suCisgICAgICovCisgICAgcmVnaXN0ZXIgQnl0ZWYgKnN0cmVuZCA9IHMtPndpbmRvdyArIHMtPnN0cnN0YXJ0ICsgTUFYX01BVENIIC0gMTsKKyAgICByZWdpc3RlciB1c2ggc2Nhbl9zdGFydCA9ICoodXNoZiopc2NhbjsKKyAgICByZWdpc3RlciB1c2ggc2Nhbl9lbmQgICA9ICoodXNoZiopKHNjYW4rYmVzdF9sZW4tMSk7CisjZWxzZQorICAgIHJlZ2lzdGVyIEJ5dGVmICpzdHJlbmQgPSBzLT53aW5kb3cgKyBzLT5zdHJzdGFydCArIE1BWF9NQVRDSDsKKyAgICByZWdpc3RlciBCeXRlIHNjYW5fZW5kMSAgPSBzY2FuW2Jlc3RfbGVuLTFdOworICAgIHJlZ2lzdGVyIEJ5dGUgc2Nhbl9lbmQgICA9IHNjYW5bYmVzdF9sZW5dOworI2VuZGlmCisKKyAgICAvKiBUaGUgY29kZSBpcyBvcHRpbWl6ZWQgZm9yIEhBU0hfQklUUyA+PSA4IGFuZCBNQVhfTUFUQ0gtMiBtdWx0aXBsZSBvZiAxNi4KKyAgICAgKiBJdCBpcyBlYXN5IHRvIGdldCByaWQgb2YgdGhpcyBvcHRpbWl6YXRpb24gaWYgbmVjZXNzYXJ5LgorICAgICAqLworICAgIEFzc2VydChzLT5oYXNoX2JpdHMgPj0gOCAmJiBNQVhfTUFUQ0ggPT0gMjU4LCAiQ29kZSB0b28gY2xldmVyIik7CisKKyAgICAvKiBEbyBub3Qgd2FzdGUgdG9vIG11Y2ggdGltZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBnb29kIG1hdGNoOiAqLworICAgIGlmIChzLT5wcmV2X2xlbmd0aCA+PSBzLT5nb29kX21hdGNoKSB7CisgICAgICAgIGNoYWluX2xlbmd0aCA+Pj0gMjsKKyAgICB9CisgICAgLyogRG8gbm90IGxvb2sgZm9yIG1hdGNoZXMgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGlucHV0LiBUaGlzIGlzIG5lY2Vzc2FyeQorICAgICAqIHRvIG1ha2UgZGVmbGF0ZSBkZXRlcm1pbmlzdGljLgorICAgICAqLworICAgIGlmICgodUludCluaWNlX21hdGNoID4gcy0+bG9va2FoZWFkKSBuaWNlX21hdGNoID0gcy0+bG9va2FoZWFkOworCisgICAgQXNzZXJ0KCh1bGcpcy0+c3Ryc3RhcnQgPD0gcy0+d2luZG93X3NpemUtTUlOX0xPT0tBSEVBRCwgIm5lZWQgbG9va2FoZWFkIik7CisKKyAgICBkbyB7CisgICAgICAgIEFzc2VydChjdXJfbWF0Y2ggPCBzLT5zdHJzdGFydCwgIm5vIGZ1dHVyZSIpOworICAgICAgICBtYXRjaCA9IHMtPndpbmRvdyArIGN1cl9tYXRjaDsKKworICAgICAgICAvKiBTa2lwIHRvIG5leHQgbWF0Y2ggaWYgdGhlIG1hdGNoIGxlbmd0aCBjYW5ub3QgaW5jcmVhc2UKKyAgICAgICAgICogb3IgaWYgdGhlIG1hdGNoIGxlbmd0aCBpcyBsZXNzIHRoYW4gMi4gIE5vdGUgdGhhdCB0aGUgY2hlY2tzIGJlbG93CisgICAgICAgICAqIGZvciBpbnN1ZmZpY2llbnQgbG9va2FoZWFkIG9ubHkgb2NjdXIgb2NjYXNpb25hbGx5IGZvciBwZXJmb3JtYW5jZQorICAgICAgICAgKiByZWFzb25zLiAgVGhlcmVmb3JlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHdpbGwgYmUgYWNjZXNzZWQsIGFuZAorICAgICAgICAgKiBjb25kaXRpb25hbCBqdW1wcyB3aWxsIGJlIG1hZGUgdGhhdCBkZXBlbmQgb24gdGhvc2UgdmFsdWVzLgorICAgICAgICAgKiBIb3dldmVyIHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoIGlzIGxpbWl0ZWQgdG8gdGhlIGxvb2thaGVhZCwgc28KKyAgICAgICAgICogdGhlIG91dHB1dCBvZiBkZWZsYXRlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgdW5pbml0aWFsaXplZCB2YWx1ZXMuCisgICAgICAgICAqLworI2lmIChkZWZpbmVkKFVOQUxJR05FRF9PSykgJiYgTUFYX01BVENIID09IDI1OCkKKyAgICAgICAgLyogVGhpcyBjb2RlIGFzc3VtZXMgc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSA9PSAyLiBEbyBub3QgdXNlCisgICAgICAgICAqIFVOQUxJR05FRF9PSyBpZiB5b3VyIGNvbXBpbGVyIHVzZXMgYSBkaWZmZXJlbnQgc2l6ZS4KKyAgICAgICAgICovCisgICAgICAgIGlmICgqKHVzaGYqKShtYXRjaCtiZXN0X2xlbi0xKSAhPSBzY2FuX2VuZCB8fAorICAgICAgICAgICAgKih1c2hmKiltYXRjaCAhPSBzY2FuX3N0YXJ0KSBjb250aW51ZTsKKworICAgICAgICAvKiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNvbXBhcmUgc2NhblsyXSBhbmQgbWF0Y2hbMl0gc2luY2UgdGhleSBhcmUKKyAgICAgICAgICogYWx3YXlzIGVxdWFsIHdoZW4gdGhlIG90aGVyIGJ5dGVzIG1hdGNoLCBnaXZlbiB0aGF0IHRoZSBoYXNoIGtleXMKKyAgICAgICAgICogYXJlIGVxdWFsIGFuZCB0aGF0IEhBU0hfQklUUyA+PSA4LiBDb21wYXJlIDIgYnl0ZXMgYXQgYSB0aW1lIGF0CisgICAgICAgICAqIHN0cnN0YXJ0KzMsICs1LCAuLi4gdXAgdG8gc3Ryc3RhcnQrMjU3LiBXZSBjaGVjayBmb3IgaW5zdWZmaWNpZW50CisgICAgICAgICAqIGxvb2thaGVhZCBvbmx5IGV2ZXJ5IDR0aCBjb21wYXJpc29uOyB0aGUgMTI4dGggY2hlY2sgd2lsbCBiZSBtYWRlCisgICAgICAgICAqIGF0IHN0cnN0YXJ0KzI1Ny4gSWYgTUFYX01BVENILTIgaXMgbm90IGEgbXVsdGlwbGUgb2YgOCwgaXQgaXMKKyAgICAgICAgICogbmVjZXNzYXJ5IHRvIHB1dCBtb3JlIGd1YXJkIGJ5dGVzIGF0IHRoZSBlbmQgb2YgdGhlIHdpbmRvdywgb3IKKyAgICAgICAgICogdG8gY2hlY2sgbW9yZSBvZnRlbiBmb3IgaW5zdWZmaWNpZW50IGxvb2thaGVhZC4KKyAgICAgICAgICovCisgICAgICAgIEFzc2VydChzY2FuWzJdID09IG1hdGNoWzJdLCAic2NhblsyXT8iKTsKKyAgICAgICAgc2NhbisrLCBtYXRjaCsrOworICAgICAgICBkbyB7CisgICAgICAgIH0gd2hpbGUgKCoodXNoZiopKHNjYW4rPTIpID09ICoodXNoZiopKG1hdGNoKz0yKSAmJgorICAgICAgICAgICAgICAgICAqKHVzaGYqKShzY2FuKz0yKSA9PSAqKHVzaGYqKShtYXRjaCs9MikgJiYKKyAgICAgICAgICAgICAgICAgKih1c2hmKikoc2Nhbis9MikgPT0gKih1c2hmKikobWF0Y2grPTIpICYmCisgICAgICAgICAgICAgICAgICoodXNoZiopKHNjYW4rPTIpID09ICoodXNoZiopKG1hdGNoKz0yKSAmJgorICAgICAgICAgICAgICAgICBzY2FuIDwgc3RyZW5kKTsKKyAgICAgICAgLyogVGhlIGZ1bm55ICJkbyB7fSIgZ2VuZXJhdGVzIGJldHRlciBjb2RlIG9uIG1vc3QgY29tcGlsZXJzICovCisKKyAgICAgICAgLyogSGVyZSwgc2NhbiA8PSB3aW5kb3crc3Ryc3RhcnQrMjU3ICovCisgICAgICAgIEFzc2VydChzY2FuIDw9IHMtPndpbmRvdysodW5zaWduZWQpKHMtPndpbmRvd19zaXplLTEpLCAid2lsZCBzY2FuIik7CisgICAgICAgIGlmICgqc2NhbiA9PSAqbWF0Y2gpIHNjYW4rKzsKKworICAgICAgICBsZW4gPSAoTUFYX01BVENIIC0gMSkgLSAoaW50KShzdHJlbmQtc2Nhbik7CisgICAgICAgIHNjYW4gPSBzdHJlbmQgLSAoTUFYX01BVENILTEpOworCisjZWxzZSAvKiBVTkFMSUdORURfT0sgKi8KKworICAgICAgICBpZiAobWF0Y2hbYmVzdF9sZW5dICAgIT0gc2Nhbl9lbmQgIHx8CisgICAgICAgICAgICBtYXRjaFtiZXN0X2xlbi0xXSAhPSBzY2FuX2VuZDEgfHwKKyAgICAgICAgICAgICptYXRjaCAgICAgICAgICAgICE9ICpzY2FuICAgICB8fAorICAgICAgICAgICAgKisrbWF0Y2ggICAgICAgICAgIT0gc2NhblsxXSkgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiBUaGUgY2hlY2sgYXQgYmVzdF9sZW4tMSBjYW4gYmUgcmVtb3ZlZCBiZWNhdXNlIGl0IHdpbGwgYmUgbWFkZQorICAgICAgICAgKiBhZ2FpbiBsYXRlci4gKFRoaXMgaGV1cmlzdGljIGlzIG5vdCBhbHdheXMgYSB3aW4uKQorICAgICAgICAgKiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNvbXBhcmUgc2NhblsyXSBhbmQgbWF0Y2hbMl0gc2luY2UgdGhleQorICAgICAgICAgKiBhcmUgYWx3YXlzIGVxdWFsIHdoZW4gdGhlIG90aGVyIGJ5dGVzIG1hdGNoLCBnaXZlbiB0aGF0CisgICAgICAgICAqIHRoZSBoYXNoIGtleXMgYXJlIGVxdWFsIGFuZCB0aGF0IEhBU0hfQklUUyA+PSA4LgorICAgICAgICAgKi8KKyAgICAgICAgc2NhbiArPSAyLCBtYXRjaCsrOworICAgICAgICBBc3NlcnQoKnNjYW4gPT0gKm1hdGNoLCAibWF0Y2hbMl0/Iik7CisKKyAgICAgICAgLyogV2UgY2hlY2sgZm9yIGluc3VmZmljaWVudCBsb29rYWhlYWQgb25seSBldmVyeSA4dGggY29tcGFyaXNvbjsKKyAgICAgICAgICogdGhlIDI1NnRoIGNoZWNrIHdpbGwgYmUgbWFkZSBhdCBzdHJzdGFydCsyNTguCisgICAgICAgICAqLworICAgICAgICBkbyB7CisgICAgICAgIH0gd2hpbGUgKCorK3NjYW4gPT0gKisrbWF0Y2ggJiYgKisrc2NhbiA9PSAqKyttYXRjaCAmJgorICAgICAgICAgICAgICAgICAqKytzY2FuID09ICorK21hdGNoICYmICorK3NjYW4gPT0gKisrbWF0Y2ggJiYKKyAgICAgICAgICAgICAgICAgKisrc2NhbiA9PSAqKyttYXRjaCAmJiAqKytzY2FuID09ICorK21hdGNoICYmCisgICAgICAgICAgICAgICAgICorK3NjYW4gPT0gKisrbWF0Y2ggJiYgKisrc2NhbiA9PSAqKyttYXRjaCAmJgorICAgICAgICAgICAgICAgICBzY2FuIDwgc3RyZW5kKTsKKworICAgICAgICBBc3NlcnQoc2NhbiA8PSBzLT53aW5kb3crKHVuc2lnbmVkKShzLT53aW5kb3dfc2l6ZS0xKSwgIndpbGQgc2NhbiIpOworCisgICAgICAgIGxlbiA9IE1BWF9NQVRDSCAtIChpbnQpKHN0cmVuZCAtIHNjYW4pOworICAgICAgICBzY2FuID0gc3RyZW5kIC0gTUFYX01BVENIOworCisjZW5kaWYgLyogVU5BTElHTkVEX09LICovCisKKyAgICAgICAgaWYgKGxlbiA+IGJlc3RfbGVuKSB7CisgICAgICAgICAgICBzLT5tYXRjaF9zdGFydCA9IGN1cl9tYXRjaDsKKyAgICAgICAgICAgIGJlc3RfbGVuID0gbGVuOworICAgICAgICAgICAgaWYgKGxlbiA+PSBuaWNlX21hdGNoKSBicmVhazsKKyNpZmRlZiBVTkFMSUdORURfT0sKKyAgICAgICAgICAgIHNjYW5fZW5kID0gKih1c2hmKikoc2NhbitiZXN0X2xlbi0xKTsKKyNlbHNlCisgICAgICAgICAgICBzY2FuX2VuZDEgID0gc2NhbltiZXN0X2xlbi0xXTsKKyAgICAgICAgICAgIHNjYW5fZW5kICAgPSBzY2FuW2Jlc3RfbGVuXTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfSB3aGlsZSAoKGN1cl9tYXRjaCA9IHByZXZbY3VyX21hdGNoICYgd21hc2tdKSA+IGxpbWl0CisgICAgICAgICAgICAgJiYgLS1jaGFpbl9sZW5ndGggIT0gMCk7CisKKyAgICBpZiAoKHVJbnQpYmVzdF9sZW4gPD0gcy0+bG9va2FoZWFkKSByZXR1cm4gKHVJbnQpYmVzdF9sZW47CisgICAgcmV0dXJuIHMtPmxvb2thaGVhZDsKK30KKyNlbmRpZiAvKiBBU01WICovCisKKyNlbHNlIC8qIEZBU1RFU1QgKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBPcHRpbWl6ZWQgdmVyc2lvbiBmb3IgRkFTVEVTVCBvbmx5CisgKi8KK2xvY2FsIHVJbnQgbG9uZ2VzdF9tYXRjaCgKKyAgICBkZWZsYXRlX3N0YXRlICpzLAorICAgIElQb3MgY3VyX21hdGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBtYXRjaCAqLworeworICAgIHJlZ2lzdGVyIEJ5dGVmICpzY2FuID0gcy0+d2luZG93ICsgcy0+c3Ryc3RhcnQ7IC8qIGN1cnJlbnQgc3RyaW5nICovCisgICAgcmVnaXN0ZXIgQnl0ZWYgKm1hdGNoOyAgICAgICAgICAgICAgICAgICAgICAgLyogbWF0Y2hlZCBzdHJpbmcgKi8KKyAgICByZWdpc3RlciBpbnQgbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IG1hdGNoICovCisgICAgcmVnaXN0ZXIgQnl0ZWYgKnN0cmVuZCA9IHMtPndpbmRvdyArIHMtPnN0cnN0YXJ0ICsgTUFYX01BVENIOworCisgICAgLyogVGhlIGNvZGUgaXMgb3B0aW1pemVkIGZvciBIQVNIX0JJVFMgPj0gOCBhbmQgTUFYX01BVENILTIgbXVsdGlwbGUgb2YgMTYuCisgICAgICogSXQgaXMgZWFzeSB0byBnZXQgcmlkIG9mIHRoaXMgb3B0aW1pemF0aW9uIGlmIG5lY2Vzc2FyeS4KKyAgICAgKi8KKyAgICBBc3NlcnQocy0+aGFzaF9iaXRzID49IDggJiYgTUFYX01BVENIID09IDI1OCwgIkNvZGUgdG9vIGNsZXZlciIpOworCisgICAgQXNzZXJ0KCh1bGcpcy0+c3Ryc3RhcnQgPD0gcy0+d2luZG93X3NpemUtTUlOX0xPT0tBSEVBRCwgIm5lZWQgbG9va2FoZWFkIik7CisKKyAgICBBc3NlcnQoY3VyX21hdGNoIDwgcy0+c3Ryc3RhcnQsICJubyBmdXR1cmUiKTsKKworICAgIG1hdGNoID0gcy0+d2luZG93ICsgY3VyX21hdGNoOworCisgICAgLyogUmV0dXJuIGZhaWx1cmUgaWYgdGhlIG1hdGNoIGxlbmd0aCBpcyBsZXNzIHRoYW4gMjoKKyAgICAgKi8KKyAgICBpZiAobWF0Y2hbMF0gIT0gc2NhblswXSB8fCBtYXRjaFsxXSAhPSBzY2FuWzFdKSByZXR1cm4gTUlOX01BVENILTE7CisKKyAgICAvKiBUaGUgY2hlY2sgYXQgYmVzdF9sZW4tMSBjYW4gYmUgcmVtb3ZlZCBiZWNhdXNlIGl0IHdpbGwgYmUgbWFkZQorICAgICAqIGFnYWluIGxhdGVyLiAoVGhpcyBoZXVyaXN0aWMgaXMgbm90IGFsd2F5cyBhIHdpbi4pCisgICAgICogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjb21wYXJlIHNjYW5bMl0gYW5kIG1hdGNoWzJdIHNpbmNlIHRoZXkKKyAgICAgKiBhcmUgYWx3YXlzIGVxdWFsIHdoZW4gdGhlIG90aGVyIGJ5dGVzIG1hdGNoLCBnaXZlbiB0aGF0CisgICAgICogdGhlIGhhc2gga2V5cyBhcmUgZXF1YWwgYW5kIHRoYXQgSEFTSF9CSVRTID49IDguCisgICAgICovCisgICAgc2NhbiArPSAyLCBtYXRjaCArPSAyOworICAgIEFzc2VydCgqc2NhbiA9PSAqbWF0Y2gsICJtYXRjaFsyXT8iKTsKKworICAgIC8qIFdlIGNoZWNrIGZvciBpbnN1ZmZpY2llbnQgbG9va2FoZWFkIG9ubHkgZXZlcnkgOHRoIGNvbXBhcmlzb247CisgICAgICogdGhlIDI1NnRoIGNoZWNrIHdpbGwgYmUgbWFkZSBhdCBzdHJzdGFydCsyNTguCisgICAgICovCisgICAgZG8geworICAgIH0gd2hpbGUgKCorK3NjYW4gPT0gKisrbWF0Y2ggJiYgKisrc2NhbiA9PSAqKyttYXRjaCAmJgorICAgICAgICAgICAgICorK3NjYW4gPT0gKisrbWF0Y2ggJiYgKisrc2NhbiA9PSAqKyttYXRjaCAmJgorICAgICAgICAgICAgICorK3NjYW4gPT0gKisrbWF0Y2ggJiYgKisrc2NhbiA9PSAqKyttYXRjaCAmJgorICAgICAgICAgICAgICorK3NjYW4gPT0gKisrbWF0Y2ggJiYgKisrc2NhbiA9PSAqKyttYXRjaCAmJgorICAgICAgICAgICAgIHNjYW4gPCBzdHJlbmQpOworCisgICAgQXNzZXJ0KHNjYW4gPD0gcy0+d2luZG93Kyh1bnNpZ25lZCkocy0+d2luZG93X3NpemUtMSksICJ3aWxkIHNjYW4iKTsKKworICAgIGxlbiA9IE1BWF9NQVRDSCAtIChpbnQpKHN0cmVuZCAtIHNjYW4pOworCisgICAgaWYgKGxlbiA8IE1JTl9NQVRDSCkgcmV0dXJuIE1JTl9NQVRDSCAtIDE7CisKKyAgICBzLT5tYXRjaF9zdGFydCA9IGN1cl9tYXRjaDsKKyAgICByZXR1cm4gKHVJbnQpbGVuIDw9IHMtPmxvb2thaGVhZCA/ICh1SW50KWxlbiA6IHMtPmxvb2thaGVhZDsKK30KKworI2VuZGlmIC8qIEZBU1RFU1QgKi8KKworI2lmZGVmIERFQlVHCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIENoZWNrIHRoYXQgdGhlIG1hdGNoIGF0IG1hdGNoX3N0YXJ0IGlzIGluZGVlZCBhIG1hdGNoLgorICovCitsb2NhbCB2b2lkIGNoZWNrX21hdGNoKAorICAgIGRlZmxhdGVfc3RhdGUgKnMsCisgICAgSVBvcyBzdGFydCwgSVBvcyBtYXRjaCwKKyAgICBpbnQgbGVuZ3RoKQoreworICAgIC8qIGNoZWNrIHRoYXQgdGhlIG1hdGNoIGlzIGluZGVlZCBhIG1hdGNoICovCisgICAgaWYgKHptZW1jbXAocy0+d2luZG93ICsgbWF0Y2gsCisgICAgICAgICAgICAgICAgcy0+d2luZG93ICsgc3RhcnQsIGxlbmd0aCkgIT0gRVFVQUwpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIgc3RhcnQgJXUsIG1hdGNoICV1LCBsZW5ndGggJWRcbiIsCisgICAgICAgICAgICAgICAgc3RhcnQsIG1hdGNoLCBsZW5ndGgpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVjJWMiLCBzLT53aW5kb3dbbWF0Y2grK10sIHMtPndpbmRvd1tzdGFydCsrXSk7CisgICAgICAgIH0gd2hpbGUgKC0tbGVuZ3RoICE9IDApOworICAgICAgICB6X2Vycm9yKCJpbnZhbGlkIG1hdGNoIik7CisgICAgfQorICAgIGlmICh6X3ZlcmJvc2UgPiAxKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCJcXFslZCwlZF0iLCBzdGFydC1tYXRjaCwgbGVuZ3RoKTsKKyAgICAgICAgZG8geyBwdXRjKHMtPndpbmRvd1tzdGFydCsrXSwgc3RkZXJyKTsgfSB3aGlsZSAoLS1sZW5ndGggIT0gMCk7CisgICAgfQorfQorI2Vsc2UKKyMgIGRlZmluZSBjaGVja19tYXRjaChzLCBzdGFydCwgbWF0Y2gsIGxlbmd0aCkKKyNlbmRpZiAvKiBERUJVRyAqLworCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIEZpbGwgdGhlIHdpbmRvdyB3aGVuIHRoZSBsb29rYWhlYWQgYmVjb21lcyBpbnN1ZmZpY2llbnQuCisgKiBVcGRhdGVzIHN0cnN0YXJ0IGFuZCBsb29rYWhlYWQuCisgKgorICogSU4gYXNzZXJ0aW9uOiBsb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFECisgKiBPVVQgYXNzZXJ0aW9uczogc3Ryc3RhcnQgPD0gd2luZG93X3NpemUtTUlOX0xPT0tBSEVBRAorICogICAgQXQgbGVhc3Qgb25lIGJ5dGUgaGFzIGJlZW4gcmVhZCwgb3IgYXZhaWxfaW4gPT0gMDsgcmVhZHMgYXJlCisgKiAgICBwZXJmb3JtZWQgZm9yIGF0IGxlYXN0IHR3byBieXRlcyAocmVxdWlyZWQgZm9yIHRoZSB6aXAgdHJhbnNsYXRlX2VvbAorICogICAgb3B0aW9uIC0tIG5vdCBzdXBwb3J0ZWQgaGVyZSkuCisgKi8KK2xvY2FsIHZvaWQgZmlsbF93aW5kb3coCisgICAgZGVmbGF0ZV9zdGF0ZSAqcykKK3sKKyAgICByZWdpc3RlciB1bnNpZ25lZCBuLCBtOworICAgIHJlZ2lzdGVyIFBvc2YgKnA7CisgICAgdW5zaWduZWQgbW9yZTsgICAgLyogQW1vdW50IG9mIGZyZWUgc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgd2luZG93LiAqLworICAgIHVJbnQgd3NpemUgPSBzLT53X3NpemU7CisKKyAgICBBc3NlcnQocy0+bG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCwgImFscmVhZHkgZW5vdWdoIGxvb2thaGVhZCIpOworCisgICAgZG8geworICAgICAgICBtb3JlID0gKHVuc2lnbmVkKShzLT53aW5kb3dfc2l6ZSAtKHVsZylzLT5sb29rYWhlYWQgLSh1bGcpcy0+c3Ryc3RhcnQpOworCisgICAgICAgIC8qIERlYWwgd2l0aCAhQCMkJSA2NEsgbGltaXQ6ICovCisgICAgICAgIGlmIChzaXplb2YoaW50KSA8PSAyKSB7CisgICAgICAgICAgICBpZiAobW9yZSA9PSAwICYmIHMtPnN0cnN0YXJ0ID09IDAgJiYgcy0+bG9va2FoZWFkID09IDApIHsKKyAgICAgICAgICAgICAgICBtb3JlID0gd3NpemU7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobW9yZSA9PSAodW5zaWduZWQpKC0xKSkgeworICAgICAgICAgICAgICAgIC8qIFZlcnkgdW5saWtlbHksIGJ1dCBwb3NzaWJsZSBvbiAxNiBiaXQgbWFjaGluZSBpZgorICAgICAgICAgICAgICAgICAqIHN0cnN0YXJ0ID09IDAgJiYgbG9va2FoZWFkID09IDEgKGlucHV0IGRvbmUgYSBieXRlIGF0IHRpbWUpCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgbW9yZS0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogSWYgdGhlIHdpbmRvdyBpcyBhbG1vc3QgZnVsbCBhbmQgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGxvb2thaGVhZCwKKyAgICAgICAgICogbW92ZSB0aGUgdXBwZXIgaGFsZiB0byB0aGUgbG93ZXIgb25lIHRvIG1ha2Ugcm9vbSBpbiB0aGUgdXBwZXIgaGFsZi4KKyAgICAgICAgICovCisgICAgICAgIGlmIChzLT5zdHJzdGFydCA+PSB3c2l6ZStNQVhfRElTVChzKSkgeworCisgICAgICAgICAgICB6bWVtY3B5KHMtPndpbmRvdywgcy0+d2luZG93K3dzaXplLCAodW5zaWduZWQpd3NpemUpOworICAgICAgICAgICAgcy0+bWF0Y2hfc3RhcnQgLT0gd3NpemU7CisgICAgICAgICAgICBzLT5zdHJzdGFydCAgICAtPSB3c2l6ZTsgLyogd2Ugbm93IGhhdmUgc3Ryc3RhcnQgPj0gTUFYX0RJU1QgKi8KKyAgICAgICAgICAgIHMtPmJsb2NrX3N0YXJ0IC09IChsb25nKSB3c2l6ZTsKKworICAgICAgICAgICAgLyogU2xpZGUgdGhlIGhhc2ggdGFibGUgKGNvdWxkIGJlIGF2b2lkZWQgd2l0aCAzMiBiaXQgdmFsdWVzCisgICAgICAgICAgICAgICBhdCB0aGUgZXhwZW5zZSBvZiBtZW1vcnkgdXNhZ2UpLiBXZSBzbGlkZSBldmVuIHdoZW4gbGV2ZWwgPT0gMAorICAgICAgICAgICAgICAgdG8ga2VlcCB0aGUgaGFzaCB0YWJsZSBjb25zaXN0ZW50IGlmIHdlIHN3aXRjaCBiYWNrIHRvIGxldmVsID4gMAorICAgICAgICAgICAgICAgbGF0ZXIuIChVc2luZyBsZXZlbCAwIHBlcm1hbmVudGx5IGlzIG5vdCBhbiBvcHRpbWFsIHVzYWdlIG9mCisgICAgICAgICAgICAgICB6bGliLCBzbyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgcGF0aG9sb2dpY2FsIGNhc2UuKQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBuID0gcy0+aGFzaF9zaXplOworICAgICAgICAgICAgcCA9ICZzLT5oZWFkW25dOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIG0gPSAqLS1wOworICAgICAgICAgICAgICAgICpwID0gKFBvcykobSA+PSB3c2l6ZSA/IG0td3NpemUgOiBOSUwpOworICAgICAgICAgICAgfSB3aGlsZSAoLS1uKTsKKworICAgICAgICAgICAgbiA9IHdzaXplOworI2lmbmRlZiBGQVNURVNUCisgICAgICAgICAgICBwID0gJnMtPnByZXZbbl07CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgbSA9ICotLXA7CisgICAgICAgICAgICAgICAgKnAgPSAoUG9zKShtID49IHdzaXplID8gbS13c2l6ZSA6IE5JTCk7CisgICAgICAgICAgICAgICAgLyogSWYgbiBpcyBub3Qgb24gYW55IGhhc2ggY2hhaW4sIHByZXZbbl0gaXMgZ2FyYmFnZSBidXQKKyAgICAgICAgICAgICAgICAgKiBpdHMgdmFsdWUgd2lsbCBuZXZlciBiZSB1c2VkLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgfSB3aGlsZSAoLS1uKTsKKyNlbmRpZgorICAgICAgICAgICAgbW9yZSArPSB3c2l6ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocy0+c3RybS0+YXZhaWxfaW4gPT0gMCkgYnJlYWs7CisKKyAgICAgICAgLyogSWYgdGhlcmUgd2FzIG5vIHNsaWRpbmc6CisgICAgICAgICAqICAgIHN0cnN0YXJ0IDw9IFdTSVpFK01BWF9ESVNULTEgJiYgbG9va2FoZWFkIDw9IE1JTl9MT09LQUhFQUQgLSAxICYmCisgICAgICAgICAqICAgIG1vcmUgPT0gd2luZG93X3NpemUgLSBsb29rYWhlYWQgLSBzdHJzdGFydAorICAgICAgICAgKiA9PiBtb3JlID49IHdpbmRvd19zaXplIC0gKE1JTl9MT09LQUhFQUQtMSArIFdTSVpFICsgTUFYX0RJU1QtMSkKKyAgICAgICAgICogPT4gbW9yZSA+PSB3aW5kb3dfc2l6ZSAtIDIqV1NJWkUgKyAyCisgICAgICAgICAqIEluIHRoZSBCSUdfTUVNIG9yIE1NQVAgY2FzZSAobm90IHlldCBzdXBwb3J0ZWQpLAorICAgICAgICAgKiAgIHdpbmRvd19zaXplID09IGlucHV0X3NpemUgKyBNSU5fTE9PS0FIRUFEICAmJgorICAgICAgICAgKiAgIHN0cnN0YXJ0ICsgcy0+bG9va2FoZWFkIDw9IGlucHV0X3NpemUgPT4gbW9yZSA+PSBNSU5fTE9PS0FIRUFELgorICAgICAgICAgKiBPdGhlcndpc2UsIHdpbmRvd19zaXplID09IDIqV1NJWkUgc28gbW9yZSA+PSAyLgorICAgICAgICAgKiBJZiB0aGVyZSB3YXMgc2xpZGluZywgbW9yZSA+PSBXU0laRS4gU28gaW4gYWxsIGNhc2VzLCBtb3JlID49IDIuCisgICAgICAgICAqLworICAgICAgICBBc3NlcnQobW9yZSA+PSAyLCAibW9yZSA8IDIiKTsKKworICAgICAgICBuID0gcmVhZF9idWYocy0+c3RybSwgcy0+d2luZG93ICsgcy0+c3Ryc3RhcnQgKyBzLT5sb29rYWhlYWQsIG1vcmUpOworICAgICAgICBzLT5sb29rYWhlYWQgKz0gbjsKKworICAgICAgICAvKiBJbml0aWFsaXplIHRoZSBoYXNoIHZhbHVlIG5vdyB0aGF0IHdlIGhhdmUgc29tZSBpbnB1dDogKi8KKyAgICAgICAgaWYgKHMtPmxvb2thaGVhZCArIHMtPmluc2VydCA+PSBNSU5fTUFUQ0gpIHsKKyAgICAgICAgICAgIHVJbnQgc3RyID0gcy0+c3Ryc3RhcnQgLSBzLT5pbnNlcnQ7CisgICAgICAgICAgICBzLT5pbnNfaCA9IHMtPndpbmRvd1tzdHJdOworICAgICAgICAgICAgVVBEQVRFX0hBU0gocywgcy0+aW5zX2gsIHMtPndpbmRvd1tzdHIgKyAxXSk7CisjaWYgTUlOX01BVENIICE9IDMKKyAgICAgICAgICAgIENhbGwgVVBEQVRFX0hBU0goKSBNSU5fTUFUQ0gtMyBtb3JlIHRpbWVzCisjZW5kaWYKKyAgICAgICAgICAgIHdoaWxlIChzLT5pbnNlcnQpIHsKKyAgICAgICAgICAgICAgICBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIE1JTl9NQVRDSC0xXSk7CisjaWZuZGVmIEZBU1RFU1QKKyAgICAgICAgICAgICAgICBzLT5wcmV2W3N0ciAmIHMtPndfbWFza10gPSBzLT5oZWFkW3MtPmluc19oXTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHMtPmhlYWRbcy0+aW5zX2hdID0gKFBvcylzdHI7CisgICAgICAgICAgICAgICAgc3RyKys7CisgICAgICAgICAgICAgICAgcy0+aW5zZXJ0LS07CisgICAgICAgICAgICAgICAgaWYgKHMtPmxvb2thaGVhZCArIHMtPmluc2VydCA8IE1JTl9NQVRDSCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogSWYgdGhlIHdob2xlIGlucHV0IGhhcyBsZXNzIHRoYW4gTUlOX01BVENIIGJ5dGVzLCBpbnNfaCBpcyBnYXJiYWdlLAorICAgICAgICAgKiBidXQgdGhpcyBpcyBub3QgaW1wb3J0YW50IHNpbmNlIG9ubHkgbGl0ZXJhbCBieXRlcyB3aWxsIGJlIGVtaXR0ZWQuCisgICAgICAgICAqLworCisgICAgfSB3aGlsZSAocy0+bG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCAmJiBzLT5zdHJtLT5hdmFpbF9pbiAhPSAwKTsKKworICAgIC8qIElmIHRoZSBXSU5fSU5JVCBieXRlcyBhZnRlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGRhdGEgaGF2ZSBuZXZlciBiZWVuCisgICAgICogd3JpdHRlbiwgdGhlbiB6ZXJvIHRob3NlIGJ5dGVzIGluIG9yZGVyIHRvIGF2b2lkIG1lbW9yeSBjaGVjayByZXBvcnRzIG9mCisgICAgICogdGhlIHVzZSBvZiB1bmluaXRpYWxpemVkIChvciB1bmluaXRpYWxpc2VkIGFzIEp1bGlhbiB3cml0ZXMpIGJ5dGVzIGJ5CisgICAgICogdGhlIGxvbmdlc3QgbWF0Y2ggcm91dGluZXMuICBVcGRhdGUgdGhlIGhpZ2ggd2F0ZXIgbWFyayBmb3IgdGhlIG5leHQKKyAgICAgKiB0aW1lIHRocm91Z2ggaGVyZS4gIFdJTl9JTklUIGlzIHNldCB0byBNQVhfTUFUQ0ggc2luY2UgdGhlIGxvbmdlc3QgbWF0Y2gKKyAgICAgKiByb3V0aW5lcyBhbGxvdyBzY2FubmluZyB0byBzdHJzdGFydCArIE1BWF9NQVRDSCwgaWdub3JpbmcgbG9va2FoZWFkLgorICAgICAqLworICAgIGlmIChzLT5oaWdoX3dhdGVyIDwgcy0+d2luZG93X3NpemUpIHsKKyAgICAgICAgdWxnIGN1cnIgPSBzLT5zdHJzdGFydCArICh1bGcpKHMtPmxvb2thaGVhZCk7CisgICAgICAgIHVsZyBpbml0OworCisgICAgICAgIGlmIChzLT5oaWdoX3dhdGVyIDwgY3VycikgeworICAgICAgICAgICAgLyogUHJldmlvdXMgaGlnaCB3YXRlciBtYXJrIGJlbG93IGN1cnJlbnQgZGF0YSAtLSB6ZXJvIFdJTl9JTklUCisgICAgICAgICAgICAgKiBieXRlcyBvciB1cCB0byBlbmQgb2Ygd2luZG93LCB3aGljaGV2ZXIgaXMgbGVzcy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaW5pdCA9IHMtPndpbmRvd19zaXplIC0gY3VycjsKKyAgICAgICAgICAgIGlmIChpbml0ID4gV0lOX0lOSVQpCisgICAgICAgICAgICAgICAgaW5pdCA9IFdJTl9JTklUOworICAgICAgICAgICAgem1lbXplcm8ocy0+d2luZG93ICsgY3VyciwgKHVuc2lnbmVkKWluaXQpOworICAgICAgICAgICAgcy0+aGlnaF93YXRlciA9IGN1cnIgKyBpbml0OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHMtPmhpZ2hfd2F0ZXIgPCAodWxnKWN1cnIgKyBXSU5fSU5JVCkgeworICAgICAgICAgICAgLyogSGlnaCB3YXRlciBtYXJrIGF0IG9yIGFib3ZlIGN1cnJlbnQgZGF0YSwgYnV0IGJlbG93IGN1cnJlbnQgZGF0YQorICAgICAgICAgICAgICogcGx1cyBXSU5fSU5JVCAtLSB6ZXJvIG91dCB0byBjdXJyZW50IGRhdGEgcGx1cyBXSU5fSU5JVCwgb3IgdXAKKyAgICAgICAgICAgICAqIHRvIGVuZCBvZiB3aW5kb3csIHdoaWNoZXZlciBpcyBsZXNzLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpbml0ID0gKHVsZyljdXJyICsgV0lOX0lOSVQgLSBzLT5oaWdoX3dhdGVyOworICAgICAgICAgICAgaWYgKGluaXQgPiBzLT53aW5kb3dfc2l6ZSAtIHMtPmhpZ2hfd2F0ZXIpCisgICAgICAgICAgICAgICAgaW5pdCA9IHMtPndpbmRvd19zaXplIC0gcy0+aGlnaF93YXRlcjsKKyAgICAgICAgICAgIHptZW16ZXJvKHMtPndpbmRvdyArIHMtPmhpZ2hfd2F0ZXIsICh1bnNpZ25lZClpbml0KTsKKyAgICAgICAgICAgIHMtPmhpZ2hfd2F0ZXIgKz0gaW5pdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFzc2VydCgodWxnKXMtPnN0cnN0YXJ0IDw9IHMtPndpbmRvd19zaXplIC0gTUlOX0xPT0tBSEVBRCwKKyAgICAgICAgICAgIm5vdCBlbm91Z2ggcm9vbSBmb3Igc2VhcmNoIik7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogRmx1c2ggdGhlIGN1cnJlbnQgYmxvY2ssIHdpdGggZ2l2ZW4gZW5kLW9mLWZpbGUgZmxhZy4KKyAqIElOIGFzc2VydGlvbjogc3Ryc3RhcnQgaXMgc2V0IHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWF0Y2guCisgKi8KKyNkZWZpbmUgRkxVU0hfQkxPQ0tfT05MWShzLCBsYXN0KSB7IFwKKyAgIF90cl9mbHVzaF9ibG9jayhzLCAocy0+YmxvY2tfc3RhcnQgPj0gMEwgPyBcCisgICAgICAgICAgICAgICAgICAgKGNoYXJmICopJnMtPndpbmRvd1sodW5zaWduZWQpcy0+YmxvY2tfc3RhcnRdIDogXAorICAgICAgICAgICAgICAgICAgIChjaGFyZiAqKVpfTlVMTCksIFwKKyAgICAgICAgICAgICAgICAodWxnKSgobG9uZylzLT5zdHJzdGFydCAtIHMtPmJsb2NrX3N0YXJ0KSwgXAorICAgICAgICAgICAgICAgIChsYXN0KSk7IFwKKyAgIHMtPmJsb2NrX3N0YXJ0ID0gcy0+c3Ryc3RhcnQ7IFwKKyAgIGZsdXNoX3BlbmRpbmcocy0+c3RybSk7IFwKKyAgIFRyYWNldigoc3RkZXJyLCJbRkxVU0hdIikpOyBcCit9CisKKy8qIFNhbWUgYnV0IGZvcmNlIHByZW1hdHVyZSBleGl0IGlmIG5lY2Vzc2FyeS4gKi8KKyNkZWZpbmUgRkxVU0hfQkxPQ0socywgbGFzdCkgeyBcCisgICBGTFVTSF9CTE9DS19PTkxZKHMsIGxhc3QpOyBcCisgICBpZiAocy0+c3RybS0+YXZhaWxfb3V0ID09IDApIHJldHVybiAobGFzdCkgPyBmaW5pc2hfc3RhcnRlZCA6IG5lZWRfbW9yZTsgXAorfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIENvcHkgd2l0aG91dCBjb21wcmVzc2lvbiBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuCisgKiB0aGUgY3VycmVudCBibG9jayBzdGF0ZS4KKyAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaW5zZXJ0IG5ldyBzdHJpbmdzIGluIHRoZSBkaWN0aW9uYXJ5IHNpbmNlCisgKiB1bmNvbXByZXNzaWJsZSBkYXRhIGlzIHByb2JhYmx5IG5vdCB1c2VmdWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZAorICogb25seSBmb3IgdGhlIGxldmVsPTAgY29tcHJlc3Npb24gb3B0aW9uLgorICogTk9URTogdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgb3B0aW1pemVkIHRvIGF2b2lkIGV4dHJhIGNvcHlpbmcgZnJvbQorICogd2luZG93IHRvIHBlbmRpbmdfYnVmLgorICovCitsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRlX3N0b3JlZCgKKyAgICBkZWZsYXRlX3N0YXRlICpzLAorICAgIGludCBmbHVzaCkKK3sKKyAgICAvKiBTdG9yZWQgYmxvY2tzIGFyZSBsaW1pdGVkIHRvIDB4ZmZmZiBieXRlcywgcGVuZGluZ19idWYgaXMgbGltaXRlZAorICAgICAqIHRvIHBlbmRpbmdfYnVmX3NpemUsIGFuZCBlYWNoIHN0b3JlZCBibG9jayBoYXMgYSA1IGJ5dGUgaGVhZGVyOgorICAgICAqLworICAgIHVsZyBtYXhfYmxvY2tfc2l6ZSA9IDB4ZmZmZjsKKyAgICB1bGcgbWF4X3N0YXJ0OworCisgICAgaWYgKG1heF9ibG9ja19zaXplID4gcy0+cGVuZGluZ19idWZfc2l6ZSAtIDUpIHsKKyAgICAgICAgbWF4X2Jsb2NrX3NpemUgPSBzLT5wZW5kaW5nX2J1Zl9zaXplIC0gNTsKKyAgICB9CisKKyAgICAvKiBDb3B5IGFzIG11Y2ggYXMgcG9zc2libGUgZnJvbSBpbnB1dCB0byBvdXRwdXQ6ICovCisgICAgZm9yICg7OykgeworICAgICAgICAvKiBGaWxsIHRoZSB3aW5kb3cgYXMgbXVjaCBhcyBwb3NzaWJsZTogKi8KKyAgICAgICAgaWYgKHMtPmxvb2thaGVhZCA8PSAxKSB7CisKKyAgICAgICAgICAgIEFzc2VydChzLT5zdHJzdGFydCA8IHMtPndfc2l6ZStNQVhfRElTVChzKSB8fAorICAgICAgICAgICAgICAgICAgIHMtPmJsb2NrX3N0YXJ0ID49IChsb25nKXMtPndfc2l6ZSwgInNsaWRlIHRvbyBsYXRlIik7CisKKyAgICAgICAgICAgIGZpbGxfd2luZG93KHMpOworICAgICAgICAgICAgaWYgKHMtPmxvb2thaGVhZCA9PSAwICYmIGZsdXNoID09IFpfTk9fRkxVU0gpIHJldHVybiBuZWVkX21vcmU7CisKKyAgICAgICAgICAgIGlmIChzLT5sb29rYWhlYWQgPT0gMCkgYnJlYWs7IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovCisgICAgICAgIH0KKyAgICAgICAgQXNzZXJ0KHMtPmJsb2NrX3N0YXJ0ID49IDBMLCAiYmxvY2sgZ29uZSIpOworCisgICAgICAgIHMtPnN0cnN0YXJ0ICs9IHMtPmxvb2thaGVhZDsKKyAgICAgICAgcy0+bG9va2FoZWFkID0gMDsKKworICAgICAgICAvKiBFbWl0IGEgc3RvcmVkIGJsb2NrIGlmIHBlbmRpbmdfYnVmIHdpbGwgYmUgZnVsbDogKi8KKyAgICAgICAgbWF4X3N0YXJ0ID0gcy0+YmxvY2tfc3RhcnQgKyBtYXhfYmxvY2tfc2l6ZTsKKyAgICAgICAgaWYgKHMtPnN0cnN0YXJ0ID09IDAgfHwgKHVsZylzLT5zdHJzdGFydCA+PSBtYXhfc3RhcnQpIHsKKyAgICAgICAgICAgIC8qIHN0cnN0YXJ0ID09IDAgaXMgcG9zc2libGUgd2hlbiB3cmFwYXJvdW5kIG9uIDE2LWJpdCBtYWNoaW5lICovCisgICAgICAgICAgICBzLT5sb29rYWhlYWQgPSAodUludCkocy0+c3Ryc3RhcnQgLSBtYXhfc3RhcnQpOworICAgICAgICAgICAgcy0+c3Ryc3RhcnQgPSAodUludCltYXhfc3RhcnQ7CisgICAgICAgICAgICBGTFVTSF9CTE9DSyhzLCAwKTsKKyAgICAgICAgfQorICAgICAgICAvKiBGbHVzaCBpZiB3ZSBtYXkgaGF2ZSB0byBzbGlkZSwgb3RoZXJ3aXNlIGJsb2NrX3N0YXJ0IG1heSBiZWNvbWUKKyAgICAgICAgICogbmVnYXRpdmUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgZ29uZToKKyAgICAgICAgICovCisgICAgICAgIGlmIChzLT5zdHJzdGFydCAtICh1SW50KXMtPmJsb2NrX3N0YXJ0ID49IE1BWF9ESVNUKHMpKSB7CisgICAgICAgICAgICBGTFVTSF9CTE9DSyhzLCAwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzLT5pbnNlcnQgPSAwOworICAgIGlmIChmbHVzaCA9PSBaX0ZJTklTSCkgeworICAgICAgICBGTFVTSF9CTE9DSyhzLCAxKTsKKyAgICAgICAgcmV0dXJuIGZpbmlzaF9kb25lOworICAgIH0KKyAgICBpZiAoKGxvbmcpcy0+c3Ryc3RhcnQgPiBzLT5ibG9ja19zdGFydCkKKyAgICAgICAgRkxVU0hfQkxPQ0socywgMCk7CisgICAgcmV0dXJuIGJsb2NrX2RvbmU7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29tcHJlc3MgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBpbnB1dCBzdHJlYW0sIHJldHVybiB0aGUgY3VycmVudAorICogYmxvY2sgc3RhdGUuCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gbGF6eSBldmFsdWF0aW9uIG9mIG1hdGNoZXMgYW5kIGluc2VydHMKKyAqIG5ldyBzdHJpbmdzIGluIHRoZSBkaWN0aW9uYXJ5IG9ubHkgZm9yIHVubWF0Y2hlZCBzdHJpbmdzIG9yIGZvciBzaG9ydAorICogbWF0Y2hlcy4gSXQgaXMgdXNlZCBvbmx5IGZvciB0aGUgZmFzdCBjb21wcmVzc2lvbiBvcHRpb25zLgorICovCitsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRlX2Zhc3QoCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICBpbnQgZmx1c2gpCit7CisgICAgSVBvcyBoYXNoX2hlYWQ7ICAgICAgIC8qIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW4gKi8KKyAgICBpbnQgYmZsdXNoOyAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovCisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdAorICAgICAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlcworICAgICAgICAgKiBmb3IgdGhlIG5leHQgbWF0Y2gsIHBsdXMgTUlOX01BVENIIGJ5dGVzIHRvIGluc2VydCB0aGUKKyAgICAgICAgICogc3RyaW5nIGZvbGxvd2luZyB0aGUgbmV4dCBtYXRjaC4KKyAgICAgICAgICovCisgICAgICAgIGlmIChzLT5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEKSB7CisgICAgICAgICAgICBmaWxsX3dpbmRvdyhzKTsKKyAgICAgICAgICAgIGlmIChzLT5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEICYmIGZsdXNoID09IFpfTk9fRkxVU0gpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmVlZF9tb3JlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMtPmxvb2thaGVhZCA9PSAwKSBicmVhazsgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qIEluc2VydCB0aGUgc3RyaW5nIHdpbmRvd1tzdHJzdGFydCAuLiBzdHJzdGFydCsyXSBpbiB0aGUKKyAgICAgICAgICogZGljdGlvbmFyeSwgYW5kIHNldCBoYXNoX2hlYWQgdG8gdGhlIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW46CisgICAgICAgICAqLworICAgICAgICBoYXNoX2hlYWQgPSBOSUw7CisgICAgICAgIGlmIChzLT5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7CisgICAgICAgICAgICBJTlNFUlRfU1RSSU5HKHMsIHMtPnN0cnN0YXJ0LCBoYXNoX2hlYWQpOworICAgICAgICB9CisKKyAgICAgICAgLyogRmluZCB0aGUgbG9uZ2VzdCBtYXRjaCwgZGlzY2FyZGluZyB0aG9zZSA8PSBwcmV2X2xlbmd0aC4KKyAgICAgICAgICogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFsd2F5cyBtYXRjaF9sZW5ndGggPCBNSU5fTUFUQ0gKKyAgICAgICAgICovCisgICAgICAgIGlmIChoYXNoX2hlYWQgIT0gTklMICYmIHMtPnN0cnN0YXJ0IC0gaGFzaF9oZWFkIDw9IE1BWF9ESVNUKHMpKSB7CisgICAgICAgICAgICAvKiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZworICAgICAgICAgICAgICogb2Ygd2luZG93IGluZGV4IDAgKGluIHBhcnRpY3VsYXIgd2UgaGF2ZSB0byBhdm9pZCBhIG1hdGNoCisgICAgICAgICAgICAgKiBvZiB0aGUgc3RyaW5nIHdpdGggaXRzZWxmIGF0IHRoZSBzdGFydCBvZiB0aGUgaW5wdXQgZmlsZSkuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHMtPm1hdGNoX2xlbmd0aCA9IGxvbmdlc3RfbWF0Y2ggKHMsIGhhc2hfaGVhZCk7CisgICAgICAgICAgICAvKiBsb25nZXN0X21hdGNoKCkgc2V0cyBtYXRjaF9zdGFydCAqLworICAgICAgICB9CisgICAgICAgIGlmIChzLT5tYXRjaF9sZW5ndGggPj0gTUlOX01BVENIKSB7CisgICAgICAgICAgICBjaGVja19tYXRjaChzLCBzLT5zdHJzdGFydCwgcy0+bWF0Y2hfc3RhcnQsIHMtPm1hdGNoX2xlbmd0aCk7CisKKyAgICAgICAgICAgIF90cl90YWxseV9kaXN0KHMsIHMtPnN0cnN0YXJ0IC0gcy0+bWF0Y2hfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gsIGJmbHVzaCk7CisKKyAgICAgICAgICAgIHMtPmxvb2thaGVhZCAtPSBzLT5tYXRjaF9sZW5ndGg7CisKKyAgICAgICAgICAgIC8qIEluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgaGFzaCB0YWJsZSBvbmx5IGlmIHRoZSBtYXRjaCBsZW5ndGgKKyAgICAgICAgICAgICAqIGlzIG5vdCB0b28gbGFyZ2UuIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uCisgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRkFTVEVTVAorICAgICAgICAgICAgaWYgKHMtPm1hdGNoX2xlbmd0aCA8PSBzLT5tYXhfaW5zZXJ0X2xlbmd0aCAmJgorICAgICAgICAgICAgICAgIHMtPmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHsKKyAgICAgICAgICAgICAgICBzLT5tYXRjaF9sZW5ndGgtLTsgLyogc3RyaW5nIGF0IHN0cnN0YXJ0IGFscmVhZHkgaW4gdGFibGUgKi8KKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIHMtPnN0cnN0YXJ0Kys7CisgICAgICAgICAgICAgICAgICAgIElOU0VSVF9TVFJJTkcocywgcy0+c3Ryc3RhcnQsIGhhc2hfaGVhZCk7CisgICAgICAgICAgICAgICAgICAgIC8qIHN0cnN0YXJ0IG5ldmVyIGV4Y2VlZHMgV1NJWkUtTUFYX01BVENILCBzbyB0aGVyZSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICogYWx3YXlzIE1JTl9NQVRDSCBieXRlcyBhaGVhZC4KKyAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1zLT5tYXRjaF9sZW5ndGggIT0gMCk7CisgICAgICAgICAgICAgICAgcy0+c3Ryc3RhcnQrKzsKKyAgICAgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcy0+c3Ryc3RhcnQgKz0gcy0+bWF0Y2hfbGVuZ3RoOworICAgICAgICAgICAgICAgIHMtPm1hdGNoX2xlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgcy0+aW5zX2ggPSBzLT53aW5kb3dbcy0+c3Ryc3RhcnRdOworICAgICAgICAgICAgICAgIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnQrMV0pOworI2lmIE1JTl9NQVRDSCAhPSAzCisgICAgICAgICAgICAgICAgQ2FsbCBVUERBVEVfSEFTSCgpIE1JTl9NQVRDSC0zIG1vcmUgdGltZXMKKyNlbmRpZgorICAgICAgICAgICAgICAgIC8qIElmIGxvb2thaGVhZCA8IE1JTl9NQVRDSCwgaW5zX2ggaXMgZ2FyYmFnZSwgYnV0IGl0IGRvZXMgbm90CisgICAgICAgICAgICAgICAgICogbWF0dGVyIHNpbmNlIGl0IHdpbGwgYmUgcmVjb21wdXRlZCBhdCBuZXh0IGRlZmxhdGUgY2FsbC4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIE5vIG1hdGNoLCBvdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi8KKyAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwiJWMiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnRdKSk7CisgICAgICAgICAgICBfdHJfdGFsbHlfbGl0IChzLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnRdLCBiZmx1c2gpOworICAgICAgICAgICAgcy0+bG9va2FoZWFkLS07CisgICAgICAgICAgICBzLT5zdHJzdGFydCsrOworICAgICAgICB9CisgICAgICAgIGlmIChiZmx1c2gpIEZMVVNIX0JMT0NLKHMsIDApOworICAgIH0KKyAgICBzLT5pbnNlcnQgPSBzLT5zdHJzdGFydCA8IE1JTl9NQVRDSC0xID8gcy0+c3Ryc3RhcnQgOiBNSU5fTUFUQ0gtMTsKKyAgICBpZiAoZmx1c2ggPT0gWl9GSU5JU0gpIHsKKyAgICAgICAgRkxVU0hfQkxPQ0socywgMSk7CisgICAgICAgIHJldHVybiBmaW5pc2hfZG9uZTsKKyAgICB9CisgICAgaWYgKHMtPmxhc3RfbGl0KQorICAgICAgICBGTFVTSF9CTE9DSyhzLCAwKTsKKyAgICByZXR1cm4gYmxvY2tfZG9uZTsKK30KKworI2lmbmRlZiBGQVNURVNUCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFNhbWUgYXMgYWJvdmUsIGJ1dCBhY2hpZXZlcyBiZXR0ZXIgY29tcHJlc3Npb24uIFdlIHVzZSBhIGxhenkKKyAqIGV2YWx1YXRpb24gZm9yIG1hdGNoZXM6IGEgbWF0Y2ggaXMgZmluYWxseSBhZG9wdGVkIG9ubHkgaWYgdGhlcmUgaXMKKyAqIG5vIGJldHRlciBtYXRjaCBhdCB0aGUgbmV4dCB3aW5kb3cgcG9zaXRpb24uCisgKi8KK2xvY2FsIGJsb2NrX3N0YXRlIGRlZmxhdGVfc2xvdygKKyAgICBkZWZsYXRlX3N0YXRlICpzLAorICAgIGludCBmbHVzaCkKK3sKKyAgICBJUG9zIGhhc2hfaGVhZDsgICAgICAgICAgLyogaGVhZCBvZiBoYXNoIGNoYWluICovCisgICAgaW50IGJmbHVzaDsgICAgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqLworCisgICAgLyogUHJvY2VzcyB0aGUgaW5wdXQgYmxvY2suICovCisgICAgZm9yICg7OykgeworICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHQKKyAgICAgICAgICogYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgZmlsZS4gV2UgbmVlZCBNQVhfTUFUQ0ggYnl0ZXMKKyAgICAgICAgICogZm9yIHRoZSBuZXh0IG1hdGNoLCBwbHVzIE1JTl9NQVRDSCBieXRlcyB0byBpbnNlcnQgdGhlCisgICAgICAgICAqIHN0cmluZyBmb2xsb3dpbmcgdGhlIG5leHQgbWF0Y2guCisgICAgICAgICAqLworICAgICAgICBpZiAocy0+bG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCkgeworICAgICAgICAgICAgZmlsbF93aW5kb3cocyk7CisgICAgICAgICAgICBpZiAocy0+bG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCAmJiBmbHVzaCA9PSBaX05PX0ZMVVNIKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5lZWRfbW9yZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzLT5sb29rYWhlYWQgPT0gMCkgYnJlYWs7IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovCisgICAgICAgIH0KKworICAgICAgICAvKiBJbnNlcnQgdGhlIHN0cmluZyB3aW5kb3dbc3Ryc3RhcnQgLi4gc3Ryc3RhcnQrMl0gaW4gdGhlCisgICAgICAgICAqIGRpY3Rpb25hcnksIGFuZCBzZXQgaGFzaF9oZWFkIHRvIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluOgorICAgICAgICAgKi8KKyAgICAgICAgaGFzaF9oZWFkID0gTklMOworICAgICAgICBpZiAocy0+bG9va2FoZWFkID49IE1JTl9NQVRDSCkgeworICAgICAgICAgICAgSU5TRVJUX1NUUklORyhzLCBzLT5zdHJzdGFydCwgaGFzaF9oZWFkKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gsIGRpc2NhcmRpbmcgdGhvc2UgPD0gcHJldl9sZW5ndGguCisgICAgICAgICAqLworICAgICAgICBzLT5wcmV2X2xlbmd0aCA9IHMtPm1hdGNoX2xlbmd0aCwgcy0+cHJldl9tYXRjaCA9IHMtPm1hdGNoX3N0YXJ0OworICAgICAgICBzLT5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0gtMTsKKworICAgICAgICBpZiAoaGFzaF9oZWFkICE9IE5JTCAmJiBzLT5wcmV2X2xlbmd0aCA8IHMtPm1heF9sYXp5X21hdGNoICYmCisgICAgICAgICAgICBzLT5zdHJzdGFydCAtIGhhc2hfaGVhZCA8PSBNQVhfRElTVChzKSkgeworICAgICAgICAgICAgLyogVG8gc2ltcGxpZnkgdGhlIGNvZGUsIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAqIG9mIHdpbmRvdyBpbmRleCAwIChpbiBwYXJ0aWN1bGFyIHdlIGhhdmUgdG8gYXZvaWQgYSBtYXRjaAorICAgICAgICAgICAgICogb2YgdGhlIHN0cmluZyB3aXRoIGl0c2VsZiBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IGZpbGUpLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzLT5tYXRjaF9sZW5ndGggPSBsb25nZXN0X21hdGNoIChzLCBoYXNoX2hlYWQpOworICAgICAgICAgICAgLyogbG9uZ2VzdF9tYXRjaCgpIHNldHMgbWF0Y2hfc3RhcnQgKi8KKworICAgICAgICAgICAgaWYgKHMtPm1hdGNoX2xlbmd0aCA8PSA1ICYmIChzLT5zdHJhdGVneSA9PSBaX0ZJTFRFUkVECisjaWYgVE9PX0ZBUiA8PSAzMjc2NworICAgICAgICAgICAgICAgIHx8IChzLT5tYXRjaF9sZW5ndGggPT0gTUlOX01BVENIICYmCisgICAgICAgICAgICAgICAgICAgIHMtPnN0cnN0YXJ0IC0gcy0+bWF0Y2hfc3RhcnQgPiBUT09fRkFSKQorI2VuZGlmCisgICAgICAgICAgICAgICAgKSkgeworCisgICAgICAgICAgICAgICAgLyogSWYgcHJldl9tYXRjaCBpcyBhbHNvIE1JTl9NQVRDSCwgbWF0Y2hfc3RhcnQgaXMgZ2FyYmFnZQorICAgICAgICAgICAgICAgICAqIGJ1dCB3ZSB3aWxsIGlnbm9yZSB0aGUgY3VycmVudCBtYXRjaCBhbnl3YXkuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcy0+bWF0Y2hfbGVuZ3RoID0gTUlOX01BVENILTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYXQgdGhlIHByZXZpb3VzIHN0ZXAgYW5kIHRoZSBjdXJyZW50CisgICAgICAgICAqIG1hdGNoIGlzIG5vdCBiZXR0ZXIsIG91dHB1dCB0aGUgcHJldmlvdXMgbWF0Y2g6CisgICAgICAgICAqLworICAgICAgICBpZiAocy0+cHJldl9sZW5ndGggPj0gTUlOX01BVENIICYmIHMtPm1hdGNoX2xlbmd0aCA8PSBzLT5wcmV2X2xlbmd0aCkgeworICAgICAgICAgICAgdUludCBtYXhfaW5zZXJ0ID0gcy0+c3Ryc3RhcnQgKyBzLT5sb29rYWhlYWQgLSBNSU5fTUFUQ0g7CisgICAgICAgICAgICAvKiBEbyBub3QgaW5zZXJ0IHN0cmluZ3MgaW4gaGFzaCB0YWJsZSBiZXlvbmQgdGhpcy4gKi8KKworICAgICAgICAgICAgY2hlY2tfbWF0Y2gocywgcy0+c3Ryc3RhcnQtMSwgcy0+cHJldl9tYXRjaCwgcy0+cHJldl9sZW5ndGgpOworCisgICAgICAgICAgICBfdHJfdGFsbHlfZGlzdChzLCBzLT5zdHJzdGFydCAtMSAtIHMtPnByZXZfbWF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCwgYmZsdXNoKTsKKworICAgICAgICAgICAgLyogSW5zZXJ0IGluIGhhc2ggdGFibGUgYWxsIHN0cmluZ3MgdXAgdG8gdGhlIGVuZCBvZiB0aGUgbWF0Y2guCisgICAgICAgICAgICAgKiBzdHJzdGFydC0xIGFuZCBzdHJzdGFydCBhcmUgYWxyZWFkeSBpbnNlcnRlZC4gSWYgdGhlcmUgaXMgbm90CisgICAgICAgICAgICAgKiBlbm91Z2ggbG9va2FoZWFkLCB0aGUgbGFzdCB0d28gc3RyaW5ncyBhcmUgbm90IGluc2VydGVkIGluCisgICAgICAgICAgICAgKiB0aGUgaGFzaCB0YWJsZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcy0+bG9va2FoZWFkIC09IHMtPnByZXZfbGVuZ3RoLTE7CisgICAgICAgICAgICBzLT5wcmV2X2xlbmd0aCAtPSAyOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGlmICgrK3MtPnN0cnN0YXJ0IDw9IG1heF9pbnNlcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgSU5TRVJUX1NUUklORyhzLCBzLT5zdHJzdGFydCwgaGFzaF9oZWFkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IHdoaWxlICgtLXMtPnByZXZfbGVuZ3RoICE9IDApOworICAgICAgICAgICAgcy0+bWF0Y2hfYXZhaWxhYmxlID0gMDsKKyAgICAgICAgICAgIHMtPm1hdGNoX2xlbmd0aCA9IE1JTl9NQVRDSC0xOworICAgICAgICAgICAgcy0+c3Ryc3RhcnQrKzsKKworICAgICAgICAgICAgaWYgKGJmbHVzaCkgRkxVU0hfQkxPQ0socywgMCk7CisKKyAgICAgICAgfSBlbHNlIGlmIChzLT5tYXRjaF9hdmFpbGFibGUpIHsKKyAgICAgICAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBtYXRjaCBhdCB0aGUgcHJldmlvdXMgcG9zaXRpb24sIG91dHB1dCBhCisgICAgICAgICAgICAgKiBzaW5nbGUgbGl0ZXJhbC4gSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYnV0IHRoZSBjdXJyZW50IG1hdGNoCisgICAgICAgICAgICAgKiBpcyBsb25nZXIsIHRydW5jYXRlIHRoZSBwcmV2aW91cyBtYXRjaCB0byBhIHNpbmdsZSBsaXRlcmFsLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBUcmFjZXZ2KChzdGRlcnIsIiVjIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0LTFdKSk7CisgICAgICAgICAgICBfdHJfdGFsbHlfbGl0KHMsIHMtPndpbmRvd1tzLT5zdHJzdGFydC0xXSwgYmZsdXNoKTsKKyAgICAgICAgICAgIGlmIChiZmx1c2gpIHsKKyAgICAgICAgICAgICAgICBGTFVTSF9CTE9DS19PTkxZKHMsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcy0+c3Ryc3RhcnQrKzsKKyAgICAgICAgICAgIHMtPmxvb2thaGVhZC0tOworICAgICAgICAgICAgaWYgKHMtPnN0cm0tPmF2YWlsX291dCA9PSAwKSByZXR1cm4gbmVlZF9tb3JlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogVGhlcmUgaXMgbm8gcHJldmlvdXMgbWF0Y2ggdG8gY29tcGFyZSB3aXRoLCB3YWl0IGZvcgorICAgICAgICAgICAgICogdGhlIG5leHQgc3RlcCB0byBkZWNpZGUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHMtPm1hdGNoX2F2YWlsYWJsZSA9IDE7CisgICAgICAgICAgICBzLT5zdHJzdGFydCsrOworICAgICAgICAgICAgcy0+bG9va2FoZWFkLS07CisgICAgICAgIH0KKyAgICB9CisgICAgQXNzZXJ0IChmbHVzaCAhPSBaX05PX0ZMVVNILCAibm8gZmx1c2g/Iik7CisgICAgaWYgKHMtPm1hdGNoX2F2YWlsYWJsZSkgeworICAgICAgICBUcmFjZXZ2KChzdGRlcnIsIiVjIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0LTFdKSk7CisgICAgICAgIF90cl90YWxseV9saXQocywgcy0+d2luZG93W3MtPnN0cnN0YXJ0LTFdLCBiZmx1c2gpOworICAgICAgICBzLT5tYXRjaF9hdmFpbGFibGUgPSAwOworICAgIH0KKyAgICBzLT5pbnNlcnQgPSBzLT5zdHJzdGFydCA8IE1JTl9NQVRDSC0xID8gcy0+c3Ryc3RhcnQgOiBNSU5fTUFUQ0gtMTsKKyAgICBpZiAoZmx1c2ggPT0gWl9GSU5JU0gpIHsKKyAgICAgICAgRkxVU0hfQkxPQ0socywgMSk7CisgICAgICAgIHJldHVybiBmaW5pc2hfZG9uZTsKKyAgICB9CisgICAgaWYgKHMtPmxhc3RfbGl0KQorICAgICAgICBGTFVTSF9CTE9DSyhzLCAwKTsKKyAgICByZXR1cm4gYmxvY2tfZG9uZTsKK30KKyNlbmRpZiAvKiBGQVNURVNUICovCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogRm9yIFpfUkxFLCBzaW1wbHkgbG9vayBmb3IgcnVucyBvZiBieXRlcywgZ2VuZXJhdGUgbWF0Y2hlcyBvbmx5IG9mIGRpc3RhbmNlCisgKiBvbmUuICBEbyBub3QgbWFpbnRhaW4gYSBoYXNoIHRhYmxlLiAgKEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgaWYgdGhpcyBydW4gb2YKKyAqIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIFpfUkxFLikKKyAqLworbG9jYWwgYmxvY2tfc3RhdGUgZGVmbGF0ZV9ybGUoCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICBpbnQgZmx1c2gpCit7CisgICAgaW50IGJmbHVzaDsgICAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovCisgICAgdUludCBwcmV2OyAgICAgICAgICAgICAgLyogYnl0ZSBhdCBkaXN0YW5jZSBvbmUgdG8gbWF0Y2ggKi8KKyAgICBCeXRlZiAqc2NhbiwgKnN0cmVuZDsgICAvKiBzY2FuIGdvZXMgdXAgdG8gc3RyZW5kIGZvciBsZW5ndGggb2YgcnVuICovCisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdAorICAgICAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlcworICAgICAgICAgKiBmb3IgdGhlIGxvbmdlc3QgcnVuLCBwbHVzIG9uZSBmb3IgdGhlIHVucm9sbGVkIGxvb3AuCisgICAgICAgICAqLworICAgICAgICBpZiAocy0+bG9va2FoZWFkIDw9IE1BWF9NQVRDSCkgeworICAgICAgICAgICAgZmlsbF93aW5kb3cocyk7CisgICAgICAgICAgICBpZiAocy0+bG9va2FoZWFkIDw9IE1BWF9NQVRDSCAmJiBmbHVzaCA9PSBaX05PX0ZMVVNIKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5lZWRfbW9yZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzLT5sb29rYWhlYWQgPT0gMCkgYnJlYWs7IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovCisgICAgICAgIH0KKworICAgICAgICAvKiBTZWUgaG93IG1hbnkgdGltZXMgdGhlIHByZXZpb3VzIGJ5dGUgcmVwZWF0cyAqLworICAgICAgICBzLT5tYXRjaF9sZW5ndGggPSAwOworICAgICAgICBpZiAocy0+bG9va2FoZWFkID49IE1JTl9NQVRDSCAmJiBzLT5zdHJzdGFydCA+IDApIHsKKyAgICAgICAgICAgIHNjYW4gPSBzLT53aW5kb3cgKyBzLT5zdHJzdGFydCAtIDE7CisgICAgICAgICAgICBwcmV2ID0gKnNjYW47CisgICAgICAgICAgICBpZiAocHJldiA9PSAqKytzY2FuICYmIHByZXYgPT0gKisrc2NhbiAmJiBwcmV2ID09ICorK3NjYW4pIHsKKyAgICAgICAgICAgICAgICBzdHJlbmQgPSBzLT53aW5kb3cgKyBzLT5zdHJzdGFydCArIE1BWF9NQVRDSDsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAocHJldiA9PSAqKytzY2FuICYmIHByZXYgPT0gKisrc2NhbiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPT0gKisrc2NhbiAmJiBwcmV2ID09ICorK3NjYW4gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID09ICorK3NjYW4gJiYgcHJldiA9PSAqKytzY2FuICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9PSAqKytzY2FuICYmIHByZXYgPT0gKisrc2NhbiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4gPCBzdHJlbmQpOworICAgICAgICAgICAgICAgIHMtPm1hdGNoX2xlbmd0aCA9IE1BWF9NQVRDSCAtIChpbnQpKHN0cmVuZCAtIHNjYW4pOworICAgICAgICAgICAgICAgIGlmIChzLT5tYXRjaF9sZW5ndGggPiBzLT5sb29rYWhlYWQpCisgICAgICAgICAgICAgICAgICAgIHMtPm1hdGNoX2xlbmd0aCA9IHMtPmxvb2thaGVhZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFzc2VydChzY2FuIDw9IHMtPndpbmRvdysodUludCkocy0+d2luZG93X3NpemUtMSksICJ3aWxkIHNjYW4iKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEVtaXQgbWF0Y2ggaWYgaGF2ZSBydW4gb2YgTUlOX01BVENIIG9yIGxvbmdlciwgZWxzZSBlbWl0IGxpdGVyYWwgKi8KKyAgICAgICAgaWYgKHMtPm1hdGNoX2xlbmd0aCA+PSBNSU5fTUFUQ0gpIHsKKyAgICAgICAgICAgIGNoZWNrX21hdGNoKHMsIHMtPnN0cnN0YXJ0LCBzLT5zdHJzdGFydCAtIDEsIHMtPm1hdGNoX2xlbmd0aCk7CisKKyAgICAgICAgICAgIF90cl90YWxseV9kaXN0KHMsIDEsIHMtPm1hdGNoX2xlbmd0aCAtIE1JTl9NQVRDSCwgYmZsdXNoKTsKKworICAgICAgICAgICAgcy0+bG9va2FoZWFkIC09IHMtPm1hdGNoX2xlbmd0aDsKKyAgICAgICAgICAgIHMtPnN0cnN0YXJ0ICs9IHMtPm1hdGNoX2xlbmd0aDsKKyAgICAgICAgICAgIHMtPm1hdGNoX2xlbmd0aCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBObyBtYXRjaCwgb3V0cHV0IGEgbGl0ZXJhbCBieXRlICovCisgICAgICAgICAgICBUcmFjZXZ2KChzdGRlcnIsIiVjIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpOworICAgICAgICAgICAgX3RyX3RhbGx5X2xpdCAocywgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSwgYmZsdXNoKTsKKyAgICAgICAgICAgIHMtPmxvb2thaGVhZC0tOworICAgICAgICAgICAgcy0+c3Ryc3RhcnQrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoYmZsdXNoKSBGTFVTSF9CTE9DSyhzLCAwKTsKKyAgICB9CisgICAgcy0+aW5zZXJ0ID0gMDsKKyAgICBpZiAoZmx1c2ggPT0gWl9GSU5JU0gpIHsKKyAgICAgICAgRkxVU0hfQkxPQ0socywgMSk7CisgICAgICAgIHJldHVybiBmaW5pc2hfZG9uZTsKKyAgICB9CisgICAgaWYgKHMtPmxhc3RfbGl0KQorICAgICAgICBGTFVTSF9CTE9DSyhzLCAwKTsKKyAgICByZXR1cm4gYmxvY2tfZG9uZTsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBGb3IgWl9IVUZGTUFOX09OTFksIGRvIG5vdCBsb29rIGZvciBtYXRjaGVzLiAgRG8gbm90IG1haW50YWluIGEgaGFzaCB0YWJsZS4KKyAqIChJdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGlmIHRoaXMgcnVuIG9mIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIEh1ZmZtYW4uKQorICovCitsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRlX2h1ZmYoCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICBpbnQgZmx1c2gpCit7CisgICAgaW50IGJmbHVzaDsgICAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovCisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgYSBsaXRlcmFsIHRvIHdyaXRlLiAqLworICAgICAgICBpZiAocy0+bG9va2FoZWFkID09IDApIHsKKyAgICAgICAgICAgIGZpbGxfd2luZG93KHMpOworICAgICAgICAgICAgaWYgKHMtPmxvb2thaGVhZCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGZsdXNoID09IFpfTk9fRkxVU0gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZWVkX21vcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIE91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqLworICAgICAgICBzLT5tYXRjaF9sZW5ndGggPSAwOworICAgICAgICBUcmFjZXZ2KChzdGRlcnIsIiVjIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpOworICAgICAgICBfdHJfdGFsbHlfbGl0IChzLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnRdLCBiZmx1c2gpOworICAgICAgICBzLT5sb29rYWhlYWQtLTsKKyAgICAgICAgcy0+c3Ryc3RhcnQrKzsKKyAgICAgICAgaWYgKGJmbHVzaCkgRkxVU0hfQkxPQ0socywgMCk7CisgICAgfQorICAgIHMtPmluc2VydCA9IDA7CisgICAgaWYgKGZsdXNoID09IFpfRklOSVNIKSB7CisgICAgICAgIEZMVVNIX0JMT0NLKHMsIDEpOworICAgICAgICByZXR1cm4gZmluaXNoX2RvbmU7CisgICAgfQorICAgIGlmIChzLT5sYXN0X2xpdCkKKyAgICAgICAgRkxVU0hfQkxPQ0socywgMCk7CisgICAgcmV0dXJuIGJsb2NrX2RvbmU7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2Z4X3psaWJfaW5mYmFjay5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2luZmJhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTdiYmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2luZmJhY2suYwpAQCAtMCwwICsxLDY0MCBAQAorLyogaW5mYmFjay5jIC0tIGluZmxhdGUgdXNpbmcgYSBjYWxsLWJhY2sgaW50ZXJmYWNlCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMSBNYXJrIEFkbGVyCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgKi8KKworLyoKKyAgIFRoaXMgY29kZSBpcyBsYXJnZWx5IGNvcGllZCBmcm9tIGluZmxhdGUuYy4gIE5vcm1hbGx5IGVpdGhlciBpbmZiYWNrLm8gb3IKKyAgIGluZmxhdGUubyB3b3VsZCBiZSBsaW5rZWQgaW50byBhbiBhcHBsaWNhdGlvbi0tbm90IGJvdGguICBUaGUgaW50ZXJmYWNlCisgICB3aXRoIGluZmZhc3QuYyBpcyByZXRhaW5lZCBzbyB0aGF0IG9wdGltaXplZCBhc3NlbWJsZXItY29kZWQgdmVyc2lvbnMgb2YKKyAgIGluZmxhdGVfZmFzdCgpIGNhbiBiZSB1c2VkIHdpdGggZWl0aGVyIGluZmxhdGUuYyBvciBpbmZiYWNrLmMuCisgKi8KKworI2luY2x1ZGUgInp1dGlsLmgiCisjaW5jbHVkZSAiaW5mdHJlZXMuaCIKKyNpbmNsdWRlICJpbmZsYXRlLmgiCisjaW5jbHVkZSAiaW5mZmFzdC5oIgorCisvKiBmdW5jdGlvbiBwcm90b3R5cGVzICovCitsb2NhbCB2b2lkIGZpeGVkdGFibGVzIE9GKChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlKSk7CisKKy8qCisgICBzdHJtIHByb3ZpZGVzIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBpbiB6YWxsb2MgYW5kIHpmcmVlLCBvcgorICAgWl9OVUxMIHRvIHVzZSB0aGUgbGlicmFyeSBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMuCisKKyAgIHdpbmRvd0JpdHMgaXMgaW4gdGhlIHJhbmdlIDguLjE1LCBhbmQgd2luZG93IGlzIGEgdXNlci1zdXBwbGllZAorICAgd2luZG93IGFuZCBvdXRwdXQgYnVmZmVyIHRoYXQgaXMgMioqd2luZG93Qml0cyBieXRlcy4KKyAqLworaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2tJbml0XygKK3pfc3RyZWFtcCBzdHJtLAoraW50IHdpbmRvd0JpdHMsCit1bnNpZ25lZCBjaGFyIEZBUiAqd2luZG93LAorY29uc3QgY2hhciAqdmVyc2lvbiwKK2ludCBzdHJlYW1fc2l6ZSkKK3sKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworCisgICAgaWYgKHZlcnNpb24gPT0gWl9OVUxMIHx8IHZlcnNpb25bMF0gIT0gWkxJQl9WRVJTSU9OWzBdIHx8CisgICAgICAgIHN0cmVhbV9zaXplICE9IChpbnQpKHNpemVvZih6X3N0cmVhbSkpKQorICAgICAgICByZXR1cm4gWl9WRVJTSU9OX0VSUk9SOworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCB3aW5kb3cgPT0gWl9OVUxMIHx8CisgICAgICAgIHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0cm0tPm1zZyA9IFpfTlVMTDsgICAgICAgICAgICAgICAgIC8qIGluIGNhc2Ugd2UgcmV0dXJuIGFuIGVycm9yICovCisgICAgaWYgKHN0cm0tPnphbGxvYyA9PSAoYWxsb2NfZnVuYykwKSB7CisjaWZkZWYgWl9TT0xPCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyNlbHNlCisgICAgICAgIHN0cm0tPnphbGxvYyA9IHpjYWxsb2M7CisgICAgICAgIHN0cm0tPm9wYXF1ZSA9ICh2b2lkcGYpMDsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAoc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorI2lmZGVmIFpfU09MTworICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisjZWxzZQorICAgIHN0cm0tPnpmcmVlID0gemNmcmVlOworI2VuZGlmCisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopWkFMTE9DKHN0cm0sIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSkpOworICAgIGlmIChzdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX01FTV9FUlJPUjsKKyAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6IGFsbG9jYXRlZFxuIikpOworICAgIHN0cm0tPnN0YXRlID0gKHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSBGQVIgKilzdGF0ZTsKKyAgICBzdGF0ZS0+ZG1heCA9IDMyNzY4VTsKKyAgICBzdGF0ZS0+d2JpdHMgPSB3aW5kb3dCaXRzOworICAgIHN0YXRlLT53c2l6ZSA9IDFVIDw8IHdpbmRvd0JpdHM7CisgICAgc3RhdGUtPndpbmRvdyA9IHdpbmRvdzsKKyAgICBzdGF0ZS0+d25leHQgPSAwOworICAgIHN0YXRlLT53aGF2ZSA9IDA7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKKy8qCisgICBSZXR1cm4gc3RhdGUgd2l0aCBsZW5ndGggYW5kIGRpc3RhbmNlIGRlY29kaW5nIHRhYmxlcyBhbmQgaW5kZXggc2l6ZXMgc2V0IHRvCisgICBmaXhlZCBjb2RlIGRlY29kaW5nLiAgTm9ybWFsbHkgdGhpcyByZXR1cm5zIGZpeGVkIHRhYmxlcyBmcm9tIGluZmZpeGVkLmguCisgICBJZiBCVUlMREZJWEVEIGlzIGRlZmluZWQsIHRoZW4gaW5zdGVhZCB0aGlzIHJvdXRpbmUgYnVpbGRzIHRoZSB0YWJsZXMgdGhlCisgICBmaXJzdCB0aW1lIGl0J3MgY2FsbGVkLCBhbmQgcmV0dXJucyB0aG9zZSB0YWJsZXMgdGhlIGZpcnN0IHRpbWUgYW5kCisgICB0aGVyZWFmdGVyLiAgVGhpcyByZWR1Y2VzIHRoZSBzaXplIG9mIHRoZSBjb2RlIGJ5IGFib3V0IDJLIGJ5dGVzLCBpbgorICAgZXhjaGFuZ2UgZm9yIGEgbGl0dGxlIGV4ZWN1dGlvbiB0aW1lLiAgSG93ZXZlciwgQlVJTERGSVhFRCBzaG91bGQgbm90IGJlCisgICB1c2VkIGZvciB0aHJlYWRlZCBhcHBsaWNhdGlvbnMsIHNpbmNlIHRoZSByZXdyaXRpbmcgb2YgdGhlIHRhYmxlcyBhbmQgdmlyZ2luCisgICBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgorICovCitsb2NhbCB2b2lkIGZpeGVkdGFibGVzKAorc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZSkKK3sKKyNpZmRlZiBCVUlMREZJWEVECisgICAgc3RhdGljIGludCB2aXJnaW4gPSAxOworICAgIHN0YXRpYyBjb2RlICpsZW5maXgsICpkaXN0Zml4OworICAgIHN0YXRpYyBjb2RlIGZpeGVkWzU0NF07CisKKyAgICAvKiBidWlsZCBmaXhlZCBodWZmbWFuIHRhYmxlcyBpZiBmaXJzdCBjYWxsIChtYXkgbm90IGJlIHRocmVhZCBzYWZlKSAqLworICAgIGlmICh2aXJnaW4pIHsKKyAgICAgICAgdW5zaWduZWQgc3ltLCBiaXRzOworICAgICAgICBzdGF0aWMgY29kZSAqbmV4dDsKKworICAgICAgICAvKiBsaXRlcmFsL2xlbmd0aCB0YWJsZSAqLworICAgICAgICBzeW0gPSAwOworICAgICAgICB3aGlsZSAoc3ltIDwgMTQ0KSBzdGF0ZS0+bGVuc1tzeW0rK10gPSA4OworICAgICAgICB3aGlsZSAoc3ltIDwgMjU2KSBzdGF0ZS0+bGVuc1tzeW0rK10gPSA5OworICAgICAgICB3aGlsZSAoc3ltIDwgMjgwKSBzdGF0ZS0+bGVuc1tzeW0rK10gPSA3OworICAgICAgICB3aGlsZSAoc3ltIDwgMjg4KSBzdGF0ZS0+bGVuc1tzeW0rK10gPSA4OworICAgICAgICBuZXh0ID0gZml4ZWQ7CisgICAgICAgIGxlbmZpeCA9IG5leHQ7CisgICAgICAgIGJpdHMgPSA5OworICAgICAgICBpbmZsYXRlX3RhYmxlKExFTlMsIHN0YXRlLT5sZW5zLCAyODgsICYobmV4dCksICYoYml0cyksIHN0YXRlLT53b3JrKTsKKworICAgICAgICAvKiBkaXN0YW5jZSB0YWJsZSAqLworICAgICAgICBzeW0gPSAwOworICAgICAgICB3aGlsZSAoc3ltIDwgMzIpIHN0YXRlLT5sZW5zW3N5bSsrXSA9IDU7CisgICAgICAgIGRpc3RmaXggPSBuZXh0OworICAgICAgICBiaXRzID0gNTsKKyAgICAgICAgaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUtPmxlbnMsIDMyLCAmKG5leHQpLCAmKGJpdHMpLCBzdGF0ZS0+d29yayk7CisKKyAgICAgICAgLyogZG8gdGhpcyBqdXN0IG9uY2UgKi8KKyAgICAgICAgdmlyZ2luID0gMDsKKyAgICB9CisjZWxzZSAvKiAhQlVJTERGSVhFRCAqLworIyAgIGluY2x1ZGUgImluZmZpeGVkLmgiCisjZW5kaWYgLyogQlVJTERGSVhFRCAqLworICAgIHN0YXRlLT5sZW5jb2RlID0gbGVuZml4OworICAgIHN0YXRlLT5sZW5iaXRzID0gOTsKKyAgICBzdGF0ZS0+ZGlzdGNvZGUgPSBkaXN0Zml4OworICAgIHN0YXRlLT5kaXN0Yml0cyA9IDU7Cit9CisKKy8qIE1hY3JvcyBmb3IgaW5mbGF0ZUJhY2soKTogKi8KKworLyogTG9hZCByZXR1cm5lZCBzdGF0ZSBmcm9tIGluZmxhdGVfZmFzdCgpICovCisjZGVmaW5lIExPQUQoKSBcCisgICAgZG8geyBcCisgICAgICAgIHB1dCA9IHN0cm0tPm5leHRfb3V0OyBcCisgICAgICAgIGxlZnQgPSBzdHJtLT5hdmFpbF9vdXQ7IFwKKyAgICAgICAgbmV4dCA9IHN0cm0tPm5leHRfaW47IFwKKyAgICAgICAgaGF2ZSA9IHN0cm0tPmF2YWlsX2luOyBcCisgICAgICAgIGhvbGQgPSBzdGF0ZS0+aG9sZDsgXAorICAgICAgICBiaXRzID0gc3RhdGUtPmJpdHM7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBTZXQgc3RhdGUgZnJvbSByZWdpc3RlcnMgZm9yIGluZmxhdGVfZmFzdCgpICovCisjZGVmaW5lIFJFU1RPUkUoKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0cm0tPm5leHRfb3V0ID0gcHV0OyBcCisgICAgICAgIHN0cm0tPmF2YWlsX291dCA9IGxlZnQ7IFwKKyAgICAgICAgc3RybS0+bmV4dF9pbiA9IG5leHQ7IFwKKyAgICAgICAgc3RybS0+YXZhaWxfaW4gPSBoYXZlOyBcCisgICAgICAgIHN0YXRlLT5ob2xkID0gaG9sZDsgXAorICAgICAgICBzdGF0ZS0+Yml0cyA9IGJpdHM7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBDbGVhciB0aGUgaW5wdXQgYml0IGFjY3VtdWxhdG9yICovCisjZGVmaW5lIElOSVRCSVRTKCkgXAorICAgIGRvIHsgXAorICAgICAgICBob2xkID0gMDsgXAorICAgICAgICBiaXRzID0gMDsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIEFzc3VyZSB0aGF0IHNvbWUgaW5wdXQgaXMgYXZhaWxhYmxlLiAgSWYgaW5wdXQgaXMgcmVxdWVzdGVkLCBidXQgZGVuaWVkLAorICAgdGhlbiByZXR1cm4gYSBaX0JVRl9FUlJPUiBmcm9tIGluZmxhdGVCYWNrKCkuICovCisjZGVmaW5lIFBVTEwoKSBcCisgICAgZG8geyBcCisgICAgICAgIGlmIChoYXZlID09IDApIHsgXAorICAgICAgICAgICAgaGF2ZSA9IGluKGluX2Rlc2MsICZuZXh0KTsgXAorICAgICAgICAgICAgaWYgKGhhdmUgPT0gMCkgeyBcCisgICAgICAgICAgICAgICAgbmV4dCA9IFpfTlVMTDsgXAorICAgICAgICAgICAgICAgIHJldCA9IFpfQlVGX0VSUk9SOyBcCisgICAgICAgICAgICAgICAgZ290byBpbmZfbGVhdmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBHZXQgYSBieXRlIG9mIGlucHV0IGludG8gdGhlIGJpdCBhY2N1bXVsYXRvciwgb3IgcmV0dXJuIGZyb20gaW5mbGF0ZUJhY2soKQorICAgd2l0aCBhbiBlcnJvciBpZiB0aGVyZSBpcyBubyBpbnB1dCBhdmFpbGFibGUuICovCisjZGVmaW5lIFBVTExCWVRFKCkgXAorICAgIGRvIHsgXAorICAgICAgICBQVUxMKCk7IFwKKyAgICAgICAgaGF2ZS0tOyBcCisgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCpuZXh0KyspIDw8IGJpdHM7IFwKKyAgICAgICAgYml0cyArPSA4OyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogQXNzdXJlIHRoYXQgdGhlcmUgYXJlIGF0IGxlYXN0IG4gYml0cyBpbiB0aGUgYml0IGFjY3VtdWxhdG9yLiAgSWYgdGhlcmUgaXMKKyAgIG5vdCBlbm91Z2ggYXZhaWxhYmxlIGlucHV0IHRvIGRvIHRoYXQsIHRoZW4gcmV0dXJuIGZyb20gaW5mbGF0ZUJhY2soKSB3aXRoCisgICBhbiBlcnJvci4gKi8KKyNkZWZpbmUgTkVFREJJVFMobikgXAorICAgIGRvIHsgXAorICAgICAgICB3aGlsZSAoYml0cyA8ICh1bnNpZ25lZCkobikpIFwKKyAgICAgICAgICAgIFBVTExCWVRFKCk7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBSZXR1cm4gdGhlIGxvdyBuIGJpdHMgb2YgdGhlIGJpdCBhY2N1bXVsYXRvciAobiA8IDE2KSAqLworI2RlZmluZSBCSVRTKG4pIFwKKyAgICAoKHVuc2lnbmVkKWhvbGQgJiAoKDFVIDw8IChuKSkgLSAxKSkKKworLyogUmVtb3ZlIG4gYml0cyBmcm9tIHRoZSBiaXQgYWNjdW11bGF0b3IgKi8KKyNkZWZpbmUgRFJPUEJJVFMobikgXAorICAgIGRvIHsgXAorICAgICAgICBob2xkID4+PSAobik7IFwKKyAgICAgICAgYml0cyAtPSAodW5zaWduZWQpKG4pOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmVtb3ZlIHplcm8gdG8gc2V2ZW4gYml0cyBhcyBuZWVkZWQgdG8gZ28gdG8gYSBieXRlIGJvdW5kYXJ5ICovCisjZGVmaW5lIEJZVEVCSVRTKCkgXAorICAgIGRvIHsgXAorICAgICAgICBob2xkID4+PSBiaXRzICYgNzsgXAorICAgICAgICBiaXRzIC09IGJpdHMgJiA3OyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogQXNzdXJlIHRoYXQgc29tZSBvdXRwdXQgc3BhY2UgaXMgYXZhaWxhYmxlLCBieSB3cml0aW5nIG91dCB0aGUgd2luZG93CisgICBpZiBpdCdzIGZ1bGwuICBJZiB0aGUgd3JpdGUgZmFpbHMsIHJldHVybiBmcm9tIGluZmxhdGVCYWNrKCkgd2l0aCBhCisgICBaX0JVRl9FUlJPUi4gKi8KKyNkZWZpbmUgUk9PTSgpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaWYgKGxlZnQgPT0gMCkgeyBcCisgICAgICAgICAgICBwdXQgPSBzdGF0ZS0+d2luZG93OyBcCisgICAgICAgICAgICBsZWZ0ID0gc3RhdGUtPndzaXplOyBcCisgICAgICAgICAgICBzdGF0ZS0+d2hhdmUgPSBsZWZ0OyBcCisgICAgICAgICAgICBpZiAob3V0KG91dF9kZXNjLCBwdXQsIGxlZnQpKSB7IFwKKyAgICAgICAgICAgICAgICByZXQgPSBaX0JVRl9FUlJPUjsgXAorICAgICAgICAgICAgICAgIGdvdG8gaW5mX2xlYXZlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworLyoKKyAgIHN0cm0gcHJvdmlkZXMgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBhbmQgd2luZG93IGJ1ZmZlciBvbiBpbnB1dCwKKyAgIGFuZCBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiB0aGUgdW51c2VkIGlucHV0IG9uIHJldHVybi4gIEZvciBaX0RBVEFfRVJST1IKKyAgIHJldHVybnMsIHN0cm0gd2lsbCBhbHNvIHByb3ZpZGUgYW4gZXJyb3IgbWVzc2FnZS4KKworICAgaW4oKSBhbmQgb3V0KCkgYXJlIHRoZSBjYWxsLWJhY2sgaW5wdXQgYW5kIG91dHB1dCBmdW5jdGlvbnMuICBXaGVuCisgICBpbmZsYXRlQmFjaygpIG5lZWRzIG1vcmUgaW5wdXQsIGl0IGNhbGxzIGluKCkuICBXaGVuIGluZmxhdGVCYWNrKCkgaGFzCisgICBmaWxsZWQgdGhlIHdpbmRvdyB3aXRoIG91dHB1dCwgb3Igd2hlbiBpdCBjb21wbGV0ZXMgd2l0aCBkYXRhIGluIHRoZQorICAgd2luZG93LCBpdCBjYWxscyBvdXQoKSB0byB3cml0ZSBvdXQgdGhlIGRhdGEuICBUaGUgYXBwbGljYXRpb24gbXVzdCBub3QKKyAgIGNoYW5nZSB0aGUgcHJvdmlkZWQgaW5wdXQgdW50aWwgaW4oKSBpcyBjYWxsZWQgYWdhaW4gb3IgaW5mbGF0ZUJhY2soKQorICAgcmV0dXJucy4gIFRoZSBhcHBsaWNhdGlvbiBtdXN0IG5vdCBjaGFuZ2UgdGhlIHdpbmRvdy9vdXRwdXQgYnVmZmVyIHVudGlsCisgICBpbmZsYXRlQmFjaygpIHJldHVybnMuCisKKyAgIGluKCkgYW5kIG91dCgpIGFyZSBjYWxsZWQgd2l0aCBhIGRlc2NyaXB0b3IgcGFyYW1ldGVyIHByb3ZpZGVkIGluIHRoZQorICAgaW5mbGF0ZUJhY2soKSBjYWxsLiAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgc3RydWN0dXJlIHRoYXQgcHJvdmlkZXMgdGhlCisgICBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBkbyB0aGUgcmVhZCBvciB3cml0ZSwgYXMgd2VsbCBhcyBhY2N1bXVsYXRlZAorICAgaW5mb3JtYXRpb24gb24gdGhlIGlucHV0IGFuZCBvdXRwdXQgc3VjaCBhcyB0b3RhbHMgYW5kIGNoZWNrIHZhbHVlcy4KKworICAgaW4oKSBzaG91bGQgcmV0dXJuIHplcm8gb24gZmFpbHVyZS4gIG91dCgpIHNob3VsZCByZXR1cm4gbm9uLXplcm8gb24KKyAgIGZhaWx1cmUuICBJZiBlaXRoZXIgaW4oKSBvciBvdXQoKSBmYWlscywgdGhhbiBpbmZsYXRlQmFjaygpIHJldHVybnMgYQorICAgWl9CVUZfRVJST1IuICBzdHJtLT5uZXh0X2luIGNhbiBiZSBjaGVja2VkIGZvciBaX05VTEwgdG8gc2VlIHdoZXRoZXIgaXQKKyAgIHdhcyBpbigpIG9yIG91dCgpIHRoYXQgY2F1c2VkIGluIHRoZSBlcnJvci4gIE90aGVyd2lzZSwgIGluZmxhdGVCYWNrKCkKKyAgIHJldHVybnMgWl9TVFJFQU1fRU5EIG9uIHN1Y2Nlc3MsIFpfREFUQV9FUlJPUiBmb3IgYW4gZGVmbGF0ZSBmb3JtYXQKKyAgIGVycm9yLCBvciBaX01FTV9FUlJPUiBpZiBpdCBjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgc3RhdGUuCisgICBpbmZsYXRlQmFjaygpIGNhbiBhbHNvIHJldHVybiBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgaW5wdXQgcGFyYW1ldGVycworICAgYXJlIG5vdCBjb3JyZWN0LCBpLmUuIHN0cm0gaXMgWl9OVUxMIG9yIHRoZSBzdGF0ZSB3YXMgbm90IGluaXRpYWxpemVkLgorICovCitpbnQgWkVYUE9SVCBpbmZsYXRlQmFjaygKK3pfc3RyZWFtcCBzdHJtLAoraW5fZnVuYyBpbiwKK3ZvaWQgRkFSICppbl9kZXNjLAorb3V0X2Z1bmMgb3V0LAordm9pZCBGQVIgKm91dF9kZXNjKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqbmV4dDsgICAgLyogbmV4dCBpbnB1dCAqLworICAgIHVuc2lnbmVkIGNoYXIgRkFSICpwdXQ7ICAgICAvKiBuZXh0IG91dHB1dCAqLworICAgIHVuc2lnbmVkIGhhdmUsIGxlZnQ7ICAgICAgICAvKiBhdmFpbGFibGUgaW5wdXQgYW5kIG91dHB1dCAqLworICAgIHVuc2lnbmVkIGxvbmcgaG9sZDsgICAgICAgICAvKiBiaXQgYnVmZmVyICovCisgICAgdW5zaWduZWQgYml0czsgICAgICAgICAgICAgIC8qIGJpdHMgaW4gYml0IGJ1ZmZlciAqLworICAgIHVuc2lnbmVkIGNvcHk7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2Ygc3RvcmVkIG9yIG1hdGNoIGJ5dGVzIHRvIGNvcHkgKi8KKyAgICB1bnNpZ25lZCBjaGFyIEZBUiAqZnJvbTsgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBieXRlcyBmcm9tICovCisgICAgY29kZSBoZXJlOyAgICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgZGVjb2RpbmcgdGFibGUgZW50cnkgKi8KKyAgICBjb2RlIGxhc3Q7ICAgICAgICAgICAgICAgICAgLyogcGFyZW50IHRhYmxlIGVudHJ5ICovCisgICAgdW5zaWduZWQgbGVuOyAgICAgICAgICAgICAgIC8qIGxlbmd0aCB0byBjb3B5IGZvciByZXBlYXRzLCBiaXRzIHRvIGRyb3AgKi8KKyAgICBpbnQgcmV0OyAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuIGNvZGUgKi8KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgb3JkZXJbMTldID0gLyogcGVybXV0YXRpb24gb2YgY29kZSBsZW5ndGhzICovCisgICAgICAgIHsxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1fTsKKworICAgIC8qIENoZWNrIHRoYXQgdGhlIHN0cm0gZXhpc3RzIGFuZCB0aGF0IHRoZSBzdGF0ZSB3YXMgaW5pdGlhbGl6ZWQgKi8KKyAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisKKyAgICAvKiBSZXNldCB0aGUgc3RhdGUgKi8KKyAgICBzdHJtLT5tc2cgPSBaX05VTEw7CisgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgIHN0YXRlLT5sYXN0ID0gMDsKKyAgICBzdGF0ZS0+d2hhdmUgPSAwOworICAgIG5leHQgPSBzdHJtLT5uZXh0X2luOworICAgIGhhdmUgPSBuZXh0ICE9IFpfTlVMTCA/IHN0cm0tPmF2YWlsX2luIDogMDsKKyAgICBob2xkID0gMDsKKyAgICBiaXRzID0gMDsKKyAgICBwdXQgPSBzdGF0ZS0+d2luZG93OworICAgIGxlZnQgPSBzdGF0ZS0+d3NpemU7CisKKyAgICAvKiBJbmZsYXRlIHVudGlsIGVuZCBvZiBibG9jayBtYXJrZWQgYXMgbGFzdCAqLworICAgIGZvciAoOzspCisgICAgICAgIHN3aXRjaCAoc3RhdGUtPm1vZGUpIHsKKyAgICAgICAgY2FzZSBUWVBFOgorICAgICAgICAgICAgLyogZGV0ZXJtaW5lIGFuZCBkaXNwYXRjaCBibG9jayB0eXBlICovCisgICAgICAgICAgICBpZiAoc3RhdGUtPmxhc3QpIHsKKyAgICAgICAgICAgICAgICBCWVRFQklUUygpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gRE9ORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE5FRURCSVRTKDMpOworICAgICAgICAgICAgc3RhdGUtPmxhc3QgPSBCSVRTKDEpOworICAgICAgICAgICAgRFJPUEJJVFMoMSk7CisgICAgICAgICAgICBzd2l0Y2ggKEJJVFMoMikpIHsKKyAgICAgICAgICAgIGNhc2UgMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0b3JlZCBibG9jayAqLworICAgICAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgIHN0b3JlZCBibG9jayVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxhc3QgPyAiIChsYXN0KSIgOiAiIikpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gU1RPUkVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZml4ZWQgYmxvY2sgKi8KKyAgICAgICAgICAgICAgICBmaXhlZHRhYmxlcyhzdGF0ZSk7CisgICAgICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgZml4ZWQgY29kZXMgYmxvY2slc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sYXN0ID8gIiAobGFzdCkiIDogIiIpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IExFTjsgICAgICAgICAgICAgIC8qIGRlY29kZSBjb2RlcyAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZHluYW1pYyBibG9jayAqLworICAgICAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgIGR5bmFtaWMgY29kZXMgYmxvY2slc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sYXN0ID8gIiAobGFzdCkiIDogIiIpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRBQkxFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgYmxvY2sgdHlwZSI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBEUk9QQklUUygyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU1RPUkVEOgorICAgICAgICAgICAgLyogZ2V0IGFuZCB2ZXJpZnkgc3RvcmVkIGJsb2NrIGxlbmd0aCAqLworICAgICAgICAgICAgQllURUJJVFMoKTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogZ28gdG8gYnl0ZSBib3VuZGFyeSAqLworICAgICAgICAgICAgTkVFREJJVFMoMzIpOworICAgICAgICAgICAgaWYgKChob2xkICYgMHhmZmZmKSAhPSAoKGhvbGQgPj4gMTYpIF4gMHhmZmZmKSkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA9ICh1bnNpZ25lZClob2xkICYgMHhmZmZmOworICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBzdG9yZWQgbGVuZ3RoICV1XG4iLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoKSk7CisgICAgICAgICAgICBJTklUQklUUygpOworCisgICAgICAgICAgICAvKiBjb3B5IHN0b3JlZCBibG9jayBmcm9tIGlucHV0IHRvIG91dHB1dCAqLworICAgICAgICAgICAgd2hpbGUgKHN0YXRlLT5sZW5ndGggIT0gMCkgeworICAgICAgICAgICAgICAgIGNvcHkgPSBzdGF0ZS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIFBVTEwoKTsKKyAgICAgICAgICAgICAgICBST09NKCk7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPiBoYXZlKSBjb3B5ID0gaGF2ZTsKKyAgICAgICAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIGNvcHkgPSBsZWZ0OworICAgICAgICAgICAgICAgIHptZW1jcHkocHV0LCBuZXh0LCBjb3B5KTsKKyAgICAgICAgICAgICAgICBoYXZlIC09IGNvcHk7CisgICAgICAgICAgICAgICAgbmV4dCArPSBjb3B5OworICAgICAgICAgICAgICAgIGxlZnQgLT0gY29weTsKKyAgICAgICAgICAgICAgICBwdXQgKz0gY29weTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoIC09IGNvcHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIHN0b3JlZCBlbmRcbiIpKTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gVFlQRTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVEFCTEU6CisgICAgICAgICAgICAvKiBnZXQgZHluYW1pYyB0YWJsZSBlbnRyaWVzIGRlc2NyaXB0b3IgKi8KKyAgICAgICAgICAgIE5FRURCSVRTKDE0KTsKKyAgICAgICAgICAgIHN0YXRlLT5ubGVuID0gQklUUyg1KSArIDI1NzsKKyAgICAgICAgICAgIERST1BCSVRTKDUpOworICAgICAgICAgICAgc3RhdGUtPm5kaXN0ID0gQklUUyg1KSArIDE7CisgICAgICAgICAgICBEUk9QQklUUyg1KTsKKyAgICAgICAgICAgIHN0YXRlLT5uY29kZSA9IEJJVFMoNCkgKyA0OworICAgICAgICAgICAgRFJPUEJJVFMoNCk7CisjaWZuZGVmIFBLWklQX0JVR19XT1JLQVJPVU5ECisgICAgICAgICAgICBpZiAoc3RhdGUtPm5sZW4gPiAyODYgfHwgc3RhdGUtPm5kaXN0ID4gMzApIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgdGFibGUgc2l6ZXMgb2tcbiIpKTsKKworICAgICAgICAgICAgLyogZ2V0IGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3RocyAobm90IGEgdHlwbykgKi8KKyAgICAgICAgICAgIHN0YXRlLT5oYXZlID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChzdGF0ZS0+aGF2ZSA8IHN0YXRlLT5uY29kZSkgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKDMpOworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5zW29yZGVyW3N0YXRlLT5oYXZlKytdXSA9ICh1bnNpZ25lZCBzaG9ydClCSVRTKDMpOworICAgICAgICAgICAgICAgIERST1BCSVRTKDMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKHN0YXRlLT5oYXZlIDwgMTkpCisgICAgICAgICAgICAgICAgc3RhdGUtPmxlbnNbb3JkZXJbc3RhdGUtPmhhdmUrK11dID0gMDsKKyAgICAgICAgICAgIHN0YXRlLT5uZXh0ID0gc3RhdGUtPmNvZGVzOworICAgICAgICAgICAgc3RhdGUtPmxlbmNvZGUgPSAoY29kZSBjb25zdCBGQVIgKikoc3RhdGUtPm5leHQpOworICAgICAgICAgICAgc3RhdGUtPmxlbmJpdHMgPSA3OworICAgICAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShDT0RFUywgc3RhdGUtPmxlbnMsIDE5LCAmKHN0YXRlLT5uZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+bGVuYml0cyksIHN0YXRlLT53b3JrKTsKKyAgICAgICAgICAgIGlmIChyZXQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBjb2RlIGxlbmd0aHMgb2tcbiIpKTsKKworICAgICAgICAgICAgLyogZ2V0IGxlbmd0aCBhbmQgZGlzdGFuY2UgY29kZSBjb2RlIGxlbmd0aHMgKi8KKyAgICAgICAgICAgIHN0YXRlLT5oYXZlID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChzdGF0ZS0+aGF2ZSA8IHN0YXRlLT5ubGVuICsgc3RhdGUtPm5kaXN0KSB7CisgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICBoZXJlID0gc3RhdGUtPmxlbmNvZGVbQklUUyhzdGF0ZS0+bGVuYml0cyldOworICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKShoZXJlLmJpdHMpIDw9IGJpdHMpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBQVUxMQllURSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaGVyZS52YWwgPCAxNikgeworICAgICAgICAgICAgICAgICAgICBEUk9QQklUUyhoZXJlLmJpdHMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuc1tzdGF0ZS0+aGF2ZSsrXSA9IGhlcmUudmFsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhlcmUudmFsID09IDE2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBORUVEQklUUyhoZXJlLmJpdHMgKyAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmhhdmUgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKHVuc2lnbmVkKShzdGF0ZS0+bGVuc1tzdGF0ZS0+aGF2ZSAtIDFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgPSAzICsgQklUUygyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKDIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGhlcmUudmFsID09IDE3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBORUVEQklUUyhoZXJlLmJpdHMgKyAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IDMgKyBCSVRTKDMpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoMyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBORUVEQklUUyhoZXJlLmJpdHMgKyA3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IDExICsgQklUUyg3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKDcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+aGF2ZSArIGNvcHkgPiBzdGF0ZS0+bmxlbiArIHN0YXRlLT5uZGlzdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCI7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChjb3B5LS0pCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuc1tzdGF0ZS0+aGF2ZSsrXSA9ICh1bnNpZ25lZCBzaG9ydClsZW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBoYW5kbGUgZXJyb3IgYnJlYWtzIGluIHdoaWxlICovCisgICAgICAgICAgICBpZiAoc3RhdGUtPm1vZGUgPT0gQkFEKSBicmVhazsKKworICAgICAgICAgICAgLyogY2hlY2sgZm9yIGVuZC1vZi1ibG9jayBjb2RlIChiZXR0ZXIgaGF2ZSBvbmUpICovCisgICAgICAgICAgICBpZiAoc3RhdGUtPmxlbnNbMjU2XSA9PSAwKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogYnVpbGQgY29kZSB0YWJsZXMgLS0gbm90ZTogZG8gbm90IGNoYW5nZSB0aGUgbGVuYml0cyBvciBkaXN0Yml0cworICAgICAgICAgICAgICAgdmFsdWVzIGhlcmUgKDkgYW5kIDYpIHdpdGhvdXQgcmVhZGluZyB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaAorICAgICAgICAgICAgICAgY29uY2VybmluZyB0aGUgRU5PVUdIIGNvbnN0YW50cywgd2hpY2ggZGVwZW5kIG9uIHRob3NlIHZhbHVlcyAqLworICAgICAgICAgICAgc3RhdGUtPm5leHQgPSBzdGF0ZS0+Y29kZXM7CisgICAgICAgICAgICBzdGF0ZS0+bGVuY29kZSA9IChjb2RlIGNvbnN0IEZBUiAqKShzdGF0ZS0+bmV4dCk7CisgICAgICAgICAgICBzdGF0ZS0+bGVuYml0cyA9IDk7CisgICAgICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKExFTlMsIHN0YXRlLT5sZW5zLCBzdGF0ZS0+bmxlbiwgJihzdGF0ZS0+bmV4dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoc3RhdGUtPmxlbmJpdHMpLCBzdGF0ZS0+d29yayk7CisgICAgICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0IjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5kaXN0Y29kZSA9IChjb2RlIGNvbnN0IEZBUiAqKShzdGF0ZS0+bmV4dCk7CisgICAgICAgICAgICBzdGF0ZS0+ZGlzdGJpdHMgPSA2OworICAgICAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUtPmxlbnMgKyBzdGF0ZS0+bmxlbiwgc3RhdGUtPm5kaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoc3RhdGUtPm5leHQpLCAmKHN0YXRlLT5kaXN0Yml0cyksIHN0YXRlLT53b3JrKTsKKyAgICAgICAgICAgIGlmIChyZXQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlcyBzZXQiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBjb2RlcyBva1xuIikpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU47CisKKyAgICAgICAgY2FzZSBMRU46CisgICAgICAgICAgICAvKiB1c2UgaW5mbGF0ZV9mYXN0KCkgaWYgd2UgaGF2ZSBlbm91Z2ggaW5wdXQgYW5kIG91dHB1dCAqLworICAgICAgICAgICAgaWYgKGhhdmUgPj0gNiAmJiBsZWZ0ID49IDI1OCkgeworICAgICAgICAgICAgICAgIFJFU1RPUkUoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPndoYXZlIDwgc3RhdGUtPndzaXplKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+d2hhdmUgPSBzdGF0ZS0+d3NpemUgLSBsZWZ0OworICAgICAgICAgICAgICAgIGluZmxhdGVfZmFzdChzdHJtLCBzdGF0ZS0+d3NpemUpOworICAgICAgICAgICAgICAgIExPQUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogZ2V0IGEgbGl0ZXJhbCwgbGVuZ3RoLCBvciBlbmQtb2YtYmxvY2sgY29kZSAqLworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS0+bGVuY29kZVtCSVRTKHN0YXRlLT5sZW5iaXRzKV07CisgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCkoaGVyZS5iaXRzKSA8PSBiaXRzKSBicmVhazsKKyAgICAgICAgICAgICAgICBQVUxMQllURSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGhlcmUub3AgJiYgKGhlcmUub3AgJiAweGYwKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbGFzdCA9IGhlcmU7CisgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICBoZXJlID0gc3RhdGUtPmxlbmNvZGVbbGFzdC52YWwgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApID4+IGxhc3QuYml0cyldOworICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKShsYXN0LmJpdHMgKyBoZXJlLmJpdHMpIDw9IGJpdHMpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBQVUxMQllURSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBEUk9QQklUUyhsYXN0LmJpdHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRFJPUEJJVFMoaGVyZS5iaXRzKTsKKyAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggPSAodW5zaWduZWQpaGVyZS52YWw7CisKKyAgICAgICAgICAgIC8qIHByb2Nlc3MgbGl0ZXJhbCAqLworICAgICAgICAgICAgaWYgKGhlcmUub3AgPT0gMCkgeworICAgICAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgPworICAgICAgICAgICAgICAgICAgICAgICAgImluZmxhdGU6ICAgICAgICAgbGl0ZXJhbCAnJWMnXG4iIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XG4iLCBoZXJlLnZhbCkpOworICAgICAgICAgICAgICAgIFJPT00oKTsKKyAgICAgICAgICAgICAgICAqcHV0KysgPSAodW5zaWduZWQgY2hhcikoc3RhdGUtPmxlbmd0aCk7CisgICAgICAgICAgICAgICAgbGVmdC0tOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTEVOOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBwcm9jZXNzIGVuZCBvZiBibG9jayAqLworICAgICAgICAgICAgaWYgKGhlcmUub3AgJiAzMikgeworICAgICAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgZW5kIG9mIGJsb2NrXG4iKSk7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBpbnZhbGlkIGNvZGUgKi8KKyAgICAgICAgICAgIGlmIChoZXJlLm9wICYgNjQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBsZW5ndGggY29kZSAtLSBnZXQgZXh0cmEgYml0cywgaWYgYW55ICovCisgICAgICAgICAgICBzdGF0ZS0+ZXh0cmEgPSAodW5zaWduZWQpKGhlcmUub3ApICYgMTU7CisgICAgICAgICAgICBpZiAoc3RhdGUtPmV4dHJhICE9IDApIHsKKyAgICAgICAgICAgICAgICBORUVEQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggKz0gQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgICAgIERST1BCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGxlbmd0aCAldVxuIiwgc3RhdGUtPmxlbmd0aCkpOworCisgICAgICAgICAgICAvKiBnZXQgZGlzdGFuY2UgY29kZSAqLworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS0+ZGlzdGNvZGVbQklUUyhzdGF0ZS0+ZGlzdGJpdHMpXTsKKyAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKShoZXJlLmJpdHMpIDw9IGJpdHMpIGJyZWFrOworICAgICAgICAgICAgICAgIFBVTExCWVRFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGhlcmUub3AgJiAweGYwKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbGFzdCA9IGhlcmU7CisgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICBoZXJlID0gc3RhdGUtPmRpc3Rjb2RlW2xhc3QudmFsICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQklUUyhsYXN0LmJpdHMgKyBsYXN0Lm9wKSA+PiBsYXN0LmJpdHMpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCkobGFzdC5iaXRzICsgaGVyZS5iaXRzKSA8PSBiaXRzKSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgUFVMTEJZVEUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgRFJPUEJJVFMobGFzdC5iaXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICBpZiAoaGVyZS5vcCAmIDY0KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBkaXN0YW5jZSBjb2RlIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5vZmZzZXQgPSAodW5zaWduZWQpaGVyZS52YWw7CisKKyAgICAgICAgICAgIC8qIGdldCBkaXN0YW5jZSBleHRyYSBiaXRzLCBpZiBhbnkgKi8KKyAgICAgICAgICAgIHN0YXRlLT5leHRyYSA9ICh1bnNpZ25lZCkoaGVyZS5vcCkgJiAxNTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZXh0cmEgIT0gMCkgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICAgICAgc3RhdGUtPm9mZnNldCArPSBCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICAgICAgRFJPUEJJVFMoc3RhdGUtPmV4dHJhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+b2Zmc2V0ID4gc3RhdGUtPndzaXplIC0gKHN0YXRlLT53aGF2ZSA8IHN0YXRlLT53c2l6ZSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0IDogMCkpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGRpc3RhbmNlICV1XG4iLCBzdGF0ZS0+b2Zmc2V0KSk7CisKKyAgICAgICAgICAgIC8qIGNvcHkgbWF0Y2ggZnJvbSB3aW5kb3cgdG8gb3V0cHV0ICovCisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgUk9PTSgpOworICAgICAgICAgICAgICAgIGNvcHkgPSBzdGF0ZS0+d3NpemUgLSBzdGF0ZS0+b2Zmc2V0OworICAgICAgICAgICAgICAgIGlmIChjb3B5IDwgbGVmdCkgeworICAgICAgICAgICAgICAgICAgICBmcm9tID0gcHV0ICsgY29weTsKKyAgICAgICAgICAgICAgICAgICAgY29weSA9IGxlZnQgLSBjb3B5OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHB1dCAtIHN0YXRlLT5vZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGNvcHkgPSBsZWZ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLT5sZW5ndGgpIGNvcHkgPSBzdGF0ZS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggLT0gY29weTsKKyAgICAgICAgICAgICAgICBsZWZ0IC09IGNvcHk7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAqcHV0KysgPSAqZnJvbSsrOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tY29weSk7CisgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZS0+bGVuZ3RoICE9IDApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBET05FOgorICAgICAgICAgICAgLyogaW5mbGF0ZSBzdHJlYW0gdGVybWluYXRlZCBwcm9wZXJseSAtLSB3cml0ZSBsZWZ0b3ZlciBvdXRwdXQgKi8KKyAgICAgICAgICAgIHJldCA9IFpfU1RSRUFNX0VORDsKKyAgICAgICAgICAgIGlmIChsZWZ0IDwgc3RhdGUtPndzaXplKSB7CisgICAgICAgICAgICAgICAgaWYgKG91dChvdXRfZGVzYywgc3RhdGUtPndpbmRvdywgc3RhdGUtPndzaXplIC0gbGVmdCkpCisgICAgICAgICAgICAgICAgICAgIHJldCA9IFpfQlVGX0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ290byBpbmZfbGVhdmU7CisKKyAgICAgICAgY2FzZSBCQUQ6CisgICAgICAgICAgICByZXQgPSBaX0RBVEFfRVJST1I7CisgICAgICAgICAgICBnb3RvIGluZl9sZWF2ZTsKKworICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAvKiBjYW4ndCBoYXBwZW4sIGJ1dCBtYWtlcyBjb21waWxlcnMgaGFwcHkgKi8KKyAgICAgICAgICAgIHJldCA9IFpfU1RSRUFNX0VSUk9SOworICAgICAgICAgICAgZ290byBpbmZfbGVhdmU7CisgICAgICAgIH0KKworICAgIC8qIFJldHVybiB1bnVzZWQgaW5wdXQgKi8KKyAgaW5mX2xlYXZlOgorICAgIHN0cm0tPm5leHRfaW4gPSBuZXh0OworICAgIHN0cm0tPmF2YWlsX2luID0gaGF2ZTsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgWkVYUE9SVCBpbmZsYXRlQmFja0VuZCgKK3pfc3RyZWFtcCBzdHJtKQoreworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwgfHwgc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgWkZSRUUoc3RybSwgc3RybS0+c3RhdGUpOworICAgIHN0cm0tPnN0YXRlID0gWl9OVUxMOworICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogZW5kXG4iKSk7CisgICAgcmV0dXJuIFpfT0s7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2Z4X3psaWJfaW5mZmFzdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2luZmZhc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmNmZmFlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2luZmZhc3QuYwpAQCAtMCwwICsxLDM0MCBAQAorLyogaW5mZmFzdC5jIC0tIGZhc3QgZGVjb2RpbmcKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA4LCAyMDEwLCAyMDEzIE1hcmsgQWRsZXIKKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAqLworCisjaW5jbHVkZSAienV0aWwuaCIKKyNpbmNsdWRlICJpbmZ0cmVlcy5oIgorI2luY2x1ZGUgImluZmxhdGUuaCIKKyNpbmNsdWRlICJpbmZmYXN0LmgiCisKKyNpZm5kZWYgQVNNSU5GCisKKy8qIEFsbG93IG1hY2hpbmUgZGVwZW5kZW50IG9wdGltaXphdGlvbiBmb3IgcG9zdC1pbmNyZW1lbnQgb3IgcHJlLWluY3JlbWVudC4KKyAgIEJhc2VkIG9uIHRlc3RpbmcgdG8gZGF0ZSwKKyAgIFByZS1pbmNyZW1lbnQgcHJlZmVycmVkIGZvcjoKKyAgIC0gUG93ZXJQQyBHMyAoQWRsZXIpCisgICAtIE1JUFMgUjUwMDAgKFJhbmRlcnMtUGVocnNvbikKKyAgIFBvc3QtaW5jcmVtZW50IHByZWZlcnJlZCBmb3I6CisgICAtIG5vbmUKKyAgIE5vIG1lYXN1cmFibGUgZGlmZmVyZW5jZToKKyAgIC0gUGVudGl1bSBJSUkgKEFuZGVyc29uKQorICAgLSBNNjgwNjAgKE5pa2wpCisgKi8KKyNpZmRlZiBQT1NUSU5DCisjICBkZWZpbmUgT0ZGIDAKKyMgIGRlZmluZSBQVVAoYSkgKihhKSsrCisjZWxzZQorIyAgZGVmaW5lIE9GRiAxCisjICBkZWZpbmUgUFVQKGEpICorKyhhKQorI2VuZGlmCisKKy8qCisgICBEZWNvZGUgbGl0ZXJhbCwgbGVuZ3RoLCBhbmQgZGlzdGFuY2UgY29kZXMgYW5kIHdyaXRlIG91dCB0aGUgcmVzdWx0aW5nCisgICBsaXRlcmFsIGFuZCBtYXRjaCBieXRlcyB1bnRpbCBlaXRoZXIgbm90IGVub3VnaCBpbnB1dCBvciBvdXRwdXQgaXMKKyAgIGF2YWlsYWJsZSwgYW4gZW5kLW9mLWJsb2NrIGlzIGVuY291bnRlcmVkLCBvciBhIGRhdGEgZXJyb3IgaXMgZW5jb3VudGVyZWQuCisgICBXaGVuIGxhcmdlIGVub3VnaCBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgYXJlIHN1cHBsaWVkIHRvIGluZmxhdGUoKSwgZm9yCisgICBleGFtcGxlLCBhIDE2SyBpbnB1dCBidWZmZXIgYW5kIGEgNjRLIG91dHB1dCBidWZmZXIsIG1vcmUgdGhhbiA5NSUgb2YgdGhlCisgICBpbmZsYXRlIGV4ZWN1dGlvbiB0aW1lIGlzIHNwZW50IGluIHRoaXMgcm91dGluZS4KKworICAgRW50cnkgYXNzdW1wdGlvbnM6CisKKyAgICAgICAgc3RhdGUtPm1vZGUgPT0gTEVOCisgICAgICAgIHN0cm0tPmF2YWlsX2luID49IDYKKyAgICAgICAgc3RybS0+YXZhaWxfb3V0ID49IDI1OAorICAgICAgICBzdGFydCA+PSBzdHJtLT5hdmFpbF9vdXQKKyAgICAgICAgc3RhdGUtPmJpdHMgPCA4CisKKyAgIE9uIHJldHVybiwgc3RhdGUtPm1vZGUgaXMgb25lIG9mOgorCisgICAgICAgIExFTiAtLSByYW4gb3V0IG9mIGVub3VnaCBvdXRwdXQgc3BhY2Ugb3IgZW5vdWdoIGF2YWlsYWJsZSBpbnB1dAorICAgICAgICBUWVBFIC0tIHJlYWNoZWQgZW5kIG9mIGJsb2NrIGNvZGUsIGluZmxhdGUoKSB0byBpbnRlcnByZXQgbmV4dCBibG9jaworICAgICAgICBCQUQgLS0gZXJyb3IgaW4gYmxvY2sgZGF0YQorCisgICBOb3RlczoKKworICAgIC0gVGhlIG1heGltdW0gaW5wdXQgYml0cyB1c2VkIGJ5IGEgbGVuZ3RoL2Rpc3RhbmNlIHBhaXIgaXMgMTUgYml0cyBmb3IgdGhlCisgICAgICBsZW5ndGggY29kZSwgNSBiaXRzIGZvciB0aGUgbGVuZ3RoIGV4dHJhLCAxNSBiaXRzIGZvciB0aGUgZGlzdGFuY2UgY29kZSwKKyAgICAgIGFuZCAxMyBiaXRzIGZvciB0aGUgZGlzdGFuY2UgZXh0cmEuICBUaGlzIHRvdGFscyA0OCBiaXRzLCBvciBzaXggYnl0ZXMuCisgICAgICBUaGVyZWZvcmUgaWYgc3RybS0+YXZhaWxfaW4gPj0gNiwgdGhlbiB0aGVyZSBpcyBlbm91Z2ggaW5wdXQgdG8gYXZvaWQKKyAgICAgIGNoZWNraW5nIGZvciBhdmFpbGFibGUgaW5wdXQgd2hpbGUgZGVjb2RpbmcuCisKKyAgICAtIFRoZSBtYXhpbXVtIGJ5dGVzIHRoYXQgYSBzaW5nbGUgbGVuZ3RoL2Rpc3RhbmNlIHBhaXIgY2FuIG91dHB1dCBpcyAyNTgKKyAgICAgIGJ5dGVzLCB3aGljaCBpcyB0aGUgbWF4aW11bSBsZW5ndGggdGhhdCBjYW4gYmUgY29kZWQuICBpbmZsYXRlX2Zhc3QoKQorICAgICAgcmVxdWlyZXMgc3RybS0+YXZhaWxfb3V0ID49IDI1OCBmb3IgZWFjaCBsb29wIHRvIGF2b2lkIGNoZWNraW5nIGZvcgorICAgICAgb3V0cHV0IHNwYWNlLgorICovCit2b2lkIFpMSUJfSU5URVJOQUwgaW5mbGF0ZV9mYXN0KAorel9zdHJlYW1wIHN0cm0sCit1bnNpZ25lZCBzdGFydCkgICAgICAgICAvKiBpbmZsYXRlKCkncyBzdGFydGluZyB2YWx1ZSBmb3Igc3RybS0+YXZhaWxfb3V0ICovCit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKyAgICB6X2NvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICppbjsgICAgICAvKiBsb2NhbCBzdHJtLT5uZXh0X2luICovCisgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqbGFzdDsgICAgLyogaGF2ZSBlbm91Z2ggaW5wdXQgd2hpbGUgaW4gPCBsYXN0ICovCisgICAgdW5zaWduZWQgY2hhciBGQVIgKm91dDsgICAgIC8qIGxvY2FsIHN0cm0tPm5leHRfb3V0ICovCisgICAgdW5zaWduZWQgY2hhciBGQVIgKmJlZzsgICAgIC8qIGluZmxhdGUoKSdzIGluaXRpYWwgc3RybS0+bmV4dF9vdXQgKi8KKyAgICB1bnNpZ25lZCBjaGFyIEZBUiAqZW5kOyAgICAgLyogd2hpbGUgb3V0IDwgZW5kLCBlbm91Z2ggc3BhY2UgYXZhaWxhYmxlICovCisjaWZkZWYgSU5GTEFURV9TVFJJQ1QKKyAgICB1bnNpZ25lZCBkbWF4OyAgICAgICAgICAgICAgLyogbWF4aW11bSBkaXN0YW5jZSBmcm9tIHpsaWIgaGVhZGVyICovCisjZW5kaWYKKyAgICB1bnNpZ25lZCB3c2l6ZTsgICAgICAgICAgICAgLyogd2luZG93IHNpemUgb3IgemVybyBpZiBub3QgdXNpbmcgd2luZG93ICovCisgICAgdW5zaWduZWQgd2hhdmU7ICAgICAgICAgICAgIC8qIHZhbGlkIGJ5dGVzIGluIHRoZSB3aW5kb3cgKi8KKyAgICB1bnNpZ25lZCB3bmV4dDsgICAgICAgICAgICAgLyogd2luZG93IHdyaXRlIGluZGV4ICovCisgICAgdW5zaWduZWQgY2hhciBGQVIgKndpbmRvdzsgIC8qIGFsbG9jYXRlZCBzbGlkaW5nIHdpbmRvdywgaWYgd3NpemUgIT0gMCAqLworICAgIHVuc2lnbmVkIGxvbmcgaG9sZDsgICAgICAgICAvKiBsb2NhbCBzdHJtLT5ob2xkICovCisgICAgdW5zaWduZWQgYml0czsgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0tPmJpdHMgKi8KKyAgICBjb2RlIGNvbnN0IEZBUiAqbGNvZGU7ICAgICAgLyogbG9jYWwgc3RybS0+bGVuY29kZSAqLworICAgIGNvZGUgY29uc3QgRkFSICpkY29kZTsgICAgICAvKiBsb2NhbCBzdHJtLT5kaXN0Y29kZSAqLworICAgIHVuc2lnbmVkIGxtYXNrOyAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBsZW5ndGggY29kZXMgKi8KKyAgICB1bnNpZ25lZCBkbWFzazsgICAgICAgICAgICAgLyogbWFzayBmb3IgZmlyc3QgbGV2ZWwgb2YgZGlzdGFuY2UgY29kZXMgKi8KKyAgICBjb2RlIGhlcmU7ICAgICAgICAgICAgICAgICAgLyogcmV0cmlldmVkIHRhYmxlIGVudHJ5ICovCisgICAgdW5zaWduZWQgb3A7ICAgICAgICAgICAgICAgIC8qIGNvZGUgYml0cywgb3BlcmF0aW9uLCBleHRyYSBiaXRzLCBvciAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgd2luZG93IHBvc2l0aW9uLCB3aW5kb3cgYnl0ZXMgdG8gY29weSAqLworICAgIHVuc2lnbmVkIGxlbjsgICAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGgsIHVudXNlZCBieXRlcyAqLworICAgIHVuc2lnbmVkIGRpc3Q7ICAgICAgICAgICAgICAvKiBtYXRjaCBkaXN0YW5jZSAqLworICAgIHVuc2lnbmVkIGNoYXIgRkFSICpmcm9tOyAgICAvKiB3aGVyZSB0byBjb3B5IG1hdGNoIGZyb20gKi8KKworICAgIC8qIGNvcHkgc3RhdGUgdG8gbG9jYWwgdmFyaWFibGVzICovCisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgaW4gPSBzdHJtLT5uZXh0X2luIC0gT0ZGOworICAgIGxhc3QgPSBpbiArIChzdHJtLT5hdmFpbF9pbiAtIDUpOworICAgIG91dCA9IHN0cm0tPm5leHRfb3V0IC0gT0ZGOworICAgIGJlZyA9IG91dCAtIChzdGFydCAtIHN0cm0tPmF2YWlsX291dCk7CisgICAgZW5kID0gb3V0ICsgKHN0cm0tPmF2YWlsX291dCAtIDI1Nyk7CisjaWZkZWYgSU5GTEFURV9TVFJJQ1QKKyAgICBkbWF4ID0gc3RhdGUtPmRtYXg7CisjZW5kaWYKKyAgICB3c2l6ZSA9IHN0YXRlLT53c2l6ZTsKKyAgICB3aGF2ZSA9IHN0YXRlLT53aGF2ZTsKKyAgICB3bmV4dCA9IHN0YXRlLT53bmV4dDsKKyAgICB3aW5kb3cgPSBzdGF0ZS0+d2luZG93OworICAgIGhvbGQgPSBzdGF0ZS0+aG9sZDsKKyAgICBiaXRzID0gc3RhdGUtPmJpdHM7CisgICAgbGNvZGUgPSBzdGF0ZS0+bGVuY29kZTsKKyAgICBkY29kZSA9IHN0YXRlLT5kaXN0Y29kZTsKKyAgICBsbWFzayA9ICgxVSA8PCBzdGF0ZS0+bGVuYml0cykgLSAxOworICAgIGRtYXNrID0gKDFVIDw8IHN0YXRlLT5kaXN0Yml0cykgLSAxOworCisgICAgLyogZGVjb2RlIGxpdGVyYWxzIGFuZCBsZW5ndGgvZGlzdGFuY2VzIHVudGlsIGVuZC1vZi1ibG9jayBvciBub3QgZW5vdWdoCisgICAgICAgaW5wdXQgZGF0YSBvciBvdXRwdXQgc3BhY2UgKi8KKyAgICBkbyB7CisgICAgICAgIGlmIChiaXRzIDwgMTUpIHsKKyAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKFBVUChpbikpIDw8IGJpdHM7CisgICAgICAgICAgICBiaXRzICs9IDg7CisgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKShQVVAoaW4pKSA8PCBiaXRzOworICAgICAgICAgICAgYml0cyArPSA4OworICAgICAgICB9CisgICAgICAgIGhlcmUgPSBsY29kZVtob2xkICYgbG1hc2tdOworICAgICAgZG9sZW46CisgICAgICAgIG9wID0gKHVuc2lnbmVkKShoZXJlLmJpdHMpOworICAgICAgICBob2xkID4+PSBvcDsKKyAgICAgICAgYml0cyAtPSBvcDsKKyAgICAgICAgb3AgPSAodW5zaWduZWQpKGhlcmUub3ApOworICAgICAgICBpZiAob3AgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGl0ZXJhbCAqLworICAgICAgICAgICAgVHJhY2V2digoc3RkZXJyLCBoZXJlLnZhbCA+PSAweDIwICYmIGhlcmUudmFsIDwgMHg3ZiA/CisgICAgICAgICAgICAgICAgICAgICJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgJyVjJ1xuIiA6CisgICAgICAgICAgICAgICAgICAgICJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XG4iLCBoZXJlLnZhbCkpOworICAgICAgICAgICAgUFVQKG91dCkgPSAodW5zaWduZWQgY2hhcikoaGVyZS52YWwpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG9wICYgMTYpIHsgICAgICAgICAgICAgICAgICAgICAvKiBsZW5ndGggYmFzZSAqLworICAgICAgICAgICAgbGVuID0gKHVuc2lnbmVkKShoZXJlLnZhbCk7CisgICAgICAgICAgICBvcCAmPSAxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqLworICAgICAgICAgICAgaWYgKG9wKSB7CisgICAgICAgICAgICAgICAgaWYgKGJpdHMgPCBvcCkgeworICAgICAgICAgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKShQVVAoaW4pKSA8PCBiaXRzOworICAgICAgICAgICAgICAgICAgICBiaXRzICs9IDg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxlbiArPSAodW5zaWduZWQpaG9sZCAmICgoMVUgPDwgb3ApIC0gMSk7CisgICAgICAgICAgICAgICAgaG9sZCA+Pj0gb3A7CisgICAgICAgICAgICAgICAgYml0cyAtPSBvcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgbGVuZ3RoICV1XG4iLCBsZW4pKTsKKyAgICAgICAgICAgIGlmIChiaXRzIDwgMTUpIHsKKyAgICAgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKShQVVAoaW4pKSA8PCBiaXRzOworICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKKyAgICAgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKShQVVAoaW4pKSA8PCBiaXRzOworICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGhlcmUgPSBkY29kZVtob2xkICYgZG1hc2tdOworICAgICAgICAgIGRvZGlzdDoKKyAgICAgICAgICAgIG9wID0gKHVuc2lnbmVkKShoZXJlLmJpdHMpOworICAgICAgICAgICAgaG9sZCA+Pj0gb3A7CisgICAgICAgICAgICBiaXRzIC09IG9wOworICAgICAgICAgICAgb3AgPSAodW5zaWduZWQpKGhlcmUub3ApOworICAgICAgICAgICAgaWYgKG9wICYgMTYpIHsgICAgICAgICAgICAgICAgICAgICAgLyogZGlzdGFuY2UgYmFzZSAqLworICAgICAgICAgICAgICAgIGRpc3QgPSAodW5zaWduZWQpKGhlcmUudmFsKTsKKyAgICAgICAgICAgICAgICBvcCAmPSAxNTsgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzICovCisgICAgICAgICAgICAgICAgaWYgKGJpdHMgPCBvcCkgeworICAgICAgICAgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKShQVVAoaW4pKSA8PCBiaXRzOworICAgICAgICAgICAgICAgICAgICBiaXRzICs9IDg7CisgICAgICAgICAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKFBVUChpbikpIDw8IGJpdHM7CisgICAgICAgICAgICAgICAgICAgICAgICBiaXRzICs9IDg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGlzdCArPSAodW5zaWduZWQpaG9sZCAmICgoMVUgPDwgb3ApIC0gMSk7CisjaWZkZWYgSU5GTEFURV9TVFJJQ1QKKyAgICAgICAgICAgICAgICBpZiAoZGlzdCA+IGRtYXgpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAgICAgaG9sZCA+Pj0gb3A7CisgICAgICAgICAgICAgICAgYml0cyAtPSBvcDsKKyAgICAgICAgICAgICAgICBUcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGRpc3RhbmNlICV1XG4iLCBkaXN0KSk7CisgICAgICAgICAgICAgICAgb3AgPSAodW5zaWduZWQpKG91dCAtIGJlZyk7ICAgICAvKiBtYXggZGlzdGFuY2UgaW4gb3V0cHV0ICovCisgICAgICAgICAgICAgICAgaWYgKGRpc3QgPiBvcCkgeyAgICAgICAgICAgICAgICAvKiBzZWUgaWYgY29weSBmcm9tIHdpbmRvdyAqLworICAgICAgICAgICAgICAgICAgICBvcCA9IGRpc3QgLSBvcDsgICAgICAgICAgICAgLyogZGlzdGFuY2UgYmFjayBpbiB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wID4gd2hhdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+c2FuZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyNpZmRlZiBJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFOQ0VfVE9PRkFSX0FSUlIKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPD0gb3AgLSB3aGF2ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcCAtIHdoYXZlOworICAgICAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3AgPiB3aGF2ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBvdXQgLSBkaXN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHdpbmRvdyAtIE9GRjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHduZXh0ID09IDApIHsgICAgICAgICAgIC8qIHZlcnkgY29tbW9uIGNhc2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gKz0gd3NpemUgLSBvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcCA8IGxlbikgeyAgICAgICAgIC8qIHNvbWUgZnJvbSB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh3bmV4dCA8IG9wKSB7ICAgICAgLyogd3JhcCBhcm91bmQgd2luZG93ICovCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplICsgd25leHQgLSBvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wIC09IHduZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIGVuZCBvZiB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gd2luZG93IC0gT0ZGOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3bmV4dCA8IGxlbikgeyAgLyogc29tZSBmcm9tIHN0YXJ0IG9mIHdpbmRvdyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IHduZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IG91dCAtIGRpc3Q7ICAgICAgLyogcmVzdCBmcm9tIG91dHB1dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgLyogY29udGlndW91cyBpbiB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gKz0gd25leHQgLSBvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcCA8IGxlbikgeyAgICAgICAgIC8qIHNvbWUgZnJvbSB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IDM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA9IG91dCAtIGRpc3Q7ICAgICAgICAgIC8qIGNvcHkgZGlyZWN0IGZyb20gb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW5pbXVtIGxlbmd0aCBpcyB0aHJlZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IDM7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGxlbiA+IDIpOworICAgICAgICAgICAgICAgICAgICBpZiAobGVuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoKG9wICYgNjQpID09IDApIHsgICAgICAgICAgLyogMm5kIGxldmVsIGRpc3RhbmNlIGNvZGUgKi8KKyAgICAgICAgICAgICAgICBoZXJlID0gZGNvZGVbaGVyZS52YWwgKyAoaG9sZCAmICgoMVUgPDwgb3ApIC0gMSkpXTsKKyAgICAgICAgICAgICAgICBnb3RvIGRvZGlzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgZGlzdGFuY2UgY29kZSI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKG9wICYgNjQpID09IDApIHsgICAgICAgICAgICAgIC8qIDJuZCBsZXZlbCBsZW5ndGggY29kZSAqLworICAgICAgICAgICAgaGVyZSA9IGxjb2RlW2hlcmUudmFsICsgKGhvbGQgJiAoKDFVIDw8IG9wKSAtIDEpKV07CisgICAgICAgICAgICBnb3RvIGRvbGVuOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG9wICYgMzIpIHsgICAgICAgICAgICAgICAgICAgICAvKiBlbmQtb2YtYmxvY2sgKi8KKyAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgZW5kIG9mIGJsb2NrXG4iKSk7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRZUEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSI7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSB3aGlsZSAoaW4gPCBsYXN0ICYmIG91dCA8IGVuZCk7CisKKyAgICAvKiByZXR1cm4gdW51c2VkIGJ5dGVzIChvbiBlbnRyeSwgYml0cyA8IDgsIHNvIGluIHdvbid0IGdvIHRvbyBmYXIgYmFjaykgKi8KKyAgICBsZW4gPSBiaXRzID4+IDM7CisgICAgaW4gLT0gbGVuOworICAgIGJpdHMgLT0gbGVuIDw8IDM7CisgICAgaG9sZCAmPSAoMVUgPDwgYml0cykgLSAxOworCisgICAgLyogdXBkYXRlIHN0YXRlIGFuZCByZXR1cm4gKi8KKyAgICBzdHJtLT5uZXh0X2luID0gaW4gKyBPRkY7CisgICAgc3RybS0+bmV4dF9vdXQgPSBvdXQgKyBPRkY7CisgICAgc3RybS0+YXZhaWxfaW4gPSAodW5zaWduZWQpKGluIDwgbGFzdCA/IDUgKyAobGFzdCAtIGluKSA6IDUgLSAoaW4gLSBsYXN0KSk7CisgICAgc3RybS0+YXZhaWxfb3V0ID0gKHVuc2lnbmVkKShvdXQgPCBlbmQgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU3ICsgKGVuZCAtIG91dCkgOiAyNTcgLSAob3V0IC0gZW5kKSk7CisgICAgc3RhdGUtPmhvbGQgPSBob2xkOworICAgIHN0YXRlLT5iaXRzID0gYml0czsKKyAgICByZXR1cm47Cit9CisKKy8qCisgICBpbmZsYXRlX2Zhc3QoKSBzcGVlZHVwcyB0aGF0IHR1cm5lZCBvdXQgc2xvd2VyIChvbiBhIFBvd2VyUEMgRzMgNzUwQ1hlKToKKyAgIC0gVXNpbmcgYml0IGZpZWxkcyBmb3IgY29kZSBzdHJ1Y3R1cmUKKyAgIC0gRGlmZmVyZW50IG9wIGRlZmluaXRpb24gdG8gYXZvaWQgJiBmb3IgZXh0cmEgYml0cyAoZG8gJiBmb3IgdGFibGUgYml0cykKKyAgIC0gVGhyZWUgc2VwYXJhdGUgZGVjb2RpbmcgZG8tbG9vcHMgZm9yIGRpcmVjdCwgd2luZG93LCBhbmQgd25leHQgPT0gMAorICAgLSBTcGVjaWFsIGNhc2UgZm9yIGRpc3RhbmNlID4gMSBjb3BpZXMgdG8gZG8gb3ZlcmxhcHBlZCBsb2FkIGFuZCBzdG9yZSBjb3B5CisgICAtIEV4cGxpY2l0IGJyYW5jaCBwcmVkaWN0aW9ucyAoYmFzZWQgb24gbWVhc3VyZWQgYnJhbmNoIHByb2JhYmlsaXRpZXMpCisgICAtIERlZmVycmluZyBtYXRjaCBjb3B5IGFuZCBpbnRlcnNwZXJzZWQgaXQgd2l0aCBkZWNvZGluZyBzdWJzZXF1ZW50IGNvZGVzCisgICAtIFN3YXBwaW5nIGxpdGVyYWwvbGVuZ3RoIGVsc2UKKyAgIC0gU3dhcHBpbmcgd2luZG93L2RpcmVjdCBlbHNlCisgICAtIExhcmdlciB1bnJvbGxlZCBjb3B5IGxvb3BzICh0aHJlZSBpcyBhYm91dCByaWdodCkKKyAgIC0gTW92aW5nIGxlbiAtPSAzIHN0YXRlbWVudCBpbnRvIG1pZGRsZSBvZiBsb29wCisgKi8KKworI2VuZGlmIC8qICFBU01JTkYgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl9pbmZsYXRlLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2Z4X3psaWJfaW5mbGF0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNWU0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2Z4X3psaWJfaW5mbGF0ZS5jCkBAIC0wLDAgKzEsMTUxMyBAQAorLyogaW5mbGF0ZS5jIC0tIHpsaWIgZGVjb21wcmVzc2lvbgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTIgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKy8qCisgKiBDaGFuZ2UgaGlzdG9yeToKKyAqCisgKiAxLjIuYmV0YTAgICAgMjQgTm92IDIwMDIKKyAqIC0gRmlyc3QgdmVyc2lvbiAtLSBjb21wbGV0ZSByZXdyaXRlIG9mIGluZmxhdGUgdG8gc2ltcGxpZnkgY29kZSwgYXZvaWQKKyAqICAgY3JlYXRpb24gb2Ygd2luZG93IHdoZW4gbm90IG5lZWRlZCwgbWluaW1pemUgdXNlIG9mIHdpbmRvdyB3aGVuIGl0IGlzCisgKiAgIG5lZWRlZCwgbWFrZSBpbmZmYXN0LmMgZXZlbiBmYXN0ZXIsIGltcGxlbWVudCBnemlwIGRlY29kaW5nLCBhbmQgdG8KKyAqICAgaW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5IGFuZCBzdHlsZSBvdmVyIHRoZSBwcmV2aW91cyB6bGliIGluZmxhdGUgY29kZQorICoKKyAqIDEuMi5iZXRhMSAgICAyNSBOb3YgMjAwMgorICogLSBVc2UgcG9pbnRlcnMgZm9yIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0IGNoZWNraW5nIGluIGluZmZhc3QuYworICogLSBSZW1vdmUgaW5wdXQgYW5kIG91dHB1dCBjb3VudGVycyBpbiBpbmZmYXN0LmMKKyAqIC0gQ2hhbmdlIGluZmZhc3QuYyBlbnRyeSBhbmQgbG9vcCBmcm9tIGF2YWlsX2luID49IDcgdG8gPj0gNgorICogLSBSZW1vdmUgdW5uZWNlc3Nhcnkgc2Vjb25kIGJ5dGUgcHVsbCBmcm9tIGxlbmd0aCBleHRyYSBpbiBpbmZmYXN0LmMKKyAqIC0gVW5yb2xsIGRpcmVjdCBjb3B5IHRvIHRocmVlIGNvcGllcyBwZXIgbG9vcCBpbiBpbmZmYXN0LmMKKyAqCisgKiAxLjIuYmV0YTIgICAgNCBEZWMgMjAwMgorICogLSBDaGFuZ2UgZXh0ZXJuYWwgcm91dGluZSBuYW1lcyB0byByZWR1Y2UgcG90ZW50aWFsIGNvbmZsaWN0cworICogLSBDb3JyZWN0IGZpbGVuYW1lIHRvIGluZmZpeGVkLmggZm9yIGZpeGVkIHRhYmxlcyBpbiBpbmZsYXRlLmMKKyAqIC0gTWFrZSBoYnVmW10gdW5zaWduZWQgY2hhciB0byBtYXRjaCBwYXJhbWV0ZXIgdHlwZSBpbiBpbmZsYXRlLmMKKyAqIC0gQ2hhbmdlIHN0cm0tPm5leHRfb3V0Wy1zdGF0ZS0+b2Zmc2V0XSB0byAqKHN0cm0tPm5leHRfb3V0IC0gc3RhdGUtPm9mZnNldCkKKyAqICAgdG8gYXZvaWQgbmVnYXRpb24gcHJvYmxlbSBvbiBBbHBoYXMgKDY0IGJpdCkgaW4gaW5mbGF0ZS5jCisgKgorICogMS4yLmJldGEzICAgIDIyIERlYyAyMDAyCisgKiAtIEFkZCBjb21tZW50cyBvbiBzdGF0ZS0+Yml0cyBhc3NlcnRpb24gaW4gaW5mZmFzdC5jCisgKiAtIEFkZCBjb21tZW50cyBvbiBvcCBmaWVsZCBpbiBpbmZ0cmVlcy5oCisgKiAtIEZpeCBidWcgaW4gcmV1c2Ugb2YgYWxsb2NhdGVkIHdpbmRvdyBhZnRlciBpbmZsYXRlUmVzZXQoKQorICogLSBSZW1vdmUgYml0IGZpZWxkcy0tYmFjayB0byBieXRlIHN0cnVjdHVyZSBmb3Igc3BlZWQKKyAqIC0gUmVtb3ZlIGRpc3RhbmNlIGV4dHJhID09IDAgY2hlY2sgaW4gaW5mbGF0ZV9mYXN0KCktLW9ubHkgaGVscHMgZm9yIGxlbmd0aHMKKyAqIC0gQ2hhbmdlIHBvc3QtaW5jcmVtZW50cyB0byBwcmUtaW5jcmVtZW50cyBpbiBpbmZsYXRlX2Zhc3QoKSwgUFBDIGJpYXNlZD8KKyAqIC0gQWRkIGNvbXBpbGUgdGltZSBvcHRpb24sIFBPU1RJTkMsIHRvIHVzZSBwb3N0LWluY3JlbWVudHMgaW5zdGVhZCAoSW50ZWw/KQorICogLSBNYWtlIE1BVENIIGNvcHkgaW4gaW5mbGF0ZSgpIG11Y2ggZmFzdGVyIGZvciB3aGVuIGluZmxhdGVfZmFzdCgpIG5vdCB1c2VkCisgKiAtIFVzZSBsb2NhbCBjb3BpZXMgb2Ygc3RyZWFtIG5leHQgYW5kIGF2YWlsIHZhbHVlcywgYXMgd2VsbCBhcyBsb2NhbCBiaXQKKyAqICAgYnVmZmVyIGFuZCBiaXQgY291bnQgaW4gaW5mbGF0ZSgpLS1mb3Igc3BlZWQgd2hlbiBpbmZsYXRlX2Zhc3QoKSBub3QgdXNlZAorICoKKyAqIDEuMi5iZXRhNCAgICAxIEphbiAyMDAzCisgKiAtIFNwbGl0IHB0ciAtIDI1NyBzdGF0ZW1lbnRzIGluIGluZmxhdGVfdGFibGUoKSB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncworICogLSBNb3ZlIGEgY29tbWVudCBvbiBvdXRwdXQgYnVmZmVyIHNpemVzIGZyb20gaW5mZmFzdC5jIHRvIGluZmxhdGUuYworICogLSBBZGQgY29tbWVudHMgaW4gaW5mZmFzdC5jIHRvIGludHJvZHVjZSB0aGUgaW5mbGF0ZV9mYXN0KCkgcm91dGluZQorICogLSBSZWFycmFuZ2Ugd2luZG93IGNvcGllcyBpbiBpbmZsYXRlX2Zhc3QoKSBmb3Igc3BlZWQgYW5kIHNpbXBsaWZpY2F0aW9uCisgKiAtIFVucm9sbCBsYXN0IGNvcHkgZm9yIHdpbmRvdyBtYXRjaCBpbiBpbmZsYXRlX2Zhc3QoKQorICogLSBVc2UgbG9jYWwgY29waWVzIG9mIHdpbmRvdyB2YXJpYWJsZXMgaW4gaW5mbGF0ZV9mYXN0KCkgZm9yIHNwZWVkCisgKiAtIFB1bGwgb3V0IGNvbW1vbiB3bmV4dCA9PSAwIGNhc2UgZm9yIHNwZWVkIGluIGluZmxhdGVfZmFzdCgpCisgKiAtIE1ha2Ugb3AgYW5kIGxlbiBpbiBpbmZsYXRlX2Zhc3QoKSB1bnNpZ25lZCBmb3IgY29uc2lzdGVuY3kKKyAqIC0gQWRkIEZBUiB0byBsY29kZSBhbmQgZGNvZGUgZGVjbGFyYXRpb25zIGluIGluZmxhdGVfZmFzdCgpCisgKiAtIFNpbXBsaWZpZWQgYmFkIGRpc3RhbmNlIGNoZWNrIGluIGluZmxhdGVfZmFzdCgpCisgKiAtIEFkZGVkIGluZmxhdGVCYWNrSW5pdCgpLCBpbmZsYXRlQmFjaygpLCBhbmQgaW5mbGF0ZUJhY2tFbmQoKSBpbiBuZXcKKyAqICAgc291cmNlIGZpbGUgaW5mYmFjay5jIHRvIHByb3ZpZGUgYSBjYWxsLWJhY2sgaW50ZXJmYWNlIHRvIGluZmxhdGUgZm9yCisgKiAgIHByb2dyYW1zIGxpa2UgZ3ppcCBhbmQgdW56aXAgLS0gdXNlcyB3aW5kb3cgYXMgb3V0cHV0IGJ1ZmZlciB0byBhdm9pZAorICogICB3aW5kb3cgY29weWluZworICoKKyAqIDEuMi5iZXRhNSAgICAxIEphbiAyMDAzCisgKiAtIEltcHJvdmVkIGluZmxhdGVCYWNrKCkgaW50ZXJmYWNlIHRvIGFsbG93IHRoZSBjYWxsZXIgdG8gcHJvdmlkZSBpbml0aWFsCisgKiAgIGlucHV0IGluIHN0cm0uCisgKiAtIEZpeGVkIHN0b3JlZCBibG9ja3MgYnVnIGluIGluZmxhdGVCYWNrKCkKKyAqCisgKiAxLjIuYmV0YTYgICAgNCBKYW4gMjAwMworICogLSBBZGRlZCBjb21tZW50cyBpbiBpbmZmYXN0LmMgb24gZWZmZWN0aXZlbmVzcyBvZiBQT1NUSU5DCisgKiAtIFR5cGVjYXN0aW5nIGFsbCBhcm91bmQgdG8gcmVkdWNlIGNvbXBpbGVyIHdhcm5pbmdzCisgKiAtIENoYW5nZWQgbG9vcHMgZnJvbSB3aGlsZSAoMSkgb3IgZG8ge30gd2hpbGUgKDEpIHRvIGZvciAoOzspLCBhZ2FpbiB0bworICogICBtYWtlIGNvbXBpbGVycyBoYXBweQorICogLSBDaGFuZ2VkIHR5cGUgb2Ygd2luZG93IGluIGluZmxhdGVCYWNrSW5pdCgpIHRvIHVuc2lnbmVkIGNoYXIgKgorICoKKyAqIDEuMi5iZXRhNyAgICAyNyBKYW4gMjAwMworICogLSBDaGFuZ2VkIG1hbnkgdHlwZXMgdG8gdW5zaWduZWQgb3IgdW5zaWduZWQgc2hvcnQgdG8gYXZvaWQgd2FybmluZ3MKKyAqIC0gQWRkZWQgaW5mbGF0ZUNvcHkoKSBmdW5jdGlvbgorICoKKyAqIDEuMi4wICAgICAgICA5IE1hciAyMDAzCisgKiAtIENoYW5nZWQgaW5mbGF0ZUJhY2soKSBpbnRlcmZhY2UgdG8gcHJvdmlkZSBzZXBhcmF0ZSBvcGFxdWUgZGVzY3JpcHRvcnMKKyAqICAgZm9yIHRoZSBpbigpIGFuZCBvdXQoKSBmdW5jdGlvbnMKKyAqIC0gQ2hhbmdlZCBpbmZsYXRlQmFjaygpIGFyZ3VtZW50IGFuZCBpbl9mdW5jIHR5cGVkZWYgdG8gc3dhcCB0aGUgbGVuZ3RoCisgKiAgIGFuZCBidWZmZXIgYWRkcmVzcyByZXR1cm4gdmFsdWVzIGZvciB0aGUgaW5wdXQgZnVuY3Rpb24KKyAqIC0gQ2hlY2sgbmV4dF9pbiBhbmQgbmV4dF9vdXQgZm9yIFpfTlVMTCBvbiBlbnRyeSB0byBpbmZsYXRlKCkKKyAqCisgKiBUaGUgaGlzdG9yeSBmb3IgdmVyc2lvbnMgYWZ0ZXIgMS4yLjAgYXJlIGluIENoYW5nZUxvZyBpbiB6bGliIGRpc3RyaWJ1dGlvbi4KKyAqLworCisjaW5jbHVkZSAienV0aWwuaCIKKyNpbmNsdWRlICJpbmZ0cmVlcy5oIgorI2luY2x1ZGUgImluZmxhdGUuaCIKKyNpbmNsdWRlICJpbmZmYXN0LmgiCisKKyNpZmRlZiBNQUtFRklYRUQKKyMgIGlmbmRlZiBCVUlMREZJWEVECisjICAgIGRlZmluZSBCVUlMREZJWEVECisjICBlbmRpZgorI2VuZGlmCisKKy8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KK2xvY2FsIHZvaWQgZml4ZWR0YWJsZXMgT0YoKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGUpKTsKK2xvY2FsIGludCB1cGRhdGV3aW5kb3cgT0YoKHpfc3RyZWFtcCBzdHJtLCBjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29weSkpOworI2lmZGVmIEJVSUxERklYRUQKKyAgIHZvaWQgbWFrZWZpeGVkIE9GKCh2b2lkKSk7CisjZW5kaWYKK2xvY2FsIHVuc2lnbmVkIHN5bmNzZWFyY2ggT0YoKHVuc2lnbmVkIEZBUiAqaGF2ZSwgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbikpOworCitpbnQgWkVYUE9SVCBpbmZsYXRlUmVzZXRLZWVwKAorel9zdHJlYW1wIHN0cm0pCit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICBzdHJtLT50b3RhbF9pbiA9IHN0cm0tPnRvdGFsX291dCA9IHN0YXRlLT50b3RhbCA9IDA7CisgICAgc3RybS0+bXNnID0gWl9OVUxMOworICAgIGlmIChzdGF0ZS0+d3JhcCkgICAgICAgIC8qIHRvIHN1cHBvcnQgaWxsLWNvbmNlaXZlZCBKYXZhIHRlc3Qgc3VpdGUgKi8KKyAgICAgICAgc3RybS0+YWRsZXIgPSBzdGF0ZS0+d3JhcCAmIDE7CisgICAgc3RhdGUtPm1vZGUgPSBIRUFEOworICAgIHN0YXRlLT5sYXN0ID0gMDsKKyAgICBzdGF0ZS0+aGF2ZWRpY3QgPSAwOworICAgIHN0YXRlLT5kbWF4ID0gMzI3NjhVOworICAgIHN0YXRlLT5oZWFkID0gWl9OVUxMOworICAgIHN0YXRlLT5ob2xkID0gMDsKKyAgICBzdGF0ZS0+Yml0cyA9IDA7CisgICAgc3RhdGUtPmxlbmNvZGUgPSBzdGF0ZS0+ZGlzdGNvZGUgPSBzdGF0ZS0+bmV4dCA9IHN0YXRlLT5jb2RlczsKKyAgICBzdGF0ZS0+c2FuZSA9IDE7CisgICAgc3RhdGUtPmJhY2sgPSAtMTsKKyAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6IHJlc2V0XG4iKSk7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKK2ludCBaRVhQT1JUIGluZmxhdGVSZXNldCgKK3pfc3RyZWFtcCBzdHJtKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisKKyAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgc3RhdGUtPndzaXplID0gMDsKKyAgICBzdGF0ZS0+d2hhdmUgPSAwOworICAgIHN0YXRlLT53bmV4dCA9IDA7CisgICAgcmV0dXJuIGluZmxhdGVSZXNldEtlZXAoc3RybSk7Cit9CisKK2ludCBaRVhQT1JUIGluZmxhdGVSZXNldDIoCit6X3N0cmVhbXAgc3RybSwKK2ludCB3aW5kb3dCaXRzKQoreworICAgIGludCB3cmFwOworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisKKyAgICAvKiBnZXQgdGhlIHN0YXRlICovCisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworCisgICAgLyogZXh0cmFjdCB3cmFwIHJlcXVlc3QgZnJvbSB3aW5kb3dCaXRzIHBhcmFtZXRlciAqLworICAgIGlmICh3aW5kb3dCaXRzIDwgMCkgeworICAgICAgICB3cmFwID0gMDsKKyAgICAgICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd3JhcCA9ICh3aW5kb3dCaXRzID4+IDQpICsgMTsKKyNpZmRlZiBHVU5aSVAKKyAgICAgICAgaWYgKHdpbmRvd0JpdHMgPCA0OCkKKyAgICAgICAgICAgIHdpbmRvd0JpdHMgJj0gMTU7CisjZW5kaWYKKyAgICB9CisKKyAgICAvKiBzZXQgbnVtYmVyIG9mIHdpbmRvdyBiaXRzLCBmcmVlIHdpbmRvdyBpZiBkaWZmZXJlbnQgKi8KKyAgICBpZiAod2luZG93Qml0cyAmJiAod2luZG93Qml0cyA8IDggfHwgd2luZG93Qml0cyA+IDE1KSkKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChzdGF0ZS0+d2luZG93ICE9IFpfTlVMTCAmJiBzdGF0ZS0+d2JpdHMgIT0gKHVuc2lnbmVkKXdpbmRvd0JpdHMpIHsKKyAgICAgICAgWkZSRUUoc3RybSwgc3RhdGUtPndpbmRvdyk7CisgICAgICAgIHN0YXRlLT53aW5kb3cgPSBaX05VTEw7CisgICAgfQorCisgICAgLyogdXBkYXRlIHN0YXRlIGFuZCByZXNldCB0aGUgcmVzdCBvZiBpdCAqLworICAgIHN0YXRlLT53cmFwID0gd3JhcDsKKyAgICBzdGF0ZS0+d2JpdHMgPSAodW5zaWduZWQpd2luZG93Qml0czsKKyAgICByZXR1cm4gaW5mbGF0ZVJlc2V0KHN0cm0pOworfQorCitpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdDJfKAorel9zdHJlYW1wIHN0cm0sCitpbnQgd2luZG93Qml0cywKK2NvbnN0IGNoYXIgKnZlcnNpb24sCitpbnQgc3RyZWFtX3NpemUpCit7CisgICAgaW50IHJldDsKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworCisgICAgaWYgKHZlcnNpb24gPT0gWl9OVUxMIHx8IHZlcnNpb25bMF0gIT0gWkxJQl9WRVJTSU9OWzBdIHx8CisgICAgICAgIHN0cmVhbV9zaXplICE9IChpbnQpKHNpemVvZih6X3N0cmVhbSkpKQorICAgICAgICByZXR1cm4gWl9WRVJTSU9OX0VSUk9SOworICAgIGlmIChzdHJtID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0cm0tPm1zZyA9IFpfTlVMTDsgICAgICAgICAgICAgICAgIC8qIGluIGNhc2Ugd2UgcmV0dXJuIGFuIGVycm9yICovCisgICAgaWYgKHN0cm0tPnphbGxvYyA9PSAoYWxsb2NfZnVuYykwKSB7CisjaWZkZWYgWl9TT0xPCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyNlbHNlCisgICAgICAgIHN0cm0tPnphbGxvYyA9IHpjYWxsb2M7CisgICAgICAgIHN0cm0tPm9wYXF1ZSA9ICh2b2lkcGYpMDsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAoc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorI2lmZGVmIFpfU09MTworICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisjZWxzZQorICAgICAgICBzdHJtLT56ZnJlZSA9IHpjZnJlZTsKKyNlbmRpZgorICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKQorICAgICAgICAgICAgWkFMTE9DKHN0cm0sIDEsIHNpemVvZihzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSkpOworICAgIGlmIChzdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX01FTV9FUlJPUjsKKyAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6IGFsbG9jYXRlZFxuIikpOworICAgIHN0cm0tPnN0YXRlID0gKHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSBGQVIgKilzdGF0ZTsKKyAgICBzdGF0ZS0+d2luZG93ID0gWl9OVUxMOworICAgIHJldCA9IGluZmxhdGVSZXNldDIoc3RybSwgd2luZG93Qml0cyk7CisgICAgaWYgKHJldCAhPSBaX09LKSB7CisgICAgICAgIFpGUkVFKHN0cm0sIHN0YXRlKTsKKyAgICAgICAgc3RybS0+c3RhdGUgPSBaX05VTEw7CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBaRVhQT1JUIGluZmxhdGVJbml0XygKK3pfc3RyZWFtcCBzdHJtLAorY29uc3QgY2hhciAqdmVyc2lvbiwKK2ludCBzdHJlYW1fc2l6ZSkKK3sKKyAgICByZXR1cm4gaW5mbGF0ZUluaXQyXyhzdHJtLCBERUZfV0JJVFMsIHZlcnNpb24sIHN0cmVhbV9zaXplKTsKK30KKworaW50IFpFWFBPUlQgaW5mbGF0ZVByaW1lKAorel9zdHJlYW1wIHN0cm0sCitpbnQgYml0cywKK2ludCB2YWx1ZSkKK3sKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworCisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgIGlmIChiaXRzIDwgMCkgeworICAgICAgICBzdGF0ZS0+aG9sZCA9IDA7CisgICAgICAgIHN0YXRlLT5iaXRzID0gMDsKKyAgICAgICAgcmV0dXJuIFpfT0s7CisgICAgfQorICAgIGlmIChiaXRzID4gMTYgfHwgc3RhdGUtPmJpdHMgKyBiaXRzID4gMzIpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICB2YWx1ZSAmPSAoMUwgPDwgYml0cykgLSAxOworICAgIHN0YXRlLT5ob2xkICs9IHZhbHVlIDw8IHN0YXRlLT5iaXRzOworICAgIHN0YXRlLT5iaXRzICs9IGJpdHM7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKKy8qCisgICBSZXR1cm4gc3RhdGUgd2l0aCBsZW5ndGggYW5kIGRpc3RhbmNlIGRlY29kaW5nIHRhYmxlcyBhbmQgaW5kZXggc2l6ZXMgc2V0IHRvCisgICBmaXhlZCBjb2RlIGRlY29kaW5nLiAgTm9ybWFsbHkgdGhpcyByZXR1cm5zIGZpeGVkIHRhYmxlcyBmcm9tIGluZmZpeGVkLmguCisgICBJZiBCVUlMREZJWEVEIGlzIGRlZmluZWQsIHRoZW4gaW5zdGVhZCB0aGlzIHJvdXRpbmUgYnVpbGRzIHRoZSB0YWJsZXMgdGhlCisgICBmaXJzdCB0aW1lIGl0J3MgY2FsbGVkLCBhbmQgcmV0dXJucyB0aG9zZSB0YWJsZXMgdGhlIGZpcnN0IHRpbWUgYW5kCisgICB0aGVyZWFmdGVyLiAgVGhpcyByZWR1Y2VzIHRoZSBzaXplIG9mIHRoZSBjb2RlIGJ5IGFib3V0IDJLIGJ5dGVzLCBpbgorICAgZXhjaGFuZ2UgZm9yIGEgbGl0dGxlIGV4ZWN1dGlvbiB0aW1lLiAgSG93ZXZlciwgQlVJTERGSVhFRCBzaG91bGQgbm90IGJlCisgICB1c2VkIGZvciB0aHJlYWRlZCBhcHBsaWNhdGlvbnMsIHNpbmNlIHRoZSByZXdyaXRpbmcgb2YgdGhlIHRhYmxlcyBhbmQgdmlyZ2luCisgICBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgorICovCitsb2NhbCB2b2lkIGZpeGVkdGFibGVzKAorc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZSkKK3sKKyNpZmRlZiBCVUlMREZJWEVECisgICAgc3RhdGljIGludCB2aXJnaW4gPSAxOworICAgIHN0YXRpYyBjb2RlICpsZW5maXgsICpkaXN0Zml4OworICAgIHN0YXRpYyBjb2RlIGZpeGVkWzU0NF07CisKKyAgICAvKiBidWlsZCBmaXhlZCBodWZmbWFuIHRhYmxlcyBpZiBmaXJzdCBjYWxsIChtYXkgbm90IGJlIHRocmVhZCBzYWZlKSAqLworICAgIGlmICh2aXJnaW4pIHsKKyAgICAgICAgdW5zaWduZWQgc3ltLCBiaXRzOworICAgICAgICBzdGF0aWMgY29kZSAqbmV4dDsKKworICAgICAgICAvKiBsaXRlcmFsL2xlbmd0aCB0YWJsZSAqLworICAgICAgICBzeW0gPSAwOworICAgICAgICB3aGlsZSAoc3ltIDwgMTQ0KSBzdGF0ZS0+bGVuc1tzeW0rK10gPSA4OworICAgICAgICB3aGlsZSAoc3ltIDwgMjU2KSBzdGF0ZS0+bGVuc1tzeW0rK10gPSA5OworICAgICAgICB3aGlsZSAoc3ltIDwgMjgwKSBzdGF0ZS0+bGVuc1tzeW0rK10gPSA3OworICAgICAgICB3aGlsZSAoc3ltIDwgMjg4KSBzdGF0ZS0+bGVuc1tzeW0rK10gPSA4OworICAgICAgICBuZXh0ID0gZml4ZWQ7CisgICAgICAgIGxlbmZpeCA9IG5leHQ7CisgICAgICAgIGJpdHMgPSA5OworICAgICAgICBpbmZsYXRlX3RhYmxlKExFTlMsIHN0YXRlLT5sZW5zLCAyODgsICYobmV4dCksICYoYml0cyksIHN0YXRlLT53b3JrKTsKKworICAgICAgICAvKiBkaXN0YW5jZSB0YWJsZSAqLworICAgICAgICBzeW0gPSAwOworICAgICAgICB3aGlsZSAoc3ltIDwgMzIpIHN0YXRlLT5sZW5zW3N5bSsrXSA9IDU7CisgICAgICAgIGRpc3RmaXggPSBuZXh0OworICAgICAgICBiaXRzID0gNTsKKyAgICAgICAgaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUtPmxlbnMsIDMyLCAmKG5leHQpLCAmKGJpdHMpLCBzdGF0ZS0+d29yayk7CisKKyAgICAgICAgLyogZG8gdGhpcyBqdXN0IG9uY2UgKi8KKyAgICAgICAgdmlyZ2luID0gMDsKKyAgICB9CisjZWxzZSAvKiAhQlVJTERGSVhFRCAqLworIyAgIGluY2x1ZGUgImluZmZpeGVkLmgiCisjZW5kaWYgLyogQlVJTERGSVhFRCAqLworICAgIHN0YXRlLT5sZW5jb2RlID0gbGVuZml4OworICAgIHN0YXRlLT5sZW5iaXRzID0gOTsKKyAgICBzdGF0ZS0+ZGlzdGNvZGUgPSBkaXN0Zml4OworICAgIHN0YXRlLT5kaXN0Yml0cyA9IDU7Cit9CisKKyNpZmRlZiBNQUtFRklYRUQKKyNpbmNsdWRlIDxzdGRpby5oPgorCisvKgorICAgV3JpdGUgb3V0IHRoZSBpbmZmaXhlZC5oIHRoYXQgaXMgI2luY2x1ZGUnZCBhYm92ZS4gIERlZmluaW5nIE1BS0VGSVhFRCBhbHNvCisgICBkZWZpbmVzIEJVSUxERklYRUQsIHNvIHRoZSB0YWJsZXMgYXJlIGJ1aWx0IG9uIHRoZSBmbHkuICBtYWtlZml4ZWQoKSB3cml0ZXMKKyAgIHRob3NlIHRhYmxlcyB0byBzdGRvdXQsIHdoaWNoIHdvdWxkIGJlIHBpcGVkIHRvIGluZmZpeGVkLmguICBBIHNtYWxsIHByb2dyYW0KKyAgIGNhbiBzaW1wbHkgY2FsbCBtYWtlZml4ZWQgdG8gZG8gdGhpczoKKworICAgIHZvaWQgbWFrZWZpeGVkKHZvaWQpOworCisgICAgaW50IG1haW4odm9pZCkKKyAgICB7CisgICAgICAgIG1ha2VmaXhlZCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgIFRoZW4gdGhhdCBjYW4gYmUgbGlua2VkIHdpdGggemxpYiBidWlsdCB3aXRoIE1BS0VGSVhFRCBkZWZpbmVkIGFuZCBydW46CisKKyAgICBhLm91dCA+IGluZmZpeGVkLmgKKyAqLwordm9pZCBtYWtlZml4ZWQoKQoreworICAgIHVuc2lnbmVkIGxvdywgc2l6ZTsKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBzdGF0ZTsKKworICAgIGZpeGVkdGFibGVzKCZzdGF0ZSk7CisgICAgcHV0cygiICAgIC8qIGluZmZpeGVkLmggLS0gdGFibGUgZm9yIGRlY29kaW5nIGZpeGVkIGNvZGVzIik7CisgICAgcHV0cygiICAgICAqIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IG1ha2VmaXhlZCgpLiIpOworICAgIHB1dHMoIiAgICAgKi8iKTsKKyAgICBwdXRzKCIiKTsKKyAgICBwdXRzKCIgICAgLyogV0FSTklORzogdGhpcyBmaWxlIHNob3VsZCAqbm90KiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucy4iKTsKKyAgICBwdXRzKCIgICAgICAgSXQgaXMgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBsaWJyYXJ5IGFuZCBpcyIpOworICAgIHB1dHMoIiAgICAgICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6bGliLmguIik7CisgICAgcHV0cygiICAgICAqLyIpOworICAgIHB1dHMoIiIpOworICAgIHNpemUgPSAxVSA8PCA5OworICAgIHByaW50ZigiICAgIHN0YXRpYyBjb25zdCBjb2RlIGxlbmZpeFsldV0gPSB7Iiwgc2l6ZSk7CisgICAgbG93ID0gMDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGlmICgobG93ICUgNykgPT0gMCkgcHJpbnRmKCJcbiAgICAgICAgIik7CisgICAgICAgIHByaW50ZigieyV1LCV1LCVkfSIsIChsb3cgJiAxMjcpID09IDk5ID8gNjQgOiBzdGF0ZS5sZW5jb2RlW2xvd10ub3AsCisgICAgICAgICAgICAgICBzdGF0ZS5sZW5jb2RlW2xvd10uYml0cywgc3RhdGUubGVuY29kZVtsb3ddLnZhbCk7CisgICAgICAgIGlmICgrK2xvdyA9PSBzaXplKSBicmVhazsKKyAgICAgICAgcHV0Y2hhcignLCcpOworICAgIH0KKyAgICBwdXRzKCJcbiAgICB9OyIpOworICAgIHNpemUgPSAxVSA8PCA1OworICAgIHByaW50ZigiXG4gICAgc3RhdGljIGNvbnN0IGNvZGUgZGlzdGZpeFsldV0gPSB7Iiwgc2l6ZSk7CisgICAgbG93ID0gMDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGlmICgobG93ICUgNikgPT0gMCkgcHJpbnRmKCJcbiAgICAgICAgIik7CisgICAgICAgIHByaW50ZigieyV1LCV1LCVkfSIsIHN0YXRlLmRpc3Rjb2RlW2xvd10ub3AsIHN0YXRlLmRpc3Rjb2RlW2xvd10uYml0cywKKyAgICAgICAgICAgICAgIHN0YXRlLmRpc3Rjb2RlW2xvd10udmFsKTsKKyAgICAgICAgaWYgKCsrbG93ID09IHNpemUpIGJyZWFrOworICAgICAgICBwdXRjaGFyKCcsJyk7CisgICAgfQorICAgIHB1dHMoIlxuICAgIH07Iik7Cit9CisjZW5kaWYgLyogTUFLRUZJWEVEICovCisKKy8qCisgICBVcGRhdGUgdGhlIHdpbmRvdyB3aXRoIHRoZSBsYXN0IHdzaXplIChub3JtYWxseSAzMkspIGJ5dGVzIHdyaXR0ZW4gYmVmb3JlCisgICByZXR1cm5pbmcuICBJZiB3aW5kb3cgZG9lcyBub3QgZXhpc3QgeWV0LCBjcmVhdGUgaXQuICBUaGlzIGlzIG9ubHkgY2FsbGVkCisgICB3aGVuIGEgd2luZG93IGlzIGFscmVhZHkgaW4gdXNlLCBvciB3aGVuIG91dHB1dCBoYXMgYmVlbiB3cml0dGVuIGR1cmluZyB0aGlzCisgICBpbmZsYXRlIGNhbGwsIGJ1dCB0aGUgZW5kIG9mIHRoZSBkZWZsYXRlIHN0cmVhbSBoYXMgbm90IGJlZW4gcmVhY2hlZCB5ZXQuCisgICBJdCBpcyBhbHNvIGNhbGxlZCB0byBjcmVhdGUgYSB3aW5kb3cgZm9yIGRpY3Rpb25hcnkgZGF0YSB3aGVuIGEgZGljdGlvbmFyeQorICAgaXMgbG9hZGVkLgorCisgICBQcm92aWRpbmcgb3V0cHV0IGJ1ZmZlcnMgbGFyZ2VyIHRoYW4gMzJLIHRvIGluZmxhdGUoKSBzaG91bGQgcHJvdmlkZSBhIHNwZWVkCisgICBhZHZhbnRhZ2UsIHNpbmNlIG9ubHkgdGhlIGxhc3QgMzJLIG9mIG91dHB1dCBpcyBjb3BpZWQgdG8gdGhlIHNsaWRpbmcgd2luZG93CisgICB1cG9uIHJldHVybiBmcm9tIGluZmxhdGUoKSwgYW5kIHNpbmNlIGFsbCBkaXN0YW5jZXMgYWZ0ZXIgdGhlIGZpcnN0IDMySyBvZgorICAgb3V0cHV0IHdpbGwgZmFsbCBpbiB0aGUgb3V0cHV0IGRhdGEsIG1ha2luZyBtYXRjaCBjb3BpZXMgc2ltcGxlciBhbmQgZmFzdGVyLgorICAgVGhlIGFkdmFudGFnZSBtYXkgYmUgZGVwZW5kZW50IG9uIHRoZSBzaXplIG9mIHRoZSBwcm9jZXNzb3IncyBkYXRhIGNhY2hlcy4KKyAqLworbG9jYWwgaW50IHVwZGF0ZXdpbmRvdygKK3pfc3RyZWFtcCBzdHJtLAorY29uc3QgQnl0ZWYgKmVuZCwKK3Vuc2lnbmVkIGNvcHkpCit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKyAgICB1bnNpZ25lZCBkaXN0OworCisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisKKyAgICAvKiBpZiBpdCBoYXNuJ3QgYmVlbiBkb25lIGFscmVhZHksIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgd2luZG93ICovCisgICAgaWYgKHN0YXRlLT53aW5kb3cgPT0gWl9OVUxMKSB7CisgICAgICAgIHN0YXRlLT53aW5kb3cgPSAodW5zaWduZWQgY2hhciBGQVIgKikKKyAgICAgICAgICAgICAgICAgICAgICAgIFpBTExPQyhzdHJtLCAxVSA8PCBzdGF0ZS0+d2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKTsKKyAgICAgICAgaWYgKHN0YXRlLT53aW5kb3cgPT0gWl9OVUxMKSByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBpZiB3aW5kb3cgbm90IGluIHVzZSB5ZXQsIGluaXRpYWxpemUgKi8KKyAgICBpZiAoc3RhdGUtPndzaXplID09IDApIHsKKyAgICAgICAgc3RhdGUtPndzaXplID0gMVUgPDwgc3RhdGUtPndiaXRzOworICAgICAgICBzdGF0ZS0+d25leHQgPSAwOworICAgICAgICBzdGF0ZS0+d2hhdmUgPSAwOworICAgIH0KKworICAgIC8qIGNvcHkgc3RhdGUtPndzaXplIG9yIGxlc3Mgb3V0cHV0IGJ5dGVzIGludG8gdGhlIGNpcmN1bGFyIHdpbmRvdyAqLworICAgIGlmIChjb3B5ID49IHN0YXRlLT53c2l6ZSkgeworICAgICAgICB6bWVtY3B5KHN0YXRlLT53aW5kb3csIGVuZCAtIHN0YXRlLT53c2l6ZSwgc3RhdGUtPndzaXplKTsKKyAgICAgICAgc3RhdGUtPnduZXh0ID0gMDsKKyAgICAgICAgc3RhdGUtPndoYXZlID0gc3RhdGUtPndzaXplOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZGlzdCA9IHN0YXRlLT53c2l6ZSAtIHN0YXRlLT53bmV4dDsKKyAgICAgICAgaWYgKGRpc3QgPiBjb3B5KSBkaXN0ID0gY29weTsKKyAgICAgICAgem1lbWNweShzdGF0ZS0+d2luZG93ICsgc3RhdGUtPnduZXh0LCBlbmQgLSBjb3B5LCBkaXN0KTsKKyAgICAgICAgY29weSAtPSBkaXN0OworICAgICAgICBpZiAoY29weSkgeworICAgICAgICAgICAgem1lbWNweShzdGF0ZS0+d2luZG93LCBlbmQgLSBjb3B5LCBjb3B5KTsKKyAgICAgICAgICAgIHN0YXRlLT53bmV4dCA9IGNvcHk7CisgICAgICAgICAgICBzdGF0ZS0+d2hhdmUgPSBzdGF0ZS0+d3NpemU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzdGF0ZS0+d25leHQgKz0gZGlzdDsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+d25leHQgPT0gc3RhdGUtPndzaXplKSBzdGF0ZS0+d25leHQgPSAwOworICAgICAgICAgICAgaWYgKHN0YXRlLT53aGF2ZSA8IHN0YXRlLT53c2l6ZSkgc3RhdGUtPndoYXZlICs9IGRpc3Q7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIE1hY3JvcyBmb3IgaW5mbGF0ZSgpOiAqLworCisvKiBjaGVjayBmdW5jdGlvbiB0byB1c2UgYWRsZXIzMigpIGZvciB6bGliIG9yIGNyYzMyKCkgZm9yIGd6aXAgKi8KKyNpZmRlZiBHVU5aSVAKKyMgIGRlZmluZSBVUERBVEUoY2hlY2ssIGJ1ZiwgbGVuKSBcCisgICAgKHN0YXRlLT5mbGFncyA/IGNyYzMyKGNoZWNrLCBidWYsIGxlbikgOiBhZGxlcjMyKGNoZWNrLCBidWYsIGxlbikpCisjZWxzZQorIyAgZGVmaW5lIFVQREFURShjaGVjaywgYnVmLCBsZW4pIGFkbGVyMzIoY2hlY2ssIGJ1ZiwgbGVuKQorI2VuZGlmCisKKy8qIGNoZWNrIG1hY3JvcyBmb3IgaGVhZGVyIGNyYyAqLworI2lmZGVmIEdVTlpJUAorIyAgZGVmaW5lIENSQzIoY2hlY2ssIHdvcmQpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaGJ1ZlswXSA9ICh1bnNpZ25lZCBjaGFyKSh3b3JkKTsgXAorICAgICAgICBoYnVmWzFdID0gKHVuc2lnbmVkIGNoYXIpKCh3b3JkKSA+PiA4KTsgXAorICAgICAgICBjaGVjayA9IGNyYzMyKGNoZWNrLCBoYnVmLCAyKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyMgIGRlZmluZSBDUkM0KGNoZWNrLCB3b3JkKSBcCisgICAgZG8geyBcCisgICAgICAgIGhidWZbMF0gPSAodW5zaWduZWQgY2hhcikod29yZCk7IFwKKyAgICAgICAgaGJ1ZlsxXSA9ICh1bnNpZ25lZCBjaGFyKSgod29yZCkgPj4gOCk7IFwKKyAgICAgICAgaGJ1ZlsyXSA9ICh1bnNpZ25lZCBjaGFyKSgod29yZCkgPj4gMTYpOyBcCisgICAgICAgIGhidWZbM10gPSAodW5zaWduZWQgY2hhcikoKHdvcmQpID4+IDI0KTsgXAorICAgICAgICBjaGVjayA9IGNyYzMyKGNoZWNrLCBoYnVmLCA0KTsgXAorICAgIH0gd2hpbGUgKDApCisjZW5kaWYKKworLyogTG9hZCByZWdpc3RlcnMgd2l0aCBzdGF0ZSBpbiBpbmZsYXRlKCkgZm9yIHNwZWVkICovCisjZGVmaW5lIExPQUQoKSBcCisgICAgZG8geyBcCisgICAgICAgIHB1dCA9IHN0cm0tPm5leHRfb3V0OyBcCisgICAgICAgIGxlZnQgPSBzdHJtLT5hdmFpbF9vdXQ7IFwKKyAgICAgICAgbmV4dCA9IHN0cm0tPm5leHRfaW47IFwKKyAgICAgICAgaGF2ZSA9IHN0cm0tPmF2YWlsX2luOyBcCisgICAgICAgIGhvbGQgPSBzdGF0ZS0+aG9sZDsgXAorICAgICAgICBiaXRzID0gc3RhdGUtPmJpdHM7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBSZXN0b3JlIHN0YXRlIGZyb20gcmVnaXN0ZXJzIGluIGluZmxhdGUoKSAqLworI2RlZmluZSBSRVNUT1JFKCkgXAorICAgIGRvIHsgXAorICAgICAgICBzdHJtLT5uZXh0X291dCA9IHB1dDsgXAorICAgICAgICBzdHJtLT5hdmFpbF9vdXQgPSBsZWZ0OyBcCisgICAgICAgIHN0cm0tPm5leHRfaW4gPSBuZXh0OyBcCisgICAgICAgIHN0cm0tPmF2YWlsX2luID0gaGF2ZTsgXAorICAgICAgICBzdGF0ZS0+aG9sZCA9IGhvbGQ7IFwKKyAgICAgICAgc3RhdGUtPmJpdHMgPSBiaXRzOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogQ2xlYXIgdGhlIGlucHV0IGJpdCBhY2N1bXVsYXRvciAqLworI2RlZmluZSBJTklUQklUUygpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaG9sZCA9IDA7IFwKKyAgICAgICAgYml0cyA9IDA7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBHZXQgYSBieXRlIG9mIGlucHV0IGludG8gdGhlIGJpdCBhY2N1bXVsYXRvciwgb3IgcmV0dXJuIGZyb20gaW5mbGF0ZSgpCisgICBpZiB0aGVyZSBpcyBubyBpbnB1dCBhdmFpbGFibGUuICovCisjZGVmaW5lIFBVTExCWVRFKCkgXAorICAgIGRvIHsgXAorICAgICAgICBpZiAoaGF2ZSA9PSAwKSBnb3RvIGluZl9sZWF2ZTsgXAorICAgICAgICBoYXZlLS07IFwKKyAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoKm5leHQrKykgPDwgYml0czsgXAorICAgICAgICBiaXRzICs9IDg7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBBc3N1cmUgdGhhdCB0aGVyZSBhcmUgYXQgbGVhc3QgbiBiaXRzIGluIHRoZSBiaXQgYWNjdW11bGF0b3IuICBJZiB0aGVyZSBpcworICAgbm90IGVub3VnaCBhdmFpbGFibGUgaW5wdXQgdG8gZG8gdGhhdCwgdGhlbiByZXR1cm4gZnJvbSBpbmZsYXRlKCkuICovCisjZGVmaW5lIE5FRURCSVRTKG4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgd2hpbGUgKGJpdHMgPCAodW5zaWduZWQpKG4pKSBcCisgICAgICAgICAgICBQVUxMQllURSgpOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmV0dXJuIHRoZSBsb3cgbiBiaXRzIG9mIHRoZSBiaXQgYWNjdW11bGF0b3IgKG4gPCAxNikgKi8KKyNkZWZpbmUgQklUUyhuKSBcCisgICAgKCh1bnNpZ25lZClob2xkICYgKCgxVSA8PCAobikpIC0gMSkpCisKKy8qIFJlbW92ZSBuIGJpdHMgZnJvbSB0aGUgYml0IGFjY3VtdWxhdG9yICovCisjZGVmaW5lIERST1BCSVRTKG4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaG9sZCA+Pj0gKG4pOyBcCisgICAgICAgIGJpdHMgLT0gKHVuc2lnbmVkKShuKTsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFJlbW92ZSB6ZXJvIHRvIHNldmVuIGJpdHMgYXMgbmVlZGVkIHRvIGdvIHRvIGEgYnl0ZSBib3VuZGFyeSAqLworI2RlZmluZSBCWVRFQklUUygpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaG9sZCA+Pj0gYml0cyAmIDc7IFwKKyAgICAgICAgYml0cyAtPSBiaXRzICYgNzsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qCisgICBpbmZsYXRlKCkgdXNlcyBhIHN0YXRlIG1hY2hpbmUgdG8gcHJvY2VzcyBhcyBtdWNoIGlucHV0IGRhdGEgYW5kIGdlbmVyYXRlIGFzCisgICBtdWNoIG91dHB1dCBkYXRhIGFzIHBvc3NpYmxlIGJlZm9yZSByZXR1cm5pbmcuICBUaGUgc3RhdGUgbWFjaGluZSBpcworICAgc3RydWN0dXJlZCByb3VnaGx5IGFzIGZvbGxvd3M6CisKKyAgICBmb3IgKDs7KSBzd2l0Y2ggKHN0YXRlKSB7CisgICAgLi4uCisgICAgY2FzZSBTVEFURW46CisgICAgICAgIGlmIChub3QgZW5vdWdoIGlucHV0IGRhdGEgb3Igb3V0cHV0IHNwYWNlIHRvIG1ha2UgcHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC4uLiBtYWtlIHByb2dyZXNzIC4uLgorICAgICAgICBzdGF0ZSA9IFNUQVRFbTsKKyAgICAgICAgYnJlYWs7CisgICAgLi4uCisgICAgfQorCisgICBzbyB3aGVuIGluZmxhdGUoKSBpcyBjYWxsZWQgYWdhaW4sIHRoZSBzYW1lIGNhc2UgaXMgYXR0ZW1wdGVkIGFnYWluLCBhbmQKKyAgIGlmIHRoZSBhcHByb3ByaWF0ZSByZXNvdXJjZXMgYXJlIHByb3ZpZGVkLCB0aGUgbWFjaGluZSBwcm9jZWVkcyB0byB0aGUKKyAgIG5leHQgc3RhdGUuICBUaGUgTkVFREJJVFMoKSBtYWNybyBpcyB1c3VhbGx5IHRoZSB3YXkgdGhlIHN0YXRlIGV2YWx1YXRlcworICAgd2hldGhlciBpdCBjYW4gcHJvY2VlZCBvciBzaG91bGQgcmV0dXJuLiAgTkVFREJJVFMoKSBkb2VzIHRoZSByZXR1cm4gaWYKKyAgIHRoZSByZXF1ZXN0ZWQgYml0cyBhcmUgbm90IGF2YWlsYWJsZS4gIFRoZSB0eXBpY2FsIHVzZSBvZiB0aGUgQklUUyBtYWNyb3MKKyAgIGlzOgorCisgICAgICAgIE5FRURCSVRTKG4pOworICAgICAgICAuLi4gZG8gc29tZXRoaW5nIHdpdGggQklUUyhuKSAuLi4KKyAgICAgICAgRFJPUEJJVFMobik7CisKKyAgIHdoZXJlIE5FRURCSVRTKG4pIGVpdGhlciByZXR1cm5zIGZyb20gaW5mbGF0ZSgpIGlmIHRoZXJlIGlzbid0IGVub3VnaAorICAgaW5wdXQgbGVmdCB0byBsb2FkIG4gYml0cyBpbnRvIHRoZSBhY2N1bXVsYXRvciwgb3IgaXQgY29udGludWVzLiAgQklUUyhuKQorICAgZ2l2ZXMgdGhlIGxvdyBuIGJpdHMgaW4gdGhlIGFjY3VtdWxhdG9yLiAgV2hlbiBkb25lLCBEUk9QQklUUyhuKSBkcm9wcworICAgdGhlIGxvdyBuIGJpdHMgb2ZmIHRoZSBhY2N1bXVsYXRvci4gIElOSVRCSVRTKCkgY2xlYXJzIHRoZSBhY2N1bXVsYXRvcgorICAgYW5kIHNldHMgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgYml0cyB0byB6ZXJvLiAgQllURUJJVFMoKSBkaXNjYXJkcyBqdXN0CisgICBlbm91Z2ggYml0cyB0byBwdXQgdGhlIGFjY3VtdWxhdG9yIG9uIGEgYnl0ZSBib3VuZGFyeS4gIEFmdGVyIEJZVEVCSVRTKCkKKyAgIGFuZCBhIE5FRURCSVRTKDgpLCB0aGVuIEJJVFMoOCkgd291bGQgcmV0dXJuIHRoZSBuZXh0IGJ5dGUgaW4gdGhlIHN0cmVhbS4KKworICAgTkVFREJJVFMobikgdXNlcyBQVUxMQllURSgpIHRvIGdldCBhbiBhdmFpbGFibGUgYnl0ZSBvZiBpbnB1dCwgb3IgdG8gcmV0dXJuCisgICBpZiB0aGVyZSBpcyBubyBpbnB1dCBhdmFpbGFibGUuICBUaGUgZGVjb2Rpbmcgb2YgdmFyaWFibGUgbGVuZ3RoIGNvZGVzIHVzZXMKKyAgIFBVTExCWVRFKCkgZGlyZWN0bHkgaW4gb3JkZXIgdG8gcHVsbCBqdXN0IGVub3VnaCBieXRlcyB0byBkZWNvZGUgdGhlIG5leHQKKyAgIGNvZGUsIGFuZCBubyBtb3JlLgorCisgICBTb21lIHN0YXRlcyBsb29wIHVudGlsIHRoZXkgZ2V0IGVub3VnaCBpbnB1dCwgbWFraW5nIHN1cmUgdGhhdCBlbm91Z2gKKyAgIHN0YXRlIGluZm9ybWF0aW9uIGlzIG1haW50YWluZWQgdG8gY29udGludWUgdGhlIGxvb3Agd2hlcmUgaXQgbGVmdCBvZmYKKyAgIGlmIE5FRURCSVRTKCkgcmV0dXJucyBpbiB0aGUgbG9vcC4gIEZvciBleGFtcGxlLCB3YW50LCBuZWVkLCBhbmQga2VlcAorICAgd291bGQgYWxsIGhhdmUgdG8gYWN0dWFsbHkgYmUgcGFydCBvZiB0aGUgc2F2ZWQgc3RhdGUgaW4gY2FzZSBORUVEQklUUygpCisgICByZXR1cm5zOgorCisgICAgY2FzZSBTVEFURXc6CisgICAgICAgIHdoaWxlICh3YW50IDwgbmVlZCkgeworICAgICAgICAgICAgTkVFREJJVFMobik7CisgICAgICAgICAgICBrZWVwW3dhbnQrK10gPSBCSVRTKG4pOworICAgICAgICAgICAgRFJPUEJJVFMobik7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGUgPSBTVEFURXg7CisgICAgY2FzZSBTVEFURXg6CisKKyAgIEFzIHNob3duIGFib3ZlLCBpZiB0aGUgbmV4dCBzdGF0ZSBpcyBhbHNvIHRoZSBuZXh0IGNhc2UsIHRoZW4gdGhlIGJyZWFrCisgICBpcyBvbWl0dGVkLgorCisgICBBIHN0YXRlIG1heSBhbHNvIHJldHVybiBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIG91dHB1dCBzcGFjZSBhdmFpbGFibGUgdG8KKyAgIGNvbXBsZXRlIHRoYXQgc3RhdGUuICBUaG9zZSBzdGF0ZXMgYXJlIGNvcHlpbmcgc3RvcmVkIGRhdGEsIHdyaXRpbmcgYQorICAgbGl0ZXJhbCBieXRlLCBhbmQgY29weWluZyBhIG1hdGNoaW5nIHN0cmluZy4KKworICAgV2hlbiByZXR1cm5pbmcsIGEgImdvdG8gaW5mX2xlYXZlIiBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgdG90YWwgY291bnRlcnMsCisgICB1cGRhdGUgdGhlIGNoZWNrIHZhbHVlLCBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgYW55IHByb2dyZXNzIGhhcyBiZWVuIG1hZGUKKyAgIGR1cmluZyB0aGF0IGluZmxhdGUoKSBjYWxsIGluIG9yZGVyIHRvIHJldHVybiB0aGUgcHJvcGVyIHJldHVybiBjb2RlLgorICAgUHJvZ3Jlc3MgaXMgZGVmaW5lZCBhcyBhIGNoYW5nZSBpbiBlaXRoZXIgc3RybS0+YXZhaWxfaW4gb3Igc3RybS0+YXZhaWxfb3V0LgorICAgV2hlbiB0aGVyZSBpcyBhIHdpbmRvdywgZ290byBpbmZfbGVhdmUgd2lsbCB1cGRhdGUgdGhlIHdpbmRvdyB3aXRoIHRoZSBsYXN0CisgICBvdXRwdXQgd3JpdHRlbi4gIElmIGEgZ290byBpbmZfbGVhdmUgb2NjdXJzIGluIHRoZSBtaWRkbGUgb2YgZGVjb21wcmVzc2lvbgorICAgYW5kIHRoZXJlIGlzIG5vIHdpbmRvdyBjdXJyZW50bHksIGdvdG8gaW5mX2xlYXZlIHdpbGwgY3JlYXRlIG9uZSBhbmQgY29weQorICAgb3V0cHV0IHRvIHRoZSB3aW5kb3cgZm9yIHRoZSBuZXh0IGNhbGwgb2YgaW5mbGF0ZSgpLgorCisgICBJbiB0aGlzIGltcGxlbWVudGF0aW9uLCB0aGUgZmx1c2ggcGFyYW1ldGVyIG9mIGluZmxhdGUoKSBvbmx5IGFmZmVjdHMgdGhlCisgICByZXR1cm4gY29kZSAocGVyIHpsaWIuaCkuICBpbmZsYXRlKCkgYWx3YXlzIHdyaXRlcyBhcyBtdWNoIGFzIHBvc3NpYmxlIHRvCisgICBzdHJtLT5uZXh0X291dCwgZ2l2ZW4gdGhlIHNwYWNlIGF2YWlsYWJsZSBhbmQgdGhlIHByb3ZpZGVkIGlucHV0LS10aGUgZWZmZWN0CisgICBkb2N1bWVudGVkIGluIHpsaWIuaCBvZiBaX1NZTkNfRkxVU0guICBGdXJ0aGVybW9yZSwgaW5mbGF0ZSgpIGFsd2F5cyBkZWZlcnMKKyAgIHRoZSBhbGxvY2F0aW9uIG9mIGFuZCBjb3B5aW5nIGludG8gYSBzbGlkaW5nIHdpbmRvdyB1bnRpbCBuZWNlc3NhcnksIHdoaWNoCisgICBwcm92aWRlcyB0aGUgZWZmZWN0IGRvY3VtZW50ZWQgaW4gemxpYi5oIGZvciBaX0ZJTklTSCB3aGVuIHRoZSBlbnRpcmUgaW5wdXQKKyAgIHN0cmVhbSBhdmFpbGFibGUuICBTbyB0aGUgb25seSB0aGluZyB0aGUgZmx1c2ggcGFyYW1ldGVyIGFjdHVhbGx5IGRvZXMgaXM6CisgICB3aGVuIGZsdXNoIGlzIHNldCB0byBaX0ZJTklTSCwgaW5mbGF0ZSgpIGNhbm5vdCByZXR1cm4gWl9PSy4gIEluc3RlYWQgaXQKKyAgIHdpbGwgcmV0dXJuIFpfQlVGX0VSUk9SIGlmIGl0IGhhcyBub3QgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0uCisgKi8KKworaW50IFpFWFBPUlQgaW5mbGF0ZSgKK3pfc3RyZWFtcCBzdHJtLAoraW50IGZsdXNoKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqbmV4dDsgICAgLyogbmV4dCBpbnB1dCAqLworICAgIHVuc2lnbmVkIGNoYXIgRkFSICpwdXQ7ICAgICAvKiBuZXh0IG91dHB1dCAqLworICAgIHVuc2lnbmVkIGhhdmUsIGxlZnQ7ICAgICAgICAvKiBhdmFpbGFibGUgaW5wdXQgYW5kIG91dHB1dCAqLworICAgIHVuc2lnbmVkIGxvbmcgaG9sZDsgICAgICAgICAvKiBiaXQgYnVmZmVyICovCisgICAgdW5zaWduZWQgYml0czsgICAgICAgICAgICAgIC8qIGJpdHMgaW4gYml0IGJ1ZmZlciAqLworICAgIHVuc2lnbmVkIGluLCBvdXQ7ICAgICAgICAgICAvKiBzYXZlIHN0YXJ0aW5nIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovCisgICAgdW5zaWduZWQgY29weTsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBzdG9yZWQgb3IgbWF0Y2ggYnl0ZXMgdG8gY29weSAqLworICAgIHVuc2lnbmVkIGNoYXIgRkFSICpmcm9tOyAgICAvKiB3aGVyZSB0byBjb3B5IG1hdGNoIGJ5dGVzIGZyb20gKi8KKyAgICBjb2RlIGhlcmU7ICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBkZWNvZGluZyB0YWJsZSBlbnRyeSAqLworICAgIGNvZGUgbGFzdDsgICAgICAgICAgICAgICAgICAvKiBwYXJlbnQgdGFibGUgZW50cnkgKi8KKyAgICB1bnNpZ25lZCBsZW47ICAgICAgICAgICAgICAgLyogbGVuZ3RoIHRvIGNvcHkgZm9yIHJlcGVhdHMsIGJpdHMgdG8gZHJvcCAqLworICAgIGludCByZXQ7ICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm4gY29kZSAqLworI2lmZGVmIEdVTlpJUAorICAgIHVuc2lnbmVkIGNoYXIgaGJ1Zls0XTsgICAgICAvKiBidWZmZXIgZm9yIGd6aXAgaGVhZGVyIGNyYyBjYWxjdWxhdGlvbiAqLworI2VuZGlmCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IG9yZGVyWzE5XSA9IC8qIHBlcm11dGF0aW9uIG9mIGNvZGUgbGVuZ3RocyAqLworICAgICAgICB7MTYsIDE3LCAxOCwgMCwgOCwgNywgOSwgNiwgMTAsIDUsIDExLCA0LCAxMiwgMywgMTMsIDIsIDE0LCAxLCAxNX07CisKKyAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMIHx8IHN0cm0tPm5leHRfb3V0ID09IFpfTlVMTCB8fAorICAgICAgICAoc3RybS0+bmV4dF9pbiA9PSBaX05VTEwgJiYgc3RybS0+YXZhaWxfaW4gIT0gMCkpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgIGlmIChzdGF0ZS0+bW9kZSA9PSBUWVBFKSBzdGF0ZS0+bW9kZSA9IFRZUEVETzsgICAgICAvKiBza2lwIGNoZWNrICovCisgICAgTE9BRCgpOworICAgIGluID0gaGF2ZTsKKyAgICBvdXQgPSBsZWZ0OworICAgIHJldCA9IFpfT0s7CisgICAgZm9yICg7OykKKyAgICAgICAgc3dpdGNoIChzdGF0ZS0+bW9kZSkgeworICAgICAgICBjYXNlIEhFQUQ6CisgICAgICAgICAgICBpZiAoc3RhdGUtPndyYXAgPT0gMCkgeworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gVFlQRURPOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTkVFREJJVFMoMTYpOworI2lmZGVmIEdVTlpJUAorICAgICAgICAgICAgaWYgKChzdGF0ZS0+d3JhcCAmIDIpICYmIGhvbGQgPT0gMHg4YjFmKSB7ICAvKiBnemlwIGhlYWRlciAqLworICAgICAgICAgICAgICAgIHN0YXRlLT5jaGVjayA9IGNyYzMyKDBMLCBaX05VTEwsIDApOworICAgICAgICAgICAgICAgIENSQzIoc3RhdGUtPmNoZWNrLCBob2xkKTsKKyAgICAgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gRkxBR1M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+ZmxhZ3MgPSAwOyAgICAgICAgICAgLyogZXhwZWN0IHpsaWIgaGVhZGVyICovCisgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMKQorICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5kb25lID0gLTE7CisgICAgICAgICAgICBpZiAoIShzdGF0ZS0+d3JhcCAmIDEpIHx8ICAgLyogY2hlY2sgaWYgemxpYiBoZWFkZXIgYWxsb3dlZCAqLworI2Vsc2UKKyAgICAgICAgICAgIGlmICgKKyNlbmRpZgorICAgICAgICAgICAgICAgICgoQklUUyg4KSA8PCA4KSArIChob2xkID4+IDgpKSAlIDMxKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW5jb3JyZWN0IGhlYWRlciBjaGVjayI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoQklUUyg0KSAhPSBaX0RFRkxBVEVEKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikidW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRFJPUEJJVFMoNCk7CisgICAgICAgICAgICBsZW4gPSBCSVRTKDQpICsgODsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+d2JpdHMgPT0gMCkKKyAgICAgICAgICAgICAgICBzdGF0ZS0+d2JpdHMgPSBsZW47CisgICAgICAgICAgICBlbHNlIGlmIChsZW4gPiBzdGF0ZS0+d2JpdHMpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIHdpbmRvdyBzaXplIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5kbWF4ID0gMVUgPDwgbGVuOworICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgIHpsaWIgaGVhZGVyIG9rXG4iKSk7CisgICAgICAgICAgICBzdHJtLT5hZGxlciA9IHN0YXRlLT5jaGVjayA9IGFkbGVyMzIoMEwsIFpfTlVMTCwgMCk7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IGhvbGQgJiAweDIwMCA/IERJQ1RJRCA6IFRZUEU7CisgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgYnJlYWs7CisjaWZkZWYgR1VOWklQCisgICAgICAgIGNhc2UgRkxBR1M6CisgICAgICAgICAgICBORUVEQklUUygxNik7CisgICAgICAgICAgICBzdGF0ZS0+ZmxhZ3MgPSAoaW50KShob2xkKTsKKyAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHhmZikgIT0gWl9ERUZMQVRFRCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopInVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweGUwMDApIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJ1bmtub3duIGhlYWRlciBmbGFncyBzZXQiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCkKKyAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+dGV4dCA9IChpbnQpKChob2xkID4+IDgpICYgMSk7CisgICAgICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSBDUkMyKHN0YXRlLT5jaGVjaywgaG9sZCk7CisgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUSU1FOworICAgICAgICBjYXNlIFRJTUU6CisgICAgICAgICAgICBORUVEQklUUygzMik7CisgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMKQorICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT50aW1lID0gaG9sZDsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApIENSQzQoc3RhdGUtPmNoZWNrLCBob2xkKTsKKyAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IE9TOworICAgICAgICBjYXNlIE9TOgorICAgICAgICAgICAgTkVFREJJVFMoMTYpOworICAgICAgICAgICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCkgeworICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT54ZmxhZ3MgPSAoaW50KShob2xkICYgMHhmZik7CisgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPm9zID0gKGludCkoaG9sZCA+PiA4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApIENSQzIoc3RhdGUtPmNoZWNrLCBob2xkKTsKKyAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEVYTEVOOworICAgICAgICBjYXNlIEVYTEVOOgorICAgICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4MDQwMCkgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKDE2KTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoID0gKHVuc2lnbmVkKShob2xkKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+ZXh0cmFfbGVuID0gKHVuc2lnbmVkKWhvbGQ7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4MDIwMCkgQ1JDMihzdGF0ZS0+Y2hlY2ssIGhvbGQpOworICAgICAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpCisgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmV4dHJhID0gWl9OVUxMOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBFWFRSQTsKKyAgICAgICAgY2FzZSBFWFRSQToKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDA0MDApIHsKKyAgICAgICAgICAgICAgICBjb3B5ID0gc3RhdGUtPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBpZiAoY29weSA+IGhhdmUpIGNvcHkgPSBoYXZlOworICAgICAgICAgICAgICAgIGlmIChjb3B5KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5leHRyYSAhPSBaX05VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHN0YXRlLT5oZWFkLT5leHRyYV9sZW4gLSBzdGF0ZS0+bGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgem1lbWNweShzdGF0ZS0+aGVhZC0+ZXh0cmEgKyBsZW4sIG5leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiArIGNvcHkgPiBzdGF0ZS0+aGVhZC0+ZXh0cmFfbWF4ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmV4dHJhX21heCAtIGxlbiA6IGNvcHkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+Y2hlY2sgPSBjcmMzMihzdGF0ZS0+Y2hlY2ssIG5leHQsIGNvcHkpOworICAgICAgICAgICAgICAgICAgICBoYXZlIC09IGNvcHk7CisgICAgICAgICAgICAgICAgICAgIG5leHQgKz0gY29weTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCAtPSBjb3B5OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmxlbmd0aCkgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoID0gMDsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTkFNRTsKKyAgICAgICAgY2FzZSBOQU1FOgorICAgICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4MDgwMCkgeworICAgICAgICAgICAgICAgIGlmIChoYXZlID09IDApIGdvdG8gaW5mX2xlYXZlOworICAgICAgICAgICAgICAgIGNvcHkgPSAwOworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gKHVuc2lnbmVkKShuZXh0W2NvcHkrK10pOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPm5hbWUgIT0gWl9OVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA8IHN0YXRlLT5oZWFkLT5uYW1lX21heCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5uYW1lW3N0YXRlLT5sZW5ndGgrK10gPSBsZW47CisgICAgICAgICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgMHgwMjAwKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+Y2hlY2sgPSBjcmMzMihzdGF0ZS0+Y2hlY2ssIG5leHQsIGNvcHkpOworICAgICAgICAgICAgICAgIGhhdmUgLT0gY29weTsKKyAgICAgICAgICAgICAgICBuZXh0ICs9IGNvcHk7CisgICAgICAgICAgICAgICAgaWYgKGxlbikgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpCisgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPm5hbWUgPSBaX05VTEw7CisgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoID0gMDsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQ09NTUVOVDsKKyAgICAgICAgY2FzZSBDT01NRU5UOgorICAgICAgICAgICAgaWYgKHN0YXRlLT5mbGFncyAmIDB4MTAwMCkgeworICAgICAgICAgICAgICAgIGlmIChoYXZlID09IDApIGdvdG8gaW5mX2xlYXZlOworICAgICAgICAgICAgICAgIGNvcHkgPSAwOworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gKHVuc2lnbmVkKShuZXh0W2NvcHkrK10pOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmNvbW1lbnQgIT0gWl9OVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA8IHN0YXRlLT5oZWFkLT5jb21tX21heCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5jb21tZW50W3N0YXRlLT5sZW5ndGgrK10gPSBsZW47CisgICAgICAgICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgMHgwMjAwKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+Y2hlY2sgPSBjcmMzMihzdGF0ZS0+Y2hlY2ssIG5leHQsIGNvcHkpOworICAgICAgICAgICAgICAgIGhhdmUgLT0gY29weTsKKyAgICAgICAgICAgICAgICBuZXh0ICs9IGNvcHk7CisgICAgICAgICAgICAgICAgaWYgKGxlbikgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpCisgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmNvbW1lbnQgPSBaX05VTEw7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEhDUkM7CisgICAgICAgIGNhc2UgSENSQzoKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApIHsKKyAgICAgICAgICAgICAgICBORUVEQklUUygxNik7CisgICAgICAgICAgICAgICAgaWYgKGhvbGQgIT0gKHN0YXRlLT5jaGVjayAmIDB4ZmZmZikpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaGVhZGVyIGNyYyBtaXNtYXRjaCI7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgSU5JVEJJVFMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+aGNyYyA9IChpbnQpKChzdGF0ZS0+ZmxhZ3MgPj4gOSkgJiAxKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+ZG9uZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHJtLT5hZGxlciA9IHN0YXRlLT5jaGVjayA9IGNyYzMyKDBMLCBaX05VTEwsIDApOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgY2FzZSBESUNUSUQ6CisgICAgICAgICAgICBORUVEQklUUygzMik7CisgICAgICAgICAgICBzdHJtLT5hZGxlciA9IHN0YXRlLT5jaGVjayA9IFpTV0FQMzIoaG9sZCk7CisgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBESUNUOworICAgICAgICBjYXNlIERJQ1Q6CisgICAgICAgICAgICBpZiAoc3RhdGUtPmhhdmVkaWN0ID09IDApIHsKKyAgICAgICAgICAgICAgICBSRVNUT1JFKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFpfTkVFRF9ESUNUOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPSBhZGxlcjMyKDBMLCBaX05VTEwsIDApOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgICAgICBjYXNlIFRZUEU6CisgICAgICAgICAgICBpZiAoZmx1c2ggPT0gWl9CTE9DSyB8fCBmbHVzaCA9PSBaX1RSRUVTKSBnb3RvIGluZl9sZWF2ZTsKKyAgICAgICAgY2FzZSBUWVBFRE86CisgICAgICAgICAgICBpZiAoc3RhdGUtPmxhc3QpIHsKKyAgICAgICAgICAgICAgICBCWVRFQklUUygpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQ0hFQ0s7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBORUVEQklUUygzKTsKKyAgICAgICAgICAgIHN0YXRlLT5sYXN0ID0gQklUUygxKTsKKyAgICAgICAgICAgIERST1BCSVRTKDEpOworICAgICAgICAgICAgc3dpdGNoIChCSVRTKDIpKSB7CisgICAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgYmxvY2sgKi8KKyAgICAgICAgICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICBzdG9yZWQgYmxvY2slc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sYXN0ID8gIiAobGFzdCkiIDogIiIpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFNUT1JFRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpeGVkIGJsb2NrICovCisgICAgICAgICAgICAgICAgZml4ZWR0YWJsZXMoc3RhdGUpOworICAgICAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgIGZpeGVkIGNvZGVzIGJsb2NrJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGFzdCA/ICIgKGxhc3QpIiA6ICIiKSk7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU5fOyAgICAgICAgICAgICAvKiBkZWNvZGUgY29kZXMgKi8KKyAgICAgICAgICAgICAgICBpZiAoZmx1c2ggPT0gWl9UUkVFUykgeworICAgICAgICAgICAgICAgICAgICBEUk9QQklUUygyKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZHluYW1pYyBibG9jayAqLworICAgICAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgIGR5bmFtaWMgY29kZXMgYmxvY2slc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sYXN0ID8gIiAobGFzdCkiIDogIiIpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRBQkxFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgYmxvY2sgdHlwZSI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBEUk9QQklUUygyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNUT1JFRDoKKyAgICAgICAgICAgIEJZVEVCSVRTKCk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdvIHRvIGJ5dGUgYm91bmRhcnkgKi8KKyAgICAgICAgICAgIE5FRURCSVRTKDMyKTsKKyAgICAgICAgICAgIGlmICgoaG9sZCAmIDB4ZmZmZikgIT0gKChob2xkID4+IDE2KSBeIDB4ZmZmZikpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggPSAodW5zaWduZWQpaG9sZCAmIDB4ZmZmZjsKKyAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgc3RvcmVkIGxlbmd0aCAldVxuIiwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCkpOworICAgICAgICAgICAgSU5JVEJJVFMoKTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQ09QWV87CisgICAgICAgICAgICBpZiAoZmx1c2ggPT0gWl9UUkVFUykgZ290byBpbmZfbGVhdmU7CisgICAgICAgIGNhc2UgQ09QWV86CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IENPUFk7CisgICAgICAgIGNhc2UgQ09QWToKKyAgICAgICAgICAgIGNvcHkgPSBzdGF0ZS0+bGVuZ3RoOworICAgICAgICAgICAgaWYgKGNvcHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29weSA+IGhhdmUpIGNvcHkgPSBoYXZlOworICAgICAgICAgICAgICAgIGlmIChjb3B5ID4gbGVmdCkgY29weSA9IGxlZnQ7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPT0gMCkgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICAgICAgem1lbWNweShwdXQsIG5leHQsIGNvcHkpOworICAgICAgICAgICAgICAgIGhhdmUgLT0gY29weTsKKyAgICAgICAgICAgICAgICBuZXh0ICs9IGNvcHk7CisgICAgICAgICAgICAgICAgbGVmdCAtPSBjb3B5OworICAgICAgICAgICAgICAgIHB1dCArPSBjb3B5OworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggLT0gY29weTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgc3RvcmVkIGVuZFxuIikpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVEFCTEU6CisgICAgICAgICAgICBORUVEQklUUygxNCk7CisgICAgICAgICAgICBzdGF0ZS0+bmxlbiA9IEJJVFMoNSkgKyAyNTc7CisgICAgICAgICAgICBEUk9QQklUUyg1KTsKKyAgICAgICAgICAgIHN0YXRlLT5uZGlzdCA9IEJJVFMoNSkgKyAxOworICAgICAgICAgICAgRFJPUEJJVFMoNSk7CisgICAgICAgICAgICBzdGF0ZS0+bmNvZGUgPSBCSVRTKDQpICsgNDsKKyAgICAgICAgICAgIERST1BCSVRTKDQpOworI2lmbmRlZiBQS1pJUF9CVUdfV09SS0FST1VORAorICAgICAgICAgICAgaWYgKHN0YXRlLT5ubGVuID4gMjg2IHx8IHN0YXRlLT5uZGlzdCA+IDMwKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikidG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBUcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIHRhYmxlIHNpemVzIG9rXG4iKSk7CisgICAgICAgICAgICBzdGF0ZS0+aGF2ZSA9IDA7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IExFTkxFTlM7CisgICAgICAgIGNhc2UgTEVOTEVOUzoKKyAgICAgICAgICAgIHdoaWxlIChzdGF0ZS0+aGF2ZSA8IHN0YXRlLT5uY29kZSkgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKDMpOworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5zW29yZGVyW3N0YXRlLT5oYXZlKytdXSA9ICh1bnNpZ25lZCBzaG9ydClCSVRTKDMpOworICAgICAgICAgICAgICAgIERST1BCSVRTKDMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKHN0YXRlLT5oYXZlIDwgMTkpCisgICAgICAgICAgICAgICAgc3RhdGUtPmxlbnNbb3JkZXJbc3RhdGUtPmhhdmUrK11dID0gMDsKKyAgICAgICAgICAgIHN0YXRlLT5uZXh0ID0gc3RhdGUtPmNvZGVzOworICAgICAgICAgICAgc3RhdGUtPmxlbmNvZGUgPSAoY29uc3QgY29kZSBGQVIgKikoc3RhdGUtPm5leHQpOworICAgICAgICAgICAgc3RhdGUtPmxlbmJpdHMgPSA3OworICAgICAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShDT0RFUywgc3RhdGUtPmxlbnMsIDE5LCAmKHN0YXRlLT5uZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+bGVuYml0cyksIHN0YXRlLT53b3JrKTsKKyAgICAgICAgICAgIGlmIChyZXQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBjb2RlIGxlbmd0aHMgb2tcbiIpKTsKKyAgICAgICAgICAgIHN0YXRlLT5oYXZlID0gMDsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQ09ERUxFTlM7CisgICAgICAgIGNhc2UgQ09ERUxFTlM6CisgICAgICAgICAgICB3aGlsZSAoc3RhdGUtPmhhdmUgPCBzdGF0ZS0+bmxlbiArIHN0YXRlLT5uZGlzdCkgeworICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgaGVyZSA9IHN0YXRlLT5sZW5jb2RlW0JJVFMoc3RhdGUtPmxlbmJpdHMpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCkoaGVyZS5iaXRzKSA8PSBiaXRzKSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgUFVMTEJZVEUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGhlcmUudmFsIDwgMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoaGVyZS5iaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbnNbc3RhdGUtPmhhdmUrK10gPSBoZXJlLnZhbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChoZXJlLnZhbCA9PSAxNikgeworICAgICAgICAgICAgICAgICAgICAgICAgTkVFREJJVFMoaGVyZS5iaXRzICsgMik7CisgICAgICAgICAgICAgICAgICAgICAgICBEUk9QQklUUyhoZXJlLmJpdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5oYXZlID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHN0YXRlLT5sZW5zW3N0YXRlLT5oYXZlIC0gMV07CisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5ID0gMyArIEJJVFMoMik7CisgICAgICAgICAgICAgICAgICAgICAgICBEUk9QQklUUygyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoZXJlLnZhbCA9PSAxNykgeworICAgICAgICAgICAgICAgICAgICAgICAgTkVFREJJVFMoaGVyZS5iaXRzICsgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBEUk9QQklUUyhoZXJlLmJpdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgPSAzICsgQklUUygzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKDMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgTkVFREJJVFMoaGVyZS5iaXRzICsgNyk7CisgICAgICAgICAgICAgICAgICAgICAgICBEUk9QQklUUyhoZXJlLmJpdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgPSAxMSArIEJJVFMoNyk7CisgICAgICAgICAgICAgICAgICAgICAgICBEUk9QQklUUyg3KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmhhdmUgKyBjb3B5ID4gc3RhdGUtPm5sZW4gKyBzdGF0ZS0+bmRpc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY29weS0tKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbnNbc3RhdGUtPmhhdmUrK10gPSAodW5zaWduZWQgc2hvcnQpbGVuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogaGFuZGxlIGVycm9yIGJyZWFrcyBpbiB3aGlsZSAqLworICAgICAgICAgICAgaWYgKHN0YXRlLT5tb2RlID09IEJBRCkgYnJlYWs7CisKKyAgICAgICAgICAgIC8qIGNoZWNrIGZvciBlbmQtb2YtYmxvY2sgY29kZSAoYmV0dGVyIGhhdmUgb25lKSAqLworICAgICAgICAgICAgaWYgKHN0YXRlLT5sZW5zWzI1Nl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGJ1aWxkIGNvZGUgdGFibGVzIC0tIG5vdGU6IGRvIG5vdCBjaGFuZ2UgdGhlIGxlbmJpdHMgb3IgZGlzdGJpdHMKKyAgICAgICAgICAgICAgIHZhbHVlcyBoZXJlICg5IGFuZCA2KSB3aXRob3V0IHJlYWRpbmcgdGhlIGNvbW1lbnRzIGluIGluZnRyZWVzLmgKKyAgICAgICAgICAgICAgIGNvbmNlcm5pbmcgdGhlIEVOT1VHSCBjb25zdGFudHMsIHdoaWNoIGRlcGVuZCBvbiB0aG9zZSB2YWx1ZXMgKi8KKyAgICAgICAgICAgIHN0YXRlLT5uZXh0ID0gc3RhdGUtPmNvZGVzOworICAgICAgICAgICAgc3RhdGUtPmxlbmNvZGUgPSAoY29uc3QgY29kZSBGQVIgKikoc3RhdGUtPm5leHQpOworICAgICAgICAgICAgc3RhdGUtPmxlbmJpdHMgPSA5OworICAgICAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShMRU5TLCBzdGF0ZS0+bGVucywgc3RhdGUtPm5sZW4sICYoc3RhdGUtPm5leHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHN0YXRlLT5sZW5iaXRzKSwgc3RhdGUtPndvcmspOworICAgICAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+ZGlzdGNvZGUgPSAoY29uc3QgY29kZSBGQVIgKikoc3RhdGUtPm5leHQpOworICAgICAgICAgICAgc3RhdGUtPmRpc3RiaXRzID0gNjsKKyAgICAgICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoRElTVFMsIHN0YXRlLT5sZW5zICsgc3RhdGUtPm5sZW4sIHN0YXRlLT5uZGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHN0YXRlLT5uZXh0KSwgJihzdGF0ZS0+ZGlzdGJpdHMpLCBzdGF0ZS0+d29yayk7CisgICAgICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBkaXN0YW5jZXMgc2V0IjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgY29kZXMgb2tcbiIpKTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTEVOXzsKKyAgICAgICAgICAgIGlmIChmbHVzaCA9PSBaX1RSRUVTKSBnb3RvIGluZl9sZWF2ZTsKKyAgICAgICAgY2FzZSBMRU5fOgorICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU47CisgICAgICAgIGNhc2UgTEVOOgorICAgICAgICAgICAgaWYgKGhhdmUgPj0gNiAmJiBsZWZ0ID49IDI1OCkgeworICAgICAgICAgICAgICAgIFJFU1RPUkUoKTsKKyAgICAgICAgICAgICAgICBpbmZsYXRlX2Zhc3Qoc3RybSwgb3V0KTsKKyAgICAgICAgICAgICAgICBMT0FEKCk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5tb2RlID09IFRZUEUpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5iYWNrID0gLTE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+YmFjayA9IDA7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgaGVyZSA9IHN0YXRlLT5sZW5jb2RlW0JJVFMoc3RhdGUtPmxlbmJpdHMpXTsKKyAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKShoZXJlLmJpdHMpIDw9IGJpdHMpIGJyZWFrOworICAgICAgICAgICAgICAgIFBVTExCWVRFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaGVyZS5vcCAmJiAoaGVyZS5vcCAmIDB4ZjApID09IDApIHsKKyAgICAgICAgICAgICAgICBsYXN0ID0gaGVyZTsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS0+bGVuY29kZVtsYXN0LnZhbCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJJVFMobGFzdC5iaXRzICsgbGFzdC5vcCkgPj4gbGFzdC5iaXRzKV07CisgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKGxhc3QuYml0cyArIGhlcmUuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIFBVTExCWVRFKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIERST1BCSVRTKGxhc3QuYml0cyk7CisgICAgICAgICAgICAgICAgc3RhdGUtPmJhY2sgKz0gbGFzdC5iaXRzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRFJPUEJJVFMoaGVyZS5iaXRzKTsKKyAgICAgICAgICAgIHN0YXRlLT5iYWNrICs9IGhlcmUuYml0czsKKyAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggPSAodW5zaWduZWQpaGVyZS52YWw7CisgICAgICAgICAgICBpZiAoKGludCkoaGVyZS5vcCkgPT0gMCkgeworICAgICAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgPworICAgICAgICAgICAgICAgICAgICAgICAgImluZmxhdGU6ICAgICAgICAgbGl0ZXJhbCAnJWMnXG4iIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XG4iLCBoZXJlLnZhbCkpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTElUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGhlcmUub3AgJiAzMikgeworICAgICAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgZW5kIG9mIGJsb2NrXG4iKSk7CisgICAgICAgICAgICAgICAgc3RhdGUtPmJhY2sgPSAtMTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRZUEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaGVyZS5vcCAmIDY0KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5leHRyYSA9ICh1bnNpZ25lZCkoaGVyZS5vcCkgJiAxNTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTEVORVhUOworICAgICAgICBjYXNlIExFTkVYVDoKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZXh0cmEpIHsKKyAgICAgICAgICAgICAgICBORUVEQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggKz0gQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgICAgIERST1BCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICAgICAgc3RhdGUtPmJhY2sgKz0gc3RhdGUtPmV4dHJhOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcbiIsIHN0YXRlLT5sZW5ndGgpKTsKKyAgICAgICAgICAgIHN0YXRlLT53YXMgPSBzdGF0ZS0+bGVuZ3RoOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBESVNUOworICAgICAgICBjYXNlIERJU1Q6CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgaGVyZSA9IHN0YXRlLT5kaXN0Y29kZVtCSVRTKHN0YXRlLT5kaXN0Yml0cyldOworICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKGhlcmUuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgUFVMTEJZVEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoaGVyZS5vcCAmIDB4ZjApID09IDApIHsKKyAgICAgICAgICAgICAgICBsYXN0ID0gaGVyZTsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS0+ZGlzdGNvZGVbbGFzdC52YWwgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApID4+IGxhc3QuYml0cyldOworICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKShsYXN0LmJpdHMgKyBoZXJlLmJpdHMpIDw9IGJpdHMpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBQVUxMQllURSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBEUk9QQklUUyhsYXN0LmJpdHMpOworICAgICAgICAgICAgICAgIHN0YXRlLT5iYWNrICs9IGxhc3QuYml0czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERST1BCSVRTKGhlcmUuYml0cyk7CisgICAgICAgICAgICBzdGF0ZS0+YmFjayArPSBoZXJlLmJpdHM7CisgICAgICAgICAgICBpZiAoaGVyZS5vcCAmIDY0KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBkaXN0YW5jZSBjb2RlIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5vZmZzZXQgPSAodW5zaWduZWQpaGVyZS52YWw7CisgICAgICAgICAgICBzdGF0ZS0+ZXh0cmEgPSAodW5zaWduZWQpKGhlcmUub3ApICYgMTU7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IERJU1RFWFQ7CisgICAgICAgIGNhc2UgRElTVEVYVDoKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZXh0cmEpIHsKKyAgICAgICAgICAgICAgICBORUVEQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgICAgIHN0YXRlLT5vZmZzZXQgKz0gQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgICAgIERST1BCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICAgICAgc3RhdGUtPmJhY2sgKz0gc3RhdGUtPmV4dHJhOworICAgICAgICAgICAgfQorI2lmZGVmIElORkxBVEVfU1RSSUNUCisgICAgICAgICAgICBpZiAoc3RhdGUtPm9mZnNldCA+IHN0YXRlLT5kbWF4KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBUcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGRpc3RhbmNlICV1XG4iLCBzdGF0ZS0+b2Zmc2V0KSk7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IE1BVENIOworICAgICAgICBjYXNlIE1BVENIOgorICAgICAgICAgICAgaWYgKGxlZnQgPT0gMCkgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICBjb3B5ID0gb3V0IC0gbGVmdDsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+b2Zmc2V0ID4gY29weSkgeyAgICAgICAgIC8qIGNvcHkgZnJvbSB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICBjb3B5ID0gc3RhdGUtPm9mZnNldCAtIGNvcHk7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS0+d2hhdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5zYW5lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisjaWZkZWYgSU5GTEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSCisgICAgICAgICAgICAgICAgICAgIFRyYWNlKChzdGRlcnIsICJpbmZsYXRlLmMgdG9vIGZhclxuIikpOworICAgICAgICAgICAgICAgICAgICBjb3B5IC09IHN0YXRlLT53aGF2ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS0+bGVuZ3RoKSBjb3B5ID0gc3RhdGUtPmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvcHkgPiBsZWZ0KSBjb3B5ID0gbGVmdDsKKyAgICAgICAgICAgICAgICAgICAgbGVmdCAtPSBjb3B5OworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoIC09IGNvcHk7CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpwdXQrKyA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tY29weSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+bGVuZ3RoID09IDApIHN0YXRlLT5tb2RlID0gTEVOOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLT53bmV4dCkgeworICAgICAgICAgICAgICAgICAgICBjb3B5IC09IHN0YXRlLT53bmV4dDsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHN0YXRlLT53aW5kb3cgKyAoc3RhdGUtPndzaXplIC0gY29weSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHN0YXRlLT53aW5kb3cgKyAoc3RhdGUtPnduZXh0IC0gY29weSk7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS0+bGVuZ3RoKSBjb3B5ID0gc3RhdGUtPmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvcHkgZnJvbSBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICBmcm9tID0gcHV0IC0gc3RhdGUtPm9mZnNldDsKKyAgICAgICAgICAgICAgICBjb3B5ID0gc3RhdGUtPmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb3B5ID4gbGVmdCkgY29weSA9IGxlZnQ7CisgICAgICAgICAgICBsZWZ0IC09IGNvcHk7CisgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoIC09IGNvcHk7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgKnB1dCsrID0gKmZyb20rKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tY29weSk7CisgICAgICAgICAgICBpZiAoc3RhdGUtPmxlbmd0aCA9PSAwKSBzdGF0ZS0+bW9kZSA9IExFTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExJVDoKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IDApIGdvdG8gaW5mX2xlYXZlOworICAgICAgICAgICAgKnB1dCsrID0gKHVuc2lnbmVkIGNoYXIpKHN0YXRlLT5sZW5ndGgpOworICAgICAgICAgICAgbGVmdC0tOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDSEVDSzoKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+d3JhcCkgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKDMyKTsKKyAgICAgICAgICAgICAgICBvdXQgLT0gbGVmdDsKKyAgICAgICAgICAgICAgICBzdHJtLT50b3RhbF9vdXQgKz0gb3V0OworICAgICAgICAgICAgICAgIHN0YXRlLT50b3RhbCArPSBvdXQ7CisgICAgICAgICAgICAgICAgaWYgKG91dCkKKyAgICAgICAgICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPQorICAgICAgICAgICAgICAgICAgICAgICAgVVBEQVRFKHN0YXRlLT5jaGVjaywgcHV0IC0gb3V0LCBvdXQpOworICAgICAgICAgICAgICAgIG91dCA9IGxlZnQ7CisgICAgICAgICAgICAgICAgaWYgKCgKKyNpZmRlZiBHVU5aSVAKKyAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5mbGFncyA/IGhvbGQgOgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICBaU1dBUDMyKGhvbGQpKSAhPSBzdGF0ZS0+Y2hlY2spIHsKKyAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW5jb3JyZWN0IGRhdGEgY2hlY2siOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgIGNoZWNrIG1hdGNoZXMgdHJhaWxlclxuIikpOworICAgICAgICAgICAgfQorI2lmZGVmIEdVTlpJUAorICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU5HVEg7CisgICAgICAgIGNhc2UgTEVOR1RIOgorICAgICAgICAgICAgaWYgKHN0YXRlLT53cmFwICYmIHN0YXRlLT5mbGFncykgeworICAgICAgICAgICAgICAgIE5FRURCSVRTKDMyKTsKKyAgICAgICAgICAgICAgICBpZiAoaG9sZCAhPSAoc3RhdGUtPnRvdGFsICYgMHhmZmZmZmZmZlVMKSkgeworICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrIjsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBsZW5ndGggbWF0Y2hlcyB0cmFpbGVyXG4iKSk7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gRE9ORTsKKyAgICAgICAgY2FzZSBET05FOgorICAgICAgICAgICAgcmV0ID0gWl9TVFJFQU1fRU5EOworICAgICAgICAgICAgZ290byBpbmZfbGVhdmU7CisgICAgICAgIGNhc2UgQkFEOgorICAgICAgICAgICAgcmV0ID0gWl9EQVRBX0VSUk9SOworICAgICAgICAgICAgZ290byBpbmZfbGVhdmU7CisgICAgICAgIGNhc2UgTUVNOgorICAgICAgICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgICAgICBjYXNlIFNZTkM6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgICAgIH0KKworICAgIC8qCisgICAgICAgUmV0dXJuIGZyb20gaW5mbGF0ZSgpLCB1cGRhdGluZyB0aGUgdG90YWwgY291bnRzIGFuZCB0aGUgY2hlY2sgdmFsdWUuCisgICAgICAgSWYgdGhlcmUgd2FzIG5vIHByb2dyZXNzIGR1cmluZyB0aGUgaW5mbGF0ZSgpIGNhbGwsIHJldHVybiBhIGJ1ZmZlcgorICAgICAgIGVycm9yLiAgQ2FsbCB1cGRhdGV3aW5kb3coKSB0byBjcmVhdGUgYW5kL29yIHVwZGF0ZSB0aGUgd2luZG93IHN0YXRlLgorICAgICAgIE5vdGU6IGEgbWVtb3J5IGVycm9yIGZyb20gaW5mbGF0ZSgpIGlzIG5vbi1yZWNvdmVyYWJsZS4KKyAgICAgKi8KKyAgaW5mX2xlYXZlOgorICAgIFJFU1RPUkUoKTsKKyAgICBpZiAoc3RhdGUtPndzaXplIHx8IChvdXQgIT0gc3RybS0+YXZhaWxfb3V0ICYmIHN0YXRlLT5tb2RlIDwgQkFEICYmCisgICAgICAgICAgICAoc3RhdGUtPm1vZGUgPCBDSEVDSyB8fCBmbHVzaCAhPSBaX0ZJTklTSCkpKQorICAgICAgICBpZiAodXBkYXRld2luZG93KHN0cm0sIHN0cm0tPm5leHRfb3V0LCBvdXQgLSBzdHJtLT5hdmFpbF9vdXQpKSB7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IE1FTTsKKyAgICAgICAgICAgIHJldHVybiBaX01FTV9FUlJPUjsKKyAgICAgICAgfQorICAgIGluIC09IHN0cm0tPmF2YWlsX2luOworICAgIG91dCAtPSBzdHJtLT5hdmFpbF9vdXQ7CisgICAgc3RybS0+dG90YWxfaW4gKz0gaW47CisgICAgc3RybS0+dG90YWxfb3V0ICs9IG91dDsKKyAgICBzdGF0ZS0+dG90YWwgKz0gb3V0OworICAgIGlmIChzdGF0ZS0+d3JhcCAmJiBvdXQpCisgICAgICAgIHN0cm0tPmFkbGVyID0gc3RhdGUtPmNoZWNrID0KKyAgICAgICAgICAgIFVQREFURShzdGF0ZS0+Y2hlY2ssIHN0cm0tPm5leHRfb3V0IC0gb3V0LCBvdXQpOworICAgIHN0cm0tPmRhdGFfdHlwZSA9IHN0YXRlLT5iaXRzICsgKHN0YXRlLT5sYXN0ID8gNjQgOiAwKSArCisgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlLT5tb2RlID09IFRZUEUgPyAxMjggOiAwKSArCisgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlLT5tb2RlID09IExFTl8gfHwgc3RhdGUtPm1vZGUgPT0gQ09QWV8gPyAyNTYgOiAwKTsKKyAgICBpZiAoKChpbiA9PSAwICYmIG91dCA9PSAwKSB8fCBmbHVzaCA9PSBaX0ZJTklTSCkgJiYgcmV0ID09IFpfT0spCisgICAgICAgIHJldCA9IFpfQlVGX0VSUk9SOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBaRVhQT1JUIGluZmxhdGVFbmQoCit6X3N0cmVhbXAgc3RybSkKK3sKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwgfHwgc3RybS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgaWYgKHN0YXRlLT53aW5kb3cgIT0gWl9OVUxMKSBaRlJFRShzdHJtLCBzdGF0ZS0+d2luZG93KTsKKyAgICBaRlJFRShzdHJtLCBzdHJtLT5zdGF0ZSk7CisgICAgc3RybS0+c3RhdGUgPSBaX05VTEw7CisgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiBlbmRcbiIpKTsKKyAgICByZXR1cm4gWl9PSzsKK30KKworaW50IFpFWFBPUlQgaW5mbGF0ZUdldERpY3Rpb25hcnkoCit6X3N0cmVhbXAgc3RybSwKK0J5dGVmICpkaWN0aW9uYXJ5LAordUludCAqZGljdExlbmd0aCkKK3sKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworCisgICAgLyogY2hlY2sgc3RhdGUgKi8KKyAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisKKyAgICAvKiBjb3B5IGRpY3Rpb25hcnkgKi8KKyAgICBpZiAoc3RhdGUtPndoYXZlICYmIGRpY3Rpb25hcnkgIT0gWl9OVUxMKSB7CisgICAgICAgIHptZW1jcHkoZGljdGlvbmFyeSwgc3RhdGUtPndpbmRvdyArIHN0YXRlLT53bmV4dCwKKyAgICAgICAgICAgICAgICBzdGF0ZS0+d2hhdmUgLSBzdGF0ZS0+d25leHQpOworICAgICAgICB6bWVtY3B5KGRpY3Rpb25hcnkgKyBzdGF0ZS0+d2hhdmUgLSBzdGF0ZS0+d25leHQsCisgICAgICAgICAgICAgICAgc3RhdGUtPndpbmRvdywgc3RhdGUtPnduZXh0KTsKKyAgICB9CisgICAgaWYgKGRpY3RMZW5ndGggIT0gWl9OVUxMKQorICAgICAgICAqZGljdExlbmd0aCA9IHN0YXRlLT53aGF2ZTsKKyAgICByZXR1cm4gWl9PSzsKK30KKworaW50IFpFWFBPUlQgaW5mbGF0ZVNldERpY3Rpb25hcnkoCit6X3N0cmVhbXAgc3RybSwKK2NvbnN0IEJ5dGVmICpkaWN0aW9uYXJ5LAordUludCBkaWN0TGVuZ3RoKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgdW5zaWduZWQgbG9uZyBkaWN0aWQ7CisgICAgaW50IHJldDsKKworICAgIGRpY3RpZCA9IDA7CisgICAgLyogY2hlY2sgc3RhdGUgKi8KKyAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgaWYgKHN0YXRlLT53cmFwICE9IDAgJiYgc3RhdGUtPm1vZGUgIT0gRElDVCkKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworCisgICAgLyogY2hlY2sgZm9yIGNvcnJlY3QgZGljdGlvbmFyeSBpZGVudGlmaWVyICovCisgICAgaWYgKHN0YXRlLT5tb2RlID09IERJQ1QpIHsKKyAgICAgICAgZGljdGlkID0gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsKKyAgICAgICAgZGljdGlkID0gYWRsZXIzMihkaWN0aWQsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOworICAgICAgICBpZiAoZGljdGlkICE9IHN0YXRlLT5jaGVjaykKKyAgICAgICAgICAgIHJldHVybiBaX0RBVEFfRVJST1I7CisgICAgfQorCisgICAgLyogY29weSBkaWN0aW9uYXJ5IHRvIHdpbmRvdyB1c2luZyB1cGRhdGV3aW5kb3coKSwgd2hpY2ggd2lsbCBhbWVuZCB0aGUKKyAgICAgICBleGlzdGluZyBkaWN0aW9uYXJ5IGlmIGFwcHJvcHJpYXRlICovCisgICAgcmV0ID0gdXBkYXRld2luZG93KHN0cm0sIGRpY3Rpb25hcnkgKyBkaWN0TGVuZ3RoLCBkaWN0TGVuZ3RoKTsKKyAgICBpZiAocmV0KSB7CisgICAgICAgIHN0YXRlLT5tb2RlID0gTUVNOworICAgICAgICByZXR1cm4gWl9NRU1fRVJST1I7CisgICAgfQorICAgIHN0YXRlLT5oYXZlZGljdCA9IDE7CisgICAgVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgIGRpY3Rpb25hcnkgc2V0XG4iKSk7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKK2ludCBaRVhQT1JUIGluZmxhdGVHZXRIZWFkZXIoCit6X3N0cmVhbXAgc3RybSwKK2d6X2hlYWRlcnAgaGVhZCkKK3sKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworCisgICAgLyogY2hlY2sgc3RhdGUgKi8KKyAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgaWYgKChzdGF0ZS0+d3JhcCAmIDIpID09IDApIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKworICAgIC8qIHNhdmUgaGVhZGVyIHN0cnVjdHVyZSAqLworICAgIHN0YXRlLT5oZWFkID0gaGVhZDsKKyAgICBoZWFkLT5kb25lID0gMDsKKyAgICByZXR1cm4gWl9PSzsKK30KKworLyoKKyAgIFNlYXJjaCBidWZbMC4ubGVuLTFdIGZvciB0aGUgcGF0dGVybjogMCwgMCwgMHhmZiwgMHhmZi4gIFJldHVybiB3aGVuIGZvdW5kCisgICBvciB3aGVuIG91dCBvZiBpbnB1dC4gIFdoZW4gY2FsbGVkLCAqaGF2ZSBpcyB0aGUgbnVtYmVyIG9mIHBhdHRlcm4gYnl0ZXMKKyAgIGZvdW5kIGluIG9yZGVyIHNvIGZhciwgaW4gMC4uMy4gIE9uIHJldHVybiAqaGF2ZSBpcyB1cGRhdGVkIHRvIHRoZSBuZXcKKyAgIHN0YXRlLiAgSWYgb24gcmV0dXJuICpoYXZlIGVxdWFscyBmb3VyLCB0aGVuIHRoZSBwYXR0ZXJuIHdhcyBmb3VuZCBhbmQgdGhlCisgICByZXR1cm4gdmFsdWUgaXMgaG93IG1hbnkgYnl0ZXMgd2VyZSByZWFkIGluY2x1ZGluZyB0aGUgbGFzdCBieXRlIG9mIHRoZQorICAgcGF0dGVybi4gIElmICpoYXZlIGlzIGxlc3MgdGhhbiBmb3VyLCB0aGVuIHRoZSBwYXR0ZXJuIGhhcyBub3QgYmVlbiBmb3VuZAorICAgeWV0IGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIGxlbi4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgc3luY3NlYXJjaCgpIGNhbiBiZQorICAgY2FsbGVkIGFnYWluIHdpdGggbW9yZSBkYXRhIGFuZCB0aGUgKmhhdmUgc3RhdGUuICAqaGF2ZSBpcyBpbml0aWFsaXplZCB0bworICAgemVybyBmb3IgdGhlIGZpcnN0IGNhbGwuCisgKi8KK2xvY2FsIHVuc2lnbmVkIHN5bmNzZWFyY2goCit1bnNpZ25lZCBGQVIgKmhhdmUsCitjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqYnVmLAordW5zaWduZWQgbGVuKQoreworICAgIHVuc2lnbmVkIGdvdDsKKyAgICB1bnNpZ25lZCBuZXh0OworCisgICAgZ290ID0gKmhhdmU7CisgICAgbmV4dCA9IDA7CisgICAgd2hpbGUgKG5leHQgPCBsZW4gJiYgZ290IDwgNCkgeworICAgICAgICBpZiAoKGludCkoYnVmW25leHRdKSA9PSAoZ290IDwgMiA/IDAgOiAweGZmKSkKKyAgICAgICAgICAgIGdvdCsrOworICAgICAgICBlbHNlIGlmIChidWZbbmV4dF0pCisgICAgICAgICAgICBnb3QgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnb3QgPSA0IC0gZ290OworICAgICAgICBuZXh0Kys7CisgICAgfQorICAgICpoYXZlID0gZ290OworICAgIHJldHVybiBuZXh0OworfQorCitpbnQgWkVYUE9SVCBpbmZsYXRlU3luYygKK3pfc3RyZWFtcCBzdHJtKQoreworICAgIHVuc2lnbmVkIGxlbjsgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgdG8gbG9vayBhdCBvciBsb29rZWQgYXQgKi8KKyAgICB1bnNpZ25lZCBsb25nIGluLCBvdXQ7ICAgICAgLyogdGVtcG9yYXJ5IHRvIHNhdmUgdG90YWxfaW4gYW5kIHRvdGFsX291dCAqLworICAgIHVuc2lnbmVkIGNoYXIgYnVmWzRdOyAgICAgICAvKiB0byByZXN0b3JlIGJpdCBidWZmZXIgdG8gYnl0ZSBzdHJpbmcgKi8KKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworCisgICAgLyogY2hlY2sgcGFyYW1ldGVycyAqLworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICBpZiAoc3RybS0+YXZhaWxfaW4gPT0gMCAmJiBzdGF0ZS0+Yml0cyA8IDgpIHJldHVybiBaX0JVRl9FUlJPUjsKKworICAgIC8qIGlmIGZpcnN0IHRpbWUsIHN0YXJ0IHNlYXJjaCBpbiBiaXQgYnVmZmVyICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IFNZTkMpIHsKKyAgICAgICAgc3RhdGUtPm1vZGUgPSBTWU5DOworICAgICAgICBzdGF0ZS0+aG9sZCA8PD0gc3RhdGUtPmJpdHMgJiA3OworICAgICAgICBzdGF0ZS0+Yml0cyAtPSBzdGF0ZS0+Yml0cyAmIDc7CisgICAgICAgIGxlbiA9IDA7CisgICAgICAgIHdoaWxlIChzdGF0ZS0+Yml0cyA+PSA4KSB7CisgICAgICAgICAgICBidWZbbGVuKytdID0gKHVuc2lnbmVkIGNoYXIpKHN0YXRlLT5ob2xkKTsKKyAgICAgICAgICAgIHN0YXRlLT5ob2xkID4+PSA4OworICAgICAgICAgICAgc3RhdGUtPmJpdHMgLT0gODsKKyAgICAgICAgfQorICAgICAgICBzdGF0ZS0+aGF2ZSA9IDA7CisgICAgICAgIHN5bmNzZWFyY2goJihzdGF0ZS0+aGF2ZSksIGJ1ZiwgbGVuKTsKKyAgICB9CisKKyAgICAvKiBzZWFyY2ggYXZhaWxhYmxlIGlucHV0ICovCisgICAgbGVuID0gc3luY3NlYXJjaCgmKHN0YXRlLT5oYXZlKSwgc3RybS0+bmV4dF9pbiwgc3RybS0+YXZhaWxfaW4pOworICAgIHN0cm0tPmF2YWlsX2luIC09IGxlbjsKKyAgICBzdHJtLT5uZXh0X2luICs9IGxlbjsKKyAgICBzdHJtLT50b3RhbF9pbiArPSBsZW47CisKKyAgICAvKiByZXR1cm4gbm8gam95IG9yIHNldCB1cCB0byByZXN0YXJ0IGluZmxhdGUoKSBvbiBhIG5ldyBibG9jayAqLworICAgIGlmIChzdGF0ZS0+aGF2ZSAhPSA0KSByZXR1cm4gWl9EQVRBX0VSUk9SOworICAgIGluID0gc3RybS0+dG90YWxfaW47ICBvdXQgPSBzdHJtLT50b3RhbF9vdXQ7CisgICAgaW5mbGF0ZVJlc2V0KHN0cm0pOworICAgIHN0cm0tPnRvdGFsX2luID0gaW47ICBzdHJtLT50b3RhbF9vdXQgPSBvdXQ7CisgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgIHJldHVybiBaX09LOworfQorCisvKgorICAgUmV0dXJucyB0cnVlIGlmIGluZmxhdGUgaXMgY3VycmVudGx5IGF0IHRoZSBlbmQgb2YgYSBibG9jayBnZW5lcmF0ZWQgYnkKKyAgIFpfU1lOQ19GTFVTSCBvciBaX0ZVTExfRkxVU0guIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBvbmUgUFBQCisgICBpbXBsZW1lbnRhdGlvbiB0byBwcm92aWRlIGFuIGFkZGl0aW9uYWwgc2FmZXR5IGNoZWNrLiBQUFAgdXNlcworICAgWl9TWU5DX0ZMVVNIIGJ1dCByZW1vdmVzIHRoZSBsZW5ndGggYnl0ZXMgb2YgdGhlIHJlc3VsdGluZyBlbXB0eSBzdG9yZWQKKyAgIGJsb2NrLiBXaGVuIGRlY29tcHJlc3NpbmcsIFBQUCBjaGVja3MgdGhhdCBhdCB0aGUgZW5kIG9mIGlucHV0IHBhY2tldCwKKyAgIGluZmxhdGUgaXMgd2FpdGluZyBmb3IgdGhlc2UgbGVuZ3RoIGJ5dGVzLgorICovCitpbnQgWkVYUE9SVCBpbmZsYXRlU3luY1BvaW50KAorel9zdHJlYW1wIHN0cm0pCit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICByZXR1cm4gc3RhdGUtPm1vZGUgPT0gU1RPUkVEICYmIHN0YXRlLT5iaXRzID09IDA7Cit9CisKK2ludCBaRVhQT1JUIGluZmxhdGVDb3B5KAorel9zdHJlYW1wIGRlc3QsCit6X3N0cmVhbXAgc291cmNlKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpjb3B5OworICAgIHVuc2lnbmVkIGNoYXIgRkFSICp3aW5kb3c7CisgICAgdW5zaWduZWQgd3NpemU7CisKKyAgICAvKiBjaGVjayBpbnB1dCAqLworICAgIGlmIChkZXN0ID09IFpfTlVMTCB8fCBzb3VyY2UgPT0gWl9OVUxMIHx8IHNvdXJjZS0+c3RhdGUgPT0gWl9OVUxMIHx8CisgICAgICAgIHNvdXJjZS0+emFsbG9jID09IChhbGxvY19mdW5jKTAgfHwgc291cmNlLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTApCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzb3VyY2UtPnN0YXRlOworCisgICAgLyogYWxsb2NhdGUgc3BhY2UgKi8KKyAgICBjb3B5ID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKQorICAgICAgICAgICBaQUxMT0Moc291cmNlLCAxLCBzaXplb2Yoc3RydWN0IGluZmxhdGVfc3RhdGUpKTsKKyAgICBpZiAoY29weSA9PSBaX05VTEwpIHJldHVybiBaX01FTV9FUlJPUjsKKyAgICB3aW5kb3cgPSBaX05VTEw7CisgICAgaWYgKHN0YXRlLT53aW5kb3cgIT0gWl9OVUxMKSB7CisgICAgICAgIHdpbmRvdyA9ICh1bnNpZ25lZCBjaGFyIEZBUiAqKQorICAgICAgICAgICAgICAgICBaQUxMT0Moc291cmNlLCAxVSA8PCBzdGF0ZS0+d2JpdHMsIHNpemVvZih1bnNpZ25lZCBjaGFyKSk7CisgICAgICAgIGlmICh3aW5kb3cgPT0gWl9OVUxMKSB7CisgICAgICAgICAgICBaRlJFRShzb3VyY2UsIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SOworICAgICAgICB9CisgICAgfQorCisgICAgLyogY29weSBzdGF0ZSAqLworICAgIHptZW1jcHkoKHZvaWRwZilkZXN0LCAodm9pZHBmKXNvdXJjZSwgc2l6ZW9mKHpfc3RyZWFtKSk7CisgICAgem1lbWNweSgodm9pZHBmKWNvcHksICh2b2lkcGYpc3RhdGUsIHNpemVvZihzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSkpOworICAgIGlmIChzdGF0ZS0+bGVuY29kZSA+PSBzdGF0ZS0+Y29kZXMgJiYKKyAgICAgICAgc3RhdGUtPmxlbmNvZGUgPD0gc3RhdGUtPmNvZGVzICsgRU5PVUdIIC0gMSkgeworICAgICAgICBjb3B5LT5sZW5jb2RlID0gY29weS0+Y29kZXMgKyAoc3RhdGUtPmxlbmNvZGUgLSBzdGF0ZS0+Y29kZXMpOworICAgICAgICBjb3B5LT5kaXN0Y29kZSA9IGNvcHktPmNvZGVzICsgKHN0YXRlLT5kaXN0Y29kZSAtIHN0YXRlLT5jb2Rlcyk7CisgICAgfQorICAgIGNvcHktPm5leHQgPSBjb3B5LT5jb2RlcyArIChzdGF0ZS0+bmV4dCAtIHN0YXRlLT5jb2Rlcyk7CisgICAgaWYgKHdpbmRvdyAhPSBaX05VTEwpIHsKKyAgICAgICAgd3NpemUgPSAxVSA8PCBzdGF0ZS0+d2JpdHM7CisgICAgICAgIHptZW1jcHkod2luZG93LCBzdGF0ZS0+d2luZG93LCB3c2l6ZSk7CisgICAgfQorICAgIGNvcHktPndpbmRvdyA9IHdpbmRvdzsKKyAgICBkZXN0LT5zdGF0ZSA9IChzdHJ1Y3QgaW50ZXJuYWxfc3RhdGUgRkFSICopY29weTsKKyAgICByZXR1cm4gWl9PSzsKK30KKworaW50IFpFWFBPUlQgaW5mbGF0ZVVuZGVybWluZSgKK3pfc3RyZWFtcCBzdHJtLAoraW50IHN1YnZlcnQpCit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKworICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICBzdGF0ZS0+c2FuZSA9ICFzdWJ2ZXJ0OworI2lmZGVmIElORkxBVEVfQUxMT1dfSU5WQUxJRF9ESVNUQU5DRV9UT09GQVJfQVJSUgorICAgIHJldHVybiBaX09LOworI2Vsc2UKKyAgICBzdGF0ZS0+c2FuZSA9IDE7CisgICAgcmV0dXJuIFpfREFUQV9FUlJPUjsKKyNlbmRpZgorfQorCitsb25nIFpFWFBPUlQgaW5mbGF0ZU1hcmsoCit6X3N0cmVhbXAgc3RybSkKK3sKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOworCisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIC0xTCA8PCAxNjsKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKKyAgICByZXR1cm4gKChsb25nKShzdGF0ZS0+YmFjaykgPDwgMTYpICsKKyAgICAgICAgKHN0YXRlLT5tb2RlID09IENPUFkgPyBzdGF0ZS0+bGVuZ3RoIDoKKyAgICAgICAgICAgIChzdGF0ZS0+bW9kZSA9PSBNQVRDSCA/IHN0YXRlLT53YXMgLSBzdGF0ZS0+bGVuZ3RoIDogMCkpOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2luZnRyZWVzLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2Z4X3psaWJfaW5mdHJlZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWJhMTMyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX2luZnRyZWVzLmMKQEAgLTAsMCArMSwzMDYgQEAKKy8qIGluZnRyZWVzLmMgLS0gZ2VuZXJhdGUgSHVmZm1hbiB0cmVlcyBmb3IgZWZmaWNpZW50IGRlY29kaW5nCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMyBNYXJrIEFkbGVyCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgKi8KKworI2luY2x1ZGUgInp1dGlsLmgiCisjaW5jbHVkZSAiaW5mdHJlZXMuaCIKKworI2RlZmluZSBNQVhCSVRTIDE1CisKK2NvbnN0IGNoYXIgaW5mbGF0ZV9jb3B5cmlnaHRbXSA9CisgICAiIGluZmxhdGUgMS4yLjggQ29weXJpZ2h0IDE5OTUtMjAxMyBNYXJrIEFkbGVyICI7CisvKgorICBJZiB5b3UgdXNlIHRoZSB6bGliIGxpYnJhcnkgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpcyB3ZWxjb21lCisgIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHlvdXIgcHJvZHVjdC4gSWYgZm9yIHNvbWUgcmVhc29uIHlvdSBjYW5ub3QKKyAgaW5jbHVkZSBzdWNoIGFuIGFja25vd2xlZGdtZW50LCBJIHdvdWxkIGFwcHJlY2lhdGUgdGhhdCB5b3Uga2VlcCB0aGlzCisgIGNvcHlyaWdodCBzdHJpbmcgaW4gdGhlIGV4ZWN1dGFibGUgb2YgeW91ciBwcm9kdWN0LgorICovCisKKy8qCisgICBCdWlsZCBhIHNldCBvZiB0YWJsZXMgdG8gZGVjb2RlIHRoZSBwcm92aWRlZCBjYW5vbmljYWwgSHVmZm1hbiBjb2RlLgorICAgVGhlIGNvZGUgbGVuZ3RocyBhcmUgbGVuc1swLi5jb2Rlcy0xXS4gIFRoZSByZXN1bHQgc3RhcnRzIGF0ICp0YWJsZSwKKyAgIHdob3NlIGluZGljZXMgYXJlIDAuLjJeYml0cy0xLiAgd29yayBpcyBhIHdyaXRhYmxlIGFycmF5IG9mIGF0IGxlYXN0CisgICBsZW5zIHNob3J0cywgd2hpY2ggaXMgdXNlZCBhcyBhIHdvcmsgYXJlYS4gIHR5cGUgaXMgdGhlIHR5cGUgb2YgY29kZQorICAgdG8gYmUgZ2VuZXJhdGVkLCBDT0RFUywgTEVOUywgb3IgRElTVFMuICBPbiByZXR1cm4sIHplcm8gaXMgc3VjY2VzcywKKyAgIC0xIGlzIGFuIGludmFsaWQgY29kZSwgYW5kICsxIG1lYW5zIHRoYXQgRU5PVUdIIGlzbid0IGVub3VnaC4gIHRhYmxlCisgICBvbiByZXR1cm4gcG9pbnRzIHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBlbnRyeSdzIGFkZHJlc3MuICBiaXRzIGlzIHRoZQorICAgcmVxdWVzdGVkIHJvb3QgdGFibGUgaW5kZXggYml0cywgYW5kIG9uIHJldHVybiBpdCBpcyB0aGUgYWN0dWFsIHJvb3QKKyAgIHRhYmxlIGluZGV4IGJpdHMuICBJdCB3aWxsIGRpZmZlciBpZiB0aGUgcmVxdWVzdCBpcyBncmVhdGVyIHRoYW4gdGhlCisgICBsb25nZXN0IGNvZGUgb3IgaWYgaXQgaXMgbGVzcyB0aGFuIHRoZSBzaG9ydGVzdCBjb2RlLgorICovCitpbnQgWkxJQl9JTlRFUk5BTCBpbmZsYXRlX3RhYmxlKAorY29kZXR5cGUgdHlwZSwKK3Vuc2lnbmVkIHNob3J0IEZBUiAqbGVucywKK3Vuc2lnbmVkIGNvZGVzLAorY29kZSBGQVIgKiBGQVIgKnRhYmxlLAordW5zaWduZWQgRkFSICpiaXRzLAordW5zaWduZWQgc2hvcnQgRkFSICp3b3JrKQoreworICAgIHVuc2lnbmVkIGxlbjsgICAgICAgICAgICAgICAvKiBhIGNvZGUncyBsZW5ndGggaW4gYml0cyAqLworICAgIHVuc2lnbmVkIHN5bTsgICAgICAgICAgICAgICAvKiBpbmRleCBvZiBjb2RlIHN5bWJvbHMgKi8KKyAgICB1bnNpZ25lZCBtaW4sIG1heDsgICAgICAgICAgLyogbWluaW11bSBhbmQgbWF4aW11bSBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCByb290OyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGluZGV4IGJpdHMgZm9yIHJvb3QgdGFibGUgKi8KKyAgICB1bnNpZ25lZCBjdXJyOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGluZGV4IGJpdHMgZm9yIGN1cnJlbnQgdGFibGUgKi8KKyAgICB1bnNpZ25lZCBkcm9wOyAgICAgICAgICAgICAgLyogY29kZSBiaXRzIHRvIGRyb3AgZm9yIHN1Yi10YWJsZSAqLworICAgIGludCBsZWZ0OyAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgcHJlZml4IGNvZGVzIGF2YWlsYWJsZSAqLworICAgIHVuc2lnbmVkIHVzZWQ7ICAgICAgICAgICAgICAvKiBjb2RlIGVudHJpZXMgaW4gdGFibGUgdXNlZCAqLworICAgIHVuc2lnbmVkIGh1ZmY7ICAgICAgICAgICAgICAvKiBIdWZmbWFuIGNvZGUgKi8KKyAgICB1bnNpZ25lZCBpbmNyOyAgICAgICAgICAgICAgLyogZm9yIGluY3JlbWVudGluZyBjb2RlLCBpbmRleCAqLworICAgIHVuc2lnbmVkIGZpbGw7ICAgICAgICAgICAgICAvKiBpbmRleCBmb3IgcmVwbGljYXRpbmcgZW50cmllcyAqLworICAgIHVuc2lnbmVkIGxvdzsgICAgICAgICAgICAgICAvKiBsb3cgYml0cyBmb3IgY3VycmVudCByb290IGVudHJ5ICovCisgICAgdW5zaWduZWQgbWFzazsgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxvdyByb290IGJpdHMgKi8KKyAgICBjb2RlIGhlcmU7ICAgICAgICAgICAgICAgICAgLyogdGFibGUgZW50cnkgZm9yIGR1cGxpY2F0aW9uICovCisgICAgY29kZSBGQVIgKm5leHQ7ICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIHRhYmxlICovCisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRkFSICpiYXNlOyAgICAgLyogYmFzZSB2YWx1ZSB0YWJsZSB0byB1c2UgKi8KKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBGQVIgKmV4dHJhOyAgICAvKiBleHRyYSBiaXRzIHRhYmxlIHRvIHVzZSAqLworICAgIGludCBlbmQ7ICAgICAgICAgICAgICAgICAgICAvKiB1c2UgYmFzZSBhbmQgZXh0cmEgZm9yIHN5bWJvbCA+IGVuZCAqLworICAgIHVuc2lnbmVkIHNob3J0IGNvdW50W01BWEJJVFMrMV07ICAgIC8qIG51bWJlciBvZiBjb2RlcyBvZiBlYWNoIGxlbmd0aCAqLworICAgIHVuc2lnbmVkIHNob3J0IG9mZnNbTUFYQklUUysxXTsgICAgIC8qIG9mZnNldHMgaW4gdGFibGUgZm9yIGVhY2ggbGVuZ3RoICovCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGxiYXNlWzMxXSA9IHsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGJhc2UgKi8KKyAgICAgICAgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMywgMTUsIDE3LCAxOSwgMjMsIDI3LCAzMSwKKyAgICAgICAgMzUsIDQzLCA1MSwgNTksIDY3LCA4MywgOTksIDExNSwgMTMxLCAxNjMsIDE5NSwgMjI3LCAyNTgsIDAsIDB9OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsZXh0WzMxXSA9IHsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGV4dHJhICovCisgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LAorICAgICAgICAxOSwgMTksIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIxLCAxNiwgNzIsIDc4fTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGJhc2VbMzJdID0geyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4yOSBiYXNlICovCisgICAgICAgIDEsIDIsIDMsIDQsIDUsIDcsIDksIDEzLCAxNywgMjUsIDMzLCA0OSwgNjUsIDk3LCAxMjksIDE5MywKKyAgICAgICAgMjU3LCAzODUsIDUxMywgNzY5LCAxMDI1LCAxNTM3LCAyMDQ5LCAzMDczLCA0MDk3LCA2MTQ1LAorICAgICAgICA4MTkzLCAxMjI4OSwgMTYzODUsIDI0NTc3LCAwLCAwfTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGV4dFszMl0gPSB7IC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGV4dHJhICovCisgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE4LCAxOCwgMTksIDE5LCAyMCwgMjAsIDIxLCAyMSwgMjIsIDIyLAorICAgICAgICAyMywgMjMsIDI0LCAyNCwgMjUsIDI1LCAyNiwgMjYsIDI3LCAyNywKKyAgICAgICAgMjgsIDI4LCAyOSwgMjksIDY0LCA2NH07CisKKyAgICAvKgorICAgICAgIFByb2Nlc3MgYSBzZXQgb2YgY29kZSBsZW5ndGhzIHRvIGNyZWF0ZSBhIGNhbm9uaWNhbCBIdWZmbWFuIGNvZGUuICBUaGUKKyAgICAgICBjb2RlIGxlbmd0aHMgYXJlIGxlbnNbMC4uY29kZXMtMV0uICBFYWNoIGxlbmd0aCBjb3JyZXNwb25kcyB0byB0aGUKKyAgICAgICBzeW1ib2xzIDAuLmNvZGVzLTEuICBUaGUgSHVmZm1hbiBjb2RlIGlzIGdlbmVyYXRlZCBieSBmaXJzdCBzb3J0aW5nIHRoZQorICAgICAgIHN5bWJvbHMgYnkgbGVuZ3RoIGZyb20gc2hvcnQgdG8gbG9uZywgYW5kIHJldGFpbmluZyB0aGUgc3ltYm9sIG9yZGVyCisgICAgICAgZm9yIGNvZGVzIHdpdGggZXF1YWwgbGVuZ3Rocy4gIFRoZW4gdGhlIGNvZGUgc3RhcnRzIHdpdGggYWxsIHplcm8gYml0cworICAgICAgIGZvciB0aGUgZmlyc3QgY29kZSBvZiB0aGUgc2hvcnRlc3QgbGVuZ3RoLCBhbmQgdGhlIGNvZGVzIGFyZSBpbnRlZ2VyCisgICAgICAgaW5jcmVtZW50cyBmb3IgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgemVyb3MgYXJlIGFwcGVuZGVkIGFzIHRoZSBsZW5ndGgKKyAgICAgICBpbmNyZWFzZXMuICBGb3IgdGhlIGRlZmxhdGUgZm9ybWF0LCB0aGVzZSBiaXRzIGFyZSBzdG9yZWQgYmFja3dhcmRzCisgICAgICAgZnJvbSB0aGVpciBtb3JlIG5hdHVyYWwgaW50ZWdlciBpbmNyZW1lbnQgb3JkZXJpbmcsIGFuZCBzbyB3aGVuIHRoZQorICAgICAgIGRlY29kaW5nIHRhYmxlcyBhcmUgYnVpbHQgaW4gdGhlIGxhcmdlIGxvb3AgYmVsb3csIHRoZSBpbnRlZ2VyIGNvZGVzCisgICAgICAgYXJlIGluY3JlbWVudGVkIGJhY2t3YXJkcy4KKworICAgICAgIFRoaXMgcm91dGluZSBhc3N1bWVzLCBidXQgZG9lcyBub3QgY2hlY2ssIHRoYXQgYWxsIG9mIHRoZSBlbnRyaWVzIGluCisgICAgICAgbGVuc1tdIGFyZSBpbiB0aGUgcmFuZ2UgMC4uTUFYQklUUy4gIFRoZSBjYWxsZXIgbXVzdCBhc3N1cmUgdGhpcy4KKyAgICAgICAxLi5NQVhCSVRTIGlzIGludGVycHJldGVkIGFzIHRoYXQgY29kZSBsZW5ndGguICB6ZXJvIG1lYW5zIHRoYXQgdGhhdAorICAgICAgIHN5bWJvbCBkb2VzIG5vdCBvY2N1ciBpbiB0aGlzIGNvZGUuCisKKyAgICAgICBUaGUgY29kZXMgYXJlIHNvcnRlZCBieSBjb21wdXRpbmcgYSBjb3VudCBvZiBjb2RlcyBmb3IgZWFjaCBsZW5ndGgsCisgICAgICAgY3JlYXRpbmcgZnJvbSB0aGF0IGEgdGFibGUgb2Ygc3RhcnRpbmcgaW5kaWNlcyBmb3IgZWFjaCBsZW5ndGggaW4gdGhlCisgICAgICAgc29ydGVkIHRhYmxlLCBhbmQgdGhlbiBlbnRlcmluZyB0aGUgc3ltYm9scyBpbiBvcmRlciBpbiB0aGUgc29ydGVkCisgICAgICAgdGFibGUuICBUaGUgc29ydGVkIHRhYmxlIGlzIHdvcmtbXSwgd2l0aCB0aGF0IHNwYWNlIGJlaW5nIHByb3ZpZGVkIGJ5CisgICAgICAgdGhlIGNhbGxlci4KKworICAgICAgIFRoZSBsZW5ndGggY291bnRzIGFyZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyBhcyB3ZWxsLCBpLmUuIGZpbmRpbmcKKyAgICAgICB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBsZW5ndGggY29kZXMsIGRldGVybWluaW5nIGlmIHRoZXJlIGFyZSBhbnkKKyAgICAgICBjb2RlcyBhdCBhbGwsIGNoZWNraW5nIGZvciBhIHZhbGlkIHNldCBvZiBsZW5ndGhzLCBhbmQgbG9va2luZyBhaGVhZAorICAgICAgIGF0IGxlbmd0aCBjb3VudHMgdG8gZGV0ZXJtaW5lIHN1Yi10YWJsZSBzaXplcyB3aGVuIGJ1aWxkaW5nIHRoZQorICAgICAgIGRlY29kaW5nIHRhYmxlcy4KKyAgICAgKi8KKworICAgIC8qIGFjY3VtdWxhdGUgbGVuZ3RocyBmb3IgY29kZXMgKGFzc3VtZXMgbGVuc1tdIGFsbCBpbiAwLi5NQVhCSVRTKSAqLworICAgIGZvciAobGVuID0gMDsgbGVuIDw9IE1BWEJJVFM7IGxlbisrKQorICAgICAgICBjb3VudFtsZW5dID0gMDsKKyAgICBmb3IgKHN5bSA9IDA7IHN5bSA8IGNvZGVzOyBzeW0rKykKKyAgICAgICAgY291bnRbbGVuc1tzeW1dXSsrOworCisgICAgLyogYm91bmQgY29kZSBsZW5ndGhzLCBmb3JjZSByb290IHRvIGJlIHdpdGhpbiBjb2RlIGxlbmd0aHMgKi8KKyAgICByb290ID0gKmJpdHM7CisgICAgZm9yIChtYXggPSBNQVhCSVRTOyBtYXggPj0gMTsgbWF4LS0pCisgICAgICAgIGlmIChjb3VudFttYXhdICE9IDApIGJyZWFrOworICAgIGlmIChyb290ID4gbWF4KSByb290ID0gbWF4OworICAgIGlmIChtYXggPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgIC8qIG5vIHN5bWJvbHMgdG8gY29kZSBhdCBhbGwgKi8KKyAgICAgICAgaGVyZS5vcCA9ICh1bnNpZ25lZCBjaGFyKTY0OyAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovCisgICAgICAgIGhlcmUuYml0cyA9ICh1bnNpZ25lZCBjaGFyKTE7CisgICAgICAgIGhlcmUudmFsID0gKHVuc2lnbmVkIHNob3J0KTA7CisgICAgICAgICooKnRhYmxlKSsrID0gaGVyZTsgICAgICAgICAgICAgLyogbWFrZSBhIHRhYmxlIHRvIGZvcmNlIGFuIGVycm9yICovCisgICAgICAgICooKnRhYmxlKSsrID0gaGVyZTsKKyAgICAgICAgKmJpdHMgPSAxOworICAgICAgICByZXR1cm4gMDsgICAgIC8qIG5vIHN5bWJvbHMsIGJ1dCB3YWl0IGZvciBkZWNvZGluZyB0byByZXBvcnQgZXJyb3IgKi8KKyAgICB9CisgICAgZm9yIChtaW4gPSAxOyBtaW4gPCBtYXg7IG1pbisrKQorICAgICAgICBpZiAoY291bnRbbWluXSAhPSAwKSBicmVhazsKKyAgICBpZiAocm9vdCA8IG1pbikgcm9vdCA9IG1pbjsKKworICAgIC8qIGNoZWNrIGZvciBhbiBvdmVyLXN1YnNjcmliZWQgb3IgaW5jb21wbGV0ZSBzZXQgb2YgbGVuZ3RocyAqLworICAgIGxlZnQgPSAxOworICAgIGZvciAobGVuID0gMTsgbGVuIDw9IE1BWEJJVFM7IGxlbisrKSB7CisgICAgICAgIGxlZnQgPDw9IDE7CisgICAgICAgIGxlZnQgLT0gY291bnRbbGVuXTsKKyAgICAgICAgaWYgKGxlZnQgPCAwKSByZXR1cm4gLTE7ICAgICAgICAvKiBvdmVyLXN1YnNjcmliZWQgKi8KKyAgICB9CisgICAgaWYgKGxlZnQgPiAwICYmICh0eXBlID09IENPREVTIHx8IG1heCAhPSAxKSkKKyAgICAgICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAvKiBpbmNvbXBsZXRlIHNldCAqLworCisgICAgLyogZ2VuZXJhdGUgb2Zmc2V0cyBpbnRvIHN5bWJvbCB0YWJsZSBmb3IgZWFjaCBsZW5ndGggZm9yIHNvcnRpbmcgKi8KKyAgICBvZmZzWzFdID0gMDsKKyAgICBmb3IgKGxlbiA9IDE7IGxlbiA8IE1BWEJJVFM7IGxlbisrKQorICAgICAgICBvZmZzW2xlbiArIDFdID0gb2Zmc1tsZW5dICsgY291bnRbbGVuXTsKKworICAgIC8qIHNvcnQgc3ltYm9scyBieSBsZW5ndGgsIGJ5IHN5bWJvbCBvcmRlciB3aXRoaW4gZWFjaCBsZW5ndGggKi8KKyAgICBmb3IgKHN5bSA9IDA7IHN5bSA8IGNvZGVzOyBzeW0rKykKKyAgICAgICAgaWYgKGxlbnNbc3ltXSAhPSAwKSB3b3JrW29mZnNbbGVuc1tzeW1dXSsrXSA9ICh1bnNpZ25lZCBzaG9ydClzeW07CisKKyAgICAvKgorICAgICAgIENyZWF0ZSBhbmQgZmlsbCBpbiBkZWNvZGluZyB0YWJsZXMuICBJbiB0aGlzIGxvb3AsIHRoZSB0YWJsZSBiZWluZworICAgICAgIGZpbGxlZCBpcyBhdCBuZXh0IGFuZCBoYXMgY3VyciBpbmRleCBiaXRzLiAgVGhlIGNvZGUgYmVpbmcgdXNlZCBpcyBodWZmCisgICAgICAgd2l0aCBsZW5ndGggbGVuLiAgVGhhdCBjb2RlIGlzIGNvbnZlcnRlZCB0byBhbiBpbmRleCBieSBkcm9wcGluZyBkcm9wCisgICAgICAgYml0cyBvZmYgb2YgdGhlIGJvdHRvbS4gIEZvciBjb2RlcyB3aGVyZSBsZW4gaXMgbGVzcyB0aGFuIGRyb3AgKyBjdXJyLAorICAgICAgIHRob3NlIHRvcCBkcm9wICsgY3VyciAtIGxlbiBiaXRzIGFyZSBpbmNyZW1lbnRlZCB0aHJvdWdoIGFsbCB2YWx1ZXMgdG8KKyAgICAgICBmaWxsIHRoZSB0YWJsZSB3aXRoIHJlcGxpY2F0ZWQgZW50cmllcy4KKworICAgICAgIHJvb3QgaXMgdGhlIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciB0aGUgcm9vdCB0YWJsZS4gIFdoZW4gbGVuIGV4Y2VlZHMKKyAgICAgICByb290LCBzdWItdGFibGVzIGFyZSBjcmVhdGVkIHBvaW50ZWQgdG8gYnkgdGhlIHJvb3QgZW50cnkgd2l0aCBhbiBpbmRleAorICAgICAgIG9mIHRoZSBsb3cgcm9vdCBiaXRzIG9mIGh1ZmYuICBUaGlzIGlzIHNhdmVkIGluIGxvdyB0byBjaGVjayBmb3Igd2hlbiBhCisgICAgICAgbmV3IHN1Yi10YWJsZSBzaG91bGQgYmUgc3RhcnRlZC4gIGRyb3AgaXMgemVybyB3aGVuIHRoZSByb290IHRhYmxlIGlzCisgICAgICAgYmVpbmcgZmlsbGVkLCBhbmQgZHJvcCBpcyByb290IHdoZW4gc3ViLXRhYmxlcyBhcmUgYmVpbmcgZmlsbGVkLgorCisgICAgICAgV2hlbiBhIG5ldyBzdWItdGFibGUgaXMgbmVlZGVkLCBpdCBpcyBuZWNlc3NhcnkgdG8gbG9vayBhaGVhZCBpbiB0aGUKKyAgICAgICBjb2RlIGxlbmd0aHMgdG8gZGV0ZXJtaW5lIHdoYXQgc2l6ZSBzdWItdGFibGUgaXMgbmVlZGVkLiAgVGhlIGxlbmd0aAorICAgICAgIGNvdW50cyBhcmUgdXNlZCBmb3IgdGhpcywgYW5kIHNvIGNvdW50W10gaXMgZGVjcmVtZW50ZWQgYXMgY29kZXMgYXJlCisgICAgICAgZW50ZXJlZCBpbiB0aGUgdGFibGVzLgorCisgICAgICAgdXNlZCBrZWVwcyB0cmFjayBvZiBob3cgbWFueSB0YWJsZSBlbnRyaWVzIGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB0aGUKKyAgICAgICBwcm92aWRlZCAqdGFibGUgc3BhY2UuICBJdCBpcyBjaGVja2VkIGZvciBMRU5TIGFuZCBESVNUIHRhYmxlcyBhZ2FpbnN0CisgICAgICAgdGhlIGNvbnN0YW50cyBFTk9VR0hfTEVOUyBhbmQgRU5PVUdIX0RJU1RTIHRvIGd1YXJkIGFnYWluc3QgY2hhbmdlcyBpbgorICAgICAgIHRoZSBpbml0aWFsIHJvb3QgdGFibGUgc2l6ZSBjb25zdGFudHMuICBTZWUgdGhlIGNvbW1lbnRzIGluIGluZnRyZWVzLmgKKyAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgICAgIHN5bSBpbmNyZW1lbnRzIHRocm91Z2ggYWxsIHN5bWJvbHMsIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzIHdoZW4KKyAgICAgICBhbGwgY29kZXMgb2YgbGVuZ3RoIG1heCwgaS5lLiBhbGwgY29kZXMsIGhhdmUgYmVlbiBwcm9jZXNzZWQuICBUaGlzCisgICAgICAgcm91dGluZSBwZXJtaXRzIGluY29tcGxldGUgY29kZXMsIHNvIGFub3RoZXIgbG9vcCBhZnRlciB0aGlzIG9uZSBmaWxscworICAgICAgIGluIHRoZSByZXN0IG9mIHRoZSBkZWNvZGluZyB0YWJsZXMgd2l0aCBpbnZhbGlkIGNvZGUgbWFya2Vycy4KKyAgICAgKi8KKworICAgIC8qIHNldCB1cCBmb3IgY29kZSB0eXBlICovCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDT0RFUzoKKyAgICAgICAgYmFzZSA9IGV4dHJhID0gd29yazsgICAgLyogZHVtbXkgdmFsdWUtLW5vdCB1c2VkICovCisgICAgICAgIGVuZCA9IDE5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExFTlM6CisgICAgICAgIGJhc2UgPSBsYmFzZTsKKyAgICAgICAgYmFzZSAtPSAyNTc7CisgICAgICAgIGV4dHJhID0gbGV4dDsKKyAgICAgICAgZXh0cmEgLT0gMjU3OworICAgICAgICBlbmQgPSAyNTY7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgLyogRElTVFMgKi8KKyAgICAgICAgYmFzZSA9IGRiYXNlOworICAgICAgICBleHRyYSA9IGRleHQ7CisgICAgICAgIGVuZCA9IC0xOworICAgIH0KKworICAgIC8qIGluaXRpYWxpemUgc3RhdGUgZm9yIGxvb3AgKi8KKyAgICBodWZmID0gMDsgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSAqLworICAgIHN5bSA9IDA7ICAgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIHN5bWJvbCAqLworICAgIGxlbiA9IG1pbjsgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIGxlbmd0aCAqLworICAgIG5leHQgPSAqdGFibGU7ICAgICAgICAgICAgICAvKiBjdXJyZW50IHRhYmxlIHRvIGZpbGwgaW4gKi8KKyAgICBjdXJyID0gcm9vdDsgICAgICAgICAgICAgICAgLyogY3VycmVudCB0YWJsZSBpbmRleCBiaXRzICovCisgICAgZHJvcCA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgYml0cyB0byBkcm9wIGZyb20gY29kZSBmb3IgaW5kZXggKi8KKyAgICBsb3cgPSAodW5zaWduZWQpKC0xKTsgICAgICAgLyogdHJpZ2dlciBuZXcgc3ViLXRhYmxlIHdoZW4gbGVuID4gcm9vdCAqLworICAgIHVzZWQgPSAxVSA8PCByb290OyAgICAgICAgICAvKiB1c2Ugcm9vdCB0YWJsZSBlbnRyaWVzICovCisgICAgbWFzayA9IHVzZWQgLSAxOyAgICAgICAgICAgIC8qIG1hc2sgZm9yIGNvbXBhcmluZyBsb3cgKi8KKworICAgIC8qIGNoZWNrIGF2YWlsYWJsZSB0YWJsZSBzcGFjZSAqLworICAgIGlmICgodHlwZSA9PSBMRU5TICYmIHVzZWQgPiBFTk9VR0hfTEVOUykgfHwKKyAgICAgICAgKHR5cGUgPT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpCisgICAgICAgIHJldHVybiAxOworCisgICAgLyogcHJvY2VzcyBhbGwgY29kZXMgYW5kIG1ha2UgdGFibGUgZW50cmllcyAqLworICAgIGZvciAoOzspIHsKKyAgICAgICAgLyogY3JlYXRlIHRhYmxlIGVudHJ5ICovCisgICAgICAgIGhlcmUuYml0cyA9ICh1bnNpZ25lZCBjaGFyKShsZW4gLSBkcm9wKTsKKyAgICAgICAgaWYgKChpbnQpKHdvcmtbc3ltXSkgPCBlbmQpIHsKKyAgICAgICAgICAgIGhlcmUub3AgPSAodW5zaWduZWQgY2hhcikwOworICAgICAgICAgICAgaGVyZS52YWwgPSB3b3JrW3N5bV07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKGludCkod29ya1tzeW1dKSA+IGVuZCkgeworICAgICAgICAgICAgaGVyZS5vcCA9ICh1bnNpZ25lZCBjaGFyKShleHRyYVt3b3JrW3N5bV1dKTsKKyAgICAgICAgICAgIGhlcmUudmFsID0gYmFzZVt3b3JrW3N5bV1dOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaGVyZS5vcCA9ICh1bnNpZ25lZCBjaGFyKSgzMiArIDY0KTsgICAgICAgICAvKiBlbmQgb2YgYmxvY2sgKi8KKyAgICAgICAgICAgIGhlcmUudmFsID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHJlcGxpY2F0ZSBmb3IgdGhvc2UgaW5kaWNlcyB3aXRoIGxvdyBsZW4gYml0cyBlcXVhbCB0byBodWZmICovCisgICAgICAgIGluY3IgPSAxVSA8PCAobGVuIC0gZHJvcCk7CisgICAgICAgIGZpbGwgPSAxVSA8PCBjdXJyOworICAgICAgICBtaW4gPSBmaWxsOyAgICAgICAgICAgICAgICAgLyogc2F2ZSBvZmZzZXQgdG8gbmV4dCB0YWJsZSAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICBmaWxsIC09IGluY3I7CisgICAgICAgICAgICBuZXh0WyhodWZmID4+IGRyb3ApICsgZmlsbF0gPSBoZXJlOworICAgICAgICB9IHdoaWxlIChmaWxsICE9IDApOworCisgICAgICAgIC8qIGJhY2t3YXJkcyBpbmNyZW1lbnQgdGhlIGxlbi1iaXQgY29kZSBodWZmICovCisgICAgICAgIGluY3IgPSAxVSA8PCAobGVuIC0gMSk7CisgICAgICAgIHdoaWxlIChodWZmICYgaW5jcikKKyAgICAgICAgICAgIGluY3IgPj49IDE7CisgICAgICAgIGlmIChpbmNyICE9IDApIHsKKyAgICAgICAgICAgIGh1ZmYgJj0gaW5jciAtIDE7CisgICAgICAgICAgICBodWZmICs9IGluY3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaHVmZiA9IDA7CisKKyAgICAgICAgLyogZ28gdG8gbmV4dCBzeW1ib2wsIHVwZGF0ZSBjb3VudCwgbGVuICovCisgICAgICAgIHN5bSsrOworICAgICAgICBpZiAoLS0oY291bnRbbGVuXSkgPT0gMCkgeworICAgICAgICAgICAgaWYgKGxlbiA9PSBtYXgpIGJyZWFrOworICAgICAgICAgICAgbGVuID0gbGVuc1t3b3JrW3N5bV1dOworICAgICAgICB9CisKKyAgICAgICAgLyogY3JlYXRlIG5ldyBzdWItdGFibGUgaWYgbmVlZGVkICovCisgICAgICAgIGlmIChsZW4gPiByb290ICYmIChodWZmICYgbWFzaykgIT0gbG93KSB7CisgICAgICAgICAgICAvKiBpZiBmaXJzdCB0aW1lLCB0cmFuc2l0aW9uIHRvIHN1Yi10YWJsZXMgKi8KKyAgICAgICAgICAgIGlmIChkcm9wID09IDApCisgICAgICAgICAgICAgICAgZHJvcCA9IHJvb3Q7CisKKyAgICAgICAgICAgIC8qIGluY3JlbWVudCBwYXN0IGxhc3QgdGFibGUgKi8KKyAgICAgICAgICAgIG5leHQgKz0gbWluOyAgICAgICAgICAgIC8qIGhlcmUgbWluIGlzIDEgPDwgY3VyciAqLworCisgICAgICAgICAgICAvKiBkZXRlcm1pbmUgbGVuZ3RoIG9mIG5leHQgdGFibGUgKi8KKyAgICAgICAgICAgIGN1cnIgPSBsZW4gLSBkcm9wOworICAgICAgICAgICAgbGVmdCA9IChpbnQpKDEgPDwgY3Vycik7CisgICAgICAgICAgICB3aGlsZSAoY3VyciArIGRyb3AgPCBtYXgpIHsKKyAgICAgICAgICAgICAgICBsZWZ0IC09IGNvdW50W2N1cnIgKyBkcm9wXTsKKyAgICAgICAgICAgICAgICBpZiAobGVmdCA8PSAwKSBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJyKys7CisgICAgICAgICAgICAgICAgbGVmdCA8PD0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogY2hlY2sgZm9yIGVub3VnaCBzcGFjZSAqLworICAgICAgICAgICAgdXNlZCArPSAxVSA8PCBjdXJyOworICAgICAgICAgICAgaWYgKCh0eXBlID09IExFTlMgJiYgdXNlZCA+IEVOT1VHSF9MRU5TKSB8fAorICAgICAgICAgICAgICAgICh0eXBlID09IERJU1RTICYmIHVzZWQgPiBFTk9VR0hfRElTVFMpKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAgICAgICAvKiBwb2ludCBlbnRyeSBpbiByb290IHRhYmxlIHRvIHN1Yi10YWJsZSAqLworICAgICAgICAgICAgbG93ID0gaHVmZiAmIG1hc2s7CisgICAgICAgICAgICAoKnRhYmxlKVtsb3ddLm9wID0gKHVuc2lnbmVkIGNoYXIpY3VycjsKKyAgICAgICAgICAgICgqdGFibGUpW2xvd10uYml0cyA9ICh1bnNpZ25lZCBjaGFyKXJvb3Q7CisgICAgICAgICAgICAoKnRhYmxlKVtsb3ddLnZhbCA9ICh1bnNpZ25lZCBzaG9ydCkobmV4dCAtICp0YWJsZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBmaWxsIGluIHJlbWFpbmluZyB0YWJsZSBlbnRyeSBpZiBjb2RlIGlzIGluY29tcGxldGUgKGd1YXJhbnRlZWQgdG8gaGF2ZQorICAgICAgIGF0IG1vc3Qgb25lIHJlbWFpbmluZyBlbnRyeSwgc2luY2UgaWYgdGhlIGNvZGUgaXMgaW5jb21wbGV0ZSwgdGhlCisgICAgICAgbWF4aW11bSBjb2RlIGxlbmd0aCB0aGF0IHdhcyBhbGxvd2VkIHRvIGdldCB0aGlzIGZhciBpcyBvbmUgYml0KSAqLworICAgIGlmIChodWZmICE9IDApIHsKKyAgICAgICAgaGVyZS5vcCA9ICh1bnNpZ25lZCBjaGFyKTY0OyAgICAgICAgICAgIC8qIGludmFsaWQgY29kZSBtYXJrZXIgKi8KKyAgICAgICAgaGVyZS5iaXRzID0gKHVuc2lnbmVkIGNoYXIpKGxlbiAtIGRyb3ApOworICAgICAgICBoZXJlLnZhbCA9ICh1bnNpZ25lZCBzaG9ydCkwOworICAgICAgICBuZXh0W2h1ZmZdID0gaGVyZTsKKyAgICB9CisKKyAgICAvKiBzZXQgcmV0dXJuIHBhcmFtZXRlcnMgKi8KKyAgICAqdGFibGUgKz0gdXNlZDsKKyAgICAqYml0cyA9IHJvb3Q7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2Z4X3psaWJfdHJlZXMuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl90cmVlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZmQ5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2Z4X3psaWJfdHJlZXMuYwpAQCAtMCwwICsxLDEyMjYgQEAKKy8qIHRyZWVzLmMgLS0gb3V0cHV0IGRlZmxhdGVkIGRhdGEgdXNpbmcgSHVmZm1hbiBjb2RpbmcKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDEyIEplYW4tbG91cCBHYWlsbHkKKyAqIGRldGVjdF9kYXRhX3R5cGUoKSBmdW5jdGlvbiBwcm92aWRlZCBmcmVlbHkgYnkgQ29zbWluIFRydXRhLCAyMDA2CisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgKi8KKworLyoKKyAqICBBTEdPUklUSE0KKyAqCisgKiAgICAgIFRoZSAiZGVmbGF0aW9uIiBwcm9jZXNzIHVzZXMgc2V2ZXJhbCBIdWZmbWFuIHRyZWVzLiBUaGUgbW9yZQorICogICAgICBjb21tb24gc291cmNlIHZhbHVlcyBhcmUgcmVwcmVzZW50ZWQgYnkgc2hvcnRlciBiaXQgc2VxdWVuY2VzLgorICoKKyAqICAgICAgRWFjaCBjb2RlIHRyZWUgaXMgc3RvcmVkIGluIGEgY29tcHJlc3NlZCBmb3JtIHdoaWNoIGlzIGl0c2VsZgorICogYSBIdWZmbWFuIGVuY29kaW5nIG9mIHRoZSBsZW5ndGhzIG9mIGFsbCB0aGUgY29kZSBzdHJpbmdzIChpbgorICogYXNjZW5kaW5nIG9yZGVyIGJ5IHNvdXJjZSB2YWx1ZXMpLiAgVGhlIGFjdHVhbCBjb2RlIHN0cmluZ3MgYXJlCisgKiByZWNvbnN0cnVjdGVkIGZyb20gdGhlIGxlbmd0aHMgaW4gdGhlIGluZmxhdGUgcHJvY2VzcywgYXMgZGVzY3JpYmVkCisgKiBpbiB0aGUgZGVmbGF0ZSBzcGVjaWZpY2F0aW9uLgorICoKKyAqICBSRUZFUkVOQ0VTCisgKgorICogICAgICBEZXV0c2NoLCBMLlAuLCInRGVmbGF0ZScgQ29tcHJlc3NlZCBEYXRhIEZvcm1hdCBTcGVjaWZpY2F0aW9uIi4KKyAqICAgICAgQXZhaWxhYmxlIGluIGZ0cC51dS5uZXQ6L3B1Yi9hcmNoaXZpbmcvemlwL2RvYy9kZWZsYXRlLTEuMS5kb2MKKyAqCisgKiAgICAgIFN0b3JlciwgSmFtZXMgQS4KKyAqICAgICAgICAgIERhdGEgQ29tcHJlc3Npb246ICBNZXRob2RzIGFuZCBUaGVvcnksIHBwLiA0OS01MC4KKyAqICAgICAgICAgIENvbXB1dGVyIFNjaWVuY2UgUHJlc3MsIDE5ODguICBJU0JOIDAtNzE2Ny04MTU2LTUuCisgKgorICogICAgICBTZWRnZXdpY2ssIFIuCisgKiAgICAgICAgICBBbGdvcml0aG1zLCBwMjkwLgorICogICAgICAgICAgQWRkaXNvbi1XZXNsZXksIDE5ODMuIElTQk4gMC0yMDEtMDY2NzItNi4KKyAqLworCisvKiBAKCMpICRJZCQgKi8KKworLyogI2RlZmluZSBHRU5fVFJFRVNfSCAqLworCisjaW5jbHVkZSAiZGVmbGF0ZS5oIgorCisjaWZkZWYgREVCVUcKKyMgIGluY2x1ZGUgPGN0eXBlLmg+CisjZW5kaWYKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBDb25zdGFudHMKKyAqLworCisjZGVmaW5lIE1BWF9CTF9CSVRTIDcKKy8qIEJpdCBsZW5ndGggY29kZXMgbXVzdCBub3QgZXhjZWVkIE1BWF9CTF9CSVRTIGJpdHMgKi8KKworI2RlZmluZSBFTkRfQkxPQ0sgMjU2CisvKiBlbmQgb2YgYmxvY2sgbGl0ZXJhbCBjb2RlICovCisKKyNkZWZpbmUgUkVQXzNfNiAgICAgIDE2CisvKiByZXBlYXQgcHJldmlvdXMgYml0IGxlbmd0aCAzLTYgdGltZXMgKDIgYml0cyBvZiByZXBlYXQgY291bnQpICovCisKKyNkZWZpbmUgUkVQWl8zXzEwICAgIDE3CisvKiByZXBlYXQgYSB6ZXJvIGxlbmd0aCAzLTEwIHRpbWVzICAoMyBiaXRzIG9mIHJlcGVhdCBjb3VudCkgKi8KKworI2RlZmluZSBSRVBaXzExXzEzOCAgMTgKKy8qIHJlcGVhdCBhIHplcm8gbGVuZ3RoIDExLTEzOCB0aW1lcyAgKDcgYml0cyBvZiByZXBlYXQgY291bnQpICovCisKK2xvY2FsIGNvbnN0IGludCBleHRyYV9sYml0c1tMRU5HVEhfQ09ERVNdIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggbGVuZ3RoIGNvZGUgKi8KKyAgID0gezAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMH07CisKK2xvY2FsIGNvbnN0IGludCBleHRyYV9kYml0c1tEX0NPREVTXSAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGRpc3RhbmNlIGNvZGUgKi8KKyAgID0gezAsMCwwLDAsMSwxLDIsMiwzLDMsNCw0LDUsNSw2LDYsNyw3LDgsOCw5LDksMTAsMTAsMTEsMTEsMTIsMTIsMTMsMTN9OworCitsb2NhbCBjb25zdCBpbnQgZXh0cmFfYmxiaXRzW0JMX0NPREVTXS8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggYml0IGxlbmd0aCBjb2RlICovCisgICA9IHswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMyw3fTsKKworbG9jYWwgY29uc3QgdWNoIGJsX29yZGVyW0JMX0NPREVTXQorICAgPSB7MTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNX07CisvKiBUaGUgbGVuZ3RocyBvZiB0aGUgYml0IGxlbmd0aCBjb2RlcyBhcmUgc2VudCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nCisgKiBwcm9iYWJpbGl0eSwgdG8gYXZvaWQgdHJhbnNtaXR0aW5nIHRoZSBsZW5ndGhzIGZvciB1bnVzZWQgYml0IGxlbmd0aCBjb2Rlcy4KKyAqLworCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIExvY2FsIGRhdGEuIFRoZXNlIGFyZSBpbml0aWFsaXplZCBvbmx5IG9uY2UuCisgKi8KKworI2RlZmluZSBESVNUX0NPREVfTEVOICA1MTIgLyogc2VlIGRlZmluaXRpb24gb2YgYXJyYXkgZGlzdF9jb2RlIGJlbG93ICovCisKKyNpZiBkZWZpbmVkKEdFTl9UUkVFU19IKSB8fCAhZGVmaW5lZChTVERDKQorLyogbm9uIEFOU0kgY29tcGlsZXJzIG1heSBub3QgYWNjZXB0IHRyZWVzLmggKi8KKworbG9jYWwgY3RfZGF0YSBzdGF0aWNfbHRyZWVbTF9DT0RFUysyXTsKKy8qIFRoZSBzdGF0aWMgbGl0ZXJhbCB0cmVlLiBTaW5jZSB0aGUgYml0IGxlbmd0aHMgYXJlIGltcG9zZWQsIHRoZXJlIGlzIG5vCisgKiBuZWVkIGZvciB0aGUgTF9DT0RFUyBleHRyYSBjb2RlcyB1c2VkIGR1cmluZyBoZWFwIGNvbnN0cnVjdGlvbi4gSG93ZXZlcgorICogVGhlIGNvZGVzIDI4NiBhbmQgMjg3IGFyZSBuZWVkZWQgdG8gYnVpbGQgYSBjYW5vbmljYWwgdHJlZSAoc2VlIF90cl9pbml0CisgKiBiZWxvdykuCisgKi8KKworbG9jYWwgY3RfZGF0YSBzdGF0aWNfZHRyZWVbRF9DT0RFU107CisvKiBUaGUgc3RhdGljIGRpc3RhbmNlIHRyZWUuIChBY3R1YWxseSBhIHRyaXZpYWwgdHJlZSBzaW5jZSBhbGwgY29kZXMgdXNlCisgKiA1IGJpdHMuKQorICovCisKK3VjaCBfZGlzdF9jb2RlW0RJU1RfQ09ERV9MRU5dOworLyogRGlzdGFuY2UgY29kZXMuIFRoZSBmaXJzdCAyNTYgdmFsdWVzIGNvcnJlc3BvbmQgdG8gdGhlIGRpc3RhbmNlcworICogMyAuLiAyNTgsIHRoZSBsYXN0IDI1NiB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdG9wIDggYml0cyBvZgorICogdGhlIDE1IGJpdCBkaXN0YW5jZXMuCisgKi8KKwordWNoIF9sZW5ndGhfY29kZVtNQVhfTUFUQ0gtTUlOX01BVENIKzFdOworLyogbGVuZ3RoIGNvZGUgZm9yIGVhY2ggbm9ybWFsaXplZCBtYXRjaCBsZW5ndGggKDAgPT0gTUlOX01BVENIKSAqLworCitsb2NhbCBpbnQgYmFzZV9sZW5ndGhbTEVOR1RIX0NPREVTXTsKKy8qIEZpcnN0IG5vcm1hbGl6ZWQgbGVuZ3RoIGZvciBlYWNoIGNvZGUgKDAgPSBNSU5fTUFUQ0gpICovCisKK2xvY2FsIGludCBiYXNlX2Rpc3RbRF9DT0RFU107CisvKiBGaXJzdCBub3JtYWxpemVkIGRpc3RhbmNlIGZvciBlYWNoIGNvZGUgKDAgPSBkaXN0YW5jZSBvZiAxKSAqLworCisjZWxzZQorIyAgaW5jbHVkZSAidHJlZXMuaCIKKyNlbmRpZiAvKiBHRU5fVFJFRVNfSCAqLworCitzdHJ1Y3Qgc3RhdGljX3RyZWVfZGVzY19zIHsKKyAgICBjb25zdCBjdF9kYXRhICpzdGF0aWNfdHJlZTsgIC8qIHN0YXRpYyB0cmVlIG9yIE5VTEwgKi8KKyAgICBjb25zdCBpbnRmICpleHRyYV9iaXRzOyAgICAgIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggY29kZSBvciBOVUxMICovCisgICAgaW50ICAgICBleHRyYV9iYXNlOyAgICAgICAgICAvKiBiYXNlIGluZGV4IGZvciBleHRyYV9iaXRzICovCisgICAgaW50ICAgICBlbGVtczsgICAgICAgICAgICAgICAvKiBtYXggbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB0cmVlICovCisgICAgaW50ICAgICBtYXhfbGVuZ3RoOyAgICAgICAgICAvKiBtYXggYml0IGxlbmd0aCBmb3IgdGhlIGNvZGVzICovCit9OworCitsb2NhbCBzdGF0aWNfdHJlZV9kZXNjICBzdGF0aWNfbF9kZXNjID0KK3tzdGF0aWNfbHRyZWUsIGV4dHJhX2xiaXRzLCBMSVRFUkFMUysxLCBMX0NPREVTLCBNQVhfQklUU307CisKK2xvY2FsIHN0YXRpY190cmVlX2Rlc2MgIHN0YXRpY19kX2Rlc2MgPQore3N0YXRpY19kdHJlZSwgZXh0cmFfZGJpdHMsIDAsICAgICAgICAgIERfQ09ERVMsIE1BWF9CSVRTfTsKKworbG9jYWwgc3RhdGljX3RyZWVfZGVzYyAgc3RhdGljX2JsX2Rlc2MgPQoreyhjb25zdCBjdF9kYXRhICopMCwgZXh0cmFfYmxiaXRzLCAwLCAgIEJMX0NPREVTLCBNQVhfQkxfQklUU307CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogTG9jYWwgKHN0YXRpYykgcm91dGluZXMgaW4gdGhpcyBmaWxlLgorICovCisKK2xvY2FsIHZvaWQgdHJfc3RhdGljX2luaXQgT0YoKHZvaWQpKTsKK2xvY2FsIHZvaWQgaW5pdF9ibG9jayAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKK2xvY2FsIHZvaWQgcHFkb3duaGVhcCAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGN0X2RhdGEgKnRyZWUsIGludCBrKSk7Citsb2NhbCB2b2lkIGdlbl9iaXRsZW4gICAgIE9GKChkZWZsYXRlX3N0YXRlICpzLCB0cmVlX2Rlc2MgKmRlc2MpKTsKK2xvY2FsIHZvaWQgZ2VuX2NvZGVzICAgICAgT0YoKGN0X2RhdGEgKnRyZWUsIGludCBtYXhfY29kZSwgdXNoZiAqYmxfY291bnQpKTsKK2xvY2FsIHZvaWQgYnVpbGRfdHJlZSAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIHRyZWVfZGVzYyAqZGVzYykpOworbG9jYWwgdm9pZCBzY2FuX3RyZWUgICAgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgY3RfZGF0YSAqdHJlZSwgaW50IG1heF9jb2RlKSk7Citsb2NhbCB2b2lkIHNlbmRfdHJlZSAgICAgIE9GKChkZWZsYXRlX3N0YXRlICpzLCBjdF9kYXRhICp0cmVlLCBpbnQgbWF4X2NvZGUpKTsKK2xvY2FsIGludCAgYnVpbGRfYmxfdHJlZSAgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKK2xvY2FsIHZvaWQgc2VuZF9hbGxfdHJlZXMgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGludCBsY29kZXMsIGludCBkY29kZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxjb2RlcykpOworbG9jYWwgdm9pZCBjb21wcmVzc19ibG9jayBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgY29uc3QgY3RfZGF0YSAqbHRyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdF9kYXRhICpkdHJlZSkpOworbG9jYWwgaW50ICBkZXRlY3RfZGF0YV90eXBlIE9GKChkZWZsYXRlX3N0YXRlICpzKSk7Citsb2NhbCB1bnNpZ25lZCBiaV9yZXZlcnNlIE9GKCh1bnNpZ25lZCB2YWx1ZSwgaW50IGxlbmd0aCkpOworbG9jYWwgdm9pZCBiaV93aW5kdXAgICAgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcykpOworbG9jYWwgdm9pZCBiaV9mbHVzaCAgICAgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcykpOworbG9jYWwgdm9pZCBjb3B5X2Jsb2NrICAgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgY2hhcmYgKmJ1ZiwgdW5zaWduZWQgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlYWRlcikpOworCisjaWZkZWYgR0VOX1RSRUVTX0gKK2xvY2FsIHZvaWQgZ2VuX3RyZWVzX2hlYWRlciBPRigodm9pZCkpOworI2VuZGlmCisKKyNpZm5kZWYgREVCVUcKKyMgIGRlZmluZSBzZW5kX2NvZGUocywgYywgdHJlZSkgc2VuZF9iaXRzKHMsIHRyZWVbY10uQ29kZSwgdHJlZVtjXS5MZW4pCisgICAvKiBTZW5kIGEgY29kZSBvZiB0aGUgZ2l2ZW4gdHJlZS4gYyBhbmQgdHJlZSBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cyAqLworCisjZWxzZSAvKiBERUJVRyAqLworIyAgZGVmaW5lIHNlbmRfY29kZShzLCBjLCB0cmVlKSBcCisgICAgIHsgaWYgKHpfdmVyYm9zZT4yKSBmcHJpbnRmKHN0ZGVyciwiXG5jZCAlM2QgIiwoYykpOyBcCisgICAgICAgc2VuZF9iaXRzKHMsIHRyZWVbY10uQ29kZSwgdHJlZVtjXS5MZW4pOyB9CisjZW5kaWYKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBPdXRwdXQgYSBzaG9ydCBMU0IgZmlyc3Qgb24gdGhlIHN0cmVhbS4KKyAqIElOIGFzc2VydGlvbjogdGhlcmUgaXMgZW5vdWdoIHJvb20gaW4gcGVuZGluZ0J1Zi4KKyAqLworI2RlZmluZSBwdXRfc2hvcnQocywgdykgeyBcCisgICAgcHV0X2J5dGUocywgKHVjaCkoKHcpICYgMHhmZikpOyBcCisgICAgcHV0X2J5dGUocywgKHVjaCkoKHVzaCkodykgPj4gOCkpOyBcCit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogU2VuZCBhIHZhbHVlIG9uIGEgZ2l2ZW4gbnVtYmVyIG9mIGJpdHMuCisgKiBJTiBhc3NlcnRpb246IGxlbmd0aCA8PSAxNiBhbmQgdmFsdWUgZml0cyBpbiBsZW5ndGggYml0cy4KKyAqLworI2lmZGVmIERFQlVHCitsb2NhbCB2b2lkIHNlbmRfYml0cyAgICAgIE9GKChkZWZsYXRlX3N0YXRlICpzLCBpbnQgdmFsdWUsIGludCBsZW5ndGgpKTsKKworbG9jYWwgdm9pZCBzZW5kX2JpdHMoCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICBpbnQgdmFsdWUsICAvKiB2YWx1ZSB0byBzZW5kICovCisgICAgaW50IGxlbmd0aCkgLyogbnVtYmVyIG9mIGJpdHMgKi8KK3sKKyAgICBUcmFjZXZ2KChzdGRlcnIsIiBsICUyZCB2ICU0eCAiLCBsZW5ndGgsIHZhbHVlKSk7CisgICAgQXNzZXJ0KGxlbmd0aCA+IDAgJiYgbGVuZ3RoIDw9IDE1LCAiaW52YWxpZCBsZW5ndGgiKTsKKyAgICBzLT5iaXRzX3NlbnQgKz0gKHVsZylsZW5ndGg7CisKKyAgICAvKiBJZiBub3QgZW5vdWdoIHJvb20gaW4gYmlfYnVmLCB1c2UgKHZhbGlkKSBiaXRzIGZyb20gYmlfYnVmIGFuZAorICAgICAqICgxNiAtIGJpX3ZhbGlkKSBiaXRzIGZyb20gdmFsdWUsIGxlYXZpbmcgKHdpZHRoIC0gKDE2LWJpX3ZhbGlkKSkKKyAgICAgKiB1bnVzZWQgYml0cyBpbiB2YWx1ZS4KKyAgICAgKi8KKyAgICBpZiAocy0+YmlfdmFsaWQgPiAoaW50KUJ1Zl9zaXplIC0gbGVuZ3RoKSB7CisgICAgICAgIHMtPmJpX2J1ZiB8PSAodXNoKXZhbHVlIDw8IHMtPmJpX3ZhbGlkOworICAgICAgICBwdXRfc2hvcnQocywgcy0+YmlfYnVmKTsKKyAgICAgICAgcy0+YmlfYnVmID0gKHVzaCl2YWx1ZSA+PiAoQnVmX3NpemUgLSBzLT5iaV92YWxpZCk7CisgICAgICAgIHMtPmJpX3ZhbGlkICs9IGxlbmd0aCAtIEJ1Zl9zaXplOworICAgIH0gZWxzZSB7CisgICAgICAgIHMtPmJpX2J1ZiB8PSAodXNoKXZhbHVlIDw8IHMtPmJpX3ZhbGlkOworICAgICAgICBzLT5iaV92YWxpZCArPSBsZW5ndGg7CisgICAgfQorfQorI2Vsc2UgLyogIURFQlVHICovCisKKyNkZWZpbmUgc2VuZF9iaXRzKHMsIHZhbHVlLCBsZW5ndGgpIFwKK3sgaW50IGxlbiA9IGxlbmd0aDtcCisgIGlmIChzLT5iaV92YWxpZCA+IChpbnQpQnVmX3NpemUgLSBsZW4pIHtcCisgICAgaW50IHZhbCA9IHZhbHVlO1wKKyAgICBzLT5iaV9idWYgfD0gKHVzaCl2YWwgPDwgcy0+YmlfdmFsaWQ7XAorICAgIHB1dF9zaG9ydChzLCBzLT5iaV9idWYpO1wKKyAgICBzLT5iaV9idWYgPSAodXNoKXZhbCA+PiAoQnVmX3NpemUgLSBzLT5iaV92YWxpZCk7XAorICAgIHMtPmJpX3ZhbGlkICs9IGxlbiAtIEJ1Zl9zaXplO1wKKyAgfSBlbHNlIHtcCisgICAgcy0+YmlfYnVmIHw9ICh1c2gpKHZhbHVlKSA8PCBzLT5iaV92YWxpZDtcCisgICAgcy0+YmlfdmFsaWQgKz0gbGVuO1wKKyAgfVwKK30KKyNlbmRpZiAvKiBERUJVRyAqLworCisKKy8qIHRoZSBhcmd1bWVudHMgbXVzdCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMgKi8KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBJbml0aWFsaXplIHRoZSB2YXJpb3VzICdjb25zdGFudCcgdGFibGVzLgorICovCitsb2NhbCB2b2lkIHRyX3N0YXRpY19pbml0KCkKK3sKKyNpZiBkZWZpbmVkKEdFTl9UUkVFU19IKSB8fCAhZGVmaW5lZChTVERDKQorICAgIHN0YXRpYyBpbnQgc3RhdGljX2luaXRfZG9uZSA9IDA7CisgICAgaW50IG47ICAgICAgICAvKiBpdGVyYXRlcyBvdmVyIHRyZWUgZWxlbWVudHMgKi8KKyAgICBpbnQgYml0czsgICAgIC8qIGJpdCBjb3VudGVyICovCisgICAgaW50IGxlbmd0aDsgICAvKiBsZW5ndGggdmFsdWUgKi8KKyAgICBpbnQgY29kZTsgICAgIC8qIGNvZGUgdmFsdWUgKi8KKyAgICBpbnQgZGlzdDsgICAgIC8qIGRpc3RhbmNlIGluZGV4ICovCisgICAgdXNoIGJsX2NvdW50W01BWF9CSVRTKzFdOworICAgIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggZm9yIGFuIG9wdGltYWwgdHJlZSAqLworCisgICAgaWYgKHN0YXRpY19pbml0X2RvbmUpIHJldHVybjsKKworICAgIC8qIEZvciBzb21lIGVtYmVkZGVkIHRhcmdldHMsIGdsb2JhbCB2YXJpYWJsZXMgYXJlIG5vdCBpbml0aWFsaXplZDogKi8KKyNpZmRlZiBOT19JTklUX0dMT0JBTF9QT0lOVEVSUworICAgIHN0YXRpY19sX2Rlc2Muc3RhdGljX3RyZWUgPSBzdGF0aWNfbHRyZWU7CisgICAgc3RhdGljX2xfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfbGJpdHM7CisgICAgc3RhdGljX2RfZGVzYy5zdGF0aWNfdHJlZSA9IHN0YXRpY19kdHJlZTsKKyAgICBzdGF0aWNfZF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9kYml0czsKKyAgICBzdGF0aWNfYmxfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfYmxiaXRzOworI2VuZGlmCisKKyAgICAvKiBJbml0aWFsaXplIHRoZSBtYXBwaW5nIGxlbmd0aCAoMC4uMjU1KSAtPiBsZW5ndGggY29kZSAoMC4uMjgpICovCisgICAgbGVuZ3RoID0gMDsKKyAgICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgTEVOR1RIX0NPREVTLTE7IGNvZGUrKykgeworICAgICAgICBiYXNlX2xlbmd0aFtjb2RlXSA9IGxlbmd0aDsKKyAgICAgICAgZm9yIChuID0gMDsgbiA8ICgxPDxleHRyYV9sYml0c1tjb2RlXSk7IG4rKykgeworICAgICAgICAgICAgX2xlbmd0aF9jb2RlW2xlbmd0aCsrXSA9ICh1Y2gpY29kZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBBc3NlcnQgKGxlbmd0aCA9PSAyNTYsICJ0cl9zdGF0aWNfaW5pdDogbGVuZ3RoICE9IDI1NiIpOworICAgIC8qIE5vdGUgdGhhdCB0aGUgbGVuZ3RoIDI1NSAobWF0Y2ggbGVuZ3RoIDI1OCkgY2FuIGJlIHJlcHJlc2VudGVkCisgICAgICogaW4gdHdvIGRpZmZlcmVudCB3YXlzOiBjb2RlIDI4NCArIDUgYml0cyBvciBjb2RlIDI4NSwgc28gd2UKKyAgICAgKiBvdmVyd3JpdGUgbGVuZ3RoX2NvZGVbMjU1XSB0byB1c2UgdGhlIGJlc3QgZW5jb2Rpbmc6CisgICAgICovCisgICAgX2xlbmd0aF9jb2RlW2xlbmd0aC0xXSA9ICh1Y2gpY29kZTsKKworICAgIC8qIEluaXRpYWxpemUgdGhlIG1hcHBpbmcgZGlzdCAoMC4uMzJLKSAtPiBkaXN0IGNvZGUgKDAuLjI5KSAqLworICAgIGRpc3QgPSAwOworICAgIGZvciAoY29kZSA9IDAgOyBjb2RlIDwgMTY7IGNvZGUrKykgeworICAgICAgICBiYXNlX2Rpc3RbY29kZV0gPSBkaXN0OworICAgICAgICBmb3IgKG4gPSAwOyBuIDwgKDE8PGV4dHJhX2RiaXRzW2NvZGVdKTsgbisrKSB7CisgICAgICAgICAgICBfZGlzdF9jb2RlW2Rpc3QrK10gPSAodWNoKWNvZGU7CisgICAgICAgIH0KKyAgICB9CisgICAgQXNzZXJ0IChkaXN0ID09IDI1NiwgInRyX3N0YXRpY19pbml0OiBkaXN0ICE9IDI1NiIpOworICAgIGRpc3QgPj49IDc7IC8qIGZyb20gbm93IG9uLCBhbGwgZGlzdGFuY2VzIGFyZSBkaXZpZGVkIGJ5IDEyOCAqLworICAgIGZvciAoIDsgY29kZSA8IERfQ09ERVM7IGNvZGUrKykgeworICAgICAgICBiYXNlX2Rpc3RbY29kZV0gPSBkaXN0IDw8IDc7CisgICAgICAgIGZvciAobiA9IDA7IG4gPCAoMTw8KGV4dHJhX2RiaXRzW2NvZGVdLTcpKTsgbisrKSB7CisgICAgICAgICAgICBfZGlzdF9jb2RlWzI1NiArIGRpc3QrK10gPSAodWNoKWNvZGU7CisgICAgICAgIH0KKyAgICB9CisgICAgQXNzZXJ0IChkaXN0ID09IDI1NiwgInRyX3N0YXRpY19pbml0OiAyNTYrZGlzdCAhPSA1MTIiKTsKKworICAgIC8qIENvbnN0cnVjdCB0aGUgY29kZXMgb2YgdGhlIHN0YXRpYyBsaXRlcmFsIHRyZWUgKi8KKyAgICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIGJsX2NvdW50W2JpdHNdID0gMDsKKyAgICBuID0gMDsKKyAgICB3aGlsZSAobiA8PSAxNDMpIHN0YXRpY19sdHJlZVtuKytdLkxlbiA9IDgsIGJsX2NvdW50WzhdKys7CisgICAgd2hpbGUgKG4gPD0gMjU1KSBzdGF0aWNfbHRyZWVbbisrXS5MZW4gPSA5LCBibF9jb3VudFs5XSsrOworICAgIHdoaWxlIChuIDw9IDI3OSkgc3RhdGljX2x0cmVlW24rK10uTGVuID0gNywgYmxfY291bnRbN10rKzsKKyAgICB3aGlsZSAobiA8PSAyODcpIHN0YXRpY19sdHJlZVtuKytdLkxlbiA9IDgsIGJsX2NvdW50WzhdKys7CisgICAgLyogQ29kZXMgMjg2IGFuZCAyODcgZG8gbm90IGV4aXN0LCBidXQgd2UgbXVzdCBpbmNsdWRlIHRoZW0gaW4gdGhlCisgICAgICogdHJlZSBjb25zdHJ1Y3Rpb24gdG8gZ2V0IGEgY2Fub25pY2FsIEh1ZmZtYW4gdHJlZSAobG9uZ2VzdCBjb2RlCisgICAgICogYWxsIG9uZXMpCisgICAgICovCisgICAgZ2VuX2NvZGVzKChjdF9kYXRhICopc3RhdGljX2x0cmVlLCBMX0NPREVTKzEsIGJsX2NvdW50KTsKKworICAgIC8qIFRoZSBzdGF0aWMgZGlzdGFuY2UgdHJlZSBpcyB0cml2aWFsOiAqLworICAgIGZvciAobiA9IDA7IG4gPCBEX0NPREVTOyBuKyspIHsKKyAgICAgICAgc3RhdGljX2R0cmVlW25dLkxlbiA9IDU7CisgICAgICAgIHN0YXRpY19kdHJlZVtuXS5Db2RlID0gYmlfcmV2ZXJzZSgodW5zaWduZWQpbiwgNSk7CisgICAgfQorICAgIHN0YXRpY19pbml0X2RvbmUgPSAxOworCisjICBpZmRlZiBHRU5fVFJFRVNfSAorICAgIGdlbl90cmVlc19oZWFkZXIoKTsKKyMgIGVuZGlmCisjZW5kaWYgLyogZGVmaW5lZChHRU5fVFJFRVNfSCkgfHwgIWRlZmluZWQoU1REQykgKi8KK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBHZW5lcmVyYXRlIHRoZSBmaWxlIHRyZWVzLmggZGVzY3JpYmluZyB0aGUgc3RhdGljIHRyZWVzLgorICovCisjaWZkZWYgR0VOX1RSRUVTX0gKKyMgIGlmbmRlZiBERUJVRworIyAgICBpbmNsdWRlIDxzdGRpby5oPgorIyAgZW5kaWYKKworIyAgZGVmaW5lIFNFUEFSQVRPUihpLCBsYXN0LCB3aWR0aCkgXAorICAgICAgKChpKSA9PSAobGFzdCk/ICJcbn07XG5cbiIgOiAgICBcCisgICAgICAgKChpKSAlICh3aWR0aCkgPT0gKHdpZHRoKS0xID8gIixcbiIgOiAiLCAiKSkKKwordm9pZCBnZW5fdHJlZXNfaGVhZGVyKCkKK3sKKyAgICBGSUxFICpoZWFkZXIgPSBmb3BlbigidHJlZXMuaCIsICJ3Iik7CisgICAgaW50IGk7CisKKyAgICBBc3NlcnQgKGhlYWRlciAhPSBOVUxMLCAiQ2FuJ3Qgb3BlbiB0cmVlcy5oIik7CisgICAgZnByaW50ZihoZWFkZXIsCisgICAgICAgICAgICAiLyogaGVhZGVyIGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aXRoIC1ER0VOX1RSRUVTX0ggKi9cblxuIik7CisKKyAgICBmcHJpbnRmKGhlYWRlciwgImxvY2FsIGNvbnN0IGN0X2RhdGEgc3RhdGljX2x0cmVlW0xfQ09ERVMrMl0gPSB7XG4iKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgTF9DT0RFUysyOyBpKyspIHsKKyAgICAgICAgZnByaW50ZihoZWFkZXIsICJ7eyUzdX0seyUzdX19JXMiLCBzdGF0aWNfbHRyZWVbaV0uQ29kZSwKKyAgICAgICAgICAgICAgICBzdGF0aWNfbHRyZWVbaV0uTGVuLCBTRVBBUkFUT1IoaSwgTF9DT0RFUysxLCA1KSk7CisgICAgfQorCisgICAgZnByaW50ZihoZWFkZXIsICJsb2NhbCBjb25zdCBjdF9kYXRhIHN0YXRpY19kdHJlZVtEX0NPREVTXSA9IHtcbiIpOworICAgIGZvciAoaSA9IDA7IGkgPCBEX0NPREVTOyBpKyspIHsKKyAgICAgICAgZnByaW50ZihoZWFkZXIsICJ7eyUydX0seyUydX19JXMiLCBzdGF0aWNfZHRyZWVbaV0uQ29kZSwKKyAgICAgICAgICAgICAgICBzdGF0aWNfZHRyZWVbaV0uTGVuLCBTRVBBUkFUT1IoaSwgRF9DT0RFUy0xLCA1KSk7CisgICAgfQorCisgICAgZnByaW50ZihoZWFkZXIsICJjb25zdCB1Y2ggWkxJQl9JTlRFUk5BTCBfZGlzdF9jb2RlW0RJU1RfQ09ERV9MRU5dID0ge1xuIik7CisgICAgZm9yIChpID0gMDsgaSA8IERJU1RfQ09ERV9MRU47IGkrKykgeworICAgICAgICBmcHJpbnRmKGhlYWRlciwgIiUydSVzIiwgX2Rpc3RfY29kZVtpXSwKKyAgICAgICAgICAgICAgICBTRVBBUkFUT1IoaSwgRElTVF9DT0RFX0xFTi0xLCAyMCkpOworICAgIH0KKworICAgIGZwcmludGYoaGVhZGVyLAorICAgICAgICAiY29uc3QgdWNoIFpMSUJfSU5URVJOQUwgX2xlbmd0aF9jb2RlW01BWF9NQVRDSC1NSU5fTUFUQ0grMV09IHtcbiIpOworICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfTUFUQ0gtTUlOX01BVENIKzE7IGkrKykgeworICAgICAgICBmcHJpbnRmKGhlYWRlciwgIiUydSVzIiwgX2xlbmd0aF9jb2RlW2ldLAorICAgICAgICAgICAgICAgIFNFUEFSQVRPUihpLCBNQVhfTUFUQ0gtTUlOX01BVENILCAyMCkpOworICAgIH0KKworICAgIGZwcmludGYoaGVhZGVyLCAibG9jYWwgY29uc3QgaW50IGJhc2VfbGVuZ3RoW0xFTkdUSF9DT0RFU10gPSB7XG4iKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgTEVOR1RIX0NPREVTOyBpKyspIHsKKyAgICAgICAgZnByaW50ZihoZWFkZXIsICIlMXUlcyIsIGJhc2VfbGVuZ3RoW2ldLAorICAgICAgICAgICAgICAgIFNFUEFSQVRPUihpLCBMRU5HVEhfQ09ERVMtMSwgMjApKTsKKyAgICB9CisKKyAgICBmcHJpbnRmKGhlYWRlciwgImxvY2FsIGNvbnN0IGludCBiYXNlX2Rpc3RbRF9DT0RFU10gPSB7XG4iKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgRF9DT0RFUzsgaSsrKSB7CisgICAgICAgIGZwcmludGYoaGVhZGVyLCAiJTV1JXMiLCBiYXNlX2Rpc3RbaV0sCisgICAgICAgICAgICAgICAgU0VQQVJBVE9SKGksIERfQ09ERVMtMSwgMTApKTsKKyAgICB9CisKKyAgICBmY2xvc2UoaGVhZGVyKTsKK30KKyNlbmRpZiAvKiBHRU5fVFJFRVNfSCAqLworCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIEluaXRpYWxpemUgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmVzIGZvciBhIG5ldyB6bGliIHN0cmVhbS4KKyAqLwordm9pZCBaTElCX0lOVEVSTkFMIF90cl9pbml0KAorICAgIGRlZmxhdGVfc3RhdGUgKnMpCit7CisgICAgdHJfc3RhdGljX2luaXQoKTsKKworICAgIHMtPmxfZGVzYy5keW5fdHJlZSA9IHMtPmR5bl9sdHJlZTsKKyAgICBzLT5sX2Rlc2Muc3RhdF9kZXNjID0gJnN0YXRpY19sX2Rlc2M7CisKKyAgICBzLT5kX2Rlc2MuZHluX3RyZWUgPSBzLT5keW5fZHRyZWU7CisgICAgcy0+ZF9kZXNjLnN0YXRfZGVzYyA9ICZzdGF0aWNfZF9kZXNjOworCisgICAgcy0+YmxfZGVzYy5keW5fdHJlZSA9IHMtPmJsX3RyZWU7CisgICAgcy0+YmxfZGVzYy5zdGF0X2Rlc2MgPSAmc3RhdGljX2JsX2Rlc2M7CisKKyAgICBzLT5iaV9idWYgPSAwOworICAgIHMtPmJpX3ZhbGlkID0gMDsKKyNpZmRlZiBERUJVRworICAgIHMtPmNvbXByZXNzZWRfbGVuID0gMEw7CisgICAgcy0+Yml0c19zZW50ID0gMEw7CisjZW5kaWYKKworICAgIC8qIEluaXRpYWxpemUgdGhlIGZpcnN0IGJsb2NrIG9mIHRoZSBmaXJzdCBmaWxlOiAqLworICAgIGluaXRfYmxvY2socyk7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogSW5pdGlhbGl6ZSBhIG5ldyBibG9jay4KKyAqLworbG9jYWwgdm9pZCBpbml0X2Jsb2NrKAorICAgIGRlZmxhdGVfc3RhdGUgKnMpCit7CisgICAgaW50IG47IC8qIGl0ZXJhdGVzIG92ZXIgdHJlZSBlbGVtZW50cyAqLworCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgdHJlZXMuICovCisgICAgZm9yIChuID0gMDsgbiA8IExfQ09ERVM7ICBuKyspIHMtPmR5bl9sdHJlZVtuXS5GcmVxID0gMDsKKyAgICBmb3IgKG4gPSAwOyBuIDwgRF9DT0RFUzsgIG4rKykgcy0+ZHluX2R0cmVlW25dLkZyZXEgPSAwOworICAgIGZvciAobiA9IDA7IG4gPCBCTF9DT0RFUzsgbisrKSBzLT5ibF90cmVlW25dLkZyZXEgPSAwOworCisgICAgcy0+ZHluX2x0cmVlW0VORF9CTE9DS10uRnJlcSA9IDE7CisgICAgcy0+b3B0X2xlbiA9IHMtPnN0YXRpY19sZW4gPSAwTDsKKyAgICBzLT5sYXN0X2xpdCA9IHMtPm1hdGNoZXMgPSAwOworfQorCisjZGVmaW5lIFNNQUxMRVNUIDEKKy8qIEluZGV4IHdpdGhpbiB0aGUgaGVhcCBhcnJheSBvZiBsZWFzdCBmcmVxdWVudCBub2RlIGluIHRoZSBIdWZmbWFuIHRyZWUgKi8KKworCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBmcm9tIHRoZSBoZWFwIGFuZCByZWNyZWF0ZSB0aGUgaGVhcCB3aXRoCisgKiBvbmUgbGVzcyBlbGVtZW50LiBVcGRhdGVzIGhlYXAgYW5kIGhlYXBfbGVuLgorICovCisjZGVmaW5lIHBxcmVtb3ZlKHMsIHRyZWUsIHRvcCkgXAore1wKKyAgICB0b3AgPSBzLT5oZWFwW1NNQUxMRVNUXTsgXAorICAgIHMtPmhlYXBbU01BTExFU1RdID0gcy0+aGVhcFtzLT5oZWFwX2xlbi0tXTsgXAorICAgIHBxZG93bmhlYXAocywgdHJlZSwgU01BTExFU1QpOyBcCit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29tcGFyZXMgdG8gc3VidHJlZXMsIHVzaW5nIHRoZSB0cmVlIGRlcHRoIGFzIHRpZSBicmVha2VyIHdoZW4KKyAqIHRoZSBzdWJ0cmVlcyBoYXZlIGVxdWFsIGZyZXF1ZW5jeS4gVGhpcyBtaW5pbWl6ZXMgdGhlIHdvcnN0IGNhc2UgbGVuZ3RoLgorICovCisjZGVmaW5lIHNtYWxsZXIodHJlZSwgbiwgbSwgZGVwdGgpIFwKKyAgICh0cmVlW25dLkZyZXEgPCB0cmVlW21dLkZyZXEgfHwgXAorICAgKHRyZWVbbl0uRnJlcSA9PSB0cmVlW21dLkZyZXEgJiYgZGVwdGhbbl0gPD0gZGVwdGhbbV0pKQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFJlc3RvcmUgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92aW5nIGRvd24gdGhlIHRyZWUgc3RhcnRpbmcgYXQgbm9kZSBrLAorICogZXhjaGFuZ2luZyBhIG5vZGUgd2l0aCB0aGUgc21hbGxlc3Qgb2YgaXRzIHR3byBzb25zIGlmIG5lY2Vzc2FyeSwgc3RvcHBpbmcKKyAqIHdoZW4gdGhlIGhlYXAgcHJvcGVydHkgaXMgcmUtZXN0YWJsaXNoZWQgKGVhY2ggZmF0aGVyIHNtYWxsZXIgdGhhbiBpdHMKKyAqIHR3byBzb25zKS4KKyAqLworbG9jYWwgdm9pZCBwcWRvd25oZWFwKAorICAgIGRlZmxhdGVfc3RhdGUgKnMsCisgICAgY3RfZGF0YSAqdHJlZSwgIC8qIHRoZSB0cmVlIHRvIHJlc3RvcmUgKi8KKyAgICBpbnQgaykgICAgICAgICAgICAgICAvKiBub2RlIHRvIG1vdmUgZG93biAqLworeworICAgIGludCB2ID0gcy0+aGVhcFtrXTsKKyAgICBpbnQgaiA9IGsgPDwgMTsgIC8qIGxlZnQgc29uIG9mIGsgKi8KKyAgICB3aGlsZSAoaiA8PSBzLT5oZWFwX2xlbikgeworICAgICAgICAvKiBTZXQgaiB0byB0aGUgc21hbGxlc3Qgb2YgdGhlIHR3byBzb25zOiAqLworICAgICAgICBpZiAoaiA8IHMtPmhlYXBfbGVuICYmCisgICAgICAgICAgICBzbWFsbGVyKHRyZWUsIHMtPmhlYXBbaisxXSwgcy0+aGVhcFtqXSwgcy0+ZGVwdGgpKSB7CisgICAgICAgICAgICBqKys7CisgICAgICAgIH0KKyAgICAgICAgLyogRXhpdCBpZiB2IGlzIHNtYWxsZXIgdGhhbiBib3RoIHNvbnMgKi8KKyAgICAgICAgaWYgKHNtYWxsZXIodHJlZSwgdiwgcy0+aGVhcFtqXSwgcy0+ZGVwdGgpKSBicmVhazsKKworICAgICAgICAvKiBFeGNoYW5nZSB2IHdpdGggdGhlIHNtYWxsZXN0IHNvbiAqLworICAgICAgICBzLT5oZWFwW2tdID0gcy0+aGVhcFtqXTsgIGsgPSBqOworCisgICAgICAgIC8qIEFuZCBjb250aW51ZSBkb3duIHRoZSB0cmVlLCBzZXR0aW5nIGogdG8gdGhlIGxlZnQgc29uIG9mIGsgKi8KKyAgICAgICAgaiA8PD0gMTsKKyAgICB9CisgICAgcy0+aGVhcFtrXSA9IHY7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29tcHV0ZSB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RocyBmb3IgYSB0cmVlIGFuZCB1cGRhdGUgdGhlIHRvdGFsIGJpdCBsZW5ndGgKKyAqIGZvciB0aGUgY3VycmVudCBibG9jay4KKyAqIElOIGFzc2VydGlvbjogdGhlIGZpZWxkcyBmcmVxIGFuZCBkYWQgYXJlIHNldCwgaGVhcFtoZWFwX21heF0gYW5kCisgKiAgICBhYm92ZSBhcmUgdGhlIHRyZWUgbm9kZXMgc29ydGVkIGJ5IGluY3JlYXNpbmcgZnJlcXVlbmN5LgorICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZCBsZW4gaXMgc2V0IHRvIHRoZSBvcHRpbWFsIGJpdCBsZW5ndGgsIHRoZQorICogICAgIGFycmF5IGJsX2NvdW50IGNvbnRhaW5zIHRoZSBmcmVxdWVuY2llcyBmb3IgZWFjaCBiaXQgbGVuZ3RoLgorICogICAgIFRoZSBsZW5ndGggb3B0X2xlbiBpcyB1cGRhdGVkOyBzdGF0aWNfbGVuIGlzIGFsc28gdXBkYXRlZCBpZiBzdHJlZSBpcworICogICAgIG5vdCBudWxsLgorICovCitsb2NhbCB2b2lkIGdlbl9iaXRsZW4oCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICB0cmVlX2Rlc2MgKmRlc2MpICAgIC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi8KK3sKKyAgICBjdF9kYXRhICp0cmVlICAgICAgICA9IGRlc2MtPmR5bl90cmVlOworICAgIGludCBtYXhfY29kZSAgICAgICAgID0gZGVzYy0+bWF4X2NvZGU7CisgICAgY29uc3QgY3RfZGF0YSAqc3RyZWUgPSBkZXNjLT5zdGF0X2Rlc2MtPnN0YXRpY190cmVlOworICAgIGNvbnN0IGludGYgKmV4dHJhICAgID0gZGVzYy0+c3RhdF9kZXNjLT5leHRyYV9iaXRzOworICAgIGludCBiYXNlICAgICAgICAgICAgID0gZGVzYy0+c3RhdF9kZXNjLT5leHRyYV9iYXNlOworICAgIGludCBtYXhfbGVuZ3RoICAgICAgID0gZGVzYy0+c3RhdF9kZXNjLT5tYXhfbGVuZ3RoOworICAgIGludCBoOyAgICAgICAgICAgICAgLyogaGVhcCBpbmRleCAqLworICAgIGludCBuLCBtOyAgICAgICAgICAgLyogaXRlcmF0ZSBvdmVyIHRoZSB0cmVlIGVsZW1lbnRzICovCisgICAgaW50IGJpdHM7ICAgICAgICAgICAvKiBiaXQgbGVuZ3RoICovCisgICAgaW50IHhiaXRzOyAgICAgICAgICAvKiBleHRyYSBiaXRzICovCisgICAgdXNoIGY7ICAgICAgICAgICAgICAvKiBmcmVxdWVuY3kgKi8KKyAgICBpbnQgb3ZlcmZsb3cgPSAwOyAgIC8qIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGJpdCBsZW5ndGggdG9vIGxhcmdlICovCisKKyAgICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHMtPmJsX2NvdW50W2JpdHNdID0gMDsKKworICAgIC8qIEluIGEgZmlyc3QgcGFzcywgY29tcHV0ZSB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RocyAod2hpY2ggbWF5CisgICAgICogb3ZlcmZsb3cgaW4gdGhlIGNhc2Ugb2YgdGhlIGJpdCBsZW5ndGggdHJlZSkuCisgICAgICovCisgICAgdHJlZVtzLT5oZWFwW3MtPmhlYXBfbWF4XV0uTGVuID0gMDsgLyogcm9vdCBvZiB0aGUgaGVhcCAqLworCisgICAgZm9yIChoID0gcy0+aGVhcF9tYXgrMTsgaCA8IEhFQVBfU0laRTsgaCsrKSB7CisgICAgICAgIG4gPSBzLT5oZWFwW2hdOworICAgICAgICBiaXRzID0gdHJlZVt0cmVlW25dLkRhZF0uTGVuICsgMTsKKyAgICAgICAgaWYgKGJpdHMgPiBtYXhfbGVuZ3RoKSBiaXRzID0gbWF4X2xlbmd0aCwgb3ZlcmZsb3crKzsKKyAgICAgICAgdHJlZVtuXS5MZW4gPSAodXNoKWJpdHM7CisgICAgICAgIC8qIFdlIG92ZXJ3cml0ZSB0cmVlW25dLkRhZCB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkICovCisKKyAgICAgICAgaWYgKG4gPiBtYXhfY29kZSkgY29udGludWU7IC8qIG5vdCBhIGxlYWYgbm9kZSAqLworCisgICAgICAgIHMtPmJsX2NvdW50W2JpdHNdKys7CisgICAgICAgIHhiaXRzID0gMDsKKyAgICAgICAgaWYgKG4gPj0gYmFzZSkgeGJpdHMgPSBleHRyYVtuLWJhc2VdOworICAgICAgICBmID0gdHJlZVtuXS5GcmVxOworICAgICAgICBzLT5vcHRfbGVuICs9ICh1bGcpZiAqIChiaXRzICsgeGJpdHMpOworICAgICAgICBpZiAoc3RyZWUpIHMtPnN0YXRpY19sZW4gKz0gKHVsZylmICogKHN0cmVlW25dLkxlbiArIHhiaXRzKTsKKyAgICB9CisgICAgaWYgKG92ZXJmbG93ID09IDApIHJldHVybjsKKworICAgIFRyYWNlKChzdGRlcnIsIlxuYml0IGxlbmd0aCBvdmVyZmxvd1xuIikpOworICAgIC8qIFRoaXMgaGFwcGVucyBmb3IgZXhhbXBsZSBvbiBvYmoyIGFuZCBwaWMgb2YgdGhlIENhbGdhcnkgY29ycHVzICovCisKKyAgICAvKiBGaW5kIHRoZSBmaXJzdCBiaXQgbGVuZ3RoIHdoaWNoIGNvdWxkIGluY3JlYXNlOiAqLworICAgIGRvIHsKKyAgICAgICAgYml0cyA9IG1heF9sZW5ndGgtMTsKKyAgICAgICAgd2hpbGUgKHMtPmJsX2NvdW50W2JpdHNdID09IDApIGJpdHMtLTsKKyAgICAgICAgcy0+YmxfY291bnRbYml0c10tLTsgICAgICAvKiBtb3ZlIG9uZSBsZWFmIGRvd24gdGhlIHRyZWUgKi8KKyAgICAgICAgcy0+YmxfY291bnRbYml0cysxXSArPSAyOyAvKiBtb3ZlIG9uZSBvdmVyZmxvdyBpdGVtIGFzIGl0cyBicm90aGVyICovCisgICAgICAgIHMtPmJsX2NvdW50W21heF9sZW5ndGhdLS07CisgICAgICAgIC8qIFRoZSBicm90aGVyIG9mIHRoZSBvdmVyZmxvdyBpdGVtIGFsc28gbW92ZXMgb25lIHN0ZXAgdXAsCisgICAgICAgICAqIGJ1dCB0aGlzIGRvZXMgbm90IGFmZmVjdCBibF9jb3VudFttYXhfbGVuZ3RoXQorICAgICAgICAgKi8KKyAgICAgICAgb3ZlcmZsb3cgLT0gMjsKKyAgICB9IHdoaWxlIChvdmVyZmxvdyA+IDApOworCisgICAgLyogTm93IHJlY29tcHV0ZSBhbGwgYml0IGxlbmd0aHMsIHNjYW5uaW5nIGluIGluY3JlYXNpbmcgZnJlcXVlbmN5LgorICAgICAqIGggaXMgc3RpbGwgZXF1YWwgdG8gSEVBUF9TSVpFLiAoSXQgaXMgc2ltcGxlciB0byByZWNvbnN0cnVjdCBhbGwKKyAgICAgKiBsZW5ndGhzIGluc3RlYWQgb2YgZml4aW5nIG9ubHkgdGhlIHdyb25nIG9uZXMuIFRoaXMgaWRlYSBpcyB0YWtlbgorICAgICAqIGZyb20gJ2FyJyB3cml0dGVuIGJ5IEhhcnVoaWtvIE9rdW11cmEuKQorICAgICAqLworICAgIGZvciAoYml0cyA9IG1heF9sZW5ndGg7IGJpdHMgIT0gMDsgYml0cy0tKSB7CisgICAgICAgIG4gPSBzLT5ibF9jb3VudFtiaXRzXTsKKyAgICAgICAgd2hpbGUgKG4gIT0gMCkgeworICAgICAgICAgICAgbSA9IHMtPmhlYXBbLS1oXTsKKyAgICAgICAgICAgIGlmIChtID4gbWF4X2NvZGUpIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCkgdHJlZVttXS5MZW4gIT0gKHVuc2lnbmVkKSBiaXRzKSB7CisgICAgICAgICAgICAgICAgVHJhY2UoKHN0ZGVyciwiY29kZSAlZCBiaXRzICVkLT4lZFxuIiwgbSwgdHJlZVttXS5MZW4sIGJpdHMpKTsKKyAgICAgICAgICAgICAgICBzLT5vcHRfbGVuICs9ICgobG9uZyliaXRzIC0gKGxvbmcpdHJlZVttXS5MZW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGxvbmcpdHJlZVttXS5GcmVxOworICAgICAgICAgICAgICAgIHRyZWVbbV0uTGVuID0gKHVzaCliaXRzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbi0tOworICAgICAgICB9CisgICAgfQorfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIEdlbmVyYXRlIHRoZSBjb2RlcyBmb3IgYSBnaXZlbiB0cmVlIGFuZCBiaXQgY291bnRzICh3aGljaCBuZWVkIG5vdCBiZQorICogb3B0aW1hbCkuCisgKiBJTiBhc3NlcnRpb246IHRoZSBhcnJheSBibF9jb3VudCBjb250YWlucyB0aGUgYml0IGxlbmd0aCBzdGF0aXN0aWNzIGZvcgorICogdGhlIGdpdmVuIHRyZWUgYW5kIHRoZSBmaWVsZCBsZW4gaXMgc2V0IGZvciBhbGwgdHJlZSBlbGVtZW50cy4KKyAqIE9VVCBhc3NlcnRpb246IHRoZSBmaWVsZCBjb2RlIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMgb2Ygbm9uCisgKiAgICAgemVybyBjb2RlIGxlbmd0aC4KKyAqLworbG9jYWwgdm9pZCBnZW5fY29kZXMgKAorICAgIGN0X2RhdGEgKnRyZWUsICAgICAgICAgICAgIC8qIHRoZSB0cmVlIHRvIGRlY29yYXRlICovCisgICAgaW50IG1heF9jb2RlLCAgICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovCisgICAgdXNoZiAqYmxfY291bnQpICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGVzIGF0IGVhY2ggYml0IGxlbmd0aCAqLworeworICAgIHVzaCBuZXh0X2NvZGVbTUFYX0JJVFMrMV07IC8qIG5leHQgY29kZSB2YWx1ZSBmb3IgZWFjaCBiaXQgbGVuZ3RoICovCisgICAgdXNoIGNvZGUgPSAwOyAgICAgICAgICAgICAgLyogcnVubmluZyBjb2RlIHZhbHVlICovCisgICAgaW50IGJpdHM7ICAgICAgICAgICAgICAgICAgLyogYml0IGluZGV4ICovCisgICAgaW50IG47ICAgICAgICAgICAgICAgICAgICAgLyogY29kZSBpbmRleCAqLworCisgICAgLyogVGhlIGRpc3RyaWJ1dGlvbiBjb3VudHMgYXJlIGZpcnN0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNvZGUgdmFsdWVzCisgICAgICogd2l0aG91dCBiaXQgcmV2ZXJzYWwuCisgICAgICovCisgICAgZm9yIChiaXRzID0gMTsgYml0cyA8PSBNQVhfQklUUzsgYml0cysrKSB7CisgICAgICAgIG5leHRfY29kZVtiaXRzXSA9IGNvZGUgPSAoY29kZSArIGJsX2NvdW50W2JpdHMtMV0pIDw8IDE7CisgICAgfQorICAgIC8qIENoZWNrIHRoYXQgdGhlIGJpdCBjb3VudHMgaW4gYmxfY291bnQgYXJlIGNvbnNpc3RlbnQuIFRoZSBsYXN0IGNvZGUKKyAgICAgKiBtdXN0IGJlIGFsbCBvbmVzLgorICAgICAqLworICAgIEFzc2VydCAoY29kZSArIGJsX2NvdW50W01BWF9CSVRTXS0xID09ICgxPDxNQVhfQklUUyktMSwKKyAgICAgICAgICAgICJpbmNvbnNpc3RlbnQgYml0IGNvdW50cyIpOworICAgIFRyYWNldigoc3RkZXJyLCJcbmdlbl9jb2RlczogbWF4X2NvZGUgJWQgIiwgbWF4X2NvZGUpKTsKKworICAgIGZvciAobiA9IDA7ICBuIDw9IG1heF9jb2RlOyBuKyspIHsKKyAgICAgICAgaW50IGxlbiA9IHRyZWVbbl0uTGVuOworICAgICAgICBpZiAobGVuID09IDApIGNvbnRpbnVlOworICAgICAgICAvKiBOb3cgcmV2ZXJzZSB0aGUgYml0cyAqLworICAgICAgICB0cmVlW25dLkNvZGUgPSBiaV9yZXZlcnNlKG5leHRfY29kZVtsZW5dKyssIGxlbik7CisKKyAgICAgICAgVHJhY2Vjdih0cmVlICE9IHN0YXRpY19sdHJlZSwgKHN0ZGVyciwiXG5uICUzZCAlYyBsICUyZCBjICU0eCAoJXgpICIsCisgICAgICAgICAgICAgbiwgKGlzZ3JhcGgobikgPyBuIDogJyAnKSwgbGVuLCB0cmVlW25dLkNvZGUsIG5leHRfY29kZVtsZW5dLTEpKTsKKyAgICB9Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29uc3RydWN0IG9uZSBIdWZmbWFuIHRyZWUgYW5kIGFzc2lnbnMgdGhlIGNvZGUgYml0IHN0cmluZ3MgYW5kIGxlbmd0aHMuCisgKiBVcGRhdGUgdGhlIHRvdGFsIGJpdCBsZW5ndGggZm9yIHRoZSBjdXJyZW50IGJsb2NrLgorICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGQgZnJlcSBpcyBzZXQgZm9yIGFsbCB0cmVlIGVsZW1lbnRzLgorICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZHMgbGVuIGFuZCBjb2RlIGFyZSBzZXQgdG8gdGhlIG9wdGltYWwgYml0IGxlbmd0aAorICogICAgIGFuZCBjb3JyZXNwb25kaW5nIGNvZGUuIFRoZSBsZW5ndGggb3B0X2xlbiBpcyB1cGRhdGVkOyBzdGF0aWNfbGVuIGlzCisgKiAgICAgYWxzbyB1cGRhdGVkIGlmIHN0cmVlIGlzIG5vdCBudWxsLiBUaGUgZmllbGQgbWF4X2NvZGUgaXMgc2V0LgorICovCitsb2NhbCB2b2lkIGJ1aWxkX3RyZWUoCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICB0cmVlX2Rlc2MgKmRlc2MpIC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi8KK3sKKyAgICBjdF9kYXRhICp0cmVlICAgICAgICAgPSBkZXNjLT5keW5fdHJlZTsKKyAgICBjb25zdCBjdF9kYXRhICpzdHJlZSAgPSBkZXNjLT5zdGF0X2Rlc2MtPnN0YXRpY190cmVlOworICAgIGludCBlbGVtcyAgICAgICAgICAgICA9IGRlc2MtPnN0YXRfZGVzYy0+ZWxlbXM7CisgICAgaW50IG4sIG07ICAgICAgICAgIC8qIGl0ZXJhdGUgb3ZlciBoZWFwIGVsZW1lbnRzICovCisgICAgaW50IG1heF9jb2RlID0gLTE7IC8qIGxhcmdlc3QgY29kZSB3aXRoIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqLworICAgIGludCBub2RlOyAgICAgICAgICAvKiBuZXcgbm9kZSBiZWluZyBjcmVhdGVkICovCisKKyAgICAvKiBDb25zdHJ1Y3QgdGhlIGluaXRpYWwgaGVhcCwgd2l0aCBsZWFzdCBmcmVxdWVudCBlbGVtZW50IGluCisgICAgICogaGVhcFtTTUFMTEVTVF0uIFRoZSBzb25zIG9mIGhlYXBbbl0gYXJlIGhlYXBbMipuXSBhbmQgaGVhcFsyKm4rMV0uCisgICAgICogaGVhcFswXSBpcyBub3QgdXNlZC4KKyAgICAgKi8KKyAgICBzLT5oZWFwX2xlbiA9IDAsIHMtPmhlYXBfbWF4ID0gSEVBUF9TSVpFOworCisgICAgZm9yIChuID0gMDsgbiA8IGVsZW1zOyBuKyspIHsKKyAgICAgICAgaWYgKHRyZWVbbl0uRnJlcSAhPSAwKSB7CisgICAgICAgICAgICBzLT5oZWFwWysrKHMtPmhlYXBfbGVuKV0gPSBtYXhfY29kZSA9IG47CisgICAgICAgICAgICBzLT5kZXB0aFtuXSA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0cmVlW25dLkxlbiA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBUaGUgcGt6aXAgZm9ybWF0IHJlcXVpcmVzIHRoYXQgYXQgbGVhc3Qgb25lIGRpc3RhbmNlIGNvZGUgZXhpc3RzLAorICAgICAqIGFuZCB0aGF0IGF0IGxlYXN0IG9uZSBiaXQgc2hvdWxkIGJlIHNlbnQgZXZlbiBpZiB0aGVyZSBpcyBvbmx5IG9uZQorICAgICAqIHBvc3NpYmxlIGNvZGUuIFNvIHRvIGF2b2lkIHNwZWNpYWwgY2hlY2tzIGxhdGVyIG9uIHdlIGZvcmNlIGF0IGxlYXN0CisgICAgICogdHdvIGNvZGVzIG9mIG5vbiB6ZXJvIGZyZXF1ZW5jeS4KKyAgICAgKi8KKyAgICB3aGlsZSAocy0+aGVhcF9sZW4gPCAyKSB7CisgICAgICAgIG5vZGUgPSBzLT5oZWFwWysrKHMtPmhlYXBfbGVuKV0gPSAobWF4X2NvZGUgPCAyID8gKyttYXhfY29kZSA6IDApOworICAgICAgICB0cmVlW25vZGVdLkZyZXEgPSAxOworICAgICAgICBzLT5kZXB0aFtub2RlXSA9IDA7CisgICAgICAgIHMtPm9wdF9sZW4tLTsgaWYgKHN0cmVlKSBzLT5zdGF0aWNfbGVuIC09IHN0cmVlW25vZGVdLkxlbjsKKyAgICAgICAgLyogbm9kZSBpcyAwIG9yIDEgc28gaXQgZG9lcyBub3QgaGF2ZSBleHRyYSBiaXRzICovCisgICAgfQorICAgIGRlc2MtPm1heF9jb2RlID0gbWF4X2NvZGU7CisKKyAgICAvKiBUaGUgZWxlbWVudHMgaGVhcFtoZWFwX2xlbi8yKzEgLi4gaGVhcF9sZW5dIGFyZSBsZWF2ZXMgb2YgdGhlIHRyZWUsCisgICAgICogZXN0YWJsaXNoIHN1Yi1oZWFwcyBvZiBpbmNyZWFzaW5nIGxlbmd0aHM6CisgICAgICovCisgICAgZm9yIChuID0gcy0+aGVhcF9sZW4vMjsgbiA+PSAxOyBuLS0pIHBxZG93bmhlYXAocywgdHJlZSwgbik7CisKKyAgICAvKiBDb25zdHJ1Y3QgdGhlIEh1ZmZtYW4gdHJlZSBieSByZXBlYXRlZGx5IGNvbWJpbmluZyB0aGUgbGVhc3QgdHdvCisgICAgICogZnJlcXVlbnQgbm9kZXMuCisgICAgICovCisgICAgbm9kZSA9IGVsZW1zOyAgICAgICAgICAgICAgLyogbmV4dCBpbnRlcm5hbCBub2RlIG9mIHRoZSB0cmVlICovCisgICAgZG8geworICAgICAgICBwcXJlbW92ZShzLCB0cmVlLCBuKTsgIC8qIG4gPSBub2RlIG9mIGxlYXN0IGZyZXF1ZW5jeSAqLworICAgICAgICBtID0gcy0+aGVhcFtTTUFMTEVTVF07IC8qIG0gPSBub2RlIG9mIG5leHQgbGVhc3QgZnJlcXVlbmN5ICovCisKKyAgICAgICAgcy0+aGVhcFstLShzLT5oZWFwX21heCldID0gbjsgLyoga2VlcCB0aGUgbm9kZXMgc29ydGVkIGJ5IGZyZXF1ZW5jeSAqLworICAgICAgICBzLT5oZWFwWy0tKHMtPmhlYXBfbWF4KV0gPSBtOworCisgICAgICAgIC8qIENyZWF0ZSBhIG5ldyBub2RlIGZhdGhlciBvZiBuIGFuZCBtICovCisgICAgICAgIHRyZWVbbm9kZV0uRnJlcSA9IHRyZWVbbl0uRnJlcSArIHRyZWVbbV0uRnJlcTsKKyAgICAgICAgcy0+ZGVwdGhbbm9kZV0gPSAodWNoKSgocy0+ZGVwdGhbbl0gPj0gcy0+ZGVwdGhbbV0gPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5kZXB0aFtuXSA6IHMtPmRlcHRoW21dKSArIDEpOworICAgICAgICB0cmVlW25dLkRhZCA9IHRyZWVbbV0uRGFkID0gKHVzaClub2RlOworI2lmZGVmIERVTVBfQkxfVFJFRQorICAgICAgICBpZiAodHJlZSA9PSBzLT5ibF90cmVlKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiXG5ub2RlICVkKCVkKSwgc29ucyAlZCglZCkgJWQoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgbm9kZSwgdHJlZVtub2RlXS5GcmVxLCBuLCB0cmVlW25dLkZyZXEsIG0sIHRyZWVbbV0uRnJlcSk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAvKiBhbmQgaW5zZXJ0IHRoZSBuZXcgbm9kZSBpbiB0aGUgaGVhcCAqLworICAgICAgICBzLT5oZWFwW1NNQUxMRVNUXSA9IG5vZGUrKzsKKyAgICAgICAgcHFkb3duaGVhcChzLCB0cmVlLCBTTUFMTEVTVCk7CisKKyAgICB9IHdoaWxlIChzLT5oZWFwX2xlbiA+PSAyKTsKKworICAgIHMtPmhlYXBbLS0ocy0+aGVhcF9tYXgpXSA9IHMtPmhlYXBbU01BTExFU1RdOworCisgICAgLyogQXQgdGhpcyBwb2ludCwgdGhlIGZpZWxkcyBmcmVxIGFuZCBkYWQgYXJlIHNldC4gV2UgY2FuIG5vdworICAgICAqIGdlbmVyYXRlIHRoZSBiaXQgbGVuZ3Rocy4KKyAgICAgKi8KKyAgICBnZW5fYml0bGVuKHMsICh0cmVlX2Rlc2MgKilkZXNjKTsKKworICAgIC8qIFRoZSBmaWVsZCBsZW4gaXMgbm93IHNldCwgd2UgY2FuIGdlbmVyYXRlIHRoZSBiaXQgY29kZXMgKi8KKyAgICBnZW5fY29kZXMgKChjdF9kYXRhICopdHJlZSwgbWF4X2NvZGUsIHMtPmJsX2NvdW50KTsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBTY2FuIGEgbGl0ZXJhbCBvciBkaXN0YW5jZSB0cmVlIHRvIGRldGVybWluZSB0aGUgZnJlcXVlbmNpZXMgb2YgdGhlIGNvZGVzCisgKiBpbiB0aGUgYml0IGxlbmd0aCB0cmVlLgorICovCitsb2NhbCB2b2lkIHNjYW5fdHJlZSAoCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICBjdF9kYXRhICp0cmVlLCAgIC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi8KKyAgICBpbnQgbWF4X2NvZGUpICAgIC8qIGFuZCBpdHMgbGFyZ2VzdCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqLworeworICAgIGludCBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi8KKyAgICBpbnQgcHJldmxlbiA9IC0xOyAgICAgICAgICAvKiBsYXN0IGVtaXR0ZWQgbGVuZ3RoICovCisgICAgaW50IGN1cmxlbjsgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgY29kZSAqLworICAgIGludCBuZXh0bGVuID0gdHJlZVswXS5MZW47IC8qIGxlbmd0aCBvZiBuZXh0IGNvZGUgKi8KKyAgICBpbnQgY291bnQgPSAwOyAgICAgICAgICAgICAvKiByZXBlYXQgY291bnQgb2YgdGhlIGN1cnJlbnQgY29kZSAqLworICAgIGludCBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi8KKyAgICBpbnQgbWluX2NvdW50ID0gNDsgICAgICAgICAvKiBtaW4gcmVwZWF0IGNvdW50ICovCisKKyAgICBpZiAobmV4dGxlbiA9PSAwKSBtYXhfY291bnQgPSAxMzgsIG1pbl9jb3VudCA9IDM7CisgICAgdHJlZVttYXhfY29kZSsxXS5MZW4gPSAodXNoKTB4ZmZmZjsgLyogZ3VhcmQgKi8KKworICAgIGZvciAobiA9IDA7IG4gPD0gbWF4X2NvZGU7IG4rKykgeworICAgICAgICBjdXJsZW4gPSBuZXh0bGVuOyBuZXh0bGVuID0gdHJlZVtuKzFdLkxlbjsKKyAgICAgICAgaWYgKCsrY291bnQgPCBtYXhfY291bnQgJiYgY3VybGVuID09IG5leHRsZW4pIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9IGVsc2UgaWYgKGNvdW50IDwgbWluX2NvdW50KSB7CisgICAgICAgICAgICBzLT5ibF90cmVlW2N1cmxlbl0uRnJlcSArPSBjb3VudDsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJsZW4gIT0gMCkgeworICAgICAgICAgICAgaWYgKGN1cmxlbiAhPSBwcmV2bGVuKSBzLT5ibF90cmVlW2N1cmxlbl0uRnJlcSsrOworICAgICAgICAgICAgcy0+YmxfdHJlZVtSRVBfM182XS5GcmVxKys7CisgICAgICAgIH0gZWxzZSBpZiAoY291bnQgPD0gMTApIHsKKyAgICAgICAgICAgIHMtPmJsX3RyZWVbUkVQWl8zXzEwXS5GcmVxKys7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzLT5ibF90cmVlW1JFUFpfMTFfMTM4XS5GcmVxKys7CisgICAgICAgIH0KKyAgICAgICAgY291bnQgPSAwOyBwcmV2bGVuID0gY3VybGVuOworICAgICAgICBpZiAobmV4dGxlbiA9PSAwKSB7CisgICAgICAgICAgICBtYXhfY291bnQgPSAxMzgsIG1pbl9jb3VudCA9IDM7CisgICAgICAgIH0gZWxzZSBpZiAoY3VybGVuID09IG5leHRsZW4pIHsKKyAgICAgICAgICAgIG1heF9jb3VudCA9IDYsIG1pbl9jb3VudCA9IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtYXhfY291bnQgPSA3LCBtaW5fY291bnQgPSA0OworICAgICAgICB9CisgICAgfQorfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFNlbmQgYSBsaXRlcmFsIG9yIGRpc3RhbmNlIHRyZWUgaW4gY29tcHJlc3NlZCBmb3JtLCB1c2luZyB0aGUgY29kZXMgaW4KKyAqIGJsX3RyZWUuCisgKi8KK2xvY2FsIHZvaWQgc2VuZF90cmVlICgKKyAgICBkZWZsYXRlX3N0YXRlICpzLAorICAgIGN0X2RhdGEgKnRyZWUsIC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi8KKyAgICBpbnQgbWF4X2NvZGUpICAgICAgIC8qIGFuZCBpdHMgbGFyZ2VzdCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqLworeworICAgIGludCBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi8KKyAgICBpbnQgcHJldmxlbiA9IC0xOyAgICAgICAgICAvKiBsYXN0IGVtaXR0ZWQgbGVuZ3RoICovCisgICAgaW50IGN1cmxlbjsgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgY29kZSAqLworICAgIGludCBuZXh0bGVuID0gdHJlZVswXS5MZW47IC8qIGxlbmd0aCBvZiBuZXh0IGNvZGUgKi8KKyAgICBpbnQgY291bnQgPSAwOyAgICAgICAgICAgICAvKiByZXBlYXQgY291bnQgb2YgdGhlIGN1cnJlbnQgY29kZSAqLworICAgIGludCBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi8KKyAgICBpbnQgbWluX2NvdW50ID0gNDsgICAgICAgICAvKiBtaW4gcmVwZWF0IGNvdW50ICovCisKKyAgICAvKiB0cmVlW21heF9jb2RlKzFdLkxlbiA9IC0xOyAqLyAgLyogZ3VhcmQgYWxyZWFkeSBzZXQgKi8KKyAgICBpZiAobmV4dGxlbiA9PSAwKSBtYXhfY291bnQgPSAxMzgsIG1pbl9jb3VudCA9IDM7CisKKyAgICBmb3IgKG4gPSAwOyBuIDw9IG1heF9jb2RlOyBuKyspIHsKKyAgICAgICAgY3VybGVuID0gbmV4dGxlbjsgbmV4dGxlbiA9IHRyZWVbbisxXS5MZW47CisgICAgICAgIGlmICgrK2NvdW50IDwgbWF4X2NvdW50ICYmIGN1cmxlbiA9PSBuZXh0bGVuKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfSBlbHNlIGlmIChjb3VudCA8IG1pbl9jb3VudCkgeworICAgICAgICAgICAgZG8geyBzZW5kX2NvZGUocywgY3VybGVuLCBzLT5ibF90cmVlKTsgfSB3aGlsZSAoLS1jb3VudCAhPSAwKTsKKworICAgICAgICB9IGVsc2UgaWYgKGN1cmxlbiAhPSAwKSB7CisgICAgICAgICAgICBpZiAoY3VybGVuICE9IHByZXZsZW4pIHsKKyAgICAgICAgICAgICAgICBzZW5kX2NvZGUocywgY3VybGVuLCBzLT5ibF90cmVlKTsgY291bnQtLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFzc2VydChjb3VudCA+PSAzICYmIGNvdW50IDw9IDYsICIgM182PyIpOworICAgICAgICAgICAgc2VuZF9jb2RlKHMsIFJFUF8zXzYsIHMtPmJsX3RyZWUpOyBzZW5kX2JpdHMocywgY291bnQtMywgMik7CisKKyAgICAgICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkgeworICAgICAgICAgICAgc2VuZF9jb2RlKHMsIFJFUFpfM18xMCwgcy0+YmxfdHJlZSk7IHNlbmRfYml0cyhzLCBjb3VudC0zLCAzKTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VuZF9jb2RlKHMsIFJFUFpfMTFfMTM4LCBzLT5ibF90cmVlKTsgc2VuZF9iaXRzKHMsIGNvdW50LTExLCA3KTsKKyAgICAgICAgfQorICAgICAgICBjb3VudCA9IDA7IHByZXZsZW4gPSBjdXJsZW47CisgICAgICAgIGlmIChuZXh0bGVuID09IDApIHsKKyAgICAgICAgICAgIG1heF9jb3VudCA9IDEzOCwgbWluX2NvdW50ID0gMzsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJsZW4gPT0gbmV4dGxlbikgeworICAgICAgICAgICAgbWF4X2NvdW50ID0gNiwgbWluX2NvdW50ID0gMzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1heF9jb3VudCA9IDcsIG1pbl9jb3VudCA9IDQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29uc3RydWN0IHRoZSBIdWZmbWFuIHRyZWUgZm9yIHRoZSBiaXQgbGVuZ3RocyBhbmQgcmV0dXJuIHRoZSBpbmRleCBpbgorICogYmxfb3JkZXIgb2YgdGhlIGxhc3QgYml0IGxlbmd0aCBjb2RlIHRvIHNlbmQuCisgKi8KK2xvY2FsIGludCBidWlsZF9ibF90cmVlKAorICAgIGRlZmxhdGVfc3RhdGUgKnMpCit7CisgICAgaW50IG1heF9ibGluZGV4OyAgLyogaW5kZXggb2YgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgb2Ygbm9uIHplcm8gZnJlcSAqLworCisgICAgLyogRGV0ZXJtaW5lIHRoZSBiaXQgbGVuZ3RoIGZyZXF1ZW5jaWVzIGZvciBsaXRlcmFsIGFuZCBkaXN0YW5jZSB0cmVlcyAqLworICAgIHNjYW5fdHJlZShzLCAoY3RfZGF0YSAqKXMtPmR5bl9sdHJlZSwgcy0+bF9kZXNjLm1heF9jb2RlKTsKKyAgICBzY2FuX3RyZWUocywgKGN0X2RhdGEgKilzLT5keW5fZHRyZWUsIHMtPmRfZGVzYy5tYXhfY29kZSk7CisKKyAgICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlOiAqLworICAgIGJ1aWxkX3RyZWUocywgKHRyZWVfZGVzYyAqKSgmKHMtPmJsX2Rlc2MpKSk7CisgICAgLyogb3B0X2xlbiBub3cgaW5jbHVkZXMgdGhlIGxlbmd0aCBvZiB0aGUgdHJlZSByZXByZXNlbnRhdGlvbnMsIGV4Y2VwdAorICAgICAqIHRoZSBsZW5ndGhzIG9mIHRoZSBiaXQgbGVuZ3RocyBjb2RlcyBhbmQgdGhlIDUrNSs0IGJpdHMgZm9yIHRoZSBjb3VudHMuCisgICAgICovCisKKyAgICAvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBiaXQgbGVuZ3RoIGNvZGVzIHRvIHNlbmQuIFRoZSBwa3ppcCBmb3JtYXQKKyAgICAgKiByZXF1aXJlcyB0aGF0IGF0IGxlYXN0IDQgYml0IGxlbmd0aCBjb2RlcyBiZSBzZW50LiAoYXBwbm90ZS50eHQgc2F5cworICAgICAqIDMgYnV0IHRoZSBhY3R1YWwgdmFsdWUgdXNlZCBpcyA0LikKKyAgICAgKi8KKyAgICBmb3IgKG1heF9ibGluZGV4ID0gQkxfQ09ERVMtMTsgbWF4X2JsaW5kZXggPj0gMzsgbWF4X2JsaW5kZXgtLSkgeworICAgICAgICBpZiAocy0+YmxfdHJlZVtibF9vcmRlclttYXhfYmxpbmRleF1dLkxlbiAhPSAwKSBicmVhazsKKyAgICB9CisgICAgLyogVXBkYXRlIG9wdF9sZW4gdG8gaW5jbHVkZSB0aGUgYml0IGxlbmd0aCB0cmVlIGFuZCBjb3VudHMgKi8KKyAgICBzLT5vcHRfbGVuICs9IDMqKG1heF9ibGluZGV4KzEpICsgNSs1KzQ7CisgICAgVHJhY2V2KChzdGRlcnIsICJcbmR5biB0cmVlczogZHluICVsZCwgc3RhdCAlbGQiLAorICAgICAgICAgICAgcy0+b3B0X2xlbiwgcy0+c3RhdGljX2xlbikpOworCisgICAgcmV0dXJuIG1heF9ibGluZGV4OworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFNlbmQgdGhlIGhlYWRlciBmb3IgYSBibG9jayB1c2luZyBkeW5hbWljIEh1ZmZtYW4gdHJlZXM6IHRoZSBjb3VudHMsIHRoZQorICogbGVuZ3RocyBvZiB0aGUgYml0IGxlbmd0aCBjb2RlcywgdGhlIGxpdGVyYWwgdHJlZSBhbmQgdGhlIGRpc3RhbmNlIHRyZWUuCisgKiBJTiBhc3NlcnRpb246IGxjb2RlcyA+PSAyNTcsIGRjb2RlcyA+PSAxLCBibGNvZGVzID49IDQuCisgKi8KK2xvY2FsIHZvaWQgc2VuZF9hbGxfdHJlZXMoCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICBpbnQgbGNvZGVzLCBpbnQgZGNvZGVzLCBpbnQgYmxjb2RlcykgLyogbnVtYmVyIG9mIGNvZGVzIGZvciBlYWNoIHRyZWUgKi8KK3sKKyAgICBpbnQgcmFuazsgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4IGluIGJsX29yZGVyICovCisKKyAgICBBc3NlcnQgKGxjb2RlcyA+PSAyNTcgJiYgZGNvZGVzID49IDEgJiYgYmxjb2RlcyA+PSA0LCAibm90IGVub3VnaCBjb2RlcyIpOworICAgIEFzc2VydCAobGNvZGVzIDw9IExfQ09ERVMgJiYgZGNvZGVzIDw9IERfQ09ERVMgJiYgYmxjb2RlcyA8PSBCTF9DT0RFUywKKyAgICAgICAgICAgICJ0b28gbWFueSBjb2RlcyIpOworICAgIFRyYWNldigoc3RkZXJyLCAiXG5ibCBjb3VudHM6ICIpKTsKKyAgICBzZW5kX2JpdHMocywgbGNvZGVzLTI1NywgNSk7IC8qIG5vdCArMjU1IGFzIHN0YXRlZCBpbiBhcHBub3RlLnR4dCAqLworICAgIHNlbmRfYml0cyhzLCBkY29kZXMtMSwgICA1KTsKKyAgICBzZW5kX2JpdHMocywgYmxjb2Rlcy00LCAgNCk7IC8qIG5vdCAtMyBhcyBzdGF0ZWQgaW4gYXBwbm90ZS50eHQgKi8KKyAgICBmb3IgKHJhbmsgPSAwOyByYW5rIDwgYmxjb2RlczsgcmFuaysrKSB7CisgICAgICAgIFRyYWNldigoc3RkZXJyLCAiXG5ibCBjb2RlICUyZCAiLCBibF9vcmRlcltyYW5rXSkpOworICAgICAgICBzZW5kX2JpdHMocywgcy0+YmxfdHJlZVtibF9vcmRlcltyYW5rXV0uTGVuLCAzKTsKKyAgICB9CisgICAgVHJhY2V2KChzdGRlcnIsICJcbmJsIHRyZWU6IHNlbnQgJWxkIiwgcy0+Yml0c19zZW50KSk7CisKKyAgICBzZW5kX3RyZWUocywgKGN0X2RhdGEgKilzLT5keW5fbHRyZWUsIGxjb2Rlcy0xKTsgLyogbGl0ZXJhbCB0cmVlICovCisgICAgVHJhY2V2KChzdGRlcnIsICJcbmxpdCB0cmVlOiBzZW50ICVsZCIsIHMtPmJpdHNfc2VudCkpOworCisgICAgc2VuZF90cmVlKHMsIChjdF9kYXRhICopcy0+ZHluX2R0cmVlLCBkY29kZXMtMSk7IC8qIGRpc3RhbmNlIHRyZWUgKi8KKyAgICBUcmFjZXYoKHN0ZGVyciwgIlxuZGlzdCB0cmVlOiBzZW50ICVsZCIsIHMtPmJpdHNfc2VudCkpOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFNlbmQgYSBzdG9yZWQgYmxvY2sKKyAqLwordm9pZCBaTElCX0lOVEVSTkFMIF90cl9zdG9yZWRfYmxvY2soCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICBjaGFyZiAqYnVmLCAgICAgICAvKiBpbnB1dCBibG9jayAqLworICAgIHVsZyBzdG9yZWRfbGVuLCAgIC8qIGxlbmd0aCBvZiBpbnB1dCBibG9jayAqLworICAgIGludCBsYXN0KSAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi8KK3sKKyAgICBzZW5kX2JpdHMocywgKFNUT1JFRF9CTE9DSzw8MSkrbGFzdCwgMyk7ICAgIC8qIHNlbmQgYmxvY2sgdHlwZSAqLworI2lmZGVmIERFQlVHCisgICAgcy0+Y29tcHJlc3NlZF9sZW4gPSAocy0+Y29tcHJlc3NlZF9sZW4gKyAzICsgNykgJiAodWxnKX43TDsKKyAgICBzLT5jb21wcmVzc2VkX2xlbiArPSAoc3RvcmVkX2xlbiArIDQpIDw8IDM7CisjZW5kaWYKKyAgICBjb3B5X2Jsb2NrKHMsIGJ1ZiwgKHVuc2lnbmVkKXN0b3JlZF9sZW4sIDEpOyAvKiB3aXRoIGhlYWRlciAqLworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIEZsdXNoIHRoZSBiaXRzIGluIHRoZSBiaXQgYnVmZmVyIHRvIHBlbmRpbmcgb3V0cHV0IChsZWF2ZXMgYXQgbW9zdCA3IGJpdHMpCisgKi8KK3ZvaWQgWkxJQl9JTlRFUk5BTCBfdHJfZmx1c2hfYml0cygKKyAgICBkZWZsYXRlX3N0YXRlICpzKQoreworICAgIGJpX2ZsdXNoKHMpOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFNlbmQgb25lIGVtcHR5IHN0YXRpYyBibG9jayB0byBnaXZlIGVub3VnaCBsb29rYWhlYWQgZm9yIGluZmxhdGUuCisgKiBUaGlzIHRha2VzIDEwIGJpdHMsIG9mIHdoaWNoIDcgbWF5IHJlbWFpbiBpbiB0aGUgYml0IGJ1ZmZlci4KKyAqLwordm9pZCBaTElCX0lOVEVSTkFMIF90cl9hbGlnbigKKyAgICBkZWZsYXRlX3N0YXRlICpzKQoreworICAgIHNlbmRfYml0cyhzLCBTVEFUSUNfVFJFRVM8PDEsIDMpOworICAgIHNlbmRfY29kZShzLCBFTkRfQkxPQ0ssIHN0YXRpY19sdHJlZSk7CisjaWZkZWYgREVCVUcKKyAgICBzLT5jb21wcmVzc2VkX2xlbiArPSAxMEw7IC8qIDMgZm9yIGJsb2NrIHR5cGUsIDcgZm9yIEVPQiAqLworI2VuZGlmCisgICAgYmlfZmx1c2gocyk7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogRGV0ZXJtaW5lIHRoZSBiZXN0IGVuY29kaW5nIGZvciB0aGUgY3VycmVudCBibG9jazogZHluYW1pYyB0cmVlcywgc3RhdGljCisgKiB0cmVlcyBvciBzdG9yZSwgYW5kIG91dHB1dCB0aGUgZW5jb2RlZCBibG9jayB0byB0aGUgemlwIGZpbGUuCisgKi8KK3ZvaWQgWkxJQl9JTlRFUk5BTCBfdHJfZmx1c2hfYmxvY2soCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICBjaGFyZiAqYnVmLCAgICAgICAvKiBpbnB1dCBibG9jaywgb3IgTlVMTCBpZiB0b28gb2xkICovCisgICAgdWxnIHN0b3JlZF9sZW4sICAgLyogbGVuZ3RoIG9mIGlucHV0IGJsb2NrICovCisgICAgaW50IGxhc3QpICAgICAgICAgLyogb25lIGlmIHRoaXMgaXMgdGhlIGxhc3QgYmxvY2sgZm9yIGEgZmlsZSAqLworeworICAgIHVsZyBvcHRfbGVuYiwgc3RhdGljX2xlbmI7IC8qIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gaW4gYnl0ZXMgKi8KKyAgICBpbnQgbWF4X2JsaW5kZXggPSAwOyAgLyogaW5kZXggb2YgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgb2Ygbm9uIHplcm8gZnJlcSAqLworCisgICAgLyogQnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgdW5sZXNzIGEgc3RvcmVkIGJsb2NrIGlzIGZvcmNlZCAqLworICAgIGlmIChzLT5sZXZlbCA+IDApIHsKKworICAgICAgICAvKiBDaGVjayBpZiB0aGUgZmlsZSBpcyBiaW5hcnkgb3IgdGV4dCAqLworICAgICAgICBpZiAocy0+c3RybS0+ZGF0YV90eXBlID09IFpfVU5LTk9XTikKKyAgICAgICAgICAgIHMtPnN0cm0tPmRhdGFfdHlwZSA9IGRldGVjdF9kYXRhX3R5cGUocyk7CisKKyAgICAgICAgLyogQ29uc3RydWN0IHRoZSBsaXRlcmFsIGFuZCBkaXN0YW5jZSB0cmVlcyAqLworICAgICAgICBidWlsZF90cmVlKHMsICh0cmVlX2Rlc2MgKikoJihzLT5sX2Rlc2MpKSk7CisgICAgICAgIFRyYWNldigoc3RkZXJyLCAiXG5saXQgZGF0YTogZHluICVsZCwgc3RhdCAlbGQiLCBzLT5vcHRfbGVuLAorICAgICAgICAgICAgICAgIHMtPnN0YXRpY19sZW4pKTsKKworICAgICAgICBidWlsZF90cmVlKHMsICh0cmVlX2Rlc2MgKikoJihzLT5kX2Rlc2MpKSk7CisgICAgICAgIFRyYWNldigoc3RkZXJyLCAiXG5kaXN0IGRhdGE6IGR5biAlbGQsIHN0YXQgJWxkIiwgcy0+b3B0X2xlbiwKKyAgICAgICAgICAgICAgICBzLT5zdGF0aWNfbGVuKSk7CisgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQsIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gYXJlIHRoZSB0b3RhbCBiaXQgbGVuZ3RocyBvZgorICAgICAgICAgKiB0aGUgY29tcHJlc3NlZCBibG9jayBkYXRhLCBleGNsdWRpbmcgdGhlIHRyZWUgcmVwcmVzZW50YXRpb25zLgorICAgICAgICAgKi8KKworICAgICAgICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlIGZvciB0aGUgYWJvdmUgdHdvIHRyZWVzLCBhbmQgZ2V0IHRoZSBpbmRleAorICAgICAgICAgKiBpbiBibF9vcmRlciBvZiB0aGUgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgdG8gc2VuZC4KKyAgICAgICAgICovCisgICAgICAgIG1heF9ibGluZGV4ID0gYnVpbGRfYmxfdHJlZShzKTsKKworICAgICAgICAvKiBEZXRlcm1pbmUgdGhlIGJlc3QgZW5jb2RpbmcuIENvbXB1dGUgdGhlIGJsb2NrIGxlbmd0aHMgaW4gYnl0ZXMuICovCisgICAgICAgIG9wdF9sZW5iID0gKHMtPm9wdF9sZW4rMys3KT4+MzsKKyAgICAgICAgc3RhdGljX2xlbmIgPSAocy0+c3RhdGljX2xlbiszKzcpPj4zOworCisgICAgICAgIFRyYWNldigoc3RkZXJyLCAiXG5vcHQgJWx1KCVsdSkgc3RhdCAlbHUoJWx1KSBzdG9yZWQgJWx1IGxpdCAldSAiLAorICAgICAgICAgICAgICAgIG9wdF9sZW5iLCBzLT5vcHRfbGVuLCBzdGF0aWNfbGVuYiwgcy0+c3RhdGljX2xlbiwgc3RvcmVkX2xlbiwKKyAgICAgICAgICAgICAgICBzLT5sYXN0X2xpdCkpOworCisgICAgICAgIGlmIChzdGF0aWNfbGVuYiA8PSBvcHRfbGVuYikgb3B0X2xlbmIgPSBzdGF0aWNfbGVuYjsKKworICAgIH0gZWxzZSB7CisgICAgICAgIEFzc2VydChidWYgIT0gKGNoYXIqKTAsICJsb3N0IGJ1ZiIpOworICAgICAgICBvcHRfbGVuYiA9IHN0YXRpY19sZW5iID0gc3RvcmVkX2xlbiArIDU7IC8qIGZvcmNlIGEgc3RvcmVkIGJsb2NrICovCisgICAgfQorCisjaWZkZWYgRk9SQ0VfU1RPUkVECisgICAgaWYgKGJ1ZiAhPSAoY2hhciopMCkgeyAvKiBmb3JjZSBzdG9yZWQgYmxvY2sgKi8KKyNlbHNlCisgICAgaWYgKHN0b3JlZF9sZW4rNCA8PSBvcHRfbGVuYiAmJiBidWYgIT0gKGNoYXIqKTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgLyogNDogdHdvIHdvcmRzIGZvciB0aGUgbGVuZ3RocyAqLworI2VuZGlmCisgICAgICAgIC8qIFRoZSB0ZXN0IGJ1ZiAhPSBOVUxMIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIExJVF9CVUZTSVpFID4gV1NJWkUuCisgICAgICAgICAqIE90aGVyd2lzZSB3ZSBjYW4ndCBoYXZlIHByb2Nlc3NlZCBtb3JlIHRoYW4gV1NJWkUgaW5wdXQgYnl0ZXMgc2luY2UKKyAgICAgICAgICogdGhlIGxhc3QgYmxvY2sgZmx1c2gsIGJlY2F1c2UgY29tcHJlc3Npb24gd291bGQgaGF2ZSBiZWVuCisgICAgICAgICAqIHN1Y2Nlc3NmdWwuIElmIExJVF9CVUZTSVpFIDw9IFdTSVpFLCBpdCBpcyBuZXZlciB0b28gbGF0ZSB0bworICAgICAgICAgKiB0cmFuc2Zvcm0gYSBibG9jayBpbnRvIGEgc3RvcmVkIGJsb2NrLgorICAgICAgICAgKi8KKyAgICAgICAgX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpOworCisjaWZkZWYgRk9SQ0VfU1RBVElDCisgICAgfSBlbHNlIGlmIChzdGF0aWNfbGVuYiA+PSAwKSB7IC8qIGZvcmNlIHN0YXRpYyB0cmVlcyAqLworI2Vsc2UKKyAgICB9IGVsc2UgaWYgKHMtPnN0cmF0ZWd5ID09IFpfRklYRUQgfHwgc3RhdGljX2xlbmIgPT0gb3B0X2xlbmIpIHsKKyNlbmRpZgorICAgICAgICBzZW5kX2JpdHMocywgKFNUQVRJQ19UUkVFUzw8MSkrbGFzdCwgMyk7CisgICAgICAgIGNvbXByZXNzX2Jsb2NrKHMsIChjb25zdCBjdF9kYXRhICopc3RhdGljX2x0cmVlLAorICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY3RfZGF0YSAqKXN0YXRpY19kdHJlZSk7CisjaWZkZWYgREVCVUcKKyAgICAgICAgcy0+Y29tcHJlc3NlZF9sZW4gKz0gMyArIHMtPnN0YXRpY19sZW47CisjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBzZW5kX2JpdHMocywgKERZTl9UUkVFUzw8MSkrbGFzdCwgMyk7CisgICAgICAgIHNlbmRfYWxsX3RyZWVzKHMsIHMtPmxfZGVzYy5tYXhfY29kZSsxLCBzLT5kX2Rlc2MubWF4X2NvZGUrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWF4X2JsaW5kZXgrMSk7CisgICAgICAgIGNvbXByZXNzX2Jsb2NrKHMsIChjb25zdCBjdF9kYXRhICopcy0+ZHluX2x0cmVlLAorICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY3RfZGF0YSAqKXMtPmR5bl9kdHJlZSk7CisjaWZkZWYgREVCVUcKKyAgICAgICAgcy0+Y29tcHJlc3NlZF9sZW4gKz0gMyArIHMtPm9wdF9sZW47CisjZW5kaWYKKyAgICB9CisgICAgQXNzZXJ0IChzLT5jb21wcmVzc2VkX2xlbiA9PSBzLT5iaXRzX3NlbnQsICJiYWQgY29tcHJlc3NlZCBzaXplIik7CisgICAgLyogVGhlIGFib3ZlIGNoZWNrIGlzIG1hZGUgbW9kIDJeMzIsIGZvciBmaWxlcyBsYXJnZXIgdGhhbiA1MTIgTUIKKyAgICAgKiBhbmQgdUxvbmcgaW1wbGVtZW50ZWQgb24gMzIgYml0cy4KKyAgICAgKi8KKyAgICBpbml0X2Jsb2NrKHMpOworCisgICAgaWYgKGxhc3QpIHsKKyAgICAgICAgYmlfd2luZHVwKHMpOworI2lmZGVmIERFQlVHCisgICAgICAgIHMtPmNvbXByZXNzZWRfbGVuICs9IDc7ICAvKiBhbGlnbiBvbiBieXRlIGJvdW5kYXJ5ICovCisjZW5kaWYKKyAgICB9CisgICAgVHJhY2V2KChzdGRlcnIsIlxuY29tcHJsZW4gJWx1KCVsdSkgIiwgcy0+Y29tcHJlc3NlZF9sZW4+PjMsCisgICAgICAgICAgIHMtPmNvbXByZXNzZWRfbGVuLTcqbGFzdCkpOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFNhdmUgdGhlIG1hdGNoIGluZm8gYW5kIHRhbGx5IHRoZSBmcmVxdWVuY3kgY291bnRzLiBSZXR1cm4gdHJ1ZSBpZgorICogdGhlIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkLgorICovCitpbnQgWkxJQl9JTlRFUk5BTCBfdHJfdGFsbHkgKAorICAgIGRlZmxhdGVfc3RhdGUgKnMsCisgICAgdW5zaWduZWQgZGlzdCwgIC8qIGRpc3RhbmNlIG9mIG1hdGNoZWQgc3RyaW5nICovCisgICAgdW5zaWduZWQgbGMpICAgIC8qIG1hdGNoIGxlbmd0aC1NSU5fTUFUQ0ggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3Q9PTApICovCit7CisgICAgcy0+ZF9idWZbcy0+bGFzdF9saXRdID0gKHVzaClkaXN0OworICAgIHMtPmxfYnVmW3MtPmxhc3RfbGl0KytdID0gKHVjaClsYzsKKyAgICBpZiAoZGlzdCA9PSAwKSB7CisgICAgICAgIC8qIGxjIGlzIHRoZSB1bm1hdGNoZWQgY2hhciAqLworICAgICAgICBzLT5keW5fbHRyZWVbbGNdLkZyZXErKzsKKyAgICB9IGVsc2UgeworICAgICAgICBzLT5tYXRjaGVzKys7CisgICAgICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi8KKyAgICAgICAgZGlzdC0tOyAgICAgICAgICAgICAvKiBkaXN0ID0gbWF0Y2ggZGlzdGFuY2UgLSAxICovCisgICAgICAgIEFzc2VydCgodXNoKWRpc3QgPCAodXNoKU1BWF9ESVNUKHMpICYmCisgICAgICAgICAgICAgICAodXNoKWxjIDw9ICh1c2gpKE1BWF9NQVRDSC1NSU5fTUFUQ0gpICYmCisgICAgICAgICAgICAgICAodXNoKWRfY29kZShkaXN0KSA8ICh1c2gpRF9DT0RFUywgICJfdHJfdGFsbHk6IGJhZCBtYXRjaCIpOworCisgICAgICAgIHMtPmR5bl9sdHJlZVtfbGVuZ3RoX2NvZGVbbGNdK0xJVEVSQUxTKzFdLkZyZXErKzsKKyAgICAgICAgcy0+ZHluX2R0cmVlW2RfY29kZShkaXN0KV0uRnJlcSsrOworICAgIH0KKworI2lmZGVmIFRSVU5DQVRFX0JMT0NLCisgICAgLyogVHJ5IHRvIGd1ZXNzIGlmIGl0IGlzIHByb2ZpdGFibGUgdG8gc3RvcCB0aGUgY3VycmVudCBibG9jayBoZXJlICovCisgICAgaWYgKChzLT5sYXN0X2xpdCAmIDB4MWZmZikgPT0gMCAmJiBzLT5sZXZlbCA+IDIpIHsKKyAgICAgICAgLyogQ29tcHV0ZSBhbiB1cHBlciBib3VuZCBmb3IgdGhlIGNvbXByZXNzZWQgbGVuZ3RoICovCisgICAgICAgIHVsZyBvdXRfbGVuZ3RoID0gKHVsZylzLT5sYXN0X2xpdCo4TDsKKyAgICAgICAgdWxnIGluX2xlbmd0aCA9ICh1bGcpKChsb25nKXMtPnN0cnN0YXJ0IC0gcy0+YmxvY2tfc3RhcnQpOworICAgICAgICBpbnQgZGNvZGU7CisgICAgICAgIGZvciAoZGNvZGUgPSAwOyBkY29kZSA8IERfQ09ERVM7IGRjb2RlKyspIHsKKyAgICAgICAgICAgIG91dF9sZW5ndGggKz0gKHVsZylzLT5keW5fZHRyZWVbZGNvZGVdLkZyZXEgKgorICAgICAgICAgICAgICAgICg1TCtleHRyYV9kYml0c1tkY29kZV0pOworICAgICAgICB9CisgICAgICAgIG91dF9sZW5ndGggPj49IDM7CisgICAgICAgIFRyYWNldigoc3RkZXJyLCJcbmxhc3RfbGl0ICV1LCBpbiAlbGQsIG91dCB+JWxkKCVsZCUlKSAiLAorICAgICAgICAgICAgICAgcy0+bGFzdF9saXQsIGluX2xlbmd0aCwgb3V0X2xlbmd0aCwKKyAgICAgICAgICAgICAgIDEwMEwgLSBvdXRfbGVuZ3RoKjEwMEwvaW5fbGVuZ3RoKSk7CisgICAgICAgIGlmIChzLT5tYXRjaGVzIDwgcy0+bGFzdF9saXQvMiAmJiBvdXRfbGVuZ3RoIDwgaW5fbGVuZ3RoLzIpIHJldHVybiAxOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiAocy0+bGFzdF9saXQgPT0gcy0+bGl0X2J1ZnNpemUtMSk7CisgICAgLyogV2UgYXZvaWQgZXF1YWxpdHkgd2l0aCBsaXRfYnVmc2l6ZSBiZWNhdXNlIG9mIHdyYXBhcm91bmQgYXQgNjRLCisgICAgICogb24gMTYgYml0IG1hY2hpbmVzIGFuZCBiZWNhdXNlIHN0b3JlZCBibG9ja3MgYXJlIHJlc3RyaWN0ZWQgdG8KKyAgICAgKiA2NEstMSBieXRlcy4KKyAgICAgKi8KK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBTZW5kIHRoZSBibG9jayBkYXRhIGNvbXByZXNzZWQgdXNpbmcgdGhlIGdpdmVuIEh1ZmZtYW4gdHJlZXMKKyAqLworbG9jYWwgdm9pZCBjb21wcmVzc19ibG9jaygKKyAgICBkZWZsYXRlX3N0YXRlICpzLAorICAgIGNvbnN0IGN0X2RhdGEgKmx0cmVlLCAvKiBsaXRlcmFsIHRyZWUgKi8KKyAgICBjb25zdCBjdF9kYXRhICpkdHJlZSkgLyogZGlzdGFuY2UgdHJlZSAqLworeworICAgIHVuc2lnbmVkIGRpc3Q7ICAgICAgLyogZGlzdGFuY2Ugb2YgbWF0Y2hlZCBzdHJpbmcgKi8KKyAgICBpbnQgbGM7ICAgICAgICAgICAgIC8qIG1hdGNoIGxlbmd0aCBvciB1bm1hdGNoZWQgY2hhciAoaWYgZGlzdCA9PSAwKSAqLworICAgIHVuc2lnbmVkIGx4ID0gMDsgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqLworICAgIHVuc2lnbmVkIGNvZGU7ICAgICAgLyogdGhlIGNvZGUgdG8gc2VuZCAqLworICAgIGludCBleHRyYTsgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgdG8gc2VuZCAqLworCisgICAgaWYgKHMtPmxhc3RfbGl0ICE9IDApIGRvIHsKKyAgICAgICAgZGlzdCA9IHMtPmRfYnVmW2x4XTsKKyAgICAgICAgbGMgPSBzLT5sX2J1ZltseCsrXTsKKyAgICAgICAgaWYgKGRpc3QgPT0gMCkgeworICAgICAgICAgICAgc2VuZF9jb2RlKHMsIGxjLCBsdHJlZSk7IC8qIHNlbmQgYSBsaXRlcmFsIGJ5dGUgKi8KKyAgICAgICAgICAgIFRyYWNlY3YoaXNncmFwaChsYyksIChzdGRlcnIsIiAnJWMnICIsIGxjKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBIZXJlLCBsYyBpcyB0aGUgbWF0Y2ggbGVuZ3RoIC0gTUlOX01BVENIICovCisgICAgICAgICAgICBjb2RlID0gX2xlbmd0aF9jb2RlW2xjXTsKKyAgICAgICAgICAgIHNlbmRfY29kZShzLCBjb2RlK0xJVEVSQUxTKzEsIGx0cmVlKTsgLyogc2VuZCB0aGUgbGVuZ3RoIGNvZGUgKi8KKyAgICAgICAgICAgIGV4dHJhID0gZXh0cmFfbGJpdHNbY29kZV07CisgICAgICAgICAgICBpZiAoZXh0cmEgIT0gMCkgeworICAgICAgICAgICAgICAgIGxjIC09IGJhc2VfbGVuZ3RoW2NvZGVdOworICAgICAgICAgICAgICAgIHNlbmRfYml0cyhzLCBsYywgZXh0cmEpOyAgICAgICAvKiBzZW5kIHRoZSBleHRyYSBsZW5ndGggYml0cyAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGlzdC0tOyAvKiBkaXN0IGlzIG5vdyB0aGUgbWF0Y2ggZGlzdGFuY2UgLSAxICovCisgICAgICAgICAgICBjb2RlID0gZF9jb2RlKGRpc3QpOworICAgICAgICAgICAgQXNzZXJ0IChjb2RlIDwgRF9DT0RFUywgImJhZCBkX2NvZGUiKTsKKworICAgICAgICAgICAgc2VuZF9jb2RlKHMsIGNvZGUsIGR0cmVlKTsgICAgICAgLyogc2VuZCB0aGUgZGlzdGFuY2UgY29kZSAqLworICAgICAgICAgICAgZXh0cmEgPSBleHRyYV9kYml0c1tjb2RlXTsKKyAgICAgICAgICAgIGlmIChleHRyYSAhPSAwKSB7CisgICAgICAgICAgICAgICAgZGlzdCAtPSBiYXNlX2Rpc3RbY29kZV07CisgICAgICAgICAgICAgICAgc2VuZF9iaXRzKHMsIGRpc3QsIGV4dHJhKTsgICAvKiBzZW5kIHRoZSBleHRyYSBkaXN0YW5jZSBiaXRzICovCisgICAgICAgICAgICB9CisgICAgICAgIH0gLyogbGl0ZXJhbCBvciBtYXRjaCBwYWlyID8gKi8KKworICAgICAgICAvKiBDaGVjayB0aGF0IHRoZSBvdmVybGF5IGJldHdlZW4gcGVuZGluZ19idWYgYW5kIGRfYnVmK2xfYnVmIGlzIG9rOiAqLworICAgICAgICBBc3NlcnQoKHVJbnQpKHMtPnBlbmRpbmcpIDwgcy0+bGl0X2J1ZnNpemUgKyAyKmx4LAorICAgICAgICAgICAgICAgInBlbmRpbmdCdWYgb3ZlcmZsb3ciKTsKKworICAgIH0gd2hpbGUgKGx4IDwgcy0+bGFzdF9saXQpOworCisgICAgc2VuZF9jb2RlKHMsIEVORF9CTE9DSywgbHRyZWUpOworfQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIENoZWNrIGlmIHRoZSBkYXRhIHR5cGUgaXMgVEVYVCBvciBCSU5BUlksIHVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgorICogLSBURVhUIGlmIHRoZSB0d28gY29uZGl0aW9ucyBiZWxvdyBhcmUgc2F0aXNmaWVkOgorICogICAgYSkgVGhlcmUgYXJlIG5vIG5vbi1wb3J0YWJsZSBjb250cm9sIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZQorICogICAgICAgImJsYWNrIGxpc3QiICgwLi42LCAxNC4uMjUsIDI4Li4zMSkuCisgKiAgICBiKSBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgcHJpbnRhYmxlIGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gdGhlCisgKiAgICAgICAid2hpdGUgbGlzdCIgKDkge1RBQn0sIDEwIHtMRn0sIDEzIHtDUn0sIDMyLi4yNTUpLgorICogLSBCSU5BUlkgb3RoZXJ3aXNlLgorICogLSBUaGUgZm9sbG93aW5nIHBhcnRpYWxseS1wb3J0YWJsZSBjb250cm9sIGNoYXJhY3RlcnMgZm9ybSBhCisgKiAgICJncmF5IGxpc3QiIHRoYXQgaXMgaWdub3JlZCBpbiB0aGlzIGRldGVjdGlvbiBhbGdvcml0aG06CisgKiAgICg3IHtCRUx9LCA4IHtCU30sIDExIHtWVH0sIDEyIHtGRn0sIDI2IHtTVUJ9LCAyNyB7RVNDfSkuCisgKiBJTiBhc3NlcnRpb246IHRoZSBmaWVsZHMgRnJlcSBvZiBkeW5fbHRyZWUgYXJlIHNldC4KKyAqLworbG9jYWwgaW50IGRldGVjdF9kYXRhX3R5cGUoCisgICAgZGVmbGF0ZV9zdGF0ZSAqcykKK3sKKyAgICAvKiBibGFja19tYXNrIGlzIHRoZSBiaXQgbWFzayBvZiBibGFjay1saXN0ZWQgYnl0ZXMKKyAgICAgKiBzZXQgYml0cyAwLi42LCAxNC4uMjUsIGFuZCAyOC4uMzEKKyAgICAgKiAweGYzZmZjMDdmID0gYmluYXJ5IDExMTEwMDExMTExMTExMTExMTAwMDAwMDAxMTExMTExCisgICAgICovCisgICAgdW5zaWduZWQgbG9uZyBibGFja19tYXNrID0gMHhmM2ZmYzA3ZlVMOworICAgIGludCBuOworCisgICAgLyogQ2hlY2sgZm9yIG5vbi10ZXh0dWFsICgiYmxhY2stbGlzdGVkIikgYnl0ZXMuICovCisgICAgZm9yIChuID0gMDsgbiA8PSAzMTsgbisrLCBibGFja19tYXNrID4+PSAxKQorICAgICAgICBpZiAoKGJsYWNrX21hc2sgJiAxKSAmJiAocy0+ZHluX2x0cmVlW25dLkZyZXEgIT0gMCkpCisgICAgICAgICAgICByZXR1cm4gWl9CSU5BUlk7CisKKyAgICAvKiBDaGVjayBmb3IgdGV4dHVhbCAoIndoaXRlLWxpc3RlZCIpIGJ5dGVzLiAqLworICAgIGlmIChzLT5keW5fbHRyZWVbOV0uRnJlcSAhPSAwIHx8IHMtPmR5bl9sdHJlZVsxMF0uRnJlcSAhPSAwCisgICAgICAgICAgICB8fCBzLT5keW5fbHRyZWVbMTNdLkZyZXEgIT0gMCkKKyAgICAgICAgcmV0dXJuIFpfVEVYVDsKKyAgICBmb3IgKG4gPSAzMjsgbiA8IExJVEVSQUxTOyBuKyspCisgICAgICAgIGlmIChzLT5keW5fbHRyZWVbbl0uRnJlcSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIFpfVEVYVDsKKworICAgIC8qIFRoZXJlIGFyZSBubyAiYmxhY2stbGlzdGVkIiBvciAid2hpdGUtbGlzdGVkIiBieXRlczoKKyAgICAgKiB0aGlzIHN0cmVhbSBlaXRoZXIgaXMgZW1wdHkgb3IgaGFzIHRvbGVyYXRlZCAoImdyYXktbGlzdGVkIikgYnl0ZXMgb25seS4KKyAgICAgKi8KKyAgICByZXR1cm4gWl9CSU5BUlk7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogUmV2ZXJzZSB0aGUgZmlyc3QgbGVuIGJpdHMgb2YgYSBjb2RlLCB1c2luZyBzdHJhaWdodGZvcndhcmQgY29kZSAoYSBmYXN0ZXIKKyAqIG1ldGhvZCB3b3VsZCB1c2UgYSB0YWJsZSkKKyAqIElOIGFzc2VydGlvbjogMSA8PSBsZW4gPD0gMTUKKyAqLworbG9jYWwgdW5zaWduZWQgYmlfcmV2ZXJzZSgKKyAgICB1bnNpZ25lZCBjb2RlLCAvKiB0aGUgdmFsdWUgdG8gaW52ZXJ0ICovCisgICAgaW50IGxlbikgICAgICAgLyogaXRzIGJpdCBsZW5ndGggKi8KK3sKKyAgICByZWdpc3RlciB1bnNpZ25lZCByZXMgPSAwOworICAgIGRvIHsKKyAgICAgICAgcmVzIHw9IGNvZGUgJiAxOworICAgICAgICBjb2RlID4+PSAxLCByZXMgPDw9IDE7CisgICAgfSB3aGlsZSAoLS1sZW4gPiAwKTsKKyAgICByZXR1cm4gcmVzID4+IDE7Cit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogRmx1c2ggdGhlIGJpdCBidWZmZXIsIGtlZXBpbmcgYXQgbW9zdCA3IGJpdHMgaW4gaXQuCisgKi8KK2xvY2FsIHZvaWQgYmlfZmx1c2goCisgICAgZGVmbGF0ZV9zdGF0ZSAqcykKK3sKKyAgICBpZiAocy0+YmlfdmFsaWQgPT0gMTYpIHsKKyAgICAgICAgcHV0X3Nob3J0KHMsIHMtPmJpX2J1Zik7CisgICAgICAgIHMtPmJpX2J1ZiA9IDA7CisgICAgICAgIHMtPmJpX3ZhbGlkID0gMDsKKyAgICB9IGVsc2UgaWYgKHMtPmJpX3ZhbGlkID49IDgpIHsKKyAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpcy0+YmlfYnVmKTsKKyAgICAgICAgcy0+YmlfYnVmID4+PSA4OworICAgICAgICBzLT5iaV92YWxpZCAtPSA4OworICAgIH0KK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBGbHVzaCB0aGUgYml0IGJ1ZmZlciBhbmQgYWxpZ24gdGhlIG91dHB1dCBvbiBhIGJ5dGUgYm91bmRhcnkKKyAqLworbG9jYWwgdm9pZCBiaV93aW5kdXAoCisgICAgZGVmbGF0ZV9zdGF0ZSAqcykKK3sKKyAgICBpZiAocy0+YmlfdmFsaWQgPiA4KSB7CisgICAgICAgIHB1dF9zaG9ydChzLCBzLT5iaV9idWYpOworICAgIH0gZWxzZSBpZiAocy0+YmlfdmFsaWQgPiAwKSB7CisgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKXMtPmJpX2J1Zik7CisgICAgfQorICAgIHMtPmJpX2J1ZiA9IDA7CisgICAgcy0+YmlfdmFsaWQgPSAwOworI2lmZGVmIERFQlVHCisgICAgcy0+Yml0c19zZW50ID0gKHMtPmJpdHNfc2VudCs3KSAmIH43OworI2VuZGlmCit9CisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29weSBhIHN0b3JlZCBibG9jaywgc3RvcmluZyBmaXJzdCB0aGUgbGVuZ3RoIGFuZCBpdHMKKyAqIG9uZSdzIGNvbXBsZW1lbnQgaWYgcmVxdWVzdGVkLgorICovCitsb2NhbCB2b2lkIGNvcHlfYmxvY2soCisgICAgZGVmbGF0ZV9zdGF0ZSAqcywKKyAgICBjaGFyZiAgICAqYnVmLCAgICAvKiB0aGUgaW5wdXQgZGF0YSAqLworICAgIHVuc2lnbmVkIGxlbiwgICAgIC8qIGl0cyBsZW5ndGggKi8KKyAgICBpbnQgICAgICBoZWFkZXIpICAvKiB0cnVlIGlmIGJsb2NrIGhlYWRlciBtdXN0IGJlIHdyaXR0ZW4gKi8KK3sKKyAgICBiaV93aW5kdXAocyk7ICAgICAgICAvKiBhbGlnbiBvbiBieXRlIGJvdW5kYXJ5ICovCisKKyAgICBpZiAoaGVhZGVyKSB7CisgICAgICAgIHB1dF9zaG9ydChzLCAodXNoKWxlbik7CisgICAgICAgIHB1dF9zaG9ydChzLCAodXNoKX5sZW4pOworI2lmZGVmIERFQlVHCisgICAgICAgIHMtPmJpdHNfc2VudCArPSAyKjE2OworI2VuZGlmCisgICAgfQorI2lmZGVmIERFQlVHCisgICAgcy0+Yml0c19zZW50ICs9ICh1bGcpbGVuPDwzOworI2VuZGlmCisgICAgd2hpbGUgKGxlbi0tKSB7CisgICAgICAgIHB1dF9ieXRlKHMsICpidWYrKyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX3VuY29tcHIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl91bmNvbXByLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjYjhmZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl91bmNvbXByLmMKQEAgLTAsMCArMSw1OSBAQAorLyogdW5jb21wci5jIC0tIGRlY29tcHJlc3MgYSBtZW1vcnkgYnVmZmVyCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMywgMjAxMCBKZWFuLWxvdXAgR2FpbGx5LgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKy8qIEAoIykgJElkJCAqLworCisjZGVmaW5lIFpMSUJfSU5URVJOQUwKKyNpbmNsdWRlICJ6bGliLmgiCisKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICBEZWNvbXByZXNzZXMgdGhlIHNvdXJjZSBidWZmZXIgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgc291cmNlTGVuIGlzCisgICB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlIHNvdXJjZSBidWZmZXIuIFVwb24gZW50cnksIGRlc3RMZW4gaXMgdGhlIHRvdGFsCisgICBzaXplIG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsIHdoaWNoIG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlCisgICBlbnRpcmUgdW5jb21wcmVzc2VkIGRhdGEuIChUaGUgc2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgbXVzdCBoYXZlCisgICBiZWVuIHNhdmVkIHByZXZpb3VzbHkgYnkgdGhlIGNvbXByZXNzb3IgYW5kIHRyYW5zbWl0dGVkIHRvIHRoZSBkZWNvbXByZXNzb3IKKyAgIGJ5IHNvbWUgbWVjaGFuaXNtIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgY29tcHJlc3Npb24gbGlicmFyeS4pCisgICBVcG9uIGV4aXQsIGRlc3RMZW4gaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBjb21wcmVzc2VkIGJ1ZmZlci4KKworICAgICB1bmNvbXByZXNzIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90CisgICBlbm91Z2ggbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQKKyAgIGJ1ZmZlciwgb3IgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1dCBkYXRhIHdhcyBjb3JydXB0ZWQuCisqLworaW50IFpFWFBPUlQgdW5jb21wcmVzcyAoCisgICAgQnl0ZWYgKmRlc3QsCisgICAgdUxvbmdmICpkZXN0TGVuLAorICAgIGNvbnN0IEJ5dGVmICpzb3VyY2UsCisgICAgdUxvbmcgc291cmNlTGVuKQoreworICAgIHpfc3RyZWFtIHN0cmVhbTsKKyAgICBpbnQgZXJyOworCisgICAgc3RyZWFtLm5leHRfaW4gPSAoel9jb25zdCBCeXRlZiAqKXNvdXJjZTsKKyAgICBzdHJlYW0uYXZhaWxfaW4gPSAodUludClzb3VyY2VMZW47CisgICAgLyogQ2hlY2sgZm9yIHNvdXJjZSA+IDY0SyBvbiAxNi1iaXQgbWFjaGluZTogKi8KKyAgICBpZiAoKHVMb25nKXN0cmVhbS5hdmFpbF9pbiAhPSBzb3VyY2VMZW4pIHJldHVybiBaX0JVRl9FUlJPUjsKKworICAgIHN0cmVhbS5uZXh0X291dCA9IGRlc3Q7CisgICAgc3RyZWFtLmF2YWlsX291dCA9ICh1SW50KSpkZXN0TGVuOworICAgIGlmICgodUxvbmcpc3RyZWFtLmF2YWlsX291dCAhPSAqZGVzdExlbikgcmV0dXJuIFpfQlVGX0VSUk9SOworCisgICAgc3RyZWFtLnphbGxvYyA9IChhbGxvY19mdW5jKTA7CisgICAgc3RyZWFtLnpmcmVlID0gKGZyZWVfZnVuYykwOworCisgICAgZXJyID0gaW5mbGF0ZUluaXQoJnN0cmVhbSk7CisgICAgaWYgKGVyciAhPSBaX09LKSByZXR1cm4gZXJyOworCisgICAgZXJyID0gaW5mbGF0ZSgmc3RyZWFtLCBaX0ZJTklTSCk7CisgICAgaWYgKGVyciAhPSBaX1NUUkVBTV9FTkQpIHsKKyAgICAgICAgaW5mbGF0ZUVuZCgmc3RyZWFtKTsKKyAgICAgICAgaWYgKGVyciA9PSBaX05FRURfRElDVCB8fCAoZXJyID09IFpfQlVGX0VSUk9SICYmIHN0cmVhbS5hdmFpbF9pbiA9PSAwKSkKKyAgICAgICAgICAgIHJldHVybiBaX0RBVEFfRVJST1I7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorICAgICpkZXN0TGVuID0gc3RyZWFtLnRvdGFsX291dDsKKworICAgIGVyciA9IGluZmxhdGVFbmQoJnN0cmVhbSk7CisgICAgcmV0dXJuIGVycjsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl96dXRpbC5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9meF96bGliX3p1dGlsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJiOTQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZnhfemxpYl96dXRpbC5jCkBAIC0wLDAgKzEsMzQ5IEBACisvKiB6dXRpbC5jIC0tIHRhcmdldCBkZXBlbmRlbnQgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5CisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNSwgMjAxMCwgMjAxMSwgMjAxMiBKZWFuLWxvdXAgR2FpbGx5LgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKy8qIEAoIykgJElkJCAqLworCisjaW5jbHVkZSAienV0aWwuaCIKKyNpZm5kZWYgWl9TT0xPCisjICBpbmNsdWRlICJnemd1dHMuaCIKKyNlbmRpZgorCisjaWZuZGVmIE5PX0RVTU1ZX0RFQ0wKK3N0cnVjdCBpbnRlcm5hbF9zdGF0ZSAgICAgIHtpbnQgZHVtbXk7fTsgLyogZm9yIGJ1Z2d5IGNvbXBpbGVycyAqLworI2VuZGlmCisKK3pfY29uc3QgY2hhciAqIGNvbnN0IHpfZXJybXNnWzEwXSA9IHsKKyJuZWVkIGRpY3Rpb25hcnkiLCAgICAgLyogWl9ORUVEX0RJQ1QgICAgICAgMiAgKi8KKyJzdHJlYW0gZW5kIiwgICAgICAgICAgLyogWl9TVFJFQU1fRU5EICAgICAgMSAgKi8KKyIiLCAgICAgICAgICAgICAgICAgICAgLyogWl9PSyAgICAgICAgICAgICAgMCAgKi8KKyJmaWxlIGVycm9yIiwgICAgICAgICAgLyogWl9FUlJOTyAgICAgICAgICgtMSkgKi8KKyJzdHJlYW0gZXJyb3IiLCAgICAgICAgLyogWl9TVFJFQU1fRVJST1IgICgtMikgKi8KKyJkYXRhIGVycm9yIiwgICAgICAgICAgLyogWl9EQVRBX0VSUk9SICAgICgtMykgKi8KKyJpbnN1ZmZpY2llbnQgbWVtb3J5IiwgLyogWl9NRU1fRVJST1IgICAgICgtNCkgKi8KKyJidWZmZXIgZXJyb3IiLCAgICAgICAgLyogWl9CVUZfRVJST1IgICAgICgtNSkgKi8KKyJpbmNvbXBhdGlibGUgdmVyc2lvbiIsLyogWl9WRVJTSU9OX0VSUk9SICgtNikgKi8KKyIifTsKKworCitjb25zdCBjaGFyICogWkVYUE9SVCB6bGliVmVyc2lvbigpCit7CisgICAgcmV0dXJuIFpMSUJfVkVSU0lPTjsKK30KKwordUxvbmcgWkVYUE9SVCB6bGliQ29tcGlsZUZsYWdzKCkKK3sKKyAgICB1TG9uZyBmbGFnczsKKworICAgIGZsYWdzID0gMDsKKyAgICBzd2l0Y2ggKChpbnQpKHNpemVvZih1SW50KSkpIHsKKyAgICBjYXNlIDI6ICAgICBicmVhazsKKyAgICBjYXNlIDQ6ICAgICBmbGFncyArPSAxOyAgICAgYnJlYWs7CisgICAgY2FzZSA4OiAgICAgZmxhZ3MgKz0gMjsgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6ICAgIGZsYWdzICs9IDM7CisgICAgfQorICAgIHN3aXRjaCAoKGludCkoc2l6ZW9mKHVMb25nKSkpIHsKKyAgICBjYXNlIDI6ICAgICBicmVhazsKKyAgICBjYXNlIDQ6ICAgICBmbGFncyArPSAxIDw8IDI7ICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6ICAgICBmbGFncyArPSAyIDw8IDI7ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAgICBmbGFncyArPSAzIDw8IDI7CisgICAgfQorICAgIHN3aXRjaCAoKGludCkoc2l6ZW9mKHZvaWRwZikpKSB7CisgICAgY2FzZSAyOiAgICAgYnJlYWs7CisgICAgY2FzZSA0OiAgICAgZmxhZ3MgKz0gMSA8PCA0OyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA4OiAgICAgZmxhZ3MgKz0gMiA8PCA0OyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDogICAgZmxhZ3MgKz0gMyA8PCA0OworICAgIH0KKyAgICBzd2l0Y2ggKChpbnQpKHNpemVvZih6X29mZl90KSkpIHsKKyAgICBjYXNlIDI6ICAgICBicmVhazsKKyAgICBjYXNlIDQ6ICAgICBmbGFncyArPSAxIDw8IDY7ICAgICAgICBicmVhazsKKyAgICBjYXNlIDg6ICAgICBmbGFncyArPSAyIDw8IDY7ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAgICBmbGFncyArPSAzIDw8IDY7CisgICAgfQorI2lmZGVmIERFQlVHCisgICAgZmxhZ3MgKz0gMSA8PCA4OworI2VuZGlmCisjaWYgZGVmaW5lZChBU01WKSB8fCBkZWZpbmVkKEFTTUlORikKKyAgICBmbGFncyArPSAxIDw8IDk7CisjZW5kaWYKKyNpZmRlZiBaTElCX1dJTkFQSQorICAgIGZsYWdzICs9IDEgPDwgMTA7CisjZW5kaWYKKyNpZmRlZiBCVUlMREZJWEVECisgICAgZmxhZ3MgKz0gMSA8PCAxMjsKKyNlbmRpZgorI2lmZGVmIERZTkFNSUNfQ1JDX1RBQkxFCisgICAgZmxhZ3MgKz0gMSA8PCAxMzsKKyNlbmRpZgorI2lmZGVmIE5PX0daQ09NUFJFU1MKKyAgICBmbGFncyArPSAxTCA8PCAxNjsKKyNlbmRpZgorI2lmZGVmIE5PX0daSVAKKyAgICBmbGFncyArPSAxTCA8PCAxNzsKKyNlbmRpZgorI2lmZGVmIFBLWklQX0JVR19XT1JLQVJPVU5ECisgICAgZmxhZ3MgKz0gMUwgPDwgMjA7CisjZW5kaWYKKyNpZmRlZiBGQVNURVNUCisgICAgZmxhZ3MgKz0gMUwgPDwgMjE7CisjZW5kaWYKKyNpZiBkZWZpbmVkKFNUREMpIHx8IGRlZmluZWQoWl9IQVZFX1NUREFSR19IKQorIyAgaWZkZWYgTk9fdnNucHJpbnRmCisgICAgZmxhZ3MgKz0gMUwgPDwgMjU7CisjICAgIGlmZGVmIEhBU192c3ByaW50Zl92b2lkCisgICAgZmxhZ3MgKz0gMUwgPDwgMjY7CisjICAgIGVuZGlmCisjICBlbHNlCisjICAgIGlmZGVmIEhBU192c25wcmludGZfdm9pZAorICAgIGZsYWdzICs9IDFMIDw8IDI2OworIyAgICBlbmRpZgorIyAgZW5kaWYKKyNlbHNlCisgICAgZmxhZ3MgKz0gMUwgPDwgMjQ7CisjICBpZmRlZiBOT19zbnByaW50ZgorICAgIGZsYWdzICs9IDFMIDw8IDI1OworIyAgICBpZmRlZiBIQVNfc3ByaW50Zl92b2lkCisgICAgZmxhZ3MgKz0gMUwgPDwgMjY7CisjICAgIGVuZGlmCisjICBlbHNlCisjICAgIGlmZGVmIEhBU19zbnByaW50Zl92b2lkCisgICAgZmxhZ3MgKz0gMUwgPDwgMjY7CisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisgICAgcmV0dXJuIGZsYWdzOworfQorCisjaWZkZWYgREVCVUcKKworIyAgaWZuZGVmIHZlcmJvc2UKKyMgICAgZGVmaW5lIHZlcmJvc2UgMAorIyAgZW5kaWYKK2ludCBaTElCX0lOVEVSTkFMIHpfdmVyYm9zZSA9IHZlcmJvc2U7CisKK3ZvaWQgWkxJQl9JTlRFUk5BTCB6X2Vycm9yICgKKyAgICBjaGFyICptKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG0pOworICAgIGV4aXQoMSk7Cit9CisjZW5kaWYKKworLyogZXhwb3J0ZWQgdG8gYWxsb3cgY29udmVyc2lvbiBvZiBlcnJvciBjb2RlIHRvIHN0cmluZyBmb3IgY29tcHJlc3MoKSBhbmQKKyAqIHVuY29tcHJlc3MoKQorICovCitjb25zdCBjaGFyICogWkVYUE9SVCB6RXJyb3IoCisgICAgaW50IGVycikKK3sKKyAgICByZXR1cm4gRVJSX01TRyhlcnIpOworfQorCisjaWYgZGVmaW5lZChfV0lOMzJfV0NFKQorICAgIC8qIFRoZSBNaWNyb3NvZnQgQyBSdW4tVGltZSBMaWJyYXJ5IGZvciBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZQorICAgICAqIGVycm5vLiAgV2UgZGVmaW5lIGl0IGFzIGEgZ2xvYmFsIHZhcmlhYmxlIHRvIHNpbXBsaWZ5IHBvcnRpbmcuCisgICAgICogSXRzIHZhbHVlIGlzIGFsd2F5cyAwIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCisgICAgICovCisJLyogZG9lcyBub3QgZXhpc3Qgb24gV0NFLiBYWVE6IGFuZCB3ZSBkb24ndCBuZWVkIGl0ISAqLworICAgIC8qaW50IGVycm5vID0gMDsqLworI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9NRU1DUFkKKwordm9pZCBaTElCX0lOVEVSTkFMIHptZW1jcHkoCisgICAgQnl0ZWYqIGRlc3QsCisgICAgY29uc3QgQnl0ZWYqIHNvdXJjZSwKKyAgICB1SW50ICBsZW4pCit7CisgICAgaWYgKGxlbiA9PSAwKSByZXR1cm47CisgICAgZG8geworICAgICAgICAqZGVzdCsrID0gKnNvdXJjZSsrOyAvKiA/Pz8gdG8gYmUgdW5yb2xsZWQgKi8KKyAgICB9IHdoaWxlICgtLWxlbiAhPSAwKTsKK30KKworaW50IFpMSUJfSU5URVJOQUwgem1lbWNtcCgKKyAgICBjb25zdCBCeXRlZiogczEsCisgICAgY29uc3QgQnl0ZWYqIHMyLAorICAgIHVJbnQgIGxlbikKK3sKKyAgICB1SW50IGo7CisKKyAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHsKKyAgICAgICAgaWYgKHMxW2pdICE9IHMyW2pdKSByZXR1cm4gMiooczFbal0gPiBzMltqXSktMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgWkxJQl9JTlRFUk5BTCB6bWVtemVybygKKyAgICBCeXRlZiogZGVzdCwKKyAgICB1SW50ICBsZW4pCit7CisgICAgaWYgKGxlbiA9PSAwKSByZXR1cm47CisgICAgZG8geworICAgICAgICAqZGVzdCsrID0gMDsgIC8qID8/PyB0byBiZSB1bnJvbGxlZCAqLworICAgIH0gd2hpbGUgKC0tbGVuICE9IDApOworfQorI2VuZGlmCisKKyNpZiAwCisjaWZuZGVmIFpfU09MTworCisjaWZkZWYgU1lTMTZCSVQKKworI2lmZGVmIF9fVFVSQk9DX18KKy8qIFR1cmJvIEMgaW4gMTYtYml0IG1vZGUgKi8KKworIyAgZGVmaW5lIE1ZX1pDQUxMT0MKKworLyogVHVyYm8gQyBtYWxsb2MoKSBkb2VzIG5vdCBhbGxvdyBkeW5hbWljIGFsbG9jYXRpb24gb2YgNjRLIGJ5dGVzCisgKiBhbmQgZmFybWFsbG9jKDY0SykgcmV0dXJucyBhIHBvaW50ZXIgd2l0aCBhbiBvZmZzZXQgb2YgOCwgc28gd2UKKyAqIG11c3QgZml4IHRoZSBwb2ludGVyLiBXYXJuaW5nOiB0aGUgcG9pbnRlciBtdXN0IGJlIHB1dCBiYWNrIHRvIGl0cworICogb3JpZ2luYWwgZm9ybSBpbiBvcmRlciB0byBmcmVlIGl0LCB1c2UgemNmcmVlKCkuCisgKi8KKworI2RlZmluZSBNQVhfUFRSIDEwCisvKiAxMCo2NEsgPSA2NDBLICovCisKK2xvY2FsIGludCBuZXh0X3B0ciA9IDA7CisKK3R5cGVkZWYgc3RydWN0IHB0cl90YWJsZV9zIHsKKyAgICB2b2lkcGYgb3JnX3B0cjsKKyAgICB2b2lkcGYgbmV3X3B0cjsKK30gcHRyX3RhYmxlOworCitsb2NhbCBwdHJfdGFibGUgdGFibGVbTUFYX1BUUl07CisvKiBUaGlzIHRhYmxlIGlzIHVzZWQgdG8gcmVtZW1iZXIgdGhlIG9yaWdpbmFsIGZvcm0gb2YgcG9pbnRlcnMKKyAqIHRvIGxhcmdlIGJ1ZmZlcnMgKDY0SykuIFN1Y2ggcG9pbnRlcnMgYXJlIG5vcm1hbGl6ZWQgd2l0aCBhIHplcm8gb2Zmc2V0LgorICogU2luY2UgTVNET1MgaXMgbm90IGEgcHJlZW1wdGl2ZSBtdWx0aXRhc2tpbmcgT1MsIHRoaXMgdGFibGUgaXMgbm90CisgKiBwcm90ZWN0ZWQgZnJvbSBjb25jdXJyZW50IGFjY2Vzcy4gVGhpcyBoYWNrIGRvZXNuJ3Qgd29yayBhbnl3YXkgb24KKyAqIGEgcHJvdGVjdGVkIHN5c3RlbSBsaWtlIE9TLzIuIFVzZSBNaWNyb3NvZnQgQyBpbnN0ZWFkLgorICovCisKK3ZvaWRwZiBaTElCX0lOVEVSTkFMIHpjYWxsb2MgKHZvaWRwZiBvcGFxdWUsIHVuc2lnbmVkIGl0ZW1zLCB1bnNpZ25lZCBzaXplKQoreworICAgIHZvaWRwZiBidWYgPSBvcGFxdWU7IC8qIGp1c3QgdG8gbWFrZSBzb21lIGNvbXBpbGVycyBoYXBweSAqLworICAgIHVsZyBic2l6ZSA9ICh1bGcpaXRlbXMqc2l6ZTsKKworICAgIC8qIElmIHdlIGFsbG9jYXRlIGxlc3MgdGhhbiA2NTUyMCBieXRlcywgd2UgYXNzdW1lIHRoYXQgZmFybWFsbG9jCisgICAgICogd2lsbCByZXR1cm4gYSB1c2FibGUgcG9pbnRlciB3aGljaCBkb2Vzbid0IGhhdmUgdG8gYmUgbm9ybWFsaXplZC4KKyAgICAgKi8KKyAgICBpZiAoYnNpemUgPCA2NTUyMEwpIHsKKyAgICAgICAgYnVmID0gZmFybWFsbG9jKGJzaXplKTsKKyAgICAgICAgaWYgKCoodXNoKikmYnVmICE9IDApIHJldHVybiBidWY7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnVmID0gZmFybWFsbG9jKGJzaXplICsgMTZMKTsKKyAgICB9CisgICAgaWYgKGJ1ZiA9PSBOVUxMIHx8IG5leHRfcHRyID49IE1BWF9QVFIpIHJldHVybiBOVUxMOworICAgIHRhYmxlW25leHRfcHRyXS5vcmdfcHRyID0gYnVmOworCisgICAgLyogTm9ybWFsaXplIHRoZSBwb2ludGVyIHRvIHNlZzowICovCisgICAgKigodXNoKikmYnVmKzEpICs9ICgodXNoKSgodWNoKilidWYtMCkgKyAxNSkgPj4gNDsKKyAgICAqKHVzaCopJmJ1ZiA9IDA7CisgICAgdGFibGVbbmV4dF9wdHIrK10ubmV3X3B0ciA9IGJ1ZjsKKyAgICByZXR1cm4gYnVmOworfQorCit2b2lkIFpMSUJfSU5URVJOQUwgemNmcmVlICh2b2lkcGYgb3BhcXVlLCB2b2lkcGYgcHRyKQoreworICAgIGludCBuOworICAgIGlmICgqKHVzaCopJnB0ciAhPSAwKSB7IC8qIG9iamVjdCA8IDY0SyAqLworICAgICAgICBmYXJmcmVlKHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLyogRmluZCB0aGUgb3JpZ2luYWwgcG9pbnRlciAqLworICAgIGZvciAobiA9IDA7IG4gPCBuZXh0X3B0cjsgbisrKSB7CisgICAgICAgIGlmIChwdHIgIT0gdGFibGVbbl0ubmV3X3B0cikgY29udGludWU7CisKKyAgICAgICAgZmFyZnJlZSh0YWJsZVtuXS5vcmdfcHRyKTsKKyAgICAgICAgd2hpbGUgKCsrbiA8IG5leHRfcHRyKSB7CisgICAgICAgICAgICB0YWJsZVtuLTFdID0gdGFibGVbbl07CisgICAgICAgIH0KKyAgICAgICAgbmV4dF9wdHItLTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwdHIgPSBvcGFxdWU7IC8qIGp1c3QgdG8gbWFrZSBzb21lIGNvbXBpbGVycyBoYXBweSAqLworICAgIEFzc2VydCgwLCAiemNmcmVlOiBwdHIgbm90IGZvdW5kIik7Cit9CisKKyNlbmRpZiAvKiBfX1RVUkJPQ19fICovCisKKworI2lmZGVmIE1fSTg2CisvKiBNaWNyb3NvZnQgQyBpbiAxNi1iaXQgbW9kZSAqLworCisjICBkZWZpbmUgTVlfWkNBTExPQworCisjaWYgKCFkZWZpbmVkKF9NU0NfVkVSKSB8fCAoX01TQ19WRVIgPD0gNjAwKSkKKyMgIGRlZmluZSBfaGFsbG9jICBoYWxsb2MKKyMgIGRlZmluZSBfaGZyZWUgICBoZnJlZQorI2VuZGlmCisKK3ZvaWRwZiBaTElCX0lOVEVSTkFMIHpjYWxsb2MgKHZvaWRwZiBvcGFxdWUsIHVJbnQgaXRlbXMsIHVJbnQgc2l6ZSkKK3sKKyAgICBpZiAob3BhcXVlKSBvcGFxdWUgPSAwOyAvKiB0byBtYWtlIGNvbXBpbGVyIGhhcHB5ICovCisgICAgcmV0dXJuIF9oYWxsb2MoKGxvbmcpaXRlbXMsIHNpemUpOworfQorCit2b2lkIFpMSUJfSU5URVJOQUwgemNmcmVlICh2b2lkcGYgb3BhcXVlLCB2b2lkcGYgcHRyKQoreworICAgIGlmIChvcGFxdWUpIG9wYXF1ZSA9IDA7IC8qIHRvIG1ha2UgY29tcGlsZXIgaGFwcHkgKi8KKyAgICBfaGZyZWUocHRyKTsKK30KKworI2VuZGlmIC8qIE1fSTg2ICovCisKKyNlbmRpZiAvKiBTWVMxNkJJVCAqLworCisKKyNpZm5kZWYgTVlfWkNBTExPQyAvKiBBbnkgc3lzdGVtIHdpdGhvdXQgYSBzcGVjaWFsIGFsbG9jIGZ1bmN0aW9uICovCisKKyNpZm5kZWYgU1REQworZXh0ZXJuIHZvaWRwICBtYWxsb2MgT0YoKHVJbnQgc2l6ZSkpOworZXh0ZXJuIHZvaWRwICBjYWxsb2MgT0YoKHVJbnQgaXRlbXMsIHVJbnQgc2l6ZSkpOworZXh0ZXJuIHZvaWQgICBmcmVlICAgT0YoKHZvaWRwZiBwdHIpKTsKKyNlbmRpZgorCit2b2lkcGYgWkxJQl9JTlRFUk5BTCB6Y2FsbG9jIChvcGFxdWUsIGl0ZW1zLCBzaXplKQorICAgIHZvaWRwZiBvcGFxdWU7CisgICAgdW5zaWduZWQgaXRlbXM7CisgICAgdW5zaWduZWQgc2l6ZTsKK3sKKyAgICBpZiAob3BhcXVlKSBpdGVtcyArPSBzaXplIC0gc2l6ZTsgLyogbWFrZSBjb21waWxlciBoYXBweSAqLworICAgIHJldHVybiBzaXplb2YodUludCkgPiAyID8gKHZvaWRwZiltYWxsb2MoaXRlbXMgKiBzaXplKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZHBmKWNhbGxvYyhpdGVtcywgc2l6ZSk7Cit9CisKK3ZvaWQgWkxJQl9JTlRFUk5BTCB6Y2ZyZWUgKG9wYXF1ZSwgcHRyKQorICAgIHZvaWRwZiBvcGFxdWU7CisgICAgdm9pZHBmIHB0cjsKK3sKKyAgICBmcmVlKHB0cik7CisgICAgaWYgKG9wYXF1ZSkgcmV0dXJuOyAvKiBtYWtlIGNvbXBpbGVyIGhhcHB5ICovCit9CisKKyNlbmRpZiAvKiBNWV9aQ0FMTE9DICovCisKKyNlbmRpZiAvKiAhWl9TT0xPICovCisjZW5kaWYJLyogMCAqLworCisjaWYgZGVmaW5lZChfRlhfTUFOQUdFRF9DT0RFXykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2V4dGVybiB2b2lkKiBGWE1FTV9EZWZhdWx0QWxsb2Moc2l6ZV90LCBpbnQpOworZXh0ZXJuIHZvaWQgRlhNRU1fRGVmYXVsdEZyZWUodm9pZCosIGludCk7CisKKyNpZiBkZWZpbmVkKF9GWF9NQU5BR0VEX0NPREVfKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKy8qIFhZUSAyMDA3LTEtMTkgKi8KK3ZvaWRwZiB6Y2FsbG9jKHZvaWRwZiBvcGFxdWUsIHVuc2lnbmVkIGl0ZW1zLCB1bnNpZ25lZCBzaXplKQoreworCXJldHVybiBGWE1FTV9EZWZhdWx0QWxsb2MoaXRlbXMgKiBzaXplLCAwKTsKK30KKwordm9pZCB6Y2ZyZWUodm9pZHBmIG9wYXF1ZSwgdm9pZHBmIHB0cikKK3sKKwlGWE1FTV9EZWZhdWx0RnJlZShwdHIsIDApOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9nemNsb3NlLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2d6Y2xvc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjAxMGI4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9nemNsb3NlLmMKQEAgLTAsMCArMSwyNSBAQAorLyogZ3pjbG9zZS5jIC0tIHpsaWIgZ3pjbG9zZSgpIGZ1bmN0aW9uCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMTAgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKyNpbmNsdWRlICJnemd1dHMuaCIKKworLyogZ3pjbG9zZSgpIGlzIGluIGEgc2VwYXJhdGUgZmlsZSBzbyB0aGF0IGl0IGlzIGxpbmtlZCBpbiBvbmx5IGlmIGl0IGlzIHVzZWQuCisgICBUaGF0IHdheSB0aGUgb3RoZXIgZ3pjbG9zZSBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgaW5zdGVhZCB0byBhdm9pZCBsaW5raW5nIGluCisgICB1bm5lZWRlZCBjb21wcmVzc2lvbiBvciBkZWNvbXByZXNzaW9uIHJvdXRpbmVzLiAqLworaW50IFpFWFBPUlQgZ3pjbG9zZSgKKyAgICBnekZpbGUgZmlsZSkKK3sKKyNpZm5kZWYgTk9fR1pDT01QUkVTUworICAgIGd6X3N0YXRlcCBzdGF0ZTsKKworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdGF0ZSA9IChnel9zdGF0ZXApZmlsZTsKKworICAgIHJldHVybiBzdGF0ZS0+bW9kZSA9PSBHWl9SRUFEID8gZ3pjbG9zZV9yKGZpbGUpIDogZ3pjbG9zZV93KGZpbGUpOworI2Vsc2UKKyAgICByZXR1cm4gZ3pjbG9zZV9yKGZpbGUpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2d6Z3V0cy5oIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9nemd1dHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDQ1NGFhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9nemd1dHMuaApAQCAtMCwwICsxLDIyNyBAQAorLyogZ3pndXRzLmggLS0gemxpYiBpbnRlcm5hbCBoZWFkZXIgZGVmaW5pdGlvbnMgZm9yIGd6KiBvcGVyYXRpb25zCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKyNpZmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFCisjICBpZm5kZWYgX0xBUkdFRklMRV9TT1VSQ0UKKyMgICAgZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFIDEKKyMgIGVuZGlmCisjICBpZmRlZiBfRklMRV9PRkZTRVRfQklUUworIyAgICB1bmRlZiBfRklMRV9PRkZTRVRfQklUUworIyAgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9ISURERU4KKyMgIGRlZmluZSBaTElCX0lOVEVSTkFMIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpCisjZWxzZQorIyAgZGVmaW5lIFpMSUJfSU5URVJOQUwKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJ6bGliLmgiCisjaWZkZWYgU1REQworIyAgaW5jbHVkZSA8c3RyaW5nLmg+CisjICBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgIGluY2x1ZGUgPGxpbWl0cy5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2lmZGVmIF9XSU4zMgorIyAgaW5jbHVkZSA8c3RkZGVmLmg+CisjZW5kaWYKKworI2lmZGVmIF9fQVBQTEVfXworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fVFVSQk9DX18pIHx8IGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX1dJTjMyKQorIyAgaW5jbHVkZSA8aW8uaD4KKyNlbmRpZgorCisjaWZkZWYgV0lOQVBJX0ZBTUlMWQorIyAgZGVmaW5lIG9wZW4gX29wZW4KKyMgIGRlZmluZSByZWFkIF9yZWFkCisjICBkZWZpbmUgd3JpdGUgX3dyaXRlCisjICBkZWZpbmUgY2xvc2UgX2Nsb3NlCisjZW5kaWYKKworI2lmZGVmIE5PX0RFRkxBVEUgICAgICAgLyogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGVmaW5pdGlvbiAqLworIyAgZGVmaW5lIE5PX0daQ09NUFJFU1MKKyNlbmRpZgorCisjaWYgZGVmaW5lZChTVERDOTkpIHx8IChkZWZpbmVkKF9fVFVSQk9DX18pICYmIF9fVFVSQk9DX18gPj0gMHg1NTApCisjICBpZm5kZWYgSEFWRV9WU05QUklOVEYKKyMgICAgZGVmaW5lIEhBVkVfVlNOUFJJTlRGCisjICBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCisjICBpZm5kZWYgSEFWRV9WU05QUklOVEYKKyMgICAgZGVmaW5lIEhBVkVfVlNOUFJJTlRGCisjICBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1TRE9TKSAmJiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKEJPUkxBTkRDID4gMHg0MTApCisjICBpZm5kZWYgSEFWRV9WU05QUklOVEYKKyMgICAgZGVmaW5lIEhBVkVfVlNOUFJJTlRGCisjICBlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9WU05QUklOVEYKKyMgIGlmZGVmIE1TRE9TCisvKiB2c25wcmludGYgbWF5IGV4aXN0IG9uIHNvbWUgTVMtRE9TIGNvbXBpbGVycyAoREpHUFA/KSwKKyAgIGJ1dCBmb3Igbm93IHdlIGp1c3QgYXNzdW1lIGl0IGRvZXNuJ3QuICovCisjICAgIGRlZmluZSBOT192c25wcmludGYKKyMgIGVuZGlmCisjICBpZmRlZiBfX1RVUkJPQ19fCisjICAgIGRlZmluZSBOT192c25wcmludGYKKyMgIGVuZGlmCisjICBpZmRlZiBXSU4zMgorLyogSW4gV2luMzIsIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgYXMgdGhlICJub24tQU5TSSIgX3ZzbnByaW50Zi4gKi8KKyMgICAgaWYgIWRlZmluZWQodnNucHJpbnRmKSAmJiAhZGVmaW5lZChOT192c25wcmludGYpCisjICAgICAgaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8ICggZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxNTAwICkKKyMgICAgICAgICBkZWZpbmUgdnNucHJpbnRmIF92c25wcmludGYKKyMgICAgICBlbmRpZgorIyAgICBlbmRpZgorIyAgZW5kaWYKKyMgIGlmZGVmIF9fU0FTQworIyAgICBkZWZpbmUgTk9fdnNucHJpbnRmCisjICBlbmRpZgorIyAgaWZkZWYgVk1TCisjICAgIGRlZmluZSBOT192c25wcmludGYKKyMgIGVuZGlmCisjICBpZmRlZiBfX09TNDAwX18KKyMgICAgZGVmaW5lIE5PX3ZzbnByaW50ZgorIyAgZW5kaWYKKyMgIGlmZGVmIF9fTVZTX18KKyMgICAgZGVmaW5lIE5PX3ZzbnByaW50ZgorIyAgZW5kaWYKKyNlbmRpZgorCisvKiB1bmxpa2Ugc25wcmludGYgKHdoaWNoIGlzIHJlcXVpcmVkIGluIEM5OSwgeWV0IHN0aWxsIG5vdCBzdXBwb3J0ZWQgYnkKKyAgIE1pY3Jvc29mdCBtb3JlIHRoYW4gYSBkZWNhZGUgbGF0ZXIhKSwgX3NucHJpbnRmIGRvZXMgbm90IGd1YXJhbnRlZSBudWxsCisgICB0ZXJtaW5hdGlvbiBvZiB0aGUgcmVzdWx0IC0tIGhvd2V2ZXIgdGhpcyBpcyBvbmx5IHVzZWQgaW4gZ3psaWIuYyB3aGVyZQorICAgdGhlIHJlc3VsdCBpcyBhc3N1cmVkIHRvIGZpdCBpbiB0aGUgc3BhY2UgcHJvdmlkZWQgKi8KKyNpZmRlZiBfTVNDX1ZFUgorIyAgZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgorI2VuZGlmCisKKyNpZm5kZWYgbG9jYWwKKyMgIGRlZmluZSBsb2NhbCBzdGF0aWMKKyNlbmRpZgorLyogY29tcGlsZSB3aXRoIC1EbG9jYWwgaWYgeW91ciBkZWJ1Z2dlciBjYW4ndCBmaW5kIHN0YXRpYyBzeW1ib2xzICovCisKKy8qIGd6KiBmdW5jdGlvbnMgYWx3YXlzIHVzZSBsaWJyYXJ5IGFsbG9jYXRpb24gZnVuY3Rpb25zICovCisjaWZuZGVmIFNUREMKKyAgZXh0ZXJuIHZvaWRwICBtYWxsb2MgT0YoKHVJbnQgc2l6ZSkpOworICBleHRlcm4gdm9pZCAgIGZyZWUgICBPRigodm9pZHBmIHB0cikpOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9GWF9NQU5BR0VEX0NPREVfKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZXh0ZXJuIHZvaWQqIEZYTUVNX0RlZmF1bHRBbGxvYyhzaXplX3QsIGludCk7CitleHRlcm4gdm9pZCBGWE1FTV9EZWZhdWx0RnJlZSh2b2lkKiwgaW50KTsKKworI2lmIGRlZmluZWQoX0ZYX01BTkFHRURfQ09ERV8pICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKworI2RlZmluZSBtYWxsb2Moc2l6ZSkgRlhNRU1fRGVmYXVsdEFsbG9jKHNpemUsIDApCisjZGVmaW5lIGZyZWUocHRyKSBGWE1FTV9EZWZhdWx0RnJlZShwdHIsIDApCisKKy8qIGdldCBlcnJubyBhbmQgc3RyZXJyb3IgZGVmaW5pdGlvbiAqLworI2lmIGRlZmluZWQgVU5ERVJfQ0UKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyMgIGRlZmluZSB6c3RyZXJyb3IoKSBnel9zdHJ3aW5lcnJvcigoRFdPUkQpR2V0TGFzdEVycm9yKCkpCisjZWxzZQorIyAgaWZuZGVmIE5PX1NUUkVSUk9SCisjICAgIGluY2x1ZGUgPGVycm5vLmg+CisjICAgIGRlZmluZSB6c3RyZXJyb3IoKSBzdHJlcnJvcihlcnJubykKKyMgIGVsc2UKKyMgICAgZGVmaW5lIHpzdHJlcnJvcigpICJzdGRpbyBlcnJvciAoY29uc3VsdCBlcnJubykiCisjICBlbmRpZgorI2VuZGlmCisKKy8qIHByb3ZpZGUgcHJvdG90eXBlcyBmb3IgdGhlc2Ugd2hlbiBidWlsZGluZyB6bGliIHdpdGhvdXQgTEZTICovCisjaWYgIWRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkgfHwgX0xGUzY0X0xBUkdFRklMRS0wID09IDAKKyAgICBaRVhURVJOIGd6RmlsZSBaRVhQT1JUIGd6b3BlbjY0IE9GKChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikpOworICAgIFpFWFRFUk4gel9vZmY2NF90IFpFWFBPUlQgZ3pzZWVrNjQgT0YoKGd6RmlsZSwgel9vZmY2NF90LCBpbnQpKTsKKyAgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6dGVsbDY0IE9GKChnekZpbGUpKTsKKyAgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6b2Zmc2V0NjQgT0YoKGd6RmlsZSkpOworI2VuZGlmCisKKy8qIGRlZmF1bHQgbWVtTGV2ZWwgKi8KKyNpZiBNQVhfTUVNX0xFVkVMID49IDgKKyMgIGRlZmluZSBERUZfTUVNX0xFVkVMIDgKKyNlbHNlCisjICBkZWZpbmUgREVGX01FTV9MRVZFTCAgTUFYX01FTV9MRVZFTAorI2VuZGlmCisKKy8qIGRlZmF1bHQgaS9vIGJ1ZmZlciBzaXplIC0tIGRvdWJsZSB0aGlzIGZvciBvdXRwdXQgd2hlbiByZWFkaW5nICh0aGlzIGFuZAorICAgdHdpY2UgdGhpcyBtdXN0IGJlIGFibGUgdG8gZml0IGluIGFuIHVuc2lnbmVkIHR5cGUpICovCisjZGVmaW5lIEdaQlVGU0laRSA4MTkyCisKKy8qIGd6aXAgbW9kZXMsIGFsc28gcHJvdmlkZSBhIGxpdHRsZSBpbnRlZ3JpdHkgY2hlY2sgb24gdGhlIHBhc3NlZCBzdHJ1Y3R1cmUgKi8KKyNkZWZpbmUgR1pfTk9ORSAwCisjZGVmaW5lIEdaX1JFQUQgNzI0NworI2RlZmluZSBHWl9XUklURSAzMTE1MworI2RlZmluZSBHWl9BUFBFTkQgMSAgICAgLyogbW9kZSBzZXQgdG8gR1pfV1JJVEUgYWZ0ZXIgdGhlIGZpbGUgaXMgb3BlbmVkICovCisKKy8qIHZhbHVlcyBmb3IgZ3pfc3RhdGUgaG93ICovCisjZGVmaW5lIExPT0sgMCAgICAgIC8qIGxvb2sgZm9yIGEgZ3ppcCBoZWFkZXIgKi8KKyNkZWZpbmUgQ09QWSAxICAgICAgLyogY29weSBpbnB1dCBkaXJlY3RseSAqLworI2RlZmluZSBHWklQIDIgICAgICAvKiBkZWNvbXByZXNzIGEgZ3ppcCBzdHJlYW0gKi8KKworLyogaW50ZXJuYWwgZ3ppcCBmaWxlIHN0YXRlIGRhdGEgc3RydWN0dXJlICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIC8qIGV4cG9zZWQgY29udGVudHMgZm9yIGd6Z2V0YygpIG1hY3JvICovCisgICAgc3RydWN0IGd6RmlsZV9zIHg7ICAgICAgLyogIngiIGZvciBleHBvc2VkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogeC5oYXZlOiBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGF0IHgubmV4dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHgubmV4dDogbmV4dCBvdXRwdXQgZGF0YSB0byBkZWxpdmVyIG9yIHdyaXRlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogeC5wb3M6IGN1cnJlbnQgcG9zaXRpb24gaW4gdW5jb21wcmVzc2VkIGRhdGEgKi8KKyAgICAgICAgLyogdXNlZCBmb3IgYm90aCByZWFkaW5nIGFuZCB3cml0aW5nICovCisgICAgaW50IG1vZGU7ICAgICAgICAgICAgICAgLyogc2VlIGd6aXAgbW9kZXMgYWJvdmUgKi8KKyAgICBpbnQgZmQ7ICAgICAgICAgICAgICAgICAvKiBmaWxlIGRlc2NyaXB0b3IgKi8KKyAgICBjaGFyICpwYXRoOyAgICAgICAgICAgICAvKiBwYXRoIG9yIGZkIGZvciBlcnJvciBtZXNzYWdlcyAqLworICAgIHVuc2lnbmVkIHNpemU7ICAgICAgICAgIC8qIGJ1ZmZlciBzaXplLCB6ZXJvIGlmIG5vdCBhbGxvY2F0ZWQgeWV0ICovCisgICAgdW5zaWduZWQgd2FudDsgICAgICAgICAgLyogcmVxdWVzdGVkIGJ1ZmZlciBzaXplLCBkZWZhdWx0IGlzIEdaQlVGU0laRSAqLworICAgIHVuc2lnbmVkIGNoYXIgKmluOyAgICAgIC8qIGlucHV0IGJ1ZmZlciAqLworICAgIHVuc2lnbmVkIGNoYXIgKm91dDsgICAgIC8qIG91dHB1dCBidWZmZXIgKGRvdWJsZS1zaXplZCB3aGVuIHJlYWRpbmcpICovCisgICAgaW50IGRpcmVjdDsgICAgICAgICAgICAgLyogMCBpZiBwcm9jZXNzaW5nIGd6aXAsIDEgaWYgdHJhbnNwYXJlbnQgKi8KKyAgICAgICAgLyoganVzdCBmb3IgcmVhZGluZyAqLworICAgIGludCBob3c7ICAgICAgICAgICAgICAgIC8qIDA6IGdldCBoZWFkZXIsIDE6IGNvcHksIDI6IGRlY29tcHJlc3MgKi8KKyAgICB6X29mZjY0X3Qgc3RhcnQ7ICAgICAgICAvKiB3aGVyZSB0aGUgZ3ppcCBkYXRhIHN0YXJ0ZWQsIGZvciByZXdpbmRpbmcgKi8KKyAgICBpbnQgZW9mOyAgICAgICAgICAgICAgICAvKiB0cnVlIGlmIGVuZCBvZiBpbnB1dCBmaWxlIHJlYWNoZWQgKi8KKyAgICBpbnQgcGFzdDsgICAgICAgICAgICAgICAvKiB0cnVlIGlmIHJlYWQgcmVxdWVzdGVkIHBhc3QgZW5kICovCisgICAgICAgIC8qIGp1c3QgZm9yIHdyaXRpbmcgKi8KKyAgICBpbnQgbGV2ZWw7ICAgICAgICAgICAgICAvKiBjb21wcmVzc2lvbiBsZXZlbCAqLworICAgIGludCBzdHJhdGVneTsgICAgICAgICAgIC8qIGNvbXByZXNzaW9uIHN0cmF0ZWd5ICovCisgICAgICAgIC8qIHNlZWsgcmVxdWVzdCAqLworICAgIHpfb2ZmNjRfdCBza2lwOyAgICAgICAgIC8qIGFtb3VudCB0byBza2lwIChhbHJlYWR5IHJld291bmQgaWYgYmFja3dhcmRzKSAqLworICAgIGludCBzZWVrOyAgICAgICAgICAgICAgIC8qIHRydWUgaWYgc2VlayByZXF1ZXN0IHBlbmRpbmcgKi8KKyAgICAgICAgLyogZXJyb3IgaW5mb3JtYXRpb24gKi8KKyAgICBpbnQgZXJyOyAgICAgICAgICAgICAgICAvKiBlcnJvciBjb2RlICovCisgICAgY2hhciAqbXNnOyAgICAgICAgICAgICAgLyogZXJyb3IgbWVzc2FnZSAqLworICAgICAgICAvKiB6bGliIGluZmxhdGUgb3IgZGVmbGF0ZSBzdHJlYW0gKi8KKyAgICB6X3N0cmVhbSBzdHJtOyAgICAgICAgICAvKiBzdHJlYW0gc3RydWN0dXJlIGluLXBsYWNlIChub3QgYSBwb2ludGVyKSAqLworfSBnel9zdGF0ZTsKK3R5cGVkZWYgZ3pfc3RhdGUgRkFSICpnel9zdGF0ZXA7CisKKy8qIHNoYXJlZCBmdW5jdGlvbnMgKi8KK3ZvaWQgWkxJQl9JTlRFUk5BTCBnel9lcnJvciBPRigoZ3pfc3RhdGVwLCBpbnQsIGNvbnN0IGNoYXIgKikpOworI2lmIGRlZmluZWQgVU5ERVJfQ0UKK2NoYXIgWkxJQl9JTlRFUk5BTCAqZ3pfc3Ryd2luZXJyb3IgT0YoKERXT1JEIGVycm9yKSk7CisjZW5kaWYKKworLyogR1RfT0ZGKHgpLCB3aGVyZSB4IGlzIGFuIHVuc2lnbmVkIHZhbHVlLCBpcyB0cnVlIGlmIHggPiBtYXhpbXVtIHpfb2ZmNjRfdAorICAgdmFsdWUgLS0gbmVlZGVkIHdoZW4gY29tcGFyaW5nIHVuc2lnbmVkIHRvIHpfb2ZmNjRfdCwgd2hpY2ggaXMgc2lnbmVkCisgICAocG9zc2libGUgel9vZmY2NF90IHR5cGVzIG9mZl90LCBvZmY2NF90LCBhbmQgbG9uZyBhcmUgYWxsIHNpZ25lZCkgKi8KKyNpZmRlZiBJTlRfTUFYCisjICBkZWZpbmUgR1RfT0ZGKHgpIChzaXplb2YoaW50KSA9PSBzaXplb2Yoel9vZmY2NF90KSAmJiAoeCkgPiBJTlRfTUFYKQorI2Vsc2UKK3Vuc2lnbmVkIFpMSUJfSU5URVJOQUwgZ3pfaW50bWF4IE9GKCh2b2lkKSk7CisjICBkZWZpbmUgR1RfT0ZGKHgpIChzaXplb2YoaW50KSA9PSBzaXplb2Yoel9vZmY2NF90KSAmJiAoeCkgPiBnel9pbnRtYXgoKSkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9nemxpYi5jIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC9nemxpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YjE3NjQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2d6bGliLmMKQEAgLTAsMCArMSw2MzQgQEAKKy8qIGd6bGliLmMgLS0gemxpYiBmdW5jdGlvbnMgY29tbW9uIHRvIHJlYWRpbmcgYW5kIHdyaXRpbmcgZ3ppcCBmaWxlcworICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIE1hcmsgQWRsZXIKKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAqLworCisjaW5jbHVkZSAiZ3pndXRzLmgiCisKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQorIyAgZGVmaW5lIExTRUVLIF9sc2Vla2k2NAorI2Vsc2UKKyNpZiBkZWZpbmVkKF9MQVJHRUZJTEU2NF9TT1VSQ0UpICYmIF9MRlM2NF9MQVJHRUZJTEUtMAorIyAgZGVmaW5lIExTRUVLIGxzZWVrNjQKKyNlbHNlCisjICBkZWZpbmUgTFNFRUsgbHNlZWsKKyNlbmRpZgorI2VuZGlmCisKKy8qIExvY2FsIGZ1bmN0aW9ucyAqLworbG9jYWwgdm9pZCBnel9yZXNldCBPRigoZ3pfc3RhdGVwKSk7Citsb2NhbCBnekZpbGUgZ3pfb3BlbiBPRigoY29uc3Qgdm9pZCAqLCBpbnQsIGNvbnN0IGNoYXIgKikpOworCisjaWYgZGVmaW5lZCBVTkRFUl9DRQorCisvKiBNYXAgdGhlIFdpbmRvd3MgZXJyb3IgbnVtYmVyIGluIEVSUk9SIHRvIGEgbG9jYWxlLWRlcGVuZGVudCBlcnJvciBtZXNzYWdlCisgICBzdHJpbmcgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gaXQuICBUeXBpY2FsbHksIHRoZSB2YWx1ZXMgZm9yIEVSUk9SIGNvbWUKKyAgIGZyb20gR2V0TGFzdEVycm9yLgorCisgICBUaGUgc3RyaW5nIHBvaW50ZWQgdG8gc2hhbGwgbm90IGJlIG1vZGlmaWVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgYnV0IG1heSBiZQorICAgb3ZlcndyaXR0ZW4gYnkgYSBzdWJzZXF1ZW50IGNhbGwgdG8gZ3pfc3Ryd2luZXJyb3IKKworICAgVGhlIGd6X3N0cndpbmVycm9yIGZ1bmN0aW9uIGRvZXMgbm90IGNoYW5nZSB0aGUgY3VycmVudCBzZXR0aW5nIG9mCisgICBHZXRMYXN0RXJyb3IuICovCitjaGFyIFpMSUJfSU5URVJOQUwgKmd6X3N0cndpbmVycm9yICgKKyAgICAgRFdPUkQgZXJyb3IpCit7CisgICAgc3RhdGljIGNoYXIgYnVmWzEwMjRdOworCisgICAgd2NoYXJfdCAqbXNnYnVmOworICAgIERXT1JEIGxhc3RlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICBEV09SRCBjaGFycyA9IEZvcm1hdE1lc3NhZ2UoRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0KKyAgICAgICAgfCBGT1JNQVRfTUVTU0FHRV9BTExPQ0FURV9CVUZGRVIsCisgICAgICAgIE5VTEwsCisgICAgICAgIGVycm9yLAorICAgICAgICAwLCAvKiBEZWZhdWx0IGxhbmd1YWdlICovCisgICAgICAgIChMUFZPSUQpJm1zZ2J1ZiwKKyAgICAgICAgMCwKKyAgICAgICAgTlVMTCk7CisgICAgaWYgKGNoYXJzICE9IDApIHsKKyAgICAgICAgLyogSWYgdGhlcmUgaXMgYW4gXHJcbiBhcHBlbmRlZCwgemFwIGl0LiAgKi8KKyAgICAgICAgaWYgKGNoYXJzID49IDIKKyAgICAgICAgICAgICYmIG1zZ2J1ZltjaGFycyAtIDJdID09ICdccicgJiYgbXNnYnVmW2NoYXJzIC0gMV0gPT0gJ1xuJykgeworICAgICAgICAgICAgY2hhcnMgLT0gMjsKKyAgICAgICAgICAgIG1zZ2J1ZltjaGFyc10gPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNoYXJzID4gc2l6ZW9mIChidWYpIC0gMSkgeworICAgICAgICAgICAgY2hhcnMgPSBzaXplb2YgKGJ1ZikgLSAxOworICAgICAgICAgICAgbXNnYnVmW2NoYXJzXSA9IDA7CisgICAgICAgIH0KKworICAgICAgICB3Y3N0b21icyhidWYsIG1zZ2J1ZiwgY2hhcnMgKyAxKTsKKyAgICAgICAgTG9jYWxGcmVlKG1zZ2J1Zik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzcHJpbnRmKGJ1ZiwgInVua25vd24gd2luMzIgZXJyb3IgKCVsZCkiLCBlcnJvcik7CisgICAgfQorCisgICAgU2V0TGFzdEVycm9yKGxhc3RlcnIpOworICAgIHJldHVybiBidWY7Cit9CisKKyNlbmRpZiAvKiBVTkRFUl9DRSAqLworCisvKiBSZXNldCBnemlwIGZpbGUgc3RhdGUgKi8KK2xvY2FsIHZvaWQgZ3pfcmVzZXQoCisgICAgZ3pfc3RhdGVwIHN0YXRlKQoreworICAgIHN0YXRlLT54LmhhdmUgPSAwOyAgICAgICAgICAgICAgLyogbm8gb3V0cHV0IGRhdGEgYXZhaWxhYmxlICovCisgICAgaWYgKHN0YXRlLT5tb2RlID09IEdaX1JFQUQpIHsgICAvKiBmb3IgcmVhZGluZyAuLi4gKi8KKyAgICAgICAgc3RhdGUtPmVvZiA9IDA7ICAgICAgICAgICAgIC8qIG5vdCBhdCBlbmQgb2YgZmlsZSAqLworICAgICAgICBzdGF0ZS0+cGFzdCA9IDA7ICAgICAgICAgICAgLyogaGF2ZSBub3QgcmVhZCBwYXN0IGVuZCB5ZXQgKi8KKyAgICAgICAgc3RhdGUtPmhvdyA9IExPT0s7ICAgICAgICAgIC8qIGxvb2sgZm9yIGd6aXAgaGVhZGVyICovCisgICAgfQorICAgIHN0YXRlLT5zZWVrID0gMDsgICAgICAgICAgICAgICAgLyogbm8gc2VlayByZXF1ZXN0IHBlbmRpbmcgKi8KKyAgICBnel9lcnJvcihzdGF0ZSwgWl9PSywgTlVMTCk7ICAgIC8qIGNsZWFyIGVycm9yICovCisgICAgc3RhdGUtPngucG9zID0gMDsgICAgICAgICAgICAgICAvKiBubyB1bmNvbXByZXNzZWQgZGF0YSB5ZXQgKi8KKyAgICBzdGF0ZS0+c3RybS5hdmFpbF9pbiA9IDA7ICAgICAgIC8qIG5vIGlucHV0IGRhdGEgeWV0ICovCit9CisKKy8qIE9wZW4gYSBnemlwIGZpbGUgZWl0aGVyIGJ5IG5hbWUgb3IgZmlsZSBkZXNjcmlwdG9yLiAqLworbG9jYWwgZ3pGaWxlIGd6X29wZW4oCisgICAgY29uc3Qgdm9pZCAqcGF0aCwKKyAgICBpbnQgZmQsCisgICAgY29uc3QgY2hhciAqbW9kZSkKK3sKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisgICAgc2l6ZV90IGxlbjsKKyAgICBpbnQgb2ZsYWc7CisjaWZkZWYgT19DTE9FWEVDCisgICAgaW50IGNsb2V4ZWMgPSAwOworI2VuZGlmCisjaWZkZWYgT19FWENMCisgICAgaW50IGV4Y2x1c2l2ZSA9IDA7CisjZW5kaWYKKworICAgIC8qIGNoZWNrIGlucHV0ICovCisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBhbGxvY2F0ZSBnekZpbGUgc3RydWN0dXJlIHRvIHJldHVybiAqLworICAgIHN0YXRlID0gKGd6X3N0YXRlcCltYWxsb2Moc2l6ZW9mKGd6X3N0YXRlKSk7CisgICAgaWYgKHN0YXRlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHN0YXRlLT5zaXplID0gMDsgICAgICAgICAgICAvKiBubyBidWZmZXJzIGFsbG9jYXRlZCB5ZXQgKi8KKyAgICBzdGF0ZS0+d2FudCA9IEdaQlVGU0laRTsgICAgLyogcmVxdWVzdGVkIGJ1ZmZlciBzaXplICovCisgICAgc3RhdGUtPm1zZyA9IE5VTEw7ICAgICAgICAgIC8qIG5vIGVycm9yIG1lc3NhZ2UgeWV0ICovCisKKyAgICAvKiBpbnRlcnByZXQgbW9kZSAqLworICAgIHN0YXRlLT5tb2RlID0gR1pfTk9ORTsKKyAgICBzdGF0ZS0+bGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047CisgICAgc3RhdGUtPnN0cmF0ZWd5ID0gWl9ERUZBVUxUX1NUUkFURUdZOworICAgIHN0YXRlLT5kaXJlY3QgPSAwOworICAgIHdoaWxlICgqbW9kZSkgeworICAgICAgICBpZiAoKm1vZGUgPj0gJzAnICYmICptb2RlIDw9ICc5JykKKyAgICAgICAgICAgIHN0YXRlLT5sZXZlbCA9ICptb2RlIC0gJzAnOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzd2l0Y2ggKCptb2RlKSB7CisgICAgICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEdaX1JFQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisjaWZuZGVmIE5PX0daQ09NUFJFU1MKKyAgICAgICAgICAgIGNhc2UgJ3cnOgorICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gR1pfV1JJVEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEdaX0FQUEVORDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICAgICAgY2FzZSAnKyc6ICAgICAgIC8qIGNhbid0IHJlYWQgYW5kIHdyaXRlIGF0IHRoZSBzYW1lIHRpbWUgKi8KKyAgICAgICAgICAgICAgICBmcmVlKHN0YXRlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGNhc2UgJ2InOiAgICAgICAvKiBpZ25vcmUgLS0gd2lsbCByZXF1ZXN0IGJpbmFyeSBhbnl3YXkgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyNpZmRlZiBPX0NMT0VYRUMKKyAgICAgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgICAgIGNsb2V4ZWMgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisjaWZkZWYgT19FWENMCisgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICBleGNsdXNpdmUgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgICAgICBjYXNlICdmJzoKKyAgICAgICAgICAgICAgICBzdGF0ZS0+c3RyYXRlZ3kgPSBaX0ZJTFRFUkVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAgICAgICAgc3RhdGUtPnN0cmF0ZWd5ID0gWl9IVUZGTUFOX09OTFk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdSJzoKKyAgICAgICAgICAgICAgICBzdGF0ZS0+c3RyYXRlZ3kgPSBaX1JMRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ0YnOgorICAgICAgICAgICAgICAgIHN0YXRlLT5zdHJhdGVneSA9IFpfRklYRUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdUJzoKKyAgICAgICAgICAgICAgICBzdGF0ZS0+ZGlyZWN0ID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAvKiBjb3VsZCBjb25zaWRlciBhcyBhbiBlcnJvciwgYnV0IGp1c3QgaWdub3JlICovCisgICAgICAgICAgICAgICAgOworICAgICAgICAgICAgfQorICAgICAgICBtb2RlKys7CisgICAgfQorCisgICAgLyogbXVzdCBwcm92aWRlIGFuICJyIiwgInciLCBvciAiYSIgKi8KKyAgICBpZiAoc3RhdGUtPm1vZGUgPT0gR1pfTk9ORSkgeworICAgICAgICBmcmVlKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogY2FuJ3QgZm9yY2UgdHJhbnNwYXJlbnQgcmVhZCAqLworICAgIGlmIChzdGF0ZS0+bW9kZSA9PSBHWl9SRUFEKSB7CisgICAgICAgIGlmIChzdGF0ZS0+ZGlyZWN0KSB7CisgICAgICAgICAgICBmcmVlKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN0YXRlLT5kaXJlY3QgPSAxOyAgICAgIC8qIGZvciBlbXB0eSBmaWxlICovCisgICAgfQorCisgICAgLyogc2F2ZSB0aGUgcGF0aCBuYW1lIGZvciBlcnJvciBtZXNzYWdlcyAqLworI2lmZGVmIF9XSU4zMgorICAgIGlmIChmZCA9PSAtMikgeworICAgICAgICBsZW4gPSB3Y3N0b21icyhOVUxMLCBwYXRoLCAwKTsKKyAgICAgICAgaWYgKGxlbiA9PSAoc2l6ZV90KS0xKQorICAgICAgICAgICAgbGVuID0gMDsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGxlbiA9IHN0cmxlbigoY29uc3QgY2hhciAqKXBhdGgpOworICAgIHN0YXRlLT5wYXRoID0gKGNoYXIgKiltYWxsb2MobGVuICsgMSk7CisgICAgaWYgKHN0YXRlLT5wYXRoID09IE5VTEwpIHsKKyAgICAgICAgZnJlZShzdGF0ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNpZmRlZiBfV0lOMzIKKyAgICBpZiAoZmQgPT0gLTIpCisgICAgICAgIGlmIChsZW4pCisgICAgICAgICAgICB3Y3N0b21icyhzdGF0ZS0+cGF0aCwgcGF0aCwgbGVuICsgMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICooc3RhdGUtPnBhdGgpID0gMDsKKyAgICBlbHNlCisjZW5kaWYKKyNpZiAhZGVmaW5lZChOT19zbnByaW50ZikgJiYgIWRlZmluZWQoTk9fdnNucHJpbnRmKQorICAgICAgICBzbnByaW50ZihzdGF0ZS0+cGF0aCwgbGVuICsgMSwgIiVzIiwgKGNvbnN0IGNoYXIgKilwYXRoKTsKKyNlbHNlCisgICAgICAgIHN0cmNweShzdGF0ZS0+cGF0aCwgcGF0aCk7CisjZW5kaWYKKworICAgIC8qIGNvbXB1dGUgdGhlIGZsYWdzIGZvciBvcGVuKCkgKi8KKyAgICBvZmxhZyA9CisjaWZkZWYgT19MQVJHRUZJTEUKKyAgICAgICAgT19MQVJHRUZJTEUgfAorI2VuZGlmCisjaWZkZWYgT19CSU5BUlkKKyAgICAgICAgT19CSU5BUlkgfAorI2VuZGlmCisjaWZkZWYgT19DTE9FWEVDCisgICAgICAgIChjbG9leGVjID8gT19DTE9FWEVDIDogMCkgfAorI2VuZGlmCisgICAgICAgIChzdGF0ZS0+bW9kZSA9PSBHWl9SRUFEID8KKyAgICAgICAgIE9fUkRPTkxZIDoKKyAgICAgICAgIChPX1dST05MWSB8IE9fQ1JFQVQgfAorI2lmZGVmIE9fRVhDTAorICAgICAgICAgIChleGNsdXNpdmUgPyBPX0VYQ0wgOiAwKSB8CisjZW5kaWYKKyAgICAgICAgICAoc3RhdGUtPm1vZGUgPT0gR1pfV1JJVEUgPworICAgICAgICAgICBPX1RSVU5DIDoKKyAgICAgICAgICAgT19BUFBFTkQpKSk7CisKKyAgICAvKiBvcGVuIHRoZSBmaWxlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGZsYWdzIChvciBqdXN0IHVzZSBmZCkgKi8KKyAgICBzdGF0ZS0+ZmQgPSBmZCA+IC0xID8gZmQgOiAoCisjaWZkZWYgX1dJTjMyCisgICAgICAgIGZkID09IC0yID8gX3dvcGVuKHBhdGgsIG9mbGFnLCAwNjY2KSA6CisjZW5kaWYKKyAgICAgICAgb3BlbigoY29uc3QgY2hhciAqKXBhdGgsIG9mbGFnLCAwNjY2KSk7CisgICAgaWYgKHN0YXRlLT5mZCA9PSAtMSkgeworICAgICAgICBmcmVlKHN0YXRlLT5wYXRoKTsKKyAgICAgICAgZnJlZShzdGF0ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoc3RhdGUtPm1vZGUgPT0gR1pfQVBQRU5EKQorICAgICAgICBzdGF0ZS0+bW9kZSA9IEdaX1dSSVRFOyAgICAgICAgIC8qIHNpbXBsaWZ5IGxhdGVyIGNoZWNrcyAqLworCisgICAgLyogc2F2ZSB0aGUgY3VycmVudCBwb3NpdGlvbiBmb3IgcmV3aW5kaW5nIChvbmx5IGlmIHJlYWRpbmcpICovCisgICAgaWYgKHN0YXRlLT5tb2RlID09IEdaX1JFQUQpIHsKKyAgICAgICAgc3RhdGUtPnN0YXJ0ID0gTFNFRUsoc3RhdGUtPmZkLCAwLCBTRUVLX0NVUik7CisgICAgICAgIGlmIChzdGF0ZS0+c3RhcnQgPT0gLTEpIHN0YXRlLT5zdGFydCA9IDA7CisgICAgfQorCisgICAgLyogaW5pdGlhbGl6ZSBzdHJlYW0gKi8KKyAgICBnel9yZXNldChzdGF0ZSk7CisKKyAgICAvKiByZXR1cm4gc3RyZWFtICovCisgICAgcmV0dXJuIChnekZpbGUpc3RhdGU7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK2d6RmlsZSBaRVhQT1JUIGd6b3BlbigKKyAgICBjb25zdCBjaGFyICpwYXRoLAorICAgIGNvbnN0IGNoYXIgKm1vZGUpCit7CisgICAgcmV0dXJuIGd6X29wZW4ocGF0aCwgLTEsIG1vZGUpOworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCitnekZpbGUgWkVYUE9SVCBnem9wZW42NCgKKyAgICBjb25zdCBjaGFyICpwYXRoLAorICAgIGNvbnN0IGNoYXIgKm1vZGUpCit7CisgICAgcmV0dXJuIGd6X29wZW4ocGF0aCwgLTEsIG1vZGUpOworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCitnekZpbGUgWkVYUE9SVCBnemRvcGVuKAorICAgIGludCBmZCwKKyAgICBjb25zdCBjaGFyICptb2RlKQoreworICAgIGNoYXIgKnBhdGg7ICAgICAgICAgLyogaWRlbnRpZmllciBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KKyAgICBnekZpbGUgZ3o7CisKKyAgICBpZiAoZmQgPT0gLTEgfHwgKHBhdGggPSAoY2hhciAqKW1hbGxvYyg3ICsgMyAqIHNpemVvZihpbnQpKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjaWYgIWRlZmluZWQoTk9fc25wcmludGYpICYmICFkZWZpbmVkKE5PX3ZzbnByaW50ZikKKyAgICBzbnByaW50ZihwYXRoLCA3ICsgMyAqIHNpemVvZihpbnQpLCAiPGZkOiVkPiIsIGZkKTsgLyogZm9yIGRlYnVnZ2luZyAqLworI2Vsc2UKKyAgICBzcHJpbnRmKHBhdGgsICI8ZmQ6JWQ+IiwgZmQpOyAgIC8qIGZvciBkZWJ1Z2dpbmcgKi8KKyNlbmRpZgorICAgIGd6ID0gZ3pfb3BlbihwYXRoLCBmZCwgbW9kZSk7CisgICAgZnJlZShwYXRoKTsKKyAgICByZXR1cm4gZ3o7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KKyNpZmRlZiBfV0lOMzIKK2d6RmlsZSBaRVhQT1JUIGd6b3Blbl93KAorICAgIGNvbnN0IHdjaGFyX3QgKnBhdGgsCisgICAgY29uc3QgY2hhciAqbW9kZSkKK3sKKyAgICByZXR1cm4gZ3pfb3BlbihwYXRoLCAtMiwgbW9kZSk7Cit9CisjZW5kaWYKKworLyogLS0gc2VlIHpsaWIuaCAtLSAqLworaW50IFpFWFBPUlQgZ3pidWZmZXIoCisgICAgZ3pGaWxlIGZpbGUsCisgICAgdW5zaWduZWQgc2l6ZSkKK3sKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlIGFuZCBjaGVjayBpbnRlZ3JpdHkgKi8KKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgc3RhdGUgPSAoZ3pfc3RhdGVwKWZpbGU7CisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQgJiYgc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIG1ha2Ugc3VyZSB3ZSBoYXZlbid0IGFscmVhZHkgYWxsb2NhdGVkIG1lbW9yeSAqLworICAgIGlmIChzdGF0ZS0+c2l6ZSAhPSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBjaGVjayBhbmQgc2V0IHJlcXVlc3RlZCBzaXplICovCisgICAgaWYgKHNpemUgPCAyKQorICAgICAgICBzaXplID0gMjsgICAgICAgICAgICAgICAvKiBuZWVkIHR3byBieXRlcyB0byBjaGVjayBtYWdpYyBoZWFkZXIgKi8KKyAgICBzdGF0ZS0+d2FudCA9IHNpemU7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK2ludCBaRVhQT1JUIGd6cmV3aW5kKAorICAgIGd6RmlsZSBmaWxlKQoreworICAgIGd6X3N0YXRlcCBzdGF0ZTsKKworICAgIC8qIGdldCBpbnRlcm5hbCBzdHJ1Y3R1cmUgKi8KKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgc3RhdGUgPSAoZ3pfc3RhdGVwKWZpbGU7CisKKyAgICAvKiBjaGVjayB0aGF0IHdlJ3JlIHJlYWRpbmcgYW5kIHRoYXQgdGhlcmUncyBubyBlcnJvciAqLworICAgIGlmIChzdGF0ZS0+bW9kZSAhPSBHWl9SRUFEIHx8CisgICAgICAgICAgICAoc3RhdGUtPmVyciAhPSBaX09LICYmIHN0YXRlLT5lcnIgIT0gWl9CVUZfRVJST1IpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBiYWNrIHVwIGFuZCBzdGFydCBvdmVyICovCisgICAgaWYgKExTRUVLKHN0YXRlLT5mZCwgc3RhdGUtPnN0YXJ0LCBTRUVLX1NFVCkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBnel9yZXNldChzdGF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK3pfb2ZmNjRfdCBaRVhQT1JUIGd6c2VlazY0KAorICAgIGd6RmlsZSBmaWxlLAorICAgIHpfb2ZmNjRfdCBvZmZzZXQsCisgICAgaW50IHdoZW5jZSkKK3sKKyAgICB1bnNpZ25lZCBuOworICAgIHpfb2ZmNjRfdCByZXQ7CisgICAgZ3pfc3RhdGVwIHN0YXRlOworCisgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSBhbmQgY2hlY2sgaW50ZWdyaXR5ICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworICAgIGlmIChzdGF0ZS0+bW9kZSAhPSBHWl9SRUFEICYmIHN0YXRlLT5tb2RlICE9IEdaX1dSSVRFKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBjaGVjayB0aGF0IHRoZXJlJ3Mgbm8gZXJyb3IgKi8KKyAgICBpZiAoc3RhdGUtPmVyciAhPSBaX09LICYmIHN0YXRlLT5lcnIgIT0gWl9CVUZfRVJST1IpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIGNhbiBvbmx5IHNlZWsgZnJvbSBzdGFydCBvciByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uICovCisgICAgaWYgKHdoZW5jZSAhPSBTRUVLX1NFVCAmJiB3aGVuY2UgIT0gU0VFS19DVVIpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIG5vcm1hbGl6ZSBvZmZzZXQgdG8gYSBTRUVLX0NVUiBzcGVjaWZpY2F0aW9uICovCisgICAgaWYgKHdoZW5jZSA9PSBTRUVLX1NFVCkKKyAgICAgICAgb2Zmc2V0IC09IHN0YXRlLT54LnBvczsKKyAgICBlbHNlIGlmIChzdGF0ZS0+c2VlaykKKyAgICAgICAgb2Zmc2V0ICs9IHN0YXRlLT5za2lwOworICAgIHN0YXRlLT5zZWVrID0gMDsKKworICAgIC8qIGlmIHdpdGhpbiByYXcgYXJlYSB3aGlsZSByZWFkaW5nLCBqdXN0IGdvIHRoZXJlICovCisgICAgaWYgKHN0YXRlLT5tb2RlID09IEdaX1JFQUQgJiYgc3RhdGUtPmhvdyA9PSBDT1BZICYmCisgICAgICAgICAgICBzdGF0ZS0+eC5wb3MgKyBvZmZzZXQgPj0gMCkgeworICAgICAgICByZXQgPSBMU0VFSyhzdGF0ZS0+ZmQsIG9mZnNldCAtIHN0YXRlLT54LmhhdmUsIFNFRUtfQ1VSKTsKKyAgICAgICAgaWYgKHJldCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc3RhdGUtPnguaGF2ZSA9IDA7CisgICAgICAgIHN0YXRlLT5lb2YgPSAwOworICAgICAgICBzdGF0ZS0+cGFzdCA9IDA7CisgICAgICAgIHN0YXRlLT5zZWVrID0gMDsKKyAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfT0ssIE5VTEwpOworICAgICAgICBzdGF0ZS0+c3RybS5hdmFpbF9pbiA9IDA7CisgICAgICAgIHN0YXRlLT54LnBvcyArPSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBzdGF0ZS0+eC5wb3M7CisgICAgfQorCisgICAgLyogY2FsY3VsYXRlIHNraXAgYW1vdW50LCByZXdpbmRpbmcgaWYgbmVlZGVkIGZvciBiYWNrIHNlZWsgd2hlbiByZWFkaW5nICovCisgICAgaWYgKG9mZnNldCA8IDApIHsKKyAgICAgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQpICAgICAgICAgLyogd3JpdGluZyAtLSBjYW4ndCBnbyBiYWNrd2FyZHMgKi8KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgb2Zmc2V0ICs9IHN0YXRlLT54LnBvczsKKyAgICAgICAgaWYgKG9mZnNldCA8IDApICAgICAgICAgICAgICAgICAgICAgLyogYmVmb3JlIHN0YXJ0IG9mIGZpbGUhICovCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChnenJld2luZChmaWxlKSA9PSAtMSkgICAgICAgICAgIC8qIHJld2luZCwgdGhlbiBza2lwIHRvIG9mZnNldCAqLworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIGlmIHJlYWRpbmcsIHNraXAgd2hhdCdzIGluIG91dHB1dCBidWZmZXIgKG9uZSBsZXNzIGd6Z2V0YygpIGNoZWNrKSAqLworICAgIGlmIChzdGF0ZS0+bW9kZSA9PSBHWl9SRUFEKSB7CisgICAgICAgIG4gPSBHVF9PRkYoc3RhdGUtPnguaGF2ZSkgfHwgKHpfb2ZmNjRfdClzdGF0ZS0+eC5oYXZlID4gb2Zmc2V0ID8KKyAgICAgICAgICAgICh1bnNpZ25lZClvZmZzZXQgOiBzdGF0ZS0+eC5oYXZlOworICAgICAgICBzdGF0ZS0+eC5oYXZlIC09IG47CisgICAgICAgIHN0YXRlLT54Lm5leHQgKz0gbjsKKyAgICAgICAgc3RhdGUtPngucG9zICs9IG47CisgICAgICAgIG9mZnNldCAtPSBuOworICAgIH0KKworICAgIC8qIHJlcXVlc3Qgc2tpcCAoaWYgbm90IHplcm8pICovCisgICAgaWYgKG9mZnNldCkgeworICAgICAgICBzdGF0ZS0+c2VlayA9IDE7CisgICAgICAgIHN0YXRlLT5za2lwID0gb2Zmc2V0OworICAgIH0KKyAgICByZXR1cm4gc3RhdGUtPngucG9zICsgb2Zmc2V0OworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCit6X29mZl90IFpFWFBPUlQgZ3pzZWVrKAorICAgIGd6RmlsZSBmaWxlLAorICAgIHpfb2ZmX3Qgb2Zmc2V0LAorICAgIGludCB3aGVuY2UpCit7CisgICAgel9vZmY2NF90IHJldDsKKworICAgIHJldCA9IGd6c2VlazY0KGZpbGUsICh6X29mZjY0X3Qpb2Zmc2V0LCB3aGVuY2UpOworICAgIHJldHVybiByZXQgPT0gKHpfb2ZmX3QpcmV0ID8gKHpfb2ZmX3QpcmV0IDogLTE7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK3pfb2ZmNjRfdCBaRVhQT1JUIGd6dGVsbDY0KAorICAgIGd6RmlsZSBmaWxlKQoreworICAgIGd6X3N0YXRlcCBzdGF0ZTsKKworICAgIC8qIGdldCBpbnRlcm5hbCBzdHJ1Y3R1cmUgYW5kIGNoZWNrIGludGVncml0eSAqLworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBzdGF0ZSA9IChnel9zdGF0ZXApZmlsZTsKKyAgICBpZiAoc3RhdGUtPm1vZGUgIT0gR1pfUkVBRCAmJiBzdGF0ZS0+bW9kZSAhPSBHWl9XUklURSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogcmV0dXJuIHBvc2l0aW9uICovCisgICAgcmV0dXJuIHN0YXRlLT54LnBvcyArIChzdGF0ZS0+c2VlayA/IHN0YXRlLT5za2lwIDogMCk7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK3pfb2ZmX3QgWkVYUE9SVCBnenRlbGwoCisgICAgZ3pGaWxlIGZpbGUpCit7CisgICAgel9vZmY2NF90IHJldDsKKworICAgIHJldCA9IGd6dGVsbDY0KGZpbGUpOworICAgIHJldHVybiByZXQgPT0gKHpfb2ZmX3QpcmV0ID8gKHpfb2ZmX3QpcmV0IDogLTE7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK3pfb2ZmNjRfdCBaRVhQT1JUIGd6b2Zmc2V0NjQoCisgICAgZ3pGaWxlIGZpbGUpCit7CisgICAgel9vZmY2NF90IG9mZnNldDsKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlIGFuZCBjaGVjayBpbnRlZ3JpdHkgKi8KKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgc3RhdGUgPSAoZ3pfc3RhdGVwKWZpbGU7CisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQgJiYgc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIGNvbXB1dGUgYW5kIHJldHVybiBlZmZlY3RpdmUgb2Zmc2V0IGluIGZpbGUgKi8KKyAgICBvZmZzZXQgPSBMU0VFSyhzdGF0ZS0+ZmQsIDAsIFNFRUtfQ1VSKTsKKyAgICBpZiAob2Zmc2V0ID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHN0YXRlLT5tb2RlID09IEdaX1JFQUQpICAgICAgICAgICAgIC8qIHJlYWRpbmcgKi8KKyAgICAgICAgb2Zmc2V0IC09IHN0YXRlLT5zdHJtLmF2YWlsX2luOyAgICAgLyogZG9uJ3QgY291bnQgYnVmZmVyZWQgaW5wdXQgKi8KKyAgICByZXR1cm4gb2Zmc2V0OworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCit6X29mZl90IFpFWFBPUlQgZ3pvZmZzZXQoCisgICAgZ3pGaWxlIGZpbGUpCit7CisgICAgel9vZmY2NF90IHJldDsKKworICAgIHJldCA9IGd6b2Zmc2V0NjQoZmlsZSk7CisgICAgcmV0dXJuIHJldCA9PSAoel9vZmZfdClyZXQgPyAoel9vZmZfdClyZXQgOiAtMTsKK30KKworLyogLS0gc2VlIHpsaWIuaCAtLSAqLworaW50IFpFWFBPUlQgZ3plb2YoCisgICAgZ3pGaWxlIGZpbGUpCit7CisgICAgZ3pfc3RhdGVwIHN0YXRlOworCisgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSBhbmQgY2hlY2sgaW50ZWdyaXR5ICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3RhdGUgPSAoZ3pfc3RhdGVwKWZpbGU7CisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQgJiYgc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogcmV0dXJuIGVuZC1vZi1maWxlIHN0YXRlICovCisgICAgcmV0dXJuIHN0YXRlLT5tb2RlID09IEdaX1JFQUQgPyBzdGF0ZS0+cGFzdCA6IDA7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK2NvbnN0IGNoYXIgKiBaRVhQT1JUIGd6ZXJyb3IoCisgICAgZ3pGaWxlIGZpbGUsCisgICAgaW50ICplcnJudW0pCit7CisgICAgZ3pfc3RhdGVwIHN0YXRlOworCisgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSBhbmQgY2hlY2sgaW50ZWdyaXR5ICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RhdGUgPSAoZ3pfc3RhdGVwKWZpbGU7CisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQgJiYgc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogcmV0dXJuIGVycm9yIGluZm9ybWF0aW9uICovCisgICAgaWYgKGVycm51bSAhPSBOVUxMKQorICAgICAgICAqZXJybnVtID0gc3RhdGUtPmVycjsKKyAgICByZXR1cm4gc3RhdGUtPmVyciA9PSBaX01FTV9FUlJPUiA/ICJvdXQgb2YgbWVtb3J5IiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUtPm1zZyA9PSBOVUxMID8gIiIgOiBzdGF0ZS0+bXNnKTsKK30KKworLyogLS0gc2VlIHpsaWIuaCAtLSAqLwordm9pZCBaRVhQT1JUIGd6Y2xlYXJlcnIoCisgICAgZ3pGaWxlIGZpbGUpCit7CisgICAgZ3pfc3RhdGVwIHN0YXRlOworCisgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSBhbmQgY2hlY2sgaW50ZWdyaXR5ICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworICAgIGlmIChzdGF0ZS0+bW9kZSAhPSBHWl9SRUFEICYmIHN0YXRlLT5tb2RlICE9IEdaX1dSSVRFKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBjbGVhciBlcnJvciBhbmQgZW5kLW9mLWZpbGUgKi8KKyAgICBpZiAoc3RhdGUtPm1vZGUgPT0gR1pfUkVBRCkgeworICAgICAgICBzdGF0ZS0+ZW9mID0gMDsKKyAgICAgICAgc3RhdGUtPnBhc3QgPSAwOworICAgIH0KKyAgICBnel9lcnJvcihzdGF0ZSwgWl9PSywgTlVMTCk7Cit9CisKKy8qIENyZWF0ZSBhbiBlcnJvciBtZXNzYWdlIGluIGFsbG9jYXRlZCBtZW1vcnkgYW5kIHNldCBzdGF0ZS0+ZXJyIGFuZAorICAgc3RhdGUtPm1zZyBhY2NvcmRpbmdseS4gIEZyZWUgYW55IHByZXZpb3VzIGVycm9yIG1lc3NhZ2UgYWxyZWFkeSB0aGVyZS4gIERvCisgICBub3QgdHJ5IHRvIGZyZWUgb3IgYWxsb2NhdGUgc3BhY2UgaWYgdGhlIGVycm9yIGlzIFpfTUVNX0VSUk9SIChvdXQgb2YKKyAgIG1lbW9yeSkuICBTaW1wbHkgc2F2ZSB0aGUgZXJyb3IgbWVzc2FnZSBhcyBhIHN0YXRpYyBzdHJpbmcuICBJZiB0aGVyZSBpcyBhbgorICAgYWxsb2NhdGlvbiBmYWlsdXJlIGNvbnN0cnVjdGluZyB0aGUgZXJyb3IgbWVzc2FnZSwgdGhlbiBjb252ZXJ0IHRoZSBlcnJvciB0bworICAgb3V0IG9mIG1lbW9yeS4gKi8KK3ZvaWQgWkxJQl9JTlRFUk5BTCBnel9lcnJvcigKKyAgICBnel9zdGF0ZXAgc3RhdGUsCisgICAgaW50IGVyciwKKyAgICBjb25zdCBjaGFyICptc2cpCit7CisgICAgLyogZnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZXNzYWdlIGFuZCBjbGVhciAqLworICAgIGlmIChzdGF0ZS0+bXNnICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHN0YXRlLT5lcnIgIT0gWl9NRU1fRVJST1IpCisgICAgICAgICAgICBmcmVlKHN0YXRlLT5tc2cpOworICAgICAgICBzdGF0ZS0+bXNnID0gTlVMTDsKKyAgICB9CisKKyAgICAvKiBpZiBmYXRhbCwgc2V0IHN0YXRlLT54LmhhdmUgdG8gMCBzbyB0aGF0IHRoZSBnemdldGMoKSBtYWNybyBmYWlscyAqLworICAgIGlmIChlcnIgIT0gWl9PSyAmJiBlcnIgIT0gWl9CVUZfRVJST1IpCisgICAgICAgIHN0YXRlLT54LmhhdmUgPSAwOworCisgICAgLyogc2V0IGVycm9yIGNvZGUsIGFuZCBpZiBubyBtZXNzYWdlLCB0aGVuIGRvbmUgKi8KKyAgICBzdGF0ZS0+ZXJyID0gZXJyOworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogZm9yIGFuIG91dCBvZiBtZW1vcnkgZXJyb3IsIHJldHVybiBsaXRlcmFsIHN0cmluZyB3aGVuIHJlcXVlc3RlZCAqLworICAgIGlmIChlcnIgPT0gWl9NRU1fRVJST1IpCisgICAgICAgIHJldHVybjsKKworICAgIC8qIGNvbnN0cnVjdCBlcnJvciBtZXNzYWdlIHdpdGggcGF0aCAqLworICAgIGlmICgoc3RhdGUtPm1zZyA9IChjaGFyICopbWFsbG9jKHN0cmxlbihzdGF0ZS0+cGF0aCkgKyBzdHJsZW4obXNnKSArIDMpKSA9PQorICAgICAgICAgICAgTlVMTCkgeworICAgICAgICBzdGF0ZS0+ZXJyID0gWl9NRU1fRVJST1I7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgIWRlZmluZWQoTk9fc25wcmludGYpICYmICFkZWZpbmVkKE5PX3ZzbnByaW50ZikKKyAgICBzbnByaW50ZihzdGF0ZS0+bXNnLCBzdHJsZW4oc3RhdGUtPnBhdGgpICsgc3RybGVuKG1zZykgKyAzLAorICAgICAgICAgICAgICIlcyVzJXMiLCBzdGF0ZS0+cGF0aCwgIjogIiwgbXNnKTsKKyNlbHNlCisgICAgc3RyY3B5KHN0YXRlLT5tc2csIHN0YXRlLT5wYXRoKTsKKyAgICBzdHJjYXQoc3RhdGUtPm1zZywgIjogIik7CisgICAgc3RyY2F0KHN0YXRlLT5tc2csIG1zZyk7CisjZW5kaWYKKyAgICByZXR1cm47Cit9CisKKyNpZm5kZWYgSU5UX01BWAorLyogcG9ydGFibHkgcmV0dXJuIG1heGltdW0gdmFsdWUgZm9yIGFuIGludCAod2hlbiBsaW1pdHMuaCBwcmVzdW1lZCBub3QKKyAgIGF2YWlsYWJsZSkgLS0gd2UgbmVlZCB0byBkbyB0aGlzIHRvIGNvdmVyIGNhc2VzIHdoZXJlIDIncyBjb21wbGVtZW50IG5vdAorICAgdXNlZCwgc2luY2UgQyBzdGFuZGFyZCBwZXJtaXRzIDEncyBjb21wbGVtZW50IGFuZCBzaWduLWJpdCByZXByZXNlbnRhdGlvbnMsCisgICBvdGhlcndpc2Ugd2UgY291bGQganVzdCB1c2UgKCh1bnNpZ25lZCktMSkgPj4gMSAqLwordW5zaWduZWQgWkxJQl9JTlRFUk5BTCBnel9pbnRtYXgoKQoreworICAgIHVuc2lnbmVkIHAsIHE7CisKKyAgICBwID0gMTsKKyAgICBkbyB7CisgICAgICAgIHEgPSBwOworICAgICAgICBwIDw8PSAxOworICAgICAgICBwKys7CisgICAgfSB3aGlsZSAocCA+IHEpOworICAgIHJldHVybiBxID4+IDE7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZ3pyZWFkLmMgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2d6cmVhZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNjJhMzIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2d6cmVhZC5jCkBAIC0wLDAgKzEsNTk0IEBACisvKiBnenJlYWQuYyAtLSB6bGliIGZ1bmN0aW9ucyBmb3IgcmVhZGluZyBnemlwIGZpbGVzCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKyNpbmNsdWRlICJnemd1dHMuaCIKKworLyogTG9jYWwgZnVuY3Rpb25zICovCitsb2NhbCBpbnQgZ3pfbG9hZCBPRigoZ3pfc3RhdGVwLCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkLCB1bnNpZ25lZCAqKSk7Citsb2NhbCBpbnQgZ3pfYXZhaWwgT0YoKGd6X3N0YXRlcCkpOworbG9jYWwgaW50IGd6X2xvb2sgT0YoKGd6X3N0YXRlcCkpOworbG9jYWwgaW50IGd6X2RlY29tcCBPRigoZ3pfc3RhdGVwKSk7Citsb2NhbCBpbnQgZ3pfZmV0Y2ggT0YoKGd6X3N0YXRlcCkpOworbG9jYWwgaW50IGd6X3NraXAgT0YoKGd6X3N0YXRlcCwgel9vZmY2NF90KSk7CisKKy8qIFVzZSByZWFkKCkgdG8gbG9hZCBhIGJ1ZmZlciAtLSByZXR1cm4gLTEgb24gZXJyb3IsIG90aGVyd2lzZSAwLiAgUmVhZCBmcm9tCisgICBzdGF0ZS0+ZmQsIGFuZCB1cGRhdGUgc3RhdGUtPmVvZiwgc3RhdGUtPmVyciwgYW5kIHN0YXRlLT5tc2cgYXMgYXBwcm9wcmlhdGUuCisgICBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGxvb3Agb24gcmVhZCgpLCBzaW5jZSByZWFkKCkgaXMgbm90IGd1YXJhbnRlZWQgdG8KKyAgIHJlYWQgdGhlIG51bWJlciBvZiBieXRlcyByZXF1ZXN0ZWQsIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBkZXNjcmlwdG9yLiAqLworbG9jYWwgaW50IGd6X2xvYWQoCisgICAgZ3pfc3RhdGVwIHN0YXRlLAorICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKKyAgICB1bnNpZ25lZCBsZW4sCisgICAgdW5zaWduZWQgKmhhdmUpCit7CisgICAgaW50IHJldDsKKworICAgICpoYXZlID0gMDsKKyAgICBkbyB7CisgICAgICAgIHJldCA9IHJlYWQoc3RhdGUtPmZkLCBidWYgKyAqaGF2ZSwgbGVuIC0gKmhhdmUpOworICAgICAgICBpZiAocmV0IDw9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgKmhhdmUgKz0gcmV0OworICAgIH0gd2hpbGUgKCpoYXZlIDwgbGVuKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9FUlJOTywgenN0cmVycm9yKCkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChyZXQgPT0gMCkKKyAgICAgICAgc3RhdGUtPmVvZiA9IDE7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIExvYWQgdXAgaW5wdXQgYnVmZmVyIGFuZCBzZXQgZW9mIGZsYWcgaWYgbGFzdCBkYXRhIGxvYWRlZCAtLSByZXR1cm4gLTEgb24KKyAgIGVycm9yLCAwIG90aGVyd2lzZS4gIE5vdGUgdGhhdCB0aGUgZW9mIGZsYWcgaXMgc2V0IHdoZW4gdGhlIGVuZCBvZiB0aGUgaW5wdXQKKyAgIGZpbGUgaXMgcmVhY2hlZCwgZXZlbiB0aG91Z2ggdGhlcmUgbWF5IGJlIHVudXNlZCBkYXRhIGluIHRoZSBidWZmZXIuICBPbmNlCisgICB0aGF0IGRhdGEgaGFzIGJlZW4gdXNlZCwgbm8gbW9yZSBhdHRlbXB0cyB3aWxsIGJlIG1hZGUgdG8gcmVhZCB0aGUgZmlsZS4KKyAgIElmIHN0cm0tPmF2YWlsX2luICE9IDAsIHRoZW4gdGhlIGN1cnJlbnQgZGF0YSBpcyBtb3ZlZCB0byB0aGUgYmVnaW5uaW5nIG9mCisgICB0aGUgaW5wdXQgYnVmZmVyLCBhbmQgdGhlbiB0aGUgcmVtYWluZGVyIG9mIHRoZSBidWZmZXIgaXMgbG9hZGVkIHdpdGggdGhlCisgICBhdmFpbGFibGUgZGF0YSBmcm9tIHRoZSBpbnB1dCBmaWxlLiAqLworbG9jYWwgaW50IGd6X2F2YWlsKAorICAgIGd6X3N0YXRlcCBzdGF0ZSkKK3sKKyAgICB1bnNpZ25lZCBnb3Q7CisgICAgel9zdHJlYW1wIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKKworICAgIGlmIChzdGF0ZS0+ZXJyICE9IFpfT0sgJiYgc3RhdGUtPmVyciAhPSBaX0JVRl9FUlJPUikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChzdGF0ZS0+ZW9mID09IDApIHsKKyAgICAgICAgaWYgKHN0cm0tPmF2YWlsX2luKSB7ICAgICAgIC8qIGNvcHkgd2hhdCdzIHRoZXJlIHRvIHRoZSBzdGFydCAqLworICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcCA9IHN0YXRlLT5pbjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0IGNoYXIgKnEgPSBzdHJtLT5uZXh0X2luOworICAgICAgICAgICAgdW5zaWduZWQgbiA9IHN0cm0tPmF2YWlsX2luOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICpwKysgPSAqcSsrOworICAgICAgICAgICAgfSB3aGlsZSAoLS1uKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZ3pfbG9hZChzdGF0ZSwgc3RhdGUtPmluICsgc3RybS0+YXZhaWxfaW4sCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5zaXplIC0gc3RybS0+YXZhaWxfaW4sICZnb3QpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzdHJtLT5hdmFpbF9pbiArPSBnb3Q7CisgICAgICAgIHN0cm0tPm5leHRfaW4gPSBzdGF0ZS0+aW47CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBMb29rIGZvciBnemlwIGhlYWRlciwgc2V0IHVwIGZvciBpbmZsYXRlIG9yIGNvcHkuICBzdGF0ZS0+eC5oYXZlIG11c3QgYmUgMC4KKyAgIElmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgaW4sIGFsbG9jYXRlIHJlcXVpcmVkIG1lbW9yeS4gIHN0YXRlLT5ob3cgd2lsbCBiZQorICAgbGVmdCB1bmNoYW5nZWQgaWYgdGhlcmUgaXMgbm8gbW9yZSBpbnB1dCBkYXRhIGF2YWlsYWJsZSwgd2lsbCBiZSBzZXQgdG8gQ09QWQorICAgaWYgdGhlcmUgaXMgbm8gZ3ppcCBoZWFkZXIgYW5kIGRpcmVjdCBjb3B5aW5nIHdpbGwgYmUgcGVyZm9ybWVkLCBvciBpdCB3aWxsCisgICBiZSBzZXQgdG8gR1pJUCBmb3IgZGVjb21wcmVzc2lvbi4gIElmIGRpcmVjdCBjb3B5aW5nLCB0aGVuIGxlZnRvdmVyIGlucHV0CisgICBkYXRhIGZyb20gdGhlIGlucHV0IGJ1ZmZlciB3aWxsIGJlIGNvcGllZCB0byB0aGUgb3V0cHV0IGJ1ZmZlci4gIEluIHRoYXQKKyAgIGNhc2UsIGFsbCBmdXJ0aGVyIGZpbGUgcmVhZHMgd2lsbCBiZSBkaXJlY3RseSB0byBlaXRoZXIgdGhlIG91dHB1dCBidWZmZXIgb3IKKyAgIGEgdXNlciBidWZmZXIuICBJZiBkZWNvbXByZXNzaW5nLCB0aGUgaW5mbGF0ZSBzdGF0ZSB3aWxsIGJlIGluaXRpYWxpemVkLgorICAgZ3pfbG9vaygpIHdpbGwgcmV0dXJuIDAgb24gc3VjY2VzcyBvciAtMSBvbiBmYWlsdXJlLiAqLworbG9jYWwgaW50IGd6X2xvb2soCisgICAgZ3pfc3RhdGVwIHN0YXRlKQoreworICAgIHpfc3RyZWFtcCBzdHJtID0gJihzdGF0ZS0+c3RybSk7CisKKyAgICAvKiBhbGxvY2F0ZSByZWFkIGJ1ZmZlcnMgYW5kIGluZmxhdGUgbWVtb3J5ICovCisgICAgaWYgKHN0YXRlLT5zaXplID09IDApIHsKKyAgICAgICAgLyogYWxsb2NhdGUgYnVmZmVycyAqLworICAgICAgICBzdGF0ZS0+aW4gPSAodW5zaWduZWQgY2hhciAqKW1hbGxvYyhzdGF0ZS0+d2FudCk7CisgICAgICAgIHN0YXRlLT5vdXQgPSAodW5zaWduZWQgY2hhciAqKW1hbGxvYyhzdGF0ZS0+d2FudCA8PCAxKTsKKyAgICAgICAgaWYgKHN0YXRlLT5pbiA9PSBOVUxMIHx8IHN0YXRlLT5vdXQgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKHN0YXRlLT5vdXQgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBmcmVlKHN0YXRlLT5vdXQpOworICAgICAgICAgICAgaWYgKHN0YXRlLT5pbiAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGZyZWUoc3RhdGUtPmluKTsKKyAgICAgICAgICAgIGd6X2Vycm9yKHN0YXRlLCBaX01FTV9FUlJPUiwgIm91dCBvZiBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBzdGF0ZS0+c2l6ZSA9IHN0YXRlLT53YW50OworCisgICAgICAgIC8qIGFsbG9jYXRlIGluZmxhdGUgbWVtb3J5ICovCisgICAgICAgIHN0YXRlLT5zdHJtLnphbGxvYyA9IFpfTlVMTDsKKyAgICAgICAgc3RhdGUtPnN0cm0uemZyZWUgPSBaX05VTEw7CisgICAgICAgIHN0YXRlLT5zdHJtLm9wYXF1ZSA9IFpfTlVMTDsKKyAgICAgICAgc3RhdGUtPnN0cm0uYXZhaWxfaW4gPSAwOworICAgICAgICBzdGF0ZS0+c3RybS5uZXh0X2luID0gWl9OVUxMOworICAgICAgICBpZiAoaW5mbGF0ZUluaXQyKCYoc3RhdGUtPnN0cm0pLCAxNSArIDE2KSAhPSBaX09LKSB7ICAgIC8qIGd1bnppcCAqLworICAgICAgICAgICAgZnJlZShzdGF0ZS0+b3V0KTsKKyAgICAgICAgICAgIGZyZWUoc3RhdGUtPmluKTsKKyAgICAgICAgICAgIHN0YXRlLT5zaXplID0gMDsKKyAgICAgICAgICAgIGd6X2Vycm9yKHN0YXRlLCBaX01FTV9FUlJPUiwgIm91dCBvZiBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGdldCBhdCBsZWFzdCB0aGUgbWFnaWMgYnl0ZXMgaW4gdGhlIGlucHV0IGJ1ZmZlciAqLworICAgIGlmIChzdHJtLT5hdmFpbF9pbiA8IDIpIHsKKyAgICAgICAgaWYgKGd6X2F2YWlsKHN0YXRlKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHN0cm0tPmF2YWlsX2luID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBsb29rIGZvciBnemlwIG1hZ2ljIGJ5dGVzIC0tIGlmIHRoZXJlLCBkbyBnemlwIGRlY29kaW5nIChub3RlOiB0aGVyZSBpcworICAgICAgIGEgbG9naWNhbCBkaWxlbW1hIGhlcmUgd2hlbiBjb25zaWRlcmluZyB0aGUgY2FzZSBvZiBhIHBhcnRpYWxseSB3cml0dGVuCisgICAgICAgZ3ppcCBmaWxlLCB0byB3aXQsIGlmIGEgc2luZ2xlIDMxIGJ5dGUgaXMgd3JpdHRlbiwgdGhlbiB3ZSBjYW5ub3QgdGVsbAorICAgICAgIHdoZXRoZXIgdGhpcyBpcyBhIHNpbmdsZS1ieXRlIGZpbGUsIG9yIGp1c3QgYSBwYXJ0aWFsbHkgd3JpdHRlbiBnemlwCisgICAgICAgZmlsZSAtLSBmb3IgaGVyZSB3ZSBhc3N1bWUgdGhhdCBpZiBhIGd6aXAgZmlsZSBpcyBiZWluZyB3cml0dGVuLCB0aGVuCisgICAgICAgdGhlIGhlYWRlciB3aWxsIGJlIHdyaXR0ZW4gaW4gYSBzaW5nbGUgb3BlcmF0aW9uLCBzbyB0aGF0IHJlYWRpbmcgYQorICAgICAgIHNpbmdsZSBieXRlIGlzIHN1ZmZpY2llbnQgaW5kaWNhdGlvbiB0aGF0IGl0IGlzIG5vdCBhIGd6aXAgZmlsZSkgKi8KKyAgICBpZiAoc3RybS0+YXZhaWxfaW4gPiAxICYmCisgICAgICAgICAgICBzdHJtLT5uZXh0X2luWzBdID09IDMxICYmIHN0cm0tPm5leHRfaW5bMV0gPT0gMTM5KSB7CisgICAgICAgIGluZmxhdGVSZXNldChzdHJtKTsKKyAgICAgICAgc3RhdGUtPmhvdyA9IEdaSVA7CisgICAgICAgIHN0YXRlLT5kaXJlY3QgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBubyBnemlwIGhlYWRlciAtLSBpZiB3ZSB3ZXJlIGRlY29kaW5nIGd6aXAgYmVmb3JlLCB0aGVuIHRoaXMgaXMgdHJhaWxpbmcKKyAgICAgICBnYXJiYWdlLiAgSWdub3JlIHRoZSB0cmFpbGluZyBnYXJiYWdlIGFuZCBmaW5pc2guICovCisgICAgaWYgKHN0YXRlLT5kaXJlY3QgPT0gMCkgeworICAgICAgICBzdHJtLT5hdmFpbF9pbiA9IDA7CisgICAgICAgIHN0YXRlLT5lb2YgPSAxOworICAgICAgICBzdGF0ZS0+eC5oYXZlID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogZG9pbmcgcmF3IGkvbywgY29weSBhbnkgbGVmdG92ZXIgaW5wdXQgdG8gb3V0cHV0IC0tIHRoaXMgYXNzdW1lcyB0aGF0CisgICAgICAgdGhlIG91dHB1dCBidWZmZXIgaXMgbGFyZ2VyIHRoYW4gdGhlIGlucHV0IGJ1ZmZlciwgd2hpY2ggYWxzbyBhc3N1cmVzCisgICAgICAgc3BhY2UgZm9yIGd6dW5nZXRjKCkgKi8KKyAgICBzdGF0ZS0+eC5uZXh0ID0gc3RhdGUtPm91dDsKKyAgICBpZiAoc3RybS0+YXZhaWxfaW4pIHsKKyAgICAgICAgbWVtY3B5KHN0YXRlLT54Lm5leHQsIHN0cm0tPm5leHRfaW4sIHN0cm0tPmF2YWlsX2luKTsKKyAgICAgICAgc3RhdGUtPnguaGF2ZSA9IHN0cm0tPmF2YWlsX2luOworICAgICAgICBzdHJtLT5hdmFpbF9pbiA9IDA7CisgICAgfQorICAgIHN0YXRlLT5ob3cgPSBDT1BZOworICAgIHN0YXRlLT5kaXJlY3QgPSAxOworICAgIHJldHVybiAwOworfQorCisvKiBEZWNvbXByZXNzIGZyb20gaW5wdXQgdG8gdGhlIHByb3ZpZGVkIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgaW4gdGhlIHN0YXRlLgorICAgT24gcmV0dXJuLCBzdGF0ZS0+eC5oYXZlIGFuZCBzdGF0ZS0+eC5uZXh0IHBvaW50IHRvIHRoZSBqdXN0IGRlY29tcHJlc3NlZAorICAgZGF0YS4gIElmIHRoZSBnemlwIHN0cmVhbSBjb21wbGV0ZXMsIHN0YXRlLT5ob3cgaXMgcmVzZXQgdG8gTE9PSyB0byBsb29rIGZvcgorICAgdGhlIG5leHQgZ3ppcCBzdHJlYW0gb3IgcmF3IGRhdGEsIG9uY2Ugc3RhdGUtPnguaGF2ZSBpcyBkZXBsZXRlZC4gIFJldHVybnMgMAorICAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4gKi8KK2xvY2FsIGludCBnel9kZWNvbXAoCisgICAgZ3pfc3RhdGVwIHN0YXRlKQoreworICAgIGludCByZXQgPSBaX09LOworICAgIHVuc2lnbmVkIGhhZDsKKyAgICB6X3N0cmVhbXAgc3RybSA9ICYoc3RhdGUtPnN0cm0pOworCisgICAgLyogZmlsbCBvdXRwdXQgYnVmZmVyIHVwIHRvIGVuZCBvZiBkZWZsYXRlIHN0cmVhbSAqLworICAgIGhhZCA9IHN0cm0tPmF2YWlsX291dDsKKyAgICBkbyB7CisgICAgICAgIC8qIGdldCBtb3JlIGlucHV0IGZvciBpbmZsYXRlKCkgKi8KKyAgICAgICAgaWYgKHN0cm0tPmF2YWlsX2luID09IDAgJiYgZ3pfYXZhaWwoc3RhdGUpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoc3RybS0+YXZhaWxfaW4gPT0gMCkgeworICAgICAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfQlVGX0VSUk9SLCAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKiBkZWNvbXByZXNzIGFuZCBoYW5kbGUgZXJyb3JzICovCisgICAgICAgIHJldCA9IGluZmxhdGUoc3RybSwgWl9OT19GTFVTSCk7CisgICAgICAgIGlmIChyZXQgPT0gWl9TVFJFQU1fRVJST1IgfHwgcmV0ID09IFpfTkVFRF9ESUNUKSB7CisgICAgICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9TVFJFQU1fRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3I6IGluZmxhdGUgc3RyZWFtIGNvcnJ1cHQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0ID09IFpfTUVNX0VSUk9SKSB7CisgICAgICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9NRU1fRVJST1IsICJvdXQgb2YgbWVtb3J5Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldCA9PSBaX0RBVEFfRVJST1IpIHsgICAgICAgICAgICAgIC8qIGRlZmxhdGUgc3RyZWFtIGludmFsaWQgKi8KKyAgICAgICAgICAgIGd6X2Vycm9yKHN0YXRlLCBaX0RBVEFfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPT0gTlVMTCA/ICJjb21wcmVzc2VkIGRhdGEgZXJyb3IiIDogc3RybS0+bXNnKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKHN0cm0tPmF2YWlsX291dCAmJiByZXQgIT0gWl9TVFJFQU1fRU5EKTsKKworICAgIC8qIHVwZGF0ZSBhdmFpbGFibGUgb3V0cHV0ICovCisgICAgc3RhdGUtPnguaGF2ZSA9IGhhZCAtIHN0cm0tPmF2YWlsX291dDsKKyAgICBzdGF0ZS0+eC5uZXh0ID0gc3RybS0+bmV4dF9vdXQgLSBzdGF0ZS0+eC5oYXZlOworCisgICAgLyogaWYgdGhlIGd6aXAgc3RyZWFtIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHksIGxvb2sgZm9yIGFub3RoZXIgKi8KKyAgICBpZiAocmV0ID09IFpfU1RSRUFNX0VORCkKKyAgICAgICAgc3RhdGUtPmhvdyA9IExPT0s7CisKKyAgICAvKiBnb29kIGRlY29tcHJlc3Npb24gKi8KKyAgICByZXR1cm4gMDsKK30KKworLyogRmV0Y2ggZGF0YSBhbmQgcHV0IGl0IGluIHRoZSBvdXRwdXQgYnVmZmVyLiAgQXNzdW1lcyBzdGF0ZS0+eC5oYXZlIGlzIDAuCisgICBEYXRhIGlzIGVpdGhlciBjb3BpZWQgZnJvbSB0aGUgaW5wdXQgZmlsZSBvciBkZWNvbXByZXNzZWQgZnJvbSB0aGUgaW5wdXQKKyAgIGZpbGUgZGVwZW5kaW5nIG9uIHN0YXRlLT5ob3cuICBJZiBzdGF0ZS0+aG93IGlzIExPT0ssIHRoZW4gYSBnemlwIGhlYWRlciBpcworICAgbG9va2VkIGZvciB0byBkZXRlcm1pbmUgd2hldGhlciB0byBjb3B5IG9yIGRlY29tcHJlc3MuICBSZXR1cm5zIC0xIG9uIGVycm9yLAorICAgb3RoZXJ3aXNlIDAuICBnel9mZXRjaCgpIHdpbGwgbGVhdmUgc3RhdGUtPmhvdyBhcyBDT1BZIG9yIEdaSVAgdW5sZXNzIHRoZQorICAgZW5kIG9mIHRoZSBpbnB1dCBmaWxlIGhhcyBiZWVuIHJlYWNoZWQgYW5kIGFsbCBkYXRhIGhhcyBiZWVuIHByb2Nlc3NlZC4gICovCitsb2NhbCBpbnQgZ3pfZmV0Y2goCisgICAgZ3pfc3RhdGVwIHN0YXRlKQoreworICAgIHpfc3RyZWFtcCBzdHJtID0gJihzdGF0ZS0+c3RybSk7CisKKyAgICBkbyB7CisgICAgICAgIHN3aXRjaChzdGF0ZS0+aG93KSB7CisgICAgICAgIGNhc2UgTE9PSzogICAgICAvKiAtPiBMT09LLCBDT1BZIChvbmx5IGlmIG5ldmVyIEdaSVApLCBvciBHWklQICovCisgICAgICAgICAgICBpZiAoZ3pfbG9vayhzdGF0ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKHN0YXRlLT5ob3cgPT0gTE9PSykKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENPUFk6ICAgICAgLyogLT4gQ09QWSAqLworICAgICAgICAgICAgaWYgKGd6X2xvYWQoc3RhdGUsIHN0YXRlLT5vdXQsIHN0YXRlLT5zaXplIDw8IDEsICYoc3RhdGUtPnguaGF2ZSkpCisgICAgICAgICAgICAgICAgICAgID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHN0YXRlLT54Lm5leHQgPSBzdGF0ZS0+b3V0OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgR1pJUDogICAgICAvKiAtPiBHWklQIG9yIExPT0sgKGlmIGVuZCBvZiBnemlwIHN0cmVhbSkgKi8KKyAgICAgICAgICAgIHN0cm0tPmF2YWlsX291dCA9IHN0YXRlLT5zaXplIDw8IDE7CisgICAgICAgICAgICBzdHJtLT5uZXh0X291dCA9IHN0YXRlLT5vdXQ7CisgICAgICAgICAgICBpZiAoZ3pfZGVjb21wKHN0YXRlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChzdGF0ZS0+eC5oYXZlID09IDAgJiYgKCFzdGF0ZS0+ZW9mIHx8IHN0cm0tPmF2YWlsX2luKSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFNraXAgbGVuIHVuY29tcHJlc3NlZCBieXRlcyBvZiBvdXRwdXQuICBSZXR1cm4gLTEgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gKi8KK2xvY2FsIGludCBnel9za2lwKAorICAgIGd6X3N0YXRlcCBzdGF0ZSwKKyAgICB6X29mZjY0X3QgbGVuKQoreworICAgIHVuc2lnbmVkIG47CisKKyAgICAvKiBza2lwIG92ZXIgbGVuIGJ5dGVzIG9yIHJlYWNoIGVuZC1vZi1maWxlLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QgKi8KKyAgICB3aGlsZSAobGVuKQorICAgICAgICAvKiBza2lwIG92ZXIgd2hhdGV2ZXIgaXMgaW4gb3V0cHV0IGJ1ZmZlciAqLworICAgICAgICBpZiAoc3RhdGUtPnguaGF2ZSkgeworICAgICAgICAgICAgbiA9IEdUX09GRihzdGF0ZS0+eC5oYXZlKSB8fCAoel9vZmY2NF90KXN0YXRlLT54LmhhdmUgPiBsZW4gPworICAgICAgICAgICAgICAgICh1bnNpZ25lZClsZW4gOiBzdGF0ZS0+eC5oYXZlOworICAgICAgICAgICAgc3RhdGUtPnguaGF2ZSAtPSBuOworICAgICAgICAgICAgc3RhdGUtPngubmV4dCArPSBuOworICAgICAgICAgICAgc3RhdGUtPngucG9zICs9IG47CisgICAgICAgICAgICBsZW4gLT0gbjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIG91dHB1dCBidWZmZXIgZW1wdHkgLS0gcmV0dXJuIGlmIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0ICovCisgICAgICAgIGVsc2UgaWYgKHN0YXRlLT5lb2YgJiYgc3RhdGUtPnN0cm0uYXZhaWxfaW4gPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIG5lZWQgbW9yZSBkYXRhIHRvIHNraXAgLS0gbG9hZCB1cCBvdXRwdXQgYnVmZmVyICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogZ2V0IG1vcmUgb3V0cHV0LCBsb29raW5nIGZvciBoZWFkZXIgaWYgcmVxdWlyZWQgKi8KKyAgICAgICAgICAgIGlmIChnel9mZXRjaChzdGF0ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK2ludCBaRVhQT1JUIGd6cmVhZCgKKyAgICBnekZpbGUgZmlsZSwKKyAgICB2b2lkcCBidWYsCisgICAgdW5zaWduZWQgbGVuKQoreworICAgIHVuc2lnbmVkIGdvdCwgbjsKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisgICAgel9zdHJlYW1wIHN0cm07CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworICAgIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKKworICAgIC8qIGNoZWNrIHRoYXQgd2UncmUgcmVhZGluZyBhbmQgdGhhdCB0aGVyZSdzIG5vIChzZXJpb3VzKSBlcnJvciAqLworICAgIGlmIChzdGF0ZS0+bW9kZSAhPSBHWl9SRUFEIHx8CisgICAgICAgICAgICAoc3RhdGUtPmVyciAhPSBaX09LICYmIHN0YXRlLT5lcnIgIT0gWl9CVUZfRVJST1IpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBzaW5jZSBhbiBpbnQgaXMgcmV0dXJuZWQsIG1ha2Ugc3VyZSBsZW4gZml0cyBpbiBvbmUsIG90aGVyd2lzZSByZXR1cm4KKyAgICAgICB3aXRoIGFuIGVycm9yICh0aGlzIGF2b2lkcyB0aGUgZmxhdyBpbiB0aGUgaW50ZXJmYWNlKSAqLworICAgIGlmICgoaW50KWxlbiA8IDApIHsKKyAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfREFUQV9FUlJPUiwgInJlcXVlc3RlZCBsZW5ndGggZG9lcyBub3QgZml0IGluIGludCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogaWYgbGVuIGlzIHplcm8sIGF2b2lkIHVubmVjZXNzYXJ5IG9wZXJhdGlvbnMgKi8KKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogcHJvY2VzcyBhIHNraXAgcmVxdWVzdCAqLworICAgIGlmIChzdGF0ZS0+c2VlaykgeworICAgICAgICBzdGF0ZS0+c2VlayA9IDA7CisgICAgICAgIGlmIChnel9za2lwKHN0YXRlLCBzdGF0ZS0+c2tpcCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogZ2V0IGxlbiBieXRlcyB0byBidWYsIG9yIGxlc3MgdGhhbiBsZW4gaWYgYXQgdGhlIGVuZCAqLworICAgIGdvdCA9IDA7CisgICAgZG8geworICAgICAgICAvKiBmaXJzdCBqdXN0IHRyeSBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgb3V0cHV0IGJ1ZmZlciAqLworICAgICAgICBpZiAoc3RhdGUtPnguaGF2ZSkgeworICAgICAgICAgICAgbiA9IHN0YXRlLT54LmhhdmUgPiBsZW4gPyBsZW4gOiBzdGF0ZS0+eC5oYXZlOworICAgICAgICAgICAgbWVtY3B5KGJ1Ziwgc3RhdGUtPngubmV4dCwgbik7CisgICAgICAgICAgICBzdGF0ZS0+eC5uZXh0ICs9IG47CisgICAgICAgICAgICBzdGF0ZS0+eC5oYXZlIC09IG47CisgICAgICAgIH0KKworICAgICAgICAvKiBvdXRwdXQgYnVmZmVyIGVtcHR5IC0tIHJldHVybiBpZiB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCAqLworICAgICAgICBlbHNlIGlmIChzdGF0ZS0+ZW9mICYmIHN0cm0tPmF2YWlsX2luID09IDApIHsKKyAgICAgICAgICAgIHN0YXRlLT5wYXN0ID0gMTsgICAgICAgIC8qIHRyaWVkIHRvIHJlYWQgcGFzdCBlbmQgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLyogbmVlZCBvdXRwdXQgZGF0YSAtLSBmb3Igc21hbGwgbGVuIG9yIG5ldyBzdHJlYW0gbG9hZCB1cCBvdXIgb3V0cHV0CisgICAgICAgICAgIGJ1ZmZlciAqLworICAgICAgICBlbHNlIGlmIChzdGF0ZS0+aG93ID09IExPT0sgfHwgbGVuIDwgKHN0YXRlLT5zaXplIDw8IDEpKSB7CisgICAgICAgICAgICAvKiBnZXQgbW9yZSBvdXRwdXQsIGxvb2tpbmcgZm9yIGhlYWRlciBpZiByZXF1aXJlZCAqLworICAgICAgICAgICAgaWYgKGd6X2ZldGNoKHN0YXRlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBjb250aW51ZTsgICAgICAgLyogbm8gcHJvZ3Jlc3MgeWV0IC0tIGdvIGJhY2sgdG8gY29weSBhYm92ZSAqLworICAgICAgICAgICAgLyogdGhlIGNvcHkgYWJvdmUgYXNzdXJlcyB0aGF0IHdlIHdpbGwgbGVhdmUgd2l0aCBzcGFjZSBpbiB0aGUKKyAgICAgICAgICAgICAgIG91dHB1dCBidWZmZXIsIGFsbG93aW5nIGF0IGxlYXN0IG9uZSBnenVuZ2V0YygpIHRvIHN1Y2NlZWQgKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qIGxhcmdlIGxlbiAtLSByZWFkIGRpcmVjdGx5IGludG8gdXNlciBidWZmZXIgKi8KKyAgICAgICAgZWxzZSBpZiAoc3RhdGUtPmhvdyA9PSBDT1BZKSB7ICAgICAgLyogcmVhZCBkaXJlY3RseSAqLworICAgICAgICAgICAgaWYgKGd6X2xvYWQoc3RhdGUsICh1bnNpZ25lZCBjaGFyICopYnVmLCBsZW4sICZuKSA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICAvKiBsYXJnZSBsZW4gLS0gZGVjb21wcmVzcyBkaXJlY3RseSBpbnRvIHVzZXIgYnVmZmVyICovCisgICAgICAgIGVsc2UgeyAgLyogc3RhdGUtPmhvdyA9PSBHWklQICovCisgICAgICAgICAgICBzdHJtLT5hdmFpbF9vdXQgPSBsZW47CisgICAgICAgICAgICBzdHJtLT5uZXh0X291dCA9ICh1bnNpZ25lZCBjaGFyICopYnVmOworICAgICAgICAgICAgaWYgKGd6X2RlY29tcChzdGF0ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgbiA9IHN0YXRlLT54LmhhdmU7CisgICAgICAgICAgICBzdGF0ZS0+eC5oYXZlID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHVwZGF0ZSBwcm9ncmVzcyAqLworICAgICAgICBsZW4gLT0gbjsKKyAgICAgICAgYnVmID0gKGNoYXIgKilidWYgKyBuOworICAgICAgICBnb3QgKz0gbjsKKyAgICAgICAgc3RhdGUtPngucG9zICs9IG47CisgICAgfSB3aGlsZSAobGVuKTsKKworICAgIC8qIHJldHVybiBudW1iZXIgb2YgYnl0ZXMgcmVhZCBpbnRvIHVzZXIgYnVmZmVyICh3aWxsIGZpdCBpbiBpbnQpICovCisgICAgcmV0dXJuIChpbnQpZ290OworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCisjaWZkZWYgWl9QUkVGSVhfU0VUCisjICB1bmRlZiB6X2d6Z2V0YworI2Vsc2UKKyMgIHVuZGVmIGd6Z2V0YworI2VuZGlmCitpbnQgWkVYUE9SVCBnemdldGMoCisgICAgZ3pGaWxlIGZpbGUpCit7CisgICAgaW50IHJldDsKKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZlsxXTsKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSByZWFkaW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gKHNlcmlvdXMpIGVycm9yICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQgfHwKKyAgICAgICAgKHN0YXRlLT5lcnIgIT0gWl9PSyAmJiBzdGF0ZS0+ZXJyICE9IFpfQlVGX0VSUk9SKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogdHJ5IG91dHB1dCBidWZmZXIgKG5vIG5lZWQgdG8gY2hlY2sgZm9yIHNraXAgcmVxdWVzdCkgKi8KKyAgICBpZiAoc3RhdGUtPnguaGF2ZSkgeworICAgICAgICBzdGF0ZS0+eC5oYXZlLS07CisgICAgICAgIHN0YXRlLT54LnBvcysrOworICAgICAgICByZXR1cm4gKihzdGF0ZS0+eC5uZXh0KSsrOworICAgIH0KKworICAgIC8qIG5vdGhpbmcgdGhlcmUgLS0gdHJ5IGd6cmVhZCgpICovCisgICAgcmV0ID0gZ3pyZWFkKGZpbGUsIGJ1ZiwgMSk7CisgICAgcmV0dXJuIHJldCA8IDEgPyAtMSA6IGJ1ZlswXTsKK30KKworaW50IFpFWFBPUlQgZ3pnZXRjXygKK2d6RmlsZSBmaWxlKQoreworICAgIHJldHVybiBnemdldGMoZmlsZSk7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK2ludCBaRVhQT1JUIGd6dW5nZXRjKAorICAgIGludCBjLAorICAgIGd6RmlsZSBmaWxlKQoreworICAgIGd6X3N0YXRlcCBzdGF0ZTsKKworICAgIC8qIGdldCBpbnRlcm5hbCBzdHJ1Y3R1cmUgKi8KKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgc3RhdGUgPSAoZ3pfc3RhdGVwKWZpbGU7CisKKyAgICAvKiBjaGVjayB0aGF0IHdlJ3JlIHJlYWRpbmcgYW5kIHRoYXQgdGhlcmUncyBubyAoc2VyaW91cykgZXJyb3IgKi8KKyAgICBpZiAoc3RhdGUtPm1vZGUgIT0gR1pfUkVBRCB8fAorICAgICAgICAoc3RhdGUtPmVyciAhPSBaX09LICYmIHN0YXRlLT5lcnIgIT0gWl9CVUZfRVJST1IpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBwcm9jZXNzIGEgc2tpcCByZXF1ZXN0ICovCisgICAgaWYgKHN0YXRlLT5zZWVrKSB7CisgICAgICAgIHN0YXRlLT5zZWVrID0gMDsKKyAgICAgICAgaWYgKGd6X3NraXAoc3RhdGUsIHN0YXRlLT5za2lwKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBjYW4ndCBwdXNoIEVPRiAqLworICAgIGlmIChjIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogaWYgb3V0cHV0IGJ1ZmZlciBlbXB0eSwgcHV0IGJ5dGUgYXQgZW5kIChhbGxvd3MgbW9yZSBwdXNoaW5nKSAqLworICAgIGlmIChzdGF0ZS0+eC5oYXZlID09IDApIHsKKyAgICAgICAgc3RhdGUtPnguaGF2ZSA9IDE7CisgICAgICAgIHN0YXRlLT54Lm5leHQgPSBzdGF0ZS0+b3V0ICsgKHN0YXRlLT5zaXplIDw8IDEpIC0gMTsKKyAgICAgICAgc3RhdGUtPngubmV4dFswXSA9IGM7CisgICAgICAgIHN0YXRlLT54LnBvcy0tOworICAgICAgICBzdGF0ZS0+cGFzdCA9IDA7CisgICAgICAgIHJldHVybiBjOworICAgIH0KKworICAgIC8qIGlmIG5vIHJvb20sIGdpdmUgdXAgKG11c3QgaGF2ZSBhbHJlYWR5IGRvbmUgYSBnenVuZ2V0YygpKSAqLworICAgIGlmIChzdGF0ZS0+eC5oYXZlID09IChzdGF0ZS0+c2l6ZSA8PCAxKSkgeworICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9EQVRBX0VSUk9SLCAib3V0IG9mIHJvb20gdG8gcHVzaCBjaGFyYWN0ZXJzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBzbGlkZSBvdXRwdXQgZGF0YSBpZiBuZWVkZWQgYW5kIGluc2VydCBieXRlIGJlZm9yZSBleGlzdGluZyBkYXRhICovCisgICAgaWYgKHN0YXRlLT54Lm5leHQgPT0gc3RhdGUtPm91dCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyICpzcmMgPSBzdGF0ZS0+b3V0ICsgc3RhdGUtPnguaGF2ZTsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IHN0YXRlLT5vdXQgKyAoc3RhdGUtPnNpemUgPDwgMSk7CisgICAgICAgIHdoaWxlIChzcmMgPiBzdGF0ZS0+b3V0KQorICAgICAgICAgICAgKi0tZGVzdCA9ICotLXNyYzsKKyAgICAgICAgc3RhdGUtPngubmV4dCA9IGRlc3Q7CisgICAgfQorICAgIHN0YXRlLT54LmhhdmUrKzsKKyAgICBzdGF0ZS0+eC5uZXh0LS07CisgICAgc3RhdGUtPngubmV4dFswXSA9IGM7CisgICAgc3RhdGUtPngucG9zLS07CisgICAgc3RhdGUtPnBhc3QgPSAwOworICAgIHJldHVybiBjOworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCitjaGFyICogWkVYUE9SVCBnemdldHMoCisgICAgZ3pGaWxlIGZpbGUsCisgICAgY2hhciAqYnVmLAorICAgIGludCBsZW4pCit7CisgICAgdW5zaWduZWQgbGVmdCwgbjsKKyAgICBjaGFyICpzdHI7CisgICAgdW5zaWduZWQgY2hhciAqZW9sOworICAgIGd6X3N0YXRlcCBzdGF0ZTsKKworICAgIC8qIGNoZWNrIHBhcmFtZXRlcnMgYW5kIGdldCBpbnRlcm5hbCBzdHJ1Y3R1cmUgKi8KKyAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGJ1ZiA9PSBOVUxMIHx8IGxlbiA8IDEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSByZWFkaW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gKHNlcmlvdXMpIGVycm9yICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQgfHwKKyAgICAgICAgKHN0YXRlLT5lcnIgIT0gWl9PSyAmJiBzdGF0ZS0+ZXJyICE9IFpfQlVGX0VSUk9SKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBwcm9jZXNzIGEgc2tpcCByZXF1ZXN0ICovCisgICAgaWYgKHN0YXRlLT5zZWVrKSB7CisgICAgICAgIHN0YXRlLT5zZWVrID0gMDsKKyAgICAgICAgaWYgKGd6X3NraXAoc3RhdGUsIHN0YXRlLT5za2lwKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGNvcHkgb3V0cHV0IGJ5dGVzIHVwIHRvIG5ldyBsaW5lIG9yIGxlbiAtIDEsIHdoaWNoZXZlciBjb21lcyBmaXJzdCAtLQorICAgICAgIGFwcGVuZCBhIHRlcm1pbmF0aW5nIHplcm8gdG8gdGhlIHN0cmluZyAod2UgZG9uJ3QgY2hlY2sgZm9yIGEgemVybyBpbgorICAgICAgIHRoZSBjb250ZW50cywgbGV0IHRoZSB1c2VyIHdvcnJ5IGFib3V0IHRoYXQpICovCisgICAgc3RyID0gYnVmOworICAgIGxlZnQgPSAodW5zaWduZWQpbGVuIC0gMTsKKyAgICBpZiAobGVmdCkgZG8geworICAgICAgICAvKiBhc3N1cmUgdGhhdCBzb21ldGhpbmcgaXMgaW4gdGhlIG91dHB1dCBidWZmZXIgKi8KKyAgICAgICAgaWYgKHN0YXRlLT54LmhhdmUgPT0gMCAmJiBnel9mZXRjaChzdGF0ZSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogZXJyb3IgKi8KKyAgICAgICAgaWYgKHN0YXRlLT54LmhhdmUgPT0gMCkgeyAgICAgICAvKiBlbmQgb2YgZmlsZSAqLworICAgICAgICAgICAgc3RhdGUtPnBhc3QgPSAxOyAgICAgICAgICAgIC8qIHJlYWQgcGFzdCBlbmQgKi8KKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm4gd2hhdCB3ZSBoYXZlICovCisgICAgICAgIH0KKworICAgICAgICAvKiBsb29rIGZvciBlbmQtb2YtbGluZSBpbiBjdXJyZW50IG91dHB1dCBidWZmZXIgKi8KKyAgICAgICAgbiA9IHN0YXRlLT54LmhhdmUgPiBsZWZ0ID8gbGVmdCA6IHN0YXRlLT54LmhhdmU7CisgICAgICAgIGVvbCA9ICh1bnNpZ25lZCBjaGFyICopbWVtY2hyKHN0YXRlLT54Lm5leHQsICdcbicsIG4pOworICAgICAgICBpZiAoZW9sICE9IE5VTEwpCisgICAgICAgICAgICBuID0gKHVuc2lnbmVkKShlb2wgLSBzdGF0ZS0+eC5uZXh0KSArIDE7CisKKyAgICAgICAgLyogY29weSB0aHJvdWdoIGVuZC1vZi1saW5lLCBvciByZW1haW5kZXIgaWYgbm90IGZvdW5kICovCisgICAgICAgIG1lbWNweShidWYsIHN0YXRlLT54Lm5leHQsIG4pOworICAgICAgICBzdGF0ZS0+eC5oYXZlIC09IG47CisgICAgICAgIHN0YXRlLT54Lm5leHQgKz0gbjsKKyAgICAgICAgc3RhdGUtPngucG9zICs9IG47CisgICAgICAgIGxlZnQgLT0gbjsKKyAgICAgICAgYnVmICs9IG47CisgICAgfSB3aGlsZSAobGVmdCAmJiBlb2wgPT0gTlVMTCk7CisKKyAgICAvKiByZXR1cm4gdGVybWluYXRlZCBzdHJpbmcsIG9yIGlmIG5vdGhpbmcsIGVuZCBvZiBmaWxlICovCisgICAgaWYgKGJ1ZiA9PSBzdHIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGJ1ZlswXSA9IDA7CisgICAgcmV0dXJuIHN0cjsKK30KKworLyogLS0gc2VlIHpsaWIuaCAtLSAqLworaW50IFpFWFBPUlQgZ3pkaXJlY3QoCisgICAgZ3pGaWxlIGZpbGUpCit7CisgICAgZ3pfc3RhdGVwIHN0YXRlOworCisgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSAqLworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogaWYgdGhlIHN0YXRlIGlzIG5vdCBrbm93biwgYnV0IHdlIGNhbiBmaW5kIG91dCwgdGhlbiBkbyBzbyAodGhpcyBpcworICAgICAgIG1haW5seSBmb3IgcmlnaHQgYWZ0ZXIgYSBnem9wZW4oKSBvciBnemRvcGVuKCkpICovCisgICAgaWYgKHN0YXRlLT5tb2RlID09IEdaX1JFQUQgJiYgc3RhdGUtPmhvdyA9PSBMT09LICYmIHN0YXRlLT54LmhhdmUgPT0gMCkKKyAgICAgICAgKHZvaWQpZ3pfbG9vayhzdGF0ZSk7CisKKyAgICAvKiByZXR1cm4gMSBpZiB0cmFuc3BhcmVudCwgMCBpZiBwcm9jZXNzaW5nIGEgZ3ppcCBzdHJlYW0gKi8KKyAgICByZXR1cm4gc3RhdGUtPmRpcmVjdDsKK30KKworLyogLS0gc2VlIHpsaWIuaCAtLSAqLworaW50IFpFWFBPUlQgZ3pjbG9zZV9yKAorICAgIGd6RmlsZSBmaWxlKQoreworICAgIGludCByZXQsIGVycjsKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSByZWFkaW5nICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKworICAgIC8qIGZyZWUgbWVtb3J5IGFuZCBjbG9zZSBmaWxlICovCisgICAgaWYgKHN0YXRlLT5zaXplKSB7CisgICAgICAgIGluZmxhdGVFbmQoJihzdGF0ZS0+c3RybSkpOworICAgICAgICBmcmVlKHN0YXRlLT5vdXQpOworICAgICAgICBmcmVlKHN0YXRlLT5pbik7CisgICAgfQorICAgIGVyciA9IHN0YXRlLT5lcnIgPT0gWl9CVUZfRVJST1IgPyBaX0JVRl9FUlJPUiA6IFpfT0s7CisgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfT0ssIE5VTEwpOworICAgIGZyZWUoc3RhdGUtPnBhdGgpOworICAgIHJldCA9IGNsb3NlKHN0YXRlLT5mZCk7CisgICAgZnJlZShzdGF0ZSk7CisgICAgcmV0dXJuIHJldCA/IFpfRVJSTk8gOiBlcnI7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2d6d3JpdGUuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvZ3p3cml0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MTA3MDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2d6d3JpdGUuYwpAQCAtMCwwICsxLDU3NiBAQAorLyogZ3p3cml0ZS5jIC0tIHpsaWIgZnVuY3Rpb25zIGZvciB3cml0aW5nIGd6aXAgZmlsZXMKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBNYXJrIEFkbGVyCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgKi8KKworI2luY2x1ZGUgImd6Z3V0cy5oIgorCisvKiBMb2NhbCBmdW5jdGlvbnMgKi8KK2xvY2FsIGludCBnel9pbml0IE9GKChnel9zdGF0ZXApKTsKK2xvY2FsIGludCBnel9jb21wIE9GKChnel9zdGF0ZXAsIGludCkpOworbG9jYWwgaW50IGd6X3plcm8gT0YoKGd6X3N0YXRlcCwgel9vZmY2NF90KSk7CisKKy8qIEluaXRpYWxpemUgc3RhdGUgZm9yIHdyaXRpbmcgYSBnemlwIGZpbGUuICBNYXJrIGluaXRpYWxpemF0aW9uIGJ5IHNldHRpbmcKKyAgIHN0YXRlLT5zaXplIHRvIG5vbi16ZXJvLiAgUmV0dXJuIC0xIG9uIGZhaWx1cmUgb3IgMCBvbiBzdWNjZXNzLiAqLworbG9jYWwgaW50IGd6X2luaXQoCisgICAgZ3pfc3RhdGVwIHN0YXRlKQoreworICAgIGludCByZXQ7CisgICAgel9zdHJlYW1wIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKKworICAgIC8qIGFsbG9jYXRlIGlucHV0IGJ1ZmZlciAqLworICAgIHN0YXRlLT5pbiA9ICh1bnNpZ25lZCBjaGFyICopbWFsbG9jKHN0YXRlLT53YW50KTsKKyAgICBpZiAoc3RhdGUtPmluID09IE5VTEwpIHsKKyAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfTUVNX0VSUk9SLCAib3V0IG9mIG1lbW9yeSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogb25seSBuZWVkIG91dHB1dCBidWZmZXIgYW5kIGRlZmxhdGUgc3RhdGUgaWYgY29tcHJlc3NpbmcgKi8KKyAgICBpZiAoIXN0YXRlLT5kaXJlY3QpIHsKKyAgICAgICAgLyogYWxsb2NhdGUgb3V0cHV0IGJ1ZmZlciAqLworICAgICAgICBzdGF0ZS0+b3V0ID0gKHVuc2lnbmVkIGNoYXIgKiltYWxsb2Moc3RhdGUtPndhbnQpOworICAgICAgICBpZiAoc3RhdGUtPm91dCA9PSBOVUxMKSB7CisgICAgICAgICAgICBmcmVlKHN0YXRlLT5pbik7CisgICAgICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9NRU1fRVJST1IsICJvdXQgb2YgbWVtb3J5Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICAvKiBhbGxvY2F0ZSBkZWZsYXRlIG1lbW9yeSwgc2V0IHVwIGZvciBnemlwIGNvbXByZXNzaW9uICovCisgICAgICAgIHN0cm0tPnphbGxvYyA9IFpfTlVMTDsKKyAgICAgICAgc3RybS0+emZyZWUgPSBaX05VTEw7CisgICAgICAgIHN0cm0tPm9wYXF1ZSA9IFpfTlVMTDsKKyAgICAgICAgcmV0ID0gZGVmbGF0ZUluaXQyKHN0cm0sIHN0YXRlLT5sZXZlbCwgWl9ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9XQklUUyArIDE2LCBERUZfTUVNX0xFVkVMLCBzdGF0ZS0+c3RyYXRlZ3kpOworICAgICAgICBpZiAocmV0ICE9IFpfT0spIHsKKyAgICAgICAgICAgIGZyZWUoc3RhdGUtPm91dCk7CisgICAgICAgICAgICBmcmVlKHN0YXRlLT5pbik7CisgICAgICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9NRU1fRVJST1IsICJvdXQgb2YgbWVtb3J5Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBtYXJrIHN0YXRlIGFzIGluaXRpYWxpemVkICovCisgICAgc3RhdGUtPnNpemUgPSBzdGF0ZS0+d2FudDsKKworICAgIC8qIGluaXRpYWxpemUgd3JpdGUgYnVmZmVyIGlmIGNvbXByZXNzaW5nICovCisgICAgaWYgKCFzdGF0ZS0+ZGlyZWN0KSB7CisgICAgICAgIHN0cm0tPmF2YWlsX291dCA9IHN0YXRlLT5zaXplOworICAgICAgICBzdHJtLT5uZXh0X291dCA9IHN0YXRlLT5vdXQ7CisgICAgICAgIHN0YXRlLT54Lm5leHQgPSBzdHJtLT5uZXh0X291dDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvbXByZXNzIHdoYXRldmVyIGlzIGF0IGF2YWlsX2luIGFuZCBuZXh0X2luIGFuZCB3cml0ZSB0byB0aGUgb3V0cHV0IGZpbGUuCisgICBSZXR1cm4gLTEgaWYgdGhlcmUgaXMgYW4gZXJyb3Igd3JpdGluZyB0byB0aGUgb3V0cHV0IGZpbGUsIG90aGVyd2lzZSAwLgorICAgZmx1c2ggaXMgYXNzdW1lZCB0byBiZSBhIHZhbGlkIGRlZmxhdGUoKSBmbHVzaCB2YWx1ZS4gIElmIGZsdXNoIGlzIFpfRklOSVNILAorICAgdGhlbiB0aGUgZGVmbGF0ZSgpIHN0YXRlIGlzIHJlc2V0IHRvIHN0YXJ0IGEgbmV3IGd6aXAgc3RyZWFtLiAgSWYgZ3otPmRpcmVjdAorICAgaXMgdHJ1ZSwgdGhlbiBzaW1wbHkgd3JpdGUgdG8gdGhlIG91dHB1dCBmaWxlIHdpdGhvdXQgY29tcHJlc3NpbmcsIGFuZAorICAgaWdub3JlIGZsdXNoLiAqLworbG9jYWwgaW50IGd6X2NvbXAoCisgICAgZ3pfc3RhdGVwIHN0YXRlLAorICAgIGludCBmbHVzaCkKK3sKKyAgICBpbnQgcmV0LCBnb3Q7CisgICAgdW5zaWduZWQgaGF2ZTsKKyAgICB6X3N0cmVhbXAgc3RybSA9ICYoc3RhdGUtPnN0cm0pOworCisgICAgLyogYWxsb2NhdGUgbWVtb3J5IGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhyb3VnaCAqLworICAgIGlmIChzdGF0ZS0+c2l6ZSA9PSAwICYmIGd6X2luaXQoc3RhdGUpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiB3cml0ZSBkaXJlY3RseSBpZiByZXF1ZXN0ZWQgKi8KKyAgICBpZiAoc3RhdGUtPmRpcmVjdCkgeworICAgICAgICBnb3QgPSB3cml0ZShzdGF0ZS0+ZmQsIHN0cm0tPm5leHRfaW4sIHN0cm0tPmF2YWlsX2luKTsKKyAgICAgICAgaWYgKGdvdCA8IDAgfHwgKHVuc2lnbmVkKWdvdCAhPSBzdHJtLT5hdmFpbF9pbikgeworICAgICAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfRVJSTk8sIHpzdHJlcnJvcigpKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBzdHJtLT5hdmFpbF9pbiA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIHJ1biBkZWZsYXRlKCkgb24gcHJvdmlkZWQgaW5wdXQgdW50aWwgaXQgcHJvZHVjZXMgbm8gbW9yZSBvdXRwdXQgKi8KKyAgICByZXQgPSBaX09LOworICAgIGRvIHsKKyAgICAgICAgLyogd3JpdGUgb3V0IGN1cnJlbnQgYnVmZmVyIGNvbnRlbnRzIGlmIGZ1bGwsIG9yIGlmIGZsdXNoaW5nLCBidXQgaWYKKyAgICAgICAgICAgZG9pbmcgWl9GSU5JU0ggdGhlbiBkb24ndCB3cml0ZSB1bnRpbCB3ZSBnZXQgdG8gWl9TVFJFQU1fRU5EICovCisgICAgICAgIGlmIChzdHJtLT5hdmFpbF9vdXQgPT0gMCB8fCAoZmx1c2ggIT0gWl9OT19GTFVTSCAmJgorICAgICAgICAgICAgKGZsdXNoICE9IFpfRklOSVNIIHx8IHJldCA9PSBaX1NUUkVBTV9FTkQpKSkgeworICAgICAgICAgICAgaGF2ZSA9ICh1bnNpZ25lZCkoc3RybS0+bmV4dF9vdXQgLSBzdGF0ZS0+eC5uZXh0KTsKKyAgICAgICAgICAgIGlmIChoYXZlICYmICgoZ290ID0gd3JpdGUoc3RhdGUtPmZkLCBzdGF0ZS0+eC5uZXh0LCBoYXZlKSkgPCAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKWdvdCAhPSBoYXZlKSkgeworICAgICAgICAgICAgICAgIGd6X2Vycm9yKHN0YXRlLCBaX0VSUk5PLCB6c3RyZXJyb3IoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cm0tPmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICAgICAgc3RybS0+YXZhaWxfb3V0ID0gc3RhdGUtPnNpemU7CisgICAgICAgICAgICAgICAgc3RybS0+bmV4dF9vdXQgPSBzdGF0ZS0+b3V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUtPngubmV4dCA9IHN0cm0tPm5leHRfb3V0OworICAgICAgICB9CisKKyAgICAgICAgLyogY29tcHJlc3MgKi8KKyAgICAgICAgaGF2ZSA9IHN0cm0tPmF2YWlsX291dDsKKyAgICAgICAgcmV0ID0gZGVmbGF0ZShzdHJtLCBmbHVzaCk7CisgICAgICAgIGlmIChyZXQgPT0gWl9TVFJFQU1fRVJST1IpIHsKKyAgICAgICAgICAgIGd6X2Vycm9yKHN0YXRlLCBaX1NUUkVBTV9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3I6IGRlZmxhdGUgc3RyZWFtIGNvcnJ1cHQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBoYXZlIC09IHN0cm0tPmF2YWlsX291dDsKKyAgICB9IHdoaWxlIChoYXZlKTsKKworICAgIC8qIGlmIHRoYXQgY29tcGxldGVkIGEgZGVmbGF0ZSBzdHJlYW0sIGFsbG93IGFub3RoZXIgdG8gc3RhcnQgKi8KKyAgICBpZiAoZmx1c2ggPT0gWl9GSU5JU0gpCisgICAgICAgIGRlZmxhdGVSZXNldChzdHJtKTsKKworICAgIC8qIGFsbCBkb25lLCBubyBlcnJvcnMgKi8KKyAgICByZXR1cm4gMDsKK30KKworLyogQ29tcHJlc3MgbGVuIHplcm9zIHRvIG91dHB1dC4gIFJldHVybiAtMSBvbiBlcnJvciwgMCBvbiBzdWNjZXNzLiAqLworbG9jYWwgaW50IGd6X3plcm8oCisgICAgZ3pfc3RhdGVwIHN0YXRlLAorICAgIHpfb2ZmNjRfdCBsZW4pCit7CisgICAgaW50IGZpcnN0OworICAgIHVuc2lnbmVkIG47CisgICAgel9zdHJlYW1wIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKKworICAgIC8qIGNvbnN1bWUgd2hhdGV2ZXIncyBsZWZ0IGluIHRoZSBpbnB1dCBidWZmZXIgKi8KKyAgICBpZiAoc3RybS0+YXZhaWxfaW4gJiYgZ3pfY29tcChzdGF0ZSwgWl9OT19GTFVTSCkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIGNvbXByZXNzIGxlbiB6ZXJvcyAobGVuIGd1YXJhbnRlZWQgPiAwKSAqLworICAgIGZpcnN0ID0gMTsKKyAgICB3aGlsZSAobGVuKSB7CisgICAgICAgIG4gPSBHVF9PRkYoc3RhdGUtPnNpemUpIHx8ICh6X29mZjY0X3Qpc3RhdGUtPnNpemUgPiBsZW4gPworICAgICAgICAgICAgKHVuc2lnbmVkKWxlbiA6IHN0YXRlLT5zaXplOworICAgICAgICBpZiAoZmlyc3QpIHsKKyAgICAgICAgICAgIG1lbXNldChzdGF0ZS0+aW4sIDAsIG4pOworICAgICAgICAgICAgZmlyc3QgPSAwOworICAgICAgICB9CisgICAgICAgIHN0cm0tPmF2YWlsX2luID0gbjsKKyAgICAgICAgc3RybS0+bmV4dF9pbiA9IHN0YXRlLT5pbjsKKyAgICAgICAgc3RhdGUtPngucG9zICs9IG47CisgICAgICAgIGlmIChnel9jb21wKHN0YXRlLCBaX05PX0ZMVVNIKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgbGVuIC09IG47CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCitpbnQgWkVYUE9SVCBnendyaXRlKAorICAgIGd6RmlsZSBmaWxlLAorICAgIHZvaWRwYyBidWYsCisgICAgdW5zaWduZWQgbGVuKQoreworICAgIHVuc2lnbmVkIHB1dCA9IGxlbjsKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisgICAgel9zdHJlYW1wIHN0cm07CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3RhdGUgPSAoZ3pfc3RhdGVwKWZpbGU7CisgICAgc3RybSA9ICYoc3RhdGUtPnN0cm0pOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSB3cml0aW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gZXJyb3IgKi8KKyAgICBpZiAoc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUgfHwgc3RhdGUtPmVyciAhPSBaX09LKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIHNpbmNlIGFuIGludCBpcyByZXR1cm5lZCwgbWFrZSBzdXJlIGxlbiBmaXRzIGluIG9uZSwgb3RoZXJ3aXNlIHJldHVybgorICAgICAgIHdpdGggYW4gZXJyb3IgKHRoaXMgYXZvaWRzIHRoZSBmbGF3IGluIHRoZSBpbnRlcmZhY2UpICovCisgICAgaWYgKChpbnQpbGVuIDwgMCkgeworICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9EQVRBX0VSUk9SLCAicmVxdWVzdGVkIGxlbmd0aCBkb2VzIG5vdCBmaXQgaW4gaW50Iik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIGlmIGxlbiBpcyB6ZXJvLCBhdm9pZCB1bm5lY2Vzc2FyeSBvcGVyYXRpb25zICovCisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIGFsbG9jYXRlIG1lbW9yeSBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHRocm91Z2ggKi8KKyAgICBpZiAoc3RhdGUtPnNpemUgPT0gMCAmJiBnel9pbml0KHN0YXRlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBjaGVjayBmb3Igc2VlayByZXF1ZXN0ICovCisgICAgaWYgKHN0YXRlLT5zZWVrKSB7CisgICAgICAgIHN0YXRlLT5zZWVrID0gMDsKKyAgICAgICAgaWYgKGd6X3plcm8oc3RhdGUsIHN0YXRlLT5za2lwKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIGZvciBzbWFsbCBsZW4sIGNvcHkgdG8gaW5wdXQgYnVmZmVyLCBvdGhlcndpc2UgY29tcHJlc3MgZGlyZWN0bHkgKi8KKyAgICBpZiAobGVuIDwgc3RhdGUtPnNpemUpIHsKKyAgICAgICAgLyogY29weSB0byBpbnB1dCBidWZmZXIsIGNvbXByZXNzIHdoZW4gZnVsbCAqLworICAgICAgICBkbyB7CisgICAgICAgICAgICB1bnNpZ25lZCBoYXZlLCBjb3B5OworCisgICAgICAgICAgICBpZiAoc3RybS0+YXZhaWxfaW4gPT0gMCkKKyAgICAgICAgICAgICAgICBzdHJtLT5uZXh0X2luID0gc3RhdGUtPmluOworICAgICAgICAgICAgaGF2ZSA9ICh1bnNpZ25lZCkoKHN0cm0tPm5leHRfaW4gKyBzdHJtLT5hdmFpbF9pbikgLSBzdGF0ZS0+aW4pOworICAgICAgICAgICAgY29weSA9IHN0YXRlLT5zaXplIC0gaGF2ZTsKKyAgICAgICAgICAgIGlmIChjb3B5ID4gbGVuKQorICAgICAgICAgICAgICAgIGNvcHkgPSBsZW47CisgICAgICAgICAgICBtZW1jcHkoc3RhdGUtPmluICsgaGF2ZSwgYnVmLCBjb3B5KTsKKyAgICAgICAgICAgIHN0cm0tPmF2YWlsX2luICs9IGNvcHk7CisgICAgICAgICAgICBzdGF0ZS0+eC5wb3MgKz0gY29weTsKKyAgICAgICAgICAgIGJ1ZiA9IChjb25zdCBjaGFyICopYnVmICsgY29weTsKKyAgICAgICAgICAgIGxlbiAtPSBjb3B5OworICAgICAgICAgICAgaWYgKGxlbiAmJiBnel9jb21wKHN0YXRlLCBaX05PX0ZMVVNIKSA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSB3aGlsZSAobGVuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGNvbnN1bWUgd2hhdGV2ZXIncyBsZWZ0IGluIHRoZSBpbnB1dCBidWZmZXIgKi8KKyAgICAgICAgaWYgKHN0cm0tPmF2YWlsX2luICYmIGd6X2NvbXAoc3RhdGUsIFpfTk9fRkxVU0gpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLyogZGlyZWN0bHkgY29tcHJlc3MgdXNlciBidWZmZXIgdG8gZmlsZSAqLworICAgICAgICBzdHJtLT5hdmFpbF9pbiA9IGxlbjsKKyAgICAgICAgc3RybS0+bmV4dF9pbiA9ICh6X2NvbnN0IEJ5dGVmICopYnVmOworICAgICAgICBzdGF0ZS0+eC5wb3MgKz0gbGVuOworICAgICAgICBpZiAoZ3pfY29tcChzdGF0ZSwgWl9OT19GTFVTSCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBpbnB1dCB3YXMgYWxsIGJ1ZmZlcmVkIG9yIGNvbXByZXNzZWQgKHB1dCB3aWxsIGZpdCBpbiBpbnQpICovCisgICAgcmV0dXJuIChpbnQpcHV0OworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCitpbnQgWkVYUE9SVCBnenB1dGMoCisgICAgZ3pGaWxlIGZpbGUsCisgICAgaW50IGMpCit7CisgICAgdW5zaWduZWQgaGF2ZTsKKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZlsxXTsKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisgICAgel9zdHJlYW1wIHN0cm07CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworICAgIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKKworICAgIC8qIGNoZWNrIHRoYXQgd2UncmUgd3JpdGluZyBhbmQgdGhhdCB0aGVyZSdzIG5vIGVycm9yICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1dSSVRFIHx8IHN0YXRlLT5lcnIgIT0gWl9PSykKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogY2hlY2sgZm9yIHNlZWsgcmVxdWVzdCAqLworICAgIGlmIChzdGF0ZS0+c2VlaykgeworICAgICAgICBzdGF0ZS0+c2VlayA9IDA7CisgICAgICAgIGlmIChnel96ZXJvKHN0YXRlLCBzdGF0ZS0+c2tpcCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogdHJ5IHdyaXRpbmcgdG8gaW5wdXQgYnVmZmVyIGZvciBzcGVlZCAoc3RhdGUtPnNpemUgPT0gMCBpZiBidWZmZXIgbm90CisgICAgICAgaW5pdGlhbGl6ZWQpICovCisgICAgaWYgKHN0YXRlLT5zaXplKSB7CisgICAgICAgIGlmIChzdHJtLT5hdmFpbF9pbiA9PSAwKQorICAgICAgICAgICAgc3RybS0+bmV4dF9pbiA9IHN0YXRlLT5pbjsKKyAgICAgICAgaGF2ZSA9ICh1bnNpZ25lZCkoKHN0cm0tPm5leHRfaW4gKyBzdHJtLT5hdmFpbF9pbikgLSBzdGF0ZS0+aW4pOworICAgICAgICBpZiAoaGF2ZSA8IHN0YXRlLT5zaXplKSB7CisgICAgICAgICAgICBzdGF0ZS0+aW5baGF2ZV0gPSBjOworICAgICAgICAgICAgc3RybS0+YXZhaWxfaW4rKzsKKyAgICAgICAgICAgIHN0YXRlLT54LnBvcysrOworICAgICAgICAgICAgcmV0dXJuIGMgJiAweGZmOworICAgICAgICB9CisgICAgfQorCisgICAgLyogbm8gcm9vbSBpbiBidWZmZXIgb3Igbm90IGluaXRpYWxpemVkLCB1c2UgZ3pfd3JpdGUoKSAqLworICAgIGJ1ZlswXSA9IGM7CisgICAgaWYgKGd6d3JpdGUoZmlsZSwgYnVmLCAxKSAhPSAxKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIGMgJiAweGZmOworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCitpbnQgWkVYUE9SVCBnenB1dHMoCisgICAgZ3pGaWxlIGZpbGUsCisgICAgY29uc3QgY2hhciAqc3RyKQoreworICAgIGludCByZXQ7CisgICAgdW5zaWduZWQgbGVuOworCisgICAgLyogd3JpdGUgc3RyaW5nICovCisgICAgbGVuID0gKHVuc2lnbmVkKXN0cmxlbihzdHIpOworICAgIHJldCA9IGd6d3JpdGUoZmlsZSwgc3RyLCBsZW4pOworICAgIHJldHVybiByZXQgPT0gMCAmJiBsZW4gIT0gMCA/IC0xIDogcmV0OworfQorCisjaWYgZGVmaW5lZChTVERDKSB8fCBkZWZpbmVkKFpfSEFWRV9TVERBUkdfSCkKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworLyogLS0gc2VlIHpsaWIuaCAtLSAqLworaW50IFpFWFBPUlRWQSBnenZwcmludGYoZ3pGaWxlIGZpbGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSkKK3sKKyAgICBpbnQgc2l6ZSwgbGVuOworICAgIGd6X3N0YXRlcCBzdGF0ZTsKKyAgICB6X3N0cmVhbXAgc3RybTsKKworICAgIC8qIGdldCBpbnRlcm5hbCBzdHJ1Y3R1cmUgKi8KKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgc3RhdGUgPSAoZ3pfc3RhdGVwKWZpbGU7CisgICAgc3RybSA9ICYoc3RhdGUtPnN0cm0pOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSB3cml0aW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gZXJyb3IgKi8KKyAgICBpZiAoc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUgfHwgc3RhdGUtPmVyciAhPSBaX09LKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIG1ha2Ugc3VyZSB3ZSBoYXZlIHNvbWUgYnVmZmVyIHNwYWNlICovCisgICAgaWYgKHN0YXRlLT5zaXplID09IDAgJiYgZ3pfaW5pdChzdGF0ZSkgPT0gLTEpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogY2hlY2sgZm9yIHNlZWsgcmVxdWVzdCAqLworICAgIGlmIChzdGF0ZS0+c2VlaykgeworICAgICAgICBzdGF0ZS0+c2VlayA9IDA7CisgICAgICAgIGlmIChnel96ZXJvKHN0YXRlLCBzdGF0ZS0+c2tpcCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBjb25zdW1lIHdoYXRldmVyJ3MgbGVmdCBpbiB0aGUgaW5wdXQgYnVmZmVyICovCisgICAgaWYgKHN0cm0tPmF2YWlsX2luICYmIGd6X2NvbXAoc3RhdGUsIFpfTk9fRkxVU0gpID09IC0xKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIGRvIHRoZSBwcmludGYoKSBpbnRvIHRoZSBpbnB1dCBidWZmZXIsIHB1dCBsZW5ndGggaW4gbGVuICovCisgICAgc2l6ZSA9IChpbnQpKHN0YXRlLT5zaXplKTsKKyAgICBzdGF0ZS0+aW5bc2l6ZSAtIDFdID0gMDsKKyNpZmRlZiBOT192c25wcmludGYKKyMgIGlmZGVmIEhBU192c3ByaW50Zl92b2lkCisgICAgKHZvaWQpdnNwcmludGYoKGNoYXIgKikoc3RhdGUtPmluKSwgZm9ybWF0LCB2YSk7CisgICAgZm9yIChsZW4gPSAwOyBsZW4gPCBzaXplOyBsZW4rKykKKyAgICAgICAgaWYgKHN0YXRlLT5pbltsZW5dID09IDApIGJyZWFrOworIyAgZWxzZQorICAgIGxlbiA9IHZzcHJpbnRmKChjaGFyICopKHN0YXRlLT5pbiksIGZvcm1hdCwgdmEpOworIyAgZW5kaWYKKyNlbHNlCisjICBpZmRlZiBIQVNfdnNucHJpbnRmX3ZvaWQKKyAgICAodm9pZCl2c25wcmludGYoKGNoYXIgKikoc3RhdGUtPmluKSwgc2l6ZSwgZm9ybWF0LCB2YSk7CisgICAgbGVuID0gc3RybGVuKChjaGFyICopKHN0YXRlLT5pbikpOworIyAgZWxzZQorICAgIGxlbiA9IHZzbnByaW50ZigoY2hhciAqKShzdGF0ZS0+aW4pLCBzaXplLCBmb3JtYXQsIHZhKTsKKyMgIGVuZGlmCisjZW5kaWYKKworICAgIC8qIGNoZWNrIHRoYXQgcHJpbnRmKCkgcmVzdWx0cyBmaXQgaW4gYnVmZmVyICovCisgICAgaWYgKGxlbiA8PSAwIHx8IGxlbiA+PSAoaW50KXNpemUgfHwgc3RhdGUtPmluW3NpemUgLSAxXSAhPSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIHVwZGF0ZSBidWZmZXIgYW5kIHBvc2l0aW9uLCBkZWZlciBjb21wcmVzc2lvbiB1bnRpbCBuZWVkZWQgKi8KKyAgICBzdHJtLT5hdmFpbF9pbiA9ICh1bnNpZ25lZClsZW47CisgICAgc3RybS0+bmV4dF9pbiA9IHN0YXRlLT5pbjsKKyAgICBzdGF0ZS0+eC5wb3MgKz0gbGVuOworICAgIHJldHVybiBsZW47Cit9CisKK2ludCBaRVhQT1JUVkEgZ3pwcmludGYoZ3pGaWxlIGZpbGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgdmE7CisgICAgaW50IHJldDsKKworICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIHJldCA9IGd6dnByaW50ZihmaWxlLCBmb3JtYXQsIHZhKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXQ7Cit9CisKKyNlbHNlIC8qICFTVERDICYmICFaX0hBVkVfU1REQVJHX0ggKi8KKworLyogLS0gc2VlIHpsaWIuaCAtLSAqLworaW50IFpFWFBPUlRWQSBnenByaW50ZiAoCisgICAgZ3pGaWxlIGZpbGUsCisgICAgY29uc3QgY2hhciAqZm9ybWF0LAorICAgIGludCBhMSwgaW50IGEyLCBpbnQgYTMsIGludCBhNCwgaW50IGE1LCBpbnQgYTYsIGludCBhNywgaW50IGE4LCBpbnQgYTksIGludCBhMTAsCisgICAgICAgIGludCBhMTEsIGludCBhMTIsIGludCBhMTMsIGludCBhMTQsIGludCBhMTUsIGludCBhMTYsIGludCBhMTcsIGludCBhMTgsIGludCBhMTksIGludCBhMjApCit7CisgICAgaW50IHNpemUsIGxlbjsKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisgICAgel9zdHJlYW1wIHN0cm07CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworICAgIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKKworICAgIC8qIGNoZWNrIHRoYXQgY2FuIHJlYWxseSBwYXNzIHBvaW50ZXIgaW4gaW50cyAqLworICAgIGlmIChzaXplb2YoaW50KSAhPSBzaXplb2Yodm9pZCAqKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBjaGVjayB0aGF0IHdlJ3JlIHdyaXRpbmcgYW5kIHRoYXQgdGhlcmUncyBubyBlcnJvciAqLworICAgIGlmIChzdGF0ZS0+bW9kZSAhPSBHWl9XUklURSB8fCBzdGF0ZS0+ZXJyICE9IFpfT0spCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogbWFrZSBzdXJlIHdlIGhhdmUgc29tZSBidWZmZXIgc3BhY2UgKi8KKyAgICBpZiAoc3RhdGUtPnNpemUgPT0gMCAmJiBnel9pbml0KHN0YXRlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBjaGVjayBmb3Igc2VlayByZXF1ZXN0ICovCisgICAgaWYgKHN0YXRlLT5zZWVrKSB7CisgICAgICAgIHN0YXRlLT5zZWVrID0gMDsKKyAgICAgICAgaWYgKGd6X3plcm8oc3RhdGUsIHN0YXRlLT5za2lwKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIGNvbnN1bWUgd2hhdGV2ZXIncyBsZWZ0IGluIHRoZSBpbnB1dCBidWZmZXIgKi8KKyAgICBpZiAoc3RybS0+YXZhaWxfaW4gJiYgZ3pfY29tcChzdGF0ZSwgWl9OT19GTFVTSCkgPT0gLTEpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogZG8gdGhlIHByaW50ZigpIGludG8gdGhlIGlucHV0IGJ1ZmZlciwgcHV0IGxlbmd0aCBpbiBsZW4gKi8KKyAgICBzaXplID0gKGludCkoc3RhdGUtPnNpemUpOworICAgIHN0YXRlLT5pbltzaXplIC0gMV0gPSAwOworI2lmZGVmIE5PX3NucHJpbnRmCisjICBpZmRlZiBIQVNfc3ByaW50Zl92b2lkCisgICAgc3ByaW50ZigoY2hhciAqKShzdGF0ZS0+aW4pLCBmb3JtYXQsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwKKyAgICAgICAgICAgIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCk7CisgICAgZm9yIChsZW4gPSAwOyBsZW4gPCBzaXplOyBsZW4rKykKKyAgICAgICAgaWYgKHN0YXRlLT5pbltsZW5dID09IDApIGJyZWFrOworIyAgZWxzZQorICAgIGxlbiA9IHNwcmludGYoKGNoYXIgKikoc3RhdGUtPmluKSwgZm9ybWF0LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsCisgICAgICAgICAgICAgICAgICBhOSwgYTEwLCBhMTEsIGExMiwgYTEzLCBhMTQsIGExNSwgYTE2LCBhMTcsIGExOCwgYTE5LCBhMjApOworIyAgZW5kaWYKKyNlbHNlCisjICBpZmRlZiBIQVNfc25wcmludGZfdm9pZAorICAgIHNucHJpbnRmKChjaGFyICopKHN0YXRlLT5pbiksIHNpemUsIGZvcm1hdCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LAorICAgICAgICAgICAgIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCk7CisgICAgbGVuID0gc3RybGVuKChjaGFyICopKHN0YXRlLT5pbikpOworIyAgZWxzZQorICAgIGxlbiA9IHNucHJpbnRmKChjaGFyICopKHN0YXRlLT5pbiksIHNpemUsIGZvcm1hdCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwKKyAgICAgICAgICAgICAgICAgICBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LAorICAgICAgICAgICAgICAgICAgIGExOSwgYTIwKTsKKyMgIGVuZGlmCisjZW5kaWYKKworICAgIC8qIGNoZWNrIHRoYXQgcHJpbnRmKCkgcmVzdWx0cyBmaXQgaW4gYnVmZmVyICovCisgICAgaWYgKGxlbiA8PSAwIHx8IGxlbiA+PSAoaW50KXNpemUgfHwgc3RhdGUtPmluW3NpemUgLSAxXSAhPSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIHVwZGF0ZSBidWZmZXIgYW5kIHBvc2l0aW9uLCBkZWZlciBjb21wcmVzc2lvbiB1bnRpbCBuZWVkZWQgKi8KKyAgICBzdHJtLT5hdmFpbF9pbiA9ICh1bnNpZ25lZClsZW47CisgICAgc3RybS0+bmV4dF9pbiA9IHN0YXRlLT5pbjsKKyAgICBzdGF0ZS0+eC5wb3MgKz0gbGVuOworICAgIHJldHVybiBsZW47Cit9CisKKyNlbmRpZgorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCitpbnQgWkVYUE9SVCBnemZsdXNoKAorICAgIGd6RmlsZSBmaWxlLAorICAgIGludCBmbHVzaCkKK3sKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSB3cml0aW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gZXJyb3IgKi8KKyAgICBpZiAoc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUgfHwgc3RhdGUtPmVyciAhPSBaX09LKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisKKyAgICAvKiBjaGVjayBmbHVzaCBwYXJhbWV0ZXIgKi8KKyAgICBpZiAoZmx1c2ggPCAwIHx8IGZsdXNoID4gWl9GSU5JU0gpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKworICAgIC8qIGNoZWNrIGZvciBzZWVrIHJlcXVlc3QgKi8KKyAgICBpZiAoc3RhdGUtPnNlZWspIHsKKyAgICAgICAgc3RhdGUtPnNlZWsgPSAwOworICAgICAgICBpZiAoZ3pfemVybyhzdGF0ZSwgc3RhdGUtPnNraXApID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIGNvbXByZXNzIHJlbWFpbmluZyBkYXRhIHdpdGggcmVxdWVzdGVkIGZsdXNoICovCisgICAgZ3pfY29tcChzdGF0ZSwgZmx1c2gpOworICAgIHJldHVybiBzdGF0ZS0+ZXJyOworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCitpbnQgWkVYUE9SVCBnenNldHBhcmFtcygKKyAgICBnekZpbGUgZmlsZSwKKyAgICBpbnQgbGV2ZWwsCisgICAgaW50IHN0cmF0ZWd5KQoreworICAgIGd6X3N0YXRlcCBzdGF0ZTsKKyAgICB6X3N0cmVhbXAgc3RybTsKKworICAgIC8qIGdldCBpbnRlcm5hbCBzdHJ1Y3R1cmUgKi8KKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoZ3pfc3RhdGVwKWZpbGU7CisgICAgc3RybSA9ICYoc3RhdGUtPnN0cm0pOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSB3cml0aW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gZXJyb3IgKi8KKyAgICBpZiAoc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUgfHwgc3RhdGUtPmVyciAhPSBaX09LKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisKKyAgICAvKiBpZiBubyBjaGFuZ2UgaXMgcmVxdWVzdGVkLCB0aGVuIGRvIG5vdGhpbmcgKi8KKyAgICBpZiAobGV2ZWwgPT0gc3RhdGUtPmxldmVsICYmIHN0cmF0ZWd5ID09IHN0YXRlLT5zdHJhdGVneSkKKyAgICAgICAgcmV0dXJuIFpfT0s7CisKKyAgICAvKiBjaGVjayBmb3Igc2VlayByZXF1ZXN0ICovCisgICAgaWYgKHN0YXRlLT5zZWVrKSB7CisgICAgICAgIHN0YXRlLT5zZWVrID0gMDsKKyAgICAgICAgaWYgKGd6X3plcm8oc3RhdGUsIHN0YXRlLT5za2lwKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBjaGFuZ2UgY29tcHJlc3Npb24gcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBpbnB1dCAqLworICAgIGlmIChzdGF0ZS0+c2l6ZSkgeworICAgICAgICAvKiBmbHVzaCBwcmV2aW91cyBpbnB1dCB3aXRoIHByZXZpb3VzIHBhcmFtZXRlcnMgYmVmb3JlIGNoYW5naW5nICovCisgICAgICAgIGlmIChzdHJtLT5hdmFpbF9pbiAmJiBnel9jb21wKHN0YXRlLCBaX1BBUlRJQUxfRkxVU0gpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRlLT5lcnI7CisgICAgICAgIGRlZmxhdGVQYXJhbXMoc3RybSwgbGV2ZWwsIHN0cmF0ZWd5KTsKKyAgICB9CisgICAgc3RhdGUtPmxldmVsID0gbGV2ZWw7CisgICAgc3RhdGUtPnN0cmF0ZWd5ID0gc3RyYXRlZ3k7CisgICAgcmV0dXJuIFpfT0s7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK2ludCBaRVhQT1JUIGd6Y2xvc2VfdygKKyAgICBnekZpbGUgZmlsZSkKK3sKKyAgICBpbnQgcmV0ID0gWl9PSzsKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSB3cml0aW5nICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1dSSVRFKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisKKyAgICAvKiBjaGVjayBmb3Igc2VlayByZXF1ZXN0ICovCisgICAgaWYgKHN0YXRlLT5zZWVrKSB7CisgICAgICAgIHN0YXRlLT5zZWVrID0gMDsKKyAgICAgICAgaWYgKGd6X3plcm8oc3RhdGUsIHN0YXRlLT5za2lwKSA9PSAtMSkKKyAgICAgICAgICAgIHJldCA9IHN0YXRlLT5lcnI7CisgICAgfQorCisgICAgLyogZmx1c2gsIGZyZWUgbWVtb3J5LCBhbmQgY2xvc2UgZmlsZSAqLworICAgIGlmIChnel9jb21wKHN0YXRlLCBaX0ZJTklTSCkgPT0gLTEpCisgICAgICAgIHJldCA9IHN0YXRlLT5lcnI7CisgICAgaWYgKHN0YXRlLT5zaXplKSB7CisgICAgICAgIGlmICghc3RhdGUtPmRpcmVjdCkgeworICAgICAgICAgICAgKHZvaWQpZGVmbGF0ZUVuZCgmKHN0YXRlLT5zdHJtKSk7CisgICAgICAgICAgICBmcmVlKHN0YXRlLT5vdXQpOworICAgICAgICB9CisgICAgICAgIGZyZWUoc3RhdGUtPmluKTsKKyAgICB9CisgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfT0ssIE5VTEwpOworICAgIGZyZWUoc3RhdGUtPnBhdGgpOworICAgIGlmIChjbG9zZShzdGF0ZS0+ZmQpID09IC0xKQorICAgICAgICByZXQgPSBaX0VSUk5POworICAgIGZyZWUoc3RhdGUpOworICAgIHJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2luZmZhc3QuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvaW5mZmFzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YzFhYTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2luZmZhc3QuaApAQCAtMCwwICsxLDExIEBACisvKiBpbmZmYXN0LmggLS0gaGVhZGVyIHRvIHVzZSBpbmZmYXN0LmMKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAzLCAyMDEwIE1hcmsgQWRsZXIKKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAqLworCisvKiBXQVJOSU5HOiB0aGlzIGZpbGUgc2hvdWxkICpub3QqIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLiBJdCBpcworICAgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYW5kIGlzCisgICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6bGliLmguCisgKi8KKwordm9pZCBaTElCX0lOVEVSTkFMIGluZmxhdGVfZmFzdCBPRigoel9zdHJlYW1wIHN0cm0sIHVuc2lnbmVkIHN0YXJ0KSk7CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2luZmZpeGVkLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2luZmZpeGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYyODMyNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvaW5mZml4ZWQuaApAQCAtMCwwICsxLDk0IEBACisgICAgLyogaW5mZml4ZWQuaCAtLSB0YWJsZSBmb3IgZGVjb2RpbmcgZml4ZWQgY29kZXMKKyAgICAgKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBtYWtlZml4ZWQoKS4KKyAgICAgKi8KKworICAgIC8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuCisgICAgICAgSXQgaXMgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBsaWJyYXJ5IGFuZCBpcworICAgICAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KKyAgICAgKi8KKworICAgIHN0YXRpYyBjb25zdCBjb2RlIGxlbmZpeFs1MTJdID0geworICAgICAgICB7OTYsNywwfSx7MCw4LDgwfSx7MCw4LDE2fSx7MjAsOCwxMTV9LHsxOCw3LDMxfSx7MCw4LDExMn0sezAsOCw0OH0sCisgICAgICAgIHswLDksMTkyfSx7MTYsNywxMH0sezAsOCw5Nn0sezAsOCwzMn0sezAsOSwxNjB9LHswLDgsMH0sezAsOCwxMjh9LAorICAgICAgICB7MCw4LDY0fSx7MCw5LDIyNH0sezE2LDcsNn0sezAsOCw4OH0sezAsOCwyNH0sezAsOSwxNDR9LHsxOSw3LDU5fSwKKyAgICAgICAgezAsOCwxMjB9LHswLDgsNTZ9LHswLDksMjA4fSx7MTcsNywxN30sezAsOCwxMDR9LHswLDgsNDB9LHswLDksMTc2fSwKKyAgICAgICAgezAsOCw4fSx7MCw4LDEzNn0sezAsOCw3Mn0sezAsOSwyNDB9LHsxNiw3LDR9LHswLDgsODR9LHswLDgsMjB9LAorICAgICAgICB7MjEsOCwyMjd9LHsxOSw3LDQzfSx7MCw4LDExNn0sezAsOCw1Mn0sezAsOSwyMDB9LHsxNyw3LDEzfSx7MCw4LDEwMH0sCisgICAgICAgIHswLDgsMzZ9LHswLDksMTY4fSx7MCw4LDR9LHswLDgsMTMyfSx7MCw4LDY4fSx7MCw5LDIzMn0sezE2LDcsOH0sCisgICAgICAgIHswLDgsOTJ9LHswLDgsMjh9LHswLDksMTUyfSx7MjAsNyw4M30sezAsOCwxMjR9LHswLDgsNjB9LHswLDksMjE2fSwKKyAgICAgICAgezE4LDcsMjN9LHswLDgsMTA4fSx7MCw4LDQ0fSx7MCw5LDE4NH0sezAsOCwxMn0sezAsOCwxNDB9LHswLDgsNzZ9LAorICAgICAgICB7MCw5LDI0OH0sezE2LDcsM30sezAsOCw4Mn0sezAsOCwxOH0sezIxLDgsMTYzfSx7MTksNywzNX0sezAsOCwxMTR9LAorICAgICAgICB7MCw4LDUwfSx7MCw5LDE5Nn0sezE3LDcsMTF9LHswLDgsOTh9LHswLDgsMzR9LHswLDksMTY0fSx7MCw4LDJ9LAorICAgICAgICB7MCw4LDEzMH0sezAsOCw2Nn0sezAsOSwyMjh9LHsxNiw3LDd9LHswLDgsOTB9LHswLDgsMjZ9LHswLDksMTQ4fSwKKyAgICAgICAgezIwLDcsNjd9LHswLDgsMTIyfSx7MCw4LDU4fSx7MCw5LDIxMn0sezE4LDcsMTl9LHswLDgsMTA2fSx7MCw4LDQyfSwKKyAgICAgICAgezAsOSwxODB9LHswLDgsMTB9LHswLDgsMTM4fSx7MCw4LDc0fSx7MCw5LDI0NH0sezE2LDcsNX0sezAsOCw4Nn0sCisgICAgICAgIHswLDgsMjJ9LHs2NCw4LDB9LHsxOSw3LDUxfSx7MCw4LDExOH0sezAsOCw1NH0sezAsOSwyMDR9LHsxNyw3LDE1fSwKKyAgICAgICAgezAsOCwxMDJ9LHswLDgsMzh9LHswLDksMTcyfSx7MCw4LDZ9LHswLDgsMTM0fSx7MCw4LDcwfSx7MCw5LDIzNn0sCisgICAgICAgIHsxNiw3LDl9LHswLDgsOTR9LHswLDgsMzB9LHswLDksMTU2fSx7MjAsNyw5OX0sezAsOCwxMjZ9LHswLDgsNjJ9LAorICAgICAgICB7MCw5LDIyMH0sezE4LDcsMjd9LHswLDgsMTEwfSx7MCw4LDQ2fSx7MCw5LDE4OH0sezAsOCwxNH0sezAsOCwxNDJ9LAorICAgICAgICB7MCw4LDc4fSx7MCw5LDI1Mn0sezk2LDcsMH0sezAsOCw4MX0sezAsOCwxN30sezIxLDgsMTMxfSx7MTgsNywzMX0sCisgICAgICAgIHswLDgsMTEzfSx7MCw4LDQ5fSx7MCw5LDE5NH0sezE2LDcsMTB9LHswLDgsOTd9LHswLDgsMzN9LHswLDksMTYyfSwKKyAgICAgICAgezAsOCwxfSx7MCw4LDEyOX0sezAsOCw2NX0sezAsOSwyMjZ9LHsxNiw3LDZ9LHswLDgsODl9LHswLDgsMjV9LAorICAgICAgICB7MCw5LDE0Nn0sezE5LDcsNTl9LHswLDgsMTIxfSx7MCw4LDU3fSx7MCw5LDIxMH0sezE3LDcsMTd9LHswLDgsMTA1fSwKKyAgICAgICAgezAsOCw0MX0sezAsOSwxNzh9LHswLDgsOX0sezAsOCwxMzd9LHswLDgsNzN9LHswLDksMjQyfSx7MTYsNyw0fSwKKyAgICAgICAgezAsOCw4NX0sezAsOCwyMX0sezE2LDgsMjU4fSx7MTksNyw0M30sezAsOCwxMTd9LHswLDgsNTN9LHswLDksMjAyfSwKKyAgICAgICAgezE3LDcsMTN9LHswLDgsMTAxfSx7MCw4LDM3fSx7MCw5LDE3MH0sezAsOCw1fSx7MCw4LDEzM30sezAsOCw2OX0sCisgICAgICAgIHswLDksMjM0fSx7MTYsNyw4fSx7MCw4LDkzfSx7MCw4LDI5fSx7MCw5LDE1NH0sezIwLDcsODN9LHswLDgsMTI1fSwKKyAgICAgICAgezAsOCw2MX0sezAsOSwyMTh9LHsxOCw3LDIzfSx7MCw4LDEwOX0sezAsOCw0NX0sezAsOSwxODZ9LHswLDgsMTN9LAorICAgICAgICB7MCw4LDE0MX0sezAsOCw3N30sezAsOSwyNTB9LHsxNiw3LDN9LHswLDgsODN9LHswLDgsMTl9LHsyMSw4LDE5NX0sCisgICAgICAgIHsxOSw3LDM1fSx7MCw4LDExNX0sezAsOCw1MX0sezAsOSwxOTh9LHsxNyw3LDExfSx7MCw4LDk5fSx7MCw4LDM1fSwKKyAgICAgICAgezAsOSwxNjZ9LHswLDgsM30sezAsOCwxMzF9LHswLDgsNjd9LHswLDksMjMwfSx7MTYsNyw3fSx7MCw4LDkxfSwKKyAgICAgICAgezAsOCwyN30sezAsOSwxNTB9LHsyMCw3LDY3fSx7MCw4LDEyM30sezAsOCw1OX0sezAsOSwyMTR9LHsxOCw3LDE5fSwKKyAgICAgICAgezAsOCwxMDd9LHswLDgsNDN9LHswLDksMTgyfSx7MCw4LDExfSx7MCw4LDEzOX0sezAsOCw3NX0sezAsOSwyNDZ9LAorICAgICAgICB7MTYsNyw1fSx7MCw4LDg3fSx7MCw4LDIzfSx7NjQsOCwwfSx7MTksNyw1MX0sezAsOCwxMTl9LHswLDgsNTV9LAorICAgICAgICB7MCw5LDIwNn0sezE3LDcsMTV9LHswLDgsMTAzfSx7MCw4LDM5fSx7MCw5LDE3NH0sezAsOCw3fSx7MCw4LDEzNX0sCisgICAgICAgIHswLDgsNzF9LHswLDksMjM4fSx7MTYsNyw5fSx7MCw4LDk1fSx7MCw4LDMxfSx7MCw5LDE1OH0sezIwLDcsOTl9LAorICAgICAgICB7MCw4LDEyN30sezAsOCw2M30sezAsOSwyMjJ9LHsxOCw3LDI3fSx7MCw4LDExMX0sezAsOCw0N30sezAsOSwxOTB9LAorICAgICAgICB7MCw4LDE1fSx7MCw4LDE0M30sezAsOCw3OX0sezAsOSwyNTR9LHs5Niw3LDB9LHswLDgsODB9LHswLDgsMTZ9LAorICAgICAgICB7MjAsOCwxMTV9LHsxOCw3LDMxfSx7MCw4LDExMn0sezAsOCw0OH0sezAsOSwxOTN9LHsxNiw3LDEwfSx7MCw4LDk2fSwKKyAgICAgICAgezAsOCwzMn0sezAsOSwxNjF9LHswLDgsMH0sezAsOCwxMjh9LHswLDgsNjR9LHswLDksMjI1fSx7MTYsNyw2fSwKKyAgICAgICAgezAsOCw4OH0sezAsOCwyNH0sezAsOSwxNDV9LHsxOSw3LDU5fSx7MCw4LDEyMH0sezAsOCw1Nn0sezAsOSwyMDl9LAorICAgICAgICB7MTcsNywxN30sezAsOCwxMDR9LHswLDgsNDB9LHswLDksMTc3fSx7MCw4LDh9LHswLDgsMTM2fSx7MCw4LDcyfSwKKyAgICAgICAgezAsOSwyNDF9LHsxNiw3LDR9LHswLDgsODR9LHswLDgsMjB9LHsyMSw4LDIyN30sezE5LDcsNDN9LHswLDgsMTE2fSwKKyAgICAgICAgezAsOCw1Mn0sezAsOSwyMDF9LHsxNyw3LDEzfSx7MCw4LDEwMH0sezAsOCwzNn0sezAsOSwxNjl9LHswLDgsNH0sCisgICAgICAgIHswLDgsMTMyfSx7MCw4LDY4fSx7MCw5LDIzM30sezE2LDcsOH0sezAsOCw5Mn0sezAsOCwyOH0sezAsOSwxNTN9LAorICAgICAgICB7MjAsNyw4M30sezAsOCwxMjR9LHswLDgsNjB9LHswLDksMjE3fSx7MTgsNywyM30sezAsOCwxMDh9LHswLDgsNDR9LAorICAgICAgICB7MCw5LDE4NX0sezAsOCwxMn0sezAsOCwxNDB9LHswLDgsNzZ9LHswLDksMjQ5fSx7MTYsNywzfSx7MCw4LDgyfSwKKyAgICAgICAgezAsOCwxOH0sezIxLDgsMTYzfSx7MTksNywzNX0sezAsOCwxMTR9LHswLDgsNTB9LHswLDksMTk3fSx7MTcsNywxMX0sCisgICAgICAgIHswLDgsOTh9LHswLDgsMzR9LHswLDksMTY1fSx7MCw4LDJ9LHswLDgsMTMwfSx7MCw4LDY2fSx7MCw5LDIyOX0sCisgICAgICAgIHsxNiw3LDd9LHswLDgsOTB9LHswLDgsMjZ9LHswLDksMTQ5fSx7MjAsNyw2N30sezAsOCwxMjJ9LHswLDgsNTh9LAorICAgICAgICB7MCw5LDIxM30sezE4LDcsMTl9LHswLDgsMTA2fSx7MCw4LDQyfSx7MCw5LDE4MX0sezAsOCwxMH0sezAsOCwxMzh9LAorICAgICAgICB7MCw4LDc0fSx7MCw5LDI0NX0sezE2LDcsNX0sezAsOCw4Nn0sezAsOCwyMn0sezY0LDgsMH0sezE5LDcsNTF9LAorICAgICAgICB7MCw4LDExOH0sezAsOCw1NH0sezAsOSwyMDV9LHsxNyw3LDE1fSx7MCw4LDEwMn0sezAsOCwzOH0sezAsOSwxNzN9LAorICAgICAgICB7MCw4LDZ9LHswLDgsMTM0fSx7MCw4LDcwfSx7MCw5LDIzN30sezE2LDcsOX0sezAsOCw5NH0sezAsOCwzMH0sCisgICAgICAgIHswLDksMTU3fSx7MjAsNyw5OX0sezAsOCwxMjZ9LHswLDgsNjJ9LHswLDksMjIxfSx7MTgsNywyN30sezAsOCwxMTB9LAorICAgICAgICB7MCw4LDQ2fSx7MCw5LDE4OX0sezAsOCwxNH0sezAsOCwxNDJ9LHswLDgsNzh9LHswLDksMjUzfSx7OTYsNywwfSwKKyAgICAgICAgezAsOCw4MX0sezAsOCwxN30sezIxLDgsMTMxfSx7MTgsNywzMX0sezAsOCwxMTN9LHswLDgsNDl9LHswLDksMTk1fSwKKyAgICAgICAgezE2LDcsMTB9LHswLDgsOTd9LHswLDgsMzN9LHswLDksMTYzfSx7MCw4LDF9LHswLDgsMTI5fSx7MCw4LDY1fSwKKyAgICAgICAgezAsOSwyMjd9LHsxNiw3LDZ9LHswLDgsODl9LHswLDgsMjV9LHswLDksMTQ3fSx7MTksNyw1OX0sezAsOCwxMjF9LAorICAgICAgICB7MCw4LDU3fSx7MCw5LDIxMX0sezE3LDcsMTd9LHswLDgsMTA1fSx7MCw4LDQxfSx7MCw5LDE3OX0sezAsOCw5fSwKKyAgICAgICAgezAsOCwxMzd9LHswLDgsNzN9LHswLDksMjQzfSx7MTYsNyw0fSx7MCw4LDg1fSx7MCw4LDIxfSx7MTYsOCwyNTh9LAorICAgICAgICB7MTksNyw0M30sezAsOCwxMTd9LHswLDgsNTN9LHswLDksMjAzfSx7MTcsNywxM30sezAsOCwxMDF9LHswLDgsMzd9LAorICAgICAgICB7MCw5LDE3MX0sezAsOCw1fSx7MCw4LDEzM30sezAsOCw2OX0sezAsOSwyMzV9LHsxNiw3LDh9LHswLDgsOTN9LAorICAgICAgICB7MCw4LDI5fSx7MCw5LDE1NX0sezIwLDcsODN9LHswLDgsMTI1fSx7MCw4LDYxfSx7MCw5LDIxOX0sezE4LDcsMjN9LAorICAgICAgICB7MCw4LDEwOX0sezAsOCw0NX0sezAsOSwxODd9LHswLDgsMTN9LHswLDgsMTQxfSx7MCw4LDc3fSx7MCw5LDI1MX0sCisgICAgICAgIHsxNiw3LDN9LHswLDgsODN9LHswLDgsMTl9LHsyMSw4LDE5NX0sezE5LDcsMzV9LHswLDgsMTE1fSx7MCw4LDUxfSwKKyAgICAgICAgezAsOSwxOTl9LHsxNyw3LDExfSx7MCw4LDk5fSx7MCw4LDM1fSx7MCw5LDE2N30sezAsOCwzfSx7MCw4LDEzMX0sCisgICAgICAgIHswLDgsNjd9LHswLDksMjMxfSx7MTYsNyw3fSx7MCw4LDkxfSx7MCw4LDI3fSx7MCw5LDE1MX0sezIwLDcsNjd9LAorICAgICAgICB7MCw4LDEyM30sezAsOCw1OX0sezAsOSwyMTV9LHsxOCw3LDE5fSx7MCw4LDEwN30sezAsOCw0M30sezAsOSwxODN9LAorICAgICAgICB7MCw4LDExfSx7MCw4LDEzOX0sezAsOCw3NX0sezAsOSwyNDd9LHsxNiw3LDV9LHswLDgsODd9LHswLDgsMjN9LAorICAgICAgICB7NjQsOCwwfSx7MTksNyw1MX0sezAsOCwxMTl9LHswLDgsNTV9LHswLDksMjA3fSx7MTcsNywxNX0sezAsOCwxMDN9LAorICAgICAgICB7MCw4LDM5fSx7MCw5LDE3NX0sezAsOCw3fSx7MCw4LDEzNX0sezAsOCw3MX0sezAsOSwyMzl9LHsxNiw3LDl9LAorICAgICAgICB7MCw4LDk1fSx7MCw4LDMxfSx7MCw5LDE1OX0sezIwLDcsOTl9LHswLDgsMTI3fSx7MCw4LDYzfSx7MCw5LDIyM30sCisgICAgICAgIHsxOCw3LDI3fSx7MCw4LDExMX0sezAsOCw0N30sezAsOSwxOTF9LHswLDgsMTV9LHswLDgsMTQzfSx7MCw4LDc5fSwKKyAgICAgICAgezAsOSwyNTV9CisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCBjb2RlIGRpc3RmaXhbMzJdID0geworICAgICAgICB7MTYsNSwxfSx7MjMsNSwyNTd9LHsxOSw1LDE3fSx7MjcsNSw0MDk3fSx7MTcsNSw1fSx7MjUsNSwxMDI1fSwKKyAgICAgICAgezIxLDUsNjV9LHsyOSw1LDE2Mzg1fSx7MTYsNSwzfSx7MjQsNSw1MTN9LHsyMCw1LDMzfSx7MjgsNSw4MTkzfSwKKyAgICAgICAgezE4LDUsOX0sezI2LDUsMjA0OX0sezIyLDUsMTI5fSx7NjQsNSwwfSx7MTYsNSwyfSx7MjMsNSwzODV9LAorICAgICAgICB7MTksNSwyNX0sezI3LDUsNjE0NX0sezE3LDUsN30sezI1LDUsMTUzN30sezIxLDUsOTd9LHsyOSw1LDI0NTc3fSwKKyAgICAgICAgezE2LDUsNH0sezI0LDUsNzY5fSx7MjAsNSw0OX0sezI4LDUsMTIyODl9LHsxOCw1LDEzfSx7MjYsNSwzMDczfSwKKyAgICAgICAgezIyLDUsMTkzfSx7NjQsNSwwfQorICAgIH07CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2luZmxhdGUuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvaW5mbGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZjQ5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2luZmxhdGUuaApAQCAtMCwwICsxLDEyMiBAQAorLyogaW5mbGF0ZS5oIC0tIGludGVybmFsIGluZmxhdGUgc3RhdGUgZGVmaW5pdGlvbgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDkgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKy8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuIEl0IGlzCisgICBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSBhbmQgaXMKKyAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KKyAqLworCisvKiBkZWZpbmUgTk9fR1pJUCB3aGVuIGNvbXBpbGluZyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIGd6aXAgaGVhZGVyIGFuZAorICAgdHJhaWxlciBkZWNvZGluZyBieSBpbmZsYXRlKCkuICBOT19HWklQIHdvdWxkIGJlIHVzZWQgdG8gYXZvaWQgbGlua2luZyBpbgorICAgdGhlIGNyYyBjb2RlIHdoZW4gaXQgaXMgbm90IG5lZWRlZC4gIEZvciBzaGFyZWQgbGlicmFyaWVzLCBnemlwIGRlY29kaW5nCisgICBzaG91bGQgYmUgbGVmdCBlbmFibGVkLiAqLworI2lmbmRlZiBOT19HWklQCisjICBkZWZpbmUgR1VOWklQCisjZW5kaWYKKworLyogUG9zc2libGUgaW5mbGF0ZSBtb2RlcyBiZXR3ZWVuIGluZmxhdGUoKSBjYWxscyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBIRUFELCAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBtYWdpYyBoZWFkZXIgKi8KKyAgICBGTEFHUywgICAgICAvKiBpOiB3YWl0aW5nIGZvciBtZXRob2QgYW5kIGZsYWdzIChnemlwKSAqLworICAgIFRJTUUsICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1vZGlmaWNhdGlvbiB0aW1lIChnemlwKSAqLworICAgIE9TLCAgICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGV4dHJhIGZsYWdzIGFuZCBvcGVyYXRpbmcgc3lzdGVtIChnemlwKSAqLworICAgIEVYTEVOLCAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGV4dHJhIGxlbmd0aCAoZ3ppcCkgKi8KKyAgICBFWFRSQSwgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBieXRlcyAoZ3ppcCkgKi8KKyAgICBOQU1FLCAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBlbmQgb2YgZmlsZSBuYW1lIChnemlwKSAqLworICAgIENPTU1FTlQsICAgIC8qIGk6IHdhaXRpbmcgZm9yIGVuZCBvZiBjb21tZW50IChnemlwKSAqLworICAgIEhDUkMsICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGhlYWRlciBjcmMgKGd6aXApICovCisgICAgRElDVElELCAgICAgLyogaTogd2FpdGluZyBmb3IgZGljdGlvbmFyeSBjaGVjayB2YWx1ZSAqLworICAgIERJQ1QsICAgICAgIC8qIHdhaXRpbmcgZm9yIGluZmxhdGVTZXREaWN0aW9uYXJ5KCkgY2FsbCAqLworICAgICAgICBUWVBFLCAgICAgICAvKiBpOiB3YWl0aW5nIGZvciB0eXBlIGJpdHMsIGluY2x1ZGluZyBsYXN0LWZsYWcgYml0ICovCisgICAgICAgIFRZUEVETywgICAgIC8qIGk6IHNhbWUsIGJ1dCBza2lwIGNoZWNrIHRvIGV4aXQgaW5mbGF0ZSBvbiBuZXcgYmxvY2sgKi8KKyAgICAgICAgU1RPUkVELCAgICAgLyogaTogd2FpdGluZyBmb3Igc3RvcmVkIHNpemUgKGxlbmd0aCBhbmQgY29tcGxlbWVudCkgKi8KKyAgICAgICAgQ09QWV8sICAgICAgLyogaS9vOiBzYW1lIGFzIENPUFkgYmVsb3csIGJ1dCBvbmx5IGZpcnN0IHRpbWUgaW4gKi8KKyAgICAgICAgQ09QWSwgICAgICAgLyogaS9vOiB3YWl0aW5nIGZvciBpbnB1dCBvciBvdXRwdXQgdG8gY29weSBzdG9yZWQgYmxvY2sgKi8KKyAgICAgICAgVEFCTEUsICAgICAgLyogaTogd2FpdGluZyBmb3IgZHluYW1pYyBibG9jayB0YWJsZSBsZW5ndGhzICovCisgICAgICAgIExFTkxFTlMsICAgIC8qIGk6IHdhaXRpbmcgZm9yIGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqLworICAgICAgICBDT0RFTEVOUywgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGgvbGl0IGFuZCBkaXN0YW5jZSBjb2RlIGxlbmd0aHMgKi8KKyAgICAgICAgICAgIExFTl8sICAgICAgIC8qIGk6IHNhbWUgYXMgTEVOIGJlbG93LCBidXQgb25seSBmaXJzdCB0aW1lIGluICovCisgICAgICAgICAgICBMRU4sICAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGgvbGl0L2VvYiBjb2RlICovCisgICAgICAgICAgICBMRU5FWFQsICAgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGggZXh0cmEgYml0cyAqLworICAgICAgICAgICAgRElTVCwgICAgICAgLyogaTogd2FpdGluZyBmb3IgZGlzdGFuY2UgY29kZSAqLworICAgICAgICAgICAgRElTVEVYVCwgICAgLyogaTogd2FpdGluZyBmb3IgZGlzdGFuY2UgZXh0cmEgYml0cyAqLworICAgICAgICAgICAgTUFUQ0gsICAgICAgLyogbzogd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlIHRvIGNvcHkgc3RyaW5nICovCisgICAgICAgICAgICBMSVQsICAgICAgICAvKiBvOiB3YWl0aW5nIGZvciBvdXRwdXQgc3BhY2UgdG8gd3JpdGUgbGl0ZXJhbCAqLworICAgIENIRUNLLCAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBjaGVjayB2YWx1ZSAqLworICAgIExFTkdUSCwgICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBsZW5ndGggKGd6aXApICovCisgICAgRE9ORSwgICAgICAgLyogZmluaXNoZWQgY2hlY2ssIGRvbmUgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi8KKyAgICBCQUQsICAgICAgICAvKiBnb3QgYSBkYXRhIGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovCisgICAgTUVNLCAgICAgICAgLyogZ290IGFuIGluZmxhdGUoKSBtZW1vcnkgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi8KKyAgICBTWU5DICAgICAgICAvKiBsb29raW5nIGZvciBzeW5jaHJvbml6YXRpb24gYnl0ZXMgdG8gcmVzdGFydCBpbmZsYXRlKCkgKi8KK30gaW5mbGF0ZV9tb2RlOworCisvKgorICAgIFN0YXRlIHRyYW5zaXRpb25zIGJldHdlZW4gYWJvdmUgbW9kZXMgLQorCisgICAgKG1vc3QgbW9kZXMgY2FuIGdvIHRvIEJBRCBvciBNRU0gb24gZXJyb3IgLS0gbm90IHNob3duIGZvciBjbGFyaXR5KQorCisgICAgUHJvY2VzcyBoZWFkZXI6CisgICAgICAgIEhFQUQgLT4gKGd6aXApIG9yICh6bGliKSBvciAocmF3KQorICAgICAgICAoZ3ppcCkgLT4gRkxBR1MgLT4gVElNRSAtPiBPUyAtPiBFWExFTiAtPiBFWFRSQSAtPiBOQU1FIC0+IENPTU1FTlQgLT4KKyAgICAgICAgICAgICAgICAgIEhDUkMgLT4gVFlQRQorICAgICAgICAoemxpYikgLT4gRElDVElEIG9yIFRZUEUKKyAgICAgICAgRElDVElEIC0+IERJQ1QgLT4gVFlQRQorICAgICAgICAocmF3KSAtPiBUWVBFRE8KKyAgICBSZWFkIGRlZmxhdGUgYmxvY2tzOgorICAgICAgICAgICAgVFlQRSAtPiBUWVBFRE8gLT4gU1RPUkVEIG9yIFRBQkxFIG9yIExFTl8gb3IgQ0hFQ0sKKyAgICAgICAgICAgIFNUT1JFRCAtPiBDT1BZXyAtPiBDT1BZIC0+IFRZUEUKKyAgICAgICAgICAgIFRBQkxFIC0+IExFTkxFTlMgLT4gQ09ERUxFTlMgLT4gTEVOXworICAgICAgICAgICAgTEVOXyAtPiBMRU4KKyAgICBSZWFkIGRlZmxhdGUgY29kZXMgaW4gZml4ZWQgb3IgZHluYW1pYyBibG9jazoKKyAgICAgICAgICAgICAgICBMRU4gLT4gTEVORVhUIG9yIExJVCBvciBUWVBFCisgICAgICAgICAgICAgICAgTEVORVhUIC0+IERJU1QgLT4gRElTVEVYVCAtPiBNQVRDSCAtPiBMRU4KKyAgICAgICAgICAgICAgICBMSVQgLT4gTEVOCisgICAgUHJvY2VzcyB0cmFpbGVyOgorICAgICAgICBDSEVDSyAtPiBMRU5HVEggLT4gRE9ORQorICovCisKKy8qIHN0YXRlIG1haW50YWluZWQgYmV0d2VlbiBpbmZsYXRlKCkgY2FsbHMuICBBcHByb3hpbWF0ZWx5IDEwSyBieXRlcy4gKi8KK3N0cnVjdCBpbmZsYXRlX3N0YXRlIHsKKyAgICBpbmZsYXRlX21vZGUgbW9kZTsgICAgICAgICAgLyogY3VycmVudCBpbmZsYXRlIG1vZGUgKi8KKyAgICBpbnQgbGFzdDsgICAgICAgICAgICAgICAgICAgLyogdHJ1ZSBpZiBwcm9jZXNzaW5nIGxhc3QgYmxvY2sgKi8KKyAgICBpbnQgd3JhcDsgICAgICAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqLworICAgIGludCBoYXZlZGljdDsgICAgICAgICAgICAgICAvKiB0cnVlIGlmIGRpY3Rpb25hcnkgcHJvdmlkZWQgKi8KKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgICAgLyogZ3ppcCBoZWFkZXIgbWV0aG9kIGFuZCBmbGFncyAoMCBpZiB6bGliKSAqLworICAgIHVuc2lnbmVkIGRtYXg7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRlciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqLworICAgIHVuc2lnbmVkIGxvbmcgY2hlY2s7ICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBjaGVjayB2YWx1ZSAqLworICAgIHVuc2lnbmVkIGxvbmcgdG90YWw7ICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBvdXRwdXQgY291bnQgKi8KKyAgICBnel9oZWFkZXJwIGhlYWQ7ICAgICAgICAgICAgLyogd2hlcmUgdG8gc2F2ZSBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiAqLworICAgICAgICAvKiBzbGlkaW5nIHdpbmRvdyAqLworICAgIHVuc2lnbmVkIHdiaXRzOyAgICAgICAgICAgICAvKiBsb2cgYmFzZSAyIG9mIHJlcXVlc3RlZCB3aW5kb3cgc2l6ZSAqLworICAgIHVuc2lnbmVkIHdzaXplOyAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi8KKyAgICB1bnNpZ25lZCB3aGF2ZTsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqLworICAgIHVuc2lnbmVkIHduZXh0OyAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi8KKyAgICB1bnNpZ25lZCBjaGFyIEZBUiAqd2luZG93OyAgLyogYWxsb2NhdGVkIHNsaWRpbmcgd2luZG93LCBpZiBuZWVkZWQgKi8KKyAgICAgICAgLyogYml0IGFjY3VtdWxhdG9yICovCisgICAgdW5zaWduZWQgbG9uZyBob2xkOyAgICAgICAgIC8qIGlucHV0IGJpdCBhY2N1bXVsYXRvciAqLworICAgIHVuc2lnbmVkIGJpdHM7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBpbiAiaW4iICovCisgICAgICAgIC8qIGZvciBzdHJpbmcgYW5kIHN0b3JlZCBibG9jayBjb3B5aW5nICovCisgICAgdW5zaWduZWQgbGVuZ3RoOyAgICAgICAgICAgIC8qIGxpdGVyYWwgb3IgbGVuZ3RoIG9mIGRhdGEgdG8gY29weSAqLworICAgIHVuc2lnbmVkIG9mZnNldDsgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYWNrIHRvIGNvcHkgc3RyaW5nIGZyb20gKi8KKyAgICAgICAgLyogZm9yIHRhYmxlIGFuZCBjb2RlIGRlY29kaW5nICovCisgICAgdW5zaWduZWQgZXh0cmE7ICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgbmVlZGVkICovCisgICAgICAgIC8qIGZpeGVkIGFuZCBkeW5hbWljIGNvZGUgdGFibGVzICovCisgICAgY29kZSBjb25zdCBGQVIgKmxlbmNvZGU7ICAgIC8qIHN0YXJ0aW5nIHRhYmxlIGZvciBsZW5ndGgvbGl0ZXJhbCBjb2RlcyAqLworICAgIGNvZGUgY29uc3QgRkFSICpkaXN0Y29kZTsgICAvKiBzdGFydGluZyB0YWJsZSBmb3IgZGlzdGFuY2UgY29kZXMgKi8KKyAgICB1bnNpZ25lZCBsZW5iaXRzOyAgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgbGVuY29kZSAqLworICAgIHVuc2lnbmVkIGRpc3RiaXRzOyAgICAgICAgICAvKiBpbmRleCBiaXRzIGZvciBkaXN0Y29kZSAqLworICAgICAgICAvKiBkeW5hbWljIHRhYmxlIGJ1aWxkaW5nICovCisgICAgdW5zaWduZWQgbmNvZGU7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCBubGVuOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCBuZGlzdDsgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGUgbGVuZ3RocyAqLworICAgIHVuc2lnbmVkIGhhdmU7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGhzIGluIGxlbnNbXSAqLworICAgIGNvZGUgRkFSICpuZXh0OyAgICAgICAgICAgICAvKiBuZXh0IGF2YWlsYWJsZSBzcGFjZSBpbiBjb2Rlc1tdICovCisgICAgdW5zaWduZWQgc2hvcnQgbGVuc1szMjBdOyAgIC8qIHRlbXBvcmFyeSBzdG9yYWdlIGZvciBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCBzaG9ydCB3b3JrWzI4OF07ICAgLyogd29yayBhcmVhIGZvciBjb2RlIHRhYmxlIGJ1aWxkaW5nICovCisgICAgY29kZSBjb2Rlc1tFTk9VR0hdOyAgICAgICAgIC8qIHNwYWNlIGZvciBjb2RlIHRhYmxlcyAqLworICAgIGludCBzYW5lOyAgICAgICAgICAgICAgICAgICAvKiBpZiBmYWxzZSwgYWxsb3cgaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyICovCisgICAgaW50IGJhY2s7ICAgICAgICAgICAgICAgICAgIC8qIGJpdHMgYmFjayBvZiBsYXN0IHVucHJvY2Vzc2VkIGxlbmd0aC9saXQgKi8KKyAgICB1bnNpZ25lZCB3YXM7ICAgICAgICAgICAgICAgLyogaW5pdGlhbCBsZW5ndGggb2YgbWF0Y2ggKi8KK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2luZnRyZWVzLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L2luZnRyZWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFhNTNhMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvaW5mdHJlZXMuaApAQCAtMCwwICsxLDYyIEBACisvKiBpbmZ0cmVlcy5oIC0tIGhlYWRlciB0byB1c2UgaW5mdHJlZXMuYworICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUsIDIwMTAgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKy8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuIEl0IGlzCisgICBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSBhbmQgaXMKKyAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KKyAqLworCisvKiBTdHJ1Y3R1cmUgZm9yIGRlY29kaW5nIHRhYmxlcy4gIEVhY2ggZW50cnkgcHJvdmlkZXMgZWl0aGVyIHRoZQorICAgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGRvIHRoZSBvcGVyYXRpb24gcmVxdWVzdGVkIGJ5IHRoZSBjb2RlIHRoYXQKKyAgIGluZGV4ZWQgdGhhdCB0YWJsZSBlbnRyeSwgb3IgaXQgcHJvdmlkZXMgYSBwb2ludGVyIHRvIGFub3RoZXIKKyAgIHRhYmxlIHRoYXQgaW5kZXhlcyBtb3JlIGJpdHMgb2YgdGhlIGNvZGUuICBvcCBpbmRpY2F0ZXMgd2hldGhlcgorICAgdGhlIGVudHJ5IGlzIGEgcG9pbnRlciB0byBhbm90aGVyIHRhYmxlLCBhIGxpdGVyYWwsIGEgbGVuZ3RoIG9yCisgICBkaXN0YW5jZSwgYW4gZW5kLW9mLWJsb2NrLCBvciBhbiBpbnZhbGlkIGNvZGUuICBGb3IgYSB0YWJsZQorICAgcG9pbnRlciwgdGhlIGxvdyBmb3VyIGJpdHMgb2Ygb3AgaXMgdGhlIG51bWJlciBvZiBpbmRleCBiaXRzIG9mCisgICB0aGF0IHRhYmxlLiAgRm9yIGEgbGVuZ3RoIG9yIGRpc3RhbmNlLCB0aGUgbG93IGZvdXIgYml0cyBvZiBvcAorICAgaXMgdGhlIG51bWJlciBvZiBleHRyYSBiaXRzIHRvIGdldCBhZnRlciB0aGUgY29kZS4gIGJpdHMgaXMKKyAgIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGlzIGNvZGUgb3IgcGFydCBvZiB0aGUgY29kZSB0byBkcm9wIG9mZgorICAgb2YgdGhlIGJpdCBidWZmZXIuICB2YWwgaXMgdGhlIGFjdHVhbCBieXRlIHRvIG91dHB1dCBpbiB0aGUgY2FzZQorICAgb2YgYSBsaXRlcmFsLCB0aGUgYmFzZSBsZW5ndGggb3IgZGlzdGFuY2UsIG9yIHRoZSBvZmZzZXQgZnJvbQorICAgdGhlIGN1cnJlbnQgdGFibGUgdG8gdGhlIG5leHQgdGFibGUuICBFYWNoIGVudHJ5IGlzIGZvdXIgYnl0ZXMuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgY2hhciBvcDsgICAgICAgICAgIC8qIG9wZXJhdGlvbiwgZXh0cmEgYml0cywgdGFibGUgYml0cyAqLworICAgIHVuc2lnbmVkIGNoYXIgYml0czsgICAgICAgICAvKiBiaXRzIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZSAqLworICAgIHVuc2lnbmVkIHNob3J0IHZhbDsgICAgICAgICAvKiBvZmZzZXQgaW4gdGFibGUgb3IgY29kZSB2YWx1ZSAqLworfSBjb2RlOworCisvKiBvcCB2YWx1ZXMgYXMgc2V0IGJ5IGluZmxhdGVfdGFibGUoKToKKyAgICAwMDAwMDAwMCAtIGxpdGVyYWwKKyAgICAwMDAwdHR0dCAtIHRhYmxlIGxpbmssIHR0dHQgIT0gMCBpcyB0aGUgbnVtYmVyIG9mIHRhYmxlIGluZGV4IGJpdHMKKyAgICAwMDAxZWVlZSAtIGxlbmd0aCBvciBkaXN0YW5jZSwgZWVlZSBpcyB0aGUgbnVtYmVyIG9mIGV4dHJhIGJpdHMKKyAgICAwMTEwMDAwMCAtIGVuZCBvZiBibG9jaworICAgIDAxMDAwMDAwIC0gaW52YWxpZCBjb2RlCisgKi8KKworLyogTWF4aW11bSBzaXplIG9mIHRoZSBkeW5hbWljIHRhYmxlLiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvZGUgc3RydWN0dXJlcyBpcworICAgMTQ0NCwgd2hpY2ggaXMgdGhlIHN1bSBvZiA4NTIgZm9yIGxpdGVyYWwvbGVuZ3RoIGNvZGVzIGFuZCA1OTIgZm9yIGRpc3RhbmNlCisgICBjb2Rlcy4gIFRoZXNlIHZhbHVlcyB3ZXJlIGZvdW5kIGJ5IGV4aGF1c3RpdmUgc2VhcmNoZXMgdXNpbmcgdGhlIHByb2dyYW0KKyAgIGV4YW1wbGVzL2Vub3VnaC5jIGZvdW5kIGluIHRoZSB6bGliIGRpc3RyaWJ0dXRpb24uICBUaGUgYXJndW1lbnRzIHRvIHRoYXQKKyAgIHByb2dyYW0gYXJlIHRoZSBudW1iZXIgb2Ygc3ltYm9scywgdGhlIGluaXRpYWwgcm9vdCB0YWJsZSBzaXplLCBhbmQgdGhlCisgICBtYXhpbXVtIGJpdCBsZW5ndGggb2YgYSBjb2RlLiAgImVub3VnaCAyODYgOSAxNSIgZm9yIGxpdGVyYWwvbGVuZ3RoIGNvZGVzCisgICByZXR1cm5zIHJldHVybnMgODUyLCBhbmQgImVub3VnaCAzMCA2IDE1IiBmb3IgZGlzdGFuY2UgY29kZXMgcmV0dXJucyA1OTIuCisgICBUaGUgaW5pdGlhbCByb290IHRhYmxlIHNpemUgKDkgb3IgNikgaXMgZm91bmQgaW4gdGhlIGZpZnRoIGFyZ3VtZW50IG9mIHRoZQorICAgaW5mbGF0ZV90YWJsZSgpIGNhbGxzIGluIGluZmxhdGUuYyBhbmQgaW5mYmFjay5jLiAgSWYgdGhlIHJvb3QgdGFibGUgc2l6ZSBpcworICAgY2hhbmdlZCwgdGhlbiB0aGVzZSBtYXhpbXVtIHNpemVzIHdvdWxkIGJlIG5lZWQgdG8gYmUgcmVjYWxjdWxhdGVkIGFuZAorICAgdXBkYXRlZC4gKi8KKyNkZWZpbmUgRU5PVUdIX0xFTlMgODUyCisjZGVmaW5lIEVOT1VHSF9ESVNUUyA1OTIKKyNkZWZpbmUgRU5PVUdIIChFTk9VR0hfTEVOUytFTk9VR0hfRElTVFMpCisKKy8qIFR5cGUgb2YgY29kZSB0byBidWlsZCBmb3IgaW5mbGF0ZV90YWJsZSgpICovCit0eXBlZGVmIGVudW0geworICAgIENPREVTLAorICAgIExFTlMsCisgICAgRElTVFMKK30gY29kZXR5cGU7CisKK2ludCBaTElCX0lOVEVSTkFMIGluZmxhdGVfdGFibGUgT0YoKGNvZGV0eXBlIHR5cGUsIHVuc2lnbmVkIHNob3J0IEZBUiAqbGVucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29kZXMsIGNvZGUgRkFSICogRkFSICp0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgRkFSICpiaXRzLCB1bnNpZ25lZCBzaG9ydCBGQVIgKndvcmspKTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvdHJlZXMuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvdHJlZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzU2MzlkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC90cmVlcy5oCkBAIC0wLDAgKzEsMTI4IEBACisvKiBoZWFkZXIgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdpdGggLURHRU5fVFJFRVNfSCAqLworCitsb2NhbCBjb25zdCBjdF9kYXRhIHN0YXRpY19sdHJlZVtMX0NPREVTKzJdID0gewore3sgMTJ9LHsgIDh9fSwge3sxNDB9LHsgIDh9fSwge3sgNzZ9LHsgIDh9fSwge3syMDR9LHsgIDh9fSwge3sgNDR9LHsgIDh9fSwKK3t7MTcyfSx7ICA4fX0sIHt7MTA4fSx7ICA4fX0sIHt7MjM2fSx7ICA4fX0sIHt7IDI4fSx7ICA4fX0sIHt7MTU2fSx7ICA4fX0sCit7eyA5Mn0seyAgOH19LCB7ezIyMH0seyAgOH19LCB7eyA2MH0seyAgOH19LCB7ezE4OH0seyAgOH19LCB7ezEyNH0seyAgOH19LAore3syNTJ9LHsgIDh9fSwge3sgIDJ9LHsgIDh9fSwge3sxMzB9LHsgIDh9fSwge3sgNjZ9LHsgIDh9fSwge3sxOTR9LHsgIDh9fSwKK3t7IDM0fSx7ICA4fX0sIHt7MTYyfSx7ICA4fX0sIHt7IDk4fSx7ICA4fX0sIHt7MjI2fSx7ICA4fX0sIHt7IDE4fSx7ICA4fX0sCit7ezE0Nn0seyAgOH19LCB7eyA4Mn0seyAgOH19LCB7ezIxMH0seyAgOH19LCB7eyA1MH0seyAgOH19LCB7ezE3OH0seyAgOH19LAore3sxMTR9LHsgIDh9fSwge3syNDJ9LHsgIDh9fSwge3sgMTB9LHsgIDh9fSwge3sxMzh9LHsgIDh9fSwge3sgNzR9LHsgIDh9fSwKK3t7MjAyfSx7ICA4fX0sIHt7IDQyfSx7ICA4fX0sIHt7MTcwfSx7ICA4fX0sIHt7MTA2fSx7ICA4fX0sIHt7MjM0fSx7ICA4fX0sCit7eyAyNn0seyAgOH19LCB7ezE1NH0seyAgOH19LCB7eyA5MH0seyAgOH19LCB7ezIxOH0seyAgOH19LCB7eyA1OH0seyAgOH19LAore3sxODZ9LHsgIDh9fSwge3sxMjJ9LHsgIDh9fSwge3syNTB9LHsgIDh9fSwge3sgIDZ9LHsgIDh9fSwge3sxMzR9LHsgIDh9fSwKK3t7IDcwfSx7ICA4fX0sIHt7MTk4fSx7ICA4fX0sIHt7IDM4fSx7ICA4fX0sIHt7MTY2fSx7ICA4fX0sIHt7MTAyfSx7ICA4fX0sCit7ezIzMH0seyAgOH19LCB7eyAyMn0seyAgOH19LCB7ezE1MH0seyAgOH19LCB7eyA4Nn0seyAgOH19LCB7ezIxNH0seyAgOH19LAore3sgNTR9LHsgIDh9fSwge3sxODJ9LHsgIDh9fSwge3sxMTh9LHsgIDh9fSwge3syNDZ9LHsgIDh9fSwge3sgMTR9LHsgIDh9fSwKK3t7MTQyfSx7ICA4fX0sIHt7IDc4fSx7ICA4fX0sIHt7MjA2fSx7ICA4fX0sIHt7IDQ2fSx7ICA4fX0sIHt7MTc0fSx7ICA4fX0sCit7ezExMH0seyAgOH19LCB7ezIzOH0seyAgOH19LCB7eyAzMH0seyAgOH19LCB7ezE1OH0seyAgOH19LCB7eyA5NH0seyAgOH19LAore3syMjJ9LHsgIDh9fSwge3sgNjJ9LHsgIDh9fSwge3sxOTB9LHsgIDh9fSwge3sxMjZ9LHsgIDh9fSwge3syNTR9LHsgIDh9fSwKK3t7ICAxfSx7ICA4fX0sIHt7MTI5fSx7ICA4fX0sIHt7IDY1fSx7ICA4fX0sIHt7MTkzfSx7ICA4fX0sIHt7IDMzfSx7ICA4fX0sCit7ezE2MX0seyAgOH19LCB7eyA5N30seyAgOH19LCB7ezIyNX0seyAgOH19LCB7eyAxN30seyAgOH19LCB7ezE0NX0seyAgOH19LAore3sgODF9LHsgIDh9fSwge3syMDl9LHsgIDh9fSwge3sgNDl9LHsgIDh9fSwge3sxNzd9LHsgIDh9fSwge3sxMTN9LHsgIDh9fSwKK3t7MjQxfSx7ICA4fX0sIHt7ICA5fSx7ICA4fX0sIHt7MTM3fSx7ICA4fX0sIHt7IDczfSx7ICA4fX0sIHt7MjAxfSx7ICA4fX0sCit7eyA0MX0seyAgOH19LCB7ezE2OX0seyAgOH19LCB7ezEwNX0seyAgOH19LCB7ezIzM30seyAgOH19LCB7eyAyNX0seyAgOH19LAore3sxNTN9LHsgIDh9fSwge3sgODl9LHsgIDh9fSwge3syMTd9LHsgIDh9fSwge3sgNTd9LHsgIDh9fSwge3sxODV9LHsgIDh9fSwKK3t7MTIxfSx7ICA4fX0sIHt7MjQ5fSx7ICA4fX0sIHt7ICA1fSx7ICA4fX0sIHt7MTMzfSx7ICA4fX0sIHt7IDY5fSx7ICA4fX0sCit7ezE5N30seyAgOH19LCB7eyAzN30seyAgOH19LCB7ezE2NX0seyAgOH19LCB7ezEwMX0seyAgOH19LCB7ezIyOX0seyAgOH19LAore3sgMjF9LHsgIDh9fSwge3sxNDl9LHsgIDh9fSwge3sgODV9LHsgIDh9fSwge3syMTN9LHsgIDh9fSwge3sgNTN9LHsgIDh9fSwKK3t7MTgxfSx7ICA4fX0sIHt7MTE3fSx7ICA4fX0sIHt7MjQ1fSx7ICA4fX0sIHt7IDEzfSx7ICA4fX0sIHt7MTQxfSx7ICA4fX0sCit7eyA3N30seyAgOH19LCB7ezIwNX0seyAgOH19LCB7eyA0NX0seyAgOH19LCB7ezE3M30seyAgOH19LCB7ezEwOX0seyAgOH19LAore3syMzd9LHsgIDh9fSwge3sgMjl9LHsgIDh9fSwge3sxNTd9LHsgIDh9fSwge3sgOTN9LHsgIDh9fSwge3syMjF9LHsgIDh9fSwKK3t7IDYxfSx7ICA4fX0sIHt7MTg5fSx7ICA4fX0sIHt7MTI1fSx7ICA4fX0sIHt7MjUzfSx7ICA4fX0sIHt7IDE5fSx7ICA5fX0sCit7ezI3NX0seyAgOX19LCB7ezE0N30seyAgOX19LCB7ezQwM30seyAgOX19LCB7eyA4M30seyAgOX19LCB7ezMzOX0seyAgOX19LAore3syMTF9LHsgIDl9fSwge3s0Njd9LHsgIDl9fSwge3sgNTF9LHsgIDl9fSwge3szMDd9LHsgIDl9fSwge3sxNzl9LHsgIDl9fSwKK3t7NDM1fSx7ICA5fX0sIHt7MTE1fSx7ICA5fX0sIHt7MzcxfSx7ICA5fX0sIHt7MjQzfSx7ICA5fX0sIHt7NDk5fSx7ICA5fX0sCit7eyAxMX0seyAgOX19LCB7ezI2N30seyAgOX19LCB7ezEzOX0seyAgOX19LCB7ezM5NX0seyAgOX19LCB7eyA3NX0seyAgOX19LAore3szMzF9LHsgIDl9fSwge3syMDN9LHsgIDl9fSwge3s0NTl9LHsgIDl9fSwge3sgNDN9LHsgIDl9fSwge3syOTl9LHsgIDl9fSwKK3t7MTcxfSx7ICA5fX0sIHt7NDI3fSx7ICA5fX0sIHt7MTA3fSx7ICA5fX0sIHt7MzYzfSx7ICA5fX0sIHt7MjM1fSx7ICA5fX0sCit7ezQ5MX0seyAgOX19LCB7eyAyN30seyAgOX19LCB7ezI4M30seyAgOX19LCB7ezE1NX0seyAgOX19LCB7ezQxMX0seyAgOX19LAore3sgOTF9LHsgIDl9fSwge3szNDd9LHsgIDl9fSwge3syMTl9LHsgIDl9fSwge3s0NzV9LHsgIDl9fSwge3sgNTl9LHsgIDl9fSwKK3t7MzE1fSx7ICA5fX0sIHt7MTg3fSx7ICA5fX0sIHt7NDQzfSx7ICA5fX0sIHt7MTIzfSx7ICA5fX0sIHt7Mzc5fSx7ICA5fX0sCit7ezI1MX0seyAgOX19LCB7ezUwN30seyAgOX19LCB7eyAgN30seyAgOX19LCB7ezI2M30seyAgOX19LCB7ezEzNX0seyAgOX19LAore3szOTF9LHsgIDl9fSwge3sgNzF9LHsgIDl9fSwge3szMjd9LHsgIDl9fSwge3sxOTl9LHsgIDl9fSwge3s0NTV9LHsgIDl9fSwKK3t7IDM5fSx7ICA5fX0sIHt7Mjk1fSx7ICA5fX0sIHt7MTY3fSx7ICA5fX0sIHt7NDIzfSx7ICA5fX0sIHt7MTAzfSx7ICA5fX0sCit7ezM1OX0seyAgOX19LCB7ezIzMX0seyAgOX19LCB7ezQ4N30seyAgOX19LCB7eyAyM30seyAgOX19LCB7ezI3OX0seyAgOX19LAore3sxNTF9LHsgIDl9fSwge3s0MDd9LHsgIDl9fSwge3sgODd9LHsgIDl9fSwge3szNDN9LHsgIDl9fSwge3syMTV9LHsgIDl9fSwKK3t7NDcxfSx7ICA5fX0sIHt7IDU1fSx7ICA5fX0sIHt7MzExfSx7ICA5fX0sIHt7MTgzfSx7ICA5fX0sIHt7NDM5fSx7ICA5fX0sCit7ezExOX0seyAgOX19LCB7ezM3NX0seyAgOX19LCB7ezI0N30seyAgOX19LCB7ezUwM30seyAgOX19LCB7eyAxNX0seyAgOX19LAore3syNzF9LHsgIDl9fSwge3sxNDN9LHsgIDl9fSwge3szOTl9LHsgIDl9fSwge3sgNzl9LHsgIDl9fSwge3szMzV9LHsgIDl9fSwKK3t7MjA3fSx7ICA5fX0sIHt7NDYzfSx7ICA5fX0sIHt7IDQ3fSx7ICA5fX0sIHt7MzAzfSx7ICA5fX0sIHt7MTc1fSx7ICA5fX0sCit7ezQzMX0seyAgOX19LCB7ezExMX0seyAgOX19LCB7ezM2N30seyAgOX19LCB7ezIzOX0seyAgOX19LCB7ezQ5NX0seyAgOX19LAore3sgMzF9LHsgIDl9fSwge3syODd9LHsgIDl9fSwge3sxNTl9LHsgIDl9fSwge3s0MTV9LHsgIDl9fSwge3sgOTV9LHsgIDl9fSwKK3t7MzUxfSx7ICA5fX0sIHt7MjIzfSx7ICA5fX0sIHt7NDc5fSx7ICA5fX0sIHt7IDYzfSx7ICA5fX0sIHt7MzE5fSx7ICA5fX0sCit7ezE5MX0seyAgOX19LCB7ezQ0N30seyAgOX19LCB7ezEyN30seyAgOX19LCB7ezM4M30seyAgOX19LCB7ezI1NX0seyAgOX19LAore3s1MTF9LHsgIDl9fSwge3sgIDB9LHsgIDd9fSwge3sgNjR9LHsgIDd9fSwge3sgMzJ9LHsgIDd9fSwge3sgOTZ9LHsgIDd9fSwKK3t7IDE2fSx7ICA3fX0sIHt7IDgwfSx7ICA3fX0sIHt7IDQ4fSx7ICA3fX0sIHt7MTEyfSx7ICA3fX0sIHt7ICA4fSx7ICA3fX0sCit7eyA3Mn0seyAgN319LCB7eyA0MH0seyAgN319LCB7ezEwNH0seyAgN319LCB7eyAyNH0seyAgN319LCB7eyA4OH0seyAgN319LAore3sgNTZ9LHsgIDd9fSwge3sxMjB9LHsgIDd9fSwge3sgIDR9LHsgIDd9fSwge3sgNjh9LHsgIDd9fSwge3sgMzZ9LHsgIDd9fSwKK3t7MTAwfSx7ICA3fX0sIHt7IDIwfSx7ICA3fX0sIHt7IDg0fSx7ICA3fX0sIHt7IDUyfSx7ICA3fX0sIHt7MTE2fSx7ICA3fX0sCit7eyAgM30seyAgOH19LCB7ezEzMX0seyAgOH19LCB7eyA2N30seyAgOH19LCB7ezE5NX0seyAgOH19LCB7eyAzNX0seyAgOH19LAore3sxNjN9LHsgIDh9fSwge3sgOTl9LHsgIDh9fSwge3syMjd9LHsgIDh9fQorfTsKKworbG9jYWwgY29uc3QgY3RfZGF0YSBzdGF0aWNfZHRyZWVbRF9DT0RFU10gPSB7Cit7eyAwfSx7IDV9fSwge3sxNn0seyA1fX0sIHt7IDh9LHsgNX19LCB7ezI0fSx7IDV9fSwge3sgNH0seyA1fX0sCit7ezIwfSx7IDV9fSwge3sxMn0seyA1fX0sIHt7Mjh9LHsgNX19LCB7eyAyfSx7IDV9fSwge3sxOH0seyA1fX0sCit7ezEwfSx7IDV9fSwge3syNn0seyA1fX0sIHt7IDZ9LHsgNX19LCB7ezIyfSx7IDV9fSwge3sxNH0seyA1fX0sCit7ezMwfSx7IDV9fSwge3sgMX0seyA1fX0sIHt7MTd9LHsgNX19LCB7eyA5fSx7IDV9fSwge3syNX0seyA1fX0sCit7eyA1fSx7IDV9fSwge3syMX0seyA1fX0sIHt7MTN9LHsgNX19LCB7ezI5fSx7IDV9fSwge3sgM30seyA1fX0sCit7ezE5fSx7IDV9fSwge3sxMX0seyA1fX0sIHt7Mjd9LHsgNX19LCB7eyA3fSx7IDV9fSwge3syM30seyA1fX0KK307CisKK2NvbnN0IHVjaCBaTElCX0lOVEVSTkFMIF9kaXN0X2NvZGVbRElTVF9DT0RFX0xFTl0gPSB7CisgMCwgIDEsICAyLCAgMywgIDQsICA0LCAgNSwgIDUsICA2LCAgNiwgIDYsICA2LCAgNywgIDcsICA3LCAgNywgIDgsICA4LCAgOCwgIDgsCisgOCwgIDgsICA4LCAgOCwgIDksICA5LCAgOSwgIDksICA5LCAgOSwgIDksICA5LCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsCisxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDExLCAxMSwgMTEsIDExLCAxMSwgMTEsIDExLCAxMSwgMTEsIDExLCAxMSwgMTEsCisxMSwgMTEsIDExLCAxMSwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsCisxMiwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTMsIDEzLCAxMywgMTMsCisxMywgMTMsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsCisxMywgMTMsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsCisxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsCisxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsCisxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsCisxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsCisxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsCisxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUsIDE1LCAxNSwgIDAsICAwLCAxNiwgMTcsCisxOCwgMTgsIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIxLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsCisyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsCisyNCwgMjQsIDI0LCAyNCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsCisyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsCisyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsCisyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsCisyNywgMjcsIDI3LCAyNywgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsCisyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsCisyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsCisyOCwgMjgsIDI4LCAyOCwgMjgsIDI4LCAyOCwgMjgsIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksCisyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksCisyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksCisyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5LCAyOSwgMjksIDI5Cit9OworCitjb25zdCB1Y2ggWkxJQl9JTlRFUk5BTCBfbGVuZ3RoX2NvZGVbTUFYX01BVENILU1JTl9NQVRDSCsxXT0geworIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDgsICA5LCAgOSwgMTAsIDEwLCAxMSwgMTEsIDEyLCAxMiwgMTIsIDEyLAorMTMsIDEzLCAxMywgMTMsIDE0LCAxNCwgMTQsIDE0LCAxNSwgMTUsIDE1LCAxNSwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAorMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE5LCAxOSwgMTksIDE5LAorMTksIDE5LCAxOSwgMTksIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLAorMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIyLCAyMiwgMjIsIDIyLAorMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjIsIDIyLCAyMiwgMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLAorMjMsIDIzLCAyMywgMjMsIDIzLCAyMywgMjMsIDIzLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAorMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAorMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LAorMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LAorMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LAorMjYsIDI2LCAyNiwgMjYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LAorMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjgKK307CisKK2xvY2FsIGNvbnN0IGludCBiYXNlX2xlbmd0aFtMRU5HVEhfQ09ERVNdID0geworMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgMTAsIDEyLCAxNCwgMTYsIDIwLCAyNCwgMjgsIDMyLCA0MCwgNDgsIDU2LAorNjQsIDgwLCA5NiwgMTEyLCAxMjgsIDE2MCwgMTkyLCAyMjQsIDAKK307CisKK2xvY2FsIGNvbnN0IGludCBiYXNlX2Rpc3RbRF9DT0RFU10gPSB7CisgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA2LCAgICAgOCwgICAgMTIsICAgIDE2LCAgICAyNCwKKyAgIDMyLCAgICA0OCwgICAgNjQsICAgIDk2LCAgIDEyOCwgICAxOTIsICAgMjU2LCAgIDM4NCwgICA1MTIsICAgNzY4LAorIDEwMjQsICAxNTM2LCAgMjA0OCwgIDMwNzIsICA0MDk2LCAgNjE0NCwgIDgxOTIsIDEyMjg4LCAxNjM4NCwgMjQ1NzYKK307CisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvemNvbmYuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvemNvbmYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzA4YTM3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC96Y29uZi5oCkBAIC0wLDAgKzEsNTE5IEBACisvKiB6Y29uZi5oIC0tIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHpsaWIgY29tcHJlc3Npb24gbGlicmFyeQorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseS4KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAqLworCisvKiBAKCMpICRJZCQgKi8KKworI2lmbmRlZiBaQ09ORl9ICisjZGVmaW5lIFpDT05GX0gKKworLyoKKyAqIElmIHlvdSAqcmVhbGx5KiBuZWVkIGEgdW5pcXVlIHByZWZpeCBmb3IgYWxsIHR5cGVzIGFuZCBsaWJyYXJ5IGZ1bmN0aW9ucywKKyAqIGNvbXBpbGUgd2l0aCAtRFpfUFJFRklYLiBUaGUgInN0YW5kYXJkIiB6bGliIHNob3VsZCBiZSBjb21waWxlZCB3aXRob3V0IGl0LgorICogRXZlbiBiZXR0ZXIgdGhhbiBjb21waWxpbmcgd2l0aCAtRFpfUFJFRklYIHdvdWxkIGJlIHRvIHVzZSBjb25maWd1cmUgdG8gc2V0CisgKiB0aGlzIHBlcm1hbmVudGx5IGluIHpjb25mLmggdXNpbmcgIi4vY29uZmlndXJlIC0tenByZWZpeCIuCisgKi8KKyNpZmRlZiBaX1BSRUZJWCAgICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLworIyAgZGVmaW5lIFpfUFJFRklYX1NFVAorCisvKiBhbGwgbGlua2VkIHN5bWJvbHMgKi8KKyMgIGRlZmluZSBfZGlzdF9jb2RlICAgICAgICAgICAgel9fZGlzdF9jb2RlCisjICBkZWZpbmUgX2xlbmd0aF9jb2RlICAgICAgICAgIHpfX2xlbmd0aF9jb2RlCisjICBkZWZpbmUgX3RyX2FsaWduICAgICAgICAgICAgIHpfX3RyX2FsaWduCisjICBkZWZpbmUgX3RyX2ZsdXNoX2JpdHMgICAgICAgIHpfX3RyX2ZsdXNoX2JpdHMKKyMgIGRlZmluZSBfdHJfZmx1c2hfYmxvY2sgICAgICAgel9fdHJfZmx1c2hfYmxvY2sKKyMgIGRlZmluZSBfdHJfaW5pdCAgICAgICAgICAgICAgel9fdHJfaW5pdAorIyAgZGVmaW5lIF90cl9zdG9yZWRfYmxvY2sgICAgICB6X190cl9zdG9yZWRfYmxvY2sKKyMgIGRlZmluZSBfdHJfdGFsbHkgICAgICAgICAgICAgel9fdHJfdGFsbHkKKyMgIGRlZmluZSBhZGxlcjMyICAgICAgICAgICAgICAgel9hZGxlcjMyCisjICBkZWZpbmUgYWRsZXIzMl9jb21iaW5lICAgICAgIHpfYWRsZXIzMl9jb21iaW5lCisjICBkZWZpbmUgYWRsZXIzMl9jb21iaW5lNjQgICAgIHpfYWRsZXIzMl9jb21iaW5lNjQKKyMgIGlmbmRlZiBaX1NPTE8KKyMgICAgZGVmaW5lIGNvbXByZXNzICAgICAgICAgICAgICB6X2NvbXByZXNzCisjICAgIGRlZmluZSBjb21wcmVzczIgICAgICAgICAgICAgel9jb21wcmVzczIKKyMgICAgZGVmaW5lIGNvbXByZXNzQm91bmQgICAgICAgICB6X2NvbXByZXNzQm91bmQKKyMgIGVuZGlmCisjICBkZWZpbmUgY3JjMzIgICAgICAgICAgICAgICAgIHpfY3JjMzIKKyMgIGRlZmluZSBjcmMzMl9jb21iaW5lICAgICAgICAgel9jcmMzMl9jb21iaW5lCisjICBkZWZpbmUgY3JjMzJfY29tYmluZTY0ICAgICAgIHpfY3JjMzJfY29tYmluZTY0CisjICBkZWZpbmUgZGVmbGF0ZSAgICAgICAgICAgICAgIHpfZGVmbGF0ZQorIyAgZGVmaW5lIGRlZmxhdGVCb3VuZCAgICAgICAgICB6X2RlZmxhdGVCb3VuZAorIyAgZGVmaW5lIGRlZmxhdGVDb3B5ICAgICAgICAgICB6X2RlZmxhdGVDb3B5CisjICBkZWZpbmUgZGVmbGF0ZUVuZCAgICAgICAgICAgIHpfZGVmbGF0ZUVuZAorIyAgZGVmaW5lIGRlZmxhdGVJbml0Ml8gICAgICAgICB6X2RlZmxhdGVJbml0Ml8KKyMgIGRlZmluZSBkZWZsYXRlSW5pdF8gICAgICAgICAgel9kZWZsYXRlSW5pdF8KKyMgIGRlZmluZSBkZWZsYXRlUGFyYW1zICAgICAgICAgel9kZWZsYXRlUGFyYW1zCisjICBkZWZpbmUgZGVmbGF0ZVBlbmRpbmcgICAgICAgIHpfZGVmbGF0ZVBlbmRpbmcKKyMgIGRlZmluZSBkZWZsYXRlUHJpbWUgICAgICAgICAgel9kZWZsYXRlUHJpbWUKKyMgIGRlZmluZSBkZWZsYXRlUmVzZXQgICAgICAgICAgel9kZWZsYXRlUmVzZXQKKyMgIGRlZmluZSBkZWZsYXRlUmVzZXRLZWVwICAgICAgel9kZWZsYXRlUmVzZXRLZWVwCisjICBkZWZpbmUgZGVmbGF0ZVNldERpY3Rpb25hcnkgIHpfZGVmbGF0ZVNldERpY3Rpb25hcnkKKyMgIGRlZmluZSBkZWZsYXRlU2V0SGVhZGVyICAgICAgel9kZWZsYXRlU2V0SGVhZGVyCisjICBkZWZpbmUgZGVmbGF0ZVR1bmUgICAgICAgICAgIHpfZGVmbGF0ZVR1bmUKKyMgIGRlZmluZSBkZWZsYXRlX2NvcHlyaWdodCAgICAgel9kZWZsYXRlX2NvcHlyaWdodAorIyAgZGVmaW5lIGdldF9jcmNfdGFibGUgICAgICAgICB6X2dldF9jcmNfdGFibGUKKyMgIGlmbmRlZiBaX1NPTE8KKyMgICAgZGVmaW5lIGd6X2Vycm9yICAgICAgICAgICAgICB6X2d6X2Vycm9yCisjICAgIGRlZmluZSBnel9pbnRtYXggICAgICAgICAgICAgel9nel9pbnRtYXgKKyMgICAgZGVmaW5lIGd6X3N0cndpbmVycm9yICAgICAgICB6X2d6X3N0cndpbmVycm9yCisjICAgIGRlZmluZSBnemJ1ZmZlciAgICAgICAgICAgICAgel9nemJ1ZmZlcgorIyAgICBkZWZpbmUgZ3pjbGVhcmVyciAgICAgICAgICAgIHpfZ3pjbGVhcmVycgorIyAgICBkZWZpbmUgZ3pjbG9zZSAgICAgICAgICAgICAgIHpfZ3pjbG9zZQorIyAgICBkZWZpbmUgZ3pjbG9zZV9yICAgICAgICAgICAgIHpfZ3pjbG9zZV9yCisjICAgIGRlZmluZSBnemNsb3NlX3cgICAgICAgICAgICAgel9nemNsb3NlX3cKKyMgICAgZGVmaW5lIGd6ZGlyZWN0ICAgICAgICAgICAgICB6X2d6ZGlyZWN0CisjICAgIGRlZmluZSBnemRvcGVuICAgICAgICAgICAgICAgel9nemRvcGVuCisjICAgIGRlZmluZSBnemVvZiAgICAgICAgICAgICAgICAgel9nemVvZgorIyAgICBkZWZpbmUgZ3plcnJvciAgICAgICAgICAgICAgIHpfZ3plcnJvcgorIyAgICBkZWZpbmUgZ3pmbHVzaCAgICAgICAgICAgICAgIHpfZ3pmbHVzaAorIyAgICBkZWZpbmUgZ3pnZXRjICAgICAgICAgICAgICAgIHpfZ3pnZXRjCisjICAgIGRlZmluZSBnemdldGNfICAgICAgICAgICAgICAgel9nemdldGNfCisjICAgIGRlZmluZSBnemdldHMgICAgICAgICAgICAgICAgel9nemdldHMKKyMgICAgZGVmaW5lIGd6b2Zmc2V0ICAgICAgICAgICAgICB6X2d6b2Zmc2V0CisjICAgIGRlZmluZSBnem9mZnNldDY0ICAgICAgICAgICAgel9nem9mZnNldDY0CisjICAgIGRlZmluZSBnem9wZW4gICAgICAgICAgICAgICAgel9nem9wZW4KKyMgICAgZGVmaW5lIGd6b3BlbjY0ICAgICAgICAgICAgICB6X2d6b3BlbjY0CisjICAgIGlmZGVmIF9XSU4zMgorIyAgICAgIGRlZmluZSBnem9wZW5fdyAgICAgICAgICAgICAgel9nem9wZW5fdworIyAgICBlbmRpZgorIyAgICBkZWZpbmUgZ3pwcmludGYgICAgICAgICAgICAgIHpfZ3pwcmludGYKKyMgICAgZGVmaW5lIGd6dnByaW50ZiAgICAgICAgICAgICB6X2d6dnByaW50ZgorIyAgICBkZWZpbmUgZ3pwdXRjICAgICAgICAgICAgICAgIHpfZ3pwdXRjCisjICAgIGRlZmluZSBnenB1dHMgICAgICAgICAgICAgICAgel9nenB1dHMKKyMgICAgZGVmaW5lIGd6cmVhZCAgICAgICAgICAgICAgICB6X2d6cmVhZAorIyAgICBkZWZpbmUgZ3pyZXdpbmQgICAgICAgICAgICAgIHpfZ3pyZXdpbmQKKyMgICAgZGVmaW5lIGd6c2VlayAgICAgICAgICAgICAgICB6X2d6c2VlaworIyAgICBkZWZpbmUgZ3pzZWVrNjQgICAgICAgICAgICAgIHpfZ3pzZWVrNjQKKyMgICAgZGVmaW5lIGd6c2V0cGFyYW1zICAgICAgICAgICB6X2d6c2V0cGFyYW1zCisjICAgIGRlZmluZSBnenRlbGwgICAgICAgICAgICAgICAgel9nenRlbGwKKyMgICAgZGVmaW5lIGd6dGVsbDY0ICAgICAgICAgICAgICB6X2d6dGVsbDY0CisjICAgIGRlZmluZSBnenVuZ2V0YyAgICAgICAgICAgICAgel9nenVuZ2V0YworIyAgICBkZWZpbmUgZ3p3cml0ZSAgICAgICAgICAgICAgIHpfZ3p3cml0ZQorIyAgZW5kaWYKKyMgIGRlZmluZSBpbmZsYXRlICAgICAgICAgICAgICAgel9pbmZsYXRlCisjICBkZWZpbmUgaW5mbGF0ZUJhY2sgICAgICAgICAgIHpfaW5mbGF0ZUJhY2sKKyMgIGRlZmluZSBpbmZsYXRlQmFja0VuZCAgICAgICAgel9pbmZsYXRlQmFja0VuZAorIyAgZGVmaW5lIGluZmxhdGVCYWNrSW5pdF8gICAgICB6X2luZmxhdGVCYWNrSW5pdF8KKyMgIGRlZmluZSBpbmZsYXRlQ29weSAgICAgICAgICAgel9pbmZsYXRlQ29weQorIyAgZGVmaW5lIGluZmxhdGVFbmQgICAgICAgICAgICB6X2luZmxhdGVFbmQKKyMgIGRlZmluZSBpbmZsYXRlR2V0SGVhZGVyICAgICAgel9pbmZsYXRlR2V0SGVhZGVyCisjICBkZWZpbmUgaW5mbGF0ZUluaXQyXyAgICAgICAgIHpfaW5mbGF0ZUluaXQyXworIyAgZGVmaW5lIGluZmxhdGVJbml0XyAgICAgICAgICB6X2luZmxhdGVJbml0XworIyAgZGVmaW5lIGluZmxhdGVNYXJrICAgICAgICAgICB6X2luZmxhdGVNYXJrCisjICBkZWZpbmUgaW5mbGF0ZVByaW1lICAgICAgICAgIHpfaW5mbGF0ZVByaW1lCisjICBkZWZpbmUgaW5mbGF0ZVJlc2V0ICAgICAgICAgIHpfaW5mbGF0ZVJlc2V0CisjICBkZWZpbmUgaW5mbGF0ZVJlc2V0MiAgICAgICAgIHpfaW5mbGF0ZVJlc2V0MgorIyAgZGVmaW5lIGluZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2luZmxhdGVTZXREaWN0aW9uYXJ5CisjICBkZWZpbmUgaW5mbGF0ZUdldERpY3Rpb25hcnkgIHpfaW5mbGF0ZUdldERpY3Rpb25hcnkKKyMgIGRlZmluZSBpbmZsYXRlU3luYyAgICAgICAgICAgel9pbmZsYXRlU3luYworIyAgZGVmaW5lIGluZmxhdGVTeW5jUG9pbnQgICAgICB6X2luZmxhdGVTeW5jUG9pbnQKKyMgIGRlZmluZSBpbmZsYXRlVW5kZXJtaW5lICAgICAgel9pbmZsYXRlVW5kZXJtaW5lCisjICBkZWZpbmUgaW5mbGF0ZVJlc2V0S2VlcCAgICAgIHpfaW5mbGF0ZVJlc2V0S2VlcAorIyAgZGVmaW5lIGluZmxhdGVfY29weXJpZ2h0ICAgICB6X2luZmxhdGVfY29weXJpZ2h0CisjICBkZWZpbmUgaW5mbGF0ZV9mYXN0ICAgICAgICAgIHpfaW5mbGF0ZV9mYXN0CisjICBkZWZpbmUgaW5mbGF0ZV90YWJsZSAgICAgICAgIHpfaW5mbGF0ZV90YWJsZQorIyAgaWZuZGVmIFpfU09MTworIyAgICBkZWZpbmUgdW5jb21wcmVzcyAgICAgICAgICAgIHpfdW5jb21wcmVzcworIyAgZW5kaWYKKyMgIGRlZmluZSB6RXJyb3IgICAgICAgICAgICAgICAgel96RXJyb3IKKyMgIGlmbmRlZiBaX1NPTE8KKyMgICAgZGVmaW5lIHpjYWxsb2MgICAgICAgICAgICAgICB6X3pjYWxsb2MKKyMgICAgZGVmaW5lIHpjZnJlZSAgICAgICAgICAgICAgICB6X3pjZnJlZQorIyAgZW5kaWYKKyMgIGRlZmluZSB6bGliQ29tcGlsZUZsYWdzICAgICAgel96bGliQ29tcGlsZUZsYWdzCisjICBkZWZpbmUgemxpYlZlcnNpb24gICAgICAgICAgIHpfemxpYlZlcnNpb24KKworLyogYWxsIHpsaWIgdHlwZWRlZnMgaW4gemxpYi5oIGFuZCB6Y29uZi5oICovCisjICBkZWZpbmUgQnl0ZSAgICAgICAgICAgICAgICAgIHpfQnl0ZQorIyAgZGVmaW5lIEJ5dGVmICAgICAgICAgICAgICAgICB6X0J5dGVmCisjICBkZWZpbmUgYWxsb2NfZnVuYyAgICAgICAgICAgIHpfYWxsb2NfZnVuYworIyAgZGVmaW5lIGNoYXJmICAgICAgICAgICAgICAgICB6X2NoYXJmCisjICBkZWZpbmUgZnJlZV9mdW5jICAgICAgICAgICAgIHpfZnJlZV9mdW5jCisjICBpZm5kZWYgWl9TT0xPCisjICAgIGRlZmluZSBnekZpbGUgICAgICAgICAgICAgICAgel9nekZpbGUKKyMgIGVuZGlmCisjICBkZWZpbmUgZ3pfaGVhZGVyICAgICAgICAgICAgIHpfZ3pfaGVhZGVyCisjICBkZWZpbmUgZ3pfaGVhZGVycCAgICAgICAgICAgIHpfZ3pfaGVhZGVycAorIyAgZGVmaW5lIGluX2Z1bmMgICAgICAgICAgICAgICB6X2luX2Z1bmMKKyMgIGRlZmluZSBpbnRmICAgICAgICAgICAgICAgICAgel9pbnRmCisjICBkZWZpbmUgb3V0X2Z1bmMgICAgICAgICAgICAgIHpfb3V0X2Z1bmMKKyMgIGRlZmluZSB1SW50ICAgICAgICAgICAgICAgICAgel91SW50CisjICBkZWZpbmUgdUludGYgICAgICAgICAgICAgICAgIHpfdUludGYKKyMgIGRlZmluZSB1TG9uZyAgICAgICAgICAgICAgICAgel91TG9uZworIyAgZGVmaW5lIHVMb25nZiAgICAgICAgICAgICAgICB6X3VMb25nZgorIyAgZGVmaW5lIHZvaWRwICAgICAgICAgICAgICAgICB6X3ZvaWRwCisjICBkZWZpbmUgdm9pZHBjICAgICAgICAgICAgICAgIHpfdm9pZHBjCisjICBkZWZpbmUgdm9pZHBmICAgICAgICAgICAgICAgIHpfdm9pZHBmCisKKy8qIGFsbCB6bGliIHN0cnVjdHMgaW4gemxpYi5oIGFuZCB6Y29uZi5oICovCisjICBkZWZpbmUgZ3pfaGVhZGVyX3MgICAgICAgICAgIHpfZ3pfaGVhZGVyX3MKKyMgIGRlZmluZSBpbnRlcm5hbF9zdGF0ZSAgICAgICAgel9pbnRlcm5hbF9zdGF0ZQorCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19NU0RPU19fKSAmJiAhZGVmaW5lZChNU0RPUykKKyMgIGRlZmluZSBNU0RPUworI2VuZGlmCisjaWYgKGRlZmluZWQoT1NfMikgfHwgZGVmaW5lZChfX09TMl9fKSkgJiYgIWRlZmluZWQoT1MyKQorIyAgZGVmaW5lIE9TMgorI2VuZGlmCisjaWYgZGVmaW5lZChfV0lORE9XUykgJiYgIWRlZmluZWQoV0lORE9XUykKKyMgIGRlZmluZSBXSU5ET1dTCisjZW5kaWYKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lOMzJfV0NFKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykKKyMgIGlmbmRlZiBXSU4zMgorIyAgICBkZWZpbmUgV0lOMzIKKyMgIGVuZGlmCisjZW5kaWYKKyNpZiAoZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChPUzIpIHx8IGRlZmluZWQoV0lORE9XUykpICYmICFkZWZpbmVkKFdJTjMyKQorIyAgaWYgIWRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fRkxBVF9fKSAmJiAhZGVmaW5lZChfXzM4Nl9fKQorIyAgICBpZm5kZWYgU1lTMTZCSVQKKyMgICAgICBkZWZpbmUgU1lTMTZCSVQKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKworLyoKKyAqIENvbXBpbGUgd2l0aCAtRE1BWFNFR182NEsgaWYgdGhlIGFsbG9jIGZ1bmN0aW9uIGNhbm5vdCBhbGxvY2F0ZSBtb3JlCisgKiB0aGFuIDY0ayBieXRlcyBhdCBhIHRpbWUgKG5lZWRlZCBvbiBzeXN0ZW1zIHdpdGggMTYtYml0IGludCkuCisgKi8KKyNpZmRlZiBTWVMxNkJJVAorIyAgZGVmaW5lIE1BWFNFR182NEsKKyNlbmRpZgorI2lmZGVmIE1TRE9TCisjICBkZWZpbmUgVU5BTElHTkVEX09LCisjZW5kaWYKKworI2lmZGVmIF9fU1REQ19WRVJTSU9OX18KKyMgIGlmbmRlZiBTVERDCisjICAgIGRlZmluZSBTVERDCisjICBlbmRpZgorIyAgaWYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMCisjICAgIGlmbmRlZiBTVERDOTkKKyMgICAgICBkZWZpbmUgU1REQzk5CisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisjaWYgIWRlZmluZWQoU1REQykgJiYgKGRlZmluZWQoX19TVERDX18pIHx8IGRlZmluZWQoX19jcGx1c3BsdXMpKQorIyAgZGVmaW5lIFNUREMKKyNlbmRpZgorI2lmICFkZWZpbmVkKFNUREMpICYmIChkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykpCisjICBkZWZpbmUgU1REQworI2VuZGlmCisjaWYgIWRlZmluZWQoU1REQykgJiYgKGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoV0lORE9XUykgfHwgZGVmaW5lZChXSU4zMikpCisjICBkZWZpbmUgU1REQworI2VuZGlmCisjaWYgIWRlZmluZWQoU1REQykgJiYgKGRlZmluZWQoT1MyKSB8fCBkZWZpbmVkKF9fSE9TX0FJWF9fKSkKKyMgIGRlZmluZSBTVERDCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19PUzQwMF9fKSAmJiAhZGVmaW5lZChTVERDKSAgICAvKiBpU2VyaWVzIChmb3JtZXJseSBBUy80MDApLiAqLworIyAgZGVmaW5lIFNUREMKKyNlbmRpZgorCisjaWZuZGVmIFNUREMKKyMgIGlmbmRlZiBjb25zdCAvKiBjYW5ub3QgdXNlICFkZWZpbmVkKFNUREMpICYmICFkZWZpbmVkKGNvbnN0KSBvbiBNYWMgKi8KKyMgICAgZGVmaW5lIGNvbnN0ICAgICAgIC8qIG5vdGU6IG5lZWQgYSBtb3JlIGdlbnRsZSBzb2x1dGlvbiBoZXJlICovCisjICBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFpMSUJfQ09OU1QpICYmICFkZWZpbmVkKHpfY29uc3QpCisjICBkZWZpbmUgel9jb25zdCBjb25zdAorI2Vsc2UKKyMgIGRlZmluZSB6X2NvbnN0CisjZW5kaWYKKworLyogU29tZSBNYWMgY29tcGlsZXJzIG1lcmdlIGFsbCAuaCBmaWxlcyBpbmNvcnJlY3RseTogKi8KKyNpZiBkZWZpbmVkKF9fTVdFUktTX18pfHxkZWZpbmVkKGFwcGxlYyl8fGRlZmluZWQoVEhJTktfQyl8fGRlZmluZWQoX19TQ19fKQorIyAgZGVmaW5lIE5PX0RVTU1ZX0RFQ0wKKyNlbmRpZgorCisvKiBNYXhpbXVtIHZhbHVlIGZvciBtZW1MZXZlbCBpbiBkZWZsYXRlSW5pdDIgKi8KKyNpZm5kZWYgTUFYX01FTV9MRVZFTAorIyAgaWZkZWYgTUFYU0VHXzY0SworIyAgICBkZWZpbmUgTUFYX01FTV9MRVZFTCA4CisjICBlbHNlCisjICAgIGRlZmluZSBNQVhfTUVNX0xFVkVMIDkKKyMgIGVuZGlmCisjZW5kaWYKKworLyogTWF4aW11bSB2YWx1ZSBmb3Igd2luZG93Qml0cyBpbiBkZWZsYXRlSW5pdDIgYW5kIGluZmxhdGVJbml0Mi4KKyAqIFdBUk5JTkc6IHJlZHVjaW5nIE1BWF9XQklUUyBtYWtlcyBtaW5pZ3ppcCB1bmFibGUgdG8gZXh0cmFjdCAuZ3ogZmlsZXMKKyAqIGNyZWF0ZWQgYnkgZ3ppcC4gKEZpbGVzIGNyZWF0ZWQgYnkgbWluaWd6aXAgY2FuIHN0aWxsIGJlIGV4dHJhY3RlZCBieQorICogZ3ppcC4pCisgKi8KKyNpZm5kZWYgTUFYX1dCSVRTCisjICBkZWZpbmUgTUFYX1dCSVRTICAgMTUgLyogMzJLIExaNzcgd2luZG93ICovCisjZW5kaWYKKworLyogVGhlIG1lbW9yeSByZXF1aXJlbWVudHMgZm9yIGRlZmxhdGUgYXJlIChpbiBieXRlcyk6CisgICAgICAgICAgICAoMSA8PCAod2luZG93Qml0cysyKSkgKyAgKDEgPDwgKG1lbUxldmVsKzkpKQorIHRoYXQgaXM6IDEyOEsgZm9yIHdpbmRvd0JpdHM9MTUgICsgIDEyOEsgZm9yIG1lbUxldmVsID0gOCAgKGRlZmF1bHQgdmFsdWVzKQorIHBsdXMgYSBmZXcga2lsb2J5dGVzIGZvciBzbWFsbCBvYmplY3RzLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gcmVkdWNlCisgdGhlIGRlZmF1bHQgbWVtb3J5IHJlcXVpcmVtZW50cyBmcm9tIDI1NksgdG8gMTI4SywgY29tcGlsZSB3aXRoCisgICAgIG1ha2UgQ0ZMQUdTPSItTyAtRE1BWF9XQklUUz0xNCAtRE1BWF9NRU1fTEVWRUw9NyIKKyBPZiBjb3Vyc2UgdGhpcyB3aWxsIGdlbmVyYWxseSBkZWdyYWRlIGNvbXByZXNzaW9uICh0aGVyZSdzIG5vIGZyZWUgbHVuY2gpLgorCisgICBUaGUgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgaW5mbGF0ZSBhcmUgKGluIGJ5dGVzKSAxIDw8IHdpbmRvd0JpdHMKKyB0aGF0IGlzLCAzMksgZm9yIHdpbmRvd0JpdHM9MTUgKGRlZmF1bHQgdmFsdWUpIHBsdXMgYSBmZXcga2lsb2J5dGVzCisgZm9yIHNtYWxsIG9iamVjdHMuCisqLworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUeXBlIGRlY2xhcmF0aW9ucyAqLworCisjaWZuZGVmIE9GIC8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KKyMgIGlmZGVmIFNUREMKKyMgICAgZGVmaW5lIE9GKGFyZ3MpICBhcmdzCisjICBlbHNlCisjICAgIGRlZmluZSBPRihhcmdzKSAgKCkKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBaX0FSRyAvKiBmdW5jdGlvbiBwcm90b3R5cGVzIGZvciBzdGRhcmcgKi8KKyMgIGlmIGRlZmluZWQoU1REQykgfHwgZGVmaW5lZChaX0hBVkVfU1REQVJHX0gpCisjICAgIGRlZmluZSBaX0FSRyhhcmdzKSAgYXJncworIyAgZWxzZQorIyAgICBkZWZpbmUgWl9BUkcoYXJncykgICgpCisjICBlbmRpZgorI2VuZGlmCisKKy8qIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgZm9yIEZBUiBhcmUgbmVlZGVkIG9ubHkgZm9yIE1TRE9TIG1peGVkCisgKiBtb2RlbCBwcm9ncmFtbWluZyAoc21hbGwgb3IgbWVkaXVtIG1vZGVsIHdpdGggc29tZSBmYXIgYWxsb2NhdGlvbnMpLgorICogVGhpcyB3YXMgdGVzdGVkIG9ubHkgd2l0aCBNU0M7IGZvciBvdGhlciBNU0RPUyBjb21waWxlcnMgeW91IG1heSBoYXZlCisgKiB0byBkZWZpbmUgTk9fTUVNQ1BZIGluIHp1dGlsLmguICBJZiB5b3UgZG9uJ3QgbmVlZCB0aGUgbWl4ZWQgbW9kZWwsCisgKiBqdXN0IGRlZmluZSBGQVIgdG8gYmUgZW1wdHkuCisgKi8KKyNpZmRlZiBTWVMxNkJJVAorIyAgaWYgZGVmaW5lZChNX0k4NlNNKSB8fCBkZWZpbmVkKE1fSTg2TU0pCisgICAgIC8qIE1TQyBzbWFsbCBvciBtZWRpdW0gbW9kZWwgKi8KKyMgICAgZGVmaW5lIFNNQUxMX01FRElVTQorIyAgICBpZmRlZiBfTVNDX1ZFUgorIyAgICAgIGRlZmluZSBGQVIgX2ZhcgorIyAgICBlbHNlCisjICAgICAgZGVmaW5lIEZBUiBmYXIKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjICBpZiAoZGVmaW5lZChfX1NNQUxMX18pIHx8IGRlZmluZWQoX19NRURJVU1fXykpCisgICAgIC8qIFR1cmJvIEMgc21hbGwgb3IgbWVkaXVtIG1vZGVsICovCisjICAgIGRlZmluZSBTTUFMTF9NRURJVU0KKyMgICAgaWZkZWYgX19CT1JMQU5EQ19fCisjICAgICAgZGVmaW5lIEZBUiBfZmFyCisjICAgIGVsc2UKKyMgICAgICBkZWZpbmUgRkFSIGZhcgorIyAgICBlbmRpZgorIyAgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChXSU5ET1dTKSB8fCBkZWZpbmVkKFdJTjMyKQorICAgLyogSWYgYnVpbGRpbmcgb3IgdXNpbmcgemxpYiBhcyBhIERMTCwgZGVmaW5lIFpMSUJfRExMLgorICAgICogVGhpcyBpcyBub3QgbWFuZGF0b3J5LCBidXQgaXQgb2ZmZXJzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGluY3JlYXNlLgorICAgICovCisjICBpZmRlZiBaTElCX0RMTAorIyAgICBpZiBkZWZpbmVkKFdJTjMyKSAmJiAoIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCAoX19CT1JMQU5EQ19fID49IDB4NTAwKSkKKyMgICAgICBpZmRlZiBaTElCX0lOVEVSTkFMCisjICAgICAgICBkZWZpbmUgWkVYVEVSTiBleHRlcm4gX19kZWNsc3BlYyhkbGxleHBvcnQpCisjICAgICAgZWxzZQorIyAgICAgICAgZGVmaW5lIFpFWFRFUk4gZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgICAgIGVuZGlmCisjICAgIGVuZGlmCisjICBlbmRpZiAgLyogWkxJQl9ETEwgKi8KKyAgIC8qIElmIGJ1aWxkaW5nIG9yIHVzaW5nIHpsaWIgd2l0aCB0aGUgV0lOQVBJL1dJTkFQSVYgY2FsbGluZyBjb252ZW50aW9uLAorICAgICogZGVmaW5lIFpMSUJfV0lOQVBJLgorICAgICogQ2F1dGlvbjogdGhlIHN0YW5kYXJkIFpMSUIxLkRMTCBpcyBOT1QgY29tcGlsZWQgdXNpbmcgWkxJQl9XSU5BUEkuCisgICAgKi8KKyMgIGlmZGVmIFpMSUJfV0lOQVBJCisjICAgIGlmZGVmIEZBUgorIyAgICAgIHVuZGVmIEZBUgorIyAgICBlbmRpZgorIyAgICBpbmNsdWRlIDx3aW5kb3dzLmg+CisgICAgIC8qIE5vIG5lZWQgZm9yIF9leHBvcnQsIHVzZSBaTElCLkRFRiBpbnN0ZWFkLiAqLworICAgICAvKiBGb3IgY29tcGxldGUgV2luZG93cyBjb21wYXRpYmlsaXR5LCB1c2UgV0lOQVBJLCBub3QgX19zdGRjYWxsLiAqLworIyAgICBkZWZpbmUgWkVYUE9SVCBXSU5BUEkKKyMgICAgaWZkZWYgV0lOMzIKKyMgICAgICBkZWZpbmUgWkVYUE9SVFZBIFdJTkFQSVYKKyMgICAgZWxzZQorIyAgICAgIGRlZmluZSBaRVhQT1JUVkEgRkFSIENERUNMCisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfX0JFT1NfXykKKyMgIGlmZGVmIFpMSUJfRExMCisjICAgIGlmZGVmIFpMSUJfSU5URVJOQUwKKyMgICAgICBkZWZpbmUgWkVYUE9SVCAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyAgICAgIGRlZmluZSBaRVhQT1JUVkEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjICAgIGVsc2UKKyMgICAgICBkZWZpbmUgWkVYUE9SVCAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgICAgIGRlZmluZSBaRVhQT1JUVkEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgWkVYVEVSTgorIyAgZGVmaW5lIFpFWFRFUk4gZXh0ZXJuCisjZW5kaWYKKyNpZm5kZWYgWkVYUE9SVAorIyAgZGVmaW5lIFpFWFBPUlQKKyNlbmRpZgorI2lmbmRlZiBaRVhQT1JUVkEKKyMgIGRlZmluZSBaRVhQT1JUVkEKKyNlbmRpZgorCisjaWZuZGVmIEZBUgorIyAgZGVmaW5lIEZBUgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChfX01BQ1RZUEVTX18pCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgIEJ5dGU7ICAvKiA4IGJpdHMgKi8KKyNlbmRpZgordHlwZWRlZiB1bnNpZ25lZCBpbnQgICB1SW50OyAgLyogMTYgYml0cyBvciBtb3JlICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgIHVMb25nOyAvKiAzMiBiaXRzIG9yIG1vcmUgKi8KKworI2lmZGVmIFNNQUxMX01FRElVTQorICAgLyogQm9ybGFuZCBDL0MrKyBhbmQgc29tZSBvbGQgTVNDIHZlcnNpb25zIGlnbm9yZSBGQVIgaW5zaWRlIHR5cGVkZWYgKi8KKyMgIGRlZmluZSBCeXRlZiBCeXRlIEZBUgorI2Vsc2UKKyAgIHR5cGVkZWYgQnl0ZSAgRkFSIEJ5dGVmOworI2VuZGlmCit0eXBlZGVmIGNoYXIgIEZBUiBjaGFyZjsKK3R5cGVkZWYgaW50ICAgRkFSIGludGY7Cit0eXBlZGVmIHVJbnQgIEZBUiB1SW50ZjsKK3R5cGVkZWYgdUxvbmcgRkFSIHVMb25nZjsKKworI2lmZGVmIFNUREMKKyAgIHR5cGVkZWYgdm9pZCBjb25zdCAqdm9pZHBjOworICAgdHlwZWRlZiB2b2lkIEZBUiAgICp2b2lkcGY7CisgICB0eXBlZGVmIHZvaWQgICAgICAgKnZvaWRwOworI2Vsc2UKKyAgIHR5cGVkZWYgQnl0ZSBjb25zdCAqdm9pZHBjOworICAgdHlwZWRlZiBCeXRlIEZBUiAgICp2b2lkcGY7CisgICB0eXBlZGVmIEJ5dGUgICAgICAgKnZvaWRwOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChaX1U0KSAmJiAhZGVmaW5lZChaX1NPTE8pICYmIGRlZmluZWQoU1REQykKKyMgIGluY2x1ZGUgPGxpbWl0cy5oPgorIyAgaWYgKFVJTlRfTUFYID09IDB4ZmZmZmZmZmZVTCkKKyMgICAgZGVmaW5lIFpfVTQgdW5zaWduZWQKKyMgIGVsaWYgKFVMT05HX01BWCA9PSAweGZmZmZmZmZmVUwpCisjICAgIGRlZmluZSBaX1U0IHVuc2lnbmVkIGxvbmcKKyMgIGVsaWYgKFVTSFJUX01BWCA9PSAweGZmZmZmZmZmVUwpCisjICAgIGRlZmluZSBaX1U0IHVuc2lnbmVkIHNob3J0CisjICBlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBaX1U0CisgICB0eXBlZGVmIFpfVTQgel9jcmNfdDsKKyNlbHNlCisgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgel9jcmNfdDsKKyNlbmRpZgorCisjaWYgMAkJCQkvKiBTdW5saWFuZy5MaXUgMjAxMDA5MDggc3luYyB0aGUgY29uZmlnIHRvIHRoZSBvbGQgcmV2aXNpb24sIG90aGVyd2lzZSwgZXZjIGNvbXBpbGUgZmFpbGVkLiAqLworI2lmZGVmIEhBVkVfVU5JU1REX0ggICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLworIyAgZGVmaW5lIFpfSEFWRV9VTklTVERfSAorI2VuZGlmCisjZW5kaWYgLyogMCAqLworCisjaWZkZWYgSEFWRV9TVERBUkdfSCAgICAvKiBtYXkgYmUgc2V0IHRvICNpZiAxIGJ5IC4vY29uZmlndXJlICovCisjICBkZWZpbmUgWl9IQVZFX1NUREFSR19ICisjZW5kaWYKKworI2lmIDAJCQkJLyogU3VubGlhbmcuTGl1IDIwMTAwOTA4IHN5bmMgdGhlIGNvbmZpZyB0byB0aGUgb2xkIHJldmlzaW9uLCBvdGhlcndpc2UsIGV2YyBjb21waWxlIGZhaWxlZC4gKi8KKyNpZmRlZiBTVERDCisjICBpZm5kZWYgWl9TT0xPCisjICAgIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgICAgIC8qIGZvciBvZmZfdCAqLworIyAgZW5kaWYKKyNlbmRpZgorI2VuZGlmIC8qIDAgKi8KKworI2lmIGRlZmluZWQoU1REQykgfHwgZGVmaW5lZChaX0hBVkVfU1REQVJHX0gpCisjICBpZm5kZWYgWl9TT0xPCisjICAgIGluY2x1ZGUgPHN0ZGFyZy5oPiAgICAgICAgIC8qIGZvciB2YV9saXN0ICovCisjICBlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBfV0lOMzIKKyMgIGlmbmRlZiBaX1NPTE8KKyMgICAgaW5jbHVkZSA8c3RkZGVmLmg+ICAgICAgICAgLyogZm9yIHdjaGFyX3QgKi8KKyMgIGVuZGlmCisjZW5kaWYKKworI2lmIDAJCQkJLyogU3VubGlhbmcuTGl1IDIwMTAwOTA4IHN5bmMgdGhlIGNvbmZpZyB0byB0aGUgb2xkIHJldmlzaW9uLCBvdGhlcndpc2UsIGV2YyBjb21waWxlIGZhaWxlZC4gKi8KKy8qIGEgbGl0dGxlIHRyaWNrIHRvIGFjY29tbW9kYXRlIGJvdGggIiNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRSIgYW5kCisgKiAiI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIDEiIGFzIHJlcXVlc3RpbmcgNjQtYml0IG9wZXJhdGlvbnMsIChldmVuCisgKiB0aG91Z2ggdGhlIGZvcm1lciBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBMRlMgZG9jdW1lbnQpLCBidXQgY29uc2lkZXJpbmcKKyAqIGJvdGggIiN1bmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFIiBhbmQgIiNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRSAwIiBhcworICogZXF1aXZhbGVudGx5IHJlcXVlc3Rpbmcgbm8gNjQtYml0IG9wZXJhdGlvbnMKKyAqLworI2lmIGRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkgJiYgLV9MQVJHRUZJTEU2NF9TT1VSQ0UgLSAtMSA9PSAxCisjICB1bmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKyNlbmRpZiAvKiAwICovCisKKyNpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKSAmJiAhZGVmaW5lZChaX0hBVkVfVU5JU1REX0gpCisjICBkZWZpbmUgWl9IQVZFX1VOSVNURF9ICisjZW5kaWYKKyNpZm5kZWYgWl9TT0xPCisjaWYgMAkJCQkvKiBTdW5saWFuZy5MaXUgMjAxMDA5MDggc3luYyB0aGUgY29uZmlnIHRvIHRoZSBvbGQgcmV2aXNpb24sIG90aGVyd2lzZSwgZXZjIGNvbXBpbGUgZmFpbGVkLiAqLworIyAgaWYgZGVmaW5lZChaX0hBVkVfVU5JU1REX0gpIHx8IGRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkKKyMgICAgaW5jbHVkZSA8dW5pc3RkLmg+ICAgICAgICAgLyogZm9yIFNFRUtfKiwgb2ZmX3QsIGFuZCBfTEZTNjRfTEFSR0VGSUxFICovCisjICAgIGlmZGVmIFZNUworIyAgICAgIGluY2x1ZGUgPHVuaXhpby5oPiAgICAgICAvKiBmb3Igb2ZmX3QgKi8KKyMgICAgZW5kaWYKKyMgICAgaWZuZGVmIHpfb2ZmX3QKKyMgICAgICBkZWZpbmUgel9vZmZfdCBvZmZfdAorIyAgICBlbmRpZgorIyAgZW5kaWYKKyNlbmRpZiAvKiAwICovCisjZW5kaWYKKworI2lmIGRlZmluZWQoX0xGUzY0X0xBUkdFRklMRSkgJiYgX0xGUzY0X0xBUkdFRklMRS0wCisjICBkZWZpbmUgWl9MRlM2NAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9MQVJHRUZJTEU2NF9TT1VSQ0UpICYmIGRlZmluZWQoWl9MRlM2NCkKKyMgIGRlZmluZSBaX0xBUkdFNjQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMtMCA9PSA2NCAmJiBkZWZpbmVkKFpfTEZTNjQpCisjICBkZWZpbmUgWl9XQU5UNjQKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoU0VFS19TRVQpICYmICFkZWZpbmVkKFpfU09MTykKKyMgIGRlZmluZSBTRUVLX1NFVCAgICAgICAgMCAgICAgICAvKiBTZWVrIGZyb20gYmVnaW5uaW5nIG9mIGZpbGUuICAqLworIyAgZGVmaW5lIFNFRUtfQ1VSICAgICAgICAxICAgICAgIC8qIFNlZWsgZnJvbSBjdXJyZW50IHBvc2l0aW9uLiAgKi8KKyMgIGRlZmluZSBTRUVLX0VORCAgICAgICAgMiAgICAgICAvKiBTZXQgZmlsZSBwb2ludGVyIHRvIEVPRiBwbHVzICJvZmZzZXQiICovCisjZW5kaWYKKworI2lmbmRlZiB6X29mZl90CisjICBkZWZpbmUgel9vZmZfdCBsb25nCisjZW5kaWYKKworI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZChaX0xBUkdFNjQpCisjICBkZWZpbmUgel9vZmY2NF90IG9mZjY0X3QKKyNlbHNlCisjICBpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKFpfU09MTykKKyMgICAgZGVmaW5lIHpfb2ZmNjRfdCBfX2ludDY0CisjICBlbHNlCisjICAgIGRlZmluZSB6X29mZjY0X3Qgel9vZmZfdAorIyAgZW5kaWYKKyNlbmRpZgorCisvKiBNVlMgbGlua2VyIGRvZXMgbm90IHN1cHBvcnQgZXh0ZXJuYWwgbmFtZXMgbGFyZ2VyIHRoYW4gOCBieXRlcyAqLworI2lmIGRlZmluZWQoX19NVlNfXykKKyAgI3ByYWdtYSBtYXAoZGVmbGF0ZUluaXRfLCJERUlOIikKKyAgI3ByYWdtYSBtYXAoZGVmbGF0ZUluaXQyXywiREVJTjIiKQorICAjcHJhZ21hIG1hcChkZWZsYXRlRW5kLCJERUVORCIpCisgICNwcmFnbWEgbWFwKGRlZmxhdGVCb3VuZCwiREVCTkQiKQorICAjcHJhZ21hIG1hcChpbmZsYXRlSW5pdF8sIklOSU4iKQorICAjcHJhZ21hIG1hcChpbmZsYXRlSW5pdDJfLCJJTklOMiIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVFbmQsIklORU5EIikKKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZVN5bmMsIklOU1kiKQorICAjcHJhZ21hIG1hcChpbmZsYXRlU2V0RGljdGlvbmFyeSwiSU5TRURJIikKKyAgI3ByYWdtYSBtYXAoY29tcHJlc3NCb3VuZCwiQ01CTkQiKQorICAjcHJhZ21hIG1hcChpbmZsYXRlX3RhYmxlLCJJTlRBQkwiKQorICAjcHJhZ21hIG1hcChpbmZsYXRlX2Zhc3QsIklORkEiKQorICAjcHJhZ21hIG1hcChpbmZsYXRlX2NvcHlyaWdodCwiSU5DT1BZIikKKyNlbmRpZgorCisjZW5kaWYgLyogWkNPTkZfSCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC96bGliLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L3psaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzhjYTdhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9meF96bGliL3psaWJfdjEyOC96bGliLmgKQEAgLTAsMCArMSwxODMyIEBACisvKiB6bGliLmggLS0gaW50ZXJmYWNlIG9mIHRoZSAnemxpYicgZ2VuZXJhbCBwdXJwb3NlIGNvbXByZXNzaW9uIGxpYnJhcnkKKyAgdmVyc2lvbiAxLjIuOCwgQXByaWwgMjh0aCwgMjAxMworCisgIENvcHlyaWdodCAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKKworICBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAorICB3YXJyYW50eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCisgIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCisKKyAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsCisgIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQKKyAgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorCisgIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90CisgICAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlCisgICAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQorICAgICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgorICAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQorICAgICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCisgIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uCisKKyAgSmVhbi1sb3VwIEdhaWxseSAgICAgICAgTWFyayBBZGxlcgorICBqbG91cEBnemlwLm9yZyAgICAgICAgICBtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1CisKKworICBUaGUgZGF0YSBmb3JtYXQgdXNlZCBieSB0aGUgemxpYiBsaWJyYXJ5IGlzIGRlc2NyaWJlZCBieSBSRkNzIChSZXF1ZXN0IGZvcgorICBDb21tZW50cykgMTk1MCB0byAxOTUyIGluIHRoZSBmaWxlcyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMxOTUwCisgICh6bGliIGZvcm1hdCksIHJmYzE5NTEgKGRlZmxhdGUgZm9ybWF0KSBhbmQgcmZjMTk1MiAoZ3ppcCBmb3JtYXQpLgorKi8KKworI2lmbmRlZiBaTElCX0gKKyNkZWZpbmUgWkxJQl9ICisKKyNpZmRlZiBfTVNDX1ZFUgorI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworI2VuZGlmCisKKyNkZWZpbmUgZGVmbGF0ZV9jb3B5cmlnaHQgRlBERkFQSV9kZWZsYXRlX2NvcHlyaWdodAorI2RlZmluZSBhZGxlcjMyIEZQREZBUElfYWRsZXIzMgorI2RlZmluZSBjb21wcmVzczIgRlBERkFQSV9jb21wcmVzczIKKyNkZWZpbmUgY29tcHJlc3MgRlBERkFQSV9jb21wcmVzcworI2RlZmluZSBjb21wcmVzc0JvdW5kIEZQREZBUElfY29tcHJlc3NCb3VuZAorI2RlZmluZSBnZXRfY3JjX3RhYmxlIEZQREZBUElfZ2V0X2NyY190YWJsZQorI2RlZmluZSBjcmMzMiBGUERGQVBJX2NyYzMyCisjZGVmaW5lIGRlZmxhdGVJbml0XyBGUERGQVBJX2RlZmxhdGVJbml0XworI2RlZmluZSBkZWZsYXRlSW5pdDJfIEZQREZBUElfZGVmbGF0ZUluaXQyXworI2RlZmluZSBkZWZsYXRlU2V0RGljdGlvbmFyeSBGUERGQVBJX2RlZmxhdGVTZXREaWN0aW9uYXJ5CisjZGVmaW5lIGRlZmxhdGVSZXNldCBGUERGQVBJX2RlZmxhdGVSZXNldAorI2RlZmluZSBkZWZsYXRlUHJpbWUgRlBERkFQSV9kZWZsYXRlUHJpbWUKKyNkZWZpbmUgZGVmbGF0ZVBhcmFtcyBGUERGQVBJX2RlZmxhdGVQYXJhbXMKKyNkZWZpbmUgZGVmbGF0ZUJvdW5kIEZQREZBUElfZGVmbGF0ZUJvdW5kCisjZGVmaW5lIGRlZmxhdGVTZXRIZWFkZXIgRlBERkFQSV9kZWZsYXRlU2V0SGVhZGVyCisjZGVmaW5lIGRlZmxhdGVUdW5lIEZQREZBUElfZGVmbGF0ZVR1bmUKKyNkZWZpbmUgZGVmbGF0ZSBGUERGQVBJX2RlZmxhdGUKKyNkZWZpbmUgZGVmbGF0ZUVuZCBGUERGQVBJX2RlZmxhdGVFbmQKKyNkZWZpbmUgZGVmbGF0ZUNvcHkgRlBERkFQSV9kZWZsYXRlQ29weQorI2RlZmluZSBpbmZsYXRlQmFja0luaXRfIEZQREZBUElfaW5mbGF0ZUJhY2tJbml0XworI2RlZmluZSBpbmZsYXRlQmFjayBGUERGQVBJX2luZmxhdGVCYWNrCisjZGVmaW5lIGluZmxhdGVCYWNrRW5kIEZQREZBUElfaW5mbGF0ZUJhY2tFbmQKKyNkZWZpbmUgaW5mbGF0ZVJlc2V0IEZQREZBUElfaW5mbGF0ZVJlc2V0CisjZGVmaW5lIGluZmxhdGVJbml0Ml8gRlBERkFQSV9pbmZsYXRlSW5pdDJfCisjZGVmaW5lIGluZmxhdGVJbml0XyBGUERGQVBJX2luZmxhdGVJbml0XworI2RlZmluZSBpbmZsYXRlIEZQREZBUElfaW5mbGF0ZQorI2RlZmluZSBpbmZsYXRlRW5kIEZQREZBUElfaW5mbGF0ZUVuZAorI2RlZmluZSBpbmZsYXRlU2V0RGljdGlvbmFyeSBGUERGQVBJX2luZmxhdGVTZXREaWN0aW9uYXJ5CisjZGVmaW5lIGluZmxhdGVTeW5jIEZQREZBUElfaW5mbGF0ZVN5bmMKKyNkZWZpbmUgaW5mbGF0ZVN5bmNQb2ludCBGUERGQVBJX2luZmxhdGVTeW5jUG9pbnQKKyNkZWZpbmUgaW5mbGF0ZUNvcHkgRlBERkFQSV9pbmZsYXRlQ29weQorI2RlZmluZSB1bmNvbXByZXNzIEZQREZBUElfdW5jb21wcmVzcworI2RlZmluZSB6bGliVmVyc2lvbiBGUERGQVBJX3psaWJWZXJzaW9uCisjZGVmaW5lIHpsaWJDb21waWxlRmxhZ3MgRlBERkFQSV96bGliQ29tcGlsZUZsYWdzCisjZGVmaW5lIHpFcnJvciBGUERGQVBJX3pFcnJvcgorI2RlZmluZSB6X2Vycm1zZyBGUERGQVBJX3pfZXJybXNnCisjZGVmaW5lIHpjZnJlZSBGUERGQVBJX3pjZnJlZQorI2RlZmluZSB6Y2FsbG9jIEZQREZBUElfemNhbGxvYworI2RlZmluZSBpbmZsYXRlX2Zhc3QgRlBERkFQSV9pbmZsYXRlX2Zhc3QKKyNkZWZpbmUgaW5mbGF0ZV90YWJsZSBGUERGQVBJX2luZmxhdGVfdGFibGUKKyNkZWZpbmUgaW5mbGF0ZV9jb3B5cmlnaHQgRlBERkFQSV9pbmZsYXRlX2NvcHlyaWdodAorI2RlZmluZSBfbGVuZ3RoX2NvZGUgRlBERkFQSV9sZW5ndGhfY29kZQorI2RlZmluZSBfdHJfZmx1c2hfYmxvY2sgRlBERkFQSV90cl9mbHVzaF9ibG9jaworI2RlZmluZSBfZGlzdF9jb2RlIEZQREZBUElfZGlzdF9jb2RlCisjZGVmaW5lIF90cl9zdG9yZWRfYmxvY2sgRlBERkFQSV90cl9zdG9yZWRfYmxvY2sKKyNkZWZpbmUgX3RyX2luaXQgRlBERkFQSV90cl9pbml0CisjZGVmaW5lIF90cl9hbGlnbiBGUERGQVBJX3RyX2FsaWduCisjZGVmaW5lIF90cl90YWxseSBGUERGQVBJX3RyX3RhbGx5CisjZGVmaW5lIGFkbGVyMzJfY29tYmluZSBGUERGQVBJX2FkbGVyMzJfY29tYmluZQorI2RlZmluZSBpbmZsYXRlUHJpbWUgRlBERkFQSV9pbmZsYXRlUHJpbWUKKyNkZWZpbmUgaW5mbGF0ZUdldEhlYWRlciBGUERGQVBJX2luZmxhdGVHZXRIZWFkZXIKKyNkZWZpbmUgY3JjMzJfY29tYmluZSBGUERGQVBJX2NyYzMyX2NvbWJpbmUKKyNkZWZpbmUgaW5mbGF0ZVJlc2V0MiBGUERGQVBJX2luZmxhdGVSZXNldDIKKyNkZWZpbmUgaW5mbGF0ZVVuZGVybWluZSBGUERGQVBJX2luZmxhdGVVbmRlcm1pbmUKKyNkZWZpbmUgaW5mbGF0ZU1hcmsgRlBERkFQSV9pbmZsYXRlTWFyaworI2RlZmluZSBhZGxlcjMyX2NvbWJpbmU2NCBGUERGQVBJX2FkbGVyMzJfY29tYmluZTY0CisKKyNpbmNsdWRlICJ6Y29uZi5oIgorCisvKiBTdW5saWFuZy5MaXUgMjAxMDA5MDggc3luYyB0aGUgY29uZmlnIHRvIHRoZSBvbGQgcmV2aXNpb24uIE5PX0daSVAgKi8KKyNkZWZpbmUgTk9fR1pJUAkJLyogWFlRICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmluZSBaTElCX1ZFUlNJT04gIjEuMi44IgorI2RlZmluZSBaTElCX1ZFUk5VTSAweDEyODAKKyNkZWZpbmUgWkxJQl9WRVJfTUFKT1IgMQorI2RlZmluZSBaTElCX1ZFUl9NSU5PUiAyCisjZGVmaW5lIFpMSUJfVkVSX1JFVklTSU9OIDgKKyNkZWZpbmUgWkxJQl9WRVJfU1VCUkVWSVNJT04gMAorCisvKgorICAgIFRoZSAnemxpYicgY29tcHJlc3Npb24gbGlicmFyeSBwcm92aWRlcyBpbi1tZW1vcnkgY29tcHJlc3Npb24gYW5kCisgIGRlY29tcHJlc3Npb24gZnVuY3Rpb25zLCBpbmNsdWRpbmcgaW50ZWdyaXR5IGNoZWNrcyBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEuCisgIFRoaXMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBzdXBwb3J0cyBvbmx5IG9uZSBjb21wcmVzc2lvbiBtZXRob2QgKGRlZmxhdGlvbikKKyAgYnV0IG90aGVyIGFsZ29yaXRobXMgd2lsbCBiZSBhZGRlZCBsYXRlciBhbmQgd2lsbCBoYXZlIHRoZSBzYW1lIHN0cmVhbQorICBpbnRlcmZhY2UuCisKKyAgICBDb21wcmVzc2lvbiBjYW4gYmUgZG9uZSBpbiBhIHNpbmdsZSBzdGVwIGlmIHRoZSBidWZmZXJzIGFyZSBsYXJnZSBlbm91Z2gsCisgIG9yIGNhbiBiZSBkb25lIGJ5IHJlcGVhdGVkIGNhbGxzIG9mIHRoZSBjb21wcmVzc2lvbiBmdW5jdGlvbi4gIEluIHRoZSBsYXR0ZXIKKyAgY2FzZSwgdGhlIGFwcGxpY2F0aW9uIG11c3QgcHJvdmlkZSBtb3JlIGlucHV0IGFuZC9vciBjb25zdW1lIHRoZSBvdXRwdXQKKyAgKHByb3ZpZGluZyBtb3JlIG91dHB1dCBzcGFjZSkgYmVmb3JlIGVhY2ggY2FsbC4KKworICAgIFRoZSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0IHVzZWQgYnkgZGVmYXVsdCBieSB0aGUgaW4tbWVtb3J5IGZ1bmN0aW9ucyBpcworICB0aGUgemxpYiBmb3JtYXQsIHdoaWNoIGlzIGEgemxpYiB3cmFwcGVyIGRvY3VtZW50ZWQgaW4gUkZDIDE5NTAsIHdyYXBwZWQKKyAgYXJvdW5kIGEgZGVmbGF0ZSBzdHJlYW0sIHdoaWNoIGlzIGl0c2VsZiBkb2N1bWVudGVkIGluIFJGQyAxOTUxLgorCisgICAgVGhlIGxpYnJhcnkgYWxzbyBzdXBwb3J0cyByZWFkaW5nIGFuZCB3cml0aW5nIGZpbGVzIGluIGd6aXAgKC5neikgZm9ybWF0CisgIHdpdGggYW4gaW50ZXJmYWNlIHNpbWlsYXIgdG8gdGhhdCBvZiBzdGRpbyB1c2luZyB0aGUgZnVuY3Rpb25zIHRoYXQgc3RhcnQKKyAgd2l0aCAiZ3oiLiAgVGhlIGd6aXAgZm9ybWF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSB6bGliIGZvcm1hdC4gIGd6aXAgaXMgYQorICBnemlwIHdyYXBwZXIsIGRvY3VtZW50ZWQgaW4gUkZDIDE5NTIsIHdyYXBwZWQgYXJvdW5kIGEgZGVmbGF0ZSBzdHJlYW0uCisKKyAgICBUaGlzIGxpYnJhcnkgY2FuIG9wdGlvbmFsbHkgcmVhZCBhbmQgd3JpdGUgZ3ppcCBzdHJlYW1zIGluIG1lbW9yeSBhcyB3ZWxsLgorCisgICAgVGhlIHpsaWIgZm9ybWF0IHdhcyBkZXNpZ25lZCB0byBiZSBjb21wYWN0IGFuZCBmYXN0IGZvciB1c2UgaW4gbWVtb3J5CisgIGFuZCBvbiBjb21tdW5pY2F0aW9ucyBjaGFubmVscy4gIFRoZSBnemlwIGZvcm1hdCB3YXMgZGVzaWduZWQgZm9yIHNpbmdsZS0KKyAgZmlsZSBjb21wcmVzc2lvbiBvbiBmaWxlIHN5c3RlbXMsIGhhcyBhIGxhcmdlciBoZWFkZXIgdGhhbiB6bGliIHRvIG1haW50YWluCisgIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiwgYW5kIHVzZXMgYSBkaWZmZXJlbnQsIHNsb3dlciBjaGVjayBtZXRob2QgdGhhbiB6bGliLgorCisgICAgVGhlIGxpYnJhcnkgZG9lcyBub3QgaW5zdGFsbCBhbnkgc2lnbmFsIGhhbmRsZXIuICBUaGUgZGVjb2RlciBjaGVja3MKKyAgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSBjb21wcmVzc2VkIGRhdGEsIHNvIHRoZSBsaWJyYXJ5IHNob3VsZCBuZXZlciBjcmFzaAorICBldmVuIGluIGNhc2Ugb2YgY29ycnVwdGVkIGlucHV0LgorKi8KKwordHlwZWRlZiB2b2lkcGYgKCphbGxvY19mdW5jKSBPRigodm9pZHBmIG9wYXF1ZSwgdUludCBpdGVtcywgdUludCBzaXplKSk7Cit0eXBlZGVmIHZvaWQgICAoKmZyZWVfZnVuYykgIE9GKCh2b2lkcGYgb3BhcXVlLCB2b2lkcGYgYWRkcmVzcykpOworCitzdHJ1Y3QgaW50ZXJuYWxfc3RhdGU7CisKK3R5cGVkZWYgc3RydWN0IHpfc3RyZWFtX3MgeworICAgIHpfY29uc3QgQnl0ZWYgKm5leHRfaW47ICAgICAvKiBuZXh0IGlucHV0IGJ5dGUgKi8KKyAgICB1SW50ICAgICBhdmFpbF9pbjsgIC8qIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgYXQgbmV4dF9pbiAqLworICAgIHVMb25nICAgIHRvdGFsX2luOyAgLyogdG90YWwgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHJlYWQgc28gZmFyICovCisKKyAgICBCeXRlZiAgICAqbmV4dF9vdXQ7IC8qIG5leHQgb3V0cHV0IGJ5dGUgc2hvdWxkIGJlIHB1dCB0aGVyZSAqLworICAgIHVJbnQgICAgIGF2YWlsX291dDsgLyogcmVtYWluaW5nIGZyZWUgc3BhY2UgYXQgbmV4dF9vdXQgKi8KKyAgICB1TG9uZyAgICB0b3RhbF9vdXQ7IC8qIHRvdGFsIG51bWJlciBvZiBieXRlcyBvdXRwdXQgc28gZmFyICovCisKKyAgICB6X2NvbnN0IGNoYXIgKm1zZzsgIC8qIGxhc3QgZXJyb3IgbWVzc2FnZSwgTlVMTCBpZiBubyBlcnJvciAqLworICAgIHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSBGQVIgKnN0YXRlOyAvKiBub3QgdmlzaWJsZSBieSBhcHBsaWNhdGlvbnMgKi8KKworICAgIGFsbG9jX2Z1bmMgemFsbG9jOyAgLyogdXNlZCB0byBhbGxvY2F0ZSB0aGUgaW50ZXJuYWwgc3RhdGUgKi8KKyAgICBmcmVlX2Z1bmMgIHpmcmVlOyAgIC8qIHVzZWQgdG8gZnJlZSB0aGUgaW50ZXJuYWwgc3RhdGUgKi8KKyAgICB2b2lkcGYgICAgIG9wYXF1ZTsgIC8qIHByaXZhdGUgZGF0YSBvYmplY3QgcGFzc2VkIHRvIHphbGxvYyBhbmQgemZyZWUgKi8KKworICAgIGludCAgICAgZGF0YV90eXBlOyAgLyogYmVzdCBndWVzcyBhYm91dCB0aGUgZGF0YSB0eXBlOiBiaW5hcnkgb3IgdGV4dCAqLworICAgIHVMb25nICAgYWRsZXI7ICAgICAgLyogYWRsZXIzMiB2YWx1ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgKi8KKyAgICB1TG9uZyAgIHJlc2VydmVkOyAgIC8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCit9IHpfc3RyZWFtOworCit0eXBlZGVmIHpfc3RyZWFtIEZBUiAqel9zdHJlYW1wOworCisvKgorICAgICBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiBwYXNzZWQgdG8gYW5kIGZyb20gemxpYiByb3V0aW5lcy4gIFNlZSBSRkMgMTk1MgorICBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBtZWFuaW5ncyBvZiB0aGVzZSBmaWVsZHMuCisqLwordHlwZWRlZiBzdHJ1Y3QgZ3pfaGVhZGVyX3MgeworICAgIGludCAgICAgdGV4dDsgICAgICAgLyogdHJ1ZSBpZiBjb21wcmVzc2VkIGRhdGEgYmVsaWV2ZWQgdG8gYmUgdGV4dCAqLworICAgIHVMb25nICAgdGltZTsgICAgICAgLyogbW9kaWZpY2F0aW9uIHRpbWUgKi8KKyAgICBpbnQgICAgIHhmbGFnczsgICAgIC8qIGV4dHJhIGZsYWdzIChub3QgdXNlZCB3aGVuIHdyaXRpbmcgYSBnemlwIGZpbGUpICovCisgICAgaW50ICAgICBvczsgICAgICAgICAvKiBvcGVyYXRpbmcgc3lzdGVtICovCisgICAgQnl0ZWYgICAqZXh0cmE7ICAgICAvKiBwb2ludGVyIHRvIGV4dHJhIGZpZWxkIG9yIFpfTlVMTCBpZiBub25lICovCisgICAgdUludCAgICBleHRyYV9sZW47ICAvKiBleHRyYSBmaWVsZCBsZW5ndGggKHZhbGlkIGlmIGV4dHJhICE9IFpfTlVMTCkgKi8KKyAgICB1SW50ICAgIGV4dHJhX21heDsgIC8qIHNwYWNlIGF0IGV4dHJhIChvbmx5IHdoZW4gcmVhZGluZyBoZWFkZXIpICovCisgICAgQnl0ZWYgICAqbmFtZTsgICAgICAvKiBwb2ludGVyIHRvIHplcm8tdGVybWluYXRlZCBmaWxlIG5hbWUgb3IgWl9OVUxMICovCisgICAgdUludCAgICBuYW1lX21heDsgICAvKiBzcGFjZSBhdCBuYW1lIChvbmx5IHdoZW4gcmVhZGluZyBoZWFkZXIpICovCisgICAgQnl0ZWYgICAqY29tbWVudDsgICAvKiBwb2ludGVyIHRvIHplcm8tdGVybWluYXRlZCBjb21tZW50IG9yIFpfTlVMTCAqLworICAgIHVJbnQgICAgY29tbV9tYXg7ICAgLyogc3BhY2UgYXQgY29tbWVudCAob25seSB3aGVuIHJlYWRpbmcgaGVhZGVyKSAqLworICAgIGludCAgICAgaGNyYzsgICAgICAgLyogdHJ1ZSBpZiB0aGVyZSB3YXMgb3Igd2lsbCBiZSBhIGhlYWRlciBjcmMgKi8KKyAgICBpbnQgICAgIGRvbmU7ICAgICAgIC8qIHRydWUgd2hlbiBkb25lIHJlYWRpbmcgZ3ppcCBoZWFkZXIgKG5vdCB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHdyaXRpbmcgYSBnemlwIGZpbGUpICovCit9IGd6X2hlYWRlcjsKKwordHlwZWRlZiBnel9oZWFkZXIgRkFSICpnel9oZWFkZXJwOworCisvKgorICAgICBUaGUgYXBwbGljYXRpb24gbXVzdCB1cGRhdGUgbmV4dF9pbiBhbmQgYXZhaWxfaW4gd2hlbiBhdmFpbF9pbiBoYXMgZHJvcHBlZAorICAgdG8gemVyby4gIEl0IG11c3QgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgd2hlbiBhdmFpbF9vdXQgaGFzIGRyb3BwZWQKKyAgIHRvIHplcm8uICBUaGUgYXBwbGljYXRpb24gbXVzdCBpbml0aWFsaXplIHphbGxvYywgemZyZWUgYW5kIG9wYXF1ZSBiZWZvcmUKKyAgIGNhbGxpbmcgdGhlIGluaXQgZnVuY3Rpb24uICBBbGwgb3RoZXIgZmllbGRzIGFyZSBzZXQgYnkgdGhlIGNvbXByZXNzaW9uCisgICBsaWJyYXJ5IGFuZCBtdXN0IG5vdCBiZSB1cGRhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKworICAgICBUaGUgb3BhcXVlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiB3aWxsIGJlIHBhc3NlZCBhcyB0aGUgZmlyc3QKKyAgIHBhcmFtZXRlciBmb3IgY2FsbHMgb2YgemFsbG9jIGFuZCB6ZnJlZS4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgY3VzdG9tCisgICBtZW1vcnkgbWFuYWdlbWVudC4gIFRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5IGF0dGFjaGVzIG5vIG1lYW5pbmcgdG8gdGhlCisgICBvcGFxdWUgdmFsdWUuCisKKyAgICAgemFsbG9jIG11c3QgcmV0dXJuIFpfTlVMTCBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSBmb3IgdGhlIG9iamVjdC4KKyAgIElmIHpsaWIgaXMgdXNlZCBpbiBhIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9uLCB6YWxsb2MgYW5kIHpmcmVlIG11c3QgYmUKKyAgIHRocmVhZCBzYWZlLgorCisgICAgIE9uIDE2LWJpdCBzeXN0ZW1zLCB0aGUgZnVuY3Rpb25zIHphbGxvYyBhbmQgemZyZWUgbXVzdCBiZSBhYmxlIHRvIGFsbG9jYXRlCisgICBleGFjdGx5IDY1NTM2IGJ5dGVzLCBidXQgd2lsbCBub3QgYmUgcmVxdWlyZWQgdG8gYWxsb2NhdGUgbW9yZSB0aGFuIHRoaXMgaWYKKyAgIHRoZSBzeW1ib2wgTUFYU0VHXzY0SyBpcyBkZWZpbmVkIChzZWUgemNvbmYuaCkuICBXQVJOSU5HOiBPbiBNU0RPUywgcG9pbnRlcnMKKyAgIHJldHVybmVkIGJ5IHphbGxvYyBmb3Igb2JqZWN0cyBvZiBleGFjdGx5IDY1NTM2IGJ5dGVzICptdXN0KiBoYXZlIHRoZWlyCisgICBvZmZzZXQgbm9ybWFsaXplZCB0byB6ZXJvLiAgVGhlIGRlZmF1bHQgYWxsb2NhdGlvbiBmdW5jdGlvbiBwcm92aWRlZCBieSB0aGlzCisgICBsaWJyYXJ5IGVuc3VyZXMgdGhpcyAoc2VlIHp1dGlsLmMpLiAgVG8gcmVkdWNlIG1lbW9yeSByZXF1aXJlbWVudHMgYW5kIGF2b2lkCisgICBhbnkgYWxsb2NhdGlvbiBvZiA2NEsgb2JqZWN0cywgYXQgdGhlIGV4cGVuc2Ugb2YgY29tcHJlc3Npb24gcmF0aW8sIGNvbXBpbGUKKyAgIHRoZSBsaWJyYXJ5IHdpdGggLURNQVhfV0JJVFM9MTQgKHNlZSB6Y29uZi5oKS4KKworICAgICBUaGUgZmllbGRzIHRvdGFsX2luIGFuZCB0b3RhbF9vdXQgY2FuIGJlIHVzZWQgZm9yIHN0YXRpc3RpY3Mgb3IgcHJvZ3Jlc3MKKyAgIHJlcG9ydHMuICBBZnRlciBjb21wcmVzc2lvbiwgdG90YWxfaW4gaG9sZHMgdGhlIHRvdGFsIHNpemUgb2YgdGhlCisgICB1bmNvbXByZXNzZWQgZGF0YSBhbmQgbWF5IGJlIHNhdmVkIGZvciB1c2UgaW4gdGhlIGRlY29tcHJlc3NvciAocGFydGljdWxhcmx5CisgICBpZiB0aGUgZGVjb21wcmVzc29yIHdhbnRzIHRvIGRlY29tcHJlc3MgZXZlcnl0aGluZyBpbiBhIHNpbmdsZSBzdGVwKS4KKyovCisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbnN0YW50cyAqLworCisjZGVmaW5lIFpfTk9fRkxVU0ggICAgICAwCisjZGVmaW5lIFpfUEFSVElBTF9GTFVTSCAxCisjZGVmaW5lIFpfU1lOQ19GTFVTSCAgICAyCisjZGVmaW5lIFpfRlVMTF9GTFVTSCAgICAzCisjZGVmaW5lIFpfRklOSVNIICAgICAgICA0CisjZGVmaW5lIFpfQkxPQ0sgICAgICAgICA1CisjZGVmaW5lIFpfVFJFRVMgICAgICAgICA2CisvKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovCisKKyNkZWZpbmUgWl9PSyAgICAgICAgICAgIDAKKyNkZWZpbmUgWl9TVFJFQU1fRU5EICAgIDEKKyNkZWZpbmUgWl9ORUVEX0RJQ1QgICAgIDIKKyNkZWZpbmUgWl9FUlJOTyAgICAgICAgKC0xKQorI2RlZmluZSBaX1NUUkVBTV9FUlJPUiAoLTIpCisjZGVmaW5lIFpfREFUQV9FUlJPUiAgICgtMykKKyNkZWZpbmUgWl9NRU1fRVJST1IgICAgKC00KQorI2RlZmluZSBaX0JVRl9FUlJPUiAgICAoLTUpCisjZGVmaW5lIFpfVkVSU0lPTl9FUlJPUiAoLTYpCisvKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzCisgKiBhcmUgZXJyb3JzLCBwb3NpdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgZm9yIHNwZWNpYWwgYnV0IG5vcm1hbCBldmVudHMuCisgKi8KKworI2RlZmluZSBaX05PX0NPTVBSRVNTSU9OICAgICAgICAgMAorI2RlZmluZSBaX0JFU1RfU1BFRUQgICAgICAgICAgICAgMQorI2RlZmluZSBaX0JFU1RfQ09NUFJFU1NJT04gICAgICAgOQorI2RlZmluZSBaX0RFRkFVTFRfQ09NUFJFU1NJT04gICgtMSkKKy8qIGNvbXByZXNzaW9uIGxldmVscyAqLworCisjZGVmaW5lIFpfRklMVEVSRUQgICAgICAgICAgICAxCisjZGVmaW5lIFpfSFVGRk1BTl9PTkxZICAgICAgICAyCisjZGVmaW5lIFpfUkxFICAgICAgICAgICAgICAgICAzCisjZGVmaW5lIFpfRklYRUQgICAgICAgICAgICAgICA0CisjZGVmaW5lIFpfREVGQVVMVF9TVFJBVEVHWSAgICAwCisvKiBjb21wcmVzc2lvbiBzdHJhdGVneTsgc2VlIGRlZmxhdGVJbml0MigpIGJlbG93IGZvciBkZXRhaWxzICovCisKKyNkZWZpbmUgWl9CSU5BUlkgICAwCisjZGVmaW5lIFpfVEVYVCAgICAgMQorI2RlZmluZSBaX0FTQ0lJICAgIFpfVEVYVCAgIC8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggMS4yLjIgYW5kIGVhcmxpZXIgKi8KKyNkZWZpbmUgWl9VTktOT1dOICAyCisvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovCisKKyNkZWZpbmUgWl9ERUZMQVRFRCAgIDgKKy8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAodGhlIG9ubHkgb25lIHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24pICovCisKKyNkZWZpbmUgWl9OVUxMICAwICAvKiBmb3IgaW5pdGlhbGl6aW5nIHphbGxvYywgemZyZWUsIG9wYXF1ZSAqLworCisjZGVmaW5lIHpsaWJfdmVyc2lvbiB6bGliVmVyc2lvbigpCisvKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHZlcnNpb25zIDwgMS4wLjIgKi8KKworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBiYXNpYyBmdW5jdGlvbnMgKi8KKworWkVYVEVSTiBjb25zdCBjaGFyICogWkVYUE9SVCB6bGliVmVyc2lvbiBPRigodm9pZCkpOworLyogVGhlIGFwcGxpY2F0aW9uIGNhbiBjb21wYXJlIHpsaWJWZXJzaW9uIGFuZCBaTElCX1ZFUlNJT04gZm9yIGNvbnNpc3RlbmN5LgorICAgSWYgdGhlIGZpcnN0IGNoYXJhY3RlciBkaWZmZXJzLCB0aGUgbGlicmFyeSBjb2RlIGFjdHVhbGx5IHVzZWQgaXMgbm90CisgICBjb21wYXRpYmxlIHdpdGggdGhlIHpsaWIuaCBoZWFkZXIgZmlsZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gIFRoaXMgY2hlY2sKKyAgIGlzIGF1dG9tYXRpY2FsbHkgbWFkZSBieSBkZWZsYXRlSW5pdCBhbmQgaW5mbGF0ZUluaXQuCisgKi8KKworLyoKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUluaXQgT0YoKHpfc3RyZWFtcCBzdHJtLCBpbnQgbGV2ZWwpKTsKKworICAgICBJbml0aWFsaXplcyB0aGUgaW50ZXJuYWwgc3RyZWFtIHN0YXRlIGZvciBjb21wcmVzc2lvbi4gIFRoZSBmaWVsZHMKKyAgIHphbGxvYywgemZyZWUgYW5kIG9wYXF1ZSBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBieSB0aGUgY2FsbGVyLiAgSWYKKyAgIHphbGxvYyBhbmQgemZyZWUgYXJlIHNldCB0byBaX05VTEwsIGRlZmxhdGVJbml0IHVwZGF0ZXMgdGhlbSB0byB1c2UgZGVmYXVsdAorICAgYWxsb2NhdGlvbiBmdW5jdGlvbnMuCisKKyAgICAgVGhlIGNvbXByZXNzaW9uIGxldmVsIG11c3QgYmUgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCBvciBiZXR3ZWVuIDAgYW5kIDk6CisgICAxIGdpdmVzIGJlc3Qgc3BlZWQsIDkgZ2l2ZXMgYmVzdCBjb21wcmVzc2lvbiwgMCBnaXZlcyBubyBjb21wcmVzc2lvbiBhdCBhbGwKKyAgICh0aGUgaW5wdXQgZGF0YSBpcyBzaW1wbHkgY29waWVkIGEgYmxvY2sgYXQgYSB0aW1lKS4gIFpfREVGQVVMVF9DT01QUkVTU0lPTgorICAgcmVxdWVzdHMgYSBkZWZhdWx0IGNvbXByb21pc2UgYmV0d2VlbiBzcGVlZCBhbmQgY29tcHJlc3Npb24gKGN1cnJlbnRseQorICAgZXF1aXZhbGVudCB0byBsZXZlbCA2KS4KKworICAgICBkZWZsYXRlSW5pdCByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKKyAgIG1lbW9yeSwgWl9TVFJFQU1fRVJST1IgaWYgbGV2ZWwgaXMgbm90IGEgdmFsaWQgY29tcHJlc3Npb24gbGV2ZWwsIG9yCisgICBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHpsaWIgbGlicmFyeSB2ZXJzaW9uICh6bGliX3ZlcnNpb24pIGlzIGluY29tcGF0aWJsZQorICAgd2l0aCB0aGUgdmVyc2lvbiBhc3N1bWVkIGJ5IHRoZSBjYWxsZXIgKFpMSUJfVkVSU0lPTikuICBtc2cgaXMgc2V0IHRvIG51bGwKKyAgIGlmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UuICBkZWZsYXRlSW5pdCBkb2VzIG5vdCBwZXJmb3JtIGFueSBjb21wcmVzc2lvbjoKKyAgIHRoaXMgd2lsbCBiZSBkb25lIGJ5IGRlZmxhdGUoKS4KKyovCisKKworWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlIE9GKCh6X3N0cmVhbXAgc3RybSwgaW50IGZsdXNoKSk7CisvKgorICAgIGRlZmxhdGUgY29tcHJlc3NlcyBhcyBtdWNoIGRhdGEgYXMgcG9zc2libGUsIGFuZCBzdG9wcyB3aGVuIHRoZSBpbnB1dAorICBidWZmZXIgYmVjb21lcyBlbXB0eSBvciB0aGUgb3V0cHV0IGJ1ZmZlciBiZWNvbWVzIGZ1bGwuICBJdCBtYXkgaW50cm9kdWNlCisgIHNvbWUgb3V0cHV0IGxhdGVuY3kgKHJlYWRpbmcgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYW55IG91dHB1dCkgZXhjZXB0IHdoZW4KKyAgZm9yY2VkIHRvIGZsdXNoLgorCisgICAgVGhlIGRldGFpbGVkIHNlbWFudGljcyBhcmUgYXMgZm9sbG93cy4gIGRlZmxhdGUgcGVyZm9ybXMgb25lIG9yIGJvdGggb2YgdGhlCisgIGZvbGxvd2luZyBhY3Rpb25zOgorCisgIC0gQ29tcHJlc3MgbW9yZSBpbnB1dCBzdGFydGluZyBhdCBuZXh0X2luIGFuZCB1cGRhdGUgbmV4dF9pbiBhbmQgYXZhaWxfaW4KKyAgICBhY2NvcmRpbmdseS4gIElmIG5vdCBhbGwgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZCAoYmVjYXVzZSB0aGVyZSBpcyBub3QKKyAgICBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciksIG5leHRfaW4gYW5kIGF2YWlsX2luIGFyZSB1cGRhdGVkIGFuZAorICAgIHByb2Nlc3Npbmcgd2lsbCByZXN1bWUgYXQgdGhpcyBwb2ludCBmb3IgdGhlIG5leHQgY2FsbCBvZiBkZWZsYXRlKCkuCisKKyAgLSBQcm92aWRlIG1vcmUgb3V0cHV0IHN0YXJ0aW5nIGF0IG5leHRfb3V0IGFuZCB1cGRhdGUgbmV4dF9vdXQgYW5kIGF2YWlsX291dAorICAgIGFjY29yZGluZ2x5LiAgVGhpcyBhY3Rpb24gaXMgZm9yY2VkIGlmIHRoZSBwYXJhbWV0ZXIgZmx1c2ggaXMgbm9uIHplcm8uCisgICAgRm9yY2luZyBmbHVzaCBmcmVxdWVudGx5IGRlZ3JhZGVzIHRoZSBjb21wcmVzc2lvbiByYXRpbywgc28gdGhpcyBwYXJhbWV0ZXIKKyAgICBzaG91bGQgYmUgc2V0IG9ubHkgd2hlbiBuZWNlc3NhcnkgKGluIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucykuICBTb21lCisgICAgb3V0cHV0IG1heSBiZSBwcm92aWRlZCBldmVuIGlmIGZsdXNoIGlzIG5vdCBzZXQuCisKKyAgICBCZWZvcmUgdGhlIGNhbGwgb2YgZGVmbGF0ZSgpLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0CisgIG9uZSBvZiB0aGUgYWN0aW9ucyBpcyBwb3NzaWJsZSwgYnkgcHJvdmlkaW5nIG1vcmUgaW5wdXQgYW5kL29yIGNvbnN1bWluZyBtb3JlCisgIG91dHB1dCwgYW5kIHVwZGF0aW5nIGF2YWlsX2luIG9yIGF2YWlsX291dCBhY2NvcmRpbmdseTsgYXZhaWxfb3V0IHNob3VsZAorICBuZXZlciBiZSB6ZXJvIGJlZm9yZSB0aGUgY2FsbC4gIFRoZSBhcHBsaWNhdGlvbiBjYW4gY29uc3VtZSB0aGUgY29tcHJlc3NlZAorICBvdXRwdXQgd2hlbiBpdCB3YW50cywgZm9yIGV4YW1wbGUgd2hlbiB0aGUgb3V0cHV0IGJ1ZmZlciBpcyBmdWxsIChhdmFpbF9vdXQKKyAgPT0gMCksIG9yIGFmdGVyIGVhY2ggY2FsbCBvZiBkZWZsYXRlKCkuICBJZiBkZWZsYXRlIHJldHVybnMgWl9PSyBhbmQgd2l0aAorICB6ZXJvIGF2YWlsX291dCwgaXQgbXVzdCBiZSBjYWxsZWQgYWdhaW4gYWZ0ZXIgbWFraW5nIHJvb20gaW4gdGhlIG91dHB1dAorICBidWZmZXIgYmVjYXVzZSB0aGVyZSBtaWdodCBiZSBtb3JlIG91dHB1dCBwZW5kaW5nLgorCisgICAgTm9ybWFsbHkgdGhlIHBhcmFtZXRlciBmbHVzaCBpcyBzZXQgdG8gWl9OT19GTFVTSCwgd2hpY2ggYWxsb3dzIGRlZmxhdGUgdG8KKyAgZGVjaWRlIGhvdyBtdWNoIGRhdGEgdG8gYWNjdW11bGF0ZSBiZWZvcmUgcHJvZHVjaW5nIG91dHB1dCwgaW4gb3JkZXIgdG8KKyAgbWF4aW1pemUgY29tcHJlc3Npb24uCisKKyAgICBJZiB0aGUgcGFyYW1ldGVyIGZsdXNoIGlzIHNldCB0byBaX1NZTkNfRkxVU0gsIGFsbCBwZW5kaW5nIG91dHB1dCBpcworICBmbHVzaGVkIHRvIHRoZSBvdXRwdXQgYnVmZmVyIGFuZCB0aGUgb3V0cHV0IGlzIGFsaWduZWQgb24gYSBieXRlIGJvdW5kYXJ5LCBzbworICB0aGF0IHRoZSBkZWNvbXByZXNzb3IgY2FuIGdldCBhbGwgaW5wdXQgZGF0YSBhdmFpbGFibGUgc28gZmFyLiAgKEluCisgIHBhcnRpY3VsYXIgYXZhaWxfaW4gaXMgemVybyBhZnRlciB0aGUgY2FsbCBpZiBlbm91Z2ggb3V0cHV0IHNwYWNlIGhhcyBiZWVuCisgIHByb3ZpZGVkIGJlZm9yZSB0aGUgY2FsbC4pIEZsdXNoaW5nIG1heSBkZWdyYWRlIGNvbXByZXNzaW9uIGZvciBzb21lCisgIGNvbXByZXNzaW9uIGFsZ29yaXRobXMgYW5kIHNvIGl0IHNob3VsZCBiZSB1c2VkIG9ubHkgd2hlbiBuZWNlc3NhcnkuICBUaGlzCisgIGNvbXBsZXRlcyB0aGUgY3VycmVudCBkZWZsYXRlIGJsb2NrIGFuZCBmb2xsb3dzIGl0IHdpdGggYW4gZW1wdHkgc3RvcmVkIGJsb2NrCisgIHRoYXQgaXMgdGhyZWUgYml0cyBwbHVzIGZpbGxlciBiaXRzIHRvIHRoZSBuZXh0IGJ5dGUsIGZvbGxvd2VkIGJ5IGZvdXIgYnl0ZXMKKyAgKDAwIDAwIGZmIGZmKS4KKworICAgIElmIGZsdXNoIGlzIHNldCB0byBaX1BBUlRJQUxfRkxVU0gsIGFsbCBwZW5kaW5nIG91dHB1dCBpcyBmbHVzaGVkIHRvIHRoZQorICBvdXRwdXQgYnVmZmVyLCBidXQgdGhlIG91dHB1dCBpcyBub3QgYWxpZ25lZCB0byBhIGJ5dGUgYm91bmRhcnkuICBBbGwgb2YgdGhlCisgIGlucHV0IGRhdGEgc28gZmFyIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBkZWNvbXByZXNzb3IsIGFzIGZvciBaX1NZTkNfRkxVU0guCisgIFRoaXMgY29tcGxldGVzIHRoZSBjdXJyZW50IGRlZmxhdGUgYmxvY2sgYW5kIGZvbGxvd3MgaXQgd2l0aCBhbiBlbXB0eSBmaXhlZAorICBjb2RlcyBibG9jayB0aGF0IGlzIDEwIGJpdHMgbG9uZy4gIFRoaXMgYXNzdXJlcyB0aGF0IGVub3VnaCBieXRlcyBhcmUgb3V0cHV0CisgIGluIG9yZGVyIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIGZpbmlzaCB0aGUgYmxvY2sgYmVmb3JlIHRoZSBlbXB0eSBmaXhlZCBjb2RlCisgIGJsb2NrLgorCisgICAgSWYgZmx1c2ggaXMgc2V0IHRvIFpfQkxPQ0ssIGEgZGVmbGF0ZSBibG9jayBpcyBjb21wbGV0ZWQgYW5kIGVtaXR0ZWQsIGFzCisgIGZvciBaX1NZTkNfRkxVU0gsIGJ1dCB0aGUgb3V0cHV0IGlzIG5vdCBhbGlnbmVkIG9uIGEgYnl0ZSBib3VuZGFyeSwgYW5kIHVwIHRvCisgIHNldmVuIGJpdHMgb2YgdGhlIGN1cnJlbnQgYmxvY2sgYXJlIGhlbGQgdG8gYmUgd3JpdHRlbiBhcyB0aGUgbmV4dCBieXRlIGFmdGVyCisgIHRoZSBuZXh0IGRlZmxhdGUgYmxvY2sgaXMgY29tcGxldGVkLiAgSW4gdGhpcyBjYXNlLCB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKKyAgYmUgcHJvdmlkZWQgZW5vdWdoIGJpdHMgYXQgdGhpcyBwb2ludCBpbiBvcmRlciB0byBjb21wbGV0ZSBkZWNvbXByZXNzaW9uIG9mCisgIHRoZSBkYXRhIHByb3ZpZGVkIHNvIGZhciB0byB0aGUgY29tcHJlc3Nvci4gIEl0IG1heSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0CisgIGJsb2NrIHRvIGJlIGVtaXR0ZWQuICBUaGlzIGlzIGZvciBhZHZhbmNlZCBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRvIGNvbnRyb2wKKyAgdGhlIGVtaXNzaW9uIG9mIGRlZmxhdGUgYmxvY2tzLgorCisgICAgSWYgZmx1c2ggaXMgc2V0IHRvIFpfRlVMTF9GTFVTSCwgYWxsIG91dHB1dCBpcyBmbHVzaGVkIGFzIHdpdGgKKyAgWl9TWU5DX0ZMVVNILCBhbmQgdGhlIGNvbXByZXNzaW9uIHN0YXRlIGlzIHJlc2V0IHNvIHRoYXQgZGVjb21wcmVzc2lvbiBjYW4KKyAgcmVzdGFydCBmcm9tIHRoaXMgcG9pbnQgaWYgcHJldmlvdXMgY29tcHJlc3NlZCBkYXRhIGhhcyBiZWVuIGRhbWFnZWQgb3IgaWYKKyAgcmFuZG9tIGFjY2VzcyBpcyBkZXNpcmVkLiAgVXNpbmcgWl9GVUxMX0ZMVVNIIHRvbyBvZnRlbiBjYW4gc2VyaW91c2x5IGRlZ3JhZGUKKyAgY29tcHJlc3Npb24uCisKKyAgICBJZiBkZWZsYXRlIHJldHVybnMgd2l0aCBhdmFpbF9vdXQgPT0gMCwgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBhZ2FpbgorICB3aXRoIHRoZSBzYW1lIHZhbHVlIG9mIHRoZSBmbHVzaCBwYXJhbWV0ZXIgYW5kIG1vcmUgb3V0cHV0IHNwYWNlICh1cGRhdGVkCisgIGF2YWlsX291dCksIHVudGlsIHRoZSBmbHVzaCBpcyBjb21wbGV0ZSAoZGVmbGF0ZSByZXR1cm5zIHdpdGggbm9uLXplcm8KKyAgYXZhaWxfb3V0KS4gIEluIHRoZSBjYXNlIG9mIGEgWl9GVUxMX0ZMVVNIIG9yIFpfU1lOQ19GTFVTSCwgbWFrZSBzdXJlIHRoYXQKKyAgYXZhaWxfb3V0IGlzIGdyZWF0ZXIgdGhhbiBzaXggdG8gYXZvaWQgcmVwZWF0ZWQgZmx1c2ggbWFya2VycyBkdWUgdG8KKyAgYXZhaWxfb3V0ID09IDAgb24gcmV0dXJuLgorCisgICAgSWYgdGhlIHBhcmFtZXRlciBmbHVzaCBpcyBzZXQgdG8gWl9GSU5JU0gsIHBlbmRpbmcgaW5wdXQgaXMgcHJvY2Vzc2VkLAorICBwZW5kaW5nIG91dHB1dCBpcyBmbHVzaGVkIGFuZCBkZWZsYXRlIHJldHVybnMgd2l0aCBaX1NUUkVBTV9FTkQgaWYgdGhlcmUgd2FzCisgIGVub3VnaCBvdXRwdXQgc3BhY2U7IGlmIGRlZmxhdGUgcmV0dXJucyB3aXRoIFpfT0ssIHRoaXMgZnVuY3Rpb24gbXVzdCBiZQorICBjYWxsZWQgYWdhaW4gd2l0aCBaX0ZJTklTSCBhbmQgbW9yZSBvdXRwdXQgc3BhY2UgKHVwZGF0ZWQgYXZhaWxfb3V0KSBidXQgbm8KKyAgbW9yZSBpbnB1dCBkYXRhLCB1bnRpbCBpdCByZXR1cm5zIHdpdGggWl9TVFJFQU1fRU5EIG9yIGFuIGVycm9yLiAgQWZ0ZXIKKyAgZGVmbGF0ZSBoYXMgcmV0dXJuZWQgWl9TVFJFQU1fRU5ELCB0aGUgb25seSBwb3NzaWJsZSBvcGVyYXRpb25zIG9uIHRoZSBzdHJlYW0KKyAgYXJlIGRlZmxhdGVSZXNldCBvciBkZWZsYXRlRW5kLgorCisgICAgWl9GSU5JU0ggY2FuIGJlIHVzZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGVmbGF0ZUluaXQgaWYgYWxsIHRoZSBjb21wcmVzc2lvbgorICBpcyB0byBiZSBkb25lIGluIGEgc2luZ2xlIHN0ZXAuICBJbiB0aGlzIGNhc2UsIGF2YWlsX291dCBtdXN0IGJlIGF0IGxlYXN0IHRoZQorICB2YWx1ZSByZXR1cm5lZCBieSBkZWZsYXRlQm91bmQgKHNlZSBiZWxvdykuICBUaGVuIGRlZmxhdGUgaXMgZ3VhcmFudGVlZCB0bworICByZXR1cm4gWl9TVFJFQU1fRU5ELiAgSWYgbm90IGVub3VnaCBvdXRwdXQgc3BhY2UgaXMgcHJvdmlkZWQsIGRlZmxhdGUgd2lsbAorICBub3QgcmV0dXJuIFpfU1RSRUFNX0VORCwgYW5kIGl0IG11c3QgYmUgY2FsbGVkIGFnYWluIGFzIGRlc2NyaWJlZCBhYm92ZS4KKworICAgIGRlZmxhdGUoKSBzZXRzIHN0cm0tPmFkbGVyIHRvIHRoZSBhZGxlcjMyIGNoZWNrc3VtIG9mIGFsbCBpbnB1dCByZWFkCisgIHNvIGZhciAodGhhdCBpcywgdG90YWxfaW4gYnl0ZXMpLgorCisgICAgZGVmbGF0ZSgpIG1heSB1cGRhdGUgc3RybS0+ZGF0YV90eXBlIGlmIGl0IGNhbiBtYWtlIGEgZ29vZCBndWVzcyBhYm91dAorICB0aGUgaW5wdXQgZGF0YSB0eXBlIChaX0JJTkFSWSBvciBaX1RFWFQpLiAgSW4gZG91YnQsIHRoZSBkYXRhIGlzIGNvbnNpZGVyZWQKKyAgYmluYXJ5LiAgVGhpcyBmaWVsZCBpcyBvbmx5IGZvciBpbmZvcm1hdGlvbiBwdXJwb3NlcyBhbmQgZG9lcyBub3QgYWZmZWN0IHRoZQorICBjb21wcmVzc2lvbiBhbGdvcml0aG0gaW4gYW55IG1hbm5lci4KKworICAgIGRlZmxhdGUoKSByZXR1cm5zIFpfT0sgaWYgc29tZSBwcm9ncmVzcyBoYXMgYmVlbiBtYWRlIChtb3JlIGlucHV0CisgIHByb2Nlc3NlZCBvciBtb3JlIG91dHB1dCBwcm9kdWNlZCksIFpfU1RSRUFNX0VORCBpZiBhbGwgaW5wdXQgaGFzIGJlZW4KKyAgY29uc3VtZWQgYW5kIGFsbCBvdXRwdXQgaGFzIGJlZW4gcHJvZHVjZWQgKG9ubHkgd2hlbiBmbHVzaCBpcyBzZXQgdG8KKyAgWl9GSU5JU0gpLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQgKGZvciBleGFtcGxlCisgIGlmIG5leHRfaW4gb3IgbmV4dF9vdXQgd2FzIFpfTlVMTCksIFpfQlVGX0VSUk9SIGlmIG5vIHByb2dyZXNzIGlzIHBvc3NpYmxlCisgIChmb3IgZXhhbXBsZSBhdmFpbF9pbiBvciBhdmFpbF9vdXQgd2FzIHplcm8pLiAgTm90ZSB0aGF0IFpfQlVGX0VSUk9SIGlzIG5vdAorICBmYXRhbCwgYW5kIGRlZmxhdGUoKSBjYW4gYmUgY2FsbGVkIGFnYWluIHdpdGggbW9yZSBpbnB1dCBhbmQgbW9yZSBvdXRwdXQKKyAgc3BhY2UgdG8gY29udGludWUgY29tcHJlc3NpbmcuCisqLworCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUVuZCBPRigoel9zdHJlYW1wIHN0cm0pKTsKKy8qCisgICAgIEFsbCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGZvciB0aGlzIHN0cmVhbSBhcmUgZnJlZWQuCisgICBUaGlzIGZ1bmN0aW9uIGRpc2NhcmRzIGFueSB1bnByb2Nlc3NlZCBpbnB1dCBhbmQgZG9lcyBub3QgZmx1c2ggYW55IHBlbmRpbmcKKyAgIG91dHB1dC4KKworICAgICBkZWZsYXRlRW5kIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUKKyAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50LCBaX0RBVEFfRVJST1IgaWYgdGhlIHN0cmVhbSB3YXMgZnJlZWQKKyAgIHByZW1hdHVyZWx5IChzb21lIGlucHV0IG9yIG91dHB1dCB3YXMgZGlzY2FyZGVkKS4gIEluIHRoZSBlcnJvciBjYXNlLCBtc2cKKyAgIG1heSBiZSBzZXQgYnV0IHRoZW4gcG9pbnRzIHRvIGEgc3RhdGljIHN0cmluZyAod2hpY2ggbXVzdCBub3QgYmUKKyAgIGRlYWxsb2NhdGVkKS4KKyovCisKKworLyoKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUluaXQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CisKKyAgICAgSW5pdGlhbGl6ZXMgdGhlIGludGVybmFsIHN0cmVhbSBzdGF0ZSBmb3IgZGVjb21wcmVzc2lvbi4gIFRoZSBmaWVsZHMKKyAgIG5leHRfaW4sIGF2YWlsX2luLCB6YWxsb2MsIHpmcmVlIGFuZCBvcGFxdWUgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgYnkKKyAgIHRoZSBjYWxsZXIuICBJZiBuZXh0X2luIGlzIG5vdCBaX05VTEwgYW5kIGF2YWlsX2luIGlzIGxhcmdlIGVub3VnaCAodGhlCisgICBleGFjdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBjb21wcmVzc2lvbiBtZXRob2QpLCBpbmZsYXRlSW5pdCBkZXRlcm1pbmVzIHRoZQorICAgY29tcHJlc3Npb24gbWV0aG9kIGZyb20gdGhlIHpsaWIgaGVhZGVyIGFuZCBhbGxvY2F0ZXMgYWxsIGRhdGEgc3RydWN0dXJlcworICAgYWNjb3JkaW5nbHk7IG90aGVyd2lzZSB0aGUgYWxsb2NhdGlvbiB3aWxsIGJlIGRlZmVycmVkIHRvIHRoZSBmaXJzdCBjYWxsIG9mCisgICBpbmZsYXRlLiAgSWYgemFsbG9jIGFuZCB6ZnJlZSBhcmUgc2V0IHRvIFpfTlVMTCwgaW5mbGF0ZUluaXQgdXBkYXRlcyB0aGVtIHRvCisgICB1c2UgZGVmYXVsdCBhbGxvY2F0aW9uIGZ1bmN0aW9ucy4KKworICAgICBpbmZsYXRlSW5pdCByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKKyAgIG1lbW9yeSwgWl9WRVJTSU9OX0VSUk9SIGlmIHRoZSB6bGliIGxpYnJhcnkgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUKKyAgIHZlcnNpb24gYXNzdW1lZCBieSB0aGUgY2FsbGVyLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgcGFyYW1ldGVycyBhcmUKKyAgIGludmFsaWQsIHN1Y2ggYXMgYSBudWxsIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZS4gIG1zZyBpcyBzZXQgdG8gbnVsbCBpZgorICAgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZS4gIGluZmxhdGVJbml0IGRvZXMgbm90IHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb24KKyAgIGFwYXJ0IGZyb20gcG9zc2libHkgcmVhZGluZyB0aGUgemxpYiBoZWFkZXIgaWYgcHJlc2VudDogYWN0dWFsIGRlY29tcHJlc3Npb24KKyAgIHdpbGwgYmUgZG9uZSBieSBpbmZsYXRlKCkuICAoU28gbmV4dF9pbiBhbmQgYXZhaWxfaW4gbWF5IGJlIG1vZGlmaWVkLCBidXQKKyAgIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgYXJlIHVudXNlZCBhbmQgdW5jaGFuZ2VkLikgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KKyAgIG9mIGluZmxhdGVJbml0KCkgZG9lcyBub3QgcHJvY2VzcyBhbnkgaGVhZGVyIGluZm9ybWF0aW9uIC0tIHRoYXQgaXMgZGVmZXJyZWQKKyAgIHVudGlsIGluZmxhdGUoKSBpcyBjYWxsZWQuCisqLworCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZSBPRigoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCkpOworLyoKKyAgICBpbmZsYXRlIGRlY29tcHJlc3NlcyBhcyBtdWNoIGRhdGEgYXMgcG9zc2libGUsIGFuZCBzdG9wcyB3aGVuIHRoZSBpbnB1dAorICBidWZmZXIgYmVjb21lcyBlbXB0eSBvciB0aGUgb3V0cHV0IGJ1ZmZlciBiZWNvbWVzIGZ1bGwuICBJdCBtYXkgaW50cm9kdWNlCisgIHNvbWUgb3V0cHV0IGxhdGVuY3kgKHJlYWRpbmcgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYW55IG91dHB1dCkgZXhjZXB0IHdoZW4KKyAgZm9yY2VkIHRvIGZsdXNoLgorCisgIFRoZSBkZXRhaWxlZCBzZW1hbnRpY3MgYXJlIGFzIGZvbGxvd3MuICBpbmZsYXRlIHBlcmZvcm1zIG9uZSBvciBib3RoIG9mIHRoZQorICBmb2xsb3dpbmcgYWN0aW9uczoKKworICAtIERlY29tcHJlc3MgbW9yZSBpbnB1dCBzdGFydGluZyBhdCBuZXh0X2luIGFuZCB1cGRhdGUgbmV4dF9pbiBhbmQgYXZhaWxfaW4KKyAgICBhY2NvcmRpbmdseS4gIElmIG5vdCBhbGwgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZCAoYmVjYXVzZSB0aGVyZSBpcyBub3QKKyAgICBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciksIG5leHRfaW4gaXMgdXBkYXRlZCBhbmQgcHJvY2Vzc2luZyB3aWxsCisgICAgcmVzdW1lIGF0IHRoaXMgcG9pbnQgZm9yIHRoZSBuZXh0IGNhbGwgb2YgaW5mbGF0ZSgpLgorCisgIC0gUHJvdmlkZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBhbmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQKKyAgICBhY2NvcmRpbmdseS4gIGluZmxhdGUoKSBwcm92aWRlcyBhcyBtdWNoIG91dHB1dCBhcyBwb3NzaWJsZSwgdW50aWwgdGhlcmUgaXMKKyAgICBubyBtb3JlIGlucHV0IGRhdGEgb3Igbm8gbW9yZSBzcGFjZSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciAoc2VlIGJlbG93IGFib3V0CisgICAgdGhlIGZsdXNoIHBhcmFtZXRlcikuCisKKyAgICBCZWZvcmUgdGhlIGNhbGwgb2YgaW5mbGF0ZSgpLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0CisgIG9uZSBvZiB0aGUgYWN0aW9ucyBpcyBwb3NzaWJsZSwgYnkgcHJvdmlkaW5nIG1vcmUgaW5wdXQgYW5kL29yIGNvbnN1bWluZyBtb3JlCisgIG91dHB1dCwgYW5kIHVwZGF0aW5nIHRoZSBuZXh0XyogYW5kIGF2YWlsXyogdmFsdWVzIGFjY29yZGluZ2x5LiAgVGhlCisgIGFwcGxpY2F0aW9uIGNhbiBjb25zdW1lIHRoZSB1bmNvbXByZXNzZWQgb3V0cHV0IHdoZW4gaXQgd2FudHMsIGZvciBleGFtcGxlCisgIHdoZW4gdGhlIG91dHB1dCBidWZmZXIgaXMgZnVsbCAoYXZhaWxfb3V0ID09IDApLCBvciBhZnRlciBlYWNoIGNhbGwgb2YKKyAgaW5mbGF0ZSgpLiAgSWYgaW5mbGF0ZSByZXR1cm5zIFpfT0sgYW5kIHdpdGggemVybyBhdmFpbF9vdXQsIGl0IG11c3QgYmUKKyAgY2FsbGVkIGFnYWluIGFmdGVyIG1ha2luZyByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyIGJlY2F1c2UgdGhlcmUgbWlnaHQgYmUKKyAgbW9yZSBvdXRwdXQgcGVuZGluZy4KKworICAgIFRoZSBmbHVzaCBwYXJhbWV0ZXIgb2YgaW5mbGF0ZSgpIGNhbiBiZSBaX05PX0ZMVVNILCBaX1NZTkNfRkxVU0gsIFpfRklOSVNILAorICBaX0JMT0NLLCBvciBaX1RSRUVTLiAgWl9TWU5DX0ZMVVNIIHJlcXVlc3RzIHRoYXQgaW5mbGF0ZSgpIGZsdXNoIGFzIG11Y2gKKyAgb3V0cHV0IGFzIHBvc3NpYmxlIHRvIHRoZSBvdXRwdXQgYnVmZmVyLiAgWl9CTE9DSyByZXF1ZXN0cyB0aGF0IGluZmxhdGUoKQorICBzdG9wIGlmIGFuZCB3aGVuIGl0IGdldHMgdG8gdGhlIG5leHQgZGVmbGF0ZSBibG9jayBib3VuZGFyeS4gIFdoZW4gZGVjb2RpbmcKKyAgdGhlIHpsaWIgb3IgZ3ppcCBmb3JtYXQsIHRoaXMgd2lsbCBjYXVzZSBpbmZsYXRlKCkgdG8gcmV0dXJuIGltbWVkaWF0ZWx5CisgIGFmdGVyIHRoZSBoZWFkZXIgYW5kIGJlZm9yZSB0aGUgZmlyc3QgYmxvY2suICBXaGVuIGRvaW5nIGEgcmF3IGluZmxhdGUsCisgIGluZmxhdGUoKSB3aWxsIGdvIGFoZWFkIGFuZCBwcm9jZXNzIHRoZSBmaXJzdCBibG9jaywgYW5kIHdpbGwgcmV0dXJuIHdoZW4gaXQKKyAgZ2V0cyB0byB0aGUgZW5kIG9mIHRoYXQgYmxvY2ssIG9yIHdoZW4gaXQgcnVucyBvdXQgb2YgZGF0YS4KKworICAgIFRoZSBaX0JMT0NLIG9wdGlvbiBhc3Npc3RzIGluIGFwcGVuZGluZyB0byBvciBjb21iaW5pbmcgZGVmbGF0ZSBzdHJlYW1zLgorICBBbHNvIHRvIGFzc2lzdCBpbiB0aGlzLCBvbiByZXR1cm4gaW5mbGF0ZSgpIHdpbGwgc2V0IHN0cm0tPmRhdGFfdHlwZSB0byB0aGUKKyAgbnVtYmVyIG9mIHVudXNlZCBiaXRzIGluIHRoZSBsYXN0IGJ5dGUgdGFrZW4gZnJvbSBzdHJtLT5uZXh0X2luLCBwbHVzIDY0IGlmCisgIGluZmxhdGUoKSBpcyBjdXJyZW50bHkgZGVjb2RpbmcgdGhlIGxhc3QgYmxvY2sgaW4gdGhlIGRlZmxhdGUgc3RyZWFtLCBwbHVzCisgIDEyOCBpZiBpbmZsYXRlKCkgcmV0dXJuZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGVjb2RpbmcgYW4gZW5kLW9mLWJsb2NrIGNvZGUgb3IKKyAgZGVjb2RpbmcgdGhlIGNvbXBsZXRlIGhlYWRlciB1cCB0byBqdXN0IGJlZm9yZSB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgZGVmbGF0ZQorICBzdHJlYW0uICBUaGUgZW5kLW9mLWJsb2NrIHdpbGwgbm90IGJlIGluZGljYXRlZCB1bnRpbCBhbGwgb2YgdGhlIHVuY29tcHJlc3NlZAorICBkYXRhIGZyb20gdGhhdCBibG9jayBoYXMgYmVlbiB3cml0dGVuIHRvIHN0cm0tPm5leHRfb3V0LiAgVGhlIG51bWJlciBvZgorICB1bnVzZWQgYml0cyBtYXkgaW4gZ2VuZXJhbCBiZSBncmVhdGVyIHRoYW4gc2V2ZW4sIGV4Y2VwdCB3aGVuIGJpdCA3IG9mCisgIGRhdGFfdHlwZSBpcyBzZXQsIGluIHdoaWNoIGNhc2UgdGhlIG51bWJlciBvZiB1bnVzZWQgYml0cyB3aWxsIGJlIGxlc3MgdGhhbgorICBlaWdodC4gIGRhdGFfdHlwZSBpcyBzZXQgYXMgbm90ZWQgaGVyZSBldmVyeSB0aW1lIGluZmxhdGUoKSByZXR1cm5zIGZvciBhbGwKKyAgZmx1c2ggb3B0aW9ucywgYW5kIHNvIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgYW1vdW50IG9mIGN1cnJlbnRseQorICBjb25zdW1lZCBpbnB1dCBpbiBiaXRzLgorCisgICAgVGhlIFpfVFJFRVMgb3B0aW9uIGJlaGF2ZXMgYXMgWl9CTE9DSyBkb2VzLCBidXQgaXQgYWxzbyByZXR1cm5zIHdoZW4gdGhlCisgIGVuZCBvZiBlYWNoIGRlZmxhdGUgYmxvY2sgaGVhZGVyIGlzIHJlYWNoZWQsIGJlZm9yZSBhbnkgYWN0dWFsIGRhdGEgaW4gdGhhdAorICBibG9jayBpcyBkZWNvZGVkLiAgVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUKKyAgZGVmbGF0ZSBibG9jayBoZWFkZXIgZm9yIGxhdGVyIHVzZSBpbiByYW5kb20gYWNjZXNzIHdpdGhpbiBhIGRlZmxhdGUgYmxvY2suCisgIDI1NiBpcyBhZGRlZCB0byB0aGUgdmFsdWUgb2Ygc3RybS0+ZGF0YV90eXBlIHdoZW4gaW5mbGF0ZSgpIHJldHVybnMKKyAgaW1tZWRpYXRlbHkgYWZ0ZXIgcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgZGVmbGF0ZSBibG9jayBoZWFkZXIuCisKKyAgICBpbmZsYXRlKCkgc2hvdWxkIG5vcm1hbGx5IGJlIGNhbGxlZCB1bnRpbCBpdCByZXR1cm5zIFpfU1RSRUFNX0VORCBvciBhbgorICBlcnJvci4gIEhvd2V2ZXIgaWYgYWxsIGRlY29tcHJlc3Npb24gaXMgdG8gYmUgcGVyZm9ybWVkIGluIGEgc2luZ2xlIHN0ZXAgKGEKKyAgc2luZ2xlIGNhbGwgb2YgaW5mbGF0ZSksIHRoZSBwYXJhbWV0ZXIgZmx1c2ggc2hvdWxkIGJlIHNldCB0byBaX0ZJTklTSC4gIEluCisgIHRoaXMgY2FzZSBhbGwgcGVuZGluZyBpbnB1dCBpcyBwcm9jZXNzZWQgYW5kIGFsbCBwZW5kaW5nIG91dHB1dCBpcyBmbHVzaGVkOworICBhdmFpbF9vdXQgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCBhbGwgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGZvciB0aGUKKyAgb3BlcmF0aW9uIHRvIGNvbXBsZXRlLiAgKFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBtYXkgaGF2ZSBiZWVuCisgIHNhdmVkIGJ5IHRoZSBjb21wcmVzc29yIGZvciB0aGlzIHB1cnBvc2UuKSBUaGUgdXNlIG9mIFpfRklOSVNIIGlzIG5vdAorICByZXF1aXJlZCB0byBwZXJmb3JtIGFuIGluZmxhdGlvbiBpbiBvbmUgc3RlcC4gIEhvd2V2ZXIgaXQgbWF5IGJlIHVzZWQgdG8KKyAgaW5mb3JtIGluZmxhdGUgdGhhdCBhIGZhc3RlciBhcHByb2FjaCBjYW4gYmUgdXNlZCBmb3IgdGhlIHNpbmdsZSBpbmZsYXRlKCkKKyAgY2FsbC4gIFpfRklOSVNIIGFsc28gaW5mb3JtcyBpbmZsYXRlIHRvIG5vdCBtYWludGFpbiBhIHNsaWRpbmcgd2luZG93IGlmIHRoZQorICBzdHJlYW0gY29tcGxldGVzLCB3aGljaCByZWR1Y2VzIGluZmxhdGUncyBtZW1vcnkgZm9vdHByaW50LiAgSWYgdGhlIHN0cmVhbQorICBkb2VzIG5vdCBjb21wbGV0ZSwgZWl0aGVyIGJlY2F1c2Ugbm90IGFsbCBvZiB0aGUgc3RyZWFtIGlzIHByb3ZpZGVkIG9yIG5vdAorICBlbm91Z2ggb3V0cHV0IHNwYWNlIGlzIHByb3ZpZGVkLCB0aGVuIGEgc2xpZGluZyB3aW5kb3cgd2lsbCBiZSBhbGxvY2F0ZWQgYW5kCisgIGluZmxhdGUoKSBjYW4gYmUgY2FsbGVkIGFnYWluIHRvIGNvbnRpbnVlIHRoZSBvcGVyYXRpb24gYXMgaWYgWl9OT19GTFVTSCBoYWQKKyAgYmVlbiB1c2VkLgorCisgICAgIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIGluZmxhdGUoKSBhbHdheXMgZmx1c2hlcyBhcyBtdWNoIG91dHB1dCBhcworICBwb3NzaWJsZSB0byB0aGUgb3V0cHV0IGJ1ZmZlciwgYW5kIGFsd2F5cyB1c2VzIHRoZSBmYXN0ZXIgYXBwcm9hY2ggb24gdGhlCisgIGZpcnN0IGNhbGwuICBTbyB0aGUgZWZmZWN0cyBvZiB0aGUgZmx1c2ggcGFyYW1ldGVyIGluIHRoaXMgaW1wbGVtZW50YXRpb24gYXJlCisgIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgaW5mbGF0ZSgpIGFzIG5vdGVkIGJlbG93LCB3aGVuIGluZmxhdGUoKSByZXR1cm5zIGVhcmx5CisgIHdoZW4gWl9CTE9DSyBvciBaX1RSRUVTIGlzIHVzZWQsIGFuZCB3aGVuIGluZmxhdGUoKSBhdm9pZHMgdGhlIGFsbG9jYXRpb24gb2YKKyAgbWVtb3J5IGZvciBhIHNsaWRpbmcgd2luZG93IHdoZW4gWl9GSU5JU0ggaXMgdXNlZC4KKworICAgICBJZiBhIHByZXNldCBkaWN0aW9uYXJ5IGlzIG5lZWRlZCBhZnRlciB0aGlzIGNhbGwgKHNlZSBpbmZsYXRlU2V0RGljdGlvbmFyeQorICBiZWxvdyksIGluZmxhdGUgc2V0cyBzdHJtLT5hZGxlciB0byB0aGUgQWRsZXItMzIgY2hlY2tzdW0gb2YgdGhlIGRpY3Rpb25hcnkKKyAgY2hvc2VuIGJ5IHRoZSBjb21wcmVzc29yIGFuZCByZXR1cm5zIFpfTkVFRF9ESUNUOyBvdGhlcndpc2UgaXQgc2V0cworICBzdHJtLT5hZGxlciB0byB0aGUgQWRsZXItMzIgY2hlY2tzdW0gb2YgYWxsIG91dHB1dCBwcm9kdWNlZCBzbyBmYXIgKHRoYXQgaXMsCisgIHRvdGFsX291dCBieXRlcykgYW5kIHJldHVybnMgWl9PSywgWl9TVFJFQU1fRU5EIG9yIGFuIGVycm9yIGNvZGUgYXMgZGVzY3JpYmVkCisgIGJlbG93LiAgQXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLCBpbmZsYXRlKCkgY2hlY2tzIHRoYXQgaXRzIGNvbXB1dGVkIGFkbGVyMzIKKyAgY2hlY2tzdW0gaXMgZXF1YWwgdG8gdGhhdCBzYXZlZCBieSB0aGUgY29tcHJlc3NvciBhbmQgcmV0dXJucyBaX1NUUkVBTV9FTkQKKyAgb25seSBpZiB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdC4KKworICAgIGluZmxhdGUoKSBjYW4gZGVjb21wcmVzcyBhbmQgY2hlY2sgZWl0aGVyIHpsaWItd3JhcHBlZCBvciBnemlwLXdyYXBwZWQKKyAgZGVmbGF0ZSBkYXRhLiAgVGhlIGhlYWRlciB0eXBlIGlzIGRldGVjdGVkIGF1dG9tYXRpY2FsbHksIGlmIHJlcXVlc3RlZCB3aGVuCisgIGluaXRpYWxpemluZyB3aXRoIGluZmxhdGVJbml0MigpLiAgQW55IGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGUgZ3ppcAorICBoZWFkZXIgaXMgbm90IHJldGFpbmVkLCBzbyBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRoYXQgaW5mb3JtYXRpb24gc2hvdWxkCisgIGluc3RlYWQgdXNlIHJhdyBpbmZsYXRlLCBzZWUgaW5mbGF0ZUluaXQyKCkgYmVsb3csIG9yIGluZmxhdGVCYWNrKCkgYW5kCisgIHBlcmZvcm0gdGhlaXIgb3duIHByb2Nlc3Npbmcgb2YgdGhlIGd6aXAgaGVhZGVyIGFuZCB0cmFpbGVyLiAgV2hlbiBwcm9jZXNzaW5nCisgIGd6aXAtd3JhcHBlZCBkZWZsYXRlIGRhdGEsIHN0cm0tPmFkbGVyMzIgaXMgc2V0IHRvIHRoZSBDUkMtMzIgb2YgdGhlIG91dHB1dAorICBwcm9kdWN0ZWQgc28gZmFyLiAgVGhlIENSQy0zMiBpcyBjaGVja2VkIGFnYWluc3QgdGhlIGd6aXAgdHJhaWxlci4KKworICAgIGluZmxhdGUoKSByZXR1cm5zIFpfT0sgaWYgc29tZSBwcm9ncmVzcyBoYXMgYmVlbiBtYWRlIChtb3JlIGlucHV0IHByb2Nlc3NlZAorICBvciBtb3JlIG91dHB1dCBwcm9kdWNlZCksIFpfU1RSRUFNX0VORCBpZiB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIGRhdGEgaGFzCisgIGJlZW4gcmVhY2hlZCBhbmQgYWxsIHVuY29tcHJlc3NlZCBvdXRwdXQgaGFzIGJlZW4gcHJvZHVjZWQsIFpfTkVFRF9ESUNUIGlmIGEKKyAgcHJlc2V0IGRpY3Rpb25hcnkgaXMgbmVlZGVkIGF0IHRoaXMgcG9pbnQsIFpfREFUQV9FUlJPUiBpZiB0aGUgaW5wdXQgZGF0YSB3YXMKKyAgY29ycnVwdGVkIChpbnB1dCBzdHJlYW0gbm90IGNvbmZvcm1pbmcgdG8gdGhlIHpsaWIgZm9ybWF0IG9yIGluY29ycmVjdCBjaGVjaworICB2YWx1ZSksIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gc3RydWN0dXJlIHdhcyBpbmNvbnNpc3RlbnQgKGZvciBleGFtcGxlCisgIG5leHRfaW4gb3IgbmV4dF9vdXQgd2FzIFpfTlVMTCksIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoIG1lbW9yeSwKKyAgWl9CVUZfRVJST1IgaWYgbm8gcHJvZ3Jlc3MgaXMgcG9zc2libGUgb3IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggcm9vbSBpbiB0aGUKKyAgb3V0cHV0IGJ1ZmZlciB3aGVuIFpfRklOSVNIIGlzIHVzZWQuICBOb3RlIHRoYXQgWl9CVUZfRVJST1IgaXMgbm90IGZhdGFsLCBhbmQKKyAgaW5mbGF0ZSgpIGNhbiBiZSBjYWxsZWQgYWdhaW4gd2l0aCBtb3JlIGlucHV0IGFuZCBtb3JlIG91dHB1dCBzcGFjZSB0bworICBjb250aW51ZSBkZWNvbXByZXNzaW5nLiAgSWYgWl9EQVRBX0VSUk9SIGlzIHJldHVybmVkLCB0aGUgYXBwbGljYXRpb24gbWF5CisgIHRoZW4gY2FsbCBpbmZsYXRlU3luYygpIHRvIGxvb2sgZm9yIGEgZ29vZCBjb21wcmVzc2lvbiBibG9jayBpZiBhIHBhcnRpYWwKKyAgcmVjb3Zlcnkgb2YgdGhlIGRhdGEgaXMgZGVzaXJlZC4KKyovCisKKworWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlRW5kIE9GKCh6X3N0cmVhbXAgc3RybSkpOworLyoKKyAgICAgQWxsIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBkYXRhIHN0cnVjdHVyZXMgZm9yIHRoaXMgc3RyZWFtIGFyZSBmcmVlZC4KKyAgIFRoaXMgZnVuY3Rpb24gZGlzY2FyZHMgYW55IHVucHJvY2Vzc2VkIGlucHV0IGFuZCBkb2VzIG5vdCBmbHVzaCBhbnkgcGVuZGluZworICAgb3V0cHV0LgorCisgICAgIGluZmxhdGVFbmQgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gc3RhdGUKKyAgIHdhcyBpbmNvbnNpc3RlbnQuICBJbiB0aGUgZXJyb3IgY2FzZSwgbXNnIG1heSBiZSBzZXQgYnV0IHRoZW4gcG9pbnRzIHRvIGEKKyAgIHN0YXRpYyBzdHJpbmcgKHdoaWNoIG11c3Qgbm90IGJlIGRlYWxsb2NhdGVkKS4KKyovCisKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogQWR2YW5jZWQgZnVuY3Rpb25zICovCisKKy8qCisgICAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5lZWRlZCBvbmx5IGluIHNvbWUgc3BlY2lhbCBhcHBsaWNhdGlvbnMuCisqLworCisvKgorWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlSW5pdDIgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICBtZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICB3aW5kb3dCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgbWVtTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICBzdHJhdGVneSkpOworCisgICAgIFRoaXMgaXMgYW5vdGhlciB2ZXJzaW9uIG9mIGRlZmxhdGVJbml0IHdpdGggbW9yZSBjb21wcmVzc2lvbiBvcHRpb25zLiAgVGhlCisgICBmaWVsZHMgbmV4dF9pbiwgemFsbG9jLCB6ZnJlZSBhbmQgb3BhcXVlIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGJ5IHRoZQorICAgY2FsbGVyLgorCisgICAgIFRoZSBtZXRob2QgcGFyYW1ldGVyIGlzIHRoZSBjb21wcmVzc2lvbiBtZXRob2QuICBJdCBtdXN0IGJlIFpfREVGTEFURUQgaW4KKyAgIHRoaXMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4KKworICAgICBUaGUgd2luZG93Qml0cyBwYXJhbWV0ZXIgaXMgdGhlIGJhc2UgdHdvIGxvZ2FyaXRobSBvZiB0aGUgd2luZG93IHNpemUKKyAgICh0aGUgc2l6ZSBvZiB0aGUgaGlzdG9yeSBidWZmZXIpLiAgSXQgc2hvdWxkIGJlIGluIHRoZSByYW5nZSA4Li4xNSBmb3IgdGhpcworICAgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4gIExhcmdlciB2YWx1ZXMgb2YgdGhpcyBwYXJhbWV0ZXIgcmVzdWx0IGluIGJldHRlcgorICAgY29tcHJlc3Npb24gYXQgdGhlIGV4cGVuc2Ugb2YgbWVtb3J5IHVzYWdlLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTUgaWYKKyAgIGRlZmxhdGVJbml0IGlzIHVzZWQgaW5zdGVhZC4KKworICAgICB3aW5kb3dCaXRzIGNhbiBhbHNvIGJlIC04Li4tMTUgZm9yIHJhdyBkZWZsYXRlLiAgSW4gdGhpcyBjYXNlLCAtd2luZG93Qml0cworICAgZGV0ZXJtaW5lcyB0aGUgd2luZG93IHNpemUuICBkZWZsYXRlKCkgd2lsbCB0aGVuIGdlbmVyYXRlIHJhdyBkZWZsYXRlIGRhdGEKKyAgIHdpdGggbm8gemxpYiBoZWFkZXIgb3IgdHJhaWxlciwgYW5kIHdpbGwgbm90IGNvbXB1dGUgYW4gYWRsZXIzMiBjaGVjayB2YWx1ZS4KKworICAgICB3aW5kb3dCaXRzIGNhbiBhbHNvIGJlIGdyZWF0ZXIgdGhhbiAxNSBmb3Igb3B0aW9uYWwgZ3ppcCBlbmNvZGluZy4gIEFkZAorICAgMTYgdG8gd2luZG93Qml0cyB0byB3cml0ZSBhIHNpbXBsZSBnemlwIGhlYWRlciBhbmQgdHJhaWxlciBhcm91bmQgdGhlCisgICBjb21wcmVzc2VkIGRhdGEgaW5zdGVhZCBvZiBhIHpsaWIgd3JhcHBlci4gIFRoZSBnemlwIGhlYWRlciB3aWxsIGhhdmUgbm8KKyAgIGZpbGUgbmFtZSwgbm8gZXh0cmEgZGF0YSwgbm8gY29tbWVudCwgbm8gbW9kaWZpY2F0aW9uIHRpbWUgKHNldCB0byB6ZXJvKSwgbm8KKyAgIGhlYWRlciBjcmMsIGFuZCB0aGUgb3BlcmF0aW5nIHN5c3RlbSB3aWxsIGJlIHNldCB0byAyNTUgKHVua25vd24pLiAgSWYgYQorICAgZ3ppcCBzdHJlYW0gaXMgYmVpbmcgd3JpdHRlbiwgc3RybS0+YWRsZXIgaXMgYSBjcmMzMiBpbnN0ZWFkIG9mIGFuIGFkbGVyMzIuCisKKyAgICAgVGhlIG1lbUxldmVsIHBhcmFtZXRlciBzcGVjaWZpZXMgaG93IG11Y2ggbWVtb3J5IHNob3VsZCBiZSBhbGxvY2F0ZWQKKyAgIGZvciB0aGUgaW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuICBtZW1MZXZlbD0xIHVzZXMgbWluaW11bSBtZW1vcnkgYnV0IGlzCisgICBzbG93IGFuZCByZWR1Y2VzIGNvbXByZXNzaW9uIHJhdGlvOyBtZW1MZXZlbD05IHVzZXMgbWF4aW11bSBtZW1vcnkgZm9yCisgICBvcHRpbWFsIHNwZWVkLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgOC4gIFNlZSB6Y29uZi5oIGZvciB0b3RhbCBtZW1vcnkgdXNhZ2UKKyAgIGFzIGEgZnVuY3Rpb24gb2Ygd2luZG93Qml0cyBhbmQgbWVtTGV2ZWwuCisKKyAgICAgVGhlIHN0cmF0ZWd5IHBhcmFtZXRlciBpcyB1c2VkIHRvIHR1bmUgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gIFVzZSB0aGUKKyAgIHZhbHVlIFpfREVGQVVMVF9TVFJBVEVHWSBmb3Igbm9ybWFsIGRhdGEsIFpfRklMVEVSRUQgZm9yIGRhdGEgcHJvZHVjZWQgYnkgYQorICAgZmlsdGVyIChvciBwcmVkaWN0b3IpLCBaX0hVRkZNQU5fT05MWSB0byBmb3JjZSBIdWZmbWFuIGVuY29kaW5nIG9ubHkgKG5vCisgICBzdHJpbmcgbWF0Y2gpLCBvciBaX1JMRSB0byBsaW1pdCBtYXRjaCBkaXN0YW5jZXMgdG8gb25lIChydW4tbGVuZ3RoCisgICBlbmNvZGluZykuICBGaWx0ZXJlZCBkYXRhIGNvbnNpc3RzIG1vc3RseSBvZiBzbWFsbCB2YWx1ZXMgd2l0aCBhIHNvbWV3aGF0CisgICByYW5kb20gZGlzdHJpYnV0aW9uLiAgSW4gdGhpcyBjYXNlLCB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGlzIHR1bmVkIHRvCisgICBjb21wcmVzcyB0aGVtIGJldHRlci4gIFRoZSBlZmZlY3Qgb2YgWl9GSUxURVJFRCBpcyB0byBmb3JjZSBtb3JlIEh1ZmZtYW4KKyAgIGNvZGluZyBhbmQgbGVzcyBzdHJpbmcgbWF0Y2hpbmc7IGl0IGlzIHNvbWV3aGF0IGludGVybWVkaWF0ZSBiZXR3ZWVuCisgICBaX0RFRkFVTFRfU1RSQVRFR1kgYW5kIFpfSFVGRk1BTl9PTkxZLiAgWl9STEUgaXMgZGVzaWduZWQgdG8gYmUgYWxtb3N0IGFzCisgICBmYXN0IGFzIFpfSFVGRk1BTl9PTkxZLCBidXQgZ2l2ZSBiZXR0ZXIgY29tcHJlc3Npb24gZm9yIFBORyBpbWFnZSBkYXRhLiAgVGhlCisgICBzdHJhdGVneSBwYXJhbWV0ZXIgb25seSBhZmZlY3RzIHRoZSBjb21wcmVzc2lvbiByYXRpbyBidXQgbm90IHRoZQorICAgY29ycmVjdG5lc3Mgb2YgdGhlIGNvbXByZXNzZWQgb3V0cHV0IGV2ZW4gaWYgaXQgaXMgbm90IHNldCBhcHByb3ByaWF0ZWx5LgorICAgWl9GSVhFRCBwcmV2ZW50cyB0aGUgdXNlIG9mIGR5bmFtaWMgSHVmZm1hbiBjb2RlcywgYWxsb3dpbmcgZm9yIGEgc2ltcGxlcgorICAgZGVjb2RlciBmb3Igc3BlY2lhbCBhcHBsaWNhdGlvbnMuCisKKyAgICAgZGVmbGF0ZUluaXQyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAorICAgbWVtb3J5LCBaX1NUUkVBTV9FUlJPUiBpZiBhbnkgcGFyYW1ldGVyIGlzIGludmFsaWQgKHN1Y2ggYXMgYW4gaW52YWxpZAorICAgbWV0aG9kKSwgb3IgWl9WRVJTSU9OX0VSUk9SIGlmIHRoZSB6bGliIGxpYnJhcnkgdmVyc2lvbiAoemxpYl92ZXJzaW9uKSBpcworICAgaW5jb21wYXRpYmxlIHdpdGggdGhlIHZlcnNpb24gYXNzdW1lZCBieSB0aGUgY2FsbGVyIChaTElCX1ZFUlNJT04pLiAgbXNnIGlzCisgICBzZXQgdG8gbnVsbCBpZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLiAgZGVmbGF0ZUluaXQyIGRvZXMgbm90IHBlcmZvcm0gYW55CisgICBjb21wcmVzc2lvbjogdGhpcyB3aWxsIGJlIGRvbmUgYnkgZGVmbGF0ZSgpLgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlU2V0RGljdGlvbmFyeSBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlZiAqZGljdGlvbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVJbnQgIGRpY3RMZW5ndGgpKTsKKy8qCisgICAgIEluaXRpYWxpemVzIHRoZSBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IGZyb20gdGhlIGdpdmVuIGJ5dGUgc2VxdWVuY2UKKyAgIHdpdGhvdXQgcHJvZHVjaW5nIGFueSBjb21wcmVzc2VkIG91dHB1dC4gIFdoZW4gdXNpbmcgdGhlIHpsaWIgZm9ybWF0LCB0aGlzCisgICBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBkZWZsYXRlSW5pdCwgZGVmbGF0ZUluaXQyIG9yCisgICBkZWZsYXRlUmVzZXQsIGFuZCBiZWZvcmUgYW55IGNhbGwgb2YgZGVmbGF0ZS4gIFdoZW4gZG9pbmcgcmF3IGRlZmxhdGUsIHRoaXMKKyAgIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGVpdGhlciBiZWZvcmUgYW55IGNhbGwgb2YgZGVmbGF0ZSwgb3IgaW1tZWRpYXRlbHkKKyAgIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIGEgZGVmbGF0ZSBibG9jaywgaS5lLiBhZnRlciBhbGwgaW5wdXQgaGFzIGJlZW4KKyAgIGNvbnN1bWVkIGFuZCBhbGwgb3V0cHV0IGhhcyBiZWVuIGRlbGl2ZXJlZCB3aGVuIHVzaW5nIGFueSBvZiB0aGUgZmx1c2gKKyAgIG9wdGlvbnMgWl9CTE9DSywgWl9QQVJUSUFMX0ZMVVNILCBaX1NZTkNfRkxVU0gsIG9yIFpfRlVMTF9GTFVTSC4gIFRoZQorICAgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG11c3QgdXNlIGV4YWN0bHkgdGhlIHNhbWUgZGljdGlvbmFyeSAoc2VlCisgICBpbmZsYXRlU2V0RGljdGlvbmFyeSkuCisKKyAgICAgVGhlIGRpY3Rpb25hcnkgc2hvdWxkIGNvbnNpc3Qgb2Ygc3RyaW5ncyAoYnl0ZSBzZXF1ZW5jZXMpIHRoYXQgYXJlIGxpa2VseQorICAgdG8gYmUgZW5jb3VudGVyZWQgbGF0ZXIgaW4gdGhlIGRhdGEgdG8gYmUgY29tcHJlc3NlZCwgd2l0aCB0aGUgbW9zdCBjb21tb25seQorICAgdXNlZCBzdHJpbmdzIHByZWZlcmFibHkgcHV0IHRvd2FyZHMgdGhlIGVuZCBvZiB0aGUgZGljdGlvbmFyeS4gIFVzaW5nIGEKKyAgIGRpY3Rpb25hcnkgaXMgbW9zdCB1c2VmdWwgd2hlbiB0aGUgZGF0YSB0byBiZSBjb21wcmVzc2VkIGlzIHNob3J0IGFuZCBjYW4gYmUKKyAgIHByZWRpY3RlZCB3aXRoIGdvb2QgYWNjdXJhY3k7IHRoZSBkYXRhIGNhbiB0aGVuIGJlIGNvbXByZXNzZWQgYmV0dGVyIHRoYW4KKyAgIHdpdGggdGhlIGRlZmF1bHQgZW1wdHkgZGljdGlvbmFyeS4KKworICAgICBEZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgdGhlIGNvbXByZXNzaW9uIGRhdGEgc3RydWN0dXJlcyBzZWxlY3RlZCBieQorICAgZGVmbGF0ZUluaXQgb3IgZGVmbGF0ZUluaXQyLCBhIHBhcnQgb2YgdGhlIGRpY3Rpb25hcnkgbWF5IGluIGVmZmVjdCBiZQorICAgZGlzY2FyZGVkLCBmb3IgZXhhbXBsZSBpZiB0aGUgZGljdGlvbmFyeSBpcyBsYXJnZXIgdGhhbiB0aGUgd2luZG93IHNpemUKKyAgIHByb3ZpZGVkIGluIGRlZmxhdGVJbml0IG9yIGRlZmxhdGVJbml0Mi4gIFRodXMgdGhlIHN0cmluZ3MgbW9zdCBsaWtlbHkgdG8gYmUKKyAgIHVzZWZ1bCBzaG91bGQgYmUgcHV0IGF0IHRoZSBlbmQgb2YgdGhlIGRpY3Rpb25hcnksIG5vdCBhdCB0aGUgZnJvbnQuICBJbgorICAgYWRkaXRpb24sIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGRlZmxhdGUgd2lsbCB1c2UgYXQgbW9zdCB0aGUgd2luZG93CisgICBzaXplIG1pbnVzIDI2MiBieXRlcyBvZiB0aGUgcHJvdmlkZWQgZGljdGlvbmFyeS4KKworICAgICBVcG9uIHJldHVybiBvZiB0aGlzIGZ1bmN0aW9uLCBzdHJtLT5hZGxlciBpcyBzZXQgdG8gdGhlIGFkbGVyMzIgdmFsdWUKKyAgIG9mIHRoZSBkaWN0aW9uYXJ5OyB0aGUgZGVjb21wcmVzc29yIG1heSBsYXRlciB1c2UgdGhpcyB2YWx1ZSB0byBkZXRlcm1pbmUKKyAgIHdoaWNoIGRpY3Rpb25hcnkgaGFzIGJlZW4gdXNlZCBieSB0aGUgY29tcHJlc3Nvci4gIChUaGUgYWRsZXIzMiB2YWx1ZQorICAgYXBwbGllcyB0byB0aGUgd2hvbGUgZGljdGlvbmFyeSBldmVuIGlmIG9ubHkgYSBzdWJzZXQgb2YgdGhlIGRpY3Rpb25hcnkgaXMKKyAgIGFjdHVhbGx5IHVzZWQgYnkgdGhlIGNvbXByZXNzb3IuKSBJZiBhIHJhdyBkZWZsYXRlIHdhcyByZXF1ZXN0ZWQsIHRoZW4gdGhlCisgICBhZGxlcjMyIHZhbHVlIGlzIG5vdCBjb21wdXRlZCBhbmQgc3RybS0+YWRsZXIgaXMgbm90IHNldC4KKworICAgICBkZWZsYXRlU2V0RGljdGlvbmFyeSByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgYQorICAgcGFyYW1ldGVyIGlzIGludmFsaWQgKGUuZy4gIGRpY3Rpb25hcnkgYmVpbmcgWl9OVUxMKSBvciB0aGUgc3RyZWFtIHN0YXRlIGlzCisgICBpbmNvbnNpc3RlbnQgKGZvciBleGFtcGxlIGlmIGRlZmxhdGUgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIHRoaXMgc3RyZWFtCisgICBvciBpZiBub3QgYXQgYSBibG9jayBib3VuZGFyeSBmb3IgcmF3IGRlZmxhdGUpLiAgZGVmbGF0ZVNldERpY3Rpb25hcnkgZG9lcworICAgbm90IHBlcmZvcm0gYW55IGNvbXByZXNzaW9uOiB0aGlzIHdpbGwgYmUgZG9uZSBieSBkZWZsYXRlKCkuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVDb3B5IE9GKCh6X3N0cmVhbXAgZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfc3RyZWFtcCBzb3VyY2UpKTsKKy8qCisgICAgIFNldHMgdGhlIGRlc3RpbmF0aW9uIHN0cmVhbSBhcyBhIGNvbXBsZXRlIGNvcHkgb2YgdGhlIHNvdXJjZSBzdHJlYW0uCisKKyAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZnVsIHdoZW4gc2V2ZXJhbCBjb21wcmVzc2lvbiBzdHJhdGVnaWVzIHdpbGwgYmUKKyAgIHRyaWVkLCBmb3IgZXhhbXBsZSB3aGVuIHRoZXJlIGFyZSBzZXZlcmFsIHdheXMgb2YgcHJlLXByb2Nlc3NpbmcgdGhlIGlucHV0CisgICBkYXRhIHdpdGggYSBmaWx0ZXIuICBUaGUgc3RyZWFtcyB0aGF0IHdpbGwgYmUgZGlzY2FyZGVkIHNob3VsZCB0aGVuIGJlIGZyZWVkCisgICBieSBjYWxsaW5nIGRlZmxhdGVFbmQuICBOb3RlIHRoYXQgZGVmbGF0ZUNvcHkgZHVwbGljYXRlcyB0aGUgaW50ZXJuYWwKKyAgIGNvbXByZXNzaW9uIHN0YXRlIHdoaWNoIGNhbiBiZSBxdWl0ZSBsYXJnZSwgc28gdGhpcyBzdHJhdGVneSBpcyBzbG93IGFuZCBjYW4KKyAgIGNvbnN1bWUgbG90cyBvZiBtZW1vcnkuCisKKyAgICAgZGVmbGF0ZUNvcHkgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QKKyAgIGVub3VnaCBtZW1vcnksIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2Ugc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQKKyAgIChzdWNoIGFzIHphbGxvYyBiZWluZyBaX05VTEwpLiAgbXNnIGlzIGxlZnQgdW5jaGFuZ2VkIGluIGJvdGggc291cmNlIGFuZAorICAgZGVzdGluYXRpb24uCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVSZXNldCBPRigoel9zdHJlYW1wIHN0cm0pKTsKKy8qCisgICAgIFRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBkZWZsYXRlRW5kIGZvbGxvd2VkIGJ5IGRlZmxhdGVJbml0LAorICAgYnV0IGRvZXMgbm90IGZyZWUgYW5kIHJlYWxsb2NhdGUgYWxsIHRoZSBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4gIFRoZQorICAgc3RyZWFtIHdpbGwga2VlcCB0aGUgc2FtZSBjb21wcmVzc2lvbiBsZXZlbCBhbmQgYW55IG90aGVyIGF0dHJpYnV0ZXMgdGhhdAorICAgbWF5IGhhdmUgYmVlbiBzZXQgYnkgZGVmbGF0ZUluaXQyLgorCisgICAgIGRlZmxhdGVSZXNldCByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQgKHN1Y2ggYXMgemFsbG9jIG9yIHN0YXRlIGJlaW5nIFpfTlVMTCkuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVQYXJhbXMgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJhdGVneSkpOworLyoKKyAgICAgRHluYW1pY2FsbHkgdXBkYXRlIHRoZSBjb21wcmVzc2lvbiBsZXZlbCBhbmQgY29tcHJlc3Npb24gc3RyYXRlZ3kuICBUaGUKKyAgIGludGVycHJldGF0aW9uIG9mIGxldmVsIGFuZCBzdHJhdGVneSBpcyBhcyBpbiBkZWZsYXRlSW5pdDIuICBUaGlzIGNhbiBiZQorICAgdXNlZCB0byBzd2l0Y2ggYmV0d2VlbiBjb21wcmVzc2lvbiBhbmQgc3RyYWlnaHQgY29weSBvZiB0aGUgaW5wdXQgZGF0YSwgb3IKKyAgIHRvIHN3aXRjaCB0byBhIGRpZmZlcmVudCBraW5kIG9mIGlucHV0IGRhdGEgcmVxdWlyaW5nIGEgZGlmZmVyZW50IHN0cmF0ZWd5LgorICAgSWYgdGhlIGNvbXByZXNzaW9uIGxldmVsIGlzIGNoYW5nZWQsIHRoZSBpbnB1dCBhdmFpbGFibGUgc28gZmFyIGlzCisgICBjb21wcmVzc2VkIHdpdGggdGhlIG9sZCBsZXZlbCAoYW5kIG1heSBiZSBmbHVzaGVkKTsgdGhlIG5ldyBsZXZlbCB3aWxsIHRha2UKKyAgIGVmZmVjdCBvbmx5IGF0IHRoZSBuZXh0IGNhbGwgb2YgZGVmbGF0ZSgpLgorCisgICAgIEJlZm9yZSB0aGUgY2FsbCBvZiBkZWZsYXRlUGFyYW1zLCB0aGUgc3RyZWFtIHN0YXRlIG11c3QgYmUgc2V0IGFzIGZvcgorICAgYSBjYWxsIG9mIGRlZmxhdGUoKSwgc2luY2UgdGhlIGN1cnJlbnRseSBhdmFpbGFibGUgaW5wdXQgbWF5IGhhdmUgdG8gYmUKKyAgIGNvbXByZXNzZWQgYW5kIGZsdXNoZWQuICBJbiBwYXJ0aWN1bGFyLCBzdHJtLT5hdmFpbF9vdXQgbXVzdCBiZSBub24temVyby4KKworICAgICBkZWZsYXRlUGFyYW1zIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlCisgICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudCBvciBpZiBhIHBhcmFtZXRlciB3YXMgaW52YWxpZCwgWl9CVUZfRVJST1IgaWYKKyAgIHN0cm0tPmF2YWlsX291dCB3YXMgemVyby4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVR1bmUgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdvb2RfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9sYXp5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5pY2VfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heF9jaGFpbikpOworLyoKKyAgICAgRmluZSB0dW5lIGRlZmxhdGUncyBpbnRlcm5hbCBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzLiAgVGhpcyBzaG91bGQgb25seSBiZQorICAgdXNlZCBieSBzb21lb25lIHdobyB1bmRlcnN0YW5kcyB0aGUgYWxnb3JpdGhtIHVzZWQgYnkgemxpYidzIGRlZmxhdGUgZm9yCisgICBzZWFyY2hpbmcgZm9yIHRoZSBiZXN0IG1hdGNoaW5nIHN0cmluZywgYW5kIGV2ZW4gdGhlbiBvbmx5IGJ5IHRoZSBtb3N0CisgICBmYW5hdGljIG9wdGltaXplciB0cnlpbmcgdG8gc3F1ZWV6ZSBvdXQgdGhlIGxhc3QgY29tcHJlc3NlZCBiaXQgZm9yIHRoZWlyCisgICBzcGVjaWZpYyBpbnB1dCBkYXRhLiAgUmVhZCB0aGUgZGVmbGF0ZS5jIHNvdXJjZSBjb2RlIGZvciB0aGUgbWVhbmluZyBvZiB0aGUKKyAgIG1heF9sYXp5LCBnb29kX2xlbmd0aCwgbmljZV9sZW5ndGgsIGFuZCBtYXhfY2hhaW4gcGFyYW1ldGVycy4KKworICAgICBkZWZsYXRlVHVuZSgpIGNhbiBiZSBjYWxsZWQgYWZ0ZXIgZGVmbGF0ZUluaXQoKSBvciBkZWZsYXRlSW5pdDIoKSwgYW5kCisgICByZXR1cm5zIFpfT0sgb24gc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgZm9yIGFuIGludmFsaWQgZGVmbGF0ZSBzdHJlYW0uCisgKi8KKworWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGRlZmxhdGVCb3VuZCBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1TG9uZyBzb3VyY2VMZW4pKTsKKy8qCisgICAgIGRlZmxhdGVCb3VuZCgpIHJldHVybnMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGNvbXByZXNzZWQgc2l6ZSBhZnRlcgorICAgZGVmbGF0aW9uIG9mIHNvdXJjZUxlbiBieXRlcy4gIEl0IG11c3QgYmUgY2FsbGVkIGFmdGVyIGRlZmxhdGVJbml0KCkgb3IKKyAgIGRlZmxhdGVJbml0MigpLCBhbmQgYWZ0ZXIgZGVmbGF0ZVNldEhlYWRlcigpLCBpZiB1c2VkLiAgVGhpcyB3b3VsZCBiZSB1c2VkCisgICB0byBhbGxvY2F0ZSBhbiBvdXRwdXQgYnVmZmVyIGZvciBkZWZsYXRpb24gaW4gYSBzaW5nbGUgcGFzcywgYW5kIHNvIHdvdWxkIGJlCisgICBjYWxsZWQgYmVmb3JlIGRlZmxhdGUoKS4gIElmIHRoYXQgZmlyc3QgZGVmbGF0ZSgpIGNhbGwgaXMgcHJvdmlkZWQgdGhlCisgICBzb3VyY2VMZW4gaW5wdXQgYnl0ZXMsIGFuIG91dHB1dCBidWZmZXIgYWxsb2NhdGVkIHRvIHRoZSBzaXplIHJldHVybmVkIGJ5CisgICBkZWZsYXRlQm91bmQoKSwgYW5kIHRoZSBmbHVzaCB2YWx1ZSBaX0ZJTklTSCwgdGhlbiBkZWZsYXRlKCkgaXMgZ3VhcmFudGVlZAorICAgdG8gcmV0dXJuIFpfU1RSRUFNX0VORC4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGNvbXByZXNzZWQgc2l6ZSB0bworICAgYmUgbGFyZ2VyIHRoYW4gdGhlIHZhbHVlIHJldHVybmVkIGJ5IGRlZmxhdGVCb3VuZCgpIGlmIGZsdXNoIG9wdGlvbnMgb3RoZXIKKyAgIHRoYW4gWl9GSU5JU0ggb3IgWl9OT19GTFVTSCBhcmUgdXNlZC4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVBlbmRpbmcgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKnBlbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmJpdHMpKTsKKy8qCisgICAgIGRlZmxhdGVQZW5kaW5nKCkgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFuZCBiaXRzIG9mIG91dHB1dCB0aGF0IGhhdmUKKyAgIGJlZW4gZ2VuZXJhdGVkLCBidXQgbm90IHlldCBwcm92aWRlZCBpbiB0aGUgYXZhaWxhYmxlIG91dHB1dC4gIFRoZSBieXRlcyBub3QKKyAgIHByb3ZpZGVkIHdvdWxkIGJlIGR1ZSB0byB0aGUgYXZhaWxhYmxlIG91dHB1dCBzcGFjZSBoYXZpbmcgYmVpbmcgY29uc3VtZWQuCisgICBUaGUgbnVtYmVyIG9mIGJpdHMgb2Ygb3V0cHV0IG5vdCBwcm92aWRlZCBhcmUgYmV0d2VlbiAwIGFuZCA3LCB3aGVyZSB0aGV5CisgICBhd2FpdCBtb3JlIGJpdHMgdG8gam9pbiB0aGVtIGluIG9yZGVyIHRvIGZpbGwgb3V0IGEgZnVsbCBieXRlLiAgSWYgcGVuZGluZworICAgb3IgYml0cyBhcmUgWl9OVUxMLCB0aGVuIHRob3NlIHZhbHVlcyBhcmUgbm90IHNldC4KKworICAgICBkZWZsYXRlUGVuZGluZyByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuCisgKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlUHJpbWUgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSkpOworLyoKKyAgICAgZGVmbGF0ZVByaW1lKCkgaW5zZXJ0cyBiaXRzIGluIHRoZSBkZWZsYXRlIG91dHB1dCBzdHJlYW0uICBUaGUgaW50ZW50CisgICBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzdGFydCBvZmYgdGhlIGRlZmxhdGUgb3V0cHV0IHdpdGggdGhlIGJpdHMKKyAgIGxlZnRvdmVyIGZyb20gYSBwcmV2aW91cyBkZWZsYXRlIHN0cmVhbSB3aGVuIGFwcGVuZGluZyB0byBpdC4gIEFzIHN1Y2gsIHRoaXMKKyAgIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHJhdyBkZWZsYXRlLCBhbmQgbXVzdCBiZSB1c2VkIGJlZm9yZSB0aGUgZmlyc3QKKyAgIGRlZmxhdGUoKSBjYWxsIGFmdGVyIGEgZGVmbGF0ZUluaXQyKCkgb3IgZGVmbGF0ZVJlc2V0KCkuICBiaXRzIG11c3QgYmUgbGVzcworICAgdGhhbiBvciBlcXVhbCB0byAxNiwgYW5kIHRoYXQgbWFueSBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB2YWx1ZQorICAgd2lsbCBiZSBpbnNlcnRlZCBpbiB0aGUgb3V0cHV0LgorCisgICAgIGRlZmxhdGVQcmltZSByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9CVUZfRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKKyAgIHJvb20gaW4gdGhlIGludGVybmFsIGJ1ZmZlciB0byBpbnNlcnQgdGhlIGJpdHMsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZQorICAgc291cmNlIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50LgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlU2V0SGVhZGVyIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3pfaGVhZGVycCBoZWFkKSk7CisvKgorICAgICBkZWZsYXRlU2V0SGVhZGVyKCkgcHJvdmlkZXMgZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gZm9yIHdoZW4gYSBnemlwCisgICBzdHJlYW0gaXMgcmVxdWVzdGVkIGJ5IGRlZmxhdGVJbml0MigpLiAgZGVmbGF0ZVNldEhlYWRlcigpIG1heSBiZSBjYWxsZWQKKyAgIGFmdGVyIGRlZmxhdGVJbml0MigpIG9yIGRlZmxhdGVSZXNldCgpIGFuZCBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgb2YKKyAgIGRlZmxhdGUoKS4gIFRoZSB0ZXh0LCB0aW1lLCBvcywgZXh0cmEgZmllbGQsIG5hbWUsIGFuZCBjb21tZW50IGluZm9ybWF0aW9uCisgICBpbiB0aGUgcHJvdmlkZWQgZ3pfaGVhZGVyIHN0cnVjdHVyZSBhcmUgd3JpdHRlbiB0byB0aGUgZ3ppcCBoZWFkZXIgKHhmbGFnIGlzCisgICBpZ25vcmVkIC0tIHRoZSBleHRyYSBmbGFncyBhcmUgc2V0IGFjY29yZGluZyB0byB0aGUgY29tcHJlc3Npb24gbGV2ZWwpLiAgVGhlCisgICBjYWxsZXIgbXVzdCBhc3N1cmUgdGhhdCwgaWYgbm90IFpfTlVMTCwgbmFtZSBhbmQgY29tbWVudCBhcmUgdGVybWluYXRlZCB3aXRoCisgICBhIHplcm8gYnl0ZSwgYW5kIHRoYXQgaWYgZXh0cmEgaXMgbm90IFpfTlVMTCwgdGhhdCBleHRyYV9sZW4gYnl0ZXMgYXJlCisgICBhdmFpbGFibGUgdGhlcmUuICBJZiBoY3JjIGlzIHRydWUsIGEgZ3ppcCBoZWFkZXIgY3JjIGlzIGluY2x1ZGVkLiAgTm90ZSB0aGF0CisgICB0aGUgY3VycmVudCB2ZXJzaW9ucyBvZiB0aGUgY29tbWFuZC1saW5lIHZlcnNpb24gb2YgZ3ppcCAodXAgdGhyb3VnaCB2ZXJzaW9uCisgICAxLjMueCkgZG8gbm90IHN1cHBvcnQgaGVhZGVyIGNyYydzLCBhbmQgd2lsbCByZXBvcnQgdGhhdCBpdCBpcyBhICJtdWx0aS1wYXJ0CisgICBnemlwIGZpbGUiIGFuZCBnaXZlIHVwLgorCisgICAgIElmIGRlZmxhdGVTZXRIZWFkZXIgaXMgbm90IHVzZWQsIHRoZSBkZWZhdWx0IGd6aXAgaGVhZGVyIGhhcyB0ZXh0IGZhbHNlLAorICAgdGhlIHRpbWUgc2V0IHRvIHplcm8sIGFuZCBvcyBzZXQgdG8gMjU1LCB3aXRoIG5vIGV4dHJhLCBuYW1lLCBvciBjb21tZW50CisgICBmaWVsZHMuICBUaGUgZ3ppcCBoZWFkZXIgaXMgcmV0dXJuZWQgdG8gdGhlIGRlZmF1bHQgc3RhdGUgYnkgZGVmbGF0ZVJlc2V0KCkuCisKKyAgICAgZGVmbGF0ZVNldEhlYWRlciByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQorICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuCisqLworCisvKgorWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdDIgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgd2luZG93Qml0cykpOworCisgICAgIFRoaXMgaXMgYW5vdGhlciB2ZXJzaW9uIG9mIGluZmxhdGVJbml0IHdpdGggYW4gZXh0cmEgcGFyYW1ldGVyLiAgVGhlCisgICBmaWVsZHMgbmV4dF9pbiwgYXZhaWxfaW4sIHphbGxvYywgemZyZWUgYW5kIG9wYXF1ZSBtdXN0IGJlIGluaXRpYWxpemVkCisgICBiZWZvcmUgYnkgdGhlIGNhbGxlci4KKworICAgICBUaGUgd2luZG93Qml0cyBwYXJhbWV0ZXIgaXMgdGhlIGJhc2UgdHdvIGxvZ2FyaXRobSBvZiB0aGUgbWF4aW11bSB3aW5kb3cKKyAgIHNpemUgKHRoZSBzaXplIG9mIHRoZSBoaXN0b3J5IGJ1ZmZlcikuICBJdCBzaG91bGQgYmUgaW4gdGhlIHJhbmdlIDguLjE1IGZvcgorICAgdGhpcyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTUgaWYgaW5mbGF0ZUluaXQgaXMgdXNlZAorICAgaW5zdGVhZC4gIHdpbmRvd0JpdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHdpbmRvd0JpdHMgdmFsdWUKKyAgIHByb3ZpZGVkIHRvIGRlZmxhdGVJbml0MigpIHdoaWxlIGNvbXByZXNzaW5nLCBvciBpdCBtdXN0IGJlIGVxdWFsIHRvIDE1IGlmCisgICBkZWZsYXRlSW5pdDIoKSB3YXMgbm90IHVzZWQuICBJZiBhIGNvbXByZXNzZWQgc3RyZWFtIHdpdGggYSBsYXJnZXIgd2luZG93CisgICBzaXplIGlzIGdpdmVuIGFzIGlucHV0LCBpbmZsYXRlKCkgd2lsbCByZXR1cm4gd2l0aCB0aGUgZXJyb3IgY29kZQorICAgWl9EQVRBX0VSUk9SIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGFsbG9jYXRlIGEgbGFyZ2VyIHdpbmRvdy4KKworICAgICB3aW5kb3dCaXRzIGNhbiBhbHNvIGJlIHplcm8gdG8gcmVxdWVzdCB0aGF0IGluZmxhdGUgdXNlIHRoZSB3aW5kb3cgc2l6ZSBpbgorICAgdGhlIHpsaWIgaGVhZGVyIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KKworICAgICB3aW5kb3dCaXRzIGNhbiBhbHNvIGJlIC04Li4tMTUgZm9yIHJhdyBpbmZsYXRlLiAgSW4gdGhpcyBjYXNlLCAtd2luZG93Qml0cworICAgZGV0ZXJtaW5lcyB0aGUgd2luZG93IHNpemUuICBpbmZsYXRlKCkgd2lsbCB0aGVuIHByb2Nlc3MgcmF3IGRlZmxhdGUgZGF0YSwKKyAgIG5vdCBsb29raW5nIGZvciBhIHpsaWIgb3IgZ3ppcCBoZWFkZXIsIG5vdCBnZW5lcmF0aW5nIGEgY2hlY2sgdmFsdWUsIGFuZCBub3QKKyAgIGxvb2tpbmcgZm9yIGFueSBjaGVjayB2YWx1ZXMgZm9yIGNvbXBhcmlzb24gYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLiAgVGhpcworICAgaXMgZm9yIHVzZSB3aXRoIG90aGVyIGZvcm1hdHMgdGhhdCB1c2UgdGhlIGRlZmxhdGUgY29tcHJlc3NlZCBkYXRhIGZvcm1hdAorICAgc3VjaCBhcyB6aXAuICBUaG9zZSBmb3JtYXRzIHByb3ZpZGUgdGhlaXIgb3duIGNoZWNrIHZhbHVlcy4gIElmIGEgY3VzdG9tCisgICBmb3JtYXQgaXMgZGV2ZWxvcGVkIHVzaW5nIHRoZSByYXcgZGVmbGF0ZSBmb3JtYXQgZm9yIGNvbXByZXNzZWQgZGF0YSwgaXQgaXMKKyAgIHJlY29tbWVuZGVkIHRoYXQgYSBjaGVjayB2YWx1ZSBzdWNoIGFzIGFuIGFkbGVyMzIgb3IgYSBjcmMzMiBiZSBhcHBsaWVkIHRvCisgICB0aGUgdW5jb21wcmVzc2VkIGRhdGEgYXMgaXMgZG9uZSBpbiB0aGUgemxpYiwgZ3ppcCwgYW5kIHppcCBmb3JtYXRzLiAgRm9yCisgICBtb3N0IGFwcGxpY2F0aW9ucywgdGhlIHpsaWIgZm9ybWF0IHNob3VsZCBiZSB1c2VkIGFzIGlzLiAgTm90ZSB0aGF0IGNvbW1lbnRzCisgICBhYm92ZSBvbiB0aGUgdXNlIGluIGRlZmxhdGVJbml0MigpIGFwcGxpZXMgdG8gdGhlIG1hZ25pdHVkZSBvZiB3aW5kb3dCaXRzLgorCisgICAgIHdpbmRvd0JpdHMgY2FuIGFsc28gYmUgZ3JlYXRlciB0aGFuIDE1IGZvciBvcHRpb25hbCBnemlwIGRlY29kaW5nLiAgQWRkCisgICAzMiB0byB3aW5kb3dCaXRzIHRvIGVuYWJsZSB6bGliIGFuZCBnemlwIGRlY29kaW5nIHdpdGggYXV0b21hdGljIGhlYWRlcgorICAgZGV0ZWN0aW9uLCBvciBhZGQgMTYgdG8gZGVjb2RlIG9ubHkgdGhlIGd6aXAgZm9ybWF0ICh0aGUgemxpYiBmb3JtYXQgd2lsbAorICAgcmV0dXJuIGEgWl9EQVRBX0VSUk9SKS4gIElmIGEgZ3ppcCBzdHJlYW0gaXMgYmVpbmcgZGVjb2RlZCwgc3RybS0+YWRsZXIgaXMgYQorICAgY3JjMzIgaW5zdGVhZCBvZiBhbiBhZGxlcjMyLgorCisgICAgIGluZmxhdGVJbml0MiByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKKyAgIG1lbW9yeSwgWl9WRVJTSU9OX0VSUk9SIGlmIHRoZSB6bGliIGxpYnJhcnkgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUKKyAgIHZlcnNpb24gYXNzdW1lZCBieSB0aGUgY2FsbGVyLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgcGFyYW1ldGVycyBhcmUKKyAgIGludmFsaWQsIHN1Y2ggYXMgYSBudWxsIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZS4gIG1zZyBpcyBzZXQgdG8gbnVsbCBpZgorICAgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZS4gIGluZmxhdGVJbml0MiBkb2VzIG5vdCBwZXJmb3JtIGFueSBkZWNvbXByZXNzaW9uCisgICBhcGFydCBmcm9tIHBvc3NpYmx5IHJlYWRpbmcgdGhlIHpsaWIgaGVhZGVyIGlmIHByZXNlbnQ6IGFjdHVhbCBkZWNvbXByZXNzaW9uCisgICB3aWxsIGJlIGRvbmUgYnkgaW5mbGF0ZSgpLiAgKFNvIG5leHRfaW4gYW5kIGF2YWlsX2luIG1heSBiZSBtb2RpZmllZCwgYnV0CisgICBuZXh0X291dCBhbmQgYXZhaWxfb3V0IGFyZSB1bnVzZWQgYW5kIHVuY2hhbmdlZC4pIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICBvZiBpbmZsYXRlSW5pdDIoKSBkb2VzIG5vdCBwcm9jZXNzIGFueSBoZWFkZXIgaW5mb3JtYXRpb24gLS0gdGhhdCBpcworICAgZGVmZXJyZWQgdW50aWwgaW5mbGF0ZSgpIGlzIGNhbGxlZC4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVNldERpY3Rpb25hcnkgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnl0ZWYgKmRpY3Rpb25hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1SW50ICBkaWN0TGVuZ3RoKSk7CisvKgorICAgICBJbml0aWFsaXplcyB0aGUgZGVjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IGZyb20gdGhlIGdpdmVuIHVuY29tcHJlc3NlZCBieXRlCisgICBzZXF1ZW5jZS4gIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxsIG9mIGluZmxhdGUsCisgICBpZiB0aGF0IGNhbGwgcmV0dXJuZWQgWl9ORUVEX0RJQ1QuICBUaGUgZGljdGlvbmFyeSBjaG9zZW4gYnkgdGhlIGNvbXByZXNzb3IKKyAgIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIGFkbGVyMzIgdmFsdWUgcmV0dXJuZWQgYnkgdGhhdCBjYWxsIG9mIGluZmxhdGUuCisgICBUaGUgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG11c3QgdXNlIGV4YWN0bHkgdGhlIHNhbWUgZGljdGlvbmFyeSAoc2VlCisgICBkZWZsYXRlU2V0RGljdGlvbmFyeSkuICBGb3IgcmF3IGluZmxhdGUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBhdCBhbnkKKyAgIHRpbWUgdG8gc2V0IHRoZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIHByb3ZpZGVkIGRpY3Rpb25hcnkgaXMgc21hbGxlciB0aGFuIHRoZQorICAgd2luZG93IGFuZCB0aGVyZSBpcyBhbHJlYWR5IGRhdGEgaW4gdGhlIHdpbmRvdywgdGhlbiB0aGUgcHJvdmlkZWQgZGljdGlvbmFyeQorICAgd2lsbCBhbWVuZCB3aGF0J3MgdGhlcmUuICBUaGUgYXBwbGljYXRpb24gbXVzdCBpbnN1cmUgdGhhdCB0aGUgZGljdGlvbmFyeQorICAgdGhhdCB3YXMgdXNlZCBmb3IgY29tcHJlc3Npb24gaXMgcHJvdmlkZWQuCisKKyAgICAgaW5mbGF0ZVNldERpY3Rpb25hcnkgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIGEKKyAgIHBhcmFtZXRlciBpcyBpbnZhbGlkIChlLmcuICBkaWN0aW9uYXJ5IGJlaW5nIFpfTlVMTCkgb3IgdGhlIHN0cmVhbSBzdGF0ZSBpcworICAgaW5jb25zaXN0ZW50LCBaX0RBVEFfRVJST1IgaWYgdGhlIGdpdmVuIGRpY3Rpb25hcnkgZG9lc24ndCBtYXRjaCB0aGUKKyAgIGV4cGVjdGVkIG9uZSAoaW5jb3JyZWN0IGFkbGVyMzIgdmFsdWUpLiAgaW5mbGF0ZVNldERpY3Rpb25hcnkgZG9lcyBub3QKKyAgIHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb246IHRoaXMgd2lsbCBiZSBkb25lIGJ5IHN1YnNlcXVlbnQgY2FsbHMgb2YKKyAgIGluZmxhdGUoKS4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUdldERpY3Rpb25hcnkgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZWYgKmRpY3Rpb25hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1SW50ICAqZGljdExlbmd0aCkpOworLyoKKyAgICAgUmV0dXJucyB0aGUgc2xpZGluZyBkaWN0aW9uYXJ5IGJlaW5nIG1haW50YWluZWQgYnkgaW5mbGF0ZS4gIGRpY3RMZW5ndGggaXMKKyAgIHNldCB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkaWN0aW9uYXJ5LCBhbmQgdGhhdCBtYW55IGJ5dGVzIGFyZSBjb3BpZWQKKyAgIHRvIGRpY3Rpb25hcnkuICBkaWN0aW9uYXJ5IG11c3QgaGF2ZSBlbm91Z2ggc3BhY2UsIHdoZXJlIDMyNzY4IGJ5dGVzIGlzCisgICBhbHdheXMgZW5vdWdoLiAgSWYgaW5mbGF0ZUdldERpY3Rpb25hcnkoKSBpcyBjYWxsZWQgd2l0aCBkaWN0aW9uYXJ5IGVxdWFsIHRvCisgICBaX05VTEwsIHRoZW4gb25seSB0aGUgZGljdGlvbmFyeSBsZW5ndGggaXMgcmV0dXJuZWQsIGFuZCBub3RoaW5nIGlzIGNvcGllZC4KKyAgIFNpbWlsYXJ5LCBpZiBkaWN0TGVuZ3RoIGlzIFpfTlVMTCwgdGhlbiBpdCBpcyBub3Qgc2V0LgorCisgICAgIGluZmxhdGVHZXREaWN0aW9uYXJ5IHJldHVybnMgWl9PSyBvbiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUKKyAgIHN0cmVhbSBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVTeW5jIE9GKCh6X3N0cmVhbXAgc3RybSkpOworLyoKKyAgICAgU2tpcHMgaW52YWxpZCBjb21wcmVzc2VkIGRhdGEgdW50aWwgYSBwb3NzaWJsZSBmdWxsIGZsdXNoIHBvaW50IChzZWUgYWJvdmUKKyAgIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgZGVmbGF0ZSB3aXRoIFpfRlVMTF9GTFVTSCkgY2FuIGJlIGZvdW5kLCBvciB1bnRpbCBhbGwKKyAgIGF2YWlsYWJsZSBpbnB1dCBpcyBza2lwcGVkLiAgTm8gb3V0cHV0IGlzIHByb3ZpZGVkLgorCisgICAgIGluZmxhdGVTeW5jIHNlYXJjaGVzIGZvciBhIDAwIDAwIEZGIEZGIHBhdHRlcm4gaW4gdGhlIGNvbXByZXNzZWQgZGF0YS4KKyAgIEFsbCBmdWxsIGZsdXNoIHBvaW50cyBoYXZlIHRoaXMgcGF0dGVybiwgYnV0IG5vdCBhbGwgb2NjdXJyZW5jZXMgb2YgdGhpcworICAgcGF0dGVybiBhcmUgZnVsbCBmbHVzaCBwb2ludHMuCisKKyAgICAgaW5mbGF0ZVN5bmMgcmV0dXJucyBaX09LIGlmIGEgcG9zc2libGUgZnVsbCBmbHVzaCBwb2ludCBoYXMgYmVlbiBmb3VuZCwKKyAgIFpfQlVGX0VSUk9SIGlmIG5vIG1vcmUgaW5wdXQgd2FzIHByb3ZpZGVkLCBaX0RBVEFfRVJST1IgaWYgbm8gZmx1c2ggcG9pbnQKKyAgIGhhcyBiZWVuIGZvdW5kLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0cnVjdHVyZSB3YXMgaW5jb25zaXN0ZW50LgorICAgSW4gdGhlIHN1Y2Nlc3MgY2FzZSwgdGhlIGFwcGxpY2F0aW9uIG1heSBzYXZlIHRoZSBjdXJyZW50IGN1cnJlbnQgdmFsdWUgb2YKKyAgIHRvdGFsX2luIHdoaWNoIGluZGljYXRlcyB3aGVyZSB2YWxpZCBjb21wcmVzc2VkIGRhdGEgd2FzIGZvdW5kLiAgSW4gdGhlCisgICBlcnJvciBjYXNlLCB0aGUgYXBwbGljYXRpb24gbWF5IHJlcGVhdGVkbHkgY2FsbCBpbmZsYXRlU3luYywgcHJvdmlkaW5nIG1vcmUKKyAgIGlucHV0IGVhY2ggdGltZSwgdW50aWwgc3VjY2VzcyBvciBlbmQgb2YgdGhlIGlucHV0IGRhdGEuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVDb3B5IE9GKCh6X3N0cmVhbXAgZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfc3RyZWFtcCBzb3VyY2UpKTsKKy8qCisgICAgIFNldHMgdGhlIGRlc3RpbmF0aW9uIHN0cmVhbSBhcyBhIGNvbXBsZXRlIGNvcHkgb2YgdGhlIHNvdXJjZSBzdHJlYW0uCisKKyAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZnVsIHdoZW4gcmFuZG9tbHkgYWNjZXNzaW5nIGEgbGFyZ2Ugc3RyZWFtLiAgVGhlCisgICBmaXJzdCBwYXNzIHRocm91Z2ggdGhlIHN0cmVhbSBjYW4gcGVyaW9kaWNhbGx5IHJlY29yZCB0aGUgaW5mbGF0ZSBzdGF0ZSwKKyAgIGFsbG93aW5nIHJlc3RhcnRpbmcgaW5mbGF0ZSBhdCB0aG9zZSBwb2ludHMgd2hlbiByYW5kb21seSBhY2Nlc3NpbmcgdGhlCisgICBzdHJlYW0uCisKKyAgICAgaW5mbGF0ZUNvcHkgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QKKyAgIGVub3VnaCBtZW1vcnksIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2Ugc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQKKyAgIChzdWNoIGFzIHphbGxvYyBiZWluZyBaX05VTEwpLiAgbXNnIGlzIGxlZnQgdW5jaGFuZ2VkIGluIGJvdGggc291cmNlIGFuZAorICAgZGVzdGluYXRpb24uCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVSZXNldCBPRigoel9zdHJlYW1wIHN0cm0pKTsKKy8qCisgICAgIFRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBpbmZsYXRlRW5kIGZvbGxvd2VkIGJ5IGluZmxhdGVJbml0LAorICAgYnV0IGRvZXMgbm90IGZyZWUgYW5kIHJlYWxsb2NhdGUgYWxsIHRoZSBpbnRlcm5hbCBkZWNvbXByZXNzaW9uIHN0YXRlLiAgVGhlCisgICBzdHJlYW0gd2lsbCBrZWVwIGF0dHJpYnV0ZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBieSBpbmZsYXRlSW5pdDIuCisKKyAgICAgaW5mbGF0ZVJlc2V0IHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlCisgICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudCAoc3VjaCBhcyB6YWxsb2Mgb3Igc3RhdGUgYmVpbmcgWl9OVUxMKS4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVJlc2V0MiBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aW5kb3dCaXRzKSk7CisvKgorICAgICBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIGluZmxhdGVSZXNldCwgYnV0IGl0IGFsc28gcGVybWl0cyBjaGFuZ2luZworICAgdGhlIHdyYXAgYW5kIHdpbmRvdyBzaXplIHJlcXVlc3RzLiAgVGhlIHdpbmRvd0JpdHMgcGFyYW1ldGVyIGlzIGludGVycHJldGVkCisgICB0aGUgc2FtZSBhcyBpdCBpcyBmb3IgaW5mbGF0ZUluaXQyLgorCisgICAgIGluZmxhdGVSZXNldDIgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UKKyAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50IChzdWNoIGFzIHphbGxvYyBvciBzdGF0ZSBiZWluZyBaX05VTEwpLCBvciBpZgorICAgdGhlIHdpbmRvd0JpdHMgcGFyYW1ldGVyIGlzIGludmFsaWQuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVQcmltZSBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKSk7CisvKgorICAgICBUaGlzIGZ1bmN0aW9uIGluc2VydHMgYml0cyBpbiB0aGUgaW5mbGF0ZSBpbnB1dCBzdHJlYW0uICBUaGUgaW50ZW50IGlzCisgICB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzdGFydCBpbmZsYXRpbmcgYXQgYSBiaXQgcG9zaXRpb24gaW4gdGhlCisgICBtaWRkbGUgb2YgYSBieXRlLiAgVGhlIHByb3ZpZGVkIGJpdHMgd2lsbCBiZSB1c2VkIGJlZm9yZSBhbnkgYnl0ZXMgYXJlIHVzZWQKKyAgIGZyb20gbmV4dF9pbi4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIHJhdyBpbmZsYXRlLCBhbmQKKyAgIHNob3VsZCBiZSB1c2VkIGJlZm9yZSB0aGUgZmlyc3QgaW5mbGF0ZSgpIGNhbGwgYWZ0ZXIgaW5mbGF0ZUluaXQyKCkgb3IKKyAgIGluZmxhdGVSZXNldCgpLiAgYml0cyBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAxNiwgYW5kIHRoYXQgbWFueSBvZiB0aGUKKyAgIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgdmFsdWUgd2lsbCBiZSBpbnNlcnRlZCBpbiB0aGUgaW5wdXQuCisKKyAgICAgSWYgYml0cyBpcyBuZWdhdGl2ZSwgdGhlbiB0aGUgaW5wdXQgc3RyZWFtIGJpdCBidWZmZXIgaXMgZW1wdGllZC4gIFRoZW4KKyAgIGluZmxhdGVQcmltZSgpIGNhbiBiZSBjYWxsZWQgYWdhaW4gdG8gcHV0IGJpdHMgaW4gdGhlIGJ1ZmZlci4gIFRoaXMgaXMgdXNlZAorICAgdG8gY2xlYXIgb3V0IGJpdHMgbGVmdG92ZXIgYWZ0ZXIgZmVlZGluZyBpbmZsYXRlIGEgYmxvY2sgZGVzY3JpcHRpb24gcHJpb3IKKyAgIHRvIGZlZWRpbmcgaW5mbGF0ZSBjb2Rlcy4KKworICAgICBpbmZsYXRlUHJpbWUgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UKKyAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50LgorKi8KKworWkVYVEVSTiBsb25nIFpFWFBPUlQgaW5mbGF0ZU1hcmsgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CisvKgorICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHdvIHZhbHVlcywgb25lIGluIHRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZSByZXR1cm4KKyAgIHZhbHVlLCBhbmQgdGhlIG90aGVyIGluIHRoZSByZW1haW5pbmcgdXBwZXIgYml0cywgb2J0YWluZWQgYnkgc2hpZnRpbmcgdGhlCisgICByZXR1cm4gdmFsdWUgZG93biAxNiBiaXRzLiAgSWYgdGhlIHVwcGVyIHZhbHVlIGlzIC0xIGFuZCB0aGUgbG93ZXIgdmFsdWUgaXMKKyAgIHplcm8sIHRoZW4gaW5mbGF0ZSgpIGlzIGN1cnJlbnRseSBkZWNvZGluZyBpbmZvcm1hdGlvbiBvdXRzaWRlIG9mIGEgYmxvY2suCisgICBJZiB0aGUgdXBwZXIgdmFsdWUgaXMgLTEgYW5kIHRoZSBsb3dlciB2YWx1ZSBpcyBub24temVybywgdGhlbiBpbmZsYXRlIGlzIGluCisgICB0aGUgbWlkZGxlIG9mIGEgc3RvcmVkIGJsb2NrLCB3aXRoIHRoZSBsb3dlciB2YWx1ZSBlcXVhbGluZyB0aGUgbnVtYmVyIG9mCisgICBieXRlcyBmcm9tIHRoZSBpbnB1dCByZW1haW5pbmcgdG8gY29weS4gIElmIHRoZSB1cHBlciB2YWx1ZSBpcyBub3QgLTEsIHRoZW4KKyAgIGl0IGlzIHRoZSBudW1iZXIgb2YgYml0cyBiYWNrIGZyb20gdGhlIGN1cnJlbnQgYml0IHBvc2l0aW9uIGluIHRoZSBpbnB1dCBvZgorICAgdGhlIGNvZGUgKGxpdGVyYWwgb3IgbGVuZ3RoL2Rpc3RhbmNlIHBhaXIpIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuICBJbgorICAgdGhhdCBjYXNlIHRoZSBsb3dlciB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFscmVhZHkgZW1pdHRlZCBmb3IgdGhhdAorICAgY29kZS4KKworICAgICBBIGNvZGUgaXMgYmVpbmcgcHJvY2Vzc2VkIGlmIGluZmxhdGUgaXMgd2FpdGluZyBmb3IgbW9yZSBpbnB1dCB0byBjb21wbGV0ZQorICAgZGVjb2Rpbmcgb2YgdGhlIGNvZGUsIG9yIGlmIGl0IGhhcyBjb21wbGV0ZWQgZGVjb2RpbmcgYnV0IGlzIHdhaXRpbmcgZm9yCisgICBtb3JlIG91dHB1dCBzcGFjZSB0byB3cml0ZSB0aGUgbGl0ZXJhbCBvciBtYXRjaCBkYXRhLgorCisgICAgIGluZmxhdGVNYXJrKCkgaXMgdXNlZCB0byBtYXJrIGxvY2F0aW9ucyBpbiB0aGUgaW5wdXQgZGF0YSBmb3IgcmFuZG9tCisgICBhY2Nlc3MsIHdoaWNoIG1heSBiZSBhdCBiaXQgcG9zaXRpb25zLCBhbmQgdG8gbm90ZSB0aG9zZSBjYXNlcyB3aGVyZSB0aGUKKyAgIG91dHB1dCBvZiBhIGNvZGUgbWF5IHNwYW4gYm91bmRhcmllcyBvZiByYW5kb20gYWNjZXNzIGJsb2Nrcy4gIFRoZSBjdXJyZW50CisgICBsb2NhdGlvbiBpbiB0aGUgaW5wdXQgc3RyZWFtIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gYXZhaWxfaW4gYW5kIGRhdGFfdHlwZQorICAgYXMgbm90ZWQgaW4gdGhlIGRlc2NyaXB0aW9uIGZvciB0aGUgWl9CTE9DSyBmbHVzaCBwYXJhbWV0ZXIgZm9yIGluZmxhdGUuCisKKyAgICAgaW5mbGF0ZU1hcmsgcmV0dXJucyB0aGUgdmFsdWUgbm90ZWQgYWJvdmUgb3IgLTEgPDwgMTYgaWYgdGhlIHByb3ZpZGVkCisgICBzb3VyY2Ugc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVHZXRIZWFkZXIgT0YoKHpfc3RyZWFtcCBzdHJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnel9oZWFkZXJwIGhlYWQpKTsKKy8qCisgICAgIGluZmxhdGVHZXRIZWFkZXIoKSByZXF1ZXN0cyB0aGF0IGd6aXAgaGVhZGVyIGluZm9ybWF0aW9uIGJlIHN0b3JlZCBpbiB0aGUKKyAgIHByb3ZpZGVkIGd6X2hlYWRlciBzdHJ1Y3R1cmUuICBpbmZsYXRlR2V0SGVhZGVyKCkgbWF5IGJlIGNhbGxlZCBhZnRlcgorICAgaW5mbGF0ZUluaXQyKCkgb3IgaW5mbGF0ZVJlc2V0KCksIGFuZCBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgb2YgaW5mbGF0ZSgpLgorICAgQXMgaW5mbGF0ZSgpIHByb2Nlc3NlcyB0aGUgZ3ppcCBzdHJlYW0sIGhlYWQtPmRvbmUgaXMgemVybyB1bnRpbCB0aGUgaGVhZGVyCisgICBpcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgaGVhZC0+ZG9uZSBpcyBzZXQgdG8gb25lLiAgSWYgYSB6bGliIHN0cmVhbSBpcworICAgYmVpbmcgZGVjb2RlZCwgdGhlbiBoZWFkLT5kb25lIGlzIHNldCB0byAtMSB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIHdpbGwgYmUKKyAgIG5vIGd6aXAgaGVhZGVyIGluZm9ybWF0aW9uIGZvcnRoY29taW5nLiAgTm90ZSB0aGF0IFpfQkxPQ0sgb3IgWl9UUkVFUyBjYW4gYmUKKyAgIHVzZWQgdG8gZm9yY2UgaW5mbGF0ZSgpIHRvIHJldHVybiBpbW1lZGlhdGVseSBhZnRlciBoZWFkZXIgcHJvY2Vzc2luZyBpcworICAgY29tcGxldGUgYW5kIGJlZm9yZSBhbnkgYWN0dWFsIGRhdGEgaXMgZGVjb21wcmVzc2VkLgorCisgICAgIFRoZSB0ZXh0LCB0aW1lLCB4ZmxhZ3MsIGFuZCBvcyBmaWVsZHMgYXJlIGZpbGxlZCBpbiB3aXRoIHRoZSBnemlwIGhlYWRlcgorICAgY29udGVudHMuICBoY3JjIGlzIHNldCB0byB0cnVlIGlmIHRoZXJlIGlzIGEgaGVhZGVyIENSQy4gIChUaGUgaGVhZGVyIENSQworICAgd2FzIHZhbGlkIGlmIGRvbmUgaXMgc2V0IHRvIG9uZS4pIElmIGV4dHJhIGlzIG5vdCBaX05VTEwsIHRoZW4gZXh0cmFfbWF4CisgICBjb250YWlucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUgdG8gZXh0cmEuICBPbmNlIGRvbmUgaXMgdHJ1ZSwKKyAgIGV4dHJhX2xlbiBjb250YWlucyB0aGUgYWN0dWFsIGV4dHJhIGZpZWxkIGxlbmd0aCwgYW5kIGV4dHJhIGNvbnRhaW5zIHRoZQorICAgZXh0cmEgZmllbGQsIG9yIHRoYXQgZmllbGQgdHJ1bmNhdGVkIGlmIGV4dHJhX21heCBpcyBsZXNzIHRoYW4gZXh0cmFfbGVuLgorICAgSWYgbmFtZSBpcyBub3QgWl9OVUxMLCB0aGVuIHVwIHRvIG5hbWVfbWF4IGNoYXJhY3RlcnMgYXJlIHdyaXR0ZW4gdGhlcmUsCisgICB0ZXJtaW5hdGVkIHdpdGggYSB6ZXJvIHVubGVzcyB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBuYW1lX21heC4gIElmCisgICBjb21tZW50IGlzIG5vdCBaX05VTEwsIHRoZW4gdXAgdG8gY29tbV9tYXggY2hhcmFjdGVycyBhcmUgd3JpdHRlbiB0aGVyZSwKKyAgIHRlcm1pbmF0ZWQgd2l0aCBhIHplcm8gdW5sZXNzIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIGNvbW1fbWF4LiAgV2hlbiBhbnkKKyAgIG9mIGV4dHJhLCBuYW1lLCBvciBjb21tZW50IGFyZSBub3QgWl9OVUxMIGFuZCB0aGUgcmVzcGVjdGl2ZSBmaWVsZCBpcyBub3QKKyAgIHByZXNlbnQgaW4gdGhlIGhlYWRlciwgdGhlbiB0aGF0IGZpZWxkIGlzIHNldCB0byBaX05VTEwgdG8gc2lnbmFsIGl0cworICAgYWJzZW5jZS4gIFRoaXMgYWxsb3dzIHRoZSB1c2Ugb2YgZGVmbGF0ZVNldEhlYWRlcigpIHdpdGggdGhlIHJldHVybmVkCisgICBzdHJ1Y3R1cmUgdG8gZHVwbGljYXRlIHRoZSBoZWFkZXIuICBIb3dldmVyIGlmIHRob3NlIGZpZWxkcyBhcmUgc2V0IHRvCisgICBhbGxvY2F0ZWQgbWVtb3J5LCB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3aWxsIG5lZWQgdG8gc2F2ZSB0aG9zZSBwb2ludGVycworICAgZWxzZXdoZXJlIHNvIHRoYXQgdGhleSBjYW4gYmUgZXZlbnR1YWxseSBmcmVlZC4KKworICAgICBJZiBpbmZsYXRlR2V0SGVhZGVyIGlzIG5vdCB1c2VkLCB0aGVuIHRoZSBoZWFkZXIgaW5mb3JtYXRpb24gaXMgc2ltcGx5CisgICBkaXNjYXJkZWQuICBUaGUgaGVhZGVyIGlzIGFsd2F5cyBjaGVja2VkIGZvciB2YWxpZGl0eSwgaW5jbHVkaW5nIHRoZSBoZWFkZXIKKyAgIENSQyBpZiBwcmVzZW50LiAgaW5mbGF0ZVJlc2V0KCkgd2lsbCByZXNldCB0aGUgcHJvY2VzcyB0byBkaXNjYXJkIHRoZSBoZWFkZXIKKyAgIGluZm9ybWF0aW9uLiAgVGhlIGFwcGxpY2F0aW9uIHdvdWxkIG5lZWQgdG8gY2FsbCBpbmZsYXRlR2V0SGVhZGVyKCkgYWdhaW4gdG8KKyAgIHJldHJpZXZlIHRoZSBoZWFkZXIgZnJvbSB0aGUgbmV4dCBnemlwIHN0cmVhbS4KKworICAgICBpbmZsYXRlR2V0SGVhZGVyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlCisgICBzdHJlYW0gc3RhdGUgd2FzIGluY29uc2lzdGVudC4KKyovCisKKy8qCitaRVhURVJOIGludCBaRVhQT1JUIGluZmxhdGVCYWNrSW5pdCBPRigoel9zdHJlYW1wIHN0cm0sIGludCB3aW5kb3dCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgRkFSICp3aW5kb3cpKTsKKworICAgICBJbml0aWFsaXplIHRoZSBpbnRlcm5hbCBzdHJlYW0gc3RhdGUgZm9yIGRlY29tcHJlc3Npb24gdXNpbmcgaW5mbGF0ZUJhY2soKQorICAgY2FsbHMuICBUaGUgZmllbGRzIHphbGxvYywgemZyZWUgYW5kIG9wYXF1ZSBpbiBzdHJtIG11c3QgYmUgaW5pdGlhbGl6ZWQKKyAgIGJlZm9yZSB0aGUgY2FsbC4gIElmIHphbGxvYyBhbmQgemZyZWUgYXJlIFpfTlVMTCwgdGhlbiB0aGUgZGVmYXVsdCBsaWJyYXJ5LQorICAgZGVyaXZlZCBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyBhcmUgdXNlZC4gIHdpbmRvd0JpdHMgaXMgdGhlIGJhc2UgdHdvCisgICBsb2dhcml0aG0gb2YgdGhlIHdpbmRvdyBzaXplLCBpbiB0aGUgcmFuZ2UgOC4uMTUuICB3aW5kb3cgaXMgYSBjYWxsZXIKKyAgIHN1cHBsaWVkIGJ1ZmZlciBvZiB0aGF0IHNpemUuICBFeGNlcHQgZm9yIHNwZWNpYWwgYXBwbGljYXRpb25zIHdoZXJlIGl0IGlzCisgICBhc3N1cmVkIHRoYXQgZGVmbGF0ZSB3YXMgdXNlZCB3aXRoIHNtYWxsIHdpbmRvdyBzaXplcywgd2luZG93Qml0cyBtdXN0IGJlIDE1CisgICBhbmQgYSAzMksgYnl0ZSB3aW5kb3cgbXVzdCBiZSBzdXBwbGllZCB0byBiZSBhYmxlIHRvIGRlY29tcHJlc3MgZ2VuZXJhbAorICAgZGVmbGF0ZSBzdHJlYW1zLgorCisgICAgIFNlZSBpbmZsYXRlQmFjaygpIGZvciB0aGUgdXNhZ2Ugb2YgdGhlc2Ugcm91dGluZXMuCisKKyAgICAgaW5mbGF0ZUJhY2tJbml0IHdpbGwgcmV0dXJuIFpfT0sgb24gc3VjY2VzcywgWl9TVFJFQU1fRVJST1IgaWYgYW55IG9mCisgICB0aGUgcGFyYW1ldGVycyBhcmUgaW52YWxpZCwgWl9NRU1fRVJST1IgaWYgdGhlIGludGVybmFsIHN0YXRlIGNvdWxkIG5vdCBiZQorICAgYWxsb2NhdGVkLCBvciBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgZG9lcyBub3QgbWF0Y2gKKyAgIHRoZSB2ZXJzaW9uIG9mIHRoZSBoZWFkZXIgZmlsZS4KKyovCisKK3R5cGVkZWYgdW5zaWduZWQgKCppbl9mdW5jKSBPRigodm9pZCBGQVIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgel9jb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqIEZBUiAqKSk7Cit0eXBlZGVmIGludCAoKm91dF9mdW5jKSBPRigodm9pZCBGQVIgKiwgdW5zaWduZWQgY2hhciBGQVIgKiwgdW5zaWduZWQpKTsKKworWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlQmFjayBPRigoel9zdHJlYW1wIHN0cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9mdW5jIGluLCB2b2lkIEZBUiAqaW5fZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9mdW5jIG91dCwgdm9pZCBGQVIgKm91dF9kZXNjKSk7CisvKgorICAgICBpbmZsYXRlQmFjaygpIGRvZXMgYSByYXcgaW5mbGF0ZSB3aXRoIGEgc2luZ2xlIGNhbGwgdXNpbmcgYSBjYWxsLWJhY2sKKyAgIGludGVyZmFjZSBmb3IgaW5wdXQgYW5kIG91dHB1dC4gIFRoaXMgaXMgcG90ZW50aWFsbHkgbW9yZSBlZmZpY2llbnQgdGhhbgorICAgaW5mbGF0ZSgpIGZvciBmaWxlIGkvbyBhcHBsaWNhdGlvbnMsIGluIHRoYXQgaXQgYXZvaWRzIGNvcHlpbmcgYmV0d2VlbiB0aGUKKyAgIG91dHB1dCBhbmQgdGhlIHNsaWRpbmcgd2luZG93IGJ5IHNpbXBseSBtYWtpbmcgdGhlIHdpbmRvdyBpdHNlbGYgdGhlIG91dHB1dAorICAgYnVmZmVyLiAgaW5mbGF0ZSgpIGNhbiBiZSBmYXN0ZXIgb24gbW9kZXJuIENQVXMgd2hlbiB1c2VkIHdpdGggbGFyZ2UKKyAgIGJ1ZmZlcnMuICBpbmZsYXRlQmFjaygpIHRydXN0cyB0aGUgYXBwbGljYXRpb24gdG8gbm90IGNoYW5nZSB0aGUgb3V0cHV0CisgICBidWZmZXIgcGFzc2VkIGJ5IHRoZSBvdXRwdXQgZnVuY3Rpb24sIGF0IGxlYXN0IHVudGlsIGluZmxhdGVCYWNrKCkgcmV0dXJucy4KKworICAgICBpbmZsYXRlQmFja0luaXQoKSBtdXN0IGJlIGNhbGxlZCBmaXJzdCB0byBhbGxvY2F0ZSB0aGUgaW50ZXJuYWwgc3RhdGUKKyAgIGFuZCB0byBpbml0aWFsaXplIHRoZSBzdGF0ZSB3aXRoIHRoZSB1c2VyLXByb3ZpZGVkIHdpbmRvdyBidWZmZXIuCisgICBpbmZsYXRlQmFjaygpIG1heSB0aGVuIGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgdG8gaW5mbGF0ZSBhIGNvbXBsZXRlLCByYXcKKyAgIGRlZmxhdGUgc3RyZWFtIHdpdGggZWFjaCBjYWxsLiAgaW5mbGF0ZUJhY2tFbmQoKSBpcyB0aGVuIGNhbGxlZCB0byBmcmVlIHRoZQorICAgYWxsb2NhdGVkIHN0YXRlLgorCisgICAgIEEgcmF3IGRlZmxhdGUgc3RyZWFtIGlzIG9uZSB3aXRoIG5vIHpsaWIgb3IgZ3ppcCBoZWFkZXIgb3IgdHJhaWxlci4KKyAgIFRoaXMgcm91dGluZSB3b3VsZCBub3JtYWxseSBiZSB1c2VkIGluIGEgdXRpbGl0eSB0aGF0IHJlYWRzIHppcCBvciBnemlwCisgICBmaWxlcyBhbmQgd3JpdGVzIG91dCB1bmNvbXByZXNzZWQgZmlsZXMuICBUaGUgdXRpbGl0eSB3b3VsZCBkZWNvZGUgdGhlCisgICBoZWFkZXIgYW5kIHByb2Nlc3MgdGhlIHRyYWlsZXIgb24gaXRzIG93biwgaGVuY2UgdGhpcyByb3V0aW5lIGV4cGVjdHMgb25seQorICAgdGhlIHJhdyBkZWZsYXRlIHN0cmVhbSB0byBkZWNvbXByZXNzLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbm9ybWFsCisgICBiZWhhdmlvciBvZiBpbmZsYXRlKCksIHdoaWNoIGV4cGVjdHMgZWl0aGVyIGEgemxpYiBvciBnemlwIGhlYWRlciBhbmQKKyAgIHRyYWlsZXIgYXJvdW5kIHRoZSBkZWZsYXRlIHN0cmVhbS4KKworICAgICBpbmZsYXRlQmFjaygpIHVzZXMgdHdvIHN1YnJvdXRpbmVzIHN1cHBsaWVkIGJ5IHRoZSBjYWxsZXIgdGhhdCBhcmUgdGhlbgorICAgY2FsbGVkIGJ5IGluZmxhdGVCYWNrKCkgZm9yIGlucHV0IGFuZCBvdXRwdXQuICBpbmZsYXRlQmFjaygpIGNhbGxzIHRob3NlCisgICByb3V0aW5lcyB1bnRpbCBpdCByZWFkcyBhIGNvbXBsZXRlIGRlZmxhdGUgc3RyZWFtIGFuZCB3cml0ZXMgb3V0IGFsbCBvZiB0aGUKKyAgIHVuY29tcHJlc3NlZCBkYXRhLCBvciB1bnRpbCBpdCBlbmNvdW50ZXJzIGFuIGVycm9yLiAgVGhlIGZ1bmN0aW9uJ3MKKyAgIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0eXBlcyBhcmUgZGVmaW5lZCBhYm92ZSBpbiB0aGUgaW5fZnVuYyBhbmQgb3V0X2Z1bmMKKyAgIHR5cGVkZWZzLiAgaW5mbGF0ZUJhY2soKSB3aWxsIGNhbGwgaW4oaW5fZGVzYywgJmJ1Zikgd2hpY2ggc2hvdWxkIHJldHVybiB0aGUKKyAgIG51bWJlciBvZiBieXRlcyBvZiBwcm92aWRlZCBpbnB1dCwgYW5kIGEgcG9pbnRlciB0byB0aGF0IGlucHV0IGluIGJ1Zi4gIElmCisgICB0aGVyZSBpcyBubyBpbnB1dCBhdmFpbGFibGUsIGluKCkgbXVzdCByZXR1cm4gemVyby0tYnVmIGlzIGlnbm9yZWQgaW4gdGhhdAorICAgY2FzZS0tYW5kIGluZmxhdGVCYWNrKCkgd2lsbCByZXR1cm4gYSBidWZmZXIgZXJyb3IuICBpbmZsYXRlQmFjaygpIHdpbGwgY2FsbAorICAgb3V0KG91dF9kZXNjLCBidWYsIGxlbikgdG8gd3JpdGUgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGJ1ZlswLi5sZW4tMV0uICBvdXQoKQorICAgc2hvdWxkIHJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MsIG9yIG5vbi16ZXJvIG9uIGZhaWx1cmUuICBJZiBvdXQoKSByZXR1cm5zCisgICBub24temVybywgaW5mbGF0ZUJhY2soKSB3aWxsIHJldHVybiB3aXRoIGFuIGVycm9yLiAgTmVpdGhlciBpbigpIG5vciBvdXQoKQorICAgYXJlIHBlcm1pdHRlZCB0byBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB3aW5kb3cgcHJvdmlkZWQgdG8KKyAgIGluZmxhdGVCYWNrSW5pdCgpLCB3aGljaCBpcyBhbHNvIHRoZSBidWZmZXIgdGhhdCBvdXQoKSB1c2VzIHRvIHdyaXRlIGZyb20uCisgICBUaGUgbGVuZ3RoIHdyaXR0ZW4gYnkgb3V0KCkgd2lsbCBiZSBhdCBtb3N0IHRoZSB3aW5kb3cgc2l6ZS4gIEFueSBub24temVybworICAgYW1vdW50IG9mIGlucHV0IG1heSBiZSBwcm92aWRlZCBieSBpbigpLgorCisgICAgIEZvciBjb252ZW5pZW5jZSwgaW5mbGF0ZUJhY2soKSBjYW4gYmUgcHJvdmlkZWQgaW5wdXQgb24gdGhlIGZpcnN0IGNhbGwgYnkKKyAgIHNldHRpbmcgc3RybS0+bmV4dF9pbiBhbmQgc3RybS0+YXZhaWxfaW4uICBJZiB0aGF0IGlucHV0IGlzIGV4aGF1c3RlZCwgdGhlbgorICAgaW4oKSB3aWxsIGJlIGNhbGxlZC4gIFRoZXJlZm9yZSBzdHJtLT5uZXh0X2luIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlCisgICBjYWxsaW5nIGluZmxhdGVCYWNrKCkuICBJZiBzdHJtLT5uZXh0X2luIGlzIFpfTlVMTCwgdGhlbiBpbigpIHdpbGwgYmUgY2FsbGVkCisgICBpbW1lZGlhdGVseSBmb3IgaW5wdXQuICBJZiBzdHJtLT5uZXh0X2luIGlzIG5vdCBaX05VTEwsIHRoZW4gc3RybS0+YXZhaWxfaW4KKyAgIG11c3QgYWxzbyBiZSBpbml0aWFsaXplZCwgYW5kIHRoZW4gaWYgc3RybS0+YXZhaWxfaW4gaXMgbm90IHplcm8sIGlucHV0IHdpbGwKKyAgIGluaXRpYWxseSBiZSB0YWtlbiBmcm9tIHN0cm0tPm5leHRfaW5bMCAuLiAgc3RybS0+YXZhaWxfaW4gLSAxXS4KKworICAgICBUaGUgaW5fZGVzYyBhbmQgb3V0X2Rlc2MgcGFyYW1ldGVycyBvZiBpbmZsYXRlQmFjaygpIGlzIHBhc3NlZCBhcyB0aGUKKyAgIGZpcnN0IHBhcmFtZXRlciBvZiBpbigpIGFuZCBvdXQoKSByZXNwZWN0aXZlbHkgd2hlbiB0aGV5IGFyZSBjYWxsZWQuICBUaGVzZQorICAgZGVzY3JpcHRvcnMgY2FuIGJlIG9wdGlvbmFsbHkgdXNlZCB0byBwYXNzIGFueSBpbmZvcm1hdGlvbiB0aGF0IHRoZSBjYWxsZXItCisgICBzdXBwbGllZCBpbigpIGFuZCBvdXQoKSBmdW5jdGlvbnMgbmVlZCB0byBkbyB0aGVpciBqb2IuCisKKyAgICAgT24gcmV0dXJuLCBpbmZsYXRlQmFjaygpIHdpbGwgc2V0IHN0cm0tPm5leHRfaW4gYW5kIHN0cm0tPmF2YWlsX2luIHRvCisgICBwYXNzIGJhY2sgYW55IHVudXNlZCBpbnB1dCB0aGF0IHdhcyBwcm92aWRlZCBieSB0aGUgbGFzdCBpbigpIGNhbGwuICBUaGUKKyAgIHJldHVybiB2YWx1ZXMgb2YgaW5mbGF0ZUJhY2soKSBjYW4gYmUgWl9TVFJFQU1fRU5EIG9uIHN1Y2Nlc3MsIFpfQlVGX0VSUk9SCisgICBpZiBpbigpIG9yIG91dCgpIHJldHVybmVkIGFuIGVycm9yLCBaX0RBVEFfRVJST1IgaWYgdGhlcmUgd2FzIGEgZm9ybWF0IGVycm9yCisgICBpbiB0aGUgZGVmbGF0ZSBzdHJlYW0gKGluIHdoaWNoIGNhc2Ugc3RybS0+bXNnIGlzIHNldCB0byBpbmRpY2F0ZSB0aGUgbmF0dXJlCisgICBvZiB0aGUgZXJyb3IpLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHdhcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCisgICBJbiB0aGUgY2FzZSBvZiBaX0JVRl9FUlJPUiwgYW4gaW5wdXQgb3Igb3V0cHV0IGVycm9yIGNhbiBiZSBkaXN0aW5ndWlzaGVkCisgICB1c2luZyBzdHJtLT5uZXh0X2luIHdoaWNoIHdpbGwgYmUgWl9OVUxMIG9ubHkgaWYgaW4oKSByZXR1cm5lZCBhbiBlcnJvci4gIElmCisgICBzdHJtLT5uZXh0X2luIGlzIG5vdCBaX05VTEwsIHRoZW4gdGhlIFpfQlVGX0VSUk9SIHdhcyBkdWUgdG8gb3V0KCkgcmV0dXJuaW5nCisgICBub24temVyby4gIChpbigpIHdpbGwgYWx3YXlzIGJlIGNhbGxlZCBiZWZvcmUgb3V0KCksIHNvIHN0cm0tPm5leHRfaW4gaXMKKyAgIGFzc3VyZWQgdG8gYmUgZGVmaW5lZCBpZiBvdXQoKSByZXR1cm5zIG5vbi16ZXJvLikgTm90ZSB0aGF0IGluZmxhdGVCYWNrKCkKKyAgIGNhbm5vdCByZXR1cm4gWl9PSy4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2tFbmQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CisvKgorICAgICBBbGwgbWVtb3J5IGFsbG9jYXRlZCBieSBpbmZsYXRlQmFja0luaXQoKSBpcyBmcmVlZC4KKworICAgICBpbmZsYXRlQmFja0VuZCgpIHJldHVybnMgWl9PSyBvbiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtCisgICBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50LgorKi8KKworWkVYVEVSTiB1TG9uZyBaRVhQT1JUIHpsaWJDb21waWxlRmxhZ3MgT0YoKHZvaWQpKTsKKy8qIFJldHVybiBmbGFncyBpbmRpY2F0aW5nIGNvbXBpbGUtdGltZSBvcHRpb25zLgorCisgICAgVHlwZSBzaXplcywgdHdvIGJpdHMgZWFjaCwgMDAgPSAxNiBiaXRzLCAwMSA9IDMyLCAxMCA9IDY0LCAxMSA9IG90aGVyOgorICAgICAxLjA6IHNpemUgb2YgdUludAorICAgICAzLjI6IHNpemUgb2YgdUxvbmcKKyAgICAgNS40OiBzaXplIG9mIHZvaWRwZiAocG9pbnRlcikKKyAgICAgNy42OiBzaXplIG9mIHpfb2ZmX3QKKworICAgIENvbXBpbGVyLCBhc3NlbWJsZXIsIGFuZCBkZWJ1ZyBvcHRpb25zOgorICAgICA4OiBERUJVRworICAgICA5OiBBU01WIG9yIEFTTUlORiAtLSB1c2UgQVNNIGNvZGUKKyAgICAgMTA6IFpMSUJfV0lOQVBJIC0tIGV4cG9ydGVkIGZ1bmN0aW9ucyB1c2UgdGhlIFdJTkFQSSBjYWxsaW5nIGNvbnZlbnRpb24KKyAgICAgMTE6IDAgKHJlc2VydmVkKQorCisgICAgT25lLXRpbWUgdGFibGUgYnVpbGRpbmcgKHNtYWxsZXIgY29kZSwgYnV0IG5vdCB0aHJlYWQtc2FmZSBpZiB0cnVlKToKKyAgICAgMTI6IEJVSUxERklYRUQgLS0gYnVpbGQgc3RhdGljIGJsb2NrIGRlY29kaW5nIHRhYmxlcyB3aGVuIG5lZWRlZAorICAgICAxMzogRFlOQU1JQ19DUkNfVEFCTEUgLS0gYnVpbGQgQ1JDIGNhbGN1bGF0aW9uIHRhYmxlcyB3aGVuIG5lZWRlZAorICAgICAxNCwxNTogMCAocmVzZXJ2ZWQpCisKKyAgICBMaWJyYXJ5IGNvbnRlbnQgKGluZGljYXRlcyBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkpOgorICAgICAxNjogTk9fR1pDT01QUkVTUyAtLSBneiogZnVuY3Rpb25zIGNhbm5vdCBjb21wcmVzcyAodG8gYXZvaWQgbGlua2luZworICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZsYXRlIGNvZGUgd2hlbiBub3QgbmVlZGVkKQorICAgICAxNzogTk9fR1pJUCAtLSBkZWZsYXRlIGNhbid0IHdyaXRlIGd6aXAgc3RyZWFtcywgYW5kIGluZmxhdGUgY2FuJ3QgZGV0ZWN0CisgICAgICAgICAgICAgICAgICAgIGFuZCBkZWNvZGUgZ3ppcCBzdHJlYW1zICh0byBhdm9pZCBsaW5raW5nIGNyYyBjb2RlKQorICAgICAxOC0xOTogMCAocmVzZXJ2ZWQpCisKKyAgICBPcGVyYXRpb24gdmFyaWF0aW9ucyAoY2hhbmdlcyBpbiBsaWJyYXJ5IGZ1bmN0aW9uYWxpdHkpOgorICAgICAyMDogUEtaSVBfQlVHX1dPUktBUk9VTkQgLS0gc2xpZ2h0bHkgbW9yZSBwZXJtaXNzaXZlIGluZmxhdGUKKyAgICAgMjE6IEZBU1RFU1QgLS0gZGVmbGF0ZSBhbGdvcml0aG0gd2l0aCBvbmx5IG9uZSwgbG93ZXN0IGNvbXByZXNzaW9uIGxldmVsCisgICAgIDIyLDIzOiAwIChyZXNlcnZlZCkKKworICAgIFRoZSBzcHJpbnRmIHZhcmlhbnQgdXNlZCBieSBnenByaW50ZiAoemVybyBpcyBiZXN0KToKKyAgICAgMjQ6IDAgPSB2cyosIDEgPSBzKiAtLSAxIG1lYW5zIGxpbWl0ZWQgdG8gMjAgYXJndW1lbnRzIGFmdGVyIHRoZSBmb3JtYXQKKyAgICAgMjU6IDAgPSAqbnByaW50ZiwgMSA9ICpwcmludGYgLS0gMSBtZWFucyBnenByaW50ZigpIG5vdCBzZWN1cmUhCisgICAgIDI2OiAwID0gcmV0dXJucyB2YWx1ZSwgMSA9IHZvaWQgLS0gMSBtZWFucyBpbmZlcnJlZCBzdHJpbmcgbGVuZ3RoIHJldHVybmVkCisKKyAgICBSZW1haW5kZXI6CisgICAgIDI3LTMxOiAwIChyZXNlcnZlZCkKKyAqLworCisjaWZuZGVmIFpfU09MTworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiB1dGlsaXR5IGZ1bmN0aW9ucyAqLworCisvKgorICAgICBUaGUgZm9sbG93aW5nIHV0aWxpdHkgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2YgdGhlIGJhc2ljCisgICBzdHJlYW0tb3JpZW50ZWQgZnVuY3Rpb25zLiAgVG8gc2ltcGxpZnkgdGhlIGludGVyZmFjZSwgc29tZSBkZWZhdWx0IG9wdGlvbnMKKyAgIGFyZSBhc3N1bWVkIChjb21wcmVzc2lvbiBsZXZlbCBhbmQgbWVtb3J5IHVzYWdlLCBzdGFuZGFyZCBtZW1vcnkgYWxsb2NhdGlvbgorICAgZnVuY3Rpb25zKS4gIFRoZSBzb3VyY2UgY29kZSBvZiB0aGVzZSB1dGlsaXR5IGZ1bmN0aW9ucyBjYW4gYmUgbW9kaWZpZWQgaWYKKyAgIHlvdSBuZWVkIHNwZWNpYWwgb3B0aW9ucy4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgY29tcHJlc3MgT0YoKEJ5dGVmICpkZXN0LCAgIHVMb25nZiAqZGVzdExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ5dGVmICpzb3VyY2UsIHVMb25nIHNvdXJjZUxlbikpOworLyoKKyAgICAgQ29tcHJlc3NlcyB0aGUgc291cmNlIGJ1ZmZlciBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuICBzb3VyY2VMZW4gaXMKKyAgIHRoZSBieXRlIGxlbmd0aCBvZiB0aGUgc291cmNlIGJ1ZmZlci4gIFVwb24gZW50cnksIGRlc3RMZW4gaXMgdGhlIHRvdGFsIHNpemUKKyAgIG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsIHdoaWNoIG11c3QgYmUgYXQgbGVhc3QgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisgICBjb21wcmVzc0JvdW5kKHNvdXJjZUxlbikuICBVcG9uIGV4aXQsIGRlc3RMZW4gaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZQorICAgY29tcHJlc3NlZCBidWZmZXIuCisKKyAgICAgY29tcHJlc3MgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QKKyAgIGVub3VnaCBtZW1vcnksIFpfQlVGX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dAorICAgYnVmZmVyLgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBjb21wcmVzczIgT0YoKEJ5dGVmICpkZXN0LCAgIHVMb25nZiAqZGVzdExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlZiAqc291cmNlLCB1TG9uZyBzb3VyY2VMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsKSk7CisvKgorICAgICBDb21wcmVzc2VzIHRoZSBzb3VyY2UgYnVmZmVyIGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4gIFRoZSBsZXZlbAorICAgcGFyYW1ldGVyIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGluIGRlZmxhdGVJbml0LiAgc291cmNlTGVuIGlzIHRoZSBieXRlCisgICBsZW5ndGggb2YgdGhlIHNvdXJjZSBidWZmZXIuICBVcG9uIGVudHJ5LCBkZXN0TGVuIGlzIHRoZSB0b3RhbCBzaXplIG9mIHRoZQorICAgZGVzdGluYXRpb24gYnVmZmVyLCB3aGljaCBtdXN0IGJlIGF0IGxlYXN0IHRoZSB2YWx1ZSByZXR1cm5lZCBieQorICAgY29tcHJlc3NCb3VuZChzb3VyY2VMZW4pLiAgVXBvbiBleGl0LCBkZXN0TGVuIGlzIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUKKyAgIGNvbXByZXNzZWQgYnVmZmVyLgorCisgICAgIGNvbXByZXNzMiByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKKyAgIG1lbW9yeSwgWl9CVUZfRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciwKKyAgIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBsZXZlbCBwYXJhbWV0ZXIgaXMgaW52YWxpZC4KKyovCisKK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCBjb21wcmVzc0JvdW5kIE9GKCh1TG9uZyBzb3VyY2VMZW4pKTsKKy8qCisgICAgIGNvbXByZXNzQm91bmQoKSByZXR1cm5zIGFuIHVwcGVyIGJvdW5kIG9uIHRoZSBjb21wcmVzc2VkIHNpemUgYWZ0ZXIKKyAgIGNvbXByZXNzKCkgb3IgY29tcHJlc3MyKCkgb24gc291cmNlTGVuIGJ5dGVzLiAgSXQgd291bGQgYmUgdXNlZCBiZWZvcmUgYQorICAgY29tcHJlc3MoKSBvciBjb21wcmVzczIoKSBjYWxsIHRvIGFsbG9jYXRlIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIHVuY29tcHJlc3MgT0YoKEJ5dGVmICpkZXN0LCAgIHVMb25nZiAqZGVzdExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnl0ZWYgKnNvdXJjZSwgdUxvbmcgc291cmNlTGVuKSk7CisvKgorICAgICBEZWNvbXByZXNzZXMgdGhlIHNvdXJjZSBidWZmZXIgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgc291cmNlTGVuIGlzCisgICB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlIHNvdXJjZSBidWZmZXIuICBVcG9uIGVudHJ5LCBkZXN0TGVuIGlzIHRoZSB0b3RhbCBzaXplCisgICBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLCB3aGljaCBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBlbnRpcmUKKyAgIHVuY29tcHJlc3NlZCBkYXRhLiAgKFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBtdXN0IGhhdmUgYmVlbiBzYXZlZAorICAgcHJldmlvdXNseSBieSB0aGUgY29tcHJlc3NvciBhbmQgdHJhbnNtaXR0ZWQgdG8gdGhlIGRlY29tcHJlc3NvciBieSBzb21lCisgICBtZWNoYW5pc20gb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBjb21wcmVzc2lvbiBsaWJyYXJ5LikgVXBvbiBleGl0LCBkZXN0TGVuCisgICBpcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHVuY29tcHJlc3NlZCBidWZmZXIuCisKKyAgICAgdW5jb21wcmVzcyByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdAorICAgZW5vdWdoIG1lbW9yeSwgWl9CVUZfRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0CisgICBidWZmZXIsIG9yIFpfREFUQV9FUlJPUiBpZiB0aGUgaW5wdXQgZGF0YSB3YXMgY29ycnVwdGVkIG9yIGluY29tcGxldGUuICBJbgorICAgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm90IGVub3VnaCByb29tLCB1bmNvbXByZXNzKCkgd2lsbCBmaWxsIHRoZSBvdXRwdXQKKyAgIGJ1ZmZlciB3aXRoIHRoZSB1bmNvbXByZXNzZWQgZGF0YSB1cCB0byB0aGF0IHBvaW50LgorKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogZ3ppcCBmaWxlIGFjY2VzcyBmdW5jdGlvbnMgKi8KKworLyoKKyAgICAgVGhpcyBsaWJyYXJ5IHN1cHBvcnRzIHJlYWRpbmcgYW5kIHdyaXRpbmcgZmlsZXMgaW4gZ3ppcCAoLmd6KSBmb3JtYXQgd2l0aAorICAgYW4gaW50ZXJmYWNlIHNpbWlsYXIgdG8gdGhhdCBvZiBzdGRpbywgdXNpbmcgdGhlIGZ1bmN0aW9ucyB0aGF0IHN0YXJ0IHdpdGgKKyAgICJneiIuICBUaGUgZ3ppcCBmb3JtYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHpsaWIgZm9ybWF0LiAgZ3ppcCBpcyBhIGd6aXAKKyAgIHdyYXBwZXIsIGRvY3VtZW50ZWQgaW4gUkZDIDE5NTIsIHdyYXBwZWQgYXJvdW5kIGEgZGVmbGF0ZSBzdHJlYW0uCisqLworCit0eXBlZGVmIHN0cnVjdCBnekZpbGVfcyAqZ3pGaWxlOyAgICAvKiBzZW1pLW9wYXF1ZSBnemlwIGZpbGUgZGVzY3JpcHRvciAqLworCisvKgorWkVYVEVSTiBnekZpbGUgWkVYUE9SVCBnem9wZW4gT0YoKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpKTsKKworICAgICBPcGVucyBhIGd6aXAgKC5neikgZmlsZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLiAgVGhlIG1vZGUgcGFyYW1ldGVyIGlzIGFzCisgICBpbiBmb3BlbiAoInJiIiBvciAid2IiKSBidXQgY2FuIGFsc28gaW5jbHVkZSBhIGNvbXByZXNzaW9uIGxldmVsICgid2I5Iikgb3IKKyAgIGEgc3RyYXRlZ3k6ICdmJyBmb3IgZmlsdGVyZWQgZGF0YSBhcyBpbiAid2I2ZiIsICdoJyBmb3IgSHVmZm1hbi1vbmx5CisgICBjb21wcmVzc2lvbiBhcyBpbiAid2IxaCIsICdSJyBmb3IgcnVuLWxlbmd0aCBlbmNvZGluZyBhcyBpbiAid2IxUiIsIG9yICdGJworICAgZm9yIGZpeGVkIGNvZGUgY29tcHJlc3Npb24gYXMgaW4gIndiOUYiLiAgKFNlZSB0aGUgZGVzY3JpcHRpb24gb2YKKyAgIGRlZmxhdGVJbml0MiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RyYXRlZ3kgcGFyYW1ldGVyLikgICdUJyB3aWxsCisgICByZXF1ZXN0IHRyYW5zcGFyZW50IHdyaXRpbmcgb3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24gYW5kIG5vdCB1c2luZworICAgdGhlIGd6aXAgZm9ybWF0LgorCisgICAgICJhIiBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mICJ3IiB0byByZXF1ZXN0IHRoYXQgdGhlIGd6aXAgc3RyZWFtIHRoYXQgd2lsbAorICAgYmUgd3JpdHRlbiBiZSBhcHBlbmRlZCB0byB0aGUgZmlsZS4gICIrIiB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvciwgc2luY2UKKyAgIHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gdGhlIHNhbWUgZ3ppcCBmaWxlIGlzIG5vdCBzdXBwb3J0ZWQuICBUaGUgYWRkaXRpb24gb2YKKyAgICJ4IiB3aGVuIHdyaXRpbmcgd2lsbCBjcmVhdGUgdGhlIGZpbGUgZXhjbHVzaXZlbHksIHdoaWNoIGZhaWxzIGlmIHRoZSBmaWxlCisgICBhbHJlYWR5IGV4aXN0cy4gIE9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGl0LCB0aGUgYWRkaXRpb24gb2YgImUiIHdoZW4KKyAgIHJlYWRpbmcgb3Igd3JpdGluZyB3aWxsIHNldCB0aGUgZmxhZyB0byBjbG9zZSB0aGUgZmlsZSBvbiBhbiBleGVjdmUoKSBjYWxsLgorCisgICAgIFRoZXNlIGZ1bmN0aW9ucywgYXMgd2VsbCBhcyBnemlwLCB3aWxsIHJlYWQgYW5kIGRlY29kZSBhIHNlcXVlbmNlIG9mIGd6aXAKKyAgIHN0cmVhbXMgaW4gYSBmaWxlLiAgVGhlIGFwcGVuZCBmdW5jdGlvbiBvZiBnem9wZW4oKSBjYW4gYmUgdXNlZCB0byBjcmVhdGUKKyAgIHN1Y2ggYSBmaWxlLiAgKEFsc28gc2VlIGd6Zmx1c2goKSBmb3IgYW5vdGhlciB3YXkgdG8gZG8gdGhpcy4pICBXaGVuCisgICBhcHBlbmRpbmcsIGd6b3BlbiBkb2VzIG5vdCB0ZXN0IHdoZXRoZXIgdGhlIGZpbGUgYmVnaW5zIHdpdGggYSBnemlwIHN0cmVhbSwKKyAgIG5vciBkb2VzIGl0IGxvb2sgZm9yIHRoZSBlbmQgb2YgdGhlIGd6aXAgc3RyZWFtcyB0byBiZWdpbiBhcHBlbmRpbmcuICBnem9wZW4KKyAgIHdpbGwgc2ltcGx5IGFwcGVuZCBhIGd6aXAgc3RyZWFtIHRvIHRoZSBleGlzdGluZyBmaWxlLgorCisgICAgIGd6b3BlbiBjYW4gYmUgdXNlZCB0byByZWFkIGEgZmlsZSB3aGljaCBpcyBub3QgaW4gZ3ppcCBmb3JtYXQ7IGluIHRoaXMKKyAgIGNhc2UgZ3pyZWFkIHdpbGwgZGlyZWN0bHkgcmVhZCBmcm9tIHRoZSBmaWxlIHdpdGhvdXQgZGVjb21wcmVzc2lvbi4gIFdoZW4KKyAgIHJlYWRpbmcsIHRoaXMgd2lsbCBiZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5IGJ5IGxvb2tpbmcgZm9yIHRoZSBtYWdpYyB0d28tCisgICBieXRlIGd6aXAgaGVhZGVyLgorCisgICAgIGd6b3BlbiByZXR1cm5zIE5VTEwgaWYgdGhlIGZpbGUgY291bGQgbm90IGJlIG9wZW5lZCwgaWYgdGhlcmUgd2FzCisgICBpbnN1ZmZpY2llbnQgbWVtb3J5IHRvIGFsbG9jYXRlIHRoZSBnekZpbGUgc3RhdGUsIG9yIGlmIGFuIGludmFsaWQgbW9kZSB3YXMKKyAgIHNwZWNpZmllZCAoYW4gJ3InLCAndycsIG9yICdhJyB3YXMgbm90IHByb3ZpZGVkLCBvciAnKycgd2FzIHByb3ZpZGVkKS4KKyAgIGVycm5vIGNhbiBiZSBjaGVja2VkIHRvIGRldGVybWluZSBpZiB0aGUgcmVhc29uIGd6b3BlbiBmYWlsZWQgd2FzIHRoYXQgdGhlCisgICBmaWxlIGNvdWxkIG5vdCBiZSBvcGVuZWQuCisqLworCitaRVhURVJOIGd6RmlsZSBaRVhQT1JUIGd6ZG9wZW4gT0YoKGludCBmZCwgY29uc3QgY2hhciAqbW9kZSkpOworLyoKKyAgICAgZ3pkb3BlbiBhc3NvY2lhdGVzIGEgZ3pGaWxlIHdpdGggdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4gIEZpbGUgZGVzY3JpcHRvcnMKKyAgIGFyZSBvYnRhaW5lZCBmcm9tIGNhbGxzIGxpa2Ugb3BlbiwgZHVwLCBjcmVhdCwgcGlwZSBvciBmaWxlbm8gKGlmIHRoZSBmaWxlCisgICBoYXMgYmVlbiBwcmV2aW91c2x5IG9wZW5lZCB3aXRoIGZvcGVuKS4gIFRoZSBtb2RlIHBhcmFtZXRlciBpcyBhcyBpbiBnem9wZW4uCisKKyAgICAgVGhlIG5leHQgY2FsbCBvZiBnemNsb3NlIG9uIHRoZSByZXR1cm5lZCBnekZpbGUgd2lsbCBhbHNvIGNsb3NlIHRoZSBmaWxlCisgICBkZXNjcmlwdG9yIGZkLCBqdXN0IGxpa2UgZmNsb3NlKGZkb3BlbihmZCwgbW9kZSkpIGNsb3NlcyB0aGUgZmlsZSBkZXNjcmlwdG9yCisgICBmZC4gIElmIHlvdSB3YW50IHRvIGtlZXAgZmQgb3BlbiwgdXNlIGZkID0gZHVwKGZkX2tlZXApOyBneiA9IGd6ZG9wZW4oZmQsCisgICBtb2RlKTsuICBUaGUgZHVwbGljYXRlZCBkZXNjcmlwdG9yIHNob3VsZCBiZSBzYXZlZCB0byBhdm9pZCBhIGxlYWssIHNpbmNlCisgICBnemRvcGVuIGRvZXMgbm90IGNsb3NlIGZkIGlmIGl0IGZhaWxzLiAgSWYgeW91IGFyZSB1c2luZyBmaWxlbm8oKSB0byBnZXQgdGhlCisgICBmaWxlIGRlc2NyaXB0b3IgZnJvbSBhIEZJTEUgKiwgdGhlbiB5b3Ugd2lsbCBoYXZlIHRvIHVzZSBkdXAoKSB0byBhdm9pZAorICAgZG91YmxlLWNsb3NlKClpbmcgdGhlIGZpbGUgZGVzY3JpcHRvci4gIEJvdGggZ3pjbG9zZSgpIGFuZCBmY2xvc2UoKSB3aWxsCisgICBjbG9zZSB0aGUgYXNzb2NpYXRlZCBmaWxlIGRlc2NyaXB0b3IsIHNvIHRoZXkgbmVlZCB0byBoYXZlIGRpZmZlcmVudCBmaWxlCisgICBkZXNjcmlwdG9ycy4KKworICAgICBnemRvcGVuIHJldHVybnMgTlVMTCBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBhbGxvY2F0ZSB0aGUKKyAgIGd6RmlsZSBzdGF0ZSwgaWYgYW4gaW52YWxpZCBtb2RlIHdhcyBzcGVjaWZpZWQgKGFuICdyJywgJ3cnLCBvciAnYScgd2FzIG5vdAorICAgcHJvdmlkZWQsIG9yICcrJyB3YXMgcHJvdmlkZWQpLCBvciBpZiBmZCBpcyAtMS4gIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgbm90CisgICB1c2VkIHVudGlsIHRoZSBuZXh0IGd6KiByZWFkLCB3cml0ZSwgc2Vlaywgb3IgY2xvc2Ugb3BlcmF0aW9uLCBzbyBnemRvcGVuCisgICB3aWxsIG5vdCBkZXRlY3QgaWYgZmQgaXMgaW52YWxpZCAodW5sZXNzIGZkIGlzIC0xKS4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3pidWZmZXIgT0YoKGd6RmlsZSBmaWxlLCB1bnNpZ25lZCBzaXplKSk7CisvKgorICAgICBTZXQgdGhlIGludGVybmFsIGJ1ZmZlciBzaXplIHVzZWQgYnkgdGhpcyBsaWJyYXJ5J3MgZnVuY3Rpb25zLiAgVGhlCisgICBkZWZhdWx0IGJ1ZmZlciBzaXplIGlzIDgxOTIgYnl0ZXMuICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGFmdGVyCisgICBnem9wZW4oKSBvciBnemRvcGVuKCksIGFuZCBiZWZvcmUgYW55IG90aGVyIGNhbGxzIHRoYXQgcmVhZCBvciB3cml0ZSB0aGUKKyAgIGZpbGUuICBUaGUgYnVmZmVyIG1lbW9yeSBhbGxvY2F0aW9uIGlzIGFsd2F5cyBkZWZlcnJlZCB0byB0aGUgZmlyc3QgcmVhZCBvcgorICAgd3JpdGUuICBUd28gYnVmZmVycyBhcmUgYWxsb2NhdGVkLCBlaXRoZXIgYm90aCBvZiB0aGUgc3BlY2lmaWVkIHNpemUgd2hlbgorICAgd3JpdGluZywgb3Igb25lIG9mIHRoZSBzcGVjaWZpZWQgc2l6ZSBhbmQgdGhlIG90aGVyIHR3aWNlIHRoYXQgc2l6ZSB3aGVuCisgICByZWFkaW5nLiAgQSBsYXJnZXIgYnVmZmVyIHNpemUgb2YsIGZvciBleGFtcGxlLCA2NEsgb3IgMTI4SyBieXRlcyB3aWxsCisgICBub3RpY2VhYmx5IGluY3JlYXNlIHRoZSBzcGVlZCBvZiBkZWNvbXByZXNzaW9uIChyZWFkaW5nKS4KKworICAgICBUaGUgbmV3IGJ1ZmZlciBzaXplIGFsc28gYWZmZWN0cyB0aGUgbWF4aW11bSBsZW5ndGggZm9yIGd6cHJpbnRmKCkuCisKKyAgICAgZ3pidWZmZXIoKSByZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgLTEgb24gZmFpbHVyZSwgc3VjaCBhcyBiZWluZyBjYWxsZWQKKyAgIHRvbyBsYXRlLgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBnenNldHBhcmFtcyBPRigoZ3pGaWxlIGZpbGUsIGludCBsZXZlbCwgaW50IHN0cmF0ZWd5KSk7CisvKgorICAgICBEeW5hbWljYWxseSB1cGRhdGUgdGhlIGNvbXByZXNzaW9uIGxldmVsIG9yIHN0cmF0ZWd5LiAgU2VlIHRoZSBkZXNjcmlwdGlvbgorICAgb2YgZGVmbGF0ZUluaXQyIGZvciB0aGUgbWVhbmluZyBvZiB0aGVzZSBwYXJhbWV0ZXJzLgorCisgICAgIGd6c2V0cGFyYW1zIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgZmlsZSB3YXMgbm90CisgICBvcGVuZWQgZm9yIHdyaXRpbmcuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGd6cmVhZCBPRigoZ3pGaWxlIGZpbGUsIHZvaWRwIGJ1ZiwgdW5zaWduZWQgbGVuKSk7CisvKgorICAgICBSZWFkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUuICBJZgorICAgdGhlIGlucHV0IGZpbGUgaXMgbm90IGluIGd6aXAgZm9ybWF0LCBnenJlYWQgY29waWVzIHRoZSBnaXZlbiBudW1iZXIgb2YKKyAgIGJ5dGVzIGludG8gdGhlIGJ1ZmZlciBkaXJlY3RseSBmcm9tIHRoZSBmaWxlLgorCisgICAgIEFmdGVyIHJlYWNoaW5nIHRoZSBlbmQgb2YgYSBnemlwIHN0cmVhbSBpbiB0aGUgaW5wdXQsIGd6cmVhZCB3aWxsIGNvbnRpbnVlCisgICB0byByZWFkLCBsb29raW5nIGZvciBhbm90aGVyIGd6aXAgc3RyZWFtLiAgQW55IG51bWJlciBvZiBnemlwIHN0cmVhbXMgbWF5IGJlCisgICBjb25jYXRlbmF0ZWQgaW4gdGhlIGlucHV0IGZpbGUsIGFuZCB3aWxsIGFsbCBiZSBkZWNvbXByZXNzZWQgYnkgZ3pyZWFkKCkuCisgICBJZiBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIGd6aXAgc3RyZWFtIGlzIGVuY291bnRlcmVkIGFmdGVyIGEgZ3ppcCBzdHJlYW0sCisgICB0aGF0IHJlbWFpbmluZyB0cmFpbGluZyBnYXJiYWdlIGlzIGlnbm9yZWQgKGFuZCBubyBlcnJvciBpcyByZXR1cm5lZCkuCisKKyAgICAgZ3pyZWFkIGNhbiBiZSB1c2VkIHRvIHJlYWQgYSBnemlwIGZpbGUgdGhhdCBpcyBiZWluZyBjb25jdXJyZW50bHkgd3JpdHRlbi4KKyAgIFVwb24gcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgaW5wdXQsIGd6cmVhZCB3aWxsIHJldHVybiB3aXRoIHRoZSBhdmFpbGFibGUKKyAgIGRhdGEuICBJZiB0aGUgZXJyb3IgY29kZSByZXR1cm5lZCBieSBnemVycm9yIGlzIFpfT0sgb3IgWl9CVUZfRVJST1IsIHRoZW4KKyAgIGd6Y2xlYXJlcnIgY2FuIGJlIHVzZWQgdG8gY2xlYXIgdGhlIGVuZCBvZiBmaWxlIGluZGljYXRvciBpbiBvcmRlciB0byBwZXJtaXQKKyAgIGd6cmVhZCB0byBiZSB0cmllZCBhZ2Fpbi4gIFpfT0sgaW5kaWNhdGVzIHRoYXQgYSBnemlwIHN0cmVhbSB3YXMgY29tcGxldGVkCisgICBvbiB0aGUgbGFzdCBnenJlYWQuICBaX0JVRl9FUlJPUiBpbmRpY2F0ZXMgdGhhdCB0aGUgaW5wdXQgZmlsZSBlbmRlZCBpbiB0aGUKKyAgIG1pZGRsZSBvZiBhIGd6aXAgc3RyZWFtLiAgTm90ZSB0aGF0IGd6cmVhZCBkb2VzIG5vdCByZXR1cm4gLTEgaW4gdGhlIGV2ZW50CisgICBvZiBhbiBpbmNvbXBsZXRlIGd6aXAgc3RyZWFtLiAgVGhpcyBlcnJvciBpcyBkZWZlcnJlZCB1bnRpbCBnemNsb3NlKCksIHdoaWNoCisgICB3aWxsIHJldHVybiBaX0JVRl9FUlJPUiBpZiB0aGUgbGFzdCBnenJlYWQgZW5kZWQgaW4gdGhlIG1pZGRsZSBvZiBhIGd6aXAKKyAgIHN0cmVhbS4gIEFsdGVybmF0aXZlbHksIGd6ZXJyb3IgY2FuIGJlIHVzZWQgYmVmb3JlIGd6Y2xvc2UgdG8gZGV0ZWN0IHRoaXMKKyAgIGNhc2UuCisKKyAgICAgZ3pyZWFkIHJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgYWN0dWFsbHkgcmVhZCwgbGVzcyB0aGFuCisgICBsZW4gZm9yIGVuZCBvZiBmaWxlLCBvciAtMSBmb3IgZXJyb3IuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGd6d3JpdGUgT0YoKGd6RmlsZSBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkcGMgYnVmLCB1bnNpZ25lZCBsZW4pKTsKKy8qCisgICAgIFdyaXRlcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyBpbnRvIHRoZSBjb21wcmVzc2VkIGZpbGUuCisgICBnendyaXRlIHJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgd3JpdHRlbiBvciAwIGluIGNhc2Ugb2YKKyAgIGVycm9yLgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVFZBIGd6cHJpbnRmIFpfQVJHKChnekZpbGUgZmlsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pKTsKKy8qCisgICAgIENvbnZlcnRzLCBmb3JtYXRzLCBhbmQgd3JpdGVzIHRoZSBhcmd1bWVudHMgdG8gdGhlIGNvbXByZXNzZWQgZmlsZSB1bmRlcgorICAgY29udHJvbCBvZiB0aGUgZm9ybWF0IHN0cmluZywgYXMgaW4gZnByaW50Zi4gIGd6cHJpbnRmIHJldHVybnMgdGhlIG51bWJlciBvZgorICAgdW5jb21wcmVzc2VkIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4sIG9yIDAgaW4gY2FzZSBvZiBlcnJvci4gIFRoZSBudW1iZXIgb2YKKyAgIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuIGlzIGxpbWl0ZWQgdG8gODE5MSwgb3Igb25lIGxlc3MgdGhhbiB0aGUgYnVmZmVyCisgICBzaXplIGdpdmVuIHRvIGd6YnVmZmVyKCkuICBUaGUgY2FsbGVyIHNob3VsZCBhc3N1cmUgdGhhdCB0aGlzIGxpbWl0IGlzIG5vdAorICAgZXhjZWVkZWQuICBJZiBpdCBpcyBleGNlZWRlZCwgdGhlbiBnenByaW50ZigpIHdpbGwgcmV0dXJuIGFuIGVycm9yICgwKSB3aXRoCisgICBub3RoaW5nIHdyaXR0ZW4uICBJbiB0aGlzIGNhc2UsIHRoZXJlIG1heSBhbHNvIGJlIGEgYnVmZmVyIG92ZXJmbG93IHdpdGgKKyAgIHVucHJlZGljdGFibGUgY29uc2VxdWVuY2VzLCB3aGljaCBpcyBwb3NzaWJsZSBvbmx5IGlmIHpsaWIgd2FzIGNvbXBpbGVkIHdpdGgKKyAgIHRoZSBpbnNlY3VyZSBmdW5jdGlvbnMgc3ByaW50ZigpIG9yIHZzcHJpbnRmKCkgYmVjYXVzZSB0aGUgc2VjdXJlIHNucHJpbnRmKCkKKyAgIG9yIHZzbnByaW50ZigpIGZ1bmN0aW9ucyB3ZXJlIG5vdCBhdmFpbGFibGUuICBUaGlzIGNhbiBiZSBkZXRlcm1pbmVkIHVzaW5nCisgICB6bGliQ29tcGlsZUZsYWdzKCkuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGd6cHV0cyBPRigoZ3pGaWxlIGZpbGUsIGNvbnN0IGNoYXIgKnMpKTsKKy8qCisgICAgIFdyaXRlcyB0aGUgZ2l2ZW4gbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0byB0aGUgY29tcHJlc3NlZCBmaWxlLCBleGNsdWRpbmcKKyAgIHRoZSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3Rlci4KKworICAgICBnenB1dHMgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgb3IgLTEgaW4gY2FzZSBvZiBlcnJvci4KKyovCisKK1pFWFRFUk4gY2hhciAqIFpFWFBPUlQgZ3pnZXRzIE9GKChnekZpbGUgZmlsZSwgY2hhciAqYnVmLCBpbnQgbGVuKSk7CisvKgorICAgICBSZWFkcyBieXRlcyBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUgdW50aWwgbGVuLTEgY2hhcmFjdGVycyBhcmUgcmVhZCwgb3IgYQorICAgbmV3bGluZSBjaGFyYWN0ZXIgaXMgcmVhZCBhbmQgdHJhbnNmZXJyZWQgdG8gYnVmLCBvciBhbiBlbmQtb2YtZmlsZQorICAgY29uZGl0aW9uIGlzIGVuY291bnRlcmVkLiAgSWYgYW55IGNoYXJhY3RlcnMgYXJlIHJlYWQgb3IgaWYgbGVuID09IDEsIHRoZQorICAgc3RyaW5nIGlzIHRlcm1pbmF0ZWQgd2l0aCBhIG51bGwgY2hhcmFjdGVyLiAgSWYgbm8gY2hhcmFjdGVycyBhcmUgcmVhZCBkdWUKKyAgIHRvIGFuIGVuZC1vZi1maWxlIG9yIGxlbiA8IDEsIHRoZW4gdGhlIGJ1ZmZlciBpcyBsZWZ0IHVudG91Y2hlZC4KKworICAgICBnemdldHMgcmV0dXJucyBidWYgd2hpY2ggaXMgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLCBvciBpdCByZXR1cm5zIE5VTEwKKyAgIGZvciBlbmQtb2YtZmlsZSBvciBpbiBjYXNlIG9mIGVycm9yLiAgSWYgdGhlcmUgd2FzIGFuIGVycm9yLCB0aGUgY29udGVudHMgYXQKKyAgIGJ1ZiBhcmUgaW5kZXRlcm1pbmF0ZS4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3pwdXRjIE9GKChnekZpbGUgZmlsZSwgaW50IGMpKTsKKy8qCisgICAgIFdyaXRlcyBjLCBjb252ZXJ0ZWQgdG8gYW4gdW5zaWduZWQgY2hhciwgaW50byB0aGUgY29tcHJlc3NlZCBmaWxlLiAgZ3pwdXRjCisgICByZXR1cm5zIHRoZSB2YWx1ZSB0aGF0IHdhcyB3cml0dGVuLCBvciAtMSBpbiBjYXNlIG9mIGVycm9yLgorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCBnemdldGMgT0YoKGd6RmlsZSBmaWxlKSk7CisvKgorICAgICBSZWFkcyBvbmUgYnl0ZSBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUuICBnemdldGMgcmV0dXJucyB0aGlzIGJ5dGUgb3IgLTEKKyAgIGluIGNhc2Ugb2YgZW5kIG9mIGZpbGUgb3IgZXJyb3IuICBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgbWFjcm8gZm9yIHNwZWVkLgorICAgQXMgc3VjaCwgaXQgZG9lcyBub3QgZG8gYWxsIG9mIHRoZSBjaGVja2luZyB0aGUgb3RoZXIgZnVuY3Rpb25zIGRvLiAgSS5lLgorICAgaXQgZG9lcyBub3QgY2hlY2sgdG8gc2VlIGlmIGZpbGUgaXMgTlVMTCwgbm9yIHdoZXRoZXIgdGhlIHN0cnVjdHVyZSBmaWxlCisgICBwb2ludHMgdG8gaGFzIGJlZW4gY2xvYmJlcmVkIG9yIG5vdC4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3p1bmdldGMgT0YoKGludCBjLCBnekZpbGUgZmlsZSkpOworLyoKKyAgICAgUHVzaCBvbmUgY2hhcmFjdGVyIGJhY2sgb250byB0aGUgc3RyZWFtIHRvIGJlIHJlYWQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlcgorICAgb24gdGhlIG5leHQgcmVhZC4gIEF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgcHVzaC1iYWNrIGlzIGFsbG93ZWQuCisgICBnenVuZ2V0YygpIHJldHVybnMgdGhlIGNoYXJhY3RlciBwdXNoZWQsIG9yIC0xIG9uIGZhaWx1cmUuICBnenVuZ2V0YygpIHdpbGwKKyAgIGZhaWwgaWYgYyBpcyAtMSwgYW5kIG1heSBmYWlsIGlmIGEgY2hhcmFjdGVyIGhhcyBiZWVuIHB1c2hlZCBidXQgbm90IHJlYWQKKyAgIHlldC4gIElmIGd6dW5nZXRjIGlzIHVzZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZ3pvcGVuIG9yIGd6ZG9wZW4sIGF0IGxlYXN0IHRoZQorICAgb3V0cHV0IGJ1ZmZlciBzaXplIG9mIHB1c2hlZCBjaGFyYWN0ZXJzIGlzIGFsbG93ZWQuICAoU2VlIGd6YnVmZmVyIGFib3ZlLikKKyAgIFRoZSBwdXNoZWQgY2hhcmFjdGVyIHdpbGwgYmUgZGlzY2FyZGVkIGlmIHRoZSBzdHJlYW0gaXMgcmVwb3NpdGlvbmVkIHdpdGgKKyAgIGd6c2VlaygpIG9yIGd6cmV3aW5kKCkuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGd6Zmx1c2ggT0YoKGd6RmlsZSBmaWxlLCBpbnQgZmx1c2gpKTsKKy8qCisgICAgIEZsdXNoZXMgYWxsIHBlbmRpbmcgb3V0cHV0IGludG8gdGhlIGNvbXByZXNzZWQgZmlsZS4gIFRoZSBwYXJhbWV0ZXIgZmx1c2gKKyAgIGlzIGFzIGluIHRoZSBkZWZsYXRlKCkgZnVuY3Rpb24uICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSB6bGliIGVycm9yIG51bWJlcgorICAgKHNlZSBmdW5jdGlvbiBnemVycm9yIGJlbG93KS4gIGd6Zmx1c2ggaXMgb25seSBwZXJtaXR0ZWQgd2hlbiB3cml0aW5nLgorCisgICAgIElmIHRoZSBmbHVzaCBwYXJhbWV0ZXIgaXMgWl9GSU5JU0gsIHRoZSByZW1haW5pbmcgZGF0YSBpcyB3cml0dGVuIGFuZCB0aGUKKyAgIGd6aXAgc3RyZWFtIGlzIGNvbXBsZXRlZCBpbiB0aGUgb3V0cHV0LiAgSWYgZ3p3cml0ZSgpIGlzIGNhbGxlZCBhZ2FpbiwgYSBuZXcKKyAgIGd6aXAgc3RyZWFtIHdpbGwgYmUgc3RhcnRlZCBpbiB0aGUgb3V0cHV0LiAgZ3pyZWFkKCkgaXMgYWJsZSB0byByZWFkIHN1Y2gKKyAgIGNvbmNhdGVudGVkIGd6aXAgc3RyZWFtcy4KKworICAgICBnemZsdXNoIHNob3VsZCBiZSBjYWxsZWQgb25seSB3aGVuIHN0cmljdGx5IG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHdpbGwKKyAgIGRlZ3JhZGUgY29tcHJlc3Npb24gaWYgY2FsbGVkIHRvbyBvZnRlbi4KKyovCisKKy8qCitaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCBnenNlZWsgT0YoKGd6RmlsZSBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X29mZl90IG9mZnNldCwgaW50IHdoZW5jZSkpOworCisgICAgIFNldHMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGUgbmV4dCBnenJlYWQgb3IgZ3p3cml0ZSBvbiB0aGUgZ2l2ZW4KKyAgIGNvbXByZXNzZWQgZmlsZS4gIFRoZSBvZmZzZXQgcmVwcmVzZW50cyBhIG51bWJlciBvZiBieXRlcyBpbiB0aGUKKyAgIHVuY29tcHJlc3NlZCBkYXRhIHN0cmVhbS4gIFRoZSB3aGVuY2UgcGFyYW1ldGVyIGlzIGRlZmluZWQgYXMgaW4gbHNlZWsoMik7CisgICB0aGUgdmFsdWUgU0VFS19FTkQgaXMgbm90IHN1cHBvcnRlZC4KKworICAgICBJZiB0aGUgZmlsZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcsIHRoaXMgZnVuY3Rpb24gaXMgZW11bGF0ZWQgYnV0IGNhbiBiZQorICAgZXh0cmVtZWx5IHNsb3cuICBJZiB0aGUgZmlsZSBpcyBvcGVuZWQgZm9yIHdyaXRpbmcsIG9ubHkgZm9yd2FyZCBzZWVrcyBhcmUKKyAgIHN1cHBvcnRlZDsgZ3pzZWVrIHRoZW4gY29tcHJlc3NlcyBhIHNlcXVlbmNlIG9mIHplcm9lcyB1cCB0byB0aGUgbmV3CisgICBzdGFydGluZyBwb3NpdGlvbi4KKworICAgICBnenNlZWsgcmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBsb2NhdGlvbiBhcyBtZWFzdXJlZCBpbiBieXRlcyBmcm9tCisgICB0aGUgYmVnaW5uaW5nIG9mIHRoZSB1bmNvbXByZXNzZWQgc3RyZWFtLCBvciAtMSBpbiBjYXNlIG9mIGVycm9yLCBpbgorICAgcGFydGljdWxhciBpZiB0aGUgZmlsZSBpcyBvcGVuZWQgZm9yIHdyaXRpbmcgYW5kIHRoZSBuZXcgc3RhcnRpbmcgcG9zaXRpb24KKyAgIHdvdWxkIGJlIGJlZm9yZSB0aGUgY3VycmVudCBwb3NpdGlvbi4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgICAgZ3pyZXdpbmQgT0YoKGd6RmlsZSBmaWxlKSk7CisvKgorICAgICBSZXdpbmRzIHRoZSBnaXZlbiBmaWxlLiBUaGlzIGZ1bmN0aW9uIGlzIHN1cHBvcnRlZCBvbmx5IGZvciByZWFkaW5nLgorCisgICAgIGd6cmV3aW5kKGZpbGUpIGlzIGVxdWl2YWxlbnQgdG8gKGludClnenNlZWsoZmlsZSwgMEwsIFNFRUtfU0VUKQorKi8KKworLyoKK1pFWFRFUk4gel9vZmZfdCBaRVhQT1JUICAgIGd6dGVsbCBPRigoZ3pGaWxlIGZpbGUpKTsKKworICAgICBSZXR1cm5zIHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhlIG5leHQgZ3pyZWFkIG9yIGd6d3JpdGUgb24gdGhlIGdpdmVuCisgICBjb21wcmVzc2VkIGZpbGUuICBUaGlzIHBvc2l0aW9uIHJlcHJlc2VudHMgYSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlCisgICB1bmNvbXByZXNzZWQgZGF0YSBzdHJlYW0sIGFuZCBpcyB6ZXJvIHdoZW4gc3RhcnRpbmcsIGV2ZW4gaWYgYXBwZW5kaW5nIG9yCisgICByZWFkaW5nIGEgZ3ppcCBzdHJlYW0gZnJvbSB0aGUgbWlkZGxlIG9mIGEgZmlsZSB1c2luZyBnemRvcGVuKCkuCisKKyAgICAgZ3p0ZWxsKGZpbGUpIGlzIGVxdWl2YWxlbnQgdG8gZ3pzZWVrKGZpbGUsIDBMLCBTRUVLX0NVUikKKyovCisKKy8qCitaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCBnem9mZnNldCBPRigoZ3pGaWxlIGZpbGUpKTsKKworICAgICBSZXR1cm5zIHRoZSBjdXJyZW50IG9mZnNldCBpbiB0aGUgZmlsZSBiZWluZyByZWFkIG9yIHdyaXR0ZW4uICBUaGlzIG9mZnNldAorICAgaW5jbHVkZXMgdGhlIGNvdW50IG9mIGJ5dGVzIHRoYXQgcHJlY2VkZSB0aGUgZ3ppcCBzdHJlYW0sIGZvciBleGFtcGxlIHdoZW4KKyAgIGFwcGVuZGluZyBvciB3aGVuIHVzaW5nIGd6ZG9wZW4oKSBmb3IgcmVhZGluZy4gIFdoZW4gcmVhZGluZywgdGhlIG9mZnNldAorICAgZG9lcyBub3QgaW5jbHVkZSBhcyB5ZXQgdW51c2VkIGJ1ZmZlcmVkIGlucHV0LiAgVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZAorICAgZm9yIGEgcHJvZ3Jlc3MgaW5kaWNhdG9yLiAgT24gZXJyb3IsIGd6b2Zmc2V0KCkgcmV0dXJucyAtMS4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3plb2YgT0YoKGd6RmlsZSBmaWxlKSk7CisvKgorICAgICBSZXR1cm5zIHRydWUgKDEpIGlmIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgaGFzIGJlZW4gc2V0IHdoaWxlIHJlYWRpbmcsCisgICBmYWxzZSAoMCkgb3RoZXJ3aXNlLiAgTm90ZSB0aGF0IHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgaXMgc2V0IG9ubHkgaWYgdGhlCisgICByZWFkIHRyaWVkIHRvIGdvIHBhc3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQsIGJ1dCBjYW1lIHVwIHNob3J0LiAgVGhlcmVmb3JlLAorICAganVzdCBsaWtlIGZlb2YoKSwgZ3plb2YoKSBtYXkgcmV0dXJuIGZhbHNlIGV2ZW4gaWYgdGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvCisgICByZWFkLCBpbiB0aGUgZXZlbnQgdGhhdCB0aGUgbGFzdCByZWFkIHJlcXVlc3Qgd2FzIGZvciB0aGUgZXhhY3QgbnVtYmVyIG9mCisgICBieXRlcyByZW1haW5pbmcgaW4gdGhlIGlucHV0IGZpbGUuICBUaGlzIHdpbGwgaGFwcGVuIGlmIHRoZSBpbnB1dCBmaWxlIHNpemUKKyAgIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBidWZmZXIgc2l6ZS4KKworICAgICBJZiBnemVvZigpIHJldHVybnMgdHJ1ZSwgdGhlbiB0aGUgcmVhZCBmdW5jdGlvbnMgd2lsbCByZXR1cm4gbm8gbW9yZSBkYXRhLAorICAgdW5sZXNzIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgaXMgcmVzZXQgYnkgZ3pjbGVhcmVycigpIGFuZCB0aGUgaW5wdXQgZmlsZQorICAgaGFzIGdyb3duIHNpbmNlIHRoZSBwcmV2aW91cyBlbmQgb2YgZmlsZSB3YXMgZGV0ZWN0ZWQuCisqLworCitaRVhURVJOIGludCBaRVhQT1JUIGd6ZGlyZWN0IE9GKChnekZpbGUgZmlsZSkpOworLyoKKyAgICAgUmV0dXJucyB0cnVlICgxKSBpZiBmaWxlIGlzIGJlaW5nIGNvcGllZCBkaXJlY3RseSB3aGlsZSByZWFkaW5nLCBvciBmYWxzZQorICAgKDApIGlmIGZpbGUgaXMgYSBnemlwIHN0cmVhbSBiZWluZyBkZWNvbXByZXNzZWQuCisKKyAgICAgSWYgdGhlIGlucHV0IGZpbGUgaXMgZW1wdHksIGd6ZGlyZWN0KCkgd2lsbCByZXR1cm4gdHJ1ZSwgc2luY2UgdGhlIGlucHV0CisgICBkb2VzIG5vdCBjb250YWluIGEgZ3ppcCBzdHJlYW0uCisKKyAgICAgSWYgZ3pkaXJlY3QoKSBpcyB1c2VkIGltbWVkaWF0ZWx5IGFmdGVyIGd6b3BlbigpIG9yIGd6ZG9wZW4oKSBpdCB3aWxsCisgICBjYXVzZSBidWZmZXJzIHRvIGJlIGFsbG9jYXRlZCB0byBhbGxvdyByZWFkaW5nIHRoZSBmaWxlIHRvIGRldGVybWluZSBpZiBpdAorICAgaXMgYSBnemlwIGZpbGUuICBUaGVyZWZvcmUgaWYgZ3pidWZmZXIoKSBpcyB1c2VkLCBpdCBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZQorICAgZ3pkaXJlY3QoKS4KKworICAgICBXaGVuIHdyaXRpbmcsIGd6ZGlyZWN0KCkgcmV0dXJucyB0cnVlICgxKSBpZiB0cmFuc3BhcmVudCB3cml0aW5nIHdhcworICAgcmVxdWVzdGVkICgid1QiIGZvciB0aGUgZ3pvcGVuKCkgbW9kZSksIG9yIGZhbHNlICgwKSBvdGhlcndpc2UuICAoTm90ZToKKyAgIGd6ZGlyZWN0KCkgaXMgbm90IG5lZWRlZCB3aGVuIHdyaXRpbmcuICBUcmFuc3BhcmVudCB3cml0aW5nIG11c3QgYmUKKyAgIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCBzbyB0aGUgYXBwbGljYXRpb24gYWxyZWFkeSBrbm93cyB0aGUgYW5zd2VyLiAgV2hlbgorICAgbGlua2luZyBzdGF0aWNhbGx5LCB1c2luZyBnemRpcmVjdCgpIHdpbGwgaW5jbHVkZSBhbGwgb2YgdGhlIHpsaWIgY29kZSBmb3IKKyAgIGd6aXAgZmlsZSByZWFkaW5nIGFuZCBkZWNvbXByZXNzaW9uLCB3aGljaCBtYXkgbm90IGJlIGRlc2lyZWQuKQorKi8KKworWkVYVEVSTiBpbnQgWkVYUE9SVCAgICBnemNsb3NlIE9GKChnekZpbGUgZmlsZSkpOworLyoKKyAgICAgRmx1c2hlcyBhbGwgcGVuZGluZyBvdXRwdXQgaWYgbmVjZXNzYXJ5LCBjbG9zZXMgdGhlIGNvbXByZXNzZWQgZmlsZSBhbmQKKyAgIGRlYWxsb2NhdGVzIHRoZSAoZGUpY29tcHJlc3Npb24gc3RhdGUuICBOb3RlIHRoYXQgb25jZSBmaWxlIGlzIGNsb3NlZCwgeW91CisgICBjYW5ub3QgY2FsbCBnemVycm9yIHdpdGggZmlsZSwgc2luY2UgaXRzIHN0cnVjdHVyZXMgaGF2ZSBiZWVuIGRlYWxsb2NhdGVkLgorICAgZ3pjbG9zZSBtdXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugb24gdGhlIHNhbWUgZmlsZSwganVzdCBhcyBmcmVlCisgICBtdXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugb24gdGhlIHNhbWUgYWxsb2NhdGlvbi4KKworICAgICBnemNsb3NlIHdpbGwgcmV0dXJuIFpfU1RSRUFNX0VSUk9SIGlmIGZpbGUgaXMgbm90IHZhbGlkLCBaX0VSUk5PIG9uIGEKKyAgIGZpbGUgb3BlcmF0aW9uIGVycm9yLCBaX01FTV9FUlJPUiBpZiBvdXQgb2YgbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGUKKyAgIGxhc3QgcmVhZCBlbmRlZCBpbiB0aGUgbWlkZGxlIG9mIGEgZ3ppcCBzdHJlYW0sIG9yIFpfT0sgb24gc3VjY2Vzcy4KKyovCisKK1pFWFRFUk4gaW50IFpFWFBPUlQgZ3pjbG9zZV9yIE9GKChnekZpbGUgZmlsZSkpOworWkVYVEVSTiBpbnQgWkVYUE9SVCBnemNsb3NlX3cgT0YoKGd6RmlsZSBmaWxlKSk7CisvKgorICAgICBTYW1lIGFzIGd6Y2xvc2UoKSwgYnV0IGd6Y2xvc2VfcigpIGlzIG9ubHkgZm9yIHVzZSB3aGVuIHJlYWRpbmcsIGFuZAorICAgZ3pjbG9zZV93KCkgaXMgb25seSBmb3IgdXNlIHdoZW4gd3JpdGluZyBvciBhcHBlbmRpbmcuICBUaGUgYWR2YW50YWdlIHRvCisgICB1c2luZyB0aGVzZSBpbnN0ZWFkIG9mIGd6Y2xvc2UoKSBpcyB0aGF0IHRoZXkgYXZvaWQgbGlua2luZyBpbiB6bGliCisgICBjb21wcmVzc2lvbiBvciBkZWNvbXByZXNzaW9uIGNvZGUgdGhhdCBpcyBub3QgdXNlZCB3aGVuIG9ubHkgcmVhZGluZyBvciBvbmx5CisgICB3cml0aW5nIHJlc3BlY3RpdmVseS4gIElmIGd6Y2xvc2UoKSBpcyB1c2VkLCB0aGVuIGJvdGggY29tcHJlc3Npb24gYW5kCisgICBkZWNvbXByZXNzaW9uIGNvZGUgd2lsbCBiZSBpbmNsdWRlZCB0aGUgYXBwbGljYXRpb24gd2hlbiBsaW5raW5nIHRvIGEgc3RhdGljCisgICB6bGliIGxpYnJhcnkuCisqLworCitaRVhURVJOIGNvbnN0IGNoYXIgKiBaRVhQT1JUIGd6ZXJyb3IgT0YoKGd6RmlsZSBmaWxlLCBpbnQgKmVycm51bSkpOworLyoKKyAgICAgUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIGxhc3QgZXJyb3Igd2hpY2ggb2NjdXJyZWQgb24gdGhlIGdpdmVuCisgICBjb21wcmVzc2VkIGZpbGUuICBlcnJudW0gaXMgc2V0IHRvIHpsaWIgZXJyb3IgbnVtYmVyLiAgSWYgYW4gZXJyb3Igb2NjdXJyZWQKKyAgIGluIHRoZSBmaWxlIHN5c3RlbSBhbmQgbm90IGluIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5LCBlcnJudW0gaXMgc2V0IHRvCisgICBaX0VSUk5PIGFuZCB0aGUgYXBwbGljYXRpb24gbWF5IGNvbnN1bHQgZXJybm8gdG8gZ2V0IHRoZSBleGFjdCBlcnJvciBjb2RlLgorCisgICAgIFRoZSBhcHBsaWNhdGlvbiBtdXN0IG5vdCBtb2RpZnkgdGhlIHJldHVybmVkIHN0cmluZy4gIEZ1dHVyZSBjYWxscyB0bworICAgdGhpcyBmdW5jdGlvbiBtYXkgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXNseSByZXR1cm5lZCBzdHJpbmcuICBJZiBmaWxlIGlzCisgICBjbG9zZWQsIHRoZW4gdGhlIHN0cmluZyBwcmV2aW91c2x5IHJldHVybmVkIGJ5IGd6ZXJyb3Igd2lsbCBubyBsb25nZXIgYmUKKyAgIGF2YWlsYWJsZS4KKworICAgICBnemVycm9yKCkgc2hvdWxkIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggZXJyb3JzIGZyb20gZW5kLW9mLWZpbGUgZm9yIHRob3NlCisgICBmdW5jdGlvbnMgYWJvdmUgdGhhdCBkbyBub3QgZGlzdGluZ3Vpc2ggdGhvc2UgY2FzZXMgaW4gdGhlaXIgcmV0dXJuIHZhbHVlcy4KKyovCisKK1pFWFRFUk4gdm9pZCBaRVhQT1JUIGd6Y2xlYXJlcnIgT0YoKGd6RmlsZSBmaWxlKSk7CisvKgorICAgICBDbGVhcnMgdGhlIGVycm9yIGFuZCBlbmQtb2YtZmlsZSBmbGFncyBmb3IgZmlsZS4gIFRoaXMgaXMgYW5hbG9nb3VzIHRvIHRoZQorICAgY2xlYXJlcnIoKSBmdW5jdGlvbiBpbiBzdGRpby4gIFRoaXMgaXMgdXNlZnVsIGZvciBjb250aW51aW5nIHRvIHJlYWQgYSBnemlwCisgICBmaWxlIHRoYXQgaXMgYmVpbmcgd3JpdHRlbiBjb25jdXJyZW50bHkuCisqLworCisjZW5kaWYgLyogIVpfU09MTyAqLworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVja3N1bSBmdW5jdGlvbnMgKi8KKworLyoKKyAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcmVsYXRlZCB0byBjb21wcmVzc2lvbiBidXQgYXJlIGV4cG9ydGVkCisgICBhbnl3YXkgYmVjYXVzZSB0aGV5IG1pZ2h0IGJlIHVzZWZ1bCBpbiBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGNvbXByZXNzaW9uCisgICBsaWJyYXJ5LgorKi8KKworWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGFkbGVyMzIgT0YoKHVMb25nIGFkbGVyLCBjb25zdCBCeXRlZiAqYnVmLCB1SW50IGxlbikpOworLyoKKyAgICAgVXBkYXRlIGEgcnVubmluZyBBZGxlci0zMiBjaGVja3N1bSB3aXRoIHRoZSBieXRlcyBidWZbMC4ubGVuLTFdIGFuZAorICAgcmV0dXJuIHRoZSB1cGRhdGVkIGNoZWNrc3VtLiAgSWYgYnVmIGlzIFpfTlVMTCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZQorICAgcmVxdWlyZWQgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGNoZWNrc3VtLgorCisgICAgIEFuIEFkbGVyLTMyIGNoZWNrc3VtIGlzIGFsbW9zdCBhcyByZWxpYWJsZSBhcyBhIENSQzMyIGJ1dCBjYW4gYmUgY29tcHV0ZWQKKyAgIG11Y2ggZmFzdGVyLgorCisgICBVc2FnZSBleGFtcGxlOgorCisgICAgIHVMb25nIGFkbGVyID0gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsKKworICAgICB3aGlsZSAocmVhZF9idWZmZXIoYnVmZmVyLCBsZW5ndGgpICE9IEVPRikgeworICAgICAgIGFkbGVyID0gYWRsZXIzMihhZGxlciwgYnVmZmVyLCBsZW5ndGgpOworICAgICB9CisgICAgIGlmIChhZGxlciAhPSBvcmlnaW5hbF9hZGxlcikgZXJyb3IoKTsKKyovCisKKy8qCitaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lIE9GKCh1TG9uZyBhZGxlcjEsIHVMb25nIGFkbGVyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpfb2ZmX3QgbGVuMikpOworCisgICAgIENvbWJpbmUgdHdvIEFkbGVyLTMyIGNoZWNrc3VtcyBpbnRvIG9uZS4gIEZvciB0d28gc2VxdWVuY2VzIG9mIGJ5dGVzLCBzZXExCisgICBhbmQgc2VxMiB3aXRoIGxlbmd0aHMgbGVuMSBhbmQgbGVuMiwgQWRsZXItMzIgY2hlY2tzdW1zIHdlcmUgY2FsY3VsYXRlZCBmb3IKKyAgIGVhY2gsIGFkbGVyMSBhbmQgYWRsZXIyLiAgYWRsZXIzMl9jb21iaW5lKCkgcmV0dXJucyB0aGUgQWRsZXItMzIgY2hlY2tzdW0gb2YKKyAgIHNlcTEgYW5kIHNlcTIgY29uY2F0ZW5hdGVkLCByZXF1aXJpbmcgb25seSBhZGxlcjEsIGFkbGVyMiwgYW5kIGxlbjIuICBOb3RlCisgICB0aGF0IHRoZSB6X29mZl90IHR5cGUgKGxpa2Ugb2ZmX3QpIGlzIGEgc2lnbmVkIGludGVnZXIuICBJZiBsZW4yIGlzCisgICBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBoYXMgbm8gbWVhbmluZyBvciB1dGlsaXR5LgorKi8KKworWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyICAgT0YoKHVMb25nIGNyYywgY29uc3QgQnl0ZWYgKmJ1ZiwgdUludCBsZW4pKTsKKy8qCisgICAgIFVwZGF0ZSBhIHJ1bm5pbmcgQ1JDLTMyIHdpdGggdGhlIGJ5dGVzIGJ1ZlswLi5sZW4tMV0gYW5kIHJldHVybiB0aGUKKyAgIHVwZGF0ZWQgQ1JDLTMyLiAgSWYgYnVmIGlzIFpfTlVMTCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1aXJlZAorICAgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGNyYy4gIFByZS0gYW5kIHBvc3QtY29uZGl0aW9uaW5nIChvbmUncyBjb21wbGVtZW50KSBpcworICAgcGVyZm9ybWVkIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHNvIGl0IHNob3VsZG4ndCBiZSBkb25lIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKworICAgVXNhZ2UgZXhhbXBsZToKKworICAgICB1TG9uZyBjcmMgPSBjcmMzMigwTCwgWl9OVUxMLCAwKTsKKworICAgICB3aGlsZSAocmVhZF9idWZmZXIoYnVmZmVyLCBsZW5ndGgpICE9IEVPRikgeworICAgICAgIGNyYyA9IGNyYzMyKGNyYywgYnVmZmVyLCBsZW5ndGgpOworICAgICB9CisgICAgIGlmIChjcmMgIT0gb3JpZ2luYWxfY3JjKSBlcnJvcigpOworKi8KKworLyoKK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lIE9GKCh1TG9uZyBjcmMxLCB1TG9uZyBjcmMyLCB6X29mZl90IGxlbjIpKTsKKworICAgICBDb21iaW5lIHR3byBDUkMtMzIgY2hlY2sgdmFsdWVzIGludG8gb25lLiAgRm9yIHR3byBzZXF1ZW5jZXMgb2YgYnl0ZXMsCisgICBzZXExIGFuZCBzZXEyIHdpdGggbGVuZ3RocyBsZW4xIGFuZCBsZW4yLCBDUkMtMzIgY2hlY2sgdmFsdWVzIHdlcmUKKyAgIGNhbGN1bGF0ZWQgZm9yIGVhY2gsIGNyYzEgYW5kIGNyYzIuICBjcmMzMl9jb21iaW5lKCkgcmV0dXJucyB0aGUgQ1JDLTMyCisgICBjaGVjayB2YWx1ZSBvZiBzZXExIGFuZCBzZXEyIGNvbmNhdGVuYXRlZCwgcmVxdWlyaW5nIG9ubHkgY3JjMSwgY3JjMiwgYW5kCisgICBsZW4yLgorKi8KKworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YXJpb3VzIGhhY2tzLCBkb24ndCBsb29rIDopICovCisKKy8qIGRlZmxhdGVJbml0IGFuZCBpbmZsYXRlSW5pdCBhcmUgbWFjcm9zIHRvIGFsbG93IGNoZWNraW5nIHRoZSB6bGliIHZlcnNpb24KKyAqIGFuZCB0aGUgY29tcGlsZXIncyB2aWV3IG9mIHpfc3RyZWFtOgorICovCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVJbml0XyBPRigoel9zdHJlYW1wIHN0cm0sIGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpKTsKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUluaXRfIE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpKTsKK1pFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZUluaXQyXyBPRigoel9zdHJlYW1wIHN0cm0sIGludCAgbGV2ZWwsIGludCAgbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2luZG93Qml0cywgaW50IG1lbUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyYXRlZ3ksIGNvbnN0IGNoYXIgKnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJlYW1fc2l6ZSkpOworWkVYVEVSTiBpbnQgWkVYUE9SVCBpbmZsYXRlSW5pdDJfIE9GKCh6X3N0cmVhbXAgc3RybSwgaW50ICB3aW5kb3dCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpKTsKK1pFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZUJhY2tJbml0XyBPRigoel9zdHJlYW1wIHN0cm0sIGludCB3aW5kb3dCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEZBUiAqd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZWFtX3NpemUpKTsKKyNkZWZpbmUgZGVmbGF0ZUluaXQoc3RybSwgbGV2ZWwpIFwKKyAgICAgICAgZGVmbGF0ZUluaXRfKChzdHJtKSwgKGxldmVsKSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisjZGVmaW5lIGluZmxhdGVJbml0KHN0cm0pIFwKKyAgICAgICAgaW5mbGF0ZUluaXRfKChzdHJtKSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisjZGVmaW5lIGRlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3kpIFwKKyAgICAgICAgZGVmbGF0ZUluaXQyXygoc3RybSksKGxldmVsKSwobWV0aG9kKSwod2luZG93Qml0cyksKG1lbUxldmVsKSxcCisgICAgICAgICAgICAgICAgICAgICAgKHN0cmF0ZWd5KSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisjZGVmaW5lIGluZmxhdGVJbml0MihzdHJtLCB3aW5kb3dCaXRzKSBcCisgICAgICAgIGluZmxhdGVJbml0Ml8oKHN0cm0pLCAod2luZG93Qml0cyksIFpMSUJfVkVSU0lPTiwgXAorICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKyNkZWZpbmUgaW5mbGF0ZUJhY2tJbml0KHN0cm0sIHdpbmRvd0JpdHMsIHdpbmRvdykgXAorICAgICAgICBpbmZsYXRlQmFja0luaXRfKChzdHJtKSwgKHdpbmRvd0JpdHMpLCAod2luZG93KSwgXAorICAgICAgICAgICAgICAgICAgICAgIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQorCisjaWZuZGVmIFpfU09MTworCisvKiBnemdldGMoKSBtYWNybyBhbmQgaXRzIHN1cHBvcnRpbmcgZnVuY3Rpb24gYW5kIGV4cG9zZWQgZGF0YSBzdHJ1Y3R1cmUuICBOb3RlCisgKiB0aGF0IHRoZSByZWFsIGludGVybmFsIHN0YXRlIGlzIG11Y2ggbGFyZ2VyIHRoYW4gdGhlIGV4cG9zZWQgc3RydWN0dXJlLgorICogVGhpcyBhYmJyZXZpYXRlZCBzdHJ1Y3R1cmUgZXhwb3NlcyBqdXN0IGVub3VnaCBmb3IgdGhlIGd6Z2V0YygpIG1hY3JvLiAgVGhlCisgKiB1c2VyIHNob3VsZCBub3QgbWVzcyB3aXRoIHRoZXNlIGV4cG9zZWQgZWxlbWVudHMsIHNpbmNlIHRoZWlyIG5hbWVzIG9yCisgKiBiZWhhdmlvciBjb3VsZCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwgcGVyaGFwcyBldmVuIGNhcHJpY2lvdXNseS4gIFRoZXkgY2FuCisgKiBvbmx5IGJlIHVzZWQgYnkgdGhlIGd6Z2V0YygpIG1hY3JvLiAgWW91IGhhdmUgYmVlbiB3YXJuZWQuCisgKi8KK3N0cnVjdCBnekZpbGVfcyB7CisgICAgdW5zaWduZWQgaGF2ZTsKKyAgICB1bnNpZ25lZCBjaGFyICpuZXh0OworICAgIHpfb2ZmNjRfdCBwb3M7Cit9OworWkVYVEVSTiBpbnQgWkVYUE9SVCBnemdldGNfIE9GKChnekZpbGUgZmlsZSkpOyAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqLworI2lmZGVmIFpfUFJFRklYX1NFVAorIyAgdW5kZWYgel9nemdldGMKKyMgIGRlZmluZSB6X2d6Z2V0YyhnKSBcCisgICAgICAgICAgKChnKS0+aGF2ZSA/ICgoZyktPmhhdmUtLSwgKGcpLT5wb3MrKywgKigoZyktPm5leHQpKyspIDogZ3pnZXRjKGcpKQorI2Vsc2UKKyMgIGRlZmluZSBnemdldGMoZykgXAorICAgICAgICAgICgoZyktPmhhdmUgPyAoKGcpLT5oYXZlLS0sIChnKS0+cG9zKyssICooKGcpLT5uZXh0KSsrKSA6IGd6Z2V0YyhnKSkKKyNlbmRpZgorCisvKiBwcm92aWRlIDY0LWJpdCBvZmZzZXQgZnVuY3Rpb25zIGlmIF9MQVJHRUZJTEU2NF9TT1VSQ0UgZGVmaW5lZCwgYW5kL29yCisgKiBjaGFuZ2UgdGhlIHJlZ3VsYXIgZnVuY3Rpb25zIHRvIDY0IGJpdHMgaWYgX0ZJTEVfT0ZGU0VUX0JJVFMgaXMgNjQgKGlmCisgKiBib3RoIGFyZSB0cnVlLCB0aGUgYXBwbGljYXRpb24gZ2V0cyB0aGUgKjY0IGZ1bmN0aW9ucywgYW5kIHRoZSByZWd1bGFyCisgKiBmdW5jdGlvbnMgYXJlIGNoYW5nZWQgdG8gNjQgYml0cykgLS0gaW4gY2FzZSB0aGVzZSBhcmUgc2V0IG9uIHN5c3RlbXMKKyAqIHdpdGhvdXQgbGFyZ2UgZmlsZSBzdXBwb3J0LCBfTEZTNjRfTEFSR0VGSUxFIG11c3QgYWxzbyBiZSB0cnVlCisgKi8KKyNpZmRlZiBaX0xBUkdFNjQKKyAgIFpFWFRFUk4gZ3pGaWxlIFpFWFBPUlQgZ3pvcGVuNjQgT0YoKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSk7CisgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6c2VlazY0IE9GKChnekZpbGUsIHpfb2ZmNjRfdCwgaW50KSk7CisgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6dGVsbDY0IE9GKChnekZpbGUpKTsKKyAgIFpFWFRFUk4gel9vZmY2NF90IFpFWFBPUlQgZ3pvZmZzZXQ2NCBPRigoZ3pGaWxlKSk7CisgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lNjQgT0YoKHVMb25nLCB1TG9uZywgel9vZmY2NF90KSk7CisgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZTY0IE9GKCh1TG9uZywgdUxvbmcsIHpfb2ZmNjRfdCkpOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChaTElCX0lOVEVSTkFMKSAmJiBkZWZpbmVkKFpfV0FOVDY0KQorIyAgaWZkZWYgWl9QUkVGSVhfU0VUCisjICAgIGRlZmluZSB6X2d6b3BlbiB6X2d6b3BlbjY0CisjICAgIGRlZmluZSB6X2d6c2VlayB6X2d6c2VlazY0CisjICAgIGRlZmluZSB6X2d6dGVsbCB6X2d6dGVsbDY0CisjICAgIGRlZmluZSB6X2d6b2Zmc2V0IHpfZ3pvZmZzZXQ2NAorIyAgICBkZWZpbmUgel9hZGxlcjMyX2NvbWJpbmUgel9hZGxlcjMyX2NvbWJpbmU2NAorIyAgICBkZWZpbmUgel9jcmMzMl9jb21iaW5lIHpfY3JjMzJfY29tYmluZTY0CisjICBlbHNlCisjICAgIGRlZmluZSBnem9wZW4gZ3pvcGVuNjQKKyMgICAgZGVmaW5lIGd6c2VlayBnenNlZWs2NAorIyAgICBkZWZpbmUgZ3p0ZWxsIGd6dGVsbDY0CisjICAgIGRlZmluZSBnem9mZnNldCBnem9mZnNldDY0CisjICAgIGRlZmluZSBhZGxlcjMyX2NvbWJpbmUgYWRsZXIzMl9jb21iaW5lNjQKKyMgICAgZGVmaW5lIGNyYzMyX2NvbWJpbmUgY3JjMzJfY29tYmluZTY0CisjICBlbmRpZgorIyAgaWZuZGVmIFpfTEFSR0U2NAorICAgICBaRVhURVJOIGd6RmlsZSBaRVhQT1JUIGd6b3BlbjY0IE9GKChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikpOworICAgICBaRVhURVJOIG9mZjY0X3QgWkVYUE9SVCBnenNlZWs2NCBPRigoZ3pGaWxlLCBvZmY2NF90LCBpbnQpKTsKKyAgICAgWkVYVEVSTiBvZmY2NF90IFpFWFBPUlQgZ3p0ZWxsNjQgT0YoKGd6RmlsZSkpOworICAgICBaRVhURVJOIHpfb2ZmNjRfdCBaRVhQT1JUIGd6b2Zmc2V0NjQgT0YoKGd6RmlsZSkpOworICAgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgYWRsZXIzMl9jb21iaW5lNjQgT0YoKHVMb25nLCB1TG9uZywgb2ZmNjRfdCkpOworICAgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZTY0IE9GKCh1TG9uZywgdUxvbmcsIG9mZjY0X3QpKTsKKyMgIGVuZGlmCisjZWxzZQorICAgWkVYVEVSTiBnekZpbGUgWkVYUE9SVCBnem9wZW4gT0YoKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSk7CisgICBaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCBnenNlZWsgT0YoKGd6RmlsZSwgel9vZmZfdCwgaW50KSk7CisgICBaRVhURVJOIHpfb2ZmX3QgWkVYUE9SVCBnenRlbGwgT0YoKGd6RmlsZSkpOworICAgWkVYVEVSTiB6X29mZl90IFpFWFBPUlQgZ3pvZmZzZXQgT0YoKGd6RmlsZSkpOworICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGFkbGVyMzJfY29tYmluZSBPRigodUxvbmcsIHVMb25nLCB6X29mZl90KSk7CisgICBaRVhURVJOIHVMb25nIFpFWFBPUlQgY3JjMzJfY29tYmluZSBPRigodUxvbmcsIHVMb25nLCB6X29mZl90KSk7CisjZW5kaWYKKworI2Vsc2UgLyogWl9TT0xPICovCisKKyAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBhZGxlcjMyX2NvbWJpbmUgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOworICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmUgT0YoKHVMb25nLCB1TG9uZywgel9vZmZfdCkpOworCisjZW5kaWYgLyogIVpfU09MTyAqLworCisvKiBoYWNrIGZvciBidWdneSBjb21waWxlcnMgKi8KKyNpZiAhZGVmaW5lZChaVVRJTF9IKSAmJiAhZGVmaW5lZChOT19EVU1NWV9ERUNMKQorICAgIHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSB7aW50IGR1bW15O307CisjZW5kaWYKKworLyogdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyAqLworWkVYVEVSTiBjb25zdCBjaGFyICAgKiBaRVhQT1JUIHpFcnJvciAgICAgICAgICAgT0YoKGludCkpOworWkVYVEVSTiBpbnQgICAgICAgICAgICBaRVhQT1JUIGluZmxhdGVTeW5jUG9pbnQgT0YoKHpfc3RyZWFtcCkpOworWkVYVEVSTiBjb25zdCB6X2NyY190IEZBUiAqIFpFWFBPUlQgZ2V0X2NyY190YWJsZSAgICBPRigodm9pZCkpOworWkVYVEVSTiBpbnQgICAgICAgICAgICBaRVhQT1JUIGluZmxhdGVVbmRlcm1pbmUgT0YoKHpfc3RyZWFtcCwgaW50KSk7CitaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgaW5mbGF0ZVJlc2V0S2VlcCBPRigoel9zdHJlYW1wKSk7CitaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgZGVmbGF0ZVJlc2V0S2VlcCBPRigoel9zdHJlYW1wKSk7CisjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKFpfU09MTykKK1pFWFRFUk4gZ3pGaWxlICAgICAgICAgWkVYUE9SVCBnem9wZW5fdyBPRigoY29uc3Qgd2NoYXJfdCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbW9kZSkpOworI2VuZGlmCisjaWYgZGVmaW5lZChTVERDKSB8fCBkZWZpbmVkKFpfSEFWRV9TVERBUkdfSCkKKyMgIGlmbmRlZiBaX1NPTE8KK1pFWFRFUk4gaW50ICAgICAgICAgICAgWkVYUE9SVFZBIGd6dnByaW50ZiBaX0FSRygoZ3pGaWxlIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCB2YSkpOworIyAgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogWkxJQl9IICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L3p1dGlsLmggYi9jb3JlL3NyYy9meGNvZGVjL2Z4X3psaWIvemxpYl92MTI4L3p1dGlsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyZDFiNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvZnhfemxpYi96bGliX3YxMjgvenV0aWwuaApAQCAtMCwwICsxLDI1NSBAQAorLyogenV0aWwuaCAtLSBpbnRlcm5hbCBpbnRlcmZhY2UgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkuCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgKi8KKworLyogV0FSTklORzogdGhpcyBmaWxlIHNob3VsZCAqbm90KiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucy4gSXQgaXMKKyAgIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5IGFuZCBpcworICAgc3ViamVjdCB0byBjaGFuZ2UuIEFwcGxpY2F0aW9ucyBzaG91bGQgb25seSB1c2UgemxpYi5oLgorICovCisKKy8qIEAoIykgJElkJCAqLworCisjaWZuZGVmIFpVVElMX0gKKyNkZWZpbmUgWlVUSUxfSAorCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9meGNydC9meF9zeXN0ZW0uaCIJCS8qIFhZUSAyMDA3LTUtMjIgKi8KKworI2lmZGVmIEhBVkVfSElEREVOCisjICBkZWZpbmUgWkxJQl9JTlRFUk5BTCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKQorI2Vsc2UKKyMgIGRlZmluZSBaTElCX0lOVEVSTkFMCisjZW5kaWYKKworI2luY2x1ZGUgInpsaWIuaCIKKworI2lmIGRlZmluZWQoU1REQykgJiYgIWRlZmluZWQoWl9TT0xPKQorIyAgaWYgIShkZWZpbmVkKF9XSU4zMl9XQ0UpICYmIGRlZmluZWQoX01TQ19WRVIpKQorIyAgICBpbmNsdWRlIDxzdGRkZWYuaD4KKyMgIGVuZGlmCisjICBpbmNsdWRlIDxzdHJpbmcuaD4KKyMgIGluY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKKyNpZmRlZiBaX1NPTE8KKyAgIHR5cGVkZWYgbG9uZyBwdHJkaWZmX3Q7ICAvKiBndWVzcyAtLSB3aWxsIGJlIGNhdWdodCBpZiBndWVzcyBpcyB3cm9uZyAqLworI2VuZGlmCisKKyNpZm5kZWYgbG9jYWwKKyMgIGRlZmluZSBsb2NhbCBzdGF0aWMKKyNlbmRpZgorLyogY29tcGlsZSB3aXRoIC1EbG9jYWwgaWYgeW91ciBkZWJ1Z2dlciBjYW4ndCBmaW5kIHN0YXRpYyBzeW1ib2xzICovCisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciAgdWNoOwordHlwZWRlZiB1Y2ggRkFSIHVjaGY7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaDsKK3R5cGVkZWYgdXNoIEZBUiB1c2hmOwordHlwZWRlZiB1bnNpZ25lZCBsb25nICB1bGc7CisKK2V4dGVybiB6X2NvbnN0IGNoYXIgKiBjb25zdCB6X2Vycm1zZ1sxMF07IC8qIGluZGV4ZWQgYnkgMi16bGliX2Vycm9yICovCisvKiAoc2l6ZSBnaXZlbiB0byBhdm9pZCBzaWxseSB3YXJuaW5ncyB3aXRoIFZpc3VhbCBDKyspICovCisKKyNkZWZpbmUgRVJSX01TRyhlcnIpIHpfZXJybXNnW1pfTkVFRF9ESUNULShlcnIpXQorCisjZGVmaW5lIEVSUl9SRVRVUk4oc3RybSxlcnIpIFwKKyAgcmV0dXJuIChzdHJtLT5tc2cgPSBFUlJfTVNHKGVyciksIChlcnIpKQorLyogVG8gYmUgdXNlZCBvbmx5IHdoZW4gdGhlIHN0YXRlIGlzIGtub3duIHRvIGJlIHZhbGlkICovCisKKyAgICAgICAgLyogY29tbW9uIGNvbnN0YW50cyAqLworCisjaWZuZGVmIERFRl9XQklUUworIyAgZGVmaW5lIERFRl9XQklUUyBNQVhfV0JJVFMKKyNlbmRpZgorLyogZGVmYXVsdCB3aW5kb3dCaXRzIGZvciBkZWNvbXByZXNzaW9uLiBNQVhfV0JJVFMgaXMgZm9yIGNvbXByZXNzaW9uIG9ubHkgKi8KKworI2lmIE1BWF9NRU1fTEVWRUwgPj0gOAorIyAgZGVmaW5lIERFRl9NRU1fTEVWRUwgOAorI2Vsc2UKKyMgIGRlZmluZSBERUZfTUVNX0xFVkVMICBNQVhfTUVNX0xFVkVMCisjZW5kaWYKKy8qIGRlZmF1bHQgbWVtTGV2ZWwgKi8KKworI2RlZmluZSBTVE9SRURfQkxPQ0sgMAorI2RlZmluZSBTVEFUSUNfVFJFRVMgMQorI2RlZmluZSBEWU5fVFJFRVMgICAgMgorLyogVGhlIHRocmVlIGtpbmRzIG9mIGJsb2NrIHR5cGUgKi8KKworI2RlZmluZSBNSU5fTUFUQ0ggIDMKKyNkZWZpbmUgTUFYX01BVENIICAyNTgKKy8qIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG1hdGNoIGxlbmd0aHMgKi8KKworI2RlZmluZSBQUkVTRVRfRElDVCAweDIwIC8qIHByZXNldCBkaWN0aW9uYXJ5IGZsYWcgaW4gemxpYiBoZWFkZXIgKi8KKworICAgICAgICAvKiB0YXJnZXQgZGVwZW5kZW5jaWVzICovCisKKyNpZiBkZWZpbmVkKE1TRE9TKSB8fCAoZGVmaW5lZChXSU5ET1dTKSAmJiAhZGVmaW5lZChXSU4zMikpCisjICBkZWZpbmUgT1NfQ09ERSAgMHgwMAorIyAgaWZuZGVmIFpfU09MTworIyAgICBpZiBkZWZpbmVkKF9fVFVSQk9DX18pIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQorIyAgICAgIGlmIChfX1NURENfXyA9PSAxKSAmJiAoZGVmaW5lZChfX0xBUkdFX18pIHx8IGRlZmluZWQoX19DT01QQUNUX18pKQorICAgICAgICAgLyogQWxsb3cgY29tcGlsYXRpb24gd2l0aCBBTlNJIGtleXdvcmRzIG9ubHkgZW5hYmxlZCAqLworICAgICAgICAgdm9pZCBfQ2RlY2wgZmFyZnJlZSggdm9pZCAqYmxvY2sgKTsKKyAgICAgICAgIHZvaWQgKl9DZGVjbCBmYXJtYWxsb2MoIHVuc2lnbmVkIGxvbmcgbmJ5dGVzICk7CisjICAgICAgZWxzZQorIyAgICAgICAgaW5jbHVkZSA8YWxsb2MuaD4KKyMgICAgICBlbmRpZgorIyAgICBlbHNlIC8qIE1TQyBvciBESkdQUCAqLworIyAgICAgIGluY2x1ZGUgPG1hbGxvYy5oPgorIyAgICBlbmRpZgorIyAgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgQU1JR0EKKyMgIGRlZmluZSBPU19DT0RFICAweDAxCisjZW5kaWYKKworI2lmIGRlZmluZWQoVkFYQykgfHwgZGVmaW5lZChWTVMpCisjICBkZWZpbmUgT1NfQ09ERSAgMHgwMgorIyAgZGVmaW5lIEZfT1BFTihuYW1lLCBtb2RlKSBcCisgICAgIEZYU1lTX2ZvcGVuKChuYW1lKSwgKG1vZGUpLCAibWJjPTYwIiwgImN0eD1zdG0iLCAicmZtPWZpeCIsICJtcnM9NTEyIikKKyNlbmRpZgorCisjaWYgZGVmaW5lZChBVEFSSSkgfHwgZGVmaW5lZChhdGFyaXN0KQorIyAgZGVmaW5lIE9TX0NPREUgIDB4MDUKKyNlbmRpZgorCisjaWZkZWYgT1MyCisjICBkZWZpbmUgT1NfQ09ERSAgMHgwNgorIyAgaWYgZGVmaW5lZChNX0k4NikgJiYgIWRlZmluZWQoWl9TT0xPKQorIyAgICBpbmNsdWRlIDxtYWxsb2MuaD4KKyMgIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoTUFDT1MpIHx8IGRlZmluZWQoVEFSR0VUX09TX01BQykKKyMgIGRlZmluZSBPU19DT0RFICAweDA3CisjICBpZm5kZWYgWl9TT0xPCisjICAgIGlmIGRlZmluZWQoX19NV0VSS1NfXykgJiYgX19kZXN0X29zICE9IF9fYmVfb3MgJiYgX19kZXN0X29zICE9IF9fd2luMzJfb3MKKyMgICAgICBpbmNsdWRlIDx1bml4Lmg+IC8qIGZvciBmZG9wZW4gKi8KKyMgICAgZWxzZQorIyAgICAgIGlmbmRlZiBmZG9wZW4KKyMgICAgICAgIGRlZmluZSBmZG9wZW4oZmQsbW9kZSkgTlVMTCAvKiBObyBmZG9wZW4oKSAqLworIyAgICAgIGVuZGlmCisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBUT1BTMjAKKyMgIGRlZmluZSBPU19DT0RFICAweDBhCisjZW5kaWYKKworI2lmZGVmIFdJTjMyCisjICBpZm5kZWYgX19DWUdXSU5fXyAgLyogQ3lnd2luIGlzIFVuaXgsIG5vdCBXaW4zMiAqLworIyAgICBkZWZpbmUgT1NfQ09ERSAgMHgwYgorIyAgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgX181MFNFUklFUyAvKiBQcmltZS9QUklNT1MgKi8KKyMgIGRlZmluZSBPU19DT0RFICAweDBmCisjZW5kaWYKKworI2lmIGRlZmluZWQoX0JFT1NfKSB8fCBkZWZpbmVkKFJJU0NPUykKKyMgIGRlZmluZSBmZG9wZW4oZmQsbW9kZSkgTlVMTCAvKiBObyBmZG9wZW4oKSAqLworI2VuZGlmCisKKyNpZiAoZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID4gNjAwKSkgJiYgIWRlZmluZWQgX19JTlRFUklYCisjICBpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpCisjICAgIGRlZmluZSBmZG9wZW4oZmQsbW9kZSkgTlVMTCAvKiBObyBmZG9wZW4oKSAqLworIyAgICBpZm5kZWYgX1BUUkRJRkZfVF9ERUZJTkVECisgICAgICAgdHlwZWRlZiBpbnQgcHRyZGlmZl90OworIyAgICAgIGRlZmluZSBfUFRSRElGRl9UX0RFRklORUQKKyMgICAgZW5kaWYKKyMgIGVsc2UKKyMgICAgZGVmaW5lIGZkb3BlbihmZCx0eXBlKSAgX2Zkb3BlbihmZCx0eXBlKQorIyAgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKE1TRE9TKQorICAjcHJhZ21hIHdhcm4gLTgwMDQKKyAgI3ByYWdtYSB3YXJuIC04MDA4CisgICNwcmFnbWEgd2FybiAtODA2NgorI2VuZGlmCisKKy8qIHByb3ZpZGUgcHJvdG90eXBlcyBmb3IgdGhlc2Ugd2hlbiBidWlsZGluZyB6bGliIHdpdGhvdXQgTEZTICovCisjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiBcCisgICAgKCFkZWZpbmVkKF9MQVJHRUZJTEU2NF9TT1VSQ0UpIHx8IF9MRlM2NF9MQVJHRUZJTEUtMCA9PSAwKQorICAgIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBhZGxlcjMyX2NvbWJpbmU2NCBPRigodUxvbmcsIHVMb25nLCB6X29mZl90KSk7CisgICAgWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGNyYzMyX2NvbWJpbmU2NCBPRigodUxvbmcsIHVMb25nLCB6X29mZl90KSk7CisjZW5kaWYKKworICAgICAgICAvKiBjb21tb24gZGVmYXVsdHMgKi8KKworI2lmbmRlZiBPU19DT0RFCisjICBkZWZpbmUgT1NfQ09ERSAgMHgwMyAgLyogYXNzdW1lIFVuaXggKi8KKyNlbmRpZgorCisjaWZuZGVmIEZfT1BFTgorIyAgZGVmaW5lIEZfT1BFTihuYW1lLCBtb2RlKSBGWFNZU19mb3BlbigobmFtZSksIChtb2RlKSkKKyNlbmRpZgorCisgICAgICAgICAvKiBmdW5jdGlvbnMgKi8KKworI2lmIGRlZmluZWQocHlyKSB8fCBkZWZpbmVkKFpfU09MTykKKyMgIGRlZmluZSBOT19NRU1DUFkKKyNlbmRpZgorI2lmIGRlZmluZWQoU01BTExfTUVESVVNKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19TQ19fKQorIC8qIFVzZSBvdXIgb3duIGZ1bmN0aW9ucyBmb3Igc21hbGwgYW5kIG1lZGl1bSBtb2RlbCB3aXRoIE1TQyA8PSA1LjAuCisgICogWW91IG1heSBoYXZlIHRvIHVzZSB0aGUgc2FtZSBzdHJhdGVneSBmb3IgQm9ybGFuZCBDICh1bnRlc3RlZCkuCisgICogVGhlIF9fU0NfXyBjaGVjayBpcyBmb3IgU3ltYW50ZWMuCisgICovCisjICBkZWZpbmUgTk9fTUVNQ1BZCisjZW5kaWYKKyNpZiBkZWZpbmVkKFNUREMpICYmICFkZWZpbmVkKEhBVkVfTUVNQ1BZKSAmJiAhZGVmaW5lZChOT19NRU1DUFkpCisjICBkZWZpbmUgSEFWRV9NRU1DUFkKKyNlbmRpZgorI2lmZGVmIEhBVkVfTUVNQ1BZCisjICBpZmRlZiBTTUFMTF9NRURJVU0gLyogTVNET1Mgc21hbGwgb3IgbWVkaXVtIG1vZGVsICovCisjICAgIGRlZmluZSB6bWVtY3B5IF9mbWVtY3B5CisjICAgIGRlZmluZSB6bWVtY21wIF9mbWVtY21wCisjICAgIGRlZmluZSB6bWVtemVybyhkZXN0LCBsZW4pIF9mbWVtc2V0KGRlc3QsIDAsIGxlbikKKyMgIGVsc2UKKyMgICAgZGVmaW5lIHptZW1jcHkgRlhTWVNfbWVtY3B5MzIKKyMgICAgZGVmaW5lIHptZW1jbXAgRlhTWVNfbWVtY21wMzIKKyMgICAgZGVmaW5lIHptZW16ZXJvKGRlc3QsIGxlbikgRlhTWVNfbWVtc2V0MzIoZGVzdCwgMCwgbGVuKQorIyAgZW5kaWYKKyNlbHNlCisgICB2b2lkIFpMSUJfSU5URVJOQUwgem1lbWNweSBPRigoQnl0ZWYqIGRlc3QsIGNvbnN0IEJ5dGVmKiBzb3VyY2UsIHVJbnQgbGVuKSk7CisgICBpbnQgWkxJQl9JTlRFUk5BTCB6bWVtY21wIE9GKChjb25zdCBCeXRlZiogczEsIGNvbnN0IEJ5dGVmKiBzMiwgdUludCBsZW4pKTsKKyAgIHZvaWQgWkxJQl9JTlRFUk5BTCB6bWVtemVybyBPRigoQnl0ZWYqIGRlc3QsIHVJbnQgbGVuKSk7CisjZW5kaWYKKworLyogRGlhZ25vc3RpYyBmdW5jdGlvbnMgKi8KKyNpZmRlZiBERUJVRworIyAgaW5jbHVkZSA8c3RkaW8uaD4KKyAgIGV4dGVybiBpbnQgWkxJQl9JTlRFUk5BTCB6X3ZlcmJvc2U7CisgICBleHRlcm4gdm9pZCBaTElCX0lOVEVSTkFMIHpfZXJyb3IgT0YoKGNoYXIgKm0pKTsKKyMgIGRlZmluZSBBc3NlcnQoY29uZCxtc2cpIHtpZighKGNvbmQpKSB6X2Vycm9yKG1zZyk7fQorIyAgZGVmaW5lIFRyYWNlKHgpIHtpZiAoel92ZXJib3NlPj0wKSBGWFNZU19mcHJpbnRmIHggO30KKyMgIGRlZmluZSBUcmFjZXYoeCkge2lmICh6X3ZlcmJvc2U+MCkgRlhTWVNfZnByaW50ZiB4IDt9CisjICBkZWZpbmUgVHJhY2V2dih4KSB7aWYgKHpfdmVyYm9zZT4xKSBGWFNZU19mcHJpbnRmIHggO30KKyMgIGRlZmluZSBUcmFjZWMoYyx4KSB7aWYgKHpfdmVyYm9zZT4wICYmIChjKSkgRlhTWVNfZnByaW50ZiB4IDt9CisjICBkZWZpbmUgVHJhY2VjdihjLHgpIHtpZiAoel92ZXJib3NlPjEgJiYgKGMpKSBGWFNZU19mcHJpbnRmIHggO30KKyNlbHNlCisjICBkZWZpbmUgQXNzZXJ0KGNvbmQsbXNnKQorIyAgZGVmaW5lIFRyYWNlKHgpCisjICBkZWZpbmUgVHJhY2V2KHgpCisjICBkZWZpbmUgVHJhY2V2dih4KQorIyAgZGVmaW5lIFRyYWNlYyhjLHgpCisjICBkZWZpbmUgVHJhY2VjdihjLHgpCisjZW5kaWYKKworI2lmbmRlZiBaX1NPTE8KKyAgIHZvaWRwZiBaTElCX0lOVEVSTkFMIHpjYWxsb2MgT0YoKHZvaWRwZiBvcGFxdWUsIHVuc2lnbmVkIGl0ZW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2l6ZSkpOworICAgdm9pZCBaTElCX0lOVEVSTkFMIHpjZnJlZSAgT0YoKHZvaWRwZiBvcGFxdWUsIHZvaWRwZiBwdHIpKTsKKyNlbmRpZgorCisjZGVmaW5lIFpBTExPQyhzdHJtLCBpdGVtcywgc2l6ZSkgXAorICAgICAgICAgICAoKigoc3RybSktPnphbGxvYykpKChzdHJtKS0+b3BhcXVlLCAoaXRlbXMpLCAoc2l6ZSkpCisjZGVmaW5lIFpGUkVFKHN0cm0sIGFkZHIpICAoKigoc3RybSktPnpmcmVlKSkoKHN0cm0pLT5vcGFxdWUsICh2b2lkcGYpKGFkZHIpKQorI2RlZmluZSBUUllfRlJFRShzLCBwKSB7aWYgKHApIFpGUkVFKHMsIHApO30KKworLyogUmV2ZXJzZSB0aGUgYnl0ZXMgaW4gYSAzMi1iaXQgdmFsdWUgKi8KKyNkZWZpbmUgWlNXQVAzMihxKSAoKCgocSkgPj4gMjQpICYgMHhmZikgKyAoKChxKSA+PiA4KSAmIDB4ZmYwMCkgKyBcCisgICAgICAgICAgICAgICAgICAgICgoKHEpICYgMHhmZjAwKSA8PCA4KSArICgoKHEpICYgMHhmZikgPDwgMjQpKQorCisjZW5kaWYgLyogWlVUSUxfSCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9Bcml0aERlY29kZXIuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfQXJpdGhEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY2NDI1NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfQXJpdGhEZWNvZGVyLmgKQEAgLTAsMCArMSwxMjYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0pCSUcyX0FSSVRITUVUSUNfREVDT0RFUl9IXw0KKyNkZWZpbmUgX0pCSUcyX0FSSVRITUVUSUNfREVDT0RFUl9IXw0KKyNpbmNsdWRlICJKQmlnMl9EZWZpbmUuaCINCisjaW5jbHVkZSAiSkJpZzJfQml0U3RyZWFtLmgiDQorI2luY2x1ZGUgIkpCaWcyX0FyaXRoUWUuaCINCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIHVuc2lnbmVkIGludCBNUFM7DQorICAgIHVuc2lnbmVkIGludCBJOw0KK30gSkJpZzJBcml0aEN0eDsNCitjbGFzcyBDSkJpZzJfQXJpdGhEZWNvZGVyIDogcHVibGljIENKQmlnMl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDSkJpZzJfQXJpdGhEZWNvZGVyKENKQmlnMl9CaXRTdHJlYW0gKnBTdHJlYW0pOw0KKw0KKyAgICB+Q0pCaWcyX0FyaXRoRGVjb2RlcigpOw0KKw0KKyAgICBpbnQgREVDT0RFKEpCaWcyQXJpdGhDdHggKnBDWCk7DQorcHJpdmF0ZToNCisNCisgICAgdm9pZCBJTklUREVDKCk7DQorDQorICAgIHZvaWQgQllURUlOKCk7DQorICAgIHVuc2lnbmVkIGNoYXIgQjsNCisgICAgdW5zaWduZWQgaW50IEM7DQorICAgIHVuc2lnbmVkIGludCBBOw0KKyAgICB1bnNpZ25lZCBpbnQgQ1Q7DQorICAgIENKQmlnMl9CaXRTdHJlYW0gKm1fcFN0cmVhbTsNCit9Ow0KK2lubGluZSBDSkJpZzJfQXJpdGhEZWNvZGVyOjpDSkJpZzJfQXJpdGhEZWNvZGVyKENKQmlnMl9CaXRTdHJlYW0gKnBTdHJlYW0pDQorew0KKyAgICBtX3BTdHJlYW0gPSBwU3RyZWFtOw0KKyAgICBJTklUREVDKCk7DQorfQ0KK2lubGluZSBDSkJpZzJfQXJpdGhEZWNvZGVyOjp+Q0pCaWcyX0FyaXRoRGVjb2RlcigpDQorew0KK30NCitpbmxpbmUgdm9pZCBDSkJpZzJfQXJpdGhEZWNvZGVyOjpJTklUREVDKCkNCit7DQorICAgIEIgPSBtX3BTdHJlYW0tPmdldEN1ckJ5dGVfYXJpdGgoKTsNCisgICAgQyA9IChCIF4gMHhmZikgPDwgMTY7Ow0KKyAgICBCWVRFSU4oKTsNCisgICAgQyA9IEMgPDwgNzsNCisgICAgQ1QgPSBDVCAtIDc7DQorICAgIEEgPSAweDgwMDA7DQorfQ0KK2lubGluZSB2b2lkIENKQmlnMl9Bcml0aERlY29kZXI6OkJZVEVJTigpDQorew0KKyAgICB1bnNpZ25lZCBjaGFyIEIxOw0KKyAgICBpZihCID09IDB4ZmYpIHsNCisgICAgICAgIEIxID0gbV9wU3RyZWFtLT5nZXROZXh0Qnl0ZV9hcml0aCgpOw0KKyAgICAgICAgaWYoQjEgPiAweDhmKSB7DQorICAgICAgICAgICAgQ1QgPSA4Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX3BTdHJlYW0tPmluY0J5dGVJZHgoKTsNCisgICAgICAgICAgICBCID0gQjE7DQorICAgICAgICAgICAgQyA9IEMgKyAweGZlMDAgLSAoQiA8PCA5KTsNCisgICAgICAgICAgICBDVCA9IDc7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BTdHJlYW0tPmluY0J5dGVJZHgoKTsNCisgICAgICAgIEIgPSBtX3BTdHJlYW0tPmdldEN1ckJ5dGVfYXJpdGgoKTsNCisgICAgICAgIEMgPSBDICsgMHhmZjAwIC0gKEIgPDwgOCk7DQorICAgICAgICBDVCA9IDg7DQorICAgIH0NCit9DQoraW5saW5lIGludCBDSkJpZzJfQXJpdGhEZWNvZGVyOjpERUNPREUoSkJpZzJBcml0aEN0eCAqcENYKQ0KK3sNCisgICAgaW50IEQ7DQorICAgIGNvbnN0IEpCaWcyQXJpdGhRZSAqIHFlID0gJlFlVGFibGVbcENYLT5JXTsNCisgICAgQSA9IEEgLSBxZS0+UWU7DQorICAgIGlmKChDID4+IDE2KSA8IEEpIHsNCisgICAgICAgIGlmKEEgJiAweDgwMDApIHsNCisgICAgICAgICAgICBEID0gcENYLT5NUFM7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmKEEgPCBxZS0+UWUpIHsNCisgICAgICAgICAgICAgICAgRCA9IDEgLSBwQ1gtPk1QUzsNCisgICAgICAgICAgICAgICAgaWYocWUtPm5Td2l0Y2ggPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgcENYLT5NUFMgPSAxIC0gcENYLT5NUFM7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcENYLT5JID0gcWUtPk5MUFM7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgRCA9IHBDWC0+TVBTOw0KKyAgICAgICAgICAgICAgICBwQ1gtPkkgPSBxZS0+Tk1QUzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZG8gew0KKyAgICAgICAgICAgICAgICBpZiAoQ1QgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgQllURUlOKCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQSA8PD0gMTsNCisgICAgICAgICAgICAgICAgQyA8PD0gMTsNCisgICAgICAgICAgICAgICAgQ1QtLTsNCisgICAgICAgICAgICB9IHdoaWxlICgoQSAmIDB4ODAwMCkgPT0gMCk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDIC09IEEgPDwgMTY7DQorICAgICAgICBpZihBIDwgcWUtPlFlKSB7DQorICAgICAgICAgICAgQSA9IHFlLT5RZTsNCisgICAgICAgICAgICBEID0gcENYLT5NUFM7DQorICAgICAgICAgICAgcENYLT5JID0gcWUtPk5NUFM7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEEgPSBxZS0+UWU7DQorICAgICAgICAgICAgRCA9IDEgLSBwQ1gtPk1QUzsNCisgICAgICAgICAgICBpZihxZS0+blN3aXRjaCA9PSAxKSB7DQorICAgICAgICAgICAgICAgIHBDWC0+TVBTID0gMSAtIHBDWC0+TVBTOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwQ1gtPkkgPSBxZS0+TkxQUzsNCisgICAgICAgIH0NCisgICAgICAgIGRvIHsNCisgICAgICAgICAgICBpZiAoQ1QgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBCWVRFSU4oKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQSA8PD0gMTsNCisgICAgICAgICAgICBDIDw8PSAxOw0KKyAgICAgICAgICAgIENULS07DQorICAgICAgICB9IHdoaWxlICgoQSAmIDB4ODAwMCkgPT0gMCk7DQorICAgIH0NCisgICAgcmV0dXJuIEQ7DQorfQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfQXJpdGhJbnREZWNvZGVyLmNwcCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfQXJpdGhJbnREZWNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjRlMGJiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9Bcml0aEludERlY29kZXIuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiSkJpZzJfQXJpdGhJbnREZWNvZGVyLmgiDQorQ0pCaWcyX0FyaXRoSW50RGVjb2Rlcjo6Q0pCaWcyX0FyaXRoSW50RGVjb2RlcigpDQorew0KKyAgICBJQXggPSAoSkJpZzJBcml0aEN0eCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihKQmlnMkFyaXRoQ3R4KSwgNTEyKTsNCisgICAgSkJJRzJfbWVtc2V0KElBeCwgMCwgc2l6ZW9mKEpCaWcyQXJpdGhDdHgpICogNTEyKTsNCit9DQorQ0pCaWcyX0FyaXRoSW50RGVjb2Rlcjo6fkNKQmlnMl9Bcml0aEludERlY29kZXIoKQ0KK3sNCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKElBeCk7DQorfQ0KK2ludCBDSkJpZzJfQXJpdGhJbnREZWNvZGVyOjpkZWNvZGUoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgaW50ICpuUmVzdWx0KQ0KK3sNCisgICAgaW50IFBSRVYsIFY7DQorICAgIGludCBTLCBEOw0KKyAgICBpbnQgbk5lZWRCaXRzLCBuVGVtcCwgaTsNCisgICAgUFJFViA9IDE7DQorICAgIFMgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoSUF4ICsgUFJFVik7DQorICAgIFBSRVYgPSAoUFJFViA8PCAxKSB8IFM7DQorICAgIEQgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoSUF4ICsgUFJFVik7DQorICAgIFBSRVYgPSAoUFJFViA8PCAxKSB8IEQ7DQorICAgIGlmKEQpIHsNCisgICAgICAgIEQgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoSUF4ICsgUFJFVik7DQorICAgICAgICBQUkVWID0gKFBSRVYgPDwgMSkgfCBEOw0KKyAgICAgICAgaWYoRCkgew0KKyAgICAgICAgICAgIEQgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoSUF4ICsgUFJFVik7DQorICAgICAgICAgICAgUFJFViA9IChQUkVWIDw8IDEpIHwgRDsNCisgICAgICAgICAgICBpZihEKSB7DQorICAgICAgICAgICAgICAgIEQgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoSUF4ICsgUFJFVik7DQorICAgICAgICAgICAgICAgIFBSRVYgPSAoUFJFViA8PCAxKSB8IEQ7DQorICAgICAgICAgICAgICAgIGlmKEQpIHsNCisgICAgICAgICAgICAgICAgICAgIEQgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoSUF4ICsgUFJFVik7DQorICAgICAgICAgICAgICAgICAgICBQUkVWID0gKFBSRVYgPDwgMSkgfCBEOw0KKyAgICAgICAgICAgICAgICAgICAgaWYoRCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5OZWVkQml0cyA9IDMyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIFYgPSA0NDM2Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuTmVlZEJpdHMgPSAxMjsNCisgICAgICAgICAgICAgICAgICAgICAgICBWID0gMzQwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbk5lZWRCaXRzID0gODsNCisgICAgICAgICAgICAgICAgICAgIFYgPSA4NDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG5OZWVkQml0cyA9IDY7DQorICAgICAgICAgICAgICAgIFYgPSAyMDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG5OZWVkQml0cyA9IDQ7DQorICAgICAgICAgICAgViA9IDQ7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBuTmVlZEJpdHMgPSAyOw0KKyAgICAgICAgViA9IDA7DQorICAgIH0NCisgICAgblRlbXAgPSAwOw0KKyAgICBmb3IoaSA9IDA7IGkgPCBuTmVlZEJpdHM7IGkrKykgew0KKyAgICAgICAgRCA9IHBBcml0aERlY29kZXItPkRFQ09ERShJQXggKyBQUkVWKTsNCisgICAgICAgIGlmKFBSRVYgPCAyNTYpIHsNCisgICAgICAgICAgICBQUkVWID0gKFBSRVYgPDwgMSkgfCBEOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBQUkVWID0gKCgoUFJFViA8PCAxKSB8IEQpICYgNTExKSB8IDI1NjsNCisgICAgICAgIH0NCisgICAgICAgIG5UZW1wID0gKG5UZW1wIDw8IDEpIHwgRDsNCisgICAgfQ0KKyAgICBWICs9IG5UZW1wOw0KKyAgICBpZihTID09IDEgJiYgViA+IDApIHsNCisgICAgICAgIFYgPSAtVjsNCisgICAgfQ0KKyAgICAqblJlc3VsdCA9IFY7DQorICAgIGlmKFMgPT0gMSAmJiBWID09IDApIHsNCisgICAgICAgIHJldHVybiBKQklHMl9PT0I7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0NKQmlnMl9Bcml0aElhaWREZWNvZGVyOjpDSkJpZzJfQXJpdGhJYWlkRGVjb2Rlcih1bnNpZ25lZCBjaGFyIFNCU1lNQ09ERUxFTkEpDQorew0KKyAgICBTQlNZTUNPREVMRU4gPSBTQlNZTUNPREVMRU5BOw0KKyAgICBJQUlEID0gKEpCaWcyQXJpdGhDdHgqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihzaXplb2YoSkJpZzJBcml0aEN0eCksICgxIDw8IFNCU1lNQ09ERUxFTikpOw0KKyAgICBKQklHMl9tZW1zZXQoSUFJRCwgMCwgc2l6ZW9mKEpCaWcyQXJpdGhDdHgpICogKGludCkoMSA8PCBTQlNZTUNPREVMRU4pKTsNCit9DQorQ0pCaWcyX0FyaXRoSWFpZERlY29kZXI6On5DSkJpZzJfQXJpdGhJYWlkRGVjb2RlcigpDQorew0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoSUFJRCk7DQorfQ0KK2ludCBDSkJpZzJfQXJpdGhJYWlkRGVjb2Rlcjo6ZGVjb2RlKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIGludCAqblJlc3VsdCkNCit7DQorICAgIGludCBQUkVWOw0KKyAgICBpbnQgRDsNCisgICAgaW50IGk7DQorICAgIFBSRVYgPSAxOw0KKyAgICBmb3IoaSA9IDA7IGkgPCBTQlNZTUNPREVMRU47IGkrKykgew0KKyAgICAgICAgRCA9IHBBcml0aERlY29kZXItPkRFQ09ERShJQUlEICsgUFJFVik7DQorICAgICAgICBQUkVWID0gKFBSRVYgPDwgMSkgfCBEOw0KKyAgICB9DQorICAgIFBSRVYgPSBQUkVWIC0gKDEgPDwgU0JTWU1DT0RFTEVOKTsNCisgICAgKm5SZXN1bHQgPSBQUkVWOw0KKyAgICByZXR1cm4gMDsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9Bcml0aEludERlY29kZXIuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfQXJpdGhJbnREZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ0NjU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfQXJpdGhJbnREZWNvZGVyLmgKQEAgLTAsMCArMSwzOSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfSkJJRzJfQVJJVEhfSU5UX0RFQ09ERVJfSF8NCisjZGVmaW5lIF9KQklHMl9BUklUSF9JTlRfREVDT0RFUl9IXw0KKyNpbmNsdWRlICJKQmlnMl9Nb2R1bGUuaCINCisjaW5jbHVkZSAiSkJpZzJfQXJpdGhEZWNvZGVyLmgiDQorY2xhc3MgQ0pCaWcyX0FyaXRoSW50RGVjb2RlciA6IHB1YmxpYyBDSkJpZzJfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0pCaWcyX0FyaXRoSW50RGVjb2RlcigpOw0KKw0KKyAgICB+Q0pCaWcyX0FyaXRoSW50RGVjb2RlcigpOw0KKw0KKyAgICBpbnQgZGVjb2RlKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIGludCAqblJlc3VsdCk7DQorcHJpdmF0ZToNCisNCisgICAgSkJpZzJBcml0aEN0eCAqSUF4Ow0KK307DQorY2xhc3MgQ0pCaWcyX0FyaXRoSWFpZERlY29kZXIgOiBwdWJsaWMgQ0pCaWcyX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENKQmlnMl9Bcml0aElhaWREZWNvZGVyKHVuc2lnbmVkIGNoYXIgU0JTWU1DT0RFTEVOQSk7DQorDQorICAgIH5DSkJpZzJfQXJpdGhJYWlkRGVjb2RlcigpOw0KKw0KKyAgICBpbnQgZGVjb2RlKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIGludCAqblJlc3VsdCk7DQorcHJpdmF0ZToNCisNCisgICAgSkJpZzJBcml0aEN0eCAqSUFJRDsNCisNCisgICAgdW5zaWduZWQgY2hhciBTQlNZTUNPREVMRU47DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0FyaXRoUWUuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfQXJpdGhRZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YmMxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0FyaXRoUWUuaApAQCAtMCwwICsxLDY0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9KQklHMl9BUklUSF9RRV9IXw0KKyNkZWZpbmUgX0pCSUcyX0FSSVRIX1FFX0hfDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICB1bnNpZ25lZCBpbnQgUWU7DQorICAgIHVuc2lnbmVkIGludCBOTVBTOw0KKyAgICB1bnNpZ25lZCBpbnQgTkxQUzsNCisgICAgdW5zaWduZWQgaW50IG5Td2l0Y2g7DQorfSBKQmlnMkFyaXRoUWU7DQorY29uc3QgSkJpZzJBcml0aFFlIFFlVGFibGVbXSA9IHsNCisgICAgeyAweDU2MDEsICAxLCAgMSwgMSB9LA0KKyAgICB7IDB4MzQwMSwgIDIsICA2LCAwIH0sDQorICAgIHsgMHgxODAxLCAgMywgIDksIDAgfSwNCisgICAgeyAweDBBQzEsICA0LCAxMiwgMCB9LA0KKyAgICB7IDB4MDUyMSwgIDUsIDI5LCAwIH0sDQorICAgIHsgMHgwMjIxLCAzOCwgMzMsIDAgfSwNCisgICAgeyAweDU2MDEsICA3LCAgNiwgMSB9LA0KKyAgICB7IDB4NTQwMSwgIDgsIDE0LCAwIH0sDQorICAgIHsgMHg0ODAxLCAgOSwgMTQsIDAgfSwNCisgICAgeyAweDM4MDEsIDEwLCAxNCwgMCB9LA0KKyAgICB7IDB4MzAwMSwgMTEsIDE3LCAwIH0sDQorICAgIHsgMHgyNDAxLCAxMiwgMTgsIDAgfSwNCisgICAgeyAweDFDMDEsIDEzLCAyMCwgMCB9LA0KKyAgICB7IDB4MTYwMSwgMjksIDIxLCAwIH0sDQorICAgIHsgMHg1NjAxLCAxNSwgMTQsIDEgfSwNCisgICAgeyAweDU0MDEsIDE2LCAxNCwgMCB9LA0KKyAgICB7IDB4NTEwMSwgMTcsIDE1LCAwIH0sDQorICAgIHsgMHg0ODAxLCAxOCwgMTYsIDAgfSwNCisgICAgeyAweDM4MDEsIDE5LCAxNywgMCB9LA0KKyAgICB7IDB4MzQwMSwgMjAsIDE4LCAwIH0sDQorICAgIHsgMHgzMDAxLCAyMSwgMTksIDAgfSwNCisgICAgeyAweDI4MDEsIDIyLCAxOSwgMCB9LA0KKyAgICB7IDB4MjQwMSwgMjMsIDIwLCAwIH0sDQorICAgIHsgMHgyMjAxLCAyNCwgMjEsIDAgfSwNCisgICAgeyAweDFDMDEsIDI1LCAyMiwgMCB9LA0KKyAgICB7IDB4MTgwMSwgMjYsIDIzLCAwIH0sDQorICAgIHsgMHgxNjAxLCAyNywgMjQsIDAgfSwNCisgICAgeyAweDE0MDEsIDI4LCAyNSwgMCB9LA0KKyAgICB7IDB4MTIwMSwgMjksIDI2LCAwIH0sDQorICAgIHsgMHgxMTAxLCAzMCwgMjcsIDAgfSwNCisgICAgeyAweDBBQzEsIDMxLCAyOCwgMCB9LA0KKyAgICB7IDB4MDlDMSwgMzIsIDI5LCAwIH0sDQorICAgIHsgMHgwOEExLCAzMywgMzAsIDAgfSwNCisgICAgeyAweDA1MjEsIDM0LCAzMSwgMCB9LA0KKyAgICB7IDB4MDQ0MSwgMzUsIDMyLCAwIH0sDQorICAgIHsgMHgwMkExLCAzNiwgMzMsIDAgfSwNCisgICAgeyAweDAyMjEsIDM3LCAzNCwgMCB9LA0KKyAgICB7IDB4MDE0MSwgMzgsIDM1LCAwIH0sDQorICAgIHsgMHgwMTExLCAzOSwgMzYsIDAgfSwNCisgICAgeyAweDAwODUsIDQwLCAzNywgMCB9LA0KKyAgICB7IDB4MDA0OSwgNDEsIDM4LCAwIH0sDQorICAgIHsgMHgwMDI1LCA0MiwgMzksIDAgfSwNCisgICAgeyAweDAwMTUsIDQzLCA0MCwgMCB9LA0KKyAgICB7IDB4MDAwOSwgNDQsIDQxLCAwIH0sDQorICAgIHsgMHgwMDA1LCA0NSwgNDIsIDAgfSwNCisgICAgeyAweDAwMDEsIDQ1LCA0MywgMCB9LA0KKyAgICB7IDB4NTYwMSwgNDYsIDQ2LCAwIH0NCit9Ow0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfQml0U3RyZWFtLmggYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0JpdFN0cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZDQ3M2EKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0JpdFN0cmVhbS5oCkBAIC0wLDAgKzEsMzE2IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9KQklHMl9CSVRfU1RSRUFNX0hfDQorI2RlZmluZSBfSkJJRzJfQklUX1NUUkVBTV9IXw0KKyNpbmNsdWRlICJKQmlnMl9EZWZpbmUuaCINCitjbGFzcyBDSkJpZzJfQml0U3RyZWFtIDogcHVibGljIENKQmlnMl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDSkJpZzJfQml0U3RyZWFtKEZYX0JZVEUgKnBCdWZmZXIsIEZYX0RXT1JEIGR3TGVuZ3RoKTsNCisNCisgICAgQ0pCaWcyX0JpdFN0cmVhbShDSkJpZzJfQml0U3RyZWFtICZicyk7DQorDQorICAgIH5DSkJpZzJfQml0U3RyZWFtKCk7DQorDQorICAgIEZYX0lOVDMyIHJlYWROQml0cyhGWF9EV09SRCBuQml0cywgRlhfRFdPUkQgKmR3UmVzdWx0KTsNCisNCisgICAgRlhfSU5UMzIgcmVhZE5CaXRzKEZYX0RXT1JEIG5CaXRzLCBGWF9JTlQzMiAqblJlc3VsdCk7DQorDQorICAgIEZYX0lOVDMyIHJlYWQxQml0KEZYX0RXT1JEICpkd1Jlc3VsdCk7DQorDQorICAgIEZYX0lOVDMyIHJlYWQxQml0KEZYX0JPT0wgICpiUmVzdWx0KTsNCisNCisgICAgRlhfSU5UMzIgcmVhZDFCeXRlKEZYX0JZVEUgKmNSZXN1bHQpOw0KKw0KKyAgICBGWF9JTlQzMiByZWFkSW50ZWdlcihGWF9EV09SRCAqZHdSZXN1bHQpOw0KKw0KKyAgICBGWF9JTlQzMiByZWFkU2hvcnRJbnRlZ2VyKEZYX1dPUkQgKndSZXN1bHQpOw0KKw0KKyAgICB2b2lkIGFsaWduQnl0ZSgpOw0KKw0KKyAgICB2b2lkIGFsaWduNEJ5dGUoKTsNCisNCisgICAgRlhfQllURSBnZXRBdChGWF9EV09SRCBkd09mZnNldCk7DQorDQorICAgIEZYX0JZVEUgZ2V0Q3VyQnl0ZSgpOw0KKw0KKyAgICBGWF9CWVRFIGdldE5leHRCeXRlKCk7DQorDQorICAgIEZYX0lOVDMyIGluY0J5dGVJZHgoKTsNCisNCisgICAgRlhfQllURSBnZXRDdXJCeXRlX2FyaXRoKCk7DQorDQorICAgIEZYX0JZVEUgZ2V0TmV4dEJ5dGVfYXJpdGgoKTsNCisNCisgICAgRlhfRFdPUkQgZ2V0T2Zmc2V0KCk7DQorDQorICAgIHZvaWQgc2V0T2Zmc2V0KEZYX0RXT1JEIGR3T2Zmc2V0KTsNCisNCisgICAgRlhfRFdPUkQgZ2V0Qml0UG9zKCk7DQorDQorICAgIHZvaWQgc2V0Qml0UG9zKEZYX0RXT1JEIGR3Qml0UG9zKTsNCisNCisgICAgRlhfQllURSAqZ2V0QnVmKCk7DQorDQorICAgIEZYX0RXT1JEIGdldExlbmd0aCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2R3TGVuZ3RoOw0KKyAgICB9DQorDQorICAgIEZYX0JZVEUgKmdldFBvaW50ZXIoKTsNCisNCisgICAgdm9pZCBvZmZzZXQoRlhfRFdPUkQgZHdPZmZzZXQpOw0KKw0KKyAgICBGWF9EV09SRCBnZXRCeXRlTGVmdCgpOw0KK3ByaXZhdGU6DQorDQorICAgIEZYX0JZVEUgKm1fcEJ1ZjsNCisNCisgICAgRlhfRFdPUkQgbV9kd0xlbmd0aDsNCisNCisgICAgRlhfRFdPUkQgbV9kd0J5dGVJZHg7DQorDQorICAgIEZYX0RXT1JEIG1fZHdCaXRJZHg7DQorfTsNCitpbmxpbmUgQ0pCaWcyX0JpdFN0cmVhbTo6Q0pCaWcyX0JpdFN0cmVhbShGWF9CWVRFICpwQnVmZmVyLCBGWF9EV09SRCBkd0xlbmd0aCkNCit7DQorICAgIG1fcEJ1ZiA9IHBCdWZmZXI7DQorICAgIG1fZHdMZW5ndGggPSBkd0xlbmd0aDsNCisgICAgbV9kd0J5dGVJZHggPSAwOw0KKyAgICBtX2R3Qml0SWR4ICA9IDA7DQorICAgIGlmIChtX2R3TGVuZ3RoID4gMjU2ICogMTAyNCAqIDEwMjQpIHsNCisgICAgICAgIG1fZHdMZW5ndGggPSAwOw0KKyAgICAgICAgbV9wQnVmID0gTlVMTDsNCisgICAgfQ0KK30NCitpbmxpbmUgQ0pCaWcyX0JpdFN0cmVhbTo6Q0pCaWcyX0JpdFN0cmVhbShDSkJpZzJfQml0U3RyZWFtICZicykNCit7DQorICAgIG1fcEJ1ZiA9IGJzLm1fcEJ1ZjsNCisgICAgbV9kd0xlbmd0aCA9IGJzLm1fZHdMZW5ndGg7DQorICAgIG1fZHdCeXRlSWR4ID0gYnMubV9kd0J5dGVJZHg7DQorICAgIG1fZHdCaXRJZHggPSBicy5tX2R3Qml0SWR4Ow0KK30NCitpbmxpbmUgQ0pCaWcyX0JpdFN0cmVhbTo6fkNKQmlnMl9CaXRTdHJlYW0oKQ0KK3sNCit9DQoraW5saW5lIEZYX0lOVDMyIENKQmlnMl9CaXRTdHJlYW06OnJlYWROQml0cyhGWF9EV09SRCBkd0JpdHMsIEZYX0RXT1JEICpkd1Jlc3VsdCkNCit7DQorICAgIEZYX0RXT1JEIGR3VGVtcCA9IChtX2R3Qnl0ZUlkeCA8PCAzKSArIG1fZHdCaXRJZHg7DQorICAgIGlmKGR3VGVtcCA8PSAobV9kd0xlbmd0aCA8PCAzKSkgew0KKyAgICAgICAgKmR3UmVzdWx0ID0gMDsNCisgICAgICAgIGlmKGR3VGVtcCArIGR3Qml0cyA8PSAobV9kd0xlbmd0aCA8PCAzKSkgew0KKyAgICAgICAgICAgIGR3VGVtcCA9IGR3Qml0czsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZHdUZW1wID0gKG1fZHdMZW5ndGggPDwgMykgLSBkd1RlbXA7DQorICAgICAgICB9DQorICAgICAgICB3aGlsZShkd1RlbXAgPiAwKSB7DQorICAgICAgICAgICAgKmR3UmVzdWx0ID0gKCpkd1Jlc3VsdCA8PCAxKSB8ICgobV9wQnVmW21fZHdCeXRlSWR4XSA+PiAoNyAtIG1fZHdCaXRJZHgpKSAmIDB4MDEpOw0KKyAgICAgICAgICAgIGlmKG1fZHdCaXRJZHggPT0gNykgew0KKyAgICAgICAgICAgICAgICBtX2R3Qnl0ZUlkeCArKzsNCisgICAgICAgICAgICAgICAgbV9kd0JpdElkeCA9IDA7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9kd0JpdElkeCArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZHdUZW1wIC0tOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCit9DQoraW5saW5lIEZYX0lOVDMyIENKQmlnMl9CaXRTdHJlYW06OnJlYWROQml0cyhGWF9EV09SRCBkd0JpdHMsIEZYX0lOVDMyICpuUmVzdWx0KQ0KK3sNCisgICAgRlhfRFdPUkQgZHdUZW1wID0gKG1fZHdCeXRlSWR4IDw8IDMpICsgbV9kd0JpdElkeDsNCisgICAgaWYoZHdUZW1wIDw9IChtX2R3TGVuZ3RoIDw8IDMpKSB7DQorICAgICAgICAqblJlc3VsdCA9IDA7DQorICAgICAgICBpZihkd1RlbXAgKyBkd0JpdHMgPD0gKG1fZHdMZW5ndGggPDwgMykpIHsNCisgICAgICAgICAgICBkd1RlbXAgPSBkd0JpdHM7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGR3VGVtcCA9IChtX2R3TGVuZ3RoIDw8IDMpIC0gZHdUZW1wOw0KKyAgICAgICAgfQ0KKyAgICAgICAgd2hpbGUoZHdUZW1wID4gMCkgew0KKyAgICAgICAgICAgICpuUmVzdWx0ID0gKCpuUmVzdWx0IDw8IDEpIHwgKChtX3BCdWZbbV9kd0J5dGVJZHhdID4+ICg3IC0gbV9kd0JpdElkeCkpICYgMHgwMSk7DQorICAgICAgICAgICAgaWYobV9kd0JpdElkeCA9PSA3KSB7DQorICAgICAgICAgICAgICAgIG1fZHdCeXRlSWR4ICsrOw0KKyAgICAgICAgICAgICAgICBtX2R3Qml0SWR4ID0gMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBtX2R3Qml0SWR4ICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkd1RlbXAgLS07DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KK30NCisNCitpbmxpbmUgRlhfSU5UMzIgQ0pCaWcyX0JpdFN0cmVhbTo6cmVhZDFCaXQoRlhfRFdPUkQgKmR3UmVzdWx0KQ0KK3sNCisgICAgaWYobV9kd0J5dGVJZHggPCBtX2R3TGVuZ3RoKSB7DQorICAgICAgICAqZHdSZXN1bHQgPSAobV9wQnVmW21fZHdCeXRlSWR4XSA+PiAoNyAtIG1fZHdCaXRJZHgpKSAmIDB4MDE7DQorICAgICAgICBpZihtX2R3Qml0SWR4ID09IDcpIHsNCisgICAgICAgICAgICBtX2R3Qnl0ZUlkeCArKzsNCisgICAgICAgICAgICBtX2R3Qml0SWR4ID0gMDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9kd0JpdElkeCArKzsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorfQ0KKw0KK2lubGluZSBGWF9JTlQzMiBDSkJpZzJfQml0U3RyZWFtOjpyZWFkMUJpdChGWF9CT09MICpiUmVzdWx0KQ0KK3sNCisgICAgaWYobV9kd0J5dGVJZHggPCBtX2R3TGVuZ3RoKSB7DQorICAgICAgICAqYlJlc3VsdCA9IChtX3BCdWZbbV9kd0J5dGVJZHhdID4+ICg3IC0gbV9kd0JpdElkeCkpICYgMHgwMTsNCisgICAgICAgIGlmKG1fZHdCaXRJZHggPT0gNykgew0KKyAgICAgICAgICAgIG1fZHdCeXRlSWR4ICsrOw0KKyAgICAgICAgICAgIG1fZHdCaXRJZHggPSAwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX2R3Qml0SWR4ICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCit9DQoraW5saW5lIEZYX0lOVDMyIENKQmlnMl9CaXRTdHJlYW06OnJlYWQxQnl0ZShGWF9CWVRFICpjUmVzdWx0KQ0KK3sNCisgICAgaWYobV9kd0J5dGVJZHggPCBtX2R3TGVuZ3RoKSB7DQorICAgICAgICAqY1Jlc3VsdCA9IG1fcEJ1ZlttX2R3Qnl0ZUlkeF07DQorICAgICAgICBtX2R3Qnl0ZUlkeCArKzsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorfQ0KKw0KK2lubGluZSBGWF9JTlQzMiBDSkJpZzJfQml0U3RyZWFtOjpyZWFkSW50ZWdlcihGWF9EV09SRCAqZHdSZXN1bHQpDQorew0KKyAgICBpZihtX2R3Qnl0ZUlkeCArIDMgPCBtX2R3TGVuZ3RoKSB7DQorICAgICAgICAqZHdSZXN1bHQgPSAobV9wQnVmW21fZHdCeXRlSWR4XSA8PCAyNCkgfCAobV9wQnVmW21fZHdCeXRlSWR4ICsgMV0gPDwgMTYpDQorICAgICAgICAgICAgICAgICAgICB8IChtX3BCdWZbbV9kd0J5dGVJZHggKyAyXSA8PCA4KSB8IG1fcEJ1ZlttX2R3Qnl0ZUlkeCArIDNdOw0KKyAgICAgICAgbV9kd0J5dGVJZHggKz0gNDsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorfQ0KKw0KK2lubGluZSBGWF9JTlQzMiBDSkJpZzJfQml0U3RyZWFtOjpyZWFkU2hvcnRJbnRlZ2VyKEZYX1dPUkQgKmR3UmVzdWx0KQ0KK3sNCisgICAgaWYobV9kd0J5dGVJZHggKyAxIDwgbV9kd0xlbmd0aCkgew0KKyAgICAgICAgKmR3UmVzdWx0ID0gKG1fcEJ1ZlttX2R3Qnl0ZUlkeF0gPDwgOCkgfCBtX3BCdWZbbV9kd0J5dGVJZHggKyAxXTsNCisgICAgICAgIG1fZHdCeXRlSWR4ICs9IDI7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KK30NCitpbmxpbmUgdm9pZCBDSkJpZzJfQml0U3RyZWFtOjphbGlnbkJ5dGUoKQ0KK3sNCisgICAgaWYobV9kd0JpdElkeCAhPSAwKSB7DQorICAgICAgICBtX2R3Qnl0ZUlkeCArKzsNCisgICAgICAgIG1fZHdCaXRJZHggPSAwOw0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIENKQmlnMl9CaXRTdHJlYW06OmFsaWduNEJ5dGUoKQ0KK3sNCisgICAgaWYobV9kd0JpdElkeCAhPSAwKSB7DQorICAgICAgICBtX2R3Qnl0ZUlkeCArKzsNCisgICAgICAgIG1fZHdCaXRJZHggPSAwOw0KKyAgICB9DQorICAgIG1fZHdCeXRlSWR4ID0gKG1fZHdCeXRlSWR4ICsgMykgJiAtNDsNCit9DQoraW5saW5lIEZYX0JZVEUgQ0pCaWcyX0JpdFN0cmVhbTo6Z2V0QXQoRlhfRFdPUkQgZHdPZmZzZXQpDQorew0KKyAgICBpZihkd09mZnNldCA8IG1fZHdMZW5ndGgpIHsNCisgICAgICAgIHJldHVybiBtX3BCdWZbZHdPZmZzZXRdOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCit9DQoraW5saW5lIEZYX0JZVEUgQ0pCaWcyX0JpdFN0cmVhbTo6Z2V0Q3VyQnl0ZSgpDQorew0KKyAgICBpZihtX2R3Qnl0ZUlkeCA8IG1fZHdMZW5ndGgpIHsNCisgICAgICAgIHJldHVybiBtX3BCdWZbbV9kd0J5dGVJZHhdOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCit9DQoraW5saW5lIEZYX0JZVEUgQ0pCaWcyX0JpdFN0cmVhbTo6Z2V0TmV4dEJ5dGUoKQ0KK3sNCisgICAgaWYobV9kd0J5dGVJZHggKyAxIDwgbV9kd0xlbmd0aCkgew0KKyAgICAgICAgcmV0dXJuIG1fcEJ1ZlttX2R3Qnl0ZUlkeCArIDFdOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCit9DQoraW5saW5lIEZYX0lOVDMyIENKQmlnMl9CaXRTdHJlYW06OmluY0J5dGVJZHgoKQ0KK3sNCisgICAgaWYobV9kd0J5dGVJZHggPCBtX2R3TGVuZ3RoKSB7DQorICAgICAgICBtX2R3Qnl0ZUlkeCArKzsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorfQ0KK2lubGluZSBGWF9CWVRFIENKQmlnMl9CaXRTdHJlYW06OmdldEN1ckJ5dGVfYXJpdGgoKQ0KK3sNCisgICAgaWYobV9kd0J5dGVJZHggPCBtX2R3TGVuZ3RoKSB7DQorICAgICAgICByZXR1cm4gbV9wQnVmW21fZHdCeXRlSWR4XTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiAweGZmOw0KKyAgICB9DQorfQ0KK2lubGluZSBGWF9CWVRFIENKQmlnMl9CaXRTdHJlYW06OmdldE5leHRCeXRlX2FyaXRoKCkNCit7DQorICAgIGlmKG1fZHdCeXRlSWR4ICsgMSA8IG1fZHdMZW5ndGgpIHsNCisgICAgICAgIHJldHVybiBtX3BCdWZbbV9kd0J5dGVJZHggKyAxXTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiAweGZmOw0KKyAgICB9DQorfQ0KK2lubGluZSBGWF9EV09SRCBDSkJpZzJfQml0U3RyZWFtOjpnZXRPZmZzZXQoKQ0KK3sNCisgICAgcmV0dXJuIG1fZHdCeXRlSWR4Ow0KK30NCitpbmxpbmUgdm9pZCBDSkJpZzJfQml0U3RyZWFtOjpzZXRPZmZzZXQoRlhfRFdPUkQgZHdPZmZzZXQpDQorew0KKyAgICBpZiAoZHdPZmZzZXQgPiBtX2R3TGVuZ3RoKSB7DQorICAgICAgICBkd09mZnNldCA9IG1fZHdMZW5ndGg7DQorICAgIH0NCisgICAgbV9kd0J5dGVJZHggPSBkd09mZnNldDsNCit9DQoraW5saW5lIEZYX0RXT1JEIENKQmlnMl9CaXRTdHJlYW06OmdldEJpdFBvcygpDQorew0KKyAgICByZXR1cm4gKG1fZHdCeXRlSWR4IDw8IDMpICsgbV9kd0JpdElkeDsNCit9DQoraW5saW5lIHZvaWQgQ0pCaWcyX0JpdFN0cmVhbTo6c2V0Qml0UG9zKEZYX0RXT1JEIGR3Qml0UG9zKQ0KK3sNCisgICAgbV9kd0J5dGVJZHggPSBkd0JpdFBvcyA+PiAzOw0KKyAgICBtX2R3Qml0SWR4ID0gZHdCaXRQb3MgJiA3Ow0KK30NCitpbmxpbmUgRlhfQllURSAqQ0pCaWcyX0JpdFN0cmVhbTo6Z2V0QnVmKCkNCit7DQorICAgIHJldHVybiBtX3BCdWY7DQorfQ0KK2lubGluZSBGWF9CWVRFICpDSkJpZzJfQml0U3RyZWFtOjpnZXRQb2ludGVyKCkNCit7DQorICAgIHJldHVybiBtX3BCdWYgKyBtX2R3Qnl0ZUlkeDsNCit9DQoraW5saW5lIHZvaWQgQ0pCaWcyX0JpdFN0cmVhbTo6b2Zmc2V0KEZYX0RXT1JEIGR3T2Zmc2V0KQ0KK3sNCisgICAgbV9kd0J5dGVJZHggKz0gZHdPZmZzZXQ7DQorfQ0KK2lubGluZSBGWF9EV09SRCBDSkJpZzJfQml0U3RyZWFtOjpnZXRCeXRlTGVmdCgpDQorew0KKyAgICByZXR1cm4gbV9kd0xlbmd0aCAtIG1fZHdCeXRlSWR4Ow0KK30NCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0NvbnRleHQuY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9Db250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTZjMGMzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9Db250ZXh0LmNwcApAQCAtMCwwICsxLDE4MTIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICJKQmlnMl9Db250ZXh0LmgiDQordm9pZCBPdXRwdXRCaXRtYXAoQ0pCaWcyX0ltYWdlKiBwSW1hZ2UpDQorew0KKyAgICBpZighcEltYWdlKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCit9DQorQ0pCaWcyX0NvbnRleHQgKkNKQmlnMl9Db250ZXh0OjpDcmVhdGVDb250ZXh0KENKQmlnMl9Nb2R1bGUgKnBNb2R1bGUsIEZYX0JZVEUgKnBHbG9iYWxEYXRhLCBGWF9EV09SRCBkd0dsb2JhbExlbmd0aCwNCisgICAgICAgIEZYX0JZVEUgKnBEYXRhLCBGWF9EV09SRCBkd0xlbmd0aCwgRlhfSU5UMzIgblN0cmVhbVR5cGUsIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgcmV0dXJuIG5ldyhwTW9kdWxlKSBDSkJpZzJfQ29udGV4dChwR2xvYmFsRGF0YSwgZHdHbG9iYWxMZW5ndGgsIHBEYXRhLCBkd0xlbmd0aCwgblN0cmVhbVR5cGUsIHBQYXVzZSk7DQorfQ0KK3ZvaWQgQ0pCaWcyX0NvbnRleHQ6OkRlc3Ryb3lDb250ZXh0KENKQmlnMl9Db250ZXh0ICpwQ29udGV4dCkNCit7DQorICAgIGlmKHBDb250ZXh0KSB7DQorICAgICAgICBkZWxldGUgcENvbnRleHQ7DQorICAgIH0NCit9DQorQ0pCaWcyX0NvbnRleHQ6OkNKQmlnMl9Db250ZXh0KEZYX0JZVEUgKnBHbG9iYWxEYXRhLCBGWF9EV09SRCBkd0dsb2JhbExlbmd0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSAqcERhdGEsIEZYX0RXT1JEIGR3TGVuZ3RoLCBGWF9JTlQzMiBuU3RyZWFtVHlwZSwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZihwR2xvYmFsRGF0YSAmJiAoZHdHbG9iYWxMZW5ndGggPiAwKSkgew0KKyAgICAgICAgSkJJRzJfQUxMT0MobV9wR2xvYmFsQ29udGV4dCwgQ0pCaWcyX0NvbnRleHQoTlVMTCwgMCwgcEdsb2JhbERhdGEsIGR3R2xvYmFsTGVuZ3RoLA0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfRU1CRURfU1RSRUFNLCBwUGF1c2UpKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcEdsb2JhbENvbnRleHQgPSBOVUxMOw0KKyAgICB9DQorICAgIEpCSUcyX0FMTE9DKG1fcFN0cmVhbSwgQ0pCaWcyX0JpdFN0cmVhbShwRGF0YSwgZHdMZW5ndGgpKTsNCisgICAgbV9uU3RyZWFtVHlwZSA9IG5TdHJlYW1UeXBlOw0KKyAgICBtX25TdGF0ZSA9IEpCSUcyX09VVF9PRl9QQUdFOw0KKyAgICBKQklHMl9BTExPQyhtX3BTZWdtZW50TGlzdCwgQ0pCaWcyX0xpc3Q8Q0pCaWcyX1NlZ21lbnQ+KTsNCisgICAgSkJJRzJfQUxMT0MobV9wUGFnZUluZm9MaXN0LCBDSkJpZzJfTGlzdDxKQmlnMlBhZ2VJbmZvPigxKSk7DQorICAgIG1fcFBhZ2UgPSBOVUxMOw0KKyAgICBtX2JCdWZTcGVjaWZpZWQgPSBGQUxTRTsNCisgICAgbV9wUGF1c2UgPSBwUGF1c2U7DQorICAgIG1fblNlZ21lbnREZWNvZGVkID0gMDsNCisgICAgbV9QYXVzZVN0ZXAgPSAxMDsNCisgICAgbV9wQXJpdGhEZWNvZGVyID0gTlVMTDsNCisgICAgbV9wR1JEID0gTlVMTDsNCisgICAgbV9nYkNvbnRleHQgPSBOVUxMOw0KKyAgICBtX3BTZWdtZW50ID0gTlVMTDsNCisgICAgbV9kd09mZnNldCA9IDA7DQorICAgIG1fUHJvY2Vzc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0ZSQU1FX1JFQURZOw0KK30NCitDSkJpZzJfQ29udGV4dDo6fkNKQmlnMl9Db250ZXh0KCkNCit7DQorICAgIGlmKG1fcEFyaXRoRGVjb2Rlcikgew0KKyAgICAgICAgZGVsZXRlIG1fcEFyaXRoRGVjb2RlcjsNCisgICAgfQ0KKyAgICBtX3BBcml0aERlY29kZXIgPSBOVUxMOw0KKyAgICBpZihtX3BHUkQpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BHUkQ7DQorICAgIH0NCisgICAgbV9wR1JEID0gTlVMTDsNCisgICAgaWYobV9nYkNvbnRleHQpIHsNCisgICAgICAgIGRlbGV0ZSBtX2diQ29udGV4dDsNCisgICAgfQ0KKyAgICBtX2diQ29udGV4dCA9IE5VTEw7DQorICAgIGlmKG1fcEdsb2JhbENvbnRleHQpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BHbG9iYWxDb250ZXh0Ow0KKyAgICB9DQorICAgIG1fcEdsb2JhbENvbnRleHQgPSBOVUxMOw0KKyAgICBpZihtX3BQYWdlSW5mb0xpc3QpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BQYWdlSW5mb0xpc3Q7DQorICAgIH0NCisgICAgbV9wUGFnZUluZm9MaXN0ID0gTlVMTDsNCisgICAgaWYobV9iQnVmU3BlY2lmaWVkICYmIG1fcFBhZ2UpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BQYWdlOw0KKyAgICB9DQorICAgIG1fcFBhZ2UgPSBOVUxMOw0KKyAgICBpZihtX3BTdHJlYW0pIHsNCisgICAgICAgIGRlbGV0ZSBtX3BTdHJlYW07DQorICAgIH0NCisgICAgbV9wU3RyZWFtID0gTlVMTDsNCisgICAgaWYobV9wU2VnbWVudExpc3QpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BTZWdtZW50TGlzdDsNCisgICAgfQ0KKyAgICBtX3BTZWdtZW50TGlzdCA9IE5VTEw7DQorfQ0KK0ZYX0lOVDMyIENKQmlnMl9Db250ZXh0OjpkZWNvZGVGaWxlKElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhfQllURSBjRmxhZ3M7DQorICAgIEZYX0RXT1JEIGR3VGVtcDsNCisgICAgY29uc3QgRlhfQllURSBmaWxlSURbXSA9IHsweDk3LCAweDRBLCAweDQyLCAweDMyLCAweDBELCAweDBBLCAweDFBLCAweDBBfTsNCisgICAgRlhfSU5UMzIgblJldDsNCisgICAgaWYobV9wU3RyZWFtLT5nZXRCeXRlTGVmdCgpIDwgOCkgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiZmlsZSBoZWFkZXIgdG9vIHNob3J0LiIpOw0KKyAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX1RPT19TSE9SVDsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIGlmKEpCSUcyX21lbWNtcChtX3BTdHJlYW0tPmdldFBvaW50ZXIoKSwgZmlsZUlELCA4KSAhPSAwKSB7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJub3QgamJpZzIgZmlsZSIpOw0KKyAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZJTEVfRk9STUFUOw0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgbV9wU3RyZWFtLT5vZmZzZXQoOCk7DQorICAgIGlmKG1fcFN0cmVhbS0+cmVhZDFCeXRlKCZjRmxhZ3MpICE9IDApIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoImZpbGUgaGVhZGVyIHRvbyBzaG9ydC4iKTsNCisgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9UT09fU0hPUlQ7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBpZighKGNGbGFncyAmIDB4MDIpKSB7DQorICAgICAgICBpZihtX3BTdHJlYW0tPnJlYWRJbnRlZ2VyKCZkd1RlbXApICE9IDApIHsNCisgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJmaWxlIGhlYWRlciB0b28gc2hvcnQuIik7DQorICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX1RPT19TSE9SVDsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKGR3VGVtcCA+IDApIHsNCisgICAgICAgICAgICBkZWxldGUgbV9wUGFnZUluZm9MaXN0Ow0KKyAgICAgICAgICAgIEpCSUcyX0FMTE9DKG1fcFBhZ2VJbmZvTGlzdCwgQ0pCaWcyX0xpc3Q8SkJpZzJQYWdlSW5mbz4oZHdUZW1wKSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoY0ZsYWdzICYgMHgwMSkgew0KKyAgICAgICAgbV9uU3RyZWFtVHlwZSA9IEpCSUcyX1NRVUVOVElBTF9TVFJFQU07DQorICAgICAgICByZXR1cm4gZGVjb2RlX1NxdWVudGlhbE9yZ25hemF0aW9uKHBQYXVzZSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX25TdHJlYW1UeXBlID0gSkJJRzJfUkFORE9NX1NUUkVBTTsNCisgICAgICAgIHJldHVybiBkZWNvZGVfUmFuZG9tT3JnbmF6YXRpb25fRmlyc3RQYWdlKHBQYXVzZSk7DQorICAgIH0NCitmYWlsZWQ6DQorICAgIHJldHVybiBuUmV0Ow0KK30NCitGWF9JTlQzMiBDSkJpZzJfQ29udGV4dDo6ZGVjb2RlX1NxdWVudGlhbE9yZ25hemF0aW9uKElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhfSU5UMzIgblJldDsNCisgICAgaWYobV9wU3RyZWFtLT5nZXRCeXRlTGVmdCgpID4gMCkgew0KKyAgICAgICAgd2hpbGUobV9wU3RyZWFtLT5nZXRCeXRlTGVmdCgpID49IEpCSUcyX01JTl9TRUdNRU5UX1NJWkUpIHsNCisgICAgICAgICAgICBpZihtX3BTZWdtZW50ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MobV9wU2VnbWVudCwgQ0pCaWcyX1NlZ21lbnQoKSk7DQorICAgICAgICAgICAgICAgIG5SZXQgPSBwYXJzZVNlZ21lbnRIZWFkZXIobV9wU2VnbWVudCk7DQorICAgICAgICAgICAgICAgIGlmKG5SZXQgIT0gSkJJRzJfU1VDQ0VTUykgew0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG1fcFNlZ21lbnQ7DQorICAgICAgICAgICAgICAgICAgICBtX3BTZWdtZW50ID0gTlVMTDsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuUmV0Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fZHdPZmZzZXQgPSBtX3BTdHJlYW0tPmdldE9mZnNldCgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBuUmV0ID0gcGFyc2VTZWdtZW50RGF0YShtX3BTZWdtZW50LCBwUGF1c2UpOw0KKyAgICAgICAgICAgIGlmKG1fUHJvY2Vzc2l2ZVN0YXR1cyAgPT0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRSkgew0KKyAgICAgICAgICAgICAgICBtX1Byb2Nlc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgICAgICAgICBtX1BhdXNlU3RlcCA9IDI7DQorICAgICAgICAgICAgICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZigoblJldCA9PSBKQklHMl9FTkRfT0ZfUEFHRSkgfHwgKG5SZXQgPT0gSkJJRzJfRU5EX09GX0ZJTEUpKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBtX3BTZWdtZW50Ow0KKyAgICAgICAgICAgICAgICBtX3BTZWdtZW50ID0gTlVMTDsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfSBlbHNlIGlmKG5SZXQgIT0gSkJJRzJfU1VDQ0VTUykgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgbV9wU2VnbWVudDsNCisgICAgICAgICAgICAgICAgbV9wU2VnbWVudCA9IE5VTEw7DQorICAgICAgICAgICAgICAgIHJldHVybiBuUmV0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX3BTZWdtZW50TGlzdC0+YWRkSXRlbShtX3BTZWdtZW50KTsNCisgICAgICAgICAgICBpZihtX3BTZWdtZW50LT5tX2R3RGF0YV9sZW5ndGggIT0gMHhmZmZmZmZmZikgew0KKyAgICAgICAgICAgICAgICBtX2R3T2Zmc2V0ID0gbV9kd09mZnNldCArIG1fcFNlZ21lbnQtPm1fZHdEYXRhX2xlbmd0aDsNCisgICAgICAgICAgICAgICAgbV9wU3RyZWFtLT5zZXRPZmZzZXQobV9kd09mZnNldCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9wU3RyZWFtLT5vZmZzZXQoNCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIE91dHB1dEJpdG1hcChtX3BQYWdlKTsNCisgICAgICAgICAgICBtX3BTZWdtZW50ID0gTlVMTDsNCisgICAgICAgICAgICBpZihtX3BTdHJlYW0tPmdldEJ5dGVMZWZ0KCkgPiAwICYmIG1fcFBhZ2UgJiYgcFBhdXNlICYmIHBQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgew0KKyAgICAgICAgICAgICAgICBtX1Byb2Nlc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgICAgICAgICBtX1BhdXNlU3RlcCA9IDI7DQorICAgICAgICAgICAgICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiBKQklHMl9FTkRfT0ZfRklMRTsNCisgICAgfQ0KKyAgICByZXR1cm4gSkJJRzJfU1VDQ0VTUzsNCit9DQorRlhfSU5UMzIgQ0pCaWcyX0NvbnRleHQ6OmRlY29kZV9FbWJlZE9yZ25hemF0aW9uKElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgcmV0dXJuIGRlY29kZV9TcXVlbnRpYWxPcmduYXphdGlvbihwUGF1c2UpOw0KK30NCitGWF9JTlQzMiBDSkJpZzJfQ29udGV4dDo6ZGVjb2RlX1JhbmRvbU9yZ25hemF0aW9uX0ZpcnN0UGFnZShJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIENKQmlnMl9TZWdtZW50ICpwU2VnbWVudDsNCisgICAgRlhfSU5UMzIgblJldDsNCisgICAgd2hpbGUobV9wU3RyZWFtLT5nZXRCeXRlTGVmdCgpID4gSkJJRzJfTUlOX1NFR01FTlRfU0laRSkgew0KKyAgICAgICAgSkJJRzJfQUxMT0MocFNlZ21lbnQsIENKQmlnMl9TZWdtZW50KCkpOw0KKyAgICAgICAgblJldCA9IHBhcnNlU2VnbWVudEhlYWRlcihwU2VnbWVudCk7DQorICAgICAgICBpZihuUmV0ICE9IEpCSUcyX1NVQ0NFU1MpIHsNCisgICAgICAgICAgICBkZWxldGUgcFNlZ21lbnQ7DQorICAgICAgICAgICAgcmV0dXJuIG5SZXQ7DQorICAgICAgICB9IGVsc2UgaWYocFNlZ21lbnQtPm1fY0ZsYWdzLnMudHlwZSA9PSA1MSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwU2VnbWVudDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFNlZ21lbnRMaXN0LT5hZGRJdGVtKHBTZWdtZW50KTsNCisgICAgICAgIGlmKHBQYXVzZSAmJiBtX3BQYXVzZSAmJiBwUGF1c2UtPk5lZWRUb1BhdXNlTm93KCkpIHsNCisgICAgICAgICAgICBtX1BhdXNlU3RlcCA9IDM7DQorICAgICAgICAgICAgbV9Qcm9jZXNzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRTsNCisgICAgICAgICAgICByZXR1cm4gSkJJRzJfU1VDQ0VTUzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX25TZWdtZW50RGVjb2RlZCA9IDA7DQorICAgIHJldHVybiBkZWNvZGVfUmFuZG9tT3JnbmF6YXRpb24ocFBhdXNlKTsNCit9DQorRlhfSU5UMzIgQ0pCaWcyX0NvbnRleHQ6OmRlY29kZV9SYW5kb21PcmduYXphdGlvbihJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIEZYX0lOVDMyIG5SZXQ7DQorICAgIGZvcig7IG1fblNlZ21lbnREZWNvZGVkIDwgbV9wU2VnbWVudExpc3QtPmdldExlbmd0aCgpOyBtX25TZWdtZW50RGVjb2RlZCsrKSB7DQorICAgICAgICBuUmV0ID0gcGFyc2VTZWdtZW50RGF0YShtX3BTZWdtZW50TGlzdC0+Z2V0QXQobV9uU2VnbWVudERlY29kZWQpLCBwUGF1c2UpOw0KKyAgICAgICAgaWYoKG5SZXQgPT0gSkJJRzJfRU5EX09GX1BBR0UpIHx8IChuUmV0ID09IEpCSUcyX0VORF9PRl9GSUxFKSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfSBlbHNlIGlmKG5SZXQgIT0gSkJJRzJfU1VDQ0VTUykgew0KKyAgICAgICAgICAgIHJldHVybiBuUmV0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYobV9wUGFnZSAmJiBwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgbV9QYXVzZVN0ZXAgPSA0Ow0KKyAgICAgICAgICAgIG1fUHJvY2Vzc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUU7DQorICAgICAgICAgICAgcmV0dXJuIEpCSUcyX1NVQ0NFU1M7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEpCSUcyX1NVQ0NFU1M7DQorfQ0KK0ZYX0lOVDMyIENKQmlnMl9Db250ZXh0OjpnZXRGaXJzdFBhZ2UoRlhfQllURSAqcEJ1ZiwgRlhfSU5UMzIgd2lkdGgsIEZYX0lOVDMyIGhlaWdodCwgRlhfSU5UMzIgc3RyaWRlLCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIEZYX0lOVDMyIG5SZXQgPSAwOw0KKyAgICBpZihtX3BHbG9iYWxDb250ZXh0KSB7DQorICAgICAgICBuUmV0ID0gbV9wR2xvYmFsQ29udGV4dC0+ZGVjb2RlX0VtYmVkT3JnbmF6YXRpb24ocFBhdXNlKTsNCisgICAgICAgIGlmKG5SZXQgIT0gSkJJRzJfU1VDQ0VTUykgew0KKyAgICAgICAgICAgIG1fUHJvY2Vzc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0VSUk9SOw0KKyAgICAgICAgICAgIHJldHVybiBuUmV0Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fYkZpcnN0UGFnZSA9IFRSVUU7DQorICAgIG1fUGF1c2VTdGVwID0gMDsNCisgICAgaWYobV9wUGFnZSkgew0KKyAgICAgICAgZGVsZXRlIG1fcFBhZ2U7DQorICAgIH0NCisgICAgSkJJRzJfQUxMT0MobV9wUGFnZSwgQ0pCaWcyX0ltYWdlKHdpZHRoLCBoZWlnaHQsIHN0cmlkZSwgcEJ1ZikpOw0KKyAgICBtX2JCdWZTcGVjaWZpZWQgPSBUUlVFOw0KKyAgICBpZihtX3BQYWdlICYmIHBQYXVzZSAmJiBwUGF1c2UtPk5lZWRUb1BhdXNlTm93KCkpIHsNCisgICAgICAgIG1fUGF1c2VTdGVwID0gMTsNCisgICAgICAgIG1fUHJvY2Vzc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUU7DQorICAgICAgICByZXR1cm4gblJldDsNCisgICAgfQ0KKyAgICBpbnQgcmV0ID0gQ29udGludWUocFBhdXNlKTsNCisgICAgcmV0dXJuIHJldDsNCit9DQorRlhfSU5UMzIgQ0pCaWcyX0NvbnRleHQ6OkNvbnRpbnVlKElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgbV9Qcm9jZXNzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1JFQURZOw0KKyAgICBGWF9JTlQzMiBuUmV0Ow0KKyAgICBpZihtX1BhdXNlU3RlcCA8PSAxKSB7DQorICAgICAgICBzd2l0Y2gobV9uU3RyZWFtVHlwZSkgew0KKyAgICAgICAgICAgIGNhc2UgSkJJRzJfRklMRV9TVFJFQU06DQorICAgICAgICAgICAgICAgIG5SZXQgPSBkZWNvZGVGaWxlKHBQYXVzZSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgSkJJRzJfU1FVRU5USUFMX1NUUkVBTToNCisgICAgICAgICAgICAgICAgblJldCA9IGRlY29kZV9TcXVlbnRpYWxPcmduYXphdGlvbihwUGF1c2UpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEpCSUcyX1JBTkRPTV9TVFJFQU06DQorICAgICAgICAgICAgICAgIGlmKG1fYkZpcnN0UGFnZSkgew0KKyAgICAgICAgICAgICAgICAgICAgblJldCA9IGRlY29kZV9SYW5kb21PcmduYXphdGlvbl9GaXJzdFBhZ2UocFBhdXNlKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG5SZXQgPSBkZWNvZGVfUmFuZG9tT3JnbmF6YXRpb24ocFBhdXNlKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEpCSUcyX0VNQkVEX1NUUkVBTToNCisgICAgICAgICAgICAgICAgblJldCA9IGRlY29kZV9FbWJlZE9yZ25hemF0aW9uKHBQYXVzZSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgIG1fUHJvY2Vzc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0VSUk9SOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gSkJJRzJfRVJST1JfU1RSRUFNX1RZUEU7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZihtX1BhdXNlU3RlcCA9PSAyKSB7DQorICAgICAgICBuUmV0ID0gZGVjb2RlX1NxdWVudGlhbE9yZ25hemF0aW9uKHBQYXVzZSk7DQorICAgIH0gZWxzZSBpZihtX1BhdXNlU3RlcCA9PSAzKSB7DQorICAgICAgICBuUmV0ID0gZGVjb2RlX1JhbmRvbU9yZ25hemF0aW9uX0ZpcnN0UGFnZShwUGF1c2UpOw0KKyAgICB9IGVsc2UgaWYobV9QYXVzZVN0ZXAgPT0gNCkgew0KKyAgICAgICAgblJldCA9IGRlY29kZV9SYW5kb21PcmduYXphdGlvbihwUGF1c2UpOw0KKyAgICB9IGVsc2UgaWYobV9QYXVzZVN0ZXAgPT0gNSkgew0KKyAgICAgICAgbV9Qcm9jZXNzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCisgICAgICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KKyAgICB9DQorICAgIGlmKG1fUHJvY2Vzc2l2ZVN0YXR1cyA9PSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFKSB7DQorICAgICAgICByZXR1cm4gblJldDsNCisgICAgfQ0KKyAgICBtX1BhdXNlU3RlcCA9IDU7DQorICAgIGlmKCFtX2JCdWZTcGVjaWZpZWQgJiYgblJldCA9PSBKQklHMl9TVUNDRVNTKSB7DQorICAgICAgICBtX1Byb2Nlc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KKyAgICAgICAgcmV0dXJuIEpCSUcyX1NVQ0NFU1M7DQorICAgIH0NCisgICAgaWYoblJldCA9PSBKQklHMl9TVUNDRVNTKSB7DQorICAgICAgICBtX1Byb2Nlc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9Qcm9jZXNzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfRVJST1I7DQorICAgIH0NCisgICAgcmV0dXJuIG5SZXQ7DQorfQ0KK0ZYX0lOVDMyIENKQmlnMl9Db250ZXh0OjpnZXROZXh0UGFnZShGWF9CWVRFICpwQnVmLCBGWF9JTlQzMiB3aWR0aCwgRlhfSU5UMzIgaGVpZ2h0LCBGWF9JTlQzMiBzdHJpZGUsIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhfSU5UMzIgblJldCA9IEpCSUcyX0VSUk9SX1NUUkVBTV9UWVBFOw0KKyAgICBtX2JGaXJzdFBhZ2UgPSBGQUxTRTsNCisgICAgbV9QYXVzZVN0ZXAgPSAwOw0KKyAgICBpZihtX3BQYWdlKSB7DQorICAgICAgICBkZWxldGUgbV9wUGFnZTsNCisgICAgfQ0KKyAgICBKQklHMl9BTExPQyhtX3BQYWdlLCBDSkJpZzJfSW1hZ2Uod2lkdGgsIGhlaWdodCwgc3RyaWRlLCBwQnVmKSk7DQorICAgIG1fYkJ1ZlNwZWNpZmllZCA9IFRSVUU7DQorICAgIGlmKG1fcFBhZ2UgJiYgcFBhdXNlICYmIHBQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgew0KKyAgICAgICAgbV9QYXVzZVN0ZXAgPSAxOw0KKyAgICAgICAgbV9Qcm9jZXNzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRTsNCisgICAgICAgIHJldHVybiBuUmV0Ow0KKyAgICB9DQorICAgIHJldHVybiBDb250aW51ZShwUGF1c2UpOw0KKyAgICBzd2l0Y2gobV9uU3RyZWFtVHlwZSkgew0KKyAgICAgICAgY2FzZSBKQklHMl9GSUxFX1NUUkVBTToNCisgICAgICAgICAgICBuUmV0ID0gZGVjb2RlRmlsZShwUGF1c2UpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBKQklHMl9TUVVFTlRJQUxfU1RSRUFNOg0KKyAgICAgICAgICAgIG5SZXQgPSBkZWNvZGVfU3F1ZW50aWFsT3JnbmF6YXRpb24ocFBhdXNlKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgSkJJRzJfUkFORE9NX1NUUkVBTToNCisgICAgICAgICAgICBuUmV0ID0gZGVjb2RlX1JhbmRvbU9yZ25hemF0aW9uKHBQYXVzZSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEpCSUcyX0VNQkVEX1NUUkVBTToNCisgICAgICAgICAgICBuUmV0ID0gZGVjb2RlX0VtYmVkT3JnbmF6YXRpb24ocFBhdXNlKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgcmV0dXJuIEpCSUcyX0VSUk9SX1NUUkVBTV9UWVBFOw0KKyAgICB9DQorICAgIHJldHVybiBuUmV0Ow0KK30NCitGWF9JTlQzMiBDSkJpZzJfQ29udGV4dDo6Z2V0Rmlyc3RQYWdlKENKQmlnMl9JbWFnZSAqKmltYWdlLCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIEZYX0lOVDMyIG5SZXQ7DQorICAgIG1fYkZpcnN0UGFnZSA9IFRSVUU7DQorICAgIG1fUGF1c2VTdGVwID0gMDsNCisgICAgaWYobV9wR2xvYmFsQ29udGV4dCkgew0KKyAgICAgICAgblJldCA9IG1fcEdsb2JhbENvbnRleHQtPmRlY29kZV9FbWJlZE9yZ25hemF0aW9uKHBQYXVzZSk7DQorICAgICAgICBpZihuUmV0ICE9IEpCSUcyX1NVQ0NFU1MpIHsNCisgICAgICAgICAgICByZXR1cm4gblJldDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX2JCdWZTcGVjaWZpZWQgPSBGQUxTRTsNCisgICAgcmV0dXJuIENvbnRpbnVlKHBQYXVzZSk7DQorfQ0KK0ZYX0lOVDMyIENKQmlnMl9Db250ZXh0OjpnZXROZXh0UGFnZShDSkJpZzJfSW1hZ2UgKippbWFnZSwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9JTlQzMiBuUmV0Ow0KKyAgICBtX2JCdWZTcGVjaWZpZWQgPSBGQUxTRTsNCisgICAgbV9iRmlyc3RQYWdlID0gRkFMU0U7DQorICAgIG1fUGF1c2VTdGVwID0gMDsNCisgICAgc3dpdGNoKG1fblN0cmVhbVR5cGUpIHsNCisgICAgICAgIGNhc2UgSkJJRzJfRklMRV9TVFJFQU06DQorICAgICAgICAgICAgblJldCA9IGRlY29kZUZpbGUocFBhdXNlKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgSkJJRzJfU1FVRU5USUFMX1NUUkVBTToNCisgICAgICAgICAgICBuUmV0ID0gZGVjb2RlX1NxdWVudGlhbE9yZ25hemF0aW9uKHBQYXVzZSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEpCSUcyX1JBTkRPTV9TVFJFQU06DQorICAgICAgICAgICAgblJldCA9IGRlY29kZV9SYW5kb21PcmduYXphdGlvbihwUGF1c2UpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBKQklHMl9FTUJFRF9TVFJFQU06DQorICAgICAgICAgICAgblJldCA9IGRlY29kZV9FbWJlZE9yZ25hemF0aW9uKHBQYXVzZSk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIHJldHVybiBKQklHMl9FUlJPUl9TVFJFQU1fVFlQRTsNCisgICAgfQ0KKyAgICBpZihuUmV0ID09IEpCSUcyX1NVQ0NFU1MpIHsNCisgICAgICAgICppbWFnZSA9IG1fcFBhZ2U7DQorICAgICAgICBtX3BQYWdlID0gTlVMTDsNCisgICAgICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KKyAgICB9DQorICAgIHJldHVybiBuUmV0Ow0KK30NCitDSkJpZzJfU2VnbWVudCAqQ0pCaWcyX0NvbnRleHQ6OmZpbmRTZWdtZW50QnlOdW1iZXIoRlhfRFdPUkQgZHdOdW1iZXIpDQorew0KKyAgICBDSkJpZzJfU2VnbWVudCAqcFNlZzsNCisgICAgRlhfSU5UMzIgaTsNCisgICAgaWYobV9wR2xvYmFsQ29udGV4dCkgew0KKyAgICAgICAgcFNlZyA9IG1fcEdsb2JhbENvbnRleHQtPmZpbmRTZWdtZW50QnlOdW1iZXIoZHdOdW1iZXIpOw0KKyAgICAgICAgaWYocFNlZykgew0KKyAgICAgICAgICAgIHJldHVybiBwU2VnOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGZvcihpID0gMDsgaSA8IG1fcFNlZ21lbnRMaXN0LT5nZXRMZW5ndGgoKTsgaSsrKSB7DQorICAgICAgICBwU2VnID0gbV9wU2VnbWVudExpc3QtPmdldEF0KGkpOw0KKyAgICAgICAgaWYocFNlZy0+bV9kd051bWJlciA9PSBkd051bWJlcikgew0KKyAgICAgICAgICAgIHJldHVybiBwU2VnOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDSkJpZzJfU2VnbWVudCAqQ0pCaWcyX0NvbnRleHQ6OmZpbmRSZWZlcnJlZFNlZ21lbnRCeVR5cGVBbmRJbmRleChDSkJpZzJfU2VnbWVudCAqcFNlZ21lbnQsDQorICAgICAgICBGWF9CWVRFIGNUeXBlLCBGWF9JTlQzMiBuSW5kZXgpDQorew0KKyAgICBDSkJpZzJfU2VnbWVudCAqcFNlZzsNCisgICAgRlhfSU5UMzIgaSwgY291bnQ7DQorICAgIGNvdW50ID0gMDsNCisgICAgZm9yKGkgPSAwOyBpIDwgcFNlZ21lbnQtPm1fblJlZmVycmVkX3RvX3NlZ21lbnRfY291bnQ7IGkrKykgew0KKyAgICAgICAgcFNlZyA9IGZpbmRTZWdtZW50QnlOdW1iZXIocFNlZ21lbnQtPm1fcFJlZmVycmVkX3RvX3NlZ21lbnRfbnVtYmVyc1tpXSk7DQorICAgICAgICBpZihwU2VnICYmIHBTZWctPm1fY0ZsYWdzLnMudHlwZSA9PSBjVHlwZSkgew0KKyAgICAgICAgICAgIGlmKGNvdW50ID09IG5JbmRleCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcFNlZzsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBjb3VudCArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0ZYX0lOVDMyIENKQmlnMl9Db250ZXh0OjpwYXJzZVNlZ21lbnRIZWFkZXIoQ0pCaWcyX1NlZ21lbnQgKnBTZWdtZW50KQ0KK3sNCisgICAgRlhfQllURSAgY1NTaXplLCBjUFNpemU7DQorICAgIEZYX0JZVEUgY1RlbXA7DQorICAgIEZYX1dPUkQgd1RlbXA7DQorICAgIEZYX0RXT1JEIGR3VGVtcDsNCisgICAgaWYoKG1fcFN0cmVhbS0+cmVhZEludGVnZXIoJnBTZWdtZW50LT5tX2R3TnVtYmVyKSAhPSAwKQ0KKyAgICAgICAgICAgIHx8IChtX3BTdHJlYW0tPnJlYWQxQnl0ZSgmcFNlZ21lbnQtPm1fY0ZsYWdzLmMpICE9IDApKSB7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBjVGVtcCA9IG1fcFN0cmVhbS0+Z2V0Q3VyQnl0ZSgpOw0KKyAgICBpZigoY1RlbXAgPj4gNSkgPT0gNykgew0KKyAgICAgICAgaWYobV9wU3RyZWFtLT5yZWFkSW50ZWdlcigoRlhfRFdPUkQqKSZwU2VnbWVudC0+bV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudCkgIT0gMCkgew0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFNlZ21lbnQtPm1fblJlZmVycmVkX3RvX3NlZ21lbnRfY291bnQgJj0gMHgxZmZmZmZmZjsNCisgICAgICAgIGlmIChwU2VnbWVudC0+bV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudCA+IEpCSUcyX01BWF9SRUZFUlJFRF9TRUdNRU5UX0NPVU5UKSB7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiVG9vIG1hbnkgcmVmZXJyZWQgc2VnbWVudHMuIik7DQorICAgICAgICAgICAgcmV0dXJuIEpCSUcyX0VSUk9SX0xJTUlUOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZHdUZW1wID0gNSArIDQgKyAocFNlZ21lbnQtPm1fblJlZmVycmVkX3RvX3NlZ21lbnRfY291bnQgKyAxKSAvIDg7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZihtX3BTdHJlYW0tPnJlYWQxQnl0ZSgmY1RlbXApICE9IDApIHsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIHBTZWdtZW50LT5tX25SZWZlcnJlZF90b19zZWdtZW50X2NvdW50ID0gY1RlbXAgPj4gNTsNCisgICAgICAgIGR3VGVtcCA9IDUgKyAxOw0KKyAgICB9DQorICAgIGNTU2l6ZSA9IHBTZWdtZW50LT5tX2R3TnVtYmVyID4gNjU1MzYgPyA0IDogcFNlZ21lbnQtPm1fZHdOdW1iZXIgPiAyNTYgPyAyIDogMTsNCisgICAgY1BTaXplID0gcFNlZ21lbnQtPm1fY0ZsYWdzLnMucGFnZV9hc3NvY2lhdGlvbl9zaXplID8gNCA6IDE7DQorICAgIGlmKHBTZWdtZW50LT5tX25SZWZlcnJlZF90b19zZWdtZW50X2NvdW50KSB7DQorICAgICAgICBwU2VnbWVudC0+bV9wUmVmZXJyZWRfdG9fc2VnbWVudF9udW1iZXJzID0gKEZYX0RXT1JEKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoDQorICAgICAgICAgICAgICAgICAgICBzaXplb2YoRlhfRFdPUkQpLCBwU2VnbWVudC0+bV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudCk7DQorICAgICAgICBmb3IoRlhfSU5UMzIgaSA9IDA7IGkgPCBwU2VnbWVudC0+bV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudDsgaSsrKSB7DQorICAgICAgICAgICAgc3dpdGNoKGNTU2l6ZSkgew0KKyAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgICAgICBpZihtX3BTdHJlYW0tPnJlYWQxQnl0ZSgmY1RlbXApICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHBTZWdtZW50LT5tX3BSZWZlcnJlZF90b19zZWdtZW50X251bWJlcnNbaV0gPSBjVGVtcDsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDI6DQorICAgICAgICAgICAgICAgICAgICBpZihtX3BTdHJlYW0tPnJlYWRTaG9ydEludGVnZXIoJndUZW1wKSAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwU2VnbWVudC0+bV9wUmVmZXJyZWRfdG9fc2VnbWVudF9udW1iZXJzW2ldID0gd1RlbXA7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSA0Og0KKyAgICAgICAgICAgICAgICAgICAgaWYobV9wU3RyZWFtLT5yZWFkSW50ZWdlcigmZHdUZW1wKSAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwU2VnbWVudC0+bV9wUmVmZXJyZWRfdG9fc2VnbWVudF9udW1iZXJzW2ldID0gZHdUZW1wOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwU2VnbWVudC0+bV9wUmVmZXJyZWRfdG9fc2VnbWVudF9udW1iZXJzW2ldID49IHBTZWdtZW50LT5tX2R3TnVtYmVyKSB7DQorICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoIlRoZSByZWZlcnJlZCBzZWdtZW50IG51bWJlciBpcyBncmVhdGVyIHRoYW4gdGhpcyBzZWdtZW50IG51bWJlci4iKTsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmKGNQU2l6ZSA9PSAxKSB7DQorICAgICAgICBpZihtX3BTdHJlYW0tPnJlYWQxQnl0ZSgmY1RlbXApICE9IDApIHsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIHBTZWdtZW50LT5tX2R3UGFnZV9hc3NvY2lhdGlvbiA9IGNUZW1wOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYobV9wU3RyZWFtLT5yZWFkSW50ZWdlcigmcFNlZ21lbnQtPm1fZHdQYWdlX2Fzc29jaWF0aW9uKSAhPSAwKSB7DQorICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYobV9wU3RyZWFtLT5yZWFkSW50ZWdlcigmcFNlZ21lbnQtPm1fZHdEYXRhX2xlbmd0aCkgIT0gMCkgew0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgcFNlZ21lbnQtPm1fcERhdGEgPSBtX3BTdHJlYW0tPmdldFBvaW50ZXIoKTsNCisgICAgcFNlZ21lbnQtPm1fU3RhdGUgPSBKQklHMl9TRUdNRU5UX0RBVEFfVU5QQVJTRUQ7DQorICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KK2ZhaWxlZDoNCisgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiaGVhZGVyIHRvbyBzaG9ydC4iKTsNCisgICAgcmV0dXJuIEpCSUcyX0VSUk9SX1RPT19TSE9SVDsNCit9DQorRlhfSU5UMzIgQ0pCaWcyX0NvbnRleHQ6OnBhcnNlU2VnbWVudERhdGEoQ0pCaWcyX1NlZ21lbnQgKnBTZWdtZW50LCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIEZYX0lOVDMyIHJldCA9IFByb2Nlc3NpdmVQYXJzZVNlZ21lbnREYXRhKHBTZWdtZW50LCBwUGF1c2UpOw0KKyAgICB3aGlsZShtX1Byb2Nlc3NpdmVTdGF0dXMgID09IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUUgJiYgbV9wU3RyZWFtLT5nZXRCeXRlTGVmdCgpID4gMCkgew0KKyAgICAgICAgcmV0ID0gUHJvY2Vzc2l2ZVBhcnNlU2VnbWVudERhdGEocFNlZ21lbnQsIHBQYXVzZSk7DQorICAgIH0NCisgICAgcmV0dXJuIHJldDsNCit9DQorRlhfSU5UMzIgQ0pCaWcyX0NvbnRleHQ6OlByb2Nlc3NpdmVQYXJzZVNlZ21lbnREYXRhKENKQmlnMl9TZWdtZW50ICpwU2VnbWVudCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBzd2l0Y2gocFNlZ21lbnQtPm1fY0ZsYWdzLnMudHlwZSkgew0KKyAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgIHJldHVybiBwYXJzZVN5bWJvbERpY3QocFNlZ21lbnQsIHBQYXVzZSk7DQorICAgICAgICBjYXNlIDQ6DQorICAgICAgICBjYXNlIDY6DQorICAgICAgICBjYXNlIDc6DQorICAgICAgICAgICAgaWYobV9uU3RhdGUgPT0gSkJJRzJfT1VUX09GX1BBR0UpIHsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQyOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVRleHRSZWdpb24ocFNlZ21lbnQpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgMTY6DQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlUGF0dGVybkRpY3QocFNlZ21lbnQsIHBQYXVzZSk7DQorICAgICAgICBjYXNlIDIwOg0KKyAgICAgICAgY2FzZSAyMjoNCisgICAgICAgIGNhc2UgMjM6DQorICAgICAgICAgICAgaWYobV9uU3RhdGUgPT0gSkJJRzJfT1VUX09GX1BBR0UpIHsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQyOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUhhbGZ0b25lUmVnaW9uKHBTZWdtZW50LCBwUGF1c2UpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgMzY6DQorICAgICAgICBjYXNlIDM4Og0KKyAgICAgICAgY2FzZSAzOToNCisgICAgICAgICAgICBpZihtX25TdGF0ZSA9PSBKQklHMl9PVVRfT0ZfUEFHRSkgew0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDI7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlR2VuZXJpY1JlZ2lvbihwU2VnbWVudCwgcFBhdXNlKTsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIDQwOg0KKyAgICAgICAgY2FzZSA0MjoNCisgICAgICAgIGNhc2UgNDM6DQorICAgICAgICAgICAgaWYobV9uU3RhdGUgPT0gSkJJRzJfT1VUX09GX1BBR0UpIHsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQyOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uKHBTZWdtZW50KTsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIDQ4OiB7DQorICAgICAgICAgICAgICAgIEZYX1dPUkQgd1RlbXA7DQorICAgICAgICAgICAgICAgIEpCaWcyUGFnZUluZm8gKnBQYWdlSW5mbzsNCisgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MocFBhZ2VJbmZvLCBKQmlnMlBhZ2VJbmZvKTsNCisgICAgICAgICAgICAgICAgaWYoKG1fcFN0cmVhbS0+cmVhZEludGVnZXIoJnBQYWdlSW5mby0+bV9kd1dpZHRoKSAhPSAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3BTdHJlYW0tPnJlYWRJbnRlZ2VyKCZwUGFnZUluZm8tPm1fZHdIZWlnaHQpICE9IDApDQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fcFN0cmVhbS0+cmVhZEludGVnZXIoJnBQYWdlSW5mby0+bV9kd1Jlc29sdXRpb25YKSAhPSAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3BTdHJlYW0tPnJlYWRJbnRlZ2VyKCZwUGFnZUluZm8tPm1fZHdSZXNvbHV0aW9uWSkgIT0gMCkNCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAobV9wU3RyZWFtLT5yZWFkMUJ5dGUoJnBQYWdlSW5mby0+bV9jRmxhZ3MpICE9IDApDQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fcFN0cmVhbS0+cmVhZFNob3J0SW50ZWdlcigmd1RlbXApICE9IDApKSB7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgcFBhZ2VJbmZvOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQxOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBQYWdlSW5mby0+bV9iSXNTdHJpcGVkID0gKCh3VGVtcCA+PiAxNSkgJiAxKSA/IDEgOiAwOw0KKyAgICAgICAgICAgICAgICBwUGFnZUluZm8tPm1fd01heFN0cmlwZVNpemUgPSB3VGVtcCAmIDB4N2ZmZjsNCisgICAgICAgICAgICAgICAgaWYoKHBQYWdlSW5mby0+bV9kd0hlaWdodCA9PSAweGZmZmZmZmZmKSAmJiAocFBhZ2VJbmZvLT5tX2JJc1N0cmlwZWQgIT0gMSkpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfV2FybigicGFnZSBoZWlnaHQgPSAweGZmZmZmZmZmIGJ1ZiBzdHJpcGUgZmllbGQgaXMgMCIpOw0KKyAgICAgICAgICAgICAgICAgICAgcFBhZ2VJbmZvLT5tX2JJc1N0cmlwZWQgPSAxOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmKCFtX2JCdWZTcGVjaWZpZWQpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmKG1fcFBhZ2UpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbV9wUGFnZTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmKHBQYWdlSW5mby0+bV9kd0hlaWdodCA9PSAweGZmZmZmZmZmKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MobV9wUGFnZSwgQ0pCaWcyX0ltYWdlKHBQYWdlSW5mby0+bV9kd1dpZHRoLCBwUGFnZUluZm8tPm1fd01heFN0cmlwZVNpemUpKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MobV9wUGFnZSwgQ0pCaWcyX0ltYWdlKHBQYWdlSW5mby0+bV9kd1dpZHRoLCBwUGFnZUluZm8tPm1fZHdIZWlnaHQpKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX3BQYWdlLT5maWxsKChwUGFnZUluZm8tPm1fY0ZsYWdzICYgNCkgPyAxIDogMCk7DQorICAgICAgICAgICAgICAgIG1fcFBhZ2VJbmZvTGlzdC0+YWRkSXRlbShwUGFnZUluZm8pOw0KKyAgICAgICAgICAgICAgICBtX25TdGF0ZSA9IEpCSUcyX0lOX1BBR0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSA0OToNCisgICAgICAgICAgICBtX25TdGF0ZSA9IEpCSUcyX09VVF9PRl9QQUdFOw0KKyAgICAgICAgICAgIHJldHVybiBKQklHMl9FTkRfT0ZfUEFHRTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgNTA6DQorICAgICAgICAgICAgbV9wU3RyZWFtLT5vZmZzZXQocFNlZ21lbnQtPm1fZHdEYXRhX2xlbmd0aCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDUxOg0KKyAgICAgICAgICAgIHJldHVybiBKQklHMl9FTkRfT0ZfRklMRTsNCisgICAgICAgIGNhc2UgNTI6DQorICAgICAgICAgICAgbV9wU3RyZWFtLT5vZmZzZXQocFNlZ21lbnQtPm1fZHdEYXRhX2xlbmd0aCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDUzOg0KKyAgICAgICAgICAgIHJldHVybiBwYXJzZVRhYmxlKHBTZWdtZW50KTsNCisgICAgICAgIGNhc2UgNjI6DQorICAgICAgICAgICAgbV9wU3RyZWFtLT5vZmZzZXQocFNlZ21lbnQtPm1fZHdEYXRhX2xlbmd0aCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KK2ZhaWxlZDE6DQorICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInNlZ21lbnQgZGF0YSB0b28gc2hvcnQuIik7DQorICAgIHJldHVybiBKQklHMl9FUlJPUl9UT09fU0hPUlQ7DQorZmFpbGVkMjoNCisgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic2VnbWVudCBzeW50YXggZXJyb3IuIik7DQorICAgIHJldHVybiBKQklHMl9FUlJPUl9GRVRBTDsNCit9DQorRlhfSU5UMzIgQ0pCaWcyX0NvbnRleHQ6OnBhcnNlU3ltYm9sRGljdChDSkJpZzJfU2VnbWVudCAqcFNlZ21lbnQsIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhfRFdPUkQgZHdUZW1wOw0KKyAgICBGWF9XT1JEIHdGbGFnczsNCisgICAgRlhfQllURSBjU0RIVUZGREgsIGNTREhVRkZEVywgY1NESFVGRkJNU0laRSwgY1NESFVGRkFHR0lOU1Q7DQorICAgIENKQmlnMl9IdWZmbWFuVGFibGUgKlRhYmxlX0IxID0gTlVMTCwgKlRhYmxlX0IyID0gTlVMTCwgKlRhYmxlX0IzID0gTlVMTCwgKlRhYmxlX0I0ID0gTlVMTCwgKlRhYmxlX0I1ID0gTlVMTDsNCisgICAgRlhfSU5UMzIgaSwgbkluZGV4LCBuUmV0Ow0KKyAgICBDSkJpZzJfU2VnbWVudCAqcFNlZyA9IE5VTEwsICpwTFJTZWcgPSBOVUxMOw0KKyAgICBGWF9CT09MIGJVc2VkOw0KKyAgICBDSkJpZzJfSW1hZ2UgKiogU0RJTlNZTVMgPSBOVUxMOw0KKyAgICBDSkJpZzJfU0REUHJvYyAqcFN5bWJvbERpY3REZWNvZGVyOw0KKyAgICBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQgPSBOVUxMLCAqZ3JDb250ZXh0ID0gTlVMTDsNCisgICAgQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlcjsNCisgICAgSkJJRzJfQUxMT0MocFN5bWJvbERpY3REZWNvZGVyLCBDSkJpZzJfU0REUHJvYygpKTsNCisgICAgaWYobV9wU3RyZWFtLT5yZWFkU2hvcnRJbnRlZ2VyKCZ3RmxhZ3MpICE9IDApIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IHNlZ21lbnQgOiBkYXRhIGhlYWRlciB0b28gc2hvcnQuIik7DQorICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfVE9PX1NIT1JUOw0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgcFN5bWJvbERpY3REZWNvZGVyLT5TREhVRkYgPSB3RmxhZ3MgJiAweDAwMDE7DQorICAgIHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RSRUZBR0cgPSAod0ZsYWdzID4+IDEpICYgMHgwMDAxOw0KKyAgICBwU3ltYm9sRGljdERlY29kZXItPlNEVEVNUExBVEUgPSAod0ZsYWdzID4+IDEwKSAmIDB4MDAwMzsNCisgICAgcFN5bWJvbERpY3REZWNvZGVyLT5TRFJURU1QTEFURSA9ICh3RmxhZ3MgPj4gMTIpICYgMHgwMDAzOw0KKyAgICBjU0RIVUZGREggPSAod0ZsYWdzID4+IDIpICYgMHgwMDAzOw0KKyAgICBjU0RIVUZGRFcgPSAod0ZsYWdzID4+IDQpICYgMHgwMDAzOw0KKyAgICBjU0RIVUZGQk1TSVpFID0gKHdGbGFncyA+PiA2KSAmIDB4MDAwMTsNCisgICAgY1NESFVGRkFHR0lOU1QgPSAod0ZsYWdzID4+IDcpICYgMHgwMDAxOw0KKyAgICBpZihwU3ltYm9sRGljdERlY29kZXItPlNESFVGRiA9PSAwKSB7DQorICAgICAgICBpZihwU3ltYm9sRGljdERlY29kZXItPlNEVEVNUExBVEUgPT0gMCkgew0KKyAgICAgICAgICAgIGR3VGVtcCA9IDg7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGR3VGVtcCA9IDI7DQorICAgICAgICB9DQorICAgICAgICBmb3IoaSA9IDA7IGkgPCAoRlhfSU5UMzIpZHdUZW1wOyBpKyspIHsNCisgICAgICAgICAgICBpZihtX3BTdHJlYW0tPnJlYWQxQnl0ZSgoRlhfQllURSopJnBTeW1ib2xEaWN0RGVjb2Rlci0+U0RBVFtpXSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBzZWdtZW50IDogZGF0YSBoZWFkZXIgdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfVE9PX1NIT1JUOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoKHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RSRUZBR0cgPT0gMSkgJiYgKHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RSVEVNUExBVEUgPT0gMCkpIHsNCisgICAgICAgIGZvcihpID0gMDsgaSA8IDQ7IGkrKykgew0KKyAgICAgICAgICAgIGlmKG1fcFN0cmVhbS0+cmVhZDFCeXRlKChGWF9CWVRFKikmcFN5bWJvbERpY3REZWNvZGVyLT5TRFJBVFtpXSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBzZWdtZW50IDogZGF0YSBoZWFkZXIgdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfVE9PX1NIT1JUOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoKG1fcFN0cmVhbS0+cmVhZEludGVnZXIoJnBTeW1ib2xEaWN0RGVjb2Rlci0+U0ROVU1FWFNZTVMpICE9IDApDQorICAgICAgICAgICAgfHwgKG1fcFN0cmVhbS0+cmVhZEludGVnZXIoJnBTeW1ib2xEaWN0RGVjb2Rlci0+U0ROVU1ORVdTWU1TKSAhPSAwKSkgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgc2VnbWVudCA6IGRhdGEgaGVhZGVyIHRvbyBzaG9ydC4iKTsNCisgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9UT09fU0hPUlQ7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBpZiAocFN5bWJvbERpY3REZWNvZGVyLT5TRE5VTUVYU1lNUyA+IEpCSUcyX01BWF9FWFBPUlRfU1lTTUJPTFMNCisgICAgICAgICAgICB8fCBwU3ltYm9sRGljdERlY29kZXItPlNETlVNTkVXU1lNUyA+IEpCSUcyX01BWF9ORVdfU1lTTUJPTFMpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IHNlZ21lbnQgOiB0b28gbWFueSBleHBvcnQvbmV3IHN5bWJvbHMuIik7DQorICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfTElNSVQ7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBmb3IoaSA9IDA7IGkgPCBwU2VnbWVudC0+bV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudDsgaSsrKSB7DQorICAgICAgICBpZighZmluZFNlZ21lbnRCeU51bWJlcihwU2VnbWVudC0+bV9wUmVmZXJyZWRfdG9fc2VnbWVudF9udW1iZXJzW2ldKSkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IHNlZ21lbnQgOiBjYW4ndCBmaW5kIHJlZmVyZWQgdG8gc2VnbWVudHMiKTsNCisgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcFN5bWJvbERpY3REZWNvZGVyLT5TRE5VTUlOU1lNUyA9IDA7DQorICAgIGZvcihpID0gMDsgaSA8IHBTZWdtZW50LT5tX25SZWZlcnJlZF90b19zZWdtZW50X2NvdW50OyBpKyspIHsNCisgICAgICAgIHBTZWcgPSBmaW5kU2VnbWVudEJ5TnVtYmVyKHBTZWdtZW50LT5tX3BSZWZlcnJlZF90b19zZWdtZW50X251bWJlcnNbaV0pOw0KKyAgICAgICAgaWYocFNlZy0+bV9jRmxhZ3Mucy50eXBlID09IDApIHsNCisgICAgICAgICAgICBwU3ltYm9sRGljdERlY29kZXItPlNETlVNSU5TWU1TICs9IHBTZWctPm1fUmVzdWx0LnNkLT5TRE5VTUVYU1lNUzsNCisgICAgICAgICAgICBwTFJTZWcgPSBwU2VnOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmKHBTeW1ib2xEaWN0RGVjb2Rlci0+U0ROVU1JTlNZTVMgPT0gMCkgew0KKyAgICAgICAgU0RJTlNZTVMgPSBOVUxMOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgU0RJTlNZTVMgPSAoQ0pCaWcyX0ltYWdlKiopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKA0KKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKENKQmlnMl9JbWFnZSopLCBwU3ltYm9sRGljdERlY29kZXItPlNETlVNSU5TWU1TKTsNCisgICAgICAgIGR3VGVtcCA9IDA7DQorICAgICAgICBmb3IoaSA9IDA7IGkgPCBwU2VnbWVudC0+bV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudDsgaSsrKSB7DQorICAgICAgICAgICAgcFNlZyA9IGZpbmRTZWdtZW50QnlOdW1iZXIocFNlZ21lbnQtPm1fcFJlZmVycmVkX3RvX3NlZ21lbnRfbnVtYmVyc1tpXSk7DQorICAgICAgICAgICAgaWYocFNlZy0+bV9jRmxhZ3Mucy50eXBlID09IDApIHsNCisgICAgICAgICAgICAgICAgSkJJRzJfbWVtY3B5KFNESU5TWU1TICsgZHdUZW1wLCBwU2VnLT5tX1Jlc3VsdC5zZC0+U0RFWFNZTVMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU2VnLT5tX1Jlc3VsdC5zZC0+U0ROVU1FWFNZTVMgKiBzaXplb2YoQ0pCaWcyX0ltYWdlKikpOw0KKyAgICAgICAgICAgICAgICBkd1RlbXAgKz0gcFNlZy0+bV9SZXN1bHQuc2QtPlNETlVNRVhTWU1TOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBwU3ltYm9sRGljdERlY29kZXItPlNESU5TWU1TID0gU0RJTlNZTVM7DQorICAgIGlmKHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RIVUZGID09IDEpIHsNCisgICAgICAgIGlmKChjU0RIVUZGREggPT0gMikgfHwgKGNTREhVRkZEVyA9PSAyKSkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IHNlZ21lbnQgOiBTREhVRkZESD0yIG9yIFNESFVGRkRXPTIgaXMgbm90IHBlcm1pdHRlZC4iKTsNCisgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICB9DQorICAgICAgICBuSW5kZXggPSAwOw0KKyAgICAgICAgaWYoY1NESFVGRkRIID09IDApIHsNCisgICAgICAgICAgICBKQklHMl9BTExPQyhUYWJsZV9CNCwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjQsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CNCkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjQpKTsNCisgICAgICAgICAgICBwU3ltYm9sRGljdERlY29kZXItPlNESFVGRkRIID0gVGFibGVfQjQ7DQorICAgICAgICB9IGVsc2UgaWYoY1NESFVGRkRIID09IDEpIHsNCisgICAgICAgICAgICBKQklHMl9BTExPQyhUYWJsZV9CNSwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjUsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CNSkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjUpKTsNCisgICAgICAgICAgICBwU3ltYm9sRGljdERlY29kZXItPlNESFVGRkRIID0gVGFibGVfQjU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBTZWcgPSBmaW5kUmVmZXJyZWRTZWdtZW50QnlUeXBlQW5kSW5kZXgocFNlZ21lbnQsIDUzLCBuSW5kZXgrKyk7DQorICAgICAgICAgICAgaWYoIXBTZWcpIHsNCisgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgc2VnbWVudCA6IFNESFVGRkRIIGNhbid0IGZpbmQgdXNlciBzdXBwbGllZCB0YWJsZS4iKTsNCisgICAgICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFN5bWJvbERpY3REZWNvZGVyLT5TREhVRkZESCA9IHBTZWctPm1fUmVzdWx0Lmh0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoY1NESFVGRkRXID09IDApIHsNCisgICAgICAgICAgICBKQklHMl9BTExPQyhUYWJsZV9CMiwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjIsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMikgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjIpKTsNCisgICAgICAgICAgICBwU3ltYm9sRGljdERlY29kZXItPlNESFVGRkRXID0gVGFibGVfQjI7DQorICAgICAgICB9IGVsc2UgaWYoY1NESFVGRkRXID09IDEpIHsNCisgICAgICAgICAgICBKQklHMl9BTExPQyhUYWJsZV9CMywgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjMsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMykgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjMpKTsNCisgICAgICAgICAgICBwU3ltYm9sRGljdERlY29kZXItPlNESFVGRkRXID0gVGFibGVfQjM7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBTZWcgPSBmaW5kUmVmZXJyZWRTZWdtZW50QnlUeXBlQW5kSW5kZXgocFNlZ21lbnQsIDUzLCBuSW5kZXgrKyk7DQorICAgICAgICAgICAgaWYoIXBTZWcpIHsNCisgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgc2VnbWVudCA6IFNESFVGRkRXIGNhbid0IGZpbmQgdXNlciBzdXBwbGllZCB0YWJsZS4iKTsNCisgICAgICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFN5bWJvbERpY3REZWNvZGVyLT5TREhVRkZEVyA9IHBTZWctPm1fUmVzdWx0Lmh0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoY1NESFVGRkJNU0laRSA9PSAwKSB7DQorICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjEsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0IxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjEpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxKSk7DQorICAgICAgICAgICAgcFN5bWJvbERpY3REZWNvZGVyLT5TREhVRkZCTVNJWkUgPSBUYWJsZV9CMTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcFNlZyA9IGZpbmRSZWZlcnJlZFNlZ21lbnRCeVR5cGVBbmRJbmRleChwU2VnbWVudCwgNTMsIG5JbmRleCsrKTsNCisgICAgICAgICAgICBpZighcFNlZykgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBzZWdtZW50IDogU0RIVUZGQk1TSVpFIGNhbid0IGZpbmQgdXNlciBzdXBwbGllZCB0YWJsZS4iKTsNCisgICAgICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFN5bWJvbERpY3REZWNvZGVyLT5TREhVRkZCTVNJWkUgPSBwU2VnLT5tX1Jlc3VsdC5odDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RSRUZBR0cgPT0gMSkgew0KKyAgICAgICAgICAgIGlmKGNTREhVRkZBR0dJTlNUID09IDApIHsNCisgICAgICAgICAgICAgICAgaWYoIVRhYmxlX0IxKSB7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhUYWJsZV9CMSwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0IxKSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMSkpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RIVUZGQUdHSU5TVCA9IFRhYmxlX0IxOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBTZWcgPSBmaW5kUmVmZXJyZWRTZWdtZW50QnlUeXBlQW5kSW5kZXgocFNlZ21lbnQsIDUzLCBuSW5kZXgrKyk7DQorICAgICAgICAgICAgICAgIGlmKCFwU2VnKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBzZWdtZW50IDogU0RIVUZGQUdHSU5TVCBjYW4ndCBmaW5kIHVzZXIgc3VwcGxpZWQgdGFibGUuIik7DQorICAgICAgICAgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwU3ltYm9sRGljdERlY29kZXItPlNESFVGRkFHR0lOU1QgPSBwU2VnLT5tX1Jlc3VsdC5odDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoKHdGbGFncyAmIDB4MDEwMCkgJiYgcExSU2VnICYmIHBMUlNlZy0+bV9SZXN1bHQuc2QtPm1fYkNvbnRleHRSZXRhaW5lZCkgew0KKyAgICAgICAgaWYgKHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RIVUZGID09IDApIHsNCisgICAgICAgICAgICBkd1RlbXAgPSBwU3ltYm9sRGljdERlY29kZXItPlNEVEVNUExBVEUgPT0gMCA/IDY1NTM2IDogcFN5bWJvbERpY3REZWNvZGVyLT5TRFRFTVBMQVRFID09IDEgPw0KKyAgICAgICAgICAgICAgICAgICAgIDgxOTIgOiAxMDI0Ow0KKyAgICAgICAgICAgIGdiQ29udGV4dCA9IChKQmlnMkFyaXRoQ3R4KiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKEpCaWcyQXJpdGhDdHgpLCBkd1RlbXApOw0KKyAgICAgICAgICAgIEpCSUcyX21lbWNweShnYkNvbnRleHQsIHBMUlNlZy0+bV9SZXN1bHQuc2QtPm1fZ2JDb250ZXh0LCBzaXplb2YoSkJpZzJBcml0aEN0eCkqZHdUZW1wKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwU3ltYm9sRGljdERlY29kZXItPlNEUkVGQUdHID09IDEpIHsNCisgICAgICAgICAgICBkd1RlbXAgPSBwU3ltYm9sRGljdERlY29kZXItPlNEUlRFTVBMQVRFID8gMSA8PCAxMCA6IDEgPDwgMTM7DQorICAgICAgICAgICAgZ3JDb250ZXh0ID0gKEpCaWcyQXJpdGhDdHgqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihzaXplb2YoSkJpZzJBcml0aEN0eCksIGR3VGVtcCk7DQorICAgICAgICAgICAgSkJJRzJfbWVtY3B5KGdyQ29udGV4dCwgcExSU2VnLT5tX1Jlc3VsdC5zZC0+bV9nckNvbnRleHQsIHNpemVvZihKQmlnMkFyaXRoQ3R4KSpkd1RlbXApOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RIVUZGID09IDApIHsNCisgICAgICAgICAgICBkd1RlbXAgPSBwU3ltYm9sRGljdERlY29kZXItPlNEVEVNUExBVEUgPT0gMCA/IDY1NTM2IDogcFN5bWJvbERpY3REZWNvZGVyLT5TRFRFTVBMQVRFID09IDEgPw0KKyAgICAgICAgICAgICAgICAgICAgIDgxOTIgOiAxMDI0Ow0KKyAgICAgICAgICAgIGdiQ29udGV4dCA9IChKQmlnMkFyaXRoQ3R4KiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKEpCaWcyQXJpdGhDdHgpLCBkd1RlbXApOw0KKyAgICAgICAgICAgIEpCSUcyX21lbXNldChnYkNvbnRleHQsIDAsIHNpemVvZihKQmlnMkFyaXRoQ3R4KSpkd1RlbXApOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RSRUZBR0cgPT0gMSkgew0KKyAgICAgICAgICAgIGR3VGVtcCA9IHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RSVEVNUExBVEUgPyAxIDw8IDEwIDogMSA8PCAxMzsNCisgICAgICAgICAgICBnckNvbnRleHQgPSAoSkJpZzJBcml0aEN0eCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihKQmlnMkFyaXRoQ3R4KSwgZHdUZW1wKTsNCisgICAgICAgICAgICBKQklHMl9tZW1zZXQoZ3JDb250ZXh0LCAwLCBzaXplb2YoSkJpZzJBcml0aEN0eCkqZHdUZW1wKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBwU2VnbWVudC0+bV9uUmVzdWx0VHlwZSA9IEpCSUcyX1NZTUJPTF9ESUNUX1BPSU5URVI7DQorICAgIGlmKHBTeW1ib2xEaWN0RGVjb2Rlci0+U0RIVUZGID09IDApIHsNCisgICAgICAgIEpCSUcyX0FMTE9DKHBBcml0aERlY29kZXIsIENKQmlnMl9Bcml0aERlY29kZXIobV9wU3RyZWFtKSk7DQorICAgICAgICBwU2VnbWVudC0+bV9SZXN1bHQuc2QgPSBwU3ltYm9sRGljdERlY29kZXItPmRlY29kZV9Bcml0aChwQXJpdGhEZWNvZGVyLCBnYkNvbnRleHQsIGdyQ29udGV4dCk7DQorICAgICAgICBkZWxldGUgcEFyaXRoRGVjb2RlcjsNCisgICAgICAgIGlmKHBTZWdtZW50LT5tX1Jlc3VsdC5zZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wU3RyZWFtLT5hbGlnbkJ5dGUoKTsNCisgICAgICAgIG1fcFN0cmVhbS0+b2Zmc2V0KDIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcFNlZ21lbnQtPm1fUmVzdWx0LnNkID0gcFN5bWJvbERpY3REZWNvZGVyLT5kZWNvZGVfSHVmZm1hbihtX3BTdHJlYW0sIGdiQ29udGV4dCwgZ3JDb250ZXh0LCBwUGF1c2UpOw0KKyAgICAgICAgaWYocFNlZ21lbnQtPm1fUmVzdWx0LnNkID09IE5VTEwpIHsNCisgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICB9DQorICAgICAgICBtX3BTdHJlYW0tPmFsaWduQnl0ZSgpOw0KKyAgICB9DQorICAgIGlmKHdGbGFncyAmIDB4MDIwMCkgew0KKyAgICAgICAgcFNlZ21lbnQtPm1fUmVzdWx0LnNkLT5tX2JDb250ZXh0UmV0YWluZWQgPSBUUlVFOw0KKyAgICAgICAgaWYocFN5bWJvbERpY3REZWNvZGVyLT5TREhVRkYgPT0gMCkgew0KKyAgICAgICAgICAgIHBTZWdtZW50LT5tX1Jlc3VsdC5zZC0+bV9nYkNvbnRleHQgPSBnYkNvbnRleHQ7DQorICAgICAgICB9DQorICAgICAgICBpZihwU3ltYm9sRGljdERlY29kZXItPlNEUkVGQUdHID09IDEpIHsNCisgICAgICAgICAgICBwU2VnbWVudC0+bV9SZXN1bHQuc2QtPm1fZ3JDb250ZXh0ID0gZ3JDb250ZXh0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgYlVzZWQgPSBUUlVFOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgYlVzZWQgPSBGQUxTRTsNCisgICAgfQ0KKyAgICBkZWxldGUgcFN5bWJvbERpY3REZWNvZGVyOw0KKyAgICBpZihTRElOU1lNUykgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNESU5TWU1TKTsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CMSkgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0IxOw0KKyAgICB9DQorICAgIGlmKFRhYmxlX0IyKSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjI7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjMpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CMzsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CNCkgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0I0Ow0KKyAgICB9DQorICAgIGlmKFRhYmxlX0I1KSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjU7DQorICAgIH0NCisgICAgaWYoYlVzZWQgPT0gRkFMU0UpIHsNCisgICAgICAgIGlmKGdiQ29udGV4dCkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShnYkNvbnRleHQpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoZ3JDb250ZXh0KSB7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKGdyQ29udGV4dCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEpCSUcyX1NVQ0NFU1M7DQorZmFpbGVkOg0KKyAgICBkZWxldGUgcFN5bWJvbERpY3REZWNvZGVyOw0KKyAgICBpZihTRElOU1lNUykgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNESU5TWU1TKTsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CMSkgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0IxOw0KKyAgICB9DQorICAgIGlmKFRhYmxlX0IyKSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjI7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjMpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CMzsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CNCkgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0I0Ow0KKyAgICB9DQorICAgIGlmKFRhYmxlX0I1KSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjU7DQorICAgIH0NCisgICAgaWYoZ2JDb250ZXh0KSB7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoZ2JDb250ZXh0KTsNCisgICAgfQ0KKyAgICBpZihnckNvbnRleHQpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShnckNvbnRleHQpOw0KKyAgICB9DQorICAgIHJldHVybiBuUmV0Ow0KK30NCisNCitGWF9CT09MIENKQmlnMl9Db250ZXh0OjpwYXJzZVRleHRSZWdpb24oQ0pCaWcyX1NlZ21lbnQgKnBTZWdtZW50KQ0KK3sNCisgICAgRlhfRFdPUkQgZHdUZW1wOw0KKyAgICBGWF9XT1JEIHdGbGFnczsNCisgICAgRlhfSU5UMzIgaSwgbkluZGV4LCBuUmV0Ow0KKyAgICBKQmlnMlJlZ2lvbkluZm8gcmk7DQorICAgIENKQmlnMl9TZWdtZW50ICpwU2VnOw0KKyAgICBDSkJpZzJfSW1hZ2UgKipTQlNZTVMgPSBOVUxMOw0KKyAgICBKQmlnMkh1ZmZtYW5Db2RlICpTQlNZTUNPREVTID0gTlVMTDsNCisgICAgRlhfQllURSBjU0JIVUZGRlMsIGNTQkhVRkZEUywgY1NCSFVGRkRULCBjU0JIVUZGUkRXLCBjU0JIVUZGUkRILCBjU0JIVUZGUkRYLCBjU0JIVUZGUkRZLCBjU0JIVUZGUlNJWkU7DQorICAgIENKQmlnMl9IdWZmbWFuVGFibGUgKlRhYmxlX0IxID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgKlRhYmxlX0I2ID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICpUYWJsZV9CNyA9IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKlRhYmxlX0I4ID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlRhYmxlX0I5ID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpUYWJsZV9CMTAgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpUYWJsZV9CMTEgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVGFibGVfQjEyID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpUYWJsZV9CMTMgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpUYWJsZV9CMTQgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVGFibGVfQjE1ID0gTlVMTDsNCisgICAgSkJpZzJBcml0aEN0eCAqZ3JDb250ZXh0ID0gTlVMTDsNCisgICAgQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlcjsNCisgICAgQ0pCaWcyX1RSRFByb2MgKnBUUkQ7DQorICAgIEpCSUcyX0FMTE9DKHBUUkQsIENKQmlnMl9UUkRQcm9jKCkpOw0KKyAgICBpZigocGFyc2VSZWdpb25JbmZvKCZyaSkgIT0gSkJJRzJfU1VDQ0VTUykNCisgICAgICAgICAgICB8fCAobV9wU3RyZWFtLT5yZWFkU2hvcnRJbnRlZ2VyKCZ3RmxhZ3MpICE9IDApKSB7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBzZWdtZW50IDogZGF0YSBoZWFkZXIgdG9vIHNob3J0LiIpOw0KKyAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX1RPT19TSE9SVDsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIHBUUkQtPlNCVyA9IHJpLndpZHRoOw0KKyAgICBwVFJELT5TQkggPSByaS5oZWlnaHQ7DQorICAgIHBUUkQtPlNCSFVGRiA9IHdGbGFncyAmIDB4MDAwMTsNCisgICAgcFRSRC0+U0JSRUZJTkUgPSAod0ZsYWdzID4+IDEpICYgMHgwMDAxOw0KKyAgICBkd1RlbXAgPSAod0ZsYWdzID4+IDIpICYgMHgwMDAzOw0KKyAgICBwVFJELT5TQlNUUklQUyA9IDEgPDwgZHdUZW1wOw0KKyAgICBwVFJELT5SRUZDT1JORVIgPSAoSkJpZzJDb3JuZXIpKCh3RmxhZ3MgPj4gNCkgJiAweDAwMDMpOw0KKyAgICBwVFJELT5UUkFOU1BPU0VEID0gKHdGbGFncyA+PiA2KSAmIDB4MDAwMTsNCisgICAgcFRSRC0+U0JDT01CT1AgPSAoSkJpZzJDb21wb3NlT3ApKCh3RmxhZ3MgPj4gNykgJiAweDAwMDMpOw0KKyAgICBwVFJELT5TQkRFRlBJWEVMID0gKHdGbGFncyA+PiA5KSAmIDB4MDAwMTsNCisgICAgcFRSRC0+U0JEU09GRlNFVCA9ICh3RmxhZ3MgPj4gMTApICYgMHgwMDFmOw0KKyAgICBpZihwVFJELT5TQkRTT0ZGU0VUID49IDB4MDAxMCkgew0KKyAgICAgICAgcFRSRC0+U0JEU09GRlNFVCA9IHBUUkQtPlNCRFNPRkZTRVQgLSAweDAwMjA7DQorICAgIH0NCisgICAgcFRSRC0+U0JSVEVNUExBVEUgPSAod0ZsYWdzID4+IDE1KSAmIDB4MDAwMTsNCisgICAgaWYocFRSRC0+U0JIVUZGID09IDEpIHsNCisgICAgICAgIGlmKG1fcFN0cmVhbS0+cmVhZFNob3J0SW50ZWdlcigmd0ZsYWdzKSAhPSAwKSB7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gc2VnbWVudCA6IGRhdGEgaGVhZGVyIHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfVE9PX1NIT1JUOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY1NCSFVGRkZTID0gd0ZsYWdzICYgMHgwMDAzOw0KKyAgICAgICAgY1NCSFVGRkRTID0gKHdGbGFncyA+PiAyKSAmIDB4MDAwMzsNCisgICAgICAgIGNTQkhVRkZEVCA9ICh3RmxhZ3MgPj4gNCkgJiAweDAwMDM7DQorICAgICAgICBjU0JIVUZGUkRXID0gKHdGbGFncyA+PiA2KSAmIDB4MDAwMzsNCisgICAgICAgIGNTQkhVRkZSREggPSAod0ZsYWdzID4+IDgpICYgMHgwMDAzOw0KKyAgICAgICAgY1NCSFVGRlJEWCA9ICh3RmxhZ3MgPj4gMTApICYgMHgwMDAzOw0KKyAgICAgICAgY1NCSFVGRlJEWSA9ICh3RmxhZ3MgPj4gMTIpICYgMHgwMDAzOw0KKyAgICAgICAgY1NCSFVGRlJTSVpFID0gKHdGbGFncyA+PiAxNCkgJiAweDAwMDE7DQorICAgIH0NCisgICAgaWYoKHBUUkQtPlNCUkVGSU5FID09IDEpICYmIChwVFJELT5TQlJURU1QTEFURSA9PSAwKSkgew0KKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgNDsgaSsrKSB7DQorICAgICAgICAgICAgaWYobV9wU3RyZWFtLT5yZWFkMUJ5dGUoKEZYX0JZVEUqKSZwVFJELT5TQlJBVFtpXSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBzZWdtZW50IDogZGF0YSBoZWFkZXIgdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfVE9PX1NIT1JUOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYobV9wU3RyZWFtLT5yZWFkSW50ZWdlcigmcFRSRC0+U0JOVU1JTlNUQU5DRVMpICE9IDApIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInRleHQgcmVnaW9uIHNlZ21lbnQgOiBkYXRhIGhlYWRlciB0b28gc2hvcnQuIik7DQorICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfVE9PX1NIT1JUOw0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgZm9yKGkgPSAwOyBpIDwgcFNlZ21lbnQtPm1fblJlZmVycmVkX3RvX3NlZ21lbnRfY291bnQ7IGkrKykgew0KKyAgICAgICAgaWYoIWZpbmRTZWdtZW50QnlOdW1iZXIocFNlZ21lbnQtPm1fcFJlZmVycmVkX3RvX3NlZ21lbnRfbnVtYmVyc1tpXSkpIHsNCisgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBzZWdtZW50IDogY2FuJ3QgZmluZCByZWZlcmVkIHRvIHNlZ21lbnRzIik7DQorICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHBUUkQtPlNCTlVNU1lNUyA9IDA7DQorICAgIGZvcihpID0gMDsgaSA8IHBTZWdtZW50LT5tX25SZWZlcnJlZF90b19zZWdtZW50X2NvdW50OyBpKyspIHsNCisgICAgICAgIHBTZWcgPSBmaW5kU2VnbWVudEJ5TnVtYmVyKHBTZWdtZW50LT5tX3BSZWZlcnJlZF90b19zZWdtZW50X251bWJlcnNbaV0pOw0KKyAgICAgICAgaWYocFNlZy0+bV9jRmxhZ3Mucy50eXBlID09IDApIHsNCisgICAgICAgICAgICBwVFJELT5TQk5VTVNZTVMgKz0gcFNlZy0+bV9SZXN1bHQuc2QtPlNETlVNRVhTWU1TOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwVFJELT5TQk5VTVNZTVMgPiAwKSB7DQorICAgICAgICBTQlNZTVMgPSAoQ0pCaWcyX0ltYWdlKiopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKA0KKyAgICAgICAgICAgICAgICAgICAgIHNpemVvZihDSkJpZzJfSW1hZ2UqKSwgcFRSRC0+U0JOVU1TWU1TKTsNCisgICAgICAgIGR3VGVtcCA9IDA7DQorICAgICAgICBmb3IoaSA9IDA7IGkgPCBwU2VnbWVudC0+bV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudDsgaSsrKSB7DQorICAgICAgICAgICAgcFNlZyA9IGZpbmRTZWdtZW50QnlOdW1iZXIocFNlZ21lbnQtPm1fcFJlZmVycmVkX3RvX3NlZ21lbnRfbnVtYmVyc1tpXSk7DQorICAgICAgICAgICAgaWYocFNlZy0+bV9jRmxhZ3Mucy50eXBlID09IDApIHsNCisgICAgICAgICAgICAgICAgSkJJRzJfbWVtY3B5KFNCU1lNUyArIGR3VGVtcCwgcFNlZy0+bV9SZXN1bHQuc2QtPlNERVhTWU1TLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNlZy0+bV9SZXN1bHQuc2QtPlNETlVNRVhTWU1TICogc2l6ZW9mKENKQmlnMl9JbWFnZSopKTsNCisgICAgICAgICAgICAgICAgZHdUZW1wICs9IHBTZWctPm1fUmVzdWx0LnNkLT5TRE5VTUVYU1lNUzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBwVFJELT5TQlNZTVMgPSBTQlNZTVM7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwVFJELT5TQlNZTVMgPSBOVUxMOw0KKyAgICB9DQorICAgIGlmKHBUUkQtPlNCSFVGRiA9PSAxKSB7DQorICAgICAgICBTQlNZTUNPREVTID0gZGVjb2RlU3ltYm9sSURIdWZmbWFuVGFibGUobV9wU3RyZWFtLCBwVFJELT5TQk5VTVNZTVMpOw0KKyAgICAgICAgaWYoU0JTWU1DT0RFUyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gc2VnbWVudDogc3ltYm9sIElEIGh1ZmZtYW4gdGFibGUgZGVjb2RlIGZhaWx1cmUhIik7DQorICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wU3RyZWFtLT5hbGlnbkJ5dGUoKTsNCisgICAgICAgIHBUUkQtPlNCU1lNQ09ERVMgPSBTQlNZTUNPREVTOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZHdUZW1wID0gMDsNCisgICAgICAgIHdoaWxlKChGWF9EV09SRCkoMSA8PCBkd1RlbXApIDwgcFRSRC0+U0JOVU1TWU1TKSB7DQorICAgICAgICAgICAgZHdUZW1wICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFRSRC0+U0JTWU1DT0RFTEVOID0gKEZYX0JZVEUpZHdUZW1wOw0KKyAgICB9DQorICAgIGlmKHBUUkQtPlNCSFVGRiA9PSAxKSB7DQorICAgICAgICBpZigoY1NCSFVGRkZTID09IDIpIHx8IChjU0JIVUZGUkRXID09IDIpIHx8IChjU0JIVUZGUkRIID09IDIpDQorICAgICAgICAgICAgICAgIHx8IChjU0JIVUZGUkRYID09IDIpIHx8IChjU0JIVUZGUkRZID09IDIpKSB7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gc2VnbWVudCA6IFNCSFVGRkZTPTIgb3IgU0JIVUZGUkRXPTIgb3IgIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNCSFVGRlJESD0yIG9yIFNCSFVGRlJEWD0yIG9yIFNCSFVGRlJEWT0yIGlzIG5vdCBwZXJtaXR0ZWQiKTsNCisgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICB9DQorICAgICAgICBuSW5kZXggPSAwOw0KKyAgICAgICAgaWYoY1NCSFVGRkZTID09IDApIHsNCisgICAgICAgICAgICBKQklHMl9BTExPQyhUYWJsZV9CNiwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjYsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CNikgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjYpKTsNCisgICAgICAgICAgICBwVFJELT5TQkhVRkZGUyA9IFRhYmxlX0I2Ow0KKyAgICAgICAgfSBlbHNlIGlmKGNTQkhVRkZGUyA9PSAxKSB7DQorICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjcsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0I3LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjcpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0I3KSk7DQorICAgICAgICAgICAgcFRSRC0+U0JIVUZGRlMgPSBUYWJsZV9CNzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcFNlZyA9IGZpbmRSZWZlcnJlZFNlZ21lbnRCeVR5cGVBbmRJbmRleChwU2VnbWVudCwgNTMsIG5JbmRleCsrKTsNCisgICAgICAgICAgICBpZighcFNlZykgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBzZWdtZW50IDogU0JIVUZGRlMgY2FuJ3QgZmluZCB1c2VyIHN1cHBsaWVkIHRhYmxlIik7DQorICAgICAgICAgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRkZTID0gcFNlZy0+bV9SZXN1bHQuaHQ7DQorICAgICAgICB9DQorICAgICAgICBpZihjU0JIVUZGRFMgPT0gMCkgew0KKyAgICAgICAgICAgIEpCSUcyX0FMTE9DKFRhYmxlX0I4LCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9COCwNCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0I4KSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9COCkpOw0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRkRTID0gVGFibGVfQjg7DQorICAgICAgICB9IGVsc2UgaWYoY1NCSFVGRkRTID09IDEpIHsNCisgICAgICAgICAgICBKQklHMl9BTExPQyhUYWJsZV9COSwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjksDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9COSkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjkpKTsNCisgICAgICAgICAgICBwVFJELT5TQkhVRkZEUyA9IFRhYmxlX0I5Ow0KKyAgICAgICAgfSBlbHNlIGlmKGNTQkhVRkZEUyA9PSAyKSB7DQorICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjEwLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTAsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTApIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxMCkpOw0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRkRTID0gVGFibGVfQjEwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwU2VnID0gZmluZFJlZmVycmVkU2VnbWVudEJ5VHlwZUFuZEluZGV4KHBTZWdtZW50LCA1MywgbkluZGV4KyspOw0KKyAgICAgICAgICAgIGlmKCFwU2VnKSB7DQorICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInRleHQgcmVnaW9uIHNlZ21lbnQgOiBTQkhVRkZEUyBjYW4ndCBmaW5kIHVzZXIgc3VwcGxpZWQgdGFibGUiKTsNCisgICAgICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFRSRC0+U0JIVUZGRFMgPSBwU2VnLT5tX1Jlc3VsdC5odDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKGNTQkhVRkZEVCA9PSAwKSB7DQorICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjExLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTEsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTEpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxMSkpOw0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRkRUID0gVGFibGVfQjExOw0KKyAgICAgICAgfSBlbHNlIGlmKGNTQkhVRkZEVCA9PSAxKSB7DQorICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjEyLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTIsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTIpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxMikpOw0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRkRUID0gVGFibGVfQjEyOw0KKyAgICAgICAgfSBlbHNlIGlmKGNTQkhVRkZEVCA9PSAyKSB7DQorICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjEzLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTMsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTMpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxMykpOw0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRkRUID0gVGFibGVfQjEzOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwU2VnID0gZmluZFJlZmVycmVkU2VnbWVudEJ5VHlwZUFuZEluZGV4KHBTZWdtZW50LCA1MywgbkluZGV4KyspOw0KKyAgICAgICAgICAgIGlmKCFwU2VnKSB7DQorICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInRleHQgcmVnaW9uIHNlZ21lbnQgOiBTQkhVRkZEVCBjYW4ndCBmaW5kIHVzZXIgc3VwcGxpZWQgdGFibGUiKTsNCisgICAgICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFRSRC0+U0JIVUZGRFQgPSBwU2VnLT5tX1Jlc3VsdC5odDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKGNTQkhVRkZSRFcgPT0gMCkgew0KKyAgICAgICAgICAgIEpCSUcyX0FMTE9DKFRhYmxlX0IxNCwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjE0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjE0KSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMTQpKTsNCisgICAgICAgICAgICBwVFJELT5TQkhVRkZSRFcgPSBUYWJsZV9CMTQ7DQorICAgICAgICB9IGVsc2UgaWYoY1NCSFVGRlJEVyA9PSAxKSB7DQorICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjE1LCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTUsDQorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTUpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxNSkpOw0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRlJEVyA9IFRhYmxlX0IxNTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcFNlZyA9IGZpbmRSZWZlcnJlZFNlZ21lbnRCeVR5cGVBbmRJbmRleChwU2VnbWVudCwgNTMsIG5JbmRleCsrKTsNCisgICAgICAgICAgICBpZighcFNlZykgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBzZWdtZW50IDogU0JIVUZGUkRXIGNhbid0IGZpbmQgdXNlciBzdXBwbGllZCB0YWJsZSIpOw0KKyAgICAgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwVFJELT5TQkhVRkZSRFcgPSBwU2VnLT5tX1Jlc3VsdC5odDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKGNTQkhVRkZSREggPT0gMCkgew0KKyAgICAgICAgICAgIGlmKCFUYWJsZV9CMTQpIHsNCisgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjE0LCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjE0KSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMTQpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFRSRC0+U0JIVUZGUkRIID0gVGFibGVfQjE0Ow0KKyAgICAgICAgfSBlbHNlIGlmKGNTQkhVRkZSREggPT0gMSkgew0KKyAgICAgICAgICAgIGlmKCFUYWJsZV9CMTUpIHsNCisgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjE1LCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjE1KSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMTUpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFRSRC0+U0JIVUZGUkRIID0gVGFibGVfQjE1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwU2VnID0gZmluZFJlZmVycmVkU2VnbWVudEJ5VHlwZUFuZEluZGV4KHBTZWdtZW50LCA1MywgbkluZGV4KyspOw0KKyAgICAgICAgICAgIGlmKCFwU2VnKSB7DQorICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInRleHQgcmVnaW9uIHNlZ21lbnQgOiBTQkhVRkZSREggY2FuJ3QgZmluZCB1c2VyIHN1cHBsaWVkIHRhYmxlIik7DQorICAgICAgICAgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRlJESCA9IHBTZWctPm1fUmVzdWx0Lmh0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoY1NCSFVGRlJEWCA9PSAwKSB7DQorICAgICAgICAgICAgaWYoIVRhYmxlX0IxNCkgew0KKyAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhUYWJsZV9CMTQsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0IxNCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTQpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxNCkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwVFJELT5TQkhVRkZSRFggPSBUYWJsZV9CMTQ7DQorICAgICAgICB9IGVsc2UgaWYoY1NCSFVGRlJEWCA9PSAxKSB7DQorICAgICAgICAgICAgaWYoIVRhYmxlX0IxNSkgew0KKyAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhUYWJsZV9CMTUsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0IxNSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTUpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxNSkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwVFJELT5TQkhVRkZSRFggPSBUYWJsZV9CMTU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBTZWcgPSBmaW5kUmVmZXJyZWRTZWdtZW50QnlUeXBlQW5kSW5kZXgocFNlZ21lbnQsIDUzLCBuSW5kZXgrKyk7DQorICAgICAgICAgICAgaWYoIXBTZWcpIHsNCisgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gc2VnbWVudCA6IFNCSFVGRlJEWCBjYW4ndCBmaW5kIHVzZXIgc3VwcGxpZWQgdGFibGUiKTsNCisgICAgICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFRSRC0+U0JIVUZGUkRYID0gcFNlZy0+bV9SZXN1bHQuaHQ7DQorICAgICAgICB9DQorICAgICAgICBpZihjU0JIVUZGUkRZID09IDApIHsNCisgICAgICAgICAgICBpZighVGFibGVfQjE0KSB7DQorICAgICAgICAgICAgICAgIEpCSUcyX0FMTE9DKFRhYmxlX0IxNCwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjE0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0IxNCkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjE0KSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRlJEWSA9IFRhYmxlX0IxNDsNCisgICAgICAgIH0gZWxzZSBpZihjU0JIVUZGUkRZID09IDEpIHsNCisgICAgICAgICAgICBpZighVGFibGVfQjE1KSB7DQorICAgICAgICAgICAgICAgIEpCSUcyX0FMTE9DKFRhYmxlX0IxNSwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjE1LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0IxNSkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjE1KSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRlJEWSA9IFRhYmxlX0IxNTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcFNlZyA9IGZpbmRSZWZlcnJlZFNlZ21lbnRCeVR5cGVBbmRJbmRleChwU2VnbWVudCwgNTMsIG5JbmRleCsrKTsNCisgICAgICAgICAgICBpZighcFNlZykgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBzZWdtZW50IDogU0JIVUZGUkRZIGNhbid0IGZpbmQgdXNlciBzdXBwbGllZCB0YWJsZSIpOw0KKyAgICAgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwVFJELT5TQkhVRkZSRFkgPSBwU2VnLT5tX1Jlc3VsdC5odDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKGNTQkhVRkZSU0laRSA9PSAwKSB7DQorICAgICAgICAgICAgSkJJRzJfQUxMT0MoVGFibGVfQjEsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0IxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjEpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxKSk7DQorICAgICAgICAgICAgcFRSRC0+U0JIVUZGUlNJWkUgPSBUYWJsZV9CMTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcFNlZyA9IGZpbmRSZWZlcnJlZFNlZ21lbnRCeVR5cGVBbmRJbmRleChwU2VnbWVudCwgNTMsIG5JbmRleCsrKTsNCisgICAgICAgICAgICBpZighcFNlZykgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBzZWdtZW50IDogU0JIVUZGUlNJWkUgY2FuJ3QgZmluZCB1c2VyIHN1cHBsaWVkIHRhYmxlIik7DQorICAgICAgICAgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBUUkQtPlNCSFVGRlJTSVpFID0gcFNlZy0+bV9SZXN1bHQuaHQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYocFRSRC0+U0JSRUZJTkUgPT0gMSkgew0KKyAgICAgICAgZHdUZW1wID0gcFRSRC0+U0JSVEVNUExBVEUgPyAxIDw8IDEwIDogMSA8PCAxMzsNCisgICAgICAgIGdyQ29udGV4dCA9IChKQmlnMkFyaXRoQ3R4KiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKEpCaWcyQXJpdGhDdHgpLCBkd1RlbXApOw0KKyAgICAgICAgSkJJRzJfbWVtc2V0KGdyQ29udGV4dCwgMCwgc2l6ZW9mKEpCaWcyQXJpdGhDdHgpKmR3VGVtcCk7DQorICAgIH0NCisgICAgaWYocFRSRC0+U0JIVUZGID09IDApIHsNCisgICAgICAgIEpCSUcyX0FMTE9DKHBBcml0aERlY29kZXIsIENKQmlnMl9Bcml0aERlY29kZXIobV9wU3RyZWFtKSk7DQorICAgICAgICBwU2VnbWVudC0+bV9uUmVzdWx0VHlwZSA9IEpCSUcyX0lNQUdFX1BPSU5URVI7DQorICAgICAgICBwU2VnbWVudC0+bV9SZXN1bHQuaW0gPSBwVFJELT5kZWNvZGVfQXJpdGgocEFyaXRoRGVjb2RlciwgZ3JDb250ZXh0KTsNCisgICAgICAgIGRlbGV0ZSBwQXJpdGhEZWNvZGVyOw0KKyAgICAgICAgaWYocFNlZ21lbnQtPm1fUmVzdWx0LmltID09IE5VTEwpIHsNCisgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICB9DQorICAgICAgICBtX3BTdHJlYW0tPmFsaWduQnl0ZSgpOw0KKyAgICAgICAgbV9wU3RyZWFtLT5vZmZzZXQoMik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwU2VnbWVudC0+bV9uUmVzdWx0VHlwZSA9IEpCSUcyX0lNQUdFX1BPSU5URVI7DQorICAgICAgICBwU2VnbWVudC0+bV9SZXN1bHQuaW0gPSBwVFJELT5kZWNvZGVfSHVmZm1hbihtX3BTdHJlYW0sIGdyQ29udGV4dCk7DQorICAgICAgICBpZihwU2VnbWVudC0+bV9SZXN1bHQuaW0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFN0cmVhbS0+YWxpZ25CeXRlKCk7DQorICAgIH0NCisgICAgaWYocFNlZ21lbnQtPm1fY0ZsYWdzLnMudHlwZSAhPSA0KSB7DQorICAgICAgICBpZighbV9iQnVmU3BlY2lmaWVkKSB7DQorICAgICAgICAgICAgSkJpZzJQYWdlSW5mbyAqcFBhZ2VJbmZvID0gbV9wUGFnZUluZm9MaXN0LT5nZXRMYXN0KCk7DQorICAgICAgICAgICAgaWYgKChwUGFnZUluZm8tPm1fYklzU3RyaXBlZCA9PSAxKSAmJiAocmkueSArIHJpLmhlaWdodCA+IG1fcFBhZ2UtPm1fbkhlaWdodCkpIHsNCisgICAgICAgICAgICAgICAgbV9wUGFnZS0+ZXhwYW5kKHJpLnkgKyByaS5oZWlnaHQsIChwUGFnZUluZm8tPm1fY0ZsYWdzICYgNCkgPyAxIDogMCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wUGFnZS0+Y29tcG9zZUZyb20ocmkueCwgcmkueSwgcFNlZ21lbnQtPm1fUmVzdWx0LmltLCAoSkJpZzJDb21wb3NlT3ApKHJpLmZsYWdzICYgMHgwMykpOw0KKyAgICAgICAgZGVsZXRlIHBTZWdtZW50LT5tX1Jlc3VsdC5pbTsNCisgICAgICAgIHBTZWdtZW50LT5tX1Jlc3VsdC5pbSA9IE5VTEw7DQorICAgIH0NCisgICAgZGVsZXRlIHBUUkQ7DQorICAgIGlmKFNCU1lNUykgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNUyk7DQorICAgIH0NCisgICAgaWYoU0JTWU1DT0RFUykgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNQ09ERVMpOw0KKyAgICB9DQorICAgIGlmKGdyQ29udGV4dCkgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKGdyQ29udGV4dCk7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjEpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CMTsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CNikgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0I2Ow0KKyAgICB9DQorICAgIGlmKFRhYmxlX0I3KSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjc7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjgpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CODsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9COSkgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0I5Ow0KKyAgICB9DQorICAgIGlmKFRhYmxlX0IxMCkgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0IxMDsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CMTEpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CMTE7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjEyKSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjEyOw0KKyAgICB9DQorICAgIGlmKFRhYmxlX0IxMykgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0IxMzsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CMTQpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CMTQ7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjE1KSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjE1Ow0KKyAgICB9DQorICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KK2ZhaWxlZDoNCisgICAgZGVsZXRlIHBUUkQ7DQorICAgIGlmKFNCU1lNUykgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNUyk7DQorICAgIH0NCisgICAgaWYoU0JTWU1DT0RFUykgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNQ09ERVMpOw0KKyAgICB9DQorICAgIGlmKGdyQ29udGV4dCkgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKGdyQ29udGV4dCk7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjEpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CMTsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CNikgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0I2Ow0KKyAgICB9DQorICAgIGlmKFRhYmxlX0I3KSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjc7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjgpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CODsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9COSkgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0I5Ow0KKyAgICB9DQorICAgIGlmKFRhYmxlX0IxMCkgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0IxMDsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CMTEpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CMTE7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjEyKSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjEyOw0KKyAgICB9DQorICAgIGlmKFRhYmxlX0IxMykgew0KKyAgICAgICAgZGVsZXRlIFRhYmxlX0IxMzsNCisgICAgfQ0KKyAgICBpZihUYWJsZV9CMTQpIHsNCisgICAgICAgIGRlbGV0ZSBUYWJsZV9CMTQ7DQorICAgIH0NCisgICAgaWYoVGFibGVfQjE1KSB7DQorICAgICAgICBkZWxldGUgVGFibGVfQjE1Ow0KKyAgICB9DQorICAgIHJldHVybiBuUmV0Ow0KK30NCisNCitGWF9CT09MIENKQmlnMl9Db250ZXh0OjpwYXJzZVBhdHRlcm5EaWN0KENKQmlnMl9TZWdtZW50ICpwU2VnbWVudCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9EV09SRCBkd1RlbXA7DQorICAgIEZYX0JZVEUgY0ZsYWdzOw0KKyAgICBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQ7DQorICAgIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXI7DQorICAgIENKQmlnMl9QRERQcm9jICpwUEREOw0KKyAgICBGWF9JTlQzMiBuUmV0Ow0KKyAgICBKQklHMl9BTExPQyhwUERELCBDSkJpZzJfUEREUHJvYygpKTsNCisgICAgaWYoKG1fcFN0cmVhbS0+cmVhZDFCeXRlKCZjRmxhZ3MpICE9IDApDQorICAgICAgICAgICAgfHwgKG1fcFN0cmVhbS0+cmVhZDFCeXRlKCZwUERELT5IRFBXKSAhPSAwKQ0KKyAgICAgICAgICAgIHx8IChtX3BTdHJlYW0tPnJlYWQxQnl0ZSgmcFBERC0+SERQSCkgIT0gMCkNCisgICAgICAgICAgICB8fCAobV9wU3RyZWFtLT5yZWFkSW50ZWdlcigmcFBERC0+R1JBWU1BWCkgIT0gMCkpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInBhdHRlcm4gZGljdGlvbmFyeSBzZWdtZW50IDogZGF0YSBoZWFkZXIgdG9vIHNob3J0LiIpOw0KKyAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX1RPT19TSE9SVDsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIGlmIChwUERELT5HUkFZTUFYID4gSkJJRzJfTUFYX1BBVFRFUk5fSU5ERVgpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInBhdHRlcm4gZGljdGlvbmFyeSBzZWdtZW50IDogdG9vIG1heCBncmF5IG1heC4iKTsNCisgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9MSU1JVDsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIHBQREQtPkhETU1SID0gY0ZsYWdzICYgMHgwMTsNCisgICAgcFBERC0+SERURU1QTEFURSA9IChjRmxhZ3MgPj4gMSkgJiAweDAzOw0KKyAgICBwU2VnbWVudC0+bV9uUmVzdWx0VHlwZSA9IEpCSUcyX1BBVFRFUk5fRElDVF9QT0lOVEVSOw0KKyAgICBpZihwUERELT5IRE1NUiA9PSAwKSB7DQorICAgICAgICBkd1RlbXAgPSBwUERELT5IRFRFTVBMQVRFID09IDAgPyA2NTUzNiA6IHBQREQtPkhEVEVNUExBVEUgPT0gMSA/IDgxOTIgOiAxMDI0Ow0KKyAgICAgICAgZ2JDb250ZXh0ID0gKEpCaWcyQXJpdGhDdHgqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihzaXplb2YoSkJpZzJBcml0aEN0eCksIGR3VGVtcCk7DQorICAgICAgICBKQklHMl9tZW1zZXQoZ2JDb250ZXh0LCAwLCBzaXplb2YoSkJpZzJBcml0aEN0eCkqZHdUZW1wKTsNCisgICAgICAgIEpCSUcyX0FMTE9DKHBBcml0aERlY29kZXIsIENKQmlnMl9Bcml0aERlY29kZXIobV9wU3RyZWFtKSk7DQorICAgICAgICBwU2VnbWVudC0+bV9SZXN1bHQucGQgPSBwUERELT5kZWNvZGVfQXJpdGgocEFyaXRoRGVjb2RlciwgZ2JDb250ZXh0LCBwUGF1c2UpOw0KKyAgICAgICAgZGVsZXRlIHBBcml0aERlY29kZXI7DQorICAgICAgICBpZihwU2VnbWVudC0+bV9SZXN1bHQucGQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShnYkNvbnRleHQpOw0KKyAgICAgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShnYkNvbnRleHQpOw0KKyAgICAgICAgbV9wU3RyZWFtLT5hbGlnbkJ5dGUoKTsNCisgICAgICAgIG1fcFN0cmVhbS0+b2Zmc2V0KDIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcFNlZ21lbnQtPm1fUmVzdWx0LnBkID0gcFBERC0+ZGVjb2RlX01NUihtX3BTdHJlYW0sIHBQYXVzZSk7DQorICAgICAgICBpZihwU2VnbWVudC0+bV9SZXN1bHQucGQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFN0cmVhbS0+YWxpZ25CeXRlKCk7DQorICAgIH0NCisgICAgZGVsZXRlIHBQREQ7DQorICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KK2ZhaWxlZDoNCisgICAgZGVsZXRlIHBQREQ7DQorICAgIHJldHVybiBuUmV0Ow0KK30NCitGWF9CT09MIENKQmlnMl9Db250ZXh0OjpwYXJzZUhhbGZ0b25lUmVnaW9uKENKQmlnMl9TZWdtZW50ICpwU2VnbWVudCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9EV09SRCBkd1RlbXA7DQorICAgIEZYX0JZVEUgY0ZsYWdzOw0KKyAgICBKQmlnMlJlZ2lvbkluZm8gcmk7DQorICAgIENKQmlnMl9TZWdtZW50ICpwU2VnOw0KKyAgICBDSkJpZzJfUGF0dGVybkRpY3QgKnBQYXR0ZXJuRGljdDsNCisgICAgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0Ow0KKyAgICBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyOw0KKyAgICBDSkJpZzJfSFRSRFByb2MgKnBIUkQ7DQorICAgIEZYX0lOVDMyIG5SZXQ7DQorICAgIEpCSUcyX0FMTE9DKHBIUkQsIENKQmlnMl9IVFJEUHJvYygpKTsNCisgICAgaWYoKHBhcnNlUmVnaW9uSW5mbygmcmkpICE9IEpCSUcyX1NVQ0NFU1MpDQorICAgICAgICAgICAgfHwgKG1fcFN0cmVhbS0+cmVhZDFCeXRlKCZjRmxhZ3MpICE9IDApDQorICAgICAgICAgICAgfHwgKG1fcFN0cmVhbS0+cmVhZEludGVnZXIoJnBIUkQtPkhHVykgIT0gMCkNCisgICAgICAgICAgICB8fCAobV9wU3RyZWFtLT5yZWFkSW50ZWdlcigmcEhSRC0+SEdIKSAhPSAwKQ0KKyAgICAgICAgICAgIHx8IChtX3BTdHJlYW0tPnJlYWRJbnRlZ2VyKChGWF9EV09SRCopJnBIUkQtPkhHWCkgIT0gMCkNCisgICAgICAgICAgICB8fCAobV9wU3RyZWFtLT5yZWFkSW50ZWdlcigoRlhfRFdPUkQqKSZwSFJELT5IR1kpICE9IDApDQorICAgICAgICAgICAgfHwgKG1fcFN0cmVhbS0+cmVhZFNob3J0SW50ZWdlcigmcEhSRC0+SFJYKSAhPSAwKQ0KKyAgICAgICAgICAgIHx8IChtX3BTdHJlYW0tPnJlYWRTaG9ydEludGVnZXIoJnBIUkQtPkhSWSkgIT0gMCkpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoImhhbGZ0b25lIHJlZ2lvbiBzZWdtZW50IDogZGF0YSBoZWFkZXIgdG9vIHNob3J0LiIpOw0KKyAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX1RPT19TSE9SVDsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIHBIUkQtPkhCVyA9IHJpLndpZHRoOw0KKyAgICBwSFJELT5IQkggPSByaS5oZWlnaHQ7DQorICAgIHBIUkQtPkhNTVIgPSBjRmxhZ3MgJiAweDAxOw0KKyAgICBwSFJELT5IVEVNUExBVEUgPSAoY0ZsYWdzID4+IDEpICYgMHgwMzsNCisgICAgcEhSRC0+SEVOQUJMRVNLSVAgPSAoY0ZsYWdzID4+IDMpICYgMHgwMTsNCisgICAgcEhSRC0+SENPTUJPUCA9IChKQmlnMkNvbXBvc2VPcCkoKGNGbGFncyA+PiA0KSAmIDB4MDcpOw0KKyAgICBwSFJELT5IREVGUElYRUwgPSAoY0ZsYWdzID4+IDcpICYgMHgwMTsNCisgICAgaWYocFNlZ21lbnQtPm1fblJlZmVycmVkX3RvX3NlZ21lbnRfY291bnQgIT0gMSkgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiaGFsZnRvbmUgcmVnaW9uIHNlZ21lbnQgOiByZWZlcmVkIHRvIHNlZ21lbnQgY291bnQgbm90IGVxdWFscyAxIik7DQorICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBwU2VnID0gZmluZFNlZ21lbnRCeU51bWJlcihwU2VnbWVudC0+bV9wUmVmZXJyZWRfdG9fc2VnbWVudF9udW1iZXJzWzBdKTsNCisgICAgaWYoIChwU2VnID09IE5VTEwpIHx8IChwU2VnLT5tX2NGbGFncy5zLnR5cGUgIT0gMTYpKSB7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJoYWxmdG9uZSByZWdpb24gc2VnbWVudCA6IHJlZmVyZWQgdG8gc2VnbWVudCBpcyBub3QgcGF0dGVybiBkaWN0Iik7DQorICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfRkVUQUw7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBwUGF0dGVybkRpY3QgPSBwU2VnLT5tX1Jlc3VsdC5wZDsNCisgICAgaWYoKHBQYXR0ZXJuRGljdCA9PSBOVUxMKSB8fCAocFBhdHRlcm5EaWN0LT5OVU1QQVRTID09IDApKSB7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJoYWxmdG9uZSByZWdpb24gc2VnbWVudCA6IGhhcyBubyBwYXR0ZXJucyBpbnB1dCIpOw0KKyAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgcEhSRC0+SE5VTVBBVFMgPSBwUGF0dGVybkRpY3QtPk5VTVBBVFM7DQorICAgIHBIUkQtPkhQQVRTID0gcFBhdHRlcm5EaWN0LT5IRFBBVFM7DQorICAgIHBIUkQtPkhQVyA9IHBQYXR0ZXJuRGljdC0+SERQQVRTWzBdLT5tX25XaWR0aDsNCisgICAgcEhSRC0+SFBIID0gcFBhdHRlcm5EaWN0LT5IRFBBVFNbMF0tPm1fbkhlaWdodDsNCisgICAgcFNlZ21lbnQtPm1fblJlc3VsdFR5cGUgPSBKQklHMl9JTUFHRV9QT0lOVEVSOw0KKyAgICBpZihwSFJELT5ITU1SID09IDApIHsNCisgICAgICAgIGR3VGVtcCA9IHBIUkQtPkhURU1QTEFURSA9PSAwID8gNjU1MzYgOiBwSFJELT5IVEVNUExBVEUgPT0gMSA/IDgxOTIgOiAxMDI0Ow0KKyAgICAgICAgZ2JDb250ZXh0ID0gKEpCaWcyQXJpdGhDdHgqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihzaXplb2YoSkJpZzJBcml0aEN0eCksIGR3VGVtcCk7DQorICAgICAgICBKQklHMl9tZW1zZXQoZ2JDb250ZXh0LCAwLCBzaXplb2YoSkJpZzJBcml0aEN0eCkqZHdUZW1wKTsNCisgICAgICAgIEpCSUcyX0FMTE9DKHBBcml0aERlY29kZXIsIENKQmlnMl9Bcml0aERlY29kZXIobV9wU3RyZWFtKSk7DQorICAgICAgICBwU2VnbWVudC0+bV9SZXN1bHQuaW0gPSBwSFJELT5kZWNvZGVfQXJpdGgocEFyaXRoRGVjb2RlciwgZ2JDb250ZXh0LCBwUGF1c2UpOw0KKyAgICAgICAgZGVsZXRlIHBBcml0aERlY29kZXI7DQorICAgICAgICBpZihwU2VnbWVudC0+bV9SZXN1bHQuaW0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShnYkNvbnRleHQpOw0KKyAgICAgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShnYkNvbnRleHQpOw0KKyAgICAgICAgbV9wU3RyZWFtLT5hbGlnbkJ5dGUoKTsNCisgICAgICAgIG1fcFN0cmVhbS0+b2Zmc2V0KDIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcFNlZ21lbnQtPm1fUmVzdWx0LmltID0gcEhSRC0+ZGVjb2RlX01NUihtX3BTdHJlYW0sIHBQYXVzZSk7DQorICAgICAgICBpZihwU2VnbWVudC0+bV9SZXN1bHQuaW0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFN0cmVhbS0+YWxpZ25CeXRlKCk7DQorICAgIH0NCisgICAgaWYocFNlZ21lbnQtPm1fY0ZsYWdzLnMudHlwZSAhPSAyMCkgew0KKyAgICAgICAgaWYoIW1fYkJ1ZlNwZWNpZmllZCkgew0KKyAgICAgICAgICAgIEpCaWcyUGFnZUluZm8gKnBQYWdlSW5mbyA9IG1fcFBhZ2VJbmZvTGlzdC0+Z2V0TGFzdCgpOw0KKyAgICAgICAgICAgIGlmICgocFBhZ2VJbmZvLT5tX2JJc1N0cmlwZWQgPT0gMSkgJiYgKHJpLnkgKyByaS5oZWlnaHQgPiBtX3BQYWdlLT5tX25IZWlnaHQpKSB7DQorICAgICAgICAgICAgICAgIG1fcFBhZ2UtPmV4cGFuZChyaS55ICsgcmkuaGVpZ2h0LCAocFBhZ2VJbmZvLT5tX2NGbGFncyAmIDQpID8gMSA6IDApOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fcFBhZ2UtPmNvbXBvc2VGcm9tKHJpLngsIHJpLnksIHBTZWdtZW50LT5tX1Jlc3VsdC5pbSwgKEpCaWcyQ29tcG9zZU9wKShyaS5mbGFncyAmIDB4MDMpKTsNCisgICAgICAgIGRlbGV0ZSBwU2VnbWVudC0+bV9SZXN1bHQuaW07DQorICAgICAgICBwU2VnbWVudC0+bV9SZXN1bHQuaW0gPSBOVUxMOw0KKyAgICB9DQorICAgIGRlbGV0ZSBwSFJEOw0KKyAgICByZXR1cm4gSkJJRzJfU1VDQ0VTUzsNCitmYWlsZWQ6DQorICAgIGRlbGV0ZSBwSFJEOw0KKyAgICByZXR1cm4gblJldDsNCit9DQorDQorRlhfQk9PTCBDSkJpZzJfQ29udGV4dDo6cGFyc2VHZW5lcmljUmVnaW9uKENKQmlnMl9TZWdtZW50ICpwU2VnbWVudCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9EV09SRCBkd1RlbXA7DQorICAgIEZYX0JZVEUgY0ZsYWdzOw0KKyAgICBGWF9JTlQzMiBpLCBuUmV0Ow0KKyAgICBpZihtX3BHUkQgPT0gTlVMTCkgew0KKyAgICAgICAgSkJJRzJfQUxMT0MobV9wR1JELCBDSkJpZzJfR1JEUHJvYygpKTsNCisgICAgICAgIGlmKChwYXJzZVJlZ2lvbkluZm8oJm1fcmkpICE9IEpCSUcyX1NVQ0NFU1MpDQorICAgICAgICAgICAgICAgIHx8IChtX3BTdHJlYW0tPnJlYWQxQnl0ZSgmY0ZsYWdzKSAhPSAwKSkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoImdlbmVyaWMgcmVnaW9uIHNlZ21lbnQgOiBkYXRhIGhlYWRlciB0b28gc2hvcnQuIik7DQorICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX1RPT19TSE9SVDsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3JpLmhlaWdodCA8IDAgfHwgbV9yaS53aWR0aCA8IDApIHsNCisgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJnZW5lcmljIHJlZ2lvbiBzZWdtZW50IDogd3JvbmcgZGF0YS4iKTsNCisgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRkFJTEVEOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wR1JELT5HQlcgPSBtX3JpLndpZHRoOw0KKyAgICAgICAgbV9wR1JELT5HQkggPSBtX3JpLmhlaWdodDsNCisgICAgICAgIG1fcEdSRC0+TU1SID0gY0ZsYWdzICYgMHgwMTsNCisgICAgICAgIG1fcEdSRC0+R0JURU1QTEFURSA9IChjRmxhZ3MgPj4gMSkgJiAweDAzOw0KKyAgICAgICAgbV9wR1JELT5UUEdET04gPSAoY0ZsYWdzID4+IDMpICYgMHgwMTsNCisgICAgICAgIGlmKG1fcEdSRC0+TU1SID09IDApIHsNCisgICAgICAgICAgICBpZihtX3BHUkQtPkdCVEVNUExBVEUgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCA4OyBpKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmKG1fcFN0cmVhbS0+cmVhZDFCeXRlKChGWF9CWVRFKikmbV9wR1JELT5HQkFUW2ldKSAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiZ2VuZXJpYyByZWdpb24gc2VnbWVudCA6IGRhdGEgaGVhZGVyIHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfVE9PX1NIT1JUOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgMjsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZihtX3BTdHJlYW0tPnJlYWQxQnl0ZSgoRlhfQllURSopJm1fcEdSRC0+R0JBVFtpXSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoImdlbmVyaWMgcmVnaW9uIHNlZ21lbnQgOiBkYXRhIGhlYWRlciB0b28gc2hvcnQuIik7DQorICAgICAgICAgICAgICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX1RPT19TSE9SVDsNCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fcEdSRC0+VVNFU0tJUCA9IDA7DQorICAgIH0NCisgICAgcFNlZ21lbnQtPm1fblJlc3VsdFR5cGUgPSBKQklHMl9JTUFHRV9QT0lOVEVSOw0KKyAgICBpZihtX3BHUkQtPk1NUiA9PSAwKSB7DQorICAgICAgICBkd1RlbXAgPSBtX3BHUkQtPkdCVEVNUExBVEUgPT0gMCA/IDY1NTM2IDogbV9wR1JELT5HQlRFTVBMQVRFID09IDEgPyA4MTkyIDogMTAyNDsNCisgICAgICAgIGlmKG1fZ2JDb250ZXh0ID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX2diQ29udGV4dCA9IChKQmlnMkFyaXRoQ3R4KiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYyhzaXplb2YoSkJpZzJBcml0aEN0eCkgKiBkd1RlbXApOw0KKyAgICAgICAgICAgIEpCSUcyX21lbXNldChtX2diQ29udGV4dCwgMCwgc2l6ZW9mKEpCaWcyQXJpdGhDdHgpKmR3VGVtcCk7DQorICAgICAgICB9DQorICAgICAgICBpZihtX3BBcml0aERlY29kZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIEpCSUcyX0FMTE9DKG1fcEFyaXRoRGVjb2RlciwgQ0pCaWcyX0FyaXRoRGVjb2RlcihtX3BTdHJlYW0pKTsNCisgICAgICAgICAgICBtX1Byb2Nlc3NpdmVTdGF0dXMgPSBtX3BHUkQtPlN0YXJ0X2RlY29kZV9Bcml0aCgmcFNlZ21lbnQtPm1fUmVzdWx0LmltLCBtX3BBcml0aERlY29kZXIsIG1fZ2JDb250ZXh0LCBwUGF1c2UpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX1Byb2Nlc3NpdmVTdGF0dXMgPSBtX3BHUkQtPkNvbnRpbnVlX2RlY29kZShwUGF1c2UpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgT3V0cHV0Qml0bWFwKHBTZWdtZW50LT5tX1Jlc3VsdC5pbSk7DQorICAgICAgICBpZihtX1Byb2Nlc3NpdmVTdGF0dXMgPT0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRSkgew0KKyAgICAgICAgICAgIGlmKHBTZWdtZW50LT5tX2NGbGFncy5zLnR5cGUgIT0gMzYpIHsNCisgICAgICAgICAgICAgICAgaWYoIW1fYkJ1ZlNwZWNpZmllZCkgew0KKyAgICAgICAgICAgICAgICAgICAgSkJpZzJQYWdlSW5mbyAqcFBhZ2VJbmZvID0gbV9wUGFnZUluZm9MaXN0LT5nZXRMYXN0KCk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoKHBQYWdlSW5mby0+bV9iSXNTdHJpcGVkID09IDEpICYmIChtX3JpLnkgKyBtX3JpLmhlaWdodCA+IG1fcFBhZ2UtPm1fbkhlaWdodCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BQYWdlLT5leHBhbmQobV9yaS55ICsgbV9yaS5oZWlnaHQsIChwUGFnZUluZm8tPm1fY0ZsYWdzICYgNCkgPyAxIDogMCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfUkVDVCBSZWN0ID0gbV9wR1JELT5HZXRSZXBsYWNlUmVjdCgpOw0KKyAgICAgICAgICAgICAgICBtX3BQYWdlLT5jb21wb3NlRnJvbShtX3JpLnggKyBSZWN0LmxlZnQsIG1fcmkueSArIFJlY3QudG9wLCBwU2VnbWVudC0+bV9SZXN1bHQuaW0sIChKQmlnMkNvbXBvc2VPcCkobV9yaS5mbGFncyAmIDB4MDMpLCAmUmVjdCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBkZWxldGUgbV9wQXJpdGhEZWNvZGVyOw0KKyAgICAgICAgICAgIG1fcEFyaXRoRGVjb2RlciA9IE5VTEw7DQorICAgICAgICAgICAgaWYocFNlZ21lbnQtPm1fUmVzdWx0LmltID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKG1fZ2JDb250ZXh0KTsNCisgICAgICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgICAgICBtX2diQ29udGV4dCA9IE5VTEw7DQorICAgICAgICAgICAgICAgIG1fUHJvY2Vzc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0VSUk9SOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKG1fZ2JDb250ZXh0KTsNCisgICAgICAgICAgICBtX2diQ29udGV4dCA9IE5VTEw7DQorICAgICAgICAgICAgbV9wU3RyZWFtLT5hbGlnbkJ5dGUoKTsNCisgICAgICAgICAgICBtX3BTdHJlYW0tPm9mZnNldCgyKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYQ09ERUNfU1RBVFVTIHN0YXR1cyA9IG1fcEdSRC0+U3RhcnRfZGVjb2RlX01NUigmcFNlZ21lbnQtPm1fUmVzdWx0LmltLCBtX3BTdHJlYW0sIHBQYXVzZSk7DQorICAgICAgICB3aGlsZShzdGF0dXMgPT0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRSkgew0KKyAgICAgICAgICAgIG1fcEdSRC0+Q29udGludWVfZGVjb2RlKHBQYXVzZSk7DQorICAgICAgICB9DQorICAgICAgICBpZihwU2VnbWVudC0+bV9SZXN1bHQuaW0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIG5SZXQgPSBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFN0cmVhbS0+YWxpZ25CeXRlKCk7DQorICAgIH0NCisgICAgaWYocFNlZ21lbnQtPm1fY0ZsYWdzLnMudHlwZSAhPSAzNikgew0KKyAgICAgICAgaWYoIW1fYkJ1ZlNwZWNpZmllZCkgew0KKyAgICAgICAgICAgIEpCaWcyUGFnZUluZm8gKnBQYWdlSW5mbyA9IG1fcFBhZ2VJbmZvTGlzdC0+Z2V0TGFzdCgpOw0KKyAgICAgICAgICAgIGlmICgocFBhZ2VJbmZvLT5tX2JJc1N0cmlwZWQgPT0gMSkgJiYgKG1fcmkueSArIG1fcmkuaGVpZ2h0ID4gbV9wUGFnZS0+bV9uSGVpZ2h0KSkgew0KKyAgICAgICAgICAgICAgICBtX3BQYWdlLT5leHBhbmQobV9yaS55ICsgbV9yaS5oZWlnaHQsIChwUGFnZUluZm8tPm1fY0ZsYWdzICYgNCkgPyAxIDogMCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfUkVDVCBSZWN0ID0gbV9wR1JELT5HZXRSZXBsYWNlUmVjdCgpOw0KKyAgICAgICAgbV9wUGFnZS0+Y29tcG9zZUZyb20obV9yaS54ICsgUmVjdC5sZWZ0LCBtX3JpLnkgKyBSZWN0LnRvcCwgcFNlZ21lbnQtPm1fUmVzdWx0LmltLCAoSkJpZzJDb21wb3NlT3ApKG1fcmkuZmxhZ3MgJiAweDAzKSwgJlJlY3QpOw0KKyAgICAgICAgZGVsZXRlIHBTZWdtZW50LT5tX1Jlc3VsdC5pbTsNCisgICAgICAgIHBTZWdtZW50LT5tX1Jlc3VsdC5pbSA9IE5VTEw7DQorICAgIH0NCisgICAgZGVsZXRlIG1fcEdSRDsNCisgICAgbV9wR1JEID0gTlVMTDsNCisgICAgcmV0dXJuIEpCSUcyX1NVQ0NFU1M7DQorZmFpbGVkOg0KKyAgICBkZWxldGUgbV9wR1JEOw0KKyAgICBtX3BHUkQgPSBOVUxMOw0KKyAgICByZXR1cm4gblJldDsNCit9DQorDQorRlhfQk9PTCBDSkJpZzJfQ29udGV4dDo6cGFyc2VHZW5lcmljUmVmaW5lbWVudFJlZ2lvbihDSkJpZzJfU2VnbWVudCAqcFNlZ21lbnQpDQorew0KKyAgICBGWF9EV09SRCBkd1RlbXA7DQorICAgIEpCaWcyUmVnaW9uSW5mbyByaTsNCisgICAgQ0pCaWcyX1NlZ21lbnQgKnBTZWc7DQorICAgIEZYX0lOVDMyIGksIG5SZXQ7DQorICAgIEZYX0JZVEUgY0ZsYWdzOw0KKyAgICBKQmlnMkFyaXRoQ3R4ICpnckNvbnRleHQ7DQorICAgIENKQmlnMl9HUlJEUHJvYyAqcEdSUkQ7DQorICAgIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXI7DQorICAgIEpCSUcyX0FMTE9DKHBHUlJELCBDSkJpZzJfR1JSRFByb2MoKSk7DQorICAgIGlmKChwYXJzZVJlZ2lvbkluZm8oJnJpKSAhPSBKQklHMl9TVUNDRVNTKQ0KKyAgICAgICAgICAgIHx8IChtX3BTdHJlYW0tPnJlYWQxQnl0ZSgmY0ZsYWdzKSAhPSAwKSkgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiZ2VuZXJpYyByZWZpbmVtZW50IHJlZ2lvbiBzZWdtZW50IDogZGF0YSBoZWFkZXIgdG9vIHNob3J0LiIpOw0KKyAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX1RPT19TSE9SVDsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIHBHUlJELT5HUlcgPSByaS53aWR0aDsNCisgICAgcEdSUkQtPkdSSCA9IHJpLmhlaWdodDsNCisgICAgcEdSUkQtPkdSVEVNUExBVEUgPSBjRmxhZ3MgJiAweDAxOw0KKyAgICBwR1JSRC0+VFBHUk9OID0gKGNGbGFncyA+PiAxKSAmIDB4MDE7DQorICAgIGlmKHBHUlJELT5HUlRFTVBMQVRFID09IDApIHsNCisgICAgICAgIGZvcihpID0gMDsgaSA8IDQ7IGkrKykgew0KKyAgICAgICAgICAgIGlmKG1fcFN0cmVhbS0+cmVhZDFCeXRlKChGWF9CWVRFKikmcEdSUkQtPkdSQVRbaV0pICE9IDApIHsNCisgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiZ2VuZXJpYyByZWZpbmVtZW50IHJlZ2lvbiBzZWdtZW50IDogZGF0YSBoZWFkZXIgdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICBuUmV0ID0gSkJJRzJfRVJST1JfVE9PX1NIT1JUOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcFNlZyA9IE5VTEw7DQorICAgIGlmKHBTZWdtZW50LT5tX25SZWZlcnJlZF90b19zZWdtZW50X2NvdW50ID4gMCkgew0KKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgcFNlZ21lbnQtPm1fblJlZmVycmVkX3RvX3NlZ21lbnRfY291bnQ7IGkrKykgew0KKyAgICAgICAgICAgIHBTZWcgPSB0aGlzLT5maW5kU2VnbWVudEJ5TnVtYmVyKHBTZWdtZW50LT5tX3BSZWZlcnJlZF90b19zZWdtZW50X251bWJlcnNbMF0pOw0KKyAgICAgICAgICAgIGlmKHBTZWcgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJnZW5lcmljIHJlZmluZW1lbnQgcmVnaW9uIHNlZ21lbnQgOiBjYW4ndCBmaW5kIHJlZmVyZWQgdG8gc2VnbWVudHMiKTsNCisgICAgICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoKHBTZWctPm1fY0ZsYWdzLnMudHlwZSA9PSA0KSB8fCAocFNlZy0+bV9jRmxhZ3Mucy50eXBlID09IDIwKQ0KKyAgICAgICAgICAgICAgICAgICAgfHwgKHBTZWctPm1fY0ZsYWdzLnMudHlwZSA9PSAzNikgfHwgKHBTZWctPm1fY0ZsYWdzLnMudHlwZSA9PSA0MCkpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoaSA+PSBwU2VnbWVudC0+bV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudCkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoImdlbmVyaWMgcmVmaW5lbWVudCByZWdpb24gc2VnbWVudCA6IGNhbid0IGZpbmQgcmVmZXJlZCB0byBpbnRlcm1lZGlhdGUgcmVnaW9uIik7DQorICAgICAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEdSUkQtPkdSUkVGRVJFTkNFID0gcFNlZy0+bV9SZXN1bHQuaW07DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwR1JSRC0+R1JSRUZFUkVOQ0UgPSBtX3BQYWdlOw0KKyAgICB9DQorICAgIHBHUlJELT5HUlJFRkVSRU5DRURYID0gMDsNCisgICAgcEdSUkQtPkdSUkVGRVJFTkNFRFkgPSAwOw0KKyAgICBkd1RlbXAgPSBwR1JSRC0+R1JURU1QTEFURSA/IDEgPDwgMTAgOiAxIDw8IDEzOw0KKyAgICBnckNvbnRleHQgPSAoSkJpZzJBcml0aEN0eCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihKQmlnMkFyaXRoQ3R4KSwgZHdUZW1wKTsNCisgICAgSkJJRzJfbWVtc2V0KGdyQ29udGV4dCwgMCwgc2l6ZW9mKEpCaWcyQXJpdGhDdHgpKmR3VGVtcCk7DQorICAgIEpCSUcyX0FMTE9DKHBBcml0aERlY29kZXIsIENKQmlnMl9Bcml0aERlY29kZXIobV9wU3RyZWFtKSk7DQorICAgIHBTZWdtZW50LT5tX25SZXN1bHRUeXBlID0gSkJJRzJfSU1BR0VfUE9JTlRFUjsNCisgICAgcFNlZ21lbnQtPm1fUmVzdWx0LmltID0gcEdSUkQtPmRlY29kZShwQXJpdGhEZWNvZGVyLCBnckNvbnRleHQpOw0KKyAgICBkZWxldGUgcEFyaXRoRGVjb2RlcjsNCisgICAgaWYocFNlZ21lbnQtPm1fUmVzdWx0LmltID09IE5VTEwpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShnckNvbnRleHQpOw0KKyAgICAgICAgblJldCA9IEpCSUcyX0VSUk9SX0ZFVEFMOw0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKGdyQ29udGV4dCk7DQorICAgIG1fcFN0cmVhbS0+YWxpZ25CeXRlKCk7DQorICAgIG1fcFN0cmVhbS0+b2Zmc2V0KDIpOw0KKyAgICBpZihwU2VnbWVudC0+bV9jRmxhZ3Mucy50eXBlICE9IDQwKSB7DQorICAgICAgICBpZighbV9iQnVmU3BlY2lmaWVkKSB7DQorICAgICAgICAgICAgSkJpZzJQYWdlSW5mbyAqcFBhZ2VJbmZvID0gbV9wUGFnZUluZm9MaXN0LT5nZXRMYXN0KCk7DQorICAgICAgICAgICAgaWYgKChwUGFnZUluZm8tPm1fYklzU3RyaXBlZCA9PSAxKSAmJiAocmkueSArIHJpLmhlaWdodCA+IG1fcFBhZ2UtPm1fbkhlaWdodCkpIHsNCisgICAgICAgICAgICAgICAgbV9wUGFnZS0+ZXhwYW5kKHJpLnkgKyByaS5oZWlnaHQsIChwUGFnZUluZm8tPm1fY0ZsYWdzICYgNCkgPyAxIDogMCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wUGFnZS0+Y29tcG9zZUZyb20ocmkueCwgcmkueSwgcFNlZ21lbnQtPm1fUmVzdWx0LmltLCAoSkJpZzJDb21wb3NlT3ApKHJpLmZsYWdzICYgMHgwMykpOw0KKyAgICAgICAgZGVsZXRlIHBTZWdtZW50LT5tX1Jlc3VsdC5pbTsNCisgICAgICAgIHBTZWdtZW50LT5tX1Jlc3VsdC5pbSA9IE5VTEw7DQorICAgIH0NCisgICAgZGVsZXRlIHBHUlJEOw0KKyAgICByZXR1cm4gSkJJRzJfU1VDQ0VTUzsNCitmYWlsZWQ6DQorICAgIGRlbGV0ZSBwR1JSRDsNCisgICAgcmV0dXJuIG5SZXQ7DQorfQ0KK0ZYX0JPT0wgQ0pCaWcyX0NvbnRleHQ6OnBhcnNlVGFibGUoQ0pCaWcyX1NlZ21lbnQgKnBTZWdtZW50KQ0KK3sNCisgICAgcFNlZ21lbnQtPm1fblJlc3VsdFR5cGUgPSBKQklHMl9IVUZGTUFOX1RBQkxFX1BPSU5URVI7DQorICAgIEpCSUcyX0FMTE9DKHBTZWdtZW50LT5tX1Jlc3VsdC5odCwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShtX3BTdHJlYW0pKTsNCisgICAgaWYoIXBTZWdtZW50LT5tX1Jlc3VsdC5odC0+aXNPSygpKSB7DQorICAgICAgICBkZWxldGUgcFNlZ21lbnQtPm1fUmVzdWx0Lmh0Ow0KKyAgICAgICAgcFNlZ21lbnQtPm1fUmVzdWx0Lmh0ID0gTlVMTDsNCisgICAgICAgIHJldHVybiBKQklHMl9FUlJPUl9GRVRBTDsNCisgICAgfQ0KKyAgICBtX3BTdHJlYW0tPmFsaWduQnl0ZSgpOw0KKyAgICByZXR1cm4gSkJJRzJfU1VDQ0VTUzsNCit9DQorRlhfSU5UMzIgQ0pCaWcyX0NvbnRleHQ6OnBhcnNlUmVnaW9uSW5mbyhKQmlnMlJlZ2lvbkluZm8gKnBSSSkNCit7DQorICAgIGlmKChtX3BTdHJlYW0tPnJlYWRJbnRlZ2VyKChGWF9EV09SRCopJnBSSS0+d2lkdGgpICE9IDApDQorICAgICAgICAgICAgfHwgKG1fcFN0cmVhbS0+cmVhZEludGVnZXIoKEZYX0RXT1JEKikmcFJJLT5oZWlnaHQpICE9IDApDQorICAgICAgICAgICAgfHwgKG1fcFN0cmVhbS0+cmVhZEludGVnZXIoKEZYX0RXT1JEKikmcFJJLT54KSAhPSAwKQ0KKyAgICAgICAgICAgIHx8IChtX3BTdHJlYW0tPnJlYWRJbnRlZ2VyKChGWF9EV09SRCopJnBSSS0+eSkgIT0gMCkNCisgICAgICAgICAgICB8fCAobV9wU3RyZWFtLT5yZWFkMUJ5dGUoJnBSSS0+ZmxhZ3MpICE9IDApKSB7DQorICAgICAgICByZXR1cm4gSkJJRzJfRVJST1JfVE9PX1NIT1JUOw0KKyAgICB9DQorICAgIHJldHVybiBKQklHMl9TVUNDRVNTOw0KK30NCitKQmlnMkh1ZmZtYW5Db2RlICpDSkJpZzJfQ29udGV4dDo6ZGVjb2RlU3ltYm9sSURIdWZmbWFuVGFibGUoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSwNCisgICAgICAgIEZYX0RXT1JEIFNCTlVNU1lNUykNCit7DQorICAgIEpCaWcySHVmZm1hbkNvZGUgKlNCU1lNQ09ERVM7DQorICAgIEZYX0lOVDMyIHJ1bmNvZGVzWzM1XSwgcnVuY29kZXNfbGVuWzM1XSwgcnVuY29kZTsNCisgICAgRlhfSU5UMzIgaSwgaiwgblRlbXAsIG5WYWwsIG5CaXRzOw0KKyAgICBGWF9JTlQzMiBydW47DQorICAgIFNCU1lNQ09ERVMgPSAoSkJpZzJIdWZmbWFuQ29kZSopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihKQmlnMkh1ZmZtYW5Db2RlKSwgU0JOVU1TWU1TKTsNCisgICAgZm9yIChpID0gMDsgaSA8IDM1OyBpICsrKSB7DQorICAgICAgICBpZihwU3RyZWFtLT5yZWFkTkJpdHMoNCwgJnJ1bmNvZGVzX2xlbltpXSkgIT0gMCkgew0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGh1ZmZtYW5fYXNzaWduX2NvZGUocnVuY29kZXMsIHJ1bmNvZGVzX2xlbiwgMzUpOw0KKyAgICBpID0gMDsNCisgICAgd2hpbGUoaSA8IChpbnQpU0JOVU1TWU1TKSB7DQorICAgICAgICBuVmFsID0gMDsNCisgICAgICAgIG5CaXRzID0gMDsNCisgICAgICAgIGZvcig7Oykgew0KKyAgICAgICAgICAgIGlmKHBTdHJlYW0tPnJlYWQxQml0KCZuVGVtcCkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgblZhbCA9IChuVmFsIDw8IDEpIHwgblRlbXA7DQorICAgICAgICAgICAgbkJpdHMgKys7DQorICAgICAgICAgICAgZm9yKGogPSAwOyBqIDwgMzU7IGorKykgew0KKyAgICAgICAgICAgICAgICBpZigobkJpdHMgPT0gcnVuY29kZXNfbGVuW2pdKSAmJiAoblZhbCA9PSBydW5jb2Rlc1tqXSkpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmKGogPCAzNSkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBydW5jb2RlID0gajsNCisgICAgICAgIGlmKHJ1bmNvZGUgPCAzMikgew0KKyAgICAgICAgICAgIFNCU1lNQ09ERVNbaV0uY29kZWxlbiA9IHJ1bmNvZGU7DQorICAgICAgICAgICAgcnVuID0gMDsNCisgICAgICAgIH0gZWxzZSBpZihydW5jb2RlID09IDMyKSB7DQorICAgICAgICAgICAgaWYocFN0cmVhbS0+cmVhZE5CaXRzKDIsICZuVGVtcCkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcnVuID0gblRlbXAgKyAzOw0KKyAgICAgICAgfSBlbHNlIGlmKHJ1bmNvZGUgPT0gMzMpIHsNCisgICAgICAgICAgICBpZihwU3RyZWFtLT5yZWFkTkJpdHMoMywgJm5UZW1wKSAhPSAwKSB7DQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBydW4gPSBuVGVtcCArIDM7DQorICAgICAgICB9IGVsc2UgaWYocnVuY29kZSA9PSAzNCkgew0KKyAgICAgICAgICAgIGlmKHBTdHJlYW0tPnJlYWROQml0cyg3LCAmblRlbXApICE9IDApIHsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJ1biA9IG5UZW1wICsgMTE7DQorICAgICAgICB9DQorICAgICAgICBpZihydW4gPiAwKSB7DQorICAgICAgICAgICAgaWYgKGkgKyBydW4gPiAoaW50KVNCTlVNU1lNUykgew0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZm9yKGogPSAwOyBqIDwgcnVuOyBqKyspIHsNCisgICAgICAgICAgICAgICAgaWYocnVuY29kZSA9PSAzMiAmJiBpID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgU0JTWU1DT0RFU1tpICsgal0uY29kZWxlbiA9IFNCU1lNQ09ERVNbaSAtIDFdLmNvZGVsZW47DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBTQlNZTUNPREVTW2kgKyBqXS5jb2RlbGVuID0gMDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpICs9IHJ1bjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaSArKzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBodWZmbWFuX2Fzc2lnbl9jb2RlKFNCU1lNQ09ERVMsIFNCTlVNU1lNUyk7DQorICAgIHJldHVybiBTQlNZTUNPREVTOw0KK2ZhaWxlZDoNCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNQ09ERVMpOw0KKyAgICByZXR1cm4gTlVMTDsNCit9DQordm9pZCBDSkJpZzJfQ29udGV4dDo6aHVmZm1hbl9hc3NpZ25fY29kZShpbnQqIENPREVTLCBpbnQqIFBSRUZMRU4sIGludCBOVEVNUCkNCit7DQorICAgIGludCBDVVJMRU4sIExFTk1BWCwgQ1VSQ09ERSwgQ1VSVEVNUCwgaTsNCisgICAgaW50ICpMRU5DT1VOVDsNCisgICAgaW50ICpGSVJTVENPREU7DQorICAgIExFTk1BWCA9IDA7DQorICAgIGZvcihpID0gMDsgaSA8IE5URU1QOyBpKyspIHsNCisgICAgICAgIGlmKFBSRUZMRU5baV0gPiBMRU5NQVgpIHsNCisgICAgICAgICAgICBMRU5NQVggPSBQUkVGTEVOW2ldOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIExFTkNPVU5UID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCAoTEVOTUFYICsgMSkpOw0KKyAgICBKQklHMl9tZW1zZXQoTEVOQ09VTlQsIDAsIHNpemVvZihpbnQpICogKExFTk1BWCArIDEpKTsNCisgICAgRklSU1RDT0RFID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCAoTEVOTUFYICsgMSkpOw0KKyAgICBmb3IoaSA9IDA7IGkgPCBOVEVNUDsgaSsrKSB7DQorICAgICAgICBMRU5DT1VOVFtQUkVGTEVOW2ldXSArKzsNCisgICAgfQ0KKyAgICBDVVJMRU4gPSAxOw0KKyAgICBGSVJTVENPREVbMF0gPSAwOw0KKyAgICBMRU5DT1VOVFswXSAgPSAwOw0KKyAgICB3aGlsZShDVVJMRU4gPD0gTEVOTUFYKSB7DQorICAgICAgICBGSVJTVENPREVbQ1VSTEVOXSA9IChGSVJTVENPREVbQ1VSTEVOIC0gMV0gKyBMRU5DT1VOVFtDVVJMRU4gLSAxXSkgPDwgMTsNCisgICAgICAgIENVUkNPREUgPSBGSVJTVENPREVbQ1VSTEVOXTsNCisgICAgICAgIENVUlRFTVAgPSAwOw0KKyAgICAgICAgd2hpbGUoQ1VSVEVNUCA8IE5URU1QKSB7DQorICAgICAgICAgICAgaWYoUFJFRkxFTltDVVJURU1QXSA9PSBDVVJMRU4pIHsNCisgICAgICAgICAgICAgICAgQ09ERVNbQ1VSVEVNUF0gPSBDVVJDT0RFOw0KKyAgICAgICAgICAgICAgICBDVVJDT0RFID0gQ1VSQ09ERSArIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENVUlRFTVAgPSBDVVJURU1QICsgMTsNCisgICAgICAgIH0NCisgICAgICAgIENVUkxFTiA9IENVUkxFTiArIDE7DQorICAgIH0NCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKExFTkNPVU5UKTsNCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEZJUlNUQ09ERSk7DQorfQ0KK3ZvaWQgQ0pCaWcyX0NvbnRleHQ6Omh1ZmZtYW5fYXNzaWduX2NvZGUoSkJpZzJIdWZmbWFuQ29kZSAqU0JTWU1DT0RFUywgaW50IE5URU1QKQ0KK3sNCisgICAgaW50IENVUkxFTiwgTEVOTUFYLCBDVVJDT0RFLCBDVVJURU1QLCBpOw0KKyAgICBpbnQgKkxFTkNPVU5UOw0KKyAgICBpbnQgKkZJUlNUQ09ERTsNCisgICAgTEVOTUFYID0gMDsNCisgICAgZm9yKGkgPSAwOyBpIDwgTlRFTVA7IGkrKykgew0KKyAgICAgICAgaWYoU0JTWU1DT0RFU1tpXS5jb2RlbGVuID4gTEVOTUFYKSB7DQorICAgICAgICAgICAgTEVOTUFYID0gU0JTWU1DT0RFU1tpXS5jb2RlbGVuOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIExFTkNPVU5UID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCAoTEVOTUFYICsgMSkpOw0KKyAgICBKQklHMl9tZW1zZXQoTEVOQ09VTlQsIDAsIHNpemVvZihpbnQpICogKExFTk1BWCArIDEpKTsNCisgICAgRklSU1RDT0RFID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCAoTEVOTUFYICsgMSkpOw0KKyAgICBmb3IoaSA9IDA7IGkgPCBOVEVNUDsgaSsrKSB7DQorICAgICAgICBMRU5DT1VOVFtTQlNZTUNPREVTW2ldLmNvZGVsZW5dICsrOw0KKyAgICB9DQorICAgIENVUkxFTiA9IDE7DQorICAgIEZJUlNUQ09ERVswXSA9IDA7DQorICAgIExFTkNPVU5UWzBdICA9IDA7DQorICAgIHdoaWxlKENVUkxFTiA8PSBMRU5NQVgpIHsNCisgICAgICAgIEZJUlNUQ09ERVtDVVJMRU5dID0gKEZJUlNUQ09ERVtDVVJMRU4gLSAxXSArIExFTkNPVU5UW0NVUkxFTiAtIDFdKSA8PCAxOw0KKyAgICAgICAgQ1VSQ09ERSA9IEZJUlNUQ09ERVtDVVJMRU5dOw0KKyAgICAgICAgQ1VSVEVNUCA9IDA7DQorICAgICAgICB3aGlsZShDVVJURU1QIDwgTlRFTVApIHsNCisgICAgICAgICAgICBpZihTQlNZTUNPREVTW0NVUlRFTVBdLmNvZGVsZW4gPT0gQ1VSTEVOKSB7DQorICAgICAgICAgICAgICAgIFNCU1lNQ09ERVNbQ1VSVEVNUF0uY29kZSA9IENVUkNPREU7DQorICAgICAgICAgICAgICAgIENVUkNPREUgPSBDVVJDT0RFICsgMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ1VSVEVNUCA9IENVUlRFTVAgKyAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1VSTEVOID0gQ1VSTEVOICsgMTsNCisgICAgfQ0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoTEVOQ09VTlQpOw0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoRklSU1RDT0RFKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9Db250ZXh0LmggYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjlkYmEzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9Db250ZXh0LmgKQEAgLTAsMCArMSwxMzUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0pCSUcyX0NPTlRFWFRfSF8NCisjZGVmaW5lIF9KQklHMl9DT05URVhUX0hfDQorI2luY2x1ZGUgIkpCaWcyX01vZHVsZS5oIg0KKyNpbmNsdWRlICJKQmlnMl9MaXN0LmgiDQorI2luY2x1ZGUgIkpCaWcyX1NlZ21lbnQuaCINCisjaW5jbHVkZSAiSkJpZzJfUGFnZS5oIg0KKyNpbmNsdWRlICJKQmlnMl9HZW5lcmFsRGVjb2Rlci5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWNfZGVmLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCINCit0eXBlZGVmIGVudW0gew0KKyAgICBKQklHMl9PVVRfT0ZfUEFHRSA9IDAsDQorICAgIEpCSUcyX0lOX1BBR0UsDQorfSBKQmlnMlN0YXRlOw0KKyNkZWZpbmUgSkJJRzJfU1VDQ0VTUwkJCSAwDQorI2RlZmluZSBKQklHMl9GQUlMRUQJCQktMQ0KKyNkZWZpbmUgSkJJRzJfRVJST1JfVE9PX1NIT1JUCS0yDQorI2RlZmluZSBKQklHMl9FUlJPUl9GRVRBTAkJLTMNCisjZGVmaW5lIEpCSUcyX0VORF9PRl9QQUdFCQkgMg0KKyNkZWZpbmUgSkJJRzJfRU5EX09GX0ZJTEUJCSAzDQorI2RlZmluZSBKQklHMl9FUlJPUl9GSUxFX0ZPUk1BVCAtNA0KKyNkZWZpbmUgSkJJRzJfRVJST1JfU1RSRUFNX1RZUEUgLTUNCisjZGVmaW5lIEpCSUcyX0VSUk9SX0xJTUlUCQktNg0KKyNkZWZpbmUgSkJJRzJfRklMRV9TVFJFQU0JCQkwDQorI2RlZmluZSBKQklHMl9TUVVFTlRJQUxfU1RSRUFNCQkxDQorI2RlZmluZSBKQklHMl9SQU5ET01fU1RSRUFNCQkJMg0KKyNkZWZpbmUgSkJJRzJfRU1CRURfU1RSRUFNCQkJMw0KKyNkZWZpbmUgSkJJRzJfTUlOX1NFR01FTlRfU0laRQkJCQkJMTENCitjbGFzcyBDSkJpZzJfQ29udGV4dCA6IHB1YmxpYyBDSkJpZzJfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgc3RhdGljIENKQmlnMl9Db250ZXh0ICpDcmVhdGVDb250ZXh0KENKQmlnMl9Nb2R1bGUgKnBNb2R1bGUsIEZYX0JZVEUgKnBHbG9iYWxEYXRhLCBGWF9EV09SRCBkd0dsb2JhbExlbmd0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgKnBEYXRhLCBGWF9EV09SRCBkd0xlbmd0aCwgRlhfSU5UMzIgblN0cmVhbVR5cGUsIElGWF9QYXVzZSogcFBhdXNlID0gTlVMTCk7DQorDQorICAgIHN0YXRpYyB2b2lkIERlc3Ryb3lDb250ZXh0KENKQmlnMl9Db250ZXh0ICpwQ29udGV4dCk7DQorDQorICAgIEZYX0lOVDMyIGdldEZpcnN0UGFnZShGWF9CWVRFICpwQnVmLCBGWF9JTlQzMiB3aWR0aCwgRlhfSU5UMzIgaGVpZ2h0LCBGWF9JTlQzMiBzdHJpZGUsIElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisgICAgRlhfSU5UMzIgZ2V0TmV4dFBhZ2UoRlhfQllURSAqcEJ1ZiwgRlhfSU5UMzIgd2lkdGgsIEZYX0lOVDMyIGhlaWdodCwgRlhfSU5UMzIgc3RyaWRlLCBJRlhfUGF1c2UqIHBQYXVzZSk7DQorDQorICAgIEZYX0lOVDMyIGdldEZpcnN0UGFnZShDSkJpZzJfSW1hZ2UgKippbWFnZSwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKw0KKyAgICBGWF9JTlQzMiBnZXROZXh0UGFnZShDSkJpZzJfSW1hZ2UgKippbWFnZSwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBGWF9JTlQzMiBDb250aW51ZShJRlhfUGF1c2UqIHBQYXVzZSk7DQorICAgIEZYQ09ERUNfU1RBVFVTIEdldFByb2Nlc3NpdmVTdGF0dXMoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9Qcm9jZXNzaXZlU3RhdHVzOw0KKyAgICB9Ow0KK3ByaXZhdGU6DQorDQorICAgIENKQmlnMl9Db250ZXh0KEZYX0JZVEUgKnBHbG9iYWxEYXRhLCBGWF9EV09SRCBkd0dsb2JhbExlbmd0aCwNCisgICAgICAgICAgICAgICAgICAgRlhfQllURSAqcERhdGEsIEZYX0RXT1JEIGR3TGVuZ3RoLCBGWF9JTlQzMiBuU3RyZWFtVHlwZSwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKw0KKyAgICB+Q0pCaWcyX0NvbnRleHQoKTsNCisNCisgICAgRlhfSU5UMzIgZGVjb2RlRmlsZShJRlhfUGF1c2UqIHBQYXVzZSk7DQorDQorICAgIEZYX0lOVDMyIGRlY29kZV9TcXVlbnRpYWxPcmduYXphdGlvbihJRlhfUGF1c2UqIHBQYXVzZSk7DQorDQorICAgIEZYX0lOVDMyIGRlY29kZV9FbWJlZE9yZ25hemF0aW9uKElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisgICAgRlhfSU5UMzIgZGVjb2RlX1JhbmRvbU9yZ25hemF0aW9uX0ZpcnN0UGFnZShJRlhfUGF1c2UqIHBQYXVzZSk7DQorDQorICAgIEZYX0lOVDMyIGRlY29kZV9SYW5kb21PcmduYXphdGlvbihJRlhfUGF1c2UqIHBQYXVzZSk7DQorDQorICAgIENKQmlnMl9TZWdtZW50ICpmaW5kU2VnbWVudEJ5TnVtYmVyKEZYX0RXT1JEIGR3TnVtYmVyKTsNCisNCisgICAgQ0pCaWcyX1NlZ21lbnQgKmZpbmRSZWZlcnJlZFNlZ21lbnRCeVR5cGVBbmRJbmRleChDSkJpZzJfU2VnbWVudCAqcFNlZ21lbnQsIEZYX0JZVEUgY1R5cGUsIEZYX0lOVDMyIG5JbmRleCk7DQorDQorICAgIEZYX0lOVDMyIHBhcnNlU2VnbWVudEhlYWRlcihDSkJpZzJfU2VnbWVudCAqcFNlZ21lbnQpOw0KKw0KKyAgICBGWF9JTlQzMiBwYXJzZVNlZ21lbnREYXRhKENKQmlnMl9TZWdtZW50ICpwU2VnbWVudCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBGWF9JTlQzMiBQcm9jZXNzaXZlUGFyc2VTZWdtZW50RGF0YShDSkJpZzJfU2VnbWVudCAqcFNlZ21lbnQsIElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisgICAgRlhfSU5UMzIgcGFyc2VTeW1ib2xEaWN0KENKQmlnMl9TZWdtZW50ICpwU2VnbWVudCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKw0KKyAgICBGWF9JTlQzMiBwYXJzZVRleHRSZWdpb24oQ0pCaWcyX1NlZ21lbnQgKnBTZWdtZW50KTsNCisNCisgICAgRlhfSU5UMzIgcGFyc2VQYXR0ZXJuRGljdChDSkJpZzJfU2VnbWVudCAqcFNlZ21lbnQsIElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisgICAgRlhfSU5UMzIgcGFyc2VIYWxmdG9uZVJlZ2lvbihDSkJpZzJfU2VnbWVudCAqcFNlZ21lbnQsIElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisgICAgRlhfSU5UMzIgcGFyc2VHZW5lcmljUmVnaW9uKENKQmlnMl9TZWdtZW50ICpwU2VnbWVudCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKw0KKyAgICBGWF9JTlQzMiBwYXJzZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uKENKQmlnMl9TZWdtZW50ICpwU2VnbWVudCk7DQorDQorICAgIEZYX0lOVDMyIHBhcnNlVGFibGUoQ0pCaWcyX1NlZ21lbnQgKnBTZWdtZW50KTsNCisNCisgICAgRlhfSU5UMzIgcGFyc2VSZWdpb25JbmZvKEpCaWcyUmVnaW9uSW5mbyAqcFJJKTsNCisNCisNCisNCisgICAgSkJpZzJIdWZmbWFuQ29kZSAqZGVjb2RlU3ltYm9sSURIdWZmbWFuVGFibGUoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSwgRlhfRFdPUkQgU0JOVU1TWU1TKTsNCisNCisgICAgdm9pZCBodWZmbWFuX2Fzc2lnbl9jb2RlKGludCogQ09ERVMsIGludCogUFJFRkxFTiwgaW50IE5URU1QKTsNCisNCisgICAgdm9pZCBodWZmbWFuX2Fzc2lnbl9jb2RlKEpCaWcySHVmZm1hbkNvZGUgKlNCU1lNQ09ERVMsIGludCBOVEVNUCk7DQorDQorcHJpdmF0ZToNCisNCisgICAgQ0pCaWcyX0NvbnRleHQgKm1fcEdsb2JhbENvbnRleHQ7DQorDQorICAgIEZYX0lOVDMyIG1fblN0cmVhbVR5cGU7DQorDQorICAgIENKQmlnMl9CaXRTdHJlYW0gKm1fcFN0cmVhbTsNCisNCisgICAgRlhfSU5UMzIgbV9uU3RhdGU7DQorDQorICAgIENKQmlnMl9MaXN0PENKQmlnMl9TZWdtZW50PiAqbV9wU2VnbWVudExpc3Q7DQorDQorICAgIENKQmlnMl9MaXN0PEpCaWcyUGFnZUluZm8+ICptX3BQYWdlSW5mb0xpc3Q7DQorDQorICAgIENKQmlnMl9JbWFnZSAqbV9wUGFnZTsNCisNCisgICAgRlhfQk9PTCBtX2JCdWZTcGVjaWZpZWQ7DQorDQorICAgIEZYX0lOVDMyIG1fblNlZ21lbnREZWNvZGVkOw0KKyAgICBJRlhfUGF1c2UqCW1fcFBhdXNlOw0KKyAgICBGWF9JTlQzMgltX1BhdXNlU3RlcDsNCisgICAgRlhDT0RFQ19TVEFUVVMgbV9Qcm9jZXNzaXZlU3RhdHVzOw0KKyAgICBGWF9CT09MCW1fYkZpcnN0UGFnZTsNCisgICAgQ0pCaWcyX0FyaXRoRGVjb2RlciAqbV9wQXJpdGhEZWNvZGVyOw0KKyAgICBDSkJpZzJfR1JEUHJvYyAqbV9wR1JEOw0KKyAgICBKQmlnMkFyaXRoQ3R4ICptX2diQ29udGV4dDsNCisgICAgQ0pCaWcyX1NlZ21lbnQgKm1fcFNlZ21lbnQ7DQorICAgIEZYX0RXT1JEIG1fZHdPZmZzZXQ7DQorICAgIEpCaWcyUmVnaW9uSW5mbyBtX3JpOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9EZWZpbmUuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfRGVmaW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAxOWI2YQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfRGVmaW5lLmgKQEAgLTAsMCArMSwzNCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfSkJJRzJfREVGSU5FX0hfDQorI2RlZmluZSBfSkJJRzJfREVGSU5FX0hfDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfc3lzdGVtLmgiDQorI2RlZmluZSBKQklHMl9tZW1zZXQJRlhTWVNfbWVtc2V0OA0KKyNkZWZpbmUgSkJJRzJfbWVtY21wCUZYU1lTX21lbWNtcDMyDQorI2RlZmluZSBKQklHMl9tZW1jcHkJRlhTWVNfbWVtY3B5MzINCisjaW5jbHVkZSAiSkJpZzJfT2JqZWN0LmgiDQorI2RlZmluZSBKQklHMl9PT0IJCQkxDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICBGWF9JTlQzMiB3aWR0aCwNCisgICAgICAgICAgICAgaGVpZ2h0Ow0KKyAgICBGWF9JTlQzMiB4LA0KKyAgICAgICAgICAgICB5Ow0KKyAgICBGWF9CWVRFIGZsYWdzOw0KK30gSkJpZzJSZWdpb25JbmZvOw0KK3R5cGVkZWYgc3RydWN0IHsNCisgICAgRlhfSU5UMzIgY29kZWxlbjsNCisgICAgRlhfSU5UMzIgY29kZTsNCit9IEpCaWcySHVmZm1hbkNvZGU7DQorZXh0ZXJuICJDIiB7DQorICAgIHZvaWQgX0ZheEc0RGVjb2RlKHZvaWQgKnBNb2R1bGUsIEZYX0xQQ0JZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsIGludCogcGJpdHBvcywgRlhfTFBCWVRFIGRlc3RfYnVmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBwaXRjaCA9IDApOw0KK307DQorI2RlZmluZSBKQklHMl9NQVhfUkVGRVJSRURfU0VHTUVOVF9DT1VOVAkJNjQNCisjZGVmaW5lIEpCSUcyX01BWF9FWFBPUlRfU1lTTUJPTFMJCQkJNjU1MzUNCisjZGVmaW5lIEpCSUcyX01BWF9ORVdfU1lTTUJPTFMJCQkJCTY1NTM1DQorI2RlZmluZSBKQklHMl9NQVhfUEFUVEVSTl9JTkRFWAkJCQkJNjU1MzUNCisjZGVmaW5lIEpCSUcyX01BWF9JTUFHRV9TSVpFCQkJCQk2NTUzNQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfR2VuZXJhbERlY29kZXIuY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9HZW5lcmFsRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFhNzE0YQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfR2VuZXJhbERlY29kZXIuY3BwCkBAIC0wLDAgKzEsNDI5MCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIkpCaWcyX0dlbmVyYWxEZWNvZGVyLmgiDQorI2luY2x1ZGUgIkpCaWcyX0FyaXRoRGVjb2Rlci5oIg0KKyNpbmNsdWRlICJKQmlnMl9Bcml0aEludERlY29kZXIuaCINCisjaW5jbHVkZSAiSkJpZzJfSHVmZm1hbkRlY29kZXIuaCINCisjaW5jbHVkZSAiSkJpZzJfSHVmZm1hblRhYmxlLmgiDQorI2luY2x1ZGUgIkpCaWcyX1BhdHRlcm5EaWN0LmgiDQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX0FyaXRoKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCkNCit7DQorICAgIGlmIChHQlcgPT0gMCB8fCBHQkggPT0gMCkgew0KKyAgICAgICAgQ0pCaWcyX0ltYWdlKiBwSW1hZ2U7DQorICAgICAgICBKQklHMl9BTExPQyhwSW1hZ2UsIENKQmlnMl9JbWFnZShHQlcsIEdCSCkpOw0KKyAgICAgICAgcmV0dXJuIHBJbWFnZTsNCisgICAgfQ0KKyAgICBpZihHQlRFTVBMQVRFID09IDApIHsNCisgICAgICAgIGlmKChHQkFUWzBdID09IDMpICYmIChHQkFUWzFdID09IChzaWduZWQgY2hhcikgLSAxKQ0KKyAgICAgICAgICAgICAgICAmJiAoR0JBVFsyXSA9PSAoc2lnbmVkIGNoYXIpIC0gMykgJiYgKEdCQVRbM10gPT0gKHNpZ25lZCBjaGFyKSAtIDEpDQorICAgICAgICAgICAgICAgICYmIChHQkFUWzRdID09IDIpICYmIChHQkFUWzVdID09IChzaWduZWQgY2hhcikgLSAyKQ0KKyAgICAgICAgICAgICAgICAmJiAoR0JBVFs2XSA9PSAoc2lnbmVkIGNoYXIpIC0gMikgJiYgKEdCQVRbN10gPT0gKHNpZ25lZCBjaGFyKSAtIDIpKSB7DQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZV9Bcml0aF9UZW1wbGF0ZTBfb3B0MyhwQXJpdGhEZWNvZGVyLCBnYkNvbnRleHQpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlX0FyaXRoX1RlbXBsYXRlMF91bm9wdChwQXJpdGhEZWNvZGVyLCBnYkNvbnRleHQpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYoR0JURU1QTEFURSA9PSAxKSB7DQorICAgICAgICBpZigoR0JBVFswXSA9PSAzKSAmJiAoR0JBVFsxXSA9PSAoc2lnbmVkIGNoYXIpIC0gMSkpIHsNCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlX0FyaXRoX1RlbXBsYXRlMV9vcHQzKHBBcml0aERlY29kZXIsIGdiQ29udGV4dCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVfQXJpdGhfVGVtcGxhdGUxX3Vub3B0KHBBcml0aERlY29kZXIsIGdiQ29udGV4dCk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZihHQlRFTVBMQVRFID09IDIpIHsNCisgICAgICAgIGlmKChHQkFUWzBdID09IDIpICYmIChHQkFUWzFdID09IChzaWduZWQgY2hhcikgLSAxKSkgew0KKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVfQXJpdGhfVGVtcGxhdGUyX29wdDMocEFyaXRoRGVjb2RlciwgZ2JDb250ZXh0KTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZV9Bcml0aF9UZW1wbGF0ZTJfdW5vcHQocEFyaXRoRGVjb2RlciwgZ2JDb250ZXh0KTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmKChHQkFUWzBdID09IDIpICYmIChHQkFUWzFdID09IChzaWduZWQgY2hhcikgLSAxKSkgew0KKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVfQXJpdGhfVGVtcGxhdGUzX29wdDMocEFyaXRoRGVjb2RlciwgZ2JDb250ZXh0KTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZV9Bcml0aF9UZW1wbGF0ZTNfdW5vcHQocEFyaXRoRGVjb2RlciwgZ2JDb250ZXh0KTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGhfVGVtcGxhdGUwX29wdChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgQ0pCaWcyX0ltYWdlICpHQlJFRzsNCisgICAgRlhfRFdPUkQgbGluZTEsIGxpbmUyLCBsaW5lMzsNCisgICAgTFRQID0gMDsNCisgICAgSkJJRzJfQUxMT0MoR0JSRUcsIENKQmlnMl9JbWFnZShHQlcsIEdCSCkpOw0KKyAgICBHQlJFRy0+ZmlsbCgwKTsNCisgICAgZm9yKEZYX0RXT1JEIGggPSAwOyBoIDwgR0JIOyBoKyspIHsNCisgICAgICAgIGlmKFRQR0RPTikgew0KKyAgICAgICAgICAgIFNMVFAgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFsweDliMjVdKTsNCisgICAgICAgICAgICBMVFAgPSBMVFAgXiBTTFRQOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoTFRQID09IDEpIHsNCisgICAgICAgICAgICBHQlJFRy0+Y29weUxpbmUoaCwgaCAtIDEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBsaW5lMSA9IEdCUkVHLT5nZXRQaXhlbCgyLCBoIC0gMik7DQorICAgICAgICAgICAgbGluZTEgfD0gR0JSRUctPmdldFBpeGVsKDEsIGggLSAyKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmUxIHw9IEdCUkVHLT5nZXRQaXhlbCgwLCBoIC0gMikgPDwgMjsNCisgICAgICAgICAgICBsaW5lMiA9IEdCUkVHLT5nZXRQaXhlbCgzLCBoIC0gMSk7DQorICAgICAgICAgICAgbGluZTIgfD0gR0JSRUctPmdldFBpeGVsKDIsIGggLSAxKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmUyIHw9IEdCUkVHLT5nZXRQaXhlbCgxLCBoIC0gMSkgPDwgMjsNCisgICAgICAgICAgICBsaW5lMiB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDEpIDw8IDM7DQorICAgICAgICAgICAgbGluZTMgPSAwOw0KKyAgICAgICAgICAgIGZvcihGWF9EV09SRCB3ID0gMDsgdyA8IEdCVzsgdysrKSB7DQorICAgICAgICAgICAgICAgIGlmKFVTRVNLSVAgJiYgU0tJUC0+Z2V0UGl4ZWwodywgaCkpIHsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IGxpbmUzOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMiA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCAxMTsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYoYlZhbCkgew0KKyAgICAgICAgICAgICAgICAgICAgR0JSRUctPnNldFBpeGVsKHcsIGgsIGJWYWwpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUxID0gKChsaW5lMSA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgMywgaCAtIDIpKSAmIDB4MWY7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgNCwgaCAtIDEpKSAmIDB4N2Y7DQorICAgICAgICAgICAgICAgIGxpbmUzID0gKChsaW5lMyA8PCAxKSB8IGJWYWwpICYgMHgwZjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEdCUkVHOw0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGhfVGVtcGxhdGUwX29wdDIoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KQ0KK3sNCisgICAgRlhfQk9PTCBMVFAsIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR0JSRUc7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMjsNCisgICAgRlhfQllURSAqcExpbmUsIGNWYWw7DQorICAgIEZYX0lOVFBUUiBuU3RyaWRlLCBuU3RyaWRlMjsNCisgICAgRlhfSU5UMzIgbkJpdHMsIGs7DQorICAgIExUUCA9IDA7DQorICAgIEpCSUcyX0FMTE9DKEdCUkVHLCBDSkJpZzJfSW1hZ2UoR0JXLCBHQkgpKTsNCisgICAgaWYgKEdCUkVHLT5tX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSBHQlJFRzsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoIkdlbmVyaWMgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZTogQ3JlYXRlIEltYWdlIEZhaWxlZCB3aXRoIHdpZHRoID0gJWQsIGhlaWdodCA9ICVkXG4iLCBHQlcsIEdCSCk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwTGluZSA9IEdCUkVHLT5tX3BEYXRhOw0KKyAgICBuU3RyaWRlID0gR0JSRUctPm1fblN0cmlkZTsNCisgICAgblN0cmlkZTIgPSBuU3RyaWRlIDw8IDE7DQorICAgIGZvcihGWF9EV09SRCBoID0gMDsgaCA8IEdCSDsgaCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHg5YjI1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgR0JSRUctPmNvcHlMaW5lKGgsIGggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbGluZTEgPSAoaCA+IDEpID8gcExpbmVbLW5TdHJpZGUyXSA8PCA2IDogMDsNCisgICAgICAgICAgICBsaW5lMiA9IChoID4gMCkgPyBwTGluZVstblN0cmlkZV0gOiAwOw0KKyAgICAgICAgICAgIENPTlRFWFQgPSAobGluZTEgJiAweGY4MDApIHwgKGxpbmUyICYgMHgwN2YwKTsNCisgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcgKz0gOCkgew0KKyAgICAgICAgICAgICAgICBpZih3ICsgOCA8IEdCVykgew0KKyAgICAgICAgICAgICAgICAgICAgbkJpdHMgPSA4Ow0KKyAgICAgICAgICAgICAgICAgICAgaWYoaCA+IDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8IChwTGluZVstblN0cmlkZTIgKyAodyA+PiAzKSArIDFdIDw8IDYpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYoaCA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9IChsaW5lMiA8PCA4KSB8IChwTGluZVstblN0cmlkZSArICh3ID4+IDMpICsgMV0pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbkJpdHMgPSBHQlcgLSB3Ow0KKyAgICAgICAgICAgICAgICAgICAgaWYoaCA+IDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSA8PD0gODsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmKGggPiAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgPDw9IDg7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgIGZvcihrID0gMDsgayA8IG5CaXRzOyBrKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmKFVTRVNLSVAgJiYgU0tJUC0+Z2V0UGl4ZWwodywgaCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCAoNyAtIGspOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4N2JmNykgPDwgMSkgfCBiVmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUxID4+ICg3IC0gaykpICYgMHgwODAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiAoNyAtIGspKSAmIDB4MDAxMCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcExpbmVbdyA+PiAzXSA9IGNWYWw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcExpbmUgKz0gblN0cmlkZTsNCisgICAgfQ0KKyAgICByZXR1cm4gR0JSRUc7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9UZW1wbGF0ZTBfb3B0MyhDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgQ0pCaWcyX0ltYWdlICpHQlJFRzsNCisgICAgRlhfRFdPUkQgbGluZTEsIGxpbmUyOw0KKyAgICBGWF9CWVRFICpwTGluZSwgKnBMaW5lMSwgKnBMaW5lMiwgY1ZhbDsNCisgICAgRlhfSU5UMzIgblN0cmlkZSwgblN0cmlkZTIsIGs7DQorICAgIEZYX0lOVDMyIG5MaW5lQnl0ZXMsIG5CaXRzTGVmdCwgY2M7DQorICAgIExUUCA9IDA7DQorICAgIEpCSUcyX0FMTE9DKEdCUkVHLCBDSkJpZzJfSW1hZ2UoR0JXLCBHQkgpKTsNCisgICAgaWYgKEdCUkVHLT5tX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSBHQlJFRzsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoIkdlbmVyaWMgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZTogQ3JlYXRlIEltYWdlIEZhaWxlZCB3aXRoIHdpZHRoID0gJWQsIGhlaWdodCA9ICVkXG4iLCBHQlcsIEdCSCk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwTGluZSA9IEdCUkVHLT5tX3BEYXRhOw0KKyAgICBuU3RyaWRlID0gR0JSRUctPm1fblN0cmlkZTsNCisgICAgblN0cmlkZTIgPSBuU3RyaWRlIDw8IDE7DQorICAgIG5MaW5lQnl0ZXMgPSAoKEdCVyArIDcpID4+IDMpIC0gMTsNCisgICAgbkJpdHNMZWZ0ID0gR0JXIC0gKG5MaW5lQnl0ZXMgPDwgMyk7DQorICAgIEZYX0RXT1JEIGhlaWdodCA9IEdCSCAmIDB4N2ZmZmZmZmY7DQorICAgIGZvcihGWF9EV09SRCBoID0gMDsgaCA8IGhlaWdodDsgaCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHg5YjI1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgR0JSRUctPmNvcHlMaW5lKGgsIGggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYoaCA+IDEpIHsNCisgICAgICAgICAgICAgICAgcExpbmUxID0gcExpbmUgLSBuU3RyaWRlMjsNCisgICAgICAgICAgICAgICAgcExpbmUyID0gcExpbmUgLSBuU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICgqcExpbmUxKyspIDw8IDY7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKnBMaW5lMisrOw0KKyAgICAgICAgICAgICAgICBDT05URVhUID0gKChsaW5lMSAmIDB4ZjgwMCkgfCAobGluZTIgJiAweDA3ZjApKTsNCisgICAgICAgICAgICAgICAgZm9yKGNjID0gMDsgY2MgPCBuTGluZUJ5dGVzOyBjYysrKSB7DQorICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8ICgoKnBMaW5lMSsrKSA8PCA2KTsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKGxpbmUyIDw8IDgpIHwgKCpwTGluZTIrKyk7DQorICAgICAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGZvcihrID0gNzsgayA+PSAwOyBrLS0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCBrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKChDT05URVhUICYgMHg3YmY3KSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMSA+PiBrKSAmIDB4MDgwMCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiBrKSAmIDB4MDAxMCkpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgcExpbmVbY2NdID0gY1ZhbDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lMSA8PD0gODsNCisgICAgICAgICAgICAgICAgbGluZTIgPDw9IDg7DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBuQml0c0xlZnQ7IGsrKykgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCAoNyAtIGspOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoKENPTlRFWFQgJiAweDdiZjcpIDw8IDEpIHwgYlZhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTEgPj4gKDcgLSBrKSkgJiAweDA4MDApDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiAoNyAtIGspKSAmIDB4MDAxMCkpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBMaW5lW25MaW5lQnl0ZXNdID0gY1ZhbDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwTGluZTIgPSBwTGluZSAtIG5TdHJpZGU7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKGggJiAxKSA/ICgqcExpbmUyKyspIDogMDsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCA9IChsaW5lMiAmIDB4MDdmMCk7DQorICAgICAgICAgICAgICAgIGZvcihjYyA9IDA7IGNjIDwgbkxpbmVCeXRlczsgY2MrKykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYoaCAmIDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9IChsaW5lMiA8PCA4KSB8ICgqcExpbmUyKyspOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBmb3IoayA9IDc7IGsgPj0gMDsgay0tKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgazsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKCgoQ09OVEVYVCAmIDB4N2JmNykgPDwgMSkgfCBiVmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTIgPj4gaykgJiAweDAwMTApKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHBMaW5lW2NjXSA9IGNWYWw7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZTIgPDw9IDg7DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBuQml0c0xlZnQ7IGsrKykgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCAoNyAtIGspOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoKENPTlRFWFQgJiAweDdiZjcpIDw8IDEpIHwgYlZhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgoKGxpbmUyID4+ICg3IC0gaykpKSAmIDB4MDAxMCkpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBMaW5lW25MaW5lQnl0ZXNdID0gY1ZhbDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBwTGluZSArPSBuU3RyaWRlOw0KKyAgICB9DQorICAgIHJldHVybiBHQlJFRzsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX0FyaXRoX1RlbXBsYXRlMF91bm9wdChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgQ0pCaWcyX0ltYWdlICpHQlJFRzsNCisgICAgRlhfRFdPUkQgbGluZTEsIGxpbmUyLCBsaW5lMzsNCisgICAgTFRQID0gMDsNCisgICAgSkJJRzJfQUxMT0MoR0JSRUcsIENKQmlnMl9JbWFnZShHQlcsIEdCSCkpOw0KKyAgICBHQlJFRy0+ZmlsbCgwKTsNCisgICAgZm9yKEZYX0RXT1JEIGggPSAwOyBoIDwgR0JIOyBoKyspIHsNCisgICAgICAgIGlmKFRQR0RPTikgew0KKyAgICAgICAgICAgIFNMVFAgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFsweDliMjVdKTsNCisgICAgICAgICAgICBMVFAgPSBMVFAgXiBTTFRQOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoTFRQID09IDEpIHsNCisgICAgICAgICAgICBHQlJFRy0+Y29weUxpbmUoaCwgaCAtIDEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBsaW5lMSA9IEdCUkVHLT5nZXRQaXhlbCgxLCBoIC0gMik7DQorICAgICAgICAgICAgbGluZTEgfD0gR0JSRUctPmdldFBpeGVsKDAsIGggLSAyKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmUyID0gR0JSRUctPmdldFBpeGVsKDIsIGggLSAxKTsNCisgICAgICAgICAgICBsaW5lMiB8PSBHQlJFRy0+Z2V0UGl4ZWwoMSwgaCAtIDEpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgfD0gR0JSRUctPmdldFBpeGVsKDAsIGggLSAxKSA8PCAyOw0KKyAgICAgICAgICAgIGxpbmUzID0gMDsNCisgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIGgpKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSBsaW5lMzsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBoICsgR0JBVFsxXSkgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgNTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzJdLCBoICsgR0JBVFszXSkgPDwgMTA7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFs0XSwgaCArIEdCQVRbNV0pIDw8IDExOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCAxMjsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzZdLCBoICsgR0JBVFs3XSkgPDwgMTU7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmKGJWYWwpIHsNCisgICAgICAgICAgICAgICAgICAgIEdCUkVHLT5zZXRQaXhlbCh3LCBoLCBiVmFsKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICgobGluZTEgPDwgMSkgfCBHQlJFRy0+Z2V0UGl4ZWwodyArIDIsIGggLSAyKSkgJiAweDA3Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBHQlJFRy0+Z2V0UGl4ZWwodyArIDMsIGggLSAxKSkgJiAweDFmOw0KKyAgICAgICAgICAgICAgICBsaW5lMyA9ICgobGluZTMgPDwgMSkgfCBiVmFsKSAmIDB4MGY7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBHQlJFRzsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX0FyaXRoX1RlbXBsYXRlMV9vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KQ0KK3sNCisgICAgRlhfQk9PTCBMVFAsIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR0JSRUc7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMiwgbGluZTM7DQorICAgIExUUCA9IDA7DQorICAgIEpCSUcyX0FMTE9DKEdCUkVHLCBDSkJpZzJfSW1hZ2UoR0JXLCBHQkgpKTsNCisgICAgR0JSRUctPmZpbGwoMCk7DQorICAgIGZvcihGWF9EV09SRCBoID0gMDsgaCA8IEdCSDsgaCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHgwNzk1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgR0JSRUctPmNvcHlMaW5lKGgsIGggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbGluZTEgPSBHQlJFRy0+Z2V0UGl4ZWwoMiwgaCAtIDIpOw0KKyAgICAgICAgICAgIGxpbmUxIHw9IEdCUkVHLT5nZXRQaXhlbCgxLCBoIC0gMikgPDwgMTsNCisgICAgICAgICAgICBsaW5lMSB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDIpIDw8IDI7DQorICAgICAgICAgICAgbGluZTIgPSBHQlJFRy0+Z2V0UGl4ZWwoMywgaCAtIDEpOw0KKyAgICAgICAgICAgIGxpbmUyIHw9IEdCUkVHLT5nZXRQaXhlbCgyLCBoIC0gMSkgPDwgMTsNCisgICAgICAgICAgICBsaW5lMiB8PSBHQlJFRy0+Z2V0UGl4ZWwoMSwgaCAtIDEpIDw8IDI7DQorICAgICAgICAgICAgbGluZTIgfD0gR0JSRUctPmdldFBpeGVsKDAsIGggLSAxKSA8PCAzOw0KKyAgICAgICAgICAgIGxpbmUzID0gMDsNCisgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIGgpKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSBsaW5lMzsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgMzsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTEgPDwgOTsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYoYlZhbCkgew0KKyAgICAgICAgICAgICAgICAgICAgR0JSRUctPnNldFBpeGVsKHcsIGgsIGJWYWwpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUxID0gKChsaW5lMSA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgMywgaCAtIDIpKSAmIDB4MGY7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgNCwgaCAtIDEpKSAmIDB4M2Y7DQorICAgICAgICAgICAgICAgIGxpbmUzID0gKChsaW5lMyA8PCAxKSB8IGJWYWwpICYgMHgwNzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEdCUkVHOw0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGhfVGVtcGxhdGUxX29wdDIoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KQ0KK3sNCisgICAgRlhfQk9PTCBMVFAsIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR0JSRUc7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMjsNCisgICAgRlhfQllURSAqcExpbmUsIGNWYWw7DQorICAgIEZYX0lOVFBUUiBuU3RyaWRlLCBuU3RyaWRlMjsNCisgICAgRlhfSU5UMzIgbkJpdHMsIGs7DQorICAgIExUUCA9IDA7DQorICAgIEpCSUcyX0FMTE9DKEdCUkVHLCBDSkJpZzJfSW1hZ2UoR0JXLCBHQkgpKTsNCisgICAgaWYgKEdCUkVHLT5tX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSBHQlJFRzsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoIkdlbmVyaWMgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZTogQ3JlYXRlIEltYWdlIEZhaWxlZCB3aXRoIHdpZHRoID0gJWQsIGhlaWdodCA9ICVkXG4iLCBHQlcsIEdCSCk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwTGluZSA9IEdCUkVHLT5tX3BEYXRhOw0KKyAgICBuU3RyaWRlID0gR0JSRUctPm1fblN0cmlkZTsNCisgICAgblN0cmlkZTIgPSBuU3RyaWRlIDw8IDE7DQorICAgIGZvcihGWF9EV09SRCBoID0gMDsgaCA8IEdCSDsgaCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHgwNzk1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgR0JSRUctPmNvcHlMaW5lKGgsIGggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbGluZTEgPSAoaCA+IDEpID8gcExpbmVbLW5TdHJpZGUyXSA8PCA0IDogMDsNCisgICAgICAgICAgICBsaW5lMiA9IChoID4gMCkgPyBwTGluZVstblN0cmlkZV0gOiAwOw0KKyAgICAgICAgICAgIENPTlRFWFQgPSAobGluZTEgJiAweDFlMDApIHwgKChsaW5lMiA+PiAxKSAmIDB4MDFmOCk7DQorICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR0JXOyB3ICs9IDgpIHsNCisgICAgICAgICAgICAgICAgaWYodyArIDggPCBHQlcpIHsNCisgICAgICAgICAgICAgICAgICAgIG5CaXRzID0gODsNCisgICAgICAgICAgICAgICAgICAgIGlmKGggPiAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgPSAobGluZTEgPDwgOCkgfCAocExpbmVbLW5TdHJpZGUyICsgKHcgPj4gMykgKyAxXSA8PCA0KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmKGggPiAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgPSAobGluZTIgPDwgOCkgfCAocExpbmVbLW5TdHJpZGUgKyAodyA+PiAzKSArIDFdKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG5CaXRzID0gR0JXIC0gdzsNCisgICAgICAgICAgICAgICAgICAgIGlmKGggPiAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgPDw9IDg7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZihoID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyIDw8PSA4Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBuQml0czsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIGgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgKDcgLSBrKTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKENPTlRFWFQgJiAweDBlZmIpIDw8IDEpIHwgYlZhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMSA+PiAoNyAtIGspKSAmIDB4MDIwMCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTIgPj4gKDggLSBrKSkgJiAweDAwMDgpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBMaW5lW3cgPj4gM10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHBMaW5lICs9IG5TdHJpZGU7DQorICAgIH0NCisgICAgcmV0dXJuIEdCUkVHOw0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGhfVGVtcGxhdGUxX29wdDMoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KQ0KK3sNCisgICAgRlhfQk9PTCBMVFAsIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR0JSRUc7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMjsNCisgICAgRlhfQllURSAqcExpbmUsICpwTGluZTEsICpwTGluZTIsIGNWYWw7DQorICAgIEZYX0lOVDMyIG5TdHJpZGUsIG5TdHJpZGUyLCBrOw0KKyAgICBGWF9JTlQzMiBuTGluZUJ5dGVzLCBuQml0c0xlZnQsIGNjOw0KKyAgICBMVFAgPSAwOw0KKyAgICBKQklHMl9BTExPQyhHQlJFRywgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIGlmIChHQlJFRy0+bV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICBkZWxldGUgR0JSRUc7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJHZW5lcmljIHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmU6IENyZWF0ZSBJbWFnZSBGYWlsZWQgd2l0aCB3aWR0aCA9ICVkLCBoZWlnaHQgPSAlZFxuIiwgR0JXLCBHQkgpOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcExpbmUgPSBHQlJFRy0+bV9wRGF0YTsNCisgICAgblN0cmlkZSA9IEdCUkVHLT5tX25TdHJpZGU7DQorICAgIG5TdHJpZGUyID0gblN0cmlkZSA8PCAxOw0KKyAgICBuTGluZUJ5dGVzID0gKChHQlcgKyA3KSA+PiAzKSAtIDE7DQorICAgIG5CaXRzTGVmdCA9IEdCVyAtIChuTGluZUJ5dGVzIDw8IDMpOw0KKyAgICBmb3IoRlhfRFdPUkQgaCA9IDA7IGggPCBHQkg7IGgrKykgew0KKyAgICAgICAgaWYoVFBHRE9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0WzB4MDc5NV0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIEdCUkVHLT5jb3B5TGluZShoLCBoIC0gMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmKGggPiAxKSB7DQorICAgICAgICAgICAgICAgIHBMaW5lMSA9IHBMaW5lIC0gblN0cmlkZTI7DQorICAgICAgICAgICAgICAgIHBMaW5lMiA9IHBMaW5lIC0gblN0cmlkZTsNCisgICAgICAgICAgICAgICAgbGluZTEgPSAoKnBMaW5lMSsrKSA8PCA0Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICpwTGluZTIrKzsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCA9IChsaW5lMSAmIDB4MWUwMCkgfCAoKGxpbmUyID4+IDEpICYgMHgwMWY4KTsNCisgICAgICAgICAgICAgICAgZm9yKGNjID0gMDsgY2MgPCBuTGluZUJ5dGVzOyBjYysrKSB7DQorICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8ICgoKnBMaW5lMSsrKSA8PCA0KTsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKGxpbmUyIDw8IDgpIHwgKCpwTGluZTIrKyk7DQorICAgICAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGZvcihrID0gNzsgayA+PSAwOyBrLS0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCBrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKENPTlRFWFQgJiAweDBlZmIpIDw8IDEpIHwgYlZhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTEgPj4gaykgJiAweDAyMDApDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiAoayArIDEpKSAmIDB4MDAwOCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwTGluZVtjY10gPSBjVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUxIDw8PSA4Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA8PD0gODsNCisgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgIGZvcihrID0gMDsgayA8IG5CaXRzTGVmdDsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8ICg3IC0gayk7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwZWZiKSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTEgPj4gKDcgLSBrKSkgJiAweDAyMDApDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyID4+ICg4IC0gaykpICYgMHgwMDA4KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwTGluZVtuTGluZUJ5dGVzXSA9IGNWYWw7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcExpbmUyID0gcExpbmUgLSBuU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lMiA9IChoICYgMSkgPyAoKnBMaW5lMisrKSA6IDA7DQorICAgICAgICAgICAgICAgIENPTlRFWFQgPSAobGluZTIgPj4gMSkgJiAweDAxZjg7DQorICAgICAgICAgICAgICAgIGZvcihjYyA9IDA7IGNjIDwgbkxpbmVCeXRlczsgY2MrKykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYoaCAmIDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9IChsaW5lMiA8PCA4KSB8ICgqcExpbmUyKyspOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBmb3IoayA9IDc7IGsgPj0gMDsgay0tKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgazsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwZWZiKSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyID4+IChrICsgMSkpICYgMHgwMDA4KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHBMaW5lW2NjXSA9IGNWYWw7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZTIgPDw9IDg7DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBuQml0c0xlZnQ7IGsrKykgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCAoNyAtIGspOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4MGVmYikgPDwgMSkgfCBiVmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyID4+ICg4IC0gaykpICYgMHgwMDA4KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwTGluZVtuTGluZUJ5dGVzXSA9IGNWYWw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcExpbmUgKz0gblN0cmlkZTsNCisgICAgfQ0KKyAgICByZXR1cm4gR0JSRUc7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9UZW1wbGF0ZTFfdW5vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KQ0KK3sNCisgICAgRlhfQk9PTCBMVFAsIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR0JSRUc7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMiwgbGluZTM7DQorICAgIExUUCA9IDA7DQorICAgIEpCSUcyX0FMTE9DKEdCUkVHLCBDSkJpZzJfSW1hZ2UoR0JXLCBHQkgpKTsNCisgICAgR0JSRUctPmZpbGwoMCk7DQorICAgIGZvcihGWF9EV09SRCBoID0gMDsgaCA8IEdCSDsgaCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHgwNzk1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgR0JSRUctPmNvcHlMaW5lKGgsIGggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbGluZTEgPSBHQlJFRy0+Z2V0UGl4ZWwoMiwgaCAtIDIpOw0KKyAgICAgICAgICAgIGxpbmUxIHw9IEdCUkVHLT5nZXRQaXhlbCgxLCBoIC0gMikgPDwgMTsNCisgICAgICAgICAgICBsaW5lMSB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDIpIDw8IDI7DQorICAgICAgICAgICAgbGluZTIgPSBHQlJFRy0+Z2V0UGl4ZWwoMiwgaCAtIDEpOw0KKyAgICAgICAgICAgIGxpbmUyIHw9IEdCUkVHLT5nZXRQaXhlbCgxLCBoIC0gMSkgPDwgMTsNCisgICAgICAgICAgICBsaW5lMiB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDEpIDw8IDI7DQorICAgICAgICAgICAgbGluZTMgPSAwOw0KKyAgICAgICAgICAgIGZvcihGWF9EV09SRCB3ID0gMDsgdyA8IEdCVzsgdysrKSB7DQorICAgICAgICAgICAgICAgIGlmKFVTRVNLSVAgJiYgU0tJUC0+Z2V0UGl4ZWwodywgaCkpIHsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IGxpbmUzOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIEdCQVRbMF0sIGggKyBHQkFUWzFdKSA8PCAzOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMiA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCA5Ow0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihiVmFsKSB7DQorICAgICAgICAgICAgICAgICAgICBHQlJFRy0+c2V0UGl4ZWwodywgaCwgYlZhbCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZTEgPSAoKGxpbmUxIDw8IDEpIHwgR0JSRUctPmdldFBpeGVsKHcgKyAzLCBoIC0gMikpICYgMHgwZjsNCisgICAgICAgICAgICAgICAgbGluZTIgPSAoKGxpbmUyIDw8IDEpIHwgR0JSRUctPmdldFBpeGVsKHcgKyAzLCBoIC0gMSkpICYgMHgxZjsNCisgICAgICAgICAgICAgICAgbGluZTMgPSAoKGxpbmUzIDw8IDEpIHwgYlZhbCkgJiAweDA3Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gR0JSRUc7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9UZW1wbGF0ZTJfb3B0KENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCkNCit7DQorICAgIEZYX0JPT0wgTFRQLCBTTFRQLCBiVmFsOw0KKyAgICBGWF9EV09SRCBDT05URVhUOw0KKyAgICBDSkJpZzJfSW1hZ2UgKkdCUkVHOw0KKyAgICBGWF9EV09SRCBsaW5lMSwgbGluZTIsIGxpbmUzOw0KKyAgICBMVFAgPSAwOw0KKyAgICBKQklHMl9BTExPQyhHQlJFRywgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIEdCUkVHLT5maWxsKDApOw0KKyAgICBmb3IoRlhfRFdPUkQgaCA9IDA7IGggPCBHQkg7IGgrKykgew0KKyAgICAgICAgaWYoVFBHRE9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0WzB4MDBlNV0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIEdCUkVHLT5jb3B5TGluZShoLCBoIC0gMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGxpbmUxID0gR0JSRUctPmdldFBpeGVsKDEsIGggLSAyKTsNCisgICAgICAgICAgICBsaW5lMSB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDIpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgPSBHQlJFRy0+Z2V0UGl4ZWwoMiwgaCAtIDEpOw0KKyAgICAgICAgICAgIGxpbmUyIHw9IEdCUkVHLT5nZXRQaXhlbCgxLCBoIC0gMSkgPDwgMTsNCisgICAgICAgICAgICBsaW5lMiB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDEpIDw8IDI7DQorICAgICAgICAgICAgbGluZTMgPSAwOw0KKyAgICAgICAgICAgIGZvcihGWF9EV09SRCB3ID0gMDsgdyA8IEdCVzsgdysrKSB7DQorICAgICAgICAgICAgICAgIGlmKFVTRVNLSVAgJiYgU0tJUC0+Z2V0UGl4ZWwodywgaCkpIHsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IGxpbmUzOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMiA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCA3Ow0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihiVmFsKSB7DQorICAgICAgICAgICAgICAgICAgICBHQlJFRy0+c2V0UGl4ZWwodywgaCwgYlZhbCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZTEgPSAoKGxpbmUxIDw8IDEpIHwgR0JSRUctPmdldFBpeGVsKHcgKyAyLCBoIC0gMikpICYgMHgwNzsNCisgICAgICAgICAgICAgICAgbGluZTIgPSAoKGxpbmUyIDw8IDEpIHwgR0JSRUctPmdldFBpeGVsKHcgKyAzLCBoIC0gMSkpICYgMHgxZjsNCisgICAgICAgICAgICAgICAgbGluZTMgPSAoKGxpbmUzIDw8IDEpIHwgYlZhbCkgJiAweDAzOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gR0JSRUc7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9UZW1wbGF0ZTJfb3B0MihDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgQ0pCaWcyX0ltYWdlICpHQlJFRzsNCisgICAgRlhfRFdPUkQgbGluZTEsIGxpbmUyOw0KKyAgICBGWF9CWVRFICpwTGluZSwgY1ZhbDsNCisgICAgRlhfSU5UUFRSIG5TdHJpZGUsIG5TdHJpZGUyOw0KKyAgICBGWF9JTlQzMiBuQml0cywgazsNCisgICAgTFRQID0gMDsNCisgICAgSkJJRzJfQUxMT0MoR0JSRUcsIENKQmlnMl9JbWFnZShHQlcsIEdCSCkpOw0KKyAgICBpZiAoR0JSRUctPm1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgZGVsZXRlIEdCUkVHOw0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiR2VuZXJpYyByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlOiBDcmVhdGUgSW1hZ2UgRmFpbGVkIHdpdGggd2lkdGggPSAlZCwgaGVpZ2h0ID0gJWRcbiIsIEdCVywgR0JIKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBMaW5lID0gR0JSRUctPm1fcERhdGE7DQorICAgIG5TdHJpZGUgPSBHQlJFRy0+bV9uU3RyaWRlOw0KKyAgICBuU3RyaWRlMiA9IG5TdHJpZGUgPDwgMTsNCisgICAgZm9yKEZYX0RXT1JEIGggPSAwOyBoIDwgR0JIOyBoKyspIHsNCisgICAgICAgIGlmKFRQR0RPTikgew0KKyAgICAgICAgICAgIFNMVFAgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFsweDAwZTVdKTsNCisgICAgICAgICAgICBMVFAgPSBMVFAgXiBTTFRQOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoTFRQID09IDEpIHsNCisgICAgICAgICAgICBHQlJFRy0+Y29weUxpbmUoaCwgaCAtIDEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBsaW5lMSA9IChoID4gMSkgPyBwTGluZVstblN0cmlkZTJdIDw8IDEgOiAwOw0KKyAgICAgICAgICAgIGxpbmUyID0gKGggPiAwKSA/IHBMaW5lWy1uU3RyaWRlXSA6IDA7DQorICAgICAgICAgICAgQ09OVEVYVCA9IChsaW5lMSAmIDB4MDM4MCkgfCAoKGxpbmUyID4+IDMpICYgMHgwMDdjKTsNCisgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcgKz0gOCkgew0KKyAgICAgICAgICAgICAgICBpZih3ICsgOCA8IEdCVykgew0KKyAgICAgICAgICAgICAgICAgICAgbkJpdHMgPSA4Ow0KKyAgICAgICAgICAgICAgICAgICAgaWYoaCA+IDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8IChwTGluZVstblN0cmlkZTIgKyAodyA+PiAzKSArIDFdIDw8IDEpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYoaCA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9IChsaW5lMiA8PCA4KSB8IChwTGluZVstblN0cmlkZSArICh3ID4+IDMpICsgMV0pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbkJpdHMgPSBHQlcgLSB3Ow0KKyAgICAgICAgICAgICAgICAgICAgaWYoaCA+IDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSA8PD0gODsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmKGggPiAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgPDw9IDg7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgIGZvcihrID0gMDsgayA8IG5CaXRzOyBrKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmKFVTRVNLSVAgJiYgU0tJUC0+Z2V0UGl4ZWwodywgaCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCAoNyAtIGspOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4MDFiZCkgPDwgMSkgfCBiVmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUxID4+ICg3IC0gaykpICYgMHgwMDgwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiAoMTAgLSBrKSkgJiAweDAwMDQpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBMaW5lW3cgPj4gM10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHBMaW5lICs9IG5TdHJpZGU7DQorICAgIH0NCisgICAgcmV0dXJuIEdCUkVHOw0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGhfVGVtcGxhdGUyX29wdDMoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KQ0KK3sNCisgICAgRlhfQk9PTCBMVFAsIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR0JSRUc7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMjsNCisgICAgRlhfQllURSAqcExpbmUsICpwTGluZTEsICpwTGluZTIsIGNWYWw7DQorICAgIEZYX0lOVDMyIG5TdHJpZGUsIG5TdHJpZGUyLCBrOw0KKyAgICBGWF9JTlQzMiBuTGluZUJ5dGVzLCBuQml0c0xlZnQsIGNjOw0KKyAgICBMVFAgPSAwOw0KKyAgICBKQklHMl9BTExPQyhHQlJFRywgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIGlmIChHQlJFRy0+bV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICBkZWxldGUgR0JSRUc7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJHZW5lcmljIHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmU6IENyZWF0ZSBJbWFnZSBGYWlsZWQgd2l0aCB3aWR0aCA9ICVkLCBoZWlnaHQgPSAlZFxuIiwgR0JXLCBHQkgpOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcExpbmUgPSBHQlJFRy0+bV9wRGF0YTsNCisgICAgblN0cmlkZSA9IEdCUkVHLT5tX25TdHJpZGU7DQorICAgIG5TdHJpZGUyID0gblN0cmlkZSA8PCAxOw0KKyAgICBuTGluZUJ5dGVzID0gKChHQlcgKyA3KSA+PiAzKSAtIDE7DQorICAgIG5CaXRzTGVmdCA9IEdCVyAtIChuTGluZUJ5dGVzIDw8IDMpOw0KKyAgICBmb3IoRlhfRFdPUkQgaCA9IDA7IGggPCBHQkg7IGgrKykgew0KKyAgICAgICAgaWYoVFBHRE9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0WzB4MDBlNV0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIEdCUkVHLT5jb3B5TGluZShoLCBoIC0gMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmKGggPiAxKSB7DQorICAgICAgICAgICAgICAgIHBMaW5lMSA9IHBMaW5lIC0gblN0cmlkZTI7DQorICAgICAgICAgICAgICAgIHBMaW5lMiA9IHBMaW5lIC0gblN0cmlkZTsNCisgICAgICAgICAgICAgICAgbGluZTEgPSAoKnBMaW5lMSsrKSA8PCAxOw0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICpwTGluZTIrKzsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCA9IChsaW5lMSAmIDB4MDM4MCkgfCAoKGxpbmUyID4+IDMpICYgMHgwMDdjKTsNCisgICAgICAgICAgICAgICAgZm9yKGNjID0gMDsgY2MgPCBuTGluZUJ5dGVzOyBjYysrKSB7DQorICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8ICgoKnBMaW5lMSsrKSA8PCAxKTsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKGxpbmUyIDw8IDgpIHwgKCpwTGluZTIrKyk7DQorICAgICAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGZvcihrID0gNzsgayA+PSAwOyBrLS0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCBrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKENPTlRFWFQgJiAweDAxYmQpIDw8IDEpIHwgYlZhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTEgPj4gaykgJiAweDAwODApDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiAoayArIDMpKSAmIDB4MDAwNCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwTGluZVtjY10gPSBjVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUxIDw8PSA4Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA8PD0gODsNCisgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgIGZvcihrID0gMDsgayA8IG5CaXRzTGVmdDsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8ICg3IC0gayk7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwMWJkKSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTEgPj4gKDcgLSBrKSkgJiAweDAwODApDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyID4+ICgxMCAtIGspKSAmIDB4MDAwNCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcExpbmVbbkxpbmVCeXRlc10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBMaW5lMiA9IHBMaW5lIC0gblN0cmlkZTsNCisgICAgICAgICAgICAgICAgbGluZTIgPSAoaCAmIDEpID8gKCpwTGluZTIrKykgOiAwOw0KKyAgICAgICAgICAgICAgICBDT05URVhUID0gKGxpbmUyID4+IDMpICYgMHgwMDdjOw0KKyAgICAgICAgICAgICAgICBmb3IoY2MgPSAwOyBjYyA8IG5MaW5lQnl0ZXM7IGNjKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmKGggJiAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgPSAobGluZTIgPDwgOCkgfCAoKnBMaW5lMisrKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yKGsgPSA3OyBrID49IDA7IGstLSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8IGs7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4MDFiZCkgPDwgMSkgfCBiVmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiAoayArIDMpKSAmIDB4MDAwNCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwTGluZVtjY10gPSBjVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUyIDw8PSA4Ow0KKyAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgZm9yKGsgPSAwOyBrIDwgbkJpdHNMZWZ0OyBrKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgKDcgLSBrKTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKENPTlRFWFQgJiAweDAxYmQpIDw8IDEpIHwgYlZhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCgobGluZTIgPj4gKDEwIC0gaykpKSAmIDB4MDAwNCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcExpbmVbbkxpbmVCeXRlc10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHBMaW5lICs9IG5TdHJpZGU7DQorICAgIH0NCisgICAgcmV0dXJuIEdCUkVHOw0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGhfVGVtcGxhdGUyX3Vub3B0KENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCkNCit7DQorICAgIEZYX0JPT0wgTFRQLCBTTFRQLCBiVmFsOw0KKyAgICBGWF9EV09SRCBDT05URVhUOw0KKyAgICBDSkJpZzJfSW1hZ2UgKkdCUkVHOw0KKyAgICBGWF9EV09SRCBsaW5lMSwgbGluZTIsIGxpbmUzOw0KKyAgICBMVFAgPSAwOw0KKyAgICBKQklHMl9BTExPQyhHQlJFRywgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIEdCUkVHLT5maWxsKDApOw0KKyAgICBmb3IoRlhfRFdPUkQgaCA9IDA7IGggPCBHQkg7IGgrKykgew0KKyAgICAgICAgaWYoVFBHRE9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0WzB4MDBlNV0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIEdCUkVHLT5jb3B5TGluZShoLCBoIC0gMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGxpbmUxID0gR0JSRUctPmdldFBpeGVsKDEsIGggLSAyKTsNCisgICAgICAgICAgICBsaW5lMSB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDIpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgPSBHQlJFRy0+Z2V0UGl4ZWwoMSwgaCAtIDEpOw0KKyAgICAgICAgICAgIGxpbmUyIHw9IEdCUkVHLT5nZXRQaXhlbCgwLCBoIC0gMSkgPDwgMTsNCisgICAgICAgICAgICBsaW5lMyA9IDA7DQorICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR0JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgaWYoVVNFU0tJUCAmJiBTS0lQLT5nZXRQaXhlbCh3LCBoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gbGluZTM7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFswXSwgaCArIEdCQVRbMV0pIDw8IDI7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IGxpbmUyIDw8IDM7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IGxpbmUxIDw8IDc7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmKGJWYWwpIHsNCisgICAgICAgICAgICAgICAgICAgIEdCUkVHLT5zZXRQaXhlbCh3LCBoLCBiVmFsKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICgobGluZTEgPDwgMSkgfCBHQlJFRy0+Z2V0UGl4ZWwodyArIDIsIGggLSAyKSkgJiAweDA3Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBHQlJFRy0+Z2V0UGl4ZWwodyArIDIsIGggLSAxKSkgJiAweDBmOw0KKyAgICAgICAgICAgICAgICBsaW5lMyA9ICgobGluZTMgPDwgMSkgfCBiVmFsKSAmIDB4MDM7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBHQlJFRzsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX0FyaXRoX1RlbXBsYXRlM19vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KQ0KK3sNCisgICAgRlhfQk9PTCBMVFAsIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR0JSRUc7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMjsNCisgICAgTFRQID0gMDsNCisgICAgSkJJRzJfQUxMT0MoR0JSRUcsIENKQmlnMl9JbWFnZShHQlcsIEdCSCkpOw0KKyAgICBHQlJFRy0+ZmlsbCgwKTsNCisgICAgZm9yKEZYX0RXT1JEIGggPSAwOyBoIDwgR0JIOyBoKyspIHsNCisgICAgICAgIGlmKFRQR0RPTikgew0KKyAgICAgICAgICAgIFNMVFAgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFsweDAxOTVdKTsNCisgICAgICAgICAgICBMVFAgPSBMVFAgXiBTTFRQOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoTFRQID09IDEpIHsNCisgICAgICAgICAgICBHQlJFRy0+Y29weUxpbmUoaCwgaCAtIDEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBsaW5lMSA9IEdCUkVHLT5nZXRQaXhlbCgyLCBoIC0gMSk7DQorICAgICAgICAgICAgbGluZTEgfD0gR0JSRUctPmdldFBpeGVsKDEsIGggLSAxKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmUxIHw9IEdCUkVHLT5nZXRQaXhlbCgwLCBoIC0gMSkgPDwgMjsNCisgICAgICAgICAgICBsaW5lMiA9IDA7DQorICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR0JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgaWYoVVNFU0tJUCAmJiBTS0lQLT5nZXRQaXhlbCh3LCBoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gbGluZTI7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IGxpbmUxIDw8IDQ7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmKGJWYWwpIHsNCisgICAgICAgICAgICAgICAgICAgIEdCUkVHLT5zZXRQaXhlbCh3LCBoLCBiVmFsKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICgobGluZTEgPDwgMSkgfCBHQlJFRy0+Z2V0UGl4ZWwodyArIDMsIGggLSAxKSkgJiAweDNmOw0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBiVmFsKSAmIDB4MGY7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBHQlJFRzsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX0FyaXRoX1RlbXBsYXRlM19vcHQyKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCkNCit7DQorICAgIEZYX0JPT0wgTFRQLCBTTFRQLCBiVmFsOw0KKyAgICBGWF9EV09SRCBDT05URVhUOw0KKyAgICBDSkJpZzJfSW1hZ2UgKkdCUkVHOw0KKyAgICBGWF9EV09SRCBsaW5lMTsNCisgICAgRlhfQllURSAqcExpbmUsIGNWYWw7DQorICAgIEZYX0lOVFBUUiBuU3RyaWRlLCBuU3RyaWRlMjsNCisgICAgRlhfSU5UMzIgbkJpdHMsIGs7DQorICAgIExUUCA9IDA7DQorICAgIEpCSUcyX0FMTE9DKEdCUkVHLCBDSkJpZzJfSW1hZ2UoR0JXLCBHQkgpKTsNCisgICAgaWYgKEdCUkVHLT5tX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSBHQlJFRzsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoIkdlbmVyaWMgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZTogQ3JlYXRlIEltYWdlIEZhaWxlZCB3aXRoIHdpZHRoID0gJWQsIGhlaWdodCA9ICVkXG4iLCBHQlcsIEdCSCk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwTGluZSA9IEdCUkVHLT5tX3BEYXRhOw0KKyAgICBuU3RyaWRlID0gR0JSRUctPm1fblN0cmlkZTsNCisgICAgblN0cmlkZTIgPSBuU3RyaWRlIDw8IDE7DQorICAgIGZvcihGWF9EV09SRCBoID0gMDsgaCA8IEdCSDsgaCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHgwMTk1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgR0JSRUctPmNvcHlMaW5lKGgsIGggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbGluZTEgPSAoaCA+IDApID8gcExpbmVbLW5TdHJpZGVdIDogMDsNCisgICAgICAgICAgICBDT05URVhUID0gKGxpbmUxID4+IDEpICYgMHgwM2YwOw0KKyAgICAgICAgICAgIGZvcihGWF9EV09SRCB3ID0gMDsgdyA8IEdCVzsgdyArPSA4KSB7DQorICAgICAgICAgICAgICAgIGlmKHcgKyA4IDwgR0JXKSB7DQorICAgICAgICAgICAgICAgICAgICBuQml0cyA9IDg7DQorICAgICAgICAgICAgICAgICAgICBpZihoID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxID0gKGxpbmUxIDw8IDgpIHwgKHBMaW5lWy1uU3RyaWRlICsgKHcgPj4gMykgKyAxXSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBuQml0cyA9IEdCVyAtIHc7DQorICAgICAgICAgICAgICAgICAgICBpZihoID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxIDw8PSA4Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBuQml0czsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIGgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgKDcgLSBrKTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKENPTlRFWFQgJiAweDAxZjcpIDw8IDEpIHwgYlZhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMSA+PiAoOCAtIGspKSAmIDB4MDAxMCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcExpbmVbdyA+PiAzXSA9IGNWYWw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcExpbmUgKz0gblN0cmlkZTsNCisgICAgfQ0KKyAgICByZXR1cm4gR0JSRUc7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9UZW1wbGF0ZTNfb3B0MyhDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgQ0pCaWcyX0ltYWdlICpHQlJFRzsNCisgICAgRlhfRFdPUkQgbGluZTE7DQorICAgIEZYX0JZVEUgKnBMaW5lLCAqcExpbmUxLCBjVmFsOw0KKyAgICBGWF9JTlQzMiBuU3RyaWRlLCBrOw0KKyAgICBGWF9JTlQzMiBuTGluZUJ5dGVzLCBuQml0c0xlZnQsIGNjOw0KKyAgICBMVFAgPSAwOw0KKyAgICBKQklHMl9BTExPQyhHQlJFRywgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIGlmIChHQlJFRy0+bV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICBkZWxldGUgR0JSRUc7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJHZW5lcmljIHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmU6IENyZWF0ZSBJbWFnZSBGYWlsZWQgd2l0aCB3aWR0aCA9ICVkLCBoZWlnaHQgPSAlZFxuIiwgR0JXLCBHQkgpOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcExpbmUgPSBHQlJFRy0+bV9wRGF0YTsNCisgICAgblN0cmlkZSA9IEdCUkVHLT5tX25TdHJpZGU7DQorICAgIG5MaW5lQnl0ZXMgPSAoKEdCVyArIDcpID4+IDMpIC0gMTsNCisgICAgbkJpdHNMZWZ0ID0gR0JXIC0gKG5MaW5lQnl0ZXMgPDwgMyk7DQorICAgIGZvcihGWF9EV09SRCBoID0gMDsgaCA8IEdCSDsgaCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHgwMTk1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgR0JSRUctPmNvcHlMaW5lKGgsIGggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYoaCA+IDApIHsNCisgICAgICAgICAgICAgICAgcExpbmUxID0gcExpbmUgLSBuU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICpwTGluZTErKzsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCA9IChsaW5lMSA+PiAxKSAmIDB4MDNmMDsNCisgICAgICAgICAgICAgICAgZm9yKGNjID0gMDsgY2MgPCBuTGluZUJ5dGVzOyBjYysrKSB7DQorICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8ICgqcExpbmUxKyspOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBmb3IoayA9IDc7IGsgPj0gMDsgay0tKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgazsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwMWY3KSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUxID4+IChrICsgMSkpICYgMHgwMDEwKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHBMaW5lW2NjXSA9IGNWYWw7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZTEgPDw9IDg7DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBuQml0c0xlZnQ7IGsrKykgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCAoNyAtIGspOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4MDFmNykgPDwgMSkgfCBiVmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUxID4+ICg4IC0gaykpICYgMHgwMDEwKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwTGluZVtuTGluZUJ5dGVzXSA9IGNWYWw7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCA9IDA7DQorICAgICAgICAgICAgICAgIGZvcihjYyA9IDA7IGNjIDwgbkxpbmVCeXRlczsgY2MrKykgew0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBmb3IoayA9IDc7IGsgPj0gMDsgay0tKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgazsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwMWY3KSA8PCAxKSB8IGJWYWw7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwTGluZVtjY10gPSBjVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBuQml0c0xlZnQ7IGsrKykgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCAoNyAtIGspOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4MDFmNykgPDwgMSkgfCBiVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBMaW5lW25MaW5lQnl0ZXNdID0gY1ZhbDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBwTGluZSArPSBuU3RyaWRlOw0KKyAgICB9DQorICAgIHJldHVybiBHQlJFRzsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX0FyaXRoX1RlbXBsYXRlM191bm9wdChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgQ0pCaWcyX0ltYWdlICpHQlJFRzsNCisgICAgRlhfRFdPUkQgbGluZTEsIGxpbmUyOw0KKyAgICBMVFAgPSAwOw0KKyAgICBKQklHMl9BTExPQyhHQlJFRywgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIEdCUkVHLT5maWxsKDApOw0KKyAgICBmb3IoRlhfRFdPUkQgaCA9IDA7IGggPCBHQkg7IGgrKykgew0KKyAgICAgICAgaWYoVFBHRE9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0WzB4MDE5NV0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIEdCUkVHLT5jb3B5TGluZShoLCBoIC0gMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGxpbmUxID0gR0JSRUctPmdldFBpeGVsKDEsIGggLSAxKTsNCisgICAgICAgICAgICBsaW5lMSB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDEpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgPSAwOw0KKyAgICAgICAgICAgIGZvcihGWF9EV09SRCB3ID0gMDsgdyA8IEdCVzsgdysrKSB7DQorICAgICAgICAgICAgICAgIGlmKFVTRVNLSVAgJiYgU0tJUC0+Z2V0UGl4ZWwodywgaCkpIHsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IGxpbmUyOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIEdCQVRbMF0sIGggKyBHQkFUWzFdKSA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihiVmFsKSB7DQorICAgICAgICAgICAgICAgICAgICBHQlJFRy0+c2V0UGl4ZWwodywgaCwgYlZhbCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZTEgPSAoKGxpbmUxIDw8IDEpIHwgR0JSRUctPmdldFBpeGVsKHcgKyAyLCBoIC0gMSkpICYgMHgxZjsNCisgICAgICAgICAgICAgICAgbGluZTIgPSAoKGxpbmUyIDw8IDEpIHwgYlZhbCkgJiAweDBmOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gR0JSRUc7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9WMihDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgQ0pCaWcyX0ltYWdlICpHQlJFRzsNCisgICAgRlhfRFdPUkQgbGluZTEsIGxpbmUyLCBsaW5lMzsNCisgICAgTFRQID0gMDsNCisgICAgSkJJRzJfQUxMT0MoR0JSRUcsIENKQmlnMl9JbWFnZShHQlcsIEdCSCkpOw0KKyAgICBHQlJFRy0+ZmlsbCgwKTsNCisgICAgZm9yKEZYX0RXT1JEIGggPSAwOyBoIDwgR0JIOyBoKyspIHsNCisgICAgICAgIGlmKFRQR0RPTikgew0KKyAgICAgICAgICAgIHN3aXRjaChHQlRFTVBMQVRFKSB7DQorICAgICAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAweDliMjU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IDB4MDc5NTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDI6DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gMHgwMGU1Ow0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMzoNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAweDAxOTU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICBMVFAgPSBMVFAgXiBTTFRQOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoTFRQID09IDEpIHsNCisgICAgICAgICAgICBHQlJFRy0+Y29weUxpbmUoaCwgaCAtIDEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzd2l0Y2goR0JURU1QTEFURSkgew0KKyAgICAgICAgICAgICAgICBjYXNlIDA6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IEdCUkVHLT5nZXRQaXhlbCgxLCBoIC0gMik7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgfD0gR0JSRUctPmdldFBpeGVsKDAsIGggLSAyKSA8PCAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gR0JSRUctPmdldFBpeGVsKDIsIGggLSAxKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiB8PSBHQlJFRy0+Z2V0UGl4ZWwoMSwgaCAtIDEpIDw8IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgfD0gR0JSRUctPmdldFBpeGVsKDAsIGggLSAxKSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIGgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSBsaW5lMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBoICsgR0JBVFsxXSkgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgNTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzJdLCBoICsgR0JBVFszXSkgPDwgMTA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFs0XSwgaCArIEdCQVRbNV0pIDw8IDExOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCAxMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzZdLCBoICsgR0JBVFs3XSkgPDwgMTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJWYWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdCUkVHLT5zZXRQaXhlbCh3LCBoLCBiVmFsKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSA9ICgobGluZTEgPDwgMSkgfCBHQlJFRy0+Z2V0UGl4ZWwodyArIDIsIGggLSAyKSkgJiAweDA3Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBHQlJFRy0+Z2V0UGl4ZWwodyArIDMsIGggLSAxKSkgJiAweDFmOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMyA9ICgobGluZTMgPDwgMSkgfCBiVmFsKSAmIDB4MGY7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMTogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxID0gR0JSRUctPmdldFBpeGVsKDIsIGggLSAyKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSB8PSBHQlJFRy0+Z2V0UGl4ZWwoMSwgaCAtIDIpIDw8IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgfD0gR0JSRUctPmdldFBpeGVsKDAsIGggLSAyKSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gR0JSRUctPmdldFBpeGVsKDIsIGggLSAxKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiB8PSBHQlJFRy0+Z2V0UGl4ZWwoMSwgaCAtIDEpIDw8IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgfD0gR0JSRUctPmdldFBpeGVsKDAsIGggLSAxKSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIGgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSBsaW5lMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBoICsgR0JBVFsxXSkgPDwgMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTEgPDwgOTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYlZhbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0JSRUctPnNldFBpeGVsKHcsIGgsIGJWYWwpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxID0gKChsaW5lMSA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgMywgaCAtIDIpKSAmIDB4MGY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgMywgaCAtIDEpKSAmIDB4MWY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUzID0gKChsaW5lMyA8PCAxKSB8IGJWYWwpICYgMHgwNzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAyOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgPSBHQlJFRy0+Z2V0UGl4ZWwoMSwgaCAtIDIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxIHw9IEdCUkVHLT5nZXRQaXhlbCgwLCBoIC0gMikgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9IEdCUkVHLT5nZXRQaXhlbCgxLCBoIC0gMSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgfD0gR0JSRUctPmdldFBpeGVsKDAsIGggLSAxKSA8PCAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIGgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSBsaW5lMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBoICsgR0JBVFsxXSkgPDwgMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTEgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYlZhbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0JSRUctPnNldFBpeGVsKHcsIGgsIGJWYWwpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxID0gKChsaW5lMSA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgMiwgaCAtIDIpKSAmIDB4MDc7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgMiwgaCAtIDEpKSAmIDB4MGY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUzID0gKChsaW5lMyA8PCAxKSB8IGJWYWwpICYgMHgwMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAzOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgPSBHQlJFRy0+Z2V0UGl4ZWwoMSwgaCAtIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxIHw9IEdCUkVHLT5nZXRQaXhlbCgwLCBoIC0gMSkgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR0JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoVVNFU0tJUCAmJiBTS0lQLT5nZXRQaXhlbCh3LCBoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gbGluZTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFswXSwgaCArIEdCQVRbMV0pIDw8IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IGxpbmUxIDw8IDU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJWYWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdCUkVHLT5zZXRQaXhlbCh3LCBoLCBiVmFsKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSA9ICgobGluZTEgPDwgMSkgfCBHQlJFRy0+Z2V0UGl4ZWwodyArIDIsIGggLSAxKSkgJiAweDFmOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBiVmFsKSAmIDB4MGY7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBHQlJFRzsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX0FyaXRoX1YxKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCkNCit7DQorICAgIEZYX0JPT0wgTFRQLCBTTFRQLCBiVmFsOw0KKyAgICBGWF9EV09SRCBDT05URVhUID0gMDsNCisgICAgQ0pCaWcyX0ltYWdlICpHQlJFRzsNCisgICAgTFRQID0gMDsNCisgICAgSkJJRzJfQUxMT0MoR0JSRUcsIENKQmlnMl9JbWFnZShHQlcsIEdCSCkpOw0KKyAgICBHQlJFRy0+ZmlsbCgwKTsNCisgICAgZm9yKEZYX0RXT1JEIGggPSAwOyBoIDwgR0JIOyBoKyspIHsNCisgICAgICAgIGlmKFRQR0RPTikgew0KKyAgICAgICAgICAgIHN3aXRjaChHQlRFTVBMQVRFKSB7DQorICAgICAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAweDliMjU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IDB4MDc5NTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDI6DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gMHgwMGU1Ow0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMzoNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAweDAxOTU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICBMVFAgPSBMVFAgXiBTTFRQOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoTFRQID09IDEpIHsNCisgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICBHQlJFRy0+c2V0UGl4ZWwodywgaCwgR0JSRUctPmdldFBpeGVsKHcsIGggLSAxKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIGgpKSB7DQorICAgICAgICAgICAgICAgICAgICBHQlJFRy0+c2V0UGl4ZWwodywgaCwgMCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gMDsNCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChHQlRFTVBMQVRFKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMSwgaCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAyLCBoKSA8PCAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMywgaCkgPDwgMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDQsIGgpIDw8IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBoICsgR0JBVFsxXSkgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIDIsIGggLSAxKSA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgMSwgaCAtIDEpIDw8IDY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcsIGggLSAxKSA8PCA3Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMSwgaCAtIDEpIDw8IDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAyLCBoIC0gMSkgPDwgOTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIEdCQVRbMl0sIGggKyBHQkFUWzNdKSA8PCAxMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIEdCQVRbNF0sIGggKyBHQkFUWzVdKSA8PCAxMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIDEsIGggLSAyKSA8PCAxMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodywgaCAtIDIpIDw8IDEzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMSwgaCAtIDIpIDw8IDE0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFs2XSwgaCArIEdCQVRbN10pIDw8IDE1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAxLCBoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDIsIGgpIDw8IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAzLCBoKSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFswXSwgaCArIEdCQVRbMV0pIDw8IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyAyLCBoIC0gMSkgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIDEsIGggLSAxKSA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3LCBoIC0gMSkgPDwgNjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDEsIGggLSAxKSA8PCA3Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMiwgaCAtIDEpIDw8IDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyAyLCBoIC0gMikgPDwgOTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIDEsIGggLSAyKSA8PCAxMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodywgaCAtIDIpIDw8IDExOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMSwgaCAtIDIpIDw8IDEyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAxLCBoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDIsIGgpIDw8IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBoICsgR0JBVFsxXSkgPDwgMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIDEsIGggLSAxKSA8PCAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3LCBoIC0gMSkgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDEsIGggLSAxKSA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMiwgaCAtIDEpIDw8IDY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyAxLCBoIC0gMikgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodywgaCAtIDIpIDw8IDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAxLCBoIC0gMikgPDwgOTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMSwgaCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAyLCBoKSA8PCAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMywgaCkgPDwgMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDQsIGgpIDw8IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBoICsgR0JBVFsxXSkgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIDEsIGggLSAxKSA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3LCBoIC0gMSkgPDwgNjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDEsIGggLSAxKSA8PCA3Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMiwgaCAtIDEpIDw8IDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAzLCBoIC0gMSkgPDwgOTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgR0JSRUctPnNldFBpeGVsKHcsIGgsIGJWYWwpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBHQlJFRzsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX01NUihDSkJpZzJfQml0U3RyZWFtICpwU3RyZWFtKQ0KK3sNCisgICAgaW50IGJpdHBvcywgaTsNCisgICAgQ0pCaWcyX0ltYWdlICpwSW1hZ2U7DQorICAgIEpCSUcyX0FMTE9DKHBJbWFnZSwgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIGlmIChwSW1hZ2UtPm1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgZGVsZXRlIHBJbWFnZTsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoIkdlbmVyaWMgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZTogQ3JlYXRlIEltYWdlIEZhaWxlZCB3aXRoIHdpZHRoID0gJWQsIGhlaWdodCA9ICVkXG4iLCBHQlcsIEdCSCk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBiaXRwb3MgPSAoaW50KXBTdHJlYW0tPmdldEJpdFBvcygpOw0KKyAgICBfRmF4RzREZWNvZGUobV9wTW9kdWxlLCBwU3RyZWFtLT5nZXRCdWYoKSwgcFN0cmVhbS0+Z2V0TGVuZ3RoKCksICZiaXRwb3MsIHBJbWFnZS0+bV9wRGF0YSwgR0JXLCBHQkgsIHBJbWFnZS0+bV9uU3RyaWRlKTsNCisgICAgcFN0cmVhbS0+c2V0Qml0UG9zKGJpdHBvcyk7DQorICAgIGZvcihpID0gMDsgKEZYX0RXT1JEKWkgPCBwSW1hZ2UtPm1fblN0cmlkZSAqIEdCSDsgaSsrKSB7DQorICAgICAgICBwSW1hZ2UtPm1fcERhdGFbaV0gPSB+cEltYWdlLT5tX3BEYXRhW2ldOw0KKyAgICB9DQorICAgIHJldHVybiBwSW1hZ2U7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX0dSUkRQcm9jOjpkZWNvZGUoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ3JDb250ZXh0KQ0KK3sNCisgICAgaWYgKEdSVyA9PSAwIHx8IEdSSCA9PSAwKSB7DQorICAgICAgICBDSkJpZzJfSW1hZ2UqIHBJbWFnZTsNCisgICAgICAgIEpCSUcyX0FMTE9DKHBJbWFnZSwgQ0pCaWcyX0ltYWdlKEdSVywgR1JIKSk7DQorICAgICAgICByZXR1cm4gcEltYWdlOw0KKyAgICB9DQorICAgIGlmKEdSVEVNUExBVEUgPT0gMCkgew0KKyAgICAgICAgaWYoKEdSQVRbMF0gPT0gKHNpZ25lZCBjaGFyKSAtIDEpICYmIChHUkFUWzFdID09IChzaWduZWQgY2hhcikgLSAxKQ0KKyAgICAgICAgICAgICAgICAmJiAoR1JBVFsyXSA9PSAoc2lnbmVkIGNoYXIpIC0gMSkgJiYgKEdSQVRbM10gPT0gKHNpZ25lZCBjaGFyKSAtIDEpDQorICAgICAgICAgICAgICAgICYmIChHUlJFRkVSRU5DRURYID09IDApICYmIChHUlcgPT0gKEZYX0RXT1JEKUdSUkVGRVJFTkNFLT5tX25XaWR0aCkpIHsNCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlX1RlbXBsYXRlMF9vcHQocEFyaXRoRGVjb2RlciwgZ3JDb250ZXh0KTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZV9UZW1wbGF0ZTBfdW5vcHQocEFyaXRoRGVjb2RlciwgZ3JDb250ZXh0KTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmKChHUlJFRkVSRU5DRURYID09IDApICYmIChHUlcgPT0gKEZYX0RXT1JEKUdSUkVGRVJFTkNFLT5tX25XaWR0aCkpIHsNCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlX1RlbXBsYXRlMV9vcHQocEFyaXRoRGVjb2RlciwgZ3JDb250ZXh0KTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZV9UZW1wbGF0ZTFfdW5vcHQocEFyaXRoRGVjb2RlciwgZ3JDb250ZXh0KTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9HUlJEUHJvYzo6ZGVjb2RlX1RlbXBsYXRlMF91bm9wdChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnckNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgQ0pCaWcyX0ltYWdlICpHUlJFRzsNCisgICAgRlhfRFdPUkQgbGluZTEsIGxpbmUyLCBsaW5lMywgbGluZTQsIGxpbmU1Ow0KKyAgICBMVFAgPSAwOw0KKyAgICBKQklHMl9BTExPQyhHUlJFRywgQ0pCaWcyX0ltYWdlKEdSVywgR1JIKSk7DQorICAgIEdSUkVHLT5maWxsKDApOw0KKyAgICBmb3IoRlhfRFdPUkQgaCA9IDA7IGggPCBHUkg7IGgrKykgew0KKyAgICAgICAgaWYoVFBHUk9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ3JDb250ZXh0WzB4MDAxMF0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMCkgew0KKyAgICAgICAgICAgIGxpbmUxID0gR1JSRUctPmdldFBpeGVsKDEsIGggLSAxKTsNCisgICAgICAgICAgICBsaW5lMSB8PSBHUlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDEpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgPSAwOw0KKyAgICAgICAgICAgIGxpbmUzID0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKC1HUlJFRkVSRU5DRURYICsgMSwgaCAtIEdSUkVGRVJFTkNFRFkgLSAxKTsNCisgICAgICAgICAgICBsaW5lMyB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZIC0gMSkgPDwgMTsNCisgICAgICAgICAgICBsaW5lNCA9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCgtR1JSRUZFUkVOQ0VEWCArIDEsIGggLSBHUlJFRkVSRU5DRURZKTsNCisgICAgICAgICAgICBsaW5lNCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmU0IHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCgtR1JSRUZFUkVOQ0VEWCAtIDEsIGggLSBHUlJFRkVSRU5DRURZKSA8PCAyOw0KKyAgICAgICAgICAgIGxpbmU1ID0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKC1HUlJFRkVSRU5DRURYICsgMSwgaCAtIEdSUkVGRVJFTkNFRFkgKyAxKTsNCisgICAgICAgICAgICBsaW5lNSB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZICsgMSkgPDwgMTsNCisgICAgICAgICAgICBsaW5lNSB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFggLSAxLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpIDw8IDI7DQorICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR1JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCA9IGxpbmU1Ow0KKyAgICAgICAgICAgICAgICBDT05URVhUIHw9IGxpbmU0IDw8IDM7DQorICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTMgPDwgNjsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyBHUkFUWzJdLCBoIC0gR1JSRUZFUkVOQ0VEWSArIEdSQVRbM10pIDw8IDg7DQorICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgOTsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCAxMDsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRy0+Z2V0UGl4ZWwodyArIEdSQVRbMF0sIGggKyBHUkFUWzFdKSA8PCAxMjsNCisgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ3JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgR1JSRUctPnNldFBpeGVsKHcsIGgsIGJWYWwpOw0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICgobGluZTEgPDwgMSkgfCBHUlJFRy0+Z2V0UGl4ZWwodyArIDIsIGggLSAxKSkgJiAweDAzOw0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBiVmFsKSAmIDB4MDE7DQorICAgICAgICAgICAgICAgIGxpbmUzID0gKChsaW5lMyA8PCAxKSB8IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCArIDIsIGggLSBHUlJFRkVSRU5DRURZIC0gMSkpICYgMHgwMzsNCisgICAgICAgICAgICAgICAgbGluZTQgPSAoKGxpbmU0IDw8IDEpIHwgR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYICsgMiwgaCAtIEdSUkVGRVJFTkNFRFkpKSAmIDB4MDc7DQorICAgICAgICAgICAgICAgIGxpbmU1ID0gKChsaW5lNSA8PCAxKSB8IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCArIDIsIGggLSBHUlJFRkVSRU5DRURZICsgMSkpICYgMHgwNzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGxpbmUxID0gR1JSRUctPmdldFBpeGVsKDEsIGggLSAxKTsNCisgICAgICAgICAgICBsaW5lMSB8PSBHUlJFRy0+Z2V0UGl4ZWwoMCwgaCAtIDEpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgPSAwOw0KKyAgICAgICAgICAgIGxpbmUzID0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKC1HUlJFRkVSRU5DRURYICsgMSwgaCAtIEdSUkVGRVJFTkNFRFkgLSAxKTsNCisgICAgICAgICAgICBsaW5lMyB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZIC0gMSkgPDwgMTsNCisgICAgICAgICAgICBsaW5lNCA9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCgtR1JSRUZFUkVOQ0VEWCArIDEsIGggLSBHUlJFRkVSRU5DRURZKTsNCisgICAgICAgICAgICBsaW5lNCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmU0IHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCgtR1JSRUZFUkVOQ0VEWCAtIDEsIGggLSBHUlJFRkVSRU5DRURZKSA8PCAyOw0KKyAgICAgICAgICAgIGxpbmU1ID0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKC1HUlJFRkVSRU5DRURYICsgMSwgaCAtIEdSUkVGRVJFTkNFRFkgKyAxKTsNCisgICAgICAgICAgICBsaW5lNSB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZICsgMSkgPDwgMTsNCisgICAgICAgICAgICBsaW5lNSB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFggLSAxLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpIDw8IDI7DQorICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR1JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgYlZhbCA9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3LCBoKTsNCisgICAgICAgICAgICAgICAgaWYoIShUUEdST04gJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSAxLCBoIC0gMSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcsIGggLSAxKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIDEsIGggLSAxKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIDEsIGgpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3ICsgMSwgaCkpDQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSAxLCBoICsgMSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcsIGggKyAxKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIDEsIGggKyAxKSkpKSB7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gbGluZTU7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IGxpbmU0IDw8IDM7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IGxpbmUzIDw8IDY7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCArIEdSQVRbMl0sIGggLSBHUlJFRkVSRU5DRURZICsgR1JBVFszXSkgPDwgODsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgOTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTEgPDwgMTA7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVHLT5nZXRQaXhlbCh3ICsgR1JBVFswXSwgaCArIEdSQVRbMV0pIDw8IDEyOw0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ3JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBHUlJFRy0+c2V0UGl4ZWwodywgaCwgYlZhbCk7DQorICAgICAgICAgICAgICAgIGxpbmUxID0gKChsaW5lMSA8PCAxKSB8IEdSUkVHLT5nZXRQaXhlbCh3ICsgMiwgaCAtIDEpKSAmIDB4MDM7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IGJWYWwpICYgMHgwMTsNCisgICAgICAgICAgICAgICAgbGluZTMgPSAoKGxpbmUzIDw8IDEpIHwgR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYICsgMiwgaCAtIEdSUkVGRVJFTkNFRFkgLSAxKSkgJiAweDAzOw0KKyAgICAgICAgICAgICAgICBsaW5lNCA9ICgobGluZTQgPDwgMSkgfCBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyAyLCBoIC0gR1JSRUZFUkVOQ0VEWSkpICYgMHgwNzsNCisgICAgICAgICAgICAgICAgbGluZTUgPSAoKGxpbmU1IDw8IDEpIHwgR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYICsgMiwgaCAtIEdSUkVGRVJFTkNFRFkgKyAxKSkgJiAweDA3Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gR1JSRUc7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX0dSUkRQcm9jOjpkZWNvZGVfVGVtcGxhdGUwX29wdChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnckNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgQ0pCaWcyX0ltYWdlICpHUlJFRzsNCisgICAgRlhfRFdPUkQgbGluZTEsIGxpbmUxX3IsIGxpbmUyX3IsIGxpbmUzX3I7DQorICAgIEZYX0JZVEUgKnBMaW5lLCAqcExpbmVSLCBjVmFsOw0KKyAgICBGWF9JTlRQVFIgblN0cmlkZSwgblN0cmlkZVIsIG5PZmZzZXQ7DQorICAgIEZYX0lOVDMyIGssIG5CaXRzOw0KKyAgICBGWF9JTlQzMiBHUldSLCBHUkhSOw0KKyAgICBGWF9JTlQzMiBHUlcsIEdSSDsNCisgICAgR1JXID0gKEZYX0lOVDMyKUNKQmlnMl9HUlJEUHJvYzo6R1JXOw0KKyAgICBHUkggPSAoRlhfSU5UMzIpQ0pCaWcyX0dSUkRQcm9jOjpHUkg7DQorICAgIExUUCA9IDA7DQorICAgIEpCSUcyX0FMTE9DKEdSUkVHLCBDSkJpZzJfSW1hZ2UoR1JXLCBHUkgpKTsNCisgICAgaWYgKEdSUkVHLT5tX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSBHUlJFRzsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoIkdlbmVyaWMgcmVmaW5lbWVudCByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlOiBDcmVhdGUgSW1hZ2UgRmFpbGVkIHdpdGggd2lkdGggPSAlZCwgaGVpZ2h0ID0gJWRcbiIsIEdSVywgR1JIKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBMaW5lID0gR1JSRUctPm1fcERhdGE7DQorICAgIHBMaW5lUiA9IEdSUkVGRVJFTkNFLT5tX3BEYXRhOw0KKyAgICBuU3RyaWRlID0gR1JSRUctPm1fblN0cmlkZTsNCisgICAgblN0cmlkZVIgPSBHUlJFRkVSRU5DRS0+bV9uU3RyaWRlOw0KKyAgICBHUldSID0gKEZYX0lOVDMyKUdSUkVGRVJFTkNFLT5tX25XaWR0aDsNCisgICAgR1JIUiA9IChGWF9JTlQzMilHUlJFRkVSRU5DRS0+bV9uSGVpZ2h0Ow0KKyAgICBpZiAoR1JSRUZFUkVOQ0VEWSA8IC1HUkhSICsgMSB8fCBHUlJFRkVSRU5DRURZID4gR1JIUiAtIDEpIHsNCisgICAgICAgIEdSUkVGRVJFTkNFRFkgPSAwOw0KKyAgICB9DQorICAgIG5PZmZzZXQgPSAtR1JSRUZFUkVOQ0VEWSAqIG5TdHJpZGVSOw0KKyAgICBmb3IgKEZYX0lOVDMyIGggPSAwOyBoIDwgR1JIOyBoKyspIHsNCisgICAgICAgIGlmKFRQR1JPTikgew0KKyAgICAgICAgICAgIFNMVFAgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdyQ29udGV4dFsweDAwMTBdKTsNCisgICAgICAgICAgICBMVFAgPSBMVFAgXiBTTFRQOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbGluZTEgPSAoaCA+IDApID8gcExpbmVbLW5TdHJpZGVdIDw8IDQgOiAwOw0KKyAgICAgICAgRlhfSU5UMzIgcmVmZXJlbmNlX2ggPSBoIC0gR1JSRUZFUkVOQ0VEWTsNCisgICAgICAgIEZYX0JPT0wgbGluZTFfcl9vayA9IChyZWZlcmVuY2VfaCA+IDAgJiYgcmVmZXJlbmNlX2ggPCBHUkhSICsgMSk7DQorICAgICAgICBGWF9CT09MIGxpbmUyX3Jfb2sgPSAocmVmZXJlbmNlX2ggPiAtMSAmJiByZWZlcmVuY2VfaCA8IEdSSFIpOw0KKyAgICAgICAgRlhfQk9PTCBsaW5lM19yX29rID0gKHJlZmVyZW5jZV9oID4gLTIgJiYgcmVmZXJlbmNlX2ggPCBHUkhSIC0gMSk7DQorICAgICAgICBsaW5lMV9yID0gbGluZTFfcl9vayA/IHBMaW5lUltuT2Zmc2V0IC0gblN0cmlkZVJdIDogMDsNCisgICAgICAgIGxpbmUyX3IgPSBsaW5lMl9yX29rID8gcExpbmVSW25PZmZzZXRdIDogMDsNCisgICAgICAgIGxpbmUzX3IgPSBsaW5lM19yX29rID8gcExpbmVSW25PZmZzZXQgKyBuU3RyaWRlUl0gOiAwOw0KKyAgICAgICAgaWYoTFRQID09IDApIHsNCisgICAgICAgICAgICBDT05URVhUID0gKGxpbmUxICYgMHgxYzAwKSB8IChsaW5lMV9yICYgMHgwMWMwKQ0KKyAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTJfciA+PiAzKSAmIDB4MDAzOCkgfCAoKGxpbmUzX3IgPj4gNikgJiAweDAwMDcpOw0KKyAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgdyA9IDA7IHcgPCBHUlc7IHcgKz0gOCkgew0KKyAgICAgICAgICAgICAgICBuQml0cyA9IEdSVyAtIHcgPiA4ID8gOCA6IEdSVyAtIHc7DQorICAgICAgICAgICAgICAgIGlmIChoID4gMCkNCisgICAgICAgICAgICAgICAgICAgIGxpbmUxID0gKGxpbmUxIDw8IDgpIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHcgKyA4IDwgR1JXID8gcExpbmVbLW5TdHJpZGUgKyAodyA+PiAzKSArIDFdIDw8IDQgOiAwKTsNCisgICAgICAgICAgICAgICAgaWYgKGggPiBHUkhSICsgR1JSRUZFUkVOQ0VEWSArIDEpIHsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUxX3IgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZTJfciAgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZTNfciA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBpZihsaW5lMV9yX29rKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxX3IgPSAobGluZTFfciA8PCA4KSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3ICsgOCA8IEdSV1IgPyBwTGluZVJbbk9mZnNldCAtIG5TdHJpZGVSICsgKHcgPj4gMykgKyAxXSA6IDApOw0KKyAgICAgICAgICAgICAgICAgICAgaWYobGluZTJfcl9vaykNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMl9yID0gKGxpbmUyX3IgPDwgOCkgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodyArIDggPCBHUldSID8gcExpbmVSW25PZmZzZXQgKyAodyA+PiAzKSArIDFdIDogMCk7DQorICAgICAgICAgICAgICAgICAgICBpZihsaW5lM19yX29rKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUzX3IgPSAobGluZTNfciA8PCA4KSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3ICsgOCA8IEdSV1IgPyBwTGluZVJbbk9mZnNldCArIG5TdHJpZGVSICsgKHcgPj4gMykgKyAxXSA6IDApOw0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTNfciA9IDA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBuQml0czsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnckNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8ICg3IC0gayk7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwY2RiKSA8PCAxKSB8IChiVmFsIDw8IDkpIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxpbmUxID4+ICg3IC0gaykpICYgMHgwNDAwKSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsaW5lMV9yID4+ICg3IC0gaykpICYgMHgwMDQwKSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsaW5lMl9yID4+ICgxMCAtIGspKSAmIDB4MDAwOCkgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGluZTNfciA+PiAoMTMgLSBrKSkgJiAweDAwMDEpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBMaW5lW3cgPj4gM10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgQ09OVEVYVCA9IChsaW5lMSAmIDB4MWMwMCkgfCAobGluZTFfciAmIDB4MDFjMCkNCisgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyX3IgPj4gMykgJiAweDAwMzgpIHwgKChsaW5lM19yID4+IDYpICYgMHgwMDA3KTsNCisgICAgICAgICAgICBmb3IgKEZYX0lOVDMyIHcgPSAwOyB3IDwgR1JXOyB3ICs9IDgpIHsNCisgICAgICAgICAgICAgICAgbkJpdHMgPSBHUlcgLSB3ID4gOCA/IDggOiBHUlcgLSB3Ow0KKyAgICAgICAgICAgICAgICBpZiAoaCA+IDApDQorICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3ICsgOCA8IEdSVyA/IHBMaW5lWy1uU3RyaWRlICsgKHcgPj4gMykgKyAxXSA8PCA0IDogMCk7DQorICAgICAgICAgICAgICAgIGlmKGxpbmUxX3Jfb2spDQorICAgICAgICAgICAgICAgICAgICBsaW5lMV9yID0gKGxpbmUxX3IgPDwgOCkgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3ICsgOCA8IEdSV1IgPyBwTGluZVJbbk9mZnNldCAtIG5TdHJpZGVSICsgKHcgPj4gMykgKyAxXSA6IDApOw0KKyAgICAgICAgICAgICAgICBpZihsaW5lMl9yX29rKQ0KKyAgICAgICAgICAgICAgICAgICAgbGluZTJfciA9IChsaW5lMl9yIDw8IDgpIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodyArIDggPCBHUldSID8gcExpbmVSW25PZmZzZXQgKyAodyA+PiAzKSArIDFdIDogMCk7DQorICAgICAgICAgICAgICAgIGlmKGxpbmUzX3Jfb2spDQorICAgICAgICAgICAgICAgICAgICBsaW5lM19yID0gKGxpbmUzX3IgPDwgOCkgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3ICsgOCA8IEdSV1IgPyBwTGluZVJbbk9mZnNldCArIG5TdHJpZGVSICsgKHcgPj4gMykgKyAxXSA6IDApOw0KKyAgICAgICAgICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUzX3IgPSAwOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbkJpdHM7IGsrKykgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3ICsgaywgaCk7DQorICAgICAgICAgICAgICAgICAgICBpZighKFRQR1JPTiAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIGsgLSAxLCBoIC0gMSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3ICsgaywgaCAtIDEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIGsgKyAxLCBoIC0gMSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3ICsgayAtIDEsIGgpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIGsgKyAxLCBoKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgKyBrIC0gMSwgaCArIDEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIGssIGggKyAxKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgKyBrICsgMSwgaCArIDEpKSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnckNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8ICg3IC0gayk7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwY2RiKSA8PCAxKSB8IChiVmFsIDw8IDkpIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxpbmUxID4+ICg3IC0gaykpICYgMHgwNDAwKSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsaW5lMV9yID4+ICg3IC0gaykpICYgMHgwMDQwKSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsaW5lMl9yID4+ICgxMCAtIGspKSAmIDB4MDAwOCkgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGluZTNfciA+PiAoMTMgLSBrKSkgJiAweDAwMDEpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBMaW5lW3cgPj4gM10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHBMaW5lICs9IG5TdHJpZGU7DQorICAgICAgICBpZiAoaCA8IEdSSFIgKyBHUlJFRkVSRU5DRURZKSB7DQorICAgICAgICAgICAgcExpbmVSICs9IG5TdHJpZGVSOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBHUlJFRzsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JSRFByb2M6OmRlY29kZV9UZW1wbGF0ZTFfdW5vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ3JDb250ZXh0KQ0KK3sNCisgICAgRlhfQk9PTCBMVFAsIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR1JSRUc7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMiwgbGluZTMsIGxpbmU0LCBsaW5lNTsNCisgICAgTFRQID0gMDsNCisgICAgSkJJRzJfQUxMT0MoR1JSRUcsIENKQmlnMl9JbWFnZShHUlcsIEdSSCkpOw0KKyAgICBHUlJFRy0+ZmlsbCgwKTsNCisgICAgZm9yKEZYX0RXT1JEIGggPSAwOyBoIDwgR1JIOyBoKyspIHsNCisgICAgICAgIGlmKFRQR1JPTikgew0KKyAgICAgICAgICAgIFNMVFAgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdyQ29udGV4dFsweDAwMDhdKTsNCisgICAgICAgICAgICBMVFAgPSBMVFAgXiBTTFRQOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoTFRQID09IDApIHsNCisgICAgICAgICAgICBsaW5lMSA9IEdSUkVHLT5nZXRQaXhlbCgxLCBoIC0gMSk7DQorICAgICAgICAgICAgbGluZTEgfD0gR1JSRUctPmdldFBpeGVsKDAsIGggLSAxKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmUxIHw9IEdSUkVHLT5nZXRQaXhlbCgtMSwgaCAtIDEpIDw8IDI7DQorICAgICAgICAgICAgbGluZTIgPSAwOw0KKyAgICAgICAgICAgIGxpbmUzID0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKC1HUlJFRkVSRU5DRURYLCBoIC0gR1JSRUZFUkVOQ0VEWSAtIDEpOw0KKyAgICAgICAgICAgIGxpbmU0ID0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKC1HUlJFRkVSRU5DRURYICsgMSwgaCAtIEdSUkVGRVJFTkNFRFkpOw0KKyAgICAgICAgICAgIGxpbmU0IHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCgtR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkpIDw8IDE7DQorICAgICAgICAgICAgbGluZTQgfD0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKC1HUlJFRkVSRU5DRURYIC0gMSwgaCAtIEdSUkVGRVJFTkNFRFkpIDw8IDI7DQorICAgICAgICAgICAgbGluZTUgPSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFggKyAxLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpOw0KKyAgICAgICAgICAgIGxpbmU1IHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCgtR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkgKyAxKSA8PCAxOw0KKyAgICAgICAgICAgIGZvcihGWF9EV09SRCB3ID0gMDsgdyA8IEdSVzsgdysrKSB7DQorICAgICAgICAgICAgICAgIENPTlRFWFQgPSBsaW5lNTsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lNCA8PCAyOw0KKyAgICAgICAgICAgICAgICBDT05URVhUIHw9IGxpbmUzIDw8IDU7DQorICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgNjsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCA3Ow0KKyAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnckNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICBHUlJFRy0+c2V0UGl4ZWwodywgaCwgYlZhbCk7DQorICAgICAgICAgICAgICAgIGxpbmUxID0gKChsaW5lMSA8PCAxKSB8IEdSUkVHLT5nZXRQaXhlbCh3ICsgMiwgaCAtIDEpKSAmIDB4MDc7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IGJWYWwpICYgMHgwMTsNCisgICAgICAgICAgICAgICAgbGluZTMgPSAoKGxpbmUzIDw8IDEpIHwgR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYICsgMSwgaCAtIEdSUkVGRVJFTkNFRFkgLSAxKSkgJiAweDAxOw0KKyAgICAgICAgICAgICAgICBsaW5lNCA9ICgobGluZTQgPDwgMSkgfCBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyAyLCBoIC0gR1JSRUZFUkVOQ0VEWSkpICYgMHgwNzsNCisgICAgICAgICAgICAgICAgbGluZTUgPSAoKGxpbmU1IDw8IDEpIHwgR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYICsgMiwgaCAtIEdSUkVGRVJFTkNFRFkgKyAxKSkgJiAweDAzOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbGluZTEgPSBHUlJFRy0+Z2V0UGl4ZWwoMSwgaCAtIDEpOw0KKyAgICAgICAgICAgIGxpbmUxIHw9IEdSUkVHLT5nZXRQaXhlbCgwLCBoIC0gMSkgPDwgMTsNCisgICAgICAgICAgICBsaW5lMSB8PSBHUlJFRy0+Z2V0UGl4ZWwoLTEsIGggLSAxKSA8PCAyOw0KKyAgICAgICAgICAgIGxpbmUyID0gMDsNCisgICAgICAgICAgICBsaW5lMyA9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCgtR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkgLSAxKTsNCisgICAgICAgICAgICBsaW5lNCA9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCgtR1JSRUZFUkVOQ0VEWCArIDEsIGggLSBHUlJFRkVSRU5DRURZKTsNCisgICAgICAgICAgICBsaW5lNCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmU0IHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCgtR1JSRUZFUkVOQ0VEWCAtIDEsIGggLSBHUlJFRkVSRU5DRURZKSA8PCAyOw0KKyAgICAgICAgICAgIGxpbmU1ID0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKC1HUlJFRkVSRU5DRURYICsgMSwgaCAtIEdSUkVGRVJFTkNFRFkgKyAxKTsNCisgICAgICAgICAgICBsaW5lNSB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwoLUdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZICsgMSkgPDwgMTsNCisgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHUlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICBiVmFsID0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcsIGgpOw0KKyAgICAgICAgICAgICAgICBpZighKFRQR1JPTiAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIDEsIGggLSAxKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodywgaCAtIDEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3ICsgMSwgaCAtIDEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gMSwgaCkpDQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgKyAxLCBoKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIDEsIGggKyAxKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodywgaCArIDEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3ICsgMSwgaCArIDEpKSkpIHsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSBsaW5lNTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTQgPDwgMjsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTMgPDwgNTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgNjsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTEgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdyQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgR1JSRUctPnNldFBpeGVsKHcsIGgsIGJWYWwpOw0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICgobGluZTEgPDwgMSkgfCBHUlJFRy0+Z2V0UGl4ZWwodyArIDIsIGggLSAxKSkgJiAweDA3Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBiVmFsKSAmIDB4MDE7DQorICAgICAgICAgICAgICAgIGxpbmUzID0gKChsaW5lMyA8PCAxKSB8IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCArIDEsIGggLSBHUlJFRkVSRU5DRURZIC0gMSkpICYgMHgwMTsNCisgICAgICAgICAgICAgICAgbGluZTQgPSAoKGxpbmU0IDw8IDEpIHwgR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYICsgMiwgaCAtIEdSUkVGRVJFTkNFRFkpKSAmIDB4MDc7DQorICAgICAgICAgICAgICAgIGxpbmU1ID0gKChsaW5lNSA8PCAxKSB8IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCArIDIsIGggLSBHUlJFRkVSRU5DRURZICsgMSkpICYgMHgwMzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEdSUkVHOw0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9HUlJEUHJvYzo6ZGVjb2RlX1RlbXBsYXRlMV9vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ3JDb250ZXh0KQ0KK3sNCisgICAgRlhfQk9PTCBMVFAsIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR1JSRUc7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMV9yLCBsaW5lMl9yLCBsaW5lM19yOw0KKyAgICBGWF9CWVRFICpwTGluZSwgKnBMaW5lUiwgY1ZhbDsNCisgICAgRlhfSU5UUFRSIG5TdHJpZGUsIG5TdHJpZGVSLCBuT2Zmc2V0Ow0KKyAgICBGWF9JTlQzMiBrLCBuQml0czsNCisgICAgRlhfSU5UMzIgR1JXUiwgR1JIUjsNCisgICAgRlhfSU5UMzIgR1JXLCBHUkg7DQorICAgIEdSVyA9IChGWF9JTlQzMilDSkJpZzJfR1JSRFByb2M6OkdSVzsNCisgICAgR1JIID0gKEZYX0lOVDMyKUNKQmlnMl9HUlJEUHJvYzo6R1JIOw0KKyAgICBMVFAgPSAwOw0KKyAgICBKQklHMl9BTExPQyhHUlJFRywgQ0pCaWcyX0ltYWdlKEdSVywgR1JIKSk7DQorICAgIGlmIChHUlJFRy0+bV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICBkZWxldGUgR1JSRUc7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJHZW5lcmljIHJlZmluZW1lbnQgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZTogQ3JlYXRlIEltYWdlIEZhaWxlZCB3aXRoIHdpZHRoID0gJWQsIGhlaWdodCA9ICVkXG4iLCBHUlcsIEdSSCk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwTGluZSA9IEdSUkVHLT5tX3BEYXRhOw0KKyAgICBwTGluZVIgPSBHUlJFRkVSRU5DRS0+bV9wRGF0YTsNCisgICAgblN0cmlkZSA9IEdSUkVHLT5tX25TdHJpZGU7DQorICAgIG5TdHJpZGVSID0gR1JSRUZFUkVOQ0UtPm1fblN0cmlkZTsNCisgICAgR1JXUiA9IChGWF9JTlQzMilHUlJFRkVSRU5DRS0+bV9uV2lkdGg7DQorICAgIEdSSFIgPSAoRlhfSU5UMzIpR1JSRUZFUkVOQ0UtPm1fbkhlaWdodDsNCisgICAgaWYgKEdSUkVGRVJFTkNFRFkgPCAtR1JIUiArIDEgfHwgR1JSRUZFUkVOQ0VEWSA+IEdSSFIgLSAxKSB7DQorICAgICAgICBHUlJFRkVSRU5DRURZID0gMDsNCisgICAgfQ0KKyAgICBuT2Zmc2V0ID0gLUdSUkVGRVJFTkNFRFkgKiBuU3RyaWRlUjsNCisgICAgZm9yIChGWF9JTlQzMiBoID0gMDsgaCA8IEdSSDsgaCsrKSB7DQorICAgICAgICBpZihUUEdST04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnckNvbnRleHRbMHgwMDA4XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGxpbmUxID0gKGggPiAwKSA/IHBMaW5lWy1uU3RyaWRlXSA8PCAxIDogMDsNCisgICAgICAgIEZYX0lOVDMyIHJlZmVyZW5jZV9oID0gaCAtIEdSUkVGRVJFTkNFRFk7DQorICAgICAgICBGWF9CT09MIGxpbmUxX3Jfb2sgPSAocmVmZXJlbmNlX2ggPiAwICYmIHJlZmVyZW5jZV9oIDwgR1JIUiArIDEpOw0KKyAgICAgICAgRlhfQk9PTCBsaW5lMl9yX29rID0gKHJlZmVyZW5jZV9oID4gLTEgJiYgcmVmZXJlbmNlX2ggPCBHUkhSKTsNCisgICAgICAgIEZYX0JPT0wgbGluZTNfcl9vayA9IChyZWZlcmVuY2VfaCA+IC0yICYmIHJlZmVyZW5jZV9oIDwgR1JIUiAtIDEpOw0KKyAgICAgICAgbGluZTFfciA9IGxpbmUxX3Jfb2sgPyBwTGluZVJbbk9mZnNldCAtIG5TdHJpZGVSXSA6IDA7DQorICAgICAgICBsaW5lMl9yID0gbGluZTJfcl9vayA/IHBMaW5lUltuT2Zmc2V0XSA6IDA7DQorICAgICAgICBsaW5lM19yID0gbGluZTNfcl9vayA/IHBMaW5lUltuT2Zmc2V0ICsgblN0cmlkZVJdIDogMDsNCisgICAgICAgIGlmKExUUCA9PSAwKSB7DQorICAgICAgICAgICAgQ09OVEVYVCA9IChsaW5lMSAmIDB4MDM4MCkgfCAoKGxpbmUxX3IgPj4gMikgJiAweDAwMjApDQorICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMl9yID4+IDQpICYgMHgwMDFjKSB8ICgobGluZTNfciA+PiA2KSAmIDB4MDAwMyk7DQorICAgICAgICAgICAgZm9yIChGWF9JTlQzMiB3ID0gMDsgdyA8IEdSVzsgdyArPSA4KSB7DQorICAgICAgICAgICAgICAgIG5CaXRzID0gR1JXIC0gdyA+IDggPyA4IDogR1JXIC0gdzsNCisgICAgICAgICAgICAgICAgaWYgKGggPiAwKQ0KKyAgICAgICAgICAgICAgICAgICAgbGluZTEgPSAobGluZTEgPDwgOCkgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodyArIDggPCBHUlcgPyBwTGluZVstblN0cmlkZSArICh3ID4+IDMpICsgMV0gPDwgMSA6IDApOw0KKyAgICAgICAgICAgICAgICBpZihsaW5lMV9yX29rKQ0KKyAgICAgICAgICAgICAgICAgICAgbGluZTFfciA9IChsaW5lMV9yIDw8IDgpIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodyArIDggPCBHUldSID8gcExpbmVSW25PZmZzZXQgLSBuU3RyaWRlUiArICh3ID4+IDMpICsgMV0gOiAwKTsNCisgICAgICAgICAgICAgICAgaWYobGluZTJfcl9vaykNCisgICAgICAgICAgICAgICAgICAgIGxpbmUyX3IgPSAobGluZTJfciA8PCA4KSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHcgKyA4IDwgR1JXUiA/IHBMaW5lUltuT2Zmc2V0ICsgKHcgPj4gMykgKyAxXSA6IDApOw0KKyAgICAgICAgICAgICAgICBpZihsaW5lM19yX29rKQ0KKyAgICAgICAgICAgICAgICAgICAgbGluZTNfciA9IChsaW5lM19yIDw8IDgpIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodyArIDggPCBHUldSID8gcExpbmVSW25PZmZzZXQgKyBuU3RyaWRlUiArICh3ID4+IDMpICsgMV0gOiAwKTsNCisgICAgICAgICAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBsaW5lM19yID0gMDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG5CaXRzOyBrKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdyQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgKDcgLSBrKTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKENPTlRFWFQgJiAweDAxOGQpIDw8IDEpIHwgKGJWYWwgPDwgNikgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGluZTEgPj4gKDcgLSBrKSkgJiAweDAwODApIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxpbmUxX3IgPj4gKDkgLSBrKSkgJiAweDAwMjApIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxpbmUyX3IgPj4gKDExIC0gaykpICYgMHgwMDA0KSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsaW5lM19yID4+ICgxMyAtIGspKSAmIDB4MDAwMSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcExpbmVbdyA+PiAzXSA9IGNWYWw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBDT05URVhUID0gKGxpbmUxICYgMHgwMzgwKSB8ICgobGluZTFfciA+PiAyKSAmIDB4MDAyMCkNCisgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyX3IgPj4gNCkgJiAweDAwMWMpIHwgKChsaW5lM19yID4+IDYpICYgMHgwMDAzKTsNCisgICAgICAgICAgICBmb3IgKEZYX0lOVDMyIHcgPSAwOyB3IDwgR1JXOyB3ICs9IDgpIHsNCisgICAgICAgICAgICAgICAgbkJpdHMgPSBHUlcgLSB3ID4gOCA/IDggOiBHUlcgLSB3Ow0KKyAgICAgICAgICAgICAgICBpZiAoaCA+IDApDQorICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3ICsgOCA8IEdSVyA/IHBMaW5lWy1uU3RyaWRlICsgKHcgPj4gMykgKyAxXSA8PCAxIDogMCk7DQorICAgICAgICAgICAgICAgIGlmKGxpbmUxX3Jfb2spDQorICAgICAgICAgICAgICAgICAgICBsaW5lMV9yID0gKGxpbmUxX3IgPDwgOCkgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3ICsgOCA8IEdSV1IgPyBwTGluZVJbbk9mZnNldCAtIG5TdHJpZGVSICsgKHcgPj4gMykgKyAxXSA6IDApOw0KKyAgICAgICAgICAgICAgICBpZihsaW5lMl9yX29rKQ0KKyAgICAgICAgICAgICAgICAgICAgbGluZTJfciA9IChsaW5lMl9yIDw8IDgpIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodyArIDggPCBHUldSID8gcExpbmVSW25PZmZzZXQgKyAodyA+PiAzKSArIDFdIDogMCk7DQorICAgICAgICAgICAgICAgIGlmKGxpbmUzX3Jfb2spDQorICAgICAgICAgICAgICAgICAgICBsaW5lM19yID0gKGxpbmUzX3IgPDwgOCkgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3ICsgOCA8IEdSV1IgPyBwTGluZVJbbk9mZnNldCArIG5TdHJpZGVSICsgKHcgPj4gMykgKyAxXSA6IDApOw0KKyAgICAgICAgICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUzX3IgPSAwOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbkJpdHM7IGsrKykgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3ICsgaywgaCk7DQorICAgICAgICAgICAgICAgICAgICBpZighKFRQR1JPTiAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIGsgLSAxLCBoIC0gMSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3ICsgaywgaCAtIDEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIGsgKyAxLCBoIC0gMSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3ICsgayAtIDEsIGgpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIGsgKyAxLCBoKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgKyBrIC0gMSwgaCArIDEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIGssIGggKyAxKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgKyBrICsgMSwgaCArIDEpKSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnckNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8ICg3IC0gayk7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwMThkKSA8PCAxKSB8IChiVmFsIDw8IDYpIHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxpbmUxID4+ICg3IC0gaykpICYgMHgwMDgwKSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsaW5lMV9yID4+ICg5IC0gaykpICYgMHgwMDIwKSB8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsaW5lMl9yID4+ICgxMSAtIGspKSAmIDB4MDAwNCkgfA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGluZTNfciA+PiAoMTMgLSBrKSkgJiAweDAwMDEpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBMaW5lW3cgPj4gM10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHBMaW5lICs9IG5TdHJpZGU7DQorICAgICAgICBpZiAoaCA8IEdSSFIgKyBHUlJFRkVSRU5DRURZKSB7DQorICAgICAgICAgICAgcExpbmVSICs9IG5TdHJpZGVSOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBHUlJFRzsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfR1JSRFByb2M6OmRlY29kZV9WMShDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnckNvbnRleHQpDQorew0KKyAgICBGWF9CT09MIExUUCwgU0xUUCwgYlZhbDsNCisgICAgRlhfQk9PTCBUUEdSUElYLCBUUEdSVkFMOw0KKyAgICBGWF9EV09SRCBDT05URVhUOw0KKyAgICBDSkJpZzJfSW1hZ2UgKkdSUkVHOw0KKyAgICBMVFAgPSAwOw0KKyAgICBKQklHMl9BTExPQyhHUlJFRywgQ0pCaWcyX0ltYWdlKEdSVywgR1JIKSk7DQorICAgIEdSUkVHLT5maWxsKDApOw0KKyAgICBmb3IoRlhfRFdPUkQgaCA9IDA7IGggPCBHUkg7IGgrKykgew0KKyAgICAgICAgaWYoVFBHUk9OKSB7DQorICAgICAgICAgICAgc3dpdGNoKEdSVEVNUExBVEUpIHsNCisgICAgICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IDB4MDAxMDsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gMHgwMDA4Ow0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIFNMVFAgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdyQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAwKSB7DQorICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR1JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCA9IDA7DQorICAgICAgICAgICAgICAgIHN3aXRjaChHUlRFTVBMQVRFKSB7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyAxLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpIDw8IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggLSAxLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpIDw8IDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyAxLCBoIC0gR1JSRUZFUkVOQ0VEWSkgPDwgMzsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkpIDw8IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggLSAxLCBoIC0gR1JSRUZFUkVOQ0VEWSkgPDwgNTsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCArIDEsIGggLSBHUlJFRkVSRU5DRURZIC0gMSkgPDwgNjsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkgLSAxKSA8PCA3Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYICsgR1JBVFsyXSwgaCAtIEdSUkVGRVJFTkNFRFkgKyBHUkFUWzNdKSA8PCA4Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUctPmdldFBpeGVsKHcgLSAxLCBoKSA8PCA5Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUctPmdldFBpeGVsKHcgKyAxLCBoIC0gMSkgPDwgMTA7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRy0+Z2V0UGl4ZWwodywgaCAtIDEpIDw8IDExOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUctPmdldFBpeGVsKHcgKyBHUkFUWzBdLCBoICsgR1JBVFsxXSkgPDwgMTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyAxLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpIDw8IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyAxLCBoIC0gR1JSRUZFUkVOQ0VEWSkgPDwgMjsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkpIDw8IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggLSAxLCBoIC0gR1JSRUZFUkVOQ0VEWSkgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkgLSAxKSA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUctPmdldFBpeGVsKHcgLSAxLCBoKSA8PCA2Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUctPmdldFBpeGVsKHcgKyAxLCBoIC0gMSkgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVHLT5nZXRQaXhlbCh3LCBoIC0gMSkgPDwgODsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVHLT5nZXRQaXhlbCh3IC0gMSwgaCAtIDEpIDw8IDk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ3JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgR1JSRUctPnNldFBpeGVsKHcsIGgsIGJWYWwpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR1JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgYlZhbCA9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3LCBoKTsNCisgICAgICAgICAgICAgICAgaWYoVFBHUk9OICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gMSwgaCAtIDEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3LCBoIC0gMSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgKyAxLCBoIC0gMSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSAxLCBoKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoYlZhbCA9PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyArIDEsIGgpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gMSwgaCArIDEpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChiVmFsID09IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3LCBoICsgMSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJWYWwgPT0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgKyAxLCBoICsgMSkpKSB7DQorICAgICAgICAgICAgICAgICAgICBUUEdSUElYID0gMTsNCisgICAgICAgICAgICAgICAgICAgIFRQR1JWQUwgPSBiVmFsOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgVFBHUlBJWCA9IDA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYoVFBHUlBJWCkgew0KKyAgICAgICAgICAgICAgICAgICAgR1JSRUctPnNldFBpeGVsKHcsIGgsIFRQR1JWQUwpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2goR1JURU1QTEFURSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyAxLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkgKyAxKSA8PCAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCAtIDEsIGggLSBHUlJFRkVSRU5DRURZICsgMSkgPDwgMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyAxLCBoIC0gR1JSRUZFUkVOQ0VEWSkgPDwgMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZKSA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCAtIDEsIGggLSBHUlJFRkVSRU5DRURZKSA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCArIDEsIGggLSBHUlJFRkVSRU5DRURZIC0gMSkgPDwgNjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFgsIGggLSBHUlJFRkVSRU5DRURZIC0gMSkgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyBHUkFUWzJdLCBoIC0gR1JSRUZFUkVOQ0VEWSArIEdSQVRbM10pIDw8IDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUctPmdldFBpeGVsKHcgLSAxLCBoKSA8PCA5Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVHLT5nZXRQaXhlbCh3ICsgMSwgaCAtIDEpIDw8IDEwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVHLT5nZXRQaXhlbCh3LCBoIC0gMSkgPDwgMTE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUctPmdldFBpeGVsKHcgKyBHUkFUWzBdLCBoICsgR1JBVFsxXSkgPDwgMTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHUlJFRkVSRU5DRS0+Z2V0UGl4ZWwodyAtIEdSUkVGRVJFTkNFRFggKyAxLCBoIC0gR1JSRUZFUkVOQ0VEWSArIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkgKyAxKSA8PCAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCArIDEsIGggLSBHUlJFRkVSRU5DRURZKSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVGRVJFTkNFLT5nZXRQaXhlbCh3IC0gR1JSRUZFUkVOQ0VEWCwgaCAtIEdSUkVGRVJFTkNFRFkpIDw8IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYIC0gMSwgaCAtIEdSUkVGRVJFTkNFRFkpIDw8IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUZFUkVOQ0UtPmdldFBpeGVsKHcgLSBHUlJFRkVSRU5DRURYLCBoIC0gR1JSRUZFUkVOQ0VEWSAtIDEpIDw8IDU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUctPmdldFBpeGVsKHcgLSAxLCBoKSA8PCA2Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVHLT5nZXRQaXhlbCh3ICsgMSwgaCAtIDEpIDw8IDc7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR1JSRUctPmdldFBpeGVsKHcsIGggLSAxKSA8PCA4Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdSUkVHLT5nZXRQaXhlbCh3IC0gMSwgaCAtIDEpIDw8IDk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ3JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIEdSUkVHLT5zZXRQaXhlbCh3LCBoLCBiVmFsKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gR1JSRUc7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX1RSRFByb2M6OmRlY29kZV9IdWZmbWFuKENKQmlnMl9CaXRTdHJlYW0gKnBTdHJlYW0sIEpCaWcyQXJpdGhDdHggKmdyQ29udGV4dCkNCit7DQorICAgIEZYX0lOVDMyIFNUUklQVCwgRklSU1RTOw0KKyAgICBGWF9EV09SRCBOSU5TVEFOQ0VTOw0KKyAgICBGWF9JTlQzMiBEVCwgREZTLCBDVVJTOw0KKyAgICBGWF9CWVRFIENVUlQ7DQorICAgIEZYX0lOVDMyIFNJLCBUSTsNCisgICAgRlhfRFdPUkQgSURJOw0KKyAgICBDSkJpZzJfSW1hZ2UgKklCSTsNCisgICAgRlhfRFdPUkQgV0ksIEhJOw0KKyAgICBGWF9JTlQzMiBJRFM7DQorICAgIEZYX0JPT0wgUkk7DQorICAgIEZYX0lOVDMyIFJEV0ksIFJESEksIFJEWEksIFJEWUk7DQorICAgIENKQmlnMl9JbWFnZSAqSUJPSTsNCisgICAgRlhfRFdPUkQgV09JLCBIT0k7DQorICAgIENKQmlnMl9JbWFnZSAqU0JSRUc7DQorICAgIEZYX0JPT0wgYkZpcnN0Ow0KKyAgICBGWF9EV09SRCBuVG1wOw0KKyAgICBGWF9JTlQzMiBuVmFsLCBuQml0czsNCisgICAgQ0pCaWcyX0h1ZmZtYW5EZWNvZGVyICpwSHVmZm1hbkRlY29kZXI7DQorICAgIENKQmlnMl9HUlJEUHJvYyAqcEdSUkQ7DQorICAgIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXI7DQorICAgIEpCSUcyX0FMTE9DKHBIdWZmbWFuRGVjb2RlciwgQ0pCaWcyX0h1ZmZtYW5EZWNvZGVyKHBTdHJlYW0pKTsNCisgICAgSkJJRzJfQUxMT0MoU0JSRUcsIENKQmlnMl9JbWFnZShTQlcsIFNCSCkpOw0KKyAgICBTQlJFRy0+ZmlsbChTQkRFRlBJWEVMKTsNCisgICAgaWYocEh1ZmZtYW5EZWNvZGVyLT5kZWNvZGVBVmFsdWUoU0JIVUZGRFQsICZTVFJJUFQpICE9IDApIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInRleHQgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZSAoaHVmZm1hbik6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIFNUUklQVCAqPSBTQlNUUklQUzsNCisgICAgU1RSSVBUID0gLVNUUklQVDsNCisgICAgRklSU1RTID0gMDsNCisgICAgTklOU1RBTkNFUyA9IDA7DQorICAgIHdoaWxlKE5JTlNUQU5DRVMgPCBTQk5VTUlOU1RBTkNFUykgew0KKyAgICAgICAgaWYocEh1ZmZtYW5EZWNvZGVyLT5kZWNvZGVBVmFsdWUoU0JIVUZGRFQsICZEVCkgIT0gMCkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInRleHQgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZSAoaHVmZm1hbik6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIERUICo9IFNCU1RSSVBTOw0KKyAgICAgICAgU1RSSVBUID0gU1RSSVBUICsgRFQ7DQorICAgICAgICBiRmlyc3QgPSBUUlVFOw0KKyAgICAgICAgZm9yKDs7KSB7DQorICAgICAgICAgICAgaWYoYkZpcnN0KSB7DQorICAgICAgICAgICAgICAgIGlmKHBIdWZmbWFuRGVjb2Rlci0+ZGVjb2RlQVZhbHVlKFNCSFVGRkZTLCAmREZTKSAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmUgKGh1ZmZtYW4pOiB0b28gc2hvcnQuIik7DQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGSVJTVFMgPSBGSVJTVFMgKyBERlM7DQorICAgICAgICAgICAgICAgIENVUlMgPSBGSVJTVFM7DQorICAgICAgICAgICAgICAgIGJGaXJzdCA9IEZBTFNFOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG5WYWwgPSBwSHVmZm1hbkRlY29kZXItPmRlY29kZUFWYWx1ZShTQkhVRkZEUywgJklEUyk7DQorICAgICAgICAgICAgICAgIGlmKG5WYWwgPT0gSkJJRzJfT09CKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmKG5WYWwgIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlIChodWZmbWFuKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBDVVJTID0gQ1VSUyArIElEUyArIFNCRFNPRkZTRVQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoU0JTVFJJUFMgPT0gMSkgew0KKyAgICAgICAgICAgICAgICBDVVJUID0gMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBuVG1wID0gMTsNCisgICAgICAgICAgICAgICAgd2hpbGUoKEZYX0RXT1JEKSgxIDw8IG5UbXApIDwgU0JTVFJJUFMpIHsNCisgICAgICAgICAgICAgICAgICAgIG5UbXAgKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYocFN0cmVhbS0+cmVhZE5CaXRzKG5UbXAsICZuVmFsKSAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmUgKGh1ZmZtYW4pOiB0b28gc2hvcnQuIik7DQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBDVVJUID0gblZhbDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgVEkgPSBTVFJJUFQgKyBDVVJUOw0KKyAgICAgICAgICAgIG5WYWwgPSAwOw0KKyAgICAgICAgICAgIG5CaXRzID0gMDsNCisgICAgICAgICAgICBmb3IoOzspIHsNCisgICAgICAgICAgICAgICAgaWYocFN0cmVhbS0+cmVhZDFCaXQoJm5UbXApICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInRleHQgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZSAoaHVmZm1hbik6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG5WYWwgPSAoblZhbCA8PCAxKSB8IG5UbXA7DQorICAgICAgICAgICAgICAgIG5CaXRzICsrOw0KKyAgICAgICAgICAgICAgICBmb3IoSURJID0gMDsgSURJIDwgU0JOVU1TWU1TOyBJREkrKykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYoKG5CaXRzID09IFNCU1lNQ09ERVNbSURJXS5jb2RlbGVuKSAmJiAoblZhbCA9PSBTQlNZTUNPREVTW0lESV0uY29kZSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihJREkgPCBTQk5VTVNZTVMpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmKFNCUkVGSU5FID09IDApIHsNCisgICAgICAgICAgICAgICAgUkkgPSAwOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmKHBTdHJlYW0tPnJlYWQxQml0KCZSSSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlIChodWZmbWFuKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoUkkgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBJQkkgPSBTQlNZTVNbSURJXTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZigocEh1ZmZtYW5EZWNvZGVyLT5kZWNvZGVBVmFsdWUoU0JIVUZGUkRXLCAmUkRXSSkgIT0gMCkNCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocEh1ZmZtYW5EZWNvZGVyLT5kZWNvZGVBVmFsdWUoU0JIVUZGUkRILCAmUkRISSkgIT0gMCkNCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocEh1ZmZtYW5EZWNvZGVyLT5kZWNvZGVBVmFsdWUoU0JIVUZGUkRYLCAmUkRYSSkgIT0gMCkNCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocEh1ZmZtYW5EZWNvZGVyLT5kZWNvZGVBVmFsdWUoU0JIVUZGUkRZLCAmUkRZSSkgIT0gMCkNCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAocEh1ZmZtYW5EZWNvZGVyLT5kZWNvZGVBVmFsdWUoU0JIVUZGUlNJWkUsICZuVmFsKSAhPSAwKSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlIChodWZmbWFuKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcFN0cmVhbS0+YWxpZ25CeXRlKCk7DQorICAgICAgICAgICAgICAgIG5UbXAgPSBwU3RyZWFtLT5nZXRPZmZzZXQoKTsNCisgICAgICAgICAgICAgICAgSUJPSSA9IFNCU1lNU1tJREldOw0KKyAgICAgICAgICAgICAgICBpZiAoIUlCT0kpIHsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIFdPSSA9IElCT0ktPm1fbldpZHRoOw0KKyAgICAgICAgICAgICAgICBIT0kgPSBJQk9JLT5tX25IZWlnaHQ7DQorICAgICAgICAgICAgICAgIGlmICgoaW50KShXT0kgKyBSRFdJKSA8IDAgfHwgKGludCkoSE9JICsgUkRISSkgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmUgKGh1ZmZtYW4pOiBJbnZhbGlkIFJEV0kgb3IgUkRISSB2YWx1ZS4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEpCSUcyX0FMTE9DKHBHUlJELCBDSkJpZzJfR1JSRFByb2MoKSk7DQorICAgICAgICAgICAgICAgIHBHUlJELT5HUlcgPSBXT0kgKyBSRFdJOw0KKyAgICAgICAgICAgICAgICBwR1JSRC0+R1JIID0gSE9JICsgUkRISTsNCisgICAgICAgICAgICAgICAgcEdSUkQtPkdSVEVNUExBVEUgPSBTQlJURU1QTEFURTsNCisgICAgICAgICAgICAgICAgcEdSUkQtPkdSUkVGRVJFTkNFID0gSUJPSTsNCisgICAgICAgICAgICAgICAgcEdSUkQtPkdSUkVGRVJFTkNFRFggPSAoUkRXSSA+PiAyKSArIFJEWEk7DQorICAgICAgICAgICAgICAgIHBHUlJELT5HUlJFRkVSRU5DRURZID0gKFJESEkgPj4gMikgKyBSRFlJOw0KKyAgICAgICAgICAgICAgICBwR1JSRC0+VFBHUk9OID0gMDsNCisgICAgICAgICAgICAgICAgcEdSUkQtPkdSQVRbMF0gPSBTQlJBVFswXTsNCisgICAgICAgICAgICAgICAgcEdSUkQtPkdSQVRbMV0gPSBTQlJBVFsxXTsNCisgICAgICAgICAgICAgICAgcEdSUkQtPkdSQVRbMl0gPSBTQlJBVFsyXTsNCisgICAgICAgICAgICAgICAgcEdSUkQtPkdSQVRbM10gPSBTQlJBVFszXTsNCisgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MocEFyaXRoRGVjb2RlciwgQ0pCaWcyX0FyaXRoRGVjb2RlcihwU3RyZWFtKSk7DQorICAgICAgICAgICAgICAgIElCSSA9IHBHUlJELT5kZWNvZGUocEFyaXRoRGVjb2RlciwgZ3JDb250ZXh0KTsNCisgICAgICAgICAgICAgICAgaWYoSUJJID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwR1JSRDsNCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwQXJpdGhEZWNvZGVyOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVsZXRlIHBBcml0aERlY29kZXI7DQorICAgICAgICAgICAgICAgIHBTdHJlYW0tPmFsaWduQnl0ZSgpOw0KKyAgICAgICAgICAgICAgICBwU3RyZWFtLT5vZmZzZXQoMik7DQorICAgICAgICAgICAgICAgIGlmKChGWF9EV09SRCluVmFsICE9IChwU3RyZWFtLT5nZXRPZmZzZXQoKSAtIG5UbXApKSB7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgSUJJOw0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBHUlJEOw0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlIChodWZmbWFuKToiDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBwcm9jZXNzZWQgYnkgZ2VuZXJpYyByZWZpbmVtZW50IHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmUgZG9lc24ndCBlcXVhbCBTQkhVRkZSU0laRS4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBwR1JSRDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKCFJQkkpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIFdJID0gSUJJLT5tX25XaWR0aDsNCisgICAgICAgICAgICBISSA9IElCSS0+bV9uSGVpZ2h0Ow0KKyAgICAgICAgICAgIGlmKFRSQU5TUE9TRUQgPT0gMCAmJiAoKFJFRkNPUk5FUiA9PSBKQklHMl9DT1JORVJfVE9QUklHSFQpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoUkVGQ09STkVSID09IEpCSUcyX0NPUk5FUl9CT1RUT01SSUdIVCkpKSB7DQorICAgICAgICAgICAgICAgIENVUlMgPSBDVVJTICsgV0kgLSAxOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZihUUkFOU1BPU0VEID09IDEgJiYgKChSRUZDT1JORVIgPT0gSkJJRzJfQ09STkVSX0JPVFRPTUxFRlQpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFJFRkNPUk5FUiA9PSBKQklHMl9DT1JORVJfQk9UVE9NUklHSFQpKSkgew0KKyAgICAgICAgICAgICAgICBDVVJTID0gQ1VSUyArIEhJIC0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgU0kgPSBDVVJTOw0KKyAgICAgICAgICAgIGlmKFRSQU5TUE9TRUQgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBzd2l0Y2goUkVGQ09STkVSKSB7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPUk5FUl9UT1BMRUZUOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNCUkVHLT5jb21wb3NlRnJvbShTSSwgVEksIElCSSwgU0JDT01CT1ApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT1JORVJfVE9QUklHSFQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JSRUctPmNvbXBvc2VGcm9tKFNJIC0gV0kgKyAxLCBUSSwgSUJJLCBTQkNPTUJPUCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPUk5FUl9CT1RUT01MRUZUOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNCUkVHLT5jb21wb3NlRnJvbShTSSwgVEkgLSBISSArIDEsIElCSSwgU0JDT01CT1ApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT1JORVJfQk9UVE9NUklHSFQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JSRUctPmNvbXBvc2VGcm9tKFNJIC0gV0kgKyAxLCBUSSAtIEhJICsgMSwgSUJJLCBTQkNPTUJPUCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBzd2l0Y2goUkVGQ09STkVSKSB7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPUk5FUl9UT1BMRUZUOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNCUkVHLT5jb21wb3NlRnJvbShUSSwgU0ksIElCSSwgU0JDT01CT1ApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT1JORVJfVE9QUklHSFQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JSRUctPmNvbXBvc2VGcm9tKFRJIC0gV0kgKyAxLCBTSSwgSUJJLCBTQkNPTUJPUCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPUk5FUl9CT1RUT01MRUZUOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNCUkVHLT5jb21wb3NlRnJvbShUSSwgU0kgLSBISSArIDEsIElCSSwgU0JDT01CT1ApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT1JORVJfQk9UVE9NUklHSFQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JSRUctPmNvbXBvc2VGcm9tKFRJIC0gV0kgKyAxLCBTSSAtIEhJICsgMSwgSUJJLCBTQkNPTUJPUCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoUkkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgSUJJOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZihUUkFOU1BPU0VEID09IDAgJiYgKChSRUZDT1JORVIgPT0gSkJJRzJfQ09STkVSX1RPUExFRlQpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoUkVGQ09STkVSID09IEpCSUcyX0NPUk5FUl9CT1RUT01MRUZUKSkpIHsNCisgICAgICAgICAgICAgICAgQ1VSUyA9IENVUlMgKyBXSSAtIDE7DQorICAgICAgICAgICAgfSBlbHNlIGlmKFRSQU5TUE9TRUQgPT0gMSAmJiAoKFJFRkNPUk5FUiA9PSBKQklHMl9DT1JORVJfVE9QTEVGVCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoUkVGQ09STkVSID09IEpCSUcyX0NPUk5FUl9UT1BSSUdIVCkpKSB7DQorICAgICAgICAgICAgICAgIENVUlMgPSBDVVJTICsgSEkgLSAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBOSU5TVEFOQ0VTID0gTklOU1RBTkNFUyArIDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgZGVsZXRlIHBIdWZmbWFuRGVjb2RlcjsNCisgICAgcmV0dXJuIFNCUkVHOw0KK2ZhaWxlZDoNCisgICAgZGVsZXRlIHBIdWZmbWFuRGVjb2RlcjsNCisgICAgZGVsZXRlIFNCUkVHOw0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfVFJEUHJvYzo6ZGVjb2RlX0FyaXRoKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdyQ29udGV4dCwNCisgICAgICAgIEpCaWcySW50RGVjb2RlclN0YXRlICpwSURTKQ0KK3sNCisgICAgRlhfSU5UMzIgU1RSSVBULCBGSVJTVFM7DQorICAgIEZYX0RXT1JEIE5JTlNUQU5DRVM7DQorICAgIEZYX0lOVDMyIERULCBERlMsIENVUlM7DQorICAgIEZYX0lOVDMyIENVUlQ7DQorICAgIEZYX0lOVDMyIFNJLCBUSTsNCisgICAgRlhfRFdPUkQgSURJOw0KKyAgICBDSkJpZzJfSW1hZ2UgKklCSTsNCisgICAgRlhfRFdPUkQgV0ksIEhJOw0KKyAgICBGWF9JTlQzMiBJRFM7DQorICAgIEZYX0JPT0wgUkk7DQorICAgIEZYX0lOVDMyIFJEV0ksIFJESEksIFJEWEksIFJEWUk7DQorICAgIENKQmlnMl9JbWFnZSAqSUJPSTsNCisgICAgRlhfRFdPUkQgV09JLCBIT0k7DQorICAgIENKQmlnMl9JbWFnZSAqU0JSRUc7DQorICAgIEZYX0JPT0wgYkZpcnN0Ow0KKyAgICBGWF9JTlQzMiBuUmV0LCBuVmFsOw0KKyAgICBGWF9JTlQzMiBiUmV0YWluZWQ7DQorICAgIENKQmlnMl9Bcml0aEludERlY29kZXIgKklBRFQsICpJQUZTLCAqSUFEUywgKklBSVQsICpJQVJJLCAqSUFSRFcsICpJQVJESCwgKklBUkRYLCAqSUFSRFk7DQorICAgIENKQmlnMl9Bcml0aElhaWREZWNvZGVyICpJQUlEOw0KKyAgICBDSkJpZzJfR1JSRFByb2MgKnBHUlJEOw0KKyAgICBpZihwSURTKSB7DQorICAgICAgICBJQURUID0gcElEUy0+SUFEVDsNCisgICAgICAgIElBRlMgPSBwSURTLT5JQUZTOw0KKyAgICAgICAgSUFEUyA9IHBJRFMtPklBRFM7DQorICAgICAgICBJQUlUID0gcElEUy0+SUFJVDsNCisgICAgICAgIElBUkkgPSBwSURTLT5JQVJJOw0KKyAgICAgICAgSUFSRFcgPSBwSURTLT5JQVJEVzsNCisgICAgICAgIElBUkRIID0gcElEUy0+SUFSREg7DQorICAgICAgICBJQVJEWCA9IHBJRFMtPklBUkRYOw0KKyAgICAgICAgSUFSRFkgPSBwSURTLT5JQVJEWTsNCisgICAgICAgIElBSUQgPSBwSURTLT5JQUlEOw0KKyAgICAgICAgYlJldGFpbmVkID0gVFJVRTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEpCSUcyX0FMTE9DKElBRFQsIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgICAgICBKQklHMl9BTExPQyhJQUZTLCBDSkJpZzJfQXJpdGhJbnREZWNvZGVyKCkpOw0KKyAgICAgICAgSkJJRzJfQUxMT0MoSUFEUywgQ0pCaWcyX0FyaXRoSW50RGVjb2RlcigpKTsNCisgICAgICAgIEpCSUcyX0FMTE9DKElBSVQsIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgICAgICBKQklHMl9BTExPQyhJQVJJLCBDSkJpZzJfQXJpdGhJbnREZWNvZGVyKCkpOw0KKyAgICAgICAgSkJJRzJfQUxMT0MoSUFSRFcsIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgICAgICBKQklHMl9BTExPQyhJQVJESCwgQ0pCaWcyX0FyaXRoSW50RGVjb2RlcigpKTsNCisgICAgICAgIEpCSUcyX0FMTE9DKElBUkRYLCBDSkJpZzJfQXJpdGhJbnREZWNvZGVyKCkpOw0KKyAgICAgICAgSkJJRzJfQUxMT0MoSUFSRFksIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgICAgICBKQklHMl9BTExPQyhJQUlEICwgQ0pCaWcyX0FyaXRoSWFpZERlY29kZXIoU0JTWU1DT0RFTEVOKSk7DQorICAgICAgICBiUmV0YWluZWQgPSBGQUxTRTsNCisgICAgfQ0KKyAgICBKQklHMl9BTExPQyhTQlJFRywgQ0pCaWcyX0ltYWdlKFNCVywgU0JIKSk7DQorICAgIFNCUkVHLT5maWxsKFNCREVGUElYRUwpOw0KKyAgICBpZihJQURULT5kZWNvZGUocEFyaXRoRGVjb2RlciwgJlNUUklQVCkgPT0gLTEpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInRleHQgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZSAoYXJpdGgpOiB0b28gc2hvcnQuIik7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBTVFJJUFQgKj0gU0JTVFJJUFM7DQorICAgIFNUUklQVCA9IC1TVFJJUFQ7DQorICAgIEZJUlNUUyA9IDA7DQorICAgIE5JTlNUQU5DRVMgPSAwOw0KKyAgICB3aGlsZShOSU5TVEFOQ0VTIDwgU0JOVU1JTlNUQU5DRVMpIHsNCisgICAgICAgIGlmKElBRFQtPmRlY29kZShwQXJpdGhEZWNvZGVyLCAmRFQpID09IC0xKSB7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlIChhcml0aCk6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIERUICo9IFNCU1RSSVBTOw0KKyAgICAgICAgU1RSSVBUID0gU1RSSVBUICsgRFQ7DQorICAgICAgICBiRmlyc3QgPSBUUlVFOw0KKyAgICAgICAgZm9yKDs7KSB7DQorICAgICAgICAgICAgaWYoYkZpcnN0KSB7DQorICAgICAgICAgICAgICAgIGlmKElBRlMtPmRlY29kZShwQXJpdGhEZWNvZGVyLCAmREZTKSA9PSAtMSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlIChhcml0aCk6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZJUlNUUyA9IEZJUlNUUyArIERGUzsNCisgICAgICAgICAgICAgICAgQ1VSUyA9IEZJUlNUUzsNCisgICAgICAgICAgICAgICAgYkZpcnN0ID0gRkFMU0U7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgblJldCA9IElBRFMtPmRlY29kZShwQXJpdGhEZWNvZGVyLCAmSURTKTsNCisgICAgICAgICAgICAgICAgaWYoblJldCA9PSBKQklHMl9PT0IpIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYoblJldCAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmUgKGFyaXRoKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBDVVJTID0gQ1VSUyArIElEUyArIFNCRFNPRkZTRVQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKE5JTlNUQU5DRVMgPj0gU0JOVU1JTlNUQU5DRVMpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmKFNCU1RSSVBTID09IDEpIHsNCisgICAgICAgICAgICAgICAgQ1VSVCA9IDA7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYoSUFJVC0+ZGVjb2RlKHBBcml0aERlY29kZXIsICZuVmFsKSA9PSAtMSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlIChhcml0aCk6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENVUlQgPSBuVmFsOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBUSSA9IFNUUklQVCArIENVUlQ7DQorICAgICAgICAgICAgaWYoSUFJRC0+ZGVjb2RlKHBBcml0aERlY29kZXIsICZuVmFsKSA9PSAtMSkgew0KKyAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmUgKGFyaXRoKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgSURJID0gblZhbDsNCisgICAgICAgICAgICBpZihJREkgPj0gU0JOVU1TWU1TKSB7DQorICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInRleHQgcmVnaW9uIGRlY29kaW5nIHByb2NlZHVyZSAoYXJpdGgpOiBzeW1ib2wgaWQgb3V0IG9mIHJhbmdlLiglZC8lZCkiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElESSwgU0JOVU1TWU1TKTsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmKFNCUkVGSU5FID09IDApIHsNCisgICAgICAgICAgICAgICAgUkkgPSAwOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmKElBUkktPmRlY29kZShwQXJpdGhEZWNvZGVyLCAmUkkpID09IC0xKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmUgKGFyaXRoKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKCFTQlNZTVNbSURJXSkgew0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoUkkgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBJQkkgPSBTQlNZTVNbSURJXTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZigoSUFSRFctPmRlY29kZShwQXJpdGhEZWNvZGVyLCAmUkRXSSkgPT0gLTEpDQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKElBUkRILT5kZWNvZGUocEFyaXRoRGVjb2RlciwgJlJESEkpID09IC0xKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChJQVJEWC0+ZGVjb2RlKHBBcml0aERlY29kZXIsICZSRFhJKSA9PSAtMSkNCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAoSUFSRFktPmRlY29kZShwQXJpdGhEZWNvZGVyLCAmUkRZSSkgPT0gLTEpKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJ0ZXh0IHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmUgKGFyaXRoKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgSUJPSSA9IFNCU1lNU1tJREldOw0KKyAgICAgICAgICAgICAgICBXT0kgPSBJQk9JLT5tX25XaWR0aDsNCisgICAgICAgICAgICAgICAgSE9JID0gSUJPSS0+bV9uSGVpZ2h0Ow0KKyAgICAgICAgICAgICAgICBpZiAoKGludCkoV09JICsgUkRXSSkgPCAwIHx8IChpbnQpKEhPSSArIFJESEkpIDwgMCkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigidGV4dCByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlIChhcml0aCk6IEludmFsaWQgUkRXSSBvciBSREhJIHZhbHVlLiIpOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MocEdSUkQsIENKQmlnMl9HUlJEUHJvYygpKTsNCisgICAgICAgICAgICAgICAgcEdSUkQtPkdSVyA9IFdPSSArIFJEV0k7DQorICAgICAgICAgICAgICAgIHBHUlJELT5HUkggPSBIT0kgKyBSREhJOw0KKyAgICAgICAgICAgICAgICBwR1JSRC0+R1JURU1QTEFURSA9IFNCUlRFTVBMQVRFOw0KKyAgICAgICAgICAgICAgICBwR1JSRC0+R1JSRUZFUkVOQ0UgPSBJQk9JOw0KKyAgICAgICAgICAgICAgICBwR1JSRC0+R1JSRUZFUkVOQ0VEWCA9IChSRFdJID4+IDEpICsgUkRYSTsNCisgICAgICAgICAgICAgICAgcEdSUkQtPkdSUkVGRVJFTkNFRFkgPSAoUkRISSA+PiAxKSArIFJEWUk7DQorICAgICAgICAgICAgICAgIHBHUlJELT5UUEdST04gPSAwOw0KKyAgICAgICAgICAgICAgICBwR1JSRC0+R1JBVFswXSA9IFNCUkFUWzBdOw0KKyAgICAgICAgICAgICAgICBwR1JSRC0+R1JBVFsxXSA9IFNCUkFUWzFdOw0KKyAgICAgICAgICAgICAgICBwR1JSRC0+R1JBVFsyXSA9IFNCUkFUWzJdOw0KKyAgICAgICAgICAgICAgICBwR1JSRC0+R1JBVFszXSA9IFNCUkFUWzNdOw0KKyAgICAgICAgICAgICAgICBJQkkgPSBwR1JSRC0+ZGVjb2RlKHBBcml0aERlY29kZXIsIGdyQ29udGV4dCk7DQorICAgICAgICAgICAgICAgIGlmKElCSSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgcEdSUkQ7DQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBkZWxldGUgcEdSUkQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIFdJID0gSUJJLT5tX25XaWR0aDsNCisgICAgICAgICAgICBISSA9IElCSS0+bV9uSGVpZ2h0Ow0KKyAgICAgICAgICAgIGlmKFRSQU5TUE9TRUQgPT0gMCAmJiAoKFJFRkNPUk5FUiA9PSBKQklHMl9DT1JORVJfVE9QUklHSFQpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoUkVGQ09STkVSID09IEpCSUcyX0NPUk5FUl9CT1RUT01SSUdIVCkpKSB7DQorICAgICAgICAgICAgICAgIENVUlMgPSBDVVJTICsgV0kgLSAxOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZihUUkFOU1BPU0VEID09IDEgJiYgKChSRUZDT1JORVIgPT0gSkJJRzJfQ09STkVSX0JPVFRPTUxFRlQpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFJFRkNPUk5FUiA9PSBKQklHMl9DT1JORVJfQk9UVE9NUklHSFQpKSkgew0KKyAgICAgICAgICAgICAgICBDVVJTID0gQ1VSUyArIEhJIC0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgU0kgPSBDVVJTOw0KKyAgICAgICAgICAgIGlmKFRSQU5TUE9TRUQgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBzd2l0Y2goUkVGQ09STkVSKSB7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPUk5FUl9UT1BMRUZUOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNCUkVHLT5jb21wb3NlRnJvbShTSSwgVEksIElCSSwgU0JDT01CT1ApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT1JORVJfVE9QUklHSFQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JSRUctPmNvbXBvc2VGcm9tKFNJIC0gV0kgKyAxLCBUSSwgSUJJLCBTQkNPTUJPUCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPUk5FUl9CT1RUT01MRUZUOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNCUkVHLT5jb21wb3NlRnJvbShTSSwgVEkgLSBISSArIDEsIElCSSwgU0JDT01CT1ApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT1JORVJfQk9UVE9NUklHSFQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JSRUctPmNvbXBvc2VGcm9tKFNJIC0gV0kgKyAxLCBUSSAtIEhJICsgMSwgSUJJLCBTQkNPTUJPUCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBzd2l0Y2goUkVGQ09STkVSKSB7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPUk5FUl9UT1BMRUZUOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNCUkVHLT5jb21wb3NlRnJvbShUSSwgU0ksIElCSSwgU0JDT01CT1ApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT1JORVJfVE9QUklHSFQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JSRUctPmNvbXBvc2VGcm9tKFRJIC0gV0kgKyAxLCBTSSwgSUJJLCBTQkNPTUJPUCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPUk5FUl9CT1RUT01MRUZUOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNCUkVHLT5jb21wb3NlRnJvbShUSSwgU0kgLSBISSArIDEsIElCSSwgU0JDT01CT1ApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT1JORVJfQk9UVE9NUklHSFQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JSRUctPmNvbXBvc2VGcm9tKFRJIC0gV0kgKyAxLCBTSSAtIEhJICsgMSwgSUJJLCBTQkNPTUJPUCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoUkkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgSUJJOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZihUUkFOU1BPU0VEID09IDAgJiYgKChSRUZDT1JORVIgPT0gSkJJRzJfQ09STkVSX1RPUExFRlQpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoUkVGQ09STkVSID09IEpCSUcyX0NPUk5FUl9CT1RUT01MRUZUKSkpIHsNCisgICAgICAgICAgICAgICAgQ1VSUyA9IENVUlMgKyBXSSAtIDE7DQorICAgICAgICAgICAgfSBlbHNlIGlmKFRSQU5TUE9TRUQgPT0gMSAmJiAoKFJFRkNPUk5FUiA9PSBKQklHMl9DT1JORVJfVE9QTEVGVCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoUkVGQ09STkVSID09IEpCSUcyX0NPUk5FUl9UT1BSSUdIVCkpKSB7DQorICAgICAgICAgICAgICAgIENVUlMgPSBDVVJTICsgSEkgLSAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBOSU5TVEFOQ0VTID0gTklOU1RBTkNFUyArIDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoYlJldGFpbmVkID09IEZBTFNFKSB7DQorICAgICAgICBkZWxldGUgSUFEVDsNCisgICAgICAgIGRlbGV0ZSBJQUZTOw0KKyAgICAgICAgZGVsZXRlIElBRFM7DQorICAgICAgICBkZWxldGUgSUFJVDsNCisgICAgICAgIGRlbGV0ZSBJQVJJOw0KKyAgICAgICAgZGVsZXRlIElBUkRXOw0KKyAgICAgICAgZGVsZXRlIElBUkRIOw0KKyAgICAgICAgZGVsZXRlIElBUkRYOw0KKyAgICAgICAgZGVsZXRlIElBUkRZOw0KKyAgICAgICAgZGVsZXRlIElBSUQ7DQorICAgIH0NCisgICAgcmV0dXJuIFNCUkVHOw0KK2ZhaWxlZDoNCisgICAgaWYoYlJldGFpbmVkID09IEZBTFNFKSB7DQorICAgICAgICBkZWxldGUgSUFEVDsNCisgICAgICAgIGRlbGV0ZSBJQUZTOw0KKyAgICAgICAgZGVsZXRlIElBRFM7DQorICAgICAgICBkZWxldGUgSUFJVDsNCisgICAgICAgIGRlbGV0ZSBJQVJJOw0KKyAgICAgICAgZGVsZXRlIElBUkRXOw0KKyAgICAgICAgZGVsZXRlIElBUkRIOw0KKyAgICAgICAgZGVsZXRlIElBUkRYOw0KKyAgICAgICAgZGVsZXRlIElBUkRZOw0KKyAgICAgICAgZGVsZXRlIElBSUQ7DQorICAgIH0NCisgICAgZGVsZXRlIFNCUkVHOw0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorQ0pCaWcyX1N5bWJvbERpY3QgKkNKQmlnMl9TRERQcm9jOjpkZWNvZGVfQXJpdGgoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwNCisgICAgICAgIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSkJpZzJBcml0aEN0eCAqZ3JDb250ZXh0KQ0KK3sNCisgICAgQ0pCaWcyX0ltYWdlICoqU0RORVdTWU1TOw0KKyAgICBGWF9EV09SRCBIQ0hFSUdIVCwgTlNZTVNERUNPREVEOw0KKyAgICBGWF9JTlQzMiBIQ0RIOw0KKyAgICBGWF9EV09SRCBTWU1XSURUSCwgVE9UV0lEVEgsIEhDRklSU1RTWU07DQorICAgIEZYX0lOVDMyIERXOw0KKyAgICBDSkJpZzJfSW1hZ2UgKkJTOw0KKyAgICBGWF9EV09SRCBJLCBKLCBSRUZBR0dOSU5TVDsNCisgICAgRlhfQk9PTCAqRVhGTEFHUzsNCisgICAgRlhfRFdPUkQgRVhJTkRFWDsNCisgICAgRlhfQk9PTCBDVVJFWEZMQUc7DQorICAgIEZYX0RXT1JEIEVYUlVOTEVOR1RIOw0KKyAgICBGWF9JTlQzMiBuVmFsOw0KKyAgICBGWF9EV09SRCBuVG1wOw0KKyAgICBGWF9CT09MIFNCSFVGRjsNCisgICAgRlhfRFdPUkQgU0JOVU1TWU1TOw0KKyAgICBGWF9CWVRFIFNCU1lNQ09ERUxFTjsNCisgICAgRlhfRFdPUkQgSURJOw0KKyAgICBGWF9JTlQzMiBSRFhJLCBSRFlJOw0KKyAgICBDSkJpZzJfSW1hZ2UgKipTQlNZTVM7DQorICAgIENKQmlnMl9IdWZmbWFuVGFibGUgKlNCSFVGRkZTLCAqU0JIVUZGRFMsICpTQkhVRkZEVCwgKlNCSFVGRlJEVywgKlNCSFVGRlJESCwgKlNCSFVGRlJEWCwgKlNCSFVGRlJEWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAqU0JIVUZGUlNJWkU7DQorICAgIENKQmlnMl9HUlJEUHJvYyAqcEdSUkQ7DQorICAgIENKQmlnMl9HUkRQcm9jICpwR1JEOw0KKyAgICBDSkJpZzJfQXJpdGhJbnREZWNvZGVyICpJQURILCAqSUFEVywgKklBQUksICpJQVJEWCwgKklBUkRZLCAqSUFFWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqSUFEVCwgKklBRlMsICpJQURTLCAqSUFJVCwgKklBUkksICpJQVJEVywgKklBUkRIOw0KKyAgICBDSkJpZzJfQXJpdGhJYWlkRGVjb2RlciAqSUFJRDsNCisgICAgQ0pCaWcyX1N5bWJvbERpY3QgKnBEaWN0Ow0KKyAgICBKQklHMl9BTExPQyhJQURILCBDSkJpZzJfQXJpdGhJbnREZWNvZGVyKCkpOw0KKyAgICBKQklHMl9BTExPQyhJQURXLCBDSkJpZzJfQXJpdGhJbnREZWNvZGVyKCkpOw0KKyAgICBKQklHMl9BTExPQyhJQUFJLCBDSkJpZzJfQXJpdGhJbnREZWNvZGVyKCkpOw0KKyAgICBKQklHMl9BTExPQyhJQVJEWCwgQ0pCaWcyX0FyaXRoSW50RGVjb2RlcigpKTsNCisgICAgSkJJRzJfQUxMT0MoSUFSRFksIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgIEpCSUcyX0FMTE9DKElBRVgsIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgIEpCSUcyX0FMTE9DKElBRFQsIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgIEpCSUcyX0FMTE9DKElBRlMsIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgIEpCSUcyX0FMTE9DKElBRFMsIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgIEpCSUcyX0FMTE9DKElBSVQsIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgIEpCSUcyX0FMTE9DKElBUkksIENKQmlnMl9Bcml0aEludERlY29kZXIoKSk7DQorICAgIEpCSUcyX0FMTE9DKElBUkRXLCBDSkJpZzJfQXJpdGhJbnREZWNvZGVyKCkpOw0KKyAgICBKQklHMl9BTExPQyhJQVJESCwgQ0pCaWcyX0FyaXRoSW50RGVjb2RlcigpKTsNCisgICAgblRtcCA9IDA7DQorICAgIHdoaWxlKChGWF9EV09SRCkoMSA8PCBuVG1wKSA8IChTRE5VTUlOU1lNUyArIFNETlVNTkVXU1lNUykpIHsNCisgICAgICAgIG5UbXAgKys7DQorICAgIH0NCisgICAgSkJJRzJfQUxMT0MoSUFJRCwgQ0pCaWcyX0FyaXRoSWFpZERlY29kZXIoKEZYX0JZVEUpblRtcCkpOw0KKyAgICBTRE5FV1NZTVMgPSAoQ0pCaWcyX0ltYWdlKiopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKFNETlVNTkVXU1lNUywgc2l6ZW9mKENKQmlnMl9JbWFnZSopKTsNCisgICAgRlhTWVNfbWVtc2V0MzIoU0RORVdTWU1TLCAwICwgU0ROVU1ORVdTWU1TICogc2l6ZW9mKENKQmlnMl9JbWFnZSopKTsNCisgICAgSENIRUlHSFQgPSAwOw0KKyAgICBOU1lNU0RFQ09ERUQgPSAwOw0KKyAgICB3aGlsZShOU1lNU0RFQ09ERUQgPCBTRE5VTU5FV1NZTVMpIHsNCisgICAgICAgIEJTID0gTlVMTDsNCisgICAgICAgIGlmKElBREgtPmRlY29kZShwQXJpdGhEZWNvZGVyLCAmSENESCkgPT0gLTEpIHsNCisgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBkZWNvZGluZyBwcm9jZWR1cmUgKGFyaXRoKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgSENIRUlHSFQgPSBIQ0hFSUdIVCArIEhDREg7DQorICAgICAgICBpZiAoKGludClIQ0hFSUdIVCA8IDAgfHwgKGludClIQ0hFSUdIVCA+IEpCSUcyX01BWF9JTUFHRV9TSVpFKSB7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChhcml0aCk6IGludmFsaWQgSENIRUlHSFQgdmFsdWUuIik7DQorICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICB9DQorICAgICAgICBTWU1XSURUSCA9IDA7DQorICAgICAgICBUT1RXSURUSCA9IDA7DQorICAgICAgICBIQ0ZJUlNUU1lNID0gTlNZTVNERUNPREVEOw0KKyAgICAgICAgZm9yKDs7KSB7DQorICAgICAgICAgICAgblZhbCA9IElBRFctPmRlY29kZShwQXJpdGhEZWNvZGVyLCAmRFcpOw0KKyAgICAgICAgICAgIGlmKG5WYWwgPT0gSkJJRzJfT09CKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZihuVmFsICE9IDApIHsNCisgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChhcml0aCk6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYgKE5TWU1TREVDT0RFRCA+PSBTRE5VTU5FV1NZTVMpIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IGRlY29kaW5nIHByb2NlZHVyZSAoYXJpdGgpOiBOU1lNU0RFQ09ERUQgPj0gU0ROVU1ORVdTWU1TLiIpOw0KKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgU1lNV0lEVEggPSBTWU1XSURUSCArIERXOw0KKyAgICAgICAgICAgICAgICBpZiAoKGludClTWU1XSURUSCA8IDAgfHwgKGludClTWU1XSURUSCA+IEpCSUcyX01BWF9JTUFHRV9TSVpFKSB7DQorICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBkZWNvZGluZyBwcm9jZWR1cmUgKGFyaXRoKTogaW52YWxpZCBTWU1XSURUSCB2YWx1ZS4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEhDSEVJR0hUID09IDAgfHwgU1lNV0lEVEggPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgVE9UV0lEVEggPSBUT1RXSURUSCArIFNZTVdJRFRIOw0KKyAgICAgICAgICAgICAgICAgICAgU0RORVdTWU1TW05TWU1TREVDT0RFRF0gPSBOVUxMOw0KKyAgICAgICAgICAgICAgICAgICAgTlNZTVNERUNPREVEID0gTlNZTVNERUNPREVEICsgMTsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIFRPVFdJRFRIID0gVE9UV0lEVEggKyBTWU1XSURUSDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoU0RSRUZBR0cgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhwR1JELCBDSkJpZzJfR1JEUHJvYygpKTsNCisgICAgICAgICAgICAgICAgcEdSRC0+TU1SID0gMDsNCisgICAgICAgICAgICAgICAgcEdSRC0+R0JXID0gU1lNV0lEVEg7DQorICAgICAgICAgICAgICAgIHBHUkQtPkdCSCA9IEhDSEVJR0hUOw0KKyAgICAgICAgICAgICAgICBwR1JELT5HQlRFTVBMQVRFID0gU0RURU1QTEFURTsNCisgICAgICAgICAgICAgICAgcEdSRC0+VFBHRE9OID0gMDsNCisgICAgICAgICAgICAgICAgcEdSRC0+VVNFU0tJUCA9IDA7DQorICAgICAgICAgICAgICAgIHBHUkQtPkdCQVRbMF0gPSBTREFUWzBdOw0KKyAgICAgICAgICAgICAgICBwR1JELT5HQkFUWzFdID0gU0RBVFsxXTsNCisgICAgICAgICAgICAgICAgcEdSRC0+R0JBVFsyXSA9IFNEQVRbMl07DQorICAgICAgICAgICAgICAgIHBHUkQtPkdCQVRbM10gPSBTREFUWzNdOw0KKyAgICAgICAgICAgICAgICBwR1JELT5HQkFUWzRdID0gU0RBVFs0XTsNCisgICAgICAgICAgICAgICAgcEdSRC0+R0JBVFs1XSA9IFNEQVRbNV07DQorICAgICAgICAgICAgICAgIHBHUkQtPkdCQVRbNl0gPSBTREFUWzZdOw0KKyAgICAgICAgICAgICAgICBwR1JELT5HQkFUWzddID0gU0RBVFs3XTsNCisgICAgICAgICAgICAgICAgQlMgPSBwR1JELT5kZWNvZGVfQXJpdGgocEFyaXRoRGVjb2RlciwgZ2JDb250ZXh0KTsNCisgICAgICAgICAgICAgICAgaWYoQlMgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBHUkQ7DQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBkZWxldGUgcEdSRDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZihJQUFJLT5kZWNvZGUocEFyaXRoRGVjb2RlciwgKGludCopJlJFRkFHR05JTlNUKSA9PSAtMSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChhcml0aCk6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmKFJFRkFHR05JTlNUID4gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgQ0pCaWcyX1RSRFByb2MgKnBEZWNvZGVyOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MocERlY29kZXIsIENKQmlnMl9UUkRQcm9jKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCSFVGRiA9IFNESFVGRjsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQlJFRklORSA9IDE7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JXID0gU1lNV0lEVEg7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JIID0gSENIRUlHSFQ7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JOVU1JTlNUQU5DRVMgPSBSRUZBR0dOSU5TVDsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQlNUUklQUyA9IDE7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JOVU1TWU1TID0gU0ROVU1JTlNZTVMgKyBOU1lNU0RFQ09ERUQ7DQorICAgICAgICAgICAgICAgICAgICBTQk5VTVNZTVMgPSBwRGVjb2Rlci0+U0JOVU1TWU1TOw0KKyAgICAgICAgICAgICAgICAgICAgblRtcCA9IDA7DQorICAgICAgICAgICAgICAgICAgICB3aGlsZSgoRlhfRFdPUkQpKDEgPDwgblRtcCkgPCBTQk5VTVNZTVMpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuVG1wICsrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgU0JTWU1DT0RFTEVOID0gKEZYX0JZVEUpblRtcDsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQlNZTUNPREVMRU4gPSBTQlNZTUNPREVMRU47DQorICAgICAgICAgICAgICAgICAgICBTQlNZTVMgPSAoQ0pCaWcyX0ltYWdlKiopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKFNCTlVNU1lNUywgc2l6ZW9mKENKQmlnMl9JbWFnZSopKTsNCisgICAgICAgICAgICAgICAgICAgIEpCSUcyX21lbWNweShTQlNZTVMsIFNESU5TWU1TLCBTRE5VTUlOU1lNUyAqIHNpemVvZihDSkJpZzJfSW1hZ2UqKSk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9tZW1jcHkoU0JTWU1TICsgU0ROVU1JTlNZTVMsIFNETkVXU1lNUywgTlNZTVNERUNPREVEICogc2l6ZW9mKENKQmlnMl9JbWFnZSopKTsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQlNZTVMgPSBTQlNZTVM7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JERUZQSVhFTCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JDT01CT1AgPSBKQklHMl9DT01QT1NFX09SOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlRSQU5TUE9TRUQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlJFRkNPUk5FUiA9IEpCSUcyX0NPUk5FUl9UT1BMRUZUOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCRFNPRkZTRVQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MoU0JIVUZGRlMsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0I2LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CNikgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjYpKTsNCisgICAgICAgICAgICAgICAgICAgIEpCSUcyX0FMTE9DKFNCSFVGRkRTLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9COCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjgpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0I4KSk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhTQkhVRkZEVCwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjExLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTEpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxMSkpOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MoU0JIVUZGUkRXLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0IxNSkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjE1KSk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhTQkhVRkZSREgsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0IxNSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjE1KSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMTUpKTsNCisgICAgICAgICAgICAgICAgICAgIEpCSUcyX0FMTE9DKFNCSFVGRlJEWCwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjE1LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTUpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxNSkpOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MoU0JIVUZGUkRZLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0IxNSkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjE1KSk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhTQkhVRkZSU0laRSwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0IxKSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMSkpOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCSFVGRkZTID0gU0JIVUZGRlM7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JIVUZGRFMgPSBTQkhVRkZEUzsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQkhVRkZEVCA9IFNCSFVGRkRUOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCSFVGRlJEVyA9IFNCSFVGRlJEVzsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQkhVRkZSREggPSBTQkhVRkZSREg7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JIVUZGUkRYID0gU0JIVUZGUkRYOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCSFVGRlJEWSA9IFNCSFVGRlJEWTsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQkhVRkZSU0laRSA9IFNCSFVGRlJTSVpFOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCUlRFTVBMQVRFID0gU0RSVEVNUExBVEU7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JSQVRbMF0gPSBTRFJBVFswXTsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQlJBVFsxXSA9IFNEUkFUWzFdOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCUkFUWzJdID0gU0RSQVRbMl07DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JSQVRbM10gPSBTRFJBVFszXTsNCisgICAgICAgICAgICAgICAgICAgIEpCaWcySW50RGVjb2RlclN0YXRlIGlkczsNCisgICAgICAgICAgICAgICAgICAgIGlkcy5JQURUID0gSUFEVDsNCisgICAgICAgICAgICAgICAgICAgIGlkcy5JQUZTID0gSUFGUzsNCisgICAgICAgICAgICAgICAgICAgIGlkcy5JQURTID0gSUFEUzsNCisgICAgICAgICAgICAgICAgICAgIGlkcy5JQUlUID0gSUFJVDsNCisgICAgICAgICAgICAgICAgICAgIGlkcy5JQVJJID0gSUFSSTsNCisgICAgICAgICAgICAgICAgICAgIGlkcy5JQVJEVyA9IElBUkRXOw0KKyAgICAgICAgICAgICAgICAgICAgaWRzLklBUkRIID0gSUFSREg7DQorICAgICAgICAgICAgICAgICAgICBpZHMuSUFSRFggPSBJQVJEWDsNCisgICAgICAgICAgICAgICAgICAgIGlkcy5JQVJEWSA9IElBUkRZOw0KKyAgICAgICAgICAgICAgICAgICAgaWRzLklBSUQgPSBJQUlEOw0KKyAgICAgICAgICAgICAgICAgICAgQlMgPSBwRGVjb2Rlci0+ZGVjb2RlX0FyaXRoKHBBcml0aERlY29kZXIsIGdyQ29udGV4dCwgJmlkcyk7DQorICAgICAgICAgICAgICAgICAgICBpZihCUyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNUyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRkZTOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBTQkhVRkZEUzsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGRFQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJEVzsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGUkRIOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBTQkhVRkZSRFg7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJEWTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGUlNJWkU7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBEZWNvZGVyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNUyk7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGRlM7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGRFM7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGRFQ7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGUkRXOw0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJESDsNCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBTQkhVRkZSRFg7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGUkRZOw0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJTSVpFOw0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBEZWNvZGVyOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYoUkVGQUdHTklOU1QgPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgU0JIVUZGID0gU0RIVUZGOw0KKyAgICAgICAgICAgICAgICAgICAgU0JOVU1TWU1TID0gU0ROVU1JTlNZTVMgKyBOU1lNU0RFQ09ERUQ7DQorICAgICAgICAgICAgICAgICAgICBpZihJQUlELT5kZWNvZGUocEFyaXRoRGVjb2RlciwgKGludCopJklESSkgPT0gLTEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBkZWNvZGluZyBwcm9jZWR1cmUgKGFyaXRoKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYoKElBUkRYLT5kZWNvZGUocEFyaXRoRGVjb2RlciwgJlJEWEkpID09IC0xKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoSUFSRFktPmRlY29kZShwQXJpdGhEZWNvZGVyLCAmUkRZSSkgPT0gLTEpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChhcml0aCk6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChJREkgPj0gU0JOVU1TWU1TKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChhcml0aCk6Ig0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiByZWZpbmVtZW50IHJlZmVyZW5jZXMgdW5rbm93biBzeW1ib2wgJWQiLCBJREkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgU0JTWU1TID0gKENKQmlnMl9JbWFnZSoqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihTQk5VTVNZTVMsIHNpemVvZihDSkJpZzJfSW1hZ2UqKSk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9tZW1jcHkoU0JTWU1TLCBTRElOU1lNUywgU0ROVU1JTlNZTVMgKiBzaXplb2YoQ0pCaWcyX0ltYWdlKikpOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfbWVtY3B5KFNCU1lNUyArIFNETlVNSU5TWU1TLCBTRE5FV1NZTVMsIE5TWU1TREVDT0RFRCAqIHNpemVvZihDSkJpZzJfSW1hZ2UqKSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoIVNCU1lNU1tJREldKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNUyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhwR1JSRCwgQ0pCaWcyX0dSUkRQcm9jKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSVyA9IFNZTVdJRFRIOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSSCA9IEhDSEVJR0hUOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSVEVNUExBVEUgPSBTRFJURU1QTEFURTsNCisgICAgICAgICAgICAgICAgICAgIHBHUlJELT5HUlJFRkVSRU5DRSA9IFNCU1lNU1tJREldOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSUkVGRVJFTkNFRFggPSBSRFhJOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSUkVGRVJFTkNFRFkgPSBSRFlJOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPlRQR1JPTiA9IDA7DQorICAgICAgICAgICAgICAgICAgICBwR1JSRC0+R1JBVFswXSA9IFNEUkFUWzBdOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSQVRbMV0gPSBTRFJBVFsxXTsNCisgICAgICAgICAgICAgICAgICAgIHBHUlJELT5HUkFUWzJdID0gU0RSQVRbMl07DQorICAgICAgICAgICAgICAgICAgICBwR1JSRC0+R1JBVFszXSA9IFNEUkFUWzNdOw0KKyAgICAgICAgICAgICAgICAgICAgQlMgPSBwR1JSRC0+ZGVjb2RlKHBBcml0aERlY29kZXIsIGdyQ29udGV4dCk7DQorICAgICAgICAgICAgICAgICAgICBpZihCUyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNUyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBHUlJEOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNUyk7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgcEdSUkQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgU0RORVdTWU1TW05TWU1TREVDT0RFRF0gPSBCUzsNCisgICAgICAgICAgICBCUyA9IE5VTEw7DQorICAgICAgICAgICAgTlNZTVNERUNPREVEID0gTlNZTVNERUNPREVEICsgMTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBFWElOREVYID0gMDsNCisgICAgQ1VSRVhGTEFHID0gMDsNCisgICAgRVhGTEFHUyA9IChGWF9CT09MKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKEZYX0JPT0wpLCAoU0ROVU1JTlNZTVMgKyBTRE5VTU5FV1NZTVMpKTsNCisgICAgd2hpbGUoRVhJTkRFWCA8IFNETlVNSU5TWU1TICsgU0ROVU1ORVdTWU1TKSB7DQorICAgICAgICBpZihJQUVYLT5kZWNvZGUocEFyaXRoRGVjb2RlciwgKGludCopJkVYUlVOTEVOR1RIKSA9PSAtMSkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShFWEZMQUdTKTsNCisgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBkZWNvZGluZyBwcm9jZWR1cmUgKGFyaXRoKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKEVYSU5ERVggKyBFWFJVTkxFTkdUSCA+IFNETlVNSU5TWU1TICsgU0ROVU1ORVdTWU1TKSB7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEVYRkxBR1MpOw0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IGRlY29kaW5nIHByb2NlZHVyZSAoYXJpdGgpOiBJbnZhbGlkIEVYUlVOTEVOR1RIIHZhbHVlLiIpOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoRVhSVU5MRU5HVEggIT0gMCkgew0KKyAgICAgICAgICAgIGZvcihJID0gRVhJTkRFWDsgSSA8IEVYSU5ERVggKyBFWFJVTkxFTkdUSDsgSSsrKSB7DQorICAgICAgICAgICAgICAgIEVYRkxBR1NbSV0gPSBDVVJFWEZMQUc7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgRVhJTkRFWCA9IEVYSU5ERVggKyBFWFJVTkxFTkdUSDsNCisgICAgICAgIENVUkVYRkxBRyA9ICFDVVJFWEZMQUc7DQorICAgIH0NCisgICAgSkJJRzJfQUxMT0MocERpY3QsIENKQmlnMl9TeW1ib2xEaWN0KCkpOw0KKyAgICBwRGljdC0+U0ROVU1FWFNZTVMgPSBTRE5VTUVYU1lNUzsNCisgICAgcERpY3QtPlNERVhTWU1TID0gKENKQmlnMl9JbWFnZSoqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihzaXplb2YoQ0pCaWcyX0ltYWdlKiksIFNETlVNRVhTWU1TKTsNCisgICAgSSA9IEogPSAwOw0KKyAgICBmb3IoSSA9IDA7IEkgPCBTRE5VTUlOU1lNUyArIFNETlVNTkVXU1lNUzsgSSsrKSB7DQorICAgICAgICBpZihFWEZMQUdTW0ldICYmIEogPCBTRE5VTUVYU1lNUykgew0KKyAgICAgICAgICAgIGlmKEkgPCBTRE5VTUlOU1lNUykgew0KKyAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhwRGljdC0+U0RFWFNZTVNbSl0sIENKQmlnMl9JbWFnZSgqU0RJTlNZTVNbSV0pKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwRGljdC0+U0RFWFNZTVNbSl0gPSBTRE5FV1NZTVNbSSAtIFNETlVNSU5TWU1TXTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgSiA9IEogKyAxOw0KKyAgICAgICAgfSBlbHNlIGlmICghRVhGTEFHU1tJXSAmJiBJID49IFNETlVNSU5TWU1TKSB7DQorICAgICAgICAgICAgZGVsZXRlIFNETkVXU1lNU1tJIC0gU0ROVU1JTlNZTVNdOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChKIDwgU0ROVU1FWFNZTVMpIHsNCisgICAgICAgIHBEaWN0LT5TRE5VTUVYU1lNUyA9IEo7DQorICAgIH0NCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEVYRkxBR1MpOw0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoU0RORVdTWU1TKTsNCisgICAgZGVsZXRlIElBREg7DQorICAgIGRlbGV0ZSBJQURXOw0KKyAgICBkZWxldGUgSUFBSTsNCisgICAgZGVsZXRlIElBUkRYOw0KKyAgICBkZWxldGUgSUFSRFk7DQorICAgIGRlbGV0ZSBJQUVYOw0KKyAgICBkZWxldGUgSUFJRDsNCisgICAgZGVsZXRlIElBRFQ7DQorICAgIGRlbGV0ZSBJQUZTOw0KKyAgICBkZWxldGUgSUFEUzsNCisgICAgZGVsZXRlIElBSVQ7DQorICAgIGRlbGV0ZSBJQVJJOw0KKyAgICBkZWxldGUgSUFSRFc7DQorICAgIGRlbGV0ZSBJQVJESDsNCisgICAgcmV0dXJuIHBEaWN0Ow0KK2ZhaWxlZDoNCisgICAgZm9yKEkgPSAwOyBJIDwgTlNZTVNERUNPREVEOyBJKyspIHsNCisgICAgICAgIGlmIChTRE5FV1NZTVNbSV0pIHsNCisgICAgICAgICAgICBkZWxldGUgU0RORVdTWU1TW0ldOw0KKyAgICAgICAgICAgIFNETkVXU1lNU1tJXSA9IE5VTEw7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNETkVXU1lNUyk7DQorICAgIGRlbGV0ZSBJQURIOw0KKyAgICBkZWxldGUgSUFEVzsNCisgICAgZGVsZXRlIElBQUk7DQorICAgIGRlbGV0ZSBJQVJEWDsNCisgICAgZGVsZXRlIElBUkRZOw0KKyAgICBkZWxldGUgSUFFWDsNCisgICAgZGVsZXRlIElBSUQ7DQorICAgIGRlbGV0ZSBJQURUOw0KKyAgICBkZWxldGUgSUFGUzsNCisgICAgZGVsZXRlIElBRFM7DQorICAgIGRlbGV0ZSBJQUlUOw0KKyAgICBkZWxldGUgSUFSSTsNCisgICAgZGVsZXRlIElBUkRXOw0KKyAgICBkZWxldGUgSUFSREg7DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDSkJpZzJfU3ltYm9sRGljdCAqQ0pCaWcyX1NERFByb2M6OmRlY29kZV9IdWZmbWFuKENKQmlnMl9CaXRTdHJlYW0gKnBTdHJlYW0sDQorICAgICAgICBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIEpCaWcyQXJpdGhDdHggKmdyQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBDSkJpZzJfSW1hZ2UgKipTRE5FV1NZTVM7DQorICAgIEZYX0RXT1JEICpTRE5FV1NZTVdJRFRIUzsNCisgICAgRlhfRFdPUkQgSENIRUlHSFQsIE5TWU1TREVDT0RFRDsNCisgICAgRlhfSU5UMzIgSENESDsNCisgICAgRlhfRFdPUkQgU1lNV0lEVEgsIFRPVFdJRFRILCBIQ0ZJUlNUU1lNOw0KKyAgICBGWF9JTlQzMiBEVzsNCisgICAgQ0pCaWcyX0ltYWdlICpCUywgKkJIQzsNCisgICAgRlhfRFdPUkQgSSwgSiwgUkVGQUdHTklOU1Q7DQorICAgIEZYX0JPT0wgKkVYRkxBR1M7DQorICAgIEZYX0RXT1JEIEVYSU5ERVg7DQorICAgIEZYX0JPT0wgQ1VSRVhGTEFHOw0KKyAgICBGWF9EV09SRCBFWFJVTkxFTkdUSDsNCisgICAgRlhfSU5UMzIgblZhbCwgbkJpdHM7DQorICAgIEZYX0RXT1JEIG5UbXA7DQorICAgIEZYX0JPT0wgU0JIVUZGOw0KKyAgICBGWF9EV09SRCBTQk5VTVNZTVM7DQorICAgIEZYX0JZVEUgU0JTWU1DT0RFTEVOOw0KKyAgICBKQmlnMkh1ZmZtYW5Db2RlICpTQlNZTUNPREVTOw0KKyAgICBGWF9EV09SRCBJREk7DQorICAgIEZYX0lOVDMyIFJEWEksIFJEWUk7DQorICAgIEZYX0RXT1JEIEJNU0laRTsNCisgICAgRlhfRFdPUkQgc3RyaWRlOw0KKyAgICBDSkJpZzJfSW1hZ2UgKipTQlNZTVM7DQorICAgIENKQmlnMl9IdWZmbWFuVGFibGUgKlNCSFVGRkZTLCAqU0JIVUZGRFMsICpTQkhVRkZEVCwgKlNCSFVGRlJEVywgKlNCSFVGRlJESCwgKlNCSFVGRlJEWCwgKlNCSFVGRlJEWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAqU0JIVUZGUlNJWkUsICpwVGFibGU7DQorICAgIENKQmlnMl9IdWZmbWFuRGVjb2RlciAqcEh1ZmZtYW5EZWNvZGVyOw0KKyAgICBDSkJpZzJfR1JSRFByb2MgKnBHUlJEOw0KKyAgICBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyOw0KKyAgICBDSkJpZzJfR1JEUHJvYyAqcEdSRDsNCisgICAgQ0pCaWcyX1N5bWJvbERpY3QgKnBEaWN0Ow0KKyAgICBKQklHMl9BTExPQyhwSHVmZm1hbkRlY29kZXIsIENKQmlnMl9IdWZmbWFuRGVjb2RlcihwU3RyZWFtKSk7DQorICAgIFNETkVXU1lNUyA9IChDSkJpZzJfSW1hZ2UqKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoU0ROVU1ORVdTWU1TLCBzaXplb2YoQ0pCaWcyX0ltYWdlKikpOw0KKyAgICBGWFNZU19tZW1zZXQzMihTRE5FV1NZTVMsIDAgLCBTRE5VTU5FV1NZTVMgKiBzaXplb2YoQ0pCaWcyX0ltYWdlKikpOw0KKyAgICBTRE5FV1NZTVdJRFRIUyA9IE5VTEw7DQorICAgIEJIQyA9IE5VTEw7DQorICAgIGlmKFNEUkVGQUdHID09IDApIHsNCisgICAgICAgIFNETkVXU1lNV0lEVEhTID0gKEZYX0RXT1JEICopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKFNETlVNTkVXU1lNUywgc2l6ZW9mKEZYX0RXT1JEKSk7DQorICAgICAgICBGWFNZU19tZW1zZXQzMihTRE5FV1NZTVdJRFRIUywgMCAsIFNETlVNTkVXU1lNUyAqIHNpemVvZihGWF9EV09SRCkpOw0KKyAgICB9DQorICAgIEhDSEVJR0hUID0gMDsNCisgICAgTlNZTVNERUNPREVEID0gMDsNCisgICAgQlMgPSBOVUxMOw0KKyAgICB3aGlsZShOU1lNU0RFQ09ERUQgPCBTRE5VTU5FV1NZTVMpIHsNCisgICAgICAgIGlmKHBIdWZmbWFuRGVjb2Rlci0+ZGVjb2RlQVZhbHVlKFNESFVGRkRILCAmSENESCkgIT0gMCkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IGRlY29kaW5nIHByb2NlZHVyZSAoaHVmZm1hbik6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIEhDSEVJR0hUID0gSENIRUlHSFQgKyBIQ0RIOw0KKyAgICAgICAgaWYgKChpbnQpSENIRUlHSFQgPCAwIHx8IChpbnQpSENIRUlHSFQgPiBKQklHMl9NQVhfSU1BR0VfU0laRSkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IGRlY29kaW5nIHByb2NlZHVyZSAoaHVmZm1hbik6IGludmFsaWQgSENIRUlHSFQgdmFsdWUuIik7DQorICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICB9DQorICAgICAgICBTWU1XSURUSCA9IDA7DQorICAgICAgICBUT1RXSURUSCA9IDA7DQorICAgICAgICBIQ0ZJUlNUU1lNID0gTlNZTVNERUNPREVEOw0KKyAgICAgICAgZm9yKDs7KSB7DQorICAgICAgICAgICAgblZhbCA9IHBIdWZmbWFuRGVjb2Rlci0+ZGVjb2RlQVZhbHVlKFNESFVGRkRXLCAmRFcpOw0KKyAgICAgICAgICAgIGlmKG5WYWwgPT0gSkJJRzJfT09CKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZihuVmFsICE9IDApIHsNCisgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChodWZmbWFuKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAoTlNZTVNERUNPREVEID49IFNETlVNTkVXU1lNUykgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChodWZmbWFuKTogTlNZTVNERUNPREVEID49IFNETlVNTkVXU1lNUy4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIFNZTVdJRFRIID0gU1lNV0lEVEggKyBEVzsNCisgICAgICAgICAgICAgICAgaWYgKChpbnQpU1lNV0lEVEggPCAwIHx8IChpbnQpU1lNV0lEVEggPiBKQklHMl9NQVhfSU1BR0VfU0laRSkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChodWZmbWFuKTogaW52YWxpZCBTWU1XSURUSCB2YWx1ZS4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEhDSEVJR0hUID09IDAgfHwgU1lNV0lEVEggPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgVE9UV0lEVEggPSBUT1RXSURUSCArIFNZTVdJRFRIOw0KKyAgICAgICAgICAgICAgICAgICAgU0RORVdTWU1TW05TWU1TREVDT0RFRF0gPSBOVUxMOw0KKyAgICAgICAgICAgICAgICAgICAgTlNZTVNERUNPREVEID0gTlNZTVNERUNPREVEICsgMTsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIFRPVFdJRFRIID0gVE9UV0lEVEggKyBTWU1XSURUSDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoU0RSRUZBR0cgPT0gMSkgew0KKyAgICAgICAgICAgICAgICBpZihwSHVmZm1hbkRlY29kZXItPmRlY29kZUFWYWx1ZShTREhVRkZBR0dJTlNULCAoaW50KikmUkVGQUdHTklOU1QpICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IGRlY29kaW5nIHByb2NlZHVyZSAoaHVmZm1hbik6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEJTID0gTlVMTDsNCisgICAgICAgICAgICAgICAgaWYoUkVGQUdHTklOU1QgPiAxKSB7DQorICAgICAgICAgICAgICAgICAgICBDSkJpZzJfVFJEUHJvYyAqcERlY29kZXI7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhwRGVjb2RlciwgQ0pCaWcyX1RSRFByb2MoKSk7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JIVUZGID0gU0RIVUZGOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCUkVGSU5FID0gMTsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQlcgPSBTWU1XSURUSDsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQkggPSBIQ0hFSUdIVDsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQk5VTUlOU1RBTkNFUyA9IFJFRkFHR05JTlNUOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCU1RSSVBTID0gMTsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQk5VTVNZTVMgPSBTRE5VTUlOU1lNUyArIE5TWU1TREVDT0RFRDsNCisgICAgICAgICAgICAgICAgICAgIFNCTlVNU1lNUyA9IHBEZWNvZGVyLT5TQk5VTVNZTVM7DQorICAgICAgICAgICAgICAgICAgICBTQlNZTUNPREVTID0gKEpCaWcySHVmZm1hbkNvZGUqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihTQk5VTVNZTVMsIHNpemVvZihKQmlnMkh1ZmZtYW5Db2RlKSk7DQorICAgICAgICAgICAgICAgICAgICBuVG1wID0gMTsNCisgICAgICAgICAgICAgICAgICAgIHdoaWxlKChGWF9EV09SRCkoMSA8PCBuVG1wKSA8IFNCTlVNU1lNUykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5UbXAgKys7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBmb3IoSSA9IDA7IEkgPCBTQk5VTVNZTVM7IEkrKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNCU1lNQ09ERVNbSV0uY29kZWxlbiA9IG5UbXA7DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JTWU1DT0RFU1tJXS5jb2RlID0gSTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQlNZTUNPREVTID0gU0JTWU1DT0RFUzsNCisgICAgICAgICAgICAgICAgICAgIFNCU1lNUyA9IChDSkJpZzJfSW1hZ2UqKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoU0JOVU1TWU1TLCBzaXplb2YoQ0pCaWcyX0ltYWdlKikpOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfbWVtY3B5KFNCU1lNUywgU0RJTlNZTVMsIFNETlVNSU5TWU1TICogc2l6ZW9mKENKQmlnMl9JbWFnZSopKTsNCisgICAgICAgICAgICAgICAgICAgIEpCSUcyX21lbWNweShTQlNZTVMgKyBTRE5VTUlOU1lNUywgU0RORVdTWU1TLCBOU1lNU0RFQ09ERUQgKiBzaXplb2YoQ0pCaWcyX0ltYWdlKikpOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCU1lNUyA9IFNCU1lNUzsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQkRFRlBJWEVMID0gMDsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQkNPTUJPUCA9IEpCSUcyX0NPTVBPU0VfT1I7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+VFJBTlNQT1NFRCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+UkVGQ09STkVSID0gSkJJRzJfQ09STkVSX1RPUExFRlQ7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JEU09GRlNFVCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhTQkhVRkZGUywgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjYsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0I2KSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CNikpOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MoU0JIVUZGRFMsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0I4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9COCkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjgpKTsNCisgICAgICAgICAgICAgICAgICAgIEpCSUcyX0FMTE9DKFNCSFVGRkRULCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0IxMSkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjExKSk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhTQkhVRkZSRFcsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0IxNSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjE1KSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMTUpKTsNCisgICAgICAgICAgICAgICAgICAgIEpCSUcyX0FMTE9DKFNCSFVGRlJESCwgQ0pCaWcyX0h1ZmZtYW5UYWJsZShIdWZmbWFuVGFibGVfQjE1LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMTUpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxNSkpOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MoU0JIVUZGUkRYLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMTUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoSHVmZm1hblRhYmxlX0IxNSkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjE1KSk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhTQkhVRkZSRFksIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0IxNSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjE1KSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMTUpKTsNCisgICAgICAgICAgICAgICAgICAgIEpCSUcyX0FMTE9DKFNCSFVGRlJTSVpFLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjEpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxKSk7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JIVUZGRlMgPSBTQkhVRkZGUzsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQkhVRkZEUyA9IFNCSFVGRkRTOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCSFVGRkRUID0gU0JIVUZGRFQ7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JIVUZGUkRXID0gU0JIVUZGUkRXOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCSFVGRlJESCA9IFNCSFVGRlJESDsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQkhVRkZSRFggPSBTQkhVRkZSRFg7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JIVUZGUkRZID0gU0JIVUZGUkRZOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCSFVGRlJTSVpFID0gU0JIVUZGUlNJWkU7DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JSVEVNUExBVEUgPSBTRFJURU1QTEFURTsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQlJBVFswXSA9IFNEUkFUWzBdOw0KKyAgICAgICAgICAgICAgICAgICAgcERlY29kZXItPlNCUkFUWzFdID0gU0RSQVRbMV07DQorICAgICAgICAgICAgICAgICAgICBwRGVjb2Rlci0+U0JSQVRbMl0gPSBTRFJBVFsyXTsNCisgICAgICAgICAgICAgICAgICAgIHBEZWNvZGVyLT5TQlJBVFszXSA9IFNEUkFUWzNdOw0KKyAgICAgICAgICAgICAgICAgICAgQlMgPSBwRGVjb2Rlci0+ZGVjb2RlX0h1ZmZtYW4ocFN0cmVhbSwgZ3JDb250ZXh0KTsNCisgICAgICAgICAgICAgICAgICAgIGlmKEJTID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoU0JTWU1DT0RFUyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNUyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRkZTOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBTQkhVRkZEUzsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGRFQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJEVzsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGUkRIOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBTQkhVRkZSRFg7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJEWTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGUlNJWkU7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBEZWNvZGVyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNQ09ERVMpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNUyk7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGRlM7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGRFM7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGRFQ7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGUkRXOw0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJESDsNCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBTQkhVRkZSRFg7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGUkRZOw0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJTSVpFOw0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBEZWNvZGVyOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYoUkVGQUdHTklOU1QgPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgU0JIVUZGID0gU0RIVUZGOw0KKyAgICAgICAgICAgICAgICAgICAgU0JOVU1TWU1TID0gU0ROVU1JTlNZTVMgKyBTRE5VTU5FV1NZTVM7DQorICAgICAgICAgICAgICAgICAgICBuVG1wID0gMTsNCisgICAgICAgICAgICAgICAgICAgIHdoaWxlKChGWF9EV09SRCkoMSA8PCBuVG1wKSA8IFNCTlVNU1lNUykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5UbXAgKys7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBTQlNZTUNPREVMRU4gPSAoRlhfQllURSluVG1wOw0KKyAgICAgICAgICAgICAgICAgICAgU0JTWU1DT0RFUyA9IChKQmlnMkh1ZmZtYW5Db2RlKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoU0JOVU1TWU1TLCBzaXplb2YoSkJpZzJIdWZmbWFuQ29kZSkpOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yKEkgPSAwOyBJIDwgU0JOVU1TWU1TOyBJKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBTQlNZTUNPREVTW0ldLmNvZGVsZW4gPSBTQlNZTUNPREVMRU47DQorICAgICAgICAgICAgICAgICAgICAgICAgU0JTWU1DT0RFU1tJXS5jb2RlID0gSTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG5WYWwgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgbkJpdHMgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yKDs7KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYocFN0cmVhbS0+cmVhZDFCaXQoJm5UbXApICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNCU1lNQ09ERVMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBkZWNvZGluZyBwcm9jZWR1cmUgKGh1ZmZtYW4pOiB0b28gc2hvcnQuIik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBuVmFsID0gKG5WYWwgPDwgMSkgfCBuVG1wOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcihJREkgPSAwOyBJREkgPCBTQk5VTVNZTVM7IElESSsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKChuVmFsID09IFNCU1lNQ09ERVNbSURJXS5jb2RlKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChuQml0cyA9PSBTQlNZTUNPREVTW0lESV0uY29kZWxlbikpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKElESSA8IFNCTlVNU1lNUykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoU0JTWU1DT0RFUyk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhTQkhVRkZSRFgsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0IxNSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjE1KSAvIHNpemVvZihKQmlnMlRhYmxlTGluZSksIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMTUpKTsNCisgICAgICAgICAgICAgICAgICAgIEpCSUcyX0FMTE9DKFNCSFVGRlJTSVpFLCBDSkJpZzJfSHVmZm1hblRhYmxlKEh1ZmZtYW5UYWJsZV9CMSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihIdWZmbWFuVGFibGVfQjEpIC8gc2l6ZW9mKEpCaWcyVGFibGVMaW5lKSwgSHVmZm1hblRhYmxlX0hUT09CX0IxKSk7DQorICAgICAgICAgICAgICAgICAgICBpZigocEh1ZmZtYW5EZWNvZGVyLT5kZWNvZGVBVmFsdWUoU0JIVUZGUkRYLCAmUkRYSSkgIT0gMCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHBIdWZmbWFuRGVjb2Rlci0+ZGVjb2RlQVZhbHVlKFNCSFVGRlJEWCwgJlJEWUkpICE9IDApDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwSHVmZm1hbkRlY29kZXItPmRlY29kZUFWYWx1ZShTQkhVRkZSU0laRSwgJm5WYWwpICE9IDApKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJEWDsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgU0JIVUZGUlNJWkU7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChodWZmbWFuKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFNCSFVGRlJEWDsNCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBTQkhVRkZSU0laRTsNCisgICAgICAgICAgICAgICAgICAgIHBTdHJlYW0tPmFsaWduQnl0ZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgblRtcCA9IHBTdHJlYW0tPmdldE9mZnNldCgpOw0KKyAgICAgICAgICAgICAgICAgICAgU0JTWU1TID0gKENKQmlnMl9JbWFnZSoqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihTQk5VTVNZTVMsIHNpemVvZihDSkJpZzJfSW1hZ2UqKSk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9tZW1jcHkoU0JTWU1TLCBTRElOU1lNUywgU0ROVU1JTlNZTVMgKiBzaXplb2YoQ0pCaWcyX0ltYWdlKikpOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfbWVtY3B5KFNCU1lNUyArIFNETlVNSU5TWU1TLCBTRE5FV1NZTVMsIE5TWU1TREVDT0RFRCAqIHNpemVvZihDSkJpZzJfSW1hZ2UqKSk7DQorICAgICAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhwR1JSRCwgQ0pCaWcyX0dSUkRQcm9jKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSVyA9IFNZTVdJRFRIOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSSCA9IEhDSEVJR0hUOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSVEVNUExBVEUgPSBTRFJURU1QTEFURTsNCisgICAgICAgICAgICAgICAgICAgIHBHUlJELT5HUlJFRkVSRU5DRSA9IFNCU1lNU1tJREldOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSUkVGRVJFTkNFRFggPSBSRFhJOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSUkVGRVJFTkNFRFkgPSBSRFlJOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPlRQR1JPTiA9IDA7DQorICAgICAgICAgICAgICAgICAgICBwR1JSRC0+R1JBVFswXSA9IFNEUkFUWzBdOw0KKyAgICAgICAgICAgICAgICAgICAgcEdSUkQtPkdSQVRbMV0gPSBTRFJBVFsxXTsNCisgICAgICAgICAgICAgICAgICAgIHBHUlJELT5HUkFUWzJdID0gU0RSQVRbMl07DQorICAgICAgICAgICAgICAgICAgICBwR1JSRC0+R1JBVFszXSA9IFNEUkFUWzNdOw0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MocEFyaXRoRGVjb2RlciwgQ0pCaWcyX0FyaXRoRGVjb2RlcihwU3RyZWFtKSk7DQorICAgICAgICAgICAgICAgICAgICBCUyA9IHBHUlJELT5kZWNvZGUocEFyaXRoRGVjb2RlciwgZ3JDb250ZXh0KTsNCisgICAgICAgICAgICAgICAgICAgIGlmKEJTID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoU0JTWU1TKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcEdSUkQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBBcml0aERlY29kZXI7DQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBwU3RyZWFtLT5hbGlnbkJ5dGUoKTsNCisgICAgICAgICAgICAgICAgICAgIHBTdHJlYW0tPm9mZnNldCgyKTsNCisgICAgICAgICAgICAgICAgICAgIGlmKChGWF9EV09SRCluVmFsICE9IChwU3RyZWFtLT5nZXRPZmZzZXQoKSAtIG5UbXApKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIEJTOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShTQlNZTVMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwR1JSRDsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcEFyaXRoRGVjb2RlcjsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJzeW1ib2wgZGljdGlvbmFyeSBkZWNvZGluZyBwcm9jZWR1cmUgKGh1ZmZtYW4pOiINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBwcm9jZXNzZWQgYnkgZ2VuZXJpYyByZWZpbmVtZW50IHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmUgZG9lc24ndCBlcXVhbCBTQkhVRkZSU0laRS4iKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShTQlNZTVMpOw0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBHUlJEOw0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBBcml0aERlY29kZXI7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgU0RORVdTWU1TW05TWU1TREVDT0RFRF0gPSBCUzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYoU0RSRUZBR0cgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBTRE5FV1NZTVdJRFRIU1tOU1lNU0RFQ09ERURdID0gU1lNV0lEVEg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIE5TWU1TREVDT0RFRCA9IE5TWU1TREVDT0RFRCArIDE7DQorICAgICAgICB9DQorICAgICAgICBpZihTRFJFRkFHRyA9PSAwKSB7DQorICAgICAgICAgICAgaWYocEh1ZmZtYW5EZWNvZGVyLT5kZWNvZGVBVmFsdWUoU0RIVUZGQk1TSVpFLCAoRlhfSU5UMzIqKSZCTVNJWkUpICE9IDApIHsNCisgICAgICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigic3ltYm9sIGRpY3Rpb25hcnkgZGVjb2RpbmcgcHJvY2VkdXJlIChodWZmbWFuKTogdG9vIHNob3J0LiIpOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFN0cmVhbS0+YWxpZ25CeXRlKCk7DQorICAgICAgICAgICAgaWYoQk1TSVpFID09IDApIHsNCisgICAgICAgICAgICAgICAgc3RyaWRlID0gKFRPVFdJRFRIICsgNykgPj4gMzsNCisgICAgICAgICAgICAgICAgaWYocFN0cmVhbS0+Z2V0Qnl0ZUxlZnQoKSA+PSBzdHJpZGUgKiBIQ0hFSUdIVCkgew0KKyAgICAgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MoQkhDLCBDSkJpZzJfSW1hZ2UoVE9UV0lEVEgsIEhDSEVJR0hUKSk7DQorICAgICAgICAgICAgICAgICAgICBmb3IoSSA9IDA7IEkgPCBIQ0hFSUdIVDsgSSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEpCSUcyX21lbWNweShCSEMtPm1fcERhdGEgKyBJICogQkhDLT5tX25TdHJpZGUsIHBTdHJlYW0tPmdldFBvaW50ZXIoKSwgc3RyaWRlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBwU3RyZWFtLT5vZmZzZXQoc3RyaWRlKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IGRlY29kaW5nIHByb2NlZHVyZSAoaHVmZm1hbik6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgSkJJRzJfQUxMT0MocEdSRCwgQ0pCaWcyX0dSRFByb2MoKSk7DQorICAgICAgICAgICAgICAgIHBHUkQtPk1NUiA9IDE7DQorICAgICAgICAgICAgICAgIHBHUkQtPkdCVyA9IFRPVFdJRFRIOw0KKyAgICAgICAgICAgICAgICBwR1JELT5HQkggPSBIQ0hFSUdIVDsNCisgICAgICAgICAgICAgICAgRlhDT0RFQ19TVEFUVVMgc3RhdHVzID0gcEdSRC0+U3RhcnRfZGVjb2RlX01NUigmQkhDLCBwU3RyZWFtKTsNCisgICAgICAgICAgICAgICAgd2hpbGUoc3RhdHVzID09IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUUpIHsNCisgICAgICAgICAgICAgICAgICAgIHBHUkQtPkNvbnRpbnVlX2RlY29kZShwUGF1c2UpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBwR1JEOw0KKyAgICAgICAgICAgICAgICBwU3RyZWFtLT5hbGlnbkJ5dGUoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgblRtcCA9IDA7DQorICAgICAgICAgICAgaWYgKCFCSEMpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZvcihJID0gSENGSVJTVFNZTTsgSSA8IE5TWU1TREVDT0RFRDsgSSsrKSB7DQorICAgICAgICAgICAgICAgIFNETkVXU1lNU1tJXSA9IEJIQy0+c3ViSW1hZ2UoblRtcCwgMCwgU0RORVdTWU1XSURUSFNbSV0sIEhDSEVJR0hUKTsNCisgICAgICAgICAgICAgICAgblRtcCArPSBTRE5FV1NZTVdJRFRIU1tJXTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVsZXRlIEJIQzsNCisgICAgICAgICAgICBCSEMgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEVYSU5ERVggPSAwOw0KKyAgICBDVVJFWEZMQUcgPSAwOw0KKyAgICBKQklHMl9BTExPQyhwVGFibGUsIENKQmlnMl9IdWZmbWFuVGFibGUoSHVmZm1hblRhYmxlX0IxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEh1ZmZtYW5UYWJsZV9CMSkgLyBzaXplb2YoSkJpZzJUYWJsZUxpbmUpLCBIdWZmbWFuVGFibGVfSFRPT0JfQjEpKTsNCisgICAgRVhGTEFHUyA9IChGWF9CT09MKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKEZYX0JPT0wpLCAoU0ROVU1JTlNZTVMgKyBTRE5VTU5FV1NZTVMpKTsNCisgICAgd2hpbGUoRVhJTkRFWCA8IFNETlVNSU5TWU1TICsgU0ROVU1ORVdTWU1TKSB7DQorICAgICAgICBpZihwSHVmZm1hbkRlY29kZXItPmRlY29kZUFWYWx1ZShwVGFibGUsIChpbnQqKSZFWFJVTkxFTkdUSCkgIT0gMCkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwVGFibGU7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEVYRkxBR1MpOw0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IGRlY29kaW5nIHByb2NlZHVyZSAoaHVmZm1hbik6IHRvbyBzaG9ydC4iKTsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChFWElOREVYICsgRVhSVU5MRU5HVEggPiBTRE5VTUlOU1lNUyArIFNETlVNTkVXU1lNUykgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwVGFibGU7DQorICAgICAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEVYRkxBR1MpOw0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRXJyb3IoInN5bWJvbCBkaWN0aW9uYXJ5IGRlY29kaW5nIHByb2NlZHVyZSAoYXJpdGgpOiBJbnZhbGlkIEVYUlVOTEVOR1RIIHZhbHVlLiIpOw0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoRVhSVU5MRU5HVEggIT0gMCkgew0KKyAgICAgICAgICAgIGZvcihJID0gRVhJTkRFWDsgSSA8IEVYSU5ERVggKyBFWFJVTkxFTkdUSDsgSSsrKSB7DQorICAgICAgICAgICAgICAgIEVYRkxBR1NbSV0gPSBDVVJFWEZMQUc7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgRVhJTkRFWCA9IEVYSU5ERVggKyBFWFJVTkxFTkdUSDsNCisgICAgICAgIENVUkVYRkxBRyA9ICFDVVJFWEZMQUc7DQorICAgIH0NCisgICAgZGVsZXRlIHBUYWJsZTsNCisgICAgSkJJRzJfQUxMT0MocERpY3QsIENKQmlnMl9TeW1ib2xEaWN0KCkpOw0KKyAgICBwRGljdC0+U0ROVU1FWFNZTVMgPSBTRE5VTUVYU1lNUzsNCisgICAgcERpY3QtPlNERVhTWU1TID0gKENKQmlnMl9JbWFnZSoqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihzaXplb2YoQ0pCaWcyX0ltYWdlKiksIFNETlVNRVhTWU1TKTsNCisgICAgSSA9IEogPSAwOw0KKyAgICBmb3IoSSA9IDA7IEkgPCBTRE5VTUlOU1lNUyArIFNETlVNTkVXU1lNUzsgSSsrKSB7DQorICAgICAgICBpZihFWEZMQUdTW0ldICYmIEogPCBTRE5VTUVYU1lNUykgew0KKyAgICAgICAgICAgIGlmKEkgPCBTRE5VTUlOU1lNUykgew0KKyAgICAgICAgICAgICAgICBKQklHMl9BTExPQyhwRGljdC0+U0RFWFNZTVNbSl0sIENKQmlnMl9JbWFnZSgqU0RJTlNZTVNbSV0pKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwRGljdC0+U0RFWFNZTVNbSl0gPSBTRE5FV1NZTVNbSSAtIFNETlVNSU5TWU1TXTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgSiA9IEogKyAxOw0KKyAgICAgICAgfSBlbHNlIGlmICghRVhGTEFHU1tJXSAmJiBJID49IFNETlVNSU5TWU1TKSB7DQorICAgICAgICAgICAgZGVsZXRlIFNETkVXU1lNU1tJIC0gU0ROVU1JTlNZTVNdOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChKIDwgU0ROVU1FWFNZTVMpIHsNCisgICAgICAgIHBEaWN0LT5TRE5VTUVYU1lNUyA9IEo7DQorICAgIH0NCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEVYRkxBR1MpOw0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoU0RORVdTWU1TKTsNCisgICAgaWYoU0RSRUZBR0cgPT0gMCkgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNETkVXU1lNV0lEVEhTKTsNCisgICAgfQ0KKyAgICBkZWxldGUgcEh1ZmZtYW5EZWNvZGVyOw0KKyAgICByZXR1cm4gcERpY3Q7DQorZmFpbGVkOg0KKyAgICBmb3IoSSA9IDA7IEkgPCBOU1lNU0RFQ09ERUQ7IEkrKykgew0KKyAgICAgICAgaWYgKFNETkVXU1lNU1tJXSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBTRE5FV1NZTVNbSV07DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFNETkVXU1lNUyk7DQorICAgIGlmKFNEUkVGQUdHID09IDApIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShTRE5FV1NZTVdJRFRIUyk7DQorICAgIH0NCisgICAgZGVsZXRlIHBIdWZmbWFuRGVjb2RlcjsNCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0NKQmlnMl9JbWFnZSAqQ0pCaWcyX0hUUkRQcm9jOjpkZWNvZGVfQXJpdGgoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwNCisgICAgICAgIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9EV09SRCBuZywgbWc7DQorICAgIEZYX0lOVDMyIHgsIHk7DQorICAgIENKQmlnMl9JbWFnZSAqSFNLSVA7DQorICAgIEZYX0RXT1JEIEhCUFA7DQorICAgIEZYX0RXT1JEICpHSTsNCisgICAgQ0pCaWcyX0ltYWdlICpIVFJFRzsNCisgICAgQ0pCaWcyX0dTSURQcm9jICpwR0lEOw0KKyAgICBKQklHMl9BTExPQyhIVFJFRywgQ0pCaWcyX0ltYWdlKEhCVywgSEJIKSk7DQorICAgIEhUUkVHLT5maWxsKEhERUZQSVhFTCk7DQorICAgIEhTS0lQID0gTlVMTDsNCisgICAgaWYoSEVOQUJMRVNLSVAgPT0gMSkgew0KKyAgICAgICAgSkJJRzJfQUxMT0MoSFNLSVAsIENKQmlnMl9JbWFnZShIR1csIEhHSCkpOw0KKyAgICAgICAgZm9yKG1nID0gMDsgbWcgPCBIR0g7IG1nKyspIHsNCisgICAgICAgICAgICBmb3IobmcgPSAwOyBuZyA8IEhHVzsgbmcrKykgew0KKyAgICAgICAgICAgICAgICB4ID0gKEhHWCArIG1nICogSFJZICsgbmcgKiBIUlgpID4+IDg7DQorICAgICAgICAgICAgICAgIHkgPSAoSEdZICsgbWcgKiBIUlggLSBuZyAqIEhSWSkgPj4gODsNCisgICAgICAgICAgICAgICAgaWYoKHggKyBIUFcgPD0gMCkgfCAoeCA+PSAoRlhfSU5UMzIpSEJXKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKHkgKyBIUEggPD0gMCkgfCAoeSA+PSAoRlhfSU5UMzIpSFBIKSkgew0KKyAgICAgICAgICAgICAgICAgICAgSFNLSVAtPnNldFBpeGVsKG5nLCBtZywgMSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBIU0tJUC0+c2V0UGl4ZWwobmcsIG1nLCAwKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBIQlBQID0gMTsNCisgICAgd2hpbGUoKEZYX0RXT1JEKSgxIDw8IEhCUFApIDwgSE5VTVBBVFMpIHsNCisgICAgICAgIEhCUFAgKys7DQorICAgIH0NCisgICAgSkJJRzJfQUxMT0MocEdJRCwgQ0pCaWcyX0dTSURQcm9jKCkpOw0KKyAgICBwR0lELT5HU01NUiA9IEhNTVI7DQorICAgIHBHSUQtPkdTVyA9IEhHVzsNCisgICAgcEdJRC0+R1NIID0gSEdIOw0KKyAgICBwR0lELT5HU0JQUCA9IChGWF9CWVRFKUhCUFA7DQorICAgIHBHSUQtPkdTVVNFU0tJUCA9IEhFTkFCTEVTS0lQOw0KKyAgICBwR0lELT5HU0tJUCA9IEhTS0lQOw0KKyAgICBwR0lELT5HU1RFTVBMQVRFID0gSFRFTVBMQVRFOw0KKyAgICBHSSA9IHBHSUQtPmRlY29kZV9Bcml0aChwQXJpdGhEZWNvZGVyLCBnYkNvbnRleHQsIHBQYXVzZSk7DQorICAgIGlmKEdJID09IE5VTEwpIHsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIGZvcihtZyA9IDA7IG1nIDwgSEdIOyBtZysrKSB7DQorICAgICAgICBmb3IobmcgPSAwOyBuZyA8IEhHVzsgbmcrKykgew0KKyAgICAgICAgICAgIHggPSAoSEdYICsgbWcgKiBIUlkgKyBuZyAqIEhSWCkgPj4gODsNCisgICAgICAgICAgICB5ID0gKEhHWSArIG1nICogSFJYIC0gbmcgKiBIUlkpID4+IDg7DQorICAgICAgICAgICAgRlhfRFdPUkQgcGF0X2luZGV4ID0gR0lbbWcgKiBIR1cgKyBuZ107DQorICAgICAgICAgICAgaWYgKHBhdF9pbmRleCA+PSBITlVNUEFUUykgew0KKyAgICAgICAgICAgICAgICBwYXRfaW5kZXggPSBITlVNUEFUUyAtIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEhUUkVHLT5jb21wb3NlRnJvbSh4LCB5LCBIUEFUU1twYXRfaW5kZXhdLCBIQ09NQk9QKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoR0kpOw0KKyAgICBpZihIU0tJUCkgew0KKyAgICAgICAgZGVsZXRlIEhTS0lQOw0KKyAgICB9DQorICAgIGRlbGV0ZSBwR0lEOw0KKyAgICByZXR1cm4gSFRSRUc7DQorZmFpbGVkOg0KKyAgICBpZihIU0tJUCkgew0KKyAgICAgICAgZGVsZXRlIEhTS0lQOw0KKyAgICB9DQorICAgIGRlbGV0ZSBwR0lEOw0KKyAgICBkZWxldGUgSFRSRUc7DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9IVFJEUHJvYzo6ZGVjb2RlX01NUihDSkJpZzJfQml0U3RyZWFtICpwU3RyZWFtLCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIEZYX0RXT1JEIG5nLCBtZzsNCisgICAgRlhfSU5UMzIgeCwgeTsNCisgICAgRlhfRFdPUkQgSEJQUDsNCisgICAgRlhfRFdPUkQgKkdJOw0KKyAgICBDSkJpZzJfSW1hZ2UgKkhUUkVHOw0KKyAgICBDSkJpZzJfR1NJRFByb2MgKnBHSUQ7DQorICAgIEpCSUcyX0FMTE9DKEhUUkVHLCBDSkJpZzJfSW1hZ2UoSEJXLCBIQkgpKTsNCisgICAgSFRSRUctPmZpbGwoSERFRlBJWEVMKTsNCisgICAgSEJQUCA9IDE7DQorICAgIHdoaWxlKChGWF9EV09SRCkoMSA8PCBIQlBQKSA8IEhOVU1QQVRTKSB7DQorICAgICAgICBIQlBQICsrOw0KKyAgICB9DQorICAgIEpCSUcyX0FMTE9DKHBHSUQsIENKQmlnMl9HU0lEUHJvYygpKTsNCisgICAgcEdJRC0+R1NNTVIgPSBITU1SOw0KKyAgICBwR0lELT5HU1cgPSBIR1c7DQorICAgIHBHSUQtPkdTSCA9IEhHSDsNCisgICAgcEdJRC0+R1NCUFAgPSAoRlhfQllURSlIQlBQOw0KKyAgICBwR0lELT5HU1VTRVNLSVAgPSAwOw0KKyAgICBHSSA9IHBHSUQtPmRlY29kZV9NTVIocFN0cmVhbSwgcFBhdXNlKTsNCisgICAgaWYoR0kgPT0gTlVMTCkgew0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgZm9yKG1nID0gMDsgbWcgPCBIR0g7IG1nKyspIHsNCisgICAgICAgIGZvcihuZyA9IDA7IG5nIDwgSEdXOyBuZysrKSB7DQorICAgICAgICAgICAgeCA9IChIR1ggKyBtZyAqIEhSWSArIG5nICogSFJYKSA+PiA4Ow0KKyAgICAgICAgICAgIHkgPSAoSEdZICsgbWcgKiBIUlggLSBuZyAqIEhSWSkgPj4gODsNCisgICAgICAgICAgICBGWF9EV09SRCBwYXRfaW5kZXggPSBHSVttZyAqIEhHVyArIG5nXTsNCisgICAgICAgICAgICBpZiAocGF0X2luZGV4ID49IEhOVU1QQVRTKSB7DQorICAgICAgICAgICAgICAgIHBhdF9pbmRleCA9IEhOVU1QQVRTIC0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgSFRSRUctPmNvbXBvc2VGcm9tKHgsIHksIEhQQVRTW3BhdF9pbmRleF0sIEhDT01CT1ApOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShHSSk7DQorICAgIGRlbGV0ZSBwR0lEOw0KKyAgICByZXR1cm4gSFRSRUc7DQorZmFpbGVkOg0KKyAgICBkZWxldGUgcEdJRDsNCisgICAgZGVsZXRlIEhUUkVHOw0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorQ0pCaWcyX1BhdHRlcm5EaWN0ICpDSkJpZzJfUEREUHJvYzo6ZGVjb2RlX0FyaXRoKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsDQorICAgICAgICBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhfRFdPUkQgR1JBWTsNCisgICAgQ0pCaWcyX0ltYWdlICpCSERDID0gTlVMTDsNCisgICAgQ0pCaWcyX1BhdHRlcm5EaWN0ICpwRGljdDsNCisgICAgQ0pCaWcyX0dSRFByb2MgKnBHUkQ7DQorICAgIEpCSUcyX0FMTE9DKHBEaWN0LCBDSkJpZzJfUGF0dGVybkRpY3QoKSk7DQorICAgIHBEaWN0LT5OVU1QQVRTID0gR1JBWU1BWCArIDE7DQorICAgIHBEaWN0LT5IRFBBVFMgPSAoQ0pCaWcyX0ltYWdlKiopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihDSkJpZzJfSW1hZ2UqKSwgcERpY3QtPk5VTVBBVFMpOw0KKyAgICBKQklHMl9tZW1zZXQocERpY3QtPkhEUEFUUywgMCwgc2l6ZW9mKENKQmlnMl9JbWFnZSopKnBEaWN0LT5OVU1QQVRTKTsNCisgICAgSkJJRzJfQUxMT0MocEdSRCwgQ0pCaWcyX0dSRFByb2MoKSk7DQorICAgIHBHUkQtPk1NUiA9IEhETU1SOw0KKyAgICBwR1JELT5HQlcgPSAoR1JBWU1BWCArIDEpICogSERQVzsNCisgICAgcEdSRC0+R0JIID0gSERQSDsNCisgICAgcEdSRC0+R0JURU1QTEFURSA9IEhEVEVNUExBVEU7DQorICAgIHBHUkQtPlRQR0RPTiA9IDA7DQorICAgIHBHUkQtPlVTRVNLSVAgPSAwOw0KKyAgICBwR1JELT5HQkFUWzBdID0gLShGWF9JTlQzMilIRFBXOw0KKyAgICBwR1JELT5HQkFUWzFdID0gMDsNCisgICAgaWYocEdSRC0+R0JURU1QTEFURSA9PSAwKSB7DQorICAgICAgICBwR1JELT5HQkFUWzJdID0gLTM7DQorICAgICAgICBwR1JELT5HQkFUWzNdID0gLTE7DQorICAgICAgICBwR1JELT5HQkFUWzRdID0gMjsNCisgICAgICAgIHBHUkQtPkdCQVRbNV0gPSAtMjsNCisgICAgICAgIHBHUkQtPkdCQVRbNl0gPSAtMjsNCisgICAgICAgIHBHUkQtPkdCQVRbN10gPSAtMjsNCisgICAgfQ0KKyAgICBGWENPREVDX1NUQVRVUyBzdGF0dXMgPSBwR1JELT5TdGFydF9kZWNvZGVfQXJpdGgoJkJIREMsIHBBcml0aERlY29kZXIsIGdiQ29udGV4dCk7DQorICAgIHdoaWxlKHN0YXR1cyA9PSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFKSB7DQorICAgICAgICBwR1JELT5Db250aW51ZV9kZWNvZGUocFBhdXNlKTsNCisgICAgfQ0KKyAgICBpZihCSERDID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSBwR1JEOw0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgZGVsZXRlIHBHUkQ7DQorICAgIEdSQVkgPSAwOw0KKyAgICB3aGlsZShHUkFZIDw9IEdSQVlNQVgpIHsNCisgICAgICAgIHBEaWN0LT5IRFBBVFNbR1JBWV0gPSBCSERDLT5zdWJJbWFnZShIRFBXICogR1JBWSwgMCwgSERQVywgSERQSCk7DQorICAgICAgICBHUkFZID0gR1JBWSArIDE7DQorICAgIH0NCisgICAgZGVsZXRlIEJIREM7DQorICAgIHJldHVybiBwRGljdDsNCitmYWlsZWQ6DQorICAgIGRlbGV0ZSBwRGljdDsNCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KKw0KK0NKQmlnMl9QYXR0ZXJuRGljdCAqQ0pCaWcyX1BERFByb2M6OmRlY29kZV9NTVIoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9EV09SRCBHUkFZOw0KKyAgICBDSkJpZzJfSW1hZ2UgKkJIREMgPSBOVUxMOw0KKyAgICBDSkJpZzJfUGF0dGVybkRpY3QgKnBEaWN0Ow0KKyAgICBDSkJpZzJfR1JEUHJvYyAqcEdSRDsNCisgICAgSkJJRzJfQUxMT0MocERpY3QsIENKQmlnMl9QYXR0ZXJuRGljdCgpKTsNCisgICAgcERpY3QtPk5VTVBBVFMgPSBHUkFZTUFYICsgMTsNCisgICAgcERpY3QtPkhEUEFUUyA9IChDSkJpZzJfSW1hZ2UqKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKENKQmlnMl9JbWFnZSopLCBwRGljdC0+TlVNUEFUUyk7DQorICAgIEpCSUcyX21lbXNldChwRGljdC0+SERQQVRTLCAwLCBzaXplb2YoQ0pCaWcyX0ltYWdlKikqcERpY3QtPk5VTVBBVFMpOw0KKyAgICBKQklHMl9BTExPQyhwR1JELCBDSkJpZzJfR1JEUHJvYygpKTsNCisgICAgcEdSRC0+TU1SID0gSERNTVI7DQorICAgIHBHUkQtPkdCVyA9IChHUkFZTUFYICsgMSkgKiBIRFBXOw0KKyAgICBwR1JELT5HQkggPSBIRFBIOw0KKyAgICBGWENPREVDX1NUQVRVUyBzdGF0dXMgPSBwR1JELT5TdGFydF9kZWNvZGVfTU1SKCZCSERDLCBwU3RyZWFtKTsNCisgICAgd2hpbGUoc3RhdHVzID09IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUUpIHsNCisgICAgICAgIHBHUkQtPkNvbnRpbnVlX2RlY29kZShwUGF1c2UpOw0KKyAgICB9DQorICAgIGlmKEJIREMgPT0gTlVMTCkgew0KKyAgICAgICAgZGVsZXRlIHBHUkQ7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBkZWxldGUgcEdSRDsNCisgICAgR1JBWSA9IDA7DQorICAgIHdoaWxlKEdSQVkgPD0gR1JBWU1BWCkgew0KKyAgICAgICAgcERpY3QtPkhEUEFUU1tHUkFZXSA9IEJIREMtPnN1YkltYWdlKEhEUFcgKiBHUkFZLCAwLCBIRFBXLCBIRFBIKTsNCisgICAgICAgIEdSQVkgPSBHUkFZICsgMTsNCisgICAgfQ0KKyAgICBkZWxldGUgQkhEQzsNCisgICAgcmV0dXJuIHBEaWN0Ow0KK2ZhaWxlZDoNCisgICAgZGVsZXRlIHBEaWN0Ow0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorRlhfRFdPUkQgKkNKQmlnMl9HU0lEUHJvYzo6ZGVjb2RlX0FyaXRoKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBDSkJpZzJfSW1hZ2UgKipHU1BMQU5FUzsNCisgICAgRlhfSU5UMzIgSiwgSzsNCisgICAgRlhfRFdPUkQgeCwgeTsNCisgICAgRlhfRFdPUkQgKkdTVkFMUzsNCisgICAgQ0pCaWcyX0dSRFByb2MgKnBHUkQ7DQorICAgIEdTUExBTkVTID0gKENKQmlnMl9JbWFnZSAqKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKENKQmlnMl9JbWFnZSopLCBHU0JQUCk7DQorICAgIGlmICghR1NQTEFORVMpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEdTVkFMUyA9IChGWF9EV09SRCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MzKHNpemVvZihGWF9EV09SRCksIEdTVywgR1NIKTsNCisgICAgaWYgKCFHU1ZBTFMpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShHU1BMQU5FUyk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBKQklHMl9tZW1zZXQoR1NQTEFORVMsIDAsIHNpemVvZihDSkJpZzJfSW1hZ2UqKSpHU0JQUCk7DQorICAgIEpCSUcyX21lbXNldChHU1ZBTFMsIDAsIHNpemVvZihGWF9EV09SRCkqR1NXICogR1NIKTsNCisgICAgSkJJRzJfQUxMT0MocEdSRCwgQ0pCaWcyX0dSRFByb2MoKSk7DQorICAgIHBHUkQtPk1NUiA9IEdTTU1SOw0KKyAgICBwR1JELT5HQlcgPSBHU1c7DQorICAgIHBHUkQtPkdCSCA9IEdTSDsNCisgICAgcEdSRC0+R0JURU1QTEFURSA9IEdTVEVNUExBVEU7DQorICAgIHBHUkQtPlRQR0RPTiA9IDA7DQorICAgIHBHUkQtPlVTRVNLSVAgPSBHU1VTRVNLSVA7DQorICAgIHBHUkQtPlNLSVAgPSBHU0tJUDsNCisgICAgaWYoR1NURU1QTEFURSA8PSAxKSB7DQorICAgICAgICBwR1JELT5HQkFUWzBdID0gMzsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBHUkQtPkdCQVRbMF0gPSAyOw0KKyAgICB9DQorICAgIHBHUkQtPkdCQVRbMV0gPSAtMTsNCisgICAgaWYocEdSRC0+R0JURU1QTEFURSA9PSAwKSB7DQorICAgICAgICBwR1JELT5HQkFUWzJdID0gLTM7DQorICAgICAgICBwR1JELT5HQkFUWzNdID0gLTE7DQorICAgICAgICBwR1JELT5HQkFUWzRdID0gMjsNCisgICAgICAgIHBHUkQtPkdCQVRbNV0gPSAtMjsNCisgICAgICAgIHBHUkQtPkdCQVRbNl0gPSAtMjsNCisgICAgICAgIHBHUkQtPkdCQVRbN10gPSAtMjsNCisgICAgfQ0KKyAgICBGWENPREVDX1NUQVRVUyBzdGF0dXMgPSBwR1JELT5TdGFydF9kZWNvZGVfQXJpdGgoJkdTUExBTkVTW0dTQlBQIC0gMV0sIHBBcml0aERlY29kZXIsIGdiQ29udGV4dCk7DQorICAgIHdoaWxlKHN0YXR1cyA9PSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFKSB7DQorICAgICAgICBwR1JELT5Db250aW51ZV9kZWNvZGUocFBhdXNlKTsNCisgICAgfQ0KKyAgICBpZihHU1BMQU5FU1tHU0JQUCAtIDFdID09IE5VTEwpIHsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIEogPSBHU0JQUCAtIDI7DQorICAgIHdoaWxlKEogPj0gMCkgew0KKyAgICAgICAgRlhDT0RFQ19TVEFUVVMgc3RhdHVzID0gcEdSRC0+U3RhcnRfZGVjb2RlX0FyaXRoKCZHU1BMQU5FU1tKXSwgcEFyaXRoRGVjb2RlciwgZ2JDb250ZXh0KTsNCisgICAgICAgIHdoaWxlKHN0YXR1cyA9PSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFKSB7DQorICAgICAgICAgICAgcEdSRC0+Q29udGludWVfZGVjb2RlKHBQYXVzZSk7DQorICAgICAgICB9DQorICAgICAgICBpZihHU1BMQU5FU1tKXSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgZm9yKEsgPSBHU0JQUCAtIDE7IEsgPiBKOyBLLS0pIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIEdTUExBTkVTW0tdOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBHU1BMQU5FU1tKXS0+Y29tcG9zZUZyb20oMCwgMCwgR1NQTEFORVNbSiArIDFdLCBKQklHMl9DT01QT1NFX1hPUik7DQorICAgICAgICBKID0gSiAtIDE7DQorICAgIH0NCisgICAgZm9yKHkgPSAwOyB5IDwgR1NIOyB5KyspIHsNCisgICAgICAgIGZvcih4ID0gMDsgeCA8IEdTVzsgeCsrKSB7DQorICAgICAgICAgICAgZm9yKEogPSAwOyBKIDwgR1NCUFA7IEorKykgew0KKyAgICAgICAgICAgICAgICBHU1ZBTFNbeSAqIEdTVyArIHhdIHw9IEdTUExBTkVTW0pdLT5nZXRQaXhlbCh4LCB5KSA8PCBKOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBmb3IoSiA9IDA7IEogPCBHU0JQUDsgSisrKSB7DQorICAgICAgICBkZWxldGUgR1NQTEFORVNbSl07DQorICAgIH0NCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEdTUExBTkVTKTsNCisgICAgZGVsZXRlIHBHUkQ7DQorICAgIHJldHVybiBHU1ZBTFM7DQorZmFpbGVkOg0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoR1NQTEFORVMpOw0KKyAgICBkZWxldGUgcEdSRDsNCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEdTVkFMUyk7DQorICAgIHJldHVybiBOVUxMOw0KK30NCitGWF9EV09SRCAqQ0pCaWcyX0dTSURQcm9jOjpkZWNvZGVfTU1SKENKQmlnMl9CaXRTdHJlYW0gKnBTdHJlYW0sIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgQ0pCaWcyX0ltYWdlICoqR1NQTEFORVM7DQorICAgIEZYX0lOVDMyIEosIEs7DQorICAgIEZYX0RXT1JEIHgsIHk7DQorICAgIEZYX0RXT1JEICpHU1ZBTFM7DQorICAgIENKQmlnMl9HUkRQcm9jICpwR1JEOw0KKyAgICBHU1BMQU5FUyA9IChDSkJpZzJfSW1hZ2UgKiopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihDSkJpZzJfSW1hZ2UqKSwgR1NCUFApOw0KKyAgICBpZiAoIUdTUExBTkVTKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBHU1ZBTFMgPSAoRlhfRFdPUkQqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMyhzaXplb2YoRlhfRFdPUkQpLCBHU1csIEdTSCk7DQorICAgIGlmICghR1NWQUxTKSB7DQorICAgICAgICBpZiAoR1NQTEFORVMpIHsNCisgICAgICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoR1NQTEFORVMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgSkJJRzJfbWVtc2V0KEdTUExBTkVTLCAwLCBzaXplb2YoQ0pCaWcyX0ltYWdlKikqR1NCUFApOw0KKyAgICBKQklHMl9tZW1zZXQoR1NWQUxTLCAwLCBzaXplb2YoRlhfRFdPUkQpKkdTVyAqIEdTSCk7DQorICAgIEpCSUcyX0FMTE9DKHBHUkQsIENKQmlnMl9HUkRQcm9jKCkpOw0KKyAgICBwR1JELT5NTVIgPSBHU01NUjsNCisgICAgcEdSRC0+R0JXID0gR1NXOw0KKyAgICBwR1JELT5HQkggPSBHU0g7DQorICAgIEZYQ09ERUNfU1RBVFVTIHN0YXR1cyA9IHBHUkQtPlN0YXJ0X2RlY29kZV9NTVIoJkdTUExBTkVTW0dTQlBQIC0gMV0sIHBTdHJlYW0pOw0KKyAgICB3aGlsZShzdGF0dXMgPT0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRSkgew0KKyAgICAgICAgcEdSRC0+Q29udGludWVfZGVjb2RlKHBQYXVzZSk7DQorICAgIH0NCisgICAgaWYoR1NQTEFORVNbR1NCUFAgLSAxXSA9PSBOVUxMKSB7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBwU3RyZWFtLT5hbGlnbkJ5dGUoKTsNCisgICAgcFN0cmVhbS0+b2Zmc2V0KDMpOw0KKyAgICBKID0gR1NCUFAgLSAyOw0KKyAgICB3aGlsZShKID49IDApIHsNCisgICAgICAgIEZYQ09ERUNfU1RBVFVTIHN0YXR1cyA9IHBHUkQtPlN0YXJ0X2RlY29kZV9NTVIoJkdTUExBTkVTW0pdLCBwU3RyZWFtKTsNCisgICAgICAgIHdoaWxlKHN0YXR1cyA9PSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFKSB7DQorICAgICAgICAgICAgcEdSRC0+Q29udGludWVfZGVjb2RlKHBQYXVzZSk7DQorICAgICAgICB9DQorICAgICAgICBpZihHU1BMQU5FU1tKXSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgZm9yKEsgPSBHU0JQUCAtIDE7IEsgPiBKOyBLLS0pIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIEdTUExBTkVTW0tdOw0KKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBwU3RyZWFtLT5hbGlnbkJ5dGUoKTsNCisgICAgICAgIHBTdHJlYW0tPm9mZnNldCgzKTsNCisgICAgICAgIEdTUExBTkVTW0pdLT5jb21wb3NlRnJvbSgwLCAwLCBHU1BMQU5FU1tKICsgMV0sIEpCSUcyX0NPTVBPU0VfWE9SKTsNCisgICAgICAgIEogPSBKIC0gMTsNCisgICAgfQ0KKyAgICBmb3IoeSA9IDA7IHkgPCBHU0g7IHkrKykgew0KKyAgICAgICAgZm9yKHggPSAwOyB4IDwgR1NXOyB4KyspIHsNCisgICAgICAgICAgICBmb3IoSiA9IDA7IEogPCBHU0JQUDsgSisrKSB7DQorICAgICAgICAgICAgICAgIEdTVkFMU1t5ICogR1NXICsgeF0gfD0gR1NQTEFORVNbSl0tPmdldFBpeGVsKHgsIHkpIDw8IEo7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGZvcihKID0gMDsgSiA8IEdTQlBQOyBKKyspIHsNCisgICAgICAgIGRlbGV0ZSBHU1BMQU5FU1tKXTsNCisgICAgfQ0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoR1NQTEFORVMpOw0KKyAgICBkZWxldGUgcEdSRDsNCisgICAgcmV0dXJuIEdTVkFMUzsNCitmYWlsZWQ6DQorICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShHU1BMQU5FUyk7DQorICAgIGRlbGV0ZSBwR1JEOw0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoR1NWQUxTKTsNCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0ZYQ09ERUNfU1RBVFVTIENKQmlnMl9HUkRQcm9jOjpTdGFydF9kZWNvZGVfQXJpdGgoQ0pCaWcyX0ltYWdlKiogcEltYWdlLCBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgaWYgKEdCVyA9PSAwIHx8IEdCSCA9PSAwKSB7DQorICAgICAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCisgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KKyAgICB9DQorICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfUkVBRFk7DQorICAgIG1fcFBhdXNlID0gcFBhdXNlOw0KKyAgICBpZigqcEltYWdlID09IE5VTEwpIHsNCisgICAgICAgIEpCSUcyX0FMTE9DKCgqcEltYWdlKSwgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIH0NCisgICAgaWYgKCgqcEltYWdlKS0+bV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICBkZWxldGUgKnBJbWFnZTsNCisgICAgICAgICpwSW1hZ2UgPSBOVUxMOw0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiR2VuZXJpYyByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlOiBDcmVhdGUgSW1hZ2UgRmFpbGVkIHdpdGggd2lkdGggPSAlZCwgaGVpZ2h0ID0gJWRcbiIsIEdCVywgR0JIKTsNCisgICAgICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19FUlJPUjsNCisgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19FUlJPUjsNCisgICAgfQ0KKyAgICBtX0RlY29kZVR5cGUgPSAxOw0KKyAgICBtX3BJbWFnZSA9IHBJbWFnZTsNCisgICAgKCptX3BJbWFnZSktPmZpbGwoMCk7DQorICAgIG1fcEFyaXRoRGVjb2RlciA9IHBBcml0aERlY29kZXI7DQorICAgIG1fZ2JDb250ZXh0ID0gZ2JDb250ZXh0Ow0KKyAgICBMVFAgPSAwOw0KKyAgICBtX3BMaW5lID0gTlVMTDsNCisgICAgbV9sb29wSW5kZXggPSAwOw0KKyAgICByZXR1cm4gZGVjb2RlX0FyaXRoKHBQYXVzZSk7DQorfQ0KK0ZYQ09ERUNfU1RBVFVTIENKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGgoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpbnQgaWxpbmUgPSBtX2xvb3BJbmRleDsNCisgICAgQ0pCaWcyX0ltYWdlKiBwSW1hZ2UgPSAqbV9wSW1hZ2U7DQorICAgIGlmKEdCVEVNUExBVEUgPT0gMCkgew0KKyAgICAgICAgaWYoKEdCQVRbMF0gPT0gMykgJiYgKEdCQVRbMV0gPT0gKHNpZ25lZCBjaGFyKSAtIDEpDQorICAgICAgICAgICAgICAgICYmIChHQkFUWzJdID09IChzaWduZWQgY2hhcikgLSAzKSAmJiAoR0JBVFszXSA9PSAoc2lnbmVkIGNoYXIpIC0gMSkNCisgICAgICAgICAgICAgICAgJiYgKEdCQVRbNF0gPT0gMikgJiYgKEdCQVRbNV0gPT0gKHNpZ25lZCBjaGFyKSAtIDIpDQorICAgICAgICAgICAgICAgICYmIChHQkFUWzZdID09IChzaWduZWQgY2hhcikgLSAyKSAmJiAoR0JBVFs3XSA9PSAoc2lnbmVkIGNoYXIpIC0gMikpIHsNCisgICAgICAgICAgICBtX1Byb3NzaXZlU3RhdHVzID0gZGVjb2RlX0FyaXRoX1RlbXBsYXRlMF9vcHQzKHBJbWFnZSwgbV9wQXJpdGhEZWNvZGVyLCBtX2diQ29udGV4dCwgcFBhdXNlKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IGRlY29kZV9Bcml0aF9UZW1wbGF0ZTBfdW5vcHQocEltYWdlLCBtX3BBcml0aERlY29kZXIsIG1fZ2JDb250ZXh0LCBwUGF1c2UpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYoR0JURU1QTEFURSA9PSAxKSB7DQorICAgICAgICBpZigoR0JBVFswXSA9PSAzKSAmJiAoR0JBVFsxXSA9PSAoc2lnbmVkIGNoYXIpIC0gMSkpIHsNCisgICAgICAgICAgICBtX1Byb3NzaXZlU3RhdHVzID0gZGVjb2RlX0FyaXRoX1RlbXBsYXRlMV9vcHQzKHBJbWFnZSwgbV9wQXJpdGhEZWNvZGVyLCBtX2diQ29udGV4dCwgcFBhdXNlKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IGRlY29kZV9Bcml0aF9UZW1wbGF0ZTFfdW5vcHQocEltYWdlLCBtX3BBcml0aERlY29kZXIsIG1fZ2JDb250ZXh0LCBwUGF1c2UpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYoR0JURU1QTEFURSA9PSAyKSB7DQorICAgICAgICBpZigoR0JBVFswXSA9PSAyKSAmJiAoR0JBVFsxXSA9PSAoc2lnbmVkIGNoYXIpIC0gMSkpIHsNCisgICAgICAgICAgICBtX1Byb3NzaXZlU3RhdHVzID0gIGRlY29kZV9Bcml0aF9UZW1wbGF0ZTJfb3B0MyhwSW1hZ2UsIG1fcEFyaXRoRGVjb2RlciwgbV9nYkNvbnRleHQsIHBQYXVzZSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fUHJvc3NpdmVTdGF0dXMgPSAgZGVjb2RlX0FyaXRoX1RlbXBsYXRlMl91bm9wdChwSW1hZ2UsIG1fcEFyaXRoRGVjb2RlciwgbV9nYkNvbnRleHQsIHBQYXVzZSk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZigoR0JBVFswXSA9PSAyKSAmJiAoR0JBVFsxXSA9PSAoc2lnbmVkIGNoYXIpIC0gMSkpIHsNCisgICAgICAgICAgICBtX1Byb3NzaXZlU3RhdHVzID0gZGVjb2RlX0FyaXRoX1RlbXBsYXRlM19vcHQzKHBJbWFnZSwgbV9wQXJpdGhEZWNvZGVyLCBtX2diQ29udGV4dCwgcFBhdXNlKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IGRlY29kZV9Bcml0aF9UZW1wbGF0ZTNfdW5vcHQocEltYWdlLCBtX3BBcml0aERlY29kZXIsIG1fZ2JDb250ZXh0LCBwUGF1c2UpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fUmVwbGFjZVJlY3QubGVmdCA9IDA7DQorICAgIG1fUmVwbGFjZVJlY3QucmlnaHQgPSBwSW1hZ2UtPm1fbldpZHRoOw0KKyAgICBtX1JlcGxhY2VSZWN0LnRvcCA9IGlsaW5lOw0KKyAgICBtX1JlcGxhY2VSZWN0LmJvdHRvbSA9IG1fbG9vcEluZGV4Ow0KKyAgICBpZihtX1Byb3NzaXZlU3RhdHVzID09IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0gpIHsNCisgICAgICAgIG1fbG9vcEluZGV4ID0gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9Qcm9zc2l2ZVN0YXR1czsNCit9DQorRlhDT0RFQ19TVEFUVVMgQ0pCaWcyX0dSRFByb2M6OlN0YXJ0X2RlY29kZV9Bcml0aF9WMihDSkJpZzJfSW1hZ2UqKiBwSW1hZ2UsIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZihHQlcgPT0gMCB8fCBHQkggPT0gMCkgew0KKyAgICAgICAgKiBwSW1hZ2UgPSBOVUxMOw0KKyAgICAgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0g7DQorICAgICAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCisgICAgfQ0KKyAgICBpZigqcEltYWdlID09IE5VTEwpIHsNCisgICAgICAgIEpCSUcyX0FMTE9DKCgqcEltYWdlKSwgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIH0NCisgICAgaWYgKCgqcEltYWdlKS0+bV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICBkZWxldGUgKnBJbWFnZTsNCisgICAgICAgICpwSW1hZ2UgPSBOVUxMOw0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9FcnJvcigiR2VuZXJpYyByZWdpb24gZGVjb2RpbmcgcHJvY2VkdXJlOiBDcmVhdGUgSW1hZ2UgRmFpbGVkIHdpdGggd2lkdGggPSAlZCwgaGVpZ2h0ID0gJWRcbiIsIEdCVywgR0JIKTsNCisgICAgICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19FUlJPUjsNCisgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19FUlJPUjsNCisgICAgfQ0KKyAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1JFQURZOw0KKyAgICBtX0RlY29kZVR5cGUgPSAyOw0KKyAgICBtX3BQYXVzZSA9IHBQYXVzZTsNCisgICAgbV9wSW1hZ2UgPSBwSW1hZ2U7DQorICAgICgqbV9wSW1hZ2UpLT5maWxsKDApOw0KKyAgICBMVFAgPSAwOw0KKyAgICBtX2xvb3BJbmRleCA9IDA7DQorICAgIG1fcEFyaXRoRGVjb2RlciA9IHBBcml0aERlY29kZXI7DQorICAgIG1fZ2JDb250ZXh0ID0gZ2JDb250ZXh0Ow0KKyAgICByZXR1cm4gZGVjb2RlX0FyaXRoX1YyKHBQYXVzZSk7DQorfQ0KK0ZYQ09ERUNfU1RBVFVTIENKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGhfVjIoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9CT09MIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIENKQmlnMl9JbWFnZSAqR0JSRUcgPSAqbV9wSW1hZ2U7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMiwgbGluZTM7DQorICAgIExUUCA9IDA7DQorICAgIEpCSUcyX0FMTE9DKEdCUkVHLCBDSkJpZzJfSW1hZ2UoR0JXLCBHQkgpKTsNCisgICAgR0JSRUctPmZpbGwoMCk7DQorICAgIGZvcig7IG1fbG9vcEluZGV4IDwgR0JIOyBtX2xvb3BJbmRleCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBzd2l0Y2goR0JURU1QTEFURSkgew0KKyAgICAgICAgICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gMHg5YjI1Ow0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAweDA3OTU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IDB4MDBlNTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDM6DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gMHgwMTk1Ow0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIFNMVFAgPSBtX3BBcml0aERlY29kZXItPkRFQ09ERSgmbV9nYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIEdCUkVHLT5jb3B5TGluZShtX2xvb3BJbmRleCwgbV9sb29wSW5kZXggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc3dpdGNoKEdCVEVNUExBVEUpIHsNCisgICAgICAgICAgICAgICAgY2FzZSAwOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgPSBHQlJFRy0+Z2V0UGl4ZWwoMSwgbV9sb29wSW5kZXggLSAyKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgbV9sb29wSW5kZXggLSAyKSA8PCAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gR0JSRUctPmdldFBpeGVsKDIsIG1fbG9vcEluZGV4IC0gMSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgfD0gR0JSRUctPmdldFBpeGVsKDEsIG1fbG9vcEluZGV4IC0gMSkgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgbV9sb29wSW5kZXggLSAxKSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIG1fbG9vcEluZGV4KSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gbGluZTM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFswXSwgbV9sb29wSW5kZXggKyBHQkFUWzFdKSA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMiA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIEdCQVRbMl0sIG1fbG9vcEluZGV4ICsgR0JBVFszXSkgPDwgMTA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFs0XSwgbV9sb29wSW5kZXggKyBHQkFUWzVdKSA8PCAxMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTEgPDwgMTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFs2XSwgbV9sb29wSW5kZXggKyBHQkFUWzddKSA8PCAxNTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBtX3BBcml0aERlY29kZXItPkRFQ09ERSgmbV9nYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJWYWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdCUkVHLT5zZXRQaXhlbCh3LCBtX2xvb3BJbmRleCwgYlZhbCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgPSAoKGxpbmUxIDw8IDEpIHwgR0JSRUctPmdldFBpeGVsKHcgKyAyLCBtX2xvb3BJbmRleCAtIDIpKSAmIDB4MDc7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgMywgbV9sb29wSW5kZXggLSAxKSkgJiAweDFmOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMyA9ICgobGluZTMgPDwgMSkgfCBiVmFsKSAmIDB4MGY7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMTogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxID0gR0JSRUctPmdldFBpeGVsKDIsIG1fbG9vcEluZGV4IC0gMik7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgfD0gR0JSRUctPmdldFBpeGVsKDEsIG1fbG9vcEluZGV4IC0gMikgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgbV9sb29wSW5kZXggLSAyKSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gR0JSRUctPmdldFBpeGVsKDIsIG1fbG9vcEluZGV4IC0gMSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgfD0gR0JSRUctPmdldFBpeGVsKDEsIG1fbG9vcEluZGV4IC0gMSkgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgbV9sb29wSW5kZXggLSAxKSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUzID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIG1fbG9vcEluZGV4KSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gbGluZTM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFswXSwgbV9sb29wSW5kZXggKyBHQkFUWzFdKSA8PCAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMiA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCA5Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IG1fcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZtX2diQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYlZhbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0JSRUctPnNldFBpeGVsKHcsIG1fbG9vcEluZGV4LCBiVmFsKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSA9ICgobGluZTEgPDwgMSkgfCBHQlJFRy0+Z2V0UGl4ZWwodyArIDMsIG1fbG9vcEluZGV4IC0gMikpICYgMHgwZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgPSAoKGxpbmUyIDw8IDEpIHwgR0JSRUctPmdldFBpeGVsKHcgKyAzLCBtX2xvb3BJbmRleCAtIDEpKSAmIDB4MWY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUzID0gKChsaW5lMyA8PCAxKSB8IGJWYWwpICYgMHgwNzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAyOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgPSBHQlJFRy0+Z2V0UGl4ZWwoMSwgbV9sb29wSW5kZXggLSAyKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMSB8PSBHQlJFRy0+Z2V0UGl4ZWwoMCwgbV9sb29wSW5kZXggLSAyKSA8PCAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gR0JSRUctPmdldFBpeGVsKDEsIG1fbG9vcEluZGV4IC0gMSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTIgfD0gR0JSRUctPmdldFBpeGVsKDAsIG1fbG9vcEluZGV4IC0gMSkgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMyA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR0JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoVVNFU0tJUCAmJiBTS0lQLT5nZXRQaXhlbCh3LCBtX2xvb3BJbmRleCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IGxpbmUzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIEdCQVRbMF0sIG1fbG9vcEluZGV4ICsgR0JBVFsxXSkgPDwgMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTEgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBtX3BBcml0aERlY29kZXItPkRFQ09ERSgmbV9nYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJWYWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdCUkVHLT5zZXRQaXhlbCh3LCBtX2xvb3BJbmRleCwgYlZhbCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgPSAoKGxpbmUxIDw8IDEpIHwgR0JSRUctPmdldFBpeGVsKHcgKyAyLCBtX2xvb3BJbmRleCAtIDIpKSAmIDB4MDc7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IEdCUkVHLT5nZXRQaXhlbCh3ICsgMiwgbV9sb29wSW5kZXggLSAxKSkgJiAweDBmOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMyA9ICgobGluZTMgPDwgMSkgfCBiVmFsKSAmIDB4MDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMzogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUxID0gR0JSRUctPmdldFBpeGVsKDEsIG1fbG9vcEluZGV4IC0gMSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgfD0gR0JSRUctPmdldFBpeGVsKDAsIG1fbG9vcEluZGV4IC0gMSkgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR0JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoVVNFU0tJUCAmJiBTS0lQLT5nZXRQaXhlbCh3LCBtX2xvb3BJbmRleCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IGxpbmUyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIEdCQVRbMF0sIG1fbG9vcEluZGV4ICsgR0JBVFsxXSkgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTEgPDwgNTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBtX3BBcml0aERlY29kZXItPkRFQ09ERSgmbV9nYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJWYWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdCUkVHLT5zZXRQaXhlbCh3LCBtX2xvb3BJbmRleCwgYlZhbCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTEgPSAoKGxpbmUxIDw8IDEpIHwgR0JSRUctPmdldFBpeGVsKHcgKyAyLCBtX2xvb3BJbmRleCAtIDEpKSAmIDB4MWY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IGJWYWwpICYgMHgwZjsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZihwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgbV9sb29wSW5kZXggKys7DQorICAgICAgICAgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUU7DQorICAgICAgICAgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0g7DQorICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KK30NCitGWENPREVDX1NUQVRVUyBDSkJpZzJfR1JEUHJvYzo6U3RhcnRfZGVjb2RlX0FyaXRoX1YxKENKQmlnMl9JbWFnZSoqIHBJbWFnZSwgQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0LCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIGlmKEdCVyA9PSAwIHx8IEdCSCA9PSAwKSB7DQorICAgICAgICAqIHBJbWFnZSA9IE5VTEw7DQorICAgICAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCisgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KKyAgICB9DQorICAgIGlmKCpwSW1hZ2UgPT0gTlVMTCkgew0KKyAgICAgICAgSkJJRzJfQUxMT0MoKCpwSW1hZ2UpLCBDSkJpZzJfSW1hZ2UoR0JXLCBHQkgpKTsNCisgICAgfQ0KKyAgICBpZiAoKCpwSW1hZ2UpLT5tX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSAqcEltYWdlOw0KKyAgICAgICAgKnBJbWFnZSA9IE5VTEw7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJHZW5lcmljIHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmU6IENyZWF0ZSBJbWFnZSBGYWlsZWQgd2l0aCB3aWR0aCA9ICVkLCBoZWlnaHQgPSAlZFxuIiwgR0JXLCBHQkgpOw0KKyAgICAgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0VSUk9SOw0KKyAgICAgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0VSUk9SOw0KKyAgICB9DQorICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfUkVBRFk7DQorICAgIG1fcFBhdXNlID0gcFBhdXNlOw0KKyAgICBtX3BJbWFnZSA9IHBJbWFnZTsNCisgICAgbV9EZWNvZGVUeXBlID0gMzsNCisgICAgKCptX3BJbWFnZSktPmZpbGwoMCk7DQorICAgIExUUCA9IDA7DQorICAgIG1fbG9vcEluZGV4ID0gMDsNCisgICAgbV9wQXJpdGhEZWNvZGVyID0gcEFyaXRoRGVjb2RlcjsNCisgICAgbV9nYkNvbnRleHQgPSBnYkNvbnRleHQ7DQorICAgIHJldHVybiBkZWNvZGVfQXJpdGhfVjEocFBhdXNlKTsNCit9DQorRlhDT0RFQ19TVEFUVVMgQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9WMShJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIEZYX0JPT0wgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVCA9IDA7DQorICAgIENKQmlnMl9JbWFnZSAqR0JSRUcgPSAoKm1fcEltYWdlKTsNCisgICAgZm9yKDsgbV9sb29wSW5kZXggPCBHQkg7IG1fbG9vcEluZGV4KyspIHsNCisgICAgICAgIGlmKFRQR0RPTikgew0KKyAgICAgICAgICAgIHN3aXRjaChHQlRFTVBMQVRFKSB7DQorICAgICAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAweDliMjU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9IDB4MDc5NTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDI6DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gMHgwMGU1Ow0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMzoNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAweDAxOTU7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgU0xUUCA9IG1fcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZtX2diQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR0JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgR0JSRUctPnNldFBpeGVsKHcsIG1fbG9vcEluZGV4LCBHQlJFRy0+Z2V0UGl4ZWwodywgbV9sb29wSW5kZXggLSAxKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIG1fbG9vcEluZGV4KSkgew0KKyAgICAgICAgICAgICAgICAgICAgR0JSRUctPnNldFBpeGVsKHcsIG1fbG9vcEluZGV4LCAwKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKEdCVEVNUExBVEUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAxLCBtX2xvb3BJbmRleCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAyLCBtX2xvb3BJbmRleCkgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDMsIG1fbG9vcEluZGV4KSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gNCwgbV9sb29wSW5kZXgpIDw8IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBtX2xvb3BJbmRleCArIEdCQVRbMV0pIDw8IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyAyLCBtX2xvb3BJbmRleCAtIDEpIDw8IDU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyAxLCBtX2xvb3BJbmRleCAtIDEpIDw8IDY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcsIG1fbG9vcEluZGV4IC0gMSkgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDEsIG1fbG9vcEluZGV4IC0gMSkgPDwgODsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDIsIG1fbG9vcEluZGV4IC0gMSkgPDwgOTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIEdCQVRbMl0sIG1fbG9vcEluZGV4ICsgR0JBVFszXSkgPDwgMTA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzRdLCBtX2xvb3BJbmRleCArIEdCQVRbNV0pIDw8IDExOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgMSwgbV9sb29wSW5kZXggLSAyKSA8PCAxMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodywgbV9sb29wSW5kZXggLSAyKSA8PCAxMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDEsIG1fbG9vcEluZGV4IC0gMikgPDwgMTQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzZdLCBtX2xvb3BJbmRleCArIEdCQVRbN10pIDw8IDE1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAxLCBtX2xvb3BJbmRleCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAyLCBtX2xvb3BJbmRleCkgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDMsIG1fbG9vcEluZGV4KSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgR0JBVFswXSwgbV9sb29wSW5kZXggKyBHQkFUWzFdKSA8PCAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgMiwgbV9sb29wSW5kZXggLSAxKSA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3ICsgMSwgbV9sb29wSW5kZXggLSAxKSA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3LCBtX2xvb3BJbmRleCAtIDEpIDw8IDY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAxLCBtX2xvb3BJbmRleCAtIDEpIDw8IDc7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAyLCBtX2xvb3BJbmRleCAtIDEpIDw8IDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyAyLCBtX2xvb3BJbmRleCAtIDIpIDw8IDk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyAxLCBtX2xvb3BJbmRleCAtIDIpIDw8IDEwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3LCBtX2xvb3BJbmRleCAtIDIpIDw8IDExOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMSwgbV9sb29wSW5kZXggLSAyKSA8PCAxMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMSwgbV9sb29wSW5kZXgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMiwgbV9sb29wSW5kZXgpIDw8IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBtX2xvb3BJbmRleCArIEdCQVRbMV0pIDw8IDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyAxLCBtX2xvb3BJbmRleCAtIDEpIDw8IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcsIG1fbG9vcEluZGV4IC0gMSkgPDwgNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDEsIG1fbG9vcEluZGV4IC0gMSkgPDwgNTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDIsIG1fbG9vcEluZGV4IC0gMSkgPDwgNjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyArIDEsIG1fbG9vcEluZGV4IC0gMikgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodywgbV9sb29wSW5kZXggLSAyKSA8PCA4Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gMSwgbV9sb29wSW5kZXggLSAyKSA8PCA5Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAxLCBtX2xvb3BJbmRleCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgLSAyLCBtX2xvb3BJbmRleCkgPDwgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDMsIG1fbG9vcEluZGV4KSA8PCAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IEdCUkVHLT5nZXRQaXhlbCh3IC0gNCwgbV9sb29wSW5kZXgpIDw8IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyBHQkFUWzBdLCBtX2xvb3BJbmRleCArIEdCQVRbMV0pIDw8IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcgKyAxLCBtX2xvb3BJbmRleCAtIDEpIDw8IDU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gR0JSRUctPmdldFBpeGVsKHcsIG1fbG9vcEluZGV4IC0gMSkgPDwgNjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDEsIG1fbG9vcEluZGV4IC0gMSkgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDIsIG1fbG9vcEluZGV4IC0gMSkgPDwgODsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBHQlJFRy0+Z2V0UGl4ZWwodyAtIDMsIG1fbG9vcEluZGV4IC0gMSkgPDwgOTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gbV9wQXJpdGhEZWNvZGVyLT5ERUNPREUoJm1fZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIEdCUkVHLT5zZXRQaXhlbCh3LCBtX2xvb3BJbmRleCwgYlZhbCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZihwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgbV9sb29wSW5kZXggKys7DQorICAgICAgICAgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUU7DQorICAgICAgICAgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0g7DQorICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KK30NCitGWENPREVDX1NUQVRVUyBDSkJpZzJfR1JEUHJvYzo6U3RhcnRfZGVjb2RlX01NUihDSkJpZzJfSW1hZ2UqKiBwSW1hZ2UsIENKQmlnMl9CaXRTdHJlYW0gKnBTdHJlYW0sIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgaW50IGJpdHBvcywgaTsNCisgICAgSkJJRzJfQUxMT0MoKCogcEltYWdlKSwgQ0pCaWcyX0ltYWdlKEdCVywgR0JIKSk7DQorICAgIGlmICgoKiBwSW1hZ2UpLT5tX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIGRlbGV0ZSAoKiBwSW1hZ2UpOw0KKyAgICAgICAgKCogcEltYWdlKSA9IE5VTEw7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0Vycm9yKCJHZW5lcmljIHJlZ2lvbiBkZWNvZGluZyBwcm9jZWR1cmU6IENyZWF0ZSBJbWFnZSBGYWlsZWQgd2l0aCB3aWR0aCA9ICVkLCBoZWlnaHQgPSAlZFxuIiwgR0JXLCBHQkgpOw0KKyAgICAgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0VSUk9SOw0KKyAgICAgICAgcmV0dXJuIG1fUHJvc3NpdmVTdGF0dXM7DQorICAgIH0NCisgICAgYml0cG9zID0gKGludClwU3RyZWFtLT5nZXRCaXRQb3MoKTsNCisgICAgX0ZheEc0RGVjb2RlKG1fcE1vZHVsZSwgcFN0cmVhbS0+Z2V0QnVmKCksIHBTdHJlYW0tPmdldExlbmd0aCgpLCAmYml0cG9zLCAoKiBwSW1hZ2UpLT5tX3BEYXRhLCBHQlcsIEdCSCwgKCogcEltYWdlKS0+bV9uU3RyaWRlKTsNCisgICAgcFN0cmVhbS0+c2V0Qml0UG9zKGJpdHBvcyk7DQorICAgIGZvcihpID0gMDsgKEZYX0RXT1JEKWkgPCAoKiBwSW1hZ2UpLT5tX25TdHJpZGUgKiBHQkg7IGkrKykgew0KKyAgICAgICAgKCogcEltYWdlKS0+bV9wRGF0YVtpXSA9IH4oKiBwSW1hZ2UpLT5tX3BEYXRhW2ldOw0KKyAgICB9DQorICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KKyAgICByZXR1cm4gbV9Qcm9zc2l2ZVN0YXR1czsNCit9DQorRlhDT0RFQ19TVEFUVVMgQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9NTVIoKQ0KK3sNCisgICAgcmV0dXJuIG1fUHJvc3NpdmVTdGF0dXM7DQorfQ0KK0ZYQ09ERUNfU1RBVFVTIENKQmlnMl9HUkRQcm9jOjpDb250aW51ZV9kZWNvZGUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZihtX1Byb3NzaXZlU3RhdHVzICE9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUUpIHsNCisgICAgICAgIHJldHVybiBtX1Byb3NzaXZlU3RhdHVzOw0KKyAgICB9DQorICAgIHN3aXRjaCAobV9EZWNvZGVUeXBlKSB7DQorICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZV9Bcml0aChwUGF1c2UpOw0KKyAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVfQXJpdGhfVjIocFBhdXNlKTsNCisgICAgICAgIGNhc2UgMzoNCisgICAgICAgICAgICByZXR1cm4gZGVjb2RlX0FyaXRoX1YxKHBQYXVzZSk7DQorICAgICAgICBjYXNlIDQ6DQorICAgICAgICAgICAgcmV0dXJuIGRlY29kZV9NTVIoKTsNCisgICAgfQ0KKyAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfRVJST1I7DQorICAgIHJldHVybiBtX1Byb3NzaXZlU3RhdHVzOw0KK30NCitGWENPREVDX1NUQVRVUyBDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX0FyaXRoX1RlbXBsYXRlMF9vcHQzKENKQmlnMl9JbWFnZSAqcEltYWdlLCBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhfQk9PTCBTTFRQLCBiVmFsOw0KKyAgICBGWF9EV09SRCBDT05URVhUOw0KKyAgICBGWF9EV09SRCBsaW5lMSwgbGluZTI7DQorICAgIEZYX0JZVEUgKnBMaW5lMSwgKnBMaW5lMiwgY1ZhbDsNCisgICAgRlhfSU5UMzIgblN0cmlkZSwgblN0cmlkZTIsIGs7DQorICAgIEZYX0lOVDMyIG5MaW5lQnl0ZXMsIG5CaXRzTGVmdCwgY2M7DQorICAgIGlmKG1fcExpbmUgPT0gTlVMTCkgew0KKyAgICAgICAgbV9wTGluZSA9IHBJbWFnZS0+bV9wRGF0YTsNCisgICAgfQ0KKyAgICBuU3RyaWRlID0gcEltYWdlLT5tX25TdHJpZGU7DQorICAgIG5TdHJpZGUyID0gblN0cmlkZSA8PCAxOw0KKyAgICBuTGluZUJ5dGVzID0gKChHQlcgKyA3KSA+PiAzKSAtIDE7DQorICAgIG5CaXRzTGVmdCA9IEdCVyAtIChuTGluZUJ5dGVzIDw8IDMpOw0KKyAgICBGWF9EV09SRCBoZWlnaHQgPSBHQkggJiAweDdmZmZmZmZmOw0KKyAgICBmb3IoOyBtX2xvb3BJbmRleCA8IGhlaWdodDsgbV9sb29wSW5kZXgrKykgew0KKyAgICAgICAgaWYoVFBHRE9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0WzB4OWIyNV0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIHBJbWFnZS0+Y29weUxpbmUobV9sb29wSW5kZXgsIG1fbG9vcEluZGV4IC0gMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmKG1fbG9vcEluZGV4ID4gMSkgew0KKyAgICAgICAgICAgICAgICBwTGluZTEgPSBtX3BMaW5lIC0gblN0cmlkZTI7DQorICAgICAgICAgICAgICAgIHBMaW5lMiA9IG1fcExpbmUgLSBuU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICgqcExpbmUxKyspIDw8IDY7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKnBMaW5lMisrOw0KKyAgICAgICAgICAgICAgICBDT05URVhUID0gKChsaW5lMSAmIDB4ZjgwMCkgfCAobGluZTIgJiAweDA3ZjApKTsNCisgICAgICAgICAgICAgICAgZm9yKGNjID0gMDsgY2MgPCBuTGluZUJ5dGVzOyBjYysrKSB7DQorICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8ICgoKnBMaW5lMSsrKSA8PCA2KTsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKGxpbmUyIDw8IDgpIHwgKCpwTGluZTIrKyk7DQorICAgICAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGZvcihrID0gNzsgayA+PSAwOyBrLS0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCBrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKChDT05URVhUICYgMHg3YmY3KSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMSA+PiBrKSAmIDB4MDgwMCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiBrKSAmIDB4MDAxMCkpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wTGluZVtjY10gPSBjVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUxIDw8PSA4Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA8PD0gODsNCisgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgIGZvcihrID0gMDsgayA8IG5CaXRzTGVmdDsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8ICg3IC0gayk7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKCgoQ09OVEVYVCAmIDB4N2JmNykgPDwgMSkgfCBiVmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMSA+PiAoNyAtIGspKSAmIDB4MDgwMCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyID4+ICg3IC0gaykpICYgMHgwMDEwKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wTGluZVtuTGluZUJ5dGVzXSA9IGNWYWw7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcExpbmUyID0gbV9wTGluZSAtIG5TdHJpZGU7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKG1fbG9vcEluZGV4ICYgMSkgPyAoKnBMaW5lMisrKSA6IDA7DQorICAgICAgICAgICAgICAgIENPTlRFWFQgPSAobGluZTIgJiAweDA3ZjApOw0KKyAgICAgICAgICAgICAgICBmb3IoY2MgPSAwOyBjYyA8IG5MaW5lQnl0ZXM7IGNjKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmKG1fbG9vcEluZGV4ICYgMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKGxpbmUyIDw8IDgpIHwgKCpwTGluZTIrKyk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGZvcihrID0gNzsgayA+PSAwOyBrLS0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCBrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKChDT05URVhUICYgMHg3YmY3KSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiBrKSAmIDB4MDAxMCkpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wTGluZVtjY10gPSBjVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUyIDw8PSA4Ow0KKyAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgZm9yKGsgPSAwOyBrIDwgbkJpdHNMZWZ0OyBrKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgKDcgLSBrKTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKChDT05URVhUICYgMHg3YmY3KSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyID4+ICg3IC0gaykpICYgMHgwMDEwKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wTGluZVtuTGluZUJ5dGVzXSA9IGNWYWw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wTGluZSArPSBuU3RyaWRlOw0KKyAgICAgICAgaWYocFBhdXNlICYmIHBQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgew0KKyAgICAgICAgICAgIG1fbG9vcEluZGV4Kys7DQorICAgICAgICAgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUU7DQorICAgICAgICAgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9UT0JFQ09OVElOVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9Qcm9zc2l2ZVN0YXR1cyA9IEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0g7DQorICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KK30NCitGWENPREVDX1NUQVRVUyBDSkJpZzJfR1JEUHJvYzo6ZGVjb2RlX0FyaXRoX1RlbXBsYXRlMF91bm9wdChDSkJpZzJfSW1hZ2UgKiBwSW1hZ2UsIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9CT09MIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMiwgbGluZTM7DQorICAgIGZvcig7IG1fbG9vcEluZGV4IDwgR0JIOyBtX2xvb3BJbmRleCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHg5YjI1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgcEltYWdlLT5jb3B5TGluZShtX2xvb3BJbmRleCwgbV9sb29wSW5kZXggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbGluZTEgPSBwSW1hZ2UtPmdldFBpeGVsKDEsIG1fbG9vcEluZGV4IC0gMik7DQorICAgICAgICAgICAgbGluZTEgfD0gcEltYWdlLT5nZXRQaXhlbCgwLCBtX2xvb3BJbmRleCAtIDIpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgPSBwSW1hZ2UtPmdldFBpeGVsKDIsIG1fbG9vcEluZGV4IC0gMSk7DQorICAgICAgICAgICAgbGluZTIgfD0gcEltYWdlLT5nZXRQaXhlbCgxLCBtX2xvb3BJbmRleCAtIDEpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgfD0gcEltYWdlLT5nZXRQaXhlbCgwLCBtX2xvb3BJbmRleCAtIDEpIDw8IDI7DQorICAgICAgICAgICAgbGluZTMgPSAwOw0KKyAgICAgICAgICAgIGZvcihGWF9EV09SRCB3ID0gMDsgdyA8IEdCVzsgdysrKSB7DQorICAgICAgICAgICAgICAgIGlmKFVTRVNLSVAgJiYgU0tJUC0+Z2V0UGl4ZWwodywgbV9sb29wSW5kZXgpKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSBsaW5lMzsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gcEltYWdlLT5nZXRQaXhlbCh3ICsgR0JBVFswXSwgbV9sb29wSW5kZXggKyBHQkFUWzFdKSA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMiA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBwSW1hZ2UtPmdldFBpeGVsKHcgKyBHQkFUWzJdLCBtX2xvb3BJbmRleCArIEdCQVRbM10pIDw8IDEwOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBwSW1hZ2UtPmdldFBpeGVsKHcgKyBHQkFUWzRdLCBtX2xvb3BJbmRleCArIEdCQVRbNV0pIDw8IDExOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCAxMjsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gcEltYWdlLT5nZXRQaXhlbCh3ICsgR0JBVFs2XSwgbV9sb29wSW5kZXggKyBHQkFUWzddKSA8PCAxNTsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYoYlZhbCkgew0KKyAgICAgICAgICAgICAgICAgICAgcEltYWdlLT5zZXRQaXhlbCh3LCBtX2xvb3BJbmRleCwgYlZhbCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZTEgPSAoKGxpbmUxIDw8IDEpIHwgcEltYWdlLT5nZXRQaXhlbCh3ICsgMiwgbV9sb29wSW5kZXggLSAyKSkgJiAweDA3Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBwSW1hZ2UtPmdldFBpeGVsKHcgKyAzLCBtX2xvb3BJbmRleCAtIDEpKSAmIDB4MWY7DQorICAgICAgICAgICAgICAgIGxpbmUzID0gKChsaW5lMyA8PCAxKSB8IGJWYWwpICYgMHgwZjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZihwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgbV9sb29wSW5kZXgrKzsNCisgICAgICAgICAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRTsNCisgICAgICAgICAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCisgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0g7DQorfQ0KK0ZYQ09ERUNfU1RBVFVTIENKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGhfVGVtcGxhdGUxX29wdDMoQ0pCaWcyX0ltYWdlICpwSW1hZ2UsIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9CT09MIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIEZYX0RXT1JEIGxpbmUxLCBsaW5lMjsNCisgICAgRlhfQllURSAqcExpbmUxLCAqcExpbmUyLCBjVmFsOw0KKyAgICBGWF9JTlQzMiBuU3RyaWRlLCBuU3RyaWRlMiwgazsNCisgICAgRlhfSU5UMzIgbkxpbmVCeXRlcywgbkJpdHNMZWZ0LCBjYzsNCisgICAgaWYgKCFtX3BMaW5lKSB7DQorICAgICAgICBtX3BMaW5lID0gcEltYWdlLT5tX3BEYXRhOw0KKyAgICB9DQorICAgIG5TdHJpZGUgPSBwSW1hZ2UtPm1fblN0cmlkZTsNCisgICAgblN0cmlkZTIgPSBuU3RyaWRlIDw8IDE7DQorICAgIG5MaW5lQnl0ZXMgPSAoKEdCVyArIDcpID4+IDMpIC0gMTsNCisgICAgbkJpdHNMZWZ0ID0gR0JXIC0gKG5MaW5lQnl0ZXMgPDwgMyk7DQorICAgIGZvcig7IG1fbG9vcEluZGV4IDwgR0JIOyBtX2xvb3BJbmRleCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHgwNzk1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgcEltYWdlLT5jb3B5TGluZShtX2xvb3BJbmRleCwgbV9sb29wSW5kZXggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYobV9sb29wSW5kZXggPiAxKSB7DQorICAgICAgICAgICAgICAgIHBMaW5lMSA9IG1fcExpbmUgLSBuU3RyaWRlMjsNCisgICAgICAgICAgICAgICAgcExpbmUyID0gbV9wTGluZSAtIG5TdHJpZGU7DQorICAgICAgICAgICAgICAgIGxpbmUxID0gKCpwTGluZTErKykgPDwgNDsNCisgICAgICAgICAgICAgICAgbGluZTIgPSAqcExpbmUyKys7DQorICAgICAgICAgICAgICAgIENPTlRFWFQgPSAobGluZTEgJiAweDFlMDApIHwgKChsaW5lMiA+PiAxKSAmIDB4MDFmOCk7DQorICAgICAgICAgICAgICAgIGZvcihjYyA9IDA7IGNjIDwgbkxpbmVCeXRlczsgY2MrKykgew0KKyAgICAgICAgICAgICAgICAgICAgbGluZTEgPSAobGluZTEgPDwgOCkgfCAoKCpwTGluZTErKykgPDwgNCk7DQorICAgICAgICAgICAgICAgICAgICBsaW5lMiA9IChsaW5lMiA8PCA4KSB8ICgqcExpbmUyKyspOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBmb3IoayA9IDc7IGsgPj0gMDsgay0tKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgazsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwZWZiKSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUxID4+IGspICYgMHgwMjAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTIgPj4gKGsgKyAxKSkgJiAweDAwMDgpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wTGluZVtjY10gPSBjVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUxIDw8PSA4Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA8PD0gODsNCisgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgIGZvcihrID0gMDsgayA8IG5CaXRzTGVmdDsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8ICg3IC0gayk7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwZWZiKSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTEgPj4gKDcgLSBrKSkgJiAweDAyMDApDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyID4+ICg4IC0gaykpICYgMHgwMDA4KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX3BMaW5lW25MaW5lQnl0ZXNdID0gY1ZhbDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwTGluZTIgPSBtX3BMaW5lIC0gblN0cmlkZTsNCisgICAgICAgICAgICAgICAgbGluZTIgPSAobV9sb29wSW5kZXggJiAxKSA/ICgqcExpbmUyKyspIDogMDsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCA9IChsaW5lMiA+PiAxKSAmIDB4MDFmODsNCisgICAgICAgICAgICAgICAgZm9yKGNjID0gMDsgY2MgPCBuTGluZUJ5dGVzOyBjYysrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZihtX2xvb3BJbmRleCAmIDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lMiA9IChsaW5lMiA8PCA4KSB8ICgqcExpbmUyKyspOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBmb3IoayA9IDc7IGsgPj0gMDsgay0tKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgazsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwZWZiKSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyID4+IChrICsgMSkpICYgMHgwMDA4KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fcExpbmVbY2NdID0gY1ZhbDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lMiA8PD0gODsNCisgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgIGZvcihrID0gMDsgayA8IG5CaXRzTGVmdDsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8ICg3IC0gayk7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwZWZiKSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTIgPj4gKDggLSBrKSkgJiAweDAwMDgpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fcExpbmVbbkxpbmVCeXRlc10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fcExpbmUgKz0gblN0cmlkZTsNCisgICAgICAgIGlmKHBQYXVzZSAmJiBwUGF1c2UtPk5lZWRUb1BhdXNlTm93KCkpIHsNCisgICAgICAgICAgICBtX2xvb3BJbmRleCsrOw0KKyAgICAgICAgICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KKyAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCit9DQorRlhDT0RFQ19TVEFUVVMgQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9UZW1wbGF0ZTFfdW5vcHQoQ0pCaWcyX0ltYWdlICogcEltYWdlLCBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhfQk9PTCBTTFRQLCBiVmFsOw0KKyAgICBGWF9EV09SRCBDT05URVhUOw0KKyAgICBGWF9EV09SRCBsaW5lMSwgbGluZTIsIGxpbmUzOw0KKyAgICBmb3IoRlhfRFdPUkQgaCA9IDA7IGggPCBHQkg7IGgrKykgew0KKyAgICAgICAgaWYoVFBHRE9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0WzB4MDc5NV0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIHBJbWFnZS0+Y29weUxpbmUoaCwgaCAtIDEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBsaW5lMSA9IHBJbWFnZS0+Z2V0UGl4ZWwoMiwgaCAtIDIpOw0KKyAgICAgICAgICAgIGxpbmUxIHw9IHBJbWFnZS0+Z2V0UGl4ZWwoMSwgaCAtIDIpIDw8IDE7DQorICAgICAgICAgICAgbGluZTEgfD0gcEltYWdlLT5nZXRQaXhlbCgwLCBoIC0gMikgPDwgMjsNCisgICAgICAgICAgICBsaW5lMiA9IHBJbWFnZS0+Z2V0UGl4ZWwoMiwgaCAtIDEpOw0KKyAgICAgICAgICAgIGxpbmUyIHw9IHBJbWFnZS0+Z2V0UGl4ZWwoMSwgaCAtIDEpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgfD0gcEltYWdlLT5nZXRQaXhlbCgwLCBoIC0gMSkgPDwgMjsNCisgICAgICAgICAgICBsaW5lMyA9IDA7DQorICAgICAgICAgICAgZm9yKEZYX0RXT1JEIHcgPSAwOyB3IDwgR0JXOyB3KyspIHsNCisgICAgICAgICAgICAgICAgaWYoVVNFU0tJUCAmJiBTS0lQLT5nZXRQaXhlbCh3LCBoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gbGluZTM7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IHBJbWFnZS0+Z2V0UGl4ZWwodyArIEdCQVRbMF0sIGggKyBHQkFUWzFdKSA8PCAzOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMiA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCA5Ow0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihiVmFsKSB7DQorICAgICAgICAgICAgICAgICAgICBwSW1hZ2UtPnNldFBpeGVsKHcsIGgsIGJWYWwpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUxID0gKChsaW5lMSA8PCAxKSB8IHBJbWFnZS0+Z2V0UGl4ZWwodyArIDMsIGggLSAyKSkgJiAweDBmOw0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBwSW1hZ2UtPmdldFBpeGVsKHcgKyAzLCBoIC0gMSkpICYgMHgxZjsNCisgICAgICAgICAgICAgICAgbGluZTMgPSAoKGxpbmUzIDw8IDEpIHwgYlZhbCkgJiAweDA3Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmKHBQYXVzZSAmJiBwUGF1c2UtPk5lZWRUb1BhdXNlTm93KCkpIHsNCisgICAgICAgICAgICBtX2xvb3BJbmRleCsrOw0KKyAgICAgICAgICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KKyAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCit9DQorRlhDT0RFQ19TVEFUVVMgQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9UZW1wbGF0ZTJfb3B0MyhDSkJpZzJfSW1hZ2UgKnBJbWFnZSwgQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0LCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIEZYX0JPT0wgU0xUUCwgYlZhbDsNCisgICAgRlhfRFdPUkQgQ09OVEVYVDsNCisgICAgRlhfRFdPUkQgbGluZTEsIGxpbmUyOw0KKyAgICBGWF9CWVRFICpwTGluZTEsICpwTGluZTIsIGNWYWw7DQorICAgIEZYX0lOVDMyIG5TdHJpZGUsIG5TdHJpZGUyLCBrOw0KKyAgICBGWF9JTlQzMiBuTGluZUJ5dGVzLCBuQml0c0xlZnQsIGNjOw0KKyAgICBpZighbV9wTGluZSkgew0KKyAgICAgICAgbV9wTGluZSA9IHBJbWFnZS0+bV9wRGF0YTsNCisgICAgfQ0KKyAgICBuU3RyaWRlID0gcEltYWdlLT5tX25TdHJpZGU7DQorICAgIG5TdHJpZGUyID0gblN0cmlkZSA8PCAxOw0KKyAgICBuTGluZUJ5dGVzID0gKChHQlcgKyA3KSA+PiAzKSAtIDE7DQorICAgIG5CaXRzTGVmdCA9IEdCVyAtIChuTGluZUJ5dGVzIDw8IDMpOw0KKyAgICBmb3IoOyBtX2xvb3BJbmRleCA8IEdCSDsgbV9sb29wSW5kZXgrKykgew0KKyAgICAgICAgaWYoVFBHRE9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0WzB4MDBlNV0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIHBJbWFnZS0+Y29weUxpbmUobV9sb29wSW5kZXgsIG1fbG9vcEluZGV4IC0gMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmKG1fbG9vcEluZGV4ID4gMSkgew0KKyAgICAgICAgICAgICAgICBwTGluZTEgPSBtX3BMaW5lIC0gblN0cmlkZTI7DQorICAgICAgICAgICAgICAgIHBMaW5lMiA9IG1fcExpbmUgLSBuU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICgqcExpbmUxKyspIDw8IDE7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKnBMaW5lMisrOw0KKyAgICAgICAgICAgICAgICBDT05URVhUID0gKGxpbmUxICYgMHgwMzgwKSB8ICgobGluZTIgPj4gMykgJiAweDAwN2MpOw0KKyAgICAgICAgICAgICAgICBmb3IoY2MgPSAwOyBjYyA8IG5MaW5lQnl0ZXM7IGNjKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGxpbmUxID0gKGxpbmUxIDw8IDgpIHwgKCgqcExpbmUxKyspIDw8IDEpOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZTIgPSAobGluZTIgPDwgOCkgfCAoKnBMaW5lMisrKTsNCisgICAgICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yKGsgPSA3OyBrID49IDA7IGstLSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8IGs7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4MDFiZCkgPDwgMSkgfCBiVmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMSA+PiBrKSAmIDB4MDA4MCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUyID4+IChrICsgMykpICYgMHgwMDA0KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fcExpbmVbY2NdID0gY1ZhbDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lMSA8PD0gODsNCisgICAgICAgICAgICAgICAgbGluZTIgPDw9IDg7DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBuQml0c0xlZnQ7IGsrKykgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCAoNyAtIGspOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4MDFiZCkgPDwgMSkgfCBiVmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUxID4+ICg3IC0gaykpICYgMHgwMDgwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChsaW5lMiA+PiAoMTAgLSBrKSkgJiAweDAwMDQpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fcExpbmVbbkxpbmVCeXRlc10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBMaW5lMiA9IG1fcExpbmUgLSBuU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lMiA9IChtX2xvb3BJbmRleCAmIDEpID8gKCpwTGluZTIrKykgOiAwOw0KKyAgICAgICAgICAgICAgICBDT05URVhUID0gKGxpbmUyID4+IDMpICYgMHgwMDdjOw0KKyAgICAgICAgICAgICAgICBmb3IoY2MgPSAwOyBjYyA8IG5MaW5lQnl0ZXM7IGNjKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmKG1fbG9vcEluZGV4ICYgMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUyID0gKGxpbmUyIDw8IDgpIHwgKCpwTGluZTIrKyk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGZvcihrID0gNzsgayA+PSAwOyBrLS0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCBrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKENPTlRFWFQgJiAweDAxYmQpIDw8IDEpIHwgYlZhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTIgPj4gKGsgKyAzKSkgJiAweDAwMDQpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wTGluZVtjY10gPSBjVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmUyIDw8PSA4Ow0KKyAgICAgICAgICAgICAgICBjVmFsID0gMDsNCisgICAgICAgICAgICAgICAgZm9yKGsgPSAwOyBrIDwgbkJpdHNMZWZ0OyBrKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgKDcgLSBrKTsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSAoKENPTlRFWFQgJiAweDAxYmQpIDw8IDEpIHwgYlZhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCgobGluZTIgPj4gKDEwIC0gaykpKSAmIDB4MDAwNCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wTGluZVtuTGluZUJ5dGVzXSA9IGNWYWw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wTGluZSArPSBuU3RyaWRlOw0KKyAgICAgICAgaWYocFBhdXNlICYmIG1fbG9vcEluZGV4ICUgNTAgPT0gMCAmJiBwUGF1c2UtPk5lZWRUb1BhdXNlTm93KCkpIHsNCisgICAgICAgICAgICBtX2xvb3BJbmRleCsrOw0KKyAgICAgICAgICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KKyAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCit9DQorRlhDT0RFQ19TVEFUVVMgQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9UZW1wbGF0ZTJfdW5vcHQoQ0pCaWcyX0ltYWdlICogcEltYWdlLCBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhfQk9PTCBTTFRQLCBiVmFsOw0KKyAgICBGWF9EV09SRCBDT05URVhUOw0KKyAgICBGWF9EV09SRCBsaW5lMSwgbGluZTIsIGxpbmUzOw0KKyAgICBmb3IoOyBtX2xvb3BJbmRleCA8IEdCSDsgbV9sb29wSW5kZXgrKykgew0KKyAgICAgICAgaWYoVFBHRE9OKSB7DQorICAgICAgICAgICAgU0xUUCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0WzB4MDBlNV0pOw0KKyAgICAgICAgICAgIExUUCA9IExUUCBeIFNMVFA7DQorICAgICAgICB9DQorICAgICAgICBpZihMVFAgPT0gMSkgew0KKyAgICAgICAgICAgIHBJbWFnZS0+Y29weUxpbmUobV9sb29wSW5kZXgsIG1fbG9vcEluZGV4IC0gMSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGxpbmUxID0gcEltYWdlLT5nZXRQaXhlbCgxLCBtX2xvb3BJbmRleCAtIDIpOw0KKyAgICAgICAgICAgIGxpbmUxIHw9IHBJbWFnZS0+Z2V0UGl4ZWwoMCwgbV9sb29wSW5kZXggLSAyKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmUyID0gcEltYWdlLT5nZXRQaXhlbCgxLCBtX2xvb3BJbmRleCAtIDEpOw0KKyAgICAgICAgICAgIGxpbmUyIHw9IHBJbWFnZS0+Z2V0UGl4ZWwoMCwgbV9sb29wSW5kZXggLSAxKSA8PCAxOw0KKyAgICAgICAgICAgIGxpbmUzID0gMDsNCisgICAgICAgICAgICBmb3IoRlhfRFdPUkQgdyA9IDA7IHcgPCBHQlc7IHcrKykgew0KKyAgICAgICAgICAgICAgICBpZihVU0VTS0lQICYmIFNLSVAtPmdldFBpeGVsKHcsIG1fbG9vcEluZGV4KSkgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gbGluZTM7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUIHw9IHBJbWFnZS0+Z2V0UGl4ZWwodyArIEdCQVRbMF0sIG1fbG9vcEluZGV4ICsgR0JBVFsxXSkgPDwgMjsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTIgPDwgMzsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gbGluZTEgPDwgNzsNCisgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYoYlZhbCkgew0KKyAgICAgICAgICAgICAgICAgICAgcEltYWdlLT5zZXRQaXhlbCh3LCBtX2xvb3BJbmRleCwgYlZhbCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZTEgPSAoKGxpbmUxIDw8IDEpIHwgcEltYWdlLT5nZXRQaXhlbCh3ICsgMiwgbV9sb29wSW5kZXggLSAyKSkgJiAweDA3Ow0KKyAgICAgICAgICAgICAgICBsaW5lMiA9ICgobGluZTIgPDwgMSkgfCBwSW1hZ2UtPmdldFBpeGVsKHcgKyAyLCBtX2xvb3BJbmRleCAtIDEpKSAmIDB4MGY7DQorICAgICAgICAgICAgICAgIGxpbmUzID0gKChsaW5lMyA8PCAxKSB8IGJWYWwpICYgMHgwMzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZihwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgbV9sb29wSW5kZXgrKzsNCisgICAgICAgICAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRTsNCisgICAgICAgICAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCisgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0g7DQorfQ0KK0ZYQ09ERUNfU1RBVFVTIENKQmlnMl9HUkRQcm9jOjpkZWNvZGVfQXJpdGhfVGVtcGxhdGUzX29wdDMoQ0pCaWcyX0ltYWdlICpwSW1hZ2UsIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBGWF9CT09MIFNMVFAsIGJWYWw7DQorICAgIEZYX0RXT1JEIENPTlRFWFQ7DQorICAgIEZYX0RXT1JEIGxpbmUxOw0KKyAgICBGWF9CWVRFICpwTGluZTEsIGNWYWw7DQorICAgIEZYX0lOVDMyIG5TdHJpZGUsIGs7DQorICAgIEZYX0lOVDMyIG5MaW5lQnl0ZXMsIG5CaXRzTGVmdCwgY2M7DQorICAgIGlmICghbV9wTGluZSkgew0KKyAgICAgICAgbV9wTGluZSA9IHBJbWFnZS0+bV9wRGF0YTsNCisgICAgfQ0KKyAgICBuU3RyaWRlID0gcEltYWdlLT5tX25TdHJpZGU7DQorICAgIG5MaW5lQnl0ZXMgPSAoKEdCVyArIDcpID4+IDMpIC0gMTsNCisgICAgbkJpdHNMZWZ0ID0gR0JXIC0gKG5MaW5lQnl0ZXMgPDwgMyk7DQorICAgIGZvcig7IG1fbG9vcEluZGV4IDwgR0JIOyBtX2xvb3BJbmRleCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHgwMTk1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgcEltYWdlLT5jb3B5TGluZShtX2xvb3BJbmRleCwgbV9sb29wSW5kZXggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYobV9sb29wSW5kZXggPiAwKSB7DQorICAgICAgICAgICAgICAgIHBMaW5lMSA9IG1fcExpbmUgLSBuU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICpwTGluZTErKzsNCisgICAgICAgICAgICAgICAgQ09OVEVYVCA9IChsaW5lMSA+PiAxKSAmIDB4MDNmMDsNCisgICAgICAgICAgICAgICAgZm9yKGNjID0gMDsgY2MgPCBuTGluZUJ5dGVzOyBjYysrKSB7DQorICAgICAgICAgICAgICAgICAgICBsaW5lMSA9IChsaW5lMSA8PCA4KSB8ICgqcExpbmUxKyspOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgICAgICBmb3IoayA9IDc7IGsgPj0gMDsgay0tKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBjVmFsIHw9IGJWYWwgPDwgazsNCisgICAgICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwMWY3KSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGxpbmUxID4+IChrICsgMSkpICYgMHgwMDEwKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG1fcExpbmVbY2NdID0gY1ZhbDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lMSA8PD0gODsNCisgICAgICAgICAgICAgICAgY1ZhbCA9IDA7DQorICAgICAgICAgICAgICAgIGZvcihrID0gMDsgayA8IG5CaXRzTGVmdDsgaysrKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbQ09OVEVYVF0pOw0KKyAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8ICg3IC0gayk7DQorICAgICAgICAgICAgICAgICAgICBDT05URVhUID0gKChDT05URVhUICYgMHgwMWY3KSA8PCAxKSB8IGJWYWwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgobGluZTEgPj4gKDggLSBrKSkgJiAweDAwMTApOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fcExpbmVbbkxpbmVCeXRlc10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIENPTlRFWFQgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoY2MgPSAwOyBjYyA8IG5MaW5lQnl0ZXM7IGNjKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yKGsgPSA3OyBrID49IDA7IGstLSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJWYWwgPSBwQXJpdGhEZWNvZGVyLT5ERUNPREUoJmdiQ29udGV4dFtDT05URVhUXSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgY1ZhbCB8PSBiVmFsIDw8IGs7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4MDFmNykgPDwgMSkgfCBiVmFsOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbV9wTGluZVtjY10gPSBjVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGNWYWwgPSAwOw0KKyAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBuQml0c0xlZnQ7IGsrKykgew0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgICAgIGNWYWwgfD0gYlZhbCA8PCAoNyAtIGspOw0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCA9ICgoQ09OVEVYVCAmIDB4MDFmNykgPDwgMSkgfCBiVmFsOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fcExpbmVbbkxpbmVCeXRlc10gPSBjVmFsOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fcExpbmUgKz0gblN0cmlkZTsNCisgICAgICAgIGlmKHBQYXVzZSAmJiBwUGF1c2UtPk5lZWRUb1BhdXNlTm93KCkpIHsNCisgICAgICAgICAgICBtX2xvb3BJbmRleCsrOw0KKyAgICAgICAgICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgICAgIHJldHVybiBGWENPREVDX1NUQVRVU19ERUNPREVfVE9CRUNPTlRJTlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fUHJvc3NpdmVTdGF0dXMgPSBGWENPREVDX1NUQVRVU19ERUNPREVfRklOSVNIOw0KKyAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCit9DQorRlhDT0RFQ19TVEFUVVMgQ0pCaWcyX0dSRFByb2M6OmRlY29kZV9Bcml0aF9UZW1wbGF0ZTNfdW5vcHQoQ0pCaWcyX0ltYWdlICogcEltYWdlLCBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgRlhfQk9PTCBTTFRQLCBiVmFsOw0KKyAgICBGWF9EV09SRCBDT05URVhUOw0KKyAgICBGWF9EV09SRCBsaW5lMSwgbGluZTI7DQorICAgIGZvcig7IG1fbG9vcEluZGV4IDwgR0JIOyBtX2xvb3BJbmRleCsrKSB7DQorICAgICAgICBpZihUUEdET04pIHsNCisgICAgICAgICAgICBTTFRQID0gcEFyaXRoRGVjb2Rlci0+REVDT0RFKCZnYkNvbnRleHRbMHgwMTk1XSk7DQorICAgICAgICAgICAgTFRQID0gTFRQIF4gU0xUUDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKExUUCA9PSAxKSB7DQorICAgICAgICAgICAgcEltYWdlLT5jb3B5TGluZShtX2xvb3BJbmRleCwgbV9sb29wSW5kZXggLSAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbGluZTEgPSBwSW1hZ2UtPmdldFBpeGVsKDEsIG1fbG9vcEluZGV4IC0gMSk7DQorICAgICAgICAgICAgbGluZTEgfD0gcEltYWdlLT5nZXRQaXhlbCgwLCBtX2xvb3BJbmRleCAtIDEpIDw8IDE7DQorICAgICAgICAgICAgbGluZTIgPSAwOw0KKyAgICAgICAgICAgIGZvcihGWF9EV09SRCB3ID0gMDsgdyA8IEdCVzsgdysrKSB7DQorICAgICAgICAgICAgICAgIGlmKFVTRVNLSVAgJiYgU0tJUC0+Z2V0UGl4ZWwodywgbV9sb29wSW5kZXgpKSB7DQorICAgICAgICAgICAgICAgICAgICBiVmFsID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgPSBsaW5lMjsNCisgICAgICAgICAgICAgICAgICAgIENPTlRFWFQgfD0gcEltYWdlLT5nZXRQaXhlbCh3ICsgR0JBVFswXSwgbV9sb29wSW5kZXggKyBHQkFUWzFdKSA8PCA0Ow0KKyAgICAgICAgICAgICAgICAgICAgQ09OVEVYVCB8PSBsaW5lMSA8PCA1Ow0KKyAgICAgICAgICAgICAgICAgICAgYlZhbCA9IHBBcml0aERlY29kZXItPkRFQ09ERSgmZ2JDb250ZXh0W0NPTlRFWFRdKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihiVmFsKSB7DQorICAgICAgICAgICAgICAgICAgICBwSW1hZ2UtPnNldFBpeGVsKHcsIG1fbG9vcEluZGV4LCBiVmFsKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lMSA9ICgobGluZTEgPDwgMSkgfCBwSW1hZ2UtPmdldFBpeGVsKHcgKyAyLCBtX2xvb3BJbmRleCAtIDEpKSAmIDB4MWY7DQorICAgICAgICAgICAgICAgIGxpbmUyID0gKChsaW5lMiA8PCAxKSB8IGJWYWwpICYgMHgwZjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZihwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7DQorICAgICAgICAgICAgbV9sb29wSW5kZXgrKzsNCisgICAgICAgICAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRTsNCisgICAgICAgICAgICByZXR1cm4gRlhDT0RFQ19TVEFUVVNfREVDT0RFX1RPQkVDT05USU5VRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX1Byb3NzaXZlU3RhdHVzID0gRlhDT0RFQ19TVEFUVVNfREVDT0RFX0ZJTklTSDsNCisgICAgcmV0dXJuIEZYQ09ERUNfU1RBVFVTX0RFQ09ERV9GSU5JU0g7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfR2VuZXJhbERlY29kZXIuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfR2VuZXJhbERlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODlkMGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9HZW5lcmFsRGVjb2Rlci5oCkBAIC0wLDAgKzEsMjc4IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9KQklHMl9HRU5FUkFMX0RFQ09ERVJfSF8NCisjZGVmaW5lIF9KQklHMl9HRU5FUkFMX0RFQ09ERVJfSF8NCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjX2RlZi5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2Jhc2ljLmgiDQorI2luY2x1ZGUgIkpCaWcyX0RlZmluZS5oIg0KKyNpbmNsdWRlICJKQmlnMl9TeW1ib2xEaWN0LmgiDQorI2luY2x1ZGUgIkpCaWcyX0FyaXRoRGVjb2Rlci5oIg0KKyNpbmNsdWRlICJKQmlnMl9Bcml0aEludERlY29kZXIuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNydC9meF9jb29yZGluYXRlcy5oIg0KK2NsYXNzIENKQmlnMl9IdWZmbWFuVGFibGU7DQorY2xhc3MgQ0pCaWcyX0ltYWdlOw0KK2NsYXNzIENKQmlnMl9QYXR0ZXJuRGljdDsNCit0eXBlZGVmIGVudW0gew0KKyAgICBKQklHMl9DT1JORVJfQk9UVE9NTEVGVCA9IDAsDQorICAgIEpCSUcyX0NPUk5FUl9UT1BMRUZUCT0gMSwNCisgICAgSkJJRzJfQ09STkVSX0JPVFRPTVJJR0hUID0gMiwNCisgICAgSkJJRzJfQ09STkVSX1RPUFJJR0hUCT0gMw0KK30gSkJpZzJDb3JuZXI7DQorY2xhc3MgQ0pCaWcyX0dSRFByb2MgOiBwdWJsaWMgQ0pCaWcyX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENKQmlnMl9HUkRQcm9jKCkNCisgICAgew0KKyAgICAgICAgbV9sb29wSW5kZXggPSAwOw0KKyAgICAgICAgbV9wTGluZSA9IE5VTEw7DQorICAgICAgICBtX3BQYXVzZSA9IE5VTEw7DQorICAgICAgICBtX0RlY29kZVR5cGUgPSAwOw0KKyAgICAgICAgTFRQID0gMDsNCisgICAgICAgIG1fUmVwbGFjZVJlY3QubGVmdCA9IDA7DQorICAgICAgICBtX1JlcGxhY2VSZWN0LmJvdHRvbSA9IDA7DQorICAgICAgICBtX1JlcGxhY2VSZWN0LnRvcCA9IDA7DQorICAgICAgICBtX1JlcGxhY2VSZWN0LnJpZ2h0ID0gMDsNCisgICAgfQ0KKw0KKyAgICBDSkJpZzJfSW1hZ2UgKmRlY29kZV9Bcml0aChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpOw0KKw0KKyAgICBDSkJpZzJfSW1hZ2UgKmRlY29kZV9Bcml0aF9WMihDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpOw0KKw0KKyAgICBDSkJpZzJfSW1hZ2UgKmRlY29kZV9Bcml0aF9WMShDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQpOw0KKw0KKyAgICBDSkJpZzJfSW1hZ2UgKmRlY29kZV9NTVIoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSk7DQorICAgIEZYQ09ERUNfU1RBVFVTIFN0YXJ0X2RlY29kZV9Bcml0aChDSkJpZzJfSW1hZ2UqKiBwSW1hZ2UsIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UgPSBOVUxMKTsNCisgICAgRlhDT0RFQ19TVEFUVVMgU3RhcnRfZGVjb2RlX0FyaXRoX1YyKENKQmlnMl9JbWFnZSoqIHBJbWFnZSwgQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0LCBJRlhfUGF1c2UqIHBQYXVzZSA9IE5VTEwpOw0KKyAgICBGWENPREVDX1NUQVRVUyBTdGFydF9kZWNvZGVfQXJpdGhfVjEoQ0pCaWcyX0ltYWdlKiogcEltYWdlLCBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlID0gTlVMTCk7DQorICAgIEZYQ09ERUNfU1RBVFVTIFN0YXJ0X2RlY29kZV9NTVIoQ0pCaWcyX0ltYWdlKiogcEltYWdlLCBDSkJpZzJfQml0U3RyZWFtICpwU3RyZWFtLCBJRlhfUGF1c2UqIHBQYXVzZSA9IE5VTEwpOw0KKyAgICBGWENPREVDX1NUQVRVUyBDb250aW51ZV9kZWNvZGUoSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBGWF9SRUNUCQkgICBHZXRSZXBsYWNlUmVjdCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX1JlcGxhY2VSZWN0Ow0KKyAgICB9Ow0KK3ByaXZhdGU6DQorICAgIEZYQ09ERUNfU1RBVFVTIGRlY29kZV9Bcml0aChJRlhfUGF1c2UqIHBQYXVzZSk7DQorICAgIEZYQ09ERUNfU1RBVFVTIGRlY29kZV9Bcml0aF9WMihJRlhfUGF1c2UqIHBQYXVzZSk7DQorICAgIEZYQ09ERUNfU1RBVFVTIGRlY29kZV9Bcml0aF9WMShJRlhfUGF1c2UqIHBQYXVzZSk7DQorICAgIEZYQ09ERUNfU1RBVFVTIGRlY29kZV9NTVIoKTsNCisgICAgRlhDT0RFQ19TVEFUVVMgZGVjb2RlX0FyaXRoX1RlbXBsYXRlMF9vcHQzKENKQmlnMl9JbWFnZSpwSW1hZ2UsIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBGWENPREVDX1NUQVRVUyBkZWNvZGVfQXJpdGhfVGVtcGxhdGUwX3Vub3B0KENKQmlnMl9JbWFnZSAqcEltYWdlLCBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKTsNCisgICAgRlhDT0RFQ19TVEFUVVMgZGVjb2RlX0FyaXRoX1RlbXBsYXRlMV9vcHQzKENKQmlnMl9JbWFnZSAqcEltYWdlLCBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKTsNCisgICAgRlhDT0RFQ19TVEFUVVMgZGVjb2RlX0FyaXRoX1RlbXBsYXRlMV91bm9wdChDSkJpZzJfSW1hZ2UgKiBwSW1hZ2UsIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBGWENPREVDX1NUQVRVUyBkZWNvZGVfQXJpdGhfVGVtcGxhdGUyX29wdDMoQ0pCaWcyX0ltYWdlICpwSW1hZ2UsIENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICBGWENPREVDX1NUQVRVUyBkZWNvZGVfQXJpdGhfVGVtcGxhdGUyX3Vub3B0KENKQmlnMl9JbWFnZSAqIHBJbWFnZSwgQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0LCBJRlhfUGF1c2UqIHBQYXVzZSk7DQorICAgIEZYQ09ERUNfU1RBVFVTIGRlY29kZV9Bcml0aF9UZW1wbGF0ZTNfb3B0MyhDSkJpZzJfSW1hZ2UgKnBJbWFnZSwgQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0LCBJRlhfUGF1c2UqIHBQYXVzZSk7DQorICAgIEZYQ09ERUNfU1RBVFVTIGRlY29kZV9Bcml0aF9UZW1wbGF0ZTNfdW5vcHQoQ0pCaWcyX0ltYWdlICogcEltYWdlLCBDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKTsNCisgICAgRlhfRFdPUkQJbV9sb29wSW5kZXg7DQorICAgIEZYX0JZVEUgKgltX3BMaW5lOw0KKyAgICBJRlhfUGF1c2UqCW1fcFBhdXNlOw0KKyAgICBGWENPREVDX1NUQVRVUwltX1Byb3NzaXZlU3RhdHVzOw0KKyAgICBDSkJpZzJfSW1hZ2UqKiBtX3BJbWFnZTsNCisgICAgQ0pCaWcyX0FyaXRoRGVjb2RlciAqbV9wQXJpdGhEZWNvZGVyOw0KKyAgICBKQmlnMkFyaXRoQ3R4ICptX2diQ29udGV4dDsNCisgICAgRlhfV09SRAkJbV9EZWNvZGVUeXBlOw0KKyAgICBGWF9CT09MIExUUDsNCisgICAgRlhfUkVDVCBtX1JlcGxhY2VSZWN0Ow0KK3ByaXZhdGU6DQorDQorICAgIENKQmlnMl9JbWFnZSAqZGVjb2RlX0FyaXRoX1RlbXBsYXRlMF9vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUwX29wdDIoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUwX29wdDMoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUwX3Vub3B0KENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCk7DQorDQorICAgIENKQmlnMl9JbWFnZSAqZGVjb2RlX0FyaXRoX1RlbXBsYXRlMV9vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUxX29wdDIoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUxX29wdDMoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUxX3Vub3B0KENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCk7DQorDQorICAgIENKQmlnMl9JbWFnZSAqZGVjb2RlX0FyaXRoX1RlbXBsYXRlMl9vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUyX29wdDIoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUyX29wdDMoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUyX3Vub3B0KENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCk7DQorDQorICAgIENKQmlnMl9JbWFnZSAqZGVjb2RlX0FyaXRoX1RlbXBsYXRlM19vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUzX29wdDIoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUzX29wdDMoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ2JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfQXJpdGhfVGVtcGxhdGUzX3Vub3B0KENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCk7DQorcHVibGljOg0KKyAgICBGWF9CT09MIE1NUjsNCisgICAgRlhfRFdPUkQgR0JXOw0KKyAgICBGWF9EV09SRCBHQkg7DQorICAgIEZYX0JZVEUgR0JURU1QTEFURTsNCisgICAgRlhfQk9PTCBUUEdET047DQorICAgIEZYX0JPT0wgVVNFU0tJUDsNCisgICAgQ0pCaWcyX0ltYWdlICogU0tJUDsNCisgICAgc2lnbmVkIGNoYXIgR0JBVFs4XTsNCit9Ow0KK2NsYXNzIENKQmlnMl9HUlJEUHJvYyA6IHB1YmxpYyBDSkJpZzJfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGUoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ3JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfVGVtcGxhdGUwX3Vub3B0KENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdyQ29udGV4dCk7DQorDQorICAgIENKQmlnMl9JbWFnZSAqZGVjb2RlX1RlbXBsYXRlMF9vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ3JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfVGVtcGxhdGUxX3Vub3B0KENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdyQ29udGV4dCk7DQorDQorICAgIENKQmlnMl9JbWFnZSAqZGVjb2RlX1RlbXBsYXRlMV9vcHQoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ3JDb250ZXh0KTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfVjEoQ0pCaWcyX0FyaXRoRGVjb2RlciAqcEFyaXRoRGVjb2RlciwgSkJpZzJBcml0aEN0eCAqZ3JDb250ZXh0KTsNCitwdWJsaWM6DQorICAgIEZYX0RXT1JEIEdSVzsNCisgICAgRlhfRFdPUkQgR1JIOw0KKyAgICBGWF9CT09MIEdSVEVNUExBVEU7DQorICAgIENKQmlnMl9JbWFnZSAqR1JSRUZFUkVOQ0U7DQorICAgIEZYX0lOVDMyIEdSUkVGRVJFTkNFRFg7DQorICAgIEZYX0lOVDMyIEdSUkVGRVJFTkNFRFk7DQorICAgIEZYX0JPT0wgVFBHUk9OOw0KKyAgICBzaWduZWQgY2hhcglHUkFUWzRdOw0KK307DQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICBDSkJpZzJfQXJpdGhJbnREZWNvZGVyICpJQURULA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICpJQUZTLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICpJQURTLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICpJQUlULA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICpJQVJJLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICpJQVJEVywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqSUFSREgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKklBUkRYLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICpJQVJEWTsNCisgICAgQ0pCaWcyX0FyaXRoSWFpZERlY29kZXIgKklBSUQ7DQorfSBKQmlnMkludERlY29kZXJTdGF0ZTsNCitjbGFzcyBDSkJpZzJfVFJEUHJvYyA6IHB1YmxpYyBDSkJpZzJfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfSHVmZm1hbihDSkJpZzJfQml0U3RyZWFtICpwU3RyZWFtLCBKQmlnMkFyaXRoQ3R4ICpnckNvbnRleHQpOw0KKw0KKyAgICBDSkJpZzJfSW1hZ2UgKmRlY29kZV9Bcml0aChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnckNvbnRleHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpCaWcySW50RGVjb2RlclN0YXRlICpwSURTID0gTlVMTCk7DQorcHVibGljOg0KKyAgICBGWF9CT09MIFNCSFVGRjsNCisgICAgRlhfQk9PTCBTQlJFRklORTsNCisgICAgRlhfRFdPUkQgU0JXOw0KKyAgICBGWF9EV09SRCBTQkg7DQorICAgIEZYX0RXT1JEIFNCTlVNSU5TVEFOQ0VTOw0KKyAgICBGWF9EV09SRCBTQlNUUklQUzsNCisgICAgRlhfRFdPUkQgU0JOVU1TWU1TOw0KKw0KKyAgICBKQmlnMkh1ZmZtYW5Db2RlICpTQlNZTUNPREVTOw0KKyAgICBGWF9CWVRFIFNCU1lNQ09ERUxFTjsNCisNCisgICAgQ0pCaWcyX0ltYWdlICoqU0JTWU1TOw0KKyAgICBGWF9CT09MIFNCREVGUElYRUw7DQorDQorICAgIEpCaWcyQ29tcG9zZU9wIFNCQ09NQk9QOw0KKyAgICBGWF9CT09MIFRSQU5TUE9TRUQ7DQorDQorICAgIEpCaWcyQ29ybmVyIFJFRkNPUk5FUjsNCisgICAgc2lnbmVkIGNoYXIgU0JEU09GRlNFVDsNCisgICAgQ0pCaWcyX0h1ZmZtYW5UYWJsZSAqU0JIVUZGRlMsDQorICAgICAgICAgICAgICAgICAgICAgICAgKlNCSFVGRkRTLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICpTQkhVRkZEVCwNCisgICAgICAgICAgICAgICAgICAgICAgICAqU0JIVUZGUkRXLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICpTQkhVRkZSREgsDQorICAgICAgICAgICAgICAgICAgICAgICAgKlNCSFVGRlJEWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAqU0JIVUZGUkRZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICpTQkhVRkZSU0laRTsNCisgICAgRlhfQk9PTCBTQlJURU1QTEFURTsNCisgICAgc2lnbmVkIGNoYXIgU0JSQVRbNF07DQorfTsNCitjbGFzcyBDSkJpZzJfU0REUHJvYyA6IHB1YmxpYyBDSkJpZzJfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0pCaWcyX1N5bWJvbERpY3QgKmRlY29kZV9Bcml0aChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIEpCaWcyQXJpdGhDdHggKmdyQ29udGV4dCk7DQorDQorICAgIENKQmlnMl9TeW1ib2xEaWN0ICpkZWNvZGVfSHVmZm1hbihDSkJpZzJfQml0U3RyZWFtICpwU3RyZWFtLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIEpCaWcyQXJpdGhDdHggKmdyQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KK3B1YmxpYzoNCisgICAgRlhfQk9PTCBTREhVRkY7DQorICAgIEZYX0JPT0wgU0RSRUZBR0c7DQorICAgIEZYX0RXT1JEIFNETlVNSU5TWU1TOw0KKyAgICBDSkJpZzJfSW1hZ2UgKiogU0RJTlNZTVM7DQorICAgIEZYX0RXT1JEIFNETlVNTkVXU1lNUzsNCisgICAgRlhfRFdPUkQgU0ROVU1FWFNZTVM7DQorICAgIENKQmlnMl9IdWZmbWFuVGFibGUgKlNESFVGRkRILA0KKyAgICAgICAgICAgICAgICAgICAgICAgICpTREhVRkZEVywNCisgICAgICAgICAgICAgICAgICAgICAgICAqU0RIVUZGQk1TSVpFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICpTREhVRkZBR0dJTlNUOw0KKyAgICBGWF9CWVRFIFNEVEVNUExBVEU7DQorICAgIHNpZ25lZCBjaGFyIFNEQVRbOF07DQorICAgIEZYX0JPT0wgU0RSVEVNUExBVEU7DQorICAgIHNpZ25lZCBjaGFyIFNEUkFUWzRdOw0KK307DQorY2xhc3MgQ0pCaWcyX0hUUkRQcm9jIDogcHVibGljIENKQmlnMl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDSkJpZzJfSW1hZ2UgKmRlY29kZV9Bcml0aChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisgICAgQ0pCaWcyX0ltYWdlICpkZWNvZGVfTU1SKENKQmlnMl9CaXRTdHJlYW0gKnBTdHJlYW0sIElGWF9QYXVzZSogcFBhdXNlKTsNCitwdWJsaWM6DQorICAgIEZYX0RXT1JEIEhCVywNCisgICAgICAgICAgICAgSEJIOw0KKyAgICBGWF9CT09MIEhNTVI7DQorICAgIEZYX0JZVEUgSFRFTVBMQVRFOw0KKyAgICBGWF9EV09SRCBITlVNUEFUUzsNCisgICAgQ0pCaWcyX0ltYWdlICoqSFBBVFM7DQorICAgIEZYX0JPT0wgSERFRlBJWEVMOw0KKyAgICBKQmlnMkNvbXBvc2VPcCBIQ09NQk9QOw0KKyAgICBGWF9CT09MIEhFTkFCTEVTS0lQOw0KKyAgICBGWF9EV09SRCBIR1csDQorICAgICAgICAgICAgIEhHSDsNCisgICAgRlhfSU5UMzIgSEdYLA0KKyAgICAgICAgICAgICBIR1k7DQorICAgIEZYX1dPUkQgSFJYLA0KKyAgICAgICAgICAgIEhSWTsNCisgICAgRlhfQllURSBIUFcsDQorICAgICAgICAgICAgSFBIOw0KK307DQorY2xhc3MgQ0pCaWcyX1BERFByb2MgOiBwdWJsaWMgQ0pCaWcyX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENKQmlnMl9QYXR0ZXJuRGljdCAqZGVjb2RlX0FyaXRoKENKQmlnMl9Bcml0aERlY29kZXIgKnBBcml0aERlY29kZXIsIEpCaWcyQXJpdGhDdHggKmdiQ29udGV4dCwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KKw0KKyAgICBDSkJpZzJfUGF0dGVybkRpY3QgKmRlY29kZV9NTVIoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KK3B1YmxpYzoNCisgICAgRlhfQk9PTCBIRE1NUjsNCisgICAgRlhfQllURSBIRFBXLA0KKyAgICAgICAgICAgIEhEUEg7DQorICAgIEZYX0RXT1JEIEdSQVlNQVg7DQorICAgIEZYX0JZVEUgSERURU1QTEFURTsNCit9Ow0KK2NsYXNzIENKQmlnMl9HU0lEUHJvYyA6IHB1YmxpYyBDSkJpZzJfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgRlhfRFdPUkQgKmRlY29kZV9Bcml0aChDSkJpZzJfQXJpdGhEZWNvZGVyICpwQXJpdGhEZWNvZGVyLCBKQmlnMkFyaXRoQ3R4ICpnYkNvbnRleHQsIElGWF9QYXVzZSogcFBhdXNlKTsNCisNCisgICAgRlhfRFdPUkQgKmRlY29kZV9NTVIoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSwgSUZYX1BhdXNlKiBwUGF1c2UpOw0KK3B1YmxpYzoNCisgICAgRlhfQk9PTCBHU01NUjsNCisgICAgRlhfQk9PTCBHU1VTRVNLSVA7DQorICAgIEZYX0JZVEUgR1NCUFA7DQorICAgIEZYX0RXT1JEIEdTVywNCisgICAgICAgICAgICAgR1NIOw0KKyAgICBGWF9CWVRFIEdTVEVNUExBVEU7DQorICAgIENKQmlnMl9JbWFnZSAqR1NLSVA7DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0h1ZmZtYW5EZWNvZGVyLmNwcCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfSHVmZm1hbkRlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxOTlmZTcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0h1ZmZtYW5EZWNvZGVyLmNwcApAQCAtMCwwICsxLDU1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiSkJpZzJfSHVmZm1hbkRlY29kZXIuaCINCitDSkJpZzJfSHVmZm1hbkRlY29kZXI6OkNKQmlnMl9IdWZmbWFuRGVjb2RlcihDSkJpZzJfQml0U3RyZWFtICpwU3RyZWFtKQ0KK3sNCisgICAgbV9wU3RyZWFtID0gcFN0cmVhbTsNCit9DQorQ0pCaWcyX0h1ZmZtYW5EZWNvZGVyOjp+Q0pCaWcyX0h1ZmZtYW5EZWNvZGVyKCkNCit7DQorfQ0KK2ludCBDSkJpZzJfSHVmZm1hbkRlY29kZXI6OmRlY29kZUFWYWx1ZShDSkJpZzJfSHVmZm1hblRhYmxlICpwVGFibGUsIGludCAqblJlc3VsdCkNCit7DQorICAgIGludCBuVmFsLCBuVG1wLCBpLCBuQml0czsNCisgICAgblZhbCA9IDA7DQorICAgIG5CaXRzID0gMDsNCisgICAgd2hpbGUoMSkgew0KKyAgICAgICAgaWYobV9wU3RyZWFtLT5yZWFkMUJpdCgmblRtcCkgPT0gLTEpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgICAgICBuVmFsID0gKG5WYWwgPDwgMSkgfCBuVG1wOw0KKyAgICAgICAgbkJpdHMgKys7DQorICAgICAgICBmb3IoaSA9IDA7IGkgPCBwVGFibGUtPk5URU1QOyBpKyspIHsNCisgICAgICAgICAgICBpZigocFRhYmxlLT5QUkVGTEVOW2ldID09IG5CaXRzKSAmJiAocFRhYmxlLT5DT0RFU1tpXSA9PSBuVmFsKSkgew0KKyAgICAgICAgICAgICAgICBpZigocFRhYmxlLT5IVE9PQiA9PSAxKSAmJiAoaSA9PSBwVGFibGUtPk5URU1QIC0gMSkpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKQklHMl9PT0I7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYobV9wU3RyZWFtLT5yZWFkTkJpdHMocFRhYmxlLT5SQU5HRUxFTltpXSwgJm5UbXApID09IC0xKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYocFRhYmxlLT5IVE9PQikgew0KKyAgICAgICAgICAgICAgICAgICAgaWYoaSA9PSBwVGFibGUtPk5URU1QIC0gMykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpuUmVzdWx0ID0gcFRhYmxlLT5SQU5HRUxPV1tpXSAtIG5UbXA7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpuUmVzdWx0ID0gcFRhYmxlLT5SQU5HRUxPV1tpXSArIG5UbXA7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBpZihpID09IHBUYWJsZS0+TlRFTVAgLSAyKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgKm5SZXN1bHQgPSBwVGFibGUtPlJBTkdFTE9XW2ldIC0gblRtcDsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgKm5SZXN1bHQgPSBwVGFibGUtPlJBTkdFTE9XW2ldICsgblRtcDsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gLTI7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfSHVmZm1hbkRlY29kZXIuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfSHVmZm1hbkRlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGIyMDIxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9IdWZmbWFuRGVjb2Rlci5oCkBAIC0wLDAgKzEsMjQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0pCSUcyX0hVRkZNQU5fREVDT0RFUl9IXw0KKyNkZWZpbmUgX0pCSUcyX0hVRkZNQU5fREVDT0RFUl9IXw0KKyNpbmNsdWRlICJKQmlnMl9CaXRTdHJlYW0uaCINCisjaW5jbHVkZSAiSkJpZzJfSHVmZm1hblRhYmxlLmgiDQorY2xhc3MgQ0pCaWcyX0h1ZmZtYW5EZWNvZGVyIDogcHVibGljIENKQmlnMl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDSkJpZzJfSHVmZm1hbkRlY29kZXIoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSk7DQorDQorICAgIH5DSkJpZzJfSHVmZm1hbkRlY29kZXIoKTsNCisNCisgICAgaW50IGRlY29kZUFWYWx1ZShDSkJpZzJfSHVmZm1hblRhYmxlICpwVGFibGUsIGludCAqblJlc3VsdCk7DQorcHJpdmF0ZToNCisNCisgICAgQ0pCaWcyX0JpdFN0cmVhbSAqbV9wU3RyZWFtOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9IdWZmbWFuVGFibGUuY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9IdWZmbWFuVGFibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNGE1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0h1ZmZtYW5UYWJsZS5jcHAKQEAgLTAsMCArMSwxOTMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICJKQmlnMl9IdWZmbWFuVGFibGUuaCINCisjaW5jbHVkZSAiSkJpZzJfQml0U3RyZWFtLmgiDQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKw0KK0NKQmlnMl9IdWZmbWFuVGFibGU6OkNKQmlnMl9IdWZmbWFuVGFibGUoY29uc3QgSkJpZzJUYWJsZUxpbmUgKnBUYWJsZSwgaW50IG5MaW5lcywNCisgICAgICAgIEZYX0JPT0wgYkhUT09CKQ0KK3sNCisgICAgaW5pdCgpOw0KKyAgICBtX2JPSyA9IHBhcnNlRnJvbVN0YW5kYXJkVGFibGUocFRhYmxlLCBuTGluZXMsIGJIVE9PQik7DQorfQ0KKw0KK0NKQmlnMl9IdWZmbWFuVGFibGU6OkNKQmlnMl9IdWZmbWFuVGFibGUoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSkNCit7DQorICAgIGluaXQoKTsNCisgICAgbV9iT0sgPSBwYXJzZUZyb21Db2RlZEJ1ZmZlcihwU3RyZWFtKTsNCit9DQorDQorQ0pCaWcyX0h1ZmZtYW5UYWJsZTo6fkNKQmlnMl9IdWZmbWFuVGFibGUoKQ0KK3sNCisgICAgaWYoQ09ERVMpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShDT0RFUyk7DQorICAgIH0NCisgICAgaWYoUFJFRkxFTikgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKFBSRUZMRU4pOw0KKyAgICB9DQorICAgIGlmKFJBTkdFTEVOKSB7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoUkFOR0VMRU4pOw0KKyAgICB9DQorICAgIGlmKFJBTkdFTE9XKSB7DQorICAgICAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoUkFOR0VMT1cpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0pCaWcyX0h1ZmZtYW5UYWJsZTo6aW5pdCgpDQorew0KKyAgICBIVE9PQiA9IEZBTFNFOw0KKyAgICBOVEVNUCA9IDA7DQorICAgIENPREVTID0gTlVMTDsNCisgICAgUFJFRkxFTiA9IE5VTEw7DQorICAgIFJBTkdFTEVOID0gTlVMTDsNCisgICAgUkFOR0VMT1cgPSBOVUxMOw0KK30NCitpbnQgQ0pCaWcyX0h1ZmZtYW5UYWJsZTo6cGFyc2VGcm9tU3RhbmRhcmRUYWJsZShjb25zdCBKQmlnMlRhYmxlTGluZSAqcFRhYmxlLCBpbnQgbkxpbmVzLCBGWF9CT09MIGJIVE9PQikNCit7DQorICAgIGludCBDVVJMRU4sIExFTk1BWCwgQ1VSQ09ERSwgQ1VSVEVNUCwgaTsNCisgICAgaW50ICpMRU5DT1VOVDsNCisgICAgaW50ICpGSVJTVENPREU7DQorICAgIEhUT09CID0gYkhUT09COw0KKyAgICBOVEVNUCA9IG5MaW5lczsNCisgICAgQ09ERVMgPSAoaW50KiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKGludCksIE5URU1QKTsNCisgICAgUFJFRkxFTiA9IChpbnQqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihzaXplb2YoaW50KSwgTlRFTVApOw0KKyAgICBSQU5HRUxFTiA9IChpbnQqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihzaXplb2YoaW50KSwgTlRFTVApOw0KKyAgICBSQU5HRUxPVyA9IChpbnQqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihzaXplb2YoaW50KSwgTlRFTVApOw0KKyAgICBMRU5NQVggPSAwOw0KKyAgICBmb3IoaSA9IDA7IGkgPCBOVEVNUDsgaSsrKSB7DQorICAgICAgICBQUkVGTEVOW2ldID0gcFRhYmxlW2ldLlBSRUZMRU47DQorICAgICAgICBSQU5HRUxFTltpXSA9IHBUYWJsZVtpXS5SQU5ERUxFTjsNCisgICAgICAgIFJBTkdFTE9XW2ldID0gcFRhYmxlW2ldLlJBTkdFTE9XOw0KKyAgICAgICAgaWYoUFJFRkxFTltpXSA+IExFTk1BWCkgew0KKyAgICAgICAgICAgIExFTk1BWCA9IFBSRUZMRU5baV07DQorICAgICAgICB9DQorICAgIH0NCisgICAgTEVOQ09VTlQgPSAoaW50KiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKGludCksIChMRU5NQVggKyAxKSk7DQorICAgIEpCSUcyX21lbXNldChMRU5DT1VOVCwgMCwgc2l6ZW9mKGludCkgKiAoTEVOTUFYICsgMSkpOw0KKyAgICBGSVJTVENPREUgPSAoaW50KiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKGludCksIChMRU5NQVggKyAxKSk7DQorICAgIGZvcihpID0gMDsgaSA8IE5URU1QOyBpKyspIHsNCisgICAgICAgIExFTkNPVU5UW1BSRUZMRU5baV1dICsrOw0KKyAgICB9DQorICAgIENVUkxFTiA9IDE7DQorICAgIEZJUlNUQ09ERVswXSA9IDA7DQorICAgIExFTkNPVU5UWzBdICA9IDA7DQorICAgIHdoaWxlKENVUkxFTiA8PSBMRU5NQVgpIHsNCisgICAgICAgIEZJUlNUQ09ERVtDVVJMRU5dID0gKEZJUlNUQ09ERVtDVVJMRU4gLSAxXSArIExFTkNPVU5UW0NVUkxFTiAtIDFdKSA8PCAxOw0KKyAgICAgICAgQ1VSQ09ERSA9IEZJUlNUQ09ERVtDVVJMRU5dOw0KKyAgICAgICAgQ1VSVEVNUCA9IDA7DQorICAgICAgICB3aGlsZShDVVJURU1QIDwgTlRFTVApIHsNCisgICAgICAgICAgICBpZihQUkVGTEVOW0NVUlRFTVBdID09IENVUkxFTikgew0KKyAgICAgICAgICAgICAgICBDT0RFU1tDVVJURU1QXSA9IENVUkNPREU7DQorICAgICAgICAgICAgICAgIENVUkNPREUgPSBDVVJDT0RFICsgMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgQ1VSVEVNUCA9IENVUlRFTVAgKyAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1VSTEVOID0gQ1VSTEVOICsgMTsNCisgICAgfQ0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoTEVOQ09VTlQpOw0KKyAgICBtX3BNb2R1bGUtPkpCaWcyX0ZyZWUoRklSU1RDT0RFKTsNCisgICAgcmV0dXJuIDE7DQorfQ0KKw0KKyNkZWZpbmUgSFRfQ0hFQ0tfTUVNT1JZX0FESlVTVAkJCVwNCisgICAgaWYoTlRFTVAgPj0gblNpemUpCVwNCisgICAgewlcDQorICAgICAgICBuU2l6ZSArPSAxNjsJXA0KKyAgICAgICAgUFJFRkxFTiAgPSAoaW50KiltX3BNb2R1bGUtPkpCaWcyX1JlYWxsb2MoUFJFRkxFTixzaXplb2YoaW50KSpuU2l6ZSk7CVwNCisgICAgICAgIFJBTkdFTEVOID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9SZWFsbG9jKFJBTkdFTEVOLHNpemVvZihpbnQpKm5TaXplKTsJXA0KKyAgICAgICAgUkFOR0VMT1cgPSAoaW50KiltX3BNb2R1bGUtPkpCaWcyX1JlYWxsb2MoUkFOR0VMT1csc2l6ZW9mKGludCkqblNpemUpOwlcDQorICAgIH0NCitpbnQgQ0pCaWcyX0h1ZmZtYW5UYWJsZTo6cGFyc2VGcm9tQ29kZWRCdWZmZXIoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSkNCit7DQorICAgIHVuc2lnbmVkIGNoYXIgSFRQUywgSFRSUzsNCisgICAgaW50IEhUTE9XLCBIVEhJR0g7DQorICAgIGludCBDVVJSQU5HRUxPVzsNCisgICAgaW50IG5TaXplID0gMTY7DQorICAgIGludCBDVVJMRU4sIExFTk1BWCwgQ1VSQ09ERSwgQ1VSVEVNUCwgaTsNCisgICAgaW50ICpMRU5DT1VOVDsNCisgICAgaW50ICpGSVJTVENPREU7DQorICAgIHVuc2lnbmVkIGNoYXIgY1RlbXA7DQorICAgIGlmKHBTdHJlYW0tPnJlYWQxQnl0ZSgmY1RlbXApID09IC0xKSB7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBIVE9PQiA9IGNUZW1wICYgMHgwMTsNCisgICAgSFRQUyAgPSAoKGNUZW1wID4+IDEpICYgMHgwNykgKyAxOw0KKyAgICBIVFJTICA9ICgoY1RlbXAgPj4gNCkgJiAweDA3KSArIDE7DQorICAgIGlmKHBTdHJlYW0tPnJlYWRJbnRlZ2VyKChGWF9EV09SRCopJkhUTE9XKSA9PSAtMSB8fA0KKyAgICAgICAgICAgIHBTdHJlYW0tPnJlYWRJbnRlZ2VyKChGWF9EV09SRCopJkhUSElHSCkgPT0gLTEpIHsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIFBSRUZMRU4gID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCBuU2l6ZSk7DQorICAgIFJBTkdFTEVOID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCBuU2l6ZSk7DQorICAgIFJBTkdFTE9XID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCBuU2l6ZSk7DQorICAgIENVUlJBTkdFTE9XID0gSFRMT1c7DQorICAgIE5URU1QID0gMDsNCisgICAgZG8gew0KKyAgICAgICAgSFRfQ0hFQ0tfTUVNT1JZX0FESlVTVA0KKyAgICAgICAgaWYoKHBTdHJlYW0tPnJlYWROQml0cyhIVFBTLCAmUFJFRkxFTltOVEVNUF0pID09IC0xKQ0KKyAgICAgICAgICAgICAgICB8fCAocFN0cmVhbS0+cmVhZE5CaXRzKEhUUlMsICZSQU5HRUxFTltOVEVNUF0pID09IC0xKSkgew0KKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgUkFOR0VMT1dbTlRFTVBdID0gQ1VSUkFOR0VMT1c7DQorICAgICAgICBDVVJSQU5HRUxPVyA9IENVUlJBTkdFTE9XICsgKDEgPDwgUkFOR0VMRU5bTlRFTVBdKTsNCisgICAgICAgIE5URU1QID0gTlRFTVAgKyAxOw0KKyAgICB9IHdoaWxlKENVUlJBTkdFTE9XIDwgSFRISUdIKTsNCisgICAgSFRfQ0hFQ0tfTUVNT1JZX0FESlVTVA0KKyAgICBpZihwU3RyZWFtLT5yZWFkTkJpdHMoSFRQUywgJlBSRUZMRU5bTlRFTVBdKSA9PSAtMSkgew0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgUkFOR0VMRU5bTlRFTVBdID0gMzI7DQorICAgIFJBTkdFTE9XW05URU1QXSA9IEhUTE9XIC0gMTsNCisgICAgTlRFTVAgPSBOVEVNUCArIDE7DQorICAgIEhUX0NIRUNLX01FTU9SWV9BREpVU1QNCisgICAgaWYocFN0cmVhbS0+cmVhZE5CaXRzKEhUUFMsICZQUkVGTEVOW05URU1QXSkgPT0gLTEpIHsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIFJBTkdFTEVOW05URU1QXSA9IDMyOw0KKyAgICBSQU5HRUxPV1tOVEVNUF0gPSBIVEhJR0g7DQorICAgIE5URU1QID0gTlRFTVAgKyAxOw0KKyAgICBpZihIVE9PQikgew0KKyAgICAgICAgSFRfQ0hFQ0tfTUVNT1JZX0FESlVTVA0KKyAgICAgICAgaWYocFN0cmVhbS0+cmVhZE5CaXRzKEhUUFMsICZQUkVGTEVOW05URU1QXSkgPT0gLTEpIHsNCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgICAgIH0NCisgICAgICAgIE5URU1QID0gTlRFTVAgKyAxOw0KKyAgICB9DQorICAgIENPREVTID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCBOVEVNUCk7DQorICAgIExFTk1BWCA9IDA7DQorICAgIGZvcihpID0gMDsgaSA8IE5URU1QOyBpKyspIHsNCisgICAgICAgIGlmKFBSRUZMRU5baV0gPiBMRU5NQVgpIHsNCisgICAgICAgICAgICBMRU5NQVggPSBQUkVGTEVOW2ldOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIExFTkNPVU5UID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCAoTEVOTUFYICsgMSkpOw0KKyAgICBKQklHMl9tZW1zZXQoTEVOQ09VTlQsIDAsIHNpemVvZihpbnQpICogKExFTk1BWCArIDEpKTsNCisgICAgRklSU1RDT0RFID0gKGludCopbV9wTW9kdWxlLT5KQmlnMl9NYWxsb2MyKHNpemVvZihpbnQpLCAoTEVOTUFYICsgMSkpOw0KKyAgICBmb3IoaSA9IDA7IGkgPCBOVEVNUDsgaSsrKSB7DQorICAgICAgICBMRU5DT1VOVFtQUkVGTEVOW2ldXSArKzsNCisgICAgfQ0KKyAgICBDVVJMRU4gPSAxOw0KKyAgICBGSVJTVENPREVbMF0gPSAwOw0KKyAgICBMRU5DT1VOVFswXSAgPSAwOw0KKyAgICB3aGlsZShDVVJMRU4gPD0gTEVOTUFYKSB7DQorICAgICAgICBGSVJTVENPREVbQ1VSTEVOXSA9IChGSVJTVENPREVbQ1VSTEVOIC0gMV0gKyBMRU5DT1VOVFtDVVJMRU4gLSAxXSkgPDwgMTsNCisgICAgICAgIENVUkNPREUgPSBGSVJTVENPREVbQ1VSTEVOXTsNCisgICAgICAgIENVUlRFTVAgPSAwOw0KKyAgICAgICAgd2hpbGUoQ1VSVEVNUCA8IE5URU1QKSB7DQorICAgICAgICAgICAgaWYoUFJFRkxFTltDVVJURU1QXSA9PSBDVVJMRU4pIHsNCisgICAgICAgICAgICAgICAgQ09ERVNbQ1VSVEVNUF0gPSBDVVJDT0RFOw0KKyAgICAgICAgICAgICAgICBDVVJDT0RFID0gQ1VSQ09ERSArIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENVUlRFTVAgPSBDVVJURU1QICsgMTsNCisgICAgICAgIH0NCisgICAgICAgIENVUkxFTiA9IENVUkxFTiArIDE7DQorICAgIH0NCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKExFTkNPVU5UKTsNCisgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEZJUlNUQ09ERSk7DQorICAgIHJldHVybiBUUlVFOw0KK2ZhaWxlZDoNCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0h1ZmZtYW5UYWJsZS5oIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9IdWZmbWFuVGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjA1MWMyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9IdWZmbWFuVGFibGUuaApAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9KQklHMl9IVUZGTUFOX1RBQkxFX0hfDQorI2RlZmluZSBfSkJJRzJfSFVGRk1BTl9UQUJMRV9IXw0KKyNpbmNsdWRlICJKQmlnMl9Nb2R1bGUuaCINCisjaW5jbHVkZSAiSkJpZzJfSHVmZm1hblRhYmxlX1N0YW5kYXJkLmgiDQorI2luY2x1ZGUgIkpCaWcyX0JpdFN0cmVhbS5oIg0KK2NsYXNzIENKQmlnMl9IdWZmbWFuVGFibGUgOiBwdWJsaWMgQ0pCaWcyX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENKQmlnMl9IdWZmbWFuVGFibGUoY29uc3QgSkJpZzJUYWJsZUxpbmUgKnBUYWJsZSwgaW50IG5MaW5lcywgRlhfQk9PTCBiSFRPT0IpOw0KKw0KKyAgICBDSkJpZzJfSHVmZm1hblRhYmxlKENKQmlnMl9CaXRTdHJlYW0gKnBTdHJlYW0pOw0KKw0KKyAgICB+Q0pCaWcyX0h1ZmZtYW5UYWJsZSgpOw0KKw0KKyAgICB2b2lkIGluaXQoKTsNCisNCisgICAgaW50IHBhcnNlRnJvbVN0YW5kYXJkVGFibGUoY29uc3QgSkJpZzJUYWJsZUxpbmUgKnBUYWJsZSwgaW50IG5MaW5lcywgRlhfQk9PTCBiSFRPT0IpOw0KKw0KKyAgICBpbnQgcGFyc2VGcm9tQ29kZWRCdWZmZXIoQ0pCaWcyX0JpdFN0cmVhbSAqcFN0cmVhbSk7DQorDQorICAgIEZYX0JPT0wgaXNPSygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JPSzsNCisgICAgfQ0KK3ByaXZhdGU6DQorICAgIEZYX0JPT0wgSFRPT0I7DQorICAgIGludCBOVEVNUDsNCisgICAgaW50ICpDT0RFUzsNCisgICAgaW50ICpQUkVGTEVOOw0KKyAgICBpbnQgKlJBTkdFTEVOOw0KKyAgICBpbnQgKlJBTkdFTE9XOw0KKyAgICBGWF9CT09MIG1fYk9LOw0KKyAgICBmcmllbmQgY2xhc3MgQ0pCaWcyX0h1ZmZtYW5EZWNvZGVyOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9IdWZmbWFuVGFibGVfU3RhbmRhcmQuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfSHVmZm1hblRhYmxlX1N0YW5kYXJkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYxMTQzNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfSHVmZm1hblRhYmxlX1N0YW5kYXJkLmgKQEAgLTAsMCArMSwyNTEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0pCSUcyX0hVRkZNQU5fVEFCTEVfU1RBTkRBUkRfSF8NCisjZGVmaW5lIF9KQklHMl9IVUZGTUFOX1RBQkxFX1NUQU5EQVJEX0hfDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICBpbnQgUFJFRkxFTjsNCisgICAgaW50IFJBTkRFTEVOOw0KKyAgICBpbnQgUkFOR0VMT1c7DQorfSBKQmlnMlRhYmxlTGluZTsNCitjb25zdCBGWF9CT09MIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMSA9IEZBTFNFOw0KK2NvbnN0IEpCaWcyVGFibGVMaW5lIEh1ZmZtYW5UYWJsZV9CMVtdID0gew0KKyAgICB7IDEsCTQsCQkwIH0sDQorICAgIHsgMiwJOCwJICAgMTYgfSwNCisgICAgeyAzLCAgIDE2LAkgIDI3MiB9LA0KKyAgICB7IDAsICAgMzIsCSAgIC0xIH0sDQorICAgIHsgMywgICAzMiwJNjU4MDggfQ0KK307DQorY29uc3QgRlhfQk9PTCBIdWZmbWFuVGFibGVfSFRPT0JfQjIgPSBUUlVFOw0KK2NvbnN0IEpCaWcyVGFibGVMaW5lIEh1ZmZtYW5UYWJsZV9CMltdID0gew0KKyAgICB7IDEsCTAsCQkwIH0sDQorICAgIHsgMiwJMCwJCTEgfSwNCisgICAgeyAzLAkwLAkJMiB9LA0KKyAgICB7IDQsCTMsCQkzIH0sDQorICAgIHsgNSwJNiwJICAgMTEgfSwNCisgICAgeyAwLCAgIDMyLAkgICAtMSB9LA0KKyAgICB7IDYsICAgMzIsICAgICA3NSB9LA0KKyAgICB7IDYsCTAsICAgICAgMCB9DQorfTsNCitjb25zdCBGWF9CT09MIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMyA9IFRSVUU7DQorY29uc3QgSkJpZzJUYWJsZUxpbmUgSHVmZm1hblRhYmxlX0IzW10gPSB7DQorICAgIHsgOCwJOCwgICAtMjU2IH0sDQorICAgIHsgMSwJMCwJCTAgfSwNCisgICAgeyAyLAkwLAkJMSB9LA0KKyAgICB7IDMsCTAsCQkyIH0sDQorICAgIHsgNCwJMywJCTMgfSwNCisgICAgeyA1LAk2LAkgICAxMSB9LA0KKyAgICB7IDgsICAgMzIsICAgLTI1NyB9LA0KKyAgICB7IDcsICAgMzIsICAgICA3NSB9LA0KKyAgICB7IDYsCTAsCQkwIH0NCit9Ow0KK2NvbnN0IEZYX0JPT0wgSHVmZm1hblRhYmxlX0hUT09CX0I0ID0gRkFMU0U7DQorY29uc3QgSkJpZzJUYWJsZUxpbmUgSHVmZm1hblRhYmxlX0I0W10gPSB7DQorICAgIHsgMSwJMCwJCTEgfSwNCisgICAgeyAyLAkwLAkJMiB9LA0KKyAgICB7IDMsCTAsCQkzIH0sDQorICAgIHsgNCwJMywJCTQgfSwNCisgICAgeyA1LAk2LAkgICAxMiB9LA0KKyAgICB7IDAsICAgMzIsICAgICAtMSB9LA0KKyAgICB7IDUsICAgMzIsCSAgIDc2IH0sDQorfTsNCitjb25zdCBGWF9CT09MIEh1ZmZtYW5UYWJsZV9IVE9PQl9CNSA9IEZBTFNFOw0KK2NvbnN0IEpCaWcyVGFibGVMaW5lIEh1ZmZtYW5UYWJsZV9CNVtdID0gew0KKyAgICB7IDcsCTgsCSAtMjU1IH0sDQorICAgIHsgMSwJMCwJICAgIDEgfSwNCisgICAgeyAyLAkwLAkgICAgMiB9LA0KKyAgICB7IDMsICAgIDAsICAgICAgMyB9LA0KKyAgICB7IDQsCTMsCSAgICA0IH0sDQorICAgIHsgNSwJNiwJICAgMTIgfSwNCisgICAgeyA3LCAgIDMyLCAgIC0yNTYgfSwNCisgICAgeyA2LCAgIDMyLCAgICAgNzYgfQ0KK307DQorY29uc3QgRlhfQk9PTCBIdWZmbWFuVGFibGVfSFRPT0JfQjYgPSBGQUxTRTsNCitjb25zdCBKQmlnMlRhYmxlTGluZSBIdWZmbWFuVGFibGVfQjZbXSA9IHsNCisgICAgeyA1LCAgIDEwLAktMjA0OCB9LA0KKyAgICB7IDQsICAgIDksCS0xMDI0IH0sDQorICAgIHsgNCwJOCwJIC01MTIgfSwNCisgICAgeyA0LAk3LAkgLTI1NiB9LA0KKyAgICB7IDUsCTYsCSAtMTI4IH0sDQorICAgIHsgNSwJNSwJICAtNjQgfSwNCisgICAgeyA0LAk1LAkgIC0zMiB9LA0KKyAgICB7IDIsCTcsCQkwIH0sDQorICAgIHsgMywJNywJICAxMjggfSwNCisgICAgeyAzLAk4LAkgIDI1NiB9LA0KKyAgICB7IDQsCTksCSAgNTEyIH0sDQorICAgIHsgNCwgICAxMCwJIDEwMjQgfSwNCisgICAgeyA2LCAgIDMyLAktMjA0OSB9LA0KKyAgICB7IDYsICAgMzIsCSAyMDQ4IH0NCit9Ow0KK2NvbnN0IEZYX0JPT0wgSHVmZm1hblRhYmxlX0hUT09CX0I3ID0gRkFMU0U7DQorY29uc3QgSkJpZzJUYWJsZUxpbmUgSHVmZm1hblRhYmxlX0I3W10gPSB7DQorICAgIHsgNCwJOSwJLTEwMjQgfSwNCisgICAgeyAzLAk4LAkgLTUxMiB9LA0KKyAgICB7IDQsCTcsCSAtMjU2IH0sDQorICAgIHsgNSwJNiwJIC0xMjggfSwNCisgICAgeyA1LAk1LAkgIC02NCB9LA0KKyAgICB7IDQsCTUsCSAgLTMyIH0sDQorICAgIHsgNCwJNSwJCTAgfSwNCisgICAgeyA1LAk1LAkgICAzMiB9LA0KKyAgICB7IDUsCTYsCSAgIDY0IH0sDQorICAgIHsgNCwJNywJICAxMjggfSwNCisgICAgeyAzLAk4LAkgIDI1NiB9LA0KKyAgICB7IDMsCTksCSAgNTEyIH0sDQorICAgIHsgMywgICAxMCwJIDEwMjQgfSwNCisgICAgeyA1LCAgIDMyLAktMTAyNSB9LA0KKyAgICB7IDUsICAgMzIsCSAyMDQ4IH0sDQorfTsNCitjb25zdCBGWF9CT09MIEh1ZmZtYW5UYWJsZV9IVE9PQl9COCA9IFRSVUU7DQorY29uc3QgSkJpZzJUYWJsZUxpbmUgSHVmZm1hblRhYmxlX0I4W10gPSB7DQorICAgIHsgOCwJMywJICAtMTUgfSwNCisgICAgeyA5LAkxLAkgICAtNyB9LA0KKyAgICB7IDgsCTEsCSAgIC01IH0sDQorICAgIHsgOSwJMCwJICAgLTMgfSwNCisgICAgeyA3LAkwLAkgICAtMiB9LA0KKyAgICB7IDQsCTAsCSAgIC0xIH0sDQorICAgIHsgMiwJMSwJCTAgfSwNCisgICAgeyA1LAkwLAkJMiB9LA0KKyAgICB7IDYsCTAsCQkzIH0sDQorICAgIHsgMywJNCwJCTQgfSwNCisgICAgeyA2LAkxLAkgICAyMCB9LA0KKyAgICB7IDQsCTQsCSAgIDIyIH0sDQorICAgIHsgNCwJNSwJICAgMzggfSwNCisgICAgeyA1LAk2LAkgICA3MCB9LA0KKyAgICB7IDUsCTcsCSAgMTM0IH0sDQorICAgIHsgNiwJNywJICAyNjIgfSwNCisgICAgeyA3LAk4LAkgIDM5MCB9LA0KKyAgICB7IDYsICAgMTAsCSAgNjQ2IH0sDQorICAgIHsgOSwgICAzMiwJICAtMTYgfSwNCisgICAgeyA5LCAgIDMyLAkgMTY3MCB9LA0KKyAgICB7IDIsCTAsCQkwIH0NCit9Ow0KK2NvbnN0IEZYX0JPT0wgSHVmZm1hblRhYmxlX0hUT09CX0I5ID0gVFJVRTsNCitjb25zdCBKQmlnMlRhYmxlTGluZSBIdWZmbWFuVGFibGVfQjlbXSA9IHsNCisgICAgeyA4LAk0LAkgIC0zMSB9LA0KKyAgICB7IDksCTIsCSAgLTE1IH0sDQorICAgIHsgOCwJMiwJICAtMTEgfSwNCisgICAgeyA5LAkxLAkgICAtNyB9LA0KKyAgICB7IDcsCTEsCSAgIC01IH0sDQorICAgIHsgNCwJMSwJICAgLTMgfSwNCisgICAgeyAzLAkxLAkgICAtMSB9LA0KKyAgICB7IDMsCTEsCQkxIH0sDQorICAgIHsgNSwJMSwJCTMgfSwNCisgICAgeyA2LAkxLAkJNSB9LA0KKyAgICB7IDMsCTUsCQk3IH0sDQorICAgIHsgNiwJMiwJICAgMzkgfSwNCisgICAgeyA0LAk1LAkgICA0MyB9LA0KKyAgICB7IDQsCTYsCSAgIDc1IH0sDQorICAgIHsgNSwJNywJICAxMzkgfSwNCisgICAgeyA1LAk4LAkgIDI2NyB9LA0KKyAgICB7IDYsCTgsCSAgNTIzIH0sDQorICAgIHsgNywJOSwJICA3NzkgfSwNCisgICAgeyA2LCAgIDExLAkgMTI5MSB9LA0KKyAgICB7IDksICAgMzIsCSAgLTMyIH0sDQorICAgIHsgOSwgICAzMiwJIDMzMzkgfSwNCisgICAgeyAyLAkwLAkJMCB9DQorfTsNCitjb25zdCBGWF9CT09MIEh1ZmZtYW5UYWJsZV9IVE9PQl9CMTAgPSBUUlVFOw0KK2NvbnN0IEpCaWcyVGFibGVMaW5lIEh1ZmZtYW5UYWJsZV9CMTBbXSA9IHsNCisgICAgeyA3LAk0LAkgIC0yMSB9LA0KKyAgICB7IDgsCTAsCSAgIC01IH0sDQorICAgIHsgNywJMCwJICAgLTQgfSwNCisgICAgeyA1LAkwLAkgICAtMyB9LA0KKyAgICB7IDIsCTIsCSAgIC0yIH0sDQorICAgIHsgNSwJMCwJCTIgfSwNCisgICAgeyA2LAkwLAkJMyB9LA0KKyAgICB7IDcsCTAsCQk0IH0sDQorICAgIHsgOCwJMCwJCTUgfSwNCisgICAgeyAyLAk2LAkJNiB9LA0KKyAgICB7IDUsCTUsCSAgIDcwIH0sDQorICAgIHsgNiwJNSwJICAxMDIgfSwNCisgICAgeyA2LAk2LAkgIDEzNCB9LA0KKyAgICB7IDYsCTcsCSAgMTk4IH0sDQorICAgIHsgNiwJOCwJICAzMjYgfSwNCisgICAgeyA2LAk5LAkgIDU4MiB9LA0KKyAgICB7IDYsICAgMTAsCSAxMDk0IH0sDQorICAgIHsgNywgICAxMSwJIDIxMTggfSwNCisgICAgeyA4LCAgIDMyLAkgIC0yMiB9LA0KKyAgICB7IDgsICAgMzIsCSA0MTY2IH0sDQorICAgIHsgMiwJMCwJCTAgfQ0KK307DQorY29uc3QgRlhfQk9PTCBIdWZmbWFuVGFibGVfSFRPT0JfQjExID0gRkFMU0U7DQorY29uc3QgSkJpZzJUYWJsZUxpbmUgSHVmZm1hblRhYmxlX0IxMVtdID0gew0KKyAgICB7IDEsCTAsCQkxIH0sDQorICAgIHsgMiwJMSwJCTIgfSwNCisgICAgeyA0LAkwLAkJNCB9LA0KKyAgICB7IDQsCTEsCQk1IH0sDQorICAgIHsgNSwJMSwJCTcgfSwNCisgICAgeyA1LAkyLAkJOSB9LA0KKyAgICB7IDYsCTIsCSAgIDEzIH0sDQorICAgIHsgNywJMiwJICAgMTcgfSwNCisgICAgeyA3LAkzLAkgICAyMSB9LA0KKyAgICB7IDcsCTQsCSAgIDI5IH0sDQorICAgIHsgNywJNSwJICAgNDUgfSwNCisgICAgeyA3LAk2LAkgICA3NyB9LA0KKyAgICB7IDAsICAgMzIsCQkwIH0sDQorICAgIHsgNywgICAzMiwJICAxNDEgfQ0KK307DQorY29uc3QgRlhfQk9PTCBIdWZmbWFuVGFibGVfSFRPT0JfQjEyID0gRkFMU0U7DQorY29uc3QgSkJpZzJUYWJsZUxpbmUgSHVmZm1hblRhYmxlX0IxMltdID0gew0KKyAgICB7IDEsCTAsCQkxIH0sDQorICAgIHsgMiwJMCwJCTIgfSwNCisgICAgeyAzLAkxLAkJMyB9LA0KKyAgICB7IDUsCTAsCQk1IH0sDQorICAgIHsgNSwJMSwJCTYgfSwNCisgICAgeyA2LAkxLAkJOCB9LA0KKyAgICB7IDcsCTAsCSAgIDEwIH0sDQorICAgIHsgNywJMSwJICAgMTEgfSwNCisgICAgeyA3LAkyLAkgICAxMyB9LA0KKyAgICB7IDcsCTMsCSAgIDE3IH0sDQorICAgIHsgNywJNCwJICAgMjUgfSwNCisgICAgeyA4LAk1LAkgICA0MSB9LA0KKyAgICB7IDAsICAgMzIsCQkwIH0sDQorICAgIHsgOCwgICAzMiwJICAgNzMgfQ0KK307DQorY29uc3QgRlhfQk9PTCBIdWZmbWFuVGFibGVfSFRPT0JfQjEzID0gRkFMU0U7DQorY29uc3QgSkJpZzJUYWJsZUxpbmUgSHVmZm1hblRhYmxlX0IxM1tdID0gew0KKyAgICB7IDEsCTAsCQkxIH0sDQorICAgIHsgMywJMCwJCTIgfSwNCisgICAgeyA0LAkwLAkJMyB9LA0KKyAgICB7IDUsCTAsCQk0IH0sDQorICAgIHsgNCwJMSwJCTUgfSwNCisgICAgeyAzLAkzLAkJNyB9LA0KKyAgICB7IDYsCTEsCSAgIDE1IH0sDQorICAgIHsgNiwJMiwJICAgMTcgfSwNCisgICAgeyA2LAkzLAkgICAyMSB9LA0KKyAgICB7IDYsCTQsCSAgIDI5IH0sDQorICAgIHsgNiwJNSwJICAgNDUgfSwNCisgICAgeyA3LAk2LAkgICA3NyB9LA0KKyAgICB7IDAsICAgMzIsCQkwIH0sDQorICAgIHsgNywgICAzMiwJICAxNDEgfQ0KK307DQorY29uc3QgRlhfQk9PTCBIdWZmbWFuVGFibGVfSFRPT0JfQjE0ID0gRkFMU0U7DQorY29uc3QgSkJpZzJUYWJsZUxpbmUgSHVmZm1hblRhYmxlX0IxNFtdID0gew0KKyAgICB7IDMsCTAsCSAgIC0yIH0sDQorICAgIHsgMywJMCwJICAgLTEgfSwNCisgICAgeyAxLAkwLAkJMCB9LA0KKyAgICB7IDMsCTAsCQkxIH0sDQorICAgIHsgMywJMCwJCTIgfSwNCisgICAgeyAwLCAgIDMyLAkgICAtMyB9LA0KKyAgICB7IDAsICAgMzIsCQkzIH0NCit9Ow0KK2NvbnN0IEZYX0JPT0wgSHVmZm1hblRhYmxlX0hUT09CX0IxNSA9IEZBTFNFOw0KK2NvbnN0IEpCaWcyVGFibGVMaW5lIEh1ZmZtYW5UYWJsZV9CMTVbXSA9IHsNCisgICAgeyA3LAk0LAkgIC0yNCB9LA0KKyAgICB7IDYsCTIsCSAgIC04IH0sDQorICAgIHsgNSwJMSwJICAgLTQgfSwNCisgICAgeyA0LAkwLAkgICAtMiB9LA0KKyAgICB7IDMsCTAsCSAgIC0xIH0sDQorICAgIHsgMSwJMCwJCTAgfSwNCisgICAgeyAzLAkwLAkJMSB9LA0KKyAgICB7IDQsCTAsCQkyIH0sDQorICAgIHsgNSwJMSwJCTMgfSwNCisgICAgeyA2LAkyLAkJNSB9LA0KKyAgICB7IDcsCTQsCQk5IH0sDQorICAgIHsgNywgICAzMiwJICAtMjUgfSwNCisgICAgeyA3LCAgIDMyLAkgICAyNSB9DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0ltYWdlLmNwcCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MTkwMjgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0ltYWdlLmNwcApAQCAtMCwwICsxLDE2MTkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICJKQmlnMl9JbWFnZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2Jhc2ljLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfY29vcmRpbmF0ZXMuaCINCisjaW5jbHVkZSA8bGltaXRzLmg+DQorQ0pCaWcyX0ltYWdlOjpDSkJpZzJfSW1hZ2UoRlhfSU5UMzIgdywgRlhfSU5UMzIgaCkNCit7DQorICAgIG1fbldpZHRoCT0gdzsNCisgICAgbV9uSGVpZ2h0CT0gaDsNCisgICAgaWYgKG1fbldpZHRoIDw9IDAgfHwgbV9uSGVpZ2h0IDw9IDAgfHwgbV9uV2lkdGggPiBJTlRfTUFYIC0gMzEpIHsNCisgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICAgICAgbV9iTmVlZEZyZWUgPSBGQUxTRTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX25TdHJpZGUgID0gKCh3ICsgMzEpID4+IDUpIDw8IDI7DQorICAgIGlmIChtX25TdHJpZGUgKiBtX25IZWlnaHQgPiAwICYmIDEwNDg1NzYwMCAvIChpbnQpbV9uU3RyaWRlID4gbV9uSGVpZ2h0KSB7DQorICAgICAgICBtX3BEYXRhID0gKEZYX0JZVEUgKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIobV9uU3RyaWRlLCBtX25IZWlnaHQpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wRGF0YSA9IE5VTEw7DQorICAgIH0NCisgICAgbV9iTmVlZEZyZWUgPSBUUlVFOw0KK30NCitDSkJpZzJfSW1hZ2U6OkNKQmlnMl9JbWFnZShGWF9JTlQzMiB3LCBGWF9JTlQzMiBoLCBGWF9JTlQzMiBzdHJpZGUsIEZYX0JZVEUqcEJ1ZikNCit7DQorICAgIG1fbldpZHRoID0gdzsNCisgICAgbV9uSGVpZ2h0ID0gaDsNCisgICAgbV9uU3RyaWRlID0gc3RyaWRlOw0KKyAgICBtX3BEYXRhID0gcEJ1ZjsNCisgICAgbV9iTmVlZEZyZWUgPSBGQUxTRTsNCit9DQorQ0pCaWcyX0ltYWdlOjpDSkJpZzJfSW1hZ2UoQ0pCaWcyX0ltYWdlICZpbSkNCit7DQorICAgIG1fcE1vZHVsZSA9IGltLm1fcE1vZHVsZTsNCisgICAgbV9uV2lkdGgJPSBpbS5tX25XaWR0aDsNCisgICAgbV9uSGVpZ2h0CT0gaW0ubV9uSGVpZ2h0Ow0KKyAgICBtX25TdHJpZGUJPSBpbS5tX25TdHJpZGU7DQorICAgIGlmIChpbS5tX3BEYXRhKSB7DQorICAgICAgICBtX3BEYXRhID0gKEZYX0JZVEUqKW1fcE1vZHVsZS0+SkJpZzJfTWFsbG9jMihtX25TdHJpZGUsIG1fbkhlaWdodCk7DQorICAgICAgICBKQklHMl9tZW1jcHkobV9wRGF0YSwgaW0ubV9wRGF0YSwgbV9uU3RyaWRlICogbV9uSGVpZ2h0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICB9DQorICAgIG1fYk5lZWRGcmVlID0gVFJVRTsNCit9DQorQ0pCaWcyX0ltYWdlOjp+Q0pCaWcyX0ltYWdlKCkNCit7DQorICAgIGlmKG1fYk5lZWRGcmVlICYmIG1fcERhdGEpIHsNCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShtX3BEYXRhKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENKQmlnMl9JbWFnZTo6Z2V0UGl4ZWwoRlhfSU5UMzIgeCwgRlhfSU5UMzIgeSkNCit7DQorICAgIGlmICghbV9wRGF0YSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfSU5UMzIgbSwgbjsNCisgICAgaWYoeCA8IDAgfHwgeCA+PSBtX25XaWR0aCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYoeSA8IDAgfHwgeSA+PSBtX25IZWlnaHQpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIG0gPSB5ICogbV9uU3RyaWRlICsgKHggPj4gMyk7DQorICAgIG4gPSB4ICYgNzsNCisgICAgcmV0dXJuICgobV9wRGF0YVttXSA+PiAoNyAtIG4pKSAmIDEpOw0KK30NCisNCitGWF9JTlQzMiBDSkJpZzJfSW1hZ2U6OnNldFBpeGVsKEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEZYX0JPT0wgdikNCit7DQorICAgIGlmICghbV9wRGF0YSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfSU5UMzIgbSwgbjsNCisgICAgaWYoeCA8IDAgfHwgeCA+PSBtX25XaWR0aCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYoeSA8IDAgfHwgeSA+PSBtX25IZWlnaHQpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIG0gPSB5ICogbV9uU3RyaWRlICsgKHggPj4gMyk7DQorICAgIG4gPSB4ICYgNzsNCisgICAgaWYodikgew0KKyAgICAgICAgbV9wRGF0YVttXSB8PSAxIDw8ICg3IC0gbik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BEYXRhW21dICY9IH4oMSA8PCAoNyAtIG4pKTsNCisgICAgfQ0KKyAgICByZXR1cm4gMTsNCit9DQordm9pZCBDSkJpZzJfSW1hZ2U6OmNvcHlMaW5lKEZYX0lOVDMyIGhUbywgRlhfSU5UMzIgaEZyb20pDQorew0KKyAgICBpZiAoIW1fcERhdGEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZihoRnJvbSA8IDAgfHwgaEZyb20gPj0gbV9uSGVpZ2h0KSB7DQorICAgICAgICBKQklHMl9tZW1zZXQobV9wRGF0YSArIGhUbyAqIG1fblN0cmlkZSwgMCwgbV9uU3RyaWRlKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEpCSUcyX21lbWNweShtX3BEYXRhICsgaFRvICogbV9uU3RyaWRlLCBtX3BEYXRhICsgaEZyb20gKiBtX25TdHJpZGUsIG1fblN0cmlkZSk7DQorICAgIH0NCit9DQordm9pZCBDSkJpZzJfSW1hZ2U6OmZpbGwoRlhfQk9PTCB2KQ0KK3sNCisgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgSkJJRzJfbWVtc2V0KG1fcERhdGEsIHYgPyAweGZmIDogMCwgbV9uU3RyaWRlICogbV9uSGVpZ2h0KTsNCit9DQorRlhfQk9PTCBDSkJpZzJfSW1hZ2U6OmNvbXBvc2VUbyhDSkJpZzJfSW1hZ2UgKnBEc3QsIEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEpCaWcyQ29tcG9zZU9wIG9wKQ0KK3sNCisgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIGNvbXBvc2VUb19vcHQyKHBEc3QsIHgsIHksIG9wKTsNCit9DQorRlhfQk9PTCBDSkJpZzJfSW1hZ2U6OmNvbXBvc2VUbyhDSkJpZzJfSW1hZ2UgKnBEc3QsIEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEpCaWcyQ29tcG9zZU9wIG9wLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCkNCit7DQorICAgIGlmICghbV9wRGF0YSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChOVUxMID09IHBTcmNSZWN0IHx8ICpwU3JjUmVjdCA9PSBGWF9SRUNUKDAsIDAsIG1fbldpZHRoLCBtX25IZWlnaHQpKSB7DQorICAgICAgICByZXR1cm4gY29tcG9zZVRvX29wdDIocERzdCwgeCwgeSwgb3ApOw0KKyAgICB9DQorICAgIHJldHVybiBjb21wb3NlVG9fb3B0MihwRHN0LCB4LCB5LCBvcCwgcFNyY1JlY3QpOw0KK30NCitGWF9CT09MIENKQmlnMl9JbWFnZTo6Y29tcG9zZVRvX3Vub3B0KENKQmlnMl9JbWFnZSAqcERzdCwgRlhfSU5UMzIgeCwgRlhfSU5UMzIgeSwgSkJpZzJDb21wb3NlT3Agb3ApDQorew0KKyAgICBGWF9JTlQzMiB3LCBoLCBkeCwgZHk7DQorICAgIEZYX0lOVDMyIGksIGo7DQorICAgIHcgPSBtX25XaWR0aDsNCisgICAgaCA9IG1fbkhlaWdodDsNCisgICAgZHggPSBkeSA9IDA7DQorICAgIGlmKHggPCAwKSB7DQorICAgICAgICBkeCArPSAteDsNCisgICAgICAgIHcgIC09IC14Ow0KKyAgICAgICAgeCA9IDA7DQorICAgIH0NCisgICAgaWYoeSA8IDApIHsNCisgICAgICAgIGR5ICs9IC15Ow0KKyAgICAgICAgaCAgLT0gLXk7DQorICAgICAgICB5ID0gMDsNCisgICAgfQ0KKyAgICBpZih4ICsgdyA+IHBEc3QtPm1fbldpZHRoKSB7DQorICAgICAgICB3ID0gcERzdC0+bV9uV2lkdGggLSB4Ow0KKyAgICB9DQorICAgIGlmKHkgKyBoID4gcERzdC0+bV9uSGVpZ2h0KSB7DQorICAgICAgICBoID0gcERzdC0+bV9uSGVpZ2h0IC0geTsNCisgICAgfQ0KKyAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9PUjoNCisgICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBoOyBqKyspIHsNCisgICAgICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgdzsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICBwRHN0LT5zZXRQaXhlbCh4ICsgaSwgeSArIGosDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0UGl4ZWwoaSArIGR4LCBqICsgZHkpIHwgcERzdC0+Z2V0UGl4ZWwoeCArIGksIHkgKyBqKSkgJiAxKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6DQorICAgICAgICAgICAgZm9yKGogPSAwOyBqIDwgaDsgaisrKSB7DQorICAgICAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHc7IGkrKykgew0KKyAgICAgICAgICAgICAgICAgICAgcERzdC0+c2V0UGl4ZWwoeCArIGksIHkgKyBqLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdldFBpeGVsKGkgKyBkeCwgaiArIGR5KSAmIHBEc3QtPmdldFBpeGVsKHggKyBpLCB5ICsgaikpICYgMSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE9SOg0KKyAgICAgICAgICAgIGZvcihqID0gMDsgaiA8IGg7IGorKykgew0KKyAgICAgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCB3OyBpKyspIHsNCisgICAgICAgICAgICAgICAgICAgIHBEc3QtPnNldFBpeGVsKHggKyBpLCB5ICsgaiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXRQaXhlbChpICsgZHgsIGogKyBkeSkgXiBwRHN0LT5nZXRQaXhlbCh4ICsgaSwgeSArIGopKSAmIDEpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6DQorICAgICAgICAgICAgZm9yKGogPSAwOyBqIDwgaDsgaisrKSB7DQorICAgICAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHc7IGkrKykgew0KKyAgICAgICAgICAgICAgICAgICAgcERzdC0+c2V0UGl4ZWwoeCArIGksIHkgKyBqLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKH4oZ2V0UGl4ZWwoaSArIGR4LCBqICsgZHkpIF4gcERzdC0+Z2V0UGl4ZWwoeCArIGksIHkgKyBqKSkpICYgMSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRToNCisgICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBoOyBqKyspIHsNCisgICAgICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgdzsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICBwRHN0LT5zZXRQaXhlbCh4ICsgaSwgeSArIGosIGdldFBpeGVsKGkgKyBkeCwgaiArIGR5KSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KK0ZYX0JPT0wgQ0pCaWcyX0ltYWdlOjpjb21wb3NlVG9fb3B0KENKQmlnMl9JbWFnZSAqcERzdCwgRlhfSU5UMzIgeCwgRlhfSU5UMzIgeSwgSkJpZzJDb21wb3NlT3Agb3ApDQorew0KKyAgICBGWF9JTlQzMiB4MCwgeDEsIHkwLCB5MSwgeHgsIHl5Ow0KKyAgICBGWF9CWVRFICpwTGluZVNyYywgKnBMaW5lRHN0LCAqc3JjUHRyLCAqZGVzdFB0cjsNCisgICAgRlhfRFdPUkQgc3JjMCwgc3JjMSwgc3JjLCBkZXN0LCBzMSwgczIsIG0xLCBtMiwgbTM7DQorICAgIEZYX0JPT0wgb25lQnl0ZTsNCisgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHkgPCAwKSB7DQorICAgICAgICB5MCA9IC15Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeTAgPSAwOw0KKyAgICB9DQorICAgIGlmICh5ICsgbV9uSGVpZ2h0ID4gcERzdC0+bV9uSGVpZ2h0KSB7DQorICAgICAgICB5MSA9IHBEc3QtPm1fbkhlaWdodCAtIHk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB5MSA9IG1fbkhlaWdodDsNCisgICAgfQ0KKyAgICBpZiAoeTAgPj0geTEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoeCA+PSAwKSB7DQorICAgICAgICB4MCA9IHggJiB+NzsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHgwID0gMDsNCisgICAgfQ0KKyAgICB4MSA9IHggKyBtX25XaWR0aDsNCisgICAgaWYgKHgxID4gcERzdC0+bV9uV2lkdGgpIHsNCisgICAgICAgIHgxID0gcERzdC0+bV9uV2lkdGg7DQorICAgIH0NCisgICAgaWYgKHgwID49IHgxKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgczEgPSB4ICYgNzsNCisgICAgczIgPSA4IC0gczE7DQorICAgIG0xID0gMHhmZiA+PiAoeDEgJiA3KTsNCisgICAgbTIgPSAweGZmIDw8ICgoKHgxICYgNykgPT0gMCkgPyAwIDogOCAtICh4MSAmIDcpKTsNCisgICAgbTMgPSAoMHhmZiA+PiBzMSkgJiBtMjsNCisgICAgb25lQnl0ZSA9IHgwID09ICgoeDEgLSAxKSAmIH43KTsNCisgICAgcExpbmVEc3QgPSBwRHN0LT5tX3BEYXRhICsgeSAqIHBEc3QtPm1fblN0cmlkZTsNCisgICAgcExpbmVTcmMgPSBtX3BEYXRhICsgeTAgKiBtX25TdHJpZGU7DQorICAgIGlmKG9uZUJ5dGUpIHsNCisgICAgICAgIGlmKHggPj0gMCkgew0KKyAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHl5ID0geTA7IHl5IDwgeTE7ICsreXkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFB0ciA9IHBMaW5lRHN0ICsgKHggPj4gMyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1B0ciA9IHBMaW5lU3JjOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgfD0gKCpzcmNQdHIgPj4gczEpICYgbTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHl5ID0geTA7IHl5IDwgeTE7ICsreXkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFB0ciA9IHBMaW5lRHN0ICsgKHggPj4gMyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1B0ciA9IHBMaW5lU3JjOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgJj0gKCgweGZmMDAgfCAqc3JjUHRyKSA+PiBzMSkgfCBtMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoeXkgPSB5MDsgeXkgPCB5MTsgKyt5eSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UHRyID0gcExpbmVEc3QgKyAoeCA+PiAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUHRyID0gcExpbmVTcmM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAqZGVzdFB0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCBePSAoKnNyY1B0ciA+PiBzMSkgJiBtMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHl5ID0geTA7IHl5IDwgeTE7ICsreXkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFB0ciA9IHBMaW5lRHN0ICsgKHggPj4gMyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1B0ciA9IHBMaW5lU3JjOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgXj0gKCgqc3JjUHRyIF4gMHhmZikgPj4gczEpICYgbTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh5eSA9IHkwOyB5eSA8IHkxOyArK3l5KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQdHIgPSBwTGluZURzdCArICh4ID4+IDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQdHIgPSBwTGluZVNyYzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKGRlc3QgJiB+bTMpIHwgKCgqc3JjUHRyID4+IHMxKSAmIG0zKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoeXkgPSB5MDsgeXkgPCB5MTsgKyt5eSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UHRyID0gcExpbmVEc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1B0ciA9IHBMaW5lU3JjICsgKC14ID4+IDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgfD0gKnNyY1B0ciAmIG0yOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0ciA9IChGWF9CWVRFKWRlc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHl5ID0geTA7IHl5IDwgeTE7ICsreXkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFB0ciA9IHBMaW5lRHN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQdHIgPSBwTGluZVNyYyArICgteCA+PiAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ICY9ICpzcmNQdHIgfCBtMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcih5eSA9IHkwOyB5eSA8IHkxOyArK3l5KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQdHIgPSBwTGluZURzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUHRyID0gcExpbmVTcmMgKyAoLXggPj4gMyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAqZGVzdFB0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCBePSAqc3JjUHRyICYgbTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHl5ID0geTA7IHl5IDwgeTE7ICsreXkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFB0ciA9IHBMaW5lRHN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQdHIgPSBwTGluZVNyYyArICgteCA+PiAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0IF49ICgqc3JjUHRyIF4gMHhmZikgJiBtMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1JFUExBQ0U6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoeXkgPSB5MDsgeXkgPCB5MTsgKyt5eSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UHRyID0gcExpbmVEc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1B0ciA9IHBMaW5lU3JjICsgKC14ID4+IDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAoKnNyY1B0ciAmIG0yKSB8IChkZXN0ICYgbTEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0ciA9IChGWF9CWVRFKWRlc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmKHggPj0gMCkgew0KKyAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoeXkgPSB5MDsgeXkgPCB5MTsgKyt5eSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UHRyID0gcExpbmVEc3QgKyAoeCA+PiAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUHRyID0gcExpbmVTcmM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAqZGVzdFB0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCB8PSBzcmMxID4+IHMxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0cisrID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHggPSB4MCArIDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB4eCA8IHgxIC0gODsgeHggKz0gOCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMCA9IHNyYzE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gKnNyY1B0cisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gKCgoc3JjMCA8PCA4KSB8IHNyYzEpID4+IHMxKSAmIDB4ZmY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0IHw9IHNyYzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyKysgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAqZGVzdFB0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMCA9IHNyYzE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNyY1B0ciAtIHBMaW5lU3JjIDwgbV9uU3RyaWRlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gKnNyY1B0cisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gKCgoc3JjMCA8PCA4KSB8IHNyYzEpID4+IHMxKSAmIDB4ZmY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgfD0gc3JjICYgbTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoeXkgPSB5MDsgeXkgPCB5MTsgKyt5eSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UHRyID0gcExpbmVEc3QgKyAoeCA+PiAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUHRyID0gcExpbmVTcmM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAqZGVzdFB0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCAmPSAoMHhmZjAwIHwgc3JjMSkgPj4gczE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyKysgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4eCA9IHgwICsgODsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHh4IDwgeDEgLSA4OyB4eCArPSA4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwID0gc3JjMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSAoKChzcmMwIDw8IDgpIHwgc3JjMSkgPj4gczEpICYgMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgJj0gc3JjOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIrKyA9IChGWF9CWVRFKWRlc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwID0gc3JjMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3JjUHRyIC0gcExpbmVTcmMgPCBtX25TdHJpZGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSAoKChzcmMwIDw8IDgpIHwgc3JjMSkgPj4gczEpICYgMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCAmPSBzcmMgfCBtMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcih5eSA9IHkwOyB5eSA8IHkxOyArK3l5KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQdHIgPSBwTGluZURzdCArICh4ID4+IDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQdHIgPSBwTGluZVNyYzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9ICpzcmNQdHIrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0IF49IHNyYzEgPj4gczE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyKysgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4eCA9IHgwICsgODsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHh4IDwgeDEgLSA4OyB4eCArPSA4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwID0gc3JjMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSAoKChzcmMwIDw8IDgpIHwgc3JjMSkgPj4gczEpICYgMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgXj0gc3JjOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIrKyA9IChGWF9CWVRFKWRlc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwID0gc3JjMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3JjUHRyIC0gcExpbmVTcmMgPCBtX25TdHJpZGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSAoKChzcmMwIDw8IDgpIHwgc3JjMSkgPj4gczEpICYgMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCBePSBzcmMgJiBtMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoeXkgPSB5MDsgeXkgPCB5MTsgKyt5eSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UHRyID0gcExpbmVEc3QgKyAoeCA+PiAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUHRyID0gcExpbmVTcmM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAqZGVzdFB0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCBePSAoc3JjMSBeIDB4ZmYpID4+IHMxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0cisrID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHggPSB4MCArIDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB4eCA8IHgxIC0gODsgeHggKz0gOCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMCA9IHNyYzE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gKnNyY1B0cisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gKCgoc3JjMCA8PCA4KSB8IHNyYzEpID4+IHMxKSAmIDB4ZmY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0IF49IHNyYyBeIDB4ZmY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0cisrID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzAgPSBzcmMxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzcmNQdHIgLSBwTGluZVNyYyA8IG1fblN0cmlkZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9ICpzcmNQdHIrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYyA9ICgoKHNyYzAgPDwgOCkgfCBzcmMxKSA+PiBzMSkgJiAweGZmOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0IF49IChzcmMgXiAweGZmKSAmIG0yOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0ciA9IChGWF9CWVRFKWRlc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRTogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcih5eSA9IHkwOyB5eSA8IHkxOyArK3l5KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQdHIgPSBwTGluZURzdCArICh4ID4+IDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQdHIgPSBwTGluZVNyYzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9ICpzcmNQdHIrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKGRlc3QgJiAoMHhmZiA8PCBzMikpIHwgKHNyYzEgPj4gczEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0cisrID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHggPSB4MCArIDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB4eCA8IHgxIC0gODsgeHggKz0gOCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMCA9IHNyYzE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gKnNyY1B0cisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gKCgoc3JjMCA8PCA4KSB8IHNyYzEpID4+IHMxKSAmIDB4ZmY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gc3JjOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIrKyA9IChGWF9CWVRFKWRlc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwID0gc3JjMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3JjUHRyIC0gcExpbmVTcmMgPCBtX25TdHJpZGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSAoKChzcmMwIDw8IDgpIHwgc3JjMSkgPj4gczEpICYgMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9IChzcmMgJiBtMikgfCAoZGVzdCAmIG0xKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6IHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoeXkgPSB5MDsgeXkgPCB5MTsgKyt5eSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UHRyID0gcExpbmVEc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1B0ciA9IHBMaW5lU3JjICsgKC14ID4+IDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gKnNyY1B0cisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4eCA9IHgwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgeHggPCB4MSAtIDg7IHh4ICs9IDgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAqZGVzdFB0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzAgPSBzcmMxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9ICpzcmNQdHIrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYyA9ICgoKHNyYzAgPDwgOCkgfCBzcmMxKSA+PiBzMSkgJiAweGZmOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCB8PSBzcmM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0cisrID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzAgPSBzcmMxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzcmNQdHIgLSBwTGluZVNyYyA8IG1fblN0cmlkZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9ICpzcmNQdHIrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYyA9ICgoKHNyYzAgPDwgOCkgfCBzcmMxKSA+PiBzMSkgJiAweGZmOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0IHw9IHNyYyAmIG0yOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0ciA9IChGWF9CWVRFKWRlc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHl5ID0geTA7IHl5IDwgeTE7ICsreXkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFB0ciA9IHBMaW5lRHN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQdHIgPSBwTGluZVNyYyArICgteCA+PiAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9ICpzcmNQdHIrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHggPSB4MDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHh4IDwgeDEgLSA4OyB4eCArPSA4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwID0gc3JjMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSAoKChzcmMwIDw8IDgpIHwgc3JjMSkgPj4gczEpICYgMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgJj0gc3JjOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIrKyA9IChGWF9CWVRFKWRlc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwID0gc3JjMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3JjUHRyIC0gcExpbmVTcmMgPCBtX25TdHJpZGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSAoKChzcmMwIDw8IDgpIHwgc3JjMSkgPj4gczEpICYgMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCAmPSBzcmMgfCBtMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RQdHIgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjogew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcih5eSA9IHkwOyB5eSA8IHkxOyArK3l5KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQdHIgPSBwTGluZURzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUHRyID0gcExpbmVTcmMgKyAoLXggPj4gMyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh4ID0geDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB4eCA8IHgxIC0gODsgeHggKz0gOCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICpkZXN0UHRyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMCA9IHNyYzE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gKnNyY1B0cisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gKCgoc3JjMCA8PCA4KSB8IHNyYzEpID4+IHMxKSAmIDB4ZmY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0IF49IHNyYzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyKysgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAqZGVzdFB0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMCA9IHNyYzE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNyY1B0ciAtIHBMaW5lU3JjIDwgbV9uU3RyaWRlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gKnNyY1B0cisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gKCgoc3JjMCA8PCA4KSB8IHNyYzEpID4+IHMxKSAmIDB4ZmY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgXj0gc3JjICYgbTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHl5ID0geTA7IHl5IDwgeTE7ICsreXkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFB0ciA9IHBMaW5lRHN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQdHIgPSBwTGluZVNyYyArICgteCA+PiAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9ICpzcmNQdHIrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHggPSB4MDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHh4IDwgeDEgLSA4OyB4eCArPSA4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwID0gc3JjMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSAoKChzcmMwIDw8IDgpIHwgc3JjMSkgPj4gczEpICYgMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgXj0gc3JjIF4gMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyKysgPSAoRlhfQllURSlkZXN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAqZGVzdFB0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMCA9IHNyYzE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNyY1B0ciAtIHBMaW5lU3JjIDwgbV9uU3RyaWRlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMxID0gKnNyY1B0cisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gKCgoc3JjMCA8PCA4KSB8IHNyYzEpID4+IHMxKSAmIDB4ZmY7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgXj0gKHNyYyBeIDB4ZmYpICYgbTI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0UHRyID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHl5ID0geTA7IHl5IDwgeTE7ICsreXkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFB0ciA9IHBMaW5lRHN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQdHIgPSBwTGluZVNyYyArICgteCA+PiAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9ICpzcmNQdHIrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHggPSB4MDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHh4IDwgeDEgLSA4OyB4eCArPSA4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMwID0gc3JjMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAqc3JjUHRyKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSAoKChzcmMwIDw8IDgpIHwgc3JjMSkgPj4gczEpICYgMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSBzcmM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0cisrID0gKEZYX0JZVEUpZGVzdDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKmRlc3RQdHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzAgPSBzcmMxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzcmNQdHIgLSBwTGluZVNyYyA8IG1fblN0cmlkZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjMSA9ICpzcmNQdHIrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzEgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYyA9ICgoKHNyYzAgPDwgOCkgfCBzcmMxKSA+PiBzMSkgJiAweGZmOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gKHNyYyAmIG0yKSB8IChkZXN0ICYgbTEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdFB0ciA9IChGWF9CWVRFKWRlc3Q7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDSkJpZzJfSW1hZ2U6OmNvbXBvc2VGcm9tKEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIENKQmlnMl9JbWFnZSAqcFNyYywgSkJpZzJDb21wb3NlT3Agb3ApDQorew0KKyAgICBpZiAoIW1fcERhdGEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gcFNyYy0+Y29tcG9zZVRvKHRoaXMsIHgsIHksIG9wKTsNCit9DQorRlhfQk9PTCBDSkJpZzJfSW1hZ2U6OmNvbXBvc2VGcm9tKEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIENKQmlnMl9JbWFnZSAqcFNyYywgSkJpZzJDb21wb3NlT3Agb3AsIGNvbnN0IEZYX1JFQ1QqIHBTcmNSZWN0KQ0KK3sNCisgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIHBTcmMtPmNvbXBvc2VUbyh0aGlzLCB4LCB5LCBvcCwgcFNyY1JlY3QpOw0KK30NCitDSkJpZzJfSW1hZ2UgKkNKQmlnMl9JbWFnZTo6c3ViSW1hZ2VfdW5vcHQoRlhfSU5UMzIgeCwgRlhfSU5UMzIgeSwgRlhfSU5UMzIgdywgRlhfSU5UMzIgaCkNCit7DQorICAgIENKQmlnMl9JbWFnZSAqcEltYWdlOw0KKyAgICBGWF9JTlQzMiBpLCBqOw0KKyAgICBKQklHMl9BTExPQyhwSW1hZ2UsIENKQmlnMl9JbWFnZSh3LCBoKSk7DQorICAgIGZvcihqID0gMDsgaiA8IGg7IGorKykgew0KKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgdzsgaSsrKSB7DQorICAgICAgICAgICAgcEltYWdlLT5zZXRQaXhlbChpLCBqLCBnZXRQaXhlbCh4ICsgaSwgeSArIGopKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcEltYWdlOw0KK30NCisjZGVmaW5lIEpCSUcyX0dFVERXT1JEKGJ1ZikJKChGWF9EV09SRCkoKChidWYpWzBdIDw8IDI0KSB8ICgoYnVmKVsxXSA8PCAxNikgfCAoKGJ1ZilbMl0gPDwgOCkgfCAoYnVmKVszXSkpDQorQ0pCaWcyX0ltYWdlICpDSkJpZzJfSW1hZ2U6OnN1YkltYWdlKEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEZYX0lOVDMyIHcsIEZYX0lOVDMyIGgpDQorew0KKyAgICBDSkJpZzJfSW1hZ2UgKnBJbWFnZTsNCisgICAgRlhfSU5UMzIgbSwgbiwgajsNCisgICAgRlhfQllURSAqcExpbmVTcmMsICpwTGluZURzdDsNCisgICAgRlhfRFdPUkQgd1RtcDsNCisgICAgRlhfQllURSAqcFNyYywgKnBTcmNFbmQsICpwRHN0LCAqcERzdEVuZDsNCisgICAgaWYgKHcgPT0gMCB8fCBoID09IDApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEpCSUcyX0FMTE9DKHBJbWFnZSwgQ0pCaWcyX0ltYWdlKHcsIGgpKTsNCisgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICBwSW1hZ2UtPmZpbGwoMCk7DQorICAgICAgICByZXR1cm4gcEltYWdlOw0KKyAgICB9DQorICAgIGlmICghcEltYWdlLT5tX3BEYXRhKSB7DQorICAgICAgICByZXR1cm4gcEltYWdlOw0KKyAgICB9DQorICAgIHBMaW5lU3JjID0gbV9wRGF0YSArIG1fblN0cmlkZSAqIHk7DQorICAgIHBMaW5lRHN0ID0gcEltYWdlLT5tX3BEYXRhOw0KKyAgICBtID0gKHggPj4gNSkgPDwgMjsNCisgICAgbiA9IHggJiAzMTsNCisgICAgaWYobiA9PSAwKSB7DQorICAgICAgICBmb3IoaiA9IDA7IGogPCBoOyBqKyspIHsNCisgICAgICAgICAgICBwU3JjID0gcExpbmVTcmMgKyBtOw0KKyAgICAgICAgICAgIHBTcmNFbmQgPSBwTGluZVNyYyArIG1fblN0cmlkZTsNCisgICAgICAgICAgICBwRHN0ID0gcExpbmVEc3Q7DQorICAgICAgICAgICAgcERzdEVuZCA9IHBMaW5lRHN0ICsgcEltYWdlLT5tX25TdHJpZGU7DQorICAgICAgICAgICAgZm9yKDsgcERzdCA8IHBEc3RFbmQ7IHBTcmMgKz0gNCwgcERzdCArPSA0KSB7DQorICAgICAgICAgICAgICAgICooKEZYX0RXT1JEICopcERzdCkgPSAqKChGWF9EV09SRCAqKXBTcmMpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwTGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgcExpbmVEc3QgKz0gcEltYWdlLT5tX25TdHJpZGU7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IoaiA9IDA7IGogPCBoOyBqKyspIHsNCisgICAgICAgICAgICBwU3JjID0gcExpbmVTcmMgKyBtOw0KKyAgICAgICAgICAgIHBTcmNFbmQgPSBwTGluZVNyYyArIG1fblN0cmlkZTsNCisgICAgICAgICAgICBwRHN0ID0gcExpbmVEc3Q7DQorICAgICAgICAgICAgcERzdEVuZCA9IHBMaW5lRHN0ICsgcEltYWdlLT5tX25TdHJpZGU7DQorICAgICAgICAgICAgZm9yKDsgcERzdCA8IHBEc3RFbmQ7IHBTcmMgKz0gNCwgcERzdCArPSA0KSB7DQorICAgICAgICAgICAgICAgIGlmKHBTcmMgKyA0IDwgcFNyY0VuZCkgew0KKyAgICAgICAgICAgICAgICAgICAgd1RtcCA9IChKQklHMl9HRVREV09SRChwU3JjKSA8PCBuKSB8IChKQklHMl9HRVREV09SRChwU3JjICsgNCkgPj4gKDMyIC0gbikpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgd1RtcCA9IEpCSUcyX0dFVERXT1JEKHBTcmMpIDw8IG47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcERzdFswXSA9IChGWF9CWVRFKSh3VG1wID4+IDI0KTsNCisgICAgICAgICAgICAgICAgcERzdFsxXSA9IChGWF9CWVRFKSh3VG1wID4+IDE2KTsNCisgICAgICAgICAgICAgICAgcERzdFsyXSA9IChGWF9CWVRFKSh3VG1wID4+IDgpOw0KKyAgICAgICAgICAgICAgICBwRHN0WzNdID0gKEZYX0JZVEUpd1RtcDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcExpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgIHBMaW5lRHN0ICs9IHBJbWFnZS0+bV9uU3RyaWRlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBwSW1hZ2U7DQorfQ0KK3ZvaWQgQ0pCaWcyX0ltYWdlOjpleHBhbmQoRlhfSU5UMzIgaCwgRlhfQk9PTCB2KQ0KK3sNCisgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wRGF0YSA9IChGWF9CWVRFKiltX3BNb2R1bGUtPkpCaWcyX1JlYWxsb2MobV9wRGF0YSwgaCAqIG1fblN0cmlkZSk7DQorICAgIGlmKGggPiBtX25IZWlnaHQpIHsNCisgICAgICAgIEpCSUcyX21lbXNldChtX3BEYXRhICsgbV9uSGVpZ2h0ICogbV9uU3RyaWRlLCB2ID8gMHhmZiA6IDAsIChoIC0gbV9uSGVpZ2h0KSptX25TdHJpZGUpOw0KKyAgICB9DQorICAgIG1fbkhlaWdodCA9IGg7DQorfQ0KK0ZYX0JPT0wgQ0pCaWcyX0ltYWdlOjpjb21wb3NlVG9fb3B0MihDSkJpZzJfSW1hZ2UgKnBEc3QsIEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEpCaWcyQ29tcG9zZU9wIG9wKQ0KK3sNCisgICAgRlhfSU5UMzIgeHMwLCB5czAsIHhzMSwgeXMxLCB4ZDAsIHlkMCwgeGQxLCB5ZDEsIHh4LCB5eSwgdywgaCwgbWlkZGxlRHdvcmRzLCBsaW5lTGVmdDsNCisgICAgRlhfRFdPUkQgczEsIGQxLCBkMiwgc2hpZnQsIHNoaWZ0MSwgc2hpZnQyLCB0bXAsIHRtcDEsIHRtcDIsIG1hc2tMLCBtYXNrUiwgbWFza007DQorICAgIEZYX0JZVEUgKmxpbmVTcmMsICpsaW5lRHN0LCAqc3AsICpkcDsNCisgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHggPCAtMTA0ODU3NiB8fCB4ID4gMTA0ODU3NiB8fCB5IDwgLTEwNDg1NzYgfHwgeSA+IDEwNDg1NzYpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZih5IDwgMCkgew0KKyAgICAgICAgeXMwID0gLXk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB5czAgPSAwOw0KKyAgICB9DQorICAgIGlmKHkgKyBtX25IZWlnaHQgPiBwRHN0LT5tX25IZWlnaHQpIHsNCisgICAgICAgIHlzMSA9IHBEc3QtPm1fbkhlaWdodCAtIHk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB5czEgPSBtX25IZWlnaHQ7DQorICAgIH0NCisgICAgaWYoeCA8IDApIHsNCisgICAgICAgIHhzMCA9IC14Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeHMwID0gMDsNCisgICAgfQ0KKyAgICBpZih4ICsgbV9uV2lkdGggPiBwRHN0LT5tX25XaWR0aCkgew0KKyAgICAgICAgeHMxID0gcERzdC0+bV9uV2lkdGggLSB4Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeHMxID0gbV9uV2lkdGg7DQorICAgIH0NCisgICAgaWYoKHlzMCA+PSB5czEpIHx8ICh4czAgPj0geHMxKSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgdyA9IHhzMSAtIHhzMDsNCisgICAgaCA9IHlzMSAtIHlzMDsNCisgICAgaWYoeSA8IDApIHsNCisgICAgICAgIHlkMCA9IDA7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB5ZDAgPSB5Ow0KKyAgICB9DQorICAgIGlmKHggPCAwKSB7DQorICAgICAgICB4ZDAgPSAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeGQwID0geDsNCisgICAgfQ0KKyAgICB4ZDEgPSB4ZDAgKyB3Ow0KKyAgICB5ZDEgPSB5ZDAgKyBoOw0KKyAgICBkMSA9IHhkMCAmIDMxOw0KKyAgICBkMiA9IHhkMSAmIDMxOw0KKyAgICBzMSA9IHhzMCAmIDMxOw0KKyAgICBtYXNrTCA9IDB4ZmZmZmZmZmYgPj4gZDE7DQorICAgIG1hc2tSID0gMHhmZmZmZmZmZiA8PCAoKDMyIC0gKHhkMSAmIDMxKSkgJSAzMik7DQorICAgIG1hc2tNID0gbWFza0wgJiBtYXNrUjsNCisgICAgbGluZVNyYyA9IG1fcERhdGEgKyB5czAgKiBtX25TdHJpZGUgKyAoKHhzMCA+PiA1KSA8PCAyKTsNCisgICAgbGluZUxlZnQgPSBtX25TdHJpZGUgLSAoKHhzMCA+PiA1KSA8PCAyKTsNCisgICAgbGluZURzdCA9IHBEc3QtPm1fcERhdGEgKyB5ZDAgKiBwRHN0LT5tX25TdHJpZGUgKyAoKHhkMCA+PiA1KSA8PCAyKTsNCisgICAgaWYoKHhkMCAmIH4zMSkgPT0gKCh4ZDEgLSAxKSAmIH4zMSkpIHsNCisgICAgICAgIGlmKCh4czAgJiB+MzEpID09ICgoeHMxIC0gMSkgJiB+MzEpKSB7DQorICAgICAgICAgICAgaWYoczEgPiBkMSkgew0KKyAgICAgICAgICAgICAgICBzaGlmdCA9IHMxIC0gZDE7DQorICAgICAgICAgICAgICAgIGZvcih5eSA9IHlkMDsgeXkgPCB5ZDE7IHl5KyspIHsNCisgICAgICAgICAgICAgICAgICAgIHRtcDEgPSBKQklHMl9HRVREV09SRChsaW5lU3JjKSA8PCBzaGlmdDsNCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBKQklHMl9HRVREV09SRChsaW5lRHN0KTsNCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKCh0bXAxIHwgdG1wMikgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICgodG1wMSAmIHRtcDIpICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAoKHRtcDEgXiB0bXAyKSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICgofih0bXAxIF4gdG1wMikpICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKHRtcDEgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbGluZURzdFswXSA9IChGWF9CWVRFKSh0bXAgPj4gMjQpOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZURzdFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZURzdFsyXSA9IChGWF9CWVRFKSh0bXAgPj4gOCk7DQorICAgICAgICAgICAgICAgICAgICBsaW5lRHN0WzNdID0gKEZYX0JZVEUpdG1wOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICBsaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHNoaWZ0ID0gZDEgLSBzMTsNCisgICAgICAgICAgICAgICAgZm9yKHl5ID0geWQwOyB5eSA8IHlkMTsgeXkrKykgew0KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IEpCSUcyX0dFVERXT1JEKGxpbmVTcmMpID4+IHNoaWZ0Ow0KKyAgICAgICAgICAgICAgICAgICAgdG1wMiA9IEpCSUcyX0dFVERXT1JEKGxpbmVEc3QpOw0KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKG9wKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX09SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAoKHRtcDEgfCB0bXAyKSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX0FORDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKCh0bXAxICYgdG1wMikgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICgodG1wMSBeIHRtcDIpICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE5PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKCh+KHRtcDEgXiB0bXAyKSkgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAodG1wMSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBsaW5lRHN0WzBdID0gKEZYX0JZVEUpKHRtcCA+PiAyNCk7DQorICAgICAgICAgICAgICAgICAgICBsaW5lRHN0WzFdID0gKEZYX0JZVEUpKHRtcCA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICBsaW5lRHN0WzJdID0gKEZYX0JZVEUpKHRtcCA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgIGxpbmVEc3RbM10gPSAoRlhfQllURSl0bXA7DQorICAgICAgICAgICAgICAgICAgICBsaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgICAgIGxpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzaGlmdDEgPSBzMSAtIGQxOw0KKyAgICAgICAgICAgIHNoaWZ0MiA9IDMyIC0gc2hpZnQxOw0KKyAgICAgICAgICAgIGZvcih5eSA9IHlkMDsgeXkgPCB5ZDE7IHl5KyspIHsNCisgICAgICAgICAgICAgICAgdG1wMSA9IChKQklHMl9HRVREV09SRChsaW5lU3JjKSA8PCBzaGlmdDEpIHwgKEpCSUcyX0dFVERXT1JEKGxpbmVTcmMgKyA0KSA+PiBzaGlmdDIpOw0KKyAgICAgICAgICAgICAgICB0bXAyID0gSkJJRzJfR0VURFdPUkQobGluZURzdCk7DQorICAgICAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX09SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICgodG1wMSB8IHRtcDIpICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX0FORDoNCisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAoKHRtcDEgJiB0bXAyKSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKCh0bXAxIF4gdG1wMikgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE5PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAoKH4odG1wMSBeIHRtcDIpKSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICh0bXAxICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmVEc3RbMF0gPSAoRlhfQllURSkodG1wID4+IDI0KTsNCisgICAgICAgICAgICAgICAgbGluZURzdFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICBsaW5lRHN0WzJdID0gKEZYX0JZVEUpKHRtcCA+PiA4KTsNCisgICAgICAgICAgICAgICAgbGluZURzdFszXSA9IChGWF9CWVRFKXRtcDsNCisgICAgICAgICAgICAgICAgbGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgIGxpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmKHMxID4gZDEpIHsNCisgICAgICAgICAgICBzaGlmdDEgPSBzMSAtIGQxOw0KKyAgICAgICAgICAgIHNoaWZ0MiA9IDMyIC0gc2hpZnQxOw0KKyAgICAgICAgICAgIG1pZGRsZUR3b3JkcyA9ICh4ZDEgPj4gNSkgLSAoKHhkMCArIDMxKSA+PiA1KTsNCisgICAgICAgICAgICBmb3IoeXkgPSB5ZDA7IHl5IDwgeWQxOyB5eSsrKSB7DQorICAgICAgICAgICAgICAgIHNwID0gbGluZVNyYzsNCisgICAgICAgICAgICAgICAgZHAgPSBsaW5lRHN0Ow0KKyAgICAgICAgICAgICAgICBpZihkMSAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICB0bXAxID0gKEpCSUcyX0dFVERXT1JEKHNwKSA8PCBzaGlmdDEpIHwgKEpCSUcyX0dFVERXT1JEKHNwICsgNCkgPj4gc2hpZnQyKTsNCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBKQklHMl9HRVREV09SRChkcCk7DQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICgodG1wMSB8IHRtcDIpICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAoKHRtcDEgJiB0bXAyKSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKCh0bXAxIF4gdG1wMikgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAoKH4odG1wMSBeIHRtcDIpKSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1JFUExBQ0U6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICh0bXAxICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRwWzBdID0gKEZYX0JZVEUpKHRtcCA+PiAyNCk7DQorICAgICAgICAgICAgICAgICAgICBkcFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMl0gPSAoRlhfQllURSkodG1wID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbM10gPSAoRlhfQllURSl0bXA7DQorICAgICAgICAgICAgICAgICAgICBzcCArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgZHAgKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBmb3IoeHggPSAwOyB4eCA8IG1pZGRsZUR3b3JkczsgeHgrKykgew0KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IChKQklHMl9HRVREV09SRChzcCkgPDwgc2hpZnQxKSB8IChKQklHMl9HRVREV09SRChzcCArIDQpID4+IHNoaWZ0Mik7DQorICAgICAgICAgICAgICAgICAgICB0bXAyID0gSkJJRzJfR0VURFdPUkQoZHApOw0KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKG9wKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX09SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAxIHwgdG1wMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX0FORDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gdG1wMSAmIHRtcDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcDEgXiB0bXAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE5PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gfih0bXAxIF4gdG1wMik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRwWzBdID0gKEZYX0JZVEUpKHRtcCA+PiAyNCk7DQorICAgICAgICAgICAgICAgICAgICBkcFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMl0gPSAoRlhfQllURSkodG1wID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbM10gPSAoRlhfQllURSl0bXA7DQorICAgICAgICAgICAgICAgICAgICBzcCArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgZHAgKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihkMiAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICB0bXAxID0gKEpCSUcyX0dFVERXT1JEKHNwKSA8PCBzaGlmdDEpIHwgKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNwICsgNCkgPCBsaW5lU3JjICsgbGluZUxlZnQgPyBKQklHMl9HRVREV09SRChzcCArIDQpIDogMCkgPj4gc2hpZnQyKTsNCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBKQklHMl9HRVREV09SRChkcCk7DQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICgodG1wMSB8IHRtcDIpICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAoKHRtcDEgJiB0bXAyKSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza1IpIHwgKCh0bXAxIF4gdG1wMikgJiBtYXNrUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAoKH4odG1wMSBeIHRtcDIpKSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1JFUExBQ0U6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICh0bXAxICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRwWzBdID0gKEZYX0JZVEUpKHRtcCA+PiAyNCk7DQorICAgICAgICAgICAgICAgICAgICBkcFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMl0gPSAoRlhfQllURSkodG1wID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbM10gPSAoRlhfQllURSl0bXA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgIGxpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZihzMSA9PSBkMSkgew0KKyAgICAgICAgICAgIG1pZGRsZUR3b3JkcyA9ICh4ZDEgPj4gNSkgLSAoKHhkMCArIDMxKSA+PiA1KTsNCisgICAgICAgICAgICBmb3IoeXkgPSB5ZDA7IHl5IDwgeWQxOyB5eSsrKSB7DQorICAgICAgICAgICAgICAgIHNwID0gbGluZVNyYzsNCisgICAgICAgICAgICAgICAgZHAgPSBsaW5lRHN0Ow0KKyAgICAgICAgICAgICAgICBpZihkMSAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICB0bXAxID0gSkJJRzJfR0VURFdPUkQoc3ApOw0KKyAgICAgICAgICAgICAgICAgICAgdG1wMiA9IEpCSUcyX0dFVERXT1JEKGRwKTsNCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKCh0bXAxIHwgdG1wMikgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICgodG1wMSAmIHRtcDIpICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAoKHRtcDEgXiB0bXAyKSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICgofih0bXAxIF4gdG1wMikpICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKHRtcDEgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZHBbMF0gPSAoRlhfQllURSkodG1wID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzFdID0gKEZYX0JZVEUpKHRtcCA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICBkcFsyXSA9IChGWF9CWVRFKSh0bXAgPj4gOCk7DQorICAgICAgICAgICAgICAgICAgICBkcFszXSA9IChGWF9CWVRFKXRtcDsNCisgICAgICAgICAgICAgICAgICAgIHNwICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICBkcCArPSA0Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZvcih4eCA9IDA7IHh4IDwgbWlkZGxlRHdvcmRzOyB4eCsrKSB7DQorICAgICAgICAgICAgICAgICAgICB0bXAxID0gSkJJRzJfR0VURFdPUkQoc3ApOw0KKyAgICAgICAgICAgICAgICAgICAgdG1wMiA9IEpCSUcyX0dFVERXT1JEKGRwKTsNCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gdG1wMSB8IHRtcDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcDEgJiB0bXAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAxIF4gdG1wMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IH4odG1wMSBeIHRtcDIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gdG1wMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkcFswXSA9IChGWF9CWVRFKSh0bXAgPj4gMjQpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMV0gPSAoRlhfQllURSkodG1wID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzJdID0gKEZYX0JZVEUpKHRtcCA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzNdID0gKEZYX0JZVEUpdG1wOw0KKyAgICAgICAgICAgICAgICAgICAgc3AgKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIGRwICs9IDQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYoZDIgIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IEpCSUcyX0dFVERXT1JEKHNwKTsNCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBKQklHMl9HRVREV09SRChkcCk7DQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICgodG1wMSB8IHRtcDIpICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAoKHRtcDEgJiB0bXAyKSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza1IpIHwgKCh0bXAxIF4gdG1wMikgJiBtYXNrUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAoKH4odG1wMSBeIHRtcDIpKSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1JFUExBQ0U6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICh0bXAxICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRwWzBdID0gKEZYX0JZVEUpKHRtcCA+PiAyNCk7DQorICAgICAgICAgICAgICAgICAgICBkcFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMl0gPSAoRlhfQllURSkodG1wID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbM10gPSAoRlhfQllURSl0bXA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgIGxpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc2hpZnQxID0gZDEgLSBzMTsNCisgICAgICAgICAgICBzaGlmdDIgPSAzMiAtIHNoaWZ0MTsNCisgICAgICAgICAgICBtaWRkbGVEd29yZHMgPSAoeGQxID4+IDUpIC0gKCh4ZDAgKyAzMSkgPj4gNSk7DQorICAgICAgICAgICAgZm9yKHl5ID0geWQwOyB5eSA8IHlkMTsgeXkrKykgew0KKyAgICAgICAgICAgICAgICBzcCA9IGxpbmVTcmM7DQorICAgICAgICAgICAgICAgIGRwID0gbGluZURzdDsNCisgICAgICAgICAgICAgICAgaWYoZDEgIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IEpCSUcyX0dFVERXT1JEKHNwKSA+PiBzaGlmdDE7DQorICAgICAgICAgICAgICAgICAgICB0bXAyID0gSkJJRzJfR0VURFdPUkQoZHApOw0KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKG9wKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX09SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAoKHRtcDEgfCB0bXAyKSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX0FORDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKCh0bXAxICYgdG1wMikgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICgodG1wMSBeIHRtcDIpICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE5PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKCh+KHRtcDEgXiB0bXAyKSkgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAodG1wMSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkcFswXSA9IChGWF9CWVRFKSh0bXAgPj4gMjQpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMV0gPSAoRlhfQllURSkodG1wID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzJdID0gKEZYX0JZVEUpKHRtcCA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzNdID0gKEZYX0JZVEUpdG1wOw0KKyAgICAgICAgICAgICAgICAgICAgZHAgKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBmb3IoeHggPSAwOyB4eCA8IG1pZGRsZUR3b3JkczsgeHgrKykgew0KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IChKQklHMl9HRVREV09SRChzcCkgPDwgc2hpZnQyKSB8ICgoSkJJRzJfR0VURFdPUkQoc3AgKyA0KSkgPj4gc2hpZnQxKTsNCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBKQklHMl9HRVREV09SRChkcCk7DQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcDEgfCB0bXAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAxICYgdG1wMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gdG1wMSBeIHRtcDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB+KHRtcDEgXiB0bXAyKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1JFUExBQ0U6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZHBbMF0gPSAoRlhfQllURSkodG1wID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzFdID0gKEZYX0JZVEUpKHRtcCA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICBkcFsyXSA9IChGWF9CWVRFKSh0bXAgPj4gOCk7DQorICAgICAgICAgICAgICAgICAgICBkcFszXSA9IChGWF9CWVRFKXRtcDsNCisgICAgICAgICAgICAgICAgICAgIHNwICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICBkcCArPSA0Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmKGQyICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHRtcDEgPSAoSkJJRzJfR0VURFdPUkQoc3ApIDw8IHNoaWZ0MikgfCAoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3AgKyA0KSA8IGxpbmVTcmMgKyBsaW5lTGVmdCA/IEpCSUcyX0dFVERXT1JEKHNwICsgNCkgOiAwKSA+PiBzaGlmdDEpOw0KKyAgICAgICAgICAgICAgICAgICAgdG1wMiA9IEpCSUcyX0dFVERXT1JEKGRwKTsNCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza1IpIHwgKCh0bXAxIHwgdG1wMikgJiBtYXNrUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICgodG1wMSAmIHRtcDIpICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAoKHRtcDEgXiB0bXAyKSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICgofih0bXAxIF4gdG1wMikpICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza1IpIHwgKHRtcDEgJiBtYXNrUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZHBbMF0gPSAoRlhfQllURSkodG1wID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzFdID0gKEZYX0JZVEUpKHRtcCA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICBkcFsyXSA9IChGWF9CWVRFKSh0bXAgPj4gOCk7DQorICAgICAgICAgICAgICAgICAgICBkcFszXSA9IChGWF9CWVRFKXRtcDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lU3JjICs9IG1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgbGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAxOw0KK30NCitGWF9CT09MIENKQmlnMl9JbWFnZTo6Y29tcG9zZVRvX29wdDIoQ0pCaWcyX0ltYWdlICpwRHN0LCBGWF9JTlQzMiB4LCBGWF9JTlQzMiB5LCBKQmlnMkNvbXBvc2VPcCBvcCwgY29uc3QgRlhfUkVDVCogcFNyY1JlY3QpDQorew0KKyAgICBGWF9JTlQzMiB4czAsIHlzMCwgeHMxLCB5czEsIHhkMCwgeWQwLCB4ZDEsIHlkMSwgeHgsIHl5LCB3LCBoLCBtaWRkbGVEd29yZHMsIGxpbmVMZWZ0Ow0KKyAgICBGWF9EV09SRCBzMSwgZDEsIGQyLCBzaGlmdCwgc2hpZnQxLCBzaGlmdDIsIHRtcCwgdG1wMSwgdG1wMiwgbWFza0wsIG1hc2tSLCBtYXNrTTsNCisgICAgRlhfQllURSAqbGluZVNyYywgKmxpbmVEc3QsICpzcCwgKmRwOw0KKyAgICBGWF9JTlQzMiBzdywgc2g7DQorICAgIGlmICghbV9wRGF0YSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICh4IDwgLTEwNDg1NzYgfHwgeCA+IDEwNDg1NzYgfHwgeSA8IC0xMDQ4NTc2IHx8IHkgPiAxMDQ4NTc2KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgc3cgPSBwU3JjUmVjdC0+V2lkdGgoKTsNCisgICAgc2ggPSBwU3JjUmVjdC0+SGVpZ2h0KCk7DQorICAgIGlmKHkgPCAwKSB7DQorICAgICAgICB5czAgPSAteTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHlzMCA9IDA7DQorICAgIH0NCisgICAgaWYoeSArIHNoID4gcERzdC0+bV9uSGVpZ2h0KSB7DQorICAgICAgICB5czEgPSBwRHN0LT5tX25IZWlnaHQgLSB5Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeXMxID0gc2g7DQorICAgIH0NCisgICAgaWYoeCA8IDApIHsNCisgICAgICAgIHhzMCA9IC14Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeHMwID0gMDsNCisgICAgfQ0KKyAgICBpZih4ICsgc3cgPiBwRHN0LT5tX25XaWR0aCkgew0KKyAgICAgICAgeHMxID0gcERzdC0+bV9uV2lkdGggLSB4Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeHMxID0gc3c7DQorICAgIH0NCisgICAgaWYoKHlzMCA+PSB5czEpIHx8ICh4czAgPj0geHMxKSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgdyA9IHhzMSAtIHhzMDsNCisgICAgaCA9IHlzMSAtIHlzMDsNCisgICAgaWYoeSA8IDApIHsNCisgICAgICAgIHlkMCA9IDA7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB5ZDAgPSB5Ow0KKyAgICB9DQorICAgIGlmKHggPCAwKSB7DQorICAgICAgICB4ZDAgPSAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeGQwID0geDsNCisgICAgfQ0KKyAgICB4ZDEgPSB4ZDAgKyB3Ow0KKyAgICB5ZDEgPSB5ZDAgKyBoOw0KKyAgICBkMSA9IHhkMCAmIDMxOw0KKyAgICBkMiA9IHhkMSAmIDMxOw0KKyAgICBzMSA9IHhzMCAmIDMxOw0KKyAgICBtYXNrTCA9IDB4ZmZmZmZmZmYgPj4gZDE7DQorICAgIG1hc2tSID0gMHhmZmZmZmZmZiA8PCAoKDMyIC0gKHhkMSAmIDMxKSkgJSAzMik7DQorICAgIG1hc2tNID0gbWFza0wgJiBtYXNrUjsNCisgICAgbGluZVNyYyA9IG1fcERhdGEgKyAocFNyY1JlY3QtPnRvcCArIHlzMCkgKiBtX25TdHJpZGUgKyAoKCh4czAgKyBwU3JjUmVjdC0+bGVmdCkgPj4gNSkgPDwgMik7DQorICAgIGxpbmVMZWZ0ID0gbV9uU3RyaWRlIC0gKCh4czAgPj4gNSkgPDwgMik7DQorICAgIGxpbmVEc3QgPSBwRHN0LT5tX3BEYXRhICsgeWQwICogcERzdC0+bV9uU3RyaWRlICsgKCh4ZDAgPj4gNSkgPDwgMik7DQorICAgIGlmKCh4ZDAgJiB+MzEpID09ICgoeGQxIC0gMSkgJiB+MzEpKSB7DQorICAgICAgICBpZigoeHMwICYgfjMxKSA9PSAoKHhzMSAtIDEpICYgfjMxKSkgew0KKyAgICAgICAgICAgIGlmKHMxID4gZDEpIHsNCisgICAgICAgICAgICAgICAgc2hpZnQgPSBzMSAtIGQxOw0KKyAgICAgICAgICAgICAgICBmb3IoeXkgPSB5ZDA7IHl5IDwgeWQxOyB5eSsrKSB7DQorICAgICAgICAgICAgICAgICAgICB0bXAxID0gSkJJRzJfR0VURFdPUkQobGluZVNyYykgPDwgc2hpZnQ7DQorICAgICAgICAgICAgICAgICAgICB0bXAyID0gSkJJRzJfR0VURFdPUkQobGluZURzdCk7DQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICgodG1wMSB8IHRtcDIpICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAoKHRtcDEgJiB0bXAyKSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKCh0bXAxIF4gdG1wMikgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAoKH4odG1wMSBeIHRtcDIpKSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1JFUExBQ0U6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICh0bXAxICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGxpbmVEc3RbMF0gPSAoRlhfQllURSkodG1wID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgIGxpbmVEc3RbMV0gPSAoRlhfQllURSkodG1wID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgIGxpbmVEc3RbMl0gPSAoRlhfQllURSkodG1wID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZURzdFszXSA9IChGWF9CWVRFKXRtcDsNCisgICAgICAgICAgICAgICAgICAgIGxpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZURzdCArPSBwRHN0LT5tX25TdHJpZGU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBzaGlmdCA9IGQxIC0gczE7DQorICAgICAgICAgICAgICAgIGZvcih5eSA9IHlkMDsgeXkgPCB5ZDE7IHl5KyspIHsNCisgICAgICAgICAgICAgICAgICAgIHRtcDEgPSBKQklHMl9HRVREV09SRChsaW5lU3JjKSA+PiBzaGlmdDsNCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBKQklHMl9HRVREV09SRChsaW5lRHN0KTsNCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKCh0bXAxIHwgdG1wMikgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICgodG1wMSAmIHRtcDIpICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAoKHRtcDEgXiB0bXAyKSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICgofih0bXAxIF4gdG1wMikpICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKHRtcDEgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgbGluZURzdFswXSA9IChGWF9CWVRFKSh0bXAgPj4gMjQpOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZURzdFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZURzdFsyXSA9IChGWF9CWVRFKSh0bXAgPj4gOCk7DQorICAgICAgICAgICAgICAgICAgICBsaW5lRHN0WzNdID0gKEZYX0JZVEUpdG1wOw0KKyAgICAgICAgICAgICAgICAgICAgbGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgICAgICBsaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc2hpZnQxID0gczEgLSBkMTsNCisgICAgICAgICAgICBzaGlmdDIgPSAzMiAtIHNoaWZ0MTsNCisgICAgICAgICAgICBmb3IoeXkgPSB5ZDA7IHl5IDwgeWQxOyB5eSsrKSB7DQorICAgICAgICAgICAgICAgIHRtcDEgPSAoSkJJRzJfR0VURFdPUkQobGluZVNyYykgPDwgc2hpZnQxKSB8IChKQklHMl9HRVREV09SRChsaW5lU3JjICsgNCkgPj4gc2hpZnQyKTsNCisgICAgICAgICAgICAgICAgdG1wMiA9IEpCSUcyX0dFVERXT1JEKGxpbmVEc3QpOw0KKyAgICAgICAgICAgICAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAoKHRtcDEgfCB0bXAyKSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKCh0bXAxICYgdG1wMikgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tNKSB8ICgodG1wMSBeIHRtcDIpICYgbWFza00pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza00pIHwgKCh+KHRtcDEgXiB0bXAyKSkgJiBtYXNrTSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRToNCisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTSkgfCAodG1wMSAmIG1hc2tNKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBsaW5lRHN0WzBdID0gKEZYX0JZVEUpKHRtcCA+PiAyNCk7DQorICAgICAgICAgICAgICAgIGxpbmVEc3RbMV0gPSAoRlhfQllURSkodG1wID4+IDE2KTsNCisgICAgICAgICAgICAgICAgbGluZURzdFsyXSA9IChGWF9CWVRFKSh0bXAgPj4gOCk7DQorICAgICAgICAgICAgICAgIGxpbmVEc3RbM10gPSAoRlhfQllURSl0bXA7DQorICAgICAgICAgICAgICAgIGxpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZihzMSA+IGQxKSB7DQorICAgICAgICAgICAgc2hpZnQxID0gczEgLSBkMTsNCisgICAgICAgICAgICBzaGlmdDIgPSAzMiAtIHNoaWZ0MTsNCisgICAgICAgICAgICBtaWRkbGVEd29yZHMgPSAoeGQxID4+IDUpIC0gKCh4ZDAgKyAzMSkgPj4gNSk7DQorICAgICAgICAgICAgZm9yKHl5ID0geWQwOyB5eSA8IHlkMTsgeXkrKykgew0KKyAgICAgICAgICAgICAgICBzcCA9IGxpbmVTcmM7DQorICAgICAgICAgICAgICAgIGRwID0gbGluZURzdDsNCisgICAgICAgICAgICAgICAgaWYoZDEgIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IChKQklHMl9HRVREV09SRChzcCkgPDwgc2hpZnQxKSB8IChKQklHMl9HRVREV09SRChzcCArIDQpID4+IHNoaWZ0Mik7DQorICAgICAgICAgICAgICAgICAgICB0bXAyID0gSkJJRzJfR0VURFdPUkQoZHApOw0KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKG9wKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX09SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAoKHRtcDEgfCB0bXAyKSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX0FORDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKCh0bXAxICYgdG1wMikgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICgodG1wMSBeIHRtcDIpICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE5PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKCh+KHRtcDEgXiB0bXAyKSkgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAodG1wMSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkcFswXSA9IChGWF9CWVRFKSh0bXAgPj4gMjQpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMV0gPSAoRlhfQllURSkodG1wID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzJdID0gKEZYX0JZVEUpKHRtcCA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzNdID0gKEZYX0JZVEUpdG1wOw0KKyAgICAgICAgICAgICAgICAgICAgc3AgKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIGRwICs9IDQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZm9yKHh4ID0gMDsgeHggPCBtaWRkbGVEd29yZHM7IHh4KyspIHsNCisgICAgICAgICAgICAgICAgICAgIHRtcDEgPSAoSkJJRzJfR0VURFdPUkQoc3ApIDw8IHNoaWZ0MSkgfCAoSkJJRzJfR0VURFdPUkQoc3AgKyA0KSA+PiBzaGlmdDIpOw0KKyAgICAgICAgICAgICAgICAgICAgdG1wMiA9IEpCSUcyX0dFVERXT1JEKGRwKTsNCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gdG1wMSB8IHRtcDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcDEgJiB0bXAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAxIF4gdG1wMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IH4odG1wMSBeIHRtcDIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gdG1wMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkcFswXSA9IChGWF9CWVRFKSh0bXAgPj4gMjQpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMV0gPSAoRlhfQllURSkodG1wID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzJdID0gKEZYX0JZVEUpKHRtcCA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzNdID0gKEZYX0JZVEUpdG1wOw0KKyAgICAgICAgICAgICAgICAgICAgc3AgKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIGRwICs9IDQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYoZDIgIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IChKQklHMl9HRVREV09SRChzcCkgPDwgc2hpZnQxKSB8ICgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzcCArIDQpIDwgbGluZVNyYyArIGxpbmVMZWZ0ID8gSkJJRzJfR0VURFdPUkQoc3AgKyA0KSA6IDApID4+IHNoaWZ0Mik7DQorICAgICAgICAgICAgICAgICAgICB0bXAyID0gSkJJRzJfR0VURFdPUkQoZHApOw0KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKG9wKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX09SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAoKHRtcDEgfCB0bXAyKSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX0FORDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza1IpIHwgKCh0bXAxICYgdG1wMikgJiBtYXNrUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICgodG1wMSBeIHRtcDIpICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE5PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza1IpIHwgKCh+KHRtcDEgXiB0bXAyKSkgJiBtYXNrUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAodG1wMSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkcFswXSA9IChGWF9CWVRFKSh0bXAgPj4gMjQpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMV0gPSAoRlhfQllURSkodG1wID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzJdID0gKEZYX0JZVEUpKHRtcCA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzNdID0gKEZYX0JZVEUpdG1wOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYoczEgPT0gZDEpIHsNCisgICAgICAgICAgICBtaWRkbGVEd29yZHMgPSAoeGQxID4+IDUpIC0gKCh4ZDAgKyAzMSkgPj4gNSk7DQorICAgICAgICAgICAgZm9yKHl5ID0geWQwOyB5eSA8IHlkMTsgeXkrKykgew0KKyAgICAgICAgICAgICAgICBzcCA9IGxpbmVTcmM7DQorICAgICAgICAgICAgICAgIGRwID0gbGluZURzdDsNCisgICAgICAgICAgICAgICAgaWYoZDEgIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IEpCSUcyX0dFVERXT1JEKHNwKTsNCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBKQklHMl9HRVREV09SRChkcCk7DQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICgodG1wMSB8IHRtcDIpICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAoKHRtcDEgJiB0bXAyKSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKCh0bXAxIF4gdG1wMikgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAoKH4odG1wMSBeIHRtcDIpKSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1JFUExBQ0U6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICh0bXAxICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRwWzBdID0gKEZYX0JZVEUpKHRtcCA+PiAyNCk7DQorICAgICAgICAgICAgICAgICAgICBkcFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMl0gPSAoRlhfQllURSkodG1wID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbM10gPSAoRlhfQllURSl0bXA7DQorICAgICAgICAgICAgICAgICAgICBzcCArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgZHAgKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBmb3IoeHggPSAwOyB4eCA8IG1pZGRsZUR3b3JkczsgeHgrKykgew0KKyAgICAgICAgICAgICAgICAgICAgdG1wMSA9IEpCSUcyX0dFVERXT1JEKHNwKTsNCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBKQklHMl9HRVREV09SRChkcCk7DQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcDEgfCB0bXAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAxICYgdG1wMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gdG1wMSBeIHRtcDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB+KHRtcDEgXiB0bXAyKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1JFUExBQ0U6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZHBbMF0gPSAoRlhfQllURSkodG1wID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzFdID0gKEZYX0JZVEUpKHRtcCA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICBkcFsyXSA9IChGWF9CWVRFKSh0bXAgPj4gOCk7DQorICAgICAgICAgICAgICAgICAgICBkcFszXSA9IChGWF9CWVRFKXRtcDsNCisgICAgICAgICAgICAgICAgICAgIHNwICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICBkcCArPSA0Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmKGQyICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHRtcDEgPSBKQklHMl9HRVREV09SRChzcCk7DQorICAgICAgICAgICAgICAgICAgICB0bXAyID0gSkJJRzJfR0VURFdPUkQoZHApOw0KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKG9wKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX09SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAoKHRtcDEgfCB0bXAyKSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX0FORDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza1IpIHwgKCh0bXAxICYgdG1wMikgJiBtYXNrUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICgodG1wMSBeIHRtcDIpICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE5PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza1IpIHwgKCh+KHRtcDEgXiB0bXAyKSkgJiBtYXNrUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAodG1wMSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkcFswXSA9IChGWF9CWVRFKSh0bXAgPj4gMjQpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMV0gPSAoRlhfQllURSkodG1wID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzJdID0gKEZYX0JZVEUpKHRtcCA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzNdID0gKEZYX0JZVEUpdG1wOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxpbmVTcmMgKz0gbV9uU3RyaWRlOw0KKyAgICAgICAgICAgICAgICBsaW5lRHN0ICs9IHBEc3QtPm1fblN0cmlkZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNoaWZ0MSA9IGQxIC0gczE7DQorICAgICAgICAgICAgc2hpZnQyID0gMzIgLSBzaGlmdDE7DQorICAgICAgICAgICAgbWlkZGxlRHdvcmRzID0gKHhkMSA+PiA1KSAtICgoeGQwICsgMzEpID4+IDUpOw0KKyAgICAgICAgICAgIGZvcih5eSA9IHlkMDsgeXkgPCB5ZDE7IHl5KyspIHsNCisgICAgICAgICAgICAgICAgc3AgPSBsaW5lU3JjOw0KKyAgICAgICAgICAgICAgICBkcCA9IGxpbmVEc3Q7DQorICAgICAgICAgICAgICAgIGlmKGQxICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAgIHRtcDEgPSBKQklHMl9HRVREV09SRChzcCkgPj4gc2hpZnQxOw0KKyAgICAgICAgICAgICAgICAgICAgdG1wMiA9IEpCSUcyX0dFVERXT1JEKGRwKTsNCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChvcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKCh0bXAxIHwgdG1wMikgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9BTkQ6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICgodG1wMSAmIHRtcDIpICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrTCkgfCAoKHRtcDEgXiB0bXAyKSAmIG1hc2tMKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hOT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tMKSB8ICgofih0bXAxIF4gdG1wMikpICYgbWFza0wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfUkVQTEFDRToNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza0wpIHwgKHRtcDEgJiBtYXNrTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZHBbMF0gPSAoRlhfQllURSkodG1wID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgIGRwWzFdID0gKEZYX0JZVEUpKHRtcCA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICBkcFsyXSA9IChGWF9CWVRFKSh0bXAgPj4gOCk7DQorICAgICAgICAgICAgICAgICAgICBkcFszXSA9IChGWF9CWVRFKXRtcDsNCisgICAgICAgICAgICAgICAgICAgIGRwICs9IDQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZm9yKHh4ID0gMDsgeHggPCBtaWRkbGVEd29yZHM7IHh4KyspIHsNCisgICAgICAgICAgICAgICAgICAgIHRtcDEgPSAoSkJJRzJfR0VURFdPUkQoc3ApIDw8IHNoaWZ0MikgfCAoKEpCSUcyX0dFVERXT1JEKHNwICsgNCkpID4+IHNoaWZ0MSk7DQorICAgICAgICAgICAgICAgICAgICB0bXAyID0gSkJJRzJfR0VURFdPUkQoZHApOw0KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKG9wKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX09SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAxIHwgdG1wMjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX0FORDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gdG1wMSAmIHRtcDI7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcDEgXiB0bXAyOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfWE5PUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gfih0bXAxIF4gdG1wMik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9SRVBMQUNFOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSB0bXAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRwWzBdID0gKEZYX0JZVEUpKHRtcCA+PiAyNCk7DQorICAgICAgICAgICAgICAgICAgICBkcFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMl0gPSAoRlhfQllURSkodG1wID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbM10gPSAoRlhfQllURSl0bXA7DQorICAgICAgICAgICAgICAgICAgICBzcCArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgZHAgKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZihkMiAhPSAwKSB7DQorICAgICAgICAgICAgICAgICAgICB0bXAxID0gKEpCSUcyX0dFVERXT1JEKHNwKSA8PCBzaGlmdDIpIHwgKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNwICsgNCkgPCBsaW5lU3JjICsgbGluZUxlZnQgPyBKQklHMl9HRVREV09SRChzcCArIDQpIDogMCkgPj4gc2hpZnQxKTsNCisgICAgICAgICAgICAgICAgICAgIHRtcDIgPSBKQklHMl9HRVREV09SRChkcCk7DQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gob3ApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfT1I6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICgodG1wMSB8IHRtcDIpICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEpCSUcyX0NPTVBPU0VfQU5EOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAoKHRtcDEgJiB0bXAyKSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1hPUjoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gKHRtcDIgJiB+bWFza1IpIHwgKCh0bXAxIF4gdG1wMikgJiBtYXNrUik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSkJJRzJfQ09NUE9TRV9YTk9SOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSAodG1wMiAmIH5tYXNrUikgfCAoKH4odG1wMSBeIHRtcDIpKSAmIG1hc2tSKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBKQklHMl9DT01QT1NFX1JFUExBQ0U6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICh0bXAyICYgfm1hc2tSKSB8ICh0bXAxICYgbWFza1IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRwWzBdID0gKEZYX0JZVEUpKHRtcCA+PiAyNCk7DQorICAgICAgICAgICAgICAgICAgICBkcFsxXSA9IChGWF9CWVRFKSh0bXAgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbMl0gPSAoRlhfQllURSkodG1wID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgZHBbM10gPSAoRlhfQllURSl0bXA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbGluZVNyYyArPSBtX25TdHJpZGU7DQorICAgICAgICAgICAgICAgIGxpbmVEc3QgKz0gcERzdC0+bV9uU3RyaWRlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gMTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9JbWFnZS5oIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9JbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjlmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0ltYWdlLmgKQEAgLTAsMCArMSw2OCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfSkJJRzJfSU1BR0VfSF8NCisjZGVmaW5lIF9KQklHMl9JTUFHRV9IXw0KKyNpbmNsdWRlICJKQmlnMl9EZWZpbmUuaCINCisjaW5jbHVkZSAiSkJpZzJfTW9kdWxlLmgiDQordHlwZWRlZiBlbnVtIHsNCisgICAgSkJJRzJfQ09NUE9TRV9PUgkJPSAwLA0KKyAgICBKQklHMl9DT01QT1NFX0FORAkJPSAxLA0KKyAgICBKQklHMl9DT01QT1NFX1hPUgkJPSAyLA0KKyAgICBKQklHMl9DT01QT1NFX1hOT1IJCT0gMywNCisgICAgSkJJRzJfQ09NUE9TRV9SRVBMQUNFCT0gNA0KK30gSkJpZzJDb21wb3NlT3A7DQorc3RydWN0IEZYX1JFQ1Q7DQorY2xhc3MgQ0pCaWcyX0ltYWdlIDogcHVibGljIENKQmlnMl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDSkJpZzJfSW1hZ2UoRlhfSU5UMzIgdywgRlhfSU5UMzIgaCk7DQorDQorICAgIENKQmlnMl9JbWFnZShGWF9JTlQzMiB3LCBGWF9JTlQzMiBoLCBGWF9JTlQzMiBzdHJpZGUsIEZYX0JZVEUqcEJ1Zik7DQorDQorICAgIENKQmlnMl9JbWFnZShDSkJpZzJfSW1hZ2UgJmltKTsNCisNCisgICAgfkNKQmlnMl9JbWFnZSgpOw0KKw0KKyAgICBGWF9CT09MIGdldFBpeGVsKEZYX0lOVDMyIHgsIEZYX0lOVDMyIHkpOw0KKw0KKyAgICBGWF9JTlQzMiBzZXRQaXhlbChGWF9JTlQzMiB4LCBGWF9JTlQzMiB5LCBGWF9CT09MIHYpOw0KKw0KKyAgICB2b2lkIGNvcHlMaW5lKEZYX0lOVDMyIGhUbywgRlhfSU5UMzIgaEZyb20pOw0KKw0KKyAgICB2b2lkIGZpbGwoRlhfQk9PTCB2KTsNCisNCisgICAgRlhfQk9PTCBjb21wb3NlVG8oQ0pCaWcyX0ltYWdlICpwRHN0LCBGWF9JTlQzMiB4LCBGWF9JTlQzMiB5LCBKQmlnMkNvbXBvc2VPcCBvcCk7DQorICAgIEZYX0JPT0wgY29tcG9zZVRvKENKQmlnMl9JbWFnZSAqcERzdCwgRlhfSU5UMzIgeCwgRlhfSU5UMzIgeSwgSkJpZzJDb21wb3NlT3Agb3AsIGNvbnN0IEZYX1JFQ1QqIHBTcmNSZWN0KTsNCisNCisgICAgRlhfQk9PTCBjb21wb3NlVG9fdW5vcHQoQ0pCaWcyX0ltYWdlICpwRHN0LCBGWF9JTlQzMiB4LCBGWF9JTlQzMiB5LCBKQmlnMkNvbXBvc2VPcCBvcCk7DQorDQorICAgIEZYX0JPT0wgY29tcG9zZVRvX29wdChDSkJpZzJfSW1hZ2UgKnBEc3QsIEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEpCaWcyQ29tcG9zZU9wIG9wKTsNCisNCisgICAgRlhfQk9PTCBjb21wb3NlVG9fb3B0MihDSkJpZzJfSW1hZ2UgKnBEc3QsIEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEpCaWcyQ29tcG9zZU9wIG9wKTsNCisgICAgRlhfQk9PTCBjb21wb3NlVG9fb3B0MihDSkJpZzJfSW1hZ2UgKnBEc3QsIEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEpCaWcyQ29tcG9zZU9wIG9wLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCk7DQorDQorICAgIEZYX0JPT0wgY29tcG9zZUZyb20oRlhfSU5UMzIgeCwgRlhfSU5UMzIgeSwgQ0pCaWcyX0ltYWdlICpwU3JjLCBKQmlnMkNvbXBvc2VPcCBvcCk7DQorICAgIEZYX0JPT0wgY29tcG9zZUZyb20oRlhfSU5UMzIgeCwgRlhfSU5UMzIgeSwgQ0pCaWcyX0ltYWdlICpwU3JjLCBKQmlnMkNvbXBvc2VPcCBvcCwgY29uc3QgRlhfUkVDVCogcFNyY1JlY3QpOw0KKyAgICBDSkJpZzJfSW1hZ2UgKnN1YkltYWdlX3Vub3B0KEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEZYX0lOVDMyIHcsIEZYX0lOVDMyIGgpOw0KKw0KKyAgICBDSkJpZzJfSW1hZ2UgKnN1YkltYWdlKEZYX0lOVDMyIHgsIEZYX0lOVDMyIHksIEZYX0lOVDMyIHcsIEZYX0lOVDMyIGgpOw0KKw0KKyAgICB2b2lkIGV4cGFuZChGWF9JTlQzMiBoLCBGWF9CT09MIHYpOw0KK3B1YmxpYzoNCisNCisgICAgRlhfSU5UMzIgbV9uV2lkdGg7DQorDQorICAgIEZYX0lOVDMyIG1fbkhlaWdodDsNCisNCisgICAgRlhfSU5UMzIgbV9uU3RyaWRlOw0KKw0KKyAgICBGWF9CWVRFICptX3BEYXRhOw0KKw0KKyAgICBGWF9CT09MIG1fYk5lZWRGcmVlOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9MaXN0LmggYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX0xpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzM3ZDllCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9MaXN0LmgKQEAgLTAsMCArMSw2NyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfSkJJRzJfTElTVF9IXw0KKyNkZWZpbmUgX0pCSUcyX0xJU1RfSF8NCisjaW5jbHVkZSAiSkJpZzJfRGVmaW5lLmgiDQorI2luY2x1ZGUgIkpCaWcyX09iamVjdC5oIg0KK3RlbXBsYXRlIDxjbGFzcyBUWVBFPg0KK2NsYXNzIENKQmlnMl9MaXN0IDogcHVibGljIENKQmlnMl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICBDSkJpZzJfTGlzdChGWF9JTlQzMiBuU2l6ZSA9IDgpDQorICAgIHsNCisgICAgICAgIG1fblNpemUgPSBuU2l6ZTsNCisgICAgICAgIG1fcEFycmF5ID0gKFRZUEUqKiltX3BNb2R1bGUtPkpCaWcyX01hbGxvYzIoc2l6ZW9mKFRZUEUqKSwgblNpemUpOw0KKyAgICAgICAgbV9uTGVuZ3RoID0gMDsNCisgICAgfQ0KKw0KKyAgICB+Q0pCaWcyX0xpc3QoKQ0KKyAgICB7DQorICAgICAgICBjbGVhcigpOw0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKG1fcEFycmF5KTsNCisgICAgfQ0KKw0KKyAgICB2b2lkIGNsZWFyKCkNCisgICAgew0KKyAgICAgICAgRlhfSU5UMzIgaTsNCisgICAgICAgIGZvcihpID0gMDsgaSA8IG1fbkxlbmd0aDsgaSsrKSB7DQorICAgICAgICAgICAgZGVsZXRlIG1fcEFycmF5W2ldOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9uTGVuZ3RoID0gMDsNCisgICAgfQ0KKw0KKyAgICB2b2lkIGFkZEl0ZW0oVFlQRSAqcEl0ZW0pDQorICAgIHsNCisgICAgICAgIGlmKG1fbkxlbmd0aCA+PSBtX25TaXplKSB7DQorICAgICAgICAgICAgbV9uU2l6ZSArPSA4Ow0KKyAgICAgICAgICAgIG1fcEFycmF5ID0gKFRZUEUqKiltX3BNb2R1bGUtPkpCaWcyX1JlYWxsb2MobV9wQXJyYXksIHNpemVvZihUWVBFKikqbV9uU2l6ZSk7DQorICAgICAgICB9DQorICAgICAgICBtX3BBcnJheVttX25MZW5ndGgrK10gPSBwSXRlbTsNCisgICAgfQ0KKw0KKw0KKyAgICBGWF9JTlQzMiBnZXRMZW5ndGgoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uTGVuZ3RoOw0KKyAgICB9DQorDQorICAgIFRZUEUgKmdldEF0KEZYX0lOVDMyIG5JbmRleCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEFycmF5W25JbmRleF07DQorICAgIH0NCisNCisgICAgVFlQRSAqZ2V0TGFzdCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BBcnJheVttX25MZW5ndGggLSAxXTsNCisgICAgfQ0KK3ByaXZhdGU6DQorICAgIEZYX0lOVDMyIG1fblNpemU7DQorICAgIFRZUEUgKiptX3BBcnJheTsNCisgICAgRlhfSU5UMzIgbV9uTGVuZ3RoOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9Nb2R1bGUuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfTW9kdWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZTVhZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfTW9kdWxlLmgKQEAgLTAsMCArMSwzMiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfSkJJRzJfTU9EVUxFX0hfDQorI2RlZmluZSBfSkJJRzJfTU9EVUxFX0hfDQorI2luY2x1ZGUgIkpCaWcyX0RlZmluZS5oIg0KK2NsYXNzIENKQmlnMl9Nb2R1bGUNCit7DQorcHVibGljOg0KKw0KKyAgICB2aXJ0dWFsIHZvaWQgKkpCaWcyX01hbGxvYyhGWF9EV09SRCBkd1NpemUpID0gMDsNCisNCisgICAgdmlydHVhbCB2b2lkICpKQmlnMl9NYWxsb2MyKEZYX0RXT1JEIG51bSwgRlhfRFdPUkQgZHdTaXplKSA9IDA7DQorDQorICAgIHZpcnR1YWwgdm9pZCAqSkJpZzJfTWFsbG9jMyhGWF9EV09SRCBudW0sIEZYX0RXT1JEIGR3U2l6ZSwgRlhfRFdPUkQgZHdTaXplMikgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQgKkpCaWcyX1JlYWxsb2MoRlhfTFBWT0lEIHBNZW0sIEZYX0RXT1JEIGR3U2l6ZSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQgSkJpZzJfRnJlZShGWF9MUFZPSUQgcE1lbSkgPSAwOw0KKw0KKyAgICB2aXJ0dWFsIHZvaWQgSkJpZzJfQXNzZXJ0KEZYX0lOVDMyIG5FeHByZXNzaW9uKSB7fTsNCisNCisgICAgdmlydHVhbAl2b2lkIEpCaWcyX0Vycm9yKEZYX0xQQ1NUUiBmb3JtYXQsIC4uLikge307DQorDQorICAgIHZpcnR1YWwgdm9pZCBKQmlnMl9XYXJuKEZYX0xQQ1NUUiBmb3JtYXQsIC4uLikge307DQorDQorICAgIHZpcnR1YWwgdm9pZCBKQmlnMl9Mb2coRlhfTFBDU1RSIGZvcm1hdCwgLi4uKSB7fTsNCit9Ow0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfT2JqZWN0LmNwcCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTk0ZjBlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9PYmplY3QuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICJKQmlnMl9PYmplY3QuaCINCisjaW5jbHVkZSAiSkJpZzJfTW9kdWxlLmgiDQordm9pZCAqQ0pCaWcyX09iamVjdDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCBDSkJpZzJfTW9kdWxlICpwTW9kdWxlLCBGWF9MUENTVFIgZmlsZW5hbWUsIGludCBsaW5lKQ0KK3sNCisgICAgQ0pCaWcyX09iamVjdCAqcDsNCisgICAgcCA9IChDSkJpZzJfT2JqZWN0ICopcE1vZHVsZS0+SkJpZzJfTWFsbG9jKChGWF9EV09SRClzaXplKTsNCisgICAgcC0+bV9wTW9kdWxlID0gcE1vZHVsZTsNCisgICAgcmV0dXJuIHA7DQorfQ0KK3ZvaWQgQ0pCaWcyX09iamVjdDo6b3BlcmF0b3IgZGVsZXRlKHZvaWQgKnAsIENKQmlnMl9Nb2R1bGUgKnBNb2R1bGUsIEZYX0xQQ1NUUiBmaWxlbmFtZSwgaW50IGxpbmUpDQorew0KKyAgICBwTW9kdWxlLT5KQmlnMl9GcmVlKHApOw0KK30NCit2b2lkICpDSkJpZzJfT2JqZWN0OjpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIENKQmlnMl9Nb2R1bGUgKnBNb2R1bGUpDQorew0KKyAgICBDSkJpZzJfT2JqZWN0ICpwOw0KKyAgICBwID0gKENKQmlnMl9PYmplY3QgKilwTW9kdWxlLT5KQmlnMl9NYWxsb2MoKEZYX0RXT1JEKXNpemUpOw0KKyAgICBwLT5tX3BNb2R1bGUgPSBwTW9kdWxlOw0KKyAgICByZXR1cm4gcDsNCit9DQordm9pZCBDSkJpZzJfT2JqZWN0OjpvcGVyYXRvciBkZWxldGUodm9pZCAqcCkNCit7DQorICAgICgoQ0pCaWcyX09iamVjdCAqKXApLT5tX3BNb2R1bGUtPkpCaWcyX0ZyZWUocCk7DQorfQ0KK3ZvaWQgQ0pCaWcyX09iamVjdDo6b3BlcmF0b3IgZGVsZXRlKHZvaWQgKnAsIENKQmlnMl9Nb2R1bGUgKnBNb2R1bGUpDQorew0KKyAgICBwTW9kdWxlLT5KQmlnMl9GcmVlKHApOw0KK30NCit2b2lkICpDSkJpZzJfT2JqZWN0OjpvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSwgQ0pCaWcyX01vZHVsZSAqcE1vZHVsZSwgc2l6ZV90IHVuaXRfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUENTVFIgZmlsZW5hbWUsIGludCBsaW5lKQ0KK3sNCisgICAgdm9pZCAqcDsNCisgICAgRlhfQllURSAqcEN1ciwgKnBFbmQ7DQorICAgIHAgPSAoRlhfQllURSAqKXBNb2R1bGUtPkpCaWcyX01hbGxvYygoRlhfRFdPUkQpc2l6ZSk7DQorICAgIHBDdXIgPSAoRlhfQllURSAqKXA7DQorICAgIHBFbmQgPSBwQ3VyICsgc2l6ZTsNCisgICAgZm9yKDsgcEN1ciA8IHBFbmQ7IHBDdXIgKz0gdW5pdF9zaXplKSB7DQorICAgICAgICAoKENKQmlnMl9PYmplY3QgKilwQ3VyKS0+bV9wTW9kdWxlID0gcE1vZHVsZTsNCisgICAgfQ0KKyAgICByZXR1cm4gcDsNCit9DQordm9pZCBDSkJpZzJfT2JqZWN0OjpvcGVyYXRvciBkZWxldGVbXSh2b2lkICpwLCBDSkJpZzJfTW9kdWxlICpwTW9kdWxlLCBzaXplX3QgdW5pdF9zaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDU1RSIGZpbGVuYW1lLCBpbnQgbGluZSkNCit7DQorICAgIHBNb2R1bGUtPkpCaWcyX0ZyZWUocCk7DQorfQ0KK3ZvaWQgKkNKQmlnMl9PYmplY3Q6Om9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplLCBDSkJpZzJfTW9kdWxlICpwTW9kdWxlLCBzaXplX3QgdW5pdF9zaXplKQ0KK3sNCisgICAgdm9pZCAqcDsNCisgICAgRlhfQllURSAqcEN1ciwgKnBFbmQ7DQorICAgIHAgPSAoRlhfQllURSAqKXBNb2R1bGUtPkpCaWcyX01hbGxvYygoRlhfRFdPUkQpc2l6ZSk7DQorICAgIHBDdXIgPSAoRlhfQllURSAqKXA7DQorICAgIHBFbmQgPSBwQ3VyICsgc2l6ZTsNCisgICAgZm9yKDsgcEN1ciA8IHBFbmQ7IHBDdXIgKz0gdW5pdF9zaXplKSB7DQorICAgICAgICAoKENKQmlnMl9PYmplY3QgKilwQ3VyKS0+bV9wTW9kdWxlID0gcE1vZHVsZTsNCisgICAgfQ0KKyAgICByZXR1cm4gcDsNCit9DQordm9pZCBDSkJpZzJfT2JqZWN0OjpvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKQ0KK3sNCisgICAgKChDSkJpZzJfT2JqZWN0ICopcCktPm1fcE1vZHVsZS0+SkJpZzJfRnJlZShwKTsNCit9DQordm9pZCBDSkJpZzJfT2JqZWN0OjpvcGVyYXRvciBkZWxldGVbXSh2b2lkICpwLCBDSkJpZzJfTW9kdWxlICpwTW9kdWxlLCBzaXplX3QgdW5pdF9zaXplKQ0KK3sNCisgICAgcE1vZHVsZS0+SkJpZzJfRnJlZShwKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9PYmplY3QuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZlZjFhMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfT2JqZWN0LmgKQEAgLTAsMCArMSw0MyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfSkJJRzJfT0JKRUNUX0hfDQorI2RlZmluZSBfSkJJRzJfT0JKRUNUX0hfDQorI2luY2x1ZGUgIkpCaWcyX0RlZmluZS5oIg0KK2NsYXNzIENKQmlnMl9Nb2R1bGU7DQorI2RlZmluZSBfSkJJRzJfTk9fRVhQRUNUSU9OXw0KK2NsYXNzIENKQmlnMl9PYmplY3QNCit7DQorcHVibGljOg0KKw0KKyAgICB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIENKQmlnMl9Nb2R1bGUgKnBNb2R1bGUsIEZYX0xQQ1NUUiBmaWxlbmFtZSwgaW50IGxpbmUpOw0KKw0KKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkICpwLCBDSkJpZzJfTW9kdWxlICpwTW9kdWxlLCBGWF9MUENTVFIgZmlsZW5hbWUsIGludCBsaW5lKTsNCisNCisgICAgdm9pZCAqb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCBDSkJpZzJfTW9kdWxlICpwTW9kdWxlKTsNCisNCisgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCAqcCk7DQorDQorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQgKnAsIENKQmlnMl9Nb2R1bGUgKnBNb2R1bGUpOw0KKw0KKyAgICB2b2lkICpvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSwgQ0pCaWcyX01vZHVsZSAqcE1vZHVsZSwgc2l6ZV90IHVuaXRfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDU1RSIGZpbGVuYW1lLCBpbnQgbGluZSk7DQorDQorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCAqcCwgQ0pCaWcyX01vZHVsZSAqcE1vZHVsZSwgc2l6ZV90IHVuaXRfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUENTVFIgZmlsZW5hbWUsIGludCBsaW5lKTsNCisNCisgICAgdm9pZCAqb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUsIENKQmlnMl9Nb2R1bGUgKnBNb2R1bGUsIHNpemVfdCB1bml0X3NpemUpOw0KKw0KKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApOw0KKw0KKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQgKnAsIENKQmlnMl9Nb2R1bGUgKnBNb2R1bGUsIHNpemVfdCB1bml0X3NpemUpOw0KK3B1YmxpYzoNCisNCisgICAgQ0pCaWcyX01vZHVsZSAqbV9wTW9kdWxlOw0KK307DQorI2RlZmluZSBKQklHMl9ORVcgbmV3KG1fcE1vZHVsZSkNCisjZGVmaW5lIEpCSUcyX0FMTE9DKHAsIGEpIHAgPSBKQklHMl9ORVcgYTsgcC0+bV9wTW9kdWxlID0gbV9wTW9kdWxlOw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfUGFnZS5oIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9QYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkwNzA1NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfUGFnZS5oCkBAIC0wLDAgKzEsMTkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0pCSUcyX1BBR0VfSF8NCisjZGVmaW5lIF9KQklHMl9QQUdFX0hfDQorI2luY2x1ZGUgIkpCaWcyX0ltYWdlLmgiDQorc3RydWN0IEpCaWcyUGFnZUluZm8gOiBwdWJsaWMgQ0pCaWcyX09iamVjdCB7DQorICAgIEZYX0RXT1JEIG1fZHdXaWR0aCwNCisgICAgICAgICAgICAgbV9kd0hlaWdodDsNCisgICAgRlhfRFdPUkQgbV9kd1Jlc29sdXRpb25YLA0KKyAgICAgICAgICAgICBtX2R3UmVzb2x1dGlvblk7DQorICAgIEZYX0JZVEUgbV9jRmxhZ3M7DQorICAgIEZYX0JPT0wgbV9iSXNTdHJpcGVkOw0KKyAgICBGWF9XT1JEIG1fd01heFN0cmlwZVNpemU7DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX1BhdHRlcm5EaWN0LmNwcCBiL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfUGF0dGVybkRpY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YzUyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX1BhdHRlcm5EaWN0LmNwcApAQCAtMCwwICsxLDI0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiSkJpZzJfUGF0dGVybkRpY3QuaCINCitDSkJpZzJfUGF0dGVybkRpY3Q6OkNKQmlnMl9QYXR0ZXJuRGljdCgpDQorew0KKyAgICBOVU1QQVRTID0gMDsNCisgICAgSERQQVRTID0gTlVMTDsNCit9DQorDQorQ0pCaWcyX1BhdHRlcm5EaWN0Ojp+Q0pCaWcyX1BhdHRlcm5EaWN0KCkNCit7DQorICAgIGlmKEhEUEFUUykgew0KKyAgICAgICAgZm9yKEZYX0RXT1JEIGkgPSAwOyBpIDwgTlVNUEFUUzsgaSsrKSB7DQorICAgICAgICAgICAgaWYoSERQQVRTW2ldKSB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBIRFBBVFNbaV07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKEhEUEFUUyk7DQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9QYXR0ZXJuRGljdC5oIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9QYXR0ZXJuRGljdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4Njg2NTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX1BhdHRlcm5EaWN0LmgKQEAgLTAsMCArMSwyMiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfSkJJRzJfUEFUVEVSTl9ESUNUX0hfDQorI2RlZmluZSBfSkJJRzJfUEFUVEVSTl9ESUNUX0hfDQorI2luY2x1ZGUgIkpCaWcyX0RlZmluZS5oIg0KKyNpbmNsdWRlICJKQmlnMl9JbWFnZS5oIg0KK2NsYXNzIENKQmlnMl9QYXR0ZXJuRGljdCA6IHB1YmxpYyBDSkJpZzJfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0pCaWcyX1BhdHRlcm5EaWN0KCk7DQorDQorICAgIH5DSkJpZzJfUGF0dGVybkRpY3QoKTsNCitwdWJsaWM6DQorICAgIEZYX0RXT1JEIE5VTVBBVFM7DQorICAgIENKQmlnMl9JbWFnZSAqKkhEUEFUUzsNCit9Ow0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvamJpZzIvSkJpZzJfU2VnbWVudC5jcHAgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX1NlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ODIwN2QKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX1NlZ21lbnQuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICJKQmlnMl9TZWdtZW50LmgiDQorQ0pCaWcyX1NlZ21lbnQ6OkNKQmlnMl9TZWdtZW50KCkNCit7DQorICAgIGluaXQoKTsNCit9DQorQ0pCaWcyX1NlZ21lbnQ6On5DSkJpZzJfU2VnbWVudCgpDQorew0KKyAgICBjbGVhbigpOw0KK30NCit2b2lkIENKQmlnMl9TZWdtZW50Ojppbml0KCkNCit7DQorICAgIG1fZHdOdW1iZXIgPSAwOw0KKyAgICBtX2NGbGFncy5jID0gMDsNCisgICAgbV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudCA9IDA7DQorICAgIG1fcFJlZmVycmVkX3RvX3NlZ21lbnRfbnVtYmVycyA9IE5VTEw7DQorICAgIG1fZHdQYWdlX2Fzc29jaWF0aW9uID0gMDsNCisgICAgbV9kd0RhdGFfbGVuZ3RoID0gMDsNCisgICAgbV9kd0hlYWRlcl9MZW5ndGggPSAwOw0KKyAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgbV9TdGF0ZSA9IEpCSUcyX1NFR01FTlRfSEVBREVSX1VOUEFSU0VEOw0KKyAgICBtX25SZXN1bHRUeXBlID0gSkJJRzJfVk9JRF9QT0lOVEVSOw0KKyAgICBtX1Jlc3VsdC52ZCA9IE5VTEw7DQorfQ0KK3ZvaWQgQ0pCaWcyX1NlZ21lbnQ6OmNsZWFuKCkNCit7DQorICAgIGlmKG1fcFJlZmVycmVkX3RvX3NlZ21lbnRfbnVtYmVycykgew0KKyAgICAgICAgbV9wTW9kdWxlLT5KQmlnMl9GcmVlKG1fcFJlZmVycmVkX3RvX3NlZ21lbnRfbnVtYmVycyk7DQorICAgIH0NCisgICAgaWYobV9SZXN1bHQudmQpIHsNCisgICAgICAgIHN3aXRjaChtX25SZXN1bHRUeXBlKSB7DQorICAgICAgICAgICAgY2FzZSBKQklHMl9JTUFHRV9QT0lOVEVSOg0KKyAgICAgICAgICAgICAgICBkZWxldGUgbV9SZXN1bHQuaW07DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgSkJJRzJfU1lNQk9MX0RJQ1RfUE9JTlRFUjoNCisgICAgICAgICAgICAgICAgZGVsZXRlIG1fUmVzdWx0LnNkOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEpCSUcyX1BBVFRFUk5fRElDVF9QT0lOVEVSOg0KKyAgICAgICAgICAgICAgICBkZWxldGUgbV9SZXN1bHQucGQ7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgSkJJRzJfSFVGRk1BTl9UQUJMRV9QT0lOVEVSOg0KKyAgICAgICAgICAgICAgICBkZWxldGUgbV9SZXN1bHQuaHQ7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShtX1Jlc3VsdC52ZCk7DQorICAgICAgICB9DQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9TZWdtZW50LmggYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX1NlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGMzMWIxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9TZWdtZW50LmgKQEAgLTAsMCArMSw2OCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfSkJJRzJfU0VHTUVOVF9IXw0KKyNkZWZpbmUgX0pCSUcyX1NFR01FTlRfSF8NCisjaW5jbHVkZSAiSkJpZzJfRGVmaW5lLmgiDQorI2luY2x1ZGUgIkpCaWcyX1N5bWJvbERpY3QuaCINCisjaW5jbHVkZSAiSkJpZzJfUGF0dGVybkRpY3QuaCINCisjaW5jbHVkZSAiSkJpZzJfTW9kdWxlLmgiDQorI2luY2x1ZGUgIkpCaWcyX0h1ZmZtYW5UYWJsZS5oIg0KKyNkZWZpbmUgSkJJRzJfR0VUX0lOVDMyKGJ1ZikgKCgoYnVmKVswXTw8MjQpIHwgKChidWYpWzFdPDwxNikgfCAoKGJ1ZilbMl08PDgpIHwgKGJ1ZilbM10pDQorI2RlZmluZSBKQklHMl9HRVRfSU5UMTYoYnVmKSAoKChidWYpWzBdPDw4KSB8IChidWYpWzFdKQ0KK3R5cGVkZWYgZW51bSB7DQorICAgIEpCSUcyX1NFR01FTlRfSEVBREVSX1VOUEFSU0VELA0KKyAgICBKQklHMl9TRUdNRU5UX0RBVEFfVU5QQVJTRUQsDQorICAgIEpCSUcyX1NFR01FTlRfUEFSU0VfQ09NUExFVEUsDQorICAgIEpCSUcyX1NFR01FTlRfUEFVU0VELA0KKyAgICBKQklHMl9TRUdNRU5UX0VSUk9SDQorfSBKQmlnMl9TZWdtZW50U3RhdGU7DQordHlwZWRlZiBlbnVtIHsNCisgICAgSkJJRzJfVk9JRF9QT0lOVEVSCT0gMCwNCisgICAgSkJJRzJfSU1BR0VfUE9JTlRFUiwNCisgICAgSkJJRzJfU1lNQk9MX0RJQ1RfUE9JTlRFUiwNCisgICAgSkJJRzJfUEFUVEVSTl9ESUNUX1BPSU5URVIsDQorICAgIEpCSUcyX0hVRkZNQU5fVEFCTEVfUE9JTlRFUg0KK30gSkJpZzJfUmVzdWx0VHlwZTsNCitjbGFzcyBDSkJpZzJfU2VnbWVudCA6IHB1YmxpYyBDSkJpZzJfT2JqZWN0DQorew0KK3B1YmxpYzoNCisNCisgICAgQ0pCaWcyX1NlZ21lbnQoKTsNCisNCisgICAgfkNKQmlnMl9TZWdtZW50KCk7DQorDQorICAgIHZvaWQgaW5pdCgpOw0KKw0KKyAgICB2b2lkIGNsZWFuKCk7DQorcHVibGljOg0KKyAgICBGWF9EV09SRCBtX2R3TnVtYmVyOw0KKyAgICB1bmlvbiB7DQorICAgICAgICBzdHJ1Y3Qgew0KKyAgICAgICAgICAgIEZYX0JZVEUgdHlwZQkJCQkJOgk2Ow0KKyAgICAgICAgICAgIEZYX0JZVEUgcGFnZV9hc3NvY2lhdGlvbl9zaXplCToJMTsNCisgICAgICAgICAgICBGWF9CWVRFIGRlZmVycmVkX25vbl9yZXRhaW4JCToJMTsNCisgICAgICAgIH0gczsNCisgICAgICAgIEZYX0JZVEUgYzsNCisgICAgfSBtX2NGbGFnczsNCisgICAgRlhfSU5UMzIgbV9uUmVmZXJyZWRfdG9fc2VnbWVudF9jb3VudDsNCisgICAgRlhfRFdPUkQgKiBtX3BSZWZlcnJlZF90b19zZWdtZW50X251bWJlcnM7DQorICAgIEZYX0RXT1JEIG1fZHdQYWdlX2Fzc29jaWF0aW9uOw0KKyAgICBGWF9EV09SRCBtX2R3RGF0YV9sZW5ndGg7DQorDQorICAgIEZYX0RXT1JEIG1fZHdIZWFkZXJfTGVuZ3RoOw0KKyAgICBGWF9CWVRFICAqbV9wRGF0YTsNCisgICAgSkJpZzJfU2VnbWVudFN0YXRlIG1fU3RhdGU7DQorICAgIEpCaWcyX1Jlc3VsdFR5cGUgbV9uUmVzdWx0VHlwZTsNCisgICAgdW5pb24gew0KKyAgICAgICAgQ0pCaWcyX1N5bWJvbERpY3QJKnNkOw0KKyAgICAgICAgQ0pCaWcyX1BhdHRlcm5EaWN0CSpwZDsNCisgICAgICAgIENKQmlnMl9JbWFnZQkJKmltOw0KKyAgICAgICAgQ0pCaWcyX0h1ZmZtYW5UYWJsZQkqaHQ7DQorICAgICAgICBGWF9MUFZPSUQJCQkgdmQ7DQorICAgIH0gbV9SZXN1bHQ7DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX1N5bWJvbERpY3QuY3BwIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9TeW1ib2xEaWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTE2YzA0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9TeW1ib2xEaWN0LmNwcApAQCAtMCwwICsxLDM0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiSkJpZzJfU3ltYm9sRGljdC5oIg0KK0NKQmlnMl9TeW1ib2xEaWN0OjpDSkJpZzJfU3ltYm9sRGljdCgpDQorew0KKyAgICBTRE5VTUVYU1lNUyA9IDA7DQorICAgIFNERVhTWU1TID0gTlVMTDsNCisgICAgbV9iQ29udGV4dFJldGFpbmVkID0gRkFMU0U7DQorICAgIG1fZ2JDb250ZXh0ID0gbV9nckNvbnRleHQgPSBOVUxMOw0KK30NCisNCitDSkJpZzJfU3ltYm9sRGljdDo6fkNKQmlnMl9TeW1ib2xEaWN0KCkNCit7DQorICAgIGlmKFNERVhTWU1TKSB7DQorICAgICAgICBmb3IoRlhfRFdPUkQgaSA9IDA7IGkgPCBTRE5VTUVYU1lNUzsgaSsrKSB7DQorICAgICAgICAgICAgaWYoU0RFWFNZTVNbaV0pIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIFNERVhTWU1TW2ldOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShTREVYU1lNUyk7DQorICAgIH0NCisgICAgaWYobV9iQ29udGV4dFJldGFpbmVkKSB7DQorICAgICAgICBpZihtX2diQ29udGV4dCkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShtX2diQ29udGV4dCk7DQorICAgICAgICB9DQorICAgICAgICBpZihtX2dyQ29udGV4dCkgew0KKyAgICAgICAgICAgIG1fcE1vZHVsZS0+SkJpZzJfRnJlZShtX2dyQ29udGV4dCk7DQorICAgICAgICB9DQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9TeW1ib2xEaWN0LmggYi9jb3JlL3NyYy9meGNvZGVjL2piaWcyL0pCaWcyX1N5bWJvbERpY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjk3YTE2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9qYmlnMi9KQmlnMl9TeW1ib2xEaWN0LmgKQEAgLTAsMCArMSwyNiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfSkJJRzJfU1lNQk9MX0RJQ1RfSF8NCisjZGVmaW5lIF9KQklHMl9TWU1CT0xfRElDVF9IXw0KKyNpbmNsdWRlICJKQmlnMl9EZWZpbmUuaCINCisjaW5jbHVkZSAiSkJpZzJfQXJpdGhEZWNvZGVyLmgiDQorI2luY2x1ZGUgIkpCaWcyX0ltYWdlLmgiDQorY2xhc3MgQ0pCaWcyX1N5bWJvbERpY3QgOiBwdWJsaWMgQ0pCaWcyX09iamVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIENKQmlnMl9TeW1ib2xEaWN0KCk7DQorDQorICAgIH5DSkJpZzJfU3ltYm9sRGljdCgpOw0KK3B1YmxpYzoNCisgICAgRlhfRFdPUkQgU0ROVU1FWFNZTVM7DQorICAgIENKQmlnMl9JbWFnZSAqKlNERVhTWU1TOw0KKyAgICBGWF9CT09MIG1fYkNvbnRleHRSZXRhaW5lZDsNCisgICAgSkJpZzJBcml0aEN0eCAqbV9nYkNvbnRleHQsDQorICAgICAgICAgICAgICAgICAgKm1fZ3JDb250ZXh0Ow0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9pbmNsdWRlL2Z4X2xjbXMyLmggYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2luY2x1ZGUvZnhfbGNtczIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzAzODMyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9pbmNsdWRlL2Z4X2xjbXMyLmgKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhfTENNUzJfSF8NCisjZGVmaW5lIF9GWF9MQ01TMl9IXw0KKyNpbmNsdWRlICIuLi9sY21zMi0yLjYvaW5jbHVkZS9sY21zMi5oIg0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvaW5jbHVkZS9meF9sY21zMl9wbHVnaW4uaCBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvaW5jbHVkZS9meF9sY21zMl9wbHVnaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTAzYjdmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9pbmNsdWRlL2Z4X2xjbXMyX3BsdWdpbi5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYX0xDTVMyX0hfDQorI2RlZmluZSBfRlhfTENNUzJfSF8NCisjaW5jbHVkZSAiLi4vbGNtczItMi42L2luY2x1ZGUvbGNtczJfcGx1Z2luLmgiDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvaW5jbHVkZS9sY21zMi5oIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvaW5jbHVkZS9sY21zMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTVmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9pbmNsdWRlL2xjbXMyLmgKQEAgLTAsMCArMSwxODgyIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCBNYXJ0aSBNYXJpYSBTYWd1ZXIKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlCisvLyBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTworLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKy8vIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKy8vIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBWZXJzaW9uIDIuNgorLy8KKworI2lmbmRlZiBfbGNtczJfSAorCisvLyAqKioqKioqKioqIENvbmZpZ3VyYXRpb24gdG9nZ2xlcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8vIFVuY29tbWVudCB0aGlzIG9uZSBpZiB5b3UgYXJlIHVzaW5nIGJpZyBlbmRpYW4gbWFjaGluZXMKKy8vICNkZWZpbmUgQ01TX1VTRV9CSUdfRU5ESUFOICAgMQorCisvLyBVbmNvbW1lbnQgdGhpcyBvbmUgaWYgeW91ciBjb21waWxlci9tYWNoaW5lIGRvZXMgTk9UIHN1cHBvcnQgdGhlCisvLyAibG9uZyBsb25nIiB0eXBlLgorLy8gI2RlZmluZSBDTVNfRE9OVF9VU0VfSU5UNjQgICAgICAgIDEKKworLy8gVW5jb21tZW50IHRoaXMgaWYgeW91ciBjb21waWxlciBkb2Vzbid0IHdvcmsgd2l0aCBmYXN0IGZsb29yIGZ1bmN0aW9uCisvLyAjZGVmaW5lIENNU19ET05UX1VTRV9GQVNUX0ZMT09SIDEKKworLy8gVW5jb21tZW50IHRoaXMgbGluZSBpZiB5b3Ugd2FudCBsY21zIHRvIHVzZSB0aGUgYmxhY2sgcG9pbnQgdGFnIGluIHByb2ZpbGUsCisvLyBpZiBjb21tZW50ZWQsIGxjbXMgd2lsbCBjb21wdXRlIHRoZSBibGFjayBwb2ludCBieSBpdHMgb3duLgorLy8gSXQgaXMgc2FmZXIgdG8gbGVhdmUgaXQgY29tbWVudGVkIG91dAorLy8gI2RlZmluZSBDTVNfVVNFX1BST0ZJTEVfQkxBQ0tfUE9JTlRfVEFHICAgIDEKKworLy8gVW5jb21tZW50IHRoaXMgbGluZSBpZiB5b3UgYXJlIGNvbXBpbGluZyBhcyBDKysgYW5kIHdhbnQgYSBDKysgQVBJCisvLyAjZGVmaW5lIENNU19VU0VfQ1BQX0FQSQorCisvLyBVbmNvbW1lbnQgdGhpcyBsaW5lIGlmIHlvdSBuZWVkIHN0cmljdCBDR0FUUyBzeW50YXguIE1ha2VzIENHQVRTIGZpbGVzIHRvCisvLyByZXF1aXJlICJLRVlXT1JEIiBvbiB1bmRlZmluZWQgaWRlbnRpZmllcnMsIGtlZXAgaXQgY29tZW50ZWQgb3V0IHVubGVzcyBuZWVkZWQKKy8vICNkZWZpbmUgQ01TX1NUUklDVF9DR0FUUyAgMQorCisvLyBVbmNvbW1lbnQgdG8gZ2V0IHJpZCBvZiB0aGUgdGFibGVzIGZvciAiaGFsZiIgZmxvYXQgc3VwcG9ydAorLy8gI2RlZmluZSBDTVNfTk9fSEFMRl9TVVBQT1JUIDEKKworLy8gVW5jb21tZW50IHRvIGdldCByaWQgb2YgcHRocmVhZHMvd2luZG93cyBkZXBlbmRlbmN5CisvLyAjZGVmaW5lIENNU19OT19QVEhSRUFEUyAgMQorCisvLyAqKioqKioqKioqIEVuZCBvZiBjb25maWd1cmF0aW9uIHRvZ2dsZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8vIE5lZWRlZCBmb3Igc3RyZWFtcworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKy8vIE5lZWRlZCBmb3IgcG9ydGFiaWxpdHkgKEM5OSBwZXIgNy4xLjIpCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaWZuZGVmIENNU19VU0VfQ1BQX0FQSQorIyAgIGlmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyMgICBlbmRpZgorI2VuZGlmCisKKy8vIFZlcnNpb24vcmVsZWFzZQorI2RlZmluZSBMQ01TX1ZFUlNJT04gICAgICAgIDIwNjAKKworLy8gSSB3aWxsIGdpdmUgdGhlIGNoYW5jZSBvZiByZWRlZmluaW5nIGJhc2ljIHR5cGVzIGZvciBjb21waWxlcnMgdGhhdCBhcmUgbm90IGZ1bGx5IEM5OSBjb21wbGlhbnQKKyNpZm5kZWYgQ01TX0JBU0lDX1RZUEVTX0FMUkVBRFlfREVGSU5FRAorCisvLyBCYXNlIHR5cGVzCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAgICAgIGNtc1VJbnQ4TnVtYmVyOyAgIC8vIFRoYXQgaXMgZ3VhcmFudGVlZCBieSB0aGUgQzk5IHNwZWMKK3R5cGVkZWYgc2lnbmVkIGNoYXIgICAgICAgICAgY21zSW50OE51bWJlcjsgICAgLy8gVGhhdCBpcyBndWFyYW50ZWVkIGJ5IHRoZSBDOTkgc3BlYworCisjaWYgQ0hBUl9CSVQgIT0gOAorIyAgZXJyb3IgIlVuYWJsZSB0byBmaW5kIDggYml0IHR5cGUsIHVuc3VwcG9ydGVkIGNvbXBpbGVyIgorI2VuZGlmCisKKy8vIElFRUUgZmxvYXQgc3RvcmFnZSBudW1iZXJzCit0eXBlZGVmIGZsb2F0ICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXI7Cit0eXBlZGVmIGRvdWJsZSAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXI7CisKKy8vIDE2LWJpdCBiYXNlIHR5cGVzCisjaWYgKFVTSFJUX01BWCA9PSA2NTUzNVUpCisgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICAgIGNtc1VJbnQxNk51bWJlcjsKKyNlbGlmIChVSU5UX01BWCA9PSA2NTUzNVUpCisgdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgIGNtc1VJbnQxNk51bWJlcjsKKyNlbHNlCisjICBlcnJvciAiVW5hYmxlIHRvIGZpbmQgMTYgYml0cyB1bnNpZ25lZCB0eXBlLCB1bnN1cHBvcnRlZCBjb21waWxlciIKKyNlbmRpZgorCisjaWYgKFNIUlRfTUFYID09IDMyNzY3KQorICB0eXBlZGVmICBzaG9ydCAgICAgICAgICAgICBjbXNJbnQxNk51bWJlcjsKKyNlbGlmIChJTlRfTUFYID09IDMyNzY3KQorICB0eXBlZGVmICBpbnQgICAgICAgICAgICAgICBjbXNJbnQxNk51bWJlcjsKKyNlbHNlCisjICBlcnJvciAiVW5hYmxlIHRvIGZpbmQgMTYgYml0cyBzaWduZWQgdHlwZSwgdW5zdXBwb3J0ZWQgY29tcGlsZXIiCisjZW5kaWYKKworLy8gMzItYml0IGJhc2UgdHlwZQorI2lmIChVSU5UX01BWCA9PSA0Mjk0OTY3Mjk1VSkKKyB0eXBlZGVmIHVuc2lnbmVkIGludCAgICAgICAgY21zVUludDMyTnVtYmVyOworI2VsaWYgKFVMT05HX01BWCA9PSA0Mjk0OTY3Mjk1VSkKKyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgY21zVUludDMyTnVtYmVyOworI2Vsc2UKKyMgIGVycm9yICJVbmFibGUgdG8gZmluZCAzMiBiaXQgdW5zaWduZWQgdHlwZSwgdW5zdXBwb3J0ZWQgY29tcGlsZXIiCisjZW5kaWYKKworI2lmIChJTlRfTUFYID09ICsyMTQ3NDgzNjQ3KQorIHR5cGVkZWYgIGludCAgICAgICAgICAgICAgICBjbXNJbnQzMk51bWJlcjsKKyNlbGlmIChMT05HX01BWCA9PSArMjE0NzQ4MzY0NykKKyB0eXBlZGVmICBsb25nICAgICAgICAgICAgICAgY21zSW50MzJOdW1iZXI7CisjZWxzZQorIyAgZXJyb3IgIlVuYWJsZSB0byBmaW5kIDMyIGJpdCBzaWduZWQgdHlwZSwgdW5zdXBwb3J0ZWQgY29tcGlsZXIiCisjZW5kaWYKKworLy8gNjQtYml0IGJhc2UgdHlwZXMKKyNpZm5kZWYgQ01TX0RPTlRfVVNFX0lOVDY0CisjICBpZiAoVUxPTkdfTUFYICA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVUpCisgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgY21zVUludDY0TnVtYmVyOworIyAgZWxpZiAoVUxMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVUpCisgICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgIGNtc1VJbnQ2NE51bWJlcjsKKyMgIGVsc2UKKyMgICAgIGRlZmluZSBDTVNfRE9OVF9VU0VfSU5UNjQgMQorIyAgZW5kaWYKKyMgIGlmIChMT05HX01BWCA9PSArOTIyMzM3MjAzNjg1NDc3NTgwNykKKyAgICAgIHR5cGVkZWYgIGxvbmcgICAgICAgICAgY21zSW50NjROdW1iZXI7CisjICBlbGlmIChMTE9OR19NQVggPT0gKzkyMjMzNzIwMzY4NTQ3NzU4MDcpCisgICAgICB0eXBlZGVmICBsb25nIGxvbmcgICAgIGNtc0ludDY0TnVtYmVyOworIyAgZWxzZQorIyAgICAgZGVmaW5lIENNU19ET05UX1VTRV9JTlQ2NCAxCisjICBlbmRpZgorI2VuZGlmCisjZW5kaWYKKworLy8gSW4gdGhlIGNhc2UgNjQgYml0IG51bWJlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBpbGVyCisjaWZkZWYgQ01TX0RPTlRfVVNFX0lOVDY0CisgICAgdHlwZWRlZiBjbXNVSW50MzJOdW1iZXIgICAgICBjbXNVSW50NjROdW1iZXJbMl07CisgICAgdHlwZWRlZiBjbXNJbnQzMk51bWJlciAgICAgICBjbXNJbnQ2NE51bWJlclsyXTsKKyNlbmRpZgorCisvLyBEZXJpdmF0aXZlIHR5cGVzCit0eXBlZGVmIGNtc1VJbnQzMk51bWJlciAgICAgIGNtc1NpZ25hdHVyZTsKK3R5cGVkZWYgY21zVUludDE2TnVtYmVyICAgICAgY21zVThGaXhlZDhOdW1iZXI7Cit0eXBlZGVmIGNtc0ludDMyTnVtYmVyICAgICAgIGNtc1MxNUZpeGVkMTZOdW1iZXI7Cit0eXBlZGVmIGNtc1VJbnQzMk51bWJlciAgICAgIGNtc1UxNkZpeGVkMTZOdW1iZXI7CisKKy8vIEJvb2xlYW4gdHlwZSwgd2hpY2ggd2lsbCBiZSB1c2luZyB0aGUgbmF0aXZlIGludGVnZXIKK3R5cGVkZWYgaW50ICAgICAgICAgICAgICAgICAgY21zQm9vbDsKKworLy8gVHJ5IHRvIGRldGVjdCB3aW5kb3dzCisjaWYgZGVmaW5lZCAoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkgfHwgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzJfKQorIyAgZGVmaW5lIENNU19JU19XSU5ET1dTXyAxCisjZW5kaWYKKworI2lmZGVmIF9NU0NfVkVSCisjICBkZWZpbmUgQ01TX0lTX1dJTkRPV1NfIDEKKyNlbmRpZgorCisjaWZkZWYgX19CT1JMQU5EQ19fCisjICBkZWZpbmUgQ01TX0lTX1dJTkRPV1NfIDEKKyNlbmRpZgorCisvLyBUcnkgdG8gZGV0ZWN0IGJpZyBlbmRpYW4gcGxhdGZvcm1zLiBUaGlzIGxpc3QgY2FuIGJlIGVuZGxlc3MsIHNvIG9ubHkgc29tZSBjaGVja3MgYXJlIHBlcmZvcm1lZCBvdmVyIGhlcmUuCisvLyB5b3UgY2FuIHBhc3MgdGhpcyB0b2dnbGUgdG8gdGhlIGNvbXBpbGVyIGJ5IHVzaW5nIC1EQ01TX1VTRV9CSUdfRU5ESUFOIG9yIHNvbWV0aGluZyBzaW1pbGFyCisKKyNpZiBkZWZpbmVkKF9fc2dpX18pIHx8IGRlZmluZWQoX19zZ2kpIHx8IGRlZmluZWQoc3BhcmMpCisjICAgZGVmaW5lIENNU19VU0VfQklHX0VORElBTiAgICAgIDEKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX3MzOTBfXykgfHwgZGVmaW5lZChfX3MzOTB4X18pCisjICAgZGVmaW5lIENNU19VU0VfQklHX0VORElBTiAgIDEKKyNlbmRpZgorCisjICBpZmRlZiBUQVJHRVRfQ1BVX1BQQworIyAgICBpZiBUQVJHRVRfQ1BVX1BQQworIyAgICAgIGRlZmluZSBDTVNfVVNFX0JJR19FTkRJQU4gICAxCisjICAgIGVuZGlmCisjICBlbmRpZgorCisjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKFRBUkdFVF9DUFVfUFBDKQorIyAgIGRlZmluZSBDTVNfVVNFX0JJR19FTkRJQU4gICAxCisjICAgaWYgZGVmaW5lZCAoX19HTlVDX18pICYmIGRlZmluZWQoX19CWVRFX09SREVSKSAmJiBkZWZpbmVkKF9fTElUVExFX0VORElBTikKKyMgICAgICAgaWYgX19CWVRFX09SREVSICA9PSBfX0xJVFRMRV9FTkRJQU4KKy8vICAgICAgICAgICAgICAgLy8gRG9uJ3QgdXNlIGJpZyBlbmRpYW4gZm9yIFBvd2VyUEMgbGl0dGxlIGVuZGlhbiBtb2RlCisjICAgICAgICAgICAgICAgIHVuZGVmIENNU19VU0VfQklHX0VORElBTgorIyAgICAgICBlbmRpZgorIyAgIGVuZGlmCisjZW5kaWYKKworLy8gV09SRFNfQklHRU5ESUFOIHRha2VzIHByZWNlZGVuY2UKKyNpZiBkZWZpbmVkKF9IT1NUX0JJR19FTkRJQU4pIHx8IGRlZmluZWQoX19CSUdfRU5ESUFOX18pIHx8IGRlZmluZWQoV09SRFNfQklHRU5ESUFOKQorIyAgIGRlZmluZSBDTVNfVVNFX0JJR19FTkRJQU4gICAgICAxCisjZW5kaWYKKworI2lmZGVmIG1hY2ludG9zaAorIyBpZmRlZiBfX0JJR19FTkRJQU5fXworIyAgIGRlZmluZSBDTVNfVVNFX0JJR19FTkRJQU4gICAgICAxCisjIGVuZGlmCisjIGlmZGVmIF9fTElUVExFX0VORElBTl9fCisjICAgdW5kZWYgQ01TX1VTRV9CSUdfRU5ESUFOCisjIGVuZGlmCisjZW5kaWYKKworLy8gQ2FsbGluZyBjb252ZW50aW9uIC0tIHRoaXMgaXMgaGFyZGx5IHBsYXRmb3JtIGFuZCBjb21waWxlciBkZXBlbmRlbnQKKyNpZmRlZiBDTVNfSVNfV0lORE9XU18KKyMgIGlmIGRlZmluZWQoQ01TX0RMTCkgfHwgZGVmaW5lZChDTVNfRExMX0JVSUxEKQorIyAgICAgaWZkZWYgX19CT1JMQU5EQ19fCisjICAgICAgICBkZWZpbmUgQ01TRVhQT1JUICAgICAgIF9fc3RkY2FsbCBfZXhwb3J0CisjICAgICAgICBkZWZpbmUgQ01TQVBJCisjICAgICBlbHNlCisjICAgICAgICBkZWZpbmUgQ01TRVhQT1JUICAgICAgX3N0ZGNhbGwKKyMgICAgICAgIGlmZGVmIENNU19ETExfQlVJTEQKKyMgICAgICAgICAgICBkZWZpbmUgQ01TQVBJICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyAgICAgICAgZWxzZQorIyAgICAgICAgICAgZGVmaW5lIENNU0FQSSAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjICAgICAgIGVuZGlmCisjICAgICBlbmRpZgorIyAgZWxzZQorIyAgICAgICBkZWZpbmUgQ01TRVhQT1JUCisjICAgICAgIGRlZmluZSBDTVNBUEkKKyMgIGVuZGlmCisjZWxzZQorIyBkZWZpbmUgQ01TRVhQT1JUCisjIGRlZmluZSBDTVNBUEkKKyNlbmRpZgorCisjaWZkZWYgSGFzVEhSRUFEUworIyBpZiBIYXNUSFJFQURTID09IDEKKyMgICAgdW5kZWYgQ01TX05PX1BUSFJFQURTCisjIGVsc2UKKyMgICAgZGVmaW5lIENNU19OT19QVEhSRUFEUyAxCisjIGVuZGlmCisjZW5kaWYKKworLy8gU29tZSBjb21tb24gZGVmaW5pdGlvbnMKKyNkZWZpbmUgY21zTUFYX1BBVEggICAgIDI1NgorCisjaWZuZGVmIEZBTFNFCisjICAgICAgIGRlZmluZSBGQUxTRSAwCisjZW5kaWYKKyNpZm5kZWYgVFJVRQorIyAgICAgICBkZWZpbmUgVFJVRSAgMQorI2VuZGlmCisKKy8vIEQ1MCBYWVogbm9ybWFsaXplZCB0byBZPTEuMAorI2RlZmluZSBjbXNENTBYICAgICAgICAgICAgIDAuOTY0MgorI2RlZmluZSBjbXNENTBZICAgICAgICAgICAgIDEuMAorI2RlZmluZSBjbXNENTBaICAgICAgICAgICAgIDAuODI0OQorCisvLyBWNCBwZXJjZXB0dWFsIGJsYWNrCisjZGVmaW5lIGNtc1BFUkNFUFRVQUxfQkxBQ0tfWCAgMC4wMDMzNgorI2RlZmluZSBjbXNQRVJDRVBUVUFMX0JMQUNLX1kgIDAuMDAzNDczMQorI2RlZmluZSBjbXNQRVJDRVBUVUFMX0JMQUNLX1ogIDAuMDAyODcKKworLy8gRGVmaW5pdGlvbnMgaW4gSUNDIHNwZWMKKyNkZWZpbmUgY21zTWFnaWNOdW1iZXIgICAgICAweDYxNjM3MzcwICAgICAvLyAnYWNzcCcKKyNkZWZpbmUgbGNtc1NpZ25hdHVyZSAgICAgICAweDZjNjM2ZDczICAgICAvLyAnbGNtcycKKworCisvLyBCYXNlIElDQyB0eXBlIGRlZmluaXRpb25zCit0eXBlZGVmIGVudW0geworICAgIGNtc1NpZ0Nocm9tYXRpY2l0eVR5cGUgICAgICAgICAgICAgICAgICA9IDB4NjM2ODcyNkQsICAvLyAnY2hybScKKyAgICBjbXNTaWdDb2xvcmFudE9yZGVyVHlwZSAgICAgICAgICAgICAgICAgPSAweDYzNkM3MjZGLCAgLy8gJ2Nscm8nCisgICAgY21zU2lnQ29sb3JhbnRUYWJsZVR5cGUgICAgICAgICAgICAgICAgID0gMHg2MzZDNzI3NCwgIC8vICdjbHJ0JworICAgIGNtc1NpZ0NyZEluZm9UeXBlICAgICAgICAgICAgICAgICAgICAgICA9IDB4NjM3MjY0NjksICAvLyAnY3JkaScKKyAgICBjbXNTaWdDdXJ2ZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDYzNzU3Mjc2LCAgLy8gJ2N1cnYnCisgICAgY21zU2lnRGF0YVR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg2NDYxNzQ2MSwgIC8vICdkYXRhJworICAgIGNtc1NpZ0RpY3RUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NjQ2OTYzNzQsICAvLyAnZGljdCcKKyAgICBjbXNTaWdEYXRlVGltZVR5cGUgICAgICAgICAgICAgICAgICAgICAgPSAweDY0NzQ2OTZELCAgLy8gJ2R0aW0nCisgICAgY21zU2lnRGV2aWNlU2V0dGluZ3NUeXBlICAgICAgICAgICAgICAgID0gMHg2NDY1NzY3MywgIC8vICdkZXZzJworICAgIGNtc1NpZ0x1dDE2VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NmQ2Njc0MzIsICAvLyAnbWZ0MicKKyAgICBjbXNTaWdMdXQ4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDZkNjY3NDMxLCAgLy8gJ21mdDEnCisgICAgY21zU2lnTHV0QXRvQlR5cGUgICAgICAgICAgICAgICAgICAgICAgID0gMHg2ZDQxNDIyMCwgIC8vICdtQUIgJworICAgIGNtc1NpZ0x1dEJ0b0FUeXBlICAgICAgICAgICAgICAgICAgICAgICA9IDB4NmQ0MjQxMjAsICAvLyAnbUJBICcKKyAgICBjbXNTaWdNZWFzdXJlbWVudFR5cGUgICAgICAgICAgICAgICAgICAgPSAweDZENjU2MTczLCAgLy8gJ21lYXMnCisgICAgY21zU2lnTXVsdGlMb2NhbGl6ZWRVbmljb2RlVHlwZSAgICAgICAgID0gMHg2RDZDNzU2MywgIC8vICdtbHVjJworICAgIGNtc1NpZ011bHRpUHJvY2Vzc0VsZW1lbnRUeXBlICAgICAgICAgICA9IDB4NkQ3MDY1NzQsICAvLyAnbXBldCcKKyAgICBjbXNTaWdOYW1lZENvbG9yVHlwZSAgICAgICAgICAgICAgICAgICAgPSAweDZFNjM2ZjZDLCAgLy8gJ25jb2wnIC0tIERFUFJFQ0FURUQhCisgICAgY21zU2lnTmFtZWRDb2xvcjJUeXBlICAgICAgICAgICAgICAgICAgID0gMHg2RTYzNkMzMiwgIC8vICduY2wyJworICAgIGNtc1NpZ1BhcmFtZXRyaWNDdXJ2ZVR5cGUgICAgICAgICAgICAgICA9IDB4NzA2MTcyNjEsICAvLyAncGFyYScKKyAgICBjbXNTaWdQcm9maWxlU2VxdWVuY2VEZXNjVHlwZSAgICAgICAgICAgPSAweDcwNzM2NTcxLCAgLy8gJ3BzZXEnCisgICAgY21zU2lnUHJvZmlsZVNlcXVlbmNlSWRUeXBlICAgICAgICAgICAgID0gMHg3MDczNjk2NCwgIC8vICdwc2lkJworICAgIGNtc1NpZ1Jlc3BvbnNlQ3VydmVTZXQxNlR5cGUgICAgICAgICAgICA9IDB4NzI2MzczMzIsICAvLyAncmNzMicKKyAgICBjbXNTaWdTMTVGaXhlZDE2QXJyYXlUeXBlICAgICAgICAgICAgICAgPSAweDczNjYzMzMyLCAgLy8gJ3NmMzInCisgICAgY21zU2lnU2NyZWVuaW5nVHlwZSAgICAgICAgICAgICAgICAgICAgID0gMHg3MzYzNzI2RSwgIC8vICdzY3JuJworICAgIGNtc1NpZ1NpZ25hdHVyZVR5cGUgICAgICAgICAgICAgICAgICAgICA9IDB4NzM2OTY3MjAsICAvLyAnc2lnICcKKyAgICBjbXNTaWdUZXh0VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDc0NjU3ODc0LCAgLy8gJ3RleHQnCisgICAgY21zU2lnVGV4dERlc2NyaXB0aW9uVHlwZSAgICAgICAgICAgICAgID0gMHg2NDY1NzM2MywgIC8vICdkZXNjJworICAgIGNtc1NpZ1UxNkZpeGVkMTZBcnJheVR5cGUgICAgICAgICAgICAgICA9IDB4NzU2NjMzMzIsICAvLyAndWYzMicKKyAgICBjbXNTaWdVY3JCZ1R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDYyNjY2NDIwLCAgLy8gJ2JmZCAnCisgICAgY21zU2lnVUludDE2QXJyYXlUeXBlICAgICAgICAgICAgICAgICAgID0gMHg3NTY5MzEzNiwgIC8vICd1aTE2JworICAgIGNtc1NpZ1VJbnQzMkFycmF5VHlwZSAgICAgICAgICAgICAgICAgICA9IDB4NzU2OTMzMzIsICAvLyAndWkzMicKKyAgICBjbXNTaWdVSW50NjRBcnJheVR5cGUgICAgICAgICAgICAgICAgICAgPSAweDc1NjkzNjM0LCAgLy8gJ3VpNjQnCisgICAgY21zU2lnVUludDhBcnJheVR5cGUgICAgICAgICAgICAgICAgICAgID0gMHg3NTY5MzAzOCwgIC8vICd1aTA4JworICAgIGNtc1NpZ1ZjZ3RUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NzY2MzY3NzQsICAvLyAndmNndCcKKyAgICBjbXNTaWdWaWV3aW5nQ29uZGl0aW9uc1R5cGUgICAgICAgICAgICAgPSAweDc2Njk2NTc3LCAgLy8gJ3ZpZXcnCisgICAgY21zU2lnWFlaVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg1ODU5NUEyMCAgIC8vICdYWVogJworCisKK30gY21zVGFnVHlwZVNpZ25hdHVyZTsKKworLy8gQmFzZSBJQ0MgdGFnIGRlZmluaXRpb25zCit0eXBlZGVmIGVudW0geworICAgIGNtc1NpZ0FUb0IwVGFnICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NDEzMjQyMzAsICAvLyAnQTJCMCcKKyAgICBjbXNTaWdBVG9CMVRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDQxMzI0MjMxLCAgLy8gJ0EyQjEnCisgICAgY21zU2lnQVRvQjJUYWcgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0MTMyNDIzMiwgIC8vICdBMkIyJworICAgIGNtc1NpZ0JsdWVDb2xvcmFudFRhZyAgICAgICAgICAgICAgICAgICA9IDB4NjI1ODU5NUEsICAvLyAnYlhZWicKKyAgICBjbXNTaWdCbHVlTWF0cml4Q29sdW1uVGFnICAgICAgICAgICAgICAgPSAweDYyNTg1OTVBLCAgLy8gJ2JYWVonCisgICAgY21zU2lnQmx1ZVRSQ1RhZyAgICAgICAgICAgICAgICAgICAgICAgID0gMHg2MjU0NTI0MywgIC8vICdiVFJDJworICAgIGNtc1NpZ0JUb0EwVGFnICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NDIzMjQxMzAsICAvLyAnQjJBMCcKKyAgICBjbXNTaWdCVG9BMVRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDQyMzI0MTMxLCAgLy8gJ0IyQTEnCisgICAgY21zU2lnQlRvQTJUYWcgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0MjMyNDEzMiwgIC8vICdCMkEyJworICAgIGNtc1NpZ0NhbGlicmF0aW9uRGF0ZVRpbWVUYWcgICAgICAgICAgICA9IDB4NjM2MTZDNzQsICAvLyAnY2FsdCcKKyAgICBjbXNTaWdDaGFyVGFyZ2V0VGFnICAgICAgICAgICAgICAgICAgICAgPSAweDc0NjE3MjY3LCAgLy8gJ3RhcmcnCisgICAgY21zU2lnQ2hyb21hdGljQWRhcHRhdGlvblRhZyAgICAgICAgICAgID0gMHg2MzY4NjE2NCwgIC8vICdjaGFkJworICAgIGNtc1NpZ0Nocm9tYXRpY2l0eVRhZyAgICAgICAgICAgICAgICAgICA9IDB4NjM2ODcyNkQsICAvLyAnY2hybScKKyAgICBjbXNTaWdDb2xvcmFudE9yZGVyVGFnICAgICAgICAgICAgICAgICAgPSAweDYzNkM3MjZGLCAgLy8gJ2Nscm8nCisgICAgY21zU2lnQ29sb3JhbnRUYWJsZVRhZyAgICAgICAgICAgICAgICAgID0gMHg2MzZDNzI3NCwgIC8vICdjbHJ0JworICAgIGNtc1NpZ0NvbG9yYW50VGFibGVPdXRUYWcgICAgICAgICAgICAgICA9IDB4NjM2QzZGNzQsICAvLyAnY2xvdCcKKyAgICBjbXNTaWdDb2xvcmltZXRyaWNJbnRlbnRJbWFnZVN0YXRlVGFnICAgPSAweDYzNjk2OTczLCAgLy8gJ2NpaXMnCisgICAgY21zU2lnQ29weXJpZ2h0VGFnICAgICAgICAgICAgICAgICAgICAgID0gMHg2MzcwNzI3NCwgIC8vICdjcHJ0JworICAgIGNtc1NpZ0NyZEluZm9UYWcgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NjM3MjY0NjksICAvLyAnY3JkaScKKyAgICBjbXNTaWdEYXRhVGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDY0NjE3NDYxLCAgLy8gJ2RhdGEnCisgICAgY21zU2lnRGF0ZVRpbWVUYWcgICAgICAgICAgICAgICAgICAgICAgID0gMHg2NDc0Njk2RCwgIC8vICdkdGltJworICAgIGNtc1NpZ0RldmljZU1mZ0Rlc2NUYWcgICAgICAgICAgICAgICAgICA9IDB4NjQ2RDZFNjQsICAvLyAnZG1uZCcKKyAgICBjbXNTaWdEZXZpY2VNb2RlbERlc2NUYWcgICAgICAgICAgICAgICAgPSAweDY0NkQ2NDY0LCAgLy8gJ2RtZGQnCisgICAgY21zU2lnRGV2aWNlU2V0dGluZ3NUYWcgICAgICAgICAgICAgICAgID0gMHg2NDY1NzY3MywgIC8vICdkZXZzJworICAgIGNtc1NpZ0RUb0IwVGFnICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NDQzMjQyMzAsICAvLyAnRDJCMCcKKyAgICBjbXNTaWdEVG9CMVRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDQ0MzI0MjMxLCAgLy8gJ0QyQjEnCisgICAgY21zU2lnRFRvQjJUYWcgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0NDMyNDIzMiwgIC8vICdEMkIyJworICAgIGNtc1NpZ0RUb0IzVGFnICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NDQzMjQyMzMsICAvLyAnRDJCMycKKyAgICBjbXNTaWdCVG9EMFRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDQyMzI0NDMwLCAgLy8gJ0IyRDAnCisgICAgY21zU2lnQlRvRDFUYWcgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0MjMyNDQzMSwgIC8vICdCMkQxJworICAgIGNtc1NpZ0JUb0QyVGFnICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NDIzMjQ0MzIsICAvLyAnQjJEMicKKyAgICBjbXNTaWdCVG9EM1RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDQyMzI0NDMzLCAgLy8gJ0IyRDMnCisgICAgY21zU2lnR2FtdXRUYWcgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg2NzYxNkQ3NCwgIC8vICdnYW10JworICAgIGNtc1NpZ0dyYXlUUkNUYWcgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NmI1NDUyNDMsICAvLyAna1RSQycKKyAgICBjbXNTaWdHcmVlbkNvbG9yYW50VGFnICAgICAgICAgICAgICAgICAgPSAweDY3NTg1OTVBLCAgLy8gJ2dYWVonCisgICAgY21zU2lnR3JlZW5NYXRyaXhDb2x1bW5UYWcgICAgICAgICAgICAgID0gMHg2NzU4NTk1QSwgIC8vICdnWFlaJworICAgIGNtc1NpZ0dyZWVuVFJDVGFnICAgICAgICAgICAgICAgICAgICAgICA9IDB4Njc1NDUyNDMsICAvLyAnZ1RSQycKKyAgICBjbXNTaWdMdW1pbmFuY2VUYWcgICAgICAgICAgICAgICAgICAgICAgPSAweDZDNzU2ZDY5LCAgLy8gJ2x1bWknCisgICAgY21zU2lnTWVhc3VyZW1lbnRUYWcgICAgICAgICAgICAgICAgICAgID0gMHg2RDY1NjE3MywgIC8vICdtZWFzJworICAgIGNtc1NpZ01lZGlhQmxhY2tQb2ludFRhZyAgICAgICAgICAgICAgICA9IDB4NjI2QjcwNzQsICAvLyAnYmtwdCcKKyAgICBjbXNTaWdNZWRpYVdoaXRlUG9pbnRUYWcgICAgICAgICAgICAgICAgPSAweDc3NzQ3MDc0LCAgLy8gJ3d0cHQnCisgICAgY21zU2lnTmFtZWRDb2xvclRhZyAgICAgICAgICAgICAgICAgICAgID0gMHg2RTYzNmY2QywgIC8vICduY29sJyAvLyBEZXByZWNhdGVkIGJ5IHRoZSBJQ0MKKyAgICBjbXNTaWdOYW1lZENvbG9yMlRhZyAgICAgICAgICAgICAgICAgICAgPSAweDZFNjM2QzMyLCAgLy8gJ25jbDInCisgICAgY21zU2lnT3V0cHV0UmVzcG9uc2VUYWcgICAgICAgICAgICAgICAgID0gMHg3MjY1NzM3MCwgIC8vICdyZXNwJworICAgIGNtc1NpZ1BlcmNlcHR1YWxSZW5kZXJpbmdJbnRlbnRHYW11dFRhZyA9IDB4NzI2OTY3MzAsICAvLyAncmlnMCcKKyAgICBjbXNTaWdQcmV2aWV3MFRhZyAgICAgICAgICAgICAgICAgICAgICAgPSAweDcwNzI2NTMwLCAgLy8gJ3ByZTAnCisgICAgY21zU2lnUHJldmlldzFUYWcgICAgICAgICAgICAgICAgICAgICAgID0gMHg3MDcyNjUzMSwgIC8vICdwcmUxJworICAgIGNtc1NpZ1ByZXZpZXcyVGFnICAgICAgICAgICAgICAgICAgICAgICA9IDB4NzA3MjY1MzIsICAvLyAncHJlMicKKyAgICBjbXNTaWdQcm9maWxlRGVzY3JpcHRpb25UYWcgICAgICAgICAgICAgPSAweDY0NjU3MzYzLCAgLy8gJ2Rlc2MnCisgICAgY21zU2lnUHJvZmlsZURlc2NyaXB0aW9uTUxUYWcgICAgICAgICAgID0gMHg2NDczNjM2ZCwgIC8vICdkc2NtJworICAgIGNtc1NpZ1Byb2ZpbGVTZXF1ZW5jZURlc2NUYWcgICAgICAgICAgICA9IDB4NzA3MzY1NzEsICAvLyAncHNlcScKKyAgICBjbXNTaWdQcm9maWxlU2VxdWVuY2VJZFRhZyAgICAgICAgICAgICAgPSAweDcwNzM2OTY0LCAgLy8gJ3BzaWQnCisgICAgY21zU2lnUHMyQ1JEMFRhZyAgICAgICAgICAgICAgICAgICAgICAgID0gMHg3MDczNjQzMCwgIC8vICdwc2QwJworICAgIGNtc1NpZ1BzMkNSRDFUYWcgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NzA3MzY0MzEsICAvLyAncHNkMScKKyAgICBjbXNTaWdQczJDUkQyVGFnICAgICAgICAgICAgICAgICAgICAgICAgPSAweDcwNzM2NDMyLCAgLy8gJ3BzZDInCisgICAgY21zU2lnUHMyQ1JEM1RhZyAgICAgICAgICAgICAgICAgICAgICAgID0gMHg3MDczNjQzMywgIC8vICdwc2QzJworICAgIGNtc1NpZ1BzMkNTQVRhZyAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NzA3MzMyNzMsICAvLyAncHMycycKKyAgICBjbXNTaWdQczJSZW5kZXJpbmdJbnRlbnRUYWcgICAgICAgICAgICAgPSAweDcwNzMzMjY5LCAgLy8gJ3BzMmknCisgICAgY21zU2lnUmVkQ29sb3JhbnRUYWcgICAgICAgICAgICAgICAgICAgID0gMHg3MjU4NTk1QSwgIC8vICdyWFlaJworICAgIGNtc1NpZ1JlZE1hdHJpeENvbHVtblRhZyAgICAgICAgICAgICAgICA9IDB4NzI1ODU5NUEsICAvLyAnclhZWicKKyAgICBjbXNTaWdSZWRUUkNUYWcgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDcyNTQ1MjQzLCAgLy8gJ3JUUkMnCisgICAgY21zU2lnU2F0dXJhdGlvblJlbmRlcmluZ0ludGVudEdhbXV0VGFnID0gMHg3MjY5NjczMiwgIC8vICdyaWcyJworICAgIGNtc1NpZ1NjcmVlbmluZ0Rlc2NUYWcgICAgICAgICAgICAgICAgICA9IDB4NzM2MzcyNjQsICAvLyAnc2NyZCcKKyAgICBjbXNTaWdTY3JlZW5pbmdUYWcgICAgICAgICAgICAgICAgICAgICAgPSAweDczNjM3MjZFLCAgLy8gJ3Njcm4nCisgICAgY21zU2lnVGVjaG5vbG9neVRhZyAgICAgICAgICAgICAgICAgICAgID0gMHg3NDY1NjM2OCwgIC8vICd0ZWNoJworICAgIGNtc1NpZ1VjckJnVGFnICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NjI2NjY0MjAsICAvLyAnYmZkICcKKyAgICBjbXNTaWdWaWV3aW5nQ29uZERlc2NUYWcgICAgICAgICAgICAgICAgPSAweDc2NzU2NTY0LCAgLy8gJ3Z1ZWQnCisgICAgY21zU2lnVmlld2luZ0NvbmRpdGlvbnNUYWcgICAgICAgICAgICAgID0gMHg3NjY5NjU3NywgIC8vICd2aWV3JworICAgIGNtc1NpZ1ZjZ3RUYWcgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NzY2MzY3NzQsICAvLyAndmNndCcKKyAgICBjbXNTaWdNZXRhVGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDZENjU3NDYxICAgLy8gJ21ldGEnCisKK30gY21zVGFnU2lnbmF0dXJlOworCisKKy8vIElDQyBUZWNobm9sb2d5IHRhZwordHlwZWRlZiBlbnVtIHsKKyAgICBjbXNTaWdEaWdpdGFsQ2FtZXJhICAgICAgICAgICAgICAgICAgICAgPSAweDY0NjM2MTZELCAgLy8gJ2RjYW0nCisgICAgY21zU2lnRmlsbVNjYW5uZXIgICAgICAgICAgICAgICAgICAgICAgID0gMHg2NjczNjM2RSwgIC8vICdmc2NuJworICAgIGNtc1NpZ1JlZmxlY3RpdmVTY2FubmVyICAgICAgICAgICAgICAgICA9IDB4NzI3MzYzNkUsICAvLyAncnNjbicKKyAgICBjbXNTaWdJbmtKZXRQcmludGVyICAgICAgICAgICAgICAgICAgICAgPSAweDY5NkE2NTc0LCAgLy8gJ2lqZXQnCisgICAgY21zU2lnVGhlcm1hbFdheFByaW50ZXIgICAgICAgICAgICAgICAgID0gMHg3NDc3NjE3OCwgIC8vICd0d2F4JworICAgIGNtc1NpZ0VsZWN0cm9waG90b2dyYXBoaWNQcmludGVyICAgICAgICA9IDB4NjU3MDY4NkYsICAvLyAnZXBobycKKyAgICBjbXNTaWdFbGVjdHJvc3RhdGljUHJpbnRlciAgICAgICAgICAgICAgPSAweDY1NzM3NDYxLCAgLy8gJ2VzdGEnCisgICAgY21zU2lnRHllU3VibGltYXRpb25QcmludGVyICAgICAgICAgICAgID0gMHg2NDczNzU2MiwgIC8vICdkc3ViJworICAgIGNtc1NpZ1Bob3RvZ3JhcGhpY1BhcGVyUHJpbnRlciAgICAgICAgICA9IDB4NzI3MDY4NkYsICAvLyAncnBobycKKyAgICBjbXNTaWdGaWxtV3JpdGVyICAgICAgICAgICAgICAgICAgICAgICAgPSAweDY2NzA3MjZFLCAgLy8gJ2Zwcm4nCisgICAgY21zU2lnVmlkZW9Nb25pdG9yICAgICAgICAgICAgICAgICAgICAgID0gMHg3NjY5NjQ2RCwgIC8vICd2aWRtJworICAgIGNtc1NpZ1ZpZGVvQ2FtZXJhICAgICAgICAgICAgICAgICAgICAgICA9IDB4NzY2OTY0NjMsICAvLyAndmlkYycKKyAgICBjbXNTaWdQcm9qZWN0aW9uVGVsZXZpc2lvbiAgICAgICAgICAgICAgPSAweDcwNkE3NDc2LCAgLy8gJ3BqdHYnCisgICAgY21zU2lnQ1JURGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0MzUyNTQyMCwgIC8vICdDUlQgJworICAgIGNtc1NpZ1BNRGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NTA0RDQ0MjAsICAvLyAnUE1EICcKKyAgICBjbXNTaWdBTURpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDQxNEQ0NDIwLCAgLy8gJ0FNRCAnCisgICAgY21zU2lnUGhvdG9DRCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0QjUwNDM0NCwgIC8vICdLUENEJworICAgIGNtc1NpZ1Bob3RvSW1hZ2VTZXR0ZXIgICAgICAgICAgICAgICAgICA9IDB4Njk2RDY3NzMsICAvLyAnaW1ncycKKyAgICBjbXNTaWdHcmF2dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDY3NzI2MTc2LCAgLy8gJ2dyYXYnCisgICAgY21zU2lnT2Zmc2V0TGl0aG9ncmFwaHkgICAgICAgICAgICAgICAgID0gMHg2RjY2NjY3MywgIC8vICdvZmZzJworICAgIGNtc1NpZ1NpbGtzY3JlZW4gICAgICAgICAgICAgICAgICAgICAgICA9IDB4NzM2OTZDNkIsICAvLyAnc2lsaycKKyAgICBjbXNTaWdGbGV4b2dyYXBoeSAgICAgICAgICAgICAgICAgICAgICAgPSAweDY2NkM2NTc4LCAgLy8gJ2ZsZXgnCisgICAgY21zU2lnTW90aW9uUGljdHVyZUZpbG1TY2FubmVyICAgICAgICAgID0gMHg2RDcwNjY3MywgIC8vICdtcGZzJworICAgIGNtc1NpZ01vdGlvblBpY3R1cmVGaWxtUmVjb3JkZXIgICAgICAgICA9IDB4NkQ3MDY2NzIsICAvLyAnbXBmcicKKyAgICBjbXNTaWdEaWdpdGFsTW90aW9uUGljdHVyZUNhbWVyYSAgICAgICAgPSAweDY0NkQ3MDYzLCAgLy8gJ2RtcGMnCisgICAgY21zU2lnRGlnaXRhbENpbmVtYVByb2plY3RvciAgICAgICAgICAgID0gMHg2NDYzNkE3MCAgIC8vICdkY3BqJworCit9IGNtc1RlY2hub2xvZ3lTaWduYXR1cmU7CisKKworLy8gSUNDIENvbG9yIHNwYWNlcwordHlwZWRlZiBlbnVtIHsKKyAgICBjbXNTaWdYWVpEYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDU4NTk1QTIwLCAgLy8gJ1hZWiAnCisgICAgY21zU2lnTGFiRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0QzYxNjIyMCwgIC8vICdMYWIgJworICAgIGNtc1NpZ0x1dkRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NEM3NTc2MjAsICAvLyAnTHV2ICcKKyAgICBjbXNTaWdZQ2JDckRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDU5NDM2MjcyLCAgLy8gJ1lDYnInCisgICAgY21zU2lnWXh5RGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg1OTc4NzkyMCwgIC8vICdZeHkgJworICAgIGNtc1NpZ1JnYkRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NTI0NzQyMjAsICAvLyAnUkdCICcKKyAgICBjbXNTaWdHcmF5RGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDQ3NTI0MTU5LCAgLy8gJ0dSQVknCisgICAgY21zU2lnSHN2RGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0ODUzNTYyMCwgIC8vICdIU1YgJworICAgIGNtc1NpZ0hsc0RhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NDg0QzUzMjAsICAvLyAnSExTICcKKyAgICBjbXNTaWdDbXlrRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDQzNEQ1OTRCLCAgLy8gJ0NNWUsnCisgICAgY21zU2lnQ215RGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0MzRENTkyMCwgIC8vICdDTVkgJworICAgIGNtc1NpZ01DSDFEYXRhICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NEQ0MzQ4MzEsICAvLyAnTUNIMScKKyAgICBjbXNTaWdNQ0gyRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDRENDM0ODMyLCAgLy8gJ01DSDInCisgICAgY21zU2lnTUNIM0RhdGEgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0RDQzNDgzMywgIC8vICdNQ0gzJworICAgIGNtc1NpZ01DSDREYXRhICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NEQ0MzQ4MzQsICAvLyAnTUNINCcKKyAgICBjbXNTaWdNQ0g1RGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDRENDM0ODM1LCAgLy8gJ01DSDUnCisgICAgY21zU2lnTUNINkRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0RDQzNDgzNiwgIC8vICdNQ0g2JworICAgIGNtc1NpZ01DSDdEYXRhICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NEQ0MzQ4MzcsICAvLyAnTUNINycKKyAgICBjbXNTaWdNQ0g4RGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDRENDM0ODM4LCAgLy8gJ01DSDgnCisgICAgY21zU2lnTUNIOURhdGEgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0RDQzNDgzOSwgIC8vICdNQ0g5JworICAgIGNtc1NpZ01DSEFEYXRhICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NEQ0MzQ4NDEsICAvLyAnTUNIQScKKyAgICBjbXNTaWdNQ0hCRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDRENDM0ODQyLCAgLy8gJ01DSEInCisgICAgY21zU2lnTUNIQ0RhdGEgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0RDQzNDg0MywgIC8vICdNQ0hDJworICAgIGNtc1NpZ01DSEREYXRhICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NEQ0MzQ4NDQsICAvLyAnTUNIRCcKKyAgICBjbXNTaWdNQ0hFRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDRENDM0ODQ1LCAgLy8gJ01DSEUnCisgICAgY21zU2lnTUNIRkRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0RDQzNDg0NiwgIC8vICdNQ0hGJworICAgIGNtc1NpZ05hbWVkRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NmU2ZDYzNmMsICAvLyAnbm1jbCcKKyAgICBjbXNTaWcxY29sb3JEYXRhICAgICAgICAgICAgICAgICAgICAgICAgPSAweDMxNDM0QzUyLCAgLy8gJzFDTFInCisgICAgY21zU2lnMmNvbG9yRGF0YSAgICAgICAgICAgICAgICAgICAgICAgID0gMHgzMjQzNEM1MiwgIC8vICcyQ0xSJworICAgIGNtc1NpZzNjb2xvckRhdGEgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MzM0MzRDNTIsICAvLyAnM0NMUicKKyAgICBjbXNTaWc0Y29sb3JEYXRhICAgICAgICAgICAgICAgICAgICAgICAgPSAweDM0NDM0QzUyLCAgLy8gJzRDTFInCisgICAgY21zU2lnNWNvbG9yRGF0YSAgICAgICAgICAgICAgICAgICAgICAgID0gMHgzNTQzNEM1MiwgIC8vICc1Q0xSJworICAgIGNtc1NpZzZjb2xvckRhdGEgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MzY0MzRDNTIsICAvLyAnNkNMUicKKyAgICBjbXNTaWc3Y29sb3JEYXRhICAgICAgICAgICAgICAgICAgICAgICAgPSAweDM3NDM0QzUyLCAgLy8gJzdDTFInCisgICAgY21zU2lnOGNvbG9yRGF0YSAgICAgICAgICAgICAgICAgICAgICAgID0gMHgzODQzNEM1MiwgIC8vICc4Q0xSJworICAgIGNtc1NpZzljb2xvckRhdGEgICAgICAgICAgICAgICAgICAgICAgICA9IDB4Mzk0MzRDNTIsICAvLyAnOUNMUicKKyAgICBjbXNTaWcxMGNvbG9yRGF0YSAgICAgICAgICAgICAgICAgICAgICAgPSAweDQxNDM0QzUyLCAgLy8gJ0FDTFInCisgICAgY21zU2lnMTFjb2xvckRhdGEgICAgICAgICAgICAgICAgICAgICAgID0gMHg0MjQzNEM1MiwgIC8vICdCQ0xSJworICAgIGNtc1NpZzEyY29sb3JEYXRhICAgICAgICAgICAgICAgICAgICAgICA9IDB4NDM0MzRDNTIsICAvLyAnQ0NMUicKKyAgICBjbXNTaWcxM2NvbG9yRGF0YSAgICAgICAgICAgICAgICAgICAgICAgPSAweDQ0NDM0QzUyLCAgLy8gJ0RDTFInCisgICAgY21zU2lnMTRjb2xvckRhdGEgICAgICAgICAgICAgICAgICAgICAgID0gMHg0NTQzNEM1MiwgIC8vICdFQ0xSJworICAgIGNtc1NpZzE1Y29sb3JEYXRhICAgICAgICAgICAgICAgICAgICAgICA9IDB4NDY0MzRDNTIsICAvLyAnRkNMUicKKyAgICBjbXNTaWdMdXZLRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDRDNzU3NjRCICAgLy8gJ0x1dksnCisKK30gY21zQ29sb3JTcGFjZVNpZ25hdHVyZTsKKworLy8gSUNDIFByb2ZpbGUgQ2xhc3MKK3R5cGVkZWYgZW51bSB7CisgICAgY21zU2lnSW5wdXRDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgID0gMHg3MzYzNkU3MiwgIC8vICdzY25yJworICAgIGNtc1NpZ0Rpc3BsYXlDbGFzcyAgICAgICAgICAgICAgICAgICAgICA9IDB4NkQ2RTc0NzIsICAvLyAnbW50cicKKyAgICBjbXNTaWdPdXRwdXRDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgPSAweDcwNzI3NDcyLCAgLy8gJ3BydHInCisgICAgY21zU2lnTGlua0NsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg2QzY5NkU2QiwgIC8vICdsaW5rJworICAgIGNtc1NpZ0Fic3RyYWN0Q2xhc3MgICAgICAgICAgICAgICAgICAgICA9IDB4NjE2MjczNzQsICAvLyAnYWJzdCcKKyAgICBjbXNTaWdDb2xvclNwYWNlQ2xhc3MgICAgICAgICAgICAgICAgICAgPSAweDczNzA2MTYzLCAgLy8gJ3NwYWMnCisgICAgY21zU2lnTmFtZWRDb2xvckNsYXNzICAgICAgICAgICAgICAgICAgID0gMHg2ZTZkNjM2YyAgIC8vICdubWNsJworCit9IGNtc1Byb2ZpbGVDbGFzc1NpZ25hdHVyZTsKKworLy8gSUNDIFBsYXRmb3JtcwordHlwZWRlZiBlbnVtIHsKKyAgICBjbXNTaWdNYWNpbnRvc2ggICAgICAgICAgICAgICAgICAgICAgICAgPSAweDQxNTA1MDRDLCAgLy8gJ0FQUEwnCisgICAgY21zU2lnTWljcm9zb2Z0ICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg0RDUzNDY1NCwgIC8vICdNU0ZUJworICAgIGNtc1NpZ1NvbGFyaXMgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NTM1NTRFNTcsICAvLyAnU1VOVycKKyAgICBjbXNTaWdTR0kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDUzNDc0OTIwLCAgLy8gJ1NHSSAnCisgICAgY21zU2lnVGFsaWdlbnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg1NDQ3NEU1NCwgIC8vICdUR05UJworICAgIGNtc1NpZ1VuaWNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MkE2RTY5NzggICAvLyAnKm5peCcgICAvLyBGcm9tIGFyZ3lsbCAtLSBOb3Qgb2ZmaWNpYWwKKworfSBjbXNQbGF0Zm9ybVNpZ25hdHVyZTsKKworLy8gUmVmZXJlbmNlIGdhbXV0CisjZGVmaW5lICBjbXNTaWdQZXJjZXB0dWFsUmVmZXJlbmNlTWVkaXVtR2FtdXQgICAgICAgICAweDcwNzI2ZDY3ICAvLydwcm1nJworCisvLyBGb3IgY21zU2lnQ29sb3JpbWV0cmljSW50ZW50SW1hZ2VTdGF0ZVRhZworI2RlZmluZSAgY21zU2lnU2NlbmVDb2xvcmltZXRyeUVzdGltYXRlcyAgICAgICAgICAgICAgMHg3MzYzNkY2NSAgLy8nc2NvZScKKyNkZWZpbmUgIGNtc1NpZ1NjZW5lQXBwZWFyYW5jZUVzdGltYXRlcyAgICAgICAgICAgICAgIDB4NzM2MTcwNjUgIC8vJ3NhcGUnCisjZGVmaW5lICBjbXNTaWdGb2NhbFBsYW5lQ29sb3JpbWV0cnlFc3RpbWF0ZXMgICAgICAgICAweDY2NzA2MzY1ICAvLydmcGNlJworI2RlZmluZSAgY21zU2lnUmVmbGVjdGlvbkhhcmRjb3B5T3JpZ2luYWxDb2xvcmltZXRyeSAgMHg3MjY4NkY2MyAgLy8ncmhvYycKKyNkZWZpbmUgIGNtc1NpZ1JlZmxlY3Rpb25QcmludE91dHB1dENvbG9yaW1ldHJ5ICAgICAgIDB4NzI3MDZGNjMgIC8vJ3Jwb2MnCisKKy8vIE11bHRpIHByb2Nlc3MgZWxlbWVudHMgdHlwZXMKK3R5cGVkZWYgZW51bSB7CisgICAgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSAgICAgICAgICAgICAgPSAweDYzNzY3Mzc0LCAgLy8nY3ZzdCcKKyAgICBjbXNTaWdNYXRyaXhFbGVtVHlwZSAgICAgICAgICAgICAgICA9IDB4NkQ2MTc0NjYsICAvLydtYXRmJworICAgIGNtc1NpZ0NMdXRFbGVtVHlwZSAgICAgICAgICAgICAgICAgID0gMHg2MzZDNzU3NCwgIC8vJ2NsdXQnCisKKyAgICBjbXNTaWdCQWNzRWxlbVR5cGUgICAgICAgICAgICAgICAgICA9IDB4NjI0MTQzNTMsICAvLyAnYkFDUycKKyAgICBjbXNTaWdFQWNzRWxlbVR5cGUgICAgICAgICAgICAgICAgICA9IDB4NjU0MTQzNTMsICAvLyAnZUFDUycKKworICAgIC8vIEN1c3RvbSBmcm9tIGhlcmUsIG5vdCBpbiB0aGUgSUNDIFNwZWMKKyAgICBjbXNTaWdYWVoyTGFiRWxlbVR5cGUgICAgICAgICAgICAgICA9IDB4NkMzMjc4MjAsICAvLyAnbDJ4ICcKKyAgICBjbXNTaWdMYWIyWFlaRWxlbVR5cGUgICAgICAgICAgICAgICA9IDB4NzgzMjZDMjAsICAvLyAneDJsICcKKyAgICBjbXNTaWdOYW1lZENvbG9yRWxlbVR5cGUgICAgICAgICAgICA9IDB4NkU2MzZDMjAsICAvLyAnbmNsICcKKyAgICBjbXNTaWdMYWJWMnRvVjQgICAgICAgICAgICAgICAgICAgICA9IDB4MzIyMDM0MjAsICAvLyAnMiA0ICcKKyAgICBjbXNTaWdMYWJWNHRvVjIgICAgICAgICAgICAgICAgICAgICA9IDB4MzQyMDMyMjAsICAvLyAnNCAyICcKKworICAgIC8vIElkZW50aXRpZXMKKyAgICBjbXNTaWdJZGVudGl0eUVsZW1UeXBlICAgICAgICAgICAgICA9IDB4Njk2NDZFMjAsICAvLyAnaWRuICcKKworICAgIC8vIEZsb2F0IHRvIGZsb2F0UENTCisgICAgY21zU2lnTGFiMkZsb2F0UENTICAgICAgICAgICAgICAgICAgPSAweDY0MzI2QzIwLCAgLy8gJ2QybCAnCisgICAgY21zU2lnRmxvYXRQQ1MyTGFiICAgICAgICAgICAgICAgICAgPSAweDZDMzI2NDIwLCAgLy8gJ2wyZCAnCisgICAgY21zU2lnWFlaMkZsb2F0UENTICAgICAgICAgICAgICAgICAgPSAweDY0MzI3ODIwLCAgLy8gJ2QyeCAnCisgICAgY21zU2lnRmxvYXRQQ1MyWFlaICAgICAgICAgICAgICAgICAgPSAweDc4MzI2NDIwICAgLy8gJ3gyZCAnCisKK30gY21zU3RhZ2VTaWduYXR1cmU7CisKKy8vIFR5cGVzIG9mIEN1cnZlRWxlbWVudHMKK3R5cGVkZWYgZW51bSB7CisKKyAgICBjbXNTaWdGb3JtdWxhQ3VydmVTZWcgICAgICAgICAgICAgICA9IDB4NzA2MTcyNjYsIC8vICdwYXJmJworICAgIGNtc1NpZ1NhbXBsZWRDdXJ2ZVNlZyAgICAgICAgICAgICAgID0gMHg3MzYxNkQ2NiwgLy8gJ3NhbWYnCisgICAgY21zU2lnU2VnbWVudGVkQ3VydmUgICAgICAgICAgICAgICAgPSAweDYzNzU3MjY2ICAvLyAnY3VyZicKKworfSBjbXNDdXJ2ZVNlZ1NpZ25hdHVyZTsKKworLy8gVXNlZCBpbiBSZXNwb25zZUN1cnZlVHlwZQorI2RlZmluZSAgY21zU2lnU3RhdHVzQSAgICAgICAgICAgICAgICAgICAgMHg1Mzc0NjE0MSAvLydTdGFBJworI2RlZmluZSAgY21zU2lnU3RhdHVzRSAgICAgICAgICAgICAgICAgICAgMHg1Mzc0NjE0NSAvLydTdGFFJworI2RlZmluZSAgY21zU2lnU3RhdHVzSSAgICAgICAgICAgICAgICAgICAgMHg1Mzc0NjE0OSAvLydTdGFJJworI2RlZmluZSAgY21zU2lnU3RhdHVzVCAgICAgICAgICAgICAgICAgICAgMHg1Mzc0NjE1NCAvLydTdGFUJworI2RlZmluZSAgY21zU2lnU3RhdHVzTSAgICAgICAgICAgICAgICAgICAgMHg1Mzc0NjE0RCAvLydTdGFNJworI2RlZmluZSAgY21zU2lnRE4gICAgICAgICAgICAgICAgICAgICAgICAgMHg0NDRFMjAyMCAvLydETiAgJworI2RlZmluZSAgY21zU2lnRE5QICAgICAgICAgICAgICAgICAgICAgICAgMHg0NDRFMjA1MCAvLydETiBQJworI2RlZmluZSAgY21zU2lnRE5OICAgICAgICAgICAgICAgICAgICAgICAgMHg0NDRFNEUyMCAvLydETk4gJworI2RlZmluZSAgY21zU2lnRE5OUCAgICAgICAgICAgICAgICAgICAgICAgMHg0NDRFNEU1MCAvLydETk5QJworCisvLyBEZXZpY2UgYXR0cmlidXRlcywgY3VycmVudGx5IGRlZmluZWQgdmFsdWVzIGNvcnJlc3BvbmQgdG8gdGhlIGxvdyA0IGJ5dGVzCisvLyBvZiB0aGUgOCBieXRlIGF0dHJpYnV0ZSBxdWFudGl0eQorI2RlZmluZSBjbXNSZWZsZWN0aXZlICAgICAwCisjZGVmaW5lIGNtc1RyYW5zcGFyZW5jeSAgIDEKKyNkZWZpbmUgY21zR2xvc3N5ICAgICAgICAgMAorI2RlZmluZSBjbXNNYXR0ZSAgICAgICAgICAyCisKKy8vIENvbW1vbiBzdHJ1Y3R1cmVzIGluIElDQyB0YWdzCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zVUludDMyTnVtYmVyIGxlbjsKKyAgICBjbXNVSW50MzJOdW1iZXIgZmxhZzsKKyAgICBjbXNVSW50OE51bWJlciAgZGF0YVsxXTsKKworfSBjbXNJQ0NEYXRhOworCisvLyBJQ0MgZGF0ZSB0aW1lCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zVUludDE2TnVtYmVyICAgICAgeWVhcjsKKyAgICBjbXNVSW50MTZOdW1iZXIgICAgICBtb250aDsKKyAgICBjbXNVSW50MTZOdW1iZXIgICAgICBkYXk7CisgICAgY21zVUludDE2TnVtYmVyICAgICAgaG91cnM7CisgICAgY21zVUludDE2TnVtYmVyICAgICAgbWludXRlczsKKyAgICBjbXNVSW50MTZOdW1iZXIgICAgICBzZWNvbmRzOworCit9IGNtc0RhdGVUaW1lTnVtYmVyOworCisvLyBJQ0MgWFlaCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zUzE1Rml4ZWQxNk51bWJlciAgWDsKKyAgICBjbXNTMTVGaXhlZDE2TnVtYmVyICBZOworICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgIFo7CisKK30gY21zRW5jb2RlZFhZWk51bWJlcjsKKworCisvLyBQcm9maWxlIElEIGFzIGNvbXB1dGVkIGJ5IE1ENSBhbGdvcml0aG0KK3R5cGVkZWYgdW5pb24geworICAgIGNtc1VJbnQ4TnVtYmVyICAgICAgIElEOFsxNl07CisgICAgY21zVUludDE2TnVtYmVyICAgICAgSUQxNls4XTsKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICBJRDMyWzRdOworCit9IGNtc1Byb2ZpbGVJRDsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBJQ0MgcHJvZmlsZSBpbnRlcm5hbCBiYXNlIHR5cGVzLiBTdHJpY3RseSwgc2hvdWxkbid0IGJlIGRlY2xhcmVkIGluIHRoaXMgaGVhZGVyLCBidXQgbWF5YmUKKy8vIHNvbWVib2R5IHdhbnQgdG8gdXNlIHRoaXMgaW5mbyBmb3IgYWNjZXNzaW5nIHByb2ZpbGUgaGVhZGVyIGRpcmVjdGx5LCBzbyBoZXJlIGl0IGlzLgorCisvLyBQcm9maWxlIGhlYWRlciAtLSBpdCBpcyAzMi1iaXQgYWxpZ25lZCwgc28gbm8gaXNzdWVzIGFyZSBleHBlY3RlZCBvbiBhbGlnbm1lbnQKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgICAgICAgIHNpemU7ICAgICAgICAgICAvLyBQcm9maWxlIHNpemUgaW4gYnl0ZXMKKyAgICBjbXNTaWduYXR1cmUgICAgICAgICAgICAgICAgIGNtbUlkOyAgICAgICAgICAvLyBDTU0gZm9yIHRoaXMgcHJvZmlsZQorICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgICAgICAgdmVyc2lvbjsgICAgICAgIC8vIEZvcm1hdCB2ZXJzaW9uIG51bWJlcgorICAgIGNtc1Byb2ZpbGVDbGFzc1NpZ25hdHVyZSAgICAgZGV2aWNlQ2xhc3M7ICAgIC8vIFR5cGUgb2YgcHJvZmlsZQorICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgICAgICAgY29sb3JTcGFjZTsgICAgIC8vIENvbG9yIHNwYWNlIG9mIGRhdGEKKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlICAgICAgIHBjczsgICAgICAgICAgICAvLyBQQ1MsIFhZWiBvciBMYWIgb25seQorICAgIGNtc0RhdGVUaW1lTnVtYmVyICAgICAgICAgICAgZGF0ZTsgICAgICAgICAgIC8vIERhdGUgcHJvZmlsZSB3YXMgY3JlYXRlZAorICAgIGNtc1NpZ25hdHVyZSAgICAgICAgICAgICAgICAgbWFnaWM7ICAgICAgICAgIC8vIE1hZ2ljIE51bWJlciB0byBpZGVudGlmeSBhbiBJQ0MgcHJvZmlsZQorICAgIGNtc1BsYXRmb3JtU2lnbmF0dXJlICAgICAgICAgcGxhdGZvcm07ICAgICAgIC8vIFByaW1hcnkgUGxhdGZvcm0KKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgICAgICAgIGZsYWdzOyAgICAgICAgICAvLyBWYXJpb3VzIGJpdCBzZXR0aW5ncworICAgIGNtc1NpZ25hdHVyZSAgICAgICAgICAgICAgICAgbWFudWZhY3R1cmVyOyAgIC8vIERldmljZSBtYW51ZmFjdHVyZXIKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgICAgICAgIG1vZGVsOyAgICAgICAgICAvLyBEZXZpY2UgbW9kZWwgbnVtYmVyCisgICAgY21zVUludDY0TnVtYmVyICAgICAgICAgICAgICBhdHRyaWJ1dGVzOyAgICAgLy8gRGV2aWNlIGF0dHJpYnV0ZXMKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgICAgICAgIHJlbmRlcmluZ0ludGVudDsvLyBSZW5kZXJpbmcgaW50ZW50CisgICAgY21zRW5jb2RlZFhZWk51bWJlciAgICAgICAgICBpbGx1bWluYW50OyAgICAgLy8gUHJvZmlsZSBpbGx1bWluYW50CisgICAgY21zU2lnbmF0dXJlICAgICAgICAgICAgICAgICBjcmVhdG9yOyAgICAgICAgLy8gUHJvZmlsZSBjcmVhdG9yCisgICAgY21zUHJvZmlsZUlEICAgICAgICAgICAgICAgICBwcm9maWxlSUQ7ICAgICAgLy8gUHJvZmlsZSBJRCB1c2luZyBNRDUKKyAgICBjbXNJbnQ4TnVtYmVyICAgICAgICAgICAgICAgIHJlc2VydmVkWzI4XTsgICAvLyBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQorCit9IGNtc0lDQ0hlYWRlcjsKKworLy8gSUNDIGJhc2UgdGFnCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zVGFnVHlwZVNpZ25hdHVyZSAgc2lnOworICAgIGNtc0ludDhOdW1iZXIgICAgICAgIHJlc2VydmVkWzRdOworCit9IGNtc1RhZ0Jhc2U7CisKKy8vIEEgdGFnIGVudHJ5IGluIGRpcmVjdG9yeQordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNtc1RhZ1NpZ25hdHVyZSAgICAgIHNpZzsgICAgICAgICAgICAvLyBUaGUgdGFnIHNpZ25hdHVyZQorICAgIGNtc1VJbnQzMk51bWJlciAgICAgIG9mZnNldDsgICAgICAgICAvLyBTdGFydCBvZiB0YWcKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICBzaXplOyAgICAgICAgICAgLy8gU2l6ZSBpbiBieXRlcworCit9IGNtc1RhZ0VudHJ5OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIExpdHRsZSBDTVMgc3BlY2lmaWMgdHlwZWRlZnMKKwordHlwZWRlZiB2b2lkKiBjbXNIQU5ETEUgOyAgICAgICAgICAgICAgLy8gR2VuZXJpYyBoYW5kbGUKK3R5cGVkZWYgdm9pZCogY21zSFBST0ZJTEU7ICAgICAgICAgICAgIC8vIE9wYXF1ZSB0eXBlZGVmcyB0byBoaWRlIGludGVybmFscwordHlwZWRlZiB2b2lkKiBjbXNIVFJBTlNGT1JNOworCisjZGVmaW5lIGNtc01BWENIQU5ORUxTICAxNiAgICAgICAgICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBpbiBJQ0MgcHJvZmlsZXMKKworLy8gRm9ybWF0IG9mIHBpeGVsIGlzIGRlZmluZWQgYnkgb25lIGNtc1VJbnQzMk51bWJlciwgdXNpbmcgYml0IGZpZWxkcyBhcyBmb2xsb3dzCisvLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAxICAgICAgICAgIDAKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAzIDIgMTA5ODcgNiA1IDQgMyAyIDEgMDk4IDc2NTQgMzIxCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgQSBPIFRUVFRUIFUgWSBGIFAgWCBTIEVFRSBDQ0NDIEJCQgorLy8KKy8vICAgICAgICAgICAgQTogRmxvYXRpbmcgcG9pbnQgLS0gV2l0aCB0aGlzIGZsYWcgd2UgY2FuIGRpZmZlcmVudGlhdGUgMTYgYml0cyBhcyBmbG9hdCBhbmQgYXMgaW50CisvLyAgICAgICAgICAgIE86IE9wdGltaXplZCAtLSBwcmV2aW91cyBvcHRpbWl6YXRpb24gYWxyZWFkeSByZXR1cm5zIHRoZSBmaW5hbCA4LWJpdCB2YWx1ZQorLy8gICAgICAgICAgICBUOiBQaXhlbHR5cGUKKy8vICAgICAgICAgICAgRjogRmxhdm9yICAwPU1pbklzQmxhY2soQ2hvY29sYXRlKSAxPU1pbklzV2hpdGUoVmFuaWxsYSkKKy8vICAgICAgICAgICAgUDogUGxhbmFyPyAwPUNodW5reSwgMT1QbGFuYXIKKy8vICAgICAgICAgICAgWDogc3dhcCAxNiBicHMgZW5kaWFuZXNzPworLy8gICAgICAgICAgICBTOiBEbyBzd2FwPyBpZSwgQkdSLCBLWU1DCisvLyAgICAgICAgICAgIEU6IEV4dHJhIHNhbXBsZXMKKy8vICAgICAgICAgICAgQzogQ2hhbm5lbHMgKFNhbXBsZXMgcGVyIHBpeGVsKQorLy8gICAgICAgICAgICBCOiBieXRlcyBwZXIgc2FtcGxlCisvLyAgICAgICAgICAgIFk6IFN3YXAgZmlyc3QgLSBjaGFuZ2VzIEFCR1IgdG8gQkdSQSBhbmQgS0NNWSB0byBDTVlLCisKKyNkZWZpbmUgRkxPQVRfU0goYSkgICAgICAgICAgICAoKGEpIDw8IDIyKQorI2RlZmluZSBPUFRJTUlaRURfU0gocykgICAgICAgICgocykgPDwgMjEpCisjZGVmaW5lIENPTE9SU1BBQ0VfU0gocykgICAgICAgKChzKSA8PCAxNikKKyNkZWZpbmUgU1dBUEZJUlNUX1NIKHMpICAgICAgICAoKHMpIDw8IDE0KQorI2RlZmluZSBGTEFWT1JfU0gocykgICAgICAgICAgICgocykgPDwgMTMpCisjZGVmaW5lIFBMQU5BUl9TSChwKSAgICAgICAgICAgKChwKSA8PCAxMikKKyNkZWZpbmUgRU5ESUFOMTZfU0goZSkgICAgICAgICAoKGUpIDw8IDExKQorI2RlZmluZSBET1NXQVBfU0goZSkgICAgICAgICAgICgoZSkgPDwgMTApCisjZGVmaW5lIEVYVFJBX1NIKGUpICAgICAgICAgICAgKChlKSA8PCA3KQorI2RlZmluZSBDSEFOTkVMU19TSChjKSAgICAgICAgICgoYykgPDwgMykKKyNkZWZpbmUgQllURVNfU0goYikgICAgICAgICAgICAoYikKKworLy8gVGhlc2UgbWFjcm9zIHVucGFjayBmb3JtYXQgc3BlY2lmaWVycyBpbnRvIGludGVnZXJzCisjZGVmaW5lIFRfRkxPQVQoYSkgICAgICAgICAgICAoKChhKT4+MjIpJjEpCisjZGVmaW5lIFRfT1BUSU1JWkVEKG8pICAgICAgICAoKChvKT4+MjEpJjEpCisjZGVmaW5lIFRfQ09MT1JTUEFDRShzKSAgICAgICAoKChzKT4+MTYpJjMxKQorI2RlZmluZSBUX1NXQVBGSVJTVChzKSAgICAgICAgKCgocyk+PjE0KSYxKQorI2RlZmluZSBUX0ZMQVZPUihzKSAgICAgICAgICAgKCgocyk+PjEzKSYxKQorI2RlZmluZSBUX1BMQU5BUihwKSAgICAgICAgICAgKCgocCk+PjEyKSYxKQorI2RlZmluZSBUX0VORElBTjE2KGUpICAgICAgICAgKCgoZSk+PjExKSYxKQorI2RlZmluZSBUX0RPU1dBUChlKSAgICAgICAgICAgKCgoZSk+PjEwKSYxKQorI2RlZmluZSBUX0VYVFJBKGUpICAgICAgICAgICAgKCgoZSk+PjcpJjcpCisjZGVmaW5lIFRfQ0hBTk5FTFMoYykgICAgICAgICAoKChjKT4+MykmMTUpCisjZGVmaW5lIFRfQllURVMoYikgICAgICAgICAgICAoKGIpJjcpCisKKworLy8gUGl4ZWwgdHlwZXMKKyNkZWZpbmUgUFRfQU5ZICAgICAgIDAgICAgLy8gRG9uJ3QgY2hlY2sgY29sb3JzcGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxICYgMiBhcmUgcmVzZXJ2ZWQKKyNkZWZpbmUgUFRfR1JBWSAgICAgIDMKKyNkZWZpbmUgUFRfUkdCICAgICAgIDQKKyNkZWZpbmUgUFRfQ01ZICAgICAgIDUKKyNkZWZpbmUgUFRfQ01ZSyAgICAgIDYKKyNkZWZpbmUgUFRfWUNiQ3IgICAgIDcKKyNkZWZpbmUgUFRfWVVWICAgICAgIDggICAgICAvLyBMdSd2JworI2RlZmluZSBQVF9YWVogICAgICAgOQorI2RlZmluZSBQVF9MYWIgICAgICAgMTAKKyNkZWZpbmUgUFRfWVVWSyAgICAgIDExICAgICAvLyBMdSd2J0sKKyNkZWZpbmUgUFRfSFNWICAgICAgIDEyCisjZGVmaW5lIFBUX0hMUyAgICAgICAxMworI2RlZmluZSBQVF9ZeHkgICAgICAgMTQKKworI2RlZmluZSBQVF9NQ0gxICAgICAgMTUKKyNkZWZpbmUgUFRfTUNIMiAgICAgIDE2CisjZGVmaW5lIFBUX01DSDMgICAgICAxNworI2RlZmluZSBQVF9NQ0g0ICAgICAgMTgKKyNkZWZpbmUgUFRfTUNINSAgICAgIDE5CisjZGVmaW5lIFBUX01DSDYgICAgICAyMAorI2RlZmluZSBQVF9NQ0g3ICAgICAgMjEKKyNkZWZpbmUgUFRfTUNIOCAgICAgIDIyCisjZGVmaW5lIFBUX01DSDkgICAgICAyMworI2RlZmluZSBQVF9NQ0gxMCAgICAgMjQKKyNkZWZpbmUgUFRfTUNIMTEgICAgIDI1CisjZGVmaW5lIFBUX01DSDEyICAgICAyNgorI2RlZmluZSBQVF9NQ0gxMyAgICAgMjcKKyNkZWZpbmUgUFRfTUNIMTQgICAgIDI4CisjZGVmaW5lIFBUX01DSDE1ICAgICAyOQorCisjZGVmaW5lIFBUX0xhYlYyICAgICAzMCAgICAgLy8gSWRlbnRpY2FsIHRvIFBUX0xhYiwgYnV0IHVzaW5nIHRoZSBWMiBvbGQgZW5jb2RpbmcKKworLy8gU29tZSAobm90IGFsbCEpIHJlcHJlc2VudGF0aW9ucworCisjaWZuZGVmIFRZUEVfUkdCXzggICAgICAvLyBUWVBFX1JHQl84IGlzIGEgdmVyeSBjb21tb24gaWRlbnRpZmllciwgc28gZG9uJ3QgaW5jbHVkZSBvdXJzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB1c2VyIGhhcyBpdCBhbHJlYWR5IGRlZmluZWQuCisKKyNkZWZpbmUgVFlQRV9HUkFZXzggICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9HUkFZKXxDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgxKSkKKyNkZWZpbmUgVFlQRV9HUkFZXzhfUkVWICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9HUkFZKXxDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgxKXxGTEFWT1JfU0goMSkpCisjZGVmaW5lIFRZUEVfR1JBWV8xNiAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfR1JBWSl8Q0hBTk5FTFNfU0goMSl8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfR1JBWV8xNl9SRVYgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfR1JBWSl8Q0hBTk5FTFNfU0goMSl8QllURVNfU0goMil8RkxBVk9SX1NIKDEpKQorI2RlZmluZSBUWVBFX0dSQVlfMTZfU0UgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0dSQVkpfENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDIpfEVORElBTjE2X1NIKDEpKQorI2RlZmluZSBUWVBFX0dSQVlBXzggICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0dSQVkpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDEpKQorI2RlZmluZSBUWVBFX0dSQVlBXzE2ICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0dSQVkpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDIpKQorI2RlZmluZSBUWVBFX0dSQVlBXzE2X1NFICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0dSQVkpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDIpfEVORElBTjE2X1NIKDEpKQorI2RlZmluZSBUWVBFX0dSQVlBXzhfUExBTkFSICAgIChDT0xPUlNQQUNFX1NIKFBUX0dSQVkpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDEpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9HUkFZQV8xNl9QTEFOQVIgICAoQ09MT1JTUEFDRV9TSChQVF9HUkFZKXxFWFRSQV9TSCgxKXxDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgyKXxQTEFOQVJfU0goMSkpCisKKyNkZWZpbmUgVFlQRV9SR0JfOCAgICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9SR0IpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpKQorI2RlZmluZSBUWVBFX1JHQl84X1BMQU5BUiAgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMSl8UExBTkFSX1NIKDEpKQorI2RlZmluZSBUWVBFX0JHUl84ICAgICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMSl8RE9TV0FQX1NIKDEpKQorI2RlZmluZSBUWVBFX0JHUl84X1BMQU5BUiAgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMSl8RE9TV0FQX1NIKDEpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9SR0JfMTYgICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9SR0IpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpKQorI2RlZmluZSBUWVBFX1JHQl8xNl9QTEFOQVIgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8UExBTkFSX1NIKDEpKQorI2RlZmluZSBUWVBFX1JHQl8xNl9TRSAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RU5ESUFOMTZfU0goMSkpCisjZGVmaW5lIFRZUEVfQkdSXzE2ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfUkdCKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSkpCisjZGVmaW5lIFRZUEVfQkdSXzE2X1BMQU5BUiAgICAgKENPTE9SU1BBQ0VfU0goUFRfUkdCKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSl8UExBTkFSX1NIKDEpKQorI2RlZmluZSBUWVBFX0JHUl8xNl9TRSAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RE9TV0FQX1NIKDEpfEVORElBTjE2X1NIKDEpKQorCisjZGVmaW5lIFRZUEVfUkdCQV84ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfUkdCKXxFWFRSQV9TSCgxKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKSkKKyNkZWZpbmUgVFlQRV9SR0JBXzhfUExBTkFSICAgICAoQ09MT1JTUEFDRV9TSChQVF9SR0IpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9SR0JBXzE2ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9SR0IpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpKQorI2RlZmluZSBUWVBFX1JHQkFfMTZfUExBTkFSICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8RVhUUkFfU0goMSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8UExBTkFSX1NIKDEpKQorI2RlZmluZSBUWVBFX1JHQkFfMTZfU0UgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8RVhUUkFfU0goMSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RU5ESUFOMTZfU0goMSkpCisKKyNkZWZpbmUgVFlQRV9BUkdCXzggICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9SR0IpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfFNXQVBGSVJTVF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9BUkdCXzhfUExBTkFSICAgICAoQ09MT1JTUEFDRV9TSChQVF9SR0IpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfFNXQVBGSVJTVF9TSCgxKXxQTEFOQVJfU0goMSkpCisjZGVmaW5lIFRZUEVfQVJHQl8xNiAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfUkdCKXxFWFRSQV9TSCgxKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxTV0FQRklSU1RfU0goMSkpCisKKyNkZWZpbmUgVFlQRV9BQkdSXzggICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9SR0IpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfERPU1dBUF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9BQkdSXzhfUExBTkFSICAgICAoQ09MT1JTUEFDRV9TSChQVF9SR0IpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfERPU1dBUF9TSCgxKXxQTEFOQVJfU0goMSkpCisjZGVmaW5lIFRZUEVfQUJHUl8xNiAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfUkdCKXxFWFRSQV9TSCgxKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSkpCisjZGVmaW5lIFRZUEVfQUJHUl8xNl9QTEFOQVIgICAgKENPTE9SU1BBQ0VfU0goUFRfUkdCKXxFWFRSQV9TSCgxKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSl8UExBTkFSX1NIKDEpKQorI2RlZmluZSBUWVBFX0FCR1JfMTZfU0UgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8RVhUUkFfU0goMSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RE9TV0FQX1NIKDEpfEVORElBTjE2X1NIKDEpKQorCisjZGVmaW5lIFRZUEVfQkdSQV84ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfUkdCKXxFWFRSQV9TSCgxKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSl8U1dBUEZJUlNUX1NIKDEpKQorI2RlZmluZSBUWVBFX0JHUkFfOF9QTEFOQVIgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8RVhUUkFfU0goMSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMSl8RE9TV0FQX1NIKDEpfFNXQVBGSVJTVF9TSCgxKXxQTEFOQVJfU0goMSkpCisjZGVmaW5lIFRZUEVfQkdSQV8xNiAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfUkdCKXxFWFRSQV9TSCgxKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSl8U1dBUEZJUlNUX1NIKDEpKQorI2RlZmluZSBUWVBFX0JHUkFfMTZfU0UgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX1JHQil8RVhUUkFfU0goMSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RU5ESUFOMTZfU0goMSl8RE9TV0FQX1NIKDEpfFNXQVBGSVJTVF9TSCgxKSkKKworI2RlZmluZSBUWVBFX0NNWV84ICAgICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0NNWSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMSkpCisjZGVmaW5lIFRZUEVfQ01ZXzhfUExBTkFSICAgICAgKENPTE9SU1BBQ0VfU0goUFRfQ01ZKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxQTEFOQVJfU0goMSkpCisjZGVmaW5lIFRZUEVfQ01ZXzE2ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfQ01ZKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKSkKKyNkZWZpbmUgVFlQRV9DTVlfMTZfUExBTkFSICAgICAoQ09MT1JTUEFDRV9TSChQVF9DTVkpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlfMTZfU0UgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9DTVkpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfEVORElBTjE2X1NIKDEpKQorCisjZGVmaW5lIFRZUEVfQ01ZS184ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfQ01ZSyl8Q0hBTk5FTFNfU0goNCl8QllURVNfU0goMSkpCisjZGVmaW5lIFRZUEVfQ01ZS0FfOCAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfQ01ZSyl8RVhUUkFfU0goMSl8Q0hBTk5FTFNfU0goNCl8QllURVNfU0goMSkpCisjZGVmaW5lIFRZUEVfQ01ZS184X1JFViAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfQ01ZSyl8Q0hBTk5FTFNfU0goNCl8QllURVNfU0goMSl8RkxBVk9SX1NIKDEpKQorI2RlZmluZSBUWVBFX1lVVktfOCAgICAgICAgICAgIFRZUEVfQ01ZS184X1JFVgorI2RlZmluZSBUWVBFX0NNWUtfOF9QTEFOQVIgICAgIChDT0xPUlNQQUNFX1NIKFBUX0NNWUspfENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDEpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLXzE2ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9DTVlLKXxDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgyKSkKKyNkZWZpbmUgVFlQRV9DTVlLXzE2X1JFViAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9DTVlLKXxDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgyKXxGTEFWT1JfU0goMSkpCisjZGVmaW5lIFRZUEVfWVVWS18xNiAgICAgICAgICAgVFlQRV9DTVlLXzE2X1JFVgorI2RlZmluZSBUWVBFX0NNWUtfMTZfUExBTkFSICAgIChDT0xPUlNQQUNFX1NIKFBUX0NNWUspfENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDIpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLXzE2X1NFICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9DTVlLKXxDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSkKKworI2RlZmluZSBUWVBFX0tZTUNfOCAgICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0NNWUspfENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDEpfERPU1dBUF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DXzE2ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9DTVlLKXxDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSkpCisjZGVmaW5lIFRZUEVfS1lNQ18xNl9TRSAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfQ01ZSyl8Q0hBTk5FTFNfU0goNCl8QllURVNfU0goMil8RE9TV0FQX1NIKDEpfEVORElBTjE2X1NIKDEpKQorCisjZGVmaW5lIFRZUEVfS0NNWV84ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfQ01ZSyl8Q0hBTk5FTFNfU0goNCl8QllURVNfU0goMSl8U1dBUEZJUlNUX1NIKDEpKQorI2RlZmluZSBUWVBFX0tDTVlfOF9SRVYgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0NNWUspfENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDEpfEZMQVZPUl9TSCgxKXxTV0FQRklSU1RfU0goMSkpCisjZGVmaW5lIFRZUEVfS0NNWV8xNiAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfQ01ZSyl8Q0hBTk5FTFNfU0goNCl8QllURVNfU0goMil8U1dBUEZJUlNUX1NIKDEpKQorI2RlZmluZSBUWVBFX0tDTVlfMTZfUkVWICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0NNWUspfENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDIpfEZMQVZPUl9TSCgxKXxTV0FQRklSU1RfU0goMSkpCisjZGVmaW5lIFRZUEVfS0NNWV8xNl9TRSAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfQ01ZSyl8Q0hBTk5FTFNfU0goNCl8QllURVNfU0goMil8RU5ESUFOMTZfU0goMSl8U1dBUEZJUlNUX1NIKDEpKQorCisjZGVmaW5lIFRZUEVfQ01ZSzVfOCAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNINSl8Q0hBTk5FTFNfU0goNSl8QllURVNfU0goMSkpCisjZGVmaW5lIFRZUEVfQ01ZSzVfMTYgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNINSl8Q0hBTk5FTFNfU0goNSl8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfQ01ZSzVfMTZfU0UgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNINSl8Q0hBTk5FTFNfU0goNSl8QllURVNfU0goMil8RU5ESUFOMTZfU0goMSkpCisjZGVmaW5lIFRZUEVfS1lNQzVfOCAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNINSl8Q0hBTk5FTFNfU0goNSl8QllURVNfU0goMSl8RE9TV0FQX1NIKDEpKQorI2RlZmluZSBUWVBFX0tZTUM1XzE2ICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX01DSDUpfENIQU5ORUxTX1NIKDUpfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DNV8xNl9TRSAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g1KXxDSEFOTkVMU19TSCg1KXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSl8RU5ESUFOMTZfU0goMSkpCisjZGVmaW5lIFRZUEVfQ01ZSzZfOCAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNINil8Q0hBTk5FTFNfU0goNil8QllURVNfU0goMSkpCisjZGVmaW5lIFRZUEVfQ01ZSzZfOF9QTEFOQVIgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNINil8Q0hBTk5FTFNfU0goNil8QllURVNfU0goMSl8UExBTkFSX1NIKDEpKQorI2RlZmluZSBUWVBFX0NNWUs2XzE2ICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX01DSDYpfENIQU5ORUxTX1NIKDYpfEJZVEVTX1NIKDIpKQorI2RlZmluZSBUWVBFX0NNWUs2XzE2X1BMQU5BUiAgIChDT0xPUlNQQUNFX1NIKFBUX01DSDYpfENIQU5ORUxTX1NIKDYpfEJZVEVTX1NIKDIpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLNl8xNl9TRSAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g2KXxDSEFOTkVMU19TSCg2KXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLN184ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g3KXxDSEFOTkVMU19TSCg3KXxCWVRFU19TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLN18xNiAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g3KXxDSEFOTkVMU19TSCg3KXxCWVRFU19TSCgyKSkKKyNkZWZpbmUgVFlQRV9DTVlLN18xNl9TRSAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g3KXxDSEFOTkVMU19TSCg3KXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DN184ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g3KXxDSEFOTkVMU19TSCg3KXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSkpCisjZGVmaW5lIFRZUEVfS1lNQzdfMTYgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNINyl8Q0hBTk5FTFNfU0goNyl8QllURVNfU0goMil8RE9TV0FQX1NIKDEpKQorI2RlZmluZSBUWVBFX0tZTUM3XzE2X1NFICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX01DSDcpfENIQU5ORUxTX1NIKDcpfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLOF84ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g4KXxDSEFOTkVMU19TSCg4KXxCWVRFU19TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLOF8xNiAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g4KXxDSEFOTkVMU19TSCg4KXxCWVRFU19TSCgyKSkKKyNkZWZpbmUgVFlQRV9DTVlLOF8xNl9TRSAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g4KXxDSEFOTkVMU19TSCg4KXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DOF84ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g4KXxDSEFOTkVMU19TSCg4KXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSkpCisjZGVmaW5lIFRZUEVfS1lNQzhfMTYgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNIOCl8Q0hBTk5FTFNfU0goOCl8QllURVNfU0goMil8RE9TV0FQX1NIKDEpKQorI2RlZmluZSBUWVBFX0tZTUM4XzE2X1NFICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX01DSDgpfENIQU5ORUxTX1NIKDgpfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLOV84ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g5KXxDSEFOTkVMU19TSCg5KXxCWVRFU19TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLOV8xNiAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g5KXxDSEFOTkVMU19TSCg5KXxCWVRFU19TSCgyKSkKKyNkZWZpbmUgVFlQRV9DTVlLOV8xNl9TRSAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g5KXxDSEFOTkVMU19TSCg5KXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DOV84ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0g5KXxDSEFOTkVMU19TSCg5KXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSkpCisjZGVmaW5lIFRZUEVfS1lNQzlfMTYgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNIOSl8Q0hBTk5FTFNfU0goOSl8QllURVNfU0goMil8RE9TV0FQX1NIKDEpKQorI2RlZmluZSBUWVBFX0tZTUM5XzE2X1NFICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX01DSDkpfENIQU5ORUxTX1NIKDkpfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLMTBfOCAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMCl8Q0hBTk5FTFNfU0goMTApfEJZVEVTX1NIKDEpKQorI2RlZmluZSBUWVBFX0NNWUsxMF8xNiAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX01DSDEwKXxDSEFOTkVMU19TSCgxMCl8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfQ01ZSzEwXzE2X1NFICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNIMTApfENIQU5ORUxTX1NIKDEwKXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DMTBfOCAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMCl8Q0hBTk5FTFNfU0goMTApfEJZVEVTX1NIKDEpfERPU1dBUF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DMTBfMTYgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMCl8Q0hBTk5FTFNfU0goMTApfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DMTBfMTZfU0UgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMCl8Q0hBTk5FTFNfU0goMTApfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLMTFfOCAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMSl8Q0hBTk5FTFNfU0goMTEpfEJZVEVTX1NIKDEpKQorI2RlZmluZSBUWVBFX0NNWUsxMV8xNiAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX01DSDExKXxDSEFOTkVMU19TSCgxMSl8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfQ01ZSzExXzE2X1NFICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNIMTEpfENIQU5ORUxTX1NIKDExKXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DMTFfOCAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMSl8Q0hBTk5FTFNfU0goMTEpfEJZVEVTX1NIKDEpfERPU1dBUF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DMTFfMTYgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMSl8Q0hBTk5FTFNfU0goMTEpfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DMTFfMTZfU0UgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMSl8Q0hBTk5FTFNfU0goMTEpfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9DTVlLMTJfOCAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMil8Q0hBTk5FTFNfU0goMTIpfEJZVEVTX1NIKDEpKQorI2RlZmluZSBUWVBFX0NNWUsxMl8xNiAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX01DSDEyKXxDSEFOTkVMU19TSCgxMil8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfQ01ZSzEyXzE2X1NFICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTUNIMTIpfENIQU5ORUxTX1NIKDEyKXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DMTJfOCAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMil8Q0hBTk5FTFNfU0goMTIpfEJZVEVTX1NIKDEpfERPU1dBUF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DMTJfMTYgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMil8Q0hBTk5FTFNfU0goMTIpfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9LWU1DMTJfMTZfU0UgICAgICAoQ09MT1JTUEFDRV9TSChQVF9NQ0gxMil8Q0hBTk5FTFNfU0goMTIpfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKXxFTkRJQU4xNl9TSCgxKSkKKworLy8gQ29sb3JpbWV0cmljCisjZGVmaW5lIFRZUEVfWFlaXzE2ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfWFlaKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKSkKKyNkZWZpbmUgVFlQRV9MYWJfOCAgICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9MYWIpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpKQorI2RlZmluZSBUWVBFX0xhYlYyXzggICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0xhYlYyKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKSkKKworI2RlZmluZSBUWVBFX0FMYWJfOCAgICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0xhYil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMSl8RVhUUkFfU0goMSl8U1dBUEZJUlNUX1NIKDEpKQorI2RlZmluZSBUWVBFX0FMYWJWMl84ICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0xhYlYyKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxFWFRSQV9TSCgxKXxTV0FQRklSU1RfU0goMSkpCisjZGVmaW5lIFRZUEVfTGFiXzE2ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfTGFiKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKSkKKyNkZWZpbmUgVFlQRV9MYWJWMl8xNiAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9MYWJWMil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfWXh5XzE2ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfWXh5KXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKSkKKworLy8gWUNiQ3IKKyNkZWZpbmUgVFlQRV9ZQ2JDcl84ICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9ZQ2JDcil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMSkpCisjZGVmaW5lIFRZUEVfWUNiQ3JfOF9QTEFOQVIgICAgKENPTE9SU1BBQ0VfU0goUFRfWUNiQ3IpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9ZQ2JDcl8xNiAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9ZQ2JDcil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfWUNiQ3JfMTZfUExBTkFSICAgKENPTE9SU1BBQ0VfU0goUFRfWUNiQ3IpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9ZQ2JDcl8xNl9TRSAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9ZQ2JDcil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RU5ESUFOMTZfU0goMSkpCisKKy8vIFlVVgorI2RlZmluZSBUWVBFX1lVVl84ICAgICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX1lVVil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMSkpCisjZGVmaW5lIFRZUEVfWVVWXzhfUExBTkFSICAgICAgKENPTE9SU1BBQ0VfU0goUFRfWVVWKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxQTEFOQVJfU0goMSkpCisjZGVmaW5lIFRZUEVfWVVWXzE2ICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfWVVWKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKSkKKyNkZWZpbmUgVFlQRV9ZVVZfMTZfUExBTkFSICAgICAoQ09MT1JTUEFDRV9TSChQVF9ZVVYpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9ZVVZfMTZfU0UgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9ZVVYpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfEVORElBTjE2X1NIKDEpKQorCisvLyBITFMKKyNkZWZpbmUgVFlQRV9ITFNfOCAgICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9ITFMpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpKQorI2RlZmluZSBUWVBFX0hMU184X1BMQU5BUiAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0hMUyl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMSl8UExBTkFSX1NIKDEpKQorI2RlZmluZSBUWVBFX0hMU18xNiAgICAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0hMUyl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfSExTXzE2X1BMQU5BUiAgICAgKENPTE9SU1BBQ0VfU0goUFRfSExTKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxQTEFOQVJfU0goMSkpCisjZGVmaW5lIFRZUEVfSExTXzE2X1NFICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfSExTKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSkKKworLy8gSFNWCisjZGVmaW5lIFRZUEVfSFNWXzggICAgICAgICAgICAgKENPTE9SU1BBQ0VfU0goUFRfSFNWKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKSkKKyNkZWZpbmUgVFlQRV9IU1ZfOF9QTEFOQVIgICAgICAoQ09MT1JTUEFDRV9TSChQVF9IU1YpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfFBMQU5BUl9TSCgxKSkKKyNkZWZpbmUgVFlQRV9IU1ZfMTYgICAgICAgICAgICAoQ09MT1JTUEFDRV9TSChQVF9IU1YpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpKQorI2RlZmluZSBUWVBFX0hTVl8xNl9QTEFOQVIgICAgIChDT0xPUlNQQUNFX1NIKFBUX0hTVil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8UExBTkFSX1NIKDEpKQorI2RlZmluZSBUWVBFX0hTVl8xNl9TRSAgICAgICAgIChDT0xPUlNQQUNFX1NIKFBUX0hTVil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RU5ESUFOMTZfU0goMSkpCisKKy8vIE5hbWVkIGNvbG9yIGluZGV4LiBPbmx5IDE2IGJpdHMgYWxsb3dlZCAoZG9uJ3QgY2hlY2sgY29sb3JzcGFjZSkKKyNkZWZpbmUgVFlQRV9OQU1FRF9DT0xPUl9JTkRFWCAoQ0hBTk5FTFNfU0goMSl8QllURVNfU0goMikpCisKKy8vIEZsb2F0IGZvcm1hdHRlcnMuCisjZGVmaW5lIFRZUEVfWFlaX0ZMVCAgICAgICAgICAoRkxPQVRfU0goMSl8Q09MT1JTUEFDRV9TSChQVF9YWVopfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDQpKQorI2RlZmluZSBUWVBFX0xhYl9GTFQgICAgICAgICAgKEZMT0FUX1NIKDEpfENPTE9SU1BBQ0VfU0goUFRfTGFiKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCg0KSkKKyNkZWZpbmUgVFlQRV9MYWJBX0ZMVCAgICAgICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX0xhYil8RVhUUkFfU0goMSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goNCkpCisjZGVmaW5lIFRZUEVfR1JBWV9GTFQgICAgICAgICAoRkxPQVRfU0goMSl8Q09MT1JTUEFDRV9TSChQVF9HUkFZKXxDSEFOTkVMU19TSCgxKXxCWVRFU19TSCg0KSkKKyNkZWZpbmUgVFlQRV9SR0JfRkxUICAgICAgICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goNCkpCisKKyNkZWZpbmUgVFlQRV9SR0JBX0ZMVCAgICAgICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX1JHQil8RVhUUkFfU0goMSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goNCkpCisjZGVmaW5lIFRZUEVfQVJHQl9GTFQgICAgICAgICAoRkxPQVRfU0goMSl8Q09MT1JTUEFDRV9TSChQVF9SR0IpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDQpfFNXQVBGSVJTVF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9CR1JfRkxUICAgICAgICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goNCl8RE9TV0FQX1NIKDEpKQorI2RlZmluZSBUWVBFX0JHUkFfRkxUICAgICAgICAgKEZMT0FUX1NIKDEpfENPTE9SU1BBQ0VfU0goUFRfUkdCKXxFWFRSQV9TSCgxKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCg0KXxET1NXQVBfU0goMSl8U1dBUEZJUlNUX1NIKDEpKQorI2RlZmluZSBUWVBFX0FCR1JfRkxUICAgICAgICAgKEZMT0FUX1NIKDEpfENPTE9SU1BBQ0VfU0goUFRfUkdCKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCg0KXxET1NXQVBfU0goMSkpCisKKyNkZWZpbmUgVFlQRV9DTVlLX0ZMVCAgICAgICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX0NNWUspfENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDQpKQorCisvLyBGbG9hdGluZyBwb2ludCBmb3JtYXR0ZXJzLgorLy8gTk9URSBUSEFUICdCWVRFUycgRklFTEQgSVMgU0VUIFRPIFpFUk8gT04gRExCIGJlY2F1c2UgOCBieXRlcyBvdmVyZmxvd3MgdGhlIGJpdGZpZWxkCisjZGVmaW5lIFRZUEVfWFlaX0RCTCAgICAgICAgICAoRkxPQVRfU0goMSl8Q09MT1JTUEFDRV9TSChQVF9YWVopfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDApKQorI2RlZmluZSBUWVBFX0xhYl9EQkwgICAgICAgICAgKEZMT0FUX1NIKDEpfENPTE9SU1BBQ0VfU0goUFRfTGFiKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgwKSkKKyNkZWZpbmUgVFlQRV9HUkFZX0RCTCAgICAgICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX0dSQVkpfENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDApKQorI2RlZmluZSBUWVBFX1JHQl9EQkwgICAgICAgICAgKEZMT0FUX1NIKDEpfENPTE9SU1BBQ0VfU0goUFRfUkdCKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgwKSkKKyNkZWZpbmUgVFlQRV9CR1JfREJMICAgICAgICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMCl8RE9TV0FQX1NIKDEpKQorI2RlZmluZSBUWVBFX0NNWUtfREJMICAgICAgICAgKEZMT0FUX1NIKDEpfENPTE9SU1BBQ0VfU0goUFRfQ01ZSyl8Q0hBTk5FTFNfU0goNCl8QllURVNfU0goMCkpCisKKy8vIElFRUUgNzU0LTIwMDggImhhbGYiCisjZGVmaW5lIFRZUEVfR1JBWV9IQUxGX0ZMVCAgICAoRkxPQVRfU0goMSl8Q09MT1JTUEFDRV9TSChQVF9HUkFZKXxDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgyKSkKKyNkZWZpbmUgVFlQRV9SR0JfSEFMRl9GTFQgICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfUkdCQV9IQUxGX0ZMVCAgICAoRkxPQVRfU0goMSl8Q09MT1JTUEFDRV9TSChQVF9SR0IpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpKQorI2RlZmluZSBUWVBFX0NNWUtfSEFMRl9GTFQgICAgKEZMT0FUX1NIKDEpfENPTE9SU1BBQ0VfU0goUFRfQ01ZSyl8Q0hBTk5FTFNfU0goNCl8QllURVNfU0goMikpCisKKyNkZWZpbmUgVFlQRV9SR0JBX0hBTEZfRkxUICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX1JHQil8RVhUUkFfU0goMSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMikpCisjZGVmaW5lIFRZUEVfQVJHQl9IQUxGX0ZMVCAgICAoRkxPQVRfU0goMSl8Q09MT1JTUEFDRV9TSChQVF9SR0IpfEVYVFJBX1NIKDEpfENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfFNXQVBGSVJTVF9TSCgxKSkKKyNkZWZpbmUgVFlQRV9CR1JfSEFMRl9GTFQgICAgIChGTE9BVF9TSCgxKXxDT0xPUlNQQUNFX1NIKFBUX1JHQil8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RE9TV0FQX1NIKDEpKQorI2RlZmluZSBUWVBFX0JHUkFfSEFMRl9GTFQgICAgKEZMT0FUX1NIKDEpfENPTE9SU1BBQ0VfU0goUFRfUkdCKXxFWFRSQV9TSCgxKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSl8U1dBUEZJUlNUX1NIKDEpKQorI2RlZmluZSBUWVBFX0FCR1JfSEFMRl9GTFQgICAgKEZMT0FUX1NIKDEpfENPTE9SU1BBQ0VfU0goUFRfUkdCKXxDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSkpCisKKyNlbmRpZgorCisvLyBDb2xvcnNwYWNlcwordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIFg7CisgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgWTsKKyAgICAgICAgY21zRmxvYXQ2NE51bWJlciBaOworCisgICAgfSBjbXNDSUVYWVo7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICAgICAgY21zRmxvYXQ2NE51bWJlciB4OworICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIHk7CisgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgWTsKKworICAgIH0gY21zQ0lFeHlZOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgTDsKKyAgICAgICAgY21zRmxvYXQ2NE51bWJlciBhOworICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIGI7CisKKyAgICB9IGNtc0NJRUxhYjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEw7CisgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgQzsKKyAgICAgICAgY21zRmxvYXQ2NE51bWJlciBoOworCisgICAgfSBjbXNDSUVMQ2g7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICAgICAgY21zRmxvYXQ2NE51bWJlciBKOworICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEM7CisgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgaDsKKworICAgIH0gY21zSkNoOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIGNtc0NJRVhZWiAgUmVkOworICAgICAgICBjbXNDSUVYWVogIEdyZWVuOworICAgICAgICBjbXNDSUVYWVogIEJsdWU7CisKKyAgICB9IGNtc0NJRVhZWlRSSVBMRTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBjbXNDSUV4eVkgIFJlZDsKKyAgICAgICAgY21zQ0lFeHlZICBHcmVlbjsKKyAgICAgICAgY21zQ0lFeHlZICBCbHVlOworCisgICAgfSBjbXNDSUV4eVlUUklQTEU7CisKKy8vIElsbHVtaW5hbnQgdHlwZXMgZm9yIHN0cnVjdHMgYmVsb3cKKyNkZWZpbmUgY21zSUxMVU1JTkFOVF9UWVBFX1VOS05PV04gMHgwMDAwMDAwCisjZGVmaW5lIGNtc0lMTFVNSU5BTlRfVFlQRV9ENTAgICAgIDB4MDAwMDAwMQorI2RlZmluZSBjbXNJTExVTUlOQU5UX1RZUEVfRDY1ICAgICAweDAwMDAwMDIKKyNkZWZpbmUgY21zSUxMVU1JTkFOVF9UWVBFX0Q5MyAgICAgMHgwMDAwMDAzCisjZGVmaW5lIGNtc0lMTFVNSU5BTlRfVFlQRV9GMiAgICAgIDB4MDAwMDAwNAorI2RlZmluZSBjbXNJTExVTUlOQU5UX1RZUEVfRDU1ICAgICAweDAwMDAwMDUKKyNkZWZpbmUgY21zSUxMVU1JTkFOVF9UWVBFX0EgICAgICAgMHgwMDAwMDA2CisjZGVmaW5lIGNtc0lMTFVNSU5BTlRfVFlQRV9FICAgICAgIDB4MDAwMDAwNworI2RlZmluZSBjbXNJTExVTUlOQU5UX1RZUEVfRjggICAgICAweDAwMDAwMDgKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBjbXNVSW50MzJOdW1iZXIgIE9ic2VydmVyOyAgICAvLyAwID0gdW5rbm93biwgMT1DSUUgMTkzMSwgMj1DSUUgMTk2NAorICAgICAgICBjbXNDSUVYWVogICAgICAgIEJhY2tpbmc7ICAgICAvLyBWYWx1ZSBvZiBiYWNraW5nCisgICAgICAgIGNtc1VJbnQzMk51bWJlciAgR2VvbWV0cnk7ICAgIC8vIDA9dW5rbm93biwgMT00NS8wLCAwLzQ1IDI9MGQsIGQvMAorICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEZsYXJlOyAgICAgICAvLyAwLi4xLjAKKyAgICAgICAgY21zVUludDMyTnVtYmVyICBJbGx1bWluYW50VHlwZTsKKworICAgIH0gY21zSUNDTWVhc3VyZW1lbnRDb25kaXRpb25zOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIGNtc0NJRVhZWiAgICAgICBJbGx1bWluYW50WFlaOyAgIC8vIE5vdCB0aGUgc2FtZSBzdHJ1Y3QgYXMgQ0FNMDIsCisgICAgICAgIGNtc0NJRVhZWiAgICAgICBTdXJyb3VuZFhZWjsgICAgIC8vIFRoaXMgaXMgZm9yIHN0b3JpbmcgdGhlIHRhZworICAgICAgICBjbXNVSW50MzJOdW1iZXIgSWxsdW1pbmFudFR5cGU7ICAvLyB2aWV3aW5nIGNvbmRpdGlvbgorCisgICAgfSBjbXNJQ0NWaWV3aW5nQ29uZGl0aW9uczsKKworLy8gU3VwcG9ydCBvZiBub24tc3RhbmRhcmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NNU0FQSSBpbnQgICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zc3RyY2FzZWNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpOworQ01TQVBJIGxvbmcgaW50ICAgICAgICAgIENNU0VYUE9SVCBjbXNmaWxlbGVuZ3RoKEZJTEUqIGYpOworCisKKy8vIENvbnRleHQgaGFuZGxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gRWFjaCBjb250ZXh0IGhvbGRzIGl0cyBvd25zIGdsb2JhbHMgYW5kIGl0cyBvd24gcGx1Zy1pbnMuIFRoZXJlIGlzIGEgZ2xvYmFsIGNvbnRleHQgd2l0aCB0aGUgaWQgPSAwIGZvciBsZWNhY3kgY29tcGF0aWJpbGl0eQorLy8gdGhvdWdoIHVzaW5nIHRoZSBnbG9iYWwgY29udGV4dCBpcyBub3QgcmVjb21lbmRlZC4gUHJvcGVyIGNvbnRleHQgaGFuZGxpbmcgbWFrZXMgbGNtcyBtb3JlIHRocmVhZC1zYWZlLgorCit0eXBlZGVmIHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGNtc0NvbnRleHQ7CisKK0NNU0FQSSBjbXNDb250ZXh0ICAgICAgIENNU0VYUE9SVCBjbXNDcmVhdGVDb250ZXh0KHZvaWQqIFBsdWdpbiwgdm9pZCogVXNlckRhdGEpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0RlbGV0ZUNvbnRleHQoY21zQ29udGV4dCBDb250ZXhJRCk7CitDTVNBUEkgY21zQ29udGV4dCAgICAgICBDTVNFWFBPUlQgY21zRHVwQ29udGV4dChjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCogTmV3VXNlckRhdGEpOworQ01TQVBJIHZvaWQqICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0dldENvbnRleHRVc2VyRGF0YShjbXNDb250ZXh0IENvbnRleHRJRCk7CisKKy8vIFBsdWctSW4gcmVnaXN0ZXJpbmcgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zUGx1Z2luKHZvaWQqIFBsdWdpbik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc1BsdWdpblRIUihjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCogUGx1Z2luKTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zVW5yZWdpc3RlclBsdWdpbnModm9pZCk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1VucmVnaXN0ZXJQbHVnaW5zVEhSKGNtc0NvbnRleHQgQ29udGV4dElEKTsKKworLy8gRXJyb3IgbG9nZ2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFRoZXJlIGlzIG5vIGVycm9yIGhhbmRsaW5nIGF0IGFsbC4gV2hlbiBhIGZ1bmN0aW9uIGZhaWxzLCBpdCByZXR1cm5zIHByb3BlciB2YWx1ZS4KKy8vIEZvciBleGFtcGxlLCBhbGwgY3JlYXRlIGZ1bmN0aW9ucyBkb2VzIHJldHVybiBOVUxMIG9uIGZhaWx1cmUuIE90aGVyIG1heSByZXR1cm4gRkFMU0UuCisvLyBJdCBtYXkgYmUgaW50ZXJlc3RpbmcsIGZvciB0aGUgZGV2ZWxvcGVyLCB0byBrbm93IHdoeSB0aGUgZnVuY3Rpb24gaXMgZmFpbGluZy4KKy8vIGZvciB0aGF0IHJlYXNvbiwgbGNtczIgZG9lcyBvZmZlciBhIGxvZ2dpbmcgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gd2lsbCBnZXQKKy8vIGFuIEVOR0xJU0ggc3RyaW5nIHdpdGggc29tZSBjbHVlcyBvbiB3aGF0IGlzIGdvaW5nIHdyb25nLiBZb3UgY2FuIHNob3cgdGhpcworLy8gaW5mbyB0byB0aGUgZW5kIHVzZXIgaWYgeW91IHdpc2gsIG9yIGp1c3QgY3JlYXRlIHNvbWUgc29ydCBvZiBsb2cgb24gZGlzay4KKy8vIFRoZSBsb2dnaW5nIGZ1bmN0aW9uIHNob3VsZCBOT1QgdGVybWluYXRlIHRoZSBwcm9ncmFtLCBhcyB0aGlzIG9idmlvdXNseSBjYW4gbGVhdmUKKy8vIHVuZnJlZWQgcmVzb3VyY2VzLiBJdCBpcyB0aGUgcHJvZ3JhbW1lcidzIHJlc3BvbnNpYmlsaXR5IHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24KKy8vIHJldHVybiBjb2RlIHRvIG1ha2Ugc3VyZSBpdCBkaWRuJ3QgZmFpbC4KKworI2RlZmluZSBjbXNFUlJPUl9VTkRFRklORUQgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgY21zRVJST1JfRklMRSAgICAgICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIGNtc0VSUk9SX1JBTkdFICAgICAgICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBjbXNFUlJPUl9JTlRFUk5BTCAgICAgICAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgY21zRVJST1JfTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICA0CisjZGVmaW5lIGNtc0VSUk9SX1JFQUQgICAgICAgICAgICAgICAgICAgICAgICAgNQorI2RlZmluZSBjbXNFUlJPUl9TRUVLICAgICAgICAgICAgICAgICAgICAgICAgIDYKKyNkZWZpbmUgY21zRVJST1JfV1JJVEUgICAgICAgICAgICAgICAgICAgICAgICA3CisjZGVmaW5lIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OICAgICAgICAgICAgOAorI2RlZmluZSBjbXNFUlJPUl9DT0xPUlNQQUNFX0NIRUNLICAgICAgICAgICAgIDkKKyNkZWZpbmUgY21zRVJST1JfQUxSRUFEWV9ERUZJTkVEICAgICAgICAgICAgICAxMAorI2RlZmluZSBjbXNFUlJPUl9CQURfU0lHTkFUVVJFICAgICAgICAgICAgICAgIDExCisjZGVmaW5lIGNtc0VSUk9SX0NPUlJVUFRJT05fREVURUNURUQgICAgICAgICAgMTIKKyNkZWZpbmUgY21zRVJST1JfTk9UX1NVSVRBQkxFICAgICAgICAgICAgICAgICAxMworCisvLyBFcnJvciBsb2dnZXIgaXMgY2FsbGVkIHdpdGggdGhlIENvbnRleHRJRCB3aGVuIGEgbWVzc2FnZSBpcyByYWlzZWQuIFRoaXMgZ2l2ZXMgdGhlCisvLyBjaGFuY2UgdG8ga25vdyB3aGljaCB0aHJlYWQgaXMgcmVzcG9uc2libGUgb2YgdGhlIHdhcm5pbmcgYW5kIGFueSBlbnZpcm9ubWVudCBhc3NvY2lhdGVkCisvLyB3aXRoIGl0LiBOb24tbXVsdGl0aHJlYWRpbmcgYXBwbGljYXRpb25zIG1heSBzYWZlbHkgaWdub3JlIHRoaXMgcGFyYW1ldGVyLgorLy8gTm90ZSB0aGF0IHVuZGVyIGNlcnRhaW4gc3BlY2lhbCBjaXJjdW1zdGFuY2VzLCBDb250ZXh0SUQgbWF5IGJlIE5VTEwuCit0eXBlZGVmIHZvaWQgICgqIGNtc0xvZ0Vycm9ySGFuZGxlckZ1bmN0aW9uKShjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIEVycm9yQ29kZSwgY29uc3QgY2hhciAqVGV4dCk7CisKKy8vIEFsbG93cyB1c2VyIHRvIHNldCBhbnkgc3BlY2lmaWMgbG9nZ2VyCitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NldExvZ0Vycm9ySGFuZGxlcihjbXNMb2dFcnJvckhhbmRsZXJGdW5jdGlvbiBGbik7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NldExvZ0Vycm9ySGFuZGxlclRIUihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zTG9nRXJyb3JIYW5kbGVyRnVuY3Rpb24gRm4pOworCisvLyBDb252ZXJzaW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBSZXR1cm5zIHBvaW50ZXJzIHRvIGNvbnN0YW50IHN0cnVjdHMKK0NNU0FQSSBjb25zdCBjbXNDSUVYWVoqICBDTVNFWFBPUlQgY21zRDUwX1hZWih2b2lkKTsKK0NNU0FQSSBjb25zdCBjbXNDSUV4eVkqICBDTVNFWFBPUlQgY21zRDUwX3h5WSh2b2lkKTsKKworLy8gQ29sb3JpbWV0cmljIHNwYWNlIGNvbnZlcnNpb25zCitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1hZWjJ4eVkoY21zQ0lFeHlZKiBEZXN0LCBjb25zdCBjbXNDSUVYWVoqIFNvdXJjZSk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc3h5WTJYWVooY21zQ0lFWFlaKiBEZXN0LCBjb25zdCBjbXNDSUV4eVkqIFNvdXJjZSk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1hZWjJMYWIoY29uc3QgY21zQ0lFWFlaKiBXaGl0ZVBvaW50LCBjbXNDSUVMYWIqIExhYiwgY29uc3QgY21zQ0lFWFlaKiB4eXopOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNMYWIyWFlaKGNvbnN0IGNtc0NJRVhZWiogV2hpdGVQb2ludCwgY21zQ0lFWFlaKiB4eXosIGNvbnN0IGNtc0NJRUxhYiogTGFiKTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zTGFiMkxDaChjbXNDSUVMQ2gqTENoLCBjb25zdCBjbXNDSUVMYWIqIExhYik7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0xDaDJMYWIoY21zQ0lFTGFiKiBMYWIsIGNvbnN0IGNtc0NJRUxDaCogTENoKTsKKworLy8gRW5jb2RpbmcgL0RlY29kaW5nIG9uIFBDUworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNMYWJFbmNvZGVkMkZsb2F0KGNtc0NJRUxhYiogTGFiLCBjb25zdCBjbXNVSW50MTZOdW1iZXIgd0xhYlszXSk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0xhYkVuY29kZWQyRmxvYXRWMihjbXNDSUVMYWIqIExhYiwgY29uc3QgY21zVUludDE2TnVtYmVyIHdMYWJbM10pOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNGbG9hdDJMYWJFbmNvZGVkKGNtc1VJbnQxNk51bWJlciB3TGFiWzNdLCBjb25zdCBjbXNDSUVMYWIqIExhYik7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0Zsb2F0MkxhYkVuY29kZWRWMihjbXNVSW50MTZOdW1iZXIgd0xhYlszXSwgY29uc3QgY21zQ0lFTGFiKiBMYWIpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNYWVpFbmNvZGVkMkZsb2F0KGNtc0NJRVhZWiogZnh5eiwgY29uc3QgY21zVUludDE2TnVtYmVyIFhZWlszXSk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0Zsb2F0MlhZWkVuY29kZWQoY21zVUludDE2TnVtYmVyIFhZWlszXSwgY29uc3QgY21zQ0lFWFlaKiBmWFlaKTsKKworLy8gRGVsdGFFIG1ldHJpY3MKK0NNU0FQSSBjbXNGbG9hdDY0TnVtYmVyICBDTVNFWFBPUlQgY21zRGVsdGFFKGNvbnN0IGNtc0NJRUxhYiogTGFiMSwgY29uc3QgY21zQ0lFTGFiKiBMYWIyKTsKK0NNU0FQSSBjbXNGbG9hdDY0TnVtYmVyICBDTVNFWFBPUlQgY21zQ0lFOTREZWx0YUUoY29uc3QgY21zQ0lFTGFiKiBMYWIxLCBjb25zdCBjbXNDSUVMYWIqIExhYjIpOworQ01TQVBJIGNtc0Zsb2F0NjROdW1iZXIgIENNU0VYUE9SVCBjbXNCRkRkZWx0YUUoY29uc3QgY21zQ0lFTGFiKiBMYWIxLCBjb25zdCBjbXNDSUVMYWIqIExhYjIpOworQ01TQVBJIGNtc0Zsb2F0NjROdW1iZXIgIENNU0VYUE9SVCBjbXNDTUNkZWx0YUUoY29uc3QgY21zQ0lFTGFiKiBMYWIxLCBjb25zdCBjbXNDSUVMYWIqIExhYjIsIGNtc0Zsb2F0NjROdW1iZXIgbCwgY21zRmxvYXQ2NE51bWJlciBjKTsKK0NNU0FQSSBjbXNGbG9hdDY0TnVtYmVyICBDTVNFWFBPUlQgY21zQ0lFMjAwMERlbHRhRShjb25zdCBjbXNDSUVMYWIqIExhYjEsIGNvbnN0IGNtc0NJRUxhYiogTGFiMiwgY21zRmxvYXQ2NE51bWJlciBLbCwgY21zRmxvYXQ2NE51bWJlciBLYywgY21zRmxvYXQ2NE51bWJlciBLaCk7CisKKy8vIFRlbXBlcmF0dXJlIDwtPiBDaHJvbWF0aWNpdHkgKEJsYWNrIGJvZHkpCitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc1doaXRlUG9pbnRGcm9tVGVtcChjbXNDSUV4eVkqIFdoaXRlUG9pbnQsIGNtc0Zsb2F0NjROdW1iZXIgIFRlbXBLKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zVGVtcEZyb21XaGl0ZVBvaW50KGNtc0Zsb2F0NjROdW1iZXIqIFRlbXBLLCBjb25zdCBjbXNDSUV4eVkqIFdoaXRlUG9pbnQpOworCisvLyBDaHJvbWF0aWMgYWRhcHRhdGlvbgorQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCBjbXNBZGFwdFRvSWxsdW1pbmFudChjbXNDSUVYWVoqIFJlc3VsdCwgY29uc3QgY21zQ0lFWFlaKiBTb3VyY2VXaGl0ZVB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zQ0lFWFlaKiBJbGx1bWluYW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zQ0lFWFlaKiBWYWx1ZSk7CisKKy8vIENJRUNBTTAyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBWaWV3aW5nIGNvbmRpdGlvbnMuIFBsZWFzZSBub3RlIHRob3NlIGFyZSBDQU0gbW9kZWwgdmlld2luZyBjb25kaXRpb25zLCBhbmQgbm90IHRoZSBJQ0MgdGFnIHZpZXdpbmcKKy8vIGNvbmRpdGlvbnMsIHdoaWNoIEknbSBuYW1pbmcgY21zSUNDVmlld2luZ0NvbmRpdGlvbnMgdG8gbWFrZSBkaWZmZXJlbmNlcyBldmlkZW50LiBVbmZvcnR1bmF0ZWx5LCB0aGUgdGFnCisvLyBjYW5ub3QgZGVhbCB3aXRoIHN1cnJvdW5kIExhLCBZYiBhbmQgRCB2YWx1ZSBzbyBpcyBiYXNpY2FsbHkgdXNlbGVzcyB0byBzdG9yZSBDQU0wMiB2aWV3aW5nIGNvbmRpdGlvbnMuCisKKworI2RlZmluZSBBVkdfU1VSUk9VTkQgICAgICAgMQorI2RlZmluZSBESU1fU1VSUk9VTkQgICAgICAgMgorI2RlZmluZSBEQVJLX1NVUlJPVU5EICAgICAgMworI2RlZmluZSBDVVRTSEVFVF9TVVJST1VORCAgNAorCisjZGVmaW5lIERfQ0FMQ1VMQVRFICAgICAgICAoLTEpCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjbXNDSUVYWVogICAgICAgIHdoaXRlUG9pbnQ7CisgICAgY21zRmxvYXQ2NE51bWJlciBZYjsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIExhOworICAgIGludCAgICAgICAgICAgICAgc3Vycm91bmQ7CisgICAgY21zRmxvYXQ2NE51bWJlciBEX3ZhbHVlOworCisgICAgfSBjbXNWaWV3aW5nQ29uZGl0aW9uczsKKworQ01TQVBJIGNtc0hBTkRMRSAgICAgICAgIENNU0VYUE9SVCBjbXNDSUVDQU0wMkluaXQoY21zQ29udGV4dCBDb250ZXh0SUQsIGNvbnN0IGNtc1ZpZXdpbmdDb25kaXRpb25zKiBwVkMpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNDSUVDQU0wMkRvbmUoY21zSEFORExFIGhNb2RlbCk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0NJRUNBTTAyRm9yd2FyZChjbXNIQU5ETEUgaE1vZGVsLCBjb25zdCBjbXNDSUVYWVoqIHBJbiwgY21zSkNoKiBwT3V0KTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zQ0lFQ0FNMDJSZXZlcnNlKGNtc0hBTkRMRSBoTW9kZWwsIGNvbnN0IGNtc0pDaCogcEluLCAgICBjbXNDSUVYWVoqIHBPdXQpOworCisKKy8vIFRvbmUgY3VydmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFRoaXMgZGVzY3JpYmVzIGEgY3VydmUgc2VnbWVudC4gRm9yIGEgdGFibGUgb2Ygc3VwcG9ydGVkIHR5cGVzLCBzZWUgdGhlIG1hbnVhbC4gVXNlciBjYW4gaW5jcmVhc2UgdGhlIG51bWJlciBvZgorLy8gYXZhaWxhYmxlIHR5cGVzIGJ5IHVzaW5nIGEgcHJvcGVyIHBsdWctaW4uIFBhcmFtZXRyaWMgc2VnbWVudHMgYWxsb3cgMTAgcGFyYW1ldGVycyBhdCBtb3N0CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjbXNGbG9hdDMyTnVtYmVyICAgeDAsIHgxOyAgICAgICAgICAgLy8gRG9tYWluOyBmb3IgeDAgPCB4IDw9IHgxCisgICAgY21zSW50MzJOdW1iZXIgICAgIFR5cGU7ICAgICAgICAgICAgIC8vIFBhcmFtZXRyaWMgdHlwZSwgVHlwZSA9PSAwIG1lYW5zIHNhbXBsZWQgc2VnbWVudC4gTmVnYXRpdmUgdmFsdWVzIGFyZSByZXNlcnZlZAorICAgIGNtc0Zsb2F0NjROdW1iZXIgICBQYXJhbXNbMTBdOyAgICAgICAvLyBQYXJhbWV0ZXJzIGlmIFR5cGUgIT0gMAorICAgIGNtc1VJbnQzMk51bWJlciAgICBuR3JpZFBvaW50czsgICAgICAvLyBOdW1iZXIgb2YgZ3JpZCBwb2ludHMgaWYgVHlwZSA9PSAwCisgICAgY21zRmxvYXQzMk51bWJlciogIFNhbXBsZWRQb2ludHM7ICAgIC8vIFBvaW50cyB0byBhbiBhcnJheSBvZiBmbG9hdHMgaWYgVHlwZSA9PSAwCisKK30gY21zQ3VydmVTZWdtZW50OworCisvLyBUaGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gaXMgbm9uZSBvZiB5b3VyIGJ1c2luZXNzLgordHlwZWRlZiBzdHJ1Y3QgX2Ntc19jdXJ2ZV9zdHJ1Y3QgY21zVG9uZUN1cnZlOworCitDTVNBUEkgY21zVG9uZUN1cnZlKiAgICAgQ01TRVhQT1JUIGNtc0J1aWxkU2VnbWVudGVkVG9uZUN1cnZlKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNJbnQzMk51bWJlciBuU2VnbWVudHMsIGNvbnN0IGNtc0N1cnZlU2VnbWVudCBTZWdtZW50c1tdKTsKK0NNU0FQSSBjbXNUb25lQ3VydmUqICAgICBDTVNFWFBPUlQgY21zQnVpbGRQYXJhbWV0cmljVG9uZUN1cnZlKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNJbnQzMk51bWJlciBUeXBlLCBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIFBhcmFtc1tdKTsKK0NNU0FQSSBjbXNUb25lQ3VydmUqICAgICBDTVNFWFBPUlQgY21zQnVpbGRHYW1tYShjbXNDb250ZXh0IENvbnRleHRJRCwgY21zRmxvYXQ2NE51bWJlciBHYW1tYSk7CitDTVNBUEkgY21zVG9uZUN1cnZlKiAgICAgQ01TRVhQT1JUIGNtc0J1aWxkVGFidWxhdGVkVG9uZUN1cnZlMTYoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0ludDMyTnVtYmVyIG5FbnRyaWVzLCBjb25zdCBjbXNVSW50MTZOdW1iZXIgdmFsdWVzW10pOworQ01TQVBJIGNtc1RvbmVDdXJ2ZSogICAgIENNU0VYUE9SVCBjbXNCdWlsZFRhYnVsYXRlZFRvbmVDdXJ2ZUZsb2F0KGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgbkVudHJpZXMsIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgdmFsdWVzW10pOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNGcmVlVG9uZUN1cnZlKGNtc1RvbmVDdXJ2ZSogQ3VydmUpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNGcmVlVG9uZUN1cnZlVHJpcGxlKGNtc1RvbmVDdXJ2ZSogQ3VydmVbM10pOworQ01TQVBJIGNtc1RvbmVDdXJ2ZSogICAgIENNU0VYUE9SVCBjbXNEdXBUb25lQ3VydmUoY29uc3QgY21zVG9uZUN1cnZlKiBTcmMpOworQ01TQVBJIGNtc1RvbmVDdXJ2ZSogICAgIENNU0VYUE9SVCBjbXNSZXZlcnNlVG9uZUN1cnZlKGNvbnN0IGNtc1RvbmVDdXJ2ZSogSW5HYW1tYSk7CitDTVNBUEkgY21zVG9uZUN1cnZlKiAgICAgQ01TRVhQT1JUIGNtc1JldmVyc2VUb25lQ3VydmVFeChjbXNJbnQzMk51bWJlciBuUmVzdWx0U2FtcGxlcywgY29uc3QgY21zVG9uZUN1cnZlKiBJbkdhbW1hKTsKK0NNU0FQSSBjbXNUb25lQ3VydmUqICAgICBDTVNFWFBPUlQgY21zSm9pblRvbmVDdXJ2ZShjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3QgY21zVG9uZUN1cnZlKiBYLCAgY29uc3QgY21zVG9uZUN1cnZlKiBZLCBjbXNVSW50MzJOdW1iZXIgblBvaW50cyk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc1Ntb290aFRvbmVDdXJ2ZShjbXNUb25lQ3VydmUqIFRhYiwgY21zRmxvYXQ2NE51bWJlciBsYW1iZGEpOworQ01TQVBJIGNtc0Zsb2F0MzJOdW1iZXIgIENNU0VYUE9SVCBjbXNFdmFsVG9uZUN1cnZlRmxvYXQoY29uc3QgY21zVG9uZUN1cnZlKiBDdXJ2ZSwgY21zRmxvYXQzMk51bWJlciB2KTsKK0NNU0FQSSBjbXNVSW50MTZOdW1iZXIgICBDTVNFWFBPUlQgY21zRXZhbFRvbmVDdXJ2ZTE2KGNvbnN0IGNtc1RvbmVDdXJ2ZSogQ3VydmUsIGNtc1VJbnQxNk51bWJlciB2KTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zSXNUb25lQ3VydmVNdWx0aXNlZ21lbnQoY29uc3QgY21zVG9uZUN1cnZlKiBJbkdhbW1hKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zSXNUb25lQ3VydmVMaW5lYXIoY29uc3QgY21zVG9uZUN1cnZlKiBDdXJ2ZSk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc0lzVG9uZUN1cnZlTW9ub3RvbmljKGNvbnN0IGNtc1RvbmVDdXJ2ZSogdCk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc0lzVG9uZUN1cnZlRGVzY2VuZGluZyhjb25zdCBjbXNUb25lQ3VydmUqIHQpOworQ01TQVBJIGNtc0ludDMyTnVtYmVyICAgIENNU0VYUE9SVCBjbXNHZXRUb25lQ3VydmVQYXJhbWV0cmljVHlwZShjb25zdCBjbXNUb25lQ3VydmUqIHQpOworQ01TQVBJIGNtc0Zsb2F0NjROdW1iZXIgIENNU0VYUE9SVCBjbXNFc3RpbWF0ZUdhbW1hKGNvbnN0IGNtc1RvbmVDdXJ2ZSogdCwgY21zRmxvYXQ2NE51bWJlciBQcmVjaXNpb24pOworCisvLyBUb25lIGN1cnZlIHRhYnVsYXIgZXN0aW1hdGlvbgorQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgICAgICAgIENNU0VYUE9SVCBjbXNHZXRUb25lQ3VydmVFc3RpbWF0ZWRUYWJsZUVudHJpZXMoY29uc3QgY21zVG9uZUN1cnZlKiB0KTsKK0NNU0FQSSBjb25zdCBjbXNVSW50MTZOdW1iZXIqICBDTVNFWFBPUlQgY21zR2V0VG9uZUN1cnZlRXN0aW1hdGVkVGFibGUoY29uc3QgY21zVG9uZUN1cnZlKiB0KTsKKworCisvLyBJbXBsZW1lbnRzIHBpcGVsaW5lcyBvZiBtdWx0aS1wcm9jZXNzaW5nIGVsZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gTm90aGluZyB0byBzZWUgaGVyZSwgbW92ZSBhbG9uZwordHlwZWRlZiBzdHJ1Y3QgX2Ntc1BpcGVsaW5lX3N0cnVjdCBjbXNQaXBlbGluZTsKK3R5cGVkZWYgc3RydWN0IF9jbXNTdGFnZV9zdHJ1Y3QgY21zU3RhZ2U7CisKKy8vIFRob3NlIGFyZSBoaS1sZXZlbCBwaXBlbGluZXMKK0NNU0FQSSBjbXNQaXBlbGluZSogICAgICBDTVNFWFBPUlQgY21zUGlwZWxpbmVBbGxvYyhjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIElucHV0Q2hhbm5lbHMsIGNtc1VJbnQzMk51bWJlciBPdXRwdXRDaGFubmVscyk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1BpcGVsaW5lRnJlZShjbXNQaXBlbGluZSogbHV0KTsKK0NNU0FQSSBjbXNQaXBlbGluZSogICAgICBDTVNFWFBPUlQgY21zUGlwZWxpbmVEdXAoY29uc3QgY21zUGlwZWxpbmUqIE9yaWcpOworCitDTVNBUEkgY21zQ29udGV4dCAgICAgICAgQ01TRVhQT1JUIGNtc0dldFBpcGVsaW5lQ29udGV4dElEKGNvbnN0IGNtc1BpcGVsaW5lKiBsdXQpOworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgIENNU0VYUE9SVCBjbXNQaXBlbGluZUlucHV0Q2hhbm5lbHMoY29uc3QgY21zUGlwZWxpbmUqIGx1dCk7CitDTVNBUEkgY21zVUludDMyTnVtYmVyICAgQ01TRVhQT1JUIGNtc1BpcGVsaW5lT3V0cHV0Q2hhbm5lbHMoY29uc3QgY21zUGlwZWxpbmUqIGx1dCk7CisKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgICBDTVNFWFBPUlQgY21zUGlwZWxpbmVTdGFnZUNvdW50KGNvbnN0IGNtc1BpcGVsaW5lKiBsdXQpOworQ01TQVBJIGNtc1N0YWdlKiAgICAgICAgIENNU0VYUE9SVCBjbXNQaXBlbGluZUdldFB0clRvRmlyc3RTdGFnZShjb25zdCBjbXNQaXBlbGluZSogbHV0KTsKK0NNU0FQSSBjbXNTdGFnZSogICAgICAgICBDTVNFWFBPUlQgY21zUGlwZWxpbmVHZXRQdHJUb0xhc3RTdGFnZShjb25zdCBjbXNQaXBlbGluZSogbHV0KTsKKworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNQaXBlbGluZUV2YWwxNihjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5bXSwgY21zVUludDE2TnVtYmVyIE91dFtdLCBjb25zdCBjbXNQaXBlbGluZSogbHV0KTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zUGlwZWxpbmVFdmFsRmxvYXQoY29uc3QgY21zRmxvYXQzMk51bWJlciBJbltdLCBjbXNGbG9hdDMyTnVtYmVyIE91dFtdLCBjb25zdCBjbXNQaXBlbGluZSogbHV0KTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zUGlwZWxpbmVFdmFsUmV2ZXJzZUZsb2F0KGNtc0Zsb2F0MzJOdW1iZXIgVGFyZ2V0W10sIGNtc0Zsb2F0MzJOdW1iZXIgUmVzdWx0W10sIGNtc0Zsb2F0MzJOdW1iZXIgSGludFtdLCBjb25zdCBjbXNQaXBlbGluZSogbHV0KTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zUGlwZWxpbmVDYXQoY21zUGlwZWxpbmUqIGwxLCBjb25zdCBjbXNQaXBlbGluZSogbDIpOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCBjbXNQaXBlbGluZVNldFNhdmVBczhiaXRzRmxhZyhjbXNQaXBlbGluZSogbHV0LCBjbXNCb29sIE9uKTsKKworLy8gV2hlcmUgdG8gcGxhY2UvbG9jYXRlIHRoZSBzdGFnZXMgaW4gdGhlIHBpcGVsaW5lIGNoYWluCit0eXBlZGVmIGVudW0geyBjbXNBVF9CRUdJTiwgY21zQVRfRU5EIH0gY21zU3RhZ2VMb2M7CisKK0NNU0FQSSBpbnQgICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zUGlwZWxpbmVJbnNlcnRTdGFnZShjbXNQaXBlbGluZSogbHV0LCBjbXNTdGFnZUxvYyBsb2MsIGNtc1N0YWdlKiBtcGUpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNQaXBlbGluZVVubGlua1N0YWdlKGNtc1BpcGVsaW5lKiBsdXQsIGNtc1N0YWdlTG9jIGxvYywgY21zU3RhZ2UqKiBtcGUpOworCisvLyBUaGlzIGZ1bmN0aW9uIGlzIHF1aXRlIHVzZWZ1bCB0byBhbmFseXplIHRoZSBzdHJ1Y3R1cmUgb2YgYSBQaXBlbGluZSBhbmQgcmV0cmlldmUgdGhlIFN0YWdlIGVsZW1lbnRzCisvLyB0aGF0IGNvbmZvcm0gdGhlIFBpcGVsaW5lLiBJdCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIFBpcGVsaW5lLCB0aGUgbnVtYmVyIG9mIGV4cGVjdGVkIGVsZW1lbnRzIGFuZAorLy8gdGhlbiBhIGxpc3Qgb2YgZXhwZWN0ZWQgdHlwZXMgZm9sbG93ZWQgd2l0aCBhIGxpc3Qgb2YgZG91YmxlIHBvaW50ZXJzIHRvIFN0YWdlIGVsZW1lbnRzLiBJZgorLy8gdGhlIGZ1bmN0aW9uIGZvdW5kcyBhIG1hdGNoIHdpdGggY3VycmVudCBwaXBlbGluZSwgaXQgZmlsbHMgdGhlIHBvaW50ZXJzIGFuZCByZXR1cm5zIFRSVUUKKy8vIGlmIG5vdCwgcmV0dXJucyBGQUxTRSB3aXRob3V0IHRvdWNoaW5nIGFueXRoaW5nLgorQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCBjbXNQaXBlbGluZUNoZWNrQW5kUmV0cmVpdmVTdGFnZXMoY29uc3QgY21zUGlwZWxpbmUqIEx1dCwgY21zVUludDMyTnVtYmVyIG4sIC4uLik7CisKKy8vIE1hdHJpeCBoYXMgZG91YmxlIHByZWNpc2lvbiBhbmQgQ0xVVCBoYXMgb25seSBmbG9hdCBwcmVjaXNpb24uIFRoYXQgaXMgYmVjYXVzZSBhbiBJQ0MgcHJvZmlsZSBjYW4gZW5jb2RlCisvLyBtYXRyaWNlcyB3aXRoIGZhciBtb3JlIHByZWNpc2lvbiB0aGF0IENMVVRTCitDTVNBUEkgY21zU3RhZ2UqICAgICAgICAgQ01TRVhQT1JUIGNtc1N0YWdlQWxsb2NJZGVudGl0eShjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIG5DaGFubmVscyk7CitDTVNBUEkgY21zU3RhZ2UqICAgICAgICAgQ01TRVhQT1JUIGNtc1N0YWdlQWxsb2NUb25lQ3VydmVzKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgbkNoYW5uZWxzLCBjbXNUb25lQ3VydmUqIGNvbnN0IEN1cnZlc1tdKTsKK0NNU0FQSSBjbXNTdGFnZSogICAgICAgICBDTVNFWFBPUlQgY21zU3RhZ2VBbGxvY01hdHJpeChjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIFJvd3MsIGNtc1VJbnQzMk51bWJlciBDb2xzLCBjb25zdCBjbXNGbG9hdDY0TnVtYmVyKiBNYXRyaXgsIGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIqIE9mZnNldCk7CisKK0NNU0FQSSBjbXNTdGFnZSogICAgICAgICBDTVNFWFBPUlQgY21zU3RhZ2VBbGxvY0NMdXQxNmJpdChjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIG5HcmlkUG9pbnRzLCBjbXNVSW50MzJOdW1iZXIgaW5wdXRDaGFuLCBjbXNVSW50MzJOdW1iZXIgb3V0cHV0Q2hhbiwgY29uc3QgY21zVUludDE2TnVtYmVyKiBUYWJsZSk7CitDTVNBUEkgY21zU3RhZ2UqICAgICAgICAgQ01TRVhQT1JUIGNtc1N0YWdlQWxsb2NDTHV0RmxvYXQoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBuR3JpZFBvaW50cywgY21zVUludDMyTnVtYmVyIGlucHV0Q2hhbiwgY21zVUludDMyTnVtYmVyIG91dHB1dENoYW4sIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIFRhYmxlKTsKKworQ01TQVBJIGNtc1N0YWdlKiAgICAgICAgIENNU0VYUE9SVCBjbXNTdGFnZUFsbG9jQ0x1dDE2Yml0R3JhbnVsYXIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNvbnN0IGNtc1VJbnQzMk51bWJlciBjbHV0UG9pbnRzW10sIGNtc1VJbnQzMk51bWJlciBpbnB1dENoYW4sIGNtc1VJbnQzMk51bWJlciBvdXRwdXRDaGFuLCBjb25zdCBjbXNVSW50MTZOdW1iZXIqIFRhYmxlKTsKK0NNU0FQSSBjbXNTdGFnZSogICAgICAgICBDTVNFWFBPUlQgY21zU3RhZ2VBbGxvY0NMdXRGbG9hdEdyYW51bGFyKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCBjbXNVSW50MzJOdW1iZXIgY2x1dFBvaW50c1tdLCBjbXNVSW50MzJOdW1iZXIgaW5wdXRDaGFuLCBjbXNVSW50MzJOdW1iZXIgb3V0cHV0Q2hhbiwgY29uc3QgY21zRmxvYXQzMk51bWJlciogVGFibGUpOworCitDTVNBUEkgY21zU3RhZ2UqICAgICAgICAgQ01TRVhQT1JUIGNtc1N0YWdlRHVwKGNtc1N0YWdlKiBtcGUpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNTdGFnZUZyZWUoY21zU3RhZ2UqIG1wZSk7CitDTVNBUEkgY21zU3RhZ2UqICAgICAgICAgQ01TRVhQT1JUIGNtc1N0YWdlTmV4dChjb25zdCBjbXNTdGFnZSogbXBlKTsKKworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgIENNU0VYUE9SVCBjbXNTdGFnZUlucHV0Q2hhbm5lbHMoY29uc3QgY21zU3RhZ2UqIG1wZSk7CitDTVNBUEkgY21zVUludDMyTnVtYmVyICAgQ01TRVhQT1JUIGNtc1N0YWdlT3V0cHV0Q2hhbm5lbHMoY29uc3QgY21zU3RhZ2UqIG1wZSk7CitDTVNBUEkgY21zU3RhZ2VTaWduYXR1cmUgQ01TRVhQT1JUIGNtc1N0YWdlVHlwZShjb25zdCBjbXNTdGFnZSogbXBlKTsKK0NNU0FQSSB2b2lkKiAgICAgICAgICAgICBDTVNFWFBPUlQgY21zU3RhZ2VEYXRhKGNvbnN0IGNtc1N0YWdlKiBtcGUpOworCisvLyBTYW1wbGluZwordHlwZWRlZiBjbXNJbnQzMk51bWJlciAoKiBjbXNTQU1QTEVSMTYpICAgKHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIHZvaWQgKiBDYXJnbyk7CisKK3R5cGVkZWYgY21zSW50MzJOdW1iZXIgKCogY21zU0FNUExFUkZMT0FUKShyZWdpc3RlciBjb25zdCBjbXNGbG9hdDMyTnVtYmVyIEluW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc0Zsb2F0MzJOdW1iZXIgT3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIHZvaWQgKiBDYXJnbyk7CisKKy8vIFVzZSB0aGlzIGZsYWcgdG8gcHJldmVudCBjaGFuZ2VzIGJlaW5nIHdyaXR0ZW4gdG8gZGVzdGluYXRpb24KKyNkZWZpbmUgU0FNUExFUl9JTlNQRUNUICAgICAweDAxMDAwMDAwCisKKy8vIEZvciBDTFVUIG9ubHkKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zU3RhZ2VTYW1wbGVDTHV0MTZiaXQoY21zU3RhZ2UqIG1wZSwgICAgY21zU0FNUExFUjE2IFNhbXBsZXIsIHZvaWQqIENhcmdvLCBjbXNVSW50MzJOdW1iZXIgZHdGbGFncyk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc1N0YWdlU2FtcGxlQ0x1dEZsb2F0KGNtc1N0YWdlKiBtcGUsIGNtc1NBTVBMRVJGTE9BVCBTYW1wbGVyLCB2b2lkKiBDYXJnbywgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpOworCisvLyBTbGljZXJzCitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NsaWNlU3BhY2UxNihjbXNVSW50MzJOdW1iZXIgbklucHV0cywgY29uc3QgY21zVUludDMyTnVtYmVyIGNsdXRQb2ludHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1NBTVBMRVIxNiBTYW1wbGVyLCB2b2lkICogQ2FyZ28pOworCitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NsaWNlU3BhY2VGbG9hdChjbXNVSW50MzJOdW1iZXIgbklucHV0cywgY29uc3QgY21zVUludDMyTnVtYmVyIGNsdXRQb2ludHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1NBTVBMRVJGTE9BVCBTYW1wbGVyLCB2b2lkICogQ2FyZ28pOworCisvLyBNdWx0aWxvY2FsaXplZCBVbmljb2RlIG1hbmFnZW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3R5cGVkZWYgc3RydWN0IF9jbXNfTUxVX3N0cnVjdCBjbXNNTFU7CisKKyNkZWZpbmUgIGNtc05vTGFuZ3VhZ2UgIlwwXDAiCisjZGVmaW5lICBjbXNOb0NvdW50cnkgICJcMFwwIgorCitDTVNBUEkgY21zTUxVKiAgICAgICAgICAgQ01TRVhQT1JUIGNtc01MVWFsbG9jKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zKTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zTUxVZnJlZShjbXNNTFUqIG1sdSk7CitDTVNBUEkgY21zTUxVKiAgICAgICAgICAgQ01TRVhQT1JUIGNtc01MVWR1cChjb25zdCBjbXNNTFUqIG1sdSk7CisKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zTUxVc2V0QVNDSUkoY21zTUxVKiBtbHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgTGFuZ3VhZ2VDb2RlWzNdLCBjb25zdCBjaGFyIENvdW50cnlDb2RlWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBBU0NJSVN0cmluZyk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc01MVXNldFdpZGUoY21zTUxVKiBtbHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgTGFuZ3VhZ2VDb2RlWzNdLCBjb25zdCBjaGFyIENvdW50cnlDb2RlWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBXaWRlU3RyaW5nKTsKKworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgIENNU0VYUE9SVCBjbXNNTFVnZXRBU0NJSShjb25zdCBjbXNNTFUqIG1sdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBMYW5ndWFnZUNvZGVbM10sIGNvbnN0IGNoYXIgQ291bnRyeUNvZGVbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIEJ1ZmZlciwgICAgY21zVUludDMyTnVtYmVyIEJ1ZmZlclNpemUpOworCitDTVNBUEkgY21zVUludDMyTnVtYmVyICAgQ01TRVhQT1JUIGNtc01MVWdldFdpZGUoY29uc3QgY21zTUxVKiBtbHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBMYW5ndWFnZUNvZGVbM10sIGNvbnN0IGNoYXIgQ291bnRyeUNvZGVbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCogQnVmZmVyLCBjbXNVSW50MzJOdW1iZXIgQnVmZmVyU2l6ZSk7CisKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zTUxVZ2V0VHJhbnNsYXRpb24oY29uc3QgY21zTUxVKiBtbHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIExhbmd1YWdlQ29kZVszXSwgY29uc3QgY2hhciBDb3VudHJ5Q29kZVszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgT2J0YWluZWRMYW5ndWFnZVszXSwgY2hhciBPYnRhaW5lZENvdW50cnlbM10pOworCitDTVNBUEkgY21zVUludDMyTnVtYmVyICAgQ01TRVhQT1JUIGNtc01MVXRyYW5zbGF0aW9uc0NvdW50KGNvbnN0IGNtc01MVSogbWx1KTsKKworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCBjbXNNTFV0cmFuc2xhdGlvbnNDb2Rlcyhjb25zdCBjbXNNTFUqIG1sdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgTGFuZ3VhZ2VDb2RlWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgQ291bnRyeUNvZGVbM10pOworIAorLy8gVW5kZXJjb2xvcnJlbW92YWwgJiBibGFjayBnZW5lcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBjbXNUb25lQ3VydmUqIFVjcjsKKyAgICAgICAgY21zVG9uZUN1cnZlKiBCZzsKKyAgICAgICAgY21zTUxVKiAgICAgICBEZXNjOworCit9IGNtc1VjckJnOworCisvLyBTY3JlZW5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIGNtc1BSSU5URVJfREVGQVVMVF9TQ1JFRU5TICAgICAweDAwMDEKKyNkZWZpbmUgY21zRlJFUVVFTkNFX1VOSVRTX0xJTkVTX0NNICAgIDB4MDAwMAorI2RlZmluZSBjbXNGUkVRVUVOQ0VfVU5JVFNfTElORVNfSU5DSCAgMHgwMDAyCisKKyNkZWZpbmUgY21zU1BPVF9VTktOT1dOICAgICAgICAgMAorI2RlZmluZSBjbXNTUE9UX1BSSU5URVJfREVGQVVMVCAxCisjZGVmaW5lIGNtc1NQT1RfUk9VTkQgICAgICAgICAgIDIKKyNkZWZpbmUgY21zU1BPVF9ESUFNT05EICAgICAgICAgMworI2RlZmluZSBjbXNTUE9UX0VMTElQU0UgICAgICAgICA0CisjZGVmaW5lIGNtc1NQT1RfTElORSAgICAgICAgICAgIDUKKyNkZWZpbmUgY21zU1BPVF9TUVVBUkUgICAgICAgICAgNgorI2RlZmluZSBjbXNTUE9UX0NST1NTICAgICAgICAgICA3CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjbXNGbG9hdDY0TnVtYmVyICBGcmVxdWVuY3k7CisgICAgY21zRmxvYXQ2NE51bWJlciAgU2NyZWVuQW5nbGU7CisgICAgY21zVUludDMyTnVtYmVyICAgU3BvdFNoYXBlOworCit9IGNtc1NjcmVlbmluZ0NoYW5uZWw7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjbXNVSW50MzJOdW1iZXIgRmxhZzsKKyAgICBjbXNVSW50MzJOdW1iZXIgbkNoYW5uZWxzOworICAgIGNtc1NjcmVlbmluZ0NoYW5uZWwgQ2hhbm5lbHNbY21zTUFYQ0hBTk5FTFNdOworCit9IGNtc1NjcmVlbmluZzsKKworCisvLyBOYW1lZCBjb2xvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0eXBlZGVmIHN0cnVjdCBfY21zX05BTUVEQ09MT1JMSVNUX3N0cnVjdCBjbXNOQU1FRENPTE9STElTVDsKKworQ01TQVBJIGNtc05BTUVEQ09MT1JMSVNUKiBDTVNFWFBPUlQgY21zQWxsb2NOYW1lZENvbG9yTGlzdChjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBDb2xvcmFudENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBQcmVmaXgsIGNvbnN0IGNoYXIqIFN1ZmZpeCk7CisKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0ZyZWVOYW1lZENvbG9yTGlzdChjbXNOQU1FRENPTE9STElTVCogdik7CitDTVNBUEkgY21zTkFNRURDT0xPUkxJU1QqIENNU0VYUE9SVCBjbXNEdXBOYW1lZENvbG9yTGlzdChjb25zdCBjbXNOQU1FRENPTE9STElTVCogdik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgIENNU0VYUE9SVCBjbXNBcHBlbmROYW1lZENvbG9yKGNtc05BTUVEQ09MT1JMSVNUKiB2LCBjb25zdCBjaGFyKiBOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDE2TnVtYmVyIFBDU1szXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQxNk51bWJlciBDb2xvcmFudFtjbXNNQVhDSEFOTkVMU10pOworCitDTVNBUEkgY21zVUludDMyTnVtYmVyICAgIENNU0VYUE9SVCBjbXNOYW1lZENvbG9yQ291bnQoY29uc3QgY21zTkFNRURDT0xPUkxJU1QqIHYpOworQ01TQVBJIGNtc0ludDMyTnVtYmVyICAgICBDTVNFWFBPUlQgY21zTmFtZWRDb2xvckluZGV4KGNvbnN0IGNtc05BTUVEQ09MT1JMSVNUKiB2LCBjb25zdCBjaGFyKiBOYW1lKTsKKworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgICBDTVNFWFBPUlQgY21zTmFtZWRDb2xvckluZm8oY29uc3QgY21zTkFNRURDT0xPUkxJU1QqIE5hbWVkQ29sb3JMaXN0LCBjbXNVSW50MzJOdW1iZXIgbkNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIFByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIFN1ZmZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQxNk51bWJlciogUENTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDE2TnVtYmVyKiBDb2xvcmFudCk7CisKKy8vIFJldHJpZXZlIG5hbWVkIGNvbG9yIGxpc3QgZnJvbSB0cmFuc2Zvcm0KK0NNU0FQSSBjbXNOQU1FRENPTE9STElTVCogQ01TRVhQT1JUIGNtc0dldE5hbWVkQ29sb3JMaXN0KGNtc0hUUkFOU0ZPUk0geGZvcm0pOworCisvLyBQcm9maWxlIHNlcXVlbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFByb2ZpbGUgc2VxdWVuY2UgZGVzY3JpcHRvci4gU29tZSBmaWVsZHMgY29tZSBmcm9tIHByb2ZpbGUgc2VxdWVuY2UgZGVzY3JpcHRvciB0YWcsIG90aGVycworLy8gY29tZSBmcm9tIFByb2ZpbGUgU2VxdWVuY2UgSWRlbnRpZmllciBUYWcKK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc1NpZ25hdHVyZSAgICAgICAgICAgZGV2aWNlTWZnOworICAgIGNtc1NpZ25hdHVyZSAgICAgICAgICAgZGV2aWNlTW9kZWw7CisgICAgY21zVUludDY0TnVtYmVyICAgICAgICBhdHRyaWJ1dGVzOworICAgIGNtc1RlY2hub2xvZ3lTaWduYXR1cmUgdGVjaG5vbG9neTsKKyAgICBjbXNQcm9maWxlSUQgICAgICAgICAgIFByb2ZpbGVJRDsKKyAgICBjbXNNTFUqICAgICAgICAgICAgICAgIE1hbnVmYWN0dXJlcjsKKyAgICBjbXNNTFUqICAgICAgICAgICAgICAgIE1vZGVsOworICAgIGNtc01MVSogICAgICAgICAgICAgICAgRGVzY3JpcHRpb247CisKK30gY21zUFNFUURFU0M7CisKK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc1VJbnQzMk51bWJlciBuOworICAgIGNtc0NvbnRleHQgICAgIENvbnRleHRJRDsKKyAgICBjbXNQU0VRREVTQyogICAgc2VxOworCit9IGNtc1NFUTsKKworQ01TQVBJIGNtc1NFUSogICAgICAgICAgIENNU0VYUE9SVCBjbXNBbGxvY1Byb2ZpbGVTZXF1ZW5jZURlc2NyaXB0aW9uKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgbik7CitDTVNBUEkgY21zU0VRKiAgICAgICAgICAgQ01TRVhQT1JUIGNtc0R1cFByb2ZpbGVTZXF1ZW5jZURlc2NyaXB0aW9uKGNvbnN0IGNtc1NFUSogcHNlcSk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0ZyZWVQcm9maWxlU2VxdWVuY2VEZXNjcmlwdGlvbihjbXNTRVEqIHBzZXEpOworCisvLyBEaWN0aW9uYXJpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordHlwZWRlZiBzdHJ1Y3QgX2Ntc0RJQ1RlbnRyeV9zdHJ1Y3QgeworCisgICAgc3RydWN0IF9jbXNESUNUZW50cnlfc3RydWN0KiBOZXh0OworCisgICAgY21zTUxVICpEaXNwbGF5TmFtZTsKKyAgICBjbXNNTFUgKkRpc3BsYXlWYWx1ZTsKKyAgICB3Y2hhcl90KiBOYW1lOworICAgIHdjaGFyX3QqIFZhbHVlOworCit9IGNtc0RJQ1RlbnRyeTsKKworQ01TQVBJIGNtc0hBTkRMRSAgICAgICAgICAgQ01TRVhQT1JUIGNtc0RpY3RBbGxvYyhjbXNDb250ZXh0IENvbnRleHRJRCk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zRGljdEZyZWUoY21zSEFORExFIGhEaWN0KTsKK0NNU0FQSSBjbXNIQU5ETEUgICAgICAgICAgIENNU0VYUE9SVCBjbXNEaWN0RHVwKGNtc0hBTkRMRSBoRGljdCk7CisKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNEaWN0QWRkRW50cnkoY21zSEFORExFIGhEaWN0LCBjb25zdCB3Y2hhcl90KiBOYW1lLCBjb25zdCB3Y2hhcl90KiBWYWx1ZSwgY29uc3QgY21zTUxVICpEaXNwbGF5TmFtZSwgY29uc3QgY21zTUxVICpEaXNwbGF5VmFsdWUpOworQ01TQVBJIGNvbnN0IGNtc0RJQ1RlbnRyeSogQ01TRVhQT1JUIGNtc0RpY3RHZXRFbnRyeUxpc3QoY21zSEFORExFIGhEaWN0KTsKK0NNU0FQSSBjb25zdCBjbXNESUNUZW50cnkqIENNU0VYUE9SVCBjbXNEaWN0TmV4dEVudHJ5KGNvbnN0IGNtc0RJQ1RlbnRyeSogZSk7CisKKy8vIEFjY2VzcyB0byBQcm9maWxlIGRhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ01TQVBJIGNtc0hQUk9GSUxFICAgICAgIENNU0VYUE9SVCBjbXNDcmVhdGVQcm9maWxlUGxhY2Vob2xkZXIoY21zQ29udGV4dCBDb250ZXh0SUQpOworCitDTVNBUEkgY21zQ29udGV4dCAgICAgICAgQ01TRVhQT1JUIGNtc0dldFByb2ZpbGVDb250ZXh0SUQoY21zSFBST0ZJTEUgaFByb2ZpbGUpOworQ01TQVBJIGNtc0ludDMyTnVtYmVyICAgIENNU0VYUE9SVCBjbXNHZXRUYWdDb3VudChjbXNIUFJPRklMRSBoUHJvZmlsZSk7CitDTVNBUEkgY21zVGFnU2lnbmF0dXJlICAgQ01TRVhQT1JUIGNtc0dldFRhZ1NpZ25hdHVyZShjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIG4pOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCBjbXNJc1RhZyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVGFnU2lnbmF0dXJlIHNpZyk7CisKKy8vIFJlYWQgYW5kIHdyaXRlIHByZS1mb3JtYXR0ZWQgZGF0YQorQ01TQVBJIHZvaWQqICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNSZWFkVGFnKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNUYWdTaWduYXR1cmUgc2lnKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zV3JpdGVUYWcoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1RhZ1NpZ25hdHVyZSBzaWcsIGNvbnN0IHZvaWQqIGRhdGEpOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCBjbXNMaW5rVGFnKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNUYWdTaWduYXR1cmUgc2lnLCBjbXNUYWdTaWduYXR1cmUgZGVzdCk7CitDTVNBUEkgY21zVGFnU2lnbmF0dXJlICAgQ01TRVhQT1JUIGNtc1RhZ0xpbmtlZFRvKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNUYWdTaWduYXR1cmUgc2lnKTsKKworLy8gUmVhZCBhbmQgd3JpdGUgcmF3IGRhdGEKK0NNU0FQSSBjbXNJbnQzMk51bWJlciAgICBDTVNFWFBPUlQgY21zUmVhZFJhd1RhZyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVGFnU2lnbmF0dXJlIHNpZywgdm9pZCogQnVmZmVyLCBjbXNVSW50MzJOdW1iZXIgQnVmZmVyU2l6ZSk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc1dyaXRlUmF3VGFnKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNUYWdTaWduYXR1cmUgc2lnLCBjb25zdCB2b2lkKiBkYXRhLCBjbXNVSW50MzJOdW1iZXIgU2l6ZSk7CisKKy8vIEFjY2VzcyBoZWFkZXIgZGF0YQorI2RlZmluZSBjbXNFbWJlZGRlZFByb2ZpbGVGYWxzZSAgICAweDAwMDAwMDAwCisjZGVmaW5lIGNtc0VtYmVkZGVkUHJvZmlsZVRydWUgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgY21zVXNlQW55d2hlcmUgICAgICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBjbXNVc2VXaXRoRW1iZWRkZWREYXRhT25seSAweDAwMDAwMDAyCisKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgICBDTVNFWFBPUlQgY21zR2V0SGVhZGVyRmxhZ3MoY21zSFBST0ZJTEUgaFByb2ZpbGUpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNHZXRIZWFkZXJBdHRyaWJ1dGVzKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNVSW50NjROdW1iZXIqIEZsYWdzKTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zR2V0SGVhZGVyUHJvZmlsZUlEKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNVSW50OE51bWJlciogUHJvZmlsZUlEKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgY21zR2V0SGVhZGVyQ3JlYXRpb25EYXRlVGltZShjbXNIUFJPRklMRSBoUHJvZmlsZSwgc3RydWN0IHRtICpEZXN0KTsKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgICBDTVNFWFBPUlQgY21zR2V0SGVhZGVyUmVuZGVyaW5nSW50ZW50KGNtc0hQUk9GSUxFIGhQcm9maWxlKTsKKworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNTZXRIZWFkZXJGbGFncyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIEZsYWdzKTsKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgICBDTVNFWFBPUlQgY21zR2V0SGVhZGVyTWFudWZhY3R1cmVyKGNtc0hQUk9GSUxFIGhQcm9maWxlKTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zU2V0SGVhZGVyTWFudWZhY3R1cmVyKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNVSW50MzJOdW1iZXIgbWFudWZhY3R1cmVyKTsKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgICBDTVNFWFBPUlQgY21zR2V0SGVhZGVyQ3JlYXRvcihjbXNIUFJPRklMRSBoUHJvZmlsZSk7CitDTVNBUEkgY21zVUludDMyTnVtYmVyICAgQ01TRVhQT1JUIGNtc0dldEhlYWRlck1vZGVsKGNtc0hQUk9GSUxFIGhQcm9maWxlKTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zU2V0SGVhZGVyTW9kZWwoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQzMk51bWJlciBtb2RlbCk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NldEhlYWRlckF0dHJpYnV0ZXMoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQ2NE51bWJlciBGbGFncyk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NldEhlYWRlclByb2ZpbGVJRChjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDhOdW1iZXIqIFByb2ZpbGVJRCk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NldEhlYWRlclJlbmRlcmluZ0ludGVudChjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIFJlbmRlcmluZ0ludGVudCk7CisKK0NNU0FQSSBjbXNDb2xvclNwYWNlU2lnbmF0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0dldFBDUyhjbXNIUFJPRklMRSBoUHJvZmlsZSk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NldFBDUyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBwY3MpOworQ01TQVBJIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zR2V0Q29sb3JTcGFjZShjbXNIUFJPRklMRSBoUHJvZmlsZSk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NldENvbG9yU3BhY2UoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgc2lnKTsKK0NNU0FQSSBjbXNQcm9maWxlQ2xhc3NTaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zR2V0RGV2aWNlQ2xhc3MoY21zSFBST0ZJTEUgaFByb2ZpbGUpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNTZXREZXZpY2VDbGFzcyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zUHJvZmlsZUNsYXNzU2lnbmF0dXJlIHNpZyk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc1NldFByb2ZpbGVWZXJzaW9uKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNGbG9hdDY0TnVtYmVyIFZlcnNpb24pOworQ01TQVBJIGNtc0Zsb2F0NjROdW1iZXIgIENNU0VYUE9SVCBjbXNHZXRQcm9maWxlVmVyc2lvbihjbXNIUFJPRklMRSBoUHJvZmlsZSk7CisKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgICBDTVNFWFBPUlQgY21zR2V0RW5jb2RlZElDQ3ZlcnNpb24oY21zSFBST0ZJTEUgaFByb2ZpbGUpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNTZXRFbmNvZGVkSUNDdmVyc2lvbihjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIFZlcnNpb24pOworCisvLyBIb3cgcHJvZmlsZXMgbWF5IGJlIHVzZWQKKyNkZWZpbmUgTENNU19VU0VEX0FTX0lOUFVUICAgICAgMAorI2RlZmluZSBMQ01TX1VTRURfQVNfT1VUUFVUICAgICAxCisjZGVmaW5lIExDTVNfVVNFRF9BU19QUk9PRiAgICAgIDIKKworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCBjbXNJc0ludGVudFN1cHBvcnRlZChjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIEludGVudCwgY21zVUludDMyTnVtYmVyIFVzZWREaXJlY3Rpb24pOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCBjbXNJc01hdHJpeFNoYXBlcihjbXNIUFJPRklMRSBoUHJvZmlsZSk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc0lzQ0xVVChjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIEludGVudCwgY21zVUludDMyTnVtYmVyIFVzZWREaXJlY3Rpb24pOworCisvLyBUcmFuc2xhdGUgZm9ybS90byBvdXIgbm90YXRpb24gdG8gSUNDCitDTVNBUEkgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSAgIENNU0VYUE9SVCBfY21zSUNDY29sb3JTcGFjZShpbnQgT3VyTm90YXRpb24pOworQ01TQVBJIGludCAgICAgICAgICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc0xDTVNjb2xvclNwYWNlKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgUHJvZmlsZVNwYWNlKTsKKworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgIENNU0VYUE9SVCBjbXNDaGFubmVsc09mKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgQ29sb3JTcGFjZSk7CisKKy8vIEJ1aWxkIGEgc3VpdGFibGUgZm9ybWF0dGVyIGZvciB0aGUgY29sb3JzcGFjZSBvZiB0aGlzIHByb2ZpbGUKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgICBDTVNFWFBPUlQgY21zRm9ybWF0dGVyRm9yQ29sb3JzcGFjZU9mUHJvZmlsZShjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIG5CeXRlcywgY21zQm9vbCBsSXNGbG9hdCk7CitDTVNBUEkgY21zVUludDMyTnVtYmVyICAgQ01TRVhQT1JUIGNtc0Zvcm1hdHRlckZvclBDU09mUHJvZmlsZShjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIG5CeXRlcywgY21zQm9vbCBsSXNGbG9hdCk7CisKKworLy8gTG9jYWxpemVkIGluZm8KK3R5cGVkZWYgZW51bSB7CisgICAgICAgICAgICAgY21zSW5mb0Rlc2NyaXB0aW9uICA9IDAsCisgICAgICAgICAgICAgY21zSW5mb01hbnVmYWN0dXJlciA9IDEsCisgICAgICAgICAgICAgY21zSW5mb01vZGVsICAgICAgICA9IDIsCisgICAgICAgICAgICAgY21zSW5mb0NvcHlyaWdodCAgICA9IDMKK30gY21zSW5mb1R5cGU7CisKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgICBDTVNFWFBPUlQgY21zR2V0UHJvZmlsZUluZm8oY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc0luZm9UeXBlIEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIExhbmd1YWdlQ29kZVszXSwgY29uc3QgY2hhciBDb3VudHJ5Q29kZVszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QqIEJ1ZmZlciwgY21zVUludDMyTnVtYmVyIEJ1ZmZlclNpemUpOworCitDTVNBUEkgY21zVUludDMyTnVtYmVyICAgQ01TRVhQT1JUIGNtc0dldFByb2ZpbGVJbmZvQVNDSUkoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc0luZm9UeXBlIEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIExhbmd1YWdlQ29kZVszXSwgY29uc3QgY2hhciBDb3VudHJ5Q29kZVszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIEJ1ZmZlciwgY21zVUludDMyTnVtYmVyIEJ1ZmZlclNpemUpOworCisvLyBJTyBoYW5kbGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3R5cGVkZWYgc3RydWN0IF9jbXNfaW9faGFuZGxlciBjbXNJT0hBTkRMRVI7CisKK0NNU0FQSSBjbXNJT0hBTkRMRVIqICAgICBDTVNFWFBPUlQgY21zT3BlbklPaGFuZGxlckZyb21GaWxlKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCBjaGFyKiBGaWxlTmFtZSwgY29uc3QgY2hhciogQWNjZXNzTW9kZSk7CitDTVNBUEkgY21zSU9IQU5ETEVSKiAgICAgQ01TRVhQT1JUIGNtc09wZW5JT2hhbmRsZXJGcm9tU3RyZWFtKGNtc0NvbnRleHQgQ29udGV4dElELCBGSUxFKiBTdHJlYW0pOworQ01TQVBJIGNtc0lPSEFORExFUiogICAgIENNU0VYUE9SVCBjbXNPcGVuSU9oYW5kbGVyRnJvbU1lbShjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCAqQnVmZmVyLCBjbXNVSW50MzJOdW1iZXIgc2l6ZSwgY29uc3QgY2hhciogQWNjZXNzTW9kZSk7CitDTVNBUEkgY21zSU9IQU5ETEVSKiAgICAgQ01TRVhQT1JUIGNtc09wZW5JT2hhbmRsZXJGcm9tTlVMTChjbXNDb250ZXh0IENvbnRleHRJRCk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUIGNtc0Nsb3NlSU9oYW5kbGVyKGNtc0lPSEFORExFUiogaW8pOworCisvLyBNRDUgbWVzc2FnZSBkaWdlc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCBjbXNNRDVjb21wdXRlSUQoY21zSFBST0ZJTEUgaFByb2ZpbGUpOworQ01TQVBJIGNtc0Jvb2wJCQkgQ01TRVhQT1JUIGNtc01ENWNvbXB1dGVJREV4dChjb25zdCB2b2lkKiBidWYsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgY2hhciBQcm9maWxlSURbMTZdKTsKKworLy8gUHJvZmlsZSBoaWdoIGxldmVsIGZ1bnRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zT3BlblByb2ZpbGVGcm9tRmlsZShjb25zdCBjaGFyICpJQ0NQcm9maWxlLCBjb25zdCBjaGFyICpzQWNjZXNzKTsKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNPcGVuUHJvZmlsZUZyb21GaWxlVEhSKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCBjaGFyICpJQ0NQcm9maWxlLCBjb25zdCBjaGFyICpzQWNjZXNzKTsKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNPcGVuUHJvZmlsZUZyb21TdHJlYW0oRklMRSogSUNDUHJvZmlsZSwgY29uc3QgY2hhciogc0FjY2Vzcyk7CitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zT3BlblByb2ZpbGVGcm9tU3RyZWFtVEhSKGNtc0NvbnRleHQgQ29udGV4dElELCBGSUxFKiBJQ0NQcm9maWxlLCBjb25zdCBjaGFyKiBzQWNjZXNzKTsKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNPcGVuUHJvZmlsZUZyb21NZW0oY29uc3Qgdm9pZCAqIE1lbVB0ciwgY21zVUludDMyTnVtYmVyIGR3U2l6ZSk7CitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zT3BlblByb2ZpbGVGcm9tTWVtVEhSKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCB2b2lkICogTWVtUHRyLCBjbXNVSW50MzJOdW1iZXIgZHdTaXplKTsKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNPcGVuUHJvZmlsZUZyb21JT2hhbmRsZXJUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0lPSEFORExFUiogaW8pOworQ01TQVBJIGNtc0hQUk9GSUxFICAgICAgQ01TRVhQT1JUIGNtc09wZW5Qcm9maWxlRnJvbUlPaGFuZGxlcjJUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0lPSEFORExFUiogaW8sIGNtc0Jvb2wgd3JpdGUpOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgQ01TRVhQT1JUIGNtc0Nsb3NlUHJvZmlsZShjbXNIUFJPRklMRSBoUHJvZmlsZSk7CisKK0NNU0FQSSBjbXNCb29sICAgICAgICAgIENNU0VYUE9SVCBjbXNTYXZlUHJvZmlsZVRvRmlsZShjbXNIUFJPRklMRSBoUHJvZmlsZSwgY29uc3QgY2hhciogRmlsZU5hbWUpOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgQ01TRVhQT1JUIGNtc1NhdmVQcm9maWxlVG9TdHJlYW0oY21zSFBST0ZJTEUgaFByb2ZpbGUsIEZJTEUqIFN0cmVhbSk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICBDTVNFWFBPUlQgY21zU2F2ZVByb2ZpbGVUb01lbShjbXNIUFJPRklMRSBoUHJvZmlsZSwgdm9pZCAqTWVtUHRyLCBjbXNVSW50MzJOdW1iZXIqIEJ5dGVzTmVlZGVkKTsKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgIENNU0VYUE9SVCBjbXNTYXZlUHJvZmlsZVRvSU9oYW5kbGVyKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNJT0hBTkRMRVIqIGlvKTsKKworLy8gUHJlZGVmaW5lZCB2aXJ0dWFsIHByb2ZpbGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlUkdCUHJvZmlsZVRIUihjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0NJRXh5WSogV2hpdGVQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0NJRXh5WVRSSVBMRSogUHJpbWFyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVG9uZUN1cnZlKiBjb25zdCBUcmFuc2ZlckZ1bmN0aW9uWzNdKTsKKworQ01TQVBJIGNtc0hQUk9GSUxFICAgICAgQ01TRVhQT1JUIGNtc0NyZWF0ZVJHQlByb2ZpbGUoY29uc3QgY21zQ0lFeHlZKiBXaGl0ZVBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zQ0lFeHlZVFJJUExFKiBQcmltYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNUb25lQ3VydmUqIGNvbnN0IFRyYW5zZmVyRnVuY3Rpb25bM10pOworCitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlR3JheVByb2ZpbGVUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zQ0lFeHlZKiBXaGl0ZVBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1RvbmVDdXJ2ZSogVHJhbnNmZXJGdW5jdGlvbik7CisKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNDcmVhdGVHcmF5UHJvZmlsZShjb25zdCBjbXNDSUV4eVkqIFdoaXRlUG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zVG9uZUN1cnZlKiBUcmFuc2ZlckZ1bmN0aW9uKTsKKworQ01TQVBJIGNtc0hQUk9GSUxFICAgICAgQ01TRVhQT1JUIGNtc0NyZWF0ZUxpbmVhcml6YXRpb25EZXZpY2VMaW5rVEhSKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgQ29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNUb25lQ3VydmUqIGNvbnN0IFRyYW5zZmVyRnVuY3Rpb25zW10pOworCitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlTGluZWFyaXphdGlvbkRldmljZUxpbmsoY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvclNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1RvbmVDdXJ2ZSogY29uc3QgVHJhbnNmZXJGdW5jdGlvbnNbXSk7CisKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNDcmVhdGVJbmtMaW1pdGluZ0RldmljZUxpbmtUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgQ29sb3JTcGFjZSwgY21zRmxvYXQ2NE51bWJlciBMaW1pdCk7CisKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNDcmVhdGVJbmtMaW1pdGluZ0RldmljZUxpbmsoY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvclNwYWNlLCBjbXNGbG9hdDY0TnVtYmVyIExpbWl0KTsKKworCitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlTGFiMlByb2ZpbGVUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNvbnN0IGNtc0NJRXh5WSogV2hpdGVQb2ludCk7CitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlTGFiMlByb2ZpbGUoY29uc3QgY21zQ0lFeHlZKiBXaGl0ZVBvaW50KTsKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNDcmVhdGVMYWI0UHJvZmlsZVRIUihjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3QgY21zQ0lFeHlZKiBXaGl0ZVBvaW50KTsKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNDcmVhdGVMYWI0UHJvZmlsZShjb25zdCBjbXNDSUV4eVkqIFdoaXRlUG9pbnQpOworCitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlWFlaUHJvZmlsZVRIUihjbXNDb250ZXh0IENvbnRleHRJRCk7CitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlWFlaUHJvZmlsZSh2b2lkKTsKKworQ01TQVBJIGNtc0hQUk9GSUxFICAgICAgQ01TRVhQT1JUIGNtc0NyZWF0ZV9zUkdCUHJvZmlsZVRIUihjbXNDb250ZXh0IENvbnRleHRJRCk7CitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlX3NSR0JQcm9maWxlKHZvaWQpOworCitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlQkNIU1dhYnN0cmFjdFByb2ZpbGVUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5MVVRQb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBCcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBDb250cmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEh1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIFNhdHVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IFRlbXBTcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IFRlbXBEZXN0KTsKKworQ01TQVBJIGNtc0hQUk9GSUxFICAgICAgQ01TRVhQT1JUIGNtc0NyZWF0ZUJDSFNXYWJzdHJhY3RQcm9maWxlKGludCBuTFVUUG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgQnJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgQ29udHJhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBIdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBTYXR1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBUZW1wU3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBUZW1wRGVzdCk7CisKK0NNU0FQSSBjbXNIUFJPRklMRSAgICAgIENNU0VYUE9SVCBjbXNDcmVhdGVOVUxMUHJvZmlsZVRIUihjbXNDb250ZXh0IENvbnRleHRJRCk7CitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zQ3JlYXRlTlVMTFByb2ZpbGUodm9pZCk7CisKKy8vIENvbnZlcnRzIGEgdHJhbnNmb3JtIHRvIGEgZGV2aWNlbGluayBwcm9maWxlCitDTVNBUEkgY21zSFBST0ZJTEUgICAgICBDTVNFWFBPUlQgY21zVHJhbnNmb3JtMkRldmljZUxpbmsoY21zSFRSQU5TRk9STSBoVHJhbnNmb3JtLCBjbXNGbG9hdDY0TnVtYmVyIFZlcnNpb24sIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKTsKKworLy8gSW50ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIElDQyBJbnRlbnRzCisjZGVmaW5lIElOVEVOVF9QRVJDRVBUVUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDICAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgSU5URU5UX1NBVFVSQVRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCisjZGVmaW5lIElOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUMgICAgICAgICAgICAgICAgICAgMworCisvLyBOb24tSUNDIGludGVudHMKKyNkZWZpbmUgSU5URU5UX1BSRVNFUlZFX0tfT05MWV9QRVJDRVBUVUFMICAgICAgICAgICAgIDEwCisjZGVmaW5lIElOVEVOVF9QUkVTRVJWRV9LX09OTFlfUkVMQVRJVkVfQ09MT1JJTUVUUklDICAxMQorI2RlZmluZSBJTlRFTlRfUFJFU0VSVkVfS19PTkxZX1NBVFVSQVRJT04gICAgICAgICAgICAgMTIKKyNkZWZpbmUgSU5URU5UX1BSRVNFUlZFX0tfUExBTkVfUEVSQ0VQVFVBTCAgICAgICAgICAgIDEzCisjZGVmaW5lIElOVEVOVF9QUkVTRVJWRV9LX1BMQU5FX1JFTEFUSVZFX0NPTE9SSU1FVFJJQyAxNAorI2RlZmluZSBJTlRFTlRfUFJFU0VSVkVfS19QTEFORV9TQVRVUkFUSU9OICAgICAgICAgICAgMTUKKworLy8gQ2FsbCB3aXRoIE5VTEwgYXMgcGFyYW1ldGVycyB0byBnZXQgdGhlIGludGVudCBjb3VudAorQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgQ01TRVhQT1JUIGNtc0dldFN1cHBvcnRlZEludGVudHMoY21zVUludDMyTnVtYmVyIG5NYXgsIGNtc1VJbnQzMk51bWJlciogQ29kZXMsIGNoYXIqKiBEZXNjcmlwdGlvbnMpOworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgQ01TRVhQT1JUIGNtc0dldFN1cHBvcnRlZEludGVudHNUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBuTWF4LCBjbXNVSW50MzJOdW1iZXIqIENvZGVzLCBjaGFyKiogRGVzY3JpcHRpb25zKTsKKworLy8gRmxhZ3MKKworI2RlZmluZSBjbXNGTEFHU19OT0NBQ0hFICAgICAgICAgICAgICAgICAgMHgwMDQwICAgIC8vIEluaGliaXQgMS1waXhlbCBjYWNoZQorI2RlZmluZSBjbXNGTEFHU19OT09QVElNSVpFICAgICAgICAgICAgICAgMHgwMTAwICAgIC8vIEluaGliaXQgb3B0aW1pemF0aW9ucworI2RlZmluZSBjbXNGTEFHU19OVUxMVFJBTlNGT1JNICAgICAgICAgICAgMHgwMjAwICAgIC8vIERvbid0IHRyYW5zZm9ybSBhbnl3YXkKKworLy8gUHJvb2ZpbmcgZmxhZ3MKKyNkZWZpbmUgY21zRkxBR1NfR0FNVVRDSEVDSyAgICAgICAgICAgICAgIDB4MTAwMCAgICAvLyBPdXQgb2YgR2FtdXQgYWxhcm0KKyNkZWZpbmUgY21zRkxBR1NfU09GVFBST09GSU5HICAgICAgICAgICAgIDB4NDAwMCAgICAvLyBEbyBzb2Z0cHJvb2ZpbmcKKworLy8gTWlzYworI2RlZmluZSBjbXNGTEFHU19CTEFDS1BPSU5UQ09NUEVOU0FUSU9OICAgMHgyMDAwCisjZGVmaW5lIGNtc0ZMQUdTX05PV0hJVEVPTldISVRFRklYVVAgICAgICAweDAwMDQgICAgLy8gRG9uJ3QgZml4IHNjdW0gZG90CisjZGVmaW5lIGNtc0ZMQUdTX0hJR0hSRVNQUkVDQUxDICAgICAgICAgICAweDA0MDAgICAgLy8gVXNlIG1vcmUgbWVtb3J5IHRvIGdpdmUgYmV0dGVyIGFjY3VyYW5jeQorI2RlZmluZSBjbXNGTEFHU19MT1dSRVNQUkVDQUxDICAgICAgICAgICAgMHgwODAwICAgIC8vIFVzZSBsZXNzIG1lbW9yeSB0byBtaW5pbWl6ZSByZXNvdWNlcworCisvLyBGb3IgZGV2aWNlbGluayBjcmVhdGlvbgorI2RlZmluZSBjbXNGTEFHU184QklUU19ERVZJQ0VMSU5LICAgICAgICAgMHgwMDA4ICAgLy8gQ3JlYXRlIDggYml0cyBkZXZpY2VsaW5rcworI2RlZmluZSBjbXNGTEFHU19HVUVTU0RFVklDRUNMQVNTICAgICAgICAgMHgwMDIwICAgLy8gR3Vlc3MgZGV2aWNlIGNsYXNzIChmb3IgdHJhbnNmb3JtMmRldmljZWxpbmspCisjZGVmaW5lIGNtc0ZMQUdTX0tFRVBfU0VRVUVOQ0UgICAgICAgICAgICAweDAwODAgICAvLyBLZWVwIHByb2ZpbGUgc2VxdWVuY2UgZm9yIGRldmljZWxpbmsgY3JlYXRpb24KKworLy8gU3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIG9wdGltaXphdGlvbnMKKyNkZWZpbmUgY21zRkxBR1NfRk9SQ0VfQ0xVVCAgICAgICAgICAgICAgIDB4MDAwMiAgICAvLyBGb3JjZSBDTFVUIG9wdGltaXphdGlvbgorI2RlZmluZSBjbXNGTEFHU19DTFVUX1BPU1RfTElORUFSSVpBVElPTiAgMHgwMDAxICAgIC8vIGNyZWF0ZSBwb3N0bGluZWFyaXphdGlvbiB0YWJsZXMgaWYgcG9zc2libGUKKyNkZWZpbmUgY21zRkxBR1NfQ0xVVF9QUkVfTElORUFSSVpBVElPTiAgIDB4MDAxMCAgICAvLyBjcmVhdGUgcHJlbGluZWFyaXphdGlvbiB0YWJsZXMgaWYgcG9zc2libGUKKworLy8gRmluZS10dW5lIGNvbnRyb2wgb3ZlciBudW1iZXIgb2YgZ3JpZHBvaW50cworI2RlZmluZSBjbXNGTEFHU19HUklEUE9JTlRTKG4pICAgICAgICAgICAoKChuKSAmIDB4RkYpIDw8IDE2KQorCisvLyBDUkQgc3BlY2lhbAorI2RlZmluZSBjbXNGTEFHU19OT0RFRkFVTFRSRVNPVVJDRURFRiAgICAgMHgwMTAwMDAwMAorCisvLyBUcmFuc2Zvcm1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDTVNBUEkgY21zSFRSQU5TRk9STSAgICBDTVNFWFBPUlQgY21zQ3JlYXRlVHJhbnNmb3JtVEhSKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBJbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBPdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBPdXRwdXRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKTsKKworQ01TQVBJIGNtc0hUUkFOU0ZPUk0gICAgQ01TRVhQT1JUIGNtc0NyZWF0ZVRyYW5zZm9ybShjbXNIUFJPRklMRSBJbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBPdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBPdXRwdXRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKTsKKworQ01TQVBJIGNtc0hUUkFOU0ZPUk0gICAgQ01TRVhQT1JUIGNtc0NyZWF0ZVByb29maW5nVHJhbnNmb3JtVEhSKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBJbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBPdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBPdXRwdXRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIFByb29maW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgUHJvb2ZpbmdJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKTsKKworQ01TQVBJIGNtc0hUUkFOU0ZPUk0gICAgQ01TRVhQT1JUIGNtc0NyZWF0ZVByb29maW5nVHJhbnNmb3JtKGNtc0hQUk9GSUxFIElucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW5wdXRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIE91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIE91dHB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgUHJvb2ZpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBQcm9vZmluZ0ludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpOworCitDTVNBUEkgY21zSFRSQU5TRk9STSAgICBDTVNFWFBPUlQgY21zQ3JlYXRlTXVsdGlwcm9maWxlVHJhbnNmb3JtVEhSKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG5Qcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0cHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncyk7CisKKworQ01TQVBJIGNtc0hUUkFOU0ZPUk0gICAgQ01TRVhQT1JUIGNtc0NyZWF0ZU11bHRpcHJvZmlsZVRyYW5zZm9ybShjbXNIUFJPRklMRSBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG5Qcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0cHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncyk7CisKKworQ01TQVBJIGNtc0hUUkFOU0ZPUk0gICAgQ01TRVhQT1JUIGNtc0NyZWF0ZUV4dGVuZGVkVHJhbnNmb3JtKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG5Qcm9maWxlcywgY21zSFBST0ZJTEUgaFByb2ZpbGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNCb29sICBCUENbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnRzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEFkYXB0YXRpb25TdGF0ZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIGhHYW11dFByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgbkdhbXV0UENTcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW5wdXRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0cHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpOworCitDTVNBUEkgdm9pZCAgICAgICAgICAgICBDTVNFWFBPUlQgY21zRGVsZXRlVHJhbnNmb3JtKGNtc0hUUkFOU0ZPUk0gaFRyYW5zZm9ybSk7CisKK0NNU0FQSSB2b2lkICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNEb1RyYW5zZm9ybShjbXNIVFJBTlNGT1JNIFRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogSW5wdXRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqIE91dHB1dEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU2l6ZSk7CisKK0NNU0FQSSB2b2lkICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNEb1RyYW5zZm9ybVN0cmlkZShjbXNIVFJBTlNGT1JNIFRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogSW5wdXRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqIE91dHB1dEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKTsKKworCitDTVNBUEkgdm9pZCAgICAgICAgICAgICBDTVNFWFBPUlQgY21zU2V0QWxhcm1Db2Rlcyhjb25zdCBjbXNVSW50MTZOdW1iZXIgTmV3QWxhcm1bY21zTUFYQ0hBTk5FTFNdKTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNHZXRBbGFybUNvZGVzKGNtc1VJbnQxNk51bWJlciBOZXdBbGFybVtjbXNNQVhDSEFOTkVMU10pOworCisKK0NNU0FQSSB2b2lkICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNTZXRBbGFybUNvZGVzVEhSKGNtc0NvbnRleHQgQ29udGV4dElELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNVSW50MTZOdW1iZXIgQWxhcm1Db2Rlc1tjbXNNQVhDSEFOTkVMU10pOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0dldEFsYXJtQ29kZXNUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQxNk51bWJlciBBbGFybUNvZGVzW2Ntc01BWENIQU5ORUxTXSk7CisKKworCisvLyBBZGFwdGF0aW9uIHN0YXRlIGZvciBhYnNvbHV0ZSBjb2xvcmltZXRyaWMgaW50ZW50CitDTVNBUEkgY21zRmxvYXQ2NE51bWJlciBDTVNFWFBPUlQgY21zU2V0QWRhcHRhdGlvblN0YXRlKGNtc0Zsb2F0NjROdW1iZXIgZCk7CitDTVNBUEkgY21zRmxvYXQ2NE51bWJlciBDTVNFWFBPUlQgY21zU2V0QWRhcHRhdGlvblN0YXRlVEhSKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNGbG9hdDY0TnVtYmVyIGQpOworCisKKworLy8gR3JhYiB0aGUgQ29udGV4dElEIGZyb20gYW4gb3BlbiB0cmFuc2Zvcm0uIFJldHVybnMgTlVMTCBpZiBhIE5VTEwgdHJhbnNmb3JtIGlzIHBhc3NlZAorQ01TQVBJIGNtc0NvbnRleHQgICAgICAgQ01TRVhQT1JUIGNtc0dldFRyYW5zZm9ybUNvbnRleHRJRChjbXNIVFJBTlNGT1JNIGhUcmFuc2Zvcm0pOworCisvLyBHcmFiIHRoZSBpbnB1dC9vdXRwdXQgZm9ybWF0cworQ01TQVBJIGNtc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0VHJhbnNmb3JtSW5wdXRGb3JtYXQoY21zSFRSQU5TRk9STSBoVHJhbnNmb3JtKTsKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0dldFRyYW5zZm9ybU91dHB1dEZvcm1hdChjbXNIVFJBTlNGT1JNIGhUcmFuc2Zvcm0pOworCisvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKK0NNU0FQSSBjbXNCb29sICAgICAgICAgIENNU0VYUE9SVCBjbXNDaGFuZ2VCdWZmZXJzRm9ybWF0KGNtc0hUUkFOU0ZPUk0gaFRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBPdXRwdXRGb3JtYXQpOworCisKKworLy8gUG9zdFNjcmlwdCBDb2xvclJlbmRlcmluZ0RpY3Rpb25hcnkgYW5kIENvbG9yU3BhY2VBcnJheSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3R5cGVkZWYgZW51bSB7IGNtc1BTX1JFU09VUkNFX0NTQSwgY21zUFNfUkVTT1VSQ0VfQ1JEIH0gY21zUFNSZXNvdXJjZVR5cGU7CisKKy8vIGxjbXMyIHVuaWZpZWQgbWV0aG9kIHRvIGFjY2VzcyBwb3N0c2NyaXB0IGNvbG9yIHJlc291cmNlcworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgQ01TRVhQT1JUIGNtc0dldFBvc3RTY3JpcHRDb2xvclJlc291cmNlKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1BTUmVzb3VyY2VUeXBlIFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgaFByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIEludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNJT0hBTkRMRVIqIGlvKTsKKworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgQ01TRVhQT1JUIGNtc0dldFBvc3RTY3JpcHRDU0EoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNVSW50MzJOdW1iZXIgSW50ZW50LCBjbXNVSW50MzJOdW1iZXIgZHdGbGFncywgdm9pZCogQnVmZmVyLCBjbXNVSW50MzJOdW1iZXIgZHdCdWZmZXJMZW4pOworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgQ01TRVhQT1JUIGNtc0dldFBvc3RTY3JpcHRDUkQoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNVSW50MzJOdW1iZXIgSW50ZW50LCBjbXNVSW50MzJOdW1iZXIgZHdGbGFncywgdm9pZCogQnVmZmVyLCBjbXNVSW50MzJOdW1iZXIgZHdCdWZmZXJMZW4pOworCisKKy8vIElUOC43IC8gQ0dBVFMuMTctMjAweCBoYW5kbGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDTVNBUEkgY21zSEFORExFICAgICAgICBDTVNFWFBPUlQgY21zSVQ4QWxsb2MoY21zQ29udGV4dCBDb250ZXh0SUQpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0lUOEZyZWUoY21zSEFORExFIGhJVDgpOworCisvLyBUYWJsZXMKK0NNU0FQSSBjbXNVSW50MzJOdW1iZXIgIENNU0VYUE9SVCBjbXNJVDhUYWJsZUNvdW50KGNtc0hBTkRMRSBoSVQ4KTsKK0NNU0FQSSBjbXNJbnQzMk51bWJlciAgIENNU0VYUE9SVCBjbXNJVDhTZXRUYWJsZShjbXNIQU5ETEUgaElUOCwgY21zVUludDMyTnVtYmVyIG5UYWJsZSk7CisKKy8vIFBlcnNpc3RlbmNlCitDTVNBUEkgY21zSEFORExFICAgICAgICBDTVNFWFBPUlQgY21zSVQ4TG9hZEZyb21GaWxlKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCBjaGFyKiBjRmlsZU5hbWUpOworQ01TQVBJIGNtc0hBTkRMRSAgICAgICAgQ01TRVhQT1JUIGNtc0lUOExvYWRGcm9tTWVtKGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBsZW4pOworLy8gQ01TQVBJIGNtc0hBTkRMRSAgICAgICAgQ01TRVhQT1JUIGNtc0lUOExvYWRGcm9tSU9oYW5kbGVyKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNJT0hBTkRMRVIqIGlvKTsKKworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgQ01TRVhQT1JUIGNtc0lUOFNhdmVUb0ZpbGUoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIGNGaWxlTmFtZSk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4U2F2ZVRvTWVtKGNtc0hBTkRMRSBoSVQ4LCB2b2lkICpNZW1QdHIsIGNtc1VJbnQzMk51bWJlciogQnl0ZXNOZWVkZWQpOworCisvLyBQcm9wZXJ0aWVzCitDTVNBUEkgY29uc3QgY2hhciogICAgICBDTVNFWFBPUlQgY21zSVQ4R2V0U2hlZXRUeXBlKGNtc0hBTkRMRSBoSVQ4KTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgIENNU0VYUE9SVCBjbXNJVDhTZXRTaGVldFR5cGUoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIFR5cGUpOworCitDTVNBUEkgY21zQm9vbCAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4U2V0Q29tbWVudChjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY0NvbW1lbnQpOworCitDTVNBUEkgY21zQm9vbCAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4U2V0UHJvcGVydHlTdHIoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIGNQcm9wLCBjb25zdCBjaGFyICpTdHIpOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgQ01TRVhQT1JUIGNtc0lUOFNldFByb3BlcnR5RGJsKGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBjUHJvcCwgY21zRmxvYXQ2NE51bWJlciBWYWwpOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgQ01TRVhQT1JUIGNtc0lUOFNldFByb3BlcnR5SGV4KGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBjUHJvcCwgY21zVUludDMyTnVtYmVyIFZhbCk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4U2V0UHJvcGVydHlNdWx0aShjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogS2V5LCBjb25zdCBjaGFyKiBTdWJLZXksIGNvbnN0IGNoYXIgKkJ1ZmZlcik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4U2V0UHJvcGVydHlVbmNvb2tlZChjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogS2V5LCBjb25zdCBjaGFyKiBCdWZmZXIpOworCisKK0NNU0FQSSBjb25zdCBjaGFyKiAgICAgIENNU0VYUE9SVCBjbXNJVDhHZXRQcm9wZXJ0eShjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY1Byb3ApOworQ01TQVBJIGNtc0Zsb2F0NjROdW1iZXIgQ01TRVhQT1JUIGNtc0lUOEdldFByb3BlcnR5RGJsKGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBjUHJvcCk7CitDTVNBUEkgY29uc3QgY2hhciogICAgICBDTVNFWFBPUlQgY21zSVQ4R2V0UHJvcGVydHlNdWx0aShjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogS2V5LCBjb25zdCBjaGFyICpTdWJLZXkpOworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgQ01TRVhQT1JUIGNtc0lUOEVudW1Qcm9wZXJ0aWVzKGNtc0hBTkRMRSBoSVQ4LCBjaGFyICoqKlByb3BlcnR5TmFtZXMpOworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgQ01TRVhQT1JUIGNtc0lUOEVudW1Qcm9wZXJ0eU11bHRpKGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBjUHJvcCwgY29uc3QgY2hhciAqKipTdWJwcm9wZXJ0eU5hbWVzKTsKKworLy8gRGF0YXNldHMKK0NNU0FQSSBjb25zdCBjaGFyKiAgICAgIENNU0VYUE9SVCBjbXNJVDhHZXREYXRhUm93Q29sKGNtc0hBTkRMRSBoSVQ4LCBpbnQgcm93LCBpbnQgY29sKTsKK0NNU0FQSSBjbXNGbG9hdDY0TnVtYmVyIENNU0VYUE9SVCBjbXNJVDhHZXREYXRhUm93Q29sRGJsKGNtc0hBTkRMRSBoSVQ4LCBpbnQgcm93LCBpbnQgY29sKTsKKworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgQ01TRVhQT1JUIGNtc0lUOFNldERhdGFSb3dDb2woY21zSEFORExFIGhJVDgsIGludCByb3csIGludCBjb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBWYWwpOworCitDTVNBUEkgY21zQm9vbCAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4U2V0RGF0YVJvd0NvbERibChjbXNIQU5ETEUgaElUOCwgaW50IHJvdywgaW50IGNvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgVmFsKTsKKworQ01TQVBJIGNvbnN0IGNoYXIqICAgICAgQ01TRVhQT1JUIGNtc0lUOEdldERhdGEoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIGNQYXRjaCwgY29uc3QgY2hhciogY1NhbXBsZSk7CisKKworQ01TQVBJIGNtc0Zsb2F0NjROdW1iZXIgQ01TRVhQT1JUIGNtc0lUOEdldERhdGFEYmwoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIGNQYXRjaCwgY29uc3QgY2hhciogY1NhbXBsZSk7CisKK0NNU0FQSSBjbXNCb29sICAgICAgICAgIENNU0VYUE9SVCBjbXNJVDhTZXREYXRhKGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBjUGF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjU2FtcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqVmFsKTsKKworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgQ01TRVhQT1JUIGNtc0lUOFNldERhdGFEYmwoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIGNQYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNTYW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIFZhbCk7CisKK0NNU0FQSSBpbnQgICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNJVDhGaW5kRGF0YUZvcm1hdChjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY1NhbXBsZSk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4U2V0RGF0YUZvcm1hdChjbXNIQU5ETEUgaElUOCwgaW50IG4sIGNvbnN0IGNoYXIgKlNhbXBsZSk7CitDTVNBUEkgaW50ICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4RW51bURhdGFGb3JtYXQoY21zSEFORExFIGhJVDgsIGNoYXIgKioqU2FtcGxlTmFtZXMpOworCitDTVNBUEkgY29uc3QgY2hhciogICAgICBDTVNFWFBPUlQgY21zSVQ4R2V0UGF0Y2hOYW1lKGNtc0hBTkRMRSBoSVQ4LCBpbnQgblBhdGNoLCBjaGFyKiBidWZmZXIpOworQ01TQVBJIGludCAgICAgICAgICAgICAgQ01TRVhQT1JUIGNtc0lUOEdldFBhdGNoQnlOYW1lKGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyICpjUGF0Y2gpOworCisvLyBUaGUgTEFCRUwgZXh0ZW5zaW9uCitDTVNBUEkgaW50ICAgICAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4U2V0VGFibGVCeUxhYmVsKGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBjU2V0LCBjb25zdCBjaGFyKiBjRmllbGQsIGNvbnN0IGNoYXIqIEV4cGVjdGVkVHlwZSk7CisKK0NNU0FQSSBjbXNCb29sICAgICAgICAgIENNU0VYUE9SVCBjbXNJVDhTZXRJbmRleENvbHVtbihjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY1NhbXBsZSk7CisKKy8vIEZvcm1hdHRlciBmb3IgZG91YmxlCitDTVNBUEkgdm9pZCAgICAgICAgICAgICBDTVNFWFBPUlQgY21zSVQ4RGVmaW5lRGJsRm9ybWF0KGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBGb3JtYXR0ZXIpOworCisvLyBHYW11dCBib3VuZGFyeSBkZXNjcmlwdGlvbiByb3V0aW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ01TQVBJIGNtc0hBTkRMRSAgICAgICAgQ01TRVhQT1JUIGNtc0dCREFsbG9jKGNtc0NvbnRleHQgQ29udGV4dElEKTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgIENNU0VYUE9SVCBjbXNHQkRGcmVlKGNtc0hBTkRMRSBoR0JEKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgIENNU0VYUE9SVCBjbXNHREJBZGRQb2ludChjbXNIQU5ETEUgaEdCRCwgY29uc3QgY21zQ0lFTGFiKiBMYWIpOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgQ01TRVhQT1JUIGNtc0dEQkNvbXB1dGUoY21zSEFORExFICBoR0RCLCBjbXNVSW50MzJOdW1iZXIgZHdGbGFncyk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICBDTVNFWFBPUlQgY21zR0RCQ2hlY2tQb2ludChjbXNIQU5ETEUgaEdCRCwgY29uc3QgY21zQ0lFTGFiKiBMYWIpOworCisvLyBGZWF0dXJlIGRldGVjdGlvbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBFc3RpbWF0ZSB0aGUgYmxhY2sgcG9pbnQKK0NNU0FQSSBjbXNCb29sICAgICAgICAgIENNU0VYUE9SVCBjbXNEZXRlY3RCbGFja1BvaW50KGNtc0NJRVhZWiogQmxhY2tQb2ludCwgY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgIENNU0VYUE9SVCBjbXNEZXRlY3REZXN0aW5hdGlvbkJsYWNrUG9pbnQoY21zQ0lFWFlaKiBCbGFja1BvaW50LCBjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIEludGVudCwgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpOworCisvLyBFc3RpbWF0ZSB0b3RhbCBhcmVhIGNvdmVyYWdlCitDTVNBUEkgY21zRmxvYXQ2NE51bWJlciBDTVNFWFBPUlQgY21zRGV0ZWN0VEFDKGNtc0hQUk9GSUxFIGhQcm9maWxlKTsKKworCisvLyBQb29yIG1hbidzIGdhbXV0IG1hcHBpbmcKK0NNU0FQSSBjbXNCb29sICAgICAgICAgIENNU0VYUE9SVCBjbXNEZXNhdHVyYXRlTGFiKGNtc0NJRUxhYiogTGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFtYXgsIGRvdWJsZSBhbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGJtYXgsIGRvdWJsZSBibWluKTsKKworI2lmbmRlZiBDTVNfVVNFX0NQUF9BUEkKKyMgICBpZmRlZiBfX2NwbHVzcGx1cworICAgIH0KKyMgICBlbmRpZgorI2VuZGlmCisKKyNkZWZpbmUgX2xjbXMyX0gKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvaW5jbHVkZS9sY21zMl9wbHVnaW4uaCBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L2luY2x1ZGUvbGNtczJfcGx1Z2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM5NWQxZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L2luY2x1ZGUvbGNtczJfcGx1Z2luLmgKQEAgLTAsMCArMSw2MzcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gIExpdHRsZSBDb2xvciBNYW5hZ2VtZW50IFN5c3RlbQorLy8gIENvcHlyaWdodCAoYykgMTk5OC0yMDExIE1hcnRpIE1hcmlhIFNhZ3VlcgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworLy8gYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisvLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUKKy8vIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPCisvLyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorLy8gTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorLy8gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisvLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoaXMgaXMgdGhlIHBsdWctaW4gaGVhZGVyIGZpbGUuIE5vcm1hbCBMaXR0bGVDTVMgY2xpZW50cyBzaG91bGQgbm90IHVzZSBpdC4KKy8vIEl0IGlzIHByb3ZpZGVkIGZvciBwbHVnLWluIHdyaXR0ZXJzIHRoYXQgbWF5IHdhbnQgdG8gYWNjZXNzIHRoZSBzdXBwb3J0CisvLyBmdW5jdGlvbnMgdG8gZG8gbG93IGxldmVsIG9wZXJhdGlvbnMuIEFsbCBwbHVnLWluIHJlbGF0ZWQgc3RydWN0dXJlcworLy8gYXJlIGRlZmluZWQgaGVyZS4gSW5jbHVkaW5nIHRoaXMgZmlsZSBmb3JjZXMgdG8gaW5jbHVkZSB0aGUgc3RhbmRhcmQgQVBJIHRvby4KKworI2lmbmRlZiBfbGNtc19wbHVnaW5fSAorCisvLyBEZWFsIHdpdGggTWljcm9zb2Z0J3MgYXR0ZW1wdCBhdCBkZXByZWNhdGluZyBDIHN0YW5kYXJkIHJ1bnRpbWUgZnVuY3Rpb25zCisjaWZkZWYgX01TQ19WRVIKKyMgICAgaWYgKF9NU0NfVkVSID49IDE0MDApCisjICAgICAgaWZuZGVmIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQorIyAgICAgICAgZGVmaW5lIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQorIyAgICAgIGVuZGlmCisjICAgICAgaWZuZGVmIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjICAgICAgICBkZWZpbmUgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKKyMgICAgICBlbmRpZgorIyAgICBlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgX2xjbXMyX0gKKyNpbmNsdWRlICJsY21zMi5oIgorI2VuZGlmCisKKy8vIFdlIG5lZWQgc29tZSBzdGFuZGFyZCBDIGZ1bmN0aW9ucy4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8bWVtb3J5Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKworI2lmbmRlZiBDTVNfVVNFX0NQUF9BUEkKKyMgICBpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjICAgZW5kaWYKKyNlbmRpZgorCisvLyBWZWN0b3IgJiBNYXRyaXggb3BlcmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBBeGlzIG9mIHRoZSBtYXRyaXgvYXJyYXkuIE5vIHNwZWNpZmljIG1lYW5pbmcgYXQgYWxsLgorI2RlZmluZSBWWCAgICAgIDAKKyNkZWZpbmUgVlkgICAgICAxCisjZGVmaW5lIFZaICAgICAgMgorCisvLyBWZWN0b3JzCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zRmxvYXQ2NE51bWJlciBuWzNdOworCisgICAgfSBjbXNWRUMzOworCisvLyAzeDMgTWF0cml4Cit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zVkVDMyB2WzNdOworCisgICAgfSBjbXNNQVQzOworCitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgIENNU0VYUE9SVCBfY21zVkVDM2luaXQoY21zVkVDMyogciwgY21zRmxvYXQ2NE51bWJlciB4LCBjbXNGbG9hdDY0TnVtYmVyIHksIGNtc0Zsb2F0NjROdW1iZXIgeik7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgIENNU0VYUE9SVCBfY21zVkVDM21pbnVzKGNtc1ZFQzMqIHIsIGNvbnN0IGNtc1ZFQzMqIGEsIGNvbnN0IGNtc1ZFQzMqIGIpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc1ZFQzNjcm9zcyhjbXNWRUMzKiByLCBjb25zdCBjbXNWRUMzKiB1LCBjb25zdCBjbXNWRUMzKiB2KTsKK0NNU0FQSSBjbXNGbG9hdDY0TnVtYmVyICAgQ01TRVhQT1JUIF9jbXNWRUMzZG90KGNvbnN0IGNtc1ZFQzMqIHUsIGNvbnN0IGNtc1ZFQzMqIHYpOworQ01TQVBJIGNtc0Zsb2F0NjROdW1iZXIgICBDTVNFWFBPUlQgX2Ntc1ZFQzNsZW5ndGgoY29uc3QgY21zVkVDMyogYSk7CitDTVNBUEkgY21zRmxvYXQ2NE51bWJlciAgIENNU0VYUE9SVCBfY21zVkVDM2Rpc3RhbmNlKGNvbnN0IGNtc1ZFQzMqIGEsIGNvbnN0IGNtc1ZFQzMqIGIpOworCitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgIENNU0VYUE9SVCBfY21zTUFUM2lkZW50aXR5KGNtc01BVDMqIGEpOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc01BVDNpc0lkZW50aXR5KGNvbnN0IGNtc01BVDMqIGEpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc01BVDNwZXIoY21zTUFUMyogciwgY29uc3QgY21zTUFUMyogYSwgY29uc3QgY21zTUFUMyogYik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgIENNU0VYUE9SVCBfY21zTUFUM2ludmVyc2UoY29uc3QgY21zTUFUMyogYSwgY21zTUFUMyogYik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgIENNU0VYUE9SVCBfY21zTUFUM3NvbHZlKGNtc1ZFQzMqIHgsIGNtc01BVDMqIGEsIGNtc1ZFQzMqIGIpOworQ01TQVBJIHZvaWQgICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc01BVDNldmFsKGNtc1ZFQzMqIHIsIGNvbnN0IGNtc01BVDMqIGEsIGNvbnN0IGNtc1ZFQzMqIHYpOworCisKKy8vIEVycm9yIGxvZ2dpbmcgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ01TQVBJIHZvaWQgICAgICAgICAgICAgICBDTVNFWFBPUlQgIGNtc1NpZ25hbEVycm9yKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgRXJyb3JDb2RlLCBjb25zdCBjaGFyICpFcnJvclRleHQsIC4uLik7CisKKy8vIE1lbW9yeSBtYW5hZ2VtZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ01TQVBJIHZvaWQqICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc01hbGxvYyhjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIHNpemUpOworQ01TQVBJIHZvaWQqICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc01hbGxvY1plcm8oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBzaXplKTsKK0NNU0FQSSB2b2lkKiAgICAgICAgICAgICAgQ01TRVhQT1JUIF9jbXNDYWxsb2MoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBudW0sIGNtc1VJbnQzMk51bWJlciBzaXplKTsKK0NNU0FQSSB2b2lkKiAgICAgICAgICAgICAgQ01TRVhQT1JUIF9jbXNSZWFsbG9jKGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBOZXdTaXplKTsKK0NNU0FQSSB2b2lkICAgICAgICAgICAgICAgQ01TRVhQT1JUIF9jbXNGcmVlKGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkKiBQdHIpOworQ01TQVBJIHZvaWQqICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc0R1cE1lbShjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3Qgdm9pZCogT3JnLCBjbXNVSW50MzJOdW1iZXIgc2l6ZSk7CisKKy8vIEkvTyBoYW5kbGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RydWN0IF9jbXNfaW9faGFuZGxlciB7CisKKyAgICB2b2lkKiBzdHJlYW07ICAgLy8gQXNzb2NpYXRlZCBzdHJlYW0sIHdoaWNoIGlzIGltcGxlbWVudGVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiBtZWRpYS4KKworICAgIGNtc0NvbnRleHQgICAgICAgIENvbnRleHRJRDsKKyAgICBjbXNVSW50MzJOdW1iZXIgICBVc2VkU3BhY2U7CisgICAgY21zVUludDMyTnVtYmVyICAgUmVwb3J0ZWRTaXplOworICAgIGNoYXIgICAgICAgICAgICAgIFBoeXNpY2FsRmlsZVtjbXNNQVhfUEFUSF07CisKKyAgICBjbXNVSW50MzJOdW1iZXIgICAoKiBSZWFkKShzdHJ1Y3QgX2Ntc19pb19oYW5kbGVyKiBpb2hhbmRsZXIsIHZvaWQgKkJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGNvdW50KTsKKyAgICBjbXNCb29sICAgICAgICAgICAoKiBTZWVrKShzdHJ1Y3QgX2Ntc19pb19oYW5kbGVyKiBpb2hhbmRsZXIsIGNtc1VJbnQzMk51bWJlciBvZmZzZXQpOworICAgIGNtc0Jvb2wgICAgICAgICAgICgqIENsb3NlKShzdHJ1Y3QgX2Ntc19pb19oYW5kbGVyKiBpb2hhbmRsZXIpOworICAgIGNtc1VJbnQzMk51bWJlciAgICgqIFRlbGwpKHN0cnVjdCBfY21zX2lvX2hhbmRsZXIqIGlvaGFuZGxlcik7CisgICAgY21zQm9vbCAgICAgICAgICAgKCogV3JpdGUpKHN0cnVjdCBfY21zX2lvX2hhbmRsZXIqIGlvaGFuZGxlciwgY21zVUludDMyTnVtYmVyIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogQnVmZmVyKTsKK307CisKKy8vIEVuZGlhbmVzcyBhZGp1c3QgZnVuY3Rpb25zCitDTVNBUEkgY21zVUludDE2TnVtYmVyICAgQ01TRVhQT1JUICBfY21zQWRqdXN0RW5kaWFuZXNzMTYoY21zVUludDE2TnVtYmVyIFdvcmQpOworQ01TQVBJIGNtc1VJbnQzMk51bWJlciAgIENNU0VYUE9SVCAgX2Ntc0FkanVzdEVuZGlhbmVzczMyKGNtc1VJbnQzMk51bWJlciBWYWx1ZSk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgQ01TRVhQT1JUICBfY21zQWRqdXN0RW5kaWFuZXNzNjQoY21zVUludDY0TnVtYmVyKiBSZXN1bHQsIGNtc1VJbnQ2NE51bWJlciogUVdvcmQpOworCisvLyBIZWxwZXIgSU8gZnVuY3Rpb25zCitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUICBfY21zUmVhZFVJbnQ4TnVtYmVyKGNtc0lPSEFORExFUiogaW8sICBjbXNVSW50OE51bWJlciogbik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUICBfY21zUmVhZFVJbnQxNk51bWJlcihjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MTZOdW1iZXIqIG4pOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCAgX2Ntc1JlYWRVSW50MzJOdW1iZXIoY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgIF9jbXNSZWFkRmxvYXQzMk51bWJlcihjbXNJT0hBTkRMRVIqIGlvLCBjbXNGbG9hdDMyTnVtYmVyKiBuKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgIF9jbXNSZWFkVUludDY0TnVtYmVyKGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQ2NE51bWJlciogbik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUICBfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihjbXNJT0hBTkRMRVIqIGlvLCBjbXNGbG9hdDY0TnVtYmVyKiBuKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgIF9jbXNSZWFkWFlaTnVtYmVyKGNtc0lPSEFORExFUiogaW8sIGNtc0NJRVhZWiogWFlaKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgIF9jbXNSZWFkVUludDE2QXJyYXkoY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyIG4sIGNtc1VJbnQxNk51bWJlciogQXJyYXkpOworCitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUICBfY21zV3JpdGVVSW50OE51bWJlcihjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50OE51bWJlciBuKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgIF9jbXNXcml0ZVVJbnQxNk51bWJlcihjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MTZOdW1iZXIgbik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUICBfY21zV3JpdGVVSW50MzJOdW1iZXIoY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyIG4pOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCAgX2Ntc1dyaXRlRmxvYXQzMk51bWJlcihjbXNJT0hBTkRMRVIqIGlvLCBjbXNGbG9hdDMyTnVtYmVyIG4pOworQ01TQVBJIGNtc0Jvb2wgICAgICAgICAgIENNU0VYUE9SVCAgX2Ntc1dyaXRlVUludDY0TnVtYmVyKGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQ2NE51bWJlciogbik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUICBfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoY21zSU9IQU5ETEVSKiBpbywgY21zRmxvYXQ2NE51bWJlciBuKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICBDTVNFWFBPUlQgIF9jbXNXcml0ZVhZWk51bWJlcihjbXNJT0hBTkRMRVIqIGlvLCBjb25zdCBjbXNDSUVYWVoqIFhZWik7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgQ01TRVhQT1JUICBfY21zV3JpdGVVSW50MTZBcnJheShjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIgbiwgY29uc3QgY21zVUludDE2TnVtYmVyKiBBcnJheSk7CisKKy8vIElDQyBiYXNlIHRhZwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNtc1RhZ1R5cGVTaWduYXR1cmUgIHNpZzsKKyAgICBjbXNJbnQ4TnVtYmVyICAgICAgICByZXNlcnZlZFs0XTsKKworfSBfY21zVGFnQmFzZTsKKworLy8gVHlwZSBiYXNlIGhlbHBlciBmdW5jdGlvbnMKK0NNU0FQSSBjbXNUYWdUeXBlU2lnbmF0dXJlICBDTVNFWFBPUlQgX2Ntc1JlYWRUeXBlQmFzZShjbXNJT0hBTkRMRVIqIGlvKTsKK0NNU0FQSSBjbXNCb29sICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc1dyaXRlVHlwZUJhc2UoY21zSU9IQU5ETEVSKiBpbywgY21zVGFnVHlwZVNpZ25hdHVyZSBzaWcpOworCisvLyBBbGlnbm1lbnQgZnVuY3Rpb25zCitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc1JlYWRBbGlnbm1lbnQoY21zSU9IQU5ETEVSKiBpbyk7CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc1dyaXRlQWxpZ25tZW50KGNtc0lPSEFORExFUiogaW8pOworCisvLyBUbyBkZWFsIHdpdGggdGV4dCBzdHJlYW1zLiAySyBhdCBtb3N0CitDTVNBUEkgY21zQm9vbCAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc0lPUHJpbnRmKGNtc0lPSEFORExFUiogaW8sIGNvbnN0IGNoYXIqIGZybSwgLi4uKTsKKworLy8gRml4ZWQgcG9pbnQgaGVscGVyIGZ1bmN0aW9ucworQ01TQVBJIGNtc0Zsb2F0NjROdW1iZXIgICAgQ01TRVhQT1JUIF9jbXM4Rml4ZWQ4dG9Eb3VibGUoY21zVUludDE2TnVtYmVyIGZpeGVkOCk7CitDTVNBUEkgY21zVUludDE2TnVtYmVyICAgICBDTVNFWFBPUlQgX2Ntc0RvdWJsZVRvOEZpeGVkOChjbXNGbG9hdDY0TnVtYmVyIHZhbCk7CisKK0NNU0FQSSBjbXNGbG9hdDY0TnVtYmVyICAgIENNU0VYUE9SVCBfY21zMTVGaXhlZDE2dG9Eb3VibGUoY21zUzE1Rml4ZWQxNk51bWJlciBmaXgzMik7CitDTVNBUEkgY21zUzE1Rml4ZWQxNk51bWJlciBDTVNFWFBPUlQgX2Ntc0RvdWJsZVRvMTVGaXhlZDE2KGNtc0Zsb2F0NjROdW1iZXIgdik7CisKKy8vIERhdGUvdGltZSBoZWxwZXIgZnVuY3Rpb25zCitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc0VuY29kZURhdGVUaW1lTnVtYmVyKGNtc0RhdGVUaW1lTnVtYmVyICpEZXN0LCBjb25zdCBzdHJ1Y3QgdG0gKlNvdXJjZSk7CitDTVNBUEkgdm9pZCAgICAgICAgICAgICAgICBDTVNFWFBPUlQgX2Ntc0RlY29kZURhdGVUaW1lTnVtYmVyKGNvbnN0IGNtc0RhdGVUaW1lTnVtYmVyICpTb3VyY2UsIHN0cnVjdCB0bSAqRGVzdCk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBTaGFyZWQgY2FsbGJhY2tzIGZvciB1c2VyIGRhdGEKK3R5cGVkZWYgdm9pZCAgICAgKCogX2Ntc0ZyZWVVc2VyRGF0YUZuKShjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCogRGF0YSk7Cit0eXBlZGVmIHZvaWQqICAgICgqIF9jbXNEdXBVc2VyRGF0YUZuKShjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3Qgdm9pZCogRGF0YSk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBQbHVnLWluIGZvdW5kYXRpb24KKyNkZWZpbmUgY21zUGx1Z2luTWFnaWNOdW1iZXIgICAgICAgICAgICAgICAgIDB4NjE2MzcwNzAgICAgIC8vICdhY3BwJworCisjZGVmaW5lIGNtc1BsdWdpbk1lbUhhbmRsZXJTaWcgICAgICAgICAgICAgICAweDZENjU2RDQ4ICAgICAvLyAnbWVtSCcKKyNkZWZpbmUgY21zUGx1Z2luSW50ZXJwb2xhdGlvblNpZyAgICAgICAgICAgIDB4Njk2RTcwNDggICAgIC8vICdpbnBIJworI2RlZmluZSBjbXNQbHVnaW5QYXJhbWV0cmljQ3VydmVTaWcgICAgICAgICAgMHg3MDYxNzI0OCAgICAgLy8gJ3BhckgnCisjZGVmaW5lIGNtc1BsdWdpbkZvcm1hdHRlcnNTaWcgICAgICAgICAgICAgICAweDY2NzI2RDQ4ICAgICAvLyAnZnJtSAorI2RlZmluZSBjbXNQbHVnaW5UYWdUeXBlU2lnICAgICAgICAgICAgICAgICAgMHg3NDc5NzA0OCAgICAgLy8gJ3R5cEgnCisjZGVmaW5lIGNtc1BsdWdpblRhZ1NpZyAgICAgICAgICAgICAgICAgICAgICAweDc0NjE2NzQ4ICAgICAvLyAndGFnSCcKKyNkZWZpbmUgY21zUGx1Z2luUmVuZGVyaW5nSW50ZW50U2lnICAgICAgICAgIDB4Njk2RTc0NDggICAgIC8vICdpbnRIJworI2RlZmluZSBjbXNQbHVnaW5NdWx0aVByb2Nlc3NFbGVtZW50U2lnICAgICAgMHg2RDcwNjU0OCAgICAgLy8gJ21wZUgnCisjZGVmaW5lIGNtc1BsdWdpbk9wdGltaXphdGlvblNpZyAgICAgICAgICAgICAweDZGNzA3NDQ4ICAgICAvLyAnb3B0SCcKKyNkZWZpbmUgY21zUGx1Z2luVHJhbnNmb3JtU2lnICAgICAgICAgICAgICAgIDB4N0E2NjZENDggICAgIC8vICd4Zm1IJworI2RlZmluZSBjbXNQbHVnaW5NdXRleFNpZyAgICAgICAgICAgICAgICAgICAgMHg2RDc0N0E0OCAgICAgLy8gJ210eEgnCisKK3R5cGVkZWYgc3RydWN0IF9jbXNQbHVnaW5CYXNlU3RydWN0IHsKKworICAgICAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgICAgICAgICAgTWFnaWM7ICAgICAgICAgICAgICAgLy8gJ2FjcHAnIHNpZ25hdHVyZQorICAgICAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgICAgICAgICAgRXhwZWN0ZWRWZXJzaW9uOyAgICAgLy8gRXhwZWN0ZWQgdmVyc2lvbiBvZiBMaXR0bGVDTVMKKyAgICAgICAgY21zVUludDMyTnVtYmVyICAgICAgICAgICAgICAgIFR5cGU7ICAgICAgICAgICAgICAgIC8vIFR5cGUgb2YgcGx1Zy1pbgorICAgICAgICBzdHJ1Y3QgX2Ntc1BsdWdpbkJhc2VTdHJ1Y3QqICAgTmV4dDsgICAgICAgICAgICAgICAgLy8gRm9yIG11bHRpcGxlIHBsdWdpbiBkZWZpbml0aW9uLiBOVUxMIGZvciBlbmQgb2YgbGlzdC4KKworfSBjbXNQbHVnaW5CYXNlOworCisvLyBNYXhpbXVtIG51bWJlciBvZiB0eXBlcyBpbiBhIHBsdWdpbiBhcnJheQorI2RlZmluZSBNQVhfVFlQRVNfSU5fTENNU19QTFVHSU4gICAgMjAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIE1lbW9yeSBoYW5kbGVyLiBFYWNoIG5ldyBwbHVnLWluIHR5cGUgcmVwbGFjZXMgY3VycmVudCBiZWhhdmlvdXIKKwordHlwZWRlZiB2b2lkKiAoKiBfY21zTWFsbG9jRm5QdHJUeXBlKShjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIHNpemUpOyAKK3R5cGVkZWYgdm9pZCAgKCogX2Ntc0ZyZWVGblB0clR5cGUpKGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkICpQdHIpOwordHlwZWRlZiB2b2lkKiAoKiBfY21zUmVhbGxvY0ZuUHRyVHlwZSkoY21zQ29udGV4dCBDb250ZXh0SUQsIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIE5ld1NpemUpOworCit0eXBlZGVmIHZvaWQqICgqIF9jbXNNYWxsb1plcm9jRm5QdHJUeXBlKShjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIHNpemUpOyAKK3R5cGVkZWYgdm9pZCogKCogX2Ntc0NhbGxvY0ZuUHRyVHlwZSkoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBudW0sIGNtc1VJbnQzMk51bWJlciBzaXplKTsKK3R5cGVkZWYgdm9pZCogKCogX2Ntc0R1cEZuUHRyVHlwZSkoY21zQ29udGV4dCBDb250ZXh0SUQsIGNvbnN0IHZvaWQqIE9yZywgY21zVUludDMyTnVtYmVyIHNpemUpOworCit0eXBlZGVmIHN0cnVjdCB7CisKKyAgICAgICAgY21zUGx1Z2luQmFzZSBiYXNlOworCisgICAgICAgIC8vIFJlcXVpcmVkCisgICAgICAgIF9jbXNNYWxsb2NGblB0clR5cGUgIE1hbGxvY1B0cjsKKyAgICAgICAgX2Ntc0ZyZWVGblB0clR5cGUgICAgRnJlZVB0cjsKKyAgICAgICAgX2Ntc1JlYWxsb2NGblB0clR5cGUgUmVhbGxvY1B0cjsKKworICAgICAgICAvLyBPcHRpb25hbAorICAgICAgIF9jbXNNYWxsb1plcm9jRm5QdHJUeXBlIE1hbGxvY1plcm9QdHI7CisgICAgICAgX2Ntc0NhbGxvY0ZuUHRyVHlwZSAgICAgQ2FsbG9jUHRyOworICAgICAgIF9jbXNEdXBGblB0clR5cGUgICAgICAgIER1cFB0cjsKKworfSBjbXNQbHVnaW5NZW1IYW5kbGVyOworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBJbnRlcnBvbGF0aW9uLiAxNiBiaXRzIGFuZCBmbG9hdGluZyBwb2ludCB2ZXJzaW9ucy4KK3N0cnVjdCBfY21zX2ludGVycF9zdHJ1YzsKKworLy8gSW50ZXJwb2xhdGlvbiBjYWxsYmFja3MKKworLy8gMTYgYml0cyBmb3J3YXJkIGludGVycG9sYXRpb24uIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgcHJlY2lzaW9uLWxpbWl0ZWQgbGluZWFyIGludGVycG9sYXRpb24KKy8vIGFuZCBpcyBzdXBwb3NlZCB0byBiZSBxdWl0ZSBmYXN0LiBJbXBsZW1lbnRhdGlvbiBtYXkgYmUgdGV0cmFoZWRyYWwgb3IgdHJpbGluZWFyLCBhbmQgcGx1Zy1pbnMgbWF5CisvLyBjaG9vc2UgdG8gaW1wbGVtZW50IGFueSBvdGhlciBpbnRlcnBvbGF0aW9uIGFsZ29yaXRobS4KK3R5cGVkZWYgdm9pZCAoKiBfY21zSW50ZXJwRm4xNikocmVnaXN0ZXIgY29uc3QgY21zVUludDE2TnVtYmVyIElucHV0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRwdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3Qgc3RydWN0IF9jbXNfaW50ZXJwX3N0cnVjKiBwKTsKKworLy8gRmxvYXRpbmcgcG9pbnQgZm9yd2FyZCBpbnRlcnBvbGF0aW9uLiBGdWxsIHByZWNpc2lvbiBpbnRlcnBvbGF0aW9uIHVzaW5nIGZsb2F0cy4gVGhpcyBpcyBub3QgYQorLy8gdGltZSBjcml0aWNhbCBmdW5jdGlvbi4gSW1wbGVtZW50YXRpb24gbWF5IGJlIHRldHJhaGVkcmFsIG9yIHRyaWxpbmVhciwgYW5kIHBsdWctaW5zIG1heQorLy8gY2hvb3NlIHRvIGltcGxlbWVudCBhbnkgb3RoZXIgaW50ZXJwb2xhdGlvbiBhbGdvcml0aG0uCit0eXBlZGVmIHZvaWQgKCogX2Ntc0ludGVycEZuRmxvYXQpKGNtc0Zsb2F0MzJOdW1iZXIgY29uc3QgSW5wdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciBPdXRwdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNfaW50ZXJwX3N0cnVjKiBwKTsKKworCisKKy8vIFRoaXMgdHlwZSBob2xkcyBhIHBvaW50ZXIgdG8gYW4gaW50ZXJwb2xhdG9yIHRoYXQgY2FuIGJlIGVpdGhlciAxNiBiaXRzIG9yIGZsb2F0Cit0eXBlZGVmIHVuaW9uIHsKKyAgICBfY21zSW50ZXJwRm4xNiAgICAgICBMZXJwMTY7ICAgICAgICAgICAgLy8gRm9yd2FyZCBpbnRlcnBvbGF0aW9uIGluIDE2IGJpdHMKKyAgICBfY21zSW50ZXJwRm5GbG9hdCAgICBMZXJwRmxvYXQ7ICAgICAgICAgLy8gRm9yd2FyZCBpbnRlcnBvbGF0aW9uIGluIGZsb2F0aW5nIHBvaW50Cit9IGNtc0ludGVycEZ1bmN0aW9uOworCisvLyBGbGFncyBmb3IgaW50ZXJwb2xhdG9yIHNlbGVjdGlvbgorI2RlZmluZSBDTVNfTEVSUF9GTEFHU18xNkJJVFMgICAgICAgICAgICAgMHgwMDAwICAgICAgICAvLyBUaGUgZGVmYXVsdAorI2RlZmluZSBDTVNfTEVSUF9GTEFHU19GTE9BVCAgICAgICAgICAgICAgMHgwMDAxICAgICAgICAvLyBSZXF1aXJlcyBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24KKyNkZWZpbmUgQ01TX0xFUlBfRkxBR1NfVFJJTElORUFSICAgICAgICAgIDB4MDEwMCAgICAgICAgLy8gSGludCBvbmx5CisKKworI2RlZmluZSBNQVhfSU5QVVRfRElNRU5TSU9OUyA4CisKK3R5cGVkZWYgc3RydWN0IF9jbXNfaW50ZXJwX3N0cnVjIHsgIC8vIFVzZWQgb24gYWxsIGludGVycG9sYXRpb25zLiBTdXBwbGllZCBieSBsY21zMiB3aGVuIGNhbGxpbmcgdGhlIGludGVycG9sYXRpb24gZnVuY3Rpb24KKworICAgIGNtc0NvbnRleHQgQ29udGV4dElEOyAgICAgLy8gVGhlIGNhbGxpbmcgdGhyZWFkCisKKyAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFnczsgIC8vIEtlZXAgb3JpZ2luYWwgZmxhZ3MKKyAgICBjbXNVSW50MzJOdW1iZXIgbklucHV0czsgIC8vICE9IDEgb25seSBpbiAzRCBpbnRlcnBvbGF0aW9uCisgICAgY21zVUludDMyTnVtYmVyIG5PdXRwdXRzOyAvLyAhPSAxIG9ubHkgaW4gM0QgaW50ZXJwb2xhdGlvbgorCisgICAgY21zVUludDMyTnVtYmVyIG5TYW1wbGVzW01BWF9JTlBVVF9ESU1FTlNJT05TXTsgIC8vIFZhbGlkIG9uIGFsbCBraW5kcyBvZiB0YWJsZXMKKyAgICBjbXNVSW50MzJOdW1iZXIgRG9tYWluW01BWF9JTlBVVF9ESU1FTlNJT05TXTsgICAgLy8gRG9tYWluID0gblNhbXBsZXMgLSAxCisKKyAgICBjbXNVSW50MzJOdW1iZXIgb3B0YVtNQVhfSU5QVVRfRElNRU5TSU9OU107ICAgICAvLyBPcHRpbWl6YXRpb24gZm9yIDNEIENMVVQuIFRoaXMgaXMgdGhlIG51bWJlciBvZiBub2RlcyBwcmVtdWx0aXBsaWVkIGZvciBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGltZW5zaW9uLiBGb3IgZXhhbXBsZSwgaW4gNyBub2RlcywgNywgN14yICwgN14zLCA3XjQsIGV0Yy4gT24gbm9uLXJlZ3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYW1wbGluZ3MgbWF5IHZhcnkgYWNjb3JkaW5nIG9mIHRoZSBudW1iZXIgb2Ygbm9kZXMgZm9yIGVhY2ggZGltZW5zaW9uLgorCisgICAgY29uc3Qgdm9pZCAqVGFibGU7ICAgICAgICAgICAgICAgIC8vIFBvaW50cyB0byB0aGUgYWN0dWFsIGludGVycG9sYXRpb24gdGFibGUKKyAgICBjbXNJbnRlcnBGdW5jdGlvbiBJbnRlcnBvbGF0aW9uOyAgLy8gUG9pbnRzIHRvIHRoZSBmdW5jdGlvbiB0byBkbyB0aGUgaW50ZXJwb2xhdGlvbgorCisgfSBjbXNJbnRlcnBQYXJhbXM7CisKKy8vIEludGVycG9sYXRvcnMgZmFjdG9yeQordHlwZWRlZiBjbXNJbnRlcnBGdW5jdGlvbiAoKiBjbXNJbnRlcnBGbkZhY3RvcnkpKGNtc1VJbnQzMk51bWJlciBuSW5wdXRDaGFubmVscywgY21zVUludDMyTnVtYmVyIG5PdXRwdXRDaGFubmVscywgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpOworCisvLyBUaGUgcGx1Zy1pbgordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNtc1BsdWdpbkJhc2UgYmFzZTsKKworICAgIC8vIFBvaW50cyB0byBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gd2hpY2ggaW1wbGVtZW50cyB0aGUgZmFjdG9yeQorICAgIGNtc0ludGVycEZuRmFjdG9yeSBJbnRlcnBvbGF0b3JzRmFjdG9yeTsKKworfSBjbXNQbHVnaW5JbnRlcnBvbGF0aW9uOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUGFyYW1ldHJpYyBjdXJ2ZXMuIEEgbmVnYXRpdmUgdHlwZSBtZWFucyBzYW1lIGZ1bmN0aW9uIGJ1dCBhbmFseXRpY2FsbHkgaW52ZXJ0ZWQuIE1heC4gbnVtYmVyIG9mIHBhcmFtcyBpcyAxMAorCisvLyBFdmFsdWF0b3IgY2FsbGJhY2sgZm9yIHVzZXItc3VwbGllZCBwYXJhbWV0cmljIGN1cnZlcy4gTWF5IGltcGxlbWVudCBtb3JlIHRoYW4gb25lIHR5cGUKK3R5cGVkZWYgIGNtc0Zsb2F0NjROdW1iZXIgKCogY21zUGFyYW1ldHJpY0N1cnZlRXZhbHVhdG9yKShjbXNJbnQzMk51bWJlciBUeXBlLCBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIFBhcmFtc1sxMF0sIGNtc0Zsb2F0NjROdW1iZXIgUik7CisKKy8vIFBsdWctaW4gbWF5IGltcGxlbWVudCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBhcmFtZXRyaWMgY3VydmVzCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zUGx1Z2luQmFzZSBiYXNlOworCisgICAgY21zVUludDMyTnVtYmVyIG5GdW5jdGlvbnM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE51bWJlciBvZiBzdXBwb3J0ZWQgZnVuY3Rpb25zCisgICAgY21zVUludDMyTnVtYmVyIEZ1bmN0aW9uVHlwZXNbTUFYX1RZUEVTX0lOX0xDTVNfUExVR0lOXTsgICAgICAgIC8vIFRoZSBpZGVudGlmaWNhdGlvbiB0eXBlcworICAgIGNtc1VJbnQzMk51bWJlciBQYXJhbWV0ZXJDb3VudFtNQVhfVFlQRVNfSU5fTENNU19QTFVHSU5dOyAgICAgICAvLyBOdW1iZXIgb2YgcGFyYW1ldGVycyBmb3IgZWFjaCBmdW5jdGlvbgorCisgICAgY21zUGFyYW1ldHJpY0N1cnZlRXZhbHVhdG9yICAgIEV2YWx1YXRvcjsgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBldmFsdWF0b3IKKworfSBjbXNQbHVnaW5QYXJhbWV0cmljQ3VydmVzOworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEZvcm1hdHRlcnMuIFRoaXMgcGx1Zy1pbiBhZGRzIG5ldyBoYW5kbGVycywgcmVwbGFjaW5nIHRoZW0gaWYgdGhleSBhbHJlYWR5IGV4aXN0LiBGb3JtYXR0ZXJzIGRlYWxpbmcgd2l0aAorLy8gY21zRmxvYXQzMk51bWJlciAoYnBzID0gNCkgb3IgZG91YmxlIChicHMgPSAwKSB0eXBlcyBhcmUgcmVxdWVzdGVkIHZpYSBGb3JtYXR0ZXJGbG9hdCBjYWxsYmFjay4gT3RoZXJzIGNvbWUgYWNyb3NzCisvLyBGb3JtYXR0ZXIxNiBjYWxsYmFjaworCitzdHJ1Y3QgX2Ntc3RyYW5zZm9ybV9zdHJ1Y3Q7CisKK3R5cGVkZWYgY21zVUludDhOdW1iZXIqICgqIGNtc0Zvcm1hdHRlcjE2KShyZWdpc3RlciBzdHJ1Y3QgX2Ntc3RyYW5zZm9ybV9zdHJ1Y3QqIENNTWNhcmdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBWYWx1ZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogIEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgIFN0cmlkZSk7CisKK3R5cGVkZWYgY21zVUludDhOdW1iZXIqICgqIGNtc0Zvcm1hdHRlckZsb2F0KShzdHJ1Y3QgX2Ntc3RyYW5zZm9ybV9zdHJ1Y3QqIENNTWNhcmdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgVmFsdWVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDhOdW1iZXIqICBCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICBTdHJpZGUpOworCisvLyBUaGlzIHR5cGUgaG9sZHMgYSBwb2ludGVyIHRvIGEgZm9ybWF0dGVyIHRoYXQgY2FuIGJlIGVpdGhlciAxNiBiaXRzIG9yIGNtc0Zsb2F0MzJOdW1iZXIKK3R5cGVkZWYgdW5pb24geworICAgIGNtc0Zvcm1hdHRlcjE2ICAgIEZtdDE2OworICAgIGNtc0Zvcm1hdHRlckZsb2F0IEZtdEZsb2F0OworCit9IGNtc0Zvcm1hdHRlcjsKKworI2RlZmluZSBDTVNfUEFDS19GTEFHU18xNkJJVFMgICAgICAgMHgwMDAwCisjZGVmaW5lIENNU19QQUNLX0ZMQUdTX0ZMT0FUICAgICAgICAweDAwMDEKKwordHlwZWRlZiBlbnVtIHsgY21zRm9ybWF0dGVySW5wdXQ9MCwgY21zRm9ybWF0dGVyT3V0cHV0PTEgfSBjbXNGb3JtYXR0ZXJEaXJlY3Rpb247CisKK3R5cGVkZWYgY21zRm9ybWF0dGVyICgqIGNtc0Zvcm1hdHRlckZhY3RvcnkpKGNtc1VJbnQzMk51bWJlciBUeXBlLCAgICAgICAgICAgLy8gU3BlY2lmaWMgdHlwZSwgaS5lLiBUWVBFX1JHQl84CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGb3JtYXR0ZXJEaXJlY3Rpb24gRGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpOyAgICAgIC8vIHByZWNpc2lvbgorCisvLyBQbHVnLWluIG1heSBpbXBsZW1lbnQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBmb3JtYXR0ZXJzCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zUGx1Z2luQmFzZSAgICAgICAgICBiYXNlOworICAgIGNtc0Zvcm1hdHRlckZhY3RvcnkgICAgRm9ybWF0dGVyc0ZhY3Rvcnk7CisKK30gY21zUGx1Z2luRm9ybWF0dGVyczsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFRhZyB0eXBlIGhhbmRsZXIuIEVhY2ggdHlwZSBpcyBmcmVlIHRvIHJldHVybiBhbnl0aGluZyBpdCB3YW50cywgYW5kIGl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8KKy8vIGtub3cgaW4gYWR2YW5jZSB3aGF0IGlzIHRoZSB0eXBlIGNvbnRhaW5lZCBpbiB0aGUgdGFnLgordHlwZWRlZiBzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QgeworCisgICAgICAgIGNtc1RhZ1R5cGVTaWduYXR1cmUgU2lnbmF0dXJlOyAgICAgLy8gVGhlIHNpZ25hdHVyZSBvZiB0aGUgdHlwZQorCisgICAgICAgIC8vIEFsbG9jYXRlcyBhbmQgcmVhZHMgaXRlbXMKKyAgICAgICAgdm9pZCAqICAgKCogUmVhZFB0cikoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNJT0hBTkRMRVIqICAgICAgaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciogICBuSXRlbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgICBTaXplT2ZUYWcpOworCisgICAgICAgIC8vIFdyaXRlcyBuIEl0ZW1zCisgICAgICAgIGNtc0Jvb2wgICgqIFdyaXRlUHRyKShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNJT0hBTkRMRVIqICAgICBpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgIFB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgIG5JdGVtcyk7CisKKyAgICAgICAgLy8gRHVwbGljYXRlIGFuIGl0ZW0gb3IgYXJyYXkgb2YgaXRlbXMKKyAgICAgICAgdm9pZCogICAoKiBEdXBQdHIpKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKlB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBuKTsKKworICAgICAgICAvLyBGcmVlIGFsbCByZXNvdXJjZXMKKyAgICAgICAgdm9pZCAgICAoKiBGcmVlUHRyKShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqUHRyKTsKKworICAgICAgICAvLyBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgdXNlZCBieSB0aGUgY2FsbGluZyB0aHJlYWQKKyAgICAgICAgY21zQ29udGV4dCAgICAgICBDb250ZXh0SUQ7CisgICAgICAgIGNtc1VJbnQzMk51bWJlciAgSUNDVmVyc2lvbjsKKworfSBjbXNUYWdUeXBlSGFuZGxlcjsKKworLy8gRWFjaCBwbHVnLWluIGltcGxlbWVudHMgYSBzaW5nbGUgdHlwZQordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBjbXNQbHVnaW5CYXNlICAgICAgYmFzZTsKKyAgICAgICAgY21zVGFnVHlwZUhhbmRsZXIgIEhhbmRsZXI7CisKK30gY21zUGx1Z2luVGFnVHlwZTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFRoaXMgaXMgdGhlIHRhZyBwbHVnaW4sIHdoaWNoIGlkZW50aWZpZXMgdGFncy4gRm9yIHdyaXRpbmcsIGEgcG9pbnRlciB0byBmdW5jdGlvbiBpcyBwcm92aWRlZC4KKy8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGUgZGVzaXJlZCB0eXBlIGZvciB0aGlzIHRhZywgZ2l2ZW4gdGhlIHZlcnNpb24gb2YgcHJvZmlsZQorLy8gYW5kIHRoZSBkYXRhIGJlaW5nIHNlcmlhbGl6ZWQuCit0eXBlZGVmIHN0cnVjdCB7CisKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgIEVsZW1Db3VudDsgICAgICAgICAgLy8gSWYgdGhpcyB0YWcgbmVlZHMgYW4gYXJyYXksIGhvdyBtYW55IGVsZW1lbnRzIHNob3VsZCBrZWVwCisKKyAgICAvLyBGb3IgcmVhZGluZy4KKyAgICBjbXNVSW50MzJOdW1iZXIgICAgIG5TdXBwb3J0ZWRUeXBlczsgICAgLy8gSW4gaG93IG1hbnkgdHlwZXMgdGhpcyB0YWcgY2FuIGNvbWUgKE1BWF9UWVBFU19JTl9MQ01TX1BMVUdJTiBtYXhpbXVtKQorICAgIGNtc1RhZ1R5cGVTaWduYXR1cmUgU3VwcG9ydGVkVHlwZXNbTUFYX1RZUEVTX0lOX0xDTVNfUExVR0lOXTsKKworICAgIC8vIEZvciB3cml0dGluZworICAgIGNtc1RhZ1R5cGVTaWduYXR1cmUgKCogRGVjaWRlVHlwZSkoY21zRmxvYXQ2NE51bWJlciBJQ0NWZXJzaW9uLCBjb25zdCB2b2lkICpEYXRhKTsKKworfSBjbXNUYWdEZXNjcmlwdG9yOworCisvLyBQbHVnLWluIGltcGxlbWVudHMgYSBzaW5nbGUgdGFnCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zUGx1Z2luQmFzZSAgICBiYXNlOworCisgICAgY21zVGFnU2lnbmF0dXJlICBTaWduYXR1cmU7CisgICAgY21zVGFnRGVzY3JpcHRvciBEZXNjcmlwdG9yOworCit9IGNtc1BsdWdpblRhZzsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEN1c3RvbSBpbnRlbnRzLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBqb2luIGFsbCBwcm9maWxlcyBzcGVjaWZpZWQgaW4gdGhlIGFycmF5IGluCisvLyBhIHNpbmdsZSBMVVQuIEFueSBjdXN0b20gaW50ZW50IGluIHRoZSBjaGFpbiByZWRpcmVjdHMgdG8gY3VzdG9tIGZ1bmN0aW9uLiBJZiBtb3JlIHRoYW4KKy8vIG9uZSBjdXN0b20gaW50ZW50IGlzIGZvdW5kLCB0aGUgb25lIGxvY2F0ZWQgZmlyc3QgaXMgaW52b2tlZC4gVXN1YWxseSB1c2VycyBzaG91bGQgdXNlIG9ubHkgb25lCisvLyBjdXN0b20gaW50ZW50LCBzbyBtaXhpbmcgY3VzdG9tIGludGVudHMgaW4gc2FtZSBtdWx0aXByb2ZpbGUgdHJhbnNmb3JtIGlzIG5vdCBzdXBwb3J0ZWQuCisKK3R5cGVkZWYgY21zUGlwZWxpbmUqICgqIGNtc0ludGVudEZuKSggY21zQ29udGV4dCAgICAgICBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgblByb2ZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgIEludGVudHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgICAgICBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zQm9vbCAgICAgICAgICBCUENbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uU3RhdGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgZHdGbGFncyk7CisKKworLy8gRWFjaCBwbHVnLWluIGRlZmluZXMgYSBzaW5nbGUgaW50ZW50IG51bWJlci4KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjbXNQbHVnaW5CYXNlICAgICBiYXNlOworICAgIGNtc1VJbnQzMk51bWJlciAgIEludGVudDsKKyAgICBjbXNJbnRlbnRGbiAgICAgICBMaW5rOworICAgIGNoYXIgICAgICAgICAgICAgIERlc2NyaXB0aW9uWzI1Nl07CisKK30gY21zUGx1Z2luUmVuZGVyaW5nSW50ZW50OworCisKKy8vIFRoZSBkZWZhdWx0IElDQyBpbnRlbnRzIChwZXJjZXB0dWFsLCBzYXR1cmF0aW9uLCByZWwuY29sIGFuZCBhYnMuY29sKQorQ01TQVBJIGNtc1BpcGVsaW5lKiAgQ01TRVhQT1JUIF9jbXNEZWZhdWx0SUNDaW50ZW50cyhjbXNDb250ZXh0ICAgICAgIENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICBuUHJvZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgSW50ZW50c1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSAgICAgIGhQcm9maWxlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNCb29sICAgICAgICAgIEJQQ1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEFkYXB0YXRpb25TdGF0ZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICBkd0ZsYWdzKTsKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUGlwZWxpbmVzLCBNdWx0aSBQcm9jZXNzIEVsZW1lbnRzLgorCit0eXBlZGVmIHZvaWQgKCogX2Ntc1N0YWdlRXZhbEZuKSAgICAgKGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgSW5bXSwgY21zRmxvYXQzMk51bWJlciBPdXRbXSwgY29uc3QgY21zU3RhZ2UqIG1wZSk7Cit0eXBlZGVmIHZvaWQqKCogX2Ntc1N0YWdlRHVwRWxlbUZuKSAgKGNtc1N0YWdlKiBtcGUpOwordHlwZWRlZiB2b2lkICgqIF9jbXNTdGFnZUZyZWVFbGVtRm4pIChjbXNTdGFnZSogbXBlKTsKKworCisvLyBUaGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBhIGdlbmVyaWMgTVBFCitDTVNBUEkgY21zU3RhZ2UqIENNU0VYUE9SVCBfY21zU3RhZ2VBbGxvY1BsYWNlaG9sZGVyKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNTdGFnZVNpZ25hdHVyZSAgICAgVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICAgICAgIElucHV0Q2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgICAgICBPdXRwdXRDaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Ntc1N0YWdlRXZhbEZuICAgICAgIEV2YWxQdHIsICAgICAgICAgICAgLy8gUG9pbnRzIHRvIGZuIHRoYXQgZXZhbHVhdGVzIHRoZSBlbGVtZW50IChhbHdheXMgaW4gZmxvYXRpbmcgcG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbXNTdGFnZUR1cEVsZW1GbiAgICBEdXBFbGVtUHRyLCAgICAgICAgIC8vIFBvaW50cyB0byBhIGZuIHRoYXQgZHVwbGljYXRlcyB0aGUgc3RhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Ntc1N0YWdlRnJlZUVsZW1GbiAgIEZyZWVQdHIsICAgICAgICAgICAgLy8gUG9pbnRzIHRvIGEgZm4gdGhhdCBzZXRzIHRoZSBlbGVtZW50IGZyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgICAgICAgIERhdGEpOyAgICAgICAgICAgICAgLy8gQSBnZW5lcmljIHBvaW50ZXIgdG8gd2hhdGV2ZXIgbWVtb3J5IG5lZWRlZCBieSB0aGUgZWxlbWVudAordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgY21zUGx1Z2luQmFzZSAgICAgYmFzZTsKKyAgICAgIGNtc1RhZ1R5cGVIYW5kbGVyIEhhbmRsZXI7CisKK30gIGNtc1BsdWdpbk11bHRpUHJvY2Vzc0VsZW1lbnQ7CisKKworLy8gRGF0YSBrZXB0IGluICJFbGVtZW50IiBtZW1iZXIgb2YgY21zU3RhZ2UKKworLy8gQ3VydmVzCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zVUludDMyTnVtYmVyIG5DdXJ2ZXM7CisgICAgY21zVG9uZUN1cnZlKiogIFRoZUN1cnZlczsKKworfSBfY21zU3RhZ2VUb25lQ3VydmVzRGF0YTsKKworLy8gTWF0cml4Cit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zRmxvYXQ2NE51bWJlciogIERvdWJsZTsgICAgICAgICAgLy8gZmxvYXRpbmcgcG9pbnQgZm9yIHRoZSBtYXRyaXgKKyAgICBjbXNGbG9hdDY0TnVtYmVyKiAgT2Zmc2V0OyAgICAgICAgICAvLyBUaGUgb2Zmc2V0CisKK30gX2Ntc1N0YWdlTWF0cml4RGF0YTsKKworLy8gQ0xVVAordHlwZWRlZiBzdHJ1Y3QgeworCisgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FuIGhhdmUgb25seSBvbmUgb2YgYm90aCByZXByZXNlbnRhdGlvbnMgYXQgc2FtZSB0aW1lCisgICAgICAgIGNtc1VJbnQxNk51bWJlciogIFQ7ICAgICAgLy8gUG9pbnRzIHRvIHRoZSB0YWJsZSAxNiBiaXRzIHRhYmxlCisgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIqIFRGbG9hdDsgLy8gUG9pbnRzIHRvIHRoZSBjbXNGbG9hdDMyTnVtYmVyIHRhYmxlCisKKyAgICB9IFRhYjsKKworICAgIGNtc0ludGVycFBhcmFtcyogUGFyYW1zOworICAgIGNtc1VJbnQzMk51bWJlciAgbkVudHJpZXM7CisgICAgY21zQm9vbCAgICAgICAgICBIYXNGbG9hdFZhbHVlczsKKworfSBfY21zU3RhZ2VDTHV0RGF0YTsKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIE9wdGltaXphdGlvbi4gVXNpbmcgdGhpcyBwbHVnLWluLCBhZGRpdGlvbmFsIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzIG1heSBiZSBpbXBsZW1lbnRlZC4KKy8vIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIFRSVUUgaWYgYW55IG9wdGltaXphdGlvbiBpcyBkb25lIG9uIHRoZSBMVVQsIHRoaXMgdGVybWluYXRlcworLy8gdGhlIG9wdGltaXphdGlvbiAgc2VhcmNoLiBPciBGQUxTRSBpZiBpdCBpcyB1bmFibGUgdG8gb3B0aW1pemUgYW5kIHdhbnQgdG8gZ2l2ZSBhIGNoYW5jZQorLy8gdG8gdGhlIHJlc3Qgb2Ygb3B0aW1pemVycy4KKwordHlwZWRlZiB2b2lkICAgICAoKiBfY21zT1BUZXZhbDE2Rm4pKHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCB2b2lkKiBEYXRhKTsKKworCit0eXBlZGVmIGNtc0Jvb2wgICgqIF9jbXNPUFRvcHRpbWl6ZUZuKShjbXNQaXBlbGluZSoqIEx1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyKiBJbnB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciogT3V0cHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyKiBkd0ZsYWdzKTsKKworLy8gVGhpcyBmdW5jdGlvbiBtYXkgYmUgdXNlZCB0byBzZXQgdGhlIG9wdGlvbmFsIGV2YWx1YXRvciBhbmQgYSBibG9jayBvZiBwcml2YXRlIGRhdGEuIElmIHByaXZhdGUgZGF0YSBpcyBiZWluZyB1c2VkLCBhbiBvcHRpb25hbAorLy8gZHVwbGljYXRvciBhbmQgZnJlZSBmdW5jdGlvbnMgc2hvdWxkIGFsc28gYmUgc3BlY2lmaWVkIGluIG9yZGVyIHRvIGR1cGxpY2F0ZSB0aGUgTFVUIGNvbnN0cnVjdC4gVXNlIE5VTEwgdG8gaW5oaWJpdCBzdWNoIGZ1bmN0aW9uYWxpdHkuCisKK0NNU0FQSSB2b2lkIENNU0VYUE9SVCBfY21zUGlwZWxpbmVTZXRPcHRpbWl6YXRpb25QYXJhbWV0ZXJzKGNtc1BpcGVsaW5lKiBMdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbXNPUFRldmFsMTZGbiBFdmFsMTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIFByaXZhdGVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY21zRnJlZVVzZXJEYXRhRm4gRnJlZVByaXZhdGVEYXRhRm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbXNEdXBVc2VyRGF0YUZuIER1cFByaXZhdGVEYXRhRm4pOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgICBjbXNQbHVnaW5CYXNlICAgICBiYXNlOworCisgICAgICAvLyBPcHRpbWl6ZSBlbnRyeSBwb2ludAorICAgICAgX2Ntc09QVG9wdGltaXplRm4gIE9wdGltaXplUHRyOworCit9ICBjbXNQbHVnaW5PcHRpbWl6YXRpb247CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRnVsbCB4Zm9ybQordHlwZWRlZiB2b2lkICAgICAoKiBfY21zVHJhbnNmb3JtRm4pKHN0cnVjdCBfY21zdHJhbnNmb3JtX3N0cnVjdCAqQ01NY2FyZ28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogSW5wdXRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogT3V0cHV0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpOworCit0eXBlZGVmIGNtc0Jvb2wgICgqIF9jbXNUcmFuc2Zvcm1GYWN0b3J5KShfY21zVHJhbnNmb3JtRm4qIHhmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogVXNlckRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbXNGcmVlVXNlckRhdGFGbiogRnJlZVByaXZhdGVEYXRhRm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1BpcGVsaW5lKiogTHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIqIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIqIE91dHB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyKiBkd0ZsYWdzKTsKKworCisvLyBSZXRyaWV2ZSB1c2VyIGRhdGEgYXMgc3BlY2lmaWVkIGJ5IHRoZSBmYWN0b3J5CitDTVNBUEkgdm9pZCAgIENNU0VYUE9SVCBfY21zU2V0VHJhbnNmb3JtVXNlckRhdGEoc3RydWN0IF9jbXN0cmFuc2Zvcm1fc3RydWN0ICpDTU1jYXJnbywgdm9pZCogcHRyLCBfY21zRnJlZVVzZXJEYXRhRm4gRnJlZVByaXZhdGVEYXRhRm4pOworQ01TQVBJIHZvaWQgKiBDTVNFWFBPUlQgX2Ntc0dldFRyYW5zZm9ybVVzZXJEYXRhKHN0cnVjdCBfY21zdHJhbnNmb3JtX3N0cnVjdCAqQ01NY2FyZ28pOworCisKKy8vIFJldHJpZXZlIGZvcm1hdHRlcnMKK0NNU0FQSSB2b2lkICAgQ01TRVhQT1JUIF9jbXNHZXRUcmFuc2Zvcm1Gb3JtYXR0ZXJzMTYgICAoc3RydWN0IF9jbXN0cmFuc2Zvcm1fc3RydWN0ICpDTU1jYXJnbywgY21zRm9ybWF0dGVyMTYqIEZyb21JbnB1dCwgY21zRm9ybWF0dGVyMTYqIFRvT3V0cHV0KTsKK0NNU0FQSSB2b2lkICAgQ01TRVhQT1JUIF9jbXNHZXRUcmFuc2Zvcm1Gb3JtYXR0ZXJzRmxvYXQoc3RydWN0IF9jbXN0cmFuc2Zvcm1fc3RydWN0ICpDTU1jYXJnbywgY21zRm9ybWF0dGVyRmxvYXQqIEZyb21JbnB1dCwgY21zRm9ybWF0dGVyRmxvYXQqIFRvT3V0cHV0KTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgY21zUGx1Z2luQmFzZSAgICAgYmFzZTsKKworICAgICAgLy8gVHJhbnNmb3JtIGVudHJ5IHBvaW50CisgICAgICBfY21zVHJhbnNmb3JtRmFjdG9yeSAgRmFjdG9yeTsKKworfSAgY21zUGx1Z2luVHJhbnNmb3JtOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIE11dGV4IAorCit0eXBlZGVmIHZvaWQqICAgICgqIF9jbXNDcmVhdGVNdXRleEZuUHRyVHlwZSkoY21zQ29udGV4dCBDb250ZXh0SUQpOwordHlwZWRlZiB2b2lkICAgICAoKiBfY21zRGVzdHJveU11dGV4Rm5QdHJUeXBlKShjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCogbXR4KTsKK3R5cGVkZWYgY21zQm9vbCAgKCogX2Ntc0xvY2tNdXRleEZuUHRyVHlwZSkoY21zQ29udGV4dCBDb250ZXh0SUQsIHZvaWQqIG10eCk7Cit0eXBlZGVmIHZvaWQgICAgICgqIF9jbXNVbmxvY2tNdXRleEZuUHRyVHlwZSkoY21zQ29udGV4dCBDb250ZXh0SUQsIHZvaWQqIG10eCk7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICAgIGNtc1BsdWdpbkJhc2UgICAgIGJhc2U7CisKKyAgICAgX2Ntc0NyZWF0ZU11dGV4Rm5QdHJUeXBlICBDcmVhdGVNdXRleFB0cjsKKyAgICAgX2Ntc0Rlc3Ryb3lNdXRleEZuUHRyVHlwZSBEZXN0cm95TXV0ZXhQdHI7CisgICAgIF9jbXNMb2NrTXV0ZXhGblB0clR5cGUgICAgTG9ja011dGV4UHRyOworICAgICBfY21zVW5sb2NrTXV0ZXhGblB0clR5cGUgIFVubG9ja011dGV4UHRyOworCit9ICBjbXNQbHVnaW5NdXRleDsKKworQ01TQVBJIHZvaWQqICAgQ01TRVhQT1JUIF9jbXNDcmVhdGVNdXRleChjbXNDb250ZXh0IENvbnRleHRJRCk7CitDTVNBUEkgdm9pZCAgICBDTVNFWFBPUlQgX2Ntc0Rlc3Ryb3lNdXRleChjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCogbXR4KTsKK0NNU0FQSSBjbXNCb29sIENNU0VYUE9SVCBfY21zTG9ja011dGV4KGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkKiBtdHgpOworQ01TQVBJIHZvaWQgICAgQ01TRVhQT1JUIF9jbXNVbmxvY2tNdXRleChjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCogbXR4KTsKKworCisjaWZuZGVmIENNU19VU0VfQ1BQX0FQSQorIyAgIGlmZGVmIF9fY3BsdXNwbHVzCisgICAgfQorIyAgIGVuZGlmCisjZW5kaWYKKworI2RlZmluZSBfbGNtc19wbHVnaW5fSAorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zY2FtMDIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNjYW0wMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkODc0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zY2FtMDIuYwpAQCAtMCwwICsxLDQ4NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworCisjaW5jbHVkZSAibGNtczJfaW50ZXJuYWwuaCIKKworLy8gQ0lFQ0FNIDAyIGFwcGVhcmFuY2UgbW9kZWwuIE1hbnkgdGhhbmtzIHRvIEpvcmRpIFZpbGFyIGZvciB0aGUgZGVidWdnaW5nLgorCisvLyAtLS0tLS0tLS0tIEltcGxlbWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3R5cGVkZWYgc3RydWN0ICB7CisKKyAgICBjbXNGbG9hdDY0TnVtYmVyIFhZWlszXTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIFJHQlszXTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIFJHQmNbM107CisgICAgY21zRmxvYXQ2NE51bWJlciBSR0JwWzNdOworICAgIGNtc0Zsb2F0NjROdW1iZXIgUkdCcGFbM107CisgICAgY21zRmxvYXQ2NE51bWJlciBhLCBiLCBoLCBlLCBILCBBLCBKLCBRLCBzLCB0LCBDLCBNOworICAgIGNtc0Zsb2F0NjROdW1iZXIgYWJDWzJdOworICAgIGNtc0Zsb2F0NjROdW1iZXIgYWJzWzJdOworICAgIGNtc0Zsb2F0NjROdW1iZXIgYWJNWzJdOworCit9IENBTTAyQ09MT1I7CisKK3R5cGVkZWYgc3RydWN0ICB7CisKKyAgICBDQU0wMkNPTE9SIGFkb3B0ZWRXaGl0ZTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIExBLCBZYjsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIEYsIGMsIE5jOworICAgIGNtc1VJbnQzMk51bWJlciBzdXJyb3VuZDsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIG4sIE5iYiwgTmNiLCB6LCBGTCwgRDsKKworICAgIGNtc0NvbnRleHQgQ29udGV4dElEOworCit9IGNtc0NJRUNBTTAyOworCisKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBjb21wdXRlX24oY21zQ0lFQ0FNMDIqIHBNb2QpCit7CisgICAgcmV0dXJuIChwTW9kIC0+IFliIC8gcE1vZCAtPiBhZG9wdGVkV2hpdGUuWFlaWzFdKTsKK30KKworc3RhdGljCitjbXNGbG9hdDY0TnVtYmVyIGNvbXB1dGVfeihjbXNDSUVDQU0wMiogcE1vZCkKK3sKKyAgICByZXR1cm4gKDEuNDggKyBwb3cocE1vZCAtPiBuLCAwLjUpKTsKK30KKworc3RhdGljCitjbXNGbG9hdDY0TnVtYmVyIGNvbXB1dGVOYmIoY21zQ0lFQ0FNMDIqIHBNb2QpCit7CisgICAgcmV0dXJuICgwLjcyNSAqIHBvdygoMS4wIC8gcE1vZCAtPiBuKSwgMC4yKSk7Cit9CisKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBjb21wdXRlRkwoY21zQ0lFQ0FNMDIqIHBNb2QpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciBrLCBGTDsKKworICAgIGsgPSAxLjAgLyAoKDUuMCAqIHBNb2QtPkxBKSArIDEuMCk7CisgICAgRkwgPSAwLjIgKiBwb3coaywgNC4wKSAqICg1LjAgKiBwTW9kLT5MQSkgKyAwLjEgKgorICAgICAgICAocG93KCgxLjAgLSBwb3coaywgNC4wKSksIDIuMCkpICoKKyAgICAgICAgKHBvdygoNS4wICogcE1vZC0+TEEpLCAoMS4wIC8gMy4wKSkpOworCisgICAgcmV0dXJuIEZMOworfQorCitzdGF0aWMKK2Ntc0Zsb2F0NjROdW1iZXIgY29tcHV0ZUQoY21zQ0lFQ0FNMDIqIHBNb2QpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciBEOworCisgICAgRCA9IHBNb2QtPkYgLSAoMS4wLzMuNikqKGV4cCgoKC1wTW9kIC0+TEEtNDIpIC8gOTIuMCkpKTsKKworICAgIHJldHVybiBEOworfQorCisKK3N0YXRpYworQ0FNMDJDT0xPUiBYWVp0b0NBVDAyKENBTTAyQ09MT1IgY2xyKQoreworICAgIGNsci5SR0JbMF0gPSAoY2xyLlhZWlswXSAqICAwLjczMjgpICsgKGNsci5YWVpbMV0gKiAgMC40Mjk2KSArIChjbHIuWFlaWzJdICogLTAuMTYyNCk7CisgICAgY2xyLlJHQlsxXSA9IChjbHIuWFlaWzBdICogLTAuNzAzNikgKyAoY2xyLlhZWlsxXSAqICAxLjY5NzUpICsgKGNsci5YWVpbMl0gKiAgMC4wMDYxKTsKKyAgICBjbHIuUkdCWzJdID0gKGNsci5YWVpbMF0gKiAgMC4wMDMwKSArIChjbHIuWFlaWzFdICogIDAuMDEzNikgKyAoY2xyLlhZWlsyXSAqICAwLjk4MzQpOworCisgICAgcmV0dXJuIGNscjsKK30KKworc3RhdGljCitDQU0wMkNPTE9SIENocm9tYXRpY0FkYXB0YXRpb24oQ0FNMDJDT0xPUiBjbHIsIGNtc0NJRUNBTTAyKiBwTW9kKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworICAgICAgICBjbHIuUkdCY1tpXSA9ICgocE1vZCAtPiBhZG9wdGVkV2hpdGUuWFlaWzFdICoKKyAgICAgICAgICAgIChwTW9kLT5EIC8gcE1vZCAtPiBhZG9wdGVkV2hpdGUuUkdCW2ldKSkgKworICAgICAgICAgICAgKDEuMCAtIHBNb2QtPkQpKSAqIGNsci5SR0JbaV07CisgICAgfQorCisgICAgcmV0dXJuIGNscjsKK30KKworCitzdGF0aWMKK0NBTTAyQ09MT1IgQ0FUMDJ0b0hQRShDQU0wMkNPTE9SIGNscikKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIE1bOV07CisKKyAgICBNWzBdID0oKCAwLjM4OTcxICogIDEuMDk2MTI0KSArICgwLjY4ODk4ICogMC40NTQzNjkpICsgKC0wLjA3ODY4ICogLTAuMDA5NjI4KSk7CisgICAgTVsxXSA9KCggMC4zODk3MSAqIC0wLjI3ODg2OSkgKyAoMC42ODg5OCAqIDAuNDczNTMzKSArICgtMC4wNzg2OCAqIC0wLjAwNTY5OCkpOworICAgIE1bMl0gPSgoIDAuMzg5NzEgKiAgMC4xODI3NDUpICsgKDAuNjg4OTggKiAwLjA3MjA5OCkgKyAoLTAuMDc4NjggKiAgMS4wMTUzMjYpKTsKKyAgICBNWzNdID0oKC0wLjIyOTgxICogIDEuMDk2MTI0KSArICgxLjE4MzQwICogMC40NTQzNjkpICsgKCAwLjA0NjQxICogLTAuMDA5NjI4KSk7CisgICAgTVs0XSA9KCgtMC4yMjk4MSAqIC0wLjI3ODg2OSkgKyAoMS4xODM0MCAqIDAuNDczNTMzKSArICggMC4wNDY0MSAqIC0wLjAwNTY5OCkpOworICAgIE1bNV0gPSgoLTAuMjI5ODEgKiAgMC4xODI3NDUpICsgKDEuMTgzNDAgKiAwLjA3MjA5OCkgKyAoIDAuMDQ2NDEgKiAgMS4wMTUzMjYpKTsKKyAgICBNWzZdID0oLTAuMDA5NjI4KTsKKyAgICBNWzddID0oLTAuMDA1Njk4KTsKKyAgICBNWzhdID0oIDEuMDE1MzI2KTsKKworICAgIGNsci5SR0JwWzBdID0gKGNsci5SR0JjWzBdICogTVswXSkgKyAgKGNsci5SR0JjWzFdICogTVsxXSkgKyAoY2xyLlJHQmNbMl0gKiBNWzJdKTsKKyAgICBjbHIuUkdCcFsxXSA9IChjbHIuUkdCY1swXSAqIE1bM10pICsgIChjbHIuUkdCY1sxXSAqIE1bNF0pICsgKGNsci5SR0JjWzJdICogTVs1XSk7CisgICAgY2xyLlJHQnBbMl0gPSAoY2xyLlJHQmNbMF0gKiBNWzZdKSArICAoY2xyLlJHQmNbMV0gKiBNWzddKSArIChjbHIuUkdCY1syXSAqIE1bOF0pOworCisgICAgcmV0dXJuICBjbHI7Cit9CisKK3N0YXRpYworQ0FNMDJDT0xPUiBOb25saW5lYXJDb21wcmVzc2lvbihDQU0wMkNPTE9SIGNsciwgY21zQ0lFQ0FNMDIqIHBNb2QpCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgY21zRmxvYXQ2NE51bWJlciB0ZW1wOworCisgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworICAgICAgICBpZiAoY2xyLlJHQnBbaV0gPCAwKSB7CisKKyAgICAgICAgICAgIHRlbXAgPSBwb3coKC0xLjAgKiBwTW9kLT5GTCAqIGNsci5SR0JwW2ldIC8gMTAwLjApLCAwLjQyKTsKKyAgICAgICAgICAgIGNsci5SR0JwYVtpXSA9ICgtMS4wICogNDAwLjAgKiB0ZW1wKSAvICh0ZW1wICsgMjcuMTMpICsgMC4xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGVtcCA9IHBvdygocE1vZC0+RkwgKiBjbHIuUkdCcFtpXSAvIDEwMC4wKSwgMC40Mik7CisgICAgICAgICAgICBjbHIuUkdCcGFbaV0gPSAoNDAwLjAgKiB0ZW1wKSAvICh0ZW1wICsgMjcuMTMpICsgMC4xOworICAgICAgICB9CisgICAgfQorCisgICAgY2xyLkEgPSAoKCgyLjAgKiBjbHIuUkdCcGFbMF0pICsgY2xyLlJHQnBhWzFdICsKKyAgICAgICAgKGNsci5SR0JwYVsyXSAvIDIwLjApKSAtIDAuMzA1KSAqIHBNb2QtPk5iYjsKKworICAgIHJldHVybiBjbHI7Cit9CisKK3N0YXRpYworQ0FNMDJDT0xPUiBDb21wdXRlQ29ycmVsYXRlcyhDQU0wMkNPTE9SIGNsciwgY21zQ0lFQ0FNMDIqIHBNb2QpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciBhLCBiLCB0ZW1wLCBlLCB0LCByMmQsIGQycjsKKworICAgIGEgPSBjbHIuUkdCcGFbMF0gLSAoMTIuMCAqIGNsci5SR0JwYVsxXSAvIDExLjApICsgKGNsci5SR0JwYVsyXSAvIDExLjApOworICAgIGIgPSAoY2xyLlJHQnBhWzBdICsgY2xyLlJHQnBhWzFdIC0gKDIuMCAqIGNsci5SR0JwYVsyXSkpIC8gOS4wOworCisgICAgcjJkID0gKDE4MC4wIC8gMy4xNDE1OTI2NTQpOworICAgIGlmIChhID09IDApIHsKKyAgICAgICAgaWYgKGIgPT0gMCkgICAgIGNsci5oID0gMDsKKyAgICAgICAgZWxzZSBpZiAoYiA+IDApIGNsci5oID0gOTA7CisgICAgICAgIGVsc2UgICAgICAgICAgICBjbHIuaCA9IDI3MDsKKyAgICB9CisgICAgZWxzZSBpZiAoYSA+IDApIHsKKyAgICAgICAgdGVtcCA9IGIgLyBhOworICAgICAgICBpZiAoYiA+IDApICAgICAgIGNsci5oID0gKHIyZCAqIGF0YW4odGVtcCkpOworICAgICAgICBlbHNlIGlmIChiID09IDApIGNsci5oID0gMDsKKyAgICAgICAgZWxzZSAgICAgICAgICAgICBjbHIuaCA9IChyMmQgKiBhdGFuKHRlbXApKSArIDM2MDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRlbXAgPSBiIC8gYTsKKyAgICAgICAgY2xyLmggPSAocjJkICogYXRhbih0ZW1wKSkgKyAxODA7CisgICAgfQorCisgICAgZDJyID0gKDMuMTQxNTkyNjU0IC8gMTgwLjApOworICAgIGUgPSAoKDEyNTAwLjAgLyAxMy4wKSAqIHBNb2QtPk5jICogcE1vZC0+TmNiKSAqCisgICAgICAgIChjb3MoKGNsci5oICogZDJyICsgMi4wKSkgKyAzLjgpOworCisgICAgaWYgKGNsci5oIDwgMjAuMTQpIHsKKyAgICAgICAgdGVtcCA9ICgoY2xyLmggKyAxMjIuNDcpLzEuMikgKyAoKDIwLjE0IC0gY2xyLmgpLzAuOCk7CisgICAgICAgIGNsci5IID0gMzAwICsgKDEwMCooKGNsci5oICsgMTIyLjQ3KS8xLjIpKSAvIHRlbXA7CisgICAgfQorICAgIGVsc2UgaWYgKGNsci5oIDwgOTAuMCkgeworICAgICAgICB0ZW1wID0gKChjbHIuaCAtIDIwLjE0KS8wLjgpICsgKCg5MC4wMCAtIGNsci5oKS8wLjcpOworICAgICAgICBjbHIuSCA9ICgxMDAqKChjbHIuaCAtIDIwLjE0KS8wLjgpKSAvIHRlbXA7CisgICAgfQorICAgIGVsc2UgaWYgKGNsci5oIDwgMTY0LjI1KSB7CisgICAgICAgIHRlbXAgPSAoKGNsci5oIC0gOTAuMDApLzAuNykgKyAoKDE2NC4yNSAtIGNsci5oKS8xLjApOworICAgICAgICBjbHIuSCA9IDEwMCArICgoMTAwKigoY2xyLmggLSA5MC4wMCkvMC43KSkgLyB0ZW1wKTsKKyAgICB9CisgICAgZWxzZSBpZiAoY2xyLmggPCAyMzcuNTMpIHsKKyAgICAgICAgdGVtcCA9ICgoY2xyLmggLSAxNjQuMjUpLzEuMCkgKyAoKDIzNy41MyAtIGNsci5oKS8xLjIpOworICAgICAgICBjbHIuSCA9IDIwMCArICgoMTAwKigoY2xyLmggLSAxNjQuMjUpLzEuMCkpIC8gdGVtcCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0ZW1wID0gKChjbHIuaCAtIDIzNy41MykvMS4yKSArICgoMzYwIC0gY2xyLmggKyAyMC4xNCkvMC44KTsKKyAgICAgICAgY2xyLkggPSAzMDAgKyAoKDEwMCooKGNsci5oIC0gMjM3LjUzKS8xLjIpKSAvIHRlbXApOworICAgIH0KKworICAgIGNsci5KID0gMTAwLjAgKiBwb3coKGNsci5BIC8gcE1vZC0+YWRvcHRlZFdoaXRlLkEpLAorICAgICAgICAocE1vZC0+YyAqIHBNb2QtPnopKTsKKworICAgIGNsci5RID0gKDQuMCAvIHBNb2QtPmMpICogcG93KChjbHIuSiAvIDEwMC4wKSwgMC41KSAqCisgICAgICAgIChwTW9kLT5hZG9wdGVkV2hpdGUuQSArIDQuMCkgKiBwb3cocE1vZC0+RkwsIDAuMjUpOworCisgICAgdCA9IChlICogcG93KCgoYSAqIGEpICsgKGIgKiBiKSksIDAuNSkpIC8KKyAgICAgICAgKGNsci5SR0JwYVswXSArIGNsci5SR0JwYVsxXSArCisgICAgICAgICgoMjEuMCAvIDIwLjApICogY2xyLlJHQnBhWzJdKSk7CisKKyAgICBjbHIuQyA9IHBvdyh0LCAwLjkpICogcG93KChjbHIuSiAvIDEwMC4wKSwgMC41KSAqCisgICAgICAgIHBvdygoMS42NCAtIHBvdygwLjI5LCBwTW9kLT5uKSksIDAuNzMpOworCisgICAgY2xyLk0gPSBjbHIuQyAqIHBvdyhwTW9kLT5GTCwgMC4yNSk7CisgICAgY2xyLnMgPSAxMDAuMCAqIHBvdygoY2xyLk0gLyBjbHIuUSksIDAuNSk7CisKKyAgICByZXR1cm4gY2xyOworfQorCisKK3N0YXRpYworQ0FNMDJDT0xPUiBJbnZlcnNlQ29ycmVsYXRlcyhDQU0wMkNPTE9SIGNsciwgY21zQ0lFQ0FNMDIqIHBNb2QpCit7CisKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHQsIGUsIHAxLCBwMiwgcDMsIHA0LCBwNSwgaHIsIGQycjsKKyAgICBkMnIgPSAzLjE0MTU5MjY1NCAvIDE4MC4wOworCisgICAgdCA9IHBvdyggKGNsci5DIC8gKHBvdygoY2xyLkogLyAxMDAuMCksIDAuNSkgKgorICAgICAgICAocG93KCgxLjY0IC0gcG93KDAuMjksIHBNb2QtPm4pKSwgMC43MykpKSksCisgICAgICAgICgxLjAgLyAwLjkpICk7CisgICAgZSA9ICgoMTI1MDAuMCAvIDEzLjApICogcE1vZC0+TmMgKiBwTW9kLT5OY2IpICoKKyAgICAgICAgKGNvcygoY2xyLmggKiBkMnIgKyAyLjApKSArIDMuOCk7CisKKyAgICBjbHIuQSA9IHBNb2QtPmFkb3B0ZWRXaGl0ZS5BICogcG93KAorICAgICAgICAgICAoY2xyLkogLyAxMDAuMCksCisgICAgICAgICAgICgxLjAgLyAocE1vZC0+YyAqIHBNb2QtPnopKSk7CisKKyAgICBwMSA9IGUgLyB0OworICAgIHAyID0gKGNsci5BIC8gcE1vZC0+TmJiKSArIDAuMzA1OworICAgIHAzID0gMjEuMCAvIDIwLjA7CisKKyAgICBociA9IGNsci5oICogZDJyOworCisgICAgaWYgKGZhYnMoc2luKGhyKSkgPj0gZmFicyhjb3MoaHIpKSkgeworICAgICAgICBwNCA9IHAxIC8gc2luKGhyKTsKKyAgICAgICAgY2xyLmIgPSAocDIgKiAoMi4wICsgcDMpICogKDQ2MC4wIC8gMTQwMy4wKSkgLworICAgICAgICAgICAgKHA0ICsgKDIuMCArIHAzKSAqICgyMjAuMCAvIDE0MDMuMCkgKgorICAgICAgICAgICAgKGNvcyhocikgLyBzaW4oaHIpKSAtICgyNy4wIC8gMTQwMy4wKSArCisgICAgICAgICAgICBwMyAqICg2MzAwLjAgLyAxNDAzLjApKTsKKyAgICAgICAgY2xyLmEgPSBjbHIuYiAqIChjb3MoaHIpIC8gc2luKGhyKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwNSA9IHAxIC8gY29zKGhyKTsKKyAgICAgICAgY2xyLmEgPSAocDIgKiAoMi4wICsgcDMpICogKDQ2MC4wIC8gMTQwMy4wKSkgLworICAgICAgICAgICAgKHA1ICsgKDIuMCArIHAzKSAqICgyMjAuMCAvIDE0MDMuMCkgLQorICAgICAgICAgICAgKCgyNy4wIC8gMTQwMy4wKSAtIHAzICogKDYzMDAuMCAvIDE0MDMuMCkpICoKKyAgICAgICAgICAgIChzaW4oaHIpIC8gY29zKGhyKSkpOworICAgICAgICBjbHIuYiA9IGNsci5hICogKHNpbihocikgLyBjb3MoaHIpKTsKKyAgICB9CisKKyAgICBjbHIuUkdCcGFbMF0gPSAoKDQ2MC4wIC8gMTQwMy4wKSAqIHAyKSArCisgICAgICAgICAgICAgICgoNDUxLjAgLyAxNDAzLjApICogY2xyLmEpICsKKyAgICAgICAgICAgICAgKCgyODguMCAvIDE0MDMuMCkgKiBjbHIuYik7CisgICAgY2xyLlJHQnBhWzFdID0gKCg0NjAuMCAvIDE0MDMuMCkgKiBwMikgLQorICAgICAgICAgICAgICAoKDg5MS4wIC8gMTQwMy4wKSAqIGNsci5hKSAtCisgICAgICAgICAgICAgICgoMjYxLjAgLyAxNDAzLjApICogY2xyLmIpOworICAgIGNsci5SR0JwYVsyXSA9ICgoNDYwLjAgLyAxNDAzLjApICogcDIpIC0KKyAgICAgICAgICAgICAgKCgyMjAuMCAvIDE0MDMuMCkgKiBjbHIuYSkgLQorICAgICAgICAgICAgICAoKDYzMDAuMCAvIDE0MDMuMCkgKiBjbHIuYik7CisKKyAgICByZXR1cm4gY2xyOworfQorCitzdGF0aWMKK0NBTTAyQ09MT1IgSW52ZXJzZU5vbmxpbmVhcml0eShDQU0wMkNPTE9SIGNsciwgY21zQ0lFQ0FNMDIqIHBNb2QpCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgY21zRmxvYXQ2NE51bWJlciBjMTsKKworICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgICAgaWYgKChjbHIuUkdCcGFbaV0gLSAwLjEpIDwgMCkgYzEgPSAtMTsKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMSA9IDE7CisgICAgICAgIGNsci5SR0JwW2ldID0gYzEgKiAoMTAwLjAgLyBwTW9kLT5GTCkgKgorICAgICAgICAgICAgcG93KCgoMjcuMTMgKiBmYWJzKGNsci5SR0JwYVtpXSAtIDAuMSkpIC8KKyAgICAgICAgICAgICg0MDAuMCAtIGZhYnMoY2xyLlJHQnBhW2ldIC0gMC4xKSkpLAorICAgICAgICAgICAgKDEuMCAvIDAuNDIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2xyOworfQorCitzdGF0aWMKK0NBTTAyQ09MT1IgSFBFdG9DQVQwMihDQU0wMkNPTE9SIGNscikKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIE1bOV07CisKKyAgICBNWzBdID0gKCggMC43MzI4ICogIDEuOTEwMTk3KSArICgwLjQyOTYgKiAwLjM3MDk1MCkpOworICAgIE1bMV0gPSAoKCAwLjczMjggKiAtMS4xMTIxMjQpICsgKDAuNDI5NiAqIDAuNjI5MDU0KSk7CisgICAgTVsyXSA9ICgoIDAuNzMyOCAqICAwLjIwMTkwOCkgKyAoMC40Mjk2ICogMC4wMDAwMDgpIC0gMC4xNjI0KTsKKyAgICBNWzNdID0gKCgtMC43MDM2ICogIDEuOTEwMTk3KSArICgxLjY5NzUgKiAwLjM3MDk1MCkpOworICAgIE1bNF0gPSAoKC0wLjcwMzYgKiAtMS4xMTIxMjQpICsgKDEuNjk3NSAqIDAuNjI5MDU0KSk7CisgICAgTVs1XSA9ICgoLTAuNzAzNiAqICAwLjIwMTkwOCkgKyAoMS42OTc1ICogMC4wMDAwMDgpICsgMC4wMDYxKTsKKyAgICBNWzZdID0gKCggMC4wMDMwICogIDEuOTEwMTk3KSArICgwLjAxMzYgKiAwLjM3MDk1MCkpOworICAgIE1bN10gPSAoKCAwLjAwMzAgKiAtMS4xMTIxMjQpICsgKDAuMDEzNiAqIDAuNjI5MDU0KSk7CisgICAgTVs4XSA9ICgoIDAuMDAzMCAqICAwLjIwMTkwOCkgKyAoMC4wMTM2ICogMC4wMDAwMDgpICsgMC45ODM0KTs7CisKKyAgICBjbHIuUkdCY1swXSA9IChjbHIuUkdCcFswXSAqIE1bMF0pICsgKGNsci5SR0JwWzFdICogTVsxXSkgKyAoY2xyLlJHQnBbMl0gKiBNWzJdKTsKKyAgICBjbHIuUkdCY1sxXSA9IChjbHIuUkdCcFswXSAqIE1bM10pICsgKGNsci5SR0JwWzFdICogTVs0XSkgKyAoY2xyLlJHQnBbMl0gKiBNWzVdKTsKKyAgICBjbHIuUkdCY1syXSA9IChjbHIuUkdCcFswXSAqIE1bNl0pICsgKGNsci5SR0JwWzFdICogTVs3XSkgKyAoY2xyLlJHQnBbMl0gKiBNWzhdKTsKKyAgICByZXR1cm4gY2xyOworfQorCisKK3N0YXRpYworQ0FNMDJDT0xPUiBJbnZlcnNlQ2hyb21hdGljQWRhcHRhdGlvbihDQU0wMkNPTE9SIGNsciwgIGNtc0NJRUNBTTAyKiBwTW9kKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpOworICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgICAgY2xyLlJHQltpXSA9IGNsci5SR0JjW2ldIC8KKyAgICAgICAgICAgICgocE1vZC0+YWRvcHRlZFdoaXRlLlhZWlsxXSAqIHBNb2QtPkQgLyBwTW9kLT5hZG9wdGVkV2hpdGUuUkdCW2ldKSArIDEuMCAtIHBNb2QtPkQpOworICAgIH0KKyAgICByZXR1cm4gY2xyOworfQorCisKK3N0YXRpYworQ0FNMDJDT0xPUiBDQVQwMnRvWFlaKENBTTAyQ09MT1IgY2xyKQoreworICAgIGNsci5YWVpbMF0gPSAoY2xyLlJHQlswXSAqICAxLjA5NjEyNCkgKyAoY2xyLlJHQlsxXSAqIC0wLjI3ODg2OSkgKyAoY2xyLlJHQlsyXSAqICAwLjE4Mjc0NSk7CisgICAgY2xyLlhZWlsxXSA9IChjbHIuUkdCWzBdICogIDAuNDU0MzY5KSArIChjbHIuUkdCWzFdICogIDAuNDczNTMzKSArIChjbHIuUkdCWzJdICogIDAuMDcyMDk4KTsKKyAgICBjbHIuWFlaWzJdID0gKGNsci5SR0JbMF0gKiAtMC4wMDk2MjgpICsgKGNsci5SR0JbMV0gKiAtMC4wMDU2OTgpICsgKGNsci5SR0JbMl0gKiAgMS4wMTUzMjYpOworCisgICAgcmV0dXJuIGNscjsKK30KKworCitjbXNIQU5ETEUgIENNU0VYUE9SVCBjbXNDSUVDQU0wMkluaXQoY21zQ29udGV4dCBDb250ZXh0SUQsIGNvbnN0IGNtc1ZpZXdpbmdDb25kaXRpb25zKiBwVkMpCit7CisgICAgY21zQ0lFQ0FNMDIqIGxwTW9kOworCisgICAgX2Ntc0Fzc2VydChwVkMgIT0gTlVMTCk7CisKKyAgICBpZigobHBNb2QgPSAoY21zQ0lFQ0FNMDIqKSBfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIHNpemVvZihjbXNDSUVDQU0wMikpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGxwTW9kIC0+Q29udGV4dElEID0gQ29udGV4dElEOworCisgICAgbHBNb2QgLT5hZG9wdGVkV2hpdGUuWFlaWzBdID0gcFZDIC0+d2hpdGVQb2ludC5YOworICAgIGxwTW9kIC0+YWRvcHRlZFdoaXRlLlhZWlsxXSA9IHBWQyAtPndoaXRlUG9pbnQuWTsKKyAgICBscE1vZCAtPmFkb3B0ZWRXaGl0ZS5YWVpbMl0gPSBwVkMgLT53aGl0ZVBvaW50Llo7CisKKyAgICBscE1vZCAtPiBMQSAgICAgICA9IHBWQyAtPkxhOworICAgIGxwTW9kIC0+IFliICAgICAgID0gcFZDIC0+WWI7CisgICAgbHBNb2QgLT4gRCAgICAgICAgPSBwVkMgLT5EX3ZhbHVlOworICAgIGxwTW9kIC0+IHN1cnJvdW5kID0gcFZDIC0+c3Vycm91bmQ7CisKKyAgICBzd2l0Y2ggKGxwTW9kIC0+IHN1cnJvdW5kKSB7CisKKworICAgIGNhc2UgQ1VUU0hFRVRfU1VSUk9VTkQ6CisgICAgICAgIGxwTW9kLT5GID0gMC44OworICAgICAgICBscE1vZC0+YyA9IDAuNDE7CisgICAgICAgIGxwTW9kLT5OYyA9IDAuODsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERBUktfU1VSUk9VTkQ6CisgICAgICAgIGxwTW9kIC0+IEYgID0gMC44OworICAgICAgICBscE1vZCAtPiBjICA9IDAuNTI1OworICAgICAgICBscE1vZCAtPiBOYyA9IDAuODsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERJTV9TVVJST1VORDoKKyAgICAgICAgbHBNb2QgLT4gRiAgPSAwLjk7CisgICAgICAgIGxwTW9kIC0+IGMgID0gMC41OTsKKyAgICAgICAgbHBNb2QgLT4gTmMgPSAwLjk1OworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEF2ZXJhZ2Ugc3Vycm91bmQKKyAgICAgICAgbHBNb2QgLT4gRiAgPSAxLjA7CisgICAgICAgIGxwTW9kIC0+IGMgID0gMC42OTsKKyAgICAgICAgbHBNb2QgLT4gTmMgPSAxLjA7CisgICAgfQorCisgICAgbHBNb2QgLT4gbiAgID0gY29tcHV0ZV9uKGxwTW9kKTsKKyAgICBscE1vZCAtPiB6ICAgPSBjb21wdXRlX3oobHBNb2QpOworICAgIGxwTW9kIC0+IE5iYiA9IGNvbXB1dGVOYmIobHBNb2QpOworICAgIGxwTW9kIC0+IEZMICA9IGNvbXB1dGVGTChscE1vZCk7CisKKyAgICBpZiAobHBNb2QgLT4gRCA9PSBEX0NBTENVTEFURSkgeworICAgICAgICBscE1vZCAtPiBEICAgPSBjb21wdXRlRChscE1vZCk7CisgICAgfQorCisgICAgbHBNb2QgLT4gTmNiID0gbHBNb2QgLT4gTmJiOworCisgICAgbHBNb2QgLT4gYWRvcHRlZFdoaXRlID0gWFladG9DQVQwMihscE1vZCAtPiBhZG9wdGVkV2hpdGUpOworICAgIGxwTW9kIC0+IGFkb3B0ZWRXaGl0ZSA9IENocm9tYXRpY0FkYXB0YXRpb24obHBNb2QgLT4gYWRvcHRlZFdoaXRlLCBscE1vZCk7CisgICAgbHBNb2QgLT4gYWRvcHRlZFdoaXRlID0gQ0FUMDJ0b0hQRShscE1vZCAtPiBhZG9wdGVkV2hpdGUpOworICAgIGxwTW9kIC0+IGFkb3B0ZWRXaGl0ZSA9IE5vbmxpbmVhckNvbXByZXNzaW9uKGxwTW9kIC0+IGFkb3B0ZWRXaGl0ZSwgbHBNb2QpOworCisgICAgcmV0dXJuIChjbXNIQU5ETEUpIGxwTW9kOworCit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc0NJRUNBTTAyRG9uZShjbXNIQU5ETEUgaE1vZGVsKQoreworICAgIGNtc0NJRUNBTTAyKiBscE1vZCA9IChjbXNDSUVDQU0wMiopIGhNb2RlbDsKKworICAgIGlmIChscE1vZCkgX2Ntc0ZyZWUobHBNb2QgLT5Db250ZXh0SUQsIGxwTW9kKTsKK30KKworCit2b2lkIENNU0VYUE9SVCBjbXNDSUVDQU0wMkZvcndhcmQoY21zSEFORExFIGhNb2RlbCwgY29uc3QgY21zQ0lFWFlaKiBwSW4sIGNtc0pDaCogcE91dCkKK3sKKyAgICBDQU0wMkNPTE9SIGNscjsKKyAgICBjbXNDSUVDQU0wMiogbHBNb2QgPSAoY21zQ0lFQ0FNMDIqKSBoTW9kZWw7CisgIAorICAgIF9jbXNBc3NlcnQobHBNb2QgIT0gTlVMTCk7CisgICAgX2Ntc0Fzc2VydChwSW4gIT0gTlVMTCk7CisgICAgX2Ntc0Fzc2VydChwT3V0ICE9IE5VTEwpOworCisgICAgbWVtc2V0KCZjbHIsIDAsIHNpemVvZihjbHIpKTsKKworICAgIGNsci5YWVpbMF0gPSBwSW4gLT5YOworICAgIGNsci5YWVpbMV0gPSBwSW4gLT5ZOworICAgIGNsci5YWVpbMl0gPSBwSW4gLT5aOworCisgICAgY2xyID0gWFladG9DQVQwMihjbHIpOworICAgIGNsciA9IENocm9tYXRpY0FkYXB0YXRpb24oY2xyLCBscE1vZCk7CisgICAgY2xyID0gQ0FUMDJ0b0hQRShjbHIpOworICAgIGNsciA9IE5vbmxpbmVhckNvbXByZXNzaW9uKGNsciwgbHBNb2QpOworICAgIGNsciA9IENvbXB1dGVDb3JyZWxhdGVzKGNsciwgbHBNb2QpOworCisgICAgcE91dCAtPkogPSBjbHIuSjsKKyAgICBwT3V0IC0+QyA9IGNsci5DOworICAgIHBPdXQgLT5oID0gY2xyLmg7Cit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc0NJRUNBTTAyUmV2ZXJzZShjbXNIQU5ETEUgaE1vZGVsLCBjb25zdCBjbXNKQ2gqIHBJbiwgY21zQ0lFWFlaKiBwT3V0KQoreworICAgIENBTTAyQ09MT1IgY2xyOworICAgIGNtc0NJRUNBTTAyKiBscE1vZCA9IChjbXNDSUVDQU0wMiopIGhNb2RlbDsKKyAgICAKKyAgICBfY21zQXNzZXJ0KGxwTW9kICE9IE5VTEwpOworICAgIF9jbXNBc3NlcnQocEluICE9IE5VTEwpOworICAgIF9jbXNBc3NlcnQocE91dCAhPSBOVUxMKTsKKworICAgIG1lbXNldCgmY2xyLCAwLCBzaXplb2YoY2xyKSk7CisKKyAgICBjbHIuSiA9IHBJbiAtPiBKOworICAgIGNsci5DID0gcEluIC0+IEM7CisgICAgY2xyLmggPSBwSW4gLT4gaDsKKworICAgIGNsciA9IEludmVyc2VDb3JyZWxhdGVzKGNsciwgbHBNb2QpOworICAgIGNsciA9IEludmVyc2VOb25saW5lYXJpdHkoY2xyLCBscE1vZCk7CisgICAgY2xyID0gSFBFdG9DQVQwMihjbHIpOworICAgIGNsciA9IEludmVyc2VDaHJvbWF0aWNBZGFwdGF0aW9uKGNsciwgbHBNb2QpOworICAgIGNsciA9IENBVDAydG9YWVooY2xyKTsKKworICAgIHBPdXQgLT5YID0gY2xyLlhZWlswXTsKKyAgICBwT3V0IC0+WSA9IGNsci5YWVpbMV07CisgICAgcE91dCAtPlogPSBjbHIuWFlaWzJdOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2NnYXRzLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zY2dhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDE3NDM1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2NnYXRzLmMKQEAgLTAsMCArMSwyNzc1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiBNYXJ0aSBNYXJpYSBTYWd1ZXIKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlCisvLyBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTworLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKy8vIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKy8vIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisKKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIgorCisKKy8vIElUOC43IC8gQ0dBVFMuMTctMjAweCBoYW5kbGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKyNkZWZpbmUgTUFYSUQgICAgICAgIDEyOCAgICAgLy8gTWF4IGxlbmd0aCBvZiBpZGVudGlmaWVyCisjZGVmaW5lIE1BWFNUUiAgICAgIDEwMjQgICAgIC8vIE1heCBsZW5ndGggb2Ygc3RyaW5nCisjZGVmaW5lIE1BWFRBQkxFUyAgICAyNTUgICAgIC8vIE1heCBOdW1iZXIgb2YgdGFibGVzIGluIGEgc2luZ2xlIHN0cmVhbQorI2RlZmluZSBNQVhJTkNMVURFICAgIDIwICAgICAvLyBNYXggbnVtYmVyIG9mIG5lc3RlZCBpbmNsdWRlcworCisjZGVmaW5lIERFRkFVTFRfREJMX0ZPUk1BVCAgIiUuMTBnIiAvLyBEb3VibGUgZm9ybWF0dGluZworCisjaWZkZWYgQ01TX0lTX1dJTkRPV1NfCisvL3N1bmxpYW5nLmxpdSBtb2RpZmllZCAyMDEwNDI2IGZvciB3aW5jZSBlcnJvcgorIwlpZm5kZWYgX1dJTjMyX1dDRQorIwkJaW5jbHVkZSA8aW8uaD4KKyMJZW5kaWYKKyMgICAgZGVmaW5lIERJUl9DSEFSICAgICdcXCcKKyNlbHNlCisjICAgIGRlZmluZSBESVJfQ0hBUiAgICAnLycKKyNlbmRpZgorCisKKy8vIFN5bWJvbHMKK3R5cGVkZWYgZW51bSB7CisKKyAgICAgICAgU05PTkUsCisgICAgICAgIFNJTlVNLCAgICAgIC8vIEludGVnZXIKKyAgICAgICAgU0ROVU0sICAgICAgLy8gUmVhbAorICAgICAgICBTSURFTlQsICAgICAvLyBJZGVudGlmaWVyCisgICAgICAgIFNTVFJJTkcsICAgIC8vIHN0cmluZworICAgICAgICBTQ09NTUVOVCwgICAvLyBjb21tZW50CisgICAgICAgIFNFT0xOLCAgICAgIC8vIEVuZCBvZiBsaW5lCisgICAgICAgIFNFT0YsICAgICAgIC8vIEVuZCBvZiBzdHJlYW0KKyAgICAgICAgU1NZTkVSUk9SLCAgLy8gU3ludGF4IGVycm9yIGZvdW5kIG9uIHN0cmVhbQorCisgICAgICAgIC8vIEtleXdvcmRzCisKKyAgICAgICAgU0JFR0lOX0RBVEEsCisgICAgICAgIFNCRUdJTl9EQVRBX0ZPUk1BVCwKKyAgICAgICAgU0VORF9EQVRBLAorICAgICAgICBTRU5EX0RBVEFfRk9STUFULAorICAgICAgICBTS0VZV09SRCwKKyAgICAgICAgU0RBVEFfRk9STUFUX0lELAorICAgICAgICBTSU5DTFVERQorCisgICAgfSBTWU1CT0w7CisKKworLy8gSG93IHRvIHdyaXRlIHRoZSB2YWx1ZQordHlwZWRlZiBlbnVtIHsKKworICAgICAgICBXUklURV9VTkNPT0tFRCwKKyAgICAgICAgV1JJVEVfU1RSSU5HSUZZLAorICAgICAgICBXUklURV9IRVhBREVDSU1BTCwKKyAgICAgICAgV1JJVEVfQklOQVJZLAorICAgICAgICBXUklURV9QQUlSCisKKyAgICB9IFdSSVRFTU9ERTsKKworLy8gTGlua2VkIGxpc3Qgb2YgdmFyaWFibGUgbmFtZXMKK3R5cGVkZWYgc3RydWN0IF9LZXlWYWwgeworCisgICAgICAgIHN0cnVjdCBfS2V5VmFsKiAgTmV4dDsKKyAgICAgICAgY2hhciogICAgICAgICAgICBLZXl3b3JkOyAgICAgICAvLyBOYW1lIG9mIHZhcmlhYmxlCisgICAgICAgIHN0cnVjdCBfS2V5VmFsKiAgTmV4dFN1YmtleTsgICAgLy8gSWYga2V5IGlzIGEgZGljdGlvbmFyeSwgcG9pbnRzIHRvIHRoZSBuZXh0IGl0ZW0KKyAgICAgICAgY2hhciogICAgICAgICAgICBTdWJrZXk7ICAgICAgICAvLyBJZiBrZXkgaXMgYSBkaWN0aW9uYXJ5LCBwb2ludHMgdG8gdGhlIHN1YmtleSBuYW1lCisgICAgICAgIGNoYXIqICAgICAgICAgICAgVmFsdWU7ICAgICAgICAgLy8gUG9pbnRzIHRvIHZhbHVlCisgICAgICAgIFdSSVRFTU9ERSAgICAgICAgV3JpdGVBczsgICAgICAgLy8gSG93IHRvIHdyaXRlIHRoZSB2YWx1ZQorCisgICB9IEtFWVZBTFVFOworCisKKy8vIExpbmtlZCBsaXN0IG9mIG1lbW9yeSBjaHVua3MgKE1lbW9yeSBzaW5rKQordHlwZWRlZiBzdHJ1Y3QgX093bmVkTWVtIHsKKworICAgICAgICBzdHJ1Y3QgX093bmVkTWVtKiBOZXh0OworICAgICAgICB2b2lkICogICAgICAgICAgICBQdHI7ICAgICAgICAgIC8vIFBvaW50IHRvIHZhbHVlCisKKyAgIH0gT1dORURNRU07CisKKy8vIFN1YmFsbG9jYXRvcgordHlwZWRlZiBzdHJ1Y3QgX1N1YkFsbG9jYXRvciB7CisKKyAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBCbG9jazsKKyAgICAgICAgIGNtc1VJbnQzMk51bWJlciBCbG9ja1NpemU7CisgICAgICAgICBjbXNVSW50MzJOdW1iZXIgVXNlZDsKKworICAgIH0gU1VCQUxMT0NBVE9SOworCisvLyBUYWJsZS4gRWFjaCBpbmRpdmlkdWFsIHRhYmxlIGNhbiBob2xkIHByb3BlcnRpZXMgYW5kIHJvd3MgJiBjb2xzCit0eXBlZGVmIHN0cnVjdCBfVGFibGUgeworCisgICAgICAgIGNoYXIgU2hlZXRUeXBlW01BWFNUUl07ICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IHJvdyBvZiB0aGUgSVQ4ICh0aGUgdHlwZSkKKworICAgICAgICBpbnQgICAgICAgICAgICBuU2FtcGxlcywgblBhdGNoZXM7ICAgIC8vIENvbHMsIFJvd3MKKyAgICAgICAgaW50ICAgICAgICAgICAgU2FtcGxlSUQ7ICAgICAgICAgICAgICAvLyBQb3Mgb2YgSUQKKworICAgICAgICBLRVlWQUxVRSogICAgICBIZWFkZXJMaXN0OyAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0aWVzCisKKyAgICAgICAgY2hhcioqICAgICAgICAgRGF0YUZvcm1hdDsgICAgICAgICAgICAvLyBUaGUgYmluYXJ5IHN0cmVhbSBkZXNjcmlwdG9yCisgICAgICAgIGNoYXIqKiAgICAgICAgIERhdGE7ICAgICAgICAgICAgICAgICAgLy8gVGhlIGJpbmFyeSBzdHJlYW0KKworICAgIH0gVEFCTEU7CisKKy8vIEZpbGUgc3RyZWFtIGJlaW5nIHBhcnNlZAordHlwZWRlZiBzdHJ1Y3QgX0ZpbGVDb250ZXh0IHsKKyAgICAgICAgY2hhciAgICAgICAgICAgRmlsZU5hbWVbY21zTUFYX1BBVEhdOyAgICAvLyBGaWxlIG5hbWUgaWYgYmVpbmcgcmVhZGVkIGZyb20gZmlsZQorICAgICAgICBGSUxFKiAgICAgICAgICBTdHJlYW07ICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgc3RyZWFtIG9yIE5VTEwgaWYgaG9sZGVkIGluIG1lbW9yeQorICAgIH0gRklMRUNUWDsKKworLy8gVGhpcyBzdHJ1Y3QgaG9sZCBhbGwgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3BlbiBJVDggaGFuZGxlci4KK3R5cGVkZWYgc3RydWN0IHsKKworCisgICAgICAgIGNtc1VJbnQzMk51bWJlciAgVGFibGVzQ291bnQ7ICAgICAgICAgICAgICAgICAgICAgLy8gSG93IG1hbnkgdGFibGVzIGluIHRoaXMgc3RyZWFtCisgICAgICAgIGNtc1VJbnQzMk51bWJlciAgblRhYmxlOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGFjdHVhbCB0YWJsZQorCisgICAgICAgIFRBQkxFIFRhYltNQVhUQUJMRVNdOworCisgICAgICAgIC8vIE1lbW9yeSBtYW5hZ2VtZW50CisgICAgICAgIE9XTkVETUVNKiAgICAgIE1lbW9yeVNpbms7ICAgICAgICAgICAgLy8gVGhlIHN0b3JhZ2UgYmFja2VuZAorICAgICAgICBTVUJBTExPQ0FUT1IgICBBbGxvY2F0b3I7ICAgICAgICAgICAgIC8vIFN0cmluZyBzdWJhbGxvY2F0b3IgLS0ganVzdCB0byBrZWVwIGl0IGZhc3QKKworICAgICAgICAvLyBQYXJzZXIgc3RhdGUgbWFjaGluZQorICAgICAgICBTWU1CT0wgICAgICAgICBzeTsgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnQgc3ltYm9sCisgICAgICAgIGludCAgICAgICAgICAgIGNoOyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudCBjaGFyYWN0ZXIKKworICAgICAgICBpbnQgICAgICAgICAgICBpbnVtOyAgICAgICAgICAgICAgICAgIC8vIGludGVnZXIgdmFsdWUKKyAgICAgICAgY21zRmxvYXQ2NE51bWJlciAgICAgICAgIGRudW07ICAgICAgICAgICAgICAgICAgLy8gcmVhbCB2YWx1ZQorICAgICAgICBjaGFyICAgICAgICAgICBpZFtNQVhJRF07ICAgICAgICAgICAgIC8vIGlkZW50aWZpZXIKKyAgICAgICAgY2hhciAgICAgICAgICAgc3RyW01BWFNUUl07ICAgICAgICAgICAvLyBzdHJpbmcKKworICAgICAgICAvLyBBbGxvd2VkIGtleXdvcmRzICYgZGF0YXNldHMuIFRoZXkgaGF2ZSB2aXNpYmlsaXR5IG9uIHdob2xlIHN0cmVhbQorICAgICAgICBLRVlWQUxVRSogICAgIFZhbGlkS2V5d29yZHM7CisgICAgICAgIEtFWVZBTFVFKiAgICAgVmFsaWRTYW1wbGVJRDsKKworICAgICAgICBjaGFyKiAgICAgICAgICBTb3VyY2U7ICAgICAgICAgICAgICAgIC8vIFBvaW50cyB0byBsb2MuIGJlaW5nIHBhcnNlZAorICAgICAgICBpbnQgICAgICAgICAgICBsaW5lbm87ICAgICAgICAgICAgICAgIC8vIGxpbmUgY291bnRlciBmb3IgZXJyb3IgcmVwb3J0aW5nCisKKyAgICAgICAgRklMRUNUWCogICAgICAgRmlsZVN0YWNrW01BWElOQ0xVREVdOyAvLyBTdGFjayBvZiBmaWxlcyBiZWluZyBwYXJzZWQKKyAgICAgICAgaW50ICAgICAgICAgICAgSW5jbHVkZVNQOyAgICAgICAgICAgICAvLyBJbmNsdWRlIFN0YWNrIFBvaW50ZXIKKworICAgICAgICBjaGFyKiAgICAgICAgICBNZW1vcnlCbG9jazsgICAgICAgICAgIC8vIFRoZSBzdHJlYW0gaWYgaG9sZGVkIGluIG1lbW9yeQorCisgICAgICAgIGNoYXIgICAgICAgICAgIERvdWJsZUZvcm1hdHRlcltNQVhJRF07Ly8gUHJpbnRmLWxpa2UgJ2Ntc0Zsb2F0NjROdW1iZXInIGZvcm1hdHRlcgorCisgICAgICAgIGNtc0NvbnRleHQgICAgQ29udGV4dElEOyAgICAgICAgICAgICAgLy8gVGhlIHRocmVhZGluZyBjb250ZXh0CisKKyAgIH0gY21zSVQ4OworCisKKy8vIFRoZSBzdHJlYW0gZm9yIHNhdmUgb3BlcmF0aW9ucwordHlwZWRlZiBzdHJ1Y3QgeworCisgICAgICAgIEZJTEUqIHN0cmVhbTsgICAvLyBGb3Igc2F2ZS10by1maWxlIGJlaGF2aW91cgorCisgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBCYXNlOworICAgICAgICBjbXNVSW50OE51bWJlciogUHRyOyAgICAgICAgLy8gRm9yIHNhdmUtdG8tbWVtIGJlaGF2aW91cgorICAgICAgICBjbXNVSW50MzJOdW1iZXIgVXNlZDsKKyAgICAgICAgY21zVUludDMyTnVtYmVyIE1heDsKKworICAgIH0gU0FWRVNUUkVBTTsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY21zSVQ4IHBhcnNpbmcgcm91dGluZXMKKworCisvLyBBIGtleXdvcmQKK3R5cGVkZWYgc3RydWN0IHsKKworICAgICAgICBjb25zdCBjaGFyICppZDsKKyAgICAgICAgU1lNQk9MIHN5OworCisgICB9IEtFWVdPUkQ7CisKKy8vIFRoZSBrZXl3b3JkLT5zeW1ib2wgdHJhbnNsYXRpb24gdGFibGUuIFNvcnRpbmcgaXMgcmVxdWlyZWQuCitzdGF0aWMgY29uc3QgS0VZV09SRCBUYWJLZXlzW10gPSB7CisKKyAgICAgICAgeyIkSU5DTFVERSIsICAgICAgICAgICAgICAgU0lOQ0xVREV9LCAgIC8vIFRoaXMgaXMgYW4gZXh0ZW5zaW9uIQorICAgICAgICB7Ii5JTkNMVURFIiwgICAgICAgICAgICAgICBTSU5DTFVERX0sICAgLy8gVGhpcyBpcyBhbiBleHRlbnNpb24hCisKKyAgICAgICAgeyJCRUdJTl9EQVRBIiwgICAgICAgICAgICAgU0JFR0lOX0RBVEEgfSwKKyAgICAgICAgeyJCRUdJTl9EQVRBX0ZPUk1BVCIsICAgICAgU0JFR0lOX0RBVEFfRk9STUFUIH0sCisgICAgICAgIHsiREFUQV9GT1JNQVRfSURFTlRJRklFUiIsIFNEQVRBX0ZPUk1BVF9JRH0sCisgICAgICAgIHsiRU5EX0RBVEEiLCAgICAgICAgICAgICAgIFNFTkRfREFUQX0sCisgICAgICAgIHsiRU5EX0RBVEFfRk9STUFUIiwgICAgICAgIFNFTkRfREFUQV9GT1JNQVR9LAorICAgICAgICB7IktFWVdPUkQiLCAgICAgICAgICAgICAgICBTS0VZV09SRH0KKyAgICAgICAgfTsKKworI2RlZmluZSBOVU1LRVlTIChzaXplb2YoVGFiS2V5cykvc2l6ZW9mKEtFWVdPUkQpKQorCisvLyBQcmVkZWZpbmVkIHByb3BlcnRpZXMKKworLy8gQSBwcm9wZXJ0eQordHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICBjb25zdCBjaGFyICppZDsgICAgLy8gVGhlIGlkZW50aWZpZXIKKyAgICAgICAgV1JJVEVNT0RFIGFzOyAgICAgIC8vIEhvdyBpcyBzdXBwb3NlZCB0byBiZSB3cml0dGVuCisgICAgfSBQUk9QRVJUWTsKKworc3RhdGljIFBST1BFUlRZIFByZWRlZmluZWRQcm9wZXJ0aWVzW10gPSB7CisKKyAgICAgICAgeyJOVU1CRVJfT0ZfRklFTERTIiwgV1JJVEVfVU5DT09LRUR9LCAgICAvLyBSZXF1aXJlZCAtIE5VTUJFUiBPRiBGSUVMRFMKKyAgICAgICAgeyJOVU1CRVJfT0ZfU0VUUyIsICAgV1JJVEVfVU5DT09LRUR9LCAgICAvLyBSZXF1aXJlZCAtIE5VTUJFUiBPRiBTRVRTCisgICAgICAgIHsiT1JJR0lOQVRPUiIsICAgICAgIFdSSVRFX1NUUklOR0lGWX0sICAgLy8gUmVxdWlyZWQgLSBJZGVudGlmaWVzIHRoZSBzcGVjaWZpYyBzeXN0ZW0sIG9yZ2FuaXphdGlvbiBvciBpbmRpdmlkdWFsIHRoYXQgY3JlYXRlZCB0aGUgZGF0YSBmaWxlLgorICAgICAgICB7IkZJTEVfREVTQ1JJUFRPUiIsICBXUklURV9TVFJJTkdJRll9LCAgIC8vIFJlcXVpcmVkIC0gRGVzY3JpYmVzIHRoZSBwdXJwb3NlIG9yIGNvbnRlbnRzIG9mIHRoZSBkYXRhIGZpbGUuCisgICAgICAgIHsiQ1JFQVRFRCIsICAgICAgICAgIFdSSVRFX1NUUklOR0lGWX0sICAgLy8gUmVxdWlyZWQgLSBJbmRpY2F0ZXMgZGF0ZSBvZiBjcmVhdGlvbiBvZiB0aGUgZGF0YSBmaWxlLgorICAgICAgICB7IkRFU0NSSVBUT1IiLCAgICAgICBXUklURV9TVFJJTkdJRll9LCAgIC8vIFJlcXVpcmVkICAtIERlc2NyaWJlcyB0aGUgcHVycG9zZSBvciBjb250ZW50cyBvZiB0aGUgZGF0YSBmaWxlLgorICAgICAgICB7IkRJRkZVU0VfR0VPTUVUUlkiLCBXUklURV9TVFJJTkdJRll9LCAgIC8vIFRoZSBkaWZmdXNlIGdlb21ldHJ5IHVzZWQuIEFsbG93ZWQgdmFsdWVzIGFyZSAic3BoZXJlIiBvciAib3BhbCIuCisgICAgICAgIHsiTUFOVUZBQ1RVUkVSIiwgICAgIFdSSVRFX1NUUklOR0lGWX0sCisgICAgICAgIHsiTUFOVUZBQ1RVUkUiLCAgICAgIFdSSVRFX1NUUklOR0lGWX0sICAgLy8gU29tZSBicm9rZW4gRnVqaSB0YXJnZXRzIGRvZXMgc3RvcmUgdGhpcyB2YWx1ZQorICAgICAgICB7IlBST0RfREFURSIsICAgICAgICBXUklURV9TVFJJTkdJRll9LCAgIC8vIElkZW50aWZpZXMgeWVhciBhbmQgbW9udGggb2YgcHJvZHVjdGlvbiBvZiB0aGUgdGFyZ2V0IGluIHRoZSBmb3JtIHl5eXk6bW0uCisgICAgICAgIHsiU0VSSUFMIiwgICAgICAgICAgIFdSSVRFX1NUUklOR0lGWX0sICAgLy8gVW5pcXVlbHkgaWRlbnRpZmllcyBpbmRpdmlkdWFsIHBoeXNpY2FsIHRhcmdldC4KKworICAgICAgICB7Ik1BVEVSSUFMIiwgICAgICAgICBXUklURV9TVFJJTkdJRll9LCAgIC8vIElkZW50aWZpZXMgdGhlIG1hdGVyaWFsIG9uIHdoaWNoIHRoZSB0YXJnZXQgd2FzIHByb2R1Y2VkIHVzaW5nIGEgY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHRoIGUgbWF0ZXJpYWwuIFRoaXMgaXMgaW50ZW5kIGVkIHRvIGJlIHVzZWQgZm9yIElUOC43CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGh5c2ljYWwgdGFyZ2V0cyBvbmx5IChpLmUgLiBJVDguNy8xIGEgbmQgSVQ4LjcvMikuCisKKyAgICAgICAgeyJJTlNUUlVNRU5UQVRJT04iLCAgV1JJVEVfU1RSSU5HSUZZfSwgICAvLyBVc2VkIHRvIHJlcG9ydCB0aGUgc3BlY2lmaWMgaW5zdHJ1bWVudGF0aW9uIHVzZWQgKG1hbnVmYWN0dXJlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RlbCBudW1iZXIpIHRvIGdlbmVyYXRlIHRoZSBkYXRhIHJlcG9ydGVkLiBUaGlzIGRhdGEgd2lsbCBvZnRlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFydGljdWxhciBkYXRhIGNvbGxlY3RlZCB0aGFuIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXh0ZW5zaXZlIGxpc3Qgb2Ygc3BlY2lmaWMgZGV0YWlscy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWN0cmFsIGRhdGEgb3IgZGF0YSBkZXJpdmVkIGZyb20gc3BlY3Ryb3Bob3RvbWV0cnkuCisKKyAgICAgICAgeyJNRUFTVVJFTUVOVF9TT1VSQ0UiLCBXUklURV9TVFJJTkdJRll9LCAvLyBJbGx1bWluYXRpb24gdXNlZCBmb3Igc3BlY3RyYWwgbWVhc3VyZW1lbnRzLiBUaGlzIGRhdGEgaGVscHMgcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZ3VpZGUgdG8gdGhlIHBvdGVudGlhbCBmb3IgaXNzdWVzIG9mIHBhcGVyIGZsdW9yZXNjZW5jZSwgZXRjLgorCisgICAgICAgIHsiUFJJTlRfQ09ORElUSU9OUyIsIFdSSVRFX1NUUklOR0lGWX0sICAgLy8gVXNlZCB0byBkZWZpbmUgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgcHJpbnRlZCBzaGVldCBiZWluZyByZXBvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGVyZSBzdGFuZGFyZCBjb25kaXRpb25zIGhhdmUgYmVlbiBkZWZpbmVkIChlLmcuLCBTV09QIGF0IG5vbWluYWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmFtZWQgY29uZGl0aW9ucyBtYXkgc3VmZmljZS4gT3RoZXJ3aXNlLCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWRlZC4KKworICAgICAgICB7IlNBTVBMRV9CQUNLSU5HIiwgICBXUklURV9TVFJJTkdJRll9LCAgIC8vIElkZW50aWZpZXMgdGhlIGJhY2tpbmcgbWF0ZXJpYWwgdXNlZCBiZWhpbmQgdGhlIHNhbXBsZSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZWFzdXJlbWVudC4gQWxsb3dlZCB2YWx1ZXMgYXJlIJNibGFjaz8gk3doaXRlPyBvciB7Im5hIi4KKworICAgICAgICB7IkNISVNRX0RPRiIsICAgICAgICBXUklURV9TVFJJTkdJRll9LCAgIC8vIERlZ3JlZXMgb2YgZnJlZWRvbSBhc3NvY2lhdGVkIHdpdGggdGhlIENoaSBzcXVhcmVkIHN0YXRpc3RpYworCisgICAgICAgLy8gYmVsb3cgcHJvcGVydGllcyBhcmUgbmV3IGluIHJlY2VudCBzcGVjczoKKworICAgICAgICB7Ik1FQVNVUkVNRU5UX0dFT01FVFJZIiwgV1JJVEVfU1RSSU5HSUZZfSwgLy8gVGhlIHR5cGUgb2YgbWVhc3VyZW1lbnQsIGVpdGhlciByZWZsZWN0aW9uIG9yIHRyYW5zbWlzc2lvbiwgc2hvdWxkIGJlIGluZGljYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsb25nIHdpdGggZGV0YWlscyBvZiB0aGUgZ2VvbWV0cnkgYW5kIHRoZSBhcGVydHVyZSBzaXplIGFuZCBzaGFwZS4gRm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRyYW5zbWlzc2lvbiBtZWFzdXJlbWVudHMgaXQgaXMgaW1wb3J0YW50IHRvIGlkZW50aWZ5IDAvZGlmZnVzZSwgZGlmZnVzZS8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wYWwgb3IgaW50ZWdyYXRpbmcgc3BoZXJlLCBldGMuIEZvciByZWZsZWN0aW9uIGl0IGlzIGltcG9ydGFudCB0byBpZGVudGlmeSAwLzQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDQ1LzAsIHNwaGVyZSAoc3BlY3VsYXIgaW5jbHVkZWQgb3IgZXhjbHVkZWQpLCBldGMuCisKKyAgICAgICB7IkZJTFRFUiIsICAgICAgICAgICAgV1JJVEVfU1RSSU5HSUZZfSwgICAvLyBJZGVudGlmaWVzIHRoZSB1c2Ugb2YgcGh5c2ljYWwgZmlsdGVyKHMpIGR1cmluZyBtZWFzdXJlbWVudC4gVHlwaWNhbGx5IHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZW5vdGUgdGhlIHVzZSBvZiBmaWx0ZXJzIHN1Y2ggYXMgbm9uZSwgRDY1LCBSZWQsIEdyZWVuIG9yIEJsdWUuCisKKyAgICAgICB7IlBPTEFSSVpBVElPTiIsICAgICAgV1JJVEVfU1RSSU5HSUZZfSwgICAvLyBJZGVudGlmaWVzIHRoZSB1c2Ugb2YgYSBwaHlzaWNhbCBwb2xhcml6YXRpb24gZmlsdGVyIGR1cmluZyBtZWFzdXJlbWVudC4gQWxsb3dlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlcyBhcmUgeyJ5ZXM/IJN3aGl0ZT8gk25vbmU/b3Igk25hPworCisgICAgICAgeyJXRUlHSFRJTkdfRlVOQ1RJT04iLCBXUklURV9QQUlSfSwgICAvLyBJbmRpY2F0ZXMgc3VjaCBmdW5jdGlvbnMgYXM6IHRoZSBDSUUgc3RhbmRhcmQgb2JzZXJ2ZXIgZnVuY3Rpb25zIHVzZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRpb24gb2YgdmFyaW91cyBkYXRhIHBhcmFtZXRlcnMgKDIgZGVncmVlIGFuZCAxMCBkZWdyZWUpLCBDSUUgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbGx1bWluYW50IGZ1bmN0aW9ucyB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbiBvZiB2YXJpb3VzIGRhdGEgcGFyYW1ldGVycyAoZS5nLiwgRDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEQ2NSwgZXRjLiksIGRlbnNpdHkgc3RhdHVzIHJlc3BvbnNlLCBldGMuIElmIHVzZWQgdGhlcmUgc2hhbGwgYmUgYXQgbGVhc3Qgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmFtZS12YWx1ZSBwYWlyIGZvbGxvd2luZyB0aGUgV0VJR0hUSU5HX0ZVTkNUSU9OIHRhZy9rZXl3b3JkLiBUaGUgZmlyc3QgYXR0cmlidXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIHNldCBzaGFsbCBiZSB7Im5hbWUiIGFuZCBzaGFsbCBpZGVudGlmeSB0aGUgcGFydGljdWxhciBwYXJhbWV0ZXIgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgc2Vjb25kIHNoYWxsIGJlIHsidmFsdWUiIGFuZCBzaGFsbCBwcm92aWRlIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhhdCBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBBU0NJSSBkYXRhLCBhIHN0cmluZyBjb250YWluaW5nIHRoZSBOYW1lIGFuZCBWYWx1ZSBhdHRyaWJ1dGUgcGFpcnMgc2hhbGwgZm9sbG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdlaWdodGluZyBmdW5jdGlvbiBrZXl3b3JkLiBBIHNlbWktY29sb24gc2VwYXJhdGVzIGF0dHJpYnV0ZSBwYWlycyBmcm9tIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciBhbmQgd2l0aGluIHRoZSBhdHRyaWJ1dGUgdGhlIG5hbWUgYW5kIHZhbHVlIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb21tYS4KKworICAgICAgIHsiQ09NUFVUQVRJT05BTF9QQVJBTUVURVIiLCBXUklURV9QQUlSfSwgLy8gUGFyYW1ldGVyIHRoYXQgaXMgdXNlZCBpbiBjb21wdXRpbmcgYSB2YWx1ZSBmcm9tIG1lYXN1cmVkIGRhdGEuIE5hbWUgaXMgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgY2FsY3VsYXRpb24sIHBhcmFtZXRlciBpcyB0aGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorCisgICAgICAgeyJUQVJHRVRfVFlQRSIsICAgICAgICBXUklURV9TVFJJTkdJRll9LCAgLy8gVGhlIHR5cGUgb2YgdGFyZ2V0IGJlaW5nIG1lYXN1cmVkLCBlLmcuIElUOC43LzEsIElUOC43LzMsIHVzZXIgZGVmaW5lZCwgZXRjLgorCisgICAgICAgeyJDT0xPUkFOVCIsICAgICAgICAgICBXUklURV9TVFJJTkdJRll9LCAgLy8gSWRlbnRpZmllcyB0aGUgY29sb3JhbnQocykgdXNlZCBpbiBjcmVhdGluZyB0aGUgdGFyZ2V0LgorCisgICAgICAgeyJUQUJMRV9ERVNDUklQVE9SIiwgICBXUklURV9TVFJJTkdJRll9LCAgLy8gRGVzY3JpYmVzIHRoZSBwdXJwb3NlIG9yIGNvbnRlbnRzIG9mIGEgZGF0YSB0YWJsZS4KKworICAgICAgIHsiVEFCTEVfTkFNRSIsICAgICAgICAgV1JJVEVfU1RSSU5HSUZZfSAgIC8vIFByb3ZpZGVzIGEgc2hvcnQgbmFtZSBmb3IgYSBkYXRhIHRhYmxlLgorfTsKKworI2RlZmluZSBOVU1QUkVERUZJTkVEUFJPUFMgKHNpemVvZihQcmVkZWZpbmVkUHJvcGVydGllcykvc2l6ZW9mKFBST1BFUlRZKSkKKworCisvLyBQcmVkZWZpbmVkIHNhbXBsZSB0eXBlcyBvbiBkYXRhc2V0CitzdGF0aWMgY29uc3QgY2hhciogUHJlZGVmaW5lZFNhbXBsZUlEW10gPSB7CisgICAgICAgICJTQU1QTEVfSUQiLCAgICAgIC8vIElkZW50aWZpZXMgc2FtcGxlIHRoYXQgZGF0YSByZXByZXNlbnRzCisgICAgICAgICJTVFJJTkciLCAgICAgICAgIC8vIElkZW50aWZpZXMgbGFiZWwsIG9yIG90aGVyIG5vbi1tYWNoaW5lIHJlYWRhYmxlIHZhbHVlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYWx1ZSBtdXN0IGJlZ2luIGFuZCBlbmQgd2l0aCBhICIgc3ltYm9sCisKKyAgICAgICAgIkNNWUtfQyIsICAgICAgICAgLy8gQ3lhbiBjb21wb25lbnQgb2YgQ01ZSyBkYXRhIGV4cHJlc3NlZCBhcyBhIHBlcmNlbnRhZ2UKKyAgICAgICAgIkNNWUtfTSIsICAgICAgICAgLy8gTWFnZW50YSBjb21wb25lbnQgb2YgQ01ZSyBkYXRhIGV4cHJlc3NlZCBhcyBhIHBlcmNlbnRhZ2UKKyAgICAgICAgIkNNWUtfWSIsICAgICAgICAgLy8gWWVsbG93IGNvbXBvbmVudCBvZiBDTVlLIGRhdGEgZXhwcmVzc2VkIGFzIGEgcGVyY2VudGFnZQorICAgICAgICAiQ01ZS19LIiwgICAgICAgICAvLyBCbGFjayBjb21wb25lbnQgb2YgQ01ZSyBkYXRhIGV4cHJlc3NlZCBhcyBhIHBlcmNlbnRhZ2UKKyAgICAgICAgIkRfUkVEIiwgICAgICAgICAgLy8gUmVkIGZpbHRlciBkZW5zaXR5CisgICAgICAgICJEX0dSRUVOIiwgICAgICAgIC8vIEdyZWVuIGZpbHRlciBkZW5zaXR5CisgICAgICAgICJEX0JMVUUiLCAgICAgICAgIC8vIEJsdWUgZmlsdGVyIGRlbnNpdHkKKyAgICAgICAgIkRfVklTIiwgICAgICAgICAgLy8gVmlzdWFsIGZpbHRlciBkZW5zaXR5CisgICAgICAgICJEX01BSk9SX0ZJTFRFUiIsIC8vIE1ham9yIGZpbHRlciBkIGVuc2l0eQorICAgICAgICAiUkdCX1IiLCAgICAgICAgICAvLyBSZWQgY29tcG9uZW50IG9mIFJHQiBkYXRhCisgICAgICAgICJSR0JfRyIsICAgICAgICAgIC8vIEdyZWVuIGNvbXBvbmVudCBvZiBSR0IgZGF0YQorICAgICAgICAiUkdCX0IiLCAgICAgICAgICAvLyBCbHVlIGNvbSBwb25lbnQgb2YgUkdCIGRhdGEKKyAgICAgICAgIlNQRUNUUkFMX05NIiwgICAgLy8gV2F2ZWxlbmd0aCBvZiBtZWFzdXJlbWVudCBleHByZXNzZWQgaW4gbmFub21ldGVycworICAgICAgICAiU1BFQ1RSQUxfUENUIiwgICAvLyBQZXJjZW50YWdlIHJlZmxlY3RhbmNlL3RyYW5zbWl0dGFuY2UKKyAgICAgICAgIlNQRUNUUkFMX0RFQyIsICAgLy8gUmVmbGVjdGFuY2UvdHJhbnNtaXR0YW5jZQorICAgICAgICAiWFlaX1giLCAgICAgICAgICAvLyBYIGNvbXBvbmVudCBvZiB0cmlzdGltdWx1cyBkYXRhCisgICAgICAgICJYWVpfWSIsICAgICAgICAgIC8vIFkgY29tcG9uZW50IG9mIHRyaXN0aW11bHVzIGRhdGEKKyAgICAgICAgIlhZWl9aIiwgICAgICAgICAgLy8gWiBjb21wb25lbnQgb2YgdHJpc3RpbXVsdXMgZGF0YQorICAgICAgICAiWFlZX1giICAgICAgICAgICAvLyB4IGNvbXBvbmVudCBvZiBjaHJvbWF0aWNpdHkgZGF0YQorICAgICAgICAiWFlZX1kiLCAgICAgICAgICAvLyB5IGNvbXBvbmVudCBvZiBjaHJvbWF0aWNpdHkgZGF0YQorICAgICAgICAiWFlZX0NBUFkiLCAgICAgICAvLyBZIGNvbXBvbmVudCBvZiB0cmlzdGltdWx1cyBkYXRhCisgICAgICAgICJMQUJfTCIsICAgICAgICAgIC8vIEwqIGNvbXBvbmVudCBvZiBMYWIgZGF0YQorICAgICAgICAiTEFCX0EiLCAgICAgICAgICAvLyBhKiBjb21wb25lbnQgb2YgTGFiIGRhdGEKKyAgICAgICAgIkxBQl9CIiwgICAgICAgICAgLy8gYiogY29tcG9uZW50IG9mIExhYiBkYXRhCisgICAgICAgICJMQUJfQyIsICAgICAgICAgIC8vIEMqYWIgY29tcG9uZW50IG9mIExhYiBkYXRhCisgICAgICAgICJMQUJfSCIsICAgICAgICAgIC8vIGhhYiBjb21wb25lbnQgb2YgTGFiIGRhdGEKKyAgICAgICAgIkxBQl9ERSIsICAgICAgICAgLy8gQ0lFIGRFCisgICAgICAgICJMQUJfREVfOTQiLCAgICAgIC8vIENJRSBkRSB1c2luZyBDSUUgOTQKKyAgICAgICAgIkxBQl9ERV9DTUMiLCAgICAgLy8gZEUgdXNpbmcgQ01DCisgICAgICAgICJMQUJfREVfMjAwMCIsICAgIC8vIENJRSBkRSB1c2luZyBDSUUgREUgMjAwMAorICAgICAgICAiTUVBTl9ERSIsICAgICAgICAvLyBNZWFuIERlbHRhIEUgKExBQl9ERSkgb2Ygc2FtcGxlcyBjb21wYXJlZCB0byBiYXRjaCBhdmVyYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChVc2VkIGZvciBkYXRhIGZpbGVzIGZvciBBTlNJIElUOC43LzEgYW5kIElUOC43LzIgdGFyZ2V0cykKKyAgICAgICAgIlNUREVWX1giLCAgICAgICAgLy8gU3RhbmRhcmQgZGV2aWF0aW9uIG9mIFggKHRyaXN0aW11bHVzIGRhdGEpCisgICAgICAgICJTVERFVl9ZIiwgICAgICAgIC8vIFN0YW5kYXJkIGRldmlhdGlvbiBvZiBZICh0cmlzdGltdWx1cyBkYXRhKQorICAgICAgICAiU1RERVZfWiIsICAgICAgICAvLyBTdGFuZGFyZCBkZXZpYXRpb24gb2YgWiAodHJpc3RpbXVsdXMgZGF0YSkKKyAgICAgICAgIlNUREVWX0wiLCAgICAgICAgLy8gU3RhbmRhcmQgZGV2aWF0aW9uIG9mIEwqCisgICAgICAgICJTVERFVl9BIiwgICAgICAgIC8vIFN0YW5kYXJkIGRldmlhdGlvbiBvZiBhKgorICAgICAgICAiU1RERVZfQiIsICAgICAgICAvLyBTdGFuZGFyZCBkZXZpYXRpb24gb2YgYioKKyAgICAgICAgIlNUREVWX0RFIiwgICAgICAgLy8gU3RhbmRhcmQgZGV2aWF0aW9uIG9mIENJRSBkRQorICAgICAgICAiQ0hJX1NRRF9QQVIifTsgICAvLyBUaGUgYXZlcmFnZSBvZiB0aGUgc3RhbmRhcmQgZGV2aWF0aW9ucyBvZiBMKiwgYSogYW5kIGIqLiBJdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIHRvIGRlcml2ZSBhbiBlc3RpbWF0ZSBvZiB0aGUgY2hpLXNxdWFyZWQgcGFyYW1ldGVyIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlY29tbWVuZGVkIGFzIHRoZSBwcmVkaWN0b3Igb2YgdGhlIHZhcmlhYmlsaXR5IG9mIGRFCisKKyNkZWZpbmUgTlVNUFJFREVGSU5FRFNBTVBMRUlEIChzaXplb2YoUHJlZGVmaW5lZFNhbXBsZUlEKS9zaXplb2YoY2hhciAqKSkKKworLy9Gb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHNvbWUgaW50ZXJuYWwgZnVuY3Rpb25zCitzdGF0aWMgdm9pZCogQWxsb2NDaHVuayhjbXNJVDgqIGl0OCwgY21zVUludDMyTnVtYmVyIHNpemUpOworCisvLyBDaGVja3Mgd2hhdGV2ZXIgYyBpcyBhIHNlcGFyYXRvcgorc3RhdGljCitjbXNCb29sIGlzc2VwYXJhdG9yKGludCBjKQoreworICAgIHJldHVybiAoYyA9PSAnICcpIHx8IChjID09ICdcdCcpIDsgCit9CisKKy8vIENoZWNrcyB3aGF0ZXZlciBjIGlzIGEgdmFsaWQgaWRlbnRpZmllciBjaGFyCitzdGF0aWMKK2Ntc0Jvb2wgaXNtaWRkbGUoaW50IGMpCit7CisgICByZXR1cm4gKCFpc3NlcGFyYXRvcihjKSAmJiAoYyAhPSAnIycpICYmIChjICE9J1wiJykgJiYgKGMgIT0gJ1wnJykgJiYgKGMgPiAzMikgJiYgKGMgPCAxMjcpKTsKK30KKworLy8gQ2hlY2tzIHdoYXRzZXZlciBjIGlzIGEgdmFsaWQgaWRlbnRpZmllciBtaWRkbGUgY2hhci4KK3N0YXRpYworY21zQm9vbCBpc2lkY2hhcihpbnQgYykKK3sKKyAgIHJldHVybiBpc2FsbnVtKGMpIHx8IGlzbWlkZGxlKGMpOworfQorCisvLyBDaGVja3Mgd2hhdHNldmVyIGMgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGZpcnN0IGNoYXIuCitzdGF0aWMKK2Ntc0Jvb2wgaXNmaXJzdGlkY2hhcihpbnQgYykKK3sKKyAgICAgcmV0dXJuICFpc2RpZ2l0KGMpICYmIGlzbWlkZGxlKGMpOworfQorCisvLyBHdWVzcyB3aGV0aGVyIHRoZSBzdXBwbGllZCBwYXRoIGxvb2tzIGxpa2UgYW4gYWJzb2x1dGUgcGF0aAorc3RhdGljCitjbXNCb29sIGlzYWJzb2x1dGVwYXRoKGNvbnN0IGNoYXIgKnBhdGgpCit7CisgICAgY2hhciBUaHJlZUNoYXJzWzRdOworCisgICAgaWYocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgaWYgKHBhdGhbMF0gPT0gMCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgc3RybmNweShUaHJlZUNoYXJzLCBwYXRoLCAzKTsKKyAgICBUaHJlZUNoYXJzWzNdID0gMDsKKworICAgIGlmKFRocmVlQ2hhcnNbMF0gPT0gRElSX0NIQVIpCisgICAgICAgIHJldHVybiBUUlVFOworCisjaWZkZWYgIENNU19JU19XSU5ET1dTXworICAgIGlmIChpc2FscGhhKChpbnQpIFRocmVlQ2hhcnNbMF0pICYmIFRocmVlQ2hhcnNbMV0gPT0gJzonKQorICAgICAgICByZXR1cm4gVFJVRTsKKyNlbmRpZgorICAgIHJldHVybiBGQUxTRTsKK30KKworCisvLyBNYWtlcyBhIGZpbGUgcGF0aCBiYXNlZCBvbiBhIGdpdmVuIHJlZmVyZW5jZSBwYXRoCisvLyBOT1RFOiB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgY2hlY2sgaWYgdGhlIHBhdGggZXhpc3RzIG9yIGV2ZW4gaWYgaXQncyBsZWdhbAorc3RhdGljCitjbXNCb29sIEJ1aWxkQWJzb2x1dGVQYXRoKGNvbnN0IGNoYXIgKnJlbFBhdGgsIGNvbnN0IGNoYXIgKmJhc2VQYXRoLCBjaGFyICpidWZmZXIsIGNtc1VJbnQzMk51bWJlciBNYXhMZW4pCit7CisgICAgY2hhciAqdGFpbDsKKyAgICBjbXNVSW50MzJOdW1iZXIgbGVuOworCisgICAgLy8gQWxyZWFkeSBhYnNvbHV0ZT8KKyAgICBpZiAoaXNhYnNvbHV0ZXBhdGgocmVsUGF0aCkpIHsKKworICAgICAgICBzdHJuY3B5KGJ1ZmZlciwgcmVsUGF0aCwgTWF4TGVuKTsKKyAgICAgICAgYnVmZmVyW01heExlbi0xXSA9IDA7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIC8vIE5vLCBzZWFyY2ggZm9yIGxhc3QKKyAgICBzdHJuY3B5KGJ1ZmZlciwgYmFzZVBhdGgsIE1heExlbik7CisgICAgYnVmZmVyW01heExlbi0xXSA9IDA7CisKKyAgICB0YWlsID0gc3RycmNocihidWZmZXIsIERJUl9DSEFSKTsKKyAgICBpZiAodGFpbCA9PSBOVUxMKSByZXR1cm4gRkFMU0U7ICAgIC8vIElzIG5vdCBhYnNvbHV0ZSBhbmQgaGFzIG5vIHNlcGFyYXRvcnM/PworCisgICAgbGVuID0gKGNtc1VJbnQzMk51bWJlcikgKHRhaWwgLSBidWZmZXIpOworICAgIGlmIChsZW4gPj0gTWF4TGVuKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBObyBuZWVkIHRvIGFzc3VyZSB6ZXJvIHRlcm1pbmF0b3Igb3ZlciBoZXJlCisgICAgc3RybmNweSh0YWlsICsgMSwgcmVsUGF0aCwgTWF4TGVuIC0gbGVuKTsKKworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIE1ha2Ugc3VyZSBubyBleHBsb2l0IGlzIGJlaW5nIGV2ZW4gdHJpZWQKK3N0YXRpYworY29uc3QgY2hhciogTm9NZXRhKGNvbnN0IGNoYXIqIHN0cikKK3sKKyAgICBpZiAoc3RyY2hyKHN0ciwgJyUnKSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gIioqKiogQ09SUlVQVEVEIEZPUk1BVCBTVFJJTkcgKioqIjsKKworICAgIHJldHVybiBzdHI7Cit9CisKKy8vIFN5bnRheCBlcnJvcgorc3RhdGljCitjbXNCb29sIFN5bkVycm9yKGNtc0lUOCogaXQ4LCBjb25zdCBjaGFyICpUeHQsIC4uLikKK3sKKyAgICBjaGFyIEJ1ZmZlclsyNTZdLCBFcnJNc2dbMTAyNF07CisgICAgdmFfbGlzdCBhcmdzOworCisgICAgdmFfc3RhcnQoYXJncywgVHh0KTsKKyAgICB2c25wcmludGYoQnVmZmVyLCAyNTUsIFR4dCwgYXJncyk7CisgICAgQnVmZmVyWzI1NV0gPSAwOworICAgIHZhX2VuZChhcmdzKTsKKworICAgIHNucHJpbnRmKEVyck1zZywgMTAyMywgIiVzOiBMaW5lICVkLCAlcyIsIGl0OC0+RmlsZVN0YWNrW2l0OCAtPkluY2x1ZGVTUF0tPkZpbGVOYW1lLCBpdDgtPmxpbmVubywgQnVmZmVyKTsKKyAgICBFcnJNc2dbMTAyM10gPSAwOworICAgIGl0OC0+c3kgPSBTU1lORVJST1I7CisgICAgY21zU2lnbmFsRXJyb3IoaXQ4IC0+Q29udGV4dElELCBjbXNFUlJPUl9DT1JSVVBUSU9OX0RFVEVDVEVELCAiJXMiLCBFcnJNc2cpOworICAgIHJldHVybiBGQUxTRTsKK30KKworLy8gQ2hlY2sgaWYgY3VycmVudCBzeW1ib2wgaXMgc2FtZSBhcyBzcGVjaWZpZWQuIGlzc3VlIGFuIGVycm9yIGVsc2UuCitzdGF0aWMKK2Ntc0Jvb2wgQ2hlY2soY21zSVQ4KiBpdDgsIFNZTUJPTCBzeSwgY29uc3QgY2hhciogRXJyKQoreworICAgICAgICBpZiAoaXQ4IC0+IHN5ICE9IHN5KQorICAgICAgICAgICAgICAgIHJldHVybiBTeW5FcnJvcihpdDgsIE5vTWV0YShFcnIpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIFJlYWQgTmV4dCBjaGFyYWN0ZXIgZnJvbSBzdHJlYW0KK3N0YXRpYwordm9pZCBOZXh0Q2goY21zSVQ4KiBpdDgpCit7CisgICAgaWYgKGl0OCAtPiBGaWxlU3RhY2tbaXQ4IC0+SW5jbHVkZVNQXS0+U3RyZWFtKSB7CisKKyAgICAgICAgaXQ4IC0+Y2ggPSBmZ2V0YyhpdDggLT5GaWxlU3RhY2tbaXQ4IC0+SW5jbHVkZVNQXS0+U3RyZWFtKTsKKworICAgICAgICBpZiAoZmVvZihpdDggLT4gRmlsZVN0YWNrW2l0OCAtPkluY2x1ZGVTUF0tPlN0cmVhbSkpICB7CisKKyAgICAgICAgICAgIGlmIChpdDggLT5JbmNsdWRlU1AgPiAwKSB7CisKKyAgICAgICAgICAgICAgICBmY2xvc2UoaXQ4IC0+RmlsZVN0YWNrW2l0OC0+SW5jbHVkZVNQLS1dLT5TdHJlYW0pOworICAgICAgICAgICAgICAgIGl0OCAtPiBjaCA9ICcgJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hpdGVzcGFjZSB0byBiZSBpZ25vcmVkCisKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGl0OCAtPmNoID0gMDsgICAvLyBFT0YKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaXQ4LT5jaCA9ICppdDgtPlNvdXJjZTsKKyAgICAgICAgaWYgKGl0OC0+Y2gpIGl0OC0+U291cmNlKys7CisgICAgfQorfQorCisKKy8vIFRyeSB0byBzZWUgaWYgY3VycmVudCBpZGVudGlmaWVyIGlzIGEga2V5d29yZCwgaWYgc28gcmV0dXJuIHRoZSByZWZlcnJlZCBzeW1ib2wKK3N0YXRpYworU1lNQk9MIEJpblNyY2hLZXkoY29uc3QgY2hhciAqaWQpCit7CisgICAgaW50IGwgPSAxOworICAgIGludCByID0gTlVNS0VZUzsKKyAgICBpbnQgeCwgcmVzOworCisgICAgd2hpbGUgKHIgPj0gbCkKKyAgICB7CisgICAgICAgIHggPSAobCtyKS8yOworICAgICAgICByZXMgPSBjbXNzdHJjYXNlY21wKGlkLCBUYWJLZXlzW3gtMV0uaWQpOworICAgICAgICBpZiAocmVzID09IDApIHJldHVybiBUYWJLZXlzW3gtMV0uc3k7CisgICAgICAgIGlmIChyZXMgPCAwKSByID0geCAtIDE7CisgICAgICAgIGVsc2UgbCA9IHggKyAxOworICAgIH0KKworICAgIHJldHVybiBTTk9ORTsKK30KKworCisvLyAxMCBebgorc3RhdGljCitjbXNGbG9hdDY0TnVtYmVyIHhwb3cxMChpbnQgbikKK3sKKyAgICByZXR1cm4gcG93KDEwLCAoY21zRmxvYXQ2NE51bWJlcikgbik7Cit9CisKKworLy8gIFJlYWRzIGEgUmVhbCBudW1iZXIsIHRyaWVzIHRvIGZvbGxvdyBmcm9tIGludGVnZXIgbnVtYmVyCitzdGF0aWMKK3ZvaWQgUmVhZFJlYWwoY21zSVQ4KiBpdDgsIGludCBpbnVtKQoreworICAgIGl0OC0+ZG51bSA9IChjbXNGbG9hdDY0TnVtYmVyKSBpbnVtOworCisgICAgd2hpbGUgKGlzZGlnaXQoaXQ4LT5jaCkpIHsKKworICAgICAgICBpdDgtPmRudW0gPSBpdDgtPmRudW0gKiAxMC4wICsgKGl0OC0+Y2ggLSAnMCcpOworICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICB9CisKKyAgICBpZiAoaXQ4LT5jaCA9PSAnLicpIHsgICAgICAgIC8vIERlY2ltYWwgcG9pbnQKKworICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIGZyYWMgPSAwLjA7ICAgICAgLy8gZnJhY3Rpb24KKyAgICAgICAgaW50IHByZWMgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8vIHByZWNpc2lvbgorCisgICAgICAgIE5leHRDaChpdDgpOyAgICAgICAgICAgICAgIC8vIEVhdHMgZGVjLiBwb2ludAorCisgICAgICAgIHdoaWxlIChpc2RpZ2l0KGl0OC0+Y2gpKSB7CisKKyAgICAgICAgICAgIGZyYWMgPSBmcmFjICogMTAuMCArIChpdDgtPmNoIC0gJzAnKTsKKyAgICAgICAgICAgIHByZWMrKzsKKyAgICAgICAgICAgIE5leHRDaChpdDgpOworICAgICAgICB9CisKKyAgICAgICAgaXQ4LT5kbnVtID0gaXQ4LT5kbnVtICsgKGZyYWMgLyB4cG93MTAocHJlYykpOworICAgIH0KKworICAgIC8vIEV4cG9uZW50LCBleGFtcGxlIDM0LjAwRSsyMAorICAgIGlmICh0b3VwcGVyKGl0OC0+Y2gpID09ICdFJykgeworCisgICAgICAgIGludCBlOworICAgICAgICBpbnQgc2duOworCisgICAgICAgIE5leHRDaChpdDgpOyBzZ24gPSAxOworCisgICAgICAgIGlmIChpdDgtPmNoID09ICctJykgeworCisgICAgICAgICAgICBzZ24gPSAtMTsgTmV4dENoKGl0OCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGl0OC0+Y2ggPT0gJysnKSB7CisKKyAgICAgICAgICAgICAgICBzZ24gPSArMTsKKyAgICAgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZSA9IDA7CisgICAgICAgICAgICB3aGlsZSAoaXNkaWdpdChpdDgtPmNoKSkgeworCisgICAgICAgICAgICAgICAgaWYgKChjbXNGbG9hdDY0TnVtYmVyKSBlICogMTBMIDwgSU5UX01BWCkKKyAgICAgICAgICAgICAgICAgICAgZSA9IGUgKiAxMCArIChpdDgtPmNoIC0gJzAnKTsKKworICAgICAgICAgICAgICAgIE5leHRDaChpdDgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlID0gc2duKmU7CisgICAgICAgICAgICBpdDggLT4gZG51bSA9IGl0OCAtPiBkbnVtICogeHBvdzEwKGUpOworICAgIH0KK30KKworLy8gUGFyc2VzIGEgZmxvYXQgbnVtYmVyCisvLyBUaGlzIGNhbiBub3QgY2FsbCBkaXJlY3RseSBhdG9mIGJlY2F1c2UgaXQgdXNlcyBsb2NhbGUgZGVwZW5kYW50CisvLyBwYXJzaW5nLCB3aGlsZSBDQ01YIGZpbGVzIGFsd2F5cyB1c2UgLiBhcyBkZWNpbWFsIHNlcGFyYXRvcgorc3RhdGljCitjbXNGbG9hdDY0TnVtYmVyIFBhcnNlRmxvYXROdW1iZXIoY29uc3QgY2hhciAqQnVmZmVyKQoreworICAgIGNtc0Zsb2F0NjROdW1iZXIgZG51bSA9IDAuMDsKKyAgICBpbnQgc2lnbiA9IDE7CisKKyAgICAvLyBrZWVwIHNhZmUKKyAgICBpZiAoQnVmZmVyID09IE5VTEwpIHJldHVybiAwLjA7CisKKyAgICBpZiAoKkJ1ZmZlciA9PSAnLScgfHwgKkJ1ZmZlciA9PSAnKycpIHsKKworICAgICAgICAgc2lnbiA9ICgqQnVmZmVyID09ICctJykgPyAtMSA6IDE7CisgICAgICAgICBCdWZmZXIrKzsKKyAgICB9CisKKworICAgIHdoaWxlICgqQnVmZmVyICYmIGlzZGlnaXQoKGludCkgKkJ1ZmZlcikpIHsKKworICAgICAgICBkbnVtID0gZG51bSAqIDEwLjAgKyAoKkJ1ZmZlciAtICcwJyk7CisgICAgICAgIGlmICgqQnVmZmVyKSBCdWZmZXIrKzsKKyAgICB9CisKKyAgICBpZiAoKkJ1ZmZlciA9PSAnLicpIHsKKworICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIGZyYWMgPSAwLjA7ICAgICAgLy8gZnJhY3Rpb24KKyAgICAgICAgaW50IHByZWMgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8vIHByZWNpc3Npb24KKworICAgICAgICBpZiAoKkJ1ZmZlcikgQnVmZmVyKys7CisKKyAgICAgICAgd2hpbGUgKCpCdWZmZXIgJiYgaXNkaWdpdCgoaW50KSAqQnVmZmVyKSkgeworCisgICAgICAgICAgICBmcmFjID0gZnJhYyAqIDEwLjAgKyAoKkJ1ZmZlciAtICcwJyk7CisgICAgICAgICAgICBwcmVjKys7CisgICAgICAgICAgICBpZiAoKkJ1ZmZlcikgQnVmZmVyKys7CisgICAgICAgIH0KKworICAgICAgICBkbnVtID0gZG51bSArIChmcmFjIC8geHBvdzEwKHByZWMpKTsKKyAgICB9CisKKyAgICAvLyBFeHBvbmVudCwgZXhhbXBsZSAzNC4wMEUrMjAKKyAgICBpZiAoKkJ1ZmZlciAmJiB0b3VwcGVyKCpCdWZmZXIpID09ICdFJykgeworCisgICAgICAgIGludCBlOworICAgICAgICBpbnQgc2duOworCisgICAgICAgIGlmICgqQnVmZmVyKSBCdWZmZXIrKzsKKyAgICAgICAgc2duID0gMTsKKworICAgICAgICBpZiAoKkJ1ZmZlciA9PSAnLScpIHsKKworICAgICAgICAgICAgc2duID0gLTE7CisgICAgICAgICAgICBpZiAoKkJ1ZmZlcikgQnVmZmVyKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCpCdWZmZXIgPT0gJysnKSB7CisKKyAgICAgICAgICAgICAgICBzZ24gPSArMTsKKyAgICAgICAgICAgICAgICBpZiAoKkJ1ZmZlcikgQnVmZmVyKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGUgPSAwOworICAgICAgICAgICAgd2hpbGUgKCpCdWZmZXIgJiYgaXNkaWdpdCgoaW50KSAqQnVmZmVyKSkgeworCisgICAgICAgICAgICAgICAgaWYgKChjbXNGbG9hdDY0TnVtYmVyKSBlICogMTBMIDwgSU5UX01BWCkKKyAgICAgICAgICAgICAgICAgICAgZSA9IGUgKiAxMCArICgqQnVmZmVyIC0gJzAnKTsKKworICAgICAgICAgICAgICAgIGlmICgqQnVmZmVyKSBCdWZmZXIrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZSA9IHNnbiplOworICAgICAgICAgICAgZG51bSA9IGRudW0gKiB4cG93MTAoZSk7CisgICAgfQorCisgICAgcmV0dXJuIHNpZ24gKiBkbnVtOworfQorCisKKy8vIFJlYWRzIG5leHQgc3ltYm9sCitzdGF0aWMKK3ZvaWQgSW5TeW1ib2woY21zSVQ4KiBpdDgpCit7CisgICAgcmVnaXN0ZXIgY2hhciAqaWRwdHI7CisgICAgcmVnaXN0ZXIgaW50IGs7CisgICAgU1lNQk9MIGtleTsKKyAgICBpbnQgc25nOworICAgIAorICAgIGRvIHsKKworICAgICAgICB3aGlsZSAoaXNzZXBhcmF0b3IoaXQ4LT5jaCkpCisgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKworICAgICAgICBpZiAoaXNmaXJzdGlkY2hhcihpdDgtPmNoKSkgeyAgICAgICAgICAvLyBJZGVudGlmaWVyCisKKyAgICAgICAgICAgIGsgPSAwOworICAgICAgICAgICAgaWRwdHIgPSBpdDgtPmlkOworCisgICAgICAgICAgICBkbyB7CisKKyAgICAgICAgICAgICAgICBpZiAoKytrIDwgTUFYSUQpICppZHB0cisrID0gKGNoYXIpIGl0OC0+Y2g7CisKKyAgICAgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKworICAgICAgICAgICAgfSB3aGlsZSAoaXNpZGNoYXIoaXQ4LT5jaCkpOworCisgICAgICAgICAgICAqaWRwdHIgPSAnXDAnOworCisKKyAgICAgICAgICAgIGtleSA9IEJpblNyY2hLZXkoaXQ4LT5pZCk7CisgICAgICAgICAgICBpZiAoa2V5ID09IFNOT05FKSBpdDgtPnN5ID0gU0lERU5UOworICAgICAgICAgICAgZWxzZSBpdDgtPnN5ID0ga2V5OworCisgICAgICAgIH0KKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJcyBhIG51bWJlcj8KKyAgICAgICAgICAgIGlmIChpc2RpZ2l0KGl0OC0+Y2gpIHx8IGl0OC0+Y2ggPT0gJy4nIHx8IGl0OC0+Y2ggPT0gJy0nIHx8IGl0OC0+Y2ggPT0gJysnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCBzaWduID0gMTsKKworICAgICAgICAgICAgICAgIGlmIChpdDgtPmNoID09ICctJykgeworICAgICAgICAgICAgICAgICAgICBzaWduID0gLTE7CisgICAgICAgICAgICAgICAgICAgIE5leHRDaChpdDgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGl0OC0+aW51bSA9IDA7CisgICAgICAgICAgICAgICAgaXQ4LT5zeSAgID0gU0lOVU07CisKKyAgICAgICAgICAgICAgICBpZiAoaXQ4LT5jaCA9PSAnMCcpIHsgICAgICAgICAgLy8gMHhubm5uIChIZXhhKSBvciAwYm5ubm4gKEJpbmFyeSkKKworICAgICAgICAgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvdXBwZXIoaXQ4LT5jaCkgPT0gJ1gnKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBqOworCisgICAgICAgICAgICAgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpc3hkaWdpdChpdDgtPmNoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdDgtPmNoID0gdG91cHBlcihpdDgtPmNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQ4LT5jaCA+PSAnQScgJiYgaXQ4LT5jaCA8PSAnRicpICBqID0gaXQ4LT5jaCAtJ0EnKzEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaiA9IGl0OC0+Y2ggLSAnMCc7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxvbmcpIGl0OC0+aW51bSAqIDE2TCA+IChsb25nKSBJTlRfTUFYKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3luRXJyb3IoaXQ4LCAiSW52YWxpZCBoZXhhZGVjaW1hbCBudW1iZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0OC0+aW51bSA9IGl0OC0+aW51bSAqIDE2ICsgajsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmICh0b3VwcGVyKGl0OC0+Y2gpID09ICdCJykgeyAgLy8gQmluYXJ5CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBqOworCisgICAgICAgICAgICAgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpdDgtPmNoID09ICcwJyB8fCBpdDgtPmNoID09ICcxJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gaXQ4LT5jaCAtICcwJzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobG9uZykgaXQ4LT5pbnVtICogMkwgPiAobG9uZykgSU5UX01BWCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bkVycm9yKGl0OCwgIkludmFsaWQgYmluYXJ5IG51bWJlciIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQ4LT5pbnVtID0gaXQ4LT5pbnVtICogMiArIGo7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV4dENoKGl0OCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKworICAgICAgICAgICAgICAgIHdoaWxlIChpc2RpZ2l0KGl0OC0+Y2gpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKChsb25nKSBpdDgtPmludW0gKiAxMEwgPiAobG9uZykgSU5UX01BWCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVhZFJlYWwoaXQ4LCBpdDgtPmludW0pOworICAgICAgICAgICAgICAgICAgICAgICAgaXQ4LT5zeSA9IFNETlVNOworICAgICAgICAgICAgICAgICAgICAgICAgaXQ4LT5kbnVtICo9IHNpZ247CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpdDgtPmludW0gPSBpdDgtPmludW0gKiAxMCArIChpdDgtPmNoIC0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgTmV4dENoKGl0OCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGl0OC0+Y2ggPT0gJy4nKSB7CisKKyAgICAgICAgICAgICAgICAgICAgUmVhZFJlYWwoaXQ4LCBpdDgtPmludW0pOworICAgICAgICAgICAgICAgICAgICBpdDgtPnN5ID0gU0ROVU07CisgICAgICAgICAgICAgICAgICAgIGl0OC0+ZG51bSAqPSBzaWduOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaXQ4IC0+IGludW0gKj0gc2lnbjsKKworICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZS4gTnVtYmVycyBmb2xsb3dlZCBieSBsZXR0ZXJzIGFyZSB0YWtlbiBhcyBpZGVudGlmaWVycworCisgICAgICAgICAgICAgICAgaWYgKGlzaWRjaGFyKGl0OCAtPmNoKSkgeworCisgICAgICAgICAgICAgICAgICAgIGlmIChpdDggLT5zeSA9PSBTSU5VTSkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGl0OC0+aWQsICIlZCIsIGl0OC0+aW51bSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwcmludGYoaXQ4LT5pZCwgaXQ4IC0+RG91YmxlRm9ybWF0dGVyLCBpdDgtPmRudW0pOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgayA9IChpbnQpIHN0cmxlbihpdDggLT5pZCk7CisgICAgICAgICAgICAgICAgICAgIGlkcHRyID0gaXQ4IC0+aWQgKyBrOworICAgICAgICAgICAgICAgICAgICBkbyB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2sgPCBNQVhJRCkgKmlkcHRyKysgPSAoY2hhcikgaXQ4LT5jaDsKKworICAgICAgICAgICAgICAgICAgICAgICAgTmV4dENoKGl0OCk7CisKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoaXNpZGNoYXIoaXQ4LT5jaCkpOworCisgICAgICAgICAgICAgICAgICAgICppZHB0ciA9ICdcMCc7CisgICAgICAgICAgICAgICAgICAgIGl0OC0+c3kgPSBTSURFTlQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN3aXRjaCAoKGludCkgaXQ4LT5jaCkgeworCisgICAgICAgIC8vIEVPRiBtYXJrZXIgLS0gaWdub3JlIGl0CisgICAgICAgIGNhc2UgJ1x4MWEnOgorICAgICAgICAgICAgTmV4dENoKGl0OCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBFb2Ygc3RyZWFtIG1hcmtlcnMKKyAgICAgICAgY2FzZSAwOgorICAgICAgICBjYXNlIC0xOgorICAgICAgICAgICAgaXQ4LT5zeSA9IFNFT0Y7CisgICAgICAgICAgICBicmVhazsKKworCisgICAgICAgIC8vIE5leHQgbGluZQorICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICAgICAgICAgIGlmIChpdDggLT5jaCA9PSAnXG4nKSAKKyAgICAgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICAgICAgICAgIGl0OC0+c3kgPSBTRU9MTjsKKyAgICAgICAgICAgIGl0OC0+bGluZW5vKys7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICdcbic6CisgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICAgICAgICAgIGl0OC0+c3kgPSBTRU9MTjsKKyAgICAgICAgICAgIGl0OC0+bGluZW5vKys7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBDb21tZW50CisgICAgICAgIGNhc2UgJyMnOgorICAgICAgICAgICAgTmV4dENoKGl0OCk7CisgICAgICAgICAgICB3aGlsZSAoaXQ4LT5jaCAmJiBpdDgtPmNoICE9ICdcbicgJiYgaXQ4LT5jaCAhPSAnXHInKQorICAgICAgICAgICAgICAgIE5leHRDaChpdDgpOworCisgICAgICAgICAgICBpdDgtPnN5ID0gU0NPTU1FTlQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBTdHJpbmcuCisgICAgICAgIGNhc2UgJ1wnJzoKKyAgICAgICAgY2FzZSAnXCInOgorICAgICAgICAgICAgaWRwdHIgPSBpdDgtPnN0cjsKKyAgICAgICAgICAgIHNuZyA9IGl0OC0+Y2g7CisgICAgICAgICAgICBrID0gMDsKKyAgICAgICAgICAgIE5leHRDaChpdDgpOworCisgICAgICAgICAgICB3aGlsZSAoayA8IE1BWFNUUiAmJiBpdDgtPmNoICE9IHNuZykgeworCisgICAgICAgICAgICAgICAgaWYgKGl0OC0+Y2ggPT0gJ1xuJ3x8IGl0OC0+Y2ggPT0gJ1xyJykgayA9IE1BWFNUUisxOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAqaWRwdHIrKyA9IChjaGFyKSBpdDgtPmNoOworICAgICAgICAgICAgICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICAgICAgICAgICAgICAgICAgaysrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaXQ4LT5zeSA9IFNTVFJJTkc7CisgICAgICAgICAgICAqaWRwdHIgPSAnXDAnOworICAgICAgICAgICAgTmV4dENoKGl0OCk7CisgICAgICAgICAgICBicmVhazsKKworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBTeW5FcnJvcihpdDgsICJVbnJlY29nbml6ZWQgY2hhcmFjdGVyOiAweCV4IiwgaXQ4IC0+Y2gpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgfSB3aGlsZSAoaXQ4LT5zeSA9PSBTQ09NTUVOVCk7CisKKyAgICAvLyBIYW5kbGUgdGhlIGluY2x1ZGUgc3BlY2lhbCB0b2tlbgorCisgICAgaWYgKGl0OCAtPiBzeSA9PSBTSU5DTFVERSkgeworCisgICAgICAgICAgICAgICAgRklMRUNUWCogRmlsZU5lc3Q7CisKKyAgICAgICAgICAgICAgICBpZihpdDggLT4gSW5jbHVkZVNQID49IChNQVhJTkNMVURFLTEpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgU3luRXJyb3IoaXQ4LCAiVG9vIG1hbnkgcmVjdXJzaW9uIGxldmVscyIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5TeW1ib2woaXQ4KTsKKyAgICAgICAgICAgICAgICBpZiAoIUNoZWNrKGl0OCwgU1NUUklORywgIkZpbGVuYW1lIGV4cGVjdGVkIikpIHJldHVybjsKKworICAgICAgICAgICAgICAgIEZpbGVOZXN0ID0gaXQ4IC0+IEZpbGVTdGFja1tpdDggLT4gSW5jbHVkZVNQICsgMV07CisgICAgICAgICAgICAgICAgaWYoRmlsZU5lc3QgPT0gTlVMTCkgeworCisgICAgICAgICAgICAgICAgICAgIEZpbGVOZXN0ID0gaXQ4IC0+RmlsZVN0YWNrW2l0OCAtPiBJbmNsdWRlU1AgKyAxXSA9IChGSUxFQ1RYKilBbGxvY0NodW5rKGl0OCwgc2l6ZW9mKEZJTEVDVFgpKTsKKyAgICAgICAgICAgICAgICAgICAgLy9pZihGaWxlTmVzdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAvLyAgVE9ETzogaG93IHRvIG1hbmFnZSBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbnM/CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKEJ1aWxkQWJzb2x1dGVQYXRoKGl0OC0+c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdDgtPkZpbGVTdGFja1tpdDgtPkluY2x1ZGVTUF0tPkZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlTmVzdC0+RmlsZU5hbWUsIGNtc01BWF9QQVRILTEpID09IEZBTFNFKSB7CisgICAgICAgICAgICAgICAgICAgIFN5bkVycm9yKGl0OCwgIkZpbGUgcGF0aCB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgRmlsZU5lc3QtPlN0cmVhbSA9IGZvcGVuKEZpbGVOZXN0LT5GaWxlTmFtZSwgInJ0Iik7CisgICAgICAgICAgICAgICAgaWYgKEZpbGVOZXN0LT5TdHJlYW0gPT0gTlVMTCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBTeW5FcnJvcihpdDgsICJGaWxlICVzIG5vdCBmb3VuZCIsIEZpbGVOZXN0LT5GaWxlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGl0OC0+SW5jbHVkZVNQKys7CisKKyAgICAgICAgICAgICAgICBpdDggLT5jaCA9ICcgJzsKKyAgICAgICAgICAgICAgICBJblN5bWJvbChpdDgpOworICAgIH0KKworfQorCisvLyBDaGVja3MgZW5kIG9mIGxpbmUgc2VwYXJhdG9yCitzdGF0aWMKK2Ntc0Jvb2wgQ2hlY2tFT0xOKGNtc0lUOCogaXQ4KQoreworICAgICAgICBpZiAoIUNoZWNrKGl0OCwgU0VPTE4sICJFeHBlY3RlZCBzZXBhcmF0b3IiKSkgcmV0dXJuIEZBTFNFOworICAgICAgICB3aGlsZSAoaXQ4IC0+IHN5ID09IFNFT0xOKQorICAgICAgICAgICAgICAgICAgICAgICAgSW5TeW1ib2woaXQ4KTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisKK30KKworLy8gU2tpcCBhIHN5bWJvbAorCitzdGF0aWMKK3ZvaWQgU2tpcChjbXNJVDgqIGl0OCwgU1lNQk9MIHN5KQoreworICAgICAgICBpZiAoaXQ4LT5zeSA9PSBzeSAmJiBpdDgtPnN5ICE9IFNFT0YpCisgICAgICAgICAgICAgICAgICAgICAgICBJblN5bWJvbChpdDgpOworfQorCisKKy8vIFNraXAgbXVsdGlwbGUgRU9MTgorc3RhdGljCit2b2lkIFNraXBFT0xOKGNtc0lUOCogaXQ4KQoreworICAgIHdoaWxlIChpdDgtPnN5ID09IFNFT0xOKSB7CisgICAgICAgICAgICAgSW5TeW1ib2woaXQ4KTsKKyAgICB9Cit9CisKKworLy8gUmV0dXJucyBhIHN0cmluZyBob2xkaW5nIGN1cnJlbnQgdmFsdWUKK3N0YXRpYworY21zQm9vbCBHZXRWYWwoY21zSVQ4KiBpdDgsIGNoYXIqIEJ1ZmZlciwgY21zVUludDMyTnVtYmVyIG1heCwgY29uc3QgY2hhciogRXJyb3JUaXRsZSkKK3sKKyAgICBzd2l0Y2ggKGl0OC0+c3kpIHsKKworICAgIGNhc2UgU0VPTE46ICAgLy8gRW1wdHkgdmFsdWUKKyAgICAgICAgICAgICAgICAgIEJ1ZmZlclswXT0wOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTSURFTlQ6ICBzdHJuY3B5KEJ1ZmZlciwgaXQ4LT5pZCwgbWF4KTsKKyAgICAgICAgICAgICAgICAgIEJ1ZmZlclttYXgtMV09MDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU0lOVU06ICAgc25wcmludGYoQnVmZmVyLCBtYXgsICIlZCIsIGl0OCAtPiBpbnVtKTsgYnJlYWs7CisgICAgY2FzZSBTRE5VTTogICBzbnByaW50ZihCdWZmZXIsIG1heCwgaXQ4LT5Eb3VibGVGb3JtYXR0ZXIsIGl0OCAtPiBkbnVtKTsgYnJlYWs7CisgICAgY2FzZSBTU1RSSU5HOiBzdHJuY3B5KEJ1ZmZlciwgaXQ4LT5zdHIsIG1heCk7CisgICAgICAgICAgICAgICAgICBCdWZmZXJbbWF4LTFdID0gMDsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworCisKKyAgICBkZWZhdWx0OgorICAgICAgICAgcmV0dXJuIFN5bkVycm9yKGl0OCwgIiVzIiwgRXJyb3JUaXRsZSk7CisgICAgfQorCisgICAgQnVmZmVyW21heF0gPSAwOworICAgIHJldHVybiBUUlVFOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRhYmxlCisKK3N0YXRpYworVEFCTEUqIEdldFRhYmxlKGNtc0lUOCogaXQ4KQoreworICAgaWYgKChpdDggLT4gblRhYmxlID49IGl0OCAtPlRhYmxlc0NvdW50KSkgeworCisgICAgICAgICAgIFN5bkVycm9yKGl0OCwgIlRhYmxlICVkIG91dCBvZiBzZXF1ZW5jZSIsIGl0OCAtPiBuVGFibGUpOworICAgICAgICAgICByZXR1cm4gaXQ4IC0+IFRhYjsKKyAgIH0KKworICAgcmV0dXJuIGl0OCAtPlRhYiArIGl0OCAtPm5UYWJsZTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNZW1vcnkgbWFuYWdlbWVudAorCisKKy8vIEZyZWVzIGFuIGFsbG9jYXRvciBhbmQgb3duZWQgbWVtb3J5Cit2b2lkIENNU0VYUE9SVCBjbXNJVDhGcmVlKGNtc0hBTkRMRSBoSVQ4KQoreworICAgY21zSVQ4KiBpdDggPSAoY21zSVQ4KikgaElUODsKKworICAgIGlmIChpdDggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGl0OC0+TWVtb3J5U2luaykgeworCisgICAgICAgIE9XTkVETUVNKiBwOworICAgICAgICBPV05FRE1FTSogbjsKKworICAgICAgICBmb3IgKHAgPSBpdDgtPk1lbW9yeVNpbms7IHAgIT0gTlVMTDsgcCA9IG4pIHsKKworICAgICAgICAgICAgbiA9IHAtPk5leHQ7CisgICAgICAgICAgICBpZiAocC0+UHRyKSBfY21zRnJlZShpdDggLT5Db250ZXh0SUQsIHAtPlB0cik7CisgICAgICAgICAgICBfY21zRnJlZShpdDggLT5Db250ZXh0SUQsIHApOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGl0OC0+TWVtb3J5QmxvY2spCisgICAgICAgIF9jbXNGcmVlKGl0OCAtPkNvbnRleHRJRCwgaXQ4LT5NZW1vcnlCbG9jayk7CisKKyAgICBfY21zRnJlZShpdDggLT5Db250ZXh0SUQsIGl0OCk7Cit9CisKKworLy8gQWxsb2NhdGVzIGEgY2h1bmsgb2YgZGF0YSwga2VlcCBsaW5rZWQgbGlzdAorc3RhdGljCit2b2lkKiBBbGxvY0JpZ0Jsb2NrKGNtc0lUOCogaXQ4LCBjbXNVSW50MzJOdW1iZXIgc2l6ZSkKK3sKKyAgICBPV05FRE1FTSogcHRyMTsKKyAgICB2b2lkKiBwdHIgPSBfY21zTWFsbG9jWmVybyhpdDgtPkNvbnRleHRJRCwgc2l6ZSk7CisKKyAgICBpZiAocHRyICE9IE5VTEwpIHsKKworICAgICAgICBwdHIxID0gKE9XTkVETUVNKikgX2Ntc01hbGxvY1plcm8oaXQ4IC0+Q29udGV4dElELCBzaXplb2YoT1dORURNRU0pKTsKKworICAgICAgICBpZiAocHRyMSA9PSBOVUxMKSB7CisKKyAgICAgICAgICAgIF9jbXNGcmVlKGl0OCAtPkNvbnRleHRJRCwgcHRyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcHRyMS0+IFB0ciAgICAgICAgPSBwdHI7CisgICAgICAgIHB0cjEtPiBOZXh0ICAgICAgID0gaXQ4IC0+IE1lbW9yeVNpbms7CisgICAgICAgIGl0OCAtPiBNZW1vcnlTaW5rID0gcHRyMTsKKyAgICB9CisKKyAgICByZXR1cm4gcHRyOworfQorCisKKy8vIFN1YmFsbG9jYXRvci4KK3N0YXRpYwordm9pZCogQWxsb2NDaHVuayhjbXNJVDgqIGl0OCwgY21zVUludDMyTnVtYmVyIHNpemUpCit7CisgICAgY21zVUludDMyTnVtYmVyIEZyZWUgPSBpdDggLT5BbGxvY2F0b3IuQmxvY2tTaXplIC0gaXQ4IC0+QWxsb2NhdG9yLlVzZWQ7CisgICAgY21zVUludDhOdW1iZXIqIHB0cjsKKworICAgIHNpemUgPSBfY21zQUxJR05NRU0oc2l6ZSk7CisKKyAgICBpZiAoc2l6ZSA+IEZyZWUpIHsKKworICAgICAgICBpZiAoaXQ4IC0+IEFsbG9jYXRvci5CbG9ja1NpemUgPT0gMCkKKworICAgICAgICAgICAgICAgIGl0OCAtPiBBbGxvY2F0b3IuQmxvY2tTaXplID0gMjAqMTAyNDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGl0OCAtPkFsbG9jYXRvci5CbG9ja1NpemUgKj0gMjsKKworICAgICAgICBpZiAoaXQ4IC0+QWxsb2NhdG9yLkJsb2NrU2l6ZSA8IHNpemUpCisgICAgICAgICAgICAgICAgaXQ4IC0+QWxsb2NhdG9yLkJsb2NrU2l6ZSA9IHNpemU7CisKKyAgICAgICAgaXQ4IC0+QWxsb2NhdG9yLlVzZWQgPSAwOworICAgICAgICBpdDggLT5BbGxvY2F0b3IuQmxvY2sgPSAoY21zVUludDhOdW1iZXIqKSAgQWxsb2NCaWdCbG9jayhpdDgsIGl0OCAtPkFsbG9jYXRvci5CbG9ja1NpemUpOworICAgIH0KKworICAgIHB0ciA9IGl0OCAtPkFsbG9jYXRvci5CbG9jayArIGl0OCAtPkFsbG9jYXRvci5Vc2VkOworICAgIGl0OCAtPkFsbG9jYXRvci5Vc2VkICs9IHNpemU7CisKKyAgICByZXR1cm4gKHZvaWQqKSBwdHI7CisKK30KKworCisvLyBBbGxvY2F0ZXMgYSBzdHJpbmcKK3N0YXRpYworY2hhciAqQWxsb2NTdHJpbmcoY21zSVQ4KiBpdDgsIGNvbnN0IGNoYXIqIHN0cikKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgU2l6ZSA9IChjbXNVSW50MzJOdW1iZXIpIHN0cmxlbihzdHIpKzE7CisgICAgY2hhciAqcHRyOworCisKKyAgICBwdHIgPSAoY2hhciAqKSBBbGxvY0NodW5rKGl0OCwgU2l6ZSk7CisgICAgaWYgKHB0cikgc3RybmNweSAocHRyLCBzdHIsIFNpemUtMSk7CisKKyAgICByZXR1cm4gcHRyOworfQorCisvLyBTZWFyY2hlcyB0aHJvdWdoIGxpbmtlZCBsaXN0CisKK3N0YXRpYworY21zQm9vbCBJc0F2YWlsYWJsZU9uTGlzdChLRVlWQUxVRSogcCwgY29uc3QgY2hhciogS2V5LCBjb25zdCBjaGFyKiBTdWJrZXksIEtFWVZBTFVFKiogTGFzdFB0cikKK3sKKyAgICBpZiAoTGFzdFB0cikgKkxhc3RQdHIgPSBwOworCisgICAgZm9yICg7ICBwICE9IE5VTEw7IHAgPSBwLT5OZXh0KSB7CisKKyAgICAgICAgaWYgKExhc3RQdHIpICpMYXN0UHRyID0gcDsKKworICAgICAgICBpZiAoKktleSAhPSAnIycpIHsgLy8gQ29tbWVudHMgYXJlIGlnbm9yZWQKKworICAgICAgICAgICAgaWYgKGNtc3N0cmNhc2VjbXAoS2V5LCBwLT5LZXl3b3JkKSA9PSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKFN1YmtleSA9PSAwKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIGZvciAoOyBwICE9IE5VTEw7IHAgPSBwLT5OZXh0U3Via2V5KSB7CisKKyAgICAgICAgaWYgKHAgLT5TdWJrZXkgPT0gTlVMTCkgY29udGludWU7CisKKyAgICAgICAgaWYgKExhc3RQdHIpICpMYXN0UHRyID0gcDsKKworICAgICAgICBpZiAoY21zc3RyY2FzZWNtcChTdWJrZXksIHAtPlN1YmtleSkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKK30KKworCisKKy8vIEFkZCBhIHByb3BlcnR5IGludG8gYSBsaW5rZWQgbGlzdAorc3RhdGljCitLRVlWQUxVRSogQWRkVG9MaXN0KGNtc0lUOCogaXQ4LCBLRVlWQUxVRSoqIEhlYWQsIGNvbnN0IGNoYXIgKktleSwgY29uc3QgY2hhciAqU3Via2V5LCBjb25zdCBjaGFyKiB4VmFsdWUsIFdSSVRFTU9ERSBXcml0ZUFzKQoreworICAgIEtFWVZBTFVFKiBwOworICAgIEtFWVZBTFVFKiBsYXN0OworCisKKyAgICAvLyBDaGVjayBpZiBwcm9wZXJ0eSBpcyBhbHJlYWR5IGluIGxpc3QKKworICAgIGlmIChJc0F2YWlsYWJsZU9uTGlzdCgqSGVhZCwgS2V5LCBTdWJrZXksICZwKSkgeworCisgICAgICAgIC8vIFRoaXMgbWF5IHdvcmsgZm9yIGVkaXRpbmcgcHJvcGVydGllcworCisgICAgICAgIC8vICAgICByZXR1cm4gU3luRXJyb3IoaXQ4LCAiZHVwbGljYXRlIGtleSA8JXM+IiwgS2V5KTsKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgICAgbGFzdCA9IHA7CisKKyAgICAgICAgLy8gQWxsb2NhdGUgdGhlIGNvbnRhaW5lcgorICAgICAgICBwID0gKEtFWVZBTFVFKikgQWxsb2NDaHVuayhpdDgsIHNpemVvZihLRVlWQUxVRSkpOworICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICBTeW5FcnJvcihpdDgsICJBZGRUb0xpc3Q6IG91dCBvZiBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3RvcmUgbmFtZSBhbmQgdmFsdWUKKyAgICAgICAgcC0+S2V5d29yZCA9IEFsbG9jU3RyaW5nKGl0OCwgS2V5KTsKKyAgICAgICAgcC0+U3Via2V5ID0gKFN1YmtleSA9PSBOVUxMKSA/IE5VTEwgOiBBbGxvY1N0cmluZyhpdDgsIFN1YmtleSk7CisKKyAgICAgICAgLy8gS2VlcCB0aGUgY29udGFpbmVyIGluIG91ciBsaXN0CisgICAgICAgIGlmICgqSGVhZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAqSGVhZCA9IHA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoU3Via2V5ICE9IE5VTEwgJiYgbGFzdCAhPSBOVUxMKSB7CisKKyAgICAgICAgICAgICAgICBsYXN0LT5OZXh0U3Via2V5ID0gcDsKKworICAgICAgICAgICAgICAgIC8vIElmIFN1YmtleSBpcyBub3QgbnVsbCwgdGhlbiBsYXN0IGlzIHRoZSBsYXN0IHByb3BlcnR5IHdpdGggdGhlIHNhbWUga2V5LAorICAgICAgICAgICAgICAgIC8vIGJ1dCBub3QgbmVjZXNzYXJpbHkgaXMgdGhlIGxhc3QgcHJvcGVydHkgaW4gdGhlIGxpc3QsIHNvIHdlIG5lZWQgdG8gbW92ZQorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBhY3R1YWwgbGlzdCBlbmQKKyAgICAgICAgICAgICAgICB3aGlsZSAobGFzdC0+TmV4dCAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBsYXN0LT5OZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobGFzdCAhPSBOVUxMKSBsYXN0LT5OZXh0ID0gcDsKKyAgICAgICAgfQorCisgICAgICAgIHAtPk5leHQgICAgPSBOVUxMOworICAgICAgICBwLT5OZXh0U3Via2V5ID0gTlVMTDsKKyAgICB9CisKKyAgICBwLT5Xcml0ZUFzID0gV3JpdGVBczsKKworICAgIGlmICh4VmFsdWUgIT0gTlVMTCkgeworCisgICAgICAgIHAtPlZhbHVlICAgPSBBbGxvY1N0cmluZyhpdDgsIHhWYWx1ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwLT5WYWx1ZSAgID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcDsKK30KKworc3RhdGljCitLRVlWQUxVRSogQWRkQXZhaWxhYmxlUHJvcGVydHkoY21zSVQ4KiBpdDgsIGNvbnN0IGNoYXIqIEtleSwgV1JJVEVNT0RFIGFzKQoreworICAgIHJldHVybiBBZGRUb0xpc3QoaXQ4LCAmaXQ4LT5WYWxpZEtleXdvcmRzLCBLZXksIE5VTEwsIE5VTEwsIGFzKTsKK30KKworCitzdGF0aWMKK0tFWVZBTFVFKiBBZGRBdmFpbGFibGVTYW1wbGVJRChjbXNJVDgqIGl0OCwgY29uc3QgY2hhciogS2V5KQoreworICAgIHJldHVybiBBZGRUb0xpc3QoaXQ4LCAmaXQ4LT5WYWxpZFNhbXBsZUlELCBLZXksIE5VTEwsIE5VTEwsIFdSSVRFX1VOQ09PS0VEKTsKK30KKworCitzdGF0aWMKK3ZvaWQgQWxsb2NUYWJsZShjbXNJVDgqIGl0OCkKK3sKKyAgICBUQUJMRSogdDsKKworICAgIHQgPSBpdDggLT5UYWIgKyBpdDggLT5UYWJsZXNDb3VudDsKKworICAgIHQtPkhlYWRlckxpc3QgPSBOVUxMOworICAgIHQtPkRhdGFGb3JtYXQgPSBOVUxMOworICAgIHQtPkRhdGEgICAgICAgPSBOVUxMOworCisgICAgaXQ4IC0+VGFibGVzQ291bnQrKzsKK30KKworCitjbXNJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zSVQ4U2V0VGFibGUoY21zSEFORExFICBJVDgsIGNtc1VJbnQzMk51bWJlciBuVGFibGUpCit7CisgICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIElUODsKKworICAgICBpZiAoblRhYmxlID49IGl0OCAtPlRhYmxlc0NvdW50KSB7CisKKyAgICAgICAgIGlmIChuVGFibGUgPT0gaXQ4IC0+VGFibGVzQ291bnQpIHsKKworICAgICAgICAgICAgIEFsbG9jVGFibGUoaXQ4KTsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgIFN5bkVycm9yKGl0OCwgIlRhYmxlICVkIGlzIG91dCBvZiBzZXF1ZW5jZSIsIG5UYWJsZSk7CisgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfQorICAgICB9CisKKyAgICAgaXQ4IC0+blRhYmxlID0gblRhYmxlOworCisgICAgIHJldHVybiAoY21zSW50MzJOdW1iZXIpIG5UYWJsZTsKK30KKworCisKKy8vIEluaXQgYW4gZW1wdHkgY29udGFpbmVyCitjbXNIQU5ETEUgIENNU0VYUE9SVCBjbXNJVDhBbGxvYyhjbXNDb250ZXh0IENvbnRleHRJRCkKK3sKKyAgICBjbXNJVDgqIGl0ODsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKworICAgIGl0OCA9IChjbXNJVDgqKSBfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIHNpemVvZihjbXNJVDgpKTsKKyAgICBpZiAoaXQ4ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgQWxsb2NUYWJsZShpdDgpOworCisgICAgaXQ4LT5NZW1vcnlCbG9jayA9IE5VTEw7CisgICAgaXQ4LT5NZW1vcnlTaW5rICA9IE5VTEw7CisKKyAgICBpdDggLT5uVGFibGUgPSAwOworCisgICAgaXQ4LT5Db250ZXh0SUQgPSBDb250ZXh0SUQ7CisgICAgaXQ4LT5BbGxvY2F0b3IuVXNlZCA9IDA7CisgICAgaXQ4LT5BbGxvY2F0b3IuQmxvY2sgPSBOVUxMOworICAgIGl0OC0+QWxsb2NhdG9yLkJsb2NrU2l6ZSA9IDA7CisKKyAgICBpdDgtPlZhbGlkS2V5d29yZHMgPSBOVUxMOworICAgIGl0OC0+VmFsaWRTYW1wbGVJRCA9IE5VTEw7CisKKyAgICBpdDggLT4gc3kgPSBTTk9ORTsKKyAgICBpdDggLT4gY2ggPSAnICc7CisgICAgaXQ4IC0+IFNvdXJjZSA9IE5VTEw7CisgICAgaXQ4IC0+IGludW0gPSAwOworICAgIGl0OCAtPiBkbnVtID0gMC4wOworCisgICAgaXQ4LT5GaWxlU3RhY2tbMF0gPSAoRklMRUNUWCopQWxsb2NDaHVuayhpdDgsIHNpemVvZihGSUxFQ1RYKSk7CisgICAgaXQ4LT5JbmNsdWRlU1AgICA9IDA7CisgICAgaXQ4IC0+IGxpbmVubyA9IDE7CisKKyAgICBzdHJjcHkoaXQ4LT5Eb3VibGVGb3JtYXR0ZXIsIERFRkFVTFRfREJMX0ZPUk1BVCk7CisgICAgY21zSVQ4U2V0U2hlZXRUeXBlKChjbXNIQU5ETEUpIGl0OCwgIkNHQVRTLjE3Iik7CisKKyAgICAvLyBJbml0aWFsaXplIHByZWRlZmluZWQgcHJvcGVydGllcyAmIGRhdGEKKworICAgIGZvciAoaT0wOyBpIDwgTlVNUFJFREVGSU5FRFBST1BTOyBpKyspCisgICAgICAgICAgICBBZGRBdmFpbGFibGVQcm9wZXJ0eShpdDgsIFByZWRlZmluZWRQcm9wZXJ0aWVzW2ldLmlkLCBQcmVkZWZpbmVkUHJvcGVydGllc1tpXS5hcyk7CisKKyAgICBmb3IgKGk9MDsgaSA8IE5VTVBSRURFRklORURTQU1QTEVJRDsgaSsrKQorICAgICAgICAgICAgQWRkQXZhaWxhYmxlU2FtcGxlSUQoaXQ4LCBQcmVkZWZpbmVkU2FtcGxlSURbaV0pOworCisKKyAgIHJldHVybiAoY21zSEFORExFKSBpdDg7Cit9CisKKworY29uc3QgY2hhciogQ01TRVhQT1JUIGNtc0lUOEdldFNoZWV0VHlwZShjbXNIQU5ETEUgaElUOCkKK3sKKyAgICAgICAgcmV0dXJuIEdldFRhYmxlKChjbXNJVDgqKSBoSVQ4KS0+U2hlZXRUeXBlOworfQorCitjbXNCb29sIENNU0VYUE9SVCBjbXNJVDhTZXRTaGVldFR5cGUoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIFR5cGUpCit7CisgICAgICAgIFRBQkxFKiB0ID0gR2V0VGFibGUoKGNtc0lUOCopIGhJVDgpOworCisgICAgICAgIHN0cm5jcHkodCAtPlNoZWV0VHlwZSwgVHlwZSwgTUFYU1RSLTEpOworICAgICAgICB0IC0+U2hlZXRUeXBlW01BWFNUUi0xXSA9IDA7CisgICAgICAgIHJldHVybiBUUlVFOworfQorCitjbXNCb29sIENNU0VYUE9SVCBjbXNJVDhTZXRDb21tZW50KGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBWYWwpCit7CisgICAgY21zSVQ4KiBpdDggPSAoY21zSVQ4KikgaElUODsKKworICAgIGlmICghVmFsKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCEqVmFsKSByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gQWRkVG9MaXN0KGl0OCwgJkdldFRhYmxlKGl0OCktPkhlYWRlckxpc3QsICIjICIsIE5VTEwsIFZhbCwgV1JJVEVfVU5DT09LRUQpICE9IE5VTEw7Cit9CisKKy8vIFNldHMgYSBwcm9wZXJ0eQorY21zQm9vbCBDTVNFWFBPUlQgY21zSVQ4U2V0UHJvcGVydHlTdHIoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIEtleSwgY29uc3QgY2hhciAqVmFsKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisKKyAgICBpZiAoIVZhbCkgcmV0dXJuIEZBTFNFOworICAgIGlmICghKlZhbCkgcmV0dXJuIEZBTFNFOworCisgICAgcmV0dXJuIEFkZFRvTGlzdChpdDgsICZHZXRUYWJsZShpdDgpLT5IZWFkZXJMaXN0LCBLZXksIE5VTEwsIFZhbCwgV1JJVEVfU1RSSU5HSUZZKSAhPSBOVUxMOworfQorCitjbXNCb29sIENNU0VYUE9SVCBjbXNJVDhTZXRQcm9wZXJ0eURibChjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY1Byb3AsIGNtc0Zsb2F0NjROdW1iZXIgVmFsKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisgICAgY2hhciBCdWZmZXJbMTAyNF07CisKKyAgICBzcHJpbnRmKEJ1ZmZlciwgaXQ4LT5Eb3VibGVGb3JtYXR0ZXIsIFZhbCk7CisKKyAgICByZXR1cm4gQWRkVG9MaXN0KGl0OCwgJkdldFRhYmxlKGl0OCktPkhlYWRlckxpc3QsIGNQcm9wLCBOVUxMLCBCdWZmZXIsIFdSSVRFX1VOQ09PS0VEKSAhPSBOVUxMOworfQorCitjbXNCb29sIENNU0VYUE9SVCBjbXNJVDhTZXRQcm9wZXJ0eUhleChjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY1Byb3AsIGNtc1VJbnQzMk51bWJlciBWYWwpCit7CisgICAgY21zSVQ4KiBpdDggPSAoY21zSVQ4KikgaElUODsKKyAgICBjaGFyIEJ1ZmZlclsxMDI0XTsKKworICAgIHNwcmludGYoQnVmZmVyLCAiJXUiLCBWYWwpOworCisgICAgcmV0dXJuIEFkZFRvTGlzdChpdDgsICZHZXRUYWJsZShpdDgpLT5IZWFkZXJMaXN0LCBjUHJvcCwgTlVMTCwgQnVmZmVyLCBXUklURV9IRVhBREVDSU1BTCkgIT0gTlVMTDsKK30KKworY21zQm9vbCBDTVNFWFBPUlQgY21zSVQ4U2V0UHJvcGVydHlVbmNvb2tlZChjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogS2V5LCBjb25zdCBjaGFyKiBCdWZmZXIpCit7CisgICAgY21zSVQ4KiBpdDggPSAoY21zSVQ4KikgaElUODsKKworICAgIHJldHVybiBBZGRUb0xpc3QoaXQ4LCAmR2V0VGFibGUoaXQ4KS0+SGVhZGVyTGlzdCwgS2V5LCBOVUxMLCBCdWZmZXIsIFdSSVRFX1VOQ09PS0VEKSAhPSBOVUxMOworfQorCitjbXNCb29sIENNU0VYUE9SVCBjbXNJVDhTZXRQcm9wZXJ0eU11bHRpKGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBLZXksIGNvbnN0IGNoYXIqIFN1YktleSwgY29uc3QgY2hhciAqQnVmZmVyKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisKKyAgICByZXR1cm4gQWRkVG9MaXN0KGl0OCwgJkdldFRhYmxlKGl0OCktPkhlYWRlckxpc3QsIEtleSwgU3ViS2V5LCBCdWZmZXIsIFdSSVRFX1BBSVIpICE9IE5VTEw7Cit9CisKKy8vIEdldHMgYSBwcm9wZXJ0eQorY29uc3QgY2hhciogQ01TRVhQT1JUIGNtc0lUOEdldFByb3BlcnR5KGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBLZXkpCit7CisgICAgY21zSVQ4KiBpdDggPSAoY21zSVQ4KikgaElUODsKKyAgICBLRVlWQUxVRSogcDsKKworICAgIGlmIChJc0F2YWlsYWJsZU9uTGlzdChHZXRUYWJsZShpdDgpIC0+IEhlYWRlckxpc3QsIEtleSwgTlVMTCwgJnApKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHAgLT4gVmFsdWU7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisKK2Ntc0Zsb2F0NjROdW1iZXIgQ01TRVhQT1JUIGNtc0lUOEdldFByb3BlcnR5RGJsKGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBjUHJvcCkKK3sKKyAgICBjb25zdCBjaGFyICp2ID0gY21zSVQ4R2V0UHJvcGVydHkoaElUOCwgY1Byb3ApOworCisgICAgaWYgKHYgPT0gTlVMTCkgcmV0dXJuIDAuMDsKKworICAgIHJldHVybiBQYXJzZUZsb2F0TnVtYmVyKHYpOworfQorCitjb25zdCBjaGFyKiBDTVNFWFBPUlQgY21zSVQ4R2V0UHJvcGVydHlNdWx0aShjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogS2V5LCBjb25zdCBjaGFyICpTdWJLZXkpCit7CisgICAgY21zSVQ4KiBpdDggPSAoY21zSVQ4KikgaElUODsKKyAgICBLRVlWQUxVRSogcDsKKworICAgIGlmIChJc0F2YWlsYWJsZU9uTGlzdChHZXRUYWJsZShpdDgpIC0+IEhlYWRlckxpc3QsIEtleSwgU3ViS2V5LCAmcCkpIHsKKyAgICAgICAgcmV0dXJuIHAgLT4gVmFsdWU7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEYXRhc2V0cworCisKK3N0YXRpYwordm9pZCBBbGxvY2F0ZURhdGFGb3JtYXQoY21zSVQ4KiBpdDgpCit7CisgICAgVEFCTEUqIHQgPSBHZXRUYWJsZShpdDgpOworCisgICAgaWYgKHQgLT4gRGF0YUZvcm1hdCkgcmV0dXJuOyAgICAvLyBBbHJlYWR5IGFsbG9jYXRlZAorCisgICAgdCAtPiBuU2FtcGxlcyAgPSAoaW50KSBjbXNJVDhHZXRQcm9wZXJ0eURibChpdDgsICJOVU1CRVJfT0ZfRklFTERTIik7CisKKyAgICBpZiAodCAtPiBuU2FtcGxlcyA8PSAwKSB7CisKKyAgICAgICAgU3luRXJyb3IoaXQ4LCAiQWxsb2NhdGVEYXRhRm9ybWF0OiBVbmtub3duIE5VTUJFUl9PRl9GSUVMRFMiKTsKKyAgICAgICAgdCAtPiBuU2FtcGxlcyA9IDEwOworICAgICAgICB9CisKKyAgICB0IC0+IERhdGFGb3JtYXQgPSAoY2hhcioqKSBBbGxvY0NodW5rIChpdDgsICgoY21zVUludDMyTnVtYmVyKSB0LT5uU2FtcGxlcyArIDEpICogc2l6ZW9mKGNoYXIgKikpOworICAgIGlmICh0LT5EYXRhRm9ybWF0ID09IE5VTEwpIHsKKworICAgICAgICBTeW5FcnJvcihpdDgsICJBbGxvY2F0ZURhdGFGb3JtYXQ6IFVuYWJsZSB0byBhbGxvY2F0ZSBkYXRhRm9ybWF0IGFycmF5Iik7CisgICAgfQorCit9CisKK3N0YXRpYworY29uc3QgY2hhciAqR2V0RGF0YUZvcm1hdChjbXNJVDgqIGl0OCwgaW50IG4pCit7CisgICAgVEFCTEUqIHQgPSBHZXRUYWJsZShpdDgpOworCisgICAgaWYgKHQtPkRhdGFGb3JtYXQpCisgICAgICAgIHJldHVybiB0LT5EYXRhRm9ybWF0W25dOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYworY21zQm9vbCBTZXREYXRhRm9ybWF0KGNtc0lUOCogaXQ4LCBpbnQgbiwgY29uc3QgY2hhciAqbGFiZWwpCit7CisgICAgVEFCTEUqIHQgPSBHZXRUYWJsZShpdDgpOworCisgICAgaWYgKCF0LT5EYXRhRm9ybWF0KQorICAgICAgICBBbGxvY2F0ZURhdGFGb3JtYXQoaXQ4KTsKKworICAgIGlmIChuID4gdCAtPiBuU2FtcGxlcykgeworICAgICAgICBTeW5FcnJvcihpdDgsICJNb3JlIHRoYW4gTlVNQkVSX09GX0ZJRUxEUyBmaWVsZHMuIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAodC0+RGF0YUZvcm1hdCkgeworICAgICAgICB0LT5EYXRhRm9ybWF0W25dID0gQWxsb2NTdHJpbmcoaXQ4LCBsYWJlbCk7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworY21zQm9vbCBDTVNFWFBPUlQgY21zSVQ4U2V0RGF0YUZvcm1hdChjbXNIQU5ETEUgIGgsIGludCBuLCBjb25zdCBjaGFyICpTYW1wbGUpCit7CisgICAgICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGg7CisgICAgICAgIHJldHVybiBTZXREYXRhRm9ybWF0KGl0OCwgbiwgU2FtcGxlKTsKK30KKworc3RhdGljCit2b2lkIEFsbG9jYXRlRGF0YVNldChjbXNJVDgqIGl0OCkKK3sKKyAgICBUQUJMRSogdCA9IEdldFRhYmxlKGl0OCk7CisKKyAgICBpZiAodCAtPiBEYXRhKSByZXR1cm47ICAgIC8vIEFscmVhZHkgYWxsb2NhdGVkCisKKyAgICB0LT4gblNhbXBsZXMgICA9IGF0b2koY21zSVQ4R2V0UHJvcGVydHkoaXQ4LCAiTlVNQkVSX09GX0ZJRUxEUyIpKTsKKyAgICB0LT4gblBhdGNoZXMgICA9IGF0b2koY21zSVQ4R2V0UHJvcGVydHkoaXQ4LCAiTlVNQkVSX09GX1NFVFMiKSk7CisKKyAgICB0LT4gRGF0YSA9IChjaGFyKiopQWxsb2NDaHVuayAoaXQ4LCAoKGNtc1VJbnQzMk51bWJlcikgdC0+blNhbXBsZXMgKyAxKSAqICgoY21zVUludDMyTnVtYmVyKSB0LT5uUGF0Y2hlcyArIDEpICpzaXplb2YgKGNoYXIqKSk7CisgICAgaWYgKHQtPkRhdGEgPT0gTlVMTCkgeworCisgICAgICAgIFN5bkVycm9yKGl0OCwgIkFsbG9jYXRlRGF0YVNldDogVW5hYmxlIHRvIGFsbG9jYXRlIGRhdGEgYXJyYXkiKTsKKyAgICB9CisKK30KKworc3RhdGljCitjaGFyKiBHZXREYXRhKGNtc0lUOCogaXQ4LCBpbnQgblNldCwgaW50IG5GaWVsZCkKK3sKKyAgICBUQUJMRSogdCA9IEdldFRhYmxlKGl0OCk7CisgICAgaW50ICBuU2FtcGxlcyAgID0gdCAtPiBuU2FtcGxlczsKKyAgICBpbnQgIG5QYXRjaGVzICAgPSB0IC0+IG5QYXRjaGVzOworCisgICAgaWYgKG5TZXQgPj0gblBhdGNoZXMgfHwgbkZpZWxkID49IG5TYW1wbGVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghdC0+RGF0YSkgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHQtPkRhdGEgW25TZXQgKiBuU2FtcGxlcyArIG5GaWVsZF07Cit9CisKK3N0YXRpYworY21zQm9vbCBTZXREYXRhKGNtc0lUOCogaXQ4LCBpbnQgblNldCwgaW50IG5GaWVsZCwgY29uc3QgY2hhciAqVmFsKQoreworICAgIFRBQkxFKiB0ID0gR2V0VGFibGUoaXQ4KTsKKworICAgIGlmICghdC0+RGF0YSkKKyAgICAgICAgQWxsb2NhdGVEYXRhU2V0KGl0OCk7CisKKyAgICBpZiAoIXQtPkRhdGEpIHJldHVybiBGQUxTRTsKKworICAgIGlmIChuU2V0ID4gdCAtPiBuUGF0Y2hlcyB8fCBuU2V0IDwgMCkgeworCisgICAgICAgICAgICByZXR1cm4gU3luRXJyb3IoaXQ4LCAiUGF0Y2ggJWQgb3V0IG9mIHJhbmdlLCB0aGVyZSBhcmUgJWQgcGF0Y2hlcyIsIG5TZXQsIHQgLT4gblBhdGNoZXMpOworICAgIH0KKworICAgIGlmIChuRmllbGQgPiB0IC0+blNhbXBsZXMgfHwgbkZpZWxkIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIFN5bkVycm9yKGl0OCwgIlNhbXBsZSAlZCBvdXQgb2YgcmFuZ2UsIHRoZXJlIGFyZSAlZCBzYW1wbGVzIiwgbkZpZWxkLCB0IC0+blNhbXBsZXMpOworCisgICAgfQorCisgICAgdC0+RGF0YSBbblNldCAqIHQgLT4gblNhbXBsZXMgKyBuRmllbGRdID0gQWxsb2NTdHJpbmcoaXQ4LCBWYWwpOworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGaWxlIEkvTworCisKKy8vIFdyaXRlcyBhIHN0cmluZyB0byBmaWxlCitzdGF0aWMKK3ZvaWQgV3JpdGVTdHIoU0FWRVNUUkVBTSogZiwgY29uc3QgY2hhciAqc3RyKQoreworICAgIGNtc1VJbnQzMk51bWJlciBsZW47CisKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHN0ciA9ICIgIjsKKworICAgIC8vIExlbmd0aCB0byB3cml0ZQorICAgIGxlbiA9IChjbXNVSW50MzJOdW1iZXIpIHN0cmxlbihzdHIpOworICAgIGYgLT5Vc2VkICs9IGxlbjsKKworCisgICAgaWYgKGYgLT5zdHJlYW0pIHsgICAvLyBTaG91bGQgSSB3cml0ZSBpdCB0byBhIGZpbGU/CisKKyAgICAgICAgaWYgKGZ3cml0ZShzdHIsIDEsIGxlbiwgZi0+c3RyZWFtKSAhPSBsZW4pIHsKKyAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKDAsIGNtc0VSUk9SX1dSSVRFLCAiV3JpdGUgdG8gZmlsZSBlcnJvciBpbiBDR0FUUyBwYXJzZXIiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgfQorICAgIGVsc2UgeyAgLy8gT3IgdG8gYSBtZW1vcnkgYmxvY2s/CisKKyAgICAgICAgaWYgKGYgLT5CYXNlKSB7ICAgLy8gQW0gSSBqdXN0IGNvdW50aW5nIHRoZSBieXRlcz8KKworICAgICAgICAgICAgaWYgKGYgLT5Vc2VkID4gZiAtPk1heCkgeworCisgICAgICAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKDAsIGNtc0VSUk9SX1dSSVRFLCAiV3JpdGUgdG8gbWVtb3J5IG92ZXJmbG93cyBpbiBDR0FUUyBwYXJzZXIiKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtZW1tb3ZlKGYgLT5QdHIsIHN0ciwgbGVuKTsKKyAgICAgICAgICAgIGYtPlB0ciArPSBsZW47CisgICAgICAgIH0KKworICAgIH0KK30KKworCisvLyBXcml0ZSBmb3JtYXR0ZWQKKworc3RhdGljCit2b2lkIFdyaXRlZihTQVZFU1RSRUFNKiBmLCBjb25zdCBjaGFyKiBmcm0sIC4uLikKK3sKKyAgICBjaGFyIEJ1ZmZlcls0MDk2XTsKKyAgICB2YV9saXN0IGFyZ3M7CisKKyAgICB2YV9zdGFydChhcmdzLCBmcm0pOworICAgIHZzbnByaW50ZihCdWZmZXIsIDQwOTUsIGZybSwgYXJncyk7CisgICAgQnVmZmVyWzQwOTVdID0gMDsKKyAgICBXcml0ZVN0cihmLCBCdWZmZXIpOworICAgIHZhX2VuZChhcmdzKTsKKworfQorCisvLyBXcml0ZXMgZnVsbCBoZWFkZXIKK3N0YXRpYwordm9pZCBXcml0ZUhlYWRlcihjbXNJVDgqIGl0OCwgU0FWRVNUUkVBTSogZnApCit7CisgICAgS0VZVkFMVUUqIHA7CisgICAgVEFCTEUqIHQgPSBHZXRUYWJsZShpdDgpOworCisgICAgLy8gV3JpdGVzIHRoZSB0eXBlCisgICAgV3JpdGVTdHIoZnAsIHQtPlNoZWV0VHlwZSk7CisgICAgV3JpdGVTdHIoZnAsICJcbiIpOworCisgICAgZm9yIChwID0gdC0+SGVhZGVyTGlzdDsgKHAgIT0gTlVMTCk7IHAgPSBwLT5OZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCpwIC0+S2V5d29yZCA9PSAnIycpIHsKKworICAgICAgICAgICAgY2hhciogUHQ7CisKKyAgICAgICAgICAgIFdyaXRlU3RyKGZwLCAiI1xuIyAiKTsKKyAgICAgICAgICAgIGZvciAoUHQgPSBwIC0+VmFsdWU7ICpQdDsgUHQrKykgeworCisKKyAgICAgICAgICAgICAgICBXcml0ZWYoZnAsICIlYyIsICpQdCk7CisKKyAgICAgICAgICAgICAgICBpZiAoKlB0ID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgV3JpdGVTdHIoZnAsICIjICIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgV3JpdGVTdHIoZnAsICJcbiNcbiIpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworCisgICAgICAgIGlmICghSXNBdmFpbGFibGVPbkxpc3QoaXQ4LT4gVmFsaWRLZXl3b3JkcywgcC0+S2V5d29yZCwgTlVMTCwgTlVMTCkpIHsKKworI2lmZGVmIENNU19TVFJJQ1RfQ0dBVFMKKyAgICAgICAgICAgIFdyaXRlU3RyKGZwLCAiS0VZV09SRFx0XCIiKTsKKyAgICAgICAgICAgIFdyaXRlU3RyKGZwLCBwLT5LZXl3b3JkKTsKKyAgICAgICAgICAgIFdyaXRlU3RyKGZwLCAiXCJcbiIpOworI2VuZGlmCisKKyAgICAgICAgICAgIEFkZEF2YWlsYWJsZVByb3BlcnR5KGl0OCwgcC0+S2V5d29yZCwgV1JJVEVfVU5DT09LRUQpOworICAgICAgICB9CisKKyAgICAgICAgV3JpdGVTdHIoZnAsIHAtPktleXdvcmQpOworICAgICAgICBpZiAocC0+VmFsdWUpIHsKKworICAgICAgICAgICAgc3dpdGNoIChwIC0+V3JpdGVBcykgeworCisgICAgICAgICAgICBjYXNlIFdSSVRFX1VOQ09PS0VEOgorICAgICAgICAgICAgICAgICAgICBXcml0ZWYoZnAsICJcdCVzIiwgcCAtPlZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgV1JJVEVfU1RSSU5HSUZZOgorICAgICAgICAgICAgICAgICAgICBXcml0ZWYoZnAsICJcdFwiJXNcIiIsIHAtPlZhbHVlICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFdSSVRFX0hFWEFERUNJTUFMOgorICAgICAgICAgICAgICAgICAgICBXcml0ZWYoZnAsICJcdDB4JVgiLCBhdG9pKHAgLT5WYWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBXUklURV9CSU5BUlk6CisgICAgICAgICAgICAgICAgICAgIFdyaXRlZihmcCwgIlx0MHglQiIsIGF0b2kocCAtPlZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFdSSVRFX1BBSVI6CisgICAgICAgICAgICAgICAgICAgIFdyaXRlZihmcCwgIlx0XCIlcywlc1wiIiwgcC0+U3Via2V5LCBwLT5WYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OiBTeW5FcnJvcihpdDgsICJVbmtub3duIHdyaXRlIG1vZGUgJWQiLCBwIC0+V3JpdGVBcyk7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBXcml0ZVN0ciAoZnAsICJcbiIpOworICAgIH0KKworfQorCisKKy8vIFdyaXRlcyB0aGUgZGF0YSBmb3JtYXQKK3N0YXRpYwordm9pZCBXcml0ZURhdGFGb3JtYXQoU0FWRVNUUkVBTSogZnAsIGNtc0lUOCogaXQ4KQoreworICAgIGludCBpLCBuU2FtcGxlczsKKyAgICBUQUJMRSogdCA9IEdldFRhYmxlKGl0OCk7CisKKyAgICBpZiAoIXQgLT4gRGF0YUZvcm1hdCkgcmV0dXJuOworCisgICAgICAgV3JpdGVTdHIoZnAsICJCRUdJTl9EQVRBX0ZPUk1BVFxuIik7CisgICAgICAgV3JpdGVTdHIoZnAsICIgIik7CisgICAgICAgblNhbXBsZXMgPSBhdG9pKGNtc0lUOEdldFByb3BlcnR5KGl0OCwgIk5VTUJFUl9PRl9GSUVMRFMiKSk7CisKKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgblNhbXBsZXM7IGkrKykgeworCisgICAgICAgICAgICAgIFdyaXRlU3RyKGZwLCB0LT5EYXRhRm9ybWF0W2ldKTsKKyAgICAgICAgICAgICAgV3JpdGVTdHIoZnAsICgoaSA9PSAoblNhbXBsZXMtMSkpID8gIlxuIiA6ICJcdCIpKTsKKyAgICAgICAgICB9CisKKyAgICAgICBXcml0ZVN0ciAoZnAsICJFTkRfREFUQV9GT1JNQVRcbiIpOworfQorCisKKy8vIFdyaXRlcyBkYXRhIGFycmF5CitzdGF0aWMKK3ZvaWQgV3JpdGVEYXRhKFNBVkVTVFJFQU0qIGZwLCBjbXNJVDgqIGl0OCkKK3sKKyAgICAgICBpbnQgIGksIGo7CisgICAgICAgVEFCTEUqIHQgPSBHZXRUYWJsZShpdDgpOworCisgICAgICAgaWYgKCF0LT5EYXRhKSByZXR1cm47CisKKyAgICAgICBXcml0ZVN0ciAoZnAsICJCRUdJTl9EQVRBXG4iKTsKKworICAgICAgIHQtPm5QYXRjaGVzID0gYXRvaShjbXNJVDhHZXRQcm9wZXJ0eShpdDgsICJOVU1CRVJfT0ZfU0VUUyIpKTsKKworICAgICAgIGZvciAoaSA9IDA7IGkgPCB0LT4gblBhdGNoZXM7IGkrKykgeworCisgICAgICAgICAgICAgIFdyaXRlU3RyKGZwLCAiICIpOworCisgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0LT5uU2FtcGxlczsgaisrKSB7CisKKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnB0ciA9IHQtPkRhdGFbaSp0LT5uU2FtcGxlcytqXTsKKworICAgICAgICAgICAgICAgICAgICAgaWYgKHB0ciA9PSBOVUxMKSBXcml0ZVN0cihmcCwgIlwiXCIiKTsKKyAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHZhbHVlIGNvbnRhaW5zIHdoaXRlc3BhY2UsIGVuY2xvc2Ugd2l0aGluIHF1b3RlCisKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyY2hyKHB0ciwgJyAnKSAhPSBOVUxMKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVTdHIoZnAsICJcIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZVN0cihmcCwgcHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVTdHIoZnAsICJcIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVTdHIoZnAsIHB0cik7CisgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgIFdyaXRlU3RyKGZwLCAoKGogPT0gKHQtPm5TYW1wbGVzLTEpKSA/ICJcbiIgOiAiXHQiKSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICB9CisgICAgICAgV3JpdGVTdHIgKGZwLCAiRU5EX0RBVEFcbiIpOworfQorCisKKworLy8gU2F2ZXMgd2hvbGUgZmlsZQorY21zQm9vbCBDTVNFWFBPUlQgY21zSVQ4U2F2ZVRvRmlsZShjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY0ZpbGVOYW1lKQoreworICAgIFNBVkVTVFJFQU0gc2Q7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgY21zSVQ4KiBpdDggPSAoY21zSVQ4KikgaElUODsKKworICAgIG1lbXNldCgmc2QsIDAsIHNpemVvZihzZCkpOworCisgICAgc2Quc3RyZWFtID0gZm9wZW4oY0ZpbGVOYW1lLCAid3QiKTsKKyAgICBpZiAoIXNkLnN0cmVhbSkgcmV0dXJuIEZBTFNFOworCisgICAgZm9yIChpPTA7IGkgPCBpdDggLT5UYWJsZXNDb3VudDsgaSsrKSB7CisKKyAgICAgICAgICAgIGNtc0lUOFNldFRhYmxlKGhJVDgsIGkpOworICAgICAgICAgICAgV3JpdGVIZWFkZXIoaXQ4LCAmc2QpOworICAgICAgICAgICAgV3JpdGVEYXRhRm9ybWF0KCZzZCwgaXQ4KTsKKyAgICAgICAgICAgIFdyaXRlRGF0YSgmc2QsIGl0OCk7CisgICAgfQorCisgICAgaWYgKGZjbG9zZShzZC5zdHJlYW0pICE9IDApIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIFNhdmVzIHRvIG1lbW9yeQorY21zQm9vbCBDTVNFWFBPUlQgY21zSVQ4U2F2ZVRvTWVtKGNtc0hBTkRMRSBoSVQ4LCB2b2lkICpNZW1QdHIsIGNtc1VJbnQzMk51bWJlciogQnl0ZXNOZWVkZWQpCit7CisgICAgU0FWRVNUUkVBTSBzZDsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNJVDgqIGl0OCA9IChjbXNJVDgqKSBoSVQ4OworCisgICAgbWVtc2V0KCZzZCwgMCwgc2l6ZW9mKHNkKSk7CisKKyAgICBzZC5zdHJlYW0gPSBOVUxMOworICAgIHNkLkJhc2UgICA9IChjbXNVSW50OE51bWJlciopICBNZW1QdHI7CisgICAgc2QuUHRyICAgID0gc2QuQmFzZTsKKworICAgIHNkLlVzZWQgPSAwOworCisgICAgaWYgKHNkLkJhc2UpCisgICAgICAgIHNkLk1heCAgPSAqQnl0ZXNOZWVkZWQ7ICAgICAvLyBXcml0ZSB0byBtZW1vcnk/CisgICAgZWxzZQorICAgICAgICBzZC5NYXggID0gMDsgICAgICAgICAgICAgICAgLy8gSnVzdCBjb3VudGluZyB0aGUgbmVlZGVkIGJ5dGVzCisKKyAgICBmb3IgKGk9MDsgaSA8IGl0OCAtPlRhYmxlc0NvdW50OyBpKyspIHsKKworICAgICAgICBjbXNJVDhTZXRUYWJsZShoSVQ4LCBpKTsKKyAgICAgICAgV3JpdGVIZWFkZXIoaXQ4LCAmc2QpOworICAgICAgICBXcml0ZURhdGFGb3JtYXQoJnNkLCBpdDgpOworICAgICAgICBXcml0ZURhdGEoJnNkLCBpdDgpOworICAgIH0KKworICAgIHNkLlVzZWQrKzsgIC8vIFRoZSBcMCBhdCB0aGUgdmVyeSBlbmQKKworICAgIGlmIChzZC5CYXNlKQorICAgICAgICAqc2QuUHRyID0gMDsKKworICAgICpCeXRlc05lZWRlZCA9IHNkLlVzZWQ7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIaWdlciBsZXZlbCBwYXJzaW5nCisKK3N0YXRpYworY21zQm9vbCBEYXRhRm9ybWF0U2VjdGlvbihjbXNJVDgqIGl0OCkKK3sKKyAgICBpbnQgaUZpZWxkID0gMDsKKyAgICBUQUJMRSogdCA9IEdldFRhYmxlKGl0OCk7CisKKyAgICBJblN5bWJvbChpdDgpOyAgIC8vIEVhdHMgIkJFR0lOX0RBVEFfRk9STUFUIgorICAgIENoZWNrRU9MTihpdDgpOworCisgICAgd2hpbGUgKGl0OC0+c3kgIT0gU0VORF9EQVRBX0ZPUk1BVCAmJgorICAgICAgICBpdDgtPnN5ICE9IFNFT0xOICYmCisgICAgICAgIGl0OC0+c3kgIT0gU0VPRiAmJgorICAgICAgICBpdDgtPnN5ICE9IFNTWU5FUlJPUikgIHsKKworICAgICAgICAgICAgaWYgKGl0OC0+c3kgIT0gU0lERU5UKSB7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gU3luRXJyb3IoaXQ4LCAiU2FtcGxlIHR5cGUgZXhwZWN0ZWQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFTZXREYXRhRm9ybWF0KGl0OCwgaUZpZWxkLCBpdDgtPmlkKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgaUZpZWxkKys7CisKKyAgICAgICAgICAgIEluU3ltYm9sKGl0OCk7CisgICAgICAgICAgICBTa2lwRU9MTihpdDgpOworICAgICAgIH0KKworICAgICAgIFNraXBFT0xOKGl0OCk7CisgICAgICAgU2tpcChpdDgsIFNFTkRfREFUQV9GT1JNQVQpOworICAgICAgIFNraXBFT0xOKGl0OCk7CisKKyAgICAgICBpZiAoaUZpZWxkICE9IHQgLT5uU2FtcGxlcykgeworICAgICAgICAgICBTeW5FcnJvcihpdDgsICJDb3VudCBtaXNtYXRjaC4gTlVNQkVSX09GX0ZJRUxEUyB3YXMgJWQsIGZvdW5kICVkXG4iLCB0IC0+blNhbXBsZXMsIGlGaWVsZCk7CisKKworICAgICAgIH0KKworICAgICAgIHJldHVybiBUUlVFOworfQorCisKKworc3RhdGljCitjbXNCb29sIERhdGFTZWN0aW9uIChjbXNJVDgqIGl0OCkKK3sKKyAgICBpbnQgIGlGaWVsZCA9IDA7CisgICAgaW50ICBpU2V0ICAgPSAwOworICAgIGNoYXIgQnVmZmVyWzI1Nl07CisgICAgVEFCTEUqIHQgPSBHZXRUYWJsZShpdDgpOworCisgICAgSW5TeW1ib2woaXQ4KTsgICAvLyBFYXRzICJCRUdJTl9EQVRBIgorICAgIENoZWNrRU9MTihpdDgpOworCisgICAgaWYgKCF0LT5EYXRhKQorICAgICAgICBBbGxvY2F0ZURhdGFTZXQoaXQ4KTsKKworICAgIHdoaWxlIChpdDgtPnN5ICE9IFNFTkRfREFUQSAmJiBpdDgtPnN5ICE9IFNFT0YpCisgICAgeworICAgICAgICBpZiAoaUZpZWxkID49IHQgLT4gblNhbXBsZXMpIHsKKyAgICAgICAgICAgIGlGaWVsZCA9IDA7CisgICAgICAgICAgICBpU2V0Kys7CisKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpdDgtPnN5ICE9IFNFTkRfREFUQSAmJiBpdDgtPnN5ICE9IFNFT0YpIHsKKworICAgICAgICAgICAgaWYgKCFHZXRWYWwoaXQ4LCBCdWZmZXIsIDI1NSwgIlNhbXBsZSBkYXRhIGV4cGVjdGVkIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgICAgICAgICBpZiAoIVNldERhdGEoaXQ4LCBpU2V0LCBpRmllbGQsIEJ1ZmZlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgICAgICAgICBpRmllbGQrKzsKKworICAgICAgICAgICAgSW5TeW1ib2woaXQ4KTsKKyAgICAgICAgICAgIFNraXBFT0xOKGl0OCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTa2lwRU9MTihpdDgpOworICAgIFNraXAoaXQ4LCBTRU5EX0RBVEEpOworICAgIFNraXBFT0xOKGl0OCk7CisKKyAgICAvLyBDaGVjayBmb3IgZGF0YSBjb21wbGV0aW9uLgorCisgICAgaWYgKChpU2V0KzEpICE9IHQgLT4gblBhdGNoZXMpCisgICAgICAgIHJldHVybiBTeW5FcnJvcihpdDgsICJDb3VudCBtaXNtYXRjaC4gTlVNQkVSX09GX1NFVFMgd2FzICVkLCBmb3VuZCAlZFxuIiwgdCAtPm5QYXRjaGVzLCBpU2V0KzEpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworCisKK3N0YXRpYworY21zQm9vbCBIZWFkZXJTZWN0aW9uKGNtc0lUOCogaXQ4KQoreworICAgIGNoYXIgVmFyTmFtZVtNQVhJRF07CisgICAgY2hhciBCdWZmZXJbTUFYU1RSXTsKKyAgICBLRVlWQUxVRSogS2V5OworCisgICAgICAgIHdoaWxlIChpdDgtPnN5ICE9IFNFT0YgJiYKKyAgICAgICAgICAgICAgIGl0OC0+c3kgIT0gU1NZTkVSUk9SICYmCisgICAgICAgICAgICAgICBpdDgtPnN5ICE9IFNCRUdJTl9EQVRBX0ZPUk1BVCAmJgorICAgICAgICAgICAgICAgaXQ4LT5zeSAhPSBTQkVHSU5fREFUQSkgeworCisKKyAgICAgICAgc3dpdGNoIChpdDggLT4gc3kpIHsKKworICAgICAgICBjYXNlIFNLRVlXT1JEOgorICAgICAgICAgICAgICAgIEluU3ltYm9sKGl0OCk7CisgICAgICAgICAgICAgICAgaWYgKCFHZXRWYWwoaXQ4LCBCdWZmZXIsIE1BWFNUUi0xLCAiS2V5d29yZCBleHBlY3RlZCIpKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgaWYgKCFBZGRBdmFpbGFibGVQcm9wZXJ0eShpdDgsIEJ1ZmZlciwgV1JJVEVfVU5DT09LRUQpKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgSW5TeW1ib2woaXQ4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworCisgICAgICAgIGNhc2UgU0RBVEFfRk9STUFUX0lEOgorICAgICAgICAgICAgICAgIEluU3ltYm9sKGl0OCk7CisgICAgICAgICAgICAgICAgaWYgKCFHZXRWYWwoaXQ4LCBCdWZmZXIsIE1BWFNUUi0xLCAiS2V5d29yZCBleHBlY3RlZCIpKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgaWYgKCFBZGRBdmFpbGFibGVTYW1wbGVJRChpdDgsIEJ1ZmZlcikpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICBJblN5bWJvbChpdDgpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisKKyAgICAgICAgY2FzZSBTSURFTlQ6CisgICAgICAgICAgICAgICAgc3RybmNweShWYXJOYW1lLCBpdDgtPmlkLCBNQVhJRC0xKTsKKyAgICAgICAgICAgICAgICBWYXJOYW1lW01BWElELTFdID0gMDsKKworICAgICAgICAgICAgICAgIGlmICghSXNBdmFpbGFibGVPbkxpc3QoaXQ4LT4gVmFsaWRLZXl3b3JkcywgVmFyTmFtZSwgTlVMTCwgJktleSkpIHsKKworI2lmZGVmIENNU19TVFJJQ1RfQ0dBVFMKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFN5bkVycm9yKGl0OCwgIlVuZGVmaW5lZCBrZXl3b3JkICclcyciLCBWYXJOYW1lKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgIEtleSA9IEFkZEF2YWlsYWJsZVByb3BlcnR5KGl0OCwgVmFyTmFtZSwgV1JJVEVfVU5DT09LRUQpOworICAgICAgICAgICAgICAgICAgICBpZiAoS2V5ID09IE5VTEwpIHJldHVybiBGQUxTRTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluU3ltYm9sKGl0OCk7CisgICAgICAgICAgICAgICAgaWYgKCFHZXRWYWwoaXQ4LCBCdWZmZXIsIE1BWFNUUi0xLCAiUHJvcGVydHkgZGF0YSBleHBlY3RlZCIpKSByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgICAgICAgICBpZihLZXktPldyaXRlQXMgIT0gV1JJVEVfUEFJUikgeworICAgICAgICAgICAgICAgICAgICBBZGRUb0xpc3QoaXQ4LCAmR2V0VGFibGUoaXQ4KS0+SGVhZGVyTGlzdCwgVmFyTmFtZSwgTlVMTCwgQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXQ4LT5zeSA9PSBTU1RSSU5HKSA/IFdSSVRFX1NUUklOR0lGWSA6IFdSSVRFX1VOQ09PS0VEKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKlN1YmtleTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAqTmV4dGtleTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0OC0+c3kgIT0gU1NUUklORykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeW5FcnJvcihpdDgsICJJbnZhbGlkIHZhbHVlICclcycgZm9yIHByb3BlcnR5ICclcycuIiwgQnVmZmVyLCBWYXJOYW1lKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBjaG9wIHRoZSBzdHJpbmcgYXMgYSBsaXN0IG9mICJzdWJrZXksIHZhbHVlIiBwYWlycywgdXNpbmcgJzsnIGFzIGEgc2VwYXJhdG9yCisgICAgICAgICAgICAgICAgICAgIGZvciAoU3Via2V5ID0gQnVmZmVyOyBTdWJrZXkgIT0gTlVMTDsgU3Via2V5ID0gTmV4dGtleSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqVmFsdWUsICp0ZW1wOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAgaWRlbnRpZnkgdG9rZW4gcGFpciBib3VuZGFyeQorICAgICAgICAgICAgICAgICAgICAgICAgTmV4dGtleSA9IChjaGFyKikgc3RyY2hyKFN1YmtleSwgJzsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKE5leHRrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKk5leHRrZXkrKyA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIHBhaXIsIHNwbGl0IHRoZSBzdWJrZXkgYW5kIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPSAoY2hhciopIHN0cnJjaHIoU3Via2V5LCAnLCcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYoVmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3luRXJyb3IoaXQ4LCAiSW52YWxpZCB2YWx1ZSBmb3IgcHJvcGVydHkgJyVzJy4iLCBWYXJOYW1lKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ29iYmxlIHRoZSBzcGFjZXMgYmVmb3JlIHRoZSBjb21hLCBhbmQgdGhlIGNvbWEgaXRzZWxmCisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gVmFsdWUrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvICp0ZW1wLS0gPSAnXDAnOyB3aGlsZSh0ZW1wID49IFN1YmtleSAmJiAqdGVtcCA9PSAnICcpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBnb2JibGUgYW55IHNwYWNlIGF0IHRoZSByaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IFZhbHVlICsgc3RybGVuKFZhbHVlKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSgqdGVtcCA9PSAnICcpICp0ZW1wLS0gPSAnXDAnOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmltIHRoZSBzdHJpbmdzIGZyb20gdGhlIGxlZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIFN1YmtleSArPSBzdHJzcG4oU3Via2V5LCAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKz0gc3Ryc3BuKFZhbHVlLCAiICIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZihTdWJrZXlbMF0gPT0gMCB8fCBWYWx1ZVswXSA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeW5FcnJvcihpdDgsICJJbnZhbGlkIHZhbHVlIGZvciBwcm9wZXJ0eSAnJXMnLiIsIFZhck5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgQWRkVG9MaXN0KGl0OCwgJkdldFRhYmxlKGl0OCktPkhlYWRlckxpc3QsIFZhck5hbWUsIFN1YmtleSwgVmFsdWUsIFdSSVRFX1BBSVIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5TeW1ib2woaXQ4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworCisgICAgICAgIGNhc2UgU0VPTE46IGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIFN5bkVycm9yKGl0OCwgImV4cGVjdGVkIGtleXdvcmQgb3IgaWRlbnRpZmllciIpOworICAgICAgICB9CisKKyAgICBTa2lwRU9MTihpdDgpOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworCit9CisKKworc3RhdGljCit2b2lkIFJlYWRUeXBlKGNtc0lUOCogaXQ4LCBjaGFyKiBTaGVldFR5cGVQdHIpCit7CisgICAgLy8gRmlyc3QgbGluZSBpcyBhIHZlcnkgc3BlY2lhbCBjYXNlLgorCisgICAgd2hpbGUgKGlzc2VwYXJhdG9yKGl0OC0+Y2gpKQorICAgICAgICAgICAgTmV4dENoKGl0OCk7CisKKyAgICB3aGlsZSAoaXQ4LT5jaCAhPSAnXHInICYmIGl0OCAtPmNoICE9ICdcbicgJiYgaXQ4LT5jaCAhPSAnXHQnICYmIGl0OCAtPiBjaCAhPSAtMSkgeworCisgICAgICAgICpTaGVldFR5cGVQdHIrKz0gKGNoYXIpIGl0OCAtPmNoOworICAgICAgICBOZXh0Q2goaXQ4KTsKKyAgICB9CisKKyAgICAqU2hlZXRUeXBlUHRyID0gMDsKK30KKworCitzdGF0aWMKK2Ntc0Jvb2wgUGFyc2VJVDgoY21zSVQ4KiBpdDgsIGNtc0Jvb2wgbm9zaGVldCkKK3sKKyAgICBjaGFyKiBTaGVldFR5cGVQdHIgPSBpdDggLT5UYWJbMF0uU2hlZXRUeXBlOworCisgICAgaWYgKG5vc2hlZXQgPT0gMCkgeworICAgICAgICBSZWFkVHlwZShpdDgsIFNoZWV0VHlwZVB0cik7CisgICAgfQorCisgICAgSW5TeW1ib2woaXQ4KTsKKworICAgIFNraXBFT0xOKGl0OCk7CisKKyAgICB3aGlsZSAoaXQ4LT4gc3kgIT0gU0VPRiAmJgorICAgICAgICAgICBpdDgtPiBzeSAhPSBTU1lORVJST1IpIHsKKworICAgICAgICAgICAgc3dpdGNoIChpdDggLT4gc3kpIHsKKworICAgICAgICAgICAgY2FzZSBTQkVHSU5fREFUQV9GT1JNQVQ6CisgICAgICAgICAgICAgICAgICAgIGlmICghRGF0YUZvcm1hdFNlY3Rpb24oaXQ4KSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBTQkVHSU5fREFUQToKKworICAgICAgICAgICAgICAgICAgICBpZiAoIURhdGFTZWN0aW9uKGl0OCkpIHJldHVybiBGQUxTRTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaXQ4IC0+IHN5ICE9IFNFT0YpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jVGFibGUoaXQ4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdDggLT5uVGFibGUgPSBpdDggLT5UYWJsZXNDb3VudCAtIDE7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFkIHNoZWV0IHR5cGUgaWYgcHJlc2VudC4gV2Ugb25seSBzdXBwb3J0IGlkZW50aWZpZXIgYW5kIHN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aWRlbnQ+IDxlb2xuPiBpcyBhIHR5cGUgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55dGhpbmcgZWxzZSwgaXMgbm90IGEgdHlwZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9zaGVldCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0OCAtPnN5ID09IFNJREVOVCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXkgYmUgYSB0eXBlIHNoZWV0IG9yIG1heSBiZSBhIHByb3AgdmFsdWUgc3RhdGVtZW50LiBXZSBjYW5ub3QgdXNlIGluc3ltYm9sIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHNwZWNpYWwgY2FzZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpc3NlcGFyYXRvcihpdDgtPmNoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV4dENoKGl0OCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIG5ld2xpbmUgaXMgZm91bmQsIHRoZW4gdGhpcyBpcyBhIHR5cGUgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQ4IC0+Y2ggPT0gJ1xuJyB8fCBpdDgtPmNoID09ICdccicpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNJVDhTZXRTaGVldFR5cGUoaXQ4LCBpdDggLT5pZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluU3ltYm9sKGl0OCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgbm90LiBKdXN0IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSVQ4U2V0U2hlZXRUeXBlKGl0OCwgIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIHF1b3RlZCBzdHJpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQ4IC0+c3kgPT0gU1NUUklORykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0lUOFNldFNoZWV0VHlwZShpdDgsIGl0OCAtPnN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5TeW1ib2woaXQ4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFNFT0xOOgorICAgICAgICAgICAgICAgICAgICBTa2lwRU9MTihpdDgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFIZWFkZXJTZWN0aW9uKGl0OCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgfQorCisgICAgfQorCisgICAgcmV0dXJuIChpdDggLT4gc3kgIT0gU1NZTkVSUk9SKTsKK30KKworCisKKy8vIEluaXQgdXNlZnVsbCBwb2ludGVycworCitzdGF0aWMKK3ZvaWQgQ29va1BvaW50ZXJzKGNtc0lUOCogaXQ4KQoreworICAgIGludCBpZEZpZWxkLCBpOworICAgIGNoYXIqIEZsZDsKKyAgICBjbXNVSW50MzJOdW1iZXIgajsKKyAgICBjbXNVSW50MzJOdW1iZXIgbk9sZFRhYmxlID0gaXQ4IC0+blRhYmxlOworCisgICAgZm9yIChqPTA7IGogPCBpdDggLT5UYWJsZXNDb3VudDsgaisrKSB7CisKKyAgICBUQUJMRSogdCA9IGl0OCAtPlRhYiArIGo7CisKKyAgICB0IC0+IFNhbXBsZUlEID0gMDsKKyAgICBpdDggLT5uVGFibGUgPSBqOworCisgICAgZm9yIChpZEZpZWxkID0gMDsgaWRGaWVsZCA8IHQgLT4gblNhbXBsZXM7IGlkRmllbGQrKykKKyAgICB7CisgICAgICAgIGlmICh0IC0+RGF0YUZvcm1hdCA9PSBOVUxMKXsKKyAgICAgICAgICAgIFN5bkVycm9yKGl0OCwgIlVuZGVmaW5lZCBEQVRBX0ZPUk1BVCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgRmxkID0gdC0+RGF0YUZvcm1hdFtpZEZpZWxkXTsKKyAgICAgICAgaWYgKCFGbGQpIGNvbnRpbnVlOworCisKKyAgICAgICAgaWYgKGNtc3N0cmNhc2VjbXAoRmxkLCAiU0FNUExFX0lEIikgPT0gMCkgeworCisgICAgICAgICAgICB0IC0+IFNhbXBsZUlEID0gaWRGaWVsZDsKKworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCB0IC0+IG5QYXRjaGVzOyBpKyspIHsKKworICAgICAgICAgICAgICAgIGNoYXIgKkRhdGEgPSBHZXREYXRhKGl0OCwgaSwgaWRGaWVsZCk7CisgICAgICAgICAgICAgICAgaWYgKERhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBCdWZmZXJbMjU2XTsKKworICAgICAgICAgICAgICAgICAgICBzdHJuY3B5KEJ1ZmZlciwgRGF0YSwgMjU1KTsKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyWzI1NV0gPSAwOworCisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJsZW4oQnVmZmVyKSA8PSBzdHJsZW4oRGF0YSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHkoRGF0YSwgQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgU2V0RGF0YShpdDgsIGksIGlkRmllbGQsIEJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorCisgICAgICAgIC8vICJMQUJFTCIgaXMgYW4gZXh0ZW5zaW9uLiBJdCBrZWVwcyByZWZlcmVuY2VzIHRvIGZvcndhcmQgdGFibGVzCisKKyAgICAgICAgaWYgKChjbXNzdHJjYXNlY21wKEZsZCwgIkxBQkVMIikgPT0gMCkgfHwgRmxkWzBdID09ICckJyApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBTZWFyY2ggZm9yIHRhYmxlIHJlZmVyZW5jZXMuLi4KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGkgPCB0IC0+IG5QYXRjaGVzOyBpKyspIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKkxhYmVsID0gR2V0RGF0YShpdDgsIGksIGlkRmllbGQpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExhYmVsKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGFiZWwsIHNlYXJjaCBmb3IgYSB0YWJsZSBjb250YWluaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgcHJvcGVydHkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGs9MDsgayA8IGl0OCAtPlRhYmxlc0NvdW50OyBrKyspIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEUqIFRhYmxlID0gaXQ4IC0+VGFiICsgazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtFWVZBTFVFKiBwOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXNBdmFpbGFibGVPbkxpc3QoVGFibGUtPkhlYWRlckxpc3QsIExhYmVsLCBOVUxMLCAmcCkpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF2YWlsYWJsZSwga2VlcCB0eXBlIGFuZCB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgQnVmZmVyWzI1Nl07CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpUeXBlICA9IHAgLT5WYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgIG5UYWJsZSA9IChpbnQpIGs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbnByaW50ZihCdWZmZXIsIDI1NSwgIiVzICVkICVzIiwgTGFiZWwsIG5UYWJsZSwgVHlwZSApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0RGF0YShpdDgsIGksIGlkRmllbGQsIEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIH0KKworCisgICAgICAgIH0KKworICAgIH0KKyAgICB9CisKKyAgICBpdDggLT5uVGFibGUgPSBuT2xkVGFibGU7Cit9CisKKy8vIFRyeSB0byBpbmZlcmUgaWYgdGhlIGZpbGUgaXMgYSBDR0FUUy9JVDggZmlsZSBhdCBhbGwuIFJlYWQgZmlyc3QgbGluZQorLy8gdGhhdCBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2Ugc29tZSBwcmludGFibGUgY2hhcmFjdGVycyBwbHVzIGEgXG4KKy8vIHJldHVybnMgMCBpZiB0aGlzIGlzIG5vdCBsaWtlIGEgQ0dBVFMsIG9yIGFuIGludGVnZXIgb3RoZXJ3aXNlLiBUaGlzIGludGVnZXIgaXMgdGhlIG51bWJlciBvZiB3b3JkcyBpbiBmaXJzdCBsaW5lPworc3RhdGljCitpbnQgSXNNeUJsb2NrKGNtc1VJbnQ4TnVtYmVyKiBCdWZmZXIsIGludCBuKQoreworICAgIGludCB3b3JkcyA9IDEsIHNwYWNlID0gMCwgcXVvdCA9IDA7CisgICAgaW50IGk7CisKKyAgICBpZiAobiA8IDEwKSByZXR1cm4gMDsgICAvLyBUb28gc21hbGwKKworICAgIGlmIChuID4gMTMyKQorICAgICAgICBuID0gMTMyOworCisgICAgZm9yIChpID0gMTsgaSA8IG47IGkrKykgeworCisgICAgICAgIHN3aXRjaChCdWZmZXJbaV0pCisgICAgICAgIHsKKyAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICByZXR1cm4gKChxdW90ID09IDEpIHx8ICh3b3JkcyA+IDIpKSA/IDAgOiB3b3JkczsKKyAgICAgICAgY2FzZSAnXHQnOgorICAgICAgICBjYXNlICcgJzoKKyAgICAgICAgICAgIGlmKCFxdW90ICYmICFzcGFjZSkKKyAgICAgICAgICAgICAgICBzcGFjZSA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnXCInOgorICAgICAgICAgICAgcXVvdCA9ICFxdW90OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoQnVmZmVyW2ldIDwgMzIpIHJldHVybiAwOworICAgICAgICAgICAgaWYgKEJ1ZmZlcltpXSA+IDEyNykgcmV0dXJuIDA7CisgICAgICAgICAgICB3b3JkcyArPSBzcGFjZTsKKyAgICAgICAgICAgIHNwYWNlID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljCitjbXNCb29sIElzTXlGaWxlKGNvbnN0IGNoYXIqIEZpbGVOYW1lKQoreworICAgRklMRSAqZnA7CisgICBjbXNVSW50MzJOdW1iZXIgU2l6ZTsKKyAgIGNtc1VJbnQ4TnVtYmVyIFB0clsxMzNdOworCisgICBmcCA9IGZvcGVuKEZpbGVOYW1lLCAicnQiKTsKKyAgIGlmICghZnApIHsKKyAgICAgICBjbXNTaWduYWxFcnJvcigwLCBjbXNFUlJPUl9GSUxFLCAiRmlsZSAnJXMnIG5vdCBmb3VuZCIsIEZpbGVOYW1lKTsKKyAgICAgICByZXR1cm4gRkFMU0U7CisgICB9CisKKyAgIFNpemUgPSAoY21zVUludDMyTnVtYmVyKSBmcmVhZChQdHIsIDEsIDEzMiwgZnApOworCisgICBpZiAoZmNsb3NlKGZwKSAhPSAwKQorICAgICAgIHJldHVybiBGQUxTRTsKKworICAgUHRyW1NpemVdID0gJ1wwJzsKKworICAgcmV0dXJuIElzTXlCbG9jayhQdHIsIFNpemUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydGVkIHJvdXRpbmVzCisKKworY21zSEFORExFICBDTVNFWFBPUlQgY21zSVQ4TG9hZEZyb21NZW0oY21zQ29udGV4dCBDb250ZXh0SUQsIHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIGxlbikKK3sKKyAgICBjbXNIQU5ETEUgaElUODsKKyAgICBjbXNJVDgqICBpdDg7CisgICAgaW50IHR5cGU7CisKKyAgICBfY21zQXNzZXJ0KFB0ciAhPSBOVUxMKTsKKyAgICBfY21zQXNzZXJ0KGxlbiAhPSAwKTsKKworICAgIHR5cGUgPSBJc015QmxvY2soKGNtc1VJbnQ4TnVtYmVyKilQdHIsIGxlbik7CisgICAgaWYgKHR5cGUgPT0gMCkgcmV0dXJuIE5VTEw7CisKKyAgICBoSVQ4ID0gY21zSVQ4QWxsb2MoQ29udGV4dElEKTsKKyAgICBpZiAoIWhJVDgpIHJldHVybiBOVUxMOworCisgICAgaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisgICAgaXQ4IC0+TWVtb3J5QmxvY2sgPSAoY2hhciopIF9jbXNNYWxsb2MoQ29udGV4dElELCBsZW4gKyAxKTsKKworICAgIHN0cm5jcHkoaXQ4IC0+TWVtb3J5QmxvY2ssIChjb25zdCBjaGFyKikgUHRyLCBsZW4pOworICAgIGl0OCAtPk1lbW9yeUJsb2NrW2xlbl0gPSAwOworCisgICAgc3RybmNweShpdDgtPkZpbGVTdGFja1swXS0+RmlsZU5hbWUsICIiLCBjbXNNQVhfUEFUSC0xKTsKKyAgICBpdDgtPiBTb3VyY2UgPSBpdDggLT4gTWVtb3J5QmxvY2s7CisKKyAgICBpZiAoIVBhcnNlSVQ4KGl0OCwgdHlwZS0xKSkgeworCisgICAgICAgIGNtc0lUOEZyZWUoaElUOCk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBDb29rUG9pbnRlcnMoaXQ4KTsKKyAgICBpdDggLT5uVGFibGUgPSAwOworCisgICAgX2Ntc0ZyZWUoQ29udGV4dElELCBpdDgtPk1lbW9yeUJsb2NrKTsKKyAgICBpdDggLT4gTWVtb3J5QmxvY2sgPSBOVUxMOworCisgICAgcmV0dXJuIGhJVDg7CisKKworfQorCisKK2Ntc0hBTkRMRSAgQ01TRVhQT1JUIGNtc0lUOExvYWRGcm9tRmlsZShjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3QgY2hhciogY0ZpbGVOYW1lKQoreworCisgICAgIGNtc0hBTkRMRSBoSVQ4OworICAgICBjbXNJVDgqICBpdDg7CisgICAgIGludCB0eXBlOworCisgICAgIF9jbXNBc3NlcnQoY0ZpbGVOYW1lICE9IE5VTEwpOworCisgICAgIHR5cGUgPSBJc015RmlsZShjRmlsZU5hbWUpOworICAgICBpZiAodHlwZSA9PSAwKSByZXR1cm4gTlVMTDsKKworICAgICBoSVQ4ID0gY21zSVQ4QWxsb2MoQ29udGV4dElEKTsKKyAgICAgaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisgICAgIGlmICghaElUOCkgcmV0dXJuIE5VTEw7CisKKworICAgICBpdDggLT5GaWxlU3RhY2tbMF0tPlN0cmVhbSA9IGZvcGVuKGNGaWxlTmFtZSwgInJ0Iik7CisKKyAgICAgaWYgKCFpdDggLT5GaWxlU3RhY2tbMF0tPlN0cmVhbSkgeworICAgICAgICAgY21zSVQ4RnJlZShoSVQ4KTsKKyAgICAgICAgIHJldHVybiBOVUxMOworICAgICB9CisKKworICAgIHN0cm5jcHkoaXQ4LT5GaWxlU3RhY2tbMF0tPkZpbGVOYW1lLCBjRmlsZU5hbWUsIGNtc01BWF9QQVRILTEpOworICAgIGl0OC0+RmlsZVN0YWNrWzBdLT5GaWxlTmFtZVtjbXNNQVhfUEFUSC0xXSA9IDA7CisKKyAgICBpZiAoIVBhcnNlSVQ4KGl0OCwgdHlwZS0xKSkgeworCisgICAgICAgICAgICBmY2xvc2UoaXQ4IC0+RmlsZVN0YWNrWzBdLT5TdHJlYW0pOworICAgICAgICAgICAgY21zSVQ4RnJlZShoSVQ4KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENvb2tQb2ludGVycyhpdDgpOworICAgIGl0OCAtPm5UYWJsZSA9IDA7CisKKyAgICBpZiAoZmNsb3NlKGl0OCAtPkZpbGVTdGFja1swXS0+U3RyZWFtKSE9IDApIHsKKyAgICAgICAgICAgIGNtc0lUOEZyZWUoaElUOCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gaElUODsKKworfQorCitpbnQgQ01TRVhQT1JUIGNtc0lUOEVudW1EYXRhRm9ybWF0KGNtc0hBTkRMRSBoSVQ4LCBjaGFyICoqKlNhbXBsZU5hbWVzKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisgICAgVEFCTEUqIHQ7CisKKyAgICBfY21zQXNzZXJ0KGhJVDggIT0gTlVMTCk7CisKKyAgICB0ID0gR2V0VGFibGUoaXQ4KTsKKworICAgIGlmIChTYW1wbGVOYW1lcykKKyAgICAgICAgKlNhbXBsZU5hbWVzID0gdCAtPiBEYXRhRm9ybWF0OworICAgIHJldHVybiB0IC0+IG5TYW1wbGVzOworfQorCisKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zSVQ4RW51bVByb3BlcnRpZXMoY21zSEFORExFIGhJVDgsIGNoYXIgKioqUHJvcGVydHlOYW1lcykKK3sKKyAgICBjbXNJVDgqIGl0OCA9IChjbXNJVDgqKSBoSVQ4OworICAgIEtFWVZBTFVFKiBwOworICAgIGNtc1VJbnQzMk51bWJlciBuOworICAgIGNoYXIgKipQcm9wczsKKyAgICBUQUJMRSogdDsKKworICAgIF9jbXNBc3NlcnQoaElUOCAhPSBOVUxMKTsKKworICAgIHQgPSBHZXRUYWJsZShpdDgpOworCisgICAgLy8gUGFzcyMxIC0gY291bnQgcHJvcGVydGllcworCisgICAgbiA9IDA7CisgICAgZm9yIChwID0gdCAtPiBIZWFkZXJMaXN0OyAgcCAhPSBOVUxMOyBwID0gcC0+TmV4dCkgeworICAgICAgICBuKys7CisgICAgfQorCisKKyAgICBQcm9wcyA9IChjaGFyICoqKSBBbGxvY0NodW5rKGl0OCwgc2l6ZW9mKGNoYXIgKikgKiBuKTsKKworICAgIC8vIFBhc3MjMiAtIEZpbGwgcG9pbnRlcnMKKyAgICBuID0gMDsKKyAgICBmb3IgKHAgPSB0IC0+IEhlYWRlckxpc3Q7ICBwICE9IE5VTEw7IHAgPSBwLT5OZXh0KSB7CisgICAgICAgIFByb3BzW24rK10gPSBwIC0+IEtleXdvcmQ7CisgICAgfQorCisgICAgKlByb3BlcnR5TmFtZXMgPSBQcm9wczsKKyAgICByZXR1cm4gbjsKK30KKworY21zVUludDMyTnVtYmVyIENNU0VYUE9SVCBjbXNJVDhFbnVtUHJvcGVydHlNdWx0aShjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY1Byb3AsIGNvbnN0IGNoYXIgKioqU3VicHJvcGVydHlOYW1lcykKK3sKKyAgICBjbXNJVDgqIGl0OCA9IChjbXNJVDgqKSBoSVQ4OworICAgIEtFWVZBTFVFICpwLCAqdG1wOworICAgIGNtc1VJbnQzMk51bWJlciBuOworICAgIGNvbnN0IGNoYXIgKipQcm9wczsKKyAgICBUQUJMRSogdDsKKworICAgIF9jbXNBc3NlcnQoaElUOCAhPSBOVUxMKTsKKworCisgICAgdCA9IEdldFRhYmxlKGl0OCk7CisKKyAgICBpZighSXNBdmFpbGFibGVPbkxpc3QodC0+SGVhZGVyTGlzdCwgY1Byb3AsIE5VTEwsICZwKSkgeworICAgICAgICAqU3VicHJvcGVydHlOYW1lcyA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vIFBhc3MjMSAtIGNvdW50IHByb3BlcnRpZXMKKworICAgIG4gPSAwOworICAgIGZvciAodG1wID0gcDsgIHRtcCAhPSBOVUxMOyB0bXAgPSB0bXAtPk5leHRTdWJrZXkpIHsKKyAgICAgICAgaWYodG1wLT5TdWJrZXkgIT0gTlVMTCkKKyAgICAgICAgICAgIG4rKzsKKyAgICB9CisKKworICAgIFByb3BzID0gKGNvbnN0IGNoYXIgKiopIEFsbG9jQ2h1bmsoaXQ4LCBzaXplb2YoY2hhciAqKSAqIG4pOworCisgICAgLy8gUGFzcyMyIC0gRmlsbCBwb2ludGVycworICAgIG4gPSAwOworICAgIGZvciAodG1wID0gcDsgIHRtcCAhPSBOVUxMOyB0bXAgPSB0bXAtPk5leHRTdWJrZXkpIHsKKyAgICAgICAgaWYodG1wLT5TdWJrZXkgIT0gTlVMTCkKKyAgICAgICAgICAgIFByb3BzW24rK10gPSBwIC0+U3Via2V5OworICAgIH0KKworICAgICpTdWJwcm9wZXJ0eU5hbWVzID0gUHJvcHM7CisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYworaW50IExvY2F0ZVBhdGNoKGNtc0lUOCogaXQ4LCBjb25zdCBjaGFyKiBjUGF0Y2gpCit7CisgICAgaW50IGk7CisgICAgY29uc3QgY2hhciAqZGF0YTsKKyAgICBUQUJMRSogdCA9IEdldFRhYmxlKGl0OCk7CisKKyAgICBmb3IgKGk9MDsgaSA8IHQtPiBuUGF0Y2hlczsgaSsrKSB7CisKKyAgICAgICAgZGF0YSA9IEdldERhdGEoaXQ4LCBpLCB0LT5TYW1wbGVJRCk7CisKKyAgICAgICAgaWYgKGRhdGEgIT0gTlVMTCkgeworCisgICAgICAgICAgICAgICAgaWYgKGNtc3N0cmNhc2VjbXAoZGF0YSwgY1BhdGNoKSA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3luRXJyb3IoaXQ4LCAiQ291bGRuJ3QgZmluZCBwYXRjaCAnJXMnXG4iLCBjUGF0Y2gpOworICAgICAgICByZXR1cm4gLTE7Cit9CisKKworc3RhdGljCitpbnQgTG9jYXRlRW1wdHlQYXRjaChjbXNJVDgqIGl0OCkKK3sKKyAgICBpbnQgaTsKKyAgICBjb25zdCBjaGFyICpkYXRhOworICAgIFRBQkxFKiB0ID0gR2V0VGFibGUoaXQ4KTsKKworICAgIGZvciAoaT0wOyBpIDwgdC0+IG5QYXRjaGVzOyBpKyspIHsKKworICAgICAgICBkYXRhID0gR2V0RGF0YShpdDgsIGksIHQtPlNhbXBsZUlEKTsKKworICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIGk7CisKKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYworaW50IExvY2F0ZVNhbXBsZShjbXNJVDgqIGl0OCwgY29uc3QgY2hhciogY1NhbXBsZSkKK3sKKyAgICBpbnQgaTsKKyAgICBjb25zdCBjaGFyICpmbGQ7CisgICAgVEFCTEUqIHQgPSBHZXRUYWJsZShpdDgpOworCisgICAgZm9yIChpPTA7IGkgPCB0LT5uU2FtcGxlczsgaSsrKSB7CisKKyAgICAgICAgZmxkID0gR2V0RGF0YUZvcm1hdChpdDgsIGkpOworICAgICAgICBpZiAoY21zc3RyY2FzZWNtcChmbGQsIGNTYW1wbGUpID09IDApCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisKKyAgICByZXR1cm4gLTE7CisKK30KKworCitpbnQgQ01TRVhQT1JUIGNtc0lUOEZpbmREYXRhRm9ybWF0KGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBjU2FtcGxlKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisKKyAgICBfY21zQXNzZXJ0KGhJVDggIT0gTlVMTCk7CisKKyAgICByZXR1cm4gTG9jYXRlU2FtcGxlKGl0OCwgY1NhbXBsZSk7Cit9CisKKworCitjb25zdCBjaGFyKiBDTVNFWFBPUlQgY21zSVQ4R2V0RGF0YVJvd0NvbChjbXNIQU5ETEUgaElUOCwgaW50IHJvdywgaW50IGNvbCkKK3sKKyAgICBjbXNJVDgqIGl0OCA9IChjbXNJVDgqKSBoSVQ4OworCisgICAgX2Ntc0Fzc2VydChoSVQ4ICE9IE5VTEwpOworCisgICAgcmV0dXJuIEdldERhdGEoaXQ4LCByb3csIGNvbCk7Cit9CisKKworY21zRmxvYXQ2NE51bWJlciBDTVNFWFBPUlQgY21zSVQ4R2V0RGF0YVJvd0NvbERibChjbXNIQU5ETEUgaElUOCwgaW50IHJvdywgaW50IGNvbCkKK3sKKyAgICBjb25zdCBjaGFyKiBCdWZmZXI7CisKKyAgICBCdWZmZXIgPSBjbXNJVDhHZXREYXRhUm93Q29sKGhJVDgsIHJvdywgY29sKTsKKworICAgIGlmIChCdWZmZXIgPT0gTlVMTCkgcmV0dXJuIDAuMDsKKworICAgIHJldHVybiBQYXJzZUZsb2F0TnVtYmVyKEJ1ZmZlcik7Cit9CisKKworY21zQm9vbCBDTVNFWFBPUlQgY21zSVQ4U2V0RGF0YVJvd0NvbChjbXNIQU5ETEUgaElUOCwgaW50IHJvdywgaW50IGNvbCwgY29uc3QgY2hhciogVmFsKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisKKyAgICBfY21zQXNzZXJ0KGhJVDggIT0gTlVMTCk7CisKKyAgICByZXR1cm4gU2V0RGF0YShpdDgsIHJvdywgY29sLCBWYWwpOworfQorCisKK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc0lUOFNldERhdGFSb3dDb2xEYmwoY21zSEFORExFIGhJVDgsIGludCByb3csIGludCBjb2wsIGNtc0Zsb2F0NjROdW1iZXIgVmFsKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisgICAgY2hhciBCdWZmWzI1Nl07CisKKyAgICBfY21zQXNzZXJ0KGhJVDggIT0gTlVMTCk7CisKKyAgICBzcHJpbnRmKEJ1ZmYsIGl0OC0+RG91YmxlRm9ybWF0dGVyLCBWYWwpOworCisgICAgcmV0dXJuIFNldERhdGEoaXQ4LCByb3csIGNvbCwgQnVmZik7Cit9CisKKworCitjb25zdCBjaGFyKiBDTVNFWFBPUlQgY21zSVQ4R2V0RGF0YShjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY1BhdGNoLCBjb25zdCBjaGFyKiBjU2FtcGxlKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisgICAgaW50IGlGaWVsZCwgaVNldDsKKworICAgIF9jbXNBc3NlcnQoaElUOCAhPSBOVUxMKTsKKworICAgIGlGaWVsZCA9IExvY2F0ZVNhbXBsZShpdDgsIGNTYW1wbGUpOworICAgIGlmIChpRmllbGQgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlTZXQgPSBMb2NhdGVQYXRjaChpdDgsIGNQYXRjaCk7CisgICAgaWYgKGlTZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gR2V0RGF0YShpdDgsIGlTZXQsIGlGaWVsZCk7Cit9CisKKworY21zRmxvYXQ2NE51bWJlciBDTVNFWFBPUlQgY21zSVQ4R2V0RGF0YURibChjbXNIQU5ETEUgIGl0OCwgY29uc3QgY2hhciogY1BhdGNoLCBjb25zdCBjaGFyKiBjU2FtcGxlKQoreworICAgIGNvbnN0IGNoYXIqIEJ1ZmZlcjsKKworICAgIEJ1ZmZlciA9IGNtc0lUOEdldERhdGEoaXQ4LCBjUGF0Y2gsIGNTYW1wbGUpOworCisgICAgcmV0dXJuIFBhcnNlRmxvYXROdW1iZXIoQnVmZmVyKTsKK30KKworCisKK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc0lUOFNldERhdGEoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIGNQYXRjaCwgY29uc3QgY2hhciogY1NhbXBsZSwgY29uc3QgY2hhciAqVmFsKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisgICAgaW50IGlGaWVsZCwgaVNldDsKKyAgICBUQUJMRSogdDsKKworICAgIF9jbXNBc3NlcnQoaElUOCAhPSBOVUxMKTsKKworICAgIHQgPSBHZXRUYWJsZShpdDgpOworCisgICAgaUZpZWxkID0gTG9jYXRlU2FtcGxlKGl0OCwgY1NhbXBsZSk7CisKKyAgICBpZiAoaUZpZWxkIDwgMCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKHQtPiBuUGF0Y2hlcyA9PSAwKSB7CisKKyAgICAgICAgQWxsb2NhdGVEYXRhRm9ybWF0KGl0OCk7CisgICAgICAgIEFsbG9jYXRlRGF0YVNldChpdDgpOworICAgICAgICBDb29rUG9pbnRlcnMoaXQ4KTsKKyAgICB9CisKKyAgICBpZiAoY21zc3RyY2FzZWNtcChjU2FtcGxlLCAiU0FNUExFX0lEIikgPT0gMCkgeworCisgICAgICAgIGlTZXQgICA9IExvY2F0ZUVtcHR5UGF0Y2goaXQ4KTsKKyAgICAgICAgaWYgKGlTZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gU3luRXJyb3IoaXQ4LCAiQ291bGRuJ3QgYWRkIG1vcmUgcGF0Y2hlcyAnJXMnXG4iLCBjUGF0Y2gpOworICAgICAgICB9CisKKyAgICAgICAgaUZpZWxkID0gdCAtPiBTYW1wbGVJRDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlTZXQgPSBMb2NhdGVQYXRjaChpdDgsIGNQYXRjaCk7CisgICAgICAgIGlmIChpU2V0IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFNldERhdGEoaXQ4LCBpU2V0LCBpRmllbGQsIFZhbCk7Cit9CisKKworY21zQm9vbCBDTVNFWFBPUlQgY21zSVQ4U2V0RGF0YURibChjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogY1BhdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjU2FtcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIFZhbCkKK3sKKyAgICBjbXNJVDgqIGl0OCA9IChjbXNJVDgqKSBoSVQ4OworICAgIGNoYXIgQnVmZlsyNTZdOworCisgICAgX2Ntc0Fzc2VydChoSVQ4ICE9IE5VTEwpOworCisgICAgc25wcmludGYoQnVmZiwgMjU1LCBpdDgtPkRvdWJsZUZvcm1hdHRlciwgVmFsKTsKKyAgICByZXR1cm4gY21zSVQ4U2V0RGF0YShoSVQ4LCBjUGF0Y2gsIGNTYW1wbGUsIEJ1ZmYpOworfQorCisvLyBCdWZmZXIgc2hvdWxkIGdldCBNQVhTVFIgYXQgbGVhc3QKKworY29uc3QgY2hhciogQ01TRVhQT1JUIGNtc0lUOEdldFBhdGNoTmFtZShjbXNIQU5ETEUgaElUOCwgaW50IG5QYXRjaCwgY2hhciogYnVmZmVyKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisgICAgVEFCTEUqIHQ7CisgICAgY2hhciogRGF0YTsKKworICAgIF9jbXNBc3NlcnQoaElUOCAhPSBOVUxMKTsKKworICAgIHQgPSBHZXRUYWJsZShpdDgpOworICAgIERhdGEgPSBHZXREYXRhKGl0OCwgblBhdGNoLCB0LT5TYW1wbGVJRCk7CisKKyAgICBpZiAoIURhdGEpIHJldHVybiBOVUxMOworICAgIGlmICghYnVmZmVyKSByZXR1cm4gRGF0YTsKKworICAgIHN0cm5jcHkoYnVmZmVyLCBEYXRhLCBNQVhTVFItMSk7CisgICAgYnVmZmVyW01BWFNUUi0xXSA9IDA7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworaW50IENNU0VYUE9SVCBjbXNJVDhHZXRQYXRjaEJ5TmFtZShjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciAqY1BhdGNoKQoreworICAgIF9jbXNBc3NlcnQoaElUOCAhPSBOVUxMKTsKKworICAgIHJldHVybiBMb2NhdGVQYXRjaCgoY21zSVQ4KiloSVQ4LCBjUGF0Y2gpOworfQorCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0lUOFRhYmxlQ291bnQoY21zSEFORExFIGhJVDgpCit7CisgICAgY21zSVQ4KiBpdDggPSAoY21zSVQ4KikgaElUODsKKworICAgIF9jbXNBc3NlcnQoaElUOCAhPSBOVUxMKTsKKworICAgIHJldHVybiBpdDggLT5UYWJsZXNDb3VudDsKK30KKworLy8gVGhpcyBoYW5kbGVzIHRoZSAiTEFCRUwiIGV4dGVuc2lvbi4KKy8vIExhYmVsLCBuVGFibGUsIFR5cGUKKworaW50IENNU0VYUE9SVCBjbXNJVDhTZXRUYWJsZUJ5TGFiZWwoY21zSEFORExFIGhJVDgsIGNvbnN0IGNoYXIqIGNTZXQsIGNvbnN0IGNoYXIqIGNGaWVsZCwgY29uc3QgY2hhciogRXhwZWN0ZWRUeXBlKQoreworICAgIGNvbnN0IGNoYXIqIGNMYWJlbEZsZDsKKyAgICBjaGFyIFR5cGVbMjU2XSwgTGFiZWxbMjU2XTsKKyAgICBpbnQgblRhYmxlOworCisgICAgX2Ntc0Fzc2VydChoSVQ4ICE9IE5VTEwpOworCisgICAgaWYgKGNGaWVsZCAhPSBOVUxMICYmICpjRmllbGQgPT0gMCkKKyAgICAgICAgICAgIGNGaWVsZCA9ICJMQUJFTCI7CisKKyAgICBpZiAoY0ZpZWxkID09IE5VTEwpCisgICAgICAgICAgICBjRmllbGQgPSAiTEFCRUwiOworCisgICAgY0xhYmVsRmxkID0gY21zSVQ4R2V0RGF0YShoSVQ4LCBjU2V0LCBjRmllbGQpOworICAgIGlmICghY0xhYmVsRmxkKSByZXR1cm4gLTE7CisKKyAgICBpZiAoc3NjYW5mKGNMYWJlbEZsZCwgIiUyNTVzICVkICUyNTVzIiwgTGFiZWwsICZuVGFibGUsIFR5cGUpICE9IDMpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoRXhwZWN0ZWRUeXBlICE9IE5VTEwgJiYgKkV4cGVjdGVkVHlwZSA9PSAwKQorICAgICAgICBFeHBlY3RlZFR5cGUgPSBOVUxMOworCisgICAgaWYgKEV4cGVjdGVkVHlwZSkgeworCisgICAgICAgIGlmIChjbXNzdHJjYXNlY21wKFR5cGUsIEV4cGVjdGVkVHlwZSkgIT0gMCkgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBjbXNJVDhTZXRUYWJsZShoSVQ4LCBuVGFibGUpOworfQorCisKK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc0lUOFNldEluZGV4Q29sdW1uKGNtc0hBTkRMRSBoSVQ4LCBjb25zdCBjaGFyKiBjU2FtcGxlKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisgICAgaW50IHBvczsKKworICAgIF9jbXNBc3NlcnQoaElUOCAhPSBOVUxMKTsKKworICAgIHBvcyA9IExvY2F0ZVNhbXBsZShpdDgsIGNTYW1wbGUpOworICAgIGlmKHBvcyA9PSAtMSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaXQ4LT5UYWJbaXQ4LT5uVGFibGVdLlNhbXBsZUlEID0gcG9zOworICAgIHJldHVybiBUUlVFOworfQorCisKK3ZvaWQgQ01TRVhQT1JUIGNtc0lUOERlZmluZURibEZvcm1hdChjbXNIQU5ETEUgaElUOCwgY29uc3QgY2hhciogRm9ybWF0dGVyKQoreworICAgIGNtc0lUOCogaXQ4ID0gKGNtc0lUOCopIGhJVDg7CisKKyAgICBfY21zQXNzZXJ0KGhJVDggIT0gTlVMTCk7CisKKyAgICBpZiAoRm9ybWF0dGVyID09IE5VTEwpCisgICAgICAgIHN0cmNweShpdDgtPkRvdWJsZUZvcm1hdHRlciwgREVGQVVMVF9EQkxfRk9STUFUKTsKKyAgICBlbHNlCisgICAgICAgIHN0cm5jcHkoaXQ4LT5Eb3VibGVGb3JtYXR0ZXIsIEZvcm1hdHRlciwgc2l6ZW9mKGl0OC0+RG91YmxlRm9ybWF0dGVyKSk7CisKKyAgICBpdDggLT5Eb3VibGVGb3JtYXR0ZXJbc2l6ZW9mKGl0OCAtPkRvdWJsZUZvcm1hdHRlciktMV0gPSAwOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2NudnJ0LmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zY252cnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTkzZTgzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2NudnJ0LmMKQEAgLTAsMCArMSwxMTQyIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiBNYXJ0aSBNYXJpYSBTYWd1ZXIKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlCisvLyBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTworLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKy8vIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKy8vIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisKKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIgorCisKKy8vIExpbmsgc2V2ZXJhbCBwcm9maWxlcyB0byBvYnRhaW4gYSBzaW5nbGUgTFVUIG1vZGVsbGluZyB0aGUgd2hvbGUgY29sb3IgdHJhbnNmb3JtLiBJbnRlbnRzLCBCbGFjayBwb2ludAorLy8gY29tcGVuc2F0aW9uIGFuZCBBZGFwdGF0aW9uIHBhcmFtZXRlcnMgbWF5IHZhcnkgYWNyb3NzIHByb2ZpbGVzLiBCUEMgYW5kIEFkYXB0YXRpb24gcmVmZXJzIHRvIHRoZSBQQ1MKKy8vIGFmdGVyIHRoZSBwcm9maWxlLiBJLmUsIEJQQ1swXSByZWZlcnMgdG8gY29ubmV4aW9uIGJldHdlZW4gcHJvZmlsZSgwKSBhbmQgcHJvZmlsZSgxKQorY21zUGlwZWxpbmUqIF9jbXNMaW5rUHJvZmlsZXMoY21zQ29udGV4dCAgICAgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG5Qcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnRzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSAgICAgaFByb2ZpbGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNCb29sICAgICAgICAgQlBDW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEFkYXB0YXRpb25TdGF0ZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCByb3V0aW5lIGZvciBJQ0Mtc3R5bGUgaW50ZW50cy4gQSB1c2VyIG1heSBkZWNpZGUgdG8gb3ZlcnJpZGUgaXQgYnkgdXNpbmcgYSBwbHVnaW4uCisvLyBTdXBwb3J0ZWQgaW50ZW50cyBhcmUgcGVyY2VwdHVhbCwgcmVsYXRpdmUgY29sb3JpbWV0cmljLCBzYXR1cmF0aW9uIGFuZCBJQ0MtYWJzb2x1dGUgY29sb3JpbWV0cmljCitzdGF0aWMKK2Ntc1BpcGVsaW5lKiBEZWZhdWx0SUNDaW50ZW50cyhjbXNDb250ZXh0ICAgICBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG5Qcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW50ZW50c1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFICAgICBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNCb29sICAgICAgICAgQlBDW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uU3RhdGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBUaGlzIGlzIHRoZSBlbnRyeSBmb3IgYmxhY2stcHJlc2VydmluZyBLLW9ubHkgaW50ZW50cywgd2hpY2ggYXJlIG5vbi1JQ0MuIExhc3QgcHJvZmlsZSBoYXZlIHRvIGJlIGEgb3V0cHV0IHByb2ZpbGUKKy8vIHRvIGRvIHRoZSB0cmljayAobm8gZGV2aWNlbGlua3MgYWxsb3dlZCBhdCB0aGF0IHBvc2l0aW9uKQorc3RhdGljCitjbXNQaXBlbGluZSogIEJsYWNrUHJlc2VydmluZ0tPbmx5SW50ZW50cyhjbXNDb250ZXh0ICAgICBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgblByb2ZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIEludGVudHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFICAgICBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Jvb2wgICAgICAgICBCUENbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvblN0YXRlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBUaGlzIGlzIHRoZSBlbnRyeSBmb3IgYmxhY2stcGxhbmUgcHJlc2VydmluZywgd2hpY2ggYXJlIG5vbi1JQ0MuIEFnYWluLCBMYXN0IHByb2ZpbGUgaGF2ZSB0byBiZSBhIG91dHB1dCBwcm9maWxlCisvLyB0byBkbyB0aGUgdHJpY2sgKG5vIGRldmljZWxpbmtzIGFsbG93ZWQgYXQgdGhhdCBwb3NpdGlvbikKK3N0YXRpYworY21zUGlwZWxpbmUqICBCbGFja1ByZXNlcnZpbmdLUGxhbmVJbnRlbnRzKGNtc0NvbnRleHQgICAgIENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgblByb2ZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnRzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgICAgIGhQcm9maWxlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Jvb2wgICAgICAgICBCUENbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEFkYXB0YXRpb25TdGF0ZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncyk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLy8gVGhpcyBpcyBhIHN0cnVjdHVyZSBob2xkaW5nIGltcGxlbWVudGF0aW9ucyBmb3IgYWxsIHN1cHBvcnRlZCBpbnRlbnRzLgordHlwZWRlZiBzdHJ1Y3QgX2Ntc19pbnRlbnRzX2xpc3QgeworCisgICAgY21zVUludDMyTnVtYmVyIEludGVudDsKKyAgICBjaGFyICAgICAgICAgICAgRGVzY3JpcHRpb25bMjU2XTsKKyAgICBjbXNJbnRlbnRGbiAgICAgTGluazsKKyAgICBzdHJ1Y3QgX2Ntc19pbnRlbnRzX2xpc3QqICBOZXh0OworCit9IGNtc0ludGVudHNMaXN0OworCisKKy8vIEJ1aWx0LWluIGludGVudHMKK3N0YXRpYyBjbXNJbnRlbnRzTGlzdCBEZWZhdWx0SW50ZW50c1tdID0geworCisgICAgeyBJTlRFTlRfUEVSQ0VQVFVBTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdElDQ2ludGVudHMsICAgICAgICAgICAgJkRlZmF1bHRJbnRlbnRzWzFdIH0sCisgICAgeyBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDLCAgICAgICAgICAgICAgICAgIlJlbGF0aXZlIGNvbG9yaW1ldHJpYyIsICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdElDQ2ludGVudHMsICAgICAgICAgICAgJkRlZmF1bHRJbnRlbnRzWzJdIH0sCisgICAgeyBJTlRFTlRfU0FUVVJBVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNhdHVyYXRpb24iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdElDQ2ludGVudHMsICAgICAgICAgICAgJkRlZmF1bHRJbnRlbnRzWzNdIH0sCisgICAgeyBJTlRFTlRfQUJTT0xVVEVfQ09MT1JJTUVUUklDLCAgICAgICAgICAgICAgICAgIkFic29sdXRlIGNvbG9yaW1ldHJpYyIsICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdElDQ2ludGVudHMsICAgICAgICAgICAgJkRlZmF1bHRJbnRlbnRzWzRdIH0sCisgICAgeyBJTlRFTlRfUFJFU0VSVkVfS19PTkxZX1BFUkNFUFRVQUwsICAgICAgICAgICAgIlBlcmNlcHR1YWwgcHJlc2VydmluZyBibGFjayBpbmsiLCAgICAgICAgICAgICAgQmxhY2tQcmVzZXJ2aW5nS09ubHlJbnRlbnRzLCAgJkRlZmF1bHRJbnRlbnRzWzVdIH0sCisgICAgeyBJTlRFTlRfUFJFU0VSVkVfS19PTkxZX1JFTEFUSVZFX0NPTE9SSU1FVFJJQywgIlJlbGF0aXZlIGNvbG9yaW1ldHJpYyBwcmVzZXJ2aW5nIGJsYWNrIGluayIsICAgQmxhY2tQcmVzZXJ2aW5nS09ubHlJbnRlbnRzLCAgJkRlZmF1bHRJbnRlbnRzWzZdIH0sCisgICAgeyBJTlRFTlRfUFJFU0VSVkVfS19PTkxZX1NBVFVSQVRJT04sICAgICAgICAgICAgIlNhdHVyYXRpb24gcHJlc2VydmluZyBibGFjayBpbmsiLCAgICAgICAgICAgICAgQmxhY2tQcmVzZXJ2aW5nS09ubHlJbnRlbnRzLCAgJkRlZmF1bHRJbnRlbnRzWzddIH0sCisgICAgeyBJTlRFTlRfUFJFU0VSVkVfS19QTEFORV9QRVJDRVBUVUFMLCAgICAgICAgICAgIlBlcmNlcHR1YWwgcHJlc2VydmluZyBibGFjayBwbGFuZSIsICAgICAgICAgICAgQmxhY2tQcmVzZXJ2aW5nS1BsYW5lSW50ZW50cywgJkRlZmF1bHRJbnRlbnRzWzhdIH0sCisgICAgeyBJTlRFTlRfUFJFU0VSVkVfS19QTEFORV9SRUxBVElWRV9DT0xPUklNRVRSSUMsIlJlbGF0aXZlIGNvbG9yaW1ldHJpYyBwcmVzZXJ2aW5nIGJsYWNrIHBsYW5lIiwgQmxhY2tQcmVzZXJ2aW5nS1BsYW5lSW50ZW50cywgJkRlZmF1bHRJbnRlbnRzWzldIH0sCisgICAgeyBJTlRFTlRfUFJFU0VSVkVfS19QTEFORV9TQVRVUkFUSU9OLCAgICAgICAgICAgIlNhdHVyYXRpb24gcHJlc2VydmluZyBibGFjayBwbGFuZSIsICAgICAgICAgICAgQmxhY2tQcmVzZXJ2aW5nS1BsYW5lSW50ZW50cywgTlVMTCB9Cit9OworCisKKy8vIEEgcG9pbnRlciB0byB0aGUgYmVnaW5pbmcgb2YgdGhlIGxpc3QKK19jbXNJbnRlbnRzUGx1Z2luQ2h1bmtUeXBlIF9jbXNJbnRlbnRzUGx1Z2luQ2h1bmsgPSB7IE5VTEwgfTsKKworLy8gRHVwbGljYXRlcyB0aGUgem9uZSBvZiBtZW1vcnkgdXNlZCBieSB0aGUgcGx1Zy1pbiBpbiB0aGUgbmV3IGNvbnRleHQKK3N0YXRpYwordm9pZCBEdXBQbHVnaW5JbnRlbnRzTGlzdChzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpCit7CisgICBfY21zSW50ZW50c1BsdWdpbkNodW5rVHlwZSBuZXdIZWFkID0geyBOVUxMIH07CisgICBjbXNJbnRlbnRzTGlzdCogIGVudHJ5OworICAgY21zSW50ZW50c0xpc3QqICBBbnRlcmlvciA9IE5VTEw7CisgICBfY21zSW50ZW50c1BsdWdpbkNodW5rVHlwZSogaGVhZCA9IChfY21zSW50ZW50c1BsdWdpbkNodW5rVHlwZSopIHNyYy0+Y2h1bmtzW0ludGVudFBsdWdpbl07CisKKyAgICAvLyBXYWxrIHRoZSBsaXN0IGNvcHlpbmcgYWxsIG5vZGVzCisgICBmb3IgKGVudHJ5ID0gaGVhZC0+SW50ZW50czsKKyAgICAgICAgZW50cnkgIT0gTlVMTDsKKyAgICAgICAgZW50cnkgPSBlbnRyeSAtPk5leHQpIHsKKworICAgICAgICAgICAgY21zSW50ZW50c0xpc3QgKm5ld0VudHJ5ID0gKCBjbXNJbnRlbnRzTGlzdCAqKSBfY21zU3ViQWxsb2NEdXAoY3R4IC0+TWVtUG9vbCwgZW50cnksIHNpemVvZihjbXNJbnRlbnRzTGlzdCkpOworICAgCisgICAgICAgICAgICBpZiAobmV3RW50cnkgPT0gTlVMTCkgCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGtlZXAgdGhlIGxpbmtlZCBsaXN0IG9yZGVyLCBzbyB0aGlzIGlzIGEgbGl0dGxlIGJpdCB0cmlja3kKKyAgICAgICAgICAgIG5ld0VudHJ5IC0+IE5leHQgPSBOVUxMOworICAgICAgICAgICAgaWYgKEFudGVyaW9yKQorICAgICAgICAgICAgICAgIEFudGVyaW9yIC0+IE5leHQgPSBuZXdFbnRyeTsKKyAgICAgCisgICAgICAgICAgICBBbnRlcmlvciA9IG5ld0VudHJ5OworCisgICAgICAgICAgICBpZiAobmV3SGVhZC5JbnRlbnRzID09IE5VTEwpCisgICAgICAgICAgICAgICAgbmV3SGVhZC5JbnRlbnRzID0gbmV3RW50cnk7CisgICAgfQorCisgIGN0eCAtPmNodW5rc1tJbnRlbnRQbHVnaW5dID0gX2Ntc1N1YkFsbG9jRHVwKGN0eC0+TWVtUG9vbCwgJm5ld0hlYWQsIHNpemVvZihfY21zSW50ZW50c1BsdWdpbkNodW5rVHlwZSkpOworfQorCit2b2lkICBfY21zQWxsb2NJbnRlbnRzUGx1Z2luQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKQoreworICAgIGlmIChzcmMgIT0gTlVMTCkgeworCisgICAgICAgIC8vIENvcHkgYWxsIGxpbmtlZCBsaXN0CisgICAgICAgIER1cFBsdWdpbkludGVudHNMaXN0KGN0eCwgc3JjKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YXRpYyBfY21zSW50ZW50c1BsdWdpbkNodW5rVHlwZSBJbnRlbnRzUGx1Z2luQ2h1bmtUeXBlID0geyBOVUxMIH07CisgICAgICAgIGN0eCAtPmNodW5rc1tJbnRlbnRQbHVnaW5dID0gX2Ntc1N1YkFsbG9jRHVwKGN0eCAtPk1lbVBvb2wsICZJbnRlbnRzUGx1Z2luQ2h1bmtUeXBlLCBzaXplb2YoX2Ntc0ludGVudHNQbHVnaW5DaHVua1R5cGUpKTsKKyAgICB9Cit9CisKKworLy8gU2VhcmNoIHRoZSBsaXN0IGZvciBhIHN1aXRhYmxlIGludGVudC4gUmV0dXJucyBOVUxMIGlmIG5vdCBmb3VuZAorc3RhdGljCitjbXNJbnRlbnRzTGlzdCogU2VhcmNoSW50ZW50KGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgSW50ZW50KQoreworICAgIF9jbXNJbnRlbnRzUGx1Z2luQ2h1bmtUeXBlKiBjdHggPSAoIF9jbXNJbnRlbnRzUGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIEludGVudFBsdWdpbik7CisgICAgY21zSW50ZW50c0xpc3QqIHB0OworCisgICAgZm9yIChwdCA9IGN0eCAtPiBJbnRlbnRzOyBwdCAhPSBOVUxMOyBwdCA9IHB0IC0+IE5leHQpCisgICAgICAgIGlmIChwdCAtPkludGVudCA9PSBJbnRlbnQpIHJldHVybiBwdDsKKworICAgIGZvciAocHQgPSBEZWZhdWx0SW50ZW50czsgcHQgIT0gTlVMTDsgcHQgPSBwdCAtPiBOZXh0KQorICAgICAgICBpZiAocHQgLT5JbnRlbnQgPT0gSW50ZW50KSByZXR1cm4gcHQ7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworLy8gQmxhY2sgcG9pbnQgY29tcGVuc2F0aW9uLiBJbXBsZW1lbnRlZCBhcyBhIGxpbmVhciBzY2FsaW5nIGluIFhZWi4gQmxhY2sgcG9pbnRzCisvLyBzaG91bGQgY29tZSByZWxhdGl2ZSB0byB0aGUgd2hpdGUgcG9pbnQuIEZpbGxzIGFuIG1hdHJpeC9vZmZzZXQgZWxlbWVudCBtCisvLyB3aGljaCBpcyBvcmdhbml6ZWQgYXMgYSA0eDQgbWF0cml4Lgorc3RhdGljCit2b2lkIENvbXB1dGVCbGFja1BvaW50Q29tcGVuc2F0aW9uKGNvbnN0IGNtc0NJRVhZWiogQmxhY2tQb2ludEluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNDSUVYWVoqIEJsYWNrUG9pbnRPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc01BVDMqIG0sIGNtc1ZFQzMqIG9mZikKK3sKKyAgY21zRmxvYXQ2NE51bWJlciBheCwgYXksIGF6LCBieCwgYnksIGJ6LCB0eCwgdHksIHR6OworCisgICAvLyBOb3cgd2UgbmVlZCB0byBjb21wdXRlIGEgbWF0cml4IHBsdXMgYW4gb2Zmc2V0IG0gYW5kIG9mIHN1Y2ggb2YKKyAgIC8vIFttXSpicGluICsgb2ZmID0gYnBvdXQKKyAgIC8vIFttXSpENTAgICsgb2ZmID0gRDUwCisgICAvLworICAgLy8gVGhpcyBpcyBhIGxpbmVhciBzY2FsaW5nIGluIHRoZSBmb3JtIGF4K2IsIHdoZXJlCisgICAvLyBhID0gKGJwb3V0IC0gRDUwKSAvIChicGluIC0gRDUwKQorICAgLy8gYiA9IC0gRDUwKiAoYnBvdXQgLSBicGluKSAvIChicGluIC0gRDUwKQorCisgICB0eCA9IEJsYWNrUG9pbnRJbi0+WCAtIGNtc0Q1MF9YWVooKS0+WDsKKyAgIHR5ID0gQmxhY2tQb2ludEluLT5ZIC0gY21zRDUwX1hZWigpLT5ZOworICAgdHogPSBCbGFja1BvaW50SW4tPlogLSBjbXNENTBfWFlaKCktPlo7CisKKyAgIGF4ID0gKEJsYWNrUG9pbnRPdXQtPlggLSBjbXNENTBfWFlaKCktPlgpIC8gdHg7CisgICBheSA9IChCbGFja1BvaW50T3V0LT5ZIC0gY21zRDUwX1hZWigpLT5ZKSAvIHR5OworICAgYXogPSAoQmxhY2tQb2ludE91dC0+WiAtIGNtc0Q1MF9YWVooKS0+WikgLyB0ejsKKworICAgYnggPSAtIGNtc0Q1MF9YWVooKS0+IFggKiAoQmxhY2tQb2ludE91dC0+WCAtIEJsYWNrUG9pbnRJbi0+WCkgLyB0eDsKKyAgIGJ5ID0gLSBjbXNENTBfWFlaKCktPiBZICogKEJsYWNrUG9pbnRPdXQtPlkgLSBCbGFja1BvaW50SW4tPlkpIC8gdHk7CisgICBieiA9IC0gY21zRDUwX1hZWigpLT4gWiAqIChCbGFja1BvaW50T3V0LT5aIC0gQmxhY2tQb2ludEluLT5aKSAvIHR6OworCisgICBfY21zVkVDM2luaXQoJm0gLT52WzBdLCBheCwgMCwgIDApOworICAgX2Ntc1ZFQzNpbml0KCZtIC0+dlsxXSwgMCwgYXksICAwKTsKKyAgIF9jbXNWRUMzaW5pdCgmbSAtPnZbMl0sIDAsICAwLCAgYXopOworICAgX2Ntc1ZFQzNpbml0KG9mZiwgYngsIGJ5LCBieik7CisKK30KKworCisvLyBBcHByb3hpbWF0ZSBhIGJsYWNrYm9keSBpbGx1bWluYW50IGJhc2VkIG9uIENIQUQgaW5mb3JtYXRpb24KK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBDSEFEMlRlbXAoY29uc3QgY21zTUFUMyogQ2hhZCkKK3sKKyAgICAvLyBDb252ZXJ0IEQ1MCBhY3Jvc3MgaW52ZXJzZSBDSEFEIHRvIGdldCB0aGUgYWJzb2x1dGUgd2hpdGUgcG9pbnQKKyAgICBjbXNWRUMzIGQsIHM7CisgICAgY21zQ0lFWFlaIERlc3Q7CisgICAgY21zQ0lFeHlZIERlc3RDaHJvbWF0aWNpdHk7CisgICAgY21zRmxvYXQ2NE51bWJlciBUZW1wSzsKKyAgICBjbXNNQVQzIG0xLCBtMjsKKworICAgIG0xID0gKkNoYWQ7CisgICAgaWYgKCFfY21zTUFUM2ludmVyc2UoJm0xLCAmbTIpKSByZXR1cm4gRkFMU0U7CisKKyAgICBzLm5bVlhdID0gY21zRDUwX1hZWigpIC0+IFg7CisgICAgcy5uW1ZZXSA9IGNtc0Q1MF9YWVooKSAtPiBZOworICAgIHMubltWWl0gPSBjbXNENTBfWFlaKCkgLT4gWjsKKworICAgIF9jbXNNQVQzZXZhbCgmZCwgJm0yLCAmcyk7CisKKyAgICBEZXN0LlggPSBkLm5bVlhdOworICAgIERlc3QuWSA9IGQubltWWV07CisgICAgRGVzdC5aID0gZC5uW1ZaXTsKKworICAgIGNtc1hZWjJ4eVkoJkRlc3RDaHJvbWF0aWNpdHksICZEZXN0KTsKKworICAgIGlmICghY21zVGVtcEZyb21XaGl0ZVBvaW50KCZUZW1wSywgJkRlc3RDaHJvbWF0aWNpdHkpKQorICAgICAgICByZXR1cm4gLTEuMDsKKworICAgIHJldHVybiBUZW1wSzsKK30KKworLy8gQ29tcHV0ZSBhIENIQUQgYmFzZWQgb24gYSBnaXZlbiB0ZW1wZXJhdHVyZQorc3RhdGljCisgICAgdm9pZCBUZW1wMkNIQUQoY21zTUFUMyogQ2hhZCwgY21zRmxvYXQ2NE51bWJlciBUZW1wKQoreworICAgIGNtc0NJRVhZWiBXaGl0ZTsKKyAgICBjbXNDSUV4eVkgQ2hyb21hdGljaXR5T2ZXaGl0ZTsKKworICAgIGNtc1doaXRlUG9pbnRGcm9tVGVtcCgmQ2hyb21hdGljaXR5T2ZXaGl0ZSwgVGVtcCk7CisgICAgY21zeHlZMlhZWigmV2hpdGUsICZDaHJvbWF0aWNpdHlPZldoaXRlKTsKKyAgICBfY21zQWRhcHRhdGlvbk1hdHJpeChDaGFkLCBOVUxMLCAmV2hpdGUsIGNtc0Q1MF9YWVooKSk7Cit9CisKKy8vIEpvaW4gc2NhbGluZ3MgdG8gb2J0YWluIHJlbGF0aXZlIGlucHV0IHRvIGFic29sdXRlIGFuZCB0aGVuIHRvIHJlbGF0aXZlIG91dHB1dC4KKy8vIFJlc3VsdCBpcyBzdG9yZWQgaW4gYSAzeDMgbWF0cml4CitzdGF0aWMKK2Ntc0Jvb2wgIENvbXB1dGVBYnNvbHV0ZUludGVudChjbXNGbG9hdDY0TnVtYmVyIEFkYXB0YXRpb25TdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNDSUVYWVoqIFdoaXRlUG9pbnRJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNNQVQzKiBDaHJvbWF0aWNBZGFwdGF0aW9uTWF0cml4SW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zQ0lFWFlaKiBXaGl0ZVBvaW50T3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc01BVDMqIENocm9tYXRpY0FkYXB0YXRpb25NYXRyaXhPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zTUFUMyogbSkKK3sKKyAgICBjbXNNQVQzIFNjYWxlLCBtMSwgbTIsIG0zLCBtNDsKKworICAgIC8vIEFkYXB0YXRpb24gc3RhdGUKKyAgICBpZiAoQWRhcHRhdGlvblN0YXRlID09IDEuMCkgeworCisgICAgICAgIC8vIE9ic2VydmVyIGlzIGZ1bGx5IGFkYXB0ZWQuIEtlZXAgY2hyb21hdGljIGFkYXB0YXRpb24uCisgICAgICAgIC8vIFRoYXQgaXMgdGhlIHN0YW5kYXJkIFY0IGJlaGF2aW91cgorICAgICAgICBfY21zVkVDM2luaXQoJm0tPnZbMF0sIFdoaXRlUG9pbnRJbi0+WCAvIFdoaXRlUG9pbnRPdXQtPlgsIDAsIDApOworICAgICAgICBfY21zVkVDM2luaXQoJm0tPnZbMV0sIDAsIFdoaXRlUG9pbnRJbi0+WSAvIFdoaXRlUG9pbnRPdXQtPlksIDApOworICAgICAgICBfY21zVkVDM2luaXQoJm0tPnZbMl0sIDAsIDAsIFdoaXRlUG9pbnRJbi0+WiAvIFdoaXRlUG9pbnRPdXQtPlopOworCisgICAgfQorICAgIGVsc2UgIHsKKworICAgICAgICAvLyBJbmNvbXBsZXRlIGFkYXB0YXRpb24uIFRoaXMgaXMgYW4gYWR2YW5jZWQgZmVhdHVyZS4KKyAgICAgICAgX2Ntc1ZFQzNpbml0KCZTY2FsZS52WzBdLCBXaGl0ZVBvaW50SW4tPlggLyBXaGl0ZVBvaW50T3V0LT5YLCAwLCAwKTsKKyAgICAgICAgX2Ntc1ZFQzNpbml0KCZTY2FsZS52WzFdLCAwLCAgV2hpdGVQb2ludEluLT5ZIC8gV2hpdGVQb2ludE91dC0+WSwgMCk7CisgICAgICAgIF9jbXNWRUMzaW5pdCgmU2NhbGUudlsyXSwgMCwgMCwgIFdoaXRlUG9pbnRJbi0+WiAvIFdoaXRlUG9pbnRPdXQtPlopOworCisKKyAgICAgICAgaWYgKEFkYXB0YXRpb25TdGF0ZSA9PSAwLjApIHsKKworICAgICAgICAgICAgbTEgPSAqQ2hyb21hdGljQWRhcHRhdGlvbk1hdHJpeE91dDsKKyAgICAgICAgICAgIF9jbXNNQVQzcGVyKCZtMiwgJm0xLCAmU2NhbGUpOworICAgICAgICAgICAgLy8gbTIgaG9sZHMgQ0hBRCBmcm9tIG91dHB1dCB3aGl0ZSB0byBENTAgdGltZXMgYWJzLiBjb2wuIHNjYWxpbmcKKworICAgICAgICAgICAgLy8gT2JzZXJ2ZXIgaXMgbm90IGFkYXB0ZWQsIHVuZG8gdGhlIGNocm9tYXRpYyBhZGFwdGF0aW9uCisgICAgICAgICAgICBfY21zTUFUM3BlcihtLCAmbTIsIENocm9tYXRpY0FkYXB0YXRpb25NYXRyaXhPdXQpOworCisgICAgICAgICAgICBtMyA9ICpDaHJvbWF0aWNBZGFwdGF0aW9uTWF0cml4SW47CisgICAgICAgICAgICBpZiAoIV9jbXNNQVQzaW52ZXJzZSgmbTMsICZtNCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIF9jbXNNQVQzcGVyKG0sICZtMiwgJm00KTsKKworICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICBjbXNNQVQzIE1peGVkQ0hBRDsKKyAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgVGVtcFNyYywgVGVtcERlc3QsIFRlbXA7CisKKyAgICAgICAgICAgIG0xID0gKkNocm9tYXRpY0FkYXB0YXRpb25NYXRyaXhJbjsKKyAgICAgICAgICAgIGlmICghX2Ntc01BVDNpbnZlcnNlKCZtMSwgJm0yKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgX2Ntc01BVDNwZXIoJm0zLCAmbTIsICZTY2FsZSk7CisgICAgICAgICAgICAvLyBtMyBob2xkcyBDSEFEIGZyb20gaW5wdXQgd2hpdGUgdG8gRDUwIHRpbWVzIGFicy4gY29sLiBzY2FsaW5nCisKKyAgICAgICAgICAgIFRlbXBTcmMgID0gQ0hBRDJUZW1wKENocm9tYXRpY0FkYXB0YXRpb25NYXRyaXhJbik7CisgICAgICAgICAgICBUZW1wRGVzdCA9IENIQUQyVGVtcChDaHJvbWF0aWNBZGFwdGF0aW9uTWF0cml4T3V0KTsKKworICAgICAgICAgICAgaWYgKFRlbXBTcmMgPCAwLjAgfHwgVGVtcERlc3QgPCAwLjApIHJldHVybiBGQUxTRTsgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcKKworICAgICAgICAgICAgaWYgKF9jbXNNQVQzaXNJZGVudGl0eSgmU2NhbGUpICYmIGZhYnMoVGVtcFNyYyAtIFRlbXBEZXN0KSA8IDAuMDEpIHsKKworICAgICAgICAgICAgICAgIF9jbXNNQVQzaWRlbnRpdHkobSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFRlbXAgPSAoMS4wIC0gQWRhcHRhdGlvblN0YXRlKSAqIFRlbXBEZXN0ICsgQWRhcHRhdGlvblN0YXRlICogVGVtcFNyYzsKKworICAgICAgICAgICAgLy8gR2V0IGEgQ0hBRCBmcm9tIHdoYXRldmVyIG91dHB1dCB0ZW1wZXJhdHVyZSB0byBENTAuIFRoaXMgcmVwbGFjZXMgb3V0cHV0IENIQUQKKyAgICAgICAgICAgIFRlbXAyQ0hBRCgmTWl4ZWRDSEFELCBUZW1wKTsKKworICAgICAgICAgICAgX2Ntc01BVDNwZXIobSwgJm0zLCAmTWl4ZWRDSEFEKTsKKyAgICAgICAgfQorCisgICAgfQorICAgIHJldHVybiBUUlVFOworCit9CisKKy8vIEp1c3QgdG8gc2VlIGlmIG0gbWF0cml4IHNob3VsZCBiZSBhcHBsaWVkCitzdGF0aWMKK2Ntc0Jvb2wgSXNFbXB0eUxheWVyKGNtc01BVDMqIG0sIGNtc1ZFQzMqIG9mZikKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGRpZmYgPSAwOworICAgIGNtc01BVDMgSWRlbnQ7CisgICAgaW50IGk7CisKKyAgICBpZiAobSA9PSBOVUxMICYmIG9mZiA9PSBOVUxMKSByZXR1cm4gVFJVRTsgIC8vIE5VTEwgaXMgYWxsb3dlZCBhcyBhbiBlbXB0eSBsYXllcgorICAgIGlmIChtID09IE5VTEwgJiYgb2ZmICE9IE5VTEwpIHJldHVybiBGQUxTRTsgLy8gVGhpcyBpcyBhbiBpbnRlcm5hbCBlcnJvcgorCisgICAgX2Ntc01BVDNpZGVudGl0eSgmSWRlbnQpOworCisgICAgZm9yIChpPTA7IGkgPCAzKjM7IGkrKykKKyAgICAgICAgZGlmZiArPSBmYWJzKCgoY21zRmxvYXQ2NE51bWJlciopbSlbaV0gLSAoKGNtc0Zsb2F0NjROdW1iZXIqKSZJZGVudClbaV0pOworCisgICAgZm9yIChpPTA7IGkgPCAzOyBpKyspCisgICAgICAgIGRpZmYgKz0gZmFicygoKGNtc0Zsb2F0NjROdW1iZXIqKW9mZilbaV0pOworCisKKyAgICByZXR1cm4gKGRpZmYgPCAwLjAwMik7Cit9CisKKworLy8gQ29tcHV0ZSB0aGUgY29udmVyc2lvbiBsYXllcgorc3RhdGljCitjbXNCb29sIENvbXB1dGVDb252ZXJzaW9uKGludCBpLCBjbXNIUFJPRklMRSBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNCb29sIEJQQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvblN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zTUFUMyogbSwgY21zVkVDMyogb2ZmKQoreworCisgICAgaW50IGs7CisKKyAgICAvLyBtICBhbmQgb2ZmIGFyZSBzZXQgdG8gaWRlbnRpdHkgYW5kIHRoaXMgaXMgZGV0ZWN0ZWQgbGF0dGVyIG9uCisgICAgX2Ntc01BVDNpZGVudGl0eShtKTsKKyAgICBfY21zVkVDM2luaXQob2ZmLCAwLCAwLCAwKTsKKworICAgIC8vIElmIGludGVudCBpcyBhYnMuIGNvbG9yaW1ldHJpYywKKyAgICBpZiAoSW50ZW50ID09IElOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUMpIHsKKworICAgICAgICBjbXNDSUVYWVogV2hpdGVQb2ludEluLCBXaGl0ZVBvaW50T3V0OworICAgICAgICBjbXNNQVQzIENocm9tYXRpY0FkYXB0YXRpb25NYXRyaXhJbiwgQ2hyb21hdGljQWRhcHRhdGlvbk1hdHJpeE91dDsKKworICAgICAgICBfY21zUmVhZE1lZGlhV2hpdGVQb2ludCgmV2hpdGVQb2ludEluLCAgaFByb2ZpbGVzW2ktMV0pOworICAgICAgICBfY21zUmVhZENIQUQoJkNocm9tYXRpY0FkYXB0YXRpb25NYXRyaXhJbiwgaFByb2ZpbGVzW2ktMV0pOworCisgICAgICAgIF9jbXNSZWFkTWVkaWFXaGl0ZVBvaW50KCZXaGl0ZVBvaW50T3V0LCAgaFByb2ZpbGVzW2ldKTsKKyAgICAgICAgX2Ntc1JlYWRDSEFEKCZDaHJvbWF0aWNBZGFwdGF0aW9uTWF0cml4T3V0LCBoUHJvZmlsZXNbaV0pOworCisgICAgICAgIGlmICghQ29tcHV0ZUFic29sdXRlSW50ZW50KEFkYXB0YXRpb25TdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmV2hpdGVQb2ludEluLCAgJkNocm9tYXRpY0FkYXB0YXRpb25NYXRyaXhJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmV2hpdGVQb2ludE91dCwgJkNocm9tYXRpY0FkYXB0YXRpb25NYXRyaXhPdXQsIG0pKSByZXR1cm4gRkFMU0U7CisKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8vIFJlc3Qgb2YgaW50ZW50cyBtYXkgYXBwbHkgQlBDLgorCisgICAgICAgIGlmIChCUEMpIHsKKworICAgICAgICAgICAgY21zQ0lFWFlaIEJsYWNrUG9pbnRJbiwgQmxhY2tQb2ludE91dDsKKworICAgICAgICAgICAgY21zRGV0ZWN0QmxhY2tQb2ludCgmQmxhY2tQb2ludEluLCAgaFByb2ZpbGVzW2ktMV0sIEludGVudCwgMCk7CisgICAgICAgICAgICBjbXNEZXRlY3REZXN0aW5hdGlvbkJsYWNrUG9pbnQoJkJsYWNrUG9pbnRPdXQsIGhQcm9maWxlc1tpXSwgSW50ZW50LCAwKTsKKworICAgICAgICAgICAgLy8gSWYgYmxhY2sgcG9pbnRzIGFyZSBlcXVhbCwgdGhlbiBkbyBub3RoaW5nCisgICAgICAgICAgICBpZiAoQmxhY2tQb2ludEluLlggIT0gQmxhY2tQb2ludE91dC5YIHx8CisgICAgICAgICAgICAgICAgQmxhY2tQb2ludEluLlkgIT0gQmxhY2tQb2ludE91dC5ZIHx8CisgICAgICAgICAgICAgICAgQmxhY2tQb2ludEluLlogIT0gQmxhY2tQb2ludE91dC5aKQorICAgICAgICAgICAgICAgICAgICBDb21wdXRlQmxhY2tQb2ludENvbXBlbnNhdGlvbigmQmxhY2tQb2ludEluLCAmQmxhY2tQb2ludE91dCwgbSwgb2ZmKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE9mZnNldCBzaG91bGQgYmUgYWRqdXN0ZWQgYmVjYXVzZSB0aGUgZW5jb2RpbmcuIFdlIGVuY29kZSBYWVogbm9ybWFsaXplZCB0byAwLi4xLjAsCisgICAgLy8gdG8gZG8gdGhhdCwgd2UgZGl2aWRlIGJ5IE1BWF9FTkNPREVBQkxFX1haWS4gVGhlIGNvbnZlcnNpb24gc3RhZ2UgZ29lcyBYWVogLT4gWFlaIHNvCisgICAgLy8gd2UgaGF2ZSBmaXJzdCB0byBjb252ZXJ0IGZyb20gZW5jb2RlZCB0byBYWVogYW5kIHRoZW4gY29udmVydCBiYWNrIHRvIGVuY29kZWQuCisgICAgLy8geSA9IE14ICsgT2ZmCisgICAgLy8geCA9IHgnYworICAgIC8vIHkgPSBNIHgnYyArIE9mZgorICAgIC8vIHkgPSB5J2M7IHknID0geSAvIGMKKyAgICAvLyB5JyA9IChNeCdjICsgT2ZmKSAvYyA9IE14JyArIChPZmYgLyBjKQorCisgICAgZm9yIChrPTA7IGsgPCAzOyBrKyspIHsKKyAgICAgICAgb2ZmIC0+bltrXSAvPSBNQVhfRU5DT0RFQUJMRV9YWVo7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworLy8gQWRkIGEgY29udmVyc2lvbiBzdGFnZSBpZiBuZWVkZWQuIElmIGEgbWF0cml4L29mZnNldCBtIGlzIGdpdmVuLCBpdCBhcHBsaWVzIHRvIFhZWiBzcGFjZQorc3RhdGljCitjbXNCb29sIEFkZENvbnZlcnNpb24oY21zUGlwZWxpbmUqIFJlc3VsdCwgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBJblBDUywgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBPdXRQQ1MsIGNtc01BVDMqIG0sIGNtc1ZFQzMqIG9mZikKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyKiBtX2FzX2RibCA9IChjbXNGbG9hdDY0TnVtYmVyKikgbTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyKiBvZmZfYXNfZGJsID0gKGNtc0Zsb2F0NjROdW1iZXIqKSBvZmY7CisKKyAgICAvLyBIYW5kbGUgUENTIG1pc21hdGNoZXMuIEEgc3BlY2lhbGl6ZWQgc3RhZ2UgaXMgYWRkZWQgdG8gdGhlIExVVCBpbiBzdWNoIGNhc2UKKyAgICBzd2l0Y2ggKEluUENTKSB7CisKKyAgICBjYXNlIGNtc1NpZ1hZWkRhdGE6IC8vIElucHV0IHByb2ZpbGUgb3BlcmF0ZXMgaW4gWFlaCisKKyAgICAgICAgc3dpdGNoIChPdXRQQ1MpIHsKKworICAgICAgICBjYXNlIGNtc1NpZ1hZWkRhdGE6ICAvLyBYWVogLT4gWFlaCisgICAgICAgICAgICBpZiAoIUlzRW1wdHlMYXllcihtLCBvZmYpICYmCisgICAgICAgICAgICAgICAgIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoUmVzdWx0LCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NNYXRyaXgoUmVzdWx0IC0+Q29udGV4dElELCAzLCAzLCBtX2FzX2RibCwgb2ZmX2FzX2RibCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY21zU2lnTGFiRGF0YTogIC8vIFhZWiAtPiBMYWIKKyAgICAgICAgICAgIGlmICghSXNFbXB0eUxheWVyKG0sIG9mZikgJiYKKyAgICAgICAgICAgICAgICAhY21zUGlwZWxpbmVJbnNlcnRTdGFnZShSZXN1bHQsIGNtc0FUX0VORCwgY21zU3RhZ2VBbGxvY01hdHJpeChSZXN1bHQgLT5Db250ZXh0SUQsIDMsIDMsIG1fYXNfZGJsLCBvZmZfYXNfZGJsKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKFJlc3VsdCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY1hZWjJMYWIoUmVzdWx0IC0+Q29udGV4dElEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsgICAvLyBDb2xvcnNwYWNlIG1pc21hdGNoCisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGNtc1NpZ0xhYkRhdGE6IC8vIElucHV0IHByb2ZpbGUgb3BlcmF0ZXMgaW4gTGFiCisKKyAgICAgICAgc3dpdGNoIChPdXRQQ1MpIHsKKworICAgICAgICBjYXNlIGNtc1NpZ1hZWkRhdGE6ICAvLyBMYWIgLT4gWFlaCisKKyAgICAgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShSZXN1bHQsIGNtc0FUX0VORCwgX2Ntc1N0YWdlQWxsb2NMYWIyWFlaKFJlc3VsdCAtPkNvbnRleHRJRCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIGlmICghSXNFbXB0eUxheWVyKG0sIG9mZikgJiYKKyAgICAgICAgICAgICAgICAhY21zUGlwZWxpbmVJbnNlcnRTdGFnZShSZXN1bHQsIGNtc0FUX0VORCwgY21zU3RhZ2VBbGxvY01hdHJpeChSZXN1bHQgLT5Db250ZXh0SUQsIDMsIDMsIG1fYXNfZGJsLCBvZmZfYXNfZGJsKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjbXNTaWdMYWJEYXRhOiAgLy8gTGFiIC0+IExhYgorCisgICAgICAgICAgICBpZiAoIUlzRW1wdHlMYXllcihtLCBvZmYpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKFJlc3VsdCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY0xhYjJYWVooUmVzdWx0IC0+Q29udGV4dElEKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoUmVzdWx0LCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NNYXRyaXgoUmVzdWx0IC0+Q29udGV4dElELCAzLCAzLCBtX2FzX2RibCwgb2ZmX2FzX2RibCkpIHx8CisgICAgICAgICAgICAgICAgICAgICFjbXNQaXBlbGluZUluc2VydFN0YWdlKFJlc3VsdCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY1hZWjJMYWIoUmVzdWx0IC0+Q29udGV4dElEKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7ICAvLyBNaXNtYXRjaAorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIE9uIGNvbG9yc3BhY2VzIG90aGVyIHRoYW4gUENTLCBjaGVjayBmb3Igc2FtZSBzcGFjZQorICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChJblBDUyAhPSBPdXRQQ1MpIHJldHVybiBGQUxTRTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworLy8gSXMgYSBnaXZlbiBzcGFjZSBjb21wYXRpYmxlIHdpdGggYW5vdGhlcj8KK3N0YXRpYworY21zQm9vbCBDb2xvclNwYWNlSXNDb21wYXRpYmxlKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgYSwgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBiKQoreworICAgIC8vIElmIHRoZXkgYXJlIHNhbWUsIHRoZXkgYXJlIGNvbXBhdGlibGUuCisgICAgaWYgKGEgPT0gYikgcmV0dXJuIFRSVUU7CisKKyAgICAvLyBDaGVjayBmb3IgTUNINCBzdWJzdGl0dXRpb24gb2YgQ01ZSworICAgIGlmICgoYSA9PSBjbXNTaWc0Y29sb3JEYXRhKSAmJiAoYiA9PSBjbXNTaWdDbXlrRGF0YSkpIHJldHVybiBUUlVFOworICAgIGlmICgoYSA9PSBjbXNTaWdDbXlrRGF0YSkgJiYgKGIgPT0gY21zU2lnNGNvbG9yRGF0YSkpIHJldHVybiBUUlVFOworCisgICAgLy8gQ2hlY2sgZm9yIFhZWi9MYWIuIFRob3NlIHNwYWNlcyBhcmUgaW50ZXJjaGFuZ2VhYmxlIGFzIHRoZXkgY2FuIGJlIGNvbXB1dGVkIG9uZSBmcm9tIG90aGVyLgorICAgIGlmICgoYSA9PSBjbXNTaWdYWVpEYXRhKSAmJiAoYiA9PSBjbXNTaWdMYWJEYXRhKSkgcmV0dXJuIFRSVUU7CisgICAgaWYgKChhID09IGNtc1NpZ0xhYkRhdGEpICYmIChiID09IGNtc1NpZ1hZWkRhdGEpKSByZXR1cm4gVFJVRTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKworCisvLyBEZWZhdWx0IGhhbmRsZXIgZm9yIElDQy1zdHlsZSBpbnRlbnRzCitzdGF0aWMKK2Ntc1BpcGVsaW5lKiBEZWZhdWx0SUNDaW50ZW50cyhjbXNDb250ZXh0ICAgICAgIENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgIG5Qcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgIFRoZUludGVudHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSAgICAgIGhQcm9maWxlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Jvb2wgICAgICAgICAgQlBDW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uU3RhdGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICBkd0ZsYWdzKQoreworICAgIGNtc1BpcGVsaW5lKiBMdXQgPSBOVUxMOworICAgIGNtc1BpcGVsaW5lKiBSZXN1bHQ7CisgICAgY21zSFBST0ZJTEUgaFByb2ZpbGU7CisgICAgY21zTUFUMyBtOworICAgIGNtc1ZFQzMgb2ZmOworICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgQ29sb3JTcGFjZUluLCBDb2xvclNwYWNlT3V0LCBDdXJyZW50Q29sb3JTcGFjZTsKKyAgICBjbXNQcm9maWxlQ2xhc3NTaWduYXR1cmUgQ2xhc3NTaWc7CisgICAgY21zVUludDMyTnVtYmVyICBpLCBJbnRlbnQ7CisKKyAgICAvLyBGb3Igc2FmZXR5CisgICAgaWYgKG5Qcm9maWxlcyA9PSAwKSByZXR1cm4gTlVMTDsKKworICAgIC8vIEFsbG9jYXRlIGFuIGVtcHR5IExVVCBmb3IgaG9sZGluZyB0aGUgcmVzdWx0LiAwIGFzIGNoYW5uZWwgY291bnQgbWVhbnMgJ3VuZGVmaW5lZCcKKyAgICBSZXN1bHQgPSBjbXNQaXBlbGluZUFsbG9jKENvbnRleHRJRCwgMCwgMCk7CisgICAgaWYgKFJlc3VsdCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIEN1cnJlbnRDb2xvclNwYWNlID0gY21zR2V0Q29sb3JTcGFjZShoUHJvZmlsZXNbMF0pOworCisgICAgZm9yIChpPTA7IGkgPCBuUHJvZmlsZXM7IGkrKykgeworCisgICAgICAgIGNtc0Jvb2wgIGxJc0RldmljZUxpbmssIGxJc0lucHV0OworCisgICAgICAgIGhQcm9maWxlICAgICAgPSBoUHJvZmlsZXNbaV07CisgICAgICAgIENsYXNzU2lnICAgICAgPSBjbXNHZXREZXZpY2VDbGFzcyhoUHJvZmlsZSk7CisgICAgICAgIGxJc0RldmljZUxpbmsgPSAoQ2xhc3NTaWcgPT0gY21zU2lnTGlua0NsYXNzIHx8IENsYXNzU2lnID09IGNtc1NpZ0Fic3RyYWN0Q2xhc3MgKTsKKworICAgICAgICAvLyBGaXJzdCBwcm9maWxlIGlzIHVzZWQgYXMgaW5wdXQgdW5sZXNzIGRldmljZWxpbmsgb3IgYWJzdHJhY3QKKyAgICAgICAgaWYgKChpID09IDApICYmICFsSXNEZXZpY2VMaW5rKSB7CisgICAgICAgICAgICBsSXNJbnB1dCA9IFRSVUU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgLy8gRWxzZSB1c2UgcHJvZmlsZSBpbiB0aGUgaW5wdXQgZGlyZWN0aW9uIGlmIGN1cnJlbnQgc3BhY2UgaXMgbm90IFBDUworICAgICAgICBsSXNJbnB1dCAgICAgID0gKEN1cnJlbnRDb2xvclNwYWNlICE9IGNtc1NpZ1hZWkRhdGEpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAoQ3VycmVudENvbG9yU3BhY2UgIT0gY21zU2lnTGFiRGF0YSk7CisgICAgICAgIH0KKworICAgICAgICBJbnRlbnQgICAgICAgID0gVGhlSW50ZW50c1tpXTsKKworICAgICAgICBpZiAobElzSW5wdXQgfHwgbElzRGV2aWNlTGluaykgeworCisgICAgICAgICAgICBDb2xvclNwYWNlSW4gICAgPSBjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlKTsKKyAgICAgICAgICAgIENvbG9yU3BhY2VPdXQgICA9IGNtc0dldFBDUyhoUHJvZmlsZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgIENvbG9yU3BhY2VJbiAgICA9IGNtc0dldFBDUyhoUHJvZmlsZSk7CisgICAgICAgICAgICBDb2xvclNwYWNlT3V0ICAgPSBjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghQ29sb3JTcGFjZUlzQ29tcGF0aWJsZShDb2xvclNwYWNlSW4sIEN1cnJlbnRDb2xvclNwYWNlKSkgeworCisgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX0NPTE9SU1BBQ0VfQ0hFQ0ssICJDb2xvclNwYWNlIG1pc21hdGNoIik7CisgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgZGV2aWNlbGluayBpcyBmb3VuZCwgdGhlbiBubyBjdXN0b20gaW50ZW50IGlzIGFsbG93ZWQgYW5kIHdlIGNhbgorICAgICAgICAvLyByZWFkIHRoZSBMVVQgdG8gYmUgYXBwbGllZC4gU2V0dGluZ3MgZG9uJ3QgYXBwbHkgaGVyZS4KKyAgICAgICAgaWYgKGxJc0RldmljZUxpbmsgfHwgKChDbGFzc1NpZyA9PSBjbXNTaWdOYW1lZENvbG9yQ2xhc3MpICYmIChuUHJvZmlsZXMgPT0gMSkpKSB7CisKKyAgICAgICAgICAgIC8vIEdldCB0aGUgaW52b2x2ZWQgTFVUIGZyb20gdGhlIHByb2ZpbGUKKyAgICAgICAgICAgIEx1dCA9IF9jbXNSZWFkRGV2aWNlbGlua0xVVChoUHJvZmlsZSwgSW50ZW50KTsKKyAgICAgICAgICAgIGlmIChMdXQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgICAgICAgICAgLy8gV2hhdCBhYm91dCBhYnN0cmFjdCBwcm9maWxlcz8KKyAgICAgICAgICAgICBpZiAoQ2xhc3NTaWcgPT0gY21zU2lnQWJzdHJhY3RDbGFzcyAmJiBpID4gMCkgeworICAgICAgICAgICAgICAgIGlmICghQ29tcHV0ZUNvbnZlcnNpb24oaSwgaFByb2ZpbGVzLCBJbnRlbnQsIEJQQ1tpXSwgQWRhcHRhdGlvblN0YXRlc1tpXSwgJm0sICZvZmYpKSBnb3RvIEVycm9yOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfY21zTUFUM2lkZW50aXR5KCZtKTsKKyAgICAgICAgICAgICAgICBfY21zVkVDM2luaXQoJm9mZiwgMCwgMCwgMCk7CisgICAgICAgICAgICAgfQorCisKKyAgICAgICAgICAgIGlmICghQWRkQ29udmVyc2lvbihSZXN1bHQsIEN1cnJlbnRDb2xvclNwYWNlLCBDb2xvclNwYWNlSW4sICZtLCAmb2ZmKSkgZ290byBFcnJvcjsKKworICAgICAgICB9CisgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICBpZiAobElzSW5wdXQpIHsKKyAgICAgICAgICAgICAgICAvLyBJbnB1dCBkaXJlY3Rpb24gbWVhbnMgbm9uLXBjcyBjb25uZWN0aW9uLCBzbyBwcm9jZWVkIGxpa2UgZGV2aWNlbGlua3MKKyAgICAgICAgICAgICAgICBMdXQgPSBfY21zUmVhZElucHV0TFVUKGhQcm9maWxlLCBJbnRlbnQpOworICAgICAgICAgICAgICAgIGlmIChMdXQgPT0gTlVMTCkgZ290byBFcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICAgICAgLy8gT3V0cHV0IGRpcmVjdGlvbiBtZWFucyBQQ1MgY29ubmVjdGlvbi4gSW50ZW50IG1heSBhcHBseSBoZXJlCisgICAgICAgICAgICAgICAgTHV0ID0gX2Ntc1JlYWRPdXRwdXRMVVQoaFByb2ZpbGUsIEludGVudCk7CisgICAgICAgICAgICAgICAgaWYgKEx1dCA9PSBOVUxMKSBnb3RvIEVycm9yOworCisKKyAgICAgICAgICAgICAgICBpZiAoIUNvbXB1dGVDb252ZXJzaW9uKGksIGhQcm9maWxlcywgSW50ZW50LCBCUENbaV0sIEFkYXB0YXRpb25TdGF0ZXNbaV0sICZtLCAmb2ZmKSkgZ290byBFcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAoIUFkZENvbnZlcnNpb24oUmVzdWx0LCBDdXJyZW50Q29sb3JTcGFjZSwgQ29sb3JTcGFjZUluLCAmbSwgJm9mZikpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbmNhdGVuYXRlIHRvIHRoZSBvdXRwdXQgTFVUCisgICAgICAgIGlmICghY21zUGlwZWxpbmVDYXQoUmVzdWx0LCBMdXQpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKworICAgICAgICBjbXNQaXBlbGluZUZyZWUoTHV0KTsKKyAgICAgICAgTHV0ID0gTlVMTDsKKworICAgICAgICAvLyBVcGRhdGUgY3VycmVudCBzcGFjZQorICAgICAgICBDdXJyZW50Q29sb3JTcGFjZSA9IENvbG9yU3BhY2VPdXQ7CisgICAgfQorCisgICAgcmV0dXJuIFJlc3VsdDsKKworRXJyb3I6CisKKyAgICBpZiAoTHV0ICE9IE5VTEwpIGNtc1BpcGVsaW5lRnJlZShMdXQpOworICAgIGlmIChSZXN1bHQgIT0gTlVMTCkgY21zUGlwZWxpbmVGcmVlKFJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGR3RmxhZ3MpOworfQorCisKKy8vIFdyYXBwZXIgZm9yIERMTCBjYWxsaW5nIGNvbnZlbnRpb24KK2Ntc1BpcGVsaW5lKiAgQ01TRVhQT1JUIF9jbXNEZWZhdWx0SUNDaW50ZW50cyhjbXNDb250ZXh0ICAgICBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG5Qcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgVGhlSW50ZW50c1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFICAgICBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNCb29sICAgICAgICAgQlBDW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uU3RhdGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisgICAgcmV0dXJuIERlZmF1bHRJQ0NpbnRlbnRzKENvbnRleHRJRCwgblByb2ZpbGVzLCBUaGVJbnRlbnRzLCBoUHJvZmlsZXMsIEJQQywgQWRhcHRhdGlvblN0YXRlcywgZHdGbGFncyk7Cit9CisKKy8vIEJsYWNrIHByZXNlcnZpbmcgaW50ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gVHJhbnNsYXRlIGJsYWNrLXByZXNlcnZpbmcgaW50ZW50cyB0byBJQ0Mgb25lcworc3RhdGljCitpbnQgVHJhbnNsYXRlTm9uSUNDSW50ZW50cyhpbnQgSW50ZW50KQoreworICAgIHN3aXRjaCAoSW50ZW50KSB7CisgICAgICAgIGNhc2UgSU5URU5UX1BSRVNFUlZFX0tfT05MWV9QRVJDRVBUVUFMOgorICAgICAgICBjYXNlIElOVEVOVF9QUkVTRVJWRV9LX1BMQU5FX1BFUkNFUFRVQUw6CisgICAgICAgICAgICByZXR1cm4gSU5URU5UX1BFUkNFUFRVQUw7CisKKyAgICAgICAgY2FzZSBJTlRFTlRfUFJFU0VSVkVfS19PTkxZX1JFTEFUSVZFX0NPTE9SSU1FVFJJQzoKKyAgICAgICAgY2FzZSBJTlRFTlRfUFJFU0VSVkVfS19QTEFORV9SRUxBVElWRV9DT0xPUklNRVRSSUM6CisgICAgICAgICAgICByZXR1cm4gSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQzsKKworICAgICAgICBjYXNlIElOVEVOVF9QUkVTRVJWRV9LX09OTFlfU0FUVVJBVElPTjoKKyAgICAgICAgY2FzZSBJTlRFTlRfUFJFU0VSVkVfS19QTEFORV9TQVRVUkFUSU9OOgorICAgICAgICAgICAgcmV0dXJuIElOVEVOVF9TQVRVUkFUSU9OOworCisgICAgICAgIGRlZmF1bHQ6IHJldHVybiBJbnRlbnQ7CisgICAgfQorfQorCisvLyBTYW1wbGVyIGZvciBCbGFjay1vbmx5IHByZXNlcnZpbmcgQ01ZSy0+Q01ZSyB0cmFuc2Zvcm1zCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjbXNQaXBlbGluZSogICAgY215azJjbXlrOyAgICAgIC8vIFRoZSBvcmlnaW5hbCB0cmFuc2Zvcm0KKyAgICBjbXNUb25lQ3VydmUqICAgS1RvbmU7ICAgICAgICAgIC8vIEJsYWNrLXRvLWJsYWNrIHRvbmUgY3VydmUKKworfSBHcmF5T25seVBhcmFtczsKKworCisvLyBQcmVzZXJ2ZSBibGFjayBvbmx5IGlmIHRoYXQgaXMgdGhlIG9ubHkgaW5rIHVzZWQKK3N0YXRpYworaW50IEJsYWNrUHJlc2VydmluZ0dyYXlPbmx5U2FtcGxlcihyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5bXSwgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIE91dFtdLCByZWdpc3RlciB2b2lkKiBDYXJnbykKK3sKKyAgICBHcmF5T25seVBhcmFtcyogYnAgPSAoR3JheU9ubHlQYXJhbXMqKSBDYXJnbzsKKworICAgIC8vIElmIGdvaW5nIGFjcm9zcyBibGFjayBvbmx5LCBrZWVwIGJsYWNrIG9ubHkKKyAgICBpZiAoSW5bMF0gPT0gMCAmJiBJblsxXSA9PSAwICYmIEluWzJdID09IDApIHsKKworICAgICAgICAvLyBUQUMgZG9lcyBub3QgYXBwbHkgYmVjYXVzZSBpdCBpcyBibGFjayBpbmshCisgICAgICAgIE91dFswXSA9IE91dFsxXSA9IE91dFsyXSA9IDA7CisgICAgICAgIE91dFszXSA9IGNtc0V2YWxUb25lQ3VydmUxNihicC0+S1RvbmUsIEluWzNdKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgLy8gS2VlcCBub3JtYWwgdHJhbnNmb3JtIGZvciBvdGhlciBjb2xvcnMKKyAgICBicCAtPmNteWsyY215ayAtPkV2YWwxNkZuKEluLCBPdXQsIGJwIC0+Y215azJjbXlrLT5EYXRhKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gVGhpcyBpcyB0aGUgZW50cnkgZm9yIGJsYWNrLXByZXNlcnZpbmcgSy1vbmx5IGludGVudHMsIHdoaWNoIGFyZSBub24tSUNDCitzdGF0aWMKK2Ntc1BpcGVsaW5lKiAgQmxhY2tQcmVzZXJ2aW5nS09ubHlJbnRlbnRzKGNtc0NvbnRleHQgICAgIENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBuUHJvZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgVGhlSW50ZW50c1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgICAgIGhQcm9maWxlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zQm9vbCAgICAgICAgIEJQQ1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uU3RhdGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykKK3sKKyAgICBHcmF5T25seVBhcmFtcyAgYnA7CisgICAgY21zUGlwZWxpbmUqICAgIFJlc3VsdDsKKyAgICBjbXNVSW50MzJOdW1iZXIgSUNDSW50ZW50c1syNTZdOworICAgIGNtc1N0YWdlKiAgICAgICAgIENMVVQ7CisgICAgY21zVUludDMyTnVtYmVyIGksIG5HcmlkUG9pbnRzOworCisKKyAgICAvLyBTYW5pdHkgY2hlY2sKKyAgICBpZiAoblByb2ZpbGVzIDwgMSB8fCBuUHJvZmlsZXMgPiAyNTUpIHJldHVybiBOVUxMOworCisgICAgLy8gVHJhbnNsYXRlIGJsYWNrLXByZXNlcnZpbmcgaW50ZW50cyB0byBJQ0Mgb25lcworICAgIGZvciAoaT0wOyBpIDwgblByb2ZpbGVzOyBpKyspCisgICAgICAgIElDQ0ludGVudHNbaV0gPSBUcmFuc2xhdGVOb25JQ0NJbnRlbnRzKFRoZUludGVudHNbaV0pOworCisgICAgLy8gQ2hlY2sgZm9yIG5vbi1jbXlrIHByb2ZpbGVzCisgICAgaWYgKGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGVzWzBdKSAhPSBjbXNTaWdDbXlrRGF0YSB8fAorICAgICAgICBjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlc1tuUHJvZmlsZXMtMV0pICE9IGNtc1NpZ0NteWtEYXRhKQorICAgICAgICAgICByZXR1cm4gRGVmYXVsdElDQ2ludGVudHMoQ29udGV4dElELCBuUHJvZmlsZXMsIElDQ0ludGVudHMsIGhQcm9maWxlcywgQlBDLCBBZGFwdGF0aW9uU3RhdGVzLCBkd0ZsYWdzKTsKKworICAgIG1lbXNldCgmYnAsIDAsIHNpemVvZihicCkpOworCisgICAgLy8gQWxsb2NhdGUgYW4gZW1wdHkgTFVUIGZvciBob2xkaW5nIHRoZSByZXN1bHQKKyAgICBSZXN1bHQgPSBjbXNQaXBlbGluZUFsbG9jKENvbnRleHRJRCwgNCwgNCk7CisgICAgaWYgKFJlc3VsdCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIC8vIENyZWF0ZSBhIExVVCBob2xkaW5nIG5vcm1hbCBJQ0MgdHJhbnNmb3JtCisgICAgYnAuY215azJjbXlrID0gRGVmYXVsdElDQ2ludGVudHMoQ29udGV4dElELAorICAgICAgICBuUHJvZmlsZXMsCisgICAgICAgIElDQ0ludGVudHMsCisgICAgICAgIGhQcm9maWxlcywKKyAgICAgICAgQlBDLAorICAgICAgICBBZGFwdGF0aW9uU3RhdGVzLAorICAgICAgICBkd0ZsYWdzKTsKKworICAgIGlmIChicC5jbXlrMmNteWsgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIC8vIE5vdywgY29tcHV0ZSB0aGUgdG9uZSBjdXJ2ZQorICAgIGJwLktUb25lID0gX2Ntc0J1aWxkS1RvbmVDdXJ2ZShDb250ZXh0SUQsCisgICAgICAgIDQwOTYsCisgICAgICAgIG5Qcm9maWxlcywKKyAgICAgICAgSUNDSW50ZW50cywKKyAgICAgICAgaFByb2ZpbGVzLAorICAgICAgICBCUEMsCisgICAgICAgIEFkYXB0YXRpb25TdGF0ZXMsCisgICAgICAgIGR3RmxhZ3MpOworCisgICAgaWYgKGJwLktUb25lID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKworICAgIC8vIEhvdyBtYW55IGdyaWRwb2ludHMgYXJlIHdlIGdvaW5nIHRvIHVzZT8KKyAgICBuR3JpZFBvaW50cyA9IF9jbXNSZWFzb25hYmxlR3JpZHBvaW50c0J5Q29sb3JzcGFjZShjbXNTaWdDbXlrRGF0YSwgZHdGbGFncyk7CisKKyAgICAvLyBDcmVhdGUgdGhlIENMVVQuIDE2IGJpdHMKKyAgICBDTFVUID0gY21zU3RhZ2VBbGxvY0NMdXQxNmJpdChDb250ZXh0SUQsIG5HcmlkUG9pbnRzLCA0LCA0LCBOVUxMKTsKKyAgICBpZiAoQ0xVVCA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgLy8gVGhpcyBpcyB0aGUgb25lIGFuZCBvbmx5IE1QRSBpbiB0aGlzIExVVAorICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShSZXN1bHQsIGNtc0FUX0JFR0lOLCBDTFVUKSkKKyAgICAgICAgZ290byBFcnJvcjsKKworICAgIC8vIFNhbXBsZSBpdC4gV2UgY2Fubm90IGFmZm9yZCBwcmUvcG9zdCBsaW5lYXJpemF0aW9uIHRoaXMgdGltZS4KKyAgICBpZiAoIWNtc1N0YWdlU2FtcGxlQ0x1dDE2Yml0KENMVVQsIEJsYWNrUHJlc2VydmluZ0dyYXlPbmx5U2FtcGxlciwgKHZvaWQqKSAmYnAsIDApKQorICAgICAgICBnb3RvIEVycm9yOworCisgICAgLy8gR2V0IHJpZCBvZiB4Zm9ybSBhbmQgdG9uZSBjdXJ2ZQorICAgIGNtc1BpcGVsaW5lRnJlZShicC5jbXlrMmNteWspOworICAgIGNtc0ZyZWVUb25lQ3VydmUoYnAuS1RvbmUpOworCisgICAgcmV0dXJuIFJlc3VsdDsKKworRXJyb3I6CisKKyAgICBpZiAoYnAuY215azJjbXlrICE9IE5VTEwpIGNtc1BpcGVsaW5lRnJlZShicC5jbXlrMmNteWspOworICAgIGlmIChicC5LVG9uZSAhPSBOVUxMKSAgY21zRnJlZVRvbmVDdXJ2ZShicC5LVG9uZSk7CisgICAgaWYgKFJlc3VsdCAhPSBOVUxMKSBjbXNQaXBlbGluZUZyZWUoUmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKKworfQorCisvLyBLIFBsYW5lLXByZXNlcnZpbmcgQ01ZSyB0byBDTVlLIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0eXBlZGVmIHN0cnVjdCB7CisKKyAgICBjbXNQaXBlbGluZSogICAgIGNteWsyY215azsgICAgIC8vIFRoZSBvcmlnaW5hbCB0cmFuc2Zvcm0KKyAgICBjbXNIVFJBTlNGT1JNICAgIGhQcm9vZk91dHB1dDsgIC8vIE91dHB1dCBDTVlLIHRvIExhYiAobGFzdCBwcm9maWxlKQorICAgIGNtc0hUUkFOU0ZPUk0gICAgY215azJMYWI7ICAgICAgLy8gVGhlIGlucHV0IGNoYWluCisgICAgY21zVG9uZUN1cnZlKiAgICBLVG9uZTsgICAgICAgICAvLyBCbGFjay10by1ibGFjayB0b25lIGN1cnZlCisgICAgY21zUGlwZWxpbmUqICAgICBMYWJLMmNteWs7ICAgICAvLyBUaGUgb3V0cHV0IHByb2ZpbGUKKyAgICBjbXNGbG9hdDY0TnVtYmVyIE1heEVycm9yOworCisgICAgY21zSFRSQU5TRk9STSAgICBoUm91bmRUcmlwOworICAgIGNtc0Zsb2F0NjROdW1iZXIgTWF4VEFDOworCisKK30gUHJlc2VydmVLUGxhbmVQYXJhbXM7CisKKworLy8gVGhlIENMVVQgd2lsbCBiZSBzdG9yZWQgYXQgMTYgYml0cywgYnV0IGNhbGN1bGF0aW9ucyBhcmUgcGVyZm9ybWVkIGF0IGNtc0Zsb2F0MzJOdW1iZXIgcHJlY2lzaW9uCitzdGF0aWMKK2ludCBCbGFja1ByZXNlcnZpbmdTYW1wbGVyKHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbltdLCByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0W10sIHJlZ2lzdGVyIHZvaWQqIENhcmdvKQoreworICAgIGludCBpOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgSW5mWzRdLCBPdXRmWzRdOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgTGFiS1s0XTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIFN1bUNNWSwgU3VtQ01ZSywgRXJyb3IsIFJhdGlvOworICAgIGNtc0NJRUxhYiBDb2xvcmltZXRyaWNMYWIsIEJsYWNrUHJlc2VydmluZ0xhYjsKKyAgICBQcmVzZXJ2ZUtQbGFuZVBhcmFtcyogYnAgPSAoUHJlc2VydmVLUGxhbmVQYXJhbXMqKSBDYXJnbzsKKworICAgIC8vIENvbnZlcnQgZnJvbSAxNiBiaXRzIHRvIGZsb2F0aW5nIHBvaW50CisgICAgZm9yIChpPTA7IGkgPCA0OyBpKyspCisgICAgICAgIEluZltpXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoSW5baV0gLyA2NTUzNS4wKTsKKworICAgIC8vIEdldCB0aGUgSyBhY3Jvc3MgVG9uZSBjdXJ2ZQorICAgIExhYktbM10gPSBjbXNFdmFsVG9uZUN1cnZlRmxvYXQoYnAgLT5LVG9uZSwgSW5mWzNdKTsKKworICAgIC8vIElmIGdvaW5nIGFjcm9zcyBibGFjayBvbmx5LCBrZWVwIGJsYWNrIG9ubHkKKyAgICBpZiAoSW5bMF0gPT0gMCAmJiBJblsxXSA9PSAwICYmIEluWzJdID09IDApIHsKKworICAgICAgICBPdXRbMF0gPSBPdXRbMV0gPSBPdXRbMl0gPSAwOworICAgICAgICBPdXRbM10gPSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoTGFiS1szXSAqIDY1NTM1LjApOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICAvLyBUcnkgdGhlIG9yaWdpbmFsIHRyYW5zZm9ybSwKKyAgICBjbXNQaXBlbGluZUV2YWxGbG9hdCggSW5mLCBPdXRmLCBicCAtPmNteWsyY215ayk7CisKKyAgICAvLyBTdG9yZSBhIGNvcHkgb2YgdGhlIGZsb2F0aW5nIHBvaW50IHJlc3VsdCBpbnRvIDE2LWJpdAorICAgIGZvciAoaT0wOyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgT3V0W2ldID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKE91dGZbaV0gKiA2NTUzNS4wKTsKKworICAgIC8vIE1heWJlIEsgaXMgYWxyZWFkeSBvayAobW9zdGx5IG9uIEs9MCkKKyAgICBpZiAoIGZhYnMoT3V0ZlszXSAtIExhYktbM10pIDwgKDMuMCAvIDY1NTM1LjApICkgeworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICAvLyBLIGRpZmZlciwgbWVzdXJlIGFuZCBrZWVwIExhYiBtZWFzdXJlbWVudCBmb3IgZnVydGhlciB1c2FnZQorICAgIC8vIHRoaXMgaXMgZG9uZSBpbiByZWxhdGl2ZSBjb2xvcmltZXRyaWMgaW50ZW50CisgICAgY21zRG9UcmFuc2Zvcm0oYnAtPmhQcm9vZk91dHB1dCwgT3V0LCAmQ29sb3JpbWV0cmljTGFiLCAxKTsKKworICAgIC8vIElzIG5vdCBibGFjayBvbmx5IGFuZCB0aGUgdHJhbnNmb3JtIGRvZXNuJ3Qga2VlcCBibGFjay4KKyAgICAvLyBPYnRhaW4gdGhlIExhYiBvZiBvdXRwdXQgQ01ZSy4gQWZ0ZXIgdGhhdCB3ZSBoYXZlIExhYiArIEsKKyAgICBjbXNEb1RyYW5zZm9ybShicCAtPmNteWsyTGFiLCBPdXRmLCBMYWJLLCAxKTsKKworICAgIC8vIE9idGFpbiB0aGUgY29ycmVzcG9uZGluZyBDTVkgdXNpbmcgcmV2ZXJzZSBpbnRlcnBvbGF0aW9uCisgICAgLy8gKEsgaXMgZml4ZWQgaW4gTGFiS1szXSkKKyAgICBpZiAoIWNtc1BpcGVsaW5lRXZhbFJldmVyc2VGbG9hdChMYWJLLCBPdXRmLCBPdXRmLCBicCAtPkxhYksyY215aykpIHsKKworICAgICAgICAvLyBDYW5ub3QgZmluZCBhIHN1aXRhYmxlIHZhbHVlLCBzbyB1c2UgY29sb3JpbWV0cmljIHhmb3JtCisgICAgICAgIC8vIHdoaWNoIGlzIGFscmVhZHkgc3RvcmVkIGluIE91dFtdCisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB0byBwYXNzIHRocnUgSyAod2hpY2ggbm93IGlzIGZpeGVkKQorICAgIE91dGZbM10gPSBMYWJLWzNdOworCisgICAgLy8gQXBwbHkgVEFDIGlmIG5lZWRlZAorICAgIFN1bUNNWSAgID0gT3V0ZlswXSAgKyBPdXRmWzFdICsgT3V0ZlsyXTsKKyAgICBTdW1DTVlLICA9IFN1bUNNWSArIE91dGZbM107CisKKyAgICBpZiAoU3VtQ01ZSyA+IGJwIC0+TWF4VEFDKSB7CisKKyAgICAgICAgUmF0aW8gPSAxIC0gKChTdW1DTVlLIC0gYnAtPk1heFRBQykgLyBTdW1DTVkpOworICAgICAgICBpZiAoUmF0aW8gPCAwKQorICAgICAgICAgICAgUmF0aW8gPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgICAgUmF0aW8gPSAxLjA7CisKKyAgICBPdXRbMF0gPSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoT3V0ZlswXSAqIFJhdGlvICogNjU1MzUuMCk7ICAgICAvLyBDCisgICAgT3V0WzFdID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKE91dGZbMV0gKiBSYXRpbyAqIDY1NTM1LjApOyAgICAgLy8gTQorICAgIE91dFsyXSA9IF9jbXNRdWlja1NhdHVyYXRlV29yZChPdXRmWzJdICogUmF0aW8gKiA2NTUzNS4wKTsgICAgIC8vIFkKKyAgICBPdXRbM10gPSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoT3V0ZlszXSAqIDY1NTM1LjApOworCisgICAgLy8gRXN0aW1hdGUgdGhlIGVycm9yICh0aGlzIGdvZXMgMTYgYml0cyB0byBMYWIgREJMKQorICAgIGNtc0RvVHJhbnNmb3JtKGJwLT5oUHJvb2ZPdXRwdXQsIE91dCwgJkJsYWNrUHJlc2VydmluZ0xhYiwgMSk7CisgICAgRXJyb3IgPSBjbXNEZWx0YUUoJkNvbG9yaW1ldHJpY0xhYiwgJkJsYWNrUHJlc2VydmluZ0xhYik7CisgICAgaWYgKEVycm9yID4gYnAgLT4gTWF4RXJyb3IpCisgICAgICAgIGJwLT5NYXhFcnJvciA9IEVycm9yOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIFRoaXMgaXMgdGhlIGVudHJ5IGZvciBibGFjay1wbGFuZSBwcmVzZXJ2aW5nLCB3aGljaCBhcmUgbm9uLUlDQworc3RhdGljCitjbXNQaXBlbGluZSogQmxhY2tQcmVzZXJ2aW5nS1BsYW5lSW50ZW50cyhjbXNDb250ZXh0ICAgICBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgblByb2ZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFRoZUludGVudHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFICAgICBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Jvb2wgICAgICAgICBCUENbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvblN0YXRlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisgICAgUHJlc2VydmVLUGxhbmVQYXJhbXMgYnA7CisgICAgY21zUGlwZWxpbmUqICAgIFJlc3VsdCA9IE5VTEw7CisgICAgY21zVUludDMyTnVtYmVyIElDQ0ludGVudHNbMjU2XTsKKyAgICBjbXNTdGFnZSogICAgICAgICBDTFVUOworICAgIGNtc1VJbnQzMk51bWJlciBpLCBuR3JpZFBvaW50czsKKyAgICBjbXNIUFJPRklMRSBoTGFiOworCisgICAgLy8gU2FuaXR5IGNoZWNrCisgICAgaWYgKG5Qcm9maWxlcyA8IDEgfHwgblByb2ZpbGVzID4gMjU1KSByZXR1cm4gTlVMTDsKKworICAgIC8vIFRyYW5zbGF0ZSBibGFjay1wcmVzZXJ2aW5nIGludGVudHMgdG8gSUNDIG9uZXMKKyAgICBmb3IgKGk9MDsgaSA8IG5Qcm9maWxlczsgaSsrKQorICAgICAgICBJQ0NJbnRlbnRzW2ldID0gVHJhbnNsYXRlTm9uSUNDSW50ZW50cyhUaGVJbnRlbnRzW2ldKTsKKworICAgIC8vIENoZWNrIGZvciBub24tY215ayBwcm9maWxlcworICAgIGlmIChjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlc1swXSkgIT0gY21zU2lnQ215a0RhdGEgfHwKKyAgICAgICAgIShjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlc1tuUHJvZmlsZXMtMV0pID09IGNtc1NpZ0NteWtEYXRhIHx8CisgICAgICAgIGNtc0dldERldmljZUNsYXNzKGhQcm9maWxlc1tuUHJvZmlsZXMtMV0pID09IGNtc1NpZ091dHB1dENsYXNzKSkKKyAgICAgICAgICAgcmV0dXJuICBEZWZhdWx0SUNDaW50ZW50cyhDb250ZXh0SUQsIG5Qcm9maWxlcywgSUNDSW50ZW50cywgaFByb2ZpbGVzLCBCUEMsIEFkYXB0YXRpb25TdGF0ZXMsIGR3RmxhZ3MpOworCisgICAgLy8gQWxsb2NhdGUgYW4gZW1wdHkgTFVUIGZvciBob2xkaW5nIHRoZSByZXN1bHQKKyAgICBSZXN1bHQgPSBjbXNQaXBlbGluZUFsbG9jKENvbnRleHRJRCwgNCwgNCk7CisgICAgaWYgKFJlc3VsdCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworCisgICAgbWVtc2V0KCZicCwgMCwgc2l6ZW9mKGJwKSk7CisKKyAgICAvLyBXZSBuZWVkIHRoZSBpbnB1dCBMVVQgb2YgdGhlIGxhc3QgcHJvZmlsZSwgYXNzdW1pbmcgdGhpcyBvbmUgaXMgcmVzcG9uc2libGUgb2YKKyAgICAvLyBibGFjayBnZW5lcmF0aW9uLiBUaGlzIExVVCB3aWxsIGJlIHNlYWNoZWQgaW4gaW52ZXJzZSBvcmRlci4KKyAgICBicC5MYWJLMmNteWsgPSBfY21zUmVhZElucHV0TFVUKGhQcm9maWxlc1tuUHJvZmlsZXMtMV0sIElOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUMpOworICAgIGlmIChicC5MYWJLMmNteWsgPT0gTlVMTCkgZ290byBDbGVhbnVwOworCisgICAgLy8gR2V0IHRvdGFsIGFyZWEgY292ZXJhZ2UgKGluIDAuLjEgZG9tYWluKQorICAgIGJwLk1heFRBQyA9IGNtc0RldGVjdFRBQyhoUHJvZmlsZXNbblByb2ZpbGVzLTFdKSAvIDEwMC4wOworICAgIGlmIChicC5NYXhUQUMgPD0gMCkgZ290byBDbGVhbnVwOworCisKKyAgICAvLyBDcmVhdGUgYSBMVVQgaG9sZGluZyBub3JtYWwgSUNDIHRyYW5zZm9ybQorICAgIGJwLmNteWsyY215ayA9IERlZmF1bHRJQ0NpbnRlbnRzKENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgblByb2ZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQ0NJbnRlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoUHJvZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJQQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRhcHRhdGlvblN0YXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHdGbGFncyk7CisgICAgaWYgKGJwLmNteWsyY215ayA9PSBOVUxMKSBnb3RvIENsZWFudXA7CisKKyAgICAvLyBOb3cgdGhlIHRvbmUgY3VydmUKKyAgICBicC5LVG9uZSA9IF9jbXNCdWlsZEtUb25lQ3VydmUoQ29udGV4dElELCA0MDk2LCBuUHJvZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElDQ0ludGVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhQcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlBDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGFwdGF0aW9uU3RhdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkd0ZsYWdzKTsKKyAgICBpZiAoYnAuS1RvbmUgPT0gTlVMTCkgZ290byBDbGVhbnVwOworCisgICAgLy8gVG8gbWVhc3VyZSB0aGUgb3V0cHV0LCBMYXN0IHByb2ZpbGUgdG8gTGFiCisgICAgaExhYiA9IGNtc0NyZWF0ZUxhYjRQcm9maWxlVEhSKENvbnRleHRJRCwgTlVMTCk7CisgICAgYnAuaFByb29mT3V0cHV0ID0gY21zQ3JlYXRlVHJhbnNmb3JtVEhSKENvbnRleHRJRCwgaFByb2ZpbGVzW25Qcm9maWxlcy0xXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0hBTk5FTFNfU0goNCl8QllURVNfU0goMiksIGhMYWIsIFRZUEVfTGFiX0RCTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRkxBR1NfTk9DQUNIRXxjbXNGTEFHU19OT09QVElNSVpFKTsKKyAgICBpZiAoIGJwLmhQcm9vZk91dHB1dCA9PSBOVUxMKSBnb3RvIENsZWFudXA7CisKKyAgICAvLyBTYW1lIGFzIGFudGVyaW9yLCBidXQgbGFiIGluIHRoZSAwLi4xIHJhbmdlCisgICAgYnAuY215azJMYWIgPSBjbXNDcmVhdGVUcmFuc2Zvcm1USFIoQ29udGV4dElELCBoUHJvZmlsZXNbblByb2ZpbGVzLTFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTE9BVF9TSCgxKXxDSEFOTkVMU19TSCg0KXxCWVRFU19TSCg0KSwgaExhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxPQVRfU0goMSl8Q0hBTk5FTFNfU0goMyl8QllURVNfU0goNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0ZMQUdTX05PQ0FDSEV8Y21zRkxBR1NfTk9PUFRJTUlaRSk7CisgICAgaWYgKGJwLmNteWsyTGFiID09IE5VTEwpIGdvdG8gQ2xlYW51cDsKKyAgICBjbXNDbG9zZVByb2ZpbGUoaExhYik7CisKKyAgICAvLyBFcnJvciBlc3RpbWF0aW9uIChmb3IgZGVidWcgb25seSkKKyAgICBicC5NYXhFcnJvciA9IDA7CisKKyAgICAvLyBIb3cgbWFueSBncmlkcG9pbnRzIGFyZSB3ZSBnb2luZyB0byB1c2U/CisgICAgbkdyaWRQb2ludHMgPSBfY21zUmVhc29uYWJsZUdyaWRwb2ludHNCeUNvbG9yc3BhY2UoY21zU2lnQ215a0RhdGEsIGR3RmxhZ3MpOworCisKKyAgICBDTFVUID0gY21zU3RhZ2VBbGxvY0NMdXQxNmJpdChDb250ZXh0SUQsIG5HcmlkUG9pbnRzLCA0LCA0LCBOVUxMKTsKKyAgICBpZiAoQ0xVVCA9PSBOVUxMKSBnb3RvIENsZWFudXA7CisKKyAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoUmVzdWx0LCBjbXNBVF9CRUdJTiwgQ0xVVCkpCisgICAgICAgIGdvdG8gQ2xlYW51cDsKKworICAgIGNtc1N0YWdlU2FtcGxlQ0x1dDE2Yml0KENMVVQsIEJsYWNrUHJlc2VydmluZ1NhbXBsZXIsICh2b2lkKikgJmJwLCAwKTsKKworQ2xlYW51cDoKKworICAgIGlmIChicC5jbXlrMmNteWspIGNtc1BpcGVsaW5lRnJlZShicC5jbXlrMmNteWspOworICAgIGlmIChicC5jbXlrMkxhYikgY21zRGVsZXRlVHJhbnNmb3JtKGJwLmNteWsyTGFiKTsKKyAgICBpZiAoYnAuaFByb29mT3V0cHV0KSBjbXNEZWxldGVUcmFuc2Zvcm0oYnAuaFByb29mT3V0cHV0KTsKKworICAgIGlmIChicC5LVG9uZSkgY21zRnJlZVRvbmVDdXJ2ZShicC5LVG9uZSk7CisgICAgaWYgKGJwLkxhYksyY215aykgY21zUGlwZWxpbmVGcmVlKGJwLkxhYksyY215ayk7CisKKyAgICByZXR1cm4gUmVzdWx0OworfQorCisvLyBMaW5rIHJvdXRpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBDaGFpbiBzZXZlcmFsIHByb2ZpbGVzIGludG8gYSBzaW5nbGUgTFVULiBJdCBqdXN0IGNoZWNrcyB0aGUgcGFyYW1ldGVycyBhbmQgdGhlbiBjYWxscyB0aGUgaGFuZGxlcgorLy8gZm9yIHRoZSBmaXJzdCBpbnRlbnQgaW4gY2hhaW4uIFRoZSBoYW5kbGVyIG1heSBiZSB1c2VyLWRlZmluZWQuIElzIHVwIHRvIHRoZSBoYW5kbGVyIHRvIGRlYWwgd2l0aCB0aGUKKy8vIHJlc3Qgb2YgaW50ZW50cyBpbiBjaGFpbi4gQSBtYXhpbXVtIG9mIDI1NSBwcm9maWxlcyBhdCB0aW1lIGFyZSBzdXBwb3J0ZWQsIHdoaWNoIGlzIHByZXR0eSByZWFzb25hYmxlLgorY21zUGlwZWxpbmUqIF9jbXNMaW5rUHJvZmlsZXMoY21zQ29udGV4dCAgICAgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG5Qcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBUaGVJbnRlbnRzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSAgICAgaFByb2ZpbGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNCb29sICAgICAgICAgQlBDW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEFkYXB0YXRpb25TdGF0ZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpOworICAgIGNtc0ludGVudHNMaXN0KiBJbnRlbnQ7CisKKyAgICAvLyBNYWtlIHN1cmUgYSByZWFzb25hYmxlIG51bWJlciBvZiBwcm9maWxlcyBpcyBwcm92aWRlZAorICAgIGlmIChuUHJvZmlsZXMgPD0gMCB8fCBuUHJvZmlsZXMgPiAyNTUpIHsKKyAgICAgICAgIGNtc1NpZ25hbEVycm9yKENvbnRleHRJRCwgY21zRVJST1JfUkFOR0UsICJDb3VsZG4ndCBsaW5rICclZCcgcHJvZmlsZXMiLCBuUHJvZmlsZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IG5Qcm9maWxlczsgaSsrKSB7CisKKyAgICAgICAgLy8gQ2hlY2sgaWYgYmxhY2sgcG9pbnQgaXMgcmVhbGx5IG5lZWRlZCBvciBhbGxvd2VkLiBOb3RlIHRoYXQKKyAgICAgICAgLy8gZm9sbG93aW5nIEFkb2JlJ3MgZG9jdW1lbnQ6CisgICAgICAgIC8vIEJQQyBkb2VzIG5vdCBhcHBseSB0byBkZXZpY2VsaW5rIHByb2ZpbGVzLCBub3IgdG8gYWJzIGNvbG9yaW1ldHJpYywKKyAgICAgICAgLy8gYW5kIGFwcGxpZXMgYWx3YXlzIG9uIFY0IHBlcmNlcHR1YWwgYW5kIHNhdHVyYXRpb24uCisKKyAgICAgICAgaWYgKFRoZUludGVudHNbaV0gPT0gSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQykKKyAgICAgICAgICAgIEJQQ1tpXSA9IEZBTFNFOworCisgICAgICAgIGlmIChUaGVJbnRlbnRzW2ldID09IElOVEVOVF9QRVJDRVBUVUFMIHx8IFRoZUludGVudHNbaV0gPT0gSU5URU5UX1NBVFVSQVRJT04pIHsKKworICAgICAgICAgICAgLy8gRm9yY2UgQlBDIGZvciBWNCBwcm9maWxlcyBpbiBwZXJjZXB0dWFsIGFuZCBzYXR1cmF0aW9uCisgICAgICAgICAgICBpZiAoY21zR2V0UHJvZmlsZVZlcnNpb24oaFByb2ZpbGVzW2ldKSA+PSA0LjApCisgICAgICAgICAgICAgICAgQlBDW2ldID0gVFJVRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFNlYXJjaCBmb3IgYSBoYW5kbGVyLiBUaGUgZmlyc3QgaW50ZW50IGluIHRoZSBjaGFpbiBkZWZpbmVzIHRoZSBoYW5kbGVyLiBUaGF0IHdvdWxkCisgICAgLy8gcHJldmVudCB1c2luZyBtdWx0aXBsZSBjdXN0b20gaW50ZW50cyBpbiBhIG11bHRpaW50ZW50IGNoYWluLCBidXQgdGhlIGJlaGF2aW91ciBvZgorICAgIC8vIHRoaXMgY2FzZSB3b3VsZCBwcmVzZW50IHNvbWUgaXNzdWVzIGlmIHRoZSBjdXN0b20gaW50ZW50IHRyaWVzIHRvIGRvIHRoaW5ncyBsaWtlCisgICAgLy8gcHJlc2VydmUgcHJpbWFyaWVzLiBUaGlzIHNvbHV0aW9uIGlzIG5vdCBwZXJmZWN0LCBidXQgd29ya3Mgd2VsbCBvbiBtb3N0IGNhc2VzLgorCisgICAgSW50ZW50ID0gU2VhcmNoSW50ZW50KENvbnRleHRJRCwgVGhlSW50ZW50c1swXSk7CisgICAgaWYgKEludGVudCA9PSBOVUxMKSB7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKENvbnRleHRJRCwgY21zRVJST1JfVU5LTk9XTl9FWFRFTlNJT04sICJVbnN1cHBvcnRlZCBpbnRlbnQgJyVkJyIsIFRoZUludGVudHNbMF0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBDYWxsIHRoZSBoYW5kbGVyCisgICAgcmV0dXJuIEludGVudCAtPkxpbmsoQ29udGV4dElELCBuUHJvZmlsZXMsIFRoZUludGVudHMsIGhQcm9maWxlcywgQlBDLCBBZGFwdGF0aW9uU3RhdGVzLCBkd0ZsYWdzKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYXZhaWxhYmxlIGludGVudHMuIG5NYXggaXMgdGhlIG1heGltdW0gc3BhY2UgZm9yIHRoZSBzdXBwbGllZCAiQ29kZXMiCisvLyBhbmQgIkRlc2NyaXB0aW9ucyIgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBpbnRlbnRzLCB3aGljaCBtYXkgYmUgZ3JlYXRlcgorLy8gdGhhbiBuTWF4LCBhbHRob3VnaCB0aGUgbWF0cmljZXMgYXJlIG5vdCBwb3B1bGF0ZWQgYmV5b25kIHRoaXMgbGV2ZWwuCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0dldFN1cHBvcnRlZEludGVudHNUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBuTWF4LCBjbXNVSW50MzJOdW1iZXIqIENvZGVzLCBjaGFyKiogRGVzY3JpcHRpb25zKQoreworICAgIF9jbXNJbnRlbnRzUGx1Z2luQ2h1bmtUeXBlKiBjdHggPSAoIF9jbXNJbnRlbnRzUGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIEludGVudFBsdWdpbik7CisgICAgY21zSW50ZW50c0xpc3QqIHB0OworICAgIGNtc1VJbnQzMk51bWJlciBuSW50ZW50czsKKworCisgICAgZm9yIChuSW50ZW50cz0wLCBwdCA9IGN0eC0+SW50ZW50czsgcHQgIT0gTlVMTDsgcHQgPSBwdCAtPiBOZXh0KQorICAgIHsKKyAgICAgICAgaWYgKG5JbnRlbnRzIDwgbk1heCkgeworICAgICAgICAgICAgaWYgKENvZGVzICE9IE5VTEwpCisgICAgICAgICAgICAgICAgQ29kZXNbbkludGVudHNdID0gcHQgLT5JbnRlbnQ7CisKKyAgICAgICAgICAgIGlmIChEZXNjcmlwdGlvbnMgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbnNbbkludGVudHNdID0gcHQgLT5EZXNjcmlwdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIG5JbnRlbnRzKys7CisgICAgfQorCisgICAgZm9yIChuSW50ZW50cz0wLCBwdCA9IERlZmF1bHRJbnRlbnRzOyBwdCAhPSBOVUxMOyBwdCA9IHB0IC0+IE5leHQpCisgICAgeworICAgICAgICBpZiAobkludGVudHMgPCBuTWF4KSB7CisgICAgICAgICAgICBpZiAoQ29kZXMgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBDb2Rlc1tuSW50ZW50c10gPSBwdCAtPkludGVudDsKKworICAgICAgICAgICAgaWYgKERlc2NyaXB0aW9ucyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uc1tuSW50ZW50c10gPSBwdCAtPkRlc2NyaXB0aW9uOworICAgICAgICB9CisKKyAgICAgICAgbkludGVudHMrKzsKKyAgICB9CisgICAgcmV0dXJuIG5JbnRlbnRzOworfQorCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0dldFN1cHBvcnRlZEludGVudHMoY21zVUludDMyTnVtYmVyIG5NYXgsIGNtc1VJbnQzMk51bWJlciogQ29kZXMsIGNoYXIqKiBEZXNjcmlwdGlvbnMpCit7CisgICAgcmV0dXJuIGNtc0dldFN1cHBvcnRlZEludGVudHNUSFIoTlVMTCwgbk1heCwgQ29kZXMsIERlc2NyaXB0aW9ucyk7Cit9CisKKy8vIFRoZSBwbHVnLWluIHJlZ2lzdHJhdGlvbi4gVXNlciBjYW4gYWRkIG5ldyBpbnRlbnRzIG9yIG92ZXJyaWRlIGRlZmF1bHQgcm91dGluZXMKK2Ntc0Jvb2wgIF9jbXNSZWdpc3RlclJlbmRlcmluZ0ludGVudFBsdWdpbihjbXNDb250ZXh0IGlkLCBjbXNQbHVnaW5CYXNlKiBEYXRhKQoreworICAgIF9jbXNJbnRlbnRzUGx1Z2luQ2h1bmtUeXBlKiBjdHggPSAoIF9jbXNJbnRlbnRzUGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhpZCwgSW50ZW50UGx1Z2luKTsKKyAgICBjbXNQbHVnaW5SZW5kZXJpbmdJbnRlbnQqIFBsdWdpbiA9IChjbXNQbHVnaW5SZW5kZXJpbmdJbnRlbnQqKSBEYXRhOworICAgIGNtc0ludGVudHNMaXN0KiBmbDsKKworICAgIC8vIERvIHdlIGhhdmUgdG8gcmVzZXQgdGhlIGN1c3RvbSBpbnRlbnRzPworICAgIGlmIChEYXRhID09IE5VTEwpIHsKKworICAgICAgICBjdHgtPkludGVudHMgPSBOVUxMOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBmbCA9IChjbXNJbnRlbnRzTGlzdCopIF9jbXNQbHVnaW5NYWxsb2MoaWQsIHNpemVvZihjbXNJbnRlbnRzTGlzdCkpOworICAgIGlmIChmbCA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKworICAgIGZsIC0+SW50ZW50ICA9IFBsdWdpbiAtPkludGVudDsKKyAgICBzdHJuY3B5KGZsIC0+RGVzY3JpcHRpb24sIFBsdWdpbiAtPkRlc2NyaXB0aW9uLCBzaXplb2YoZmwgLT5EZXNjcmlwdGlvbiktMSk7CisgICAgZmwgLT5EZXNjcmlwdGlvbltzaXplb2YoZmwgLT5EZXNjcmlwdGlvbiktMV0gPSAwOworCisgICAgZmwgLT5MaW5rICAgID0gUGx1Z2luIC0+TGluazsKKworICAgIGZsIC0+TmV4dCA9IGN0eCAtPkludGVudHM7CisgICAgY3R4IC0+SW50ZW50cyA9IGZsOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNlcnIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNlcnIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDUyMzhjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2Vyci5jCkBAIC0wLDAgKzEsNzA3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiBNYXJ0aSBNYXJpYSBTYWd1ZXIKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlCisvLyBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTworLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKy8vIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKy8vIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgImxjbXMyX2ludGVybmFsLmgiCisKKy8vIEkgYW0gc28gdGlyZWQgYWJvdXQgaW5jb21wYXRpYmlsaXRpZXMgb24gdGhvc2UgZnVuY3Rpb25zIHRoYXQgaGVyZSBhcmUgc29tZSByZXBsYWNlbWVudHMKKy8vIHRoYXQgaG9wZWZ1bGx5IHdvdWxkIGJlIGZ1bGx5IHBvcnRhYmxlLgorCisvLyBjb21wYXJlIHR3byBzdHJpbmdzIGlnbm9yaW5nIGNhc2UKK2ludCBDTVNFWFBPUlQgY21zc3RyY2FzZWNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpCit7CisgICAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqdXMxID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp1czIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXMyOworCisgICAgd2hpbGUgKHRvdXBwZXIoKnVzMSkgPT0gdG91cHBlcigqdXMyKyspKQorICAgICAgICBpZiAoKnVzMSsrID09ICdcMCcpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAodG91cHBlcigqdXMxKSAtIHRvdXBwZXIoKi0tdXMyKSk7Cit9CisKKy8vIGxvbmcgaW50IGJlY2F1c2UgQzk5IHNwZWNpZmllcyBmdGVsbCBpbiBzdWNoIHdheSAoNy4xOS45LjIpCitsb25nIGludCBDTVNFWFBPUlQgY21zZmlsZWxlbmd0aChGSUxFKiBmKQoreworICAgIGxvbmcgaW50IHAgLCBuOworCisgICAgcCA9IGZ0ZWxsKGYpOyAvLyByZWdpc3RlciBjdXJyZW50IGZpbGUgcG9zaXRpb24KKworICAgIGlmIChmc2VlayhmLCAwLCBTRUVLX0VORCkgIT0gMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbiA9IGZ0ZWxsKGYpOworICAgIGZzZWVrKGYsIHAsIFNFRUtfU0VUKTsgLy8gZmlsZSBwb3NpdGlvbiByZXN0b3JlZAorCisgICAgcmV0dXJuIG47Cit9CisKKyNpZiAwCisvLyBNZW1vcnkgaGFuZGxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhpcyBpcyB0aGUgaW50ZXJmYWNlIHRvIGxvdy1sZXZlbCBtZW1vcnkgbWFuYWdlbWVudCByb3V0aW5lcy4gQnkgZGVmYXVsdCBhIHNpbXBsZQorLy8gd3JhcHBpbmcgdG8gbWFsbG9jL2ZyZWUvcmVhbGxvYyBpcyBwcm92aWRlZCwgYWx0aG91Z2ggdGhlcmUgaXMgYSBsaW1pdCBvbiB0aGUgbWF4CisvLyBhbW91bnQgb2YgbWVtb3kgdGhhdCBjYW4gYmUgcmVjbGFpbWVkLiBUaGlzIGlzIG1vc3RseSBhcyBhIHNhZmV0eSBmZWF0dXJlIHRvIHByZXZlbnQgCisvLyBib2d1cyBvciBldmlsIGNvZGUgdG8gYWxsb2NhdGUgaHVnZSBibG9ja3MgdGhhdCBvdGhlcndpc2UgbGNtcyB3b3VsZCBuZXZlciBuZWVkLgorCisjZGVmaW5lIE1BWF9NRU1PUllfRk9SX0FMTE9DICAoKGNtc1VJbnQzMk51bWJlcikoMTAyNFUqMTAyNFUqNTEyVSkpCisKKy8vIFVzZXIgbWF5IG92ZXJyaWRlIHRoaXMgYmVoYXZpb3VyIGJ5IHVzaW5nIGEgbWVtb3J5IHBsdWctaW4sIHdoaWNoIGJhc2ljYWxseSByZXBsYWNlcworLy8gdGhlIGRlZmF1bHQgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zLiBJbiB0aGlzIGNhc2UsIG5vIGNoZWNrIGlzIHBlcmZvcm1lZCBhbmQgaXQKKy8vIGlzIHVwIHRvIHRoZSBwbHVnLWluIHdyaXR0ZXIgdG8ga2VlcCBpbiB0aGUgc2FmZSBzaWRlLiBUaGVyZSBhcmUgb25seSB0aHJlZSBmdW5jdGlvbnMKKy8vIHJlcXVpcmVkIHRvIGJlIGltcGxlbWVudGVkOiBtYWxsb2MsIHJlYWxsb2MgYW5kIGZyZWUsIGFsdGhvdWdoIHRoZSB1c2VyIG1heSB3YW50IHRvCisvLyByZXBsYWNlIHRoZSBvcHRpb25hbCBtYWxsb2NaZXJvLCBjYWxsb2MgYW5kIGR1cCBhcyB3ZWxsLgorCitjbXNCb29sICAgX2Ntc1JlZ2lzdGVyTWVtSGFuZGxlclBsdWdpbihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zUGx1Z2luQmFzZSogUGx1Z2luKTsKKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb24uIEl0IGRvZXMgYSB2ZXJ5IGNvYXJzZQorLy8gY2hlY2sgb2YgYW1vdXQgb2YgbWVtb3J5LCBqdXN0IHRvIHByZXZlbnQgZXhwbG9pdHMKK3N0YXRpYwordm9pZCogX2Ntc01hbGxvY0RlZmF1bHRGbihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIHNpemUpCit7CisgICAgaWYgKHNpemUgPiBNQVhfTUVNT1JZX0ZPUl9BTExPQykgcmV0dXJuIE5VTEw7ICAvLyBOZXZlciBhbGxvdyBvdmVyIG1heGltdW0KKworICAgIHJldHVybiAodm9pZCopIG1hbGxvYyhzaXplKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoQ29udGV4dElEKTsKK30KKworLy8gR2VuZXJpYyBhbGxvY2F0ZSAmIHplcm8KK3N0YXRpYwordm9pZCogX2Ntc01hbGxvY1plcm9EZWZhdWx0Rm4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBzaXplKQoreworICAgIHZvaWQgKnB0ID0gX2Ntc01hbGxvYyhDb250ZXh0SUQsIHNpemUpOworICAgIGlmIChwdCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIG1lbXNldChwdCwgMCwgc2l6ZSk7CisgICAgcmV0dXJuIHB0OworfQorCisKKy8vIFRoZSBkZWZhdWx0IGZyZWUgZnVuY3Rpb24uIFRoZSBvbmx5IGNoZWNrIHByb2Zvcm1lZCBpcyBhZ2FpbnN0IE5VTEwgcG9pbnRlcnMKK3N0YXRpYwordm9pZCBfY21zRnJlZURlZmF1bHRGbihjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCAqUHRyKQoreworICAgIC8vIGZyZWUoTlVMTCkgaXMgZGVmaW5lZCBhIG5vLW9wIGJ5IEM5OSwgdGhlcmVmb3JlIGl0IGlzIHNhZmUgdG8KKyAgICAvLyBhdm9pZCB0aGUgY2hlY2ssIGJ1dCBpdCBpcyBoZXJlIGp1c3QgaW4gY2FzZS4uLgorCisgICAgaWYgKFB0cikgZnJlZShQdHIpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihDb250ZXh0SUQpOworfQorCisvLyBUaGUgZGVmYXVsdCByZWFsbG9jIGZ1bmN0aW9uLiBBZ2FpbiBpdCBjaGVja3MgZm9yIGV4cGxvaXRzLiBJZiBQdHIgaXMgTlVMTCwKKy8vIHJlYWxsb2MgYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgbWFsbG9jIGFuZCBhbGxvY2F0ZXMgYSBuZXcgYmxvY2sgb2Ygc2l6ZSBieXRlcy4KK3N0YXRpYwordm9pZCogX2Ntc1JlYWxsb2NEZWZhdWx0Rm4oY21zQ29udGV4dCBDb250ZXh0SUQsIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIHNpemUpCit7CisKKyAgICBpZiAoc2l6ZSA+IE1BWF9NRU1PUllfRk9SX0FMTE9DKSByZXR1cm4gTlVMTDsgIC8vIE5ldmVyIHJlYWxsb2Mgb3ZlciA1MTJNYgorCisgICAgcmV0dXJuIHJlYWxsb2MoUHRyLCBzaXplKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoQ29udGV4dElEKTsKK30KKworCisvLyBUaGUgZGVmYXVsdCBjYWxsb2MgZnVuY3Rpb24uIEFsbG9jYXRlcyBhbiBhcnJheSBvZiBudW0gZWxlbWVudHMsIGVhY2ggb25lIG9mIHNpemUgYnl0ZXMKKy8vIGFsbCBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4KK3N0YXRpYwordm9pZCogX2Ntc0NhbGxvY0RlZmF1bHRGbihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIG51bSwgY21zVUludDMyTnVtYmVyIHNpemUpCit7CisgICAgY21zVUludDMyTnVtYmVyIFRvdGFsID0gbnVtICogc2l6ZTsKKworICAgIC8vIFByZXNlcnZlIGNhbGxvYyBiZWhhdmlvdXIKKyAgICBpZiAoVG90YWwgPT0gMCkgcmV0dXJuIE5VTEw7CisKKyAgICAvLyBTYWZlIGNoZWNrIGZvciBvdmVyZmxvdy4KKyAgICBpZiAobnVtID49IFVJTlRfTUFYIC8gc2l6ZSkgcmV0dXJuIE5VTEw7CisKKyAgICAvLyBDaGVjayBmb3Igb3ZlcmZsb3cKKyAgICBpZiAoVG90YWwgPCBudW0gfHwgVG90YWwgPCBzaXplKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChUb3RhbCA+IE1BWF9NRU1PUllfRk9SX0FMTE9DKSByZXR1cm4gTlVMTDsgIC8vIE5ldmVyIGFsbG9jIG92ZXIgNTEyTWIKKworICAgIHJldHVybiBfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIFRvdGFsKTsKK30KKworLy8gR2VuZXJpYyBibG9jayBkdXBsaWNhdGlvbgorc3RhdGljCit2b2lkKiBfY21zRHVwRGVmYXVsdEZuKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCB2b2lkKiBPcmcsIGNtc1VJbnQzMk51bWJlciBzaXplKQoreworICAgIHZvaWQqIG1lbTsKKworICAgIGlmIChzaXplID4gTUFYX01FTU9SWV9GT1JfQUxMT0MpIHJldHVybiBOVUxMOyAgLy8gTmV2ZXIgZHVwIG92ZXIgNTEyTWIKKworICAgIG1lbSA9IF9jbXNNYWxsb2MoQ29udGV4dElELCBzaXplKTsKKworICAgIGlmIChtZW0gIT0gTlVMTCAmJiBPcmcgIT0gTlVMTCkKKyAgICAgICAgbWVtbW92ZShtZW0sIE9yZywgc2l6ZSk7CisKKyAgICByZXR1cm4gbWVtOworfQorCisKKy8vIFBvaW50ZXJzIHRvIG1lbW9yeSBtYW5hZ2VyIGZ1bmN0aW9ucyBpbiBDb250ZXh0MAorX2Ntc01lbVBsdWdpbkNodW5rVHlwZSBfY21zTWVtUGx1Z2luQ2h1bmsgPSB7IF9jbXNNYWxsb2NEZWZhdWx0Rm4sIF9jbXNNYWxsb2NaZXJvRGVmYXVsdEZuLCBfY21zRnJlZURlZmF1bHRGbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Ntc1JlYWxsb2NEZWZhdWx0Rm4sIF9jbXNDYWxsb2NEZWZhdWx0Rm4sICAgIF9jbXNEdXBEZWZhdWx0Rm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKworCisvLyBSZXNldCBhbmQgZHVwbGljYXRlIG1lbW9yeSBtYW5hZ2VyCit2b2lkIF9jbXNBbGxvY01lbVBsdWdpbkNodW5rKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKQoreworICAgIF9jbXNBc3NlcnQoY3R4ICE9IE5VTEwpOworCisgICAgaWYgKHNyYyAhPSBOVUxMKSB7ICAgIAorCisgICAgICAgIC8vIER1cGxpY2F0ZQorICAgICAgICBjdHggLT5jaHVua3NbTWVtUGx1Z2luXSA9IF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCBzcmMgLT5jaHVua3NbTWVtUGx1Z2luXSwgc2l6ZW9mKF9jbXNNZW1QbHVnaW5DaHVua1R5cGUpKTsgIAorICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICAvLyBUbyByZXNldCBpdCwgd2UgdXNlIHRoZSBkZWZhdWx0IGFsbG9jYXRvcnMsIHdoaWNoIGNhbm5vdCBiZSBvdmVycmlkZW4KKyAgICAgICAgY3R4IC0+Y2h1bmtzW01lbVBsdWdpbl0gPSAmY3R4IC0+RGVmYXVsdE1lbW9yeU1hbmFnZXI7CisgICAgfSAKK30KKworLy8gQXV4aWxpYXIgdG8gZmlsbCBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgZnJvbSBwbHVnaW4gKG9yIGNvbnRleHQgMCBkZWZhdWx0cykKK3ZvaWQgX2Ntc0luc3RhbGxBbGxvY0Z1bmN0aW9ucyhjbXNQbHVnaW5NZW1IYW5kbGVyKiBQbHVnaW4sIF9jbXNNZW1QbHVnaW5DaHVua1R5cGUqIHB0cikKK3sKKyAgICBpZiAoUGx1Z2luID09IE5VTEwpIHsKKworICAgICAgICBtZW1jcHkocHRyLCAmX2Ntc01lbVBsdWdpbkNodW5rLCBzaXplb2YoX2Ntc01lbVBsdWdpbkNodW5rKSk7CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIHB0ciAtPk1hbGxvY1B0ciAgPSBQbHVnaW4gLT4gTWFsbG9jUHRyOworICAgICAgICBwdHIgLT5GcmVlUHRyICAgID0gUGx1Z2luIC0+IEZyZWVQdHI7CisgICAgICAgIHB0ciAtPlJlYWxsb2NQdHIgPSBQbHVnaW4gLT4gUmVhbGxvY1B0cjsKKworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgcmV2ZXJ0IHRvIGRlZmF1bHRzCisgICAgICAgIHB0ciAtPk1hbGxvY1plcm9QdHI9IF9jbXNNYWxsb2NaZXJvRGVmYXVsdEZuOworICAgICAgICBwdHIgLT5DYWxsb2NQdHIgICAgPSBfY21zQ2FsbG9jRGVmYXVsdEZuOworICAgICAgICBwdHIgLT5EdXBQdHIgICAgICAgPSBfY21zRHVwRGVmYXVsdEZuOworICAgICAgCisgICAgICAgIGlmIChQbHVnaW4gLT5NYWxsb2NaZXJvUHRyICE9IE5VTEwpIHB0ciAtPk1hbGxvY1plcm9QdHIgPSBQbHVnaW4gLT4gTWFsbG9jWmVyb1B0cjsKKyAgICAgICAgaWYgKFBsdWdpbiAtPkNhbGxvY1B0ciAhPSBOVUxMKSAgICAgcHRyIC0+Q2FsbG9jUHRyICAgICA9IFBsdWdpbiAtPiBDYWxsb2NQdHI7CisgICAgICAgIGlmIChQbHVnaW4gLT5EdXBQdHIgIT0gTlVMTCkgICAgICAgIHB0ciAtPkR1cFB0ciAgICAgICAgPSBQbHVnaW4gLT4gRHVwUHRyOworICAgICAgICAKKyAgICB9Cit9CisKKworLy8gUGx1Zy1pbiByZXBsYWNlbWVudCBlbnRyeQorY21zQm9vbCAgX2Ntc1JlZ2lzdGVyTWVtSGFuZGxlclBsdWdpbihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zUGx1Z2luQmFzZSAqRGF0YSkKK3sKKyAgICBjbXNQbHVnaW5NZW1IYW5kbGVyKiBQbHVnaW4gPSAoY21zUGx1Z2luTWVtSGFuZGxlciopIERhdGE7ICAgICAKKyAgICBfY21zTWVtUGx1Z2luQ2h1bmtUeXBlKiBwdHI7CisKKyAgICAvLyBOVUxMIGZvcmNlcyB0byByZXNldCB0byBkZWZhdWx0cy4gSW4gdGhpcyBzcGVjaWFsIGNhc2UsIHRoZSBkZWZhdWx0cyBhcmUgc3RvcmVkIGluIHRoZSBjb250ZXh0IHN0cnVjdHVyZS4gCisgICAgLy8gUmVtYWluaW5nIHBsdWctaW5zIGRvZXMgTk9UIGhhdmUgYW55IGNvcHkgaW4gdGhlIGNvbnRleHQgc3RydWN0dXJlLCBidXQgdGhpcyBpcyBzb21laG93IHNwZWNpYWwgYXMgdGhlCisgICAgLy8gY29udGV4dCBpbnRlcm5hbCBkYXRhIHNob3VsZCBiZSBtYWxsb2NlJ2QgYnkgdXNpbmcgdGhvc2UgZnVuY3Rpb25zLiAKKyAgICBpZiAoRGF0YSA9PSBOVUxMKSB7CisKKyAgICAgICBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHggPSAoIHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqKSBDb250ZXh0SUQ7CisKKyAgICAgICAvLyBSZXR1cm4gdG8gdGhlIGRlZmF1bHQgYWxsb2NhdG9ycworICAgICAgICBpZiAoQ29udGV4dElEICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGN0eC0+Y2h1bmtzW01lbVBsdWdpbl0gPSAodm9pZCopICZjdHgtPkRlZmF1bHRNZW1vcnlNYW5hZ2VyOworICAgICAgICB9CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIC8vIENoZWNrIGZvciByZXF1aXJlZCBjYWxsYmFja3MKKyAgICBpZiAoUGx1Z2luIC0+IE1hbGxvY1B0ciA9PSBOVUxMIHx8CisgICAgICAgIFBsdWdpbiAtPiBGcmVlUHRyID09IE5VTEwgfHwKKyAgICAgICAgUGx1Z2luIC0+IFJlYWxsb2NQdHIgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gU2V0IHJlcGxhY2VtZW50IGZ1bmN0aW9ucworICAgIHB0ciA9IChfY21zTWVtUGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIE1lbVBsdWdpbik7CisgICAgaWYgKHB0ciA9PSBOVUxMKSAKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgX2Ntc0luc3RhbGxBbGxvY0Z1bmN0aW9ucyhQbHVnaW4sIHB0cik7CisgICAgcmV0dXJuIFRSVUU7Cit9CisjZWxzZQorI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfc3lzdGVtLmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vaW5jbHVkZS9meGNydC9meF9tZW1vcnkuaCIKKworY21zQm9vbCAgX2Ntc1JlZ2lzdGVyTWVtSGFuZGxlclBsdWdpbihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zUGx1Z2luQmFzZSogUGx1Z2luKQoreworCXJldHVybiBUUlVFOworfQorCisvLyBHZW5lcmljIGFsbG9jYXRlCit2b2lkKiBDTVNFWFBPUlQgX2Ntc01hbGxvYyhjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIHNpemUpDQorew0KKyAgICByZXR1cm4gRlhNRU1fRGVmYXVsdEFsbG9jKHNpemUsIEZYTUVNX05PTkxFQVZFKTsNCit9DQorDQorLy8gR2VuZXJpYyBhbGxvY2F0ZSAmIHplcm8NCit2b2lkKiBDTVNFWFBPUlQgX2Ntc01hbGxvY1plcm8oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBzaXplKQ0KK3sNCisJdm9pZCogcCA9IEZYTUVNX0RlZmF1bHRBbGxvYyhzaXplLCBGWE1FTV9OT05MRUFWRSk7DQorCWlmIChwKSBGWFNZU19tZW1zZXQzMihwLCAwLCBzaXplKTsNCisJcmV0dXJuIHA7DQorfQ0KKw0KKy8vIEdlbmVyaWMgY2FsbG9jDQordm9pZCogQ01TRVhQT1JUIF9jbXNDYWxsb2MoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBudW0sIGNtc1VJbnQzMk51bWJlciBzaXplKQ0KK3sNCisJY21zVUludDMyTnVtYmVyIHRvdGFsID0gbnVtICogc2l6ZTsNCisJaWYgKHRvdGFsID09IDAgfHwgdG90YWwgLyBzaXplICE9IG51bSB8fCB0b3RhbCA+PSA1MTIgKiAxMDI0ICogMTAyNCkNCisJCXJldHVybiBOVUxMOw0KKw0KKwlyZXR1cm4gX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBudW0gKiBzaXplKTsNCit9DQorDQorLy8gR2VuZXJpYyByZWFsbG9jYXRlDQordm9pZCogQ01TRVhQT1JUIF9jbXNSZWFsbG9jKGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBzaXplKQ0KK3sNCisJcmV0dXJuIEZYTUVNX0RlZmF1bHRSZWFsbG9jKFB0ciwgc2l6ZSwgRlhNRU1fTk9OTEVBVkUpOw0KK30NCisNCisvLyBHZW5lcmljIGZyZWUgbWVtb3J5DQordm9pZCBDTVNFWFBPUlQgX2Ntc0ZyZWUoY21zQ29udGV4dCBDb250ZXh0SUQsIHZvaWQqIFB0cikNCit7DQorCWlmIChQdHIgIT0gTlVMTCkgRlhNRU1fRGVmYXVsdEZyZWUoUHRyLCAwKTsNCit9DQorDQorLy8gR2VuZXJpYyBibG9jayBkdXBsaWNhdGlvbg0KK3ZvaWQqIENNU0VYUE9SVCBfY21zRHVwTWVtKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCB2b2lkKiBPcmcsIGNtc1VJbnQzMk51bWJlciBzaXplKQ0KK3sNCisJdm9pZCogcCA9IEZYTUVNX0RlZmF1bHRBbGxvYyhzaXplLCBGWE1FTV9OT05MRUFWRSk7DQorCUZYU1lTX21lbW1vdmUzMihwLCBPcmcsIHNpemUpOw0KKwlyZXR1cm4gcDsNCit9CisKK19jbXNNZW1QbHVnaW5DaHVua1R5cGUgX2Ntc01lbVBsdWdpbkNodW5rID0ge19jbXNNYWxsb2MsIF9jbXNNYWxsb2NaZXJvLCBfY21zRnJlZSwgDQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Ntc1JlYWxsb2MsIF9jbXNDYWxsb2MsICAgIF9jbXNEdXBNZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKwordm9pZCBfY21zQWxsb2NNZW1QbHVnaW5DaHVuayhzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYykKK3sKKwlfY21zQXNzZXJ0KGN0eCAhPSBOVUxMKTsKKworCWlmIChzcmMgIT0gTlVMTCkgeyAgICAKKworCQkvLyBEdXBsaWNhdGUKKwkJY3R4IC0+Y2h1bmtzW01lbVBsdWdpbl0gPSBfY21zU3ViQWxsb2NEdXAoY3R4IC0+TWVtUG9vbCwgc3JjIC0+Y2h1bmtzW01lbVBsdWdpbl0sIHNpemVvZihfY21zTWVtUGx1Z2luQ2h1bmtUeXBlKSk7ICAKKwl9CisJZWxzZSB7CisKKwkJLy8gVG8gcmVzZXQgaXQsIHdlIHVzZSB0aGUgZGVmYXVsdCBhbGxvY2F0b3JzLCB3aGljaCBjYW5ub3QgYmUgb3ZlcnJpZGVuCisJCWN0eCAtPmNodW5rc1tNZW1QbHVnaW5dID0gJmN0eCAtPkRlZmF1bHRNZW1vcnlNYW5hZ2VyOworCX0gCit9CisKK3ZvaWQgX2Ntc0luc3RhbGxBbGxvY0Z1bmN0aW9ucyhjbXNQbHVnaW5NZW1IYW5kbGVyKiBQbHVnaW4sIF9jbXNNZW1QbHVnaW5DaHVua1R5cGUqIHB0cikKK3sKKwlpZiAoUGx1Z2luID09IE5VTEwpIHsKKworCQltZW1jcHkocHRyLCAmX2Ntc01lbVBsdWdpbkNodW5rLCBzaXplb2YoX2Ntc01lbVBsdWdpbkNodW5rKSk7CisJfQorCWVsc2UgeworCisJCXB0ciAtPk1hbGxvY1B0ciAgPSBQbHVnaW4gLT4gTWFsbG9jUHRyOworCQlwdHIgLT5GcmVlUHRyICAgID0gUGx1Z2luIC0+IEZyZWVQdHI7CisJCXB0ciAtPlJlYWxsb2NQdHIgPSBQbHVnaW4gLT4gUmVhbGxvY1B0cjsKKworCQkvLyBNYWtlIHN1cmUgd2UgcmV2ZXJ0IHRvIGRlZmF1bHRzCisJCXB0ciAtPk1hbGxvY1plcm9QdHI9IF9jbXNNYWxsb2NaZXJvOworCQlwdHIgLT5DYWxsb2NQdHIgICAgPSBfY21zQ2FsbG9jOworCQlwdHIgLT5EdXBQdHIgICAgICAgPSBfY21zRHVwTWVtOworCisJCWlmIChQbHVnaW4gLT5NYWxsb2NaZXJvUHRyICE9IE5VTEwpIHB0ciAtPk1hbGxvY1plcm9QdHIgPSBQbHVnaW4gLT4gTWFsbG9jWmVyb1B0cjsKKwkJaWYgKFBsdWdpbiAtPkNhbGxvY1B0ciAhPSBOVUxMKSAgICAgcHRyIC0+Q2FsbG9jUHRyICAgICA9IFBsdWdpbiAtPiBDYWxsb2NQdHI7CisJCWlmIChQbHVnaW4gLT5EdXBQdHIgIT0gTlVMTCkgICAgICAgIHB0ciAtPkR1cFB0ciAgICAgICAgPSBQbHVnaW4gLT4gRHVwUHRyOworCisJfQorfQorI2VuZGlmCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8vIFN1YiBhbGxvY2F0aW9uIHRha2VzIGNhcmUgb2YgbWFueSBwb2ludGVycyBvZiBzbWFsbCBzaXplLiBUaGUgbWVtb3J5IGFsbG9jYXRlZCBpbgorLy8gdGhpcyB3YXkgaGF2ZSBiZSBmcmVlZCBhdCBvbmNlLiBOZXh0IGZ1bmN0aW9uIGFsbG9jYXRlcyBhIHNpbmdsZSBjaHVuayBmb3IgbGlua2VkIGxpc3QKKy8vIEkgcHJlZmVyIHRoaXMgbWV0aG9kIG92ZXIgcmVhbGxvYyBkdWUgdG8gdGhlIGJpZyBpbnBhY3Qgb24geHB1dCByZWFsbG9jIG1heSBoYXZlIGlmCisvLyBtZW1vcnkgaXMgYmVpbmcgc3dhcHBlZCB0byBkaXNrLiBUaGlzIGFwcHJvYWNoIGlzIHNhZmVyIChhbHRob3VnaCB0aGF0IG1heSBub3QgYmUgdHJ1ZSBvbiBhbGwgcGxhdGZvcm1zKQorc3RhdGljCitfY21zU3ViQWxsb2NhdG9yX2NodW5rKiBfY21zQ3JlYXRlU3ViQWxsb2NDaHVuayhjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIEluaXRpYWwpCit7CisgICAgX2Ntc1N1YkFsbG9jYXRvcl9jaHVuayogY2h1bms7CisKKyAgICAvLyAyMEsgYnkgZGVmYXVsdAorICAgIGlmIChJbml0aWFsID09IDApCisgICAgICAgIEluaXRpYWwgPSAyMCoxMDI0OworCisgICAgLy8gQ3JlYXRlIHRoZSBjb250YWluZXIKKyAgICBjaHVuayA9IChfY21zU3ViQWxsb2NhdG9yX2NodW5rKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoX2Ntc1N1YkFsbG9jYXRvcl9jaHVuaykpOworICAgIGlmIChjaHVuayA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIC8vIEluaXRpYWxpemUgdmFsdWVzCisgICAgY2h1bmsgLT5CbG9jayAgICAgPSAoY21zVUludDhOdW1iZXIqKSBfY21zTWFsbG9jKENvbnRleHRJRCwgSW5pdGlhbCk7CisgICAgaWYgKGNodW5rIC0+QmxvY2sgPT0gTlVMTCkgeworCisgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nCisgICAgICAgIF9jbXNGcmVlKENvbnRleHRJRCwgY2h1bmspOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBjaHVuayAtPkJsb2NrU2l6ZSA9IEluaXRpYWw7CisgICAgY2h1bmsgLT5Vc2VkICAgICAgPSAwOworICAgIGNodW5rIC0+bmV4dCAgICAgID0gTlVMTDsKKworICAgIHJldHVybiBjaHVuazsKK30KKworLy8gVGhlIHN1YmFsbG9jYXRlZCBpcyBub3RoaW5nIGJ1dCBhIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGxpc3QuIFdlIGFsc28ga2VlcAorLy8gdGhlIHRocmVhZCBJRCBpbiB0aGlzIHN0cnVjdHVyZS4KK19jbXNTdWJBbGxvY2F0b3IqIF9jbXNDcmVhdGVTdWJBbGxvYyhjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIEluaXRpYWwpCit7CisgICAgX2Ntc1N1YkFsbG9jYXRvciogc3ViOworCisgICAgLy8gQ3JlYXRlIHRoZSBjb250YWluZXIKKyAgICBzdWIgPSAoX2Ntc1N1YkFsbG9jYXRvciopIF9jbXNNYWxsb2NaZXJvKENvbnRleHRJRCwgc2l6ZW9mKF9jbXNTdWJBbGxvY2F0b3IpKTsKKyAgICBpZiAoc3ViID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgc3ViIC0+Q29udGV4dElEID0gQ29udGV4dElEOworCisgICAgc3ViIC0+aCA9IF9jbXNDcmVhdGVTdWJBbGxvY0NodW5rKENvbnRleHRJRCwgSW5pdGlhbCk7CisgICAgaWYgKHN1YiAtPmggPT0gTlVMTCkgeworICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIHN1Yik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBzdWI7Cit9CisKKworLy8gR2V0IHJpZCBvZiB3aG9sZSBsaW5rZWQgbGlzdAordm9pZCBfY21zU3ViQWxsb2NEZXN0cm95KF9jbXNTdWJBbGxvY2F0b3IqIHN1YikKK3sKKyAgICBfY21zU3ViQWxsb2NhdG9yX2NodW5rICpjaHVuaywgKm47CisKKyAgICBmb3IgKGNodW5rID0gc3ViIC0+aDsgY2h1bmsgIT0gTlVMTDsgY2h1bmsgPSBuKSB7CisKKyAgICAgICAgbiA9IGNodW5rLT5uZXh0OworICAgICAgICBpZiAoY2h1bmstPkJsb2NrICE9IE5VTEwpIF9jbXNGcmVlKHN1YiAtPkNvbnRleHRJRCwgY2h1bmstPkJsb2NrKTsKKyAgICAgICAgX2Ntc0ZyZWUoc3ViIC0+Q29udGV4dElELCBjaHVuayk7CisgICAgfQorCisgICAgLy8gRnJlZSB0aGUgaGVhZGVyCisgICAgX2Ntc0ZyZWUoc3ViIC0+Q29udGV4dElELCBzdWIpOworfQorCisKKy8vIEdldCBhIHBvaW50ZXIgdG8gc21hbGwgbWVtb3J5IGJsb2NrLgordm9pZCogIF9jbXNTdWJBbGxvYyhfY21zU3ViQWxsb2NhdG9yKiBzdWIsIGNtc1VJbnQzMk51bWJlciBzaXplKQoreworICAgIGNtc1VJbnQzMk51bWJlciBGcmVlID0gc3ViIC0+IGggLT5CbG9ja1NpemUgLSBzdWIgLT4gaCAtPiBVc2VkOworICAgIGNtc1VJbnQ4TnVtYmVyKiBwdHI7CisKKyAgICBzaXplID0gX2Ntc0FMSUdOTUVNKHNpemUpOworCisgICAgLy8gQ2hlY2sgZm9yIG1lbW9yeS4gSWYgdGhlcmUgaXMgbm8gcm9vbSwgYWxsb2NhdGUgYSBuZXcgY2h1bmsgb2YgZG91YmxlIG1lbW9yeSBzaXplLgorICAgIGlmIChzaXplID4gRnJlZSkgeworCisgICAgICAgIF9jbXNTdWJBbGxvY2F0b3JfY2h1bmsqIGNodW5rOworICAgICAgICBjbXNVSW50MzJOdW1iZXIgbmV3U2l6ZTsKKworICAgICAgICBuZXdTaXplID0gc3ViIC0+IGggLT5CbG9ja1NpemUgKiAyOworICAgICAgICBpZiAobmV3U2l6ZSA8IHNpemUpIG5ld1NpemUgPSBzaXplOworCisgICAgICAgIGNodW5rID0gX2Ntc0NyZWF0ZVN1YkFsbG9jQ2h1bmsoc3ViIC0+IENvbnRleHRJRCwgbmV3U2l6ZSk7CisgICAgICAgIGlmIChjaHVuayA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgICAgICAvLyBMaW5rIGxpc3QKKyAgICAgICAgY2h1bmsgLT5uZXh0ID0gc3ViIC0+aDsKKyAgICAgICAgc3ViIC0+aCAgICA9IGNodW5rOworCisgICAgfQorCisgICAgcHRyID0gIHN1YiAtPiBoIC0+QmxvY2sgKyBzdWIgLT4gaCAtPlVzZWQ7CisgICAgc3ViIC0+IGggLT4gVXNlZCArPSBzaXplOworCisgICAgcmV0dXJuICh2b2lkKikgcHRyOworfQorCisvLyBEdXBsaWNhdGUgaW4gcG9vbAordm9pZCogX2Ntc1N1YkFsbG9jRHVwKF9jbXNTdWJBbGxvY2F0b3IqIHMsIGNvbnN0IHZvaWQgKnB0ciwgY21zVUludDMyTnVtYmVyIHNpemUpCit7CisgICAgdm9pZCAqTmV3UHRyOworICAgIAorICAgIC8vIER1cCBvZiBudWxsIHBvaW50ZXIgaXMgYWxzbyBOVUxMCisgICAgaWYgKHB0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIE5ld1B0ciA9IF9jbXNTdWJBbGxvYyhzLCBzaXplKTsKKworICAgIGlmIChwdHIgIT0gTlVMTCAmJiBOZXdQdHIgIT0gTlVMTCkgeworICAgICAgICBtZW1jcHkoTmV3UHRyLCBwdHIsIHNpemUpOworICAgIH0KKworICAgIHJldHVybiBOZXdQdHI7Cit9CisKKworCisvLyBFcnJvciBsb2dnaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisvLyBUaGVyZSBpcyBubyBlcnJvciBoYW5kbGluZyBhdCBhbGwuIFdoZW4gYSBmdW50aW9uIGZhaWxzLCBpdCByZXR1cm5zIHByb3BlciB2YWx1ZS4KKy8vIEZvciBleGFtcGxlLCBhbGwgY3JlYXRlIGZ1bmN0aW9ucyBkb2VzIHJldHVybiBOVUxMIG9uIGZhaWx1cmUuIE90aGVyIHJldHVybiBGQUxTRQorLy8gSXQgbWF5IGJlIGludGVyZXN0aW5nLCBmb3IgdGhlIGRldmVsb3BlciwgdG8ga25vdyB3aHkgdGhlIGZ1bmN0aW9uIGlzIGZhaWxpbmcuCisvLyBmb3IgdGhhdCByZWFzb24sIGxjbXMyIGRvZXMgb2ZmZXIgYSBsb2dnaW5nIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGRvZXMgcmVjaXZlCisvLyBhIEVOR0xJU0ggc3RyaW5nIHdpdGggc29tZSBjbHVlcyBvbiB3aGF0IGlzIGdvaW5nIHdyb25nLiBZb3UgY2FuIHNob3cgdGhpcworLy8gaW5mbyB0byB0aGUgZW5kIHVzZXIsIG9yIGp1c3QgY3JlYXRlIHNvbWUgc29ydCBvZiBsb2cuCisvLyBUaGUgbG9nZ2luZyBmdW5jdGlvbiBzaG91bGQgTk9UIHRlcm1pbmF0ZSB0aGUgcHJvZ3JhbSwgYXMgdGhpcyBvYnZpb3VzbHkgY2FuIGxlYXZlCisvLyByZXNvdXJjZXMuIEl0IGlzIHRoZSBwcm9ncmFtbWVyJ3MgcmVzcG9uc2FiaWxpdHkgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiByZXR1cm4gY29kZQorLy8gdG8gbWFrZSBzdXJlIGl0IGRpZG4ndCBmYWlsLgorCisvLyBFcnJvciBtZXNzYWdlcyBhcmUgbGltaXRlZCB0byBNQVhfRVJST1JfTUVTU0FHRV9MRU4KKworI2RlZmluZSBNQVhfRVJST1JfTUVTU0FHRV9MRU4gICAxMDI0CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBUaGlzIGlzIG91ciBkZWZhdWx0IGxvZyBlcnJvcgorc3RhdGljIHZvaWQgRGVmYXVsdExvZ0Vycm9ySGFuZGxlckZ1bmN0aW9uKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgRXJyb3JDb2RlLCBjb25zdCBjaGFyICpUZXh0KTsKKworLy8gQ29udGV4dDAgc3RvcmFnZSwgd2hpY2ggaXMgZ2xvYmFsCitfY21zTG9nRXJyb3JDaHVua1R5cGUgX2Ntc0xvZ0Vycm9yQ2h1bmsgPSB7IERlZmF1bHRMb2dFcnJvckhhbmRsZXJGdW5jdGlvbiB9OworCisvLyBBbGxvY2F0ZXMgYW5kIGluaXRzIGVycm9yIGxvZ2dlciBjb250YWluZXIgZm9yIGEgZ2l2ZW4gY29udGV4dC4gSWYgc3JjIGlzIE5VTEwsIG9ubHkgaW5pdGlhbGl6ZXMgdGhlIHZhbHVlCisvLyB0byB0aGUgZGVmYXVsdC4gT3RoZXJ3aXNlLCBpdCBkdXBsaWNhdGVzIHRoZSB2YWx1ZS4gVGhlIGludGVyZmFjZSBpcyBzdGFuZGFyZCBhY3Jvc3MgYWxsIGNvbnRleHQgY2xpZW50cwordm9pZCBfY21zQWxsb2NMb2dFcnJvckNodW5rKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKQoreyAgICAKKyAgICBzdGF0aWMgX2Ntc0xvZ0Vycm9yQ2h1bmtUeXBlIExvZ0Vycm9yQ2h1bmsgPSB7IERlZmF1bHRMb2dFcnJvckhhbmRsZXJGdW5jdGlvbiB9OworICAgIHZvaWQqIGZyb207CisgICAgIAorICAgICBpZiAoc3JjICE9IE5VTEwpIHsKKyAgICAgICAgZnJvbSA9IHNyYyAtPmNodW5rc1tMb2dnZXJdOyAgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgZnJvbSA9ICZMb2dFcnJvckNodW5rOworICAgIH0KKyAgICAKKyAgICBjdHggLT5jaHVua3NbTG9nZ2VyXSA9IF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCBmcm9tLCBzaXplb2YoX2Ntc0xvZ0Vycm9yQ2h1bmtUeXBlKSk7ICAgCit9CisKKy8vIFRoZSBkZWZhdWx0IGVycm9yIGxvZ2dlciBkb2VzIG5vdGhpbmcuCitzdGF0aWMKK3ZvaWQgRGVmYXVsdExvZ0Vycm9ySGFuZGxlckZ1bmN0aW9uKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgRXJyb3JDb2RlLCBjb25zdCBjaGFyICpUZXh0KQoreworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiW2xjbXNdOiAlc1xuIiwgVGV4dCk7CisgICAgLy8gZmZsdXNoKHN0ZGVycik7CisKKyAgICAgY21zVU5VU0VEX1BBUkFNRVRFUihDb250ZXh0SUQpOworICAgICBjbXNVTlVTRURfUEFSQU1FVEVSKEVycm9yQ29kZSk7CisgICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoVGV4dCk7Cit9CisKKy8vIENoYW5nZSBsb2cgZXJyb3IsIGNvbnRleHQgYmFzZWQKK3ZvaWQgQ01TRVhQT1JUIGNtc1NldExvZ0Vycm9ySGFuZGxlclRIUihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zTG9nRXJyb3JIYW5kbGVyRnVuY3Rpb24gRm4pCit7CisgICAgX2Ntc0xvZ0Vycm9yQ2h1bmtUeXBlKiBsaGcgPSAoX2Ntc0xvZ0Vycm9yQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIExvZ2dlcik7CisKKyAgICBpZiAobGhnICE9IE5VTEwpIHsKKworICAgICAgICBpZiAoRm4gPT0gTlVMTCkKKyAgICAgICAgICAgIGxoZyAtPiBMb2dFcnJvckhhbmRsZXIgPSBEZWZhdWx0TG9nRXJyb3JIYW5kbGVyRnVuY3Rpb247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxoZyAtPiBMb2dFcnJvckhhbmRsZXIgPSBGbjsKKyAgICB9Cit9CisKKy8vIENoYW5nZSBsb2cgZXJyb3IsIGxlZ2FjeQordm9pZCBDTVNFWFBPUlQgY21zU2V0TG9nRXJyb3JIYW5kbGVyKGNtc0xvZ0Vycm9ySGFuZGxlckZ1bmN0aW9uIEZuKQoreworICAgIGNtc1NldExvZ0Vycm9ySGFuZGxlclRIUihOVUxMLCBGbik7ICAgIAorfQorCisvLyBMb2cgYW4gZXJyb3IKKy8vIEVycm9yVGV4dCBpcyBhIHRleHQgaG9sZGluZyBhbiBlbmdsaXNoIGRlc2NyaXB0aW9uIG9mIGVycm9yLgordm9pZCBDTVNFWFBPUlQgY21zU2lnbmFsRXJyb3IoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBFcnJvckNvZGUsIGNvbnN0IGNoYXIgKkVycm9yVGV4dCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICBjaGFyIEJ1ZmZlcltNQVhfRVJST1JfTUVTU0FHRV9MRU5dOworICAgIF9jbXNMb2dFcnJvckNodW5rVHlwZSogbGhnOworCisKKyAgICB2YV9zdGFydChhcmdzLCBFcnJvclRleHQpOworICAgIHZzbnByaW50ZihCdWZmZXIsIE1BWF9FUlJPUl9NRVNTQUdFX0xFTi0xLCBFcnJvclRleHQsIGFyZ3MpOworICAgIHZhX2VuZChhcmdzKTsKKworICAgIC8vIENoZWNrIGZvciB0aGUgY29udGV4dCwgaWYgc3BlY2lmaWVkIGdvIHRoZXJlLiBJZiBub3QsIGdvIGZvciB0aGUgZ2xvYmFsCisgICAgbGhnID0gKF9jbXNMb2dFcnJvckNodW5rVHlwZSopIF9jbXNDb250ZXh0R2V0Q2xpZW50Q2h1bmsoQ29udGV4dElELCBMb2dnZXIpOworICAgIGlmIChsaGcgLT5Mb2dFcnJvckhhbmRsZXIpIHsKKyAgICAgICAgbGhnIC0+TG9nRXJyb3JIYW5kbGVyKENvbnRleHRJRCwgRXJyb3JDb2RlLCBCdWZmZXIpOworICAgIH0gICAKK30KKworLy8gVXRpbGl0eSBmdW5jdGlvbiB0byBwcmludCBzaWduYXR1cmVzCit2b2lkIF9jbXNUYWdTaWduYXR1cmUyU3RyaW5nKGNoYXIgU3RyaW5nWzVdLCBjbXNUYWdTaWduYXR1cmUgc2lnKQoreworICAgIGNtc1VJbnQzMk51bWJlciBiZTsKKworICAgIC8vIENvbnZlcnQgdG8gYmlnIGVuZGlhbgorICAgIGJlID0gX2Ntc0FkanVzdEVuZGlhbmVzczMyKChjbXNVSW50MzJOdW1iZXIpIHNpZyk7CisKKyAgICAvLyBNb3ZlIGNoYXJzCisgICAgbWVtbW92ZShTdHJpbmcsICZiZSwgNCk7CisKKyAgICAvLyBNYWtlIHN1cmUgb2YgdGVybWluYXRvcgorICAgIFN0cmluZ1s0XSA9IDA7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitzdGF0aWMKK3ZvaWQqIGRlZk10eENyZWF0ZShjbXNDb250ZXh0IGlkKQoreworICAgIF9jbXNNdXRleCogcHRyX211dGV4ID0gKF9jbXNNdXRleCopIF9jbXNNYWxsb2MoaWQsIHNpemVvZihfY21zTXV0ZXgpKTsKKyAgICBfY21zSW5pdE11dGV4UHJpbWl0aXZlKHB0cl9tdXRleCk7CisgICAgcmV0dXJuICh2b2lkKikgcHRyX211dGV4OyAgIAorfQorCitzdGF0aWMKK3ZvaWQgZGVmTXR4RGVzdHJveShjbXNDb250ZXh0IGlkLCB2b2lkKiBtdHgpCit7CisgICAgX2Ntc0Rlc3Ryb3lNdXRleFByaW1pdGl2ZSgoX2Ntc011dGV4ICopIG10eCk7IAorICAgIF9jbXNGcmVlKGlkLCBtdHgpOworfQorCitzdGF0aWMKK2Ntc0Jvb2wgZGVmTXR4TG9jayhjbXNDb250ZXh0IGlkLCB2b2lkKiBtdHgpCit7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpZCk7CisgICAgcmV0dXJuIF9jbXNMb2NrUHJpbWl0aXZlKChfY21zTXV0ZXggKikgbXR4KSA9PSAwOyAgICAgCit9CisKK3N0YXRpYwordm9pZCBkZWZNdHhVbmxvY2soY21zQ29udGV4dCBpZCwgdm9pZCogbXR4KQoreworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaWQpOworICAgIF9jbXNVbmxvY2tQcmltaXRpdmUoKF9jbXNNdXRleCAqKSBtdHgpOyAKK30KKworCisKKy8vIFBvaW50ZXJzIHRvIG1lbW9yeSBtYW5hZ2VyIGZ1bmN0aW9ucyBpbiBDb250ZXh0MAorX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlIF9jbXNNdXRleFBsdWdpbkNodW5rID0geyBkZWZNdHhDcmVhdGUsIGRlZk10eERlc3Ryb3ksIGRlZk10eExvY2ssIGRlZk10eFVubG9jayB9OworCisvLyBBbGxvY2F0ZSBhbmQgaW5pdCBtdXRleCBjb250YWluZXIuCit2b2lkIF9jbXNBbGxvY011dGV4UGx1Z2luQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpCit7CisgICAgc3RhdGljIF9jbXNNdXRleFBsdWdpbkNodW5rVHlwZSBNdXRleENodW5rID0ge2RlZk10eENyZWF0ZSwgZGVmTXR4RGVzdHJveSwgZGVmTXR4TG9jaywgZGVmTXR4VW5sb2NrIH07CisgICAgdm9pZCogZnJvbTsKKyAgICAgCisgICAgIGlmIChzcmMgIT0gTlVMTCkgeworICAgICAgICBmcm9tID0gc3JjIC0+Y2h1bmtzW011dGV4UGx1Z2luXTsgICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgIGZyb20gPSAmTXV0ZXhDaHVuazsKKyAgICB9CisgICAgCisgICAgY3R4IC0+Y2h1bmtzW011dGV4UGx1Z2luXSA9IF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCBmcm9tLCBzaXplb2YoX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKSk7ICAgCit9CisKKy8vIFJlZ2lzdGVyIG5ldyB3YXlzIHRvIHRyYW5zZm9ybQorY21zQm9vbCAgX2Ntc1JlZ2lzdGVyTXV0ZXhQbHVnaW4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BsdWdpbkJhc2UqIERhdGEpCit7CisgICAgY21zUGx1Z2luTXV0ZXgqIFBsdWdpbiA9IChjbXNQbHVnaW5NdXRleCopIERhdGE7CisgICAgX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKiBjdHggPSAoIF9jbXNNdXRleFBsdWdpbkNodW5rVHlwZSopIF9jbXNDb250ZXh0R2V0Q2xpZW50Q2h1bmsoQ29udGV4dElELCBNdXRleFBsdWdpbik7CisKKyAgICBpZiAoRGF0YSA9PSBOVUxMKSB7CisKKyAgICAgICAgLy8gTm8gbG9jayByb3V0aW5lcworICAgICAgICBjdHgtPkNyZWF0ZU11dGV4UHRyID0gTlVMTDsgCisgICAgICAgIGN0eC0+RGVzdHJveU11dGV4UHRyID0gTlVMTDsgCisgICAgICAgIGN0eC0+TG9ja011dGV4UHRyID0gTlVMTDsKKyAgICAgICAgY3R4IC0+VW5sb2NrTXV0ZXhQdHIgPSBOVUxMOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICAvLyBGYWN0b3J5IGNhbGxiYWNrIGlzIHJlcXVpcmVkCisgICAgaWYgKFBsdWdpbiAtPkNyZWF0ZU11dGV4UHRyID09IE5VTEwgfHwgUGx1Z2luIC0+RGVzdHJveU11dGV4UHRyID09IE5VTEwgfHwgCisgICAgICAgIFBsdWdpbiAtPkxvY2tNdXRleFB0ciA9PSBOVUxMIHx8IFBsdWdpbiAtPlVubG9ja011dGV4UHRyID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworCisgICAgY3R4LT5DcmVhdGVNdXRleFB0ciAgPSBQbHVnaW4tPkNyZWF0ZU11dGV4UHRyOworICAgIGN0eC0+RGVzdHJveU11dGV4UHRyID0gUGx1Z2luIC0+RGVzdHJveU11dGV4UHRyOworICAgIGN0eCAtPkxvY2tNdXRleFB0ciAgID0gUGx1Z2luIC0+TG9ja011dGV4UHRyOworICAgIGN0eCAtPlVubG9ja011dGV4UHRyID0gUGx1Z2luIC0+VW5sb2NrTXV0ZXhQdHI7CisKKyAgICAvLyBBbGwgaXMgb2sKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gR2VuZXJpYyBNdXRleCBmbnMKK3ZvaWQqIENNU0VYUE9SVCBfY21zQ3JlYXRlTXV0ZXgoY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKiBwdHIgPSAoX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIE11dGV4UGx1Z2luKTsKKworICAgIGlmIChwdHIgLT5DcmVhdGVNdXRleFB0ciA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBwdHIgLT5DcmVhdGVNdXRleFB0cihDb250ZXh0SUQpOworfQorCit2b2lkIENNU0VYUE9SVCBfY21zRGVzdHJveU11dGV4KGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkKiBtdHgpCit7CisgICAgX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKiBwdHIgPSAoX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIE11dGV4UGx1Z2luKTsKKworICAgIGlmIChwdHIgLT5EZXN0cm95TXV0ZXhQdHIgIT0gTlVMTCkgeworCisgICAgICAgIHB0ciAtPkRlc3Ryb3lNdXRleFB0cihDb250ZXh0SUQsIG10eCk7CisgICAgfQorfQorCitjbXNCb29sIENNU0VYUE9SVCBfY21zTG9ja011dGV4KGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkKiBtdHgpCit7CisgICAgX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKiBwdHIgPSAoX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIE11dGV4UGx1Z2luKTsKKworICAgIGlmIChwdHIgLT5Mb2NrTXV0ZXhQdHIgPT0gTlVMTCkgcmV0dXJuIFRSVUU7CisKKyAgICByZXR1cm4gcHRyIC0+TG9ja011dGV4UHRyKENvbnRleHRJRCwgbXR4KTsKK30KKwordm9pZCBDTVNFWFBPUlQgX2Ntc1VubG9ja011dGV4KGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkKiBtdHgpCit7CisgICAgX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKiBwdHIgPSAoX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIE11dGV4UGx1Z2luKTsKKworICAgIGlmIChwdHIgLT5VbmxvY2tNdXRleFB0ciAhPSBOVUxMKSB7CisKKyAgICAgICAgcHRyIC0+VW5sb2NrTXV0ZXhQdHIoQ29udGV4dElELCBtdHgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNnYW1tYS5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2dhbW1hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhYTg3YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNnYW1tYS5jCkBAIC0wLDAgKzEsMTI5OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTMgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworCisjaW5jbHVkZSAibGNtczJfaW50ZXJuYWwuaCIKKworLy8gVG9uZSBjdXJ2ZXMgYXJlIHBvd2VyZnVsIGNvbnN0cnVjdHMgdGhhdCBjYW4gY29udGFpbiBjdXJ2ZXMgc3BlY2lmaWVkIGluIGRpdmVyc2Ugd2F5cy4KKy8vIFRoZSBjdXJ2ZSBpcyBzdG9yZWQgaW4gc2VnbWVudHMsIHdoZXJlIGVhY2ggc2VnbWVudCBjYW4gYmUgc2FtcGxlZCBvciBzcGVjaWZpZWQgYnkgcGFyYW1ldGVycy4KKy8vIGEgMTYuYml0IHNpbXBsaWZpY2F0aW9uIG9mIHRoZSAqd2hvbGUqIGN1cnZlIGlzIGtlcHQgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gRm9yIGZsb2F0IG9wZXJhdGlvbiwKKy8vIGVhY2ggc2VnbWVudCBpcyBldmFsdWF0ZWQgc2VwYXJhdGVseS4gUGx1Zy1pbnMgbWF5IGJlIHVzZWQgdG8gZGVmaW5lIG5ldyBwYXJhbWV0cmljIHNjaGVtZXMsCisvLyBlYWNoIHBsdWctaW4gbWF5IGRlZmluZSB1cCB0byBNQVhfVFlQRVNfSU5fTENNU19QTFVHSU4gZnVuY3Rpb25zIHR5cGVzLiBGb3IgZGVmaW5pbmcgYSBmdW5jdGlvbiwKKy8vIHRoZSBwbHVnLWluIHNob3VsZCBwcm92aWRlIHRoZSB0eXBlIGlkLCBob3cgbWFueSBwYXJhbWV0ZXJzIGVhY2ggdHlwZSBoYXMsIGFuZCBhIHBvaW50ZXIgdG8KKy8vIGEgcHJvY2VkdXJlIHRoYXQgZXZhbHVhdGVzIHRoZSBmdW5jdGlvbi4gSW4gdGhlIGNhc2Ugb2YgcmV2ZXJzZSBldmFsdWF0aW9uLCB0aGUgZXZhbHVhdG9yIHdpbGwKKy8vIGJlIGNhbGxlZCB3aXRoIHRoZSB0eXBlIGlkIGFzIGEgbmVnYXRpdmUgdmFsdWUsIGFuZCBhIHNhbXBsZWQgdmVyc2lvbiBvZiB0aGUgcmV2ZXJzZWQgY3VydmUKKy8vIHdpbGwgYmUgYnVpbHQuCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEltcGxlbWVudGF0aW9uCisvLyBNYXhpbSBudW1iZXIgb2Ygbm9kZXMKKyNkZWZpbmUgTUFYX05PREVTX0lOX0NVUlZFICAgNDA5NworI2RlZmluZSBNSU5VU19JTkYgICAgICAgICAgICAoLTFFMjJGKQorI2RlZmluZSBQTFVTX0lORiAgICAgICAgICAgICAoKzFFMjJGKQorCisvLyBUaGUgbGlzdCBvZiBzdXBwb3J0ZWQgcGFyYW1ldHJpYyBjdXJ2ZXMKK3R5cGVkZWYgc3RydWN0IF9jbXNQYXJhbWV0cmljQ3VydmVzQ29sbGVjdGlvbl9zdCB7CisKKyAgICBpbnQgbkZ1bmN0aW9uczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHN1cHBvcnRlZCBmdW5jdGlvbnMgaW4gdGhpcyBjaHVuaworICAgIGludCBGdW5jdGlvblR5cGVzW01BWF9UWVBFU19JTl9MQ01TX1BMVUdJTl07ICAgICAgICAvLyBUaGUgaWRlbnRpZmljYXRpb24gdHlwZXMKKyAgICBpbnQgUGFyYW1ldGVyQ291bnRbTUFYX1RZUEVTX0lOX0xDTVNfUExVR0lOXTsgICAgICAgLy8gTnVtYmVyIG9mIHBhcmFtZXRlcnMgZm9yIGVhY2ggZnVuY3Rpb24KKyAgICBjbXNQYXJhbWV0cmljQ3VydmVFdmFsdWF0b3IgICAgRXZhbHVhdG9yOyAgICAgICAgICAgLy8gVGhlIGV2YWx1YXRvcgorCisgICAgc3RydWN0IF9jbXNQYXJhbWV0cmljQ3VydmVzQ29sbGVjdGlvbl9zdCogTmV4dDsgLy8gTmV4dCBpbiBsaXN0CisKK30gX2Ntc1BhcmFtZXRyaWNDdXJ2ZXNDb2xsZWN0aW9uOworCisvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IChidWlsdC1pbikgZXZhbHVhdG9yCitzdGF0aWMgY21zRmxvYXQ2NE51bWJlciBEZWZhdWx0RXZhbFBhcmFtZXRyaWNGbihjbXNJbnQzMk51bWJlciBUeXBlLCBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIFBhcmFtc1tdLCBjbXNGbG9hdDY0TnVtYmVyIFIpOworCisvLyBUaGUgYnVpbHQtaW4gbGlzdAorc3RhdGljIF9jbXNQYXJhbWV0cmljQ3VydmVzQ29sbGVjdGlvbiBEZWZhdWx0Q3VydmVzID0geworICAgIDksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMgb2YgY3VydmUgdHlwZXMKKyAgICB7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDEwOCB9LCAgICAvLyBQYXJhbWV0cmljIGN1cnZlIElECisgICAgeyAxLCAzLCA0LCA1LCA3LCA0LCA1LCA1LCAxIH0sICAgICAgLy8gUGFyYW1ldGVycyBieSB0eXBlCisgICAgRGVmYXVsdEV2YWxQYXJhbWV0cmljRm4sICAgICAgICAgICAgLy8gRXZhbHVhdG9yCisgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmV4dCBpbiBjaGFpbgorfTsKKworLy8gRHVwbGljYXRlcyB0aGUgem9uZSBvZiBtZW1vcnkgdXNlZCBieSB0aGUgcGx1Zy1pbiBpbiB0aGUgbmV3IGNvbnRleHQKK3N0YXRpYwordm9pZCBEdXBQbHVnaW5DdXJ2ZXNMaXN0KHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYykKK3sKKyAgIF9jbXNDdXJ2ZXNQbHVnaW5DaHVua1R5cGUgbmV3SGVhZCA9IHsgTlVMTCB9OworICAgX2Ntc1BhcmFtZXRyaWNDdXJ2ZXNDb2xsZWN0aW9uKiAgZW50cnk7CisgICBfY21zUGFyYW1ldHJpY0N1cnZlc0NvbGxlY3Rpb24qICBBbnRlcmlvciA9IE5VTEw7CisgICBfY21zQ3VydmVzUGx1Z2luQ2h1bmtUeXBlKiBoZWFkID0gKF9jbXNDdXJ2ZXNQbHVnaW5DaHVua1R5cGUqKSBzcmMtPmNodW5rc1tDdXJ2ZXNQbHVnaW5dOworCisgICAgX2Ntc0Fzc2VydChoZWFkICE9IE5VTEwpOworCisgICAgLy8gV2FsayB0aGUgbGlzdCBjb3B5aW5nIGFsbCBub2RlcworICAgZm9yIChlbnRyeSA9IGhlYWQtPlBhcmFtZXRyaWNDdXJ2ZXM7CisgICAgICAgIGVudHJ5ICE9IE5VTEw7CisgICAgICAgIGVudHJ5ID0gZW50cnkgLT5OZXh0KSB7CisKKyAgICAgICAgICAgIF9jbXNQYXJhbWV0cmljQ3VydmVzQ29sbGVjdGlvbiAqbmV3RW50cnkgPSAoIF9jbXNQYXJhbWV0cmljQ3VydmVzQ29sbGVjdGlvbiAqKSBfY21zU3ViQWxsb2NEdXAoY3R4IC0+TWVtUG9vbCwgZW50cnksIHNpemVvZihfY21zUGFyYW1ldHJpY0N1cnZlc0NvbGxlY3Rpb24pKTsKKyAgIAorICAgICAgICAgICAgaWYgKG5ld0VudHJ5ID09IE5VTEwpIAorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBrZWVwIHRoZSBsaW5rZWQgbGlzdCBvcmRlciwgc28gdGhpcyBpcyBhIGxpdHRsZSBiaXQgdHJpY2t5CisgICAgICAgICAgICBuZXdFbnRyeSAtPiBOZXh0ID0gTlVMTDsKKyAgICAgICAgICAgIGlmIChBbnRlcmlvcikKKyAgICAgICAgICAgICAgICBBbnRlcmlvciAtPiBOZXh0ID0gbmV3RW50cnk7CisgICAgIAorICAgICAgICAgICAgQW50ZXJpb3IgPSBuZXdFbnRyeTsKKworICAgICAgICAgICAgaWYgKG5ld0hlYWQuUGFyYW1ldHJpY0N1cnZlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIG5ld0hlYWQuUGFyYW1ldHJpY0N1cnZlcyA9IG5ld0VudHJ5OworICAgIH0KKworICBjdHggLT5jaHVua3NbQ3VydmVzUGx1Z2luXSA9IF9jbXNTdWJBbGxvY0R1cChjdHgtPk1lbVBvb2wsICZuZXdIZWFkLCBzaXplb2YoX2Ntc0N1cnZlc1BsdWdpbkNodW5rVHlwZSkpOworfQorCisvLyBUaGUgYWxsb2NhdG9yIGhhdmUgdG8gZm9sbG93IHRoZSBjaGFpbgordm9pZCBfY21zQWxsb2NDdXJ2ZXNQbHVnaW5DaHVuayhzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpCit7CisgICAgX2Ntc0Fzc2VydChjdHggIT0gTlVMTCk7CisKKyAgICBpZiAoc3JjICE9IE5VTEwpIHsKKworICAgICAgICAvLyBDb3B5IGFsbCBsaW5rZWQgbGlzdAorICAgICAgIER1cFBsdWdpbkN1cnZlc0xpc3QoY3R4LCBzcmMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhdGljIF9jbXNDdXJ2ZXNQbHVnaW5DaHVua1R5cGUgQ3VydmVzUGx1Z2luQ2h1bmsgPSB7IE5VTEwgfTsKKyAgICAgICAgY3R4IC0+Y2h1bmtzW0N1cnZlc1BsdWdpbl0gPSBfY21zU3ViQWxsb2NEdXAoY3R4IC0+TWVtUG9vbCwgJkN1cnZlc1BsdWdpbkNodW5rLCBzaXplb2YoX2Ntc0N1cnZlc1BsdWdpbkNodW5rVHlwZSkpOworICAgIH0KK30KKworCisvLyBUaGUgbGlua2VkIGxpc3QgaGVhZAorX2Ntc0N1cnZlc1BsdWdpbkNodW5rVHlwZSBfY21zQ3VydmVzUGx1Z2luQ2h1bmsgPSB7IE5VTEwgfTsKKworLy8gQXMgYSB3YXkgdG8gaW5zdGFsbCBuZXcgcGFyYW1ldHJpYyBjdXJ2ZXMKK2Ntc0Jvb2wgX2Ntc1JlZ2lzdGVyUGFyYW1ldHJpY0N1cnZlc1BsdWdpbihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zUGx1Z2luQmFzZSogRGF0YSkKK3sKKyAgICBfY21zQ3VydmVzUGx1Z2luQ2h1bmtUeXBlKiBjdHggPSAoIF9jbXNDdXJ2ZXNQbHVnaW5DaHVua1R5cGUqKSBfY21zQ29udGV4dEdldENsaWVudENodW5rKENvbnRleHRJRCwgQ3VydmVzUGx1Z2luKTsKKyAgICBjbXNQbHVnaW5QYXJhbWV0cmljQ3VydmVzKiBQbHVnaW4gPSAoY21zUGx1Z2luUGFyYW1ldHJpY0N1cnZlcyopIERhdGE7CisgICAgX2Ntc1BhcmFtZXRyaWNDdXJ2ZXNDb2xsZWN0aW9uKiBmbDsKKworICAgIGlmIChEYXRhID09IE5VTEwpIHsKKworICAgICAgICAgIGN0eCAtPiBQYXJhbWV0cmljQ3VydmVzID0gIE5VTEw7CisgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgZmwgPSAoX2Ntc1BhcmFtZXRyaWNDdXJ2ZXNDb2xsZWN0aW9uKikgX2Ntc1BsdWdpbk1hbGxvYyhDb250ZXh0SUQsIHNpemVvZihfY21zUGFyYW1ldHJpY0N1cnZlc0NvbGxlY3Rpb24pKTsKKyAgICBpZiAoZmwgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gQ29weSB0aGUgcGFyYW1ldGVycworICAgIGZsIC0+RXZhbHVhdG9yICA9IFBsdWdpbiAtPkV2YWx1YXRvcjsKKyAgICBmbCAtPm5GdW5jdGlvbnMgPSBQbHVnaW4gLT5uRnVuY3Rpb25zOworCisgICAgLy8gTWFrZSBzdXJlIG5vIG1lbSBvdmVyd3JpdGVzCisgICAgaWYgKGZsIC0+bkZ1bmN0aW9ucyA+IE1BWF9UWVBFU19JTl9MQ01TX1BMVUdJTikKKyAgICAgICAgZmwgLT5uRnVuY3Rpb25zID0gTUFYX1RZUEVTX0lOX0xDTVNfUExVR0lOOworCisgICAgLy8gQ29weSB0aGUgZGF0YQorICAgIG1lbW1vdmUoZmwtPkZ1bmN0aW9uVHlwZXMsICBQbHVnaW4gLT5GdW5jdGlvblR5cGVzLCAgIGZsLT5uRnVuY3Rpb25zICogc2l6ZW9mKGNtc1VJbnQzMk51bWJlcikpOworICAgIG1lbW1vdmUoZmwtPlBhcmFtZXRlckNvdW50LCBQbHVnaW4gLT5QYXJhbWV0ZXJDb3VudCwgIGZsLT5uRnVuY3Rpb25zICogc2l6ZW9mKGNtc1VJbnQzMk51bWJlcikpOworCisgICAgLy8gS2VlcCBsaW5rZWQgbGlzdAorICAgIGZsIC0+TmV4dCA9IGN0eC0+UGFyYW1ldHJpY0N1cnZlczsKKyAgICBjdHgtPlBhcmFtZXRyaWNDdXJ2ZXMgPSBmbDsKKworICAgIC8vIEFsbCBpcyBvaworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIFNlYXJjaCBpbiB0eXBlIGxpc3QsIHJldHVybiBwb3NpdGlvbiBvciAtMSBpZiBub3QgZm91bmQKK3N0YXRpYworaW50IElzSW5TZXQoaW50IFR5cGUsIF9jbXNQYXJhbWV0cmljQ3VydmVzQ29sbGVjdGlvbiogYykKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaT0wOyBpIDwgYyAtPm5GdW5jdGlvbnM7IGkrKykKKyAgICAgICAgaWYgKGFicyhUeXBlKSA9PSBjIC0+RnVuY3Rpb25UeXBlc1tpXSkgcmV0dXJuIGk7CisKKyAgICByZXR1cm4gLTE7Cit9CisKKworLy8gU2VhcmNoIGZvciB0aGUgY29sbGVjdGlvbiB3aGljaCBjb250YWlucyBhIHNwZWNpZmljIHR5cGUKK3N0YXRpYworX2Ntc1BhcmFtZXRyaWNDdXJ2ZXNDb2xsZWN0aW9uICpHZXRQYXJhbWV0cmljQ3VydmVCeVR5cGUoY21zQ29udGV4dCBDb250ZXh0SUQsIGludCBUeXBlLCBpbnQqIGluZGV4KQoreworICAgIF9jbXNQYXJhbWV0cmljQ3VydmVzQ29sbGVjdGlvbiogYzsKKyAgICBpbnQgUG9zaXRpb247CisgICAgX2Ntc0N1cnZlc1BsdWdpbkNodW5rVHlwZSogY3R4ID0gKCBfY21zQ3VydmVzUGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIEN1cnZlc1BsdWdpbik7CisKKyAgICBmb3IgKGMgPSBjdHgtPlBhcmFtZXRyaWNDdXJ2ZXM7IGMgIT0gTlVMTDsgYyA9IGMgLT5OZXh0KSB7CisKKyAgICAgICAgUG9zaXRpb24gPSBJc0luU2V0KFR5cGUsIGMpOworCisgICAgICAgIGlmIChQb3NpdGlvbiAhPSAtMSkgeworICAgICAgICAgICAgaWYgKGluZGV4ICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmluZGV4ID0gUG9zaXRpb247CisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBJZiBub25lIGZvdW5kLCByZXZlcnQgZm9yIGRlZmF1bHRzCisgICAgZm9yIChjID0gJkRlZmF1bHRDdXJ2ZXM7IGMgIT0gTlVMTDsgYyA9IGMgLT5OZXh0KSB7CisKKyAgICAgICAgUG9zaXRpb24gPSBJc0luU2V0KFR5cGUsIGMpOworCisgICAgICAgIGlmIChQb3NpdGlvbiAhPSAtMSkgeworICAgICAgICAgICAgaWYgKGluZGV4ICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmluZGV4ID0gUG9zaXRpb247CisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCisvLyBMb3cgbGV2ZWwgYWxsb2NhdGUsIHdoaWNoIHRha2VzIGNhcmUgb2YgbWVtb3J5IGRldGFpbHMuIG5FbnRyaWVzIG1heSBiZSB6ZXJvLCBhbmQgaW4gdGhpcyBjYXNlCisvLyBubyBvcHRpbWF0aW9uIGN1cnZlIGlzIGNvbXB1dGVkLiBuU2VnbWVudHMgbWF5IGFsc28gYmUgemVybyBpbiB0aGUgaW52ZXJzZSBjYXNlLCB3aGVyZSBvbmx5IHRoZQorLy8gb3B0aW1pemF0aW9uIGN1cnZlIGlzIGdpdmVuLiBCb3RoIGZlYXR1cmVzIHNpbXVsdGFuZW91c2x5IGlzIGFuIGVycm9yCitzdGF0aWMKK2Ntc1RvbmVDdXJ2ZSogQWxsb2NhdGVUb25lQ3VydmVTdHJ1Y3QoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0ludDMyTnVtYmVyIG5FbnRyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNJbnQzMk51bWJlciBuU2VnbWVudHMsIGNvbnN0IGNtc0N1cnZlU2VnbWVudCogU2VnbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1VJbnQxNk51bWJlciogVmFsdWVzKQoreworICAgIGNtc1RvbmVDdXJ2ZSogcDsKKyAgICBpbnQgaTsKKworICAgIC8vIFdlIGFsbG93IGh1Z2UgdGFibGVzLCB3aGljaCBhcmUgdGhlbiByZXN0cmljdGVkIGZvciBzbW9vdGhpbmcgb3BlcmF0aW9ucworICAgIGlmIChuRW50cmllcyA+IDY1NTMwIHx8IG5FbnRyaWVzIDwgMCkgeworICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX1JBTkdFLCAiQ291bGRuJ3QgY3JlYXRlIHRvbmUgY3VydmUgb2YgbW9yZSB0aGFuIDY1NTMwIGVudHJpZXMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG5FbnRyaWVzIDw9IDAgJiYgblNlZ21lbnRzIDw9IDApIHsKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9SQU5HRSwgIkNvdWxkbid0IGNyZWF0ZSB0b25lIGN1cnZlIHdpdGggemVybyBzZWdtZW50cyBhbmQgbm8gdGFibGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLy8gQWxsb2NhdGUgYWxsIHJlcXVpcmVkIHBvaW50ZXJzLCBldGMuCisgICAgcCA9IChjbXNUb25lQ3VydmUqKSBfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIHNpemVvZihjbXNUb25lQ3VydmUpKTsKKyAgICBpZiAoIXApIHJldHVybiBOVUxMOworCisgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGVyZSBhcmUgbm8gc2VnbWVudHMKKyAgICBpZiAoblNlZ21lbnRzIDw9IDApIHsKKyAgICAgICAgcCAtPlNlZ21lbnRzID0gTlVMTDsKKyAgICAgICAgcCAtPkV2YWxzID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHAgLT5TZWdtZW50cyA9IChjbXNDdXJ2ZVNlZ21lbnQqKSBfY21zQ2FsbG9jKENvbnRleHRJRCwgblNlZ21lbnRzLCBzaXplb2YoY21zQ3VydmVTZWdtZW50KSk7CisgICAgICAgIGlmIChwIC0+U2VnbWVudHMgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgICAgICBwIC0+RXZhbHMgICAgPSAoY21zUGFyYW1ldHJpY0N1cnZlRXZhbHVhdG9yKikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIG5TZWdtZW50cywgc2l6ZW9mKGNtc1BhcmFtZXRyaWNDdXJ2ZUV2YWx1YXRvcikpOworICAgICAgICBpZiAocCAtPkV2YWxzID09IE5VTEwpIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgcCAtPiBuU2VnbWVudHMgPSBuU2VnbWVudHM7CisKKyAgICAvLyBUaGlzIDE2LWJpdCB0YWJsZSBjb250YWlucyBhIGxpbWl0ZWQgcHJlY2lzaW9uIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB3aG9sZSBjdXJ2ZSBhbmQgaXMga2VwdCBmb3IKKyAgICAvLyBpbmNyZWFzaW5nIHhwdXQgb24gY2VydGFpbiBvcGVyYXRpb25zLgorICAgIGlmIChuRW50cmllcyA8PSAwKSB7CisgICAgICAgIHAgLT5UYWJsZTE2ID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgcCAtPlRhYmxlMTYgPSAoY21zVUludDE2TnVtYmVyKikgIF9jbXNDYWxsb2MoQ29udGV4dElELCBuRW50cmllcywgc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikpOworICAgICAgIGlmIChwIC0+VGFibGUxNiA9PSBOVUxMKSBnb3RvIEVycm9yOworICAgIH0KKworICAgIHAgLT4gbkVudHJpZXMgID0gbkVudHJpZXM7CisKKyAgICAvLyBJbml0aWFsaXplIG1lbWJlcnMgaWYgcmVxdWVzdGVkCisgICAgaWYgKFZhbHVlcyAhPSBOVUxMICYmIChuRW50cmllcyA+IDApKSB7CisKKyAgICAgICAgZm9yIChpPTA7IGkgPCBuRW50cmllczsgaSsrKQorICAgICAgICAgICAgcCAtPlRhYmxlMTZbaV0gPSBWYWx1ZXNbaV07CisgICAgfQorCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2VnbWVudHMgc3R1ZmYuIFRoZSBldmFsdWF0b3IgZm9yIGVhY2ggc2VnbWVudCBpcyBsb2NhdGVkIGFuZCBhIHBvaW50ZXIgdG8gaXQKKyAgICAvLyBpcyBwbGFjZWQgaW4gYWR2YW5jZSB0byBtYXhpbWl6ZSBwZXJmb3JtYW5jZS4KKyAgICBpZiAoU2VnbWVudHMgIT0gTlVMTCAmJiAoblNlZ21lbnRzID4gMCkpIHsKKworICAgICAgICBfY21zUGFyYW1ldHJpY0N1cnZlc0NvbGxlY3Rpb24gKmM7CisKKyAgICAgICAgcCAtPlNlZ0ludGVycCA9IChjbXNJbnRlcnBQYXJhbXMqKikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIG5TZWdtZW50cywgc2l6ZW9mKGNtc0ludGVycFBhcmFtcyopKTsKKyAgICAgICAgaWYgKHAgLT5TZWdJbnRlcnAgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgICAgICBmb3IgKGk9MDsgaTwgblNlZ21lbnRzOyBpKyspIHsKKworICAgICAgICAgICAgLy8gVHlwZSAwIGlzIGEgc3BlY2lhbCBtYXJrZXIgZm9yIHRhYmxlLWJhc2VkIGN1cnZlcworICAgICAgICAgICAgaWYgKFNlZ21lbnRzW2ldLlR5cGUgPT0gMCkKKyAgICAgICAgICAgICAgICBwIC0+U2VnSW50ZXJwW2ldID0gX2Ntc0NvbXB1dGVJbnRlcnBQYXJhbXMoQ29udGV4dElELCBTZWdtZW50c1tpXS5uR3JpZFBvaW50cywgMSwgMSwgTlVMTCwgQ01TX0xFUlBfRkxBR1NfRkxPQVQpOworCisgICAgICAgICAgICBtZW1tb3ZlKCZwIC0+U2VnbWVudHNbaV0sICZTZWdtZW50c1tpXSwgc2l6ZW9mKGNtc0N1cnZlU2VnbWVudCkpOworCisgICAgICAgICAgICBpZiAoU2VnbWVudHNbaV0uVHlwZSA9PSAwICYmIFNlZ21lbnRzW2ldLlNhbXBsZWRQb2ludHMgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBwIC0+U2VnbWVudHNbaV0uU2FtcGxlZFBvaW50cyA9IChjbXNGbG9hdDMyTnVtYmVyKikgX2Ntc0R1cE1lbShDb250ZXh0SUQsIFNlZ21lbnRzW2ldLlNhbXBsZWRQb2ludHMsIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKSAqIFNlZ21lbnRzW2ldLm5HcmlkUG9pbnRzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwIC0+U2VnbWVudHNbaV0uU2FtcGxlZFBvaW50cyA9IE5VTEw7CisKKworICAgICAgICAgICAgYyA9IEdldFBhcmFtZXRyaWNDdXJ2ZUJ5VHlwZShDb250ZXh0SUQsIFNlZ21lbnRzW2ldLlR5cGUsIE5VTEwpOworICAgICAgICAgICAgaWYgKGMgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgcCAtPkV2YWxzW2ldID0gYyAtPkV2YWx1YXRvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHAgLT5JbnRlcnBQYXJhbXMgPSBfY21zQ29tcHV0ZUludGVycFBhcmFtcyhDb250ZXh0SUQsIHAgLT5uRW50cmllcywgMSwgMSwgcC0+VGFibGUxNiwgQ01TX0xFUlBfRkxBR1NfMTZCSVRTKTsKKyAgICBpZiAocC0+SW50ZXJwUGFyYW1zICE9IE5VTEwpCisgICAgICAgIHJldHVybiBwOworCitFcnJvcjoKKyAgICBpZiAocCAtPiBTZWdtZW50cykgX2Ntc0ZyZWUoQ29udGV4dElELCBwIC0+U2VnbWVudHMpOworICAgIGlmIChwIC0+IEV2YWxzKSBfY21zRnJlZShDb250ZXh0SUQsIHAgLT4gRXZhbHMpOworICAgIGlmIChwIC0+VGFibGUxNikgX2Ntc0ZyZWUoQ29udGV4dElELCBwIC0+VGFibGUxNik7CisgICAgX2Ntc0ZyZWUoQ29udGV4dElELCBwKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCisvLyBQYXJhbWV0cmljIEZuIHVzaW5nIGZsb2F0aW5nIHBvaW50CitzdGF0aWMKK2Ntc0Zsb2F0NjROdW1iZXIgRGVmYXVsdEV2YWxQYXJhbWV0cmljRm4oY21zSW50MzJOdW1iZXIgVHlwZSwgY29uc3QgY21zRmxvYXQ2NE51bWJlciBQYXJhbXNbXSwgY21zRmxvYXQ2NE51bWJlciBSKQoreworICAgIGNtc0Zsb2F0NjROdW1iZXIgZSwgVmFsLCBkaXNjOworCisgICAgc3dpdGNoIChUeXBlKSB7CisKKyAgIC8vIFggPSBZIF4gR2FtbWEKKyAgICBjYXNlIDE6CisgICAgICAgIGlmIChSIDwgMCkgeworCisgICAgICAgICAgICBpZiAoZmFicyhQYXJhbXNbMF0gLSAxLjApIDwgTUFUUklYX0RFVF9UT0xFUkFOQ0UpCisgICAgICAgICAgICAgICAgVmFsID0gUjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBWYWwgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFZhbCA9IHBvdyhSLCBQYXJhbXNbMF0pOworICAgICAgICBicmVhazsKKworICAgIC8vIFR5cGUgMSBSZXZlcnNlZDogWCA9IFkgXjEvZ2FtbWEKKyAgICBjYXNlIC0xOgorICAgICAgICAgaWYgKFIgPCAwKSB7CisKKyAgICAgICAgICAgIGlmIChmYWJzKFBhcmFtc1swXSAtIDEuMCkgPCBNQVRSSVhfREVUX1RPTEVSQU5DRSkKKyAgICAgICAgICAgICAgICBWYWwgPSBSOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFZhbCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgVmFsID0gcG93KFIsIDEvUGFyYW1zWzBdKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvLyBDSUUgMTIyLTE5NjYKKyAgICAvLyBZID0gKGFYICsgYileR2FtbWEgIHwgWCA+PSAtYi9hCisgICAgLy8gWSA9IDAgICAgICAgICAgICAgICB8IGVsc2UKKyAgICBjYXNlIDI6CisgICAgICAgIGRpc2MgPSAtUGFyYW1zWzJdIC8gUGFyYW1zWzFdOworCisgICAgICAgIGlmIChSID49IGRpc2MgKSB7CisKKyAgICAgICAgICAgIGUgPSBQYXJhbXNbMV0qUiArIFBhcmFtc1syXTsKKworICAgICAgICAgICAgaWYgKGUgPiAwKQorICAgICAgICAgICAgICAgIFZhbCA9IHBvdyhlLCBQYXJhbXNbMF0pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFZhbCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgVmFsID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgLy8gVHlwZSAyIFJldmVyc2VkCisgICAgIC8vIFggPSAoWSBeMS9nICAtIGIpIC8gYQorICAgICBjYXNlIC0yOgorICAgICAgICAgaWYgKFIgPCAwKQorICAgICAgICAgICAgIFZhbCA9IDA7CisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgVmFsID0gKHBvdyhSLCAxLjAvUGFyYW1zWzBdKSAtIFBhcmFtc1syXSkgLyBQYXJhbXNbMV07CisKKyAgICAgICAgIGlmIChWYWwgPCAwKQorICAgICAgICAgICAgICBWYWwgPSAwOworICAgICAgICAgYnJlYWs7CisKKworICAgIC8vIElFQyA2MTk2Ni0zCisgICAgLy8gWSA9IChhWCArIGIpXkdhbW1hIHwgWCA8PSAtYi9hCisgICAgLy8gWSA9IGMgICAgICAgICAgICAgIHwgZWxzZQorICAgIGNhc2UgMzoKKyAgICAgICAgZGlzYyA9IC1QYXJhbXNbMl0gLyBQYXJhbXNbMV07CisgICAgICAgIGlmIChkaXNjIDwgMCkKKyAgICAgICAgICAgIGRpc2MgPSAwOworCisgICAgICAgIGlmIChSID49IGRpc2MpIHsKKworICAgICAgICAgICAgZSA9IFBhcmFtc1sxXSpSICsgUGFyYW1zWzJdOworCisgICAgICAgICAgICBpZiAoZSA+IDApCisgICAgICAgICAgICAgICAgVmFsID0gcG93KGUsIFBhcmFtc1swXSkgKyBQYXJhbXNbM107CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgVmFsID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBWYWwgPSBQYXJhbXNbM107CisgICAgICAgIGJyZWFrOworCisKKyAgICAvLyBUeXBlIDMgcmV2ZXJzZWQKKyAgICAvLyBYPSgoWS1jKV4xL2cgLSBiKS9hICAgICAgfCAoWT49YykKKyAgICAvLyBYPS1iL2EgICAgICAgICAgICAgICAgICAgfCAoWTxjKQorICAgIGNhc2UgLTM6CisgICAgICAgIGlmIChSID49IFBhcmFtc1szXSkgIHsKKworICAgICAgICAgICAgZSA9IFIgLSBQYXJhbXNbM107CisKKyAgICAgICAgICAgIGlmIChlID4gMCkKKyAgICAgICAgICAgICAgICBWYWwgPSAocG93KGUsIDEvUGFyYW1zWzBdKSAtIFBhcmFtc1syXSkgLyBQYXJhbXNbMV07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgVmFsID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZhbCA9IC1QYXJhbXNbMl0gLyBQYXJhbXNbMV07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKworICAgIC8vIElFQyA2MTk2Ni0yLjEgKHNSR0IpCisgICAgLy8gWSA9IChhWCArIGIpXkdhbW1hIHwgWCA+PSBkCisgICAgLy8gWSA9IGNYICAgICAgICAgICAgIHwgWCA8IGQKKyAgICBjYXNlIDQ6CisgICAgICAgIGlmIChSID49IFBhcmFtc1s0XSkgeworCisgICAgICAgICAgICBlID0gUGFyYW1zWzFdKlIgKyBQYXJhbXNbMl07CisKKyAgICAgICAgICAgIGlmIChlID4gMCkKKyAgICAgICAgICAgICAgICBWYWwgPSBwb3coZSwgUGFyYW1zWzBdKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBWYWwgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFZhbCA9IFIgKiBQYXJhbXNbM107CisgICAgICAgIGJyZWFrOworCisgICAgLy8gVHlwZSA0IHJldmVyc2VkCisgICAgLy8gWD0oKFleMS9nLWIpL2EpICAgIHwgWSA+PSAoYWQrYileZworICAgIC8vIFg9WS9jICAgICAgICAgICAgICB8IFk8IChhZCtiKV5nCisgICAgY2FzZSAtNDoKKyAgICAgICAgZSA9IFBhcmFtc1sxXSAqIFBhcmFtc1s0XSArIFBhcmFtc1syXTsKKyAgICAgICAgaWYgKGUgPCAwKQorICAgICAgICAgICAgZGlzYyA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRpc2MgPSBwb3coZSwgUGFyYW1zWzBdKTsKKworICAgICAgICBpZiAoUiA+PSBkaXNjKSB7CisKKyAgICAgICAgICAgIFZhbCA9IChwb3coUiwgMS4wL1BhcmFtc1swXSkgLSBQYXJhbXNbMl0pIC8gUGFyYW1zWzFdOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVmFsID0gUiAvIFBhcmFtc1szXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworCisgICAgLy8gWSA9IChhWCArIGIpXkdhbW1hICsgZSB8IFggPj0gZAorICAgIC8vIFkgPSBjWCArIGYgICAgICAgICAgICAgfCBYIDwgZAorICAgIGNhc2UgNToKKyAgICAgICAgaWYgKFIgPj0gUGFyYW1zWzRdKSB7CisKKyAgICAgICAgICAgIGUgPSBQYXJhbXNbMV0qUiArIFBhcmFtc1syXTsKKworICAgICAgICAgICAgaWYgKGUgPiAwKQorICAgICAgICAgICAgICAgIFZhbCA9IHBvdyhlLCBQYXJhbXNbMF0pICsgUGFyYW1zWzVdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFZhbCA9IFBhcmFtc1s1XTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBWYWwgPSBSKlBhcmFtc1szXSArIFBhcmFtc1s2XTsKKyAgICAgICAgYnJlYWs7CisKKworICAgIC8vIFJldmVyc2VkIHR5cGUgNQorICAgIC8vIFg9KChZLWUpMS9nLWIpL2EgICB8IFkgPj0oYWQrYileZytlKSwgY2QrZgorICAgIC8vIFg9KFktZikvYyAgICAgICAgICB8IGVsc2UKKyAgICBjYXNlIC01OgorCisgICAgICAgIGRpc2MgPSBQYXJhbXNbM10gKiBQYXJhbXNbNF0gKyBQYXJhbXNbNl07CisgICAgICAgIGlmIChSID49IGRpc2MpIHsKKworICAgICAgICAgICAgZSA9IFIgLSBQYXJhbXNbNV07CisgICAgICAgICAgICBpZiAoZSA8IDApCisgICAgICAgICAgICAgICAgVmFsID0gMDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBWYWwgPSAocG93KGUsIDEuMC9QYXJhbXNbMF0pIC0gUGFyYW1zWzJdKSAvIFBhcmFtc1sxXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZhbCA9IChSIC0gUGFyYW1zWzZdKSAvIFBhcmFtc1szXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworCisgICAgLy8gVHlwZXMgNiw3LDggY29tZXMgZnJvbSBzZWdtZW50ZWQgY3VydmVzIGFzIGRlc2NyaWJlZCBpbiBJQ0NTcGVjUmV2aXNpb25fMDJfMTFfMDZfRmxvYXQucGRmCisgICAgLy8gVHlwZSA2IGlzIGJhc2ljYWxseSBpZGVudGljYWwgdG8gdHlwZSA1IHdpdGhvdXQgZAorCisgICAgLy8gWSA9IChhICogWCArIGIpIF4gR2FtbWEgKyBjCisgICAgY2FzZSA2OgorICAgICAgICBlID0gUGFyYW1zWzFdKlIgKyBQYXJhbXNbMl07CisKKyAgICAgICAgaWYgKGUgPCAwKQorICAgICAgICAgICAgVmFsID0gUGFyYW1zWzNdOworICAgICAgICBlbHNlCisgICAgICAgICAgICBWYWwgPSBwb3coZSwgUGFyYW1zWzBdKSArIFBhcmFtc1szXTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvLyAoKFkgLSBjKSBeMS9HYW1tYSAtIGIpIC8gYQorICAgIGNhc2UgLTY6CisgICAgICAgIGUgPSBSIC0gUGFyYW1zWzNdOworICAgICAgICBpZiAoZSA8IDApCisgICAgICAgICAgICBWYWwgPSAwOworICAgICAgICBlbHNlCisgICAgICAgIFZhbCA9IChwb3coZSwgMS4wL1BhcmFtc1swXSkgLSBQYXJhbXNbMl0pIC8gUGFyYW1zWzFdOworICAgICAgICBicmVhazsKKworCisgICAgLy8gWSA9IGEgKiBsb2cgKGIgKiBYXkdhbW1hICsgYykgKyBkCisgICAgY2FzZSA3OgorCisgICAgICAgZSA9IFBhcmFtc1syXSAqIHBvdyhSLCBQYXJhbXNbMF0pICsgUGFyYW1zWzNdOworICAgICAgIGlmIChlIDw9IDApCisgICAgICAgICAgIFZhbCA9IFBhcmFtc1s0XTsKKyAgICAgICBlbHNlCisgICAgICAgICAgIFZhbCA9IFBhcmFtc1sxXSpsb2cxMChlKSArIFBhcmFtc1s0XTsKKyAgICAgICBicmVhazsKKworICAgIC8vIChZIC0gZCkgLyBhID0gbG9nKGIgKiBYIF5HYW1tYSArIGMpCisgICAgLy8gcG93KDEwLCAoWS1kKSAvIGEpID0gYiAqIFggXkdhbW1hICsgYworICAgIC8vIHBvdygocG93KDEwLCAoWS1kKSAvIGEpIC0gYykgLyBiLCAxL2cpID0gWAorICAgIGNhc2UgLTc6CisgICAgICAgVmFsID0gcG93KChwb3coMTAuMCwgKFItUGFyYW1zWzRdKSAvIFBhcmFtc1sxXSkgLSBQYXJhbXNbM10pIC8gUGFyYW1zWzJdLCAxLjAgLyBQYXJhbXNbMF0pOworICAgICAgIGJyZWFrOworCisKKyAgIC8vWSA9IGEgKiBiXihjKlgrZCkgKyBlCisgICBjYXNlIDg6CisgICAgICAgVmFsID0gKFBhcmFtc1swXSAqIHBvdyhQYXJhbXNbMV0sIFBhcmFtc1syXSAqIFIgKyBQYXJhbXNbM10pICsgUGFyYW1zWzRdKTsKKyAgICAgICBicmVhazsKKworCisgICAvLyBZID0gKGxvZygoeS1lKSAvIGEpIC8gbG9nKGIpIC0gZCApIC8gYworICAgLy8gYT0wLCBiPTEsIGM9MiwgZD0zLCBlPTQsCisgICBjYXNlIC04OgorCisgICAgICAgZGlzYyA9IFIgLSBQYXJhbXNbNF07CisgICAgICAgaWYgKGRpc2MgPCAwKSBWYWwgPSAwOworICAgICAgIGVsc2UKKyAgICAgICAgICAgVmFsID0gKGxvZyhkaXNjIC8gUGFyYW1zWzBdKSAvIGxvZyhQYXJhbXNbMV0pIC0gUGFyYW1zWzNdKSAvIFBhcmFtc1syXTsKKyAgICAgICBicmVhazsKKworICAgLy8gUy1TaGFwZWQ6ICgxIC0gKDEteCleMS9nKV4xL2cKKyAgIGNhc2UgMTA4OgorICAgICAgVmFsID0gcG93KDEuMCAtIHBvdygxIC0gUiwgMS9QYXJhbXNbMF0pLCAxL1BhcmFtc1swXSk7CisgICAgICBicmVhazsKKworICAgIC8vIHkgPSAoMSAtICgxLXgpXjEvZyleMS9nCisgICAgLy8geV5nID0gKDEgLSAoMS14KV4xL2cpCisgICAgLy8gMSAtIHleZyA9ICgxLXgpXjEvZworICAgIC8vICgxIC0geV5nKV5nID0gMSAtIHgKKyAgICAvLyAxIC0gKDEgLSB5XmcpXmcKKyAgICBjYXNlIC0xMDg6CisgICAgICAgIFZhbCA9IDEgLSBwb3coMSAtIHBvdyhSLCBQYXJhbXNbMF0pLCBQYXJhbXNbMF0pOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFVuc3VwcG9ydGVkIHBhcmFtZXRyaWMgY3VydmUuIFNob3VsZCBuZXZlciByZWFjaCBoZXJlCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBWYWw7Cit9CisKKy8vIEV2YWx1YXRlIGEgc2VnbWVudGVkIGZ1bnRpb24gZm9yIGEgc2luZ2xlIHZhbHVlLiBSZXR1cm4gLTEgaWYgbm8gdmFsaWQgc2VnbWVudCBmb3VuZCAuCisvLyBJZiBmbiB0eXBlIGlzIDAsIHBlcmZvcm0gYW4gaW50ZXJwb2xhdGlvbiBvbiB0aGUgdGFibGUKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBFdmFsU2VnbWVudGVkRm4oY29uc3QgY21zVG9uZUN1cnZlICpnLCBjbXNGbG9hdDY0TnVtYmVyIFIpCit7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSBnIC0+blNlZ21lbnRzLTE7IGkgPj0gMCA7IC0taSkgeworCisgICAgICAgIC8vIENoZWNrIGZvciBkb21haW4KKyAgICAgICAgaWYgKChSID4gZyAtPlNlZ21lbnRzW2ldLngwKSAmJiAoUiA8PSBnIC0+U2VnbWVudHNbaV0ueDEpKSB7CisKKyAgICAgICAgICAgIC8vIFR5cGUgPT0gMCBtZWFucyBzZWdtZW50IGlzIHNhbXBsZWQKKyAgICAgICAgICAgIGlmIChnIC0+U2VnbWVudHNbaV0uVHlwZSA9PSAwKSB7CisKKyAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIFIxID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChSIC0gZyAtPlNlZ21lbnRzW2ldLngwKSAvIChnIC0+U2VnbWVudHNbaV0ueDEgLSBnIC0+U2VnbWVudHNbaV0ueDApOworICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0OworCisgICAgICAgICAgICAgICAgLy8gU2V0dXAgdGhlIHRhYmxlIChUT0RPOiBjbGVhbiB0aGF0KQorICAgICAgICAgICAgICAgIGcgLT5TZWdJbnRlcnBbaV0tPiBUYWJsZSA9IGcgLT5TZWdtZW50c1tpXS5TYW1wbGVkUG9pbnRzOworCisgICAgICAgICAgICAgICAgZyAtPlNlZ0ludGVycFtpXSAtPiBJbnRlcnBvbGF0aW9uLkxlcnBGbG9hdCgmUjEsICZPdXQsIGcgLT5TZWdJbnRlcnBbaV0pOworCisgICAgICAgICAgICAgICAgcmV0dXJuIE91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZyAtPkV2YWxzW2ldKGctPlNlZ21lbnRzW2ldLlR5cGUsIGcgLT5TZWdtZW50c1tpXS5QYXJhbXMsIFIpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE1JTlVTX0lORjsKK30KKworLy8gQWNjZXNzIHRvIGVzdGltYXRlZCBsb3ctcmVzIHRhYmxlCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0dldFRvbmVDdXJ2ZUVzdGltYXRlZFRhYmxlRW50cmllcyhjb25zdCBjbXNUb25lQ3VydmUqIHQpCit7CisgICAgX2Ntc0Fzc2VydCh0ICE9IE5VTEwpOworICAgIHJldHVybiB0IC0+bkVudHJpZXM7Cit9CisKK2NvbnN0IGNtc1VJbnQxNk51bWJlciogQ01TRVhQT1JUIGNtc0dldFRvbmVDdXJ2ZUVzdGltYXRlZFRhYmxlKGNvbnN0IGNtc1RvbmVDdXJ2ZSogdCkKK3sKKyAgICBfY21zQXNzZXJ0KHQgIT0gTlVMTCk7CisgICAgcmV0dXJuIHQgLT5UYWJsZTE2OworfQorCisKKy8vIENyZWF0ZSBhbiBlbXB0eSBnYW1tYSBjdXJ2ZSwgYnkgdXNpbmcgdGFibGVzLiBUaGlzIHNwZWNpZmllcyBvbmx5IHRoZSBsaW1pdGVkLXByZWNpc2lvbiBwYXJ0LCBhbmQgbGVhdmVzIHRoZQorLy8gZmxvYXRpbmcgcG9pbnQgZGVzY3JpcHRpb24gZW1wdHkuCitjbXNUb25lQ3VydmUqIENNU0VYUE9SVCBjbXNCdWlsZFRhYnVsYXRlZFRvbmVDdXJ2ZTE2KGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNJbnQzMk51bWJlciBuRW50cmllcywgY29uc3QgY21zVUludDE2TnVtYmVyIFZhbHVlc1tdKQoreworICAgIHJldHVybiBBbGxvY2F0ZVRvbmVDdXJ2ZVN0cnVjdChDb250ZXh0SUQsIG5FbnRyaWVzLCAwLCBOVUxMLCBWYWx1ZXMpOworfQorCitzdGF0aWMKK2ludCBFbnRyaWVzQnlHYW1tYShjbXNGbG9hdDY0TnVtYmVyIEdhbW1hKQoreworICAgIGlmIChmYWJzKEdhbW1hIC0gMS4wKSA8IDAuMDAxKSByZXR1cm4gMjsKKyAgICByZXR1cm4gNDA5NjsKK30KKworCisvLyBDcmVhdGUgYSBzZWdtZW50ZWQgZ2FtbWEsIGZpbGwgdGhlIHRhYmxlCitjbXNUb25lQ3VydmUqIENNU0VYUE9SVCBjbXNCdWlsZFNlZ21lbnRlZFRvbmVDdXJ2ZShjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0ludDMyTnVtYmVyIG5TZWdtZW50cywgY29uc3QgY21zQ3VydmVTZWdtZW50IFNlZ21lbnRzW10pCit7CisgICAgaW50IGk7CisgICAgY21zRmxvYXQ2NE51bWJlciBSLCBWYWw7CisgICAgY21zVG9uZUN1cnZlKiBnOworICAgIGludCBuR3JpZFBvaW50cyA9IDQwOTY7CisKKyAgICBfY21zQXNzZXJ0KFNlZ21lbnRzICE9IE5VTEwpOworCisgICAgLy8gT3B0aW1pemF0aW4gZm9yIGlkZW50aXR5IGN1cnZlcy4KKyAgICBpZiAoblNlZ21lbnRzID09IDEgJiYgU2VnbWVudHNbMF0uVHlwZSA9PSAxKSB7CisKKyAgICAgICAgbkdyaWRQb2ludHMgPSBFbnRyaWVzQnlHYW1tYShTZWdtZW50c1swXS5QYXJhbXNbMF0pOworICAgIH0KKworICAgIGcgPSBBbGxvY2F0ZVRvbmVDdXJ2ZVN0cnVjdChDb250ZXh0SUQsIG5HcmlkUG9pbnRzLCBuU2VnbWVudHMsIFNlZ21lbnRzLCBOVUxMKTsKKyAgICBpZiAoZyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIC8vIE9uY2Ugd2UgaGF2ZSB0aGUgZmxvYXRpbmcgcG9pbnQgdmVyc2lvbiwgd2UgY2FuIGFwcHJveGltYXRlIGEgMTYgYml0IHRhYmxlIG9mIDQwOTYgZW50cmllcworICAgIC8vIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBUaGlzIHRhYmxlIHdvdWxkIG5vcm1hbGx5IG5vdCBiZSB1c2VkIGV4Y2VwdCBvbiA4LzE2IGJpdHMgdHJhbnNmb3Jtcy4KKyAgICBmb3IgKGk9MDsgaSA8IG5HcmlkUG9pbnRzOyBpKyspIHsKKworICAgICAgICBSICAgPSAoY21zRmxvYXQ2NE51bWJlcikgaSAvIChuR3JpZFBvaW50cy0xKTsKKworICAgICAgICBWYWwgPSBFdmFsU2VnbWVudGVkRm4oZywgUik7CisKKyAgICAgICAgLy8gUm91bmQgYW5kIHNhdHVyYXRlCisgICAgICAgIGcgLT5UYWJsZTE2W2ldID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKFZhbCAqIDY1NTM1LjApOworICAgIH0KKworICAgIHJldHVybiBnOworfQorCisvLyBVc2UgYSBzZWdtZW50ZWQgY3VydmUgdG8gc3RvcmUgdGhlIGZsb2F0aW5nIHBvaW50IHRhYmxlCitjbXNUb25lQ3VydmUqIENNU0VYUE9SVCBjbXNCdWlsZFRhYnVsYXRlZFRvbmVDdXJ2ZUZsb2F0KGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgbkVudHJpZXMsIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgdmFsdWVzW10pCit7CisgICAgY21zQ3VydmVTZWdtZW50IFNlZ1szXTsKKworICAgIC8vIEEgc2VnbWVudGVkIHRvbmUgY3VydmUgc2hvdWxkIGhhdmUgZnVuY3Rpb24gc2VnbWVudHMgaW4gdGhlIGZpcnN0IGFuZCBsYXN0IHBvc2l0aW9ucworICAgIC8vIEluaXRpYWxpemUgc2VnbWVudGVkIGN1cnZlIHBhcnQgdXAgdG8gMCB0byBjb25zdGFudCB2YWx1ZSA9IHNhbXBsZXNbMF0KKyAgICBTZWdbMF0ueDAgPSBNSU5VU19JTkY7CisgICAgU2VnWzBdLngxID0gMDsKKyAgICBTZWdbMF0uVHlwZSA9IDY7CisKKyAgICBTZWdbMF0uUGFyYW1zWzBdID0gMTsKKyAgICBTZWdbMF0uUGFyYW1zWzFdID0gMDsKKyAgICBTZWdbMF0uUGFyYW1zWzJdID0gMDsKKyAgICBTZWdbMF0uUGFyYW1zWzNdID0gdmFsdWVzWzBdOworICAgIFNlZ1swXS5QYXJhbXNbNF0gPSAwOworCisgICAgLy8gRnJvbSB6ZXJvIHRvIDEKKyAgICBTZWdbMV0ueDAgPSAwOworICAgIFNlZ1sxXS54MSA9IDEuMDsKKyAgICBTZWdbMV0uVHlwZSA9IDA7CisKKyAgICBTZWdbMV0ubkdyaWRQb2ludHMgPSBuRW50cmllczsKKyAgICBTZWdbMV0uU2FtcGxlZFBvaW50cyA9IChjbXNGbG9hdDMyTnVtYmVyKikgdmFsdWVzOworCisgICAgLy8gRmluYWwgc2VnbWVudCBpcyBjb25zdGFudCA9IGxhc3RzYW1wbGUKKyAgICBTZWdbMl0ueDAgPSAxLjA7CisgICAgU2VnWzJdLngxID0gUExVU19JTkY7CisgICAgU2VnWzJdLlR5cGUgPSA2OworICAgIAorICAgIFNlZ1syXS5QYXJhbXNbMF0gPSAxOworICAgIFNlZ1syXS5QYXJhbXNbMV0gPSAwOworICAgIFNlZ1syXS5QYXJhbXNbMl0gPSAwOworICAgIFNlZ1syXS5QYXJhbXNbM10gPSB2YWx1ZXNbbkVudHJpZXMtMV07CisgICAgU2VnWzJdLlBhcmFtc1s0XSA9IDA7CisgICAgCisKKyAgICByZXR1cm4gY21zQnVpbGRTZWdtZW50ZWRUb25lQ3VydmUoQ29udGV4dElELCAzLCBTZWcpOworfQorCisvLyBQYXJhbWV0cmljIGN1cnZlcworLy8KKy8vIFBhcmFtZXRlcnMgZ29lcyBhczogQ3VydmUsIGEsIGIsIGMsIGQsIGUsIGYKKy8vIFR5cGUgaXMgdGhlIElDQyB0eXBlICsxCisvLyBpZiB0eXBlIGlzIG5lZ2F0aXZlLCB0aGVuIHRoZSBjdXJ2ZSBpcyBhbmFseXRpY2FseSBpbnZlcnRlZAorY21zVG9uZUN1cnZlKiBDTVNFWFBPUlQgY21zQnVpbGRQYXJhbWV0cmljVG9uZUN1cnZlKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNJbnQzMk51bWJlciBUeXBlLCBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIFBhcmFtc1tdKQoreworICAgIGNtc0N1cnZlU2VnbWVudCBTZWcwOworICAgIGludCBQb3MgPSAwOworICAgIGNtc1VJbnQzMk51bWJlciBzaXplOworICAgIF9jbXNQYXJhbWV0cmljQ3VydmVzQ29sbGVjdGlvbiogYyA9IEdldFBhcmFtZXRyaWNDdXJ2ZUJ5VHlwZShDb250ZXh0SUQsIFR5cGUsICZQb3MpOworCisgICAgX2Ntc0Fzc2VydChQYXJhbXMgIT0gTlVMTCk7CisKKyAgICBpZiAoYyA9PSBOVUxMKSB7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKENvbnRleHRJRCwgY21zRVJST1JfVU5LTk9XTl9FWFRFTlNJT04sICJJbnZhbGlkIHBhcmFtZXRyaWMgY3VydmUgdHlwZSAlZCIsIFR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1zZXQoJlNlZzAsIDAsIHNpemVvZihTZWcwKSk7CisKKyAgICBTZWcwLngwICAgPSBNSU5VU19JTkY7CisgICAgU2VnMC54MSAgID0gUExVU19JTkY7CisgICAgU2VnMC5UeXBlID0gVHlwZTsKKworICAgIHNpemUgPSBjLT5QYXJhbWV0ZXJDb3VudFtQb3NdICogc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpOworICAgIG1lbW1vdmUoU2VnMC5QYXJhbXMsIFBhcmFtcywgc2l6ZSk7CisKKyAgICByZXR1cm4gY21zQnVpbGRTZWdtZW50ZWRUb25lQ3VydmUoQ29udGV4dElELCAxLCAmU2VnMCk7Cit9CisKKworCisvLyBCdWlsZCBhIGdhbW1hIHRhYmxlIGJhc2VkIG9uIGdhbW1hIGNvbnN0YW50CitjbXNUb25lQ3VydmUqIENNU0VYUE9SVCBjbXNCdWlsZEdhbW1hKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNGbG9hdDY0TnVtYmVyIEdhbW1hKQoreworICAgIHJldHVybiBjbXNCdWlsZFBhcmFtZXRyaWNUb25lQ3VydmUoQ29udGV4dElELCAxLCAmR2FtbWEpOworfQorCisKKy8vIEZyZWUgYWxsIG1lbW9yeSB0YWtlbiBieSB0aGUgZ2FtbWEgY3VydmUKK3ZvaWQgQ01TRVhQT1JUIGNtc0ZyZWVUb25lQ3VydmUoY21zVG9uZUN1cnZlKiBDdXJ2ZSkKK3sKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRDsKKworCS8vIGFkZGVkIGJ5IFhpYW9jaHVhbiBMaXUKKwkvLyBDdXJ2ZS0+SW50ZXJwUGFyYW1zIG1heSBiZSBudWxsCisgICAgaWYgKEN1cnZlID09IE5VTEwgfHwgQ3VydmUtPkludGVycFBhcmFtcyA9PSBOVUxMKSByZXR1cm47CisKKyAgICBDb250ZXh0SUQgPSBDdXJ2ZSAtPkludGVycFBhcmFtcy0+Q29udGV4dElEOworCisgICAgX2Ntc0ZyZWVJbnRlcnBQYXJhbXMoQ3VydmUgLT5JbnRlcnBQYXJhbXMpOworCUN1cnZlIC0+SW50ZXJwUGFyYW1zID0gTlVMTDsKKworICAgIGlmIChDdXJ2ZSAtPiBUYWJsZTE2KQorCXsKKyAgICAgICAgX2Ntc0ZyZWUoQ29udGV4dElELCBDdXJ2ZSAtPlRhYmxlMTYpOworCQlDdXJ2ZSAtPlRhYmxlMTYgPSBOVUxMOworCX0KKworICAgIGlmIChDdXJ2ZSAtPlNlZ21lbnRzKSB7CisKKyAgICAgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICAgICAgZm9yIChpPTA7IGkgPCBDdXJ2ZSAtPm5TZWdtZW50czsgaSsrKSB7CisKKyAgICAgICAgICAgIGlmIChDdXJ2ZSAtPlNlZ21lbnRzW2ldLlNhbXBsZWRQb2ludHMpIHsKKyAgICAgICAgICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIEN1cnZlIC0+U2VnbWVudHNbaV0uU2FtcGxlZFBvaW50cyk7CisJCQkJQ3VydmUgLT5TZWdtZW50c1tpXS5TYW1wbGVkUG9pbnRzID0gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKEN1cnZlIC0+U2VnSW50ZXJwW2ldICE9IDApCisJCQl7CisgICAgICAgICAgICAgICAgX2Ntc0ZyZWVJbnRlcnBQYXJhbXMoQ3VydmUtPlNlZ0ludGVycFtpXSk7CisJCQkJQ3VydmUtPlNlZ0ludGVycFtpXSA9IE5VTEw7CisJCQl9CisgICAgICAgIH0KKworICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIEN1cnZlIC0+U2VnbWVudHMpOworCQlDdXJ2ZSAtPlNlZ21lbnRzID0gTlVMTDsKKyAgICAgICAgX2Ntc0ZyZWUoQ29udGV4dElELCBDdXJ2ZSAtPlNlZ0ludGVycCk7CisJCUN1cnZlIC0+U2VnSW50ZXJwID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoQ3VydmUgLT4gRXZhbHMpCisJeworICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIEN1cnZlIC0+IEV2YWxzKTsKKwkJQ3VydmUgLT4gRXZhbHMgPSBOVUxMOworCX0KKworICAgIGlmIChDdXJ2ZSkKKwl7CisJCV9jbXNGcmVlKENvbnRleHRJRCwgQ3VydmUpOworCQlDdXJ2ZSA9IE5VTEw7CisJfQorfQorCisvLyBVdGlsaXR5IGZ1bmN0aW9uLCBmcmVlIDMgZ2FtbWEgdGFibGVzCit2b2lkIENNU0VYUE9SVCBjbXNGcmVlVG9uZUN1cnZlVHJpcGxlKGNtc1RvbmVDdXJ2ZSogQ3VydmVbM10pCit7CisKKyAgICBfY21zQXNzZXJ0KEN1cnZlICE9IE5VTEwpOworCisgICAgaWYgKEN1cnZlWzBdICE9IE5VTEwpIGNtc0ZyZWVUb25lQ3VydmUoQ3VydmVbMF0pOworICAgIGlmIChDdXJ2ZVsxXSAhPSBOVUxMKSBjbXNGcmVlVG9uZUN1cnZlKEN1cnZlWzFdKTsKKyAgICBpZiAoQ3VydmVbMl0gIT0gTlVMTCkgY21zRnJlZVRvbmVDdXJ2ZShDdXJ2ZVsyXSk7CisKKyAgICBDdXJ2ZVswXSA9IEN1cnZlWzFdID0gQ3VydmVbMl0gPSBOVUxMOworfQorCisKKy8vIER1cGxpY2F0ZSBhIGdhbW1hIHRhYmxlCitjbXNUb25lQ3VydmUqIENNU0VYUE9SVCBjbXNEdXBUb25lQ3VydmUoY29uc3QgY21zVG9uZUN1cnZlKiBJbikKK3sgICAKKwkvLyBYaWFvY2h1YW4gTGl1CisJLy8gZml4IG9wZW5wZGYgYnVnKG1hbnRpcyBpZDowMDU1NjgzLCBnb29nbGUgaWQ6MzYwMTk4KQorCS8vIHRoZSBmdW5jdGlvbiBDdXJ2ZVNldEVsZW1UeXBlRnJlZSBpbiBjbXNsdXQuYyBhbHNvIG5lZWRzIHRvIGNoZWNrIHBvaW50ZXIKKyAgICBpZiAoSW4gPT0gTlVMTCB8fCBJbiAtPkludGVycFBhcmFtcyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiAgQWxsb2NhdGVUb25lQ3VydmVTdHJ1Y3QoSW4gLT5JbnRlcnBQYXJhbXMgLT5Db250ZXh0SUQsIEluIC0+bkVudHJpZXMsIEluIC0+blNlZ21lbnRzLCBJbiAtPlNlZ21lbnRzLCBJbiAtPlRhYmxlMTYpOworfQorCisvLyBKb2lucyB0d28gY3VydmVzIGZvciBYIGFuZCBZLiBDdXJ2ZXMgc2hvdWxkIGJlIG1vbm90b25pYy4KKy8vIFdlIHdhbnQgdG8gZ2V0CisvLworLy8gICAgICB5ID0gWV4tMShYKHQpKQorLy8KK2Ntc1RvbmVDdXJ2ZSogQ01TRVhQT1JUIGNtc0pvaW5Ub25lQ3VydmUoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1RvbmVDdXJ2ZSogWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zVG9uZUN1cnZlKiBZLCBjbXNVSW50MzJOdW1iZXIgblJlc3VsdGluZ1BvaW50cykKK3sKKyAgICBjbXNUb25lQ3VydmUqIG91dCA9IE5VTEw7CisgICAgY21zVG9uZUN1cnZlKiBZcmV2ZXJzZWQgPSBOVUxMOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgdCwgeDsKKyAgICBjbXNGbG9hdDMyTnVtYmVyKiBSZXMgPSBOVUxMOworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisKKyAgICBfY21zQXNzZXJ0KFggIT0gTlVMTCk7CisgICAgX2Ntc0Fzc2VydChZICE9IE5VTEwpOworCisgICAgWXJldmVyc2VkID0gY21zUmV2ZXJzZVRvbmVDdXJ2ZUV4KG5SZXN1bHRpbmdQb2ludHMsIFkpOworICAgIGlmIChZcmV2ZXJzZWQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIFJlcyA9IChjbXNGbG9hdDMyTnVtYmVyKikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIG5SZXN1bHRpbmdQb2ludHMsIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKSk7CisgICAgaWYgKFJlcyA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgLy9JdGVyYXRlCisgICAgZm9yIChpPTA7IGkgPCAgblJlc3VsdGluZ1BvaW50czsgaSsrKSB7CisKKyAgICAgICAgdCA9IChjbXNGbG9hdDMyTnVtYmVyKSBpIC8gKG5SZXN1bHRpbmdQb2ludHMtMSk7CisgICAgICAgIHggPSBjbXNFdmFsVG9uZUN1cnZlRmxvYXQoWCwgIHQpOworICAgICAgICBSZXNbaV0gPSBjbXNFdmFsVG9uZUN1cnZlRmxvYXQoWXJldmVyc2VkLCB4KTsKKyAgICB9CisKKyAgICAvLyBBbGxvY2F0ZSBzcGFjZSBmb3Igb3V0cHV0CisgICAgb3V0ID0gY21zQnVpbGRUYWJ1bGF0ZWRUb25lQ3VydmVGbG9hdChDb250ZXh0SUQsIG5SZXN1bHRpbmdQb2ludHMsIFJlcyk7CisKK0Vycm9yOgorCisgICAgaWYgKFJlcyAhPSBOVUxMKSBfY21zRnJlZShDb250ZXh0SUQsIFJlcyk7CisgICAgaWYgKFlyZXZlcnNlZCAhPSBOVUxMKSBjbXNGcmVlVG9uZUN1cnZlKFlyZXZlcnNlZCk7CisKKyAgICByZXR1cm4gb3V0OworfQorCisKKworLy8gR2V0IHRoZSBzdXJyb3VuZGluZyBub2Rlcy4gVGhpcyBpcyB0cmlja3kgb24gbm9uLW1vbm90b25pYyB0YWJsZXMKK3N0YXRpYworaW50IEdldEludGVydmFsKGNtc0Zsb2F0NjROdW1iZXIgSW4sIGNvbnN0IGNtc1VJbnQxNk51bWJlciBMdXRUYWJsZVtdLCBjb25zdCBzdHJ1Y3QgX2Ntc19pbnRlcnBfc3RydWMqIHApCit7CisgICAgaW50IGk7CisgICAgaW50IHkwLCB5MTsKKworICAgIC8vIEEgMSBwb2ludCB0YWJsZSBpcyBub3QgYWxsb3dlZAorICAgIGlmIChwIC0+IERvbWFpblswXSA8IDEpIHJldHVybiAtMTsKKworICAgIC8vIExldCdzIHNlZSBpZiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZy4KKyAgICBpZiAoTHV0VGFibGVbMF0gPCBMdXRUYWJsZVtwIC0+RG9tYWluWzBdXSkgeworCisgICAgICAgIC8vIFRhYmxlIGlzIG92ZXJhbGwgYXNjZW5kaW5nCisgICAgICAgIGZvciAoaT1wLT5Eb21haW5bMF0tMTsgaSA+PTA7IC0taSkgeworCisgICAgICAgICAgICB5MCA9IEx1dFRhYmxlW2ldOworICAgICAgICAgICAgeTEgPSBMdXRUYWJsZVtpKzFdOworCisgICAgICAgICAgICBpZiAoeTAgPD0geTEpIHsgLy8gSW5jcmVhc2luZworICAgICAgICAgICAgICAgIGlmIChJbiA+PSB5MCAmJiBJbiA8PSB5MSkgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKHkxIDwgeTApIHsgLy8gRGVjcmVhc2luZworICAgICAgICAgICAgICAgICAgICBpZiAoSW4gPj0geTEgJiYgSW4gPD0geTApIHJldHVybiBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLy8gVGFibGUgaXMgb3ZlcmFsbCBkZXNjZW5kaW5nCisgICAgICAgIGZvciAoaT0wOyBpIDwgKGludCkgcCAtPiBEb21haW5bMF07IGkrKykgeworCisgICAgICAgICAgICB5MCA9IEx1dFRhYmxlW2ldOworICAgICAgICAgICAgeTEgPSBMdXRUYWJsZVtpKzFdOworCisgICAgICAgICAgICBpZiAoeTAgPD0geTEpIHsgLy8gSW5jcmVhc2luZworICAgICAgICAgICAgICAgIGlmIChJbiA+PSB5MCAmJiBJbiA8PSB5MSkgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKHkxIDwgeTApIHsgLy8gRGVjcmVhc2luZworICAgICAgICAgICAgICAgICAgICBpZiAoSW4gPj0geTEgJiYgSW4gPD0geTApIHJldHVybiBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworLy8gUmV2ZXJzZSBhIGdhbW1hIHRhYmxlCitjbXNUb25lQ3VydmUqIENNU0VYUE9SVCBjbXNSZXZlcnNlVG9uZUN1cnZlRXgoY21zSW50MzJOdW1iZXIgblJlc3VsdFNhbXBsZXMsIGNvbnN0IGNtc1RvbmVDdXJ2ZSogSW5DdXJ2ZSkKK3sKKyAgICBjbXNUb25lQ3VydmUgKm91dDsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGEgPSAwLCBiID0gMCwgeSwgeDEsIHkxLCB4MiwgeTI7CisgICAgaW50IGksIGo7CisgICAgaW50IEFzY2VuZGluZzsKKworICAgIF9jbXNBc3NlcnQoSW5DdXJ2ZSAhPSBOVUxMKTsKKworICAgIC8vIFRyeSB0byByZXZlcnNlIGl0IGFuYWx5dGljYWxseSB3aGF0ZXZlciBwb3NzaWJsZQorIAorICAgIGlmIChJbkN1cnZlIC0+blNlZ21lbnRzID09IDEgJiYgSW5DdXJ2ZSAtPlNlZ21lbnRzWzBdLlR5cGUgPiAwICYmIAorICAgICAgICAvKiBJbkN1cnZlIC0+IFNlZ21lbnRzWzBdLlR5cGUgPD0gNSAqLyAKKyAgICAgICAgR2V0UGFyYW1ldHJpY0N1cnZlQnlUeXBlKEluQ3VydmUgLT5JbnRlcnBQYXJhbXMtPkNvbnRleHRJRCwgSW5DdXJ2ZSAtPlNlZ21lbnRzWzBdLlR5cGUsIE5VTEwpICE9IE5VTEwpIHsKKworICAgICAgICByZXR1cm4gY21zQnVpbGRQYXJhbWV0cmljVG9uZUN1cnZlKEluQ3VydmUgLT5JbnRlcnBQYXJhbXMtPkNvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0oSW5DdXJ2ZSAtPiBTZWdtZW50c1swXS5UeXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluQ3VydmUgLT4gU2VnbWVudHNbMF0uUGFyYW1zKTsKKyAgICB9CisKKyAgICAvLyBOb3BlLCByZXZlcnNlIHRoZSB0YWJsZS4KKyAgICBvdXQgPSBjbXNCdWlsZFRhYnVsYXRlZFRvbmVDdXJ2ZTE2KEluQ3VydmUgLT5JbnRlcnBQYXJhbXMtPkNvbnRleHRJRCwgblJlc3VsdFNhbXBsZXMsIE5VTEwpOworICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvLyBXZSB3YW50IHRvIGtub3cgaWYgdGhpcyBpcyBhbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyB0YWJsZQorICAgIEFzY2VuZGluZyA9ICFjbXNJc1RvbmVDdXJ2ZURlc2NlbmRpbmcoSW5DdXJ2ZSk7CisKKyAgICAvLyBJdGVyYXRlIGFjcm9zcyBZIGF4aXMKKyAgICBmb3IgKGk9MDsgaSA8ICBuUmVzdWx0U2FtcGxlczsgaSsrKSB7CisKKyAgICAgICAgeSA9IChjbXNGbG9hdDY0TnVtYmVyKSBpICogNjU1MzUuMCAvIChuUmVzdWx0U2FtcGxlcyAtIDEpOworCisgICAgICAgIC8vIEZpbmQgaW50ZXJ2YWwgaW4gd2hpY2ggeSBpcyB3aXRoaW4uCisgICAgICAgIGogPSBHZXRJbnRlcnZhbCh5LCBJbkN1cnZlLT5UYWJsZTE2LCBJbkN1cnZlLT5JbnRlcnBQYXJhbXMpOworICAgICAgICBpZiAoaiA+PSAwKSB7CisKKworICAgICAgICAgICAgLy8gR2V0IGxpbWl0cyBvZiBpbnRlcnZhbAorICAgICAgICAgICAgeDEgPSBJbkN1cnZlIC0+VGFibGUxNltqXTsKKyAgICAgICAgICAgIHgyID0gSW5DdXJ2ZSAtPlRhYmxlMTZbaisxXTsKKworICAgICAgICAgICAgeTEgPSAoY21zRmxvYXQ2NE51bWJlcikgKGogKiA2NTUzNS4wKSAvIChJbkN1cnZlIC0+bkVudHJpZXMgLSAxKTsKKyAgICAgICAgICAgIHkyID0gKGNtc0Zsb2F0NjROdW1iZXIpICgoaisxKSAqIDY1NTM1LjAgKSAvIChJbkN1cnZlIC0+bkVudHJpZXMgLSAxKTsKKworICAgICAgICAgICAgLy8gSWYgY29sbGFwc2VkLCB0aGVuIHVzZSBhbnkKKyAgICAgICAgICAgIGlmICh4MSA9PSB4MikgeworCisgICAgICAgICAgICAgICAgb3V0IC0+VGFibGUxNltpXSA9IF9jbXNRdWlja1NhdHVyYXRlV29yZChBc2NlbmRpbmcgPyB5MiA6IHkxKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgICAgIC8vIEludGVycG9sYXRlCisgICAgICAgICAgICAgICAgYSA9ICh5MiAtIHkxKSAvICh4MiAtIHgxKTsKKyAgICAgICAgICAgICAgICBiID0geTIgLSBhICogeDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBvdXQgLT5UYWJsZTE2W2ldID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKGEqIHkgKyBiKTsKKyAgICB9CisKKworICAgIHJldHVybiBvdXQ7Cit9CisKKy8vIFJldmVyc2UgYSBnYW1tYSB0YWJsZQorY21zVG9uZUN1cnZlKiBDTVNFWFBPUlQgY21zUmV2ZXJzZVRvbmVDdXJ2ZShjb25zdCBjbXNUb25lQ3VydmUqIEluR2FtbWEpCit7CisgICAgX2Ntc0Fzc2VydChJbkdhbW1hICE9IE5VTEwpOworCisgICAgcmV0dXJuIGNtc1JldmVyc2VUb25lQ3VydmVFeCg0MDk2LCBJbkdhbW1hKTsKK30KKworLy8gRnJvbTogRWlsZXJzLCBQLkguQy4gKDE5OTQpIFNtb290aGluZyBhbmQgaW50ZXJwb2xhdGlvbiB3aXRoIGZpbml0ZQorLy8gZGlmZmVyZW5jZXMuIGluOiBHcmFwaGljIEdlbXMgSVYsIEhlY2tiZXJ0LCBQLlMuIChlZC4pLCBBY2FkZW1pYyBwcmVzcy4KKy8vCisvLyBTbW9vdGhpbmcgYW5kIGludGVycG9sYXRpb24gd2l0aCBzZWNvbmQgZGlmZmVyZW5jZXMuCisvLworLy8gICBJbnB1dDogIHdlaWdodHMgKHcpLCBkYXRhICh5KTogdmVjdG9yIGZyb20gMSB0byBtLgorLy8gICBJbnB1dDogIHNtb290aGluZyBwYXJhbWV0ZXIgKGxhbWJkYSksIGxlbmd0aCAobSkuCisvLyAgIE91dHB1dDogc21vb3RoZWQgdmVjdG9yICh6KTogdmVjdG9yIGZyb20gMSB0byBtLgorCitzdGF0aWMKK2Ntc0Jvb2wgc21vb3RoMihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zRmxvYXQzMk51bWJlciB3W10sIGNtc0Zsb2F0MzJOdW1iZXIgeVtdLCBjbXNGbG9hdDMyTnVtYmVyIHpbXSwgY21zRmxvYXQzMk51bWJlciBsYW1iZGEsIGludCBtKQoreworICAgIGludCBpLCBpMSwgaTI7CisgICAgY21zRmxvYXQzMk51bWJlciAqYywgKmQsICplOworICAgIGNtc0Jvb2wgc3Q7CisKKworICAgIGMgPSAoY21zRmxvYXQzMk51bWJlciopIF9jbXNDYWxsb2MoQ29udGV4dElELCBNQVhfTk9ERVNfSU5fQ1VSVkUsIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKSk7CisgICAgZCA9IChjbXNGbG9hdDMyTnVtYmVyKikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIE1BWF9OT0RFU19JTl9DVVJWRSwgc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKKyAgICBlID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBfY21zQ2FsbG9jKENvbnRleHRJRCwgTUFYX05PREVTX0lOX0NVUlZFLCBzaXplb2YoY21zRmxvYXQzMk51bWJlcikpOworCisgICAgaWYgKGMgIT0gTlVMTCAmJiBkICE9IE5VTEwgJiYgZSAhPSBOVUxMKSB7CisKKworICAgIGRbMV0gPSB3WzFdICsgbGFtYmRhOworICAgIGNbMV0gPSAtMiAqIGxhbWJkYSAvIGRbMV07CisgICAgZVsxXSA9IGxhbWJkYSAvZFsxXTsKKyAgICB6WzFdID0gd1sxXSAqIHlbMV07CisgICAgZFsyXSA9IHdbMl0gKyA1ICogbGFtYmRhIC0gZFsxXSAqIGNbMV0gKiAgY1sxXTsKKyAgICBjWzJdID0gKC00ICogbGFtYmRhIC0gZFsxXSAqIGNbMV0gKiBlWzFdKSAvIGRbMl07CisgICAgZVsyXSA9IGxhbWJkYSAvIGRbMl07CisgICAgelsyXSA9IHdbMl0gKiB5WzJdIC0gY1sxXSAqIHpbMV07CisKKyAgICBmb3IgKGkgPSAzOyBpIDwgbSAtIDE7IGkrKykgeworICAgICAgICBpMSA9IGkgLSAxOyBpMiA9IGkgLSAyOworICAgICAgICBkW2ldPSB3W2ldICsgNiAqIGxhbWJkYSAtIGNbaTFdICogY1tpMV0gKiBkW2kxXSAtIGVbaTJdICogZVtpMl0gKiBkW2kyXTsKKyAgICAgICAgY1tpXSA9ICgtNCAqIGxhbWJkYSAtZFtpMV0gKiBjW2kxXSAqIGVbaTFdKS8gZFtpXTsKKyAgICAgICAgZVtpXSA9IGxhbWJkYSAvIGRbaV07CisgICAgICAgIHpbaV0gPSB3W2ldICogeVtpXSAtIGNbaTFdICogeltpMV0gLSBlW2kyXSAqIHpbaTJdOworICAgIH0KKworICAgIGkxID0gbSAtIDI7IGkyID0gbSAtIDM7CisKKyAgICBkW20gLSAxXSA9IHdbbSAtIDFdICsgNSAqIGxhbWJkYSAtY1tpMV0gKiBjW2kxXSAqIGRbaTFdIC0gZVtpMl0gKiBlW2kyXSAqIGRbaTJdOworICAgIGNbbSAtIDFdID0gKC0yICogbGFtYmRhIC0gZFtpMV0gKiBjW2kxXSAqIGVbaTFdKSAvIGRbbSAtIDFdOworICAgIHpbbSAtIDFdID0gd1ttIC0gMV0gKiB5W20gLSAxXSAtIGNbaTFdICogeltpMV0gLSBlW2kyXSAqIHpbaTJdOworICAgIGkxID0gbSAtIDE7IGkyID0gbSAtIDI7CisKKyAgICBkW21dID0gd1ttXSArIGxhbWJkYSAtIGNbaTFdICogY1tpMV0gKiBkW2kxXSAtIGVbaTJdICogZVtpMl0gKiBkW2kyXTsKKyAgICB6W21dID0gKHdbbV0gKiB5W21dIC0gY1tpMV0gKiB6W2kxXSAtIGVbaTJdICogeltpMl0pIC8gZFttXTsKKyAgICB6W20gLSAxXSA9IHpbbSAtIDFdIC8gZFttIC0gMV0gLSBjW20gLSAxXSAqIHpbbV07CisKKyAgICBmb3IgKGkgPSBtIC0gMjsgMTw9IGk7IGktLSkKKyAgICAgICAgeltpXSA9IHpbaV0gLyBkW2ldIC0gY1tpXSAqIHpbaSArIDFdIC0gZVtpXSAqIHpbaSArIDJdOworCisgICAgICBzdCA9IFRSVUU7CisgICAgfQorICAgIGVsc2Ugc3QgPSBGQUxTRTsKKworICAgIGlmIChjICE9IE5VTEwpIF9jbXNGcmVlKENvbnRleHRJRCwgYyk7CisgICAgaWYgKGQgIT0gTlVMTCkgX2Ntc0ZyZWUoQ29udGV4dElELCBkKTsKKyAgICBpZiAoZSAhPSBOVUxMKSBfY21zRnJlZShDb250ZXh0SUQsIGUpOworCisgICAgcmV0dXJuIHN0OworfQorCisvLyBTbW9vdGhzIGEgY3VydmUgc2FtcGxlZCBhdCByZWd1bGFyIGludGVydmFscy4KK2Ntc0Jvb2wgIENNU0VYUE9SVCBjbXNTbW9vdGhUb25lQ3VydmUoY21zVG9uZUN1cnZlKiBUYWIsIGNtc0Zsb2F0NjROdW1iZXIgbGFtYmRhKQoreworICAgIGNtc0Zsb2F0MzJOdW1iZXIgd1tNQVhfTk9ERVNfSU5fQ1VSVkVdLCB5W01BWF9OT0RFU19JTl9DVVJWRV0sIHpbTUFYX05PREVTX0lOX0NVUlZFXTsKKyAgICBpbnQgaSwgbkl0ZW1zLCBaZXJvcywgUG9sZXM7CisKKyAgICBpZiAoVGFiID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIGlmIChjbXNJc1RvbmVDdXJ2ZUxpbmVhcihUYWIpKSByZXR1cm4gVFJVRTsgLy8gTm90aGluZyB0byBkbworCisgICAgbkl0ZW1zID0gVGFiIC0+IG5FbnRyaWVzOworCisgICAgaWYgKG5JdGVtcyA+PSBNQVhfTk9ERVNfSU5fQ1VSVkUpIHsKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoVGFiIC0+SW50ZXJwUGFyYW1zLT5Db250ZXh0SUQsIGNtc0VSUk9SX1JBTkdFLCAiY21zU21vb3RoVG9uZUN1cnZlOiB0b28gbWFueSBwb2ludHMuIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBtZW1zZXQodywgMCwgbkl0ZW1zICogc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKKyAgICBtZW1zZXQoeSwgMCwgbkl0ZW1zICogc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKKyAgICBtZW1zZXQoeiwgMCwgbkl0ZW1zICogc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKKworICAgIGZvciAoaT0wOyBpIDwgbkl0ZW1zOyBpKyspCisgICAgeworICAgICAgICB5W2krMV0gPSAoY21zRmxvYXQzMk51bWJlcikgVGFiIC0+IFRhYmxlMTZbaV07CisgICAgICAgIHdbaSsxXSA9IDEuMDsKKyAgICB9CisKKyAgICBpZiAoIXNtb290aDIoVGFiIC0+SW50ZXJwUGFyYW1zLT5Db250ZXh0SUQsIHcsIHksIHosIChjbXNGbG9hdDMyTnVtYmVyKSBsYW1iZGEsIG5JdGVtcykpIHJldHVybiBGQUxTRTsKKworICAgIC8vIERvIHNvbWUgcmVhbGl0eSAtIGNoZWNraW5nLi4uCisgICAgWmVyb3MgPSBQb2xlcyA9IDA7CisgICAgZm9yIChpPW5JdGVtczsgaSA+IDE7IC0taSkgeworCisgICAgICAgIGlmICh6W2ldID09IDAuKSBaZXJvcysrOworICAgICAgICBpZiAoeltpXSA+PSA2NTUzNS4pIFBvbGVzKys7CisgICAgICAgIGlmICh6W2ldIDwgeltpLTFdKSB7CisgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihUYWIgLT5JbnRlcnBQYXJhbXMtPkNvbnRleHRJRCwgY21zRVJST1JfUkFOR0UsICJjbXNTbW9vdGhUb25lQ3VydmU6IE5vbi1Nb25vdG9uaWMuIik7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoWmVyb3MgPiAobkl0ZW1zIC8gMykpIHsKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoVGFiIC0+SW50ZXJwUGFyYW1zLT5Db250ZXh0SUQsIGNtc0VSUk9SX1JBTkdFLCAiY21zU21vb3RoVG9uZUN1cnZlOiBEZWdlbmVyYXRlZCwgbW9zdGx5IHplcm9zLiIpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIGlmIChQb2xlcyA+IChuSXRlbXMgLyAzKSkgeworICAgICAgICBjbXNTaWduYWxFcnJvcihUYWIgLT5JbnRlcnBQYXJhbXMtPkNvbnRleHRJRCwgY21zRVJST1JfUkFOR0UsICJjbXNTbW9vdGhUb25lQ3VydmU6IERlZ2VuZXJhdGVkLCBtb3N0bHkgcG9sZXMuIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBTZWVtcyBvaworICAgIGZvciAoaT0wOyBpIDwgbkl0ZW1zOyBpKyspIHsKKworICAgICAgICAvLyBDbGFtcCB0byBjbXNVSW50MTZOdW1iZXIKKyAgICAgICAgVGFiIC0+IFRhYmxlMTZbaV0gPSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoeltpKzFdKTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gSXMgYSB0YWJsZSBsaW5lYXI/IERvIG5vdCB1c2UgcGFyYW1ldHJpYyBzaW5jZSB3ZSBjYW5ub3QgZ3VhcmFudGVlIHNvbWUgd2VpcmQgcGFyYW1ldGVycyByZXN1bHRpbmcKKy8vIGluIGEgbGluZWFyIHRhYmxlLiBUaGlzIHdheSBhc3N1cmVzIGl0IGlzIGxpbmVhciBpbiAxMiBiaXRzLCB3aGljaCBzaG91bGQgYmUgZW5vdWdodCBpbiBtb3N0IGNhc2VzLgorY21zQm9vbCBDTVNFWFBPUlQgY21zSXNUb25lQ3VydmVMaW5lYXIoY29uc3QgY21zVG9uZUN1cnZlKiBDdXJ2ZSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBpbnQgZGlmZjsKKworICAgIF9jbXNBc3NlcnQoQ3VydmUgIT0gTlVMTCk7CisKKyAgICBmb3IgKGk9MDsgaSA8IEN1cnZlIC0+bkVudHJpZXM7IGkrKykgeworCisgICAgICAgIGRpZmYgPSBhYnMoKGludCkgQ3VydmUtPlRhYmxlMTZbaV0gLSAoaW50KSBfY21zUXVhbnRpemVWYWwoaSwgQ3VydmUgLT5uRW50cmllcykpOworICAgICAgICBpZiAoZGlmZiA+IDB4MGYpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIFNhbWUsIGJ1dCBmb3IgbW9ub3RvbmljaXR5CitjbXNCb29sICBDTVNFWFBPUlQgY21zSXNUb25lQ3VydmVNb25vdG9uaWMoY29uc3QgY21zVG9uZUN1cnZlKiB0KQoreworICAgIGludCBuOworICAgIGludCBpLCBsYXN0OworICAgIGNtc0Jvb2wgbERlc2NlbmRpbmc7CisKKyAgICBfY21zQXNzZXJ0KHQgIT0gTlVMTCk7CisKKyAgICAvLyBEZWdlbmVyYXRlZCBjdXJ2ZXMgYXJlIG1vbm90b25pYz8gT2ssIGxldCdzIHBhc3MgdGhlbQorICAgIG4gPSB0IC0+bkVudHJpZXM7CisgICAgaWYgKG4gPCAyKSByZXR1cm4gVFJVRTsKKworICAgIC8vIEN1cnZlIGRpcmVjdGlvbgorICAgIGxEZXNjZW5kaW5nID0gY21zSXNUb25lQ3VydmVEZXNjZW5kaW5nKHQpOworCisgICAgaWYgKGxEZXNjZW5kaW5nKSB7CisKKyAgICAgICAgbGFzdCA9IHQgLT5UYWJsZTE2WzBdOworCisgICAgICAgIGZvciAoaSA9IDE7IGkgPCBuOyBpKyspIHsKKworICAgICAgICAgICAgaWYgKHQgLT5UYWJsZTE2W2ldIC0gbGFzdCA+IDIpIC8vIFdlIGFsbG93IHNvbWUgcmlwcGxlCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxhc3QgPSB0IC0+VGFibGUxNltpXTsKKworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIGxhc3QgPSB0IC0+VGFibGUxNltuLTFdOworCisgICAgICAgIGZvciAoaSA9IG4tMjsgaSA+PSAwOyAtLWkpIHsKKworICAgICAgICAgICAgaWYgKHQgLT5UYWJsZTE2W2ldIC0gbGFzdCA+IDIpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxhc3QgPSB0IC0+VGFibGUxNltpXTsKKworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIFNhbWUsIGJ1dCBmb3IgZGVzY2VuZGluZyB0YWJsZXMKK2Ntc0Jvb2wgIENNU0VYUE9SVCBjbXNJc1RvbmVDdXJ2ZURlc2NlbmRpbmcoY29uc3QgY21zVG9uZUN1cnZlKiB0KQoreworICAgIF9jbXNBc3NlcnQodCAhPSBOVUxMKTsKKworICAgIHJldHVybiB0IC0+VGFibGUxNlswXSA+IHQgLT5UYWJsZTE2W3QgLT5uRW50cmllcy0xXTsKK30KKworCisvLyBBbm90aGVyIGluZm8gZm46IGlzIG91dCBnYW1tYSB0YWJsZSBtdWx0aXNlZ21lbnQ/CitjbXNCb29sICBDTVNFWFBPUlQgY21zSXNUb25lQ3VydmVNdWx0aXNlZ21lbnQoY29uc3QgY21zVG9uZUN1cnZlKiB0KQoreworICAgIF9jbXNBc3NlcnQodCAhPSBOVUxMKTsKKworICAgIHJldHVybiB0IC0+IG5TZWdtZW50cyA+IDE7Cit9CisKK2Ntc0ludDMyTnVtYmVyICBDTVNFWFBPUlQgY21zR2V0VG9uZUN1cnZlUGFyYW1ldHJpY1R5cGUoY29uc3QgY21zVG9uZUN1cnZlKiB0KQoreworICAgIF9jbXNBc3NlcnQodCAhPSBOVUxMKTsKKworICAgIGlmICh0IC0+IG5TZWdtZW50cyAhPSAxKSByZXR1cm4gMDsKKyAgICByZXR1cm4gdCAtPlNlZ21lbnRzWzBdLlR5cGU7Cit9CisKKy8vIFdlIG5lZWQgYWNjdXJhY3kgdGhpcyB0aW1lCitjbXNGbG9hdDMyTnVtYmVyIENNU0VYUE9SVCBjbXNFdmFsVG9uZUN1cnZlRmxvYXQoY29uc3QgY21zVG9uZUN1cnZlKiBDdXJ2ZSwgY21zRmxvYXQzMk51bWJlciB2KQoreworICAgIF9jbXNBc3NlcnQoQ3VydmUgIT0gTlVMTCk7CisKKyAgICAvLyBDaGVjayBmb3IgMTYgYml0cyB0YWJsZS4gSWYgc28sIHRoaXMgaXMgYSBsaW1pdGVkLXByZWNpc2lvbiB0b25lIGN1cnZlCisgICAgaWYgKEN1cnZlIC0+blNlZ21lbnRzID09IDApIHsKKworICAgICAgICBjbXNVSW50MTZOdW1iZXIgSW4sIE91dDsKKworICAgICAgICBJbiA9IChjbXNVSW50MTZOdW1iZXIpIF9jbXNRdWlja1NhdHVyYXRlV29yZCh2ICogNjU1MzUuMCk7CisgICAgICAgIE91dCA9IGNtc0V2YWxUb25lQ3VydmUxNihDdXJ2ZSwgSW4pOworCisgICAgICAgIHJldHVybiAoY21zRmxvYXQzMk51bWJlcikgKE91dCAvIDY1NTM1LjApOworICAgIH0KKworICAgIHJldHVybiAoY21zRmxvYXQzMk51bWJlcikgRXZhbFNlZ21lbnRlZEZuKEN1cnZlLCB2KTsKK30KKworLy8gV2UgbmVlZCB4cHV0IG92ZXIgaGVyZQorY21zVUludDE2TnVtYmVyIENNU0VYUE9SVCBjbXNFdmFsVG9uZUN1cnZlMTYoY29uc3QgY21zVG9uZUN1cnZlKiBDdXJ2ZSwgY21zVUludDE2TnVtYmVyIHYpCit7CisgICAgY21zVUludDE2TnVtYmVyIG91dDsKKworICAgIF9jbXNBc3NlcnQoQ3VydmUgIT0gTlVMTCk7CisKKyAgICBDdXJ2ZSAtPkludGVycFBhcmFtcyAtPkludGVycG9sYXRpb24uTGVycDE2KCZ2LCAmb3V0LCBDdXJ2ZSAtPkludGVycFBhcmFtcyk7CisgICAgcmV0dXJuIG91dDsKK30KKworCisvLyBMZWFzdCBzcXVhcmVzIGZpdHRpbmcuCisvLyBBIG1hdGhlbWF0aWNhbCBwcm9jZWR1cmUgZm9yIGZpbmRpbmcgdGhlIGJlc3QtZml0dGluZyBjdXJ2ZSB0byBhIGdpdmVuIHNldCBvZiBwb2ludHMgYnkKKy8vIG1pbmltaXppbmcgdGhlIHN1bSBvZiB0aGUgc3F1YXJlcyBvZiB0aGUgb2Zmc2V0cyAoInRoZSByZXNpZHVhbHMiKSBvZiB0aGUgcG9pbnRzIGZyb20gdGhlIGN1cnZlLgorLy8gVGhlIHN1bSBvZiB0aGUgc3F1YXJlcyBvZiB0aGUgb2Zmc2V0cyBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG9mZnNldCBhYnNvbHV0ZSB2YWx1ZXMgYmVjYXVzZQorLy8gdGhpcyBhbGxvd3MgdGhlIHJlc2lkdWFscyB0byBiZSB0cmVhdGVkIGFzIGEgY29udGludW91cyBkaWZmZXJlbnRpYWJsZSBxdWFudGl0eS4KKy8vCisvLyB5ID0gZih4KSA9IHggXiBnCisvLworLy8gUiAgPSAoeWkgLSAoeGleZykpCisvLyBSMiA9ICh5aSAtICh4aV5nKSkyCisvLyBTVU0gUjIgPSBTVU0gKHlpIC0gKHhpXmcpKTIKKy8vCisvLyBkUjIvZGcgPSAtMiBTVU0geF5nIGxvZyh4KSh5IC0geF5nKQorLy8gc29sdmluZyBmb3IgZFIyL2RnID0gMAorLy8KKy8vIGcgPSAxL24gKiBTVU0obG9nKHkpIC8gbG9nKHgpKQorCitjbXNGbG9hdDY0TnVtYmVyIENNU0VYUE9SVCBjbXNFc3RpbWF0ZUdhbW1hKGNvbnN0IGNtc1RvbmVDdXJ2ZSogdCwgY21zRmxvYXQ2NE51bWJlciBQcmVjaXNpb24pCit7CisgICAgY21zRmxvYXQ2NE51bWJlciBnYW1tYSwgc3VtLCBzdW0yOworICAgIGNtc0Zsb2F0NjROdW1iZXIgbiwgeCwgeSwgU3RkOworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgX2Ntc0Fzc2VydCh0ICE9IE5VTEwpOworCisgICAgc3VtID0gc3VtMiA9IG4gPSAwOworCisgICAgLy8gRXhjbHVkaW5nIGVuZHBvaW50cworICAgIGZvciAoaT0xOyBpIDwgKE1BWF9OT0RFU19JTl9DVVJWRS0xKTsgaSsrKSB7CisKKyAgICAgICAgeCA9IChjbXNGbG9hdDY0TnVtYmVyKSBpIC8gKE1BWF9OT0RFU19JTl9DVVJWRS0xKTsKKyAgICAgICAgeSA9IChjbXNGbG9hdDY0TnVtYmVyKSBjbXNFdmFsVG9uZUN1cnZlRmxvYXQodCwgKGNtc0Zsb2F0MzJOdW1iZXIpIHgpOworCisgICAgICAgIC8vIEF2b2lkIDclIG9uIGxvd2VyIHBhcnQgdG8gcHJldmVudAorICAgICAgICAvLyBhcnRpZmFjdHMgZHVlIHRvIGxpbmVhciByYW1wcworCisgICAgICAgIGlmICh5ID4gMC4gJiYgeSA8IDEuICYmIHggPiAwLjA3KSB7CisKKyAgICAgICAgICAgIGdhbW1hID0gbG9nKHkpIC8gbG9nKHgpOworICAgICAgICAgICAgc3VtICArPSBnYW1tYTsKKyAgICAgICAgICAgIHN1bTIgKz0gZ2FtbWEgKiBnYW1tYTsKKyAgICAgICAgICAgIG4rKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRha2UgYSBsb29rIG9uIFNEIHRvIHNlZSBpZiBnYW1tYSBpc24ndCBleHBvbmVudGlhbCBhdCBhbGwKKyAgICBTdGQgPSBzcXJ0KChuICogc3VtMiAtIHN1bSAqIHN1bSkgLyAobioobi0xKSkpOworCisgICAgaWYgKFN0ZCA+IFByZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIC0xLjA7CisKKyAgICByZXR1cm4gKHN1bSAvIG4pOyAgIC8vIFRoZSBtZWFuCit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zZ210LmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zZ210LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk0Mjc2NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNnbXQuYwpAQCAtMCwwICsxLDU5MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0NCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIgTWFydGkgTWFyaWEgU2FndWVyDQorLy8NCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcNCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQorLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbg0KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLA0KKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQ0KKy8vIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorLy8NCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KKy8vDQorLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPDQorLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQNCisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFDQorLy8gTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTg0KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTg0KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKy8vDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KKw0KKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIg0KKw0KKw0KKy8vIEF1eGlsaWFyOiBhcHBlbmQgYSBMYWIgaWRlbnRpdHkgYWZ0ZXIgdGhlIGdpdmVuIHNlcXVlbmNlIG9mIHByb2ZpbGVzDQorLy8gYW5kIHJldHVybiB0aGUgdHJhbnNmb3JtLiBMYWIgcHJvZmlsZSBpcyBjbG9zZWQsIHJlc3Qgb2YgcHJvZmlsZXMgYXJlIGtlcHQgb3Blbi4NCitjbXNIVFJBTlNGT1JNIF9jbXNDaGFpbjJMYWIoY21zQ29udGV4dCAgICAgICAgICAgIENvbnRleHRJRCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICAgICAgICBuUHJvZmlsZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgSW5wdXRGb3JtYXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgT3V0cHV0Rm9ybWF0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNVSW50MzJOdW1iZXIgIEludGVudHNbXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSFBST0ZJTEUgICAgICBoUHJvZmlsZXNbXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zQm9vbCAgICAgICAgICBCUENbXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uU3RhdGVzW10sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgZHdGbGFncykNCit7DQorICAgIGNtc0hUUkFOU0ZPUk0geGZvcm07DQorICAgIGNtc0hQUk9GSUxFICAgaExhYjsNCisgICAgY21zSFBST0ZJTEUgICBQcm9maWxlTGlzdFsyNTZdOw0KKyAgICBjbXNCb29sICAgICAgIEJQQ0xpc3RbMjU2XTsNCisgICAgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uTGlzdFsyNTZdOw0KKyAgICBjbXNVSW50MzJOdW1iZXIgSW50ZW50TGlzdFsyNTZdOw0KKyAgICBjbXNVSW50MzJOdW1iZXIgaTsNCisNCisgICAgLy8gVGhpcyBpcyBhIHJhdGhlciBiaWcgbnVtYmVyIGFuZCB0aGVyZSBpcyBubyBuZWVkIG9mIGR5bmFtaWMgbWVtb3J5DQorICAgIC8vIHNpbmNlIHdlIGFyZSBhZGRpbmcgYSBwcm9maWxlLCAyNTQgKyAxID0gMjU1IGFuZCB0aGlzIGlzIHRoZSBsaW1pdA0KKyAgICBpZiAoblByb2ZpbGVzID4gMjU0KSByZXR1cm4gTlVMTDsNCisNCisgICAgLy8gVGhlIG91dHB1dCBzcGFjZQ0KKyAgICBoTGFiID0gY21zQ3JlYXRlTGFiNFByb2ZpbGVUSFIoQ29udGV4dElELCBOVUxMKTsNCisgICAgaWYgKGhMYWIgPT0gTlVMTCkgcmV0dXJuIE5VTEw7DQorDQorICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgcGFyYW1ldGVycw0KKyAgICBmb3IgKGk9MDsgaSA8IG5Qcm9maWxlczsgaSsrKSB7DQorDQorICAgICAgICBQcm9maWxlTGlzdFtpXSAgICA9IGhQcm9maWxlc1tpXTsNCisgICAgICAgIEJQQ0xpc3RbaV0gICAgICAgID0gQlBDW2ldOw0KKyAgICAgICAgQWRhcHRhdGlvbkxpc3RbaV0gPSBBZGFwdGF0aW9uU3RhdGVzW2ldOw0KKyAgICAgICAgSW50ZW50TGlzdFtpXSAgICAgPSBJbnRlbnRzW2ldOw0KKyAgICB9DQorDQorICAgIC8vIFBsYWNlIExhYiBpZGVudGl0eSBhdCBjaGFpbidzIGVuZC4NCisgICAgUHJvZmlsZUxpc3RbblByb2ZpbGVzXSAgICA9IGhMYWI7DQorICAgIEJQQ0xpc3RbblByb2ZpbGVzXSAgICAgICAgPSAwOw0KKyAgICBBZGFwdGF0aW9uTGlzdFtuUHJvZmlsZXNdID0gMS4wOw0KKyAgICBJbnRlbnRMaXN0W25Qcm9maWxlc10gICAgID0gSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQzsNCisNCisgICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0NCisgICAgeGZvcm0gPSBjbXNDcmVhdGVFeHRlbmRlZFRyYW5zZm9ybShDb250ZXh0SUQsIG5Qcm9maWxlcyArIDEsIFByb2ZpbGVMaXN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJQQ0xpc3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50TGlzdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGFwdGF0aW9uTGlzdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0Rm9ybWF0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEZvcm1hdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkd0ZsYWdzKTsNCisNCisgICAgY21zQ2xvc2VQcm9maWxlKGhMYWIpOw0KKw0KKyAgICByZXR1cm4geGZvcm07DQorfQ0KKw0KKw0KKy8vIENvbXB1dGUgSyAtPiBMKiByZWxhdGlvbnNoaXAuIEZsYWdzIG1heSBpbmNsdWRlIGJsYWNrIHBvaW50IGNvbXBlbnNhdGlvbi4gSW4gdGhpcyBjYXNlLA0KKy8vIHRoZSByZWxhdGlvbnNoaXAgaXMgYXNzdW1lZCBmcm9tIHRoZSBwcm9maWxlIHdpdGggQlBDIHRvIGEgYmxhY2sgcG9pbnQgemVyby4NCitzdGF0aWMNCitjbXNUb25lQ3VydmUqIENvbXB1dGVLVG9Mc3RhcihjbXNDb250ZXh0ICAgICAgICAgICAgQ29udGV4dElELA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgblBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICAgICAgIG5Qcm9maWxlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zVUludDMyTnVtYmVyIEludGVudHNbXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSFBST0ZJTEUgICAgIGhQcm9maWxlc1tdLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNCb29sICAgICAgICAgQlBDW10sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvblN0YXRlc1tdLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykNCit7DQorICAgIGNtc1RvbmVDdXJ2ZSogb3V0ID0gTlVMTDsNCisgICAgY21zVUludDMyTnVtYmVyIGk7DQorICAgIGNtc0hUUkFOU0ZPUk0geGZvcm07DQorICAgIGNtc0NJRUxhYiBMYWI7DQorICAgIGNtc0Zsb2F0MzJOdW1iZXIgY215a1s0XTsNCisgICAgY21zRmxvYXQzMk51bWJlciogU2FtcGxlZFBvaW50czsNCisNCisgICAgeGZvcm0gPSBfY21zQ2hhaW4yTGFiKENvbnRleHRJRCwgblByb2ZpbGVzLCBUWVBFX0NNWUtfRkxULCBUWVBFX0xhYl9EQkwsIEludGVudHMsIGhQcm9maWxlcywgQlBDLCBBZGFwdGF0aW9uU3RhdGVzLCBkd0ZsYWdzKTsNCisgICAgaWYgKHhmb3JtID09IE5VTEwpIHJldHVybiBOVUxMOw0KKw0KKyAgICBTYW1wbGVkUG9pbnRzID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBfY21zQ2FsbG9jKENvbnRleHRJRCwgblBvaW50cywgc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsNCisgICAgaWYgKFNhbXBsZWRQb2ludHMgID09IE5VTEwpIGdvdG8gRXJyb3I7DQorDQorICAgIGZvciAoaT0wOyBpIDwgblBvaW50czsgaSsrKSB7DQorDQorICAgICAgICBjbXlrWzBdID0gMDsNCisgICAgICAgIGNteWtbMV0gPSAwOw0KKyAgICAgICAgY215a1syXSA9IDA7DQorICAgICAgICBjbXlrWzNdID0gKGNtc0Zsb2F0MzJOdW1iZXIpICgoaSAqIDEwMC4wKSAvIChuUG9pbnRzLTEpKTsNCisNCisgICAgICAgIGNtc0RvVHJhbnNmb3JtKHhmb3JtLCBjbXlrLCAmTGFiLCAxKTsNCisgICAgICAgIFNhbXBsZWRQb2ludHNbaV09IChjbXNGbG9hdDMyTnVtYmVyKSAoMS4wIC0gTGFiLkwgLyAxMDAuMCk7IC8vIE5lZ2F0ZSBLIGZvciBlYXNpZXIgb3BlcmF0aW9uDQorICAgIH0NCisNCisgICAgb3V0ID0gY21zQnVpbGRUYWJ1bGF0ZWRUb25lQ3VydmVGbG9hdChDb250ZXh0SUQsIG5Qb2ludHMsIFNhbXBsZWRQb2ludHMpOw0KKw0KK0Vycm9yOg0KKw0KKyAgICBjbXNEZWxldGVUcmFuc2Zvcm0oeGZvcm0pOw0KKyAgICBpZiAoU2FtcGxlZFBvaW50cykgX2Ntc0ZyZWUoQ29udGV4dElELCBTYW1wbGVkUG9pbnRzKTsNCisNCisgICAgcmV0dXJuIG91dDsNCit9DQorDQorDQorLy8gQ29tcHV0ZSBCbGFjayB0b25lIGN1cnZlIG9uIGEgQ01ZSyAtPiBDTVlLIHRyYW5zZm9ybS4gVGhpcyBpcyBkb25lIGJ5DQorLy8gdXNpbmcgdGhlIHByb29mIGRpcmVjdGlvbiBvbiBib3RoIHByb2ZpbGVzIHRvIGZpbmQgSy0+TCogcmVsYXRpb25zaGlwDQorLy8gdGhlbiBqb2luaW5nIGJvdGggY3VydmVzLiBkd0ZsYWdzIG1heSBpbmNsdWRlIGJsYWNrIHBvaW50IGNvbXBlbnNhdGlvbi4NCitjbXNUb25lQ3VydmUqIF9jbXNCdWlsZEtUb25lQ3VydmUoY21zQ29udGV4dCAgICAgICAgQ29udGV4dElELA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICAgblBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgIG5Qcm9maWxlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1VJbnQzMk51bWJlciBJbnRlbnRzW10sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNIUFJPRklMRSBoUHJvZmlsZXNbXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0Jvb2wgICAgIEJQQ1tdLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uU3RhdGVzW10sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgICBkd0ZsYWdzKQ0KK3sNCisgICAgY21zVG9uZUN1cnZlICppbiwgKm91dCwgKktUb25lOw0KKw0KKyAgICAvLyBNYWtlIHN1cmUgQ01ZSyAtPiBDTVlLDQorICAgIGlmIChjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlc1swXSkgIT0gY21zU2lnQ215a0RhdGEgfHwNCisgICAgICAgIGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGVzW25Qcm9maWxlcy0xXSkhPSBjbXNTaWdDbXlrRGF0YSkgcmV0dXJuIE5VTEw7DQorDQorDQorICAgIC8vIE1ha2Ugc3VyZSBsYXN0IGlzIGFuIG91dHB1dCBwcm9maWxlDQorICAgIGlmIChjbXNHZXREZXZpY2VDbGFzcyhoUHJvZmlsZXNbblByb2ZpbGVzIC0gMV0pICE9IGNtc1NpZ091dHB1dENsYXNzKSByZXR1cm4gTlVMTDsNCisNCisgICAgLy8gQ3JlYXRlIGluZGl2aWR1YWwgY3VydmVzLiBCUEMgd29ya3MgYWxzbyBhcyBlYWNoIEsgdG8gTCogaXMNCisgICAgLy8gY29tcHV0ZWQgYXMgYSBCUEMgdG8gemVybyBibGFjayBwb2ludCBpbiBjYXNlIG9mIEwqDQorICAgIGluICA9IENvbXB1dGVLVG9Mc3RhcihDb250ZXh0SUQsIG5Qb2ludHMsIG5Qcm9maWxlcyAtIDEsIEludGVudHMsIGhQcm9maWxlcywgQlBDLCBBZGFwdGF0aW9uU3RhdGVzLCBkd0ZsYWdzKTsNCisgICAgaWYgKGluID09IE5VTEwpIHJldHVybiBOVUxMOw0KKw0KKyAgICBvdXQgPSBDb21wdXRlS1RvTHN0YXIoQ29udGV4dElELCBuUG9pbnRzLCAxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnRzICsgKG5Qcm9maWxlcyAtIDEpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaFByb2ZpbGVzIFtuUHJvZmlsZXMgLSAxXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlBDICsgKG5Qcm9maWxlcyAtIDEpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGFwdGF0aW9uU3RhdGVzICsgKG5Qcm9maWxlcyAtIDEpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkd0ZsYWdzKTsNCisgICAgaWYgKG91dCA9PSBOVUxMKSB7DQorICAgICAgICBjbXNGcmVlVG9uZUN1cnZlKGluKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorDQorICAgIC8vIEJ1aWxkIHRoZSByZWxhdGlvbnNoaXAuIFRoaXMgZWZmZWN0aXZlbHkgbGltaXRzIHRoZSBtYXhpbXVtIGFjY3VyYWN5IHRvIDE2IGJpdHMsIGJ1dA0KKyAgICAvLyBzaW5jZSB0aGlzIGlzIHVzZWQgb24gYmxhY2stcHJlc2VydmluZyBMVVRzLCB3ZSBhcmUgbm90IGxvb3NpbmcgIGFjY3VyYWN5IGluIGFueSBjYXNlDQorICAgIEtUb25lID0gY21zSm9pblRvbmVDdXJ2ZShDb250ZXh0SUQsIGluLCBvdXQsIG5Qb2ludHMpOw0KKw0KKyAgICAvLyBHZXQgcmlkIG9mIGNvbXBvbmVudHMNCisgICAgY21zRnJlZVRvbmVDdXJ2ZShpbik7IGNtc0ZyZWVUb25lQ3VydmUob3V0KTsNCisNCisgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcuLi4NCisgICAgaWYgKEtUb25lID09IE5VTEwpIHJldHVybiBOVUxMOw0KKw0KKyAgICAvLyBNYWtlIHN1cmUgaXQgaXMgbW9ub3RvbmljDQorICAgIGlmICghY21zSXNUb25lQ3VydmVNb25vdG9uaWMoS1RvbmUpKSB7DQorICAgICAgICBjbXNGcmVlVG9uZUN1cnZlKEtUb25lKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorDQorICAgIHJldHVybiBLVG9uZTsNCit9DQorDQorDQorLy8gR2FtdXQgTFVUIENyZWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorLy8gVXNlZCBieSBnYW11dCAmIHNvZnRwcm9vZmluZw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisNCisgICAgY21zSFRSQU5TRk9STSBoSW5wdXQ7ICAgICAgICAgICAgICAgLy8gRnJvbSB3aGF0ZXZlciBpbnB1dCBjb2xvciBzcGFjZS4gMTYgYml0cyB0byBEQkwNCisgICAgY21zSFRSQU5TRk9STSBoRm9yd2FyZCwgaFJldmVyc2U7ICAgLy8gVHJhbnNmb3JtcyBnb2luZyBmcm9tIExhYiB0byBjb2xvcmFudCBhbmQgYmFjaw0KKyAgICBjbXNGbG9hdDY0TnVtYmVyIFRoZXJlc2hvbGQ7ICAgICAgICAvLyBUaGUgdGhlcmVzaG9sZCBhZnRlciB3aGljaCBpcyBjb25zaWRlcmVkIG91dCBvZiBnYW11dA0KKw0KKyAgICB9IEdBTVVUQ0hBSU47DQorDQorLy8gVGhpcyBzYW1wbGVyIGRvZXMgY29tcHV0ZSBnYW11dCBib3VuZGFyaWVzIGJ5IGNvbXBhcmluZyBvcmlnaW5hbA0KKy8vIHZhbHVlcyB3aXRoIGEgdHJhbnNmb3JtIGdvaW5nIGJhY2sgYW5kIGZvcnRoLiBWYWx1ZXMgYWJvdmUgRVJSX1RIRVJFU0hPTEQNCisvLyBvZiBtYXhpbXVtIGFyZSBjb25zaWRlcmVkIG91dCBvZiBnYW11dC4NCisNCisjZGVmaW5lIEVSUl9USEVSRVNIT0xEICAgICAgNQ0KKw0KKw0KK3N0YXRpYw0KK2ludCBHYW11dFNhbXBsZXIocmVnaXN0ZXIgY29uc3QgY21zVUludDE2TnVtYmVyIEluW10sIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRbXSwgcmVnaXN0ZXIgdm9pZCogQ2FyZ28pDQorew0KKyAgICBHQU1VVENIQUlOKiAgdCA9IChHQU1VVENIQUlOKiApIENhcmdvOw0KKyAgICBjbXNDSUVMYWIgTGFiSW4xLCBMYWJPdXQxOw0KKyAgICBjbXNDSUVMYWIgTGFiSW4yLCBMYWJPdXQyOw0KKyAgICBjbXNVSW50MTZOdW1iZXIgUHJvb2ZbY21zTUFYQ0hBTk5FTFNdLCBQcm9vZjJbY21zTUFYQ0hBTk5FTFNdOw0KKyAgICBjbXNGbG9hdDY0TnVtYmVyIGRFMSwgZEUyLCBFcnJvclJhdGlvOw0KKw0KKyAgICAvLyBBc3N1bWUgaW4tZ2FtdXQgYnkgZGVmYXVsdC4NCisgICAgRXJyb3JSYXRpbyA9IDEuMDsNCisNCisgICAgLy8gQ29udmVydCBpbnB1dCB0byBMYWINCisgICAgY21zRG9UcmFuc2Zvcm0odCAtPiBoSW5wdXQsIEluLCAmTGFiSW4xLCAxKTsNCisNCisgICAgLy8gY29udmVydHMgZnJvbSBQQ1MgdG8gY29sb3JhbnQuIFRoaXMgYWx3YXlzDQorICAgIC8vIGRvZXMgcmV0dXJuIGluLWdhbXV0IHZhbHVlcywNCisgICAgY21zRG9UcmFuc2Zvcm0odCAtPiBoRm9yd2FyZCwgJkxhYkluMSwgUHJvb2YsIDEpOw0KKw0KKyAgICAvLyBOb3csIGRvIHRoZSBpbnZlcnNlLCBmcm9tIGNvbG9yYW50IHRvIFBDUy4NCisgICAgY21zRG9UcmFuc2Zvcm0odCAtPiBoUmV2ZXJzZSwgUHJvb2YsICZMYWJPdXQxLCAxKTsNCisNCisgICAgbWVtbW92ZSgmTGFiSW4yLCAmTGFiT3V0MSwgc2l6ZW9mKGNtc0NJRUxhYikpOw0KKw0KKyAgICAvLyBUcnkgYWdhaW4sIGJ1dCB0aGlzIHRpbWUgdGFraW5nIENoZWNrIGFzIGlucHV0DQorICAgIGNtc0RvVHJhbnNmb3JtKHQgLT4gaEZvcndhcmQsICZMYWJPdXQxLCBQcm9vZjIsIDEpOw0KKyAgICBjbXNEb1RyYW5zZm9ybSh0IC0+IGhSZXZlcnNlLCBQcm9vZjIsICZMYWJPdXQyLCAxKTsNCisNCisgICAgLy8gVGFrZSBkaWZmZXJlbmNlIG9mIGRpcmVjdCB2YWx1ZQ0KKyAgICBkRTEgPSBjbXNEZWx0YUUoJkxhYkluMSwgJkxhYk91dDEpOw0KKw0KKyAgICAvLyBUYWtlIGRpZmZlcmVuY2Ugb2YgY29udmVydGVkIHZhbHVlDQorICAgIGRFMiA9IGNtc0RlbHRhRSgmTGFiSW4yLCAmTGFiT3V0Mik7DQorDQorDQorICAgIC8vIGlmIGRFMSBpcyBzbWFsbCBhbmQgZEUyIGlzIHNtYWxsLCB2YWx1ZSBpcyBsaWtlbHkgdG8gYmUgaW4gZ2FtdXQNCisgICAgaWYgKGRFMSA8IHQtPlRoZXJlc2hvbGQgJiYgZEUyIDwgdC0+VGhlcmVzaG9sZCkNCisgICAgICAgIE91dFswXSA9IDA7DQorICAgIGVsc2Ugew0KKw0KKyAgICAgICAgLy8gaWYgZEUxIGlzIHNtYWxsIGFuZCBkRTIgaXMgYmlnLCB1bmRlZmluZWQuIEFzc3VtZSBpbiBnYW11dA0KKyAgICAgICAgaWYgKGRFMSA8IHQtPlRoZXJlc2hvbGQgJiYgZEUyID4gdC0+VGhlcmVzaG9sZCkNCisgICAgICAgICAgICBPdXRbMF0gPSAwOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIC8vIGRFMSBpcyBiaWcgYW5kIGRFMiBpcyBzbWFsbCwgY2xlYXJseSBvdXQgb2YgZ2FtdXQNCisgICAgICAgICAgICBpZiAoZEUxID4gdC0+VGhlcmVzaG9sZCAmJiBkRTIgPCB0LT5UaGVyZXNob2xkKQ0KKyAgICAgICAgICAgICAgICBPdXRbMF0gPSAoY21zVUludDE2TnVtYmVyKSBfY21zUXVpY2tGbG9vcigoZEUxIC0gdC0+VGhlcmVzaG9sZCkgKyAuNSk7DQorICAgICAgICAgICAgZWxzZSAgew0KKw0KKyAgICAgICAgICAgICAgICAvLyBkRTEgaXMgYmlnIGFuZCBkRTIgaXMgYWxzbyBiaWcsIGNvdWxkIGJlIGR1ZSB0byBwZXJjZXB0dWFsIG1hcHBpbmcNCisgICAgICAgICAgICAgICAgLy8gc28gdGFrZSBlcnJvciByYXRpbw0KKyAgICAgICAgICAgICAgICBpZiAoZEUyID09IDAuMCkNCisgICAgICAgICAgICAgICAgICAgIEVycm9yUmF0aW8gPSBkRTE7DQorICAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgICAgIEVycm9yUmF0aW8gPSBkRTEgLyBkRTI7DQorDQorICAgICAgICAgICAgICAgIGlmIChFcnJvclJhdGlvID4gdC0+VGhlcmVzaG9sZCkNCisgICAgICAgICAgICAgICAgICAgIE91dFswXSA9IChjbXNVSW50MTZOdW1iZXIpICBfY21zUXVpY2tGbG9vcigoRXJyb3JSYXRpbyAtIHQtPlRoZXJlc2hvbGQpICsgLjUpOw0KKyAgICAgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgICAgICAgICBPdXRbMF0gPSAwOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKw0KKw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorDQorLy8gRG9lcyBjb21wdXRlIGEgZ2FtdXQgTFVUIGdvaW5nIGJhY2sgYW5kIGZvcnRoIGFjcm9zcyBwY3MgLT4gcmVsYXRpdi4gY29sb3JpbWV0cmljIGludGVudCAtPiBwY3MNCisvLyB0aGUgZEUgb2J0YWluZWQgaXMgdGhlbiBhbm5vdGF0ZWQgb24gdGhlIExVVC4gVmFsdWVzIHRydWVseSBvdXQgb2YgZ2FtdXQgYXJlIGNsaXBwZWQgdG8gZEUgPSAweEZGRkUNCisvLyBhbmQgdmFsdWVzIGNoYW5nZWQgYXJlIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQgYnkgYW55IGdhbXV0IHJlbWFwcGluZywgc28sIGFyZSBvdXQgb2YgZ2FtdXQgYXMgd2VsbC4NCisvLw0KKy8vICoqV0FSTklORzogVGhpcyBhbGdvcml0aG0gZG9lcyBhc3N1bWUgdGhhdCBnYW11dCByZW1hcHBpbmcgYWxnb3JpdGhtcyBkb2VzIE5PVCBtb3ZlIGluLWdhbXV0IGNvbG9ycywNCisvLyBvZiBjb3Vyc2UsIG1hbnkgcGVyY2VwdHVhbCBhbmQgc2F0dXJhdGlvbiBpbnRlbnRzIGRvZXMgbm90IHdvcmsgaW4gc3VjaCB3YXksIGJ1dCByZWxhdGl2LiBvbmVzIHNob3VsZC4NCisNCitjbXNQaXBlbGluZSogX2Ntc0NyZWF0ZUdhbXV0Q2hlY2tQaXBlbGluZShjbXNDb250ZXh0IENvbnRleHRJRCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBoUHJvZmlsZXNbXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNCb29sICBCUENbXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW50ZW50c1tdLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvblN0YXRlc1tdLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBuR2FtdXRQQ1Nwb3NpdGlvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBoR2FtdXQpDQorew0KKyAgICBjbXNIUFJPRklMRSBoTGFiOw0KKyAgICBjbXNQaXBlbGluZSogR2FtdXQ7DQorICAgIGNtc1N0YWdlKiBDTFVUOw0KKyAgICBjbXNVSW50MzJOdW1iZXIgZHdGb3JtYXQ7DQorICAgIEdBTVVUQ0hBSU4gQ2hhaW47DQorICAgIGludCBuQ2hhbm5lbHMsIG5HcmlkcG9pbnRzOw0KKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENvbG9yU3BhY2U7DQorICAgIGNtc1VJbnQzMk51bWJlciBpOw0KKyAgICBjbXNIUFJPRklMRSBQcm9maWxlTGlzdFsyNTZdOw0KKyAgICBjbXNCb29sICAgICBCUENMaXN0WzI1Nl07DQorICAgIGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvbkxpc3RbMjU2XTsNCisgICAgY21zVUludDMyTnVtYmVyIEludGVudExpc3RbMjU2XTsNCisNCisgICAgbWVtc2V0KCZDaGFpbiwgMCwgc2l6ZW9mKEdBTVVUQ0hBSU4pKTsNCisNCisNCisgICAgaWYgKG5HYW11dFBDU3Bvc2l0aW9uIDw9IDAgfHwgbkdhbXV0UENTcG9zaXRpb24gPiAyNTUpIHsNCisgICAgICAgIGNtc1NpZ25hbEVycm9yKENvbnRleHRJRCwgY21zRVJST1JfUkFOR0UsICJXcm9uZyBwb3NpdGlvbiBvZiBQQ1MuIDEuLjI1NSBleHBlY3RlZCwgJWQgZm91bmQuIiwgbkdhbXV0UENTcG9zaXRpb24pOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisNCisgICAgaExhYiA9IGNtc0NyZWF0ZUxhYjRQcm9maWxlVEhSKENvbnRleHRJRCwgTlVMTCk7DQorICAgIGlmIChoTGFiID09IE5VTEwpIHJldHVybiBOVUxMOw0KKw0KKw0KKyAgICAvLyBUaGUgZmlndXJlIG9mIG1lcml0LiBPbiBtYXRyaXgtc2hhcGVyIHByb2ZpbGVzLCBzaG91bGQgYmUgYWxtb3N0IHplcm8gYXMNCisgICAgLy8gdGhlIGNvbnZlcnNpb24gaXMgcHJldHR5IGV4YWN0LiBPbiBMVVQgYmFzZWQgcHJvZmlsZXMsIGRpZmZlcmVudCByZXNvbHV0aW9ucw0KKyAgICAvLyBvZiBpbnB1dCBhbmQgb3V0cHV0IENMVVQgbWF5IHJlc3VsdCBpbiBkaWZmZXJlbmNlcy4NCisNCisgICAgaWYgKGNtc0lzTWF0cml4U2hhcGVyKGhHYW11dCkpIHsNCisNCisgICAgICAgIENoYWluLlRoZXJlc2hvbGQgPSAxLjA7DQorICAgIH0NCisgICAgZWxzZSB7DQorICAgICAgICBDaGFpbi5UaGVyZXNob2xkID0gRVJSX1RIRVJFU0hPTEQ7DQorICAgIH0NCisNCisNCisgICAgLy8gQ3JlYXRlIGEgY29weSBvZiBwYXJhbWV0ZXJzDQorICAgIGZvciAoaT0wOyBpIDwgbkdhbXV0UENTcG9zaXRpb247IGkrKykgew0KKyAgICAgICAgUHJvZmlsZUxpc3RbaV0gICAgPSBoUHJvZmlsZXNbaV07DQorICAgICAgICBCUENMaXN0W2ldICAgICAgICA9IEJQQ1tpXTsNCisgICAgICAgIEFkYXB0YXRpb25MaXN0W2ldID0gQWRhcHRhdGlvblN0YXRlc1tpXTsNCisgICAgICAgIEludGVudExpc3RbaV0gICAgID0gSW50ZW50c1tpXTsNCisgICAgfQ0KKw0KKyAgICAvLyBGaWxsIExhYiBpZGVudGl0eQ0KKyAgICBQcm9maWxlTGlzdFtuR2FtdXRQQ1Nwb3NpdGlvbl0gPSBoTGFiOw0KKyAgICBCUENMaXN0W25HYW11dFBDU3Bvc2l0aW9uXSA9IDA7DQorICAgIEFkYXB0YXRpb25MaXN0W25HYW11dFBDU3Bvc2l0aW9uXSA9IDEuMDsNCisgICAgSW50ZW50TGlzdFtuR2FtdXRQQ1Nwb3NpdGlvbl0gPSBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDOw0KKw0KKw0KKyAgICBDb2xvclNwYWNlICA9IGNtc0dldENvbG9yU3BhY2UoaEdhbXV0KTsNCisNCisgICAgbkNoYW5uZWxzICAgPSBjbXNDaGFubmVsc09mKENvbG9yU3BhY2UpOw0KKyAgICBuR3JpZHBvaW50cyA9IF9jbXNSZWFzb25hYmxlR3JpZHBvaW50c0J5Q29sb3JzcGFjZShDb2xvclNwYWNlLCBjbXNGTEFHU19ISUdIUkVTUFJFQ0FMQyk7DQorICAgIGR3Rm9ybWF0ICAgID0gKENIQU5ORUxTX1NIKG5DaGFubmVscyl8QllURVNfU0goMikpOw0KKw0KKyAgICAvLyAxNiBiaXRzIHRvIExhYiBkb3VibGUNCisgICAgQ2hhaW4uaElucHV0ID0gY21zQ3JlYXRlRXh0ZW5kZWRUcmFuc2Zvcm0oQ29udGV4dElELA0KKyAgICAgICAgbkdhbXV0UENTcG9zaXRpb24gKyAxLA0KKyAgICAgICAgUHJvZmlsZUxpc3QsDQorICAgICAgICBCUENMaXN0LA0KKyAgICAgICAgSW50ZW50TGlzdCwNCisgICAgICAgIEFkYXB0YXRpb25MaXN0LA0KKyAgICAgICAgTlVMTCwgMCwNCisgICAgICAgIGR3Rm9ybWF0LCBUWVBFX0xhYl9EQkwsDQorICAgICAgICBjbXNGTEFHU19OT0NBQ0hFKTsNCisNCisNCisgICAgLy8gRG9lcyBjcmVhdGUgdGhlIGZvcndhcmQgc3RlcC4gTGFiIGRvdWJsZSB0byBkZXZpY2UNCisgICAgZHdGb3JtYXQgICAgPSAoQ0hBTk5FTFNfU0gobkNoYW5uZWxzKXxCWVRFU19TSCgyKSk7DQorICAgIENoYWluLmhGb3J3YXJkID0gY21zQ3JlYXRlVHJhbnNmb3JtVEhSKENvbnRleHRJRCwNCisgICAgICAgIGhMYWIsIFRZUEVfTGFiX0RCTCwNCisgICAgICAgIGhHYW11dCwgZHdGb3JtYXQsDQorICAgICAgICBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDLA0KKyAgICAgICAgY21zRkxBR1NfTk9DQUNIRSk7DQorDQorICAgIC8vIERvZXMgY3JlYXRlIHRoZSBiYWNrd2FyZHMgc3RlcA0KKyAgICBDaGFpbi5oUmV2ZXJzZSA9IGNtc0NyZWF0ZVRyYW5zZm9ybVRIUihDb250ZXh0SUQsIGhHYW11dCwgZHdGb3JtYXQsDQorICAgICAgICBoTGFiLCBUWVBFX0xhYl9EQkwsDQorICAgICAgICBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDLA0KKyAgICAgICAgY21zRkxBR1NfTk9DQUNIRSk7DQorDQorDQorICAgIC8vIEFsbCBvaz8NCisgICAgaWYgKENoYWluLmhJbnB1dCAmJiBDaGFpbi5oRm9yd2FyZCAmJiBDaGFpbi5oUmV2ZXJzZSkgew0KKw0KKyAgICAgICAgLy8gR28gb24sIHRyeSB0byBjb21wdXRlIGdhbXV0IExVVCBmcm9tIFBDUy4gVGhpcyBjb25zaXN0IG9uIGEgc2luZ2xlIGNoYW5uZWwgY29udGFpbmluZw0KKyAgICAgICAgLy8gZEUgd2hlbiBkb2luZyBhIHRyYW5zZm9ybSBiYWNrIGFuZCBmb3J0aCBvbiB0aGUgY29sb3JpbWV0cmljIGludGVudC4NCisNCisgICAgICAgIEdhbXV0ID0gY21zUGlwZWxpbmVBbGxvYyhDb250ZXh0SUQsIDMsIDEpOw0KKyAgICAgICAgaWYgKEdhbXV0ICE9IE5VTEwpIHsNCisNCisgICAgICAgICAgICBDTFVUID0gY21zU3RhZ2VBbGxvY0NMdXQxNmJpdChDb250ZXh0SUQsIG5HcmlkcG9pbnRzLCBuQ2hhbm5lbHMsIDEsIE5VTEwpOw0KKyAgICAgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShHYW11dCwgY21zQVRfQkVHSU4sIENMVVQpKSB7DQorICAgICAgICAgICAgICAgIGNtc1BpcGVsaW5lRnJlZShHYW11dCk7DQorICAgICAgICAgICAgICAgIEdhbXV0ID0gTlVMTDsNCisgICAgICAgICAgICB9IA0KKyAgICAgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICAgICBjbXNTdGFnZVNhbXBsZUNMdXQxNmJpdChDTFVULCBHYW11dFNhbXBsZXIsICh2b2lkKikgJkNoYWluLCAwKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICAgICAgR2FtdXQgPSBOVUxMOyAgIC8vIERpZG4ndCB3b3JrLi4uDQorDQorICAgIC8vIEZyZWUgYWxsIG5lZWRlZCBzdHVmZi4NCisgICAgaWYgKENoYWluLmhJbnB1dCkgICBjbXNEZWxldGVUcmFuc2Zvcm0oQ2hhaW4uaElucHV0KTsNCisgICAgaWYgKENoYWluLmhGb3J3YXJkKSBjbXNEZWxldGVUcmFuc2Zvcm0oQ2hhaW4uaEZvcndhcmQpOw0KKyAgICBpZiAoQ2hhaW4uaFJldmVyc2UpIGNtc0RlbGV0ZVRyYW5zZm9ybShDaGFpbi5oUmV2ZXJzZSk7DQorICAgIGlmIChoTGFiKSBjbXNDbG9zZVByb2ZpbGUoaExhYik7DQorDQorICAgIC8vIEFuZCByZXR1cm4gY29tcHV0ZWQgaHVsbA0KKyAgICByZXR1cm4gR2FtdXQ7DQorfQ0KKw0KKy8vIFRvdGFsIEFyZWEgQ292ZXJhZ2UgZXN0aW1hdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICBjbXNVSW50MzJOdW1iZXIgIG5PdXRwdXRDaGFuczsNCisgICAgY21zSFRSQU5TRk9STSAgICBoUm91bmRUcmlwOw0KKyAgICBjbXNGbG9hdDMyTnVtYmVyIE1heFRBQzsNCisgICAgY21zRmxvYXQzMk51bWJlciBNYXhJbnB1dFtjbXNNQVhDSEFOTkVMU107DQorDQorfSBjbXNUQUNlc3RpbWF0b3I7DQorDQorDQorLy8gVGhpcyBjYWxsYmFjayBqdXN0IGFjY291bnRzIHRoZSBtYXhpbXVtIGluayBkcm9wcGVkIGluIHRoZSBnaXZlbiBub2RlLiBJdCBkb2VzIG5vdCBwb3B1bGF0ZSBhbnkNCisvLyBtZW1vcnksIGFzIHRoZSBkZXN0aW5hdGlvbiB0YWJsZSBpcyBOVUxMLiBJdHMgb25seSBwdXJwb3NlIGl0IHRvIGtub3cgdGhlIGdsb2JhbCBtYXhpbXVtLg0KK3N0YXRpYw0KK2ludCBFc3RpbWF0ZVRBQyhyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5bXSwgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIE91dFtdLCByZWdpc3RlciB2b2lkICogQ2FyZ28pDQorew0KKyAgICBjbXNUQUNlc3RpbWF0b3IqIGJwID0gKGNtc1RBQ2VzdGltYXRvciopIENhcmdvOw0KKyAgICBjbXNGbG9hdDMyTnVtYmVyIFJvdW5kVHJpcFtjbXNNQVhDSEFOTkVMU107DQorICAgIGNtc1VJbnQzMk51bWJlciBpOw0KKyAgICBjbXNGbG9hdDMyTnVtYmVyIFN1bTsNCisNCisNCisgICAgLy8gRXZhbHVhdGUgdGhlIHhmb3JtDQorICAgIGNtc0RvVHJhbnNmb3JtKGJwLT5oUm91bmRUcmlwLCBJbiwgUm91bmRUcmlwLCAxKTsNCisNCisgICAgLy8gQWxsIGFsbCBhbW91bnRzIG9mIGluaw0KKyAgICBmb3IgKFN1bT0wLCBpPTA7IGkgPCBicCAtPm5PdXRwdXRDaGFuczsgaSsrKQ0KKyAgICAgICAgICAgIFN1bSArPSBSb3VuZFRyaXBbaV07DQorDQorICAgIC8vIElmIGFib3ZlIG1heGltdW0sIGtlZXAgdHJhY2sgb2YgaW5wdXQgdmFsdWVzDQorICAgIGlmIChTdW0gPiBicCAtPk1heFRBQykgew0KKw0KKyAgICAgICAgICAgIGJwIC0+TWF4VEFDID0gU3VtOw0KKw0KKyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgYnAgLT5uT3V0cHV0Q2hhbnM7IGkrKykgew0KKyAgICAgICAgICAgICAgICBicCAtPk1heElucHV0W2ldID0gSW5baV07DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiBUUlVFOw0KKw0KKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKE91dCk7DQorfQ0KKw0KKw0KKy8vIERldGVjdCBUb3RhbCBhcmVhIGNvdmVyYWdlIG9mIHRoZSBwcm9maWxlDQorY21zRmxvYXQ2NE51bWJlciBDTVNFWFBPUlQgY21zRGV0ZWN0VEFDKGNtc0hQUk9GSUxFIGhQcm9maWxlKQ0KK3sNCisgICAgY21zVEFDZXN0aW1hdG9yIGJwOw0KKyAgICBjbXNVSW50MzJOdW1iZXIgZHdGb3JtYXR0ZXI7DQorICAgIGNtc1VJbnQzMk51bWJlciBHcmlkUG9pbnRzW01BWF9JTlBVVF9ESU1FTlNJT05TXTsNCisgICAgY21zSFBST0ZJTEUgaExhYjsNCisgICAgY21zQ29udGV4dCBDb250ZXh0SUQgPSBjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlKTsNCisNCisgICAgLy8gVEFDIG9ubHkgd29ya3Mgb24gb3V0cHV0IHByb2ZpbGVzDQorICAgIGlmIChjbXNHZXREZXZpY2VDbGFzcyhoUHJvZmlsZSkgIT0gY21zU2lnT3V0cHV0Q2xhc3MpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIC8vIENyZWF0ZSBhIGZha2UgZm9ybWF0dGVyIGZvciByZXN1bHQNCisgICAgZHdGb3JtYXR0ZXIgPSBjbXNGb3JtYXR0ZXJGb3JDb2xvcnNwYWNlT2ZQcm9maWxlKGhQcm9maWxlLCA0LCBUUlVFKTsNCisNCisgICAgYnAubk91dHB1dENoYW5zID0gVF9DSEFOTkVMUyhkd0Zvcm1hdHRlcik7DQorICAgIGJwLk1heFRBQyA9IDA7ICAgIC8vIEluaXRpYWwgVEFDIGlzIDANCisNCisgICAgLy8gIGZvciBzYWZldHkNCisgICAgaWYgKGJwLm5PdXRwdXRDaGFucyA+PSBjbXNNQVhDSEFOTkVMUykgcmV0dXJuIDA7DQorDQorICAgIGhMYWIgPSBjbXNDcmVhdGVMYWI0UHJvZmlsZVRIUihDb250ZXh0SUQsIE5VTEwpOw0KKyAgICBpZiAoaExhYiA9PSBOVUxMKSByZXR1cm4gMDsNCisgICAgLy8gU2V0dXAgYSByb3VuZHRyaXAgb24gcGVyY2VwdHVhbCBpbnRlbnQgaW4gb3V0cHV0IHByb2ZpbGUgZm9yIFRBQyBlc3RpbWF0aW9uDQorICAgIGJwLmhSb3VuZFRyaXAgPSBjbXNDcmVhdGVUcmFuc2Zvcm1USFIoQ29udGV4dElELCBoTGFiLCBUWVBFX0xhYl8xNiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoUHJvZmlsZSwgZHdGb3JtYXR0ZXIsIElOVEVOVF9QRVJDRVBUVUFMLCBjbXNGTEFHU19OT09QVElNSVpFfGNtc0ZMQUdTX05PQ0FDSEUpOw0KKw0KKyAgICBjbXNDbG9zZVByb2ZpbGUoaExhYik7DQorICAgIGlmIChicC5oUm91bmRUcmlwID09IE5VTEwpIHJldHVybiAwOw0KKw0KKyAgICAvLyBGb3IgTCogd2Ugb25seSBuZWVkIGJsYWNrIGFuZCB3aGl0ZS4gRm9yIEMqIHdlIG5lZWQgbWFueSBwb2ludHMNCisgICAgR3JpZFBvaW50c1swXSA9IDY7DQorICAgIEdyaWRQb2ludHNbMV0gPSA3NDsNCisgICAgR3JpZFBvaW50c1syXSA9IDc0Ow0KKw0KKw0KKyAgICBpZiAoIWNtc1NsaWNlU3BhY2UxNigzLCBHcmlkUG9pbnRzLCBFc3RpbWF0ZVRBQywgJmJwKSkgew0KKyAgICAgICAgYnAuTWF4VEFDID0gMDsNCisgICAgfQ0KKw0KKyAgICBjbXNEZWxldGVUcmFuc2Zvcm0oYnAuaFJvdW5kVHJpcCk7DQorDQorICAgIC8vIFJlc3VsdHMgaW4gJQ0KKyAgICByZXR1cm4gYnAuTWF4VEFDOw0KK30NCisNCisNCisvLyBDYXJlZnVsbHksICBjbGFtcCBvbiBDSUVMYWIgc3BhY2UuDQorDQorY21zQm9vbCBDTVNFWFBPUlQgY21zRGVzYXR1cmF0ZUxhYihjbXNDSUVMYWIqIExhYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbWF4LCBkb3VibGUgYW1pbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBibWF4LCBkb3VibGUgYm1pbikNCit7DQorDQorICAgIC8vIFdob2xlIEx1bWEgc3VyZmFjZSB0byB6ZXJvDQorDQorICAgIGlmIChMYWIgLT4gTCA8IDApIHsNCisNCisgICAgICAgIExhYi0+IEwgPSBMYWItPmEgPSBMYWItPiBiID0gMC4wOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorDQorICAgIC8vIENsYW1wIHdoaXRlLCBESVNDQVJEIEhJR0hMSUdIVFMuIFRoaXMgaXMgZG9uZQ0KKyAgICAvLyBpbiBzdWNoIHdheSBiZWNhdXNlIGljYyBzcGVjIGRvZXNuJ3QgYWxsb3cgdGhlDQorICAgIC8vIHVzZSBvZiBMPjEwMCBhcyBhIGhpZ2hsaWdodCBtZWFucy4NCisNCisgICAgaWYgKExhYi0+TCA+IDEwMCkNCisgICAgICAgIExhYiAtPiBMID0gMTAwOw0KKw0KKyAgICAvLyBDaGVjayBvdXQgZ2FtdXQgcHJpc20sIG9uIGEsIGIgZmFjZXMNCisNCisgICAgaWYgKExhYiAtPiBhIDwgYW1pbiB8fCBMYWItPmEgPiBhbWF4fHwNCisgICAgICAgIExhYiAtPiBiIDwgYm1pbiB8fCBMYWItPmIgPiBibWF4KSB7DQorDQorICAgICAgICAgICAgY21zQ0lFTENoIExDaDsNCisgICAgICAgICAgICBkb3VibGUgaCwgc2xvcGU7DQorDQorICAgICAgICAgICAgLy8gRmFsbHMgb3V0c2lkZSBhLCBiIGxpbWl0cy4gVHJhbnNwb3J0cyB0byBMQ2ggc3BhY2UsDQorICAgICAgICAgICAgLy8gYW5kIHRoZW4gZG8gdGhlIGNsaXBwaW5nDQorDQorDQorICAgICAgICAgICAgaWYgKExhYiAtPiBhID09IDAuMCkgeyAvLyBJcyBodWUgZXhhY3RseSA5MD8NCisNCisgICAgICAgICAgICAgICAgLy8gYXRhbiB3aWxsIG5vdCB3b3JrLCBzbyBjbGFtcCBoZXJlDQorICAgICAgICAgICAgICAgIExhYiAtPiBiID0gTGFiLT5iIDwgMCA/IGJtaW4gOiBibWF4Ow0KKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgY21zTGFiMkxDaCgmTENoLCBMYWIpOw0KKw0KKyAgICAgICAgICAgIHNsb3BlID0gTGFiIC0+IGIgLyBMYWIgLT4gYTsNCisgICAgICAgICAgICBoID0gTENoLmg7DQorDQorICAgICAgICAgICAgLy8gVGhlcmUgYXJlIDQgem9uZXMNCisNCisgICAgICAgICAgICBpZiAoKGggPj0gMC4gJiYgaCA8IDQ1LikgfHwNCisgICAgICAgICAgICAgICAgKGggPj0gMzE1ICYmIGggPD0gMzYwLikpIHsNCisNCisgICAgICAgICAgICAgICAgICAgIC8vIGNsaXAgYnkgYW1heA0KKyAgICAgICAgICAgICAgICAgICAgTGFiIC0+IGEgPSBhbWF4Ow0KKyAgICAgICAgICAgICAgICAgICAgTGFiIC0+IGIgPSBhbWF4ICogc2xvcGU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgaWYgKGggPj0gNDUuICYmIGggPCAxMzUuKQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICAvLyBjbGlwIGJ5IGJtYXgNCisgICAgICAgICAgICAgICAgICAgIExhYiAtPiBiID0gYm1heDsNCisgICAgICAgICAgICAgICAgICAgIExhYiAtPiBhID0gYm1heCAvIHNsb3BlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgICAgIGlmIChoID49IDEzNS4gJiYgaCA8IDIyNS4pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGlwIGJ5IGFtaW4NCisgICAgICAgICAgICAgICAgICAgICAgICBMYWIgLT4gYSA9IGFtaW47DQorICAgICAgICAgICAgICAgICAgICAgICAgTGFiIC0+IGIgPSBhbWluICogc2xvcGU7DQorDQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMjI1LiAmJiBoIDwgMzE1Likgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGlwIGJ5IGJtaW4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiIC0+IGIgPSBibWluOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWIgLT4gYSA9IGJtaW4gLyBzbG9wZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNTaWduYWxFcnJvcigwLCBjbXNFUlJPUl9SQU5HRSwgIkludmFsaWQgYW5nbGUiKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2hhbGYuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNoYWxmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzOGI1NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNoYWxmLmMKQEAgLTAsMCArMSw1MzQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gIExpdHRsZSBDb2xvciBNYW5hZ2VtZW50IFN5c3RlbQorLy8gIENvcHlyaWdodCAoYykgMTk5OC0yMDEyIE1hcnRpIE1hcmlhIFNhZ3VlcgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworLy8gYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisvLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUKKy8vIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPCisvLyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorLy8gTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorLy8gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisvLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAibGNtczJfaW50ZXJuYWwuaCIKKworI2lmbmRlZiBDTVNfTk9fSEFMRl9TVVBQT1JUIAorCisvLyBUaGlzIGNvZGUgaXMgaW5zcGlyZWQgaW4gdGhlIHBhcGVyICJGYXN0IEhhbGYgRmxvYXQgQ29udmVyc2lvbnMiCisvLyBieSBKZXJvZW4gdmFuIGRlciBaaWpwCisKK3N0YXRpYyBjbXNVSW50MzJOdW1iZXIgTWFudGlzc2FbMjA0OF0gPSB7CisKKzB4MDAwMDAwMDAsIDB4MzM4MDAwMDAsIDB4MzQwMDAwMDAsIDB4MzQ0MDAwMDAsIDB4MzQ4MDAwMDAsIDB4MzRhMDAwMDAsCisweDM0YzAwMDAwLCAweDM0ZTAwMDAwLCAweDM1MDAwMDAwLCAweDM1MTAwMDAwLCAweDM1MjAwMDAwLCAweDM1MzAwMDAwLAorMHgzNTQwMDAwMCwgMHgzNTUwMDAwMCwgMHgzNTYwMDAwMCwgMHgzNTcwMDAwMCwgMHgzNTgwMDAwMCwgMHgzNTg4MDAwMCwKKzB4MzU5MDAwMDAsIDB4MzU5ODAwMDAsIDB4MzVhMDAwMDAsIDB4MzVhODAwMDAsIDB4MzViMDAwMDAsIDB4MzViODAwMDAsCisweDM1YzAwMDAwLCAweDM1YzgwMDAwLCAweDM1ZDAwMDAwLCAweDM1ZDgwMDAwLCAweDM1ZTAwMDAwLCAweDM1ZTgwMDAwLAorMHgzNWYwMDAwMCwgMHgzNWY4MDAwMCwgMHgzNjAwMDAwMCwgMHgzNjA0MDAwMCwgMHgzNjA4MDAwMCwgMHgzNjBjMDAwMCwKKzB4MzYxMDAwMDAsIDB4MzYxNDAwMDAsIDB4MzYxODAwMDAsIDB4MzYxYzAwMDAsIDB4MzYyMDAwMDAsIDB4MzYyNDAwMDAsCisweDM2MjgwMDAwLCAweDM2MmMwMDAwLCAweDM2MzAwMDAwLCAweDM2MzQwMDAwLCAweDM2MzgwMDAwLCAweDM2M2MwMDAwLAorMHgzNjQwMDAwMCwgMHgzNjQ0MDAwMCwgMHgzNjQ4MDAwMCwgMHgzNjRjMDAwMCwgMHgzNjUwMDAwMCwgMHgzNjU0MDAwMCwKKzB4MzY1ODAwMDAsIDB4MzY1YzAwMDAsIDB4MzY2MDAwMDAsIDB4MzY2NDAwMDAsIDB4MzY2ODAwMDAsIDB4MzY2YzAwMDAsCisweDM2NzAwMDAwLCAweDM2NzQwMDAwLCAweDM2NzgwMDAwLCAweDM2N2MwMDAwLCAweDM2ODAwMDAwLCAweDM2ODIwMDAwLAorMHgzNjg0MDAwMCwgMHgzNjg2MDAwMCwgMHgzNjg4MDAwMCwgMHgzNjhhMDAwMCwgMHgzNjhjMDAwMCwgMHgzNjhlMDAwMCwKKzB4MzY5MDAwMDAsIDB4MzY5MjAwMDAsIDB4MzY5NDAwMDAsIDB4MzY5NjAwMDAsIDB4MzY5ODAwMDAsIDB4MzY5YTAwMDAsCisweDM2OWMwMDAwLCAweDM2OWUwMDAwLCAweDM2YTAwMDAwLCAweDM2YTIwMDAwLCAweDM2YTQwMDAwLCAweDM2YTYwMDAwLAorMHgzNmE4MDAwMCwgMHgzNmFhMDAwMCwgMHgzNmFjMDAwMCwgMHgzNmFlMDAwMCwgMHgzNmIwMDAwMCwgMHgzNmIyMDAwMCwKKzB4MzZiNDAwMDAsIDB4MzZiNjAwMDAsIDB4MzZiODAwMDAsIDB4MzZiYTAwMDAsIDB4MzZiYzAwMDAsIDB4MzZiZTAwMDAsCisweDM2YzAwMDAwLCAweDM2YzIwMDAwLCAweDM2YzQwMDAwLCAweDM2YzYwMDAwLCAweDM2YzgwMDAwLCAweDM2Y2EwMDAwLAorMHgzNmNjMDAwMCwgMHgzNmNlMDAwMCwgMHgzNmQwMDAwMCwgMHgzNmQyMDAwMCwgMHgzNmQ0MDAwMCwgMHgzNmQ2MDAwMCwKKzB4MzZkODAwMDAsIDB4MzZkYTAwMDAsIDB4MzZkYzAwMDAsIDB4MzZkZTAwMDAsIDB4MzZlMDAwMDAsIDB4MzZlMjAwMDAsCisweDM2ZTQwMDAwLCAweDM2ZTYwMDAwLCAweDM2ZTgwMDAwLCAweDM2ZWEwMDAwLCAweDM2ZWMwMDAwLCAweDM2ZWUwMDAwLAorMHgzNmYwMDAwMCwgMHgzNmYyMDAwMCwgMHgzNmY0MDAwMCwgMHgzNmY2MDAwMCwgMHgzNmY4MDAwMCwgMHgzNmZhMDAwMCwKKzB4MzZmYzAwMDAsIDB4MzZmZTAwMDAsIDB4MzcwMDAwMDAsIDB4MzcwMTAwMDAsIDB4MzcwMjAwMDAsIDB4MzcwMzAwMDAsCisweDM3MDQwMDAwLCAweDM3MDUwMDAwLCAweDM3MDYwMDAwLCAweDM3MDcwMDAwLCAweDM3MDgwMDAwLCAweDM3MDkwMDAwLAorMHgzNzBhMDAwMCwgMHgzNzBiMDAwMCwgMHgzNzBjMDAwMCwgMHgzNzBkMDAwMCwgMHgzNzBlMDAwMCwgMHgzNzBmMDAwMCwKKzB4MzcxMDAwMDAsIDB4MzcxMTAwMDAsIDB4MzcxMjAwMDAsIDB4MzcxMzAwMDAsIDB4MzcxNDAwMDAsIDB4MzcxNTAwMDAsCisweDM3MTYwMDAwLCAweDM3MTcwMDAwLCAweDM3MTgwMDAwLCAweDM3MTkwMDAwLCAweDM3MWEwMDAwLCAweDM3MWIwMDAwLAorMHgzNzFjMDAwMCwgMHgzNzFkMDAwMCwgMHgzNzFlMDAwMCwgMHgzNzFmMDAwMCwgMHgzNzIwMDAwMCwgMHgzNzIxMDAwMCwKKzB4MzcyMjAwMDAsIDB4MzcyMzAwMDAsIDB4MzcyNDAwMDAsIDB4MzcyNTAwMDAsIDB4MzcyNjAwMDAsIDB4MzcyNzAwMDAsCisweDM3MjgwMDAwLCAweDM3MjkwMDAwLCAweDM3MmEwMDAwLCAweDM3MmIwMDAwLCAweDM3MmMwMDAwLCAweDM3MmQwMDAwLAorMHgzNzJlMDAwMCwgMHgzNzJmMDAwMCwgMHgzNzMwMDAwMCwgMHgzNzMxMDAwMCwgMHgzNzMyMDAwMCwgMHgzNzMzMDAwMCwKKzB4MzczNDAwMDAsIDB4MzczNTAwMDAsIDB4MzczNjAwMDAsIDB4MzczNzAwMDAsIDB4MzczODAwMDAsIDB4MzczOTAwMDAsCisweDM3M2EwMDAwLCAweDM3M2IwMDAwLCAweDM3M2MwMDAwLCAweDM3M2QwMDAwLCAweDM3M2UwMDAwLCAweDM3M2YwMDAwLAorMHgzNzQwMDAwMCwgMHgzNzQxMDAwMCwgMHgzNzQyMDAwMCwgMHgzNzQzMDAwMCwgMHgzNzQ0MDAwMCwgMHgzNzQ1MDAwMCwKKzB4Mzc0NjAwMDAsIDB4Mzc0NzAwMDAsIDB4Mzc0ODAwMDAsIDB4Mzc0OTAwMDAsIDB4Mzc0YTAwMDAsIDB4Mzc0YjAwMDAsCisweDM3NGMwMDAwLCAweDM3NGQwMDAwLCAweDM3NGUwMDAwLCAweDM3NGYwMDAwLCAweDM3NTAwMDAwLCAweDM3NTEwMDAwLAorMHgzNzUyMDAwMCwgMHgzNzUzMDAwMCwgMHgzNzU0MDAwMCwgMHgzNzU1MDAwMCwgMHgzNzU2MDAwMCwgMHgzNzU3MDAwMCwKKzB4Mzc1ODAwMDAsIDB4Mzc1OTAwMDAsIDB4Mzc1YTAwMDAsIDB4Mzc1YjAwMDAsIDB4Mzc1YzAwMDAsIDB4Mzc1ZDAwMDAsCisweDM3NWUwMDAwLCAweDM3NWYwMDAwLCAweDM3NjAwMDAwLCAweDM3NjEwMDAwLCAweDM3NjIwMDAwLCAweDM3NjMwMDAwLAorMHgzNzY0MDAwMCwgMHgzNzY1MDAwMCwgMHgzNzY2MDAwMCwgMHgzNzY3MDAwMCwgMHgzNzY4MDAwMCwgMHgzNzY5MDAwMCwKKzB4Mzc2YTAwMDAsIDB4Mzc2YjAwMDAsIDB4Mzc2YzAwMDAsIDB4Mzc2ZDAwMDAsIDB4Mzc2ZTAwMDAsIDB4Mzc2ZjAwMDAsCisweDM3NzAwMDAwLCAweDM3NzEwMDAwLCAweDM3NzIwMDAwLCAweDM3NzMwMDAwLCAweDM3NzQwMDAwLCAweDM3NzUwMDAwLAorMHgzNzc2MDAwMCwgMHgzNzc3MDAwMCwgMHgzNzc4MDAwMCwgMHgzNzc5MDAwMCwgMHgzNzdhMDAwMCwgMHgzNzdiMDAwMCwKKzB4Mzc3YzAwMDAsIDB4Mzc3ZDAwMDAsIDB4Mzc3ZTAwMDAsIDB4Mzc3ZjAwMDAsIDB4Mzc4MDAwMDAsIDB4Mzc4MDgwMDAsCisweDM3ODEwMDAwLCAweDM3ODE4MDAwLCAweDM3ODIwMDAwLCAweDM3ODI4MDAwLCAweDM3ODMwMDAwLCAweDM3ODM4MDAwLAorMHgzNzg0MDAwMCwgMHgzNzg0ODAwMCwgMHgzNzg1MDAwMCwgMHgzNzg1ODAwMCwgMHgzNzg2MDAwMCwgMHgzNzg2ODAwMCwKKzB4Mzc4NzAwMDAsIDB4Mzc4NzgwMDAsIDB4Mzc4ODAwMDAsIDB4Mzc4ODgwMDAsIDB4Mzc4OTAwMDAsIDB4Mzc4OTgwMDAsCisweDM3OGEwMDAwLCAweDM3OGE4MDAwLCAweDM3OGIwMDAwLCAweDM3OGI4MDAwLCAweDM3OGMwMDAwLCAweDM3OGM4MDAwLAorMHgzNzhkMDAwMCwgMHgzNzhkODAwMCwgMHgzNzhlMDAwMCwgMHgzNzhlODAwMCwgMHgzNzhmMDAwMCwgMHgzNzhmODAwMCwKKzB4Mzc5MDAwMDAsIDB4Mzc5MDgwMDAsIDB4Mzc5MTAwMDAsIDB4Mzc5MTgwMDAsIDB4Mzc5MjAwMDAsIDB4Mzc5MjgwMDAsCisweDM3OTMwMDAwLCAweDM3OTM4MDAwLCAweDM3OTQwMDAwLCAweDM3OTQ4MDAwLCAweDM3OTUwMDAwLCAweDM3OTU4MDAwLAorMHgzNzk2MDAwMCwgMHgzNzk2ODAwMCwgMHgzNzk3MDAwMCwgMHgzNzk3ODAwMCwgMHgzNzk4MDAwMCwgMHgzNzk4ODAwMCwKKzB4Mzc5OTAwMDAsIDB4Mzc5OTgwMDAsIDB4Mzc5YTAwMDAsIDB4Mzc5YTgwMDAsIDB4Mzc5YjAwMDAsIDB4Mzc5YjgwMDAsCisweDM3OWMwMDAwLCAweDM3OWM4MDAwLCAweDM3OWQwMDAwLCAweDM3OWQ4MDAwLCAweDM3OWUwMDAwLCAweDM3OWU4MDAwLAorMHgzNzlmMDAwMCwgMHgzNzlmODAwMCwgMHgzN2EwMDAwMCwgMHgzN2EwODAwMCwgMHgzN2ExMDAwMCwgMHgzN2ExODAwMCwKKzB4MzdhMjAwMDAsIDB4MzdhMjgwMDAsIDB4MzdhMzAwMDAsIDB4MzdhMzgwMDAsIDB4MzdhNDAwMDAsIDB4MzdhNDgwMDAsCisweDM3YTUwMDAwLCAweDM3YTU4MDAwLCAweDM3YTYwMDAwLCAweDM3YTY4MDAwLCAweDM3YTcwMDAwLCAweDM3YTc4MDAwLAorMHgzN2E4MDAwMCwgMHgzN2E4ODAwMCwgMHgzN2E5MDAwMCwgMHgzN2E5ODAwMCwgMHgzN2FhMDAwMCwgMHgzN2FhODAwMCwKKzB4MzdhYjAwMDAsIDB4MzdhYjgwMDAsIDB4MzdhYzAwMDAsIDB4MzdhYzgwMDAsIDB4MzdhZDAwMDAsIDB4MzdhZDgwMDAsCisweDM3YWUwMDAwLCAweDM3YWU4MDAwLCAweDM3YWYwMDAwLCAweDM3YWY4MDAwLCAweDM3YjAwMDAwLCAweDM3YjA4MDAwLAorMHgzN2IxMDAwMCwgMHgzN2IxODAwMCwgMHgzN2IyMDAwMCwgMHgzN2IyODAwMCwgMHgzN2IzMDAwMCwgMHgzN2IzODAwMCwKKzB4MzdiNDAwMDAsIDB4MzdiNDgwMDAsIDB4MzdiNTAwMDAsIDB4MzdiNTgwMDAsIDB4MzdiNjAwMDAsIDB4MzdiNjgwMDAsCisweDM3YjcwMDAwLCAweDM3Yjc4MDAwLCAweDM3YjgwMDAwLCAweDM3Yjg4MDAwLCAweDM3YjkwMDAwLCAweDM3Yjk4MDAwLAorMHgzN2JhMDAwMCwgMHgzN2JhODAwMCwgMHgzN2JiMDAwMCwgMHgzN2JiODAwMCwgMHgzN2JjMDAwMCwgMHgzN2JjODAwMCwKKzB4MzdiZDAwMDAsIDB4MzdiZDgwMDAsIDB4MzdiZTAwMDAsIDB4MzdiZTgwMDAsIDB4MzdiZjAwMDAsIDB4MzdiZjgwMDAsCisweDM3YzAwMDAwLCAweDM3YzA4MDAwLCAweDM3YzEwMDAwLCAweDM3YzE4MDAwLCAweDM3YzIwMDAwLCAweDM3YzI4MDAwLAorMHgzN2MzMDAwMCwgMHgzN2MzODAwMCwgMHgzN2M0MDAwMCwgMHgzN2M0ODAwMCwgMHgzN2M1MDAwMCwgMHgzN2M1ODAwMCwKKzB4MzdjNjAwMDAsIDB4MzdjNjgwMDAsIDB4MzdjNzAwMDAsIDB4MzdjNzgwMDAsIDB4MzdjODAwMDAsIDB4MzdjODgwMDAsCisweDM3YzkwMDAwLCAweDM3Yzk4MDAwLCAweDM3Y2EwMDAwLCAweDM3Y2E4MDAwLCAweDM3Y2IwMDAwLCAweDM3Y2I4MDAwLAorMHgzN2NjMDAwMCwgMHgzN2NjODAwMCwgMHgzN2NkMDAwMCwgMHgzN2NkODAwMCwgMHgzN2NlMDAwMCwgMHgzN2NlODAwMCwKKzB4MzdjZjAwMDAsIDB4MzdjZjgwMDAsIDB4MzdkMDAwMDAsIDB4MzdkMDgwMDAsIDB4MzdkMTAwMDAsIDB4MzdkMTgwMDAsCisweDM3ZDIwMDAwLCAweDM3ZDI4MDAwLCAweDM3ZDMwMDAwLCAweDM3ZDM4MDAwLCAweDM3ZDQwMDAwLCAweDM3ZDQ4MDAwLAorMHgzN2Q1MDAwMCwgMHgzN2Q1ODAwMCwgMHgzN2Q2MDAwMCwgMHgzN2Q2ODAwMCwgMHgzN2Q3MDAwMCwgMHgzN2Q3ODAwMCwKKzB4MzdkODAwMDAsIDB4MzdkODgwMDAsIDB4MzdkOTAwMDAsIDB4MzdkOTgwMDAsIDB4MzdkYTAwMDAsIDB4MzdkYTgwMDAsCisweDM3ZGIwMDAwLCAweDM3ZGI4MDAwLCAweDM3ZGMwMDAwLCAweDM3ZGM4MDAwLCAweDM3ZGQwMDAwLCAweDM3ZGQ4MDAwLAorMHgzN2RlMDAwMCwgMHgzN2RlODAwMCwgMHgzN2RmMDAwMCwgMHgzN2RmODAwMCwgMHgzN2UwMDAwMCwgMHgzN2UwODAwMCwKKzB4MzdlMTAwMDAsIDB4MzdlMTgwMDAsIDB4MzdlMjAwMDAsIDB4MzdlMjgwMDAsIDB4MzdlMzAwMDAsIDB4MzdlMzgwMDAsCisweDM3ZTQwMDAwLCAweDM3ZTQ4MDAwLCAweDM3ZTUwMDAwLCAweDM3ZTU4MDAwLCAweDM3ZTYwMDAwLCAweDM3ZTY4MDAwLAorMHgzN2U3MDAwMCwgMHgzN2U3ODAwMCwgMHgzN2U4MDAwMCwgMHgzN2U4ODAwMCwgMHgzN2U5MDAwMCwgMHgzN2U5ODAwMCwKKzB4MzdlYTAwMDAsIDB4MzdlYTgwMDAsIDB4MzdlYjAwMDAsIDB4MzdlYjgwMDAsIDB4MzdlYzAwMDAsIDB4MzdlYzgwMDAsCisweDM3ZWQwMDAwLCAweDM3ZWQ4MDAwLCAweDM3ZWUwMDAwLCAweDM3ZWU4MDAwLCAweDM3ZWYwMDAwLCAweDM3ZWY4MDAwLAorMHgzN2YwMDAwMCwgMHgzN2YwODAwMCwgMHgzN2YxMDAwMCwgMHgzN2YxODAwMCwgMHgzN2YyMDAwMCwgMHgzN2YyODAwMCwKKzB4MzdmMzAwMDAsIDB4MzdmMzgwMDAsIDB4MzdmNDAwMDAsIDB4MzdmNDgwMDAsIDB4MzdmNTAwMDAsIDB4MzdmNTgwMDAsCisweDM3ZjYwMDAwLCAweDM3ZjY4MDAwLCAweDM3ZjcwMDAwLCAweDM3Zjc4MDAwLCAweDM3ZjgwMDAwLCAweDM3Zjg4MDAwLAorMHgzN2Y5MDAwMCwgMHgzN2Y5ODAwMCwgMHgzN2ZhMDAwMCwgMHgzN2ZhODAwMCwgMHgzN2ZiMDAwMCwgMHgzN2ZiODAwMCwKKzB4MzdmYzAwMDAsIDB4MzdmYzgwMDAsIDB4MzdmZDAwMDAsIDB4MzdmZDgwMDAsIDB4MzdmZTAwMDAsIDB4MzdmZTgwMDAsCisweDM3ZmYwMDAwLCAweDM3ZmY4MDAwLCAweDM4MDAwMDAwLCAweDM4MDA0MDAwLCAweDM4MDA4MDAwLCAweDM4MDBjMDAwLAorMHgzODAxMDAwMCwgMHgzODAxNDAwMCwgMHgzODAxODAwMCwgMHgzODAxYzAwMCwgMHgzODAyMDAwMCwgMHgzODAyNDAwMCwKKzB4MzgwMjgwMDAsIDB4MzgwMmMwMDAsIDB4MzgwMzAwMDAsIDB4MzgwMzQwMDAsIDB4MzgwMzgwMDAsIDB4MzgwM2MwMDAsCisweDM4MDQwMDAwLCAweDM4MDQ0MDAwLCAweDM4MDQ4MDAwLCAweDM4MDRjMDAwLCAweDM4MDUwMDAwLCAweDM4MDU0MDAwLAorMHgzODA1ODAwMCwgMHgzODA1YzAwMCwgMHgzODA2MDAwMCwgMHgzODA2NDAwMCwgMHgzODA2ODAwMCwgMHgzODA2YzAwMCwKKzB4MzgwNzAwMDAsIDB4MzgwNzQwMDAsIDB4MzgwNzgwMDAsIDB4MzgwN2MwMDAsIDB4MzgwODAwMDAsIDB4MzgwODQwMDAsCisweDM4MDg4MDAwLCAweDM4MDhjMDAwLCAweDM4MDkwMDAwLCAweDM4MDk0MDAwLCAweDM4MDk4MDAwLCAweDM4MDljMDAwLAorMHgzODBhMDAwMCwgMHgzODBhNDAwMCwgMHgzODBhODAwMCwgMHgzODBhYzAwMCwgMHgzODBiMDAwMCwgMHgzODBiNDAwMCwKKzB4MzgwYjgwMDAsIDB4MzgwYmMwMDAsIDB4MzgwYzAwMDAsIDB4MzgwYzQwMDAsIDB4MzgwYzgwMDAsIDB4MzgwY2MwMDAsCisweDM4MGQwMDAwLCAweDM4MGQ0MDAwLCAweDM4MGQ4MDAwLCAweDM4MGRjMDAwLCAweDM4MGUwMDAwLCAweDM4MGU0MDAwLAorMHgzODBlODAwMCwgMHgzODBlYzAwMCwgMHgzODBmMDAwMCwgMHgzODBmNDAwMCwgMHgzODBmODAwMCwgMHgzODBmYzAwMCwKKzB4MzgxMDAwMDAsIDB4MzgxMDQwMDAsIDB4MzgxMDgwMDAsIDB4MzgxMGMwMDAsIDB4MzgxMTAwMDAsIDB4MzgxMTQwMDAsCisweDM4MTE4MDAwLCAweDM4MTFjMDAwLCAweDM4MTIwMDAwLCAweDM4MTI0MDAwLCAweDM4MTI4MDAwLCAweDM4MTJjMDAwLAorMHgzODEzMDAwMCwgMHgzODEzNDAwMCwgMHgzODEzODAwMCwgMHgzODEzYzAwMCwgMHgzODE0MDAwMCwgMHgzODE0NDAwMCwKKzB4MzgxNDgwMDAsIDB4MzgxNGMwMDAsIDB4MzgxNTAwMDAsIDB4MzgxNTQwMDAsIDB4MzgxNTgwMDAsIDB4MzgxNWMwMDAsCisweDM4MTYwMDAwLCAweDM4MTY0MDAwLCAweDM4MTY4MDAwLCAweDM4MTZjMDAwLCAweDM4MTcwMDAwLCAweDM4MTc0MDAwLAorMHgzODE3ODAwMCwgMHgzODE3YzAwMCwgMHgzODE4MDAwMCwgMHgzODE4NDAwMCwgMHgzODE4ODAwMCwgMHgzODE4YzAwMCwKKzB4MzgxOTAwMDAsIDB4MzgxOTQwMDAsIDB4MzgxOTgwMDAsIDB4MzgxOWMwMDAsIDB4MzgxYTAwMDAsIDB4MzgxYTQwMDAsCisweDM4MWE4MDAwLCAweDM4MWFjMDAwLCAweDM4MWIwMDAwLCAweDM4MWI0MDAwLCAweDM4MWI4MDAwLCAweDM4MWJjMDAwLAorMHgzODFjMDAwMCwgMHgzODFjNDAwMCwgMHgzODFjODAwMCwgMHgzODFjYzAwMCwgMHgzODFkMDAwMCwgMHgzODFkNDAwMCwKKzB4MzgxZDgwMDAsIDB4MzgxZGMwMDAsIDB4MzgxZTAwMDAsIDB4MzgxZTQwMDAsIDB4MzgxZTgwMDAsIDB4MzgxZWMwMDAsCisweDM4MWYwMDAwLCAweDM4MWY0MDAwLCAweDM4MWY4MDAwLCAweDM4MWZjMDAwLCAweDM4MjAwMDAwLCAweDM4MjA0MDAwLAorMHgzODIwODAwMCwgMHgzODIwYzAwMCwgMHgzODIxMDAwMCwgMHgzODIxNDAwMCwgMHgzODIxODAwMCwgMHgzODIxYzAwMCwKKzB4MzgyMjAwMDAsIDB4MzgyMjQwMDAsIDB4MzgyMjgwMDAsIDB4MzgyMmMwMDAsIDB4MzgyMzAwMDAsIDB4MzgyMzQwMDAsCisweDM4MjM4MDAwLCAweDM4MjNjMDAwLCAweDM4MjQwMDAwLCAweDM4MjQ0MDAwLCAweDM4MjQ4MDAwLCAweDM4MjRjMDAwLAorMHgzODI1MDAwMCwgMHgzODI1NDAwMCwgMHgzODI1ODAwMCwgMHgzODI1YzAwMCwgMHgzODI2MDAwMCwgMHgzODI2NDAwMCwKKzB4MzgyNjgwMDAsIDB4MzgyNmMwMDAsIDB4MzgyNzAwMDAsIDB4MzgyNzQwMDAsIDB4MzgyNzgwMDAsIDB4MzgyN2MwMDAsCisweDM4MjgwMDAwLCAweDM4Mjg0MDAwLCAweDM4Mjg4MDAwLCAweDM4MjhjMDAwLCAweDM4MjkwMDAwLCAweDM4Mjk0MDAwLAorMHgzODI5ODAwMCwgMHgzODI5YzAwMCwgMHgzODJhMDAwMCwgMHgzODJhNDAwMCwgMHgzODJhODAwMCwgMHgzODJhYzAwMCwKKzB4MzgyYjAwMDAsIDB4MzgyYjQwMDAsIDB4MzgyYjgwMDAsIDB4MzgyYmMwMDAsIDB4MzgyYzAwMDAsIDB4MzgyYzQwMDAsCisweDM4MmM4MDAwLCAweDM4MmNjMDAwLCAweDM4MmQwMDAwLCAweDM4MmQ0MDAwLCAweDM4MmQ4MDAwLCAweDM4MmRjMDAwLAorMHgzODJlMDAwMCwgMHgzODJlNDAwMCwgMHgzODJlODAwMCwgMHgzODJlYzAwMCwgMHgzODJmMDAwMCwgMHgzODJmNDAwMCwKKzB4MzgyZjgwMDAsIDB4MzgyZmMwMDAsIDB4MzgzMDAwMDAsIDB4MzgzMDQwMDAsIDB4MzgzMDgwMDAsIDB4MzgzMGMwMDAsCisweDM4MzEwMDAwLCAweDM4MzE0MDAwLCAweDM4MzE4MDAwLCAweDM4MzFjMDAwLCAweDM4MzIwMDAwLCAweDM4MzI0MDAwLAorMHgzODMyODAwMCwgMHgzODMyYzAwMCwgMHgzODMzMDAwMCwgMHgzODMzNDAwMCwgMHgzODMzODAwMCwgMHgzODMzYzAwMCwKKzB4MzgzNDAwMDAsIDB4MzgzNDQwMDAsIDB4MzgzNDgwMDAsIDB4MzgzNGMwMDAsIDB4MzgzNTAwMDAsIDB4MzgzNTQwMDAsCisweDM4MzU4MDAwLCAweDM4MzVjMDAwLCAweDM4MzYwMDAwLCAweDM4MzY0MDAwLCAweDM4MzY4MDAwLCAweDM4MzZjMDAwLAorMHgzODM3MDAwMCwgMHgzODM3NDAwMCwgMHgzODM3ODAwMCwgMHgzODM3YzAwMCwgMHgzODM4MDAwMCwgMHgzODM4NDAwMCwKKzB4MzgzODgwMDAsIDB4MzgzOGMwMDAsIDB4MzgzOTAwMDAsIDB4MzgzOTQwMDAsIDB4MzgzOTgwMDAsIDB4MzgzOWMwMDAsCisweDM4M2EwMDAwLCAweDM4M2E0MDAwLCAweDM4M2E4MDAwLCAweDM4M2FjMDAwLCAweDM4M2IwMDAwLCAweDM4M2I0MDAwLAorMHgzODNiODAwMCwgMHgzODNiYzAwMCwgMHgzODNjMDAwMCwgMHgzODNjNDAwMCwgMHgzODNjODAwMCwgMHgzODNjYzAwMCwKKzB4MzgzZDAwMDAsIDB4MzgzZDQwMDAsIDB4MzgzZDgwMDAsIDB4MzgzZGMwMDAsIDB4MzgzZTAwMDAsIDB4MzgzZTQwMDAsCisweDM4M2U4MDAwLCAweDM4M2VjMDAwLCAweDM4M2YwMDAwLCAweDM4M2Y0MDAwLCAweDM4M2Y4MDAwLCAweDM4M2ZjMDAwLAorMHgzODQwMDAwMCwgMHgzODQwNDAwMCwgMHgzODQwODAwMCwgMHgzODQwYzAwMCwgMHgzODQxMDAwMCwgMHgzODQxNDAwMCwKKzB4Mzg0MTgwMDAsIDB4Mzg0MWMwMDAsIDB4Mzg0MjAwMDAsIDB4Mzg0MjQwMDAsIDB4Mzg0MjgwMDAsIDB4Mzg0MmMwMDAsCisweDM4NDMwMDAwLCAweDM4NDM0MDAwLCAweDM4NDM4MDAwLCAweDM4NDNjMDAwLCAweDM4NDQwMDAwLCAweDM4NDQ0MDAwLAorMHgzODQ0ODAwMCwgMHgzODQ0YzAwMCwgMHgzODQ1MDAwMCwgMHgzODQ1NDAwMCwgMHgzODQ1ODAwMCwgMHgzODQ1YzAwMCwKKzB4Mzg0NjAwMDAsIDB4Mzg0NjQwMDAsIDB4Mzg0NjgwMDAsIDB4Mzg0NmMwMDAsIDB4Mzg0NzAwMDAsIDB4Mzg0NzQwMDAsCisweDM4NDc4MDAwLCAweDM4NDdjMDAwLCAweDM4NDgwMDAwLCAweDM4NDg0MDAwLCAweDM4NDg4MDAwLCAweDM4NDhjMDAwLAorMHgzODQ5MDAwMCwgMHgzODQ5NDAwMCwgMHgzODQ5ODAwMCwgMHgzODQ5YzAwMCwgMHgzODRhMDAwMCwgMHgzODRhNDAwMCwKKzB4Mzg0YTgwMDAsIDB4Mzg0YWMwMDAsIDB4Mzg0YjAwMDAsIDB4Mzg0YjQwMDAsIDB4Mzg0YjgwMDAsIDB4Mzg0YmMwMDAsCisweDM4NGMwMDAwLCAweDM4NGM0MDAwLCAweDM4NGM4MDAwLCAweDM4NGNjMDAwLCAweDM4NGQwMDAwLCAweDM4NGQ0MDAwLAorMHgzODRkODAwMCwgMHgzODRkYzAwMCwgMHgzODRlMDAwMCwgMHgzODRlNDAwMCwgMHgzODRlODAwMCwgMHgzODRlYzAwMCwKKzB4Mzg0ZjAwMDAsIDB4Mzg0ZjQwMDAsIDB4Mzg0ZjgwMDAsIDB4Mzg0ZmMwMDAsIDB4Mzg1MDAwMDAsIDB4Mzg1MDQwMDAsCisweDM4NTA4MDAwLCAweDM4NTBjMDAwLCAweDM4NTEwMDAwLCAweDM4NTE0MDAwLCAweDM4NTE4MDAwLCAweDM4NTFjMDAwLAorMHgzODUyMDAwMCwgMHgzODUyNDAwMCwgMHgzODUyODAwMCwgMHgzODUyYzAwMCwgMHgzODUzMDAwMCwgMHgzODUzNDAwMCwKKzB4Mzg1MzgwMDAsIDB4Mzg1M2MwMDAsIDB4Mzg1NDAwMDAsIDB4Mzg1NDQwMDAsIDB4Mzg1NDgwMDAsIDB4Mzg1NGMwMDAsCisweDM4NTUwMDAwLCAweDM4NTU0MDAwLCAweDM4NTU4MDAwLCAweDM4NTVjMDAwLCAweDM4NTYwMDAwLCAweDM4NTY0MDAwLAorMHgzODU2ODAwMCwgMHgzODU2YzAwMCwgMHgzODU3MDAwMCwgMHgzODU3NDAwMCwgMHgzODU3ODAwMCwgMHgzODU3YzAwMCwKKzB4Mzg1ODAwMDAsIDB4Mzg1ODQwMDAsIDB4Mzg1ODgwMDAsIDB4Mzg1OGMwMDAsIDB4Mzg1OTAwMDAsIDB4Mzg1OTQwMDAsCisweDM4NTk4MDAwLCAweDM4NTljMDAwLCAweDM4NWEwMDAwLCAweDM4NWE0MDAwLCAweDM4NWE4MDAwLCAweDM4NWFjMDAwLAorMHgzODViMDAwMCwgMHgzODViNDAwMCwgMHgzODViODAwMCwgMHgzODViYzAwMCwgMHgzODVjMDAwMCwgMHgzODVjNDAwMCwKKzB4Mzg1YzgwMDAsIDB4Mzg1Y2MwMDAsIDB4Mzg1ZDAwMDAsIDB4Mzg1ZDQwMDAsIDB4Mzg1ZDgwMDAsIDB4Mzg1ZGMwMDAsCisweDM4NWUwMDAwLCAweDM4NWU0MDAwLCAweDM4NWU4MDAwLCAweDM4NWVjMDAwLCAweDM4NWYwMDAwLCAweDM4NWY0MDAwLAorMHgzODVmODAwMCwgMHgzODVmYzAwMCwgMHgzODYwMDAwMCwgMHgzODYwNDAwMCwgMHgzODYwODAwMCwgMHgzODYwYzAwMCwKKzB4Mzg2MTAwMDAsIDB4Mzg2MTQwMDAsIDB4Mzg2MTgwMDAsIDB4Mzg2MWMwMDAsIDB4Mzg2MjAwMDAsIDB4Mzg2MjQwMDAsCisweDM4NjI4MDAwLCAweDM4NjJjMDAwLCAweDM4NjMwMDAwLCAweDM4NjM0MDAwLCAweDM4NjM4MDAwLCAweDM4NjNjMDAwLAorMHgzODY0MDAwMCwgMHgzODY0NDAwMCwgMHgzODY0ODAwMCwgMHgzODY0YzAwMCwgMHgzODY1MDAwMCwgMHgzODY1NDAwMCwKKzB4Mzg2NTgwMDAsIDB4Mzg2NWMwMDAsIDB4Mzg2NjAwMDAsIDB4Mzg2NjQwMDAsIDB4Mzg2NjgwMDAsIDB4Mzg2NmMwMDAsCisweDM4NjcwMDAwLCAweDM4Njc0MDAwLCAweDM4Njc4MDAwLCAweDM4NjdjMDAwLCAweDM4NjgwMDAwLCAweDM4Njg0MDAwLAorMHgzODY4ODAwMCwgMHgzODY4YzAwMCwgMHgzODY5MDAwMCwgMHgzODY5NDAwMCwgMHgzODY5ODAwMCwgMHgzODY5YzAwMCwKKzB4Mzg2YTAwMDAsIDB4Mzg2YTQwMDAsIDB4Mzg2YTgwMDAsIDB4Mzg2YWMwMDAsIDB4Mzg2YjAwMDAsIDB4Mzg2YjQwMDAsCisweDM4NmI4MDAwLCAweDM4NmJjMDAwLCAweDM4NmMwMDAwLCAweDM4NmM0MDAwLCAweDM4NmM4MDAwLCAweDM4NmNjMDAwLAorMHgzODZkMDAwMCwgMHgzODZkNDAwMCwgMHgzODZkODAwMCwgMHgzODZkYzAwMCwgMHgzODZlMDAwMCwgMHgzODZlNDAwMCwKKzB4Mzg2ZTgwMDAsIDB4Mzg2ZWMwMDAsIDB4Mzg2ZjAwMDAsIDB4Mzg2ZjQwMDAsIDB4Mzg2ZjgwMDAsIDB4Mzg2ZmMwMDAsCisweDM4NzAwMDAwLCAweDM4NzA0MDAwLCAweDM4NzA4MDAwLCAweDM4NzBjMDAwLCAweDM4NzEwMDAwLCAweDM4NzE0MDAwLAorMHgzODcxODAwMCwgMHgzODcxYzAwMCwgMHgzODcyMDAwMCwgMHgzODcyNDAwMCwgMHgzODcyODAwMCwgMHgzODcyYzAwMCwKKzB4Mzg3MzAwMDAsIDB4Mzg3MzQwMDAsIDB4Mzg3MzgwMDAsIDB4Mzg3M2MwMDAsIDB4Mzg3NDAwMDAsIDB4Mzg3NDQwMDAsCisweDM4NzQ4MDAwLCAweDM4NzRjMDAwLCAweDM4NzUwMDAwLCAweDM4NzU0MDAwLCAweDM4NzU4MDAwLCAweDM4NzVjMDAwLAorMHgzODc2MDAwMCwgMHgzODc2NDAwMCwgMHgzODc2ODAwMCwgMHgzODc2YzAwMCwgMHgzODc3MDAwMCwgMHgzODc3NDAwMCwKKzB4Mzg3NzgwMDAsIDB4Mzg3N2MwMDAsIDB4Mzg3ODAwMDAsIDB4Mzg3ODQwMDAsIDB4Mzg3ODgwMDAsIDB4Mzg3OGMwMDAsCisweDM4NzkwMDAwLCAweDM4Nzk0MDAwLCAweDM4Nzk4MDAwLCAweDM4NzljMDAwLCAweDM4N2EwMDAwLCAweDM4N2E0MDAwLAorMHgzODdhODAwMCwgMHgzODdhYzAwMCwgMHgzODdiMDAwMCwgMHgzODdiNDAwMCwgMHgzODdiODAwMCwgMHgzODdiYzAwMCwKKzB4Mzg3YzAwMDAsIDB4Mzg3YzQwMDAsIDB4Mzg3YzgwMDAsIDB4Mzg3Y2MwMDAsIDB4Mzg3ZDAwMDAsIDB4Mzg3ZDQwMDAsCisweDM4N2Q4MDAwLCAweDM4N2RjMDAwLCAweDM4N2UwMDAwLCAweDM4N2U0MDAwLCAweDM4N2U4MDAwLCAweDM4N2VjMDAwLAorMHgzODdmMDAwMCwgMHgzODdmNDAwMCwgMHgzODdmODAwMCwgMHgzODdmYzAwMCwgMHgzODAwMDAwMCwgMHgzODAwMjAwMCwKKzB4MzgwMDQwMDAsIDB4MzgwMDYwMDAsIDB4MzgwMDgwMDAsIDB4MzgwMGEwMDAsIDB4MzgwMGMwMDAsIDB4MzgwMGUwMDAsCisweDM4MDEwMDAwLCAweDM4MDEyMDAwLCAweDM4MDE0MDAwLCAweDM4MDE2MDAwLCAweDM4MDE4MDAwLCAweDM4MDFhMDAwLAorMHgzODAxYzAwMCwgMHgzODAxZTAwMCwgMHgzODAyMDAwMCwgMHgzODAyMjAwMCwgMHgzODAyNDAwMCwgMHgzODAyNjAwMCwKKzB4MzgwMjgwMDAsIDB4MzgwMmEwMDAsIDB4MzgwMmMwMDAsIDB4MzgwMmUwMDAsIDB4MzgwMzAwMDAsIDB4MzgwMzIwMDAsCisweDM4MDM0MDAwLCAweDM4MDM2MDAwLCAweDM4MDM4MDAwLCAweDM4MDNhMDAwLCAweDM4MDNjMDAwLCAweDM4MDNlMDAwLAorMHgzODA0MDAwMCwgMHgzODA0MjAwMCwgMHgzODA0NDAwMCwgMHgzODA0NjAwMCwgMHgzODA0ODAwMCwgMHgzODA0YTAwMCwKKzB4MzgwNGMwMDAsIDB4MzgwNGUwMDAsIDB4MzgwNTAwMDAsIDB4MzgwNTIwMDAsIDB4MzgwNTQwMDAsIDB4MzgwNTYwMDAsCisweDM4MDU4MDAwLCAweDM4MDVhMDAwLCAweDM4MDVjMDAwLCAweDM4MDVlMDAwLCAweDM4MDYwMDAwLCAweDM4MDYyMDAwLAorMHgzODA2NDAwMCwgMHgzODA2NjAwMCwgMHgzODA2ODAwMCwgMHgzODA2YTAwMCwgMHgzODA2YzAwMCwgMHgzODA2ZTAwMCwKKzB4MzgwNzAwMDAsIDB4MzgwNzIwMDAsIDB4MzgwNzQwMDAsIDB4MzgwNzYwMDAsIDB4MzgwNzgwMDAsIDB4MzgwN2EwMDAsCisweDM4MDdjMDAwLCAweDM4MDdlMDAwLCAweDM4MDgwMDAwLCAweDM4MDgyMDAwLCAweDM4MDg0MDAwLCAweDM4MDg2MDAwLAorMHgzODA4ODAwMCwgMHgzODA4YTAwMCwgMHgzODA4YzAwMCwgMHgzODA4ZTAwMCwgMHgzODA5MDAwMCwgMHgzODA5MjAwMCwKKzB4MzgwOTQwMDAsIDB4MzgwOTYwMDAsIDB4MzgwOTgwMDAsIDB4MzgwOWEwMDAsIDB4MzgwOWMwMDAsIDB4MzgwOWUwMDAsCisweDM4MGEwMDAwLCAweDM4MGEyMDAwLCAweDM4MGE0MDAwLCAweDM4MGE2MDAwLCAweDM4MGE4MDAwLCAweDM4MGFhMDAwLAorMHgzODBhYzAwMCwgMHgzODBhZTAwMCwgMHgzODBiMDAwMCwgMHgzODBiMjAwMCwgMHgzODBiNDAwMCwgMHgzODBiNjAwMCwKKzB4MzgwYjgwMDAsIDB4MzgwYmEwMDAsIDB4MzgwYmMwMDAsIDB4MzgwYmUwMDAsIDB4MzgwYzAwMDAsIDB4MzgwYzIwMDAsCisweDM4MGM0MDAwLCAweDM4MGM2MDAwLCAweDM4MGM4MDAwLCAweDM4MGNhMDAwLCAweDM4MGNjMDAwLCAweDM4MGNlMDAwLAorMHgzODBkMDAwMCwgMHgzODBkMjAwMCwgMHgzODBkNDAwMCwgMHgzODBkNjAwMCwgMHgzODBkODAwMCwgMHgzODBkYTAwMCwKKzB4MzgwZGMwMDAsIDB4MzgwZGUwMDAsIDB4MzgwZTAwMDAsIDB4MzgwZTIwMDAsIDB4MzgwZTQwMDAsIDB4MzgwZTYwMDAsCisweDM4MGU4MDAwLCAweDM4MGVhMDAwLCAweDM4MGVjMDAwLCAweDM4MGVlMDAwLCAweDM4MGYwMDAwLCAweDM4MGYyMDAwLAorMHgzODBmNDAwMCwgMHgzODBmNjAwMCwgMHgzODBmODAwMCwgMHgzODBmYTAwMCwgMHgzODBmYzAwMCwgMHgzODBmZTAwMCwKKzB4MzgxMDAwMDAsIDB4MzgxMDIwMDAsIDB4MzgxMDQwMDAsIDB4MzgxMDYwMDAsIDB4MzgxMDgwMDAsIDB4MzgxMGEwMDAsCisweDM4MTBjMDAwLCAweDM4MTBlMDAwLCAweDM4MTEwMDAwLCAweDM4MTEyMDAwLCAweDM4MTE0MDAwLCAweDM4MTE2MDAwLAorMHgzODExODAwMCwgMHgzODExYTAwMCwgMHgzODExYzAwMCwgMHgzODExZTAwMCwgMHgzODEyMDAwMCwgMHgzODEyMjAwMCwKKzB4MzgxMjQwMDAsIDB4MzgxMjYwMDAsIDB4MzgxMjgwMDAsIDB4MzgxMmEwMDAsIDB4MzgxMmMwMDAsIDB4MzgxMmUwMDAsCisweDM4MTMwMDAwLCAweDM4MTMyMDAwLCAweDM4MTM0MDAwLCAweDM4MTM2MDAwLCAweDM4MTM4MDAwLCAweDM4MTNhMDAwLAorMHgzODEzYzAwMCwgMHgzODEzZTAwMCwgMHgzODE0MDAwMCwgMHgzODE0MjAwMCwgMHgzODE0NDAwMCwgMHgzODE0NjAwMCwKKzB4MzgxNDgwMDAsIDB4MzgxNGEwMDAsIDB4MzgxNGMwMDAsIDB4MzgxNGUwMDAsIDB4MzgxNTAwMDAsIDB4MzgxNTIwMDAsCisweDM4MTU0MDAwLCAweDM4MTU2MDAwLCAweDM4MTU4MDAwLCAweDM4MTVhMDAwLCAweDM4MTVjMDAwLCAweDM4MTVlMDAwLAorMHgzODE2MDAwMCwgMHgzODE2MjAwMCwgMHgzODE2NDAwMCwgMHgzODE2NjAwMCwgMHgzODE2ODAwMCwgMHgzODE2YTAwMCwKKzB4MzgxNmMwMDAsIDB4MzgxNmUwMDAsIDB4MzgxNzAwMDAsIDB4MzgxNzIwMDAsIDB4MzgxNzQwMDAsIDB4MzgxNzYwMDAsCisweDM4MTc4MDAwLCAweDM4MTdhMDAwLCAweDM4MTdjMDAwLCAweDM4MTdlMDAwLCAweDM4MTgwMDAwLCAweDM4MTgyMDAwLAorMHgzODE4NDAwMCwgMHgzODE4NjAwMCwgMHgzODE4ODAwMCwgMHgzODE4YTAwMCwgMHgzODE4YzAwMCwgMHgzODE4ZTAwMCwKKzB4MzgxOTAwMDAsIDB4MzgxOTIwMDAsIDB4MzgxOTQwMDAsIDB4MzgxOTYwMDAsIDB4MzgxOTgwMDAsIDB4MzgxOWEwMDAsCisweDM4MTljMDAwLCAweDM4MTllMDAwLCAweDM4MWEwMDAwLCAweDM4MWEyMDAwLCAweDM4MWE0MDAwLCAweDM4MWE2MDAwLAorMHgzODFhODAwMCwgMHgzODFhYTAwMCwgMHgzODFhYzAwMCwgMHgzODFhZTAwMCwgMHgzODFiMDAwMCwgMHgzODFiMjAwMCwKKzB4MzgxYjQwMDAsIDB4MzgxYjYwMDAsIDB4MzgxYjgwMDAsIDB4MzgxYmEwMDAsIDB4MzgxYmMwMDAsIDB4MzgxYmUwMDAsCisweDM4MWMwMDAwLCAweDM4MWMyMDAwLCAweDM4MWM0MDAwLCAweDM4MWM2MDAwLCAweDM4MWM4MDAwLCAweDM4MWNhMDAwLAorMHgzODFjYzAwMCwgMHgzODFjZTAwMCwgMHgzODFkMDAwMCwgMHgzODFkMjAwMCwgMHgzODFkNDAwMCwgMHgzODFkNjAwMCwKKzB4MzgxZDgwMDAsIDB4MzgxZGEwMDAsIDB4MzgxZGMwMDAsIDB4MzgxZGUwMDAsIDB4MzgxZTAwMDAsIDB4MzgxZTIwMDAsCisweDM4MWU0MDAwLCAweDM4MWU2MDAwLCAweDM4MWU4MDAwLCAweDM4MWVhMDAwLCAweDM4MWVjMDAwLCAweDM4MWVlMDAwLAorMHgzODFmMDAwMCwgMHgzODFmMjAwMCwgMHgzODFmNDAwMCwgMHgzODFmNjAwMCwgMHgzODFmODAwMCwgMHgzODFmYTAwMCwKKzB4MzgxZmMwMDAsIDB4MzgxZmUwMDAsIDB4MzgyMDAwMDAsIDB4MzgyMDIwMDAsIDB4MzgyMDQwMDAsIDB4MzgyMDYwMDAsCisweDM4MjA4MDAwLCAweDM4MjBhMDAwLCAweDM4MjBjMDAwLCAweDM4MjBlMDAwLCAweDM4MjEwMDAwLCAweDM4MjEyMDAwLAorMHgzODIxNDAwMCwgMHgzODIxNjAwMCwgMHgzODIxODAwMCwgMHgzODIxYTAwMCwgMHgzODIxYzAwMCwgMHgzODIxZTAwMCwKKzB4MzgyMjAwMDAsIDB4MzgyMjIwMDAsIDB4MzgyMjQwMDAsIDB4MzgyMjYwMDAsIDB4MzgyMjgwMDAsIDB4MzgyMmEwMDAsCisweDM4MjJjMDAwLCAweDM4MjJlMDAwLCAweDM4MjMwMDAwLCAweDM4MjMyMDAwLCAweDM4MjM0MDAwLCAweDM4MjM2MDAwLAorMHgzODIzODAwMCwgMHgzODIzYTAwMCwgMHgzODIzYzAwMCwgMHgzODIzZTAwMCwgMHgzODI0MDAwMCwgMHgzODI0MjAwMCwKKzB4MzgyNDQwMDAsIDB4MzgyNDYwMDAsIDB4MzgyNDgwMDAsIDB4MzgyNGEwMDAsIDB4MzgyNGMwMDAsIDB4MzgyNGUwMDAsCisweDM4MjUwMDAwLCAweDM4MjUyMDAwLCAweDM4MjU0MDAwLCAweDM4MjU2MDAwLCAweDM4MjU4MDAwLCAweDM4MjVhMDAwLAorMHgzODI1YzAwMCwgMHgzODI1ZTAwMCwgMHgzODI2MDAwMCwgMHgzODI2MjAwMCwgMHgzODI2NDAwMCwgMHgzODI2NjAwMCwKKzB4MzgyNjgwMDAsIDB4MzgyNmEwMDAsIDB4MzgyNmMwMDAsIDB4MzgyNmUwMDAsIDB4MzgyNzAwMDAsIDB4MzgyNzIwMDAsCisweDM4Mjc0MDAwLCAweDM4Mjc2MDAwLCAweDM4Mjc4MDAwLCAweDM4MjdhMDAwLCAweDM4MjdjMDAwLCAweDM4MjdlMDAwLAorMHgzODI4MDAwMCwgMHgzODI4MjAwMCwgMHgzODI4NDAwMCwgMHgzODI4NjAwMCwgMHgzODI4ODAwMCwgMHgzODI4YTAwMCwKKzB4MzgyOGMwMDAsIDB4MzgyOGUwMDAsIDB4MzgyOTAwMDAsIDB4MzgyOTIwMDAsIDB4MzgyOTQwMDAsIDB4MzgyOTYwMDAsCisweDM4Mjk4MDAwLCAweDM4MjlhMDAwLCAweDM4MjljMDAwLCAweDM4MjllMDAwLCAweDM4MmEwMDAwLCAweDM4MmEyMDAwLAorMHgzODJhNDAwMCwgMHgzODJhNjAwMCwgMHgzODJhODAwMCwgMHgzODJhYTAwMCwgMHgzODJhYzAwMCwgMHgzODJhZTAwMCwKKzB4MzgyYjAwMDAsIDB4MzgyYjIwMDAsIDB4MzgyYjQwMDAsIDB4MzgyYjYwMDAsIDB4MzgyYjgwMDAsIDB4MzgyYmEwMDAsCisweDM4MmJjMDAwLCAweDM4MmJlMDAwLCAweDM4MmMwMDAwLCAweDM4MmMyMDAwLCAweDM4MmM0MDAwLCAweDM4MmM2MDAwLAorMHgzODJjODAwMCwgMHgzODJjYTAwMCwgMHgzODJjYzAwMCwgMHgzODJjZTAwMCwgMHgzODJkMDAwMCwgMHgzODJkMjAwMCwKKzB4MzgyZDQwMDAsIDB4MzgyZDYwMDAsIDB4MzgyZDgwMDAsIDB4MzgyZGEwMDAsIDB4MzgyZGMwMDAsIDB4MzgyZGUwMDAsCisweDM4MmUwMDAwLCAweDM4MmUyMDAwLCAweDM4MmU0MDAwLCAweDM4MmU2MDAwLCAweDM4MmU4MDAwLCAweDM4MmVhMDAwLAorMHgzODJlYzAwMCwgMHgzODJlZTAwMCwgMHgzODJmMDAwMCwgMHgzODJmMjAwMCwgMHgzODJmNDAwMCwgMHgzODJmNjAwMCwKKzB4MzgyZjgwMDAsIDB4MzgyZmEwMDAsIDB4MzgyZmMwMDAsIDB4MzgyZmUwMDAsIDB4MzgzMDAwMDAsIDB4MzgzMDIwMDAsCisweDM4MzA0MDAwLCAweDM4MzA2MDAwLCAweDM4MzA4MDAwLCAweDM4MzBhMDAwLCAweDM4MzBjMDAwLCAweDM4MzBlMDAwLAorMHgzODMxMDAwMCwgMHgzODMxMjAwMCwgMHgzODMxNDAwMCwgMHgzODMxNjAwMCwgMHgzODMxODAwMCwgMHgzODMxYTAwMCwKKzB4MzgzMWMwMDAsIDB4MzgzMWUwMDAsIDB4MzgzMjAwMDAsIDB4MzgzMjIwMDAsIDB4MzgzMjQwMDAsIDB4MzgzMjYwMDAsCisweDM4MzI4MDAwLCAweDM4MzJhMDAwLCAweDM4MzJjMDAwLCAweDM4MzJlMDAwLCAweDM4MzMwMDAwLCAweDM4MzMyMDAwLAorMHgzODMzNDAwMCwgMHgzODMzNjAwMCwgMHgzODMzODAwMCwgMHgzODMzYTAwMCwgMHgzODMzYzAwMCwgMHgzODMzZTAwMCwKKzB4MzgzNDAwMDAsIDB4MzgzNDIwMDAsIDB4MzgzNDQwMDAsIDB4MzgzNDYwMDAsIDB4MzgzNDgwMDAsIDB4MzgzNGEwMDAsCisweDM4MzRjMDAwLCAweDM4MzRlMDAwLCAweDM4MzUwMDAwLCAweDM4MzUyMDAwLCAweDM4MzU0MDAwLCAweDM4MzU2MDAwLAorMHgzODM1ODAwMCwgMHgzODM1YTAwMCwgMHgzODM1YzAwMCwgMHgzODM1ZTAwMCwgMHgzODM2MDAwMCwgMHgzODM2MjAwMCwKKzB4MzgzNjQwMDAsIDB4MzgzNjYwMDAsIDB4MzgzNjgwMDAsIDB4MzgzNmEwMDAsIDB4MzgzNmMwMDAsIDB4MzgzNmUwMDAsCisweDM4MzcwMDAwLCAweDM4MzcyMDAwLCAweDM4Mzc0MDAwLCAweDM4Mzc2MDAwLCAweDM4Mzc4MDAwLCAweDM4MzdhMDAwLAorMHgzODM3YzAwMCwgMHgzODM3ZTAwMCwgMHgzODM4MDAwMCwgMHgzODM4MjAwMCwgMHgzODM4NDAwMCwgMHgzODM4NjAwMCwKKzB4MzgzODgwMDAsIDB4MzgzOGEwMDAsIDB4MzgzOGMwMDAsIDB4MzgzOGUwMDAsIDB4MzgzOTAwMDAsIDB4MzgzOTIwMDAsCisweDM4Mzk0MDAwLCAweDM4Mzk2MDAwLCAweDM4Mzk4MDAwLCAweDM4MzlhMDAwLCAweDM4MzljMDAwLCAweDM4MzllMDAwLAorMHgzODNhMDAwMCwgMHgzODNhMjAwMCwgMHgzODNhNDAwMCwgMHgzODNhNjAwMCwgMHgzODNhODAwMCwgMHgzODNhYTAwMCwKKzB4MzgzYWMwMDAsIDB4MzgzYWUwMDAsIDB4MzgzYjAwMDAsIDB4MzgzYjIwMDAsIDB4MzgzYjQwMDAsIDB4MzgzYjYwMDAsCisweDM4M2I4MDAwLCAweDM4M2JhMDAwLCAweDM4M2JjMDAwLCAweDM4M2JlMDAwLCAweDM4M2MwMDAwLCAweDM4M2MyMDAwLAorMHgzODNjNDAwMCwgMHgzODNjNjAwMCwgMHgzODNjODAwMCwgMHgzODNjYTAwMCwgMHgzODNjYzAwMCwgMHgzODNjZTAwMCwKKzB4MzgzZDAwMDAsIDB4MzgzZDIwMDAsIDB4MzgzZDQwMDAsIDB4MzgzZDYwMDAsIDB4MzgzZDgwMDAsIDB4MzgzZGEwMDAsCisweDM4M2RjMDAwLCAweDM4M2RlMDAwLCAweDM4M2UwMDAwLCAweDM4M2UyMDAwLCAweDM4M2U0MDAwLCAweDM4M2U2MDAwLAorMHgzODNlODAwMCwgMHgzODNlYTAwMCwgMHgzODNlYzAwMCwgMHgzODNlZTAwMCwgMHgzODNmMDAwMCwgMHgzODNmMjAwMCwKKzB4MzgzZjQwMDAsIDB4MzgzZjYwMDAsIDB4MzgzZjgwMDAsIDB4MzgzZmEwMDAsIDB4MzgzZmMwMDAsIDB4MzgzZmUwMDAsCisweDM4NDAwMDAwLCAweDM4NDAyMDAwLCAweDM4NDA0MDAwLCAweDM4NDA2MDAwLCAweDM4NDA4MDAwLCAweDM4NDBhMDAwLAorMHgzODQwYzAwMCwgMHgzODQwZTAwMCwgMHgzODQxMDAwMCwgMHgzODQxMjAwMCwgMHgzODQxNDAwMCwgMHgzODQxNjAwMCwKKzB4Mzg0MTgwMDAsIDB4Mzg0MWEwMDAsIDB4Mzg0MWMwMDAsIDB4Mzg0MWUwMDAsIDB4Mzg0MjAwMDAsIDB4Mzg0MjIwMDAsCisweDM4NDI0MDAwLCAweDM4NDI2MDAwLCAweDM4NDI4MDAwLCAweDM4NDJhMDAwLCAweDM4NDJjMDAwLCAweDM4NDJlMDAwLAorMHgzODQzMDAwMCwgMHgzODQzMjAwMCwgMHgzODQzNDAwMCwgMHgzODQzNjAwMCwgMHgzODQzODAwMCwgMHgzODQzYTAwMCwKKzB4Mzg0M2MwMDAsIDB4Mzg0M2UwMDAsIDB4Mzg0NDAwMDAsIDB4Mzg0NDIwMDAsIDB4Mzg0NDQwMDAsIDB4Mzg0NDYwMDAsCisweDM4NDQ4MDAwLCAweDM4NDRhMDAwLCAweDM4NDRjMDAwLCAweDM4NDRlMDAwLCAweDM4NDUwMDAwLCAweDM4NDUyMDAwLAorMHgzODQ1NDAwMCwgMHgzODQ1NjAwMCwgMHgzODQ1ODAwMCwgMHgzODQ1YTAwMCwgMHgzODQ1YzAwMCwgMHgzODQ1ZTAwMCwKKzB4Mzg0NjAwMDAsIDB4Mzg0NjIwMDAsIDB4Mzg0NjQwMDAsIDB4Mzg0NjYwMDAsIDB4Mzg0NjgwMDAsIDB4Mzg0NmEwMDAsCisweDM4NDZjMDAwLCAweDM4NDZlMDAwLCAweDM4NDcwMDAwLCAweDM4NDcyMDAwLCAweDM4NDc0MDAwLCAweDM4NDc2MDAwLAorMHgzODQ3ODAwMCwgMHgzODQ3YTAwMCwgMHgzODQ3YzAwMCwgMHgzODQ3ZTAwMCwgMHgzODQ4MDAwMCwgMHgzODQ4MjAwMCwKKzB4Mzg0ODQwMDAsIDB4Mzg0ODYwMDAsIDB4Mzg0ODgwMDAsIDB4Mzg0OGEwMDAsIDB4Mzg0OGMwMDAsIDB4Mzg0OGUwMDAsCisweDM4NDkwMDAwLCAweDM4NDkyMDAwLCAweDM4NDk0MDAwLCAweDM4NDk2MDAwLCAweDM4NDk4MDAwLCAweDM4NDlhMDAwLAorMHgzODQ5YzAwMCwgMHgzODQ5ZTAwMCwgMHgzODRhMDAwMCwgMHgzODRhMjAwMCwgMHgzODRhNDAwMCwgMHgzODRhNjAwMCwKKzB4Mzg0YTgwMDAsIDB4Mzg0YWEwMDAsIDB4Mzg0YWMwMDAsIDB4Mzg0YWUwMDAsIDB4Mzg0YjAwMDAsIDB4Mzg0YjIwMDAsCisweDM4NGI0MDAwLCAweDM4NGI2MDAwLCAweDM4NGI4MDAwLCAweDM4NGJhMDAwLCAweDM4NGJjMDAwLCAweDM4NGJlMDAwLAorMHgzODRjMDAwMCwgMHgzODRjMjAwMCwgMHgzODRjNDAwMCwgMHgzODRjNjAwMCwgMHgzODRjODAwMCwgMHgzODRjYTAwMCwKKzB4Mzg0Y2MwMDAsIDB4Mzg0Y2UwMDAsIDB4Mzg0ZDAwMDAsIDB4Mzg0ZDIwMDAsIDB4Mzg0ZDQwMDAsIDB4Mzg0ZDYwMDAsCisweDM4NGQ4MDAwLCAweDM4NGRhMDAwLCAweDM4NGRjMDAwLCAweDM4NGRlMDAwLCAweDM4NGUwMDAwLCAweDM4NGUyMDAwLAorMHgzODRlNDAwMCwgMHgzODRlNjAwMCwgMHgzODRlODAwMCwgMHgzODRlYTAwMCwgMHgzODRlYzAwMCwgMHgzODRlZTAwMCwKKzB4Mzg0ZjAwMDAsIDB4Mzg0ZjIwMDAsIDB4Mzg0ZjQwMDAsIDB4Mzg0ZjYwMDAsIDB4Mzg0ZjgwMDAsIDB4Mzg0ZmEwMDAsCisweDM4NGZjMDAwLCAweDM4NGZlMDAwLCAweDM4NTAwMDAwLCAweDM4NTAyMDAwLCAweDM4NTA0MDAwLCAweDM4NTA2MDAwLAorMHgzODUwODAwMCwgMHgzODUwYTAwMCwgMHgzODUwYzAwMCwgMHgzODUwZTAwMCwgMHgzODUxMDAwMCwgMHgzODUxMjAwMCwKKzB4Mzg1MTQwMDAsIDB4Mzg1MTYwMDAsIDB4Mzg1MTgwMDAsIDB4Mzg1MWEwMDAsIDB4Mzg1MWMwMDAsIDB4Mzg1MWUwMDAsCisweDM4NTIwMDAwLCAweDM4NTIyMDAwLCAweDM4NTI0MDAwLCAweDM4NTI2MDAwLCAweDM4NTI4MDAwLCAweDM4NTJhMDAwLAorMHgzODUyYzAwMCwgMHgzODUyZTAwMCwgMHgzODUzMDAwMCwgMHgzODUzMjAwMCwgMHgzODUzNDAwMCwgMHgzODUzNjAwMCwKKzB4Mzg1MzgwMDAsIDB4Mzg1M2EwMDAsIDB4Mzg1M2MwMDAsIDB4Mzg1M2UwMDAsIDB4Mzg1NDAwMDAsIDB4Mzg1NDIwMDAsCisweDM4NTQ0MDAwLCAweDM4NTQ2MDAwLCAweDM4NTQ4MDAwLCAweDM4NTRhMDAwLCAweDM4NTRjMDAwLCAweDM4NTRlMDAwLAorMHgzODU1MDAwMCwgMHgzODU1MjAwMCwgMHgzODU1NDAwMCwgMHgzODU1NjAwMCwgMHgzODU1ODAwMCwgMHgzODU1YTAwMCwKKzB4Mzg1NWMwMDAsIDB4Mzg1NWUwMDAsIDB4Mzg1NjAwMDAsIDB4Mzg1NjIwMDAsIDB4Mzg1NjQwMDAsIDB4Mzg1NjYwMDAsCisweDM4NTY4MDAwLCAweDM4NTZhMDAwLCAweDM4NTZjMDAwLCAweDM4NTZlMDAwLCAweDM4NTcwMDAwLCAweDM4NTcyMDAwLAorMHgzODU3NDAwMCwgMHgzODU3NjAwMCwgMHgzODU3ODAwMCwgMHgzODU3YTAwMCwgMHgzODU3YzAwMCwgMHgzODU3ZTAwMCwKKzB4Mzg1ODAwMDAsIDB4Mzg1ODIwMDAsIDB4Mzg1ODQwMDAsIDB4Mzg1ODYwMDAsIDB4Mzg1ODgwMDAsIDB4Mzg1OGEwMDAsCisweDM4NThjMDAwLCAweDM4NThlMDAwLCAweDM4NTkwMDAwLCAweDM4NTkyMDAwLCAweDM4NTk0MDAwLCAweDM4NTk2MDAwLAorMHgzODU5ODAwMCwgMHgzODU5YTAwMCwgMHgzODU5YzAwMCwgMHgzODU5ZTAwMCwgMHgzODVhMDAwMCwgMHgzODVhMjAwMCwKKzB4Mzg1YTQwMDAsIDB4Mzg1YTYwMDAsIDB4Mzg1YTgwMDAsIDB4Mzg1YWEwMDAsIDB4Mzg1YWMwMDAsIDB4Mzg1YWUwMDAsCisweDM4NWIwMDAwLCAweDM4NWIyMDAwLCAweDM4NWI0MDAwLCAweDM4NWI2MDAwLCAweDM4NWI4MDAwLCAweDM4NWJhMDAwLAorMHgzODViYzAwMCwgMHgzODViZTAwMCwgMHgzODVjMDAwMCwgMHgzODVjMjAwMCwgMHgzODVjNDAwMCwgMHgzODVjNjAwMCwKKzB4Mzg1YzgwMDAsIDB4Mzg1Y2EwMDAsIDB4Mzg1Y2MwMDAsIDB4Mzg1Y2UwMDAsIDB4Mzg1ZDAwMDAsIDB4Mzg1ZDIwMDAsCisweDM4NWQ0MDAwLCAweDM4NWQ2MDAwLCAweDM4NWQ4MDAwLCAweDM4NWRhMDAwLCAweDM4NWRjMDAwLCAweDM4NWRlMDAwLAorMHgzODVlMDAwMCwgMHgzODVlMjAwMCwgMHgzODVlNDAwMCwgMHgzODVlNjAwMCwgMHgzODVlODAwMCwgMHgzODVlYTAwMCwKKzB4Mzg1ZWMwMDAsIDB4Mzg1ZWUwMDAsIDB4Mzg1ZjAwMDAsIDB4Mzg1ZjIwMDAsIDB4Mzg1ZjQwMDAsIDB4Mzg1ZjYwMDAsCisweDM4NWY4MDAwLCAweDM4NWZhMDAwLCAweDM4NWZjMDAwLCAweDM4NWZlMDAwLCAweDM4NjAwMDAwLCAweDM4NjAyMDAwLAorMHgzODYwNDAwMCwgMHgzODYwNjAwMCwgMHgzODYwODAwMCwgMHgzODYwYTAwMCwgMHgzODYwYzAwMCwgMHgzODYwZTAwMCwKKzB4Mzg2MTAwMDAsIDB4Mzg2MTIwMDAsIDB4Mzg2MTQwMDAsIDB4Mzg2MTYwMDAsIDB4Mzg2MTgwMDAsIDB4Mzg2MWEwMDAsCisweDM4NjFjMDAwLCAweDM4NjFlMDAwLCAweDM4NjIwMDAwLCAweDM4NjIyMDAwLCAweDM4NjI0MDAwLCAweDM4NjI2MDAwLAorMHgzODYyODAwMCwgMHgzODYyYTAwMCwgMHgzODYyYzAwMCwgMHgzODYyZTAwMCwgMHgzODYzMDAwMCwgMHgzODYzMjAwMCwKKzB4Mzg2MzQwMDAsIDB4Mzg2MzYwMDAsIDB4Mzg2MzgwMDAsIDB4Mzg2M2EwMDAsIDB4Mzg2M2MwMDAsIDB4Mzg2M2UwMDAsCisweDM4NjQwMDAwLCAweDM4NjQyMDAwLCAweDM4NjQ0MDAwLCAweDM4NjQ2MDAwLCAweDM4NjQ4MDAwLCAweDM4NjRhMDAwLAorMHgzODY0YzAwMCwgMHgzODY0ZTAwMCwgMHgzODY1MDAwMCwgMHgzODY1MjAwMCwgMHgzODY1NDAwMCwgMHgzODY1NjAwMCwKKzB4Mzg2NTgwMDAsIDB4Mzg2NWEwMDAsIDB4Mzg2NWMwMDAsIDB4Mzg2NWUwMDAsIDB4Mzg2NjAwMDAsIDB4Mzg2NjIwMDAsCisweDM4NjY0MDAwLCAweDM4NjY2MDAwLCAweDM4NjY4MDAwLCAweDM4NjZhMDAwLCAweDM4NjZjMDAwLCAweDM4NjZlMDAwLAorMHgzODY3MDAwMCwgMHgzODY3MjAwMCwgMHgzODY3NDAwMCwgMHgzODY3NjAwMCwgMHgzODY3ODAwMCwgMHgzODY3YTAwMCwKKzB4Mzg2N2MwMDAsIDB4Mzg2N2UwMDAsIDB4Mzg2ODAwMDAsIDB4Mzg2ODIwMDAsIDB4Mzg2ODQwMDAsIDB4Mzg2ODYwMDAsCisweDM4Njg4MDAwLCAweDM4NjhhMDAwLCAweDM4NjhjMDAwLCAweDM4NjhlMDAwLCAweDM4NjkwMDAwLCAweDM4NjkyMDAwLAorMHgzODY5NDAwMCwgMHgzODY5NjAwMCwgMHgzODY5ODAwMCwgMHgzODY5YTAwMCwgMHgzODY5YzAwMCwgMHgzODY5ZTAwMCwKKzB4Mzg2YTAwMDAsIDB4Mzg2YTIwMDAsIDB4Mzg2YTQwMDAsIDB4Mzg2YTYwMDAsIDB4Mzg2YTgwMDAsIDB4Mzg2YWEwMDAsCisweDM4NmFjMDAwLCAweDM4NmFlMDAwLCAweDM4NmIwMDAwLCAweDM4NmIyMDAwLCAweDM4NmI0MDAwLCAweDM4NmI2MDAwLAorMHgzODZiODAwMCwgMHgzODZiYTAwMCwgMHgzODZiYzAwMCwgMHgzODZiZTAwMCwgMHgzODZjMDAwMCwgMHgzODZjMjAwMCwKKzB4Mzg2YzQwMDAsIDB4Mzg2YzYwMDAsIDB4Mzg2YzgwMDAsIDB4Mzg2Y2EwMDAsIDB4Mzg2Y2MwMDAsIDB4Mzg2Y2UwMDAsCisweDM4NmQwMDAwLCAweDM4NmQyMDAwLCAweDM4NmQ0MDAwLCAweDM4NmQ2MDAwLCAweDM4NmQ4MDAwLCAweDM4NmRhMDAwLAorMHgzODZkYzAwMCwgMHgzODZkZTAwMCwgMHgzODZlMDAwMCwgMHgzODZlMjAwMCwgMHgzODZlNDAwMCwgMHgzODZlNjAwMCwKKzB4Mzg2ZTgwMDAsIDB4Mzg2ZWEwMDAsIDB4Mzg2ZWMwMDAsIDB4Mzg2ZWUwMDAsIDB4Mzg2ZjAwMDAsIDB4Mzg2ZjIwMDAsCisweDM4NmY0MDAwLCAweDM4NmY2MDAwLCAweDM4NmY4MDAwLCAweDM4NmZhMDAwLCAweDM4NmZjMDAwLCAweDM4NmZlMDAwLAorMHgzODcwMDAwMCwgMHgzODcwMjAwMCwgMHgzODcwNDAwMCwgMHgzODcwNjAwMCwgMHgzODcwODAwMCwgMHgzODcwYTAwMCwKKzB4Mzg3MGMwMDAsIDB4Mzg3MGUwMDAsIDB4Mzg3MTAwMDAsIDB4Mzg3MTIwMDAsIDB4Mzg3MTQwMDAsIDB4Mzg3MTYwMDAsCisweDM4NzE4MDAwLCAweDM4NzFhMDAwLCAweDM4NzFjMDAwLCAweDM4NzFlMDAwLCAweDM4NzIwMDAwLCAweDM4NzIyMDAwLAorMHgzODcyNDAwMCwgMHgzODcyNjAwMCwgMHgzODcyODAwMCwgMHgzODcyYTAwMCwgMHgzODcyYzAwMCwgMHgzODcyZTAwMCwKKzB4Mzg3MzAwMDAsIDB4Mzg3MzIwMDAsIDB4Mzg3MzQwMDAsIDB4Mzg3MzYwMDAsIDB4Mzg3MzgwMDAsIDB4Mzg3M2EwMDAsCisweDM4NzNjMDAwLCAweDM4NzNlMDAwLCAweDM4NzQwMDAwLCAweDM4NzQyMDAwLCAweDM4NzQ0MDAwLCAweDM4NzQ2MDAwLAorMHgzODc0ODAwMCwgMHgzODc0YTAwMCwgMHgzODc0YzAwMCwgMHgzODc0ZTAwMCwgMHgzODc1MDAwMCwgMHgzODc1MjAwMCwKKzB4Mzg3NTQwMDAsIDB4Mzg3NTYwMDAsIDB4Mzg3NTgwMDAsIDB4Mzg3NWEwMDAsIDB4Mzg3NWMwMDAsIDB4Mzg3NWUwMDAsCisweDM4NzYwMDAwLCAweDM4NzYyMDAwLCAweDM4NzY0MDAwLCAweDM4NzY2MDAwLCAweDM4NzY4MDAwLCAweDM4NzZhMDAwLAorMHgzODc2YzAwMCwgMHgzODc2ZTAwMCwgMHgzODc3MDAwMCwgMHgzODc3MjAwMCwgMHgzODc3NDAwMCwgMHgzODc3NjAwMCwKKzB4Mzg3NzgwMDAsIDB4Mzg3N2EwMDAsIDB4Mzg3N2MwMDAsIDB4Mzg3N2UwMDAsIDB4Mzg3ODAwMDAsIDB4Mzg3ODIwMDAsCisweDM4Nzg0MDAwLCAweDM4Nzg2MDAwLCAweDM4Nzg4MDAwLCAweDM4NzhhMDAwLCAweDM4NzhjMDAwLCAweDM4NzhlMDAwLAorMHgzODc5MDAwMCwgMHgzODc5MjAwMCwgMHgzODc5NDAwMCwgMHgzODc5NjAwMCwgMHgzODc5ODAwMCwgMHgzODc5YTAwMCwKKzB4Mzg3OWMwMDAsIDB4Mzg3OWUwMDAsIDB4Mzg3YTAwMDAsIDB4Mzg3YTIwMDAsIDB4Mzg3YTQwMDAsIDB4Mzg3YTYwMDAsCisweDM4N2E4MDAwLCAweDM4N2FhMDAwLCAweDM4N2FjMDAwLCAweDM4N2FlMDAwLCAweDM4N2IwMDAwLCAweDM4N2IyMDAwLAorMHgzODdiNDAwMCwgMHgzODdiNjAwMCwgMHgzODdiODAwMCwgMHgzODdiYTAwMCwgMHgzODdiYzAwMCwgMHgzODdiZTAwMCwKKzB4Mzg3YzAwMDAsIDB4Mzg3YzIwMDAsIDB4Mzg3YzQwMDAsIDB4Mzg3YzYwMDAsIDB4Mzg3YzgwMDAsIDB4Mzg3Y2EwMDAsCisweDM4N2NjMDAwLCAweDM4N2NlMDAwLCAweDM4N2QwMDAwLCAweDM4N2QyMDAwLCAweDM4N2Q0MDAwLCAweDM4N2Q2MDAwLAorMHgzODdkODAwMCwgMHgzODdkYTAwMCwgMHgzODdkYzAwMCwgMHgzODdkZTAwMCwgMHgzODdlMDAwMCwgMHgzODdlMjAwMCwKKzB4Mzg3ZTQwMDAsIDB4Mzg3ZTYwMDAsIDB4Mzg3ZTgwMDAsIDB4Mzg3ZWEwMDAsIDB4Mzg3ZWMwMDAsIDB4Mzg3ZWUwMDAsCisweDM4N2YwMDAwLCAweDM4N2YyMDAwLCAweDM4N2Y0MDAwLCAweDM4N2Y2MDAwLCAweDM4N2Y4MDAwLCAweDM4N2ZhMDAwLAorMHgzODdmYzAwMCwgMHgzODdmZTAwMAorfTsKKworc3RhdGljIGNtc1VJbnQxNk51bWJlciBPZmZzZXRbNjRdID0geworMHgwMDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwKKzB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLCAweDA0MDAsCisweDA0MDAsIDB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLAorMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwKKzB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLCAweDA0MDAsCisweDA0MDAsIDB4MDQwMCwgMHgwMDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLAorMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwKKzB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLCAweDA0MDAsCisweDA0MDAsIDB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLAorMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMCwKKzB4MDQwMCwgMHgwNDAwLCAweDA0MDAsIDB4MDQwMAorfTsKKworc3RhdGljIGNtc1VJbnQzMk51bWJlciBFeHBvbmVudFs2NF0gPSB7CisweDAwMDAwMDAwLCAweDAwODAwMDAwLCAweDAxMDAwMDAwLCAweDAxODAwMDAwLCAweDAyMDAwMDAwLCAweDAyODAwMDAwLAorMHgwMzAwMDAwMCwgMHgwMzgwMDAwMCwgMHgwNDAwMDAwMCwgMHgwNDgwMDAwMCwgMHgwNTAwMDAwMCwgMHgwNTgwMDAwMCwKKzB4MDYwMDAwMDAsIDB4MDY4MDAwMDAsIDB4MDcwMDAwMDAsIDB4MDc4MDAwMDAsIDB4MDgwMDAwMDAsIDB4MDg4MDAwMDAsCisweDA5MDAwMDAwLCAweDA5ODAwMDAwLCAweDBhMDAwMDAwLCAweDBhODAwMDAwLCAweDBiMDAwMDAwLCAweDBiODAwMDAwLAorMHgwYzAwMDAwMCwgMHgwYzgwMDAwMCwgMHgwZDAwMDAwMCwgMHgwZDgwMDAwMCwgMHgwZTAwMDAwMCwgMHgwZTgwMDAwMCwKKzB4MGYwMDAwMDAsIDB4NDc4MDAwMDAsIDB4ODAwMDAwMDAsIDB4ODA4MDAwMDAsIDB4ODEwMDAwMDAsIDB4ODE4MDAwMDAsCisweDgyMDAwMDAwLCAweDgyODAwMDAwLCAweDgzMDAwMDAwLCAweDgzODAwMDAwLCAweDg0MDAwMDAwLCAweDg0ODAwMDAwLAorMHg4NTAwMDAwMCwgMHg4NTgwMDAwMCwgMHg4NjAwMDAwMCwgMHg4NjgwMDAwMCwgMHg4NzAwMDAwMCwgMHg4NzgwMDAwMCwKKzB4ODgwMDAwMDAsIDB4ODg4MDAwMDAsIDB4ODkwMDAwMDAsIDB4ODk4MDAwMDAsIDB4OGEwMDAwMDAsIDB4OGE4MDAwMDAsCisweDhiMDAwMDAwLCAweDhiODAwMDAwLCAweDhjMDAwMDAwLCAweDhjODAwMDAwLCAweDhkMDAwMDAwLCAweDhkODAwMDAwLAorMHg4ZTAwMDAwMCwgMHg4ZTgwMDAwMCwgMHg4ZjAwMDAwMCwgMHhjNzgwMDAwMAorfTsKKworc3RhdGljIGNtc1VJbnQxNk51bWJlciBCYXNlWzUxMl0gPSB7CisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCisweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDEsIDB4MDAwMiwgMHgwMDA0LCAweDAwMDgsIDB4MDAxMCwgMHgwMDIwLCAweDAwNDAsCisweDAwODAsIDB4MDEwMCwgMHgwMjAwLCAweDA0MDAsIDB4MDgwMCwgMHgwYzAwLCAweDEwMDAsIDB4MTQwMCwgMHgxODAwLCAweDFjMDAsCisweDIwMDAsIDB4MjQwMCwgMHgyODAwLCAweDJjMDAsIDB4MzAwMCwgMHgzNDAwLCAweDM4MDAsIDB4M2MwMCwgMHg0MDAwLCAweDQ0MDAsCisweDQ4MDAsIDB4NGMwMCwgMHg1MDAwLCAweDU0MDAsIDB4NTgwMCwgMHg1YzAwLCAweDYwMDAsIDB4NjQwMCwgMHg2ODAwLCAweDZjMDAsCisweDcwMDAsIDB4NzQwMCwgMHg3ODAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsCisweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDdjMDAsIDB4N2MwMCwgMHg3YzAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCisweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDEsCisweDgwMDIsIDB4ODAwNCwgMHg4MDA4LCAweDgwMTAsIDB4ODAyMCwgMHg4MDQwLCAweDgwODAsIDB4ODEwMCwgMHg4MjAwLCAweDg0MDAsCisweDg4MDAsIDB4OGMwMCwgMHg5MDAwLCAweDk0MDAsIDB4OTgwMCwgMHg5YzAwLCAweGEwMDAsIDB4YTQwMCwgMHhhODAwLCAweGFjMDAsCisweGIwMDAsIDB4YjQwMCwgMHhiODAwLCAweGJjMDAsIDB4YzAwMCwgMHhjNDAwLCAweGM4MDAsIDB4Y2MwMCwgMHhkMDAwLCAweGQ0MDAsCisweGQ4MDAsIDB4ZGMwMCwgMHhlMDAwLCAweGU0MDAsIDB4ZTgwMCwgMHhlYzAwLCAweGYwMDAsIDB4ZjQwMCwgMHhmODAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsIDB4ZmMwMCwgMHhmYzAwLCAweGZjMDAsCisweGZjMDAsIDB4ZmMwMAorfTsKKworc3RhdGljIGNtc1VJbnQ4TnVtYmVyICBTaGlmdFs1MTJdID0geworMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTcsCisweDE2LCAweDE1LCAweDE0LCAweDEzLCAweDEyLCAweDExLCAweDEwLCAweDBmLCAweDBlLCAweDBkLCAweDBkLCAweDBkLCAweDBkLAorMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwKKzB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MGQsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxNywgMHgxNiwgMHgxNSwgMHgxNCwgMHgxMywKKzB4MTIsIDB4MTEsIDB4MTAsIDB4MGYsIDB4MGUsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsIDB4MGQsCisweDBkLCAweDBkLCAweDBkLCAweDBkLCAweDBkLCAweDBkLCAweDBkLCAweDBkLCAweDBkLCAweDBkLCAweDBkLCAweDBkLCAweDBkLAorMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgwZCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwKKzB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsIDB4MTgsCisweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LCAweDE4LAorMHgxOCwgMHgxOCwgMHgxOCwgMHgxOCwgMHgwZAorfTsKKworY21zRmxvYXQzMk51bWJlciBfY21zSGFsZjJGbG9hdChjbXNVSW50MTZOdW1iZXIgaCkKK3sKKyAgICB1bmlvbiB7CisgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgZmx0OworICAgICAgICBjbXNVSW50MzJOdW1iZXIgIG51bTsKKyAgICB9IG91dDsKKworICAgIGludCBuID0gaCA+PiAxMDsKKworICAgIG91dC5udW0gPSBNYW50aXNzYVsgIChoICYgMHgzZmYpICsgT2Zmc2V0WyBuIF0gXSArIEV4cG9uZW50WyBuIF07CisgICAgcmV0dXJuIG91dC5mbHQ7Cit9CisKK2Ntc1VJbnQxNk51bWJlciBfY21zRmxvYXQySGFsZihjbXNGbG9hdDMyTnVtYmVyIGZsdCkKK3sKKyAgICB1bmlvbiB7CisgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgZmx0OworICAgICAgICBjbXNVSW50MzJOdW1iZXIgIG51bTsKKyAgICB9IGluOworCisgICAgY21zVUludDMyTnVtYmVyIG4sIGo7CisKKyAgICBpbi5mbHQgPSBmbHQ7CisgICAgbiA9IGluLm51bTsKKyAgICBqID0gKG4gPj4gMjMpICYgMHgxZmY7CisKKyAgICByZXR1cm4gKGNtc1VJbnQxNk51bWJlcikgKChjbXNVSW50MzJOdW1iZXIpIEJhc2VbIGogXSArICgoIG4gJiAweDAwN2ZmZmZmKSA+PiBTaGlmdFsgaiBdKSk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2ludHJwLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zaW50cnAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDVmMzVkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2ludHJwLmMKQEAgLTAsMCArMSwxNTA2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiBNYXJ0aSBNYXJpYSBTYWd1ZXIKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlCisvLyBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTworLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKy8vIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKy8vIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisKKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIgorCisvLyBUaGlzIG1vZHVsZSBpbmNvcnBvcmF0ZXMgc2V2ZXJhbCBpbnRlcnBvbGF0aW9uIHJvdXRpbmVzLCBmb3IgMSB0byA4IGNoYW5uZWxzIG9uIGlucHV0IGFuZAorLy8gdXAgdG8gNjU1MzUgY2hhbm5lbHMgb24gb3V0cHV0LiBUaGUgdXNlciBtYXkgY2hhbmdlIHRob3NlIGJ5IHVzaW5nIHRoZSBpbnRlcnBvbGF0aW9uIHBsdWctaW4KKworLy8gSW50ZXJwb2xhdGlvbiByb3V0aW5lcyBieSBkZWZhdWx0CitzdGF0aWMgY21zSW50ZXJwRnVuY3Rpb24gRGVmYXVsdEludGVycG9sYXRvcnNGYWN0b3J5KGNtc1VJbnQzMk51bWJlciBuSW5wdXRDaGFubmVscywgY21zVUludDMyTnVtYmVyIG5PdXRwdXRDaGFubmVscywgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpOworCisvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGZhY3RvcnkKK19jbXNJbnRlcnBQbHVnaW5DaHVua1R5cGUgX2Ntc0ludGVycFBsdWdpbkNodW5rID0geyBOVUxMIH07CisKKy8vIFRoZSBpbnRlcnBvbGF0aW9uIHBsdWctaW4gbWVtb3J5IGNodW5rIGFsbG9jYXRvci9kdXAKK3ZvaWQgX2Ntc0FsbG9jSW50ZXJwUGx1Z2luQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpCit7CisgICAgdm9pZCogZnJvbTsKKworICAgIF9jbXNBc3NlcnQoY3R4ICE9IE5VTEwpOworCisgICAgaWYgKHNyYyAhPSBOVUxMKSB7CisgICAgICAgIGZyb20gPSBzcmMgLT5jaHVua3NbSW50ZXJwUGx1Z2luXTsgICAgICAgCisgICAgfQorICAgIGVsc2UgeyAKKyAgICAgICAgc3RhdGljIF9jbXNJbnRlcnBQbHVnaW5DaHVua1R5cGUgSW50ZXJwUGx1Z2luQ2h1bmsgPSB7IE5VTEwgfTsKKworICAgICAgICBmcm9tID0gJkludGVycFBsdWdpbkNodW5rOworICAgIH0KKworICAgIF9jbXNBc3NlcnQoZnJvbSAhPSBOVUxMKTsKKyAgICBjdHggLT5jaHVua3NbSW50ZXJwUGx1Z2luXSA9IF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCBmcm9tLCBzaXplb2YoX2Ntc0ludGVycFBsdWdpbkNodW5rVHlwZSkpOworfQorCisKKy8vIE1haW4gcGx1Zy1pbiBlbnRyeQorY21zQm9vbCAgX2Ntc1JlZ2lzdGVySW50ZXJwUGx1Z2luKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNQbHVnaW5CYXNlKiBEYXRhKQoreworICAgIGNtc1BsdWdpbkludGVycG9sYXRpb24qIFBsdWdpbiA9IChjbXNQbHVnaW5JbnRlcnBvbGF0aW9uKikgRGF0YTsKKyAgICBfY21zSW50ZXJwUGx1Z2luQ2h1bmtUeXBlKiBwdHIgPSAoX2Ntc0ludGVycFBsdWdpbkNodW5rVHlwZSopIF9jbXNDb250ZXh0R2V0Q2xpZW50Q2h1bmsoQ29udGV4dElELCBJbnRlcnBQbHVnaW4pOworCisgICAgaWYgKERhdGEgPT0gTlVMTCkgeworCisgICAgICAgIHB0ciAtPkludGVycG9sYXRvcnMgPSBOVUxMOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICAvLyBTZXQgcmVwbGFjZW1lbnQgZnVuY3Rpb25zCisgICAgcHRyIC0+SW50ZXJwb2xhdG9ycyA9IFBsdWdpbiAtPkludGVycG9sYXRvcnNGYWN0b3J5OworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIFNldCB0aGUgaW50ZXJwb2xhdGlvbiBtZXRob2QKK2Ntc0Jvb2wgX2Ntc1NldEludGVycG9sYXRpb25Sb3V0aW5lKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNJbnRlcnBQYXJhbXMqIHApCit7ICAgICAgCisgICAgX2Ntc0ludGVycFBsdWdpbkNodW5rVHlwZSogcHRyID0gKF9jbXNJbnRlcnBQbHVnaW5DaHVua1R5cGUqKSBfY21zQ29udGV4dEdldENsaWVudENodW5rKENvbnRleHRJRCwgSW50ZXJwUGx1Z2luKTsKKworICAgIHAgLT5JbnRlcnBvbGF0aW9uLkxlcnAxNiA9IE5VTEw7CisKKyAgIC8vIEludm9rZSBmYWN0b3J5LCBwb3NzaWJseSBpbiB0aGUgUGx1Zy1pbgorICAgIGlmIChwdHIgLT5JbnRlcnBvbGF0b3JzICE9IE5VTEwpCisgICAgICAgIHAgLT5JbnRlcnBvbGF0aW9uID0gcHRyLT5JbnRlcnBvbGF0b3JzKHAgLT4gbklucHV0cywgcCAtPm5PdXRwdXRzLCBwIC0+ZHdGbGFncyk7CisgICAgCisgICAgLy8gSWYgdW5zdXBwb3J0ZWQgYnkgdGhlIHBsdWctaW4sIGdvIGZvciB0aGUgTGl0dGxlQ01TIGRlZmF1bHQuCisgICAgLy8gSWYgaGFwcGVucyBvbmx5IGlmIGFuIGV4dGVybiBwbHVnLWluIGlzIGJlaW5nIHVzZWQKKyAgICBpZiAocCAtPkludGVycG9sYXRpb24uTGVycDE2ID09IE5VTEwpCisgICAgICAgIHAgLT5JbnRlcnBvbGF0aW9uID0gRGVmYXVsdEludGVycG9sYXRvcnNGYWN0b3J5KHAgLT5uSW5wdXRzLCBwIC0+bk91dHB1dHMsIHAgLT5kd0ZsYWdzKTsKKworICAgIC8vIENoZWNrIGZvciB2YWxpZCBpbnRlcnBvbGF0b3IgKHdlIGp1c3QgY2hlY2sgb25lIG1lbWJlciBvZiB0aGUgdW5pb24pCisgICAgaWYgKHAgLT5JbnRlcnBvbGF0aW9uLkxlcnAxNiA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworLy8gVGhpcyBmdW5jdGlvbiBwcmVjYWxjdWxhdGVzIGFzIG1hbnkgcGFyYW1ldGVycyBhcyBwb3NzaWJsZSB0byBzcGVlZCB1cCB0aGUgaW50ZXJwb2xhdGlvbi4KK2Ntc0ludGVycFBhcmFtcyogX2Ntc0NvbXB1dGVJbnRlcnBQYXJhbXNFeChjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNVSW50MzJOdW1iZXIgblNhbXBsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgSW5wdXRDaGFuLCBpbnQgT3V0cHV0Q2hhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykKK3sKKyAgICBjbXNJbnRlcnBQYXJhbXMqIHA7CisgICAgaW50IGk7CisKKyAgICAvLyBDaGVjayBmb3IgbWF4aW11bSBpbnB1dHMKKyAgICBpZiAoSW5wdXRDaGFuID4gTUFYX0lOUFVUX0RJTUVOU0lPTlMpIHsKKyAgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX1JBTkdFLCAiVG9vIG1hbnkgaW5wdXQgY2hhbm5lbHMgKCVkIGNoYW5uZWxzLCBtYXg9JWQpIiwgSW5wdXRDaGFuLCBNQVhfSU5QVVRfRElNRU5TSU9OUyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBDcmVhdGVzIGFuIGVtcHR5IG9iamVjdAorICAgIHAgPSAoY21zSW50ZXJwUGFyYW1zKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoY21zSW50ZXJwUGFyYW1zKSk7CisgICAgaWYgKHAgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICAvLyBLZWVwIG9yaWdpbmFsIHBhcmFtZXRlcnMKKyAgICBwIC0+IGR3RmxhZ3MgID0gZHdGbGFnczsKKyAgICBwIC0+IG5JbnB1dHMgID0gSW5wdXRDaGFuOworICAgIHAgLT4gbk91dHB1dHMgPSBPdXRwdXRDaGFuOworICAgIHAgLT5UYWJsZSAgICAgPSBUYWJsZTsKKyAgICBwIC0+Q29udGV4dElEICA9IENvbnRleHRJRDsKKworICAgIC8vIEZpbGwgc2FtcGxlcyBwZXIgaW5wdXQgZGlyZWN0aW9uIGFuZCBkb21haW4gKHdoaWNoIGlzIG51bWJlciBvZiBub2RlcyBtaW51cyBvbmUpCisgICAgZm9yIChpPTA7IGkgPCBJbnB1dENoYW47IGkrKykgeworCisgICAgICAgIHAgLT4gblNhbXBsZXNbaV0gPSBuU2FtcGxlc1tpXTsKKyAgICAgICAgcCAtPiBEb21haW5baV0gICA9IG5TYW1wbGVzW2ldIC0gMTsKKyAgICB9CisKKyAgICAvLyBDb21wdXRlIGZhY3RvcnMgdG8gYXBwbHkgdG8gZWFjaCBjb21wb25lbnQgdG8gaW5kZXggdGhlIGdyaWQgYXJyYXkKKyAgICBwIC0+IG9wdGFbMF0gPSBwIC0+IG5PdXRwdXRzOworICAgIGZvciAoaT0xOyBpIDwgSW5wdXRDaGFuOyBpKyspCisgICAgICAgIHAgLT5vcHRhW2ldID0gcCAtPm9wdGFbaS0xXSAqIG5TYW1wbGVzW0lucHV0Q2hhbi1pXTsKKworCisgICAgaWYgKCFfY21zU2V0SW50ZXJwb2xhdGlvblJvdXRpbmUoQ29udGV4dElELCBwKSkgeworICAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVuc3VwcG9ydGVkIGludGVycG9sYXRpb24gKCVkLT4lZCBjaGFubmVscykiLCBJbnB1dENoYW4sIE91dHB1dENoYW4pOworICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIHApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBBbGwgc2VlbXMgb2sKKyAgICByZXR1cm4gcDsKK30KKworCisvLyBUaGlzIG9uZSBpcyBhIHdyYXBwZXIgb24gdGhlIGFudGVyaW9yLCBidXQgYXNzdW1pbmcgYWxsIGRpcmVjdGlvbnMgaGF2ZSBzYW1lIG51bWJlciBvZiBub2RlcworY21zSW50ZXJwUGFyYW1zKiBfY21zQ29tcHV0ZUludGVycFBhcmFtcyhjbXNDb250ZXh0IENvbnRleHRJRCwgaW50IG5TYW1wbGVzLCBpbnQgSW5wdXRDaGFuLCBpbnQgT3V0cHV0Q2hhbiwgY29uc3Qgdm9pZCogVGFibGUsIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKQoreworICAgIGludCBpOworICAgIGNtc1VJbnQzMk51bWJlciBTYW1wbGVzW01BWF9JTlBVVF9ESU1FTlNJT05TXTsKKworICAgIC8vIEZpbGwgdGhlIGF1eGlsaWFyIGFycmF5CisgICAgZm9yIChpPTA7IGkgPCBNQVhfSU5QVVRfRElNRU5TSU9OUzsgaSsrKQorICAgICAgICBTYW1wbGVzW2ldID0gblNhbXBsZXM7CisKKyAgICAvLyBDYWxsIHRoZSBleHRlbmRlZCBmdW5jdGlvbgorICAgIHJldHVybiBfY21zQ29tcHV0ZUludGVycFBhcmFtc0V4KENvbnRleHRJRCwgU2FtcGxlcywgSW5wdXRDaGFuLCBPdXRwdXRDaGFuLCBUYWJsZSwgZHdGbGFncyk7Cit9CisKKworLy8gRnJlZSBhbGwgYXNzb2NpYXRlZCBtZW1vcnkKK3ZvaWQgX2Ntc0ZyZWVJbnRlcnBQYXJhbXMoY21zSW50ZXJwUGFyYW1zKiBwKQoreworICAgIGlmIChwICE9IE5VTEwpIF9jbXNGcmVlKHAgLT5Db250ZXh0SUQsIHApOworfQorCisKKy8vIElubGluZSBmaXhlZCBwb2ludCBpbnRlcnBvbGF0aW9uCitjbXNJTkxJTkUgY21zVUludDE2TnVtYmVyIExpbmVhckludGVycChjbXNTMTVGaXhlZDE2TnVtYmVyIGEsIGNtc1MxNUZpeGVkMTZOdW1iZXIgbCwgY21zUzE1Rml4ZWQxNk51bWJlciBoKQoreworICAgIGNtc1VJbnQzMk51bWJlciBkaWYgPSAoY21zVUludDMyTnVtYmVyKSAoaCAtIGwpICogYSArIDB4ODAwMDsKKyAgICBkaWYgPSAoZGlmID4+IDE2KSArIGw7CisgICAgcmV0dXJuIChjbXNVSW50MTZOdW1iZXIpIChkaWYpOworfQorCisKKy8vICBMaW5lYXIgaW50ZXJwb2xhdGlvbiAoRml4ZWQtcG9pbnQgb3B0aW1pemVkKQorc3RhdGljCit2b2lkIExpbkxlcnAxRChyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgVmFsdWVbXSwKKyAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRwdXRbXSwKKyAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNtc0ludGVycFBhcmFtcyogcCkKK3sKKyAgICBjbXNVSW50MTZOdW1iZXIgeTEsIHkwOworICAgIGludCBjZWxsMCwgcmVzdDsKKyAgICBpbnQgdmFsMzsKKyAgICBjb25zdCBjbXNVSW50MTZOdW1iZXIqIEx1dFRhYmxlID0gKGNtc1VJbnQxNk51bWJlciopIHAgLT5UYWJsZTsKKworICAgIC8vIGlmIGxhc3QgdmFsdWUuLi4KKyAgICBpZiAoVmFsdWVbMF0gPT0gMHhmZmZmKSB7CisKKyAgICAgICAgT3V0cHV0WzBdID0gTHV0VGFibGVbcCAtPiBEb21haW5bMF1dOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFsMyA9IHAgLT4gRG9tYWluWzBdICogVmFsdWVbMF07CisgICAgdmFsMyA9IF9jbXNUb0ZpeGVkRG9tYWluKHZhbDMpOyAgICAvLyBUbyBmaXhlZCAxNS4xNgorCisgICAgY2VsbDAgPSBGSVhFRF9UT19JTlQodmFsMyk7ICAgICAgICAgICAgIC8vIENlbGwgaXMgMTYgTVNCIGJpdHMKKyAgICByZXN0ICA9IEZJWEVEX1JFU1RfVE9fSU5UKHZhbDMpOyAgICAgICAgLy8gUmVzdCBpcyAxNiBMU0IgYml0cworCisgICAgeTAgPSBMdXRUYWJsZVtjZWxsMF07CisgICAgeTEgPSBMdXRUYWJsZVtjZWxsMCsxXTsKKworCisgICAgT3V0cHV0WzBdID0gTGluZWFySW50ZXJwKHJlc3QsIHkwLCB5MSk7Cit9CisKKy8vIFRvIHByZXZlbnQgb3V0IG9mIGJvdW5kcyBpbmRleGluZworY21zSU5MSU5FIGNtc0Zsb2F0MzJOdW1iZXIgZmNsYW1wKGNtc0Zsb2F0MzJOdW1iZXIgdikgCit7CisgICAgcmV0dXJuIHYgPCAwLjBmID8gMC4wZiA6ICh2ID4gMS4wZiA/IDEuMGYgOiB2KTsKK30KKworLy8gRmxvYXRpbmctcG9pbnQgdmVyc2lvbiBvZiAxRCBpbnRlcnBvbGF0aW9uCitzdGF0aWMKK3ZvaWQgTGluTGVycDFEZmxvYXQoY29uc3QgY21zRmxvYXQzMk51bWJlciBWYWx1ZVtdLAorICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIE91dHB1dFtdLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNJbnRlcnBQYXJhbXMqIHApCit7CisgICAgICAgY21zRmxvYXQzMk51bWJlciB5MSwgeTA7CisgICAgICAgY21zRmxvYXQzMk51bWJlciB2YWwyLCByZXN0OworICAgICAgIGludCBjZWxsMCwgY2VsbDE7CisgICAgICAgY29uc3QgY21zRmxvYXQzMk51bWJlciogTHV0VGFibGUgPSAoY21zRmxvYXQzMk51bWJlciopIHAgLT5UYWJsZTsKKworICAgICAgIHZhbDIgPSBmY2xhbXAoVmFsdWVbMF0pOworCisgICAgICAgLy8gaWYgbGFzdCB2YWx1ZS4uLgorICAgICAgIGlmICh2YWwyID09IDEuMCkgeworICAgICAgICAgICBPdXRwdXRbMF0gPSBMdXRUYWJsZVtwIC0+IERvbWFpblswXV07CisgICAgICAgICAgIHJldHVybjsKKyAgICAgICB9CisKKyAgICAgICB2YWwyICo9IHAgLT4gRG9tYWluWzBdOworCisgICAgICAgY2VsbDAgPSAoaW50KSBmbG9vcih2YWwyKTsKKyAgICAgICBjZWxsMSA9IChpbnQpIGNlaWwodmFsMik7CisKKyAgICAgICAvLyBSZXN0IGlzIDE2IExTQiBiaXRzCisgICAgICAgcmVzdCA9IHZhbDIgLSBjZWxsMDsKKworICAgICAgIHkwID0gTHV0VGFibGVbY2VsbDBdIDsKKyAgICAgICB5MSA9IEx1dFRhYmxlW2NlbGwxXSA7CisKKyAgICAgICBPdXRwdXRbMF0gPSB5MCArICh5MSAtIHkwKSAqIHJlc3Q7Cit9CisKKworCisvLyBFdmFsIGdyYXkgTFVUIGhhdmluZyBvbmx5IG9uZSBpbnB1dCBjaGFubmVsCitzdGF0aWMKK3ZvaWQgRXZhbDFJbnB1dChyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5wdXRbXSwKKyAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwMTYpCit7CisgICAgICAgY21zUzE1Rml4ZWQxNk51bWJlciBmazsKKyAgICAgICBjbXNTMTVGaXhlZDE2TnVtYmVyIGswLCBrMSwgcmssIEswLCBLMTsKKyAgICAgICBpbnQgdjsKKyAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0Q2hhbjsKKyAgICAgICBjb25zdCBjbXNVSW50MTZOdW1iZXIqIEx1dFRhYmxlID0gKGNtc1VJbnQxNk51bWJlciopIHAxNiAtPiBUYWJsZTsKKworICAgICAgIHYgPSBJbnB1dFswXSAqIHAxNiAtPiBEb21haW5bMF07CisgICAgICAgZmsgPSBfY21zVG9GaXhlZERvbWFpbih2KTsKKworICAgICAgIGswID0gRklYRURfVE9fSU5UKGZrKTsKKyAgICAgICByayA9IChjbXNVSW50MTZOdW1iZXIpIEZJWEVEX1JFU1RfVE9fSU5UKGZrKTsKKworICAgICAgIGsxID0gazAgKyAoSW5wdXRbMF0gIT0gMHhGRkZGVSA/IDEgOiAwKTsKKworICAgICAgIEswID0gcDE2IC0+IG9wdGFbMF0gKiBrMDsKKyAgICAgICBLMSA9IHAxNiAtPiBvcHRhWzBdICogazE7CisKKyAgICAgICBmb3IgKE91dENoYW49MDsgT3V0Q2hhbiA8IHAxNi0+bk91dHB1dHM7IE91dENoYW4rKykgeworCisgICAgICAgICAgIE91dHB1dFtPdXRDaGFuXSA9IExpbmVhckludGVycChyaywgTHV0VGFibGVbSzArT3V0Q2hhbl0sIEx1dFRhYmxlW0sxK091dENoYW5dKTsKKyAgICAgICB9Cit9CisKKworCisvLyBFdmFsIGdyYXkgTFVUIGhhdmluZyBvbmx5IG9uZSBpbnB1dCBjaGFubmVsCitzdGF0aWMKK3ZvaWQgRXZhbDFJbnB1dEZsb2F0KGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgVmFsdWVbXSwKKyAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNJbnRlcnBQYXJhbXMqIHApCit7CisgICAgY21zRmxvYXQzMk51bWJlciB5MSwgeTA7CisgICAgY21zRmxvYXQzMk51bWJlciB2YWwyLCByZXN0OworICAgIGludCBjZWxsMCwgY2VsbDE7CisgICAgY21zVUludDMyTnVtYmVyIE91dENoYW47CisgICAgY29uc3QgY21zRmxvYXQzMk51bWJlciogTHV0VGFibGUgPSAoY21zRmxvYXQzMk51bWJlciopIHAgLT5UYWJsZTsKKworICAgIHZhbDIgPSBmY2xhbXAoVmFsdWVbMF0pOworCisgICAgICAgIC8vIGlmIGxhc3QgdmFsdWUuLi4KKyAgICAgICBpZiAodmFsMiA9PSAxLjApIHsKKyAgICAgICAgICAgT3V0cHV0WzBdID0gTHV0VGFibGVbcCAtPiBEb21haW5bMF1dOworICAgICAgICAgICByZXR1cm47CisgICAgICAgfQorCisgICAgICAgdmFsMiAqPSBwIC0+IERvbWFpblswXTsKKworICAgICAgIGNlbGwwID0gKGludCkgZmxvb3IodmFsMik7CisgICAgICAgY2VsbDEgPSAoaW50KSBjZWlsKHZhbDIpOworCisgICAgICAgLy8gUmVzdCBpcyAxNiBMU0IgYml0cworICAgICAgIHJlc3QgPSB2YWwyIC0gY2VsbDA7CisKKyAgICAgICBjZWxsMCAqPSBwIC0+IG9wdGFbMF07CisgICAgICAgY2VsbDEgKj0gcCAtPiBvcHRhWzBdOworCisgICAgICAgZm9yIChPdXRDaGFuPTA7IE91dENoYW4gPCBwLT5uT3V0cHV0czsgT3V0Q2hhbisrKSB7CisKKyAgICAgICAgICAgIHkwID0gTHV0VGFibGVbY2VsbDAgKyBPdXRDaGFuXSA7CisgICAgICAgICAgICB5MSA9IEx1dFRhYmxlW2NlbGwxICsgT3V0Q2hhbl0gOworCisgICAgICAgICAgICBPdXRwdXRbT3V0Q2hhbl0gPSB5MCArICh5MSAtIHkwKSAqIHJlc3Q7CisgICAgICAgfQorfQorCisvLyBCaWxpbmVhciBpbnRlcnBvbGF0aW9uICgxNiBiaXRzKSAtIGNtc0Zsb2F0MzJOdW1iZXIgdmVyc2lvbgorc3RhdGljCit2b2lkIEJpbGluZWFySW50ZXJwRmxvYXQoY29uc3QgY21zRmxvYXQzMk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwKQorCit7CisjICAgZGVmaW5lIExFUlAoYSxsLGgpICAgIChjbXNGbG9hdDMyTnVtYmVyKSAoKGwpKygoKGgpLShsKSkqKGEpKSkKKyMgICBkZWZpbmUgREVOUyhpLGopICAgICAgKEx1dFRhYmxlWyhpKSsoaikrT3V0Q2hhbl0pCisKKyAgICBjb25zdCBjbXNGbG9hdDMyTnVtYmVyKiBMdXRUYWJsZSA9IChjbXNGbG9hdDMyTnVtYmVyKikgcCAtPlRhYmxlOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgICAgICBweCwgcHk7CisgICAgaW50ICAgICAgICB4MCwgeTAsCisgICAgICAgICAgICAgICBYMCwgWTAsIFgxLCBZMTsKKyAgICBpbnQgICAgICAgIFRvdGFsT3V0LCBPdXRDaGFuOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgICAgICBmeCwgZnksCisgICAgICAgIGQwMCwgZDAxLCBkMTAsIGQxMSwKKyAgICAgICAgZHgwLCBkeDEsCisgICAgICAgIGR4eTsKKworICAgIFRvdGFsT3V0ICAgPSBwIC0+IG5PdXRwdXRzOworICAgIHB4ID0gZmNsYW1wKElucHV0WzBdKSAqIHAtPkRvbWFpblswXTsKKyAgICBweSA9IGZjbGFtcChJbnB1dFsxXSkgKiBwLT5Eb21haW5bMV07CisKKyAgICB4MCA9IChpbnQpIF9jbXNRdWlja0Zsb29yKHB4KTsgZnggPSBweCAtIChjbXNGbG9hdDMyTnVtYmVyKSB4MDsKKyAgICB5MCA9IChpbnQpIF9jbXNRdWlja0Zsb29yKHB5KTsgZnkgPSBweSAtIChjbXNGbG9hdDMyTnVtYmVyKSB5MDsKKworICAgIFgwID0gcCAtPiBvcHRhWzFdICogeDA7CisgICAgWDEgPSBYMCArIChJbnB1dFswXSA+PSAxLjAgPyAwIDogcC0+b3B0YVsxXSk7CisKKyAgICBZMCA9IHAgLT4gb3B0YVswXSAqIHkwOworICAgIFkxID0gWTAgKyAoSW5wdXRbMV0gPj0gMS4wID8gMCA6IHAtPm9wdGFbMF0pOworCisgICAgZm9yIChPdXRDaGFuID0gMDsgT3V0Q2hhbiA8IFRvdGFsT3V0OyBPdXRDaGFuKyspIHsKKworICAgICAgICBkMDAgPSBERU5TKFgwLCBZMCk7CisgICAgICAgIGQwMSA9IERFTlMoWDAsIFkxKTsKKyAgICAgICAgZDEwID0gREVOUyhYMSwgWTApOworICAgICAgICBkMTEgPSBERU5TKFgxLCBZMSk7CisKKyAgICAgICAgZHgwID0gTEVSUChmeCwgZDAwLCBkMTApOworICAgICAgICBkeDEgPSBMRVJQKGZ4LCBkMDEsIGQxMSk7CisKKyAgICAgICAgZHh5ID0gTEVSUChmeSwgZHgwLCBkeDEpOworCisgICAgICAgIE91dHB1dFtPdXRDaGFuXSA9IGR4eTsKKyAgICB9CisKKworIyAgIHVuZGVmIExFUlAKKyMgICB1bmRlZiBERU5TCit9CisKKy8vIEJpbGluZWFyIGludGVycG9sYXRpb24gKDE2IGJpdHMpIC0gb3B0aW1pemVkIHZlcnNpb24KK3N0YXRpYwordm9pZCBCaWxpbmVhckludGVycDE2KHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRwdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjbXNJbnRlcnBQYXJhbXMqIHApCisKK3sKKyNkZWZpbmUgREVOUyhpLGopIChMdXRUYWJsZVsoaSkrKGopK091dENoYW5dKQorI2RlZmluZSBMRVJQKGEsbCxoKSAgICAgKGNtc1VJbnQxNk51bWJlcikgKGwgKyBST1VORF9GSVhFRF9UT19JTlQoKChoLWwpKmEpKSkKKworICAgICAgICAgICBjb25zdCBjbXNVSW50MTZOdW1iZXIqIEx1dFRhYmxlID0gKGNtc1VJbnQxNk51bWJlciopIHAgLT5UYWJsZTsKKyAgICAgICAgICAgaW50ICAgICAgICBPdXRDaGFuLCBUb3RhbE91dDsKKyAgICAgICAgICAgY21zUzE1Rml4ZWQxNk51bWJlciAgICBmeCwgZnk7CisgIHJlZ2lzdGVyIGludCAgICAgICAgcngsIHJ5OworICAgICAgICAgICBpbnQgICAgICAgIHgwLCB5MDsKKyAgcmVnaXN0ZXIgaW50ICAgICAgICBYMCwgWDEsIFkwLCBZMTsKKyAgICAgICAgICAgaW50ICAgICAgICBkMDAsIGQwMSwgZDEwLCBkMTEsCisgICAgICAgICAgICAgICAgICAgICAgZHgwLCBkeDEsCisgICAgICAgICAgICAgICAgICAgICAgZHh5OworCisgICAgVG90YWxPdXQgICA9IHAgLT4gbk91dHB1dHM7CisKKyAgICBmeCA9IF9jbXNUb0ZpeGVkRG9tYWluKChpbnQpIElucHV0WzBdICogcCAtPiBEb21haW5bMF0pOworICAgIHgwICA9IEZJWEVEX1RPX0lOVChmeCk7CisgICAgcnggID0gRklYRURfUkVTVF9UT19JTlQoZngpOyAgICAvLyBSZXN0IGluIDAuLjEuMCBkb21haW4KKworCisgICAgZnkgPSBfY21zVG9GaXhlZERvbWFpbigoaW50KSBJbnB1dFsxXSAqIHAgLT4gRG9tYWluWzFdKTsKKyAgICB5MCAgPSBGSVhFRF9UT19JTlQoZnkpOworICAgIHJ5ICA9IEZJWEVEX1JFU1RfVE9fSU5UKGZ5KTsKKworCisgICAgWDAgPSBwIC0+IG9wdGFbMV0gKiB4MDsKKyAgICBYMSA9IFgwICsgKElucHV0WzBdID09IDB4RkZGRlUgPyAwIDogcC0+b3B0YVsxXSk7CisKKyAgICBZMCA9IHAgLT4gb3B0YVswXSAqIHkwOworICAgIFkxID0gWTAgKyAoSW5wdXRbMV0gPT0gMHhGRkZGVSA/IDAgOiBwLT5vcHRhWzBdKTsKKworICAgIGZvciAoT3V0Q2hhbiA9IDA7IE91dENoYW4gPCBUb3RhbE91dDsgT3V0Q2hhbisrKSB7CisKKyAgICAgICAgZDAwID0gREVOUyhYMCwgWTApOworICAgICAgICBkMDEgPSBERU5TKFgwLCBZMSk7CisgICAgICAgIGQxMCA9IERFTlMoWDEsIFkwKTsKKyAgICAgICAgZDExID0gREVOUyhYMSwgWTEpOworCisgICAgICAgIGR4MCA9IExFUlAocngsIGQwMCwgZDEwKTsKKyAgICAgICAgZHgxID0gTEVSUChyeCwgZDAxLCBkMTEpOworCisgICAgICAgIGR4eSA9IExFUlAocnksIGR4MCwgZHgxKTsKKworICAgICAgICBPdXRwdXRbT3V0Q2hhbl0gPSAoY21zVUludDE2TnVtYmVyKSBkeHk7CisgICAgfQorCisKKyMgICB1bmRlZiBMRVJQCisjICAgdW5kZWYgREVOUworfQorCisKKy8vIFRyaWxpbmVhciBpbnRlcnBvbGF0aW9uICgxNiBiaXRzKSAtIGNtc0Zsb2F0MzJOdW1iZXIgdmVyc2lvbgorc3RhdGljCit2b2lkIFRyaWxpbmVhckludGVycEZsb2F0KGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgSW5wdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciBPdXRwdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwKQorCit7CisjICAgZGVmaW5lIExFUlAoYSxsLGgpICAgICAgKGNtc0Zsb2F0MzJOdW1iZXIpICgobCkrKCgoaCktKGwpKSooYSkpKQorIyAgIGRlZmluZSBERU5TKGksaixrKSAgICAgIChMdXRUYWJsZVsoaSkrKGopKyhrKStPdXRDaGFuXSkKKworICAgIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIEx1dFRhYmxlID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBwIC0+VGFibGU7CisgICAgY21zRmxvYXQzMk51bWJlciAgICAgIHB4LCBweSwgcHo7CisgICAgaW50ICAgICAgICB4MCwgeTAsIHowLAorICAgICAgICAgICAgICAgWDAsIFkwLCBaMCwgWDEsIFkxLCBaMTsKKyAgICBpbnQgICAgICAgIFRvdGFsT3V0LCBPdXRDaGFuOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgICAgICBmeCwgZnksIGZ6LAorICAgICAgICBkMDAwLCBkMDAxLCBkMDEwLCBkMDExLAorICAgICAgICBkMTAwLCBkMTAxLCBkMTEwLCBkMTExLAorICAgICAgICBkeDAwLCBkeDAxLCBkeDEwLCBkeDExLAorICAgICAgICBkeHkwLCBkeHkxLCBkeHl6OworCisgICAgVG90YWxPdXQgICA9IHAgLT4gbk91dHB1dHM7CisKKyAgICAvLyBXZSBuZWVkIHNvbWUgY2xpcHBpbmcgaGVyZQorICAgIHB4ID0gZmNsYW1wKElucHV0WzBdKSAqIHAtPkRvbWFpblswXTsKKyAgICBweSA9IGZjbGFtcChJbnB1dFsxXSkgKiBwLT5Eb21haW5bMV07CisgICAgcHogPSBmY2xhbXAoSW5wdXRbMl0pICogcC0+RG9tYWluWzJdOworCisgICAgeDAgPSAoaW50KSBfY21zUXVpY2tGbG9vcihweCk7IGZ4ID0gcHggLSAoY21zRmxvYXQzMk51bWJlcikgeDA7CisgICAgeTAgPSAoaW50KSBfY21zUXVpY2tGbG9vcihweSk7IGZ5ID0gcHkgLSAoY21zRmxvYXQzMk51bWJlcikgeTA7CisgICAgejAgPSAoaW50KSBfY21zUXVpY2tGbG9vcihweik7IGZ6ID0gcHogLSAoY21zRmxvYXQzMk51bWJlcikgejA7CisKKyAgICBYMCA9IHAgLT4gb3B0YVsyXSAqIHgwOworICAgIFgxID0gWDAgKyAoSW5wdXRbMF0gPj0gMS4wID8gMCA6IHAtPm9wdGFbMl0pOworCisgICAgWTAgPSBwIC0+IG9wdGFbMV0gKiB5MDsKKyAgICBZMSA9IFkwICsgKElucHV0WzFdID49IDEuMCA/IDAgOiBwLT5vcHRhWzFdKTsKKworICAgIFowID0gcCAtPiBvcHRhWzBdICogejA7CisgICAgWjEgPSBaMCArIChJbnB1dFsyXSA+PSAxLjAgPyAwIDogcC0+b3B0YVswXSk7CisKKyAgICBmb3IgKE91dENoYW4gPSAwOyBPdXRDaGFuIDwgVG90YWxPdXQ7IE91dENoYW4rKykgeworCisgICAgICAgIGQwMDAgPSBERU5TKFgwLCBZMCwgWjApOworICAgICAgICBkMDAxID0gREVOUyhYMCwgWTAsIFoxKTsKKyAgICAgICAgZDAxMCA9IERFTlMoWDAsIFkxLCBaMCk7CisgICAgICAgIGQwMTEgPSBERU5TKFgwLCBZMSwgWjEpOworCisgICAgICAgIGQxMDAgPSBERU5TKFgxLCBZMCwgWjApOworICAgICAgICBkMTAxID0gREVOUyhYMSwgWTAsIFoxKTsKKyAgICAgICAgZDExMCA9IERFTlMoWDEsIFkxLCBaMCk7CisgICAgICAgIGQxMTEgPSBERU5TKFgxLCBZMSwgWjEpOworCisKKyAgICAgICAgZHgwMCA9IExFUlAoZngsIGQwMDAsIGQxMDApOworICAgICAgICBkeDAxID0gTEVSUChmeCwgZDAwMSwgZDEwMSk7CisgICAgICAgIGR4MTAgPSBMRVJQKGZ4LCBkMDEwLCBkMTEwKTsKKyAgICAgICAgZHgxMSA9IExFUlAoZngsIGQwMTEsIGQxMTEpOworCisgICAgICAgIGR4eTAgPSBMRVJQKGZ5LCBkeDAwLCBkeDEwKTsKKyAgICAgICAgZHh5MSA9IExFUlAoZnksIGR4MDEsIGR4MTEpOworCisgICAgICAgIGR4eXogPSBMRVJQKGZ6LCBkeHkwLCBkeHkxKTsKKworICAgICAgICBPdXRwdXRbT3V0Q2hhbl0gPSBkeHl6OworICAgIH0KKworCisjICAgdW5kZWYgTEVSUAorIyAgIHVuZGVmIERFTlMKK30KKworLy8gVHJpbGluZWFyIGludGVycG9sYXRpb24gKDE2IGJpdHMpIC0gb3B0aW1pemVkIHZlcnNpb24KK3N0YXRpYwordm9pZCBUcmlsaW5lYXJJbnRlcnAxNihyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5wdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIE91dHB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjbXNJbnRlcnBQYXJhbXMqIHApCisKK3sKKyNkZWZpbmUgREVOUyhpLGosaykgKEx1dFRhYmxlWyhpKSsoaikrKGspK091dENoYW5dKQorI2RlZmluZSBMRVJQKGEsbCxoKSAgICAgKGNtc1VJbnQxNk51bWJlcikgKGwgKyBST1VORF9GSVhFRF9UT19JTlQoKChoLWwpKmEpKSkKKworICAgICAgICAgICBjb25zdCBjbXNVSW50MTZOdW1iZXIqIEx1dFRhYmxlID0gKGNtc1VJbnQxNk51bWJlciopIHAgLT5UYWJsZTsKKyAgICAgICAgICAgaW50ICAgICAgICBPdXRDaGFuLCBUb3RhbE91dDsKKyAgICAgICAgICAgY21zUzE1Rml4ZWQxNk51bWJlciAgICBmeCwgZnksIGZ6OworICByZWdpc3RlciBpbnQgICAgICAgIHJ4LCByeSwgcno7CisgICAgICAgICAgIGludCAgICAgICAgeDAsIHkwLCB6MDsKKyAgcmVnaXN0ZXIgaW50ICAgICAgICBYMCwgWDEsIFkwLCBZMSwgWjAsIFoxOworICAgICAgICAgICBpbnQgICAgICAgIGQwMDAsIGQwMDEsIGQwMTAsIGQwMTEsCisgICAgICAgICAgICAgICAgICAgICAgZDEwMCwgZDEwMSwgZDExMCwgZDExMSwKKyAgICAgICAgICAgICAgICAgICAgICBkeDAwLCBkeDAxLCBkeDEwLCBkeDExLAorICAgICAgICAgICAgICAgICAgICAgIGR4eTAsIGR4eTEsIGR4eXo7CisKKyAgICBUb3RhbE91dCAgID0gcCAtPiBuT3V0cHV0czsKKworICAgIGZ4ID0gX2Ntc1RvRml4ZWREb21haW4oKGludCkgSW5wdXRbMF0gKiBwIC0+IERvbWFpblswXSk7CisgICAgeDAgID0gRklYRURfVE9fSU5UKGZ4KTsKKyAgICByeCAgPSBGSVhFRF9SRVNUX1RPX0lOVChmeCk7ICAgIC8vIFJlc3QgaW4gMC4uMS4wIGRvbWFpbgorCisKKyAgICBmeSA9IF9jbXNUb0ZpeGVkRG9tYWluKChpbnQpIElucHV0WzFdICogcCAtPiBEb21haW5bMV0pOworICAgIHkwICA9IEZJWEVEX1RPX0lOVChmeSk7CisgICAgcnkgID0gRklYRURfUkVTVF9UT19JTlQoZnkpOworCisgICAgZnogPSBfY21zVG9GaXhlZERvbWFpbigoaW50KSBJbnB1dFsyXSAqIHAgLT4gRG9tYWluWzJdKTsKKyAgICB6MCA9IEZJWEVEX1RPX0lOVChmeik7CisgICAgcnogPSBGSVhFRF9SRVNUX1RPX0lOVChmeik7CisKKworICAgIFgwID0gcCAtPiBvcHRhWzJdICogeDA7CisgICAgWDEgPSBYMCArIChJbnB1dFswXSA9PSAweEZGRkZVID8gMCA6IHAtPm9wdGFbMl0pOworCisgICAgWTAgPSBwIC0+IG9wdGFbMV0gKiB5MDsKKyAgICBZMSA9IFkwICsgKElucHV0WzFdID09IDB4RkZGRlUgPyAwIDogcC0+b3B0YVsxXSk7CisKKyAgICBaMCA9IHAgLT4gb3B0YVswXSAqIHowOworICAgIFoxID0gWjAgKyAoSW5wdXRbMl0gPT0gMHhGRkZGVSA/IDAgOiBwLT5vcHRhWzBdKTsKKworICAgIGZvciAoT3V0Q2hhbiA9IDA7IE91dENoYW4gPCBUb3RhbE91dDsgT3V0Q2hhbisrKSB7CisKKyAgICAgICAgZDAwMCA9IERFTlMoWDAsIFkwLCBaMCk7CisgICAgICAgIGQwMDEgPSBERU5TKFgwLCBZMCwgWjEpOworICAgICAgICBkMDEwID0gREVOUyhYMCwgWTEsIFowKTsKKyAgICAgICAgZDAxMSA9IERFTlMoWDAsIFkxLCBaMSk7CisKKyAgICAgICAgZDEwMCA9IERFTlMoWDEsIFkwLCBaMCk7CisgICAgICAgIGQxMDEgPSBERU5TKFgxLCBZMCwgWjEpOworICAgICAgICBkMTEwID0gREVOUyhYMSwgWTEsIFowKTsKKyAgICAgICAgZDExMSA9IERFTlMoWDEsIFkxLCBaMSk7CisKKworICAgICAgICBkeDAwID0gTEVSUChyeCwgZDAwMCwgZDEwMCk7CisgICAgICAgIGR4MDEgPSBMRVJQKHJ4LCBkMDAxLCBkMTAxKTsKKyAgICAgICAgZHgxMCA9IExFUlAocngsIGQwMTAsIGQxMTApOworICAgICAgICBkeDExID0gTEVSUChyeCwgZDAxMSwgZDExMSk7CisKKyAgICAgICAgZHh5MCA9IExFUlAocnksIGR4MDAsIGR4MTApOworICAgICAgICBkeHkxID0gTEVSUChyeSwgZHgwMSwgZHgxMSk7CisKKyAgICAgICAgZHh5eiA9IExFUlAocnosIGR4eTAsIGR4eTEpOworCisgICAgICAgIE91dHB1dFtPdXRDaGFuXSA9IChjbXNVSW50MTZOdW1iZXIpIGR4eXo7CisgICAgfQorCisKKyMgICB1bmRlZiBMRVJQCisjICAgdW5kZWYgREVOUworfQorCisKKy8vIFRldHJhaGVkcmFsIGludGVycG9sYXRpb24sIHVzaW5nIFNha2Ftb3RvIGFsZ29yaXRobS4KKyNkZWZpbmUgREVOUyhpLGosaykgKEx1dFRhYmxlWyhpKSsoaikrKGspK091dENoYW5dKQorc3RhdGljCit2b2lkIFRldHJhaGVkcmFsSW50ZXJwRmxvYXQoY29uc3QgY21zRmxvYXQzMk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwKQoreworICAgIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIEx1dFRhYmxlID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBwIC0+IFRhYmxlOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgICAgIHB4LCBweSwgcHo7CisgICAgaW50ICAgICAgICB4MCwgeTAsIHowLAorICAgICAgICAgICAgICAgWDAsIFkwLCBaMCwgWDEsIFkxLCBaMTsKKyAgICBjbXNGbG9hdDMyTnVtYmVyICAgICByeCwgcnksIHJ6OworICAgIGNtc0Zsb2F0MzJOdW1iZXIgICAgIGMwLCBjMT0wLCBjMj0wLCBjMz0wOworICAgIGludCAgICAgICAgICAgICAgICAgIE91dENoYW4sIFRvdGFsT3V0OworCisgICAgVG90YWxPdXQgICA9IHAgLT4gbk91dHB1dHM7CisKKyAgICAvLyBXZSBuZWVkIHNvbWUgY2xpcHBpbmcgaGVyZQorICAgIHB4ID0gZmNsYW1wKElucHV0WzBdKSAqIHAtPkRvbWFpblswXTsKKyAgICBweSA9IGZjbGFtcChJbnB1dFsxXSkgKiBwLT5Eb21haW5bMV07CisgICAgcHogPSBmY2xhbXAoSW5wdXRbMl0pICogcC0+RG9tYWluWzJdOworCisgICAgeDAgPSAoaW50KSBfY21zUXVpY2tGbG9vcihweCk7IHJ4ID0gKHB4IC0gKGNtc0Zsb2F0MzJOdW1iZXIpIHgwKTsKKyAgICB5MCA9IChpbnQpIF9jbXNRdWlja0Zsb29yKHB5KTsgcnkgPSAocHkgLSAoY21zRmxvYXQzMk51bWJlcikgeTApOworICAgIHowID0gKGludCkgX2Ntc1F1aWNrRmxvb3IocHopOyByeiA9IChweiAtIChjbXNGbG9hdDMyTnVtYmVyKSB6MCk7CisKKworICAgIFgwID0gcCAtPiBvcHRhWzJdICogeDA7CisgICAgWDEgPSBYMCArIChJbnB1dFswXSA+PSAxLjAgPyAwIDogcC0+b3B0YVsyXSk7CisKKyAgICBZMCA9IHAgLT4gb3B0YVsxXSAqIHkwOworICAgIFkxID0gWTAgKyAoSW5wdXRbMV0gPj0gMS4wID8gMCA6IHAtPm9wdGFbMV0pOworCisgICAgWjAgPSBwIC0+IG9wdGFbMF0gKiB6MDsKKyAgICBaMSA9IFowICsgKElucHV0WzJdID49IDEuMCA/IDAgOiBwLT5vcHRhWzBdKTsKKworICAgIGZvciAoT3V0Q2hhbj0wOyBPdXRDaGFuIDwgVG90YWxPdXQ7IE91dENoYW4rKykgeworCisgICAgICAgLy8gVGhlc2UgYXJlIHRoZSA2IFRldHJhaGVkcmFsCisKKyAgICAgICAgYzAgPSBERU5TKFgwLCBZMCwgWjApOworCisgICAgICAgIGlmIChyeCA+PSByeSAmJiByeSA+PSByeikgeworCisgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkwLCBaMCkgLSBjMDsKKyAgICAgICAgICAgIGMyID0gREVOUyhYMSwgWTEsIFowKSAtIERFTlMoWDEsIFkwLCBaMCk7CisgICAgICAgICAgICBjMyA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgxLCBZMSwgWjApOworCisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHJ4ID49IHJ6ICYmIHJ6ID49IHJ5KSB7CisKKyAgICAgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkwLCBaMCkgLSBjMDsKKyAgICAgICAgICAgICAgICBjMiA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgxLCBZMCwgWjEpOworICAgICAgICAgICAgICAgIGMzID0gREVOUyhYMSwgWTAsIFoxKSAtIERFTlMoWDEsIFkwLCBaMCk7CisKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAocnogPj0gcnggJiYgcnggPj0gcnkpIHsKKworICAgICAgICAgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkwLCBaMSkgLSBERU5TKFgwLCBZMCwgWjEpOworICAgICAgICAgICAgICAgICAgICBjMiA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgxLCBZMCwgWjEpOworICAgICAgICAgICAgICAgICAgICBjMyA9IERFTlMoWDAsIFkwLCBaMSkgLSBjMDsKKworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlmIChyeSA+PSByeCAmJiByeCA+PSByeikgeworCisgICAgICAgICAgICAgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkxLCBaMCkgLSBERU5TKFgwLCBZMSwgWjApOworICAgICAgICAgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgwLCBZMSwgWjApIC0gYzA7CisgICAgICAgICAgICAgICAgICAgICAgICBjMyA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgxLCBZMSwgWjApOworCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ5ID49IHJ6ICYmIHJ6ID49IHJ4KSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgwLCBZMSwgWjEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyID0gREVOUyhYMCwgWTEsIFowKSAtIGMwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzID0gREVOUyhYMCwgWTEsIFoxKSAtIERFTlMoWDAsIFkxLCBaMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnogPj0gcnkgJiYgcnkgPj0gcngpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgwLCBZMSwgWjEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMiA9IERFTlMoWDAsIFkxLCBaMSkgLSBERU5TKFgwLCBZMCwgWjEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMyA9IERFTlMoWDAsIFkwLCBaMSkgLSBjMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxID0gYzIgPSBjMyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgT3V0cHV0W091dENoYW5dID0gYzAgKyBjMSAqIHJ4ICsgYzIgKiByeSArIGMzICogcno7CisgICAgICAgfQorCit9CisKKyN1bmRlZiBERU5TCisKKworCisKK3N0YXRpYwordm9pZCBUZXRyYWhlZHJhbEludGVycDE2KHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRwdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjbXNJbnRlcnBQYXJhbXMqIHApCit7CisgICAgY29uc3QgY21zVUludDE2TnVtYmVyKiBMdXRUYWJsZSA9IChjbXNVSW50MTZOdW1iZXIqKSBwIC0+IFRhYmxlOworICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgZngsIGZ5LCBmejsKKyAgICBjbXNTMTVGaXhlZDE2TnVtYmVyIHJ4LCByeSwgcno7CisgICAgaW50IHgwLCB5MCwgejA7CisgICAgY21zUzE1Rml4ZWQxNk51bWJlciBjMCwgYzEsIGMyLCBjMywgUmVzdDsKKyAgICBjbXNTMTVGaXhlZDE2TnVtYmVyIFgwLCBYMSwgWTAsIFkxLCBaMCwgWjE7CisgICAgY21zVUludDMyTnVtYmVyIFRvdGFsT3V0ID0gcCAtPiBuT3V0cHV0czsKKworICAgIGZ4ID0gX2Ntc1RvRml4ZWREb21haW4oKGludCkgSW5wdXRbMF0gKiBwIC0+IERvbWFpblswXSk7CisgICAgZnkgPSBfY21zVG9GaXhlZERvbWFpbigoaW50KSBJbnB1dFsxXSAqIHAgLT4gRG9tYWluWzFdKTsKKyAgICBmeiA9IF9jbXNUb0ZpeGVkRG9tYWluKChpbnQpIElucHV0WzJdICogcCAtPiBEb21haW5bMl0pOworCisgICAgeDAgPSBGSVhFRF9UT19JTlQoZngpOworICAgIHkwID0gRklYRURfVE9fSU5UKGZ5KTsKKyAgICB6MCA9IEZJWEVEX1RPX0lOVChmeik7CisKKyAgICByeCA9IEZJWEVEX1JFU1RfVE9fSU5UKGZ4KTsKKyAgICByeSA9IEZJWEVEX1JFU1RfVE9fSU5UKGZ5KTsKKyAgICByeiA9IEZJWEVEX1JFU1RfVE9fSU5UKGZ6KTsKKworICAgIFgwID0gcCAtPiBvcHRhWzJdICogeDA7CisgICAgWDEgPSAoSW5wdXRbMF0gPT0gMHhGRkZGVSA/IDAgOiBwLT5vcHRhWzJdKTsKKworICAgIFkwID0gcCAtPiBvcHRhWzFdICogeTA7CisgICAgWTEgPSAoSW5wdXRbMV0gPT0gMHhGRkZGVSA/IDAgOiBwLT5vcHRhWzFdKTsKKworICAgIFowID0gcCAtPiBvcHRhWzBdICogejA7CisgICAgWjEgPSAoSW5wdXRbMl0gPT0gMHhGRkZGVSA/IDAgOiBwLT5vcHRhWzBdKTsKKworICAgIEx1dFRhYmxlID0gJkx1dFRhYmxlW1gwK1kwK1owXTsKKworICAgIC8vIE91dHB1dCBzaG91bGQgYmUgY29tcHV0ZWQgYXMgeCA9IFJPVU5EX0ZJWEVEX1RPX0lOVChfY21zVG9GaXhlZERvbWFpbihSZXN0KSkKKyAgICAvLyB3aGljaCBleHBhbmRzIGFzOiB4ID0gKFJlc3QgKyAoKFJlc3QrMHg3ZmZmKS8weEZGRkYpICsgMHg4MDAwKT4+MTYKKyAgICAvLyBUaGlzIGNhbiBiZSByZXBsYWNlZCBieTogdCA9IFJlc3QrMHg4MDAxLCB4ID0gKHQgKyAodD4+MTYpKT4+MTYKKyAgICAvLyBhdCB0aGUgY29zdCBvZiBiZWluZyBvZmYgYnkgb25lIGF0IDdmZmYgYW5kIDE3ZmZlLgorCisgICAgaWYgKHJ4ID49IHJ5KSB7CisgICAgICAgIGlmIChyeSA+PSByeikgeworICAgICAgICAgICAgWTEgKz0gWDE7CisgICAgICAgICAgICBaMSArPSBZMTsKKyAgICAgICAgICAgIGZvciAoOyBUb3RhbE91dDsgVG90YWxPdXQtLSkgeworICAgICAgICAgICAgICAgIGMxID0gTHV0VGFibGVbWDFdOworICAgICAgICAgICAgICAgIGMyID0gTHV0VGFibGVbWTFdOworICAgICAgICAgICAgICAgIGMzID0gTHV0VGFibGVbWjFdOworICAgICAgICAgICAgICAgIGMwID0gKkx1dFRhYmxlKys7CisgICAgICAgICAgICAgICAgYzMgLT0gYzI7CisgICAgICAgICAgICAgICAgYzIgLT0gYzE7CisgICAgICAgICAgICAgICAgYzEgLT0gYzA7CisgICAgICAgICAgICAgICAgUmVzdCA9IGMxICogcnggKyBjMiAqIHJ5ICsgYzMgKiByeiArIDB4ODAwMTsKKyAgICAgICAgICAgICAgICAqT3V0cHV0KysgPSAoY21zVUludDE2TnVtYmVyKSBjMCArICgoUmVzdCArIChSZXN0Pj4xNikpPj4xNik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAocnogPj0gcngpIHsKKyAgICAgICAgICAgIFgxICs9IFoxOworICAgICAgICAgICAgWTEgKz0gWDE7CisgICAgICAgICAgICBmb3IgKDsgVG90YWxPdXQ7IFRvdGFsT3V0LS0pIHsKKyAgICAgICAgICAgICAgICBjMSA9IEx1dFRhYmxlW1gxXTsKKyAgICAgICAgICAgICAgICBjMiA9IEx1dFRhYmxlW1kxXTsKKyAgICAgICAgICAgICAgICBjMyA9IEx1dFRhYmxlW1oxXTsKKyAgICAgICAgICAgICAgICBjMCA9ICpMdXRUYWJsZSsrOworICAgICAgICAgICAgICAgIGMyIC09IGMxOworICAgICAgICAgICAgICAgIGMxIC09IGMzOworICAgICAgICAgICAgICAgIGMzIC09IGMwOworICAgICAgICAgICAgICAgIFJlc3QgPSBjMSAqIHJ4ICsgYzIgKiByeSArIGMzICogcnogKyAweDgwMDE7CisgICAgICAgICAgICAgICAgKk91dHB1dCsrID0gKGNtc1VJbnQxNk51bWJlcikgYzAgKyAoKFJlc3QgKyAoUmVzdD4+MTYpKT4+MTYpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgWjEgKz0gWDE7CisgICAgICAgICAgICBZMSArPSBaMTsKKyAgICAgICAgICAgIGZvciAoOyBUb3RhbE91dDsgVG90YWxPdXQtLSkgeworICAgICAgICAgICAgICAgIGMxID0gTHV0VGFibGVbWDFdOworICAgICAgICAgICAgICAgIGMyID0gTHV0VGFibGVbWTFdOworICAgICAgICAgICAgICAgIGMzID0gTHV0VGFibGVbWjFdOworICAgICAgICAgICAgICAgIGMwID0gKkx1dFRhYmxlKys7CisgICAgICAgICAgICAgICAgYzIgLT0gYzM7CisgICAgICAgICAgICAgICAgYzMgLT0gYzE7CisgICAgICAgICAgICAgICAgYzEgLT0gYzA7CisgICAgICAgICAgICAgICAgUmVzdCA9IGMxICogcnggKyBjMiAqIHJ5ICsgYzMgKiByeiArIDB4ODAwMTsKKyAgICAgICAgICAgICAgICAqT3V0cHV0KysgPSAoY21zVUludDE2TnVtYmVyKSBjMCArICgoUmVzdCArIChSZXN0Pj4xNikpPj4xNik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocnggPj0gcnopIHsKKyAgICAgICAgICAgIFgxICs9IFkxOworICAgICAgICAgICAgWjEgKz0gWDE7CisgICAgICAgICAgICBmb3IgKDsgVG90YWxPdXQ7IFRvdGFsT3V0LS0pIHsKKyAgICAgICAgICAgICAgICBjMSA9IEx1dFRhYmxlW1gxXTsKKyAgICAgICAgICAgICAgICBjMiA9IEx1dFRhYmxlW1kxXTsKKyAgICAgICAgICAgICAgICBjMyA9IEx1dFRhYmxlW1oxXTsKKyAgICAgICAgICAgICAgICBjMCA9ICpMdXRUYWJsZSsrOworICAgICAgICAgICAgICAgIGMzIC09IGMxOworICAgICAgICAgICAgICAgIGMxIC09IGMyOworICAgICAgICAgICAgICAgIGMyIC09IGMwOworICAgICAgICAgICAgICAgIFJlc3QgPSBjMSAqIHJ4ICsgYzIgKiByeSArIGMzICogcnogKyAweDgwMDE7CisgICAgICAgICAgICAgICAgKk91dHB1dCsrID0gKGNtc1VJbnQxNk51bWJlcikgYzAgKyAoKFJlc3QgKyAoUmVzdD4+MTYpKT4+MTYpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHJ5ID49IHJ6KSB7CisgICAgICAgICAgICBaMSArPSBZMTsKKyAgICAgICAgICAgIFgxICs9IFoxOworICAgICAgICAgICAgZm9yICg7IFRvdGFsT3V0OyBUb3RhbE91dC0tKSB7CisgICAgICAgICAgICAgICAgYzEgPSBMdXRUYWJsZVtYMV07CisgICAgICAgICAgICAgICAgYzIgPSBMdXRUYWJsZVtZMV07CisgICAgICAgICAgICAgICAgYzMgPSBMdXRUYWJsZVtaMV07CisgICAgICAgICAgICAgICAgYzAgPSAqTHV0VGFibGUrKzsKKyAgICAgICAgICAgICAgICBjMSAtPSBjMzsKKyAgICAgICAgICAgICAgICBjMyAtPSBjMjsKKyAgICAgICAgICAgICAgICBjMiAtPSBjMDsKKyAgICAgICAgICAgICAgICBSZXN0ID0gYzEgKiByeCArIGMyICogcnkgKyBjMyAqIHJ6ICsgMHg4MDAxOworICAgICAgICAgICAgICAgICpPdXRwdXQrKyA9IChjbXNVSW50MTZOdW1iZXIpIGMwICsgKChSZXN0ICsgKFJlc3Q+PjE2KSk+PjE2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFkxICs9IFoxOworICAgICAgICAgICAgWDEgKz0gWTE7CisgICAgICAgICAgICBmb3IgKDsgVG90YWxPdXQ7IFRvdGFsT3V0LS0pIHsKKyAgICAgICAgICAgICAgICBjMSA9IEx1dFRhYmxlW1gxXTsKKyAgICAgICAgICAgICAgICBjMiA9IEx1dFRhYmxlW1kxXTsKKyAgICAgICAgICAgICAgICBjMyA9IEx1dFRhYmxlW1oxXTsKKyAgICAgICAgICAgICAgICBjMCA9ICpMdXRUYWJsZSsrOworICAgICAgICAgICAgICAgIGMxIC09IGMyOworICAgICAgICAgICAgICAgIGMyIC09IGMzOworICAgICAgICAgICAgICAgIGMzIC09IGMwOworICAgICAgICAgICAgICAgIFJlc3QgPSBjMSAqIHJ4ICsgYzIgKiByeSArIGMzICogcnogKyAweDgwMDE7CisgICAgICAgICAgICAgICAgKk91dHB1dCsrID0gKGNtc1VJbnQxNk51bWJlcikgYzAgKyAoKFJlc3QgKyAoUmVzdD4+MTYpKT4+MTYpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisKKyNkZWZpbmUgREVOUyhpLGosaykgKEx1dFRhYmxlWyhpKSsoaikrKGspK091dENoYW5dKQorc3RhdGljCit2b2lkIEV2YWw0SW5wdXRzKHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIE91dHB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwMTYpCit7CisgICAgY29uc3QgY21zVUludDE2TnVtYmVyKiBMdXRUYWJsZTsKKyAgICBjbXNTMTVGaXhlZDE2TnVtYmVyIGZrOworICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgazAsIHJrOworICAgIGludCBLMCwgSzE7CisgICAgY21zUzE1Rml4ZWQxNk51bWJlciAgICBmeCwgZnksIGZ6OworICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgICAgcngsIHJ5LCByejsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIHgwLCB5MCwgejA7CisgICAgY21zUzE1Rml4ZWQxNk51bWJlciAgICBYMCwgWDEsIFkwLCBZMSwgWjAsIFoxOworICAgIGNtc1VJbnQzMk51bWJlciBpOworICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgICAgYzAsIGMxLCBjMiwgYzMsIFJlc3Q7CisgICAgY21zVUludDMyTnVtYmVyICAgICAgICBPdXRDaGFuOworICAgIGNtc1VJbnQxNk51bWJlciAgICAgICAgVG1wMVtNQVhfU1RBR0VfQ0hBTk5FTFNdLCBUbXAyW01BWF9TVEFHRV9DSEFOTkVMU107CisKKworICAgIGZrICA9IF9jbXNUb0ZpeGVkRG9tYWluKChpbnQpIElucHV0WzBdICogcDE2IC0+IERvbWFpblswXSk7CisgICAgZnggID0gX2Ntc1RvRml4ZWREb21haW4oKGludCkgSW5wdXRbMV0gKiBwMTYgLT4gRG9tYWluWzFdKTsKKyAgICBmeSAgPSBfY21zVG9GaXhlZERvbWFpbigoaW50KSBJbnB1dFsyXSAqIHAxNiAtPiBEb21haW5bMl0pOworICAgIGZ6ICA9IF9jbXNUb0ZpeGVkRG9tYWluKChpbnQpIElucHV0WzNdICogcDE2IC0+IERvbWFpblszXSk7CisKKyAgICBrMCAgPSBGSVhFRF9UT19JTlQoZmspOworICAgIHgwICA9IEZJWEVEX1RPX0lOVChmeCk7CisgICAgeTAgID0gRklYRURfVE9fSU5UKGZ5KTsKKyAgICB6MCAgPSBGSVhFRF9UT19JTlQoZnopOworCisgICAgcmsgID0gRklYRURfUkVTVF9UT19JTlQoZmspOworICAgIHJ4ICA9IEZJWEVEX1JFU1RfVE9fSU5UKGZ4KTsKKyAgICByeSAgPSBGSVhFRF9SRVNUX1RPX0lOVChmeSk7CisgICAgcnogID0gRklYRURfUkVTVF9UT19JTlQoZnopOworCisgICAgSzAgPSBwMTYgLT4gb3B0YVszXSAqIGswOworICAgIEsxID0gSzAgKyAoSW5wdXRbMF0gPT0gMHhGRkZGVSA/IDAgOiBwMTYtPm9wdGFbM10pOworCisgICAgWDAgPSBwMTYgLT4gb3B0YVsyXSAqIHgwOworICAgIFgxID0gWDAgKyAoSW5wdXRbMV0gPT0gMHhGRkZGVSA/IDAgOiBwMTYtPm9wdGFbMl0pOworCisgICAgWTAgPSBwMTYgLT4gb3B0YVsxXSAqIHkwOworICAgIFkxID0gWTAgKyAoSW5wdXRbMl0gPT0gMHhGRkZGVSA/IDAgOiBwMTYtPm9wdGFbMV0pOworCisgICAgWjAgPSBwMTYgLT4gb3B0YVswXSAqIHowOworICAgIFoxID0gWjAgKyAoSW5wdXRbM10gPT0gMHhGRkZGVSA/IDAgOiBwMTYtPm9wdGFbMF0pOworCisgICAgTHV0VGFibGUgPSAoY21zVUludDE2TnVtYmVyKikgcDE2IC0+IFRhYmxlOworICAgIEx1dFRhYmxlICs9IEswOworCisgICAgZm9yIChPdXRDaGFuPTA7IE91dENoYW4gPCBwMTYgLT4gbk91dHB1dHM7IE91dENoYW4rKykgeworCisgICAgICAgIGMwID0gREVOUyhYMCwgWTAsIFowKTsKKworICAgICAgICBpZiAocnggPj0gcnkgJiYgcnkgPj0gcnopIHsKKworICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMCwgWjApIC0gYzA7CisgICAgICAgICAgICBjMiA9IERFTlMoWDEsIFkxLCBaMCkgLSBERU5TKFgxLCBZMCwgWjApOworICAgICAgICAgICAgYzMgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMSwgWTEsIFowKTsKKworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChyeCA+PSByeiAmJiByeiA+PSByeSkgeworCisgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMCwgWjApIC0gYzA7CisgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMSwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICBjMyA9IERFTlMoWDEsIFkwLCBaMSkgLSBERU5TKFgxLCBZMCwgWjApOworCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKHJ6ID49IHJ4ICYmIHJ4ID49IHJ5KSB7CisKKyAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMCwgWjEpIC0gREVOUyhYMCwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMSwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgYzMgPSBERU5TKFgwLCBZMCwgWjEpIC0gYzA7CisKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpZiAocnkgPj0gcnggJiYgcnggPj0gcnopIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMSwgWjApIC0gREVOUyhYMCwgWTEsIFowKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMyID0gREVOUyhYMCwgWTEsIFowKSAtIGMwOworICAgICAgICAgICAgICAgICAgICAgICAgYzMgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMSwgWTEsIFowKTsKKworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyeSA+PSByeiAmJiByeiA+PSByeCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMCwgWTEsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMiA9IERFTlMoWDAsIFkxLCBaMCkgLSBjMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMyA9IERFTlMoWDAsIFkxLCBaMSkgLSBERU5TKFgwLCBZMSwgWjApOworCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ6ID49IHJ5ICYmIHJ5ID49IHJ4KSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMCwgWTEsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgwLCBZMSwgWjEpIC0gREVOUyhYMCwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzMgPSBERU5TKFgwLCBZMCwgWjEpIC0gYzA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMSA9IGMyID0gYzMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3QgPSBjMSAqIHJ4ICsgYzIgKiByeSArIGMzICogcno7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbXAxW091dENoYW5dID0gKGNtc1VJbnQxNk51bWJlcikgYzAgKyBST1VORF9GSVhFRF9UT19JTlQoX2Ntc1RvRml4ZWREb21haW4oUmVzdCkpOworICAgIH0KKworCisgICAgTHV0VGFibGUgPSAoY21zVUludDE2TnVtYmVyKikgcDE2IC0+IFRhYmxlOworICAgIEx1dFRhYmxlICs9IEsxOworCisgICAgZm9yIChPdXRDaGFuPTA7IE91dENoYW4gPCBwMTYgLT4gbk91dHB1dHM7IE91dENoYW4rKykgeworCisgICAgICAgIGMwID0gREVOUyhYMCwgWTAsIFowKTsKKworICAgICAgICBpZiAocnggPj0gcnkgJiYgcnkgPj0gcnopIHsKKworICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMCwgWjApIC0gYzA7CisgICAgICAgICAgICBjMiA9IERFTlMoWDEsIFkxLCBaMCkgLSBERU5TKFgxLCBZMCwgWjApOworICAgICAgICAgICAgYzMgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMSwgWTEsIFowKTsKKworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChyeCA+PSByeiAmJiByeiA+PSByeSkgeworCisgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMCwgWjApIC0gYzA7CisgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMSwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICBjMyA9IERFTlMoWDEsIFkwLCBaMSkgLSBERU5TKFgxLCBZMCwgWjApOworCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKHJ6ID49IHJ4ICYmIHJ4ID49IHJ5KSB7CisKKyAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMCwgWjEpIC0gREVOUyhYMCwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMSwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgYzMgPSBERU5TKFgwLCBZMCwgWjEpIC0gYzA7CisKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpZiAocnkgPj0gcnggJiYgcnggPj0gcnopIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMSwgWjApIC0gREVOUyhYMCwgWTEsIFowKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMyID0gREVOUyhYMCwgWTEsIFowKSAtIGMwOworICAgICAgICAgICAgICAgICAgICAgICAgYzMgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMSwgWTEsIFowKTsKKworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyeSA+PSByeiAmJiByeiA+PSByeCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMCwgWTEsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMiA9IERFTlMoWDAsIFkxLCBaMCkgLSBjMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMyA9IERFTlMoWDAsIFkxLCBaMSkgLSBERU5TKFgwLCBZMSwgWjApOworCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ6ID49IHJ5ICYmIHJ5ID49IHJ4KSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMCwgWTEsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgwLCBZMSwgWjEpIC0gREVOUyhYMCwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzMgPSBERU5TKFgwLCBZMCwgWjEpIC0gYzA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMSA9IGMyID0gYzMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3QgPSBjMSAqIHJ4ICsgYzIgKiByeSArIGMzICogcno7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbXAyW091dENoYW5dID0gKGNtc1VJbnQxNk51bWJlcikgYzAgKyBST1VORF9GSVhFRF9UT19JTlQoX2Ntc1RvRml4ZWREb21haW4oUmVzdCkpOworICAgIH0KKworCisKKyAgICBmb3IgKGk9MDsgaSA8IHAxNiAtPiBuT3V0cHV0czsgaSsrKSB7CisgICAgICAgIE91dHB1dFtpXSA9IExpbmVhckludGVycChyaywgVG1wMVtpXSwgVG1wMltpXSk7CisgICAgfQorfQorI3VuZGVmIERFTlMKKworCisvLyBGb3IgbW9yZSB0aGF0IDMgaW5wdXRzIChpLmUuLCBDTVlLKQorLy8gZXZhbHVhdGUgdHdvIDMtZGltZW5zaW9uYWwgaW50ZXJwb2xhdGlvbnMgYW5kIHRoZW4gbGluZWFybHkgaW50ZXJwb2xhdGUgYmV0d2VlbiB0aGVtLgorCisKK3N0YXRpYwordm9pZCBFdmFsNElucHV0c0Zsb2F0KGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgSW5wdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIE91dHB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0ludGVycFBhcmFtcyogcCkKK3sKKyAgICAgICBjb25zdCBjbXNGbG9hdDMyTnVtYmVyKiBMdXRUYWJsZSA9IChjbXNGbG9hdDMyTnVtYmVyKikgcCAtPiBUYWJsZTsKKyAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHJlc3Q7CisgICAgICAgY21zRmxvYXQzMk51bWJlciBwazsKKyAgICAgICBpbnQgazAsIEswLCBLMTsKKyAgICAgICBjb25zdCBjbXNGbG9hdDMyTnVtYmVyKiBUOworICAgICAgIGNtc1VJbnQzMk51bWJlciBpOworICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgVG1wMVtNQVhfU1RBR0VfQ0hBTk5FTFNdLCBUbXAyW01BWF9TVEFHRV9DSEFOTkVMU107CisgICAgICAgY21zSW50ZXJwUGFyYW1zIHAxOworCisgICAgICAgcGsgPSBmY2xhbXAoSW5wdXRbMF0pICogcC0+RG9tYWluWzBdOworICAgICAgIGswID0gX2Ntc1F1aWNrRmxvb3IocGspOworICAgICAgIHJlc3QgPSBwayAtIChjbXNGbG9hdDMyTnVtYmVyKSBrMDsKKworICAgICAgIEswID0gcCAtPiBvcHRhWzNdICogazA7CisgICAgICAgSzEgPSBLMCArIChJbnB1dFswXSA+PSAxLjAgPyAwIDogcC0+b3B0YVszXSk7CisKKyAgICAgICBwMSA9ICpwOworICAgICAgIG1lbW1vdmUoJnAxLkRvbWFpblswXSwgJnAgLT5Eb21haW5bMV0sIDMqc2l6ZW9mKGNtc1VJbnQzMk51bWJlcikpOworCisgICAgICAgVCA9IEx1dFRhYmxlICsgSzA7CisgICAgICAgcDEuVGFibGUgPSBUOworCisgICAgICAgVGV0cmFoZWRyYWxJbnRlcnBGbG9hdChJbnB1dCArIDEsICBUbXAxLCAmcDEpOworCisgICAgICAgVCA9IEx1dFRhYmxlICsgSzE7CisgICAgICAgcDEuVGFibGUgPSBUOworICAgICAgIFRldHJhaGVkcmFsSW50ZXJwRmxvYXQoSW5wdXQgKyAxLCAgVG1wMiwgJnAxKTsKKworICAgICAgIGZvciAoaT0wOyBpIDwgcCAtPiBuT3V0cHV0czsgaSsrKQorICAgICAgIHsKKyAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciB5MCA9IFRtcDFbaV07CisgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgeTEgPSBUbXAyW2ldOworCisgICAgICAgICAgICAgIE91dHB1dFtpXSA9IHkwICsgKHkxIC0geTApICogcmVzdDsKKyAgICAgICB9Cit9CisKKworc3RhdGljCit2b2lkIEV2YWw1SW5wdXRzKHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0cHV0W10sCisKKyAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwMTYpCit7CisgICAgICAgY29uc3QgY21zVUludDE2TnVtYmVyKiBMdXRUYWJsZSA9IChjbXNVSW50MTZOdW1iZXIqKSBwMTYgLT4gVGFibGU7CisgICAgICAgY21zUzE1Rml4ZWQxNk51bWJlciBmazsKKyAgICAgICBjbXNTMTVGaXhlZDE2TnVtYmVyIGswLCByazsKKyAgICAgICBpbnQgSzAsIEsxOworICAgICAgIGNvbnN0IGNtc1VJbnQxNk51bWJlciogVDsKKyAgICAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICAgICBjbXNVSW50MTZOdW1iZXIgVG1wMVtNQVhfU1RBR0VfQ0hBTk5FTFNdLCBUbXAyW01BWF9TVEFHRV9DSEFOTkVMU107CisgICAgICAgY21zSW50ZXJwUGFyYW1zIHAxOworCisKKyAgICAgICBmayA9IF9jbXNUb0ZpeGVkRG9tYWluKChjbXNTMTVGaXhlZDE2TnVtYmVyKSBJbnB1dFswXSAqIHAxNiAtPiBEb21haW5bMF0pOworICAgICAgIGswID0gRklYRURfVE9fSU5UKGZrKTsKKyAgICAgICByayA9IEZJWEVEX1JFU1RfVE9fSU5UKGZrKTsKKworICAgICAgIEswID0gcDE2IC0+IG9wdGFbNF0gKiBrMDsKKyAgICAgICBLMSA9IHAxNiAtPiBvcHRhWzRdICogKGswICsgKElucHV0WzBdICE9IDB4RkZGRlUgPyAxIDogMCkpOworCisgICAgICAgcDEgPSAqcDE2OworICAgICAgIG1lbW1vdmUoJnAxLkRvbWFpblswXSwgJnAxNiAtPkRvbWFpblsxXSwgNCpzaXplb2YoY21zVUludDMyTnVtYmVyKSk7CisKKyAgICAgICBUID0gTHV0VGFibGUgKyBLMDsKKyAgICAgICBwMS5UYWJsZSA9IFQ7CisKKyAgICAgICBFdmFsNElucHV0cyhJbnB1dCArIDEsIFRtcDEsICZwMSk7CisKKyAgICAgICBUID0gTHV0VGFibGUgKyBLMTsKKyAgICAgICBwMS5UYWJsZSA9IFQ7CisKKyAgICAgICBFdmFsNElucHV0cyhJbnB1dCArIDEsIFRtcDIsICZwMSk7CisKKyAgICAgICBmb3IgKGk9MDsgaSA8IHAxNiAtPiBuT3V0cHV0czsgaSsrKSB7CisKKyAgICAgICAgICAgICAgT3V0cHV0W2ldID0gTGluZWFySW50ZXJwKHJrLCBUbXAxW2ldLCBUbXAyW2ldKTsKKyAgICAgICB9CisKK30KKworCitzdGF0aWMKK3ZvaWQgRXZhbDVJbnB1dHNGbG9hdChjb25zdCBjbXNGbG9hdDMyTnVtYmVyIElucHV0W10sCisgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciBPdXRwdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNJbnRlcnBQYXJhbXMqIHApCit7CisgICAgICAgY29uc3QgY21zRmxvYXQzMk51bWJlciogTHV0VGFibGUgPSAoY21zRmxvYXQzMk51bWJlciopIHAgLT4gVGFibGU7CisgICAgICAgY21zRmxvYXQzMk51bWJlciByZXN0OworICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgcGs7CisgICAgICAgaW50IGswLCBLMCwgSzE7CisgICAgICAgY29uc3QgY21zRmxvYXQzMk51bWJlciogVDsKKyAgICAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICAgICBjbXNGbG9hdDMyTnVtYmVyIFRtcDFbTUFYX1NUQUdFX0NIQU5ORUxTXSwgVG1wMltNQVhfU1RBR0VfQ0hBTk5FTFNdOworICAgICAgIGNtc0ludGVycFBhcmFtcyBwMTsKKworICAgICAgIHBrID0gZmNsYW1wKElucHV0WzBdKSAqIHAtPkRvbWFpblswXTsKKyAgICAgICBrMCA9IF9jbXNRdWlja0Zsb29yKHBrKTsKKyAgICAgICByZXN0ID0gcGsgLSAoY21zRmxvYXQzMk51bWJlcikgazA7CisKKyAgICAgICBLMCA9IHAgLT4gb3B0YVs0XSAqIGswOworICAgICAgIEsxID0gSzAgKyAoSW5wdXRbMF0gPj0gMS4wID8gMCA6IHAtPm9wdGFbNF0pOworCisgICAgICAgcDEgPSAqcDsKKyAgICAgICBtZW1tb3ZlKCZwMS5Eb21haW5bMF0sICZwIC0+RG9tYWluWzFdLCA0KnNpemVvZihjbXNVSW50MzJOdW1iZXIpKTsKKworICAgICAgIFQgPSBMdXRUYWJsZSArIEswOworICAgICAgIHAxLlRhYmxlID0gVDsKKworICAgICAgIEV2YWw0SW5wdXRzRmxvYXQoSW5wdXQgKyAxLCAgVG1wMSwgJnAxKTsKKworICAgICAgIFQgPSBMdXRUYWJsZSArIEsxOworICAgICAgIHAxLlRhYmxlID0gVDsKKworICAgICAgIEV2YWw0SW5wdXRzRmxvYXQoSW5wdXQgKyAxLCAgVG1wMiwgJnAxKTsKKworICAgICAgIGZvciAoaT0wOyBpIDwgcCAtPiBuT3V0cHV0czsgaSsrKSB7CisKKyAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciB5MCA9IFRtcDFbaV07CisgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgeTEgPSBUbXAyW2ldOworCisgICAgICAgICAgICAgIE91dHB1dFtpXSA9IHkwICsgKHkxIC0geTApICogcmVzdDsKKyAgICAgICB9Cit9CisKKworCitzdGF0aWMKK3ZvaWQgRXZhbDZJbnB1dHMocmVnaXN0ZXIgY29uc3QgY21zVUludDE2TnVtYmVyIElucHV0W10sCisgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRwdXRbXSwKKyAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwMTYpCit7CisgICAgICAgY29uc3QgY21zVUludDE2TnVtYmVyKiBMdXRUYWJsZSA9IChjbXNVSW50MTZOdW1iZXIqKSBwMTYgLT4gVGFibGU7CisgICAgICAgY21zUzE1Rml4ZWQxNk51bWJlciBmazsKKyAgICAgICBjbXNTMTVGaXhlZDE2TnVtYmVyIGswLCByazsKKyAgICAgICBpbnQgSzAsIEsxOworICAgICAgIGNvbnN0IGNtc1VJbnQxNk51bWJlciogVDsKKyAgICAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICAgICBjbXNVSW50MTZOdW1iZXIgVG1wMVtNQVhfU1RBR0VfQ0hBTk5FTFNdLCBUbXAyW01BWF9TVEFHRV9DSEFOTkVMU107CisgICAgICAgY21zSW50ZXJwUGFyYW1zIHAxOworCisgICAgICAgZmsgPSBfY21zVG9GaXhlZERvbWFpbigoY21zUzE1Rml4ZWQxNk51bWJlcikgSW5wdXRbMF0gKiBwMTYgLT4gRG9tYWluWzBdKTsKKyAgICAgICBrMCA9IEZJWEVEX1RPX0lOVChmayk7CisgICAgICAgcmsgPSBGSVhFRF9SRVNUX1RPX0lOVChmayk7CisKKyAgICAgICBLMCA9IHAxNiAtPiBvcHRhWzVdICogazA7CisgICAgICAgSzEgPSBwMTYgLT4gb3B0YVs1XSAqIChrMCArIChJbnB1dFswXSAhPSAweEZGRkZVID8gMSA6IDApKTsKKworICAgICAgIHAxID0gKnAxNjsKKyAgICAgICBtZW1tb3ZlKCZwMS5Eb21haW5bMF0sICZwMTYgLT5Eb21haW5bMV0sIDUqc2l6ZW9mKGNtc1VJbnQzMk51bWJlcikpOworCisgICAgICAgVCA9IEx1dFRhYmxlICsgSzA7CisgICAgICAgcDEuVGFibGUgPSBUOworCisgICAgICAgRXZhbDVJbnB1dHMoSW5wdXQgKyAxLCBUbXAxLCAmcDEpOworCisgICAgICAgVCA9IEx1dFRhYmxlICsgSzE7CisgICAgICAgcDEuVGFibGUgPSBUOworCisgICAgICAgRXZhbDVJbnB1dHMoSW5wdXQgKyAxLCBUbXAyLCAmcDEpOworCisgICAgICAgZm9yIChpPTA7IGkgPCBwMTYgLT4gbk91dHB1dHM7IGkrKykgeworCisgICAgICAgICAgICAgIE91dHB1dFtpXSA9IExpbmVhckludGVycChyaywgVG1wMVtpXSwgVG1wMltpXSk7CisgICAgICAgfQorCit9CisKKworc3RhdGljCit2b2lkIEV2YWw2SW5wdXRzRmxvYXQoY29uc3QgY21zRmxvYXQzMk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwKQoreworICAgICAgIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIEx1dFRhYmxlID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBwIC0+IFRhYmxlOworICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgcmVzdDsKKyAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHBrOworICAgICAgIGludCBrMCwgSzAsIEsxOworICAgICAgIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIFQ7CisgICAgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgICAgY21zRmxvYXQzMk51bWJlciBUbXAxW01BWF9TVEFHRV9DSEFOTkVMU10sIFRtcDJbTUFYX1NUQUdFX0NIQU5ORUxTXTsKKyAgICAgICBjbXNJbnRlcnBQYXJhbXMgcDE7CisKKyAgICAgICBwayA9IGZjbGFtcChJbnB1dFswXSkgKiBwLT5Eb21haW5bMF07CisgICAgICAgazAgPSBfY21zUXVpY2tGbG9vcihwayk7CisgICAgICAgcmVzdCA9IHBrIC0gKGNtc0Zsb2F0MzJOdW1iZXIpIGswOworCisgICAgICAgSzAgPSBwIC0+IG9wdGFbNV0gKiBrMDsKKyAgICAgICBLMSA9IEswICsgKElucHV0WzBdID49IDEuMCA/IDAgOiBwLT5vcHRhWzVdKTsKKworICAgICAgIHAxID0gKnA7CisgICAgICAgbWVtbW92ZSgmcDEuRG9tYWluWzBdLCAmcCAtPkRvbWFpblsxXSwgNSpzaXplb2YoY21zVUludDMyTnVtYmVyKSk7CisKKyAgICAgICBUID0gTHV0VGFibGUgKyBLMDsKKyAgICAgICBwMS5UYWJsZSA9IFQ7CisKKyAgICAgICBFdmFsNUlucHV0c0Zsb2F0KElucHV0ICsgMSwgIFRtcDEsICZwMSk7CisKKyAgICAgICBUID0gTHV0VGFibGUgKyBLMTsKKyAgICAgICBwMS5UYWJsZSA9IFQ7CisKKyAgICAgICBFdmFsNUlucHV0c0Zsb2F0KElucHV0ICsgMSwgIFRtcDIsICZwMSk7CisKKyAgICAgICBmb3IgKGk9MDsgaSA8IHAgLT4gbk91dHB1dHM7IGkrKykgeworCisgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgeTAgPSBUbXAxW2ldOworICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHkxID0gVG1wMltpXTsKKworICAgICAgICAgICAgICBPdXRwdXRbaV0gPSB5MCArICh5MSAtIHkwKSAqIHJlc3Q7CisgICAgICAgfQorfQorCisKK3N0YXRpYwordm9pZCBFdmFsN0lucHV0cyhyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5wdXRbXSwKKyAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIE91dHB1dFtdLAorICAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjbXNJbnRlcnBQYXJhbXMqIHAxNikKK3sKKyAgICAgICBjb25zdCBjbXNVSW50MTZOdW1iZXIqIEx1dFRhYmxlID0gKGNtc1VJbnQxNk51bWJlciopIHAxNiAtPiBUYWJsZTsKKyAgICAgICBjbXNTMTVGaXhlZDE2TnVtYmVyIGZrOworICAgICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgazAsIHJrOworICAgICAgIGludCBLMCwgSzE7CisgICAgICAgY29uc3QgY21zVUludDE2TnVtYmVyKiBUOworICAgICAgIGNtc1VJbnQzMk51bWJlciBpOworICAgICAgIGNtc1VJbnQxNk51bWJlciBUbXAxW01BWF9TVEFHRV9DSEFOTkVMU10sIFRtcDJbTUFYX1NUQUdFX0NIQU5ORUxTXTsKKyAgICAgICBjbXNJbnRlcnBQYXJhbXMgcDE7CisKKworICAgICAgIGZrID0gX2Ntc1RvRml4ZWREb21haW4oKGNtc1MxNUZpeGVkMTZOdW1iZXIpIElucHV0WzBdICogcDE2IC0+IERvbWFpblswXSk7CisgICAgICAgazAgPSBGSVhFRF9UT19JTlQoZmspOworICAgICAgIHJrID0gRklYRURfUkVTVF9UT19JTlQoZmspOworCisgICAgICAgSzAgPSBwMTYgLT4gb3B0YVs2XSAqIGswOworICAgICAgIEsxID0gcDE2IC0+IG9wdGFbNl0gKiAoazAgKyAoSW5wdXRbMF0gIT0gMHhGRkZGVSA/IDEgOiAwKSk7CisKKyAgICAgICBwMSA9ICpwMTY7CisgICAgICAgbWVtbW92ZSgmcDEuRG9tYWluWzBdLCAmcDE2IC0+RG9tYWluWzFdLCA2KnNpemVvZihjbXNVSW50MzJOdW1iZXIpKTsKKworICAgICAgIFQgPSBMdXRUYWJsZSArIEswOworICAgICAgIHAxLlRhYmxlID0gVDsKKworICAgICAgIEV2YWw2SW5wdXRzKElucHV0ICsgMSwgVG1wMSwgJnAxKTsKKworICAgICAgIFQgPSBMdXRUYWJsZSArIEsxOworICAgICAgIHAxLlRhYmxlID0gVDsKKworICAgICAgIEV2YWw2SW5wdXRzKElucHV0ICsgMSwgVG1wMiwgJnAxKTsKKworICAgICAgIGZvciAoaT0wOyBpIDwgcDE2IC0+IG5PdXRwdXRzOyBpKyspIHsKKyAgICAgICAgICAgICAgT3V0cHV0W2ldID0gTGluZWFySW50ZXJwKHJrLCBUbXAxW2ldLCBUbXAyW2ldKTsKKyAgICAgICB9Cit9CisKKworc3RhdGljCit2b2lkIEV2YWw3SW5wdXRzRmxvYXQoY29uc3QgY21zRmxvYXQzMk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwKQoreworICAgICAgIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIEx1dFRhYmxlID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBwIC0+IFRhYmxlOworICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgcmVzdDsKKyAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHBrOworICAgICAgIGludCBrMCwgSzAsIEsxOworICAgICAgIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIFQ7CisgICAgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgICAgY21zRmxvYXQzMk51bWJlciBUbXAxW01BWF9TVEFHRV9DSEFOTkVMU10sIFRtcDJbTUFYX1NUQUdFX0NIQU5ORUxTXTsKKyAgICAgICBjbXNJbnRlcnBQYXJhbXMgcDE7CisKKyAgICAgICBwayA9IGZjbGFtcChJbnB1dFswXSkgKiBwLT5Eb21haW5bMF07CisgICAgICAgazAgPSBfY21zUXVpY2tGbG9vcihwayk7CisgICAgICAgcmVzdCA9IHBrIC0gKGNtc0Zsb2F0MzJOdW1iZXIpIGswOworCisgICAgICAgSzAgPSBwIC0+IG9wdGFbNl0gKiBrMDsKKyAgICAgICBLMSA9IEswICsgKElucHV0WzBdID49IDEuMCA/IDAgOiBwLT5vcHRhWzZdKTsKKworICAgICAgIHAxID0gKnA7CisgICAgICAgbWVtbW92ZSgmcDEuRG9tYWluWzBdLCAmcCAtPkRvbWFpblsxXSwgNipzaXplb2YoY21zVUludDMyTnVtYmVyKSk7CisKKyAgICAgICBUID0gTHV0VGFibGUgKyBLMDsKKyAgICAgICBwMS5UYWJsZSA9IFQ7CisKKyAgICAgICBFdmFsNklucHV0c0Zsb2F0KElucHV0ICsgMSwgIFRtcDEsICZwMSk7CisKKyAgICAgICBUID0gTHV0VGFibGUgKyBLMTsKKyAgICAgICBwMS5UYWJsZSA9IFQ7CisKKyAgICAgICBFdmFsNklucHV0c0Zsb2F0KElucHV0ICsgMSwgIFRtcDIsICZwMSk7CisKKworICAgICAgIGZvciAoaT0wOyBpIDwgcCAtPiBuT3V0cHV0czsgaSsrKSB7CisKKyAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciB5MCA9IFRtcDFbaV07CisgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgeTEgPSBUbXAyW2ldOworCisgICAgICAgICAgICAgIE91dHB1dFtpXSA9IHkwICsgKHkxIC0geTApICogcmVzdDsKKworICAgICAgIH0KK30KKworc3RhdGljCit2b2lkIEV2YWw4SW5wdXRzKHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNtc0ludGVycFBhcmFtcyogcDE2KQoreworICAgICAgIGNvbnN0IGNtc1VJbnQxNk51bWJlciogTHV0VGFibGUgPSAoY21zVUludDE2TnVtYmVyKikgcDE2IC0+IFRhYmxlOworICAgICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgZms7CisgICAgICAgY21zUzE1Rml4ZWQxNk51bWJlciBrMCwgcms7CisgICAgICAgaW50IEswLCBLMTsKKyAgICAgICBjb25zdCBjbXNVSW50MTZOdW1iZXIqIFQ7CisgICAgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgICAgY21zVUludDE2TnVtYmVyIFRtcDFbTUFYX1NUQUdFX0NIQU5ORUxTXSwgVG1wMltNQVhfU1RBR0VfQ0hBTk5FTFNdOworICAgICAgIGNtc0ludGVycFBhcmFtcyBwMTsKKworICAgICAgIGZrID0gX2Ntc1RvRml4ZWREb21haW4oKGNtc1MxNUZpeGVkMTZOdW1iZXIpIElucHV0WzBdICogcDE2IC0+IERvbWFpblswXSk7CisgICAgICAgazAgPSBGSVhFRF9UT19JTlQoZmspOworICAgICAgIHJrID0gRklYRURfUkVTVF9UT19JTlQoZmspOworCisgICAgICAgSzAgPSBwMTYgLT4gb3B0YVs3XSAqIGswOworICAgICAgIEsxID0gcDE2IC0+IG9wdGFbN10gKiAoazAgKyAoSW5wdXRbMF0gIT0gMHhGRkZGVSA/IDEgOiAwKSk7CisKKyAgICAgICBwMSA9ICpwMTY7CisgICAgICAgbWVtbW92ZSgmcDEuRG9tYWluWzBdLCAmcDE2IC0+RG9tYWluWzFdLCA3KnNpemVvZihjbXNVSW50MzJOdW1iZXIpKTsKKworICAgICAgIFQgPSBMdXRUYWJsZSArIEswOworICAgICAgIHAxLlRhYmxlID0gVDsKKworICAgICAgIEV2YWw3SW5wdXRzKElucHV0ICsgMSwgVG1wMSwgJnAxKTsKKworICAgICAgIFQgPSBMdXRUYWJsZSArIEsxOworICAgICAgIHAxLlRhYmxlID0gVDsKKyAgICAgICBFdmFsN0lucHV0cyhJbnB1dCArIDEsIFRtcDIsICZwMSk7CisKKyAgICAgICBmb3IgKGk9MDsgaSA8IHAxNiAtPiBuT3V0cHV0czsgaSsrKSB7CisgICAgICAgICAgICAgIE91dHB1dFtpXSA9IExpbmVhckludGVycChyaywgVG1wMVtpXSwgVG1wMltpXSk7CisgICAgICAgfQorfQorCisKKworc3RhdGljCit2b2lkIEV2YWw4SW5wdXRzRmxvYXQoY29uc3QgY21zRmxvYXQzMk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwKQoreworICAgICAgIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIEx1dFRhYmxlID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBwIC0+IFRhYmxlOworICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgcmVzdDsKKyAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHBrOworICAgICAgIGludCBrMCwgSzAsIEsxOworICAgICAgIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIFQ7CisgICAgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgICAgY21zRmxvYXQzMk51bWJlciBUbXAxW01BWF9TVEFHRV9DSEFOTkVMU10sIFRtcDJbTUFYX1NUQUdFX0NIQU5ORUxTXTsKKyAgICAgICBjbXNJbnRlcnBQYXJhbXMgcDE7CisKKyAgICAgICBwayA9IGZjbGFtcChJbnB1dFswXSkgKiBwLT5Eb21haW5bMF07CisgICAgICAgazAgPSBfY21zUXVpY2tGbG9vcihwayk7CisgICAgICAgcmVzdCA9IHBrIC0gKGNtc0Zsb2F0MzJOdW1iZXIpIGswOworCisgICAgICAgSzAgPSBwIC0+IG9wdGFbN10gKiBrMDsKKyAgICAgICBLMSA9IEswICsgKElucHV0WzBdID49IDEuMCA/IDAgOiBwLT5vcHRhWzddKTsKKworICAgICAgIHAxID0gKnA7CisgICAgICAgbWVtbW92ZSgmcDEuRG9tYWluWzBdLCAmcCAtPkRvbWFpblsxXSwgNypzaXplb2YoY21zVUludDMyTnVtYmVyKSk7CisKKyAgICAgICBUID0gTHV0VGFibGUgKyBLMDsKKyAgICAgICBwMS5UYWJsZSA9IFQ7CisKKyAgICAgICBFdmFsN0lucHV0c0Zsb2F0KElucHV0ICsgMSwgIFRtcDEsICZwMSk7CisKKyAgICAgICBUID0gTHV0VGFibGUgKyBLMTsKKyAgICAgICBwMS5UYWJsZSA9IFQ7CisKKyAgICAgICBFdmFsN0lucHV0c0Zsb2F0KElucHV0ICsgMSwgIFRtcDIsICZwMSk7CisKKworICAgICAgIGZvciAoaT0wOyBpIDwgcCAtPiBuT3V0cHV0czsgaSsrKSB7CisKKyAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciB5MCA9IFRtcDFbaV07CisgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgeTEgPSBUbXAyW2ldOworCisgICAgICAgICAgICAgIE91dHB1dFtpXSA9IHkwICsgKHkxIC0geTApICogcmVzdDsKKyAgICAgICB9Cit9CisKKy8vIFRoZSBkZWZhdWx0IGZhY3RvcnkKK3N0YXRpYworY21zSW50ZXJwRnVuY3Rpb24gRGVmYXVsdEludGVycG9sYXRvcnNGYWN0b3J5KGNtc1VJbnQzMk51bWJlciBuSW5wdXRDaGFubmVscywgY21zVUludDMyTnVtYmVyIG5PdXRwdXRDaGFubmVscywgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisKKyAgICBjbXNJbnRlcnBGdW5jdGlvbiBJbnRlcnBvbGF0aW9uOworICAgIGNtc0Jvb2wgIElzRmxvYXQgICAgID0gKGR3RmxhZ3MgJiBDTVNfTEVSUF9GTEFHU19GTE9BVCk7CisgICAgY21zQm9vbCAgSXNUcmlsaW5lYXIgPSAoZHdGbGFncyAmIENNU19MRVJQX0ZMQUdTX1RSSUxJTkVBUik7CisKKyAgICBtZW1zZXQoJkludGVycG9sYXRpb24sIDAsIHNpemVvZihJbnRlcnBvbGF0aW9uKSk7CisKKyAgICAvLyBTYWZldHkgY2hlY2sKKyAgICBpZiAobklucHV0Q2hhbm5lbHMgPj0gNCAmJiBuT3V0cHV0Q2hhbm5lbHMgPj0gTUFYX1NUQUdFX0NIQU5ORUxTKQorICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbjsKKworICAgIHN3aXRjaCAobklucHV0Q2hhbm5lbHMpIHsKKworICAgICAgICAgICBjYXNlIDE6IC8vIEdyYXkgTFVUIC8gbGluZWFyCisKKyAgICAgICAgICAgICAgIGlmIChuT3V0cHV0Q2hhbm5lbHMgPT0gMSkgeworCisgICAgICAgICAgICAgICAgICAgaWYgKElzRmxvYXQpCisgICAgICAgICAgICAgICAgICAgICAgIEludGVycG9sYXRpb24uTGVycEZsb2F0ID0gTGluTGVycDFEZmxvYXQ7CisgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uLkxlcnAxNiA9IExpbkxlcnAxRDsKKworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgICAgICAgICBpZiAoSXNGbG9hdCkKKyAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJwb2xhdGlvbi5MZXJwRmxvYXQgPSBFdmFsMUlucHV0RmxvYXQ7CisgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uLkxlcnAxNiA9IEV2YWwxSW5wdXQ7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICBjYXNlIDI6IC8vIER1b3RvbmUKKyAgICAgICAgICAgICAgIGlmIChJc0Zsb2F0KQorICAgICAgICAgICAgICAgICAgICAgIEludGVycG9sYXRpb24uTGVycEZsb2F0ID0gIEJpbGluZWFySW50ZXJwRmxvYXQ7CisgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgSW50ZXJwb2xhdGlvbi5MZXJwMTYgICAgPSAgQmlsaW5lYXJJbnRlcnAxNjsKKyAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgIGNhc2UgMzogIC8vIFJHQiBldCBhbAorCisgICAgICAgICAgICAgICBpZiAoSXNUcmlsaW5lYXIpIHsKKworICAgICAgICAgICAgICAgICAgIGlmIChJc0Zsb2F0KQorICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uLkxlcnBGbG9hdCA9IFRyaWxpbmVhckludGVycEZsb2F0OworICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJwb2xhdGlvbi5MZXJwMTYgPSBUcmlsaW5lYXJJbnRlcnAxNjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICAgICAgICAgaWYgKElzRmxvYXQpCisgICAgICAgICAgICAgICAgICAgICAgIEludGVycG9sYXRpb24uTGVycEZsb2F0ID0gVGV0cmFoZWRyYWxJbnRlcnBGbG9hdDsKKyAgICAgICAgICAgICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uLkxlcnAxNiA9IFRldHJhaGVkcmFsSW50ZXJwMTY7CisgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgY2FzZSA0OiAgLy8gQ01ZSyBsdXQKKworICAgICAgICAgICAgICAgaWYgKElzRmxvYXQpCisgICAgICAgICAgICAgICAgICAgSW50ZXJwb2xhdGlvbi5MZXJwRmxvYXQgPSAgRXZhbDRJbnB1dHNGbG9hdDsKKyAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uLkxlcnAxNiAgICA9ICBFdmFsNElucHV0czsKKyAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgIGNhc2UgNTogLy8gNSBJbmtzCisgICAgICAgICAgICAgICBpZiAoSXNGbG9hdCkKKyAgICAgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uLkxlcnBGbG9hdCA9ICBFdmFsNUlucHV0c0Zsb2F0OworICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgIEludGVycG9sYXRpb24uTGVycDE2ICAgID0gIEV2YWw1SW5wdXRzOworICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgY2FzZSA2OiAvLyA2IElua3MKKyAgICAgICAgICAgICAgIGlmIChJc0Zsb2F0KQorICAgICAgICAgICAgICAgICAgIEludGVycG9sYXRpb24uTGVycEZsb2F0ID0gIEV2YWw2SW5wdXRzRmxvYXQ7CisgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgSW50ZXJwb2xhdGlvbi5MZXJwMTYgICAgPSAgRXZhbDZJbnB1dHM7CisgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICBjYXNlIDc6IC8vIDcgaW5rcworICAgICAgICAgICAgICAgaWYgKElzRmxvYXQpCisgICAgICAgICAgICAgICAgICAgSW50ZXJwb2xhdGlvbi5MZXJwRmxvYXQgPSAgRXZhbDdJbnB1dHNGbG9hdDsKKyAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uLkxlcnAxNiAgICA9ICBFdmFsN0lucHV0czsKKyAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgIGNhc2UgODogLy8gOCBpbmtzCisgICAgICAgICAgICAgICBpZiAoSXNGbG9hdCkKKyAgICAgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uLkxlcnBGbG9hdCA9ICBFdmFsOElucHV0c0Zsb2F0OworICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgIEludGVycG9sYXRpb24uTGVycDE2ICAgID0gIEV2YWw4SW5wdXRzOworICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uLkxlcnAxNiA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIEludGVycG9sYXRpb247Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zaW8wLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zaW8wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU0OWQxNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNpbzAuYwpAQCAtMCwwICsxLDE4ODMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gIExpdHRsZSBDb2xvciBNYW5hZ2VtZW50IFN5c3RlbQorLy8gIENvcHlyaWdodCAoYykgMTk5OC0yMDEyIE1hcnRpIE1hcmlhIFNhZ3VlcgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworLy8gYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisvLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUKKy8vIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPCisvLyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorLy8gTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorLy8gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisvLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIgorCisvLyBHZW5lcmljIEkvTywgdGFnIGRpY3Rpb25hcnkgbWFuYWdlbWVudCwgcHJvZmlsZSBzdHJ1Y3QKKworLy8gSU9oYW5kbGVycyBhcmUgYWJzdHJhY3Rpb25zIHVzZWQgYnkgbGl0dGxlQ01TIHRvIHJlYWQgZnJvbSB3aGF0ZXZlciBmaWxlLCBzdHJlYW0sCisvLyBtZW1vcnkgYmxvY2sgb3IgYW55IHN0b3JhZ2UuIEVhY2ggSU9oYW5kbGVyIHByb3ZpZGVzIGltcGxlbWVudGF0aW9ucyBmb3IgcmVhZCwKKy8vIHdyaXRlLCBzZWVrIGFuZCB0ZWxsIGZ1bmN0aW9ucy4gTGl0dGxlQ01TIGNvZGUgZGVhbHMgd2l0aCBJTyBhY3Jvc3MgdGhvc2Ugb2JqZWN0cy4KKy8vIEluIHRoaXMgd2F5LCBpcyBlYXNpZXIgdG8gYWRkIHN1cHBvcnQgZm9yIG5ldyBzdG9yYWdlIG1lZGlhLgorCisvLyBOVUxMIHN0cmVhbSwgZm9yIHRha2luZyBjYXJlIG9mIHVzZWQgc3BhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBOVUxMIElPaGFuZGxlciBiYXNpY2FsbHkgZG9lcyBub3RoaW5nIGJ1dCBrZWVwIHRyYWNrIG9uIGhvdyBtYW55IGJ5dGVzIGhhdmUgYmVlbgorLy8gd3JpdHRlbi4gVGhpcyBpcyBoYW5keSB3aGVuIGNyZWF0aW5nIHByb2ZpbGVzLCB3aGVyZSB0aGUgZmlsZSBzaXplIGlzIG5lZWRlZCBpbiB0aGUKKy8vIGhlYWRlci4gVGhlbiwgd2hvbGUgcHJvZmlsZSBpcyBzZXJpYWxpemVkIGFjcm9zcyBOVUxMIElPaGFuZGxlciBhbmQgYSBzZWNvbmQgcGFzcworLy8gd3JpdGVzIHRoZSBieXRlcyB0byB0aGUgcGVydGluZW50IElPaGFuZGxlci4KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNtc1VJbnQzMk51bWJlciBQb2ludGVyOyAgICAgICAgIC8vIFBvaW50cyB0byBjdXJyZW50IGxvY2F0aW9uCit9IEZJTEVOVUxMOworCitzdGF0aWMKK2Ntc1VJbnQzMk51bWJlciBOVUxMUmVhZChjbXNJT0hBTkRMRVIqIGlvaGFuZGxlciwgdm9pZCAqQnVmZmVyLCBjbXNVSW50MzJOdW1iZXIgc2l6ZSwgY21zVUludDMyTnVtYmVyIGNvdW50KQoreworICAgIEZJTEVOVUxMKiBSZXNEYXRhID0gKEZJTEVOVUxMKikgaW9oYW5kbGVyIC0+c3RyZWFtOworCisgICAgY21zVUludDMyTnVtYmVyIGxlbiA9IHNpemUgKiBjb3VudDsKKyAgICBSZXNEYXRhIC0+IFBvaW50ZXIgKz0gbGVuOworICAgIHJldHVybiBjb3VudDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoQnVmZmVyKTsKK30KKworc3RhdGljCitjbXNCb29sICBOVUxMU2VlayhjbXNJT0hBTkRMRVIqIGlvaGFuZGxlciwgY21zVUludDMyTnVtYmVyIG9mZnNldCkKK3sKKyAgICBGSUxFTlVMTCogUmVzRGF0YSA9IChGSUxFTlVMTCopIGlvaGFuZGxlciAtPnN0cmVhbTsKKworICAgIFJlc0RhdGEgLT5Qb2ludGVyID0gb2Zmc2V0OworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMKK2Ntc1VJbnQzMk51bWJlciBOVUxMVGVsbChjbXNJT0hBTkRMRVIqIGlvaGFuZGxlcikKK3sKKyAgICBGSUxFTlVMTCogUmVzRGF0YSA9IChGSUxFTlVMTCopIGlvaGFuZGxlciAtPnN0cmVhbTsKKyAgICByZXR1cm4gUmVzRGF0YSAtPiBQb2ludGVyOworfQorCitzdGF0aWMKK2Ntc0Jvb2wgIE5VTExXcml0ZShjbXNJT0hBTkRMRVIqIGlvaGFuZGxlciwgY21zVUludDMyTnVtYmVyIHNpemUsIGNvbnN0IHZvaWQgKlB0cikKK3sKKyAgICBGSUxFTlVMTCogUmVzRGF0YSA9IChGSUxFTlVMTCopIGlvaGFuZGxlciAtPnN0cmVhbTsKKworICAgIFJlc0RhdGEgLT5Qb2ludGVyICs9IHNpemU7CisgICAgaWYgKFJlc0RhdGEgLT5Qb2ludGVyID4gaW9oYW5kbGVyLT5Vc2VkU3BhY2UpCisgICAgICAgIGlvaGFuZGxlci0+VXNlZFNwYWNlID0gUmVzRGF0YSAtPlBvaW50ZXI7CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoUHRyKTsKK30KKworc3RhdGljCitjbXNCb29sICBOVUxMQ2xvc2UoY21zSU9IQU5ETEVSKiBpb2hhbmRsZXIpCit7CisgICAgRklMRU5VTEwqIFJlc0RhdGEgPSAoRklMRU5VTEwqKSBpb2hhbmRsZXIgLT5zdHJlYW07CisKKyAgICBfY21zRnJlZShpb2hhbmRsZXIgLT5Db250ZXh0SUQsIFJlc0RhdGEpOworICAgIF9jbXNGcmVlKGlvaGFuZGxlciAtPkNvbnRleHRJRCwgaW9oYW5kbGVyKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gVGhlIE5VTEwgSU9oYW5kbGVyIGNyZWF0b3IKK2Ntc0lPSEFORExFUiogIENNU0VYUE9SVCBjbXNPcGVuSU9oYW5kbGVyRnJvbU5VTEwoY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgc3RydWN0IF9jbXNfaW9faGFuZGxlciogaW9oYW5kbGVyID0gTlVMTDsKKyAgICBGSUxFTlVMTCogZm0gPSBOVUxMOworCisgICAgaW9oYW5kbGVyID0gKHN0cnVjdCBfY21zX2lvX2hhbmRsZXIqKSBfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIHNpemVvZihzdHJ1Y3QgX2Ntc19pb19oYW5kbGVyKSk7CisgICAgaWYgKGlvaGFuZGxlciA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGZtID0gKEZJTEVOVUxMKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoRklMRU5VTEwpKTsKKyAgICBpZiAoZm0gPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIGZtIC0+UG9pbnRlciA9IDA7CisKKyAgICBpb2hhbmRsZXIgLT5Db250ZXh0SUQgPSBDb250ZXh0SUQ7CisgICAgaW9oYW5kbGVyIC0+c3RyZWFtICA9ICh2b2lkKikgZm07CisgICAgaW9oYW5kbGVyIC0+VXNlZFNwYWNlID0gMDsKKyAgICBpb2hhbmRsZXIgLT5SZXBvcnRlZFNpemUgPSAwOworICAgIGlvaGFuZGxlciAtPlBoeXNpY2FsRmlsZVswXSA9IDA7CisKKyAgICBpb2hhbmRsZXIgLT5SZWFkICAgID0gTlVMTFJlYWQ7CisgICAgaW9oYW5kbGVyIC0+U2VlayAgICA9IE5VTExTZWVrOworICAgIGlvaGFuZGxlciAtPkNsb3NlICAgPSBOVUxMQ2xvc2U7CisgICAgaW9oYW5kbGVyIC0+VGVsbCAgICA9IE5VTExUZWxsOworICAgIGlvaGFuZGxlciAtPldyaXRlICAgPSBOVUxMV3JpdGU7CisKKyAgICByZXR1cm4gaW9oYW5kbGVyOworCitFcnJvcjogICAgCisgICAgaWYgKGlvaGFuZGxlcikgX2Ntc0ZyZWUoQ29udGV4dElELCBpb2hhbmRsZXIpOworICAgIHJldHVybiBOVUxMOworCit9CisKKworLy8gTWVtb3J5LWJhc2VkIHN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBUaG9zZSBmdW5jdGlvbnMgaW1wbGVtZW50cyBhbiBpb2hhbmRsZXIgd2hpY2ggdGFrZXMgYSBibG9jayBvZiBtZW1vcnkgYXMgc3RvcmFnZSBtZWRpdW0uCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjbXNVSW50OE51bWJlciogQmxvY2s7ICAgIC8vIFBvaW50cyB0byBhbGxvY2F0ZWQgbWVtb3J5CisgICAgY21zVUludDMyTnVtYmVyIFNpemU7ICAgICAvLyBTaXplIG9mIGFsbG9jYXRlZCBtZW1vcnkKKyAgICBjbXNVSW50MzJOdW1iZXIgUG9pbnRlcjsgIC8vIFBvaW50cyB0byBjdXJyZW50IGxvY2F0aW9uCisgICAgaW50IEZyZWVCbG9ja09uQ2xvc2U7ICAgICAvLyBBcyB0aXRsZQorCit9IEZJTEVNRU07CisKK3N0YXRpYworY21zVUludDMyTnVtYmVyIE1lbW9yeVJlYWQoc3RydWN0IF9jbXNfaW9faGFuZGxlciogaW9oYW5kbGVyLCB2b2lkICpCdWZmZXIsIGNtc1VJbnQzMk51bWJlciBzaXplLCBjbXNVSW50MzJOdW1iZXIgY291bnQpCit7CisgICAgRklMRU1FTSogUmVzRGF0YSA9IChGSUxFTUVNKikgaW9oYW5kbGVyIC0+c3RyZWFtOworICAgIGNtc1VJbnQ4TnVtYmVyKiBQdHI7CisgICAgY21zVUludDMyTnVtYmVyIGxlbiA9IHNpemUgKiBjb3VudDsKKworICAgIGlmIChSZXNEYXRhIC0+IFBvaW50ZXIgKyBsZW4gPiBSZXNEYXRhIC0+IFNpemUpeworCisgICAgICAgIGxlbiA9IChSZXNEYXRhIC0+IFNpemUgLSBSZXNEYXRhIC0+IFBvaW50ZXIpOworICAgICAgICBjbXNTaWduYWxFcnJvcihpb2hhbmRsZXIgLT5Db250ZXh0SUQsIGNtc0VSUk9SX1JFQUQsICJSZWFkIGZyb20gbWVtb3J5IGVycm9yLiBHb3QgJWQgYnl0ZXMsIGJsb2NrIHNob3VsZCBiZSBvZiAlZCBieXRlcyIsIGxlbiwgY291bnQgKiBzaXplKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUHRyICA9IFJlc0RhdGEgLT4gQmxvY2s7CisgICAgUHRyICs9IFJlc0RhdGEgLT4gUG9pbnRlcjsKKyAgICBtZW1tb3ZlKEJ1ZmZlciwgUHRyLCBsZW4pOworICAgIFJlc0RhdGEgLT4gUG9pbnRlciArPSBsZW47CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKKy8vIFNFRUtfQ1VSIGlzIGFzc3VtZWQKK3N0YXRpYworY21zQm9vbCAgTWVtb3J5U2VlayhzdHJ1Y3QgX2Ntc19pb19oYW5kbGVyKiBpb2hhbmRsZXIsIGNtc1VJbnQzMk51bWJlciBvZmZzZXQpCit7CisgICAgRklMRU1FTSogUmVzRGF0YSA9IChGSUxFTUVNKikgaW9oYW5kbGVyIC0+c3RyZWFtOworCisgICAgaWYgKG9mZnNldCA+IFJlc0RhdGEgLT5TaXplKSB7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKGlvaGFuZGxlciAtPkNvbnRleHRJRCwgY21zRVJST1JfU0VFSywgICJUb28gZmV3IGRhdGE7IHByb2JhYmx5IGNvcnJ1cHRlZCBwcm9maWxlIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBSZXNEYXRhIC0+UG9pbnRlciA9IG9mZnNldDsKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gVGVsbCBmb3IgbWVtb3J5CitzdGF0aWMKK2Ntc1VJbnQzMk51bWJlciBNZW1vcnlUZWxsKHN0cnVjdCBfY21zX2lvX2hhbmRsZXIqIGlvaGFuZGxlcikKK3sKKyAgICBGSUxFTUVNKiBSZXNEYXRhID0gKEZJTEVNRU0qKSBpb2hhbmRsZXIgLT5zdHJlYW07CisKKyAgICBpZiAoUmVzRGF0YSA9PSBOVUxMKSByZXR1cm4gMDsKKyAgICByZXR1cm4gUmVzRGF0YSAtPiBQb2ludGVyOworfQorCisKKy8vIFdyaXRlcyBkYXRhIHRvIG1lbW9yeSwgYWxzbyBrZWVwcyB1c2VkIHNwYWNlIGZvciBmdXJ0aGVyIHJlZmVyZW5jZS4KK3N0YXRpYworY21zQm9vbCBNZW1vcnlXcml0ZShzdHJ1Y3QgX2Ntc19pb19oYW5kbGVyKiBpb2hhbmRsZXIsIGNtc1VJbnQzMk51bWJlciBzaXplLCBjb25zdCB2b2lkICpQdHIpCit7CisgICAgRklMRU1FTSogUmVzRGF0YSA9IChGSUxFTUVNKikgaW9oYW5kbGVyIC0+c3RyZWFtOworCisgICAgaWYgKFJlc0RhdGEgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOyAvLyBIb3VzZWtlZXBpbmcKKworICAgIC8vIENoZWNrIGZvciBhdmFpbGFibGUgc3BhY2UuIENsaXAuCisgICAgaWYgKFJlc0RhdGEtPlBvaW50ZXIgKyBzaXplID4gUmVzRGF0YS0+U2l6ZSkgeworICAgICAgICBzaXplID0gUmVzRGF0YSAtPlNpemUgLSBSZXNEYXRhLT5Qb2ludGVyOworICAgIH0KKyAgICAgIAorICAgIGlmIChzaXplID09IDApIHJldHVybiBUUlVFOyAgICAgLy8gV3JpdGUgemVybyBieXRlcyBpcyBvaywgYnV0IGRvZXMgbm90aGluZworCisgICAgbWVtbW92ZShSZXNEYXRhIC0+QmxvY2sgKyBSZXNEYXRhIC0+UG9pbnRlciwgUHRyLCBzaXplKTsKKyAgICBSZXNEYXRhIC0+UG9pbnRlciArPSBzaXplOworCisgICAgaWYgKFJlc0RhdGEgLT5Qb2ludGVyID4gaW9oYW5kbGVyLT5Vc2VkU3BhY2UpCisgICAgICAgIGlvaGFuZGxlci0+VXNlZFNwYWNlID0gUmVzRGF0YSAtPlBvaW50ZXI7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworCitzdGF0aWMKK2Ntc0Jvb2wgIE1lbW9yeUNsb3NlKHN0cnVjdCBfY21zX2lvX2hhbmRsZXIqIGlvaGFuZGxlcikKK3sKKyAgICBGSUxFTUVNKiBSZXNEYXRhID0gKEZJTEVNRU0qKSBpb2hhbmRsZXIgLT5zdHJlYW07CisKKyAgICBpZiAoUmVzRGF0YSAtPkZyZWVCbG9ja09uQ2xvc2UpIHsKKworICAgICAgICBpZiAoUmVzRGF0YSAtPkJsb2NrKSBfY21zRnJlZShpb2hhbmRsZXIgLT5Db250ZXh0SUQsIFJlc0RhdGEgLT5CbG9jayk7CisgICAgfQorCisgICAgX2Ntc0ZyZWUoaW9oYW5kbGVyIC0+Q29udGV4dElELCBSZXNEYXRhKTsKKyAgICBfY21zRnJlZShpb2hhbmRsZXIgLT5Db250ZXh0SUQsIGlvaGFuZGxlcik7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gQ3JlYXRlIGEgaW9oYW5kbGVyIGZvciBtZW1vcnkgYmxvY2suIEFjY2Vzc01vZGU9PSdyJyBhc3N1bWVzIHRoZSBpb2hhbmRsZXIgaXMgZ29pbmcgdG8gcmVhZCwgYW5kIG1ha2VzCisvLyBhIGNvcHkgb2YgdGhlIG1lbW9yeSBibG9jayBmb3IgbGV0dGluZyB1c2VyIHRvIGZyZWUgdGhlIG1lbW9yeSBhZnRlciBpbnZva2luZyBvcGVuIHByb2ZpbGUuIEluIHdyaXRlCisvLyBtb2RlICgidyIpLCBCdWZmZXJlIHBvaW50cyB0byB0aGUgYmVnaW4gb2YgbWVtb3J5IGJsb2NrIHRvIGJlIHdyaXR0ZW4uCitjbXNJT0hBTkRMRVIqIENNU0VYUE9SVCBjbXNPcGVuSU9oYW5kbGVyRnJvbU1lbShjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCAqQnVmZmVyLCBjbXNVSW50MzJOdW1iZXIgc2l6ZSwgY29uc3QgY2hhciogQWNjZXNzTW9kZSkKK3sKKyAgICBjbXNJT0hBTkRMRVIqIGlvaGFuZGxlciA9IE5VTEw7CisgICAgRklMRU1FTSogZm0gPSBOVUxMOworCisgICAgX2Ntc0Fzc2VydChBY2Nlc3NNb2RlICE9IE5VTEwpOworCisgICAgaW9oYW5kbGVyID0gKGNtc0lPSEFORExFUiopIF9jbXNNYWxsb2NaZXJvKENvbnRleHRJRCwgc2l6ZW9mKGNtc0lPSEFORExFUikpOworICAgIGlmIChpb2hhbmRsZXIgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKCpBY2Nlc3NNb2RlKSB7CisKKyAgICBjYXNlICdyJzoKKyAgICAgICAgZm0gPSAoRklMRU1FTSopIF9jbXNNYWxsb2NaZXJvKENvbnRleHRJRCwgc2l6ZW9mKEZJTEVNRU0pKTsKKyAgICAgICAgaWYgKGZtID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgaWYgKEJ1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX1JFQUQsICJDb3VsZG4ndCByZWFkIHByb2ZpbGUgZnJvbSBOVUxMIHBvaW50ZXIiKTsKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBmbSAtPkJsb2NrID0gKGNtc1VJbnQ4TnVtYmVyKikgX2Ntc01hbGxvYyhDb250ZXh0SUQsIHNpemUpOworICAgICAgICBpZiAoZm0gLT5CbG9jayA9PSBOVUxMKSB7CisKKyAgICAgICAgICAgIF9jbXNGcmVlKENvbnRleHRJRCwgZm0pOworICAgICAgICAgICAgX2Ntc0ZyZWUoQ29udGV4dElELCBpb2hhbmRsZXIpOworICAgICAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9SRUFELCAiQ291bGRuJ3QgYWxsb2NhdGUgJWxkIGJ5dGVzIGZvciBwcm9maWxlIiwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisKKyAgICAgICAgbWVtbW92ZShmbS0+QmxvY2ssIEJ1ZmZlciwgc2l6ZSk7CisgICAgICAgIGZtIC0+RnJlZUJsb2NrT25DbG9zZSA9IFRSVUU7CisgICAgICAgIGZtIC0+U2l6ZSAgICA9IHNpemU7CisgICAgICAgIGZtIC0+UG9pbnRlciA9IDA7CisgICAgICAgIGlvaGFuZGxlciAtPiBSZXBvcnRlZFNpemUgPSBzaXplOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgJ3cnOgorICAgICAgICBmbSA9IChGSUxFTUVNKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoRklMRU1FTSkpOworICAgICAgICBpZiAoZm0gPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgICAgICBmbSAtPkJsb2NrID0gKGNtc1VJbnQ4TnVtYmVyKikgQnVmZmVyOworICAgICAgICBmbSAtPkZyZWVCbG9ja09uQ2xvc2UgPSBGQUxTRTsKKyAgICAgICAgZm0gLT5TaXplICAgID0gc2l6ZTsKKyAgICAgICAgZm0gLT5Qb2ludGVyID0gMDsKKyAgICAgICAgaW9oYW5kbGVyIC0+IFJlcG9ydGVkU2l6ZSA9IDA7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVua25vd24gYWNjZXNzIG1vZGUgJyVjJyIsICpBY2Nlc3NNb2RlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaW9oYW5kbGVyIC0+Q29udGV4dElEID0gQ29udGV4dElEOworICAgIGlvaGFuZGxlciAtPnN0cmVhbSAgPSAodm9pZCopIGZtOworICAgIGlvaGFuZGxlciAtPlVzZWRTcGFjZSA9IDA7CisgICAgaW9oYW5kbGVyIC0+UGh5c2ljYWxGaWxlWzBdID0gMDsKKworICAgIGlvaGFuZGxlciAtPlJlYWQgICAgPSBNZW1vcnlSZWFkOworICAgIGlvaGFuZGxlciAtPlNlZWsgICAgPSBNZW1vcnlTZWVrOworICAgIGlvaGFuZGxlciAtPkNsb3NlICAgPSBNZW1vcnlDbG9zZTsKKyAgICBpb2hhbmRsZXIgLT5UZWxsICAgID0gTWVtb3J5VGVsbDsKKyAgICBpb2hhbmRsZXIgLT5Xcml0ZSAgID0gTWVtb3J5V3JpdGU7CisKKyAgICByZXR1cm4gaW9oYW5kbGVyOworCitFcnJvcjoKKyAgICBpZiAoZm0pIF9jbXNGcmVlKENvbnRleHRJRCwgZm0pOworICAgIGlmIChpb2hhbmRsZXIpIF9jbXNGcmVlKENvbnRleHRJRCwgaW9oYW5kbGVyKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLy8gRmlsZS1iYXNlZCBzdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBSZWFkIGNvdW50IGVsZW1lbnRzIG9mIHNpemUgYnl0ZXMgZWFjaC4gUmV0dXJuIG51bWJlciBvZiBlbGVtZW50cyByZWFkCitzdGF0aWMKK2Ntc1VJbnQzMk51bWJlciBGaWxlUmVhZChjbXNJT0hBTkRMRVIqIGlvaGFuZGxlciwgdm9pZCAqQnVmZmVyLCBjbXNVSW50MzJOdW1iZXIgc2l6ZSwgY21zVUludDMyTnVtYmVyIGNvdW50KQoreworICAgIGNtc1VJbnQzMk51bWJlciBuUmVhZGVkID0gKGNtc1VJbnQzMk51bWJlcikgZnJlYWQoQnVmZmVyLCBzaXplLCBjb3VudCwgKEZJTEUqKSBpb2hhbmRsZXItPnN0cmVhbSk7CisKKyAgICBpZiAoblJlYWRlZCAhPSBjb3VudCkgeworICAgICAgICAgICAgY21zU2lnbmFsRXJyb3IoaW9oYW5kbGVyIC0+Q29udGV4dElELCBjbXNFUlJPUl9GSUxFLCAiUmVhZCBlcnJvci4gR290ICVkIGJ5dGVzLCBibG9jayBzaG91bGQgYmUgb2YgJWQgYnl0ZXMiLCBuUmVhZGVkICogc2l6ZSwgY291bnQgKiBzaXplKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBuUmVhZGVkOworfQorCisvLyBQb3N0aW9uIGZpbGUgcG9pbnRlciBpbiB0aGUgZmlsZQorc3RhdGljCitjbXNCb29sICBGaWxlU2VlayhjbXNJT0hBTkRMRVIqIGlvaGFuZGxlciwgY21zVUludDMyTnVtYmVyIG9mZnNldCkKK3sKKyAgICBpZiAoZnNlZWsoKEZJTEUqKSBpb2hhbmRsZXIgLT5zdHJlYW0sIChsb25nKSBvZmZzZXQsIFNFRUtfU0VUKSAhPSAwKSB7CisKKyAgICAgICBjbXNTaWduYWxFcnJvcihpb2hhbmRsZXIgLT5Db250ZXh0SUQsIGNtc0VSUk9SX0ZJTEUsICJTZWVrIGVycm9yOyBwcm9iYWJseSBjb3JydXB0ZWQgZmlsZSIpOworICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gUmV0dXJucyBmaWxlIHBvaW50ZXIgcG9zaXRpb24KK3N0YXRpYworY21zVUludDMyTnVtYmVyIEZpbGVUZWxsKGNtc0lPSEFORExFUiogaW9oYW5kbGVyKQoreworICAgIHJldHVybiAoY21zVUludDMyTnVtYmVyKSBmdGVsbCgoRklMRSopaW9oYW5kbGVyIC0+c3RyZWFtKTsKK30KKworLy8gV3JpdGVzIGRhdGEgdG8gc3RyZWFtLCBhbHNvIGtlZXBzIHVzZWQgc3BhY2UgZm9yIGZ1cnRoZXIgcmVmZXJlbmNlLiBSZXR1cm5zIFRSVUUgb24gc3VjY2VzcywgRkFMU0Ugb24gZXJyb3IKK3N0YXRpYworY21zQm9vbCAgRmlsZVdyaXRlKGNtc0lPSEFORExFUiogaW9oYW5kbGVyLCBjbXNVSW50MzJOdW1iZXIgc2l6ZSwgY29uc3Qgdm9pZCogQnVmZmVyKQoreworICAgICAgIGlmIChzaXplID09IDApIHJldHVybiBUUlVFOyAgLy8gV2UgYWxsb3cgdG8gd3JpdGUgMCBieXRlcywgYnV0IG5vdGhpbmcgaXMgd3JpdHRlbgorCisgICAgICAgaW9oYW5kbGVyLT5Vc2VkU3BhY2UgKz0gc2l6ZTsKKyAgICAgICByZXR1cm4gKGZ3cml0ZShCdWZmZXIsIHNpemUsIDEsIChGSUxFKikgaW9oYW5kbGVyLT5zdHJlYW0pID09IDEpOworfQorCisvLyBDbG9zZXMgdGhlIGZpbGUKK3N0YXRpYworY21zQm9vbCAgRmlsZUNsb3NlKGNtc0lPSEFORExFUiogaW9oYW5kbGVyKQoreworICAgIGlmIChmY2xvc2UoKEZJTEUqKSBpb2hhbmRsZXIgLT5zdHJlYW0pICE9IDApIHJldHVybiBGQUxTRTsKKyAgICBfY21zRnJlZShpb2hhbmRsZXIgLT5Db250ZXh0SUQsIGlvaGFuZGxlcik7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIENyZWF0ZSBhIGlvaGFuZGxlciBmb3IgZGlzayBiYXNlZCBmaWxlcy4KK2Ntc0lPSEFORExFUiogQ01TRVhQT1JUIGNtc09wZW5JT2hhbmRsZXJGcm9tRmlsZShjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3QgY2hhciogRmlsZU5hbWUsIGNvbnN0IGNoYXIqIEFjY2Vzc01vZGUpCit7CisgICAgY21zSU9IQU5ETEVSKiBpb2hhbmRsZXIgPSBOVUxMOworICAgIEZJTEUqIGZtID0gTlVMTDsKKworICAgIF9jbXNBc3NlcnQoRmlsZU5hbWUgIT0gTlVMTCk7CisgICAgX2Ntc0Fzc2VydChBY2Nlc3NNb2RlICE9IE5VTEwpOworCisgICAgaW9oYW5kbGVyID0gKGNtc0lPSEFORExFUiopIF9jbXNNYWxsb2NaZXJvKENvbnRleHRJRCwgc2l6ZW9mKGNtc0lPSEFORExFUikpOworICAgIGlmIChpb2hhbmRsZXIgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKCpBY2Nlc3NNb2RlKSB7CisKKyAgICBjYXNlICdyJzoKKyAgICAgICAgZm0gPSBmb3BlbihGaWxlTmFtZSwgInJiIik7CisgICAgICAgIGlmIChmbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIGlvaGFuZGxlcik7CisgICAgICAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9GSUxFLCAiRmlsZSAnJXMnIG5vdCBmb3VuZCIsIEZpbGVOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlvaGFuZGxlciAtPiBSZXBvcnRlZFNpemUgPSAoY21zVUludDMyTnVtYmVyKSBjbXNmaWxlbGVuZ3RoKGZtKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICd3JzoKKyAgICAgICAgZm0gPSBmb3BlbihGaWxlTmFtZSwgIndiIik7CisgICAgICAgIGlmIChmbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIGlvaGFuZGxlcik7CisgICAgICAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9GSUxFLCAiQ291bGRuJ3QgY3JlYXRlICclcyciLCBGaWxlTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpb2hhbmRsZXIgLT4gUmVwb3J0ZWRTaXplID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIGlvaGFuZGxlcik7CisgICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX0ZJTEUsICJVbmtub3duIGFjY2VzcyBtb2RlICclYyciLCAqQWNjZXNzTW9kZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlvaGFuZGxlciAtPkNvbnRleHRJRCA9IENvbnRleHRJRDsKKyAgICBpb2hhbmRsZXIgLT5zdHJlYW0gPSAodm9pZCopIGZtOworICAgIGlvaGFuZGxlciAtPlVzZWRTcGFjZSA9IDA7CisKKyAgICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBvcmlnaW5hbCBmaWxlICAgIAorICAgIHN0cm5jcHkoaW9oYW5kbGVyIC0+IFBoeXNpY2FsRmlsZSwgRmlsZU5hbWUsIHNpemVvZihpb2hhbmRsZXIgLT4gUGh5c2ljYWxGaWxlKS0xKTsKKyAgICBpb2hhbmRsZXIgLT4gUGh5c2ljYWxGaWxlW3NpemVvZihpb2hhbmRsZXIgLT4gUGh5c2ljYWxGaWxlKS0xXSA9IDA7CisKKyAgICBpb2hhbmRsZXIgLT5SZWFkICAgID0gRmlsZVJlYWQ7CisgICAgaW9oYW5kbGVyIC0+U2VlayAgICA9IEZpbGVTZWVrOworICAgIGlvaGFuZGxlciAtPkNsb3NlICAgPSBGaWxlQ2xvc2U7CisgICAgaW9oYW5kbGVyIC0+VGVsbCAgICA9IEZpbGVUZWxsOworICAgIGlvaGFuZGxlciAtPldyaXRlICAgPSBGaWxlV3JpdGU7CisKKyAgICByZXR1cm4gaW9oYW5kbGVyOworfQorCisvLyBDcmVhdGUgYSBpb2hhbmRsZXIgZm9yIHN0cmVhbSBiYXNlZCBmaWxlcworY21zSU9IQU5ETEVSKiBDTVNFWFBPUlQgY21zT3BlbklPaGFuZGxlckZyb21TdHJlYW0oY21zQ29udGV4dCBDb250ZXh0SUQsIEZJTEUqIFN0cmVhbSkKK3sKKyAgICBjbXNJT0hBTkRMRVIqIGlvaGFuZGxlciA9IE5VTEw7CisKKyAgICBpb2hhbmRsZXIgPSAoY21zSU9IQU5ETEVSKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoY21zSU9IQU5ETEVSKSk7CisgICAgaWYgKGlvaGFuZGxlciA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGlvaGFuZGxlciAtPiBDb250ZXh0SUQgPSBDb250ZXh0SUQ7CisgICAgaW9oYW5kbGVyIC0+IHN0cmVhbSA9ICh2b2lkKikgU3RyZWFtOworICAgIGlvaGFuZGxlciAtPiBVc2VkU3BhY2UgPSAwOworICAgIGlvaGFuZGxlciAtPiBSZXBvcnRlZFNpemUgPSAoY21zVUludDMyTnVtYmVyKSBjbXNmaWxlbGVuZ3RoKFN0cmVhbSk7CisgICAgaW9oYW5kbGVyIC0+IFBoeXNpY2FsRmlsZVswXSA9IDA7CisKKyAgICBpb2hhbmRsZXIgLT5SZWFkICAgID0gRmlsZVJlYWQ7CisgICAgaW9oYW5kbGVyIC0+U2VlayAgICA9IEZpbGVTZWVrOworICAgIGlvaGFuZGxlciAtPkNsb3NlICAgPSBGaWxlQ2xvc2U7CisgICAgaW9oYW5kbGVyIC0+VGVsbCAgICA9IEZpbGVUZWxsOworICAgIGlvaGFuZGxlciAtPldyaXRlICAgPSBGaWxlV3JpdGU7CisKKyAgICByZXR1cm4gaW9oYW5kbGVyOworfQorCisKKworLy8gQ2xvc2UgYW4gb3BlbiBJTyBoYW5kbGVyCitjbXNCb29sIENNU0VYUE9SVCBjbXNDbG9zZUlPaGFuZGxlcihjbXNJT0hBTkRMRVIqIGlvKQoreworICAgIHJldHVybiBpbyAtPiBDbG9zZShpbyk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lmZGVmIF9XSU4zMl9XQ0UKK3RpbWVfdCB3Y2VleF90aW1lKHRpbWVfdCAqdGltZXIpOworc3RydWN0IHRtICogd2NlZXhfZ210aW1lKGNvbnN0IHRpbWVfdCAqdGltZXIpOworCisjZGVmaW5lIHRpbWUgd2NlZXhfdGltZQorI2RlZmluZSBnbXRpbWUgd2NlZXhfZ210aW1lCisjZW5kaWYKKworLy8gQ3JlYXRlcyBhbiBlbXB0eSBzdHJ1Y3R1cmUgaG9sZGluZyBhbGwgcmVxdWlyZWQgcGFyYW1ldGVycworY21zSFBST0ZJTEUgQ01TRVhQT1JUIGNtc0NyZWF0ZVByb2ZpbGVQbGFjZWhvbGRlcihjbXNDb250ZXh0IENvbnRleHRJRCkKK3sKKyAgICB0aW1lX3Qgbm93ID0gdGltZShOVUxMKTsKKyAgICBfY21zSUNDUFJPRklMRSogSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoX2Ntc0lDQ1BST0ZJTEUpKTsKKyAgICBpZiAoSWNjID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgSWNjIC0+Q29udGV4dElEID0gQ29udGV4dElEOworCisgICAgLy8gU2V0IGl0IHRvIGVtcHR5CisgICAgSWNjIC0+IFRhZ0NvdW50ICAgPSAwOworCisgICAgLy8gU2V0IGRlZmF1bHQgdmVyc2lvbgorICAgIEljYyAtPlZlcnNpb24gPSAgMHgwMjEwMDAwMDsKKworICAgIC8vIFNldCBjcmVhdGlvbiBkYXRlL3RpbWUKKyAgICBtZW1tb3ZlKCZJY2MgLT5DcmVhdGVkLCBnbXRpbWUoJm5vdyksIHNpemVvZihJY2MgLT5DcmVhdGVkKSk7CisKKyAgICAvLyBDcmVhdGUgYSBtdXRleCBpZiB0aGUgdXNlciBwcm92aWRlZCBwcm9wZXIgcGx1Z2luLiBOVUxMIG90aGVyd2lzZQorICAgIEljYyAtPlVzck11dGV4ID0gX2Ntc0NyZWF0ZU11dGV4KENvbnRleHRJRCk7CisKKyAgICAvLyBSZXR1cm4gdGhlIGhhbmRsZQorICAgIHJldHVybiAoY21zSFBST0ZJTEUpIEljYzsKK30KKworY21zQ29udGV4dCBDTVNFWFBPUlQgY21zR2V0UHJvZmlsZUNvbnRleHRJRChjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICAgX2Ntc0lDQ1BST0ZJTEUqIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworCisgICAgaWYgKEljYyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gSWNjIC0+IENvbnRleHRJRDsKK30KKworCisvLyBSZXR1cm4gdGhlIG51bWJlciBvZiB0YWdzCitjbXNJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0VGFnQ291bnQoY21zSFBST0ZJTEUgaFByb2ZpbGUpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIGlmIChJY2MgPT0gTlVMTCkgcmV0dXJuIC0xOworCisgICAgcmV0dXJuICBJY2MtPlRhZ0NvdW50OworfQorCisvLyBSZXR1cm4gdGhlIHRhZyBzaWduYXR1cmUgb2YgYSBnaXZlbiB0YWcgbnVtYmVyCitjbXNUYWdTaWduYXR1cmUgQ01TRVhQT1JUIGNtc0dldFRhZ1NpZ25hdHVyZShjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworCisgICAgaWYgKG4gPiBJY2MtPlRhZ0NvdW50KSByZXR1cm4gKGNtc1RhZ1NpZ25hdHVyZSkgMDsgIC8vIE1hcmsgYXMgbm90IGF2YWlsYWJsZQorICAgIGlmIChuID49IE1BWF9UQUJMRV9UQUcpIHJldHVybiAoY21zVGFnU2lnbmF0dXJlKSAwOyAvLyBBcyBkb3VibGUgY2hlY2sKKworICAgIHJldHVybiBJY2MgLT5UYWdOYW1lc1tuXTsKK30KKworCitzdGF0aWMKK2ludCBTZWFyY2hPbmVUYWcoX2Ntc0lDQ1BST0ZJTEUqIFByb2ZpbGUsIGNtc1RhZ1NpZ25hdHVyZSBzaWcpCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBmb3IgKGk9MDsgaSA8IFByb2ZpbGUgLT4gVGFnQ291bnQ7IGkrKykgeworCisgICAgICAgIGlmIChzaWcgPT0gUHJvZmlsZSAtPiBUYWdOYW1lc1tpXSkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworLy8gU2VhcmNoIGZvciBhIHNwZWNpZmljIHRhZyBpbiB0YWcgZGljdGlvbmFyeS4gUmV0dXJucyBwb3NpdGlvbiBvciAtMSBpZiB0YWcgbm90IGZvdW5kLgorLy8gSWYgZm9sbG93bGlua3MgaXMgdHVybmVkIG9uLCB0aGVuIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGlua2VkIHRhZyBpcyByZXR1cm5lZAoraW50IF9jbXNTZWFyY2hUYWcoX2Ntc0lDQ1BST0ZJTEUqIEljYywgY21zVGFnU2lnbmF0dXJlIHNpZywgY21zQm9vbCBsRm9sbG93TGlua3MpCit7CisgICAgaW50IG47CisgICAgY21zVGFnU2lnbmF0dXJlIExpbmtlZFNpZzsKKworICAgIGRvIHsKKworICAgICAgICAvLyBTZWFyY2ggZm9yIGdpdmVuIHRhZyBpbiBJQ0MgcHJvZmlsZSBkaXJlY3RvcnkKKyAgICAgICAgbiA9IFNlYXJjaE9uZVRhZyhJY2MsIHNpZyk7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsgICAgICAgIC8vIE5vdCBmb3VuZAorCisgICAgICAgIGlmICghbEZvbGxvd0xpbmtzKQorICAgICAgICAgICAgcmV0dXJuIG47ICAgICAgICAgLy8gRm91bmQsIGRvbid0IGZvbGxvdyBsaW5rcworCisgICAgICAgIC8vIElzIHRoaXMgYSBsaW5rZWQgdGFnPworICAgICAgICBMaW5rZWRTaWcgPSBJY2MgLT5UYWdMaW5rZWRbbl07CisKKyAgICAgICAgLy8gWWVzLCBmb2xsb3cgbGluaworICAgICAgICBpZiAoTGlua2VkU2lnICE9IChjbXNUYWdTaWduYXR1cmUpIDApIHsKKwkJCS8vIGZpeCBidWcgbWFudGlzIGlkIzAwNTU5NDIKKwkJCS8vIGFzc3VtZSB0aGF0IFRSQ1RhZyBhbmQgQ29sb3JhbnRUYWcgY2FuJ3QgYmUgbGlua2VkLgorCQkJLy8gWGlhb2NodWFuIExpdSAyMDE0LTA0LTIzCisJCQlpZiAoKHNpZyA9PSBjbXNTaWdSZWRUUkNUYWcgfHwgc2lnID09IGNtc1NpZ0dyZWVuVFJDVGFnIHx8IHNpZyA9PSBjbXNTaWdCbHVlVFJDVGFnKSAmJiAKKwkJCQkoTGlua2VkU2lnID09IGNtc1NpZ1JlZENvbG9yYW50VGFnIHx8IExpbmtlZFNpZyA9PSBjbXNTaWdHcmVlbkNvbG9yYW50VGFnIHx8IExpbmtlZFNpZyA9PSBjbXNTaWdCbHVlQ29sb3JhbnRUYWcpKQorCQkJeworCQkJCXJldHVybiBuOworCQkJfQorICAgICAgICAgICAgc2lnID0gTGlua2VkU2lnOworICAgICAgICB9CisKKyAgICB9IHdoaWxlIChMaW5rZWRTaWcgIT0gKGNtc1RhZ1NpZ25hdHVyZSkgMCk7CisKKyAgICByZXR1cm4gbjsKK30KKworLy8gRGVsZXRlcyBhIHRhZyBlbnRyeQorCitzdGF0aWMKK3ZvaWQgX2Ntc0RlbGV0ZVRhZ0J5UG9zKF9jbXNJQ0NQUk9GSUxFKiBJY2MsIGludCBpKQoreworICAgIF9jbXNBc3NlcnQoSWNjICE9IE5VTEwpOworICAgIF9jbXNBc3NlcnQoaSA+PSAwKTsKKworICAgCisgICAgaWYgKEljYyAtPiBUYWdQdHJzW2ldICE9IE5VTEwpIHsKKworICAgICAgICAvLyBGcmVlIHByZXZpb3VzIHZlcnNpb24KKyAgICAgICAgaWYgKEljYyAtPlRhZ1NhdmVBc1Jhd1tpXSkgeworICAgICAgICAgICAgX2Ntc0ZyZWUoSWNjIC0+Q29udGV4dElELCBJY2MgLT5UYWdQdHJzW2ldKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNtc1RhZ1R5cGVIYW5kbGVyKiBUeXBlSGFuZGxlciA9IEljYyAtPlRhZ1R5cGVIYW5kbGVyc1tpXTsKKworICAgICAgICAgICAgaWYgKFR5cGVIYW5kbGVyICE9IE5VTEwpIHsKKworICAgICAgICAgICAgICAgIGNtc1RhZ1R5cGVIYW5kbGVyIExvY2FsVHlwZUhhbmRsZXIgPSAqVHlwZUhhbmRsZXI7CisgICAgICAgICAgICAgICAgTG9jYWxUeXBlSGFuZGxlci5Db250ZXh0SUQgPSBJY2MgLT5Db250ZXh0SUQ7ICAgICAgICAgICAgICAvLyBBcyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIExvY2FsVHlwZUhhbmRsZXIuSUNDVmVyc2lvbiA9IEljYyAtPlZlcnNpb247CisgICAgICAgICAgICAgICAgTG9jYWxUeXBlSGFuZGxlci5GcmVlUHRyKCZMb2NhbFR5cGVIYW5kbGVyLCBJY2MgLT4gVGFnUHRyc1tpXSk7CisgICAgICAgICAgICAgICAgSWNjIC0+VGFnUHRyc1tpXSA9IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0gCit9CisKKworLy8gQ3JlYXRlcyBhIG5ldyB0YWcgZW50cnkKK3N0YXRpYworY21zQm9vbCBfY21zTmV3VGFnKF9jbXNJQ0NQUk9GSUxFKiBJY2MsIGNtc1RhZ1NpZ25hdHVyZSBzaWcsIGludCogTmV3UG9zKQoreworICAgIGludCBpOworCisgICAgLy8gU2VhcmNoIGZvciB0aGUgdGFnCisgICAgaSA9IF9jbXNTZWFyY2hUYWcoSWNjLCBzaWcsIEZBTFNFKTsKKyAgICBpZiAoaSA+PSAwKSB7CisKKyAgICAgICAgLy8gQWxyZWFkeSBleGlzdHM/IGRlbGV0ZSBpdAorICAgICAgICBfY21zRGVsZXRlVGFnQnlQb3MoSWNjLCBpKTsKKyAgICAgICAgKk5ld1BvcyA9IGk7CisgICAgfQorICAgIGVsc2UgIHsKKworICAgICAgICAvLyBObywgbWFrZSBhIG5ldyBvbmUKKworICAgICAgICBpZiAoSWNjIC0+IFRhZ0NvdW50ID49IE1BWF9UQUJMRV9UQUcpIHsKKyAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKEljYyAtPkNvbnRleHRJRCwgY21zRVJST1JfUkFOR0UsICJUb28gbWFueSB0YWdzICglZCkiLCBNQVhfVEFCTEVfVEFHKTsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgICpOZXdQb3MgPSBJY2MgLT5UYWdDb3VudDsKKyAgICAgICAgSWNjIC0+IFRhZ0NvdW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworLy8gQ2hlY2sgZXhpc3RhbmNlCitjbXNCb29sIENNU0VYUE9SVCBjbXNJc1RhZyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVGFnU2lnbmF0dXJlIHNpZykKK3sKKyAgICAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopICh2b2lkKikgaFByb2ZpbGU7CisgICAgICAgcmV0dXJuIF9jbXNTZWFyY2hUYWcoSWNjLCBzaWcsIEZBTFNFKSA+PSAwOworfQorCisKKy8vIFJlYWQgcHJvZmlsZSBoZWFkZXIgYW5kIHZhbGlkYXRlIGl0CitjbXNCb29sIF9jbXNSZWFkSGVhZGVyKF9jbXNJQ0NQUk9GSUxFKiBJY2MpCit7CisgICAgY21zVGFnRW50cnkgVGFnOworICAgIGNtc0lDQ0hlYWRlciBIZWFkZXI7CisgICAgY21zVUludDMyTnVtYmVyIGksIGo7CisgICAgY21zVUludDMyTnVtYmVyIEhlYWRlclNpemU7CisgICAgY21zSU9IQU5ETEVSKiBpbyA9IEljYyAtPklPaGFuZGxlcjsKKyAgICBjbXNVSW50MzJOdW1iZXIgVGFnQ291bnQ7CisKKworICAgIC8vIFJlYWQgdGhlIGhlYWRlcgorICAgIGlmIChpbyAtPiBSZWFkKGlvLCAmSGVhZGVyLCBzaXplb2YoY21zSUNDSGVhZGVyKSwgMSkgIT0gMSkgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgZmlsZSBhcyBhbiBJQ0MgcHJvZmlsZQorICAgIGlmIChfY21zQWRqdXN0RW5kaWFuZXNzMzIoSGVhZGVyLm1hZ2ljKSAhPSBjbXNNYWdpY051bWJlcikgeworICAgICAgICBjbXNTaWduYWxFcnJvcihJY2MgLT5Db250ZXh0SUQsIGNtc0VSUk9SX0JBRF9TSUdOQVRVUkUsICJub3QgYW4gSUNDIHByb2ZpbGUsIGludmFsaWQgc2lnbmF0dXJlIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBBZGp1c3QgZW5kaWFuZXNzIG9mIHRoZSB1c2VkIHBhcmFtZXRlcnMKKyAgICBJY2MgLT4gRGV2aWNlQ2xhc3MgICAgID0gKGNtc1Byb2ZpbGVDbGFzc1NpZ25hdHVyZSkgX2Ntc0FkanVzdEVuZGlhbmVzczMyKEhlYWRlci5kZXZpY2VDbGFzcyk7CisgICAgSWNjIC0+IENvbG9yU3BhY2UgICAgICA9IChjbXNDb2xvclNwYWNlU2lnbmF0dXJlKSAgIF9jbXNBZGp1c3RFbmRpYW5lc3MzMihIZWFkZXIuY29sb3JTcGFjZSk7CisgICAgSWNjIC0+IFBDUyAgICAgICAgICAgICA9IChjbXNDb2xvclNwYWNlU2lnbmF0dXJlKSAgIF9jbXNBZGp1c3RFbmRpYW5lc3MzMihIZWFkZXIucGNzKTsKKyAgIAorICAgIEljYyAtPiBSZW5kZXJpbmdJbnRlbnQgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoSGVhZGVyLnJlbmRlcmluZ0ludGVudCk7CisgICAgSWNjIC0+IGZsYWdzICAgICAgICAgICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MzMihIZWFkZXIuZmxhZ3MpOworICAgIEljYyAtPiBtYW51ZmFjdHVyZXIgICAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoSGVhZGVyLm1hbnVmYWN0dXJlcik7CisgICAgSWNjIC0+IG1vZGVsICAgICAgICAgICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MzMihIZWFkZXIubW9kZWwpOworICAgIEljYyAtPiBjcmVhdG9yICAgICAgICAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoSGVhZGVyLmNyZWF0b3IpOworICAgIAorICAgIF9jbXNBZGp1c3RFbmRpYW5lc3M2NCgmSWNjIC0+IGF0dHJpYnV0ZXMsICZIZWFkZXIuYXR0cmlidXRlcyk7CisgICAgSWNjIC0+IFZlcnNpb24gICAgICAgICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MzMihIZWFkZXIudmVyc2lvbik7CisKKyAgICAvLyBHZXQgc2l6ZSBhcyByZXBvcnRlZCBpbiBoZWFkZXIKKyAgICBIZWFkZXJTaXplID0gX2Ntc0FkanVzdEVuZGlhbmVzczMyKEhlYWRlci5zaXplKTsKKworICAgIC8vIE1ha2Ugc3VyZSBIZWFkZXJTaXplIGlzIGxvd2VyIHRoYW4gcHJvZmlsZSBzaXplCisgICAgaWYgKEhlYWRlclNpemUgPj0gSWNjIC0+SU9oYW5kbGVyIC0+UmVwb3J0ZWRTaXplKQorICAgICAgICAgICAgSGVhZGVyU2l6ZSA9IEljYyAtPklPaGFuZGxlciAtPlJlcG9ydGVkU2l6ZTsKKworCisgICAgLy8gR2V0IGNyZWF0aW9uIGRhdGUvdGltZQorICAgIF9jbXNEZWNvZGVEYXRlVGltZU51bWJlcigmSGVhZGVyLmRhdGUsICZJY2MgLT5DcmVhdGVkKTsKKworICAgIC8vIFRoZSBwcm9maWxlIElEIGFyZSAzMiByYXcgYnl0ZXMKKyAgICBtZW1tb3ZlKEljYyAtPlByb2ZpbGVJRC5JRDMyLCBIZWFkZXIucHJvZmlsZUlELklEMzIsIDE2KTsKKworCisgICAgLy8gUmVhZCB0YWcgZGlyZWN0b3J5CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJlRhZ0NvdW50KSkgcmV0dXJuIEZBTFNFOworICAgIGlmIChUYWdDb3VudCA+IE1BWF9UQUJMRV9UQUcpIHsKKworICAgICAgICBjbXNTaWduYWxFcnJvcihJY2MgLT5Db250ZXh0SUQsIGNtc0VSUk9SX1JBTkdFLCAiVG9vIG1hbnkgdGFncyAoJWQpIiwgVGFnQ291bnQpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisKKyAgICAvLyBSZWFkIHRhZyBkaXJlY3RvcnkKKyAgICBJY2MgLT4gVGFnQ291bnQgPSAwOworICAgIGZvciAoaT0wOyBpIDwgVGFnQ291bnQ7IGkrKykgeworCisgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sIChjbXNVSW50MzJOdW1iZXIgKikgJlRhZy5zaWcpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZUYWcub2Zmc2V0KSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmVGFnLnNpemUpKSByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgLy8gUGVyZm9ybSBzb21lIHNhbml0eSBjaGVjay4gT2Zmc2V0ICsgc2l6ZSBzaG91bGQgZmFsbCBpbnNpZGUgZmlsZS4KKyAgICAgICAgaWYgKFRhZy5vZmZzZXQgKyBUYWcuc2l6ZSA+IEhlYWRlclNpemUgfHwKKyAgICAgICAgICAgIFRhZy5vZmZzZXQgKyBUYWcuc2l6ZSA8IFRhZy5vZmZzZXQpCisgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBJY2MgLT4gVGFnTmFtZXNbSWNjIC0+VGFnQ291bnRdICAgPSBUYWcuc2lnOworICAgICAgICBJY2MgLT4gVGFnT2Zmc2V0c1tJY2MgLT5UYWdDb3VudF0gPSBUYWcub2Zmc2V0OworICAgICAgICBJY2MgLT4gVGFnU2l6ZXNbSWNjIC0+VGFnQ291bnRdICAgPSBUYWcuc2l6ZTsKKworICAgICAgIC8vIFNlYXJjaCBmb3IgbGlua3MKKyAgICAgICAgZm9yIChqPTA7IGogPCBJY2MgLT5UYWdDb3VudDsgaisrKSB7CisKKyAgICAgICAgICAgIGlmICgoSWNjIC0+VGFnT2Zmc2V0c1tqXSA9PSBUYWcub2Zmc2V0KSAmJgorICAgICAgICAgICAgICAgIChJY2MgLT5UYWdTaXplc1tqXSAgID09IFRhZy5zaXplKSkgeworCisgICAgICAgICAgICAgICAgSWNjIC0+VGFnTGlua2VkW0ljYyAtPlRhZ0NvdW50XSA9IEljYyAtPlRhZ05hbWVzW2pdOworICAgICAgICAgICAgfQorCisgICAgICAgIH0KKworICAgICAgICBJY2MgLT5UYWdDb3VudCsrOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisvLyBTYXZlcyBwcm9maWxlIGhlYWRlcgorY21zQm9vbCBfY21zV3JpdGVIZWFkZXIoX2Ntc0lDQ1BST0ZJTEUqIEljYywgY21zVUludDMyTnVtYmVyIFVzZWRTcGFjZSkKK3sKKyAgICBjbXNJQ0NIZWFkZXIgSGVhZGVyOworICAgIGNtc1VJbnQzMk51bWJlciBpOworICAgIGNtc1RhZ0VudHJ5IFRhZzsKKyAgICBjbXNJbnQzMk51bWJlciBDb3VudCA9IDA7CisKKyAgICBIZWFkZXIuc2l6ZSAgICAgICAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoVXNlZFNwYWNlKTsKKyAgICBIZWFkZXIuY21tSWQgICAgICAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIobGNtc1NpZ25hdHVyZSk7CisgICAgSGVhZGVyLnZlcnNpb24gICAgID0gX2Ntc0FkanVzdEVuZGlhbmVzczMyKEljYyAtPlZlcnNpb24pOworCisgICAgSGVhZGVyLmRldmljZUNsYXNzID0gKGNtc1Byb2ZpbGVDbGFzc1NpZ25hdHVyZSkgX2Ntc0FkanVzdEVuZGlhbmVzczMyKEljYyAtPiBEZXZpY2VDbGFzcyk7CisgICAgSGVhZGVyLmNvbG9yU3BhY2UgID0gKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUpIF9jbXNBZGp1c3RFbmRpYW5lc3MzMihJY2MgLT4gQ29sb3JTcGFjZSk7CisgICAgSGVhZGVyLnBjcyAgICAgICAgID0gKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUpIF9jbXNBZGp1c3RFbmRpYW5lc3MzMihJY2MgLT4gUENTKTsKKworICAgIC8vICAgTk9URTogaW4gdjQgVGltZXN0YW1wIG11c3QgYmUgaW4gVVRDIHJhdGhlciB0aGFuIGluIGxvY2FsIHRpbWUKKyAgICBfY21zRW5jb2RlRGF0ZVRpbWVOdW1iZXIoJkhlYWRlci5kYXRlLCAmSWNjIC0+Q3JlYXRlZCk7CisKKyAgICBIZWFkZXIubWFnaWMgICAgICAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoY21zTWFnaWNOdW1iZXIpOworCisjaWZkZWYgQ01TX0lTX1dJTkRPV1NfCisgICAgSGVhZGVyLnBsYXRmb3JtICAgID0gKGNtc1BsYXRmb3JtU2lnbmF0dXJlKSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoY21zU2lnTWljcm9zb2Z0KTsKKyNlbHNlCisgICAgSGVhZGVyLnBsYXRmb3JtICAgID0gKGNtc1BsYXRmb3JtU2lnbmF0dXJlKSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoY21zU2lnTWFjaW50b3NoKTsKKyNlbmRpZgorCisgICAgSGVhZGVyLmZsYWdzICAgICAgICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MzMihJY2MgLT4gZmxhZ3MpOworICAgIEhlYWRlci5tYW51ZmFjdHVyZXIgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoSWNjIC0+IG1hbnVmYWN0dXJlcik7CisgICAgSGVhZGVyLm1vZGVsICAgICAgICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MzMihJY2MgLT4gbW9kZWwpOworCisgICAgX2Ntc0FkanVzdEVuZGlhbmVzczY0KCZIZWFkZXIuYXR0cmlidXRlcywgJkljYyAtPiBhdHRyaWJ1dGVzKTsKKworICAgIC8vIFJlbmRlcmluZyBpbnRlbnQgaW4gdGhlIGhlYWRlciAoZm9yIGVtYmVkZGVkIHByb2ZpbGVzKQorICAgIEhlYWRlci5yZW5kZXJpbmdJbnRlbnQgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoSWNjIC0+IFJlbmRlcmluZ0ludGVudCk7CisKKyAgICAvLyBJbGx1bWluYW50IGlzIGFsd2F5cyBENTAKKyAgICBIZWFkZXIuaWxsdW1pbmFudC5YID0gX2Ntc0FkanVzdEVuZGlhbmVzczMyKF9jbXNEb3VibGVUbzE1Rml4ZWQxNihjbXNENTBfWFlaKCktPlgpKTsKKyAgICBIZWFkZXIuaWxsdW1pbmFudC5ZID0gX2Ntc0FkanVzdEVuZGlhbmVzczMyKF9jbXNEb3VibGVUbzE1Rml4ZWQxNihjbXNENTBfWFlaKCktPlkpKTsKKyAgICBIZWFkZXIuaWxsdW1pbmFudC5aID0gX2Ntc0FkanVzdEVuZGlhbmVzczMyKF9jbXNEb3VibGVUbzE1Rml4ZWQxNihjbXNENTBfWFlaKCktPlopKTsKKworICAgIC8vIENyZWF0ZWQgYnkgTGl0dGxlQ01TICh0aGF0J3MgbWUhKQorICAgIEhlYWRlci5jcmVhdG9yICAgICAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIobGNtc1NpZ25hdHVyZSk7CisKKyAgICBtZW1zZXQoJkhlYWRlci5yZXNlcnZlZCwgMCwgc2l6ZW9mKEhlYWRlci5yZXNlcnZlZCkpOworCisgICAgLy8gU2V0IHByb2ZpbGUgSUQuIEVuZGlhbmVzcyBpcyBhbHdheXMgYmlnIGVuZGlhbgorICAgIG1lbW1vdmUoJkhlYWRlci5wcm9maWxlSUQsICZJY2MgLT5Qcm9maWxlSUQsIDE2KTsKKworICAgIC8vIER1bXAgdGhlIGhlYWRlcgorICAgIGlmICghSWNjIC0+IElPaGFuZGxlci0+V3JpdGUoSWNjLT5JT2hhbmRsZXIsIHNpemVvZihjbXNJQ0NIZWFkZXIpLCAmSGVhZGVyKSkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gU2F2ZXMgVGFnIGRpcmVjdG9yeQorCisgICAgLy8gR2V0IHRydWUgY291bnQKKyAgICBmb3IgKGk9MDsgIGkgPCBJY2MgLT4gVGFnQ291bnQ7IGkrKykgeworICAgICAgICBpZiAoSWNjIC0+VGFnTmFtZXNbaV0gIT0gMCkKKyAgICAgICAgICAgIENvdW50Kys7CisgICAgfQorCisgICAgLy8gU3RvcmUgbnVtYmVyIG9mIHRhZ3MKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihJY2MgLT5JT2hhbmRsZXIsIENvdW50KSkgcmV0dXJuIEZBTFNFOworCisgICAgZm9yIChpPTA7IGkgPCBJY2MgLT4gVGFnQ291bnQ7IGkrKykgeworCisgICAgICAgIGlmIChJY2MgLT5UYWdOYW1lc1tpXSA9PSAwKSBjb250aW51ZTsgICAvLyBJdCBpcyBqdXN0IGEgcGxhY2Vob2xkZXIKKworICAgICAgICBUYWcuc2lnICAgID0gKGNtc1RhZ1NpZ25hdHVyZSkgX2Ntc0FkanVzdEVuZGlhbmVzczMyKChjbXNJbnQzMk51bWJlcikgSWNjIC0+IFRhZ05hbWVzW2ldKTsKKyAgICAgICAgVGFnLm9mZnNldCA9IF9jbXNBZGp1c3RFbmRpYW5lc3MzMigoY21zSW50MzJOdW1iZXIpIEljYyAtPiBUYWdPZmZzZXRzW2ldKTsKKyAgICAgICAgVGFnLnNpemUgICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MzMigoY21zSW50MzJOdW1iZXIpIEljYyAtPiBUYWdTaXplc1tpXSk7CisKKyAgICAgICAgaWYgKCFJY2MgLT5JT2hhbmRsZXIgLT4gV3JpdGUoSWNjLT4gSU9oYW5kbGVyLCBzaXplb2YoY21zVGFnRW50cnkpLCAmVGFnKSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTZXQvR2V0IHNldmVyYWwgc3RydWN0IG1lbWJlcnMKKworCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0dldEhlYWRlclJlbmRlcmluZ0ludGVudChjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIHJldHVybiBJY2MgLT4gUmVuZGVyaW5nSW50ZW50OworfQorCit2b2lkIENNU0VYUE9SVCBjbXNTZXRIZWFkZXJSZW5kZXJpbmdJbnRlbnQoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQzMk51bWJlciBSZW5kZXJpbmdJbnRlbnQpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqICBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICBJY2MgLT4gUmVuZGVyaW5nSW50ZW50ID0gUmVuZGVyaW5nSW50ZW50OworfQorCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0dldEhlYWRlckZsYWdzKGNtc0hQUk9GSUxFIGhQcm9maWxlKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiAgSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgcmV0dXJuIChjbXNVSW50MzJOdW1iZXIpIEljYyAtPiBmbGFnczsKK30KKwordm9pZCBDTVNFWFBPUlQgY21zU2V0SGVhZGVyRmxhZ3MoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQzMk51bWJlciBGbGFncykKK3sKKyAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIEljYyAtPiBmbGFncyA9IChjbXNVSW50MzJOdW1iZXIpIEZsYWdzOworfQorCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0dldEhlYWRlck1hbnVmYWN0dXJlcihjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIHJldHVybiBJY2MgLT5tYW51ZmFjdHVyZXI7Cit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc1NldEhlYWRlck1hbnVmYWN0dXJlcihjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIG1hbnVmYWN0dXJlcikKK3sKKyAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIEljYyAtPiBtYW51ZmFjdHVyZXIgPSBtYW51ZmFjdHVyZXI7Cit9CisKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0SGVhZGVyQ3JlYXRvcihjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIHJldHVybiBJY2MgLT5jcmVhdG9yOworfQorCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0dldEhlYWRlck1vZGVsKGNtc0hQUk9GSUxFIGhQcm9maWxlKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiAgSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgcmV0dXJuIEljYyAtPm1vZGVsOworfQorCit2b2lkIENNU0VYUE9SVCBjbXNTZXRIZWFkZXJNb2RlbChjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIG1vZGVsKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiAgSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgSWNjIC0+IG1vZGVsID0gbW9kZWw7Cit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc0dldEhlYWRlckF0dHJpYnV0ZXMoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQ2NE51bWJlciogRmxhZ3MpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqICBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICBtZW1tb3ZlKEZsYWdzLCAmSWNjIC0+IGF0dHJpYnV0ZXMsIHNpemVvZihjbXNVSW50NjROdW1iZXIpKTsKK30KKwordm9pZCBDTVNFWFBPUlQgY21zU2V0SGVhZGVyQXR0cmlidXRlcyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDY0TnVtYmVyIEZsYWdzKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiAgSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgbWVtbW92ZSgmSWNjIC0+IGF0dHJpYnV0ZXMsICZGbGFncywgc2l6ZW9mKGNtc1VJbnQ2NE51bWJlcikpOworfQorCit2b2lkIENNU0VYUE9SVCBjbXNHZXRIZWFkZXJQcm9maWxlSUQoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQ4TnVtYmVyKiBQcm9maWxlSUQpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqICBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICBtZW1tb3ZlKFByb2ZpbGVJRCwgSWNjIC0+UHJvZmlsZUlELklEOCwgMTYpOworfQorCit2b2lkIENNU0VYUE9SVCBjbXNTZXRIZWFkZXJQcm9maWxlSUQoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQ4TnVtYmVyKiBQcm9maWxlSUQpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqICBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICBtZW1tb3ZlKCZJY2MgLT4gUHJvZmlsZUlELCBQcm9maWxlSUQsIDE2KTsKK30KKworY21zQm9vbCAgQ01TRVhQT1JUIGNtc0dldEhlYWRlckNyZWF0aW9uRGF0ZVRpbWUoY21zSFBST0ZJTEUgaFByb2ZpbGUsIHN0cnVjdCB0bSAqRGVzdCkKK3sKKyAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIG1lbW1vdmUoRGVzdCwgJkljYyAtPkNyZWF0ZWQsIHNpemVvZihzdHJ1Y3QgdG0pKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDTVNFWFBPUlQgY21zR2V0UENTKGNtc0hQUk9GSUxFIGhQcm9maWxlKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiAgSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgcmV0dXJuIEljYyAtPiBQQ1M7Cit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc1NldFBDUyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBwY3MpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqICBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICBJY2MgLT4gUENTID0gcGNzOworfQorCitjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENNU0VYUE9SVCBjbXNHZXRDb2xvclNwYWNlKGNtc0hQUk9GSUxFIGhQcm9maWxlKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiAgSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgcmV0dXJuIEljYyAtPiBDb2xvclNwYWNlOworfQorCit2b2lkIENNU0VYUE9SVCBjbXNTZXRDb2xvclNwYWNlKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIHNpZykKK3sKKyAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIEljYyAtPiBDb2xvclNwYWNlID0gc2lnOworfQorCitjbXNQcm9maWxlQ2xhc3NTaWduYXR1cmUgQ01TRVhQT1JUIGNtc0dldERldmljZUNsYXNzKGNtc0hQUk9GSUxFIGhQcm9maWxlKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiAgSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgcmV0dXJuIEljYyAtPiBEZXZpY2VDbGFzczsKK30KKwordm9pZCBDTVNFWFBPUlQgY21zU2V0RGV2aWNlQ2xhc3MoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1Byb2ZpbGVDbGFzc1NpZ25hdHVyZSBzaWcpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqICBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICBJY2MgLT4gRGV2aWNlQ2xhc3MgPSBzaWc7Cit9CisKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0RW5jb2RlZElDQ3ZlcnNpb24oY21zSFBST0ZJTEUgaFByb2ZpbGUpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqICBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICByZXR1cm4gSWNjIC0+IFZlcnNpb247Cit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc1NldEVuY29kZWRJQ0N2ZXJzaW9uKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNVSW50MzJOdW1iZXIgVmVyc2lvbikKK3sKKyAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIEljYyAtPiBWZXJzaW9uID0gVmVyc2lvbjsKK30KKworLy8gR2V0IGFuIGhleGFkZWNpbWFsIG51bWJlciB3aXRoIHNhbWUgZGlnaXRzIGFzIHYKK3N0YXRpYworY21zVUludDMyTnVtYmVyIEJhc2VUb0Jhc2UoY21zVUludDMyTnVtYmVyIGluLCBpbnQgQmFzZUluLCBpbnQgQmFzZU91dCkKK3sKKyAgICBjaGFyIEJ1ZmZbMTAwXTsKKyAgICBpbnQgaSwgbGVuOworICAgIGNtc1VJbnQzMk51bWJlciBvdXQ7CisKKyAgICBmb3IgKGxlbj0wOyBpbiA+IDAgJiYgbGVuIDwgMTAwOyBsZW4rKykgeworCisgICAgICAgIEJ1ZmZbbGVuXSA9IChjaGFyKSAoaW4gJSBCYXNlSW4pOworICAgICAgICBpbiAvPSBCYXNlSW47CisgICAgfQorCisgICAgZm9yIChpPWxlbi0xLCBvdXQ9MDsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgb3V0ID0gb3V0ICogQmFzZU91dCArIEJ1ZmZbaV07CisgICAgfQorCisgICAgcmV0dXJuIG91dDsKK30KKwordm9pZCAgQ01TRVhQT1JUIGNtc1NldFByb2ZpbGVWZXJzaW9uKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNGbG9hdDY0TnVtYmVyIFZlcnNpb24pCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqICBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKworICAgIC8vIDQuMiAtPiAweDQyMDAwMDAKKworICAgIEljYyAtPiBWZXJzaW9uID0gQmFzZVRvQmFzZSgoY21zVUludDMyTnVtYmVyKSBmbG9vcihWZXJzaW9uICogMTAwLjAgKyAwLjUpLCAxMCwgMTYpIDw8IDE2OworfQorCitjbXNGbG9hdDY0TnVtYmVyIENNU0VYUE9SVCBjbXNHZXRQcm9maWxlVmVyc2lvbihjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICBfY21zSUNDUFJPRklMRSogIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIGNtc1VJbnQzMk51bWJlciBuID0gSWNjIC0+IFZlcnNpb24gPj4gMTY7CisKKyAgICByZXR1cm4gQmFzZVRvQmFzZShuLCAxNiwgMTApIC8gMTAwLjA7Cit9CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKy8vIENyZWF0ZSBwcm9maWxlIGZyb20gSU9oYW5kbGVyCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zT3BlblByb2ZpbGVGcm9tSU9oYW5kbGVyVEhSKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNJT0hBTkRMRVIqIGlvKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiBOZXdJY2M7CisgICAgY21zSFBST0ZJTEUgaEVtcHR5ID0gY21zQ3JlYXRlUHJvZmlsZVBsYWNlaG9sZGVyKENvbnRleHRJRCk7CisKKyAgICBpZiAoaEVtcHR5ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgTmV3SWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaEVtcHR5OworCisgICAgTmV3SWNjIC0+SU9oYW5kbGVyID0gaW87CisgICAgaWYgKCFfY21zUmVhZEhlYWRlcihOZXdJY2MpKSBnb3RvIEVycm9yOworICAgIHJldHVybiBoRW1wdHk7CisKK0Vycm9yOgorICAgIGNtc0Nsb3NlUHJvZmlsZShoRW1wdHkpOworICAgIHJldHVybiBOVUxMOworfQorCisvLyBDcmVhdGUgcHJvZmlsZSBmcm9tIElPaGFuZGxlcgorY21zSFBST0ZJTEUgQ01TRVhQT1JUIGNtc09wZW5Qcm9maWxlRnJvbUlPaGFuZGxlcjJUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0lPSEFORExFUiogaW8sIGNtc0Jvb2wgd3JpdGUpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqIE5ld0ljYzsKKyAgICBjbXNIUFJPRklMRSBoRW1wdHkgPSBjbXNDcmVhdGVQcm9maWxlUGxhY2Vob2xkZXIoQ29udGV4dElEKTsKKworICAgIGlmIChoRW1wdHkgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBOZXdJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoRW1wdHk7CisKKyAgICBOZXdJY2MgLT5JT2hhbmRsZXIgPSBpbzsKKyAgICBpZiAod3JpdGUpIHsKKworICAgICAgICBOZXdJY2MgLT4gSXNXcml0ZSA9IFRSVUU7CisgICAgICAgIHJldHVybiBoRW1wdHk7CisgICAgfQorCisgICAgaWYgKCFfY21zUmVhZEhlYWRlcihOZXdJY2MpKSBnb3RvIEVycm9yOworICAgIHJldHVybiBoRW1wdHk7CisKK0Vycm9yOgorICAgIGNtc0Nsb3NlUHJvZmlsZShoRW1wdHkpOworICAgIHJldHVybiBOVUxMOworfQorCisKKy8vIENyZWF0ZSBwcm9maWxlIGZyb20gZGlzayBmaWxlCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zT3BlblByb2ZpbGVGcm9tRmlsZVRIUihjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3QgY2hhciAqbHBGaWxlTmFtZSwgY29uc3QgY2hhciAqc0FjY2VzcykKK3sKKyAgICBfY21zSUNDUFJPRklMRSogTmV3SWNjOworICAgIGNtc0hQUk9GSUxFIGhFbXB0eSA9IGNtc0NyZWF0ZVByb2ZpbGVQbGFjZWhvbGRlcihDb250ZXh0SUQpOworCisgICAgaWYgKGhFbXB0eSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIE5ld0ljYyA9IChfY21zSUNDUFJPRklMRSopIGhFbXB0eTsKKworICAgIE5ld0ljYyAtPklPaGFuZGxlciA9IGNtc09wZW5JT2hhbmRsZXJGcm9tRmlsZShDb250ZXh0SUQsIGxwRmlsZU5hbWUsIHNBY2Nlc3MpOworICAgIGlmIChOZXdJY2MgLT5JT2hhbmRsZXIgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIGlmICgqc0FjY2VzcyA9PSAnVycgfHwgKnNBY2Nlc3MgPT0gJ3cnKSB7CisKKyAgICAgICAgTmV3SWNjIC0+IElzV3JpdGUgPSBUUlVFOworCisgICAgICAgIHJldHVybiBoRW1wdHk7CisgICAgfQorCisgICAgaWYgKCFfY21zUmVhZEhlYWRlcihOZXdJY2MpKSBnb3RvIEVycm9yOworICAgIHJldHVybiBoRW1wdHk7CisKK0Vycm9yOgorICAgIGNtc0Nsb3NlUHJvZmlsZShoRW1wdHkpOworICAgIHJldHVybiBOVUxMOworfQorCisKK2Ntc0hQUk9GSUxFIENNU0VYUE9SVCBjbXNPcGVuUHJvZmlsZUZyb21GaWxlKGNvbnN0IGNoYXIgKklDQ1Byb2ZpbGUsIGNvbnN0IGNoYXIgKnNBY2Nlc3MpCit7CisgICAgcmV0dXJuIGNtc09wZW5Qcm9maWxlRnJvbUZpbGVUSFIoTlVMTCwgSUNDUHJvZmlsZSwgc0FjY2Vzcyk7Cit9CisKKworY21zSFBST0ZJTEUgIENNU0VYUE9SVCBjbXNPcGVuUHJvZmlsZUZyb21TdHJlYW1USFIoY21zQ29udGV4dCBDb250ZXh0SUQsIEZJTEUqIElDQ1Byb2ZpbGUsIGNvbnN0IGNoYXIgKnNBY2Nlc3MpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqIE5ld0ljYzsKKyAgICBjbXNIUFJPRklMRSBoRW1wdHkgPSBjbXNDcmVhdGVQcm9maWxlUGxhY2Vob2xkZXIoQ29udGV4dElEKTsKKworICAgIGlmIChoRW1wdHkgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBOZXdJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoRW1wdHk7CisKKyAgICBOZXdJY2MgLT5JT2hhbmRsZXIgPSBjbXNPcGVuSU9oYW5kbGVyRnJvbVN0cmVhbShDb250ZXh0SUQsIElDQ1Byb2ZpbGUpOworICAgIGlmIChOZXdJY2MgLT5JT2hhbmRsZXIgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIGlmICgqc0FjY2VzcyA9PSAndycpIHsKKworICAgICAgICBOZXdJY2MgLT4gSXNXcml0ZSA9IFRSVUU7CisgICAgICAgIHJldHVybiBoRW1wdHk7CisgICAgfQorCisgICAgaWYgKCFfY21zUmVhZEhlYWRlcihOZXdJY2MpKSBnb3RvIEVycm9yOworICAgIHJldHVybiBoRW1wdHk7CisKK0Vycm9yOgorICAgIGNtc0Nsb3NlUHJvZmlsZShoRW1wdHkpOworICAgIHJldHVybiBOVUxMOworCit9CisKK2Ntc0hQUk9GSUxFICBDTVNFWFBPUlQgY21zT3BlblByb2ZpbGVGcm9tU3RyZWFtKEZJTEUqIElDQ1Byb2ZpbGUsIGNvbnN0IGNoYXIgKnNBY2Nlc3MpCit7CisgICAgcmV0dXJuIGNtc09wZW5Qcm9maWxlRnJvbVN0cmVhbVRIUihOVUxMLCBJQ0NQcm9maWxlLCBzQWNjZXNzKTsKK30KKworCisvLyBPcGVuIGZyb20gbWVtb3J5IGJsb2NrCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zT3BlblByb2ZpbGVGcm9tTWVtVEhSKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCB2b2lkKiBNZW1QdHIsIGNtc1VJbnQzMk51bWJlciBkd1NpemUpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqIE5ld0ljYzsKKyAgICBjbXNIUFJPRklMRSBoRW1wdHk7CisKKyAgICBoRW1wdHkgPSBjbXNDcmVhdGVQcm9maWxlUGxhY2Vob2xkZXIoQ29udGV4dElEKTsKKyAgICBpZiAoaEVtcHR5ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgTmV3SWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaEVtcHR5OworCisgICAgLy8gT2ssIGluIHRoaXMgY2FzZSBjb25zdCB2b2lkKiBpcyBjYXN0ZWQgdG8gdm9pZCoganVzdCBiZWNhdXNlIG9wZW4gSU8gaGFuZGxlcgorICAgIC8vIHNoYXJlcyByZWFkIGFuZCB3cml0dGluZyBtb2Rlcy4gRG9uJ3QgYWJ1c2UgdGhpcyBmZWF0dXJlIQorICAgIE5ld0ljYyAtPklPaGFuZGxlciA9IGNtc09wZW5JT2hhbmRsZXJGcm9tTWVtKENvbnRleHRJRCwgKHZvaWQqKSBNZW1QdHIsIGR3U2l6ZSwgInIiKTsKKyAgICBpZiAoTmV3SWNjIC0+SU9oYW5kbGVyID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICBpZiAoIV9jbXNSZWFkSGVhZGVyKE5ld0ljYykpIGdvdG8gRXJyb3I7CisKKyAgICByZXR1cm4gaEVtcHR5OworCitFcnJvcjoKKyAgICBjbXNDbG9zZVByb2ZpbGUoaEVtcHR5KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworY21zSFBST0ZJTEUgQ01TRVhQT1JUIGNtc09wZW5Qcm9maWxlRnJvbU1lbShjb25zdCB2b2lkKiBNZW1QdHIsIGNtc1VJbnQzMk51bWJlciBkd1NpemUpCit7CisgICAgcmV0dXJuIGNtc09wZW5Qcm9maWxlRnJvbU1lbVRIUihOVUxMLCBNZW1QdHIsIGR3U2l6ZSk7Cit9CisKKworCisvLyBEdW1wIHRhZyBjb250ZW50cy4gSWYgdGhlIHByb2ZpbGUgaXMgYmVpbmcgbW9kaWZpZWQsIHVudG91Y2hlZCB0YWdzIGFyZSBjb3BpZWQgZnJvbSBGaWxlT3JpZworc3RhdGljCitjbXNCb29sIFNhdmVUYWdzKF9jbXNJQ0NQUk9GSUxFKiBJY2MsIF9jbXNJQ0NQUk9GSUxFKiBGaWxlT3JpZykKK3sKKyAgICBjbXNVSW50OE51bWJlciogRGF0YTsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNVSW50MzJOdW1iZXIgQmVnaW47CisgICAgY21zSU9IQU5ETEVSKiBpbyA9IEljYyAtPklPaGFuZGxlcjsKKyAgICBjbXNUYWdEZXNjcmlwdG9yKiBUYWdEZXNjcmlwdG9yOworICAgIGNtc1RhZ1R5cGVTaWduYXR1cmUgVHlwZUJhc2U7CisgICAgY21zVGFnVHlwZVNpZ25hdHVyZSBUeXBlOworICAgIGNtc1RhZ1R5cGVIYW5kbGVyKiBUeXBlSGFuZGxlcjsKKyAgICBjbXNGbG9hdDY0TnVtYmVyICAgVmVyc2lvbiA9IGNtc0dldFByb2ZpbGVWZXJzaW9uKChjbXNIUFJPRklMRSkgSWNjKTsKKyAgICBjbXNUYWdUeXBlSGFuZGxlciBMb2NhbFR5cGVIYW5kbGVyOworCisgICAgZm9yIChpPTA7IGkgPCBJY2MgLT4gVGFnQ291bnQ7IGkrKykgeworCisgICAgICAgIGlmIChJY2MgLT5UYWdOYW1lc1tpXSA9PSAwKSBjb250aW51ZTsKKworICAgICAgICAvLyBMaW5rZWQgdGFncyBhcmUgbm90IHdyaXR0ZW4KKyAgICAgICAgaWYgKEljYyAtPlRhZ0xpbmtlZFtpXSAhPSAoY21zVGFnU2lnbmF0dXJlKSAwKSBjb250aW51ZTsKKworICAgICAgICBJY2MgLT4gVGFnT2Zmc2V0c1tpXSA9IEJlZ2luID0gaW8gLT5Vc2VkU3BhY2U7CisKKyAgICAgICAgRGF0YSA9IChjbXNVSW50OE51bWJlciopICBJY2MgLT4gVGFnUHRyc1tpXTsKKworICAgICAgICBpZiAoIURhdGEpIHsKKworICAgICAgICAgICAgLy8gUmVhY2ggaGVyZSBpZiB3ZSBhcmUgY29weWluZyBhIHRhZyBmcm9tIGEgZGlzay1iYXNlZCBJQ0MgcHJvZmlsZSB3aGljaCBoYXMgbm90IGJlZW4gbW9kaWZpZWQgYnkgdXNlci4KKyAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBhIGJsaW5kIGNvcHkgb2YgdGhlIGJsb2NrIGRhdGEgaXMgcGVyZm9ybWVkCisgICAgICAgICAgICBpZiAoRmlsZU9yaWcgIT0gTlVMTCAmJiBJY2MgLT4gVGFnT2Zmc2V0c1tpXSkgeworCisgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFRhZ1NpemUgICA9IEZpbGVPcmlnIC0+IFRhZ1NpemVzW2ldOworICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBUYWdPZmZzZXQgPSBGaWxlT3JpZyAtPiBUYWdPZmZzZXRzW2ldOworICAgICAgICAgICAgICAgIHZvaWQqIE1lbTsKKworICAgICAgICAgICAgICAgIGlmICghRmlsZU9yaWcgLT5JT2hhbmRsZXItPlNlZWsoRmlsZU9yaWcgLT5JT2hhbmRsZXIsIFRhZ09mZnNldCkpIHJldHVybiBGQUxTRTsKKworICAgICAgICAgICAgICAgIE1lbSA9IF9jbXNNYWxsb2MoSWNjIC0+Q29udGV4dElELCBUYWdTaXplKTsKKyAgICAgICAgICAgICAgICBpZiAoTWVtID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgICAgICAgICAgICAgIGlmIChGaWxlT3JpZyAtPklPaGFuZGxlci0+UmVhZChGaWxlT3JpZy0+SU9oYW5kbGVyLCBNZW0sIFRhZ1NpemUsIDEpICE9IDEpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICBpZiAoIWlvIC0+V3JpdGUoaW8sIFRhZ1NpemUsIE1lbSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICBfY21zRnJlZShJY2MgLT5Db250ZXh0SUQsIE1lbSk7CisKKyAgICAgICAgICAgICAgICBJY2MgLT4gVGFnU2l6ZXNbaV0gPSAoaW8gLT5Vc2VkU3BhY2UgLSBCZWdpbik7CisKKworICAgICAgICAgICAgICAgIC8vIEFsaWduIHRvIDMyIGJpdCBib3VuZGFyeS4KKyAgICAgICAgICAgICAgICBpZiAoISBfY21zV3JpdGVBbGlnbm1lbnQoaW8pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKworICAgICAgICAvLyBTaG91bGQgdGhpcyB0YWcgYmUgc2F2ZWQgYXMgUkFXPyBJZiBzbywgdGFnc2l6ZXMgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiBhZHZhbmNlIChubyBmdXJ0aGVyIGNvb2tpbmcgaXMgZG9uZSkKKyAgICAgICAgaWYgKEljYyAtPlRhZ1NhdmVBc1Jhd1tpXSkgeworCisgICAgICAgICAgICBpZiAoaW8gLT4gV3JpdGUoaW8sIEljYyAtPlRhZ1NpemVzW2ldLCBEYXRhKSAhPSAxKSByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgIC8vIFNlYXJjaCBmb3Igc3VwcG9ydCBvbiB0aGlzIHRhZworICAgICAgICAgICAgVGFnRGVzY3JpcHRvciA9IF9jbXNHZXRUYWdEZXNjcmlwdG9yKEljYy0+IENvbnRleHRJRCwgSWNjIC0+IFRhZ05hbWVzW2ldKTsKKyAgICAgICAgICAgIGlmIChUYWdEZXNjcmlwdG9yID09IE5VTEwpIGNvbnRpbnVlOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVuc3VwcG9ydGVkLCBpZ25vcmUgaXQKKyAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoVGFnRGVzY3JpcHRvciAtPkRlY2lkZVR5cGUgIT0gTlVMTCkgeworCisgICAgICAgICAgICAgICAgVHlwZSA9IFRhZ0Rlc2NyaXB0b3IgLT5EZWNpZGVUeXBlKFZlcnNpb24sIERhdGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgICAgICBUeXBlID0gVGFnRGVzY3JpcHRvciAtPlN1cHBvcnRlZFR5cGVzWzBdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUeXBlSGFuZGxlciA9ICBfY21zR2V0VGFnVHlwZUhhbmRsZXIoSWNjLT5Db250ZXh0SUQsIFR5cGUpOworCisgICAgICAgICAgICBpZiAoVHlwZUhhbmRsZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKEljYyAtPkNvbnRleHRJRCwgY21zRVJST1JfSU5URVJOQUwsICIoSW50ZXJuYWwpIG5vIGhhbmRsZXIgZm9yIHRhZyAleCIsIEljYyAtPiBUYWdOYW1lc1tpXSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFR5cGVCYXNlID0gVHlwZUhhbmRsZXIgLT5TaWduYXR1cmU7CisgICAgICAgICAgICBpZiAoIV9jbXNXcml0ZVR5cGVCYXNlKGlvLCBUeXBlQmFzZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgICAgICAgICBMb2NhbFR5cGVIYW5kbGVyID0gKlR5cGVIYW5kbGVyOworICAgICAgICAgICAgTG9jYWxUeXBlSGFuZGxlci5Db250ZXh0SUQgID0gSWNjIC0+Q29udGV4dElEOworICAgICAgICAgICAgTG9jYWxUeXBlSGFuZGxlci5JQ0NWZXJzaW9uID0gSWNjIC0+VmVyc2lvbjsKKyAgICAgICAgICAgIGlmICghTG9jYWxUeXBlSGFuZGxlci5Xcml0ZVB0cigmTG9jYWxUeXBlSGFuZGxlciwgaW8sIERhdGEsIFRhZ0Rlc2NyaXB0b3IgLT5FbGVtQ291bnQpKSB7CisKKyAgICAgICAgICAgICAgICBjaGFyIFN0cmluZ1s1XTsKKworICAgICAgICAgICAgICAgIF9jbXNUYWdTaWduYXR1cmUyU3RyaW5nKFN0cmluZywgKGNtc1RhZ1NpZ25hdHVyZSkgVHlwZUJhc2UpOworICAgICAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKEljYyAtPkNvbnRleHRJRCwgY21zRVJST1JfV1JJVEUsICJDb3VsZG4ndCB3cml0ZSB0eXBlICclcyciLCBTdHJpbmcpOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisKKyAgICAgICAgSWNjIC0+IFRhZ1NpemVzW2ldID0gKGlvIC0+VXNlZFNwYWNlIC0gQmVnaW4pOworCisgICAgICAgIC8vIEFsaWduIHRvIDMyIGJpdCBib3VuZGFyeS4KKyAgICAgICAgaWYgKCEgX2Ntc1dyaXRlQWxpZ25tZW50KGlvKSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIEZpbGwgdGhlIG9mZnNldCBhbmQgc2l6ZSBmaWVsZHMgZm9yIGFsbCBsaW5rZWQgdGFncworc3RhdGljCitjbXNCb29sIFNldExpbmtzKCBfY21zSUNDUFJPRklMRSogSWNjKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgZm9yIChpPTA7IGkgPCBJY2MgLT4gVGFnQ291bnQ7IGkrKykgeworCisgICAgICAgIGNtc1RhZ1NpZ25hdHVyZSBsbmsgPSBJY2MgLT5UYWdMaW5rZWRbaV07CisgICAgICAgIGlmIChsbmsgIT0gKGNtc1RhZ1NpZ25hdHVyZSkgMCkgeworCisgICAgICAgICAgICBpbnQgaiA9IF9jbXNTZWFyY2hUYWcoSWNjLCBsbmssIEZBTFNFKTsKKyAgICAgICAgICAgIGlmIChqID49IDApIHsKKworICAgICAgICAgICAgICAgIEljYyAtPlRhZ09mZnNldHNbaV0gPSBJY2MgLT5UYWdPZmZzZXRzW2pdOworICAgICAgICAgICAgICAgIEljYyAtPlRhZ1NpemVzW2ldICAgPSBJY2MgLT5UYWdTaXplc1tqXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIExvdy1sZXZlbCBzYXZlIHRvIElPSEFORExFUi4gSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgdG8KKy8vIHN0b3JlIHRoZSBwcm9maWxlLCBvciB6ZXJvIG9uIGVycm9yLiBpbyBtYXkgYmUgTlVMTCBhbmQgaW4gdGhpcyBjYXNlCisvLyBubyBkYXRhIGlzIHdyaXR0ZW4tLW9ubHkgc2l6ZXMgYXJlIGNhbGN1bGF0ZWQKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zU2F2ZVByb2ZpbGVUb0lPaGFuZGxlcihjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zSU9IQU5ETEVSKiBpbykKK3sKKyAgICBfY21zSUNDUFJPRklMRSogSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgX2Ntc0lDQ1BST0ZJTEUgS2VlcDsKKyAgICBjbXNJT0hBTkRMRVIqIFByZXZJTyA9IE5VTEw7CisgICAgY21zVUludDMyTnVtYmVyIFVzZWRTcGFjZTsKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRDsKKworICAgIF9jbXNBc3NlcnQoaFByb2ZpbGUgIT0gTlVMTCk7CisKKyAgICBtZW1tb3ZlKCZLZWVwLCBJY2MsIHNpemVvZihfY21zSUNDUFJPRklMRSkpOworCisgICAgQ29udGV4dElEID0gY21zR2V0UHJvZmlsZUNvbnRleHRJRChoUHJvZmlsZSk7CisgICAgUHJldklPID0gSWNjIC0+SU9oYW5kbGVyID0gY21zT3BlbklPaGFuZGxlckZyb21OVUxMKENvbnRleHRJRCk7CisgICAgaWYgKFByZXZJTyA9PSBOVUxMKSByZXR1cm4gMDsKKworICAgIC8vIFBhc3MgIzEgZG9lcyBjb21wdXRlIG9mZnNldHMKKworICAgIGlmICghX2Ntc1dyaXRlSGVhZGVyKEljYywgMCkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFTYXZlVGFncyhJY2MsICZLZWVwKSkgZ290byBFcnJvcjsKKworICAgIFVzZWRTcGFjZSA9IFByZXZJTyAtPlVzZWRTcGFjZTsKKworICAgIC8vIFBhc3MgIzIgZG9lcyBzYXZlIHRvIGlvaGFuZGxlcgorCisgICAgaWYgKGlvICE9IE5VTEwpIHsKKworICAgICAgICBJY2MgLT5JT2hhbmRsZXIgPSBpbzsKKyAgICAgICAgaWYgKCFTZXRMaW5rcyhJY2MpKSBnb3RvIEVycm9yOworICAgICAgICBpZiAoIV9jbXNXcml0ZUhlYWRlcihJY2MsIFVzZWRTcGFjZSkpIGdvdG8gRXJyb3I7CisgICAgICAgIGlmICghU2F2ZVRhZ3MoSWNjLCAmS2VlcCkpIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgbWVtbW92ZShJY2MsICZLZWVwLCBzaXplb2YoX2Ntc0lDQ1BST0ZJTEUpKTsKKyAgICBpZiAoIWNtc0Nsb3NlSU9oYW5kbGVyKFByZXZJTykpIHJldHVybiAwOworCisgICAgcmV0dXJuIFVzZWRTcGFjZTsKKworCitFcnJvcjoKKyAgICBjbXNDbG9zZUlPaGFuZGxlcihQcmV2SU8pOworICAgIG1lbW1vdmUoSWNjLCAmS2VlcCwgc2l6ZW9mKF9jbXNJQ0NQUk9GSUxFKSk7CisgICAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBfV0lOMzJfV0NFCitpbnQgd2NlZXhfdW5saW5rKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyNpZm5kZWYgcmVtb3ZlCisjCWRlZmluZSByZW1vdmUgd2NlZXhfdW5saW5rCisjZW5kaWYKKyNlbmRpZgorCisvLyBMb3ctbGV2ZWwgc2F2ZSB0byBkaXNrLgorY21zQm9vbCAgQ01TRVhQT1JUIGNtc1NhdmVQcm9maWxlVG9GaWxlKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjb25zdCBjaGFyKiBGaWxlTmFtZSkKK3sKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRCA9IGNtc0dldFByb2ZpbGVDb250ZXh0SUQoaFByb2ZpbGUpOworICAgIGNtc0lPSEFORExFUiogaW8gPSBjbXNPcGVuSU9oYW5kbGVyRnJvbUZpbGUoQ29udGV4dElELCBGaWxlTmFtZSwgInciKTsKKyAgICBjbXNCb29sIHJjOworCisgICAgaWYgKGlvID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIHJjID0gKGNtc1NhdmVQcm9maWxlVG9JT2hhbmRsZXIoaFByb2ZpbGUsIGlvKSAhPSAwKTsKKyAgICByYyAmPSBjbXNDbG9zZUlPaGFuZGxlcihpbyk7CisKKyAgICBpZiAocmMgPT0gRkFMU0UpIHsgICAgICAgICAgLy8gcmVtb3ZlKCkgaXMgQzk5IHBlciA3LjE5LjQuMQorICAgICAgICAgICAgcmVtb3ZlKEZpbGVOYW1lKTsgICAvLyBXZSBoYXZlIHRvIElHTk9SRSByZXR1cm4gdmFsdWUgaW4gdGhpcyBjYXNlCisgICAgfQorICAgIHJldHVybiByYzsKK30KKworLy8gU2FtZSBhcyBhbnRlcmlvciwgYnV0IGZvciBzdHJlYW1zCitjbXNCb29sIENNU0VYUE9SVCBjbXNTYXZlUHJvZmlsZVRvU3RyZWFtKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBGSUxFKiBTdHJlYW0pCit7CisgICAgY21zQm9vbCByYzsKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRCA9IGNtc0dldFByb2ZpbGVDb250ZXh0SUQoaFByb2ZpbGUpOworICAgIGNtc0lPSEFORExFUiogaW8gPSBjbXNPcGVuSU9oYW5kbGVyRnJvbVN0cmVhbShDb250ZXh0SUQsIFN0cmVhbSk7CisKKyAgICBpZiAoaW8gPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgcmMgPSAoY21zU2F2ZVByb2ZpbGVUb0lPaGFuZGxlcihoUHJvZmlsZSwgaW8pICE9IDApOworICAgIHJjICY9IGNtc0Nsb3NlSU9oYW5kbGVyKGlvKTsKKworICAgIHJldHVybiByYzsKK30KKworCisvLyBTYW1lIGFzIGFudGVyaW9yLCBidXQgZm9yIG1lbW9yeSBibG9ja3MuIEluIHRoaXMgY2FzZSwgYSBOVUxMIGFzIE1lbVB0ciBtZWFucyBjYWxjdWxhdGUgbmVlZGVkIHNwYWNlIG9ubHkKK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc1NhdmVQcm9maWxlVG9NZW0oY21zSFBST0ZJTEUgaFByb2ZpbGUsIHZvaWQgKk1lbVB0ciwgY21zVUludDMyTnVtYmVyKiBCeXRlc05lZWRlZCkKK3sKKyAgICBjbXNCb29sIHJjOworICAgIGNtc0lPSEFORExFUiogaW87CisgICAgY21zQ29udGV4dCBDb250ZXh0SUQgPSBjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlKTsKKworICAgIF9jbXNBc3NlcnQoQnl0ZXNOZWVkZWQgIT0gTlVMTCk7CisKKyAgICAvLyBTaG91bGQgd2UganVzdCBjYWxjdWxhdGUgdGhlIG5lZWRlZCBzcGFjZT8KKyAgICBpZiAoTWVtUHRyID09IE5VTEwpIHsKKworICAgICAgICAgICAqQnl0ZXNOZWVkZWQgPSAgY21zU2F2ZVByb2ZpbGVUb0lPaGFuZGxlcihoUHJvZmlsZSwgTlVMTCk7CisgICAgICAgICAgICByZXR1cm4gKCpCeXRlc05lZWRlZCA9PSAwKSA/IEZBTFNFIDogVFJVRTsKKyAgICB9CisKKyAgICAvLyBUaGF0IGlzIGEgcmVhbCB3cml0ZSBvcGVyYXRpb24KKyAgICBpbyA9ICBjbXNPcGVuSU9oYW5kbGVyRnJvbU1lbShDb250ZXh0SUQsIE1lbVB0ciwgKkJ5dGVzTmVlZGVkLCAidyIpOworICAgIGlmIChpbyA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICByYyA9IChjbXNTYXZlUHJvZmlsZVRvSU9oYW5kbGVyKGhQcm9maWxlLCBpbykgIT0gMCk7CisgICAgcmMgJj0gY21zQ2xvc2VJT2hhbmRsZXIoaW8pOworCisgICAgcmV0dXJuIHJjOworfQorCisKKworLy8gQ2xvc2VzIGEgcHJvZmlsZSBmcmVlaW5nIGFueSBpbnZvbHZlZCByZXNvdXJjZXMKK2Ntc0Jvb2wgIENNU0VYUE9SVCBjbXNDbG9zZVByb2ZpbGUoY21zSFBST0ZJTEUgaFByb2ZpbGUpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIGNtc0Jvb2wgIHJjID0gVFJVRTsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKworICAgIGlmICghSWNjKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBXYXMgb3BlbiBpbiB3cml0ZSBtb2RlPworICAgIGlmIChJY2MgLT5Jc1dyaXRlKSB7CisKKyAgICAgICAgSWNjIC0+SXNXcml0ZSA9IEZBTFNFOyAgICAgIC8vIEFzc3VyZSBubyBmdXJ0aGVyIHdyaXR0aW5nCisgICAgICAgIHJjICY9IGNtc1NhdmVQcm9maWxlVG9GaWxlKGhQcm9maWxlLCBJY2MgLT5JT2hhbmRsZXItPlBoeXNpY2FsRmlsZSk7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBJY2MgLT4gVGFnQ291bnQ7IGkrKykgeworCisgICAgICAgIGlmIChJY2MgLT4gVGFnUHRyc1tpXSkgeworCisgICAgICAgICAgICBjbXNUYWdUeXBlSGFuZGxlciogVHlwZUhhbmRsZXIgPSBJY2MgLT5UYWdUeXBlSGFuZGxlcnNbaV07CisKKyAgICAgICAgICAgIGlmIChUeXBlSGFuZGxlciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgY21zVGFnVHlwZUhhbmRsZXIgTG9jYWxUeXBlSGFuZGxlciA9ICpUeXBlSGFuZGxlcjsKKworICAgICAgICAgICAgICAgIExvY2FsVHlwZUhhbmRsZXIuQ29udGV4dElEID0gSWNjIC0+Q29udGV4dElEOyAgICAgICAgICAgICAgLy8gQXMgYW4gYWRkaXRpb25hbCBwYXJhbWV0ZXJzCisgICAgICAgICAgICAgICAgTG9jYWxUeXBlSGFuZGxlci5JQ0NWZXJzaW9uID0gSWNjIC0+VmVyc2lvbjsKKyAgICAgICAgICAgICAgICBMb2NhbFR5cGVIYW5kbGVyLkZyZWVQdHIoJkxvY2FsVHlwZUhhbmRsZXIsIEljYyAtPiBUYWdQdHJzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBfY21zRnJlZShJY2MgLT5Db250ZXh0SUQsIEljYyAtPlRhZ1B0cnNbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKEljYyAtPklPaGFuZGxlciAhPSBOVUxMKSB7CisgICAgICAgIHJjICY9IGNtc0Nsb3NlSU9oYW5kbGVyKEljYy0+SU9oYW5kbGVyKTsKKyAgICB9CisKKyAgICBfY21zRGVzdHJveU11dGV4KEljYy0+Q29udGV4dElELCBJY2MtPlVzck11dGV4KTsKKworICAgIF9jbXNGcmVlKEljYyAtPkNvbnRleHRJRCwgSWNjKTsgICAvLyBGcmVlIHBsYWNlaG9sZGVyIG1lbW9yeQorCisgICAgcmV0dXJuIHJjOworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisvLyBSZXR1cm5zIFRSVUUgaWYgYSBnaXZlbiB0YWcgaXMgc3VwcG9ydGVkIGJ5IGEgcGx1Zy1pbgorc3RhdGljCitjbXNCb29sIElzVHlwZVN1cHBvcnRlZChjbXNUYWdEZXNjcmlwdG9yKiBUYWdEZXNjcmlwdG9yLCBjbXNUYWdUeXBlU2lnbmF0dXJlIFR5cGUpCit7CisgICAgY21zVUludDMyTnVtYmVyIGksIG5NYXhUeXBlczsKKworICAgIG5NYXhUeXBlcyA9IFRhZ0Rlc2NyaXB0b3ItPm5TdXBwb3J0ZWRUeXBlczsKKyAgICBpZiAobk1heFR5cGVzID49IE1BWF9UWVBFU19JTl9MQ01TX1BMVUdJTikKKyAgICAgICAgbk1heFR5cGVzID0gTUFYX1RZUEVTX0lOX0xDTVNfUExVR0lOOworCisgICAgZm9yIChpPTA7IGkgPCBuTWF4VHlwZXM7IGkrKykgeworICAgICAgICBpZiAoVHlwZSA9PSBUYWdEZXNjcmlwdG9yIC0+U3VwcG9ydGVkVHlwZXNbaV0pIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKK30KKworCisvLyBUaGF0J3MgdGhlIG1haW4gcmVhZCBmdW5jdGlvbgordm9pZCogQ01TRVhQT1JUIGNtc1JlYWRUYWcoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1RhZ1NpZ25hdHVyZSBzaWcpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIGNtc0lPSEFORExFUiogaW8gPSBJY2MgLT5JT2hhbmRsZXI7CisgICAgY21zVGFnVHlwZUhhbmRsZXIqIFR5cGVIYW5kbGVyOworICAgIGNtc1RhZ1R5cGVIYW5kbGVyIExvY2FsVHlwZUhhbmRsZXI7CisgICAgY21zVGFnRGVzY3JpcHRvciogIFRhZ0Rlc2NyaXB0b3I7CisgICAgY21zVGFnVHlwZVNpZ25hdHVyZSBCYXNlVHlwZTsKKyAgICBjbXNVSW50MzJOdW1iZXIgT2Zmc2V0LCBUYWdTaXplOworICAgIGNtc1VJbnQzMk51bWJlciBFbGVtQ291bnQ7CisgICAgaW50IG47CisKKyAgICBpZiAoIV9jbXNMb2NrTXV0ZXgoSWNjLT5Db250ZXh0SUQsIEljYyAtPlVzck11dGV4KSkgcmV0dXJuIE5VTEw7CisKKyAgICBuID0gX2Ntc1NlYXJjaFRhZyhJY2MsIHNpZywgVFJVRSk7CisgICAgaWYgKG4gPCAwKSBnb3RvIEVycm9yOyAgICAgICAgICAgICAgIC8vIE5vdCBmb3VuZCwgcmV0dXJuIE5VTEwKKworCisgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBpbiBtZW1vcnksIHJldHVybiB0aGUgcG9pbnRlcgorICAgIGlmIChJY2MgLT4gVGFnUHRyc1tuXSkgeworCisgICAgICAgIGlmIChJY2MgLT5UYWdTYXZlQXNSYXdbbl0pIGdvdG8gRXJyb3I7ICAvLyBXZSBkb24ndCBzdXBwb3J0IHJlYWQgcmF3IHRhZ3MgYXMgY29va2VkCisKKyAgICAgICAgX2Ntc1VubG9ja011dGV4KEljYy0+Q29udGV4dElELCBJY2MgLT5Vc3JNdXRleCk7CisgICAgICAgIHJldHVybiBJY2MgLT4gVGFnUHRyc1tuXTsKKyAgICB9CisKKyAgICAvLyBXZSBuZWVkIHRvIHJlYWQgaXQuIEdldCB0aGUgb2Zmc2V0IGFuZCBzaXplIHRvIHRoZSBmaWxlCisgICAgT2Zmc2V0ICAgID0gSWNjIC0+IFRhZ09mZnNldHNbbl07CisgICAgVGFnU2l6ZSAgID0gSWNjIC0+IFRhZ1NpemVzW25dOworCisgICAgLy8gU2VlayB0byBpdHMgbG9jYXRpb24KKyAgICBpZiAoIWlvIC0+IFNlZWsoaW8sIE9mZnNldCkpCisgICAgICAgIGdvdG8gRXJyb3I7CisKKyAgICAvLyBTZWFyY2ggZm9yIHN1cHBvcnQgb24gdGhpcyB0YWcKKyAgICBUYWdEZXNjcmlwdG9yID0gX2Ntc0dldFRhZ0Rlc2NyaXB0b3IoSWNjLT4gQ29udGV4dElELCBzaWcpOworICAgIGlmIChUYWdEZXNjcmlwdG9yID09IE5VTEwpIHsKKworICAgICAgICBjaGFyIFN0cmluZ1s1XTsKKworICAgICAgICBfY21zVGFnU2lnbmF0dXJlMlN0cmluZyhTdHJpbmcsIHNpZyk7CisKKyAgICAgICAgLy8gQW4gdW5rbm93biBlbGVtZW50IHdhcyBmb3VuZC4KKyAgICAgICAgY21zU2lnbmFsRXJyb3IoSWNjIC0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVua25vd24gdGFnIHR5cGUgJyVzJyBmb3VuZC4iLCBTdHJpbmcpOworICAgICAgICBnb3RvIEVycm9yOyAgICAgLy8gVW5zdXBwb3J0ZWQuCisgICAgfQorCisgICAgLy8gaWYgc3VwcG9ydGVkLCBnZXQgdHlwZSBhbmQgY2hlY2sgaWYgaW4gbGlzdAorICAgIEJhc2VUeXBlID0gX2Ntc1JlYWRUeXBlQmFzZShpbyk7CisgICAgaWYgKEJhc2VUeXBlID09IDApIGdvdG8gRXJyb3I7CisKKyAgICBpZiAoIUlzVHlwZVN1cHBvcnRlZChUYWdEZXNjcmlwdG9yLCBCYXNlVHlwZSkpIGdvdG8gRXJyb3I7CisKKyAgICBUYWdTaXplICAtPSA4OyAgICAgICAgICAgICAgICAgICAgICAvLyBBbHJlZHkgcmVhZCBieSB0aGUgdHlwZSBiYXNlIGxvZ2ljCisKKyAgICAvLyBHZXQgdHlwZSBoYW5kbGVyCisgICAgVHlwZUhhbmRsZXIgPSBfY21zR2V0VGFnVHlwZUhhbmRsZXIoSWNjIC0+Q29udGV4dElELCBCYXNlVHlwZSk7CisgICAgaWYgKFR5cGVIYW5kbGVyID09IE5VTEwpIGdvdG8gRXJyb3I7CisgICAgTG9jYWxUeXBlSGFuZGxlciA9ICpUeXBlSGFuZGxlcjsKKworCisgICAgLy8gUmVhZCB0aGUgdGFnCisgICAgSWNjIC0+IFRhZ1R5cGVIYW5kbGVyc1tuXSA9IFR5cGVIYW5kbGVyOworCisgICAgTG9jYWxUeXBlSGFuZGxlci5Db250ZXh0SUQgPSBJY2MgLT5Db250ZXh0SUQ7CisgICAgTG9jYWxUeXBlSGFuZGxlci5JQ0NWZXJzaW9uID0gSWNjIC0+VmVyc2lvbjsKKyAgICBJY2MgLT4gVGFnUHRyc1tuXSA9IExvY2FsVHlwZUhhbmRsZXIuUmVhZFB0cigmTG9jYWxUeXBlSGFuZGxlciwgaW8sICZFbGVtQ291bnQsIFRhZ1NpemUpOworCisgICAgLy8gVGhlIHRhZyB0eXBlIGlzIHN1cHBvcnRlZCwgYnV0IHNvbWV0aGluZyB3cm9uZyBoYXBwZW5kIGFuZCB3ZSBjYW5ub3QgcmVhZCB0aGUgdGFnLgorICAgIC8vIGxldCBrbm93IHRoZSB1c2VyIGFib3V0IHRoaXMgKGFsdGhvdWdoIGl0IGlzIGp1c3QgYSB3YXJuaW5nKQorICAgIGlmIChJY2MgLT4gVGFnUHRyc1tuXSA9PSBOVUxMKSB7CisKKyAgICAgICAgY2hhciBTdHJpbmdbNV07CisKKyAgICAgICAgX2Ntc1RhZ1NpZ25hdHVyZTJTdHJpbmcoU3RyaW5nLCBzaWcpOworICAgICAgICBjbXNTaWduYWxFcnJvcihJY2MgLT5Db250ZXh0SUQsIGNtc0VSUk9SX0NPUlJVUFRJT05fREVURUNURUQsICJDb3JydXB0ZWQgdGFnICclcyciLCBTdHJpbmcpOworICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKworICAgIC8vIFRoaXMgaXMgYSB3ZWlyZCBlcnJvciB0aGF0IG1heSBiZSBhIHN5bXB0b20gb2Ygc29tZXRoaW5nIG1vcmUgc2VyaW91cywgdGhlIG51bWJlciBvZgorICAgIC8vIHN0b3JlZCBpdGVtIGlzIGFjdHVhbGx5IGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIHJlcXVpcmVkIGVsZW1lbnRzLgorICAgIGlmIChFbGVtQ291bnQgPCBUYWdEZXNjcmlwdG9yIC0+RWxlbUNvdW50KSB7CisKKyAgICAgICAgY2hhciBTdHJpbmdbNV07CisKKyAgICAgICAgX2Ntc1RhZ1NpZ25hdHVyZTJTdHJpbmcoU3RyaW5nLCBzaWcpOworICAgICAgICBjbXNTaWduYWxFcnJvcihJY2MgLT5Db250ZXh0SUQsIGNtc0VSUk9SX0NPUlJVUFRJT05fREVURUNURUQsICInJXMnIEluY29uc2lzdGVudCBudW1iZXIgb2YgaXRlbXM6IGV4cGVjdGVkICVkLCBnb3QgJWQiLAorICAgICAgICAgICAgU3RyaW5nLCBUYWdEZXNjcmlwdG9yIC0+RWxlbUNvdW50LCBFbGVtQ291bnQpOworICAgIH0KKworCisgICAgLy8gUmV0dXJuIHRoZSBkYXRhCisgICAgX2Ntc1VubG9ja011dGV4KEljYy0+Q29udGV4dElELCBJY2MgLT5Vc3JNdXRleCk7CisgICAgcmV0dXJuIEljYyAtPiBUYWdQdHJzW25dOworCisKKyAgICAvLyBSZXR1cm4gZXJyb3IgYW5kIHVubG9jayB0aGEgZGF0YQorRXJyb3I6CisgICAgX2Ntc1VubG9ja011dGV4KEljYy0+Q29udGV4dElELCBJY2MgLT5Vc3JNdXRleCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLy8gR2V0IHRydWUgdHlwZSBvZiBkYXRhCitjbXNUYWdUeXBlU2lnbmF0dXJlIF9jbXNHZXRUYWdUcnVlVHlwZShjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVGFnU2lnbmF0dXJlIHNpZykKK3sKKyAgICBfY21zSUNDUFJPRklMRSogSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgY21zVGFnVHlwZUhhbmRsZXIqIFR5cGVIYW5kbGVyOworICAgIGludCBuOworCisgICAgLy8gU2VhcmNoIGZvciBnaXZlbiB0YWcgaW4gSUNDIHByb2ZpbGUgZGlyZWN0b3J5CisgICAgbiA9IF9jbXNTZWFyY2hUYWcoSWNjLCBzaWcsIFRSVUUpOworICAgIGlmIChuIDwgMCkgcmV0dXJuIChjbXNUYWdUeXBlU2lnbmF0dXJlKSAwOyAgICAgICAgICAgICAgICAvLyBOb3QgZm91bmQsIHJldHVybiBOVUxMCisKKyAgICAvLyBHZXQgdGhlIGhhbmRsZXIuIFRoZSB0cnVlIHR5cGUgaXMgdGhlcmUKKyAgICBUeXBlSGFuZGxlciA9ICBJY2MgLT4gVGFnVHlwZUhhbmRsZXJzW25dOworICAgIHJldHVybiBUeXBlSGFuZGxlciAtPlNpZ25hdHVyZTsKK30KKworCisvLyBXcml0ZSBhIHNpbmdsZSB0YWcuIFRoaXMganVzdCBrZWVwcyB0cmFjayBvZiB0aGUgdGFrIGludG8gYSBsaXN0IG9mICJ0byBiZSB3cml0dGVuIi4gSWYgdGhlIHRhZyBpcyBhbHJlYWR5CisvLyBpbiB0aGF0IGxpc3QsIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGlzIGRlbGV0ZWQuCitjbXNCb29sIENNU0VYUE9SVCBjbXNXcml0ZVRhZyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVGFnU2lnbmF0dXJlIHNpZywgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICBfY21zSUNDUFJPRklMRSogSWNjID0gKF9jbXNJQ0NQUk9GSUxFKikgaFByb2ZpbGU7CisgICAgY21zVGFnVHlwZUhhbmRsZXIqIFR5cGVIYW5kbGVyID0gTlVMTDsKKyAgICBjbXNUYWdUeXBlSGFuZGxlciBMb2NhbFR5cGVIYW5kbGVyOworICAgIGNtc1RhZ0Rlc2NyaXB0b3IqIFRhZ0Rlc2NyaXB0b3IgPSBOVUxMOworICAgIGNtc1RhZ1R5cGVTaWduYXR1cmUgVHlwZTsKKyAgICBpbnQgaTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIFZlcnNpb247CisgICAgY2hhciBUeXBlU3RyaW5nWzVdLCBTaWdTdHJpbmdbNV07CisKKyAgICBpZiAoIV9jbXNMb2NrTXV0ZXgoSWNjLT5Db250ZXh0SUQsIEljYyAtPlVzck11dGV4KSkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gVG8gZGVsZXRlIHRhZ3MuCisgICAgaWYgKGRhdGEgPT0gTlVMTCkgeworCisgICAgICAgICAvLyBEZWxldGUgdGhlIHRhZworICAgICAgICAgaSA9IF9jbXNTZWFyY2hUYWcoSWNjLCBzaWcsIEZBTFNFKTsKKyAgICAgICAgIGlmIChpID49IDApIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAvLyBVc2UgemVybyBhcyBhIG1hcmsgb2YgZGVsZXRlZCAKKyAgICAgICAgICAgICBfY21zRGVsZXRlVGFnQnlQb3MoSWNjLCBpKTsKKyAgICAgICAgICAgICBJY2MgLT5UYWdOYW1lc1tpXSA9IChjbXNUYWdTaWduYXR1cmUpIDA7CisgICAgICAgICAgICAgX2Ntc1VubG9ja011dGV4KEljYy0+Q29udGV4dElELCBJY2MgLT5Vc3JNdXRleCk7CisgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgICB9CisgICAgICAgICAvLyBEaWRuJ3QgZmluZCB0aGUgdGFnCisgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgaWYgKCFfY21zTmV3VGFnKEljYywgc2lnLCAmaSkpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBUaGlzIGlzIG5vdCByYXcKKyAgICBJY2MgLT5UYWdTYXZlQXNSYXdbaV0gPSBGQUxTRTsKKworICAgIC8vIFRoaXMgaXMgbm90IGEgbGluaworICAgIEljYyAtPlRhZ0xpbmtlZFtpXSA9IChjbXNUYWdTaWduYXR1cmUpIDA7CisKKyAgICAvLyBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFRBRy4KKyAgICBUYWdEZXNjcmlwdG9yID0gX2Ntc0dldFRhZ0Rlc2NyaXB0b3IoSWNjLT4gQ29udGV4dElELCBzaWcpOworICAgIGlmIChUYWdEZXNjcmlwdG9yID09IE5VTEwpeworICAgICAgICAgY21zU2lnbmFsRXJyb3IoSWNjIC0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVuc3VwcG9ydGVkIHRhZyAnJXgnIiwgc2lnKTsKKyAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKworICAgIC8vIE5vdyB3ZSBuZWVkIHRvIGtub3cgd2hpY2ggdHlwZSB0byB1c2UuIEl0IGRlcGVuZHMgb24gdGhlIHZlcnNpb24uCisgICAgVmVyc2lvbiA9IGNtc0dldFByb2ZpbGVWZXJzaW9uKGhQcm9maWxlKTsKKworICAgIGlmIChUYWdEZXNjcmlwdG9yIC0+RGVjaWRlVHlwZSAhPSBOVUxMKSB7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0YWcgZGVzY3JpcHRvciB0byBkZWNpZGUgdGhlIHR5cGUgYmFzZSBvbiBkZXBlbmRpbmcgb24KKyAgICAgICAgLy8gdGhlIGRhdGEuIFRoaXMgaXMgdXNlZnVsIGZvciBleGFtcGxlIG9uIHBhcmFtZXRyaWMgY3VydmVzLCB3aGVyZQorICAgICAgICAvLyBjdXJ2ZXMgc3BlY2lmaWVkIGJ5IGEgdGFibGUgY2Fubm90IGJlIHNhdmVkIGFzIHBhcmFtZXRyaWMgYW5kIG5lZWRzCisgICAgICAgIC8vIHRvIGJlIGNhc3RlZCB0byBzaW5nbGUgdjItY3VydmVzLCBldmVuIG9uIHY0IHByb2ZpbGVzLgorCisgICAgICAgIFR5cGUgPSBUYWdEZXNjcmlwdG9yIC0+RGVjaWRlVHlwZShWZXJzaW9uLCBkYXRhKTsKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgICAgVHlwZSA9IFRhZ0Rlc2NyaXB0b3IgLT5TdXBwb3J0ZWRUeXBlc1swXTsKKyAgICB9CisKKyAgICAvLyBEb2VzIHRoZSB0YWcgc3VwcG9ydCB0aGlzIHR5cGU/CisgICAgaWYgKCFJc1R5cGVTdXBwb3J0ZWQoVGFnRGVzY3JpcHRvciwgVHlwZSkpIHsKKworICAgICAgICBfY21zVGFnU2lnbmF0dXJlMlN0cmluZyhUeXBlU3RyaW5nLCAoY21zVGFnU2lnbmF0dXJlKSBUeXBlKTsKKyAgICAgICAgX2Ntc1RhZ1NpZ25hdHVyZTJTdHJpbmcoU2lnU3RyaW5nLCAgc2lnKTsKKworICAgICAgICBjbXNTaWduYWxFcnJvcihJY2MgLT5Db250ZXh0SUQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiVW5zdXBwb3J0ZWQgdHlwZSAnJXMnIGZvciB0YWcgJyVzJyIsIFR5cGVTdHJpbmcsIFNpZ1N0cmluZyk7CisgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgLy8gRG9lcyB3ZSBoYXZlIGEgaGFuZGxlciBmb3IgdGhpcyB0eXBlPworICAgIFR5cGVIYW5kbGVyID0gIF9jbXNHZXRUYWdUeXBlSGFuZGxlcihJY2MtPkNvbnRleHRJRCwgVHlwZSk7CisgICAgaWYgKFR5cGVIYW5kbGVyID09IE5VTEwpIHsKKworICAgICAgICBfY21zVGFnU2lnbmF0dXJlMlN0cmluZyhUeXBlU3RyaW5nLCAoY21zVGFnU2lnbmF0dXJlKSBUeXBlKTsKKyAgICAgICAgX2Ntc1RhZ1NpZ25hdHVyZTJTdHJpbmcoU2lnU3RyaW5nLCAgc2lnKTsKKworICAgICAgICBjbXNTaWduYWxFcnJvcihJY2MgLT5Db250ZXh0SUQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiVW5zdXBwb3J0ZWQgdHlwZSAnJXMnIGZvciB0YWcgJyVzJyIsIFR5cGVTdHJpbmcsIFNpZ1N0cmluZyk7CisgICAgICAgIGdvdG8gRXJyb3I7ICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuCisgICAgfQorCisKKyAgICAvLyBGaWxsIGZpZWxkcyBvbiBpY2Mgc3RydWN0dXJlCisgICAgSWNjIC0+VGFnVHlwZUhhbmRsZXJzW2ldICA9IFR5cGVIYW5kbGVyOworICAgIEljYyAtPlRhZ05hbWVzW2ldICAgICAgICAgPSBzaWc7CisgICAgSWNjIC0+VGFnU2l6ZXNbaV0gICAgICAgICA9IDA7CisgICAgSWNjIC0+VGFnT2Zmc2V0c1tpXSAgICAgICA9IDA7CisKKyAgICBMb2NhbFR5cGVIYW5kbGVyID0gKlR5cGVIYW5kbGVyOworICAgIExvY2FsVHlwZUhhbmRsZXIuQ29udGV4dElEICA9IEljYyAtPkNvbnRleHRJRDsKKyAgICBMb2NhbFR5cGVIYW5kbGVyLklDQ1ZlcnNpb24gPSBJY2MgLT5WZXJzaW9uOworICAgIEljYyAtPlRhZ1B0cnNbaV0gICAgICAgICAgICA9IExvY2FsVHlwZUhhbmRsZXIuRHVwUHRyKCZMb2NhbFR5cGVIYW5kbGVyLCBkYXRhLCBUYWdEZXNjcmlwdG9yIC0+RWxlbUNvdW50KTsKKworICAgIGlmIChJY2MgLT5UYWdQdHJzW2ldID09IE5VTEwpICB7CisKKyAgICAgICAgX2Ntc1RhZ1NpZ25hdHVyZTJTdHJpbmcoVHlwZVN0cmluZywgKGNtc1RhZ1NpZ25hdHVyZSkgVHlwZSk7CisgICAgICAgIF9jbXNUYWdTaWduYXR1cmUyU3RyaW5nKFNpZ1N0cmluZywgIHNpZyk7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKEljYyAtPkNvbnRleHRJRCwgY21zRVJST1JfQ09SUlVQVElPTl9ERVRFQ1RFRCwgIk1hbGZvcm1lZCBzdHJ1Y3QgaW4gdHlwZSAnJXMnIGZvciB0YWcgJyVzJyIsIFR5cGVTdHJpbmcsIFNpZ1N0cmluZyk7CisKKyAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBfY21zVW5sb2NrTXV0ZXgoSWNjLT5Db250ZXh0SUQsIEljYyAtPlVzck11dGV4KTsKKyAgICByZXR1cm4gVFJVRTsKKworRXJyb3I6CisgICAgX2Ntc1VubG9ja011dGV4KEljYy0+Q29udGV4dElELCBJY2MgLT5Vc3JNdXRleCk7CisgICAgcmV0dXJuIEZBTFNFOworCit9CisKKy8vIFJlYWQgYW5kIHdyaXRlIHJhdyBkYXRhLiBUaGUgb25seSB3YXkgdGhvc2UgZnVuY3Rpb24gd291bGQgd29yayBhbmQga2VlcCBjb25zaXN0ZW5jZSB3aXRoIG5vcm1hbCByZWFkIGFuZCB3cml0ZQorLy8gaXMgdG8gZG8gYW4gYWRkaXRpb25hbCBzdGVwIG9mIHNlcmlhbGl6YXRpb24uIFRoYXQgbWVhbnMsIHJlYWRSYXcgd291bGQgaXNzdWUgYSBub3JtYWwgcmVhZCBhbmQgdGhlbiBjb252ZXJ0IHRoZSBvYnRhaW5lZAorLy8gZGF0YSB0byByYXcgYnl0ZXMgYnkgdXNpbmcgdGhlICJ3cml0ZSIgc2VyaWFsaXphdGlvbiBsb2dpYy4gQW5kIHZpY2UtdmVyc2EuIEkga25vdyB0aGlzIG1heSBlbmQgaW4gc2l0dWF0aW9ucyB3aGVyZQorLy8gcmF3IGRhdGEgd3JpdHRlbiBkb2VzIG5vdCBleGFjdGx5IGNvcnJlc3BvbmQgd2l0aCB0aGUgcmF3IGRhdGEgcHJvcG9zZWQgdG8gY21zV3JpdGVSYXcgZGF0YSwgYnV0IHRoaXMgYXBwcm9hY2ggYWxsb3dzCisvLyB0byB3cml0ZSBhIHRhZyBhcyByYXcgZGF0YSBhbmQgdGhlIHJlYWQgaXQgYXMgaGFuZGxlZC4KKworY21zSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc1JlYWRSYXdUYWcoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1RhZ1NpZ25hdHVyZSBzaWcsIHZvaWQqIGRhdGEsIGNtc1VJbnQzMk51bWJlciBCdWZmZXJTaXplKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICB2b2lkICpPYmplY3Q7CisgICAgaW50IGk7CisgICAgY21zSU9IQU5ETEVSKiBNZW1JTzsKKyAgICBjbXNUYWdUeXBlSGFuZGxlciogVHlwZUhhbmRsZXIgPSBOVUxMOworICAgIGNtc1RhZ1R5cGVIYW5kbGVyIExvY2FsVHlwZUhhbmRsZXI7CisgICAgY21zVGFnRGVzY3JpcHRvciogVGFnRGVzY3JpcHRvciA9IE5VTEw7CisgICAgY21zVUludDMyTnVtYmVyIHJjOworICAgIGNtc1VJbnQzMk51bWJlciBPZmZzZXQsIFRhZ1NpemU7CisKKyAgICBpZiAoIV9jbXNMb2NrTXV0ZXgoSWNjLT5Db250ZXh0SUQsIEljYyAtPlVzck11dGV4KSkgcmV0dXJuIDA7CisKKyAgICAvLyBTZWFyY2ggZm9yIGdpdmVuIHRhZyBpbiBJQ0MgcHJvZmlsZSBkaXJlY3RvcnkKKyAgICBpID0gX2Ntc1NlYXJjaFRhZyhJY2MsIHNpZywgVFJVRSk7CisgICAgaWYgKGkgPCAwKSBnb3RvIEVycm9yOyAgICAgICAgICAgICAgICAgLy8gTm90IGZvdW5kLCAKKworICAgIC8vIEl0IGlzIGFscmVhZHkgcmVhZD8KKyAgICBpZiAoSWNjIC0+IFRhZ1B0cnNbaV0gPT0gTlVMTCkgeworCisgICAgICAgIC8vIE5vIHlldCwgZ2V0IG9yaWdpbmFsIHBvc2l0aW9uCisgICAgICAgIE9mZnNldCAgID0gSWNjIC0+VGFnT2Zmc2V0c1tpXTsKKyAgICAgICAgVGFnU2l6ZSAgPSBJY2MgLT5UYWdTaXplc1tpXTsKKworICAgICAgICAvLyByZWFkIHRoZSBkYXRhIGRpcmVjdGx5LCBkb24ndCBrZWVwIGNvcHkKKyAgICAgICAgaWYgKGRhdGEgIT0gTlVMTCkgeworCisgICAgICAgICAgICBpZiAoQnVmZmVyU2l6ZSA8IFRhZ1NpemUpCisgICAgICAgICAgICAgICAgVGFnU2l6ZSA9IEJ1ZmZlclNpemU7CisKKyAgICAgICAgICAgIGlmICghSWNjIC0+SU9oYW5kbGVyIC0+U2VlayhJY2MgLT5JT2hhbmRsZXIsIE9mZnNldCkpIGdvdG8gRXJyb3I7CisgICAgICAgICAgICBpZiAoIUljYyAtPklPaGFuZGxlciAtPlJlYWQoSWNjIC0+SU9oYW5kbGVyLCBkYXRhLCAxLCBUYWdTaXplKSkgZ290byBFcnJvcjsKKworICAgICAgICAgICAgX2Ntc1VubG9ja011dGV4KEljYy0+Q29udGV4dElELCBJY2MgLT5Vc3JNdXRleCk7CisgICAgICAgICAgICByZXR1cm4gVGFnU2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIF9jbXNVbmxvY2tNdXRleChJY2MtPkNvbnRleHRJRCwgSWNjIC0+VXNyTXV0ZXgpOworICAgICAgICByZXR1cm4gSWNjIC0+VGFnU2l6ZXNbaV07CisgICAgfQorCisgICAgLy8gVGhlIGRhdGEgaGFzIGJlZW4gYWxyZWFkeSByZWFkLCBvciB3cml0dGVuLiBCdXQgd2FpdCEsIG1heWJlIHRoZSB1c2VyIGNob29zZWQgdG8gc2F2ZSBhcworICAgIC8vIHJhdyBkYXRhLiBJbiB0aGlzIGNhc2UsIHJldHVybiB0aGUgcmF3IGRhdGEgZGlyZWN0bHkKKyAgICBpZiAoSWNjIC0+VGFnU2F2ZUFzUmF3W2ldKSB7CisKKyAgICAgICAgaWYgKGRhdGEgIT0gTlVMTCkgIHsKKworICAgICAgICAgICAgVGFnU2l6ZSAgPSBJY2MgLT5UYWdTaXplc1tpXTsKKyAgICAgICAgICAgIGlmIChCdWZmZXJTaXplIDwgVGFnU2l6ZSkKKyAgICAgICAgICAgICAgICBUYWdTaXplID0gQnVmZmVyU2l6ZTsKKworICAgICAgICAgICAgbWVtbW92ZShkYXRhLCBJY2MgLT5UYWdQdHJzW2ldLCBUYWdTaXplKTsKKworICAgICAgICAgICAgX2Ntc1VubG9ja011dGV4KEljYy0+Q29udGV4dElELCBJY2MgLT5Vc3JNdXRleCk7CisgICAgICAgICAgICByZXR1cm4gVGFnU2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIF9jbXNVbmxvY2tNdXRleChJY2MtPkNvbnRleHRJRCwgSWNjIC0+VXNyTXV0ZXgpOworICAgICAgICByZXR1cm4gSWNjIC0+VGFnU2l6ZXNbaV07CisgICAgfQorCisgICAgLy8gQWxyZWFkeSByZWFkZWQsIG9yIHByZXZpb3VzbHkgc2V0IGJ5IGNtc1dyaXRlVGFnKCkuIFdlIG5lZWQgdG8gc2VyaWFsaXplIHRoYXQKKyAgICAvLyBkYXRhIHRvIHJhdyBpbiBvcmRlciB0byBtYWludGFpbiBjb25zaXN0ZW5jeS4KKworICAgIF9jbXNVbmxvY2tNdXRleChJY2MtPkNvbnRleHRJRCwgSWNjIC0+VXNyTXV0ZXgpOworICAgIE9iamVjdCA9IGNtc1JlYWRUYWcoaFByb2ZpbGUsIHNpZyk7CisgICAgaWYgKCFfY21zTG9ja011dGV4KEljYy0+Q29udGV4dElELCBJY2MgLT5Vc3JNdXRleCkpIHJldHVybiAwOworCisgICAgaWYgKE9iamVjdCA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgLy8gTm93IHdlIG5lZWQgdG8gc2VyaWFsaXplIHRvIGEgbWVtb3J5IGJsb2NrOiBqdXN0IHVzZSBhIG1lbW9yeSBpb2hhbmRsZXIKKworICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgTWVtSU8gPSBjbXNPcGVuSU9oYW5kbGVyRnJvbU5VTEwoY21zR2V0UHJvZmlsZUNvbnRleHRJRChoUHJvZmlsZSkpOworICAgIH0gZWxzZXsKKyAgICAgICAgTWVtSU8gPSBjbXNPcGVuSU9oYW5kbGVyRnJvbU1lbShjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlKSwgZGF0YSwgQnVmZmVyU2l6ZSwgInciKTsKKyAgICB9CisgICAgaWYgKE1lbUlPID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBPYnRhaW4gdHlwZSBoYW5kbGluZyBmb3IgdGhlIHRhZworICAgIFR5cGVIYW5kbGVyID0gSWNjIC0+VGFnVHlwZUhhbmRsZXJzW2ldOworICAgIFRhZ0Rlc2NyaXB0b3IgPSBfY21zR2V0VGFnRGVzY3JpcHRvcihJY2MtPiBDb250ZXh0SUQsIHNpZyk7CisgICAgaWYgKFRhZ0Rlc2NyaXB0b3IgPT0gTlVMTCkgeworICAgICAgICBjbXNDbG9zZUlPaGFuZGxlcihNZW1JTyk7CisgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorICAgIAorICAgIGlmIChUeXBlSGFuZGxlciA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgLy8gU2VyaWFsaXplCisgICAgTG9jYWxUeXBlSGFuZGxlciA9ICpUeXBlSGFuZGxlcjsKKyAgICBMb2NhbFR5cGVIYW5kbGVyLkNvbnRleHRJRCAgPSBJY2MgLT5Db250ZXh0SUQ7CisgICAgTG9jYWxUeXBlSGFuZGxlci5JQ0NWZXJzaW9uID0gSWNjIC0+VmVyc2lvbjsKKworICAgIGlmICghX2Ntc1dyaXRlVHlwZUJhc2UoTWVtSU8sIFR5cGVIYW5kbGVyIC0+U2lnbmF0dXJlKSkgeworICAgICAgICBjbXNDbG9zZUlPaGFuZGxlcihNZW1JTyk7CisgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgaWYgKCFMb2NhbFR5cGVIYW5kbGVyLldyaXRlUHRyKCZMb2NhbFR5cGVIYW5kbGVyLCBNZW1JTywgT2JqZWN0LCBUYWdEZXNjcmlwdG9yIC0+RWxlbUNvdW50KSkgeworICAgICAgICBjbXNDbG9zZUlPaGFuZGxlcihNZW1JTyk7CisgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgLy8gR2V0IFNpemUgYW5kIGNsb3NlCisgICAgcmMgPSBNZW1JTyAtPlRlbGwoTWVtSU8pOworICAgIGNtc0Nsb3NlSU9oYW5kbGVyKE1lbUlPKTsgICAgICAvLyBJZ25vcmUgcmV0dXJuIGNvZGUgdGhpcyB0aW1lCisKKyAgICBfY21zVW5sb2NrTXV0ZXgoSWNjLT5Db250ZXh0SUQsIEljYyAtPlVzck11dGV4KTsKKyAgICByZXR1cm4gcmM7CisKK0Vycm9yOgorICAgIF9jbXNVbmxvY2tNdXRleChJY2MtPkNvbnRleHRJRCwgSWNjIC0+VXNyTXV0ZXgpOworICAgIHJldHVybiAwOworfQorCisvLyBTaW1pbGFyIHRvIHRoZSBhbnRlcmlvci4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdG8gd3JpdGUgZGlyZWN0bHkgdG8gdGhlIElDQyBwcm9maWxlIGFueSBkYXRhLCB3aXRob3V0CisvLyBjaGVja2luZyBhbnl0aGluZy4gQXMgYSBydWxlLCBtaXhpbmcgUmF3IHdpdGggY29va2VkIGRvZXNuJ3Qgd29yaywgc28gd3JpdHRpbmcgYSB0YWcgYXMgcmF3IGFuZCB0aGVuIHJlYWRpbmcKKy8vIGl0IGFzIGNvb2tlZCB3aXRob3V0IHNlcmlhbGl6aW5nIGRvZXMgcmVzdWx0IGludG8gYW4gZXJyb3IuIElmIHRoYXQgaXMgd2hhIHlvdSB3YW50LCB5b3Ugd2lsbCBuZWVkIHRvIGR1bXAKKy8vIHRoZSBwcm9maWxlIHRvIG1lbXJ5IG9yIGRpc2sgYW5kIHRoZW4gcmVvcGVuIGl0LgorY21zQm9vbCBDTVNFWFBPUlQgY21zV3JpdGVSYXdUYWcoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1RhZ1NpZ25hdHVyZSBzaWcsIGNvbnN0IHZvaWQqIGRhdGEsIGNtc1VJbnQzMk51bWJlciBTaXplKQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICBpbnQgaTsKKworICAgIGlmICghX2Ntc0xvY2tNdXRleChJY2MtPkNvbnRleHRJRCwgSWNjIC0+VXNyTXV0ZXgpKSByZXR1cm4gMDsKKworICAgIGlmICghX2Ntc05ld1RhZyhJY2MsIHNpZywgJmkpKSB7CisgICAgICAgIF9jbXNVbmxvY2tNdXRleChJY2MtPkNvbnRleHRJRCwgSWNjIC0+VXNyTXV0ZXgpOworICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIC8vIE1hcmsgdGhlIHRhZyBhcyBiZWluZyB3cml0dGVuIGFzIFJBVworICAgIEljYyAtPlRhZ1NhdmVBc1Jhd1tpXSA9IFRSVUU7CisgICAgSWNjIC0+VGFnTmFtZXNbaV0gICAgID0gc2lnOworICAgIEljYyAtPlRhZ0xpbmtlZFtpXSAgICA9IChjbXNUYWdTaWduYXR1cmUpIDA7CisKKyAgICAvLyBLZWVwIGEgY29weSBvZiB0aGUgYmxvY2sKKyAgICBJY2MgLT5UYWdQdHJzW2ldICA9IF9jbXNEdXBNZW0oSWNjIC0+Q29udGV4dElELCBkYXRhLCBTaXplKTsKKyAgICBJY2MgLT5UYWdTaXplc1tpXSA9IFNpemU7CisKKyAgICBfY21zVW5sb2NrTXV0ZXgoSWNjLT5Db250ZXh0SUQsIEljYyAtPlVzck11dGV4KTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gVXNpbmcgdGhpcyBmdW5jdGlvbiB5b3UgY2FuIGNvbGxhcHNlIHNldmVyYWwgdGFnIGVudHJpZXMgdG8gdGhlIHNhbWUgYmxvY2sgaW4gdGhlIHByb2ZpbGUKK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc0xpbmtUYWcoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1RhZ1NpZ25hdHVyZSBzaWcsIGNtc1RhZ1NpZ25hdHVyZSBkZXN0KQoreworICAgIF9jbXNJQ0NQUk9GSUxFKiBJY2MgPSAoX2Ntc0lDQ1BST0ZJTEUqKSBoUHJvZmlsZTsKKyAgICBpbnQgaTsKKworICAgICBpZiAoIV9jbXNMb2NrTXV0ZXgoSWNjLT5Db250ZXh0SUQsIEljYyAtPlVzck11dGV4KSkgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKCFfY21zTmV3VGFnKEljYywgc2lnLCAmaSkpIHsKKyAgICAgICAgX2Ntc1VubG9ja011dGV4KEljYy0+Q29udGV4dElELCBJY2MgLT5Vc3JNdXRleCk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBLZWVwIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbgorICAgIEljYyAtPlRhZ1NhdmVBc1Jhd1tpXSA9IEZBTFNFOworICAgIEljYyAtPlRhZ05hbWVzW2ldICAgICA9IHNpZzsKKyAgICBJY2MgLT5UYWdMaW5rZWRbaV0gICAgPSBkZXN0OworCisgICAgSWNjIC0+VGFnUHRyc1tpXSAgICA9IE5VTEw7CisgICAgSWNjIC0+VGFnU2l6ZXNbaV0gICA9IDA7CisgICAgSWNjIC0+VGFnT2Zmc2V0c1tpXSA9IDA7CisKKyAgICBfY21zVW5sb2NrTXV0ZXgoSWNjLT5Db250ZXh0SUQsIEljYyAtPlVzck11dGV4KTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworCisvLyBSZXR1cm5zIHRoZSB0YWcgbGlua2VkIHRvIHNpZywgaW4gdGhlIGNhc2UgdHdvIHRhZ3MgYXJlIHNoYXJpbmcgc2FtZSByZXNvdXJjZQorY21zVGFnU2lnbmF0dXJlICBDTVNFWFBPUlQgY21zVGFnTGlua2VkVG8oY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1RhZ1NpZ25hdHVyZSBzaWcpCit7CisgICAgX2Ntc0lDQ1BST0ZJTEUqIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIGludCBpOworCisgICAgLy8gU2VhcmNoIGZvciBnaXZlbiB0YWcgaW4gSUNDIHByb2ZpbGUgZGlyZWN0b3J5CisgICAgaSA9IF9jbXNTZWFyY2hUYWcoSWNjLCBzaWcsIEZBTFNFKTsKKyAgICBpZiAoaSA8IDApIHJldHVybiAoY21zVGFnU2lnbmF0dXJlKSAwOyAgICAgICAgICAgICAgICAgLy8gTm90IGZvdW5kLCByZXR1cm4gMAorCisgICAgcmV0dXJuIEljYyAtPiBUYWdMaW5rZWRbaV07Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zaW8xLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zaW8xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc4YWEyYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNpbzEuYwpAQCAtMCwwICsxLDEwMjAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gIExpdHRsZSBDb2xvciBNYW5hZ2VtZW50IFN5c3RlbQorLy8gIENvcHlyaWdodCAoYykgMTk5OC0yMDEyIE1hcnRpIE1hcmlhIFNhZ3VlcgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworLy8gYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisvLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUKKy8vIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPCisvLyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorLy8gTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorLy8gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisvLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKworI2luY2x1ZGUgImxjbXMyX2ludGVybmFsLmgiCisKKy8vIFJlYWQgdGFncyB1c2luZyBsb3ctbGV2ZWwgZnVuY3Rpb25zLCBwcm92aWRlcyBuZWNlc3NhcnkgZ2x1ZSBjb2RlIHRvIGFkYXB0IHZlcnNpb25zLCBldGMuCisKKy8vIExVVCB0YWdzCitzdGF0aWMgY29uc3QgY21zVGFnU2lnbmF0dXJlIERldmljZTJQQ1MxNltdICAgPSAge2Ntc1NpZ0FUb0IwVGFnLCAgICAgLy8gUGVyY2VwdHVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNTaWdBVG9CMVRhZywgICAgIC8vIFJlbGF0aXZlIGNvbG9yaW1ldHJpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNTaWdBVG9CMlRhZywgICAgIC8vIFNhdHVyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zU2lnQVRvQjFUYWcgfTsgICAvLyBBYnNvbHV0ZSBjb2xvcmltZXRyaWMKKworc3RhdGljIGNvbnN0IGNtc1RhZ1NpZ25hdHVyZSBEZXZpY2UyUENTRmxvYXRbXSA9IHtjbXNTaWdEVG9CMFRhZywgICAgIC8vIFBlcmNlcHR1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zU2lnRFRvQjFUYWcsICAgICAvLyBSZWxhdGl2ZSBjb2xvcmltZXRyaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zU2lnRFRvQjJUYWcsICAgICAvLyBTYXR1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1NpZ0RUb0IzVGFnIH07ICAgLy8gQWJzb2x1dGUgY29sb3JpbWV0cmljCisKK3N0YXRpYyBjb25zdCBjbXNUYWdTaWduYXR1cmUgUENTMkRldmljZTE2W10gICAgPSB7Y21zU2lnQlRvQTBUYWcsICAgICAvLyBQZXJjZXB0dWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1NpZ0JUb0ExVGFnLCAgICAgLy8gUmVsYXRpdmUgY29sb3JpbWV0cmljCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1NpZ0JUb0EyVGFnLCAgICAgLy8gU2F0dXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNTaWdCVG9BMVRhZyB9OyAgIC8vIEFic29sdXRlIGNvbG9yaW1ldHJpYworCitzdGF0aWMgY29uc3QgY21zVGFnU2lnbmF0dXJlIFBDUzJEZXZpY2VGbG9hdFtdID0ge2Ntc1NpZ0JUb0QwVGFnLCAgICAgLy8gUGVyY2VwdHVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNTaWdCVG9EMVRhZywgICAgIC8vIFJlbGF0aXZlIGNvbG9yaW1ldHJpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNTaWdCVG9EMlRhZywgICAgIC8vIFNhdHVyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zU2lnQlRvRDNUYWcgfTsgICAvLyBBYnNvbHV0ZSBjb2xvcmltZXRyaWMKKworCisvLyBGYWN0b3JzIHRvIGNvbnZlcnQgZnJvbSAxLjE1IGZpeGVkIHBvaW50IHRvIDAuLjEuMCByYW5nZSBhbmQgdmljZS12ZXJzYQorI2RlZmluZSBJbnBBZGogICAoMS4wL01BWF9FTkNPREVBQkxFX1hZWikgICAgIC8vICg2NTUzNi4wLyg2NTUzNS4wKjIuMCkpCisjZGVmaW5lIE91dHBBZGogIChNQVhfRU5DT0RFQUJMRV9YWVopICAgICAgICAgLy8gKCgyLjAqNjU1MzUuMCkvNjU1MzYuMCkKKworLy8gU2V2ZXJhbCByZXNvdXJjZXMgZm9yIGdyYXkgY29udmVyc2lvbnMuCitzdGF0aWMgY29uc3QgY21zRmxvYXQ2NE51bWJlciBHcmF5SW5wdXRNYXRyaXhbXSA9IHsgKElucEFkaipjbXNENTBYKSwgIChJbnBBZGoqY21zRDUwWSksICAoSW5wQWRqKmNtc0Q1MFopIH07CitzdGF0aWMgY29uc3QgY21zRmxvYXQ2NE51bWJlciBPbmVUb1RocmVlSW5wdXRNYXRyaXhbXSA9IHsgMSwgMSwgMSB9Oworc3RhdGljIGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIgUGlja1lNYXRyaXhbXSA9IHsgMCwgKE91dHBBZGoqY21zRDUwWSksIDAgfTsKK3N0YXRpYyBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIFBpY2tMc3Rhck1hdHJpeFtdID0geyAxLCAwLCAwIH07CisKKy8vIEdldCBhIG1lZGlhIHdoaXRlIHBvaW50IGZpeGluZyBzb21lIGlzc3VlcyBmb3VuZCBpbiBjZXJ0YWluIG9sZCBwcm9maWxlcworY21zQm9vbCAgX2Ntc1JlYWRNZWRpYVdoaXRlUG9pbnQoY21zQ0lFWFlaKiBEZXN0LCBjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICBjbXNDSUVYWVoqIFRhZzsKKworICAgIF9jbXNBc3NlcnQoRGVzdCAhPSBOVUxMKTsKKworICAgIFRhZyA9IChjbXNDSUVYWVoqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCBjbXNTaWdNZWRpYVdoaXRlUG9pbnRUYWcpOworCisgICAgLy8gSWYgbm8gd3AsIHRha2UgRDUwCisgICAgaWYgKFRhZyA9PSBOVUxMKSB7CisgICAgICAgICpEZXN0ID0gKmNtc0Q1MF9YWVooKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgLy8gVjIgZGlzcGxheSBwcm9maWxlcyBzaG91bGQgZ2l2ZSBENTAKKyAgICBpZiAoY21zR2V0RW5jb2RlZElDQ3ZlcnNpb24oaFByb2ZpbGUpIDwgMHg0MDAwMDAwKSB7CisKKyAgICAgICAgaWYgKGNtc0dldERldmljZUNsYXNzKGhQcm9maWxlKSA9PSBjbXNTaWdEaXNwbGF5Q2xhc3MpIHsKKyAgICAgICAgICAgICpEZXN0ID0gKmNtc0Q1MF9YWVooKTsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQWxsIHNlZW1zIG9rCisgICAgKkRlc3QgPSAqVGFnOworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIENocm9tYXRpYyBhZGFwdGF0aW9uIG1hdHJpeC4gRml4IHNvbWUgaXNzdWVzIGFzIHdlbGwKK2Ntc0Jvb2wgIF9jbXNSZWFkQ0hBRChjbXNNQVQzKiBEZXN0LCBjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICBjbXNNQVQzKiBUYWc7CisKKyAgICBfY21zQXNzZXJ0KERlc3QgIT0gTlVMTCk7CisKKyAgICBUYWcgPSAoY21zTUFUMyopIGNtc1JlYWRUYWcoaFByb2ZpbGUsIGNtc1NpZ0Nocm9tYXRpY0FkYXB0YXRpb25UYWcpOworCisgICAgaWYgKFRhZyAhPSBOVUxMKSB7CisgICAgICAgICpEZXN0ID0gKlRhZzsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgLy8gTm8gQ0hBRCBhdmFpbGFibGUsIGRlZmF1bHQgaXQgdG8gaWRlbnRpdHkKKyAgICBfY21zTUFUM2lkZW50aXR5KERlc3QpOworCisgICAgLy8gVjIgZGlzcGxheSBwcm9maWxlcyBzaG91bGQgZ2l2ZSBENTAKKyAgICBpZiAoY21zR2V0RW5jb2RlZElDQ3ZlcnNpb24oaFByb2ZpbGUpIDwgMHg0MDAwMDAwKSB7CisKKyAgICAgICAgaWYgKGNtc0dldERldmljZUNsYXNzKGhQcm9maWxlKSA9PSBjbXNTaWdEaXNwbGF5Q2xhc3MpIHsKKworICAgICAgICAgICAgY21zQ0lFWFlaKiBXaGl0ZSA9IChjbXNDSUVYWVoqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCBjbXNTaWdNZWRpYVdoaXRlUG9pbnRUYWcpOworCisgICAgICAgICAgICBpZiAoV2hpdGUgPT0gTlVMTCkgeworCisgICAgICAgICAgICAgICAgX2Ntc01BVDNpZGVudGl0eShEZXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIF9jbXNBZGFwdGF0aW9uTWF0cml4KERlc3QsIE5VTEwsIFdoaXRlLCBjbXNENTBfWFlaKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworLy8gQXV4aWxpYXIsIHJlYWQgY29sb3JhbnRzIGFzIGEgTUFUMyBzdHJ1Y3R1cmUuIFVzZWQgYnkgYW55IGZ1bmN0aW9uIHRoYXQgbmVlZHMgYSBtYXRyaXgtc2hhcGVyCitzdGF0aWMKK2Ntc0Jvb2wgUmVhZElDQ01hdHJpeFJHQjJYWVooY21zTUFUMyogciwgY21zSFBST0ZJTEUgaFByb2ZpbGUpCit7CisgICAgY21zQ0lFWFlaICpQdHJSZWQsICpQdHJHcmVlbiwgKlB0ckJsdWU7CisKKyAgICBfY21zQXNzZXJ0KHIgIT0gTlVMTCk7CisKKyAgICBQdHJSZWQgICA9IChjbXNDSUVYWVogKikgY21zUmVhZFRhZyhoUHJvZmlsZSwgY21zU2lnUmVkQ29sb3JhbnRUYWcpOworICAgIFB0ckdyZWVuID0gKGNtc0NJRVhZWiAqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCBjbXNTaWdHcmVlbkNvbG9yYW50VGFnKTsKKyAgICBQdHJCbHVlICA9IChjbXNDSUVYWVogKikgY21zUmVhZFRhZyhoUHJvZmlsZSwgY21zU2lnQmx1ZUNvbG9yYW50VGFnKTsKKworICAgIGlmIChQdHJSZWQgPT0gTlVMTCB8fCBQdHJHcmVlbiA9PSBOVUxMIHx8IFB0ckJsdWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgX2Ntc1ZFQzNpbml0KCZyIC0+IHZbMF0sIFB0clJlZCAtPiBYLCBQdHJHcmVlbiAtPiBYLCAgUHRyQmx1ZSAtPiBYKTsKKyAgICBfY21zVkVDM2luaXQoJnIgLT4gdlsxXSwgUHRyUmVkIC0+IFksIFB0ckdyZWVuIC0+IFksICBQdHJCbHVlIC0+IFkpOworICAgIF9jbXNWRUMzaW5pdCgmciAtPiB2WzJdLCBQdHJSZWQgLT4gWiwgUHRyR3JlZW4gLT4gWiwgIFB0ckJsdWUgLT4gWik7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworCisvLyBHcmF5IGlucHV0IHBpcGVsaW5lCitzdGF0aWMKK2Ntc1BpcGVsaW5lKiBCdWlsZEdyYXlJbnB1dE1hdHJpeFBpcGVsaW5lKGNtc0hQUk9GSUxFIGhQcm9maWxlKQoreworICAgIGNtc1RvbmVDdXJ2ZSAqR3JheVRSQzsKKyAgICBjbXNQaXBlbGluZSogTHV0OworICAgIGNtc0NvbnRleHQgQ29udGV4dElEID0gY21zR2V0UHJvZmlsZUNvbnRleHRJRChoUHJvZmlsZSk7CisKKyAgICBHcmF5VFJDID0gKGNtc1RvbmVDdXJ2ZSAqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCBjbXNTaWdHcmF5VFJDVGFnKTsKKyAgICBpZiAoR3JheVRSQyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIEx1dCA9IGNtc1BpcGVsaW5lQWxsb2MoQ29udGV4dElELCAxLCAzKTsKKyAgICBpZiAoTHV0ID09IE5VTEwpCisgICAgICAgIGdvdG8gRXJyb3I7CisKKyAgICBpZiAoY21zR2V0UENTKGhQcm9maWxlKSA9PSBjbXNTaWdMYWJEYXRhKSB7CisKKyAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGltcGxlbWVudCB0aGUgcHJvZmlsZSBhcyBhbiAgaWRlbnRpdHkgbWF0cml4IHBsdXMgMyB0b25lIGN1cnZlcworICAgICAgICBjbXNVSW50MTZOdW1iZXIgWmVyb1syXSA9IHsgMHg4MDgwLCAweDgwODAgfTsKKyAgICAgICAgY21zVG9uZUN1cnZlKiBFbXB0eVRhYjsKKyAgICAgICAgY21zVG9uZUN1cnZlKiBMYWJDdXJ2ZXNbM107CisKKyAgICAgICAgRW1wdHlUYWIgPSBjbXNCdWlsZFRhYnVsYXRlZFRvbmVDdXJ2ZTE2KENvbnRleHRJRCwgMiwgWmVybyk7CisKKyAgICAgICAgaWYgKEVtcHR5VGFiID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgIExhYkN1cnZlc1swXSA9IEdyYXlUUkM7CisgICAgICAgIExhYkN1cnZlc1sxXSA9IEVtcHR5VGFiOworICAgICAgICBMYWJDdXJ2ZXNbMl0gPSBFbXB0eVRhYjsKKworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0LCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NNYXRyaXgoQ29udGV4dElELCAzLCAgMSwgT25lVG9UaHJlZUlucHV0TWF0cml4LCBOVUxMKSkgfHwKKyAgICAgICAgICAgICFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBjbXNTdGFnZUFsbG9jVG9uZUN1cnZlcyhDb250ZXh0SUQsIDMsIExhYkN1cnZlcykpKSB7CisgICAgICAgICAgICAgICAgY21zRnJlZVRvbmVDdXJ2ZShFbXB0eVRhYik7CisgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGNtc0ZyZWVUb25lQ3VydmUoRW1wdHlUYWIpOworCisgICAgfQorICAgIGVsc2UgIHsKKworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0LCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NUb25lQ3VydmVzKENvbnRleHRJRCwgMSwgJkdyYXlUUkMpKSB8fAorICAgICAgICAgICAgIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0LCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NNYXRyaXgoQ29udGV4dElELCAzLCAgMSwgR3JheUlucHV0TWF0cml4LCBOVUxMKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKworICAgIHJldHVybiBMdXQ7CisKK0Vycm9yOgorCS8vIG1lbW9yeSBwb2ludGVkIGJ5IEdyYXlUUkMgaXMgbm90IGEgbmV3IG1hbGxvYyBtZW1vcnksIHNvIGRvbid0IGZyZWUgaXQgaGVyZSwgCisJLy8gbWVtb3J5IHBvaW50ZWQgYnkgR3JheVRSQyB3aWxsIGJlIGZyZWVkIHdoZW4gaFByb2ZpbGUgaXMgY2xvc2VkLgorCS8vIHRlc3QgZmlsZSA6MDA0Nzc3Nl9Qb2NrZXQgTWVkaWNpbmVfIFRoZSBNYXNzYWNodXNldHRzIEdlbmVyYWwgSG9zcGl0YWwgSGFuZGJvb2sgb2YgSW50ZXJuYWwgTWVkaWNpbmUtMi5wZGYKKwkvLyBYaWFvY2h1YW4gTGl1LCAyMDE0MDQyMQorICAgIC8vY21zRnJlZVRvbmVDdXJ2ZShHcmF5VFJDKTsKKyAgICBjbXNQaXBlbGluZUZyZWUoTHV0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLy8gUkdCIE1hdHJpeCBzaGFwZXIKK3N0YXRpYworY21zUGlwZWxpbmUqIEJ1aWxkUkdCSW5wdXRNYXRyaXhTaGFwZXIoY21zSFBST0ZJTEUgaFByb2ZpbGUpCit7CisgICAgY21zUGlwZWxpbmUqIEx1dDsKKyAgICBjbXNNQVQzIE1hdDsKKyAgICBjbXNUb25lQ3VydmUgKlNoYXBlc1szXTsKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRCA9IGNtc0dldFByb2ZpbGVDb250ZXh0SUQoaFByb2ZpbGUpOworICAgIGludCBpLCBqOworCisgICAgaWYgKCFSZWFkSUNDTWF0cml4UkdCMlhZWigmTWF0LCBoUHJvZmlsZSkpIHJldHVybiBOVUxMOworCisgICAgLy8gWFlaIFBDUyBpbiBlbmNvZGVkIGluIDEuMTUgZm9ybWF0LCBhbmQgdGhlIG1hdHJpeCBvdXRwdXQgY29tZXMgaW4gMC4uMHhmZmZmIHJhbmdlLCBzbworICAgIC8vIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSBvdXRwdXQgYnkgYSBmYWN0b3Igb2YgKDB4MTAwMDAvMHhmZmZmKSB0byBwdXQgZGF0YSBpbgorICAgIC8vIGEgMS4xNiByYW5nZSwgYW5kIHRoZW4gYSA+PiAxIHRvIG9idGFpbiAxLjE1LiBUaGUgdG90YWwgZmFjdG9yIGlzICg2NTUzNi4wKS8oNjU1MzUuMCoyKQorCisgICAgZm9yIChpPTA7IGkgPCAzOyBpKyspCisgICAgICAgIGZvciAoaj0wOyBqIDwgMzsgaisrKQorICAgICAgICAgICAgTWF0LnZbaV0ubltqXSAqPSBJbnBBZGo7CisKKworICAgIFNoYXBlc1swXSA9IChjbXNUb25lQ3VydmUgKikgY21zUmVhZFRhZyhoUHJvZmlsZSwgY21zU2lnUmVkVFJDVGFnKTsKKyAgICBTaGFwZXNbMV0gPSAoY21zVG9uZUN1cnZlICopIGNtc1JlYWRUYWcoaFByb2ZpbGUsIGNtc1NpZ0dyZWVuVFJDVGFnKTsKKyAgICBTaGFwZXNbMl0gPSAoY21zVG9uZUN1cnZlICopIGNtc1JlYWRUYWcoaFByb2ZpbGUsIGNtc1NpZ0JsdWVUUkNUYWcpOworCisgICAgaWYgKCFTaGFwZXNbMF0gfHwgIVNoYXBlc1sxXSB8fCAhU2hhcGVzWzJdKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEx1dCA9IGNtc1BpcGVsaW5lQWxsb2MoQ29udGV4dElELCAzLCAzKTsKKyAgICBpZiAoTHV0ICE9IE5VTEwpIHsKKworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0LCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NUb25lQ3VydmVzKENvbnRleHRJRCwgMywgU2hhcGVzKSkgfHwKKyAgICAgICAgICAgICFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBjbXNTdGFnZUFsbG9jTWF0cml4KENvbnRleHRJRCwgMywgMywgKGNtc0Zsb2F0NjROdW1iZXIqKSAmTWF0LCBOVUxMKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgIC8vIE5vdGUgdGhhdCBpdCBpcyBjZXJ0YWlubHkgcG9zc2libGUgYSBzaW5nbGUgcHJvZmlsZSB3b3VsZCBoYXZlIGEgTFVUIGJhc2VkCisgICAgICAgIC8vIHRhZyBmb3Igb3V0cHV0IHdvcmtpbmcgaW4gbGFiIGFuZCBhIG1hdHJpeC1zaGFwZXIgZm9yIHRoZSBmYWxsYmFjayBjYXNlcy4gCisgICAgICAgIC8vIFRoaXMgaXMgbm90IGFsbG93ZWQgYnkgdGhlIHNwZWMsIGJ1dCB0aGlzIGNvZGUgaXMgdG9sZXJhbnQgdG8gdGhvc2UgY2FzZXMgICAgCisgICAgICAgIGlmIChjbXNHZXRQQ1MoaFByb2ZpbGUpID09IGNtc1NpZ0xhYkRhdGEpIHsKKworICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY1hZWjJMYWIoQ29udGV4dElEKSkpCisgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgcmV0dXJuIEx1dDsKKworRXJyb3I6CisgICAgY21zUGlwZWxpbmVGcmVlKEx1dCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworCisvLyBSZWFkIHRoZSBEVG9BWCB0YWcsIGFkanVzdGluZyB0aGUgZW5jb2Rpbmcgb2YgTGFiIG9yIFhZWiBpZiBuZWRlZAorc3RhdGljCitjbXNQaXBlbGluZSogX2Ntc1JlYWRGbG9hdElucHV0VGFnKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNUYWdTaWduYXR1cmUgdGFnRmxvYXQpCit7CisgICAgY21zQ29udGV4dCBDb250ZXh0SUQgICAgICAgPSBjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlKTsKKyAgICBjbXNQaXBlbGluZSogTHV0ICAgICAgICAgICA9IGNtc1BpcGVsaW5lRHVwKChjbXNQaXBlbGluZSopIGNtc1JlYWRUYWcoaFByb2ZpbGUsIHRhZ0Zsb2F0KSk7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBzcGMgPSBjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlKTsKKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIFBDUyA9IGNtc0dldFBDUyhoUHJvZmlsZSk7CisgICAgCisgICAgaWYgKEx1dCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKyAgICAKKyAgICAvLyBpbnB1dCBhbmQgb3V0cHV0IG9mIHRyYW5zZm9ybSBhcmUgaW4gbGNtcyAwLi4xIGVuY29kaW5nLiAgSWYgWFlaIG9yIExhYiBzcGFjZXMgYXJlIHVzZWQsIAorICAgIC8vICB0aGVzZSBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgaW50byB0aGUgYXBwcm9wcmlhdGUgcmFuZ2VzIChMYWIgPSAxMDAsMCwwLCBYWVo9MS4wLDEuMCwxLjApCisgICAgaWYgKCBzcGMgPT0gY21zU2lnTGFiRGF0YSkKKyAgICB7CisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMdXQsIGNtc0FUX0JFR0lOLCBfY21zU3RhZ2VOb3JtYWxpemVUb0xhYkZsb2F0KENvbnRleHRJRCkpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisgICAgZWxzZSBpZiAoc3BjID09IGNtc1NpZ1hZWkRhdGEpCisgICAgeworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0LCBjbXNBVF9CRUdJTiwgX2Ntc1N0YWdlTm9ybWFsaXplVG9YeXpGbG9hdChDb250ZXh0SUQpKSkKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorICAgIAorICAgIGlmICggUENTID09IGNtc1NpZ0xhYkRhdGEpCisgICAgeworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0LCBjbXNBVF9FTkQsIF9jbXNTdGFnZU5vcm1hbGl6ZUZyb21MYWJGbG9hdChDb250ZXh0SUQpKSkKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYoIFBDUyA9PSBjbXNTaWdYWVpEYXRhKQorICAgIHsKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VOb3JtYWxpemVGcm9tWHl6RmxvYXQoQ29udGV4dElEKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gTHV0OworCitFcnJvcjoKKyAgICBjbXNQaXBlbGluZUZyZWUoTHV0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCisvLyBSZWFkIGFuZCBjcmVhdGUgYSBCUkFORCBORVcgTVBFIExVVCBmcm9tIGEgZ2l2ZW4gcHJvZmlsZS4gQWxsIHN0dWZmIGRlcGVuZGVudCBvZiB2ZXJzaW9uLCBldGMKKy8vIGlzIGFkanVzdGVkIGhlcmUgaW4gb3JkZXIgdG8gY3JlYXRlIGEgTFVUIHRoYXQgdGFrZXMgY2FyZSBvZiBhbGwgdGhvc2UgZGV0YWlscy4KKy8vIFdlIGFkZCBpbnRlbnQgPSAtMSBhcyBhIHdheSB0byByZWFkIG1hdHJpeCBzaGFwZXIgYWx3YXlzLCBubyBtYXR0ZXIgb2Ygb3RoZXIgTFVUCitjbXNQaXBlbGluZSogX2Ntc1JlYWRJbnB1dExVVChjbXNIUFJPRklMRSBoUHJvZmlsZSwgaW50IEludGVudCkKK3sKKyAgICBjbXNUYWdUeXBlU2lnbmF0dXJlIE9yaWdpbmFsVHlwZTsKKyAgICBjbXNUYWdTaWduYXR1cmUgdGFnMTYgICAgPSBEZXZpY2UyUENTMTZbSW50ZW50XTsKKyAgICBjbXNUYWdTaWduYXR1cmUgdGFnRmxvYXQgPSBEZXZpY2UyUENTRmxvYXRbSW50ZW50XTsKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRCA9IGNtc0dldFByb2ZpbGVDb250ZXh0SUQoaFByb2ZpbGUpOworCisgICAgLy8gT24gbmFtZWQgY29sb3IsIHRha2UgdGhlIGFwcHJvcGlhdGUgdGFnCisgICAgaWYgKGNtc0dldERldmljZUNsYXNzKGhQcm9maWxlKSA9PSBjbXNTaWdOYW1lZENvbG9yQ2xhc3MpIHsKKworICAgICAgICBjbXNQaXBlbGluZSogTHV0OworICAgICAgICBjbXNOQU1FRENPTE9STElTVCogbmMgPSAoY21zTkFNRURDT0xPUkxJU1QqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCBjbXNTaWdOYW1lZENvbG9yMlRhZyk7CisKKyAgICAgICAgaWYgKG5jID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgICAgIEx1dCA9IGNtc1BpcGVsaW5lQWxsb2MoQ29udGV4dElELCAwLCAwKTsKKyAgICAgICAgaWYgKEx1dCA9PSBOVUxMKSB7CisgICAgICAgICAgICBjbXNGcmVlTmFtZWRDb2xvckxpc3QobmMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0LCBjbXNBVF9CRUdJTiwgX2Ntc1N0YWdlQWxsb2NOYW1lZENvbG9yKG5jLCBUUlVFKSkgfHwKKyAgICAgICAgICAgICFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY0xhYlYyVG9WNChDb250ZXh0SUQpKSkgeworICAgICAgICAgICAgY21zUGlwZWxpbmVGcmVlKEx1dCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTHV0OworICAgIH0KKworICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byByZXVzZSB0aGlzIGZ1bnRpb24gdG8gcmV0cmlldmUgdGhlIG1hdHJpeC1zaGFwZXIgYXMgcGlwZWxpbmUgbm8KKyAgICAvLyBtYXR0ZXIgb3RoZXIgTFVUIGFyZSBwcmVzZW50IGFuZCBoYXZlIHByZWNlZGVuY2UuIEludGVudCA9IC0xIG1lYW5zIGp1c3QgdGhpcy4KKyAgICBpZiAoSW50ZW50ICE9IC0xKSB7CisKKyAgICAgICAgaWYgKGNtc0lzVGFnKGhQcm9maWxlLCB0YWdGbG9hdCkpIHsgIC8vIEZsb2F0IHRhZyB0YWtlcyBwcmVjZWRlbmNlCisKKyAgICAgICAgICAgIC8vIEZsb2F0aW5nIHBvaW50IExVVCBhcmUgYWx3YXlzIFY0LCBidXQgdGhlIGVuY29kaW5nIHJhbmdlIGlzIG5vCisgICAgICAgICAgICAvLyBsb25nZXIgMC4uMS4wLCBzbyB3ZSBuZWVkIHRvIGFkZCBhbiBzdGFnZSBkZXBlbmRpbmcgb24gdGhlIGNvbG9yIHNwYWNlCisgICAgICAgICAgICByZXR1cm4gX2Ntc1JlYWRGbG9hdElucHV0VGFnKGhQcm9maWxlLCB0YWdGbG9hdCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXZlcnQgdG8gcGVyY2VwdHVhbCBpZiBubyB0YWcgaXMgZm91bmQKKyAgICAgICAgaWYgKCFjbXNJc1RhZyhoUHJvZmlsZSwgdGFnMTYpKSB7CisgICAgICAgICAgICB0YWcxNiA9IERldmljZTJQQ1MxNlswXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjbXNJc1RhZyhoUHJvZmlsZSwgdGFnMTYpKSB7IC8vIElzIHRoZXJlIGFueSBMVVQtQmFzZWQgdGFibGU/CisKKyAgICAgICAgICAgIC8vIENoZWNrIHByb2ZpbGUgdmVyc2lvbiBhbmQgTFVUIHR5cGUuIERvIHRoZSBuZWNlc3NhcnkgYWRqdXN0bWVudHMgaWYgbmVlZGVkCisKKyAgICAgICAgICAgIC8vIEZpcnN0IHJlYWQgdGhlIHRhZworICAgICAgICAgICAgY21zUGlwZWxpbmUqIEx1dCA9IChjbXNQaXBlbGluZSopIGNtc1JlYWRUYWcoaFByb2ZpbGUsIHRhZzE2KTsKKyAgICAgICAgICAgIGlmIChMdXQgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgICAgIC8vIEFmdGVyIHJlYWRpbmcgaXQsIHdlIGhhdmUgbm93IGluZm8gYWJvdXQgdGhlIG9yaWdpbmFsIHR5cGUKKyAgICAgICAgICAgIE9yaWdpbmFsVHlwZSA9ICBfY21zR2V0VGFnVHJ1ZVR5cGUoaFByb2ZpbGUsIHRhZzE2KTsKKworICAgICAgICAgICAgLy8gVGhlIHByb2ZpbGUgb3ducyB0aGUgTHV0LCBzbyB3ZSBuZWVkIHRvIGNvcHkgaXQKKyAgICAgICAgICAgIEx1dCA9IGNtc1BpcGVsaW5lRHVwKEx1dCk7CisKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IGRhdGEgb25seSBmb3IgTGFiMTYgb24gb3V0cHV0CisgICAgICAgICAgICBpZiAoT3JpZ2luYWxUeXBlICE9IGNtc1NpZ0x1dDE2VHlwZSB8fCBjbXNHZXRQQ1MoaFByb2ZpbGUpICE9IGNtc1NpZ0xhYkRhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIEx1dDsKKworICAgICAgICAgICAgLy8gSWYgdGhlIGlucHV0IGlzIExhYiwgYWRkIGFsc28gYSBjb252ZXJzaW9uIGF0IHRoZSBiZWdpbgorICAgICAgICAgICAgaWYgKGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGUpID09IGNtc1NpZ0xhYkRhdGEgJiYKKyAgICAgICAgICAgICAgICAhY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMdXQsIGNtc0FUX0JFR0lOLCBfY21zU3RhZ2VBbGxvY0xhYlY0VG9WMihDb250ZXh0SUQpKSkKKyAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgICAgICAvLyBBZGQgYSBtYXRyaXggZm9yIGNvbnZlcnNpb24gVjIgdG8gVjQgTGFiIFBDUworICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY0xhYlYyVG9WNChDb250ZXh0SUQpKSkKKyAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgICAgICByZXR1cm4gTHV0OworRXJyb3I6CisgICAgICAgICAgICBjbXNQaXBlbGluZUZyZWUoTHV0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTHV0IHdhcyBub3QgZm91bmQsIHRyeSB0byBjcmVhdGUgYSBtYXRyaXgtc2hhcGVyCisKKyAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgZ3JheXNjYWxlIHByb2ZpbGUuCisgICAgaWYgKGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGUpID09IGNtc1NpZ0dyYXlEYXRhKSB7CisKKyAgICAgICAgLy8gaWYgc28sIGJ1aWxkIGFwcHJvcGlhdGUgY29udmVyc2lvbiB0YWJsZXMuCisgICAgICAgIC8vIFRoZSB0YWJsZXMgYXJlIHRoZSBQQ1MgaWx1bWluYW50LCBzY2FsZWQgYWNyb3NzIEdyYXlUUkMKKyAgICAgICAgcmV0dXJuIEJ1aWxkR3JheUlucHV0TWF0cml4UGlwZWxpbmUoaFByb2ZpbGUpOworICAgIH0KKworICAgIC8vIE5vdCBncmF5LCBjcmVhdGUgYSBub3JtYWwgbWF0cml4LXNoYXBlcgorICAgIHJldHVybiBCdWlsZFJHQklucHV0TWF0cml4U2hhcGVyKGhQcm9maWxlKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEdyYXkgb3V0cHV0IHBpcGVsaW5lLgorLy8gWFlaIC0+IEdyYXkgb3IgTGFiIC0+IEdyYXkuIFNpbmNlIHdlIG9ubHkga25vdyB0aGUgR3JheVRSQywgd2UgbmVlZCB0byBkbyBzb21lIGFzc3VtcHRpb25zLiBHcmF5IGNvbXBvbmVudCB3aWxsIGJlCisvLyBnaXZlbiBieSBZIG9uIFhZWiBQQ1MgYW5kIGJ5IEwqIG9uIExhYiBQQ1MsIEJvdGggYWNyb3NzIGludmVyc2UgVFJDIGN1cnZlLgorLy8gVGhlIGNvbXBsZXRlIHBpcGVsaW5lIG9uIFhZWiBpcyBNYXRyaXhbMzoxXSAtPiBUb25lIGN1cnZlIGFuZCBpbiBMYWIgTWF0cml4WzM6MV0gLT4gVG9uZSBDdXJ2ZSBhcyB3ZWxsLgorCitzdGF0aWMKK2Ntc1BpcGVsaW5lKiBCdWlsZEdyYXlPdXRwdXRQaXBlbGluZShjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICBjbXNUb25lQ3VydmUgKkdyYXlUUkMsICpSZXZHcmF5VFJDOworICAgIGNtc1BpcGVsaW5lKiBMdXQ7CisgICAgY21zQ29udGV4dCBDb250ZXh0SUQgPSBjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlKTsKKworICAgIEdyYXlUUkMgPSAoY21zVG9uZUN1cnZlICopIGNtc1JlYWRUYWcoaFByb2ZpbGUsIGNtc1NpZ0dyYXlUUkNUYWcpOworICAgIGlmIChHcmF5VFJDID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgUmV2R3JheVRSQyA9IGNtc1JldmVyc2VUb25lQ3VydmUoR3JheVRSQyk7CisgICAgaWYgKFJldkdyYXlUUkMgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBMdXQgPSBjbXNQaXBlbGluZUFsbG9jKENvbnRleHRJRCwgMywgMSk7CisgICAgaWYgKEx1dCA9PSBOVUxMKSB7CisgICAgICAgIGNtc0ZyZWVUb25lQ3VydmUoUmV2R3JheVRSQyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChjbXNHZXRQQ1MoaFByb2ZpbGUpID09IGNtc1NpZ0xhYkRhdGEpIHsKKworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0LCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NNYXRyaXgoQ29udGV4dElELCAxLCAgMywgUGlja0xzdGFyTWF0cml4LCBOVUxMKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKyAgICBlbHNlICB7CisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMdXQsIGNtc0FUX0VORCwgY21zU3RhZ2VBbGxvY01hdHJpeChDb250ZXh0SUQsIDEsICAzLCBQaWNrWU1hdHJpeCwgTlVMTCkpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0LCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NUb25lQ3VydmVzKENvbnRleHRJRCwgMSwgJlJldkdyYXlUUkMpKSkKKyAgICAgICAgZ290byBFcnJvcjsKKworICAgIGNtc0ZyZWVUb25lQ3VydmUoUmV2R3JheVRSQyk7CisgICAgcmV0dXJuIEx1dDsKKworRXJyb3I6CisgICAgY21zRnJlZVRvbmVDdXJ2ZShSZXZHcmF5VFJDKTsKKyAgICBjbXNQaXBlbGluZUZyZWUoTHV0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMKK2Ntc1BpcGVsaW5lKiBCdWlsZFJHQk91dHB1dE1hdHJpeFNoYXBlcihjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICBjbXNQaXBlbGluZSogTHV0OworICAgIGNtc1RvbmVDdXJ2ZSAqU2hhcGVzWzNdLCAqSW52U2hhcGVzWzNdOworICAgIGNtc01BVDMgTWF0LCBJbnY7CisgICAgaW50IGksIGo7CisgICAgY21zQ29udGV4dCBDb250ZXh0SUQgPSBjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlKTsKKworICAgIGlmICghUmVhZElDQ01hdHJpeFJHQjJYWVooJk1hdCwgaFByb2ZpbGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghX2Ntc01BVDNpbnZlcnNlKCZNYXQsICZJbnYpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8vIFhZWiBQQ1MgaW4gZW5jb2RlZCBpbiAxLjE1IGZvcm1hdCwgYW5kIHRoZSBtYXRyaXggaW5wdXQgc2hvdWxkIGNvbWUgaW4gMC4uMHhmZmZmIHJhbmdlLCBzbworICAgIC8vIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSBpbnB1dCBieSBhIDw8IDEgdG8gb2J0YWluIGEgMS4xNiBmaXhlZCBhbmQgdGhlbiBieSBhIGZhY3RvciBvZgorICAgIC8vICgweGZmZmYvMHgxMDAwMCkgdG8gcHV0IGRhdGEgaW4gMC4uMHhmZmZmIHJhbmdlLiBUb3RhbCBmYWN0b3IgaXMgKDIuMCo2NTUzNS4wKS82NTUzNi4wOworCisgICAgZm9yIChpPTA7IGkgPCAzOyBpKyspCisgICAgICAgIGZvciAoaj0wOyBqIDwgMzsgaisrKQorICAgICAgICAgICAgSW52LnZbaV0ubltqXSAqPSBPdXRwQWRqOworCisgICAgU2hhcGVzWzBdID0gKGNtc1RvbmVDdXJ2ZSAqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCBjbXNTaWdSZWRUUkNUYWcpOworICAgIFNoYXBlc1sxXSA9IChjbXNUb25lQ3VydmUgKikgY21zUmVhZFRhZyhoUHJvZmlsZSwgY21zU2lnR3JlZW5UUkNUYWcpOworICAgIFNoYXBlc1syXSA9IChjbXNUb25lQ3VydmUgKikgY21zUmVhZFRhZyhoUHJvZmlsZSwgY21zU2lnQmx1ZVRSQ1RhZyk7CisKKyAgICBpZiAoIVNoYXBlc1swXSB8fCAhU2hhcGVzWzFdIHx8ICFTaGFwZXNbMl0pCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgSW52U2hhcGVzWzBdID0gY21zUmV2ZXJzZVRvbmVDdXJ2ZShTaGFwZXNbMF0pOworICAgIEludlNoYXBlc1sxXSA9IGNtc1JldmVyc2VUb25lQ3VydmUoU2hhcGVzWzFdKTsKKyAgICBJbnZTaGFwZXNbMl0gPSBjbXNSZXZlcnNlVG9uZUN1cnZlKFNoYXBlc1syXSk7CisKKyAgICBpZiAoIUludlNoYXBlc1swXSB8fCAhSW52U2hhcGVzWzFdIHx8ICFJbnZTaGFwZXNbMl0pIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgTHV0ID0gY21zUGlwZWxpbmVBbGxvYyhDb250ZXh0SUQsIDMsIDMpOworICAgIGlmIChMdXQgIT0gTlVMTCkgeworCisgICAgICAgIC8vIE5vdGUgdGhhdCBpdCBpcyBjZXJ0YWlubHkgcG9zc2libGUgYSBzaW5nbGUgcHJvZmlsZSB3b3VsZCBoYXZlIGEgTFVUIGJhc2VkCisgICAgICAgIC8vIHRhZyBmb3Igb3V0cHV0IHdvcmtpbmcgaW4gbGFiIGFuZCBhIG1hdHJpeC1zaGFwZXIgZm9yIHRoZSBmYWxsYmFjayBjYXNlcy4gCisgICAgICAgIC8vIFRoaXMgaXMgbm90IGFsbG93ZWQgYnkgdGhlIHNwZWMsIGJ1dCB0aGlzIGNvZGUgaXMgdG9sZXJhbnQgdG8gdGhvc2UgY2FzZXMgICAgCisgICAgICAgIGlmIChjbXNHZXRQQ1MoaFByb2ZpbGUpID09IGNtc1NpZ0xhYkRhdGEpIHsKKworICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY0xhYjJYWVooQ29udGV4dElEKSkpCisgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMdXQsIGNtc0FUX0VORCwgY21zU3RhZ2VBbGxvY01hdHJpeChDb250ZXh0SUQsIDMsIDMsIChjbXNGbG9hdDY0TnVtYmVyKikgJkludiwgTlVMTCkpIHx8CisgICAgICAgICAgICAhY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMdXQsIGNtc0FUX0VORCwgY21zU3RhZ2VBbGxvY1RvbmVDdXJ2ZXMoQ29udGV4dElELCAzLCBJbnZTaGFwZXMpKSkKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgY21zRnJlZVRvbmVDdXJ2ZVRyaXBsZShJbnZTaGFwZXMpOworICAgIHJldHVybiBMdXQ7CitFcnJvcjoKKyAgICBjbXNGcmVlVG9uZUN1cnZlVHJpcGxlKEludlNoYXBlcyk7CisgICAgY21zUGlwZWxpbmVGcmVlKEx1dCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLy8gQ2hhbmdlIENMVVQgaW50ZXJwb2xhdGlvbiB0byB0cmlsaW5lYXIKK3N0YXRpYwordm9pZCBDaGFuZ2VJbnRlcnBvbGF0aW9uVG9UcmlsaW5lYXIoY21zUGlwZWxpbmUqIEx1dCkKK3sKKyAgICBjbXNTdGFnZSogU3RhZ2U7CisKKyAgICBmb3IgKFN0YWdlID0gY21zUGlwZWxpbmVHZXRQdHJUb0ZpcnN0U3RhZ2UoTHV0KTsKKyAgICAgICAgU3RhZ2UgIT0gTlVMTDsKKyAgICAgICAgU3RhZ2UgPSBjbXNTdGFnZU5leHQoU3RhZ2UpKSB7CisKKyAgICAgICAgICAgIGlmIChjbXNTdGFnZVR5cGUoU3RhZ2UpID09IGNtc1NpZ0NMdXRFbGVtVHlwZSkgeworCisgICAgICAgICAgICAgICAgX2Ntc1N0YWdlQ0x1dERhdGEqIENMVVQgPSAoX2Ntc1N0YWdlQ0x1dERhdGEqKSBTdGFnZSAtPkRhdGE7CisKKyAgICAgICAgICAgICAgICBDTFVUIC0+UGFyYW1zLT5kd0ZsYWdzIHw9IENNU19MRVJQX0ZMQUdTX1RSSUxJTkVBUjsKKyAgICAgICAgICAgICAgICBfY21zU2V0SW50ZXJwb2xhdGlvblJvdXRpbmUoTHV0LT5Db250ZXh0SUQsIENMVVQgLT5QYXJhbXMpOworICAgICAgICAgICAgfQorICAgIH0KK30KKworCisvLyBSZWFkIHRoZSBEVG9BWCB0YWcsIGFkanVzdGluZyB0aGUgZW5jb2Rpbmcgb2YgTGFiIG9yIFhZWiBpZiBuZWRlZAorc3RhdGljCitjbXNQaXBlbGluZSogX2Ntc1JlYWRGbG9hdE91dHB1dFRhZyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVGFnU2lnbmF0dXJlIHRhZ0Zsb2F0KQoreworICAgIGNtc0NvbnRleHQgQ29udGV4dElEICAgICAgID0gY21zR2V0UHJvZmlsZUNvbnRleHRJRChoUHJvZmlsZSk7CisgICAgY21zUGlwZWxpbmUqIEx1dCAgICAgICAgICAgPSBjbXNQaXBlbGluZUR1cCgoY21zUGlwZWxpbmUqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCB0YWdGbG9hdCkpOworICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgUENTID0gY21zR2V0UENTKGhQcm9maWxlKTsKKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIGRhdGFTcGFjZSA9IGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGUpOworICAgIAorICAgIGlmIChMdXQgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisgICAgCisgICAgLy8gSWYgUENTIGlzIExhYiBvciBYWVosIHRoZSBmbG9hdGluZyBwb2ludCB0YWcgaXMgYWNjZXB0aW5nIGRhdGEgaW4gdGhlIHNwYWNlIGVuY29kaW5nLAorICAgIC8vIGFuZCBzaW5jZSB0aGUgZm9ybWF0dGVyIGhhcyBhbHJlYWR5IGFjY29tb2RhdGVkIHRvIDAuLjEuMCwgd2Ugc2hvdWxkIHVuZG8gdGhpcyBjaGFuZ2UKKyAgICBpZiAoIFBDUyA9PSBjbXNTaWdMYWJEYXRhKQorICAgIHsKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfQkVHSU4sIF9jbXNTdGFnZU5vcm1hbGl6ZVRvTGFiRmxvYXQoQ29udGV4dElEKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGlmIChQQ1MgPT0gY21zU2lnWFlaRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfQkVHSU4sIF9jbXNTdGFnZU5vcm1hbGl6ZVRvWHl6RmxvYXQoQ29udGV4dElEKSkpCisgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgfQorICAgIAorICAgIC8vIHRoZSBvdXRwdXQgY2FuIGJlIExhYiBvciBYWVosIGluIHdoaWNoIGNhc2Ugbm9ybWFsaXNhdGlvbiBpcyBuZWVkZWQgb24gdGhlIGVuZCBvZiB0aGUgcGlwZWxpbmUKKyAgICBpZiAoIGRhdGFTcGFjZSA9PSBjbXNTaWdMYWJEYXRhKQorICAgIHsKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VOb3JtYWxpemVGcm9tTGFiRmxvYXQoQ29udGV4dElEKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChkYXRhU3BhY2UgPT0gY21zU2lnWFlaRGF0YSkKKyAgICB7CisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMdXQsIGNtc0FUX0VORCwgX2Ntc1N0YWdlTm9ybWFsaXplRnJvbVh5ekZsb2F0KENvbnRleHRJRCkpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIEx1dDsKKworRXJyb3I6CisgICAgY21zUGlwZWxpbmVGcmVlKEx1dCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vIENyZWF0ZSBhbiBvdXRwdXQgTVBFIExVVCBmcm9tIGFnaXZlbiBwcm9maWxlLiBWZXJzaW9uIG1pc21hdGNoZXMgYXJlIGhhbmRsZWQgaGVyZQorY21zUGlwZWxpbmUqIF9jbXNSZWFkT3V0cHV0TFVUKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBpbnQgSW50ZW50KQoreworICAgIGNtc1RhZ1R5cGVTaWduYXR1cmUgT3JpZ2luYWxUeXBlOworICAgIGNtc1RhZ1NpZ25hdHVyZSB0YWcxNiAgICA9IFBDUzJEZXZpY2UxNltJbnRlbnRdOworICAgIGNtc1RhZ1NpZ25hdHVyZSB0YWdGbG9hdCA9IFBDUzJEZXZpY2VGbG9hdFtJbnRlbnRdOworICAgIGNtc0NvbnRleHQgQ29udGV4dElEICAgICA9IGNtc0dldFByb2ZpbGVDb250ZXh0SUQoaFByb2ZpbGUpOworCisKKyAgICBpZiAoSW50ZW50ICE9IC0xKSB7CisKKyAgICAgICAgaWYgKGNtc0lzVGFnKGhQcm9maWxlLCB0YWdGbG9hdCkpIHsgIC8vIEZsb2F0IHRhZyB0YWtlcyBwcmVjZWRlbmNlCisKKyAgICAgICAgICAgIC8vIEZsb2F0aW5nIHBvaW50IExVVCBhcmUgYWx3YXlzIFY0CisgICAgICAgICAgICByZXR1cm4gX2Ntc1JlYWRGbG9hdE91dHB1dFRhZyhoUHJvZmlsZSwgdGFnRmxvYXQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV2ZXJ0IHRvIHBlcmNlcHR1YWwgaWYgbm8gdGFnIGlzIGZvdW5kCisgICAgICAgIGlmICghY21zSXNUYWcoaFByb2ZpbGUsIHRhZzE2KSkgeworICAgICAgICAgICAgdGFnMTYgPSBQQ1MyRGV2aWNlMTZbMF07CisgICAgICAgIH0KKworICAgICAgICBpZiAoY21zSXNUYWcoaFByb2ZpbGUsIHRhZzE2KSkgeyAvLyBJcyB0aGVyZSBhbnkgTFVULUJhc2VkIHRhYmxlPworCisgICAgICAgICAgICAvLyBDaGVjayBwcm9maWxlIHZlcnNpb24gYW5kIExVVCB0eXBlLiBEbyB0aGUgbmVjZXNzYXJ5IGFkanVzdG1lbnRzIGlmIG5lZWRlZAorCisgICAgICAgICAgICAvLyBGaXJzdCByZWFkIHRoZSB0YWcKKyAgICAgICAgICAgIGNtc1BpcGVsaW5lKiBMdXQgPSAoY21zUGlwZWxpbmUqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCB0YWcxNik7CisgICAgICAgICAgICBpZiAoTHV0ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgICAgICAgICAvLyBBZnRlciByZWFkaW5nIGl0LCB3ZSBoYXZlIGluZm8gYWJvdXQgdGhlIG9yaWdpbmFsIHR5cGUKKyAgICAgICAgICAgIE9yaWdpbmFsVHlwZSA9ICBfY21zR2V0VGFnVHJ1ZVR5cGUoaFByb2ZpbGUsIHRhZzE2KTsKKworICAgICAgICAgICAgLy8gVGhlIHByb2ZpbGUgb3ducyB0aGUgTHV0LCBzbyB3ZSBuZWVkIHRvIGNvcHkgaXQKKyAgICAgICAgICAgIEx1dCA9IGNtc1BpcGVsaW5lRHVwKEx1dCk7CisgICAgICAgICAgICBpZiAoTHV0ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgICAgICAgICAvLyBOb3cgaXQgaXMgdGltZSBmb3IgYSBjb250cm92ZXJzaWFsIHN0dWZmLiBJIGZvdW5kIHRoYXQgZm9yIDNEIExVVFMgdXNpbmcKKyAgICAgICAgICAgIC8vIExhYiB1c2VkIGFzIGluZGV4ZXIgc3BhY2UsICB0cmlsaW5lYXIgaW50ZXJwb2xhdGlvbiBzaG91bGQgYmUgdXNlZAorICAgICAgICAgICAgaWYgKGNtc0dldFBDUyhoUHJvZmlsZSkgPT0gY21zU2lnTGFiRGF0YSkKKyAgICAgICAgICAgICAgICBDaGFuZ2VJbnRlcnBvbGF0aW9uVG9UcmlsaW5lYXIoTHV0KTsKKworICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgZGF0YSBvbmx5IGZvciBMYWIgYW5kIEx1dDE2IHR5cGUKKyAgICAgICAgICAgIGlmIChPcmlnaW5hbFR5cGUgIT0gY21zU2lnTHV0MTZUeXBlIHx8IGNtc0dldFBDUyhoUHJvZmlsZSkgIT0gY21zU2lnTGFiRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTHV0OworCisgICAgICAgICAgICAvLyBBZGQgYSBtYXRyaXggZm9yIGNvbnZlcnNpb24gVjQgdG8gVjIgTGFiIFBDUworICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfQkVHSU4sIF9jbXNTdGFnZUFsbG9jTGFiVjRUb1YyKENvbnRleHRJRCkpKQorICAgICAgICAgICAgICAgIGdvdG8gRXJyb3I7CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBvdXRwdXQgaXMgTGFiLCBhZGQgYWxzbyBhIGNvbnZlcnNpb24gYXQgdGhlIGVuZAorICAgICAgICAgICAgaWYgKGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGUpID09IGNtc1NpZ0xhYkRhdGEpCisgICAgICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY0xhYlYyVG9WNChDb250ZXh0SUQpKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKworICAgICAgICAgICAgcmV0dXJuIEx1dDsKK0Vycm9yOgorICAgICAgICAgICAgY21zUGlwZWxpbmVGcmVlKEx1dCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEx1dCBub3QgZm91bmQsIHRyeSB0byBjcmVhdGUgYSBtYXRyaXgtc2hhcGVyCisKKyAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgZ3JheXNjYWxlIHByb2ZpbGUuCisgICAgaWYgKGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGUpID09IGNtc1NpZ0dyYXlEYXRhKSB7CisKKyAgICAgICAgLy8gaWYgc28sIGJ1aWxkIGFwcHJvcGlhdGUgY29udmVyc2lvbiB0YWJsZXMuCisgICAgICAgIC8vIFRoZSB0YWJsZXMgYXJlIHRoZSBQQ1MgaWx1bWluYW50LCBzY2FsZWQgYWNyb3NzIEdyYXlUUkMKKyAgICAgICAgcmV0dXJuIEJ1aWxkR3JheU91dHB1dFBpcGVsaW5lKGhQcm9maWxlKTsKKyAgICB9CisKKyAgICAvLyBOb3QgZ3JheSwgY3JlYXRlIGEgbm9ybWFsIG1hdHJpeC1zaGFwZXIsIHdoaWNoIG9ubHkgb3BlcmF0ZXMgaW4gWFlaIHNwYWNlICAKKyAgICByZXR1cm4gQnVpbGRSR0JPdXRwdXRNYXRyaXhTaGFwZXIoaFByb2ZpbGUpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUmVhZCB0aGUgQVRvRDAgdGFnLCBhZGp1c3RpbmcgdGhlIGVuY29kaW5nIG9mIExhYiBvciBYWVogaWYgbmVkZWQKK3N0YXRpYworY21zUGlwZWxpbmUqIF9jbXNSZWFkRmxvYXREZXZpY2VsaW5rVGFnKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNUYWdTaWduYXR1cmUgdGFnRmxvYXQpCit7CisgICAgY21zQ29udGV4dCBDb250ZXh0SUQgICAgICAgPSBjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlKTsKKyAgICBjbXNQaXBlbGluZSogTHV0ICAgICAgICAgICA9IGNtc1BpcGVsaW5lRHVwKChjbXNQaXBlbGluZSopIGNtc1JlYWRUYWcoaFByb2ZpbGUsIHRhZ0Zsb2F0KSk7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBQQ1MgPSBjbXNHZXRQQ1MoaFByb2ZpbGUpOworICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgc3BjID0gY21zR2V0Q29sb3JTcGFjZShoUHJvZmlsZSk7CisKKyAgICBpZiAoTHV0ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgaWYgKHNwYyA9PSBjbXNTaWdMYWJEYXRhKQorICAgIHsKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfQkVHSU4sIF9jbXNTdGFnZU5vcm1hbGl6ZVRvTGFiRmxvYXQoQ29udGV4dElEKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGlmIChzcGMgPT0gY21zU2lnWFlaRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfQkVHSU4sIF9jbXNTdGFnZU5vcm1hbGl6ZVRvWHl6RmxvYXQoQ29udGV4dElEKSkpCisgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChQQ1MgPT0gY21zU2lnTGFiRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VOb3JtYWxpemVGcm9tTGFiRmxvYXQoQ29udGV4dElEKSkpCisgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoUENTID09IGNtc1NpZ1hZWkRhdGEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VOb3JtYWxpemVGcm9tWHl6RmxvYXQoQ29udGV4dElEKSkpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICByZXR1cm4gTHV0OworRXJyb3I6CisgICAgY21zUGlwZWxpbmVGcmVlKEx1dCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vIFRoaXMgb25lIGluY2x1ZGVzIGFic3RyYWN0IHByb2ZpbGVzIGFzIHdlbGwuIE1hdHJpeC1zaGFwZXIgY2Fubm90IGJlIG9idGFpbmVkIG9uIHRoYXQgZGV2aWNlIGNsYXNzLiBUaGUKKy8vIHRhZyBuYW1lIGhlcmUgbWF5IGRlZmF1bHQgdG8gQVRvQjAKK2Ntc1BpcGVsaW5lKiBfY21zUmVhZERldmljZWxpbmtMVVQoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGludCBJbnRlbnQpCit7CisgICAgY21zUGlwZWxpbmUqIEx1dDsKKyAgICBjbXNUYWdUeXBlU2lnbmF0dXJlIE9yaWdpbmFsVHlwZTsKKyAgICBjbXNUYWdTaWduYXR1cmUgdGFnMTYgICAgPSBEZXZpY2UyUENTMTZbSW50ZW50XTsKKyAgICBjbXNUYWdTaWduYXR1cmUgdGFnRmxvYXQgPSBEZXZpY2UyUENTRmxvYXRbSW50ZW50XTsKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRCA9IGNtc0dldFByb2ZpbGVDb250ZXh0SUQoaFByb2ZpbGUpOworCisKKyAgICAvLyBPbiBuYW1lZCBjb2xvciwgdGFrZSB0aGUgYXBwcm9waWF0ZSB0YWcKKyAgICBpZiAoY21zR2V0RGV2aWNlQ2xhc3MoaFByb2ZpbGUpID09IGNtc1NpZ05hbWVkQ29sb3JDbGFzcykgeworCisgICAgICAgIGNtc05BTUVEQ09MT1JMSVNUKiBuYyA9IChjbXNOQU1FRENPTE9STElTVCopIGNtc1JlYWRUYWcoaFByb2ZpbGUsIGNtc1NpZ05hbWVkQ29sb3IyVGFnKTsKKworICAgICAgICBpZiAobmMgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgTHV0ID0gY21zUGlwZWxpbmVBbGxvYyhDb250ZXh0SUQsIDAsIDApOworICAgICAgICBpZiAoTHV0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMdXQsIGNtc0FUX0JFR0lOLCBfY21zU3RhZ2VBbGxvY05hbWVkQ29sb3IobmMsIEZBTFNFKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgIGlmIChjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlKSA9PSBjbXNTaWdMYWJEYXRhKQorICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY0xhYlYyVG9WNChDb250ZXh0SUQpKSkKKyAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgIHJldHVybiBMdXQ7CitFcnJvcjoKKyAgICAgICAgY21zUGlwZWxpbmVGcmVlKEx1dCk7CisgICAgICAgIGNtc0ZyZWVOYW1lZENvbG9yTGlzdChuYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChjbXNJc1RhZyhoUHJvZmlsZSwgdGFnRmxvYXQpKSB7ICAvLyBGbG9hdCB0YWcgdGFrZXMgcHJlY2VkZW5jZQorCisgICAgICAgIC8vIEZsb2F0aW5nIHBvaW50IExVVCBhcmUgYWx3YXlzIFYKKyAgICAgICAgcmV0dXJuIF9jbXNSZWFkRmxvYXREZXZpY2VsaW5rVGFnKGhQcm9maWxlLCB0YWdGbG9hdCk7CisgICAgfQorCisgICAgdGFnRmxvYXQgPSBEZXZpY2UyUENTRmxvYXRbMF07CisgICAgaWYgKGNtc0lzVGFnKGhQcm9maWxlLCB0YWdGbG9hdCkpIHsKKworICAgICAgICByZXR1cm4gY21zUGlwZWxpbmVEdXAoKGNtc1BpcGVsaW5lKikgY21zUmVhZFRhZyhoUHJvZmlsZSwgdGFnRmxvYXQpKTsKKyAgICB9CisKKyAgICBpZiAoIWNtc0lzVGFnKGhQcm9maWxlLCB0YWcxNikpIHsgIC8vIElzIHRoZXJlIGFueSBMVVQtQmFzZWQgdGFibGU/CisKKyAgICAgICAgdGFnMTYgICAgPSBEZXZpY2UyUENTMTZbMF07CisgICAgICAgIGlmICghY21zSXNUYWcoaFByb2ZpbGUsIHRhZzE2KSkgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLy8gQ2hlY2sgcHJvZmlsZSB2ZXJzaW9uIGFuZCBMVVQgdHlwZS4gRG8gdGhlIG5lY2Vzc2FyeSBhZGp1c3RtZW50cyBpZiBuZWVkZWQKKworICAgIC8vIFJlYWQgdGhlIHRhZworICAgIEx1dCA9IChjbXNQaXBlbGluZSopIGNtc1JlYWRUYWcoaFByb2ZpbGUsIHRhZzE2KTsKKyAgICBpZiAoTHV0ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgLy8gVGhlIHByb2ZpbGUgb3ducyB0aGUgTHV0LCBzbyB3ZSBuZWVkIHRvIGNvcHkgaXQKKyAgICBMdXQgPSBjbXNQaXBlbGluZUR1cChMdXQpOworICAgIGlmIChMdXQgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICAvLyBOb3cgaXQgaXMgdGltZSBmb3IgYSBjb250cm92ZXJzaWFsIHN0dWZmLiBJIGZvdW5kIHRoYXQgZm9yIDNEIExVVFMgdXNpbmcKKyAgICAvLyBMYWIgdXNlZCBhcyBpbmRleGVyIHNwYWNlLCAgdHJpbGluZWFyIGludGVycG9sYXRpb24gc2hvdWxkIGJlIHVzZWQKKyAgICBpZiAoY21zR2V0UENTKGhQcm9maWxlKSA9PSBjbXNTaWdMYWJEYXRhKQorICAgICAgICBDaGFuZ2VJbnRlcnBvbGF0aW9uVG9UcmlsaW5lYXIoTHV0KTsKKworICAgIC8vIEFmdGVyIHJlYWRpbmcgaXQsIHdlIGhhdmUgaW5mbyBhYm91dCB0aGUgb3JpZ2luYWwgdHlwZQorICAgIE9yaWdpbmFsVHlwZSA9ICBfY21zR2V0VGFnVHJ1ZVR5cGUoaFByb2ZpbGUsIHRhZzE2KTsKKworICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IGRhdGEgZm9yIExhYjE2IG9uIG91dHB1dAorICAgIGlmIChPcmlnaW5hbFR5cGUgIT0gY21zU2lnTHV0MTZUeXBlKSByZXR1cm4gTHV0OworCisgICAgLy8gSGVyZSBpdCBpcyBwb3NzaWJsZSB0byBnZXQgTGFiIG9uIGJvdGggc2lkZXMKKworICAgIGlmIChjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlKSA9PSBjbXNTaWdMYWJEYXRhKSB7CisgICAgICAgIGlmKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKEx1dCwgY21zQVRfQkVHSU4sIF9jbXNTdGFnZUFsbG9jTGFiVjRUb1YyKENvbnRleHRJRCkpKQorICAgICAgICAgICAgZ290byBFcnJvcjI7CisgICAgfQorCisgICAgaWYgKGNtc0dldFBDUyhoUHJvZmlsZSkgPT0gY21zU2lnTGFiRGF0YSkgeworICAgICAgICBpZighY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMdXQsIGNtc0FUX0VORCwgX2Ntc1N0YWdlQWxsb2NMYWJWMlRvVjQoQ29udGV4dElEKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yMjsKKyAgICB9CisKKyAgICByZXR1cm4gTHV0OworCitFcnJvcjI6CisgICAgY21zUGlwZWxpbmVGcmVlKEx1dCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBSZXR1cm5zIFRSVUUgaWYgdGhlIHByb2ZpbGUgaXMgaW1wbGVtZW50ZWQgYXMgbWF0cml4LXNoYXBlcgorY21zQm9vbCAgQ01TRVhQT1JUIGNtc0lzTWF0cml4U2hhcGVyKGNtc0hQUk9GSUxFIGhQcm9maWxlKQoreworICAgIHN3aXRjaCAoY21zR2V0Q29sb3JTcGFjZShoUHJvZmlsZSkpIHsKKworICAgIGNhc2UgY21zU2lnR3JheURhdGE6CisKKyAgICAgICAgcmV0dXJuIGNtc0lzVGFnKGhQcm9maWxlLCBjbXNTaWdHcmF5VFJDVGFnKTsKKworICAgIGNhc2UgY21zU2lnUmdiRGF0YToKKworICAgICAgICByZXR1cm4gKGNtc0lzVGFnKGhQcm9maWxlLCBjbXNTaWdSZWRDb2xvcmFudFRhZykgJiYKKyAgICAgICAgICAgICAgICBjbXNJc1RhZyhoUHJvZmlsZSwgY21zU2lnR3JlZW5Db2xvcmFudFRhZykgJiYKKyAgICAgICAgICAgICAgICBjbXNJc1RhZyhoUHJvZmlsZSwgY21zU2lnQmx1ZUNvbG9yYW50VGFnKSAmJgorICAgICAgICAgICAgICAgIGNtc0lzVGFnKGhQcm9maWxlLCBjbXNTaWdSZWRUUkNUYWcpICYmCisgICAgICAgICAgICAgICAgY21zSXNUYWcoaFByb2ZpbGUsIGNtc1NpZ0dyZWVuVFJDVGFnKSAmJgorICAgICAgICAgICAgICAgIGNtc0lzVGFnKGhQcm9maWxlLCBjbXNTaWdCbHVlVFJDVGFnKSk7CisKKyAgICBkZWZhdWx0OgorCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgVFJVRSBpZiB0aGUgaW50ZW50IGlzIGltcGxlbWVudGVkIGFzIENMVVQKK2Ntc0Jvb2wgIENNU0VYUE9SVCBjbXNJc0NMVVQoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciBVc2VkRGlyZWN0aW9uKQoreworICAgIGNvbnN0IGNtc1RhZ1NpZ25hdHVyZSogVGFnVGFibGU7CisKKyAgICAvLyBGb3IgZGV2aWNlbGlua3MsIHRoZSBzdXBwb3J0ZWQgaW50ZW50IGlzIHRoYXQgb25lIHN0YXRlZCBpbiB0aGUgaGVhZGVyCisgICAgaWYgKGNtc0dldERldmljZUNsYXNzKGhQcm9maWxlKSA9PSBjbXNTaWdMaW5rQ2xhc3MpIHsKKyAgICAgICAgICAgIHJldHVybiAoY21zR2V0SGVhZGVyUmVuZGVyaW5nSW50ZW50KGhQcm9maWxlKSA9PSBJbnRlbnQpOworICAgIH0KKworICAgIHN3aXRjaCAoVXNlZERpcmVjdGlvbikgeworCisgICAgICAgY2FzZSBMQ01TX1VTRURfQVNfSU5QVVQ6IFRhZ1RhYmxlID0gRGV2aWNlMlBDUzE2OyBicmVhazsKKyAgICAgICBjYXNlIExDTVNfVVNFRF9BU19PVVRQVVQ6VGFnVGFibGUgPSBQQ1MyRGV2aWNlMTY7IGJyZWFrOworCisgICAgICAgLy8gRm9yIHByb29maW5nLCB3ZSBuZWVkIHJlbC4gY29sb3JpbWV0cmljIGluIG91dHB1dC4gTGV0J3MgZG8gc29tZSByZWN1cnNpb24KKyAgICAgICBjYXNlIExDTVNfVVNFRF9BU19QUk9PRjoKKyAgICAgICAgICAgcmV0dXJuIGNtc0lzSW50ZW50U3VwcG9ydGVkKGhQcm9maWxlLCBJbnRlbnQsIExDTVNfVVNFRF9BU19JTlBVVCkgJiYKKyAgICAgICAgICAgICAgICAgIGNtc0lzSW50ZW50U3VwcG9ydGVkKGhQcm9maWxlLCBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDLCBMQ01TX1VTRURfQVNfT1VUUFVUKTsKKworICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKGNtc0dldFByb2ZpbGVDb250ZXh0SUQoaFByb2ZpbGUpLCBjbXNFUlJPUl9SQU5HRSwgIlVuZXhwZWN0ZWQgZGlyZWN0aW9uICglZCkiLCBVc2VkRGlyZWN0aW9uKTsKKyAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHJldHVybiBjbXNJc1RhZyhoUHJvZmlsZSwgVGFnVGFibGVbSW50ZW50XSk7CisKK30KKworCisvLyBSZXR1cm4gaW5mbyBhYm91dCBzdXBwb3J0ZWQgaW50ZW50cworY21zQm9vbCAgQ01TRVhQT1JUIGNtc0lzSW50ZW50U3VwcG9ydGVkKGNtc0hQUk9GSUxFIGhQcm9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciBVc2VkRGlyZWN0aW9uKQoreworCisgICAgaWYgKGNtc0lzQ0xVVChoUHJvZmlsZSwgSW50ZW50LCBVc2VkRGlyZWN0aW9uKSkgcmV0dXJuIFRSVUU7CisKKyAgICAvLyBJcyB0aGVyZSBhbnkgbWF0cml4LXNoYXBlcj8gSWYgc28sIHRoZSBpbnRlbnQgaXMgc3VwcG9ydGVkLiBUaGlzIGlzIGEgYml0IG9kZCwgc2luY2UgVjIgbWF0cml4IHNoYXBlcgorICAgIC8vIGRvZXMgbm90IGZ1bGx5IHN1cHBvcnQgcmVsYXRpdmUgY29sb3JpbWV0cmljIGJlY2F1c2UgdGhleSBjYW5ub3QgZGVhbCB3aXRoIG5vbi16ZXJvIGJsYWNrIHBvaW50cywgYnV0CisgICAgLy8gbWFueSBwcm9maWxlcyBjbGFpbXMgdGhhdCwgYW5kIHRoaXMgaXMgY2VydGFpbmx5IG5vdCB0cnVlIGZvciBWNCBwcm9maWxlcy4gTGV0cyBhbnN3ZXIgInllcyIgbm8gbWF0dGVyCisgICAgLy8gdGhlIGFjY3VyYWN5IHdvdWxkIGJlIGxlc3MgdGhhbiBvcHRpbWFsIGluIHJlbC5jb2wgYW5kIHYyIGNhc2UuCisKKyAgICByZXR1cm4gY21zSXNNYXRyaXhTaGFwZXIoaFByb2ZpbGUpOworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBSZWFkIGJvdGgsIHByb2ZpbGUgc2VxdWVuY2UgZGVzY3JpcHRpb24gYW5kIHByb2ZpbGUgc2VxdWVuY2UgaWQgaWYgcHJlc2VudC4gVGhlbiBjb21iaW5lIGJvdGggdG8KKy8vIGNyZWF0ZSBxYSB1bmlxdWUgc3RydWN0dXJlIGhvbGRpbmcgYm90aC4gU2hhbWUgb24gSUNDIHRvIHN0b3JlIHRoaW5ncyBpbiBzdWNoIGNvbXBsaWNhdGVkIHdheS4KK2Ntc1NFUSogX2Ntc1JlYWRQcm9maWxlU2VxdWVuY2UoY21zSFBST0ZJTEUgaFByb2ZpbGUpCit7CisgICAgY21zU0VRKiBQcm9maWxlU2VxOworICAgIGNtc1NFUSogUHJvZmlsZUlkOworICAgIGNtc1NFUSogTmV3U2VxOworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgLy8gVGFrZSBwcm9maWxlIHNlcXVlbmNlIGRlc2NyaXB0aW9uIGZpcnN0CisgICAgUHJvZmlsZVNlcSA9IChjbXNTRVEqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCBjbXNTaWdQcm9maWxlU2VxdWVuY2VEZXNjVGFnKTsKKworICAgIC8vIFRha2UgcHJvZmlsZSBzZXF1ZW5jZSBJRAorICAgIFByb2ZpbGVJZCAgPSAoY21zU0VRKikgY21zUmVhZFRhZyhoUHJvZmlsZSwgY21zU2lnUHJvZmlsZVNlcXVlbmNlSWRUYWcpOworCisgICAgaWYgKFByb2ZpbGVTZXEgPT0gTlVMTCAmJiBQcm9maWxlSWQgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHJvZmlsZVNlcSA9PSBOVUxMKSByZXR1cm4gY21zRHVwUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oUHJvZmlsZUlkKTsKKyAgICBpZiAoUHJvZmlsZUlkICA9PSBOVUxMKSByZXR1cm4gY21zRHVwUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oUHJvZmlsZVNlcSk7CisKKyAgICAvLyBXZSBoYXZlIHRvIG1peCBib3RoIHRvZ2V0aGVyLiBGb3IgdGhhdCB0aGV5IG11c3QgYWdyZWUKKyAgICBpZiAoUHJvZmlsZVNlcSAtPm4gIT0gUHJvZmlsZUlkIC0+bikgcmV0dXJuIGNtc0R1cFByb2ZpbGVTZXF1ZW5jZURlc2NyaXB0aW9uKFByb2ZpbGVTZXEpOworCisgICAgTmV3U2VxID0gY21zRHVwUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oUHJvZmlsZVNlcSk7CisKKyAgICAvLyBPaywgcHJvY2VlZCB0byB0aGUgbWl4aW5nCisgICAgaWYgKE5ld1NlcSAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoaT0wOyBpIDwgUHJvZmlsZVNlcSAtPm47IGkrKykgeworCisgICAgICAgICAgICBtZW1tb3ZlKCZOZXdTZXEgLT5zZXFbaV0uUHJvZmlsZUlELCAmUHJvZmlsZUlkIC0+c2VxW2ldLlByb2ZpbGVJRCwgc2l6ZW9mKGNtc1Byb2ZpbGVJRCkpOworICAgICAgICAgICAgTmV3U2VxIC0+c2VxW2ldLkRlc2NyaXB0aW9uID0gY21zTUxVZHVwKFByb2ZpbGVJZCAtPnNlcVtpXS5EZXNjcmlwdGlvbik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIE5ld1NlcTsKK30KKworLy8gRHVtcCB0aGUgY29udGVudHMgb2YgcHJvZmlsZSBzZXF1ZW5jZSBpbiBib3RoIHRhZ3MgKGlmIHY0IGF2YWlsYWJsZSkKK2Ntc0Jvb2wgX2Ntc1dyaXRlUHJvZmlsZVNlcXVlbmNlKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjb25zdCBjbXNTRVEqIHNlcSkKK3sKKyAgICBpZiAoIWNtc1dyaXRlVGFnKGhQcm9maWxlLCBjbXNTaWdQcm9maWxlU2VxdWVuY2VEZXNjVGFnLCBzZXEpKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoY21zR2V0UHJvZmlsZVZlcnNpb24oaFByb2ZpbGUpID49IDQuMCkgeworCisgICAgICAgICAgICBpZiAoIWNtc1dyaXRlVGFnKGhQcm9maWxlLCBjbXNTaWdQcm9maWxlU2VxdWVuY2VJZFRhZywgc2VxKSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIEF1eGlsaWFyLCByZWFkIGFuZCBkdXBsaWNhdGUgYSBNTFUgaWYgZm91bmQuCitzdGF0aWMKK2Ntc01MVSogR2V0TUxVRnJvbVByb2ZpbGUoY21zSFBST0ZJTEUgaCwgY21zVGFnU2lnbmF0dXJlIHNpZykKK3sKKyAgICBjbXNNTFUqIG1sdSA9IChjbXNNTFUqKSBjbXNSZWFkVGFnKGgsIHNpZyk7CisgICAgaWYgKG1sdSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBjbXNNTFVkdXAobWx1KTsKK30KKworLy8gQ3JlYXRlIGEgc2VxdWVuY2UgZGVzY3JpcHRpb24gb3V0IG9mIGFuIGFycmF5IG9mIHByb2ZpbGVzCitjbXNTRVEqIF9jbXNDb21waWxlUHJvZmlsZVNlcXVlbmNlKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgblByb2ZpbGVzLCBjbXNIUFJPRklMRSBoUHJvZmlsZXNbXSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNTRVEqIHNlcSA9IGNtc0FsbG9jUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oQ29udGV4dElELCBuUHJvZmlsZXMpOworCisgICAgaWYgKHNlcSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaT0wOyBpIDwgblByb2ZpbGVzOyBpKyspIHsKKworICAgICAgICBjbXNQU0VRREVTQyogcHMgPSAmc2VxIC0+c2VxW2ldOworICAgICAgICBjbXNIUFJPRklMRSBoID0gaFByb2ZpbGVzW2ldOworICAgICAgICBjbXNUZWNobm9sb2d5U2lnbmF0dXJlKiB0ZWNocHQ7CisKKyAgICAgICAgY21zR2V0SGVhZGVyQXR0cmlidXRlcyhoLCAmcHMgLT5hdHRyaWJ1dGVzKTsKKyAgICAgICAgY21zR2V0SGVhZGVyUHJvZmlsZUlEKGgsIHBzIC0+UHJvZmlsZUlELklEOCk7CisgICAgICAgIHBzIC0+ZGV2aWNlTWZnICAgPSBjbXNHZXRIZWFkZXJNYW51ZmFjdHVyZXIoaCk7CisgICAgICAgIHBzIC0+ZGV2aWNlTW9kZWwgPSBjbXNHZXRIZWFkZXJNb2RlbChoKTsKKworICAgICAgICB0ZWNocHQgPSAoY21zVGVjaG5vbG9neVNpZ25hdHVyZSopIGNtc1JlYWRUYWcoaCwgY21zU2lnVGVjaG5vbG9neVRhZyk7CisgICAgICAgIGlmICh0ZWNocHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHBzIC0+dGVjaG5vbG9neSAgID0gIChjbXNUZWNobm9sb2d5U2lnbmF0dXJlKSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcyAtPnRlY2hub2xvZ3kgICA9ICp0ZWNocHQ7CisKKyAgICAgICAgcHMgLT5NYW51ZmFjdHVyZXIgPSBHZXRNTFVGcm9tUHJvZmlsZShoLCAgY21zU2lnRGV2aWNlTWZnRGVzY1RhZyk7CisgICAgICAgIHBzIC0+TW9kZWwgICAgICAgID0gR2V0TUxVRnJvbVByb2ZpbGUoaCwgIGNtc1NpZ0RldmljZU1vZGVsRGVzY1RhZyk7CisgICAgICAgIHBzIC0+RGVzY3JpcHRpb24gID0gR2V0TUxVRnJvbVByb2ZpbGUoaCwgY21zU2lnUHJvZmlsZURlc2NyaXB0aW9uVGFnKTsKKworICAgIH0KKworICAgIHJldHVybiBzZXE7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitzdGF0aWMKK2NvbnN0IGNtc01MVSogR2V0SW5mbyhjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zSW5mb1R5cGUgSW5mbykKK3sKKyAgICBjbXNUYWdTaWduYXR1cmUgc2lnOworCisgICAgc3dpdGNoIChJbmZvKSB7CisKKyAgICBjYXNlIGNtc0luZm9EZXNjcmlwdGlvbjoKKyAgICAgICAgc2lnID0gY21zU2lnUHJvZmlsZURlc2NyaXB0aW9uVGFnOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgY21zSW5mb01hbnVmYWN0dXJlcjoKKyAgICAgICAgc2lnID0gY21zU2lnRGV2aWNlTWZnRGVzY1RhZzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGNtc0luZm9Nb2RlbDoKKyAgICAgICAgc2lnID0gY21zU2lnRGV2aWNlTW9kZWxEZXNjVGFnOworICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGNtc0luZm9Db3B5cmlnaHQ6CisgICAgICAgIHNpZyA9IGNtc1NpZ0NvcHlyaWdodFRhZzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OiByZXR1cm4gTlVMTDsKKyAgICB9CisKKworICAgIHJldHVybiAoY21zTUxVKikgY21zUmVhZFRhZyhoUHJvZmlsZSwgc2lnKTsKK30KKworCisKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0UHJvZmlsZUluZm8oY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc0luZm9UeXBlIEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgTGFuZ3VhZ2VDb2RlWzNdLCBjb25zdCBjaGFyIENvdW50cnlDb2RlWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90KiBCdWZmZXIsIGNtc1VJbnQzMk51bWJlciBCdWZmZXJTaXplKQoreworICAgIGNvbnN0IGNtc01MVSogbWx1ID0gR2V0SW5mbyhoUHJvZmlsZSwgSW5mbyk7CisgICAgaWYgKG1sdSA9PSBOVUxMKSByZXR1cm4gMDsKKworICAgIHJldHVybiBjbXNNTFVnZXRXaWRlKG1sdSwgTGFuZ3VhZ2VDb2RlLCBDb3VudHJ5Q29kZSwgQnVmZmVyLCBCdWZmZXJTaXplKTsKK30KKworCitjbXNVSW50MzJOdW1iZXIgIENNU0VYUE9SVCBjbXNHZXRQcm9maWxlSW5mb0FTQ0lJKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNJbmZvVHlwZSBJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgTGFuZ3VhZ2VDb2RlWzNdLCBjb25zdCBjaGFyIENvdW50cnlDb2RlWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIEJ1ZmZlciwgY21zVUludDMyTnVtYmVyIEJ1ZmZlclNpemUpCit7CisgICAgY29uc3QgY21zTUxVKiBtbHUgPSBHZXRJbmZvKGhQcm9maWxlLCBJbmZvKTsKKyAgICBpZiAobWx1ID09IE5VTEwpIHJldHVybiAwOworCisgICAgcmV0dXJuIGNtc01MVWdldEFTQ0lJKG1sdSwgTGFuZ3VhZ2VDb2RlLCBDb3VudHJ5Q29kZSwgQnVmZmVyLCBCdWZmZXJTaXplKTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNsdXQuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNsdXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGY5MzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc2x1dC5jCkBAIC0wLDAgKzEsMTc5MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworCisjaW5jbHVkZSAibGNtczJfaW50ZXJuYWwuaCIKKworCisvLyBBbGxvY2F0ZXMgYW4gZW1wdHkgbXVsdGkgcHJvZmlsZSBlbGVtZW50CitjbXNTdGFnZSogQ01TRVhQT1JUIF9jbXNTdGFnZUFsbG9jUGxhY2Vob2xkZXIoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1N0YWdlU2lnbmF0dXJlIFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnB1dENoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0cHV0Q2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbXNTdGFnZUV2YWxGbiAgICAgRXZhbFB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Ntc1N0YWdlRHVwRWxlbUZuICBEdXBFbGVtUHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY21zU3RhZ2VGcmVlRWxlbUZuIEZyZWVQdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgIERhdGEpCit7CisgICAgY21zU3RhZ2UqIHBoID0gKGNtc1N0YWdlKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoY21zU3RhZ2UpKTsKKworICAgIGlmIChwaCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworCisgICAgcGggLT5Db250ZXh0SUQgPSBDb250ZXh0SUQ7CisKKyAgICBwaCAtPlR5cGUgICAgICAgPSBUeXBlOworICAgIHBoIC0+SW1wbGVtZW50cyA9IFR5cGU7ICAgLy8gQnkgZGVmYXVsdCwgbm8gY2x1ZSBvbiB3aGF0IGlzIGltcGxlbWVudGluZworCisgICAgcGggLT5JbnB1dENoYW5uZWxzICA9IElucHV0Q2hhbm5lbHM7CisgICAgcGggLT5PdXRwdXRDaGFubmVscyA9IE91dHB1dENoYW5uZWxzOworICAgIHBoIC0+RXZhbFB0ciAgICAgICAgPSBFdmFsUHRyOworICAgIHBoIC0+RHVwRWxlbVB0ciAgICAgPSBEdXBFbGVtUHRyOworICAgIHBoIC0+RnJlZVB0ciAgICAgICAgPSBGcmVlUHRyOworICAgIHBoIC0+RGF0YSAgICAgICAgICAgPSBEYXRhOworCisgICAgcmV0dXJuIHBoOworfQorCisKK3N0YXRpYwordm9pZCBFdmFsdWF0ZUlkZW50aXR5KGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgSW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIE91dFtdLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1N0YWdlICptcGUpCit7CisgICAgbWVtbW92ZShPdXQsIEluLCBtcGUgLT5JbnB1dENoYW5uZWxzICogc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKK30KKworCitjbXNTdGFnZSogQ01TRVhQT1JUIGNtc1N0YWdlQWxsb2NJZGVudGl0eShjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIG5DaGFubmVscykKK3sKKyAgICByZXR1cm4gX2Ntc1N0YWdlQWxsb2NQbGFjZWhvbGRlcihDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1NpZ0lkZW50aXR5RWxlbVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5DaGFubmVscywgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmFsdWF0ZUlkZW50aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyB9CisKKy8vIENvbnZlcnNpb24gZnVuY3Rpb25zLiBGcm9tIGZsb2F0aW5nIHBvaW50IHRvIDE2IGJpdHMKK3N0YXRpYwordm9pZCBGcm9tRmxvYXRUbzE2KGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgSW5bXSwgY21zVUludDE2TnVtYmVyIE91dFtdLCBjbXNVSW50MzJOdW1iZXIgbikKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIE91dFtpXSA9IF9jbXNRdWlja1NhdHVyYXRlV29yZChJbltpXSAqIDY1NTM1LjApOworICAgIH0KK30KKworLy8gRnJvbSAxNiBiaXRzIHRvIGZsb2F0aW5nIHBvaW50CitzdGF0aWMKK3ZvaWQgRnJvbTE2VG9GbG9hdChjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5bXSwgY21zRmxvYXQzMk51bWJlciBPdXRbXSwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworICAgICAgICBPdXRbaV0gPSAoY21zRmxvYXQzMk51bWJlcikgSW5baV0gLyA2NTUzNS4wRjsKKyAgICB9Cit9CisKKworLy8gVGhpcyBmdW5jdGlvbiBpcyBxdWl0ZSB1c2VmdWwgdG8gYW5hbHl6ZSB0aGUgc3RydWN0dXJlIG9mIGEgTFVUIGFuZCByZXRyaWV2ZSB0aGUgTVBFIGVsZW1lbnRzCisvLyB0aGF0IGNvbmZvcm0gdGhlIExVVC4gSXQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBMVVQsIHRoZSBudW1iZXIgb2YgZXhwZWN0ZWQgZWxlbWVudHMgYW5kCisvLyB0aGVuIGEgbGlzdCBvZiBleHBlY3RlZCB0eXBlcyBmb2xsb3dlZCB3aXRoIGEgbGlzdCBvZiBjbXNGbG9hdDY0TnVtYmVyIHBvaW50ZXJzIHRvIE1QRSBlbGVtZW50cy4gSWYKKy8vIHRoZSBmdW5jdGlvbiBmb3VuZHMgYSBtYXRjaCB3aXRoIGN1cnJlbnQgcGlwZWxpbmUsIGl0IGZpbGxzIHRoZSBwb2ludGVycyBhbmQgcmV0dXJucyBUUlVFCisvLyBpZiBub3QsIHJldHVybnMgRkFMU0Ugd2l0aG91dCB0b3VjaGluZyBhbnl0aGluZy4gU2V0dGluZyBwb2ludGVycyB0byBOVUxMIGRvZXMgYnlwYXNzCisvLyB0aGUgc3RvcmFnZSBwcm9jZXNzLgorY21zQm9vbCAgQ01TRVhQT1JUIGNtc1BpcGVsaW5lQ2hlY2tBbmRSZXRyZWl2ZVN0YWdlcyhjb25zdCBjbXNQaXBlbGluZSogTHV0LCBjbXNVSW50MzJOdW1iZXIgbiwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNTdGFnZSogbXBlOworICAgIGNtc1N0YWdlU2lnbmF0dXJlIFR5cGU7CisgICAgdm9pZCoqIEVsZW1QdHI7CisKKyAgICAvLyBNYWtlIHN1cmUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMKKyAgICBpZiAoY21zUGlwZWxpbmVTdGFnZUNvdW50KEx1dCkgIT0gbikgcmV0dXJuIEZBTFNFOworCisgICAgdmFfc3RhcnQoYXJncywgbik7CisKKyAgICAvLyBJdGVyYXRlIGFjcm9zcyBhc2tlZCB0eXBlcworICAgIG1wZSA9IEx1dCAtPkVsZW1lbnRzOworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisKKyAgICAgICAgLy8gR2V0IGFza2VkIHR5cGUKKyAgICAgICAgVHlwZSAgPSAoY21zU3RhZ2VTaWduYXR1cmUpdmFfYXJnKGFyZ3MsIGNtc1N0YWdlU2lnbmF0dXJlKTsKKyAgICAgICAgaWYgKG1wZSAtPlR5cGUgIT0gVHlwZSkgeworCisgICAgICAgICAgICB2YV9lbmQoYXJncyk7ICAgICAgIC8vIE1pc21hdGNoLiBXZSBhcmUgZG9uZS4KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgICAgICBtcGUgPSBtcGUgLT5OZXh0OworICAgIH0KKworICAgIC8vIEZvdW5kIGEgY29tYmluYXRpb24sIGZpbGwgcG9pbnRlcnMgaWYgbm90IE5VTEwKKyAgICBtcGUgPSBMdXQgLT5FbGVtZW50czsKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIEVsZW1QdHIgPSB2YV9hcmcoYXJncywgdm9pZCoqKTsKKyAgICAgICAgaWYgKEVsZW1QdHIgIT0gTlVMTCkKKyAgICAgICAgICAgICpFbGVtUHRyID0gbXBlOworCisgICAgICAgIG1wZSA9IG1wZSAtPk5leHQ7CisgICAgfQorCisgICAgdmFfZW5kKGFyZ3MpOworICAgIHJldHVybiBUUlVFOworfQorCisvLyBCZWxvdyB0aGVyZSBhcmUgaW1wbGVtZW50YXRpb25zIGZvciBzZXZlcmFsIHR5cGVzIG9mIGVsZW1lbnRzLiBFYWNoIHR5cGUgbWF5IGJlIGltcGxlbWVudGVkIGJ5IGEKKy8vIGV2YWx1YXRpb24gZnVuY3Rpb24sIGEgZHVwbGljYXRpb24gZnVuY3Rpb24sIGEgZnVuY3Rpb24gdG8gZnJlZSByZXNvdXJjZXMgYW5kIGEgY29uc3RydWN0b3IuCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSAoY3VydmVzKQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitjbXNUb25lQ3VydmUqKiBfY21zU3RhZ2VHZXRQdHJUb0N1cnZlU2V0KGNvbnN0IGNtc1N0YWdlKiBtcGUpCit7CisgICAgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIERhdGEgPSAoX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqKSBtcGUgLT5EYXRhOworCisgICAgcmV0dXJuIERhdGEgLT5UaGVDdXJ2ZXM7Cit9CisKK3N0YXRpYwordm9pZCBFdmFsdWF0ZUN1cnZlcyhjb25zdCBjbXNGbG9hdDMyTnVtYmVyIEluW10sCisgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0W10sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1N0YWdlICptcGUpCit7CisgICAgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIERhdGE7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBfY21zQXNzZXJ0KG1wZSAhPSBOVUxMKTsKKworICAgIERhdGEgPSAoX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqKSBtcGUgLT5EYXRhOworICAgIGlmIChEYXRhID09IE5VTEwpIHJldHVybjsKKworICAgIGlmIChEYXRhIC0+VGhlQ3VydmVzID09IE5VTEwpIHJldHVybjsKKworICAgIGZvciAoaT0wOyBpIDwgRGF0YSAtPm5DdXJ2ZXM7IGkrKykgeworICAgICAgICBPdXRbaV0gPSBjbXNFdmFsVG9uZUN1cnZlRmxvYXQoRGF0YSAtPlRoZUN1cnZlc1tpXSwgSW5baV0pOworICAgIH0KK30KKworc3RhdGljCit2b2lkIEN1cnZlU2V0RWxlbVR5cGVGcmVlKGNtc1N0YWdlKiBtcGUpCit7CisgICAgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIERhdGE7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBfY21zQXNzZXJ0KG1wZSAhPSBOVUxMKTsKKworICAgIERhdGEgPSAoX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqKSBtcGUgLT5EYXRhOworICAgIGlmIChEYXRhID09IE5VTEwpIHJldHVybjsKKworICAgIGlmIChEYXRhIC0+VGhlQ3VydmVzICE9IE5VTEwpIHsKKyAgICAgICAgZm9yIChpPTA7IGkgPCBEYXRhIC0+bkN1cnZlczsgaSsrKSB7CisgICAgICAgICAgICBpZiAoRGF0YSAtPlRoZUN1cnZlc1tpXSAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGNtc0ZyZWVUb25lQ3VydmUoRGF0YSAtPlRoZUN1cnZlc1tpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgX2Ntc0ZyZWUobXBlIC0+Q29udGV4dElELCBEYXRhIC0+VGhlQ3VydmVzKTsKKyAgICBfY21zRnJlZShtcGUgLT5Db250ZXh0SUQsIERhdGEpOworfQorCisKK3N0YXRpYwordm9pZCogQ3VydmVTZXREdXAoY21zU3RhZ2UqIG1wZSkKK3sKKyAgICBfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSogRGF0YSA9IChfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSopIG1wZSAtPkRhdGE7CisgICAgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIE5ld0VsZW07CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBOZXdFbGVtID0gKF9jbXNTdGFnZVRvbmVDdXJ2ZXNEYXRhKikgX2Ntc01hbGxvY1plcm8obXBlIC0+Q29udGV4dElELCBzaXplb2YoX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEpKTsKKyAgICBpZiAoTmV3RWxlbSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIE5ld0VsZW0gLT5uQ3VydmVzICAgPSBEYXRhIC0+bkN1cnZlczsKKyAgICBOZXdFbGVtIC0+VGhlQ3VydmVzID0gKGNtc1RvbmVDdXJ2ZSoqKSBfY21zQ2FsbG9jKG1wZSAtPkNvbnRleHRJRCwgTmV3RWxlbSAtPm5DdXJ2ZXMsIHNpemVvZihjbXNUb25lQ3VydmUqKSk7CisKKyAgICBpZiAoTmV3RWxlbSAtPlRoZUN1cnZlcyA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgZm9yIChpPTA7IGkgPCBOZXdFbGVtIC0+bkN1cnZlczsgaSsrKSB7CisKKyAgICAgICAgLy8gRHVwbGljYXRlIGVhY2ggY3VydmUuIEl0IG1heSBmYWlsLgorICAgICAgICBOZXdFbGVtIC0+VGhlQ3VydmVzW2ldID0gY21zRHVwVG9uZUN1cnZlKERhdGEgLT5UaGVDdXJ2ZXNbaV0pOworICAgICAgICBpZiAoTmV3RWxlbSAtPlRoZUN1cnZlc1tpXSA9PSBOVUxMKSBnb3RvIEVycm9yOworCisKKyAgICB9CisgICAgcmV0dXJuICh2b2lkKikgTmV3RWxlbTsKKworRXJyb3I6CisKKyAgICBpZiAoTmV3RWxlbSAtPlRoZUN1cnZlcyAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoaT0wOyBpIDwgTmV3RWxlbSAtPm5DdXJ2ZXM7IGkrKykgeworICAgICAgICAgICAgaWYgKE5ld0VsZW0gLT5UaGVDdXJ2ZXNbaV0pCisgICAgICAgICAgICAgICAgY21zRnJlZVRvbmVDdXJ2ZShOZXdFbGVtIC0+VGhlQ3VydmVzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBfY21zRnJlZShtcGUgLT5Db250ZXh0SUQsIE5ld0VsZW0gLT5UaGVDdXJ2ZXMpOworICAgIF9jbXNGcmVlKG1wZSAtPkNvbnRleHRJRCwgTmV3RWxlbSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLy8gQ3VydmVzID09IE5VTEwgZm9yY2VzIGlkZW50aXR5IGN1cnZlcworY21zU3RhZ2UqIENNU0VYUE9SVCBjbXNTdGFnZUFsbG9jVG9uZUN1cnZlcyhjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIG5DaGFubmVscywgY21zVG9uZUN1cnZlKiBjb25zdCBDdXJ2ZXNbXSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSogTmV3RWxlbTsKKyAgICBjbXNTdGFnZSogTmV3TVBFOworCisKKyAgICBOZXdNUEUgPSBfY21zU3RhZ2VBbGxvY1BsYWNlaG9sZGVyKENvbnRleHRJRCwgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgbkNoYW5uZWxzLCBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZhbHVhdGVDdXJ2ZXMsIEN1cnZlU2V0RHVwLCBDdXJ2ZVNldEVsZW1UeXBlRnJlZSwgTlVMTCApOworICAgIGlmIChOZXdNUEUgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBOZXdFbGVtID0gKF9jbXNTdGFnZVRvbmVDdXJ2ZXNEYXRhKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEpKTsKKyAgICBpZiAoTmV3RWxlbSA9PSBOVUxMKSB7CisgICAgICAgIGNtc1N0YWdlRnJlZShOZXdNUEUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBOZXdNUEUgLT5EYXRhICA9ICh2b2lkKikgTmV3RWxlbTsKKworICAgIE5ld0VsZW0gLT5uQ3VydmVzICAgPSBuQ2hhbm5lbHM7CisgICAgTmV3RWxlbSAtPlRoZUN1cnZlcyA9IChjbXNUb25lQ3VydmUqKikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIG5DaGFubmVscywgc2l6ZW9mKGNtc1RvbmVDdXJ2ZSopKTsKKyAgICBpZiAoTmV3RWxlbSAtPlRoZUN1cnZlcyA9PSBOVUxMKSB7CisgICAgICAgIGNtc1N0YWdlRnJlZShOZXdNUEUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IG5DaGFubmVsczsgaSsrKSB7CisKKyAgICAgICAgaWYgKEN1cnZlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBOZXdFbGVtIC0+VGhlQ3VydmVzW2ldID0gY21zQnVpbGRHYW1tYShDb250ZXh0SUQsIDEuMCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBOZXdFbGVtIC0+VGhlQ3VydmVzW2ldID0gY21zRHVwVG9uZUN1cnZlKEN1cnZlc1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoTmV3RWxlbSAtPlRoZUN1cnZlc1tpXSA9PSBOVUxMKSB7CisgICAgICAgICAgICBjbXNTdGFnZUZyZWUoTmV3TVBFKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICB9CisKKyAgIHJldHVybiBOZXdNUEU7Cit9CisKKworLy8gQ3JlYXRlIGEgYnVuY2ggb2YgaWRlbnRpdHkgY3VydmVzCitjbXNTdGFnZSogX2Ntc1N0YWdlQWxsb2NJZGVudGl0eUN1cnZlcyhjbXNDb250ZXh0IENvbnRleHRJRCwgaW50IG5DaGFubmVscykKK3sKKyAgICBjbXNTdGFnZSogbXBlID0gY21zU3RhZ2VBbGxvY1RvbmVDdXJ2ZXMoQ29udGV4dElELCBuQ2hhbm5lbHMsIE5VTEwpOworCisgICAgaWYgKG1wZSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKyAgICBtcGUgLT5JbXBsZW1lbnRzID0gY21zU2lnSWRlbnRpdHlFbGVtVHlwZTsKKyAgICByZXR1cm4gbXBlOworfQorCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnTWF0cml4RWxlbVR5cGUgKE1hdHJpY2VzKQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisKKy8vIFNwZWNpYWwgY2FyZSBzaG91bGQgYmUgdGFrZW4gaGVyZSBiZWNhdXNlIHByZWNpc2lvbiBsb3NzLiBBIHRlbXBvcmFyeSBjbXNGbG9hdDY0TnVtYmVyIGJ1ZmZlciBpcyBiZWluZyB1c2VkCitzdGF0aWMKK3ZvaWQgRXZhbHVhdGVNYXRyaXgoY29uc3QgY21zRmxvYXQzMk51bWJlciBJbltdLAorICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIE91dFtdLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNTdGFnZSAqbXBlKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpLCBqOworICAgIF9jbXNTdGFnZU1hdHJpeERhdGEqIERhdGEgPSAoX2Ntc1N0YWdlTWF0cml4RGF0YSopIG1wZSAtPkRhdGE7CisgICAgY21zRmxvYXQ2NE51bWJlciBUbXA7CisKKyAgICAvLyBJbnB1dCBpcyBhbHJlYWR5IGluIDAuLjEuMCBub3RhdGlvbgorICAgIGZvciAoaT0wOyBpIDwgbXBlIC0+T3V0cHV0Q2hhbm5lbHM7IGkrKykgeworCisgICAgICAgIFRtcCA9IDA7CisgICAgICAgIGZvciAoaj0wOyBqIDwgbXBlLT5JbnB1dENoYW5uZWxzOyBqKyspIHsKKyAgICAgICAgICAgIFRtcCArPSBJbltqXSAqIERhdGEtPkRvdWJsZVtpKm1wZS0+SW5wdXRDaGFubmVscyArIGpdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKERhdGEgLT5PZmZzZXQgIT0gTlVMTCkKKyAgICAgICAgICAgIFRtcCArPSBEYXRhLT5PZmZzZXRbaV07CisKKyAgICAgICAgT3V0W2ldID0gKGNtc0Zsb2F0MzJOdW1iZXIpIFRtcDsKKyAgICB9CisKKworICAgIC8vIE91dHB1dCBpbiAwLi4xLjAgZG9tYWluCit9CisKKworLy8gRHVwbGljYXRlIGEgeWV0LWV4aXN0aW5nIG1hdHJpeCBlbGVtZW50CitzdGF0aWMKK3ZvaWQqIE1hdHJpeEVsZW1EdXAoY21zU3RhZ2UqIG1wZSkKK3sKKyAgICBfY21zU3RhZ2VNYXRyaXhEYXRhKiBEYXRhID0gKF9jbXNTdGFnZU1hdHJpeERhdGEqKSBtcGUgLT5EYXRhOworICAgIF9jbXNTdGFnZU1hdHJpeERhdGEqIE5ld0VsZW07CisgICAgY21zVUludDMyTnVtYmVyIHN6OworCisgICAgTmV3RWxlbSA9IChfY21zU3RhZ2VNYXRyaXhEYXRhKikgX2Ntc01hbGxvY1plcm8obXBlIC0+Q29udGV4dElELCBzaXplb2YoX2Ntc1N0YWdlTWF0cml4RGF0YSkpOworICAgIGlmIChOZXdFbGVtID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgc3ogPSBtcGUgLT5JbnB1dENoYW5uZWxzICogbXBlIC0+T3V0cHV0Q2hhbm5lbHM7CisKKyAgICBOZXdFbGVtIC0+RG91YmxlID0gKGNtc0Zsb2F0NjROdW1iZXIqKSBfY21zRHVwTWVtKG1wZSAtPkNvbnRleHRJRCwgRGF0YSAtPkRvdWJsZSwgc3ogKiBzaXplb2YoY21zRmxvYXQ2NE51bWJlcikpIDsKKworICAgIGlmIChEYXRhIC0+T2Zmc2V0KQorICAgICAgICBOZXdFbGVtIC0+T2Zmc2V0ID0gKGNtc0Zsb2F0NjROdW1iZXIqKSBfY21zRHVwTWVtKG1wZSAtPkNvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgLT5PZmZzZXQsIG1wZSAtPiBPdXRwdXRDaGFubmVscyAqIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKSkgOworCisgICAgcmV0dXJuICh2b2lkKikgTmV3RWxlbTsKK30KKworCitzdGF0aWMKK3ZvaWQgTWF0cml4RWxlbVR5cGVGcmVlKGNtc1N0YWdlKiBtcGUpCit7CisgICAgX2Ntc1N0YWdlTWF0cml4RGF0YSogRGF0YSA9IChfY21zU3RhZ2VNYXRyaXhEYXRhKikgbXBlIC0+RGF0YTsKKyAgICBpZiAoRGF0YSA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgaWYgKERhdGEgLT5Eb3VibGUpCisgICAgICAgIF9jbXNGcmVlKG1wZSAtPkNvbnRleHRJRCwgRGF0YSAtPkRvdWJsZSk7CisKKyAgICBpZiAoRGF0YSAtPk9mZnNldCkKKyAgICAgICAgX2Ntc0ZyZWUobXBlIC0+Q29udGV4dElELCBEYXRhIC0+T2Zmc2V0KTsKKworICAgIF9jbXNGcmVlKG1wZSAtPkNvbnRleHRJRCwgbXBlIC0+RGF0YSk7Cit9CisKKworCitjbXNTdGFnZSogIENNU0VYUE9SVCBjbXNTdGFnZUFsbG9jTWF0cml4KGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgUm93cywgY21zVUludDMyTnVtYmVyIENvbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zRmxvYXQ2NE51bWJlciogTWF0cml4LCBjb25zdCBjbXNGbG9hdDY0TnVtYmVyKiBPZmZzZXQpCit7CisgICAgY21zVUludDMyTnVtYmVyIGksIG47CisgICAgX2Ntc1N0YWdlTWF0cml4RGF0YSogTmV3RWxlbTsKKyAgICBjbXNTdGFnZSogTmV3TVBFOworCisgICAgbiA9IFJvd3MgKiBDb2xzOworCisgICAgLy8gQ2hlY2sgZm9yIG92ZXJmbG93CisgICAgaWYgKG4gPT0gMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKG4gPj0gVUlOVF9NQVggLyBDb2xzKSByZXR1cm4gTlVMTDsKKyAgICBpZiAobiA+PSBVSU5UX01BWCAvIFJvd3MpIHJldHVybiBOVUxMOworICAgIGlmIChuIDwgUm93cyB8fCBuIDwgQ29scykgcmV0dXJuIE5VTEw7CisKKyAgICBOZXdNUEUgPSBfY21zU3RhZ2VBbGxvY1BsYWNlaG9sZGVyKENvbnRleHRJRCwgY21zU2lnTWF0cml4RWxlbVR5cGUsIENvbHMsIFJvd3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZhbHVhdGVNYXRyaXgsIE1hdHJpeEVsZW1EdXAsIE1hdHJpeEVsZW1UeXBlRnJlZSwgTlVMTCApOworICAgIGlmIChOZXdNUEUgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKworICAgIE5ld0VsZW0gPSAoX2Ntc1N0YWdlTWF0cml4RGF0YSopIF9jbXNNYWxsb2NaZXJvKENvbnRleHRJRCwgc2l6ZW9mKF9jbXNTdGFnZU1hdHJpeERhdGEpKTsKKyAgICBpZiAoTmV3RWxlbSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworCisgICAgTmV3RWxlbSAtPkRvdWJsZSA9IChjbXNGbG9hdDY0TnVtYmVyKikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIG4sIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKSk7CisKKyAgICBpZiAoTmV3RWxlbS0+RG91YmxlID09IE5VTEwpIHsKKyAgICAgICAgTWF0cml4RWxlbVR5cGVGcmVlKE5ld01QRSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIE5ld0VsZW0gLT5Eb3VibGVbaV0gPSBNYXRyaXhbaV07CisgICAgfQorCisKKyAgICBpZiAoT2Zmc2V0ICE9IE5VTEwpIHsKKworICAgICAgICBOZXdFbGVtIC0+T2Zmc2V0ID0gKGNtc0Zsb2F0NjROdW1iZXIqKSBfY21zQ2FsbG9jKENvbnRleHRJRCwgQ29scywgc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpKTsKKyAgICAgICAgaWYgKE5ld0VsZW0tPk9mZnNldCA9PSBOVUxMKSB7CisgICAgICAgICAgIE1hdHJpeEVsZW1UeXBlRnJlZShOZXdNUEUpOworICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaT0wOyBpIDwgQ29sczsgaSsrKSB7CisgICAgICAgICAgICAgICAgTmV3RWxlbSAtPk9mZnNldFtpXSA9IE9mZnNldFtpXTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgTmV3TVBFIC0+RGF0YSAgPSAodm9pZCopIE5ld0VsZW07CisgICAgcmV0dXJuIE5ld01QRTsKK30KKworCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ0NMdXRFbGVtVHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisKKy8vIEV2YWx1YXRlIGluIHRydWUgZmxvYXRpbmcgcG9pbnQKK3N0YXRpYwordm9pZCBFdmFsdWF0ZUNMVVRmbG9hdChjb25zdCBjbXNGbG9hdDMyTnVtYmVyIEluW10sIGNtc0Zsb2F0MzJOdW1iZXIgT3V0W10sIGNvbnN0IGNtc1N0YWdlICptcGUpCit7CisgICAgX2Ntc1N0YWdlQ0x1dERhdGEqIERhdGEgPSAoX2Ntc1N0YWdlQ0x1dERhdGEqKSBtcGUgLT5EYXRhOworCisgICAgRGF0YSAtPiBQYXJhbXMgLT5JbnRlcnBvbGF0aW9uLkxlcnBGbG9hdChJbiwgT3V0LCBEYXRhLT5QYXJhbXMpOworfQorCisKKy8vIENvbnZlcnQgdG8gMTYgYml0cywgZXZhbHVhdGUsIGFuZCBiYWNrIHRvIGZsb2F0aW5nIHBvaW50CitzdGF0aWMKK3ZvaWQgRXZhbHVhdGVDTFVUZmxvYXRJbjE2KGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgSW5bXSwgY21zRmxvYXQzMk51bWJlciBPdXRbXSwgY29uc3QgY21zU3RhZ2UgKm1wZSkKK3sKKyAgICBfY21zU3RhZ2VDTHV0RGF0YSogRGF0YSA9IChfY21zU3RhZ2VDTHV0RGF0YSopIG1wZSAtPkRhdGE7CisgICAgY21zVUludDE2TnVtYmVyIEluMTZbTUFYX1NUQUdFX0NIQU5ORUxTXSwgT3V0MTZbTUFYX1NUQUdFX0NIQU5ORUxTXTsKKworICAgIF9jbXNBc3NlcnQobXBlIC0+SW5wdXRDaGFubmVscyAgPD0gTUFYX1NUQUdFX0NIQU5ORUxTKTsKKyAgICBfY21zQXNzZXJ0KG1wZSAtPk91dHB1dENoYW5uZWxzIDw9IE1BWF9TVEFHRV9DSEFOTkVMUyk7CisKKyAgICBGcm9tRmxvYXRUbzE2KEluLCBJbjE2LCBtcGUgLT5JbnB1dENoYW5uZWxzKTsKKyAgICBEYXRhIC0+IFBhcmFtcyAtPkludGVycG9sYXRpb24uTGVycDE2KEluMTYsIE91dDE2LCBEYXRhLT5QYXJhbXMpOworICAgIEZyb20xNlRvRmxvYXQoT3V0MTYsIE91dCwgIG1wZSAtPk91dHB1dENoYW5uZWxzKTsKK30KKworCisvLyBHaXZlbiBhbiBoeXBlcmN1YmUgb2YgYiBkaW1lbnNpb25zLCB3aXRoIERpbXNbXSBudW1iZXIgb2Ygbm9kZXMgYnkgZGltZW5zaW9uLCBjYWxjdWxhdGUgdGhlIHRvdGFsIGFtb3VudCBvZiBub2Rlcworc3RhdGljCitjbXNVSW50MzJOdW1iZXIgQ3ViZVNpemUoY29uc3QgY21zVUludDMyTnVtYmVyIERpbXNbXSwgY21zVUludDMyTnVtYmVyIGIpCit7CisgICAgY21zVUludDMyTnVtYmVyIHJ2LCBkaW07CisKKyAgICBfY21zQXNzZXJ0KERpbXMgIT0gTlVMTCk7CisKKyAgICBmb3IgKHJ2ID0gMTsgYiA+IDA7IGItLSkgeworCisgICAgICAgIGRpbSA9IERpbXNbYi0xXTsKKyAgICAgICAgaWYgKGRpbSA9PSAwKSByZXR1cm4gMDsgIC8vIEVycm9yCisKKyAgICAgICAgcnYgKj0gZGltOworCisgICAgICAgIC8vIENoZWNrIGZvciBvdmVyZmxvdworICAgICAgICBpZiAocnYgPiBVSU5UX01BWCAvIGRpbSkgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHJ2OworfQorCitzdGF0aWMKK3ZvaWQqIENMVVRFbGVtRHVwKGNtc1N0YWdlKiBtcGUpCit7CisgICAgX2Ntc1N0YWdlQ0x1dERhdGEqIERhdGEgPSAoX2Ntc1N0YWdlQ0x1dERhdGEqKSBtcGUgLT5EYXRhOworICAgIF9jbXNTdGFnZUNMdXREYXRhKiBOZXdFbGVtOworCisKKyAgICBOZXdFbGVtID0gKF9jbXNTdGFnZUNMdXREYXRhKikgX2Ntc01hbGxvY1plcm8obXBlIC0+Q29udGV4dElELCBzaXplb2YoX2Ntc1N0YWdlQ0x1dERhdGEpKTsKKyAgICBpZiAoTmV3RWxlbSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIE5ld0VsZW0gLT5uRW50cmllcyAgICAgICA9IERhdGEgLT5uRW50cmllczsKKyAgICBOZXdFbGVtIC0+SGFzRmxvYXRWYWx1ZXMgPSBEYXRhIC0+SGFzRmxvYXRWYWx1ZXM7CisKKyAgICBpZiAoRGF0YSAtPlRhYi5UKSB7CisKKyAgICAgICAgaWYgKERhdGEgLT5IYXNGbG9hdFZhbHVlcykgeworICAgICAgICAgICAgTmV3RWxlbSAtPlRhYi5URmxvYXQgPSAoY21zRmxvYXQzMk51bWJlciopIF9jbXNEdXBNZW0obXBlIC0+Q29udGV4dElELCBEYXRhIC0+VGFiLlRGbG9hdCwgRGF0YSAtPm5FbnRyaWVzICogc2l6ZW9mIChjbXNGbG9hdDMyTnVtYmVyKSk7CisgICAgICAgICAgICBpZiAoTmV3RWxlbSAtPlRhYi5URmxvYXQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTmV3RWxlbSAtPlRhYi5UID0gKGNtc1VJbnQxNk51bWJlciopIF9jbXNEdXBNZW0obXBlIC0+Q29udGV4dElELCBEYXRhIC0+VGFiLlQsIERhdGEgLT5uRW50cmllcyAqIHNpemVvZiAoY21zVUludDE2TnVtYmVyKSk7CisgICAgICAgICAgICBpZiAoTmV3RWxlbSAtPlRhYi5URmxvYXQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgTmV3RWxlbSAtPlBhcmFtcyAgID0gX2Ntc0NvbXB1dGVJbnRlcnBQYXJhbXNFeChtcGUgLT5Db250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIC0+UGFyYW1zIC0+blNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIC0+UGFyYW1zIC0+bklucHV0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgLT5QYXJhbXMgLT5uT3V0cHV0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ld0VsZW0gLT5UYWIuVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgLT5QYXJhbXMgLT5kd0ZsYWdzKTsKKyAgICBpZiAoTmV3RWxlbS0+UGFyYW1zICE9IE5VTEwpCisgICAgICAgIHJldHVybiAodm9pZCopIE5ld0VsZW07CisgRXJyb3I6CisgICAgaWYgKE5ld0VsZW0tPlRhYi5UKQorICAgICAgICAvLyBUaGlzIHdvcmtzIGZvciBib3RoIHR5cGVzCisgICAgICAgIF9jbXNGcmVlKG1wZSAtPkNvbnRleHRJRCwgTmV3RWxlbSAtPiBUYWIuVCk7CisgICAgX2Ntc0ZyZWUobXBlIC0+Q29udGV4dElELCBOZXdFbGVtKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMKK3ZvaWQgQ0x1dEVsZW1UeXBlRnJlZShjbXNTdGFnZSogbXBlKQoreworCisgICAgX2Ntc1N0YWdlQ0x1dERhdGEqIERhdGEgPSAoX2Ntc1N0YWdlQ0x1dERhdGEqKSBtcGUgLT5EYXRhOworCisgICAgLy8gQWxyZWFkeSBlbXB0eQorICAgIGlmIChEYXRhID09IE5VTEwpIHJldHVybjsKKworICAgIC8vIFRoaXMgd29ya3MgZm9yIGJvdGggdHlwZXMKKyAgICBpZiAoRGF0YSAtPiBUYWIuVCkKKyAgICAgICAgX2Ntc0ZyZWUobXBlIC0+Q29udGV4dElELCBEYXRhIC0+IFRhYi5UKTsKKworICAgIF9jbXNGcmVlSW50ZXJwUGFyYW1zKERhdGEgLT5QYXJhbXMpOworICAgIF9jbXNGcmVlKG1wZSAtPkNvbnRleHRJRCwgbXBlIC0+RGF0YSk7Cit9CisKKworLy8gQWxsb2NhdGVzIGEgMTYtYml0IG11bHRpZGltZW5zaW9uYWwgQ0xVVC4gVGhpcyBpcyBldmFsdWF0ZWQgYXQgMTYtYml0IHByZWNpc2lvbi4gVGFibGUgbWF5IGhhdmUgZGlmZmVyZW50CisvLyBncmFudWxhcml0eSBvbiBlYWNoIGRpbWVuc2lvbi4KK2Ntc1N0YWdlKiBDTVNFWFBPUlQgY21zU3RhZ2VBbGxvY0NMdXQxNmJpdEdyYW51bGFyKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNVSW50MzJOdW1iZXIgY2x1dFBvaW50c1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgaW5wdXRDaGFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgb3V0cHV0Q2hhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zVUludDE2TnVtYmVyKiBUYWJsZSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaSwgbjsKKyAgICBfY21zU3RhZ2VDTHV0RGF0YSogTmV3RWxlbTsKKyAgICBjbXNTdGFnZSogTmV3TVBFOworCisgICAgX2Ntc0Fzc2VydChjbHV0UG9pbnRzICE9IE5VTEwpOworCisgICAgaWYgKGlucHV0Q2hhbiA+IE1BWF9JTlBVVF9ESU1FTlNJT05TKSB7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKENvbnRleHRJRCwgY21zRVJST1JfUkFOR0UsICJUb28gbWFueSBpbnB1dCBjaGFubmVscyAoJWQgY2hhbm5lbHMsIG1heD0lZCkiLCBpbnB1dENoYW4sIE1BWF9JTlBVVF9ESU1FTlNJT05TKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgTmV3TVBFID0gX2Ntc1N0YWdlQWxsb2NQbGFjZWhvbGRlcihDb250ZXh0SUQsIGNtc1NpZ0NMdXRFbGVtVHlwZSwgaW5wdXRDaGFuLCBvdXRwdXRDaGFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2YWx1YXRlQ0xVVGZsb2F0SW4xNiwgQ0xVVEVsZW1EdXAsIENMdXRFbGVtVHlwZUZyZWUsIE5VTEwgKTsKKworICAgIGlmIChOZXdNUEUgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBOZXdFbGVtID0gKF9jbXNTdGFnZUNMdXREYXRhKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoX2Ntc1N0YWdlQ0x1dERhdGEpKTsKKyAgICBpZiAoTmV3RWxlbSA9PSBOVUxMKSB7CisgICAgICAgIGNtc1N0YWdlRnJlZShOZXdNUEUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBOZXdNUEUgLT5EYXRhICA9ICh2b2lkKikgTmV3RWxlbTsKKworICAgIE5ld0VsZW0gLT4gbkVudHJpZXMgPSBuID0gb3V0cHV0Q2hhbiAqIEN1YmVTaXplKGNsdXRQb2ludHMsIGlucHV0Q2hhbik7CisgICAgTmV3RWxlbSAtPiBIYXNGbG9hdFZhbHVlcyA9IEZBTFNFOworCisgICAgaWYgKG4gPT0gMCkgeworICAgICAgICBjbXNTdGFnZUZyZWUoTmV3TVBFKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisKKyAgICBOZXdFbGVtIC0+VGFiLlQgID0gKGNtc1VJbnQxNk51bWJlciopIF9jbXNDYWxsb2MoQ29udGV4dElELCBuLCBzaXplb2YoY21zVUludDE2TnVtYmVyKSk7CisgICAgaWYgKE5ld0VsZW0gLT5UYWIuVCA9PSBOVUxMKSB7CisgICAgICAgIGNtc1N0YWdlRnJlZShOZXdNUEUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoVGFibGUgIT0gTlVMTCkgeworICAgICAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgTmV3RWxlbSAtPlRhYi5UW2ldID0gVGFibGVbaV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOZXdFbGVtIC0+UGFyYW1zID0gX2Ntc0NvbXB1dGVJbnRlcnBQYXJhbXNFeChDb250ZXh0SUQsIGNsdXRQb2ludHMsIGlucHV0Q2hhbiwgb3V0cHV0Q2hhbiwgTmV3RWxlbSAtPlRhYi5ULCBDTVNfTEVSUF9GTEFHU18xNkJJVFMpOworICAgIGlmIChOZXdFbGVtIC0+UGFyYW1zID09IE5VTEwpIHsKKyAgICAgICAgY21zU3RhZ2VGcmVlKE5ld01QRSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBOZXdNUEU7Cit9CisKK2Ntc1N0YWdlKiBDTVNFWFBPUlQgY21zU3RhZ2VBbGxvY0NMdXQxNmJpdChjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBuR3JpZFBvaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBpbnB1dENoYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgb3V0cHV0Q2hhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1VJbnQxNk51bWJlciogVGFibGUpCit7CisgICAgY21zVUludDMyTnVtYmVyIERpbWVuc2lvbnNbTUFYX0lOUFVUX0RJTUVOU0lPTlNdOworICAgIGludCBpOworCisgICAvLyBPdXIgcmVzdWx0aW5nIExVVCB3b3VsZCBiZSBzYW1lIGdyaWRwb2ludHMgb24gYWxsIGRpbWVuc2lvbnMKKyAgICBmb3IgKGk9MDsgaSA8IE1BWF9JTlBVVF9ESU1FTlNJT05TOyBpKyspCisgICAgICAgIERpbWVuc2lvbnNbaV0gPSBuR3JpZFBvaW50czsKKworICAgIHJldHVybiBjbXNTdGFnZUFsbG9jQ0x1dDE2Yml0R3JhbnVsYXIoQ29udGV4dElELCBEaW1lbnNpb25zLCBpbnB1dENoYW4sIG91dHB1dENoYW4sIFRhYmxlKTsKK30KKworCitjbXNTdGFnZSogQ01TRVhQT1JUIGNtc1N0YWdlQWxsb2NDTHV0RmxvYXQoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgbkdyaWRQb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgaW5wdXRDaGFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG91dHB1dENoYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNGbG9hdDMyTnVtYmVyKiBUYWJsZSkKK3sKKyAgIGNtc1VJbnQzMk51bWJlciBEaW1lbnNpb25zW01BWF9JTlBVVF9ESU1FTlNJT05TXTsKKyAgIGludCBpOworCisgICAgLy8gT3VyIHJlc3VsdGluZyBMVVQgd291bGQgYmUgc2FtZSBncmlkcG9pbnRzIG9uIGFsbCBkaW1lbnNpb25zCisgICAgZm9yIChpPTA7IGkgPCBNQVhfSU5QVVRfRElNRU5TSU9OUzsgaSsrKQorICAgICAgICBEaW1lbnNpb25zW2ldID0gbkdyaWRQb2ludHM7CisKKyAgICByZXR1cm4gY21zU3RhZ2VBbGxvY0NMdXRGbG9hdEdyYW51bGFyKENvbnRleHRJRCwgRGltZW5zaW9ucywgaW5wdXRDaGFuLCBvdXRwdXRDaGFuLCBUYWJsZSk7Cit9CisKKworCitjbXNTdGFnZSogQ01TRVhQT1JUIGNtc1N0YWdlQWxsb2NDTHV0RmxvYXRHcmFudWxhcihjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3QgY21zVUludDMyTnVtYmVyIGNsdXRQb2ludHNbXSwgY21zVUludDMyTnVtYmVyIGlucHV0Q2hhbiwgY21zVUludDMyTnVtYmVyIG91dHB1dENoYW4sIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIqIFRhYmxlKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpLCBuOworICAgIF9jbXNTdGFnZUNMdXREYXRhKiBOZXdFbGVtOworICAgIGNtc1N0YWdlKiBOZXdNUEU7CisKKyAgICBfY21zQXNzZXJ0KGNsdXRQb2ludHMgIT0gTlVMTCk7CisKKyAgICBpZiAoaW5wdXRDaGFuID4gTUFYX0lOUFVUX0RJTUVOU0lPTlMpIHsKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9SQU5HRSwgIlRvbyBtYW55IGlucHV0IGNoYW5uZWxzICglZCBjaGFubmVscywgbWF4PSVkKSIsIGlucHV0Q2hhbiwgTUFYX0lOUFVUX0RJTUVOU0lPTlMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBOZXdNUEUgPSBfY21zU3RhZ2VBbGxvY1BsYWNlaG9sZGVyKENvbnRleHRJRCwgY21zU2lnQ0x1dEVsZW1UeXBlLCBpbnB1dENoYW4sIG91dHB1dENoYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmFsdWF0ZUNMVVRmbG9hdCwgQ0xVVEVsZW1EdXAsIENMdXRFbGVtVHlwZUZyZWUsIE5VTEwpOworICAgIGlmIChOZXdNUEUgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKworICAgIE5ld0VsZW0gPSAoX2Ntc1N0YWdlQ0x1dERhdGEqKSBfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIHNpemVvZihfY21zU3RhZ2VDTHV0RGF0YSkpOworICAgIGlmIChOZXdFbGVtID09IE5VTEwpIHsKKyAgICAgICAgY21zU3RhZ2VGcmVlKE5ld01QRSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIE5ld01QRSAtPkRhdGEgID0gKHZvaWQqKSBOZXdFbGVtOworCisgICAgLy8gVGhlcmUgaXMgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBvbiBjb25wdXRpbmcgbiBhbmQgbkVudHJpZXMuCisgICAgTmV3RWxlbSAtPiBuRW50cmllcyA9IG4gPSBvdXRwdXRDaGFuICogQ3ViZVNpemUoY2x1dFBvaW50cywgaW5wdXRDaGFuKTsKKyAgICBOZXdFbGVtIC0+IEhhc0Zsb2F0VmFsdWVzID0gVFJVRTsKKworICAgIGlmIChuID09IDApIHsKKyAgICAgICAgY21zU3RhZ2VGcmVlKE5ld01QRSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIE5ld0VsZW0gLT5UYWIuVEZsb2F0ICA9IChjbXNGbG9hdDMyTnVtYmVyKikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIG4sIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKSk7CisgICAgaWYgKE5ld0VsZW0gLT5UYWIuVEZsb2F0ID09IE5VTEwpIHsKKyAgICAgICAgY21zU3RhZ2VGcmVlKE5ld01QRSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChUYWJsZSAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBOZXdFbGVtIC0+VGFiLlRGbG9hdFtpXSA9IFRhYmxlW2ldOworICAgICAgICB9CisgICAgfQorCisgICAgTmV3RWxlbSAtPlBhcmFtcyA9IF9jbXNDb21wdXRlSW50ZXJwUGFyYW1zRXgoQ29udGV4dElELCBjbHV0UG9pbnRzLCAgaW5wdXRDaGFuLCBvdXRwdXRDaGFuLCBOZXdFbGVtIC0+VGFiLlRGbG9hdCwgQ01TX0xFUlBfRkxBR1NfRkxPQVQpOworICAgIGlmIChOZXdFbGVtIC0+UGFyYW1zID09IE5VTEwpIHsKKyAgICAgICAgY21zU3RhZ2VGcmVlKE5ld01QRSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBOZXdNUEU7Cit9CisKKworc3RhdGljCitpbnQgSWRlbnRpdHlTYW1wbGVyKHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbltdLCByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0W10sIHJlZ2lzdGVyIHZvaWQgKiBDYXJnbykKK3sKKyAgICBpbnQgbkNoYW4gPSAqKGludCopIENhcmdvOworICAgIGludCBpOworCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKQorICAgICAgICBPdXRbaV0gPSBJbltpXTsKKworICAgIHJldHVybiAxOworfQorCisvLyBDcmVhdGVzIGFuIE1QRSB0aGF0IGp1c3QgY29waWVzIGlucHV0IHRvIG91dHB1dAorY21zU3RhZ2UqIF9jbXNTdGFnZUFsbG9jSWRlbnRpdHlDTHV0KGNtc0NvbnRleHQgQ29udGV4dElELCBpbnQgbkNoYW4pCit7CisgICAgY21zVUludDMyTnVtYmVyIERpbWVuc2lvbnNbTUFYX0lOUFVUX0RJTUVOU0lPTlNdOworICAgIGNtc1N0YWdlKiBtcGUgOworICAgIGludCBpOworCisgICAgZm9yIChpPTA7IGkgPCBNQVhfSU5QVVRfRElNRU5TSU9OUzsgaSsrKQorICAgICAgICBEaW1lbnNpb25zW2ldID0gMjsKKworICAgIG1wZSA9IGNtc1N0YWdlQWxsb2NDTHV0MTZiaXRHcmFudWxhcihDb250ZXh0SUQsIERpbWVuc2lvbnMsIG5DaGFuLCBuQ2hhbiwgTlVMTCk7CisgICAgaWYgKG1wZSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGlmICghY21zU3RhZ2VTYW1wbGVDTHV0MTZiaXQobXBlLCBJZGVudGl0eVNhbXBsZXIsICZuQ2hhbiwgMCkpIHsKKyAgICAgICAgY21zU3RhZ2VGcmVlKG1wZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZSAtPkltcGxlbWVudHMgPSBjbXNTaWdJZGVudGl0eUVsZW1UeXBlOworICAgIHJldHVybiBtcGU7Cit9CisKKworCisvLyBRdWFudGl6ZSBhIHZhbHVlIDAgPD0gaSA8IE1heFNhbXBsZXMgdG8gMC4uMHhmZmZmCitjbXNVSW50MTZOdW1iZXIgX2Ntc1F1YW50aXplVmFsKGNtc0Zsb2F0NjROdW1iZXIgaSwgaW50IE1heFNhbXBsZXMpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciB4OworCisgICAgeCA9ICgoY21zRmxvYXQ2NE51bWJlcikgaSAqIDY1NTM1LikgLyAoY21zRmxvYXQ2NE51bWJlcikgKE1heFNhbXBsZXMgLSAxKTsKKyAgICByZXR1cm4gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKHgpOworfQorCisKKy8vIFRoaXMgcm91dGluZSBkb2VzIGEgc3dlZXAgb24gd2hvbGUgaW5wdXQgc3BhY2UsIGFuZCBjYWxscyBpdHMgY2FsbGJhY2sKKy8vIGZ1bmN0aW9uIG9uIGtub3RzLiByZXR1cm5zIFRSVUUgaWYgYWxsIG9rLCBGQUxTRSBvdGhlcndpc2UuCitjbXNCb29sIENNU0VYUE9SVCBjbXNTdGFnZVNhbXBsZUNMdXQxNmJpdChjbXNTdGFnZSogbXBlLCBjbXNTQU1QTEVSMTYgU2FtcGxlciwgdm9pZCAqIENhcmdvLCBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykKK3sKKyAgICBpbnQgaSwgdCwgblRvdGFsUG9pbnRzLCBpbmRleCwgcmVzdDsKKyAgICBpbnQgbklucHV0cywgbk91dHB1dHM7CisgICAgY21zVUludDMyTnVtYmVyKiBuU2FtcGxlczsKKyAgICBjbXNVSW50MTZOdW1iZXIgSW5bTUFYX0lOUFVUX0RJTUVOU0lPTlMrMV0sIE91dFtNQVhfU1RBR0VfQ0hBTk5FTFNdOworICAgIF9jbXNTdGFnZUNMdXREYXRhKiBjbHV0OworCisgICAgaWYgKG1wZSA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICBjbHV0ID0gKF9jbXNTdGFnZUNMdXREYXRhKikgbXBlLT5EYXRhOworCisgICAgaWYgKGNsdXQgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgblNhbXBsZXMgPSBjbHV0LT5QYXJhbXMgLT5uU2FtcGxlczsKKyAgICBuSW5wdXRzICA9IGNsdXQtPlBhcmFtcyAtPm5JbnB1dHM7CisgICAgbk91dHB1dHMgPSBjbHV0LT5QYXJhbXMgLT5uT3V0cHV0czsKKworICAgIGlmIChuSW5wdXRzIDw9IDApIHJldHVybiBGQUxTRTsKKyAgICBpZiAobk91dHB1dHMgPD0gMCkgcmV0dXJuIEZBTFNFOworICAgIGlmIChuSW5wdXRzID4gTUFYX0lOUFVUX0RJTUVOU0lPTlMpIHJldHVybiBGQUxTRTsKKyAgICBpZiAobk91dHB1dHMgPj0gTUFYX1NUQUdFX0NIQU5ORUxTKSByZXR1cm4gRkFMU0U7CisKKyAgICBuVG90YWxQb2ludHMgPSBDdWJlU2l6ZShuU2FtcGxlcywgbklucHV0cyk7CisgICAgaWYgKG5Ub3RhbFBvaW50cyA9PSAwKSByZXR1cm4gRkFMU0U7CisKKyAgICBpbmRleCA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IG5Ub3RhbFBvaW50czsgaSsrKSB7CisKKyAgICAgICAgcmVzdCA9IGk7CisgICAgICAgIGZvciAodCA9IG5JbnB1dHMtMTsgdCA+PTA7IC0tdCkgeworCisgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgIENvbG9yYW50ID0gcmVzdCAlIG5TYW1wbGVzW3RdOworCisgICAgICAgICAgICByZXN0IC89IG5TYW1wbGVzW3RdOworCisgICAgICAgICAgICBJblt0XSA9IF9jbXNRdWFudGl6ZVZhbChDb2xvcmFudCwgblNhbXBsZXNbdF0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNsdXQgLT5UYWIuVCAhPSBOVUxMKSB7CisgICAgICAgICAgICBmb3IgKHQ9MDsgdCA8IG5PdXRwdXRzOyB0KyspCisgICAgICAgICAgICAgICAgT3V0W3RdID0gY2x1dC0+VGFiLlRbaW5kZXggKyB0XTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghU2FtcGxlcihJbiwgT3V0LCBDYXJnbykpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgaWYgKCEoZHdGbGFncyAmIFNBTVBMRVJfSU5TUEVDVCkpIHsKKworICAgICAgICAgICAgaWYgKGNsdXQgLT5UYWIuVCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZm9yICh0PTA7IHQgPCBuT3V0cHV0czsgdCsrKQorICAgICAgICAgICAgICAgICAgICBjbHV0LT5UYWIuVFtpbmRleCArIHRdID0gT3V0W3RdOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW5kZXggKz0gbk91dHB1dHM7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIFNhbWUgYXMgYW50ZXJpb3IsIGJ1dCBmb3IgZmxvdGluZyBwb2ludAorY21zQm9vbCBDTVNFWFBPUlQgY21zU3RhZ2VTYW1wbGVDTHV0RmxvYXQoY21zU3RhZ2UqIG1wZSwgY21zU0FNUExFUkZMT0FUIFNhbXBsZXIsIHZvaWQgKiBDYXJnbywgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisgICAgaW50IGksIHQsIG5Ub3RhbFBvaW50cywgaW5kZXgsIHJlc3Q7CisgICAgaW50IG5JbnB1dHMsIG5PdXRwdXRzOworICAgIGNtc1VJbnQzMk51bWJlciogblNhbXBsZXM7CisgICAgY21zRmxvYXQzMk51bWJlciBJbltNQVhfSU5QVVRfRElNRU5TSU9OUysxXSwgT3V0W01BWF9TVEFHRV9DSEFOTkVMU107CisgICAgX2Ntc1N0YWdlQ0x1dERhdGEqIGNsdXQgPSAoX2Ntc1N0YWdlQ0x1dERhdGEqKSBtcGUtPkRhdGE7CisKKyAgICBuU2FtcGxlcyA9IGNsdXQtPlBhcmFtcyAtPm5TYW1wbGVzOworICAgIG5JbnB1dHMgID0gY2x1dC0+UGFyYW1zIC0+bklucHV0czsKKyAgICBuT3V0cHV0cyA9IGNsdXQtPlBhcmFtcyAtPm5PdXRwdXRzOworCisgICAgaWYgKG5JbnB1dHMgPD0gMCkgcmV0dXJuIEZBTFNFOworICAgIGlmIChuT3V0cHV0cyA8PSAwKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKG5JbnB1dHMgID4gTUFYX0lOUFVUX0RJTUVOU0lPTlMpIHJldHVybiBGQUxTRTsKKyAgICBpZiAobk91dHB1dHMgPj0gTUFYX1NUQUdFX0NIQU5ORUxTKSByZXR1cm4gRkFMU0U7CisKKyAgICBuVG90YWxQb2ludHMgPSBDdWJlU2l6ZShuU2FtcGxlcywgbklucHV0cyk7CisgICAgaWYgKG5Ub3RhbFBvaW50cyA9PSAwKSByZXR1cm4gRkFMU0U7CisKKyAgICBpbmRleCA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IG5Ub3RhbFBvaW50czsgaSsrKSB7CisKKyAgICAgICAgcmVzdCA9IGk7CisgICAgICAgIGZvciAodCA9IG5JbnB1dHMtMTsgdCA+PTA7IC0tdCkgeworCisgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgIENvbG9yYW50ID0gcmVzdCAlIG5TYW1wbGVzW3RdOworCisgICAgICAgICAgICByZXN0IC89IG5TYW1wbGVzW3RdOworCisgICAgICAgICAgICBJblt0XSA9ICAoY21zRmxvYXQzMk51bWJlcikgKF9jbXNRdWFudGl6ZVZhbChDb2xvcmFudCwgblNhbXBsZXNbdF0pIC8gNjU1MzUuMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2x1dCAtPlRhYi5URmxvYXQgIT0gTlVMTCkgeworICAgICAgICAgICAgZm9yICh0PTA7IHQgPCBuT3V0cHV0czsgdCsrKQorICAgICAgICAgICAgICAgIE91dFt0XSA9IGNsdXQtPlRhYi5URmxvYXRbaW5kZXggKyB0XTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghU2FtcGxlcihJbiwgT3V0LCBDYXJnbykpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgaWYgKCEoZHdGbGFncyAmIFNBTVBMRVJfSU5TUEVDVCkpIHsKKworICAgICAgICAgICAgaWYgKGNsdXQgLT5UYWIuVEZsb2F0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHQ9MDsgdCA8IG5PdXRwdXRzOyB0KyspCisgICAgICAgICAgICAgICAgICAgIGNsdXQtPlRhYi5URmxvYXRbaW5kZXggKyB0XSA9IE91dFt0XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGluZGV4ICs9IG5PdXRwdXRzOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisKKworLy8gVGhpcyByb3V0aW5lIGRvZXMgYSBzd2VlcCBvbiB3aG9sZSBpbnB1dCBzcGFjZSwgYW5kIGNhbGxzIGl0cyBjYWxsYmFjaworLy8gZnVuY3Rpb24gb24ga25vdHMuIHJldHVybnMgVFJVRSBpZiBhbGwgb2ssIEZBTFNFIG90aGVyd2lzZS4KK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc1NsaWNlU3BhY2UxNihjbXNVSW50MzJOdW1iZXIgbklucHV0cywgY29uc3QgY21zVUludDMyTnVtYmVyIGNsdXRQb2ludHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zU0FNUExFUjE2IFNhbXBsZXIsIHZvaWQgKiBDYXJnbykKK3sKKyAgICBpbnQgaSwgdCwgblRvdGFsUG9pbnRzLCByZXN0OworICAgIGNtc1VJbnQxNk51bWJlciBJbltjbXNNQVhDSEFOTkVMU107CisKKyAgICBpZiAobklucHV0cyA+PSBjbXNNQVhDSEFOTkVMUykgcmV0dXJuIEZBTFNFOworCisgICAgblRvdGFsUG9pbnRzID0gQ3ViZVNpemUoY2x1dFBvaW50cywgbklucHV0cyk7CisgICAgaWYgKG5Ub3RhbFBvaW50cyA9PSAwKSByZXR1cm4gRkFMU0U7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgblRvdGFsUG9pbnRzOyBpKyspIHsKKworICAgICAgICByZXN0ID0gaTsKKyAgICAgICAgZm9yICh0ID0gbklucHV0cy0xOyB0ID49MDsgLS10KSB7CisKKyAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgQ29sb3JhbnQgPSByZXN0ICUgY2x1dFBvaW50c1t0XTsKKworICAgICAgICAgICAgcmVzdCAvPSBjbHV0UG9pbnRzW3RdOworICAgICAgICAgICAgSW5bdF0gPSBfY21zUXVhbnRpemVWYWwoQ29sb3JhbnQsIGNsdXRQb2ludHNbdF0pOworCisgICAgICAgIH0KKworICAgICAgICBpZiAoIVNhbXBsZXIoSW4sIE5VTEwsIENhcmdvKSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworY21zSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc1NsaWNlU3BhY2VGbG9hdChjbXNVSW50MzJOdW1iZXIgbklucHV0cywgY29uc3QgY21zVUludDMyTnVtYmVyIGNsdXRQb2ludHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zU0FNUExFUkZMT0FUIFNhbXBsZXIsIHZvaWQgKiBDYXJnbykKK3sKKyAgICBpbnQgaSwgdCwgblRvdGFsUG9pbnRzLCByZXN0OworICAgIGNtc0Zsb2F0MzJOdW1iZXIgSW5bY21zTUFYQ0hBTk5FTFNdOworCisgICAgaWYgKG5JbnB1dHMgPj0gY21zTUFYQ0hBTk5FTFMpIHJldHVybiBGQUxTRTsKKworICAgIG5Ub3RhbFBvaW50cyA9IEN1YmVTaXplKGNsdXRQb2ludHMsIG5JbnB1dHMpOworICAgIGlmIChuVG90YWxQb2ludHMgPT0gMCkgcmV0dXJuIEZBTFNFOworCisgICAgZm9yIChpID0gMDsgaSA8IG5Ub3RhbFBvaW50czsgaSsrKSB7CisKKyAgICAgICAgcmVzdCA9IGk7CisgICAgICAgIGZvciAodCA9IG5JbnB1dHMtMTsgdCA+PTA7IC0tdCkgeworCisgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgIENvbG9yYW50ID0gcmVzdCAlIGNsdXRQb2ludHNbdF07CisKKyAgICAgICAgICAgIHJlc3QgLz0gY2x1dFBvaW50c1t0XTsKKyAgICAgICAgICAgIEluW3RdID0gIChjbXNGbG9hdDMyTnVtYmVyKSAoX2Ntc1F1YW50aXplVmFsKENvbG9yYW50LCBjbHV0UG9pbnRzW3RdKSAvIDY1NTM1LjApOworCisgICAgICAgIH0KKworICAgICAgICBpZiAoIVNhbXBsZXIoSW4sIE5VTEwsIENhcmdvKSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnTGFiMlhZWkVsZW1UeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisKK3N0YXRpYwordm9pZCBFdmFsdWF0ZUxhYjJYWVooY29uc3QgY21zRmxvYXQzMk51bWJlciBJbltdLAorICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciBPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1N0YWdlICptcGUpCit7CisgICAgY21zQ0lFTGFiIExhYjsKKyAgICBjbXNDSUVYWVogWFlaOworICAgIGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIgWFlaYWRqID0gTUFYX0VOQ09ERUFCTEVfWFlaOworCisgICAgLy8gVjQgcnVsZXMKKyAgICBMYWIuTCA9IEluWzBdICogMTAwLjA7CisgICAgTGFiLmEgPSBJblsxXSAqIDI1NS4wIC0gMTI4LjA7CisgICAgTGFiLmIgPSBJblsyXSAqIDI1NS4wIC0gMTI4LjA7CisKKyAgICBjbXNMYWIyWFlaKE5VTEwsICZYWVosICZMYWIpOworCisgICAgLy8gRnJvbSBYWVosIHJhbmdlIDAuLjE5OTk3IHRvIDAuLjEuMCwgbm90ZSB0aGF0IDEuOTk5OTcgY29tZXMgZnJvbSAweGZmZmYKKyAgICAvLyBlbmNvZGVkIGFzIDEuMTUgZml4ZWQgcG9pbnQsIHNvIDEgKyAoMzI3NjcuMCAvIDMyNzY4LjApCisKKyAgICBPdXRbMF0gPSAoY21zRmxvYXQzMk51bWJlcikgKChjbXNGbG9hdDY0TnVtYmVyKSBYWVouWCAvIFhZWmFkaik7CisgICAgT3V0WzFdID0gKGNtc0Zsb2F0MzJOdW1iZXIpICgoY21zRmxvYXQ2NE51bWJlcikgWFlaLlkgLyBYWVphZGopOworICAgIE91dFsyXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoKGNtc0Zsb2F0NjROdW1iZXIpIFhZWi5aIC8gWFlaYWRqKTsKKyAgICByZXR1cm47CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG1wZSk7Cit9CisKKworLy8gTm8gZHVwIG9yIGZyZWUgcm91dGluZXMgbmVlZGVkLCBhcyB0aGUgc3RydWN0dXJlIGhhcyBubyBwb2ludGVycyBpbiBpdC4KK2Ntc1N0YWdlKiBfY21zU3RhZ2VBbGxvY0xhYjJYWVooY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgcmV0dXJuIF9jbXNTdGFnZUFsbG9jUGxhY2Vob2xkZXIoQ29udGV4dElELCBjbXNTaWdMYWIyWFlaRWxlbVR5cGUsIDMsIDMsIEV2YWx1YXRlTGFiMlhZWiwgTlVMTCwgTlVMTCwgTlVMTCk7Cit9CisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8vIHYyIEw9MTAwIGlzIHN1cHBvc2VkIHRvIGJlIHBsYWNlZCBvbiAweEZGMDAuIFRoZXJlIGlzIG5vIHJlYXNvbmFibGUKKy8vIG51bWJlciBvZiBncmlkcG9pbnRzIHRoYXQgd291bGQgbWFrZSBleGFjdCBtYXRjaC4gSG93ZXZlciwgYSBwcmVsaW5lYXJpemF0aW9uCisvLyBvZiAyNTggZW50cmllcywgd291bGQgbWFwIDB4RkYwMCBleGFjdGx5IG9uIGVudHJ5IDI1NywgYW5kIHRoaXMgaXMgZ29vZCB0byBhdm9pZCBzY3VtIGRvdC4KKy8vIEFsbW9zdCBhbGwgd2hhdCB3ZSBuZWVkIGJ1dCB1bmZvcnR1bmF0ZWx5LCB0aGUgcmVzdCBvZiBlbnRyaWVzIHNob3VsZCBiZSBzY2FsZWQgYnkKKy8vICgyNTUqMjU3LzI1NikgYW5kIHRoaXMgaXMgbm90IGV4YWN0LgorCitjbXNTdGFnZSogX2Ntc1N0YWdlQWxsb2NMYWJWMlRvVjRjdXJ2ZXMoY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgY21zU3RhZ2UqIG1wZTsKKyAgICBjbXNUb25lQ3VydmUqIExhYlRhYmxlWzNdOworICAgIGludCBpLCBqOworCisgICAgTGFiVGFibGVbMF0gPSBjbXNCdWlsZFRhYnVsYXRlZFRvbmVDdXJ2ZTE2KENvbnRleHRJRCwgMjU4LCBOVUxMKTsKKyAgICBMYWJUYWJsZVsxXSA9IGNtc0J1aWxkVGFidWxhdGVkVG9uZUN1cnZlMTYoQ29udGV4dElELCAyNTgsIE5VTEwpOworICAgIExhYlRhYmxlWzJdID0gY21zQnVpbGRUYWJ1bGF0ZWRUb25lQ3VydmUxNihDb250ZXh0SUQsIDI1OCwgTlVMTCk7CisKKyAgICBmb3IgKGo9MDsgaiA8IDM7IGorKykgeworCisgICAgICAgIGlmIChMYWJUYWJsZVtqXSA9PSBOVUxMKSB7CisgICAgICAgICAgICBjbXNGcmVlVG9uZUN1cnZlVHJpcGxlKExhYlRhYmxlKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgbmVlZCB0byBtYXAgKiAoMHhmZmZmIC8gMHhmZjAwKSwgdGhhdHMgc2FtZSBhcyAoMjU3IC8gMjU2KQorICAgICAgICAvLyBTbyB3ZSBjYW4gdXNlIDI1OC1lbnRyeSB0YWJsZXMgdG8gZG8gdGhlIHRyaWNrIChpIC8gMjU3KSAqICgyNTUgKiAyNTcpICogKDI1NyAvIDI1Nik7CisgICAgICAgIGZvciAoaT0wOyBpIDwgMjU3OyBpKyspICB7CisKKyAgICAgICAgICAgIExhYlRhYmxlW2pdLT5UYWJsZTE2W2ldID0gKGNtc1VJbnQxNk51bWJlcikgKChpICogMHhmZmZmICsgMHg4MCkgPj4gOCk7CisgICAgICAgIH0KKworICAgICAgICBMYWJUYWJsZVtqXSAtPlRhYmxlMTZbMjU3XSA9IDB4ZmZmZjsKKyAgICB9CisKKyAgICBtcGUgPSBjbXNTdGFnZUFsbG9jVG9uZUN1cnZlcyhDb250ZXh0SUQsIDMsIExhYlRhYmxlKTsKKyAgICBjbXNGcmVlVG9uZUN1cnZlVHJpcGxlKExhYlRhYmxlKTsKKworICAgIGlmIChtcGUgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisgICAgbXBlIC0+SW1wbGVtZW50cyA9IGNtc1NpZ0xhYlYydG9WNDsKKyAgICByZXR1cm4gbXBlOworfQorCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisvLyBNYXRyaXgtYmFzZWQgY29udmVyc2lvbiwgd2hpY2ggaXMgbW9yZSBhY2N1cmF0ZSwgYnV0IHNsb3dlciBhbmQgY2Fubm90IHByb3Blcmx5IGJlIHNhdmVkIGluIGRldmljZWxpbmsgcHJvZmlsZXMKK2Ntc1N0YWdlKiBfY21zU3RhZ2VBbGxvY0xhYlYyVG9WNChjbXNDb250ZXh0IENvbnRleHRJRCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY21zRmxvYXQ2NE51bWJlciBWMlRvVjRbXSA9IHsgNjU1MzUuMC82NTI4MC4wLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDY1NTM1LjAvNjUyODAuMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCA2NTUzNS4wLzY1MjgwLjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworCisgICAgY21zU3RhZ2UgKm1wZSA9IGNtc1N0YWdlQWxsb2NNYXRyaXgoQ29udGV4dElELCAzLCAzLCBWMlRvVjQsIE5VTEwpOworCisgICAgaWYgKG1wZSA9PSBOVUxMKSByZXR1cm4gbXBlOworICAgIG1wZSAtPkltcGxlbWVudHMgPSBjbXNTaWdMYWJWMnRvVjQ7CisgICAgcmV0dXJuIG1wZTsKK30KKworCisvLyBSZXZlcnNlIGRpcmVjdGlvbgorY21zU3RhZ2UqIF9jbXNTdGFnZUFsbG9jTGFiVjRUb1YyKGNtc0NvbnRleHQgQ29udGV4dElEKQoreworICAgIHN0YXRpYyBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIFY0VG9WMltdID0geyA2NTI4MC4wLzY1NTM1LjAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgNjUyODAuMC82NTUzNS4wLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDY1MjgwLjAvNjU1MzUuMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgY21zU3RhZ2UgKm1wZSA9IGNtc1N0YWdlQWxsb2NNYXRyaXgoQ29udGV4dElELCAzLCAzLCBWNFRvVjIsIE5VTEwpOworCisgICAgaWYgKG1wZSA9PSBOVUxMKSByZXR1cm4gbXBlOworICAgIG1wZSAtPkltcGxlbWVudHMgPSBjbXNTaWdMYWJWNHRvVjI7CisgICAgcmV0dXJuIG1wZTsKK30KKworCisvLyBUbyBMYWIgdG8gZmxvYXQuIE5vdGUgdGhhdCB0aGUgTVBFIGdpdmVzIG51bWJlcnMgaW4gbm9ybWFsIExhYiByYW5nZQorLy8gYW5kIHdlIG5lZWQgMC4uMS4wIHJhbmdlIGZvciB0aGUgZm9ybWF0dGVycworLy8gTCogOiAwLi4uMTAwID0+IDAuLi4xLjAgIChMKiAvIDEwMCkKKy8vIGFiKiA6IC0xMjguLisxMjcgdG8gMC4uMSAgKChhYiogKyAxMjgpIC8gMjU1KQorCitjbXNTdGFnZSogX2Ntc1N0YWdlTm9ybWFsaXplRnJvbUxhYkZsb2F0KGNtc0NvbnRleHQgQ29udGV4dElEKQoreworICAgIHN0YXRpYyBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIGExW10gPSB7CisgICAgICAgIDEuMC8xMDAuMCwgMCwgMCwKKyAgICAgICAgMCwgMS4wLzI1NS4wLCAwLAorICAgICAgICAwLCAwLCAxLjAvMjU1LjAKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIgbzFbXSA9IHsKKyAgICAgICAgMCwKKyAgICAgICAgMTI4LjAvMjU1LjAsCisgICAgICAgIDEyOC4wLzI1NS4wCisgICAgfTsKKworICAgIGNtc1N0YWdlICptcGUgPSBjbXNTdGFnZUFsbG9jTWF0cml4KENvbnRleHRJRCwgMywgMywgYTEsIG8xKTsKKworICAgIGlmIChtcGUgPT0gTlVMTCkgcmV0dXJuIG1wZTsKKyAgICBtcGUgLT5JbXBsZW1lbnRzID0gY21zU2lnTGFiMkZsb2F0UENTOworICAgIHJldHVybiBtcGU7Cit9CisKKy8vIEZvbSBYWVogdG8gZmxvYXRpbmcgcG9pbnQgUENTCitjbXNTdGFnZSogX2Ntc1N0YWdlTm9ybWFsaXplRnJvbVh5ekZsb2F0KGNtc0NvbnRleHQgQ29udGV4dElEKQoreworI2RlZmluZSBuICgzMjc2OC4wLzY1NTM1LjApCisgICAgc3RhdGljIGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIgYTFbXSA9IHsKKyAgICAgICAgbiwgMCwgMCwKKyAgICAgICAgMCwgbiwgMCwKKyAgICAgICAgMCwgMCwgbgorICAgIH07CisjdW5kZWYgbgorCisgICAgY21zU3RhZ2UgKm1wZSA9ICBjbXNTdGFnZUFsbG9jTWF0cml4KENvbnRleHRJRCwgMywgMywgYTEsIE5VTEwpOworCisgICAgaWYgKG1wZSA9PSBOVUxMKSByZXR1cm4gbXBlOworICAgIG1wZSAtPkltcGxlbWVudHMgPSBjbXNTaWdYWVoyRmxvYXRQQ1M7CisgICAgcmV0dXJuIG1wZTsKK30KKworY21zU3RhZ2UqIF9jbXNTdGFnZU5vcm1hbGl6ZVRvTGFiRmxvYXQoY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgc3RhdGljIGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIgYTFbXSA9IHsKKyAgICAgICAgMTAwLjAsIDAsIDAsCisgICAgICAgIDAsIDI1NS4wLCAwLAorICAgICAgICAwLCAwLCAyNTUuMAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgY21zRmxvYXQ2NE51bWJlciBvMVtdID0geworICAgICAgICAwLAorICAgICAgICAtMTI4LjAsCisgICAgICAgIC0xMjguMAorICAgIH07CisKKyAgICBjbXNTdGFnZSAqbXBlID0gIGNtc1N0YWdlQWxsb2NNYXRyaXgoQ29udGV4dElELCAzLCAzLCBhMSwgbzEpOworICAgIGlmIChtcGUgPT0gTlVMTCkgcmV0dXJuIG1wZTsKKyAgICBtcGUgLT5JbXBsZW1lbnRzID0gY21zU2lnRmxvYXRQQ1MyTGFiOworICAgIHJldHVybiBtcGU7Cit9CisKK2Ntc1N0YWdlKiBfY21zU3RhZ2VOb3JtYWxpemVUb1h5ekZsb2F0KGNtc0NvbnRleHQgQ29udGV4dElEKQoreworI2RlZmluZSBuICg2NTUzNS4wLzMyNzY4LjApCisKKyAgICBzdGF0aWMgY29uc3QgY21zRmxvYXQ2NE51bWJlciBhMVtdID0geworICAgICAgICBuLCAwLCAwLAorICAgICAgICAwLCBuLCAwLAorICAgICAgICAwLCAwLCBuCisgICAgfTsKKyN1bmRlZiBuCisKKyAgICBjbXNTdGFnZSAqbXBlID0gY21zU3RhZ2VBbGxvY01hdHJpeChDb250ZXh0SUQsIDMsIDMsIGExLCBOVUxMKTsKKyAgICBpZiAobXBlID09IE5VTEwpIHJldHVybiBtcGU7CisgICAgbXBlIC0+SW1wbGVtZW50cyA9IGNtc1NpZ0Zsb2F0UENTMlhZWjsKKyAgICByZXR1cm4gbXBlOworfQorCisKKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnWFlaMkxhYkVsZW1UeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitzdGF0aWMKK3ZvaWQgRXZhbHVhdGVYWVoyTGFiKGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgSW5bXSwgY21zRmxvYXQzMk51bWJlciBPdXRbXSwgY29uc3QgY21zU3RhZ2UgKm1wZSkKK3sKKyAgICBjbXNDSUVMYWIgTGFiOworICAgIGNtc0NJRVhZWiBYWVo7CisgICAgY29uc3QgY21zRmxvYXQ2NE51bWJlciBYWVphZGogPSBNQVhfRU5DT0RFQUJMRV9YWVo7CisKKyAgICAvLyBGcm9tIDAuLjEuMCB0byBYWVoKKworICAgIFhZWi5YID0gSW5bMF0gKiBYWVphZGo7CisgICAgWFlaLlkgPSBJblsxXSAqIFhZWmFkajsKKyAgICBYWVouWiA9IEluWzJdICogWFlaYWRqOworCisgICAgY21zWFlaMkxhYihOVUxMLCAmTGFiLCAmWFlaKTsKKworICAgIC8vIEZyb20gVjQgTGFiIHRvIDAuLjEuMAorCisgICAgT3V0WzBdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChMYWIuTCAvIDEwMC4wKTsKKyAgICBPdXRbMV0gPSAoY21zRmxvYXQzMk51bWJlcikgKChMYWIuYSArIDEyOC4wKSAvIDI1NS4wKTsKKyAgICBPdXRbMl0gPSAoY21zRmxvYXQzMk51bWJlcikgKChMYWIuYiArIDEyOC4wKSAvIDI1NS4wKTsKKyAgICByZXR1cm47CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG1wZSk7Cit9CisKK2Ntc1N0YWdlKiBfY21zU3RhZ2VBbGxvY1hZWjJMYWIoY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgcmV0dXJuIF9jbXNTdGFnZUFsbG9jUGxhY2Vob2xkZXIoQ29udGV4dElELCBjbXNTaWdYWVoyTGFiRWxlbVR5cGUsIDMsIDMsIEV2YWx1YXRlWFlaMkxhYiwgTlVMTCwgTlVMTCwgTlVMTCk7CisKK30KKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworLy8gRm9yIHY0LCBTLVNoYXBlZCBjdXJ2ZXMgYXJlIHBsYWNlZCBpbiBhL2IgYXhpcyB0byBpbmNyZWFzZSByZXNvbHV0aW9uIG5lYXIgZ3JheQorCitjbXNTdGFnZSogX2Ntc1N0YWdlQWxsb2NMYWJQcmVsaW4oY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgY21zVG9uZUN1cnZlKiBMYWJUYWJsZVszXTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIFBhcmFtc1sxXSA9ICB7Mi40fSA7CisKKyAgICBMYWJUYWJsZVswXSA9IGNtc0J1aWxkR2FtbWEoQ29udGV4dElELCAxLjApOworICAgIExhYlRhYmxlWzFdID0gY21zQnVpbGRQYXJhbWV0cmljVG9uZUN1cnZlKENvbnRleHRJRCwgMTA4LCBQYXJhbXMpOworICAgIExhYlRhYmxlWzJdID0gY21zQnVpbGRQYXJhbWV0cmljVG9uZUN1cnZlKENvbnRleHRJRCwgMTA4LCBQYXJhbXMpOworCisgICAgcmV0dXJuIGNtc1N0YWdlQWxsb2NUb25lQ3VydmVzKENvbnRleHRJRCwgMywgTGFiVGFibGUpOworfQorCisKKy8vIEZyZWUgYSBzaW5nbGUgTVBFCit2b2lkIENNU0VYUE9SVCBjbXNTdGFnZUZyZWUoY21zU3RhZ2UqIG1wZSkKK3sKKyAgICBpZiAobXBlIC0+RnJlZVB0cikKKyAgICAgICAgbXBlIC0+RnJlZVB0cihtcGUpOworCisgICAgX2Ntc0ZyZWUobXBlIC0+Q29udGV4dElELCBtcGUpOworfQorCisKK2Ntc1VJbnQzMk51bWJlciAgQ01TRVhQT1JUIGNtc1N0YWdlSW5wdXRDaGFubmVscyhjb25zdCBjbXNTdGFnZSogbXBlKQoreworICAgIHJldHVybiBtcGUgLT5JbnB1dENoYW5uZWxzOworfQorCitjbXNVSW50MzJOdW1iZXIgIENNU0VYUE9SVCBjbXNTdGFnZU91dHB1dENoYW5uZWxzKGNvbnN0IGNtc1N0YWdlKiBtcGUpCit7CisgICAgcmV0dXJuIG1wZSAtPk91dHB1dENoYW5uZWxzOworfQorCitjbXNTdGFnZVNpZ25hdHVyZSBDTVNFWFBPUlQgY21zU3RhZ2VUeXBlKGNvbnN0IGNtc1N0YWdlKiBtcGUpCit7CisgICAgcmV0dXJuIG1wZSAtPiBUeXBlOworfQorCit2b2lkKiBDTVNFWFBPUlQgY21zU3RhZ2VEYXRhKGNvbnN0IGNtc1N0YWdlKiBtcGUpCit7CisgICAgcmV0dXJuIG1wZSAtPiBEYXRhOworfQorCitjbXNTdGFnZSogIENNU0VYUE9SVCBjbXNTdGFnZU5leHQoY29uc3QgY21zU3RhZ2UqIG1wZSkKK3sKKyAgICByZXR1cm4gbXBlIC0+IE5leHQ7Cit9CisKKworLy8gRHVwbGljYXRlcyBhbiBNUEUKK2Ntc1N0YWdlKiBDTVNFWFBPUlQgY21zU3RhZ2VEdXAoY21zU3RhZ2UqIG1wZSkKK3sKKyAgICBjbXNTdGFnZSogTmV3TVBFOworCisgICAgaWYgKG1wZSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKyAgICBOZXdNUEUgPSBfY21zU3RhZ2VBbGxvY1BsYWNlaG9sZGVyKG1wZSAtPkNvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGUgLT5UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZSAtPklucHV0Q2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBlIC0+T3V0cHV0Q2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBlIC0+RXZhbFB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGUgLT5EdXBFbGVtUHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZSAtPkZyZWVQdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaWYgKE5ld01QRSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIE5ld01QRSAtPkltcGxlbWVudHMgPSBtcGUgLT5JbXBsZW1lbnRzOworCisgICAgaWYgKG1wZSAtPkR1cEVsZW1QdHIpIHsKKworICAgICAgICBOZXdNUEUgLT5EYXRhID0gbXBlIC0+RHVwRWxlbVB0cihtcGUpOworCisgICAgICAgIGlmIChOZXdNUEUtPkRhdGEgPT0gTlVMTCkgeworCisgICAgICAgICAgICBjbXNTdGFnZUZyZWUoTmV3TVBFKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICB9IGVsc2UgeworCisgICAgICAgIE5ld01QRSAtPkRhdGEgICAgICAgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiBOZXdNUEU7Cit9CisKKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworLy8gVGhpcyBmdW5jdGlvbiBzZXRzIHVwIHRoZSBjaGFubmVsIGNvdW50CisKK3N0YXRpYwordm9pZCBCbGVzc0xVVChjbXNQaXBlbGluZSogbHV0KQoreworICAgIC8vIFdlIGNhbiBzZXQgdGhlIGlucHV0L291cHV0IGNoYW5uZWxzIG9ubHkgaWYgd2UgaGF2ZSBlbGVtZW50cy4KKyAgICBpZiAobHV0IC0+RWxlbWVudHMgIT0gTlVMTCkgeworCisgICAgICAgIGNtc1N0YWdlICpGaXJzdCwgKkxhc3Q7CisKKyAgICAgICAgRmlyc3QgID0gY21zUGlwZWxpbmVHZXRQdHJUb0ZpcnN0U3RhZ2UobHV0KTsKKyAgICAgICAgTGFzdCAgID0gY21zUGlwZWxpbmVHZXRQdHJUb0xhc3RTdGFnZShsdXQpOworCisgICAgICAgIGlmIChGaXJzdCAhPSBOVUxMKWx1dCAtPklucHV0Q2hhbm5lbHMgPSBGaXJzdCAtPklucHV0Q2hhbm5lbHM7CisgICAgICAgIGlmIChMYXN0ICE9IE5VTEwpIGx1dCAtPk91dHB1dENoYW5uZWxzID0gTGFzdCAtPk91dHB1dENoYW5uZWxzOworICAgIH0KK30KKworCisvLyBEZWZhdWx0IHRvIGV2YWx1YXRlIHRoZSBMVVQgb24gMTYgYml0LWJhc2lzLiBQcmVjaXNpb24gaXMgcmV0YWluZWQuCitzdGF0aWMKK3ZvaWQgX0xVVGV2YWwxNihyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5bXSwgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIE91dFtdLCAgcmVnaXN0ZXIgY29uc3Qgdm9pZCogRCkKK3sKKyAgICBjbXNQaXBlbGluZSogbHV0ID0gKGNtc1BpcGVsaW5lKikgRDsKKyAgICBjbXNTdGFnZSAqbXBlOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgU3RvcmFnZVsyXVtNQVhfU1RBR0VfQ0hBTk5FTFNdOworICAgIGludCBQaGFzZSA9IDAsIE5leHRQaGFzZTsKKworICAgIEZyb20xNlRvRmxvYXQoSW4sICZTdG9yYWdlW1BoYXNlXVswXSwgbHV0IC0+SW5wdXRDaGFubmVscyk7CisKKyAgICBmb3IgKG1wZSA9IGx1dCAtPkVsZW1lbnRzOworICAgICAgICAgbXBlICE9IE5VTEw7CisgICAgICAgICBtcGUgPSBtcGUgLT5OZXh0KSB7CisKKyAgICAgICAgICAgICBOZXh0UGhhc2UgPSBQaGFzZSBeIDE7CisgICAgICAgICAgICAgbXBlIC0+RXZhbFB0cigmU3RvcmFnZVtQaGFzZV1bMF0sICZTdG9yYWdlW05leHRQaGFzZV1bMF0sIG1wZSk7CisgICAgICAgICAgICAgUGhhc2UgPSBOZXh0UGhhc2U7CisgICAgfQorCisKKyAgICBGcm9tRmxvYXRUbzE2KCZTdG9yYWdlW1BoYXNlXVswXSwgT3V0LCBsdXQgLT5PdXRwdXRDaGFubmVscyk7Cit9CisKKworCisvLyBEb2VzIGV2YWx1YXRlIHRoZSBMVVQgb24gY21zRmxvYXQzMk51bWJlci1iYXNpcy4KK3N0YXRpYwordm9pZCBfTFVUZXZhbEZsb2F0KHJlZ2lzdGVyIGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgSW5bXSwgcmVnaXN0ZXIgY21zRmxvYXQzMk51bWJlciBPdXRbXSwgY29uc3Qgdm9pZCogRCkKK3sKKyAgICBjbXNQaXBlbGluZSogbHV0ID0gKGNtc1BpcGVsaW5lKikgRDsKKyAgICBjbXNTdGFnZSAqbXBlOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgU3RvcmFnZVsyXVtNQVhfU1RBR0VfQ0hBTk5FTFNdOworICAgIGludCBQaGFzZSA9IDAsIE5leHRQaGFzZTsKKworICAgIG1lbW1vdmUoJlN0b3JhZ2VbUGhhc2VdWzBdLCBJbiwgbHV0IC0+SW5wdXRDaGFubmVscyAgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcikpOworCisgICAgZm9yIChtcGUgPSBsdXQgLT5FbGVtZW50czsKKyAgICAgICAgIG1wZSAhPSBOVUxMOworICAgICAgICAgbXBlID0gbXBlIC0+TmV4dCkgeworCisgICAgICAgICAgICAgIE5leHRQaGFzZSA9IFBoYXNlIF4gMTsKKyAgICAgICAgICAgICAgbXBlIC0+RXZhbFB0cigmU3RvcmFnZVtQaGFzZV1bMF0sICZTdG9yYWdlW05leHRQaGFzZV1bMF0sIG1wZSk7CisgICAgICAgICAgICAgIFBoYXNlID0gTmV4dFBoYXNlOworICAgIH0KKworICAgIG1lbW1vdmUoT3V0LCAmU3RvcmFnZVtQaGFzZV1bMF0sIGx1dCAtPk91dHB1dENoYW5uZWxzICogc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKK30KKworCisKKworLy8gTFVUIENyZWF0aW9uICYgRGVzdHJ1Y3Rpb24KKworY21zUGlwZWxpbmUqIENNU0VYUE9SVCBjbXNQaXBlbGluZUFsbG9jKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgSW5wdXRDaGFubmVscywgY21zVUludDMyTnVtYmVyIE91dHB1dENoYW5uZWxzKQoreworICAgICAgIGNtc1BpcGVsaW5lKiBOZXdMVVQ7CisKKyAgICAgICBpZiAoSW5wdXRDaGFubmVscyA+PSBjbXNNQVhDSEFOTkVMUyB8fAorICAgICAgICAgICBPdXRwdXRDaGFubmVscyA+PSBjbXNNQVhDSEFOTkVMUykgcmV0dXJuIE5VTEw7CisKKyAgICAgICBOZXdMVVQgPSAoY21zUGlwZWxpbmUqKSBfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIHNpemVvZihjbXNQaXBlbGluZSkpOworICAgICAgIGlmIChOZXdMVVQgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKworICAgICAgIE5ld0xVVCAtPiBJbnB1dENoYW5uZWxzICA9IElucHV0Q2hhbm5lbHM7CisgICAgICAgTmV3TFVUIC0+IE91dHB1dENoYW5uZWxzID0gT3V0cHV0Q2hhbm5lbHM7CisKKyAgICAgICBOZXdMVVQgLT5FdmFsMTZGbiAgICA9IF9MVVRldmFsMTY7CisgICAgICAgTmV3TFVUIC0+RXZhbEZsb2F0Rm4gPSBfTFVUZXZhbEZsb2F0OworICAgICAgIE5ld0xVVCAtPkR1cERhdGFGbiAgID0gTlVMTDsKKyAgICAgICBOZXdMVVQgLT5GcmVlRGF0YUZuICA9IE5VTEw7CisgICAgICAgTmV3TFVUIC0+RGF0YSAgICAgICAgPSBOZXdMVVQ7CisgICAgICAgTmV3TFVUIC0+Q29udGV4dElEICAgPSBDb250ZXh0SUQ7CisKKyAgICAgICBCbGVzc0xVVChOZXdMVVQpOworCisgICAgICAgcmV0dXJuIE5ld0xVVDsKK30KKworY21zQ29udGV4dCBDTVNFWFBPUlQgY21zR2V0UGlwZWxpbmVDb250ZXh0SUQoY29uc3QgY21zUGlwZWxpbmUqIGx1dCkKK3sKKyAgICBfY21zQXNzZXJ0KGx1dCAhPSBOVUxMKTsKKyAgICByZXR1cm4gbHV0IC0+Q29udGV4dElEOworfQorCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc1BpcGVsaW5lSW5wdXRDaGFubmVscyhjb25zdCBjbXNQaXBlbGluZSogbHV0KQoreworICAgIF9jbXNBc3NlcnQobHV0ICE9IE5VTEwpOworICAgIHJldHVybiBsdXQgLT5JbnB1dENoYW5uZWxzOworfQorCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc1BpcGVsaW5lT3V0cHV0Q2hhbm5lbHMoY29uc3QgY21zUGlwZWxpbmUqIGx1dCkKK3sKKyAgICBfY21zQXNzZXJ0KGx1dCAhPSBOVUxMKTsKKyAgICByZXR1cm4gbHV0IC0+T3V0cHV0Q2hhbm5lbHM7Cit9CisKKy8vIEZyZWUgYSBwcm9maWxlIGVsZW1lbnRzIExVVAordm9pZCBDTVNFWFBPUlQgY21zUGlwZWxpbmVGcmVlKGNtc1BpcGVsaW5lKiBsdXQpCit7CisgICAgY21zU3RhZ2UgKm1wZSwgKk5leHQ7CisKKyAgICBpZiAobHV0ID09IE5VTEwpIHJldHVybjsKKworICAgIGZvciAobXBlID0gbHV0IC0+RWxlbWVudHM7CisgICAgICAgIG1wZSAhPSBOVUxMOworICAgICAgICBtcGUgPSBOZXh0KSB7CisKKyAgICAgICAgICAgIE5leHQgPSBtcGUgLT5OZXh0OworICAgICAgICAgICAgY21zU3RhZ2VGcmVlKG1wZSk7CisgICAgfQorCisgICAgaWYgKGx1dCAtPkZyZWVEYXRhRm4pIGx1dCAtPkZyZWVEYXRhRm4obHV0IC0+Q29udGV4dElELCBsdXQgLT5EYXRhKTsKKworICAgIF9jbXNGcmVlKGx1dCAtPkNvbnRleHRJRCwgbHV0KTsKK30KKworCisvLyBEZWZhdWx0IHRvIGV2YWx1YXRlIHRoZSBMVVQgb24gMTYgYml0LWJhc2lzLgordm9pZCBDTVNFWFBPUlQgY21zUGlwZWxpbmVFdmFsMTYoY29uc3QgY21zVUludDE2TnVtYmVyIEluW10sIGNtc1VJbnQxNk51bWJlciBPdXRbXSwgIGNvbnN0IGNtc1BpcGVsaW5lKiBsdXQpCit7CisgICAgX2Ntc0Fzc2VydChsdXQgIT0gTlVMTCk7CisgICAgbHV0IC0+RXZhbDE2Rm4oSW4sIE91dCwgbHV0LT5EYXRhKTsKK30KKworCisvLyBEb2VzIGV2YWx1YXRlIHRoZSBMVVQgb24gY21zRmxvYXQzMk51bWJlci1iYXNpcy4KK3ZvaWQgQ01TRVhQT1JUIGNtc1BpcGVsaW5lRXZhbEZsb2F0KGNvbnN0IGNtc0Zsb2F0MzJOdW1iZXIgSW5bXSwgY21zRmxvYXQzMk51bWJlciBPdXRbXSwgY29uc3QgY21zUGlwZWxpbmUqIGx1dCkKK3sKKyAgICBfY21zQXNzZXJ0KGx1dCAhPSBOVUxMKTsKKyAgICBsdXQgLT5FdmFsRmxvYXRGbihJbiwgT3V0LCBsdXQpOworfQorCisKKworLy8gRHVwbGljYXRlcyBhIExVVAorY21zUGlwZWxpbmUqIENNU0VYUE9SVCBjbXNQaXBlbGluZUR1cChjb25zdCBjbXNQaXBlbGluZSogbHV0KQoreworICAgIGNtc1BpcGVsaW5lKiBOZXdMVVQ7CisgICAgY21zU3RhZ2UgKk5ld01QRSwgKkFudGVyaW9yID0gTlVMTCwgKm1wZTsKKyAgICBjbXNCb29sICBGaXJzdCA9IFRSVUU7CisKKyAgICBpZiAobHV0ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgTmV3TFVUID0gY21zUGlwZWxpbmVBbGxvYyhsdXQgLT5Db250ZXh0SUQsIGx1dCAtPklucHV0Q2hhbm5lbHMsIGx1dCAtPk91dHB1dENoYW5uZWxzKTsKKyAgICBpZiAoTmV3TFVUID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgZm9yIChtcGUgPSBsdXQgLT5FbGVtZW50czsKKyAgICAgICAgIG1wZSAhPSBOVUxMOworICAgICAgICAgbXBlID0gbXBlIC0+TmV4dCkgeworCisgICAgICAgICAgICAgTmV3TVBFID0gY21zU3RhZ2VEdXAobXBlKTsKKworICAgICAgICAgICAgIGlmIChOZXdNUEUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICBjbXNQaXBlbGluZUZyZWUoTmV3TFVUKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgaWYgKEZpcnN0KSB7CisgICAgICAgICAgICAgICAgIE5ld0xVVCAtPkVsZW1lbnRzID0gTmV3TVBFOworICAgICAgICAgICAgICAgICBGaXJzdCA9IEZBTFNFOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBbnRlcmlvciAtPk5leHQgPSBOZXdNUEU7CisgICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBbnRlcmlvciA9IE5ld01QRTsKKyAgICB9CisKKyAgICBOZXdMVVQgLT5FdmFsMTZGbiAgICA9IGx1dCAtPkV2YWwxNkZuOworICAgIE5ld0xVVCAtPkV2YWxGbG9hdEZuID0gbHV0IC0+RXZhbEZsb2F0Rm47CisgICAgTmV3TFVUIC0+RHVwRGF0YUZuICAgPSBsdXQgLT5EdXBEYXRhRm47CisgICAgTmV3TFVUIC0+RnJlZURhdGFGbiAgPSBsdXQgLT5GcmVlRGF0YUZuOworCisgICAgaWYgKE5ld0xVVCAtPkR1cERhdGFGbiAhPSBOVUxMKQorICAgICAgICBOZXdMVVQgLT5EYXRhID0gTmV3TFVUIC0+RHVwRGF0YUZuKGx1dCAtPkNvbnRleHRJRCwgbHV0LT5EYXRhKTsKKworCisgICAgTmV3TFVUIC0+U2F2ZUFzOEJpdHMgICAgPSBsdXQgLT5TYXZlQXM4Qml0czsKKworICAgIEJsZXNzTFVUKE5ld0xVVCk7CisgICAgcmV0dXJuIE5ld0xVVDsKK30KKworCitpbnQgQ01TRVhQT1JUIGNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoY21zUGlwZWxpbmUqIGx1dCwgY21zU3RhZ2VMb2MgbG9jLCBjbXNTdGFnZSogbXBlKQoreworICAgIGNtc1N0YWdlKiBBbnRlcmlvciA9IE5VTEwsICpwdDsKKworICAgIGlmIChsdXQgPT0gTlVMTCB8fCBtcGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgc3dpdGNoIChsb2MpIHsKKworICAgICAgICBjYXNlIGNtc0FUX0JFR0lOOgorICAgICAgICAgICAgbXBlIC0+TmV4dCA9IGx1dCAtPkVsZW1lbnRzOworICAgICAgICAgICAgbHV0IC0+RWxlbWVudHMgPSBtcGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNtc0FUX0VORDoKKworICAgICAgICAgICAgaWYgKGx1dCAtPkVsZW1lbnRzID09IE5VTEwpCisgICAgICAgICAgICAgICAgbHV0IC0+RWxlbWVudHMgPSBtcGU7CisgICAgICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgICAgIGZvciAocHQgPSBsdXQgLT5FbGVtZW50czsKKyAgICAgICAgICAgICAgICAgICAgIHB0ICE9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICBwdCA9IHB0IC0+IE5leHQpIEFudGVyaW9yID0gcHQ7CisKKyAgICAgICAgICAgICAgICBBbnRlcmlvciAtPk5leHQgPSBtcGU7CisgICAgICAgICAgICAgICAgbXBlIC0+TmV4dCA9IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDo7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgQmxlc3NMVVQobHV0KTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gVW5saW5rIGFuIGVsZW1lbnQgYW5kIHJldHVybiB0aGUgcG9pbnRlciB0byBpdAordm9pZCBDTVNFWFBPUlQgY21zUGlwZWxpbmVVbmxpbmtTdGFnZShjbXNQaXBlbGluZSogbHV0LCBjbXNTdGFnZUxvYyBsb2MsIGNtc1N0YWdlKiogbXBlKQoreworICAgIGNtc1N0YWdlICpBbnRlcmlvciwgKnB0LCAqTGFzdDsKKyAgICBjbXNTdGFnZSAqVW5saW5rZWQgPSBOVUxMOworCisKKyAgICAvLyBJZiBlbXB0eSBMVVQsIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmVtb3ZlCisgICAgaWYgKGx1dCAtPkVsZW1lbnRzID09IE5VTEwpIHsKKyAgICAgICAgaWYgKG1wZSkgKm1wZSA9IE5VTEw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBPbiBkZXBlbmRpbmcgb24gdGhlIHN0cmF0ZWd5Li4uCisgICAgc3dpdGNoIChsb2MpIHsKKworICAgICAgICBjYXNlIGNtc0FUX0JFR0lOOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNtc1N0YWdlKiBlbGVtID0gbHV0IC0+RWxlbWVudHM7CisKKyAgICAgICAgICAgICAgICBsdXQgLT5FbGVtZW50cyA9IGVsZW0gLT4gTmV4dDsKKyAgICAgICAgICAgICAgICBlbGVtIC0+TmV4dCA9IE5VTEw7CisgICAgICAgICAgICAgICAgVW5saW5rZWQgPSBlbGVtOworCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNtc0FUX0VORDoKKyAgICAgICAgICAgIEFudGVyaW9yID0gTGFzdCA9IE5VTEw7CisgICAgICAgICAgICBmb3IgKHB0ID0gbHV0IC0+RWxlbWVudHM7CisgICAgICAgICAgICAgICAgcHQgIT0gTlVMTDsKKyAgICAgICAgICAgICAgICBwdCA9IHB0IC0+IE5leHQpIHsKKyAgICAgICAgICAgICAgICAgICAgQW50ZXJpb3IgPSBMYXN0OworICAgICAgICAgICAgICAgICAgICBMYXN0ID0gcHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFVubGlua2VkID0gTGFzdDsgIC8vIE5leHQgYWxyZWFkeSBwb2ludHMgdG8gTlVMTAorCisgICAgICAgICAgICAvLyBUcnVuY2F0ZSB0aGUgY2hhaW4KKyAgICAgICAgICAgIGlmIChBbnRlcmlvcikKKyAgICAgICAgICAgICAgICBBbnRlcmlvciAtPk5leHQgPSBOVUxMOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGx1dCAtPkVsZW1lbnRzID0gTlVMTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OjsKKyAgICB9CisKKyAgICBpZiAobXBlKQorICAgICAgICAqbXBlID0gVW5saW5rZWQ7CisgICAgZWxzZQorICAgICAgICBjbXNTdGFnZUZyZWUoVW5saW5rZWQpOworCisgICAgQmxlc3NMVVQobHV0KTsKK30KKworCisvLyBDb25jYXRlbmF0ZSB0d28gTFVUIGludG8gYSBuZXcgc2luZ2xlIG9uZQorY21zQm9vbCAgQ01TRVhQT1JUIGNtc1BpcGVsaW5lQ2F0KGNtc1BpcGVsaW5lKiBsMSwgY29uc3QgY21zUGlwZWxpbmUqIGwyKQoreworICAgIGNtc1N0YWdlKiBtcGU7CisKKyAgICAvLyBJZiBib3RoIExVVFMgZG9lcyBub3QgaGF2ZSBlbGVtZW50cywgd2UgbmVlZCB0byBpbmhlcml0CisgICAgLy8gdGhlIG51bWJlciBvZiBjaGFubmVscworICAgIGlmIChsMSAtPkVsZW1lbnRzID09IE5VTEwgJiYgbDIgLT5FbGVtZW50cyA9PSBOVUxMKSB7CisgICAgICAgIGwxIC0+SW5wdXRDaGFubmVscyAgPSBsMiAtPklucHV0Q2hhbm5lbHM7CisgICAgICAgIGwxIC0+T3V0cHV0Q2hhbm5lbHMgPSBsMiAtPk91dHB1dENoYW5uZWxzOworICAgIH0KKworICAgIC8vIENhdCBzZWNvbmQKKyAgICBmb3IgKG1wZSA9IGwyIC0+RWxlbWVudHM7CisgICAgICAgICBtcGUgIT0gTlVMTDsKKyAgICAgICAgIG1wZSA9IG1wZSAtPk5leHQpIHsKKworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBkdXAgZWFjaCBlbGVtZW50CisgICAgICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UobDEsIGNtc0FUX0VORCwgY21zU3RhZ2VEdXAobXBlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIEJsZXNzTFVUKGwxKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworCitjbXNCb29sIENNU0VYUE9SVCBjbXNQaXBlbGluZVNldFNhdmVBczhiaXRzRmxhZyhjbXNQaXBlbGluZSogbHV0LCBjbXNCb29sIE9uKQoreworICAgIGNtc0Jvb2wgQW50ZXJpb3IgPSBsdXQgLT5TYXZlQXM4Qml0czsKKworICAgIGx1dCAtPlNhdmVBczhCaXRzID0gT247CisgICAgcmV0dXJuIEFudGVyaW9yOworfQorCisKK2Ntc1N0YWdlKiBDTVNFWFBPUlQgY21zUGlwZWxpbmVHZXRQdHJUb0ZpcnN0U3RhZ2UoY29uc3QgY21zUGlwZWxpbmUqIGx1dCkKK3sKKyAgICByZXR1cm4gbHV0IC0+RWxlbWVudHM7Cit9CisKK2Ntc1N0YWdlKiBDTVNFWFBPUlQgY21zUGlwZWxpbmVHZXRQdHJUb0xhc3RTdGFnZShjb25zdCBjbXNQaXBlbGluZSogbHV0KQoreworICAgIGNtc1N0YWdlICptcGUsICpBbnRlcmlvciA9IE5VTEw7CisKKyAgICBmb3IgKG1wZSA9IGx1dCAtPkVsZW1lbnRzOyBtcGUgIT0gTlVMTDsgbXBlID0gbXBlIC0+TmV4dCkKKyAgICAgICAgQW50ZXJpb3IgPSBtcGU7CisKKyAgICByZXR1cm4gQW50ZXJpb3I7Cit9CisKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zUGlwZWxpbmVTdGFnZUNvdW50KGNvbnN0IGNtc1BpcGVsaW5lKiBsdXQpCit7CisgICAgY21zU3RhZ2UgKm1wZTsKKyAgICBjbXNVSW50MzJOdW1iZXIgbjsKKworICAgIGZvciAobj0wLCBtcGUgPSBsdXQgLT5FbGVtZW50czsgbXBlICE9IE5VTEw7IG1wZSA9IG1wZSAtPk5leHQpCisgICAgICAgICAgICBuKys7CisKKyAgICByZXR1cm4gbjsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBtYXkgYmUgdXNlZCB0byBzZXQgdGhlIG9wdGlvbmFsIGV2YWx1YXRvciBhbmQgYSBibG9jayBvZiBwcml2YXRlIGRhdGEuIElmIHByaXZhdGUgZGF0YSBpcyBiZWluZyB1c2VkLCBhbiBvcHRpb25hbAorLy8gZHVwbGljYXRvciBhbmQgZnJlZSBmdW5jdGlvbnMgc2hvdWxkIGFsc28gYmUgc3BlY2lmaWVkIGluIG9yZGVyIHRvIGR1cGxpY2F0ZSB0aGUgTFVUIGNvbnN0cnVjdC4gVXNlIE5VTEwgdG8gaW5oaWJpdCBzdWNoIGZ1bmN0aW9uYWxpdHkuCit2b2lkIENNU0VYUE9SVCBfY21zUGlwZWxpbmVTZXRPcHRpbWl6YXRpb25QYXJhbWV0ZXJzKGNtc1BpcGVsaW5lKiBMdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Ntc09QVGV2YWwxNkZuIEV2YWwxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBQcml2YXRlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY21zRnJlZVVzZXJEYXRhRm4gRnJlZVByaXZhdGVEYXRhRm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Ntc0R1cFVzZXJEYXRhRm4gIER1cFByaXZhdGVEYXRhRm4pCit7CisKKyAgICBMdXQgLT5FdmFsMTZGbiA9IEV2YWwxNjsKKyAgICBMdXQgLT5EdXBEYXRhRm4gPSBEdXBQcml2YXRlRGF0YUZuOworICAgIEx1dCAtPkZyZWVEYXRhRm4gPSBGcmVlUHJpdmF0ZURhdGFGbjsKKyAgICBMdXQgLT5EYXRhID0gUHJpdmF0ZURhdGE7Cit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmV2ZXJzZSBpbnRlcnBvbGF0aW9uCisvLyBIZXJlJ3MgaG93IGl0IGdvZXMuIFRoZSBkZXJpdmF0aXZlIERmKHgpIG9mIHRoZSBmdW5jdGlvbiBmIGlzIHRoZSBsaW5lYXIKKy8vIHRyYW5zZm9ybWF0aW9uIHRoYXQgYmVzdCBhcHByb3hpbWF0ZXMgZiBuZWFyIHRoZSBwb2ludCB4LiBJdCBjYW4gYmUgcmVwcmVzZW50ZWQKKy8vIGJ5IGEgbWF0cml4IEEgd2hvc2UgZW50cmllcyBhcmUgdGhlIHBhcnRpYWwgZGVyaXZhdGl2ZXMgb2YgdGhlIGNvbXBvbmVudHMgb2YgZgorLy8gd2l0aCByZXNwZWN0IHRvIGFsbCB0aGUgY29vcmRpbmF0ZXMuIFRoaXMgaXMga25vdyBhcyB0aGUgSmFjb2JpYW4KKy8vCisvLyBUaGUgYmVzdCBsaW5lYXIgYXBwcm94aW1hdGlvbiB0byBmIGlzIGdpdmVuIGJ5IHRoZSBtYXRyaXggZXF1YXRpb246CisvLworLy8geS15MCA9IEEgKHgteDApCisvLworLy8gU28sIGlmIHgwIGlzIGEgZ29vZCAiZ3Vlc3MiIGZvciB0aGUgemVybyBvZiBmLCB0aGVuIHNvbHZpbmcgZm9yIHRoZSB6ZXJvIG9mIHRoaXMKKy8vIGxpbmVhciBhcHByb3hpbWF0aW9uIHdpbGwgZ2l2ZSBhICJiZXR0ZXIgZ3Vlc3MiIGZvciB0aGUgemVybyBvZiBmLiBUaHVzIGxldCB5PTAsCisvLyBhbmQgc2luY2UgeTA9Zih4MCkgb25lIGNhbiBzb2x2ZSB0aGUgYWJvdmUgZXF1YXRpb24gZm9yIHguIFRoaXMgbGVhZHMgdG8gdGhlCisvLyBOZXd0b24ncyBtZXRob2QgZm9ybXVsYToKKy8vCisvLyB4bisxID0geG4gLSBBLTEgZih4bikKKy8vCisvLyB3aGVyZSB4bisxIGRlbm90ZXMgdGhlIChuKzEpLXN0IGd1ZXNzLCBvYnRhaW5lZCBmcm9tIHRoZSBuLXRoIGd1ZXNzIHhuIGluIHRoZQorLy8gZmFzaGlvbiBkZXNjcmliZWQgYWJvdmUuIEl0ZXJhdGluZyB0aGlzIHdpbGwgZ2l2ZSBiZXR0ZXIgYW5kIGJldHRlciBhcHByb3hpbWF0aW9ucworLy8gaWYgeW91IGhhdmUgYSAiZ29vZCBlbm91Z2giIGluaXRpYWwgZ3Vlc3MuCisKKworI2RlZmluZSBKQUNPQklBTl9FUFNJTE9OICAgICAgICAgICAgMC4wMDFmCisjZGVmaW5lIElOVkVSU0lPTl9NQVhfSVRFUkFUSU9OUyAgICAzMAorCisvLyBJbmNyZW1lbnQgd2l0aCByZWZsZXhpb24gb24gYm91bmRhcnkKK3N0YXRpYwordm9pZCBJbmNEZWx0YShjbXNGbG9hdDMyTnVtYmVyICpWYWwpCit7CisgICAgaWYgKCpWYWwgPCAoMS4wIC0gSkFDT0JJQU5fRVBTSUxPTikpCisKKyAgICAgICAgKlZhbCArPSBKQUNPQklBTl9FUFNJTE9OOworCisgICAgZWxzZQorICAgICAgICAqVmFsIC09IEpBQ09CSUFOX0VQU0lMT047CisKK30KKworCisKKy8vIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzIG9mIG4gZWxlbWVudHMgZWFjaCBvbmUKK3N0YXRpYworY21zRmxvYXQzMk51bWJlciBFdWNsaWRlYW5EaXN0YW5jZShjbXNGbG9hdDMyTnVtYmVyIGFbXSwgY21zRmxvYXQzMk51bWJlciBiW10sIGludCBuKQoreworICAgIGNtc0Zsb2F0MzJOdW1iZXIgc3VtID0gMDsKKyAgICBpbnQgaTsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgZGlmID0gYltpXSAtIGFbaV07CisgICAgICAgIHN1bSArPSAgZGlmICogZGlmOworICAgIH0KKworICAgIHJldHVybiBzcXJ0ZihzdW0pOworfQorCisKKy8vIEV2YWx1YXRlIGEgTFVUIGluIHJldmVyc2UgZGlyZWN0aW9uLiBJdCBvbmx5IHNlYXJjaGVzIG9uIDMtPjMgTFVULiBVc2VzIE5ld3RvbiBtZXRob2QKKy8vCisvLyB4MSA8LSB4IC0gW0ooeCldXi0xICogZih4KQorLy8KKy8vIGx1dDogVGhlIExVVCBvbiB3aGVyZSB0byBkbyB0aGUgc2VhcmNoCisvLyBUYXJnZXQ6IExhYkssIDMgdmFsdWVzIG9mIExhYiBwbHVzIGRlc3RpbmF0aW9uIEsgd2hpY2ggaXMgZml4ZWQKKy8vIFJlc3VsdDogVGhlIG9idGFpbmVkIENNWUsKKy8vIEhpbnQ6ICAgTG9jYXRpb24gd2hlcmUgYmVnaW4gdGhlIHNlYXJjaAorCitjbXNCb29sIENNU0VYUE9SVCBjbXNQaXBlbGluZUV2YWxSZXZlcnNlRmxvYXQoY21zRmxvYXQzMk51bWJlciBUYXJnZXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIFJlc3VsdFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgSGludFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1BpcGVsaW5lKiBsdXQpCit7CisgICAgY21zVUludDMyTnVtYmVyICBpLCBqOworICAgIGNtc0Zsb2F0NjROdW1iZXIgIGVycm9yLCBMYXN0RXJyb3IgPSAxRTIwOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgIGZ4WzRdLCB4WzRdLCB4ZFs0XSwgZnhkWzRdOworICAgIGNtc1ZFQzMgdG1wLCB0bXAyOworICAgIGNtc01BVDMgSmFjb2JpYW47CisgICAgCisgICAgLy8gT25seSAzLT4zIGFuZCA0LT4zIGFyZSBzdXBwb3J0ZWQKKyAgICBpZiAobHV0IC0+SW5wdXRDaGFubmVscyAhPSAzICYmIGx1dCAtPklucHV0Q2hhbm5lbHMgIT0gNCkgcmV0dXJuIEZBTFNFOworICAgIGlmIChsdXQgLT5PdXRwdXRDaGFubmVscyAhPSAzKSByZXR1cm4gRkFMU0U7CisgICAKKyAgICAvLyBUYWtlIHRoZSBoaW50IGFzIHN0YXJ0aW5nIHBvaW50IGlmIHNwZWNpZmllZAorICAgIGlmIChIaW50ID09IE5VTEwpIHsKKworICAgICAgICAvLyBCZWdpbiBhdCBhbnkgcG9pbnQsIHdlIGNob29zZSAxLzMgb2YgQ01ZIGF4aXMKKyAgICAgICAgeFswXSA9IHhbMV0gPSB4WzJdID0gMC4zZjsKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgICAgLy8gT25seSBjb3B5IDMgY2hhbm5lbHMgZnJvbSBoaW50Li4uCisgICAgICAgIGZvciAoaj0wOyBqIDwgMzsgaisrKQorICAgICAgICAgICAgeFtqXSA9IEhpbnRbal07CisgICAgfQorCisgICAgLy8gSWYgTHV0IGlzIDQtZGltZW5zaW9ucywgdGhlbiBncmFiIHRhcmdldFszXSwgd2hpY2ggaXMgZml4ZWQKKyAgICBpZiAobHV0IC0+SW5wdXRDaGFubmVscyA9PSA0KSB7CisgICAgICAgIHhbM10gPSBUYXJnZXRbM107CisgICAgfQorICAgIGVsc2UgeFszXSA9IDA7IC8vIFRvIGtlZXAgbGludCBoYXBweQorCisKKyAgICAvLyBJdGVyYXRlCisgICAgZm9yIChpID0gMDsgaSA8IElOVkVSU0lPTl9NQVhfSVRFUkFUSU9OUzsgaSsrKSB7CisKKyAgICAgICAgLy8gR2V0IGJlZ2lubmluZyBmeAorICAgICAgICBjbXNQaXBlbGluZUV2YWxGbG9hdCh4LCBmeCwgbHV0KTsKKworICAgICAgICAvLyBDb21wdXRlIGVycm9yCisgICAgICAgIGVycm9yID0gRXVjbGlkZWFuRGlzdGFuY2UoZngsIFRhcmdldCwgMyk7CisKKyAgICAgICAgLy8gSWYgbm90IGNvbnZlcmdlbnQsIHJldHVybiBsYXN0IHNhZmUgdmFsdWUKKyAgICAgICAgaWYgKGVycm9yID49IExhc3RFcnJvcikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIEtlZXAgbGF0ZXN0IHZhbHVlcworICAgICAgICBMYXN0RXJyb3IgICAgID0gZXJyb3I7CisgICAgICAgIGZvciAoaj0wOyBqIDwgbHV0IC0+SW5wdXRDaGFubmVsczsgaisrKQorICAgICAgICAgICAgICAgIFJlc3VsdFtqXSA9IHhbal07CisKKyAgICAgICAgLy8gRm91bmQgYW4gZXhhY3QgbWF0Y2g/CisgICAgICAgIGlmIChlcnJvciA8PSAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8gT2J0YWluIHNsb3BlICh0aGUgSmFjb2JpYW4pCisgICAgICAgIGZvciAoaiA9IDA7IGogPCAzOyBqKyspIHsKKworICAgICAgICAgICAgeGRbMF0gPSB4WzBdOworICAgICAgICAgICAgeGRbMV0gPSB4WzFdOworICAgICAgICAgICAgeGRbMl0gPSB4WzJdOworICAgICAgICAgICAgeGRbM10gPSB4WzNdOyAgLy8gS2VlcCBmaXhlZCBjaGFubmVsCisKKyAgICAgICAgICAgIEluY0RlbHRhKCZ4ZFtqXSk7CisKKyAgICAgICAgICAgIGNtc1BpcGVsaW5lRXZhbEZsb2F0KHhkLCBmeGQsIGx1dCk7CisKKyAgICAgICAgICAgIEphY29iaWFuLnZbMF0ubltqXSA9ICgoZnhkWzBdIC0gZnhbMF0pIC8gSkFDT0JJQU5fRVBTSUxPTik7CisgICAgICAgICAgICBKYWNvYmlhbi52WzFdLm5bal0gPSAoKGZ4ZFsxXSAtIGZ4WzFdKSAvIEpBQ09CSUFOX0VQU0lMT04pOworICAgICAgICAgICAgSmFjb2JpYW4udlsyXS5uW2pdID0gKChmeGRbMl0gLSBmeFsyXSkgLyBKQUNPQklBTl9FUFNJTE9OKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNvbHZlIHN5c3RlbQorICAgICAgICB0bXAyLm5bMF0gPSBmeFswXSAtIFRhcmdldFswXTsKKyAgICAgICAgdG1wMi5uWzFdID0gZnhbMV0gLSBUYXJnZXRbMV07CisgICAgICAgIHRtcDIublsyXSA9IGZ4WzJdIC0gVGFyZ2V0WzJdOworCisgICAgICAgIGlmICghX2Ntc01BVDNzb2x2ZSgmdG1wLCAmSmFjb2JpYW4sICZ0bXAyKSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgICAgICAvLyBNb3ZlIG91ciBndWVzcworICAgICAgICB4WzBdIC09IChjbXNGbG9hdDMyTnVtYmVyKSB0bXAublswXTsKKyAgICAgICAgeFsxXSAtPSAoY21zRmxvYXQzMk51bWJlcikgdG1wLm5bMV07CisgICAgICAgIHhbMl0gLT0gKGNtc0Zsb2F0MzJOdW1iZXIpIHRtcC5uWzJdOworCisgICAgICAgIC8vIFNvbWUgY2xpcHBpbmcuLi4uCisgICAgICAgIGZvciAoaj0wOyBqIDwgMzsgaisrKSB7CisgICAgICAgICAgICBpZiAoeFtqXSA8IDApIHhbal0gPSAwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmICh4W2pdID4gMS4wKSB4W2pdID0gMS4wOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zbWQ1LmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zbWQ1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ3NThmZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNtZDUuYwpAQCAtMCwwICsxLDM0MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIgorCisjaWZkZWYgQ01TX1VTRV9CSUdfRU5ESUFOCisKK3N0YXRpYwordm9pZCBieXRlUmV2ZXJzZShjbXNVSW50OE51bWJlciAqIGJ1ZiwgY21zVUludDMyTnVtYmVyIGxvbmdzKQoreworICAgIGRvIHsKKworICAgICAgICBjbXNVSW50MzJOdW1iZXIgdCA9IF9jbXNBZGp1c3RFbmRpYW5lc3MzMigqKGNtc1VJbnQzMk51bWJlciAqKSBidWYpOworICAgICAgICAqKGNtc1VJbnQzMk51bWJlciAqKSBidWYgPSB0OworICAgICAgICBidWYgKz0gc2l6ZW9mKGNtc1VJbnQzMk51bWJlcik7CisKKyAgICB9IHdoaWxlICgtLWxvbmdzKTsKKworfQorCisjZWxzZQorI2RlZmluZSBieXRlUmV2ZXJzZShidWYsIGxlbikKKyNlbmRpZgorCisKK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc1VJbnQzMk51bWJlciBidWZbNF07CisgICAgY21zVUludDMyTnVtYmVyIGJpdHNbMl07CisgICAgY21zVUludDhOdW1iZXIgaW5bNjRdOworICAgIGNtc0NvbnRleHQgQ29udGV4dElEOworCit9IF9jbXNNRDU7CisKKyNkZWZpbmUgRjEoeCwgeSwgeikgKHogXiAoeCAmICh5IF4geikpKQorI2RlZmluZSBGMih4LCB5LCB6KSBGMSh6LCB4LCB5KQorI2RlZmluZSBGMyh4LCB5LCB6KSAoeCBeIHkgXiB6KQorI2RlZmluZSBGNCh4LCB5LCB6KSAoeSBeICh4IHwgfnopKQorCisjZGVmaW5lIFNURVAoZiwgdywgeCwgeSwgeiwgZGF0YSwgcykgXAorICAgICggdyArPSBmKHgsIHksIHopICsgZGF0YSwgIHcgPSB3PDxzIHwgdz4+KDMyLXMpLCAgdyArPSB4ICkKKworCitzdGF0aWMKK3ZvaWQgTUQ1X1RyYW5zZm9ybShjbXNVSW50MzJOdW1iZXIgYnVmWzRdLCBjbXNVSW50MzJOdW1iZXIgaW5bMTZdKQorCit7CisgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIGEsIGIsIGMsIGQ7CisKKyAgICBhID0gYnVmWzBdOworICAgIGIgPSBidWZbMV07CisgICAgYyA9IGJ1ZlsyXTsKKyAgICBkID0gYnVmWzNdOworCisgICAgU1RFUChGMSwgYSwgYiwgYywgZCwgaW5bMF0gKyAweGQ3NmFhNDc4LCA3KTsKKyAgICBTVEVQKEYxLCBkLCBhLCBiLCBjLCBpblsxXSArIDB4ZThjN2I3NTYsIDEyKTsKKyAgICBTVEVQKEYxLCBjLCBkLCBhLCBiLCBpblsyXSArIDB4MjQyMDcwZGIsIDE3KTsKKyAgICBTVEVQKEYxLCBiLCBjLCBkLCBhLCBpblszXSArIDB4YzFiZGNlZWUsIDIyKTsKKyAgICBTVEVQKEYxLCBhLCBiLCBjLCBkLCBpbls0XSArIDB4ZjU3YzBmYWYsIDcpOworICAgIFNURVAoRjEsIGQsIGEsIGIsIGMsIGluWzVdICsgMHg0Nzg3YzYyYSwgMTIpOworICAgIFNURVAoRjEsIGMsIGQsIGEsIGIsIGluWzZdICsgMHhhODMwNDYxMywgMTcpOworICAgIFNURVAoRjEsIGIsIGMsIGQsIGEsIGluWzddICsgMHhmZDQ2OTUwMSwgMjIpOworICAgIFNURVAoRjEsIGEsIGIsIGMsIGQsIGluWzhdICsgMHg2OTgwOThkOCwgNyk7CisgICAgU1RFUChGMSwgZCwgYSwgYiwgYywgaW5bOV0gKyAweDhiNDRmN2FmLCAxMik7CisgICAgU1RFUChGMSwgYywgZCwgYSwgYiwgaW5bMTBdICsgMHhmZmZmNWJiMSwgMTcpOworICAgIFNURVAoRjEsIGIsIGMsIGQsIGEsIGluWzExXSArIDB4ODk1Y2Q3YmUsIDIyKTsKKyAgICBTVEVQKEYxLCBhLCBiLCBjLCBkLCBpblsxMl0gKyAweDZiOTAxMTIyLCA3KTsKKyAgICBTVEVQKEYxLCBkLCBhLCBiLCBjLCBpblsxM10gKyAweGZkOTg3MTkzLCAxMik7CisgICAgU1RFUChGMSwgYywgZCwgYSwgYiwgaW5bMTRdICsgMHhhNjc5NDM4ZSwgMTcpOworICAgIFNURVAoRjEsIGIsIGMsIGQsIGEsIGluWzE1XSArIDB4NDliNDA4MjEsIDIyKTsKKworICAgIFNURVAoRjIsIGEsIGIsIGMsIGQsIGluWzFdICsgMHhmNjFlMjU2MiwgNSk7CisgICAgU1RFUChGMiwgZCwgYSwgYiwgYywgaW5bNl0gKyAweGMwNDBiMzQwLCA5KTsKKyAgICBTVEVQKEYyLCBjLCBkLCBhLCBiLCBpblsxMV0gKyAweDI2NWU1YTUxLCAxNCk7CisgICAgU1RFUChGMiwgYiwgYywgZCwgYSwgaW5bMF0gKyAweGU5YjZjN2FhLCAyMCk7CisgICAgU1RFUChGMiwgYSwgYiwgYywgZCwgaW5bNV0gKyAweGQ2MmYxMDVkLCA1KTsKKyAgICBTVEVQKEYyLCBkLCBhLCBiLCBjLCBpblsxMF0gKyAweDAyNDQxNDUzLCA5KTsKKyAgICBTVEVQKEYyLCBjLCBkLCBhLCBiLCBpblsxNV0gKyAweGQ4YTFlNjgxLCAxNCk7CisgICAgU1RFUChGMiwgYiwgYywgZCwgYSwgaW5bNF0gKyAweGU3ZDNmYmM4LCAyMCk7CisgICAgU1RFUChGMiwgYSwgYiwgYywgZCwgaW5bOV0gKyAweDIxZTFjZGU2LCA1KTsKKyAgICBTVEVQKEYyLCBkLCBhLCBiLCBjLCBpblsxNF0gKyAweGMzMzcwN2Q2LCA5KTsKKyAgICBTVEVQKEYyLCBjLCBkLCBhLCBiLCBpblszXSArIDB4ZjRkNTBkODcsIDE0KTsKKyAgICBTVEVQKEYyLCBiLCBjLCBkLCBhLCBpbls4XSArIDB4NDU1YTE0ZWQsIDIwKTsKKyAgICBTVEVQKEYyLCBhLCBiLCBjLCBkLCBpblsxM10gKyAweGE5ZTNlOTA1LCA1KTsKKyAgICBTVEVQKEYyLCBkLCBhLCBiLCBjLCBpblsyXSArIDB4ZmNlZmEzZjgsIDkpOworICAgIFNURVAoRjIsIGMsIGQsIGEsIGIsIGluWzddICsgMHg2NzZmMDJkOSwgMTQpOworICAgIFNURVAoRjIsIGIsIGMsIGQsIGEsIGluWzEyXSArIDB4OGQyYTRjOGEsIDIwKTsKKworICAgIFNURVAoRjMsIGEsIGIsIGMsIGQsIGluWzVdICsgMHhmZmZhMzk0MiwgNCk7CisgICAgU1RFUChGMywgZCwgYSwgYiwgYywgaW5bOF0gKyAweDg3NzFmNjgxLCAxMSk7CisgICAgU1RFUChGMywgYywgZCwgYSwgYiwgaW5bMTFdICsgMHg2ZDlkNjEyMiwgMTYpOworICAgIFNURVAoRjMsIGIsIGMsIGQsIGEsIGluWzE0XSArIDB4ZmRlNTM4MGMsIDIzKTsKKyAgICBTVEVQKEYzLCBhLCBiLCBjLCBkLCBpblsxXSArIDB4YTRiZWVhNDQsIDQpOworICAgIFNURVAoRjMsIGQsIGEsIGIsIGMsIGluWzRdICsgMHg0YmRlY2ZhOSwgMTEpOworICAgIFNURVAoRjMsIGMsIGQsIGEsIGIsIGluWzddICsgMHhmNmJiNGI2MCwgMTYpOworICAgIFNURVAoRjMsIGIsIGMsIGQsIGEsIGluWzEwXSArIDB4YmViZmJjNzAsIDIzKTsKKyAgICBTVEVQKEYzLCBhLCBiLCBjLCBkLCBpblsxM10gKyAweDI4OWI3ZWM2LCA0KTsKKyAgICBTVEVQKEYzLCBkLCBhLCBiLCBjLCBpblswXSArIDB4ZWFhMTI3ZmEsIDExKTsKKyAgICBTVEVQKEYzLCBjLCBkLCBhLCBiLCBpblszXSArIDB4ZDRlZjMwODUsIDE2KTsKKyAgICBTVEVQKEYzLCBiLCBjLCBkLCBhLCBpbls2XSArIDB4MDQ4ODFkMDUsIDIzKTsKKyAgICBTVEVQKEYzLCBhLCBiLCBjLCBkLCBpbls5XSArIDB4ZDlkNGQwMzksIDQpOworICAgIFNURVAoRjMsIGQsIGEsIGIsIGMsIGluWzEyXSArIDB4ZTZkYjk5ZTUsIDExKTsKKyAgICBTVEVQKEYzLCBjLCBkLCBhLCBiLCBpblsxNV0gKyAweDFmYTI3Y2Y4LCAxNik7CisgICAgU1RFUChGMywgYiwgYywgZCwgYSwgaW5bMl0gKyAweGM0YWM1NjY1LCAyMyk7CisKKyAgICBTVEVQKEY0LCBhLCBiLCBjLCBkLCBpblswXSArIDB4ZjQyOTIyNDQsIDYpOworICAgIFNURVAoRjQsIGQsIGEsIGIsIGMsIGluWzddICsgMHg0MzJhZmY5NywgMTApOworICAgIFNURVAoRjQsIGMsIGQsIGEsIGIsIGluWzE0XSArIDB4YWI5NDIzYTcsIDE1KTsKKyAgICBTVEVQKEY0LCBiLCBjLCBkLCBhLCBpbls1XSArIDB4ZmM5M2EwMzksIDIxKTsKKyAgICBTVEVQKEY0LCBhLCBiLCBjLCBkLCBpblsxMl0gKyAweDY1NWI1OWMzLCA2KTsKKyAgICBTVEVQKEY0LCBkLCBhLCBiLCBjLCBpblszXSArIDB4OGYwY2NjOTIsIDEwKTsKKyAgICBTVEVQKEY0LCBjLCBkLCBhLCBiLCBpblsxMF0gKyAweGZmZWZmNDdkLCAxNSk7CisgICAgU1RFUChGNCwgYiwgYywgZCwgYSwgaW5bMV0gKyAweDg1ODQ1ZGQxLCAyMSk7CisgICAgU1RFUChGNCwgYSwgYiwgYywgZCwgaW5bOF0gKyAweDZmYTg3ZTRmLCA2KTsKKyAgICBTVEVQKEY0LCBkLCBhLCBiLCBjLCBpblsxNV0gKyAweGZlMmNlNmUwLCAxMCk7CisgICAgU1RFUChGNCwgYywgZCwgYSwgYiwgaW5bNl0gKyAweGEzMDE0MzE0LCAxNSk7CisgICAgU1RFUChGNCwgYiwgYywgZCwgYSwgaW5bMTNdICsgMHg0ZTA4MTFhMSwgMjEpOworICAgIFNURVAoRjQsIGEsIGIsIGMsIGQsIGluWzRdICsgMHhmNzUzN2U4MiwgNik7CisgICAgU1RFUChGNCwgZCwgYSwgYiwgYywgaW5bMTFdICsgMHhiZDNhZjIzNSwgMTApOworICAgIFNURVAoRjQsIGMsIGQsIGEsIGIsIGluWzJdICsgMHgyYWQ3ZDJiYiwgMTUpOworICAgIFNURVAoRjQsIGIsIGMsIGQsIGEsIGluWzldICsgMHhlYjg2ZDM5MSwgMjEpOworCisgICAgYnVmWzBdICs9IGE7CisgICAgYnVmWzFdICs9IGI7CisgICAgYnVmWzJdICs9IGM7CisgICAgYnVmWzNdICs9IGQ7Cit9CisKKworLy8gQ3JlYXRlIGEgTUQ1IG9iamVjdAorc3RhdGljCitjbXNIQU5ETEUgIE1ENWFsbG9jKGNtc0NvbnRleHQgQ29udGV4dElEKQoreworICAgIF9jbXNNRDUqIGN0eCA9IChfY21zTUQ1KikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoX2Ntc01ENSkpOworICAgIGlmIChjdHggPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBjdHggLT5Db250ZXh0SUQgPSBDb250ZXh0SUQ7CisKKyAgICBjdHgtPmJ1ZlswXSA9IDB4Njc0NTIzMDE7CisgICAgY3R4LT5idWZbMV0gPSAweGVmY2RhYjg5OworICAgIGN0eC0+YnVmWzJdID0gMHg5OGJhZGNmZTsKKyAgICBjdHgtPmJ1ZlszXSA9IDB4MTAzMjU0NzY7CisKKyAgICBjdHgtPmJpdHNbMF0gPSAwOworICAgIGN0eC0+Yml0c1sxXSA9IDA7CisKKyAgICByZXR1cm4gKGNtc0hBTkRMRSkgY3R4OworfQorCisKK3N0YXRpYwordm9pZCBNRDVhZGQoY21zSEFORExFIEhhbmRsZSwgY21zVUludDhOdW1iZXIqIGJ1ZiwgY21zVUludDMyTnVtYmVyIGxlbikKK3sKKyAgICBfY21zTUQ1KiBjdHggPSAoX2Ntc01ENSopIEhhbmRsZTsKKyAgICBjbXNVSW50MzJOdW1iZXIgdDsKKworICAgIHQgPSBjdHgtPmJpdHNbMF07CisgICAgaWYgKChjdHgtPmJpdHNbMF0gPSB0ICsgKGxlbiA8PCAzKSkgPCB0KQorICAgICAgICBjdHgtPmJpdHNbMV0rKzsKKworICAgIGN0eC0+Yml0c1sxXSArPSBsZW4gPj4gMjk7CisKKyAgICB0ID0gKHQgPj4gMykgJiAweDNmOworCisgICAgaWYgKHQpIHsKKworICAgICAgICBjbXNVSW50OE51bWJlciAqcCA9IChjbXNVSW50OE51bWJlciAqKSBjdHgtPmluICsgdDsKKworICAgICAgICB0ID0gNjQgLSB0OworICAgICAgICBpZiAobGVuIDwgdCkgeworICAgICAgICAgICAgbWVtbW92ZShwLCBidWYsIGxlbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtZW1tb3ZlKHAsIGJ1ZiwgdCk7CisgICAgICAgIGJ5dGVSZXZlcnNlKGN0eC0+aW4sIDE2KTsKKworICAgICAgICBNRDVfVHJhbnNmb3JtKGN0eC0+YnVmLCAoY21zVUludDMyTnVtYmVyICopIGN0eC0+aW4pOworICAgICAgICBidWYgKz0gdDsKKyAgICAgICAgbGVuIC09IHQ7CisgICAgfQorCisgICAgd2hpbGUgKGxlbiA+PSA2NCkgeworICAgICAgICBtZW1tb3ZlKGN0eC0+aW4sIGJ1ZiwgNjQpOworICAgICAgICBieXRlUmV2ZXJzZShjdHgtPmluLCAxNik7CisgICAgICAgIE1ENV9UcmFuc2Zvcm0oY3R4LT5idWYsIChjbXNVSW50MzJOdW1iZXIgKikgY3R4LT5pbik7CisgICAgICAgIGJ1ZiArPSA2NDsKKyAgICAgICAgbGVuIC09IDY0OworICAgIH0KKworICAgIG1lbW1vdmUoY3R4LT5pbiwgYnVmLCBsZW4pOworfQorCisvLyBEZXN0cm95IHRoZSBvYmplY3QgYW5kIHJldHVybiB0aGUgY2hlY2tzdW0KK3N0YXRpYwordm9pZCBNRDVmaW5pc2goY21zUHJvZmlsZUlEKiBQcm9maWxlSUQsICBjbXNIQU5ETEUgSGFuZGxlKQoreworICAgIF9jbXNNRDUqIGN0eCA9IChfY21zTUQ1KikgSGFuZGxlOworICAgIGNtc1VJbnQzMk51bWJlciBjb3VudDsKKyAgICBjbXNVSW50OE51bWJlciAqcDsKKworICAgIGNvdW50ID0gKGN0eC0+Yml0c1swXSA+PiAzKSAmIDB4M0Y7CisKKyAgICBwID0gY3R4LT5pbiArIGNvdW50OworICAgICpwKysgPSAweDgwOworCisgICAgY291bnQgPSA2NCAtIDEgLSBjb3VudDsKKworICAgIGlmIChjb3VudCA8IDgpIHsKKworICAgICAgICBtZW1zZXQocCwgMCwgY291bnQpOworICAgICAgICBieXRlUmV2ZXJzZShjdHgtPmluLCAxNik7CisgICAgICAgIE1ENV9UcmFuc2Zvcm0oY3R4LT5idWYsIChjbXNVSW50MzJOdW1iZXIgKikgY3R4LT5pbik7CisKKyAgICAgICAgbWVtc2V0KGN0eC0+aW4sIDAsIDU2KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtZW1zZXQocCwgMCwgY291bnQgLSA4KTsKKyAgICB9CisgICAgYnl0ZVJldmVyc2UoY3R4LT5pbiwgMTQpOworCisgICAgKChjbXNVSW50MzJOdW1iZXIgKikgY3R4LT5pbilbMTRdID0gY3R4LT5iaXRzWzBdOworICAgICgoY21zVUludDMyTnVtYmVyICopIGN0eC0+aW4pWzE1XSA9IGN0eC0+Yml0c1sxXTsKKworICAgIE1ENV9UcmFuc2Zvcm0oY3R4LT5idWYsIChjbXNVSW50MzJOdW1iZXIgKikgY3R4LT5pbik7CisKKyAgICBieXRlUmV2ZXJzZSgoY21zVUludDhOdW1iZXIgKikgY3R4LT5idWYsIDQpOworICAgIG1lbW1vdmUoUHJvZmlsZUlEIC0+SUQ4LCBjdHgtPmJ1ZiwgMTYpOworCisgICAgX2Ntc0ZyZWUoY3R4IC0+Q29udGV4dElELCBjdHgpOworfQorCisKKworLy8gQXNzdW1pbmcgaW8gcG9pbnRzIHRvIGFuIElDQyBwcm9maWxlLCBjb21wdXRlIGFuZCBzdG9yZSBNRDUgY2hlY2tzdW0KKy8vIEluIHRoZSBoZWFkZXIsIHJlbmRlcmluZyBpbnRlbnRlbnQsIGF0dHJpYnV0ZXMgYW5kIElEIHNob3VsZCBiZSBzZXQgdG8gemVybworLy8gYmVmb3JlIGNvbXB1dGluZyBNRDUgY2hlY2tzdW0gKHBlciA2LjEuMTMgaW4gSUNDIHNwZWMpCisKK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc01ENWNvbXB1dGVJRChjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICBjbXNDb250ZXh0ICAgQ29udGV4dElEOworICAgIGNtc1VJbnQzMk51bWJlciBCeXRlc05lZWRlZDsKKyAgICBjbXNVSW50OE51bWJlciogTWVtID0gTlVMTDsKKyAgICBjbXNIQU5ETEUgIE1ENSA9IE5VTEw7CisgICAgX2Ntc0lDQ1BST0ZJTEUqIEljYyA9IChfY21zSUNDUFJPRklMRSopIGhQcm9maWxlOworICAgIF9jbXNJQ0NQUk9GSUxFIEtlZXA7CisKKyAgICBfY21zQXNzZXJ0KGhQcm9maWxlICE9IE5VTEwpOworCisgICAgQ29udGV4dElEID0gY21zR2V0UHJvZmlsZUNvbnRleHRJRChoUHJvZmlsZSk7CisKKyAgICAvLyBTYXZlIGEgY29weSBvZiB0aGUgcHJvZmlsZSBoZWFkZXIKKyAgICBtZW1tb3ZlKCZLZWVwLCBJY2MsIHNpemVvZihfY21zSUNDUFJPRklMRSkpOworCisgICAgLy8gU2V0IFJJLCBhdHRyaWJ1dGVzIGFuZCBJRAorICAgIG1lbXNldCgmSWNjIC0+YXR0cmlidXRlcywgMCwgc2l6ZW9mKEljYyAtPmF0dHJpYnV0ZXMpKTsKKyAgICBJY2MgLT5SZW5kZXJpbmdJbnRlbnQgPSAwOworICAgIG1lbXNldCgmSWNjIC0+UHJvZmlsZUlELCAwLCBzaXplb2YoSWNjIC0+UHJvZmlsZUlEKSk7CisKKyAgICAvLyBDb21wdXRlIG5lZWRlZCBzdG9yYWdlCisgICAgaWYgKCFjbXNTYXZlUHJvZmlsZVRvTWVtKGhQcm9maWxlLCBOVUxMLCAmQnl0ZXNOZWVkZWQpKSBnb3RvIEVycm9yOworCisgICAgLy8gQWxsb2NhdGUgbWVtb3J5CisgICAgTWVtID0gKGNtc1VJbnQ4TnVtYmVyKikgX2Ntc01hbGxvYyhDb250ZXh0SUQsIEJ5dGVzTmVlZGVkKTsKKyAgICBpZiAoTWVtID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBTYXZlIHRvIHRlbXBvcmFyeSBzdG9yYWdlCisgICAgaWYgKCFjbXNTYXZlUHJvZmlsZVRvTWVtKGhQcm9maWxlLCBNZW0sICZCeXRlc05lZWRlZCkpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBDcmVhdGUgTUQ1IG9iamVjdAorICAgIE1ENSA9IE1ENWFsbG9jKENvbnRleHRJRCk7CisgICAgaWYgKE1ENSA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgLy8gQWRkIGFsbCBieXRlcworICAgIE1ENWFkZChNRDUsIE1lbSwgQnl0ZXNOZWVkZWQpOworCisgICAgLy8gVGVtcCBzdG9yYWdlIGlzIG5vIGxvbmdlciBuZWVkZWQKKyAgICBfY21zRnJlZShDb250ZXh0SUQsIE1lbSk7CisKKyAgICAvLyBSZXN0b3JlIGhlYWRlcgorICAgIG1lbW1vdmUoSWNjLCAmS2VlcCwgc2l6ZW9mKF9jbXNJQ0NQUk9GSUxFKSk7CisKKyAgICAvLyBBbmQgc3RvcmUgdGhlIElECisgICAgTUQ1ZmluaXNoKCZJY2MgLT5Qcm9maWxlSUQsICBNRDUpOworICAgIHJldHVybiBUUlVFOworCitFcnJvcjoKKworICAgIC8vIEZyZWUgcmVzb3VyY2VzIGFzIHNvbWV0aGluZyB3ZW50IHdyb25nCisgICAgLy8gIk1ENSIgY2Fubm90IGJlIG90aGVyIHRoYW4gTlVMTCBoZXJlLCBzbyBubyBuZWVkIHRvIGZyZWUgaXQKKyAgICBpZiAoTWVtICE9IE5VTEwpIF9jbXNGcmVlKENvbnRleHRJRCwgTWVtKTsKKyAgICBtZW1tb3ZlKEljYywgJktlZXAsIHNpemVvZihfY21zSUNDUFJPRklMRSkpOworICAgIHJldHVybiBGQUxTRTsKK30KKworY21zQm9vbCBDTVNFWFBPUlQgY21zTUQ1Y29tcHV0ZUlERXh0KGNvbnN0IHZvaWQqIGJ1ZiwgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBjaGFyIFByb2ZpbGVJRFsxNl0pCit7CisJY21zSEFORExFICBNRDU7CisJY21zVUludDhOdW1iZXIqIE1lbTsKKworCWlmIChidWYgPT0gTlVMTCkKKwkJcmV0dXJuIEZBTFNFOworICAgIE1ENSA9IE5VTEw7CisJTWVtID0gKGNtc1VJbnQ4TnVtYmVyKilfY21zTWFsbG9jKE5VTEwsc2l6ZSk7CisJbWVtbW92ZShNZW0sYnVmLHNpemUpOworCS8vIENyZWF0ZSBNRDUgb2JqZWN0CisgICAgTUQ1ID0gTUQ1YWxsb2MoTlVMTCk7CisgICAgaWYgKE1ENSA9PSBOVUxMKSBnb3RvIEVycm9yOworCisJLy8gQWRkIGFsbCBieXRlcworICAgIE1ENWFkZChNRDUsIE1lbSwgc2l6ZSk7CisKKwkvLyBUZW1wIHN0b3JhZ2UgaXMgbm8gbG9uZ2VyIG5lZWRlZAorICAgIF9jbXNGcmVlKE5VTEwsIE1lbSk7CisKKwkvLyBBbmQgc3RvcmUgdGhlIElECisgICAgTUQ1ZmluaXNoKChjbXNQcm9maWxlSUQqKVByb2ZpbGVJRCwgIE1ENSk7CisJcmV0dXJuIFRSVUU7CitFcnJvcjoKKwlpZiAoTUQ1ICE9IE5VTEwpIF9jbXNGcmVlKE5VTEwsIE1ENSk7CisJcmV0dXJuIEZBTFNFOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc210cnguYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNtdHJ4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI3YjkxYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNtdHJ4LmMKQEAgLTAsMCArMSwxNzUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gIExpdHRsZSBDb2xvciBNYW5hZ2VtZW50IFN5c3RlbQorLy8gIENvcHlyaWdodCAoYykgMTk5OC0yMDEyIE1hcnRpIE1hcmlhIFNhZ3VlcgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworLy8gYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisvLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUKKy8vIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPCisvLyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorLy8gTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorLy8gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisvLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKworI2luY2x1ZGUgImxjbXMyX2ludGVybmFsLmgiCisKKworI2RlZmluZSBEU1dBUCh4LCB5KSAgICAge2Ntc0Zsb2F0NjROdW1iZXIgdG1wID0gKHgpOyAoeCk9KHkpOyAoeSk9dG1wO30KKworCisvLyBJbml0aWF0ZSBhIHZlY3Rvcgordm9pZCBDTVNFWFBPUlQgX2Ntc1ZFQzNpbml0KGNtc1ZFQzMqIHIsIGNtc0Zsb2F0NjROdW1iZXIgeCwgY21zRmxvYXQ2NE51bWJlciB5LCBjbXNGbG9hdDY0TnVtYmVyIHopCit7CisgICAgciAtPiBuW1ZYXSA9IHg7CisgICAgciAtPiBuW1ZZXSA9IHk7CisgICAgciAtPiBuW1ZaXSA9IHo7Cit9CisKKy8vIFZlY3RvciBzdWJzdHJhY3Rpb24KK3ZvaWQgQ01TRVhQT1JUIF9jbXNWRUMzbWludXMoY21zVkVDMyogciwgY29uc3QgY21zVkVDMyogYSwgY29uc3QgY21zVkVDMyogYikKK3sKKyAgciAtPiBuW1ZYXSA9IGEgLT4gbltWWF0gLSBiIC0+IG5bVlhdOworICByIC0+IG5bVlldID0gYSAtPiBuW1ZZXSAtIGIgLT4gbltWWV07CisgIHIgLT4gbltWWl0gPSBhIC0+IG5bVlpdIC0gYiAtPiBuW1ZaXTsKK30KKworLy8gVmVjdG9yIGNyb3NzIHByb2R1Y3QKK3ZvaWQgQ01TRVhQT1JUIF9jbXNWRUMzY3Jvc3MoY21zVkVDMyogciwgY29uc3QgY21zVkVDMyogdSwgY29uc3QgY21zVkVDMyogdikKK3sKKyAgICByIC0+bltWWF0gPSB1LT5uW1ZZXSAqIHYtPm5bVlpdIC0gdi0+bltWWV0gKiB1LT5uW1ZaXTsKKyAgICByIC0+bltWWV0gPSB1LT5uW1ZaXSAqIHYtPm5bVlhdIC0gdi0+bltWWl0gKiB1LT5uW1ZYXTsKKyAgICByIC0+bltWWl0gPSB1LT5uW1ZYXSAqIHYtPm5bVlldIC0gdi0+bltWWF0gKiB1LT5uW1ZZXTsKK30KKworLy8gVmVjdG9yIGRvdCBwcm9kdWN0CitjbXNGbG9hdDY0TnVtYmVyIENNU0VYUE9SVCBfY21zVkVDM2RvdChjb25zdCBjbXNWRUMzKiB1LCBjb25zdCBjbXNWRUMzKiB2KQoreworICAgIHJldHVybiB1LT5uW1ZYXSAqIHYtPm5bVlhdICsgdS0+bltWWV0gKiB2LT5uW1ZZXSArIHUtPm5bVlpdICogdi0+bltWWl07Cit9CisKKy8vIEV1Y2xpZGVhbiBsZW5ndGgKK2Ntc0Zsb2F0NjROdW1iZXIgQ01TRVhQT1JUIF9jbXNWRUMzbGVuZ3RoKGNvbnN0IGNtc1ZFQzMqIGEpCit7CisgICAgcmV0dXJuIHNxcnQoYSAtPm5bVlhdICogYSAtPm5bVlhdICsKKyAgICAgICAgICAgICAgICBhIC0+bltWWV0gKiBhIC0+bltWWV0gKworICAgICAgICAgICAgICAgIGEgLT5uW1ZaXSAqIGEgLT5uW1ZaXSk7Cit9CisKKy8vIEV1Y2xpZGVhbiBkaXN0YW5jZQorY21zRmxvYXQ2NE51bWJlciBDTVNFWFBPUlQgX2Ntc1ZFQzNkaXN0YW5jZShjb25zdCBjbXNWRUMzKiBhLCBjb25zdCBjbXNWRUMzKiBiKQoreworICAgIGNtc0Zsb2F0NjROdW1iZXIgZDEgPSBhIC0+bltWWF0gLSBiIC0+bltWWF07CisgICAgY21zRmxvYXQ2NE51bWJlciBkMiA9IGEgLT5uW1ZZXSAtIGIgLT5uW1ZZXTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGQzID0gYSAtPm5bVlpdIC0gYiAtPm5bVlpdOworCisgICAgcmV0dXJuIHNxcnQoZDEqZDEgKyBkMipkMiArIGQzKmQzKTsKK30KKworCisKKy8vIDN4MyBJZGVudGl0eQordm9pZCBDTVNFWFBPUlQgX2Ntc01BVDNpZGVudGl0eShjbXNNQVQzKiBhKQoreworICAgIF9jbXNWRUMzaW5pdCgmYS0+IHZbMF0sIDEuMCwgMC4wLCAwLjApOworICAgIF9jbXNWRUMzaW5pdCgmYS0+IHZbMV0sIDAuMCwgMS4wLCAwLjApOworICAgIF9jbXNWRUMzaW5pdCgmYS0+IHZbMl0sIDAuMCwgMC4wLCAxLjApOworfQorCitzdGF0aWMKK2Ntc0Jvb2wgQ2xvc2VFbm91Z2goY21zRmxvYXQ2NE51bWJlciBhLCBjbXNGbG9hdDY0TnVtYmVyIGIpCit7CisgICAgcmV0dXJuIGZhYnMoYiAtIGEpIDwgKDEuMCAvIDY1NTM1LjApOworfQorCisKK2Ntc0Jvb2wgQ01TRVhQT1JUIF9jbXNNQVQzaXNJZGVudGl0eShjb25zdCBjbXNNQVQzKiBhKQoreworICAgIGNtc01BVDMgSWRlbnRpdHk7CisgICAgaW50IGksIGo7CisKKyAgICBfY21zTUFUM2lkZW50aXR5KCZJZGVudGl0eSk7CisKKyAgICBmb3IgKGk9MDsgaSA8IDM7IGkrKykKKyAgICAgICAgZm9yIChqPTA7IGogPCAzOyBqKyspCisgICAgICAgICAgICBpZiAoIUNsb3NlRW5vdWdoKGEgLT52W2ldLm5bal0sIElkZW50aXR5LnZbaV0ubltqXSkpIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIE11bHRpcGx5IHR3byBtYXRyaWNlcwordm9pZCBDTVNFWFBPUlQgX2Ntc01BVDNwZXIoY21zTUFUMyogciwgY29uc3QgY21zTUFUMyogYSwgY29uc3QgY21zTUFUMyogYikKK3sKKyNkZWZpbmUgUk9XQ09MKGksIGopIFwKKyAgICBhLT52W2ldLm5bMF0qYi0+dlswXS5uW2pdICsgYS0+dltpXS5uWzFdKmItPnZbMV0ubltqXSArIGEtPnZbaV0ublsyXSpiLT52WzJdLm5bal0KKworICAgIF9jbXNWRUMzaW5pdCgmci0+IHZbMF0sIFJPV0NPTCgwLDApLCBST1dDT0woMCwxKSwgUk9XQ09MKDAsMikpOworICAgIF9jbXNWRUMzaW5pdCgmci0+IHZbMV0sIFJPV0NPTCgxLDApLCBST1dDT0woMSwxKSwgUk9XQ09MKDEsMikpOworICAgIF9jbXNWRUMzaW5pdCgmci0+IHZbMl0sIFJPV0NPTCgyLDApLCBST1dDT0woMiwxKSwgUk9XQ09MKDIsMikpOworCisjdW5kZWYgUk9XQ09MIC8vKGksIGopCit9CisKKworCisvLyBJbnZlcnNlIG9mIGEgbWF0cml4IGIgPSBhXigtMSkKK2Ntc0Jvb2wgIENNU0VYUE9SVCBfY21zTUFUM2ludmVyc2UoY29uc3QgY21zTUFUMyogYSwgY21zTUFUMyogYikKK3sKKyAgIGNtc0Zsb2F0NjROdW1iZXIgZGV0LCBjMCwgYzEsIGMyOworCisgICBjMCA9ICBhIC0+IHZbMV0ublsxXSphIC0+IHZbMl0ublsyXSAtIGEgLT4gdlsxXS5uWzJdKmEgLT4gdlsyXS5uWzFdOworICAgYzEgPSAtYSAtPiB2WzFdLm5bMF0qYSAtPiB2WzJdLm5bMl0gKyBhIC0+IHZbMV0ublsyXSphIC0+IHZbMl0ublswXTsKKyAgIGMyID0gIGEgLT4gdlsxXS5uWzBdKmEgLT4gdlsyXS5uWzFdIC0gYSAtPiB2WzFdLm5bMV0qYSAtPiB2WzJdLm5bMF07CisKKyAgIGRldCA9IGEgLT4gdlswXS5uWzBdKmMwICsgYSAtPiB2WzBdLm5bMV0qYzEgKyBhIC0+IHZbMF0ublsyXSpjMjsKKworICAgaWYgKGZhYnMoZGV0KSA8IE1BVFJJWF9ERVRfVE9MRVJBTkNFKSByZXR1cm4gRkFMU0U7ICAvLyBzaW5ndWxhciBtYXRyaXg7IGNhbid0IGludmVydAorCisgICBiIC0+IHZbMF0ublswXSA9IGMwL2RldDsKKyAgIGIgLT4gdlswXS5uWzFdID0gKGEgLT4gdlswXS5uWzJdKmEgLT4gdlsyXS5uWzFdIC0gYSAtPiB2WzBdLm5bMV0qYSAtPiB2WzJdLm5bMl0pL2RldDsKKyAgIGIgLT4gdlswXS5uWzJdID0gKGEgLT4gdlswXS5uWzFdKmEgLT4gdlsxXS5uWzJdIC0gYSAtPiB2WzBdLm5bMl0qYSAtPiB2WzFdLm5bMV0pL2RldDsKKyAgIGIgLT4gdlsxXS5uWzBdID0gYzEvZGV0OworICAgYiAtPiB2WzFdLm5bMV0gPSAoYSAtPiB2WzBdLm5bMF0qYSAtPiB2WzJdLm5bMl0gLSBhIC0+IHZbMF0ublsyXSphIC0+IHZbMl0ublswXSkvZGV0OworICAgYiAtPiB2WzFdLm5bMl0gPSAoYSAtPiB2WzBdLm5bMl0qYSAtPiB2WzFdLm5bMF0gLSBhIC0+IHZbMF0ublswXSphIC0+IHZbMV0ublsyXSkvZGV0OworICAgYiAtPiB2WzJdLm5bMF0gPSBjMi9kZXQ7CisgICBiIC0+IHZbMl0ublsxXSA9IChhIC0+IHZbMF0ublsxXSphIC0+IHZbMl0ublswXSAtIGEgLT4gdlswXS5uWzBdKmEgLT4gdlsyXS5uWzFdKS9kZXQ7CisgICBiIC0+IHZbMl0ublsyXSA9IChhIC0+IHZbMF0ublswXSphIC0+IHZbMV0ublsxXSAtIGEgLT4gdlswXS5uWzFdKmEgLT4gdlsxXS5uWzBdKS9kZXQ7CisKKyAgIHJldHVybiBUUlVFOworfQorCisKKy8vIFNvbHZlIGEgc3lzdGVtIGluIHRoZSBmb3JtIEF4ID0gYgorY21zQm9vbCAgQ01TRVhQT1JUIF9jbXNNQVQzc29sdmUoY21zVkVDMyogeCwgY21zTUFUMyogYSwgY21zVkVDMyogYikKK3sKKyAgICBjbXNNQVQzIG0sIGFfMTsKKworICAgIG1lbW1vdmUoJm0sIGEsIHNpemVvZihjbXNNQVQzKSk7CisKKyAgICBpZiAoIV9jbXNNQVQzaW52ZXJzZSgmbSwgJmFfMSkpIHJldHVybiBGQUxTRTsgIC8vIFNpbmd1bGFyIG1hdHJpeAorCisgICAgX2Ntc01BVDNldmFsKHgsICZhXzEsIGIpOworICAgIHJldHVybiBUUlVFOworfQorCisvLyBFdmFsdWF0ZSBhIHZlY3RvciBhY3Jvc3MgYSBtYXRyaXgKK3ZvaWQgQ01TRVhQT1JUIF9jbXNNQVQzZXZhbChjbXNWRUMzKiByLCBjb25zdCBjbXNNQVQzKiBhLCBjb25zdCBjbXNWRUMzKiB2KQoreworICAgIHItPm5bVlhdID0gYS0+dlswXS5uW1ZYXSp2LT5uW1ZYXSArIGEtPnZbMF0ubltWWV0qdi0+bltWWV0gKyBhLT52WzBdLm5bVlpdKnYtPm5bVlpdOworICAgIHItPm5bVlldID0gYS0+dlsxXS5uW1ZYXSp2LT5uW1ZYXSArIGEtPnZbMV0ubltWWV0qdi0+bltWWV0gKyBhLT52WzFdLm5bVlpdKnYtPm5bVlpdOworICAgIHItPm5bVlpdID0gYS0+dlsyXS5uW1ZYXSp2LT5uW1ZYXSArIGEtPnZbMl0ubltWWV0qdi0+bltWWV0gKyBhLT52WzJdLm5bVlpdKnYtPm5bVlpdOworfQorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zbmFtZWQuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNuYW1lZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZmQxYzgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zbmFtZWQuYwpAQCAtMCwwICsxLDkyOSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTIgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworCisjaW5jbHVkZSAibGNtczJfaW50ZXJuYWwuaCIKKworLy8gTXVsdGlsb2NhbGl6ZWQgdW5pY29kZSBvYmplY3RzLiBUaGF0IGlzIGFuIGF0dGVtcHQgdG8gZW5jYXBzdWxhdGUgaTE4bi4KKworCisvLyBBbGxvY2F0ZXMgYW4gZW1wdHkgbXVsdGkgbG9jYWxpemFkIHVuaWNvZGUgb2JqZWN0CitjbXNNTFUqIENNU0VYUE9SVCBjbXNNTFVhbGxvYyhjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNNTFUqIG1sdTsKKworICAgIC8vIG5JdGVtcyBzaG91bGQgYmUgcG9zaXRpdmUgaWYgZ2l2ZW4KKyAgICBpZiAobkl0ZW1zIDw9IDApIG5JdGVtcyA9IDI7CisKKyAgICAvLyBDcmVhdGUgdGhlIGNvbnRhaW5lcgorICAgIG1sdSA9IChjbXNNTFUqKSBfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIHNpemVvZihjbXNNTFUpKTsKKyAgICBpZiAobWx1ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgbWx1IC0+Q29udGV4dElEID0gQ29udGV4dElEOworCisgICAgLy8gQ3JlYXRlIGVudHJ5IGFycmF5CisgICAgbWx1IC0+RW50cmllcyA9IChfY21zTUxVZW50cnkqKSBfY21zQ2FsbG9jKENvbnRleHRJRCwgbkl0ZW1zLCBzaXplb2YoX2Ntc01MVWVudHJ5KSk7CisgICAgaWYgKG1sdSAtPkVudHJpZXMgPT0gTlVMTCkgeworICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIG1sdSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8vIE9rLCBrZWVwIGluZGV4ZXMgdXAgdG8gZGF0ZQorICAgIG1sdSAtPkFsbG9jYXRlZEVudHJpZXMgICAgPSBuSXRlbXM7CisgICAgbWx1IC0+VXNlZEVudHJpZXMgICAgICAgICA9IDA7CisKKyAgICByZXR1cm4gbWx1OworfQorCisKKy8vIEdyb3dzIGEgbWVtcG9vbCB0YWJsZSBmb3IgYSBNTFUuIEVhY2ggdGltZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgbWVtcG9vbCBzaXplIGlzIG11bHRpcGxpZWQgdGltZXMgdHdvLgorc3RhdGljCitjbXNCb29sIEdyb3dNTFVwb29sKGNtc01MVSogbWx1KQoreworICAgIGNtc1VJbnQzMk51bWJlciBzaXplOworICAgIHZvaWQgKk5ld1B0cjsKKworICAgIC8vIFNhbml0eSBjaGVjaworICAgIGlmIChtbHUgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKG1sdSAtPlBvb2xTaXplID09IDApCisgICAgICAgIHNpemUgPSAyNTY7CisgICAgZWxzZQorICAgICAgICBzaXplID0gbWx1IC0+UG9vbFNpemUgKiAyOworCisgICAgLy8gQ2hlY2sgZm9yIG92ZXJmbG93CisgICAgaWYgKHNpemUgPCBtbHUgLT5Qb29sU2l6ZSkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gUmVhbGxvY2F0ZSB0aGUgcG9vbAorICAgIE5ld1B0ciA9IF9jbXNSZWFsbG9jKG1sdSAtPkNvbnRleHRJRCwgbWx1IC0+TWVtUG9vbCwgc2l6ZSk7CisgICAgaWYgKE5ld1B0ciA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKworICAgIG1sdSAtPk1lbVBvb2wgID0gTmV3UHRyOworICAgIG1sdSAtPlBvb2xTaXplID0gc2l6ZTsKKworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIEdyb3dzIGEgZW50cnkgdGFibGUgZm9yIGEgTUxVLiBFYWNoIHRpbWUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIHRhYmxlIHNpemUgaXMgbXVsdGlwbGllZCB0aW1lcyB0d28uCitzdGF0aWMKK2Ntc0Jvb2wgR3Jvd01MVXRhYmxlKGNtc01MVSogbWx1KQoreworICAgIGludCBBbGxvY2F0ZWRFbnRyaWVzOworICAgIF9jbXNNTFVlbnRyeSAqTmV3UHRyOworCisgICAgLy8gU2FuaXR5IGNoZWNrCisgICAgaWYgKG1sdSA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICBBbGxvY2F0ZWRFbnRyaWVzID0gbWx1IC0+QWxsb2NhdGVkRW50cmllcyAqIDI7CisKKyAgICAvLyBDaGVjayBmb3Igb3ZlcmZsb3cKKyAgICBpZiAoQWxsb2NhdGVkRW50cmllcyAvIDIgIT0gbWx1IC0+QWxsb2NhdGVkRW50cmllcykgcmV0dXJuIEZBTFNFOworCisgICAgLy8gUmVhbGxvY2F0ZSB0aGUgbWVtb3J5CisgICAgTmV3UHRyID0gKF9jbXNNTFVlbnRyeSopX2Ntc1JlYWxsb2MobWx1IC0+Q29udGV4dElELCBtbHUgLT5FbnRyaWVzLCBBbGxvY2F0ZWRFbnRyaWVzKnNpemVvZihfY21zTUxVZW50cnkpKTsKKyAgICBpZiAoTmV3UHRyID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIG1sdSAtPkVudHJpZXMgICAgICAgICAgPSBOZXdQdHI7CisgICAgbWx1IC0+QWxsb2NhdGVkRW50cmllcyA9IEFsbG9jYXRlZEVudHJpZXM7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworCisvLyBTZWFyY2ggZm9yIGEgc3BlY2lmaWMgZW50cnkgaW4gdGhlIHN0cnVjdHVyZS4gTGFuZ3VhZ2UgYW5kIENvdW50cnkgYXJlIHVzZWQuCitzdGF0aWMKK2ludCBTZWFyY2hNTFVFbnRyeShjbXNNTFUqIG1sdSwgY21zVUludDE2TnVtYmVyIExhbmd1YWdlQ29kZSwgY21zVUludDE2TnVtYmVyIENvdW50cnlDb2RlKQoreworICAgIGludCBpOworCisgICAgLy8gU2FuaXR5IGNoZWNrCisgICAgaWYgKG1sdSA9PSBOVUxMKSByZXR1cm4gLTE7CisKKyAgICAvLyBJdGVyYXRlIHdob2xlIHRhYmxlCisgICAgZm9yIChpPTA7IGkgPCBtbHUgLT5Vc2VkRW50cmllczsgaSsrKSB7CisKKyAgICAgICAgaWYgKG1sdSAtPkVudHJpZXNbaV0uQ291bnRyeSAgPT0gQ291bnRyeUNvZGUgJiYKKyAgICAgICAgICAgIG1sdSAtPkVudHJpZXNbaV0uTGFuZ3VhZ2UgPT0gTGFuZ3VhZ2VDb2RlKSByZXR1cm4gaTsKKyAgICB9CisKKyAgICAvLyBOb3QgZm91bmQKKyAgICByZXR1cm4gLTE7Cit9CisKKy8vIEFkZCBhIGJsb2NrIG9mIGNoYXJhY3RlcnMgdG8gdGhlIGludGVuZGVkIE1MVS4gTGFuZ3VhZ2UgYW5kIGNvdW50cnkgYXJlIHNwZWNpZmllZC4KKy8vIE9ubHkgb25lIGVudHJ5IGZvciBMYW5ndWFnZS9jb3VudHJ5IHBhaXIgaXMgYWxsb3dlZC4KK3N0YXRpYworY21zQm9vbCBBZGRNTFVCbG9jayhjbXNNTFUqIG1sdSwgY21zVUludDMyTnVtYmVyIHNpemUsIGNvbnN0IHdjaGFyX3QgKkJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgY21zVUludDE2TnVtYmVyIExhbmd1YWdlQ29kZSwgY21zVUludDE2TnVtYmVyIENvdW50cnlDb2RlKQoreworICAgIGNtc1VJbnQzMk51bWJlciBPZmZzZXQ7CisgICAgY21zVUludDhOdW1iZXIqIFB0cjsKKworICAgIC8vIFNhbml0eSBjaGVjaworICAgIGlmIChtbHUgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gSXMgdGhlcmUgYW55IHJvb20gYXZhaWxhYmxlPworICAgIGlmIChtbHUgLT5Vc2VkRW50cmllcyA+PSBtbHUgLT5BbGxvY2F0ZWRFbnRyaWVzKSB7CisgICAgICAgIGlmICghR3Jvd01MVXRhYmxlKG1sdSkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBPbmx5IG9uZSBBU0NJSSBzdHJpbmcKKyAgICBpZiAoU2VhcmNoTUxVRW50cnkobWx1LCBMYW5ndWFnZUNvZGUsIENvdW50cnlDb2RlKSA+PSAwKSByZXR1cm4gRkFMU0U7ICAvLyBPbmx5IG9uZSAgaXMgYWxsb3dlZCEKKworICAgIC8vIENoZWNrIGZvciBzaXplCisgICAgd2hpbGUgKChtbHUgLT5Qb29sU2l6ZSAtIG1sdSAtPlBvb2xVc2VkKSA8IHNpemUpIHsKKworICAgICAgICAgICAgaWYgKCFHcm93TUxVcG9vbChtbHUpKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgT2Zmc2V0ID0gbWx1IC0+UG9vbFVzZWQ7CisKKyAgICBQdHIgPSAoY21zVUludDhOdW1iZXIqKSBtbHUgLT5NZW1Qb29sOworICAgIGlmIChQdHIgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gU2V0IHRoZSBlbnRyeQorICAgIG1lbW1vdmUoUHRyICsgT2Zmc2V0LCBCbG9jaywgc2l6ZSk7CisgICAgbWx1IC0+UG9vbFVzZWQgKz0gc2l6ZTsKKworICAgIG1sdSAtPkVudHJpZXNbbWx1IC0+VXNlZEVudHJpZXNdLlN0clcgICAgID0gT2Zmc2V0OworICAgIG1sdSAtPkVudHJpZXNbbWx1IC0+VXNlZEVudHJpZXNdLkxlbiAgICAgID0gc2l6ZTsKKyAgICBtbHUgLT5FbnRyaWVzW21sdSAtPlVzZWRFbnRyaWVzXS5Db3VudHJ5ICA9IENvdW50cnlDb2RlOworICAgIG1sdSAtPkVudHJpZXNbbWx1IC0+VXNlZEVudHJpZXNdLkxhbmd1YWdlID0gTGFuZ3VhZ2VDb2RlOworICAgIG1sdSAtPlVzZWRFbnRyaWVzKys7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworCisvLyBBZGQgYW4gQVNDSUkgZW50cnkuCitjbXNCb29sIENNU0VYUE9SVCBjbXNNTFVzZXRBU0NJSShjbXNNTFUqIG1sdSwgY29uc3QgY2hhciBMYW5ndWFnZUNvZGVbM10sIGNvbnN0IGNoYXIgQ291bnRyeUNvZGVbM10sIGNvbnN0IGNoYXIqIEFTQ0lJU3RyaW5nKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpLCBsZW4gPSAoY21zVUludDMyTnVtYmVyKSBzdHJsZW4oQVNDSUlTdHJpbmcpKzE7CisgICAgd2NoYXJfdCogV1N0cjsKKyAgICBjbXNCb29sICByYzsKKyAgICBjbXNVSW50MTZOdW1iZXIgTGFuZyAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoKihjbXNVSW50MTZOdW1iZXIqKSBMYW5ndWFnZUNvZGUpOworICAgIGNtc1VJbnQxNk51bWJlciBDbnRyeSA9IF9jbXNBZGp1c3RFbmRpYW5lc3MxNigqKGNtc1VJbnQxNk51bWJlciopIENvdW50cnlDb2RlKTsKKworICAgIGlmIChtbHUgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgV1N0ciA9ICh3Y2hhcl90KikgX2Ntc0NhbGxvYyhtbHUgLT5Db250ZXh0SUQsIGxlbiwgIHNpemVvZih3Y2hhcl90KSk7CisgICAgaWYgKFdTdHIgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgZm9yIChpPTA7IGkgPCBsZW47IGkrKykKKyAgICAgICAgV1N0cltpXSA9ICh3Y2hhcl90KSBBU0NJSVN0cmluZ1tpXTsKKworICAgIHJjID0gQWRkTUxVQmxvY2sobWx1LCBsZW4gICogc2l6ZW9mKHdjaGFyX3QpLCBXU3RyLCBMYW5nLCBDbnRyeSk7CisKKyAgICBfY21zRnJlZShtbHUgLT5Db250ZXh0SUQsIFdTdHIpOworICAgIHJldHVybiByYzsKKworfQorCisvLyBXZSBkb24ndCBuZWVkIGFueSB3Y3Mgc3VwcG9ydCBsaWJyYXJ5CitzdGF0aWMKK2Ntc1VJbnQzMk51bWJlciBteXdjc2xlbihjb25zdCB3Y2hhcl90ICpzKQoreworICAgIGNvbnN0IHdjaGFyX3QgKnA7CisKKyAgICBwID0gczsKKyAgICB3aGlsZSAoKnApCisgICAgICAgIHArKzsKKworICAgIHJldHVybiAoY21zVUludDMyTnVtYmVyKShwIC0gcyk7Cit9CisKKworLy8gQWRkIGEgd2lkZSBlbnRyeQorY21zQm9vbCAgQ01TRVhQT1JUIGNtc01MVXNldFdpZGUoY21zTUxVKiBtbHUsIGNvbnN0IGNoYXIgTGFuZ3VhZ2VbM10sIGNvbnN0IGNoYXIgQ291bnRyeVszXSwgY29uc3Qgd2NoYXJfdCogV2lkZVN0cmluZykKK3sKKyAgICBjbXNVSW50MTZOdW1iZXIgTGFuZyAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoKihjbXNVSW50MTZOdW1iZXIqKSBMYW5ndWFnZSk7CisgICAgY21zVUludDE2TnVtYmVyIENudHJ5ID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KCooY21zVUludDE2TnVtYmVyKikgQ291bnRyeSk7CisgICAgY21zVUludDMyTnVtYmVyIGxlbjsKKworICAgIGlmIChtbHUgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworICAgIGlmIChXaWRlU3RyaW5nID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIGxlbiA9IChjbXNVSW50MzJOdW1iZXIpIChteXdjc2xlbihXaWRlU3RyaW5nKSArIDEpICogc2l6ZW9mKHdjaGFyX3QpOworICAgIHJldHVybiBBZGRNTFVCbG9jayhtbHUsIGxlbiwgV2lkZVN0cmluZywgTGFuZywgQ250cnkpOworfQorCisvLyBEdXBsaWNhdGluZyBhIE1MVSBpcyBhcyBlYXN5IGFzIGNvcHlpbmcgYWxsIG1lbWJlcnMKK2Ntc01MVSogQ01TRVhQT1JUIGNtc01MVWR1cChjb25zdCBjbXNNTFUqIG1sdSkKK3sKKyAgICBjbXNNTFUqIE5ld01sdSA9IE5VTEw7CisKKyAgICAvLyBEdXBsaWNhdGluZyBhIE5VTEwgb2J0YWlucyBhIE5VTEwKKyAgICBpZiAobWx1ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgTmV3TWx1ID0gY21zTUxVYWxsb2MobWx1IC0+Q29udGV4dElELCBtbHUgLT5Vc2VkRW50cmllcyk7CisgICAgaWYgKE5ld01sdSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4KKyAgICBpZiAoTmV3TWx1IC0+QWxsb2NhdGVkRW50cmllcyA8IG1sdSAtPlVzZWRFbnRyaWVzKQorICAgICAgICBnb3RvIEVycm9yOworCisgICAgLy8gU2FuaXRpemUuLi4KKyAgICBpZiAoTmV3TWx1IC0+RW50cmllcyA9PSBOVUxMIHx8IG1sdSAtPkVudHJpZXMgPT0gTlVMTCkgIGdvdG8gRXJyb3I7CisKKyAgICBtZW1tb3ZlKE5ld01sdSAtPkVudHJpZXMsIG1sdSAtPkVudHJpZXMsIG1sdSAtPlVzZWRFbnRyaWVzICogc2l6ZW9mKF9jbXNNTFVlbnRyeSkpOworICAgIE5ld01sdSAtPlVzZWRFbnRyaWVzID0gbWx1IC0+VXNlZEVudHJpZXM7CisKKyAgICAvLyBUaGUgTUxVIG1heSBiZSBlbXB0eQorICAgIGlmIChtbHUgLT5Qb29sVXNlZCA9PSAwKSB7CisgICAgICAgIE5ld01sdSAtPk1lbVBvb2wgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLy8gSXQgaXMgbm90IGVtcHR5CisgICAgICAgIE5ld01sdSAtPk1lbVBvb2wgPSBfY21zTWFsbG9jKG1sdSAtPkNvbnRleHRJRCwgbWx1IC0+UG9vbFVzZWQpOworICAgICAgICBpZiAoTmV3TWx1IC0+TWVtUG9vbCA9PSBOVUxMKSBnb3RvIEVycm9yOworICAgIH0KKworICAgIE5ld01sdSAtPlBvb2xTaXplID0gbWx1IC0+UG9vbFVzZWQ7CisKKyAgICBpZiAoTmV3TWx1IC0+TWVtUG9vbCA9PSBOVUxMIHx8IG1sdSAtPk1lbVBvb2wgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIG1lbW1vdmUoTmV3TWx1IC0+TWVtUG9vbCwgbWx1LT5NZW1Qb29sLCBtbHUgLT5Qb29sVXNlZCk7CisgICAgTmV3TWx1IC0+UG9vbFVzZWQgPSBtbHUgLT5Qb29sVXNlZDsKKworICAgIHJldHVybiBOZXdNbHU7CisKK0Vycm9yOgorCisgICAgaWYgKE5ld01sdSAhPSBOVUxMKSBjbXNNTFVmcmVlKE5ld01sdSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vIEZyZWUgYW55IHVzZWQgbWVtb3J5Cit2b2lkIENNU0VYUE9SVCBjbXNNTFVmcmVlKGNtc01MVSogbWx1KQoreworICAgIGlmIChtbHUpIHsKKworICAgICAgICBpZiAobWx1IC0+IEVudHJpZXMpIF9jbXNGcmVlKG1sdSAtPkNvbnRleHRJRCwgbWx1LT5FbnRyaWVzKTsKKyAgICAgICAgaWYgKG1sdSAtPiBNZW1Qb29sKSBfY21zRnJlZShtbHUgLT5Db250ZXh0SUQsIG1sdS0+TWVtUG9vbCk7CisKKyAgICAgICAgX2Ntc0ZyZWUobWx1IC0+Q29udGV4dElELCBtbHUpOworICAgIH0KK30KKworCisvLyBUaGUgYWxnb3JpdGhtIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBleGFjdCBtYXRjaCBvZiBjb3VudHJ5IGFuZCBsYW5ndWFnZSwgaWYgbm90IGZvdW5kIGl0IHVzZXMKKy8vIHRoZSBMYW5ndWFnZS4gSWYgbm9uZSBpcyBmb3VuZCwgZmlyc3QgZW50cnkgaXMgdXNlZCBpbnN0ZWFkLgorc3RhdGljCitjb25zdCB3Y2hhcl90KiBfY21zTUxVZ2V0V2lkZShjb25zdCBjbXNNTFUqIG1sdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAqbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDE2TnVtYmVyIExhbmd1YWdlQ29kZSwgY21zVUludDE2TnVtYmVyIENvdW50cnlDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDE2TnVtYmVyKiBVc2VkTGFuZ3VhZ2VDb2RlLCBjbXNVSW50MTZOdW1iZXIqIFVzZWRDb3VudHJ5Q29kZSkKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQgQmVzdCA9IC0xOworICAgIF9jbXNNTFVlbnRyeSogdjsKKworICAgIGlmIChtbHUgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobWx1IC0+IEFsbG9jYXRlZEVudHJpZXMgPD0gMCkgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGk9MDsgaSA8IG1sdSAtPlVzZWRFbnRyaWVzOyBpKyspIHsKKworICAgICAgICB2ID0gbWx1IC0+RW50cmllcyArIGk7CisKKyAgICAgICAgaWYgKHYgLT4gTGFuZ3VhZ2UgPT0gTGFuZ3VhZ2VDb2RlKSB7CisKKyAgICAgICAgICAgIGlmIChCZXN0ID09IC0xKSBCZXN0ID0gaTsKKworICAgICAgICAgICAgaWYgKHYgLT4gQ291bnRyeSA9PSBDb3VudHJ5Q29kZSkgeworCisgICAgICAgICAgICAgICAgaWYgKFVzZWRMYW5ndWFnZUNvZGUgIT0gTlVMTCkgKlVzZWRMYW5ndWFnZUNvZGUgPSB2IC0+TGFuZ3VhZ2U7CisgICAgICAgICAgICAgICAgaWYgKFVzZWRDb3VudHJ5Q29kZSAgIT0gTlVMTCkgKlVzZWRDb3VudHJ5Q29kZSA9IHYgLT5Db3VudHJ5OworCisgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBOVUxMKSAqbGVuID0gdiAtPkxlbjsKKworICAgICAgICAgICAgICAgIHJldHVybiAod2NoYXJfdCopICgoY21zVUludDhOdW1iZXIqKSBtbHUgLT5NZW1Qb29sICsgdiAtPiBTdHJXKTsgICAgICAgIC8vIEZvdW5kIGV4YWN0IG1hdGNoCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBObyBzdHJpbmcgZm91bmQuIFJldHVybiBGaXJzdCBvbmUKKyAgICBpZiAoQmVzdCA9PSAtMSkKKyAgICAgICAgQmVzdCA9IDA7CisKKyAgICB2ID0gbWx1IC0+RW50cmllcyArIEJlc3Q7CisKKyAgICBpZiAoVXNlZExhbmd1YWdlQ29kZSAhPSBOVUxMKSAqVXNlZExhbmd1YWdlQ29kZSA9IHYgLT5MYW5ndWFnZTsKKyAgICBpZiAoVXNlZENvdW50cnlDb2RlICAhPSBOVUxMKSAqVXNlZENvdW50cnlDb2RlID0gdiAtPkNvdW50cnk7CisKKyAgICBpZiAobGVuICE9IE5VTEwpICpsZW4gICA9IHYgLT5MZW47CisKKyAgICByZXR1cm4od2NoYXJfdCopICgoY21zVUludDhOdW1iZXIqKSBtbHUgLT5NZW1Qb29sICsgdiAtPlN0clcpOworfQorCisKKy8vIE9idGFpbiBhbiBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiB0aGUgd2lkZSBzdHJpbmcuIFNldHRpbmcgYnVmZmVyIHRvIE5VTEwgcmV0dXJucyB0aGUgbGVuCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc01MVWdldEFTQ0lJKGNvbnN0IGNtc01MVSogbWx1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBMYW5ndWFnZUNvZGVbM10sIGNvbnN0IGNoYXIgQ291bnRyeUNvZGVbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBCdWZmZXIsIGNtc1VJbnQzMk51bWJlciBCdWZmZXJTaXplKQoreworICAgIGNvbnN0IHdjaGFyX3QgKldpZGU7CisgICAgY21zVUludDMyTnVtYmVyICBTdHJMZW4gPSAwOworICAgIGNtc1VJbnQzMk51bWJlciBBU0NJSWxlbiwgaTsKKworICAgIGNtc1VJbnQxNk51bWJlciBMYW5nICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MxNigqKGNtc1VJbnQxNk51bWJlciopIExhbmd1YWdlQ29kZSk7CisgICAgY21zVUludDE2TnVtYmVyIENudHJ5ID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KCooY21zVUludDE2TnVtYmVyKikgQ291bnRyeUNvZGUpOworCisgICAgLy8gU2FuaXRpemUKKyAgICBpZiAobWx1ID09IE5VTEwpIHJldHVybiAwOworCisgICAgLy8gR2V0IFdpZGVDaGFyCisgICAgV2lkZSA9IF9jbXNNTFVnZXRXaWRlKG1sdSwgJlN0ckxlbiwgTGFuZywgQ250cnksIE5VTEwsIE5VTEwpOworICAgIGlmIChXaWRlID09IE5VTEwpIHJldHVybiAwOworCisgICAgQVNDSUlsZW4gPSBTdHJMZW4gLyBzaXplb2Yod2NoYXJfdCk7CisKKyAgICAvLyBNYXliZSB3ZSB3YW50IG9ubHkgdG8ga25vdyB0aGUgbGVuPworICAgIGlmIChCdWZmZXIgPT0gTlVMTCkgcmV0dXJuIEFTQ0lJbGVuICsgMTsgLy8gTm90ZSB0aGUgemVybyBhdCB0aGUgZW5kCisKKyAgICAvLyBObyBidWZmZXIgc2l6ZSBtZWFucyBubyBkYXRhCisgICAgaWYgKEJ1ZmZlclNpemUgPD0gMCkgcmV0dXJuIDA7CisKKyAgICAvLyBTb21lIGNsaXBwaW5nIG1heSBiZSByZXF1aXJlZAorICAgIGlmIChCdWZmZXJTaXplIDwgQVNDSUlsZW4gKyAxKQorICAgICAgICBBU0NJSWxlbiA9IEJ1ZmZlclNpemUgLSAxOworCisgICAgLy8gUHJlY2VzcyBlYWNoIGNoYXJhY3RlcgorICAgIGZvciAoaT0wOyBpIDwgQVNDSUlsZW47IGkrKykgeworCisgICAgICAgIGlmIChXaWRlW2ldID09IDApCisgICAgICAgICAgICBCdWZmZXJbaV0gPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBCdWZmZXJbaV0gPSAoY2hhcikgV2lkZVtpXTsKKyAgICB9CisKKyAgICAvLyBXZSBwdXQgYSB0ZXJtaW5hdGlvbiAiXDAiCisgICAgQnVmZmVyW0FTQ0lJbGVuXSA9IDA7CisgICAgcmV0dXJuIEFTQ0lJbGVuICsgMTsKK30KKworLy8gT2J0YWluIGEgd2lkZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgTUxVLCBvbiBkZXBlbmRpbmcgb24gY3VycmVudCBsb2NhbGUgc2V0dGluZ3MKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zTUxVZ2V0V2lkZShjb25zdCBjbXNNTFUqIG1sdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBMYW5ndWFnZUNvZGVbM10sIGNvbnN0IGNoYXIgQ291bnRyeUNvZGVbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QqIEJ1ZmZlciwgY21zVUludDMyTnVtYmVyIEJ1ZmZlclNpemUpCit7CisgICAgY29uc3Qgd2NoYXJfdCAqV2lkZTsKKyAgICBjbXNVSW50MzJOdW1iZXIgIFN0ckxlbiA9IDA7CisKKyAgICBjbXNVSW50MTZOdW1iZXIgTGFuZyAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoKihjbXNVSW50MTZOdW1iZXIqKSBMYW5ndWFnZUNvZGUpOworICAgIGNtc1VJbnQxNk51bWJlciBDbnRyeSA9IF9jbXNBZGp1c3RFbmRpYW5lc3MxNigqKGNtc1VJbnQxNk51bWJlciopIENvdW50cnlDb2RlKTsKKworICAgIC8vIFNhbml0aXplCisgICAgaWYgKG1sdSA9PSBOVUxMKSByZXR1cm4gMDsKKworICAgIFdpZGUgPSBfY21zTUxVZ2V0V2lkZShtbHUsICZTdHJMZW4sIExhbmcsIENudHJ5LCBOVUxMLCBOVUxMKTsKKyAgICBpZiAoV2lkZSA9PSBOVUxMKSByZXR1cm4gMDsKKworICAgIC8vIE1heWJlIHdlIHdhbnQgb25seSB0byBrbm93IHRoZSBsZW4/CisgICAgaWYgKEJ1ZmZlciA9PSBOVUxMKSByZXR1cm4gU3RyTGVuICsgc2l6ZW9mKHdjaGFyX3QpOworCisgIC8vIE5vIGJ1ZmZlciBzaXplIG1lYW5zIG5vIGRhdGEKKyAgICBpZiAoQnVmZmVyU2l6ZSA8PSAwKSByZXR1cm4gMDsKKworICAgIC8vIFNvbWUgY2xpcHBpbmcgbWF5IGJlIHJlcXVpcmVkCisgICAgaWYgKEJ1ZmZlclNpemUgPCBTdHJMZW4gKyBzaXplb2Yod2NoYXJfdCkpCisgICAgICAgIFN0ckxlbiA9IEJ1ZmZlclNpemUgLSArIHNpemVvZih3Y2hhcl90KTsKKworICAgIG1lbW1vdmUoQnVmZmVyLCBXaWRlLCBTdHJMZW4pOworICAgIEJ1ZmZlcltTdHJMZW4gLyBzaXplb2Yod2NoYXJfdCldID0gMDsKKworICAgIHJldHVybiBTdHJMZW4gKyBzaXplb2Yod2NoYXJfdCk7Cit9CisKKworLy8gR2V0IGFsc28gdGhlIGxhbmd1YWdlIGFuZCBjb3VudHJ5CitDTVNBUEkgY21zQm9vbCBDTVNFWFBPUlQgY21zTUxVZ2V0VHJhbnNsYXRpb24oY29uc3QgY21zTUxVKiBtbHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBMYW5ndWFnZUNvZGVbM10sIGNvbnN0IGNoYXIgQ291bnRyeUNvZGVbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBPYnRhaW5lZExhbmd1YWdlWzNdLCBjaGFyIE9idGFpbmVkQ291bnRyeVszXSkKK3sKKyAgICBjb25zdCB3Y2hhcl90ICpXaWRlOworCisgICAgY21zVUludDE2TnVtYmVyIExhbmcgID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KCooY21zVUludDE2TnVtYmVyKikgTGFuZ3VhZ2VDb2RlKTsKKyAgICBjbXNVSW50MTZOdW1iZXIgQ250cnkgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoKihjbXNVSW50MTZOdW1iZXIqKSBDb3VudHJ5Q29kZSk7CisgICAgY21zVUludDE2TnVtYmVyIE9idExhbmcsIE9idENvZGU7CisKKyAgICAvLyBTYW5pdGl6ZQorICAgIGlmIChtbHUgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgV2lkZSA9IF9jbXNNTFVnZXRXaWRlKG1sdSwgTlVMTCwgTGFuZywgQ250cnksICZPYnRMYW5nLCAmT2J0Q29kZSk7CisgICAgaWYgKFdpZGUgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gR2V0IHVzZWQgbGFuZ3VhZ2UgYW5kIGNvZGUKKyAgICAqKGNtc1VJbnQxNk51bWJlciAqKU9idGFpbmVkTGFuZ3VhZ2UgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoT2J0TGFuZyk7CisgICAgKihjbXNVSW50MTZOdW1iZXIgKilPYnRhaW5lZENvdW50cnkgID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KE9idENvZGUpOworCisgICAgT2J0YWluZWRMYW5ndWFnZVsyXSA9IE9idGFpbmVkQ291bnRyeVsyXSA9IDA7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworCisvLyBHZXQgdGhlIG51bWJlciBvZiB0cmFuc2xhdGlvbnMgaW4gdGhlIE1MVSBvYmplY3QKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zTUxVdHJhbnNsYXRpb25zQ291bnQoY29uc3QgY21zTUxVKiBtbHUpCit7CisgICAgaWYgKG1sdSA9PSBOVUxMKSByZXR1cm4gMDsKKyAgICByZXR1cm4gbWx1LT5Vc2VkRW50cmllczsKK30KKworLy8gR2V0IHRoZSBsYW5ndWFnZSBhbmQgY291bnRyeSBjb2RlcyBmb3IgYSBzcGVjaWZpYyBNTFUgaW5kZXgKK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc01MVXRyYW5zbGF0aW9uc0NvZGVzKGNvbnN0IGNtc01MVSogbWx1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgTGFuZ3VhZ2VDb2RlWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBDb3VudHJ5Q29kZVszXSkKK3sKKyAgICBfY21zTUxVZW50cnkgKmVudHJ5OworCisgICAgaWYgKG1sdSA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoaWR4ID49IChjbXNVSW50MzJOdW1iZXIpIG1sdS0+VXNlZEVudHJpZXMpIHJldHVybiBGQUxTRTsKKworICAgIGVudHJ5ID0gJm1sdS0+RW50cmllc1tpZHhdOworICAgIAorICAgICooY21zVUludDE2TnVtYmVyICopTGFuZ3VhZ2VDb2RlID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KGVudHJ5LT5MYW5ndWFnZSk7CisgICAgKihjbXNVSW50MTZOdW1iZXIgKilDb3VudHJ5Q29kZSAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoZW50cnktPkNvdW50cnkpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworLy8gTmFtZWQgY29sb3IgbGlzdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gR3JvdyB0aGUgbGlzdCB0byBrZWVwIGF0IGxlYXN0IE51bUVsZW1lbnRzCitzdGF0aWMKK2Ntc0Jvb2wgIEdyb3dOYW1lZENvbG9yTGlzdChjbXNOQU1FRENPTE9STElTVCogdikKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgc2l6ZTsKKyAgICBfY21zTkFNRURDT0xPUiAqIE5ld1B0cjsKKworICAgIGlmICh2ID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIGlmICh2IC0+QWxsb2NhdGVkID09IDApCisgICAgICAgIHNpemUgPSA2NDsgICAvLyBJbml0aWFsIGd1ZXNzCisgICAgZWxzZQorICAgICAgICBzaXplID0gdiAtPkFsbG9jYXRlZCAqIDI7CisKKyAgICAvLyBLZWVwIGEgbWF4aW11bSBjb2xvciBsaXN0cyBjYW4gZ3JvdywgMTAwSyBlbnRyaWVzIHNlZW1zIHJlYXNvbmFibGUKKyAgICBpZiAoc2l6ZSA+IDEwMjQqMTAwKSByZXR1cm4gRkFMU0U7CisKKyAgICBOZXdQdHIgPSAoX2Ntc05BTUVEQ09MT1IqKSBfY21zUmVhbGxvYyh2IC0+Q29udGV4dElELCB2IC0+TGlzdCwgc2l6ZSAqIHNpemVvZihfY21zTkFNRURDT0xPUikpOworICAgIGlmIChOZXdQdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgdiAtPkxpc3QgICAgICA9IE5ld1B0cjsKKyAgICB2IC0+QWxsb2NhdGVkID0gc2l6ZTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gQWxsb2NhdGUgYSBsaXN0IGZvciBuIGVsZW1lbnRzCitjbXNOQU1FRENPTE9STElTVCogQ01TRVhQT1JUIGNtc0FsbG9jTmFtZWRDb2xvckxpc3QoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBuLCBjbXNVSW50MzJOdW1iZXIgQ29sb3JhbnRDb3VudCwgY29uc3QgY2hhciogUHJlZml4LCBjb25zdCBjaGFyKiBTdWZmaXgpCit7CisgICAgY21zTkFNRURDT0xPUkxJU1QqIHYgPSAoY21zTkFNRURDT0xPUkxJU1QqKSBfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIHNpemVvZihjbXNOQU1FRENPTE9STElTVCkpOworCisgICAgaWYgKHYgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICB2IC0+TGlzdCAgICAgID0gTlVMTDsKKyAgICB2IC0+bkNvbG9ycyAgID0gMDsKKyAgICB2IC0+Q29udGV4dElEICA9IENvbnRleHRJRDsKKworICAgIHdoaWxlICh2IC0+IEFsbG9jYXRlZCA8IG4pCisgICAgICAgIEdyb3dOYW1lZENvbG9yTGlzdCh2KTsKKworICAgIHN0cm5jcHkodiAtPlByZWZpeCwgUHJlZml4LCBzaXplb2YodiAtPlByZWZpeCktMSk7CisgICAgc3RybmNweSh2IC0+U3VmZml4LCBTdWZmaXgsIHNpemVvZih2IC0+U3VmZml4KS0xKTsKKyAgICB2LT5QcmVmaXhbMzJdID0gdi0+U3VmZml4WzMyXSA9IDA7CisKKyAgICB2IC0+IENvbG9yYW50Q291bnQgPSBDb2xvcmFudENvdW50OworCisgICAgcmV0dXJuIHY7Cit9CisKKy8vIEZyZWUgYSBsaXN0Cit2b2lkIENNU0VYUE9SVCBjbXNGcmVlTmFtZWRDb2xvckxpc3QoY21zTkFNRURDT0xPUkxJU1QqIHYpCit7CisgICAgaWYgKHYgPT0gTlVMTCkgcmV0dXJuOworICAgIGlmICh2IC0+TGlzdCkgX2Ntc0ZyZWUodiAtPkNvbnRleHRJRCwgdiAtPkxpc3QpOworICAgIF9jbXNGcmVlKHYgLT5Db250ZXh0SUQsIHYpOworfQorCitjbXNOQU1FRENPTE9STElTVCogQ01TRVhQT1JUIGNtc0R1cE5hbWVkQ29sb3JMaXN0KGNvbnN0IGNtc05BTUVEQ09MT1JMSVNUKiB2KQoreworICAgIGNtc05BTUVEQ09MT1JMSVNUKiBOZXdOQzsKKworICAgIGlmICh2ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgTmV3TkM9IGNtc0FsbG9jTmFtZWRDb2xvckxpc3QodiAtPkNvbnRleHRJRCwgdiAtPiBuQ29sb3JzLCB2IC0+Q29sb3JhbnRDb3VudCwgdiAtPlByZWZpeCwgdiAtPlN1ZmZpeCk7CisgICAgaWYgKE5ld05DID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgLy8gRm9yIHJlYWxseSBsYXJnZSB0YWJsZXMgd2UgbmVlZCB0aGlzCisgICAgd2hpbGUgKE5ld05DIC0+QWxsb2NhdGVkIDwgdiAtPkFsbG9jYXRlZCkKKyAgICAgICAgR3Jvd05hbWVkQ29sb3JMaXN0KE5ld05DKTsKKworICAgIG1lbW1vdmUoTmV3TkMgLT5QcmVmaXgsIHYgLT5QcmVmaXgsIHNpemVvZih2IC0+UHJlZml4KSk7CisgICAgbWVtbW92ZShOZXdOQyAtPlN1ZmZpeCwgdiAtPlN1ZmZpeCwgc2l6ZW9mKHYgLT5TdWZmaXgpKTsKKyAgICBOZXdOQyAtPkNvbG9yYW50Q291bnQgPSB2IC0+Q29sb3JhbnRDb3VudDsKKyAgICBtZW1tb3ZlKE5ld05DLT5MaXN0LCB2IC0+TGlzdCwgdi0+bkNvbG9ycyAqIHNpemVvZihfY21zTkFNRURDT0xPUikpOworICAgIE5ld05DIC0+bkNvbG9ycyA9IHYgLT5uQ29sb3JzOworICAgIHJldHVybiBOZXdOQzsKK30KKworCisvLyBBcHBlbmQgYSBjb2xvciB0byBhIGxpc3QuIExpc3QgcG9pbnRlciBtYXkgY2hhbmdlIGlmIHJlYWxsb2NhdGVkCitjbXNCb29sICBDTVNFWFBPUlQgY21zQXBwZW5kTmFtZWRDb2xvcihjbXNOQU1FRENPTE9STElTVCogTmFtZWRDb2xvckxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDE2TnVtYmVyIFBDU1szXSwgY21zVUludDE2TnVtYmVyIENvbG9yYW50W2Ntc01BWENIQU5ORUxTXSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKworICAgIGlmIChOYW1lZENvbG9yTGlzdCA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoTmFtZWRDb2xvckxpc3QgLT5uQ29sb3JzICsgMSA+IE5hbWVkQ29sb3JMaXN0IC0+QWxsb2NhdGVkKSB7CisgICAgICAgIGlmICghR3Jvd05hbWVkQ29sb3JMaXN0KE5hbWVkQ29sb3JMaXN0KSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgTmFtZWRDb2xvckxpc3QgLT5Db2xvcmFudENvdW50OyBpKyspCisgICAgICAgIE5hbWVkQ29sb3JMaXN0IC0+TGlzdFtOYW1lZENvbG9yTGlzdCAtPm5Db2xvcnNdLkRldmljZUNvbG9yYW50W2ldID0gQ29sb3JhbnQgPT0gTlVMTD8gMCA6IENvbG9yYW50W2ldOworCisgICAgZm9yIChpPTA7IGkgPCAzOyBpKyspCisgICAgICAgIE5hbWVkQ29sb3JMaXN0IC0+TGlzdFtOYW1lZENvbG9yTGlzdCAtPm5Db2xvcnNdLlBDU1tpXSA9IFBDUyA9PSBOVUxMID8gMCA6IFBDU1tpXTsKKworICAgIGlmIChOYW1lICE9IE5VTEwpIHsKKworICAgICAgICBzdHJuY3B5KE5hbWVkQ29sb3JMaXN0IC0+TGlzdFtOYW1lZENvbG9yTGlzdCAtPm5Db2xvcnNdLk5hbWUsIE5hbWUsIGNtc01BWF9QQVRILTEpOworICAgICAgICBOYW1lZENvbG9yTGlzdCAtPkxpc3RbTmFtZWRDb2xvckxpc3QgLT5uQ29sb3JzXS5OYW1lW2Ntc01BWF9QQVRILTFdID0gMDsKKworICAgIH0KKyAgICBlbHNlCisgICAgICAgIE5hbWVkQ29sb3JMaXN0IC0+TGlzdFtOYW1lZENvbG9yTGlzdCAtPm5Db2xvcnNdLk5hbWVbMF0gPSAwOworCisKKyAgICBOYW1lZENvbG9yTGlzdCAtPm5Db2xvcnMrKzsKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gUmV0dXJucyBudW1iZXIgb2YgZWxlbWVudHMKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zTmFtZWRDb2xvckNvdW50KGNvbnN0IGNtc05BTUVEQ09MT1JMSVNUKiBOYW1lZENvbG9yTGlzdCkKK3sKKyAgICAgaWYgKE5hbWVkQ29sb3JMaXN0ID09IE5VTEwpIHJldHVybiAwOworICAgICByZXR1cm4gTmFtZWRDb2xvckxpc3QgLT5uQ29sb3JzOworfQorCisvLyBJbmZvIGFib291dCBhIGdpdmVuIGNvbG9yCitjbXNCb29sICBDTVNFWFBPUlQgY21zTmFtZWRDb2xvckluZm8oY29uc3QgY21zTkFNRURDT0xPUkxJU1QqIE5hbWVkQ29sb3JMaXN0LCBjbXNVSW50MzJOdW1iZXIgbkNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogUHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIFN1ZmZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MTZOdW1iZXIqIFBDUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MTZOdW1iZXIqIENvbG9yYW50KQoreworICAgIGlmIChOYW1lZENvbG9yTGlzdCA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAobkNvbG9yID49IGNtc05hbWVkQ29sb3JDb3VudChOYW1lZENvbG9yTGlzdCkpIHJldHVybiBGQUxTRTsKKworICAgIGlmIChOYW1lKSBzdHJjcHkoTmFtZSwgTmFtZWRDb2xvckxpc3QtPkxpc3RbbkNvbG9yXS5OYW1lKTsKKyAgICBpZiAoUHJlZml4KSBzdHJjcHkoUHJlZml4LCBOYW1lZENvbG9yTGlzdC0+UHJlZml4KTsKKyAgICBpZiAoU3VmZml4KSBzdHJjcHkoU3VmZml4LCBOYW1lZENvbG9yTGlzdC0+U3VmZml4KTsKKyAgICBpZiAoUENTKQorICAgICAgICBtZW1tb3ZlKFBDUywgTmFtZWRDb2xvckxpc3QgLT5MaXN0W25Db2xvcl0uUENTLCAzKnNpemVvZihjbXNVSW50MTZOdW1iZXIpKTsKKworICAgIGlmIChDb2xvcmFudCkKKyAgICAgICAgbWVtbW92ZShDb2xvcmFudCwgTmFtZWRDb2xvckxpc3QgLT5MaXN0W25Db2xvcl0uRGV2aWNlQ29sb3JhbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjbXNVSW50MTZOdW1iZXIpICogTmFtZWRDb2xvckxpc3QgLT5Db2xvcmFudENvdW50KTsKKworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIFNlYXJjaCBmb3IgYSBnaXZlbiBjb2xvciBuYW1lIChubyBwcmVmaXggb3Igc3VmZml4KQorY21zSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc05hbWVkQ29sb3JJbmRleChjb25zdCBjbXNOQU1FRENPTE9STElTVCogTmFtZWRDb2xvckxpc3QsIGNvbnN0IGNoYXIqIE5hbWUpCit7CisgICAgaW50IGksIG47CisKKyAgICBpZiAoTmFtZWRDb2xvckxpc3QgPT0gTlVMTCkgcmV0dXJuIC0xOworICAgIG4gPSBjbXNOYW1lZENvbG9yQ291bnQoTmFtZWRDb2xvckxpc3QpOworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGlmIChjbXNzdHJjYXNlY21wKE5hbWUsICBOYW1lZENvbG9yTGlzdC0+TGlzdFtpXS5OYW1lKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCisvLyBNUEUgc3VwcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMKK3ZvaWQgRnJlZU5hbWVkQ29sb3JMaXN0KGNtc1N0YWdlKiBtcGUpCit7CisgICAgY21zTkFNRURDT0xPUkxJU1QqIExpc3QgPSAoY21zTkFNRURDT0xPUkxJU1QqKSBtcGUgLT5EYXRhOworICAgIGNtc0ZyZWVOYW1lZENvbG9yTGlzdChMaXN0KTsKK30KKworc3RhdGljCit2b2lkKiBEdXBOYW1lZENvbG9yTGlzdChjbXNTdGFnZSogbXBlKQoreworICAgIGNtc05BTUVEQ09MT1JMSVNUKiBMaXN0ID0gKGNtc05BTUVEQ09MT1JMSVNUKikgbXBlIC0+RGF0YTsKKyAgICByZXR1cm4gY21zRHVwTmFtZWRDb2xvckxpc3QoTGlzdCk7Cit9CisKK3N0YXRpYwordm9pZCBFdmFsTmFtZWRDb2xvclBDUyhjb25zdCBjbXNGbG9hdDMyTnVtYmVyIEluW10sIGNtc0Zsb2F0MzJOdW1iZXIgT3V0W10sIGNvbnN0IGNtc1N0YWdlICptcGUpCit7CisgICAgY21zTkFNRURDT0xPUkxJU1QqIE5hbWVkQ29sb3JMaXN0ID0gKGNtc05BTUVEQ09MT1JMSVNUKikgbXBlIC0+RGF0YTsKKyAgICBjbXNVSW50MTZOdW1iZXIgaW5kZXggPSAoY21zVUludDE2TnVtYmVyKSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoSW5bMF0gKiA2NTUzNS4wKTsKKworICAgIGlmIChpbmRleCA+PSBOYW1lZENvbG9yTGlzdC0+IG5Db2xvcnMpIHsKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoTmFtZWRDb2xvckxpc3QgLT5Db250ZXh0SUQsIGNtc0VSUk9SX1JBTkdFLCAiQ29sb3IgJWQgb3V0IG9mIHJhbmdlOyBpZ25vcmVkIiwgaW5kZXgpOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICAgICAgLy8gTmFtZWQgY29sb3IgYWx3YXlzIHVzZXMgTGFiCisgICAgICAgICAgICBPdXRbMF0gPSAoY21zRmxvYXQzMk51bWJlcikgKE5hbWVkQ29sb3JMaXN0LT5MaXN0W2luZGV4XS5QQ1NbMF0gLyA2NTUzNS4wKTsKKyAgICAgICAgICAgIE91dFsxXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoTmFtZWRDb2xvckxpc3QtPkxpc3RbaW5kZXhdLlBDU1sxXSAvIDY1NTM1LjApOworICAgICAgICAgICAgT3V0WzJdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChOYW1lZENvbG9yTGlzdC0+TGlzdFtpbmRleF0uUENTWzJdIC8gNjU1MzUuMCk7CisgICAgfQorfQorCitzdGF0aWMKK3ZvaWQgRXZhbE5hbWVkQ29sb3IoY29uc3QgY21zRmxvYXQzMk51bWJlciBJbltdLCBjbXNGbG9hdDMyTnVtYmVyIE91dFtdLCBjb25zdCBjbXNTdGFnZSAqbXBlKQoreworICAgIGNtc05BTUVEQ09MT1JMSVNUKiBOYW1lZENvbG9yTGlzdCA9IChjbXNOQU1FRENPTE9STElTVCopIG1wZSAtPkRhdGE7CisgICAgY21zVUludDE2TnVtYmVyIGluZGV4ID0gKGNtc1VJbnQxNk51bWJlcikgX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKEluWzBdICogNjU1MzUuMCk7CisgICAgY21zVUludDMyTnVtYmVyIGo7CisKKyAgICBpZiAoaW5kZXggPj0gTmFtZWRDb2xvckxpc3QtPiBuQ29sb3JzKSB7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKE5hbWVkQ29sb3JMaXN0IC0+Q29udGV4dElELCBjbXNFUlJPUl9SQU5HRSwgIkNvbG9yICVkIG91dCBvZiByYW5nZTsgaWdub3JlZCIsIGluZGV4KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaj0wOyBqIDwgTmFtZWRDb2xvckxpc3QgLT5Db2xvcmFudENvdW50OyBqKyspCisgICAgICAgICAgICBPdXRbal0gPSAoY21zRmxvYXQzMk51bWJlcikgKE5hbWVkQ29sb3JMaXN0LT5MaXN0W2luZGV4XS5EZXZpY2VDb2xvcmFudFtqXSAvIDY1NTM1LjApOworICAgIH0KK30KKworCisvLyBOYW1lZCBjb2xvciBsb29rdXAgZWxlbWVudAorY21zU3RhZ2UqIF9jbXNTdGFnZUFsbG9jTmFtZWRDb2xvcihjbXNOQU1FRENPTE9STElTVCogTmFtZWRDb2xvckxpc3QsIGNtc0Jvb2wgVXNlUENTKQoreworICAgIHJldHVybiBfY21zU3RhZ2VBbGxvY1BsYWNlaG9sZGVyKE5hbWVkQ29sb3JMaXN0IC0+Q29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNTaWdOYW1lZENvbG9yRWxlbVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIFVzZVBDUyA/IDMgOiBOYW1lZENvbG9yTGlzdCAtPkNvbG9yYW50Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZVBDUyA/IEV2YWxOYW1lZENvbG9yUENTIDogRXZhbE5hbWVkQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1cE5hbWVkQ29sb3JMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlTmFtZWRDb2xvckxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0R1cE5hbWVkQ29sb3JMaXN0KE5hbWVkQ29sb3JMaXN0KSk7CisKK30KKworCisvLyBSZXRyaWV2ZSB0aGUgbmFtZWQgY29sb3IgbGlzdCBmcm9tIGEgdHJhbnNmb3JtLiBTaG91bGQgYmUgZmlyc3QgZWxlbWVudCBpbiB0aGUgTFVUCitjbXNOQU1FRENPTE9STElTVCogQ01TRVhQT1JUIGNtc0dldE5hbWVkQ29sb3JMaXN0KGNtc0hUUkFOU0ZPUk0geGZvcm0pCit7CisgICAgX2Ntc1RSQU5TRk9STSogdiA9IChfY21zVFJBTlNGT1JNKikgeGZvcm07CisgICAgY21zU3RhZ2UqIG1wZSAgPSB2IC0+THV0LT5FbGVtZW50czsKKworICAgIGlmIChtcGUgLT5UeXBlICE9IGNtc1NpZ05hbWVkQ29sb3JFbGVtVHlwZSkgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIChjbXNOQU1FRENPTE9STElTVCopIG1wZSAtPkRhdGE7Cit9CisKKworLy8gUHJvZmlsZSBzZXF1ZW5jZSBkZXNjcmlwdGlvbiByb3V0aW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Ntc1NFUSogQ01TRVhQT1JUIGNtc0FsbG9jUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgIGNtc1NFUSogU2VxOworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgaWYgKG4gPT0gMCkgcmV0dXJuIE5VTEw7CisKKyAgICAvLyBJbiBhIGFic29sdXRlbHkgYXJiaXRyYXJ5IHdheSwgSSBoZXJlYnkgZGVjaWRlIHRvIGFsbG93IGEgbWF4aW0gb2YgMjU1IHByb2ZpbGVzIGxpbmtlZAorICAgIC8vIGluIGEgZGV2aWNlbGluay4gSXQgbWFrZXMgbm90IHNlbnNlIGFueXdheSBhbmQgbWF5IGJlIHVzZWQgZm9yIGV4cGxvaXRzLCBzbyBsZXQncyBjbG9zZSB0aGUgZG9vciEKKyAgICBpZiAobiA+IDI1NSkgcmV0dXJuIE5VTEw7CisKKyAgICBTZXEgPSAoY21zU0VRKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoY21zU0VRKSk7CisgICAgaWYgKFNlcSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIFNlcSAtPiBDb250ZXh0SUQgPSBDb250ZXh0SUQ7CisgICAgU2VxIC0+IHNlcSAgICAgID0gKGNtc1BTRVFERVNDKikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIG4sIHNpemVvZihjbXNQU0VRREVTQykpOworICAgIFNlcSAtPiBuICAgICAgICA9IG47CisKKyAgICBpZiAoU2VxIC0+IHNlcSA9PSBOVUxMKSB7CisgICAgICAgIF9jbXNGcmVlKENvbnRleHRJRCwgU2VxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgU2VxIC0+IHNlcVtpXS5NYW51ZmFjdHVyZXIgPSBOVUxMOworICAgICAgICBTZXEgLT4gc2VxW2ldLk1vZGVsICAgICAgICA9IE5VTEw7CisgICAgICAgIFNlcSAtPiBzZXFbaV0uRGVzY3JpcHRpb24gID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gU2VxOworfQorCit2b2lkIENNU0VYUE9SVCBjbXNGcmVlUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oY21zU0VRKiBwc2VxKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgZm9yIChpPTA7IGkgPCBwc2VxIC0+bjsgaSsrKSB7CisgICAgICAgIGlmIChwc2VxIC0+c2VxW2ldLk1hbnVmYWN0dXJlciAhPSBOVUxMKSBjbXNNTFVmcmVlKHBzZXEgLT5zZXFbaV0uTWFudWZhY3R1cmVyKTsKKyAgICAgICAgaWYgKHBzZXEgLT5zZXFbaV0uTW9kZWwgIT0gTlVMTCkgY21zTUxVZnJlZShwc2VxIC0+c2VxW2ldLk1vZGVsKTsKKyAgICAgICAgaWYgKHBzZXEgLT5zZXFbaV0uRGVzY3JpcHRpb24gIT0gTlVMTCkgY21zTUxVZnJlZShwc2VxIC0+c2VxW2ldLkRlc2NyaXB0aW9uKTsKKyAgICB9CisKKyAgICBpZiAocHNlcSAtPnNlcSAhPSBOVUxMKSBfY21zRnJlZShwc2VxIC0+Q29udGV4dElELCBwc2VxIC0+c2VxKTsKKyAgICBfY21zRnJlZShwc2VxIC0+IENvbnRleHRJRCwgcHNlcSk7Cit9CisKK2Ntc1NFUSogQ01TRVhQT1JUIGNtc0R1cFByb2ZpbGVTZXF1ZW5jZURlc2NyaXB0aW9uKGNvbnN0IGNtc1NFUSogcHNlcSkKK3sKKyAgICBjbXNTRVEgKk5ld1NlcTsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKworICAgIGlmIChwc2VxID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgTmV3U2VxID0gKGNtc1NFUSopIF9jbXNNYWxsb2MocHNlcSAtPiBDb250ZXh0SUQsIHNpemVvZihjbXNTRVEpKTsKKyAgICBpZiAoTmV3U2VxID09IE5VTEwpIHJldHVybiBOVUxMOworCisKKyAgICBOZXdTZXEgLT4gc2VxICAgICAgPSAoY21zUFNFUURFU0MqKSBfY21zQ2FsbG9jKHBzZXEgLT5Db250ZXh0SUQsIHBzZXEgLT5uLCBzaXplb2YoY21zUFNFUURFU0MpKTsKKyAgICBpZiAoTmV3U2VxIC0+c2VxID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICBOZXdTZXEgLT4gQ29udGV4dElEID0gcHNlcSAtPkNvbnRleHRJRDsKKyAgICBOZXdTZXEgLT4gbiAgICAgICAgPSBwc2VxIC0+bjsKKworICAgIGZvciAoaT0wOyBpIDwgcHNlcS0+bjsgaSsrKSB7CisKKyAgICAgICAgbWVtbW92ZSgmTmV3U2VxIC0+c2VxW2ldLmF0dHJpYnV0ZXMsICZwc2VxIC0+c2VxW2ldLmF0dHJpYnV0ZXMsIHNpemVvZihjbXNVSW50NjROdW1iZXIpKTsKKworICAgICAgICBOZXdTZXEgLT5zZXFbaV0uZGV2aWNlTWZnICAgPSBwc2VxIC0+c2VxW2ldLmRldmljZU1mZzsKKyAgICAgICAgTmV3U2VxIC0+c2VxW2ldLmRldmljZU1vZGVsID0gcHNlcSAtPnNlcVtpXS5kZXZpY2VNb2RlbDsKKyAgICAgICAgbWVtbW92ZSgmTmV3U2VxIC0+c2VxW2ldLlByb2ZpbGVJRCwgJnBzZXEgLT5zZXFbaV0uUHJvZmlsZUlELCBzaXplb2YoY21zUHJvZmlsZUlEKSk7CisgICAgICAgIE5ld1NlcSAtPnNlcVtpXS50ZWNobm9sb2d5ICA9IHBzZXEgLT5zZXFbaV0udGVjaG5vbG9neTsKKworICAgICAgICBOZXdTZXEgLT5zZXFbaV0uTWFudWZhY3R1cmVyID0gY21zTUxVZHVwKHBzZXEgLT5zZXFbaV0uTWFudWZhY3R1cmVyKTsKKyAgICAgICAgTmV3U2VxIC0+c2VxW2ldLk1vZGVsICAgICAgICA9IGNtc01MVWR1cChwc2VxIC0+c2VxW2ldLk1vZGVsKTsKKyAgICAgICAgTmV3U2VxIC0+c2VxW2ldLkRlc2NyaXB0aW9uICA9IGNtc01MVWR1cChwc2VxIC0+c2VxW2ldLkRlc2NyaXB0aW9uKTsKKworICAgIH0KKworICAgIHJldHVybiBOZXdTZXE7CisKK0Vycm9yOgorCisgICAgY21zRnJlZVByb2ZpbGVTZXF1ZW5jZURlc2NyaXB0aW9uKE5ld1NlcSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vIERpY3Rpb25hcmllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBEaWN0aW9uYXJpZXMgYXJlIGp1c3QgdmVyeSBzaW1wbGUgbGlua2VkIGxpc3RzCisKKwordHlwZWRlZiBzdHJ1Y3QgX2Ntc0RJQ1Rfc3RydWN0IHsKKyAgICBjbXNESUNUZW50cnkqIGhlYWQ7CisgICAgY21zQ29udGV4dCBDb250ZXh0SUQ7Cit9IF9jbXNESUNUOworCisKKy8vIEFsbG9jYXRlIGFuIGVtcHR5IGRpY3Rpb25hcnkKK2Ntc0hBTkRMRSBDTVNFWFBPUlQgY21zRGljdEFsbG9jKGNtc0NvbnRleHQgQ29udGV4dElEKQoreworICAgIF9jbXNESUNUKiBkaWN0ID0gKF9jbXNESUNUKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoX2Ntc0RJQ1QpKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGRpY3QgLT5Db250ZXh0SUQgPSBDb250ZXh0SUQ7CisgICAgcmV0dXJuIChjbXNIQU5ETEUpIGRpY3Q7CisKK30KKworLy8gRGlzcG9zZSByZXNvdXJjZXMKK3ZvaWQgQ01TRVhQT1JUIGNtc0RpY3RGcmVlKGNtc0hBTkRMRSBoRGljdCkKK3sKKyAgICBfY21zRElDVCogZGljdCA9IChfY21zRElDVCopIGhEaWN0OworICAgIGNtc0RJQ1RlbnRyeSAqZW50cnksICpuZXh0OworCisgICAgX2Ntc0Fzc2VydChkaWN0ICE9IE5VTEwpOworCisgICAgLy8gV2FsayB0aGUgbGlzdCBmcmVlaW5nIGFsbCBub2RlcworICAgIGVudHJ5ID0gZGljdCAtPmhlYWQ7CisgICAgd2hpbGUgKGVudHJ5ICE9IE5VTEwpIHsKKworICAgICAgICAgICAgaWYgKGVudHJ5IC0+RGlzcGxheU5hbWUgICE9IE5VTEwpIGNtc01MVWZyZWUoZW50cnkgLT5EaXNwbGF5TmFtZSk7CisgICAgICAgICAgICBpZiAoZW50cnkgLT5EaXNwbGF5VmFsdWUgIT0gTlVMTCkgY21zTUxVZnJlZShlbnRyeSAtPkRpc3BsYXlWYWx1ZSk7CisgICAgICAgICAgICBpZiAoZW50cnkgLT5OYW1lICE9IE5VTEwpIF9jbXNGcmVlKGRpY3QgLT5Db250ZXh0SUQsIGVudHJ5IC0+IE5hbWUpOworICAgICAgICAgICAgaWYgKGVudHJ5IC0+VmFsdWUgIT0gTlVMTCkgX2Ntc0ZyZWUoZGljdCAtPkNvbnRleHRJRCwgZW50cnkgLT4gVmFsdWUpOworCisgICAgICAgICAgICAvLyBEb24ndCBmYWxsIGluIHRoZSBoYWJpdHVhbCB0cmFwLi4uCisgICAgICAgICAgICBuZXh0ID0gZW50cnkgLT5OZXh0OworICAgICAgICAgICAgX2Ntc0ZyZWUoZGljdCAtPkNvbnRleHRJRCwgZW50cnkpOworCisgICAgICAgICAgICBlbnRyeSA9IG5leHQ7CisgICAgfQorCisgICAgX2Ntc0ZyZWUoZGljdCAtPkNvbnRleHRJRCwgZGljdCk7Cit9CisKKworLy8gRHVwbGljYXRlIGEgd2lkZSBjaGFyIHN0cmluZworc3RhdGljCit3Y2hhcl90KiBEdXBXY3MoY21zQ29udGV4dCBDb250ZXh0SUQsIGNvbnN0IHdjaGFyX3QqIHB0cikKK3sKKyAgICBpZiAocHRyID09IE5VTEwpIHJldHVybiBOVUxMOworICAgIHJldHVybiAod2NoYXJfdCopIF9jbXNEdXBNZW0oQ29udGV4dElELCBwdHIsIChteXdjc2xlbihwdHIpICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworfQorCisvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIGxpbmtlZCBsaXN0CitjbXNCb29sIENNU0VYUE9SVCBjbXNEaWN0QWRkRW50cnkoY21zSEFORExFIGhEaWN0LCBjb25zdCB3Y2hhcl90KiBOYW1lLCBjb25zdCB3Y2hhcl90KiBWYWx1ZSwgY29uc3QgY21zTUxVICpEaXNwbGF5TmFtZSwgY29uc3QgY21zTUxVICpEaXNwbGF5VmFsdWUpCit7CisgICAgX2Ntc0RJQ1QqIGRpY3QgPSAoX2Ntc0RJQ1QqKSBoRGljdDsKKyAgICBjbXNESUNUZW50cnkgKmVudHJ5OworCisgICAgX2Ntc0Fzc2VydChkaWN0ICE9IE5VTEwpOworICAgIF9jbXNBc3NlcnQoTmFtZSAhPSBOVUxMKTsKKworICAgIGVudHJ5ID0gKGNtc0RJQ1RlbnRyeSopIF9jbXNNYWxsb2NaZXJvKGRpY3QgLT5Db250ZXh0SUQsIHNpemVvZihjbXNESUNUZW50cnkpKTsKKyAgICBpZiAoZW50cnkgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgZW50cnkgLT5EaXNwbGF5TmFtZSAgPSBjbXNNTFVkdXAoRGlzcGxheU5hbWUpOworICAgIGVudHJ5IC0+RGlzcGxheVZhbHVlID0gY21zTUxVZHVwKERpc3BsYXlWYWx1ZSk7CisgICAgZW50cnkgLT5OYW1lICAgICAgICAgPSBEdXBXY3MoZGljdCAtPkNvbnRleHRJRCwgTmFtZSk7CisgICAgZW50cnkgLT5WYWx1ZSAgICAgICAgPSBEdXBXY3MoZGljdCAtPkNvbnRleHRJRCwgVmFsdWUpOworCisgICAgZW50cnkgLT5OZXh0ID0gZGljdCAtPmhlYWQ7CisgICAgZGljdCAtPmhlYWQgPSBlbnRyeTsKKworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIER1cGxpY2F0ZXMgYW4gZXhpc3RpbmcgZGljdGlvbmFyeQorY21zSEFORExFIENNU0VYUE9SVCBjbXNEaWN0RHVwKGNtc0hBTkRMRSBoRGljdCkKK3sKKyAgICBfY21zRElDVCogb2xkX2RpY3QgPSAoX2Ntc0RJQ1QqKSBoRGljdDsKKyAgICBjbXNIQU5ETEUgaE5ldzsKKyAgICBjbXNESUNUZW50cnkgKmVudHJ5OworCisgICAgX2Ntc0Fzc2VydChvbGRfZGljdCAhPSBOVUxMKTsKKworICAgIGhOZXcgID0gY21zRGljdEFsbG9jKG9sZF9kaWN0IC0+Q29udGV4dElEKTsKKyAgICBpZiAoaE5ldyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIC8vIFdhbGsgdGhlIGxpc3QgZnJlZWluZyBhbGwgbm9kZXMKKyAgICBlbnRyeSA9IG9sZF9kaWN0IC0+aGVhZDsKKyAgICB3aGlsZSAoZW50cnkgIT0gTlVMTCkgeworCisgICAgICAgIGlmICghY21zRGljdEFkZEVudHJ5KGhOZXcsIGVudHJ5IC0+TmFtZSwgZW50cnkgLT5WYWx1ZSwgZW50cnkgLT5EaXNwbGF5TmFtZSwgZW50cnkgLT5EaXNwbGF5VmFsdWUpKSB7CisKKyAgICAgICAgICAgIGNtc0RpY3RGcmVlKGhOZXcpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBlbnRyeSA9IGVudHJ5IC0+IE5leHQ7CisgICAgfQorCisgICAgcmV0dXJuIGhOZXc7Cit9CisKKy8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGxpbmtlZCBsaXN0Citjb25zdCBjbXNESUNUZW50cnkqIENNU0VYUE9SVCBjbXNEaWN0R2V0RW50cnlMaXN0KGNtc0hBTkRMRSBoRGljdCkKK3sKKyAgICBfY21zRElDVCogZGljdCA9IChfY21zRElDVCopIGhEaWN0OworCisgICAgaWYgKGRpY3QgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGRpY3QgLT5oZWFkOworfQorCisvLyBIZWxwZXIgRm9yIGV4dGVybmFsIGxhbmd1YWdlcworY29uc3QgY21zRElDVGVudHJ5KiBDTVNFWFBPUlQgY21zRGljdE5leHRFbnRyeShjb25zdCBjbXNESUNUZW50cnkqIGUpCit7CisgICAgIGlmIChlID09IE5VTEwpIHJldHVybiBOVUxMOworICAgICByZXR1cm4gZSAtPk5leHQ7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zb3B0LmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zb3B0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg4NWVmMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNvcHQuYwpAQCAtMCwwICsxLDE3OTUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gIExpdHRsZSBDb2xvciBNYW5hZ2VtZW50IFN5c3RlbQorLy8gIENvcHlyaWdodCAoYykgMTk5OC0yMDExIE1hcnRpIE1hcmlhIFNhZ3VlcgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworLy8gYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisvLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUKKy8vIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPCisvLyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorLy8gTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorLy8gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisvLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKworI2luY2x1ZGUgImxjbXMyX2ludGVybmFsLmgiCisKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIE9wdGltaXphdGlvbiBmb3IgOCBiaXRzLCBTaGFwZXItQ0xVVCAoMyBpbnB1dHMgb25seSkKK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc0NvbnRleHQgQ29udGV4dElEOworCisgICAgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBwOyAgIC8vIFRldHJhaGVkcmljYWwgaW50ZXJwb2xhdGlvbiBwYXJhbWV0ZXJzLiBUaGlzIGlzIGEgbm90LW93bmVkIHBvaW50ZXIuCisKKyAgICBjbXNVSW50MTZOdW1iZXIgcnhbMjU2XSwgcnlbMjU2XSwgcnpbMjU2XTsKKyAgICBjbXNVSW50MzJOdW1iZXIgWDBbMjU2XSwgWTBbMjU2XSwgWjBbMjU2XTsgIC8vIFByZWNvbXB1dGVkIG5vZGVzIGFuZCBvZmZzZXRzIGZvciA4LWJpdCBpbnB1dCBkYXRhCisKKworfSBQcmVsaW44RGF0YTsKKworCisvLyBHZW5lcmljIG9wdGltaXphdGlvbiBmb3IgMTYgYml0cyBTaGFwZXItQ0xVVC1TaGFwZXIgKGFueSBpbnB1dHMpCit0eXBlZGVmIHN0cnVjdCB7CisKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRDsKKworICAgIC8vIE51bWJlciBvZiBjaGFubmVscworICAgIGludCBuSW5wdXRzOworICAgIGludCBuT3V0cHV0czsKKworICAgIF9jbXNJbnRlcnBGbjE2IEV2YWxDdXJ2ZUluMTZbTUFYX0lOUFVUX0RJTUVOU0lPTlNdOyAgICAgICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5wdXQgY2hhbm5lbHMgaXMga25vd24gaW4gYWR2YW5jZQorICAgIGNtc0ludGVycFBhcmFtcyogIFBhcmFtc0N1cnZlSW4xNltNQVhfSU5QVVRfRElNRU5TSU9OU107CisKKyAgICBfY21zSW50ZXJwRm4xNiBFdmFsQ0xVVDsgICAgICAgICAgICAvLyBUaGUgZXZhbHVhdG9yIGZvciAzRCBncmlkCisgICAgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBDTFVUcGFyYW1zOyAgLy8gKG5vdC1vd25lZCBwb2ludGVyKQorCisKKyAgICBfY21zSW50ZXJwRm4xNiogRXZhbEN1cnZlT3V0MTY7ICAgICAgIC8vIFBvaW50cyB0byBhbiBhcnJheSBvZiBjdXJ2ZSBldmFsdWF0b3JzIGluIDE2IGJpdHMgKG5vdC1vd25lZCBwb2ludGVyKQorICAgIGNtc0ludGVycFBhcmFtcyoqICBQYXJhbXNDdXJ2ZU91dDE2OyAgLy8gUG9pbnRzIHRvIGFuIGFycmF5IG9mIHJlZmVyZW5jZXMgdG8gaW50ZXJwb2xhdGlvbiBwYXJhbXMgKG5vdC1vd25lZCBwb2ludGVyKQorCisKK30gUHJlbGluMTZEYXRhOworCisKKy8vIE9wdGltaXphdGlvbiBmb3IgbWF0cml4LXNoYXBlciBpbiA4IGJpdHMuIE51bWJlcnMgYXJlIG9wZXJhdGVkIGluIG4uMTQgc2lnbmVkLCB0YWJsZXMgYXJlIHN0b3JlZCBpbiAxLjE0IGZpeGVkCisKK3R5cGVkZWYgY21zSW50MzJOdW1iZXIgY21zUzFGaXhlZDE0TnVtYmVyOyAgIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBob2xkIG1vcmUgdGhhbiAxNiBiaXRzIQorCisjZGVmaW5lIERPVUJMRV9UT18xRklYRUQxNCh4KSAoKGNtc1MxRml4ZWQxNE51bWJlcikgZmxvb3IoKHgpICogMTYzODQuMCArIDAuNSkpCisKK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc0NvbnRleHQgQ29udGV4dElEOworCisgICAgY21zUzFGaXhlZDE0TnVtYmVyIFNoYXBlcjFSWzI1Nl07ICAvLyBmcm9tIDAuLjI1NSB0byAxLjE0ICAoMC4wLi4uMS4wKQorICAgIGNtc1MxRml4ZWQxNE51bWJlciBTaGFwZXIxR1syNTZdOworICAgIGNtc1MxRml4ZWQxNE51bWJlciBTaGFwZXIxQlsyNTZdOworCisgICAgY21zUzFGaXhlZDE0TnVtYmVyIE1hdFszXVszXTsgICAgIC8vIG4uMTQgdG8gbi4xNCAobmVlZHMgYSBzYXR1cmF0aW9uIGFmdGVyIHRoYXQpCisgICAgY21zUzFGaXhlZDE0TnVtYmVyIE9mZlszXTsKKworICAgIGNtc1VJbnQxNk51bWJlciBTaGFwZXIyUlsxNjM4NV07ICAgIC8vIDEuMTQgdG8gMC4uMjU1CisgICAgY21zVUludDE2TnVtYmVyIFNoYXBlcjJHWzE2Mzg1XTsKKyAgICBjbXNVSW50MTZOdW1iZXIgU2hhcGVyMkJbMTYzODVdOworCit9IE1hdFNoYXBlcjhEYXRhOworCisvLyBDdXJ2ZXMsIG9wdGltaXphdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiA4IGFuZCAxNiBiaXRzCit0eXBlZGVmIHN0cnVjdCB7CisKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRDsKKworICAgIGludCBuQ3VydmVzOyAgICAgICAgICAgICAgICAgIC8vIE51bWJlciBvZiBjdXJ2ZXMKKyAgICBpbnQgbkVsZW1lbnRzOyAgICAgICAgICAgICAgICAvLyBFbGVtZW50cyBpbiBjdXJ2ZXMKKyAgICBjbXNVSW50MTZOdW1iZXIqKiBDdXJ2ZXM7ICAgICAvLyBQb2ludHMgdG8gYSBkeW5hbWljYWxseSAgYWxsb2NhdGVkIGFycmF5CisKK30gQ3VydmVzMTZEYXRhOworCisKKy8vIFNpbXBsZSBvcHRpbWl6YXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisvLyBSZW1vdmUgYW4gZWxlbWVudCBpbiBsaW5rZWQgY2hhaW4KK3N0YXRpYwordm9pZCBfUmVtb3ZlRWxlbWVudChjbXNTdGFnZSoqIGhlYWQpCit7CisgICAgY21zU3RhZ2UqIG1wZSA9ICpoZWFkOworICAgIGNtc1N0YWdlKiBuZXh0ID0gbXBlIC0+TmV4dDsKKyAgICAqaGVhZCA9IG5leHQ7CisgICAgY21zU3RhZ2VGcmVlKG1wZSk7Cit9CisKKy8vIFJlbW92ZSBhbGwgaWRlbnRpdGllcyBpbiBjaGFpbi4gTm90ZSB0aGF0IHB0IGFjdHVhbGx5IGlzIGEgZG91YmxlIHBvaW50ZXIgdG8gdGhlIGVsZW1lbnQgdGhhdCBob2xkcyB0aGUgcG9pbnRlci4KK3N0YXRpYworY21zQm9vbCBfUmVtb3ZlMU9wKGNtc1BpcGVsaW5lKiBMdXQsIGNtc1N0YWdlU2lnbmF0dXJlIFVuYXJ5T3ApCit7CisgICAgY21zU3RhZ2UqKiBwdCA9ICZMdXQgLT5FbGVtZW50czsKKyAgICBjbXNCb29sIEFueU9wdCA9IEZBTFNFOworCisgICAgd2hpbGUgKCpwdCAhPSBOVUxMKSB7CisKKyAgICAgICAgaWYgKCgqcHQpIC0+SW1wbGVtZW50cyA9PSBVbmFyeU9wKSB7CisgICAgICAgICAgICBfUmVtb3ZlRWxlbWVudChwdCk7CisgICAgICAgICAgICBBbnlPcHQgPSBUUlVFOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHB0ID0gJigoKnB0KSAtPiBOZXh0KTsKKyAgICB9CisKKyAgICByZXR1cm4gQW55T3B0OworfQorCisvLyBTYW1lLCBidXQgb25seSBpZiB0d28gYWRqYWNlbnQgZWxlbWVudHMgYXJlIGZvdW5kCitzdGF0aWMKK2Ntc0Jvb2wgX1JlbW92ZTJPcChjbXNQaXBlbGluZSogTHV0LCBjbXNTdGFnZVNpZ25hdHVyZSBPcDEsIGNtc1N0YWdlU2lnbmF0dXJlIE9wMikKK3sKKyAgICBjbXNTdGFnZSoqIHB0MTsKKyAgICBjbXNTdGFnZSoqIHB0MjsKKyAgICBjbXNCb29sIEFueU9wdCA9IEZBTFNFOworCisgICAgcHQxID0gJkx1dCAtPkVsZW1lbnRzOworICAgIGlmICgqcHQxID09IE5VTEwpIHJldHVybiBBbnlPcHQ7CisKKyAgICB3aGlsZSAoKnB0MSAhPSBOVUxMKSB7CisKKyAgICAgICAgcHQyID0gJigoKnB0MSkgLT4gTmV4dCk7CisgICAgICAgIGlmICgqcHQyID09IE5VTEwpIHJldHVybiBBbnlPcHQ7CisKKyAgICAgICAgaWYgKCgqcHQxKSAtPkltcGxlbWVudHMgPT0gT3AxICYmICgqcHQyKSAtPkltcGxlbWVudHMgPT0gT3AyKSB7CisgICAgICAgICAgICBfUmVtb3ZlRWxlbWVudChwdDIpOworICAgICAgICAgICAgX1JlbW92ZUVsZW1lbnQocHQxKTsKKyAgICAgICAgICAgIEFueU9wdCA9IFRSVUU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHQxID0gJigoKnB0MSkgLT4gTmV4dCk7CisgICAgfQorCisgICAgcmV0dXJuIEFueU9wdDsKK30KKworLy8gUHJlb3B0aW1pemUganVzdCBnZXRzIHJpZiBvZiBuby1vcHMgY29taW5nIHBhaXJlZC4gQ29udmVyc2lvbiBmcm9tIHYyIHRvIHY0IGZvbGxvd2VkCisvLyBieSBhIHY0IHRvIHYyIGFuZCB2aWNlLXZlcnNhLiBUaGUgZWxlbWVudHMgYXJlIHRoZW4gZGlzY2FyZGVkLgorc3RhdGljCitjbXNCb29sIFByZU9wdGltaXplKGNtc1BpcGVsaW5lKiBMdXQpCit7CisgICAgY21zQm9vbCBBbnlPcHQgPSBGQUxTRSwgT3B0OworCisgICAgZG8geworCisgICAgICAgIE9wdCA9IEZBTFNFOworCisgICAgICAgIC8vIFJlbW92ZSBhbGwgaWRlbnRpdGllcworICAgICAgICBPcHQgfD0gX1JlbW92ZTFPcChMdXQsIGNtc1NpZ0lkZW50aXR5RWxlbVR5cGUpOworCisgICAgICAgIC8vIFJlbW92ZSBYWVoyTGFiIGZvbGxvd2VkIGJ5IExhYjJYWVoKKyAgICAgICAgT3B0IHw9IF9SZW1vdmUyT3AoTHV0LCBjbXNTaWdYWVoyTGFiRWxlbVR5cGUsIGNtc1NpZ0xhYjJYWVpFbGVtVHlwZSk7CisKKyAgICAgICAgLy8gUmVtb3ZlIExhYjJYWVogZm9sbG93ZWQgYnkgWFlaMkxhYgorICAgICAgICBPcHQgfD0gX1JlbW92ZTJPcChMdXQsIGNtc1NpZ0xhYjJYWVpFbGVtVHlwZSwgY21zU2lnWFlaMkxhYkVsZW1UeXBlKTsKKworICAgICAgICAvLyBSZW1vdmUgVjQgdG8gVjIgZm9sbG93ZWQgYnkgVjIgdG8gVjQKKyAgICAgICAgT3B0IHw9IF9SZW1vdmUyT3AoTHV0LCBjbXNTaWdMYWJWNHRvVjIsIGNtc1NpZ0xhYlYydG9WNCk7CisKKyAgICAgICAgLy8gUmVtb3ZlIFYyIHRvIFY0IGZvbGxvd2VkIGJ5IFY0IHRvIFYyCisgICAgICAgIE9wdCB8PSBfUmVtb3ZlMk9wKEx1dCwgY21zU2lnTGFiVjJ0b1Y0LCBjbXNTaWdMYWJWNHRvVjIpOworCisgICAgICAgIC8vIFJlbW92ZSBmbG9hdCBwY3MgTGFiIGNvbnZlcnNpb25zCisgICAgICAgIE9wdCB8PSBfUmVtb3ZlMk9wKEx1dCwgY21zU2lnTGFiMkZsb2F0UENTLCBjbXNTaWdGbG9hdFBDUzJMYWIpOworCisgICAgICAgIC8vIFJlbW92ZSBmbG9hdCBwY3MgTGFiIGNvbnZlcnNpb25zCisgICAgICAgIE9wdCB8PSBfUmVtb3ZlMk9wKEx1dCwgY21zU2lnWFlaMkZsb2F0UENTLCBjbXNTaWdGbG9hdFBDUzJYWVopOworCisgICAgICAgIGlmIChPcHQpIEFueU9wdCA9IFRSVUU7CisKKyAgICB9IHdoaWxlIChPcHQpOworCisgICAgcmV0dXJuIEFueU9wdDsKK30KKworc3RhdGljCit2b2lkIEV2YWwxNm5vcDFEKHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbnB1dFtdLAorICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IHN0cnVjdCBfY21zX2ludGVycF9zdHJ1YyogcCkKK3sKKyAgICBPdXRwdXRbMF0gPSBJbnB1dFswXTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIocCk7Cit9CisKK3N0YXRpYwordm9pZCBQcmVsaW5FdmFsMTYocmVnaXN0ZXIgY29uc3QgY21zVUludDE2TnVtYmVyIElucHV0W10sCisgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0cHV0W10sCisgICAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCB2b2lkKiBEKQoreworICAgIFByZWxpbjE2RGF0YSogcDE2ID0gKFByZWxpbjE2RGF0YSopIEQ7CisgICAgY21zVUludDE2TnVtYmVyICBTdGFnZUFCQ1tNQVhfSU5QVVRfRElNRU5TSU9OU107CisgICAgY21zVUludDE2TnVtYmVyICBTdGFnZURFRltjbXNNQVhDSEFOTkVMU107CisgICAgaW50IGk7CisKKyAgICBmb3IgKGk9MDsgaSA8IHAxNiAtPm5JbnB1dHM7IGkrKykgeworCisgICAgICAgIHAxNiAtPkV2YWxDdXJ2ZUluMTZbaV0oJklucHV0W2ldLCAmU3RhZ2VBQkNbaV0sIHAxNiAtPlBhcmFtc0N1cnZlSW4xNltpXSk7CisgICAgfQorCisgICAgcDE2IC0+RXZhbENMVVQoU3RhZ2VBQkMsIFN0YWdlREVGLCBwMTYgLT5DTFVUcGFyYW1zKTsKKworICAgIGZvciAoaT0wOyBpIDwgcDE2IC0+bk91dHB1dHM7IGkrKykgeworCisgICAgICAgIHAxNiAtPkV2YWxDdXJ2ZU91dDE2W2ldKCZTdGFnZURFRltpXSwgJk91dHB1dFtpXSwgcDE2IC0+UGFyYW1zQ3VydmVPdXQxNltpXSk7CisgICAgfQorfQorCisKK3N0YXRpYwordm9pZCBQcmVsaW5PcHQxNmZyZWUoY21zQ29udGV4dCBDb250ZXh0SUQsIHZvaWQqIHB0cikKK3sKKyAgICBQcmVsaW4xNkRhdGEqIHAxNiA9IChQcmVsaW4xNkRhdGEqKSBwdHI7CisKKyAgICBfY21zRnJlZShDb250ZXh0SUQsIHAxNiAtPkV2YWxDdXJ2ZU91dDE2KTsKKyAgICBfY21zRnJlZShDb250ZXh0SUQsIHAxNiAtPlBhcmFtc0N1cnZlT3V0MTYpOworCisgICAgX2Ntc0ZyZWUoQ29udGV4dElELCBwMTYpOworfQorCitzdGF0aWMKK3ZvaWQqIFByZWxpbjE2ZHVwKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCB2b2lkKiBwdHIpCit7CisgICAgUHJlbGluMTZEYXRhKiBwMTYgPSAoUHJlbGluMTZEYXRhKikgcHRyOworICAgIFByZWxpbjE2RGF0YSogRHVwZWQgPSBfY21zRHVwTWVtKENvbnRleHRJRCwgcDE2LCBzaXplb2YoUHJlbGluMTZEYXRhKSk7CisKKyAgICBpZiAoRHVwZWQgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBEdXBlZCAtPkV2YWxDdXJ2ZU91dDE2ICAgPSAoX2Ntc0ludGVycEZuMTYqKV9jbXNEdXBNZW0oQ29udGV4dElELCBwMTYgLT5FdmFsQ3VydmVPdXQxNiwgcDE2IC0+bk91dHB1dHMgKiBzaXplb2YoX2Ntc0ludGVycEZuMTYpKTsKKyAgICBEdXBlZCAtPlBhcmFtc0N1cnZlT3V0MTYgPSAoY21zSW50ZXJwUGFyYW1zKiopX2Ntc0R1cE1lbShDb250ZXh0SUQsIHAxNiAtPlBhcmFtc0N1cnZlT3V0MTYsIHAxNiAtPm5PdXRwdXRzICogc2l6ZW9mKGNtc0ludGVycFBhcmFtcyogKSk7CisKKyAgICByZXR1cm4gRHVwZWQ7Cit9CisKKworc3RhdGljCitQcmVsaW4xNkRhdGEqIFByZWxpbk9wdDE2YWxsb2MoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSW50ZXJwUGFyYW1zKiBDb2xvck1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbklucHV0cywgY21zVG9uZUN1cnZlKiogSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5PdXRwdXRzLCBjbXNUb25lQ3VydmUqKiBPdXQgKQoreworICAgIGludCBpOworICAgIFByZWxpbjE2RGF0YSogcDE2ID0gX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoUHJlbGluMTZEYXRhKSk7CisgICAgaWYgKHAxNiA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIHAxNiAtPm5JbnB1dHMgPSBuSW5wdXRzOworICAgIHAxNiAtPiBuT3V0cHV0cyA9IG5PdXRwdXRzOworCisKKyAgICBmb3IgKGk9MDsgaSA8IG5JbnB1dHM7IGkrKykgeworCisgICAgICAgIGlmIChJbiA9PSBOVUxMKSB7CisgICAgICAgICAgICBwMTYgLT4gUGFyYW1zQ3VydmVJbjE2W2ldID0gTlVMTDsKKyAgICAgICAgICAgIHAxNiAtPiBFdmFsQ3VydmVJbjE2W2ldID0gRXZhbDE2bm9wMUQ7CisKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHAxNiAtPiBQYXJhbXNDdXJ2ZUluMTZbaV0gPSBJbltpXSAtPkludGVycFBhcmFtczsKKyAgICAgICAgICAgIHAxNiAtPiBFdmFsQ3VydmVJbjE2W2ldID0gcDE2IC0+UGFyYW1zQ3VydmVJbjE2W2ldLT5JbnRlcnBvbGF0aW9uLkxlcnAxNjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHAxNiAtPkNMVVRwYXJhbXMgPSBDb2xvck1hcDsKKyAgICBwMTYgLT5FdmFsQ0xVVCAgID0gQ29sb3JNYXAgLT5JbnRlcnBvbGF0aW9uLkxlcnAxNjsKKworCisgICAgcDE2IC0+IEV2YWxDdXJ2ZU91dDE2ID0gKF9jbXNJbnRlcnBGbjE2KikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIG5PdXRwdXRzLCBzaXplb2YoX2Ntc0ludGVycEZuMTYpKTsKKyAgICBwMTYgLT4gUGFyYW1zQ3VydmVPdXQxNiA9IChjbXNJbnRlcnBQYXJhbXMqKikgX2Ntc0NhbGxvYyhDb250ZXh0SUQsIG5PdXRwdXRzLCBzaXplb2YoY21zSW50ZXJwUGFyYW1zKiApKTsKKworICAgIGZvciAoaT0wOyBpIDwgbk91dHB1dHM7IGkrKykgeworCisgICAgICAgIGlmIChPdXQgPT0gTlVMTCkgeworICAgICAgICAgICAgcDE2IC0+UGFyYW1zQ3VydmVPdXQxNltpXSA9IE5VTEw7CisgICAgICAgICAgICBwMTYgLT4gRXZhbEN1cnZlT3V0MTZbaV0gPSBFdmFsMTZub3AxRDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgcDE2IC0+UGFyYW1zQ3VydmVPdXQxNltpXSA9IE91dFtpXSAtPkludGVycFBhcmFtczsKKyAgICAgICAgICAgIHAxNiAtPiBFdmFsQ3VydmVPdXQxNltpXSA9IHAxNiAtPlBhcmFtc0N1cnZlT3V0MTZbaV0tPkludGVycG9sYXRpb24uTGVycDE2OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHAxNjsKK30KKworCisKKy8vIFJlc2FtcGxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgUFJFTElORUFSSVpBVElPTl9QT0lOVFMgNDA5NgorCisvLyBTYW1wbGVyIGltcGxlbWVudGVkIGJ5IGFub3RoZXIgTFVULiBUaGlzIGlzIGEgY2xlYW4gd2F5IHRvIHByZWNhbGN1bGF0ZSB0aGUgZGV2aWNlbGluayAzRCBDTFVUIGZvcgorLy8gYWxtb3N0IGFueSB0cmFuc2Zvcm0uIFdlIHVzZSBmbG9hdGluZyBwb2ludCBwcmVjaXNpb24gYW5kIHRoZW4gY29udmVydCBmcm9tIGZsb2F0aW5nIHBvaW50IHRvIDE2IGJpdHMuCitzdGF0aWMKK2ludCBYRm9ybVNhbXBsZXIxNihyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5bXSwgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIE91dFtdLCByZWdpc3RlciB2b2lkKiBDYXJnbykKK3sKKyAgICBjbXNQaXBlbGluZSogTHV0ID0gKGNtc1BpcGVsaW5lKikgQ2FyZ287CisgICAgY21zRmxvYXQzMk51bWJlciBJbkZsb2F0W2Ntc01BWENIQU5ORUxTXSwgT3V0RmxvYXRbY21zTUFYQ0hBTk5FTFNdOworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgX2Ntc0Fzc2VydChMdXQgLT4gSW5wdXRDaGFubmVscyA8IGNtc01BWENIQU5ORUxTKTsKKyAgICBfY21zQXNzZXJ0KEx1dCAtPiBPdXRwdXRDaGFubmVscyA8IGNtc01BWENIQU5ORUxTKTsKKworICAgIC8vIEZyb20gMTYgYml0IHRvIGZsb2F0aW5nIHBvaW50CisgICAgZm9yIChpPTA7IGkgPCBMdXQgLT5JbnB1dENoYW5uZWxzOyBpKyspCisgICAgICAgIEluRmxvYXRbaV0gPSAoY21zRmxvYXQzMk51bWJlcikgKEluW2ldIC8gNjU1MzUuMCk7CisKKyAgICAvLyBFdmFsdWF0ZSBpbiBmbG9hdGluZyBwb2ludAorICAgIGNtc1BpcGVsaW5lRXZhbEZsb2F0KEluRmxvYXQsIE91dEZsb2F0LCBMdXQpOworCisgICAgLy8gQmFjayB0byAxNiBiaXRzIHJlcHJlc2VudGF0aW9uCisgICAgZm9yIChpPTA7IGkgPCBMdXQgLT5PdXRwdXRDaGFubmVsczsgaSsrKQorICAgICAgICBPdXRbaV0gPSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoT3V0RmxvYXRbaV0gKiA2NTUzNS4wKTsKKworICAgIC8vIEFsd2F5cyBzdWNjZWVkCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIFRyeSB0byBzZWUgaWYgdGhlIGN1cnZlcyBvZiBhIGdpdmVuIE1QRSBhcmUgbGluZWFyCitzdGF0aWMKK2Ntc0Jvb2wgQWxsQ3VydmVzQXJlTGluZWFyKGNtc1N0YWdlKiBtcGUpCit7CisgICAgY21zVG9uZUN1cnZlKiogQ3VydmVzOworICAgIGNtc1VJbnQzMk51bWJlciBpLCBuOworCisgICAgQ3VydmVzID0gX2Ntc1N0YWdlR2V0UHRyVG9DdXJ2ZVNldChtcGUpOworICAgIGlmIChDdXJ2ZXMgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgbiA9IGNtc1N0YWdlT3V0cHV0Q2hhbm5lbHMobXBlKTsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGlmICghY21zSXNUb25lQ3VydmVMaW5lYXIoQ3VydmVzW2ldKSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIHJlcGxhY2VzIGEgc3BlY2lmaWMgbm9kZSBwbGFjZWQgaW4gIkF0IiBieSB0aGUgIlZhbHVlIiBudW1iZXJzLiBJdHMgcHVycG9zZQorLy8gaXMgdG8gZml4IHNjdW0gZG90IG9uIGJyb2tlbiBwcm9maWxlcy90cmFuc2Zvcm1zLiBXb3JrcyBvbiAxLCAzIGFuZCA0IGNoYW5uZWxzCitzdGF0aWMKK2Ntc0Jvb2wgIFBhdGNoTFVUKGNtc1N0YWdlKiBDTFVULCBjbXNVSW50MTZOdW1iZXIgQXRbXSwgY21zVUludDE2TnVtYmVyIFZhbHVlW10sCisgICAgICAgICAgICAgICAgICBpbnQgbkNoYW5uZWxzT3V0LCBpbnQgbkNoYW5uZWxzSW4pCit7CisgICAgX2Ntc1N0YWdlQ0x1dERhdGEqIEdyaWQgPSAoX2Ntc1N0YWdlQ0x1dERhdGEqKSBDTFVUIC0+RGF0YTsKKyAgICBjbXNJbnRlcnBQYXJhbXMqIHAxNiAgPSBHcmlkIC0+UGFyYW1zOworICAgIGNtc0Zsb2F0NjROdW1iZXIgcHgsIHB5LCBweiwgcHc7CisgICAgaW50ICAgICAgICB4MCwgeTAsIHowLCB3MDsKKyAgICBpbnQgICAgICAgIGksIGluZGV4OworCisgICAgaWYgKENMVVQgLT4gVHlwZSAhPSBjbXNTaWdDTHV0RWxlbVR5cGUpIHsKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoQ0xVVC0+Q29udGV4dElELCBjbXNFUlJPUl9JTlRFUk5BTCwgIihpbnRlcm5hbCkgQXR0ZW1wdCB0byBQYXRjaExVVCBvbiBub24tbHV0IHN0YWdlIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKwlpZiAobkNoYW5uZWxzSW4gIT0gMSAmJiBuQ2hhbm5lbHNJbiAhPSAzICYmIG5DaGFubmVsc0luICE9IDQpIHsKKwkJY21zU2lnbmFsRXJyb3IoQ0xVVC0+Q29udGV4dElELCBjbXNFUlJPUl9JTlRFUk5BTCwgIihpbnRlcm5hbCkgJWQgQ2hhbm5lbHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gUGF0Y2hMVVQiLCBuQ2hhbm5lbHNJbik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKwl9CisgICAgaWYgKG5DaGFubmVsc0luID09IDQpIHsKKworICAgICAgICBweCA9ICgoY21zRmxvYXQ2NE51bWJlcikgQXRbMF0gKiAocDE2LT5Eb21haW5bMF0pKSAvIDY1NTM1LjA7CisgICAgICAgIHB5ID0gKChjbXNGbG9hdDY0TnVtYmVyKSBBdFsxXSAqIChwMTYtPkRvbWFpblsxXSkpIC8gNjU1MzUuMDsKKyAgICAgICAgcHogPSAoKGNtc0Zsb2F0NjROdW1iZXIpIEF0WzJdICogKHAxNi0+RG9tYWluWzJdKSkgLyA2NTUzNS4wOworICAgICAgICBwdyA9ICgoY21zRmxvYXQ2NE51bWJlcikgQXRbM10gKiAocDE2LT5Eb21haW5bM10pKSAvIDY1NTM1LjA7CisKKyAgICAgICAgeDAgPSAoaW50KSBmbG9vcihweCk7CisgICAgICAgIHkwID0gKGludCkgZmxvb3IocHkpOworICAgICAgICB6MCA9IChpbnQpIGZsb29yKHB6KTsKKyAgICAgICAgdzAgPSAoaW50KSBmbG9vcihwdyk7CisKKyAgICAgICAgaWYgKCgocHggLSB4MCkgIT0gMCkgfHwKKyAgICAgICAgICAgICgocHkgLSB5MCkgIT0gMCkgfHwKKyAgICAgICAgICAgICgocHogLSB6MCkgIT0gMCkgfHwKKyAgICAgICAgICAgICgocHcgLSB3MCkgIT0gMCkpIHJldHVybiBGQUxTRTsgLy8gTm90IG9uIGV4YWN0IG5vZGUKKworICAgICAgICBpbmRleCA9IHAxNiAtPiBvcHRhWzNdICogeDAgKworICAgICAgICAgICAgICAgIHAxNiAtPiBvcHRhWzJdICogeTAgKworICAgICAgICAgICAgICAgIHAxNiAtPiBvcHRhWzFdICogejAgKworICAgICAgICAgICAgICAgIHAxNiAtPiBvcHRhWzBdICogdzA7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgaWYgKG5DaGFubmVsc0luID09IDMpIHsKKworICAgICAgICAgICAgcHggPSAoKGNtc0Zsb2F0NjROdW1iZXIpIEF0WzBdICogKHAxNi0+RG9tYWluWzBdKSkgLyA2NTUzNS4wOworICAgICAgICAgICAgcHkgPSAoKGNtc0Zsb2F0NjROdW1iZXIpIEF0WzFdICogKHAxNi0+RG9tYWluWzFdKSkgLyA2NTUzNS4wOworICAgICAgICAgICAgcHogPSAoKGNtc0Zsb2F0NjROdW1iZXIpIEF0WzJdICogKHAxNi0+RG9tYWluWzJdKSkgLyA2NTUzNS4wOworICAgICAgICAgICAKKyAgICAgICAgICAgIHgwID0gKGludCkgZmxvb3IocHgpOworICAgICAgICAgICAgeTAgPSAoaW50KSBmbG9vcihweSk7CisgICAgICAgICAgICB6MCA9IChpbnQpIGZsb29yKHB6KTsKKyAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoKChweCAtIHgwKSAhPSAwKSB8fAorICAgICAgICAgICAgICAgICgocHkgLSB5MCkgIT0gMCkgfHwKKyAgICAgICAgICAgICAgICAoKHB6IC0gejApICE9IDApKSByZXR1cm4gRkFMU0U7ICAvLyBOb3Qgb24gZXhhY3Qgbm9kZQorCisgICAgICAgICAgICBpbmRleCA9IHAxNiAtPiBvcHRhWzJdICogeDAgKworICAgICAgICAgICAgICAgICAgICBwMTYgLT4gb3B0YVsxXSAqIHkwICsKKyAgICAgICAgICAgICAgICAgICAgcDE2IC0+IG9wdGFbMF0gKiB6MDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAobkNoYW5uZWxzSW4gPT0gMSkgeworCisgICAgICAgICAgICAgICAgcHggPSAoKGNtc0Zsb2F0NjROdW1iZXIpIEF0WzBdICogKHAxNi0+RG9tYWluWzBdKSkgLyA2NTUzNS4wOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHgwID0gKGludCkgZmxvb3IocHgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgoKHB4IC0geDApICE9IDApKSByZXR1cm4gRkFMU0U7IC8vIE5vdCBvbiBleGFjdCBub2RlCisKKyAgICAgICAgICAgICAgICBpbmRleCA9IHAxNiAtPiBvcHRhWzBdICogeDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihDTFVULT5Db250ZXh0SUQsIGNtc0VSUk9SX0lOVEVSTkFMLCAiKGludGVybmFsKSAlZCBDaGFubmVscyBhcmUgbm90IHN1cHBvcnRlZCBvbiBQYXRjaExVVCIsIG5DaGFubmVsc0luKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgbkNoYW5uZWxzT3V0OyBpKyspCisgICAgICAgICAgICAgICAgR3JpZCAtPiBUYWIuVFtpbmRleCArIGldID0gVmFsdWVbaV07CisKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworfQorCisvLyBBdXhpbGlhciwgdG8gc2VlIGlmIHR3byB2YWx1ZXMgYXJlIGVxdWFsIG9yIHZlcnkgZGlmZmVyZW50CitzdGF0aWMKK2Ntc0Jvb2wgV2hpdGVzQXJlRXF1YWwoaW50IG4sIGNtc1VJbnQxNk51bWJlciBXaGl0ZTFbXSwgY21zVUludDE2TnVtYmVyIFdoaXRlMltdICkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisKKyAgICAgICAgaWYgKGFicyhXaGl0ZTFbaV0gLSBXaGl0ZTJbaV0pID4gMHhmMDAwKSByZXR1cm4gVFJVRTsgIC8vIFZhbHVlcyBhcmUgc28gZXh0cmVtbHkgZGlmZmVyZW50IHRoYXQgdGhlIGZpeHVwIHNob3VsZCBiZSBhdm9pZGVkCisgICAgICAgIGlmIChXaGl0ZTFbaV0gIT0gV2hpdGUyW2ldKSByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIExvY2F0ZSB0aGUgbm9kZSBmb3IgdGhlIHdoaXRlIHBvaW50IGFuZCBmaXggaXQgdG8gcHVyZSB3aGl0ZSBpbiBvcmRlciB0byBhdm9pZCBzY3VtIGRvdC4KK3N0YXRpYworY21zQm9vbCBGaXhXaGl0ZU1pc2FsaWdubWVudChjbXNQaXBlbGluZSogTHV0LCBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIEVudHJ5Q29sb3JTcGFjZSwgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBFeGl0Q29sb3JTcGFjZSkKK3sKKyAgICBjbXNVSW50MTZOdW1iZXIgKldoaXRlUG9pbnRJbiwgKldoaXRlUG9pbnRPdXQ7CisgICAgY21zVUludDE2TnVtYmVyICBXaGl0ZUluW2Ntc01BWENIQU5ORUxTXSwgV2hpdGVPdXRbY21zTUFYQ0hBTk5FTFNdLCBPYnRhaW5lZE91dFtjbXNNQVhDSEFOTkVMU107CisgICAgY21zVUludDMyTnVtYmVyIGksIG5PdXRzLCBuSW5zOworICAgIGNtc1N0YWdlICpQcmVMaW4gPSBOVUxMLCAqQ0xVVCA9IE5VTEwsICpQb3N0TGluID0gTlVMTDsKKworICAgIGlmICghX2Ntc0VuZFBvaW50c0J5U3BhY2UoRW50cnlDb2xvclNwYWNlLAorICAgICAgICAmV2hpdGVQb2ludEluLCBOVUxMLCAmbklucykpIHJldHVybiBGQUxTRTsKKworICAgIGlmICghX2Ntc0VuZFBvaW50c0J5U3BhY2UoRXhpdENvbG9yU3BhY2UsCisgICAgICAgICZXaGl0ZVBvaW50T3V0LCBOVUxMLCAmbk91dHMpKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBJdCBuZWVkcyB0byBiZSBmaXhlZD8KKyAgICBpZiAoTHV0IC0+SW5wdXRDaGFubmVscyAhPSBuSW5zKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKEx1dCAtPk91dHB1dENoYW5uZWxzICE9IG5PdXRzKSByZXR1cm4gRkFMU0U7CisKKyAgICBjbXNQaXBlbGluZUV2YWwxNihXaGl0ZVBvaW50SW4sIE9idGFpbmVkT3V0LCBMdXQpOworCisgICAgaWYgKFdoaXRlc0FyZUVxdWFsKG5PdXRzLCBXaGl0ZVBvaW50T3V0LCBPYnRhaW5lZE91dCkpIHJldHVybiBUUlVFOyAvLyB3aGl0ZXMgYWxyZWFkeSBtYXRjaAorCisgICAgLy8gQ2hlY2sgaWYgdGhlIExVVCBjb21lcyBhcyBQcmVsaW4sIENMVVQgb3IgUG9zdGxpbi4gV2UgYWxsb3cgYWxsIGNvbWJpbmF0aW9ucworICAgIGlmICghY21zUGlwZWxpbmVDaGVja0FuZFJldHJlaXZlU3RhZ2VzKEx1dCwgMywgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgY21zU2lnQ0x1dEVsZW1UeXBlLCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCAmUHJlTGluLCAmQ0xVVCwgJlBvc3RMaW4pKQorICAgICAgICBpZiAoIWNtc1BpcGVsaW5lQ2hlY2tBbmRSZXRyZWl2ZVN0YWdlcyhMdXQsIDIsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsIGNtc1NpZ0NMdXRFbGVtVHlwZSwgJlByZUxpbiwgJkNMVVQpKQorICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUNoZWNrQW5kUmV0cmVpdmVTdGFnZXMoTHV0LCAyLCBjbXNTaWdDTHV0RWxlbVR5cGUsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsICZDTFVULCAmUG9zdExpbikpCisgICAgICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUNoZWNrQW5kUmV0cmVpdmVTdGFnZXMoTHV0LCAxLCBjbXNTaWdDTHV0RWxlbVR5cGUsICZDTFVUKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgLy8gV2UgbmVlZCB0byBpbnRlcnBvbGF0ZSB3aGl0ZSBwb2ludHMgb2YgYm90aCwgcHJlIGFuZCBwb3N0IGN1cnZlcworICAgIGlmIChQcmVMaW4pIHsKKworICAgICAgICBjbXNUb25lQ3VydmUqKiBDdXJ2ZXMgPSBfY21zU3RhZ2VHZXRQdHJUb0N1cnZlU2V0KFByZUxpbik7CisKKyAgICAgICAgZm9yIChpPTA7IGkgPCBuSW5zOyBpKyspIHsKKyAgICAgICAgICAgIFdoaXRlSW5baV0gPSBjbXNFdmFsVG9uZUN1cnZlMTYoQ3VydmVzW2ldLCBXaGl0ZVBvaW50SW5baV0pOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGk9MDsgaSA8IG5JbnM7IGkrKykKKyAgICAgICAgICAgIFdoaXRlSW5baV0gPSBXaGl0ZVBvaW50SW5baV07CisgICAgfQorCisgICAgLy8gSWYgYW55IHBvc3QtbGluZWFyaXphdGlvbiwgd2UgbmVlZCB0byBmaW5kIGhvdyBpcyByZXByZXNlbnRlZCB3aGl0ZSBiZWZvcmUgdGhlIGN1cnZlLCBkbworICAgIC8vIGEgcmV2ZXJzZSBpbnRlcnBvbGF0aW9uIGluIHRoaXMgY2FzZS4KKyAgICBpZiAoUG9zdExpbikgeworCisgICAgICAgIGNtc1RvbmVDdXJ2ZSoqIEN1cnZlcyA9IF9jbXNTdGFnZUdldFB0clRvQ3VydmVTZXQoUG9zdExpbik7CisKKyAgICAgICAgZm9yIChpPTA7IGkgPCBuT3V0czsgaSsrKSB7CisKKyAgICAgICAgICAgIGNtc1RvbmVDdXJ2ZSogSW52ZXJzZVBvc3RMaW4gPSBjbXNSZXZlcnNlVG9uZUN1cnZlKEN1cnZlc1tpXSk7CisgICAgICAgICAgICBpZiAoSW52ZXJzZVBvc3RMaW4gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFdoaXRlT3V0W2ldID0gV2hpdGVQb2ludE91dFtpXTsgICAgCisKKyAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgICAgICBXaGl0ZU91dFtpXSA9IGNtc0V2YWxUb25lQ3VydmUxNihJbnZlcnNlUG9zdExpbiwgV2hpdGVQb2ludE91dFtpXSk7CisgICAgICAgICAgICAgICAgY21zRnJlZVRvbmVDdXJ2ZShJbnZlcnNlUG9zdExpbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaT0wOyBpIDwgbk91dHM7IGkrKykKKyAgICAgICAgICAgIFdoaXRlT3V0W2ldID0gV2hpdGVQb2ludE91dFtpXTsKKyAgICB9CisKKyAgICAvLyBPaywgcHJvY2VlZCB3aXRoIHBhdGNoaW5nLiBNYXkgZmFpbCBhbmQgd2UgZG9uJ3QgY2FyZSBpZiBpdCBmYWlscworICAgIFBhdGNoTFVUKENMVVQsIFdoaXRlSW4sIFdoaXRlT3V0LCBuT3V0cywgbklucyk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBzaW1wbGUgTFVUIGZyb20gY29tcGxleCBvbmVzLiBUaGUgZ2VuZXJhdGVkIExVVCBoYXMgYW4gb3B0aW9uYWwgc2V0IG9mCisvLyBwcmVsaW5lYXJpemF0aW9uIGN1cnZlcywgYSBDTFVUIG9mIG5HcmlkUG9pbnRzIGFuZCBvcHRpb25hbCBwb3N0bGluZWFyaXphdGlvbiB0YWJsZXMuCisvLyBUaGVzZSBjdXJ2ZXMgaGF2ZSB0byBleGlzdCBpbiB0aGUgb3JpZ2luYWwgTFVUIGluIG9yZGVyIHRvIGJlIHVzZWQgaW4gdGhlIHNpbXBsaWZpZWQgb3V0cHV0LgorLy8gQ2FsbGVyIG1heSBhbHNvIHVzZSB0aGUgZmxhZ3MgdG8gYWxsb3cgdGhpcyBmZWF0dXJlLgorLy8gTFVUUyB3aXRoIGFsbCBjdXJ2ZXMgd2lsbCBiZSBzaW1wbGlmaWVkIHRvIGEgc2luZ2xlIGN1cnZlLiBQYXJhbWV0cmljIGN1cnZlcyBhcmUgbG9zdC4KKy8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgb24gMTYtYml0cyBMVVRTIG9ubHksIGFzIGZsb2F0aW5nIHBvaW50IGxvc3NlcyBwcmVjaXNpb24gd2hlbiBzaW1wbGlmaWVkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMKK2Ntc0Jvb2wgT3B0aW1pemVCeVJlc2FtcGxpbmcoY21zUGlwZWxpbmUqKiBMdXQsIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciogSW5wdXRGb3JtYXQsIGNtc1VJbnQzMk51bWJlciogT3V0cHV0Rm9ybWF0LCBjbXNVSW50MzJOdW1iZXIqIGR3RmxhZ3MpCit7CisgICAgY21zUGlwZWxpbmUqIFNyYyA9IE5VTEw7CisgICAgY21zUGlwZWxpbmUqIERlc3QgPSBOVUxMOworICAgIGNtc1N0YWdlKiBtcGU7CisgICAgY21zU3RhZ2UqIENMVVQ7CisgICAgY21zU3RhZ2UgKktlZXBQcmVMaW4gPSBOVUxMLCAqS2VlcFBvc3RMaW4gPSBOVUxMOworICAgIGludCBuR3JpZFBvaW50czsKKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENvbG9yU3BhY2UsIE91dHB1dENvbG9yU3BhY2U7CisgICAgY21zU3RhZ2UgKk5ld1ByZUxpbiA9IE5VTEw7CisgICAgY21zU3RhZ2UgKk5ld1Bvc3RMaW4gPSBOVUxMOworICAgIF9jbXNTdGFnZUNMdXREYXRhKiBEYXRhQ0xVVDsKKyAgICBjbXNUb25lQ3VydmUqKiBEYXRhU2V0SW47CisgICAgY21zVG9uZUN1cnZlKiogRGF0YVNldE91dDsKKyAgICBQcmVsaW4xNkRhdGEqIHAxNjsKKworICAgIC8vIFRoaXMgaXMgYSBsb29zeSBvcHRpbWl6YXRpb24hIGRvZXMgbm90IGFwcGx5IGluIGZsb2F0aW5nLXBvaW50IGNhc2VzCisgICAgaWYgKF9jbXNGb3JtYXR0ZXJJc0Zsb2F0KCpJbnB1dEZvcm1hdCkgfHwgX2Ntc0Zvcm1hdHRlcklzRmxvYXQoKk91dHB1dEZvcm1hdCkpIHJldHVybiBGQUxTRTsKKworICAgIENvbG9yU3BhY2UgICAgICAgPSBfY21zSUNDY29sb3JTcGFjZShUX0NPTE9SU1BBQ0UoKklucHV0Rm9ybWF0KSk7CisgICAgT3V0cHV0Q29sb3JTcGFjZSA9IF9jbXNJQ0Njb2xvclNwYWNlKFRfQ09MT1JTUEFDRSgqT3V0cHV0Rm9ybWF0KSk7CisgICAgbkdyaWRQb2ludHMgICAgICA9IF9jbXNSZWFzb25hYmxlR3JpZHBvaW50c0J5Q29sb3JzcGFjZShDb2xvclNwYWNlLCAqZHdGbGFncyk7CisKKyAgICAvLyBGb3IgZW1wdHkgTFVUcywgMiBwb2ludHMgYXJlIGVub3VnaAorICAgIGlmIChjbXNQaXBlbGluZVN0YWdlQ291bnQoKkx1dCkgPT0gMCkKKyAgICAgICAgbkdyaWRQb2ludHMgPSAyOworCisgICAgU3JjID0gKkx1dDsKKworICAgIC8vIE5hbWVkIGNvbG9yIHBpcGVsaW5lcyBjYW5ub3QgYmUgb3B0aW1pemVkIGVpdGhlcgorICAgIGZvciAobXBlID0gY21zUGlwZWxpbmVHZXRQdHJUb0ZpcnN0U3RhZ2UoU3JjKTsKKyAgICAgICAgbXBlICE9IE5VTEw7CisgICAgICAgIG1wZSA9IGNtc1N0YWdlTmV4dChtcGUpKSB7CisgICAgICAgICAgICBpZiAoY21zU3RhZ2VUeXBlKG1wZSkgPT0gY21zU2lnTmFtZWRDb2xvckVsZW1UeXBlKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8gQWxsb2NhdGUgYW4gZW1wdHkgTFVUCisgICAgRGVzdCA9ICBjbXNQaXBlbGluZUFsbG9jKFNyYyAtPkNvbnRleHRJRCwgU3JjIC0+SW5wdXRDaGFubmVscywgU3JjIC0+T3V0cHV0Q2hhbm5lbHMpOworICAgIGlmICghRGVzdCkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gUHJlbGluZWFyaXphdGlvbiB0YWJsZXMgYXJlIGtlcHQgdW5sZXNzIGluZGljYXRlZCBieSBmbGFncworICAgIGlmICgqZHdGbGFncyAmIGNtc0ZMQUdTX0NMVVRfUFJFX0xJTkVBUklaQVRJT04pIHsKKworICAgICAgICAvLyBHZXQgYSBwb2ludGVyIHRvIHRoZSBwcmVsaW5lYXJpemF0aW9uIGVsZW1lbnQKKyAgICAgICAgY21zU3RhZ2UqIFByZUxpbiA9IGNtc1BpcGVsaW5lR2V0UHRyVG9GaXJzdFN0YWdlKFNyYyk7CisKKyAgICAgICAgLy8gQ2hlY2sgaWYgc3VpdGFibGUKKyAgICAgICAgaWYgKFByZUxpbiAtPlR5cGUgPT0gY21zU2lnQ3VydmVTZXRFbGVtVHlwZSkgeworCisgICAgICAgICAgICAvLyBNYXliZSB0aGlzIGlzIGEgbGluZWFyIHRyYW0sIHNvIHdlIGNhbiBhdm9pZCB0aGUgd2hvbGUgc3R1ZmYKKyAgICAgICAgICAgIGlmICghQWxsQ3VydmVzQXJlTGluZWFyKFByZUxpbikpIHsKKworICAgICAgICAgICAgICAgIC8vIEFsbCBzZWVtcyBvaywgcHJvY2VlZC4KKyAgICAgICAgICAgICAgICBOZXdQcmVMaW4gPSBjbXNTdGFnZUR1cChQcmVMaW4pOworICAgICAgICAgICAgICAgIGlmKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKERlc3QsIGNtc0FUX0JFR0lOLCBOZXdQcmVMaW4pKQorICAgICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHByZWxpbmVhcml6YXRpb24uIFNpbmNlIHdlIGhhdmUgZHVwbGljYXRlZCB0aGUgY3VydmUKKyAgICAgICAgICAgICAgICAvLyBpbiBkZXN0aW5hdGlvbiBMVVQsIHRoZSBzYW1wbGluZyBzaG91ZCBiZSBhcHBsaWVkIGFmdGVyIHRoaXMgc3RhZ2UuCisgICAgICAgICAgICAgICAgY21zUGlwZWxpbmVVbmxpbmtTdGFnZShTcmMsIGNtc0FUX0JFR0lOLCAmS2VlcFByZUxpbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBbGxvY2F0ZSB0aGUgQ0xVVAorICAgIENMVVQgPSBjbXNTdGFnZUFsbG9jQ0x1dDE2Yml0KFNyYyAtPkNvbnRleHRJRCwgbkdyaWRQb2ludHMsIFNyYyAtPklucHV0Q2hhbm5lbHMsIFNyYy0+T3V0cHV0Q2hhbm5lbHMsIE5VTEwpOworICAgIGlmIChDTFVUID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIC8vIEFkZCB0aGUgQ0xVVCB0byB0aGUgZGVzdGluYXRpb24gTFVUCisgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKERlc3QsIGNtc0FUX0VORCwgQ0xVVCkpIHsKKyAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAvLyBQb3N0bGluZWFyaXphdGlvbiB0YWJsZXMgYXJlIGtlcHQgdW5sZXNzIGluZGljYXRlZCBieSBmbGFncworICAgIGlmICgqZHdGbGFncyAmIGNtc0ZMQUdTX0NMVVRfUE9TVF9MSU5FQVJJWkFUSU9OKSB7CisKKyAgICAgICAgLy8gR2V0IGEgcG9pbnRlciB0byB0aGUgcG9zdGxpbmVhcml6YXRpb24gaWYgcHJlc2VudAorICAgICAgICBjbXNTdGFnZSogUG9zdExpbiA9IGNtc1BpcGVsaW5lR2V0UHRyVG9MYXN0U3RhZ2UoU3JjKTsKKworICAgICAgICAvLyBDaGVjayBpZiBzdWl0YWJsZQorICAgICAgICBpZiAoY21zU3RhZ2VUeXBlKFBvc3RMaW4pID09IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUpIHsKKworICAgICAgICAgICAgLy8gTWF5YmUgdGhpcyBpcyBhIGxpbmVhciB0cmFtLCBzbyB3ZSBjYW4gYXZvaWQgdGhlIHdob2xlIHN0dWZmCisgICAgICAgICAgICBpZiAoIUFsbEN1cnZlc0FyZUxpbmVhcihQb3N0TGluKSkgeworCisgICAgICAgICAgICAgICAgLy8gQWxsIHNlZW1zIG9rLCBwcm9jZWVkLgorICAgICAgICAgICAgICAgIE5ld1Bvc3RMaW4gPSBjbXNTdGFnZUR1cChQb3N0TGluKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoRGVzdCwgY21zQVRfRU5ELCBOZXdQb3N0TGluKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKworICAgICAgICAgICAgICAgIC8vIEluIGRlc3RpbmF0aW9uIExVVCwgdGhlIHNhbXBsaW5nIHNob3VkIGJlIGFwcGxpZWQgYWZ0ZXIgdGhpcyBzdGFnZS4KKyAgICAgICAgICAgICAgICBjbXNQaXBlbGluZVVubGlua1N0YWdlKFNyYywgY21zQVRfRU5ELCAmS2VlcFBvc3RMaW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IGl0cyB0aW1lIHRvIGRvIHRoZSBzYW1wbGluZy4gV2UgaGF2ZSB0byBpZ25vcmUgcHJlL3Bvc3QgbGluZWFyaXphdGlvbgorICAgIC8vIFRoZSBzb3VyY2UgTFVUIHdoaXRob3V0IHByZS9wb3N0IGN1cnZlcyBpcyBwYXNzZWQgYXMgcGFyYW1ldGVyLgorICAgIGlmICghY21zU3RhZ2VTYW1wbGVDTHV0MTZiaXQoQ0xVVCwgWEZvcm1TYW1wbGVyMTYsICh2b2lkKikgU3JjLCAwKSkgeworRXJyb3I6CisgICAgICAgIC8vIE9wcywgc29tZXRoaW5nIHdlbnQgd3JvbmcsIFJlc3RvcmUgc3RhZ2VzCisgICAgICAgIGlmIChLZWVwUHJlTGluICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShTcmMsIGNtc0FUX0JFR0lOLCBLZWVwUHJlTGluKSkgeworICAgICAgICAgICAgICAgIF9jbXNBc3NlcnQoMCk7IC8vIFRoaXMgbmV2ZXIgaGFwcGVucworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChLZWVwUG9zdExpbiAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoU3JjLCBjbXNBVF9FTkQsICAgS2VlcFBvc3RMaW4pKSB7CisgICAgICAgICAgICAgICAgX2Ntc0Fzc2VydCgwKTsgLy8gVGhpcyBuZXZlciBoYXBwZW5zCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY21zUGlwZWxpbmVGcmVlKERlc3QpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8gRG9uZS4KKworICAgIGlmIChLZWVwUHJlTGluICE9IE5VTEwpIGNtc1N0YWdlRnJlZShLZWVwUHJlTGluKTsKKyAgICBpZiAoS2VlcFBvc3RMaW4gIT0gTlVMTCkgY21zU3RhZ2VGcmVlKEtlZXBQb3N0TGluKTsKKyAgICBjbXNQaXBlbGluZUZyZWUoU3JjKTsKKworICAgIERhdGFDTFVUID0gKF9jbXNTdGFnZUNMdXREYXRhKikgQ0xVVCAtPkRhdGE7CisKKyAgICBpZiAoTmV3UHJlTGluID09IE5VTEwpIERhdGFTZXRJbiA9IE5VTEw7CisgICAgZWxzZSBEYXRhU2V0SW4gPSAoKF9jbXNTdGFnZVRvbmVDdXJ2ZXNEYXRhKikgTmV3UHJlTGluIC0+RGF0YSkgLT5UaGVDdXJ2ZXM7CisKKyAgICBpZiAoTmV3UG9zdExpbiA9PSBOVUxMKSBEYXRhU2V0T3V0ID0gTlVMTDsKKyAgICBlbHNlICBEYXRhU2V0T3V0ID0gKChfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSopIE5ld1Bvc3RMaW4gLT5EYXRhKSAtPlRoZUN1cnZlczsKKworCisgICAgaWYgKERhdGFTZXRJbiA9PSBOVUxMICYmIERhdGFTZXRPdXQgPT0gTlVMTCkgeworCisgICAgICAgIF9jbXNQaXBlbGluZVNldE9wdGltaXphdGlvblBhcmFtZXRlcnMoRGVzdCwgKF9jbXNPUFRldmFsMTZGbikgRGF0YUNMVVQtPlBhcmFtcy0+SW50ZXJwb2xhdGlvbi5MZXJwMTYsIERhdGFDTFVULT5QYXJhbXMsIE5VTEwsIE5VTEwpOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICBwMTYgPSBQcmVsaW5PcHQxNmFsbG9jKERlc3QgLT5Db250ZXh0SUQsCisgICAgICAgICAgICBEYXRhQ0xVVCAtPlBhcmFtcywKKyAgICAgICAgICAgIERlc3QgLT5JbnB1dENoYW5uZWxzLAorICAgICAgICAgICAgRGF0YVNldEluLAorICAgICAgICAgICAgRGVzdCAtPk91dHB1dENoYW5uZWxzLAorICAgICAgICAgICAgRGF0YVNldE91dCk7CisKKyAgICAgICAgX2Ntc1BpcGVsaW5lU2V0T3B0aW1pemF0aW9uUGFyYW1ldGVycyhEZXN0LCBQcmVsaW5FdmFsMTYsICh2b2lkKikgcDE2LCBQcmVsaW5PcHQxNmZyZWUsIFByZWxpbjE2ZHVwKTsKKyAgICB9CisKKworICAgIC8vIERvbid0IGZpeCB3aGl0ZSBvbiBhYnNvbHV0ZSBjb2xvcmltZXRyaWMKKyAgICBpZiAoSW50ZW50ID09IElOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUMpCisgICAgICAgICpkd0ZsYWdzIHw9IGNtc0ZMQUdTX05PV0hJVEVPTldISVRFRklYVVA7CisKKyAgICBpZiAoISgqZHdGbGFncyAmIGNtc0ZMQUdTX05PV0hJVEVPTldISVRFRklYVVApKSB7CisKKyAgICAgICAgRml4V2hpdGVNaXNhbGlnbm1lbnQoRGVzdCwgQ29sb3JTcGFjZSwgT3V0cHV0Q29sb3JTcGFjZSk7CisgICAgfQorCisgICAgKkx1dCA9IERlc3Q7CisgICAgcmV0dXJuIFRSVUU7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKEludGVudCk7Cit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZpeGVzIHRoZSBnYW1tYSBiYWxhbmNpbmcgb2YgdHJhbnNmb3JtLiBUaGlzIGlzIGRlc2NyaWJlZCBpbiBteSBwYXBlciAiUHJlbGluZWFyaXphdGlvbiBTdGFnZXMgb24KKy8vIENvbG9yLU1hbmFnZW1lbnQgQXBwbGljYXRpb24tU3BlY2lmaWMgSW50ZWdyYXRlZCBDaXJjdWl0cyAoQVNJQ3MpIiBwcmVzZW50ZWQgYXQgTklQMjQuIEl0IG9ubHkgd29ya3MKKy8vIGZvciBSR0IgdHJhbnNmb3Jtcy4gU2VlIHRoZSBwYXBlciBmb3IgbW9yZSBkZXRhaWxzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKy8vIE5vcm1hbGl6ZSBlbmRwb2ludHMgYnkgc2xvcGUgbGltaXRpbmcgbWF4IGFuZCBtaW4uIFRoaXMgYXNzdXJlcyBlbmRwb2ludHMgYXMgd2VsbC4KKy8vIERlc2NlbmRpbmcgY3VydmVzIGFyZSBoYW5kbGVkIGFzIHdlbGwuCitzdGF0aWMKK3ZvaWQgU2xvcGVMaW1pdGluZyhjbXNUb25lQ3VydmUqIGcpCit7CisgICAgaW50IEJlZ2luVmFsLCBFbmRWYWw7CisgICAgaW50IEF0QmVnaW4gPSAoaW50KSBmbG9vcigoY21zRmxvYXQ2NE51bWJlcikgZyAtPm5FbnRyaWVzICogMC4wMiArIDAuNSk7ICAgLy8gQ3V0b2ZmIGF0IDIlCisgICAgaW50IEF0RW5kICAgPSBnIC0+bkVudHJpZXMgLSBBdEJlZ2luIC0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIDk4JQorICAgIGNtc0Zsb2F0NjROdW1iZXIgVmFsLCBTbG9wZSwgYmV0YTsKKyAgICBpbnQgaTsKKworICAgIGlmIChjbXNJc1RvbmVDdXJ2ZURlc2NlbmRpbmcoZykpIHsKKyAgICAgICAgQmVnaW5WYWwgPSAweGZmZmY7IEVuZFZhbCA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBCZWdpblZhbCA9IDA7IEVuZFZhbCA9IDB4ZmZmZjsKKyAgICB9CisKKyAgICAvLyBDb21wdXRlIHNsb3BlIGFuZCBvZmZzZXQgZm9yIGJlZ2luIG9mIGN1cnZlCisgICAgVmFsICAgPSBnIC0+VGFibGUxNltBdEJlZ2luXTsKKyAgICBTbG9wZSA9IChWYWwgLSBCZWdpblZhbCkgLyBBdEJlZ2luOworICAgIGJldGEgID0gVmFsIC0gU2xvcGUgKiBBdEJlZ2luOworCisgICAgZm9yIChpPTA7IGkgPCBBdEJlZ2luOyBpKyspCisgICAgICAgIGcgLT5UYWJsZTE2W2ldID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKGkgKiBTbG9wZSArIGJldGEpOworCisgICAgLy8gQ29tcHV0ZSBzbG9wZSBhbmQgb2Zmc2V0IGZvciB0aGUgZW5kCisgICAgVmFsICAgPSBnIC0+VGFibGUxNltBdEVuZF07CisgICAgU2xvcGUgPSAoRW5kVmFsIC0gVmFsKSAvIEF0QmVnaW47ICAgLy8gQXRCZWdpbiBob2xkcyB0aGUgWCBpbnRlcnZhbCwgd2hpY2ggaXMgc2FtZSBpbiBib3RoIGNhc2VzCisgICAgYmV0YSAgPSBWYWwgLSBTbG9wZSAqIEF0RW5kOworCisgICAgZm9yIChpID0gQXRFbmQ7IGkgPCAoaW50KSBnIC0+bkVudHJpZXM7IGkrKykKKyAgICAgICAgZyAtPlRhYmxlMTZbaV0gPSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoaSAqIFNsb3BlICsgYmV0YSk7Cit9CisKKworLy8gUHJlY29tcHV0ZXMgdGFibGVzIGZvciA4LWJpdCBvbiBpbnB1dCBkZXZpY2VsaW5rLgorc3RhdGljCitQcmVsaW44RGF0YSogUHJlbGluT3B0OGFsbG9jKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCBjbXNJbnRlcnBQYXJhbXMqIHAsIGNtc1RvbmVDdXJ2ZSogR1szXSkKK3sKKyAgICBpbnQgaTsKKyAgICBjbXNVSW50MTZOdW1iZXIgSW5wdXRbM107CisgICAgY21zUzE1Rml4ZWQxNk51bWJlciB2MSwgdjIsIHYzOworICAgIFByZWxpbjhEYXRhKiBwODsKKworICAgIHA4ID0gKFByZWxpbjhEYXRhKilfY21zTWFsbG9jWmVybyhDb250ZXh0SUQsIHNpemVvZihQcmVsaW44RGF0YSkpOworICAgIGlmIChwOCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIC8vIFNpbmNlIHRoaXMgb25seSB3b3JrcyBmb3IgOCBiaXQgaW5wdXQsIHZhbHVlcyBjb21lcyBhbHdheXMgYXMgeCAqIDI1NywKKyAgICAvLyB3ZSBjYW4gc2FmZWx5IHRha2UgbXNiIGJ5dGUgKHggPDwgOCArIHgpCisKKyAgICBmb3IgKGk9MDsgaSA8IDI1NjsgaSsrKSB7CisKKyAgICAgICAgaWYgKEcgIT0gTlVMTCkgeworCisgICAgICAgICAgICAvLyBHZXQgMTYtYml0IHJlcHJlc2VudGF0aW9uCisgICAgICAgICAgICBJbnB1dFswXSA9IGNtc0V2YWxUb25lQ3VydmUxNihHWzBdLCBGUk9NXzhfVE9fMTYoaSkpOworICAgICAgICAgICAgSW5wdXRbMV0gPSBjbXNFdmFsVG9uZUN1cnZlMTYoR1sxXSwgRlJPTV84X1RPXzE2KGkpKTsKKyAgICAgICAgICAgIElucHV0WzJdID0gY21zRXZhbFRvbmVDdXJ2ZTE2KEdbMl0sIEZST01fOF9UT18xNihpKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBJbnB1dFswXSA9IEZST01fOF9UT18xNihpKTsKKyAgICAgICAgICAgIElucHV0WzFdID0gRlJPTV84X1RPXzE2KGkpOworICAgICAgICAgICAgSW5wdXRbMl0gPSBGUk9NXzhfVE9fMTYoaSk7CisgICAgICAgIH0KKworCisgICAgICAgIC8vIE1vdmUgdG8gMC4uMS4wIGluIGZpeGVkIGRvbWFpbgorICAgICAgICB2MSA9IF9jbXNUb0ZpeGVkRG9tYWluKElucHV0WzBdICogcCAtPiBEb21haW5bMF0pOworICAgICAgICB2MiA9IF9jbXNUb0ZpeGVkRG9tYWluKElucHV0WzFdICogcCAtPiBEb21haW5bMV0pOworICAgICAgICB2MyA9IF9jbXNUb0ZpeGVkRG9tYWluKElucHV0WzJdICogcCAtPiBEb21haW5bMl0pOworCisgICAgICAgIC8vIFN0b3JlIHRoZSBwcmVjYWxjdWxhdGVkIHRhYmxlIG9mIG5vZGVzCisgICAgICAgIHA4IC0+WDBbaV0gPSAocC0+b3B0YVsyXSAqIEZJWEVEX1RPX0lOVCh2MSkpOworICAgICAgICBwOCAtPlkwW2ldID0gKHAtPm9wdGFbMV0gKiBGSVhFRF9UT19JTlQodjIpKTsKKyAgICAgICAgcDggLT5aMFtpXSA9IChwLT5vcHRhWzBdICogRklYRURfVE9fSU5UKHYzKSk7CisKKyAgICAgICAgLy8gU3RvcmUgdGhlIHByZWNhbGN1bGF0ZWQgdGFibGUgb2Ygb2Zmc2V0cworICAgICAgICBwOCAtPnJ4W2ldID0gKGNtc1VJbnQxNk51bWJlcikgRklYRURfUkVTVF9UT19JTlQodjEpOworICAgICAgICBwOCAtPnJ5W2ldID0gKGNtc1VJbnQxNk51bWJlcikgRklYRURfUkVTVF9UT19JTlQodjIpOworICAgICAgICBwOCAtPnJ6W2ldID0gKGNtc1VJbnQxNk51bWJlcikgRklYRURfUkVTVF9UT19JTlQodjMpOworICAgIH0KKworICAgIHA4IC0+Q29udGV4dElEID0gQ29udGV4dElEOworICAgIHA4IC0+cCA9IHA7CisKKyAgICByZXR1cm4gcDg7Cit9CisKK3N0YXRpYwordm9pZCBQcmVsaW44ZnJlZShjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCogcHRyKQoreworICAgIF9jbXNGcmVlKENvbnRleHRJRCwgcHRyKTsKK30KKworc3RhdGljCit2b2lkKiBQcmVsaW44ZHVwKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCB2b2lkKiBwdHIpCit7CisgICAgcmV0dXJuIF9jbXNEdXBNZW0oQ29udGV4dElELCBwdHIsIHNpemVvZihQcmVsaW44RGF0YSkpOworfQorCisKKworLy8gQSBvcHRpbWl6ZWQgaW50ZXJwb2xhdGlvbiBmb3IgOC1iaXQgaW5wdXQuCisjZGVmaW5lIERFTlMoaSxqLGspIChMdXRUYWJsZVsoaSkrKGopKyhrKStPdXRDaGFuXSkKK3N0YXRpYwordm9pZCBQcmVsaW5FdmFsOChyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5wdXRbXSwKKyAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRwdXRbXSwKKyAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IHZvaWQqIEQpCit7CisKKyAgICBjbXNVSW50OE51bWJlciAgICAgICAgIHIsIGcsIGI7CisgICAgY21zUzE1Rml4ZWQxNk51bWJlciAgICByeCwgcnksIHJ6OworICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgICAgYzAsIGMxLCBjMiwgYzMsIFJlc3Q7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICBPdXRDaGFuOworICAgIHJlZ2lzdGVyIGNtc1MxNUZpeGVkMTZOdW1iZXIgICAgWDAsIFgxLCBZMCwgWTEsIFowLCBaMTsKKyAgICBQcmVsaW44RGF0YSogcDggPSAoUHJlbGluOERhdGEqKSBEOworICAgIHJlZ2lzdGVyIGNvbnN0IGNtc0ludGVycFBhcmFtcyogcCA9IHA4IC0+cDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIFRvdGFsT3V0ID0gcCAtPiBuT3V0cHV0czsKKyAgICBjb25zdCBjbXNVSW50MTZOdW1iZXIqIEx1dFRhYmxlID0gKGNvbnN0IGNtc1VJbnQxNk51bWJlciopcCAtPiBUYWJsZTsKKworICAgIHIgPSBJbnB1dFswXSA+PiA4OworICAgIGcgPSBJbnB1dFsxXSA+PiA4OworICAgIGIgPSBJbnB1dFsyXSA+PiA4OworCisgICAgWDAgPSBYMSA9IHA4LT5YMFtyXTsKKyAgICBZMCA9IFkxID0gcDgtPlkwW2ddOworICAgIFowID0gWjEgPSBwOC0+WjBbYl07CisKKyAgICByeCA9IHA4IC0+cnhbcl07CisgICAgcnkgPSBwOCAtPnJ5W2ddOworICAgIHJ6ID0gcDggLT5yeltiXTsKKworICAgIFgxID0gWDAgKyAoKHJ4ID09IDApID8gMCA6IHAgLT5vcHRhWzJdKTsKKyAgICBZMSA9IFkwICsgKChyeSA9PSAwKSA/IDAgOiBwIC0+b3B0YVsxXSk7CisgICAgWjEgPSBaMCArICgocnogPT0gMCkgPyAwIDogcCAtPm9wdGFbMF0pOworCisKKyAgICAvLyBUaGVzZSBhcmUgdGhlIDYgVGV0cmFoZWRyYWwKKyAgICBmb3IgKE91dENoYW49MDsgT3V0Q2hhbiA8IFRvdGFsT3V0OyBPdXRDaGFuKyspIHsKKworICAgICAgICBjMCA9IERFTlMoWDAsIFkwLCBaMCk7CisKKyAgICAgICAgaWYgKHJ4ID49IHJ5ICYmIHJ5ID49IHJ6KQorICAgICAgICB7CisgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkwLCBaMCkgLSBjMDsKKyAgICAgICAgICAgIGMyID0gREVOUyhYMSwgWTEsIFowKSAtIERFTlMoWDEsIFkwLCBaMCk7CisgICAgICAgICAgICBjMyA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgxLCBZMSwgWjApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChyeCA+PSByeiAmJiByeiA+PSByeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkwLCBaMCkgLSBjMDsKKyAgICAgICAgICAgICAgICBjMiA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgxLCBZMCwgWjEpOworICAgICAgICAgICAgICAgIGMzID0gREVOUyhYMSwgWTAsIFoxKSAtIERFTlMoWDEsIFkwLCBaMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKHJ6ID49IHJ4ICYmIHJ4ID49IHJ5KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMCwgWjEpIC0gREVOUyhYMCwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMSwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgYzMgPSBERU5TKFgwLCBZMCwgWjEpIC0gYzA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ5ID49IHJ4ICYmIHJ4ID49IHJ6KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkxLCBaMCkgLSBERU5TKFgwLCBZMSwgWjApOworICAgICAgICAgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgwLCBZMSwgWjApIC0gYzA7CisgICAgICAgICAgICAgICAgICAgICAgICBjMyA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgxLCBZMSwgWjApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyeSA+PSByeiAmJiByeiA+PSByeCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMSA9IERFTlMoWDEsIFkxLCBaMSkgLSBERU5TKFgwLCBZMSwgWjEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyID0gREVOUyhYMCwgWTEsIFowKSAtIGMwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzID0gREVOUyhYMCwgWTEsIFoxKSAtIERFTlMoWDAsIFkxLCBaMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ6ID49IHJ5ICYmIHJ5ID49IHJ4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBERU5TKFgxLCBZMSwgWjEpIC0gREVOUyhYMCwgWTEsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzIgPSBERU5TKFgwLCBZMSwgWjEpIC0gREVOUyhYMCwgWTAsIFoxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzMgPSBERU5TKFgwLCBZMCwgWjEpIC0gYzA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBjMiA9IGMzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3QgPSBjMSAqIHJ4ICsgYzIgKiByeSArIGMzICogcnogKyAweDgwMDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0W091dENoYW5dID0gKGNtc1VJbnQxNk51bWJlciljMCArICgoUmVzdCArIChSZXN0Pj4xNikpPj4xNik7CisKKyAgICB9Cit9CisKKyN1bmRlZiBERU5TCisKKworLy8gQ3VydmVzIHRoYXQgY29udGFpbiB3aWRlIGVtcHR5IGFyZWFzIGFyZSBub3Qgb3B0aW1pemVhYmxlCitzdGF0aWMKK2Ntc0Jvb2wgSXNEZWdlbmVyYXRlZChjb25zdCBjbXNUb25lQ3VydmUqIGcpCit7CisgICAgaW50IGksIFplcm9zID0gMCwgUG9sZXMgPSAwOworICAgIGludCBuRW50cmllcyA9IGcgLT5uRW50cmllczsKKworICAgIGZvciAoaT0wOyBpIDwgbkVudHJpZXM7IGkrKykgeworCisgICAgICAgIGlmIChnIC0+VGFibGUxNltpXSA9PSAweDAwMDApIFplcm9zKys7CisgICAgICAgIGlmIChnIC0+VGFibGUxNltpXSA9PSAweGZmZmYpIFBvbGVzKys7CisgICAgfQorCisgICAgaWYgKFplcm9zID09IDEgJiYgUG9sZXMgPT0gMSkgcmV0dXJuIEZBTFNFOyAgLy8gRm9yIGxpbmVhciB0YWJsZXMKKyAgICBpZiAoWmVyb3MgPiAobkVudHJpZXMgLyA0KSkgcmV0dXJuIFRSVUU7ICAvLyBEZWdlbmVyYXRlZCwgbW9zdGx5IHplcm9zCisgICAgaWYgKFBvbGVzID4gKG5FbnRyaWVzIC8gNCkpIHJldHVybiBUUlVFOyAgLy8gRGVnZW5lcmF0ZWQsIG1vc3RseSBwb2xlcworCisgICAgcmV0dXJuIEZBTFNFOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gV2UgbmVlZCB4cHV0IG92ZXIgaGVyZQorCitzdGF0aWMKK2Ntc0Jvb2wgT3B0aW1pemVCeUNvbXB1dGluZ0xpbmVhcml6YXRpb24oY21zUGlwZWxpbmUqKiBMdXQsIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciogSW5wdXRGb3JtYXQsIGNtc1VJbnQzMk51bWJlciogT3V0cHV0Rm9ybWF0LCBjbXNVSW50MzJOdW1iZXIqIGR3RmxhZ3MpCit7CisgICAgY21zUGlwZWxpbmUqIE9yaWdpbmFsTHV0OworICAgIGludCBuR3JpZFBvaW50czsKKyAgICBjbXNUb25lQ3VydmUgKlRyYW5zW2Ntc01BWENIQU5ORUxTXSwgKlRyYW5zUmV2ZXJzZVtjbXNNQVhDSEFOTkVMU107CisgICAgY21zVUludDMyTnVtYmVyIHQsIGk7CisgICAgY21zRmxvYXQzMk51bWJlciB2LCBJbltjbXNNQVhDSEFOTkVMU10sIE91dFtjbXNNQVhDSEFOTkVMU107CisgICAgY21zQm9vbCBsSXNTdWl0YWJsZSwgbElzTGluZWFyOworICAgIGNtc1BpcGVsaW5lKiBPcHRpbWl6ZWRMVVQgPSBOVUxMLCAqTHV0UGx1c0N1cnZlcyA9IE5VTEw7CisgICAgY21zU3RhZ2UqIE9wdGltaXplZENMVVRtcGU7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvclNwYWNlLCBPdXRwdXRDb2xvclNwYWNlOworICAgIGNtc1N0YWdlKiBPcHRpbWl6ZWRQcmVsaW5NcGU7CisgICAgY21zU3RhZ2UqIG1wZTsKKyAgICBjbXNUb25lQ3VydmUqKiAgIE9wdGltaXplZFByZWxpbkN1cnZlczsKKyAgICBfY21zU3RhZ2VDTHV0RGF0YSogICAgIE9wdGltaXplZFByZWxpbkNMVVQ7CisKKworICAgIC8vIFRoaXMgaXMgYSBsb29zeSBvcHRpbWl6YXRpb24hIGRvZXMgbm90IGFwcGx5IGluIGZsb2F0aW5nLXBvaW50IGNhc2VzCisgICAgaWYgKF9jbXNGb3JtYXR0ZXJJc0Zsb2F0KCpJbnB1dEZvcm1hdCkgfHwgX2Ntc0Zvcm1hdHRlcklzRmxvYXQoKk91dHB1dEZvcm1hdCkpIHJldHVybiBGQUxTRTsKKworICAgIC8vIE9ubHkgb24gUkdCCisgICAgaWYgKFRfQ09MT1JTUEFDRSgqSW5wdXRGb3JtYXQpICAhPSBQVF9SR0IpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoVF9DT0xPUlNQQUNFKCpPdXRwdXRGb3JtYXQpICE9IFBUX1JHQikgcmV0dXJuIEZBTFNFOworCisKKyAgICAvLyBPbiAxNiBiaXRzLCB1c2VyIGhhcyB0byBzcGVjaWZ5IHRoZSBmZWF0dXJlCisgICAgaWYgKCFfY21zRm9ybWF0dGVySXM4Yml0KCpJbnB1dEZvcm1hdCkpIHsKKyAgICAgICAgaWYgKCEoKmR3RmxhZ3MgJiBjbXNGTEFHU19DTFVUX1BSRV9MSU5FQVJJWkFUSU9OKSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIE9yaWdpbmFsTHV0ID0gKkx1dDsKKworICAgLy8gTmFtZWQgY29sb3IgcGlwZWxpbmVzIGNhbm5vdCBiZSBvcHRpbWl6ZWQgZWl0aGVyCisgICBmb3IgKG1wZSA9IGNtc1BpcGVsaW5lR2V0UHRyVG9GaXJzdFN0YWdlKE9yaWdpbmFsTHV0KTsKKyAgICAgICAgIG1wZSAhPSBOVUxMOworICAgICAgICAgbXBlID0gY21zU3RhZ2VOZXh0KG1wZSkpIHsKKyAgICAgICAgICAgIGlmIChjbXNTdGFnZVR5cGUobXBlKSA9PSBjbXNTaWdOYW1lZENvbG9yRWxlbVR5cGUpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBDb2xvclNwYWNlICAgICAgID0gX2Ntc0lDQ2NvbG9yU3BhY2UoVF9DT0xPUlNQQUNFKCpJbnB1dEZvcm1hdCkpOworICAgIE91dHB1dENvbG9yU3BhY2UgPSBfY21zSUNDY29sb3JTcGFjZShUX0NPTE9SU1BBQ0UoKk91dHB1dEZvcm1hdCkpOworICAgIG5HcmlkUG9pbnRzICAgICAgPSBfY21zUmVhc29uYWJsZUdyaWRwb2ludHNCeUNvbG9yc3BhY2UoQ29sb3JTcGFjZSwgKmR3RmxhZ3MpOworCisgICAgLy8gRW1wdHkgZ2FtbWEgY29udGFpbmVycworICAgIG1lbXNldChUcmFucywgMCwgc2l6ZW9mKFRyYW5zKSk7CisgICAgbWVtc2V0KFRyYW5zUmV2ZXJzZSwgMCwgc2l6ZW9mKFRyYW5zUmV2ZXJzZSkpOworCisgICAgZm9yICh0ID0gMDsgdCA8IE9yaWdpbmFsTHV0IC0+SW5wdXRDaGFubmVsczsgdCsrKSB7CisgICAgICAgIFRyYW5zW3RdID0gY21zQnVpbGRUYWJ1bGF0ZWRUb25lQ3VydmUxNihPcmlnaW5hbEx1dCAtPkNvbnRleHRJRCwgUFJFTElORUFSSVpBVElPTl9QT0lOVFMsIE5VTEwpOworICAgICAgICBpZiAoVHJhbnNbdF0gPT0gTlVMTCkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAvLyBQb3B1bGF0ZSB0aGUgY3VydmVzCisgICAgZm9yIChpPTA7IGkgPCBQUkVMSU5FQVJJWkFUSU9OX1BPSU5UUzsgaSsrKSB7CisKKyAgICAgICAgdiA9IChjbXNGbG9hdDMyTnVtYmVyKSAoKGNtc0Zsb2F0NjROdW1iZXIpIGkgLyAoUFJFTElORUFSSVpBVElPTl9QT0lOVFMgLSAxKSk7CisKKyAgICAgICAgLy8gRmVlZCBpbnB1dCB3aXRoIGEgZ3JheSByYW1wCisgICAgICAgIGZvciAodD0wOyB0IDwgT3JpZ2luYWxMdXQgLT5JbnB1dENoYW5uZWxzOyB0KyspCisgICAgICAgICAgICBJblt0XSA9IHY7CisKKyAgICAgICAgLy8gRXZhbHVhdGUgdGhlIGdyYXkgdmFsdWUKKyAgICAgICAgY21zUGlwZWxpbmVFdmFsRmxvYXQoSW4sIE91dCwgT3JpZ2luYWxMdXQpOworCisgICAgICAgIC8vIFN0b3JlIHJlc3VsdCBpbiBjdXJ2ZQorICAgICAgICBmb3IgKHQ9MDsgdCA8IE9yaWdpbmFsTHV0IC0+SW5wdXRDaGFubmVsczsgdCsrKQorICAgICAgICAgICAgVHJhbnNbdF0gLT5UYWJsZTE2W2ldID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKE91dFt0XSAqIDY1NTM1LjApOworICAgIH0KKworICAgIC8vIFNsb3BlLWxpbWl0IHRoZSBvYnRhaW5lZCBjdXJ2ZXMKKyAgICBmb3IgKHQgPSAwOyB0IDwgT3JpZ2luYWxMdXQgLT5JbnB1dENoYW5uZWxzOyB0KyspCisgICAgICAgIFNsb3BlTGltaXRpbmcoVHJhbnNbdF0pOworCisgICAgLy8gQ2hlY2sgZm9yIHZhbGlkaXR5CisgICAgbElzU3VpdGFibGUgPSBUUlVFOworICAgIGxJc0xpbmVhciAgID0gVFJVRTsKKyAgICBmb3IgKHQ9MDsgKGxJc1N1aXRhYmxlICYmICh0IDwgT3JpZ2luYWxMdXQgLT5JbnB1dENoYW5uZWxzKSk7IHQrKykgeworCisgICAgICAgIC8vIEV4Y2x1ZGUgaWYgYWxyZWFkeSBsaW5lYXIKKyAgICAgICAgaWYgKCFjbXNJc1RvbmVDdXJ2ZUxpbmVhcihUcmFuc1t0XSkpCisgICAgICAgICAgICBsSXNMaW5lYXIgPSBGQUxTRTsKKworICAgICAgICAvLyBFeGNsdWRlIGlmIG5vbi1tb25vdG9uaWMKKyAgICAgICAgaWYgKCFjbXNJc1RvbmVDdXJ2ZU1vbm90b25pYyhUcmFuc1t0XSkpCisgICAgICAgICAgICBsSXNTdWl0YWJsZSA9IEZBTFNFOworCisgICAgICAgIGlmIChJc0RlZ2VuZXJhdGVkKFRyYW5zW3RdKSkKKyAgICAgICAgICAgIGxJc1N1aXRhYmxlID0gRkFMU0U7CisgICAgfQorCisgICAgLy8gSWYgaXQgaXMgbm90IHN1aXRhYmxlLCBqdXN0IHF1aXQKKyAgICBpZiAoIWxJc1N1aXRhYmxlKSBnb3RvIEVycm9yOworCisgICAgLy8gSW52ZXJ0IGN1cnZlcyBpZiBwb3NzaWJsZQorICAgIGZvciAodCA9IDA7IHQgPCBPcmlnaW5hbEx1dCAtPklucHV0Q2hhbm5lbHM7IHQrKykgeworICAgICAgICBUcmFuc1JldmVyc2VbdF0gPSBjbXNSZXZlcnNlVG9uZUN1cnZlRXgoUFJFTElORUFSSVpBVElPTl9QT0lOVFMsIFRyYW5zW3RdKTsKKyAgICAgICAgaWYgKFRyYW5zUmV2ZXJzZVt0XSA9PSBOVUxMKSBnb3RvIEVycm9yOworICAgIH0KKworICAgIC8vIE5vdyBpbnNldCB0aGUgcmV2ZXJzZWQgY3VydmVzIGF0IHRoZSBiZWdpbiBvZiB0cmFuc2Zvcm0KKyAgICBMdXRQbHVzQ3VydmVzID0gY21zUGlwZWxpbmVEdXAoT3JpZ2luYWxMdXQpOworICAgIGlmIChMdXRQbHVzQ3VydmVzID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTHV0UGx1c0N1cnZlcywgY21zQVRfQkVHSU4sIGNtc1N0YWdlQWxsb2NUb25lQ3VydmVzKE9yaWdpbmFsTHV0IC0+Q29udGV4dElELCBPcmlnaW5hbEx1dCAtPklucHV0Q2hhbm5lbHMsIFRyYW5zUmV2ZXJzZSkpKQorICAgICAgICBnb3RvIEVycm9yOworCisgICAgLy8gQ3JlYXRlIHRoZSByZXN1bHQgTFVUCisgICAgT3B0aW1pemVkTFVUID0gY21zUGlwZWxpbmVBbGxvYyhPcmlnaW5hbEx1dCAtPkNvbnRleHRJRCwgT3JpZ2luYWxMdXQgLT5JbnB1dENoYW5uZWxzLCBPcmlnaW5hbEx1dCAtPk91dHB1dENoYW5uZWxzKTsKKyAgICBpZiAoT3B0aW1pemVkTFVUID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICBPcHRpbWl6ZWRQcmVsaW5NcGUgPSBjbXNTdGFnZUFsbG9jVG9uZUN1cnZlcyhPcmlnaW5hbEx1dCAtPkNvbnRleHRJRCwgT3JpZ2luYWxMdXQgLT5JbnB1dENoYW5uZWxzLCBUcmFucyk7CisKKyAgICAvLyBDcmVhdGUgYW5kIGluc2VydCB0aGUgY3VydmVzIGF0IHRoZSBiZWdpbm5pbmcKKyAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoT3B0aW1pemVkTFVULCBjbXNBVF9CRUdJTiwgT3B0aW1pemVkUHJlbGluTXBlKSkKKyAgICAgICAgZ290byBFcnJvcjsKKworICAgIC8vIEFsbG9jYXRlIHRoZSBDTFVUIGZvciByZXN1bHQKKyAgICBPcHRpbWl6ZWRDTFVUbXBlID0gY21zU3RhZ2VBbGxvY0NMdXQxNmJpdChPcmlnaW5hbEx1dCAtPkNvbnRleHRJRCwgbkdyaWRQb2ludHMsIE9yaWdpbmFsTHV0IC0+SW5wdXRDaGFubmVscywgT3JpZ2luYWxMdXQgLT5PdXRwdXRDaGFubmVscywgTlVMTCk7CisKKyAgICAvLyBBZGQgdGhlIENMVVQgdG8gdGhlIGRlc3RpbmF0aW9uIExVVAorICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShPcHRpbWl6ZWRMVVQsIGNtc0FUX0VORCwgT3B0aW1pemVkQ0xVVG1wZSkpCisgICAgICAgIGdvdG8gRXJyb3I7CisKKyAgICAvLyBSZXNhbXBsZSB0aGUgTFVUCisgICAgaWYgKCFjbXNTdGFnZVNhbXBsZUNMdXQxNmJpdChPcHRpbWl6ZWRDTFVUbXBlLCBYRm9ybVNhbXBsZXIxNiwgKHZvaWQqKSBMdXRQbHVzQ3VydmVzLCAwKSkgZ290byBFcnJvcjsKKworICAgIC8vIEZyZWUgcmVzb3VyY2VzCisgICAgZm9yICh0ID0gMDsgdCA8IE9yaWdpbmFsTHV0IC0+SW5wdXRDaGFubmVsczsgdCsrKSB7CisKKyAgICAgICAgaWYgKFRyYW5zW3RdKSBjbXNGcmVlVG9uZUN1cnZlKFRyYW5zW3RdKTsKKyAgICAgICAgaWYgKFRyYW5zUmV2ZXJzZVt0XSkgY21zRnJlZVRvbmVDdXJ2ZShUcmFuc1JldmVyc2VbdF0pOworICAgIH0KKworICAgIGNtc1BpcGVsaW5lRnJlZShMdXRQbHVzQ3VydmVzKTsKKworCisgICAgT3B0aW1pemVkUHJlbGluQ3VydmVzID0gX2Ntc1N0YWdlR2V0UHRyVG9DdXJ2ZVNldChPcHRpbWl6ZWRQcmVsaW5NcGUpOworICAgIE9wdGltaXplZFByZWxpbkNMVVQgICA9IChfY21zU3RhZ2VDTHV0RGF0YSopIE9wdGltaXplZENMVVRtcGUgLT5EYXRhOworCisgICAgLy8gU2V0IHRoZSBldmFsdWF0b3IgaWYgOC1iaXQKKyAgICBpZiAoX2Ntc0Zvcm1hdHRlcklzOGJpdCgqSW5wdXRGb3JtYXQpKSB7CisKKyAgICAgICAgUHJlbGluOERhdGEqIHA4ID0gUHJlbGluT3B0OGFsbG9jKE9wdGltaXplZExVVCAtPkNvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGltaXplZFByZWxpbkNMVVQgLT5QYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpbWl6ZWRQcmVsaW5DdXJ2ZXMpOworICAgICAgICBpZiAocDggPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgICAgIF9jbXNQaXBlbGluZVNldE9wdGltaXphdGlvblBhcmFtZXRlcnMoT3B0aW1pemVkTFVULCBQcmVsaW5FdmFsOCwgKHZvaWQqKSBwOCwgUHJlbGluOGZyZWUsIFByZWxpbjhkdXApOworCisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFByZWxpbjE2RGF0YSogcDE2ID0gUHJlbGluT3B0MTZhbGxvYyhPcHRpbWl6ZWRMVVQgLT5Db250ZXh0SUQsCisgICAgICAgICAgICBPcHRpbWl6ZWRQcmVsaW5DTFVUIC0+UGFyYW1zLAorICAgICAgICAgICAgMywgT3B0aW1pemVkUHJlbGluQ3VydmVzLCAzLCBOVUxMKTsKKyAgICAgICAgaWYgKHAxNiA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgX2Ntc1BpcGVsaW5lU2V0T3B0aW1pemF0aW9uUGFyYW1ldGVycyhPcHRpbWl6ZWRMVVQsIFByZWxpbkV2YWwxNiwgKHZvaWQqKSBwMTYsIFByZWxpbk9wdDE2ZnJlZSwgUHJlbGluMTZkdXApOworCisgICAgfQorCisgICAgLy8gRG9uJ3QgZml4IHdoaXRlIG9uIGFic29sdXRlIGNvbG9yaW1ldHJpYworICAgIGlmIChJbnRlbnQgPT0gSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQykKKyAgICAgICAgKmR3RmxhZ3MgfD0gY21zRkxBR1NfTk9XSElURU9OV0hJVEVGSVhVUDsKKworICAgIGlmICghKCpkd0ZsYWdzICYgY21zRkxBR1NfTk9XSElURU9OV0hJVEVGSVhVUCkpIHsKKworICAgICAgICBpZiAoIUZpeFdoaXRlTWlzYWxpZ25tZW50KE9wdGltaXplZExVVCwgQ29sb3JTcGFjZSwgT3V0cHV0Q29sb3JTcGFjZSkpIHsKKworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQW5kIHJldHVybiB0aGUgb2J0YWluZWQgTFVUCisKKyAgICBjbXNQaXBlbGluZUZyZWUoT3JpZ2luYWxMdXQpOworICAgICpMdXQgPSBPcHRpbWl6ZWRMVVQ7CisgICAgcmV0dXJuIFRSVUU7CisKK0Vycm9yOgorCisgICAgZm9yICh0ID0gMDsgdCA8IE9yaWdpbmFsTHV0IC0+SW5wdXRDaGFubmVsczsgdCsrKSB7CisKKyAgICAgICAgaWYgKFRyYW5zW3RdKSBjbXNGcmVlVG9uZUN1cnZlKFRyYW5zW3RdKTsKKyAgICAgICAgaWYgKFRyYW5zUmV2ZXJzZVt0XSkgY21zRnJlZVRvbmVDdXJ2ZShUcmFuc1JldmVyc2VbdF0pOworICAgIH0KKworICAgIGlmIChMdXRQbHVzQ3VydmVzICE9IE5VTEwpIGNtc1BpcGVsaW5lRnJlZShMdXRQbHVzQ3VydmVzKTsKKyAgICBpZiAoT3B0aW1pemVkTFVUICE9IE5VTEwpIGNtc1BpcGVsaW5lRnJlZShPcHRpbWl6ZWRMVVQpOworCisgICAgcmV0dXJuIEZBTFNFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihJbnRlbnQpOworfQorCisKKy8vIEN1cnZlcyBvcHRpbWl6ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYwordm9pZCBDdXJ2ZXNGcmVlKGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkKiBwdHIpCit7CisgICAgIEN1cnZlczE2RGF0YSogRGF0YSA9IChDdXJ2ZXMxNkRhdGEqKSBwdHI7CisgICAgIGludCBpOworCisgICAgIGZvciAoaT0wOyBpIDwgRGF0YSAtPiBuQ3VydmVzOyBpKyspIHsKKworICAgICAgICAgX2Ntc0ZyZWUoQ29udGV4dElELCBEYXRhIC0+Q3VydmVzW2ldKTsKKyAgICAgfQorCisgICAgIF9jbXNGcmVlKENvbnRleHRJRCwgRGF0YSAtPkN1cnZlcyk7CisgICAgIF9jbXNGcmVlKENvbnRleHRJRCwgcHRyKTsKK30KKworc3RhdGljCit2b2lkKiBDdXJ2ZXNEdXAoY21zQ29udGV4dCBDb250ZXh0SUQsIGNvbnN0IHZvaWQqIHB0cikKK3sKKyAgICBDdXJ2ZXMxNkRhdGEqIERhdGEgPSAoQ3VydmVzMTZEYXRhKilfY21zRHVwTWVtKENvbnRleHRJRCwgcHRyLCBzaXplb2YoQ3VydmVzMTZEYXRhKSk7CisgICAgaW50IGk7CisKKyAgICBpZiAoRGF0YSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIERhdGEgLT5DdXJ2ZXMgPSAoY21zVUludDE2TnVtYmVyKiopX2Ntc0R1cE1lbShDb250ZXh0SUQsIERhdGEgLT5DdXJ2ZXMsIERhdGEgLT5uQ3VydmVzICogc2l6ZW9mKGNtc1VJbnQxNk51bWJlciopKTsKKworICAgIGZvciAoaT0wOyBpIDwgRGF0YSAtPiBuQ3VydmVzOyBpKyspIHsKKyAgICAgICAgRGF0YSAtPkN1cnZlc1tpXSA9IChjbXNVSW50MTZOdW1iZXIqKV9jbXNEdXBNZW0oQ29udGV4dElELCBEYXRhIC0+Q3VydmVzW2ldLCBEYXRhIC0+IG5FbGVtZW50cyAqIHNpemVvZihjbXNVSW50MTZOdW1iZXIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gKHZvaWQqKSBEYXRhOworfQorCisvLyBQcmVjb21wdXRlcyB0YWJsZXMgZm9yIDgtYml0IG9uIGlucHV0IGRldmljZWxpbmsuCitzdGF0aWMKK0N1cnZlczE2RGF0YSogQ3VydmVzQWxsb2MoY21zQ29udGV4dCBDb250ZXh0SUQsIGludCBuQ3VydmVzLCBpbnQgbkVsZW1lbnRzLCBjbXNUb25lQ3VydmUqKiBHKQoreworICAgIGludCBpLCBqOworICAgIEN1cnZlczE2RGF0YSogYzE2OworCisgICAgYzE2ID0gKEN1cnZlczE2RGF0YSopX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoQ3VydmVzMTZEYXRhKSk7CisgICAgaWYgKGMxNiA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGMxNiAtPm5DdXJ2ZXMgPSBuQ3VydmVzOworICAgIGMxNiAtPm5FbGVtZW50cyA9IG5FbGVtZW50czsKKworICAgIGMxNiAtPkN1cnZlcyA9IChjbXNVSW50MTZOdW1iZXIqKilfY21zQ2FsbG9jKENvbnRleHRJRCwgbkN1cnZlcywgc2l6ZW9mKGNtc1VJbnQxNk51bWJlciopKTsKKyAgICBpZiAoYzE2IC0+Q3VydmVzID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgZm9yIChpPTA7IGkgPCBuQ3VydmVzOyBpKyspIHsKKworICAgICAgICBjMTYtPkN1cnZlc1tpXSA9IChjbXNVSW50MTZOdW1iZXIqKV9jbXNDYWxsb2MoQ29udGV4dElELCBuRWxlbWVudHMsIHNpemVvZihjbXNVSW50MTZOdW1iZXIpKTsKKworICAgICAgICBpZiAoYzE2LT5DdXJ2ZXNbaV0gPT0gTlVMTCkgeworCisgICAgICAgICAgICBmb3IgKGo9MDsgaiA8IGk7IGorKykgeworICAgICAgICAgICAgICAgIF9jbXNGcmVlKENvbnRleHRJRCwgYzE2LT5DdXJ2ZXNbal0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgX2Ntc0ZyZWUoQ29udGV4dElELCBjMTYtPkN1cnZlcyk7CisgICAgICAgICAgICBfY21zRnJlZShDb250ZXh0SUQsIGMxNik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuRWxlbWVudHMgPT0gMjU2KSB7CisKKyAgICAgICAgICAgIGZvciAoaj0wOyBqIDwgbkVsZW1lbnRzOyBqKyspIHsKKworICAgICAgICAgICAgICAgIGMxNiAtPkN1cnZlc1tpXVtqXSA9IGNtc0V2YWxUb25lQ3VydmUxNihHW2ldLCBGUk9NXzhfVE9fMTYoaikpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICBmb3IgKGo9MDsgaiA8IG5FbGVtZW50czsgaisrKSB7CisgICAgICAgICAgICAgICAgYzE2IC0+Q3VydmVzW2ldW2pdID0gY21zRXZhbFRvbmVDdXJ2ZTE2KEdbaV0sIChjbXNVSW50MTZOdW1iZXIpIGopOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGMxNjsKK30KKworc3RhdGljCit2b2lkIEZhc3RFdmFsdWF0ZUN1cnZlczgocmVnaXN0ZXIgY29uc3QgY21zVUludDE2TnVtYmVyIEluW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3Qgdm9pZCogRCkKK3sKKyAgICBDdXJ2ZXMxNkRhdGEqIERhdGEgPSAoQ3VydmVzMTZEYXRhKikgRDsKKyAgICBjbXNVSW50OE51bWJlciB4OworICAgIGludCBpOworCisgICAgZm9yIChpPTA7IGkgPCBEYXRhIC0+bkN1cnZlczsgaSsrKSB7CisKKyAgICAgICAgIHggPSAoSW5baV0gPj4gOCk7CisgICAgICAgICBPdXRbaV0gPSBEYXRhIC0+IEN1cnZlc1tpXVt4XTsKKyAgICB9Cit9CisKKworc3RhdGljCit2b2lkIEZhc3RFdmFsdWF0ZUN1cnZlczE2KHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IHZvaWQqIEQpCit7CisgICAgQ3VydmVzMTZEYXRhKiBEYXRhID0gKEN1cnZlczE2RGF0YSopIEQ7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGk9MDsgaSA8IERhdGEgLT5uQ3VydmVzOyBpKyspIHsKKyAgICAgICAgIE91dFtpXSA9IERhdGEgLT4gQ3VydmVzW2ldW0luW2ldXTsKKyAgICB9Cit9CisKKworc3RhdGljCit2b2lkIEZhc3RJZGVudGl0eTE2KHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbltdLAorICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0W10sCisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IHZvaWQqIEQpCit7CisgICAgY21zUGlwZWxpbmUqIEx1dCA9IChjbXNQaXBlbGluZSopIEQ7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBmb3IgKGk9MDsgaSA8IEx1dCAtPklucHV0Q2hhbm5lbHM7IGkrKykgeworICAgICAgICAgT3V0W2ldID0gSW5baV07CisgICAgfQorfQorCisKKy8vIElmIHRoZSB0YXJnZXQgTFVUIGhvbGRzIG9ubHkgY3VydmVzLCB0aGUgb3B0aW1pemF0aW9uIHByb2NlZHVyZSBpcyB0byBqb2luIGFsbCB0aG9zZQorLy8gY3VydmVzIHRvZ2V0aGVyLiBUaGF0IG9ubHkgd29ya3Mgb24gY3VydmVzIGFuZCBkb2VzIG5vdCB3b3JrIG9uIG1hdHJpY2VzLgorc3RhdGljCitjbXNCb29sIE9wdGltaXplQnlKb2luaW5nQ3VydmVzKGNtc1BpcGVsaW5lKiogTHV0LCBjbXNVSW50MzJOdW1iZXIgSW50ZW50LCBjbXNVSW50MzJOdW1iZXIqIElucHV0Rm9ybWF0LCBjbXNVSW50MzJOdW1iZXIqIE91dHB1dEZvcm1hdCwgY21zVUludDMyTnVtYmVyKiBkd0ZsYWdzKQoreworICAgIGNtc1RvbmVDdXJ2ZSoqIEdhbW1hVGFibGVzID0gTlVMTDsKKyAgICBjbXNGbG9hdDMyTnVtYmVyIEluRmxvYXRbY21zTUFYQ0hBTk5FTFNdLCBPdXRGbG9hdFtjbXNNQVhDSEFOTkVMU107CisgICAgY21zVUludDMyTnVtYmVyIGksIGo7CisgICAgY21zUGlwZWxpbmUqIFNyYyA9ICpMdXQ7CisgICAgY21zUGlwZWxpbmUqIERlc3QgPSBOVUxMOworICAgIGNtc1N0YWdlKiBtcGU7CisgICAgY21zU3RhZ2UqIE9idGFpbmVkQ3VydmVzID0gTlVMTDsKKworCisgICAgLy8gVGhpcyBpcyBhIGxvb3N5IG9wdGltaXphdGlvbiEgZG9lcyBub3QgYXBwbHkgaW4gZmxvYXRpbmctcG9pbnQgY2FzZXMKKyAgICBpZiAoX2Ntc0Zvcm1hdHRlcklzRmxvYXQoKklucHV0Rm9ybWF0KSB8fCBfY21zRm9ybWF0dGVySXNGbG9hdCgqT3V0cHV0Rm9ybWF0KSkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gIE9ubHkgY3VydmVzIGluIHRoaXMgTFVUPworICAgIGZvciAobXBlID0gY21zUGlwZWxpbmVHZXRQdHJUb0ZpcnN0U3RhZ2UoU3JjKTsKKyAgICAgICAgIG1wZSAhPSBOVUxMOworICAgICAgICAgbXBlID0gY21zU3RhZ2VOZXh0KG1wZSkpIHsKKyAgICAgICAgICAgIGlmIChjbXNTdGFnZVR5cGUobXBlKSAhPSBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8gQWxsb2NhdGUgYW4gZW1wdHkgTFVUCisgICAgRGVzdCA9ICBjbXNQaXBlbGluZUFsbG9jKFNyYyAtPkNvbnRleHRJRCwgU3JjIC0+SW5wdXRDaGFubmVscywgU3JjIC0+T3V0cHV0Q2hhbm5lbHMpOworICAgIGlmIChEZXN0ID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIC8vIENyZWF0ZSB0YXJnZXQgY3VydmVzCisgICAgR2FtbWFUYWJsZXMgPSAoY21zVG9uZUN1cnZlKiopIF9jbXNDYWxsb2MoU3JjIC0+Q29udGV4dElELCBTcmMgLT5JbnB1dENoYW5uZWxzLCBzaXplb2YoY21zVG9uZUN1cnZlKikpOworICAgIGlmIChHYW1tYVRhYmxlcyA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgZm9yIChpPTA7IGkgPCBTcmMgLT5JbnB1dENoYW5uZWxzOyBpKyspIHsKKyAgICAgICAgR2FtbWFUYWJsZXNbaV0gPSBjbXNCdWlsZFRhYnVsYXRlZFRvbmVDdXJ2ZTE2KFNyYyAtPkNvbnRleHRJRCwgUFJFTElORUFSSVpBVElPTl9QT0lOVFMsIE5VTEwpOworICAgICAgICBpZiAoR2FtbWFUYWJsZXNbaV0gPT0gTlVMTCkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAvLyBDb21wdXRlIDE2IGJpdCByZXN1bHQgYnkgdXNpbmcgZmxvYXRpbmcgcG9pbnQKKyAgICBmb3IgKGk9MDsgaSA8IFBSRUxJTkVBUklaQVRJT05fUE9JTlRTOyBpKyspIHsKKworICAgICAgICBmb3IgKGo9MDsgaiA8IFNyYyAtPklucHV0Q2hhbm5lbHM7IGorKykKKyAgICAgICAgICAgIEluRmxvYXRbal0gPSAoY21zRmxvYXQzMk51bWJlcikgKChjbXNGbG9hdDY0TnVtYmVyKSBpIC8gKFBSRUxJTkVBUklaQVRJT05fUE9JTlRTIC0gMSkpOworCisgICAgICAgIGNtc1BpcGVsaW5lRXZhbEZsb2F0KEluRmxvYXQsIE91dEZsb2F0LCBTcmMpOworCisgICAgICAgIGZvciAoaj0wOyBqIDwgU3JjIC0+SW5wdXRDaGFubmVsczsgaisrKQorICAgICAgICAgICAgR2FtbWFUYWJsZXNbal0gLT4gVGFibGUxNltpXSA9IF9jbXNRdWlja1NhdHVyYXRlV29yZChPdXRGbG9hdFtqXSAqIDY1NTM1LjApOworICAgIH0KKworICAgIE9idGFpbmVkQ3VydmVzID0gY21zU3RhZ2VBbGxvY1RvbmVDdXJ2ZXMoU3JjIC0+Q29udGV4dElELCBTcmMgLT5JbnB1dENoYW5uZWxzLCBHYW1tYVRhYmxlcyk7CisgICAgaWYgKE9idGFpbmVkQ3VydmVzID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICBmb3IgKGk9MDsgaSA8IFNyYyAtPklucHV0Q2hhbm5lbHM7IGkrKykgeworICAgICAgICBjbXNGcmVlVG9uZUN1cnZlKEdhbW1hVGFibGVzW2ldKTsKKyAgICAgICAgR2FtbWFUYWJsZXNbaV0gPSBOVUxMOworICAgIH0KKworICAgIGlmIChHYW1tYVRhYmxlcyAhPSBOVUxMKSBfY21zRnJlZShTcmMgLT5Db250ZXh0SUQsIEdhbW1hVGFibGVzKTsKKworICAgIC8vIE1heWJlIHRoZSBjdXJ2ZXMgYXJlIGxpbmVhciBhdCB0aGUgZW5kCisgICAgaWYgKCFBbGxDdXJ2ZXNBcmVMaW5lYXIoT2J0YWluZWRDdXJ2ZXMpKSB7CisKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKERlc3QsIGNtc0FUX0JFR0lOLCBPYnRhaW5lZEN1cnZlcykpCisgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgIC8vIElmIHRoZSBjdXJ2ZXMgYXJlIHRvIGJlIGFwcGxpZWQgaW4gOCBiaXRzLCB3ZSBjYW4gc2F2ZSBtZW1vcnkKKyAgICAgICAgaWYgKF9jbXNGb3JtYXR0ZXJJczhiaXQoKklucHV0Rm9ybWF0KSkgeworCisgICAgICAgICAgICBfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSogRGF0YSA9IChfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSopIE9idGFpbmVkQ3VydmVzIC0+RGF0YTsKKyAgICAgICAgICAgICBDdXJ2ZXMxNkRhdGEqIGMxNiA9IEN1cnZlc0FsbG9jKERlc3QgLT5Db250ZXh0SUQsIERhdGEgLT5uQ3VydmVzLCAyNTYsIERhdGEgLT5UaGVDdXJ2ZXMpOworCisgICAgICAgICAgICAgaWYgKGMxNiA9PSBOVUxMKSBnb3RvIEVycm9yOyAKKyAgICAgICAgICAgICAqZHdGbGFncyB8PSBjbXNGTEFHU19OT0NBQ0hFOworICAgICAgICAgICAgX2Ntc1BpcGVsaW5lU2V0T3B0aW1pemF0aW9uUGFyYW1ldGVycyhEZXN0LCBGYXN0RXZhbHVhdGVDdXJ2ZXM4LCBjMTYsIEN1cnZlc0ZyZWUsIEN1cnZlc0R1cCk7CisKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIERhdGEgPSAoX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqKSBjbXNTdGFnZURhdGEoT2J0YWluZWRDdXJ2ZXMpOworICAgICAgICAgICAgIEN1cnZlczE2RGF0YSogYzE2ID0gQ3VydmVzQWxsb2MoRGVzdCAtPkNvbnRleHRJRCwgRGF0YSAtPm5DdXJ2ZXMsIDY1NTM2LCBEYXRhIC0+VGhlQ3VydmVzKTsKKworICAgICAgICAgICAgIGlmIChjMTYgPT0gTlVMTCkgZ290byBFcnJvcjsgCisgICAgICAgICAgICAgKmR3RmxhZ3MgfD0gY21zRkxBR1NfTk9DQUNIRTsKKyAgICAgICAgICAgIF9jbXNQaXBlbGluZVNldE9wdGltaXphdGlvblBhcmFtZXRlcnMoRGVzdCwgRmFzdEV2YWx1YXRlQ3VydmVzMTYsIGMxNiwgQ3VydmVzRnJlZSwgQ3VydmVzRHVwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICAvLyBMVVQgb3B0aW1pemVzIHRvIG5vdGhpbmcuIFNldCB0aGUgaWRlbnRpdHkgTFVUCisgICAgICAgIGNtc1N0YWdlRnJlZShPYnRhaW5lZEN1cnZlcyk7CisKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKERlc3QsIGNtc0FUX0JFR0lOLCBjbXNTdGFnZUFsbG9jSWRlbnRpdHkoRGVzdCAtPkNvbnRleHRJRCwgU3JjIC0+SW5wdXRDaGFubmVscykpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKworICAgICAgICAqZHdGbGFncyB8PSBjbXNGTEFHU19OT0NBQ0hFOworICAgICAgICBfY21zUGlwZWxpbmVTZXRPcHRpbWl6YXRpb25QYXJhbWV0ZXJzKERlc3QsIEZhc3RJZGVudGl0eTE2LCAodm9pZCopIERlc3QsIE5VTEwsIE5VTEwpOworICAgIH0KKworICAgIC8vIFdlIGFyZSBkb25lLgorICAgIGNtc1BpcGVsaW5lRnJlZShTcmMpOworICAgICpMdXQgPSBEZXN0OworICAgIHJldHVybiBUUlVFOworCitFcnJvcjoKKworICAgIGlmIChPYnRhaW5lZEN1cnZlcyAhPSBOVUxMKSBjbXNTdGFnZUZyZWUoT2J0YWluZWRDdXJ2ZXMpOworICAgIGlmIChHYW1tYVRhYmxlcyAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoaT0wOyBpIDwgU3JjIC0+SW5wdXRDaGFubmVsczsgaSsrKSB7CisgICAgICAgICAgICBpZiAoR2FtbWFUYWJsZXNbaV0gIT0gTlVMTCkgY21zRnJlZVRvbmVDdXJ2ZShHYW1tYVRhYmxlc1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBfY21zRnJlZShTcmMgLT5Db250ZXh0SUQsIEdhbW1hVGFibGVzKTsKKyAgICB9CisKKyAgICBpZiAoRGVzdCAhPSBOVUxMKSBjbXNQaXBlbGluZUZyZWUoRGVzdCk7CisgICAgcmV0dXJuIEZBTFNFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihJbnRlbnQpOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoSW5wdXRGb3JtYXQpOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoT3V0cHV0Rm9ybWF0KTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGR3RmxhZ3MpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBMVVQgaXMgU2hhcGVyIC0gTWF0cml4IC0gTWF0cml4IC0gU2hhcGVyLCB3aGljaCBpcyB2ZXJ5IGZyZXF1ZW50IHdoZW4gY29tYmluaW5nIHR3byBtYXRyaXgtc2hhcGVyIHByb2ZpbGVzCisKKworc3RhdGljCit2b2lkICBGcmVlTWF0U2hhcGVyKGNtc0NvbnRleHQgQ29udGV4dElELCB2b2lkKiBEYXRhKQoreworICAgIGlmIChEYXRhICE9IE5VTEwpIF9jbXNGcmVlKENvbnRleHRJRCwgRGF0YSk7Cit9CisKK3N0YXRpYwordm9pZCogRHVwTWF0U2hhcGVyKGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCB2b2lkKiBEYXRhKQoreworICAgIHJldHVybiBfY21zRHVwTWVtKENvbnRleHRJRCwgRGF0YSwgc2l6ZW9mKE1hdFNoYXBlcjhEYXRhKSk7Cit9CisKKworLy8gQSBmYXN0IG1hdHJpeC1zaGFwZXIgZXZhbHVhdG9yIGZvciA4IGJpdHMuIFRoaXMgaXMgYSBiaXQgdGlja3kgc2luY2UgSSdtIHVzaW5nIDEuMTQgc2lnbmVkIGZpeGVkIHBvaW50CisvLyB0byBhY2NvbXBsaXNoIHNvbWUgcGVyZm9ybWFuY2UuIEFjdHVhbGx5IGl0IHRha2VzIDI1NngzIDE2IGJpdHMgdGFibGVzIGFuZCAxNjM4NSB4IDMgdGFibGVzIG9mIDggYml0cywKKy8vIGluIHRvdGFsIGFib3V0IDUwSywgYW5kIHRoZSBwZXJmb3JtYW5jZSBib29zdCBpcyBodWdlIQorc3RhdGljCit2b2lkIE1hdFNoYXBlckV2YWwxNihyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5bXSwKKyAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciBPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IHZvaWQqIEQpCit7CisgICAgTWF0U2hhcGVyOERhdGEqIHAgPSAoTWF0U2hhcGVyOERhdGEqKSBEOworICAgIGNtc1MxRml4ZWQxNE51bWJlciBsMSwgbDIsIGwzLCByLCBnLCBiOworICAgIGNtc1VJbnQzMk51bWJlciByaSwgZ2ksIGJpOworCisgICAgLy8gSW4gdGhpcyBjYXNlIChhbmQgb25seSBpbiB0aGlzIGNhc2UhKSB3ZSBjYW4gdXNlIHRoaXMgc2ltcGxpZmljYXRpb24gc2luY2UKKyAgICAvLyBJbltdIGlzIGFzc3VyZWQgdG8gY29tZSBmcm9tIGEgOCBiaXQgbnVtYmVyLiAoYSA8PCA4IHwgYSkKKyAgICByaSA9IEluWzBdICYgMHhGRjsKKyAgICBnaSA9IEluWzFdICYgMHhGRjsKKyAgICBiaSA9IEluWzJdICYgMHhGRjsKKworICAgIC8vIEFjcm9zcyBmaXJzdCBzaGFwZXIsIHdoaWNoIGFsc28gY29udmVydHMgdG8gMS4xNCBmaXhlZCBwb2ludAorICAgIHIgPSBwLT5TaGFwZXIxUltyaV07CisgICAgZyA9IHAtPlNoYXBlcjFHW2dpXTsKKyAgICBiID0gcC0+U2hhcGVyMUJbYmldOworCisgICAgLy8gRXZhbHVhdGUgdGhlIG1hdHJpeCBpbiAxLjE0IGZpeGVkIHBvaW50CisgICAgbDEgPSAgKHAtPk1hdFswXVswXSAqIHIgKyBwLT5NYXRbMF1bMV0gKiBnICsgcC0+TWF0WzBdWzJdICogYiArIHAtPk9mZlswXSArIDB4MjAwMCkgPj4gMTQ7CisgICAgbDIgPSAgKHAtPk1hdFsxXVswXSAqIHIgKyBwLT5NYXRbMV1bMV0gKiBnICsgcC0+TWF0WzFdWzJdICogYiArIHAtPk9mZlsxXSArIDB4MjAwMCkgPj4gMTQ7CisgICAgbDMgPSAgKHAtPk1hdFsyXVswXSAqIHIgKyBwLT5NYXRbMl1bMV0gKiBnICsgcC0+TWF0WzJdWzJdICogYiArIHAtPk9mZlsyXSArIDB4MjAwMCkgPj4gMTQ7CisKKyAgICAvLyBOb3cgd2UgaGF2ZSB0byBjbGlwIHRvIDAuLjEuMCByYW5nZQorICAgIHJpID0gKGwxIDwgMCkgPyAwIDogKChsMSA+IDE2Mzg0KSA/IDE2Mzg0IDogbDEpOworICAgIGdpID0gKGwyIDwgMCkgPyAwIDogKChsMiA+IDE2Mzg0KSA/IDE2Mzg0IDogbDIpOworICAgIGJpID0gKGwzIDwgMCkgPyAwIDogKChsMyA+IDE2Mzg0KSA/IDE2Mzg0IDogbDMpOworCisgICAgLy8gQW5kIGFjcm9zcyBzZWNvbmQgc2hhcGVyLAorICAgIE91dFswXSA9IHAtPlNoYXBlcjJSW3JpXTsKKyAgICBPdXRbMV0gPSBwLT5TaGFwZXIyR1tnaV07CisgICAgT3V0WzJdID0gcC0+U2hhcGVyMkJbYmldOworCit9CisKKy8vIFRoaXMgdGFibGUgY29udmVydHMgZnJvbSA4IGJpdHMgdG8gMS4xNCBhZnRlciBhcHBseWluZyB0aGUgY3VydmUKK3N0YXRpYwordm9pZCBGaWxsRmlyc3RTaGFwZXIoY21zUzFGaXhlZDE0TnVtYmVyKiBUYWJsZSwgY21zVG9uZUN1cnZlKiBDdXJ2ZSkKK3sKKyAgICBpbnQgaTsKKyAgICBjbXNGbG9hdDMyTnVtYmVyIFIsIHk7CisKKyAgICBmb3IgKGk9MDsgaSA8IDI1NjsgaSsrKSB7CisKKyAgICAgICAgUiAgID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChpIC8gMjU1LjApOworICAgICAgICB5ICAgPSBjbXNFdmFsVG9uZUN1cnZlRmxvYXQoQ3VydmUsIFIpOworCisgICAgICAgIFRhYmxlW2ldID0gRE9VQkxFX1RPXzFGSVhFRDE0KHkpOworICAgIH0KK30KKworLy8gVGhpcyB0YWJsZSBjb252ZXJ0cyBmb3JtIDEuMTQgKGJlaW5nIDB4NDAwMCB0aGUgbGFzdCBlbnRyeSkgdG8gOCBiaXRzIGFmdGVyIGFwcGx5aW5nIHRoZSBjdXJ2ZQorc3RhdGljCit2b2lkIEZpbGxTZWNvbmRTaGFwZXIoY21zVUludDE2TnVtYmVyKiBUYWJsZSwgY21zVG9uZUN1cnZlKiBDdXJ2ZSwgY21zQm9vbCBJczhCaXRzT3V0cHV0KQoreworICAgIGludCBpOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgUiwgVmFsOworCisgICAgZm9yIChpPTA7IGkgPCAxNjM4NTsgaSsrKSB7CisKKyAgICAgICAgUiAgID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChpIC8gMTYzODQuMCk7CisgICAgICAgIFZhbCA9IGNtc0V2YWxUb25lQ3VydmVGbG9hdChDdXJ2ZSwgUik7ICAgIC8vIFZhbCBjb21lcyAwLi4xLjAKKworICAgICAgICBpZiAoSXM4Qml0c091dHB1dCkgeworCisgICAgICAgICAgICAvLyBJZiA4IGJpdHMgb3V0cHV0LCB3ZSBjYW4gb3B0aW1pemUgZnVydGhlciBieSBjb21wdXRpbmcgdGhlIC8gMjU3IHBhcnQuCisgICAgICAgICAgICAvLyBmaXJzdCB3ZSBjb21wdXRlIHRoZSByZXN1bHRpbmcgYnl0ZSBhbmQgdGhlbiB3ZSBzdG9yZSB0aGUgYnl0ZSB0aW1lcworICAgICAgICAgICAgLy8gMjU3LiBUaGlzIHF1YW50aXphdGlvbiBhbGxvd3MgdG8gcm91bmQgdmVyeSBxdWljayBieSBkb2luZyBhID4+IDgsIGJ1dAorICAgICAgICAgICAgLy8gc2luY2UgdGhlIGxvdyBieXRlIGlzIGFsd2F5cyBlcXVhbCB0byBtc2IsIHdlIGNhbiBkbyBhICYgMHhmZiBhbmQgdGhpcyB3b3JrcyEKKyAgICAgICAgICAgIGNtc1VJbnQxNk51bWJlciB3ID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKFZhbCAqIDY1NTM1LjApOworICAgICAgICAgICAgY21zVUludDhOdW1iZXIgIGIgPSBGUk9NXzE2X1RPXzgodyk7CisKKyAgICAgICAgICAgIFRhYmxlW2ldID0gRlJPTV84X1RPXzE2KGIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgVGFibGVbaV0gID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKFZhbCAqIDY1NTM1LjApOworICAgIH0KK30KKworLy8gQ29tcHV0ZSB0aGUgbWF0cml4LXNoYXBlciBzdHJ1Y3R1cmUKK3N0YXRpYworY21zQm9vbCBTZXRNYXRTaGFwZXIoY21zUGlwZWxpbmUqIERlc3QsIGNtc1RvbmVDdXJ2ZSogQ3VydmUxWzNdLCBjbXNNQVQzKiBNYXQsIGNtc1ZFQzMqIE9mZiwgY21zVG9uZUN1cnZlKiBDdXJ2ZTJbM10sIGNtc1VJbnQzMk51bWJlciogT3V0cHV0Rm9ybWF0KQoreworICAgIE1hdFNoYXBlcjhEYXRhKiBwOworICAgIGludCBpLCBqOworICAgIGNtc0Jvb2wgSXM4Qml0cyA9IF9jbXNGb3JtYXR0ZXJJczhiaXQoKk91dHB1dEZvcm1hdCk7CisKKyAgICAvLyBBbGxvY2F0ZSBhIGJpZyBjaHVjayBvZiBtZW1vcnkgdG8gc3RvcmUgcHJlY29tcHV0ZWQgdGFibGVzCisgICAgcCA9IChNYXRTaGFwZXI4RGF0YSopIF9jbXNNYWxsb2MoRGVzdCAtPkNvbnRleHRJRCwgc2l6ZW9mKE1hdFNoYXBlcjhEYXRhKSk7CisgICAgaWYgKHAgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgcCAtPiBDb250ZXh0SUQgPSBEZXN0IC0+IENvbnRleHRJRDsKKworICAgIC8vIFByZWNvbXB1dGUgdGFibGVzCisgICAgRmlsbEZpcnN0U2hhcGVyKHAgLT5TaGFwZXIxUiwgQ3VydmUxWzBdKTsKKyAgICBGaWxsRmlyc3RTaGFwZXIocCAtPlNoYXBlcjFHLCBDdXJ2ZTFbMV0pOworICAgIEZpbGxGaXJzdFNoYXBlcihwIC0+U2hhcGVyMUIsIEN1cnZlMVsyXSk7CisKKyAgICBGaWxsU2Vjb25kU2hhcGVyKHAgLT5TaGFwZXIyUiwgQ3VydmUyWzBdLCBJczhCaXRzKTsKKyAgICBGaWxsU2Vjb25kU2hhcGVyKHAgLT5TaGFwZXIyRywgQ3VydmUyWzFdLCBJczhCaXRzKTsKKyAgICBGaWxsU2Vjb25kU2hhcGVyKHAgLT5TaGFwZXIyQiwgQ3VydmUyWzJdLCBJczhCaXRzKTsKKworICAgIC8vIENvbnZlcnQgbWF0cml4IHRvIG5GaXhlZDE0LiBOb3RlIHRoYXQgdGhvc2UgdmFsdWVzIG1heSB0YWtlIG1vcmUgdGhhbiAxNiBiaXRzIGFzCisgICAgZm9yIChpPTA7IGkgPCAzOyBpKyspIHsKKyAgICAgICAgZm9yIChqPTA7IGogPCAzOyBqKyspIHsKKyAgICAgICAgICAgIHAgLT5NYXRbaV1bal0gPSBET1VCTEVfVE9fMUZJWEVEMTQoTWF0LT52W2ldLm5bal0pOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCAzOyBpKyspIHsKKworICAgICAgICBpZiAoT2ZmID09IE5VTEwpIHsKKyAgICAgICAgICAgIHAgLT5PZmZbaV0gPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcCAtPk9mZltpXSA9IERPVUJMRV9UT18xRklYRUQxNChPZmYtPm5baV0pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTWFyayBhcyBvcHRpbWl6ZWQgZm9yIGZhc3RlciBmb3JtYXR0ZXIKKyAgICBpZiAoSXM4Qml0cykKKyAgICAgICAgKk91dHB1dEZvcm1hdCB8PSBPUFRJTUlaRURfU0goMSk7CisKKyAgICAvLyBGaWxsIGZ1bmN0aW9uIHBvaW50ZXJzCisgICAgX2Ntc1BpcGVsaW5lU2V0T3B0aW1pemF0aW9uUGFyYW1ldGVycyhEZXN0LCBNYXRTaGFwZXJFdmFsMTYsICh2b2lkKikgcCwgRnJlZU1hdFNoYXBlciwgRHVwTWF0U2hhcGVyKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gIDggYml0cyBvbiBpbnB1dCBhbGxvd3MgbWF0cml4LXNoYXBlciBib290IHVwIHRvIDI1IE1waXhlbHMgcGVyIHNlY29uZCBvbiBSR0IuIFRoYXQncyBmYXN0IQorLy8gVE9ETzogQWxsb3cgYSB0aGlyZCBtYXRyaXggZm9yIGFicy4gY29sb3JpbWV0cmljCitzdGF0aWMKK2Ntc0Jvb2wgT3B0aW1pemVNYXRyaXhTaGFwZXIoY21zUGlwZWxpbmUqKiBMdXQsIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciogSW5wdXRGb3JtYXQsIGNtc1VJbnQzMk51bWJlciogT3V0cHV0Rm9ybWF0LCBjbXNVSW50MzJOdW1iZXIqIGR3RmxhZ3MpCit7CisgICAgY21zU3RhZ2UqIEN1cnZlMSwgKkN1cnZlMjsKKyAgICBjbXNTdGFnZSogTWF0cml4MSwgKk1hdHJpeDI7CisgICAgX2Ntc1N0YWdlTWF0cml4RGF0YSogRGF0YTE7CisgICAgX2Ntc1N0YWdlTWF0cml4RGF0YSogRGF0YTI7CisgICAgY21zTUFUMyByZXM7CisgICAgY21zQm9vbCBJZGVudGl0eU1hdDsKKyAgICBjbXNQaXBlbGluZSogRGVzdCwgKlNyYzsKKworICAgIC8vIE9ubHkgd29ya3Mgb24gUkdCIHRvIFJHQgorICAgIGlmIChUX0NIQU5ORUxTKCpJbnB1dEZvcm1hdCkgIT0gMyB8fCBUX0NIQU5ORUxTKCpPdXRwdXRGb3JtYXQpICE9IDMpIHJldHVybiBGQUxTRTsKKworICAgIC8vIE9ubHkgd29ya3Mgb24gOCBiaXQgaW5wdXQKKyAgICBpZiAoIV9jbXNGb3JtYXR0ZXJJczhiaXQoKklucHV0Rm9ybWF0KSkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gU2VlbXMgc3VpdGFibGUsIHByb2NlZWQKKyAgICBTcmMgPSAqTHV0OworCisgICAgLy8gQ2hlY2sgZm9yIHNoYXBlci1tYXRyaXgtbWF0cml4LXNoYXBlciBzdHJ1Y3R1cmUsIHRoYXQgaXMgd2hhdCB0aGlzIG9wdGltaXplciBzdGFuZHMgZm9yCisgICAgaWYgKCFjbXNQaXBlbGluZUNoZWNrQW5kUmV0cmVpdmVTdGFnZXMoU3JjLCA0LAorICAgICAgICBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCBjbXNTaWdNYXRyaXhFbGVtVHlwZSwgY21zU2lnTWF0cml4RWxlbVR5cGUsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsCisgICAgICAgICZDdXJ2ZTEsICZNYXRyaXgxLCAmTWF0cml4MiwgJkN1cnZlMikpIHJldHVybiBGQUxTRTsKKworICAgIC8vIEdldCBib3RoIG1hdHJpY2VzCisgICAgRGF0YTEgPSAoX2Ntc1N0YWdlTWF0cml4RGF0YSopIGNtc1N0YWdlRGF0YShNYXRyaXgxKTsKKyAgICBEYXRhMiA9IChfY21zU3RhZ2VNYXRyaXhEYXRhKikgY21zU3RhZ2VEYXRhKE1hdHJpeDIpOworCisgICAgLy8gSW5wdXQgb2Zmc2V0IHNob3VsZCBiZSB6ZXJvCisgICAgaWYgKERhdGExIC0+T2Zmc2V0ICE9IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIC8vIE11bHRpcGx5IGJvdGggbWF0cmljZXMgdG8gZ2V0IHRoZSByZXN1bHQKKyAgICBfY21zTUFUM3BlcigmcmVzLCAoY21zTUFUMyopIERhdGEyIC0+RG91YmxlLCAoY21zTUFUMyopIERhdGExIC0+RG91YmxlKTsKKworICAgIC8vIE5vdyB0aGUgcmVzdWx0IGlzIGluIHJlcyArIERhdGEyIC0+IE9mZnNldC4gTWF5YmUgaXMgYSBwbGFpbiBpZGVudGl0eT8KKyAgICBJZGVudGl0eU1hdCA9IEZBTFNFOworICAgIGlmIChfY21zTUFUM2lzSWRlbnRpdHkoJnJlcykgJiYgRGF0YTIgLT5PZmZzZXQgPT0gTlVMTCkgeworCisgICAgICAgIC8vIFdlIGNhbiBnZXQgcmlkIG9mIGZ1bGwgbWF0cml4CisgICAgICAgIElkZW50aXR5TWF0ID0gVFJVRTsKKyAgICB9CisKKyAgICAgIC8vIEFsbG9jYXRlIGFuIGVtcHR5IExVVAorICAgIERlc3QgPSAgY21zUGlwZWxpbmVBbGxvYyhTcmMgLT5Db250ZXh0SUQsIFNyYyAtPklucHV0Q2hhbm5lbHMsIFNyYyAtPk91dHB1dENoYW5uZWxzKTsKKyAgICBpZiAoIURlc3QpIHJldHVybiBGQUxTRTsKKworICAgIC8vIEFzc2FtYmxlIHRoZSBuZXcgTFVUCisgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKERlc3QsIGNtc0FUX0JFR0lOLCBjbXNTdGFnZUR1cChDdXJ2ZTEpKSkKKyAgICAgICAgZ290byBFcnJvcjsKKworICAgIGlmICghSWRlbnRpdHlNYXQpCisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShEZXN0LCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NNYXRyaXgoRGVzdCAtPkNvbnRleHRJRCwgMywgMywgKGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIqKSAmcmVzLCBEYXRhMiAtPk9mZnNldCkpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoRGVzdCwgY21zQVRfRU5ELCBjbXNTdGFnZUR1cChDdXJ2ZTIpKSkKKyAgICAgICAgZ290byBFcnJvcjsKKworICAgIC8vIElmIGlkZW50aXR5IG9uIG1hdHJpeCwgd2UgY2FuIGZ1cnRoZXIgb3B0aW1pemUgdGhlIGN1cnZlcywgc28gY2FsbCB0aGUgam9pbiBjdXJ2ZXMgcm91dGluZQorICAgIGlmIChJZGVudGl0eU1hdCkgeworCisgICAgICAgIE9wdGltaXplQnlKb2luaW5nQ3VydmVzKCZEZXN0LCBJbnRlbnQsIElucHV0Rm9ybWF0LCBPdXRwdXRGb3JtYXQsIGR3RmxhZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIG1wZUMxID0gKF9jbXNTdGFnZVRvbmVDdXJ2ZXNEYXRhKikgY21zU3RhZ2VEYXRhKEN1cnZlMSk7CisgICAgICAgIF9jbXNTdGFnZVRvbmVDdXJ2ZXNEYXRhKiBtcGVDMiA9IChfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSopIGNtc1N0YWdlRGF0YShDdXJ2ZTIpOworCisgICAgICAgIC8vIEluIHRoaXMgcGFydGljdWxhciBvcHRpbWl6YXRpb24sIGNhY2g/ZG9lcyBub3QgaGVscCBhcyBpdCB0YWtlcyBtb3JlIHRpbWUgdG8gZGVhbCB3aXRoCisgICAgICAgIC8vIHRoZSBjYWNoP3RoYXQgd2l0aCB0aGUgcGl4ZWwgaGFuZGxpbmcKKyAgICAgICAgKmR3RmxhZ3MgfD0gY21zRkxBR1NfTk9DQUNIRTsKKworICAgICAgICAvLyBTZXR1cCB0aGUgb3B0aW1pemFyaW9uIHJvdXRpbmVzCisgICAgICAgIFNldE1hdFNoYXBlcihEZXN0LCBtcGVDMSAtPlRoZUN1cnZlcywgJnJlcywgKGNtc1ZFQzMqKSBEYXRhMiAtPk9mZnNldCwgbXBlQzItPlRoZUN1cnZlcywgT3V0cHV0Rm9ybWF0KTsKKyAgICB9CisKKyAgICBjbXNQaXBlbGluZUZyZWUoU3JjKTsKKyAgICAqTHV0ID0gRGVzdDsKKyAgICByZXR1cm4gVFJVRTsKK0Vycm9yOgorICAgIC8vIExlYXZlIFNyYyB1bmNoYW5nZWQKKyAgICBjbXNQaXBlbGluZUZyZWUoRGVzdCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIE9wdGltaXphdGlvbiBwbHVnLWlucworCisvLyBMaXN0IG9mIG9wdGltaXphdGlvbnMKK3R5cGVkZWYgc3RydWN0IF9jbXNPcHRpbWl6YXRpb25Db2xsZWN0aW9uX3N0IHsKKworICAgIF9jbXNPUFRvcHRpbWl6ZUZuICBPcHRpbWl6ZVB0cjsKKworICAgIHN0cnVjdCBfY21zT3B0aW1pemF0aW9uQ29sbGVjdGlvbl9zdCAqTmV4dDsKKworfSBfY21zT3B0aW1pemF0aW9uQ29sbGVjdGlvbjsKKworCisvLyBUaGUgYnVpbHQtaW4gbGlzdC4gV2UgY3VycmVudGx5IGltcGxlbWVudCA0IHR5cGVzIG9mIG9wdGltaXphdGlvbnMuIEpvaW5pbmcgb2YgY3VydmVzLCBtYXRyaXgtc2hhcGVyLCBsaW5lYXJpemF0aW9uIGFuZCByZXNhbXBsaW5nCitzdGF0aWMgX2Ntc09wdGltaXphdGlvbkNvbGxlY3Rpb24gRGVmYXVsdE9wdGltaXphdGlvbltdID0geworCisgICAgeyBPcHRpbWl6ZUJ5Sm9pbmluZ0N1cnZlcywgICAgICAgICAgICAmRGVmYXVsdE9wdGltaXphdGlvblsxXSB9LAorICAgIHsgT3B0aW1pemVNYXRyaXhTaGFwZXIsICAgICAgICAgICAgICAgJkRlZmF1bHRPcHRpbWl6YXRpb25bMl0gfSwKKyAgICB7IE9wdGltaXplQnlDb21wdXRpbmdMaW5lYXJpemF0aW9uLCAgICZEZWZhdWx0T3B0aW1pemF0aW9uWzNdIH0sCisgICAgeyBPcHRpbWl6ZUJ5UmVzYW1wbGluZywgICAgICAgICAgICAgICBOVUxMIH0KK307CisKKy8vIFRoZSBsaW5rZWQgbGlzdCBoZWFkCitfY21zT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmtUeXBlIF9jbXNPcHRpbWl6YXRpb25QbHVnaW5DaHVuayA9IHsgTlVMTCB9OworCisKKy8vIER1cGxpY2F0ZXMgdGhlIHpvbmUgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIHBsdWctaW4gaW4gdGhlIG5ldyBjb250ZXh0CitzdGF0aWMKK3ZvaWQgRHVwUGx1Z2luT3B0aW1pemF0aW9uTGlzdChzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYykKK3sKKyAgIF9jbXNPcHRpbWl6YXRpb25QbHVnaW5DaHVua1R5cGUgbmV3SGVhZCA9IHsgTlVMTCB9OworICAgX2Ntc09wdGltaXphdGlvbkNvbGxlY3Rpb24qICBlbnRyeTsKKyAgIF9jbXNPcHRpbWl6YXRpb25Db2xsZWN0aW9uKiAgQW50ZXJpb3IgPSBOVUxMOworICAgX2Ntc09wdGltaXphdGlvblBsdWdpbkNodW5rVHlwZSogaGVhZCA9IChfY21zT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmtUeXBlKikgc3JjLT5jaHVua3NbT3B0aW1pemF0aW9uUGx1Z2luXTsKKworICAgIF9jbXNBc3NlcnQoY3R4ICE9IE5VTEwpOworICAgIF9jbXNBc3NlcnQoaGVhZCAhPSBOVUxMKTsKKworICAgIC8vIFdhbGsgdGhlIGxpc3QgY29weWluZyBhbGwgbm9kZXMKKyAgIGZvciAoZW50cnkgPSBoZWFkLT5PcHRpbWl6YXRpb25Db2xsZWN0aW9uOworICAgICAgICBlbnRyeSAhPSBOVUxMOworICAgICAgICBlbnRyeSA9IGVudHJ5IC0+TmV4dCkgeworCisgICAgICAgICAgICBfY21zT3B0aW1pemF0aW9uQ29sbGVjdGlvbiAqbmV3RW50cnkgPSAoIF9jbXNPcHRpbWl6YXRpb25Db2xsZWN0aW9uICopIF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCBlbnRyeSwgc2l6ZW9mKF9jbXNPcHRpbWl6YXRpb25Db2xsZWN0aW9uKSk7CisgICAKKyAgICAgICAgICAgIGlmIChuZXdFbnRyeSA9PSBOVUxMKSAKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8ga2VlcCB0aGUgbGlua2VkIGxpc3Qgb3JkZXIsIHNvIHRoaXMgaXMgYSBsaXR0bGUgYml0IHRyaWNreQorICAgICAgICAgICAgbmV3RW50cnkgLT4gTmV4dCA9IE5VTEw7CisgICAgICAgICAgICBpZiAoQW50ZXJpb3IpCisgICAgICAgICAgICAgICAgQW50ZXJpb3IgLT4gTmV4dCA9IG5ld0VudHJ5OworICAgICAKKyAgICAgICAgICAgIEFudGVyaW9yID0gbmV3RW50cnk7CisKKyAgICAgICAgICAgIGlmIChuZXdIZWFkLk9wdGltaXphdGlvbkNvbGxlY3Rpb24gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBuZXdIZWFkLk9wdGltaXphdGlvbkNvbGxlY3Rpb24gPSBuZXdFbnRyeTsKKyAgICB9CisKKyAgY3R4IC0+Y2h1bmtzW09wdGltaXphdGlvblBsdWdpbl0gPSBfY21zU3ViQWxsb2NEdXAoY3R4LT5NZW1Qb29sLCAmbmV3SGVhZCwgc2l6ZW9mKF9jbXNPcHRpbWl6YXRpb25QbHVnaW5DaHVua1R5cGUpKTsKK30KKwordm9pZCAgX2Ntc0FsbG9jT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKQoreworICBpZiAoc3JjICE9IE5VTEwpIHsKKworICAgICAgICAvLyBDb3B5IGFsbCBsaW5rZWQgbGlzdAorICAgICAgIER1cFBsdWdpbk9wdGltaXphdGlvbkxpc3QoY3R4LCBzcmMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhdGljIF9jbXNPcHRpbWl6YXRpb25QbHVnaW5DaHVua1R5cGUgT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmtUeXBlID0geyBOVUxMIH07CisgICAgICAgIGN0eCAtPmNodW5rc1tPcHRpbWl6YXRpb25QbHVnaW5dID0gX2Ntc1N1YkFsbG9jRHVwKGN0eCAtPk1lbVBvb2wsICZPcHRpbWl6YXRpb25QbHVnaW5DaHVua1R5cGUsIHNpemVvZihfY21zT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmtUeXBlKSk7CisgICAgfQorfQorCisKKy8vIFJlZ2lzdGVyIG5ldyB3YXlzIHRvIG9wdGltaXplCitjbXNCb29sICBfY21zUmVnaXN0ZXJPcHRpbWl6YXRpb25QbHVnaW4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BsdWdpbkJhc2UqIERhdGEpCit7CisgICAgY21zUGx1Z2luT3B0aW1pemF0aW9uKiBQbHVnaW4gPSAoY21zUGx1Z2luT3B0aW1pemF0aW9uKikgRGF0YTsKKyAgICBfY21zT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmtUeXBlKiBjdHggPSAoIF9jbXNPcHRpbWl6YXRpb25QbHVnaW5DaHVua1R5cGUqKSBfY21zQ29udGV4dEdldENsaWVudENodW5rKENvbnRleHRJRCwgT3B0aW1pemF0aW9uUGx1Z2luKTsKKyAgICBfY21zT3B0aW1pemF0aW9uQ29sbGVjdGlvbiogZmw7CisKKyAgICBpZiAoRGF0YSA9PSBOVUxMKSB7CisKKyAgICAgICAgY3R4LT5PcHRpbWl6YXRpb25Db2xsZWN0aW9uID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgLy8gT3B0aW1pemVyIGNhbGxiYWNrIGlzIHJlcXVpcmVkCisgICAgaWYgKFBsdWdpbiAtPk9wdGltaXplUHRyID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIGZsID0gKF9jbXNPcHRpbWl6YXRpb25Db2xsZWN0aW9uKikgX2Ntc1BsdWdpbk1hbGxvYyhDb250ZXh0SUQsIHNpemVvZihfY21zT3B0aW1pemF0aW9uQ29sbGVjdGlvbikpOworICAgIGlmIChmbCA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBDb3B5IHRoZSBwYXJhbWV0ZXJzCisgICAgZmwgLT5PcHRpbWl6ZVB0ciA9IFBsdWdpbiAtPk9wdGltaXplUHRyOworCisgICAgLy8gS2VlcCBsaW5rZWQgbGlzdAorICAgIGZsIC0+TmV4dCA9IGN0eC0+T3B0aW1pemF0aW9uQ29sbGVjdGlvbjsKKworICAgIC8vIFNldCB0aGUgaGVhZAorICAgIGN0eCAtPk9wdGltaXphdGlvbkNvbGxlY3Rpb24gPSBmbDsKKworICAgIC8vIEFsbCBpcyBvaworICAgIHJldHVybiBUUlVFOworfQorCisvLyBUaGUgZW50cnkgcG9pbnQgZm9yIExVVCBvcHRpbWl6YXRpb24KK2Ntc0Jvb2wgX2Ntc09wdGltaXplUGlwZWxpbmUoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1BpcGVsaW5lKiogICAgUHRyTHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgIEludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyKiBJbnB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyKiBPdXRwdXRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciogZHdGbGFncykKK3sKKyAgICBfY21zT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmtUeXBlKiBjdHggPSAoIF9jbXNPcHRpbWl6YXRpb25QbHVnaW5DaHVua1R5cGUqKSBfY21zQ29udGV4dEdldENsaWVudENodW5rKENvbnRleHRJRCwgT3B0aW1pemF0aW9uUGx1Z2luKTsKKyAgICBfY21zT3B0aW1pemF0aW9uQ29sbGVjdGlvbiogT3B0czsKKyAgICBjbXNCb29sIEFueVN1Y2Nlc3MgPSBGQUxTRTsKKworICAgIC8vIEEgQ0xVVCBpcyBiZWluZyBhc2tlZCwgc28gZm9yY2UgdGhpcyBzcGVjaWZpYyBvcHRpbWl6YXRpb24KKyAgICBpZiAoKmR3RmxhZ3MgJiBjbXNGTEFHU19GT1JDRV9DTFVUKSB7CisKKyAgICAgICAgUHJlT3B0aW1pemUoKlB0ckx1dCk7CisgICAgICAgIHJldHVybiBPcHRpbWl6ZUJ5UmVzYW1wbGluZyhQdHJMdXQsIEludGVudCwgSW5wdXRGb3JtYXQsIE91dHB1dEZvcm1hdCwgZHdGbGFncyk7CisgICAgfQorCisgICAgLy8gQW55dGhpbmcgdG8gb3B0aW1pemU/CisgICAgaWYgKCgqUHRyTHV0KSAtPkVsZW1lbnRzID09IE5VTEwpIHsKKyAgICAgICAgX2Ntc1BpcGVsaW5lU2V0T3B0aW1pemF0aW9uUGFyYW1ldGVycygqUHRyTHV0LCBGYXN0SWRlbnRpdHkxNiwgKHZvaWQqKSAqUHRyTHV0LCBOVUxMLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgLy8gVHJ5IHRvIGdldCByaWQgb2YgaWRlbnRpdGllcyBhbmQgdHJpdmlhbCBjb252ZXJzaW9ucy4KKyAgICBBbnlTdWNjZXNzID0gUHJlT3B0aW1pemUoKlB0ckx1dCk7CisKKyAgICAvLyBBZnRlciByZW1vdmFsIGRvIHdlIGVuZCB3aXRoIGFuIGlkZW50aXR5PworICAgIGlmICgoKlB0ckx1dCkgLT5FbGVtZW50cyA9PSBOVUxMKSB7CisgICAgICAgIF9jbXNQaXBlbGluZVNldE9wdGltaXphdGlvblBhcmFtZXRlcnMoKlB0ckx1dCwgRmFzdElkZW50aXR5MTYsICh2b2lkKikgKlB0ckx1dCwgTlVMTCwgTlVMTCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIC8vIERvIG5vdCBvcHRpbWl6ZSwga2VlcCBhbGwgcHJlY2lzaW9uCisgICAgaWYgKCpkd0ZsYWdzICYgY21zRkxBR1NfTk9PUFRJTUlaRSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgLy8gVHJ5IHBsdWctaW4gb3B0aW1pemF0aW9ucyAKKyAgICBmb3IgKE9wdHMgPSBjdHgtPk9wdGltaXphdGlvbkNvbGxlY3Rpb247CisgICAgICAgICBPcHRzICE9IE5VTEw7CisgICAgICAgICBPcHRzID0gT3B0cyAtPk5leHQpIHsKKworICAgICAgICAgICAgLy8gSWYgb25lIHNjaGVtYSBzdWNjZWVkZWQsIHdlIGFyZSBkb25lCisgICAgICAgICAgICBpZiAoT3B0cyAtPk9wdGltaXplUHRyKFB0ckx1dCwgSW50ZW50LCBJbnB1dEZvcm1hdCwgT3V0cHV0Rm9ybWF0LCBkd0ZsYWdzKSkgeworCisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7ICAgIC8vIE9wdGltaXplZCEKKyAgICAgICAgICAgIH0KKyAgICB9CisKKyAgIC8vIFRyeSBidWlsdC1pbiBvcHRpbWl6YXRpb25zIAorICAgIGZvciAoT3B0cyA9IERlZmF1bHRPcHRpbWl6YXRpb247CisgICAgICAgICBPcHRzICE9IE5VTEw7CisgICAgICAgICBPcHRzID0gT3B0cyAtPk5leHQpIHsKKworICAgICAgICAgICAgaWYgKE9wdHMgLT5PcHRpbWl6ZVB0cihQdHJMdXQsIEludGVudCwgSW5wdXRGb3JtYXQsIE91dHB1dEZvcm1hdCwgZHdGbGFncykpIHsKKworICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOyAgCisgICAgICAgICAgICB9CisgICAgfQorCisgICAgLy8gT25seSBzaW1wbGUgb3B0aW1pemF0aW9ucyBzdWNjZWVkZWQKKyAgICByZXR1cm4gQW55U3VjY2VzczsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNwYWNrLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zcGFjay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMjNiNTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zcGFjay5jCkBAIC0wLDAgKzEsMzM2OSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworI2luY2x1ZGUgImxjbXMyX2ludGVybmFsLmgiCisKKy8vIFRoaXMgbW9kdWxlIGhhbmRsZXMgYWxsIGZvcm1hdHMgc3VwcG9ydGVkIGJ5IGxjbXMuIFRoZXJlIGFyZSB0d28gZmxhdm9ycywgMTYgYml0cyBhbmQKKy8vIGZsb2F0aW5nIHBvaW50LiBGbG9hdGluZyBwb2ludCBpcyBzdXBwb3J0ZWQgb25seSBpbiBhIHN1YnNldCwgdGhvc2UgZm9ybWF0cyBob2xkaW5nCisvLyBjbXNGbG9hdDMyTnVtYmVyICg0IGJ5dGVzIHBlciBjb21wb25lbnQpIGFuZCBkb3VibGUgKG1hcmtlZCBhcyAwIGJ5dGVzIHBlciBjb21wb25lbnQKKy8vIGFzIHNwZWNpYWwgY2FzZSkKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLy8gVGhpcyBtYWNybyByZXR1cm4gd29yZHMgc3RvcmVkIGFzIGJpZyBlbmRpYW4KKyNkZWZpbmUgQ0hBTkdFX0VORElBTih3KSAgICAoY21zVUludDE2TnVtYmVyKSAoKGNtc1VJbnQxNk51bWJlcikgKCh3KTw8OCl8KCh3KT4+OCkpCisKKy8vIFRoZXNlIG1hY3JvcyBoYW5kbGVzIHJldmVyc2luZyAobmVnYXRpdmUpCisjZGVmaW5lIFJFVkVSU0VfRkxBVk9SXzgoeCkgICAgICgoY21zVUludDhOdW1iZXIpICgweGZmLSh4KSkpCisjZGVmaW5lIFJFVkVSU0VfRkxBVk9SXzE2KHgpICAgICgoY21zVUludDE2TnVtYmVyKSgweGZmZmYtKHgpKSkKKworLy8gKiAweGZmZmYgLyAweGZmMDAgPSAoMjU1ICogMjU3KSAvICgyNTUgKiAyNTYpID0gMjU3IC8gMjU2CitjbXNJTkxJTkUgY21zVUludDE2TnVtYmVyIEZvbUxhYlYyVG9MYWJWNChjbXNVSW50MTZOdW1iZXIgeCkKK3sKKyAgICBpbnQgYSA9ICh4IDw8IDggfCB4KSA+PiA4OyAgLy8gKiAyNTcgLyAyNTYKKyAgICBpZiAoIGEgPiAweGZmZmYpIHJldHVybiAweGZmZmY7CisgICAgcmV0dXJuIChjbXNVSW50MTZOdW1iZXIpIGE7Cit9CisKKy8vICogMHhmMDAgLyAweGZmZmYgPSAqIDI1NiAvIDI1NworY21zSU5MSU5FIGNtc1VJbnQxNk51bWJlciBGb21MYWJWNFRvTGFiVjIoY21zVUludDE2TnVtYmVyIHgpCit7CisgICAgcmV0dXJuIChjbXNVSW50MTZOdW1iZXIpICgoKHggPDwgOCkgKyAweDgwKSAvIDI1Nyk7Cit9CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNtc1VJbnQzMk51bWJlciBUeXBlOworICAgIGNtc1VJbnQzMk51bWJlciBNYXNrOworICAgIGNtc0Zvcm1hdHRlcjE2ICBGcm07CisKK30gY21zRm9ybWF0dGVyczE2OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zVUludDMyTnVtYmVyICAgIFR5cGU7CisgICAgY21zVUludDMyTnVtYmVyICAgIE1hc2s7CisgICAgY21zRm9ybWF0dGVyRmxvYXQgIEZybTsKKworfSBjbXNGb3JtYXR0ZXJzRmxvYXQ7CisKKworI2RlZmluZSBBTllTUEFDRSAgICAgICAgQ09MT1JTUEFDRV9TSCgzMSkKKyNkZWZpbmUgQU5ZQ0hBTk5FTFMgICAgIENIQU5ORUxTX1NIKDE1KQorI2RlZmluZSBBTllFWFRSQSAgICAgICAgRVhUUkFfU0goNykKKyNkZWZpbmUgQU5ZUExBTkFSICAgICAgIFBMQU5BUl9TSCgxKQorI2RlZmluZSBBTllFTkRJQU4gICAgICAgRU5ESUFOMTZfU0goMSkKKyNkZWZpbmUgQU5ZU1dBUCAgICAgICAgIERPU1dBUF9TSCgxKQorI2RlZmluZSBBTllTV0FQRklSU1QgICAgU1dBUEZJUlNUX1NIKDEpCisjZGVmaW5lIEFOWUZMQVZPUiAgICAgICBGTEFWT1JfU0goMSkKKworCisvLyBTdXByZXNzIHdhbmluZyBhYm91dCBpbmZvIG5ldmVyIGJlaW5nIHVzZWQKKworI2lmZGVmIF9NU0NfVkVSCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxMDApCisjZW5kaWYKKworLy8gVW5wYWNraW5nIHJvdXRpbmVzICgxNiBiaXRzKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLy8gRG9lcyBhbG1vc3QgZXZlcnl0aGluZyBidXQgaXMgc2xvdworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsQ2h1bmt5Qnl0ZXMocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgaW50IG5DaGFuICAgICAgPSBUX0NIQU5ORUxTKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGludCBEb1N3YXAgICAgID0gVF9ET1NXQVAoaW5mbyAtPklucHV0Rm9ybWF0KTsKKyAgICBpbnQgUmV2ZXJzZSAgICA9IFRfRkxBVk9SKGluZm8gLT5JbnB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBGaXJzdCAgPSBUX1NXQVBGSVJTVChpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBpbnQgRXh0cmEgICAgICA9IFRfRVhUUkEoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhRmlyc3QgPSBEb1N3YXAgXiBTd2FwRmlyc3Q7CisgICAgY21zVUludDE2TnVtYmVyIHY7CisgICAgaW50IGk7CisKKyAgICBpZiAoRXh0cmFGaXJzdCkgeworICAgICAgICBhY2N1bSArPSBFeHRyYTsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IG5DaGFuOyBpKyspIHsKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKworICAgICAgICB2ID0gRlJPTV84X1RPXzE2KCphY2N1bSk7CisgICAgICAgIHYgPSBSZXZlcnNlID8gUkVWRVJTRV9GTEFWT1JfMTYodikgOiB2OworICAgICAgICB3SW5baW5kZXhdID0gdjsKKyAgICAgICAgYWNjdW0rKzsKKyAgICB9CisKKyAgICBpZiAoIUV4dHJhRmlyc3QpIHsKKyAgICAgICAgYWNjdW0gKz0gRXh0cmE7CisgICAgfQorCisgICAgaWYgKEV4dHJhID09IDAgJiYgU3dhcEZpcnN0KSB7CisgICAgICAgIGNtc1VJbnQxNk51bWJlciB0bXAgPSB3SW5bMF07CisKKyAgICAgICAgbWVtbW92ZSgmd0luWzBdLCAmd0luWzFdLCAobkNoYW4tMSkgKiBzaXplb2YoY21zVUludDE2TnVtYmVyKSk7CisgICAgICAgIHdJbltuQ2hhbi0xXSA9IHRtcDsKKyAgICB9CisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKKworfQorCisvLyBFeHRyYSBjaGFubmVscyBhcmUganVzdCBpZ25vcmVkIGJlY2F1c2UgY29tZSBpbiB0aGUgbmV4dCBwbGFuZXMKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbFBsYW5hckJ5dGVzKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGludCBuQ2hhbiAgICAgPSBUX0NIQU5ORUxTKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGludCBEb1N3YXAgICAgPSBUX0RPU1dBUChpbmZvIC0+SW5wdXRGb3JtYXQpOworICAgIGludCBTd2FwRmlyc3QgPSBUX1NXQVBGSVJTVChpbmZvIC0+SW5wdXRGb3JtYXQpOworICAgIGludCBSZXZlcnNlICAgPSBUX0ZMQVZPUihpbmZvIC0+SW5wdXRGb3JtYXQpOworICAgIGludCBpOworICAgIGNtc1VJbnQ4TnVtYmVyKiBJbml0ID0gYWNjdW07CisKKyAgICBpZiAoRG9Td2FwIF4gU3dhcEZpcnN0KSB7CisgICAgICAgIGFjY3VtICs9IFRfRVhUUkEoaW5mbyAtPiBJbnB1dEZvcm1hdCkgKiBTdHJpZGU7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKyAgICAgICAgY21zVUludDE2TnVtYmVyIHYgPSBGUk9NXzhfVE9fMTYoKmFjY3VtKTsKKworICAgICAgICB3SW5baW5kZXhdID0gUmV2ZXJzZSA/IFJFVkVSU0VfRkxBVk9SXzE2KHYpIDogdjsKKyAgICAgICAgYWNjdW0gKz0gU3RyaWRlOworICAgIH0KKworICAgIHJldHVybiAoSW5pdCArIDEpOworfQorCisvLyBTcGVjaWFsIGNhc2VzLCBwcm92aWRlZCBmb3IgcGVyZm9ybWFuY2UKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDRCeXRlcyhyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICB3SW5bMF0gPSBGUk9NXzhfVE9fMTYoKmFjY3VtKTsgYWNjdW0rKzsgLy8gQworICAgIHdJblsxXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAvLyBNCisgICAgd0luWzJdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7IC8vIFkKKyAgICB3SW5bM10gPSBGUk9NXzhfVE9fMTYoKmFjY3VtKTsgYWNjdW0rKzsgLy8gSworCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDRCeXRlc1JldmVyc2UocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzBdID0gRlJPTV84X1RPXzE2KFJFVkVSU0VfRkxBVk9SXzgoKmFjY3VtKSk7IGFjY3VtKys7IC8vIEMKKyAgICB3SW5bMV0gPSBGUk9NXzhfVE9fMTYoUkVWRVJTRV9GTEFWT1JfOCgqYWNjdW0pKTsgYWNjdW0rKzsgLy8gTQorICAgIHdJblsyXSA9IEZST01fOF9UT18xNihSRVZFUlNFX0ZMQVZPUl84KCphY2N1bSkpOyBhY2N1bSsrOyAvLyBZCisgICAgd0luWzNdID0gRlJPTV84X1RPXzE2KFJFVkVSU0VfRkxBVk9SXzgoKmFjY3VtKSk7IGFjY3VtKys7IC8vIEsKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGw0Qnl0ZXNTd2FwRmlyc3QocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzNdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7IC8vIEsKKyAgICB3SW5bMF0gPSBGUk9NXzhfVE9fMTYoKmFjY3VtKTsgYWNjdW0rKzsgLy8gQworICAgIHdJblsxXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAvLyBNCisgICAgd0luWzJdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7IC8vIFkKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisvLyBLWU1DCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGw0Qnl0ZXNTd2FwKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHdJblszXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgLy8gSworICAgIHdJblsyXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgLy8gWQorICAgIHdJblsxXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgLy8gTQorICAgIHdJblswXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgLy8gQworCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDRCeXRlc1N3YXBTd2FwRmlyc3QocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzJdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7ICAvLyBLCisgICAgd0luWzFdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7ICAvLyBZCisgICAgd0luWzBdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7ICAvLyBNCisgICAgd0luWzNdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7ICAvLyBDCisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsM0J5dGVzKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHdJblswXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgICAgLy8gUgorICAgIHdJblsxXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgICAgLy8gRworICAgIHdJblsyXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgICAgLy8gQgorCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDNCeXRlc1NraXAxU3dhcChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBhY2N1bSsrOyAvLyBBCisgICAgd0luWzJdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7IC8vIEIKKyAgICB3SW5bMV0gPSBGUk9NXzhfVE9fMTYoKmFjY3VtKTsgYWNjdW0rKzsgLy8gRworICAgIHdJblswXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAvLyBSCisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsM0J5dGVzU2tpcDFTd2FwU3dhcEZpcnN0KHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzJdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7IC8vIEIKKyAgICB3SW5bMV0gPSBGUk9NXzhfVE9fMTYoKmFjY3VtKTsgYWNjdW0rKzsgLy8gRworICAgIHdJblswXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAvLyBSCisgICAgYWNjdW0rKzsgLy8gQQorCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDNCeXRlc1NraXAxU3dhcEZpcnN0KHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgYWNjdW0rKzsgLy8gQQorICAgIHdJblswXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAvLyBSCisgICAgd0luWzFdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7IC8vIEcKKyAgICB3SW5bMl0gPSBGUk9NXzhfVE9fMTYoKmFjY3VtKTsgYWNjdW0rKzsgLy8gQgorCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKKworLy8gQlJHCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGwzQnl0ZXNTd2FwKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHdJblsyXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgICAgLy8gQgorICAgIHdJblsxXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgICAgLy8gRworICAgIHdJblswXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgICAgLy8gUgorCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbExhYlYyXzgocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzBdID0gRm9tTGFiVjJUb0xhYlY0KEZST01fOF9UT18xNigqYWNjdW0pKTsgYWNjdW0rKzsgICAgIC8vIEwKKyAgICB3SW5bMV0gPSBGb21MYWJWMlRvTGFiVjQoRlJPTV84X1RPXzE2KCphY2N1bSkpOyBhY2N1bSsrOyAgICAgLy8gYQorICAgIHdJblsyXSA9IEZvbUxhYlYyVG9MYWJWNChGUk9NXzhfVE9fMTYoKmFjY3VtKSk7IGFjY3VtKys7ICAgICAvLyBiCisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsQUxhYlYyXzgocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgYWNjdW0rKzsgIC8vIEEKKyAgICB3SW5bMF0gPSBGb21MYWJWMlRvTGFiVjQoRlJPTV84X1RPXzE2KCphY2N1bSkpOyBhY2N1bSsrOyAgICAgLy8gTAorICAgIHdJblsxXSA9IEZvbUxhYlYyVG9MYWJWNChGUk9NXzhfVE9fMTYoKmFjY3VtKSk7IGFjY3VtKys7ICAgICAvLyBhCisgICAgd0luWzJdID0gRm9tTGFiVjJUb0xhYlY0KEZST01fOF9UT18xNigqYWNjdW0pKTsgYWNjdW0rKzsgICAgIC8vIGIKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGxMYWJWMl8xNihyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICB3SW5bMF0gPSBGb21MYWJWMlRvTGFiVjQoKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bSk7IGFjY3VtICs9IDI7ICAgICAvLyBMCisgICAgd0luWzFdID0gRm9tTGFiVjJUb0xhYlY0KCooY21zVUludDE2TnVtYmVyKikgYWNjdW0pOyBhY2N1bSArPSAyOyAgICAgLy8gYQorICAgIHdJblsyXSA9IEZvbUxhYlYyVG9MYWJWNCgqKGNtc1VJbnQxNk51bWJlciopIGFjY3VtKTsgYWNjdW0gKz0gMjsgICAgIC8vIGIKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisvLyBmb3IgZHVwbGV4CitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGwyQnl0ZXMocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzBdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7ICAgICAvLyBjaDEKKyAgICB3SW5bMV0gPSBGUk9NXzhfVE9fMTYoKmFjY3VtKTsgYWNjdW0rKzsgICAgIC8vIGNoMgorCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKKworCisKKy8vIE1vbm9jaHJvbWUgZHVwbGljYXRlcyBMIGludG8gUkdCIGZvciBudWxsLXRyYW5zZm9ybXMKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDFCeXRlKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHdJblswXSA9IHdJblsxXSA9IHdJblsyXSA9IEZST01fOF9UT18xNigqYWNjdW0pOyBhY2N1bSsrOyAgICAgLy8gTAorCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsMUJ5dGVTa2lwMShyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICB3SW5bMF0gPSB3SW5bMV0gPSB3SW5bMl0gPSBGUk9NXzhfVE9fMTYoKmFjY3VtKTsgYWNjdW0rKzsgICAgIC8vIEwKKyAgICBhY2N1bSArPSAxOworCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDFCeXRlU2tpcDIocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzBdID0gd0luWzFdID0gd0luWzJdID0gRlJPTV84X1RPXzE2KCphY2N1bSk7IGFjY3VtKys7ICAgICAvLyBMCisgICAgYWNjdW0gKz0gMjsKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGwxQnl0ZVJldmVyc2VkKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHdJblswXSA9IHdJblsxXSA9IHdJblsyXSA9IFJFVkVSU0VfRkxBVk9SXzE2KEZST01fOF9UT18xNigqYWNjdW0pKTsgYWNjdW0rKzsgICAgIC8vIEwKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbEFueVdvcmRzKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGludCBuQ2hhbiAgICAgICA9IFRfQ0hBTk5FTFMoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBFbmRpYW4gID0gVF9FTkRJQU4xNihpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBpbnQgRG9Td2FwICAgICAgPSBUX0RPU1dBUChpbmZvIC0+SW5wdXRGb3JtYXQpOworICAgIGludCBSZXZlcnNlICAgICA9IFRfRkxBVk9SKGluZm8gLT5JbnB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBGaXJzdCAgID0gVF9TV0FQRklSU1QoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhICAgICAgID0gVF9FWFRSQShpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBpbnQgRXh0cmFGaXJzdCAgPSBEb1N3YXAgXiBTd2FwRmlyc3Q7CisgICAgaW50IGk7CisKKyAgICBpZiAoRXh0cmFGaXJzdCkgeworICAgICAgICBhY2N1bSArPSBFeHRyYSAqIHNpemVvZihjbXNVSW50MTZOdW1iZXIpOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgbkNoYW47IGkrKykgeworCisgICAgICAgIGludCBpbmRleCA9IERvU3dhcCA/IChuQ2hhbiAtIGkgLSAxKSA6IGk7CisgICAgICAgIGNtc1VJbnQxNk51bWJlciB2ID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsKKworICAgICAgICBpZiAoU3dhcEVuZGlhbikKKyAgICAgICAgICAgIHYgPSBDSEFOR0VfRU5ESUFOKHYpOworCisgICAgICAgIHdJbltpbmRleF0gPSBSZXZlcnNlID8gUkVWRVJTRV9GTEFWT1JfMTYodikgOiB2OworCisgICAgICAgIGFjY3VtICs9IHNpemVvZihjbXNVSW50MTZOdW1iZXIpOworICAgIH0KKworICAgIGlmICghRXh0cmFGaXJzdCkgeworICAgICAgICBhY2N1bSArPSBFeHRyYSAqIHNpemVvZihjbXNVSW50MTZOdW1iZXIpOworICAgIH0KKworICAgIGlmIChFeHRyYSA9PSAwICYmIFN3YXBGaXJzdCkgeworCisgICAgICAgIGNtc1VJbnQxNk51bWJlciB0bXAgPSB3SW5bMF07CisKKyAgICAgICAgbWVtbW92ZSgmd0luWzBdLCAmd0luWzFdLCAobkNoYW4tMSkgKiBzaXplb2YoY21zVUludDE2TnVtYmVyKSk7CisgICAgICAgIHdJbltuQ2hhbi0xXSA9IHRtcDsKKyAgICB9CisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbFBsYW5hcldvcmRzKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGludCBuQ2hhbiA9IFRfQ0hBTk5FTFMoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IERvU3dhcD0gVF9ET1NXQVAoaW5mbyAtPklucHV0Rm9ybWF0KTsKKyAgICBpbnQgUmV2ZXJzZT0gVF9GTEFWT1IoaW5mbyAtPklucHV0Rm9ybWF0KTsKKyAgICBpbnQgU3dhcEVuZGlhbiA9IFRfRU5ESUFOMTYoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IGk7CisgICAgY21zVUludDhOdW1iZXIqIEluaXQgPSBhY2N1bTsKKworICAgIGlmIChEb1N3YXApIHsKKyAgICAgICAgYWNjdW0gKz0gVF9FWFRSQShpbmZvIC0+IElucHV0Rm9ybWF0KSAqIFN0cmlkZSAqIHNpemVvZihjbXNVSW50MTZOdW1iZXIpOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgbkNoYW47IGkrKykgeworCisgICAgICAgIGludCBpbmRleCA9IERvU3dhcCA/IChuQ2hhbiAtIGkgLSAxKSA6IGk7CisgICAgICAgIGNtc1VJbnQxNk51bWJlciB2ID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsKKworICAgICAgICBpZiAoU3dhcEVuZGlhbikKKyAgICAgICAgICAgIHYgPSBDSEFOR0VfRU5ESUFOKHYpOworCisgICAgICAgIHdJbltpbmRleF0gPSBSZXZlcnNlID8gUkVWRVJTRV9GTEFWT1JfMTYodikgOiB2OworCisgICAgICAgIGFjY3VtICs9ICBTdHJpZGUgKiBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gKEluaXQgKyBzaXplb2YoY21zVUludDE2TnVtYmVyKSk7Cit9CisKKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsNFdvcmRzKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHdJblswXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgLy8gQworICAgIHdJblsxXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgLy8gTQorICAgIHdJblsyXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgLy8gWQorICAgIHdJblszXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgLy8gSworCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDRXb3Jkc1JldmVyc2UocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzBdID0gUkVWRVJTRV9GTEFWT1JfMTYoKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bSk7IGFjY3VtKz0gMjsgLy8gQworICAgIHdJblsxXSA9IFJFVkVSU0VfRkxBVk9SXzE2KCooY21zVUludDE2TnVtYmVyKikgYWNjdW0pOyBhY2N1bSs9IDI7IC8vIE0KKyAgICB3SW5bMl0gPSBSRVZFUlNFX0ZMQVZPUl8xNigqKGNtc1VJbnQxNk51bWJlciopIGFjY3VtKTsgYWNjdW0rPSAyOyAvLyBZCisgICAgd0luWzNdID0gUkVWRVJTRV9GTEFWT1JfMTYoKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bSk7IGFjY3VtKz0gMjsgLy8gSworCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDRXb3Jkc1N3YXBGaXJzdChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICB3SW5bM10gPSAqKGNtc1VJbnQxNk51bWJlciopIGFjY3VtOyBhY2N1bSs9IDI7IC8vIEsKKyAgICB3SW5bMF0gPSAqKGNtc1VJbnQxNk51bWJlciopIGFjY3VtOyBhY2N1bSs9IDI7IC8vIEMKKyAgICB3SW5bMV0gPSAqKGNtc1VJbnQxNk51bWJlciopIGFjY3VtOyBhY2N1bSs9IDI7IC8vIE0KKyAgICB3SW5bMl0gPSAqKGNtc1VJbnQxNk51bWJlciopIGFjY3VtOyBhY2N1bSs9IDI7IC8vIFkKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisvLyBLWU1DCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGw0V29yZHNTd2FwKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHdJblszXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgLy8gSworICAgIHdJblsyXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgLy8gWQorICAgIHdJblsxXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgLy8gTQorICAgIHdJblswXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgLy8gQworCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDRXb3Jkc1N3YXBTd2FwRmlyc3QocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzJdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0rPSAyOyAvLyBLCisgICAgd0luWzFdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0rPSAyOyAvLyBZCisgICAgd0luWzBdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0rPSAyOyAvLyBNCisgICAgd0luWzNdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0rPSAyOyAvLyBDCisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsM1dvcmRzKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHdJblswXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgIC8vIEMgUgorICAgIHdJblsxXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgIC8vIE0gRworICAgIHdJblsyXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtKz0gMjsgIC8vIFkgQgorCisgICAgcmV0dXJuIGFjY3VtOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbDNXb3Jkc1N3YXAocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzJdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0rPSAyOyAgLy8gQyBSCisgICAgd0luWzFdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0rPSAyOyAgLy8gTSBHCisgICAgd0luWzBdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0rPSAyOyAgLy8gWSBCCisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsM1dvcmRzU2tpcDFTd2FwKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGFjY3VtICs9IDI7IC8vIEEKKyAgICB3SW5bMl0gPSAqKGNtc1VJbnQxNk51bWJlciopIGFjY3VtOyBhY2N1bSArPSAyOyAvLyBSCisgICAgd0luWzFdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0gKz0gMjsgLy8gRworICAgIHdJblswXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtICs9IDI7IC8vIEIKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGwzV29yZHNTa2lwMVN3YXBGaXJzdChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBhY2N1bSArPSAyOyAvLyBBCisgICAgd0luWzBdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0gKz0gMjsgLy8gUgorICAgIHdJblsxXSA9ICooY21zVUludDE2TnVtYmVyKikgYWNjdW07IGFjY3VtICs9IDI7IC8vIEcKKyAgICB3SW5bMl0gPSAqKGNtc1VJbnQxNk51bWJlciopIGFjY3VtOyBhY2N1bSArPSAyOyAvLyBCCisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsMVdvcmQocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzBdID0gd0luWzFdID0gd0luWzJdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0rPSAyOyAgIC8vIEwKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGwxV29yZFJldmVyc2VkKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHdJblswXSA9IHdJblsxXSA9IHdJblsyXSA9IFJFVkVSU0VfRkxBVk9SXzE2KCooY21zVUludDE2TnVtYmVyKikgYWNjdW0pOyBhY2N1bSs9IDI7CisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsMVdvcmRTa2lwMyhyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICB3SW5bMF0gPSB3SW5bMV0gPSB3SW5bMl0gPSAqKGNtc1VJbnQxNk51bWJlciopIGFjY3VtOworCisgICAgYWNjdW0gKz0gODsKKworICAgIHJldHVybiBhY2N1bTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGwyV29yZHMocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgd0luWzBdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0gKz0gMjsgICAgLy8gY2gxCisgICAgd0luWzFdID0gKihjbXNVSW50MTZOdW1iZXIqKSBhY2N1bTsgYWNjdW0gKz0gMjsgICAgLy8gY2gyCisKKyAgICByZXR1cm4gYWNjdW07CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworCisvLyBUaGlzIGlzIGEgY29udmVyc2lvbiBvZiBMYWIgZG91YmxlIHRvIDE2IGJpdHMKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbExhYkRvdWJsZVRvMTYocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciAgU3RyaWRlKQoreworICAgIGlmIChUX1BMQU5BUihpbmZvIC0+IElucHV0Rm9ybWF0KSkgeworCisgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIqIFB0ID0gKGNtc0Zsb2F0NjROdW1iZXIqKSBhY2N1bTsKKworICAgICAgICBjbXNDSUVMYWIgTGFiOworCisgICAgICAgIExhYi5MID0gUHRbMF07CisgICAgICAgIExhYi5hID0gUHRbU3RyaWRlXTsKKyAgICAgICAgTGFiLmIgPSBQdFtTdHJpZGUqMl07CisKKyAgICAgICAgY21zRmxvYXQyTGFiRW5jb2RlZCh3SW4sICZMYWIpOworICAgICAgICByZXR1cm4gYWNjdW0gKyBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIGNtc0Zsb2F0MkxhYkVuY29kZWQod0luLCAoY21zQ0lFTGFiKikgYWNjdW0pOworICAgICAgICBhY2N1bSArPSBzaXplb2YoY21zQ0lFTGFiKSArIFRfRVhUUkEoaW5mbyAtPklucHV0Rm9ybWF0KSAqIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIGFjY3VtOworICAgIH0KK30KKworCisvLyBUaGlzIGlzIGEgY29udmVyc2lvbiBvZiBMYWIgZmxvYXQgdG8gMTYgYml0cworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsTGFiRmxvYXRUbzE2KHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgIFN0cmlkZSkKK3sKKyAgICBjbXNDSUVMYWIgTGFiOworICAgIAorICAgIGlmIChUX1BMQU5BUihpbmZvIC0+IElucHV0Rm9ybWF0KSkgeworCisgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIqIFB0ID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBhY2N1bTsKKworICAgICAKKyAgICAgICAgTGFiLkwgPSBQdFswXTsKKyAgICAgICAgTGFiLmEgPSBQdFtTdHJpZGVdOworICAgICAgICBMYWIuYiA9IFB0W1N0cmlkZSoyXTsKKworICAgICAgICBjbXNGbG9hdDJMYWJFbmNvZGVkKHdJbiwgJkxhYik7CisgICAgICAgIHJldHVybiBhY2N1bSArIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKTsKKyAgICB9CisgICAgZWxzZSB7CisgCisgICAgICAgIExhYi5MID0gKChjbXNGbG9hdDMyTnVtYmVyKikgYWNjdW0pWzBdOworICAgICAgICBMYWIuYSA9ICgoY21zRmxvYXQzMk51bWJlciopIGFjY3VtKVsxXTsKKyAgICAgICAgTGFiLmIgPSAoKGNtc0Zsb2F0MzJOdW1iZXIqKSBhY2N1bSlbMl07CisKKyAgICAgICAgY21zRmxvYXQyTGFiRW5jb2RlZCh3SW4sICZMYWIpOworICAgICAgICBhY2N1bSArPSAoMyArIFRfRVhUUkEoaW5mbyAtPklucHV0Rm9ybWF0KSkgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisgICAgICAgIHJldHVybiBhY2N1bTsKKyAgICB9Cit9CisKKy8vIFRoaXMgaXMgYSBjb252ZXJzaW9uIG9mIFhZWiBkb3VibGUgdG8gMTYgYml0cworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsWFlaRG91YmxlVG8xNihyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBJbnB1dEZvcm1hdCkpIHsKKworICAgICAgICBjbXNGbG9hdDY0TnVtYmVyKiBQdCA9IChjbXNGbG9hdDY0TnVtYmVyKikgYWNjdW07CisgICAgICAgIGNtc0NJRVhZWiBYWVo7CisKKyAgICAgICAgWFlaLlggPSBQdFswXTsKKyAgICAgICAgWFlaLlkgPSBQdFtTdHJpZGVdOworICAgICAgICBYWVouWiA9IFB0W1N0cmlkZSoyXTsKKyAgICAgICAgY21zRmxvYXQyWFlaRW5jb2RlZCh3SW4sICZYWVopOworCisgICAgICAgIHJldHVybiBhY2N1bSArIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKTsKKworICAgIH0KKworICAgIGVsc2UgeworICAgICAgICBjbXNGbG9hdDJYWVpFbmNvZGVkKHdJbiwgKGNtc0NJRVhZWiopIGFjY3VtKTsKKyAgICAgICAgYWNjdW0gKz0gc2l6ZW9mKGNtc0NJRVhZWikgKyBUX0VYVFJBKGluZm8gLT5JbnB1dEZvcm1hdCkgKiBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7CisKKyAgICAgICAgcmV0dXJuIGFjY3VtOworICAgIH0KK30KKworLy8gVGhpcyBpcyBhIGNvbnZlcnNpb24gb2YgWFlaIGZsb2F0IHRvIDE2IGJpdHMKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbFhZWkZsb2F0VG8xNihyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBJbnB1dEZvcm1hdCkpIHsKKworICAgICAgICBjbXNGbG9hdDMyTnVtYmVyKiBQdCA9IChjbXNGbG9hdDMyTnVtYmVyKikgYWNjdW07CisgICAgICAgIGNtc0NJRVhZWiBYWVo7CisKKyAgICAgICAgWFlaLlggPSBQdFswXTsKKyAgICAgICAgWFlaLlkgPSBQdFtTdHJpZGVdOworICAgICAgICBYWVouWiA9IFB0W1N0cmlkZSoyXTsKKyAgICAgICAgY21zRmxvYXQyWFlaRW5jb2RlZCh3SW4sICZYWVopOworCisgICAgICAgIHJldHVybiBhY2N1bSArIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKTsKKworICAgIH0KKworICAgIGVsc2UgeworICAgICAgICBjbXNGbG9hdDMyTnVtYmVyKiBQdCA9IChjbXNGbG9hdDMyTnVtYmVyKikgYWNjdW07CisgICAgICAgIGNtc0NJRVhZWiBYWVo7CisKKyAgICAgICAgWFlaLlggPSBQdFswXTsKKyAgICAgICAgWFlaLlkgPSBQdFsxXTsKKyAgICAgICAgWFlaLlogPSBQdFsyXTsKKyAgICAgICAgY21zRmxvYXQyWFlaRW5jb2RlZCh3SW4sICZYWVopOworCisgICAgICAgIGFjY3VtICs9IDMgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcikgKyBUX0VYVFJBKGluZm8gLT5JbnB1dEZvcm1hdCkgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisKKyAgICAgICAgcmV0dXJuIGFjY3VtOworICAgIH0KK30KKworLy8gQ2hlY2sgaWYgc3BhY2UgaXMgbWFya2VkIGFzIGluaworY21zSU5MSU5FIGNtc0Jvb2wgSXNJbmtTcGFjZShjbXNVSW50MzJOdW1iZXIgVHlwZSkKK3sKKyAgICBzd2l0Y2ggKFRfQ09MT1JTUEFDRShUeXBlKSkgeworCisgICAgIGNhc2UgUFRfQ01ZOgorICAgICBjYXNlIFBUX0NNWUs6CisgICAgIGNhc2UgUFRfTUNINToKKyAgICAgY2FzZSBQVF9NQ0g2OgorICAgICBjYXNlIFBUX01DSDc6CisgICAgIGNhc2UgUFRfTUNIODoKKyAgICAgY2FzZSBQVF9NQ0g5OgorICAgICBjYXNlIFBUX01DSDEwOgorICAgICBjYXNlIFBUX01DSDExOgorICAgICBjYXNlIFBUX01DSDEyOgorICAgICBjYXNlIFBUX01DSDEzOgorICAgICBjYXNlIFBUX01DSDE0OgorICAgICBjYXNlIFBUX01DSDE1OiByZXR1cm4gVFJVRTsKKworICAgICBkZWZhdWx0OiByZXR1cm4gRkFMU0U7CisgICAgfQorfQorCisvLyBJbmtzIGRvZXMgY29tZSBpbiBwZXJjZW50YWdlLCByZW1haW5pbmcgY2FzZXMgYXJlIGJldHdlZW4gMC4uMS4wLCBhZ2FpbiB0byAxNiBiaXRzCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGxEb3VibGVUbzE2KHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworCisgICAgaW50IG5DaGFuICAgICAgPSBUX0NIQU5ORUxTKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGludCBEb1N3YXAgICAgID0gVF9ET1NXQVAoaW5mbyAtPklucHV0Rm9ybWF0KTsKKyAgICBpbnQgUmV2ZXJzZSAgICA9IFRfRkxBVk9SKGluZm8gLT5JbnB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBGaXJzdCAgPSBUX1NXQVBGSVJTVChpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBpbnQgRXh0cmEgICAgICA9IFRfRVhUUkEoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhRmlyc3QgPSBEb1N3YXAgXiBTd2FwRmlyc3Q7CisgICAgaW50IFBsYW5hciAgICAgPSBUX1BMQU5BUihpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHY7CisgICAgY21zVUludDE2TnVtYmVyICB2aTsKKyAgICBpbnQgaSwgc3RhcnQgPSAwOworICAgY21zRmxvYXQ2NE51bWJlciBtYXhpbXVtID0gSXNJbmtTcGFjZShpbmZvIC0+SW5wdXRGb3JtYXQpID8gNjU1LjM1IDogNjU1MzUuMDsKKworCisgICAgaWYgKEV4dHJhRmlyc3QpCisgICAgICAgICAgICBzdGFydCA9IEV4dHJhOworCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKworICAgICAgICBpZiAoUGxhbmFyKQorICAgICAgICAgICAgdiA9IChjbXNGbG9hdDMyTnVtYmVyKSAoKGNtc0Zsb2F0NjROdW1iZXIqKSBhY2N1bSlbKGkgKyBzdGFydCkgKiBTdHJpZGVdOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2ID0gKGNtc0Zsb2F0MzJOdW1iZXIpICgoY21zRmxvYXQ2NE51bWJlciopIGFjY3VtKVtpICsgc3RhcnRdOworCisgICAgICAgIHZpID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKHYgKiBtYXhpbXVtKTsKKworICAgICAgICBpZiAoUmV2ZXJzZSkKKyAgICAgICAgICAgIHZpID0gUkVWRVJTRV9GTEFWT1JfMTYodmkpOworCisgICAgICAgIHdJbltpbmRleF0gPSB2aTsKKyAgICB9CisKKworICAgIGlmIChFeHRyYSA9PSAwICYmIFN3YXBGaXJzdCkgeworICAgICAgICBjbXNVSW50MTZOdW1iZXIgdG1wID0gd0luWzBdOworCisgICAgICAgIG1lbW1vdmUoJndJblswXSwgJndJblsxXSwgKG5DaGFuLTEpICogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikpOworICAgICAgICB3SW5bbkNoYW4tMV0gPSB0bXA7CisgICAgfQorCisgICAgaWYgKFRfUExBTkFSKGluZm8gLT4gSW5wdXRGb3JtYXQpKQorICAgICAgICByZXR1cm4gYWNjdW0gKyBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gYWNjdW0gKyAobkNoYW4gKyBFeHRyYSkgKiBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7Cit9CisKKworCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGxGbG9hdFRvMTYocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisKKyAgICBpbnQgbkNoYW4gICAgICA9IFRfQ0hBTk5FTFMoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IERvU3dhcCAgICAgPSBUX0RPU1dBUChpbmZvIC0+SW5wdXRGb3JtYXQpOworICAgIGludCBSZXZlcnNlICAgID0gVF9GTEFWT1IoaW5mbyAtPklucHV0Rm9ybWF0KTsKKyAgICBpbnQgU3dhcEZpcnN0ICA9IFRfU1dBUEZJUlNUKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGludCBFeHRyYSAgICAgID0gVF9FWFRSQShpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBpbnQgRXh0cmFGaXJzdCA9IERvU3dhcCBeIFN3YXBGaXJzdDsKKyAgICBpbnQgUGxhbmFyICAgICA9IFRfUExBTkFSKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgdjsKKyAgICBjbXNVSW50MTZOdW1iZXIgIHZpOworICAgIGludCBpLCBzdGFydCA9IDA7CisgICBjbXNGbG9hdDY0TnVtYmVyIG1heGltdW0gPSBJc0lua1NwYWNlKGluZm8gLT5JbnB1dEZvcm1hdCkgPyA2NTUuMzUgOiA2NTUzNS4wOworCisKKyAgICBpZiAoRXh0cmFGaXJzdCkKKyAgICAgICAgICAgIHN0YXJ0ID0gRXh0cmE7CisKKyAgICBmb3IgKGk9MDsgaSA8IG5DaGFuOyBpKyspIHsKKworICAgICAgICBpbnQgaW5kZXggPSBEb1N3YXAgPyAobkNoYW4gLSBpIC0gMSkgOiBpOworCisgICAgICAgIGlmIChQbGFuYXIpCisgICAgICAgICAgICB2ID0gKGNtc0Zsb2F0MzJOdW1iZXIpICgoY21zRmxvYXQzMk51bWJlciopIGFjY3VtKVsoaSArIHN0YXJ0KSAqIFN0cmlkZV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHYgPSAoY21zRmxvYXQzMk51bWJlcikgKChjbXNGbG9hdDMyTnVtYmVyKikgYWNjdW0pW2kgKyBzdGFydF07CisKKyAgICAgICAgdmkgPSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQodiAqIG1heGltdW0pOworCisgICAgICAgIGlmIChSZXZlcnNlKQorICAgICAgICAgICAgdmkgPSBSRVZFUlNFX0ZMQVZPUl8xNih2aSk7CisKKyAgICAgICAgd0luW2luZGV4XSA9IHZpOworICAgIH0KKworCisgICAgaWYgKEV4dHJhID09IDAgJiYgU3dhcEZpcnN0KSB7CisgICAgICAgIGNtc1VJbnQxNk51bWJlciB0bXAgPSB3SW5bMF07CisKKyAgICAgICAgbWVtbW92ZSgmd0luWzBdLCAmd0luWzFdLCAobkNoYW4tMSkgKiBzaXplb2YoY21zVUludDE2TnVtYmVyKSk7CisgICAgICAgIHdJbltuQ2hhbi0xXSA9IHRtcDsKKyAgICB9CisKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBJbnB1dEZvcm1hdCkpCisgICAgICAgIHJldHVybiBhY2N1bSArIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBhY2N1bSArIChuQ2hhbiArIEV4dHJhKSAqIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKTsKK30KKworCisKKworLy8gRm9yIDEgY2hhbm5lbCwgd2UgbmVlZCB0byBkdXBsaWNhdGUgZGF0YSAoaXQgY29tZXMgaW4gMC4uMS4wIHJhbmdlKQorc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsRG91YmxlMUNoYW4ocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciogSW5rcyA9IChjbXNGbG9hdDY0TnVtYmVyKikgYWNjdW07CisKKyAgICB3SW5bMF0gPSB3SW5bMV0gPSB3SW5bMl0gPSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoSW5rc1swXSAqIDY1NTM1LjApOworCisgICAgcmV0dXJuIGFjY3VtICsgc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBGb3IgYW55dGhpbmcgZ29pbmcgZnJvbSBjbXNGbG9hdDMyTnVtYmVyCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBVbnJvbGxGbG9hdHNUb0Zsb2F0KF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKworICAgIGludCBuQ2hhbiAgICAgID0gVF9DSEFOTkVMUyhpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBpbnQgRG9Td2FwICAgICA9IFRfRE9TV0FQKGluZm8gLT5JbnB1dEZvcm1hdCk7CisgICAgaW50IFJldmVyc2UgICAgPSBUX0ZMQVZPUihpbmZvIC0+SW5wdXRGb3JtYXQpOworICAgIGludCBTd2FwRmlyc3QgID0gVF9TV0FQRklSU1QoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhICAgICAgPSBUX0VYVFJBKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGludCBFeHRyYUZpcnN0ID0gRG9Td2FwIF4gU3dhcEZpcnN0OworICAgIGludCBQbGFuYXIgICAgID0gVF9QTEFOQVIoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgY21zRmxvYXQzMk51bWJlciB2OworICAgIGludCBpLCBzdGFydCA9IDA7CisgICAgY21zRmxvYXQzMk51bWJlciBtYXhpbXVtID0gSXNJbmtTcGFjZShpbmZvIC0+SW5wdXRGb3JtYXQpID8gMTAwLjBGIDogMS4wRjsKKworCisgICAgaWYgKEV4dHJhRmlyc3QpCisgICAgICAgICAgICBzdGFydCA9IEV4dHJhOworCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKworICAgICAgICBpZiAoUGxhbmFyKQorICAgICAgICAgICAgdiA9IChjbXNGbG9hdDMyTnVtYmVyKSAoKGNtc0Zsb2F0MzJOdW1iZXIqKSBhY2N1bSlbKGkgKyBzdGFydCkgKiBTdHJpZGVdOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2ID0gKGNtc0Zsb2F0MzJOdW1iZXIpICgoY21zRmxvYXQzMk51bWJlciopIGFjY3VtKVtpICsgc3RhcnRdOworCisgICAgICAgIHYgLz0gbWF4aW11bTsKKworICAgICAgICB3SW5baW5kZXhdID0gUmV2ZXJzZSA/IDEgLSB2IDogdjsKKyAgICB9CisKKworICAgIGlmIChFeHRyYSA9PSAwICYmIFN3YXBGaXJzdCkgeworICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHRtcCA9IHdJblswXTsKKworICAgICAgICBtZW1tb3ZlKCZ3SW5bMF0sICZ3SW5bMV0sIChuQ2hhbi0xKSAqIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKSk7CisgICAgICAgIHdJbltuQ2hhbi0xXSA9IHRtcDsKKyAgICB9CisKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBJbnB1dEZvcm1hdCkpCisgICAgICAgIHJldHVybiBhY2N1bSArIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBhY2N1bSArIChuQ2hhbiArIEV4dHJhKSAqIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKTsKK30KKworLy8gRm9yIGFueXRoaW5nIGdvaW5nIGZyb20gZG91YmxlCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbERvdWJsZXNUb0Zsb2F0KF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKworICAgIGludCBuQ2hhbiAgICAgID0gVF9DSEFOTkVMUyhpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBpbnQgRG9Td2FwICAgICA9IFRfRE9TV0FQKGluZm8gLT5JbnB1dEZvcm1hdCk7CisgICAgaW50IFJldmVyc2UgICAgPSBUX0ZMQVZPUihpbmZvIC0+SW5wdXRGb3JtYXQpOworICAgIGludCBTd2FwRmlyc3QgID0gVF9TV0FQRklSU1QoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhICAgICAgPSBUX0VYVFJBKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGludCBFeHRyYUZpcnN0ID0gRG9Td2FwIF4gU3dhcEZpcnN0OworICAgIGludCBQbGFuYXIgICAgID0gVF9QTEFOQVIoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgY21zRmxvYXQ2NE51bWJlciB2OworICAgIGludCBpLCBzdGFydCA9IDA7CisgICAgY21zRmxvYXQ2NE51bWJlciBtYXhpbXVtID0gSXNJbmtTcGFjZShpbmZvIC0+SW5wdXRGb3JtYXQpID8gMTAwLjAgOiAxLjA7CisKKworICAgIGlmIChFeHRyYUZpcnN0KQorICAgICAgICAgICAgc3RhcnQgPSBFeHRyYTsKKworICAgIGZvciAoaT0wOyBpIDwgbkNoYW47IGkrKykgeworCisgICAgICAgIGludCBpbmRleCA9IERvU3dhcCA/IChuQ2hhbiAtIGkgLSAxKSA6IGk7CisKKyAgICAgICAgaWYgKFBsYW5hcikKKyAgICAgICAgICAgIHYgPSAoY21zRmxvYXQ2NE51bWJlcikgKChjbXNGbG9hdDY0TnVtYmVyKikgYWNjdW0pWyhpICsgc3RhcnQpICAqIFN0cmlkZV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHYgPSAoY21zRmxvYXQ2NE51bWJlcikgKChjbXNGbG9hdDY0TnVtYmVyKikgYWNjdW0pW2kgKyBzdGFydF07CisKKyAgICAgICAgdiAvPSBtYXhpbXVtOworCisgICAgICAgIHdJbltpbmRleF0gPSAoY21zRmxvYXQzMk51bWJlcikgKFJldmVyc2UgPyAxLjAgLSB2IDogdik7CisgICAgfQorCisKKyAgICBpZiAoRXh0cmEgPT0gMCAmJiBTd2FwRmlyc3QpIHsKKyAgICAgICAgY21zRmxvYXQzMk51bWJlciB0bXAgPSB3SW5bMF07CisKKyAgICAgICAgbWVtbW92ZSgmd0luWzBdLCAmd0luWzFdLCAobkNoYW4tMSkgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcikpOworICAgICAgICB3SW5bbkNoYW4tMV0gPSB0bXA7CisgICAgfQorCisgICAgaWYgKFRfUExBTkFSKGluZm8gLT4gSW5wdXRGb3JtYXQpKQorICAgICAgICByZXR1cm4gYWNjdW0gKyBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gYWNjdW0gKyAobkNoYW4gKyBFeHRyYSkgKiBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7Cit9CisKKworCisvLyBGcm9tIExhYiBkb3VibGUgdG8gY21zRmxvYXQzMk51bWJlcgorc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsTGFiRG91YmxlVG9GbG9hdChfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciogUHQgPSAoY21zRmxvYXQ2NE51bWJlciopIGFjY3VtOworCisgICAgaWYgKFRfUExBTkFSKGluZm8gLT4gSW5wdXRGb3JtYXQpKSB7CisKKyAgICAgICAgd0luWzBdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChQdFswXSAvIDEwMC4wKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSAwLi4xMDAgdG8gMC4uMQorICAgICAgICB3SW5bMV0gPSAoY21zRmxvYXQzMk51bWJlcikgKChQdFtTdHJpZGVdICsgMTI4KSAvIDI1NS4wKTsgICAgLy8gZm9ybSAtMTI4Li4rMTI3IHRvIDAuLjEKKyAgICAgICAgd0luWzJdID0gKGNtc0Zsb2F0MzJOdW1iZXIpICgoUHRbU3RyaWRlKjJdICsgMTI4KSAvIDI1NS4wKTsKKworICAgICAgICByZXR1cm4gYWNjdW0gKyBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIHdJblswXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoUHRbMF0gLyAxMDAuMCk7ICAgICAgICAgICAgLy8gZnJvbSAwLi4xMDAgdG8gMC4uMQorICAgICAgICB3SW5bMV0gPSAoY21zRmxvYXQzMk51bWJlcikgKChQdFsxXSArIDEyOCkgLyAyNTUuMCk7ICAgIC8vIGZvcm0gLTEyOC4uKzEyNyB0byAwLi4xCisgICAgICAgIHdJblsyXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoKFB0WzJdICsgMTI4KSAvIDI1NS4wKTsKKworICAgICAgICBhY2N1bSArPSBzaXplb2YoY21zRmxvYXQ2NE51bWJlcikqKDMgKyBUX0VYVFJBKGluZm8gLT5JbnB1dEZvcm1hdCkpOworICAgICAgICByZXR1cm4gYWNjdW07CisgICAgfQorfQorCisvLyBGcm9tIExhYiBkb3VibGUgdG8gY21zRmxvYXQzMk51bWJlcgorc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsTGFiRmxvYXRUb0Zsb2F0KF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBjbXNGbG9hdDMyTnVtYmVyKiBQdCA9IChjbXNGbG9hdDMyTnVtYmVyKikgYWNjdW07CisKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBJbnB1dEZvcm1hdCkpIHsKKworICAgICAgICB3SW5bMF0gPSAoY21zRmxvYXQzMk51bWJlcikgKFB0WzBdIC8gMTAwLjApOyAgICAgICAgICAgICAgICAgLy8gZnJvbSAwLi4xMDAgdG8gMC4uMQorICAgICAgICB3SW5bMV0gPSAoY21zRmxvYXQzMk51bWJlcikgKChQdFtTdHJpZGVdICsgMTI4KSAvIDI1NS4wKTsgICAgLy8gZm9ybSAtMTI4Li4rMTI3IHRvIDAuLjEKKyAgICAgICAgd0luWzJdID0gKGNtc0Zsb2F0MzJOdW1iZXIpICgoUHRbU3RyaWRlKjJdICsgMTI4KSAvIDI1NS4wKTsKKworICAgICAgICByZXR1cm4gYWNjdW0gKyBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIHdJblswXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoUHRbMF0gLyAxMDAuMCk7ICAgICAgICAgICAgLy8gZnJvbSAwLi4xMDAgdG8gMC4uMQorICAgICAgICB3SW5bMV0gPSAoY21zRmxvYXQzMk51bWJlcikgKChQdFsxXSArIDEyOCkgLyAyNTUuMCk7ICAgIC8vIGZvcm0gLTEyOC4uKzEyNyB0byAwLi4xCisgICAgICAgIHdJblsyXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoKFB0WzJdICsgMTI4KSAvIDI1NS4wKTsKKworICAgICAgICBhY2N1bSArPSBzaXplb2YoY21zRmxvYXQzMk51bWJlcikqKDMgKyBUX0VYVFJBKGluZm8gLT5JbnB1dEZvcm1hdCkpOworICAgICAgICByZXR1cm4gYWNjdW07CisgICAgfQorfQorCisKKworLy8gMS4xNSBmaXhlZCBwb2ludCwgdGhhdCBtZWFucyBtYXhpbXVtIHZhbHVlIGlzIE1BWF9FTkNPREVBQkxFX1hZWiAoMHhGRkZGKQorc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsWFlaRG91YmxlVG9GbG9hdChfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciogUHQgPSAoY21zRmxvYXQ2NE51bWJlciopIGFjY3VtOworCisgICAgaWYgKFRfUExBTkFSKGluZm8gLT4gSW5wdXRGb3JtYXQpKSB7CisKKyAgICAgICAgd0luWzBdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChQdFswXSAvIE1BWF9FTkNPREVBQkxFX1hZWik7CisgICAgICAgIHdJblsxXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoUHRbU3RyaWRlXSAvIE1BWF9FTkNPREVBQkxFX1hZWik7CisgICAgICAgIHdJblsyXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoUHRbU3RyaWRlKjJdIC8gTUFYX0VOQ09ERUFCTEVfWFlaKTsKKworICAgICAgICByZXR1cm4gYWNjdW0gKyBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIHdJblswXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoUHRbMF0gLyBNQVhfRU5DT0RFQUJMRV9YWVopOworICAgICAgICB3SW5bMV0gPSAoY21zRmxvYXQzMk51bWJlcikgKFB0WzFdIC8gTUFYX0VOQ09ERUFCTEVfWFlaKTsKKyAgICAgICAgd0luWzJdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChQdFsyXSAvIE1BWF9FTkNPREVBQkxFX1hZWik7CisKKyAgICAgICAgYWNjdW0gKz0gc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpKigzICsgVF9FWFRSQShpbmZvIC0+SW5wdXRGb3JtYXQpKTsKKyAgICAgICAgcmV0dXJuIGFjY3VtOworICAgIH0KK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsWFlaRmxvYXRUb0Zsb2F0KF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgd0luW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBjbXNGbG9hdDMyTnVtYmVyKiBQdCA9IChjbXNGbG9hdDMyTnVtYmVyKikgYWNjdW07CisKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBJbnB1dEZvcm1hdCkpIHsKKworICAgICAgICB3SW5bMF0gPSAoY21zRmxvYXQzMk51bWJlcikgKFB0WzBdIC8gTUFYX0VOQ09ERUFCTEVfWFlaKTsKKyAgICAgICAgd0luWzFdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChQdFtTdHJpZGVdIC8gTUFYX0VOQ09ERUFCTEVfWFlaKTsKKyAgICAgICAgd0luWzJdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChQdFtTdHJpZGUqMl0gLyBNQVhfRU5DT0RFQUJMRV9YWVopOworCisgICAgICAgIHJldHVybiBhY2N1bSArIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKTsKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgICAgd0luWzBdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIChQdFswXSAvIE1BWF9FTkNPREVBQkxFX1hZWik7CisgICAgICAgIHdJblsxXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAoUHRbMV0gLyBNQVhfRU5DT0RFQUJMRV9YWVopOworICAgICAgICB3SW5bMl0gPSAoY21zRmxvYXQzMk51bWJlcikgKFB0WzJdIC8gTUFYX0VOQ09ERUFCTEVfWFlaKTsKKworICAgICAgICBhY2N1bSArPSBzaXplb2YoY21zRmxvYXQzMk51bWJlcikqKDMgKyBUX0VYVFJBKGluZm8gLT5JbnB1dEZvcm1hdCkpOworICAgICAgICByZXR1cm4gYWNjdW07CisgICAgfQorfQorCisKKworLy8gUGFja2luZyByb3V0aW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKy8vIEdlbmVyaWMgY2h1bmt5IGZvciBieXRlCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tBbnlCeXRlcyhyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGludCBuQ2hhbiAgICAgID0gVF9DSEFOTkVMUyhpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IERvU3dhcCAgICAgPSBUX0RPU1dBUChpbmZvIC0+T3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgUmV2ZXJzZSAgICA9IFRfRkxBVk9SKGluZm8gLT5PdXRwdXRGb3JtYXQpOworICAgIGludCBFeHRyYSAgICAgID0gVF9FWFRSQShpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBGaXJzdCAgPSBUX1NXQVBGSVJTVChpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhRmlyc3QgPSBEb1N3YXAgXiBTd2FwRmlyc3Q7CisgICAgY21zVUludDhOdW1iZXIqIHN3YXAxOworICAgIGNtc1VJbnQ4TnVtYmVyIHYgPSAwOworICAgIGludCBpOworCisgICAgc3dhcDEgPSBvdXRwdXQ7CisKKyAgICBpZiAoRXh0cmFGaXJzdCkgeworICAgICAgICBvdXRwdXQgKz0gRXh0cmE7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKworICAgICAgICB2ID0gRlJPTV8xNl9UT184KHdPdXRbaW5kZXhdKTsKKworICAgICAgICBpZiAoUmV2ZXJzZSkKKyAgICAgICAgICAgIHYgPSBSRVZFUlNFX0ZMQVZPUl84KHYpOworCisgICAgICAgICpvdXRwdXQrKyA9IHY7CisgICAgfQorCisgICAgaWYgKCFFeHRyYUZpcnN0KSB7CisgICAgICAgIG91dHB1dCArPSBFeHRyYTsKKyAgICB9CisKKyAgICBpZiAoRXh0cmEgPT0gMCAmJiBTd2FwRmlyc3QpIHsKKworICAgICAgICBtZW1tb3ZlKHN3YXAxICsgMSwgc3dhcDEsIG5DaGFuLTEpOworICAgICAgICAqc3dhcDEgPSB2OworICAgIH0KKworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tBbnlXb3JkcyhyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGludCBuQ2hhbiAgICAgID0gVF9DSEFOTkVMUyhpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBFbmRpYW4gPSBUX0VORElBTjE2KGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGludCBEb1N3YXAgICAgID0gVF9ET1NXQVAoaW5mbyAtPk91dHB1dEZvcm1hdCk7CisgICAgaW50IFJldmVyc2UgICAgPSBUX0ZMQVZPUihpbmZvIC0+T3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgRXh0cmEgICAgICA9IFRfRVhUUkEoaW5mbyAtPiBPdXRwdXRGb3JtYXQpOworICAgIGludCBTd2FwRmlyc3QgID0gVF9TV0FQRklSU1QoaW5mbyAtPiBPdXRwdXRGb3JtYXQpOworICAgIGludCBFeHRyYUZpcnN0ID0gRG9Td2FwIF4gU3dhcEZpcnN0OworICAgIGNtc1VJbnQxNk51bWJlciogc3dhcDE7CisgICAgY21zVUludDE2TnVtYmVyIHYgPSAwOworICAgIGludCBpOworCisgICAgc3dhcDEgPSAoY21zVUludDE2TnVtYmVyKikgb3V0cHV0OworCisgICAgaWYgKEV4dHJhRmlyc3QpIHsKKyAgICAgICAgb3V0cHV0ICs9IEV4dHJhICogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcik7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKworICAgICAgICB2ID0gd091dFtpbmRleF07CisKKyAgICAgICAgaWYgKFN3YXBFbmRpYW4pCisgICAgICAgICAgICB2ID0gQ0hBTkdFX0VORElBTih2KTsKKworICAgICAgICBpZiAoUmV2ZXJzZSkKKyAgICAgICAgICAgIHYgPSBSRVZFUlNFX0ZMQVZPUl8xNih2KTsKKworICAgICAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHY7CisKKyAgICAgICAgb3V0cHV0ICs9IHNpemVvZihjbXNVSW50MTZOdW1iZXIpOworICAgIH0KKworICAgIGlmICghRXh0cmFGaXJzdCkgeworICAgICAgICBvdXRwdXQgKz0gRXh0cmEgKiBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKKyAgICB9CisKKyAgICBpZiAoRXh0cmEgPT0gMCAmJiBTd2FwRmlyc3QpIHsKKworICAgICAgICBtZW1tb3ZlKHN3YXAxICsgMSwgc3dhcDEsIChuQ2hhbi0xKSogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikpOworICAgICAgICAqc3dhcDEgPSB2OworICAgIH0KKworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrUGxhbmFyQnl0ZXMocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBpbnQgbkNoYW4gICAgID0gVF9DSEFOTkVMUyhpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IERvU3dhcCAgICA9IFRfRE9TV0FQKGluZm8gLT5PdXRwdXRGb3JtYXQpOworICAgIGludCBTd2FwRmlyc3QgPSBUX1NXQVBGSVJTVChpbmZvIC0+T3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgUmV2ZXJzZSAgID0gVF9GTEFWT1IoaW5mbyAtPk91dHB1dEZvcm1hdCk7CisgICAgaW50IGk7CisgICAgY21zVUludDhOdW1iZXIqIEluaXQgPSBvdXRwdXQ7CisKKworICAgIGlmIChEb1N3YXAgXiBTd2FwRmlyc3QpIHsKKyAgICAgICAgb3V0cHV0ICs9IFRfRVhUUkEoaW5mbyAtPiBPdXRwdXRGb3JtYXQpICogU3RyaWRlOworICAgIH0KKworCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKyAgICAgICAgY21zVUludDhOdW1iZXIgdiA9IEZST01fMTZfVE9fOCh3T3V0W2luZGV4XSk7CisKKyAgICAgICAgKihjbXNVSW50OE51bWJlciopICBvdXRwdXQgPSAoY21zVUludDhOdW1iZXIpIChSZXZlcnNlID8gUkVWRVJTRV9GTEFWT1JfOCh2KSA6IHYpOworICAgICAgICBvdXRwdXQgKz0gU3RyaWRlOworICAgIH0KKworICAgIHJldHVybiAoSW5pdCArIDEpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tQbGFuYXJXb3JkcyhyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGludCBuQ2hhbiA9IFRfQ0hBTk5FTFMoaW5mbyAtPiBPdXRwdXRGb3JtYXQpOworICAgIGludCBEb1N3YXAgPSBUX0RPU1dBUChpbmZvIC0+T3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgUmV2ZXJzZT0gVF9GTEFWT1IoaW5mbyAtPk91dHB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBFbmRpYW4gPSBUX0VORElBTjE2KGluZm8gLT4gT3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgaTsKKyAgICBjbXNVSW50OE51bWJlciogSW5pdCA9IG91dHB1dDsKKyAgICBjbXNVSW50MTZOdW1iZXIgdjsKKworICAgIGlmIChEb1N3YXApIHsKKyAgICAgICAgb3V0cHV0ICs9IFRfRVhUUkEoaW5mbyAtPiBPdXRwdXRGb3JtYXQpICogU3RyaWRlICogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcik7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKworICAgICAgICB2ID0gd091dFtpbmRleF07CisKKyAgICAgICAgaWYgKFN3YXBFbmRpYW4pCisgICAgICAgICAgICB2ID0gQ0hBTkdFX0VORElBTih2KTsKKworICAgICAgICBpZiAoUmV2ZXJzZSkKKyAgICAgICAgICAgIHYgPSAgUkVWRVJTRV9GTEFWT1JfMTYodik7CisKKyAgICAgICAgKihjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQgPSB2OworICAgICAgICBvdXRwdXQgKz0gKFN0cmlkZSAqIHNpemVvZihjbXNVSW50MTZOdW1iZXIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gKEluaXQgKyBzaXplb2YoY21zVUludDE2TnVtYmVyKSk7Cit9CisKKy8vIENNWUtjbSAodW5yb2xsZWQgZm9yIHNwZWVkKQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrNkJ5dGVzKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMF0pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzFdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFsyXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbM10pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzRdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFs1XSk7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKKy8vIEtDTVljbQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrNkJ5dGVzU3dhcChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzVdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFs0XSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbM10pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzJdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFsxXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMF0pOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisvLyBDTVlLY20KK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2s2V29yZHMocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMF07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMV07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMl07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbM107CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbNF07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbNV07CisgICAgb3V0cHV0Kz0gMjsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworLy8gS0NNWWNtCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrNldvcmRzU3dhcChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFs1XTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFs0XTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFszXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsyXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsxXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFswXTsKKyAgICBvdXRwdXQrPSAyOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2s0Qnl0ZXMocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFswXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMV0pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzJdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFszXSk7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2s0Qnl0ZXNSZXZlcnNlKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKm91dHB1dCsrID0gUkVWRVJTRV9GTEFWT1JfOChGUk9NXzE2X1RPXzgod091dFswXSkpOworICAgICpvdXRwdXQrKyA9IFJFVkVSU0VfRkxBVk9SXzgoRlJPTV8xNl9UT184KHdPdXRbMV0pKTsKKyAgICAqb3V0cHV0KysgPSBSRVZFUlNFX0ZMQVZPUl84KEZST01fMTZfVE9fOCh3T3V0WzJdKSk7CisgICAgKm91dHB1dCsrID0gUkVWRVJTRV9GTEFWT1JfOChGUk9NXzE2X1RPXzgod091dFszXSkpOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2s0Qnl0ZXNTd2FwRmlyc3QocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFszXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMF0pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzFdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFsyXSk7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKKy8vIEFCR1IKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2s0Qnl0ZXNTd2FwKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbM10pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzJdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFsxXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMF0pOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrNEJ5dGVzU3dhcFN3YXBGaXJzdChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzJdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFsxXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMF0pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzNdKTsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazRXb3JkcyhyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFswXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsxXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsyXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFszXTsKKyAgICBvdXRwdXQrPSAyOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrNFdvcmRzUmV2ZXJzZShyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gUkVWRVJTRV9GTEFWT1JfMTYod091dFswXSk7CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IFJFVkVSU0VfRkxBVk9SXzE2KHdPdXRbMV0pOworICAgIG91dHB1dCs9IDI7CisgICAgKihjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQgPSBSRVZFUlNFX0ZMQVZPUl8xNih3T3V0WzJdKTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gUkVWRVJTRV9GTEFWT1JfMTYod091dFszXSk7CisgICAgb3V0cHV0Kz0gMjsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworLy8gQUJHUgorc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazRXb3Jkc1N3YXAocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbM107CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMl07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMV07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMF07CisgICAgb3V0cHV0Kz0gMjsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworLy8gQ01ZSworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazRXb3Jkc0JpZ0VuZGlhbihyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gQ0hBTkdFX0VORElBTih3T3V0WzBdKTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gQ0hBTkdFX0VORElBTih3T3V0WzFdKTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gQ0hBTkdFX0VORElBTih3T3V0WzJdKTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gQ0hBTkdFX0VORElBTih3T3V0WzNdKTsKKyAgICBvdXRwdXQrPSAyOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tMYWJWMl84KHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KEZvbUxhYlY0VG9MYWJWMih3T3V0WzBdKSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KEZvbUxhYlY0VG9MYWJWMih3T3V0WzFdKSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KEZvbUxhYlY0VG9MYWJWMih3T3V0WzJdKSk7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tBTGFiVjJfOChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIG91dHB1dCsrOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOChGb21MYWJWNFRvTGFiVjIod091dFswXSkpOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOChGb21MYWJWNFRvTGFiVjIod091dFsxXSkpOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOChGb21MYWJWNFRvTGFiVjIod091dFsyXSkpOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrTGFiVjJfMTYocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IEZvbUxhYlY0VG9MYWJWMih3T3V0WzBdKTsKKyAgICBvdXRwdXQgKz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IEZvbUxhYlY0VG9MYWJWMih3T3V0WzFdKTsKKyAgICBvdXRwdXQgKz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IEZvbUxhYlY0VG9MYWJWMih3T3V0WzJdKTsKKyAgICBvdXRwdXQgKz0gMjsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazNCeXRlcyhyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzBdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFsxXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMl0pOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrM0J5dGVzT3B0aW1pemVkKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKm91dHB1dCsrID0gKHdPdXRbMF0gJiAweEZGKTsKKyAgICAqb3V0cHV0KysgPSAod091dFsxXSAmIDB4RkYpOworICAgICpvdXRwdXQrKyA9ICh3T3V0WzJdICYgMHhGRik7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2szQnl0ZXNTd2FwKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMl0pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzFdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFswXSk7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2szQnl0ZXNTd2FwT3B0aW1pemVkKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKm91dHB1dCsrID0gKHdPdXRbMl0gJiAweEZGKTsKKyAgICAqb3V0cHV0KysgPSAod091dFsxXSAmIDB4RkYpOworICAgICpvdXRwdXQrKyA9ICh3T3V0WzBdICYgMHhGRik7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazNXb3JkcyhyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFswXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsxXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsyXTsKKyAgICBvdXRwdXQrPSAyOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrM1dvcmRzU3dhcChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsyXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsxXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFswXTsKKyAgICBvdXRwdXQrPSAyOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrM1dvcmRzQmlnRW5kaWFuKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKihjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQgPSBDSEFOR0VfRU5ESUFOKHdPdXRbMF0pOworICAgIG91dHB1dCs9IDI7CisgICAgKihjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQgPSBDSEFOR0VfRU5ESUFOKHdPdXRbMV0pOworICAgIG91dHB1dCs9IDI7CisgICAgKihjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQgPSBDSEFOR0VfRU5ESUFOKHdPdXRbMl0pOworICAgIG91dHB1dCs9IDI7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2szQnl0ZXNBbmRTa2lwMShyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzBdKTsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFsxXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMl0pOworICAgIG91dHB1dCsrOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrM0J5dGVzQW5kU2tpcDFPcHRpbWl6ZWQocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqb3V0cHV0KysgPSAod091dFswXSAmIDB4RkYpOworICAgICpvdXRwdXQrKyA9ICh3T3V0WzFdICYgMHhGRik7CisgICAgKm91dHB1dCsrID0gKHdPdXRbMl0gJiAweEZGKTsKKyAgICBvdXRwdXQrKzsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrM0J5dGVzQW5kU2tpcDFTd2FwRmlyc3QocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBvdXRwdXQrKzsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFswXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMV0pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzJdKTsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazNCeXRlc0FuZFNraXAxU3dhcEZpcnN0T3B0aW1pemVkKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgb3V0cHV0Kys7CisgICAgKm91dHB1dCsrID0gKHdPdXRbMF0gJiAweEZGKTsKKyAgICAqb3V0cHV0KysgPSAod091dFsxXSAmIDB4RkYpOworICAgICpvdXRwdXQrKyA9ICh3T3V0WzJdICYgMHhGRik7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2szQnl0ZXNBbmRTa2lwMVN3YXAocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBvdXRwdXQrKzsKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFsyXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMV0pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzBdKTsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazNCeXRlc0FuZFNraXAxU3dhcE9wdGltaXplZChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIG91dHB1dCsrOworICAgICpvdXRwdXQrKyA9ICh3T3V0WzJdICYgMHhGRik7CisgICAgKm91dHB1dCsrID0gKHdPdXRbMV0gJiAweEZGKTsKKyAgICAqb3V0cHV0KysgPSAod091dFswXSAmIDB4RkYpOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2szQnl0ZXNBbmRTa2lwMVN3YXBTd2FwRmlyc3QocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqb3V0cHV0KysgPSBGUk9NXzE2X1RPXzgod091dFsyXSk7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMV0pOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzBdKTsKKyAgICBvdXRwdXQrKzsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazNCeXRlc0FuZFNraXAxU3dhcFN3YXBGaXJzdE9wdGltaXplZChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICpvdXRwdXQrKyA9ICh3T3V0WzJdICYgMHhGRik7CisgICAgKm91dHB1dCsrID0gKHdPdXRbMV0gJiAweEZGKTsKKyAgICAqb3V0cHV0KysgPSAod091dFswXSAmIDB4RkYpOworICAgIG91dHB1dCsrOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrM1dvcmRzQW5kU2tpcDEocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMF07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMV07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMl07CisgICAgb3V0cHV0Kz0gMjsKKyAgICBvdXRwdXQrPSAyOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrM1dvcmRzQW5kU2tpcDFTd2FwKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMl07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMV07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMF07CisgICAgb3V0cHV0Kz0gMjsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrM1dvcmRzQW5kU2tpcDFTd2FwRmlyc3QocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFswXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsxXTsKKyAgICBvdXRwdXQrPSAyOworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gd091dFsyXTsKKyAgICBvdXRwdXQrPSAyOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2szV29yZHNBbmRTa2lwMVN3YXBTd2FwRmlyc3QocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMl07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMV07CisgICAgb3V0cHV0Kz0gMjsKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IHdPdXRbMF07CisgICAgb3V0cHV0Kz0gMjsKKyAgICBvdXRwdXQrPSAyOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazFCeXRlKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KHdPdXRbMF0pOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2sxQnl0ZVJldmVyc2VkKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKm91dHB1dCsrID0gRlJPTV8xNl9UT184KFJFVkVSU0VfRkxBVk9SXzE2KHdPdXRbMF0pKTsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrMUJ5dGVTa2lwMShyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzBdKTsKKyAgICBvdXRwdXQrKzsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrMUJ5dGVTa2lwMVN3YXBGaXJzdChyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIG91dHB1dCsrOworICAgICpvdXRwdXQrKyA9IEZST01fMTZfVE9fOCh3T3V0WzBdKTsKKworICAgIHJldHVybiBvdXRwdXQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGluZm8pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU3RyaWRlKTsKK30KKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazFXb3JkKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKihjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQgPSB3T3V0WzBdOworICAgIG91dHB1dCs9IDI7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFjazFXb3JkUmV2ZXJzZWQocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICAqKGNtc1VJbnQxNk51bWJlciopIG91dHB1dCA9IFJFVkVSU0VfRkxBVk9SXzE2KHdPdXRbMF0pOworICAgIG91dHB1dCs9IDI7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2sxV29yZEJpZ0VuZGlhbihyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICooY21zVUludDE2TnVtYmVyKikgb3V0cHV0ID0gQ0hBTkdFX0VORElBTih3T3V0WzBdKTsKKyAgICBvdXRwdXQrPSAyOworCisgICAgcmV0dXJuIG91dHB1dDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoaW5mbyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTdHJpZGUpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2sxV29yZFNraXAxKHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgKihjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQgPSB3T3V0WzBdOworICAgIG91dHB1dCs9IDQ7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2sxV29yZFNraXAxU3dhcEZpcnN0KHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgb3V0cHV0ICs9IDI7CisgICAgKihjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQgPSB3T3V0WzBdOworICAgIG91dHB1dCs9IDI7CisKKyAgICByZXR1cm4gb3V0cHV0OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihpbmZvKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFN0cmlkZSk7Cit9CisKKworLy8gVW5lbmNvZGVkIEZsb2F0IHZhbHVlcyAtLSBkb24ndCB0cnkgb3B0aW1pemUgc3BlZWQKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tMYWJEb3VibGVGcm9tMTYocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKworICAgIGlmIChUX1BMQU5BUihpbmZvIC0+IE91dHB1dEZvcm1hdCkpIHsKKworICAgICAgICBjbXNDSUVMYWIgIExhYjsKKyAgICAgICAgY21zRmxvYXQ2NE51bWJlciogT3V0ID0gKGNtc0Zsb2F0NjROdW1iZXIqKSBvdXRwdXQ7CisgICAgICAgIGNtc0xhYkVuY29kZWQyRmxvYXQoJkxhYiwgd091dCk7CisKKyAgICAgICAgT3V0WzBdICAgICAgICA9IExhYi5MOworICAgICAgICBPdXRbU3RyaWRlXSAgID0gTGFiLmE7CisgICAgICAgIE91dFtTdHJpZGUqMl0gPSBMYWIuYjsKKworICAgICAgICByZXR1cm4gb3V0cHV0ICsgc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICBjbXNMYWJFbmNvZGVkMkZsb2F0KChjbXNDSUVMYWIqKSBvdXRwdXQsIHdPdXQpOworICAgICAgICByZXR1cm4gb3V0cHV0ICsgKHNpemVvZihjbXNDSUVMYWIpICsgVF9FWFRSQShpbmZvIC0+T3V0cHV0Rm9ybWF0KSAqIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKSk7CisgICAgfQorfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tMYWJGbG9hdEZyb20xNihyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGNtc0NJRUxhYiAgTGFiOworICAgIGNtc0xhYkVuY29kZWQyRmxvYXQoJkxhYiwgd091dCk7CisKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBPdXRwdXRGb3JtYXQpKSB7CisgICAgICAgCisgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIqIE91dCA9IChjbXNGbG9hdDMyTnVtYmVyKikgb3V0cHV0OworICAgIAorICAgICAgICBPdXRbMF0gICAgICAgID0gKGNtc0Zsb2F0MzJOdW1iZXIpTGFiLkw7CisgICAgICAgIE91dFtTdHJpZGVdICAgPSAoY21zRmxvYXQzMk51bWJlcilMYWIuYTsKKyAgICAgICAgT3V0W1N0cmlkZSoyXSA9IChjbXNGbG9hdDMyTnVtYmVyKUxhYi5iOworCisgICAgICAgIHJldHVybiBvdXRwdXQgKyBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgKChjbXNGbG9hdDMyTnVtYmVyKikgb3V0cHV0KVswXSA9IChjbXNGbG9hdDMyTnVtYmVyKSBMYWIuTDsKKyAgICAgICAoKGNtc0Zsb2F0MzJOdW1iZXIqKSBvdXRwdXQpWzFdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIExhYi5hOworICAgICAgICgoY21zRmxvYXQzMk51bWJlciopIG91dHB1dClbMl0gPSAoY21zRmxvYXQzMk51bWJlcikgTGFiLmI7CisKKyAgICAgICAgcmV0dXJuIG91dHB1dCArICgzICsgVF9FWFRSQShpbmZvIC0+T3V0cHV0Rm9ybWF0KSkgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisgICAgfQorfQorCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrWFlaRG91YmxlRnJvbTE2KHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgaWYgKFRfUExBTkFSKEluZm8gLT4gT3V0cHV0Rm9ybWF0KSkgeworCisgICAgICAgIGNtc0NJRVhZWiBYWVo7CisgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIqIE91dCA9IChjbXNGbG9hdDY0TnVtYmVyKikgb3V0cHV0OworICAgICAgICBjbXNYWVpFbmNvZGVkMkZsb2F0KCZYWVosIHdPdXQpOworCisgICAgICAgIE91dFswXSAgICAgICAgPSBYWVouWDsKKyAgICAgICAgT3V0W1N0cmlkZV0gICA9IFhZWi5ZOworICAgICAgICBPdXRbU3RyaWRlKjJdID0gWFlaLlo7CisKKyAgICAgICAgcmV0dXJuIG91dHB1dCArIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKTsKKworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICBjbXNYWVpFbmNvZGVkMkZsb2F0KChjbXNDSUVYWVoqKSBvdXRwdXQsIHdPdXQpOworCisgICAgICAgIHJldHVybiBvdXRwdXQgKyAoc2l6ZW9mKGNtc0NJRVhZWikgKyBUX0VYVFJBKEluZm8gLT5PdXRwdXRGb3JtYXQpICogc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpKTsKKyAgICB9Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tYWVpGbG9hdEZyb20xNihyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGlmIChUX1BMQU5BUihJbmZvIC0+IE91dHB1dEZvcm1hdCkpIHsKKworICAgICAgICBjbXNDSUVYWVogWFlaOworICAgICAgICBjbXNGbG9hdDMyTnVtYmVyKiBPdXQgPSAoY21zRmxvYXQzMk51bWJlciopIG91dHB1dDsKKyAgICAgICAgY21zWFlaRW5jb2RlZDJGbG9hdCgmWFlaLCB3T3V0KTsKKworICAgICAgICBPdXRbMF0gICAgICAgID0gKGNtc0Zsb2F0MzJOdW1iZXIpIFhZWi5YOworICAgICAgICBPdXRbU3RyaWRlXSAgID0gKGNtc0Zsb2F0MzJOdW1iZXIpIFhZWi5ZOworICAgICAgICBPdXRbU3RyaWRlKjJdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIFhZWi5aOworCisgICAgICAgIHJldHVybiBvdXRwdXQgKyBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgICAgY21zQ0lFWFlaIFhZWjsKKyAgICAgICAgY21zRmxvYXQzMk51bWJlciogT3V0ID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBvdXRwdXQ7CisgICAgICAgIGNtc1hZWkVuY29kZWQyRmxvYXQoJlhZWiwgd091dCk7CisKKyAgICAgICAgT3V0WzBdID0gKGNtc0Zsb2F0MzJOdW1iZXIpIFhZWi5YOworICAgICAgICBPdXRbMV0gPSAoY21zRmxvYXQzMk51bWJlcikgWFlaLlk7CisgICAgICAgIE91dFsyXSA9IChjbXNGbG9hdDMyTnVtYmVyKSBYWVouWjsKKworICAgICAgICByZXR1cm4gb3V0cHV0ICsgKDMgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcikgKyBUX0VYVFJBKEluZm8gLT5PdXRwdXRGb3JtYXQpICogc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKKyAgICB9Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tEb3VibGVGcm9tMTYocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBpbnQgbkNoYW4gICAgICA9IFRfQ0hBTk5FTFMoaW5mbyAtPiBPdXRwdXRGb3JtYXQpOworICAgIGludCBEb1N3YXAgICAgID0gVF9ET1NXQVAoaW5mbyAtPk91dHB1dEZvcm1hdCk7CisgICAgaW50IFJldmVyc2UgICAgPSBUX0ZMQVZPUihpbmZvIC0+T3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgRXh0cmEgICAgICA9IFRfRVhUUkEoaW5mbyAtPiBPdXRwdXRGb3JtYXQpOworICAgIGludCBTd2FwRmlyc3QgID0gVF9TV0FQRklSU1QoaW5mbyAtPiBPdXRwdXRGb3JtYXQpOworICAgIGludCBQbGFuYXIgICAgID0gVF9QTEFOQVIoaW5mbyAtPiBPdXRwdXRGb3JtYXQpOworICAgIGludCBFeHRyYUZpcnN0ID0gRG9Td2FwIF4gU3dhcEZpcnN0OworICAgIGNtc0Zsb2F0NjROdW1iZXIgbWF4aW11bSA9IElzSW5rU3BhY2UoaW5mbyAtPk91dHB1dEZvcm1hdCkgPyA2NTUuMzUgOiA2NTUzNS4wOworICAgIGNtc0Zsb2F0NjROdW1iZXIgdiA9IDA7CisgICAgY21zRmxvYXQ2NE51bWJlciogc3dhcDEgPSAoY21zRmxvYXQ2NE51bWJlciopIG91dHB1dDsKKyAgICBpbnQgaSwgc3RhcnQgPSAwOworCisgICAgaWYgKEV4dHJhRmlyc3QpCisgICAgICAgIHN0YXJ0ID0gRXh0cmE7CisKKyAgICBmb3IgKGk9MDsgaSA8IG5DaGFuOyBpKyspIHsKKworICAgICAgICBpbnQgaW5kZXggPSBEb1N3YXAgPyAobkNoYW4gLSBpIC0gMSkgOiBpOworCisgICAgICAgIHYgPSAoY21zRmxvYXQ2NE51bWJlcikgd091dFtpbmRleF0gLyBtYXhpbXVtOworCisgICAgICAgIGlmIChSZXZlcnNlKQorICAgICAgICAgICAgdiA9IG1heGltdW0gLSB2OworCisgICAgICAgIGlmIChQbGFuYXIpCisgICAgICAgICAgICAoKGNtc0Zsb2F0NjROdW1iZXIqKSBvdXRwdXQpWyhpICsgc3RhcnQpICAqIFN0cmlkZV09IHY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoY21zRmxvYXQ2NE51bWJlciopIG91dHB1dClbaSArIHN0YXJ0XSA9IHY7CisgICAgfQorCisgICAgaWYgKCFFeHRyYUZpcnN0KSB7CisgICAgICAgIG91dHB1dCArPSBFeHRyYSAqIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKTsKKyAgICB9CisKKyAgICBpZiAoRXh0cmEgPT0gMCAmJiBTd2FwRmlyc3QpIHsKKworICAgICAgICAgbWVtbW92ZShzd2FwMSArIDEsIHN3YXAxLCAobkNoYW4tMSkqIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKSk7CisgICAgICAgICpzd2FwMSA9IHY7CisgICAgfQorCisgICAgaWYgKFRfUExBTkFSKGluZm8gLT4gT3V0cHV0Rm9ybWF0KSkKKyAgICAgICAgcmV0dXJuIG91dHB1dCArIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBvdXRwdXQgKyBuQ2hhbiAqIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKTsKKworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tGbG9hdEZyb20xNihyZWdpc3RlciBfY21zVFJBTlNGT1JNKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGludCBuQ2hhbiAgICAgID0gVF9DSEFOTkVMUyhpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IERvU3dhcCAgICAgPSBUX0RPU1dBUChpbmZvIC0+T3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgUmV2ZXJzZSAgICA9IFRfRkxBVk9SKGluZm8gLT5PdXRwdXRGb3JtYXQpOworICAgIGludCBFeHRyYSAgICAgID0gVF9FWFRSQShpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBGaXJzdCAgPSBUX1NXQVBGSVJTVChpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IFBsYW5hciAgICAgPSBUX1BMQU5BUihpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhRmlyc3QgPSBEb1N3YXAgXiBTd2FwRmlyc3Q7CisgICAgY21zRmxvYXQ2NE51bWJlciBtYXhpbXVtID0gSXNJbmtTcGFjZShpbmZvIC0+T3V0cHV0Rm9ybWF0KSA/IDY1NS4zNSA6IDY1NTM1LjA7CisgICAgY21zRmxvYXQ2NE51bWJlciB2ID0gMDsKKyAgICBjbXNGbG9hdDMyTnVtYmVyKiBzd2FwMSA9IChjbXNGbG9hdDMyTnVtYmVyKikgb3V0cHV0OworICAgIGludCBpLCBzdGFydCA9IDA7CisKKyAgICBpZiAoRXh0cmFGaXJzdCkKKyAgICAgICAgc3RhcnQgPSBFeHRyYTsKKworICAgIGZvciAoaT0wOyBpIDwgbkNoYW47IGkrKykgeworCisgICAgICAgIGludCBpbmRleCA9IERvU3dhcCA/IChuQ2hhbiAtIGkgLSAxKSA6IGk7CisKKyAgICAgICAgdiA9IChjbXNGbG9hdDY0TnVtYmVyKSB3T3V0W2luZGV4XSAvIG1heGltdW07CisKKyAgICAgICAgaWYgKFJldmVyc2UpCisgICAgICAgICAgICB2ID0gbWF4aW11bSAtIHY7CisKKyAgICAgICAgaWYgKFBsYW5hcikKKyAgICAgICAgICAgICgoY21zRmxvYXQzMk51bWJlciopIG91dHB1dClbKGkgKyBzdGFydCApICogU3RyaWRlXT0gKGNtc0Zsb2F0MzJOdW1iZXIpIHY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoY21zRmxvYXQzMk51bWJlciopIG91dHB1dClbaSArIHN0YXJ0XSA9IChjbXNGbG9hdDMyTnVtYmVyKSB2OworICAgIH0KKworICAgIGlmICghRXh0cmFGaXJzdCkgeworICAgICAgICBvdXRwdXQgKz0gRXh0cmEgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisgICAgfQorCisgIGlmIChFeHRyYSA9PSAwICYmIFN3YXBGaXJzdCkgeworCisgICAgICAgICBtZW1tb3ZlKHN3YXAxICsgMSwgc3dhcDEsIChuQ2hhbi0xKSogc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKKyAgICAgICAgKnN3YXAxID0gKGNtc0Zsb2F0MzJOdW1iZXIpIHY7CisgICAgfQorCisgICAgaWYgKFRfUExBTkFSKGluZm8gLT4gT3V0cHV0Rm9ybWF0KSkKKyAgICAgICAgcmV0dXJuIG91dHB1dCArIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBvdXRwdXQgKyBuQ2hhbiAqIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKTsKK30KKworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tGbG9hdHNGcm9tRmxvYXQoX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDhOdW1iZXIqIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgaW50IG5DaGFuICAgICAgPSBUX0NIQU5ORUxTKGluZm8gLT4gT3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgRG9Td2FwICAgICA9IFRfRE9TV0FQKGluZm8gLT5PdXRwdXRGb3JtYXQpOworICAgIGludCBSZXZlcnNlICAgID0gVF9GTEFWT1IoaW5mbyAtPk91dHB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhICAgICAgPSBUX0VYVFJBKGluZm8gLT4gT3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgU3dhcEZpcnN0ICA9IFRfU1dBUEZJUlNUKGluZm8gLT4gT3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgUGxhbmFyICAgICA9IFRfUExBTkFSKGluZm8gLT4gT3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgRXh0cmFGaXJzdCA9IERvU3dhcCBeIFN3YXBGaXJzdDsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIG1heGltdW0gPSBJc0lua1NwYWNlKGluZm8gLT5PdXRwdXRGb3JtYXQpID8gMTAwLjAgOiAxLjA7CisgICAgY21zRmxvYXQzMk51bWJlciogc3dhcDEgPSAoY21zRmxvYXQzMk51bWJlciopIG91dHB1dDsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHYgPSAwOworICAgIGludCBpLCBzdGFydCA9IDA7CisKKyAgICBpZiAoRXh0cmFGaXJzdCkKKyAgICAgICAgc3RhcnQgPSBFeHRyYTsKKworICAgIGZvciAoaT0wOyBpIDwgbkNoYW47IGkrKykgeworCisgICAgICAgIGludCBpbmRleCA9IERvU3dhcCA/IChuQ2hhbiAtIGkgLSAxKSA6IGk7CisKKyAgICAgICAgdiA9IHdPdXRbaW5kZXhdICogbWF4aW11bTsKKworICAgICAgICBpZiAoUmV2ZXJzZSkKKyAgICAgICAgICAgIHYgPSBtYXhpbXVtIC0gdjsKKworICAgICAgICBpZiAoUGxhbmFyKQorICAgICAgICAgICAgKChjbXNGbG9hdDMyTnVtYmVyKikgb3V0cHV0KVsoaSArIHN0YXJ0KSogU3RyaWRlXT0gKGNtc0Zsb2F0MzJOdW1iZXIpIHY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoY21zRmxvYXQzMk51bWJlciopIG91dHB1dClbaSArIHN0YXJ0XSA9IChjbXNGbG9hdDMyTnVtYmVyKSB2OworICAgIH0KKworICAgIGlmICghRXh0cmFGaXJzdCkgeworICAgICAgICBvdXRwdXQgKz0gRXh0cmEgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisgICAgfQorCisgICBpZiAoRXh0cmEgPT0gMCAmJiBTd2FwRmlyc3QpIHsKKworICAgICAgICAgbWVtbW92ZShzd2FwMSArIDEsIHN3YXAxLCAobkNoYW4tMSkqIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKSk7CisgICAgICAgICpzd2FwMSA9IChjbXNGbG9hdDMyTnVtYmVyKSB2OworICAgIH0KKworICAgIGlmIChUX1BMQU5BUihpbmZvIC0+IE91dHB1dEZvcm1hdCkpCisgICAgICAgIHJldHVybiBvdXRwdXQgKyBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gb3V0cHV0ICsgbkNoYW4gKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7Cit9CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tEb3VibGVzRnJvbUZsb2F0KF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGludCBuQ2hhbiAgICAgID0gVF9DSEFOTkVMUyhpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IERvU3dhcCAgICAgPSBUX0RPU1dBUChpbmZvIC0+T3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgUmV2ZXJzZSAgICA9IFRfRkxBVk9SKGluZm8gLT5PdXRwdXRGb3JtYXQpOworICAgIGludCBFeHRyYSAgICAgID0gVF9FWFRSQShpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBGaXJzdCAgPSBUX1NXQVBGSVJTVChpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IFBsYW5hciAgICAgPSBUX1BMQU5BUihpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhRmlyc3QgPSBEb1N3YXAgXiBTd2FwRmlyc3Q7CisgICAgY21zRmxvYXQ2NE51bWJlciBtYXhpbXVtID0gSXNJbmtTcGFjZShpbmZvIC0+T3V0cHV0Rm9ybWF0KSA/IDEwMC4wIDogMS4wOworICAgIGNtc0Zsb2F0NjROdW1iZXIgdiA9IDA7CisgICAgY21zRmxvYXQ2NE51bWJlciogc3dhcDEgPSAoY21zRmxvYXQ2NE51bWJlciopIG91dHB1dDsKKyAgICBpbnQgaSwgc3RhcnQgPSAwOworCisgICAgaWYgKEV4dHJhRmlyc3QpCisgICAgICAgIHN0YXJ0ID0gRXh0cmE7CisKKyAgICBmb3IgKGk9MDsgaSA8IG5DaGFuOyBpKyspIHsKKworICAgICAgICBpbnQgaW5kZXggPSBEb1N3YXAgPyAobkNoYW4gLSBpIC0gMSkgOiBpOworCisgICAgICAgIHYgPSB3T3V0W2luZGV4XSAqIG1heGltdW07CisKKyAgICAgICAgaWYgKFJldmVyc2UpCisgICAgICAgICAgICB2ID0gbWF4aW11bSAtIHY7CisKKyAgICAgICAgaWYgKFBsYW5hcikKKyAgICAgICAgICAgICgoY21zRmxvYXQ2NE51bWJlciopIG91dHB1dClbKGkgKyBzdGFydCkgKiBTdHJpZGVdID0gIHY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoY21zRmxvYXQ2NE51bWJlciopIG91dHB1dClbaSArIHN0YXJ0XSA9ICB2OworICAgIH0KKworICAgIGlmICghRXh0cmFGaXJzdCkgeworICAgICAgICBvdXRwdXQgKz0gRXh0cmEgKiBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7CisgICAgfQorCisgICBpZiAoRXh0cmEgPT0gMCAmJiBTd2FwRmlyc3QpIHsKKworICAgICAgICAgbWVtbW92ZShzd2FwMSArIDEsIHN3YXAxLCAobkNoYW4tMSkqIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKSk7CisgICAgICAgICpzd2FwMSA9IHY7CisgICAgfQorCisKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBPdXRwdXRGb3JtYXQpKQorICAgICAgICByZXR1cm4gb3V0cHV0ICsgc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIG91dHB1dCArIG5DaGFuICogc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpOworCit9CisKKworCisKKworc3RhdGljCitjbXNVSW50OE51bWJlciogUGFja0xhYkZsb2F0RnJvbUZsb2F0KF9jbXNUUkFOU0ZPUk0qIEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgd091dFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50OE51bWJlciogb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGNtc0Zsb2F0MzJOdW1iZXIqIE91dCA9IChjbXNGbG9hdDMyTnVtYmVyKikgb3V0cHV0OworCisgICAgaWYgKFRfUExBTkFSKEluZm8gLT4gT3V0cHV0Rm9ybWF0KSkgeworCisgICAgICAgIE91dFswXSAgICAgICAgPSAoY21zRmxvYXQzMk51bWJlcikgKHdPdXRbMF0gKiAxMDAuMCk7CisgICAgICAgIE91dFtTdHJpZGVdICAgPSAoY21zRmxvYXQzMk51bWJlcikgKHdPdXRbMV0gKiAyNTUuMCAtIDEyOC4wKTsKKyAgICAgICAgT3V0W1N0cmlkZSoyXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAod091dFsyXSAqIDI1NS4wIC0gMTI4LjApOworCisgICAgICAgIHJldHVybiBvdXRwdXQgKyBzaXplb2YoY21zRmxvYXQzMk51bWJlcik7CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIE91dFswXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAod091dFswXSAqIDEwMC4wKTsKKyAgICAgICAgT3V0WzFdID0gKGNtc0Zsb2F0MzJOdW1iZXIpICh3T3V0WzFdICogMjU1LjAgLSAxMjguMCk7CisgICAgICAgIE91dFsyXSA9IChjbXNGbG9hdDMyTnVtYmVyKSAod091dFsyXSAqIDI1NS4wIC0gMTI4LjApOworCisgICAgICAgIHJldHVybiBvdXRwdXQgKyAoc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKjMgKyBUX0VYVFJBKEluZm8gLT5PdXRwdXRGb3JtYXQpICogc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKKyAgICB9CisKK30KKworCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrTGFiRG91YmxlRnJvbUZsb2F0KF9jbXNUUkFOU0ZPUk0qIEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGNtc0Zsb2F0NjROdW1iZXIqIE91dCA9IChjbXNGbG9hdDY0TnVtYmVyKikgb3V0cHV0OworCisgICAgaWYgKFRfUExBTkFSKEluZm8gLT4gT3V0cHV0Rm9ybWF0KSkgeworCisgICAgICAgIE91dFswXSAgICAgICAgPSAoY21zRmxvYXQ2NE51bWJlcikgKHdPdXRbMF0gKiAxMDAuMCk7CisgICAgICAgIE91dFtTdHJpZGVdICAgPSAoY21zRmxvYXQ2NE51bWJlcikgKHdPdXRbMV0gKiAyNTUuMCAtIDEyOC4wKTsKKyAgICAgICAgT3V0W1N0cmlkZSoyXSA9IChjbXNGbG9hdDY0TnVtYmVyKSAod091dFsyXSAqIDI1NS4wIC0gMTI4LjApOworCisgICAgICAgIHJldHVybiBvdXRwdXQgKyBzaXplb2YoY21zRmxvYXQ2NE51bWJlcik7CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIE91dFswXSA9IChjbXNGbG9hdDY0TnVtYmVyKSAod091dFswXSAqIDEwMC4wKTsKKyAgICAgICAgT3V0WzFdID0gKGNtc0Zsb2F0NjROdW1iZXIpICh3T3V0WzFdICogMjU1LjAgLSAxMjguMCk7CisgICAgICAgIE91dFsyXSA9IChjbXNGbG9hdDY0TnVtYmVyKSAod091dFsyXSAqIDI1NS4wIC0gMTI4LjApOworCisgICAgICAgIHJldHVybiBvdXRwdXQgKyAoc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpKjMgKyBUX0VYVFJBKEluZm8gLT5PdXRwdXRGb3JtYXQpICogc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpKTsKKyAgICB9CisKK30KKworCisvLyBGcm9tIDAuLjEgcmFuZ2UgdG8gMC4uTUFYX0VOQ09ERUFCTEVfWFlaCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrWFlaRmxvYXRGcm9tRmxvYXQoX2Ntc1RSQU5TRk9STSogSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQzMk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgY21zRmxvYXQzMk51bWJlciogT3V0ID0gKGNtc0Zsb2F0MzJOdW1iZXIqKSBvdXRwdXQ7CisKKyAgICBpZiAoVF9QTEFOQVIoSW5mbyAtPiBPdXRwdXRGb3JtYXQpKSB7CisKKyAgICAgICAgT3V0WzBdICAgICAgICA9IChjbXNGbG9hdDMyTnVtYmVyKSAod091dFswXSAqIE1BWF9FTkNPREVBQkxFX1hZWik7CisgICAgICAgIE91dFtTdHJpZGVdICAgPSAoY21zRmxvYXQzMk51bWJlcikgKHdPdXRbMV0gKiBNQVhfRU5DT0RFQUJMRV9YWVopOworICAgICAgICBPdXRbU3RyaWRlKjJdID0gKGNtc0Zsb2F0MzJOdW1iZXIpICh3T3V0WzJdICogTUFYX0VOQ09ERUFCTEVfWFlaKTsKKworICAgICAgICByZXR1cm4gb3V0cHV0ICsgc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICBPdXRbMF0gPSAoY21zRmxvYXQzMk51bWJlcikgKHdPdXRbMF0gKiBNQVhfRU5DT0RFQUJMRV9YWVopOworICAgICAgICBPdXRbMV0gPSAoY21zRmxvYXQzMk51bWJlcikgKHdPdXRbMV0gKiBNQVhfRU5DT0RFQUJMRV9YWVopOworICAgICAgICBPdXRbMl0gPSAoY21zRmxvYXQzMk51bWJlcikgKHdPdXRbMl0gKiBNQVhfRU5DT0RFQUJMRV9YWVopOworCisgICAgICAgIHJldHVybiBvdXRwdXQgKyAoc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKjMgKyBUX0VYVFJBKEluZm8gLT5PdXRwdXRGb3JtYXQpICogc2l6ZW9mKGNtc0Zsb2F0MzJOdW1iZXIpKTsKKyAgICB9CisKK30KKworLy8gU2FtZSwgYnV0IGNvbnZlcnQgdG8gZG91YmxlCitzdGF0aWMKK2Ntc1VJbnQ4TnVtYmVyKiBQYWNrWFlaRG91YmxlRnJvbUZsb2F0KF9jbXNUUkFOU0ZPUk0qIEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGNtc0Zsb2F0NjROdW1iZXIqIE91dCA9IChjbXNGbG9hdDY0TnVtYmVyKikgb3V0cHV0OworCisgICAgaWYgKFRfUExBTkFSKEluZm8gLT4gT3V0cHV0Rm9ybWF0KSkgeworCisgICAgICAgIE91dFswXSAgICAgICAgPSAoY21zRmxvYXQ2NE51bWJlcikgKHdPdXRbMF0gKiBNQVhfRU5DT0RFQUJMRV9YWVopOworICAgICAgICBPdXRbU3RyaWRlXSAgID0gKGNtc0Zsb2F0NjROdW1iZXIpICh3T3V0WzFdICogTUFYX0VOQ09ERUFCTEVfWFlaKTsKKyAgICAgICAgT3V0W1N0cmlkZSoyXSA9IChjbXNGbG9hdDY0TnVtYmVyKSAod091dFsyXSAqIE1BWF9FTkNPREVBQkxFX1hZWik7CisKKyAgICAgICAgcmV0dXJuIG91dHB1dCArIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKTsKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgICAgT3V0WzBdID0gKGNtc0Zsb2F0NjROdW1iZXIpICh3T3V0WzBdICogTUFYX0VOQ09ERUFCTEVfWFlaKTsKKyAgICAgICAgT3V0WzFdID0gKGNtc0Zsb2F0NjROdW1iZXIpICh3T3V0WzFdICogTUFYX0VOQ09ERUFCTEVfWFlaKTsKKyAgICAgICAgT3V0WzJdID0gKGNtc0Zsb2F0NjROdW1iZXIpICh3T3V0WzJdICogTUFYX0VOQ09ERUFCTEVfWFlaKTsKKworICAgICAgICByZXR1cm4gb3V0cHV0ICsgKHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKSozICsgVF9FWFRSQShJbmZvIC0+T3V0cHV0Rm9ybWF0KSAqIHNpemVvZihjbXNGbG9hdDY0TnVtYmVyKSk7CisgICAgfQorCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWZuZGVmIENNU19OT19IQUxGX1NVUFBPUlQgCisKKy8vIERlY29kZXMgYW4gc3RyZWFtIG9mIGhhbGYgZmxvYXRzIHRvIHdJbltdIGRlc2NyaWJlZCBieSBpbnB1dCBmb3JtYXQKKworc3RhdGljCitjbXNVSW50OE51bWJlciogVW5yb2xsSGFsZlRvMTYocmVnaXN0ZXIgX2Ntc1RSQU5TRk9STSogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogYWNjdW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisKKyAgICBpbnQgbkNoYW4gICAgICA9IFRfQ0hBTk5FTFMoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IERvU3dhcCAgICAgPSBUX0RPU1dBUChpbmZvIC0+SW5wdXRGb3JtYXQpOworICAgIGludCBSZXZlcnNlICAgID0gVF9GTEFWT1IoaW5mbyAtPklucHV0Rm9ybWF0KTsKKyAgICBpbnQgU3dhcEZpcnN0ICA9IFRfU1dBUEZJUlNUKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGludCBFeHRyYSAgICAgID0gVF9FWFRSQShpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBpbnQgRXh0cmFGaXJzdCA9IERvU3dhcCBeIFN3YXBGaXJzdDsKKyAgICBpbnQgUGxhbmFyICAgICA9IFRfUExBTkFSKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgdjsKKyAgICBpbnQgaSwgc3RhcnQgPSAwOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgbWF4aW11bSA9IElzSW5rU3BhY2UoaW5mbyAtPklucHV0Rm9ybWF0KSA/IDY1NS4zNUYgOiA2NTUzNS4wRjsKKworCisgICAgaWYgKEV4dHJhRmlyc3QpCisgICAgICAgICAgICBzdGFydCA9IEV4dHJhOworCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKworICAgICAgICBpZiAoUGxhbmFyKQorICAgICAgICAgICAgdiA9IF9jbXNIYWxmMkZsb2F0ICggKChjbXNVSW50MTZOdW1iZXIqKSBhY2N1bSlbKGkgKyBzdGFydCkgKiBTdHJpZGVdICk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHYgPSBfY21zSGFsZjJGbG9hdCAoICgoY21zVUludDE2TnVtYmVyKikgYWNjdW0pW2kgKyBzdGFydF0gKSA7CisKKyAgICAgICAgaWYgKFJldmVyc2UpIHYgPSBtYXhpbXVtIC0gdjsKKworICAgICAgICB3SW5baW5kZXhdID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKHYgKiBtYXhpbXVtKTsKKyAgICB9CisKKworICAgIGlmIChFeHRyYSA9PSAwICYmIFN3YXBGaXJzdCkgeworICAgICAgICBjbXNVSW50MTZOdW1iZXIgdG1wID0gd0luWzBdOworCisgICAgICAgIG1lbW1vdmUoJndJblswXSwgJndJblsxXSwgKG5DaGFuLTEpICogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikpOworICAgICAgICB3SW5bbkNoYW4tMV0gPSB0bXA7CisgICAgfQorCisgICAgaWYgKFRfUExBTkFSKGluZm8gLT4gSW5wdXRGb3JtYXQpKQorICAgICAgICByZXR1cm4gYWNjdW0gKyBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBhY2N1bSArIChuQ2hhbiArIEV4dHJhKSAqIHNpemVvZihjbXNVSW50MTZOdW1iZXIpOworfQorCisvLyBEZWNvZGVzIGFuIHN0cmVhbSBvZiBoYWxmIGZsb2F0cyB0byB3SW5bXSBkZXNjcmliZWQgYnkgaW5wdXQgZm9ybWF0CisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFVucm9sbEhhbGZUb0Zsb2F0KF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHdJbltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDhOdW1iZXIqIGFjY3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKworICAgIGludCBuQ2hhbiAgICAgID0gVF9DSEFOTkVMUyhpbmZvIC0+IElucHV0Rm9ybWF0KTsKKyAgICBpbnQgRG9Td2FwICAgICA9IFRfRE9TV0FQKGluZm8gLT5JbnB1dEZvcm1hdCk7CisgICAgaW50IFJldmVyc2UgICAgPSBUX0ZMQVZPUihpbmZvIC0+SW5wdXRGb3JtYXQpOworICAgIGludCBTd2FwRmlyc3QgID0gVF9TV0FQRklSU1QoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhICAgICAgPSBUX0VYVFJBKGluZm8gLT4gSW5wdXRGb3JtYXQpOworICAgIGludCBFeHRyYUZpcnN0ID0gRG9Td2FwIF4gU3dhcEZpcnN0OworICAgIGludCBQbGFuYXIgICAgID0gVF9QTEFOQVIoaW5mbyAtPiBJbnB1dEZvcm1hdCk7CisgICAgY21zRmxvYXQzMk51bWJlciB2OworICAgIGludCBpLCBzdGFydCA9IDA7CisgICAgY21zRmxvYXQzMk51bWJlciBtYXhpbXVtID0gSXNJbmtTcGFjZShpbmZvIC0+SW5wdXRGb3JtYXQpID8gMTAwLjBGIDogMS4wRjsKKworCisgICAgaWYgKEV4dHJhRmlyc3QpCisgICAgICAgICAgICBzdGFydCA9IEV4dHJhOworCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKworICAgICAgICBpZiAoUGxhbmFyKQorICAgICAgICAgICAgdiA9ICBfY21zSGFsZjJGbG9hdCAoICgoY21zVUludDE2TnVtYmVyKikgYWNjdW0pWyhpICsgc3RhcnQpICogU3RyaWRlXSApOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2ID0gIF9jbXNIYWxmMkZsb2F0ICggKChjbXNVSW50MTZOdW1iZXIqKSBhY2N1bSlbaSArIHN0YXJ0XSApIDsKKworICAgICAgICB2IC89IG1heGltdW07CisKKyAgICAgICAgd0luW2luZGV4XSA9IFJldmVyc2UgPyAxIC0gdiA6IHY7CisgICAgfQorCisKKyAgICBpZiAoRXh0cmEgPT0gMCAmJiBTd2FwRmlyc3QpIHsKKyAgICAgICAgY21zRmxvYXQzMk51bWJlciB0bXAgPSB3SW5bMF07CisKKyAgICAgICAgbWVtbW92ZSgmd0luWzBdLCAmd0luWzFdLCAobkNoYW4tMSkgKiBzaXplb2YoY21zRmxvYXQzMk51bWJlcikpOworICAgICAgICB3SW5bbkNoYW4tMV0gPSB0bXA7CisgICAgfQorCisgICAgaWYgKFRfUExBTkFSKGluZm8gLT4gSW5wdXRGb3JtYXQpKQorICAgICAgICByZXR1cm4gYWNjdW0gKyBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBhY2N1bSArIChuQ2hhbiArIEV4dHJhKSAqIHNpemVvZihjbXNVSW50MTZOdW1iZXIpOworfQorCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tIYWxmRnJvbTE2KHJlZ2lzdGVyIF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQxNk51bWJlciB3T3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCit7CisgICAgaW50IG5DaGFuICAgICAgPSBUX0NIQU5ORUxTKGluZm8gLT4gT3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgRG9Td2FwICAgICA9IFRfRE9TV0FQKGluZm8gLT5PdXRwdXRGb3JtYXQpOworICAgIGludCBSZXZlcnNlICAgID0gVF9GTEFWT1IoaW5mbyAtPk91dHB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhICAgICAgPSBUX0VYVFJBKGluZm8gLT4gT3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgU3dhcEZpcnN0ICA9IFRfU1dBUEZJUlNUKGluZm8gLT4gT3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgUGxhbmFyICAgICA9IFRfUExBTkFSKGluZm8gLT4gT3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgRXh0cmFGaXJzdCA9IERvU3dhcCBeIFN3YXBGaXJzdDsKKyAgICBjbXNGbG9hdDMyTnVtYmVyIG1heGltdW0gPSBJc0lua1NwYWNlKGluZm8gLT5PdXRwdXRGb3JtYXQpID8gNjU1LjM1RiA6IDY1NTM1LjBGOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgdiA9IDA7CisgICAgY21zVUludDE2TnVtYmVyKiBzd2FwMSA9IChjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQ7CisgICAgaW50IGksIHN0YXJ0ID0gMDsKKworICAgIGlmIChFeHRyYUZpcnN0KQorICAgICAgICBzdGFydCA9IEV4dHJhOworCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbjsgaSsrKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gRG9Td2FwID8gKG5DaGFuIC0gaSAtIDEpIDogaTsKKworICAgICAgICB2ID0gKGNtc0Zsb2F0MzJOdW1iZXIpIHdPdXRbaW5kZXhdIC8gbWF4aW11bTsKKworICAgICAgICBpZiAoUmV2ZXJzZSkKKyAgICAgICAgICAgIHYgPSBtYXhpbXVtIC0gdjsKKworICAgICAgICBpZiAoUGxhbmFyKQorICAgICAgICAgICAgKChjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQpWyhpICsgc3RhcnQgKSAqIFN0cmlkZV09IF9jbXNGbG9hdDJIYWxmKHYpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAoKGNtc1VJbnQxNk51bWJlciopIG91dHB1dClbaSArIHN0YXJ0XSA9ICBfY21zRmxvYXQySGFsZih2KTsKKyAgICB9CisKKyAgICBpZiAoIUV4dHJhRmlyc3QpIHsKKyAgICAgICAgb3V0cHV0ICs9IEV4dHJhICogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcik7CisgICAgfQorCisgIGlmIChFeHRyYSA9PSAwICYmIFN3YXBGaXJzdCkgeworCisgICAgICAgICBtZW1tb3ZlKHN3YXAxICsgMSwgc3dhcDEsIChuQ2hhbi0xKSogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikpOworICAgICAgICAqc3dhcDEgPSBfY21zRmxvYXQySGFsZih2KTsKKyAgICB9CisKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBPdXRwdXRGb3JtYXQpKQorICAgICAgICByZXR1cm4gb3V0cHV0ICsgc2l6ZW9mKGNtc1VJbnQxNk51bWJlcik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gb3V0cHV0ICsgbkNoYW4gKiBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKK30KKworCisKK3N0YXRpYworY21zVUludDhOdW1iZXIqIFBhY2tIYWxmRnJvbUZsb2F0KF9jbXNUUkFOU0ZPUk0qIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHdPdXRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGludCBuQ2hhbiAgICAgID0gVF9DSEFOTkVMUyhpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IERvU3dhcCAgICAgPSBUX0RPU1dBUChpbmZvIC0+T3V0cHV0Rm9ybWF0KTsKKyAgICBpbnQgUmV2ZXJzZSAgICA9IFRfRkxBVk9SKGluZm8gLT5PdXRwdXRGb3JtYXQpOworICAgIGludCBFeHRyYSAgICAgID0gVF9FWFRSQShpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IFN3YXBGaXJzdCAgPSBUX1NXQVBGSVJTVChpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IFBsYW5hciAgICAgPSBUX1BMQU5BUihpbmZvIC0+IE91dHB1dEZvcm1hdCk7CisgICAgaW50IEV4dHJhRmlyc3QgPSBEb1N3YXAgXiBTd2FwRmlyc3Q7CisgICAgY21zRmxvYXQzMk51bWJlciBtYXhpbXVtID0gSXNJbmtTcGFjZShpbmZvIC0+T3V0cHV0Rm9ybWF0KSA/IDEwMC4wRiA6IDEuMEY7CisgICAgY21zVUludDE2TnVtYmVyKiBzd2FwMSA9IChjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQ7CisgICAgY21zRmxvYXQzMk51bWJlciB2ID0gMDsKKyAgICBpbnQgaSwgc3RhcnQgPSAwOworCisgICAgaWYgKEV4dHJhRmlyc3QpCisgICAgICAgIHN0YXJ0ID0gRXh0cmE7CisKKyAgICBmb3IgKGk9MDsgaSA8IG5DaGFuOyBpKyspIHsKKworICAgICAgICBpbnQgaW5kZXggPSBEb1N3YXAgPyAobkNoYW4gLSBpIC0gMSkgOiBpOworCisgICAgICAgIHYgPSB3T3V0W2luZGV4XSAqIG1heGltdW07CisKKyAgICAgICAgaWYgKFJldmVyc2UpCisgICAgICAgICAgICB2ID0gbWF4aW11bSAtIHY7CisKKyAgICAgICAgaWYgKFBsYW5hcikKKyAgICAgICAgICAgICgoY21zVUludDE2TnVtYmVyKikgb3V0cHV0KVsoaSArIHN0YXJ0KSogU3RyaWRlXT0gX2Ntc0Zsb2F0MkhhbGYoIHYgKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKChjbXNVSW50MTZOdW1iZXIqKSBvdXRwdXQpW2kgKyBzdGFydF0gPSBfY21zRmxvYXQySGFsZiggdiApOworICAgIH0KKworICAgIGlmICghRXh0cmFGaXJzdCkgeworICAgICAgICBvdXRwdXQgKz0gRXh0cmEgKiBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKKyAgICB9CisKKyAgIGlmIChFeHRyYSA9PSAwICYmIFN3YXBGaXJzdCkgeworCisgICAgICAgICBtZW1tb3ZlKHN3YXAxICsgMSwgc3dhcDEsIChuQ2hhbi0xKSogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikpOworICAgICAgICAqc3dhcDEgPSAoY21zVUludDE2TnVtYmVyKSAgX2Ntc0Zsb2F0MkhhbGYoIHYgKTsKKyAgICB9CisKKyAgICBpZiAoVF9QTEFOQVIoaW5mbyAtPiBPdXRwdXRGb3JtYXQpKQorICAgICAgICByZXR1cm4gb3V0cHV0ICsgc2l6ZW9mKGNtc1VJbnQxNk51bWJlcik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gb3V0cHV0ICsgbkNoYW4gKiBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKK30KKworI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitzdGF0aWMgY21zRm9ybWF0dGVyczE2IElucHV0Rm9ybWF0dGVyczE2W10gPSB7CisKKyAgICAvLyAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFzayAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uCisgICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB7IFRZUEVfTGFiX0RCTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllQTEFOQVJ8QU5ZRVhUUkEsICAgVW5yb2xsTGFiRG91YmxlVG8xNn0sCisgICAgeyBUWVBFX1hZWl9EQkwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZUExBTkFSfEFOWUVYVFJBLCAgIFVucm9sbFhZWkRvdWJsZVRvMTZ9LAorICAgIHsgVFlQRV9MYWJfRkxULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVBMQU5BUnxBTllFWFRSQSwgICBVbnJvbGxMYWJGbG9hdFRvMTZ9LAorICAgIHsgVFlQRV9YWVpfRkxULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVBMQU5BUnxBTllFWFRSQSwgICBVbnJvbGxYWVpGbG9hdFRvMTZ9LAorICAgIHsgVFlQRV9HUkFZX0RCTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgICBVbnJvbGxEb3VibGUxQ2hhbn0sCisgICAgeyBGTE9BVF9TSCgxKXxCWVRFU19TSCgwKSwgQU5ZQ0hBTk5FTFN8QU5ZUExBTkFSfEFOWVNXQVBGSVJTVHxBTllGTEFWT1J8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllTV0FQfEFOWUVYVFJBfEFOWVNQQUNFLCAgIFVucm9sbERvdWJsZVRvMTZ9LAorICAgIHsgRkxPQVRfU0goMSl8QllURVNfU0goNCksIEFOWUNIQU5ORUxTfEFOWVBMQU5BUnxBTllTV0FQRklSU1R8QU5ZRkxBVk9SfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZU1dBUHxBTllFWFRSQXxBTllTUEFDRSwgICBVbnJvbGxGbG9hdFRvMTZ9LAorI2lmbmRlZiBDTVNfTk9fSEFMRl9TVVBQT1JUIAorICAgIHsgRkxPQVRfU0goMSl8QllURVNfU0goMiksIEFOWUNIQU5ORUxTfEFOWVBMQU5BUnxBTllTV0FQRklSU1R8QU5ZRkxBVk9SfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllFWFRSQXxBTllTV0FQfEFOWVNQQUNFLCAgIFVucm9sbEhhbGZUbzE2fSwKKyNlbmRpZgorCisgICAgeyBDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFVucm9sbDFCeXRlfSwKKyAgICB7IENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDEpfEVYVFJBX1NIKDEpLCAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsMUJ5dGVTa2lwMX0sCisgICAgeyBDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgxKXxFWFRSQV9TSCgyKSwgICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFVucm9sbDFCeXRlU2tpcDJ9LAorICAgIHsgQ0hBTk5FTFNfU0goMSl8QllURVNfU0goMSl8RkxBVk9SX1NIKDEpLCAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBVbnJvbGwxQnl0ZVJldmVyc2VkfSwKKyAgICB7IENPTE9SU1BBQ0VfU0goUFRfTUNIMil8Q0hBTk5FTFNfU0goMil8QllURVNfU0goMSksICAgICAgICAgICAgICAwLCAgVW5yb2xsMkJ5dGVzfSwKKworICAgIHsgVFlQRV9MYWJWMl84LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICBVbnJvbGxMYWJWMl84IH0sCisgICAgeyBUWVBFX0FMYWJWMl84LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIFVucm9sbEFMYWJWMl84IH0sCisgICAgeyBUWVBFX0xhYlYyXzE2LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIFVucm9sbExhYlYyXzE2IH0sCisKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsM0J5dGVzfSwKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfERPU1dBUF9TSCgxKSwgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsM0J5dGVzU3dhcH0sCisgICAgeyBDSEFOTkVMU19TSCgzKXxFWFRSQV9TSCgxKXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSksICAgICBBTllTUEFDRSwgIFVucm9sbDNCeXRlc1NraXAxU3dhcH0sCisgICAgeyBDSEFOTkVMU19TSCgzKXxFWFRSQV9TSCgxKXxCWVRFU19TSCgxKXxTV0FQRklSU1RfU0goMSksICBBTllTUEFDRSwgIFVucm9sbDNCeXRlc1NraXAxU3dhcEZpcnN0fSwKKworICAgIHsgQ0hBTk5FTFNfU0goMyl8RVhUUkFfU0goMSl8QllURVNfU0goMSl8RE9TV0FQX1NIKDEpfFNXQVBGSVJTVF9TSCgxKSwgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBVbnJvbGwzQnl0ZXNTa2lwMVN3YXBTd2FwRmlyc3R9LAorCisgICAgeyBDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFVucm9sbDRCeXRlc30sCisgICAgeyBDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgxKXxGTEFWT1JfU0goMSksICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFVucm9sbDRCeXRlc1JldmVyc2V9LAorICAgIHsgQ0hBTk5FTFNfU0goNCl8QllURVNfU0goMSl8U1dBUEZJUlNUX1NIKDEpLCAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBVbnJvbGw0Qnl0ZXNTd2FwRmlyc3R9LAorICAgIHsgQ0hBTk5FTFNfU0goNCl8QllURVNfU0goMSl8RE9TV0FQX1NIKDEpLCAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBVbnJvbGw0Qnl0ZXNTd2FwfSwKKyAgICB7IENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDEpfERPU1dBUF9TSCgxKXxTV0FQRklSU1RfU0goMSksIEFOWVNQQUNFLCAgVW5yb2xsNEJ5dGVzU3dhcFN3YXBGaXJzdH0sCisKKyAgICB7IEJZVEVTX1NIKDEpfFBMQU5BUl9TSCgxKSwgQU5ZRkxBVk9SfEFOWVNXQVBGSVJTVHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZU1dBUHxBTllFWFRSQXxBTllDSEFOTkVMU3xBTllTUEFDRSwgVW5yb2xsUGxhbmFyQnl0ZXN9LAorCisgICAgeyBCWVRFU19TSCgxKSwgICAgQU5ZRkxBVk9SfEFOWVNXQVBGSVJTVHxBTllTV0FQfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWUVYVFJBfEFOWUNIQU5ORUxTfEFOWVNQQUNFLCBVbnJvbGxDaHVua3lCeXRlc30sCisKKyAgICB7IENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsMVdvcmR9LAorICAgIHsgQ0hBTk5FTFNfU0goMSl8QllURVNfU0goMil8RkxBVk9SX1NIKDEpLCAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBVbnJvbGwxV29yZFJldmVyc2VkfSwKKyAgICB7IENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDIpfEVYVFJBX1NIKDMpLCAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsMVdvcmRTa2lwM30sCisKKyAgICB7IENIQU5ORUxTX1NIKDIpfEJZVEVTX1NIKDIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsMldvcmRzfSwKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsM1dvcmRzfSwKKyAgICB7IENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsNFdvcmRzfSwKKworICAgIHsgQ0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RE9TV0FQX1NIKDEpLCAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBVbnJvbGwzV29yZHNTd2FwfSwKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfEVYVFJBX1NIKDEpfFNXQVBGSVJTVF9TSCgxKSwgIEFOWVNQQUNFLCAgVW5yb2xsM1dvcmRzU2tpcDFTd2FwRmlyc3R9LAorICAgIHsgQ0hBTk5FTFNfU0goMyl8QllURVNfU0goMil8RVhUUkFfU0goMSl8RE9TV0FQX1NIKDEpLCAgICAgQU5ZU1BBQ0UsICBVbnJvbGwzV29yZHNTa2lwMVN3YXB9LAorICAgIHsgQ0hBTk5FTFNfU0goNCl8QllURVNfU0goMil8RkxBVk9SX1NIKDEpLCAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBVbnJvbGw0V29yZHNSZXZlcnNlfSwKKyAgICB7IENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDIpfFNXQVBGSVJTVF9TSCgxKSwgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsNFdvcmRzU3dhcEZpcnN0fSwKKyAgICB7IENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDIpfERPU1dBUF9TSCgxKSwgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgVW5yb2xsNFdvcmRzU3dhcH0sCisgICAgeyBDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSl8U1dBUEZJUlNUX1NIKDEpLCBBTllTUEFDRSwgIFVucm9sbDRXb3Jkc1N3YXBTd2FwRmlyc3R9LAorCisKKyAgICB7IEJZVEVTX1NIKDIpfFBMQU5BUl9TSCgxKSwgIEFOWUZMQVZPUnxBTllTV0FQfEFOWUVORElBTnxBTllFWFRSQXxBTllDSEFOTkVMU3xBTllTUEFDRSwgIFVucm9sbFBsYW5hcldvcmRzfSwKKyAgICB7IEJZVEVTX1NIKDIpLCAgQU5ZRkxBVk9SfEFOWVNXQVBGSVJTVHxBTllTV0FQfEFOWUVORElBTnxBTllFWFRSQXxBTllDSEFOTkVMU3xBTllTUEFDRSwgIFVucm9sbEFueVdvcmRzfSwKK307CisKKworCitzdGF0aWMgY21zRm9ybWF0dGVyc0Zsb2F0IElucHV0Rm9ybWF0dGVyc0Zsb2F0W10gPSB7CisKKyAgICAvLyAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFzayAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uCisgICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB7ICAgICBUWVBFX0xhYl9EQkwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllQTEFOQVJ8QU5ZRVhUUkEsICAgVW5yb2xsTGFiRG91YmxlVG9GbG9hdH0sCisgICAgeyAgICAgVFlQRV9MYWJfRkxULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZUExBTkFSfEFOWUVYVFJBLCAgIFVucm9sbExhYkZsb2F0VG9GbG9hdH0sCisKKyAgICB7ICAgICBUWVBFX1hZWl9EQkwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllQTEFOQVJ8QU5ZRVhUUkEsICAgVW5yb2xsWFlaRG91YmxlVG9GbG9hdH0sCisgICAgeyAgICAgVFlQRV9YWVpfRkxULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZUExBTkFSfEFOWUVYVFJBLCAgIFVucm9sbFhZWkZsb2F0VG9GbG9hdH0sCisKKyAgICB7ICAgICBGTE9BVF9TSCgxKXxCWVRFU19TSCg0KSwgQU5ZUExBTkFSfEFOWVNXQVBGSVJTVHxBTllTV0FQfEFOWUVYVFJBfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZQ0hBTk5FTFN8QU5ZU1BBQ0UsICBVbnJvbGxGbG9hdHNUb0Zsb2F0fSwKKworICAgIHsgICAgIEZMT0FUX1NIKDEpfEJZVEVTX1NIKDApLCBBTllQTEFOQVJ8QU5ZU1dBUEZJUlNUfEFOWVNXQVB8QU5ZRVhUUkF8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWUNIQU5ORUxTfEFOWVNQQUNFLCAgVW5yb2xsRG91Ymxlc1RvRmxvYXR9LAorI2lmbmRlZiBDTVNfTk9fSEFMRl9TVVBQT1JUIAorICAgIHsgICAgIEZMT0FUX1NIKDEpfEJZVEVTX1NIKDIpLCBBTllQTEFOQVJ8QU5ZU1dBUEZJUlNUfEFOWVNXQVB8QU5ZRVhUUkF8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWUNIQU5ORUxTfEFOWVNQQUNFLCAgVW5yb2xsSGFsZlRvRmxvYXR9LAorI2VuZGlmCit9OworCisKKy8vIEJpdCBmaWVsZHMgc2V0IHRvIG9uZSBpbiB0aGUgbWFzayBhcmUgbm90IGNvbXBhcmVkCitzdGF0aWMKK2Ntc0Zvcm1hdHRlciBfY21zR2V0U3RvY2tJbnB1dEZvcm1hdHRlcihjbXNVSW50MzJOdW1iZXIgZHdJbnB1dCwgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgY21zRm9ybWF0dGVyIGZyOworCisgICAgc3dpdGNoIChkd0ZsYWdzKSB7CisKKyAgICBjYXNlIENNU19QQUNLX0ZMQUdTXzE2QklUUzogeworICAgICAgICBmb3IgKGk9MDsgaSA8IHNpemVvZihJbnB1dEZvcm1hdHRlcnMxNikgLyBzaXplb2YoY21zRm9ybWF0dGVyczE2KTsgaSsrKSB7CisgICAgICAgICAgICBjbXNGb3JtYXR0ZXJzMTYqIGYgPSBJbnB1dEZvcm1hdHRlcnMxNiArIGk7CisKKyAgICAgICAgICAgIGlmICgoZHdJbnB1dCAmIH5mIC0+TWFzaykgPT0gZiAtPlR5cGUpIHsKKyAgICAgICAgICAgICAgICBmci5GbXQxNiA9IGYgLT5Gcm07CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGJyZWFrOworCisgICAgY2FzZSBDTVNfUEFDS19GTEFHU19GTE9BVDogeworICAgICAgICBmb3IgKGk9MDsgaSA8IHNpemVvZihJbnB1dEZvcm1hdHRlcnNGbG9hdCkgLyBzaXplb2YoY21zRm9ybWF0dGVyc0Zsb2F0KTsgaSsrKSB7CisgICAgICAgICAgICBjbXNGb3JtYXR0ZXJzRmxvYXQqIGYgPSBJbnB1dEZvcm1hdHRlcnNGbG9hdCArIGk7CisKKyAgICAgICAgICAgIGlmICgoZHdJbnB1dCAmIH5mIC0+TWFzaykgPT0gZiAtPlR5cGUpIHsKKyAgICAgICAgICAgICAgICBmci5GbXRGbG9hdCA9IGYgLT5Gcm07CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGJyZWFrOworCisgICAgZGVmYXVsdDo7CisKKyAgICB9CisKKyAgICBmci5GbXQxNiA9IE5VTEw7CisgICAgcmV0dXJuIGZyOworfQorCitzdGF0aWMgY21zRm9ybWF0dGVyczE2IE91dHB1dEZvcm1hdHRlcnMxNltdID0geworICAgIC8vICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXNrICAgICAgICAgICAgICAgICAgRnVuY3Rpb24KKyAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgeyBUWVBFX0xhYl9EQkwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllQTEFOQVJ8QU5ZRVhUUkEsICBQYWNrTGFiRG91YmxlRnJvbTE2fSwKKyAgICB7IFRZUEVfWFlaX0RCTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVBMQU5BUnxBTllFWFRSQSwgIFBhY2tYWVpEb3VibGVGcm9tMTZ9LAorCisgICAgeyBUWVBFX0xhYl9GTFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllQTEFOQVJ8QU5ZRVhUUkEsICBQYWNrTGFiRmxvYXRGcm9tMTZ9LAorICAgIHsgVFlQRV9YWVpfRkxULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZUExBTkFSfEFOWUVYVFJBLCAgUGFja1hZWkZsb2F0RnJvbTE2fSwKKyAgICAKKyAgICB7IEZMT0FUX1NIKDEpfEJZVEVTX1NIKDApLCAgICAgIEFOWUZMQVZPUnxBTllTV0FQRklSU1R8QU5ZU1dBUHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWUNIQU5ORUxTfEFOWVBMQU5BUnxBTllFWFRSQXxBTllTUEFDRSwgIFBhY2tEb3VibGVGcm9tMTZ9LAorICAgIHsgRkxPQVRfU0goMSl8QllURVNfU0goNCksICAgICAgQU5ZRkxBVk9SfEFOWVNXQVBGSVJTVHxBTllTV0FQfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZQ0hBTk5FTFN8QU5ZUExBTkFSfEFOWUVYVFJBfEFOWVNQQUNFLCAgUGFja0Zsb2F0RnJvbTE2fSwKKyNpZm5kZWYgQ01TX05PX0hBTEZfU1VQUE9SVCAKKyAgICB7IEZMT0FUX1NIKDEpfEJZVEVTX1NIKDIpLCAgICAgIEFOWUZMQVZPUnxBTllTV0FQRklSU1R8QU5ZU1dBUHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWUNIQU5ORUxTfEFOWVBMQU5BUnxBTllFWFRSQXxBTllTUEFDRSwgIFBhY2tIYWxmRnJvbTE2fSwKKyNlbmRpZgorCisgICAgeyBDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrMUJ5dGV9LAorICAgIHsgQ0hBTk5FTFNfU0goMSl8QllURVNfU0goMSl8RVhUUkFfU0goMSksICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgUGFjazFCeXRlU2tpcDF9LAorICAgIHsgQ0hBTk5FTFNfU0goMSl8QllURVNfU0goMSl8RVhUUkFfU0goMSl8U1dBUEZJUlNUX1NIKDEpLCAgICAgIEFOWVNQQUNFLCAgUGFjazFCeXRlU2tpcDFTd2FwRmlyc3R9LAorCisgICAgeyBDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgxKXxGTEFWT1JfU0goMSksICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrMUJ5dGVSZXZlcnNlZH0sCisKKyAgICB7IFRZUEVfTGFiVjJfOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIFBhY2tMYWJWMl84IH0sCisgICAgeyBUWVBFX0FMYWJWMl84LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICBQYWNrQUxhYlYyXzggfSwKKyAgICB7IFRZUEVfTGFiVjJfMTYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIFBhY2tMYWJWMl8xNiB9LAorCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxPUFRJTUlaRURfU0goMSksICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrM0J5dGVzT3B0aW1pemVkfSwKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfEVYVFJBX1NIKDEpfE9QVElNSVpFRF9TSCgxKSwgICAgICBBTllTUEFDRSwgIFBhY2szQnl0ZXNBbmRTa2lwMU9wdGltaXplZH0sCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxFWFRSQV9TSCgxKXxTV0FQRklSU1RfU0goMSl8T1BUSU1JWkVEX1NIKDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgUGFjazNCeXRlc0FuZFNraXAxU3dhcEZpcnN0T3B0aW1pemVkfSwKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfEVYVFJBX1NIKDEpfERPU1dBUF9TSCgxKXxTV0FQRklSU1RfU0goMSl8T1BUSU1JWkVEX1NIKDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgUGFjazNCeXRlc0FuZFNraXAxU3dhcFN3YXBGaXJzdE9wdGltaXplZH0sCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSl8RVhUUkFfU0goMSl8T1BUSU1JWkVEX1NIKDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgUGFjazNCeXRlc0FuZFNraXAxU3dhcE9wdGltaXplZH0sCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSl8T1BUSU1JWkVEX1NIKDEpLCAgICAgQU5ZU1BBQ0UsICBQYWNrM0J5dGVzU3dhcE9wdGltaXplZH0sCisKKworCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrM0J5dGVzfSwKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDEpfEVYVFJBX1NIKDEpLCAgICAgICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFBhY2szQnl0ZXNBbmRTa2lwMX0sCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxFWFRSQV9TSCgxKXxTV0FQRklSU1RfU0goMSksICAgICAgQU5ZU1BBQ0UsICBQYWNrM0J5dGVzQW5kU2tpcDFTd2FwRmlyc3R9LAorICAgIHsgQ0hBTk5FTFNfU0goMyl8QllURVNfU0goMSl8RVhUUkFfU0goMSl8RE9TV0FQX1NIKDEpfFNXQVBGSVJTVF9TSCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFBhY2szQnl0ZXNBbmRTa2lwMVN3YXBTd2FwRmlyc3R9LAorICAgIHsgQ0hBTk5FTFNfU0goMyl8QllURVNfU0goMSl8RE9TV0FQX1NIKDEpfEVYVFJBX1NIKDEpLCAgICAgICAgIEFOWVNQQUNFLCAgUGFjazNCeXRlc0FuZFNraXAxU3dhcH0sCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSksICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrM0J5dGVzU3dhcH0sCisgICAgeyBDSEFOTkVMU19TSCg2KXxCWVRFU19TSCgxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrNkJ5dGVzfSwKKyAgICB7IENIQU5ORUxTX1NIKDYpfEJZVEVTX1NIKDEpfERPU1dBUF9TSCgxKSwgICAgICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFBhY2s2Qnl0ZXNTd2FwfSwKKyAgICB7IENIQU5ORUxTX1NIKDQpfEJZVEVTX1NIKDEpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFBhY2s0Qnl0ZXN9LAorICAgIHsgQ0hBTk5FTFNfU0goNCl8QllURVNfU0goMSl8RkxBVk9SX1NIKDEpLCAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgUGFjazRCeXRlc1JldmVyc2V9LAorICAgIHsgQ0hBTk5FTFNfU0goNCl8QllURVNfU0goMSl8U1dBUEZJUlNUX1NIKDEpLCAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgUGFjazRCeXRlc1N3YXBGaXJzdH0sCisgICAgeyBDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSksICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrNEJ5dGVzU3dhcH0sCisgICAgeyBDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgxKXxET1NXQVBfU0goMSl8U1dBUEZJUlNUX1NIKDEpLCAgICAgQU5ZU1BBQ0UsICBQYWNrNEJ5dGVzU3dhcFN3YXBGaXJzdH0sCisKKyAgICB7IEJZVEVTX1NIKDEpLCAgICAgICAgICAgICAgICAgQU5ZRkxBVk9SfEFOWVNXQVBGSVJTVHxBTllTV0FQfEFOWUVYVFJBfEFOWUNIQU5ORUxTfEFOWVNQQUNFLCBQYWNrQW55Qnl0ZXN9LAorICAgIHsgQllURVNfU0goMSl8UExBTkFSX1NIKDEpLCAgICBBTllGTEFWT1J8QU5ZU1dBUEZJUlNUfEFOWVNXQVB8QU5ZRVhUUkF8QU5ZQ0hBTk5FTFN8QU5ZU1BBQ0UsIFBhY2tQbGFuYXJCeXRlc30sCisKKyAgICB7IENIQU5ORUxTX1NIKDEpfEJZVEVTX1NIKDIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFBhY2sxV29yZH0sCisgICAgeyBDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgyKXxFWFRSQV9TSCgxKSwgICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrMVdvcmRTa2lwMX0sCisgICAgeyBDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgyKXxFWFRSQV9TSCgxKXxTV0FQRklSU1RfU0goMSksICAgICAgQU5ZU1BBQ0UsICBQYWNrMVdvcmRTa2lwMVN3YXBGaXJzdH0sCisgICAgeyBDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgyKXxGTEFWT1JfU0goMSksICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrMVdvcmRSZXZlcnNlZH0sCisgICAgeyBDSEFOTkVMU19TSCgxKXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSwgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrMVdvcmRCaWdFbmRpYW59LAorICAgIHsgQ0hBTk5FTFNfU0goMyl8QllURVNfU0goMiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgUGFjazNXb3Jkc30sCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSksICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrM1dvcmRzU3dhcH0sCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSwgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrM1dvcmRzQmlnRW5kaWFufSwKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfEVYVFJBX1NIKDEpLCAgICAgICAgICAgICAgICAgICAgICBBTllTUEFDRSwgIFBhY2szV29yZHNBbmRTa2lwMX0sCisgICAgeyBDSEFOTkVMU19TSCgzKXxCWVRFU19TSCgyKXxFWFRSQV9TSCgxKXxET1NXQVBfU0goMSksICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrM1dvcmRzQW5kU2tpcDFTd2FwfSwKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfEVYVFJBX1NIKDEpfFNXQVBGSVJTVF9TSCgxKSwgICAgICBBTllTUEFDRSwgIFBhY2szV29yZHNBbmRTa2lwMVN3YXBGaXJzdH0sCisKKyAgICB7IENIQU5ORUxTX1NIKDMpfEJZVEVTX1NIKDIpfEVYVFJBX1NIKDEpfERPU1dBUF9TSCgxKXxTV0FQRklSU1RfU0goMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrM1dvcmRzQW5kU2tpcDFTd2FwU3dhcEZpcnN0fSwKKworICAgIHsgQ0hBTk5FTFNfU0goNCl8QllURVNfU0goMiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgUGFjazRXb3Jkc30sCisgICAgeyBDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgyKXxGTEFWT1JfU0goMSksICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrNFdvcmRzUmV2ZXJzZX0sCisgICAgeyBDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSksICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrNFdvcmRzU3dhcH0sCisgICAgeyBDSEFOTkVMU19TSCg0KXxCWVRFU19TSCgyKXxFTkRJQU4xNl9TSCgxKSwgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrNFdvcmRzQmlnRW5kaWFufSwKKworICAgIHsgQ0hBTk5FTFNfU0goNil8QllURVNfU0goMiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWVNQQUNFLCAgUGFjazZXb3Jkc30sCisgICAgeyBDSEFOTkVMU19TSCg2KXxCWVRFU19TSCgyKXxET1NXQVBfU0goMSksICAgICAgICAgICAgICAgICAgICAgQU5ZU1BBQ0UsICBQYWNrNldvcmRzU3dhcH0sCisKKyAgICB7IEJZVEVTX1NIKDIpfFBMQU5BUl9TSCgxKSwgICAgIEFOWUZMQVZPUnxBTllFTkRJQU58QU5ZU1dBUHxBTllFWFRSQXxBTllDSEFOTkVMU3xBTllTUEFDRSwgUGFja1BsYW5hcldvcmRzfSwKKyAgICB7IEJZVEVTX1NIKDIpLCAgICAgICAgICAgICAgICAgIEFOWUZMQVZPUnxBTllTV0FQRklSU1R8QU5ZU1dBUHxBTllFTkRJQU58QU5ZRVhUUkF8QU5ZQ0hBTk5FTFN8QU5ZU1BBQ0UsIFBhY2tBbnlXb3Jkc30KKworfTsKKworCitzdGF0aWMgY21zRm9ybWF0dGVyc0Zsb2F0IE91dHB1dEZvcm1hdHRlcnNGbG9hdFtdID0geworICAgIC8vICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb24KKyAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHsgICAgIFRZUEVfTGFiX0ZMVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllQTEFOQVJ8QU5ZRVhUUkEsICAgUGFja0xhYkZsb2F0RnJvbUZsb2F0fSwKKyAgICB7ICAgICBUWVBFX1hZWl9GTFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZUExBTkFSfEFOWUVYVFJBLCAgIFBhY2tYWVpGbG9hdEZyb21GbG9hdH0sCisKKyAgICB7ICAgICBUWVBFX0xhYl9EQkwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5ZUExBTkFSfEFOWUVYVFJBLCAgIFBhY2tMYWJEb3VibGVGcm9tRmxvYXR9LAorICAgIHsgICAgIFRZUEVfWFlaX0RCTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllQTEFOQVJ8QU5ZRVhUUkEsICAgUGFja1hZWkRvdWJsZUZyb21GbG9hdH0sCisKKyAgICB7ICAgICBGTE9BVF9TSCgxKXxCWVRFU19TSCg0KSwgQU5ZUExBTkFSfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllGTEFWT1J8QU5ZU1dBUEZJUlNUfEFOWVNXQVB8QU5ZRVhUUkF8QU5ZQ0hBTk5FTFN8QU5ZU1BBQ0UsICAgUGFja0Zsb2F0c0Zyb21GbG9hdCB9LAorICAgIHsgICAgIEZMT0FUX1NIKDEpfEJZVEVTX1NIKDApLCBBTllQTEFOQVJ8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWUZMQVZPUnxBTllTV0FQRklSU1R8QU5ZU1dBUHxBTllFWFRSQXxBTllDSEFOTkVMU3xBTllTUEFDRSwgICBQYWNrRG91Ymxlc0Zyb21GbG9hdCB9LAorI2lmbmRlZiBDTVNfTk9fSEFMRl9TVVBQT1JUIAorICAgIHsgICAgIEZMT0FUX1NIKDEpfEJZVEVTX1NIKDIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOWUZMQVZPUnxBTllTV0FQRklSU1R8QU5ZU1dBUHxBTllFWFRSQXxBTllDSEFOTkVMU3xBTllTUEFDRSwgICBQYWNrSGFsZkZyb21GbG9hdCB9LAorI2VuZGlmCisKKworCit9OworCisKKy8vIEJpdCBmaWVsZHMgc2V0IHRvIG9uZSBpbiB0aGUgbWFzayBhcmUgbm90IGNvbXBhcmVkCitzdGF0aWMKK2Ntc0Zvcm1hdHRlciBfY21zR2V0U3RvY2tPdXRwdXRGb3JtYXR0ZXIoY21zVUludDMyTnVtYmVyIGR3SW5wdXQsIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpOworICAgIGNtc0Zvcm1hdHRlciBmcjsKKworCisgICAgc3dpdGNoIChkd0ZsYWdzKQorICAgIHsKKworICAgICBjYXNlIENNU19QQUNLX0ZMQUdTXzE2QklUUzogeworCisgICAgICAgIGZvciAoaT0wOyBpIDwgc2l6ZW9mKE91dHB1dEZvcm1hdHRlcnMxNikgLyBzaXplb2YoY21zRm9ybWF0dGVyczE2KTsgaSsrKSB7CisgICAgICAgICAgICBjbXNGb3JtYXR0ZXJzMTYqIGYgPSBPdXRwdXRGb3JtYXR0ZXJzMTYgKyBpOworCisgICAgICAgICAgICBpZiAoKGR3SW5wdXQgJiB+ZiAtPk1hc2spID09IGYgLT5UeXBlKSB7CisgICAgICAgICAgICAgICAgZnIuRm10MTYgPSBmIC0+RnJtOworICAgICAgICAgICAgICAgIHJldHVybiBmcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDTVNfUEFDS19GTEFHU19GTE9BVDogeworCisgICAgICAgIGZvciAoaT0wOyBpIDwgc2l6ZW9mKE91dHB1dEZvcm1hdHRlcnNGbG9hdCkgLyBzaXplb2YoY21zRm9ybWF0dGVyc0Zsb2F0KTsgaSsrKSB7CisgICAgICAgICAgICBjbXNGb3JtYXR0ZXJzRmxvYXQqIGYgPSBPdXRwdXRGb3JtYXR0ZXJzRmxvYXQgKyBpOworCisgICAgICAgICAgICBpZiAoKGR3SW5wdXQgJiB+ZiAtPk1hc2spID09IGYgLT5UeXBlKSB7CisgICAgICAgICAgICAgICAgZnIuRm10RmxvYXQgPSBmIC0+RnJtOworICAgICAgICAgICAgICAgIHJldHVybiBmcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDo7CisKKyAgICB9CisKKyAgICBmci5GbXQxNiA9IE5VTEw7CisgICAgcmV0dXJuIGZyOworfQorCisKK3R5cGVkZWYgc3RydWN0IF9jbXNfZm9ybWF0dGVyc19mYWN0b3J5X2xpc3QgeworCisgICAgY21zRm9ybWF0dGVyRmFjdG9yeSBGYWN0b3J5OworICAgIHN0cnVjdCBfY21zX2Zvcm1hdHRlcnNfZmFjdG9yeV9saXN0ICpOZXh0OworCit9IGNtc0Zvcm1hdHRlcnNGYWN0b3J5TGlzdDsKKworX2Ntc0Zvcm1hdHRlcnNQbHVnaW5DaHVua1R5cGUgX2Ntc0Zvcm1hdHRlcnNQbHVnaW5DaHVuayA9IHsgTlVMTCB9OworCisKKy8vIER1cGxpY2F0ZXMgdGhlIHpvbmUgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIHBsdWctaW4gaW4gdGhlIG5ldyBjb250ZXh0CitzdGF0aWMKK3ZvaWQgRHVwRm9ybWF0dGVyRmFjdG9yeUxpc3Qoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKQoreworICAgX2Ntc0Zvcm1hdHRlcnNQbHVnaW5DaHVua1R5cGUgbmV3SGVhZCA9IHsgTlVMTCB9OworICAgY21zRm9ybWF0dGVyc0ZhY3RvcnlMaXN0KiAgZW50cnk7CisgICBjbXNGb3JtYXR0ZXJzRmFjdG9yeUxpc3QqICBBbnRlcmlvciA9IE5VTEw7CisgICBfY21zRm9ybWF0dGVyc1BsdWdpbkNodW5rVHlwZSogaGVhZCA9IChfY21zRm9ybWF0dGVyc1BsdWdpbkNodW5rVHlwZSopIHNyYy0+Y2h1bmtzW0Zvcm1hdHRlcnNQbHVnaW5dOworCisgICAgIF9jbXNBc3NlcnQoaGVhZCAhPSBOVUxMKTsKKworICAgLy8gV2FsayB0aGUgbGlzdCBjb3B5aW5nIGFsbCBub2RlcworICAgZm9yIChlbnRyeSA9IGhlYWQtPkZhY3RvcnlMaXN0OworICAgICAgIGVudHJ5ICE9IE5VTEw7CisgICAgICAgZW50cnkgPSBlbnRyeSAtPk5leHQpIHsKKworICAgICAgICAgICBjbXNGb3JtYXR0ZXJzRmFjdG9yeUxpc3QgKm5ld0VudHJ5ID0gKCBjbXNGb3JtYXR0ZXJzRmFjdG9yeUxpc3QgKikgX2Ntc1N1YkFsbG9jRHVwKGN0eCAtPk1lbVBvb2wsIGVudHJ5LCBzaXplb2YoY21zRm9ybWF0dGVyc0ZhY3RvcnlMaXN0KSk7CisKKyAgICAgICAgICAgaWYgKG5ld0VudHJ5ID09IE5VTEwpIAorICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgIC8vIFdlIHdhbnQgdG8ga2VlcCB0aGUgbGlua2VkIGxpc3Qgb3JkZXIsIHNvIHRoaXMgaXMgYSBsaXR0bGUgYml0IHRyaWNreQorICAgICAgICAgICBuZXdFbnRyeSAtPiBOZXh0ID0gTlVMTDsKKyAgICAgICAgICAgaWYgKEFudGVyaW9yKQorICAgICAgICAgICAgICAgQW50ZXJpb3IgLT4gTmV4dCA9IG5ld0VudHJ5OworCisgICAgICAgICAgIEFudGVyaW9yID0gbmV3RW50cnk7CisKKyAgICAgICAgICAgaWYgKG5ld0hlYWQuRmFjdG9yeUxpc3QgPT0gTlVMTCkKKyAgICAgICAgICAgICAgIG5ld0hlYWQuRmFjdG9yeUxpc3QgPSBuZXdFbnRyeTsKKyAgIH0KKworICAgY3R4IC0+Y2h1bmtzW0Zvcm1hdHRlcnNQbHVnaW5dID0gX2Ntc1N1YkFsbG9jRHVwKGN0eC0+TWVtUG9vbCwgJm5ld0hlYWQsIHNpemVvZihfY21zRm9ybWF0dGVyc1BsdWdpbkNodW5rVHlwZSkpOworfQorCisvLyBUaGUgaW50ZXJwb2xhdGlvbiBwbHVnLWluIG1lbW9yeSBjaHVuayBhbGxvY2F0b3IvZHVwCit2b2lkIF9jbXNBbGxvY0Zvcm1hdHRlcnNQbHVnaW5DaHVuayhzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKQoreworICAgICAgX2Ntc0Fzc2VydChjdHggIT0gTlVMTCk7CisKKyAgICAgaWYgKHNyYyAhPSBOVUxMKSB7CisgICAgICAgIAorICAgICAgICAgLy8gRHVwbGljYXRlIHRoZSBMSVNUCisgICAgICAgICBEdXBGb3JtYXR0ZXJGYWN0b3J5TGlzdChjdHgsIHNyYyk7CisgICAgIH0KKyAgICAgZWxzZSB7CisgICAgICAgICAgc3RhdGljIF9jbXNGb3JtYXR0ZXJzUGx1Z2luQ2h1bmtUeXBlIEZvcm1hdHRlcnNQbHVnaW5DaHVuayA9IHsgTlVMTCB9OworICAgICAgICAgIGN0eCAtPmNodW5rc1tGb3JtYXR0ZXJzUGx1Z2luXSA9IF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCAmRm9ybWF0dGVyc1BsdWdpbkNodW5rLCBzaXplb2YoX2Ntc0Zvcm1hdHRlcnNQbHVnaW5DaHVua1R5cGUpKTsKKyAgICAgfQorfQorCisKKworLy8gRm9ybWF0dGVycyBtYW5hZ2VtZW50CitjbXNCb29sICBfY21zUmVnaXN0ZXJGb3JtYXR0ZXJzUGx1Z2luKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNQbHVnaW5CYXNlKiBEYXRhKQoreworICAgIF9jbXNGb3JtYXR0ZXJzUGx1Z2luQ2h1bmtUeXBlKiBjdHggPSAoIF9jbXNGb3JtYXR0ZXJzUGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIEZvcm1hdHRlcnNQbHVnaW4pOworICAgIGNtc1BsdWdpbkZvcm1hdHRlcnMqIFBsdWdpbiA9IChjbXNQbHVnaW5Gb3JtYXR0ZXJzKikgRGF0YTsKKyAgICBjbXNGb3JtYXR0ZXJzRmFjdG9yeUxpc3QqIGZsIDsKKworICAgIC8vIFJlc2V0IHRvIGJ1aWx0LWluIGRlZmF1bHRzCisgICAgaWYgKERhdGEgPT0gTlVMTCkgeworCisgICAgICAgICAgY3R4IC0+RmFjdG9yeUxpc3QgPSBOVUxMOworICAgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIGZsID0gKGNtc0Zvcm1hdHRlcnNGYWN0b3J5TGlzdCopIF9jbXNQbHVnaW5NYWxsb2MoQ29udGV4dElELCBzaXplb2YoY21zRm9ybWF0dGVyc0ZhY3RvcnlMaXN0KSk7CisgICAgaWYgKGZsID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIGZsIC0+RmFjdG9yeSAgICA9IFBsdWdpbiAtPkZvcm1hdHRlcnNGYWN0b3J5OworCisgICAgZmwgLT5OZXh0ID0gY3R4IC0+IEZhY3RvcnlMaXN0OworICAgIGN0eCAtPkZhY3RvcnlMaXN0ID0gZmw7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworY21zRm9ybWF0dGVyIF9jbXNHZXRGb3JtYXR0ZXIoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBUeXBlLCAgICAgICAgIC8vIFNwZWNpZmljIHR5cGUsIGkuZS4gVFlQRV9SR0JfOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGb3JtYXR0ZXJEaXJlY3Rpb24gRGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykKK3sKKyAgICBfY21zRm9ybWF0dGVyc1BsdWdpbkNodW5rVHlwZSogY3R4ID0gKCBfY21zRm9ybWF0dGVyc1BsdWdpbkNodW5rVHlwZSopIF9jbXNDb250ZXh0R2V0Q2xpZW50Q2h1bmsoQ29udGV4dElELCBGb3JtYXR0ZXJzUGx1Z2luKTsKKyAgICBjbXNGb3JtYXR0ZXJzRmFjdG9yeUxpc3QqIGY7CisKKyAgICBmb3IgKGYgPWN0eC0+RmFjdG9yeUxpc3Q7IGYgIT0gTlVMTDsgZiA9IGYgLT5OZXh0KSB7CisKKyAgICAgICAgY21zRm9ybWF0dGVyIGZuID0gZiAtPkZhY3RvcnkoVHlwZSwgRGlyLCBkd0ZsYWdzKTsKKyAgICAgICAgaWYgKGZuLkZtdDE2ICE9IE5VTEwpIHJldHVybiBmbjsKKyAgICB9CisKKyAgICAvLyBSZXZlcnQgdG8gZGVmYXVsdAorICAgIGlmIChEaXIgPT0gY21zRm9ybWF0dGVySW5wdXQpCisgICAgICAgIHJldHVybiBfY21zR2V0U3RvY2tJbnB1dEZvcm1hdHRlcihUeXBlLCBkd0ZsYWdzKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBfY21zR2V0U3RvY2tPdXRwdXRGb3JtYXR0ZXIoVHlwZSwgZHdGbGFncyk7Cit9CisKKworLy8gUmV0dXJuIHdoYXRldmVyIGdpdmVuIGZvcm1hdHRlciByZWZlcnMgdG8gZmxvYXQgdmFsdWVzCitjbXNCb29sICBfY21zRm9ybWF0dGVySXNGbG9hdChjbXNVSW50MzJOdW1iZXIgVHlwZSkKK3sKKyAgICByZXR1cm4gVF9GTE9BVChUeXBlKSA/IFRSVUUgOiBGQUxTRTsKK30KKworLy8gUmV0dXJuIHdoYXRldmVyIGdpdmVuIGZvcm1hdHRlciByZWZlcnMgdG8gOCBiaXRzCitjbXNCb29sICBfY21zRm9ybWF0dGVySXM4Yml0KGNtc1VJbnQzMk51bWJlciBUeXBlKQoreworICAgIGludCBCeXRlcyA9IFRfQllURVMoVHlwZSk7CisKKyAgICByZXR1cm4gKEJ5dGVzID09IDEpOworfQorCisvLyBCdWlsZCBhIHN1aXRhYmxlIGZvcm1hdHRlciBmb3IgdGhlIGNvbG9yc3BhY2Ugb2YgdGhpcyBwcm9maWxlCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUIGNtc0Zvcm1hdHRlckZvckNvbG9yc3BhY2VPZlByb2ZpbGUoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQzMk51bWJlciBuQnl0ZXMsIGNtc0Jvb2wgbElzRmxvYXQpCit7CisKKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENvbG9yU3BhY2UgICAgICA9IGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGUpOworICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgQ29sb3JTcGFjZUJpdHMgID0gX2Ntc0xDTVNjb2xvclNwYWNlKENvbG9yU3BhY2UpOworICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgbk91dHB1dENoYW5zICAgID0gY21zQ2hhbm5lbHNPZihDb2xvclNwYWNlKTsKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgIEZsb2F0ICAgICAgICAgICA9IGxJc0Zsb2F0ID8gMSA6IDA7CisKKyAgICAvLyBDcmVhdGUgYSBmYWtlIGZvcm1hdHRlciBmb3IgcmVzdWx0CisgICAgcmV0dXJuIEZMT0FUX1NIKEZsb2F0KSB8IENPTE9SU1BBQ0VfU0goQ29sb3JTcGFjZUJpdHMpIHwgQllURVNfU0gobkJ5dGVzKSB8IENIQU5ORUxTX1NIKG5PdXRwdXRDaGFucyk7Cit9CisKKy8vIEJ1aWxkIGEgc3VpdGFibGUgZm9ybWF0dGVyIGZvciB0aGUgY29sb3JzcGFjZSBvZiB0aGlzIHByb2ZpbGUKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zRm9ybWF0dGVyRm9yUENTT2ZQcm9maWxlKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNVSW50MzJOdW1iZXIgbkJ5dGVzLCBjbXNCb29sIGxJc0Zsb2F0KQoreworCisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvclNwYWNlICAgICAgPSBjbXNHZXRQQ1MoaFByb2ZpbGUpOworICAgIGludCAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZUJpdHMgID0gX2Ntc0xDTVNjb2xvclNwYWNlKENvbG9yU3BhY2UpOworICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgbk91dHB1dENoYW5zICAgID0gY21zQ2hhbm5lbHNPZihDb2xvclNwYWNlKTsKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgIEZsb2F0ICAgICAgICAgICA9IGxJc0Zsb2F0ID8gMSA6IDA7CisKKyAgICAvLyBDcmVhdGUgYSBmYWtlIGZvcm1hdHRlciBmb3IgcmVzdWx0CisgICAgcmV0dXJuIEZMT0FUX1NIKEZsb2F0KSB8IENPTE9SU1BBQ0VfU0goQ29sb3JTcGFjZUJpdHMpIHwgQllURVNfU0gobkJ5dGVzKSB8IENIQU5ORUxTX1NIKG5PdXRwdXRDaGFucyk7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zcGNzLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zcGNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAyY2Q3ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNwY3MuYwpAQCAtMCwwICsxLDkzMSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworCisjaW5jbHVkZSAibGNtczJfaW50ZXJuYWwuaCIKKworLy8gICAgICBpbnRlciBQQ1MgY29udmVyc2lvbnMgWFlaIDwtPiBDSUUgTCogYSogYioKKy8qCisKKworICAgICAgIENJRSAxNToyMDA0IENJRUxhYiBpcyBkZWZpbmVkIGFzOgorCisgICAgICAgTCogPSAxMTYqZihZL1luKSAtIDE2ICAgICAgICAgICAgICAgICAgICAgMCA8PSBMKiA8PSAxMDAKKyAgICAgICBhKiA9IDUwMCpbZihYL1huKSAtIGYoWS9ZbildCisgICAgICAgYiogPSAyMDAqW2YoWS9ZbikgLSBmKFovWm4pXQorCisgICAgICAgYW5kCisKKyAgICAgICAgICAgICAgZih0KSA9IHReKDEvMykgICAgICAgICAgICAgICAgICAgICAxID49IHQgPiAgKDI0LzExNileMworICAgICAgICAgICAgICAgICAgICAgKDg0MS8xMDgpKnQgKyAoMTYvMTE2KSAgICAgIDAgPD0gdCA8PSAoMjQvMTE2KV4zCisKKworICAgICAgIFJldmVyc2UgdHJhbnNmb3JtIGlzOgorCisgICAgICAgWCA9IFhuKlthKiAvIDUwMCArIChMKiArIDE2KSAvIDExNl0gXiAzICAgaWYgKFgvWG4pID4gKDI0LzExNikKKyAgICAgICAgID0gWG4qKGEqIC8gNTAwICsgTCogLyAxMTYpIC8gNy43ODcgICAgICBpZiAoWC9YbikgPD0gKDI0LzExNikKKworCisKKyAgICAgICBQQ1MgaW4gTGFiMiBpcyBlbmNvZGVkIGFzOgorCisgICAgICAgICAgICAgIDggYml0IExhYiBQQ1M6CisKKyAgICAgICAgICAgICAgICAgICAgIEwqICAgICAgMC4uMTAwIGludG8gYSAwLi5mZiBieXRlLgorICAgICAgICAgICAgICAgICAgICAgYSogICAgICB0ICsgMTI4IHJhbmdlIGlzIC0xMjguMCAgKzEyNy4wCisgICAgICAgICAgICAgICAgICAgICBiKgorCisgICAgICAgICAgICAgMTYgYml0IExhYiBQQ1M6CisKKyAgICAgICAgICAgICAgICAgICAgIEwqICAgICAwLi4xMDAgIGludG8gYSAwLi5mZjAwIHdvcmQuCisgICAgICAgICAgICAgICAgICAgICBhKiAgICAgdCArIDEyOCAgcmFuZ2UgaXMgIC0xMjguMCAgKzEyNy45OTYxCisgICAgICAgICAgICAgICAgICAgICBiKgorCisKKworSW50ZXJjaGFuZ2UgU3BhY2UgICBDb21wb25lbnQgICAgIEFjdHVhbCBSYW5nZSAgICAgICAgRW5jb2RlZCBSYW5nZQorQ0lFIFhZWiAgICAgICAgICAgICBYICAgICAgICAgICAgIDAgLT4gMS45OTk5NyAgICAgICAgMHgwMDAwIC0+IDB4ZmZmZgorQ0lFIFhZWiAgICAgICAgICAgICBZICAgICAgICAgICAgIDAgLT4gMS45OTk5NyAgICAgICAgMHgwMDAwIC0+IDB4ZmZmZgorQ0lFIFhZWiAgICAgICAgICAgICBaICAgICAgICAgICAgIDAgLT4gMS45OTk5NyAgICAgICAgMHgwMDAwIC0+IDB4ZmZmZgorCitWZXJzaW9uIDIsMworLS0tLS0tLS0tLS0KKworQ0lFTEFCICgxNiBiaXQpICAgICBMKiAgICAgICAgICAgIDAgLT4gMTAwLjAgICAgICAgICAgMHgwMDAwIC0+IDB4ZmYwMAorQ0lFTEFCICgxNiBiaXQpICAgICBhKiAgICAgICAgICAgIC0xMjguMCAtPiArMTI3Ljk5NiAgMHgwMDAwIC0+IDB4ODAwMCAtPiAweGZmZmYKK0NJRUxBQiAoMTYgYml0KSAgICAgYiogICAgICAgICAgICAtMTI4LjAgLT4gKzEyNy45OTYgIDB4MDAwMCAtPiAweDgwMDAgLT4gMHhmZmZmCisKKworVmVyc2lvbiA0CistLS0tLS0tLS0KKworQ0lFTEFCICgxNiBiaXQpICAgICBMKiAgICAgICAgICAgIDAgLT4gMTAwLjAgICAgICAgICAgMHgwMDAwIC0+IDB4ZmZmZgorQ0lFTEFCICgxNiBiaXQpICAgICBhKiAgICAgICAgICAgIC0xMjguMCAtPiArMTI3ICAgICAgMHgwMDAwIC0+IDB4ODA4MCAtPiAweGZmZmYKK0NJRUxBQiAoMTYgYml0KSAgICAgYiogICAgICAgICAgICAtMTI4LjAgLT4gKzEyNyAgICAgIDB4MDAwMCAtPiAweDgwODAgLT4gMHhmZmZmCisKKyovCisKKy8vIENvbnZlcnNpb25zCit2b2lkIENNU0VYUE9SVCBjbXNYWVoyeHlZKGNtc0NJRXh5WSogRGVzdCwgY29uc3QgY21zQ0lFWFlaKiBTb3VyY2UpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciBJU3VtOworCisgICAgSVN1bSA9IDEuLyhTb3VyY2UgLT4gWCArIFNvdXJjZSAtPiBZICsgU291cmNlIC0+IFopOworCisgICAgRGVzdCAtPiB4ID0gKFNvdXJjZSAtPiBYKSAqIElTdW07CisgICAgRGVzdCAtPiB5ID0gKFNvdXJjZSAtPiBZKSAqIElTdW07CisgICAgRGVzdCAtPiBZID0gU291cmNlIC0+IFk7Cit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc3h5WTJYWVooY21zQ0lFWFlaKiBEZXN0LCBjb25zdCBjbXNDSUV4eVkqIFNvdXJjZSkKK3sKKyAgICBEZXN0IC0+IFggPSAoU291cmNlIC0+IHggLyBTb3VyY2UgLT4geSkgKiBTb3VyY2UgLT4gWTsKKyAgICBEZXN0IC0+IFkgPSBTb3VyY2UgLT4gWTsKKyAgICBEZXN0IC0+IFogPSAoKDEgLSBTb3VyY2UgLT4geCAtIFNvdXJjZSAtPiB5KSAvIFNvdXJjZSAtPiB5KSAqIFNvdXJjZSAtPiBZOworfQorCitzdGF0aWMKK2Ntc0Zsb2F0NjROdW1iZXIgZihjbXNGbG9hdDY0TnVtYmVyIHQpCit7CisgICAgY29uc3QgY21zRmxvYXQ2NE51bWJlciBMaW1pdCA9ICgyNC4wLzExNi4wKSAqICgyNC4wLzExNi4wKSAqICgyNC4wLzExNi4wKTsKKworICAgIGlmICh0IDw9IExpbWl0KQorICAgICAgICByZXR1cm4gKDg0MS4wLzEwOC4wKSAqIHQgKyAoMTYuMC8xMTYuMCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcG93KHQsIDEuMC8zLjApOworfQorCitzdGF0aWMKK2Ntc0Zsb2F0NjROdW1iZXIgZl8xKGNtc0Zsb2F0NjROdW1iZXIgdCkKK3sKKyAgICBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIExpbWl0ID0gKDI0LjAvMTE2LjApOworCisgICAgaWYgKHQgPD0gTGltaXQpIHsKKyAgICAgICAgcmV0dXJuICgxMDguMC84NDEuMCkgKiAodCAtICgxNi4wLzExNi4wKSk7CisgICAgfQorCisgICAgcmV0dXJuIHQgKiB0ICogdDsKK30KKworCisvLyBTdGFuZGFyZCBYWVogdG8gTGFiLiBpdCBjYW4gaGFuZGxlIG5lZ2F0aXZlIFhaWSBudW1iZXJzIGluIHNvbWUgY2FzZXMKK3ZvaWQgQ01TRVhQT1JUIGNtc1hZWjJMYWIoY29uc3QgY21zQ0lFWFlaKiBXaGl0ZVBvaW50LCBjbXNDSUVMYWIqIExhYiwgY29uc3QgY21zQ0lFWFlaKiB4eXopCit7CisgICAgY21zRmxvYXQ2NE51bWJlciBmeCwgZnksIGZ6OworCisgICAgaWYgKFdoaXRlUG9pbnQgPT0gTlVMTCkKKyAgICAgICAgV2hpdGVQb2ludCA9IGNtc0Q1MF9YWVooKTsKKworICAgIGZ4ID0gZih4eXotPlggLyBXaGl0ZVBvaW50LT5YKTsKKyAgICBmeSA9IGYoeHl6LT5ZIC8gV2hpdGVQb2ludC0+WSk7CisgICAgZnogPSBmKHh5ei0+WiAvIFdoaXRlUG9pbnQtPlopOworCisgICAgTGFiLT5MID0gMTE2LjAqZnkgLSAxNi4wOworICAgIExhYi0+YSA9IDUwMC4wKihmeCAtIGZ5KTsKKyAgICBMYWItPmIgPSAyMDAuMCooZnkgLSBmeik7Cit9CisKKworLy8gU3RhbmRhcmQgWFlaIHRvIExhYi4gSXQgY2FuIHJldHVybiBuZWdhdGl2ZSBYWVogaW4gc29tZSBjYXNlcwordm9pZCBDTVNFWFBPUlQgY21zTGFiMlhZWihjb25zdCBjbXNDSUVYWVoqIFdoaXRlUG9pbnQsIGNtc0NJRVhZWiogeHl6LCAgY29uc3QgY21zQ0lFTGFiKiBMYWIpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciB4LCB5LCB6OworCisgICAgaWYgKFdoaXRlUG9pbnQgPT0gTlVMTCkKKyAgICAgICAgV2hpdGVQb2ludCA9IGNtc0Q1MF9YWVooKTsKKworICAgIHkgPSAoTGFiLT4gTCArIDE2LjApIC8gMTE2LjA7CisgICAgeCA9IHkgKyAwLjAwMiAqIExhYiAtPiBhOworICAgIHogPSB5IC0gMC4wMDUgKiBMYWIgLT4gYjsKKworICAgIHh5eiAtPiBYID0gZl8xKHgpICogV2hpdGVQb2ludCAtPiBYOworICAgIHh5eiAtPiBZID0gZl8xKHkpICogV2hpdGVQb2ludCAtPiBZOworICAgIHh5eiAtPiBaID0gZl8xKHopICogV2hpdGVQb2ludCAtPiBaOworCit9CisKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBMMmZsb2F0MihjbXNVSW50MTZOdW1iZXIgdikKK3sKKyAgICByZXR1cm4gKGNtc0Zsb2F0NjROdW1iZXIpIHYgLyA2NTIuODAwOworfQorCisvLyB0aGUgYS9iIHBhcnQKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBhYjJmbG9hdDIoY21zVUludDE2TnVtYmVyIHYpCit7CisgICAgcmV0dXJuICgoY21zRmxvYXQ2NE51bWJlcikgdiAvIDI1Ni4wKSAtIDEyOC4wOworfQorCitzdGF0aWMKK2Ntc1VJbnQxNk51bWJlciBMMkZpeDIoY21zRmxvYXQ2NE51bWJlciBMKQoreworICAgIHJldHVybiBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoTCAqICA2NTIuOCk7Cit9CisKK3N0YXRpYworY21zVUludDE2TnVtYmVyIGFiMkZpeDIoY21zRmxvYXQ2NE51bWJlciBhYikKK3sKKyAgICByZXR1cm4gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKChhYiArIDEyOC4wKSAqIDI1Ni4wKTsKK30KKworCitzdGF0aWMKK2Ntc0Zsb2F0NjROdW1iZXIgTDJmbG9hdDQoY21zVUludDE2TnVtYmVyIHYpCit7CisgICAgcmV0dXJuIChjbXNGbG9hdDY0TnVtYmVyKSB2IC8gNjU1LjM1OworfQorCisvLyB0aGUgYS9iIHBhcnQKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBhYjJmbG9hdDQoY21zVUludDE2TnVtYmVyIHYpCit7CisgICAgcmV0dXJuICgoY21zRmxvYXQ2NE51bWJlcikgdiAvIDI1Ny4wKSAtIDEyOC4wOworfQorCisKK3ZvaWQgQ01TRVhQT1JUIGNtc0xhYkVuY29kZWQyRmxvYXRWMihjbXNDSUVMYWIqIExhYiwgY29uc3QgY21zVUludDE2TnVtYmVyIHdMYWJbM10pCit7CisgICAgICAgIExhYi0+TCA9IEwyZmxvYXQyKHdMYWJbMF0pOworICAgICAgICBMYWItPmEgPSBhYjJmbG9hdDIod0xhYlsxXSk7CisgICAgICAgIExhYi0+YiA9IGFiMmZsb2F0Mih3TGFiWzJdKTsKK30KKworCit2b2lkIENNU0VYUE9SVCBjbXNMYWJFbmNvZGVkMkZsb2F0KGNtc0NJRUxhYiogTGFiLCBjb25zdCBjbXNVSW50MTZOdW1iZXIgd0xhYlszXSkKK3sKKyAgICAgICAgTGFiLT5MID0gTDJmbG9hdDQod0xhYlswXSk7CisgICAgICAgIExhYi0+YSA9IGFiMmZsb2F0NCh3TGFiWzFdKTsKKyAgICAgICAgTGFiLT5iID0gYWIyZmxvYXQ0KHdMYWJbMl0pOworfQorCitzdGF0aWMKK2Ntc0Zsb2F0NjROdW1iZXIgQ2xhbXBfTF9kb3VibGVWMihjbXNGbG9hdDY0TnVtYmVyIEwpCit7CisgICAgY29uc3QgY21zRmxvYXQ2NE51bWJlciBMX21heCA9IChjbXNGbG9hdDY0TnVtYmVyKSAoMHhGRkZGICogMTAwLjApIC8gMHhGRjAwOworCisgICAgaWYgKEwgPCAwKSBMID0gMDsKKyAgICBpZiAoTCA+IExfbWF4KSBMID0gTF9tYXg7CisKKyAgICByZXR1cm4gTDsKK30KKworCitzdGF0aWMKK2Ntc0Zsb2F0NjROdW1iZXIgQ2xhbXBfYWJfZG91YmxlVjIoY21zRmxvYXQ2NE51bWJlciBhYikKK3sKKyAgICBpZiAoYWIgPCBNSU5fRU5DT0RFQUJMRV9hYjIpIGFiID0gTUlOX0VOQ09ERUFCTEVfYWIyOworICAgIGlmIChhYiA+IE1BWF9FTkNPREVBQkxFX2FiMikgYWIgPSBNQVhfRU5DT0RFQUJMRV9hYjI7CisKKyAgICByZXR1cm4gYWI7Cit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc0Zsb2F0MkxhYkVuY29kZWRWMihjbXNVSW50MTZOdW1iZXIgd0xhYlszXSwgY29uc3QgY21zQ0lFTGFiKiBmTGFiKQoreworICAgIGNtc0NJRUxhYiBMYWI7CisKKyAgICBMYWIuTCA9IENsYW1wX0xfZG91YmxlVjIoZkxhYiAtPkwpOworICAgIExhYi5hID0gQ2xhbXBfYWJfZG91YmxlVjIoZkxhYiAtPmEpOworICAgIExhYi5iID0gQ2xhbXBfYWJfZG91YmxlVjIoZkxhYiAtPmIpOworCisgICAgd0xhYlswXSA9IEwyRml4MihMYWIuTCk7CisgICAgd0xhYlsxXSA9IGFiMkZpeDIoTGFiLmEpOworICAgIHdMYWJbMl0gPSBhYjJGaXgyKExhYi5iKTsKK30KKworCitzdGF0aWMKK2Ntc0Zsb2F0NjROdW1iZXIgQ2xhbXBfTF9kb3VibGVWNChjbXNGbG9hdDY0TnVtYmVyIEwpCit7CisgICAgaWYgKEwgPCAwKSBMID0gMDsKKyAgICBpZiAoTCA+IDEwMC4wKSBMID0gMTAwLjA7CisKKyAgICByZXR1cm4gTDsKK30KKworc3RhdGljCitjbXNGbG9hdDY0TnVtYmVyIENsYW1wX2FiX2RvdWJsZVY0KGNtc0Zsb2F0NjROdW1iZXIgYWIpCit7CisgICAgaWYgKGFiIDwgTUlOX0VOQ09ERUFCTEVfYWI0KSBhYiA9IE1JTl9FTkNPREVBQkxFX2FiNDsKKyAgICBpZiAoYWIgPiBNQVhfRU5DT0RFQUJMRV9hYjQpIGFiID0gTUFYX0VOQ09ERUFCTEVfYWI0OworCisgICAgcmV0dXJuIGFiOworfQorCitzdGF0aWMKK2Ntc1VJbnQxNk51bWJlciBMMkZpeDQoY21zRmxvYXQ2NE51bWJlciBMKQoreworICAgIHJldHVybiBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoTCAqICA2NTUuMzUpOworfQorCitzdGF0aWMKK2Ntc1VJbnQxNk51bWJlciBhYjJGaXg0KGNtc0Zsb2F0NjROdW1iZXIgYWIpCit7CisgICAgcmV0dXJuIF9jbXNRdWlja1NhdHVyYXRlV29yZCgoYWIgKyAxMjguMCkgKiAyNTcuMCk7Cit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc0Zsb2F0MkxhYkVuY29kZWQoY21zVUludDE2TnVtYmVyIHdMYWJbM10sIGNvbnN0IGNtc0NJRUxhYiogZkxhYikKK3sKKyAgICBjbXNDSUVMYWIgTGFiOworCisgICAgTGFiLkwgPSBDbGFtcF9MX2RvdWJsZVY0KGZMYWIgLT5MKTsKKyAgICBMYWIuYSA9IENsYW1wX2FiX2RvdWJsZVY0KGZMYWIgLT5hKTsKKyAgICBMYWIuYiA9IENsYW1wX2FiX2RvdWJsZVY0KGZMYWIgLT5iKTsKKworICAgIHdMYWJbMF0gPSBMMkZpeDQoTGFiLkwpOworICAgIHdMYWJbMV0gPSBhYjJGaXg0KExhYi5hKTsKKyAgICB3TGFiWzJdID0gYWIyRml4NChMYWIuYik7Cit9CisKKy8vIEF1eGlsaWFyOiBjb252ZXJ0IHRvIFJhZGlhbnMKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBSQURJQU5TKGNtc0Zsb2F0NjROdW1iZXIgZGVnKQoreworICAgIHJldHVybiAoZGVnICogTV9QSSkgLyAxODAuOworfQorCisKKy8vIEF1eGlsaWFyOiBhdGFuMiBidXQgb3BlcmF0aW5nIGluIGRlZ3JlZXMgYW5kIHJldHVybmluZyAwIGlmIGE9PWI9PTAKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBhdGFuMmRlZyhjbXNGbG9hdDY0TnVtYmVyIGEsIGNtc0Zsb2F0NjROdW1iZXIgYikKK3sKKyAgIGNtc0Zsb2F0NjROdW1iZXIgaDsKKworICAgaWYgKGEgPT0gMCAmJiBiID09IDApCisgICAgICAgICAgICBoICAgPSAwOworICAgIGVsc2UKKyAgICAgICAgICAgIGggPSBhdGFuMihhLCBiKTsKKworICAgIGggKj0gKDE4MC4gLyBNX1BJKTsKKworICAgIHdoaWxlIChoID4gMzYwLikKKyAgICAgICAgaCAtPSAzNjAuOworCisgICAgd2hpbGUgKCBoIDwgMCkKKyAgICAgICAgaCArPSAzNjAuOworCisgICAgcmV0dXJuIGg7Cit9CisKKworLy8gQXV4aWxpYXI6IFNxdWFyZQorc3RhdGljCitjbXNGbG9hdDY0TnVtYmVyIFNxcihjbXNGbG9hdDY0TnVtYmVyIHYpCit7CisgICAgcmV0dXJuIHYgKiAgdjsKK30KKy8vIEZyb20gY3lsaW5kcmljYWwgY29vcmRpbmF0ZXMuIE5vIGNoZWNrIGlzIHBlcmZvcm1lZCwgdGhlbiBuZWdhdGl2ZSB2YWx1ZXMgYXJlIGFsbG93ZWQKK3ZvaWQgQ01TRVhQT1JUIGNtc0xhYjJMQ2goY21zQ0lFTENoKiBMQ2gsIGNvbnN0IGNtc0NJRUxhYiogTGFiKQoreworICAgIExDaCAtPiBMID0gTGFiIC0+IEw7CisgICAgTENoIC0+IEMgPSBwb3coU3FyKExhYiAtPmEpICsgU3FyKExhYiAtPmIpLCAwLjUpOworICAgIExDaCAtPiBoID0gYXRhbjJkZWcoTGFiIC0+YiwgTGFiIC0+YSk7Cit9CisKKworLy8gVG8gY3lsaW5kcmljYWwgY29vcmRpbmF0ZXMuIE5vIGNoZWNrIGlzIHBlcmZvcm1lZCwgdGhlbiBuZWdhdGl2ZSB2YWx1ZXMgYXJlIGFsbG93ZWQKK3ZvaWQgQ01TRVhQT1JUIGNtc0xDaDJMYWIoY21zQ0lFTGFiKiBMYWIsIGNvbnN0IGNtc0NJRUxDaCogTENoKQoreworICAgIGNtc0Zsb2F0NjROdW1iZXIgaCA9IChMQ2ggLT4gaCAqIE1fUEkpIC8gMTgwLjA7CisKKyAgICBMYWIgLT4gTCA9IExDaCAtPiBMOworICAgIExhYiAtPiBhID0gTENoIC0+IEMgKiBjb3MoaCk7CisgICAgTGFiIC0+IGIgPSBMQ2ggLT4gQyAqIHNpbihoKTsKK30KKworLy8gSW4gWFlaIEFsbCAzIGNvbXBvbmVudHMgYXJlIGVuY29kZWQgdXNpbmcgMS4xNSBmaXhlZCBwb2ludAorc3RhdGljCitjbXNVSW50MTZOdW1iZXIgWFlaMkZpeChjbXNGbG9hdDY0TnVtYmVyIGQpCit7CisgICAgcmV0dXJuIF9jbXNRdWlja1NhdHVyYXRlV29yZChkICogMzI3NjguMCk7Cit9CisKK3ZvaWQgQ01TRVhQT1JUIGNtc0Zsb2F0MlhZWkVuY29kZWQoY21zVUludDE2TnVtYmVyIFhZWlszXSwgY29uc3QgY21zQ0lFWFlaKiBmWFlaKQoreworICAgIGNtc0NJRVhZWiB4eXo7CisKKyAgICB4eXouWCA9IGZYWVogLT4gWDsKKyAgICB4eXouWSA9IGZYWVogLT4gWTsKKyAgICB4eXouWiA9IGZYWVogLT4gWjsKKworICAgIC8vIENsYW1wIHRvIGVuY29kZWFibGUgdmFsdWVzLgorICAgIGlmICh4eXouWSA8PSAwKSB7CisKKyAgICAgICAgeHl6LlggPSAwOworICAgICAgICB4eXouWSA9IDA7CisgICAgICAgIHh5ei5aID0gMDsKKyAgICB9CisKKyAgICBpZiAoeHl6LlggPiBNQVhfRU5DT0RFQUJMRV9YWVopCisgICAgICAgIHh5ei5YID0gTUFYX0VOQ09ERUFCTEVfWFlaOworCisgICAgaWYgKHh5ei5YIDwgMCkKKyAgICAgICAgeHl6LlggPSAwOworCisgICAgaWYgKHh5ei5ZID4gTUFYX0VOQ09ERUFCTEVfWFlaKQorICAgICAgICB4eXouWSA9IE1BWF9FTkNPREVBQkxFX1hZWjsKKworICAgIGlmICh4eXouWSA8IDApCisgICAgICAgIHh5ei5ZID0gMDsKKworICAgIGlmICh4eXouWiA+IE1BWF9FTkNPREVBQkxFX1hZWikKKyAgICAgICAgeHl6LlogPSBNQVhfRU5DT0RFQUJMRV9YWVo7CisKKyAgICBpZiAoeHl6LlogPCAwKQorICAgICAgICB4eXouWiA9IDA7CisKKworICAgIFhZWlswXSA9IFhZWjJGaXgoeHl6LlgpOworICAgIFhZWlsxXSA9IFhZWjJGaXgoeHl6LlkpOworICAgIFhZWlsyXSA9IFhZWjJGaXgoeHl6LlopOworfQorCisKKy8vICBUbyBjb252ZXJ0IGZyb20gRml4ZWQgMS4xNSBwb2ludCB0byBjbXNGbG9hdDY0TnVtYmVyCitzdGF0aWMKK2Ntc0Zsb2F0NjROdW1iZXIgWFlaMmZsb2F0KGNtc1VJbnQxNk51bWJlciB2KQoreworICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgZml4MzI7CisKKyAgICAvLyBGcm9tIDEuMTUgdG8gMTUuMTYKKyAgICBmaXgzMiA9IHYgPDwgMTsKKworICAgIC8vIEZyb20gZml4ZWQgMTUuMTYgdG8gY21zRmxvYXQ2NE51bWJlcgorICAgIHJldHVybiBfY21zMTVGaXhlZDE2dG9Eb3VibGUoZml4MzIpOworfQorCisKK3ZvaWQgQ01TRVhQT1JUIGNtc1hZWkVuY29kZWQyRmxvYXQoY21zQ0lFWFlaKiBmWFlaLCBjb25zdCBjbXNVSW50MTZOdW1iZXIgWFlaWzNdKQoreworICAgIGZYWVogLT4gWCA9IFhZWjJmbG9hdChYWVpbMF0pOworICAgIGZYWVogLT4gWSA9IFhZWjJmbG9hdChYWVpbMV0pOworICAgIGZYWVogLT4gWiA9IFhZWjJmbG9hdChYWVpbMl0pOworfQorCisKKy8vIFJldHVybnMgZEUgb24gdHdvIExhYiB2YWx1ZXMKK2Ntc0Zsb2F0NjROdW1iZXIgQ01TRVhQT1JUIGNtc0RlbHRhRShjb25zdCBjbXNDSUVMYWIqIExhYjEsIGNvbnN0IGNtc0NJRUxhYiogTGFiMikKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGRMLCBkYSwgZGI7CisKKyAgICBkTCA9IGZhYnMoTGFiMSAtPiBMIC0gTGFiMiAtPiBMKTsKKyAgICBkYSA9IGZhYnMoTGFiMSAtPiBhIC0gTGFiMiAtPiBhKTsKKyAgICBkYiA9IGZhYnMoTGFiMSAtPiBiIC0gTGFiMiAtPiBiKTsKKworICAgIHJldHVybiBwb3coU3FyKGRMKSArIFNxcihkYSkgKyBTcXIoZGIpLCAwLjUpOworfQorCisKKy8vIFJldHVybiB0aGUgQ0lFOTQgRGVsdGEgRQorY21zRmxvYXQ2NE51bWJlciBDTVNFWFBPUlQgY21zQ0lFOTREZWx0YUUoY29uc3QgY21zQ0lFTGFiKiBMYWIxLCBjb25zdCBjbXNDSUVMYWIqIExhYjIpCit7CisgICAgY21zQ0lFTENoIExDaDEsIExDaDI7CisgICAgY21zRmxvYXQ2NE51bWJlciBkRSwgZEwsIGRDLCBkaCwgZGhzcTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGMxMiwgc2MsIHNoOworCisgICAgZEwgPSBmYWJzKExhYjEgLT5MIC0gTGFiMiAtPkwpOworCisgICAgY21zTGFiMkxDaCgmTENoMSwgTGFiMSk7CisgICAgY21zTGFiMkxDaCgmTENoMiwgTGFiMik7CisKKyAgICBkQyAgPSBmYWJzKExDaDEuQyAtIExDaDIuQyk7CisgICAgZEUgID0gY21zRGVsdGFFKExhYjEsIExhYjIpOworCisgICAgZGhzcSA9IFNxcihkRSkgLSBTcXIoZEwpIC0gU3FyKGRDKTsKKyAgICBpZiAoZGhzcSA8IDApCisgICAgICAgIGRoID0gMDsKKyAgICBlbHNlCisgICAgICAgIGRoID0gcG93KGRoc3EsIDAuNSk7CisKKyAgICBjMTIgPSBzcXJ0KExDaDEuQyAqIExDaDIuQyk7CisKKyAgICBzYyA9IDEuMCArICgwLjA0OCAqIGMxMik7CisgICAgc2ggPSAxLjAgKyAoMC4wMTQgKiBjMTIpOworCisgICAgcmV0dXJuIHNxcnQoU3FyKGRMKSAgKyBTcXIoZEMpIC8gU3FyKHNjKSArIFNxcihkaCkgLyBTcXIoc2gpKTsKK30KKworCisvLyBBdXhpbGlhcnkKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBDb21wdXRlTEJGRChjb25zdCBjbXNDSUVMYWIqIExhYikKK3sKKyAgY21zRmxvYXQ2NE51bWJlciB5dDsKKworICBpZiAoTGFiLT5MID4gNy45OTY5NjkpCisgICAgICAgIHl0ID0gKFNxcigoTGFiLT5MKzE2KS8xMTYpKigoTGFiLT5MKzE2KS8xMTYpKSoxMDA7CisgIGVsc2UKKyAgICAgICAgeXQgPSAxMDAgKiAoTGFiLT5MIC8gOTAzLjMpOworCisgIHJldHVybiAoNTQuNiAqIChNX0xPRzEwRSAqIChsb2coeXQgKyAxLjUpKSkgLSA5LjYpOworfQorCisKKworLy8gYmZkIC0gZ2V0cyBCRkQoMToxKSBkaWZmZXJlbmNlIGJldHdlZW4gTGFiMSwgTGFiMgorY21zRmxvYXQ2NE51bWJlciBDTVNFWFBPUlQgY21zQkZEZGVsdGFFKGNvbnN0IGNtc0NJRUxhYiogTGFiMSwgY29uc3QgY21zQ0lFTGFiKiBMYWIyKQoreworICAgIGNtc0Zsb2F0NjROdW1iZXIgbGJmZDEsbGJmZDIsQXZlQyxBdmVoLGRFLGRlbHRhTCwKKyAgICAgICAgZGVsdGFDLGRlbHRhaCxkYyx0LGcsZGgscmgscmMscnQsYmZkOworICAgIGNtc0NJRUxDaCBMQ2gxLCBMQ2gyOworCisKKyAgICBsYmZkMSA9IENvbXB1dGVMQkZEKExhYjEpOworICAgIGxiZmQyID0gQ29tcHV0ZUxCRkQoTGFiMik7CisgICAgZGVsdGFMID0gbGJmZDIgLSBsYmZkMTsKKworICAgIGNtc0xhYjJMQ2goJkxDaDEsIExhYjEpOworICAgIGNtc0xhYjJMQ2goJkxDaDIsIExhYjIpOworCisgICAgZGVsdGFDID0gTENoMi5DIC0gTENoMS5DOworICAgIEF2ZUMgPSAoTENoMS5DK0xDaDIuQykvMjsKKyAgICBBdmVoID0gKExDaDEuaCtMQ2gyLmgpLzI7CisKKyAgICBkRSA9IGNtc0RlbHRhRShMYWIxLCBMYWIyKTsKKworICAgIGlmIChTcXIoZEUpPihTcXIoTGFiMi0+TC1MYWIxLT5MKStTcXIoZGVsdGFDKSkpCisgICAgICAgIGRlbHRhaCA9IHNxcnQoU3FyKGRFKS1TcXIoTGFiMi0+TC1MYWIxLT5MKS1TcXIoZGVsdGFDKSk7CisgICAgZWxzZQorICAgICAgICBkZWx0YWggPTA7CisKKworICAgIGRjICAgPSAwLjAzNSAqIEF2ZUMgLyAoMSArIDAuMDAzNjUgKiBBdmVDKSswLjUyMTsKKyAgICBnICAgID0gc3FydChTcXIoU3FyKEF2ZUMpKS8oU3FyKFNxcihBdmVDKSkrMTQwMDApKTsKKyAgICB0ICAgID0gMC42MjcrKDAuMDU1KmNvcygoQXZlaC0yNTQpLygxODAvTV9QSSkpLQorICAgICAgICAgICAwLjA0MCpjb3MoKDIqQXZlaC0xMzYpLygxODAvTV9QSSkpKworICAgICAgICAgICAwLjA3MCpjb3MoKDMqQXZlaC0zMSkvKDE4MC9NX1BJKSkrCisgICAgICAgICAgIDAuMDQ5KmNvcygoNCpBdmVoKzExNCkvKDE4MC9NX1BJKSktCisgICAgICAgICAgIDAuMDE1KmNvcygoNSpBdmVoLTEwMykvKDE4MC9NX1BJKSkpOworCisgICAgZGggICAgPSBkYyooZyp0KzEtZyk7CisgICAgcmggICAgPSAtMC4yNjAqY29zKChBdmVoLTMwOCkvKDE4MC9NX1BJKSktCisgICAgICAgICAgIDAuMzc5KmNvcygoMipBdmVoLTE2MCkvKDE4MC9NX1BJKSktCisgICAgICAgICAgIDAuNjM2KmNvcygoMypBdmVoKzI1NCkvKDE4MC9NX1BJKSkrCisgICAgICAgICAgIDAuMjI2KmNvcygoNCpBdmVoKzE0MCkvKDE4MC9NX1BJKSktCisgICAgICAgICAgIDAuMTk0KmNvcygoNSpBdmVoKzI4MCkvKDE4MC9NX1BJKSk7CisKKyAgICByYyA9IHNxcnQoKEF2ZUMqQXZlQypBdmVDKkF2ZUMqQXZlQypBdmVDKS8oKEF2ZUMqQXZlQypBdmVDKkF2ZUMqQXZlQypBdmVDKSs3MDAwMDAwMCkpOworICAgIHJ0ID0gcmgqcmM7CisKKyAgICBiZmQgPSBzcXJ0KFNxcihkZWx0YUwpK1NxcihkZWx0YUMvZGMpK1NxcihkZWx0YWgvZGgpKyhydCooZGVsdGFDL2RjKSooZGVsdGFoL2RoKSkpOworCisgICAgcmV0dXJuIGJmZDsKK30KKworCisvLyAgY21jIC0gQ01DKGw6YykgZGlmZmVyZW5jZSBiZXR3ZWVuIExhYjEsIExhYjIKK2Ntc0Zsb2F0NjROdW1iZXIgQ01TRVhQT1JUIGNtc0NNQ2RlbHRhRShjb25zdCBjbXNDSUVMYWIqIExhYjEsIGNvbnN0IGNtc0NJRUxhYiogTGFiMiwgY21zRmxvYXQ2NE51bWJlciBsLCBjbXNGbG9hdDY0TnVtYmVyIGMpCit7CisgIGNtc0Zsb2F0NjROdW1iZXIgZEUsZEwsZEMsZGgsc2wsc2Msc2gsdCxmLGNtYzsKKyAgY21zQ0lFTENoIExDaDEsIExDaDI7CisKKyAgaWYgKExhYjEgLT5MID09IDAgJiYgTGFiMiAtPkwgPT0gMCkgcmV0dXJuIDA7CisKKyAgY21zTGFiMkxDaCgmTENoMSwgTGFiMSk7CisgIGNtc0xhYjJMQ2goJkxDaDIsIExhYjIpOworCisKKyAgZEwgPSBMYWIyLT5MLUxhYjEtPkw7CisgIGRDID0gTENoMi5DLUxDaDEuQzsKKworICBkRSA9IGNtc0RlbHRhRShMYWIxLCBMYWIyKTsKKworICBpZiAoU3FyKGRFKT4oU3FyKGRMKStTcXIoZEMpKSkKKyAgICAgICAgICAgIGRoID0gc3FydChTcXIoZEUpLVNxcihkTCktU3FyKGRDKSk7CisgIGVsc2UKKyAgICAgICAgICAgIGRoID0wOworCisgIGlmICgoTENoMS5oID4gMTY0KSAmJiAoTENoMS5oIDwgMzQ1KSkKKyAgICAgIHQgPSAwLjU2ICsgZmFicygwLjIgKiBjb3MoKChMQ2gxLmggKyAxNjgpLygxODAvTV9QSSkpKSk7CisgIGVsc2UKKyAgICAgIHQgPSAwLjM2ICsgZmFicygwLjQgKiBjb3MoKChMQ2gxLmggKyAzNSApLygxODAvTV9QSSkpKSk7CisKKyAgIHNjICA9IDAuMDYzOCAgICogTENoMS5DIC8gKDEgKyAwLjAxMzEgICogTENoMS5DKSArIDAuNjM4OworICAgc2wgID0gMC4wNDA5NzUgKiBMYWIxLT5MIC8oMSArIDAuMDE3NjUgKiBMYWIxLT5MKTsKKworICAgaWYgKExhYjEtPkw8MTYpCisgICAgICAgICBzbCA9IDAuNTExOworCisgICBmICAgPSBzcXJ0KChMQ2gxLkMgKiBMQ2gxLkMgKiBMQ2gxLkMgKiBMQ2gxLkMpLygoTENoMS5DICogTENoMS5DICogTENoMS5DICogTENoMS5DKSsxOTAwKSk7CisgICBzaCAgPSBzYyoodCpmKzEtZik7CisgICBjbWMgPSBzcXJ0KFNxcihkTC8obCpzbCkpK1NxcihkQy8oYypzYykpK1NxcihkaC9zaCkpOworCisgICByZXR1cm4gY21jOworfQorCisvLyBkRTIwMDAgVGhlIHdlaWdodGluZ3MgS0wsIEtDIGFuZCBLSCBjYW4gYmUgbW9kaWZpZWQgdG8gcmVmbGVjdCB0aGUgcmVsYXRpdmUKKy8vIGltcG9ydGFuY2Ugb2YgbGlnaHRuZXNzLCBjaHJvbWEgYW5kIGh1ZSBpbiBkaWZmZXJlbnQgaW5kdXN0cmlhbCBhcHBsaWNhdGlvbnMKK2Ntc0Zsb2F0NjROdW1iZXIgQ01TRVhQT1JUIGNtc0NJRTIwMDBEZWx0YUUoY29uc3QgY21zQ0lFTGFiKiBMYWIxLCBjb25zdCBjbXNDSUVMYWIqIExhYjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBLbCwgY21zRmxvYXQ2NE51bWJlciBLYywgY21zRmxvYXQ2NE51bWJlciBLaCkKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIEwxICA9IExhYjEtPkw7CisgICAgY21zRmxvYXQ2NE51bWJlciBhMSAgPSBMYWIxLT5hOworICAgIGNtc0Zsb2F0NjROdW1iZXIgYjEgID0gTGFiMS0+YjsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIEMgICA9IHNxcnQoIFNxcihhMSkgKyBTcXIoYjEpICk7CisKKyAgICBjbXNGbG9hdDY0TnVtYmVyIExzID0gTGFiMiAtPkw7CisgICAgY21zRmxvYXQ2NE51bWJlciBhcyA9IExhYjIgLT5hOworICAgIGNtc0Zsb2F0NjROdW1iZXIgYnMgPSBMYWIyIC0+YjsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIENzID0gc3FydCggU3FyKGFzKSArIFNxcihicykgKTsKKworICAgIGNtc0Zsb2F0NjROdW1iZXIgRyA9IDAuNSAqICggMSAtIHNxcnQocG93KChDICsgQ3MpIC8gMiAsIDcuMCkgLyAocG93KChDICsgQ3MpIC8gMiwgNy4wKSArIHBvdygyNS4wLCA3LjApICkgKSk7CisKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGFfcCA9ICgxICsgRyApICogYTE7CisgICAgY21zRmxvYXQ2NE51bWJlciBiX3AgPSBiMTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIENfcCA9IHNxcnQoIFNxcihhX3ApICsgU3FyKGJfcCkpOworICAgIGNtc0Zsb2F0NjROdW1iZXIgaF9wID0gYXRhbjJkZWcoYl9wLCBhX3ApOworCisKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGFfcHMgPSAoMSArIEcpICogYXM7CisgICAgY21zRmxvYXQ2NE51bWJlciBiX3BzID0gYnM7CisgICAgY21zRmxvYXQ2NE51bWJlciBDX3BzID0gc3FydChTcXIoYV9wcykgKyBTcXIoYl9wcykpOworICAgIGNtc0Zsb2F0NjROdW1iZXIgaF9wcyA9IGF0YW4yZGVnKGJfcHMsIGFfcHMpOworCisgICAgY21zRmxvYXQ2NE51bWJlciBtZWFuQ19wID0oQ19wICsgQ19wcykgLyAyOworCisgICAgY21zRmxvYXQ2NE51bWJlciBocHNfcGx1c19ocCAgPSBoX3BzICsgaF9wOworICAgIGNtc0Zsb2F0NjROdW1iZXIgaHBzX21pbnVzX2hwID0gaF9wcyAtIGhfcDsKKworICAgIGNtc0Zsb2F0NjROdW1iZXIgbWVhbmhfcCA9IGZhYnMoaHBzX21pbnVzX2hwKSA8PSAxODAuMDAwMDAxID8gKGhwc19wbHVzX2hwKS8yIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaHBzX3BsdXNfaHApIDwgMzYwID8gKGhwc19wbHVzX2hwICsgMzYwKS8yIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaHBzX3BsdXNfaHAgLSAzNjApLzI7CisKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGRlbHRhX2ggPSAoaHBzX21pbnVzX2hwKSA8PSAtMTgwLjAwMDAwMSA/ICAoaHBzX21pbnVzX2hwICsgMzYwKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhwc19taW51c19ocCkgPiAxODAgPyAoaHBzX21pbnVzX2hwIC0gMzYwKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhwc19taW51c19ocCk7CisgICAgY21zRmxvYXQ2NE51bWJlciBkZWx0YV9MID0gKExzIC0gTDEpOworICAgIGNtc0Zsb2F0NjROdW1iZXIgZGVsdGFfQyA9IChDX3BzIC0gQ19wICk7CisKKworICAgIGNtc0Zsb2F0NjROdW1iZXIgZGVsdGFfSCA9MiAqIHNxcnQoQ19wcypDX3ApICogc2luKFJBRElBTlMoZGVsdGFfaCkgLyAyKTsKKworICAgIGNtc0Zsb2F0NjROdW1iZXIgVCA9IDEgLSAwLjE3ICogY29zKFJBRElBTlMobWVhbmhfcC0zMCkpCisgICAgICAgICAgICAgICAgICsgMC4yNCAqIGNvcyhSQURJQU5TKDIqbWVhbmhfcCkpCisgICAgICAgICAgICAgICAgICsgMC4zMiAqIGNvcyhSQURJQU5TKDMqbWVhbmhfcCArIDYpKQorICAgICAgICAgICAgICAgICAtIDAuMiAgKiBjb3MoUkFESUFOUyg0Km1lYW5oX3AgLSA2MykpOworCisgICAgY21zRmxvYXQ2NE51bWJlciBTbCA9IDEgKyAoMC4wMTUgKiBTcXIoKExzICsgTDEpIC8yLSA1MCkgKS8gc3FydCgyMCArIFNxciggKExzK0wxKS8yIC0gNTApICk7CisKKyAgICBjbXNGbG9hdDY0TnVtYmVyIFNjID0gMSArIDAuMDQ1ICogKENfcCArIENfcHMpLzI7CisgICAgY21zRmxvYXQ2NE51bWJlciBTaCA9IDEgKyAwLjAxNSAqICgoQ19wcyArIENfcCkvMikgKiBUOworCisgICAgY21zRmxvYXQ2NE51bWJlciBkZWx0YV9ybyA9IDMwICogZXhwKCAtU3FyKCgobWVhbmhfcCAtIDI3NSApIC8gMjUpKSk7CisKKyAgICBjbXNGbG9hdDY0TnVtYmVyIFJjID0gMiAqIHNxcnQoKCBwb3cobWVhbkNfcCwgNy4wKSApLyggcG93KG1lYW5DX3AsIDcuMCkgKyBwb3coMjUuMCwgNy4wKSkpOworCisgICAgY21zRmxvYXQ2NE51bWJlciBSdCA9IC1zaW4oMiAqIFJBRElBTlMoZGVsdGFfcm8pKSAqIFJjOworCisgICAgY21zRmxvYXQ2NE51bWJlciBkZWx0YUUwMCA9IHNxcnQoIFNxcihkZWx0YV9MIC8oU2wgKiBLbCkpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcXIoZGVsdGFfQy8oU2MgKiBLYykpICArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3FyKGRlbHRhX0gvKFNoICogS2gpKSAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0KihkZWx0YV9DLyhTYyAqIEtjKSkgKiAoZGVsdGFfSCAvIChTaCAqIEtoKSkpOworCisgICAgcmV0dXJuIGRlbHRhRTAwOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBudW1iZXIgb2YgZ3JpZHBvaW50cyB0byBiZSB1c2VkIGFzIExVVCB0YWJsZS4gSXQgYXNzdW1lcyBzYW1lIG51bWJlcgorLy8gb2YgZ3JpcGRwb2ludHMgaW4gYWxsIGRpbWVuc2lvbnMuIEZsYWdzIG1heSBvdmVycmlkZSB0aGUgY2hvaWNlLgoraW50IF9jbXNSZWFzb25hYmxlR3JpZHBvaW50c0J5Q29sb3JzcGFjZShjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENvbG9yc3BhY2UsIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKQoreworICAgIGludCBuQ2hhbm5lbHM7CisKKyAgICAvLyBBbHJlYWR5IHNwZWNpZmllZD8KKyAgICBpZiAoZHdGbGFncyAmIDB4MDBGRjAwMDApIHsKKyAgICAgICAgICAgIC8vIFllcywgZ3JhYidlbQorICAgICAgICAgICAgcmV0dXJuIChkd0ZsYWdzID4+IDE2KSAmIDB4RkY7CisgICAgfQorCisgICAgbkNoYW5uZWxzID0gY21zQ2hhbm5lbHNPZihDb2xvcnNwYWNlKTsKKworICAgIC8vIEhpZ2hSZXNQcmVjYWxjIGlzIG1heGltdW0gcmVzb2x1dGlvbgorICAgIGlmIChkd0ZsYWdzICYgY21zRkxBR1NfSElHSFJFU1BSRUNBTEMpIHsKKworICAgICAgICBpZiAobkNoYW5uZWxzID4gNCkKKyAgICAgICAgICAgICAgICByZXR1cm4gNzsgICAgICAgLy8gNyBmb3IgSGlmaQorCisgICAgICAgIGlmIChuQ2hhbm5lbHMgPT0gNCkgICAgIC8vIDIzIGZvciBDTVlLCisgICAgICAgICAgICAgICAgcmV0dXJuIDIzOworCisgICAgICAgIHJldHVybiA0OTsgICAgICAvLyA0OSBmb3IgUkdCIGFuZCBvdGhlcnMKKyAgICB9CisKKworICAgIC8vIExvd1Jlc1ByZWNhbCBpcyBsb3dlciByZXNvbHV0aW9uCisgICAgaWYgKGR3RmxhZ3MgJiBjbXNGTEFHU19MT1dSRVNQUkVDQUxDKSB7CisKKyAgICAgICAgaWYgKG5DaGFubmVscyA+IDQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDY7ICAgICAgIC8vIDYgZm9yIG1vcmUgdGhhbiA0IGNoYW5uZWxzCisKKyAgICAgICAgaWYgKG5DaGFubmVscyA9PSAxKQorICAgICAgICAgICAgICAgIHJldHVybiAzMzsgICAgICAvLyBGb3IgbW9ub2Nocm9tZQorCisgICAgICAgIHJldHVybiAxNzsgICAgICAgICAgICAgIC8vIDE3IGZvciByZW1haW5pbmcKKyAgICB9CisKKyAgICAvLyBEZWZhdWx0IHZhbHVlcworICAgIGlmIChuQ2hhbm5lbHMgPiA0KQorICAgICAgICAgICAgICAgIHJldHVybiA3OyAgICAgICAvLyA3IGZvciBIaWZpCisKKyAgICBpZiAobkNoYW5uZWxzID09IDQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE3OyAgICAgIC8vIDE3IGZvciBDTVlLCisKKyAgICByZXR1cm4gMzM7ICAgICAgICAgICAgICAgICAgLy8gMzMgZm9yIFJHQgorfQorCisKK2Ntc0Jvb2wgIF9jbXNFbmRQb2ludHNCeVNwYWNlKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQxNk51bWJlciAqKldoaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MTZOdW1iZXIgKipCbGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICpuT3V0cHV0cykKK3sKKyAgICAgICAvLyBPbmx5IG1vc3QgY29tbW9uIHNwYWNlcworCisgICAgICAgc3RhdGljIGNtc1VJbnQxNk51bWJlciBSR0JibGFja1s0XSAgPSB7IDAsIDAsIDAgfTsKKyAgICAgICBzdGF0aWMgY21zVUludDE2TnVtYmVyIFJHQndoaXRlWzRdICA9IHsgMHhmZmZmLCAweGZmZmYsIDB4ZmZmZiB9OworICAgICAgIHN0YXRpYyBjbXNVSW50MTZOdW1iZXIgQ01ZS2JsYWNrWzRdID0geyAweGZmZmYsIDB4ZmZmZiwgMHhmZmZmLCAweGZmZmYgfTsgICAvLyA0MDAlIG9mIGluaworICAgICAgIHN0YXRpYyBjbXNVSW50MTZOdW1iZXIgQ01ZS3doaXRlWzRdID0geyAwLCAwLCAwLCAwIH07CisgICAgICAgc3RhdGljIGNtc1VJbnQxNk51bWJlciBMQUJibGFja1s0XSAgPSB7IDAsIDB4ODA4MCwgMHg4MDgwIH07ICAgICAgICAgICAgICAgLy8gVjQgTGFiIGVuY29kaW5nCisgICAgICAgc3RhdGljIGNtc1VJbnQxNk51bWJlciBMQUJ3aGl0ZVs0XSAgPSB7IDB4RkZGRiwgMHg4MDgwLCAweDgwODAgfTsKKyAgICAgICBzdGF0aWMgY21zVUludDE2TnVtYmVyIENNWWJsYWNrWzRdICA9IHsgMHhmZmZmLCAweGZmZmYsIDB4ZmZmZiB9OworICAgICAgIHN0YXRpYyBjbXNVSW50MTZOdW1iZXIgQ01Zd2hpdGVbNF0gID0geyAwLCAwLCAwIH07CisgICAgICAgc3RhdGljIGNtc1VJbnQxNk51bWJlciBHcmF5YmxhY2tbNF0gPSB7IDAgfTsKKyAgICAgICBzdGF0aWMgY21zVUludDE2TnVtYmVyIEdyYXlXaGl0ZVs0XSA9IHsgMHhmZmZmIH07CisKKyAgICAgICBzd2l0Y2ggKFNwYWNlKSB7CisKKyAgICAgICBjYXNlIGNtc1NpZ0dyYXlEYXRhOiBpZiAoV2hpdGUpICAgICpXaGl0ZSA9IEdyYXlXaGl0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCbGFjaykgICAgKkJsYWNrID0gR3JheWJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5PdXRwdXRzKSAqbk91dHB1dHMgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICAgICBjYXNlIGNtc1NpZ1JnYkRhdGE6ICBpZiAoV2hpdGUpICAgICpXaGl0ZSA9IFJHQndoaXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJsYWNrKSAgICAqQmxhY2sgPSBSR0JibGFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuT3V0cHV0cykgKm5PdXRwdXRzID0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworCisgICAgICAgY2FzZSBjbXNTaWdMYWJEYXRhOiAgaWYgKFdoaXRlKSAgICAqV2hpdGUgPSBMQUJ3aGl0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCbGFjaykgICAgKkJsYWNrID0gTEFCYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobk91dHB1dHMpICpuT3V0cHV0cyA9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKworICAgICAgIGNhc2UgY21zU2lnQ215a0RhdGE6IGlmIChXaGl0ZSkgICAgKldoaXRlID0gQ01ZS3doaXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJsYWNrKSAgICAqQmxhY2sgPSBDTVlLYmxhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobk91dHB1dHMpICpuT3V0cHV0cyA9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKworICAgICAgIGNhc2UgY21zU2lnQ215RGF0YTogIGlmIChXaGl0ZSkgICAgKldoaXRlID0gQ01Zd2hpdGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQmxhY2spICAgICpCbGFjayA9IENNWWJsYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5PdXRwdXRzKSAqbk91dHB1dHMgPSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICAgICBkZWZhdWx0OjsKKyAgICAgICB9CisKKyAgcmV0dXJuIEZBTFNFOworfQorCisKKworLy8gU2V2ZXJhbCB1dGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBUcmFuc2xhdGUgZnJvbSBvdXIgY29sb3JzcGFjZSB0byBJQ0MgcmVwcmVzZW50YXRpb24KKworY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDTVNFWFBPUlQgX2Ntc0lDQ2NvbG9yU3BhY2UoaW50IE91ck5vdGF0aW9uKQoreworICAgICAgIHN3aXRjaCAoT3VyTm90YXRpb24pIHsKKworICAgICAgIGNhc2UgMToKKyAgICAgICBjYXNlIFBUX0dSQVk6IHJldHVybiBjbXNTaWdHcmF5RGF0YTsKKworICAgICAgIGNhc2UgMjoKKyAgICAgICBjYXNlIFBUX1JHQjogIHJldHVybiBjbXNTaWdSZ2JEYXRhOworCisgICAgICAgY2FzZSBQVF9DTVk6ICByZXR1cm4gY21zU2lnQ215RGF0YTsKKyAgICAgICBjYXNlIFBUX0NNWUs6IHJldHVybiBjbXNTaWdDbXlrRGF0YTsKKyAgICAgICBjYXNlIFBUX1lDYkNyOnJldHVybiBjbXNTaWdZQ2JDckRhdGE7CisgICAgICAgY2FzZSBQVF9ZVVY6ICByZXR1cm4gY21zU2lnTHV2RGF0YTsKKyAgICAgICBjYXNlIFBUX1hZWjogIHJldHVybiBjbXNTaWdYWVpEYXRhOworCisgICAgICAgY2FzZSBQVF9MYWJWMjoKKyAgICAgICBjYXNlIFBUX0xhYjogIHJldHVybiBjbXNTaWdMYWJEYXRhOworCisgICAgICAgY2FzZSBQVF9ZVVZLOiByZXR1cm4gY21zU2lnTHV2S0RhdGE7CisgICAgICAgY2FzZSBQVF9IU1Y6ICByZXR1cm4gY21zU2lnSHN2RGF0YTsKKyAgICAgICBjYXNlIFBUX0hMUzogIHJldHVybiBjbXNTaWdIbHNEYXRhOworICAgICAgIGNhc2UgUFRfWXh5OiAgcmV0dXJuIGNtc1NpZ1l4eURhdGE7CisKKyAgICAgICBjYXNlIFBUX01DSDE6IHJldHVybiBjbXNTaWdNQ0gxRGF0YTsKKyAgICAgICBjYXNlIFBUX01DSDI6IHJldHVybiBjbXNTaWdNQ0gyRGF0YTsKKyAgICAgICBjYXNlIFBUX01DSDM6IHJldHVybiBjbXNTaWdNQ0gzRGF0YTsKKyAgICAgICBjYXNlIFBUX01DSDQ6IHJldHVybiBjbXNTaWdNQ0g0RGF0YTsKKyAgICAgICBjYXNlIFBUX01DSDU6IHJldHVybiBjbXNTaWdNQ0g1RGF0YTsKKyAgICAgICBjYXNlIFBUX01DSDY6IHJldHVybiBjbXNTaWdNQ0g2RGF0YTsKKyAgICAgICBjYXNlIFBUX01DSDc6IHJldHVybiBjbXNTaWdNQ0g3RGF0YTsKKyAgICAgICBjYXNlIFBUX01DSDg6IHJldHVybiBjbXNTaWdNQ0g4RGF0YTsKKworICAgICAgIGNhc2UgUFRfTUNIOTogIHJldHVybiBjbXNTaWdNQ0g5RGF0YTsKKyAgICAgICBjYXNlIFBUX01DSDEwOiByZXR1cm4gY21zU2lnTUNIQURhdGE7CisgICAgICAgY2FzZSBQVF9NQ0gxMTogcmV0dXJuIGNtc1NpZ01DSEJEYXRhOworICAgICAgIGNhc2UgUFRfTUNIMTI6IHJldHVybiBjbXNTaWdNQ0hDRGF0YTsKKyAgICAgICBjYXNlIFBUX01DSDEzOiByZXR1cm4gY21zU2lnTUNIRERhdGE7CisgICAgICAgY2FzZSBQVF9NQ0gxNDogcmV0dXJuIGNtc1NpZ01DSEVEYXRhOworICAgICAgIGNhc2UgUFRfTUNIMTU6IHJldHVybiBjbXNTaWdNQ0hGRGF0YTsKKworICAgICAgIGRlZmF1bHQ6ICByZXR1cm4gKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUpICgtMSk7CisgICAgICAgfQorfQorCisKK2ludCBDTVNFWFBPUlQgX2Ntc0xDTVNjb2xvclNwYWNlKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgUHJvZmlsZVNwYWNlKQoreworICAgIHN3aXRjaCAoUHJvZmlsZVNwYWNlKSB7CisKKyAgICBjYXNlIGNtc1NpZ0dyYXlEYXRhOiByZXR1cm4gIFBUX0dSQVk7CisgICAgY2FzZSBjbXNTaWdSZ2JEYXRhOiAgcmV0dXJuICBQVF9SR0I7CisgICAgY2FzZSBjbXNTaWdDbXlEYXRhOiAgcmV0dXJuICBQVF9DTVk7CisgICAgY2FzZSBjbXNTaWdDbXlrRGF0YTogcmV0dXJuICBQVF9DTVlLOworICAgIGNhc2UgY21zU2lnWUNiQ3JEYXRhOnJldHVybiAgUFRfWUNiQ3I7CisgICAgY2FzZSBjbXNTaWdMdXZEYXRhOiAgcmV0dXJuICBQVF9ZVVY7CisgICAgY2FzZSBjbXNTaWdYWVpEYXRhOiAgcmV0dXJuICBQVF9YWVo7CisgICAgY2FzZSBjbXNTaWdMYWJEYXRhOiAgcmV0dXJuICBQVF9MYWI7CisgICAgY2FzZSBjbXNTaWdMdXZLRGF0YTogcmV0dXJuICBQVF9ZVVZLOworICAgIGNhc2UgY21zU2lnSHN2RGF0YTogIHJldHVybiAgUFRfSFNWOworICAgIGNhc2UgY21zU2lnSGxzRGF0YTogIHJldHVybiAgUFRfSExTOworICAgIGNhc2UgY21zU2lnWXh5RGF0YTogIHJldHVybiAgUFRfWXh5OworCisgICAgY2FzZSBjbXNTaWcxY29sb3JEYXRhOgorICAgIGNhc2UgY21zU2lnTUNIMURhdGE6IHJldHVybiBQVF9NQ0gxOworCisgICAgY2FzZSBjbXNTaWcyY29sb3JEYXRhOgorICAgIGNhc2UgY21zU2lnTUNIMkRhdGE6IHJldHVybiBQVF9NQ0gyOworCisgICAgY2FzZSBjbXNTaWczY29sb3JEYXRhOgorICAgIGNhc2UgY21zU2lnTUNIM0RhdGE6IHJldHVybiBQVF9NQ0gzOworCisgICAgY2FzZSBjbXNTaWc0Y29sb3JEYXRhOgorICAgIGNhc2UgY21zU2lnTUNINERhdGE6IHJldHVybiBQVF9NQ0g0OworCisgICAgY2FzZSBjbXNTaWc1Y29sb3JEYXRhOgorICAgIGNhc2UgY21zU2lnTUNINURhdGE6IHJldHVybiBQVF9NQ0g1OworCisgICAgY2FzZSBjbXNTaWc2Y29sb3JEYXRhOgorICAgIGNhc2UgY21zU2lnTUNINkRhdGE6IHJldHVybiBQVF9NQ0g2OworCisgICAgY2FzZSBjbXNTaWdNQ0g3RGF0YToKKyAgICBjYXNlIGNtc1NpZzdjb2xvckRhdGE6cmV0dXJuIFBUX01DSDc7CisKKyAgICBjYXNlIGNtc1NpZ01DSDhEYXRhOgorICAgIGNhc2UgY21zU2lnOGNvbG9yRGF0YTpyZXR1cm4gUFRfTUNIODsKKworICAgIGNhc2UgY21zU2lnTUNIOURhdGE6CisgICAgY2FzZSBjbXNTaWc5Y29sb3JEYXRhOnJldHVybiBQVF9NQ0g5OworCisgICAgY2FzZSBjbXNTaWdNQ0hBRGF0YToKKyAgICBjYXNlIGNtc1NpZzEwY29sb3JEYXRhOnJldHVybiBQVF9NQ0gxMDsKKworICAgIGNhc2UgY21zU2lnTUNIQkRhdGE6CisgICAgY2FzZSBjbXNTaWcxMWNvbG9yRGF0YTpyZXR1cm4gUFRfTUNIMTE7CisKKyAgICBjYXNlIGNtc1NpZ01DSENEYXRhOgorICAgIGNhc2UgY21zU2lnMTJjb2xvckRhdGE6cmV0dXJuIFBUX01DSDEyOworCisgICAgY2FzZSBjbXNTaWdNQ0hERGF0YToKKyAgICBjYXNlIGNtc1NpZzEzY29sb3JEYXRhOnJldHVybiBQVF9NQ0gxMzsKKworICAgIGNhc2UgY21zU2lnTUNIRURhdGE6CisgICAgY2FzZSBjbXNTaWcxNGNvbG9yRGF0YTpyZXR1cm4gUFRfTUNIMTQ7CisKKyAgICBjYXNlIGNtc1NpZ01DSEZEYXRhOgorICAgIGNhc2UgY21zU2lnMTVjb2xvckRhdGE6cmV0dXJuIFBUX01DSDE1OworCisgICAgZGVmYXVsdDogIHJldHVybiAoY21zQ29sb3JTcGFjZVNpZ25hdHVyZSkgKC0xKTsKKyAgICB9Cit9CisKKworY21zVUludDMyTnVtYmVyIENNU0VYUE9SVCBjbXNDaGFubmVsc09mKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgQ29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKENvbG9yU3BhY2UpIHsKKworICAgIGNhc2UgY21zU2lnTUNIMURhdGE6CisgICAgY2FzZSBjbXNTaWcxY29sb3JEYXRhOgorICAgIGNhc2UgY21zU2lnR3JheURhdGE6IHJldHVybiAxOworCisgICAgY2FzZSBjbXNTaWdNQ0gyRGF0YToKKyAgICBjYXNlIGNtc1NpZzJjb2xvckRhdGE6ICByZXR1cm4gMjsKKworICAgIGNhc2UgY21zU2lnWFlaRGF0YToKKyAgICBjYXNlIGNtc1NpZ0xhYkRhdGE6CisgICAgY2FzZSBjbXNTaWdMdXZEYXRhOgorICAgIGNhc2UgY21zU2lnWUNiQ3JEYXRhOgorICAgIGNhc2UgY21zU2lnWXh5RGF0YToKKyAgICBjYXNlIGNtc1NpZ1JnYkRhdGE6CisgICAgY2FzZSBjbXNTaWdIc3ZEYXRhOgorICAgIGNhc2UgY21zU2lnSGxzRGF0YToKKyAgICBjYXNlIGNtc1NpZ0NteURhdGE6CisgICAgY2FzZSBjbXNTaWdNQ0gzRGF0YToKKyAgICBjYXNlIGNtc1NpZzNjb2xvckRhdGE6ICByZXR1cm4gMzsKKworICAgIGNhc2UgY21zU2lnTHV2S0RhdGE6CisgICAgY2FzZSBjbXNTaWdDbXlrRGF0YToKKyAgICBjYXNlIGNtc1NpZ01DSDREYXRhOgorICAgIGNhc2UgY21zU2lnNGNvbG9yRGF0YTogIHJldHVybiA0OworCisgICAgY2FzZSBjbXNTaWdNQ0g1RGF0YToKKyAgICBjYXNlIGNtc1NpZzVjb2xvckRhdGE6ICByZXR1cm4gNTsKKworICAgIGNhc2UgY21zU2lnTUNINkRhdGE6CisgICAgY2FzZSBjbXNTaWc2Y29sb3JEYXRhOiAgcmV0dXJuIDY7CisKKyAgICBjYXNlIGNtc1NpZ01DSDdEYXRhOgorICAgIGNhc2UgY21zU2lnN2NvbG9yRGF0YTogIHJldHVybiAgNzsKKworICAgIGNhc2UgY21zU2lnTUNIOERhdGE6CisgICAgY2FzZSBjbXNTaWc4Y29sb3JEYXRhOiAgcmV0dXJuICA4OworCisgICAgY2FzZSBjbXNTaWdNQ0g5RGF0YToKKyAgICBjYXNlIGNtc1NpZzljb2xvckRhdGE6ICByZXR1cm4gIDk7CisKKyAgICBjYXNlIGNtc1NpZ01DSEFEYXRhOgorICAgIGNhc2UgY21zU2lnMTBjb2xvckRhdGE6IHJldHVybiAxMDsKKworICAgIGNhc2UgY21zU2lnTUNIQkRhdGE6CisgICAgY2FzZSBjbXNTaWcxMWNvbG9yRGF0YTogcmV0dXJuIDExOworCisgICAgY2FzZSBjbXNTaWdNQ0hDRGF0YToKKyAgICBjYXNlIGNtc1NpZzEyY29sb3JEYXRhOiByZXR1cm4gMTI7CisKKyAgICBjYXNlIGNtc1NpZ01DSEREYXRhOgorICAgIGNhc2UgY21zU2lnMTNjb2xvckRhdGE6IHJldHVybiAxMzsKKworICAgIGNhc2UgY21zU2lnTUNIRURhdGE6CisgICAgY2FzZSBjbXNTaWcxNGNvbG9yRGF0YTogcmV0dXJuIDE0OworCisgICAgY2FzZSBjbXNTaWdNQ0hGRGF0YToKKyAgICBjYXNlIGNtc1NpZzE1Y29sb3JEYXRhOiByZXR1cm4gMTU7CisKKyAgICBkZWZhdWx0OiByZXR1cm4gMzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zcGx1Z2luLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zcGx1Z2luLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU5MjhiNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNwbHVnaW4uYwpAQCAtMCwwICsxLDk1NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTAgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworCisjaW5jbHVkZSAibGNtczJfaW50ZXJuYWwuaCIKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBFbmNvZGluZyAmIERlY29kaW5nIHN1cHBvcnQgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vICAgICAgTGl0dGxlLUVuZGlhbiB0byBCaWctRW5kaWFuCisKKy8vIEFkanVzdCBhIHdvcmQgdmFsdWUgYWZ0ZXIgYmVpbmcgcmVhZGVkLyBiZWZvcmUgYmVpbmcgd3JpdHRlbiBmcm9tL3RvIGFuIElDQyBwcm9maWxlCitjbXNVSW50MTZOdW1iZXIgQ01TRVhQT1JUICBfY21zQWRqdXN0RW5kaWFuZXNzMTYoY21zVUludDE2TnVtYmVyIFdvcmQpCit7CisjaWZuZGVmIENNU19VU0VfQklHX0VORElBTgorCisgICAgY21zVUludDhOdW1iZXIqIHBCeXRlID0gKGNtc1VJbnQ4TnVtYmVyKikgJldvcmQ7CisgICAgY21zVUludDhOdW1iZXIgdG1wOworCisgICAgdG1wID0gcEJ5dGVbMF07CisgICAgcEJ5dGVbMF0gPSBwQnl0ZVsxXTsKKyAgICBwQnl0ZVsxXSA9IHRtcDsKKyNlbmRpZgorCisgICAgcmV0dXJuIFdvcmQ7Cit9CisKKworLy8gVHJhbnNwb3J0cyB0byBwcm9wZXJseSBlbmNvZGVkIHZhbHVlcyAtIG5vdGUgdGhhdCBpY2MgcHJvZmlsZXMgZG9lcyB1c2UgYmlnIGVuZGlhbiBub3RhdGlvbi4KKworLy8gMSAyIDMgNAorLy8gNCAzIDIgMQorCitjbXNVSW50MzJOdW1iZXIgQ01TRVhQT1JUICBfY21zQWRqdXN0RW5kaWFuZXNzMzIoY21zVUludDMyTnVtYmVyIERXb3JkKQoreworI2lmbmRlZiBDTVNfVVNFX0JJR19FTkRJQU4KKworICAgIGNtc1VJbnQ4TnVtYmVyKiBwQnl0ZSA9IChjbXNVSW50OE51bWJlciopICZEV29yZDsKKyAgICBjbXNVSW50OE51bWJlciB0ZW1wMTsKKyAgICBjbXNVSW50OE51bWJlciB0ZW1wMjsKKworICAgIHRlbXAxID0gKnBCeXRlKys7CisgICAgdGVtcDIgPSAqcEJ5dGUrKzsKKyAgICAqKHBCeXRlLTEpID0gKnBCeXRlOworICAgICpwQnl0ZSsrID0gdGVtcDI7CisgICAgKihwQnl0ZS0zKSA9ICpwQnl0ZTsKKyAgICAqcEJ5dGUgPSB0ZW1wMTsKKyNlbmRpZgorICAgIHJldHVybiBEV29yZDsKK30KKworLy8gMSAyIDMgNCA1IDYgNyA4CisvLyA4IDcgNiA1IDQgMyAyIDEKKwordm9pZCBDTVNFWFBPUlQgIF9jbXNBZGp1c3RFbmRpYW5lc3M2NChjbXNVSW50NjROdW1iZXIqIFJlc3VsdCwgY21zVUludDY0TnVtYmVyKiBRV29yZCkKK3sKKworI2lmbmRlZiBDTVNfVVNFX0JJR19FTkRJQU4KKworICAgIGNtc1VJbnQ4TnVtYmVyKiBwSW4gID0gKGNtc1VJbnQ4TnVtYmVyKikgUVdvcmQ7CisgICAgY21zVUludDhOdW1iZXIqIHBPdXQgPSAoY21zVUludDhOdW1iZXIqKSBSZXN1bHQ7CisKKyAgICBfY21zQXNzZXJ0KFJlc3VsdCAhPSBOVUxMKTsKKworICAgIHBPdXRbN10gPSBwSW5bMF07CisgICAgcE91dFs2XSA9IHBJblsxXTsKKyAgICBwT3V0WzVdID0gcEluWzJdOworICAgIHBPdXRbNF0gPSBwSW5bM107CisgICAgcE91dFszXSA9IHBJbls0XTsKKyAgICBwT3V0WzJdID0gcEluWzVdOworICAgIHBPdXRbMV0gPSBwSW5bNl07CisgICAgcE91dFswXSA9IHBJbls3XTsKKworI2Vsc2UKKyAgICBfY21zQXNzZXJ0KFJlc3VsdCAhPSBOVUxMKTsKKworIyAgaWZkZWYgQ01TX0RPTlRfVVNFX0lOVDY0CisgICAgKCpSZXN1bHQpWzBdID0gUVdvcmRbMF07CisgICAgKCpSZXN1bHQpWzFdID0gUVdvcmRbMV07CisjICBlbHNlCisgICAgKlJlc3VsdCA9ICpRV29yZDsKKyMgIGVuZGlmCisjZW5kaWYKK30KKworLy8gQXV4aWxpYXIgLS0gcmVhZCA4LCAxNiBhbmQgMzItYml0IG51bWJlcnMKK2Ntc0Jvb2wgQ01TRVhQT1JUICBfY21zUmVhZFVJbnQ4TnVtYmVyKGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQ4TnVtYmVyKiBuKQoreworICAgIGNtc1VJbnQ4TnVtYmVyIHRtcDsKKworICAgIF9jbXNBc3NlcnQoaW8gIT0gTlVMTCk7CisKKyAgICBpZiAoaW8gLT4gUmVhZChpbywgJnRtcCwgc2l6ZW9mKGNtc1VJbnQ4TnVtYmVyKSwgMSkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGlmIChuICE9IE5VTEwpICpuID0gdG1wOworICAgIHJldHVybiBUUlVFOworfQorCitjbXNCb29sIENNU0VYUE9SVCAgX2Ntc1JlYWRVSW50MTZOdW1iZXIoY21zSU9IQU5ETEVSKiBpbywgY21zVUludDE2TnVtYmVyKiBuKQoreworICAgIGNtc1VJbnQxNk51bWJlciB0bXA7CisKKyAgICBfY21zQXNzZXJ0KGlvICE9IE5VTEwpOworCisgICAgaWYgKGlvIC0+IFJlYWQoaW8sICZ0bXAsIHNpemVvZihjbXNVSW50MTZOdW1iZXIpLCAxKSAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKG4gIT0gTlVMTCkgKm4gPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYodG1wKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworY21zQm9vbCBDTVNFWFBPUlQgIF9jbXNSZWFkVUludDE2QXJyYXkoY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyIG4sIGNtc1VJbnQxNk51bWJlciogQXJyYXkpCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBfY21zQXNzZXJ0KGlvICE9IE5VTEwpOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICBpZiAoQXJyYXkgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgQXJyYXkgKyBpKSkgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgTlVMTCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitjbXNCb29sIENNU0VYUE9SVCAgX2Ntc1JlYWRVSW50MzJOdW1iZXIoY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuKQoreworICAgIGNtc1VJbnQzMk51bWJlciB0bXA7CisKKyAgICBfY21zQXNzZXJ0KGlvICE9IE5VTEwpOworCisgICAgaWYgKGlvIC0+IFJlYWQoaW8sICZ0bXAsIHNpemVvZihjbXNVSW50MzJOdW1iZXIpLCAxKSAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKG4gIT0gTlVMTCkgKm4gPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIodG1wKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworY21zQm9vbCBDTVNFWFBPUlQgIF9jbXNSZWFkRmxvYXQzMk51bWJlcihjbXNJT0hBTkRMRVIqIGlvLCBjbXNGbG9hdDMyTnVtYmVyKiBuKQoreworICAgIGNtc1VJbnQzMk51bWJlciB0bXA7CisKKyAgICBfY21zQXNzZXJ0KGlvICE9IE5VTEwpOworCisgICAgaWYgKGlvIC0+IFJlYWQoaW8sICZ0bXAsIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKSwgMSkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGlmIChuICE9IE5VTEwpIHsKKworICAgICAgICB0bXAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIodG1wKTsKKyAgICAgICAgKm4gPSAqKGNtc0Zsb2F0MzJOdW1iZXIqKSAmdG1wOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworCitjbXNCb29sIENNU0VYUE9SVCAgIF9jbXNSZWFkVUludDY0TnVtYmVyKGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQ2NE51bWJlciogbikKK3sKKyAgICBjbXNVSW50NjROdW1iZXIgdG1wOworCisgICAgX2Ntc0Fzc2VydChpbyAhPSBOVUxMKTsKKworICAgIGlmIChpbyAtPiBSZWFkKGlvLCAmdG1wLCBzaXplb2YoY21zVUludDY0TnVtYmVyKSwgMSkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGlmIChuICE9IE5VTEwpIF9jbXNBZGp1c3RFbmRpYW5lc3M2NChuLCAmdG1wKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworCitjbXNCb29sIENNU0VYUE9SVCAgX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoY21zSU9IQU5ETEVSKiBpbywgY21zRmxvYXQ2NE51bWJlciogbikKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgdG1wOworCisgICAgX2Ntc0Fzc2VydChpbyAhPSBOVUxMKTsKKworICAgIGlmIChpbyAtPiBSZWFkKGlvLCAmdG1wLCBzaXplb2YoY21zVUludDMyTnVtYmVyKSwgMSkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGlmIChuICE9IE5VTEwpIHsKKyAgICAgICAgKm4gPSBfY21zMTVGaXhlZDE2dG9Eb3VibGUoX2Ntc0FkanVzdEVuZGlhbmVzczMyKHRtcCkpOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIEp1bi0yMS0yMDAwOiBTb21lIHByb2ZpbGVzICh0aG9zZSB0aGF0IGNvbWVzIHdpdGggVzJLKSBjb21lcworLy8gd2l0aCB0aGUgbWVkaWEgd2hpdGUgKG1lZGlhIGJsYWNrPykgeCAxMDAuIEFkZCBhIHNhbml0eSBjaGVjaworCitzdGF0aWMKK3ZvaWQgTm9ybWFsaXplWFlaKGNtc0NJRVhZWiogRGVzdCkKK3sKKyAgICB3aGlsZSAoRGVzdCAtPiBYID4gMi4gJiYKKyAgICAgICAgICAgRGVzdCAtPiBZID4gMi4gJiYKKyAgICAgICAgICAgRGVzdCAtPiBaID4gMi4pIHsKKworICAgICAgICAgICAgICAgRGVzdCAtPiBYIC89IDEwLjsKKyAgICAgICAgICAgICAgIERlc3QgLT4gWSAvPSAxMC47CisgICAgICAgICAgICAgICBEZXN0IC0+IFogLz0gMTAuOworICAgICAgIH0KK30KKworY21zQm9vbCBDTVNFWFBPUlQgIF9jbXNSZWFkWFlaTnVtYmVyKGNtc0lPSEFORExFUiogaW8sIGNtc0NJRVhZWiogWFlaKQoreworICAgIGNtc0VuY29kZWRYWVpOdW1iZXIgeHl6OworCisgICAgX2Ntc0Fzc2VydChpbyAhPSBOVUxMKTsKKworICAgIGlmIChpbyAtPlJlYWQoaW8sICZ4eXosIHNpemVvZihjbXNFbmNvZGVkWFlaTnVtYmVyKSwgMSkgIT0gMSkgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKFhZWiAhPSBOVUxMKSB7CisKKyAgICAgICAgWFlaLT5YID0gX2NtczE1Rml4ZWQxNnRvRG91YmxlKF9jbXNBZGp1c3RFbmRpYW5lc3MzMih4eXouWCkpOworICAgICAgICBYWVotPlkgPSBfY21zMTVGaXhlZDE2dG9Eb3VibGUoX2Ntc0FkanVzdEVuZGlhbmVzczMyKHh5ei5ZKSk7CisgICAgICAgIFhZWi0+WiA9IF9jbXMxNUZpeGVkMTZ0b0RvdWJsZShfY21zQWRqdXN0RW5kaWFuZXNzMzIoeHl6LlopKTsKKworICAgICAgICBOb3JtYWxpemVYWVooWFlaKTsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK2Ntc0Jvb2wgQ01TRVhQT1JUICBfY21zV3JpdGVVSW50OE51bWJlcihjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50OE51bWJlciBuKQoreworICAgIF9jbXNBc3NlcnQoaW8gIT0gTlVMTCk7CisKKyAgICBpZiAoaW8gLT4gV3JpdGUoaW8sIHNpemVvZihjbXNVSW50OE51bWJlciksICZuKSAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK2Ntc0Jvb2wgQ01TRVhQT1JUICBfY21zV3JpdGVVSW50MTZOdW1iZXIoY21zSU9IQU5ETEVSKiBpbywgY21zVUludDE2TnVtYmVyIG4pCit7CisgICAgY21zVUludDE2TnVtYmVyIHRtcDsKKworICAgIF9jbXNBc3NlcnQoaW8gIT0gTlVMTCk7CisKKyAgICB0bXAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYobik7CisgICAgaWYgKGlvIC0+IFdyaXRlKGlvLCBzaXplb2YoY21zVUludDE2TnVtYmVyKSwgJnRtcCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworfQorCitjbXNCb29sIENNU0VYUE9SVCAgX2Ntc1dyaXRlVUludDE2QXJyYXkoY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyIG4sIGNvbnN0IGNtc1VJbnQxNk51bWJlciogQXJyYXkpCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBfY21zQXNzZXJ0KGlvICE9IE5VTEwpOworICAgIF9jbXNBc3NlcnQoQXJyYXkgIT0gTlVMTCk7CisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNk51bWJlcihpbywgQXJyYXlbaV0pKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK2Ntc0Jvb2wgQ01TRVhQT1JUICBfY21zV3JpdGVVSW50MzJOdW1iZXIoY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgY21zVUludDMyTnVtYmVyIHRtcDsKKworICAgIF9jbXNBc3NlcnQoaW8gIT0gTlVMTCk7CisKKyAgICB0bXAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIobik7CisgICAgaWYgKGlvIC0+IFdyaXRlKGlvLCBzaXplb2YoY21zVUludDMyTnVtYmVyKSwgJnRtcCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworfQorCisKK2Ntc0Jvb2wgQ01TRVhQT1JUICBfY21zV3JpdGVGbG9hdDMyTnVtYmVyKGNtc0lPSEFORExFUiogaW8sIGNtc0Zsb2F0MzJOdW1iZXIgbikKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgdG1wOworCisgICAgX2Ntc0Fzc2VydChpbyAhPSBOVUxMKTsKKworICAgIHRtcCA9ICooY21zVUludDMyTnVtYmVyKikgJm47CisgICAgdG1wID0gX2Ntc0FkanVzdEVuZGlhbmVzczMyKHRtcCk7CisgICAgaWYgKGlvIC0+IFdyaXRlKGlvLCBzaXplb2YoY21zVUludDMyTnVtYmVyKSwgJnRtcCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworfQorCitjbXNCb29sIENNU0VYUE9SVCAgX2Ntc1dyaXRlVUludDY0TnVtYmVyKGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQ2NE51bWJlciogbikKK3sKKyAgICBjbXNVSW50NjROdW1iZXIgdG1wOworCisgICAgX2Ntc0Fzc2VydChpbyAhPSBOVUxMKTsKKworICAgIF9jbXNBZGp1c3RFbmRpYW5lc3M2NCgmdG1wLCBuKTsKKyAgICBpZiAoaW8gLT4gV3JpdGUoaW8sIHNpemVvZihjbXNVSW50NjROdW1iZXIpLCAmdG1wKSAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK2Ntc0Jvb2wgQ01TRVhQT1JUICBfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoY21zSU9IQU5ETEVSKiBpbywgY21zRmxvYXQ2NE51bWJlciBuKQoreworICAgIGNtc1VJbnQzMk51bWJlciB0bXA7CisKKyAgICBfY21zQXNzZXJ0KGlvICE9IE5VTEwpOworCisgICAgdG1wID0gX2Ntc0FkanVzdEVuZGlhbmVzczMyKF9jbXNEb3VibGVUbzE1Rml4ZWQxNihuKSk7CisgICAgaWYgKGlvIC0+IFdyaXRlKGlvLCBzaXplb2YoY21zVUludDMyTnVtYmVyKSwgJnRtcCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworfQorCitjbXNCb29sIENNU0VYUE9SVCAgX2Ntc1dyaXRlWFlaTnVtYmVyKGNtc0lPSEFORExFUiogaW8sIGNvbnN0IGNtc0NJRVhZWiogWFlaKQoreworICAgIGNtc0VuY29kZWRYWVpOdW1iZXIgeHl6OworCisgICAgX2Ntc0Fzc2VydChpbyAhPSBOVUxMKTsKKyAgICBfY21zQXNzZXJ0KFhZWiAhPSBOVUxMKTsKKworICAgIHh5ei5YID0gX2Ntc0FkanVzdEVuZGlhbmVzczMyKF9jbXNEb3VibGVUbzE1Rml4ZWQxNihYWVotPlgpKTsKKyAgICB4eXouWSA9IF9jbXNBZGp1c3RFbmRpYW5lc3MzMihfY21zRG91YmxlVG8xNUZpeGVkMTYoWFlaLT5ZKSk7CisgICAgeHl6LlogPSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoX2Ntc0RvdWJsZVRvMTVGaXhlZDE2KFhZWi0+WikpOworCisgICAgcmV0dXJuIGlvIC0+IFdyaXRlKGlvLCAgc2l6ZW9mKGNtc0VuY29kZWRYWVpOdW1iZXIpLCAmeHl6KTsKK30KKworLy8gZnJvbSBGaXhlZCBwb2ludCA4LjggdG8gZG91YmxlCitjbXNGbG9hdDY0TnVtYmVyIENNU0VYUE9SVCBfY21zOEZpeGVkOHRvRG91YmxlKGNtc1VJbnQxNk51bWJlciBmaXhlZDgpCit7CisgICAgICAgY21zVUludDhOdW1iZXIgIG1zYiwgbHNiOworCisgICAgICAgbHNiID0gKGNtc1VJbnQ4TnVtYmVyKSAoZml4ZWQ4ICYgMHhmZik7CisgICAgICAgbXNiID0gKGNtc1VJbnQ4TnVtYmVyKSAoKChjbXNVSW50MTZOdW1iZXIpIGZpeGVkOCA+PiA4KSAmIDB4ZmYpOworCisgICAgICAgcmV0dXJuIChjbXNGbG9hdDY0TnVtYmVyKSAoKGNtc0Zsb2F0NjROdW1iZXIpIG1zYiArICgoY21zRmxvYXQ2NE51bWJlcikgbHNiIC8gMjU2LjApKTsKK30KKworY21zVUludDE2TnVtYmVyIENNU0VYUE9SVCBfY21zRG91YmxlVG84Rml4ZWQ4KGNtc0Zsb2F0NjROdW1iZXIgdmFsKQoreworICAgIGNtc1MxNUZpeGVkMTZOdW1iZXIgR2FtbWFGaXhlZDMyID0gX2Ntc0RvdWJsZVRvMTVGaXhlZDE2KHZhbCk7CisgICAgcmV0dXJuICAoY21zVUludDE2TnVtYmVyKSAoKEdhbW1hRml4ZWQzMiA+PiA4KSAmIDB4RkZGRik7Cit9CisKKy8vIGZyb20gRml4ZWQgcG9pbnQgMTUuMTYgdG8gZG91YmxlCitjbXNGbG9hdDY0TnVtYmVyIENNU0VYUE9SVCBfY21zMTVGaXhlZDE2dG9Eb3VibGUoY21zUzE1Rml4ZWQxNk51bWJlciBmaXgzMikKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGZsb2F0ZXIsIHNpZ24sIG1pZDsKKyAgICBpbnQgV2hvbGUsIEZyYWNQYXJ0OworCisgICAgc2lnbiAgPSAoZml4MzIgPCAwID8gLTEgOiAxKTsKKyAgICBmaXgzMiA9IGFicyhmaXgzMik7CisKKyAgICBXaG9sZSAgICAgPSAoY21zVUludDE2TnVtYmVyKShmaXgzMiA+PiAxNikgJiAweGZmZmY7CisgICAgRnJhY1BhcnQgID0gKGNtc1VJbnQxNk51bWJlcikoZml4MzIgJiAweGZmZmYpOworCisgICAgbWlkICAgICA9IChjbXNGbG9hdDY0TnVtYmVyKSBGcmFjUGFydCAvIDY1NTM2LjA7CisgICAgZmxvYXRlciA9IChjbXNGbG9hdDY0TnVtYmVyKSBXaG9sZSArIG1pZDsKKworICAgIHJldHVybiBzaWduICogZmxvYXRlcjsKK30KKworLy8gZnJvbSBkb3VibGUgdG8gRml4ZWQgcG9pbnQgMTUuMTYKK2Ntc1MxNUZpeGVkMTZOdW1iZXIgQ01TRVhQT1JUIF9jbXNEb3VibGVUbzE1Rml4ZWQxNihjbXNGbG9hdDY0TnVtYmVyIHYpCit7CisgICAgcmV0dXJuICgoY21zUzE1Rml4ZWQxNk51bWJlcikgZmxvb3IoKHYpKjY1NTM2LjAgKyAwLjUpKTsKK30KKworLy8gRGF0ZS9UaW1lIGZ1bmN0aW9ucworCit2b2lkIENNU0VYUE9SVCBfY21zRGVjb2RlRGF0ZVRpbWVOdW1iZXIoY29uc3QgY21zRGF0ZVRpbWVOdW1iZXIgKlNvdXJjZSwgc3RydWN0IHRtICpEZXN0KQoreworCisgICAgX2Ntc0Fzc2VydChEZXN0ICE9IE5VTEwpOworICAgIF9jbXNBc3NlcnQoU291cmNlICE9IE5VTEwpOworCisgICAgRGVzdC0+dG1fc2VjICAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoU291cmNlLT5zZWNvbmRzKTsKKyAgICBEZXN0LT50bV9taW4gICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MxNihTb3VyY2UtPm1pbnV0ZXMpOworICAgIERlc3QtPnRtX2hvdXIgID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KFNvdXJjZS0+aG91cnMpOworICAgIERlc3QtPnRtX21kYXkgID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KFNvdXJjZS0+ZGF5KTsKKyAgICBEZXN0LT50bV9tb24gICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MxNihTb3VyY2UtPm1vbnRoKSAtIDE7CisgICAgRGVzdC0+dG1feWVhciAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoU291cmNlLT55ZWFyKSAtIDE5MDA7CisgICAgRGVzdC0+dG1fd2RheSAgPSAtMTsKKyAgICBEZXN0LT50bV95ZGF5ICA9IC0xOworICAgIERlc3QtPnRtX2lzZHN0ID0gMDsKK30KKwordm9pZCBDTVNFWFBPUlQgX2Ntc0VuY29kZURhdGVUaW1lTnVtYmVyKGNtc0RhdGVUaW1lTnVtYmVyICpEZXN0LCBjb25zdCBzdHJ1Y3QgdG0gKlNvdXJjZSkKK3sKKyAgICBfY21zQXNzZXJ0KERlc3QgIT0gTlVMTCk7CisgICAgX2Ntc0Fzc2VydChTb3VyY2UgIT0gTlVMTCk7CisKKyAgICBEZXN0LT5zZWNvbmRzID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KChjbXNVSW50MTZOdW1iZXIpIFNvdXJjZS0+dG1fc2VjKTsKKyAgICBEZXN0LT5taW51dGVzID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KChjbXNVSW50MTZOdW1iZXIpIFNvdXJjZS0+dG1fbWluKTsKKyAgICBEZXN0LT5ob3VycyAgID0gX2Ntc0FkanVzdEVuZGlhbmVzczE2KChjbXNVSW50MTZOdW1iZXIpIFNvdXJjZS0+dG1faG91cik7CisgICAgRGVzdC0+ZGF5ICAgICA9IF9jbXNBZGp1c3RFbmRpYW5lc3MxNigoY21zVUludDE2TnVtYmVyKSBTb3VyY2UtPnRtX21kYXkpOworICAgIERlc3QtPm1vbnRoICAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoKGNtc1VJbnQxNk51bWJlcikgKFNvdXJjZS0+dG1fbW9uICsgMSkpOworICAgIERlc3QtPnllYXIgICAgPSBfY21zQWRqdXN0RW5kaWFuZXNzMTYoKGNtc1VJbnQxNk51bWJlcikgKFNvdXJjZS0+dG1feWVhciArIDE5MDApKTsKK30KKworLy8gUmVhZCBiYXNlIGFuZCByZXR1cm4gdHlwZSBiYXNlCitjbXNUYWdUeXBlU2lnbmF0dXJlIENNU0VYUE9SVCBfY21zUmVhZFR5cGVCYXNlKGNtc0lPSEFORExFUiogaW8pCit7CisgICAgX2Ntc1RhZ0Jhc2UgQmFzZTsKKworICAgIF9jbXNBc3NlcnQoaW8gIT0gTlVMTCk7CisKKyAgICBpZiAoaW8gLT4gUmVhZChpbywgJkJhc2UsIHNpemVvZihfY21zVGFnQmFzZSksIDEpICE9IDEpCisgICAgICAgIHJldHVybiAoY21zVGFnVHlwZVNpZ25hdHVyZSkgMDsKKworICAgIHJldHVybiAoY21zVGFnVHlwZVNpZ25hdHVyZSkgX2Ntc0FkanVzdEVuZGlhbmVzczMyKEJhc2Uuc2lnKTsKK30KKworLy8gU2V0dXAgYmFzZSBtYXJrZXIKK2Ntc0Jvb2wgIENNU0VYUE9SVCBfY21zV3JpdGVUeXBlQmFzZShjbXNJT0hBTkRMRVIqIGlvLCBjbXNUYWdUeXBlU2lnbmF0dXJlIHNpZykKK3sKKyAgICBfY21zVGFnQmFzZSAgQmFzZTsKKworICAgIF9jbXNBc3NlcnQoaW8gIT0gTlVMTCk7CisKKyAgICBCYXNlLnNpZyA9IChjbXNUYWdUeXBlU2lnbmF0dXJlKSBfY21zQWRqdXN0RW5kaWFuZXNzMzIoc2lnKTsKKyAgICBtZW1zZXQoJkJhc2UucmVzZXJ2ZWQsIDAsIHNpemVvZihCYXNlLnJlc2VydmVkKSk7CisgICAgcmV0dXJuIGlvIC0+IFdyaXRlKGlvLCBzaXplb2YoX2Ntc1RhZ0Jhc2UpLCAmQmFzZSk7Cit9CisKK2Ntc0Jvb2wgQ01TRVhQT1JUIF9jbXNSZWFkQWxpZ25tZW50KGNtc0lPSEFORExFUiogaW8pCit7CisgICAgY21zVUludDhOdW1iZXIgIEJ1ZmZlcls0XTsKKyAgICBjbXNVSW50MzJOdW1iZXIgTmV4dEFsaWduZWQsIEF0OworICAgIGNtc1VJbnQzMk51bWJlciBCeXRlc1RvTmV4dEFsaWduZWRQb3M7CisKKyAgICBfY21zQXNzZXJ0KGlvICE9IE5VTEwpOworCisgICAgQXQgPSBpbyAtPiBUZWxsKGlvKTsKKyAgICBOZXh0QWxpZ25lZCA9IF9jbXNBTElHTkxPTkcoQXQpOworICAgIEJ5dGVzVG9OZXh0QWxpZ25lZFBvcyA9IE5leHRBbGlnbmVkIC0gQXQ7CisgICAgaWYgKEJ5dGVzVG9OZXh0QWxpZ25lZFBvcyA9PSAwKSByZXR1cm4gVFJVRTsKKyAgICBpZiAoQnl0ZXNUb05leHRBbGlnbmVkUG9zID4gNCkgIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiAoaW8gLT5SZWFkKGlvLCBCdWZmZXIsIEJ5dGVzVG9OZXh0QWxpZ25lZFBvcywgMSkgPT0gMSk7Cit9CisKK2Ntc0Jvb2wgQ01TRVhQT1JUIF9jbXNXcml0ZUFsaWdubWVudChjbXNJT0hBTkRMRVIqIGlvKQoreworICAgIGNtc1VJbnQ4TnVtYmVyICBCdWZmZXJbNF07CisgICAgY21zVUludDMyTnVtYmVyIE5leHRBbGlnbmVkLCBBdDsKKyAgICBjbXNVSW50MzJOdW1iZXIgQnl0ZXNUb05leHRBbGlnbmVkUG9zOworCisgICAgX2Ntc0Fzc2VydChpbyAhPSBOVUxMKTsKKworICAgIEF0ID0gaW8gLT4gVGVsbChpbyk7CisgICAgTmV4dEFsaWduZWQgPSBfY21zQUxJR05MT05HKEF0KTsKKyAgICBCeXRlc1RvTmV4dEFsaWduZWRQb3MgPSBOZXh0QWxpZ25lZCAtIEF0OworICAgIGlmIChCeXRlc1RvTmV4dEFsaWduZWRQb3MgPT0gMCkgcmV0dXJuIFRSVUU7CisgICAgaWYgKEJ5dGVzVG9OZXh0QWxpZ25lZFBvcyA+IDQpICByZXR1cm4gRkFMU0U7CisKKyAgICBtZW1zZXQoQnVmZmVyLCAwLCBCeXRlc1RvTmV4dEFsaWduZWRQb3MpOworICAgIHJldHVybiBpbyAtPiBXcml0ZShpbywgQnl0ZXNUb05leHRBbGlnbmVkUG9zLCBCdWZmZXIpOworfQorCisKKy8vIFRvIGRlYWwgd2l0aCB0ZXh0IHN0cmVhbXMuIDJLIGF0IG1vc3QKK2Ntc0Jvb2wgQ01TRVhQT1JUIF9jbXNJT1ByaW50ZihjbXNJT0hBTkRMRVIqIGlvLCBjb25zdCBjaGFyKiBmcm0sIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3M7CisgICAgaW50IGxlbjsKKyAgICBjbXNVSW50OE51bWJlciBCdWZmZXJbMjA0OF07CisgICAgY21zQm9vbCByYzsKKworICAgIF9jbXNBc3NlcnQoaW8gIT0gTlVMTCk7CisgICAgX2Ntc0Fzc2VydChmcm0gIT0gTlVMTCk7CisKKyAgICB2YV9zdGFydChhcmdzLCBmcm0pOworCisgICAgbGVuID0gdnNucHJpbnRmKChjaGFyKikgQnVmZmVyLCAyMDQ3LCBmcm0sIGFyZ3MpOworICAgIGlmIChsZW4gPCAwKSByZXR1cm4gRkFMU0U7ICAgLy8gVHJ1bmNhdGVkLCB3aGljaCBpcyBhIGZhdGFsIGVycm9yIGZvciB1cworCisgICAgcmMgPSBpbyAtPldyaXRlKGlvLCBsZW4sIEJ1ZmZlcik7CisKKyAgICB2YV9lbmQoYXJncyk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKworLy8gUGx1Z2luIG1lbW9yeSBtYW5hZ2VtZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gU3BlY2lhbGl6ZWQgbWFsbG9jIGZvciBwbHVnLWlucywgdGhhdCBpcyBmcmVlZCB1cG9uIGV4aXQuCit2b2lkKiBfY21zUGx1Z2luTWFsbG9jKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNVSW50MzJOdW1iZXIgc2l6ZSkKK3sKKyAgICBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHggPSBfY21zR2V0Q29udGV4dChDb250ZXh0SUQpOworCisgICAgaWYgKGN0eCAtPk1lbVBvb2wgPT0gTlVMTCkgeworCisgICAgICAgIGlmIChDb250ZXh0SUQgPT0gTlVMTCkgeworCisgICAgICAgICAgICBjdHgtPk1lbVBvb2wgPSBfY21zQ3JlYXRlU3ViQWxsb2MoMCwgMioxMDI0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKENvbnRleHRJRCwgY21zRVJST1JfQ09SUlVQVElPTl9ERVRFQ1RFRCwgIk5VTEwgbWVtb3J5IHBvb2wgb24gY29udGV4dCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gX2Ntc1N1YkFsbG9jKGN0eC0+TWVtUG9vbCwgc2l6ZSk7Cit9CisKKworLy8gTWFpbiBwbHVnLWluIGRpc3BhdGNoZXIKK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc1BsdWdpbih2b2lkKiBQbHVnX2luKQoreworICAgIHJldHVybiBjbXNQbHVnaW5USFIoTlVMTCwgUGx1Z19pbik7Cit9CisKK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc1BsdWdpblRIUihjbXNDb250ZXh0IGlkLCB2b2lkKiBQbHVnX2luKQoreworICAgIGNtc1BsdWdpbkJhc2UqIFBsdWdpbjsKKworICAgIGZvciAoUGx1Z2luID0gKGNtc1BsdWdpbkJhc2UqKSBQbHVnX2luOworICAgICAgICAgUGx1Z2luICE9IE5VTEw7CisgICAgICAgICBQbHVnaW4gPSBQbHVnaW4gLT4gTmV4dCkgeworCisgICAgICAgICAgICBpZiAoUGx1Z2luIC0+IE1hZ2ljICE9IGNtc1BsdWdpbk1hZ2ljTnVtYmVyKSB7CisgICAgICAgICAgICAgICAgY21zU2lnbmFsRXJyb3IoaWQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiVW5yZWNvZ25pemVkIHBsdWdpbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFBsdWdpbiAtPkV4cGVjdGVkVmVyc2lvbiA+IExDTVNfVkVSU0lPTikgeworICAgICAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKGlkLCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgInBsdWdpbiBuZWVkcyBMaXR0bGUgQ01TICVkLCBjdXJyZW50IHZlcnNpb24gaXMgJWQiLAorICAgICAgICAgICAgICAgICAgICBQbHVnaW4gLT5FeHBlY3RlZFZlcnNpb24sIExDTVNfVkVSU0lPTik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKFBsdWdpbiAtPiBUeXBlKSB7CisKKyAgICAgICAgICAgICAgICBjYXNlIGNtc1BsdWdpbk1lbUhhbmRsZXJTaWc6CisgICAgICAgICAgICAgICAgICAgIGlmICghX2Ntc1JlZ2lzdGVyTWVtSGFuZGxlclBsdWdpbihpZCwgUGx1Z2luKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgY21zUGx1Z2luSW50ZXJwb2xhdGlvblNpZzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfY21zUmVnaXN0ZXJJbnRlcnBQbHVnaW4oaWQsIFBsdWdpbikpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIGNtc1BsdWdpblRhZ1R5cGVTaWc6CisgICAgICAgICAgICAgICAgICAgIGlmICghX2Ntc1JlZ2lzdGVyVGFnVHlwZVBsdWdpbihpZCwgUGx1Z2luKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgY21zUGx1Z2luVGFnU2lnOgorICAgICAgICAgICAgICAgICAgICBpZiAoIV9jbXNSZWdpc3RlclRhZ1BsdWdpbihpZCwgUGx1Z2luKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgY21zUGx1Z2luRm9ybWF0dGVyc1NpZzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfY21zUmVnaXN0ZXJGb3JtYXR0ZXJzUGx1Z2luKGlkLCBQbHVnaW4pKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBjbXNQbHVnaW5SZW5kZXJpbmdJbnRlbnRTaWc6CisgICAgICAgICAgICAgICAgICAgIGlmICghX2Ntc1JlZ2lzdGVyUmVuZGVyaW5nSW50ZW50UGx1Z2luKGlkLCBQbHVnaW4pKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBjbXNQbHVnaW5QYXJhbWV0cmljQ3VydmVTaWc6CisgICAgICAgICAgICAgICAgICAgIGlmICghX2Ntc1JlZ2lzdGVyUGFyYW1ldHJpY0N1cnZlc1BsdWdpbihpZCwgUGx1Z2luKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgY21zUGx1Z2luTXVsdGlQcm9jZXNzRWxlbWVudFNpZzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfY21zUmVnaXN0ZXJNdWx0aVByb2Nlc3NFbGVtZW50UGx1Z2luKGlkLCBQbHVnaW4pKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBjbXNQbHVnaW5PcHRpbWl6YXRpb25TaWc6CisgICAgICAgICAgICAgICAgICAgIGlmICghX2Ntc1JlZ2lzdGVyT3B0aW1pemF0aW9uUGx1Z2luKGlkLCBQbHVnaW4pKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBjbXNQbHVnaW5UcmFuc2Zvcm1TaWc6CisgICAgICAgICAgICAgICAgICAgIGlmICghX2Ntc1JlZ2lzdGVyVHJhbnNmb3JtUGx1Z2luKGlkLCBQbHVnaW4pKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBjbXNQbHVnaW5NdXRleFNpZzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfY21zUmVnaXN0ZXJNdXRleFBsdWdpbihpZCwgUGx1Z2luKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKGlkLCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVucmVjb2duaXplZCBwbHVnaW4gdHlwZSAnJVgnIiwgUGx1Z2luIC0+IFR5cGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgfQorCisgICAgLy8gS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcGx1Zy1pbgorICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIFJldmVydCBhbGwgcGx1Zy1pbnMgdG8gZGVmYXVsdAordm9pZCBDTVNFWFBPUlQgY21zVW5yZWdpc3RlclBsdWdpbnModm9pZCkKK3sKKyAgICBjbXNVbnJlZ2lzdGVyUGx1Z2luc1RIUihOVUxMKTsKK30KKworCisvLyBUaGUgR2xvYmFsIHN0b3JhZ2UgZm9yIHN5c3RlbSBjb250ZXh0LiBUaGlzIGlzIHRoZSBvbmUgYW5kIG9ubHkgZ2xvYmFsIHZhcmlhYmxlCisvLyBwb2ludGVycyBzdHJ1Y3R1cmUuIEFsbCBnbG9iYWwgdmFycyBhcmUgcmVmZXJlbmNlZCBoZXJlLgorc3RhdGljIHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QgZ2xvYmFsQ29udGV4dCA9IHsKKworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90IGluIHRoZSBsaW5rZWQgbGlzdAorICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gc3ViYWxsb2NhdG9yCisgICAgeworICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIFVzZXJQdHIsICAgICAgICAgICAgCisgICAgICAgICZfY21zTG9nRXJyb3JDaHVuaywgICAgICAgICAgICAvLyAgTG9nZ2VyLAorICAgICAgICAmX2Ntc0FsYXJtQ29kZXNDaHVuaywgICAgICAgICAgLy8gIEFsYXJtQ29kZXMsCisgICAgICAgICZfY21zQWRhcHRhdGlvblN0YXRlQ2h1bmssICAgICAvLyAgQWRhcHRhdGlvblN0YXRlLCAKKyAgICAgICAgJl9jbXNNZW1QbHVnaW5DaHVuaywgICAgICAgICAgIC8vICBNZW1QbHVnaW4sCisgICAgICAgICZfY21zSW50ZXJwUGx1Z2luQ2h1bmssICAgICAgICAvLyAgSW50ZXJwUGx1Z2luLAorICAgICAgICAmX2Ntc0N1cnZlc1BsdWdpbkNodW5rLCAgICAgICAgLy8gIEN1cnZlc1BsdWdpbiwKKyAgICAgICAgJl9jbXNGb3JtYXR0ZXJzUGx1Z2luQ2h1bmssICAgIC8vICBGb3JtYXR0ZXJzUGx1Z2luLAorICAgICAgICAmX2Ntc1RhZ1R5cGVQbHVnaW5DaHVuaywgICAgICAgLy8gIFRhZ1R5cGVQbHVnaW4sCisgICAgICAgICZfY21zVGFnUGx1Z2luQ2h1bmssICAgICAgICAgICAvLyAgVGFnUGx1Z2luLAorICAgICAgICAmX2Ntc0ludGVudHNQbHVnaW5DaHVuaywgICAgICAgLy8gIEludGVudFBsdWdpbiwKKyAgICAgICAgJl9jbXNNUEVUeXBlUGx1Z2luQ2h1bmssICAgICAgIC8vICBNUEVQbHVnaW4sCisgICAgICAgICZfY21zT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmssICAvLyAgT3B0aW1pemF0aW9uUGx1Z2luLAorICAgICAgICAmX2Ntc1RyYW5zZm9ybVBsdWdpbkNodW5rLCAgICAgLy8gIFRyYW5zZm9ybVBsdWdpbiwKKyAgICAgICAgJl9jbXNNdXRleFBsdWdpbkNodW5rICAgICAgICAgIC8vICBNdXRleFBsdWdpbgorICAgIH0sCisgICAgCisgICAgeyBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0gLy8gVGhlIGRlZmF1bHQgbWVtb3J5IGFsbG9jYXRvciBpcyBub3QgdXNlZCBmb3IgY29udGV4dCAwCit9OworCisKKy8vIFRoZSBjb250ZXh0IHBvb2wgKGxpbmtlZCBsaXN0IGhlYWQpCitzdGF0aWMgX2Ntc011dGV4IF9jbXNDb250ZXh0UG9vbEhlYWRNdXRleCA9IENNU19NVVRFWF9JTklUSUFMSVpFUjsKK3N0YXRpYyBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBfY21zQ29udGV4dFBvb2xIZWFkID0gTlVMTDsKKworLy8gSW50ZXJuYWwsIGdldCBhc3NvY2lhdGVkIHBvaW50ZXIsIHdpdGggZ3Vlc3NpbmcuIE5ldmVyIHJldHVybnMgTlVMTC4KK3N0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIF9jbXNHZXRDb250ZXh0KGNtc0NvbnRleHQgQ29udGV4dElEKQoreworICAgIHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGlkID0gKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqKSBDb250ZXh0SUQ7CisgICAgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4OworCisKKyAgICAvLyBPbiAwLCB1c2UgZ2xvYmFsIHNldHRpbmdzCisgICAgaWYgKGlkID09IE5VTEwpIAorICAgICAgICByZXR1cm4gJmdsb2JhbENvbnRleHQ7CisKKyAgICAvLyBTZWFyY2gKKyAgICBmb3IgKGN0eCA9IF9jbXNDb250ZXh0UG9vbEhlYWQ7CisgICAgICAgICBjdHggIT0gTlVMTDsKKyAgICAgICAgIGN0eCA9IGN0eCAtPk5leHQpIHsKKworICAgICAgICAgICAgLy8gRm91bmQgaXQ/CisgICAgICAgICAgICBpZiAoaWQgPT0gY3R4KQorICAgICAgICAgICAgICAgIHJldHVybiBjdHg7IC8vIE5ldy1zdHlsZSBjb250ZXh0LCAKKyAgICB9CisKKyAgICByZXR1cm4gJmdsb2JhbENvbnRleHQ7Cit9CisKKworLy8gSW50ZXJuYWw6IGdldCB0aGUgbWVtb3J5IGFyZWEgYXNzb2NpYW50ZWQgd2l0aCBlYWNoIGNvbnRleHQgY2xpZW50CisvLyBSZXR1cm5zIHRoZSBibG9jayBhc3NpZ25lZCB0byB0aGUgc3BlY2lmaWMgem9uZS4gCit2b2lkKiBfY21zQ29udGV4dEdldENsaWVudENodW5rKGNtc0NvbnRleHQgQ29udGV4dElELCBfY21zTWVtb3J5Q2xpZW50IG1jKQoreworICAgIHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eDsKKyAgICB2b2lkICpwdHI7CisKKyAgICBpZiAobWMgPCAwIHx8IG1jID49IE1lbW9yeUNsaWVudE1heCkgeworICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX1JBTkdFLCAiQmFkIGNvbnRleHQgY2xpZW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAKKyAgICBjdHggPSBfY21zR2V0Q29udGV4dChDb250ZXh0SUQpOworICAgIHB0ciA9IGN0eCAtPmNodW5rc1ttY107CisKKyAgICBpZiAocHRyICE9IE5VTEwpCisgICAgICAgIHJldHVybiBwdHI7CisKKyAgICAvLyBBIG51bGwgcHRyIG1lYW5zIG5vIHNwZWNpYWwgc2V0dGluZ3MgZm9yIHRoYXQgY29udGV4dCwgYW5kIHRoaXMgCisgICAgLy8gcmV2ZXJ0cyB0byBDb250ZXh0MCBnbG9iYWxzCisgICAgcmV0dXJuIGdsb2JhbENvbnRleHQuY2h1bmtzW21jXTsgICAgCit9CisKKworLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBnaXZlbiBjb250ZXh0IGl0cyBkZWZhdWx0IHByaXN0aW5lIHN0YXRlLAorLy8gYXMgbm8gcGx1Zy1pbnMgd2VyZSBkZWNsYXJlZC4gVGhlcmUgaXMgbm8gd2F5IHRvIHVucmVnaXN0ZXIgYSBzaW5nbGUgCisvLyBwbHVnLWluLCBhcyBhIHNpbmdsZSBjYWxsIHRvIGNtc1BsdWdpblRIUigpIGZ1bmN0aW9uIG1heSByZWdpc3RlciAKKy8vIG1hbnkgZGlmZmVyZW50IHBsdWctaW5zIHNpbXVsdGFuZW91c2x5LCB0aGVuIHRoZXJlIGlzIG5vIHdheSB0byAKKy8vIGlkZW50aWZ5IHdoaWNoIHBsdWctaW4gdG8gdW5yZWdpc3Rlci4KK3ZvaWQgQ01TRVhQT1JUIGNtc1VucmVnaXN0ZXJQbHVnaW5zVEhSKGNtc0NvbnRleHQgQ29udGV4dElEKQoreworICAgIF9jbXNSZWdpc3Rlck1lbUhhbmRsZXJQbHVnaW4oQ29udGV4dElELCBOVUxMKTsKKyAgICBfY21zUmVnaXN0ZXJJbnRlcnBQbHVnaW4oQ29udGV4dElELCBOVUxMKTsKKyAgICBfY21zUmVnaXN0ZXJUYWdUeXBlUGx1Z2luKENvbnRleHRJRCwgTlVMTCk7CisgICAgX2Ntc1JlZ2lzdGVyVGFnUGx1Z2luKENvbnRleHRJRCwgTlVMTCk7CisgICAgX2Ntc1JlZ2lzdGVyRm9ybWF0dGVyc1BsdWdpbihDb250ZXh0SUQsIE5VTEwpOworICAgIF9jbXNSZWdpc3RlclJlbmRlcmluZ0ludGVudFBsdWdpbihDb250ZXh0SUQsIE5VTEwpOworICAgIF9jbXNSZWdpc3RlclBhcmFtZXRyaWNDdXJ2ZXNQbHVnaW4oQ29udGV4dElELCBOVUxMKTsKKyAgICBfY21zUmVnaXN0ZXJNdWx0aVByb2Nlc3NFbGVtZW50UGx1Z2luKENvbnRleHRJRCwgTlVMTCk7CisgICAgX2Ntc1JlZ2lzdGVyT3B0aW1pemF0aW9uUGx1Z2luKENvbnRleHRJRCwgTlVMTCk7CisgICAgX2Ntc1JlZ2lzdGVyVHJhbnNmb3JtUGx1Z2luKENvbnRleHRJRCwgTlVMTCk7ICAgIAorICAgIF9jbXNSZWdpc3Rlck11dGV4UGx1Z2luKENvbnRleHRJRCwgTlVMTCk7Cit9CisKKworLy8gUmV0dXJucyB0aGUgbWVtb3J5IG1hbmFnZXIgcGx1Zy1pbiwgaWYgYW55LCBmcm9tIHRoZSBQbHVnLWluIGJ1bmRsZQorc3RhdGljCitjbXNQbHVnaW5NZW1IYW5kbGVyKiBfY21zRmluZE1lbW9yeVBsdWdpbih2b2lkKiBQbHVnaW5CdW5kbGUpCit7CisgICAgY21zUGx1Z2luQmFzZSogUGx1Z2luOworCisgICAgZm9yIChQbHVnaW4gPSAoY21zUGx1Z2luQmFzZSopIFBsdWdpbkJ1bmRsZTsKKyAgICAgICAgUGx1Z2luICE9IE5VTEw7CisgICAgICAgIFBsdWdpbiA9IFBsdWdpbiAtPiBOZXh0KSB7CisKKyAgICAgICAgICAgIGlmIChQbHVnaW4gLT4gTWFnaWMgPT0gY21zUGx1Z2luTWFnaWNOdW1iZXIgJiYgCisgICAgICAgICAgICAgICAgUGx1Z2luIC0+IEV4cGVjdGVkVmVyc2lvbiA8PSBMQ01TX1ZFUlNJT04gJiYgCisgICAgICAgICAgICAgICAgUGx1Z2luIC0+IFR5cGUgPT0gY21zUGx1Z2luTWVtSGFuZGxlclNpZykgeworCisgICAgICAgICAgICAgICAgICAgIC8vIEZvdW5kIQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGNtc1BsdWdpbk1lbUhhbmRsZXIqKSBQbHVnaW47ICAKKyAgICAgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBOb3BlLCByZXZlcnQgdG8gZGVmYXVsdHMgCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLy8gQ3JlYXRlcyBhIG5ldyBjb250ZXh0IHdpdGggb3B0aW9uYWwgYXNzb2NpYXRlZCBwbHVnLWlucy4gQ2FsbGVyIG1heSBhbHNvIHNwZWNpZnkgYW4gb3B0aW9uYWwgcG9pbnRlciB0byB1c2VyLWRlZmluZWQgCisvLyBkYXRhIHRoYXQgd2lsbCBiZSBmb3J3YXJkZWQgdG8gcGx1Zy1pbnMgYW5kIGxvZ2dlci4KK2Ntc0NvbnRleHQgQ01TRVhQT1JUIGNtc0NyZWF0ZUNvbnRleHQodm9pZCogUGx1Z2luLCB2b2lkKiBVc2VyRGF0YSkKK3sKKyAgICBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHg7CisgICAgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCAgZmFrZUNvbnRleHQ7CisgICAgICAgIAorICAgIF9jbXNJbnN0YWxsQWxsb2NGdW5jdGlvbnMoX2Ntc0ZpbmRNZW1vcnlQbHVnaW4oUGx1Z2luKSwgJmZha2VDb250ZXh0LkRlZmF1bHRNZW1vcnlNYW5hZ2VyKTsKKyAgICAKKyAgICBmYWtlQ29udGV4dC5jaHVua3NbVXNlclB0cl0gICAgID0gVXNlckRhdGE7CisgICAgZmFrZUNvbnRleHQuY2h1bmtzW01lbVBsdWdpbl0gICA9ICZmYWtlQ29udGV4dC5EZWZhdWx0TWVtb3J5TWFuYWdlcjsKKworICAgIC8vIENyZWF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUuCisgICAgY3R4ID0gKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqKSBfY21zTWFsbG9jKCZmYWtlQ29udGV4dCwgc2l6ZW9mKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QpKTsKKyAgICBpZiAoY3R4ID09IE5VTEwpICAgCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgLy8gU29tZXRoaW5nIHZlcnkgd3JvbmcgaGFwcGVuZWQhCisKKyAgICAvLyBJbml0IHRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBtZW1vcnkgbWFuYWdlcgorICAgIG1lbXNldChjdHgsIDAsIHNpemVvZihzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KSk7CisKKyAgICAvLyBLZWVwIG1lbW9yeSBtYW5hZ2VyCisgICAgbWVtY3B5KCZjdHgtPkRlZmF1bHRNZW1vcnlNYW5hZ2VyLCAmZmFrZUNvbnRleHQuRGVmYXVsdE1lbW9yeU1hbmFnZXIsIHNpemVvZihfY21zTWVtUGx1Z2luQ2h1bmspKTsgCisgICAKKyAgICAvLyBNYWludGFpbiB0aGUgbGlua2VkIGxpc3QgKHdpdGggcHJvcGVyIGxvY2tpbmcpCisgICAgX2Ntc0VudGVyQ3JpdGljYWxTZWN0aW9uUHJpbWl0aXZlKCZfY21zQ29udGV4dFBvb2xIZWFkTXV0ZXgpOworICAgICAgIGN0eCAtPk5leHQgPSBfY21zQ29udGV4dFBvb2xIZWFkOworICAgICAgIF9jbXNDb250ZXh0UG9vbEhlYWQgPSBjdHg7CisgICAgX2Ntc0xlYXZlQ3JpdGljYWxTZWN0aW9uUHJpbWl0aXZlKCZfY21zQ29udGV4dFBvb2xIZWFkTXV0ZXgpOworCisgICAgY3R4IC0+Y2h1bmtzW1VzZXJQdHJdICAgICA9IFVzZXJEYXRhOworICAgIGN0eCAtPmNodW5rc1tNZW1QbHVnaW5dICAgPSAmY3R4LT5EZWZhdWx0TWVtb3J5TWFuYWdlcjsKKyAgIAorICAgIC8vIE5vdyB3ZSBjYW4gYWxsb2NhdGUgdGhlIHBvb2wgYnkgdXNpbmcgZGVmYXVsdCBtZW1vcnkgbWFuYWdlcgorICAgIGN0eCAtPk1lbVBvb2wgPSBfY21zQ3JlYXRlU3ViQWxsb2MoY3R4LCAyMiAqIHNpemVvZih2b2lkKikpOyAgLy8gZGVmYXVsdCBzaXplIGFib3V0IDMyIHBvaW50ZXJzCisgICAgaWYgKGN0eCAtPk1lbVBvb2wgPT0gTlVMTCkgeworCisgICAgICAgICBjbXNEZWxldGVDb250ZXh0KGN0eCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIF9jbXNBbGxvY0xvZ0Vycm9yQ2h1bmsoY3R4LCBOVUxMKTsKKyAgICBfY21zQWxsb2NBbGFybUNvZGVzQ2h1bmsoY3R4LCBOVUxMKTsKKyAgICBfY21zQWxsb2NBZGFwdGF0aW9uU3RhdGVDaHVuayhjdHgsIE5VTEwpOworICAgIF9jbXNBbGxvY01lbVBsdWdpbkNodW5rKGN0eCwgTlVMTCk7CisgICAgX2Ntc0FsbG9jSW50ZXJwUGx1Z2luQ2h1bmsoY3R4LCBOVUxMKTsKKyAgICBfY21zQWxsb2NDdXJ2ZXNQbHVnaW5DaHVuayhjdHgsIE5VTEwpOworICAgIF9jbXNBbGxvY0Zvcm1hdHRlcnNQbHVnaW5DaHVuayhjdHgsIE5VTEwpOworICAgIF9jbXNBbGxvY1RhZ1R5cGVQbHVnaW5DaHVuayhjdHgsIE5VTEwpOworICAgIF9jbXNBbGxvY01QRVR5cGVQbHVnaW5DaHVuayhjdHgsIE5VTEwpOworICAgIF9jbXNBbGxvY1RhZ1BsdWdpbkNodW5rKGN0eCwgTlVMTCk7CisgICAgX2Ntc0FsbG9jSW50ZW50c1BsdWdpbkNodW5rKGN0eCwgTlVMTCk7CisgICAgX2Ntc0FsbG9jT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmsoY3R4LCBOVUxMKTsKKyAgICBfY21zQWxsb2NUcmFuc2Zvcm1QbHVnaW5DaHVuayhjdHgsIE5VTEwpOworICAgIF9jbXNBbGxvY011dGV4UGx1Z2luQ2h1bmsoY3R4LCBOVUxMKTsKKworICAgIC8vIFNldHVwIHRoZSBwbHVnLWlucworICAgIGlmICghY21zUGx1Z2luVEhSKGN0eCwgUGx1Z2luKSkgeworICAgIAorICAgICAgICBjbXNEZWxldGVDb250ZXh0KGN0eCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiAoY21zQ29udGV4dCkgY3R4OyAgCit9CisKKy8vIER1cGxpY2F0ZXMgYSBjb250ZXh0IHdpdGggYWxsIGFzc29jaWF0ZWQgcGx1Zy1pbnMuIAorLy8gQ2FsbGVyIG1heSBzcGVjaWZ5IGFuIG9wdGlvbmFsIHBvaW50ZXIgdG8gdXNlci1kZWZpbmVkIAorLy8gZGF0YSB0aGF0IHdpbGwgYmUgZm9yd2FyZGVkIHRvIHBsdWctaW5zIGFuZCBsb2dnZXIuIAorY21zQ29udGV4dCBDTVNFWFBPUlQgY21zRHVwQ29udGV4dChjbXNDb250ZXh0IENvbnRleHRJRCwgdm9pZCogTmV3VXNlckRhdGEpCit7CisgICAgaW50IGk7CisgICAgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4OworICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYyA9IF9jbXNHZXRDb250ZXh0KENvbnRleHRJRCk7CisKKyAgICB2b2lkKiB1c2VyRGF0YSA9IChOZXdVc2VyRGF0YSAhPSBOVUxMKSA/IE5ld1VzZXJEYXRhIDogc3JjIC0+IGNodW5rc1tVc2VyUHRyXTsKKyAgICAKKyAgICAKKyAgICBjdHggPSAoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCopIF9jbXNNYWxsb2MoQ29udGV4dElELCBzaXplb2Yoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCkpOworICAgIGlmIChjdHggPT0gTlVMTCkgICAKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAvLyBTb21ldGhpbmcgdmVyeSB3cm9uZyBoYXBwZW5lZAorCisgICAgLy8gU2V0dXAgZGVmYXVsdCBtZW1vcnkgYWxsb2NhdG9ycworICAgIG1lbWNweSgmY3R4LT5EZWZhdWx0TWVtb3J5TWFuYWdlciwgJnNyYy0+RGVmYXVsdE1lbW9yeU1hbmFnZXIsIHNpemVvZihjdHgtPkRlZmF1bHRNZW1vcnlNYW5hZ2VyKSk7CisKKyAgICAvLyBNYWludGFpbiB0aGUgbGlua2VkIGxpc3QKKyAgICBfY21zRW50ZXJDcml0aWNhbFNlY3Rpb25QcmltaXRpdmUoJl9jbXNDb250ZXh0UG9vbEhlYWRNdXRleCk7CisgICAgICAgY3R4IC0+TmV4dCA9IF9jbXNDb250ZXh0UG9vbEhlYWQ7CisgICAgICAgX2Ntc0NvbnRleHRQb29sSGVhZCA9IGN0eDsKKyAgICBfY21zTGVhdmVDcml0aWNhbFNlY3Rpb25QcmltaXRpdmUoJl9jbXNDb250ZXh0UG9vbEhlYWRNdXRleCk7CisKKyAgICBjdHggLT5jaHVua3NbVXNlclB0cl0gICAgPSB1c2VyRGF0YTsKKyAgICBjdHggLT5jaHVua3NbTWVtUGx1Z2luXSAgPSAmY3R4LT5EZWZhdWx0TWVtb3J5TWFuYWdlcjsKKworICAgIGN0eCAtPk1lbVBvb2wgPSBfY21zQ3JlYXRlU3ViQWxsb2MoY3R4LCAyMiAqIHNpemVvZih2b2lkKikpOworICAgIGlmIChjdHggLT5NZW1Qb29sID09IE5VTEwpIHsKKworICAgICAgICAgY21zRGVsZXRlQ29udGV4dChjdHgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBBbGxvY2F0ZSBhbGwgcmVxdWlyZWQgY2h1bmtzLgorICAgIF9jbXNBbGxvY0xvZ0Vycm9yQ2h1bmsoY3R4LCBzcmMpOworICAgIF9jbXNBbGxvY0FsYXJtQ29kZXNDaHVuayhjdHgsIHNyYyk7CisgICAgX2Ntc0FsbG9jQWRhcHRhdGlvblN0YXRlQ2h1bmsoY3R4LCBzcmMpOworICAgIF9jbXNBbGxvY01lbVBsdWdpbkNodW5rKGN0eCwgc3JjKTsKKyAgICBfY21zQWxsb2NJbnRlcnBQbHVnaW5DaHVuayhjdHgsIHNyYyk7CisgICAgX2Ntc0FsbG9jQ3VydmVzUGx1Z2luQ2h1bmsoY3R4LCBzcmMpOworICAgIF9jbXNBbGxvY0Zvcm1hdHRlcnNQbHVnaW5DaHVuayhjdHgsIHNyYyk7CisgICAgX2Ntc0FsbG9jVGFnVHlwZVBsdWdpbkNodW5rKGN0eCwgc3JjKTsKKyAgICBfY21zQWxsb2NNUEVUeXBlUGx1Z2luQ2h1bmsoY3R4LCBzcmMpOworICAgIF9jbXNBbGxvY1RhZ1BsdWdpbkNodW5rKGN0eCwgc3JjKTsKKyAgICBfY21zQWxsb2NJbnRlbnRzUGx1Z2luQ2h1bmsoY3R4LCBzcmMpOworICAgIF9jbXNBbGxvY09wdGltaXphdGlvblBsdWdpbkNodW5rKGN0eCwgc3JjKTsKKyAgICBfY21zQWxsb2NUcmFuc2Zvcm1QbHVnaW5DaHVuayhjdHgsIHNyYyk7CisgICAgX2Ntc0FsbG9jTXV0ZXhQbHVnaW5DaHVuayhjdHgsIHNyYyk7CisKKyAgICAvLyBNYWtlIHN1cmUgbm8gb25lIGZhaWxlZAorICAgIGZvciAoaT1Mb2dnZXI7IGkgPCBNZW1vcnlDbGllbnRNYXg7IGkrKykgeworCisgICAgICAgIGlmIChzcmMgLT5jaHVua3NbaV0gPT0gTlVMTCkgeworICAgICAgICAgICAgY21zRGVsZXRlQ29udGV4dCgoY21zQ29udGV4dCkgY3R4KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIChjbXNDb250ZXh0KSBjdHg7Cit9CisKKworCitzdGF0aWMKK3N0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIEZpbmRQcmV2KHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGlkKQoreworICAgIHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHByZXY7CisKKyAgICAvLyBTZWFyY2ggZm9yIHByZXZpb3VzCisgICAgZm9yIChwcmV2ID0gX2Ntc0NvbnRleHRQb29sSGVhZDsgCisgICAgICAgICAgICAgcHJldiAhPSBOVUxMOworICAgICAgICAgICAgIHByZXYgPSBwcmV2IC0+TmV4dCkKKyAgICB7CisgICAgICAgIGlmIChwcmV2IC0+TmV4dCA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBwcmV2OworICAgIH0KKworICAgIHJldHVybiBOVUxMOyAgLy8gTGlzdCBpcyBlbXB0eSBvciBvbmx5IG9uZSBlbGVtZW50IQorfQorCisvLyBGcmVlcyBhbnkgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCwgCisvLyBhbmQgZGVzdHJveXMgdGhlIGNvbnRleHQgcGxhY2Vob2xkZXIuIAorLy8gVGhlIENvbnRleHRJRCBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgaW4gYW55IFRIUiBvcGVyYXRpb24uICAKK3ZvaWQgQ01TRVhQT1JUIGNtc0RlbGV0ZUNvbnRleHQoY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgaWYgKENvbnRleHRJRCAhPSBOVUxMKSB7CisKKyAgICAgICAgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4ID0gKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqKSBDb250ZXh0SUQ7ICAgICAgICAgICAgICAKKyAgICAgICAgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCAgZmFrZUNvbnRleHQ7ICAKKyAgICAgICAgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogcHJldjsKKworICAgICAgICBtZW1jcHkoJmZha2VDb250ZXh0LkRlZmF1bHRNZW1vcnlNYW5hZ2VyLCAmY3R4LT5EZWZhdWx0TWVtb3J5TWFuYWdlciwgc2l6ZW9mKGN0eC0+RGVmYXVsdE1lbW9yeU1hbmFnZXIpKTsKKworICAgICAgICBmYWtlQ29udGV4dC5jaHVua3NbVXNlclB0cl0gICAgID0gY3R4IC0+Y2h1bmtzW1VzZXJQdHJdOworICAgICAgICBmYWtlQ29udGV4dC5jaHVua3NbTWVtUGx1Z2luXSAgID0gJmZha2VDb250ZXh0LkRlZmF1bHRNZW1vcnlNYW5hZ2VyOworCisgICAgICAgIC8vIEdldCByaWQgb2YgcGx1Z2lucworICAgICAgICBjbXNVbnJlZ2lzdGVyUGx1Z2luc1RIUihDb250ZXh0SUQpOyAKKworICAgICAgICAvLyBTaW5jZSBhbGwgbWVtb3J5IGlzIGFsbG9jYXRlZCBpbiB0aGUgcHJpdmF0ZSBwb29sLCBhbGwgd2hhdCB3ZSBuZWVkIHRvIGRvIGlzIGRlc3Ryb3kgdGhlIHBvb2wKKyAgICAgICAgaWYgKGN0eCAtPiBNZW1Qb29sICE9IE5VTEwpCisgICAgICAgICAgICAgIF9jbXNTdWJBbGxvY0Rlc3Ryb3koY3R4IC0+TWVtUG9vbCk7CisgICAgICAgIGN0eCAtPiBNZW1Qb29sID0gTlVMTDsKKworICAgICAgICAvLyBNYWludGFpbiBsaXN0CisgICAgICAgIF9jbXNFbnRlckNyaXRpY2FsU2VjdGlvblByaW1pdGl2ZSgmX2Ntc0NvbnRleHRQb29sSGVhZE11dGV4KTsKKyAgICAgICAgaWYgKF9jbXNDb250ZXh0UG9vbEhlYWQgPT0gY3R4KSB7IAorCisgICAgICAgICAgICBfY21zQ29udGV4dFBvb2xIZWFkID0gY3R4LT5OZXh0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICAvLyBTZWFyY2ggZm9yIHByZXZpb3VzCisgICAgICAgICAgICBmb3IgKHByZXYgPSBfY21zQ29udGV4dFBvb2xIZWFkOyAKKyAgICAgICAgICAgICAgICBwcmV2ICE9IE5VTEw7CisgICAgICAgICAgICAgICAgcHJldiA9IHByZXYgLT5OZXh0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChwcmV2IC0+IE5leHQgPT0gY3R4KSB7CisgICAgICAgICAgICAgICAgICAgIHByZXYgLT4gTmV4dCA9IGN0eCAtPk5leHQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBfY21zTGVhdmVDcml0aWNhbFNlY3Rpb25QcmltaXRpdmUoJl9jbXNDb250ZXh0UG9vbEhlYWRNdXRleCk7CisKKyAgICAgICAgLy8gZnJlZSB0aGUgbWVtb3J5IGJsb2NrIGl0c2VsZgorICAgICAgICBfY21zRnJlZSgmZmFrZUNvbnRleHQsIGN0eCk7CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRoZSB1c2VyIGRhdGEgYXNzb2NpYXRlZCB0byB0aGUgZ2l2ZW4gQ29udGV4dElELCBvciBOVUxMIGlmIG5vIHVzZXIgZGF0YSB3YXMgYXR0YWNoZWQgb24gY29udGV4dCBjcmVhdGlvbgordm9pZCogQ01TRVhQT1JUIGNtc0dldENvbnRleHRVc2VyRGF0YShjbXNDb250ZXh0IENvbnRleHRJRCkKK3sKKyAgICByZXR1cm4gX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIFVzZXJQdHIpOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3BzMi5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3BzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNGI0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zcHMyLmMKQEAgLTAsMCArMSwxNTk3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSBNYXJ0aSBNYXJpYSBTYWd1ZXIKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlCisvLyBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTworLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKy8vIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKy8vIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisKKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIgorCisvLyBQb3N0U2NyaXB0IENvbG9yUmVuZGVyaW5nRGljdGlvbmFyeSBhbmQgQ29sb3JTcGFjZUFycmF5CisKKworI2RlZmluZSBNQVhQU0NPTFMgICA2MCAgICAgIC8vIENvbHVtbnMgb24gdGFibGVzCisKKy8qCisgICAgSW1wbGVtZW50YXRpb24KKyAgICAtLS0tLS0tLS0tLS0tLQorCisgIFBvc3RTY3JpcHQgZG9lcyB1c2UgWFlaIGFzIGl0cyBpbnRlcm5hbCBQQ1MuIEJ1dCBzaW5jZSBQb3N0U2NyaXB0CisgIGludGVycG9sYXRpb24gdGFibGVzIGFyZSBsaW1pdGVkIHRvIDggYml0cywgSSB1c2UgTGFiIGFzIGEgd2F5IHRvCisgIGltcHJvdmUgdGhlIGFjY3VyYWN5LCBmYXZvcmluZyBwZXJjZXB0dWFsIHJlc3VsdHMuIFNvLCBmb3IgdGhlIGNyZWF0aW9uCisgIG9mIGVhY2ggQ1JELCBDU0EgdGhlIHByb2ZpbGVzIGFyZSBjb252ZXJ0ZWQgdG8gTGFiIHZpYSBhIGRldmljZQorICBsaW5rIGJldHdlZW4gIHByb2ZpbGUgLT4gTGFiIG9yIExhYiAtPiBwcm9maWxlLiBUaGUgUFMgY29kZSBuZWNlc3NhcnkgdG8KKyAgY29udmVydCBMYWIgPC0+IFhZWiBpcyBhbHNvIGluY2x1ZGVkLgorCisKKworICBDb2xvciBTcGFjZSBBcnJheXMgKENTQSkKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIEluIG9yZGVyIHRvIG9idGFpbiBwcmVjaXNpb24sIGNvZGUgY2hvb3NlcyBiZXR3ZWVuIHRocmVlIHdheXMgdG8gaW1wbGVtZW50CisgIHRoZSBkZXZpY2UgLT4gWFlaIHRyYW5zZm9ybS4gVGhlc2UgY2FzZXMgaWRlbnRpZmllcyBtb25vY2hyb21lIHByb2ZpbGVzIChvZnRlbgorICBpbXBsZW1lbnRlZCBhcyBhIHNldCBvZiBjdXJ2ZXMpLCBtYXRyaXgtc2hhcGVyIGFuZCBQaXBlbGluZS1iYXNlZC4KKworICBNb25vY2hyb21lCisgIC0tLS0tLS0tLS0tCisKKyAgVGhpcyBpcyBpbXBsZW1lbnRlZCBhcyAvQ0lFQmFzZWRBIENTQS4gVGhlIHByZWxpbmVhcml6YXRpb24gY3VydmUgaXMKKyAgcGxhY2VkIGludG8gL0RlY29kZUEgc2VjdGlvbiwgYW5kIG1hdHJpeCBlcXVhbHMgdG8gRDUwLiBTaW5jZSBoZXJlIGlzCisgIG5vIGludGVycG9sYXRpb24gdGFibGVzLCBJIGRvIHRoZSBjb252ZXJzaW9uIGRpcmVjdGx5IHRvIFhZWgorCisgIE5PVEU6IENMVVQtYmFzZWQgbW9ub2Nocm9tZSBwcm9maWxlcyBhcmUgTk9UIHN1cHBvcnRlZC4gU28sIGNtc0ZMQUdTX01BVFJJWElOUFVUCisgIGZsYWcgaXMgZm9yY2VkIG9uIHN1Y2ggcHJvZmlsZXMuCisKKyAgICBbIC9DSUVCYXNlZEEKKyAgICAgIDw8CisgICAgICAgICAgICAvRGVjb2RlQSB7IHRyYW5zZmVyIGZ1bmN0aW9uIH0gYmluZAorICAgICAgICAgICAgL01hdHJpeEEgW0Q1MF0KKyAgICAgICAgICAgIC9SYW5nZUxNTiBbIDAuMCBjbXNENTBYIDAuMCBjbXNENTBZIDAuMCBjbXNENTBaIF0KKyAgICAgICAgICAgIC9XaGl0ZVBvaW50IFtENTBdCisgICAgICAgICAgICAvQmxhY2tQb2ludCBbQlBdCisgICAgICAgICAgICAvUmVuZGVyaW5nSW50ZW50IChpbnRlbnQpCisgICAgICA+PgorICAgIF0KKworICAgT24gc2ltcGxlciBwcm9maWxlcywgdGhlIFBDUyBpcyBhbHJlYWR5IFhZWiwgc28gbm8gY29udmVyc2lvbiBpcyByZXF1aXJlZC4KKworCisgICBNYXRyaXgtc2hhcGVyIGJhc2VkCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgIFRoaXMgaXMgaW1wbGVtZW50ZWQgYm90aCB3aXRoIC9DSUVCYXNlZEFCQyBvciAvQ0lFQmFzZWRERUYgb24gZGVwZW5kaWcKKyAgIG9mIHByb2ZpbGUgaW1wbGVtZW50YXRpb24uIFNpbmNlIGhlcmUgdGhlcmUgYXJlIG5vIGludGVycG9sYXRpb24gdGFibGVzLCBJIGRvCisgICB0aGUgY29udmVyc2lvbiBkaXJlY3RseSB0byBYWVoKKworCisKKyAgICBbIC9DSUVCYXNlZEFCQworICAgICAgICAgICAgPDwKKyAgICAgICAgICAgICAgICAvRGVjb2RlQUJDIFsge3RyYW5zZmVyMX0ge3RyYW5zZmVyMn0ge3RyYW5zZmVyM30gXQorICAgICAgICAgICAgICAgIC9NYXRyaXhBQkMgW01hdHJpeF0KKyAgICAgICAgICAgICAgICAvUmFuZ2VMTU4gWyAwLjAgY21zRDUwWCAwLjAgY21zRDUwWSAwLjAgY21zRDUwWiBdCisgICAgICAgICAgICAgICAgL0RlY29kZUxNTiBbIHsgLyAyfSBkdXAgZHVwIF0KKyAgICAgICAgICAgICAgICAvV2hpdGVQb2ludCBbRDUwXQorICAgICAgICAgICAgICAgIC9CbGFja1BvaW50IFtCUF0KKyAgICAgICAgICAgICAgICAvUmVuZGVyaW5nSW50ZW50IChpbnRlbnQpCisgICAgICAgICAgICA+PgorICAgIF0KKworCisgICAgQ0xVVCBiYXNlZAorICAgIC0tLS0tLS0tLS0KKworICAgICBMYWIgaXMgdXNlZCBpbiBzdWNoIGNhc2VzLgorCisgICAgWyAvQ0lFQmFzZWRERUYKKyAgICAgICAgICAgIDw8CisgICAgICAgICAgICAvRGVjb2RlREVGIFsgPHByZWxpbmVhcml6YXRpb24+IF0KKyAgICAgICAgICAgIC9UYWJsZSBbIHAgcCBwIFs8Li4uPl1dCisgICAgICAgICAgICAvUmFuZ2VBQkMgWyAwIDEgMCAxIDAgMV0KKyAgICAgICAgICAgIC9EZWNvZGVBQkNbIDxwb3N0bGluZWFyaXphdGlvbj4gXQorICAgICAgICAgICAgL1JhbmdlTE1OIFsgLTAuMjM2IDEuMjU0IDAgMSAtMC42MzUgMS42NDAgXQorICAgICAgICAgICAgICAgJSAtMTI4LzUwMCAxKzEyNy81MDAgMCAxICAtMTI3LzIwMCAxKzEyOC8yMDAKKyAgICAgICAgICAgIC9NYXRyaXhBQkMgWyAxIDEgMSAxIDAgMCAwIDAgLTFdCisgICAgICAgICAgICAvV2hpdGVQb2ludCBbRDUwXQorICAgICAgICAgICAgL0JsYWNrUG9pbnQgW0JQXQorICAgICAgICAgICAgL1JlbmRlcmluZ0ludGVudCAoaW50ZW50KQorICAgIF0KKworCisgIENvbG9yIFJlbmRlcmluZyBEaWN0aW9uYXJpZXMgKENSRCkKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBUaGVzZSBhcmUgYWx3YXlzIGltcGxlbWVudGVkIGFzIENMVVQsIGFuZCBhbHdheXMgYXJlIHVzaW5nIExhYi4gU2luY2UgQ1JEIGFyZSBleHBlY3RlZCB0bworICBiZSB1c2VkIGFzIHJlc291cmNlcywgdGhlIGNvZGUgYWRkcyB0aGUgZGVmaW5pdGlvbiBhcyB3ZWxsLgorCisgIDw8CisgICAgL0NvbG9yUmVuZGVyaW5nVHlwZSAxCisgICAgL1doaXRlUG9pbnQgWyBENTAgXQorICAgIC9CbGFja1BvaW50IFtCUF0KKyAgICAvTWF0cml4UFFSIFsgQnJhZGZvcmQgXQorICAgIC9SYW5nZVBRUiBbLTAuMTI1IDEuMzc1IC0wLjEyNSAxLjM3NSAtMC4xMjUgMS4zNzUgXQorICAgIC9UcmFuc2Zvcm1QUVIgWworICAgIHs0IGluZGV4IDMgZ2V0IGRpdiAyIGluZGV4IDMgZ2V0IG11bCBleGNoIHBvcCBleGNoIHBvcCBleGNoIHBvcCBleGNoIHBvcCB9IGJpbmQKKyAgICB7NCBpbmRleCA0IGdldCBkaXYgMiBpbmRleCA0IGdldCBtdWwgZXhjaCBwb3AgZXhjaCBwb3AgZXhjaCBwb3AgZXhjaCBwb3AgfSBiaW5kCisgICAgezQgaW5kZXggNSBnZXQgZGl2IDIgaW5kZXggNSBnZXQgbXVsIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4Y2ggcG9wIH0gYmluZAorICAgIF0KKyAgICAvTWF0cml4QUJDIDwuLi4+CisgICAgL0VuY29kZUFCQyA8Li4uPgorICAgIC9SYW5nZUFCQyAgPC4uIHVzZWQgZm9yICBYWVogLT4gTGFiPgorICAgIC9FbmNvZGVMTU4KKyAgICAvUmVuZGVyVGFibGUgWyBwIHAgcCBbPC4uLj5dXQorCisgICAgL1JlbmRlcmluZ0ludGVudCAoUGVyY2VwdHVhbCkKKyAgPj4KKyAgL0N1cnJlbnQgZXhjaCAvQ29sb3JSZW5kZXJpbmcgZGVmaW5lcmVzb3VyY2UgcG9wCisKKworICBUaGUgZm9sbG93aW5nIHN0YWdlcyBhcmUgdXNlZCB0byBjb252ZXJ0IGZyb20gWFlaIHRvIExhYgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIElucHV0IGlzIGdpdmVuIGF0IExNTiBzdGFnZSBvbiBYLCBZLCBaCisKKyAgRW5jb2RlIExNTiBnaXZlcyB1cyBmKFgvWG4pLCBmKFkvWW4pLCBmKFovWm4pCisKKyAgL0VuY29kZUxNTiBbCisKKyAgICB7IDAuOTY0MjAwICBkaXYgZHVwIDAuMDA4ODU2IGxlIHs3Ljc4NyBtdWwgMTYgMTE2IGRpdiBhZGR9ezEgMyBkaXYgZXhwfSBpZmVsc2UgfSBiaW5kCisgICAgeyAxLjAwMDAwMCAgZGl2IGR1cCAwLjAwODg1NiBsZSB7Ny43ODcgbXVsIDE2IDExNiBkaXYgYWRkfXsxIDMgZGl2IGV4cH0gaWZlbHNlIH0gYmluZAorICAgIHsgMC44MjQ5MDAgIGRpdiBkdXAgMC4wMDg4NTYgbGUgezcuNzg3IG11bCAxNiAxMTYgZGl2IGFkZH17MSAzIGRpdiBleHB9IGlmZWxzZSB9IGJpbmQKKworICAgIF0KKworCisgIE1hdHJpeEFCQyBpcyB1c2VkIHRvIGNvbXB1dGUgZihZL1luKSwgZihYL1huKSAtIGYoWS9ZbiksIGYoWS9ZbikgLSBmKFovWm4pCisKKyAgfCAwICAxICAwfAorICB8IDEgLTEgIDB8CisgIHwgMCAgMSAtMXwKKworICAvTWF0cml4QUJDIFsgMCAxIDAgMSAtMSAxIDAgMCAtMSBdCisKKyBFbmNvZGVBQkMgZmluYWxseSBnaXZlcyBMYWIgdmFsdWVzLgorCisgIC9FbmNvZGVBQkMgWworICAgIHsgMTE2IG11bCAgMTYgc3ViIDEwMCBkaXYgIH0gYmluZAorICAgIHsgNTAwIG11bCAxMjggYWRkIDI1NSBkaXYgIH0gYmluZAorICAgIHsgMjAwIG11bCAxMjggYWRkIDI1NSBkaXYgIH0gYmluZAorICAgIF0KKworICBUaGUgZm9sbG93aW5nIHN0YWdlcyBhcmUgdXNlZCB0byBjb252ZXJ0IExhYiB0byBYWVoKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgL1JhbmdlQUJDIFsgMCAxIDAgMSAwIDFdCisgICAgL0RlY29kZUFCQyBbIHsgMTAwIG11bCAxNiBhZGQgMTE2IGRpdiB9IGJpbmQKKyAgICAgICAgICAgICAgICAgeyAyNTUgbXVsIDEyOCBzdWIgNTAwIGRpdiB9IGJpbmQKKyAgICAgICAgICAgICAgICAgeyAyNTUgbXVsIDEyOCBzdWIgMjAwIGRpdiB9IGJpbmQKKyAgICAgICAgICAgICAgIF0KKworICAgIC9NYXRyaXhBQkMgWyAxIDEgMSAxIDAgMCAwIDAgLTFdCisgICAgL0RlY29kZUxNTiBbCisgICAgICAgICAgICAgICAge2R1cCA2IDI5IGRpdiBnZSB7ZHVwIGR1cCBtdWwgbXVsfSB7NCAyOSBkaXYgc3ViIDEwOCA4NDEgZGl2IG11bH0gaWZlbHNlIDAuOTY0MjAwIG11bH0gYmluZAorICAgICAgICAgICAgICAgIHtkdXAgNiAyOSBkaXYgZ2Uge2R1cCBkdXAgbXVsIG11bH0gezQgMjkgZGl2IHN1YiAxMDggODQxIGRpdiBtdWx9IGlmZWxzZSB9IGJpbmQKKyAgICAgICAgICAgICAgICB7ZHVwIDYgMjkgZGl2IGdlIHtkdXAgZHVwIG11bCBtdWx9IHs0IDI5IGRpdiBzdWIgMTA4IDg0MSBkaXYgbXVsfSBpZmVsc2UgMC44MjQ5MDAgbXVsfSBiaW5kCisgICAgICAgICAgICAgICAgXQorCisKKyovCisKKy8qCisKKyBQb3N0U2NyaXB0IGFsZ29yaXRobXMgZGlzY3Vzc2lvbi4KKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAxRCBpbnRlcnBvbGF0aW9uIGFsZ29yaXRobQorCisKKyAgMUQgaW50ZXJwb2xhdGlvbiAoZmxvYXQpCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmFsMiA9IERvbWFpbiAqIFZhbHVlOworCisgICAgY2VsbDAgPSAoaW50KSBmbG9vcih2YWwyKTsKKyAgICBjZWxsMSA9IChpbnQpIGNlaWwodmFsMik7CisKKyAgICByZXN0ID0gdmFsMiAtIGNlbGwwOworCisgICAgeTAgPSBMdXRUYWJsZVtjZWxsMF0gOworICAgIHkxID0gTHV0VGFibGVbY2VsbDFdIDsKKworICAgIHkgPSB5MCArICh5MSAtIHkwKSAqIHJlc3Q7CisKKworCisgIFBvc3RTY3JpcHQgY29kZSAgICAgICAgICAgICAgICAgICBTdGFjaworICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB2CisgICAgPGNoZWNrIDAuLjEuMD4KKyAgICBbYXJyYXldICAgICAgICAgICAgICAgICAgICAgICAgICUgdiB0YWIKKyAgICBkdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdiB0YWIgdGFiCisgICAgbGVuZ3RoIDEgc3ViICAgICAgICAgICAgICAgICAgICAlIHYgdGFiIGRvbQorCisgICAgMyAtMSByb2xsICAgICAgICAgICAgICAgICAgICAgICAlIHRhYiBkb20gdgorCisgICAgbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHRhYiB2YWwyCisgICAgZHVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHRhYiB2YWwyIHZhbDIKKyAgICBkdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdGFiIHZhbDIgdmFsMiB2YWwyCisgICAgZmxvb3IgY3ZpICAgICAgICAgICAgICAgICAgICAgICAlIHRhYiB2YWwyIHZhbDIgY2VsbDAKKyAgICBleGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdGFiIHZhbDIgY2VsbDAgdmFsMgorICAgIGNlaWxpbmcgY3ZpICAgICAgICAgICAgICAgICAgICAgJSB0YWIgdmFsMiBjZWxsMCBjZWxsMQorCisgICAgMyBpbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAlIHRhYiB2YWwyIGNlbGwwIGNlbGwxIHRhYgorICAgIGV4Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB0YWIgdmFsMiBjZWxsMCB0YWIgY2VsbDEKKyAgICBnZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdGFiIHZhbDIgY2VsbDAgeTEKKworICAgIDQgLTEgcm9sbCAgICAgICAgICAgICAgICAgICAgICAgJSB2YWwyIGNlbGwwIHkxIHRhYgorICAgIDMgLTEgcm9sbCAgICAgICAgICAgICAgICAgICAgICAgJSB2YWwyIHkxIHRhYiBjZWxsMAorICAgIGdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB2YWwyIHkxIHkwCisKKyAgICBkdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdmFsMiB5MSB5MCB5MAorICAgIDMgMSByb2xsICAgICAgICAgICAgICAgICAgICAgICAgJSB2YWwyIHkwIHkxIHkwCisKKyAgICBzdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdmFsMiB5MCAoeTEteTApCisgICAgMyAtMSByb2xsICAgICAgICAgICAgICAgICAgICAgICAlIHkwICh5MS15MCkgdmFsMgorICAgIGR1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB5MCAoeTEteTApIHZhbDIgdmFsMgorICAgIGZsb29yIGN2aSAgICAgICAgICAgICAgICAgICAgICAgJSB5MCAoeTEteTApIHZhbDIgZmxvb3IodmFsMikKKyAgICBzdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgeTAgKHkxLXkwKSByZXN0CisgICAgbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHkwIHQxCisgICAgYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHkKKyAgICA2NTUzNSBkaXYgICAgICAgICAgICAgICAgICAgICAgICUgcmVzdWx0CisKKyAgfSBiaW5kCisKKworKi8KKworCisvLyBUaGlzIHN0cnVjdCBob2xkcyB0aGUgbWVtb3J5IGJsb2NrIGN1cnJlbnRseSBiZWluZyB3cml0ZQordHlwZWRlZiBzdHJ1Y3QgeworICAgIF9jbXNTdGFnZUNMdXREYXRhKiBQaXBlbGluZTsKKyAgICBjbXNJT0hBTkRMRVIqIG07CisKKyAgICBpbnQgRmlyc3RDb21wb25lbnQ7CisgICAgaW50IFNlY29uZENvbXBvbmVudDsKKworICAgIGNvbnN0IGNoYXIqIFByZU1hajsKKyAgICBjb25zdCBjaGFyKiBQb3N0TWFqOworICAgIGNvbnN0IGNoYXIqIFByZU1pbjsKKyAgICBjb25zdCBjaGFyKiBQb3N0TWluOworCisgICAgaW50ICBGaXhXaGl0ZTsgICAgLy8gRm9yY2UgbWFwcGluZyBvZiBwdXJlIHdoaXRlCisKKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlICBDb2xvclNwYWNlOyAgLy8gQ29sb3JTcGFjZSBvZiBwcm9maWxlCisKKworfSBjbXNQc1NhbXBsZXJDYXJnbzsKKworc3RhdGljIGludCBfY21zUFNBY3R1YWxDb2x1bW4gPSAwOworCisKKy8vIENvbnZlcnQgdG8gYnl0ZQorc3RhdGljCitjbXNVSW50OE51bWJlciBXb3JkMkJ5dGUoY21zVUludDE2TnVtYmVyIHcpCit7CisgICAgcmV0dXJuIChjbXNVSW50OE51bWJlcikgZmxvb3IoKGNtc0Zsb2F0NjROdW1iZXIpIHcgLyAyNTcuMCArIDAuNSk7Cit9CisKKworLy8gQ29udmVydCB0byBieXRlICh1c2luZyBJQ0MyIG5vdGF0aW9uKQorLyoKK3N0YXRpYworY21zVUludDhOdW1iZXIgTDJCeXRlKGNtc1VJbnQxNk51bWJlciB3KQoreworICAgIGludCB3dyA9IHcgKyAweDAwODA7CisKKyAgICBpZiAod3cgPiAweEZGRkYpIHJldHVybiAweEZGOworCisgICAgcmV0dXJuIChjbXNVSW50OE51bWJlcikgKChjbXNVSW50MTZOdW1iZXIpICh3dyA+PiA4KSAmIDB4RkYpOworfQorKi8KKworLy8gV3JpdGUgYSBjb29rZWQgYnl0ZQorCitzdGF0aWMKK3ZvaWQgV3JpdGVCeXRlKGNtc0lPSEFORExFUiogbSwgY21zVUludDhOdW1iZXIgYikKK3sKKyAgICBfY21zSU9QcmludGYobSwgIiUwMngiLCBiKTsKKyAgICBfY21zUFNBY3R1YWxDb2x1bW4gKz0gMjsKKworICAgIGlmIChfY21zUFNBY3R1YWxDb2x1bW4gPiBNQVhQU0NPTFMpIHsKKworICAgICAgICBfY21zSU9QcmludGYobSwgIlxuIik7CisgICAgICAgIF9jbXNQU0FjdHVhbENvbHVtbiA9IDA7CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQb3N0U2NyaXB0IGdlbmVyYXRpb24KKworCisvLyBSZW1vdmVzIG9mZmVuZGluZyBDYXJyaWFnZSByZXR1cm5zCitzdGF0aWMKK2NoYXIqIFJlbW92ZUNSKGNvbnN0IGNoYXIqIHR4dCkKK3sKKyAgICBzdGF0aWMgY2hhciBCdWZmZXJbMjA0OF07CisgICAgY2hhciogcHQ7CisKKyAgICBzdHJuY3B5KEJ1ZmZlciwgdHh0LCAyMDQ3KTsKKyAgICBCdWZmZXJbMjA0N10gPSAwOworICAgIGZvciAocHQgPSBCdWZmZXI7ICpwdDsgcHQrKykKKyAgICAgICAgICAgIGlmICgqcHQgPT0gJ1xuJyB8fCAqcHQgPT0gJ1xyJykgKnB0ID0gJyAnOworCisgICAgcmV0dXJuIEJ1ZmZlcjsKKworfQorCitzdGF0aWMKK3ZvaWQgRW1pdEhlYWRlcihjbXNJT0hBTkRMRVIqIG0sIGNvbnN0IGNoYXIqIFRpdGxlLCBjbXNIUFJPRklMRSBoUHJvZmlsZSkKK3sKKyAgICB0aW1lX3QgdGltZXI7CisgICAgY21zTUxVICpEZXNjcmlwdGlvbiwgKkNvcHlyaWdodDsKKyAgICBjaGFyIERlc2NBU0NJSVsyNTZdLCBDb3B5cmlnaHRBU0NJSVsyNTZdOworCisgICAgdGltZSgmdGltZXIpOworCisgICAgRGVzY3JpcHRpb24gPSAoY21zTUxVKikgY21zUmVhZFRhZyhoUHJvZmlsZSwgY21zU2lnUHJvZmlsZURlc2NyaXB0aW9uVGFnKTsKKyAgICBDb3B5cmlnaHQgICA9IChjbXNNTFUqKSBjbXNSZWFkVGFnKGhQcm9maWxlLCBjbXNTaWdDb3B5cmlnaHRUYWcpOworCisgICAgRGVzY0FTQ0lJWzBdID0gRGVzY0FTQ0lJWzI1NV0gPSAwOworICAgIENvcHlyaWdodEFTQ0lJWzBdID0gQ29weXJpZ2h0QVNDSUlbMjU1XSA9IDA7CisKKyAgICBpZiAoRGVzY3JpcHRpb24gIT0gTlVMTCkgY21zTUxVZ2V0QVNDSUkoRGVzY3JpcHRpb24sICBjbXNOb0xhbmd1YWdlLCBjbXNOb0NvdW50cnksIERlc2NBU0NJSSwgICAgICAgMjU1KTsKKyAgICBpZiAoQ29weXJpZ2h0ICE9IE5VTEwpICAgY21zTUxVZ2V0QVNDSUkoQ29weXJpZ2h0LCAgICBjbXNOb0xhbmd1YWdlLCBjbXNOb0NvdW50cnksIENvcHlyaWdodEFTQ0lJLCAgMjU1KTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiJSUhUFMtQWRvYmUtMy4wXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIiUlXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIiUlICVzXG4iLCBUaXRsZSk7CisgICAgX2Ntc0lPUHJpbnRmKG0sICIlJSBTb3VyY2U6ICVzXG4iLCBSZW1vdmVDUihEZXNjQVNDSUkpKTsKKyAgICBfY21zSU9QcmludGYobSwgIiUlICAgICAgICAgJXNcbiIsIFJlbW92ZUNSKENvcHlyaWdodEFTQ0lJKSk7CisgICAgX2Ntc0lPUHJpbnRmKG0sICIlJSBDcmVhdGVkOiAlcyIsIGN0aW1lKCZ0aW1lcikpOyAvLyBjdGltZSBhcHBlbmRzIGEgXG4hISEKKyAgICBfY21zSU9QcmludGYobSwgIiUlXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIiUlJSVCZWdpblJlc291cmNlXG4iKTsKKworfQorCisKKy8vIEVtaXRzIFdoaXRlICYgQmxhY2sgcG9pbnQuIFdoaXRlIHBvaW50IGlzIGFsd2F5cyBENTAsIEJsYWNrIHBvaW50IGlzIHRoZSBkZXZpY2UKKy8vIEJsYWNrIHBvaW50IGFkYXB0ZWQgdG8gRDUwLgorCitzdGF0aWMKK3ZvaWQgRW1pdFdoaXRlQmxhY2tENTAoY21zSU9IQU5ETEVSKiBtLCBjbXNDSUVYWVoqIEJsYWNrUG9pbnQpCit7CisKKyAgICBfY21zSU9QcmludGYobSwgIi9CbGFja1BvaW50IFslZiAlZiAlZl1cbiIsIEJsYWNrUG9pbnQgLT4gWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsYWNrUG9pbnQgLT4gWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsYWNrUG9pbnQgLT4gWik7CisKKyAgICBfY21zSU9QcmludGYobSwgIi9XaGl0ZVBvaW50IFslZiAlZiAlZl1cbiIsIGNtc0Q1MF9YWVooKS0+WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Q1MF9YWVooKS0+WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Q1MF9YWVooKS0+Wik7Cit9CisKKworc3RhdGljCit2b2lkIEVtaXRSYW5nZUNoZWNrKGNtc0lPSEFORExFUiogbSkKK3sKKyAgICBfY21zSU9QcmludGYobSwgImR1cCAwLjAgbHQgeyBwb3AgMC4wIH0gaWYgIgorICAgICAgICAgICAgICAgICAgICAiZHVwIDEuMCBndCB7IHBvcCAxLjAgfSBpZiAiKTsKKworfQorCisvLyBEb2VzIHdyaXRlIHRoZSBpbnRlbnQKKworc3RhdGljCit2b2lkIEVtaXRJbnRlbnQoY21zSU9IQU5ETEVSKiBtLCBpbnQgUmVuZGVyaW5nSW50ZW50KQoreworICAgIGNvbnN0IGNoYXIgKmludGVudDsKKworICAgIHN3aXRjaCAoUmVuZGVyaW5nSW50ZW50KSB7CisKKyAgICAgICAgY2FzZSBJTlRFTlRfUEVSQ0VQVFVBTDogICAgICAgICAgICBpbnRlbnQgPSAiUGVyY2VwdHVhbCI7IGJyZWFrOworICAgICAgICBjYXNlIElOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUM6IGludGVudCA9ICJSZWxhdGl2ZUNvbG9yaW1ldHJpYyI7IGJyZWFrOworICAgICAgICBjYXNlIElOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUM6IGludGVudCA9ICJBYnNvbHV0ZUNvbG9yaW1ldHJpYyI7IGJyZWFrOworICAgICAgICBjYXNlIElOVEVOVF9TQVRVUkFUSU9OOiAgICAgICAgICAgIGludGVudCA9ICJTYXR1cmF0aW9uIjsgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDogaW50ZW50ID0gIlVuZGVmaW5lZCI7IGJyZWFrOworICAgIH0KKworICAgIF9jbXNJT1ByaW50ZihtLCAiL1JlbmRlcmluZ0ludGVudCAoJXMpXG4iLCBpbnRlbnQgKTsKK30KKworLy8KKy8vICBDb252ZXJ0IEwqIHRvIFkKKy8vCisvLyAgICAgIFkgPSBZbipbIChMKiArIDE2KSAvIDExNl0gXiAzICAgaWYgKEwqKSA+PSA2IC8gMjkKKy8vICAgICAgICA9IFluKiggTCogLyAxMTYpIC8gNy43ODcgICAgICBpZiAoTCopIDwgNiAvIDI5CisvLworCisvKgorc3RhdGljCit2b2lkIEVtaXRMMlkoY21zSU9IQU5ETEVSKiBtKQoreworICAgIF9jbXNJT1ByaW50ZihtLAorICAgICAgICAgICAgInsgIgorICAgICAgICAgICAgICAgICIxMDAgbXVsIDE2IGFkZCAxMTYgZGl2ICIgICAgICAgICAgICAgICAvLyAoTCAqIDEwMCArIDE2KSAvIDExNgorICAgICAgICAgICAgICAgICAiZHVwIDYgMjkgZGl2IGdlICIgICAgICAgICAgICAgICAgICAgICAvLyA+PSA2IC8gMjkgPworICAgICAgICAgICAgICAgICAieyBkdXAgZHVwIG11bCBtdWwgfSAiICAgICAgICAgICAgICAgICAvLyB5ZXMsIF4zIGFuZCBkb25lCisgICAgICAgICAgICAgICAgICJ7IDQgMjkgZGl2IHN1YiAxMDggODQxIGRpdiBtdWwgfSAiICAgIC8vIG5vLCBzbG9wZSBsaW1pdGluZworICAgICAgICAgICAgImlmZWxzZSB9IGJpbmQgIik7Cit9CisqLworCisKKy8vIExhYiAtPiBYWVosIHNlZSB0aGUgZGlzY3Vzc2lvbiBhYm92ZQorCitzdGF0aWMKK3ZvaWQgRW1pdExhYjJYWVooY21zSU9IQU5ETEVSKiBtKQoreworICAgIF9jbXNJT1ByaW50ZihtLCAiL1JhbmdlQUJDIFsgMCAxIDAgMSAwIDFdXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIi9EZWNvZGVBQkMgW1xuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICJ7MTAwIG11bCAgMTYgYWRkIDExNiBkaXYgfSBiaW5kXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgInsyNTUgbXVsIDEyOCBzdWIgNTAwIGRpdiB9IGJpbmRcbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAiezI1NSBtdWwgMTI4IHN1YiAyMDAgZGl2IH0gYmluZFxuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICJdXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIi9NYXRyaXhBQkMgWyAxIDEgMSAxIDAgMCAwIDAgLTFdXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIi9SYW5nZUxNTiBbIC0wLjIzNiAxLjI1NCAwIDEgLTAuNjM1IDEuNjQwIF1cbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAiL0RlY29kZUxNTiBbXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIntkdXAgNiAyOSBkaXYgZ2Uge2R1cCBkdXAgbXVsIG11bH0gezQgMjkgZGl2IHN1YiAxMDggODQxIGRpdiBtdWx9IGlmZWxzZSAwLjk2NDIwMCBtdWx9IGJpbmRcbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAie2R1cCA2IDI5IGRpdiBnZSB7ZHVwIGR1cCBtdWwgbXVsfSB7NCAyOSBkaXYgc3ViIDEwOCA4NDEgZGl2IG11bH0gaWZlbHNlIH0gYmluZFxuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICJ7ZHVwIDYgMjkgZGl2IGdlIHtkdXAgZHVwIG11bCBtdWx9IHs0IDI5IGRpdiBzdWIgMTA4IDg0MSBkaXYgbXVsfSBpZmVsc2UgMC44MjQ5MDAgbXVsfSBiaW5kXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIl1cbiIpOworfQorCisKKworLy8gT3V0cHV0cyBhIHRhYmxlIG9mIHdvcmRzLiBJdCBkb2VzIHVzZSAxNiBiaXRzCisKK3N0YXRpYwordm9pZCBFbWl0MUdhbW1hKGNtc0lPSEFORExFUiogbSwgY21zVG9uZUN1cnZlKiBUYWJsZSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGdhbW1hOworCisgICAgaWYgKFRhYmxlID09IE5VTEwpIHJldHVybjsgLy8gRXJyb3IKKworICAgIGlmIChUYWJsZSAtPm5FbnRyaWVzIDw9IDApIHJldHVybjsgIC8vIEVtcHR5IHRhYmxlCisKKyAgICAvLyBTdXBwcmVzcyB3aG9sZSBpZiBpZGVudGl0eQorICAgIGlmIChjbXNJc1RvbmVDdXJ2ZUxpbmVhcihUYWJsZSkpIHJldHVybjsKKworICAgIC8vIENoZWNrIGlmIGlzIHJlYWxseSBhbiBleHBvbmVudGlhbC4gSWYgc28sIGVtaXQgImV4cCIKKyAgICBnYW1tYSA9IGNtc0VzdGltYXRlR2FtbWEoVGFibGUsIDAuMDAxKTsKKyAgICAgaWYgKGdhbW1hID4gMCkgeworICAgICAgICAgICAgX2Ntc0lPUHJpbnRmKG0sICJ7ICVnIGV4cCB9IGJpbmQgIiwgZ2FtbWEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICB9CisKKyAgICBfY21zSU9QcmludGYobSwgInsgIik7CisKKyAgICAvLyBCb3VuZHMgY2hlY2sKKyAgICBFbWl0UmFuZ2VDaGVjayhtKTsKKworICAgIC8vIEVtaXQgaW50ZXBvbGF0aW9uIGNvZGUKKworICAgIC8vIFBvc3RTY3JpcHQgY29kZSAgICAgICAgICAgICAgICAgICAgICBTdGFjaworICAgIC8vID09PT09PT09PT09PT09PSAgICAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdgorICAgIF9jbXNJT1ByaW50ZihtLCAiIFsiKTsKKworICAgIGZvciAoaT0wOyBpIDwgVGFibGUtPm5FbnRyaWVzOyBpKyspIHsKKyAgICAgICAgX2Ntc0lPUHJpbnRmKG0sICIlZCAiLCBUYWJsZS0+VGFibGUxNltpXSk7CisgICAgfQorCisgICAgX2Ntc0lPUHJpbnRmKG0sICJdICIpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHYgdGFiCisKKyAgICBfY21zSU9QcmludGYobSwgImR1cCAiKTsgICAgICAgICAgICAgICAgICAgICAgLy8gdiB0YWIgdGFiCisgICAgX2Ntc0lPUHJpbnRmKG0sICJsZW5ndGggMSBzdWIgIik7ICAgICAgICAgICAgIC8vIHYgdGFiIGRvbQorICAgIF9jbXNJT1ByaW50ZihtLCAiMyAtMSByb2xsICIpOyAgICAgICAgICAgICAgICAvLyB0YWIgZG9tIHYKKyAgICBfY21zSU9QcmludGYobSwgIm11bCAiKTsgICAgICAgICAgICAgICAgICAgICAgLy8gdGFiIHZhbDIKKyAgICBfY21zSU9QcmludGYobSwgImR1cCAiKTsgICAgICAgICAgICAgICAgICAgICAgLy8gdGFiIHZhbDIgdmFsMgorICAgIF9jbXNJT1ByaW50ZihtLCAiZHVwICIpOyAgICAgICAgICAgICAgICAgICAgICAvLyB0YWIgdmFsMiB2YWwyIHZhbDIKKyAgICBfY21zSU9QcmludGYobSwgImZsb29yIGN2aSAiKTsgICAgICAgICAgICAgICAgLy8gdGFiIHZhbDIgdmFsMiBjZWxsMAorICAgIF9jbXNJT1ByaW50ZihtLCAiZXhjaCAiKTsgICAgICAgICAgICAgICAgICAgICAvLyB0YWIgdmFsMiBjZWxsMCB2YWwyCisgICAgX2Ntc0lPUHJpbnRmKG0sICJjZWlsaW5nIGN2aSAiKTsgICAgICAgICAgICAgIC8vIHRhYiB2YWwyIGNlbGwwIGNlbGwxCisgICAgX2Ntc0lPUHJpbnRmKG0sICIzIGluZGV4ICIpOyAgICAgICAgICAgICAgICAgIC8vIHRhYiB2YWwyIGNlbGwwIGNlbGwxIHRhYgorICAgIF9jbXNJT1ByaW50ZihtLCAiZXhjaCAiKTsgICAgICAgICAgICAgICAgICAgICAvLyB0YWIgdmFsMiBjZWxsMCB0YWIgY2VsbDEKKyAgICBfY21zSU9QcmludGYobSwgImdldCAiKTsgICAgICAgICAgICAgICAgICAgICAgLy8gdGFiIHZhbDIgY2VsbDAgeTEKKyAgICBfY21zSU9QcmludGYobSwgIjQgLTEgcm9sbCAiKTsgICAgICAgICAgICAgICAgLy8gdmFsMiBjZWxsMCB5MSB0YWIKKyAgICBfY21zSU9QcmludGYobSwgIjMgLTEgcm9sbCAiKTsgICAgICAgICAgICAgICAgLy8gdmFsMiB5MSB0YWIgY2VsbDAKKyAgICBfY21zSU9QcmludGYobSwgImdldCAiKTsgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsMiB5MSB5MAorICAgIF9jbXNJT1ByaW50ZihtLCAiZHVwICIpOyAgICAgICAgICAgICAgICAgICAgICAvLyB2YWwyIHkxIHkwIHkwCisgICAgX2Ntc0lPUHJpbnRmKG0sICIzIDEgcm9sbCAiKTsgICAgICAgICAgICAgICAgIC8vIHZhbDIgeTAgeTEgeTAKKyAgICBfY21zSU9QcmludGYobSwgInN1YiAiKTsgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsMiB5MCAoeTEteTApCisgICAgX2Ntc0lPUHJpbnRmKG0sICIzIC0xIHJvbGwgIik7ICAgICAgICAgICAgICAgIC8vIHkwICh5MS15MCkgdmFsMgorICAgIF9jbXNJT1ByaW50ZihtLCAiZHVwICIpOyAgICAgICAgICAgICAgICAgICAgICAvLyB5MCAoeTEteTApIHZhbDIgdmFsMgorICAgIF9jbXNJT1ByaW50ZihtLCAiZmxvb3IgY3ZpICIpOyAgICAgICAgICAgICAgICAvLyB5MCAoeTEteTApIHZhbDIgZmxvb3IodmFsMikKKyAgICBfY21zSU9QcmludGYobSwgInN1YiAiKTsgICAgICAgICAgICAgICAgICAgICAgLy8geTAgKHkxLXkwKSByZXN0CisgICAgX2Ntc0lPUHJpbnRmKG0sICJtdWwgIik7ICAgICAgICAgICAgICAgICAgICAgIC8vIHkwIHQxCisgICAgX2Ntc0lPUHJpbnRmKG0sICJhZGQgIik7ICAgICAgICAgICAgICAgICAgICAgIC8vIHkKKyAgICBfY21zSU9QcmludGYobSwgIjY1NTM1IGRpdiAiKTsgICAgICAgICAgICAgICAgLy8gcmVzdWx0CisKKyAgICBfY21zSU9QcmludGYobSwgIiB9IGJpbmQgIik7Cit9CisKKworLy8gQ29tcGFyZSBnYW1tYSB0YWJsZQorCitzdGF0aWMKK2Ntc0Jvb2wgR2FtbWFUYWJsZUVxdWFscyhjbXNVSW50MTZOdW1iZXIqIGcxLCBjbXNVSW50MTZOdW1iZXIqIGcyLCBpbnQgbkVudHJpZXMpCit7CisgICAgcmV0dXJuIG1lbWNtcChnMSwgZzIsIG5FbnRyaWVzKiBzaXplb2YoY21zVUludDE2TnVtYmVyKSkgPT0gMDsKK30KKworCisvLyBEb2VzIHdyaXRlIGEgc2V0IG9mIGdhbW1hIGN1cnZlcworCitzdGF0aWMKK3ZvaWQgRW1pdE5HYW1tYShjbXNJT0hBTkRMRVIqIG0sIGludCBuLCBjbXNUb25lQ3VydmUqIGdbXSkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciggaT0wOyBpIDwgbjsgaSsrICkKKyAgICB7CisgICAgICAgIGlmIChnW2ldID09IE5VTEwpIHJldHVybjsgLy8gRXJyb3IKKworICAgICAgICBpZiAoaSA+IDAgJiYgR2FtbWFUYWJsZUVxdWFscyhnW2ktMV0tPlRhYmxlMTYsIGdbaV0tPlRhYmxlMTYsIGdbaV0tPm5FbnRyaWVzKSkgeworCisgICAgICAgICAgICBfY21zSU9QcmludGYobSwgImR1cCAiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEVtaXQxR2FtbWEobSwgZ1tpXSk7CisgICAgICAgIH0KKyAgICB9CisKK30KKworCisKKworCisvLyBGb2xsb3dpbmcgY29kZSBkdW1wcyBhIExVVCBvbnRvIG1lbW9yeSBzdHJlYW0KKworCisvLyBUaGlzIGlzIHRoZSBzYW1wbGVyLiBJbnRlbmRlZCB0byB3b3JrIGluIFNBTVBMRVJfSU5TUEVDVCBtb2RlLAorLy8gdGhhdCBpcywgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIGtub3Qgd2l0aAorLy8KKy8vICAgICAgICAgIEluW10gIFRoZSBncmlkIGxvY2F0aW9uIGNvb3JkaW5hdGVzLCBub3JtYWxpemVkIHRvIDAuLmZmZmYKKy8vICAgICAgICAgIE91dFtdIFRoZSBQaXBlbGluZSB2YWx1ZXMsIG5vcm1hbGl6ZWQgdG8gMC4uZmZmZgorLy8KKy8vICBSZXR1cm5pbmcgYSB2YWx1ZSBvdGhlciB0aGFuIDAgZG9lcyB0ZXJtaW5hdGUgdGhlIHNhbXBsaW5nIHByb2Nlc3MKKy8vCisvLyAgRWFjaCByb3cgY29udGFpbnMgUGlwZWxpbmUgdmFsdWVzIGZvciBhbGwgYnV0IGZpcnN0IGNvbXBvbmVudC4gU28sIEkKKy8vICBkZXRlY3Qgcm93IGNoYW5naW5nIGJ5IGtlZXBpbmcgYSBjb3B5IG9mIGxhc3QgdmFsdWUgb2YgZmlyc3QKKy8vICBjb21wb25lbnQuIC0xIGlzIHVzZWQgdG8gbWFyayBiZWdpbmluZyBvZiB3aG9sZSBibG9jay4KKworc3RhdGljCitpbnQgT3V0cHV0VmFsdWVTYW1wbGVyKHJlZ2lzdGVyIGNvbnN0IGNtc1VJbnQxNk51bWJlciBJbltdLCByZWdpc3RlciBjbXNVSW50MTZOdW1iZXIgT3V0W10sIHJlZ2lzdGVyIHZvaWQqIENhcmdvKQoreworICAgIGNtc1BzU2FtcGxlckNhcmdvKiBzYyA9IChjbXNQc1NhbXBsZXJDYXJnbyopIENhcmdvOworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisKKyAgICBpZiAoc2MgLT4gRml4V2hpdGUpIHsKKworICAgICAgICBpZiAoSW5bMF0gPT0gMHhGRkZGKSB7ICAvLyBPbmx5IGluIEwqID0gMTAwLCBhYiA9IFstOC4uOF0KKworICAgICAgICAgICAgaWYgKChJblsxXSA+PSAweDc4MDAgJiYgSW5bMV0gPD0gMHg4ODAwKSAmJgorICAgICAgICAgICAgICAgIChJblsyXSA+PSAweDc4MDAgJiYgSW5bMl0gPD0gMHg4ODAwKSkgeworCisgICAgICAgICAgICAgICAgY21zVUludDE2TnVtYmVyKiBCbGFjazsKKyAgICAgICAgICAgICAgICBjbXNVSW50MTZOdW1iZXIqIFdoaXRlOworICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBuT3V0cHV0czsKKworICAgICAgICAgICAgICAgIGlmICghX2Ntc0VuZFBvaW50c0J5U3BhY2Uoc2MgLT5Db2xvclNwYWNlLCAmV2hpdGUsICZCbGFjaywgJm5PdXRwdXRzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBuT3V0cHV0czsgaSsrKQorICAgICAgICAgICAgICAgICAgICAgICAgT3V0W2ldID0gV2hpdGVbaV07CisgICAgICAgICAgICB9CisKKworICAgICAgICB9CisgICAgfQorCisKKyAgICAvLyBIYWRsZSB0aGUgcGFyZW50aGVzaXMgb24gcm93cworCisgICAgaWYgKEluWzBdICE9IHNjIC0+Rmlyc3RDb21wb25lbnQpIHsKKworICAgICAgICAgICAgaWYgKHNjIC0+Rmlyc3RDb21wb25lbnQgIT0gLTEpIHsKKworICAgICAgICAgICAgICAgICAgICBfY21zSU9QcmludGYoc2MgLT5tLCBzYyAtPlBvc3RNaW4pOworICAgICAgICAgICAgICAgICAgICBzYyAtPlNlY29uZENvbXBvbmVudCA9IC0xOworICAgICAgICAgICAgICAgICAgICBfY21zSU9QcmludGYoc2MgLT5tLCBzYyAtPlBvc3RNYWopOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBCZWdpbiBibG9jaworICAgICAgICAgICAgX2Ntc1BTQWN0dWFsQ29sdW1uID0gMDsKKworICAgICAgICAgICAgX2Ntc0lPUHJpbnRmKHNjIC0+bSwgc2MgLT5QcmVNYWopOworICAgICAgICAgICAgc2MgLT5GaXJzdENvbXBvbmVudCA9IEluWzBdOworICAgIH0KKworCisgICAgICBpZiAoSW5bMV0gIT0gc2MgLT5TZWNvbmRDb21wb25lbnQpIHsKKworICAgICAgICAgICAgaWYgKHNjIC0+U2Vjb25kQ29tcG9uZW50ICE9IC0xKSB7CisKKyAgICAgICAgICAgICAgICAgICAgX2Ntc0lPUHJpbnRmKHNjIC0+bSwgc2MgLT5Qb3N0TWluKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgX2Ntc0lPUHJpbnRmKHNjIC0+bSwgc2MgLT5QcmVNaW4pOworICAgICAgICAgICAgc2MgLT5TZWNvbmRDb21wb25lbnQgPSBJblsxXTsKKyAgICB9CisKKyAgICAgIC8vIER1bXAgdGFibGUuCisKKyAgICAgIGZvciAoaT0wOyBpIDwgc2MgLT4gUGlwZWxpbmUgLT5QYXJhbXMtPm5PdXRwdXRzOyBpKyspIHsKKworICAgICAgICAgIGNtc1VJbnQxNk51bWJlciB3V29yZE91dCA9IE91dFtpXTsKKyAgICAgICAgICBjbXNVSW50OE51bWJlciB3Qnl0ZU91dDsgICAgICAgICAgIC8vIFZhbHVlIGFzIGJ5dGUKKworCisgICAgICAgICAgLy8gV2UgYWx3YXlzIGRlYWwgd2l0aCBMYWI0CisKKyAgICAgICAgICB3Qnl0ZU91dCA9IFdvcmQyQnl0ZSh3V29yZE91dCk7CisgICAgICAgICAgV3JpdGVCeXRlKHNjIC0+IG0sIHdCeXRlT3V0KTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIDE7Cit9CisKKy8vIFdyaXRlcyBhIFBpcGVsaW5lIG9uIG1lbXN0cmVhbS4gQ291bGQgYmUgOCBvciAxNiBiaXRzIGJhc2VkCisKK3N0YXRpYwordm9pZCBXcml0ZUNMVVQoY21zSU9IQU5ETEVSKiBtLCBjbXNTdGFnZSogbXBlLCBjb25zdCBjaGFyKiBQcmVNYWosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBQb3N0TWFqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogUHJlTWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogUG9zdE1pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBGaXhXaGl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgQ29sb3JTcGFjZSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNQc1NhbXBsZXJDYXJnbyBzYzsKKworICAgIHNjLkZpcnN0Q29tcG9uZW50ID0gLTE7CisgICAgc2MuU2Vjb25kQ29tcG9uZW50ID0gLTE7CisgICAgc2MuUGlwZWxpbmUgPSAoX2Ntc1N0YWdlQ0x1dERhdGEgKikgbXBlIC0+RGF0YTsKKyAgICBzYy5tICAgPSBtOworICAgIHNjLlByZU1haiA9IFByZU1hajsKKyAgICBzYy5Qb3N0TWFqPSBQb3N0TWFqOworCisgICAgc2MuUHJlTWluICAgPSBQcmVNaW47CisgICAgc2MuUG9zdE1pbiAgPSBQb3N0TWluOworICAgIHNjLkZpeFdoaXRlID0gRml4V2hpdGU7CisgICAgc2MuQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U7CisKKyAgICBfY21zSU9QcmludGYobSwgIlsiKTsKKworICAgIGZvciAoaT0wOyBpIDwgc2MuUGlwZWxpbmUtPlBhcmFtcy0+bklucHV0czsgaSsrKQorICAgICAgICBfY21zSU9QcmludGYobSwgIiAlZCAiLCBzYy5QaXBlbGluZS0+UGFyYW1zLT5uU2FtcGxlc1tpXSk7CisKKyAgICBfY21zSU9QcmludGYobSwgIiBbXG4iKTsKKworICAgIGNtc1N0YWdlU2FtcGxlQ0x1dDE2Yml0KG1wZSwgT3V0cHV0VmFsdWVTYW1wbGVyLCAodm9pZCopICZzYywgU0FNUExFUl9JTlNQRUNUKTsKKworICAgIF9jbXNJT1ByaW50ZihtLCBQb3N0TWluKTsKKyAgICBfY21zSU9QcmludGYobSwgUG9zdE1haik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICJdICIpOworCit9CisKKworLy8gRHVtcHMgQ0lFQmFzZWRBIENvbG9yIFNwYWNlIEFycmF5CisKK3N0YXRpYworaW50IEVtaXRDSUVCYXNlZEEoY21zSU9IQU5ETEVSKiBtLCBjbXNUb25lQ3VydmUqIEN1cnZlLCBjbXNDSUVYWVoqIEJsYWNrUG9pbnQpCit7CisKKyAgICBfY21zSU9QcmludGYobSwgIlsgL0NJRUJhc2VkQVxuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICIgIDw8XG4iKTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiL0RlY29kZUEgIik7CisKKyAgICBFbWl0MUdhbW1hKG0sIEN1cnZlKTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiIFxuIik7CisKKyAgICBfY21zSU9QcmludGYobSwgIi9NYXRyaXhBIFsgMC45NjQyIDEuMDAwMCAwLjgyNDkgXVxuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICIvUmFuZ2VMTU4gWyAwLjAgMC45NjQyIDAuMCAxLjAwMDAgMC4wIDAuODI0OSBdXG4iKTsKKworICAgIEVtaXRXaGl0ZUJsYWNrRDUwKG0sIEJsYWNrUG9pbnQpOworICAgIEVtaXRJbnRlbnQobSwgSU5URU5UX1BFUkNFUFRVQUwpOworCisgICAgX2Ntc0lPUHJpbnRmKG0sICI+PlxuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICJdXG4iKTsKKworICAgIHJldHVybiAxOworfQorCisKKy8vIER1bXBzIENJRUJhc2VkQUJDIENvbG9yIFNwYWNlIEFycmF5CisKK3N0YXRpYworaW50IEVtaXRDSUVCYXNlZEFCQyhjbXNJT0hBTkRMRVIqIG0sIGNtc0Zsb2F0NjROdW1iZXIqIE1hdHJpeCwgY21zVG9uZUN1cnZlKiogQ3VydmVTZXQsIGNtc0NJRVhZWiogQmxhY2tQb2ludCkKK3sKKyAgICBpbnQgaTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiWyAvQ0lFQmFzZWRBQkNcbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAiPDxcbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAiL0RlY29kZUFCQyBbICIpOworCisgICAgRW1pdE5HYW1tYShtLCAzLCBDdXJ2ZVNldCk7CisKKyAgICBfY21zSU9QcmludGYobSwgIl1cbiIpOworCisgICAgX2Ntc0lPUHJpbnRmKG0sICIvTWF0cml4QUJDIFsgIiApOworCisgICAgZm9yKCBpPTA7IGkgPCAzOyBpKysgKSB7CisKKyAgICAgICAgX2Ntc0lPUHJpbnRmKG0sICIlLjZmICUuNmYgJS42ZiAiLCBNYXRyaXhbaSArIDMqMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0cml4W2kgKyAzKjFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdHJpeFtpICsgMyoyXSk7CisgICAgfQorCisKKyAgICBfY21zSU9QcmludGYobSwgIl1cbiIpOworCisgICAgX2Ntc0lPUHJpbnRmKG0sICIvUmFuZ2VMTU4gWyAwLjAgMC45NjQyIDAuMCAxLjAwMDAgMC4wIDAuODI0OSBdXG4iKTsKKworICAgIEVtaXRXaGl0ZUJsYWNrRDUwKG0sIEJsYWNrUG9pbnQpOworICAgIEVtaXRJbnRlbnQobSwgSU5URU5UX1BFUkNFUFRVQUwpOworCisgICAgX2Ntc0lPUHJpbnRmKG0sICI+PlxuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICJdXG4iKTsKKworCisgICAgcmV0dXJuIDE7Cit9CisKKworc3RhdGljCitpbnQgRW1pdENJRUJhc2VkREVGKGNtc0lPSEFORExFUiogbSwgY21zUGlwZWxpbmUqIFBpcGVsaW5lLCBpbnQgSW50ZW50LCBjbXNDSUVYWVoqIEJsYWNrUG9pbnQpCit7CisgICAgY29uc3QgY2hhciogUHJlTWFqOworICAgIGNvbnN0IGNoYXIqIFBvc3RNYWo7CisgICAgY29uc3QgY2hhciogUHJlTWluLCAqUG9zdE1pbjsKKyAgICBjbXNTdGFnZSogbXBlOworCisgICAgbXBlID0gUGlwZWxpbmUgLT5FbGVtZW50czsKKworICAgIHN3aXRjaCAoY21zU3RhZ2VJbnB1dENoYW5uZWxzKG1wZSkpIHsKKyAgICBjYXNlIDM6CisKKyAgICAgICAgICAgIF9jbXNJT1ByaW50ZihtLCAiWyAvQ0lFQmFzZWRERUZcbiIpOworICAgICAgICAgICAgUHJlTWFqID0iPCI7CisgICAgICAgICAgICBQb3N0TWFqPSAiPlxuIjsKKyAgICAgICAgICAgIFByZU1pbiA9IFBvc3RNaW4gPSAiIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgICAgIF9jbXNJT1ByaW50ZihtLCAiWyAvQ0lFQmFzZWRERUZHXG4iKTsKKyAgICAgICAgICAgIFByZU1haiA9ICJbIjsKKyAgICAgICAgICAgIFBvc3RNYWogPSAiXVxuIjsKKyAgICAgICAgICAgIFByZU1pbiA9ICI8IjsKKyAgICAgICAgICAgIFBvc3RNaW4gPSAiPlxuIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgIH0KKworICAgIF9jbXNJT1ByaW50ZihtLCAiPDxcbiIpOworCisgICAgaWYgKGNtc1N0YWdlVHlwZShtcGUpID09IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUpIHsKKworICAgICAgICBfY21zSU9QcmludGYobSwgIi9EZWNvZGVERUYgWyAiKTsKKyAgICAgICAgRW1pdE5HYW1tYShtLCBjbXNTdGFnZU91dHB1dENoYW5uZWxzKG1wZSksIF9jbXNTdGFnZUdldFB0clRvQ3VydmVTZXQobXBlKSk7CisgICAgICAgIF9jbXNJT1ByaW50ZihtLCAiXVxuIik7CisKKyAgICAgICAgbXBlID0gbXBlIC0+TmV4dDsKKyAgICB9CisKKyAgICBpZiAoY21zU3RhZ2VUeXBlKG1wZSkgPT0gY21zU2lnQ0x1dEVsZW1UeXBlKSB7CisKKyAgICAgICAgICAgIF9jbXNJT1ByaW50ZihtLCAiL1RhYmxlICIpOworICAgICAgICAgICAgV3JpdGVDTFVUKG0sIG1wZSwgUHJlTWFqLCBQb3N0TWFqLCBQcmVNaW4sIFBvc3RNaW4sIEZBTFNFLCAoY21zQ29sb3JTcGFjZVNpZ25hdHVyZSkgMCk7CisgICAgICAgICAgICBfY21zSU9QcmludGYobSwgIl1cbiIpOworICAgIH0KKworICAgIEVtaXRMYWIyWFlaKG0pOworICAgIEVtaXRXaGl0ZUJsYWNrRDUwKG0sIEJsYWNrUG9pbnQpOworICAgIEVtaXRJbnRlbnQobSwgSW50ZW50KTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiICAgPj5cbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAiXVxuIik7CisKKyAgICByZXR1cm4gMTsKK30KKworLy8gR2VuZXJhdGVzIGEgY3VydmUgZnJvbSBhIGdyYXkgcHJvZmlsZQorCitzdGF0aWMKKyAgICBjbXNUb25lQ3VydmUqIEV4dHJhY3RHcmF5MlkoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0hQUk9GSUxFIGhQcm9maWxlLCBpbnQgSW50ZW50KQoreworICAgIGNtc1RvbmVDdXJ2ZSogT3V0ID0gY21zQnVpbGRUYWJ1bGF0ZWRUb25lQ3VydmUxNihDb250ZXh0SUQsIDI1NiwgTlVMTCk7CisgICAgY21zSFBST0ZJTEUgaFhZWiAgPSBjbXNDcmVhdGVYWVpQcm9maWxlKCk7CisgICAgY21zSFRSQU5TRk9STSB4Zm9ybSA9IGNtc0NyZWF0ZVRyYW5zZm9ybVRIUihDb250ZXh0SUQsIGhQcm9maWxlLCBUWVBFX0dSQVlfOCwgaFhZWiwgVFlQRV9YWVpfREJMLCBJbnRlbnQsIGNtc0ZMQUdTX05PT1BUSU1JWkUpOworICAgIGludCBpOworCisgICAgaWYgKE91dCAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoaT0wOyBpIDwgMjU2OyBpKyspIHsKKworICAgICAgICAgICAgY21zVUludDhOdW1iZXIgR3JheSA9IChjbXNVSW50OE51bWJlcikgaTsKKyAgICAgICAgICAgIGNtc0NJRVhZWiBYWVo7CisKKyAgICAgICAgICAgIGNtc0RvVHJhbnNmb3JtKHhmb3JtLCAmR3JheSwgJlhZWiwgMSk7CisKKyAgICAgICAgICAgIE91dCAtPlRhYmxlMTZbaV0gPV9jbXNRdWlja1NhdHVyYXRlV29yZChYWVouWSAqIDY1NTM1LjApOworICAgICAgICB9CisgICAgfQorCisgICAgY21zRGVsZXRlVHJhbnNmb3JtKHhmb3JtKTsKKyAgICBjbXNDbG9zZVByb2ZpbGUoaFhZWik7CisgICAgcmV0dXJuIE91dDsKK30KKworCisKKy8vIEJlY2F1c2UgUG9zdFNjcmlwdCBoYXMgb25seSA4IGJpdHMgaW4gL1RhYmxlLCB3ZSBzaG91bGQgdXNlCisvLyBhIG1vcmUgcGVyY2VwdHVhbGx5IHVuaWZvcm0gc3BhY2UuLi4gSSBkbyBjaG9vc2UgTGFiLgorCitzdGF0aWMKK2ludCBXcml0ZUlucHV0TFVUKGNtc0lPSEFORExFUiogbSwgY21zSFBST0ZJTEUgaFByb2ZpbGUsIGludCBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKQoreworICAgIGNtc0hQUk9GSUxFIGhMYWI7CisgICAgY21zSFRSQU5TRk9STSB4Zm9ybTsKKyAgICBjbXNVSW50MzJOdW1iZXIgbkNoYW5uZWxzOworICAgIGNtc1VJbnQzMk51bWJlciBJbnB1dEZvcm1hdDsKKyAgICBpbnQgcmM7CisgICAgY21zSFBST0ZJTEUgUHJvZmlsZXNbMl07CisgICAgY21zQ0lFWFlaIEJsYWNrUG9pbnRBZGFwdGVkVG9ENTA7CisKKyAgICAvLyBEb2VzIGNyZWF0ZSBhIGRldmljZS1saW5rIGJhc2VkIHRyYW5zZm9ybS4KKyAgICAvLyBUaGUgRGV2aWNlTGluayBpcyBuZXh0IGR1bXBlZCBhcyB3b3JraW5nIENTQS4KKworICAgIElucHV0Rm9ybWF0ID0gY21zRm9ybWF0dGVyRm9yQ29sb3JzcGFjZU9mUHJvZmlsZShoUHJvZmlsZSwgMiwgRkFMU0UpOworICAgIG5DaGFubmVscyAgID0gVF9DSEFOTkVMUyhJbnB1dEZvcm1hdCk7CisKKworICAgIGNtc0RldGVjdEJsYWNrUG9pbnQoJkJsYWNrUG9pbnRBZGFwdGVkVG9ENTAsIGhQcm9maWxlLCBJbnRlbnQsIDApOworCisgICAgLy8gQWRqdXN0IG91dHB1dCB0byBMYWI0CisgICAgaExhYiA9IGNtc0NyZWF0ZUxhYjRQcm9maWxlVEhSKG0gLT5Db250ZXh0SUQsIE5VTEwpOworCisgICAgUHJvZmlsZXNbMF0gPSBoUHJvZmlsZTsKKyAgICBQcm9maWxlc1sxXSA9IGhMYWI7CisKKyAgICB4Zm9ybSA9IGNtc0NyZWF0ZU11bHRpcHJvZmlsZVRyYW5zZm9ybShQcm9maWxlcywgMiwgIElucHV0Rm9ybWF0LCBUWVBFX0xhYl9EQkwsIEludGVudCwgMCk7CisgICAgY21zQ2xvc2VQcm9maWxlKGhMYWIpOworCisgICAgaWYgKHhmb3JtID09IE5VTEwpIHsKKworICAgICAgICBjbXNTaWduYWxFcnJvcihtIC0+Q29udGV4dElELCBjbXNFUlJPUl9DT0xPUlNQQUNFX0NIRUNLLCAiQ2Fubm90IGNyZWF0ZSB0cmFuc2Zvcm0gUHJvZmlsZSAtPiBMYWIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gT25seSAxLCAzIGFuZCA0IGNoYW5uZWxzIGFyZSBhbGxvd2VkCisKKyAgICBzd2l0Y2ggKG5DaGFubmVscykgeworCisgICAgY2FzZSAxOiB7CisgICAgICAgICAgICBjbXNUb25lQ3VydmUqIEdyYXkyWSA9IEV4dHJhY3RHcmF5MlkobSAtPkNvbnRleHRJRCwgaFByb2ZpbGUsIEludGVudCk7CisgICAgICAgICAgICBFbWl0Q0lFQmFzZWRBKG0sIEdyYXkyWSwgJkJsYWNrUG9pbnRBZGFwdGVkVG9ENTApOworICAgICAgICAgICAgY21zRnJlZVRvbmVDdXJ2ZShHcmF5MlkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDM6CisgICAgY2FzZSA0OiB7CisgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0RnJtID0gVFlQRV9MYWJfMTY7CisgICAgICAgICAgICBjbXNQaXBlbGluZSogRGV2aWNlTGluazsKKyAgICAgICAgICAgIF9jbXNUUkFOU0ZPUk0qIHYgPSAoX2Ntc1RSQU5TRk9STSopIHhmb3JtOworCisgICAgICAgICAgICBEZXZpY2VMaW5rID0gY21zUGlwZWxpbmVEdXAodiAtPkx1dCk7CisgICAgICAgICAgICBpZiAoRGV2aWNlTGluayA9PSBOVUxMKSByZXR1cm4gMDsKKworICAgICAgICAgICAgZHdGbGFncyB8PSBjbXNGTEFHU19GT1JDRV9DTFVUOworICAgICAgICAgICAgX2Ntc09wdGltaXplUGlwZWxpbmUobS0+Q29udGV4dElELCAmRGV2aWNlTGluaywgSW50ZW50LCAmSW5wdXRGb3JtYXQsICZPdXRGcm0sICZkd0ZsYWdzKTsKKworICAgICAgICAgICAgcmMgPSBFbWl0Q0lFQmFzZWRERUYobSwgRGV2aWNlTGluaywgSW50ZW50LCAmQmxhY2tQb2ludEFkYXB0ZWRUb0Q1MCk7CisgICAgICAgICAgICBjbXNQaXBlbGluZUZyZWUoRGV2aWNlTGluayk7CisgICAgICAgICAgICBpZiAocmMgPT0gMCkgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisKKyAgICAgICAgY21zU2lnbmFsRXJyb3IobSAtPkNvbnRleHRJRCwgY21zRVJST1JfQ09MT1JTUEFDRV9DSEVDSywgIk9ubHkgMywgNCBjaGFubmVscyBzdXBwb3J0ZWQgZm9yIENTQS4gVGhpcyBwcm9maWxlIGhhcyAlZCBjaGFubmVscy4iLCBuQ2hhbm5lbHMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKworICAgIGNtc0RlbGV0ZVRyYW5zZm9ybSh4Zm9ybSk7CisKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljCitjbXNGbG9hdDY0TnVtYmVyKiBHZXRQdHJUb01hdHJpeChjb25zdCBjbXNTdGFnZSogbXBlKQoreworICAgIF9jbXNTdGFnZU1hdHJpeERhdGEqIERhdGEgPSAoX2Ntc1N0YWdlTWF0cml4RGF0YSopIG1wZSAtPkRhdGE7CisKKyAgICByZXR1cm4gRGF0YSAtPiBEb3VibGU7Cit9CisKKworLy8gRG9lcyBjcmVhdGUgQ1NBIGJhc2VkIG9uIG1hdHJpeC1zaGFwZXIuIEFsbG93ZWQgdHlwZXMgYXJlIGdyYXkgYW5kIFJHQiBiYXNlZAorCitzdGF0aWMKK2ludCBXcml0ZUlucHV0TWF0cml4U2hhcGVyKGNtc0lPSEFORExFUiogbSwgY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1N0YWdlKiBNYXRyaXgsIGNtc1N0YWdlKiBTaGFwZXIpCit7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvclNwYWNlOworICAgIGludCByYzsKKyAgICBjbXNDSUVYWVogQmxhY2tQb2ludEFkYXB0ZWRUb0Q1MDsKKworICAgIENvbG9yU3BhY2UgPSBjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlKTsKKworICAgIGNtc0RldGVjdEJsYWNrUG9pbnQoJkJsYWNrUG9pbnRBZGFwdGVkVG9ENTAsIGhQcm9maWxlLCBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDLCAwKTsKKworICAgIGlmIChDb2xvclNwYWNlID09IGNtc1NpZ0dyYXlEYXRhKSB7CisKKyAgICAgICAgY21zVG9uZUN1cnZlKiogU2hhcGVyQ3VydmUgPSBfY21zU3RhZ2VHZXRQdHJUb0N1cnZlU2V0KFNoYXBlcik7CisgICAgICAgIHJjID0gRW1pdENJRUJhc2VkQShtLCBTaGFwZXJDdXJ2ZVswXSwgJkJsYWNrUG9pbnRBZGFwdGVkVG9ENTApOworCisgICAgfQorICAgIGVsc2UKKyAgICAgICAgaWYgKENvbG9yU3BhY2UgPT0gY21zU2lnUmdiRGF0YSkgeworCisgICAgICAgICAgICBjbXNNQVQzIE1hdDsKKyAgICAgICAgICAgIGludCBpLCBqOworCisgICAgICAgICAgICBtZW1tb3ZlKCZNYXQsIEdldFB0clRvTWF0cml4KE1hdHJpeCksIHNpemVvZihNYXQpKTsKKworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCAzOyBpKyspCisgICAgICAgICAgICAgICAgZm9yIChqPTA7IGogPCAzOyBqKyspCisgICAgICAgICAgICAgICAgICAgIE1hdC52W2ldLm5bal0gKj0gTUFYX0VOQ09ERUFCTEVfWFlaOworCisgICAgICAgICAgICByYyA9IEVtaXRDSUVCYXNlZEFCQyhtLCAgKGNtc0Zsb2F0NjROdW1iZXIgKikgJk1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Ntc1N0YWdlR2V0UHRyVG9DdXJ2ZVNldChTaGFwZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkJsYWNrUG9pbnRBZGFwdGVkVG9ENTApOworICAgICAgICB9CisgICAgICAgIGVsc2UgIHsKKworICAgICAgICAgICAgY21zU2lnbmFsRXJyb3IobSAtPkNvbnRleHRJRCwgY21zRVJST1JfQ09MT1JTUEFDRV9DSEVDSywgIlByb2ZpbGUgaXMgbm90IHN1aXRhYmxlIGZvciBDU0EuIFVuc3VwcG9ydGVkIGNvbG9yc3BhY2UuIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByYzsKK30KKworCisKKy8vIENyZWF0ZXMgYSBQb3N0U2NyaXB0IGNvbG9yIGxpc3QgZnJvbSBhIG5hbWVkIHByb2ZpbGUgZGF0YS4KKy8vIFRoaXMgaXMgYSBIUCBleHRlbnNpb24sIGFuZCBpdCB3b3JrcyBpbiBMYWIgaW5zdGVhZCBvZiBYWVoKKworc3RhdGljCitpbnQgV3JpdGVOYW1lZENvbG9yQ1NBKGNtc0lPSEFORExFUiogbSwgY21zSFBST0ZJTEUgaE5hbWVkQ29sb3IsIGludCBJbnRlbnQpCit7CisgICAgY21zSFRSQU5TRk9STSB4Zm9ybTsKKyAgICBjbXNIUFJPRklMRSAgIGhMYWI7CisgICAgaW50IGksIG5Db2xvcnM7CisgICAgY2hhciBDb2xvck5hbWVbMzJdOworICAgIGNtc05BTUVEQ09MT1JMSVNUKiBOYW1lZENvbG9yTGlzdDsKKworICAgIGhMYWIgID0gY21zQ3JlYXRlTGFiNFByb2ZpbGVUSFIobSAtPkNvbnRleHRJRCwgTlVMTCk7CisgICAgeGZvcm0gPSBjbXNDcmVhdGVUcmFuc2Zvcm0oaE5hbWVkQ29sb3IsIFRZUEVfTkFNRURfQ09MT1JfSU5ERVgsIGhMYWIsIFRZUEVfTGFiX0RCTCwgSW50ZW50LCAwKTsKKyAgICBpZiAoeGZvcm0gPT0gTlVMTCkgcmV0dXJuIDA7CisKKyAgICBOYW1lZENvbG9yTGlzdCA9IGNtc0dldE5hbWVkQ29sb3JMaXN0KHhmb3JtKTsKKyAgICBpZiAoTmFtZWRDb2xvckxpc3QgPT0gTlVMTCkgcmV0dXJuIDA7CisKKyAgICBfY21zSU9QcmludGYobSwgIjw8XG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIihjb2xvcmxpc3Rjb21tZW50KSAoJXMpXG4iLCAiTmFtZWQgY29sb3IgQ1NBIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICIoUHJlZml4KSBbIChQYW50b25lICkgKFBBTlRPTkUgKSBdXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIihTdWZmaXgpIFsgKCBDVikgKCBDVkMpICggQykgXVxuIik7CisKKyAgICBuQ29sb3JzICAgPSBjbXNOYW1lZENvbG9yQ291bnQoTmFtZWRDb2xvckxpc3QpOworCisKKyAgICBmb3IgKGk9MDsgaSA8IG5Db2xvcnM7IGkrKykgeworCisgICAgICAgIGNtc1VJbnQxNk51bWJlciBJblsxXTsKKyAgICAgICAgY21zQ0lFTGFiIExhYjsKKworICAgICAgICBJblswXSA9IChjbXNVSW50MTZOdW1iZXIpIGk7CisKKyAgICAgICAgaWYgKCFjbXNOYW1lZENvbG9ySW5mbyhOYW1lZENvbG9yTGlzdCwgaSwgQ29sb3JOYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBjbXNEb1RyYW5zZm9ybSh4Zm9ybSwgSW4sICZMYWIsIDEpOworICAgICAgICBfY21zSU9QcmludGYobSwgIiAgKCVzKSBbICUuM2YgJS4zZiAlLjNmIF1cbiIsIENvbG9yTmFtZSwgTGFiLkwsIExhYi5hLCBMYWIuYik7CisgICAgfQorCisKKworICAgIF9jbXNJT1ByaW50ZihtLCAiPj5cbiIpOworCisgICAgY21zRGVsZXRlVHJhbnNmb3JtKHhmb3JtKTsKKyAgICBjbXNDbG9zZVByb2ZpbGUoaExhYik7CisgICAgcmV0dXJuIDE7Cit9CisKKworLy8gRG9lcyBjcmVhdGUgYSBDb2xvciBTcGFjZSBBcnJheSBvbiBYWVogY29sb3JzcGFjZSBmb3IgUG9zdFNjcmlwdCB1c2FnZQorc3RhdGljCitjbXNVSW50MzJOdW1iZXIgR2VuZXJhdGVDU0EoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgaFByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIEludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNJT0hBTkRMRVIqIG1lbSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgZHdCeXRlc1VzZWQ7CisgICAgY21zUGlwZWxpbmUqIGx1dCA9IE5VTEw7CisgICAgY21zU3RhZ2UqIE1hdHJpeCwgKlNoYXBlcjsKKworCisgICAgLy8gSXMgYSBuYW1lZCBjb2xvciBwcm9maWxlPworICAgIGlmIChjbXNHZXREZXZpY2VDbGFzcyhoUHJvZmlsZSkgPT0gY21zU2lnTmFtZWRDb2xvckNsYXNzKSB7CisKKyAgICAgICAgaWYgKCFXcml0ZU5hbWVkQ29sb3JDU0EobWVtLCBoUHJvZmlsZSwgSW50ZW50KSkgZ290byBFcnJvcjsKKyAgICB9CisgICAgZWxzZSB7CisKKworICAgICAgICAvLyBBbnkgcHJvZmlsZSBjbGFzcyBhcmUgYWxsb3dlZCAoaW5jbHVkaW5nIGRldmljZWxpbmspLCBidXQKKyAgICAgICAgLy8gb3V0cHV0IChQQ1MpIGNvbG9yc3BhY2UgbXVzdCBiZSBYWVogb3IgTGFiCisgICAgICAgIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgQ29sb3JTcGFjZSA9IGNtc0dldFBDUyhoUHJvZmlsZSk7CisKKyAgICAgICAgaWYgKENvbG9yU3BhY2UgIT0gY21zU2lnWFlaRGF0YSAmJgorICAgICAgICAgICAgQ29sb3JTcGFjZSAhPSBjbXNTaWdMYWJEYXRhKSB7CisKKyAgICAgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX0NPTE9SU1BBQ0VfQ0hFQ0ssICJJbnZhbGlkIG91dHB1dCBjb2xvciBzcGFjZSIpOworICAgICAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKworCisgICAgICAgIC8vIFJlYWQgdGhlIGx1dCB3aXRoIGFsbCBuZWNlc3NhcnkgY29udmVyc2lvbiBzdGFnZXMKKyAgICAgICAgbHV0ID0gX2Ntc1JlYWRJbnB1dExVVChoUHJvZmlsZSwgSW50ZW50KTsKKyAgICAgICAgaWYgKGx1dCA9PSBOVUxMKSBnb3RvIEVycm9yOworCisKKyAgICAgICAgLy8gVG9uZSBjdXJ2ZXMgKyBtYXRyaXggY2FuIGJlIGltcGxlbWVudGVkIHdpdGhvdXQgYW55IExVVAorICAgICAgICBpZiAoY21zUGlwZWxpbmVDaGVja0FuZFJldHJlaXZlU3RhZ2VzKGx1dCwgMiwgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgY21zU2lnTWF0cml4RWxlbVR5cGUsICZTaGFwZXIsICZNYXRyaXgpKSB7CisKKyAgICAgICAgICAgIGlmICghV3JpdGVJbnB1dE1hdHJpeFNoYXBlcihtZW0sIGhQcm9maWxlLCBNYXRyaXgsIFNoYXBlcikpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgLy8gV2UgbmVlZCBhIExVVCBmb3IgdGhlIHJlc3QKKyAgICAgICAgICAgaWYgKCFXcml0ZUlucHV0TFVUKG1lbSwgaFByb2ZpbGUsIEludGVudCwgZHdGbGFncykpIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8vIERvbmUsIGtlZXAgbWVtb3J5IHVzYWdlCisgICAgZHdCeXRlc1VzZWQgPSBtZW0gLT5Vc2VkU3BhY2U7CisKKyAgICAvLyBHZXQgcmlkIG9mIExVVAorICAgIGlmIChsdXQgIT0gTlVMTCkgY21zUGlwZWxpbmVGcmVlKGx1dCk7CisKKyAgICAvLyBGaW5hbGx5LCByZXR1cm4gdXNlZCBieXRlIGNvdW50CisgICAgcmV0dXJuIGR3Qnl0ZXNVc2VkOworCitFcnJvcjoKKyAgICBpZiAobHV0ICE9IE5VTEwpIGNtc1BpcGVsaW5lRnJlZShsdXQpOworICAgIHJldHVybiAwOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29sb3IgUmVuZGVyaW5nIERpY3Rpb25hcnkgKENSRCkKKworCisKKy8qCisKKyAgQmxhY2sgcG9pbnQgY29tcGVuc2F0aW9uIHBsdXMgY2hyb21hdGljIGFkYXB0YXRpb246CisKKyAgU3RlcCAxIC0gQ2hyb21hdGljIGFkYXB0YXRpb24KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAgIFdQb3V0CisgICAgWCA9IC0tLS0tLS0gUFFSCisgICAgICAgICAgV3BpbgorCisgIFN0ZXAgMiAtIEJsYWNrIHBvaW50IGNvbXBlbnNhdGlvbgorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAgIChXUG91dCAtIEJQb3V0KSpYIC0gV1BvdXQqKEJQaW4gLSBCUG91dCkKKyAgICBvdXQgPSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgIFdQb3V0IC0gQlBpbgorCisKKyAgQWxnb3JpdGhtIGRpc2N1c3Npb24KKyAgPT09PT09PT09PT09PT09PT09PT0KKworICBUcmFuc2Zvcm1QUVIoV1BpbiwgQlBpbiwgV1BvdXQsIEJQb3V0LCBQUVIpCisKKyAgV3BpbixldGM9IHsgWHdzIFl3cyBad3MgUHdzIFF3cyBSd3MgfQorCisKKyAgQWxnb3JpdGhtICAgICAgICAgICAgIFN0YWNrIDAuLi5uCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAgICAgICAgICBQUVIgQlBvdXQgV1BvdXQgQlBpbiBXUGluCisgIDQgaW5kZXggMyBnZXQgICAgICAgICBXUGluIFBRUiBCUG91dCBXUG91dCBCUGluIFdQaW4KKyAgZGl2ICAgICAgICAgICAgICAgICAgIChQUVIvV1BpbikgQlBvdXQgV1BvdXQgQlBpbiBXUGluCisgIDIgaW5kZXggMyBnZXQgICAgICAgICBXUG91dCAoUFFSL1dQaW4pIEJQb3V0IFdQb3V0IEJQaW4gV1BpbgorICBtdWx0ICAgICAgICAgICAgICAgICAgV1BvdXQqKFBRUi9XUGluKSBCUG91dCBXUG91dCBCUGluIFdQaW4KKworICAyIGluZGV4IDMgZ2V0ICAgICAgICAgV1BvdXQgV1BvdXQqKFBRUi9XUGluKSBCUG91dCBXUG91dCBCUGluIFdQaW4KKyAgMiBpbmRleCAzIGdldCAgICAgICAgIEJQb3V0IFdQb3V0IFdQb3V0KihQUVIvV1BpbikgQlBvdXQgV1BvdXQgQlBpbiBXUGluCisgIHN1YiAgICAgICAgICAgICAgICAgICAoV1BvdXQtQlBvdXQpIFdQb3V0KihQUVIvV1BpbikgQlBvdXQgV1BvdXQgQlBpbiBXUGluCisgIG11bHQgICAgICAgICAgICAgICAgICAoV1BvdXQtQlBvdXQpKiBXUG91dCooUFFSL1dQaW4pIEJQb3V0IFdQb3V0IEJQaW4gV1BpbgorCisgIDIgaW5kZXggMyBnZXQgICAgICAgICBXUG91dCAoQlBvdXQtV1BvdXQpKiBXUG91dCooUFFSL1dQaW4pIEJQb3V0IFdQb3V0IEJQaW4gV1BpbgorICA0IGluZGV4IDMgZ2V0ICAgICAgICAgQlBpbiBXUG91dCAoQlBvdXQtV1BvdXQpKiBXUG91dCooUFFSL1dQaW4pIEJQb3V0IFdQb3V0IEJQaW4gV1BpbgorICAzIGluZGV4IDMgZ2V0ICAgICAgICAgQlBvdXQgQlBpbiBXUG91dCAoQlBvdXQtV1BvdXQpKiBXUG91dCooUFFSL1dQaW4pIEJQb3V0IFdQb3V0IEJQaW4gV1BpbgorCisgIHN1YiAgICAgICAgICAgICAgICAgICAoQlBpbi1CUG91dCkgV1BvdXQgKEJQb3V0LVdQb3V0KSogV1BvdXQqKFBRUi9XUGluKSBCUG91dCBXUG91dCBCUGluIFdQaW4KKyAgbXVsdCAgICAgICAgICAgICAgICAgIChCUGluLUJQb3V0KSpXUG91dCAoQlBvdXQtV1BvdXQpKiBXUG91dCooUFFSL1dQaW4pIEJQb3V0IFdQb3V0IEJQaW4gV1BpbgorICBzdWIgICAgICAgICAgICAgICAgICAgKEJQb3V0LVdQb3V0KSogV1BvdXQqKFBRUi9XUGluKS0oQlBpbi1CUG91dCkqV1BvdXQgQlBvdXQgV1BvdXQgQlBpbiBXUGluCisKKyAgMyBpbmRleCAzIGdldCAgICAgICAgIEJQaW4gKEJQb3V0LVdQb3V0KSogV1BvdXQqKFBRUi9XUGluKS0oQlBpbi1CUG91dCkqV1BvdXQgQlBvdXQgV1BvdXQgQlBpbiBXUGluCisgIDMgaW5kZXggMyBnZXQgICAgICAgICBXUG91dCBCUGluIChCUG91dC1XUG91dCkqIFdQb3V0KihQUVIvV1BpbiktKEJQaW4tQlBvdXQpKldQb3V0IEJQb3V0IFdQb3V0IEJQaW4gV1BpbgorICBleGNoCisgIHN1YiAgICAgICAgICAgICAgICAgICAoV1BvdXQtQlBpbikgKEJQb3V0LVdQb3V0KSogV1BvdXQqKFBRUi9XUGluKS0oQlBpbi1CUG91dCkqV1BvdXQgQlBvdXQgV1BvdXQgQlBpbiBXUGluCisgIGRpdgorCisgIGV4Y2ggcG9wCisgIGV4Y2ggcG9wCisgIGV4Y2ggcG9wCisgIGV4Y2ggcG9wCisKKyovCisKKworc3RhdGljCit2b2lkIEVtaXRQUVJTdGFnZShjbXNJT0hBTkRMRVIqIG0sIGNtc0hQUk9GSUxFIGhQcm9maWxlLCBpbnQgRG9CUEMsIGludCBsSXNBYnNvbHV0ZSkKK3sKKworCisgICAgICAgIGlmIChsSXNBYnNvbHV0ZSkgeworCisgICAgICAgICAgICAvLyBGb3IgYWJzb2x1dGUgY29sb3JpbWV0cmljIGludGVudCwgZW5jb2RlIGJhY2sgdG8gcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIGFuZCBnZW5lcmF0ZSBhIHJlbGF0aXZlIFBpcGVsaW5lCisKKyAgICAgICAgICAgIC8vIFJlbGF0aXZlIGVuY29kaW5nIGlzIG9idGFpbmVkIGFjcm9zcyBYWVpwY3MqKEQ1MC9XaGl0ZVBvaW50KQorCisgICAgICAgICAgICBjbXNDSUVYWVogV2hpdGU7CisKKyAgICAgICAgICAgIF9jbXNSZWFkTWVkaWFXaGl0ZVBvaW50KCZXaGl0ZSwgaFByb2ZpbGUpOworCisgICAgICAgICAgICBfY21zSU9QcmludGYobSwiL01hdHJpeFBRUiBbMSAwIDAgMCAxIDAgMCAwIDEgXVxuIik7CisgICAgICAgICAgICBfY21zSU9QcmludGYobSwiL1JhbmdlUFFSIFsgLTAuNSAyIC0wLjUgMiAtMC41IDIgXVxuIik7CisKKyAgICAgICAgICAgIF9jbXNJT1ByaW50ZihtLCAiJSUgQWJzb2x1dGUgY29sb3JpbWV0cmljIC0tIGVuY29kZSB0byByZWxhdGl2ZSB0byBtYXhpbWl6ZSBMVVQgdXNhZ2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiL1RyYW5zZm9ybVBRUiBbXG4iCisgICAgICAgICAgICAgICAgICAgICAgInswLjk2NDIgbXVsICVnIGRpdiBleGNoIHBvcCBleGNoIHBvcCBleGNoIHBvcCBleGNoIHBvcH0gYmluZFxuIgorICAgICAgICAgICAgICAgICAgICAgICJ7MS4wMDAwIG11bCAlZyBkaXYgZXhjaCBwb3AgZXhjaCBwb3AgZXhjaCBwb3AgZXhjaCBwb3B9IGJpbmRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiezAuODI0OSBtdWwgJWcgZGl2IGV4Y2ggcG9wIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4Y2ggcG9wfSBiaW5kXG5dXG4iLAorICAgICAgICAgICAgICAgICAgICAgIFdoaXRlLlgsIFdoaXRlLlksIFdoaXRlLlopOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKworICAgICAgICBfY21zSU9QcmludGYobSwiJSUgQnJhZGZvcmQgQ29uZSBTcGFjZVxuIgorICAgICAgICAgICAgICAgICAiL01hdHJpeFBRUiBbMC44OTUxIC0wLjc1MDIgMC4wMzg5IDAuMjY2NCAxLjcxMzUgLTAuMDY4NSAtMC4xNjE0IDAuMDM2NyAxLjAyOTYgXSBcbiIpOworCisgICAgICAgIF9jbXNJT1ByaW50ZihtLCAiL1JhbmdlUFFSIFsgLTAuNSAyIC0wLjUgMiAtMC41IDIgXVxuIik7CisKKworICAgICAgICAvLyBObyBCUEMKKworICAgICAgICBpZiAoIURvQlBDKSB7CisKKyAgICAgICAgICAgIF9jbXNJT1ByaW50ZihtLCAiJSUgVm9uS3JpZXMtbGlrZSB0cmFuc2Zvcm0gaW4gQnJhZGZvcmQgQ29uZSBTcGFjZVxuIgorICAgICAgICAgICAgICAgICAgICAgICIvVHJhbnNmb3JtUFFSIFtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAie2V4Y2ggcG9wIGV4Y2ggMyBnZXQgbXVsIGV4Y2ggcG9wIGV4Y2ggMyBnZXQgZGl2fSBiaW5kXG4iCisgICAgICAgICAgICAgICAgICAgICAgIntleGNoIHBvcCBleGNoIDQgZ2V0IG11bCBleGNoIHBvcCBleGNoIDQgZ2V0IGRpdn0gYmluZFxuIgorICAgICAgICAgICAgICAgICAgICAgICJ7ZXhjaCBwb3AgZXhjaCA1IGdldCBtdWwgZXhjaCBwb3AgZXhjaCA1IGdldCBkaXZ9IGJpbmRcbl1cbiIpOworICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAvLyBCUEMKKworICAgICAgICAgICAgX2Ntc0lPUHJpbnRmKG0sICIlJSBWb25Lcmllcy1saWtlIHRyYW5zZm9ybSBpbiBCcmFkZm9yZCBDb25lIFNwYWNlIHBsdXMgQlBDXG4iCisgICAgICAgICAgICAgICAgICAgICAgIi9UcmFuc2Zvcm1QUVIgW1xuIik7CisKKyAgICAgICAgICAgIF9jbXNJT1ByaW50ZihtLCAiezQgaW5kZXggMyBnZXQgZGl2IDIgaW5kZXggMyBnZXQgbXVsICIKKyAgICAgICAgICAgICAgICAgICAgIjIgaW5kZXggMyBnZXQgMiBpbmRleCAzIGdldCBzdWIgbXVsICIKKyAgICAgICAgICAgICAgICAgICAgIjIgaW5kZXggMyBnZXQgNCBpbmRleCAzIGdldCAzIGluZGV4IDMgZ2V0IHN1YiBtdWwgc3ViICIKKyAgICAgICAgICAgICAgICAgICAgIjMgaW5kZXggMyBnZXQgMyBpbmRleCAzIGdldCBleGNoIHN1YiBkaXYgIgorICAgICAgICAgICAgICAgICAgICAiZXhjaCBwb3AgZXhjaCBwb3AgZXhjaCBwb3AgZXhjaCBwb3AgfSBiaW5kXG4iKTsKKworICAgICAgICAgICAgX2Ntc0lPUHJpbnRmKG0sICJ7NCBpbmRleCA0IGdldCBkaXYgMiBpbmRleCA0IGdldCBtdWwgIgorICAgICAgICAgICAgICAgICAgICAiMiBpbmRleCA0IGdldCAyIGluZGV4IDQgZ2V0IHN1YiBtdWwgIgorICAgICAgICAgICAgICAgICAgICAiMiBpbmRleCA0IGdldCA0IGluZGV4IDQgZ2V0IDMgaW5kZXggNCBnZXQgc3ViIG11bCBzdWIgIgorICAgICAgICAgICAgICAgICAgICAiMyBpbmRleCA0IGdldCAzIGluZGV4IDQgZ2V0IGV4Y2ggc3ViIGRpdiAiCisgICAgICAgICAgICAgICAgICAgICJleGNoIHBvcCBleGNoIHBvcCBleGNoIHBvcCBleGNoIHBvcCB9IGJpbmRcbiIpOworCisgICAgICAgICAgICBfY21zSU9QcmludGYobSwgIns0IGluZGV4IDUgZ2V0IGRpdiAyIGluZGV4IDUgZ2V0IG11bCAiCisgICAgICAgICAgICAgICAgICAgICIyIGluZGV4IDUgZ2V0IDIgaW5kZXggNSBnZXQgc3ViIG11bCAiCisgICAgICAgICAgICAgICAgICAgICIyIGluZGV4IDUgZ2V0IDQgaW5kZXggNSBnZXQgMyBpbmRleCA1IGdldCBzdWIgbXVsIHN1YiAiCisgICAgICAgICAgICAgICAgICAgICIzIGluZGV4IDUgZ2V0IDMgaW5kZXggNSBnZXQgZXhjaCBzdWIgZGl2ICIKKyAgICAgICAgICAgICAgICAgICAgImV4Y2ggcG9wIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4Y2ggcG9wIH0gYmluZFxuXVxuIik7CisKKyAgICAgICAgfQorCisKK30KKworCitzdGF0aWMKK3ZvaWQgRW1pdFhZWjJMYWIoY21zSU9IQU5ETEVSKiBtKQoreworICAgIF9jbXNJT1ByaW50ZihtLCAiL1JhbmdlTE1OIFsgLTAuNjM1IDIuMCAwIDIgLTAuNjM1IDIuMCBdXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIi9FbmNvZGVMTU4gW1xuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICJ7IDAuOTY0MjAwICBkaXYgZHVwIDAuMDA4ODU2IGxlIHs3Ljc4NyBtdWwgMTYgMTE2IGRpdiBhZGR9ezEgMyBkaXYgZXhwfSBpZmVsc2UgfSBiaW5kXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgInsgMS4wMDAwMDAgIGRpdiBkdXAgMC4wMDg4NTYgbGUgezcuNzg3IG11bCAxNiAxMTYgZGl2IGFkZH17MSAzIGRpdiBleHB9IGlmZWxzZSB9IGJpbmRcbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAieyAwLjgyNDkwMCAgZGl2IGR1cCAwLjAwODg1NiBsZSB7Ny43ODcgbXVsIDE2IDExNiBkaXYgYWRkfXsxIDMgZGl2IGV4cH0gaWZlbHNlIH0gYmluZFxuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICJdXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIi9NYXRyaXhBQkMgWyAwIDEgMCAxIC0xIDEgMCAwIC0xIF1cbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAiL0VuY29kZUFCQyBbXG4iKTsKKworCisgICAgX2Ntc0lPUHJpbnRmKG0sICJ7IDExNiBtdWwgIDE2IHN1YiAxMDAgZGl2ICB9IGJpbmRcbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAieyA1MDAgbXVsIDEyOCBhZGQgMjU2IGRpdiAgfSBiaW5kXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgInsgMjAwIG11bCAxMjggYWRkIDI1NiBkaXYgIH0gYmluZFxuIik7CisKKworICAgIF9jbXNJT1ByaW50ZihtLCAiXVxuIik7CisKKworfQorCisvLyBEdWUgdG8gaW1wZWRhbmNlIG1pc21hdGNoIGJldHdlZW4gWFlaIGFuZCBhbG1vc3QgYWxsIFJHQiBhbmQgQ01ZSyBzcGFjZXMKKy8vIEkgY2hvb3NlIHRvIGR1bXAgTFVUUyBpbiBMYWIgaW5zdGVhZCBvZiBYWVouIFRoZXJlIGlzIHN0aWxsIGEgbG90IG9mIHdhc3RlZAorLy8gc3BhY2Ugb24gM0QgQ0xVVCwgYnV0IHNpbmNlIHNwYWNlIHNlZW1zIG5vdCB0byBiZSBhIHByb2JsZW0gaGVyZSwgMzMgcG9pbnRzCisvLyB3b3VsZCBnaXZlIGEgcmVhc29uYWJsZSBhY2N1cmFuY3kuIE5vdGUgYWxzbyB0aGF0IENSRCB0YWJsZXMgbXVzdCBvcGVyYXRlIGluCisvLyA4IGJpdHMuCisKK3N0YXRpYworaW50IFdyaXRlT3V0cHV0TFVUKGNtc0lPSEFORExFUiogbSwgY21zSFBST0ZJTEUgaFByb2ZpbGUsIGludCBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKQoreworICAgIGNtc0hQUk9GSUxFIGhMYWI7CisgICAgY21zSFRSQU5TRk9STSB4Zm9ybTsKKyAgICBpbnQgaSwgbkNoYW5uZWxzOworICAgIGNtc1VJbnQzMk51bWJlciBPdXRwdXRGb3JtYXQ7CisgICAgX2Ntc1RSQU5TRk9STSogdjsKKyAgICBjbXNQaXBlbGluZSogRGV2aWNlTGluazsKKyAgICBjbXNIUFJPRklMRSBQcm9maWxlc1szXTsKKyAgICBjbXNDSUVYWVogQmxhY2tQb2ludEFkYXB0ZWRUb0Q1MDsKKyAgICBjbXNCb29sIGxEb0JQQyA9IChkd0ZsYWdzICYgY21zRkxBR1NfQkxBQ0tQT0lOVENPTVBFTlNBVElPTik7CisgICAgY21zQm9vbCBsRml4V2hpdGUgPSAhKGR3RmxhZ3MgJiBjbXNGTEFHU19OT1dISVRFT05XSElURUZJWFVQKTsKKyAgICBjbXNVSW50MzJOdW1iZXIgSW5Gcm0gPSBUWVBFX0xhYl8xNjsKKyAgICBpbnQgUmVsYXRpdmVFbmNvZGluZ0ludGVudDsKKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENvbG9yU3BhY2U7CisKKworICAgIGhMYWIgPSBjbXNDcmVhdGVMYWI0UHJvZmlsZVRIUihtIC0+Q29udGV4dElELCBOVUxMKTsKKyAgICBpZiAoaExhYiA9PSBOVUxMKSByZXR1cm4gMDsKKworICAgIE91dHB1dEZvcm1hdCA9IGNtc0Zvcm1hdHRlckZvckNvbG9yc3BhY2VPZlByb2ZpbGUoaFByb2ZpbGUsIDIsIEZBTFNFKTsKKyAgICBuQ2hhbm5lbHMgICAgPSBUX0NIQU5ORUxTKE91dHB1dEZvcm1hdCk7CisKKyAgICBDb2xvclNwYWNlID0gY21zR2V0Q29sb3JTcGFjZShoUHJvZmlsZSk7CisKKyAgICAvLyBGb3IgYWJzb2x1dGUgY29sb3JpbWV0cmljLCB0aGUgTFVUIGlzIGVuY29kZWQgYXMgcmVsYXRpdmUgaW4gb3JkZXIgdG8gcHJlc2VydmUgcHJlY2lzaW9uLgorCisgICAgUmVsYXRpdmVFbmNvZGluZ0ludGVudCA9IEludGVudDsKKyAgICBpZiAoUmVsYXRpdmVFbmNvZGluZ0ludGVudCA9PSBJTlRFTlRfQUJTT0xVVEVfQ09MT1JJTUVUUklDKQorICAgICAgICBSZWxhdGl2ZUVuY29kaW5nSW50ZW50ID0gSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQzsKKworCisgICAgLy8gVXNlIFY0IExhYiBhbHdheXMKKyAgICBQcm9maWxlc1swXSA9IGhMYWI7CisgICAgUHJvZmlsZXNbMV0gPSBoUHJvZmlsZTsKKworICAgIHhmb3JtID0gY21zQ3JlYXRlTXVsdGlwcm9maWxlVHJhbnNmb3JtVEhSKG0gLT5Db250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZmlsZXMsIDIsIFRZUEVfTGFiX0RCTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRGb3JtYXQsIFJlbGF0aXZlRW5jb2RpbmdJbnRlbnQsIDApOworICAgIGNtc0Nsb3NlUHJvZmlsZShoTGFiKTsKKworICAgIGlmICh4Zm9ybSA9PSBOVUxMKSB7CisKKyAgICAgICAgY21zU2lnbmFsRXJyb3IobSAtPkNvbnRleHRJRCwgY21zRVJST1JfQ09MT1JTUEFDRV9DSEVDSywgIkNhbm5vdCBjcmVhdGUgdHJhbnNmb3JtIExhYiAtPiBQcm9maWxlIGluIENSRCBjcmVhdGlvbiIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBHZXQgYSBjb3B5IG9mIHRoZSBpbnRlcm5hbCBkZXZpY2VsaW5rCisgICAgdiA9IChfY21zVFJBTlNGT1JNKikgeGZvcm07CisgICAgRGV2aWNlTGluayA9IGNtc1BpcGVsaW5lRHVwKHYgLT5MdXQpOworICAgIGlmIChEZXZpY2VMaW5rID09IE5VTEwpIHJldHVybiAwOworCisKKyAgICAvLyBXZSBuZWVkIGEgQ0xVVAorICAgIGR3RmxhZ3MgfD0gY21zRkxBR1NfRk9SQ0VfQ0xVVDsKKyAgICBfY21zT3B0aW1pemVQaXBlbGluZShtLT5Db250ZXh0SUQsICZEZXZpY2VMaW5rLCBSZWxhdGl2ZUVuY29kaW5nSW50ZW50LCAmSW5Gcm0sICZPdXRwdXRGb3JtYXQsICZkd0ZsYWdzKTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiPDxcbiIpOworICAgIF9jbXNJT1ByaW50ZihtLCAiL0NvbG9yUmVuZGVyaW5nVHlwZSAxXG4iKTsKKworCisgICAgY21zRGV0ZWN0QmxhY2tQb2ludCgmQmxhY2tQb2ludEFkYXB0ZWRUb0Q1MCwgaFByb2ZpbGUsIEludGVudCwgMCk7CisKKyAgICAvLyBFbWl0IGhlYWRlcnMsIGV0Yy4KKyAgICBFbWl0V2hpdGVCbGFja0Q1MChtLCAmQmxhY2tQb2ludEFkYXB0ZWRUb0Q1MCk7CisgICAgRW1pdFBRUlN0YWdlKG0sIGhQcm9maWxlLCBsRG9CUEMsIEludGVudCA9PSBJTlRFTlRfQUJTT0xVVEVfQ09MT1JJTUVUUklDKTsKKyAgICBFbWl0WFlaMkxhYihtKTsKKworCisgICAgLy8gRklYVVA6IG1hcCBMYWIgKDEwMCwgMCwgMCkgdG8gcGVyZmVjdCB3aGl0ZSwgYmVjYXVzZSB0aGUgcGFydGljdWxhciBlbmNvZGluZyBmb3IgTGFiCisgICAgLy8gZG9lcyBtYXAgYT1iPTAgbm90IGZhbGxpbmcgaW50byBhbnkgc3BlY2lmaWMgbm9kZS4gU2luY2UgcmFuZ2UgYSxiIGdvZXMgLTEyOC4uMTI3LAorICAgIC8vIHplcm8gaXMgc2xpZ2h0bHkgbW92ZWQgdG93YXJkcyByaWdodCwgc28gYXNzdXJlIG5leHQgbm9kZSAoaW4gTD0xMDAgc2xpY2UpIGlzIG1hcHBlZCB0bworICAgIC8vIHplcm8uIFRoaXMgd291bGQgc2FjcmlmaWNlIGEgYml0IG9mIGhpZ2hsaWdodHMsIGJ1dCBmYWlsdXJlIHRvIGRvIHNvIHdvdWxkIGNhdXNlCisgICAgLy8gc2N1bSBkb3QuIE91Y2guCisKKyAgICBpZiAoSW50ZW50ID09IElOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUMpCisgICAgICAgICAgICBsRml4V2hpdGUgPSBGQUxTRTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiL1JlbmRlclRhYmxlICIpOworCisKKyAgICBXcml0ZUNMVVQobSwgY21zUGlwZWxpbmVHZXRQdHJUb0ZpcnN0U3RhZ2UoRGV2aWNlTGluayksICI8IiwgIj5cbiIsICIiLCAiIiwgbEZpeFdoaXRlLCBDb2xvclNwYWNlKTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiICVkIHt9IGJpbmQgIiwgbkNoYW5uZWxzKTsKKworICAgIGZvciAoaT0xOyBpIDwgbkNoYW5uZWxzOyBpKyspCisgICAgICAgICAgICBfY21zSU9QcmludGYobSwgImR1cCAiKTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiXVxuIik7CisKKworICAgIEVtaXRJbnRlbnQobSwgSW50ZW50KTsKKworICAgIF9jbXNJT1ByaW50ZihtLCAiPj5cbiIpOworCisgICAgaWYgKCEoZHdGbGFncyAmIGNtc0ZMQUdTX05PREVGQVVMVFJFU09VUkNFREVGKSkgeworCisgICAgICAgIF9jbXNJT1ByaW50ZihtLCAiL0N1cnJlbnQgZXhjaCAvQ29sb3JSZW5kZXJpbmcgZGVmaW5lcmVzb3VyY2UgcG9wXG4iKTsKKyAgICB9CisKKyAgICBjbXNQaXBlbGluZUZyZWUoRGV2aWNlTGluayk7CisgICAgY21zRGVsZXRlVHJhbnNmb3JtKHhmb3JtKTsKKworICAgIHJldHVybiAxOworfQorCisKKy8vIEJ1aWxkcyBhIEFTQ0lJIHN0cmluZyBjb250YWluaW5nIGNvbG9yYW50IGxpc3QgaW4gMC4uMS4wIHJhbmdlCitzdGF0aWMKK3ZvaWQgQnVpbGRDb2xvcmFudExpc3QoY2hhciAqQ29sb3JhbnQsIGludCBuQ29sb3JhbnQsIGNtc1VJbnQxNk51bWJlciBPdXRbXSkKK3sKKyAgICBjaGFyIEJ1ZmZbMzJdOworICAgIGludCBqOworCisgICAgQ29sb3JhbnRbMF0gPSAwOworICAgIGlmIChuQ29sb3JhbnQgPiBjbXNNQVhDSEFOTkVMUykKKyAgICAgICAgbkNvbG9yYW50ID0gY21zTUFYQ0hBTk5FTFM7CisKKyAgICBmb3IgKGo9MDsgaiA8IG5Db2xvcmFudDsgaisrKSB7CisKKyAgICAgICAgICAgICAgICBzcHJpbnRmKEJ1ZmYsICIlLjNmIiwgT3V0W2pdIC8gNjU1MzUuMCk7CisgICAgICAgICAgICAgICAgc3RyY2F0KENvbG9yYW50LCBCdWZmKTsKKyAgICAgICAgICAgICAgICBpZiAoaiA8IG5Db2xvcmFudCAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdChDb2xvcmFudCwgIiAiKTsKKworICAgICAgICB9Cit9CisKKworLy8gQ3JlYXRlcyBhIFBvc3RTY3JpcHQgY29sb3IgbGlzdCBmcm9tIGEgbmFtZWQgcHJvZmlsZSBkYXRhLgorLy8gVGhpcyBpcyBhIEhQIGV4dGVuc2lvbi4KKworc3RhdGljCitpbnQgV3JpdGVOYW1lZENvbG9yQ1JEKGNtc0lPSEFORExFUiogbSwgY21zSFBST0ZJTEUgaE5hbWVkQ29sb3IsIGludCBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKQoreworICAgIGNtc0hUUkFOU0ZPUk0geGZvcm07CisgICAgaW50IGksIG5Db2xvcnMsIG5Db2xvcmFudDsKKyAgICBjbXNVSW50MzJOdW1iZXIgT3V0cHV0Rm9ybWF0OworICAgIGNoYXIgQ29sb3JOYW1lWzMyXTsKKyAgICBjaGFyIENvbG9yYW50WzEyOF07CisgICAgY21zTkFNRURDT0xPUkxJU1QqIE5hbWVkQ29sb3JMaXN0OworCisKKyAgICBPdXRwdXRGb3JtYXQgPSBjbXNGb3JtYXR0ZXJGb3JDb2xvcnNwYWNlT2ZQcm9maWxlKGhOYW1lZENvbG9yLCAyLCBGQUxTRSk7CisgICAgbkNvbG9yYW50ICAgID0gVF9DSEFOTkVMUyhPdXRwdXRGb3JtYXQpOworCisKKyAgICB4Zm9ybSA9IGNtc0NyZWF0ZVRyYW5zZm9ybShoTmFtZWRDb2xvciwgVFlQRV9OQU1FRF9DT0xPUl9JTkRFWCwgTlVMTCwgT3V0cHV0Rm9ybWF0LCBJbnRlbnQsIGR3RmxhZ3MpOworICAgIGlmICh4Zm9ybSA9PSBOVUxMKSByZXR1cm4gMDsKKworCisgICAgTmFtZWRDb2xvckxpc3QgPSBjbXNHZXROYW1lZENvbG9yTGlzdCh4Zm9ybSk7CisgICAgaWYgKE5hbWVkQ29sb3JMaXN0ID09IE5VTEwpIHJldHVybiAwOworCisgICAgX2Ntc0lPUHJpbnRmKG0sICI8PFxuIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICIoY29sb3JsaXN0Y29tbWVudCkgKCVzKSBcbiIsICJOYW1lZCBwcm9maWxlIik7CisgICAgX2Ntc0lPUHJpbnRmKG0sICIoUHJlZml4KSBbIChQYW50b25lICkgKFBBTlRPTkUgKSBdXG4iKTsKKyAgICBfY21zSU9QcmludGYobSwgIihTdWZmaXgpIFsgKCBDVikgKCBDVkMpICggQykgXVxuIik7CisKKyAgICBuQ29sb3JzICAgPSBjbXNOYW1lZENvbG9yQ291bnQoTmFtZWRDb2xvckxpc3QpOworCisgICAgZm9yIChpPTA7IGkgPCBuQ29sb3JzOyBpKyspIHsKKworICAgICAgICBjbXNVSW50MTZOdW1iZXIgSW5bMV07CisgICAgICAgIGNtc1VJbnQxNk51bWJlciBPdXRbY21zTUFYQ0hBTk5FTFNdOworCisgICAgICAgIEluWzBdID0gKGNtc1VJbnQxNk51bWJlcikgaTsKKworICAgICAgICBpZiAoIWNtc05hbWVkQ29sb3JJbmZvKE5hbWVkQ29sb3JMaXN0LCBpLCBDb2xvck5hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNtc0RvVHJhbnNmb3JtKHhmb3JtLCBJbiwgT3V0LCAxKTsKKyAgICAgICAgQnVpbGRDb2xvcmFudExpc3QoQ29sb3JhbnQsIG5Db2xvcmFudCwgT3V0KTsKKyAgICAgICAgX2Ntc0lPUHJpbnRmKG0sICIgICglcykgWyAlcyBdXG4iLCBDb2xvck5hbWUsIENvbG9yYW50KTsKKyAgICB9CisKKyAgICBfY21zSU9QcmludGYobSwgIiAgID4+Iik7CisKKyAgICBpZiAoIShkd0ZsYWdzICYgY21zRkxBR1NfTk9ERUZBVUxUUkVTT1VSQ0VERUYpKSB7CisKKyAgICBfY21zSU9QcmludGYobSwgIiAvQ3VycmVudCBleGNoIC9IUFNwb3RUYWJsZSBkZWZpbmVyZXNvdXJjZSBwb3BcbiIpOworICAgIH0KKworICAgIGNtc0RlbGV0ZVRyYW5zZm9ybSh4Zm9ybSk7CisgICAgcmV0dXJuIDE7Cit9CisKKworCisvLyBUaGlzIG9uZSBkb2VzIGNyZWF0ZSBhIENvbG9yIFJlbmRlcmluZyBEaWN0aW9uYXJ5LgorLy8gQ1JEIGFyZSBhbHdheXMgTFVULUJhc2VkLCBubyBtYXR0ZXIgaWYgcHJvZmlsZSBpcworLy8gaW1wbGVtZW50ZWQgYXMgbWF0cml4LXNoYXBlci4KKworc3RhdGljCitjbXNVSW50MzJOdW1iZXIgIEdlbmVyYXRlQ1JEKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBoUHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIEludGVudCwgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0lPSEFORExFUiogbWVtKQoreworICAgIGNtc1VJbnQzMk51bWJlciBkd0J5dGVzVXNlZDsKKworICAgIGlmICghKGR3RmxhZ3MgJiBjbXNGTEFHU19OT0RFRkFVTFRSRVNPVVJDRURFRikpIHsKKworICAgICAgICBFbWl0SGVhZGVyKG1lbSwgIkNvbG9yIFJlbmRlcmluZyBEaWN0aW9uYXJ5IChDUkQpIiwgaFByb2ZpbGUpOworICAgIH0KKworCisgICAgLy8gSXMgYSBuYW1lZCBjb2xvciBwcm9maWxlPworICAgIGlmIChjbXNHZXREZXZpY2VDbGFzcyhoUHJvZmlsZSkgPT0gY21zU2lnTmFtZWRDb2xvckNsYXNzKSB7CisKKyAgICAgICAgaWYgKCFXcml0ZU5hbWVkQ29sb3JDUkQobWVtLCBoUHJvZmlsZSwgSW50ZW50LCBkd0ZsYWdzKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgICAgLy8gQ1JEIGFyZSBhbHdheXMgaW1wbGVtZW50ZWQgYXMgTFVUCisKKyAgICAgICAgaWYgKCFXcml0ZU91dHB1dExVVChtZW0sIGhQcm9maWxlLCBJbnRlbnQsIGR3RmxhZ3MpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghKGR3RmxhZ3MgJiBjbXNGTEFHU19OT0RFRkFVTFRSRVNPVVJDRURFRikpIHsKKworICAgICAgICBfY21zSU9QcmludGYobWVtLCAiJSUlJUVuZFJlc291cmNlXG4iKTsKKyAgICAgICAgX2Ntc0lPUHJpbnRmKG1lbSwgIlxuJSUgQ1JEIEVuZFxuIik7CisgICAgfQorCisgICAgLy8gRG9uZSwga2VlcCBtZW1vcnkgdXNhZ2UKKyAgICBkd0J5dGVzVXNlZCA9IG1lbSAtPlVzZWRTcGFjZTsKKworICAgIC8vIEZpbmFsbHksIHJldHVybiB1c2VkIGJ5dGUgY291bnQKKyAgICByZXR1cm4gZHdCeXRlc1VzZWQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKENvbnRleHRJRCk7Cit9CisKKworCisKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0UG9zdFNjcmlwdENvbG9yUmVzb3VyY2UoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNQU1Jlc291cmNlVHlwZSBUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgaFByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNJT0hBTkRMRVIqIGlvKQoreworICAgIGNtc1VJbnQzMk51bWJlciAgcmM7CisKKworICAgIHN3aXRjaCAoVHlwZSkgeworCisgICAgICAgIGNhc2UgY21zUFNfUkVTT1VSQ0VfQ1NBOgorICAgICAgICAgICAgcmMgPSBHZW5lcmF0ZUNTQShDb250ZXh0SUQsIGhQcm9maWxlLCBJbnRlbnQsIGR3RmxhZ3MsIGlvKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNhc2UgY21zUFNfUkVTT1VSQ0VfQ1JEOgorICAgICAgICAgICAgcmMgPSBHZW5lcmF0ZUNSRChDb250ZXh0SUQsIGhQcm9maWxlLCBJbnRlbnQsIGR3RmxhZ3MsIGlvKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworCisKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0UG9zdFNjcmlwdENSRChjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIGhQcm9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIEludGVudCwgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBCdWZmZXIsIGNtc1VJbnQzMk51bWJlciBkd0J1ZmZlckxlbikKK3sKKyAgICBjbXNJT0hBTkRMRVIqIG1lbTsKKyAgICBjbXNVSW50MzJOdW1iZXIgZHdCeXRlc1VzZWQ7CisKKyAgICAvLyBTZXQgdXAgdGhlIHNlcmlhbGl6YXRpb24gZW5naW5lCisgICAgaWYgKEJ1ZmZlciA9PSBOVUxMKQorICAgICAgICBtZW0gPSBjbXNPcGVuSU9oYW5kbGVyRnJvbU5VTEwoQ29udGV4dElEKTsKKyAgICBlbHNlCisgICAgICAgIG1lbSA9IGNtc09wZW5JT2hhbmRsZXJGcm9tTWVtKENvbnRleHRJRCwgQnVmZmVyLCBkd0J1ZmZlckxlbiwgInciKTsKKworICAgIGlmICghbWVtKSByZXR1cm4gMDsKKworICAgIGR3Qnl0ZXNVc2VkID0gIGNtc0dldFBvc3RTY3JpcHRDb2xvclJlc291cmNlKENvbnRleHRJRCwgY21zUFNfUkVTT1VSQ0VfQ1JELCBoUHJvZmlsZSwgSW50ZW50LCBkd0ZsYWdzLCBtZW0pOworCisgICAgLy8gR2V0IHJpZCBvZiBtZW1vcnkgc3RyZWFtCisgICAgY21zQ2xvc2VJT2hhbmRsZXIobWVtKTsKKworICAgIHJldHVybiBkd0J5dGVzVXNlZDsKK30KKworCisKKy8vIERvZXMgY3JlYXRlIGEgQ29sb3IgU3BhY2UgQXJyYXkgb24gWFlaIGNvbG9yc3BhY2UgZm9yIFBvc3RTY3JpcHQgdXNhZ2UKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0UG9zdFNjcmlwdENTQShjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBoUHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdCdWZmZXJMZW4pCit7CisgICAgY21zSU9IQU5ETEVSKiBtZW07CisgICAgY21zVUludDMyTnVtYmVyIGR3Qnl0ZXNVc2VkOworCisgICAgaWYgKEJ1ZmZlciA9PSBOVUxMKQorICAgICAgICBtZW0gPSBjbXNPcGVuSU9oYW5kbGVyRnJvbU5VTEwoQ29udGV4dElEKTsKKyAgICBlbHNlCisgICAgICAgIG1lbSA9IGNtc09wZW5JT2hhbmRsZXJGcm9tTWVtKENvbnRleHRJRCwgQnVmZmVyLCBkd0J1ZmZlckxlbiwgInciKTsKKworICAgIGlmICghbWVtKSByZXR1cm4gMDsKKworICAgIGR3Qnl0ZXNVc2VkID0gIGNtc0dldFBvc3RTY3JpcHRDb2xvclJlc291cmNlKENvbnRleHRJRCwgY21zUFNfUkVTT1VSQ0VfQ1NBLCBoUHJvZmlsZSwgSW50ZW50LCBkd0ZsYWdzLCBtZW0pOworCisgICAgLy8gR2V0IHJpZCBvZiBtZW1vcnkgc3RyZWFtCisgICAgY21zQ2xvc2VJT2hhbmRsZXIobWVtKTsKKworICAgIHJldHVybiBkd0J5dGVzVXNlZDsKKworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3NhbXAuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNzYW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBlNDY5MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNzYW1wLmMKQEAgLTAsMCArMSw1NzIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gIExpdHRsZSBDb2xvciBNYW5hZ2VtZW50IFN5c3RlbQorLy8gIENvcHlyaWdodCAoYykgMTk5OC0yMDEwIE1hcnRpIE1hcmlhIFNhZ3VlcgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworLy8gYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisvLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUKKy8vIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPCisvLyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorLy8gTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorLy8gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisvLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKworI2luY2x1ZGUgImxjbXMyX2ludGVybmFsLmgiCisKKworI2RlZmluZSBjbXNtaW4oYSwgYikgKCgoYSkgPCAoYikpID8gKGEpIDogKGIpKQorI2RlZmluZSBjbXNtYXgoYSwgYikgKCgoYSkgPiAoYikpID8gKGEpIDogKGIpKQorCisvLyBUaGlzIGZpbGUgY29udGFpbnMgcm91dGluZXMgZm9yIHJlc2FtcGxpbmcgYW5kIExVVCBvcHRpbWl6YXRpb24sIGJsYWNrIHBvaW50IGRldGVjdGlvbgorLy8gYW5kIGJsYWNrIHByZXNlcnZhdGlvbi4KKworLy8gQmxhY2sgcG9pbnQgZGV0ZWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisvLyBQQ1MgLT4gUENTIHJvdW5kIHRyaXAgdHJhbnNmb3JtLCBhbHdheXMgdXNlcyByZWxhdGl2ZSBpbnRlbnQgb24gdGhlIGRldmljZSAtPiBwY3MKK3N0YXRpYworY21zSFRSQU5TRk9STSBDcmVhdGVSb3VuZHRyaXBYRm9ybShjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVUludDMyTnVtYmVyIG5JbnRlbnQpCit7CisgICAgY21zQ29udGV4dCBDb250ZXh0SUQgPSBjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlKTsKKyAgICBjbXNIUFJPRklMRSBoTGFiID0gY21zQ3JlYXRlTGFiNFByb2ZpbGVUSFIoQ29udGV4dElELCBOVUxMKTsKKyAgICBjbXNIVFJBTlNGT1JNIHhmb3JtOworICAgIGNtc0Jvb2wgQlBDWzRdID0geyBGQUxTRSwgRkFMU0UsIEZBTFNFLCBGQUxTRSB9OworICAgIGNtc0Zsb2F0NjROdW1iZXIgU3RhdGVzWzRdID0geyAxLjAsIDEuMCwgMS4wLCAxLjAgfTsKKyAgICBjbXNIUFJPRklMRSBoUHJvZmlsZXNbNF07CisgICAgY21zVUludDMyTnVtYmVyIEludGVudHNbNF07CisKKyAgICBoUHJvZmlsZXNbMF0gPSBoTGFiOyBoUHJvZmlsZXNbMV0gPSBoUHJvZmlsZTsgaFByb2ZpbGVzWzJdID0gaFByb2ZpbGU7IGhQcm9maWxlc1szXSA9IGhMYWI7CisgICAgSW50ZW50c1swXSAgID0gSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQzsgSW50ZW50c1sxXSA9IG5JbnRlbnQ7IEludGVudHNbMl0gPSBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDOyBJbnRlbnRzWzNdID0gSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQzsKKworICAgIHhmb3JtID0gIGNtc0NyZWF0ZUV4dGVuZGVkVHJhbnNmb3JtKENvbnRleHRJRCwgNCwgaFByb2ZpbGVzLCBCUEMsIEludGVudHMsCisgICAgICAgIFN0YXRlcywgTlVMTCwgMCwgVFlQRV9MYWJfREJMLCBUWVBFX0xhYl9EQkwsIGNtc0ZMQUdTX05PQ0FDSEV8Y21zRkxBR1NfTk9PUFRJTUlaRSk7CisKKyAgICBjbXNDbG9zZVByb2ZpbGUoaExhYik7CisgICAgcmV0dXJuIHhmb3JtOworfQorCisvLyBVc2UgZGFya2VyIGNvbG9yYW50cyB0byBvYnRhaW4gYmxhY2sgcG9pbnQuIFRoaXMgd29ya3MgaW4gdGhlIHJlbGF0aXZlIGNvbG9yaW1ldHJpYyBpbnRlbnQgYW5kCisvLyBhc3N1bWVzIG1vcmUgaW5rIHJlc3VsdHMgaW4gZGFya2VyIGNvbG9ycy4gTm8gaW5rIGxpbWl0IGlzIGFzc3VtZWQuCitzdGF0aWMKK2Ntc0Jvb2wgIEJsYWNrUG9pbnRBc0RhcmtlckNvbG9yYW50KGNtc0hQUk9GSUxFICAgIGhJbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNDSUVYWVoqIEJsYWNrUG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykKK3sKKyAgICBjbXNVSW50MTZOdW1iZXIgKkJsYWNrOworICAgIGNtc0hUUkFOU0ZPUk0geGZvcm07CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBTcGFjZTsKKyAgICBjbXNVSW50MzJOdW1iZXIgbkNoYW5uZWxzOworICAgIGNtc1VJbnQzMk51bWJlciBkd0Zvcm1hdDsKKyAgICBjbXNIUFJPRklMRSBoTGFiOworICAgIGNtc0NJRUxhYiAgTGFiOworICAgIGNtc0NJRVhZWiAgQmxhY2tYWVo7CisgICAgY21zQ29udGV4dCBDb250ZXh0SUQgPSBjbXNHZXRQcm9maWxlQ29udGV4dElEKGhJbnB1dCk7CisKKyAgICAvLyBJZiB0aGUgcHJvZmlsZSBkb2VzIG5vdCBzdXBwb3J0IGlucHV0IGRpcmVjdGlvbiwgYXNzdW1lIEJsYWNrIHBvaW50IDAKKyAgICBpZiAoIWNtc0lzSW50ZW50U3VwcG9ydGVkKGhJbnB1dCwgSW50ZW50LCBMQ01TX1VTRURfQVNfSU5QVVQpKSB7CisKKyAgICAgICAgQmxhY2tQb2ludCAtPiBYID0gQmxhY2tQb2ludCAtPlkgPSBCbGFja1BvaW50IC0+IFogPSAwLjA7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBmb3JtYXR0ZXIgd2hpY2ggaGFzIG4gY2hhbm5lbHMgYW5kIGZsb2F0aW5nIHBvaW50CisgICAgZHdGb3JtYXQgPSBjbXNGb3JtYXR0ZXJGb3JDb2xvcnNwYWNlT2ZQcm9maWxlKGhJbnB1dCwgMiwgRkFMU0UpOworCisgICAvLyBUcnkgdG8gZ2V0IGJsYWNrIGJ5IHVzaW5nIGJsYWNrIGNvbG9yYW50CisgICAgU3BhY2UgPSBjbXNHZXRDb2xvclNwYWNlKGhJbnB1dCk7CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgZGFya2VyIGNvbG9yYW50IGluIDE2IGJpdHMgZm9yIHNldmVyYWwgc3BhY2VzCisgICAgaWYgKCFfY21zRW5kUG9pbnRzQnlTcGFjZShTcGFjZSwgTlVMTCwgJkJsYWNrLCAmbkNoYW5uZWxzKSkgeworCisgICAgICAgIEJsYWNrUG9pbnQgLT4gWCA9IEJsYWNrUG9pbnQgLT5ZID0gQmxhY2tQb2ludCAtPiBaID0gMC4wOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgaWYgKG5DaGFubmVscyAhPSBUX0NIQU5ORUxTKGR3Rm9ybWF0KSkgeworICAgICAgIEJsYWNrUG9pbnQgLT4gWCA9IEJsYWNrUG9pbnQgLT5ZID0gQmxhY2tQb2ludCAtPiBaID0gMC4wOworICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBMYWIgd2lsbCBiZSB1c2VkIGFzIHRoZSBvdXRwdXQgc3BhY2UsIGJ1dCBsYWIyIHdpbGwgYXZvaWQgcmVjdXJzaW9uCisgICAgaExhYiA9IGNtc0NyZWF0ZUxhYjJQcm9maWxlVEhSKENvbnRleHRJRCwgTlVMTCk7CisgICAgaWYgKGhMYWIgPT0gTlVMTCkgeworICAgICAgIEJsYWNrUG9pbnQgLT4gWCA9IEJsYWNrUG9pbnQgLT5ZID0gQmxhY2tQb2ludCAtPiBaID0gMC4wOworICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybQorICAgIHhmb3JtID0gY21zQ3JlYXRlVHJhbnNmb3JtVEhSKENvbnRleHRJRCwgaElucHV0LCBkd0Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaExhYiwgVFlQRV9MYWJfREJMLCBJbnRlbnQsIGNtc0ZMQUdTX05PT1BUSU1JWkV8Y21zRkxBR1NfTk9DQUNIRSk7CisgICAgY21zQ2xvc2VQcm9maWxlKGhMYWIpOworCisgICAgaWYgKHhmb3JtID09IE5VTEwpIHsKKworICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZy4gR2V0IHJpZCBvZiBvcGVuIHJlc291cmNlcyBhbmQgcmV0dXJuIHplcm8gYXMgYmxhY2sKKyAgICAgICAgQmxhY2tQb2ludCAtPiBYID0gQmxhY2tQb2ludCAtPlkgPSBCbGFja1BvaW50IC0+IFogPSAwLjA7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBDb252ZXJ0IGJsYWNrIHRvIExhYgorICAgIGNtc0RvVHJhbnNmb3JtKHhmb3JtLCBCbGFjaywgJkxhYiwgMSk7CisKKyAgICAvLyBGb3JjZSBpdCB0byBiZSBuZXV0cmFsLCBjbGlwIHRvIG1heC4gTCogb2YgNTAKKyAgICBMYWIuYSA9IExhYi5iID0gMDsKKyAgICBpZiAoTGFiLkwgPiA1MCkgTGFiLkwgPSA1MDsKKworICAgIC8vIEZyZWUgdGhlIHJlc291cmNlcworICAgIGNtc0RlbGV0ZVRyYW5zZm9ybSh4Zm9ybSk7CisKKyAgICAvLyBDb252ZXJ0IGZyb20gTGFiICh3aGljaCBpcyBub3cgY2xpcHBlZCkgdG8gWFlaLgorICAgIGNtc0xhYjJYWVooTlVMTCwgJkJsYWNrWFlaLCAmTGFiKTsKKworICAgIGlmIChCbGFja1BvaW50ICE9IE5VTEwpCisgICAgICAgICpCbGFja1BvaW50ID0gQmxhY2tYWVo7CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoZHdGbGFncyk7Cit9CisKKy8vIEdldCBhIGJsYWNrIHBvaW50IG9mIG91dHB1dCBDTVlLIHByb2ZpbGUsIGRpc2NvdW50aW5nIGFueSBpbmstbGltaXRpbmcgZW1iZWRkZWQKKy8vIGluIHRoZSBwcm9maWxlLiBGb3IgZG9pbmcgdGhhdCwgd2UgdXNlIHBlcmNlcHR1YWwgaW50ZW50IGluIGlucHV0IGRpcmVjdGlvbjoKKy8vIExhYiAoMCwgMCwgMCkgLT4gW1BlcmNlcHR1YWxdIFByb2ZpbGUgLT4gQ01ZSyAtPiBbUmVsLiBjb2xvcmltZXRyaWNdIFByb2ZpbGUgLT4gTGFiCitzdGF0aWMKK2Ntc0Jvb2wgQmxhY2tQb2ludFVzaW5nUGVyY2VwdHVhbEJsYWNrKGNtc0NJRVhZWiogQmxhY2tQb2ludCwgY21zSFBST0ZJTEUgaFByb2ZpbGUpCit7CisgICAgY21zSFRSQU5TRk9STSBoUm91bmRUcmlwOworICAgIGNtc0NJRUxhYiBMYWJJbiwgTGFiT3V0OworICAgIGNtc0NJRVhZWiAgQmxhY2tYWVo7CisKKyAgICAgLy8gSXMgdGhlIGludGVudCBzdXBwb3J0ZWQgYnkgdGhlIHByb2ZpbGU/CisgICAgaWYgKCFjbXNJc0ludGVudFN1cHBvcnRlZChoUHJvZmlsZSwgSU5URU5UX1BFUkNFUFRVQUwsIExDTVNfVVNFRF9BU19JTlBVVCkpIHsKKworICAgICAgICBCbGFja1BvaW50IC0+IFggPSBCbGFja1BvaW50IC0+WSA9IEJsYWNrUG9pbnQgLT4gWiA9IDAuMDsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaFJvdW5kVHJpcCA9IENyZWF0ZVJvdW5kdHJpcFhGb3JtKGhQcm9maWxlLCBJTlRFTlRfUEVSQ0VQVFVBTCk7CisgICAgaWYgKGhSb3VuZFRyaXAgPT0gTlVMTCkgeworICAgICAgICBCbGFja1BvaW50IC0+IFggPSBCbGFja1BvaW50IC0+WSA9IEJsYWNrUG9pbnQgLT4gWiA9IDAuMDsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIExhYkluLkwgPSBMYWJJbi5hID0gTGFiSW4uYiA9IDA7CisgICAgY21zRG9UcmFuc2Zvcm0oaFJvdW5kVHJpcCwgJkxhYkluLCAmTGFiT3V0LCAxKTsKKworICAgIC8vIENsaXAgTGFiIHRvIHJlYXNvbmFibGUgbGltaXRzCisgICAgaWYgKExhYk91dC5MID4gNTApIExhYk91dC5MID0gNTA7CisgICAgTGFiT3V0LmEgPSBMYWJPdXQuYiA9IDA7CisKKyAgICBjbXNEZWxldGVUcmFuc2Zvcm0oaFJvdW5kVHJpcCk7CisKKyAgICAvLyBDb252ZXJ0IGl0IHRvIFhZWgorICAgIGNtc0xhYjJYWVooTlVMTCwgJkJsYWNrWFlaLCAmTGFiT3V0KTsKKworICAgIGlmIChCbGFja1BvaW50ICE9IE5VTEwpCisgICAgICAgICpCbGFja1BvaW50ID0gQmxhY2tYWVo7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBzaG91bGRuJ3QgZXhpc3QgYXQgYWxsIC0tIHRoZXJlIGlzIHN1Y2ggcXVhbnRpdHkgb2YgYnJva2VuCisvLyBwcm9maWxlcyBvbiBibGFjayBwb2ludCB0YWcsIHRoYXQgd2UgbXVzdCBzb21laG93IGZpeCBjaHJvbWF0aWNpdHkgdG8KKy8vIGF2b2lkIGh1Z2UgdGludCB3aGVuIGRvaW5nIEJsYWNrIHBvaW50IGNvbXBlbnNhdGlvbi4gVGhpcyBmdW5jdGlvbiBkb2VzCisvLyBqdXN0IHRoYXQuIFRoZXJlIGlzIGEgc3BlY2lhbCBmbGFnIGZvciB1c2luZyBibGFjayBwb2ludCB0YWcsIGJ1dCB0dXJuZWQKKy8vIG9mZiBieSBkZWZhdWx0IGJlY2F1c2UgaXQgaXMgYm9ndXMgb24gbW9zdCBwcm9maWxlcy4gVGhlIGRldGVjdGlvbiBhbGdvcml0aG0KKy8vIGludm9sdmVzIHRvIHR1cm4gQlAgdG8gbmV1dHJhbCBhbmQgdG8gdXNlIG9ubHkgTCBjb21wb25lbnQuCitjbXNCb29sIENNU0VYUE9SVCBjbXNEZXRlY3RCbGFja1BvaW50KGNtc0NJRVhZWiogQmxhY2tQb2ludCwgY21zSFBST0ZJTEUgaFByb2ZpbGUsIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKQoreworICAgIGNtc1Byb2ZpbGVDbGFzc1NpZ25hdHVyZSBkZXZDbGFzczsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgZGV2aWNlIGNsYXNzIGlzIGFkZXF1YXRlCisgICAgZGV2Q2xhc3MgPSBjbXNHZXREZXZpY2VDbGFzcyhoUHJvZmlsZSk7CisgICAgaWYgKGRldkNsYXNzID09IGNtc1NpZ0xpbmtDbGFzcyB8fAorICAgICAgICBkZXZDbGFzcyA9PSBjbXNTaWdBYnN0cmFjdENsYXNzIHx8CisgICAgICAgIGRldkNsYXNzID09IGNtc1NpZ05hbWVkQ29sb3JDbGFzcykgeworICAgICAgICAgICAgQmxhY2tQb2ludCAtPiBYID0gQmxhY2tQb2ludCAtPlkgPSBCbGFja1BvaW50IC0+IFogPSAwLjA7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIGludGVudCBpcyBhZGVxdWF0ZQorICAgIGlmIChJbnRlbnQgIT0gSU5URU5UX1BFUkNFUFRVQUwgJiYKKyAgICAgICAgSW50ZW50ICE9IElOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUMgJiYKKyAgICAgICAgSW50ZW50ICE9IElOVEVOVF9TQVRVUkFUSU9OKSB7CisgICAgICAgICAgICBCbGFja1BvaW50IC0+IFggPSBCbGFja1BvaW50IC0+WSA9IEJsYWNrUG9pbnQgLT4gWiA9IDAuMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyB2NCArIHBlcmNlcHR1YWwgJiBzYXR1cmF0aW9uIGludGVudHMgZG9lcyBoYXZlIGl0cyBvd24gYmxhY2sgcG9pbnQsIGFuZCBpdCBpcworICAgIC8vIHdlbGwgc3BlY2lmaWVkIGVub3VnaCB0byB1c2UgaXQuIEJsYWNrIHBvaW50IHRhZyBpcyBkZXByZWNhdGVkIGluIFY0LgorICAgIGlmICgoY21zR2V0RW5jb2RlZElDQ3ZlcnNpb24oaFByb2ZpbGUpID49IDB4NDAwMDAwMCkgJiYKKyAgICAgICAgKEludGVudCA9PSBJTlRFTlRfUEVSQ0VQVFVBTCB8fCBJbnRlbnQgPT0gSU5URU5UX1NBVFVSQVRJT04pKSB7CisKKyAgICAgICAgICAgIC8vIE1hdHJpeCBzaGFwZXIgc2hhcmUgTVJDICYgcGVyY2VwdHVhbCBpbnRlbnRzCisgICAgICAgICAgICBpZiAoY21zSXNNYXRyaXhTaGFwZXIoaFByb2ZpbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBCbGFja1BvaW50QXNEYXJrZXJDb2xvcmFudChoUHJvZmlsZSwgSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQywgQmxhY2tQb2ludCwgMCk7CisKKyAgICAgICAgICAgIC8vIEdldCBQZXJjZXB0dWFsIGJsYWNrIG91dCBvZiB2NCBwcm9maWxlcy4gVGhhdCBpcyBmaXhlZCBmb3IgcGVyY2VwdHVhbCAmIHNhdHVyYXRpb24gaW50ZW50cworICAgICAgICAgICAgQmxhY2tQb2ludCAtPiBYID0gY21zUEVSQ0VQVFVBTF9CTEFDS19YOworICAgICAgICAgICAgQmxhY2tQb2ludCAtPiBZID0gY21zUEVSQ0VQVFVBTF9CTEFDS19ZOworICAgICAgICAgICAgQmxhY2tQb2ludCAtPiBaID0gY21zUEVSQ0VQVFVBTF9CTEFDS19aOworCisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKworI2lmZGVmIENNU19VU0VfUFJPRklMRV9CTEFDS19QT0lOVF9UQUcKKworICAgIC8vIHYyLCB2NCByZWwvYWJzIGNvbG9yaW1ldHJpYworICAgIGlmIChjbXNJc1RhZyhoUHJvZmlsZSwgY21zU2lnTWVkaWFCbGFja1BvaW50VGFnKSAmJgorICAgICAgICBJbnRlbnQgPT0gSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQykgeworCisgICAgICAgICAgICBjbXNDSUVYWVogKkJsYWNrUHRyLCBCbGFja1hZWiwgVW50cnVzdGVkQmxhY2tQb2ludCwgVHJ1c3RlZEJsYWNrUG9pbnQsIE1lZGlhV2hpdGU7CisgICAgICAgICAgICBjbXNDSUVMYWIgTGFiOworCisgICAgICAgICAgICAvLyBJZiBibGFjayBwb2ludCBpcyBzcGVjaWZpZWQsIHRoZW4gdXNlIGl0LAorCisgICAgICAgICAgICBCbGFja1B0ciA9IGNtc1JlYWRUYWcoaFByb2ZpbGUsIGNtc1NpZ01lZGlhQmxhY2tQb2ludFRhZyk7CisgICAgICAgICAgICBpZiAoQmxhY2tQdHIgIT0gTlVMTCkgeworCisgICAgICAgICAgICAgICAgQmxhY2tYWVogPSAqQmxhY2tQdHI7CisgICAgICAgICAgICAgICAgX2Ntc1JlYWRNZWRpYVdoaXRlUG9pbnQoJk1lZGlhV2hpdGUsIGhQcm9maWxlKTsKKworICAgICAgICAgICAgICAgIC8vIEJsYWNrIHBvaW50IGlzIGFic29sdXRlIFhZWiwgc28gYWRhcHQgdG8gRDUwIHRvIGdldCBQQ1MgdmFsdWUKKyAgICAgICAgICAgICAgICBjbXNBZGFwdFRvSWxsdW1pbmFudCgmVW50cnVzdGVkQmxhY2tQb2ludCwgJk1lZGlhV2hpdGUsIGNtc0Q1MF9YWVooKSwgJkJsYWNrWFlaKTsKKworICAgICAgICAgICAgICAgIC8vIEZvcmNlIGE9Yj0wIHRvIGdldCByaWQgb2YgYW55IGNocm9tYQorICAgICAgICAgICAgICAgIGNtc1hZWjJMYWIoTlVMTCwgJkxhYiwgJlVudHJ1c3RlZEJsYWNrUG9pbnQpOworICAgICAgICAgICAgICAgIExhYi5hID0gTGFiLmIgPSAwOworICAgICAgICAgICAgICAgIGlmIChMYWIuTCA+IDUwKSBMYWIuTCA9IDUwOyAvLyBDbGlwIHRvIEwqIDw9IDUwCisgICAgICAgICAgICAgICAgY21zTGFiMlhZWihOVUxMLCAmVHJ1c3RlZEJsYWNrUG9pbnQsICZMYWIpOworCisgICAgICAgICAgICAgICAgaWYgKEJsYWNrUG9pbnQgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgKkJsYWNrUG9pbnQgPSBUcnVzdGVkQmxhY2tQb2ludDsKKworICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgLy8gVGhhdCBpcyBhYm91dCB2MiBwcm9maWxlcy4KKworICAgIC8vIElmIG91dHB1dCBwcm9maWxlLCBkaXNjb3VudCBpbmstbGltaXRpbmcgYW5kIHRoYXQncyBhbGwKKyAgICBpZiAoSW50ZW50ID09IElOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUMgJiYKKyAgICAgICAgKGNtc0dldERldmljZUNsYXNzKGhQcm9maWxlKSA9PSBjbXNTaWdPdXRwdXRDbGFzcykgJiYKKyAgICAgICAgKGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGUpICA9PSBjbXNTaWdDbXlrRGF0YSkpCisgICAgICAgIHJldHVybiBCbGFja1BvaW50VXNpbmdQZXJjZXB0dWFsQmxhY2soQmxhY2tQb2ludCwgaFByb2ZpbGUpOworCisgICAgLy8gTm9wZSwgY29tcHV0ZSBCUCB1c2luZyBjdXJyZW50IGludGVudC4KKyAgICByZXR1cm4gQmxhY2tQb2ludEFzRGFya2VyQ29sb3JhbnQoaFByb2ZpbGUsIEludGVudCwgQmxhY2tQb2ludCwgZHdGbGFncyk7Cit9CisKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gTGVhc3QgU3F1YXJlcyBGaXQgb2YgYSBRdWFkcmF0aWMgQ3VydmUgdG8gRGF0YQorLy8gaHR0cDovL3d3dy5wZXJzb25hbC5wc3UuZWR1L2pobS9mOTAvbGVjdHVyZXMvbHNxMi5odG1sCisKK3N0YXRpYworY21zRmxvYXQ2NE51bWJlciBSb290T2ZMZWFzdFNxdWFyZXNGaXRRdWFkcmF0aWNDdXJ2ZShpbnQgbiwgY21zRmxvYXQ2NE51bWJlciB4W10sIGNtc0Zsb2F0NjROdW1iZXIgeVtdKQoreworICAgIGRvdWJsZSBzdW1feCA9IDAsIHN1bV94MiA9IDAsIHN1bV94MyA9IDAsIHN1bV94NCA9IDA7CisgICAgZG91YmxlIHN1bV95ID0gMCwgc3VtX3l4ID0gMCwgc3VtX3l4MiA9IDA7CisgICAgZG91YmxlIGQsIGEsIGIsIGM7CisgICAgaW50IGk7CisgICAgY21zTUFUMyBtOworICAgIGNtc1ZFQzMgdiwgcmVzOworCisgICAgaWYgKG4gPCA0KSByZXR1cm4gMDsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisKKyAgICAgICAgZG91YmxlIHhuID0geFtpXTsKKyAgICAgICAgZG91YmxlIHluID0geVtpXTsKKworICAgICAgICBzdW1feCAgKz0geG47CisgICAgICAgIHN1bV94MiArPSB4bip4bjsKKyAgICAgICAgc3VtX3gzICs9IHhuKnhuKnhuOworICAgICAgICBzdW1feDQgKz0geG4qeG4qeG4qeG47CisKKyAgICAgICAgc3VtX3kgKz0geW47CisgICAgICAgIHN1bV95eCArPSB5bip4bjsKKyAgICAgICAgc3VtX3l4MiArPSB5bip4bip4bjsKKyAgICB9CisKKyAgICBfY21zVkVDM2luaXQoJm0udlswXSwgbiwgICAgICBzdW1feCwgIHN1bV94Mik7CisgICAgX2Ntc1ZFQzNpbml0KCZtLnZbMV0sIHN1bV94LCAgc3VtX3gyLCBzdW1feDMpOworICAgIF9jbXNWRUMzaW5pdCgmbS52WzJdLCBzdW1feDIsIHN1bV94Mywgc3VtX3g0KTsKKworICAgIF9jbXNWRUMzaW5pdCgmdiwgc3VtX3ksIHN1bV95eCwgc3VtX3l4Mik7CisKKyAgICBpZiAoIV9jbXNNQVQzc29sdmUoJnJlcywgJm0sICZ2KSkgcmV0dXJuIDA7CisKKyAgICAgIAorICAgIGEgPSByZXMublsyXTsKKyAgICBiID0gcmVzLm5bMV07CisgICAgYyA9IHJlcy5uWzBdOworCisgICAgaWYgKGZhYnMoYSkgPCAxLjBFLTEwKSB7CisgICAgCisgICAgICAgIHJldHVybiBjbXNtaW4oMCwgY21zbWF4KDUwLCAtYy9iICkpOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICAgZCA9IGIqYiAtIDQuMCAqIGEgKiBjOworICAgICAgICAgaWYgKGQgPD0gMCkgeworICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQorICAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgICBkb3VibGUgcnQgPSAoLWIgKyBzcXJ0KGQpKSAvICgyLjAgKiBhKTsKKworICAgICAgICAgICAgIHJldHVybiBjbXNtYXgoMCwgY21zbWluKDUwLCBydCkpOworICAgICAgICAgfQorICAgfQorCit9CisKKy8qCitzdGF0aWMKK2Ntc0Jvb2wgSXNNb25vdG9uaWMoaW50IG4sIGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIgVGFibGVbXSkKK3sKKyAgICBpbnQgaTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGxhc3Q7CisKKyAgICBsYXN0ID0gVGFibGVbbi0xXTsKKworICAgIGZvciAoaSA9IG4tMjsgaSA+PSAwOyAtLWkpIHsKKworICAgICAgICBpZiAoVGFibGVbaV0gPiBsYXN0KQorCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxhc3QgPSBUYWJsZVtpXTsKKworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorKi8KKworLy8gQ2FsY3VsYXRlcyB0aGUgYmxhY2sgcG9pbnQgb2YgYSBkZXN0aW5hdGlvbiBwcm9maWxlLgorLy8gVGhpcyBhbGdvcml0aG0gY29tZXMgZnJvbSB0aGUgQWRvYmUgcGFwZXIgZGlzY2xvc2luZyBpdHMgYmxhY2sgcG9pbnQgY29tcGVuc2F0aW9uIG1ldGhvZC4KK2Ntc0Jvb2wgQ01TRVhQT1JUIGNtc0RldGVjdERlc3RpbmF0aW9uQmxhY2tQb2ludChjbXNDSUVYWVoqIEJsYWNrUG9pbnQsIGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjbXNVSW50MzJOdW1iZXIgSW50ZW50LCBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykKK3sKKyAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENvbG9yU3BhY2U7CisgICAgY21zSFRSQU5TRk9STSBoUm91bmRUcmlwID0gTlVMTDsKKyAgICBjbXNDSUVMYWIgSW5pdGlhbExhYiwgZGVzdExhYiwgTGFiOworICAgIGNtc0Zsb2F0NjROdW1iZXIgaW5SYW1wWzI1Nl0sIG91dFJhbXBbMjU2XTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIE1pbkwsIE1heEw7CisgICAgY21zQm9vbCBOZWFybHlTdHJhaWdodE1pZHJhbmdlID0gVFJVRTsgIAorICAgIGNtc0Zsb2F0NjROdW1iZXIgeVJhbXBbMjU2XTsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHhbMjU2XSwgeVsyNTZdOworICAgIGNtc0Zsb2F0NjROdW1iZXIgbG8sIGhpOworICAgIGludCBuLCBsOworICAgIGNtc1Byb2ZpbGVDbGFzc1NpZ25hdHVyZSBkZXZDbGFzczsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgZGV2aWNlIGNsYXNzIGlzIGFkZXF1YXRlCisgICAgZGV2Q2xhc3MgPSBjbXNHZXREZXZpY2VDbGFzcyhoUHJvZmlsZSk7CisgICAgaWYgKGRldkNsYXNzID09IGNtc1NpZ0xpbmtDbGFzcyB8fAorICAgICAgICBkZXZDbGFzcyA9PSBjbXNTaWdBYnN0cmFjdENsYXNzIHx8CisgICAgICAgIGRldkNsYXNzID09IGNtc1NpZ05hbWVkQ29sb3JDbGFzcykgeworICAgICAgICAgICAgQmxhY2tQb2ludCAtPiBYID0gQmxhY2tQb2ludCAtPlkgPSBCbGFja1BvaW50IC0+IFogPSAwLjA7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIGludGVudCBpcyBhZGVxdWF0ZQorICAgIGlmIChJbnRlbnQgIT0gSU5URU5UX1BFUkNFUFRVQUwgJiYKKyAgICAgICAgSW50ZW50ICE9IElOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUMgJiYKKyAgICAgICAgSW50ZW50ICE9IElOVEVOVF9TQVRVUkFUSU9OKSB7CisgICAgICAgICAgICBCbGFja1BvaW50IC0+IFggPSBCbGFja1BvaW50IC0+WSA9IEJsYWNrUG9pbnQgLT4gWiA9IDAuMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKworICAgIC8vIHY0ICsgcGVyY2VwdHVhbCAmIHNhdHVyYXRpb24gaW50ZW50cyBkb2VzIGhhdmUgaXRzIG93biBibGFjayBwb2ludCwgYW5kIGl0IGlzCisgICAgLy8gd2VsbCBzcGVjaWZpZWQgZW5vdWdoIHRvIHVzZSBpdC4gQmxhY2sgcG9pbnQgdGFnIGlzIGRlcHJlY2F0ZWQgaW4gVjQuCisgICAgaWYgKChjbXNHZXRFbmNvZGVkSUNDdmVyc2lvbihoUHJvZmlsZSkgPj0gMHg0MDAwMDAwKSAmJgorICAgICAgICAoSW50ZW50ID09IElOVEVOVF9QRVJDRVBUVUFMIHx8IEludGVudCA9PSBJTlRFTlRfU0FUVVJBVElPTikpIHsKKworICAgICAgICAgICAgLy8gTWF0cml4IHNoYXBlciBzaGFyZSBNUkMgJiBwZXJjZXB0dWFsIGludGVudHMKKyAgICAgICAgICAgIGlmIChjbXNJc01hdHJpeFNoYXBlcihoUHJvZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEJsYWNrUG9pbnRBc0RhcmtlckNvbG9yYW50KGhQcm9maWxlLCBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDLCBCbGFja1BvaW50LCAwKTsKKworICAgICAgICAgICAgLy8gR2V0IFBlcmNlcHR1YWwgYmxhY2sgb3V0IG9mIHY0IHByb2ZpbGVzLiBUaGF0IGlzIGZpeGVkIGZvciBwZXJjZXB0dWFsICYgc2F0dXJhdGlvbiBpbnRlbnRzCisgICAgICAgICAgICBCbGFja1BvaW50IC0+IFggPSBjbXNQRVJDRVBUVUFMX0JMQUNLX1g7CisgICAgICAgICAgICBCbGFja1BvaW50IC0+IFkgPSBjbXNQRVJDRVBUVUFMX0JMQUNLX1k7CisgICAgICAgICAgICBCbGFja1BvaW50IC0+IFogPSBjbXNQRVJDRVBUVUFMX0JMQUNLX1o7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKworICAgIC8vIENoZWNrIGlmIHRoZSBwcm9maWxlIGlzIGx1dCBiYXNlZCBhbmQgZ3JheSwgcmdiIG9yIGNteWsgKDcuMiBpbiBBZG9iZSdzIGRvY3VtZW50KQorICAgIENvbG9yU3BhY2UgPSBjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlKTsKKyAgICBpZiAoIWNtc0lzQ0xVVChoUHJvZmlsZSwgSW50ZW50LCBMQ01TX1VTRURfQVNfT1VUUFVUICkgfHwKKyAgICAgICAgKENvbG9yU3BhY2UgIT0gY21zU2lnR3JheURhdGEgJiYKKyAgICAgICAgIENvbG9yU3BhY2UgIT0gY21zU2lnUmdiRGF0YSAgJiYKKyAgICAgICAgIENvbG9yU3BhY2UgIT0gY21zU2lnQ215a0RhdGEpKSB7CisKKyAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBoYW5kbGUgYXMgaW5wdXQgY2FzZQorICAgICAgICByZXR1cm4gY21zRGV0ZWN0QmxhY2tQb2ludChCbGFja1BvaW50LCBoUHJvZmlsZSwgSW50ZW50LCBkd0ZsYWdzKTsKKyAgICB9CisKKyAgICAvLyBJdCBpcyBvbmUgb2YgdGhlIHZhbGlkIGNhc2VzISwgdXNlIEFkb2JlIGFsZ29yaXRobQorCisgICAgCisgICAgLy8gU2V0IGEgZmlyc3QgZ3Vlc3MsIHRoYXQgc2hvdWxkIHdvcmsgb24gZ29vZCBwcm9maWxlcy4KKyAgICBpZiAoSW50ZW50ID09IElOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUMpIHsKKworICAgICAgICBjbXNDSUVYWVogSW5pWFlaOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBpbml0aWFsIExhYiBhcyBzb3VyY2UgYmxhY2sgcG9pbnQKKyAgICAgICAgaWYgKCFjbXNEZXRlY3RCbGFja1BvaW50KCZJbmlYWVosIGhQcm9maWxlLCBJbnRlbnQsIGR3RmxhZ3MpKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICAvLyBjb252ZXJ0IHRoZSBYWVogdG8gbGFiCisgICAgICAgIGNtc1hZWjJMYWIoTlVMTCwgJkluaXRpYWxMYWIsICZJbmlYWVopOworCisgICAgfSBlbHNlIHsKKworICAgICAgICAvLyBzZXQgdGhlIGluaXRpYWwgTGFiIHRvIHplcm8sIHRoYXQgc2hvdWxkIGJlIHRoZSBibGFjayBwb2ludCBmb3IgcGVyY2VwdHVhbCBhbmQgc2F0dXJhdGlvbgorICAgICAgICBJbml0aWFsTGFiLkwgPSAwOworICAgICAgICBJbml0aWFsTGFiLmEgPSAwOworICAgICAgICBJbml0aWFsTGFiLmIgPSAwOworICAgIH0KKworCisgICAgLy8gU3RlcCAyCisgICAgLy8gPT09PT09CisKKyAgICAvLyBDcmVhdGUgYSByb3VuZHRyaXAuIERlZmluZSBhIFRyYW5zZm9ybSBCVCBmb3IgYWxsIHggaW4gTCphKmIqCisgICAgaFJvdW5kVHJpcCA9IENyZWF0ZVJvdW5kdHJpcFhGb3JtKGhQcm9maWxlLCBJbnRlbnQpOworICAgIGlmIChoUm91bmRUcmlwID09IE5VTEwpICByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBDb21wdXRlIHJhbXBzCisKKyAgICBmb3IgKGw9MDsgbCA8IDI1NjsgbCsrKSB7CisKKyAgICAgICAgTGFiLkwgPSAoY21zRmxvYXQ2NE51bWJlcikgKGwgKiAxMDAuMCkgLyAyNTUuMDsKKyAgICAgICAgTGFiLmEgPSBjbXNtaW4oNTAsIGNtc21heCgtNTAsIEluaXRpYWxMYWIuYSkpOworICAgICAgICBMYWIuYiA9IGNtc21pbig1MCwgY21zbWF4KC01MCwgSW5pdGlhbExhYi5iKSk7CisKKyAgICAgICAgY21zRG9UcmFuc2Zvcm0oaFJvdW5kVHJpcCwgJkxhYiwgJmRlc3RMYWIsIDEpOworCisgICAgICAgIGluUmFtcFtsXSAgPSBMYWIuTDsKKyAgICAgICAgb3V0UmFtcFtsXSA9IGRlc3RMYWIuTDsKKyAgICB9CisKKyAgICAvLyBNYWtlIG1vbm90b25pYworICAgIGZvciAobCA9IDI1NDsgbCA+IDA7IC0tbCkgeworICAgICAgICBvdXRSYW1wW2xdID0gY21zbWluKG91dFJhbXBbbF0sIG91dFJhbXBbbCsxXSk7CisgICAgfQorCisgICAgLy8gQ2hlY2sKKyAgICBpZiAoISAob3V0UmFtcFswXSA8IG91dFJhbXBbMjU1XSkpIHsKKworICAgICAgICBjbXNEZWxldGVUcmFuc2Zvcm0oaFJvdW5kVHJpcCk7CisgICAgICAgIEJsYWNrUG9pbnQgLT4gWCA9IEJsYWNrUG9pbnQgLT5ZID0gQmxhY2tQb2ludCAtPiBaID0gMC4wOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisKKyAgICAvLyBUZXN0IGZvciBtaWQgcmFuZ2Ugc3RyYWlnaHQgKG9ubHkgb24gcmVsYXRpdmUgY29sb3JpbWV0cmljKQorCisgICAgTmVhcmx5U3RyYWlnaHRNaWRyYW5nZSA9IFRSVUU7CisgICAgTWluTCA9IG91dFJhbXBbMF07IE1heEwgPSBvdXRSYW1wWzI1NV07CisgICAgaWYgKEludGVudCA9PSBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDKSB7CisgICAgICAKKyAgICAgICAgZm9yIChsPTA7IGwgPCAyNTY7IGwrKykgeworCisgICAgICAgICAgICBpZiAoISAoKGluUmFtcFtsXSA8PSBNaW5MICsgMC4yICogKE1heEwgLSBNaW5MKSApIHx8ICAgCisgICAgICAgICAgICAgICAgKGZhYnMoaW5SYW1wW2xdIC0gb3V0UmFtcFtsXSkgPCA0LjAgKSkpCisgICAgICAgICAgICAgICAgTmVhcmx5U3RyYWlnaHRNaWRyYW5nZSA9IEZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIG1pZCByYW5nZSBpcyBzdHJhaWdodCAoYXMgZGV0ZXJtaW5lZCBhYm92ZSkgdGhlbiB0aGUgCisgICAgICAgIC8vIERlc3RpbmF0aW9uQmxhY2tQb2ludCBzaGFsbCBiZSB0aGUgc2FtZSBhcyBpbml0aWFsTGFiLiAKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgRGVzdGluYXRpb25CbGFja1BvaW50IHNoYWxsIGJlIGRldGVybWluZWQgCisgICAgICAgIC8vIHVzaW5nIGN1cnZlIGZpdHRpbmcuCisKKyAgICAgICAgaWYgKE5lYXJseVN0cmFpZ2h0TWlkcmFuZ2UpIHsKKworICAgICAgICAgICAgY21zTGFiMlhZWihOVUxMLCBCbGFja1BvaW50LCAmSW5pdGlhbExhYik7CisgICAgICAgICAgICBjbXNEZWxldGVUcmFuc2Zvcm0oaFJvdW5kVHJpcCk7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgIH0KKworIAorICAgIC8vIGN1cnZlIGZpdHRpbmc6IFRoZSByb3VuZC10cmlwIGN1cnZlIG5vcm1hbGx5IGxvb2tzIGxpa2UgYSBuZWFybHkgY29uc3RhbnQgc2VjdGlvbiBhdCB0aGUgYmxhY2sgcG9pbnQsCisgICAgLy8gd2l0aCBhIGNvcm5lciBhbmQgYSBuZWFybHkgc3RyYWlnaHQgbGluZSB0byB0aGUgd2hpdGUgcG9pbnQuCisgIAorICAgIGZvciAobD0wOyBsIDwgMjU2OyBsKyspIHsKKyAgICAKKyAgICAgICAgeVJhbXBbbF0gPSAob3V0UmFtcFtsXSAtIE1pbkwpIC8gKE1heEwgLSBNaW5MKTsKKyAgICB9CisKKyAgICAvLyBmaW5kIHRoZSBibGFjayBwb2ludCB1c2luZyB0aGUgbGVhc3Qgc3F1YXJlcyBlcnJvciBxdWFkcmF0aWMgY3VydmUgZml0dGluZworCisgICAgaWYgKEludGVudCA9PSBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDKSB7CisgICAgICAgIGxvID0gMC4xOworICAgICAgICBoaSA9IDAuNTsKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgICAgLy8gUGVyY2VwdHVhbCBhbmQgc2F0dXJhdGlvbgorICAgICAgICBsbyA9IDAuMDM7CisgICAgICAgIGhpID0gMC4yNTsKKyAgICB9CisKKyAgICAvLyBDYXB0dXJlIHNoYWRvdyBwb2ludHMgZm9yIHRoZSBmaXR0aW5nLgorICAgIG4gPSAwOworICAgIGZvciAobD0wOyBsIDwgMjU2OyBsKyspIHsKKyAgICAKKyAgICAgICAgY21zRmxvYXQ2NE51bWJlciBmZiA9IHlSYW1wW2xdOworCisgICAgICAgIGlmIChmZiA+PSBsbyAmJiBmZiA8IGhpKSB7CisgICAgICAgICAgICB4W25dID0gaW5SYW1wW2xdOworICAgICAgICAgICAgeVtuXSA9IHlSYW1wW2xdOworICAgICAgICAgICAgbisrOworICAgICAgICB9ICAgIAorICAgIH0KKworICAgIAorICAgIC8vIE5vIHN1aXRhYmxlIHBvaW50cworICAgIGlmIChuIDwgMyApIHsKKyAgICAgICAgY21zRGVsZXRlVHJhbnNmb3JtKGhSb3VuZFRyaXApOworICAgICAgICBCbGFja1BvaW50IC0+IFggPSBCbGFja1BvaW50IC0+WSA9IEJsYWNrUG9pbnQgLT4gWiA9IDAuMDsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAKKyAgICAvLyBmaXQgYW5kIGdldCB0aGUgdmVydGV4IG9mIHF1YWRyYXRpYyBjdXJ2ZQorICAgIExhYi5MID0gUm9vdE9mTGVhc3RTcXVhcmVzRml0UXVhZHJhdGljQ3VydmUobiwgeCwgeSk7CisKKyAgICBpZiAoTGFiLkwgPCAwLjApIHsgLy8gY2xpcCB0byB6ZXJvIEwqIGlmIHRoZSB2ZXJ0ZXggaXMgbmVnYXRpdmUKKyAgICAgICAgTGFiLkwgPSAwOworICAgIH0KKworICAgIExhYi5hID0gSW5pdGlhbExhYi5hOworICAgIExhYi5iID0gSW5pdGlhbExhYi5iOworCisgICAgY21zTGFiMlhZWihOVUxMLCBCbGFja1BvaW50LCAmTGFiKTsKKworICAgIGNtc0RlbGV0ZVRyYW5zZm9ybShoUm91bmRUcmlwKTsKKyAgICByZXR1cm4gVFJVRTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNzbS5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3NtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgzNmUxNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXNzbS5jCkBAIC0wLDAgKzEsNzM0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSBNYXJ0aSBNYXJpYSBTYWd1ZXIKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlCisvLyBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTworLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKy8vIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKy8vIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisKKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIgorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBHYW11dCBib3VuZGFyeSBkZXNjcmlwdGlvbiBieSB1c2luZyBKYW4gTW9yb3ZpYydzIFNlZ21lbnQgbWF4aW1hIG1ldGhvZAorLy8gTWFueSB0aGFua3MgdG8gSmFuIGZvciBhbGxvd2luZyBtZSB0byB1c2UgaGlzIGFsZ29yaXRobS4KKworLy8gciA9IEMqCisvLyBhbHBoYSA9IEhhYgorLy8gdGhldGEgPSBMKgorCisjZGVmaW5lIFNFQ1RPUlMgMTYgICAgICAvLyBudW1iZXIgb2YgZGl2aXNpb25zIGluIGFscGhhIGFuZCB0aGV0YQorCisvLyBTcGhlcmljYWwgY29vcmRpbmF0ZXMKK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc0Zsb2F0NjROdW1iZXIgcjsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGFscGhhOworICAgIGNtc0Zsb2F0NjROdW1iZXIgdGhldGE7CisKK30gY21zU3BoZXJpY2FsOworCit0eXBlZGVmICBlbnVtIHsKKyAgICAgICAgR1BfRU1QVFksCisgICAgICAgIEdQX1NQRUNJRklFRCwKKyAgICAgICAgR1BfTU9ERUxFRAorCisgICAgfSBHREJQb2ludFR5cGU7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworCisgICAgR0RCUG9pbnRUeXBlIFR5cGU7CisgICAgY21zU3BoZXJpY2FsIHA7ICAgICAgICAgLy8gS2VlcCBhbHNvIGFscGhhICYgdGhldGEgb2YgbWF4aW11bQorCit9IGNtc0dEQlBvaW50OworCisKK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc0NvbnRleHQgQ29udGV4dElEOworICAgIGNtc0dEQlBvaW50IEdhbXV0W1NFQ1RPUlNdW1NFQ1RPUlNdOworCit9IGNtc0dEQjsKKworCisvLyBBIGxpbmUgdXNpbmcgdGhlIHBhcmFtZXRyaWMgZm9ybQorLy8gUCA9IGEgKyB0KnUKK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc1ZFQzMgYTsKKyAgICBjbXNWRUMzIHU7CisKK30gY21zTGluZTsKKworCisvLyBBIHBsYW5lIHVzaW5nIHRoZSBwYXJhbWV0cmljIGZvcm0KKy8vIFEgPSBiICsgcip2ICsgcyp3Cit0eXBlZGVmIHN0cnVjdCB7CisKKyAgICBjbXNWRUMzIGI7CisgICAgY21zVkVDMyB2OworICAgIGNtc1ZFQzMgdzsKKworfSBjbXNQbGFuZTsKKworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEFUQU4yKCkgd2hpY2ggYWx3YXlzIHJldHVybnMgZGVncmVlIHBvc2l0aXZlIG51bWJlcnMKKworc3RhdGljCitjbXNGbG9hdDY0TnVtYmVyIF9jbXNBdGFuMihjbXNGbG9hdDY0TnVtYmVyIHksIGNtc0Zsb2F0NjROdW1iZXIgeCkKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIGE7CisKKyAgICAvLyBEZWFsIHdpdGggdW5kZWZpbmVkIGNhc2UKKyAgICBpZiAoeCA9PSAwLjAgJiYgeSA9PSAwLjApIHJldHVybiAwOworCisgICAgYSA9IChhdGFuMih5LCB4KSAqIDE4MC4wKSAvIE1fUEk7CisKKyAgICB3aGlsZSAoYSA8IDApIHsKKyAgICAgICAgYSArPSAzNjA7CisgICAgfQorCisgICAgcmV0dXJuIGE7Cit9CisKKy8vIENvbnZlcnQgdG8gc3BoZXJpY2FsIGNvb3JkaW5hdGVzCitzdGF0aWMKK3ZvaWQgVG9TcGhlcmljYWwoY21zU3BoZXJpY2FsKiBzcCwgY29uc3QgY21zVkVDMyogdikKK3sKKworICAgIGNtc0Zsb2F0NjROdW1iZXIgTCwgYSwgYjsKKworICAgIEwgPSB2IC0+bltWWF07CisgICAgYSA9IHYgLT5uW1ZZXTsKKyAgICBiID0gdiAtPm5bVlpdOworCisgICAgc3AgLT5yID0gc3FydCggTCpMICsgYSphICsgYipiICk7CisKKyAgIGlmIChzcCAtPnIgPT0gMCkgeworICAgICAgICBzcCAtPmFscGhhID0gc3AgLT50aGV0YSA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcCAtPmFscGhhID0gX2Ntc0F0YW4yKGEsIGIpOworICAgIHNwIC0+dGhldGEgPSBfY21zQXRhbjIoc3FydChhKmEgKyBiKmIpLCBMKTsKK30KKworCisvLyBDb252ZXJ0IHRvIGNhcnRlc2lhbiBmcm9tIHNwaGVyaWNhbAorc3RhdGljCit2b2lkIFRvQ2FydGVzaWFuKGNtc1ZFQzMqIHYsIGNvbnN0IGNtc1NwaGVyaWNhbCogc3ApCit7CisgICAgY21zRmxvYXQ2NE51bWJlciBzaW5fYWxwaGE7CisgICAgY21zRmxvYXQ2NE51bWJlciBjb3NfYWxwaGE7CisgICAgY21zRmxvYXQ2NE51bWJlciBzaW5fdGhldGE7CisgICAgY21zRmxvYXQ2NE51bWJlciBjb3NfdGhldGE7CisgICAgY21zRmxvYXQ2NE51bWJlciBMLCBhLCBiOworCisgICAgc2luX2FscGhhID0gc2luKChNX1BJICogc3AgLT5hbHBoYSkgLyAxODAuMCk7CisgICAgY29zX2FscGhhID0gY29zKChNX1BJICogc3AgLT5hbHBoYSkgLyAxODAuMCk7CisgICAgc2luX3RoZXRhID0gc2luKChNX1BJICogc3AgLT50aGV0YSkgLyAxODAuMCk7CisgICAgY29zX3RoZXRhID0gY29zKChNX1BJICogc3AgLT50aGV0YSkgLyAxODAuMCk7CisKKyAgICBhID0gc3AgLT5yICogc2luX3RoZXRhICogc2luX2FscGhhOworICAgIGIgPSBzcCAtPnIgKiBzaW5fdGhldGEgKiBjb3NfYWxwaGE7CisgICAgTCA9IHNwIC0+ciAqIGNvc190aGV0YTsKKworICAgIHYgLT5uW1ZYXSA9IEw7CisgICAgdiAtPm5bVlldID0gYTsKKyAgICB2IC0+bltWWl0gPSBiOworfQorCisKKy8vIFF1YW50aXplIHNlY3RvciBvZiBhIHNwaGVyaWNhbCBjb29yZGluYXRlLiBTYXR1cmF0ZSAzNjAsIDE4MCB0byBsYXN0IHNlY3RvcgorLy8gVGhlIGxpbWl0cyBhcmUgdGhlIGNlbnRlcnMgb2YgZWFjaCBzZWN0b3IsIHNvCitzdGF0aWMKK3ZvaWQgUXVhbnRpemVUb1NlY3Rvcihjb25zdCBjbXNTcGhlcmljYWwqIHNwLCBpbnQqIGFscGhhLCBpbnQqIHRoZXRhKQoreworICAgICphbHBoYSA9IChpbnQpIGZsb29yKCgoc3AtPmFscGhhICogKFNFQ1RPUlMpKSAvIDM2MC4wKSApOworICAgICp0aGV0YSA9IChpbnQpIGZsb29yKCgoc3AtPnRoZXRhICogKFNFQ1RPUlMpKSAvIDE4MC4wKSApOworCisgICAgaWYgKCphbHBoYSA+PSBTRUNUT1JTKQorICAgICAgICAqYWxwaGEgPSBTRUNUT1JTLTE7CisgICAgaWYgKCp0aGV0YSA+PSBTRUNUT1JTKQorICAgICAgICAqdGhldGEgPSBTRUNUT1JTLTE7Cit9CisKKworLy8gTGluZSBkZXRlcm1pbmVkIGJ5IDIgcG9pbnRzCitzdGF0aWMKK3ZvaWQgTGluZU9mMlBvaW50cyhjbXNMaW5lKiBsaW5lLCBjbXNWRUMzKiBhLCBjbXNWRUMzKiBiKQoreworCisgICAgX2Ntc1ZFQzNpbml0KCZsaW5lIC0+YSwgYSAtPm5bVlhdLCBhIC0+bltWWV0sIGEgLT5uW1ZaXSk7CisgICAgX2Ntc1ZFQzNpbml0KCZsaW5lIC0+dSwgYiAtPm5bVlhdIC0gYSAtPm5bVlhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgLT5uW1ZZXSAtIGEgLT5uW1ZZXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIC0+bltWWl0gLSBhIC0+bltWWl0pOworfQorCisKKy8vIEV2YWx1YXRlIHBhcmFtZXRyaWMgbGluZQorc3RhdGljCit2b2lkIEdldFBvaW50T2ZMaW5lKGNtc1ZFQzMqIHAsIGNvbnN0IGNtc0xpbmUqIGxpbmUsIGNtc0Zsb2F0NjROdW1iZXIgdCkKK3sKKyAgICBwIC0+bltWWF0gPSBsaW5lIC0+YS5uW1ZYXSArIHQgKiBsaW5lLT51Lm5bVlhdOworICAgIHAgLT5uW1ZZXSA9IGxpbmUgLT5hLm5bVlldICsgdCAqIGxpbmUtPnUubltWWV07CisgICAgcCAtPm5bVlpdID0gbGluZSAtPmEubltWWl0gKyB0ICogbGluZS0+dS5uW1ZaXTsKK30KKworCisKKy8qCisgICAgQ2xvc2VzdCBwb2ludCBpbiBzZWN0b3IgbGluZTEgdG8gc2VjdG9yIGxpbmUyIChib3RoIGFyZSBkZWZpbmVkIGFzIDAgPD10IDw9IDEpCisgICAgaHR0cDovL3NvZnRzdXJmZXIuY29tL0FyY2hpdmUvYWxnb3JpdGhtXzAxMDYvYWxnb3JpdGhtXzAxMDYuaHRtCisKKyAgICBDb3B5cmlnaHQgMjAwMSwgc29mdFN1cmZlciAod3d3LnNvZnRzdXJmZXIuY29tKQorICAgIFRoaXMgY29kZSBtYXkgYmUgZnJlZWx5IHVzZWQgYW5kIG1vZGlmaWVkIGZvciBhbnkgcHVycG9zZQorICAgIHByb3ZpZGluZyB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZSBpcyBpbmNsdWRlZCB3aXRoIGl0LgorICAgIFNvZnRTdXJmZXIgbWFrZXMgbm8gd2FycmFudHkgZm9yIHRoaXMgY29kZSwgYW5kIGNhbm5vdCBiZSBoZWxkCisgICAgbGlhYmxlIGZvciBhbnkgcmVhbCBvciBpbWFnaW5lZCBkYW1hZ2UgcmVzdWx0aW5nIGZyb20gaXRzIHVzZS4KKyAgICBVc2VycyBvZiB0aGlzIGNvZGUgbXVzdCB2ZXJpZnkgY29ycmVjdG5lc3MgZm9yIHRoZWlyIGFwcGxpY2F0aW9uLgorCisqLworCitzdGF0aWMKK2Ntc0Jvb2wgQ2xvc2VzdExpbmVUb0xpbmUoY21zVkVDMyogciwgY29uc3QgY21zTGluZSogbGluZTEsIGNvbnN0IGNtc0xpbmUqIGxpbmUyKQoreworICAgIGNtc0Zsb2F0NjROdW1iZXIgYSwgYiwgYywgZCwgZSwgRDsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHNjLCBzTiwgc0Q7CisgICAgY21zRmxvYXQ2NE51bWJlciB0YywgdE4sIHREOworICAgIGNtc1ZFQzMgdzA7CisKKyAgICBfY21zVkVDM21pbnVzKCZ3MCwgJmxpbmUxIC0+YSwgJmxpbmUyIC0+YSk7CisKKyAgICBhICA9IF9jbXNWRUMzZG90KCZsaW5lMSAtPnUsICZsaW5lMSAtPnUpOworICAgIGIgID0gX2Ntc1ZFQzNkb3QoJmxpbmUxIC0+dSwgJmxpbmUyIC0+dSk7CisgICAgYyAgPSBfY21zVkVDM2RvdCgmbGluZTIgLT51LCAmbGluZTIgLT51KTsKKyAgICBkICA9IF9jbXNWRUMzZG90KCZsaW5lMSAtPnUsICZ3MCk7CisgICAgZSAgPSBfY21zVkVDM2RvdCgmbGluZTIgLT51LCAmdzApOworCisgICAgRCAgPSBhKmMgLSBiICogYjsgICAgICAvLyBEZW5vbWluYXRvcgorICAgIHNEID0gdEQgPSBEOyAgICAgICAgICAgLy8gZGVmYXVsdCBzRCA9IEQgPj0gMAorCisgICAgaWYgKEQgPCAgTUFUUklYX0RFVF9UT0xFUkFOQ0UpIHsgICAvLyB0aGUgbGluZXMgYXJlIGFsbW9zdCBwYXJhbGxlbAorCisgICAgICAgIHNOID0gMC4wOyAgICAgICAgLy8gZm9yY2UgdXNpbmcgcG9pbnQgUDAgb24gc2VnbWVudCBTMQorICAgICAgICBzRCA9IDEuMDsgICAgICAgIC8vIHRvIHByZXZlbnQgcG9zc2libGUgZGl2aXNpb24gYnkgMC4wIGxhdGVyCisgICAgICAgIHROID0gZTsKKyAgICAgICAgdEQgPSBjOworICAgIH0KKyAgICBlbHNlIHsgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBjbG9zZXN0IHBvaW50cyBvbiB0aGUgaW5maW5pdGUgbGluZXMKKworICAgICAgICBzTiA9IChiKmUgLSBjKmQpOworICAgICAgICB0TiA9IChhKmUgLSBiKmQpOworCisgICAgICAgIGlmIChzTiA8IDAuMCkgeyAgICAgICAvLyBzYyA8IDAgPT4gdGhlIHM9MCBlZGdlIGlzIHZpc2libGUKKworICAgICAgICAgICAgc04gPSAwLjA7CisgICAgICAgICAgICB0TiA9IGU7CisgICAgICAgICAgICB0RCA9IGM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc04gPiBzRCkgeyAgIC8vIHNjID4gMSA9PiB0aGUgcz0xIGVkZ2UgaXMgdmlzaWJsZQorICAgICAgICAgICAgc04gPSBzRDsKKyAgICAgICAgICAgIHROID0gZSArIGI7CisgICAgICAgICAgICB0RCA9IGM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodE4gPCAwLjApIHsgICAgICAgICAgIC8vIHRjIDwgMCA9PiB0aGUgdD0wIGVkZ2UgaXMgdmlzaWJsZQorCisgICAgICAgIHROID0gMC4wOworICAgICAgICAvLyByZWNvbXB1dGUgc2MgZm9yIHRoaXMgZWRnZQorICAgICAgICBpZiAoLWQgPCAwLjApCisgICAgICAgICAgICBzTiA9IDAuMDsKKyAgICAgICAgZWxzZSBpZiAoLWQgPiBhKQorICAgICAgICAgICAgc04gPSBzRDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzTiA9IC1kOworICAgICAgICAgICAgc0QgPSBhOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHROID4gdEQpIHsgICAgICAvLyB0YyA+IDEgPT4gdGhlIHQ9MSBlZGdlIGlzIHZpc2libGUKKworICAgICAgICB0TiA9IHREOworCisgICAgICAgIC8vIHJlY29tcHV0ZSBzYyBmb3IgdGhpcyBlZGdlCisgICAgICAgIGlmICgoLWQgKyBiKSA8IDAuMCkKKyAgICAgICAgICAgIHNOID0gMDsKKyAgICAgICAgZWxzZSBpZiAoKC1kICsgYikgPiBhKQorICAgICAgICAgICAgc04gPSBzRDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzTiA9ICgtZCArIGIpOworICAgICAgICAgICAgc0QgPSBhOworICAgICAgICB9CisgICAgfQorICAgIC8vIGZpbmFsbHkgZG8gdGhlIGRpdmlzaW9uIHRvIGdldCBzYyBhbmQgdGMKKyAgICBzYyA9IChmYWJzKHNOKSA8IE1BVFJJWF9ERVRfVE9MRVJBTkNFID8gMC4wIDogc04gLyBzRCk7CisgICAgdGMgPSAoZmFicyh0TikgPCBNQVRSSVhfREVUX1RPTEVSQU5DRSA/IDAuMCA6IHROIC8gdEQpOworCisgICAgR2V0UG9pbnRPZkxpbmUociwgbGluZTEsIHNjKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXcmFwcGVyCisKKworLy8gQWxsb2NhdGUgJiBmcmVlIHN0cnVjdHVyZQorY21zSEFORExFICBDTVNFWFBPUlQgY21zR0JEQWxsb2MoY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgY21zR0RCKiBnYmQgPSAoY21zR0RCKikgX2Ntc01hbGxvY1plcm8oQ29udGV4dElELCBzaXplb2YoY21zR0RCKSk7CisgICAgaWYgKGdiZCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGdiZCAtPiBDb250ZXh0SUQgPSBDb250ZXh0SUQ7CisKKyAgICByZXR1cm4gKGNtc0hBTkRMRSkgZ2JkOworfQorCisKK3ZvaWQgQ01TRVhQT1JUIGNtc0dCREZyZWUoY21zSEFORExFIGhHQkQpCit7CisgICAgY21zR0RCKiBnYmQgPSAoY21zR0RCKikgaEdCRDsKKyAgICBpZiAoaEdCRCAhPSBOVUxMKQorICAgICAgICBfY21zRnJlZShnYmQtPkNvbnRleHRJRCwgKHZvaWQqKSBnYmQpOworfQorCisKKy8vIEF1eGlsaWFyIHRvIHJldHJpZXZlIGEgcG9pbnRlciB0byB0aGUgc2VnbWVudHIgY29udGFpbmluZyB0aGUgTGFiIHZhbHVlCitzdGF0aWMKK2Ntc0dEQlBvaW50KiBHZXRQb2ludChjbXNHREIqIGdiZCwgY29uc3QgY21zQ0lFTGFiKiBMYWIsIGNtc1NwaGVyaWNhbCogc3ApCit7CisgICAgY21zVkVDMyB2OworICAgIGludCBhbHBoYSwgdGhldGE7CisKKyAgICAvLyBIb3VzZWtlZXBpbmcKKyAgICBfY21zQXNzZXJ0KGdiZCAhPSBOVUxMKTsKKyAgICBfY21zQXNzZXJ0KExhYiAhPSBOVUxMKTsKKyAgICBfY21zQXNzZXJ0KHNwICE9IE5VTEwpOworCisgICAgLy8gQ2VudGVyIEwqIGJ5IHN1YnN0cmFjdGluZyBoYWxmIG9mIGl0cyBkb21haW4sIHRoYXQncyA1MAorICAgIF9jbXNWRUMzaW5pdCgmdiwgTGFiIC0+TCAtIDUwLjAsIExhYiAtPmEsIExhYiAtPmIpOworCisgICAgLy8gQ29udmVydCB0byBzcGhlcmljYWwgY29vcmRpbmF0ZXMKKyAgICBUb1NwaGVyaWNhbChzcCwgJnYpOworCisgICAgaWYgKHNwIC0+ciA8IDAgfHwgc3AgLT5hbHBoYSA8IDAgfHwgc3AtPnRoZXRhIDwgMCkgeworICAgICAgICAgY21zU2lnbmFsRXJyb3IoZ2JkIC0+Q29udGV4dElELCBjbXNFUlJPUl9SQU5HRSwgInNwaGVyaWNhbCB2YWx1ZSBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8vIE9uIHdoaWNoIHNlY3RvciBpdCBmYWxscz8KKyAgICBRdWFudGl6ZVRvU2VjdG9yKHNwLCAmYWxwaGEsICZ0aGV0YSk7CisKKyAgICBpZiAoYWxwaGEgPCAwIHx8IHRoZXRhIDwgMCB8fCBhbHBoYSA+PSBTRUNUT1JTIHx8IHRoZXRhID49IFNFQ1RPUlMpIHsKKyAgICAgICAgIGNtc1NpZ25hbEVycm9yKGdiZCAtPkNvbnRleHRJRCwgY21zRVJST1JfUkFOR0UsICIgcXVhZHJhbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBHZXQgcG9pbnRlciB0byB0aGUgc2VjdG9yCisgICAgcmV0dXJuICZnYmQgLT5HYW11dFt0aGV0YV1bYWxwaGFdOworfQorCisvLyBBZGQgYSBwb2ludCB0byBnYW11dCBkZXNjcmlwdG9yLiBQb2ludCB0byBhZGQgaXMgaW4gTGFiIGNvbG9yIHNwYWNlLgorLy8gR0JEIGlzIGNlbnRlcmVkIG9uIGE9Yj0wIGFuZCBMKj01MAorY21zQm9vbCBDTVNFWFBPUlQgY21zR0RCQWRkUG9pbnQoY21zSEFORExFIGhHQkQsIGNvbnN0IGNtc0NJRUxhYiogTGFiKQoreworICAgIGNtc0dEQiogZ2JkID0gKGNtc0dEQiopIGhHQkQ7CisgICAgY21zR0RCUG9pbnQqIHB0cjsKKyAgICBjbXNTcGhlcmljYWwgc3A7CisKKworICAgIC8vIEdldCBwb2ludGVyIHRvIHRoZSBzZWN0b3IKKyAgICBwdHIgPSBHZXRQb2ludChnYmQsIExhYiwgJnNwKTsKKyAgICBpZiAocHRyID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIC8vIElmIG5vIHNhbXBsZXMgYXQgdGhpcyBzZWN0b3IsIGFkZCBpdAorICAgIGlmIChwdHIgLT5UeXBlID09IEdQX0VNUFRZKSB7CisKKyAgICAgICAgcHRyIC0+IFR5cGUgPSBHUF9TUEVDSUZJRUQ7CisgICAgICAgIHB0ciAtPiBwICAgID0gc3A7CisgICAgfQorICAgIGVsc2UgeworCisKKyAgICAgICAgLy8gU3Vic3RpdHV0ZSBvbmx5IGlmIHJhZGl1cyBpcyBncmVhdGVyCisgICAgICAgIGlmIChzcC5yID4gcHRyIC0+IHAucikgeworCisgICAgICAgICAgICAgICAgcHRyIC0+IFR5cGUgPSBHUF9TUEVDSUZJRUQ7CisgICAgICAgICAgICAgICAgcHRyIC0+IHAgICAgPSBzcDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisvLyBDaGVjayBpZiBhIGdpdmVuIHBvaW50IGZhbGxzIGluc2lkZSBnYW11dAorY21zQm9vbCBDTVNFWFBPUlQgY21zR0RCQ2hlY2tQb2ludChjbXNIQU5ETEUgaEdCRCwgY29uc3QgY21zQ0lFTGFiKiBMYWIpCit7CisgICAgY21zR0RCKiBnYmQgPSAoY21zR0RCKikgaEdCRDsKKyAgICBjbXNHREJQb2ludCogcHRyOworICAgIGNtc1NwaGVyaWNhbCBzcDsKKworICAgIC8vIEdldCBwb2ludGVyIHRvIHRoZSBzZWN0b3IKKyAgICBwdHIgPSBHZXRQb2ludChnYmQsIExhYiwgJnNwKTsKKyAgICBpZiAocHRyID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIC8vIElmIG5vIHNhbXBsZXMgYXQgdGhpcyBzZWN0b3IsIHJldHVybiBubyBkYXRhCisgICAgaWYgKHB0ciAtPlR5cGUgPT0gR1BfRU1QVFkpIHJldHVybiBGQUxTRTsKKworICAgIC8vIEluIGdhbXV0IG9ubHkgaWYgcmFkaXVzIGlzIGdyZWF0ZXIKKworICAgIHJldHVybiAoc3AuciA8PSBwdHIgLT4gcC5yKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gRmluZCBuZWFyIHNlY3RvcnMuIFRoZSBsaXN0IG9mIHNlY3RvcnMgZm91bmQgaXMgcmV0dXJuZWQgb24gQ2xvc2VbXS4KKy8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2VjdG9ycyBhcyB3ZWxsLgorCisvLyAyNCAgIDkgIDEwICAxMSAgMTIKKy8vIDIzICAgOCAgIDEgICAyICAxMworLy8gMjIgICA3ICAgKiAgIDMgIDE0CisvLyAyMSAgIDYgICA1ICAgNCAgMTUKKy8vIDIwICAxOSAgMTggIDE3ICAxNgorLy8KKy8vIFRob3NlIGFyZSB0aGUgcmVsYXRpdmUgbW92ZW1lbnRzCisvLyB7LTIsLTJ9LCB7LTEsIC0yfSwgezAsIC0yfSwgeysxLCAtMn0sIHsrMiwgIC0yfSwKKy8vIHstMiwtMX0sIHstMSwgLTF9LCB7MCwgLTF9LCB7KzEsIC0xfSwgeysyLCAgLTF9LAorLy8gey0yLCAwfSwgey0xLCAgMH0sIHswLCAgMH0sIHsrMSwgIDB9LCB7KzIsICAgMH0sCisvLyB7LTIsKzF9LCB7LTEsICsxfSwgezAsICsxfSwgeysxLCAgKzF9LCB7KzIsICArMX0sCisvLyB7LTIsKzJ9LCB7LTEsICsyfSwgezAsICsyfSwgeysxLCAgKzJ9LCB7KzIsICArMn19OworCisKK3N0YXRpYworY29uc3Qgc3RydWN0IF9zcGlyYWwgeworCisgICAgaW50IEFkdlgsIEFkdlk7CisKKyAgICB9IFNwaXJhbFtdID0geyB7MCwgIC0xfSwgeysxLCAtMX0sIHsrMSwgIDB9LCB7KzEsICsxfSwgezAsICArMX0sIHstMSwgKzF9LAorICAgICAgICAgICAgICAgICAgIHstMSwgIDB9LCB7LTEsIC0xfSwgey0xLCAtMn0sIHswLCAgLTJ9LCB7KzEsIC0yfSwgeysyLCAtMn0sCisgICAgICAgICAgICAgICAgICAgeysyLCAtMX0sIHsrMiwgIDB9LCB7KzIsICsxfSwgeysyLCArMn0sIHsrMSwgKzJ9LCB7MCwgICsyfSwKKyAgICAgICAgICAgICAgICAgICB7LTEsICsyfSwgey0yLCArMn0sIHstMiwgKzF9LCB7LTIsIDB9LCAgey0yLCAtMX0sIHstMiwgLTJ9IH07CisKKyNkZWZpbmUgTlNURVBTIChzaXplb2YoU3BpcmFsKSAvIHNpemVvZihzdHJ1Y3QgX3NwaXJhbCkpCisKK3N0YXRpYworaW50IEZpbmROZWFyU2VjdG9ycyhjbXNHREIqIGdiZCwgaW50IGFscGhhLCBpbnQgdGhldGEsIGNtc0dEQlBvaW50KiBDbG9zZVtdKQoreworICAgIGludCBuU2VjdG9ycyA9IDA7CisgICAgaW50IGEsIHQ7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgY21zR0RCUG9pbnQqIHB0OworCisgICAgZm9yIChpPTA7IGkgPCBOU1RFUFM7IGkrKykgeworCisgICAgICAgIGEgPSBhbHBoYSArIFNwaXJhbFtpXS5BZHZYOworICAgICAgICB0ID0gdGhldGEgKyBTcGlyYWxbaV0uQWR2WTsKKworICAgICAgICAvLyBDeWNsZSBhdCB0aGUgZW5kCisgICAgICAgIGEgJT0gU0VDVE9SUzsKKyAgICAgICAgdCAlPSBTRUNUT1JTOworCisgICAgICAgIC8vIEN5Y2xlIGF0IHRoZSBiZWdpbgorICAgICAgICBpZiAoYSA8IDApIGEgPSBTRUNUT1JTICsgYTsKKyAgICAgICAgaWYgKHQgPCAwKSB0ID0gU0VDVE9SUyArIHQ7CisKKyAgICAgICAgcHQgPSAmZ2JkIC0+R2FtdXRbdF1bYV07CisKKyAgICAgICAgaWYgKHB0IC0+IFR5cGUgIT0gR1BfRU1QVFkpIHsKKworICAgICAgICAgICAgQ2xvc2VbblNlY3RvcnMrK10gPSBwdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBuU2VjdG9yczsKK30KKworCisvLyBJbnRlcnBvbGF0ZSBhIG1pc3Npbmcgc2VjdG9yLiBNZXRob2QgaWRlbnRpZmllcyB3aGF0ZXZlciB0aGlzIGlzIHRvcCwgYm90dG9tIG9yIG1pZAorc3RhdGljCitjbXNCb29sIEludGVycG9sYXRlTWlzc2luZ1NlY3RvcihjbXNHREIqIGdiZCwgaW50IGFscGhhLCBpbnQgdGhldGEpCit7CisgICAgY21zU3BoZXJpY2FsIHNwOworICAgIGNtc1ZFQzMgTGFiOworICAgIGNtc1ZFQzMgQ2VudHJlOworICAgIGNtc0xpbmUgcmF5OworICAgIGludCBuQ2xvc2VTZWN0b3JzOworICAgIGNtc0dEQlBvaW50KiBDbG9zZVtOU1RFUFMgKyAxXTsKKyAgICBjbXNTcGhlcmljYWwgY2xvc2VsLCB0ZW1wbDsKKyAgICBjbXNMaW5lIGVkZ2U7CisgICAgaW50IGssIG07CisKKyAgICAvLyBJcyB0aGF0IHBvaW50IGFscmVhZHkgc3BlY2lmaWVkPworICAgIGlmIChnYmQgLT5HYW11dFt0aGV0YV1bYWxwaGFdLlR5cGUgIT0gR1BfRU1QVFkpIHJldHVybiBUUlVFOworCisgICAgLy8gRmlsbCBjbG9zZSBwb2ludHMKKyAgICBuQ2xvc2VTZWN0b3JzID0gRmluZE5lYXJTZWN0b3JzKGdiZCwgYWxwaGEsIHRoZXRhLCBDbG9zZSk7CisKKworICAgIC8vIEZpbmQgYSBjZW50cmFsIHBvaW50IG9uIHRoZSBzZWN0b3IKKyAgICBzcC5hbHBoYSA9IChjbXNGbG9hdDY0TnVtYmVyKSAoKGFscGhhICsgMC41KSAqIDM2MC4wKSAvIChTRUNUT1JTKTsKKyAgICBzcC50aGV0YSA9IChjbXNGbG9hdDY0TnVtYmVyKSAoKHRoZXRhICsgMC41KSAqIDE4MC4wKSAvIChTRUNUT1JTKTsKKyAgICBzcC5yICAgICA9IDUwLjA7CisKKyAgICAvLyBDb252ZXJ0IHRvIENhcnRlc2lhbgorICAgIFRvQ2FydGVzaWFuKCZMYWIsICZzcCk7CisKKyAgICAvLyBDcmVhdGUgYSByYXkgbGluZSBmcm9tIGNlbnRyZSB0byB0aGlzIHBvaW50CisgICAgX2Ntc1ZFQzNpbml0KCZDZW50cmUsIDUwLjAsIDAsIDApOworICAgIExpbmVPZjJQb2ludHMoJnJheSwgJkxhYiwgJkNlbnRyZSk7CisKKyAgICAvLyBGb3IgYWxsIGNsb3NlIHNlY3RvcnMKKyAgICBjbG9zZWwuciA9IDAuMDsKKyAgICBjbG9zZWwuYWxwaGEgPSAwOworICAgIGNsb3NlbC50aGV0YSA9IDA7CisKKyAgICBmb3IgKGs9MDsgayA8IG5DbG9zZVNlY3RvcnM7IGsrKykgeworCisgICAgICAgIGZvcihtID0gaysxOyBtIDwgbkNsb3NlU2VjdG9yczsgbSsrKSB7CisKKyAgICAgICAgICAgIGNtc1ZFQzMgdGVtcCwgYTEsIGEyOworCisgICAgICAgICAgICAvLyBBIGxpbmUgZnJvbSBzZWN0b3IgdG8gc2VjdG9yCisgICAgICAgICAgICBUb0NhcnRlc2lhbigmYTEsICZDbG9zZVtrXS0+cCk7CisgICAgICAgICAgICBUb0NhcnRlc2lhbigmYTIsICZDbG9zZVttXS0+cCk7CisKKyAgICAgICAgICAgIExpbmVPZjJQb2ludHMoJmVkZ2UsICZhMSwgJmEyKTsKKworICAgICAgICAgICAgLy8gRmluZCBhIGxpbmUKKyAgICAgICAgICAgIENsb3Nlc3RMaW5lVG9MaW5lKCZ0ZW1wLCAmcmF5LCAmZWRnZSk7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gc3BoZXJpY2FsCisgICAgICAgICAgICBUb1NwaGVyaWNhbCgmdGVtcGwsICZ0ZW1wKTsKKworCisgICAgICAgICAgICBpZiAoIHRlbXBsLnIgPiBjbG9zZWwuciAmJgorICAgICAgICAgICAgICAgICB0ZW1wbC50aGV0YSA+PSAodGhldGEqMTgwLjAvU0VDVE9SUykgJiYKKyAgICAgICAgICAgICAgICAgdGVtcGwudGhldGEgPD0gKCh0aGV0YSsxKSoxODAuMC9TRUNUT1JTKSAmJgorICAgICAgICAgICAgICAgICB0ZW1wbC5hbHBoYSA+PSAoYWxwaGEqMzYwLjAvU0VDVE9SUykgJiYKKyAgICAgICAgICAgICAgICAgdGVtcGwuYWxwaGEgPD0gKChhbHBoYSsxKSozNjAuMC9TRUNUT1JTKSkgeworCisgICAgICAgICAgICAgICAgY2xvc2VsID0gdGVtcGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnYmQgLT5HYW11dFt0aGV0YV1bYWxwaGFdLnAgPSBjbG9zZWw7CisgICAgZ2JkIC0+R2FtdXRbdGhldGFdW2FscGhhXS5UeXBlID0gR1BfTU9ERUxFRDsKKworICAgIHJldHVybiBUUlVFOworCit9CisKKworLy8gSW50ZXJwb2xhdGUgbWlzc2luZyBwYXJ0cy4gVGhlIGFsZ29yaXRobSBmaXN0IGNvbXB1dGVzIHNsaWNlcyBhdAorLy8gdGhldGE9MCBhbmQgdGhldGE9TWF4LgorY21zQm9vbCBDTVNFWFBPUlQgY21zR0RCQ29tcHV0ZShjbXNIQU5ETEUgaEdCRCwgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisgICAgaW50IGFscGhhLCB0aGV0YTsKKyAgICBjbXNHREIqIGdiZCA9IChjbXNHREIqKSBoR0JEOworCisgICAgX2Ntc0Fzc2VydChoR0JEICE9IE5VTEwpOworCisgICAgLy8gSW50ZXJwb2xhdGUgYmxhY2sKKyAgICBmb3IgKGFscGhhID0gMDsgYWxwaGEgPCBTRUNUT1JTOyBhbHBoYSsrKSB7CisKKyAgICAgICAgaWYgKCFJbnRlcnBvbGF0ZU1pc3NpbmdTZWN0b3IoZ2JkLCBhbHBoYSwgMCkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBJbnRlcnBvbGF0ZSB3aGl0ZQorICAgIGZvciAoYWxwaGEgPSAwOyBhbHBoYSA8IFNFQ1RPUlM7IGFscGhhKyspIHsKKworICAgICAgICBpZiAoIUludGVycG9sYXRlTWlzc2luZ1NlY3RvcihnYmQsIGFscGhhLCBTRUNUT1JTLTEpKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisKKyAgICAvLyBJbnRlcnBvbGF0ZSBNaWQKKyAgICBmb3IgKHRoZXRhID0gMTsgdGhldGEgPCBTRUNUT1JTOyB0aGV0YSsrKSB7CisgICAgICAgIGZvciAoYWxwaGEgPSAwOyBhbHBoYSA8IFNFQ1RPUlM7IGFscGhhKyspIHsKKworICAgICAgICAgICAgaWYgKCFJbnRlcnBvbGF0ZU1pc3NpbmdTZWN0b3IoZ2JkLCBhbHBoYSwgdGhldGEpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBEb25lCisgICAgcmV0dXJuIFRSVUU7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKGR3RmxhZ3MpOworfQorCisKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBHcmVhdCBmb3IgZGVidWcsIGJ1dCBub3Qgc3VpdGFibGUgZm9yIHJlYWwgdXNlCisKKyNpZiAwCitjbXNCb29sIGNtc0dCRGR1bXBWUk1MKGNtc0hBTkRMRSBoR0JELCBjb25zdCBjaGFyKiBmbmFtZSkKK3sKKyAgICBGSUxFKiBmcDsKKyAgICBpbnQgICBpLCBqOworICAgIGNtc0dEQiogZ2JkID0gKGNtc0dEQiopIGhHQkQ7CisgICAgY21zR0RCUG9pbnQqIHB0OworCisgICAgZnAgPSBmb3BlbiAoZm5hbWUsICJ3dCIpOworICAgIGlmIChmcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBmcHJpbnRmIChmcCwgIiNWUk1MIFYyLjAgdXRmOFxuIik7CisKKyAgICAvLyBzZXQgdGhlIHZpZXdpbmcgb3JpZW50YXRpb24gYW5kIGRpc3RhbmNlCisgICAgZnByaW50ZiAoZnAsICJERUYgQ2FtVGVzdCBHcm91cCB7XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0Y2hpbGRyZW4gW1xuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0REVGIENhbWVyYXMgR3JvdXAge1xuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRjaGlsZHJlbiBbXG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0REVGIERlZmF1bHRWaWV3IFZpZXdwb2ludCB7XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0XHRwb3NpdGlvbiAwIDAgMzQwXG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0XHRvcmllbnRhdGlvbiAwIDAgMSAwXG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0XHRkZXNjcmlwdGlvbiBcImRlZmF1bHQgdmlld1wiXG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0fVxuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRdXG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHR9LFxuIik7CisgICAgZnByaW50ZiAoZnAsICJcdF1cbiIpOworICAgIGZwcmludGYgKGZwLCAifVxuIik7CisKKyAgICAvLyBPdXRwdXQgdGhlIGJhY2tncm91bmQgc3R1ZmYKKyAgICBmcHJpbnRmIChmcCwgIkJhY2tncm91bmQge1xuIik7CisgICAgZnByaW50ZiAoZnAsICJcdHNreUNvbG9yIFtcbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdC41IC41IC41XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XVxuIik7CisgICAgZnByaW50ZiAoZnAsICJ9XG4iKTsKKworICAgIC8vIE91dHB1dCB0aGUgc2hhcGUgc3R1ZmYKKyAgICBmcHJpbnRmIChmcCwgIlRyYW5zZm9ybSB7XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0c2NhbGUgLjMgLjMgLjNcbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRjaGlsZHJlbiBbXG4iKTsKKworICAgIC8vIERyYXcgdGhlIGF4ZXMgYXMgYSBzaGFwZToKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRTaGFwZSB7XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdGFwcGVhcmFuY2UgQXBwZWFyYW5jZSB7XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0bWF0ZXJpYWwgTWF0ZXJpYWwge1xuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdFx0ZGlmZnVzZUNvbG9yIDAgMC44IDBcbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0XHRcdGVtaXNzaXZlQ29sb3IgMS4wIDEuMCAxLjBcbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0XHRcdHNoaW5pbmVzcyAwLjhcbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0XHR9XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdH1cbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0Z2VvbWV0cnkgSW5kZXhlZExpbmVTZXQge1xuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdGNvb3JkIENvb3JkaW5hdGUge1xuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdFx0cG9pbnQgW1xuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdFx0MC4wIDAuMCAwLjAsXG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0XHQlZiAwLjAgMC4wLFxuIiwgIDI1NS4wKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0XHQwLjAgJWYgMC4wLFxuIiwgIDI1NS4wKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0XHQwLjAgMC4wICVmXVxuIiwgIDI1NS4wKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0fVxuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdGNvb3JkSW5kZXggW1xuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdFx0MCwgMSwgLTFcbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0XHRcdDAsIDIsIC0xXG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0XHQwLCAzLCAtMV1cbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0fVxuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0fVxuIik7CisKKworICAgIGZwcmludGYgKGZwLCAiXHRcdFNoYXBlIHtcbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0YXBwZWFyYW5jZSBBcHBlYXJhbmNlIHtcbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0XHRtYXRlcmlhbCBNYXRlcmlhbCB7XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHRcdFx0XHRkaWZmdXNlQ29sb3IgMCAwLjggMFxuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdFx0ZW1pc3NpdmVDb2xvciAxIDEgMVxuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdFx0c2hpbmluZXNzIDAuOFxuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdH1cbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0fVxuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRnZW9tZXRyeSBQb2ludFNldCB7XG4iKTsKKworICAgIC8vIGZpbGwgaW4gdGhlIHBvaW50cyBoZXJlCisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdGNvb3JkIENvb3JkaW5hdGUge1xuIik7CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdFx0cG9pbnQgW1xuIik7CisKKyAgICAvLyBXZSBuZWVkIHRvIHRyYW5zdmVyc2UgYWxsIGdhbXV0IGh1bGwuCisgICAgZm9yIChpPTA7IGkgPCBTRUNUT1JTOyBpKyspCisgICAgICAgIGZvciAoaj0wOyBqIDwgU0VDVE9SUzsgaisrKSB7CisKKyAgICAgICAgICAgIGNtc1ZFQzMgdjsKKworICAgICAgICAgICAgcHQgPSAmZ2JkIC0+R2FtdXRbaV1bal07CisgICAgICAgICAgICBUb0NhcnRlc2lhbigmdiwgJnB0IC0+cCk7CisKKyAgICAgICAgICAgIGZwcmludGYgKGZwLCAiXHRcdFx0XHRcdCVnICVnICVnIiwgdi5uWzBdKzUwLCB2Lm5bMV0sIHYublsyXSk7CisKKyAgICAgICAgICAgIGlmICgoaiA9PSBTRUNUT1JTIC0gMSkgJiYgKGkgPT0gU0VDVE9SUyAtIDEpKQorICAgICAgICAgICAgICAgIGZwcmludGYgKGZwLCAiXVxuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnByaW50ZiAoZnAsICIsXG4iKTsKKworICAgICAgICB9CisKKyAgICAgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdH1cbiIpOworCisKKworICAgIC8vIGZpbGwgaW4gdGhlIGZhY2UgY29sb3JzCisgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdGNvbG9yIENvbG9yIHtcbiIpOworICAgIGZwcmludGYgKGZwLCAiXHRcdFx0XHRcdGNvbG9yIFtcbiIpOworCisgICAgZm9yIChpPTA7IGkgPCBTRUNUT1JTOyBpKyspCisgICAgICAgIGZvciAoaj0wOyBqIDwgU0VDVE9SUzsgaisrKSB7CisKKyAgICAgICAgICAgY21zVkVDMyB2OworCisgICAgICAgICAgICBwdCA9ICZnYmQgLT5HYW11dFtpXVtqXTsKKworCisgICAgICAgICAgICBUb0NhcnRlc2lhbigmdiwgJnB0IC0+cCk7CisKKworICAgICAgICBpZiAocHQgLT5UeXBlID09IEdQX0VNUFRZKQorICAgICAgICAgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdFx0JWcgJWcgJWciLCAwLjAsIDAuMCwgMC4wKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHB0IC0+VHlwZSA9PSBHUF9NT0RFTEVEKQorICAgICAgICAgICAgICAgIGZwcmludGYgKGZwLCAiXHRcdFx0XHRcdCVnICVnICVnIiwgMS4wLCAuNSwgLjUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZnByaW50ZiAoZnAsICJcdFx0XHRcdFx0JWcgJWcgJWciLCAxLjAsIDEuMCwgMS4wKTsKKworICAgICAgICAgICAgfQorCisgICAgICAgIGlmICgoaiA9PSBTRUNUT1JTIC0gMSkgJiYgKGkgPT0gU0VDVE9SUyAtIDEpKQorICAgICAgICAgICAgICAgIGZwcmludGYgKGZwLCAiXVxuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnByaW50ZiAoZnAsICIsXG4iKTsKKyAgICB9CisgICAgZnByaW50ZiAoZnAsICJcdFx0XHR9XG4iKTsKKworCisgICAgZnByaW50ZiAoZnAsICJcdFx0XHR9XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XHR9XG4iKTsKKyAgICBmcHJpbnRmIChmcCwgIlx0XVxuIik7CisgICAgZnByaW50ZiAoZnAsICJ9XG4iKTsKKworICAgIGZjbG9zZSAoZnApOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXN0eXBlcy5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3R5cGVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY3NDJiNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXN0eXBlcy5jCkBAIC0wLDAgKzEsNTU2NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworCisjaW5jbHVkZSAibGNtczJfaW50ZXJuYWwuaCIKKworLy8gVGFnIFNlcmlhbGl6YXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBldmVyeSBzaW5nbGUgdGFnIGFuZCB0YWcgdHlwZSBhcyBkZXNjcmliZWQgaW4gdGhlIElDQyBzcGVjLiBTb21lIHR5cGVzCisvLyBoYXZlIGJlZW4gZGVwcmVjYXRlZCwgbGlrZSBuY2wgYW5kIERhdGEuIFRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uIGZvciB0aG9zZSB0eXBlcyBhcyB0aGVyZQorLy8gYXJlIG5vIHByb2ZpbGVzIGhvbGRpbmcgdGhlbS4gVGhlIHByb2dyYW1tZXIgY2FuIGFsc28gZXh0ZW5kIHRoaXMgbGlzdCBieSBkZWZpbmluZyBoaXMgb3duIHR5cGVzCisvLyBieSB1c2luZyB0aGUgYXBwcm9waWF0ZSBwbHVnLWluLiBUaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgcGx1ZyBpbnMgcmVnYXJkaW5nIHRoYXQuIEZpcnN0IHR5cGUKKy8vIGFsbG93cyB0byBkZWZpbmUgbmV3IHRhZ3MgdXNpbmcgYW55IGV4aXN0aW5nIHR5cGUuIE5leHQgcGx1Zy1pbiB0eXBlIGFsbG93cyB0byBkZWZpbmUgbmV3IHR5cGVzCisvLyBhbmQgdGhlIHRoaXJkIG9uZSBpcyB2ZXJ5IHNwZWNpZmljOiBhbGxvd3MgdG8gZXh0ZW5kIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIG11bHRpcHJvY2Vzc2luZworLy8gZWxlbWVudHMgc3BlY2lhbCB0eXBlLgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBTb21lIGJyb2tlbiB0eXBlcworI2RlZmluZSBjbXNDb3JiaXNCcm9rZW5YWVp0eXBlICAgICgoY21zVGFnVHlwZVNpZ25hdHVyZSkgMHgxN0E1MDVCOCkKKyNkZWZpbmUgY21zTW9uYWNvQnJva2VuQ3VydmVUeXBlICAoKGNtc1RhZ1R5cGVTaWduYXR1cmUpIDB4OTQ3OGVlMDApCisKKy8vIFRoaXMgaXMgdGhlIGxpbmtlZCBsaXN0IHRoYXQga2VlcHMgdHJhY2sgb2YgdGhlIGRlZmluZWQgdHlwZXMKK3R5cGVkZWYgc3RydWN0IF9jbXNUYWdUeXBlTGlua2VkTGlzdF9zdCB7CisKKyAgICBjbXNUYWdUeXBlSGFuZGxlciBIYW5kbGVyOworICAgIHN0cnVjdCBfY21zVGFnVHlwZUxpbmtlZExpc3Rfc3QqIE5leHQ7CisKK30gX2Ntc1RhZ1R5cGVMaW5rZWRMaXN0OworCisvLyBTb21lIG1hY3JvcyB0byBkZWZpbmUgY2FsbGJhY2tzLgorI2RlZmluZSBSRUFEX0ZOKHgpICBUeXBlXyMjeCMjX1JlYWQKKyNkZWZpbmUgV1JJVEVfRk4oeCkgVHlwZV8jI3gjI19Xcml0ZQorI2RlZmluZSBGUkVFX0ZOKHgpICBUeXBlXyMjeCMjX0ZyZWUKKyNkZWZpbmUgRFVQX0ZOKHgpICAgVHlwZV8jI3gjI19EdXAKKworLy8gSGVscGVyIG1hY3JvIHRvIGRlZmluZSBhIGhhbmRsZXIuIENhbGxiYWNrcyBkbyBoYXZlIGEgZml4ZWQgbmFtaW5nIGNvbnZlbnRpb24uCisjZGVmaW5lIFRZUEVfSEFORExFUih0LCB4KSAgeyAodCksIFJFQURfRk4oeCksIFdSSVRFX0ZOKHgpLCBEVVBfRk4oeCksIEZSRUVfRk4oeCksIE5VTEwsIDAgfQorCisvLyBIZWxwZXIgbWFjcm8gdG8gZGVmaW5lIGEgTVBFIGhhbmRsZXIuIENhbGxiYWNrcyBkbyBoYXZlIGEgZml4ZWQgbmFtaW5nIGNvbnZlbnRpb24KKyNkZWZpbmUgVFlQRV9NUEVfSEFORExFUih0LCB4KSAgeyAodCksIFJFQURfRk4oeCksIFdSSVRFX0ZOKHgpLCBHZW5lcmljTVBFZHVwLCBHZW5lcmljTVBFZnJlZSwgTlVMTCwgMCB9CisKKy8vIFJlZ2lzdGVyIGEgbmV3IHR5cGUgaGFuZGxlci4gVGhpcyByb3V0aW5lIGlzIHNoYXJlZCBiZXR3ZWVuIG5vcm1hbCB0eXBlcyBhbmQgTVBFLiBMaW5rZWRMaXN0IHBvaW50cyB0byB0aGUgb3B0aW9uYWwgbGlzdCBoZWFkCitzdGF0aWMKK2Ntc0Jvb2wgUmVnaXN0ZXJUeXBlc1BsdWdpbihjbXNDb250ZXh0IGlkLCBjbXNQbHVnaW5CYXNlKiBEYXRhLCBfY21zTWVtb3J5Q2xpZW50IHBvcykKK3sKKyAgICBjbXNQbHVnaW5UYWdUeXBlKiBQbHVnaW4gPSAoY21zUGx1Z2luVGFnVHlwZSopIERhdGE7CisgICAgX2Ntc1RhZ1R5cGVQbHVnaW5DaHVua1R5cGUqIGN0eCA9ICggX2Ntc1RhZ1R5cGVQbHVnaW5DaHVua1R5cGUqKSBfY21zQ29udGV4dEdldENsaWVudENodW5rKGlkLCBwb3MpOworICAgIF9jbXNUYWdUeXBlTGlua2VkTGlzdCAqcHQ7CisKKyAgICAvLyBDYWxsaW5nIHRoZSBmdW5jdGlvbiB3aXRoIE5VTEwgYXMgcGx1Zy1pbiB3b3VsZCB1bnJlZ2lzdGVyIHRoZSBwbHVnIGluLgorICAgIGlmIChEYXRhID09IE5VTEwpIHsKKworICAgICAgICAvLyBUaGVyZSBpcyBubyBuZWVkIHRvIHNldCBmcmVlIHRoZSBtZW1vcnksIGFzIHBvb2wgaXMgZGVzdHJveWVkIGFzIGEgd2hvbGUuCisgICAgICAgIGN0eCAtPlRhZ1R5cGVzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgLy8gUmVnaXN0ZXJpbmcgaGFwcGVucyBpbiBwbHVnLWluIG1lbW9yeSBwb29sLgorICAgIHB0ID0gKF9jbXNUYWdUeXBlTGlua2VkTGlzdCopIF9jbXNQbHVnaW5NYWxsb2MoaWQsIHNpemVvZihfY21zVGFnVHlwZUxpbmtlZExpc3QpKTsKKyAgICBpZiAocHQgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgcHQgLT5IYW5kbGVyICAgPSBQbHVnaW4gLT5IYW5kbGVyOworICAgIHB0IC0+TmV4dCAgICAgID0gY3R4IC0+VGFnVHlwZXM7CisKKyAgICBjdHggLT5UYWdUeXBlcyA9IHB0OworICAgICAKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gUmV0dXJuIGhhbmRsZXIgZm9yIGEgZ2l2ZW4gdHlwZSBvciBOVUxMIGlmIG5vdCBmb3VuZC4gU2hhcmVkIGJldHdlZW4gbm9ybWFsIHR5cGVzIGFuZCBNUEUuIEl0IGZpcnN0IHRyaWVzIHRoZSBhZGRpdG9ucyAKKy8vIG1hZGUgYnkgcGx1Zy1pbnMgYW5kIHRoZW4gdGhlIGJ1aWx0LWluIGRlZmF1bHRzLgorc3RhdGljCitjbXNUYWdUeXBlSGFuZGxlciogR2V0SGFuZGxlcihjbXNUYWdUeXBlU2lnbmF0dXJlIHNpZywgX2Ntc1RhZ1R5cGVMaW5rZWRMaXN0KiBQbHVnaW5MaW5rZWRMaXN0LCBfY21zVGFnVHlwZUxpbmtlZExpc3QqIERlZmF1bHRMaW5rZWRMaXN0KQoreworICAgIF9jbXNUYWdUeXBlTGlua2VkTGlzdCogcHQ7CisKKyAgICBmb3IgKHB0ID0gUGx1Z2luTGlua2VkTGlzdDsKKyAgICAgICAgIHB0ICE9IE5VTEw7CisgICAgICAgICBwdCA9IHB0IC0+TmV4dCkgeworCisgICAgICAgICAgICBpZiAoc2lnID09IHB0IC0+IEhhbmRsZXIuU2lnbmF0dXJlKSByZXR1cm4gJnB0IC0+SGFuZGxlcjsKKyAgICB9CisKKyAgICBmb3IgKHB0ID0gRGVmYXVsdExpbmtlZExpc3Q7CisgICAgICAgICBwdCAhPSBOVUxMOworICAgICAgICAgcHQgPSBwdCAtPk5leHQpIHsKKworICAgICAgICAgICAgaWYgKHNpZyA9PSBwdCAtPiBIYW5kbGVyLlNpZ25hdHVyZSkgcmV0dXJuICZwdCAtPkhhbmRsZXI7CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLy8gQXV4aWxpYXIgdG8gY29udmVydCBVVEYtMzIgdG8gVVRGLTE2IGluIHNvbWUgY2FzZXMKK3N0YXRpYworY21zQm9vbCBfY21zV3JpdGVXQ2hhckFycmF5KGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQzMk51bWJlciBuLCBjb25zdCB3Y2hhcl90KiBBcnJheSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKworICAgIF9jbXNBc3NlcnQoaW8gIT0gTlVMTCk7CisgICAgX2Ntc0Fzc2VydCghKEFycmF5ID09IE5VTEwgJiYgbiA+IDApKTsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAoY21zVUludDE2TnVtYmVyKSBBcnJheVtpXSkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gQXV4aWxpYXIgdG8gcmVhZCBhbiBhcnJheSBvZiB3Y2hhcl90CitzdGF0aWMKK2Ntc0Jvb2wgX2Ntc1JlYWRXQ2hhckFycmF5KGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQzMk51bWJlciBuLCB3Y2hhcl90KiBBcnJheSkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNVSW50MTZOdW1iZXIgdG1wOworCisgICAgX2Ntc0Fzc2VydChpbyAhPSBOVUxMKTsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisKKyAgICAgICAgaWYgKEFycmF5ICE9IE5VTEwpIHsKKworICAgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgJnRtcCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIEFycmF5W2ldID0gKHdjaGFyX3QpIHRtcDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MTZOdW1iZXIoaW8sIE5VTEwpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gVG8gZGVhbCB3aXRoIHBvc2l0aW9uIHRhYmxlcwordHlwZWRlZiBjbXNCb29sICgqIFBvc2l0aW9uVGFibGVFbnRyeUZuKShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNJT0hBTkRMRVIqIGlvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogQ2FyZ28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpOworCisvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZGVhbCB3aXRoIHBvc2l0aW9uIHRhYmxlcyBhcyBkZWNyaWJlZCBpbiBJQ0Mgc3BlYyA0LjMKKy8vIEEgdGFibGUgb2YgbiBlbGVtZW50cyBpcyByZWFkZWQsIHdoZXJlIGZpcnN0IGNvbWVzIG4gcmVjb3JkcyBjb250YWluaW5nIG9mZnNldHMgYW5kIHNpemVzIGFuZAorLy8gdGhlbiBhIGJsb2NrIGNvbnRhaW5pbmcgdGhlIGRhdGEgaXRzZWxmLiBUaGlzIGFsbG93cyB0byByZXVzZSBzYW1lIGRhdGEgaW4gbW9yZSB0aGFuIG9uZSBlbnRyeQorc3RhdGljCitjbXNCb29sIFJlYWRQb3NpdGlvblRhYmxlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0lPSEFORExFUiogaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgQmFzZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKkNhcmdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb25UYWJsZUVudHJ5Rm4gRWxlbWVudEZuKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpOworICAgIGNtc1VJbnQzMk51bWJlciAqRWxlbWVudE9mZnNldHMgPSBOVUxMLCAqRWxlbWVudFNpemVzID0gTlVMTDsKKworICAgIC8vIExldCdzIHRha2UgdGhlIG9mZnNldHMgdG8gZWFjaCBlbGVtZW50CisgICAgRWxlbWVudE9mZnNldHMgPSAoY21zVUludDMyTnVtYmVyICopIF9jbXNDYWxsb2MoaW8gLT5Db250ZXh0SUQsIENvdW50LCBzaXplb2YoY21zVUludDMyTnVtYmVyKSk7CisgICAgaWYgKEVsZW1lbnRPZmZzZXRzID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICBFbGVtZW50U2l6ZXMgPSAoY21zVUludDMyTnVtYmVyICopIF9jbXNDYWxsb2MoaW8gLT5Db250ZXh0SUQsIENvdW50LCBzaXplb2YoY21zVUludDMyTnVtYmVyKSk7CisgICAgaWYgKEVsZW1lbnRTaXplcyA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgZm9yIChpPTA7IGkgPCBDb3VudDsgaSsrKSB7CisKKyAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJkVsZW1lbnRPZmZzZXRzW2ldKSkgZ290byBFcnJvcjsKKyAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJkVsZW1lbnRTaXplc1tpXSkpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgRWxlbWVudE9mZnNldHNbaV0gKz0gQmFzZU9mZnNldDsKKyAgICB9CisKKyAgICAvLyBTZWVrIHRvIGVhY2ggZWxlbWVudCBhbmQgcmVhZCBpdAorICAgIGZvciAoaT0wOyBpIDwgQ291bnQ7IGkrKykgeworCisgICAgICAgIGlmICghaW8gLT4gU2VlayhpbywgRWxlbWVudE9mZnNldHNbaV0pKSBnb3RvIEVycm9yOworCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIHJlYWRlciBjYWxsYmFjaworICAgICAgICBpZiAoIUVsZW1lbnRGbihzZWxmLCBpbywgQ2FyZ28sIGksIEVsZW1lbnRTaXplc1tpXSkpIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgLy8gU3VjY2VzcworICAgIGlmIChFbGVtZW50T2Zmc2V0cyAhPSBOVUxMKSBfY21zRnJlZShpbyAtPkNvbnRleHRJRCwgRWxlbWVudE9mZnNldHMpOworICAgIGlmIChFbGVtZW50U2l6ZXMgIT0gTlVMTCkgX2Ntc0ZyZWUoaW8gLT5Db250ZXh0SUQsIEVsZW1lbnRTaXplcyk7CisgICAgcmV0dXJuIFRSVUU7CisKK0Vycm9yOgorICAgIGlmIChFbGVtZW50T2Zmc2V0cyAhPSBOVUxMKSBfY21zRnJlZShpbyAtPkNvbnRleHRJRCwgRWxlbWVudE9mZnNldHMpOworICAgIGlmIChFbGVtZW50U2l6ZXMgIT0gTlVMTCkgX2Ntc0ZyZWUoaW8gLT5Db250ZXh0SUQsIEVsZW1lbnRTaXplcyk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCisvLyBTYW1lIGFzIGFudGVyaW9yLCBidXQgZm9yIHdyaXRlIHBvc2l0aW9uIHRhYmxlcworc3RhdGljCitjbXNCb29sIFdyaXRlUG9zaXRpb25UYWJsZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSU9IQU5ETEVSKiBpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgQmFzZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpDYXJnbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvblRhYmxlRW50cnlGbiBFbGVtZW50Rm4pCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgY21zVUludDMyTnVtYmVyIERpcmVjdG9yeVBvcywgQ3VycmVudFBvcywgQmVmb3JlOworICAgIGNtc1VJbnQzMk51bWJlciAqRWxlbWVudE9mZnNldHMgPSBOVUxMLCAqRWxlbWVudFNpemVzID0gTlVMTDsKKworICAgICAvLyBDcmVhdGUgdGFibGUKKyAgICBFbGVtZW50T2Zmc2V0cyA9IChjbXNVSW50MzJOdW1iZXIgKikgX2Ntc0NhbGxvYyhpbyAtPkNvbnRleHRJRCwgQ291bnQsIHNpemVvZihjbXNVSW50MzJOdW1iZXIpKTsKKyAgICBpZiAoRWxlbWVudE9mZnNldHMgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIEVsZW1lbnRTaXplcyA9IChjbXNVSW50MzJOdW1iZXIgKikgX2Ntc0NhbGxvYyhpbyAtPkNvbnRleHRJRCwgQ291bnQsIHNpemVvZihjbXNVSW50MzJOdW1iZXIpKTsKKyAgICBpZiAoRWxlbWVudFNpemVzID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBLZWVwIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIGN1cnZlIG9mZnNldHMKKyAgICBEaXJlY3RvcnlQb3MgPSBpbyAtPlRlbGwoaW8pOworCisgICAgLy8gV3JpdGUgYSBmYWtlIGRpcmVjdG9yeSB0byBiZSBmaWxsZWQgbGF0dGVyIG9uCisgICAgZm9yIChpPTA7IGkgPCBDb3VudDsgaSsrKSB7CisKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIDApKSBnb3RvIEVycm9yOyAgLy8gT2Zmc2V0CisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCAwKSkgZ290byBFcnJvcjsgIC8vIHNpemUKKyAgICB9CisKKyAgICAvLyBXcml0ZSBlYWNoIGVsZW1lbnQuIEtlZXAgdHJhY2sgb2YgdGhlIHNpemUgYXMgd2VsbC4KKyAgICBmb3IgKGk9MDsgaSA8IENvdW50OyBpKyspIHsKKworICAgICAgICBCZWZvcmUgPSBpbyAtPlRlbGwoaW8pOworICAgICAgICBFbGVtZW50T2Zmc2V0c1tpXSA9IEJlZm9yZSAtIEJhc2VPZmZzZXQ7CisKKyAgICAgICAgLy8gQ2FsbGJhY2sgdG8gd3JpdGUuLi4KKyAgICAgICAgaWYgKCFFbGVtZW50Rm4oc2VsZiwgaW8sIENhcmdvLCBpLCBTaXplT2ZUYWcpKSBnb3RvIEVycm9yOworCisgICAgICAgIC8vIE5vdyB0aGUgc2l6ZQorICAgICAgICBFbGVtZW50U2l6ZXNbaV0gPSBpbyAtPlRlbGwoaW8pIC0gQmVmb3JlOworICAgIH0KKworICAgIC8vIFdyaXRlIHRoZSBkaXJlY3RvcnkKKyAgICBDdXJyZW50UG9zID0gaW8gLT5UZWxsKGlvKTsKKyAgICBpZiAoIWlvIC0+U2VlayhpbywgRGlyZWN0b3J5UG9zKSkgZ290byBFcnJvcjsKKworICAgIGZvciAoaT0wOyBpIDwgIENvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIEVsZW1lbnRPZmZzZXRzW2ldKSkgZ290byBFcnJvcjsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIEVsZW1lbnRTaXplc1tpXSkpIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgaWYgKCFpbyAtPlNlZWsoaW8sIEN1cnJlbnRQb3MpKSBnb3RvIEVycm9yOworCisgICAgaWYgKEVsZW1lbnRPZmZzZXRzICE9IE5VTEwpIF9jbXNGcmVlKGlvIC0+Q29udGV4dElELCBFbGVtZW50T2Zmc2V0cyk7CisgICAgaWYgKEVsZW1lbnRTaXplcyAhPSBOVUxMKSBfY21zRnJlZShpbyAtPkNvbnRleHRJRCwgRWxlbWVudFNpemVzKTsKKyAgICByZXR1cm4gVFJVRTsKKworRXJyb3I6CisgICAgaWYgKEVsZW1lbnRPZmZzZXRzICE9IE5VTEwpIF9jbXNGcmVlKGlvIC0+Q29udGV4dElELCBFbGVtZW50T2Zmc2V0cyk7CisgICAgaWYgKEVsZW1lbnRTaXplcyAhPSBOVUxMKSBfY21zRnJlZShpbyAtPkNvbnRleHRJRCwgRWxlbWVudFNpemVzKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgWFlaLiBPbmx5IG9uZSB2YWx1ZSBpcyBhbGxvd2VkCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisvL1RoZSBYWVpUeXBlIGNvbnRhaW5zIGFuIGFycmF5IG9mIHRocmVlIGVuY29kZWQgdmFsdWVzIGZvciB0aGUgWFlaIHRyaXN0aW11bHVzCisvL3ZhbHVlcy4gVHJpc3RpbXVsdXMgdmFsdWVzIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiBUaGUgc2lnbmVkIGVuY29kaW5nIGFsbG93cyBmb3IKKy8vaW1wbGVtZW50YXRpb24gb3B0aW1pemF0aW9ucyBieSBtaW5pbWl6aW5nIHRoZSBudW1iZXIgb2YgZml4ZWQgZm9ybWF0cy4KKworCitzdGF0aWMKK3ZvaWQgKlR5cGVfWFlaX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNDSUVYWVoqIHh5ejsKKworICAgICpuSXRlbXMgPSAwOworICAgIHh5eiA9IChjbXNDSUVYWVoqKSBfY21zTWFsbG9jWmVybyhzZWxmIC0+Q29udGV4dElELCBzaXplb2YoY21zQ0lFWFlaKSk7CisgICAgaWYgKHh5eiA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGlmICghX2Ntc1JlYWRYWVpOdW1iZXIoaW8sIHh5eikpIHsKKyAgICAgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgeHl6KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgKm5JdGVtcyA9IDE7CisgICAgcmV0dXJuICh2b2lkKikgeHl6OworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCitzdGF0aWMKK2Ntc0Jvb2wgIFR5cGVfWFlaX1dyaXRlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgdm9pZCogUHRyLCBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zKQoreworICAgIHJldHVybiBfY21zV3JpdGVYWVpOdW1iZXIoaW8sIChjbXNDSUVYWVoqKSBQdHIpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuSXRlbXMpOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYwordm9pZCogVHlwZV9YWVpfRHVwKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY29uc3Qgdm9pZCAqUHRyLCBjbXNVSW50MzJOdW1iZXIgbikKK3sKKyAgICByZXR1cm4gX2Ntc0R1cE1lbShzZWxmIC0+Q29udGV4dElELCBQdHIsIHNpemVvZihjbXNDSUVYWVopKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7Cit9CisKK3N0YXRpYwordm9pZCBUeXBlX1hZWl9GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCAqUHRyKQoreworICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFB0cik7Cit9CisKKworc3RhdGljCitjbXNUYWdUeXBlU2lnbmF0dXJlIERlY2lkZVhZWnR5cGUoY21zRmxvYXQ2NE51bWJlciBJQ0NWZXJzaW9uLCBjb25zdCB2b2lkICpEYXRhKQoreworICAgIHJldHVybiBjbXNTaWdYWVpUeXBlOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihJQ0NWZXJzaW9uKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKERhdGEpOworfQorCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNocm9tYXRpY2l0eS4gT25seSBvbmUgdmFsdWUgaXMgYWxsb3dlZAorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFRoZSBjaHJvbWF0aWNpdHkgdGFnIHR5cGUgcHJvdmlkZXMgYmFzaWMgY2hyb21hdGljaXR5IGRhdGEgYW5kIHR5cGUgb2YKKy8vIHBob3NwaG9ycyBvciBjb2xvcmFudHMgb2YgYSBtb25pdG9yIHRvIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzLgorCitzdGF0aWMKK3ZvaWQgKlR5cGVfQ2hyb21hdGljaXR5X1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNDSUV4eVlUUklQTEUqIGNocm07CisgICAgY21zVUludDE2TnVtYmVyIG5DaGFucywgVGFibGU7CisKKyAgICAqbkl0ZW1zID0gMDsKKyAgICBjaHJtID0gIChjbXNDSUV4eVlUUklQTEUqKSBfY21zTWFsbG9jWmVybyhzZWxmIC0+Q29udGV4dElELCBzaXplb2YoY21zQ0lFeHlZVFJJUExFKSk7CisgICAgaWYgKGNocm0gPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmbkNoYW5zKSkgZ290byBFcnJvcjsKKworICAgIC8vIExldCdzIHJlY292ZXIgZnJvbSBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGVhcmx5IHZlcnNpb25zIG9mIGxjbXMxCisgICAgaWYgKG5DaGFucyA9PSAwICYmIFNpemVPZlRhZyA9PSAzMikgeworCisgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MTZOdW1iZXIoaW8sIE5VTEwpKSBnb3RvIEVycm9yOworICAgICAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmbkNoYW5zKSkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBpZiAobkNoYW5zICE9IDMpIGdvdG8gRXJyb3I7CisKKyAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmVGFibGUpKSBnb3RvIEVycm9yOworCisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJmNocm0gLT5SZWQueCkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJmNocm0gLT5SZWQueSkpIGdvdG8gRXJyb3I7CisKKyAgICBjaHJtIC0+UmVkLlkgPSAxLjA7CisKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAmY2hybSAtPkdyZWVuLngpKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICZjaHJtIC0+R3JlZW4ueSkpIGdvdG8gRXJyb3I7CisKKyAgICBjaHJtIC0+R3JlZW4uWSA9IDEuMDsKKworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICZjaHJtIC0+Qmx1ZS54KSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAmY2hybSAtPkJsdWUueSkpIGdvdG8gRXJyb3I7CisKKyAgICBjaHJtIC0+Qmx1ZS5ZID0gMS4wOworCisgICAgKm5JdGVtcyA9IDE7CisgICAgcmV0dXJuICh2b2lkKikgY2hybTsKKworRXJyb3I6CisgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgKHZvaWQqKSBjaHJtKTsKKyAgICByZXR1cm4gTlVMTDsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU2l6ZU9mVGFnKTsKK30KKworc3RhdGljCitjbXNCb29sICBTYXZlT25lQ2hyb21hdGljaXR5KGNtc0Zsb2F0NjROdW1iZXIgeCwgY21zRmxvYXQ2NE51bWJlciB5LCBjbXNJT0hBTkRMRVIqIGlvKQoreworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBfY21zRG91YmxlVG8xNUZpeGVkMTYoeCkpKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIF9jbXNEb3VibGVUbzE1Rml4ZWQxNih5KSkpIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMKK2Ntc0Jvb2wgIFR5cGVfQ2hyb21hdGljaXR5X1dyaXRlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgdm9pZCogUHRyLCBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zKQoreworICAgIGNtc0NJRXh5WVRSSVBMRSogY2hybSA9IChjbXNDSUV4eVlUUklQTEUqKSBQdHI7CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNk51bWJlcihpbywgMykpIHJldHVybiBGQUxTRTsgICAgICAgIC8vIG5DaGFubmVscworICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOyAgICAgICAgLy8gVGFibGUKKworICAgIGlmICghU2F2ZU9uZUNocm9tYXRpY2l0eShjaHJtIC0+IFJlZC54LCAgIGNocm0gLT4gUmVkLnksIGlvKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghU2F2ZU9uZUNocm9tYXRpY2l0eShjaHJtIC0+IEdyZWVuLngsIGNocm0gLT4gR3JlZW4ueSwgaW8pKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFTYXZlT25lQ2hyb21hdGljaXR5KGNocm0gLT4gQmx1ZS54LCAgY2hybSAtPiBCbHVlLnksIGlvKSkgcmV0dXJuIEZBTFNFOworCisgICAgcmV0dXJuIFRSVUU7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG5JdGVtcyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworc3RhdGljCit2b2lkKiBUeXBlX0Nocm9tYXRpY2l0eV9EdXAoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjb25zdCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgIHJldHVybiBfY21zRHVwTWVtKHNlbGYgLT5Db250ZXh0SUQsIFB0ciwgc2l6ZW9mKGNtc0NJRXh5WVRSSVBMRSkpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfQ2hyb21hdGljaXR5X0ZyZWUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCB2b2lkKiBQdHIpCit7CisgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgUHRyKTsKK30KKworCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVHlwZSBjbXNTaWdDb2xvcmFudE9yZGVyVHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworLy8gVGhpcyBpcyBhbiBvcHRpb25hbCB0YWcgd2hpY2ggc3BlY2lmaWVzIHRoZSBsYXlkb3duIG9yZGVyIGluIHdoaWNoIGNvbG9yYW50cyB3aWxsCisvLyBiZSBwcmludGVkIG9uIGFuIG4tY29sb3JhbnQgZGV2aWNlLiBUaGUgbGF5ZG93biBvcmRlciBtYXkgYmUgdGhlIHNhbWUgYXMgdGhlCisvLyBjaGFubmVsIGdlbmVyYXRpb24gb3JkZXIgbGlzdGVkIGluIHRoZSBjb2xvcmFudFRhYmxlVGFnIG9yIHRoZSBjaGFubmVsIG9yZGVyIG9mIGEKKy8vIGNvbG91ciBzcGFjZSBzdWNoIGFzIENNWUssIGluIHdoaWNoIGNhc2UgdGhpcyB0YWcgaXMgbm90IG5lZWRlZC4gV2hlbiB0aGlzIGlzIG5vdAorLy8gdGhlIGNhc2UgKGZvciBleGFtcGxlLCBpbmstdG93ZXJzIHNvbWV0aW1lcyB1c2UgdGhlIG9yZGVyIEtDTVkpLCB0aGlzIHRhZyBtYXkgYmUKKy8vIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5ZG93biBvcmRlciBvZiB0aGUgY29sb3JhbnRzLgorCisKK3N0YXRpYwordm9pZCAqVHlwZV9Db2xvcmFudE9yZGVyVHlwZV9SZWFkKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuSXRlbXMsIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgY21zVUludDhOdW1iZXIqIENvbG9yYW50T3JkZXI7CisgICAgY21zVUludDMyTnVtYmVyIENvdW50OworCisgICAgKm5JdGVtcyA9IDA7CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJkNvdW50KSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKENvdW50ID4gY21zTUFYQ0hBTk5FTFMpIHJldHVybiBOVUxMOworCisgICAgQ29sb3JhbnRPcmRlciA9IChjbXNVSW50OE51bWJlciopIF9jbXNDYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgY21zTUFYQ0hBTk5FTFMsIHNpemVvZihjbXNVSW50OE51bWJlcikpOworICAgIGlmIChDb2xvcmFudE9yZGVyID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgLy8gV2UgdXNlIEZGIGFzIGVuZCBtYXJrZXIKKyAgICBtZW1zZXQoQ29sb3JhbnRPcmRlciwgMHhGRiwgY21zTUFYQ0hBTk5FTFMgKiBzaXplb2YoY21zVUludDhOdW1iZXIpKTsKKworICAgIGlmIChpbyAtPlJlYWQoaW8sIENvbG9yYW50T3JkZXIsIHNpemVvZihjbXNVSW50OE51bWJlciksIENvdW50KSAhPSBDb3VudCkgeworCisgICAgICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsICh2b2lkKikgQ29sb3JhbnRPcmRlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgICpuSXRlbXMgPSAxOworICAgIHJldHVybiAodm9pZCopIENvbG9yYW50T3JkZXI7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFNpemVPZlRhZyk7Cit9CisKK3N0YXRpYworY21zQm9vbCBUeXBlX0NvbG9yYW50T3JkZXJUeXBlX1dyaXRlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgdm9pZCogUHRyLCBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zKQoreworICAgIGNtc1VJbnQ4TnVtYmVyKiAgQ29sb3JhbnRPcmRlciA9IChjbXNVSW50OE51bWJlciopIFB0cjsKKyAgICBjbXNVSW50MzJOdW1iZXIgaSwgc3osIENvdW50OworCisgICAgLy8gR2V0IHRoZSBsZW5ndGgKKyAgICBmb3IgKENvdW50PWk9MDsgaSA8IGNtc01BWENIQU5ORUxTOyBpKyspIHsKKyAgICAgICAgaWYgKENvbG9yYW50T3JkZXJbaV0gIT0gMHhGRikgQ291bnQrKzsKKyAgICB9CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgQ291bnQpKSByZXR1cm4gRkFMU0U7CisKKyAgICBzeiA9IENvdW50ICogc2l6ZW9mKGNtc1VJbnQ4TnVtYmVyKTsKKyAgICBpZiAoIWlvIC0+IFdyaXRlKGlvLCBzeiwgQ29sb3JhbnRPcmRlcikpIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuSXRlbXMpOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYwordm9pZCogVHlwZV9Db2xvcmFudE9yZGVyVHlwZV9EdXAoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjb25zdCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgIHJldHVybiBfY21zRHVwTWVtKHNlbGYgLT5Db250ZXh0SUQsIFB0ciwgY21zTUFYQ0hBTk5FTFMgKiBzaXplb2YoY21zVUludDhOdW1iZXIpKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7Cit9CisKKworc3RhdGljCit2b2lkIFR5cGVfQ29sb3JhbnRPcmRlclR5cGVfRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgICBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBQdHIpOworfQorCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVHlwZSBjbXNTaWdTMTVGaXhlZDE2QXJyYXlUeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYW4gYXJyYXkgb2YgZ2VuZXJpYyA0LWJ5dGUvMzItYml0IGZpeGVkIHBvaW50IHF1YW50aXR5LgorLy8gVGhlIG51bWJlciBvZiB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBzaXplIG9mIHRoZSB0YWcuCisKK3N0YXRpYwordm9pZCAqVHlwZV9TMTVGaXhlZDE2X1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyKiAgYXJyYXlfZG91YmxlOworICAgIGNtc1VJbnQzMk51bWJlciBpLCBuOworCisgICAgKm5JdGVtcyA9IDA7CisgICAgbiA9IFNpemVPZlRhZyAvIHNpemVvZihjbXNVSW50MzJOdW1iZXIpOworICAgIGFycmF5X2RvdWJsZSA9IChjbXNGbG9hdDY0TnVtYmVyKikgX2Ntc0NhbGxvYyhzZWxmIC0+Q29udGV4dElELCBuLCBzaXplb2YoY21zRmxvYXQ2NE51bWJlcikpOworICAgIGlmIChhcnJheV9kb3VibGUgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICZhcnJheV9kb3VibGVbaV0pKSB7CisKKyAgICAgICAgICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIGFycmF5X2RvdWJsZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgICpuSXRlbXMgPSBuOworICAgIHJldHVybiAodm9pZCopIGFycmF5X2RvdWJsZTsKK30KKworc3RhdGljCitjbXNCb29sIFR5cGVfUzE1Rml4ZWQxNl9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyKiBWYWx1ZSA9IChjbXNGbG9hdDY0TnVtYmVyKikgUHRyOworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgZm9yIChpPTA7IGkgPCBuSXRlbXM7IGkrKykgeworCisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBWYWx1ZVtpXSkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYwordm9pZCogVHlwZV9TMTVGaXhlZDE2X0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuIF9jbXNEdXBNZW0oc2VsZiAtPkNvbnRleHRJRCwgUHRyLCBuICogc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpKTsKK30KKworCitzdGF0aWMKK3ZvaWQgVHlwZV9TMTVGaXhlZDE2X0ZyZWUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCB2b2lkKiBQdHIpCit7CisgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgUHRyKTsKK30KKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnVTE2Rml4ZWQxNkFycmF5VHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFRoaXMgdHlwZSByZXByZXNlbnRzIGFuIGFycmF5IG9mIGdlbmVyaWMgNC1ieXRlLzMyLWJpdCBxdWFudGl0eS4KKy8vIFRoZSBudW1iZXIgb2YgdmFsdWVzIGlzIGRldGVybWluZWQgZnJvbSB0aGUgc2l6ZSBvZiB0aGUgdGFnLgorCisKK3N0YXRpYwordm9pZCAqVHlwZV9VMTZGaXhlZDE2X1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyKiAgYXJyYXlfZG91YmxlOworICAgIGNtc1VJbnQzMk51bWJlciB2OworICAgIGNtc1VJbnQzMk51bWJlciBpLCBuOworCisgICAgKm5JdGVtcyA9IDA7CisgICAgbiA9IFNpemVPZlRhZyAvIHNpemVvZihjbXNVSW50MzJOdW1iZXIpOworICAgIGFycmF5X2RvdWJsZSA9IChjbXNGbG9hdDY0TnVtYmVyKikgX2Ntc0NhbGxvYyhzZWxmIC0+Q29udGV4dElELCBuLCBzaXplb2YoY21zRmxvYXQ2NE51bWJlcikpOworICAgIGlmIChhcnJheV9kb3VibGUgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZ2KSkgeworICAgICAgICAgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgKHZvaWQqKSBhcnJheV9kb3VibGUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvLyBDb252ZXJ0IHRvIGNtc0Zsb2F0NjROdW1iZXIKKyAgICAgICAgYXJyYXlfZG91YmxlW2ldID0gIChjbXNGbG9hdDY0TnVtYmVyKSAodiAvIDY1NTM2LjApOworICAgIH0KKworICAgICpuSXRlbXMgPSBuOworICAgIHJldHVybiAodm9pZCopIGFycmF5X2RvdWJsZTsKK30KKworc3RhdGljCitjbXNCb29sIFR5cGVfVTE2Rml4ZWQxNl9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyKiBWYWx1ZSA9IChjbXNGbG9hdDY0TnVtYmVyKikgUHRyOworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgZm9yIChpPTA7IGkgPCBuSXRlbXM7IGkrKykgeworCisgICAgICAgIGNtc1VJbnQzMk51bWJlciB2ID0gKGNtc1VJbnQzMk51bWJlcikgZmxvb3IoVmFsdWVbaV0qNjU1MzYuMCArIDAuNSk7CisKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIHYpKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKK3N0YXRpYwordm9pZCogVHlwZV9VMTZGaXhlZDE2X0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuIF9jbXNEdXBNZW0oc2VsZiAtPkNvbnRleHRJRCwgUHRyLCBuICogc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfVTE2Rml4ZWQxNl9GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCogUHRyKQoreworICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFB0cik7Cit9CisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ1NpZ25hdHVyZVR5cGUKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLworLy8gVGhlIHNpZ25hdHVyZVR5cGUgY29udGFpbnMgYSBmb3VyLWJ5dGUgc2VxdWVuY2UsIFNlcXVlbmNlcyBvZiBsZXNzIHRoYW4gZm91cgorLy8gY2hhcmFjdGVycyBhcmUgcGFkZGVkIGF0IHRoZSBlbmQgd2l0aCBzcGFjZXMsIDIwaC4KKy8vIFR5cGljYWxseSB0aGlzIHR5cGUgaXMgdXNlZCBmb3IgcmVnaXN0ZXJlZCB0YWdzIHRoYXQgY2FuIGJlIGRpc3BsYXllZCBvbiBtYW55CisvLyBkZXZlbG9wbWVudCBzeXN0ZW1zIGFzIGEgc2VxdWVuY2Ugb2YgZm91ciBjaGFyYWN0ZXJzLgorCitzdGF0aWMKK3ZvaWQgKlR5cGVfU2lnbmF0dXJlX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNTaWduYXR1cmUqIFNpZ1B0ciA9IChjbXNTaWduYXR1cmUqKSBfY21zTWFsbG9jKHNlbGYgLT5Db250ZXh0SUQsIHNpemVvZihjbXNTaWduYXR1cmUpKTsKKyAgICBpZiAoU2lnUHRyID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sIFNpZ1B0cikpIHJldHVybiBOVUxMOworICAgICAqbkl0ZW1zID0gMTsKKworICAgICByZXR1cm4gU2lnUHRyOworCisgICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU2l6ZU9mVGFnKTsKK30KKworc3RhdGljCitjbXNCb29sICBUeXBlX1NpZ25hdHVyZV9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNTaWduYXR1cmUqIFNpZ1B0ciA9IChjbXNTaWduYXR1cmUqKSBQdHI7CisKKyAgICByZXR1cm4gX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCAqU2lnUHRyKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCitzdGF0aWMKK3ZvaWQqIFR5cGVfU2lnbmF0dXJlX0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuIF9jbXNEdXBNZW0oc2VsZiAtPkNvbnRleHRJRCwgUHRyLCBuICogc2l6ZW9mKGNtc1NpZ25hdHVyZSkpOworfQorCitzdGF0aWMKK3ZvaWQgVHlwZV9TaWduYXR1cmVfRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgICBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBQdHIpOworfQorCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ1RleHRUeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vIFRoZSB0ZXh0VHlwZSBpcyBhIHNpbXBsZSB0ZXh0IHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIGEgNy1iaXQgQVNDSUkgdGV4dCBzdHJpbmcuCisvLyBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaXMgb2J0YWluZWQgYnkgc3VidHJhY3RpbmcgOCBmcm9tIHRoZSBlbGVtZW50IHNpemUgcG9ydGlvbgorLy8gb2YgdGhlIHRhZyBpdHNlbGYuIFRoaXMgc3RyaW5nIG11c3QgYmUgdGVybWluYXRlZCB3aXRoIGEgMDBoIGJ5dGUuCisKK3N0YXRpYwordm9pZCAqVHlwZV9UZXh0X1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjaGFyKiBUZXh0ID0gTlVMTDsKKyAgICBjbXNNTFUqIG1sdSA9IE5VTEw7CisKKyAgICAvLyBDcmVhdGUgYSBjb250YWluZXIKKyAgICBtbHUgPSBjbXNNTFVhbGxvYyhzZWxmIC0+Q29udGV4dElELCAxKTsKKyAgICBpZiAobWx1ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgKm5JdGVtcyA9IDA7CisKKyAgICAvLyBXZSBuZWVkIHRvIHN0b3JlIHRoZSAiXDAiIGF0IHRoZSBlbmQsIHNvICsxCisgICAgaWYgKFNpemVPZlRhZyA9PSBVSU5UX01BWCkgZ290byBFcnJvcjsKKworICAgIFRleHQgPSAoY2hhciopIF9jbXNNYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgU2l6ZU9mVGFnICsgMSk7CisgICAgaWYgKFRleHQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIGlmIChpbyAtPiBSZWFkKGlvLCBUZXh0LCBzaXplb2YoY2hhciksIFNpemVPZlRhZykgIT0gU2l6ZU9mVGFnKSBnb3RvIEVycm9yOworCisgICAgLy8gTWFrZSBzdXJlIHRleHQgaXMgcHJvcGVybHkgZW5kZWQKKyAgICBUZXh0W1NpemVPZlRhZ10gPSAwOworICAgICpuSXRlbXMgPSAxOworCisgICAgLy8gS2VlcCB0aGUgcmVzdWx0CisgICAgaWYgKCFjbXNNTFVzZXRBU0NJSShtbHUsIGNtc05vTGFuZ3VhZ2UsIGNtc05vQ291bnRyeSwgVGV4dCkpIGdvdG8gRXJyb3I7CisKKyAgICBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBUZXh0KTsKKyAgICByZXR1cm4gKHZvaWQqKSBtbHU7CisKK0Vycm9yOgorICAgIGlmIChtbHUgIT0gTlVMTCkKKyAgICAgICAgY21zTUxVZnJlZShtbHUpOworICAgIGlmIChUZXh0ICE9IE5VTEwpCisgICAgICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFRleHQpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vIFRoZSBjb252ZXJzaW9uIGltcGxpZXMgdG8gY2hvb3NlIGEgbGFuZ3VhZ2UuIFNvLCB3ZSBjaG9vc2UgdGhlIGFjdHVhbCBsYW5ndWFnZS4KK3N0YXRpYworY21zQm9vbCBUeXBlX1RleHRfV3JpdGUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBuSXRlbXMpCit7CisgICAgY21zTUxVKiBtbHUgPSAoY21zTUxVKikgUHRyOworICAgIGNtc1VJbnQzMk51bWJlciBzaXplOworICAgIGNtc0Jvb2wgIHJjOworICAgIGNoYXIqIFRleHQ7CisKKyAgICAvLyBHZXQgdGhlIHNpemUgb2YgdGhlIHN0cmluZy4gTm90ZSB0aGVyZSBpcyBhbiBleHRyYSAiXDAiIGF0IHRoZSBlbmQKKyAgICBzaXplID0gY21zTUxVZ2V0QVNDSUkobWx1LCBjbXNOb0xhbmd1YWdlLCBjbXNOb0NvdW50cnksIE5VTEwsIDApOworICAgIGlmIChzaXplID09IDApIHJldHVybiBGQUxTRTsgICAgICAgLy8gQ2Fubm90IGJlIHplcm8hCisKKyAgICAvLyBDcmVhdGUgbWVtb3J5CisgICAgVGV4dCA9IChjaGFyKikgX2Ntc01hbGxvYyhzZWxmIC0+Q29udGV4dElELCBzaXplKTsKKyAgICBpZiAoVGV4dCA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICBjbXNNTFVnZXRBU0NJSShtbHUsIGNtc05vTGFuZ3VhZ2UsIGNtc05vQ291bnRyeSwgVGV4dCwgc2l6ZSk7CisKKyAgICAvLyBXcml0ZSBpdCwgaW5jbHVkaW5nIHNlcGFyYXRvcgorICAgIHJjID0gaW8gLT5Xcml0ZShpbywgc2l6ZSwgVGV4dCk7CisKKyAgICBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBUZXh0KTsKKyAgICByZXR1cm4gcmM7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG5JdGVtcyk7Cit9CisKK3N0YXRpYwordm9pZCogVHlwZV9UZXh0X0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuICh2b2lkKikgY21zTUxVZHVwKChjbXNNTFUqKSBQdHIpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKK3N0YXRpYwordm9pZCBUeXBlX1RleHRfRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgICBjbXNNTFUqIG1sdSA9IChjbXNNTFUqKSBQdHI7CisgICAgY21zTUxVZnJlZShtbHUpOworICAgIHJldHVybjsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYworY21zVGFnVHlwZVNpZ25hdHVyZSBEZWNpZGVUZXh0VHlwZShjbXNGbG9hdDY0TnVtYmVyIElDQ1ZlcnNpb24sIGNvbnN0IHZvaWQgKkRhdGEpCit7CisgICAgaWYgKElDQ1ZlcnNpb24gPj0gNC4wKQorICAgICAgICByZXR1cm4gY21zU2lnTXVsdGlMb2NhbGl6ZWRVbmljb2RlVHlwZTsKKworICAgIHJldHVybiBjbXNTaWdUZXh0VHlwZTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoRGF0YSk7Cit9CisKKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnRGF0YVR5cGUKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8vIEdlbmVyYWwgcHVycG9zZSBkYXRhIHR5cGUKK3N0YXRpYwordm9pZCAqVHlwZV9EYXRhX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNJQ0NEYXRhKiBCaW5EYXRhOworICAgIGNtc1VJbnQzMk51bWJlciBMZW5PZkRhdGE7CisKKyAgICAqbkl0ZW1zID0gMDsKKworICAgIGlmIChTaXplT2ZUYWcgPCBzaXplb2YoY21zVUludDMyTnVtYmVyKSkgcmV0dXJuIE5VTEw7CisKKyAgICBMZW5PZkRhdGEgPSBTaXplT2ZUYWcgLSBzaXplb2YoY21zVUludDMyTnVtYmVyKTsKKyAgICBpZiAoTGVuT2ZEYXRhID4gSU5UX01BWCkgcmV0dXJuIE5VTEw7CisKKyAgICBCaW5EYXRhID0gKGNtc0lDQ0RhdGEqKSBfY21zTWFsbG9jKHNlbGYgLT5Db250ZXh0SUQsIHNpemVvZihjbXNJQ0NEYXRhKSArIExlbk9mRGF0YSAtIDEpOworICAgIGlmIChCaW5EYXRhID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgQmluRGF0YSAtPmxlbiA9IExlbk9mRGF0YTsKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmQmluRGF0YS0+ZmxhZykpIHsKKyAgICAgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgQmluRGF0YSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChpbyAtPiBSZWFkKGlvLCBCaW5EYXRhIC0+ZGF0YSwgc2l6ZW9mKGNtc1VJbnQ4TnVtYmVyKSwgTGVuT2ZEYXRhKSAhPSBMZW5PZkRhdGEpIHsKKworICAgICAgICBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBCaW5EYXRhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgKm5JdGVtcyA9IDE7CisKKyAgICByZXR1cm4gKHZvaWQqKSBCaW5EYXRhOworfQorCisKK3N0YXRpYworY21zQm9vbCBUeXBlX0RhdGFfV3JpdGUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBuSXRlbXMpCit7CisgICBjbXNJQ0NEYXRhKiBCaW5EYXRhID0gKGNtc0lDQ0RhdGEqKSBQdHI7CisKKyAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBCaW5EYXRhIC0+ZmxhZykpIHJldHVybiBGQUxTRTsKKworICAgcmV0dXJuIGlvIC0+V3JpdGUoaW8sIEJpbkRhdGEgLT5sZW4sIEJpbkRhdGEgLT5kYXRhKTsKKworICAgY21zVU5VU0VEX1BBUkFNRVRFUihuSXRlbXMpOworICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCitzdGF0aWMKK3ZvaWQqIFR5cGVfRGF0YV9EdXAoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjb25zdCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgIGNtc0lDQ0RhdGEqIEJpbkRhdGEgPSAoY21zSUNDRGF0YSopIFB0cjsKKworICAgIHJldHVybiBfY21zRHVwTWVtKHNlbGYgLT5Db250ZXh0SUQsIFB0ciwgc2l6ZW9mKGNtc0lDQ0RhdGEpICsgQmluRGF0YSAtPmxlbiAtIDEpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfRGF0YV9GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCogUHRyKQoreworICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFB0cik7Cit9CisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ1RleHREZXNjcmlwdGlvblR5cGUKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3N0YXRpYwordm9pZCAqVHlwZV9UZXh0X0Rlc2NyaXB0aW9uX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjaGFyKiBUZXh0ID0gTlVMTDsKKyAgICBjbXNNTFUqIG1sdSA9IE5VTEw7CisgICAgY21zVUludDMyTnVtYmVyICBBc2NpaUNvdW50OworICAgIGNtc1VJbnQzMk51bWJlciAgaSwgVW5pY29kZUNvZGUsIFVuaWNvZGVDb3VudDsKKyAgICBjbXNVSW50MTZOdW1iZXIgIFNjcmlwdENvZGVDb2RlLCBEdW1teTsKKyAgICBjbXNVSW50OE51bWJlciAgIFNjcmlwdENvZGVDb3VudDsKKworICAgICpuSXRlbXMgPSAwOworCisgICAgLy8gIE9uZSBkd29yZCBzaG91bGQgYmUgdGhlcmUKKyAgICBpZiAoU2l6ZU9mVGFnIDwgc2l6ZW9mKGNtc1VJbnQzMk51bWJlcikpIHJldHVybiBOVUxMOworCisgICAgLy8gUmVhZCBsZW4gb2YgQVNDSUkKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmQXNjaWlDb3VudCkpIHJldHVybiBOVUxMOworICAgIFNpemVPZlRhZyAtPSBzaXplb2YoY21zVUludDMyTnVtYmVyKTsKKworICAgIC8vIENoZWNrIGZvciBzaXplCisgICAgaWYgKFNpemVPZlRhZyA8IEFzY2lpQ291bnQpIHJldHVybiBOVUxMOworCisgICAgLy8gQWxsIHNlZW1zIE9rLCBhbGxvY2F0ZSB0aGUgY29udGFpbmVyCisgICAgbWx1ID0gY21zTUxVYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgMSk7CisgICAgaWYgKG1sdSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIC8vIEFzIG1hbnkgbWVtb3J5IGFzIHNpemUgb2YgdGFnCisgICAgVGV4dCA9IChjaGFyKikgX2Ntc01hbGxvYyhzZWxmIC0+Q29udGV4dElELCBBc2NpaUNvdW50ICsgMSk7CisgICAgaWYgKFRleHQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIC8vIFJlYWQgaXQKKyAgICBpZiAoaW8gLT5SZWFkKGlvLCBUZXh0LCBzaXplb2YoY2hhciksIEFzY2lpQ291bnQpICE9IEFzY2lpQ291bnQpIGdvdG8gRXJyb3I7CisgICAgU2l6ZU9mVGFnIC09IEFzY2lpQ291bnQ7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMgYSB0ZXJtaW5hdG9yCisgICAgVGV4dFtBc2NpaUNvdW50XSA9IDA7CisKKyAgICAvLyBTZXQgdGhlIE1MVSBlbnRyeS4gRnJvbSBoZXJlIHdlIGNhbiBiZSB0b2xlcmFudCB0byB3cm9uZyB0eXBlcworICAgIGlmICghY21zTUxVc2V0QVNDSUkobWx1LCBjbXNOb0xhbmd1YWdlLCBjbXNOb0NvdW50cnksIFRleHQpKSBnb3RvIEVycm9yOworICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsICh2b2lkKikgVGV4dCk7CisgICAgVGV4dCA9IE5VTEw7CisKKyAgICAvLyBTa2lwIFVuaWNvZGUgY29kZQorICAgIGlmIChTaXplT2ZUYWcgPCAyKiBzaXplb2YoY21zVUludDMyTnVtYmVyKSkgZ290byBEb25lOworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZVbmljb2RlQ29kZSkpIGdvdG8gRG9uZTsKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmVW5pY29kZUNvdW50KSkgZ290byBEb25lOworICAgIFNpemVPZlRhZyAtPSAyKiBzaXplb2YoY21zVUludDMyTnVtYmVyKTsKKworICAgIGlmIChTaXplT2ZUYWcgPCBVbmljb2RlQ291bnQqc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikpIGdvdG8gRG9uZTsKKworICAgIGZvciAoaT0wOyBpIDwgVW5pY29kZUNvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKCFpbyAtPlJlYWQoaW8sICZEdW1teSwgc2l6ZW9mKGNtc1VJbnQxNk51bWJlciksIDEpKSBnb3RvIERvbmU7CisgICAgfQorICAgIFNpemVPZlRhZyAtPSBVbmljb2RlQ291bnQqc2l6ZW9mKGNtc1VJbnQxNk51bWJlcik7CisKKyAgICAvLyBTa2lwIFNjcmlwdENvZGUgY29kZSBpZiBwcmVzZW50LiBTb21lIGJ1Z2d5IHByb2ZpbGVzIGRvZXMgaGF2ZSBsZXNzCisgICAgLy8gZGF0YSB0aGF0IHN0cmljdHRseSByZXF1aXJlZC4gV2UgbmVlZCB0byBza2lwIGl0IGFzIHRoaXMgdHlwZSBtYXkgY29tZQorICAgIC8vIGVtYmVkZGVkIGluIG90aGVyIHR5cGVzLgorCisgICAgaWYgKFNpemVPZlRhZyA+PSBzaXplb2YoY21zVUludDE2TnVtYmVyKSArIHNpemVvZihjbXNVSW50OE51bWJlcikgKyA2NykgeworCisgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MTZOdW1iZXIoaW8sICZTY3JpcHRDb2RlQ29kZSkpIGdvdG8gRG9uZTsKKyAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAgJlNjcmlwdENvZGVDb3VudCkpIGdvdG8gRG9uZTsKKworICAgICAgICAvLyBTa2lwIHJlc3Qgb2YgdGFnCisgICAgICAgIGZvciAoaT0wOyBpIDwgNjc7IGkrKykgeworICAgICAgICAgICAgaWYgKCFpbyAtPlJlYWQoaW8sICZEdW1teSwgc2l6ZW9mKGNtc1VJbnQ4TnVtYmVyKSwgMSkpIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKK0RvbmU6CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gbWx1OworCitFcnJvcjoKKyAgICBpZiAoVGV4dCkgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgKHZvaWQqKSBUZXh0KTsKKyAgICBpZiAobWx1KSBjbXNNTFVmcmVlKG1sdSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLy8gVGhpcyB0YWcgY2FuIGNvbWUgSU4gVU5BTElHTkVEIFNJWkUuIEluIG9yZGVyIHRvIHByZXZlbnQgaXNzdWVzLCB3ZSBmb3JjZSB6ZXJvcyBvbiBkZXNjcmlwdGlvbiB0byBhbGlnbiBpdAorc3RhdGljCitjbXNCb29sICBUeXBlX1RleHRfRGVzY3JpcHRpb25fV3JpdGUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBuSXRlbXMpCit7CisgICAgY21zTUxVKiBtbHUgPSAoY21zTUxVKikgUHRyOworICAgIGNoYXIgKlRleHQgPSBOVUxMOworICAgIHdjaGFyX3QgKldpZGUgPSBOVUxMOworICAgIGNtc1VJbnQzMk51bWJlciBsZW4sIGxlbl9hbGlnbmVkLCBsZW5fZmlsbGVyX2FsaWdubWVudDsKKyAgICBjbXNCb29sICByYyA9IEZBTFNFOworICAgIGNoYXIgRmlsbGVyWzY4XTsKKworICAgIC8vIFVzZWQgYmVsb3cgZm9yIHdyaXR0aW5nIHplcm9lcworICAgIG1lbXNldChGaWxsZXIsIDAsIHNpemVvZihGaWxsZXIpKTsKKworICAgIC8vIEdldCB0aGUgbGVuIG9mIHN0cmluZworICAgIGxlbiA9IGNtc01MVWdldEFTQ0lJKG1sdSwgY21zTm9MYW5ndWFnZSwgY21zTm9Db3VudHJ5LCBOVUxMLCAwKTsKKworICAgIC8vIEZyb20gSUNDMy40OiBJdCBoYXMgYmVlbiBmb3VuZCB0aGF0IHRleHREZXNjcmlwdGlvblR5cGUgY2FuIGNvbnRhaW4gbWlzYWxpZ25lZCBkYXRhCisgICAgLy8oc2VlIGNsYXVzZSA0LjEgZm9yIHRoZSBkZWZpbml0aW9uIG9mIJNhbGlnbmVkPy4gQmVjYXVzZSB0aGUgVW5pY29kZSBsYW5ndWFnZQorICAgIC8vIGNvZGUgYW5kIFVuaWNvZGUgY291bnQgaW1tZWRpYXRlbHkgZm9sbG93IHRoZSBBU0NJSSBkZXNjcmlwdGlvbiwgdGhlaXIKKyAgICAvLyBhbGlnbm1lbnQgaXMgbm90IGNvcnJlY3QgaWYgdGhlIEFTQ0lJIGNvdW50IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXIuIFRoZQorICAgIC8vIFNjcmlwdENvZGUgY29kZSBpcyBtaXNhbGlnbmVkIHdoZW4gdGhlIEFTQ0lJIGNvdW50IGlzIG9kZC4gUHJvZmlsZSByZWFkaW5nIGFuZAorICAgIC8vIHdyaXRpbmcgc29mdHdhcmUgbXVzdCBiZSB3cml0dGVuIGNhcmVmdWxseSBpbiBvcmRlciB0byBoYW5kbGUgdGhlc2UgYWxpZ25tZW50CisgICAgLy8gcHJvYmxlbXMuCisKKyAgICAvLyBDb21wdXRlIGFuIGFsaWduZWQgc2l6ZQorICAgIGxlbl9hbGlnbmVkID0gX2Ntc0FMSUdOTE9ORyhsZW4pOworICAgIGxlbl9maWxsZXJfYWxpZ25tZW50ID0gbGVuX2FsaWduZWQgLSBsZW47CisKKyAgICAvLyBOdWxsIHN0cmluZ3MKKyAgICBpZiAobGVuIDw9IDApIHsKKworICAgICAgICBUZXh0ID0gKGNoYXIqKSAgICBfY21zRHVwTWVtKHNlbGYgLT5Db250ZXh0SUQsICIiLCBzaXplb2YoY2hhcikpOworICAgICAgICBXaWRlID0gKHdjaGFyX3QqKSBfY21zRHVwTWVtKHNlbGYgLT5Db250ZXh0SUQsIEwiIiwgc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8vIENyZWF0ZSBpbmRlcGVuZGVudCBidWZmZXJzCisgICAgICAgIFRleHQgPSAoY2hhciopIF9jbXNDYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgbGVuLCBzaXplb2YoY2hhcikpOworICAgICAgICBpZiAoVGV4dCA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgICAgIFdpZGUgPSAod2NoYXJfdCopIF9jbXNDYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgbGVuLCBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBpZiAoV2lkZSA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgICAgIC8vIEdldCBib3RoIHJlcHJlc2VudGF0aW9ucy4KKyAgICAgICAgY21zTUxVZ2V0QVNDSUkobWx1LCBjbXNOb0xhbmd1YWdlLCBjbXNOb0NvdW50cnksICBUZXh0LCBsZW4gKiBzaXplb2YoY2hhcikpOworICAgICAgICBjbXNNTFVnZXRXaWRlKG1sdSwgIGNtc05vTGFuZ3VhZ2UsIGNtc05vQ291bnRyeSwgIFdpZGUsIGxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgfQorCisgIC8vICogY21zVUludDMyTnVtYmVyICAgICAgIGNvdW50OyAgICAgICAgICAqIERlc2NyaXB0aW9uIGxlbmd0aAorICAvLyAqIGNtc0ludDhOdW1iZXIgICAgICAgICBkZXNjW2NvdW50XSAgICAgKiBOVUxMIHRlcm1pbmF0ZWQgYXNjaWkgc3RyaW5nCisgIC8vICogY21zVUludDMyTnVtYmVyICAgICAgIHVjTGFuZ0NvZGU7ICAgICAqIFVuaUNvZGUgbGFuZ3VhZ2UgY29kZQorICAvLyAqIGNtc1VJbnQzMk51bWJlciAgICAgICB1Y0NvdW50OyAgICAgICAgKiBVbmlDb2RlIGRlc2NyaXB0aW9uIGxlbmd0aAorICAvLyAqIGNtc0ludDE2TnVtYmVyICAgICAgICB1Y0Rlc2NbdWNDb3VudF07KiBUaGUgVW5pQ29kZSBkZXNjcmlwdGlvbgorICAvLyAqIGNtc1VJbnQxNk51bWJlciAgICAgICBzY0NvZGU7ICAgICAgICAgKiBTY3JpcHRDb2RlIGNvZGUKKyAgLy8gKiBjbXNVSW50OE51bWJlciAgICAgICAgc2NDb3VudDsgICAgICAgICogU2NyaXB0Q29kZSBjb3VudAorICAvLyAqIGNtc0ludDhOdW1iZXIgICAgICAgICBzY0Rlc2NbNjddOyAgICAgKiBTY3JpcHRDb2RlIERlc2NyaXB0aW9uCisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgbGVuX2FsaWduZWQpKSBnb3RvIEVycm9yOworICAgIGlmICghaW8gLT5Xcml0ZShpbywgbGVuLCBUZXh0KSkgZ290byBFcnJvcjsKKyAgICBpZiAoIWlvIC0+V3JpdGUoaW8sIGxlbl9maWxsZXJfYWxpZ25tZW50LCBGaWxsZXIpKSBnb3RvIEVycm9yOworCisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIDApKSBnb3RvIEVycm9yOyAgLy8gdWNMYW5ndWFnZUNvZGUKKworICAgIC8vIFRoaXMgcGFydCBpcyB0cmlja3k6IHdlIG5lZWQgYW4gYWxpZ25lZCB0YWcgc2l6ZSwgYW5kIHRoZSBTY3JpcHRDb2RlIHBhcnQKKyAgICAvLyB0YWtlcyA3MCBieXRlcywgc28gd2UgbmVlZCAyIGV4dHJhIGJ5dGVzIHRvIGRvIHRoZSBhbGlnbm1lbnQKKworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBsZW5fYWxpZ25lZCsxKSkgZ290byBFcnJvcjsKKworICAgIC8vIE5vdGUgdGhhdCBpbiBzb21lIGNvbXBpbGVycyBzaXplb2YoY21zVUludDE2TnVtYmVyKSAhPSBzaXplb2Yod2NoYXJfdCkKKyAgICBpZiAoIV9jbXNXcml0ZVdDaGFyQXJyYXkoaW8sIGxlbiwgV2lkZSkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MTZBcnJheShpbywgbGVuX2ZpbGxlcl9hbGlnbm1lbnQrMSwgKGNtc1VJbnQxNk51bWJlciopIEZpbGxlcikpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBTY3JpcHRDb2RlIENvZGUgJiBjb3VudCAodW51c2VkKQorICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAwKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAwKSkgZ290byBFcnJvcjsKKworICAgIGlmICghaW8gLT5Xcml0ZShpbywgNjcsIEZpbGxlcikpIGdvdG8gRXJyb3I7CisKKyAgICByYyA9IFRSVUU7CisKK0Vycm9yOgorICAgIGlmIChUZXh0KSBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBUZXh0KTsKKyAgICBpZiAoV2lkZSkgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgV2lkZSk7CisKKyAgICByZXR1cm4gcmM7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG5JdGVtcyk7Cit9CisKKworc3RhdGljCit2b2lkKiBUeXBlX1RleHRfRGVzY3JpcHRpb25fRHVwKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY29uc3Qgdm9pZCAqUHRyLCBjbXNVSW50MzJOdW1iZXIgbikKK3sKKyAgICByZXR1cm4gKHZvaWQqKSBjbXNNTFVkdXAoKGNtc01MVSopIFB0cik7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG4pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYwordm9pZCBUeXBlX1RleHRfRGVzY3JpcHRpb25fRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgICBjbXNNTFUqIG1sdSA9IChjbXNNTFUqKSBQdHI7CisKKyAgICBjbXNNTFVmcmVlKG1sdSk7CisgICAgcmV0dXJuOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCitzdGF0aWMKK2Ntc1RhZ1R5cGVTaWduYXR1cmUgRGVjaWRlVGV4dERlc2NUeXBlKGNtc0Zsb2F0NjROdW1iZXIgSUNDVmVyc2lvbiwgY29uc3Qgdm9pZCAqRGF0YSkKK3sKKyAgICBpZiAoSUNDVmVyc2lvbiA+PSA0LjApCisgICAgICAgIHJldHVybiBjbXNTaWdNdWx0aUxvY2FsaXplZFVuaWNvZGVUeXBlOworCisgICAgcmV0dXJuIGNtc1NpZ1RleHREZXNjcmlwdGlvblR5cGU7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKERhdGEpOworfQorCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ0N1cnZlVHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworc3RhdGljCit2b2lkICpUeXBlX0N1cnZlX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgQ291bnQ7CisgICAgY21zVG9uZUN1cnZlKiBOZXdHYW1tYTsKKyAgICAKKyAgICAqbkl0ZW1zID0gMDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmQ291bnQpKSByZXR1cm4gTlVMTDsKKworICAgIHN3aXRjaCAoQ291bnQpIHsKKworICAgICAgICAgICBjYXNlIDA6ICAgLy8gTGluZWFyLgorICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgU2luZ2xlR2FtbWEgPSAxLjA7CisKKyAgICAgICAgICAgICAgICAgICBOZXdHYW1tYSA9IGNtc0J1aWxkUGFyYW1ldHJpY1RvbmVDdXJ2ZShzZWxmIC0+Q29udGV4dElELCAxLCAmU2luZ2xlR2FtbWEpOworICAgICAgICAgICAgICAgICAgIGlmICghTmV3R2FtbWEpIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICpuSXRlbXMgPSAxOworICAgICAgICAgICAgICAgICAgIHJldHVybiBOZXdHYW1tYTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgCisgICAgICAgICAgIGNhc2UgMTogIC8vIFNwZWNpZmllZCBhcyB0aGUgZXhwb25lbnQgb2YgZ2FtbWEgZnVuY3Rpb24KKyAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICBjbXNVSW50MTZOdW1iZXIgU2luZ2xlR2FtbWFGaXhlZDsKKyAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIFNpbmdsZUdhbW1hOworCisgICAgICAgICAgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgJlNpbmdsZUdhbW1hRml4ZWQpKSByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICBTaW5nbGVHYW1tYSA9IF9jbXM4Rml4ZWQ4dG9Eb3VibGUoU2luZ2xlR2FtbWFGaXhlZCk7CisKKyAgICAgICAgICAgICAgICAgICAqbkl0ZW1zID0gMTsKKyAgICAgICAgICAgICAgICAgICByZXR1cm4gY21zQnVpbGRQYXJhbWV0cmljVG9uZUN1cnZlKHNlbGYgLT5Db250ZXh0SUQsIDEsICZTaW5nbGVHYW1tYSk7CisgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgZGVmYXVsdDogIC8vIEN1cnZlCisKKyAgICAgICAgICAgICAgIGlmIChDb3VudCA+IDB4N0ZGRikKKyAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgLy8gVGhpcyBpcyB0byBwcmV2ZW50IGJhZCBndXlzIGZvciBkb2luZyBiYWQgdGhpbmdzCisKKyAgICAgICAgICAgICAgIE5ld0dhbW1hID0gY21zQnVpbGRUYWJ1bGF0ZWRUb25lQ3VydmUxNihzZWxmIC0+Q29udGV4dElELCBDb3VudCwgTlVMTCk7CisgICAgICAgICAgICAgICBpZiAoIU5ld0dhbW1hKSByZXR1cm4gTlVMTDsKKworICAgICAgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQxNkFycmF5KGlvLCBDb3VudCwgTmV3R2FtbWEgLT4gVGFibGUxNikpIHJldHVybiBOVUxMOworCisgICAgICAgICAgICAgICAqbkl0ZW1zID0gMTsKKyAgICAgICAgICAgICAgIHJldHVybiBOZXdHYW1tYTsKKyAgICB9CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFNpemVPZlRhZyk7Cit9CisKKworc3RhdGljCitjbXNCb29sICBUeXBlX0N1cnZlX1dyaXRlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgdm9pZCogUHRyLCBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zKQoreworICAgIGNtc1RvbmVDdXJ2ZSogQ3VydmUgPSAoY21zVG9uZUN1cnZlKikgUHRyOworCisgICAgaWYgKEN1cnZlIC0+blNlZ21lbnRzID09IDEgJiYgQ3VydmUgLT5TZWdtZW50c1swXS5UeXBlID09IDEpIHsKKworICAgICAgICAgICAgLy8gU2luZ2xlIGdhbW1hLCBwcmVzZXJ2ZSBudW1iZXIKKyAgICAgICAgICAgIGNtc1VJbnQxNk51bWJlciBTaW5nbGVHYW1tYUZpeGVkID0gX2Ntc0RvdWJsZVRvOEZpeGVkOChDdXJ2ZSAtPlNlZ21lbnRzWzBdLlBhcmFtc1swXSk7CisKKyAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCAxKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIFNpbmdsZUdhbW1hRml4ZWQpKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIH0KKworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBDdXJ2ZSAtPm5FbnRyaWVzKSkgcmV0dXJuIEZBTFNFOworICAgIHJldHVybiBfY21zV3JpdGVVSW50MTZBcnJheShpbywgQ3VydmUgLT5uRW50cmllcywgQ3VydmUgLT5UYWJsZTE2KTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKK3N0YXRpYwordm9pZCogVHlwZV9DdXJ2ZV9EdXAoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjb25zdCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgIHJldHVybiAodm9pZCopIGNtc0R1cFRvbmVDdXJ2ZSgoY21zVG9uZUN1cnZlKikgUHRyKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfQ3VydmVfRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgICBjbXNUb25lQ3VydmUqIGdhbW1hID0gKGNtc1RvbmVDdXJ2ZSopIFB0cjsKKworICAgIGNtc0ZyZWVUb25lQ3VydmUoZ2FtbWEpOworICAgIHJldHVybjsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnUGFyYW1ldHJpY0N1cnZlVHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCisvLyBEZWNpZGUgd2hpY2ggY3VydmUgdHlwZSB0byB1c2Ugb24gd3JpdHRpbmcKK3N0YXRpYworY21zVGFnVHlwZVNpZ25hdHVyZSBEZWNpZGVDdXJ2ZVR5cGUoY21zRmxvYXQ2NE51bWJlciBJQ0NWZXJzaW9uLCBjb25zdCB2b2lkICpEYXRhKQoreworICAgIGNtc1RvbmVDdXJ2ZSogQ3VydmUgPSAoY21zVG9uZUN1cnZlKikgRGF0YTsKKworICAgIGlmIChJQ0NWZXJzaW9uIDwgNC4wKSByZXR1cm4gY21zU2lnQ3VydmVUeXBlOworICAgIGlmIChDdXJ2ZSAtPm5TZWdtZW50cyAhPSAxKSByZXR1cm4gY21zU2lnQ3VydmVUeXBlOyAgICAgICAgICAvLyBPbmx5IDEtc2VnbWVudCBjdXJ2ZXMgY2FuIGJlIHNhdmVkIGFzIHBhcmFtZXRyaWMKKyAgICBpZiAoQ3VydmUgLT5TZWdtZW50c1swXS5UeXBlIDwgMCkgcmV0dXJuIGNtc1NpZ0N1cnZlVHlwZTsgICAgLy8gT25seSBub24taW52ZXJ0ZWQgY3VydmVzCisgICAgaWYgKEN1cnZlIC0+U2VnbWVudHNbMF0uVHlwZSA+IDUpIHJldHVybiBjbXNTaWdDdXJ2ZVR5cGU7ICAgIC8vIE9ubHkgSUNDIHBhcmFtZXRyaWMgY3VydmVzCisKKyAgICByZXR1cm4gY21zU2lnUGFyYW1ldHJpY0N1cnZlVHlwZTsKK30KKworc3RhdGljCit2b2lkICpUeXBlX1BhcmFtZXRyaWNDdXJ2ZV9SZWFkKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuSXRlbXMsIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBQYXJhbXNCeVR5cGVbXSA9IHsgMSwgMywgNCwgNSwgNyB9OworICAgIGNtc0Zsb2F0NjROdW1iZXIgUGFyYW1zWzEwXTsKKyAgICBjbXNVSW50MTZOdW1iZXIgVHlwZTsKKyAgICBpbnQgaSwgbjsKKyAgICBjbXNUb25lQ3VydmUqIE5ld0dhbW1hOworCisgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgJlR5cGUpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCBOVUxMKSkgcmV0dXJuIE5VTEw7ICAgLy8gUmVzZXJ2ZWQKKworICAgIGlmIChUeXBlID4gNCkgeworCisgICAgICAgIGNtc1NpZ25hbEVycm9yKHNlbGYtPkNvbnRleHRJRCwgY21zRVJST1JfVU5LTk9XTl9FWFRFTlNJT04sICJVbmtub3duIHBhcmFtZXRyaWMgY3VydmUgdHlwZSAnJWQnIiwgVHlwZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbXNldChQYXJhbXMsIDAsIHNpemVvZihQYXJhbXMpKTsKKyAgICBuID0gUGFyYW1zQnlUeXBlW1R5cGVdOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAmUGFyYW1zW2ldKSkgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgTmV3R2FtbWEgPSBjbXNCdWlsZFBhcmFtZXRyaWNUb25lQ3VydmUoc2VsZiAtPkNvbnRleHRJRCwgVHlwZSsxLCBQYXJhbXMpOworCisgICAgKm5JdGVtcyA9IDE7CisgICAgcmV0dXJuIE5ld0dhbW1hOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisKK3N0YXRpYworY21zQm9vbCAgVHlwZV9QYXJhbWV0cmljQ3VydmVfV3JpdGUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBuSXRlbXMpCit7CisgICAgY21zVG9uZUN1cnZlKiBDdXJ2ZSA9IChjbXNUb25lQ3VydmUqKSBQdHI7CisgICAgaW50IGksIG5QYXJhbXMsIHR5cGVuOworICAgIHN0YXRpYyBjb25zdCBpbnQgUGFyYW1zQnlUeXBlW10gPSB7IDAsIDEsIDMsIDQsIDUsIDcgfTsKKworICAgIHR5cGVuID0gQ3VydmUgLT4gU2VnbWVudHNbMF0uVHlwZTsKKworICAgIGlmIChDdXJ2ZSAtPm5TZWdtZW50cyA+IDEgfHwgdHlwZW4gPCAxKSB7CisKKyAgICAgICAgY21zU2lnbmFsRXJyb3Ioc2VsZi0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIk11bHRpc2VnbWVudCBvciBJbnZlcnRlZCBwYXJhbWV0cmljIGN1cnZlcyBjYW5ub3QgYmUgd3JpdHRlbiIpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgaWYgKHR5cGVuID4gNSkgeworICAgICAgICBjbXNTaWduYWxFcnJvcihzZWxmLT5Db250ZXh0SUQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiVW5zdXBwb3J0ZWQgcGFyYW1ldHJpYyBjdXJ2ZSIpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgblBhcmFtcyA9IFBhcmFtc0J5VHlwZVt0eXBlbl07CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNk51bWJlcihpbywgKGNtc1VJbnQxNk51bWJlcikgKEN1cnZlIC0+U2VnbWVudHNbMF0uVHlwZSAtIDEpKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOyAgICAgICAgLy8gUmVzZXJ2ZWQKKworICAgIGZvciAoaT0wOyBpIDwgblBhcmFtczsgaSsrKSB7CisKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIEN1cnZlIC0+IFNlZ21lbnRzWzBdLlBhcmFtc1tpXSkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKK30KKworc3RhdGljCit2b2lkKiBUeXBlX1BhcmFtZXRyaWNDdXJ2ZV9EdXAoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjb25zdCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgIHJldHVybiAodm9pZCopIGNtc0R1cFRvbmVDdXJ2ZSgoY21zVG9uZUN1cnZlKikgUHRyKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfUGFyYW1ldHJpY0N1cnZlX0ZyZWUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCB2b2lkKiBQdHIpCit7CisgICAgY21zVG9uZUN1cnZlKiBnYW1tYSA9IChjbXNUb25lQ3VydmUqKSBQdHI7CisKKyAgICBjbXNGcmVlVG9uZUN1cnZlKGdhbW1hKTsKKyAgICByZXR1cm47CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ0RhdGVUaW1lVHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworLy8gQSAxMi1ieXRlIHZhbHVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0aW1lIGFuZCBkYXRlLCB3aGVyZSB0aGUgYnl0ZSB1c2FnZSBpcyBhc3NpZ25lZAorLy8gYXMgc3BlY2lmaWVkIGluIHRhYmxlIDEuIFRoZSBhY3R1YWwgdmFsdWVzIGFyZSBlbmNvZGVkIGFzIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VycworLy8gKHVJbnQxNk51bWJlciAtIHNlZSA1LjEuNikuCisvLworLy8gQWxsIHRoZSBkYXRlVGltZU51bWJlciB2YWx1ZXMgaW4gYSBwcm9maWxlIHNoYWxsIGJlIGluIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lCisvLyAoVVRDLCBhbHNvIGtub3duIGFzIEdNVCBvciBaVUxVIFRpbWUpLiBQcm9maWxlIHdyaXRlcnMgYXJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgbG9jYWwKKy8vIHRpbWUgdG8gVVRDIHdoZW4gc2V0dGluZyB0aGVzZSB2YWx1ZXMuIFByb2dyYW1tZXMgdGhhdCBkaXNwbGF5IHRoZXNlIHZhbHVlcyBtYXkgc2hvdworLy8gdGhlIGRhdGVUaW1lTnVtYmVyIGFzIFVUQywgc2hvdyB0aGUgZXF1aXZhbGVudCBsb2NhbCB0aW1lIChhdCBjdXJyZW50IGxvY2FsZSksIG9yCisvLyBkaXNwbGF5IGJvdGggVVRDIGFuZCBsb2NhbCB2ZXJzaW9ucyBvZiB0aGUgZGF0ZVRpbWVOdW1iZXIuCisKK3N0YXRpYwordm9pZCAqVHlwZV9EYXRlVGltZV9SZWFkKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuSXRlbXMsIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgY21zRGF0ZVRpbWVOdW1iZXIgdGltZXN0YW1wOworICAgIHN0cnVjdCB0bSAqIE5ld0RhdGVUaW1lOworCisgICAgKm5JdGVtcyA9IDA7CisgICAgTmV3RGF0ZVRpbWUgPSAoc3RydWN0IHRtKikgX2Ntc01hbGxvYyhzZWxmIC0+Q29udGV4dElELCBzaXplb2Yoc3RydWN0IHRtKSk7CisgICAgaWYgKE5ld0RhdGVUaW1lID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgaWYgKGlvLT5SZWFkKGlvLCAmdGltZXN0YW1wLCBzaXplb2YoY21zRGF0ZVRpbWVOdW1iZXIpLCAxKSAhPSAxKSByZXR1cm4gTlVMTDsKKworICAgICBfY21zRGVjb2RlRGF0ZVRpbWVOdW1iZXIoJnRpbWVzdGFtcCwgTmV3RGF0ZVRpbWUpOworCisgICAgICpuSXRlbXMgPSAxOworICAgICByZXR1cm4gTmV3RGF0ZVRpbWU7CisKKyAgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisKK3N0YXRpYworY21zQm9vbCAgVHlwZV9EYXRlVGltZV9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBzdHJ1Y3QgdG0gKiBEYXRlVGltZSA9IChzdHJ1Y3QgdG0qKSBQdHI7CisgICAgY21zRGF0ZVRpbWVOdW1iZXIgdGltZXN0YW1wOworCisgICAgX2Ntc0VuY29kZURhdGVUaW1lTnVtYmVyKCZ0aW1lc3RhbXAsIERhdGVUaW1lKTsKKyAgICBpZiAoIWlvIC0+V3JpdGUoaW8sIHNpemVvZihjbXNEYXRlVGltZU51bWJlciksICZ0aW1lc3RhbXApKSByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCitzdGF0aWMKK3ZvaWQqIFR5cGVfRGF0ZVRpbWVfRHVwKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY29uc3Qgdm9pZCAqUHRyLCBjbXNVSW50MzJOdW1iZXIgbikKK3sKKyAgICByZXR1cm4gX2Ntc0R1cE1lbShzZWxmIC0+Q29udGV4dElELCBQdHIsIHNpemVvZihzdHJ1Y3QgdG0pKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7Cit9CisKK3N0YXRpYwordm9pZCBUeXBlX0RhdGVUaW1lX0ZyZWUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCB2b2lkKiBQdHIpCit7CisgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgUHRyKTsKK30KKworCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGljTWVhc3VyZW1lbnRUeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisvKgorVGhlIG1lYXN1cmVtZW50VHlwZSBpbmZvcm1hdGlvbiByZWZlcnMgb25seSB0byB0aGUgaW50ZXJuYWwgcHJvZmlsZSBkYXRhIGFuZCBpcworbWVhbnQgdG8gcHJvdmlkZSBwcm9maWxlIG1ha2VycyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgZGVmYXVsdCBtZWFzdXJlbWVudAorc3BlY2lmaWNhdGlvbnMuCisqLworCitzdGF0aWMKK3ZvaWQgKlR5cGVfTWVhc3VyZW1lbnRfUmVhZChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQzMk51bWJlciogbkl0ZW1zLCBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc0lDQ01lYXN1cmVtZW50Q29uZGl0aW9ucyBtYzsKKworCQorICAgIG1lbXNldCgmbWMsIDAsIHNpemVvZihtYykpOworCQorICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZtYy5PYnNlcnZlcikpIHJldHVybiBOVUxMOworICAgIGlmICghX2Ntc1JlYWRYWVpOdW1iZXIoaW8sICAgICZtYy5CYWNraW5nKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJm1jLkdlb21ldHJ5KSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJm1jLkZsYXJlKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJm1jLklsbHVtaW5hbnRUeXBlKSkgcmV0dXJuIE5VTEw7CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gX2Ntc0R1cE1lbShzZWxmIC0+Q29udGV4dElELCAmbWMsIHNpemVvZihjbXNJQ0NNZWFzdXJlbWVudENvbmRpdGlvbnMpKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU2l6ZU9mVGFnKTsKK30KKworCitzdGF0aWMKK2Ntc0Jvb2wgIFR5cGVfTWVhc3VyZW1lbnRfV3JpdGUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBuSXRlbXMpCit7CisgICAgY21zSUNDTWVhc3VyZW1lbnRDb25kaXRpb25zKiBtYyA9KGNtc0lDQ01lYXN1cmVtZW50Q29uZGl0aW9ucyopIFB0cjsKKworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBtYy0+T2JzZXJ2ZXIpKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVYWVpOdW1iZXIoaW8sICAgICZtYy0+QmFja2luZykpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgbWMtPkdlb21ldHJ5KSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBtYy0+RmxhcmUpKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIG1jLT5JbGx1bWluYW50VHlwZSkpIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuSXRlbXMpOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYwordm9pZCogVHlwZV9NZWFzdXJlbWVudF9EdXAoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjb25zdCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgICByZXR1cm4gX2Ntc0R1cE1lbShzZWxmIC0+Q29udGV4dElELCBQdHIsIHNpemVvZihjbXNJQ0NNZWFzdXJlbWVudENvbmRpdGlvbnMpKTsKKworICAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG4pOworfQorCitzdGF0aWMKK3ZvaWQgVHlwZV9NZWFzdXJlbWVudF9GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCogUHRyKQoreworICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgUHRyKTsKK30KKworCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVHlwZSBjbXNTaWdNdWx0aUxvY2FsaXplZFVuaWNvZGVUeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vICAgRG8gTk9UIHRydXN0IFNpemVPZlRhZyBhcyB0aGVyZSBpcyBhbiBpc3N1ZSBvbiB0aGUgZGVmaW5pdGlvbiBvZiBwcm9maWxlU2VxdWVuY2VEZXNjVGFnLiBTZWUgdGhlIFRlY2hOb3RlIGZyb20KKy8vICAgTWF4IERlcmhhayBhbmQgUm9oaXQgUGF0aWwgYWJvdXQgdGhpczogYmFzaWNhbGx5IHRoZSBzaXplIG9mIHRoZSBzdHJpbmcgdGFibGUgc2hvdWxkIGJlIGd1ZXNzZWQgYW5kIGNhbm5vdCBiZQorLy8gICB0YWtlbiBmcm9tIHRoZSBzaXplIG9mIHRhZyBpZiB0aGlzIHRhZyBpcyBlbWJlZGRlZCBhcyBwYXJ0IG9mIGJpZ2dlciBzdHJ1Y3R1cmVzIChwcm9maWxlU2VxdWVuY2VEZXNjVGFnLCBmb3IgaW5zdGFuY2UpCisvLworCitzdGF0aWMKK3ZvaWQgKlR5cGVfTUxVX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNNTFUqIG1sdTsKKyAgICBjbXNVSW50MzJOdW1iZXIgQ291bnQsIFJlY0xlbiwgTnVtT2ZXY2hhcjsKKyAgICBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mSGVhZGVyOworICAgIGNtc1VJbnQzMk51bWJlciAgTGVuLCBPZmZzZXQ7CisgICAgY21zVUludDMyTnVtYmVyICBpOworICAgIHdjaGFyX3QqICAgICAgICAgQmxvY2s7CisgICAgY21zVUludDMyTnVtYmVyICBCZWdpbk9mVGhpc1N0cmluZywgRW5kT2ZUaGlzU3RyaW5nLCBMYXJnZXN0UG9zaXRpb247CisKKyAgICAqbkl0ZW1zID0gMDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmQ291bnQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmUmVjTGVuKSkgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUmVjTGVuICE9IDEyKSB7CisKKyAgICAgICAgY21zU2lnbmFsRXJyb3Ioc2VsZi0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIm11bHRpTG9jYWxpemVkVW5pY29kZVR5cGUgb2YgbGVuICE9IDEyIGlzIG5vdCBzdXBwb3J0ZWQuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1sdSA9IGNtc01MVWFsbG9jKHNlbGYgLT5Db250ZXh0SUQsIENvdW50KTsKKyAgICBpZiAobWx1ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgbWx1IC0+VXNlZEVudHJpZXMgPSBDb3VudDsKKworICAgIFNpemVPZkhlYWRlciA9IDEyICogQ291bnQgKyBzaXplb2YoX2Ntc1RhZ0Jhc2UpOworICAgIExhcmdlc3RQb3NpdGlvbiA9IDA7CisKKyAgICBmb3IgKGk9MDsgaSA8IENvdW50OyBpKyspIHsKKworICAgICAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmbWx1IC0+RW50cmllc1tpXS5MYW5ndWFnZSkpIGdvdG8gRXJyb3I7CisgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MTZOdW1iZXIoaW8sICZtbHUgLT5FbnRyaWVzW2ldLkNvdW50cnkpKSAgZ290byBFcnJvcjsKKworICAgICAgICAvLyBOb3cgZGVhbCB3aXRoIExlbiBhbmQgb2Zmc2V0LgorICAgICAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmTGVuKSkgZ290byBFcnJvcjsKKyAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJk9mZnNldCkpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIG92ZXJmbG93CisgICAgICAgIGlmIChPZmZzZXQgPCAoU2l6ZU9mSGVhZGVyICsgOCkpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgLy8gVHJ1ZSBiZWdpbiBvZiB0aGUgc3RyaW5nCisgICAgICAgIEJlZ2luT2ZUaGlzU3RyaW5nID0gT2Zmc2V0IC0gU2l6ZU9mSGVhZGVyIC0gODsKKworICAgICAgICAvLyBBanVzdCB0byB3Y2hhcl90IGVsZW1lbnRzCisgICAgICAgIG1sdSAtPkVudHJpZXNbaV0uTGVuID0gKExlbiAqIHNpemVvZih3Y2hhcl90KSkgLyBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKKyAgICAgICAgbWx1IC0+RW50cmllc1tpXS5TdHJXID0gKEJlZ2luT2ZUaGlzU3RyaW5nICogc2l6ZW9mKHdjaGFyX3QpKSAvIHNpemVvZihjbXNVSW50MTZOdW1iZXIpOworCisgICAgICAgIC8vIFRvIGd1ZXNzIG1heGltdW0gc2l6ZSwgYWRkIG9mZnNldCArIGxlbgorICAgICAgICBFbmRPZlRoaXNTdHJpbmcgPSBCZWdpbk9mVGhpc1N0cmluZyArIExlbjsKKyAgICAgICAgaWYgKEVuZE9mVGhpc1N0cmluZyA+IExhcmdlc3RQb3NpdGlvbikKKyAgICAgICAgICAgIExhcmdlc3RQb3NpdGlvbiA9IEVuZE9mVGhpc1N0cmluZzsKKyAgICB9CisKKyAgICAvLyBOb3cgcmVhZCB0aGUgcmVtYWluaW5nIG9mIHRhZyBhbmQgZmlsbCBhbGwgc3RyaW5ncy4gU3Vic3RyYWN0IHRoZSBkaXJlY3RvcnkKKyAgICBTaXplT2ZUYWcgICA9IChMYXJnZXN0UG9zaXRpb24gKiBzaXplb2Yod2NoYXJfdCkpIC8gc2l6ZW9mKGNtc1VJbnQxNk51bWJlcik7CisgICAgaWYgKFNpemVPZlRhZyA9PSAwKQorICAgIHsKKyAgICAgICAgQmxvY2sgPSBOVUxMOworICAgICAgICBOdW1PZldjaGFyID0gMDsKKworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBCbG9jayA9ICh3Y2hhcl90KikgX2Ntc01hbGxvYyhzZWxmIC0+Q29udGV4dElELCBTaXplT2ZUYWcpOworICAgICAgICBpZiAoQmxvY2sgPT0gTlVMTCkgZ290byBFcnJvcjsKKyAgICAgICAgTnVtT2ZXY2hhciA9IFNpemVPZlRhZyAvIHNpemVvZih3Y2hhcl90KTsKKyAgICAgICAgaWYgKCFfY21zUmVhZFdDaGFyQXJyYXkoaW8sIE51bU9mV2NoYXIsIEJsb2NrKSkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBtbHUgLT5NZW1Qb29sICA9IEJsb2NrOworICAgIG1sdSAtPlBvb2xTaXplID0gU2l6ZU9mVGFnOworICAgIG1sdSAtPlBvb2xVc2VkID0gU2l6ZU9mVGFnOworCisgICAgKm5JdGVtcyA9IDE7CisgICAgcmV0dXJuICh2b2lkKikgbWx1OworCitFcnJvcjoKKyAgICBpZiAobWx1KSBjbXNNTFVmcmVlKG1sdSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYworY21zQm9vbCAgVHlwZV9NTFVfV3JpdGUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBuSXRlbXMpCit7CisgICAgY21zTUxVKiBtbHUgPShjbXNNTFUqKSBQdHI7CisgICAgY21zVUludDMyTnVtYmVyIEhlYWRlclNpemU7CisgICAgY21zVUludDMyTnVtYmVyICBMZW4sIE9mZnNldDsKKyAgICBpbnQgaTsKKworICAgIGlmIChQdHIgPT0gTlVMTCkgeworCisgICAgICAgICAgLy8gRW1wdHkgcGxhY2Vob2xkZXIKKyAgICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMTIpKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIG1sdSAtPlVzZWRFbnRyaWVzKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCAxMikpIHJldHVybiBGQUxTRTsKKworICAgIEhlYWRlclNpemUgPSAxMiAqIG1sdSAtPlVzZWRFbnRyaWVzICsgc2l6ZW9mKF9jbXNUYWdCYXNlKTsKKworICAgIGZvciAoaT0wOyBpIDwgbWx1IC0+VXNlZEVudHJpZXM7IGkrKykgeworCisgICAgICAgIExlbiAgICA9ICBtbHUgLT5FbnRyaWVzW2ldLkxlbjsKKyAgICAgICAgT2Zmc2V0ID0gIG1sdSAtPkVudHJpZXNbaV0uU3RyVzsKKworICAgICAgICBMZW4gICAgPSAoTGVuICogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikpIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgICAgICBPZmZzZXQgPSAoT2Zmc2V0ICogc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikpIC8gc2l6ZW9mKHdjaGFyX3QpICsgSGVhZGVyU2l6ZSArIDg7CisKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIG1sdSAtPkVudHJpZXNbaV0uTGFuZ3VhZ2UpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCBtbHUgLT5FbnRyaWVzW2ldLkNvdW50cnkpKSAgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgTGVuKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgT2Zmc2V0KSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGlmICghX2Ntc1dyaXRlV0NoYXJBcnJheShpbywgbWx1IC0+UG9vbFVzZWQgLyBzaXplb2Yod2NoYXJfdCksICh3Y2hhcl90KikgIG1sdSAtPk1lbVBvb2wpKSByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKK3N0YXRpYwordm9pZCogVHlwZV9NTFVfRHVwKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY29uc3Qgdm9pZCAqUHRyLCBjbXNVSW50MzJOdW1iZXIgbikKK3sKKyAgICByZXR1cm4gKHZvaWQqKSBjbXNNTFVkdXAoKGNtc01MVSopIFB0cik7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG4pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYwordm9pZCBUeXBlX01MVV9GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCogUHRyKQoreworICAgIGNtc01MVWZyZWUoKGNtc01MVSopIFB0cik7CisgICAgcmV0dXJuOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVHlwZSBjbXNTaWdMdXQ4VHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworLy8gRGVjaWRlIHdoaWNoIExVVCB0eXBlIHRvIHVzZSBvbiB3cml0dGluZworc3RhdGljCitjbXNUYWdUeXBlU2lnbmF0dXJlIERlY2lkZUxVVHR5cGVBMkIoY21zRmxvYXQ2NE51bWJlciBJQ0NWZXJzaW9uLCBjb25zdCB2b2lkICpEYXRhKQoreworICAgIGNtc1BpcGVsaW5lKiBMdXQgPSAoY21zUGlwZWxpbmUqKSBEYXRhOworCisgICAgaWYgKElDQ1ZlcnNpb24gPCA0LjApIHsKKyAgICAgICAgaWYgKEx1dCAtPlNhdmVBczhCaXRzKSByZXR1cm4gY21zU2lnTHV0OFR5cGU7CisgICAgICAgIHJldHVybiBjbXNTaWdMdXQxNlR5cGU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAgcmV0dXJuIGNtc1NpZ0x1dEF0b0JUeXBlOworICAgIH0KK30KKworc3RhdGljCitjbXNUYWdUeXBlU2lnbmF0dXJlIERlY2lkZUxVVHR5cGVCMkEoY21zRmxvYXQ2NE51bWJlciBJQ0NWZXJzaW9uLCBjb25zdCB2b2lkICpEYXRhKQoreworICAgIGNtc1BpcGVsaW5lKiBMdXQgPSAoY21zUGlwZWxpbmUqKSBEYXRhOworCisgICAgaWYgKElDQ1ZlcnNpb24gPCA0LjApIHsKKyAgICAgICAgaWYgKEx1dCAtPlNhdmVBczhCaXRzKSByZXR1cm4gY21zU2lnTHV0OFR5cGU7CisgICAgICAgIHJldHVybiBjbXNTaWdMdXQxNlR5cGU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAgcmV0dXJuIGNtc1NpZ0x1dEJ0b0FUeXBlOworICAgIH0KK30KKworLyoKK1RoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgYSBjb2xvdXIgdHJhbnNmb3JtIHVzaW5nIHRhYmxlcyBvZiA4LWJpdCBwcmVjaXNpb24uCitUaGlzIHR5cGUgY29udGFpbnMgZm91ciBwcm9jZXNzaW5nIGVsZW1lbnRzOiBhIDMgYnkgMyBtYXRyaXggKHdoaWNoIHNoYWxsIGJlCit0aGUgaWRlbnRpdHkgbWF0cml4IHVubGVzcyB0aGUgaW5wdXQgY29sb3VyIHNwYWNlIGlzIFhZWiksIGEgc2V0IG9mIG9uZSBkaW1lbnNpb25hbAoraW5wdXQgdGFibGVzLCBhIG11bHRpZGltZW5zaW9uYWwgbG9va3VwIHRhYmxlLCBhbmQgYSBzZXQgb2Ygb25lIGRpbWVuc2lvbmFsIG91dHB1dAordGFibGVzLiBEYXRhIGlzIHByb2Nlc3NlZCB1c2luZyB0aGVzZSBlbGVtZW50cyB2aWEgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZToKKyhtYXRyaXgpIC0+ICgxZCBpbnB1dCB0YWJsZXMpICAtPiAobXVsdGlkaW1lbnNpb25hbCBsb29rdXAgdGFibGUgLSBDTFVUKSAtPiAoMWQgb3V0cHV0IHRhYmxlcykKKworQnl0ZSBQb3NpdGlvbiAgIEZpZWxkIExlbmd0aCAoYnl0ZXMpICBDb250ZW50IEVuY29kZWQgYXMuLi4KKzggICAgICAgICAgICAgICAgICAxICAgICAgICAgIE51bWJlciBvZiBJbnB1dCBDaGFubmVscyAoaSkgICAgdUludDhOdW1iZXIKKzkgICAgICAgICAgICAgICAgICAxICAgICAgICAgIE51bWJlciBvZiBPdXRwdXQgQ2hhbm5lbHMgKG8pICAgdUludDhOdW1iZXIKKzEwICAgICAgICAgICAgICAgICAxICAgICAgICAgIE51bWJlciBvZiBDTFVUIGdyaWQgcG9pbnRzIChpZGVudGljYWwgZm9yIGVhY2ggc2lkZSkgKGcpIHVJbnQ4TnVtYmVyCisxMSAgICAgICAgICAgICAgICAgMSAgICAgICAgICBSZXNlcnZlZCBmb3IgcGFkZGluZyAoZmlsbCB3aXRoIDAwaCkKKworMTIuLjE1ICAgICAgICAgICAgIDQgICAgICAgICAgRW5jb2RlZCBlMDAgcGFyYW1ldGVyICAgczE1Rml4ZWQxNk51bWJlcgorKi8KKworCisvLyBSZWFkIDggYml0IHRhYmxlcyBhcyBnYW1tYSBmdW5jdGlvbnMKK3N0YXRpYworY21zQm9vbCAgUmVhZDhiaXRUYWJsZXMoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0lPSEFORExFUiogaW8sIGNtc1BpcGVsaW5lKiBsdXQsIGludCBuQ2hhbm5lbHMpCit7CisgICAgY21zVUludDhOdW1iZXIqIFRlbXAgPSBOVUxMOworICAgIGludCBpLCBqOworICAgIGNtc1RvbmVDdXJ2ZSogVGFibGVzW2Ntc01BWENIQU5ORUxTXTsKKworICAgIGlmIChuQ2hhbm5lbHMgPiBjbXNNQVhDSEFOTkVMUykgcmV0dXJuIEZBTFNFOworICAgIGlmIChuQ2hhbm5lbHMgPD0gMCkgcmV0dXJuIEZBTFNFOworCisgICAgbWVtc2V0KFRhYmxlcywgMCwgc2l6ZW9mKFRhYmxlcykpOworCisgICAgVGVtcCA9IChjbXNVSW50OE51bWJlciopIF9jbXNNYWxsb2MoQ29udGV4dElELCAyNTYpOworICAgIGlmIChUZW1wID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIGZvciAoaT0wOyBpIDwgbkNoYW5uZWxzOyBpKyspIHsKKyAgICAgICAgVGFibGVzW2ldID0gY21zQnVpbGRUYWJ1bGF0ZWRUb25lQ3VydmUxNihDb250ZXh0SUQsIDI1NiwgTlVMTCk7CisgICAgICAgIGlmIChUYWJsZXNbaV0gPT0gTlVMTCkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IG5DaGFubmVsczsgaSsrKSB7CisKKyAgICAgICAgaWYgKGlvIC0+UmVhZChpbywgVGVtcCwgMjU2LCAxKSAhPSAxKSBnb3RvIEVycm9yOworCisgICAgICAgIGZvciAoaj0wOyBqIDwgMjU2OyBqKyspCisgICAgICAgICAgICBUYWJsZXNbaV0tPlRhYmxlMTZbal0gPSAoY21zVUludDE2TnVtYmVyKSBGUk9NXzhfVE9fMTYoVGVtcFtqXSk7CisgICAgfQorCisgICAgX2Ntc0ZyZWUoQ29udGV4dElELCBUZW1wKTsKKyAgICBUZW1wID0gTlVMTDsKKworICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShsdXQsIGNtc0FUX0VORCwgY21zU3RhZ2VBbGxvY1RvbmVDdXJ2ZXMoQ29udGV4dElELCBuQ2hhbm5lbHMsIFRhYmxlcykpKQorICAgICAgICBnb3RvIEVycm9yOworCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbm5lbHM7IGkrKykKKyAgICAgICAgY21zRnJlZVRvbmVDdXJ2ZShUYWJsZXNbaV0pOworCisgICAgcmV0dXJuIFRSVUU7CisKK0Vycm9yOgorICAgIGZvciAoaT0wOyBpIDwgbkNoYW5uZWxzOyBpKyspIHsKKyAgICAgICAgaWYgKFRhYmxlc1tpXSkgY21zRnJlZVRvbmVDdXJ2ZShUYWJsZXNbaV0pOworICAgIH0KKworICAgIGlmIChUZW1wKSBfY21zRnJlZShDb250ZXh0SUQsIFRlbXApOworICAgIHJldHVybiBGQUxTRTsKK30KKworCitzdGF0aWMKK2Ntc0Jvb2wgV3JpdGU4Yml0VGFibGVzKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIgbiwgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIFRhYmxlcykKK3sKKyAgICBpbnQgajsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNVSW50OE51bWJlciB2YWw7CisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIGlmIChUYWJsZXMpIHsKKworICAgICAgICAgICAgLy8gVXN1YWwgY2FzZSBvZiBpZGVudGl0eSBjdXJ2ZXMKKyAgICAgICAgICAgIGlmICgoVGFibGVzIC0+VGhlQ3VydmVzW2ldLT5uRW50cmllcyA9PSAyKSAmJiAKKyAgICAgICAgICAgICAgICAoVGFibGVzLT5UaGVDdXJ2ZXNbaV0tPlRhYmxlMTZbMF0gPT0gMCkgJiYgCisgICAgICAgICAgICAgICAgKFRhYmxlcy0+VGhlQ3VydmVzW2ldLT5UYWJsZTE2WzFdID09IDY1NTM1KSkgeworCisgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqIDwgMjU2OyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDhOdW1iZXIoaW8sIChjbXNVSW50OE51bWJlcikgaikpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgICAgICBpZiAoVGFibGVzIC0+VGhlQ3VydmVzW2ldLT5uRW50cmllcyAhPSAyNTYpIHsKKyAgICAgICAgICAgICAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9SQU5HRSwgIkxVVDggbmVlZHMgMjU2IGVudHJpZXMgb24gcHJlbGluZWFyaXphdGlvbiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqIDwgMjU2OyBqKyspIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFRhYmxlcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IChjbXNVSW50OE51bWJlcikgRlJPTV8xNl9UT184KFRhYmxlcy0+VGhlQ3VydmVzW2ldLT5UYWJsZTE2W2pdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSAoY21zVUludDhOdW1iZXIpIGo7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDhOdW1iZXIoaW8sIHZhbCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIENoZWNrIG92ZXJmbG93CitzdGF0aWMKK2Ntc1VJbnQzMk51bWJlciB1aXBvdyhjbXNVSW50MzJOdW1iZXIgbiwgY21zVUludDMyTnVtYmVyIGEsIGNtc1VJbnQzMk51bWJlciBiKQoreworICAgIGNtc1VJbnQzMk51bWJlciBydiA9IDEsIHJjOworCisgICAgaWYgKGEgPT0gMCkgcmV0dXJuIDA7CisgICAgaWYgKG4gPT0gMCkgcmV0dXJuIDA7CisKKyAgICBmb3IgKDsgYiA+IDA7IGItLSkgeworCisgICAgICAgIHJ2ICo9IGE7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIG92ZXJmbG93CisgICAgICAgIGlmIChydiA+IFVJTlRfTUFYIC8gYSkgcmV0dXJuIChjbXNVSW50MzJOdW1iZXIpIC0xOworCisgICAgfQorCisgICAgcmMgPSBydiAqIG47CisKKyAgICBpZiAocnYgIT0gcmMgLyBuKSByZXR1cm4gKGNtc1VJbnQzMk51bWJlcikgLTE7CisgICAgcmV0dXJuIHJjOworfQorCisKKy8vIFRoYXQgd2lsbCBjcmVhdGUgYSBNUEUgTFVUIHdpdGggTWF0cml4LCBwcmUgdGFibGVzLCBDTFVUIGFuZCBwb3N0IHRhYmxlcy4KKy8vIDggYml0IGx1dCBtYXkgYmUgc2NhbGVkIGVhc2VseSB0byB2NCBQQ1MsIGJ1dCB3ZSBuZWVkIGFsc28gdG8gcHJvcGVybHkgYWRqdXN0CisvLyBQQ1Mgb24gQlRvQXh4IHRhZ3MgYW5kIEF0b0IgaWYgYWJzdHJhY3QuIFdlIG5lZWQgdG8gZml4IGlucHV0IGRpcmVjdGlvbi4KKworc3RhdGljCit2b2lkICpUeXBlX0xVVDhfUmVhZChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQzMk51bWJlciogbkl0ZW1zLCBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc1VJbnQ4TnVtYmVyIElucHV0Q2hhbm5lbHMsIE91dHB1dENoYW5uZWxzLCBDTFVUcG9pbnRzOworICAgIGNtc1VJbnQ4TnVtYmVyKiBUZW1wID0gTlVMTDsKKyAgICBjbXNQaXBlbGluZSogTmV3TFVUID0gTlVMTDsKKyAgICBjbXNVSW50MzJOdW1iZXIgblRhYlNpemUsIGk7CisgICAgY21zRmxvYXQ2NE51bWJlciBNYXRyaXhbMyozXTsKKworICAgICpuSXRlbXMgPSAwOworCisgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAmSW5wdXRDaGFubmVscykpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAmT3V0cHV0Q2hhbm5lbHMpKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1JlYWRVSW50OE51bWJlcihpbywgJkNMVVRwb2ludHMpKSBnb3RvIEVycm9yOworCisgICAgIGlmIChDTFVUcG9pbnRzID09IDEpIGdvdG8gRXJyb3I7IC8vIEltcG9zc2libGUgdmFsdWUsIDAgZm9yIG5vIENMVVQgYW5kIHRoZW4gMiBhdCBsZWFzdAorCisgICAgLy8gUGFkZGluZworICAgIGlmICghX2Ntc1JlYWRVSW50OE51bWJlcihpbywgTlVMTCkpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBEbyBzb21lIGNoZWNraW5nCisgICAgaWYgKElucHV0Q2hhbm5lbHMgPiBjbXNNQVhDSEFOTkVMUykgIGdvdG8gRXJyb3I7CisgICAgaWYgKE91dHB1dENoYW5uZWxzID4gY21zTUFYQ0hBTk5FTFMpIGdvdG8gRXJyb3I7CisKKyAgIC8vIEFsbG9jYXRlcyBhbiBlbXB0eSBQaXBlbGluZQorICAgIE5ld0xVVCA9IGNtc1BpcGVsaW5lQWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgSW5wdXRDaGFubmVscywgT3V0cHV0Q2hhbm5lbHMpOworICAgIGlmIChOZXdMVVQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIC8vIFJlYWQgdGhlIE1hdHJpeAorICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICAmTWF0cml4WzBdKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAgJk1hdHJpeFsxXSkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgICZNYXRyaXhbMl0pKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICAmTWF0cml4WzNdKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAgJk1hdHJpeFs0XSkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgICZNYXRyaXhbNV0pKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICAmTWF0cml4WzZdKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAgJk1hdHJpeFs3XSkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgICZNYXRyaXhbOF0pKSBnb3RvIEVycm9yOworCisKKyAgICAvLyBPbmx5IG9wZXJhdGVzIGlmIG5vdCBpZGVudGl0eS4uLgorICAgIGlmICgoSW5wdXRDaGFubmVscyA9PSAzKSAmJiAhX2Ntc01BVDNpc0lkZW50aXR5KChjbXNNQVQzKikgTWF0cml4KSkgeworCisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShOZXdMVVQsIGNtc0FUX0JFR0lOLCBjbXNTdGFnZUFsbG9jTWF0cml4KHNlbGYgLT5Db250ZXh0SUQsIDMsIDMsIE1hdHJpeCwgTlVMTCkpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAvLyBHZXQgaW5wdXQgdGFibGVzCisgICAgaWYgKCFSZWFkOGJpdFRhYmxlcyhzZWxmIC0+Q29udGV4dElELCBpbywgIE5ld0xVVCwgSW5wdXRDaGFubmVscykpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBHZXQgM0QgQ0xVVC4gQ2hlY2sgdGhlIG92ZXJmbG93Li4uLgorICAgIG5UYWJTaXplID0gdWlwb3coT3V0cHV0Q2hhbm5lbHMsIENMVVRwb2ludHMsIElucHV0Q2hhbm5lbHMpOworICAgIGlmIChuVGFiU2l6ZSA9PSAoY21zVUludDMyTnVtYmVyKSAtMSkgZ290byBFcnJvcjsKKyAgICBpZiAoblRhYlNpemUgPiAwKSB7CisKKyAgICAgICAgY21zVUludDE2TnVtYmVyICpQdHJXLCAqVDsKKyAgICAgICAKKyAgICAgICAgUHRyVyA9IFQgID0gKGNtc1VJbnQxNk51bWJlciopIF9jbXNDYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgblRhYlNpemUsIHNpemVvZihjbXNVSW50MTZOdW1iZXIpKTsKKyAgICAgICAgaWYgKFQgID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgVGVtcCA9IChjbXNVSW50OE51bWJlciopIF9jbXNNYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgblRhYlNpemUpOworICAgICAgICBpZiAoVGVtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBUKTsKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW8gLT5SZWFkKGlvLCBUZW1wLCBuVGFiU2l6ZSwgMSkgIT0gMSkgeworICAgICAgICAgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgVCk7CisgICAgICAgICAgICBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBUZW1wKTsKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgblRhYlNpemU7IGkrKykgeworCisgICAgICAgICAgICAqUHRyVysrID0gRlJPTV84X1RPXzE2KFRlbXBbaV0pOworICAgICAgICB9CisgICAgICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFRlbXApOworICAgICAgICBUZW1wID0gTlVMTDsKKworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTmV3TFVULCBjbXNBVF9FTkQsIGNtc1N0YWdlQWxsb2NDTHV0MTZiaXQoc2VsZiAtPkNvbnRleHRJRCwgQ0xVVHBvaW50cywgSW5wdXRDaGFubmVscywgT3V0cHV0Q2hhbm5lbHMsIFQpKSkKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFQpOworICAgIH0KKworCisgICAgLy8gR2V0IG91dHB1dCB0YWJsZXMKKyAgICBpZiAoIVJlYWQ4Yml0VGFibGVzKHNlbGYgLT5Db250ZXh0SUQsIGlvLCAgTmV3TFVULCBPdXRwdXRDaGFubmVscykpIGdvdG8gRXJyb3I7CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gTmV3TFVUOworCitFcnJvcjoKKyAgICBpZiAoTmV3TFVUICE9IE5VTEwpIGNtc1BpcGVsaW5lRnJlZShOZXdMVVQpOworICAgIHJldHVybiBOVUxMOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisvLyBXZSBvbmx5IGFsbG93IGEgc3BlY2lmaWMgTVBFIHN0cnVjdHVyZTogTWF0cml4IHBsdXMgcHJlbGluLCBwbHVzIGNsdXQsIHBsdXMgcG9zdC1saW4uCitzdGF0aWMKK2Ntc0Jvb2wgIFR5cGVfTFVUOF9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaiwgblRhYlNpemU7CisgICAgY21zVUludDhOdW1iZXIgIHZhbDsKKyAgICBjbXNQaXBlbGluZSogTmV3TFVUID0gKGNtc1BpcGVsaW5lKikgUHRyOworICAgIGNtc1N0YWdlKiBtcGU7CisgICAgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIFByZU1QRSA9IE5VTEwsICpQb3N0TVBFID0gTlVMTDsKKyAgICBfY21zU3RhZ2VNYXRyaXhEYXRhKiBNYXRNUEUgPSBOVUxMOworICAgIF9jbXNTdGFnZUNMdXREYXRhKiBjbHV0ID0gTlVMTDsKKyAgICBpbnQgY2x1dFBvaW50czsKKworICAgIC8vIERpc2Fzc2VtYmxlIHRoZSBMVVQgaW50byBjb21wb25lbnRzLgorICAgIG1wZSA9IE5ld0xVVCAtPiBFbGVtZW50czsKKyAgICBpZiAobXBlIC0+VHlwZSA9PSBjbXNTaWdNYXRyaXhFbGVtVHlwZSkgeworCisgICAgICAgIE1hdE1QRSA9IChfY21zU3RhZ2VNYXRyaXhEYXRhKikgbXBlIC0+RGF0YTsKKyAgICAgICAgbXBlID0gbXBlIC0+IE5leHQ7CisgICAgfQorCisgICAgaWYgKG1wZSAhPSBOVUxMICYmIG1wZSAtPlR5cGUgPT0gY21zU2lnQ3VydmVTZXRFbGVtVHlwZSkgeworICAgICAgICBQcmVNUEUgPSAoX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqKSBtcGUgLT5EYXRhOworICAgICAgICBtcGUgPSBtcGUgLT4gTmV4dDsKKyAgICB9CisKKyAgICBpZiAobXBlICE9IE5VTEwgJiYgbXBlIC0+VHlwZSA9PSBjbXNTaWdDTHV0RWxlbVR5cGUpIHsKKyAgICAgICAgY2x1dCAgPSAoX2Ntc1N0YWdlQ0x1dERhdGEqKSBtcGUgLT4gRGF0YTsKKyAgICAgICAgbXBlID0gbXBlIC0+TmV4dDsKKyAgICB9CisKKyAgICBpZiAobXBlICE9IE5VTEwgJiYgbXBlIC0+VHlwZSA9PSBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlKSB7CisgICAgICAgIFBvc3RNUEUgPSAoX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqKSBtcGUgLT5EYXRhOworICAgICAgICBtcGUgPSBtcGUgLT4gTmV4dDsKKyAgICB9CisKKyAgICAvLyBUaGF0IHNob3VsZCBiZSBhbGwKKyAgICBpZiAobXBlICE9IE5VTEwpIHsKKyAgICAgICAgY21zU2lnbmFsRXJyb3IobXBlLT5Db250ZXh0SUQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiTFVUIGlzIG5vdCBzdWl0YWJsZSB0byBiZSBzYXZlZCBhcyBMVVQ4Iik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKworICAgIGlmIChjbHV0ID09IE5VTEwpCisgICAgICAgIGNsdXRQb2ludHMgPSAwOworICAgIGVsc2UKKyAgICAgICAgY2x1dFBvaW50cyAgICA9IGNsdXQtPlBhcmFtcy0+blNhbXBsZXNbMF07CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAoY21zVUludDhOdW1iZXIpIE5ld0xVVCAtPklucHV0Q2hhbm5lbHMpKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50OE51bWJlcihpbywgKGNtc1VJbnQ4TnVtYmVyKSBOZXdMVVQgLT5PdXRwdXRDaGFubmVscykpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAoY21zVUludDhOdW1iZXIpIGNsdXRQb2ludHMpKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50OE51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsgLy8gUGFkZGluZworCisKKyAgICBpZiAoTWF0TVBFICE9IE5VTEwpIHsKKworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgTWF0TVBFIC0+IERvdWJsZVswXSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIE1hdE1QRSAtPiBEb3VibGVbMV0pKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBNYXRNUEUgLT4gRG91YmxlWzJdKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgTWF0TVBFIC0+IERvdWJsZVszXSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIE1hdE1QRSAtPiBEb3VibGVbNF0pKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBNYXRNUEUgLT4gRG91YmxlWzVdKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgTWF0TVBFIC0+IERvdWJsZVs2XSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIE1hdE1QRSAtPiBEb3VibGVbN10pKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBNYXRNUEUgLT4gRG91YmxlWzhdKSkgcmV0dXJuIEZBTFNFOworCisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCAxKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgMSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIDEpKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8gVGhlIHByZWxpbmVhcml6YXRpb24gdGFibGUKKyAgICBpZiAoIVdyaXRlOGJpdFRhYmxlcyhzZWxmIC0+Q29udGV4dElELCBpbywgTmV3TFVUIC0+SW5wdXRDaGFubmVscywgUHJlTVBFKSkgcmV0dXJuIEZBTFNFOworCisgICAgblRhYlNpemUgPSB1aXBvdyhOZXdMVVQtPk91dHB1dENoYW5uZWxzLCBjbHV0UG9pbnRzLCBOZXdMVVQgLT5JbnB1dENoYW5uZWxzKTsKKyAgICBpZiAoblRhYlNpemUgPT0gKGNtc1VJbnQzMk51bWJlcikgLTEpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoblRhYlNpemUgPiAwKSB7CisKKyAgICAgICAgLy8gVGhlIDNEIENMVVQuCisgICAgICAgIGlmIChjbHV0ICE9IE5VTEwpIHsKKworICAgICAgICAgICAgZm9yIChqPTA7IGogPCBuVGFiU2l6ZTsgaisrKSB7CisKKyAgICAgICAgICAgICAgICB2YWwgPSAoY21zVUludDhOdW1iZXIpIEZST01fMTZfVE9fOChjbHV0IC0+VGFiLlRbal0pOworICAgICAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDhOdW1iZXIoaW8sIHZhbCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSBwb3N0bGluZWFyaXphdGlvbiB0YWJsZQorICAgIGlmICghV3JpdGU4Yml0VGFibGVzKHNlbGYgLT5Db250ZXh0SUQsIGlvLCBOZXdMVVQgLT5PdXRwdXRDaGFubmVscywgUG9zdE1QRSkpIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuSXRlbXMpOworfQorCisKK3N0YXRpYwordm9pZCogVHlwZV9MVVQ4X0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuICh2b2lkKikgY21zUGlwZWxpbmVEdXAoKGNtc1BpcGVsaW5lKikgUHRyKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfTFVUOF9GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCogUHRyKQoreworICAgIGNtc1BpcGVsaW5lRnJlZSgoY21zUGlwZWxpbmUqKSBQdHIpOworICAgIHJldHVybjsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ0x1dDE2VHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworLy8gUmVhZCAxNiBiaXQgdGFibGVzIGFzIGdhbW1hIGZ1bmN0aW9ucworc3RhdGljCitjbXNCb29sICBSZWFkMTZiaXRUYWJsZXMoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0lPSEFORExFUiogaW8sIGNtc1BpcGVsaW5lKiBsdXQsIGludCBuQ2hhbm5lbHMsIGludCBuRW50cmllcykKK3sKKyAgICBpbnQgaTsKKyAgICBjbXNUb25lQ3VydmUqIFRhYmxlc1tjbXNNQVhDSEFOTkVMU107CisKKyAgICAvLyBNYXliZSBhbiBlbXB0eSB0YWJsZT8gKHRoaXMgaXMgYSBsY21zIGV4dGVuc2lvbikKKyAgICBpZiAobkVudHJpZXMgPD0gMCkgcmV0dXJuIFRSVUU7CisKKyAgICAvLyBDaGVjayBmb3IgbWFsaWNpb3VzIHByb2ZpbGVzCisgICAgaWYgKG5FbnRyaWVzIDwgMikgcmV0dXJuIEZBTFNFOworICAgIGlmIChuQ2hhbm5lbHMgPiBjbXNNQVhDSEFOTkVMUykgcmV0dXJuIEZBTFNFOworCisgICAgLy8gSW5pdCB0YWJsZSB0byB6ZXJvCisgICAgbWVtc2V0KFRhYmxlcywgMCwgc2l6ZW9mKFRhYmxlcykpOworCisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbm5lbHM7IGkrKykgeworCisgICAgICAgIFRhYmxlc1tpXSA9IGNtc0J1aWxkVGFidWxhdGVkVG9uZUN1cnZlMTYoQ29udGV4dElELCBuRW50cmllcywgTlVMTCk7CisgICAgICAgIGlmIChUYWJsZXNbaV0gPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgICAgICBpZiAoIV9jbXNSZWFkVUludDE2QXJyYXkoaW8sIG5FbnRyaWVzLCBUYWJsZXNbaV0tPlRhYmxlMTYpKSBnb3RvIEVycm9yOworICAgIH0KKworCisgICAgLy8gQWRkIHRoZSB0YWJsZSAod2hpY2ggbWF5IGNlcnRhaW5seSBiZSBhbiBpZGVudGl0eSwgYnV0IHRoaXMgaXMgdXAgdG8gdGhlIG9wdGltaXplciwgbm90IHRoZSByZWFkaW5nIGNvZGUpCisgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKGx1dCwgY21zQVRfRU5ELCBjbXNTdGFnZUFsbG9jVG9uZUN1cnZlcyhDb250ZXh0SUQsIG5DaGFubmVscywgVGFibGVzKSkpCisgICAgICAgIGdvdG8gRXJyb3I7CisKKyAgICBmb3IgKGk9MDsgaSA8IG5DaGFubmVsczsgaSsrKQorICAgICAgICBjbXNGcmVlVG9uZUN1cnZlKFRhYmxlc1tpXSk7CisKKyAgICByZXR1cm4gVFJVRTsKKworRXJyb3I6CisgICAgZm9yIChpPTA7IGkgPCBuQ2hhbm5lbHM7IGkrKykgeworICAgICAgICBpZiAoVGFibGVzW2ldKSBjbXNGcmVlVG9uZUN1cnZlKFRhYmxlc1tpXSk7CisgICAgfQorCisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMKK2Ntc0Jvb2wgV3JpdGUxNmJpdFRhYmxlcyhjbXNDb250ZXh0IENvbnRleHRJRCwgY21zSU9IQU5ETEVSKiBpbywgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIFRhYmxlcykKK3sKKyAgICBpbnQgajsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNVSW50MTZOdW1iZXIgdmFsOworICAgIGludCBuRW50cmllczsKKworICAgIF9jbXNBc3NlcnQoVGFibGVzICE9IE5VTEwpOworCisgICAgbkVudHJpZXMgPSBUYWJsZXMtPlRoZUN1cnZlc1swXS0+bkVudHJpZXM7CisKKyAgICBmb3IgKGk9MDsgaSA8IFRhYmxlcyAtPm5DdXJ2ZXM7IGkrKykgeworCisgICAgICAgIGZvciAoaj0wOyBqIDwgbkVudHJpZXM7IGorKykgeworCisgICAgICAgICAgICB2YWwgPSBUYWJsZXMtPlRoZUN1cnZlc1tpXS0+VGFibGUxNltqXTsgICAgICAgIAorICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIHZhbCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoQ29udGV4dElEKTsKK30KKworc3RhdGljCit2b2lkICpUeXBlX0xVVDE2X1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNVSW50OE51bWJlciBJbnB1dENoYW5uZWxzLCBPdXRwdXRDaGFubmVscywgQ0xVVHBvaW50czsKKyAgICBjbXNQaXBlbGluZSogTmV3TFVUID0gTlVMTDsKKyAgICBjbXNVSW50MzJOdW1iZXIgblRhYlNpemU7CisgICAgY21zRmxvYXQ2NE51bWJlciBNYXRyaXhbMyozXTsKKyAgICBjbXNVSW50MTZOdW1iZXIgSW5wdXRFbnRyaWVzLCBPdXRwdXRFbnRyaWVzOworCisgICAgKm5JdGVtcyA9IDA7CisKKyAgICBpZiAoIV9jbXNSZWFkVUludDhOdW1iZXIoaW8sICZJbnB1dENoYW5uZWxzKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAmT3V0cHV0Q2hhbm5lbHMpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDhOdW1iZXIoaW8sICZDTFVUcG9pbnRzKSkgcmV0dXJuIE5VTEw7ICAgLy8gMjU1IG1heGltdW0KKworICAgIC8vIFBhZGRpbmcKKyAgICBpZiAoIV9jbXNSZWFkVUludDhOdW1iZXIoaW8sIE5VTEwpKSByZXR1cm4gTlVMTDsKKworICAgIC8vIERvIHNvbWUgY2hlY2tpbmcKKyAgICBpZiAoSW5wdXRDaGFubmVscyA+IGNtc01BWENIQU5ORUxTKSAgZ290byBFcnJvcjsKKyAgICBpZiAoT3V0cHV0Q2hhbm5lbHMgPiBjbXNNQVhDSEFOTkVMUykgZ290byBFcnJvcjsKKworICAgIC8vIEFsbG9jYXRlcyBhbiBlbXB0eSBMVVQKKyAgICBOZXdMVVQgPSBjbXNQaXBlbGluZUFsbG9jKHNlbGYgLT5Db250ZXh0SUQsIElucHV0Q2hhbm5lbHMsIE91dHB1dENoYW5uZWxzKTsKKyAgICBpZiAoTmV3TFVUID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBSZWFkIHRoZSBNYXRyaXgKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAgJk1hdHJpeFswXSkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgICZNYXRyaXhbMV0pKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICAmTWF0cml4WzJdKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAgJk1hdHJpeFszXSkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgICZNYXRyaXhbNF0pKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICAmTWF0cml4WzVdKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAgJk1hdHJpeFs2XSkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgICZNYXRyaXhbN10pKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICAmTWF0cml4WzhdKSkgZ290byBFcnJvcjsKKworCisgICAgLy8gT25seSBvcGVyYXRlcyBvbiAzIGNoYW5uZWxzCisgICAgaWYgKChJbnB1dENoYW5uZWxzID09IDMpICYmICFfY21zTUFUM2lzSWRlbnRpdHkoKGNtc01BVDMqKSBNYXRyaXgpKSB7CisKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKE5ld0xVVCwgY21zQVRfRU5ELCBjbXNTdGFnZUFsbG9jTWF0cml4KHNlbGYgLT5Db250ZXh0SUQsIDMsIDMsIE1hdHJpeCwgTlVMTCkpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmSW5wdXRFbnRyaWVzKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmT3V0cHV0RW50cmllcykpIGdvdG8gRXJyb3I7CisKKyAgICBpZiAoSW5wdXRFbnRyaWVzID4gMHg3RkZGIHx8IE91dHB1dEVudHJpZXMgPiAweDdGRkYpIGdvdG8gRXJyb3I7CisgICAgaWYgKENMVVRwb2ludHMgPT0gMSkgZ290byBFcnJvcjsgLy8gSW1wb3NzaWJsZSB2YWx1ZSwgMCBmb3Igbm8gQ0xVVCBhbmQgdGhlbiAyIGF0IGxlYXN0CisKKyAgICAvLyBHZXQgaW5wdXQgdGFibGVzCisgICAgaWYgKCFSZWFkMTZiaXRUYWJsZXMoc2VsZiAtPkNvbnRleHRJRCwgaW8sICBOZXdMVVQsIElucHV0Q2hhbm5lbHMsIElucHV0RW50cmllcykpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBHZXQgM0QgQ0xVVAorICAgIG5UYWJTaXplID0gdWlwb3coT3V0cHV0Q2hhbm5lbHMsIENMVVRwb2ludHMsIElucHV0Q2hhbm5lbHMpOworICAgIGlmIChuVGFiU2l6ZSA9PSAoY21zVUludDMyTnVtYmVyKSAtMSkgZ290byBFcnJvcjsKKyAgICBpZiAoblRhYlNpemUgPiAwKSB7CisKKyAgICAgICAgY21zVUludDE2TnVtYmVyICpUOworCisgICAgICAgIFQgID0gKGNtc1VJbnQxNk51bWJlciopIF9jbXNDYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgblRhYlNpemUsIHNpemVvZihjbXNVSW50MTZOdW1iZXIpKTsKKyAgICAgICAgaWYgKFQgID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQxNkFycmF5KGlvLCBuVGFiU2l6ZSwgVCkpIHsKKyAgICAgICAgICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFQpOworICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShOZXdMVVQsIGNtc0FUX0VORCwgY21zU3RhZ2VBbGxvY0NMdXQxNmJpdChzZWxmIC0+Q29udGV4dElELCBDTFVUcG9pbnRzLCBJbnB1dENoYW5uZWxzLCBPdXRwdXRDaGFubmVscywgVCkpKSB7CisgICAgICAgICAgICBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBUKTsKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgVCk7CisgICAgfQorCisKKyAgICAvLyBHZXQgb3V0cHV0IHRhYmxlcworICAgIGlmICghUmVhZDE2Yml0VGFibGVzKHNlbGYgLT5Db250ZXh0SUQsIGlvLCAgTmV3TFVULCBPdXRwdXRDaGFubmVscywgT3V0cHV0RW50cmllcykpIGdvdG8gRXJyb3I7CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gTmV3TFVUOworCitFcnJvcjoKKyAgICBpZiAoTmV3TFVUICE9IE5VTEwpIGNtc1BpcGVsaW5lRnJlZShOZXdMVVQpOworICAgIHJldHVybiBOVUxMOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisvLyBXZSBvbmx5IGFsbG93IHNvbWUgc3BlY2lmaWMgTVBFIHN0cnVjdHVyZXM6IE1hdHJpeCBwbHVzIHByZWxpbiwgcGx1cyBjbHV0LCBwbHVzIHBvc3QtbGluLgorLy8gU29tZSBlbXB0eSBkZWZhdWx0cyBhcmUgY3JlYXRlZCBmb3IgbWlzc2luZyBwYXJ0cworCitzdGF0aWMKK2Ntc0Jvb2wgIFR5cGVfTFVUMTZfV3JpdGUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBuSXRlbXMpCit7CisgICAgY21zVUludDMyTnVtYmVyIG5UYWJTaXplOworICAgIGNtc1BpcGVsaW5lKiBOZXdMVVQgPSAoY21zUGlwZWxpbmUqKSBQdHI7CisgICAgY21zU3RhZ2UqIG1wZTsKKyAgICBfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSogUHJlTVBFID0gTlVMTCwgKlBvc3RNUEUgPSBOVUxMOworICAgIF9jbXNTdGFnZU1hdHJpeERhdGEqIE1hdE1QRSA9IE5VTEw7CisgICAgX2Ntc1N0YWdlQ0x1dERhdGEqIGNsdXQgPSBOVUxMOworICAgIGludCBpLCBJbnB1dENoYW5uZWxzLCBPdXRwdXRDaGFubmVscywgY2x1dFBvaW50czsKKworICAgIC8vIERpc2Fzc2VtYmxlIHRoZSBMVVQgaW50byBjb21wb25lbnRzLgorICAgIG1wZSA9IE5ld0xVVCAtPiBFbGVtZW50czsKKyAgICBpZiAobXBlICE9IE5VTEwgJiYgbXBlIC0+VHlwZSA9PSBjbXNTaWdNYXRyaXhFbGVtVHlwZSkgeworCisgICAgICAgIE1hdE1QRSA9IChfY21zU3RhZ2VNYXRyaXhEYXRhKikgbXBlIC0+RGF0YTsKKyAgICAgICAgbXBlID0gbXBlIC0+IE5leHQ7CisgICAgfQorCisKKyAgICBpZiAobXBlICE9IE5VTEwgJiYgbXBlIC0+VHlwZSA9PSBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlKSB7CisgICAgICAgIFByZU1QRSA9IChfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSopIG1wZSAtPkRhdGE7CisgICAgICAgIG1wZSA9IG1wZSAtPiBOZXh0OworICAgIH0KKworICAgIGlmIChtcGUgIT0gTlVMTCAmJiBtcGUgLT5UeXBlID09IGNtc1NpZ0NMdXRFbGVtVHlwZSkgeworICAgICAgICBjbHV0ICA9IChfY21zU3RhZ2VDTHV0RGF0YSopIG1wZSAtPiBEYXRhOworICAgICAgICBtcGUgPSBtcGUgLT5OZXh0OworICAgIH0KKworICAgIGlmIChtcGUgIT0gTlVMTCAmJiBtcGUgLT5UeXBlID09IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUpIHsKKyAgICAgICAgUG9zdE1QRSA9IChfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSopIG1wZSAtPkRhdGE7CisgICAgICAgIG1wZSA9IG1wZSAtPiBOZXh0OworICAgIH0KKworICAgIC8vIFRoYXQgc2hvdWxkIGJlIGFsbAorICAgIGlmIChtcGUgIT0gTlVMTCkgeworICAgICAgICBjbXNTaWduYWxFcnJvcihtcGUtPkNvbnRleHRJRCwgY21zRVJST1JfVU5LTk9XTl9FWFRFTlNJT04sICJMVVQgaXMgbm90IHN1aXRhYmxlIHRvIGJlIHNhdmVkIGFzIExVVDE2Iik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBJbnB1dENoYW5uZWxzICA9IGNtc1BpcGVsaW5lSW5wdXRDaGFubmVscyhOZXdMVVQpOworICAgIE91dHB1dENoYW5uZWxzID0gY21zUGlwZWxpbmVPdXRwdXRDaGFubmVscyhOZXdMVVQpOworCisgICAgaWYgKGNsdXQgPT0gTlVMTCkKKyAgICAgICAgY2x1dFBvaW50cyA9IDA7CisgICAgZWxzZQorICAgICAgICBjbHV0UG9pbnRzICAgID0gY2x1dC0+UGFyYW1zLT5uU2FtcGxlc1swXTsKKworICAgIGlmICghX2Ntc1dyaXRlVUludDhOdW1iZXIoaW8sIChjbXNVSW50OE51bWJlcikgSW5wdXRDaGFubmVscykpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAoY21zVUludDhOdW1iZXIpIE91dHB1dENoYW5uZWxzKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDhOdW1iZXIoaW8sIChjbXNVSW50OE51bWJlcikgY2x1dFBvaW50cykpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOyAvLyBQYWRkaW5nCisKKworICAgIGlmIChNYXRNUEUgIT0gTlVMTCkgeworCisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBNYXRNUEUgLT4gRG91YmxlWzBdKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgTWF0TVBFIC0+IERvdWJsZVsxXSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIE1hdE1QRSAtPiBEb3VibGVbMl0pKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBNYXRNUEUgLT4gRG91YmxlWzNdKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgTWF0TVBFIC0+IERvdWJsZVs0XSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIE1hdE1QRSAtPiBEb3VibGVbNV0pKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBNYXRNUEUgLT4gRG91YmxlWzZdKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgTWF0TVBFIC0+IERvdWJsZVs3XSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIE1hdE1QRSAtPiBEb3VibGVbOF0pKSByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCAxKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgMSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIDEpKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisKKyAgICBpZiAoUHJlTVBFICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIChjbXNVSW50MTZOdW1iZXIpIFByZU1QRSAtPlRoZUN1cnZlc1swXS0+bkVudHJpZXMpKSByZXR1cm4gRkFMU0U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAyKSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGlmIChQb3N0TVBFICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIChjbXNVSW50MTZOdW1iZXIpIFBvc3RNUEUgLT5UaGVDdXJ2ZXNbMF0tPm5FbnRyaWVzKSkgcmV0dXJuIEZBTFNFOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAyKSkgcmV0dXJuIEZBTFNFOworCisgICAgfQorCisgICAgLy8gVGhlIHByZWxpbmVhcml6YXRpb24gdGFibGUKKworICAgIGlmIChQcmVNUEUgIT0gTlVMTCkgeworICAgICAgICBpZiAoIVdyaXRlMTZiaXRUYWJsZXMoc2VsZiAtPkNvbnRleHRJRCwgaW8sIFByZU1QRSkpIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaT0wOyBpIDwgSW5wdXRDaGFubmVsczsgaSsrKSB7CisKKyAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIDB4ZmZmZikpIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5UYWJTaXplID0gdWlwb3coT3V0cHV0Q2hhbm5lbHMsIGNsdXRQb2ludHMsIElucHV0Q2hhbm5lbHMpOworICAgIGlmIChuVGFiU2l6ZSA9PSAoY21zVUludDMyTnVtYmVyKSAtMSkgcmV0dXJuIEZBTFNFOworICAgIGlmIChuVGFiU2l6ZSA+IDApIHsKKyAgICAgICAgLy8gVGhlIDNEIENMVVQuCisgICAgICAgIGlmIChjbHV0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDE2QXJyYXkoaW8sIG5UYWJTaXplLCBjbHV0LT5UYWIuVCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSBwb3N0bGluZWFyaXphdGlvbiB0YWJsZQorICAgIGlmIChQb3N0TVBFICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCFXcml0ZTE2Yml0VGFibGVzKHNlbGYgLT5Db250ZXh0SUQsIGlvLCBQb3N0TVBFKSkgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChpPTA7IGkgPCBPdXRwdXRDaGFubmVsczsgaSsrKSB7CisKKyAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIDB4ZmZmZikpIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBUUlVFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuSXRlbXMpOworfQorCitzdGF0aWMKK3ZvaWQqIFR5cGVfTFVUMTZfRHVwKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY29uc3Qgdm9pZCAqUHRyLCBjbXNVSW50MzJOdW1iZXIgbikKK3sKKyAgICByZXR1cm4gKHZvaWQqKSBjbXNQaXBlbGluZUR1cCgoY21zUGlwZWxpbmUqKSBQdHIpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCitzdGF0aWMKK3ZvaWQgVHlwZV9MVVQxNl9GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCogUHRyKQoreworICAgIGNtc1BpcGVsaW5lRnJlZSgoY21zUGlwZWxpbmUqKSBQdHIpOworICAgIHJldHVybjsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnTHV0QVRvQlR5cGUKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKworLy8gVjQgc3R1ZmYuIFJlYWQgbWF0cml4IGZvciBMdXRBdG9CIGFuZCBMdXRCdG9BCisKK3N0YXRpYworY21zU3RhZ2UqIFJlYWRNYXRyaXgoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIgT2Zmc2V0KQoreworICAgIGNtc0Zsb2F0NjROdW1iZXIgZE1hdFszKjNdOworICAgIGNtc0Zsb2F0NjROdW1iZXIgZE9mZlszXTsKKyAgICBjbXNTdGFnZSogTWF0OworCisgICAgLy8gR28gdG8gYWRkcmVzcworICAgIGlmICghaW8gLT4gU2VlayhpbywgT2Zmc2V0KSkgcmV0dXJuIE5VTEw7CisKKyAgICAvLyBSZWFkIHRoZSBNYXRyaXgKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAmZE1hdFswXSkpIHJldHVybiBOVUxMOworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICZkTWF0WzFdKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJmRNYXRbMl0pKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAmZE1hdFszXSkpIHJldHVybiBOVUxMOworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICZkTWF0WzRdKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJmRNYXRbNV0pKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAmZE1hdFs2XSkpIHJldHVybiBOVUxMOworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICZkTWF0WzddKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJmRNYXRbOF0pKSByZXR1cm4gTlVMTDsKKworICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICZkT2ZmWzBdKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJmRPZmZbMV0pKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkMTVGaXhlZDE2TnVtYmVyKGlvLCAmZE9mZlsyXSkpIHJldHVybiBOVUxMOworCisgICAgTWF0ID0gY21zU3RhZ2VBbGxvY01hdHJpeChzZWxmIC0+Q29udGV4dElELCAzLCAzLCBkTWF0LCBkT2ZmKTsKKworICAgICByZXR1cm4gTWF0OworfQorCisKKworCisvLyAgVjQgc3R1ZmYuIFJlYWQgQ0xVVCBwYXJ0IGZvciBMdXRBdG9CIGFuZCBMdXRCdG9BCisKK3N0YXRpYworY21zU3RhZ2UqIFJlYWRDTFVUKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyIE9mZnNldCwgaW50IElucHV0Q2hhbm5lbHMsIGludCBPdXRwdXRDaGFubmVscykKK3sKKyAgICBjbXNVSW50OE51bWJlciAgZ3JpZFBvaW50czhbY21zTUFYQ0hBTk5FTFNdOyAvLyBOdW1iZXIgb2YgZ3JpZCBwb2ludHMgaW4gZWFjaCBkaW1lbnNpb24uCisgICAgY21zVUludDMyTnVtYmVyIEdyaWRQb2ludHNbY21zTUFYQ0hBTk5FTFNdLCBpOworICAgIGNtc1VJbnQ4TnVtYmVyICBQcmVjaXNpb247CisgICAgY21zU3RhZ2UqIENMVVQ7CisgICAgX2Ntc1N0YWdlQ0x1dERhdGEqIERhdGE7CisKKyAgICBpZiAoIWlvIC0+IFNlZWsoaW8sIE9mZnNldCkpIHJldHVybiBOVUxMOworICAgIGlmIChpbyAtPiBSZWFkKGlvLCBncmlkUG9pbnRzOCwgY21zTUFYQ0hBTk5FTFMsIDEpICE9IDEpIHJldHVybiBOVUxMOworCisKKyAgICBmb3IgKGk9MDsgaSA8IGNtc01BWENIQU5ORUxTOyBpKyspIHsKKworICAgICAgICBpZiAoZ3JpZFBvaW50czhbaV0gPT0gMSkgcmV0dXJuIE5VTEw7IC8vIEltcG9zc2libGUgdmFsdWUsIDAgZm9yIG5vIENMVVQgYW5kIHRoZW4gMiBhdCBsZWFzdAorICAgICAgICBHcmlkUG9pbnRzW2ldID0gZ3JpZFBvaW50czhbaV07CisgICAgfQorCisgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAmUHJlY2lzaW9uKSkgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIV9jbXNSZWFkVUludDhOdW1iZXIoaW8sIE5VTEwpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDhOdW1iZXIoaW8sIE5VTEwpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDhOdW1iZXIoaW8sIE5VTEwpKSByZXR1cm4gTlVMTDsKKworICAgIENMVVQgPSBjbXNTdGFnZUFsbG9jQ0x1dDE2Yml0R3JhbnVsYXIoc2VsZiAtPkNvbnRleHRJRCwgR3JpZFBvaW50cywgSW5wdXRDaGFubmVscywgT3V0cHV0Q2hhbm5lbHMsIE5VTEwpOworICAgIGlmIChDTFVUID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgRGF0YSA9IChfY21zU3RhZ2VDTHV0RGF0YSopIENMVVQgLT5EYXRhOworCisgICAgLy8gUHJlY2lzaW9uIGNhbiBiZSAxIG9yIDIgYnl0ZXMKKyAgICBpZiAoUHJlY2lzaW9uID09IDEpIHsKKworICAgICAgICBjbXNVSW50OE51bWJlciAgdjsKKworICAgICAgICBmb3IgKGk9MDsgaSA8IERhdGEgLT5uRW50cmllczsgaSsrKSB7CisKKyAgICAgICAgICAgIGlmIChpbyAtPlJlYWQoaW8sICZ2LCBzaXplb2YoY21zVUludDhOdW1iZXIpLCAxKSAhPSAxKSByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIERhdGEgLT5UYWIuVFtpXSA9IEZST01fOF9UT18xNih2KTsKKyAgICAgICAgfQorCisgICAgfQorICAgIGVsc2UKKyAgICAgICAgaWYgKFByZWNpc2lvbiA9PSAyKSB7CisKKyAgICAgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MTZBcnJheShpbywgRGF0YS0+bkVudHJpZXMsIERhdGEgLT5UYWIuVCkpIHsKKyAgICAgICAgICAgICAgICBjbXNTdGFnZUZyZWUoQ0xVVCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjbXNTdGFnZUZyZWUoQ0xVVCk7CisgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihzZWxmIC0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVua25vd24gcHJlY2lzaW9uIG9mICclZCciLCBQcmVjaXNpb24pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gQ0xVVDsKK30KKworc3RhdGljCitjbXNUb25lQ3VydmUqIFJlYWRFbWJlZGRlZEN1cnZlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbykKK3sKKyAgICBjbXNUYWdUeXBlU2lnbmF0dXJlICBCYXNlVHlwZTsKKyAgICBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zOworCisgICAgQmFzZVR5cGUgPSBfY21zUmVhZFR5cGVCYXNlKGlvKTsKKyAgICBzd2l0Y2ggKEJhc2VUeXBlKSB7CisKKyAgICAgICAgICAgIGNhc2UgY21zU2lnQ3VydmVUeXBlOgorICAgICAgICAgICAgICAgIHJldHVybiAoY21zVG9uZUN1cnZlKikgVHlwZV9DdXJ2ZV9SZWFkKHNlbGYsIGlvLCAmbkl0ZW1zLCAwKTsKKworICAgICAgICAgICAgY2FzZSBjbXNTaWdQYXJhbWV0cmljQ3VydmVUeXBlOgorICAgICAgICAgICAgICAgIHJldHVybiAoY21zVG9uZUN1cnZlKikgVHlwZV9QYXJhbWV0cmljQ3VydmVfUmVhZChzZWxmLCBpbywgJm5JdGVtcywgMCk7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjaGFyIFN0cmluZ1s1XTsKKworICAgICAgICAgICAgICAgICAgICBfY21zVGFnU2lnbmF0dXJlMlN0cmluZyhTdHJpbmcsIChjbXNUYWdTaWduYXR1cmUpIEJhc2VUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgY21zU2lnbmFsRXJyb3Ioc2VsZiAtPkNvbnRleHRJRCwgY21zRVJST1JfVU5LTk9XTl9FWFRFTlNJT04sICJVbmtub3duIGN1cnZlIHR5cGUgJyVzJyIsIFN0cmluZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworCisvLyBSZWFkIGEgc2V0IG9mIGN1cnZlcyBmcm9tIHNwZWNpZmljIG9mZnNldAorc3RhdGljCitjbXNTdGFnZSogUmVhZFNldE9mQ3VydmVzKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyIE9mZnNldCwgY21zVUludDMyTnVtYmVyIG5DdXJ2ZXMpCit7CisgICAgY21zVG9uZUN1cnZlKiBDdXJ2ZXNbY21zTUFYQ0hBTk5FTFNdOworICAgIGNtc1VJbnQzMk51bWJlciBpOworICAgIGNtc1N0YWdlKiBMaW4gPSBOVUxMOworCisgICAgaWYgKG5DdXJ2ZXMgPiBjbXNNQVhDSEFOTkVMUykgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKCFpbyAtPiBTZWVrKGlvLCBPZmZzZXQpKSByZXR1cm4gRkFMU0U7CisKKyAgICBmb3IgKGk9MDsgaSA8IG5DdXJ2ZXM7IGkrKykKKyAgICAgICAgQ3VydmVzW2ldID0gTlVMTDsKKworICAgIGZvciAoaT0wOyBpIDwgbkN1cnZlczsgaSsrKSB7CisKKyAgICAgICAgQ3VydmVzW2ldID0gUmVhZEVtYmVkZGVkQ3VydmUoc2VsZiwgaW8pOworICAgICAgICBpZiAoQ3VydmVzW2ldID09IE5VTEwpIGdvdG8gRXJyb3I7CisgICAgICAgIGlmICghX2Ntc1JlYWRBbGlnbm1lbnQoaW8pKSBnb3RvIEVycm9yOworCisgICAgfQorCisgICAgTGluID0gY21zU3RhZ2VBbGxvY1RvbmVDdXJ2ZXMoc2VsZiAtPkNvbnRleHRJRCwgbkN1cnZlcywgQ3VydmVzKTsKKworRXJyb3I6CisgICAgZm9yIChpPTA7IGkgPCBuQ3VydmVzOyBpKyspCisgICAgICAgIGNtc0ZyZWVUb25lQ3VydmUoQ3VydmVzW2ldKTsKKworICAgIHJldHVybiBMaW47Cit9CisKKworLy8gTHV0QXRvQiB0eXBlCisKKy8vIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgYSBjb2xvdXIgdHJhbnNmb3JtLiBUaGUgdHlwZSBjb250YWlucyB1cCB0byBmaXZlIHByb2Nlc3NpbmcKKy8vIGVsZW1lbnRzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIEF0b0JUYWcgdGFnIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6IGEgc2V0IG9mIG9uZQorLy8gZGltZW5zaW9uYWwgY3VydmVzLCBhIDMgYnkgMyBtYXRyaXggd2l0aCBvZmZzZXQgdGVybXMsIGEgc2V0IG9mIG9uZSBkaW1lbnNpb25hbCBjdXJ2ZXMsCisvLyBhIG11bHRpZGltZW5zaW9uYWwgbG9va3VwIHRhYmxlLCBhbmQgYSBzZXQgb2Ygb25lIGRpbWVuc2lvbmFsIG91dHB1dCBjdXJ2ZXMuCisvLyBEYXRhIGFyZSBwcm9jZXNzZWQgdXNpbmcgdGhlc2UgZWxlbWVudHMgdmlhIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2U6CisvLworLy8oIkEiIGN1cnZlcykgLT4gKG11bHRpZGltZW5zaW9uYWwgbG9va3VwIHRhYmxlIC0gQ0xVVCkgLT4gKCJNIiBjdXJ2ZXMpIC0+IChtYXRyaXgpIC0+ICgiQiIgY3VydmVzKS4KKy8vCisvKgorSXQgaXMgcG9zc2libGUgdG8gdXNlIGFueSBvciBhbGwgb2YgdGhlc2UgcHJvY2Vzc2luZyBlbGVtZW50cy4gQXQgbGVhc3Qgb25lIHByb2Nlc3NpbmcgZWxlbWVudAorbXVzdCBiZSBpbmNsdWRlZC5Pbmx5IHRoZSBmb2xsb3dpbmcgY29tYmluYXRpb25zIGFyZSBhbGxvd2VkOgorCitCCitNIC0gTWF0cml4IC0gQgorQSAtIENMVVQgLSBCCitBIC0gQ0xVVCAtIE0gLSBNYXRyaXggLSBCCisKKyovCisKK3N0YXRpYwordm9pZCogVHlwZV9MVVRBMkJfUmVhZChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQzMk51bWJlciogbkl0ZW1zLCBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc1VJbnQzMk51bWJlciAgICAgIEJhc2VPZmZzZXQ7CisgICAgY21zVUludDhOdW1iZXIgICAgICAgaW5wdXRDaGFuOyAgICAgIC8vIE51bWJlciBvZiBpbnB1dCBjaGFubmVscworICAgIGNtc1VJbnQ4TnVtYmVyICAgICAgIG91dHB1dENoYW47ICAgICAvLyBOdW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzCisgICAgY21zVUludDMyTnVtYmVyICAgICAgb2Zmc2V0QjsgICAgICAgIC8vIE9mZnNldCB0byBmaXJzdCAiQiIgY3VydmUKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICBvZmZzZXRNYXQ7ICAgICAgLy8gT2Zmc2V0IHRvIG1hdHJpeAorICAgIGNtc1VJbnQzMk51bWJlciAgICAgIG9mZnNldE07ICAgICAgICAvLyBPZmZzZXQgdG8gZmlyc3QgIk0iIGN1cnZlCisgICAgY21zVUludDMyTnVtYmVyICAgICAgb2Zmc2V0QzsgICAgICAgIC8vIE9mZnNldCB0byBDTFVUCisgICAgY21zVUludDMyTnVtYmVyICAgICAgb2Zmc2V0QTsgICAgICAgIC8vIE9mZnNldCB0byBmaXJzdCAiQSIgY3VydmUKKyAgICBjbXNQaXBlbGluZSogTmV3TFVUID0gTlVMTDsKKworCisgICAgQmFzZU9mZnNldCA9IGlvIC0+VGVsbChpbykgLSBzaXplb2YoX2Ntc1RhZ0Jhc2UpOworCisgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAmaW5wdXRDaGFuKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAmb3V0cHV0Q2hhbikpIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgTlVMTCkpIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJm9mZnNldEIpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmb2Zmc2V0TWF0KSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJm9mZnNldE0pKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmb2Zmc2V0QykpIHJldHVybiBOVUxMOworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZvZmZzZXRBKSkgcmV0dXJuIE5VTEw7CisKKyAgIC8vIEFsbG9jYXRlcyBhbiBlbXB0eSBMVVQKKyAgICBOZXdMVVQgPSBjbXNQaXBlbGluZUFsbG9jKHNlbGYgLT5Db250ZXh0SUQsIGlucHV0Q2hhbiwgb3V0cHV0Q2hhbik7CisgICAgaWYgKE5ld0xVVCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChvZmZzZXRBIT0gMCkgeworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTmV3TFVULCBjbXNBVF9FTkQsIFJlYWRTZXRPZkN1cnZlcyhzZWxmLCBpbywgQmFzZU9mZnNldCArIG9mZnNldEEsIGlucHV0Q2hhbikpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBpZiAob2Zmc2V0QyAhPSAwKSB7CisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShOZXdMVVQsIGNtc0FUX0VORCwgUmVhZENMVVQoc2VsZiwgaW8sIEJhc2VPZmZzZXQgKyBvZmZzZXRDLCBpbnB1dENoYW4sIG91dHB1dENoYW4pKSkKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgaWYgKG9mZnNldE0gIT0gMCkgeworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTmV3TFVULCBjbXNBVF9FTkQsIFJlYWRTZXRPZkN1cnZlcyhzZWxmLCBpbywgQmFzZU9mZnNldCArIG9mZnNldE0sIG91dHB1dENoYW4pKSkKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgaWYgKG9mZnNldE1hdCAhPSAwKSB7CisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShOZXdMVVQsIGNtc0FUX0VORCwgUmVhZE1hdHJpeChzZWxmLCBpbywgQmFzZU9mZnNldCArIG9mZnNldE1hdCkpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBpZiAob2Zmc2V0QiAhPSAwKSB7CisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShOZXdMVVQsIGNtc0FUX0VORCwgUmVhZFNldE9mQ3VydmVzKHNlbGYsIGlvLCBCYXNlT2Zmc2V0ICsgb2Zmc2V0Qiwgb3V0cHV0Q2hhbikpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gTmV3TFVUOworRXJyb3I6CisgICAgY21zUGlwZWxpbmVGcmVlKE5ld0xVVCk7CisgICAgcmV0dXJuIE5VTEw7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFNpemVPZlRhZyk7Cit9CisKKy8vIFdyaXRlIGEgc2V0IG9mIGN1cnZlcworc3RhdGljCitjbXNCb29sICBXcml0ZU1hdHJpeChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIGNtc1N0YWdlKiBtcGUpCit7CisgICAgX2Ntc1N0YWdlTWF0cml4RGF0YSogbSA9IChfY21zU3RhZ2VNYXRyaXhEYXRhKikgbXBlIC0+IERhdGE7CisKKyAgICAvLyBXcml0ZSB0aGUgTWF0cml4CisgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIG0gLT4gRG91YmxlWzBdKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBtIC0+IERvdWJsZVsxXSkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgbSAtPiBEb3VibGVbMl0pKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIG0gLT4gRG91YmxlWzNdKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBtIC0+IERvdWJsZVs0XSkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgbSAtPiBEb3VibGVbNV0pKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIG0gLT4gRG91YmxlWzZdKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBtIC0+IERvdWJsZVs3XSkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgbSAtPiBEb3VibGVbOF0pKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAobSAtPk9mZnNldCAhPSBOVUxMKSB7CisKKyAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgbSAtPiBPZmZzZXRbMF0pKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIG0gLT4gT2Zmc2V0WzFdKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBtIC0+IE9mZnNldFsyXSkpIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisKKyAgICB9CisKKworICAgIHJldHVybiBUUlVFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCisvLyBXcml0ZSBhIHNldCBvZiBjdXJ2ZXMKK3N0YXRpYworY21zQm9vbCBXcml0ZVNldE9mQ3VydmVzKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVGFnVHlwZVNpZ25hdHVyZSBUeXBlLCBjbXNTdGFnZSogbXBlKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpLCBuOworICAgIGNtc1RhZ1R5cGVTaWduYXR1cmUgQ3VycmVudFR5cGU7CisgICAgY21zVG9uZUN1cnZlKiogQ3VydmVzOworCisKKyAgICBuICAgICAgPSBjbXNTdGFnZU91dHB1dENoYW5uZWxzKG1wZSk7CisgICAgQ3VydmVzID0gX2Ntc1N0YWdlR2V0UHRyVG9DdXJ2ZVNldChtcGUpOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICAvLyBJZiB0aGlzIGlzIGEgdGFibGUtYmFzZWQgY3VydmUsIHVzZSBjdXJ2ZSB0eXBlIGV2ZW4gb24gVjQKKyAgICAgICAgQ3VycmVudFR5cGUgPSBUeXBlOworCisgICAgICAgIGlmICgoQ3VydmVzW2ldIC0+blNlZ21lbnRzID09IDApfHwKKyAgICAgICAgICAgICgoQ3VydmVzW2ldLT5uU2VnbWVudHMgPT0gMikgJiYgKEN1cnZlc1tpXSAtPlNlZ21lbnRzWzFdLlR5cGUgPT0gMCkpICkKKyAgICAgICAgICAgIEN1cnJlbnRUeXBlID0gY21zU2lnQ3VydmVUeXBlOworICAgICAgICBlbHNlCisgICAgICAgIGlmIChDdXJ2ZXNbaV0gLT5TZWdtZW50c1swXS5UeXBlIDwgMCkKKyAgICAgICAgICAgIEN1cnJlbnRUeXBlID0gY21zU2lnQ3VydmVUeXBlOworCisgICAgICAgIGlmICghX2Ntc1dyaXRlVHlwZUJhc2UoaW8sIEN1cnJlbnRUeXBlKSkgcmV0dXJuIEZBTFNFOworCisgICAgICAgIHN3aXRjaCAoQ3VycmVudFR5cGUpIHsKKworICAgICAgICAgICAgY2FzZSBjbXNTaWdDdXJ2ZVR5cGU6CisgICAgICAgICAgICAgICAgaWYgKCFUeXBlX0N1cnZlX1dyaXRlKHNlbGYsIGlvLCBDdXJ2ZXNbaV0sIDEpKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgY21zU2lnUGFyYW1ldHJpY0N1cnZlVHlwZToKKyAgICAgICAgICAgICAgICBpZiAoIVR5cGVfUGFyYW1ldHJpY0N1cnZlX1dyaXRlKHNlbGYsIGlvLCBDdXJ2ZXNbaV0sIDEpKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjaGFyIFN0cmluZ1s1XTsKKworICAgICAgICAgICAgICAgICAgICBfY21zVGFnU2lnbmF0dXJlMlN0cmluZyhTdHJpbmcsIChjbXNUYWdTaWduYXR1cmUpIFR5cGUpOworICAgICAgICAgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihzZWxmIC0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVua25vd24gY3VydmUgdHlwZSAnJXMnIiwgU3RyaW5nKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFfY21zV3JpdGVBbGlnbm1lbnQoaW8pKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisKKyAgICByZXR1cm4gVFJVRTsKK30KKworCitzdGF0aWMKK2Ntc0Jvb2wgV3JpdGVDTFVUKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDhOdW1iZXIgIFByZWNpc2lvbiwgY21zU3RhZ2UqIG1wZSkKK3sKKyAgICBjbXNVSW50OE51bWJlciAgZ3JpZFBvaW50c1tjbXNNQVhDSEFOTkVMU107IC8vIE51bWJlciBvZiBncmlkIHBvaW50cyBpbiBlYWNoIGRpbWVuc2lvbi4KKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBfY21zU3RhZ2VDTHV0RGF0YSogQ0xVVCA9ICggX2Ntc1N0YWdlQ0x1dERhdGEqKSBtcGUgLT4gRGF0YTsKKworICAgIGlmIChDTFVUIC0+SGFzRmxvYXRWYWx1ZXMpIHsKKyAgICAgICAgIGNtc1NpZ25hbEVycm9yKHNlbGYgLT5Db250ZXh0SUQsIGNtc0VSUk9SX05PVF9TVUlUQUJMRSwgIkNhbm5vdCBzYXZlIGZsb2F0aW5nIHBvaW50IGRhdGEsIENMVVQgYXJlIDggb3IgMTYgYml0IG9ubHkiKTsKKyAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBtZW1zZXQoZ3JpZFBvaW50cywgMCwgc2l6ZW9mKGdyaWRQb2ludHMpKTsKKyAgICBmb3IgKGk9MDsgaSA8IChjbXNVSW50MzJOdW1iZXIpIENMVVQgLT5QYXJhbXMgLT5uSW5wdXRzOyBpKyspCisgICAgICAgIGdyaWRQb2ludHNbaV0gPSAoY21zVUludDhOdW1iZXIpIENMVVQgLT5QYXJhbXMgLT5uU2FtcGxlc1tpXTsKKworICAgIGlmICghaW8gLT4gV3JpdGUoaW8sIGNtc01BWENIQU5ORUxTKnNpemVvZihjbXNVSW50OE51bWJlciksIGdyaWRQb2ludHMpKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAoY21zVUludDhOdW1iZXIpIFByZWNpc2lvbikpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDhOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50OE51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKworICAgIC8vIFByZWNpc2lvbiBjYW4gYmUgMSBvciAyIGJ5dGVzCisgICAgaWYgKFByZWNpc2lvbiA9PSAxKSB7CisKKyAgICAgICAgZm9yIChpPTA7IGkgPCBDTFVULT5uRW50cmllczsgaSsrKSB7CisKKyAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDhOdW1iZXIoaW8sIEZST01fMTZfVE9fOChDTFVULT5UYWIuVFtpXSkpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgICBpZiAoUHJlY2lzaW9uID09IDIpIHsKKworICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZBcnJheShpbywgQ0xVVC0+bkVudHJpZXMsIENMVVQgLT5UYWIuVCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihzZWxmIC0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVua25vd24gcHJlY2lzaW9uIG9mICclZCciLCBQcmVjaXNpb24pOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFfY21zV3JpdGVBbGlnbm1lbnQoaW8pKSByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgcmV0dXJuIFRSVUU7Cit9CisKKworCisKK3N0YXRpYworY21zQm9vbCBUeXBlX0xVVEEyQl9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNQaXBlbGluZSogTHV0ID0gKGNtc1BpcGVsaW5lKikgUHRyOworICAgIGludCBpbnB1dENoYW4sIG91dHB1dENoYW47CisgICAgY21zU3RhZ2UgKkEgPSBOVUxMLCAqQiA9IE5VTEwsICpNID0gTlVMTDsKKyAgICBjbXNTdGFnZSAqIE1hdHJpeCA9IE5VTEw7CisgICAgY21zU3RhZ2UgKiBDTFVUID0gTlVMTDsKKyAgICBjbXNVSW50MzJOdW1iZXIgb2Zmc2V0QiA9IDAsIG9mZnNldE1hdCA9IDAsIG9mZnNldE0gPSAwLCBvZmZzZXRDID0gMCwgb2Zmc2V0QSA9IDA7CisgICAgY21zVUludDMyTnVtYmVyIEJhc2VPZmZzZXQsIERpcmVjdG9yeVBvcywgQ3VycmVudFBvczsKKworICAgIC8vIEdldCB0aGUgYmFzZSBmb3IgYWxsIG9mZnNldHMKKyAgICBCYXNlT2Zmc2V0ID0gaW8gLT5UZWxsKGlvKSAtIHNpemVvZihfY21zVGFnQmFzZSk7CisKKyAgICBpZiAoTHV0IC0+RWxlbWVudHMgIT0gTlVMTCkKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUNoZWNrQW5kUmV0cmVpdmVTdGFnZXMoTHV0LCAxLCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCAmQikpCisgICAgICAgICAgICBpZiAoIWNtc1BpcGVsaW5lQ2hlY2tBbmRSZXRyZWl2ZVN0YWdlcyhMdXQsIDMsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsIGNtc1NpZ01hdHJpeEVsZW1UeXBlLCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCAmTSwgJk1hdHJpeCwgJkIpKQorICAgICAgICAgICAgICAgIGlmICghY21zUGlwZWxpbmVDaGVja0FuZFJldHJlaXZlU3RhZ2VzKEx1dCwgMywgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgY21zU2lnQ0x1dEVsZW1UeXBlLCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCAmQSwgJkNMVVQsICZCKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUNoZWNrQW5kUmV0cmVpdmVTdGFnZXMoTHV0LCA1LCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCBjbXNTaWdDTHV0RWxlbVR5cGUsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBjbXNTaWdNYXRyaXhFbGVtVHlwZSwgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgJkEsICZDTFVULCAmTSwgJk1hdHJpeCwgJkIpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihzZWxmLT5Db250ZXh0SUQsIGNtc0VSUk9SX05PVF9TVUlUQUJMRSwgIkxVVCBpcyBub3Qgc3VpdGFibGUgdG8gYmUgc2F2ZWQgYXMgTHV0QVRvQiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgLy8gR2V0IGlucHV0LCBvdXRwdXQgY2hhbm5lbHMKKyAgICBpbnB1dENoYW4gID0gY21zUGlwZWxpbmVJbnB1dENoYW5uZWxzKEx1dCk7CisgICAgb3V0cHV0Q2hhbiA9IGNtc1BpcGVsaW5lT3V0cHV0Q2hhbm5lbHMoTHV0KTsKKworICAgIC8vIFdyaXRlIGNoYW5uZWwgY291bnQKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAoY21zVUludDhOdW1iZXIpIGlucHV0Q2hhbikpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAoY21zVUludDhOdW1iZXIpIG91dHB1dENoYW4pKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBLZWVwIGRpcmVjdG9yeSB0byBiZSBmaWxsZWQgbGF0dGVyCisgICAgRGlyZWN0b3J5UG9zID0gaW8gLT5UZWxsKGlvKTsKKworICAgIC8vIFdyaXRlIHRoZSBkaXJlY3RvcnkKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKworICAgIGlmIChBICE9IE5VTEwpIHsKKworICAgICAgICBvZmZzZXRBID0gaW8gLT5UZWxsKGlvKSAtIEJhc2VPZmZzZXQ7CisgICAgICAgIGlmICghV3JpdGVTZXRPZkN1cnZlcyhzZWxmLCBpbywgY21zU2lnUGFyYW1ldHJpY0N1cnZlVHlwZSwgQSkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAoQ0xVVCAhPSBOVUxMKSB7CisgICAgICAgIG9mZnNldEMgPSBpbyAtPlRlbGwoaW8pIC0gQmFzZU9mZnNldDsKKyAgICAgICAgaWYgKCFXcml0ZUNMVVQoc2VsZiwgaW8sIEx1dCAtPlNhdmVBczhCaXRzID8gMSA6IDIsIENMVVQpKSByZXR1cm4gRkFMU0U7CisKKyAgICB9CisgICAgaWYgKE0gIT0gTlVMTCkgeworCisgICAgICAgIG9mZnNldE0gPSBpbyAtPlRlbGwoaW8pIC0gQmFzZU9mZnNldDsKKyAgICAgICAgaWYgKCFXcml0ZVNldE9mQ3VydmVzKHNlbGYsIGlvLCBjbXNTaWdQYXJhbWV0cmljQ3VydmVUeXBlLCBNKSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGlmIChNYXRyaXggIT0gTlVMTCkgeworICAgICAgICBvZmZzZXRNYXQgPSBpbyAtPlRlbGwoaW8pIC0gQmFzZU9mZnNldDsKKyAgICAgICAgaWYgKCFXcml0ZU1hdHJpeChzZWxmLCBpbywgTWF0cml4KSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGlmIChCICE9IE5VTEwpIHsKKworICAgICAgICBvZmZzZXRCID0gaW8gLT5UZWxsKGlvKSAtIEJhc2VPZmZzZXQ7CisgICAgICAgIGlmICghV3JpdGVTZXRPZkN1cnZlcyhzZWxmLCBpbywgY21zU2lnUGFyYW1ldHJpY0N1cnZlVHlwZSwgQikpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBDdXJyZW50UG9zID0gaW8gLT5UZWxsKGlvKTsKKworICAgIGlmICghaW8gLT5TZWVrKGlvLCBEaXJlY3RvcnlQb3MpKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgb2Zmc2V0QikpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgb2Zmc2V0TWF0KSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBvZmZzZXRNKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBvZmZzZXRDKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBvZmZzZXRBKSkgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKCFpbyAtPlNlZWsoaW8sIEN1cnJlbnRQb3MpKSByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKK30KKworCitzdGF0aWMKK3ZvaWQqIFR5cGVfTFVUQTJCX0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuICh2b2lkKikgY21zUGlwZWxpbmVEdXAoKGNtc1BpcGVsaW5lKikgUHRyKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfTFVUQTJCX0ZyZWUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCB2b2lkKiBQdHIpCit7CisgICAgY21zUGlwZWxpbmVGcmVlKChjbXNQaXBlbGluZSopIFB0cik7CisgICAgcmV0dXJuOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCisvLyBMdXRCVG9BIHR5cGUKKworc3RhdGljCit2b2lkKiBUeXBlX0xVVEIyQV9SZWFkKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuSXRlbXMsIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgY21zVUludDhOdW1iZXIgICAgICAgaW5wdXRDaGFuOyAgICAgIC8vIE51bWJlciBvZiBpbnB1dCBjaGFubmVscworICAgIGNtc1VJbnQ4TnVtYmVyICAgICAgIG91dHB1dENoYW47ICAgICAvLyBOdW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzCisgICAgY21zVUludDMyTnVtYmVyICAgICAgQmFzZU9mZnNldDsgICAgIC8vIEFjdHVhbCBwb3NpdGlvbiBpbiBmaWxlCisgICAgY21zVUludDMyTnVtYmVyICAgICAgb2Zmc2V0QjsgICAgICAgIC8vIE9mZnNldCB0byBmaXJzdCAiQiIgY3VydmUKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICBvZmZzZXRNYXQ7ICAgICAgLy8gT2Zmc2V0IHRvIG1hdHJpeAorICAgIGNtc1VJbnQzMk51bWJlciAgICAgIG9mZnNldE07ICAgICAgICAvLyBPZmZzZXQgdG8gZmlyc3QgIk0iIGN1cnZlCisgICAgY21zVUludDMyTnVtYmVyICAgICAgb2Zmc2V0QzsgICAgICAgIC8vIE9mZnNldCB0byBDTFVUCisgICAgY21zVUludDMyTnVtYmVyICAgICAgb2Zmc2V0QTsgICAgICAgIC8vIE9mZnNldCB0byBmaXJzdCAiQSIgY3VydmUKKyAgICBjbXNQaXBlbGluZSogTmV3TFVUID0gTlVMTDsKKworCisgICAgQmFzZU9mZnNldCA9IGlvIC0+VGVsbChpbykgLSBzaXplb2YoX2Ntc1RhZ0Jhc2UpOworCisgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAmaW5wdXRDaGFuKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAmb3V0cHV0Q2hhbikpIHJldHVybiBOVUxMOworCisgICAgLy8gUGFkZGluZworICAgIGlmICghX2Ntc1JlYWRVSW50MTZOdW1iZXIoaW8sIE5VTEwpKSByZXR1cm4gTlVMTDsKKworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZvZmZzZXRCKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJm9mZnNldE1hdCkpIHJldHVybiBOVUxMOworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZvZmZzZXRNKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJm9mZnNldEMpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmb2Zmc2V0QSkpIHJldHVybiBOVUxMOworCisgICAgLy8gQWxsb2NhdGVzIGFuIGVtcHR5IExVVAorICAgIE5ld0xVVCA9IGNtc1BpcGVsaW5lQWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgaW5wdXRDaGFuLCBvdXRwdXRDaGFuKTsKKyAgICBpZiAoTmV3TFVUID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgaWYgKG9mZnNldEIgIT0gMCkgeworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTmV3TFVULCBjbXNBVF9FTkQsIFJlYWRTZXRPZkN1cnZlcyhzZWxmLCBpbywgQmFzZU9mZnNldCArIG9mZnNldEIsIGlucHV0Q2hhbikpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBpZiAob2Zmc2V0TWF0ICE9IDApIHsKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKE5ld0xVVCwgY21zQVRfRU5ELCBSZWFkTWF0cml4KHNlbGYsIGlvLCBCYXNlT2Zmc2V0ICsgb2Zmc2V0TWF0KSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKworICAgIGlmIChvZmZzZXRNICE9IDApIHsKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKE5ld0xVVCwgY21zQVRfRU5ELCBSZWFkU2V0T2ZDdXJ2ZXMoc2VsZiwgaW8sIEJhc2VPZmZzZXQgKyBvZmZzZXRNLCBpbnB1dENoYW4pKSkKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgaWYgKG9mZnNldEMgIT0gMCkgeworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTmV3TFVULCBjbXNBVF9FTkQsIFJlYWRDTFVUKHNlbGYsIGlvLCBCYXNlT2Zmc2V0ICsgb2Zmc2V0QywgaW5wdXRDaGFuLCBvdXRwdXRDaGFuKSkpCisgICAgICAgICAgICBnb3RvIEVycm9yOworICAgIH0KKworICAgIGlmIChvZmZzZXRBIT0gMCkgeworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTmV3TFVULCBjbXNBVF9FTkQsIFJlYWRTZXRPZkN1cnZlcyhzZWxmLCBpbywgQmFzZU9mZnNldCArIG9mZnNldEEsIG91dHB1dENoYW4pKSkKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgKm5JdGVtcyA9IDE7CisgICAgcmV0dXJuIE5ld0xVVDsKK0Vycm9yOgorICAgIGNtc1BpcGVsaW5lRnJlZShOZXdMVVQpOworICAgIHJldHVybiBOVUxMOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisKKy8qCitCCitCIC0gTWF0cml4IC0gTQorQiAtIENMVVQgLSBBCitCIC0gTWF0cml4IC0gTSAtIENMVVQgLSBBCisqLworCitzdGF0aWMKK2Ntc0Jvb2wgIFR5cGVfTFVUQjJBX1dyaXRlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgdm9pZCogUHRyLCBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zKQoreworICAgIGNtc1BpcGVsaW5lKiBMdXQgPSAoY21zUGlwZWxpbmUqKSBQdHI7CisgICAgaW50IGlucHV0Q2hhbiwgb3V0cHV0Q2hhbjsKKyAgICBjbXNTdGFnZSAqQSA9IE5VTEwsICpCID0gTlVMTCwgKk0gPSBOVUxMOworICAgIGNtc1N0YWdlICpNYXRyaXggPSBOVUxMOworICAgIGNtc1N0YWdlICpDTFVUID0gTlVMTDsKKyAgICBjbXNVSW50MzJOdW1iZXIgb2Zmc2V0QiA9IDAsIG9mZnNldE1hdCA9IDAsIG9mZnNldE0gPSAwLCBvZmZzZXRDID0gMCwgb2Zmc2V0QSA9IDA7CisgICAgY21zVUludDMyTnVtYmVyIEJhc2VPZmZzZXQsIERpcmVjdG9yeVBvcywgQ3VycmVudFBvczsKKworCisgICAgQmFzZU9mZnNldCA9IGlvIC0+VGVsbChpbykgLSBzaXplb2YoX2Ntc1RhZ0Jhc2UpOworCisgICAgaWYgKCFjbXNQaXBlbGluZUNoZWNrQW5kUmV0cmVpdmVTdGFnZXMoTHV0LCAxLCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCAmQikpCisgICAgICAgIGlmICghY21zUGlwZWxpbmVDaGVja0FuZFJldHJlaXZlU3RhZ2VzKEx1dCwgMywgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgY21zU2lnTWF0cml4RWxlbVR5cGUsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsICZCLCAmTWF0cml4LCAmTSkpCisgICAgICAgICAgICBpZiAoIWNtc1BpcGVsaW5lQ2hlY2tBbmRSZXRyZWl2ZVN0YWdlcyhMdXQsIDMsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsIGNtc1NpZ0NMdXRFbGVtVHlwZSwgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgJkIsICZDTFVULCAmQSkpCisgICAgICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUNoZWNrQW5kUmV0cmVpdmVTdGFnZXMoTHV0LCA1LCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCBjbXNTaWdNYXRyaXhFbGVtVHlwZSwgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgY21zU2lnQ0x1dEVsZW1UeXBlLCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCAmQiwgJk1hdHJpeCwgJk0sICZDTFVULCAmQSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKHNlbGYtPkNvbnRleHRJRCwgY21zRVJST1JfTk9UX1NVSVRBQkxFLCAiTFVUIGlzIG5vdCBzdWl0YWJsZSB0byBiZSBzYXZlZCBhcyBMdXRCVG9BIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgfQorCisgICAgaW5wdXRDaGFuICA9IGNtc1BpcGVsaW5lSW5wdXRDaGFubmVscyhMdXQpOworICAgIG91dHB1dENoYW4gPSBjbXNQaXBlbGluZU91dHB1dENoYW5uZWxzKEx1dCk7CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAoY21zVUludDhOdW1iZXIpIGlucHV0Q2hhbikpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQ4TnVtYmVyKGlvLCAoY21zVUludDhOdW1iZXIpIG91dHB1dENoYW4pKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisKKyAgICBEaXJlY3RvcnlQb3MgPSBpbyAtPlRlbGwoaW8pOworCisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIDApKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoQSAhPSBOVUxMKSB7CisKKyAgICAgICAgb2Zmc2V0QSA9IGlvIC0+VGVsbChpbykgLSBCYXNlT2Zmc2V0OworICAgICAgICBpZiAoIVdyaXRlU2V0T2ZDdXJ2ZXMoc2VsZiwgaW8sIGNtc1NpZ1BhcmFtZXRyaWNDdXJ2ZVR5cGUsIEEpKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgaWYgKENMVVQgIT0gTlVMTCkgeworICAgICAgICBvZmZzZXRDID0gaW8gLT5UZWxsKGlvKSAtIEJhc2VPZmZzZXQ7CisgICAgICAgIGlmICghV3JpdGVDTFVUKHNlbGYsIGlvLCBMdXQgLT5TYXZlQXM4Qml0cyA/IDEgOiAyLCBDTFVUKSkgcmV0dXJuIEZBTFNFOworCisgICAgfQorICAgIGlmIChNICE9IE5VTEwpIHsKKworICAgICAgICBvZmZzZXRNID0gaW8gLT5UZWxsKGlvKSAtIEJhc2VPZmZzZXQ7CisgICAgICAgIGlmICghV3JpdGVTZXRPZkN1cnZlcyhzZWxmLCBpbywgY21zU2lnUGFyYW1ldHJpY0N1cnZlVHlwZSwgTSkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAoTWF0cml4ICE9IE5VTEwpIHsKKyAgICAgICAgb2Zmc2V0TWF0ID0gaW8gLT5UZWxsKGlvKSAtIEJhc2VPZmZzZXQ7CisgICAgICAgIGlmICghV3JpdGVNYXRyaXgoc2VsZiwgaW8sIE1hdHJpeCkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAoQiAhPSBOVUxMKSB7CisKKyAgICAgICAgb2Zmc2V0QiA9IGlvIC0+VGVsbChpbykgLSBCYXNlT2Zmc2V0OworICAgICAgICBpZiAoIVdyaXRlU2V0T2ZDdXJ2ZXMoc2VsZiwgaW8sIGNtc1NpZ1BhcmFtZXRyaWNDdXJ2ZVR5cGUsIEIpKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgQ3VycmVudFBvcyA9IGlvIC0+VGVsbChpbyk7CisKKyAgICBpZiAoIWlvIC0+U2VlayhpbywgRGlyZWN0b3J5UG9zKSkgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIG9mZnNldEIpKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIG9mZnNldE1hdCkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgb2Zmc2V0TSkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgb2Zmc2V0QykpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgb2Zmc2V0QSkpIHJldHVybiBGQUxTRTsKKworICAgIGlmICghaW8gLT5TZWVrKGlvLCBDdXJyZW50UG9zKSkgcmV0dXJuIEZBTFNFOworCisgICAgcmV0dXJuIFRSVUU7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG5JdGVtcyk7Cit9CisKKworCitzdGF0aWMKK3ZvaWQqIFR5cGVfTFVUQjJBX0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuICh2b2lkKikgY21zUGlwZWxpbmVEdXAoKGNtc1BpcGVsaW5lKikgUHRyKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfTFVUQjJBX0ZyZWUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCB2b2lkKiBQdHIpCit7CisgICAgY21zUGlwZWxpbmVGcmVlKChjbXNQaXBlbGluZSopIFB0cik7CisgICAgcmV0dXJuOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ0NvbG9yYW50VGFibGVUeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLyoKK1RoZSBwdXJwb3NlIG9mIHRoaXMgdGFnIGlzIHRvIGlkZW50aWZ5IHRoZSBjb2xvcmFudHMgdXNlZCBpbiB0aGUgcHJvZmlsZSBieSBhCit1bmlxdWUgbmFtZSBhbmQgc2V0IG9mIFhZWiBvciBMKmEqYiogdmFsdWVzIHRvIGdpdmUgdGhlIGNvbG9yYW50IGFuIHVuYW1iaWd1b3VzCit2YWx1ZS4gVGhlIGZpcnN0IGNvbG9yYW50IGxpc3RlZCBpcyB0aGUgY29sb3JhbnQgb2YgdGhlIGZpcnN0IGRldmljZSBjaGFubmVsIG9mCithIGx1dCB0YWcuIFRoZSBzZWNvbmQgY29sb3JhbnQgbGlzdGVkIGlzIHRoZSBjb2xvcmFudCBvZiB0aGUgc2Vjb25kIGRldmljZSBjaGFubmVsCitvZiBhIGx1dCB0YWcsIGFuZCBzbyBvbi4KKyovCisKK3N0YXRpYwordm9pZCAqVHlwZV9Db2xvcmFudFRhYmxlX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaSwgQ291bnQ7CisgICAgY21zTkFNRURDT0xPUkxJU1QqIExpc3Q7CisgICAgY2hhciBOYW1lWzM0XTsKKyAgICBjbXNVSW50MTZOdW1iZXIgUENTWzNdOworCisKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmQ291bnQpKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChDb3VudCA+IGNtc01BWENIQU5ORUxTKSB7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKHNlbGYtPkNvbnRleHRJRCwgY21zRVJST1JfUkFOR0UsICJUb28gbWFueSBjb2xvcmFudHMgJyVkJyIsIENvdW50KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgTGlzdCA9IGNtc0FsbG9jTmFtZWRDb2xvckxpc3Qoc2VsZiAtPkNvbnRleHRJRCwgQ291bnQsIDAsICIiLCAiIik7CisgICAgZm9yIChpPTA7IGkgPCBDb3VudDsgaSsrKSB7CisKKyAgICAgICAgaWYgKGlvIC0+UmVhZChpbywgTmFtZSwgMzIsIDEpICE9IDEpIGdvdG8gRXJyb3I7CisgICAgICAgIE5hbWVbMzNdID0gMDsKKworICAgICAgICBpZiAoIV9jbXNSZWFkVUludDE2QXJyYXkoaW8sIDMsIFBDUykpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgaWYgKCFjbXNBcHBlbmROYW1lZENvbG9yKExpc3QsIE5hbWUsIFBDUywgTlVMTCkpIGdvdG8gRXJyb3I7CisKKyAgICB9CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gTGlzdDsKKworRXJyb3I6CisgICAgKm5JdGVtcyA9IDA7CisgICAgY21zRnJlZU5hbWVkQ29sb3JMaXN0KExpc3QpOworICAgIHJldHVybiBOVUxMOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisKKworLy8gU2F2ZXMgYSBjb2xvcmFudCB0YWJsZS4gSXQgaXMgdXNpbmcgdGhlIG5hbWVkIGNvbG9yIHN0cnVjdHVyZSBmb3Igc2ltcGxpY2l0eSBzYWtlCitzdGF0aWMKK2Ntc0Jvb2wgIFR5cGVfQ29sb3JhbnRUYWJsZV9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNOQU1FRENPTE9STElTVCogTmFtZWRDb2xvckxpc3QgPSAoY21zTkFNRURDT0xPUkxJU1QqKSBQdHI7CisgICAgaW50IGksIG5Db2xvcnM7CisKKyAgICBuQ29sb3JzID0gY21zTmFtZWRDb2xvckNvdW50KE5hbWVkQ29sb3JMaXN0KTsKKworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBuQ29sb3JzKSkgcmV0dXJuIEZBTFNFOworCisgICAgZm9yIChpPTA7IGkgPCBuQ29sb3JzOyBpKyspIHsKKworICAgICAgICBjaGFyIHJvb3RbMzNdOworICAgICAgICBjbXNVSW50MTZOdW1iZXIgUENTWzNdOworCisgICAgICAgIGlmICghY21zTmFtZWRDb2xvckluZm8oTmFtZWRDb2xvckxpc3QsIGksIHJvb3QsIE5VTEwsIE5VTEwsIFBDUywgTlVMTCkpIHJldHVybiAwOworICAgICAgICByb290WzMyXSA9IDA7CisKKyAgICAgICAgaWYgKCFpbyAtPldyaXRlKGlvLCAzMiwgcm9vdCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZBcnJheShpbywgMywgUENTKSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuSXRlbXMpOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKKworc3RhdGljCit2b2lkKiBUeXBlX0NvbG9yYW50VGFibGVfRHVwKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY29uc3Qgdm9pZCogUHRyLCBjbXNVSW50MzJOdW1iZXIgbikKK3sKKyAgICBjbXNOQU1FRENPTE9STElTVCogbmMgPSAoY21zTkFNRURDT0xPUkxJU1QqKSBQdHI7CisgICAgcmV0dXJuICh2b2lkKikgY21zRHVwTmFtZWRDb2xvckxpc3QobmMpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKK3N0YXRpYwordm9pZCBUeXBlX0NvbG9yYW50VGFibGVfRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgICBjbXNGcmVlTmFtZWRDb2xvckxpc3QoKGNtc05BTUVEQ09MT1JMSVNUKikgUHRyKTsKKyAgICByZXR1cm47CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ05hbWVkQ29sb3IyVHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvL1RoZSBuYW1lZENvbG9yMlR5cGUgaXMgYSBjb3VudCB2YWx1ZSBhbmQgYXJyYXkgb2Ygc3RydWN0dXJlcyB0aGF0IHByb3ZpZGUgY29sb3IKKy8vY29vcmRpbmF0ZXMgZm9yIDctYml0IEFTQ0lJIGNvbG9yIG5hbWVzLiBGb3IgZWFjaCBuYW1lZCBjb2xvciwgYSBQQ1MgYW5kIG9wdGlvbmFsCisvL2RldmljZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29sb3IgYXJlIGdpdmVuLiBCb3RoIHJlcHJlc2VudGF0aW9ucyBhcmUgMTYtYml0IHZhbHVlcy4KKy8vVGhlIGRldmljZSByZXByZXNlbnRhdGlvbiBjb3JyZXNwb25kcyB0byB0aGUgaGVhZGVyknMgk2NvbG9yIHNwYWNlIG9mIGRhdGE/ZmllbGQuCisvL1RoaXMgcmVwcmVzZW50YXRpb24gc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgk251bWJlciBvZiBkZXZpY2UgY29tcG9uZW50cz8vL2ZpZWxkIGluIHRoZSBuYW1lZENvbG9yMlR5cGUuIElmIHRoaXMgZmllbGQgaXMgMCwgZGV2aWNlIGNvb3JkaW5hdGVzIGFyZSBub3QgcHJvdmlkZWQuCisvL1RoZSBQQ1MgcmVwcmVzZW50YXRpb24gY29ycmVzcG9uZHMgdG8gdGhlIGhlYWRlcpJzIFBDUyBmaWVsZC4gVGhlIFBDUyByZXByZXNlbnRhdGlvbgorLy9pcyBhbHdheXMgcHJvdmlkZWQuIENvbG9yIG5hbWVzIGFyZSBmaXhlZC1sZW5ndGgsIDMyLWJ5dGUgZmllbGRzIGluY2x1ZGluZyBudWxsCisvL3Rlcm1pbmF0aW9uLiBJbiBvcmRlciB0byBtYWludGFpbiBtYXhpbXVtIHBvcnRhYmlsaXR5LCBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZAorLy90aGF0IHNwZWNpYWwgY2hhcmFjdGVycyBvZiB0aGUgNy1iaXQgQVNDSUkgc2V0IG5vdCBiZSB1c2VkLgorCitzdGF0aWMKK3ZvaWQgKlR5cGVfTmFtZWRDb2xvcl9SZWFkKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuSXRlbXMsIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICB2ZW5kb3JGbGFnOyAgICAgLy8gQm90dG9tIDE2IGJpdHMgZm9yIElDQyB1c2UKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICBjb3VudDsgICAgICAgICAgLy8gQ291bnQgb2YgbmFtZWQgY29sb3JzCisgICAgY21zVUludDMyTnVtYmVyICAgICAgbkRldmljZUNvb3JkczsgIC8vIE51bSBvZiBkZXZpY2UgY29vcmRpbmF0ZXMKKyAgICBjaGFyICAgICAgICAgICAgICAgICBwcmVmaXhbMzJdOyAgICAgLy8gUHJlZml4IGZvciBlYWNoIGNvbG9yIG5hbWUKKyAgICBjaGFyICAgICAgICAgICAgICAgICBzdWZmaXhbMzJdOyAgICAgLy8gU3VmZml4IGZvciBlYWNoIGNvbG9yIG5hbWUKKyAgICBjbXNOQU1FRENPTE9STElTVCogIHY7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKworICAgICpuSXRlbXMgPSAwOworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZ2ZW5kb3JGbGFnKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJmNvdW50KSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJm5EZXZpY2VDb29yZHMpKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChpbyAtPiBSZWFkKGlvLCBwcmVmaXgsIDMyLCAxKSAhPSAxKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW8gLT4gUmVhZChpbywgc3VmZml4LCAzMiwgMSkgIT0gMSkgcmV0dXJuIE5VTEw7CisKKyAgICBwcmVmaXhbMzFdID0gc3VmZml4WzMxXSA9IDA7CisKKyAgICB2ID0gY21zQWxsb2NOYW1lZENvbG9yTGlzdChzZWxmIC0+Q29udGV4dElELCBjb3VudCwgbkRldmljZUNvb3JkcywgcHJlZml4LCBzdWZmaXgpOworICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgY21zU2lnbmFsRXJyb3Ioc2VsZi0+Q29udGV4dElELCBjbXNFUlJPUl9SQU5HRSwgIlRvbyBtYW55IG5hbWVkIGNvbG9ycyAnJWQnIiwgY291bnQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobkRldmljZUNvb3JkcyA+IGNtc01BWENIQU5ORUxTKSB7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKHNlbGYtPkNvbnRleHRJRCwgY21zRVJST1JfUkFOR0UsICJUb28gbWFueSBkZXZpY2UgY29vcmRpbmF0ZXMgJyVkJyIsIG5EZXZpY2VDb29yZHMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yIChpPTA7IGkgPCBjb3VudDsgaSsrKSB7CisKKyAgICAgICAgY21zVUludDE2TnVtYmVyIFBDU1szXTsKKyAgICAgICAgY21zVUludDE2TnVtYmVyIENvbG9yYW50W2Ntc01BWENIQU5ORUxTXTsKKyAgICAgICAgY2hhciBSb290WzMzXTsKKworICAgICAgICBtZW1zZXQoQ29sb3JhbnQsIDAsIHNpemVvZihDb2xvcmFudCkpOworICAgICAgICBpZiAoaW8gLT4gUmVhZChpbywgUm9vdCwgMzIsIDEpICE9IDEpIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIV9jbXNSZWFkVUludDE2QXJyYXkoaW8sIDMsIFBDUykpIGdvdG8gRXJyb3I7CisgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MTZBcnJheShpbywgbkRldmljZUNvb3JkcywgQ29sb3JhbnQpKSBnb3RvIEVycm9yOworCisgICAgICAgIGlmICghY21zQXBwZW5kTmFtZWRDb2xvcih2LCBSb290LCBQQ1MsIENvbG9yYW50KSkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gKHZvaWQqKSB2IDsKKworRXJyb3I6CisgICAgY21zRnJlZU5hbWVkQ29sb3JMaXN0KHYpOworICAgIHJldHVybiBOVUxMOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisKKy8vIFNhdmVzIGEgbmFtZWQgY29sb3IgbGlzdCBpbnRvIGEgbmFtZWQgY29sb3IgcHJvZmlsZQorc3RhdGljCitjbXNCb29sIFR5cGVfTmFtZWRDb2xvcl9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNOQU1FRENPTE9STElTVCogTmFtZWRDb2xvckxpc3QgPSAoY21zTkFNRURDT0xPUkxJU1QqKSBQdHI7CisgICAgY2hhciAgICAgICAgICAgICAgICBwcmVmaXhbMzJdOyAgICAgLy8gUHJlZml4IGZvciBlYWNoIGNvbG9yIG5hbWUKKyAgICBjaGFyICAgICAgICAgICAgICAgIHN1ZmZpeFszMl07ICAgICAvLyBTdWZmaXggZm9yIGVhY2ggY29sb3IgbmFtZQorICAgIGludCBpLCBuQ29sb3JzOworCisgICAgbkNvbG9ycyA9IGNtc05hbWVkQ29sb3JDb3VudChOYW1lZENvbG9yTGlzdCk7CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgbkNvbG9ycykpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgTmFtZWRDb2xvckxpc3QgLT5Db2xvcmFudENvdW50KSkgcmV0dXJuIEZBTFNFOworCisgICAgc3RybmNweShwcmVmaXgsIChjb25zdCBjaGFyKikgTmFtZWRDb2xvckxpc3QtPlByZWZpeCwgMzIpOworICAgIHN0cm5jcHkoc3VmZml4LCAoY29uc3QgY2hhciopIE5hbWVkQ29sb3JMaXN0LT5TdWZmaXgsIDMyKTsKKworICAgIHN1ZmZpeFszMV0gPSBwcmVmaXhbMzFdID0gMDsKKworICAgIGlmICghaW8gLT5Xcml0ZShpbywgMzIsIHByZWZpeCkpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIWlvIC0+V3JpdGUoaW8sIDMyLCBzdWZmaXgpKSByZXR1cm4gRkFMU0U7CisKKyAgICBmb3IgKGk9MDsgaSA8IG5Db2xvcnM7IGkrKykgeworCisgICAgICAgY21zVUludDE2TnVtYmVyIFBDU1szXTsKKyAgICAgICBjbXNVSW50MTZOdW1iZXIgQ29sb3JhbnRbY21zTUFYQ0hBTk5FTFNdOworICAgICAgIGNoYXIgUm9vdFszM107CisKKyAgICAgICAgaWYgKCFjbXNOYW1lZENvbG9ySW5mbyhOYW1lZENvbG9yTGlzdCwgaSwgUm9vdCwgTlVMTCwgTlVMTCwgUENTLCBDb2xvcmFudCkpIHJldHVybiAwOworICAgICAgICBpZiAoIWlvIC0+V3JpdGUoaW8sIDMyICwgUm9vdCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZBcnJheShpbywgMywgUENTKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNkFycmF5KGlvLCBOYW1lZENvbG9yTGlzdCAtPkNvbG9yYW50Q291bnQsIENvbG9yYW50KSkgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuSXRlbXMpOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYwordm9pZCogVHlwZV9OYW1lZENvbG9yX0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgY21zTkFNRURDT0xPUkxJU1QqIG5jID0gKGNtc05BTUVEQ09MT1JMSVNUKikgUHRyOworCisgICAgcmV0dXJuICh2b2lkKikgY21zRHVwTmFtZWRDb2xvckxpc3QobmMpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKK3N0YXRpYwordm9pZCBUeXBlX05hbWVkQ29sb3JfRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgICBjbXNGcmVlTmFtZWRDb2xvckxpc3QoKGNtc05BTUVEQ09MT1JMSVNUKikgUHRyKTsKKyAgICByZXR1cm47CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ1Byb2ZpbGVTZXF1ZW5jZURlc2NUeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisvLyBUaGlzIHR5cGUgaXMgYW4gYXJyYXkgb2Ygc3RydWN0dXJlcywgZWFjaCBvZiB3aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBmcm9tIHRoZQorLy8gaGVhZGVyIGZpZWxkcyBhbmQgdGFncyBmcm9tIHRoZSBvcmlnaW5hbCBwcm9maWxlcyB3aGljaCB3ZXJlIGNvbWJpbmVkIHRvIGNyZWF0ZQorLy8gdGhlIGZpbmFsIHByb2ZpbGUuIFRoZSBvcmRlciBvZiB0aGUgc3RydWN0dXJlcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIHByb2ZpbGVzCisvLyB3ZXJlIGNvbWJpbmVkIGFuZCBpbmNsdWRlcyBhIHN0cnVjdHVyZSBmb3IgdGhlIGZpbmFsIHByb2ZpbGUuIFRoaXMgcHJvdmlkZXMgYQorLy8gZGVzY3JpcHRpb24gb2YgdGhlIHByb2ZpbGUgc2VxdWVuY2UgZnJvbSBzb3VyY2UgdG8gZGVzdGluYXRpb24sCisvLyB0eXBpY2FsbHkgdXNlZCB3aXRoIHRoZSBEZXZpY2VMaW5rIHByb2ZpbGUuCisKK3N0YXRpYworY21zQm9vbCBSZWFkRW1iZWRkZWRUZXh0KHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zTUxVKiogbWx1LCBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc1RhZ1R5cGVTaWduYXR1cmUgIEJhc2VUeXBlOworICAgIGNtc1VJbnQzMk51bWJlciBuSXRlbXM7CisKKyAgICBCYXNlVHlwZSA9IF9jbXNSZWFkVHlwZUJhc2UoaW8pOworCisgICAgc3dpdGNoIChCYXNlVHlwZSkgeworCisgICAgICAgY2FzZSBjbXNTaWdUZXh0VHlwZToKKyAgICAgICAgICAgaWYgKCptbHUpIGNtc01MVWZyZWUoKm1sdSk7CisgICAgICAgICAgICptbHUgPSAoY21zTUxVKilUeXBlX1RleHRfUmVhZChzZWxmLCBpbywgJm5JdGVtcywgU2l6ZU9mVGFnKTsKKyAgICAgICAgICAgcmV0dXJuICgqbWx1ICE9IE5VTEwpOworCisgICAgICAgY2FzZSBjbXNTaWdUZXh0RGVzY3JpcHRpb25UeXBlOgorICAgICAgICAgICBpZiAoKm1sdSkgY21zTUxVZnJlZSgqbWx1KTsKKyAgICAgICAgICAgKm1sdSA9ICAoY21zTUxVKikgVHlwZV9UZXh0X0Rlc2NyaXB0aW9uX1JlYWQoc2VsZiwgaW8sICZuSXRlbXMsIFNpemVPZlRhZyk7CisgICAgICAgICAgIHJldHVybiAoKm1sdSAhPSBOVUxMKTsKKworICAgICAgICAgICAvKgorICAgICAgICAgICBUQkQ6IFNpemUgaXMgbmVlZGVkIGZvciBNTFUsIGFuZCB3ZSBoYXZlIG5vIGlkZWEgb24gd2hpY2ggaXMgdGhlIGF2YWlsYWJsZSBzaXplCisgICAgICAgICAgICovCisKKyAgICAgICBjYXNlIGNtc1NpZ011bHRpTG9jYWxpemVkVW5pY29kZVR5cGU6CisgICAgICAgICAgIGlmICgqbWx1KSBjbXNNTFVmcmVlKCptbHUpOworICAgICAgICAgICAqbWx1ID0gIChjbXNNTFUqKSBUeXBlX01MVV9SZWFkKHNlbGYsIGlvLCAmbkl0ZW1zLCBTaXplT2ZUYWcpOworICAgICAgICAgICByZXR1cm4gKCptbHUgIT0gTlVMTCk7CisKKyAgICAgICBkZWZhdWx0OiByZXR1cm4gRkFMU0U7CisgICAgfQorfQorCisKK3N0YXRpYwordm9pZCAqVHlwZV9Qcm9maWxlU2VxdWVuY2VEZXNjX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNTRVEqIE91dFNlcTsKKyAgICBjbXNVSW50MzJOdW1iZXIgaSwgQ291bnQ7CisKKyAgICAqbkl0ZW1zID0gMDsKKworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZDb3VudCkpIHJldHVybiBOVUxMOworCisgICAgaWYgKFNpemVPZlRhZyA8IHNpemVvZihjbXNVSW50MzJOdW1iZXIpKSByZXR1cm4gTlVMTDsKKyAgICBTaXplT2ZUYWcgLT0gc2l6ZW9mKGNtc1VJbnQzMk51bWJlcik7CisKKworICAgIE91dFNlcSA9IGNtc0FsbG9jUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oc2VsZiAtPkNvbnRleHRJRCwgQ291bnQpOworICAgIGlmIChPdXRTZXEgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBPdXRTZXEgLT5uID0gQ291bnQ7CisKKyAgICAvLyBHZXQgc3RydWN0dXJlcyBhcyB3ZWxsCisKKyAgICBmb3IgKGk9MDsgaSA8IENvdW50OyBpKyspIHsKKworICAgICAgICBjbXNQU0VRREVTQyogc2VjID0gJk91dFNlcSAtPiBzZXFbaV07CisKKyAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJnNlYyAtPmRldmljZU1mZykpIGdvdG8gRXJyb3I7CisgICAgICAgIGlmIChTaXplT2ZUYWcgPCBzaXplb2YoY21zVUludDMyTnVtYmVyKSkgZ290byBFcnJvcjsKKyAgICAgICAgU2l6ZU9mVGFnIC09IHNpemVvZihjbXNVSW50MzJOdW1iZXIpOworCisgICAgICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZzZWMgLT5kZXZpY2VNb2RlbCkpIGdvdG8gRXJyb3I7CisgICAgICAgIGlmIChTaXplT2ZUYWcgPCBzaXplb2YoY21zVUludDMyTnVtYmVyKSkgZ290byBFcnJvcjsKKyAgICAgICAgU2l6ZU9mVGFnIC09IHNpemVvZihjbXNVSW50MzJOdW1iZXIpOworCisgICAgICAgIGlmICghX2Ntc1JlYWRVSW50NjROdW1iZXIoaW8sICZzZWMgLT5hdHRyaWJ1dGVzKSkgZ290byBFcnJvcjsKKyAgICAgICAgaWYgKFNpemVPZlRhZyA8IHNpemVvZihjbXNVSW50NjROdW1iZXIpKSBnb3RvIEVycm9yOworICAgICAgICBTaXplT2ZUYWcgLT0gc2l6ZW9mKGNtc1VJbnQ2NE51bWJlcik7CisKKyAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgKGNtc1VJbnQzMk51bWJlciAqKSZzZWMgLT50ZWNobm9sb2d5KSkgZ290byBFcnJvcjsKKyAgICAgICAgaWYgKFNpemVPZlRhZyA8IHNpemVvZihjbXNVSW50MzJOdW1iZXIpKSBnb3RvIEVycm9yOworICAgICAgICBTaXplT2ZUYWcgLT0gc2l6ZW9mKGNtc1VJbnQzMk51bWJlcik7CisKKyAgICAgICAgaWYgKCFSZWFkRW1iZWRkZWRUZXh0KHNlbGYsIGlvLCAmc2VjIC0+TWFudWZhY3R1cmVyLCBTaXplT2ZUYWcpKSBnb3RvIEVycm9yOworICAgICAgICBpZiAoIVJlYWRFbWJlZGRlZFRleHQoc2VsZiwgaW8sICZzZWMgLT5Nb2RlbCwgU2l6ZU9mVGFnKSkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gT3V0U2VxOworCitFcnJvcjoKKyAgICBjbXNGcmVlUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oT3V0U2VxKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCisvLyBBdXgtLUVtYmVkIGEgdGV4dCBkZXNjcmlwdGlvbiB0eXBlLiBJdCBjYW4gYmUgb2YgdHlwZSB0ZXh0IGRlc2NyaXB0aW9uIG9yIG11bHRpbG9jYWxpemVkIHVuaWNvZGUKKy8vIGFuZCBpdCBkZXBlbmRzIG9mIHRoZSB2ZXJzaW9uIG51bWJlciBwYXNzZWQgb24gY21zVGFnRGVzY3JpcHRvciBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBzdGFjaworc3RhdGljCitjbXNCb29sICBTYXZlRGVzY3JpcHRpb24oc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNNTFUqIFRleHQpCit7CisgICAgaWYgKHNlbGYgLT5JQ0NWZXJzaW9uIDwgMHg0MDAwMDAwKSB7CisKKyAgICAgICAgaWYgKCFfY21zV3JpdGVUeXBlQmFzZShpbywgY21zU2lnVGV4dERlc2NyaXB0aW9uVHlwZSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgcmV0dXJuIFR5cGVfVGV4dF9EZXNjcmlwdGlvbl9Xcml0ZShzZWxmLCBpbywgVGV4dCwgMSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoIV9jbXNXcml0ZVR5cGVCYXNlKGlvLCBjbXNTaWdNdWx0aUxvY2FsaXplZFVuaWNvZGVUeXBlKSkgcmV0dXJuIEZBTFNFOworICAgICAgICByZXR1cm4gVHlwZV9NTFVfV3JpdGUoc2VsZiwgaW8sIFRleHQsIDEpOworICAgIH0KK30KKworCitzdGF0aWMKK2Ntc0Jvb2wgIFR5cGVfUHJvZmlsZVNlcXVlbmNlRGVzY19Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNTRVEqIFNlcSA9IChjbXNTRVEqKSBQdHI7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgU2VxLT5uKSkgcmV0dXJuIEZBTFNFOworCisgICAgZm9yIChpPTA7IGkgPCBTZXEgLT5uOyBpKyspIHsKKworICAgICAgICBjbXNQU0VRREVTQyogc2VjID0gJlNlcSAtPiBzZXFbaV07CisKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIHNlYyAtPmRldmljZU1mZykpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIHNlYyAtPmRldmljZU1vZGVsKSkgcmV0dXJuIEZBTFNFOworICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQ2NE51bWJlcihpbywgJnNlYyAtPmF0dHJpYnV0ZXMpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBzZWMgLT50ZWNobm9sb2d5KSkgcmV0dXJuIEZBTFNFOworCisgICAgICAgIGlmICghU2F2ZURlc2NyaXB0aW9uKHNlbGYsIGlvLCBzZWMgLT5NYW51ZmFjdHVyZXIpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghU2F2ZURlc2NyaXB0aW9uKHNlbGYsIGlvLCBzZWMgLT5Nb2RlbCkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAgcmV0dXJuIFRSVUU7CisKKyAgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuSXRlbXMpOworfQorCisKK3N0YXRpYwordm9pZCogVHlwZV9Qcm9maWxlU2VxdWVuY2VEZXNjX0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuICh2b2lkKikgY21zRHVwUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oKGNtc1NFUSopIFB0cik7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG4pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYwordm9pZCBUeXBlX1Byb2ZpbGVTZXF1ZW5jZURlc2NfRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgICBjbXNGcmVlUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oKGNtc1NFUSopIFB0cik7CisgICAgcmV0dXJuOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVHlwZSBjbXNTaWdQcm9maWxlU2VxdWVuY2VJZFR5cGUKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvKgorSW4gY2VydGFpbiB3b3JrZmxvd3MgdXNpbmcgSUNDIERldmljZSBMaW5rIFByb2ZpbGVzLCBpdCBpcyBuZWNlc3NhcnkgdG8gaWRlbnRpZnkgdGhlCitvcmlnaW5hbCBwcm9maWxlcyB0aGF0IHdlcmUgY29tYmluZWQgdG8gY3JlYXRlIHRoZSBEZXZpY2UgTGluayBQcm9maWxlLgorVGhpcyB0eXBlIGlzIGFuIGFycmF5IG9mIHN0cnVjdHVyZXMsIGVhY2ggb2Ygd2hpY2ggY29udGFpbnMgaW5mb3JtYXRpb24gZm9yCitpZGVudGlmaWNhdGlvbiBvZiBhIHByb2ZpbGUgdXNlZCBpbiBhIHNlcXVlbmNlCisqLworCisKK3N0YXRpYworY21zQm9vbCBSZWFkU2VxSUQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSU9IQU5ETEVSKiBpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIENhcmdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc1NFUSogT3V0U2VxID0gKGNtc1NFUSopIENhcmdvOworICAgIGNtc1BTRVFERVNDKiBzZXEgPSAmT3V0U2VxIC0+c2VxW25dOworCisgICAgaWYgKGlvIC0+IFJlYWQoaW8sIHNlcSAtPlByb2ZpbGVJRC5JRDgsIDE2LCAxKSAhPSAxKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFSZWFkRW1iZWRkZWRUZXh0KHNlbGYsIGlvLCAmc2VxIC0+RGVzY3JpcHRpb24sIFNpemVPZlRhZykpIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworfQorCisKKworc3RhdGljCit2b2lkICpUeXBlX1Byb2ZpbGVTZXF1ZW5jZUlkX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNTRVEqIE91dFNlcTsKKyAgICBjbXNVSW50MzJOdW1iZXIgQ291bnQ7CisgICAgY21zVUludDMyTnVtYmVyIEJhc2VPZmZzZXQ7CisKKyAgICAqbkl0ZW1zID0gMDsKKworICAgIC8vIEdldCBhY3R1YWwgcG9zaXRpb24gYXMgYSBiYXNpcyBmb3IgZWxlbWVudCBvZmZzZXRzCisgICAgQmFzZU9mZnNldCA9IGlvIC0+VGVsbChpbykgLSBzaXplb2YoX2Ntc1RhZ0Jhc2UpOworCisgICAgLy8gR2V0IHRhYmxlIGNvdW50CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJkNvdW50KSkgcmV0dXJuIE5VTEw7CisgICAgU2l6ZU9mVGFnIC09IHNpemVvZihjbXNVSW50MzJOdW1iZXIpOworCisgICAgLy8gQWxsb2NhdGUgYW4gZW1wdHkgc3RydWN0dXJlCisgICAgT3V0U2VxID0gY21zQWxsb2NQcm9maWxlU2VxdWVuY2VEZXNjcmlwdGlvbihzZWxmIC0+Q29udGV4dElELCBDb3VudCk7CisgICAgaWYgKE91dFNlcSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworCisgICAgLy8gUmVhZCB0aGUgcG9zaXRpb24gdGFibGUKKyAgICBpZiAoIVJlYWRQb3NpdGlvblRhYmxlKHNlbGYsIGlvLCBDb3VudCwgQmFzZU9mZnNldCwgT3V0U2VxLCBSZWFkU2VxSUQpKSB7CisKKyAgICAgICAgY21zRnJlZVByb2ZpbGVTZXF1ZW5jZURlc2NyaXB0aW9uKE91dFNlcSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8vIFN1Y2Nlc3MKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gT3V0U2VxOworCit9CisKKworc3RhdGljCitjbXNCb29sIFdyaXRlU2VxSUQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSU9IQU5ETEVSKiBpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIENhcmdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc1NFUSogU2VxID0gKGNtc1NFUSopIENhcmdvOworCisgICAgaWYgKCFpbyAtPldyaXRlKGlvLCAxNiwgU2VxIC0+c2VxW25dLlByb2ZpbGVJRC5JRDgpKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBTdG9yZSBoZXJlIHRoZSBNTFUKKyAgICBpZiAoIVNhdmVEZXNjcmlwdGlvbihzZWxmLCBpbywgU2VxIC0+c2VxW25dLkRlc2NyaXB0aW9uKSkgcmV0dXJuIEZBTFNFOworCisgICAgcmV0dXJuIFRSVUU7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFNpemVPZlRhZyk7Cit9CisKK3N0YXRpYworY21zQm9vbCAgVHlwZV9Qcm9maWxlU2VxdWVuY2VJZF9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNTRVEqIFNlcSA9IChjbXNTRVEqKSBQdHI7CisgICAgY21zVUludDMyTnVtYmVyIEJhc2VPZmZzZXQ7CisKKyAgICAvLyBLZWVwIHRoZSBiYXNlIG9mZnNldAorICAgIEJhc2VPZmZzZXQgPSBpbyAtPlRlbGwoaW8pIC0gc2l6ZW9mKF9jbXNUYWdCYXNlKTsKKworICAgIC8vIFRoaXMgaXMgdGhlIHRhYmxlIGNvdW50CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIFNlcSAtPm4pKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBUaGlzIGlzIHRoZSBwb3NpdGlvbiB0YWJsZSBhbmQgY29udGVudAorICAgIGlmICghV3JpdGVQb3NpdGlvblRhYmxlKHNlbGYsIGlvLCAwLCBTZXEgLT5uLCBCYXNlT2Zmc2V0LCBTZXEsIFdyaXRlU2VxSUQpKSByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKK30KKworc3RhdGljCit2b2lkKiBUeXBlX1Byb2ZpbGVTZXF1ZW5jZUlkX0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuICh2b2lkKikgY21zRHVwUHJvZmlsZVNlcXVlbmNlRGVzY3JpcHRpb24oKGNtc1NFUSopIFB0cik7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG4pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKK3N0YXRpYwordm9pZCBUeXBlX1Byb2ZpbGVTZXF1ZW5jZUlkX0ZyZWUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCB2b2lkKiBQdHIpCit7CisgICAgY21zRnJlZVByb2ZpbGVTZXF1ZW5jZURlc2NyaXB0aW9uKChjbXNTRVEqKSBQdHIpOworICAgIHJldHVybjsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnVWNyQmdUeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLyoKK1RoaXMgdHlwZSBjb250YWlucyBjdXJ2ZXMgcmVwcmVzZW50aW5nIHRoZSB1bmRlciBjb2xvciByZW1vdmFsIGFuZCBibGFjaworZ2VuZXJhdGlvbiBhbmQgYSB0ZXh0IHN0cmluZyB3aGljaCBpcyBhIGdlbmVyYWwgZGVzY3JpcHRpb24gb2YgdGhlIG1ldGhvZCB1c2VkCitmb3IgdGhlIHVjci9iZy4KKyovCisKK3N0YXRpYwordm9pZCAqVHlwZV9VY3JCZ19SZWFkKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuSXRlbXMsIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgY21zVWNyQmcqIG4gPSAoY21zVWNyQmcqKSBfY21zTWFsbG9jWmVybyhzZWxmIC0+Q29udGV4dElELCBzaXplb2YoY21zVWNyQmcpKTsKKyAgICBjbXNVSW50MzJOdW1iZXIgQ291bnRVY3IsIENvdW50Qmc7CisgICAgY2hhciogQVNDSUlTdHJpbmc7CisKKyAgICAqbkl0ZW1zID0gMDsKKyAgICBpZiAobiA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIC8vIEZpcnN0IGN1cnZlIGlzIFVuZGVyIGNvbG9yIHJlbW92YWwKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmQ291bnRVY3IpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoU2l6ZU9mVGFnIDwgc2l6ZW9mKGNtc1VJbnQzMk51bWJlcikpIHJldHVybiBOVUxMOworICAgIFNpemVPZlRhZyAtPSBzaXplb2YoY21zVUludDMyTnVtYmVyKTsKKworICAgIG4gLT5VY3IgPSBjbXNCdWlsZFRhYnVsYXRlZFRvbmVDdXJ2ZTE2KHNlbGYgLT5Db250ZXh0SUQsIENvdW50VWNyLCBOVUxMKTsKKyAgICBpZiAobiAtPlVjciA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGlmICghX2Ntc1JlYWRVSW50MTZBcnJheShpbywgQ291bnRVY3IsIG4gLT5VY3ItPlRhYmxlMTYpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoU2l6ZU9mVGFnIDwgc2l6ZW9mKGNtc1VJbnQzMk51bWJlcikpIHJldHVybiBOVUxMOworICAgIFNpemVPZlRhZyAtPSBDb3VudFVjciAqIHNpemVvZihjbXNVSW50MTZOdW1iZXIpOworCisgICAgLy8gU2Vjb25kIGN1cnZlIGlzIEJsYWNrIGdlbmVyYXRpb24KKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmQ291bnRCZykpIHJldHVybiBOVUxMOworICAgIGlmIChTaXplT2ZUYWcgPCBzaXplb2YoY21zVUludDMyTnVtYmVyKSkgcmV0dXJuIE5VTEw7CisgICAgU2l6ZU9mVGFnIC09IHNpemVvZihjbXNVSW50MzJOdW1iZXIpOworCisgICAgbiAtPkJnID0gY21zQnVpbGRUYWJ1bGF0ZWRUb25lQ3VydmUxNihzZWxmIC0+Q29udGV4dElELCBDb3VudEJnLCBOVUxMKTsKKyAgICBpZiAobiAtPkJnID09IE5VTEwpIHJldHVybiBOVUxMOworICAgIGlmICghX2Ntc1JlYWRVSW50MTZBcnJheShpbywgQ291bnRCZywgbiAtPkJnLT5UYWJsZTE2KSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFNpemVPZlRhZyA8IENvdW50QmcgKiBzaXplb2YoY21zVUludDE2TnVtYmVyKSkgcmV0dXJuIE5VTEw7CisgICAgU2l6ZU9mVGFnIC09IENvdW50QmcgKiBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKKyAgICBpZiAoU2l6ZU9mVGFnID09IFVJTlRfTUFYKSByZXR1cm4gTlVMTDsKKworICAgIC8vIE5vdyBjb21lcyB0aGUgdGV4dC4gVGhlIGxlbmd0aCBpcyBzcGVjaWZpZWQgYnkgdGhlIHRhZyBzaXplCisgICAgbiAtPkRlc2MgPSBjbXNNTFVhbGxvYyhzZWxmIC0+Q29udGV4dElELCAxKTsKKyAgICBpZiAobiAtPkRlc2MgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICBBU0NJSVN0cmluZyA9IChjaGFyKikgX2Ntc01hbGxvYyhzZWxmIC0+Q29udGV4dElELCBTaXplT2ZUYWcgKyAxKTsKKyAgICBpZiAoaW8gLT5SZWFkKGlvLCBBU0NJSVN0cmluZywgc2l6ZW9mKGNoYXIpLCBTaXplT2ZUYWcpICE9IFNpemVPZlRhZykgcmV0dXJuIE5VTEw7CisgICAgQVNDSUlTdHJpbmdbU2l6ZU9mVGFnXSA9IDA7CisgICAgY21zTUxVc2V0QVNDSUkobiAtPkRlc2MsIGNtc05vTGFuZ3VhZ2UsIGNtc05vQ291bnRyeSwgQVNDSUlTdHJpbmcpOworICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIEFTQ0lJU3RyaW5nKTsKKworICAgICpuSXRlbXMgPSAxOworICAgIHJldHVybiAodm9pZCopIG47Cit9CisKK3N0YXRpYworY21zQm9vbCAgVHlwZV9VY3JCZ19Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNVY3JCZyogVmFsdWUgPSAoY21zVWNyQmcqKSBQdHI7CisgICAgY21zVUludDMyTnVtYmVyIFRleHRTaXplOworICAgIGNoYXIqIFRleHQ7CisKKyAgICAvLyBGaXJzdCBjdXJ2ZSBpcyBVbmRlciBjb2xvciByZW1vdmFsCisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIFZhbHVlIC0+VWNyIC0+bkVudHJpZXMpKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MTZBcnJheShpbywgVmFsdWUgLT5VY3IgLT5uRW50cmllcywgVmFsdWUgLT5VY3IgLT5UYWJsZTE2KSkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gVGhlbiBibGFjayBnZW5lcmF0aW9uCisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIFZhbHVlIC0+QmcgLT5uRW50cmllcykpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNkFycmF5KGlvLCBWYWx1ZSAtPkJnIC0+bkVudHJpZXMsIFZhbHVlIC0+QmcgLT5UYWJsZTE2KSkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gTm93IGNvbWVzIHRoZSB0ZXh0LiBUaGUgbGVuZ3RoIGlzIHNwZWNpZmllZCBieSB0aGUgdGFnIHNpemUKKyAgICBUZXh0U2l6ZSA9IGNtc01MVWdldEFTQ0lJKFZhbHVlIC0+RGVzYywgY21zTm9MYW5ndWFnZSwgY21zTm9Db3VudHJ5LCBOVUxMLCAwKTsKKyAgICBUZXh0ICAgICA9IChjaGFyKikgX2Ntc01hbGxvYyhzZWxmIC0+Q29udGV4dElELCBUZXh0U2l6ZSk7CisgICAgaWYgKGNtc01MVWdldEFTQ0lJKFZhbHVlIC0+RGVzYywgY21zTm9MYW5ndWFnZSwgY21zTm9Db3VudHJ5LCBUZXh0LCBUZXh0U2l6ZSkgIT0gVGV4dFNpemUpIHJldHVybiBGQUxTRTsKKworICAgIGlmICghaW8gLT5Xcml0ZShpbywgVGV4dFNpemUsIFRleHQpKSByZXR1cm4gRkFMU0U7CisgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgVGV4dCk7CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKK30KKworc3RhdGljCit2b2lkKiBUeXBlX1VjckJnX0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgY21zVWNyQmcqIFNyYyA9IChjbXNVY3JCZyopIFB0cjsKKyAgICBjbXNVY3JCZyogTmV3VWNyQmcgPSAoY21zVWNyQmcqKSBfY21zTWFsbG9jWmVybyhzZWxmIC0+Q29udGV4dElELCBzaXplb2YoY21zVWNyQmcpKTsKKworICAgIGlmIChOZXdVY3JCZyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIE5ld1VjckJnIC0+QmcgICA9IGNtc0R1cFRvbmVDdXJ2ZShTcmMgLT5CZyk7CisgICAgTmV3VWNyQmcgLT5VY3IgID0gY21zRHVwVG9uZUN1cnZlKFNyYyAtPlVjcik7CisgICAgTmV3VWNyQmcgLT5EZXNjID0gY21zTUxVZHVwKFNyYyAtPkRlc2MpOworCisgICAgcmV0dXJuICh2b2lkKikgTmV3VWNyQmc7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG4pOworfQorCitzdGF0aWMKK3ZvaWQgVHlwZV9VY3JCZ19GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCAqUHRyKQoreworICAgY21zVWNyQmcqIFNyYyA9IChjbXNVY3JCZyopIFB0cjsKKworICAgaWYgKFNyYyAtPlVjcikgY21zRnJlZVRvbmVDdXJ2ZShTcmMgLT5VY3IpOworICAgaWYgKFNyYyAtPkJnKSAgY21zRnJlZVRvbmVDdXJ2ZShTcmMgLT5CZyk7CisgICBpZiAoU3JjIC0+RGVzYykgY21zTUxVZnJlZShTcmMgLT5EZXNjKTsKKworICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgUHRyKTsKK30KKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnQ3JkSW5mb1R5cGUKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy8qCitUaGlzIHR5cGUgY29udGFpbnMgdGhlIFBvc3RTY3JpcHQgcHJvZHVjdCBuYW1lIHRvIHdoaWNoIHRoaXMgcHJvZmlsZSBjb3JyZXNwb25kcworYW5kIHRoZSBuYW1lcyBvZiB0aGUgY29tcGFuaW9uIENSRHMuIFJlY2FsbCB0aGF0IGEgc2luZ2xlIHByb2ZpbGUgY2FuIGdlbmVyYXRlCittdWx0aXBsZSBDUkRzLiBJdCBpcyBpbXBsZW1lbnRlZCBhcyBhIE1MVSBiZWluZyB0aGUgbGFuZ3VhZ2UgY29kZSAiUFMiIGFuZCB0aGVuCitjb3VudHJ5IHZhcmllcyBmb3IgZWFjaCBlbGVtZW50OgorCisgICAgICAgICAgICAgICAgbm06IFBvc3RTY3JpcHQgcHJvZHVjdCBuYW1lCisgICAgICAgICAgICAgICAgIzA6IFJlbmRlcmluZyBpbnRlbnQgMCBDUkQgbmFtZQorICAgICAgICAgICAgICAgICMxOiBSZW5kZXJpbmcgaW50ZW50IDEgQ1JEIG5hbWUKKyAgICAgICAgICAgICAgICAjMjogUmVuZGVyaW5nIGludGVudCAyIENSRCBuYW1lCisgICAgICAgICAgICAgICAgIzM6IFJlbmRlcmluZyBpbnRlbnQgMyBDUkQgbmFtZQorKi8KKworCisKKy8vIEF1eGlsaWFyLCByZWFkIGFuIHN0cmluZyBzcGVjaWZpZWQgYXMgY291bnQgKyBzdHJpbmcKK3N0YXRpYworY21zQm9vbCAgUmVhZENvdW50QW5kU3Rpbmcoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNNTFUqIG1sdSwgY21zVUludDMyTnVtYmVyKiBTaXplT2ZUYWcsIGNvbnN0IGNoYXIqIFNlY3Rpb24pCit7CisgICAgY21zVUludDMyTnVtYmVyIENvdW50OworICAgIGNoYXIqIFRleHQ7CisKKyAgICBpZiAoKlNpemVPZlRhZyA8IHNpemVvZihjbXNVSW50MzJOdW1iZXIpKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmQ291bnQpKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoQ291bnQgPiBVSU5UX01BWCAtIHNpemVvZihjbXNVSW50MzJOdW1iZXIpKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCpTaXplT2ZUYWcgPCBDb3VudCArIHNpemVvZihjbXNVSW50MzJOdW1iZXIpKSByZXR1cm4gRkFMU0U7CisKKyAgICBUZXh0ICAgICA9IChjaGFyKikgX2Ntc01hbGxvYyhzZWxmIC0+Q29udGV4dElELCBDb3VudCsxKTsKKyAgICBpZiAoVGV4dCA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoaW8gLT5SZWFkKGlvLCBUZXh0LCBzaXplb2YoY21zVUludDhOdW1iZXIpLCBDb3VudCkgIT0gQ291bnQpIHsKKyAgICAgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgVGV4dCk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBUZXh0W0NvdW50XSA9IDA7CisKKyAgICBjbXNNTFVzZXRBU0NJSShtbHUsICJQUyIsIFNlY3Rpb24sIFRleHQpOworICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFRleHQpOworCisgICAgKlNpemVPZlRhZyAtPSAoQ291bnQgKyBzaXplb2YoY21zVUludDMyTnVtYmVyKSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYworY21zQm9vbCAgV3JpdGVDb3VudEFuZFN0aW5nKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zTUxVKiBtbHUsIGNvbnN0IGNoYXIqIFNlY3Rpb24pCit7CisgY21zVUludDMyTnVtYmVyIFRleHRTaXplOworIGNoYXIqIFRleHQ7CisKKyAgICBUZXh0U2l6ZSA9IGNtc01MVWdldEFTQ0lJKG1sdSwgIlBTIiwgU2VjdGlvbiwgTlVMTCwgMCk7CisgICAgVGV4dCAgICAgPSAoY2hhciopIF9jbXNNYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgVGV4dFNpemUpOworCisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIFRleHRTaXplKSkgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKGNtc01MVWdldEFTQ0lJKG1sdSwgIlBTIiwgU2VjdGlvbiwgVGV4dCwgVGV4dFNpemUpID09IDApIHJldHVybiBGQUxTRTsKKworICAgIGlmICghaW8gLT5Xcml0ZShpbywgVGV4dFNpemUsIFRleHQpKSByZXR1cm4gRkFMU0U7CisgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgVGV4dCk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljCit2b2lkICpUeXBlX0NyZEluZm9fUmVhZChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQzMk51bWJlciogbkl0ZW1zLCBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc01MVSogbWx1ID0gY21zTUxVYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgNSk7CisKKyAgICAqbkl0ZW1zID0gMDsKKyAgICBpZiAoIVJlYWRDb3VudEFuZFN0aW5nKHNlbGYsIGlvLCBtbHUsICZTaXplT2ZUYWcsICJubSIpKSBnb3RvIEVycm9yOworICAgIGlmICghUmVhZENvdW50QW5kU3Rpbmcoc2VsZiwgaW8sIG1sdSwgJlNpemVPZlRhZywgIiMwIikpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFSZWFkQ291bnRBbmRTdGluZyhzZWxmLCBpbywgbWx1LCAmU2l6ZU9mVGFnLCAiIzEiKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIVJlYWRDb3VudEFuZFN0aW5nKHNlbGYsIGlvLCBtbHUsICZTaXplT2ZUYWcsICIjMiIpKSBnb3RvIEVycm9yOworICAgIGlmICghUmVhZENvdW50QW5kU3Rpbmcoc2VsZiwgaW8sIG1sdSwgJlNpemVPZlRhZywgIiMzIikpIGdvdG8gRXJyb3I7CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gKHZvaWQqKSBtbHU7CisKK0Vycm9yOgorICAgIGNtc01MVWZyZWUobWx1KTsKKyAgICByZXR1cm4gTlVMTDsKKworfQorCitzdGF0aWMKK2Ntc0Jvb2wgIFR5cGVfQ3JkSW5mb19Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKworICAgIGNtc01MVSogbWx1ID0gKGNtc01MVSopIFB0cjsKKworICAgIGlmICghV3JpdGVDb3VudEFuZFN0aW5nKHNlbGYsIGlvLCBtbHUsICJubSIpKSBnb3RvIEVycm9yOworICAgIGlmICghV3JpdGVDb3VudEFuZFN0aW5nKHNlbGYsIGlvLCBtbHUsICIjMCIpKSBnb3RvIEVycm9yOworICAgIGlmICghV3JpdGVDb3VudEFuZFN0aW5nKHNlbGYsIGlvLCBtbHUsICIjMSIpKSBnb3RvIEVycm9yOworICAgIGlmICghV3JpdGVDb3VudEFuZFN0aW5nKHNlbGYsIGlvLCBtbHUsICIjMiIpKSBnb3RvIEVycm9yOworICAgIGlmICghV3JpdGVDb3VudEFuZFN0aW5nKHNlbGYsIGlvLCBtbHUsICIjMyIpKSBnb3RvIEVycm9yOworCisgICAgcmV0dXJuIFRSVUU7CisKK0Vycm9yOgorICAgIHJldHVybiBGQUxTRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKK30KKworCitzdGF0aWMKK3ZvaWQqIFR5cGVfQ3JkSW5mb19EdXAoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjb25zdCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgIHJldHVybiAodm9pZCopIGNtc01MVWR1cCgoY21zTUxVKikgUHRyKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfQ3JkSW5mb19GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCAqUHRyKQoreworICAgIGNtc01MVWZyZWUoKGNtc01MVSopIFB0cik7CisgICAgcmV0dXJuOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnU2NyZWVuaW5nVHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vCisvL1RoZSBzY3JlZW5pbmdUeXBlIGRlc2NyaWJlcyB2YXJpb3VzIHNjcmVlbmluZyBwYXJhbWV0ZXJzIGluY2x1ZGluZyBzY3JlZW4KKy8vZnJlcXVlbmN5LCBzY3JlZW5pbmcgYW5nbGUsIGFuZCBzcG90IHNoYXBlLgorCitzdGF0aWMKK3ZvaWQgKlR5cGVfU2NyZWVuaW5nX1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCBjbXNVSW50MzJOdW1iZXIqIG5JdGVtcywgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNTY3JlZW5pbmcqIHNjID0gTlVMTDsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKworICAgIHNjID0gKGNtc1NjcmVlbmluZyopIF9jbXNNYWxsb2NaZXJvKHNlbGYgLT5Db250ZXh0SUQsIHNpemVvZihjbXNTY3JlZW5pbmcpKTsKKyAgICBpZiAoc2MgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICAqbkl0ZW1zID0gMDsKKworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZzYyAtPkZsYWcpKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZzYyAtPm5DaGFubmVscykpIGdvdG8gRXJyb3I7CisKKyAgICBpZiAoc2MgLT5uQ2hhbm5lbHMgPiBjbXNNQVhDSEFOTkVMUyAtIDEpCisgICAgICAgIHNjIC0+bkNoYW5uZWxzID0gY21zTUFYQ0hBTk5FTFMgLSAxOworCisgICAgZm9yIChpPTA7IGkgPCBzYyAtPm5DaGFubmVsczsgaSsrKSB7CisKKyAgICAgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJnNjIC0+Q2hhbm5lbHNbaV0uRnJlcXVlbmN5KSkgZ290byBFcnJvcjsKKyAgICAgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJnNjIC0+Q2hhbm5lbHNbaV0uU2NyZWVuQW5nbGUpKSBnb3RvIEVycm9yOworICAgICAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmc2MgLT5DaGFubmVsc1tpXS5TcG90U2hhcGUpKSBnb3RvIEVycm9yOworICAgIH0KKworCisgICAgKm5JdGVtcyA9IDE7CisKKyAgICByZXR1cm4gKHZvaWQqKSBzYzsKKworRXJyb3I6CisgICAgaWYgKHNjICE9IE5VTEwpCisgICAgICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIHNjKTsKKworICAgIHJldHVybiBOVUxMOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisKK3N0YXRpYworY21zQm9vbCBUeXBlX1NjcmVlbmluZ19Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNTY3JlZW5pbmcqIHNjID0gKGNtc1NjcmVlbmluZyogKSBQdHI7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgc2MgLT5GbGFnKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBzYyAtPm5DaGFubmVscykpIHJldHVybiBGQUxTRTsKKworICAgIGZvciAoaT0wOyBpIDwgc2MgLT5uQ2hhbm5lbHM7IGkrKykgeworCisgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCBzYyAtPkNoYW5uZWxzW2ldLkZyZXF1ZW5jeSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGUxNUZpeGVkMTZOdW1iZXIoaW8sIHNjIC0+Q2hhbm5lbHNbaV0uU2NyZWVuQW5nbGUpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBzYyAtPkNoYW5uZWxzW2ldLlNwb3RTaGFwZSkpIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKK3N0YXRpYwordm9pZCogVHlwZV9TY3JlZW5pbmdfRHVwKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY29uc3Qgdm9pZCAqUHRyLCBjbXNVSW50MzJOdW1iZXIgbikKK3sKKyAgIHJldHVybiBfY21zRHVwTWVtKHNlbGYgLT5Db250ZXh0SUQsIFB0ciwgc2l6ZW9mKGNtc1NjcmVlbmluZykpOworCisgICBjbXNVTlVTRURfUEFSQU1FVEVSKG4pOworfQorCisKK3N0YXRpYwordm9pZCBUeXBlX1NjcmVlbmluZ19GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCogUHRyKQoreworICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgUHRyKTsKK30KKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnVmlld2luZ0NvbmRpdGlvbnNUeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8KKy8vVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBzZXQgb2Ygdmlld2luZyBjb25kaXRpb24gcGFyYW1ldGVycyBpbmNsdWRpbmc6CisvL0NJRSCSYWJzb2x1dGU/aWxsdW1pbmFudCB3aGl0ZSBwb2ludCB0cmlzdGltdWx1cyB2YWx1ZXMgYW5kIENJRSCSYWJzb2x1dGU/Ly9zdXJyb3VuZCB0cmlzdGltdWx1cyB2YWx1ZXMuCisKK3N0YXRpYwordm9pZCAqVHlwZV9WaWV3aW5nQ29uZGl0aW9uc19SZWFkKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuSXRlbXMsIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgY21zSUNDVmlld2luZ0NvbmRpdGlvbnMqIHZjID0gTlVMTDsKKworICAgIHZjID0gKGNtc0lDQ1ZpZXdpbmdDb25kaXRpb25zKikgX2Ntc01hbGxvY1plcm8oc2VsZiAtPkNvbnRleHRJRCwgc2l6ZW9mKGNtc0lDQ1ZpZXdpbmdDb25kaXRpb25zKSk7CisgICAgaWYgKHZjID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgKm5JdGVtcyA9IDA7CisKKyAgICBpZiAoIV9jbXNSZWFkWFlaTnVtYmVyKGlvLCAmdmMgLT5JbGx1bWluYW50WFlaKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNSZWFkWFlaTnVtYmVyKGlvLCAmdmMgLT5TdXJyb3VuZFhZWikpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJnZjIC0+SWxsdW1pbmFudFR5cGUpKSBnb3RvIEVycm9yOworCisgICAgKm5JdGVtcyA9IDE7CisKKyAgICByZXR1cm4gKHZvaWQqKSB2YzsKKworRXJyb3I6CisgICAgaWYgKHZjICE9IE5VTEwpCisgICAgICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIHZjKTsKKworICAgIHJldHVybiBOVUxMOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisKK3N0YXRpYworY21zQm9vbCBUeXBlX1ZpZXdpbmdDb25kaXRpb25zX1dyaXRlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgdm9pZCogUHRyLCBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zKQoreworICAgIGNtc0lDQ1ZpZXdpbmdDb25kaXRpb25zKiBzYyA9IChjbXNJQ0NWaWV3aW5nQ29uZGl0aW9ucyogKSBQdHI7CisKKyAgICBpZiAoIV9jbXNXcml0ZVhZWk51bWJlcihpbywgJnNjIC0+SWxsdW1pbmFudFhZWikpIHJldHVybiBGQUxTRTsKKyAgICBpZiAoIV9jbXNXcml0ZVhZWk51bWJlcihpbywgJnNjIC0+U3Vycm91bmRYWVopKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIHNjIC0+SWxsdW1pbmFudFR5cGUpKSByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKK3N0YXRpYwordm9pZCogVHlwZV9WaWV3aW5nQ29uZGl0aW9uc19EdXAoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjb25zdCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgcmV0dXJuIF9jbXNEdXBNZW0oc2VsZiAtPkNvbnRleHRJRCwgUHRyLCBzaXplb2YoY21zU2NyZWVuaW5nKSk7CisKKyAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7Cit9CisKKworc3RhdGljCit2b2lkIFR5cGVfVmlld2luZ0NvbmRpdGlvbnNfRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFB0cik7Cit9CisKKworLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFR5cGUgY21zU2lnTXVsdGlQcm9jZXNzRWxlbWVudFR5cGUKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKworc3RhdGljCit2b2lkKiBHZW5lcmljTVBFZHVwKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY29uc3Qgdm9pZCAqUHRyLCBjbXNVSW50MzJOdW1iZXIgbikKK3sKKyAgICByZXR1cm4gKHZvaWQqKSBjbXNTdGFnZUR1cCgoY21zU3RhZ2UqKSBQdHIpOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihuKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCitzdGF0aWMKK3ZvaWQgR2VuZXJpY01QRWZyZWUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCB2b2lkICpQdHIpCit7CisgICAgY21zU3RhZ2VGcmVlKChjbXNTdGFnZSopIFB0cik7CisgICAgcmV0dXJuOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworLy8gRWFjaCBjdXJ2ZSBpcyBzdG9yZWQgaW4gb25lIG9yIG1vcmUgY3VydmUgc2VnbWVudHMsIHdpdGggYnJlYWstcG9pbnRzIHNwZWNpZmllZCBiZXR3ZWVuIGN1cnZlIHNlZ21lbnRzLgorLy8gVGhlIGZpcnN0IGN1cnZlIHNlZ21lbnQgYWx3YXlzIHN0YXJ0cyBhdCCWSW5maW5pdHksIGFuZCB0aGUgbGFzdCBjdXJ2ZSBzZWdtZW50IGFsd2F5cyBlbmRzIGF0ICtJbmZpbml0eS4gVGhlCisvLyBmaXJzdCBhbmQgbGFzdCBjdXJ2ZSBzZWdtZW50cyBzaGFsbCBiZSBzcGVjaWZpZWQgaW4gdGVybXMgb2YgYSBmb3JtdWxhLCB3aGVyZWFzIHRoZSBvdGhlciBzZWdtZW50cyBzaGFsbCBiZQorLy8gc3BlY2lmaWVkIGVpdGhlciBpbiB0ZXJtcyBvZiBhIGZvcm11bGEsIG9yIGJ5IGEgc2FtcGxlZCBjdXJ2ZS4KKworCisvLyBSZWFkIGFuIGVtYmVkZGVkIHNlZ21lbnRlZCBjdXJ2ZQorc3RhdGljCitjbXNUb25lQ3VydmUqIFJlYWRTZWdtZW50ZWRDdXJ2ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8pCit7CisgICAgY21zQ3VydmVTZWdTaWduYXR1cmUgRWxlbWVudFNpZzsKKyAgICBjbXNVSW50MzJOdW1iZXIgaSwgajsKKyAgICBjbXNVSW50MTZOdW1iZXIgblNlZ21lbnRzOworICAgIGNtc0N1cnZlU2VnbWVudCogIFNlZ21lbnRzOworICAgIGNtc1RvbmVDdXJ2ZSogQ3VydmU7CisgICAgY21zRmxvYXQzMk51bWJlciBQcmV2QnJlYWsgPSAtMUUyMkY7ICAgIC8vIC0gaW5maW5pdGUKKworICAgIC8vIFRha2Ugc2lnbmF0dXJlIGFuZCBjaGFubmVscyBmb3IgZWFjaCBlbGVtZW50LgorICAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAoY21zVUludDMyTnVtYmVyKikgJkVsZW1lbnRTaWcpKSByZXR1cm4gTlVMTDsKKworICAgICAvLyBUaGF0IHNob3VsZCBiZSBhIHNlZ21lbnRlZCBjdXJ2ZQorICAgICBpZiAoRWxlbWVudFNpZyAhPSBjbXNTaWdTZWdtZW50ZWRDdXJ2ZSkgcmV0dXJuIE5VTEw7CisKKyAgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgTlVMTCkpIHJldHVybiBOVUxMOworICAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmblNlZ21lbnRzKSkgcmV0dXJuIE5VTEw7CisgICAgIGlmICghX2Ntc1JlYWRVSW50MTZOdW1iZXIoaW8sIE5VTEwpKSByZXR1cm4gTlVMTDsKKworICAgICBpZiAoblNlZ21lbnRzIDwgMSkgcmV0dXJuIE5VTEw7CisgICAgIFNlZ21lbnRzID0gKGNtc0N1cnZlU2VnbWVudCopIF9jbXNDYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgblNlZ21lbnRzLCBzaXplb2YoY21zQ3VydmVTZWdtZW50KSk7CisgICAgIGlmIChTZWdtZW50cyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgICAvLyBSZWFkIGJyZWFrcG9pbnRzCisgICAgIGZvciAoaT0wOyBpIDwgKGNtc1VJbnQzMk51bWJlcikgblNlZ21lbnRzIC0gMTsgaSsrKSB7CisKKyAgICAgICAgIFNlZ21lbnRzW2ldLngwID0gUHJldkJyZWFrOworICAgICAgICAgaWYgKCFfY21zUmVhZEZsb2F0MzJOdW1iZXIoaW8sICZTZWdtZW50c1tpXS54MSkpIGdvdG8gRXJyb3I7CisgICAgICAgICBQcmV2QnJlYWsgPSBTZWdtZW50c1tpXS54MTsKKyAgICAgfQorCisgICAgIFNlZ21lbnRzW25TZWdtZW50cy0xXS54MCA9IFByZXZCcmVhazsKKyAgICAgU2VnbWVudHNbblNlZ21lbnRzLTFdLngxID0gMUUyMkY7ICAgICAvLyBBIGJpZyBjbXNGbG9hdDMyTnVtYmVyIG51bWJlcgorCisgICAgIC8vIFJlYWQgc2VnbWVudHMKKyAgICAgZm9yIChpPTA7IGkgPCBuU2VnbWVudHM7IGkrKykgeworCisgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgKGNtc1VJbnQzMk51bWJlciopICZFbGVtZW50U2lnKSkgZ290byBFcnJvcjsKKyAgICAgICAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCBOVUxMKSkgZ290byBFcnJvcjsKKworICAgICAgICAgICBzd2l0Y2ggKEVsZW1lbnRTaWcpIHsKKworICAgICAgICAgICAgY2FzZSBjbXNTaWdGb3JtdWxhQ3VydmVTZWc6IHsKKworICAgICAgICAgICAgICAgIGNtc1VJbnQxNk51bWJlciBUeXBlOworICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBQYXJhbXNCeVR5cGVbXSA9IHs0LCA1LCA1IH07CisKKyAgICAgICAgICAgICAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmVHlwZSkpIGdvdG8gRXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgTlVMTCkpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgICAgICAgICBTZWdtZW50c1tpXS5UeXBlID0gVHlwZSArIDY7CisgICAgICAgICAgICAgICAgaWYgKFR5cGUgPiAyKSBnb3RvIEVycm9yOworCisgICAgICAgICAgICAgICAgZm9yIChqPTA7IGogPCBQYXJhbXNCeVR5cGVbVHlwZV07IGorKykgeworCisgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgZjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfY21zUmVhZEZsb2F0MzJOdW1iZXIoaW8sICZmKSkgZ290byBFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgU2VnbWVudHNbaV0uUGFyYW1zW2pdID0gZjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisKKyAgICAgICAgICAgIGNhc2UgY21zU2lnU2FtcGxlZEN1cnZlU2VnOiB7CisgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIENvdW50OworCisgICAgICAgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJkNvdW50KSkgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgICAgICAgICBTZWdtZW50c1tpXS5uR3JpZFBvaW50cyA9IENvdW50OworICAgICAgICAgICAgICAgIFNlZ21lbnRzW2ldLlNhbXBsZWRQb2ludHMgPSAoY21zRmxvYXQzMk51bWJlciopIF9jbXNDYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgQ291bnQsIHNpemVvZihjbXNGbG9hdDMyTnVtYmVyKSk7CisgICAgICAgICAgICAgICAgaWYgKFNlZ21lbnRzW2ldLlNhbXBsZWRQb2ludHMgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqIDwgQ291bnQ7IGorKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIV9jbXNSZWFkRmxvYXQzMk51bWJlcihpbywgJlNlZ21lbnRzW2ldLlNhbXBsZWRQb2ludHNbal0pKSBnb3RvIEVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoYXIgU3RyaW5nWzVdOworCisgICAgICAgICAgICAgICAgX2Ntc1RhZ1NpZ25hdHVyZTJTdHJpbmcoU3RyaW5nLCAoY21zVGFnU2lnbmF0dXJlKSBFbGVtZW50U2lnKTsKKyAgICAgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihzZWxmLT5Db250ZXh0SUQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiVW5rbm93biBjdXJ2ZSBlbGVtZW50IHR5cGUgJyVzJyBmb3VuZC4iLCBTdHJpbmcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICAgfQorICAgICB9CisKKyAgICAgQ3VydmUgPSBjbXNCdWlsZFNlZ21lbnRlZFRvbmVDdXJ2ZShzZWxmIC0+Q29udGV4dElELCBuU2VnbWVudHMsIFNlZ21lbnRzKTsKKworICAgICBmb3IgKGk9MDsgaSA8IG5TZWdtZW50czsgaSsrKSB7CisgICAgICAgICBpZiAoU2VnbWVudHNbaV0uU2FtcGxlZFBvaW50cykgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgU2VnbWVudHNbaV0uU2FtcGxlZFBvaW50cyk7CisgICAgIH0KKyAgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgU2VnbWVudHMpOworICAgICByZXR1cm4gQ3VydmU7CisKK0Vycm9yOgorICAgICBpZiAoU2VnbWVudHMpIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFNlZ21lbnRzKTsKKyAgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljCitjbXNCb29sIFJlYWRNUEVDdXJ2ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICBjbXNJT0hBTkRMRVIqIGlvLAorICAgICAgICAgICAgICAgICAgICAgdm9pZCogQ2FyZ28sCisgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgbiwKKyAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgICBjbXNUb25lQ3VydmUqKiBHYW1tYVRhYmxlcyA9ICggY21zVG9uZUN1cnZlKiopIENhcmdvOworCisgICAgICBHYW1tYVRhYmxlc1tuXSA9IFJlYWRTZWdtZW50ZWRDdXJ2ZShzZWxmLCBpbyk7CisgICAgICByZXR1cm4gKEdhbW1hVGFibGVzW25dICE9IE5VTEwpOworCisgICAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFNpemVPZlRhZyk7Cit9CisKK3N0YXRpYwordm9pZCAqVHlwZV9NUEVjdXJ2ZV9SZWFkKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuSXRlbXMsIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgY21zU3RhZ2UqIG1wZSA9IE5VTEw7CisgICAgY21zVUludDE2TnVtYmVyIElucHV0Q2hhbnMsIE91dHB1dENoYW5zOworICAgIGNtc1VJbnQzMk51bWJlciBpLCBCYXNlT2Zmc2V0OworICAgIGNtc1RvbmVDdXJ2ZSoqIEdhbW1hVGFibGVzOworCisgICAgKm5JdGVtcyA9IDA7CisKKyAgICAvLyBHZXQgYWN0dWFsIHBvc2l0aW9uIGFzIGEgYmFzaXMgZm9yIGVsZW1lbnQgb2Zmc2V0cworICAgIEJhc2VPZmZzZXQgPSBpbyAtPlRlbGwoaW8pIC0gc2l6ZW9mKF9jbXNUYWdCYXNlKTsKKworICAgIGlmICghX2Ntc1JlYWRVSW50MTZOdW1iZXIoaW8sICZJbnB1dENoYW5zKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgJk91dHB1dENoYW5zKSkgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoSW5wdXRDaGFucyAhPSBPdXRwdXRDaGFucykgcmV0dXJuIE5VTEw7CisKKyAgICBHYW1tYVRhYmxlcyA9IChjbXNUb25lQ3VydmUqKikgX2Ntc0NhbGxvYyhzZWxmIC0+Q29udGV4dElELCBJbnB1dENoYW5zLCBzaXplb2YoY21zVG9uZUN1cnZlKikpOworICAgIGlmIChHYW1tYVRhYmxlcyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChSZWFkUG9zaXRpb25UYWJsZShzZWxmLCBpbywgSW5wdXRDaGFucywgQmFzZU9mZnNldCwgR2FtbWFUYWJsZXMsIFJlYWRNUEVDdXJ2ZSkpIHsKKworICAgICAgICBtcGUgPSBjbXNTdGFnZUFsbG9jVG9uZUN1cnZlcyhzZWxmIC0+Q29udGV4dElELCBJbnB1dENoYW5zLCBHYW1tYVRhYmxlcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGUgPSBOVUxMOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgSW5wdXRDaGFuczsgaSsrKSB7CisgICAgICAgIGlmIChHYW1tYVRhYmxlc1tpXSkgY21zRnJlZVRvbmVDdXJ2ZShHYW1tYVRhYmxlc1tpXSk7CisgICAgfQorCisgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgR2FtbWFUYWJsZXMpOworICAgICpuSXRlbXMgPSAobXBlICE9IE5VTEwpID8gMSA6IDA7CisgICAgcmV0dXJuIG1wZTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoU2l6ZU9mVGFnKTsKK30KKworCisvLyBXcml0ZSBhIHNpbmdsZSBzZWdtZW50ZWQgY3VydmUuIE5PIENIRUNLIElTIFBFUkZPUk1FRCBPTiBWQUxJRElUWQorc3RhdGljCitjbXNCb29sIFdyaXRlU2VnbWVudGVkQ3VydmUoY21zSU9IQU5ETEVSKiBpbywgY21zVG9uZUN1cnZlKiBnKQoreworICAgIGNtc1VJbnQzMk51bWJlciBpLCBqOworICAgIGNtc0N1cnZlU2VnbWVudCogU2VnbWVudHMgPSBnIC0+U2VnbWVudHM7CisgICAgY21zVUludDMyTnVtYmVyIG5TZWdtZW50cyA9IGcgLT5uU2VnbWVudHM7CisKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgY21zU2lnU2VnbWVudGVkQ3VydmUpKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCAwKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNk51bWJlcihpbywgKGNtc1VJbnQxNk51bWJlcikgblNlZ21lbnRzKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNk51bWJlcihpbywgMCkpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBXcml0ZSB0aGUgYnJlYWstcG9pbnRzCisgICAgZm9yIChpPTA7IGkgPCBuU2VnbWVudHMgLSAxOyBpKyspIHsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVGbG9hdDMyTnVtYmVyKGlvLCBTZWdtZW50c1tpXS54MSkpIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgLy8gV3JpdGUgdGhlIHNlZ21lbnRzCisgICAgZm9yIChpPTA7IGkgPCBnIC0+blNlZ21lbnRzOyBpKyspIHsKKworICAgICAgICBjbXNDdXJ2ZVNlZ21lbnQqIEFjdHVhbFNlZyA9IFNlZ21lbnRzICsgaTsKKworICAgICAgICBpZiAoQWN0dWFsU2VnIC0+IFR5cGUgPT0gMCkgeworCisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgc2FtcGxlZCBjdXJ2ZQorICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIChjbXNVSW50MzJOdW1iZXIpIGNtc1NpZ1NhbXBsZWRDdXJ2ZVNlZykpIGdvdG8gRXJyb3I7CisgICAgICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIGdvdG8gRXJyb3I7CisgICAgICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgQWN0dWFsU2VnIC0+IG5HcmlkUG9pbnRzKSkgZ290byBFcnJvcjsKKworICAgICAgICAgICAgZm9yIChqPTA7IGogPCBnIC0+U2VnbWVudHNbaV0ubkdyaWRQb2ludHM7IGorKykgeworICAgICAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlRmxvYXQzMk51bWJlcihpbywgQWN0dWFsU2VnIC0+IFNhbXBsZWRQb2ludHNbal0pKSBnb3RvIEVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgVHlwZTsKKyAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBQYXJhbXNCeVR5cGVbXSA9IHsgNCwgNSwgNSB9OworCisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgZm9ybXVsYS1iYXNlZAorICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIChjbXNVSW50MzJOdW1iZXIpIGNtc1NpZ0Zvcm11bGFDdXJ2ZVNlZykpIGdvdG8gRXJyb3I7CisgICAgICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgYWxsb3cgMSwgMiBhbmQgMyBhcyB0eXBlcworICAgICAgICAgICAgVHlwZSA9IEFjdHVhbFNlZyAtPlR5cGUgLSA2OworICAgICAgICAgICAgaWYgKFR5cGUgPiAyIHx8IFR5cGUgPCAwKSBnb3RvIEVycm9yOworCisgICAgICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNk51bWJlcihpbywgKGNtc1VJbnQxNk51bWJlcikgVHlwZSkpIGdvdG8gRXJyb3I7CisgICAgICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNk51bWJlcihpbywgMCkpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgICAgIGZvciAoaj0wOyBqIDwgUGFyYW1zQnlUeXBlW1R5cGVdOyBqKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIV9jbXNXcml0ZUZsb2F0MzJOdW1iZXIoaW8sIChjbXNGbG9hdDMyTnVtYmVyKSBBY3R1YWxTZWcgLT5QYXJhbXNbal0pKSBnb3RvIEVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSXQgc2VlbXMgdGhlcmUgaXMgbm8gbmVlZCB0byBhbGlnbi4gQ29kZSBpcyBoZXJlLCBhbmQgZm9yIHNhZmV0eSBjb21tZW50ZWQgb3V0CisgICAgICAgIC8vIGlmICghX2Ntc1dyaXRlQWxpZ25tZW50KGlvKSkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKKworRXJyb3I6CisgICAgcmV0dXJuIEZBTFNFOworfQorCisKK3N0YXRpYworY21zQm9vbCBXcml0ZU1QRUN1cnZlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICBjbXNJT0hBTkRMRVIqIGlvLAorICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIENhcmdvLAorICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBuLAorICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIEN1cnZlcyAgPSAoX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqKSBDYXJnbzsKKworICAgIHJldHVybiBXcml0ZVNlZ21lbnRlZEN1cnZlKGlvLCBDdXJ2ZXMgLT5UaGVDdXJ2ZXNbbl0pOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKKy8vIFdyaXRlIGEgY3VydmUsIGNoZWNraW5nIGZpcnN0IGZvciB2YWxpZGl0eQorc3RhdGljCitjbXNCb29sICBUeXBlX01QRWN1cnZlX1dyaXRlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgdm9pZCogUHRyLCBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zKQoreworICAgIGNtc1VJbnQzMk51bWJlciBCYXNlT2Zmc2V0OworICAgIGNtc1N0YWdlKiBtcGUgPSAoY21zU3RhZ2UqKSBQdHI7CisgICAgX2Ntc1N0YWdlVG9uZUN1cnZlc0RhdGEqIEN1cnZlcyA9IChfY21zU3RhZ2VUb25lQ3VydmVzRGF0YSopIG1wZSAtPkRhdGE7CisKKyAgICBCYXNlT2Zmc2V0ID0gaW8gLT5UZWxsKGlvKSAtIHNpemVvZihfY21zVGFnQmFzZSk7CisKKyAgICAvLyBXcml0ZSB0aGUgaGVhZGVyLiBTaW5jZSB0aG9zZSBhcmUgY3VydmVzLCBpbnB1dCBhbmQgb3V0cHV0IGNoYW5uZWxzIGFyZSBzYW1lCisgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIChjbXNVSW50MTZOdW1iZXIpIG1wZSAtPklucHV0Q2hhbm5lbHMpKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIChjbXNVSW50MTZOdW1iZXIpIG1wZSAtPklucHV0Q2hhbm5lbHMpKSByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoIVdyaXRlUG9zaXRpb25UYWJsZShzZWxmLCBpbywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBlIC0+SW5wdXRDaGFubmVscywgQmFzZU9mZnNldCwgQ3VydmVzLCBXcml0ZU1QRUN1cnZlKSkgcmV0dXJuIEZBTFNFOworCisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKK30KKworCisKKy8vIFRoZSBtYXRyaXggaXMgb3JnYW5pemVkIGFzIGFuIGFycmF5IG9mIFB4UStRIGVsZW1lbnRzLCB3aGVyZSBQIGlzIHRoZSBudW1iZXIgb2YgaW5wdXQgY2hhbm5lbHMgdG8gdGhlCisvLyBtYXRyaXgsIGFuZCBRIGlzIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzLiBUaGUgbWF0cml4IGVsZW1lbnRzIGFyZSBlYWNoIGZsb2F0MzJOdW1iZXJzLiBUaGUgYXJyYXkKKy8vIGlzIG9yZ2FuaXplZCBhcyBmb2xsb3dzOgorLy8gYXJyYXkgPSBbZTExLCBlMTIsID8gZTFQLCBlMjEsIGUyMiwgPyBlMlAsID8gZVExLCBlUTIsID8gZVFQLCBlMSwgZTIsID8gZVFdCisKK3N0YXRpYwordm9pZCAqVHlwZV9NUEVtYXRyaXhfUmVhZChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQzMk51bWJlciogbkl0ZW1zLCBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc1N0YWdlKiBtcGU7CisgICAgY21zVUludDE2TnVtYmVyICAgSW5wdXRDaGFucywgT3V0cHV0Q2hhbnM7CisgICAgY21zVUludDMyTnVtYmVyICAgbkVsZW1zLCBpOworICAgIGNtc0Zsb2F0NjROdW1iZXIqIE1hdHJpeDsKKyAgICBjbXNGbG9hdDY0TnVtYmVyKiBPZmZzZXRzOworCisgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgJklucHV0Q2hhbnMpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmT3V0cHV0Q2hhbnMpKSByZXR1cm4gTlVMTDsKKworCisgICAgbkVsZW1zID0gSW5wdXRDaGFucyAqIE91dHB1dENoYW5zOworCisgICAgLy8gSW5wdXQgYW5kIG91dHB1dCBjaGFucyBtYXkgYmUgQU5ZICh1cCB0byAweGZmZmYpCisgICAgTWF0cml4ID0gKGNtc0Zsb2F0NjROdW1iZXIqKSBfY21zQ2FsbG9jKHNlbGYgLT5Db250ZXh0SUQsIG5FbGVtcywgc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpKTsKKyAgICBpZiAoTWF0cml4ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgT2Zmc2V0cyA9IChjbXNGbG9hdDY0TnVtYmVyKikgX2Ntc0NhbGxvYyhzZWxmIC0+Q29udGV4dElELCBPdXRwdXRDaGFucywgc2l6ZW9mKGNtc0Zsb2F0NjROdW1iZXIpKTsKKyAgICBpZiAoT2Zmc2V0cyA9PSBOVUxMKSB7CisKKyAgICAgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgTWF0cml4KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuRWxlbXM7IGkrKykgeworCisgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgdjsKKworICAgICAgICBpZiAoIV9jbXNSZWFkRmxvYXQzMk51bWJlcihpbywgJnYpKSByZXR1cm4gTlVMTDsKKyAgICAgICAgTWF0cml4W2ldID0gdjsKKyAgICB9CisKKworICAgIGZvciAoaT0wOyBpIDwgT3V0cHV0Q2hhbnM7IGkrKykgeworCisgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgdjsKKworICAgICAgICBpZiAoIV9jbXNSZWFkRmxvYXQzMk51bWJlcihpbywgJnYpKSByZXR1cm4gTlVMTDsKKyAgICAgICAgT2Zmc2V0c1tpXSA9IHY7CisgICAgfQorCisKKyAgICBtcGUgPSBjbXNTdGFnZUFsbG9jTWF0cml4KHNlbGYgLT5Db250ZXh0SUQsIE91dHB1dENoYW5zLCBJbnB1dENoYW5zLCBNYXRyaXgsIE9mZnNldHMpOworICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIE1hdHJpeCk7CisgICAgX2Ntc0ZyZWUoc2VsZiAtPkNvbnRleHRJRCwgT2Zmc2V0cyk7CisKKyAgICAqbkl0ZW1zID0gMTsKKworICAgIHJldHVybiBtcGU7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFNpemVPZlRhZyk7Cit9CisKK3N0YXRpYworY21zQm9vbCAgVHlwZV9NUEVtYXRyaXhfV3JpdGUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBuSXRlbXMpCit7CisgICAgY21zVUludDMyTnVtYmVyIGksIG5FbGVtczsKKyAgICBjbXNTdGFnZSogbXBlID0gKGNtc1N0YWdlKikgUHRyOworICAgIF9jbXNTdGFnZU1hdHJpeERhdGEqIE1hdHJpeCA9IChfY21zU3RhZ2VNYXRyaXhEYXRhKikgbXBlIC0+RGF0YTsKKworICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAoY21zVUludDE2TnVtYmVyKSBtcGUgLT5JbnB1dENoYW5uZWxzKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAoY21zVUludDE2TnVtYmVyKSBtcGUgLT5PdXRwdXRDaGFubmVscykpIHJldHVybiBGQUxTRTsKKworICAgIG5FbGVtcyA9IG1wZSAtPklucHV0Q2hhbm5lbHMgKiBtcGUgLT5PdXRwdXRDaGFubmVsczsKKworICAgIGZvciAoaT0wOyBpIDwgbkVsZW1zOyBpKyspIHsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVGbG9hdDMyTnVtYmVyKGlvLCAoY21zRmxvYXQzMk51bWJlcikgTWF0cml4LT5Eb3VibGVbaV0pKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisKKyAgICBmb3IgKGk9MDsgaSA8IG1wZSAtPk91dHB1dENoYW5uZWxzOyBpKyspIHsKKworICAgICAgICBpZiAoTWF0cml4IC0+T2Zmc2V0ID09IE5VTEwpIHsKKworICAgICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVGbG9hdDMyTnVtYmVyKGlvLCAwKSkgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVGbG9hdDMyTnVtYmVyKGlvLCAoY21zRmxvYXQzMk51bWJlcikgTWF0cml4LT5PZmZzZXRbaV0pKSByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKHNlbGYpOworfQorCisKKworc3RhdGljCit2b2lkICpUeXBlX01QRWNsdXRfUmVhZChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQzMk51bWJlciogbkl0ZW1zLCBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc1N0YWdlKiBtcGUgPSBOVUxMOworICAgIGNtc1VJbnQxNk51bWJlciBJbnB1dENoYW5zLCBPdXRwdXRDaGFuczsKKyAgICBjbXNVSW50OE51bWJlciBEaW1lbnNpb25zOFsxNl07CisgICAgY21zVUludDMyTnVtYmVyIGksIG5NYXhHcmlkcywgR3JpZFBvaW50c1tNQVhfSU5QVVRfRElNRU5TSU9OU107CisgICAgX2Ntc1N0YWdlQ0x1dERhdGEqIGNsdXQ7CisKKyAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmSW5wdXRDaGFucykpIHJldHVybiBOVUxMOworICAgIGlmICghX2Ntc1JlYWRVSW50MTZOdW1iZXIoaW8sICZPdXRwdXRDaGFucykpIHJldHVybiBOVUxMOworCisgICAgaWYgKElucHV0Q2hhbnMgPT0gMCkgZ290byBFcnJvcjsKKyAgICBpZiAoT3V0cHV0Q2hhbnMgPT0gMCkgZ290byBFcnJvcjsKKworICAgIGlmIChpbyAtPlJlYWQoaW8sIERpbWVuc2lvbnM4LCBzaXplb2YoY21zVUludDhOdW1iZXIpLCAxNikgIT0gMTYpCisgICAgICAgIGdvdG8gRXJyb3I7CisKKyAgICAvLyBDb3B5IE1BWF9JTlBVVF9ESU1FTlNJT05TIGF0IG1vc3QuIEV4cGFuZCB0byBjbXNVSW50MzJOdW1iZXIKKyAgICBuTWF4R3JpZHMgPSBJbnB1dENoYW5zID4gTUFYX0lOUFVUX0RJTUVOU0lPTlMgPyBNQVhfSU5QVVRfRElNRU5TSU9OUyA6IElucHV0Q2hhbnM7CisgICAgZm9yIChpPTA7IGkgPCBuTWF4R3JpZHM7IGkrKykgR3JpZFBvaW50c1tpXSA9IChjbXNVSW50MzJOdW1iZXIpIERpbWVuc2lvbnM4W2ldOworCisgICAgLy8gQWxsb2NhdGUgdGhlIHRydWUgQ0xVVAorICAgIG1wZSA9IGNtc1N0YWdlQWxsb2NDTHV0RmxvYXRHcmFudWxhcihzZWxmIC0+Q29udGV4dElELCBHcmlkUG9pbnRzLCBJbnB1dENoYW5zLCBPdXRwdXRDaGFucywgTlVMTCk7CisgICAgaWYgKG1wZSA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgLy8gUmVhZCB0aGUgZGF0YQorICAgIGNsdXQgPSAoX2Ntc1N0YWdlQ0x1dERhdGEqKSBtcGUgLT5EYXRhOworICAgIGZvciAoaT0wOyBpIDwgY2x1dCAtPm5FbnRyaWVzOyBpKyspIHsKKworICAgICAgICBpZiAoIV9jbXNSZWFkRmxvYXQzMk51bWJlcihpbywgJmNsdXQgLT5UYWIuVEZsb2F0W2ldKSkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAqbkl0ZW1zID0gMTsKKyAgICByZXR1cm4gbXBlOworCitFcnJvcjoKKyAgICAqbkl0ZW1zID0gMDsKKyAgICBpZiAobXBlICE9IE5VTEwpIGNtc1N0YWdlRnJlZShtcGUpOworICAgIHJldHVybiBOVUxMOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisvLyBXcml0ZSBhIENMVVQgaW4gZmxvYXRpbmcgcG9pbnQKK3N0YXRpYworY21zQm9vbCAgVHlwZV9NUEVjbHV0X1dyaXRlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgdm9pZCogUHRyLCBjbXNVSW50MzJOdW1iZXIgbkl0ZW1zKQoreworICAgIGNtc1VJbnQ4TnVtYmVyIERpbWVuc2lvbnM4WzE2XTsKKyAgICBjbXNVSW50MzJOdW1iZXIgaTsKKyAgICBjbXNTdGFnZSogbXBlID0gKGNtc1N0YWdlKikgUHRyOworICAgIF9jbXNTdGFnZUNMdXREYXRhKiBjbHV0ID0gKF9jbXNTdGFnZUNMdXREYXRhKikgbXBlIC0+RGF0YTsKKworICAgIC8vIENoZWNrIGZvciBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscworICAgIGlmIChtcGUgLT4gSW5wdXRDaGFubmVscyA+IDE1KSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBPbmx5IGZsb2F0cyBhcmUgc3VwcG9ydGVkIGluIE1QRQorICAgIGlmIChjbHV0IC0+SGFzRmxvYXRWYWx1ZXMgPT0gRkFMU0UpIHJldHVybiBGQUxTRTsKKworICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAoY21zVUludDE2TnVtYmVyKSBtcGUgLT5JbnB1dENoYW5uZWxzKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAoY21zVUludDE2TnVtYmVyKSBtcGUgLT5PdXRwdXRDaGFubmVscykpIHJldHVybiBGQUxTRTsKKworICAgIG1lbXNldChEaW1lbnNpb25zOCwgMCwgc2l6ZW9mKERpbWVuc2lvbnM4KSk7CisKKyAgICBmb3IgKGk9MDsgaSA8IG1wZSAtPklucHV0Q2hhbm5lbHM7IGkrKykKKyAgICAgICAgRGltZW5zaW9uczhbaV0gPSAoY21zVUludDhOdW1iZXIpIGNsdXQgLT5QYXJhbXMgLT5uU2FtcGxlc1tpXTsKKworICAgIGlmICghaW8gLT5Xcml0ZShpbywgMTYsIERpbWVuc2lvbnM4KSkgcmV0dXJuIEZBTFNFOworCisgICAgZm9yIChpPTA7IGkgPCBjbHV0IC0+bkVudHJpZXM7IGkrKykgeworCisgICAgICAgIGlmICghX2Ntc1dyaXRlRmxvYXQzMk51bWJlcihpbywgY2x1dCAtPlRhYi5URmxvYXRbaV0pKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG5JdGVtcyk7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCisKKy8vIFRoaXMgaXMgdGhlIGxpc3Qgb2YgYnVpbHQtaW4gTVBFIHR5cGVzCitzdGF0aWMgX2Ntc1RhZ1R5cGVMaW5rZWRMaXN0IFN1cHBvcnRlZE1QRXR5cGVzW10gPSB7CisKK3t7IChjbXNUYWdUeXBlU2lnbmF0dXJlKSBjbXNTaWdCQWNzRWxlbVR5cGUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDAgfSwgJlN1cHBvcnRlZE1QRXR5cGVzWzFdIH0sICAgLy8gSWdub3JlIHRob3NlIGVsZW1lbnRzIGZvciBub3cKK3t7IChjbXNUYWdUeXBlU2lnbmF0dXJlKSBjbXNTaWdFQWNzRWxlbVR5cGUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDAgfSwgJlN1cHBvcnRlZE1QRXR5cGVzWzJdIH0sICAgLy8gKFRoYXQncyB3aGF0IHRoZSBzcGVjIHNheXMpCisKK3tUWVBFX01QRV9IQU5ETEVSKChjbXNUYWdUeXBlU2lnbmF0dXJlKSBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCAgICAgTVBFY3VydmUpLCAgICAgICZTdXBwb3J0ZWRNUEV0eXBlc1szXSB9LAore1RZUEVfTVBFX0hBTkRMRVIoKGNtc1RhZ1R5cGVTaWduYXR1cmUpIGNtc1NpZ01hdHJpeEVsZW1UeXBlLCAgICAgICBNUEVtYXRyaXgpLCAgICAgJlN1cHBvcnRlZE1QRXR5cGVzWzRdIH0sCit7VFlQRV9NUEVfSEFORExFUigoY21zVGFnVHlwZVNpZ25hdHVyZSkgY21zU2lnQ0x1dEVsZW1UeXBlLCAgICAgICAgIE1QRWNsdXQpLCAgICAgICAgTlVMTCB9LAorfTsKKworX2Ntc1RhZ1R5cGVQbHVnaW5DaHVua1R5cGUgX2Ntc01QRVR5cGVQbHVnaW5DaHVuayA9IHsgTlVMTCB9OworCitzdGF0aWMKK2Ntc0Jvb2wgUmVhZE1QRUVsZW0oc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLAorICAgICAgICAgICAgICAgICAgICBjbXNJT0hBTkRMRVIqIGlvLAorICAgICAgICAgICAgICAgICAgICB2b2lkKiBDYXJnbywKKyAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG4sCisgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICAgY21zU3RhZ2VTaWduYXR1cmUgRWxlbWVudFNpZzsKKyAgICBjbXNUYWdUeXBlSGFuZGxlciogVHlwZUhhbmRsZXI7CisgICAgY21zVUludDMyTnVtYmVyIG5JdGVtczsKKyAgICBjbXNQaXBlbGluZSAqTmV3TFVUID0gKGNtc1BpcGVsaW5lICopIENhcmdvOworICAgIF9jbXNUYWdUeXBlUGx1Z2luQ2h1bmtUeXBlKiBNUEVUeXBlUGx1Z2luQ2h1bmsgID0gKCBfY21zVGFnVHlwZVBsdWdpbkNodW5rVHlwZSopIF9jbXNDb250ZXh0R2V0Q2xpZW50Q2h1bmsoc2VsZi0+Q29udGV4dElELCBNUEVQbHVnaW4pOworCisKKyAgICAvLyBUYWtlIHNpZ25hdHVyZSBhbmQgY2hhbm5lbHMgZm9yIGVhY2ggZWxlbWVudC4KKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAoY21zVUludDMyTnVtYmVyKikgJkVsZW1lbnRTaWcpKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBUaGUgcmVzZXJ2ZWQgcGxhY2Vob2xkZXIKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCBOVUxMKSkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gUmVhZCBkaXZlcnNlIE1QRSB0eXBlcworICAgIFR5cGVIYW5kbGVyID0gR2V0SGFuZGxlcigoY21zVGFnVHlwZVNpZ25hdHVyZSkgRWxlbWVudFNpZywgTVBFVHlwZVBsdWdpbkNodW5rIC0+VGFnVHlwZXMsIFN1cHBvcnRlZE1QRXR5cGVzKTsKKyAgICBpZiAoVHlwZUhhbmRsZXIgPT0gTlVMTCkgIHsKKworICAgICAgICBjaGFyIFN0cmluZ1s1XTsKKworICAgICAgICBfY21zVGFnU2lnbmF0dXJlMlN0cmluZyhTdHJpbmcsIChjbXNUYWdTaWduYXR1cmUpIEVsZW1lbnRTaWcpOworCisgICAgICAgIC8vIEFuIHVua25vd24gZWxlbWVudCB3YXMgZm91bmQuCisgICAgICAgIGNtc1NpZ25hbEVycm9yKHNlbGYgLT5Db250ZXh0SUQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiVW5rbm93biBNUEUgdHlwZSAnJXMnIGZvdW5kLiIsIFN0cmluZyk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICAvLyBJZiBubyByZWFkIG1ldGhvZCwganVzdCBpZ25vcmUgdGhlIGVsZW1lbnQgKHZhbGlkIGZvciBjbXNTaWdCQWNzRWxlbVR5cGUgYW5kIGNtc1NpZ0VBY3NFbGVtVHlwZSkKKyAgICAvLyBSZWFkIHRoZSBNUEUuIE5vIHNpemUgaXMgZ2l2ZW4KKyAgICBpZiAoVHlwZUhhbmRsZXIgLT5SZWFkUHRyICE9IE5VTEwpIHsKKworICAgICAgICAvLyBUaGlzIGlzIGEgcmVhbCBlbGVtZW50IHdoaWNoIHNob3VsZCBiZSByZWFkIGFuZCBwcm9jZXNzZWQKKyAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKE5ld0xVVCwgY21zQVRfRU5ELCAoY21zU3RhZ2UqKSBUeXBlSGFuZGxlciAtPlJlYWRQdHIoc2VsZiwgaW8sICZuSXRlbXMsIFNpemVPZlRhZykpKQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7Cit9CisKKworLy8gVGhpcyBpcyB0aGUgbWFpbiBkaXNwYXRjaGVyIGZvciBNUEUKK3N0YXRpYwordm9pZCAqVHlwZV9NUEVfUmVhZChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIGNtc1VJbnQzMk51bWJlciogbkl0ZW1zLCBjbXNVSW50MzJOdW1iZXIgU2l6ZU9mVGFnKQoreworICAgIGNtc1VJbnQxNk51bWJlciBJbnB1dENoYW5zLCBPdXRwdXRDaGFuczsKKyAgICBjbXNVSW50MzJOdW1iZXIgRWxlbWVudENvdW50OworICAgIGNtc1BpcGVsaW5lICpOZXdMVVQgPSBOVUxMOworICAgIGNtc1VJbnQzMk51bWJlciBCYXNlT2Zmc2V0OworCisgICAgLy8gR2V0IGFjdHVhbCBwb3NpdGlvbiBhcyBhIGJhc2lzIGZvciBlbGVtZW50IG9mZnNldHMKKyAgICBCYXNlT2Zmc2V0ID0gaW8gLT5UZWxsKGlvKSAtIHNpemVvZihfY21zVGFnQmFzZSk7CisKKyAgICAvLyBSZWFkIGNoYW5uZWxzIGFuZCBlbGVtZW50IGNvdW50CisgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgJklucHV0Q2hhbnMpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmT3V0cHV0Q2hhbnMpKSByZXR1cm4gTlVMTDsKKworICAgIC8vIEFsbG9jYXRlcyBhbiBlbXB0eSBMVVQKKyAgICBOZXdMVVQgPSBjbXNQaXBlbGluZUFsbG9jKHNlbGYgLT5Db250ZXh0SUQsIElucHV0Q2hhbnMsIE91dHB1dENoYW5zKTsKKyAgICBpZiAoTmV3TFVUID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJkVsZW1lbnRDb3VudCkpIHJldHVybiBOVUxMOworCisgICAgaWYgKCFSZWFkUG9zaXRpb25UYWJsZShzZWxmLCBpbywgRWxlbWVudENvdW50LCBCYXNlT2Zmc2V0LCBOZXdMVVQsIFJlYWRNUEVFbGVtKSkgeworICAgICAgICBpZiAoTmV3TFVUICE9IE5VTEwpIGNtc1BpcGVsaW5lRnJlZShOZXdMVVQpOworICAgICAgICAqbkl0ZW1zID0gMDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLy8gU3VjY2VzcworICAgICpuSXRlbXMgPSAxOworICAgIHJldHVybiBOZXdMVVQ7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKFNpemVPZlRhZyk7Cit9CisKKworCisvLyBUaGlzIG9uZSBpcyBhIGxpaXRsZSBiaXQgbW9yZSBjb21wbGV4LCBzbyB3ZSBkb24ndCB1c2UgcG9zaXRpb24gdGFibGVzIHRoaXMgdGltZS4KK3N0YXRpYworY21zQm9vbCBUeXBlX01QRV9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgaSwgQmFzZU9mZnNldCwgRGlyZWN0b3J5UG9zLCBDdXJyZW50UG9zOworICAgIGludCBpbnB1dENoYW4sIG91dHB1dENoYW47CisgICAgY21zVUludDMyTnVtYmVyIEVsZW1Db3VudDsKKyAgICBjbXNVSW50MzJOdW1iZXIgKkVsZW1lbnRPZmZzZXRzID0gTlVMTCwgKkVsZW1lbnRTaXplcyA9IE5VTEwsIEJlZm9yZTsKKyAgICBjbXNTdGFnZVNpZ25hdHVyZSBFbGVtZW50U2lnOworICAgIGNtc1BpcGVsaW5lKiBMdXQgPSAoY21zUGlwZWxpbmUqKSBQdHI7CisgICAgY21zU3RhZ2UqIEVsZW0gPSBMdXQgLT5FbGVtZW50czsKKyAgICBjbXNUYWdUeXBlSGFuZGxlciogVHlwZUhhbmRsZXI7CisgICAgX2Ntc1RhZ1R5cGVQbHVnaW5DaHVua1R5cGUqIE1QRVR5cGVQbHVnaW5DaHVuayAgPSAoIF9jbXNUYWdUeXBlUGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhzZWxmLT5Db250ZXh0SUQsIE1QRVBsdWdpbik7CisKKyAgICBCYXNlT2Zmc2V0ID0gaW8gLT5UZWxsKGlvKSAtIHNpemVvZihfY21zVGFnQmFzZSk7CisKKyAgICBpbnB1dENoYW4gID0gY21zUGlwZWxpbmVJbnB1dENoYW5uZWxzKEx1dCk7CisgICAgb3V0cHV0Q2hhbiA9IGNtc1BpcGVsaW5lT3V0cHV0Q2hhbm5lbHMoTHV0KTsKKyAgICBFbGVtQ291bnQgID0gY21zUGlwZWxpbmVTdGFnZUNvdW50KEx1dCk7CisKKyAgICBFbGVtZW50T2Zmc2V0cyA9IChjbXNVSW50MzJOdW1iZXIgKikgX2Ntc0NhbGxvYyhzZWxmIC0+Q29udGV4dElELCBFbGVtQ291bnQsIHNpemVvZihjbXNVSW50MzJOdW1iZXIpKTsKKyAgICBpZiAoRWxlbWVudE9mZnNldHMgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIEVsZW1lbnRTaXplcyA9IChjbXNVSW50MzJOdW1iZXIgKikgX2Ntc0NhbGxvYyhzZWxmIC0+Q29udGV4dElELCBFbGVtQ291bnQsIHNpemVvZihjbXNVSW50MzJOdW1iZXIpKTsKKyAgICBpZiAoRWxlbWVudFNpemVzID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBXcml0ZSB0aGUgaGVhZAorICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAoY21zVUludDE2TnVtYmVyKSBpbnB1dENoYW4pKSBnb3RvIEVycm9yOworICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAoY21zVUludDE2TnVtYmVyKSBvdXRwdXRDaGFuKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgKGNtc1VJbnQxNk51bWJlcikgRWxlbUNvdW50KSkgZ290byBFcnJvcjsKKworICAgIERpcmVjdG9yeVBvcyA9IGlvIC0+VGVsbChpbyk7CisKKyAgICAvLyBXcml0ZSBhIGZha2UgZGlyZWN0b3J5IHRvIGJlIGZpbGxlZCBsYXR0ZXIgb24KKyAgICBmb3IgKGk9MDsgaSA8IEVsZW1Db3VudDsgaSsrKSB7CisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCAwKSkgZ290byBFcnJvcjsgIC8vIE9mZnNldAorICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIGdvdG8gRXJyb3I7ICAvLyBzaXplCisgICAgfQorCisgICAgLy8gV3JpdGUgZWFjaCBzaW5nbGUgdGFnLiBLZWVwIHRyYWNrIG9mIHRoZSBzaXplIGFzIHdlbGwuCisgICAgZm9yIChpPTA7IGkgPCBFbGVtQ291bnQ7IGkrKykgeworCisgICAgICAgIEVsZW1lbnRPZmZzZXRzW2ldID0gaW8gLT5UZWxsKGlvKSAtIEJhc2VPZmZzZXQ7CisKKyAgICAgICAgRWxlbWVudFNpZyA9IEVsZW0gLT5UeXBlOworCisgICAgICAgIFR5cGVIYW5kbGVyID0gR2V0SGFuZGxlcigoY21zVGFnVHlwZVNpZ25hdHVyZSkgRWxlbWVudFNpZywgTVBFVHlwZVBsdWdpbkNodW5rLT5UYWdUeXBlcywgU3VwcG9ydGVkTVBFdHlwZXMpOworICAgICAgICBpZiAoVHlwZUhhbmRsZXIgPT0gTlVMTCkgIHsKKworICAgICAgICAgICAgICAgIGNoYXIgU3RyaW5nWzVdOworCisgICAgICAgICAgICAgICAgX2Ntc1RhZ1NpZ25hdHVyZTJTdHJpbmcoU3RyaW5nLCAoY21zVGFnU2lnbmF0dXJlKSBFbGVtZW50U2lnKTsKKworICAgICAgICAgICAgICAgICAvLyBBbiB1bmtub3cgZWxlbWVudCB3YXMgZm91bmQuCisgICAgICAgICAgICAgICAgIGNtc1NpZ25hbEVycm9yKHNlbGYtPkNvbnRleHRJRCwgY21zRVJST1JfVU5LTk9XTl9FWFRFTlNJT04sICJGb3VuZCB1bmtub3duIE1QRSB0eXBlICclcyciLCBTdHJpbmcpOworICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIEVsZW1lbnRTaWcpKSBnb3RvIEVycm9yOworICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQzMk51bWJlcihpbywgMCkpIGdvdG8gRXJyb3I7CisgICAgICAgIEJlZm9yZSA9IGlvIC0+VGVsbChpbyk7CisgICAgICAgIGlmICghVHlwZUhhbmRsZXIgLT5Xcml0ZVB0cihzZWxmLCBpbywgRWxlbSwgMSkpIGdvdG8gRXJyb3I7CisgICAgICAgIGlmICghX2Ntc1dyaXRlQWxpZ25tZW50KGlvKSkgZ290byBFcnJvcjsKKworICAgICAgICBFbGVtZW50U2l6ZXNbaV0gPSBpbyAtPlRlbGwoaW8pIC0gQmVmb3JlOworCisgICAgICAgIEVsZW0gPSBFbGVtIC0+TmV4dDsKKyAgICB9CisKKyAgICAvLyBXcml0ZSB0aGUgZGlyZWN0b3J5CisgICAgQ3VycmVudFBvcyA9IGlvIC0+VGVsbChpbyk7CisKKyAgICBpZiAoIWlvIC0+U2VlayhpbywgRGlyZWN0b3J5UG9zKSkgZ290byBFcnJvcjsKKworICAgIGZvciAoaT0wOyBpIDwgRWxlbUNvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIEVsZW1lbnRPZmZzZXRzW2ldKSkgZ290byBFcnJvcjsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIEVsZW1lbnRTaXplc1tpXSkpIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgaWYgKCFpbyAtPlNlZWsoaW8sIEN1cnJlbnRQb3MpKSBnb3RvIEVycm9yOworCisgICAgaWYgKEVsZW1lbnRPZmZzZXRzICE9IE5VTEwpIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIEVsZW1lbnRPZmZzZXRzKTsKKyAgICBpZiAoRWxlbWVudFNpemVzICE9IE5VTEwpIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIEVsZW1lbnRTaXplcyk7CisgICAgcmV0dXJuIFRSVUU7CisKK0Vycm9yOgorICAgIGlmIChFbGVtZW50T2Zmc2V0cyAhPSBOVUxMKSBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBFbGVtZW50T2Zmc2V0cyk7CisgICAgaWYgKEVsZW1lbnRTaXplcyAhPSBOVUxMKSBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBFbGVtZW50U2l6ZXMpOworICAgIHJldHVybiBGQUxTRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKK30KKworCitzdGF0aWMKK3ZvaWQqIFR5cGVfTVBFX0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgcmV0dXJuICh2b2lkKikgY21zUGlwZWxpbmVEdXAoKGNtc1BpcGVsaW5lKikgUHRyKTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobik7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworc3RhdGljCit2b2lkIFR5cGVfTVBFX0ZyZWUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCB2b2lkICpQdHIpCit7CisgICAgY21zUGlwZWxpbmVGcmVlKChjbXNQaXBlbGluZSopIFB0cik7CisgICAgcmV0dXJuOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVHlwZSBjbXNTaWdWY2d0VHlwZQorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCisjZGVmaW5lIGNtc1ZpZGVvQ2FyZEdhbW1hVGFibGVUeXBlICAgIDAKKyNkZWZpbmUgY21zVmlkZW9DYXJkR2FtbWFGb3JtdWxhVHlwZSAgMQorCisvLyBVc2VkIGludGVybmFsbHkKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBkb3VibGUgR2FtbWE7CisgICAgZG91YmxlIE1pbjsKKyAgICBkb3VibGUgTWF4OworfSBfY21zVkNHVEdBTU1BOworCisKK3N0YXRpYwordm9pZCAqVHlwZV92Y2d0X1JlYWQoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgY21zSU9IQU5ETEVSKiBpbywKKyAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciogbkl0ZW1zLAorICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFNpemVPZlRhZykKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgVGFnVHlwZSwgbiwgaTsKKyAgICBjbXNUb25lQ3VydmUqKiBDdXJ2ZXM7CisKKyAgICAqbkl0ZW1zID0gMDsKKworICAgIC8vIFJlYWQgdGFnIHR5cGUKKyAgICBpZiAoIV9jbXNSZWFkVUludDMyTnVtYmVyKGlvLCAmVGFnVHlwZSkpIHJldHVybiBOVUxMOworCisgICAgLy8gQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBhcnJheQorICAgIEN1cnZlcyA9ICggY21zVG9uZUN1cnZlKiopIF9jbXNDYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgMywgc2l6ZW9mKGNtc1RvbmVDdXJ2ZSopKTsKKyAgICBpZiAoQ3VydmVzID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgLy8gVGhlcmUgYXJlIHR3byBwb3NzaWJsZSBmbGF2b3JzCisgICAgc3dpdGNoIChUYWdUeXBlKSB7CisKKyAgICAvLyBHYW1tYSBpcyBzdG9yZWQgYXMgYSB0YWJsZQorICAgIGNhc2UgY21zVmlkZW9DYXJkR2FtbWFUYWJsZVR5cGU6CisgICAgeworICAgICAgIGNtc1VJbnQxNk51bWJlciBuQ2hhbm5lbHMsIG5FbGVtcywgbkJ5dGVzOworCisgICAgICAgLy8gQ2hlY2sgY2hhbm5lbCBjb3VudCwgd2hpY2ggc2hvdWxkIGJlIDMgKHdlIGRvbid0IHN1cHBvcnQgbW9ub2Nocm9tZSB0aGlzIHRpbWUpCisgICAgICAgaWYgKCFfY21zUmVhZFVJbnQxNk51bWJlcihpbywgJm5DaGFubmVscykpIGdvdG8gRXJyb3I7CisKKyAgICAgICBpZiAobkNoYW5uZWxzICE9IDMpIHsKKyAgICAgICAgICAgY21zU2lnbmFsRXJyb3Ioc2VsZi0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVscyBmb3IgVkNHVCAnJWQnIiwgbkNoYW5uZWxzKTsKKyAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICB9CisKKyAgICAgICAvLyBHZXQgVGFibGUgZWxlbWVudCBjb3VudCBhbmQgYnl0ZXMgcGVyIGVsZW1lbnQKKyAgICAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmbkVsZW1zKSkgZ290byBFcnJvcjsKKyAgICAgICBpZiAoIV9jbXNSZWFkVUludDE2TnVtYmVyKGlvLCAmbkJ5dGVzKSkgZ290byBFcnJvcjsKKworICAgICAgIC8vIEFkb2JlJ3MgcXVpcmsgZml4dXAuIEZpeGluZyBicm9rZW4gcHJvZmlsZXMuLi4KKyAgICAgICBpZiAobkVsZW1zID09IDI1NiAmJiBuQnl0ZXMgPT0gMSAmJiBTaXplT2ZUYWcgPT0gMTU3NikKKyAgICAgICAgICAgbkJ5dGVzID0gMjsKKworCisgICAgICAgLy8gUG9wdWxhdGUgdG9uZSBjdXJ2ZXMKKyAgICAgICBmb3IgKG49MDsgbiA8IDM7IG4rKykgeworCisgICAgICAgICAgIEN1cnZlc1tuXSA9IGNtc0J1aWxkVGFidWxhdGVkVG9uZUN1cnZlMTYoc2VsZiAtPkNvbnRleHRJRCwgbkVsZW1zLCBOVUxMKTsKKyAgICAgICAgICAgaWYgKEN1cnZlc1tuXSA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgICAgICAgIC8vIE9uIGRlcGVuZGluZyBvbiBieXRlIGRlcHRoCisgICAgICAgICAgIHN3aXRjaCAobkJ5dGVzKSB7CisKKyAgICAgICAgICAgLy8gT25lIGJ5dGUsIDAuLjI1NQorICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICBmb3IgKGk9MDsgaSA8IG5FbGVtczsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICAgICBjbXNVSW50OE51bWJlciB2OworCisgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQ4TnVtYmVyKGlvLCAmdikpIGdvdG8gRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgQ3VydmVzW25dIC0+VGFibGUxNltpXSA9IEZST01fOF9UT18xNih2KTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgIC8vIE9uZSB3b3JkIDAuLjY1NTM1CisgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgaWYgKCFfY21zUmVhZFVJbnQxNkFycmF5KGlvLCBuRWxlbXMsIEN1cnZlc1tuXS0+VGFibGUxNikpIGdvdG8gRXJyb3I7CisgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgLy8gVW5zdXBwb3J0ZWQKKyAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgY21zU2lnbmFsRXJyb3Ioc2VsZi0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVuc3VwcG9ydGVkIGJpdCBkZXB0aCBmb3IgVkNHVCAnJWQnIiwgbkJ5dGVzICogOCk7CisgICAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgICAgIH0KKyAgICAgICB9IC8vIEZvciBhbGwgMyBjaGFubmVscworICAgIH0KKyAgICBicmVhazsKKworICAgLy8gSW4gdGhpcyBjYXNlLCBnYW1tYSBpcyBzdG9yZWQgYXMgYSBmb3JtdWxhCisgICBjYXNlIGNtc1ZpZGVvQ2FyZEdhbW1hRm9ybXVsYVR5cGU6CisgICB7CisgICAgICAgX2Ntc1ZDR1RHQU1NQSBDb2xvcmFudFszXTsKKworICAgICAgICAvLyBQb3B1bGF0ZSB0b25lIGN1cnZlcworICAgICAgIGZvciAobj0wOyBuIDwgMzsgbisrKSB7CisKKyAgICAgICAgICAgZG91YmxlIFBhcmFtc1sxMF07CisKKyAgICAgICAgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJkNvbG9yYW50W25dLkdhbW1hKSkgZ290byBFcnJvcjsKKyAgICAgICAgICAgaWYgKCFfY21zUmVhZDE1Rml4ZWQxNk51bWJlcihpbywgJkNvbG9yYW50W25dLk1pbikpIGdvdG8gRXJyb3I7CisgICAgICAgICAgIGlmICghX2Ntc1JlYWQxNUZpeGVkMTZOdW1iZXIoaW8sICZDb2xvcmFudFtuXS5NYXgpKSBnb3RvIEVycm9yOworCisgICAgICAgICAgICAvLyBQYXJhbWV0cmljIGN1cnZlIHR5cGUgNSBpczoKKyAgICAgICAgICAgIC8vIFkgPSAoYVggKyBiKV5HYW1tYSArIGUgfCBYID49IGQKKyAgICAgICAgICAgIC8vIFkgPSBjWCArIGYgICAgICAgICAgICAgfCBYIDwgZAorCisgICAgICAgICAgICAvLyB2Y2d0IGZvcm11bGEgaXM6CisgICAgICAgICAgICAvLyBZID0gKE1heCA/TWluKSAqIChYIF4gR2FtbWEpICsgTWluCisKKyAgICAgICAgICAgIC8vIFNvLCB0aGUgdHJhbnNsYXRpb24gaXMKKyAgICAgICAgICAgIC8vIGEgPSAoTWF4ID9NaW4pIF4gKCAxIC8gR2FtbWEpCisgICAgICAgICAgICAvLyBlID0gTWluCisgICAgICAgICAgICAvLyBiPWM9ZD1mPTAKKworICAgICAgICAgICBQYXJhbXNbMF0gPSBDb2xvcmFudFtuXS5HYW1tYTsKKyAgICAgICAgICAgUGFyYW1zWzFdID0gcG93KChDb2xvcmFudFtuXS5NYXggLSBDb2xvcmFudFtuXS5NaW4pLCAoMS4wIC8gQ29sb3JhbnRbbl0uR2FtbWEpKTsKKyAgICAgICAgICAgUGFyYW1zWzJdID0gMDsKKyAgICAgICAgICAgUGFyYW1zWzNdID0gMDsKKyAgICAgICAgICAgUGFyYW1zWzRdID0gMDsKKyAgICAgICAgICAgUGFyYW1zWzVdID0gQ29sb3JhbnRbbl0uTWluOworICAgICAgICAgICBQYXJhbXNbNl0gPSAwOworCisgICAgICAgICAgIEN1cnZlc1tuXSA9IGNtc0J1aWxkUGFyYW1ldHJpY1RvbmVDdXJ2ZShzZWxmIC0+Q29udGV4dElELCA1LCBQYXJhbXMpOworICAgICAgICAgICBpZiAoQ3VydmVzW25dID09IE5VTEwpIGdvdG8gRXJyb3I7CisgICAgICAgfQorICAgfQorICAgYnJlYWs7CisKKyAgIC8vIFVuc3VwcG9ydGVkCisgICBkZWZhdWx0OgorICAgICAgY21zU2lnbmFsRXJyb3Ioc2VsZi0+Q29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVuc3VwcG9ydGVkIHRhZyB0eXBlIGZvciBWQ0dUICclZCciLCBUYWdUeXBlKTsKKyAgICAgIGdvdG8gRXJyb3I7CisgICB9CisKKyAgICpuSXRlbXMgPSAxOworICAgcmV0dXJuICh2b2lkKikgQ3VydmVzOworCisvLyBSZWdyZXQsICBmcmVlIGFsbCByZXNvdXJjZXMKK0Vycm9yOgorCisgICAgY21zRnJlZVRvbmVDdXJ2ZVRyaXBsZShDdXJ2ZXMpOworICAgIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIEN1cnZlcyk7CisgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgY21zVU5VU0VEX1BBUkFNRVRFUihTaXplT2ZUYWcpOworfQorCisKKy8vIFdlIGRvbid0IHN1cHBvcnQgYWxsIGZsYXZvcnMsIG9ubHkgMTZiaXRzIHRhYmxlcyBhbmQgZm9ybXVsYQorc3RhdGljCitjbXNCb29sIFR5cGVfdmNndF9Xcml0ZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sIHZvaWQqIFB0ciwgY21zVUludDMyTnVtYmVyIG5JdGVtcykKK3sKKyAgICBjbXNUb25lQ3VydmUqKiBDdXJ2ZXMgPSAgKGNtc1RvbmVDdXJ2ZSoqKSBQdHI7CisgICAgY21zVUludDMyTnVtYmVyIGksIGo7CisKKyAgICBpZiAoY21zR2V0VG9uZUN1cnZlUGFyYW1ldHJpY1R5cGUoQ3VydmVzWzBdKSA9PSA1ICYmCisgICAgICAgIGNtc0dldFRvbmVDdXJ2ZVBhcmFtZXRyaWNUeXBlKEN1cnZlc1sxXSkgPT0gNSAmJgorICAgICAgICBjbXNHZXRUb25lQ3VydmVQYXJhbWV0cmljVHlwZShDdXJ2ZXNbMl0pID09IDUpIHsKKworICAgICAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIGNtc1ZpZGVvQ2FyZEdhbW1hRm9ybXVsYVR5cGUpKSByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgICAgIC8vIFNhdmUgcGFyYW1ldGVycworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCAzOyBpKyspIHsKKworICAgICAgICAgICAgICAgIF9jbXNWQ0dUR0FNTUEgdjsKKworICAgICAgICAgICAgICAgIHYuR2FtbWEgPSBDdXJ2ZXNbaV0gLT5TZWdtZW50c1swXS5QYXJhbXNbMF07CisgICAgICAgICAgICAgICAgdi5NaW4gICA9IEN1cnZlc1tpXSAtPlNlZ21lbnRzWzBdLlBhcmFtc1s1XTsKKyAgICAgICAgICAgICAgICB2Lk1heCAgID0gcG93KEN1cnZlc1tpXSAtPlNlZ21lbnRzWzBdLlBhcmFtc1sxXSwgdi5HYW1tYSkgKyB2Lk1pbjsKKworICAgICAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCB2LkdhbW1hKSkgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgIGlmICghX2Ntc1dyaXRlMTVGaXhlZDE2TnVtYmVyKGlvLCB2Lk1pbikpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICBpZiAoIV9jbXNXcml0ZTE1Rml4ZWQxNk51bWJlcihpbywgdi5NYXgpKSByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgfQorCisgICAgZWxzZSB7CisKKyAgICAgICAgLy8gQWx3YXlzIHN0b3JlIGFzIGEgdGFibGUgb2YgMjU2IHdvcmRzCisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBjbXNWaWRlb0NhcmRHYW1tYVRhYmxlVHlwZSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFfY21zV3JpdGVVSW50MTZOdW1iZXIoaW8sIDMpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAyNTYpKSByZXR1cm4gRkFMU0U7CisgICAgICAgIGlmICghX2Ntc1dyaXRlVUludDE2TnVtYmVyKGlvLCAyKSkgcmV0dXJuIEZBTFNFOworCisgICAgICAgIGZvciAoaT0wOyBpIDwgMzsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGo9MDsgaiA8IDI1NjsgaisrKSB7CisKKyAgICAgICAgICAgICAgICBjbXNGbG9hdDMyTnVtYmVyIHYgPSBjbXNFdmFsVG9uZUN1cnZlRmxvYXQoQ3VydmVzW2ldLCAoY21zRmxvYXQzMk51bWJlcikgKGogLyAyNTUuMCkpOworICAgICAgICAgICAgICAgIGNtc1VJbnQxNk51bWJlciAgbiA9IF9jbXNRdWlja1NhdHVyYXRlV29yZCh2ICogNjU1MzUuMCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIV9jbXNXcml0ZVVJbnQxNk51bWJlcihpbywgbikpIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBUUlVFOworCisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG5JdGVtcyk7Cit9CisKK3N0YXRpYwordm9pZCogVHlwZV92Y2d0X0R1cChzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNvbnN0IHZvaWQgKlB0ciwgY21zVUludDMyTnVtYmVyIG4pCit7CisgICAgY21zVG9uZUN1cnZlKiogT2xkQ3VydmVzID0gIChjbXNUb25lQ3VydmUqKikgUHRyOworICAgIGNtc1RvbmVDdXJ2ZSoqIE5ld0N1cnZlczsKKworICAgIE5ld0N1cnZlcyA9ICggY21zVG9uZUN1cnZlKiopIF9jbXNDYWxsb2Moc2VsZiAtPkNvbnRleHRJRCwgMywgc2l6ZW9mKGNtc1RvbmVDdXJ2ZSopKTsKKyAgICBpZiAoTmV3Q3VydmVzID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgTmV3Q3VydmVzWzBdID0gY21zRHVwVG9uZUN1cnZlKE9sZEN1cnZlc1swXSk7CisgICAgTmV3Q3VydmVzWzFdID0gY21zRHVwVG9uZUN1cnZlKE9sZEN1cnZlc1sxXSk7CisgICAgTmV3Q3VydmVzWzJdID0gY21zRHVwVG9uZUN1cnZlKE9sZEN1cnZlc1syXSk7CisKKyAgICByZXR1cm4gKHZvaWQqKSBOZXdDdXJ2ZXM7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG4pOworfQorCisKK3N0YXRpYwordm9pZCBUeXBlX3ZjZ3RfRnJlZShzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIHZvaWQqIFB0cikKK3sKKyAgICBjbXNGcmVlVG9uZUN1cnZlVHJpcGxlKChjbXNUb25lQ3VydmUqKikgUHRyKTsKKyAgICBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBQdHIpOworfQorCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUeXBlIGNtc1NpZ0RpY3RUeXBlCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisvLyBTaW5nbGUgY29sdW1uIG9mIHRoZSB0YWJsZSBjYW4gcG9pbnQgdG8gd2NoYXIgb3IgTUxVQyBlbGVtZW50cy4gSG9sZHMgYXJyYXlzIG9mIGRhdGEKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRDsKKyAgICBjbXNVSW50MzJOdW1iZXIgKk9mZnNldHM7CisgICAgY21zVUludDMyTnVtYmVyICpTaXplczsKK30gX2Ntc0RJQ2VsZW07CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBfY21zRElDZWxlbSBOYW1lLCBWYWx1ZSwgRGlzcGxheU5hbWUsIERpc3BsYXlWYWx1ZTsKKworfSBfY21zRElDYXJyYXk7CisKKy8vIEFsbG9jYXRlIGFuIGVtcHR5IGFycmF5IGVsZW1lbnQKK3N0YXRpYworY21zQm9vbCBBbGxvY0VsZW0oY21zQ29udGV4dCBDb250ZXh0SUQsIF9jbXNESUNlbGVtKiBlLCAgY21zVUludDMyTnVtYmVyIENvdW50KQoreworICAgIGUtPk9mZnNldHMgPSAoY21zVUludDMyTnVtYmVyICopIF9jbXNDYWxsb2MoQ29udGV4dElELCBDb3VudCwgc2l6ZW9mKGNtc1VJbnQzMk51bWJlcikpOworICAgIGlmIChlLT5PZmZzZXRzID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIGUtPlNpemVzID0gKGNtc1VJbnQzMk51bWJlciAqKSBfY21zQ2FsbG9jKENvbnRleHRJRCwgQ291bnQsIHNpemVvZihjbXNVSW50MzJOdW1iZXIpKTsKKyAgICBpZiAoZS0+U2l6ZXMgPT0gTlVMTCkgeworCisgICAgICAgIF9jbXNGcmVlKENvbnRleHRJRCwgZSAtPiBPZmZzZXRzKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGUgLT5Db250ZXh0SUQgPSBDb250ZXh0SUQ7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIEZyZWUgYW4gYXJyYXkgZWxlbWVudAorc3RhdGljCit2b2lkIEZyZWVFbGVtKF9jbXNESUNlbGVtKiBlKQoreworICAgIGlmIChlIC0+T2Zmc2V0cyAhPSBOVUxMKSAgX2Ntc0ZyZWUoZSAtPiBDb250ZXh0SUQsIGUgLT4gT2Zmc2V0cyk7CisgICAgaWYgKGUgLT5TaXplcyAgICE9IE5VTEwpICBfY21zRnJlZShlIC0+IENvbnRleHRJRCwgZSAtPiBTaXplcyk7CisgICAgZS0+T2Zmc2V0cyA9IGUgLT5TaXplcyA9IE5VTEw7Cit9CisKKy8vIEdldCByaWQgb2Ygd2hvbGUgYXJyYXkKK3N0YXRpYwordm9pZCBGcmVlQXJyYXkoIF9jbXNESUNhcnJheSogYSkKK3sKKyAgICBpZiAoYSAtPk5hbWUuT2Zmc2V0cyAhPSBOVUxMKSBGcmVlRWxlbSgmYS0+TmFtZSk7CisgICAgaWYgKGEgLT5WYWx1ZS5PZmZzZXRzICE9IE5VTEwpIEZyZWVFbGVtKCZhIC0+VmFsdWUpOworICAgIGlmIChhIC0+RGlzcGxheU5hbWUuT2Zmc2V0cyAhPSBOVUxMKSBGcmVlRWxlbSgmYS0+RGlzcGxheU5hbWUpOworICAgIGlmIChhIC0+RGlzcGxheVZhbHVlLk9mZnNldHMgIT0gTlVMTCkgRnJlZUVsZW0oJmEgLT5EaXNwbGF5VmFsdWUpOworfQorCisKKy8vIEFsbG9jYXRlIHdob2xlIGFycmF5CitzdGF0aWMKK2Ntc0Jvb2wgQWxsb2NBcnJheShjbXNDb250ZXh0IENvbnRleHRJRCwgX2Ntc0RJQ2FycmF5KiBhLCBjbXNVSW50MzJOdW1iZXIgQ291bnQsIGNtc1VJbnQzMk51bWJlciBMZW5ndGgpCit7CisgICAgLy8gRW1wdHkgdmFsdWVzCisgICAgbWVtc2V0KGEsIDAsIHNpemVvZihfY21zRElDYXJyYXkpKTsKKworICAgIC8vIE9uIGRlcGVuZGluZyBvbiByZWNvcmQgc2l6ZSwgY3JlYXRlIGNvbHVtbiBhcnJheXMKKyAgICBpZiAoIUFsbG9jRWxlbShDb250ZXh0SUQsICZhIC0+TmFtZSwgQ291bnQpKSBnb3RvIEVycm9yOworICAgIGlmICghQWxsb2NFbGVtKENvbnRleHRJRCwgJmEgLT5WYWx1ZSwgQ291bnQpKSBnb3RvIEVycm9yOworCisgICAgaWYgKExlbmd0aCA+IDE2KSB7CisgICAgICAgIGlmICghQWxsb2NFbGVtKENvbnRleHRJRCwgJmEgLT4gRGlzcGxheU5hbWUsIENvdW50KSkgZ290byBFcnJvcjsKKworICAgIH0KKyAgICBpZiAoTGVuZ3RoID4gMjQpIHsKKyAgICAgICAgaWYgKCFBbGxvY0VsZW0oQ29udGV4dElELCAmYSAtPkRpc3BsYXlWYWx1ZSwgQ291bnQpKSBnb3RvIEVycm9yOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKKworRXJyb3I6CisgICAgRnJlZUFycmF5KGEpOworICAgIHJldHVybiBGQUxTRTsKK30KKworLy8gUmVhZCBvbmUgZWxlbWVudAorc3RhdGljCitjbXNCb29sIFJlYWRPbmVFbGVtKGNtc0lPSEFORExFUiogaW8sICBfY21zRElDZWxlbSogZSwgY21zVUludDMyTnVtYmVyIGksIGNtc1VJbnQzMk51bWJlciBCYXNlT2Zmc2V0KQoreworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZlLT5PZmZzZXRzW2ldKSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZlIC0+U2l6ZXNbaV0pKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBBbiBvZmZzZXQgb2YgemVybyBoYXMgc3BlY2lhbCBtZWFuaW5nIGFuZCBzaGFsIGJlIHByZXNlcnZlZAorICAgIGlmIChlIC0+T2Zmc2V0c1tpXSA+IDApCisgICAgICAgIGUgLT5PZmZzZXRzW2ldICs9IEJhc2VPZmZzZXQ7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKKworc3RhdGljCitjbXNCb29sIFJlYWRPZmZzZXRBcnJheShjbXNJT0hBTkRMRVIqIGlvLCAgX2Ntc0RJQ2FycmF5KiBhLCBjbXNVSW50MzJOdW1iZXIgQ291bnQsIGNtc1VJbnQzMk51bWJlciBMZW5ndGgsIGNtc1VJbnQzMk51bWJlciBCYXNlT2Zmc2V0KQoreworICAgIGNtc1VJbnQzMk51bWJlciBpOworCisgICAgLy8gUmVhZCBjb2x1bW4gYXJyYXlzCisgICAgZm9yIChpPTA7IGkgPCBDb3VudDsgaSsrKSB7CisKKyAgICAgICAgaWYgKCFSZWFkT25lRWxlbShpbywgJmEgLT4gTmFtZSwgaSwgQmFzZU9mZnNldCkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFSZWFkT25lRWxlbShpbywgJmEgLT4gVmFsdWUsIGksIEJhc2VPZmZzZXQpKSByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgaWYgKExlbmd0aCA+IDE2KSB7CisKKyAgICAgICAgICAgIGlmICghUmVhZE9uZUVsZW0oaW8sICZhIC0+RGlzcGxheU5hbWUsIGksIEJhc2VPZmZzZXQpKSByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgfQorCisgICAgICAgIGlmIChMZW5ndGggPiAyNCkgeworCisgICAgICAgICAgICBpZiAoIVJlYWRPbmVFbGVtKGlvLCAmIGEgLT4gRGlzcGxheVZhbHVlLCBpLCBCYXNlT2Zmc2V0KSkgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIFdyaXRlIG9uZSBlbGVtZW50CitzdGF0aWMKK2Ntc0Jvb2wgV3JpdGVPbmVFbGVtKGNtc0lPSEFORExFUiogaW8sICBfY21zRElDZWxlbSogZSwgY21zVUludDMyTnVtYmVyIGkpCit7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIGUtPk9mZnNldHNbaV0pKSByZXR1cm4gRkFMU0U7CisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIGUgLT5TaXplc1tpXSkpIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMKK2Ntc0Jvb2wgV3JpdGVPZmZzZXRBcnJheShjbXNJT0hBTkRMRVIqIGlvLCAgX2Ntc0RJQ2FycmF5KiBhLCBjbXNVSW50MzJOdW1iZXIgQ291bnQsIGNtc1VJbnQzMk51bWJlciBMZW5ndGgpCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisKKyAgICBmb3IgKGk9MDsgaSA8IENvdW50OyBpKyspIHsKKworICAgICAgICBpZiAoIVdyaXRlT25lRWxlbShpbywgJmEgLT4gTmFtZSwgaSkpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKCFXcml0ZU9uZUVsZW0oaW8sICZhIC0+IFZhbHVlLCBpKSkgIHJldHVybiBGQUxTRTsKKworICAgICAgICBpZiAoTGVuZ3RoID4gMTYpIHsKKworICAgICAgICAgICAgaWYgKCFXcml0ZU9uZUVsZW0oaW8sICZhIC0+IERpc3BsYXlOYW1lLCBpKSkgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChMZW5ndGggPiAyNCkgeworCisgICAgICAgICAgICBpZiAoIVdyaXRlT25lRWxlbShpbywgJmEgLT4gRGlzcGxheVZhbHVlLCBpKSkgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMKK2Ntc0Jvb2wgUmVhZE9uZVdDaGFyKGNtc0lPSEFORExFUiogaW8sICBfY21zRElDZWxlbSogZSwgY21zVUludDMyTnVtYmVyIGksIHdjaGFyX3QgKiogd2NzdHIpCit7CisKKyAgICBjbXNVSW50MzJOdW1iZXIgbkNoYXJzOworCisgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHVuZGVmaW5lZCBzdHJpbmdzIChzZWUgSUNDIFZvdGFibGUKKyAgICAgIC8vIFByb3Bvc2FsIFN1Ym1pc3Npb24sIERpY3Rpb25hcnkgVHlwZSBhbmQgTWV0YWRhdGEgVEFHIERlZmluaXRpb24pCisgICAgICBpZiAoZSAtPiBPZmZzZXRzW2ldID09IDApIHsKKworICAgICAgICAgICp3Y3N0ciA9IE5VTEw7CisgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICB9CisKKyAgICAgIGlmICghaW8gLT4gU2VlayhpbywgZSAtPiBPZmZzZXRzW2ldKSkgcmV0dXJuIEZBTFNFOworCisgICAgICBuQ2hhcnMgPSBlIC0+U2l6ZXNbaV0gLyBzaXplb2YoY21zVUludDE2TnVtYmVyKTsKKworCisgICAgICAqd2NzdHIgPSAod2NoYXJfdCopIF9jbXNNYWxsb2NaZXJvKGUgLT5Db250ZXh0SUQsIChuQ2hhcnMgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICBpZiAoKndjc3RyID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgICAgaWYgKCFfY21zUmVhZFdDaGFyQXJyYXkoaW8sIG5DaGFycywgKndjc3RyKSkgeworICAgICAgICAgIF9jbXNGcmVlKGUgLT5Db250ZXh0SUQsICp3Y3N0cik7CisgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgfQorCisgICAgICAvLyBFbmQgb2Ygc3RyaW5nIG1hcmtlcgorICAgICAgKCp3Y3N0cilbbkNoYXJzXSA9IDA7CisgICAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljCitjbXNVSW50MzJOdW1iZXIgbXl3Y3NsZW4oY29uc3Qgd2NoYXJfdCAqcykKK3sKKyAgICBjb25zdCB3Y2hhcl90ICpwOworCisgICAgcCA9IHM7CisgICAgd2hpbGUgKCpwKQorICAgICAgICBwKys7CisKKyAgICByZXR1cm4gKGNtc1VJbnQzMk51bWJlcikocCAtIHMpOworfQorCitzdGF0aWMKK2Ntc0Jvb2wgV3JpdGVPbmVXQ2hhcihjbXNJT0hBTkRMRVIqIGlvLCAgX2Ntc0RJQ2VsZW0qIGUsIGNtc1VJbnQzMk51bWJlciBpLCBjb25zdCB3Y2hhcl90ICogd2NzdHIsIGNtc1VJbnQzMk51bWJlciBCYXNlT2Zmc2V0KQoreworICAgIGNtc1VJbnQzMk51bWJlciBCZWZvcmUgPSBpbyAtPlRlbGwoaW8pOworICAgIGNtc1VJbnQzMk51bWJlciBuOworCisgICAgZSAtPk9mZnNldHNbaV0gPSBCZWZvcmUgLSBCYXNlT2Zmc2V0OworCisgICAgaWYgKHdjc3RyID09IE5VTEwpIHsKKyAgICAgICAgZSAtPlNpemVzW2ldID0gMDsKKyAgICAgICAgZSAtPk9mZnNldHNbaV0gPSAwOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBuID0gbXl3Y3NsZW4od2NzdHIpOworICAgIGlmICghX2Ntc1dyaXRlV0NoYXJBcnJheShpbywgIG4sIHdjc3RyKSkgcmV0dXJuIEZBTFNFOworCisgICAgZSAtPlNpemVzW2ldID0gaW8gLT5UZWxsKGlvKSAtIEJlZm9yZTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljCitjbXNCb29sIFJlYWRPbmVNTFVDKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgIF9jbXNESUNlbGVtKiBlLCBjbXNVSW50MzJOdW1iZXIgaSwgY21zTUxVKiogbWx1KQoreworICAgIGNtc1VJbnQzMk51bWJlciBuSXRlbXMgPSAwOworCisgICAgLy8gQSB3YXkgdG8gZ2V0IG51bGwgTUxVQ3MKKyAgICBpZiAoZSAtPiBPZmZzZXRzW2ldID09IDAgfHwgZSAtPlNpemVzW2ldID09IDApIHsKKworICAgICAgICAqbWx1ID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgaWYgKCFpbyAtPiBTZWVrKGlvLCBlIC0+IE9mZnNldHNbaV0pKSByZXR1cm4gRkFMU0U7CisKKyAgICAqbWx1ID0gKGNtc01MVSopIFR5cGVfTUxVX1JlYWQoc2VsZiwgaW8sICZuSXRlbXMsIGUgLT5TaXplc1tpXSk7CisgICAgcmV0dXJuICptbHUgIT0gTlVMTDsKK30KKworc3RhdGljCitjbXNCb29sIFdyaXRlT25lTUxVQyhzdHJ1Y3QgX2Ntc190eXBlaGFuZGxlcl9zdHJ1Y3QqIHNlbGYsIGNtc0lPSEFORExFUiogaW8sICBfY21zRElDZWxlbSogZSwgY21zVUludDMyTnVtYmVyIGksIGNvbnN0IGNtc01MVSogbWx1LCBjbXNVSW50MzJOdW1iZXIgQmFzZU9mZnNldCkKK3sKKyAgICBjbXNVSW50MzJOdW1iZXIgQmVmb3JlOworCisgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdW5kZWZpbmVkIHN0cmluZ3MgKHNlZSBJQ0MgVm90YWJsZQorICAgICAvLyBQcm9wb3NhbCBTdWJtaXNzaW9uLCBEaWN0aW9uYXJ5IFR5cGUgYW5kIE1ldGFkYXRhIFRBRyBEZWZpbml0aW9uKQorICAgICBpZiAobWx1ID09IE5VTEwpIHsKKyAgICAgICAgZSAtPlNpemVzW2ldID0gMDsKKyAgICAgICAgZSAtPk9mZnNldHNbaV0gPSAwOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBCZWZvcmUgPSBpbyAtPlRlbGwoaW8pOworICAgIGUgLT5PZmZzZXRzW2ldID0gQmVmb3JlIC0gQmFzZU9mZnNldDsKKworICAgIGlmICghVHlwZV9NTFVfV3JpdGUoc2VsZiwgaW8sICh2b2lkKikgbWx1LCAxKSkgcmV0dXJuIEZBTFNFOworCisgICAgZSAtPlNpemVzW2ldID0gaW8gLT5UZWxsKGlvKSAtIEJlZm9yZTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworCitzdGF0aWMKK3ZvaWQgKlR5cGVfRGljdGlvbmFyeV9SZWFkKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgY21zSU9IQU5ETEVSKiBpbywgY21zVUludDMyTnVtYmVyKiBuSXRlbXMsIGNtc1VJbnQzMk51bWJlciBTaXplT2ZUYWcpCit7CisgICBjbXNIQU5ETEUgaERpY3Q7CisgICBjbXNVSW50MzJOdW1iZXIgaSwgQ291bnQsIExlbmd0aDsKKyAgIGNtc1VJbnQzMk51bWJlciBCYXNlT2Zmc2V0OworICAgX2Ntc0RJQ2FycmF5IGE7CisgICB3Y2hhcl90ICpOYW1lV0NTID0gTlVMTCwgKlZhbHVlV0NTID0gTlVMTDsKKyAgIGNtc01MVSAqRGlzcGxheU5hbWVNTFUgPSBOVUxMLCAqRGlzcGxheVZhbHVlTUxVPU5VTEw7CisgICBjbXNCb29sIHJjOworCisgICAgKm5JdGVtcyA9IDA7CisKKyAgICAvLyBHZXQgYWN0dWFsIHBvc2l0aW9uIGFzIGEgYmFzaXMgZm9yIGVsZW1lbnQgb2Zmc2V0cworICAgIEJhc2VPZmZzZXQgPSBpbyAtPlRlbGwoaW8pIC0gc2l6ZW9mKF9jbXNUYWdCYXNlKTsKKworICAgIC8vIEdldCBuYW1lLXZhbHVlIHJlY29yZCBjb3VudAorICAgIGlmICghX2Ntc1JlYWRVSW50MzJOdW1iZXIoaW8sICZDb3VudCkpIHJldHVybiBOVUxMOworICAgIFNpemVPZlRhZyAtPSBzaXplb2YoY21zVUludDMyTnVtYmVyKTsKKworICAgIC8vIEdldCByZWMgbGVuZ3RoCisgICAgaWYgKCFfY21zUmVhZFVJbnQzMk51bWJlcihpbywgJkxlbmd0aCkpIHJldHVybiBOVUxMOworICAgIFNpemVPZlRhZyAtPSBzaXplb2YoY21zVUludDMyTnVtYmVyKTsKKworICAgIC8vIENoZWNrIGZvciB2YWxpZCBsZW5ndGhzCisgICAgaWYgKExlbmd0aCAhPSAxNiAmJiBMZW5ndGggIT0gMjQgJiYgTGVuZ3RoICE9IDMyKSB7CisgICAgICAgICBjbXNTaWduYWxFcnJvcihzZWxmLT5Db250ZXh0SUQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiVW5rbm93biByZWNvcmQgbGVuZ3RoIGluIGRpY3Rpb25hcnkgJyVkJyIsIExlbmd0aCk7CisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBDcmVhdGVzIGFuIGVtcHR5IGRpY3Rpb25hcnkKKyAgICBoRGljdCA9IGNtc0RpY3RBbGxvYyhzZWxmIC0+IENvbnRleHRJRCk7CisgICAgaWYgKGhEaWN0ID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgLy8gT24gZGVwZW5kaW5nIG9uIHJlY29yZCBzaXplLCBjcmVhdGUgY29sdW1uIGFycmF5cworICAgIGlmICghQWxsb2NBcnJheShzZWxmIC0+IENvbnRleHRJRCwgJmEsIENvdW50LCBMZW5ndGgpKSBnb3RvIEVycm9yOworCisgICAgLy8gUmVhZCBjb2x1bW4gYXJyYXlzCisgICAgaWYgKCFSZWFkT2Zmc2V0QXJyYXkoaW8sICZhLCBDb3VudCwgTGVuZ3RoLCBCYXNlT2Zmc2V0KSkgZ290byBFcnJvcjsKKworICAgIC8vIFNlZWsgdG8gZWFjaCBlbGVtZW50IGFuZCByZWFkIGl0CisgICAgZm9yIChpPTA7IGkgPCBDb3VudDsgaSsrKSB7CisKKyAgICAgICAgaWYgKCFSZWFkT25lV0NoYXIoaW8sICZhLk5hbWUsIGksICZOYW1lV0NTKSkgZ290byBFcnJvcjsKKyAgICAgICAgaWYgKCFSZWFkT25lV0NoYXIoaW8sICZhLlZhbHVlLCBpLCAmVmFsdWVXQ1MpKSBnb3RvIEVycm9yOworCisgICAgICAgIGlmIChMZW5ndGggPiAxNikgeworICAgICAgICAgICAgaWYgKCFSZWFkT25lTUxVQyhzZWxmLCBpbywgJmEuRGlzcGxheU5hbWUsIGksICZEaXNwbGF5TmFtZU1MVSkpIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoTGVuZ3RoID4gMjQpIHsKKyAgICAgICAgICAgIGlmICghUmVhZE9uZU1MVUMoc2VsZiwgaW8sICZhLkRpc3BsYXlWYWx1ZSwgaSwgJkRpc3BsYXlWYWx1ZU1MVSkpIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoTmFtZVdDUyA9PSBOVUxMIHx8IFZhbHVlV0NTID09IE5VTEwpIHsKKyAgICAgICAgCisgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihzZWxmLT5Db250ZXh0SUQsIGNtc0VSUk9SX0NPUlJVUFRJT05fREVURUNURUQsICJCYWQgZGljdGlvbmFyeSBOYW1lL1ZhbHVlIik7ICAgICAgICAKKyAgICAgICAgICAgIHJjID0gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgIHJjID0gY21zRGljdEFkZEVudHJ5KGhEaWN0LCBOYW1lV0NTLCBWYWx1ZVdDUywgRGlzcGxheU5hbWVNTFUsIERpc3BsYXlWYWx1ZU1MVSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoTmFtZVdDUyAhPSBOVUxMKSBfY21zRnJlZShzZWxmIC0+Q29udGV4dElELCBOYW1lV0NTKTsKKyAgICAgICAgaWYgKFZhbHVlV0NTICE9IE5VTEwpIF9jbXNGcmVlKHNlbGYgLT5Db250ZXh0SUQsIFZhbHVlV0NTKTsKKyAgICAgICAgaWYgKERpc3BsYXlOYW1lTUxVICE9IE5VTEwpIGNtc01MVWZyZWUoRGlzcGxheU5hbWVNTFUpOworICAgICAgICBpZiAoRGlzcGxheVZhbHVlTUxVICE9IE5VTEwpIGNtc01MVWZyZWUoRGlzcGxheVZhbHVlTUxVKTsKKworICAgICAgICBpZiAoIXJjKSBnb3RvIEVycm9yOworICAgIH0KKworICAgRnJlZUFycmF5KCZhKTsKKyAgICpuSXRlbXMgPSAxOworICAgcmV0dXJuICh2b2lkKikgaERpY3Q7CisKK0Vycm9yOgorICAgRnJlZUFycmF5KCZhKTsKKyAgIGNtc0RpY3RGcmVlKGhEaWN0KTsKKyAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYworY21zQm9vbCBUeXBlX0RpY3Rpb25hcnlfV3JpdGUoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjbXNJT0hBTkRMRVIqIGlvLCB2b2lkKiBQdHIsIGNtc1VJbnQzMk51bWJlciBuSXRlbXMpCit7CisgICAgY21zSEFORExFIGhEaWN0ID0gKGNtc0hBTkRMRSkgUHRyOworICAgIGNvbnN0IGNtc0RJQ1RlbnRyeSogcDsKKyAgICBjbXNCb29sIEFueU5hbWUsIEFueVZhbHVlOworICAgIGNtc1VJbnQzMk51bWJlciBpLCBDb3VudCwgTGVuZ3RoOworICAgIGNtc1VJbnQzMk51bWJlciBEaXJlY3RvcnlQb3MsIEN1cnJlbnRQb3MsIEJhc2VPZmZzZXQ7CisgICBfY21zRElDYXJyYXkgYTsKKworICAgIGlmIChoRGljdCA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICBCYXNlT2Zmc2V0ID0gaW8gLT5UZWxsKGlvKSAtIHNpemVvZihfY21zVGFnQmFzZSk7CisKKyAgICAvLyBMZXQncyBpbnNwZWN0IHRoZSBkaWN0aW9uYXJ5CisgICAgQ291bnQgPSAwOyBBbnlOYW1lID0gRkFMU0U7IEFueVZhbHVlID0gRkFMU0U7CisgICAgZm9yIChwID0gY21zRGljdEdldEVudHJ5TGlzdChoRGljdCk7IHAgIT0gTlVMTDsgcCA9IGNtc0RpY3ROZXh0RW50cnkocCkpIHsKKworICAgICAgICBpZiAocCAtPkRpc3BsYXlOYW1lICE9IE5VTEwpIEFueU5hbWUgPSBUUlVFOworICAgICAgICBpZiAocCAtPkRpc3BsYXlWYWx1ZSAhPSBOVUxMKSBBbnlWYWx1ZSA9IFRSVUU7CisgICAgICAgIENvdW50Kys7CisgICAgfQorCisgICAgTGVuZ3RoID0gMTY7CisgICAgaWYgKEFueU5hbWUpICBMZW5ndGggKz0gODsKKyAgICBpZiAoQW55VmFsdWUpIExlbmd0aCArPSA4OworCisgICAgaWYgKCFfY21zV3JpdGVVSW50MzJOdW1iZXIoaW8sIENvdW50KSkgcmV0dXJuIEZBTFNFOworICAgIGlmICghX2Ntc1dyaXRlVUludDMyTnVtYmVyKGlvLCBMZW5ndGgpKSByZXR1cm4gRkFMU0U7CisKKyAgICAvLyBLZWVwIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIG9mZnNldHMgdGFibGUKKyAgICBEaXJlY3RvcnlQb3MgPSBpbyAtPlRlbGwoaW8pOworCisgICAgLy8gQWxsb2NhdGUgb2Zmc2V0cyBhcnJheQorICAgIGlmICghQWxsb2NBcnJheShzZWxmIC0+Q29udGV4dElELCAmYSwgQ291bnQsIExlbmd0aCkpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBXcml0ZSBhIGZha2UgZGlyZWN0b3J5IHRvIGJlIGZpbGxlZCBsYXR0ZXIgb24KKyAgICBpZiAoIVdyaXRlT2Zmc2V0QXJyYXkoaW8sICZhLCBDb3VudCwgTGVuZ3RoKSkgZ290byBFcnJvcjsKKworICAgIC8vIFdyaXRlIGVhY2ggZWxlbWVudC4gS2VlcCB0cmFjayBvZiB0aGUgc2l6ZSBhcyB3ZWxsLgorICAgIHAgPSBjbXNEaWN0R2V0RW50cnlMaXN0KGhEaWN0KTsKKyAgICBmb3IgKGk9MDsgaSA8IENvdW50OyBpKyspIHsKKworICAgICAgICBpZiAoIVdyaXRlT25lV0NoYXIoaW8sICZhLk5hbWUsIGksICBwIC0+TmFtZSwgQmFzZU9mZnNldCkpIGdvdG8gRXJyb3I7CisgICAgICAgIGlmICghV3JpdGVPbmVXQ2hhcihpbywgJmEuVmFsdWUsIGksIHAgLT5WYWx1ZSwgQmFzZU9mZnNldCkpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgaWYgKHAgLT5EaXNwbGF5TmFtZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVdyaXRlT25lTUxVQyhzZWxmLCBpbywgJmEuRGlzcGxheU5hbWUsIGksIHAgLT5EaXNwbGF5TmFtZSwgQmFzZU9mZnNldCkpIGdvdG8gRXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAocCAtPkRpc3BsYXlWYWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVdyaXRlT25lTUxVQyhzZWxmLCBpbywgJmEuRGlzcGxheVZhbHVlLCBpLCBwIC0+RGlzcGxheVZhbHVlLCBCYXNlT2Zmc2V0KSkgZ290byBFcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgcCA9IGNtc0RpY3ROZXh0RW50cnkocCk7CisgICAgfQorCisgICAgLy8gV3JpdGUgdGhlIGRpcmVjdG9yeQorICAgIEN1cnJlbnRQb3MgPSBpbyAtPlRlbGwoaW8pOworICAgIGlmICghaW8gLT5TZWVrKGlvLCBEaXJlY3RvcnlQb3MpKSBnb3RvIEVycm9yOworCisgICAgaWYgKCFXcml0ZU9mZnNldEFycmF5KGlvLCAmYSwgQ291bnQsIExlbmd0aCkpIGdvdG8gRXJyb3I7CisKKyAgICBpZiAoIWlvIC0+U2VlayhpbywgQ3VycmVudFBvcykpIGdvdG8gRXJyb3I7CisKKyAgICBGcmVlQXJyYXkoJmEpOworICAgIHJldHVybiBUUlVFOworCitFcnJvcjoKKyAgICBGcmVlQXJyYXkoJmEpOworICAgIHJldHVybiBGQUxTRTsKKworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobkl0ZW1zKTsKK30KKworCitzdGF0aWMKK3ZvaWQqIFR5cGVfRGljdGlvbmFyeV9EdXAoc3RydWN0IF9jbXNfdHlwZWhhbmRsZXJfc3RydWN0KiBzZWxmLCBjb25zdCB2b2lkICpQdHIsIGNtc1VJbnQzMk51bWJlciBuKQoreworICAgIHJldHVybiAodm9pZCopICBjbXNEaWN0RHVwKChjbXNIQU5ETEUpIFB0cik7CisKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG4pOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIoc2VsZik7Cit9CisKKworc3RhdGljCit2b2lkIFR5cGVfRGljdGlvbmFyeV9GcmVlKHN0cnVjdCBfY21zX3R5cGVoYW5kbGVyX3N0cnVjdCogc2VsZiwgdm9pZCogUHRyKQoreworICAgIGNtc0RpY3RGcmVlKChjbXNIQU5ETEUpIFB0cik7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihzZWxmKTsKK30KKworCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLy8gVHlwZSBzdXBwb3J0IG1haW4gcm91dGluZXMKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKworLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBidWlsdC1pbiB0eXBlcworc3RhdGljIF9jbXNUYWdUeXBlTGlua2VkTGlzdCBTdXBwb3J0ZWRUYWdUeXBlc1tdID0geworCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0Nocm9tYXRpY2l0eVR5cGUsICAgICAgICAgIENocm9tYXRpY2l0eSksICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMV0gfSwKK3tUWVBFX0hBTkRMRVIoY21zU2lnQ29sb3JhbnRPcmRlclR5cGUsICAgICAgICAgQ29sb3JhbnRPcmRlclR5cGUpLCAgICZTdXBwb3J0ZWRUYWdUeXBlc1syXSB9LAore1RZUEVfSEFORExFUihjbXNTaWdTMTVGaXhlZDE2QXJyYXlUeXBlLCAgICAgICBTMTVGaXhlZDE2KSwgICAgICAgICAgJlN1cHBvcnRlZFRhZ1R5cGVzWzNdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ1UxNkZpeGVkMTZBcnJheVR5cGUsICAgICAgIFUxNkZpeGVkMTYpLCAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbNF0gfSwKK3tUWVBFX0hBTkRMRVIoY21zU2lnVGV4dFR5cGUsICAgICAgICAgICAgICAgICAgVGV4dCksICAgICAgICAgICAgICAgICZTdXBwb3J0ZWRUYWdUeXBlc1s1XSB9LAore1RZUEVfSEFORExFUihjbXNTaWdUZXh0RGVzY3JpcHRpb25UeXBlLCAgICAgICBUZXh0X0Rlc2NyaXB0aW9uKSwgICAgJlN1cHBvcnRlZFRhZ1R5cGVzWzZdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0N1cnZlVHlwZSwgICAgICAgICAgICAgICAgIEN1cnZlKSwgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbN10gfSwKK3tUWVBFX0hBTkRMRVIoY21zU2lnUGFyYW1ldHJpY0N1cnZlVHlwZSwgICAgICAgUGFyYW1ldHJpY0N1cnZlKSwgICAgICZTdXBwb3J0ZWRUYWdUeXBlc1s4XSB9LAore1RZUEVfSEFORExFUihjbXNTaWdEYXRlVGltZVR5cGUsICAgICAgICAgICAgICBEYXRlVGltZSksICAgICAgICAgICAgJlN1cHBvcnRlZFRhZ1R5cGVzWzldIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0x1dDhUeXBlLCAgICAgICAgICAgICAgICAgIExVVDgpLCAgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMTBdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0x1dDE2VHlwZSwgICAgICAgICAgICAgICAgIExVVDE2KSwgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMTFdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0NvbG9yYW50VGFibGVUeXBlLCAgICAgICAgIENvbG9yYW50VGFibGUpLCAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMTJdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ05hbWVkQ29sb3IyVHlwZSwgICAgICAgICAgIE5hbWVkQ29sb3IpLCAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMTNdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ011bHRpTG9jYWxpemVkVW5pY29kZVR5cGUsIE1MVSksICAgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMTRdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ1Byb2ZpbGVTZXF1ZW5jZURlc2NUeXBlLCAgIFByb2ZpbGVTZXF1ZW5jZURlc2MpLCAmU3VwcG9ydGVkVGFnVHlwZXNbMTVdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ1NpZ25hdHVyZVR5cGUsICAgICAgICAgICAgIFNpZ25hdHVyZSksICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMTZdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ01lYXN1cmVtZW50VHlwZSwgICAgICAgICAgIE1lYXN1cmVtZW50KSwgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMTddIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0RhdGFUeXBlLCAgICAgICAgICAgICAgICAgIERhdGEpLCAgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMThdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0x1dEF0b0JUeXBlLCAgICAgICAgICAgICAgIExVVEEyQiksICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMTldIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0x1dEJ0b0FUeXBlLCAgICAgICAgICAgICAgIExVVEIyQSksICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjBdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ1VjckJnVHlwZSwgICAgICAgICAgICAgICAgIFVjckJnKSwgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjFdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0NyZEluZm9UeXBlLCAgICAgICAgICAgICAgIENyZEluZm8pLCAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjJdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ011bHRpUHJvY2Vzc0VsZW1lbnRUeXBlLCAgIE1QRSksICAgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjNdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ1NjcmVlbmluZ1R5cGUsICAgICAgICAgICAgIFNjcmVlbmluZyksICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjRdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ1ZpZXdpbmdDb25kaXRpb25zVHlwZSwgICAgIFZpZXdpbmdDb25kaXRpb25zKSwgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjVdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ1hZWlR5cGUsICAgICAgICAgICAgICAgICAgIFhZWiksICAgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjZdIH0sCit7VFlQRV9IQU5ETEVSKGNtc0NvcmJpc0Jyb2tlblhZWnR5cGUsICAgICAgICAgIFhZWiksICAgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjddIH0sCit7VFlQRV9IQU5ETEVSKGNtc01vbmFjb0Jyb2tlbkN1cnZlVHlwZSwgICAgICAgIEN1cnZlKSwgICAgICAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjhdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ1Byb2ZpbGVTZXF1ZW5jZUlkVHlwZSwgICAgIFByb2ZpbGVTZXF1ZW5jZUlkKSwgICAmU3VwcG9ydGVkVGFnVHlwZXNbMjldIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ0RpY3RUeXBlLCAgICAgICAgICAgICAgICAgIERpY3Rpb25hcnkpLCAgICAgICAgICAmU3VwcG9ydGVkVGFnVHlwZXNbMzBdIH0sCit7VFlQRV9IQU5ETEVSKGNtc1NpZ1ZjZ3RUeXBlLCAgICAgICAgICAgICAgICAgIHZjZ3QpLCAgICAgICAgICAgICAgICBOVUxMIH0KK307CisKKworX2Ntc1RhZ1R5cGVQbHVnaW5DaHVua1R5cGUgX2Ntc1RhZ1R5cGVQbHVnaW5DaHVuayA9IHsgTlVMTCB9OworCisKKworLy8gRHVwbGljYXRlcyB0aGUgem9uZSBvZiBtZW1vcnkgdXNlZCBieSB0aGUgcGx1Zy1pbiBpbiB0aGUgbmV3IGNvbnRleHQKK3N0YXRpYwordm9pZCBEdXBUYWdUeXBlTGlzdChzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMsIAorICAgICAgICAgICAgICAgICAgICBpbnQgbG9jKQoreworICAgX2Ntc1RhZ1R5cGVQbHVnaW5DaHVua1R5cGUgbmV3SGVhZCA9IHsgTlVMTCB9OworICAgX2Ntc1RhZ1R5cGVMaW5rZWRMaXN0KiAgZW50cnk7CisgICBfY21zVGFnVHlwZUxpbmtlZExpc3QqICBBbnRlcmlvciA9IE5VTEw7CisgICBfY21zVGFnVHlwZVBsdWdpbkNodW5rVHlwZSogaGVhZCA9IChfY21zVGFnVHlwZVBsdWdpbkNodW5rVHlwZSopIHNyYy0+Y2h1bmtzW2xvY107CisKKyAgIC8vIFdhbGsgdGhlIGxpc3QgY29weWluZyBhbGwgbm9kZXMKKyAgIGZvciAoZW50cnkgPSBoZWFkLT5UYWdUeXBlczsKKyAgICAgICBlbnRyeSAhPSBOVUxMOworICAgICAgIGVudHJ5ID0gZW50cnkgLT5OZXh0KSB7CisKKyAgICAgICAgICAgX2Ntc1RhZ1R5cGVMaW5rZWRMaXN0ICpuZXdFbnRyeSA9ICggX2Ntc1RhZ1R5cGVMaW5rZWRMaXN0ICopIF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCBlbnRyeSwgc2l6ZW9mKF9jbXNUYWdUeXBlTGlua2VkTGlzdCkpOworCisgICAgICAgICAgIGlmIChuZXdFbnRyeSA9PSBOVUxMKSAKKyAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAvLyBXZSB3YW50IHRvIGtlZXAgdGhlIGxpbmtlZCBsaXN0IG9yZGVyLCBzbyB0aGlzIGlzIGEgbGl0dGxlIGJpdCB0cmlja3kKKyAgICAgICAgICAgbmV3RW50cnkgLT4gTmV4dCA9IE5VTEw7CisgICAgICAgICAgIGlmIChBbnRlcmlvcikKKyAgICAgICAgICAgICAgIEFudGVyaW9yIC0+IE5leHQgPSBuZXdFbnRyeTsKKworICAgICAgICAgICBBbnRlcmlvciA9IG5ld0VudHJ5OworCisgICAgICAgICAgIGlmIChuZXdIZWFkLlRhZ1R5cGVzID09IE5VTEwpCisgICAgICAgICAgICAgICBuZXdIZWFkLlRhZ1R5cGVzID0gbmV3RW50cnk7CisgICB9CisKKyAgIGN0eCAtPmNodW5rc1tsb2NdID0gX2Ntc1N1YkFsbG9jRHVwKGN0eC0+TWVtUG9vbCwgJm5ld0hlYWQsIHNpemVvZihfY21zVGFnVHlwZVBsdWdpbkNodW5rVHlwZSkpOworfQorCisKK3ZvaWQgX2Ntc0FsbG9jVGFnVHlwZVBsdWdpbkNodW5rKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpCit7CisgICAgaWYgKHNyYyAhPSBOVUxMKSB7CisgICAgICAgIAorICAgICAgICAvLyBEdXBsaWNhdGUgdGhlIExJU1QKKyAgICAgICAgRHVwVGFnVHlwZUxpc3QoY3R4LCBzcmMsIFRhZ1R5cGVQbHVnaW4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhdGljIF9jbXNUYWdUeXBlUGx1Z2luQ2h1bmtUeXBlIFRhZ1R5cGVQbHVnaW5DaHVuayA9IHsgTlVMTCB9OworICAgICAgICBjdHggLT5jaHVua3NbVGFnVHlwZVBsdWdpbl0gPSBfY21zU3ViQWxsb2NEdXAoY3R4IC0+TWVtUG9vbCwgJlRhZ1R5cGVQbHVnaW5DaHVuaywgc2l6ZW9mKF9jbXNUYWdUeXBlUGx1Z2luQ2h1bmtUeXBlKSk7CisgICAgfQorfQorCit2b2lkIF9jbXNBbGxvY01QRVR5cGVQbHVnaW5DaHVuayhzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYykKK3sKKyAgICBpZiAoc3JjICE9IE5VTEwpIHsKKyAgICAgICAgCisgICAgICAgIC8vIER1cGxpY2F0ZSB0aGUgTElTVAorICAgICAgICBEdXBUYWdUeXBlTGlzdChjdHgsIHNyYywgTVBFUGx1Z2luKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YXRpYyBfY21zVGFnVHlwZVBsdWdpbkNodW5rVHlwZSBUYWdUeXBlUGx1Z2luQ2h1bmsgPSB7IE5VTEwgfTsKKyAgICAgICAgY3R4IC0+Y2h1bmtzW01QRVBsdWdpbl0gPSBfY21zU3ViQWxsb2NEdXAoY3R4IC0+TWVtUG9vbCwgJlRhZ1R5cGVQbHVnaW5DaHVuaywgc2l6ZW9mKF9jbXNUYWdUeXBlUGx1Z2luQ2h1bmtUeXBlKSk7CisgICAgfQorCit9CisKKworLy8gQm90aCBraW5kIG9mIHBsdWctaW5zIHNoYXJlIHNhbWUgc3RydWN0dXJlCitjbXNCb29sICBfY21zUmVnaXN0ZXJUYWdUeXBlUGx1Z2luKGNtc0NvbnRleHQgaWQsIGNtc1BsdWdpbkJhc2UqIERhdGEpCit7CisgICAgcmV0dXJuIFJlZ2lzdGVyVHlwZXNQbHVnaW4oaWQsIERhdGEsIFRhZ1R5cGVQbHVnaW4pOworfQorCitjbXNCb29sICBfY21zUmVnaXN0ZXJNdWx0aVByb2Nlc3NFbGVtZW50UGx1Z2luKGNtc0NvbnRleHQgaWQsIGNtc1BsdWdpbkJhc2UqIERhdGEpCit7CisgICAgcmV0dXJuIFJlZ2lzdGVyVHlwZXNQbHVnaW4oaWQsIERhdGEsTVBFUGx1Z2luKTsKK30KKworCisvLyBXcmFwcGVyIGZvciB0YWcgdHlwZXMKK2Ntc1RhZ1R5cGVIYW5kbGVyKiBfY21zR2V0VGFnVHlwZUhhbmRsZXIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1RhZ1R5cGVTaWduYXR1cmUgc2lnKQoreworICAgIF9jbXNUYWdUeXBlUGx1Z2luQ2h1bmtUeXBlKiBjdHggPSAoIF9jbXNUYWdUeXBlUGx1Z2luQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhDb250ZXh0SUQsIFRhZ1R5cGVQbHVnaW4pOworCisgICAgcmV0dXJuIEdldEhhbmRsZXIoc2lnLCBjdHgtPlRhZ1R5cGVzLCBTdXBwb3J0ZWRUYWdUeXBlcyk7Cit9CisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUYWcgc3VwcG9ydCBtYWluIHJvdXRpbmVzCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCit0eXBlZGVmIHN0cnVjdCBfY21zVGFnTGlua2VkTGlzdF9zdCB7CisKKyAgICAgICAgICAgIGNtc1RhZ1NpZ25hdHVyZSBTaWduYXR1cmU7CisgICAgICAgICAgICBjbXNUYWdEZXNjcmlwdG9yIERlc2NyaXB0b3I7CisgICAgICAgICAgICBzdHJ1Y3QgX2Ntc1RhZ0xpbmtlZExpc3Rfc3QqIE5leHQ7CisKK30gX2Ntc1RhZ0xpbmtlZExpc3Q7CisKKy8vIFRoaXMgaXMgdGhlIGxpc3Qgb2YgYnVpbHQtaW4gdGFncworc3RhdGljIF9jbXNUYWdMaW5rZWRMaXN0IFN1cHBvcnRlZFRhZ3NbXSA9IHsKKworICAgIHsgY21zU2lnQVRvQjBUYWcsICAgICAgICAgICAgICAgeyAxLCAzLCAgeyBjbXNTaWdMdXQxNlR5cGUsICBjbXNTaWdMdXRBdG9CVHlwZSwgY21zU2lnTHV0OFR5cGV9LCBEZWNpZGVMVVR0eXBlQTJCfSwgJlN1cHBvcnRlZFRhZ3NbMV19LAorICAgIHsgY21zU2lnQVRvQjFUYWcsICAgICAgICAgICAgICAgeyAxLCAzLCAgeyBjbXNTaWdMdXQxNlR5cGUsICBjbXNTaWdMdXRBdG9CVHlwZSwgY21zU2lnTHV0OFR5cGV9LCBEZWNpZGVMVVR0eXBlQTJCfSwgJlN1cHBvcnRlZFRhZ3NbMl19LAorICAgIHsgY21zU2lnQVRvQjJUYWcsICAgICAgICAgICAgICAgeyAxLCAzLCAgeyBjbXNTaWdMdXQxNlR5cGUsICBjbXNTaWdMdXRBdG9CVHlwZSwgY21zU2lnTHV0OFR5cGV9LCBEZWNpZGVMVVR0eXBlQTJCfSwgJlN1cHBvcnRlZFRhZ3NbM119LAorICAgIHsgY21zU2lnQlRvQTBUYWcsICAgICAgICAgICAgICAgeyAxLCAzLCAgeyBjbXNTaWdMdXQxNlR5cGUsICBjbXNTaWdMdXRCdG9BVHlwZSwgY21zU2lnTHV0OFR5cGV9LCBEZWNpZGVMVVR0eXBlQjJBfSwgJlN1cHBvcnRlZFRhZ3NbNF19LAorICAgIHsgY21zU2lnQlRvQTFUYWcsICAgICAgICAgICAgICAgeyAxLCAzLCAgeyBjbXNTaWdMdXQxNlR5cGUsICBjbXNTaWdMdXRCdG9BVHlwZSwgY21zU2lnTHV0OFR5cGV9LCBEZWNpZGVMVVR0eXBlQjJBfSwgJlN1cHBvcnRlZFRhZ3NbNV19LAorICAgIHsgY21zU2lnQlRvQTJUYWcsICAgICAgICAgICAgICAgeyAxLCAzLCAgeyBjbXNTaWdMdXQxNlR5cGUsICBjbXNTaWdMdXRCdG9BVHlwZSwgY21zU2lnTHV0OFR5cGV9LCBEZWNpZGVMVVR0eXBlQjJBfSwgJlN1cHBvcnRlZFRhZ3NbNl19LAorCisgICAgLy8gQWxsb3cgY29yYmlzICBhbmQgaXRzIGJyb2tlbiBYWVogdHlwZQorICAgIHsgY21zU2lnUmVkQ29sb3JhbnRUYWcsICAgICAgICAgeyAxLCAyLCB7IGNtc1NpZ1hZWlR5cGUsIGNtc0NvcmJpc0Jyb2tlblhZWnR5cGUgfSwgRGVjaWRlWFladHlwZX0sICZTdXBwb3J0ZWRUYWdzWzddfSwKKyAgICB7IGNtc1NpZ0dyZWVuQ29sb3JhbnRUYWcsICAgICAgIHsgMSwgMiwgeyBjbXNTaWdYWVpUeXBlLCBjbXNDb3JiaXNCcm9rZW5YWVp0eXBlIH0sIERlY2lkZVhZWnR5cGV9LCAmU3VwcG9ydGVkVGFnc1s4XX0sCisgICAgeyBjbXNTaWdCbHVlQ29sb3JhbnRUYWcsICAgICAgICB7IDEsIDIsIHsgY21zU2lnWFlaVHlwZSwgY21zQ29yYmlzQnJva2VuWFladHlwZSB9LCBEZWNpZGVYWVp0eXBlfSwgJlN1cHBvcnRlZFRhZ3NbOV19LAorCisgICAgeyBjbXNTaWdSZWRUUkNUYWcsICAgICAgICAgICAgICB7IDEsIDMsIHsgY21zU2lnQ3VydmVUeXBlLCBjbXNTaWdQYXJhbWV0cmljQ3VydmVUeXBlLCBjbXNNb25hY29Ccm9rZW5DdXJ2ZVR5cGUgfSwgRGVjaWRlQ3VydmVUeXBlfSwgJlN1cHBvcnRlZFRhZ3NbMTBdfSwKKyAgICB7IGNtc1NpZ0dyZWVuVFJDVGFnLCAgICAgICAgICAgIHsgMSwgMywgeyBjbXNTaWdDdXJ2ZVR5cGUsIGNtc1NpZ1BhcmFtZXRyaWNDdXJ2ZVR5cGUsIGNtc01vbmFjb0Jyb2tlbkN1cnZlVHlwZSB9LCBEZWNpZGVDdXJ2ZVR5cGV9LCAmU3VwcG9ydGVkVGFnc1sxMV19LAorICAgIHsgY21zU2lnQmx1ZVRSQ1RhZywgICAgICAgICAgICAgeyAxLCAzLCB7IGNtc1NpZ0N1cnZlVHlwZSwgY21zU2lnUGFyYW1ldHJpY0N1cnZlVHlwZSwgY21zTW9uYWNvQnJva2VuQ3VydmVUeXBlIH0sIERlY2lkZUN1cnZlVHlwZX0sICZTdXBwb3J0ZWRUYWdzWzEyXX0sCisKKyAgICB7IGNtc1NpZ0NhbGlicmF0aW9uRGF0ZVRpbWVUYWcsIHsgMSwgMSwgeyBjbXNTaWdEYXRlVGltZVR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzEzXX0sCisgICAgeyBjbXNTaWdDaGFyVGFyZ2V0VGFnLCAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnVGV4dFR5cGUgfSwgICAgIE5VTEx9LCAmU3VwcG9ydGVkVGFnc1sxNF19LAorCisgICAgeyBjbXNTaWdDaHJvbWF0aWNBZGFwdGF0aW9uVGFnLCB7IDksIDEsIHsgY21zU2lnUzE1Rml4ZWQxNkFycmF5VHlwZSB9LCBOVUxMfSwgJlN1cHBvcnRlZFRhZ3NbMTVdfSwKKyAgICB7IGNtc1NpZ0Nocm9tYXRpY2l0eVRhZywgICAgICAgIHsgMSwgMSwgeyBjbXNTaWdDaHJvbWF0aWNpdHlUeXBlICAgIH0sIE5VTEx9LCAmU3VwcG9ydGVkVGFnc1sxNl19LAorICAgIHsgY21zU2lnQ29sb3JhbnRPcmRlclRhZywgICAgICAgeyAxLCAxLCB7IGNtc1NpZ0NvbG9yYW50T3JkZXJUeXBlICAgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzE3XX0sCisgICAgeyBjbXNTaWdDb2xvcmFudFRhYmxlVGFnLCAgICAgICB7IDEsIDEsIHsgY21zU2lnQ29sb3JhbnRUYWJsZVR5cGUgICB9LCBOVUxMfSwgJlN1cHBvcnRlZFRhZ3NbMThdfSwKKyAgICB7IGNtc1NpZ0NvbG9yYW50VGFibGVPdXRUYWcsICAgIHsgMSwgMSwgeyBjbXNTaWdDb2xvcmFudFRhYmxlVHlwZSAgIH0sIE5VTEx9LCAmU3VwcG9ydGVkVGFnc1sxOV19LAorCisgICAgeyBjbXNTaWdDb3B5cmlnaHRUYWcsICAgICAgICAgICB7IDEsIDMsIHsgY21zU2lnVGV4dFR5cGUsICBjbXNTaWdNdWx0aUxvY2FsaXplZFVuaWNvZGVUeXBlLCBjbXNTaWdUZXh0RGVzY3JpcHRpb25UeXBlfSwgRGVjaWRlVGV4dFR5cGV9LCAmU3VwcG9ydGVkVGFnc1syMF19LAorICAgIHsgY21zU2lnRGF0ZVRpbWVUYWcsICAgICAgICAgICAgeyAxLCAxLCB7IGNtc1NpZ0RhdGVUaW1lVHlwZSB9LCBOVUxMfSwgJlN1cHBvcnRlZFRhZ3NbMjFdfSwKKworICAgIHsgY21zU2lnRGV2aWNlTWZnRGVzY1RhZywgICAgICAgeyAxLCAzLCB7IGNtc1NpZ1RleHREZXNjcmlwdGlvblR5cGUsIGNtc1NpZ011bHRpTG9jYWxpemVkVW5pY29kZVR5cGUsIGNtc1NpZ1RleHRUeXBlfSwgRGVjaWRlVGV4dERlc2NUeXBlfSwgJlN1cHBvcnRlZFRhZ3NbMjJdfSwKKyAgICB7IGNtc1NpZ0RldmljZU1vZGVsRGVzY1RhZywgICAgIHsgMSwgMywgeyBjbXNTaWdUZXh0RGVzY3JpcHRpb25UeXBlLCBjbXNTaWdNdWx0aUxvY2FsaXplZFVuaWNvZGVUeXBlLCBjbXNTaWdUZXh0VHlwZX0sIERlY2lkZVRleHREZXNjVHlwZX0sICZTdXBwb3J0ZWRUYWdzWzIzXX0sCisKKyAgICB7IGNtc1NpZ0dhbXV0VGFnLCAgICAgICAgICAgICAgIHsgMSwgMywgeyBjbXNTaWdMdXQxNlR5cGUsIGNtc1NpZ0x1dEJ0b0FUeXBlLCBjbXNTaWdMdXQ4VHlwZSB9LCBEZWNpZGVMVVR0eXBlQjJBfSwgJlN1cHBvcnRlZFRhZ3NbMjRdfSwKKworICAgIHsgY21zU2lnR3JheVRSQ1RhZywgICAgICAgICAgICAgeyAxLCAyLCB7IGNtc1NpZ0N1cnZlVHlwZSwgY21zU2lnUGFyYW1ldHJpY0N1cnZlVHlwZSB9LCBEZWNpZGVDdXJ2ZVR5cGV9LCAmU3VwcG9ydGVkVGFnc1syNV19LAorICAgIHsgY21zU2lnTHVtaW5hbmNlVGFnLCAgICAgICAgICAgeyAxLCAxLCB7IGNtc1NpZ1hZWlR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzI2XX0sCisKKyAgICB7IGNtc1NpZ01lZGlhQmxhY2tQb2ludFRhZywgICAgIHsgMSwgMiwgeyBjbXNTaWdYWVpUeXBlLCBjbXNDb3JiaXNCcm9rZW5YWVp0eXBlIH0sIE5VTEx9LCAmU3VwcG9ydGVkVGFnc1syN119LAorICAgIHsgY21zU2lnTWVkaWFXaGl0ZVBvaW50VGFnLCAgICAgeyAxLCAyLCB7IGNtc1NpZ1hZWlR5cGUsIGNtc0NvcmJpc0Jyb2tlblhZWnR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzI4XX0sCisKKyAgICB7IGNtc1NpZ05hbWVkQ29sb3IyVGFnLCAgICAgICAgIHsgMSwgMSwgeyBjbXNTaWdOYW1lZENvbG9yMlR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzI5XX0sCisKKyAgICB7IGNtc1NpZ1ByZXZpZXcwVGFnLCAgICAgICAgICAgIHsgMSwgMywgIHsgY21zU2lnTHV0MTZUeXBlLCBjbXNTaWdMdXRCdG9BVHlwZSwgY21zU2lnTHV0OFR5cGUgfSwgRGVjaWRlTFVUdHlwZUIyQX0sICZTdXBwb3J0ZWRUYWdzWzMwXX0sCisgICAgeyBjbXNTaWdQcmV2aWV3MVRhZywgICAgICAgICAgICB7IDEsIDMsICB7IGNtc1NpZ0x1dDE2VHlwZSwgY21zU2lnTHV0QnRvQVR5cGUsIGNtc1NpZ0x1dDhUeXBlIH0sIERlY2lkZUxVVHR5cGVCMkF9LCAmU3VwcG9ydGVkVGFnc1szMV19LAorICAgIHsgY21zU2lnUHJldmlldzJUYWcsICAgICAgICAgICAgeyAxLCAzLCAgeyBjbXNTaWdMdXQxNlR5cGUsIGNtc1NpZ0x1dEJ0b0FUeXBlLCBjbXNTaWdMdXQ4VHlwZSB9LCBEZWNpZGVMVVR0eXBlQjJBfSwgJlN1cHBvcnRlZFRhZ3NbMzJdfSwKKworICAgIHsgY21zU2lnUHJvZmlsZURlc2NyaXB0aW9uVGFnLCAgeyAxLCAzLCB7IGNtc1NpZ1RleHREZXNjcmlwdGlvblR5cGUsIGNtc1NpZ011bHRpTG9jYWxpemVkVW5pY29kZVR5cGUsIGNtc1NpZ1RleHRUeXBlfSwgRGVjaWRlVGV4dERlc2NUeXBlfSwgJlN1cHBvcnRlZFRhZ3NbMzNdfSwKKyAgICB7IGNtc1NpZ1Byb2ZpbGVTZXF1ZW5jZURlc2NUYWcsIHsgMSwgMSwgeyBjbXNTaWdQcm9maWxlU2VxdWVuY2VEZXNjVHlwZSB9LCBOVUxMfSwgJlN1cHBvcnRlZFRhZ3NbMzRdfSwKKyAgICB7IGNtc1NpZ1RlY2hub2xvZ3lUYWcsICAgICAgICAgIHsgMSwgMSwgeyBjbXNTaWdTaWduYXR1cmVUeXBlIH0sIE5VTEx9LCAgJlN1cHBvcnRlZFRhZ3NbMzVdfSwKKworICAgIHsgY21zU2lnQ29sb3JpbWV0cmljSW50ZW50SW1hZ2VTdGF0ZVRhZywgICB7IDEsIDEsIHsgY21zU2lnU2lnbmF0dXJlVHlwZSB9LCBOVUxMfSwgJlN1cHBvcnRlZFRhZ3NbMzZdfSwKKyAgICB7IGNtc1NpZ1BlcmNlcHR1YWxSZW5kZXJpbmdJbnRlbnRHYW11dFRhZywgeyAxLCAxLCB7IGNtc1NpZ1NpZ25hdHVyZVR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzM3XX0sCisgICAgeyBjbXNTaWdTYXR1cmF0aW9uUmVuZGVyaW5nSW50ZW50R2FtdXRUYWcsIHsgMSwgMSwgeyBjbXNTaWdTaWduYXR1cmVUeXBlIH0sIE5VTEx9LCAmU3VwcG9ydGVkVGFnc1szOF19LAorCisgICAgeyBjbXNTaWdNZWFzdXJlbWVudFRhZywgICAgICAgICB7IDEsIDEsIHsgY21zU2lnTWVhc3VyZW1lbnRUeXBlIH0sIE5VTEx9LCAmU3VwcG9ydGVkVGFnc1szOV19LAorCisgICAgeyBjbXNTaWdQczJDUkQwVGFnLCAgICAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnRGF0YVR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzQwXX0sCisgICAgeyBjbXNTaWdQczJDUkQxVGFnLCAgICAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnRGF0YVR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzQxXX0sCisgICAgeyBjbXNTaWdQczJDUkQyVGFnLCAgICAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnRGF0YVR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzQyXX0sCisgICAgeyBjbXNTaWdQczJDUkQzVGFnLCAgICAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnRGF0YVR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzQzXX0sCisgICAgeyBjbXNTaWdQczJDU0FUYWcsICAgICAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnRGF0YVR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzQ0XX0sCisgICAgeyBjbXNTaWdQczJSZW5kZXJpbmdJbnRlbnRUYWcsICB7IDEsIDEsIHsgY21zU2lnRGF0YVR5cGUgfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzQ1XX0sCisKKyAgICB7IGNtc1NpZ1ZpZXdpbmdDb25kRGVzY1RhZywgICAgIHsgMSwgMywgeyBjbXNTaWdUZXh0RGVzY3JpcHRpb25UeXBlLCBjbXNTaWdNdWx0aUxvY2FsaXplZFVuaWNvZGVUeXBlLCBjbXNTaWdUZXh0VHlwZX0sIERlY2lkZVRleHREZXNjVHlwZX0sICZTdXBwb3J0ZWRUYWdzWzQ2XX0sCisKKyAgICB7IGNtc1NpZ1VjckJnVGFnLCAgICAgICAgICAgICAgIHsgMSwgMSwgeyBjbXNTaWdVY3JCZ1R5cGV9LCBOVUxMfSwgICAgJlN1cHBvcnRlZFRhZ3NbNDddfSwKKyAgICB7IGNtc1NpZ0NyZEluZm9UYWcsICAgICAgICAgICAgIHsgMSwgMSwgeyBjbXNTaWdDcmRJbmZvVHlwZX0sIE5VTEx9LCAgJlN1cHBvcnRlZFRhZ3NbNDhdfSwKKworICAgIHsgY21zU2lnRFRvQjBUYWcsICAgICAgICAgICAgICAgeyAxLCAxLCB7IGNtc1NpZ011bHRpUHJvY2Vzc0VsZW1lbnRUeXBlfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzQ5XX0sCisgICAgeyBjbXNTaWdEVG9CMVRhZywgICAgICAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnTXVsdGlQcm9jZXNzRWxlbWVudFR5cGV9LCBOVUxMfSwgJlN1cHBvcnRlZFRhZ3NbNTBdfSwKKyAgICB7IGNtc1NpZ0RUb0IyVGFnLCAgICAgICAgICAgICAgIHsgMSwgMSwgeyBjbXNTaWdNdWx0aVByb2Nlc3NFbGVtZW50VHlwZX0sIE5VTEx9LCAmU3VwcG9ydGVkVGFnc1s1MV19LAorICAgIHsgY21zU2lnRFRvQjNUYWcsICAgICAgICAgICAgICAgeyAxLCAxLCB7IGNtc1NpZ011bHRpUHJvY2Vzc0VsZW1lbnRUeXBlfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzUyXX0sCisgICAgeyBjbXNTaWdCVG9EMFRhZywgICAgICAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnTXVsdGlQcm9jZXNzRWxlbWVudFR5cGV9LCBOVUxMfSwgJlN1cHBvcnRlZFRhZ3NbNTNdfSwKKyAgICB7IGNtc1NpZ0JUb0QxVGFnLCAgICAgICAgICAgICAgIHsgMSwgMSwgeyBjbXNTaWdNdWx0aVByb2Nlc3NFbGVtZW50VHlwZX0sIE5VTEx9LCAmU3VwcG9ydGVkVGFnc1s1NF19LAorICAgIHsgY21zU2lnQlRvRDJUYWcsICAgICAgICAgICAgICAgeyAxLCAxLCB7IGNtc1NpZ011bHRpUHJvY2Vzc0VsZW1lbnRUeXBlfSwgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzU1XX0sCisgICAgeyBjbXNTaWdCVG9EM1RhZywgICAgICAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnTXVsdGlQcm9jZXNzRWxlbWVudFR5cGV9LCBOVUxMfSwgJlN1cHBvcnRlZFRhZ3NbNTZdfSwKKworICAgIHsgY21zU2lnU2NyZWVuaW5nRGVzY1RhZywgICAgICAgeyAxLCAxLCB7IGNtc1NpZ1RleHREZXNjcmlwdGlvblR5cGUgfSwgICAgTlVMTH0sICZTdXBwb3J0ZWRUYWdzWzU3XX0sCisgICAgeyBjbXNTaWdWaWV3aW5nQ29uZGl0aW9uc1RhZywgICB7IDEsIDEsIHsgY21zU2lnVmlld2luZ0NvbmRpdGlvbnNUeXBlIH0sICBOVUxMfSwgJlN1cHBvcnRlZFRhZ3NbNThdfSwKKworICAgIHsgY21zU2lnU2NyZWVuaW5nVGFnLCAgICAgICAgICAgeyAxLCAxLCB7IGNtc1NpZ1NjcmVlbmluZ1R5cGV9LCAgICAgICAgICBOVUxMIH0sICZTdXBwb3J0ZWRUYWdzWzU5XX0sCisgICAgeyBjbXNTaWdWY2d0VGFnLCAgICAgICAgICAgICAgICB7IDEsIDEsIHsgY21zU2lnVmNndFR5cGV9LCAgICAgICAgICAgICAgIE5VTEwgfSwgJlN1cHBvcnRlZFRhZ3NbNjBdfSwKKyAgICB7IGNtc1NpZ01ldGFUYWcsICAgICAgICAgICAgICAgIHsgMSwgMSwgeyBjbXNTaWdEaWN0VHlwZX0sICAgICAgICAgICAgICAgTlVMTCB9LCAmU3VwcG9ydGVkVGFnc1s2MV19LAorICAgIHsgY21zU2lnUHJvZmlsZVNlcXVlbmNlSWRUYWcsICAgeyAxLCAxLCB7IGNtc1NpZ1Byb2ZpbGVTZXF1ZW5jZUlkVHlwZX0sICBOVUxMIH0sICAmU3VwcG9ydGVkVGFnc1s2Ml19LAorICAgIHsgY21zU2lnUHJvZmlsZURlc2NyaXB0aW9uTUxUYWcseyAxLCAxLCB7IGNtc1NpZ011bHRpTG9jYWxpemVkVW5pY29kZVR5cGV9LCBOVUxMfSwgTlVMTH0KKworCit9OworCisvKgorICAgIE5vdCBzdXBwb3J0ZWQgICAgICAgICAgICAgICAgIFdoeQorICAgID09PT09PT09PT09PT09PT09PT09PT09ICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgY21zU2lnT3V0cHV0UmVzcG9uc2VUYWcgICA9PT4gV0FSTklORywgUE9TU0lCTEUgUEFURU5UIE9OIFRISVMgU1VCSkVDVCEKKyAgICBjbXNTaWdOYW1lZENvbG9yVGFnICAgICAgID09PiBEZXByZWNhdGVkCisgICAgY21zU2lnRGF0YVRhZyAgICAgICAgICAgICA9PT4gQW5jaWVudCwgdW51c2VkCisgICAgY21zU2lnRGV2aWNlU2V0dGluZ3NUYWcgICA9PT4gRGVwcmVjYXRlZCwgdXNlbGVzcworKi8KKworCitfY21zVGFnUGx1Z2luQ2h1bmtUeXBlIF9jbXNUYWdQbHVnaW5DaHVuayA9IHsgTlVMTCB9OworCisKKy8vIER1cGxpY2F0ZXMgdGhlIHpvbmUgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIHBsdWctaW4gaW4gdGhlIG5ldyBjb250ZXh0CitzdGF0aWMKK3ZvaWQgRHVwVGFnTGlzdChzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpCit7CisgICBfY21zVGFnUGx1Z2luQ2h1bmtUeXBlIG5ld0hlYWQgPSB7IE5VTEwgfTsKKyAgIF9jbXNUYWdMaW5rZWRMaXN0KiAgZW50cnk7CisgICBfY21zVGFnTGlua2VkTGlzdCogIEFudGVyaW9yID0gTlVMTDsKKyAgIF9jbXNUYWdQbHVnaW5DaHVua1R5cGUqIGhlYWQgPSAoX2Ntc1RhZ1BsdWdpbkNodW5rVHlwZSopIHNyYy0+Y2h1bmtzW1RhZ1BsdWdpbl07CisKKyAgIC8vIFdhbGsgdGhlIGxpc3QgY29weWluZyBhbGwgbm9kZXMKKyAgIGZvciAoZW50cnkgPSBoZWFkLT5UYWc7CisgICAgICAgZW50cnkgIT0gTlVMTDsKKyAgICAgICBlbnRyeSA9IGVudHJ5IC0+TmV4dCkgeworCisgICAgICAgICAgIF9jbXNUYWdMaW5rZWRMaXN0ICpuZXdFbnRyeSA9ICggX2Ntc1RhZ0xpbmtlZExpc3QgKikgX2Ntc1N1YkFsbG9jRHVwKGN0eCAtPk1lbVBvb2wsIGVudHJ5LCBzaXplb2YoX2Ntc1RhZ0xpbmtlZExpc3QpKTsKKworICAgICAgICAgICBpZiAobmV3RW50cnkgPT0gTlVMTCkgCisgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgLy8gV2Ugd2FudCB0byBrZWVwIHRoZSBsaW5rZWQgbGlzdCBvcmRlciwgc28gdGhpcyBpcyBhIGxpdHRsZSBiaXQgdHJpY2t5CisgICAgICAgICAgIG5ld0VudHJ5IC0+IE5leHQgPSBOVUxMOworICAgICAgICAgICBpZiAoQW50ZXJpb3IpCisgICAgICAgICAgICAgICBBbnRlcmlvciAtPiBOZXh0ID0gbmV3RW50cnk7CisKKyAgICAgICAgICAgQW50ZXJpb3IgPSBuZXdFbnRyeTsKKworICAgICAgICAgICBpZiAobmV3SGVhZC5UYWcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgIG5ld0hlYWQuVGFnID0gbmV3RW50cnk7CisgICB9CisKKyAgIGN0eCAtPmNodW5rc1tUYWdQbHVnaW5dID0gX2Ntc1N1YkFsbG9jRHVwKGN0eC0+TWVtUG9vbCwgJm5ld0hlYWQsIHNpemVvZihfY21zVGFnUGx1Z2luQ2h1bmtUeXBlKSk7Cit9CisKK3ZvaWQgX2Ntc0FsbG9jVGFnUGx1Z2luQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYykKK3sKKyAgICBpZiAoc3JjICE9IE5VTEwpIHsKKworICAgICAgICBEdXBUYWdMaXN0KGN0eCwgc3JjKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YXRpYyBfY21zVGFnUGx1Z2luQ2h1bmtUeXBlIFRhZ1BsdWdpbkNodW5rID0geyBOVUxMIH07CisgICAgICAgIGN0eCAtPmNodW5rc1tUYWdQbHVnaW5dID0gX2Ntc1N1YkFsbG9jRHVwKGN0eCAtPk1lbVBvb2wsICZUYWdQbHVnaW5DaHVuaywgc2l6ZW9mKF9jbXNUYWdQbHVnaW5DaHVua1R5cGUpKTsKKyAgICB9CisKK30KKworY21zQm9vbCAgX2Ntc1JlZ2lzdGVyVGFnUGx1Z2luKGNtc0NvbnRleHQgaWQsIGNtc1BsdWdpbkJhc2UqIERhdGEpCit7CisgICAgY21zUGx1Z2luVGFnKiBQbHVnaW4gPSAoY21zUGx1Z2luVGFnKikgRGF0YTsKKyAgICBfY21zVGFnTGlua2VkTGlzdCAqcHQ7CisgICAgX2Ntc1RhZ1BsdWdpbkNodW5rVHlwZSogVGFnUGx1Z2luQ2h1bmsgPSAoIF9jbXNUYWdQbHVnaW5DaHVua1R5cGUqKSBfY21zQ29udGV4dEdldENsaWVudENodW5rKGlkLCBUYWdQbHVnaW4pOworCisgICAgaWYgKERhdGEgPT0gTlVMTCkgeworCisgICAgICAgIFRhZ1BsdWdpbkNodW5rLT5UYWcgPSBOVUxMOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBwdCA9IChfY21zVGFnTGlua2VkTGlzdCopIF9jbXNQbHVnaW5NYWxsb2MoaWQsIHNpemVvZihfY21zVGFnTGlua2VkTGlzdCkpOworICAgIGlmIChwdCA9PSBOVUxMKSByZXR1cm4gRkFMU0U7CisKKyAgICBwdCAtPlNpZ25hdHVyZSAgPSBQbHVnaW4gLT5TaWduYXR1cmU7CisgICAgcHQgLT5EZXNjcmlwdG9yID0gUGx1Z2luIC0+RGVzY3JpcHRvcjsKKyAgICBwdCAtPk5leHQgICAgICAgPSBUYWdQbHVnaW5DaHVuayAtPlRhZzsKKworICAgIFRhZ1BsdWdpbkNodW5rIC0+VGFnID0gcHQ7CisgICAgCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIFJldHVybiBhIGRlc2NyaXB0b3IgZm9yIGEgZ2l2ZW4gdGFnIG9yIE5VTEwKK2Ntc1RhZ0Rlc2NyaXB0b3IqIF9jbXNHZXRUYWdEZXNjcmlwdG9yKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNUYWdTaWduYXR1cmUgc2lnKQoreworICAgIF9jbXNUYWdMaW5rZWRMaXN0KiBwdDsKKyAgICBfY21zVGFnUGx1Z2luQ2h1bmtUeXBlKiBUYWdQbHVnaW5DaHVuayA9ICggX2Ntc1RhZ1BsdWdpbkNodW5rVHlwZSopIF9jbXNDb250ZXh0R2V0Q2xpZW50Q2h1bmsoQ29udGV4dElELCBUYWdQbHVnaW4pOworCisgICAgZm9yIChwdCA9IFRhZ1BsdWdpbkNodW5rLT5UYWc7CisgICAgICAgICAgICAgcHQgIT0gTlVMTDsKKyAgICAgICAgICAgICBwdCA9IHB0IC0+TmV4dCkgeworCisgICAgICAgICAgICAgICAgaWYgKHNpZyA9PSBwdCAtPiBTaWduYXR1cmUpIHJldHVybiAmcHQgLT5EZXNjcmlwdG9yOworICAgIH0KKworICAgIGZvciAocHQgPSBTdXBwb3J0ZWRUYWdzOworICAgICAgICAgICAgcHQgIT0gTlVMTDsKKyAgICAgICAgICAgIHB0ID0gcHQgLT5OZXh0KSB7CisKKyAgICAgICAgICAgICAgICBpZiAoc2lnID09IHB0IC0+IFNpZ25hdHVyZSkgcmV0dXJuICZwdCAtPkRlc2NyaXB0b3I7CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zdmlydC5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3ZpcnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzI0Yzk5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3ZpcnQuYwpAQCAtMCwwICsxLDExOTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gIExpdHRsZSBDb2xvciBNYW5hZ2VtZW50IFN5c3RlbQorLy8gIENvcHlyaWdodCAoYykgMTk5OC0yMDE0IE1hcnRpIE1hcmlhIFNhZ3VlcgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworLy8gYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisvLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUKKy8vIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPCisvLyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorLy8gTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorLy8gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisvLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKworI2luY2x1ZGUgImxjbXMyX2ludGVybmFsLmgiCisKKy8vIFZpcnR1YWwgKGJ1aWx0LWluKSBwcm9maWxlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljCitjbXNCb29sIFNldFRleHRUYWdzKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjb25zdCB3Y2hhcl90KiBEZXNjcmlwdGlvbikKK3sKKyAgICBjbXNNTFUgKkRlc2NyaXB0aW9uTUxVLCAqQ29weXJpZ2h0TUxVOworICAgIGNtc0Jvb2wgIHJjID0gRkFMU0U7CisgICAgY21zQ29udGV4dCBDb250ZXh0SUQgPSBjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlKTsKKworICAgIERlc2NyaXB0aW9uTUxVICA9IGNtc01MVWFsbG9jKENvbnRleHRJRCwgMSk7CisgICAgQ29weXJpZ2h0TUxVICAgID0gY21zTUxVYWxsb2MoQ29udGV4dElELCAxKTsKKworICAgIGlmIChEZXNjcmlwdGlvbk1MVSA9PSBOVUxMIHx8IENvcHlyaWdodE1MVSA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgaWYgKCFjbXNNTFVzZXRXaWRlKERlc2NyaXB0aW9uTUxVLCAgImVuIiwgIlVTIiwgRGVzY3JpcHRpb24pKSBnb3RvIEVycm9yOworICAgIGlmICghY21zTUxVc2V0V2lkZShDb3B5cmlnaHRNTFUsICAgICJlbiIsICJVUyIsIEwiTm8gY29weXJpZ2h0LCB1c2UgZnJlZWx5IikpIGdvdG8gRXJyb3I7CisKKyAgICBpZiAoIWNtc1dyaXRlVGFnKGhQcm9maWxlLCBjbXNTaWdQcm9maWxlRGVzY3JpcHRpb25UYWcsICBEZXNjcmlwdGlvbk1MVSkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFjbXNXcml0ZVRhZyhoUHJvZmlsZSwgY21zU2lnQ29weXJpZ2h0VGFnLCAgICAgICAgICAgQ29weXJpZ2h0TUxVKSkgZ290byBFcnJvcjsKKworICAgIHJjID0gVFJVRTsKKworRXJyb3I6CisKKyAgICBpZiAoRGVzY3JpcHRpb25NTFUpCisgICAgICAgIGNtc01MVWZyZWUoRGVzY3JpcHRpb25NTFUpOworICAgIGlmIChDb3B5cmlnaHRNTFUpCisgICAgICAgIGNtc01MVWZyZWUoQ29weXJpZ2h0TUxVKTsKKyAgICByZXR1cm4gcmM7Cit9CisKKworc3RhdGljCitjbXNCb29sICBTZXRTZXFEZXNjVGFnKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBjb25zdCBjaGFyKiBNb2RlbCkKK3sKKyAgICBjbXNCb29sICByYyA9IEZBTFNFOworICAgIGNtc0NvbnRleHQgQ29udGV4dElEID0gY21zR2V0UHJvZmlsZUNvbnRleHRJRChoUHJvZmlsZSk7CisgICAgY21zU0VRKiBTZXEgPSBjbXNBbGxvY1Byb2ZpbGVTZXF1ZW5jZURlc2NyaXB0aW9uKENvbnRleHRJRCwgMSk7CisKKyAgICBpZiAoU2VxID09IE5VTEwpIHJldHVybiBGQUxTRTsKKworICAgIFNlcS0+c2VxWzBdLmRldmljZU1mZyA9IChjbXNTaWduYXR1cmUpIDA7CisgICAgU2VxLT5zZXFbMF0uZGV2aWNlTW9kZWwgPSAoY21zU2lnbmF0dXJlKSAwOworCisjaWZkZWYgQ01TX0RPTlRfVVNFX0lOVDY0CisgICAgU2VxLT5zZXFbMF0uYXR0cmlidXRlc1swXSA9IDA7CisgICAgU2VxLT5zZXFbMF0uYXR0cmlidXRlc1sxXSA9IDA7CisjZWxzZQorICAgIFNlcS0+c2VxWzBdLmF0dHJpYnV0ZXMgPSAwOworI2VuZGlmCisKKyAgICBTZXEtPnNlcVswXS50ZWNobm9sb2d5ID0gKGNtc1RlY2hub2xvZ3lTaWduYXR1cmUpIDA7CisKKyAgICBjbXNNTFVzZXRBU0NJSSggU2VxLT5zZXFbMF0uTWFudWZhY3R1cmVyLCBjbXNOb0xhbmd1YWdlLCBjbXNOb0NvdW50cnksICJMaXR0bGUgQ01TIik7CisgICAgY21zTUxVc2V0QVNDSUkoIFNlcS0+c2VxWzBdLk1vZGVsLCAgICAgICAgY21zTm9MYW5ndWFnZSwgY21zTm9Db3VudHJ5LCBNb2RlbCk7CisKKyAgICBpZiAoIV9jbXNXcml0ZVByb2ZpbGVTZXF1ZW5jZShoUHJvZmlsZSwgU2VxKSkgZ290byBFcnJvcjsKKworICAgIHJjID0gVFJVRTsKKworRXJyb3I6CisgICAgaWYgKFNlcSkKKyAgICAgICAgY21zRnJlZVByb2ZpbGVTZXF1ZW5jZURlc2NyaXB0aW9uKFNlcSk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKworCisvLyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBwcm9maWxlIGJhc2VkIG9uIFdoaXRlIHBvaW50LCBwcmltYXJpZXMgYW5kCisvLyB0cmFuc2ZlciBmdW5jdGlvbnMuCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zQ3JlYXRlUkdCUHJvZmlsZVRIUihjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0NJRXh5WSogV2hpdGVQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0NJRXh5WVRSSVBMRSogUHJpbWFyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVG9uZUN1cnZlKiBjb25zdCBUcmFuc2ZlckZ1bmN0aW9uWzNdKQoreworICAgIGNtc0hQUk9GSUxFIGhJQ0M7CisgICAgY21zTUFUMyBNQ29sb3JhbnRzOworICAgIGNtc0NJRVhZWlRSSVBMRSBDb2xvcmFudHM7CisgICAgY21zQ0lFeHlZIE1heFdoaXRlOworICAgIGNtc01BVDMgQ0hBRDsKKyAgICBjbXNDSUVYWVogV2hpdGVQb2ludFhZWjsKKworICAgIGhJQ0MgPSBjbXNDcmVhdGVQcm9maWxlUGxhY2Vob2xkZXIoQ29udGV4dElEKTsKKyAgICBpZiAoIWhJQ0MpICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYW4ndCBhbGxvY2F0ZQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGNtc1NldFByb2ZpbGVWZXJzaW9uKGhJQ0MsIDQuMyk7CisKKyAgICBjbXNTZXREZXZpY2VDbGFzcyhoSUNDLCAgICAgIGNtc1NpZ0Rpc3BsYXlDbGFzcyk7CisgICAgY21zU2V0Q29sb3JTcGFjZShoSUNDLCAgICAgICBjbXNTaWdSZ2JEYXRhKTsKKyAgICBjbXNTZXRQQ1MoaElDQywgICAgICAgICAgICAgIGNtc1NpZ1hZWkRhdGEpOworCisgICAgY21zU2V0SGVhZGVyUmVuZGVyaW5nSW50ZW50KGhJQ0MsICBJTlRFTlRfUEVSQ0VQVFVBTCk7CisKKworICAgIC8vIEltcGxlbWVudCBwcm9maWxlIHVzaW5nIGZvbGxvd2luZyB0YWdzOgorICAgIC8vCisgICAgLy8gIDEgY21zU2lnUHJvZmlsZURlc2NyaXB0aW9uVGFnCisgICAgLy8gIDIgY21zU2lnTWVkaWFXaGl0ZVBvaW50VGFnCisgICAgLy8gIDMgY21zU2lnUmVkQ29sb3JhbnRUYWcKKyAgICAvLyAgNCBjbXNTaWdHcmVlbkNvbG9yYW50VGFnCisgICAgLy8gIDUgY21zU2lnQmx1ZUNvbG9yYW50VGFnCisgICAgLy8gIDYgY21zU2lnUmVkVFJDVGFnCisgICAgLy8gIDcgY21zU2lnR3JlZW5UUkNUYWcKKyAgICAvLyAgOCBjbXNTaWdCbHVlVFJDVGFnCisgICAgLy8gIDkgQ2hyb21hdGljIGFkYXB0YXRpb24gVGFnCisgICAgLy8gVGhpcyBjb25mb3JtcyBhIHN0YW5kYXJkIFJHQiBEaXNwbGF5UHJvZmlsZSBhcyBzYXlzIElDQywgYW5kIHRoZW4gSSBhZGQgKEFzIHBlciBhZGRlbmR1bSBJSSkKKyAgICAvLyAxMCBjbXNTaWdDaHJvbWF0aWNpdHlUYWcKKworCisgICAgaWYgKCFTZXRUZXh0VGFncyhoSUNDLCBMIlJHQiBidWlsdC1pbiIpKSBnb3RvIEVycm9yOworCisgICAgaWYgKFdoaXRlUG9pbnQpIHsKKworICAgICAgICBpZiAoIWNtc1dyaXRlVGFnKGhJQ0MsIGNtc1NpZ01lZGlhV2hpdGVQb2ludFRhZywgY21zRDUwX1hZWigpKSkgZ290byBFcnJvcjsKKworICAgICAgICBjbXN4eVkyWFlaKCZXaGl0ZVBvaW50WFlaLCBXaGl0ZVBvaW50KTsKKyAgICAgICAgX2Ntc0FkYXB0YXRpb25NYXRyaXgoJkNIQUQsIE5VTEwsICZXaGl0ZVBvaW50WFlaLCBjbXNENTBfWFlaKCkpOworCisgICAgICAgIC8vIFRoaXMgaXMgYSBWNCB0YWcsIGJ1dCBtYW55IENNTSBkb2VzIHJlYWQgYW5kIHVuZGVyc3RhbmQgaXQgbm8gbWF0dGVyIHdoaWNoIHZlcnNpb24KKyAgICAgICAgaWYgKCFjbXNXcml0ZVRhZyhoSUNDLCBjbXNTaWdDaHJvbWF0aWNBZGFwdGF0aW9uVGFnLCAodm9pZCopICZDSEFEKSkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBpZiAoV2hpdGVQb2ludCAmJiBQcmltYXJpZXMpIHsKKworICAgICAgICBNYXhXaGl0ZS54ID0gIFdoaXRlUG9pbnQgLT4geDsKKyAgICAgICAgTWF4V2hpdGUueSA9ICBXaGl0ZVBvaW50IC0+IHk7CisgICAgICAgIE1heFdoaXRlLlkgPSAgMS4wOworCisgICAgICAgIGlmICghX2Ntc0J1aWxkUkdCMlhZWnRyYW5zZmVyTWF0cml4KCZNQ29sb3JhbnRzLCAmTWF4V2hpdGUsIFByaW1hcmllcykpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgQ29sb3JhbnRzLlJlZC5YICAgPSBNQ29sb3JhbnRzLnZbMF0ublswXTsKKyAgICAgICAgQ29sb3JhbnRzLlJlZC5ZICAgPSBNQ29sb3JhbnRzLnZbMV0ublswXTsKKyAgICAgICAgQ29sb3JhbnRzLlJlZC5aICAgPSBNQ29sb3JhbnRzLnZbMl0ublswXTsKKworICAgICAgICBDb2xvcmFudHMuR3JlZW4uWCA9IE1Db2xvcmFudHMudlswXS5uWzFdOworICAgICAgICBDb2xvcmFudHMuR3JlZW4uWSA9IE1Db2xvcmFudHMudlsxXS5uWzFdOworICAgICAgICBDb2xvcmFudHMuR3JlZW4uWiA9IE1Db2xvcmFudHMudlsyXS5uWzFdOworCisgICAgICAgIENvbG9yYW50cy5CbHVlLlggID0gTUNvbG9yYW50cy52WzBdLm5bMl07CisgICAgICAgIENvbG9yYW50cy5CbHVlLlkgID0gTUNvbG9yYW50cy52WzFdLm5bMl07CisgICAgICAgIENvbG9yYW50cy5CbHVlLlogID0gTUNvbG9yYW50cy52WzJdLm5bMl07CisKKyAgICAgICAgaWYgKCFjbXNXcml0ZVRhZyhoSUNDLCBjbXNTaWdSZWRDb2xvcmFudFRhZywgICAodm9pZCopICZDb2xvcmFudHMuUmVkKSkgZ290byBFcnJvcjsKKyAgICAgICAgaWYgKCFjbXNXcml0ZVRhZyhoSUNDLCBjbXNTaWdCbHVlQ29sb3JhbnRUYWcsICAodm9pZCopICZDb2xvcmFudHMuQmx1ZSkpIGdvdG8gRXJyb3I7CisgICAgICAgIGlmICghY21zV3JpdGVUYWcoaElDQywgY21zU2lnR3JlZW5Db2xvcmFudFRhZywgKHZvaWQqKSAmQ29sb3JhbnRzLkdyZWVuKSkgZ290byBFcnJvcjsKKyAgICB9CisKKworICAgIGlmIChUcmFuc2ZlckZ1bmN0aW9uKSB7CisKKyAgICAgICAgLy8gVHJpZXMgdG8gbWluaW1pemUgc3BhY2UuIFRoYW5rcyB0byBSaWNoYXJkIEh1Z2hlcyBmb3IgdGhpcyBuaWNlIGlkZWEgICAgICAgICAKKyAgICAgICAgaWYgKCFjbXNXcml0ZVRhZyhoSUNDLCBjbXNTaWdSZWRUUkNUYWcsICAgKHZvaWQqKSBUcmFuc2ZlckZ1bmN0aW9uWzBdKSkgZ290byBFcnJvcjsKKworICAgICAgICBpZiAoVHJhbnNmZXJGdW5jdGlvblsxXSA9PSBUcmFuc2ZlckZ1bmN0aW9uWzBdKSB7CisKKyAgICAgICAgICAgIGlmICghY21zTGlua1RhZyAoaElDQywgY21zU2lnR3JlZW5UUkNUYWcsIGNtc1NpZ1JlZFRSQ1RhZykpIGdvdG8gRXJyb3I7CisKKyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICAgICAgaWYgKCFjbXNXcml0ZVRhZyhoSUNDLCBjbXNTaWdHcmVlblRSQ1RhZywgKHZvaWQqKSBUcmFuc2ZlckZ1bmN0aW9uWzFdKSkgZ290byBFcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChUcmFuc2ZlckZ1bmN0aW9uWzJdID09IFRyYW5zZmVyRnVuY3Rpb25bMF0pIHsKKworICAgICAgICAgICAgaWYgKCFjbXNMaW5rVGFnIChoSUNDLCBjbXNTaWdCbHVlVFJDVGFnLCBjbXNTaWdSZWRUUkNUYWcpKSBnb3RvIEVycm9yOworCisgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgIGlmICghY21zV3JpdGVUYWcoaElDQywgY21zU2lnQmx1ZVRSQ1RhZywgKHZvaWQqKSBUcmFuc2ZlckZ1bmN0aW9uWzJdKSkgZ290byBFcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChQcmltYXJpZXMpIHsKKyAgICAgICAgaWYgKCFjbXNXcml0ZVRhZyhoSUNDLCBjbXNTaWdDaHJvbWF0aWNpdHlUYWcsICh2b2lkKikgUHJpbWFyaWVzKSkgZ290byBFcnJvcjsKKyAgICB9CisKKworICAgIHJldHVybiBoSUNDOworCitFcnJvcjoKKyAgICBpZiAoaElDQykKKyAgICAgICAgY21zQ2xvc2VQcm9maWxlKGhJQ0MpOworICAgIHJldHVybiBOVUxMOworfQorCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zQ3JlYXRlUkdCUHJvZmlsZShjb25zdCBjbXNDSUV4eVkqIFdoaXRlUG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNDSUV4eVlUUklQTEUqIFByaW1hcmllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1RvbmVDdXJ2ZSogY29uc3QgVHJhbnNmZXJGdW5jdGlvblszXSkKK3sKKyAgICByZXR1cm4gY21zQ3JlYXRlUkdCUHJvZmlsZVRIUihOVUxMLCBXaGl0ZVBvaW50LCBQcmltYXJpZXMsIFRyYW5zZmVyRnVuY3Rpb24pOworfQorCisKKworLy8gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgcHJvZmlsZSBiYXNlZCBvbiBXaGl0ZSBwb2ludCBhbmQgdHJhbnNmZXIgZnVuY3Rpb24uCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zQ3JlYXRlR3JheVByb2ZpbGVUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zQ0lFeHlZKiBXaGl0ZVBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1RvbmVDdXJ2ZSogVHJhbnNmZXJGdW5jdGlvbikKK3sKKyAgICBjbXNIUFJPRklMRSBoSUNDOworICAgIGNtc0NJRVhZWiB0bXA7CisKKyAgICBoSUNDID0gY21zQ3JlYXRlUHJvZmlsZVBsYWNlaG9sZGVyKENvbnRleHRJRCk7CisgICAgaWYgKCFoSUNDKSAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuJ3QgYWxsb2NhdGUKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBjbXNTZXRQcm9maWxlVmVyc2lvbihoSUNDLCA0LjMpOworCisgICAgY21zU2V0RGV2aWNlQ2xhc3MoaElDQywgICAgICBjbXNTaWdEaXNwbGF5Q2xhc3MpOworICAgIGNtc1NldENvbG9yU3BhY2UoaElDQywgICAgICAgY21zU2lnR3JheURhdGEpOworICAgIGNtc1NldFBDUyhoSUNDLCAgICAgICAgICAgICAgY21zU2lnWFlaRGF0YSk7CisgICAgY21zU2V0SGVhZGVyUmVuZGVyaW5nSW50ZW50KGhJQ0MsICBJTlRFTlRfUEVSQ0VQVFVBTCk7CisKKworICAgIC8vIEltcGxlbWVudCBwcm9maWxlIHVzaW5nIGZvbGxvd2luZyB0YWdzOgorICAgIC8vCisgICAgLy8gIDEgY21zU2lnUHJvZmlsZURlc2NyaXB0aW9uVGFnCisgICAgLy8gIDIgY21zU2lnTWVkaWFXaGl0ZVBvaW50VGFnCisgICAgLy8gIDMgY21zU2lnR3JheVRSQ1RhZworCisgICAgLy8gVGhpcyBjb25mb3JtcyBhIHN0YW5kYXJkIEdyYXkgRGlzcGxheVByb2ZpbGUKKworICAgIC8vIEZpbGwtaW4gdGhlIHRhZ3MKKworICAgIGlmICghU2V0VGV4dFRhZ3MoaElDQywgTCJncmF5IGJ1aWx0LWluIikpIGdvdG8gRXJyb3I7CisKKworICAgIGlmIChXaGl0ZVBvaW50KSB7CisKKyAgICAgICAgY21zeHlZMlhZWigmdG1wLCBXaGl0ZVBvaW50KTsKKyAgICAgICAgaWYgKCFjbXNXcml0ZVRhZyhoSUNDLCBjbXNTaWdNZWRpYVdoaXRlUG9pbnRUYWcsICh2b2lkKikgJnRtcCkpIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgaWYgKFRyYW5zZmVyRnVuY3Rpb24pIHsKKworICAgICAgICBpZiAoIWNtc1dyaXRlVGFnKGhJQ0MsIGNtc1NpZ0dyYXlUUkNUYWcsICh2b2lkKikgVHJhbnNmZXJGdW5jdGlvbikpIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIGhJQ0M7CisKK0Vycm9yOgorICAgIGlmIChoSUNDKQorICAgICAgICBjbXNDbG9zZVByb2ZpbGUoaElDQyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zQ3JlYXRlR3JheVByb2ZpbGUoY29uc3QgY21zQ0lFeHlZKiBXaGl0ZVBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1RvbmVDdXJ2ZSogVHJhbnNmZXJGdW5jdGlvbikKK3sKKyAgICByZXR1cm4gY21zQ3JlYXRlR3JheVByb2ZpbGVUSFIoTlVMTCwgV2hpdGVQb2ludCwgVHJhbnNmZXJGdW5jdGlvbik7Cit9CisKKy8vIFRoaXMgaXMgYSBkZXZpY2VsaW5rIG9wZXJhdGluZyBpbiB0aGUgdGFyZ2V0IGNvbG9yc3BhY2Ugd2l0aCBhcyBtYW55IHRyYW5zZmVyIGZ1bmN0aW9ucyBhcyBjb21wb25lbnRzCisKK2Ntc0hQUk9GSUxFIENNU0VYUE9SVCBjbXNDcmVhdGVMaW5lYXJpemF0aW9uRGV2aWNlTGlua1RIUihjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENvbG9yU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVG9uZUN1cnZlKiBjb25zdCBUcmFuc2ZlckZ1bmN0aW9uc1tdKQoreworICAgIGNtc0hQUk9GSUxFIGhJQ0M7CisgICAgY21zUGlwZWxpbmUqIFBpcGVsaW5lOworICAgIGludCBuQ2hhbm5lbHM7CisKKyAgICBoSUNDID0gY21zQ3JlYXRlUHJvZmlsZVBsYWNlaG9sZGVyKENvbnRleHRJRCk7CisgICAgaWYgKCFoSUNDKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGNtc1NldFByb2ZpbGVWZXJzaW9uKGhJQ0MsIDQuMyk7CisKKyAgICBjbXNTZXREZXZpY2VDbGFzcyhoSUNDLCAgICAgIGNtc1NpZ0xpbmtDbGFzcyk7CisgICAgY21zU2V0Q29sb3JTcGFjZShoSUNDLCAgICAgICBDb2xvclNwYWNlKTsKKyAgICBjbXNTZXRQQ1MoaElDQywgICAgICAgICAgICAgIENvbG9yU3BhY2UpOworCisgICAgY21zU2V0SGVhZGVyUmVuZGVyaW5nSW50ZW50KGhJQ0MsICBJTlRFTlRfUEVSQ0VQVFVBTCk7CisKKyAgICAvLyBTZXQgdXAgY2hhbm5lbHMKKyAgICBuQ2hhbm5lbHMgPSBjbXNDaGFubmVsc09mKENvbG9yU3BhY2UpOworCisgICAgLy8gQ3JlYXRlcyBhIFBpcGVsaW5lIHdpdGggcHJlbGluZWFyaXphdGlvbiBzdGVwIG9ubHkKKyAgICBQaXBlbGluZSA9IGNtc1BpcGVsaW5lQWxsb2MoQ29udGV4dElELCBuQ2hhbm5lbHMsIG5DaGFubmVscyk7CisgICAgaWYgKFBpcGVsaW5lID09IE5VTEwpIGdvdG8gRXJyb3I7CisKKworICAgIC8vIENvcHkgdGFibGVzIHRvIFBpcGVsaW5lCisgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKFBpcGVsaW5lLCBjbXNBVF9CRUdJTiwgY21zU3RhZ2VBbGxvY1RvbmVDdXJ2ZXMoQ29udGV4dElELCBuQ2hhbm5lbHMsIFRyYW5zZmVyRnVuY3Rpb25zKSkpCisgICAgICAgIGdvdG8gRXJyb3I7CisKKyAgICAvLyBDcmVhdGUgdGFncworICAgIGlmICghU2V0VGV4dFRhZ3MoaElDQywgTCJMaW5lYXJpemF0aW9uIGJ1aWx0LWluIikpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFjbXNXcml0ZVRhZyhoSUNDLCBjbXNTaWdBVG9CMFRhZywgKHZvaWQqKSBQaXBlbGluZSkpIGdvdG8gRXJyb3I7CisgICAgaWYgKCFTZXRTZXFEZXNjVGFnKGhJQ0MsICJMaW5lYXJpemF0aW9uIGJ1aWx0LWluIikpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBQaXBlbGluZSBpcyBhbHJlYWR5IG9uIHZpcnR1YWwgcHJvZmlsZQorICAgIGNtc1BpcGVsaW5lRnJlZShQaXBlbGluZSk7CisKKyAgICAvLyBPaywgZG9uZQorICAgIHJldHVybiBoSUNDOworCitFcnJvcjoKKyAgICBjbXNQaXBlbGluZUZyZWUoUGlwZWxpbmUpOworICAgIGlmIChoSUNDKQorICAgICAgICBjbXNDbG9zZVByb2ZpbGUoaElDQyk7CisKKworICAgIHJldHVybiBOVUxMOworfQorCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zQ3JlYXRlTGluZWFyaXphdGlvbkRldmljZUxpbmsoY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvclNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNUb25lQ3VydmUqIGNvbnN0IFRyYW5zZmVyRnVuY3Rpb25zW10pCit7CisgICAgcmV0dXJuIGNtc0NyZWF0ZUxpbmVhcml6YXRpb25EZXZpY2VMaW5rVEhSKE5VTEwsIENvbG9yU3BhY2UsIFRyYW5zZmVyRnVuY3Rpb25zKTsKK30KKworLy8gSW5rLWxpbWl0aW5nIGFsZ29yaXRobQorLy8KKy8vICBTdW0gPSBDICsgTSArIFkgKyBLCisvLyAgSWYgU3VtID4gSW5rTGltaXQKKy8vICAgICAgICBSYXRpbz0gMSAtIChTdW0gLSBJbmtMaW1pdCkgLyAoQyArIE0gKyBZKQorLy8gICAgICAgIGlmIFJhdGlvIDwwCisvLyAgICAgICAgICAgICAgUmF0aW89MAorLy8gICAgICAgIGVuZGlmCisvLyAgICAgRWxzZQorLy8gICAgICAgICBSYXRpbz0xCisvLyAgICAgZW5kaWYKKy8vCisvLyAgICAgQyA9IFJhdGlvICogQworLy8gICAgIE0gPSBSYXRpbyAqIE0KKy8vICAgICBZID0gUmF0aW8gKiBZCisvLyAgICAgSzogRG9lcyBub3QgY2hhbmdlCisKK3N0YXRpYworaW50IElua0xpbWl0aW5nU2FtcGxlcihyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5bXSwgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIE91dFtdLCByZWdpc3RlciB2b2lkKiBDYXJnbykKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIElua0xpbWl0ID0gKihjbXNGbG9hdDY0TnVtYmVyICopIENhcmdvOworICAgIGNtc0Zsb2F0NjROdW1iZXIgU3VtQ01ZLCBTdW1DTVlLLCBSYXRpbzsKKworICAgIElua0xpbWl0ID0gKElua0xpbWl0ICogNjU1LjM1KTsKKworICAgIFN1bUNNWSAgID0gSW5bMF0gICsgSW5bMV0gKyBJblsyXTsKKyAgICBTdW1DTVlLICA9IFN1bUNNWSArIEluWzNdOworCisgICAgaWYgKFN1bUNNWUsgPiBJbmtMaW1pdCkgeworCisgICAgICAgIFJhdGlvID0gMSAtICgoU3VtQ01ZSyAtIElua0xpbWl0KSAvIFN1bUNNWSk7CisgICAgICAgIGlmIChSYXRpbyA8IDApCisgICAgICAgICAgICBSYXRpbyA9IDA7CisgICAgfQorICAgIGVsc2UgUmF0aW8gPSAxOworCisgICAgT3V0WzBdID0gX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKEluWzBdICogUmF0aW8pOyAgICAgLy8gQworICAgIE91dFsxXSA9IF9jbXNRdWlja1NhdHVyYXRlV29yZChJblsxXSAqIFJhdGlvKTsgICAgIC8vIE0KKyAgICBPdXRbMl0gPSBfY21zUXVpY2tTYXR1cmF0ZVdvcmQoSW5bMl0gKiBSYXRpbyk7ICAgICAvLyBZCisKKyAgICBPdXRbM10gPSBJblszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBLICh1bnRvdWNoZWQpCisKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gVGhpcyBpcyBhIGRldmljZWxpbmsgb3BlcmF0aW5nIGluIENNWUsgZm9yIGluay1saW1pdGluZworCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zQ3JlYXRlSW5rTGltaXRpbmdEZXZpY2VMaW5rVEhSKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENvbG9yU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgTGltaXQpCit7CisgICAgY21zSFBST0ZJTEUgaElDQzsKKyAgICBjbXNQaXBlbGluZSogTFVUOworICAgIGNtc1N0YWdlKiBDTFVUOworICAgIGludCBuQ2hhbm5lbHM7CisKKyAgICBpZiAoQ29sb3JTcGFjZSAhPSBjbXNTaWdDbXlrRGF0YSkgeworICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX0NPTE9SU1BBQ0VfQ0hFQ0ssICJJbmtMaW1pdGluZzogT25seSBDTVlLIGN1cnJlbnRseSBzdXBwb3J0ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKExpbWl0IDwgMC4wIHx8IExpbWl0ID4gNDAwKSB7CisKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9SQU5HRSwgIklua0xpbWl0aW5nOiBMaW1pdCBzaG91bGQgYmUgYmV0d2VlbiAwLi40MDAiKTsKKyAgICAgICAgaWYgKExpbWl0IDwgMCkgTGltaXQgPSAwOworICAgICAgICBpZiAoTGltaXQgPiA0MDApIExpbWl0ID0gNDAwOworCisgICAgfQorCisgICAgaElDQyA9IGNtc0NyZWF0ZVByb2ZpbGVQbGFjZWhvbGRlcihDb250ZXh0SUQpOworICAgIGlmICghaElDQykgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbid0IGFsbG9jYXRlCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgY21zU2V0UHJvZmlsZVZlcnNpb24oaElDQywgNC4zKTsKKworICAgIGNtc1NldERldmljZUNsYXNzKGhJQ0MsICAgICAgY21zU2lnTGlua0NsYXNzKTsKKyAgICBjbXNTZXRDb2xvclNwYWNlKGhJQ0MsICAgICAgIENvbG9yU3BhY2UpOworICAgIGNtc1NldFBDUyhoSUNDLCAgICAgICAgICAgICAgQ29sb3JTcGFjZSk7CisKKyAgICBjbXNTZXRIZWFkZXJSZW5kZXJpbmdJbnRlbnQoaElDQywgIElOVEVOVF9QRVJDRVBUVUFMKTsKKworCisgICAgLy8gQ3JlYXRlcyBhIFBpcGVsaW5lIHdpdGggM0QgZ3JpZCBvbmx5CisgICAgTFVUID0gY21zUGlwZWxpbmVBbGxvYyhDb250ZXh0SUQsIDQsIDQpOworICAgIGlmIChMVVQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworCisgICAgbkNoYW5uZWxzID0gY21zQ2hhbm5lbHNPZihDb2xvclNwYWNlKTsKKworICAgIENMVVQgPSBjbXNTdGFnZUFsbG9jQ0x1dDE2Yml0KENvbnRleHRJRCwgMTcsIG5DaGFubmVscywgbkNoYW5uZWxzLCBOVUxMKTsKKyAgICBpZiAoQ0xVVCA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgaWYgKCFjbXNTdGFnZVNhbXBsZUNMdXQxNmJpdChDTFVULCBJbmtMaW1pdGluZ1NhbXBsZXIsICh2b2lkKikgJkxpbWl0LCAwKSkgZ290byBFcnJvcjsKKworICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMVVQsIGNtc0FUX0JFR0lOLCBfY21zU3RhZ2VBbGxvY0lkZW50aXR5Q3VydmVzKENvbnRleHRJRCwgbkNoYW5uZWxzKSkgfHwKKyAgICAgICAgIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTFVULCBjbXNBVF9FTkQsIENMVVQpIHx8CisgICAgICAgICFjbXNQaXBlbGluZUluc2VydFN0YWdlKExVVCwgY21zQVRfRU5ELCBfY21zU3RhZ2VBbGxvY0lkZW50aXR5Q3VydmVzKENvbnRleHRJRCwgbkNoYW5uZWxzKSkpCisgICAgICAgIGdvdG8gRXJyb3I7CisKKyAgICAvLyBDcmVhdGUgdGFncworICAgIGlmICghU2V0VGV4dFRhZ3MoaElDQywgTCJpbmstbGltaXRpbmcgYnVpbHQtaW4iKSkgZ290byBFcnJvcjsKKworICAgIGlmICghY21zV3JpdGVUYWcoaElDQywgY21zU2lnQVRvQjBUYWcsICh2b2lkKikgTFVUKSkgIGdvdG8gRXJyb3I7CisgICAgaWYgKCFTZXRTZXFEZXNjVGFnKGhJQ0MsICJpbmstbGltaXRpbmcgYnVpbHQtaW4iKSkgZ290byBFcnJvcjsKKworICAgIC8vIGNtc1BpcGVsaW5lIGlzIGFscmVhZHkgb24gdmlydHVhbCBwcm9maWxlCisgICAgY21zUGlwZWxpbmVGcmVlKExVVCk7CisKKyAgICAvLyBPaywgZG9uZQorICAgIHJldHVybiBoSUNDOworCitFcnJvcjoKKyAgICBpZiAoTFVUICE9IE5VTEwpCisgICAgICAgIGNtc1BpcGVsaW5lRnJlZShMVVQpOworCisgICAgaWYgKGhJQ0MgIT0gTlVMTCkKKyAgICAgICAgY21zQ2xvc2VQcm9maWxlKGhJQ0MpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2Ntc0hQUk9GSUxFIENNU0VYUE9SVCBjbXNDcmVhdGVJbmtMaW1pdGluZ0RldmljZUxpbmsoY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvclNwYWNlLCBjbXNGbG9hdDY0TnVtYmVyIExpbWl0KQoreworICAgIHJldHVybiBjbXNDcmVhdGVJbmtMaW1pdGluZ0RldmljZUxpbmtUSFIoTlVMTCwgQ29sb3JTcGFjZSwgTGltaXQpOworfQorCisKKy8vIENyZWF0ZXMgYSBmYWtlIExhYiBpZGVudGl0eS4KK2Ntc0hQUk9GSUxFIENNU0VYUE9SVCBjbXNDcmVhdGVMYWIyUHJvZmlsZVRIUihjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3QgY21zQ0lFeHlZKiBXaGl0ZVBvaW50KQoreworICAgIGNtc0hQUk9GSUxFIGhQcm9maWxlOworICAgIGNtc1BpcGVsaW5lKiBMVVQgPSBOVUxMOworCisgICAgaFByb2ZpbGUgPSBjbXNDcmVhdGVSR0JQcm9maWxlVEhSKENvbnRleHRJRCwgV2hpdGVQb2ludCA9PSBOVUxMID8gY21zRDUwX3h5WSgpIDogV2hpdGVQb2ludCwgTlVMTCwgTlVMTCk7CisgICAgaWYgKGhQcm9maWxlID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgY21zU2V0UHJvZmlsZVZlcnNpb24oaFByb2ZpbGUsIDIuMSk7CisKKyAgICBjbXNTZXREZXZpY2VDbGFzcyhoUHJvZmlsZSwgY21zU2lnQWJzdHJhY3RDbGFzcyk7CisgICAgY21zU2V0Q29sb3JTcGFjZShoUHJvZmlsZSwgIGNtc1NpZ0xhYkRhdGEpOworICAgIGNtc1NldFBDUyhoUHJvZmlsZSwgICAgICAgICBjbXNTaWdMYWJEYXRhKTsKKworICAgIGlmICghU2V0VGV4dFRhZ3MoaFByb2ZpbGUsIEwiTGFiIGlkZW50aXR5IGJ1aWx0LWluIikpIHJldHVybiBOVUxMOworCisgICAgLy8gQW4gaWRlbnRpdHkgTFVUIGlzIGFsbCB3ZSBuZWVkCisgICAgTFVUID0gY21zUGlwZWxpbmVBbGxvYyhDb250ZXh0SUQsIDMsIDMpOworICAgIGlmIChMVVQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMVVQsIGNtc0FUX0JFR0lOLCBfY21zU3RhZ2VBbGxvY0lkZW50aXR5Q0x1dChDb250ZXh0SUQsIDMpKSkKKyAgICAgICAgZ290byBFcnJvcjsKKworICAgIGlmICghY21zV3JpdGVUYWcoaFByb2ZpbGUsIGNtc1NpZ0FUb0IwVGFnLCBMVVQpKSBnb3RvIEVycm9yOworICAgIGNtc1BpcGVsaW5lRnJlZShMVVQpOworCisgICAgcmV0dXJuIGhQcm9maWxlOworCitFcnJvcjoKKworICAgIGlmIChMVVQgIT0gTlVMTCkKKyAgICAgICAgY21zUGlwZWxpbmVGcmVlKExVVCk7CisKKyAgICBpZiAoaFByb2ZpbGUgIT0gTlVMTCkKKyAgICAgICAgY21zQ2xvc2VQcm9maWxlKGhQcm9maWxlKTsKKworICAgIHJldHVybiBOVUxMOworfQorCisKK2Ntc0hQUk9GSUxFIENNU0VYUE9SVCBjbXNDcmVhdGVMYWIyUHJvZmlsZShjb25zdCBjbXNDSUV4eVkqIFdoaXRlUG9pbnQpCit7CisgICAgcmV0dXJuIGNtc0NyZWF0ZUxhYjJQcm9maWxlVEhSKE5VTEwsIFdoaXRlUG9pbnQpOworfQorCisKKy8vIENyZWF0ZXMgYSBmYWtlIExhYiBWNCBpZGVudGl0eS4KK2Ntc0hQUk9GSUxFIENNU0VYUE9SVCBjbXNDcmVhdGVMYWI0UHJvZmlsZVRIUihjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3QgY21zQ0lFeHlZKiBXaGl0ZVBvaW50KQoreworICAgIGNtc0hQUk9GSUxFIGhQcm9maWxlOworICAgIGNtc1BpcGVsaW5lKiBMVVQgPSBOVUxMOworCisgICAgaFByb2ZpbGUgPSBjbXNDcmVhdGVSR0JQcm9maWxlVEhSKENvbnRleHRJRCwgV2hpdGVQb2ludCA9PSBOVUxMID8gY21zRDUwX3h5WSgpIDogV2hpdGVQb2ludCwgTlVMTCwgTlVMTCk7CisgICAgaWYgKGhQcm9maWxlID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgY21zU2V0UHJvZmlsZVZlcnNpb24oaFByb2ZpbGUsIDQuMyk7CisKKyAgICBjbXNTZXREZXZpY2VDbGFzcyhoUHJvZmlsZSwgY21zU2lnQWJzdHJhY3RDbGFzcyk7CisgICAgY21zU2V0Q29sb3JTcGFjZShoUHJvZmlsZSwgIGNtc1NpZ0xhYkRhdGEpOworICAgIGNtc1NldFBDUyhoUHJvZmlsZSwgICAgICAgICBjbXNTaWdMYWJEYXRhKTsKKworICAgIGlmICghU2V0VGV4dFRhZ3MoaFByb2ZpbGUsIEwiTGFiIGlkZW50aXR5IGJ1aWx0LWluIikpIGdvdG8gRXJyb3I7CisKKyAgICAvLyBBbiBlbXB0eSBMVVRzIGlzIGFsbCB3ZSBuZWVkCisgICAgTFVUID0gY21zUGlwZWxpbmVBbGxvYyhDb250ZXh0SUQsIDMsIDMpOworICAgIGlmIChMVVQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMVVQsIGNtc0FUX0JFR0lOLCBfY21zU3RhZ2VBbGxvY0lkZW50aXR5Q3VydmVzKENvbnRleHRJRCwgMykpKQorICAgICAgICBnb3RvIEVycm9yOworCisgICAgaWYgKCFjbXNXcml0ZVRhZyhoUHJvZmlsZSwgY21zU2lnQVRvQjBUYWcsIExVVCkpIGdvdG8gRXJyb3I7CisgICAgY21zUGlwZWxpbmVGcmVlKExVVCk7CisKKyAgICByZXR1cm4gaFByb2ZpbGU7CisKK0Vycm9yOgorCisgICAgaWYgKExVVCAhPSBOVUxMKQorICAgICAgICBjbXNQaXBlbGluZUZyZWUoTFVUKTsKKworICAgIGlmIChoUHJvZmlsZSAhPSBOVUxMKQorICAgICAgICBjbXNDbG9zZVByb2ZpbGUoaFByb2ZpbGUpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2Ntc0hQUk9GSUxFIENNU0VYUE9SVCBjbXNDcmVhdGVMYWI0UHJvZmlsZShjb25zdCBjbXNDSUV4eVkqIFdoaXRlUG9pbnQpCit7CisgICAgcmV0dXJuIGNtc0NyZWF0ZUxhYjRQcm9maWxlVEhSKE5VTEwsIFdoaXRlUG9pbnQpOworfQorCisKKy8vIENyZWF0ZXMgYSBmYWtlIFhZWiBpZGVudGl0eQorY21zSFBST0ZJTEUgQ01TRVhQT1JUIGNtc0NyZWF0ZVhZWlByb2ZpbGVUSFIoY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgY21zSFBST0ZJTEUgaFByb2ZpbGU7CisgICAgY21zUGlwZWxpbmUqIExVVCA9IE5VTEw7CisKKyAgICBoUHJvZmlsZSA9IGNtc0NyZWF0ZVJHQlByb2ZpbGVUSFIoQ29udGV4dElELCBjbXNENTBfeHlZKCksIE5VTEwsIE5VTEwpOworICAgIGlmIChoUHJvZmlsZSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIGNtc1NldFByb2ZpbGVWZXJzaW9uKGhQcm9maWxlLCA0LjMpOworCisgICAgY21zU2V0RGV2aWNlQ2xhc3MoaFByb2ZpbGUsIGNtc1NpZ0Fic3RyYWN0Q2xhc3MpOworICAgIGNtc1NldENvbG9yU3BhY2UoaFByb2ZpbGUsICBjbXNTaWdYWVpEYXRhKTsKKyAgICBjbXNTZXRQQ1MoaFByb2ZpbGUsICAgICAgICAgY21zU2lnWFlaRGF0YSk7CisKKyAgICBpZiAoIVNldFRleHRUYWdzKGhQcm9maWxlLCBMIlhZWiBpZGVudGl0eSBidWlsdC1pbiIpKSBnb3RvIEVycm9yOworCisgICAgLy8gQW4gaWRlbnRpdHkgTFVUIGlzIGFsbCB3ZSBuZWVkCisgICAgTFVUID0gY21zUGlwZWxpbmVBbGxvYyhDb250ZXh0SUQsIDMsIDMpOworICAgIGlmIChMVVQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMVVQsIGNtc0FUX0JFR0lOLCBfY21zU3RhZ2VBbGxvY0lkZW50aXR5Q3VydmVzKENvbnRleHRJRCwgMykpKQorICAgICAgICBnb3RvIEVycm9yOworCisgICAgaWYgKCFjbXNXcml0ZVRhZyhoUHJvZmlsZSwgY21zU2lnQVRvQjBUYWcsIExVVCkpIGdvdG8gRXJyb3I7CisgICAgY21zUGlwZWxpbmVGcmVlKExVVCk7CisKKyAgICByZXR1cm4gaFByb2ZpbGU7CisKK0Vycm9yOgorCisgICAgaWYgKExVVCAhPSBOVUxMKQorICAgICAgICBjbXNQaXBlbGluZUZyZWUoTFVUKTsKKworICAgIGlmIChoUHJvZmlsZSAhPSBOVUxMKQorICAgICAgICBjbXNDbG9zZVByb2ZpbGUoaFByb2ZpbGUpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworY21zSFBST0ZJTEUgQ01TRVhQT1JUIGNtc0NyZWF0ZVhZWlByb2ZpbGUodm9pZCkKK3sKKyAgICByZXR1cm4gY21zQ3JlYXRlWFlaUHJvZmlsZVRIUihOVUxMKTsKK30KKworCisvL3NSR0IgQ3VydmVzIGFyZSBkZWZpbmVkIGJ5OgorLy8KKy8vSWYgIFKSc1JHQixHknNSR0IsIEKSc1JHQiA8IDAuMDQwNDUKKy8vCisvLyAgICBSID0gIFKSc1JHQiAvIDEyLjkyCisvLyAgICBHID0gIEeSc1JHQiAvIDEyLjkyCisvLyAgICBCID0gIEKSc1JHQiAvIDEyLjkyCisvLworLy8KKy8vZWxzZSBpZiAgUpJzUkdCLEeSc1JHQiwgQpJzUkdCID49IDAuMDQwNDUKKy8vCisvLyAgICBSID0gKChSknNSR0IgKyAwLjA1NSkgLyAxLjA1NSleMi40CisvLyAgICBHID0gKChHknNSR0IgKyAwLjA1NSkgLyAxLjA1NSleMi40CisvLyAgICBCID0gKChCknNSR0IgKyAwLjA1NSkgLyAxLjA1NSleMi40CisKK3N0YXRpYworY21zVG9uZUN1cnZlKiBCdWlsZF9zUkdCR2FtbWEoY21zQ29udGV4dCBDb250ZXh0SUQpCit7CisgICAgY21zRmxvYXQ2NE51bWJlciBQYXJhbWV0ZXJzWzVdOworCisgICAgUGFyYW1ldGVyc1swXSA9IDIuNDsKKyAgICBQYXJhbWV0ZXJzWzFdID0gMS4gLyAxLjA1NTsKKyAgICBQYXJhbWV0ZXJzWzJdID0gMC4wNTUgLyAxLjA1NTsKKyAgICBQYXJhbWV0ZXJzWzNdID0gMS4gLyAxMi45MjsKKyAgICBQYXJhbWV0ZXJzWzRdID0gMC4wNDA0NTsKKworICAgIHJldHVybiBjbXNCdWlsZFBhcmFtZXRyaWNUb25lQ3VydmUoQ29udGV4dElELCA0LCBQYXJhbWV0ZXJzKTsKK30KKworLy8gQ3JlYXRlIHRoZSBJQ0MgdmlydHVhbCBwcm9maWxlIGZvciBzUkdCIHNwYWNlCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zQ3JlYXRlX3NSR0JQcm9maWxlVEhSKGNtc0NvbnRleHQgQ29udGV4dElEKQoreworICAgICAgIGNtc0NJRXh5WSAgICAgICBENjU7CisgICAgICAgY21zQ0lFeHlZVFJJUExFIFJlYzcwOVByaW1hcmllcyA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezAuNjQwMCwgMC4zMzAwLCAxLjB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MC4zMDAwLCAwLjYwMDAsIDEuMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswLjE1MDAsIDAuMDYwMCwgMS4wfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgIGNtc1RvbmVDdXJ2ZSogR2FtbWEyMlszXTsKKyAgICAgICBjbXNIUFJPRklMRSAgaHNSR0I7CisKKyAgICAgICBjbXNXaGl0ZVBvaW50RnJvbVRlbXAoJkQ2NSwgNjUwNCk7CisgICAgICAgR2FtbWEyMlswXSA9IEdhbW1hMjJbMV0gPSBHYW1tYTIyWzJdID0gQnVpbGRfc1JHQkdhbW1hKENvbnRleHRJRCk7CisgICAgICAgaWYgKEdhbW1hMjJbMF0gPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisKKyAgICAgICBoc1JHQiA9IGNtc0NyZWF0ZVJHQlByb2ZpbGVUSFIoQ29udGV4dElELCAmRDY1LCAmUmVjNzA5UHJpbWFyaWVzLCBHYW1tYTIyKTsKKyAgICAgICBjbXNGcmVlVG9uZUN1cnZlKEdhbW1hMjJbMF0pOworICAgICAgIGlmIChoc1JHQiA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgICAgIGlmICghU2V0VGV4dFRhZ3MoaHNSR0IsIEwic1JHQiBidWlsdC1pbiIpKSB7CisgICAgICAgICAgIGNtc0Nsb3NlUHJvZmlsZShoc1JHQik7CisgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgIH0KKworICAgICAgIHJldHVybiBoc1JHQjsKK30KKworY21zSFBST0ZJTEUgQ01TRVhQT1JUIGNtc0NyZWF0ZV9zUkdCUHJvZmlsZSh2b2lkKQoreworICAgIHJldHVybiBjbXNDcmVhdGVfc1JHQlByb2ZpbGVUSFIoTlVMTCk7Cit9CisKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBCcmlnaHRuZXNzOworICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgQ29udHJhc3Q7CisgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBIdWU7CisgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBTYXR1cmF0aW9uOworICAgICAgICAgICAgICAgIGNtc0NJRVhZWiBXUHNyYywgV1BkZXN0OworCit9IEJDSFNXQURKVVNUUywgKkxQQkNIU1dBREpVU1RTOworCisKK3N0YXRpYworaW50IGJjaHN3U2FtcGxlcihyZWdpc3RlciBjb25zdCBjbXNVSW50MTZOdW1iZXIgSW5bXSwgcmVnaXN0ZXIgY21zVUludDE2TnVtYmVyIE91dFtdLCByZWdpc3RlciB2b2lkKiBDYXJnbykKK3sKKyAgICBjbXNDSUVMYWIgTGFiSW4sIExhYk91dDsKKyAgICBjbXNDSUVMQ2ggTENoSW4sIExDaE91dDsKKyAgICBjbXNDSUVYWVogWFlaOworICAgIExQQkNIU1dBREpVU1RTIGJjaHN3ID0gKExQQkNIU1dBREpVU1RTKSBDYXJnbzsKKworCisgICAgY21zTGFiRW5jb2RlZDJGbG9hdCgmTGFiSW4sIEluKTsKKworCisgICAgY21zTGFiMkxDaCgmTENoSW4sICZMYWJJbik7CisKKyAgICAvLyBEbyBzb21lIGFkanVzdHMgb24gTENoCisKKyAgICBMQ2hPdXQuTCA9IExDaEluLkwgKiBiY2hzdyAtPkNvbnRyYXN0ICsgYmNoc3cgLT5CcmlnaHRuZXNzOworICAgIExDaE91dC5DID0gTENoSW4uQyArIGJjaHN3IC0+IFNhdHVyYXRpb247CisgICAgTENoT3V0LmggPSBMQ2hJbi5oICsgYmNoc3cgLT4gSHVlOworCisKKyAgICBjbXNMQ2gyTGFiKCZMYWJPdXQsICZMQ2hPdXQpOworCisgICAgLy8gTW92ZSB3aGl0ZSBwb2ludCBpbiBMYWIKKworICAgIGNtc0xhYjJYWVooJmJjaHN3IC0+V1BzcmMsICAmWFlaLCAmTGFiT3V0KTsKKyAgICBjbXNYWVoyTGFiKCZiY2hzdyAtPldQZGVzdCwgJkxhYk91dCwgJlhZWik7CisKKyAgICAvLyBCYWNrIHRvIGVuY29kZWQKKworICAgIGNtc0Zsb2F0MkxhYkVuY29kZWQoT3V0LCAmTGFiT3V0KTsKKworICAgIHJldHVybiBUUlVFOworfQorCisKKy8vIENyZWF0ZXMgYW4gYWJzdHJhY3QgcHJvZmlsZSBvcGVyYXRpbmcgaW4gTGFiIHNwYWNlIGZvciBCcmlnaHRuZXNzLAorLy8gY29udHJhc3QsIFNhdHVyYXRpb24gYW5kIHdoaXRlIHBvaW50IGRpc3BsYWNlbWVudAorCitjbXNIUFJPRklMRSBDTVNFWFBPUlQgY21zQ3JlYXRlQkNIU1dhYnN0cmFjdFByb2ZpbGVUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgaW50IG5MVVRQb2ludHMsCisgICAgY21zRmxvYXQ2NE51bWJlciBCcmlnaHQsCisgICAgY21zRmxvYXQ2NE51bWJlciBDb250cmFzdCwKKyAgICBjbXNGbG9hdDY0TnVtYmVyIEh1ZSwKKyAgICBjbXNGbG9hdDY0TnVtYmVyIFNhdHVyYXRpb24sCisgICAgaW50IFRlbXBTcmMsCisgICAgaW50IFRlbXBEZXN0KQoreworICAgIGNtc0hQUk9GSUxFIGhJQ0M7CisgICAgY21zUGlwZWxpbmUqIFBpcGVsaW5lOworICAgIEJDSFNXQURKVVNUUyBiY2hzdzsKKyAgICBjbXNDSUV4eVkgV2hpdGVQbnQ7CisgICAgY21zU3RhZ2UqIENMVVQ7CisgICAgY21zVUludDMyTnVtYmVyIERpbWVuc2lvbnNbTUFYX0lOUFVUX0RJTUVOU0lPTlNdOworICAgIGludCBpOworCisgICAgYmNoc3cuQnJpZ2h0bmVzcyA9IEJyaWdodDsKKyAgICBiY2hzdy5Db250cmFzdCAgID0gQ29udHJhc3Q7CisgICAgYmNoc3cuSHVlICAgICAgICA9IEh1ZTsKKyAgICBiY2hzdy5TYXR1cmF0aW9uID0gU2F0dXJhdGlvbjsKKworICAgIGNtc1doaXRlUG9pbnRGcm9tVGVtcCgmV2hpdGVQbnQsIFRlbXBTcmMgKTsKKyAgICBjbXN4eVkyWFlaKCZiY2hzdy5XUHNyYywgJldoaXRlUG50KTsKKworICAgIGNtc1doaXRlUG9pbnRGcm9tVGVtcCgmV2hpdGVQbnQsIFRlbXBEZXN0KTsKKyAgICBjbXN4eVkyWFlaKCZiY2hzdy5XUGRlc3QsICZXaGl0ZVBudCk7CisKKyAgICBoSUNDID0gY21zQ3JlYXRlUHJvZmlsZVBsYWNlaG9sZGVyKENvbnRleHRJRCk7CisgICAgaWYgKCFoSUNDKSAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuJ3QgYWxsb2NhdGUKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKworICAgIGNtc1NldERldmljZUNsYXNzKGhJQ0MsICAgICAgY21zU2lnQWJzdHJhY3RDbGFzcyk7CisgICAgY21zU2V0Q29sb3JTcGFjZShoSUNDLCAgICAgICBjbXNTaWdMYWJEYXRhKTsKKyAgICBjbXNTZXRQQ1MoaElDQywgICAgICAgICAgICAgIGNtc1NpZ0xhYkRhdGEpOworCisgICAgY21zU2V0SGVhZGVyUmVuZGVyaW5nSW50ZW50KGhJQ0MsICBJTlRFTlRfUEVSQ0VQVFVBTCk7CisKKyAgICAvLyBDcmVhdGVzIGEgUGlwZWxpbmUgd2l0aCAzRCBncmlkIG9ubHkKKyAgICBQaXBlbGluZSA9IGNtc1BpcGVsaW5lQWxsb2MoQ29udGV4dElELCAzLCAzKTsKKyAgICBpZiAoUGlwZWxpbmUgPT0gTlVMTCkgeworICAgICAgICBjbXNDbG9zZVByb2ZpbGUoaElDQyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgTUFYX0lOUFVUX0RJTUVOU0lPTlM7IGkrKykgRGltZW5zaW9uc1tpXSA9IG5MVVRQb2ludHM7CisgICAgQ0xVVCA9IGNtc1N0YWdlQWxsb2NDTHV0MTZiaXRHcmFudWxhcihDb250ZXh0SUQsIERpbWVuc2lvbnMsIDMsIDMsIE5VTEwpOworICAgIGlmIChDTFVUID09IE5VTEwpIHJldHVybiBOVUxMOworCisKKyAgICBpZiAoIWNtc1N0YWdlU2FtcGxlQ0x1dDE2Yml0KENMVVQsIGJjaHN3U2FtcGxlciwgKHZvaWQqKSAmYmNoc3csIDApKSB7CisKKyAgICAgICAgLy8gU2hvdWxkbid0IHJlYWNoIGhlcmUKKyAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoUGlwZWxpbmUsIGNtc0FUX0VORCwgQ0xVVCkpIHsKKyAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgdGFncworICAgIGlmICghU2V0VGV4dFRhZ3MoaElDQywgTCJCQ0hTIGJ1aWx0LWluIikpIHJldHVybiBOVUxMOworCisgICAgY21zV3JpdGVUYWcoaElDQywgY21zU2lnTWVkaWFXaGl0ZVBvaW50VGFnLCAodm9pZCopIGNtc0Q1MF9YWVooKSk7CisKKyAgICBjbXNXcml0ZVRhZyhoSUNDLCBjbXNTaWdBVG9CMFRhZywgKHZvaWQqKSBQaXBlbGluZSk7CisKKyAgICAvLyBQaXBlbGluZSBpcyBhbHJlYWR5IG9uIHZpcnR1YWwgcHJvZmlsZQorICAgIGNtc1BpcGVsaW5lRnJlZShQaXBlbGluZSk7CisKKyAgICAvLyBPaywgZG9uZQorICAgIHJldHVybiBoSUNDOworCitFcnJvcjoKKyAgICBjbXNQaXBlbGluZUZyZWUoUGlwZWxpbmUpOworICAgIGNtc0Nsb3NlUHJvZmlsZShoSUNDKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitDTVNBUEkgY21zSFBST0ZJTEUgICBDTVNFWFBPUlQgY21zQ3JlYXRlQkNIU1dhYnN0cmFjdFByb2ZpbGUoaW50IG5MVVRQb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBCcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBDb250cmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIEh1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNGbG9hdDY0TnVtYmVyIFNhdHVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IFRlbXBTcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IFRlbXBEZXN0KQoreworICAgIHJldHVybiBjbXNDcmVhdGVCQ0hTV2Fic3RyYWN0UHJvZmlsZVRIUihOVUxMLCBuTFVUUG9pbnRzLCBCcmlnaHQsIENvbnRyYXN0LCBIdWUsIFNhdHVyYXRpb24sIFRlbXBTcmMsIFRlbXBEZXN0KTsKK30KKworCisvLyBDcmVhdGVzIGEgZmFrZSBOVUxMIHByb2ZpbGUuIFRoaXMgcHJvZmlsZSByZXR1cm4gMSBjaGFubmVsIGFzIGFsd2F5cyAwLgorLy8gSXMgdXNlZnVsIG9ubHkgZm9yIGdhbXV0IGNoZWNraW5nIHRyaWNrcworY21zSFBST0ZJTEUgQ01TRVhQT1JUIGNtc0NyZWF0ZU5VTExQcm9maWxlVEhSKGNtc0NvbnRleHQgQ29udGV4dElEKQoreworICAgIGNtc0hQUk9GSUxFIGhQcm9maWxlOworICAgIGNtc1BpcGVsaW5lKiBMVVQgPSBOVUxMOworICAgIGNtc1N0YWdlKiBQb3N0TGluOworICAgIGNtc1RvbmVDdXJ2ZSogRW1wdHlUYWI7CisgICAgY21zVUludDE2TnVtYmVyIFplcm9bMl0gPSB7IDAsIDAgfTsKKworICAgIGhQcm9maWxlID0gY21zQ3JlYXRlUHJvZmlsZVBsYWNlaG9sZGVyKENvbnRleHRJRCk7CisgICAgaWYgKCFoUHJvZmlsZSkgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbid0IGFsbG9jYXRlCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgY21zU2V0UHJvZmlsZVZlcnNpb24oaFByb2ZpbGUsIDQuMyk7CisKKyAgICBpZiAoIVNldFRleHRUYWdzKGhQcm9maWxlLCBMIk5VTEwgcHJvZmlsZSBidWlsdC1pbiIpKSBnb3RvIEVycm9yOworCisKKworICAgIGNtc1NldERldmljZUNsYXNzKGhQcm9maWxlLCBjbXNTaWdPdXRwdXRDbGFzcyk7CisgICAgY21zU2V0Q29sb3JTcGFjZShoUHJvZmlsZSwgIGNtc1NpZ0dyYXlEYXRhKTsKKyAgICBjbXNTZXRQQ1MoaFByb2ZpbGUsICAgICAgICAgY21zU2lnTGFiRGF0YSk7CisKKyAgICAvLyBBbiBlbXB0eSBMVVRzIGlzIGFsbCB3ZSBuZWVkCisgICAgTFVUID0gY21zUGlwZWxpbmVBbGxvYyhDb250ZXh0SUQsIDEsIDEpOworICAgIGlmIChMVVQgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIEVtcHR5VGFiID0gY21zQnVpbGRUYWJ1bGF0ZWRUb25lQ3VydmUxNihDb250ZXh0SUQsIDIsIFplcm8pOworICAgIFBvc3RMaW4gPSBjbXNTdGFnZUFsbG9jVG9uZUN1cnZlcyhDb250ZXh0SUQsIDEsICZFbXB0eVRhYik7CisgICAgY21zRnJlZVRvbmVDdXJ2ZShFbXB0eVRhYik7CisKKyAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTFVULCBjbXNBVF9FTkQsIFBvc3RMaW4pKQorICAgICAgICBnb3RvIEVycm9yOworCisgICAgaWYgKCFjbXNXcml0ZVRhZyhoUHJvZmlsZSwgY21zU2lnQlRvQTBUYWcsICh2b2lkKikgTFVUKSkgZ290byBFcnJvcjsKKyAgICBpZiAoIWNtc1dyaXRlVGFnKGhQcm9maWxlLCBjbXNTaWdNZWRpYVdoaXRlUG9pbnRUYWcsIGNtc0Q1MF9YWVooKSkpIGdvdG8gRXJyb3I7CisKKyAgICBjbXNQaXBlbGluZUZyZWUoTFVUKTsKKyAgICByZXR1cm4gaFByb2ZpbGU7CisKK0Vycm9yOgorCisgICAgaWYgKExVVCAhPSBOVUxMKQorICAgICAgICBjbXNQaXBlbGluZUZyZWUoTFVUKTsKKworICAgIGlmIChoUHJvZmlsZSAhPSBOVUxMKQorICAgICAgICBjbXNDbG9zZVByb2ZpbGUoaFByb2ZpbGUpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2Ntc0hQUk9GSUxFIENNU0VYUE9SVCBjbXNDcmVhdGVOVUxMUHJvZmlsZSh2b2lkKQoreworICAgIHJldHVybiBjbXNDcmVhdGVOVUxMUHJvZmlsZVRIUihOVUxMKTsKK30KKworCitzdGF0aWMKK2ludCBJc1BDUyhjbXNDb2xvclNwYWNlU2lnbmF0dXJlIENvbG9yU3BhY2UpCit7CisgICAgcmV0dXJuIChDb2xvclNwYWNlID09IGNtc1NpZ1hZWkRhdGEgfHwKKyAgICAgICAgICAgIENvbG9yU3BhY2UgPT0gY21zU2lnTGFiRGF0YSk7Cit9CisKKworc3RhdGljCit2b2lkIEZpeENvbG9yU3BhY2VzKGNtc0hQUk9GSUxFIGhQcm9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvclNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBQQ1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykKK3sKKyAgICBpZiAoZHdGbGFncyAmIGNtc0ZMQUdTX0dVRVNTREVWSUNFQ0xBU1MpIHsKKworICAgICAgICAgICAgaWYgKElzUENTKENvbG9yU3BhY2UpICYmIElzUENTKFBDUykpIHsKKworICAgICAgICAgICAgICAgICAgICBjbXNTZXREZXZpY2VDbGFzcyhoUHJvZmlsZSwgICAgICBjbXNTaWdBYnN0cmFjdENsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgY21zU2V0Q29sb3JTcGFjZShoUHJvZmlsZSwgICAgICAgQ29sb3JTcGFjZSk7CisgICAgICAgICAgICAgICAgICAgIGNtc1NldFBDUyhoUHJvZmlsZSwgICAgICAgICAgICAgIFBDUyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKElzUENTKENvbG9yU3BhY2UpICYmICFJc1BDUyhQQ1MpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgY21zU2V0RGV2aWNlQ2xhc3MoaFByb2ZpbGUsIGNtc1NpZ091dHB1dENsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgY21zU2V0UENTKGhQcm9maWxlLCAgICAgICAgIENvbG9yU3BhY2UpOworICAgICAgICAgICAgICAgICAgICBjbXNTZXRDb2xvclNwYWNlKGhQcm9maWxlLCAgUENTKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoSXNQQ1MoUENTKSAmJiAhSXNQQ1MoQ29sb3JTcGFjZSkpIHsKKworICAgICAgICAgICAgICAgICAgIGNtc1NldERldmljZUNsYXNzKGhQcm9maWxlLCAgY21zU2lnSW5wdXRDbGFzcyk7CisgICAgICAgICAgICAgICAgICAgY21zU2V0Q29sb3JTcGFjZShoUHJvZmlsZSwgICBDb2xvclNwYWNlKTsKKyAgICAgICAgICAgICAgICAgICBjbXNTZXRQQ1MoaFByb2ZpbGUsICAgICAgICAgIFBDUyk7CisgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgIH0KKworICAgIGNtc1NldERldmljZUNsYXNzKGhQcm9maWxlLCAgICAgIGNtc1NpZ0xpbmtDbGFzcyk7CisgICAgY21zU2V0Q29sb3JTcGFjZShoUHJvZmlsZSwgICAgICAgQ29sb3JTcGFjZSk7CisgICAgY21zU2V0UENTKGhQcm9maWxlLCAgICAgICAgICAgICAgUENTKTsKK30KKworCisKKy8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIG5hbWVkIGNvbG9yIHByb2ZpbGUgZHVtcGluZyBhbGwgdGhlIGNvbnRlbnRzIG9mIHRyYW5zZm9ybSB0byBhIHNpbmdsZSBwcm9maWxlCisvLyBJbiB0aGlzIHdheSwgTGl0dGxlQ01TIG1heSBiZSB1c2VkIHRvICJncm91cCIgc2V2ZXJhbCBuYW1lZCBjb2xvciBkYXRhYmFzZXMgaW50byBhIHNpbmdsZSBwcm9maWxlLgorLy8gSXQgaGFzLCBob3dldmVyLCBzZXZlcmFsIG1pbm9yIGxpbWl0YXRpb25zLiBQQ1MgaXMgYWx3YXlzIExhYiwgd2hpY2ggaXMgbm90IHZlcnkgY3JpdGljIHNpbmNlIHRoaXMKKy8vIGlzIHRoZSBub3JtYWwgUENTIGZvciBuYW1lZCBjb2xvciBwcm9maWxlcy4KK3N0YXRpYworY21zSFBST0ZJTEUgQ3JlYXRlTmFtZWRDb2xvckRldmljZWxpbmsoY21zSFRSQU5TRk9STSB4Zm9ybSkKK3sKKyAgICBfY21zVFJBTlNGT1JNKiB2ID0gKF9jbXNUUkFOU0ZPUk0qKSB4Zm9ybTsKKyAgICBjbXNIUFJPRklMRSBoSUNDID0gTlVMTDsKKyAgICBpbnQgaSwgbkNvbG9yczsKKyAgICBjbXNOQU1FRENPTE9STElTVCAqbmMyID0gTlVMTCwgKk9yaWdpbmFsID0gTlVMTDsKKworICAgIC8vIENyZWF0ZSBhbiBlbXB0eSBwbGFjZWhvbGRlcgorICAgIGhJQ0MgPSBjbXNDcmVhdGVQcm9maWxlUGxhY2Vob2xkZXIodi0+Q29udGV4dElEKTsKKyAgICBpZiAoaElDQyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKKworICAgIC8vIENyaXRpY2FsIGluZm9ybWF0aW9uCisgICAgY21zU2V0RGV2aWNlQ2xhc3MoaElDQywgY21zU2lnTmFtZWRDb2xvckNsYXNzKTsKKyAgICBjbXNTZXRDb2xvclNwYWNlKGhJQ0MsIHYgLT5FeGl0Q29sb3JTcGFjZSk7CisgICAgY21zU2V0UENTKGhJQ0MsIGNtc1NpZ0xhYkRhdGEpOworCisgICAgLy8gVGFnIHByb2ZpbGUgd2l0aCBpbmZvcm1hdGlvbgorICAgIGlmICghU2V0VGV4dFRhZ3MoaElDQywgTCJOYW1lZCBjb2xvciBkZXZpY2VsaW5rIikpIGdvdG8gRXJyb3I7CisKKyAgICBPcmlnaW5hbCA9IGNtc0dldE5hbWVkQ29sb3JMaXN0KHhmb3JtKTsKKyAgICBpZiAoT3JpZ2luYWwgPT0gTlVMTCkgZ290byBFcnJvcjsKKworICAgIG5Db2xvcnMgPSBjbXNOYW1lZENvbG9yQ291bnQoT3JpZ2luYWwpOworICAgIG5jMiAgICAgPSBjbXNEdXBOYW1lZENvbG9yTGlzdChPcmlnaW5hbCk7CisgICAgaWYgKG5jMiA9PSBOVUxMKSBnb3RvIEVycm9yOworCisgICAgLy8gQ29sb3JhbnQgY291bnQgbm93IGRlcGVuZHMgb24gdGhlIG91dHB1dCBzcGFjZQorICAgIG5jMiAtPkNvbG9yYW50Q291bnQgPSBjbXNQaXBlbGluZU91dHB1dENoYW5uZWxzKHYgLT5MdXQpOworCisgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgcHJvcGVyIGZvcm1hdHRlcnMKKyAgICBjbXNDaGFuZ2VCdWZmZXJzRm9ybWF0KHhmb3JtLCBUWVBFX05BTUVEX0NPTE9SX0lOREVYLAorICAgICAgICBGTE9BVF9TSCgwKSB8IENPTE9SU1BBQ0VfU0goX2Ntc0xDTVNjb2xvclNwYWNlKHYgLT5FeGl0Q29sb3JTcGFjZSkpCisgICAgICAgIHwgQllURVNfU0goMikgfCBDSEFOTkVMU19TSChjbXNDaGFubmVsc09mKHYgLT5FeGl0Q29sb3JTcGFjZSkpKTsKKworICAgIC8vIEFwcGx5IHRoZSB0cmFuc2ZvciB0byBjb2xvcmFudHMuCisgICAgZm9yIChpPTA7IGkgPCBuQ29sb3JzOyBpKyspIHsKKyAgICAgICAgY21zRG9UcmFuc2Zvcm0oeGZvcm0sICZpLCBuYzIgLT5MaXN0W2ldLkRldmljZUNvbG9yYW50LCAxKTsKKyAgICB9CisKKyAgICBpZiAoIWNtc1dyaXRlVGFnKGhJQ0MsIGNtc1NpZ05hbWVkQ29sb3IyVGFnLCAodm9pZCopIG5jMikpIGdvdG8gRXJyb3I7CisgICAgY21zRnJlZU5hbWVkQ29sb3JMaXN0KG5jMik7CisKKyAgICByZXR1cm4gaElDQzsKKworRXJyb3I6CisgICAgaWYgKGhJQ0MgIT0gTlVMTCkgY21zQ2xvc2VQcm9maWxlKGhJQ0MpOworICAgIHJldHVybiBOVUxMOworfQorCisKKy8vIFRoaXMgc3RydWN0dXJlIGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIE1QVSBjYW4gYmUgc3RvcmVkIG9uIGEgcHJvZmlsZSBiYXNlZCBvbiB0aGUgdmVyc2lvbgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY21zQm9vbCAgICAgICAgICAgICAgSXNWNDsgICAgICAgICAgICAgLy8gSXMgYSBWNCB0YWc/CisgICAgY21zVGFnU2lnbmF0dXJlICAgICAgUmVxdWlyZWRUYWc7ICAgICAgLy8gU2V0IHRvIDAgZm9yIGJvdGggdHlwZXMKKyAgICBjbXNUYWdUeXBlU2lnbmF0dXJlICBMdXRUeXBlOyAgICAgICAgICAvLyBUaGUgTFVUIHR5cGUKKyAgICBpbnQgICAgICAgICAgICAgICAgICBuVHlwZXM7ICAgICAgICAgICAvLyBOdW1iZXIgb2YgdHlwZXMgKHVwIHRvIDUpCisgICAgY21zU3RhZ2VTaWduYXR1cmUgICAgTXBlVHlwZXNbNV07ICAgICAgLy8gNSBpcyB0aGUgbWF4aW11bSBudW1iZXIKKworfSBjbXNBbGxvd2VkTFVUOworCitzdGF0aWMgY29uc3QgY21zQWxsb3dlZExVVCBBbGxvd2VkTFVUVHlwZXNbXSA9IHsKKworICAgIHsgRkFMU0UsIDAsICAgICAgICAgICAgICBjbXNTaWdMdXQxNlR5cGUsICAgIDQsICB7IGNtc1NpZ01hdHJpeEVsZW1UeXBlLCAgIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsIGNtc1NpZ0NMdXRFbGVtVHlwZSwgY21zU2lnQ3VydmVTZXRFbGVtVHlwZX19LAorICAgIHsgRkFMU0UsIDAsICAgICAgICAgICAgICBjbXNTaWdMdXQxNlR5cGUsICAgIDMsICB7IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsIGNtc1NpZ0NMdXRFbGVtVHlwZSwgY21zU2lnQ3VydmVTZXRFbGVtVHlwZX19LAorICAgIHsgRkFMU0UsIDAsICAgICAgICAgICAgICBjbXNTaWdMdXQxNlR5cGUsICAgIDIsICB7IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsIGNtc1NpZ0NMdXRFbGVtVHlwZX19LAorICAgIHsgVFJVRSAsIDAsICAgICAgICAgICAgICBjbXNTaWdMdXRBdG9CVHlwZSwgIDEsICB7IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUgfX0sCisgICAgeyBUUlVFICwgY21zU2lnQVRvQjBUYWcsIGNtc1NpZ0x1dEF0b0JUeXBlLCAgMywgIHsgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgY21zU2lnTWF0cml4RWxlbVR5cGUsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUgfSB9LAorICAgIHsgVFJVRSAsIGNtc1NpZ0FUb0IwVGFnLCBjbXNTaWdMdXRBdG9CVHlwZSwgIDMsICB7IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsIGNtc1NpZ0NMdXRFbGVtVHlwZSwgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSAgIH0gfSwKKyAgICB7IFRSVUUgLCBjbXNTaWdBVG9CMFRhZywgY21zU2lnTHV0QXRvQlR5cGUsICA1LCAgeyBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCBjbXNTaWdDTHV0RWxlbVR5cGUsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsIGNtc1NpZ01hdHJpeEVsZW1UeXBlLCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlIH19LAorICAgIHsgVFJVRSAsIGNtc1NpZ0JUb0EwVGFnLCBjbXNTaWdMdXRCdG9BVHlwZSwgIDEsICB7IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUgfX0sCisgICAgeyBUUlVFICwgY21zU2lnQlRvQTBUYWcsIGNtc1NpZ0x1dEJ0b0FUeXBlLCAgMywgIHsgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgY21zU2lnTWF0cml4RWxlbVR5cGUsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUgfX0sCisgICAgeyBUUlVFICwgY21zU2lnQlRvQTBUYWcsIGNtc1NpZ0x1dEJ0b0FUeXBlLCAgMywgIHsgY21zU2lnQ3VydmVTZXRFbGVtVHlwZSwgY21zU2lnQ0x1dEVsZW1UeXBlLCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlIH19LAorICAgIHsgVFJVRSAsIGNtc1NpZ0JUb0EwVGFnLCBjbXNTaWdMdXRCdG9BVHlwZSwgIDUsICB7IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUsIGNtc1NpZ01hdHJpeEVsZW1UeXBlLCBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlLCBjbXNTaWdDTHV0RWxlbVR5cGUsIGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUgfX0KK307CisKKyNkZWZpbmUgU0laRV9PRl9BTExPV0VEX0xVVCAoc2l6ZW9mKEFsbG93ZWRMVVRUeXBlcykvc2l6ZW9mKGNtc0FsbG93ZWRMVVQpKQorCisvLyBDaGVjayBhIHNpbmdsZSBlbnRyeQorc3RhdGljCitjbXNCb29sIENoZWNrT25lKGNvbnN0IGNtc0FsbG93ZWRMVVQqIFRhYiwgY29uc3QgY21zUGlwZWxpbmUqIEx1dCkKK3sKKyAgICBjbXNTdGFnZSogbXBlOworICAgIGludCBuOworCisgICAgZm9yIChuPTAsIG1wZSA9IEx1dCAtPkVsZW1lbnRzOyBtcGUgIT0gTlVMTDsgbXBlID0gbXBlIC0+TmV4dCwgbisrKSB7CisKKyAgICAgICAgaWYgKG4gPiBUYWIgLT5uVHlwZXMpIHJldHVybiBGQUxTRTsKKyAgICAgICAgaWYgKGNtc1N0YWdlVHlwZShtcGUpICE9IFRhYiAtPk1wZVR5cGVzW25dKSByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIChuID09IFRhYiAtPm5UeXBlcyk7Cit9CisKKworc3RhdGljCitjb25zdCBjbXNBbGxvd2VkTFVUKiBGaW5kQ29tYmluYXRpb24oY29uc3QgY21zUGlwZWxpbmUqIEx1dCwgY21zQm9vbCBJc1Y0LCBjbXNUYWdTaWduYXR1cmUgRGVzdGluYXRpb25UYWcpCit7CisgICAgY21zVUludDMyTnVtYmVyIG47CisKKyAgICBmb3IgKG49MDsgbiA8IFNJWkVfT0ZfQUxMT1dFRF9MVVQ7IG4rKykgeworCisgICAgICAgIGNvbnN0IGNtc0FsbG93ZWRMVVQqIFRhYiA9IEFsbG93ZWRMVVRUeXBlcyArIG47CisKKyAgICAgICAgaWYgKElzVjQgXiBUYWIgLT4gSXNWNCkgY29udGludWU7CisgICAgICAgIGlmICgoVGFiIC0+UmVxdWlyZWRUYWcgIT0gMCkgJiYgKFRhYiAtPlJlcXVpcmVkVGFnICE9IERlc3RpbmF0aW9uVGFnKSkgY29udGludWU7CisKKyAgICAgICAgaWYgKENoZWNrT25lKFRhYiwgTHV0KSkgcmV0dXJuIFRhYjsKKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworCisvLyBEb2VzIGNvbnZlcnQgYSB0cmFuc2Zvcm0gaW50byBhIGRldmljZSBsaW5rIHByb2ZpbGUKK2Ntc0hQUk9GSUxFIENNU0VYUE9SVCBjbXNUcmFuc2Zvcm0yRGV2aWNlTGluayhjbXNIVFJBTlNGT1JNIGhUcmFuc2Zvcm0sIGNtc0Zsb2F0NjROdW1iZXIgVmVyc2lvbiwgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisgICAgY21zSFBST0ZJTEUgaFByb2ZpbGUgPSBOVUxMOworICAgIGNtc1VJbnQzMk51bWJlciBGcm1JbiwgRnJtT3V0LCBDaGFuc0luLCBDaGFuc091dDsKKyAgICBjbXNVSW50MzJOdW1iZXIgQ29sb3JTcGFjZUJpdHNJbiwgQ29sb3JTcGFjZUJpdHNPdXQ7CisgICAgX2Ntc1RSQU5TRk9STSogeGZvcm0gPSAoX2Ntc1RSQU5TRk9STSopIGhUcmFuc2Zvcm07CisgICAgY21zUGlwZWxpbmUqIExVVCA9IE5VTEw7CisgICAgY21zU3RhZ2UqIG1wZTsKKyAgICBjbXNDb250ZXh0IENvbnRleHRJRCA9IGNtc0dldFRyYW5zZm9ybUNvbnRleHRJRChoVHJhbnNmb3JtKTsKKyAgICBjb25zdCBjbXNBbGxvd2VkTFVUKiBBbGxvd2VkTFVUOworICAgIGNtc1RhZ1NpZ25hdHVyZSBEZXN0aW5hdGlvblRhZzsKKyAgICBjbXNQcm9maWxlQ2xhc3NTaWduYXR1cmUgZGV2aWNlQ2xhc3M7IAorCisgICAgX2Ntc0Fzc2VydChoVHJhbnNmb3JtICE9IE5VTEwpOworCisgICAgLy8gR2V0IHRoZSBmaXJzdCBtcGUgdG8gY2hlY2sgZm9yIG5hbWVkIGNvbG9yCisgICAgbXBlID0gY21zUGlwZWxpbmVHZXRQdHJUb0ZpcnN0U3RhZ2UoeGZvcm0gLT5MdXQpOworCisgICAgLy8gQ2hlY2sgaWYgaXMgYSBuYW1lZCBjb2xvciB0cmFuc2Zvcm0KKyAgICBpZiAobXBlICE9IE5VTEwpIHsKKworICAgICAgICBpZiAoY21zU3RhZ2VUeXBlKG1wZSkgPT0gY21zU2lnTmFtZWRDb2xvckVsZW1UeXBlKSB7CisgICAgICAgICAgICByZXR1cm4gQ3JlYXRlTmFtZWRDb2xvckRldmljZWxpbmsoaFRyYW5zZm9ybSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGaXJzdCB0aGluZyB0byBkbyBpcyB0byBnZXQgYSBjb3B5IG9mIHRoZSB0cmFuc2Zvcm1hdGlvbgorICAgIExVVCA9IGNtc1BpcGVsaW5lRHVwKHhmb3JtIC0+THV0KTsKKyAgICBpZiAoTFVUID09IE5VTEwpIHJldHVybiBOVUxMOworCisgICAgLy8gVGltZSB0byBmaXggdGhlIExhYjIvTGFiNCBpc3N1ZS4KKyAgICBpZiAoKHhmb3JtIC0+RW50cnlDb2xvclNwYWNlID09IGNtc1NpZ0xhYkRhdGEpICYmIChWZXJzaW9uIDwgNC4wKSkgeworCisgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMVVQsIGNtc0FUX0JFR0lOLCBfY21zU3RhZ2VBbGxvY0xhYlYyVG9WNGN1cnZlcyhDb250ZXh0SUQpKSkKKyAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgLy8gT24gdGhlIG91dHB1dCBzaWRlIHRvbworICAgIGlmICgoeGZvcm0gLT5FeGl0Q29sb3JTcGFjZSkgPT0gY21zU2lnTGFiRGF0YSAmJiAoVmVyc2lvbiA8IDQuMCkpIHsKKworICAgICAgICBpZiAoIWNtc1BpcGVsaW5lSW5zZXJ0U3RhZ2UoTFVULCBjbXNBVF9FTkQsIF9jbXNTdGFnZUFsbG9jTGFiVjRUb1YyKENvbnRleHRJRCkpKQorICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICB9CisKKworICAgIGhQcm9maWxlID0gY21zQ3JlYXRlUHJvZmlsZVBsYWNlaG9sZGVyKENvbnRleHRJRCk7CisgICAgaWYgKCFoUHJvZmlsZSkgZ290byBFcnJvcjsgICAgICAgICAgICAgICAgICAgIC8vIGNhbid0IGFsbG9jYXRlCisKKyAgICBjbXNTZXRQcm9maWxlVmVyc2lvbihoUHJvZmlsZSwgVmVyc2lvbik7CisKKyAgICBGaXhDb2xvclNwYWNlcyhoUHJvZmlsZSwgeGZvcm0gLT4gRW50cnlDb2xvclNwYWNlLCB4Zm9ybSAtPiBFeGl0Q29sb3JTcGFjZSwgZHdGbGFncyk7CisKKyAgICAvLyBPcHRpbWl6ZSB0aGUgTFVUIGFuZCBwcmVjYWxjdWxhdGUgYSBkZXZpY2VsaW5rCisKKyAgICBDaGFuc0luICA9IGNtc0NoYW5uZWxzT2YoeGZvcm0gLT4gRW50cnlDb2xvclNwYWNlKTsKKyAgICBDaGFuc091dCA9IGNtc0NoYW5uZWxzT2YoeGZvcm0gLT4gRXhpdENvbG9yU3BhY2UpOworCisgICAgQ29sb3JTcGFjZUJpdHNJbiAgPSBfY21zTENNU2NvbG9yU3BhY2UoeGZvcm0gLT4gRW50cnlDb2xvclNwYWNlKTsKKyAgICBDb2xvclNwYWNlQml0c091dCA9IF9jbXNMQ01TY29sb3JTcGFjZSh4Zm9ybSAtPiBFeGl0Q29sb3JTcGFjZSk7CisKKyAgICBGcm1JbiAgPSBDT0xPUlNQQUNFX1NIKENvbG9yU3BhY2VCaXRzSW4pIHwgQ0hBTk5FTFNfU0goQ2hhbnNJbil8QllURVNfU0goMik7CisgICAgRnJtT3V0ID0gQ09MT1JTUEFDRV9TSChDb2xvclNwYWNlQml0c091dCkgfCBDSEFOTkVMU19TSChDaGFuc091dCl8QllURVNfU0goMik7CisKKyAgICBkZXZpY2VDbGFzcyA9IGNtc0dldERldmljZUNsYXNzKGhQcm9maWxlKTsKKworICAgICBpZiAoZGV2aWNlQ2xhc3MgPT0gY21zU2lnT3V0cHV0Q2xhc3MpCisgICAgICAgICBEZXN0aW5hdGlvblRhZyA9IGNtc1NpZ0JUb0EwVGFnOworICAgICBlbHNlCisgICAgICAgICBEZXN0aW5hdGlvblRhZyA9IGNtc1NpZ0FUb0IwVGFnOworCisgICAgLy8gQ2hlY2sgaWYgdGhlIHByb2ZpbGUvdmVyc2lvbiBjYW4gc3RvcmUgdGhlIHJlc3VsdAorICAgIGlmIChkd0ZsYWdzICYgY21zRkxBR1NfRk9SQ0VfQ0xVVCkKKyAgICAgICAgQWxsb3dlZExVVCA9IE5VTEw7CisgICAgZWxzZQorICAgICAgICBBbGxvd2VkTFVUID0gRmluZENvbWJpbmF0aW9uKExVVCwgVmVyc2lvbiA+PSA0LjAsIERlc3RpbmF0aW9uVGFnKTsKKworICAgIGlmIChBbGxvd2VkTFVUID09IE5VTEwpIHsKKworICAgICAgICAvLyBUcnkgdG8gb3B0aW1pemUKKyAgICAgICAgX2Ntc09wdGltaXplUGlwZWxpbmUoQ29udGV4dElELCAmTFVULCB4Zm9ybSAtPlJlbmRlcmluZ0ludGVudCwgJkZybUluLCAmRnJtT3V0LCAmZHdGbGFncyk7CisgICAgICAgIEFsbG93ZWRMVVQgPSBGaW5kQ29tYmluYXRpb24oTFVULCBWZXJzaW9uID49IDQuMCwgRGVzdGluYXRpb25UYWcpOworCisgICAgfQorCisgICAgLy8gSWYgbm8gd2F5LCB0aGVuIGZvcmNlIENMVVQgdGhhdCBmb3Igc3VyZSBjYW4gYmUgd3JpdHRlbgorICAgIGlmIChBbGxvd2VkTFVUID09IE5VTEwpIHsKKworICAgICAgICBkd0ZsYWdzIHw9IGNtc0ZMQUdTX0ZPUkNFX0NMVVQ7CisgICAgICAgIF9jbXNPcHRpbWl6ZVBpcGVsaW5lKENvbnRleHRJRCwgJkxVVCwgeGZvcm0gLT5SZW5kZXJpbmdJbnRlbnQsICZGcm1JbiwgJkZybU91dCwgJmR3RmxhZ3MpOworCisgICAgICAgIC8vIFB1dCBpZGVudGl0eSBjdXJ2ZXMgaWYgbmVlZGVkCisgICAgICAgIGlmIChjbXNQaXBlbGluZUdldFB0clRvRmlyc3RTdGFnZShMVVQpIC0+VHlwZSAhPSBjbXNTaWdDdXJ2ZVNldEVsZW1UeXBlKQorICAgICAgICAgICAgIGlmICghY21zUGlwZWxpbmVJbnNlcnRTdGFnZShMVVQsIGNtc0FUX0JFR0lOLCBfY21zU3RhZ2VBbGxvY0lkZW50aXR5Q3VydmVzKENvbnRleHRJRCwgQ2hhbnNJbikpKQorICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgIGlmIChjbXNQaXBlbGluZUdldFB0clRvTGFzdFN0YWdlKExVVCkgLT5UeXBlICE9IGNtc1NpZ0N1cnZlU2V0RWxlbVR5cGUpCisgICAgICAgICAgICAgaWYgKCFjbXNQaXBlbGluZUluc2VydFN0YWdlKExVVCwgY21zQVRfRU5ELCAgIF9jbXNTdGFnZUFsbG9jSWRlbnRpdHlDdXJ2ZXMoQ29udGV4dElELCBDaGFuc091dCkpKQorICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworCisgICAgICAgIEFsbG93ZWRMVVQgPSBGaW5kQ29tYmluYXRpb24oTFVULCBWZXJzaW9uID49IDQuMCwgRGVzdGluYXRpb25UYWcpOworICAgIH0KKworICAgIC8vIFNvbWV0aGluZ3MgaXMgd3JvbmcuLi4KKyAgICBpZiAoQWxsb3dlZExVVCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisKKyAgICBpZiAoZHdGbGFncyAmIGNtc0ZMQUdTXzhCSVRTX0RFVklDRUxJTkspCisgICAgICAgICAgICAgICAgICAgICBjbXNQaXBlbGluZVNldFNhdmVBczhiaXRzRmxhZyhMVVQsIFRSVUUpOworCisgICAgLy8gVGFnIHByb2ZpbGUgd2l0aCBpbmZvcm1hdGlvbgorICAgIGlmICghU2V0VGV4dFRhZ3MoaFByb2ZpbGUsIEwiZGV2aWNlbGluayIpKSBnb3RvIEVycm9yOworCisgICAgLy8gU3RvcmUgcmVzdWx0CisgICAgaWYgKCFjbXNXcml0ZVRhZyhoUHJvZmlsZSwgRGVzdGluYXRpb25UYWcsIExVVCkpIGdvdG8gRXJyb3I7CisKKworICAgIGlmICh4Zm9ybSAtPiBJbnB1dENvbG9yYW50ICE9IE5VTEwpIHsKKyAgICAgICAgICAgaWYgKCFjbXNXcml0ZVRhZyhoUHJvZmlsZSwgY21zU2lnQ29sb3JhbnRUYWJsZVRhZywgeGZvcm0tPklucHV0Q29sb3JhbnQpKSBnb3RvIEVycm9yOworICAgIH0KKworICAgIGlmICh4Zm9ybSAtPiBPdXRwdXRDb2xvcmFudCAhPSBOVUxMKSB7CisgICAgICAgICAgIGlmICghY21zV3JpdGVUYWcoaFByb2ZpbGUsIGNtc1NpZ0NvbG9yYW50VGFibGVPdXRUYWcsIHhmb3JtLT5PdXRwdXRDb2xvcmFudCkpIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgaWYgKChkZXZpY2VDbGFzcyA9PSBjbXNTaWdMaW5rQ2xhc3MpICYmICh4Zm9ybSAtPlNlcXVlbmNlICE9IE5VTEwpKSB7CisgICAgICAgIGlmICghX2Ntc1dyaXRlUHJvZmlsZVNlcXVlbmNlKGhQcm9maWxlLCB4Zm9ybSAtPlNlcXVlbmNlKSkgZ290byBFcnJvcjsKKyAgICB9CisKKyAgICAvLyBTZXQgdGhlIHdoaXRlIHBvaW50CisgICAgaWYgKGRldmljZUNsYXNzID09IGNtc1NpZ0lucHV0Q2xhc3MpIHsKKyAgICAgICAgaWYgKCFjbXNXcml0ZVRhZyhoUHJvZmlsZSwgY21zU2lnTWVkaWFXaGl0ZVBvaW50VGFnLCAmeGZvcm0gLT5FbnRyeVdoaXRlUG9pbnQpKSBnb3RvIEVycm9yOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgIGlmICghY21zV3JpdGVUYWcoaFByb2ZpbGUsIGNtc1NpZ01lZGlhV2hpdGVQb2ludFRhZywgJnhmb3JtIC0+RXhpdFdoaXRlUG9pbnQpKSBnb3RvIEVycm9yOworICAgIH0KKworICAKKyAgICAvLyBQZXIgNy4yLjE1IGluIHNwZWMgNC4zCisgICAgY21zU2V0SGVhZGVyUmVuZGVyaW5nSW50ZW50KGhQcm9maWxlLCB4Zm9ybSAtPlJlbmRlcmluZ0ludGVudCk7CisKKyAgICBjbXNQaXBlbGluZUZyZWUoTFVUKTsKKyAgICByZXR1cm4gaFByb2ZpbGU7CisKK0Vycm9yOgorICAgIGlmIChMVVQgIT0gTlVMTCkgY21zUGlwZWxpbmVGcmVlKExVVCk7CisgICAgY21zQ2xvc2VQcm9maWxlKGhQcm9maWxlKTsKKyAgICByZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXN3dHBudC5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3d0cG50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAzZmRkNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvbGNtczItMi42L3NyYy9jbXN3dHBudC5jCkBAIC0wLDAgKzEsMzQ5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCBNYXJ0aSBNYXJpYSBTYWd1ZXIKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlCisvLyBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTworLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKy8vIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKy8vIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisKKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIgorCisKKy8vIEQ1MCAtIFdpZGVseSB1c2VkCitjb25zdCBjbXNDSUVYWVoqIENNU0VYUE9SVCBjbXNENTBfWFlaKHZvaWQpCit7CisgICAgc3RhdGljIGNtc0NJRVhZWiBENTBYWVogPSB7Y21zRDUwWCwgY21zRDUwWSwgY21zRDUwWn07CisKKyAgICByZXR1cm4gJkQ1MFhZWjsKK30KKworY29uc3QgY21zQ0lFeHlZKiBDTVNFWFBPUlQgY21zRDUwX3h5WSh2b2lkKQoreworICAgIHN0YXRpYyBjbXNDSUV4eVkgRDUweHlZOworCisgICAgY21zWFlaMnh5WSgmRDUweHlZLCBjbXNENTBfWFlaKCkpOworCisgICAgcmV0dXJuICZENTB4eVk7Cit9CisKKy8vIE9idGFpbnMgV2hpdGVQb2ludCBmcm9tIFRlbXBlcmF0dXJlCitjbXNCb29sICBDTVNFWFBPUlQgY21zV2hpdGVQb2ludEZyb21UZW1wKGNtc0NJRXh5WSogV2hpdGVQb2ludCwgY21zRmxvYXQ2NE51bWJlciBUZW1wSykKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHgsIHk7CisgICAgY21zRmxvYXQ2NE51bWJlciBULCBUMiwgVDM7CisgICAgLy8gY21zRmxvYXQ2NE51bWJlciBNMSwgTTI7CisKKyAgICBfY21zQXNzZXJ0KFdoaXRlUG9pbnQgIT0gTlVMTCk7CisKKyAgICBUID0gVGVtcEs7CisgICAgVDIgPSBUKlQ7ICAgICAgICAgICAgLy8gU3F1YXJlCisgICAgVDMgPSBUMipUOyAgICAgICAgICAgLy8gQ3ViZQorCisgICAgLy8gRm9yIGNvcnJlbGF0ZWQgY29sb3IgdGVtcGVyYXR1cmUgKFQpIGJldHdlZW4gNDAwMEsgYW5kIDcwMDBLOgorCisgICAgaWYgKFQgPj0gNDAwMC4gJiYgVCA8PSA3MDAwLikKKyAgICB7CisgICAgICAgIHggPSAtNC42MDcwKigxRTkvVDMpICsgMi45Njc4KigxRTYvVDIpICsgMC4wOTkxMSooMUUzL1QpICsgMC4yNDQwNjM7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgLy8gb3IgZm9yIGNvcnJlbGF0ZWQgY29sb3IgdGVtcGVyYXR1cmUgKFQpIGJldHdlZW4gNzAwMEsgYW5kIDI1MDAwSzoKKworICAgICAgICBpZiAoVCA+IDcwMDAuMCAmJiBUIDw9IDI1MDAwLjApCisgICAgICAgIHsKKyAgICAgICAgICAgIHggPSAtMi4wMDY0KigxRTkvVDMpICsgMS45MDE4KigxRTYvVDIpICsgMC4yNDc0OCooMUUzL1QpICsgMC4yMzcwNDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjbXNTaWduYWxFcnJvcigwLCBjbXNFUlJPUl9SQU5HRSwgImNtc1doaXRlUG9pbnRGcm9tVGVtcDogaW52YWxpZCB0ZW1wIik7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICAvLyBPYnRhaW4geSh4KQorCisgICAgICAgIHkgPSAtMy4wMDAqKHgqeCkgKyAyLjg3MCp4IC0gMC4yNzU7CisKKyAgICAgICAgLy8gd2F2ZSBmYWN0b3JzIChub3QgdXNlZCwgYnV0IGhlcmUgZm9yIGZ1dHVyZXMgZXh0ZW5zaW9ucykKKworICAgICAgICAvLyBNMSA9ICgtMS4zNTE1IC0gMS43NzAzKnggKyA1LjkxMTQgKnkpLygwLjAyNDEgKyAwLjI1NjIqeCAtIDAuNzM0MSp5KTsKKyAgICAgICAgLy8gTTIgPSAoMC4wMzAwIC0gMzEuNDQyNCp4ICsgMzAuMDcxNyp5KS8oMC4wMjQxICsgMC4yNTYyKnggLSAwLjczNDEqeSk7CisKKyAgICAgICAgV2hpdGVQb2ludCAtPiB4ID0geDsKKyAgICAgICAgV2hpdGVQb2ludCAtPiB5ID0geTsKKyAgICAgICAgV2hpdGVQb2ludCAtPiBZID0gMS4wOworCisgICAgICAgIHJldHVybiBUUlVFOworfQorCisKKwordHlwZWRlZiBzdHJ1Y3QgeworCisgICAgY21zRmxvYXQ2NE51bWJlciBtaXJlazsgIC8vIHRlbXAgKGluIG1pY3JvcmVjaXByb2NhbCBrZWx2aW4pCisgICAgY21zRmxvYXQ2NE51bWJlciB1dDsgICAgIC8vIHUgY29vcmQgb2YgaW50ZXJzZWN0aW9uIHcvIGJsYWNrYm9keSBsb2N1cworICAgIGNtc0Zsb2F0NjROdW1iZXIgdnQ7ICAgICAvLyB2IGNvb3JkIG9mIGludGVyc2VjdGlvbiB3LyBibGFja2JvZHkgbG9jdXMKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHR0OyAgICAgLy8gc2xvcGUgb2YgSVNPVEVNUEVSQVRVUkUuIGxpbmUKKworICAgIH0gSVNPVEVNUEVSQVRVUkU7CisKK3N0YXRpYyBJU09URU1QRVJBVFVSRSBpc290ZW1wZGF0YVtdID0geworLy8gIHtNaXJlaywgVXQsICAgICAgIFZ0LCAgICAgIFR0ICAgICAgfQorICAgIHswLCAgICAgMC4xODAwNiwgIDAuMjYzNTIsICAtMC4yNDM0MX0sCisgICAgezEwLCAgICAwLjE4MDY2LCAgMC4yNjU4OSwgIC0wLjI1NDc5fSwKKyAgICB7MjAsICAgIDAuMTgxMzMsICAwLjI2ODQ2LCAgLTAuMjY4NzZ9LAorICAgIHszMCwgICAgMC4xODIwOCwgIDAuMjcxMTksICAtMC4yODUzOX0sCisgICAgezQwLCAgICAwLjE4MjkzLCAgMC4yNzQwNywgIC0wLjMwNDcwfSwKKyAgICB7NTAsICAgIDAuMTgzODgsICAwLjI3NzA5LCAgLTAuMzI2NzV9LAorICAgIHs2MCwgICAgMC4xODQ5NCwgIDAuMjgwMjEsICAtMC4zNTE1Nn0sCisgICAgezcwLCAgICAwLjE4NjExLCAgMC4yODM0MiwgIC0wLjM3OTE1fSwKKyAgICB7ODAsICAgIDAuMTg3NDAsICAwLjI4NjY4LCAgLTAuNDA5NTV9LAorICAgIHs5MCwgICAgMC4xODg4MCwgIDAuMjg5OTcsICAtMC40NDI3OH0sCisgICAgezEwMCwgICAwLjE5MDMyLCAgMC4yOTMyNiwgIC0wLjQ3ODg4fSwKKyAgICB7MTI1LCAgIDAuMTk0NjIsICAwLjMwMTQxLCAgLTAuNTgyMDR9LAorICAgIHsxNTAsICAgMC4xOTk2MiwgIDAuMzA5MjEsICAtMC43MDQ3MX0sCisgICAgezE3NSwgICAwLjIwNTI1LCAgMC4zMTY0NywgIC0wLjg0OTAxfSwKKyAgICB7MjAwLCAgIDAuMjExNDIsICAwLjMyMzEyLCAgLTEuMDE4MiB9LAorICAgIHsyMjUsICAgMC4yMTgwNywgIDAuMzI5MDksICAtMS4yMTY4IH0sCisgICAgezI1MCwgICAwLjIyNTExLCAgMC4zMzQzOSwgIC0xLjQ1MTIgfSwKKyAgICB7Mjc1LCAgIDAuMjMyNDcsICAwLjMzOTA0LCAgLTEuNzI5OCB9LAorICAgIHszMDAsICAgMC4yNDAxMCwgIDAuMzQzMDgsICAtMi4wNjM3IH0sCisgICAgezMyNSwgICAwLjI0NzAyLCAgMC4zNDY1NSwgIC0yLjQ2ODEgfSwKKyAgICB7MzUwLCAgIDAuMjU1OTEsICAwLjM0OTUxLCAgLTIuOTY0MSB9LAorICAgIHszNzUsICAgMC4yNjQwMCwgIDAuMzUyMDAsICAtMy41ODE0IH0sCisgICAgezQwMCwgICAwLjI3MjE4LCAgMC4zNTQwNywgIC00LjM2MzMgfSwKKyAgICB7NDI1LCAgIDAuMjgwMzksICAwLjM1NTc3LCAgLTUuMzc2MiB9LAorICAgIHs0NTAsICAgMC4yODg2MywgIDAuMzU3MTQsICAtNi43MjYyIH0sCisgICAgezQ3NSwgICAwLjI5Njg1LCAgMC4zNTgyMywgIC04LjU5NTUgfSwKKyAgICB7NTAwLCAgIDAuMzA1MDUsICAwLjM1OTA3LCAgLTExLjMyNCB9LAorICAgIHs1MjUsICAgMC4zMTMyMCwgIDAuMzU5NjgsICAtMTUuNjI4IH0sCisgICAgezU1MCwgICAwLjMyMTI5LCAgMC4zNjAxMSwgIC0yMy4zMjUgfSwKKyAgICB7NTc1LCAgIDAuMzI5MzEsICAwLjM2MDM4LCAgLTQwLjc3MCB9LAorICAgIHs2MDAsICAgMC4zMzcyNCwgIDAuMzYwNTEsICAtMTE2LjQ1ICB9Cit9OworCisjZGVmaW5lIE5JU08gc2l6ZW9mKGlzb3RlbXBkYXRhKS9zaXplb2YoSVNPVEVNUEVSQVRVUkUpCisKKworLy8gUm9iZXJ0c29uJ3MgbWV0aG9kCitjbXNCb29sICBDTVNFWFBPUlQgY21zVGVtcEZyb21XaGl0ZVBvaW50KGNtc0Zsb2F0NjROdW1iZXIqIFRlbXBLLCBjb25zdCBjbXNDSUV4eVkqIFdoaXRlUG9pbnQpCit7CisgICAgY21zVUludDMyTnVtYmVyIGo7CisgICAgY21zRmxvYXQ2NE51bWJlciB1cyx2czsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHVqLHZqLHRqLGRpLGRqLG1pLG1qOworICAgIGNtc0Zsb2F0NjROdW1iZXIgeHMsIHlzOworCisgICAgX2Ntc0Fzc2VydChXaGl0ZVBvaW50ICE9IE5VTEwpOworICAgIF9jbXNBc3NlcnQoVGVtcEsgIT0gTlVMTCk7CisKKyAgICBkaSA9IG1pID0gMDsKKyAgICB4cyA9IFdoaXRlUG9pbnQgLT4geDsKKyAgICB5cyA9IFdoaXRlUG9pbnQgLT4geTsKKworICAgIC8vIGNvbnZlcnQgKHgseSkgdG8gQ0lFIDE5NjAgKHUsV2hpdGVQb2ludCkKKworICAgIHVzID0gKDIqeHMpIC8gKC14cyArIDYqeXMgKyAxLjUpOworICAgIHZzID0gKDMqeXMpIC8gKC14cyArIDYqeXMgKyAxLjUpOworCisKKyAgICBmb3IgKGo9MDsgaiA8IE5JU087IGorKykgeworCisgICAgICAgIHVqID0gaXNvdGVtcGRhdGFbal0udXQ7CisgICAgICAgIHZqID0gaXNvdGVtcGRhdGFbal0udnQ7CisgICAgICAgIHRqID0gaXNvdGVtcGRhdGFbal0udHQ7CisgICAgICAgIG1qID0gaXNvdGVtcGRhdGFbal0ubWlyZWs7CisKKyAgICAgICAgZGogPSAoKHZzIC0gdmopIC0gdGogKiAodXMgLSB1aikpIC8gc3FydCgxLjAgKyB0aiAqIHRqKTsKKworICAgICAgICBpZiAoKGogIT0gMCkgJiYgKGRpL2RqIDwgMC4wKSkgeworCisgICAgICAgICAgICAvLyBGb3VuZCBhIG1hdGNoCisgICAgICAgICAgICAqVGVtcEsgPSAxMDAwMDAwLjAgLyAobWkgKyAoZGkgLyAoZGkgLSBkaikpICogKG1qIC0gbWkpKTsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgZGkgPSBkajsKKyAgICAgICAgbWkgPSBtajsKKyAgICB9CisKKyAgICAvLyBOb3QgZm91bmQKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKworLy8gQ29tcHV0ZSBjaHJvbWF0aWMgYWRhcHRhdGlvbiBtYXRyaXggdXNpbmcgQ2hhZCBhcyBjb25lIG1hdHJpeAorCitzdGF0aWMKK2Ntc0Jvb2wgQ29tcHV0ZUNocm9tYXRpY0FkYXB0YXRpb24oY21zTUFUMyogQ29udmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zQ0lFWFlaKiBTb3VyY2VXaGl0ZVBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNDSUVYWVoqIERlc3RXaGl0ZVBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNNQVQzKiBDaGFkKQorCit7CisKKyAgICBjbXNNQVQzIENoYWRfSW52OworICAgIGNtc1ZFQzMgQ29uZVNvdXJjZVhZWiwgQ29uZVNvdXJjZVJHQjsKKyAgICBjbXNWRUMzIENvbmVEZXN0WFlaLCBDb25lRGVzdFJHQjsKKyAgICBjbXNNQVQzIENvbmUsIFRtcDsKKworCisgICAgVG1wID0gKkNoYWQ7CisgICAgaWYgKCFfY21zTUFUM2ludmVyc2UoJlRtcCwgJkNoYWRfSW52KSkgcmV0dXJuIEZBTFNFOworCisgICAgX2Ntc1ZFQzNpbml0KCZDb25lU291cmNlWFlaLCBTb3VyY2VXaGl0ZVBvaW50IC0+IFgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZVdoaXRlUG9pbnQgLT4gWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlV2hpdGVQb2ludCAtPiBaKTsKKworICAgIF9jbXNWRUMzaW5pdCgmQ29uZURlc3RYWVosICAgRGVzdFdoaXRlUG9pbnQgLT4gWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzdFdoaXRlUG9pbnQgLT4gWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzdFdoaXRlUG9pbnQgLT4gWik7CisKKyAgICBfY21zTUFUM2V2YWwoJkNvbmVTb3VyY2VSR0IsIENoYWQsICZDb25lU291cmNlWFlaKTsKKyAgICBfY21zTUFUM2V2YWwoJkNvbmVEZXN0UkdCLCAgIENoYWQsICZDb25lRGVzdFhZWik7CisKKyAgICAvLyBCdWlsZCBtYXRyaXgKKyAgICBfY21zVkVDM2luaXQoJkNvbmUudlswXSwgQ29uZURlc3RSR0IublswXS9Db25lU291cmNlUkdCLm5bMF0sICAgIDAuMCwgIDAuMCk7CisgICAgX2Ntc1ZFQzNpbml0KCZDb25lLnZbMV0sIDAuMCwgICBDb25lRGVzdFJHQi5uWzFdL0NvbmVTb3VyY2VSR0IublsxXSwgICAwLjApOworICAgIF9jbXNWRUMzaW5pdCgmQ29uZS52WzJdLCAwLjAsICAgMC4wLCAgIENvbmVEZXN0UkdCLm5bMl0vQ29uZVNvdXJjZVJHQi5uWzJdKTsKKworCisgICAgLy8gTm9ybWFsaXplCisgICAgX2Ntc01BVDNwZXIoJlRtcCwgJkNvbmUsIENoYWQpOworICAgIF9jbXNNQVQzcGVyKENvbnZlcnNpb24sICZDaGFkX0ludiwgJlRtcCk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworLy8gUmV0dXJucyB0aGUgZmluYWwgY2hybWF0aWMgYWRhcHRhdGlvbiBmcm9tIGlsbHVtaW5hbnQgRnJvbUlsbCB0byBJbGx1bWluYW50IFRvSWxsCisvLyBUaGUgY29uZSBtYXRyaXggY2FuIGJlIHNwZWNpZmllZCBpbiBDb25lTWF0cml4LiBJZiBOVUxMLCBCcmFkZm9yZCBpcyBhc3N1bWVkCitjbXNCb29sICBfY21zQWRhcHRhdGlvbk1hdHJpeChjbXNNQVQzKiByLCBjb25zdCBjbXNNQVQzKiBDb25lTWF0cml4LCBjb25zdCBjbXNDSUVYWVoqIEZyb21JbGwsIGNvbnN0IGNtc0NJRVhZWiogVG9JbGwpCit7CisgICAgY21zTUFUMyBMYW1SaWdnICAgPSB7eyAvLyBCcmFkZm9yZCBtYXRyaXgKKyAgICAgICAge3sgIDAuODk1MSwgIDAuMjY2NCwgLTAuMTYxNCB9fSwKKyAgICAgICAge3sgLTAuNzUwMiwgIDEuNzEzNSwgIDAuMDM2NyB9fSwKKyAgICAgICAge3sgIDAuMDM4OSwgLTAuMDY4NSwgIDEuMDI5NiB9fQorICAgIH19OworCisgICAgaWYgKENvbmVNYXRyaXggPT0gTlVMTCkKKyAgICAgICAgQ29uZU1hdHJpeCA9ICZMYW1SaWdnOworCisgICAgcmV0dXJuIENvbXB1dGVDaHJvbWF0aWNBZGFwdGF0aW9uKHIsIEZyb21JbGwsIFRvSWxsLCBDb25lTWF0cml4KTsKK30KKworLy8gU2FtZSBhcyBhbnRlcmlvciwgYnV0IGFzc3VtaW5nIEQ1MCBkZXN0aW5hdGlvbi4gV2hpdGUgcG9pbnQgaXMgZ2l2ZW4gaW4geHlZCitzdGF0aWMKK2Ntc0Jvb2wgX2Ntc0FkYXB0TWF0cml4VG9ENTAoY21zTUFUMyogciwgY29uc3QgY21zQ0lFeHlZKiBTb3VyY2VXaGl0ZVB0KQoreworICAgIGNtc0NJRVhZWiBEbjsKKyAgICBjbXNNQVQzIEJyYWRmb3JkOworICAgIGNtc01BVDMgVG1wOworCisgICAgY21zeHlZMlhZWigmRG4sIFNvdXJjZVdoaXRlUHQpOworCisgICAgaWYgKCFfY21zQWRhcHRhdGlvbk1hdHJpeCgmQnJhZGZvcmQsIE5VTEwsICZEbiwgY21zRDUwX1hZWigpKSkgcmV0dXJuIEZBTFNFOworCisgICAgVG1wID0gKnI7CisgICAgX2Ntc01BVDNwZXIociwgJkJyYWRmb3JkLCAmVG1wKTsKKworICAgIHJldHVybiBUUlVFOworfQorCisvLyBCdWlsZCBhIFdoaXRlIHBvaW50LCBwcmltYXJ5IGNocm9tYXMgdHJhbnNmZXIgbWF0cml4IGZyb20gUkdCIHRvIENJRSBYWVoKKy8vIFRoaXMgaXMganVzdCBhbiBhcHByb3hpbWF0aW9uLCBJIGFtIG5vdCBoYW5kbGluZyBhbGwgdGhlIG5vbi1saW5lYXIKKy8vIGFzcGVjdHMgb2YgdGhlIFJHQiB0byBYWVogcHJvY2VzcywgYW5kIGFzc3VtbWluZyB0aGF0IHRoZSBnYW1tYSBjb3JyZWN0aW9uCisvLyBoYXMgdHJhbnNpdGl2ZSBwcm9wZXJ0eSBpbiB0aGUgdHJhbmZvcm1hdGlvbiBjaGFpbi4KKy8vCisvLyB0aGUgYWxnaG9yaXRtOgorLy8KKy8vICAgICAgICAgICAgLSBGaXJzdCBJIGJ1aWxkIHRoZSBhYnNvbHV0ZSBjb252ZXJzaW9uIG1hdHJpeCB1c2luZworLy8gICAgICAgICAgICAgIHByaW1hcmllcyBpbiBYWVouIFRoaXMgbWF0cml4IGlzIG5leHQgaW52ZXJ0ZWQKKy8vICAgICAgICAgICAgLSBUaGVuIEkgZXZhbCB0aGUgc291cmNlIHdoaXRlIHBvaW50IGFjcm9zcyB0aGlzIG1hdHJpeAorLy8gICAgICAgICAgICAgIG9idGFpbmluZyB0aGUgY29lZmljaWVudHMgb2YgdGhlIHRyYW5zZm9ybWF0aW9uCisvLyAgICAgICAgICAgIC0gVGhlbiwgSSBhcHBseSB0aGVzZSBjb2VmaWNpZW50cyB0byB0aGUgb3JpZ2luYWwgbWF0cml4CisvLworY21zQm9vbCBfY21zQnVpbGRSR0IyWFladHJhbnNmZXJNYXRyaXgoY21zTUFUMyogciwgY29uc3QgY21zQ0lFeHlZKiBXaGl0ZVB0LCBjb25zdCBjbXNDSUV4eVlUUklQTEUqIFByaW1ycykKK3sKKyAgICBjbXNWRUMzIFdoaXRlUG9pbnQsIENvZWY7CisgICAgY21zTUFUMyBSZXN1bHQsIFByaW1hcmllczsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHhuLCB5bjsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHhyLCB5cjsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHhnLCB5ZzsKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHhiLCB5YjsKKworICAgIHhuID0gV2hpdGVQdCAtPiB4OworICAgIHluID0gV2hpdGVQdCAtPiB5OworICAgIHhyID0gUHJpbXJzIC0+IFJlZC54OworICAgIHlyID0gUHJpbXJzIC0+IFJlZC55OworICAgIHhnID0gUHJpbXJzIC0+IEdyZWVuLng7CisgICAgeWcgPSBQcmltcnMgLT4gR3JlZW4ueTsKKyAgICB4YiA9IFByaW1ycyAtPiBCbHVlLng7CisgICAgeWIgPSBQcmltcnMgLT4gQmx1ZS55OworCisgICAgLy8gQnVpbGQgUHJpbWFyaWVzIG1hdHJpeAorICAgIF9jbXNWRUMzaW5pdCgmUHJpbWFyaWVzLnZbMF0sIHhyLCAgICAgICAgeGcsICAgICAgICAgeGIpOworICAgIF9jbXNWRUMzaW5pdCgmUHJpbWFyaWVzLnZbMV0sIHlyLCAgICAgICAgeWcsICAgICAgICAgeWIpOworICAgIF9jbXNWRUMzaW5pdCgmUHJpbWFyaWVzLnZbMl0sICgxLXhyLXlyKSwgKDEteGcteWcpLCAgKDEteGIteWIpKTsKKworCisgICAgLy8gUmVzdWx0ID0gUHJpbWFyaWVzIF4gKC0xKSBpbnZlcnNlIG1hdHJpeAorICAgIGlmICghX2Ntc01BVDNpbnZlcnNlKCZQcmltYXJpZXMsICZSZXN1bHQpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKworICAgIF9jbXNWRUMzaW5pdCgmV2hpdGVQb2ludCwgeG4veW4sIDEuMCwgKDEuMC14bi15bikveW4pOworCisgICAgLy8gQWNyb3NzIGludmVyc2UgcHJpbWFyaWVzIC4uLgorICAgIF9jbXNNQVQzZXZhbCgmQ29lZiwgJlJlc3VsdCwgJldoaXRlUG9pbnQpOworCisgICAgLy8gR2l2ZSB1cyB0aGUgQ29lZnMsIHRoZW4gSSBidWlsZCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgKKyAgICBfY21zVkVDM2luaXQoJnIgLT4gdlswXSwgQ29lZi5uW1ZYXSp4ciwgICAgICAgICAgQ29lZi5uW1ZZXSp4ZywgICAgICAgICAgQ29lZi5uW1ZaXSp4Yik7CisgICAgX2Ntc1ZFQzNpbml0KCZyIC0+IHZbMV0sIENvZWYubltWWF0qeXIsICAgICAgICAgIENvZWYubltWWV0qeWcsICAgICAgICAgIENvZWYubltWWl0qeWIpOworICAgIF9jbXNWRUMzaW5pdCgmciAtPiB2WzJdLCBDb2VmLm5bVlhdKigxLjAteHIteXIpLCBDb2VmLm5bVlldKigxLjAteGcteWcpLCBDb2VmLm5bVlpdKigxLjAteGIteWIpKTsKKworCisgICAgcmV0dXJuIF9jbXNBZGFwdE1hdHJpeFRvRDUwKHIsIFdoaXRlUHQpOworCit9CisKKworLy8gQWRhcHRzIGEgY29sb3IgdG8gYSBnaXZlbiBpbGx1bWluYW50LiBPcmlnaW5hbCBjb2xvciBpcyBleHBlY3RlZCB0byBoYXZlCisvLyBhIFNvdXJjZVdoaXRlUHQgd2hpdGUgcG9pbnQuCitjbXNCb29sIENNU0VYUE9SVCBjbXNBZGFwdFRvSWxsdW1pbmFudChjbXNDSUVYWVoqIFJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0NJRVhZWiogU291cmNlV2hpdGVQdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0NJRVhZWiogSWxsdW1pbmFudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0NJRVhZWiogVmFsdWUpCit7CisgICAgY21zTUFUMyBCcmFkZm9yZDsKKyAgICBjbXNWRUMzIEluLCBPdXQ7CisKKyAgICBfY21zQXNzZXJ0KFJlc3VsdCAhPSBOVUxMKTsKKyAgICBfY21zQXNzZXJ0KFNvdXJjZVdoaXRlUHQgIT0gTlVMTCk7CisgICAgX2Ntc0Fzc2VydChJbGx1bWluYW50ICE9IE5VTEwpOworICAgIF9jbXNBc3NlcnQoVmFsdWUgIT0gTlVMTCk7CisKKyAgICBpZiAoIV9jbXNBZGFwdGF0aW9uTWF0cml4KCZCcmFkZm9yZCwgTlVMTCwgU291cmNlV2hpdGVQdCwgSWxsdW1pbmFudCkpIHJldHVybiBGQUxTRTsKKworICAgIF9jbXNWRUMzaW5pdCgmSW4sIFZhbHVlIC0+IFgsIFZhbHVlIC0+IFksIFZhbHVlIC0+IFopOworICAgIF9jbXNNQVQzZXZhbCgmT3V0LCAmQnJhZGZvcmQsICZJbik7CisKKyAgICBSZXN1bHQgLT4gWCA9IE91dC5uWzBdOworICAgIFJlc3VsdCAtPiBZID0gT3V0Lm5bMV07CisgICAgUmVzdWx0IC0+IFogPSBPdXQublsyXTsKKworICAgIHJldHVybiBUUlVFOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3hmb3JtLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvY21zeGZvcm0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGRiOWJkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2Ntc3hmb3JtLmMKQEAgLTAsMCArMSwxMTMyIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vICBMaXR0bGUgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0KKy8vICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxNCBNYXJ0aSBNYXJpYSBTYWd1ZXIKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlCisvLyBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTworLy8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKy8vIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKy8vIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKy8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisKKyNpbmNsdWRlICJsY21zMl9pbnRlcm5hbC5oIgorCisvLyBUcmFuc2Zvcm1hdGlvbnMgc3R1ZmYKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgREVGQVVMVF9PQlNFUlZFUl9BREFQVEFUSU9OX1NUQVRFIDEuMAorCisvLyBUaGUgQ29udGV4dDAgb2JzZXJ2ZXIgYWRhcHRhdGlvbiBzdGF0ZS4KK19jbXNBZGFwdGF0aW9uU3RhdGVDaHVua1R5cGUgX2Ntc0FkYXB0YXRpb25TdGF0ZUNodW5rID0geyBERUZBVUxUX09CU0VSVkVSX0FEQVBUQVRJT05fU1RBVEUgfTsKKworLy8gSW5pdCBhbmQgZHVwbGljYXRlIG9ic2VydmVyIGFkYXB0YXRpb24gc3RhdGUKK3ZvaWQgX2Ntc0FsbG9jQWRhcHRhdGlvblN0YXRlQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKQoreworICAgIHN0YXRpYyBfY21zQWRhcHRhdGlvblN0YXRlQ2h1bmtUeXBlIEFkYXB0YXRpb25TdGF0ZUNodW5rID0geyBERUZBVUxUX09CU0VSVkVSX0FEQVBUQVRJT05fU1RBVEUgfTsKKyAgICB2b2lkKiBmcm9tOworICAgICAKKyAgICBpZiAoc3JjICE9IE5VTEwpIHsKKyAgICAgICAgZnJvbSA9IHNyYyAtPmNodW5rc1tBZGFwdGF0aW9uU3RhdGVDb250ZXh0XTsgICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgIGZyb20gPSAmQWRhcHRhdGlvblN0YXRlQ2h1bms7CisgICAgfQorICAgIAorICAgIGN0eCAtPmNodW5rc1tBZGFwdGF0aW9uU3RhdGVDb250ZXh0XSA9IF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCBmcm9tLCBzaXplb2YoX2Ntc0FkYXB0YXRpb25TdGF0ZUNodW5rVHlwZSkpOyAgICAgCit9CisKKworLy8gU2V0cyBhZGFwdGF0aW9uIHN0YXRlIGZvciBhYnNvbHV0ZSBjb2xvcmltZXRyaWMgaW50ZW50IGluIHRoZSBnaXZlbiBjb250ZXh0LiAgQWRhcHRhdGlvbiBzdGF0ZSBhcHBsaWVzIG9uIGFsbCAKKy8vIGJ1dCBjbXNDcmVhdGVFeHRlbmRlZFRyYW5zZm9ybVRIUigpLiAgTGl0dGxlIENNUyBjYW4gaGFuZGxlIGluY29tcGxldGUgYWRhcHRhdGlvbiBzdGF0ZXMuCitjbXNGbG9hdDY0TnVtYmVyIENNU0VYUE9SVCBjbXNTZXRBZGFwdGF0aW9uU3RhdGVUSFIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc0Zsb2F0NjROdW1iZXIgZCkKK3sKKyAgICBjbXNGbG9hdDY0TnVtYmVyIHByZXY7CisgICAgX2Ntc0FkYXB0YXRpb25TdGF0ZUNodW5rVHlwZSogcHRyID0gKF9jbXNBZGFwdGF0aW9uU3RhdGVDaHVua1R5cGUqKSBfY21zQ29udGV4dEdldENsaWVudENodW5rKENvbnRleHRJRCwgQWRhcHRhdGlvblN0YXRlQ29udGV4dCk7CisKKyAgICAvLyBHZXQgcHJldmlvdXMgdmFsdWUgZm9yIHJldHVybgorICAgIHByZXYgPSBwdHIgLT5BZGFwdGF0aW9uU3RhdGU7CisKKyAgICAvLyBTZXQgdGhlIHZhbHVlIGlmIGQgaXMgcG9zaXRpdmUgb3IgemVybworICAgIGlmIChkID49IDAuMCkgeworCisgICAgICAgIHB0ciAtPkFkYXB0YXRpb25TdGF0ZSA9IGQ7CisgICAgfQorCisgICAgLy8gQWx3YXlzIHJldHVybiBwcmV2aW91cyB2YWx1ZQorICAgIHJldHVybiBwcmV2OworfQorCisKKy8vIFRoZSBhZGFwdGF0aW9uIHN0YXRlIG1heSBiZSBkZWZhdWx0ZWQgYnkgdGhpcyBmdW5jdGlvbi4gSWYgeW91IGRvbid0IGxpa2UgaXQsIHVzZSB0aGUgZXh0ZW5kZWQgdHJhbnNmb3JtIHJvdXRpbmUKK2Ntc0Zsb2F0NjROdW1iZXIgQ01TRVhQT1JUIGNtc1NldEFkYXB0YXRpb25TdGF0ZShjbXNGbG9hdDY0TnVtYmVyIGQpCit7ICAgIAorICAgIHJldHVybiBjbXNTZXRBZGFwdGF0aW9uU3RhdGVUSFIoTlVMTCwgZCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEFsYXJtIGNvZGVzIGZvciAxNi1iaXQgdHJhbnNmb3JtYXRpb25zLCBiZWNhdXNlIHRoZSBmaXhlZCByYW5nZSBvZiBjb250YWluZXJzIHRoZXJlIGFyZQorLy8gbm8gdmFsdWVzIGxlZnQgdG8gbWFyayBvdXQgb2YgZ2FtdXQuIAorCisjZGVmaW5lIERFRkFVTFRfQUxBUk1fQ09ERVNfVkFMVUUgezB4N0YwMCwgMHg3RjAwLCAweDdGMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisKK19jbXNBbGFybUNvZGVzQ2h1bmtUeXBlIF9jbXNBbGFybUNvZGVzQ2h1bmsgPSB7IERFRkFVTFRfQUxBUk1fQ09ERVNfVkFMVUUgfTsKKworLy8gU2V0cyB0aGUgY29kZXMgdXNlZCB0byBtYXJrIG91dC1vdXQtZ2FtdXQgb24gUHJvb2ZpbmcgdHJhbnNmb3JtcyBmb3IgYSBnaXZlbiBjb250ZXh0LiBWYWx1ZXMgYXJlIG1lYW50IHRvIGJlIAorLy8gZW5jb2RlZCBpbiAxNiBiaXRzLgordm9pZCBDTVNFWFBPUlQgY21zU2V0QWxhcm1Db2Rlc1RIUihjbXNDb250ZXh0IENvbnRleHRJRCwgY29uc3QgY21zVUludDE2TnVtYmVyIEFsYXJtQ29kZXNQW2Ntc01BWENIQU5ORUxTXSkKK3sKKyAgICBfY21zQWxhcm1Db2Rlc0NodW5rVHlwZSogQ29udGV4dEFsYXJtQ29kZXMgPSAoX2Ntc0FsYXJtQ29kZXNDaHVua1R5cGUqKSBfY21zQ29udGV4dEdldENsaWVudENodW5rKENvbnRleHRJRCwgQWxhcm1Db2Rlc0NvbnRleHQpOworICAgICAgIAorICAgIF9jbXNBc3NlcnQoQ29udGV4dEFsYXJtQ29kZXMgIT0gTlVMTCk7IC8vIENhbid0IGhhcHBlbgorICAgIAorICAgIG1lbWNweShDb250ZXh0QWxhcm1Db2Rlcy0+QWxhcm1Db2RlcywgQWxhcm1Db2Rlc1AsIHNpemVvZihDb250ZXh0QWxhcm1Db2Rlcy0+QWxhcm1Db2RlcykpOyAgICAKK30KKworLy8gR2V0cyB0aGUgY3VycmVudCBjb2RlcyB1c2VkIHRvIG1hcmsgb3V0LW91dC1nYW11dCBvbiBQcm9vZmluZyB0cmFuc2Zvcm1zIGZvciB0aGUgZ2l2ZW4gY29udGV4dC4KKy8vIFZhbHVlcyBhcmUgbWVhbnQgdG8gYmUgZW5jb2RlZCBpbiAxNiBiaXRzLgordm9pZCBDTVNFWFBPUlQgY21zR2V0QWxhcm1Db2Rlc1RIUihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDE2TnVtYmVyIEFsYXJtQ29kZXNQW2Ntc01BWENIQU5ORUxTXSkKK3sKKyAgICBfY21zQWxhcm1Db2Rlc0NodW5rVHlwZSogQ29udGV4dEFsYXJtQ29kZXMgPSAoX2Ntc0FsYXJtQ29kZXNDaHVua1R5cGUqKSBfY21zQ29udGV4dEdldENsaWVudENodW5rKENvbnRleHRJRCwgQWxhcm1Db2Rlc0NvbnRleHQpOworCisgICAgX2Ntc0Fzc2VydChDb250ZXh0QWxhcm1Db2RlcyAhPSBOVUxMKTsgLy8gQ2FuJ3QgaGFwcGVuCisKKyAgICBtZW1jcHkoQWxhcm1Db2Rlc1AsIENvbnRleHRBbGFybUNvZGVzLT5BbGFybUNvZGVzLCBzaXplb2YoQ29udGV4dEFsYXJtQ29kZXMtPkFsYXJtQ29kZXMpKTsKK30KKwordm9pZCBDTVNFWFBPUlQgY21zU2V0QWxhcm1Db2Rlcyhjb25zdCBjbXNVSW50MTZOdW1iZXIgTmV3QWxhcm1bY21zTUFYQ0hBTk5FTFNdKQoreworICAgIF9jbXNBc3NlcnQoTmV3QWxhcm0gIT0gTlVMTCk7CisKKyAgICBjbXNTZXRBbGFybUNvZGVzVEhSKE5VTEwsIE5ld0FsYXJtKTsKK30KKwordm9pZCBDTVNFWFBPUlQgY21zR2V0QWxhcm1Db2RlcyhjbXNVSW50MTZOdW1iZXIgT2xkQWxhcm1bY21zTUFYQ0hBTk5FTFNdKQoreyAKKyAgICBfY21zQXNzZXJ0KE9sZEFsYXJtICE9IE5VTEwpOworICAgIGNtc0dldEFsYXJtQ29kZXNUSFIoTlVMTCwgT2xkQWxhcm0pOworfQorCisKKy8vIEluaXQgYW5kIGR1cGxpY2F0ZSBhbGFybSBjb2Rlcwordm9pZCBfY21zQWxsb2NBbGFybUNvZGVzQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYykKK3sKKyAgICBzdGF0aWMgX2Ntc0FsYXJtQ29kZXNDaHVua1R5cGUgQWxhcm1Db2Rlc0NodW5rID0geyBERUZBVUxUX0FMQVJNX0NPREVTX1ZBTFVFIH07CisgICAgdm9pZCogZnJvbTsKKyAgICAgCisgICAgaWYgKHNyYyAhPSBOVUxMKSB7CisgICAgICAgIGZyb20gPSBzcmMgLT5jaHVua3NbQWxhcm1Db2Rlc0NvbnRleHRdOyAgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgZnJvbSA9ICZBbGFybUNvZGVzQ2h1bms7CisgICAgfQorICAgIAorICAgIGN0eCAtPmNodW5rc1tBbGFybUNvZGVzQ29udGV4dF0gPSBfY21zU3ViQWxsb2NEdXAoY3R4IC0+TWVtUG9vbCwgZnJvbSwgc2l6ZW9mKF9jbXNBbGFybUNvZGVzQ2h1bmtUeXBlKSk7ICAgICAKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gR2V0IHJpZCBvZiB0cmFuc2Zvcm0gcmVzb3VyY2VzCit2b2lkIENNU0VYUE9SVCBjbXNEZWxldGVUcmFuc2Zvcm0oY21zSFRSQU5TRk9STSBoVHJhbnNmb3JtKQoreworICAgIF9jbXNUUkFOU0ZPUk0qIHAgPSAoX2Ntc1RSQU5TRk9STSopIGhUcmFuc2Zvcm07CisKKyAgICBfY21zQXNzZXJ0KHAgIT0gTlVMTCk7CisKKyAgICBpZiAocCAtPiBHYW11dENoZWNrKQorICAgICAgICBjbXNQaXBlbGluZUZyZWUocCAtPiBHYW11dENoZWNrKTsKKworICAgIGlmIChwIC0+IEx1dCkKKyAgICAgICAgY21zUGlwZWxpbmVGcmVlKHAgLT4gTHV0KTsKKworICAgIGlmIChwIC0+SW5wdXRDb2xvcmFudCkKKyAgICAgICAgY21zRnJlZU5hbWVkQ29sb3JMaXN0KHAgLT5JbnB1dENvbG9yYW50KTsKKworICAgIGlmIChwIC0+IE91dHB1dENvbG9yYW50KQorICAgICAgICBjbXNGcmVlTmFtZWRDb2xvckxpc3QocCAtPk91dHB1dENvbG9yYW50KTsKKworICAgIGlmIChwIC0+U2VxdWVuY2UpCisgICAgICAgIGNtc0ZyZWVQcm9maWxlU2VxdWVuY2VEZXNjcmlwdGlvbihwIC0+U2VxdWVuY2UpOworCisgICAgaWYgKHAgLT5Vc2VyRGF0YSkKKyAgICAgICAgcCAtPkZyZWVVc2VyRGF0YShwIC0+Q29udGV4dElELCBwIC0+VXNlckRhdGEpOworCisgICAgX2Ntc0ZyZWUocCAtPkNvbnRleHRJRCwgKHZvaWQgKikgcCk7Cit9CisKKy8vIEFwcGx5IHRyYW5zZm9ybS4KK3ZvaWQgQ01TRVhQT1JUIGNtc0RvVHJhbnNmb3JtKGNtc0hUUkFOU0ZPUk0gIFRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIElucHV0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogT3V0cHV0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFNpemUpCisKK3sKKyAgICBfY21zVFJBTlNGT1JNKiBwID0gKF9jbXNUUkFOU0ZPUk0qKSBUcmFuc2Zvcm07CisKKyAgICBwIC0+IHhmb3JtKHAsIElucHV0QnVmZmVyLCBPdXRwdXRCdWZmZXIsIFNpemUsIFNpemUpOworfQorCisKKy8vIEFwcGx5IHRyYW5zZm9ybS4KK3ZvaWQgQ01TRVhQT1JUIGNtc0RvVHJhbnNmb3JtU3RyaWRlKGNtc0hUUkFOU0ZPUk0gIFRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIElucHV0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogT3V0cHV0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFNpemUsIGNtc1VJbnQzMk51bWJlciBTdHJpZGUpCisKK3sKKyAgICBfY21zVFJBTlNGT1JNKiBwID0gKF9jbXNUUkFOU0ZPUk0qKSBUcmFuc2Zvcm07CisKKyAgICBwIC0+IHhmb3JtKHAsIElucHV0QnVmZmVyLCBPdXRwdXRCdWZmZXIsIFNpemUsIFN0cmlkZSk7Cit9CisKKworLy8gVHJhbnNmb3JtIHJvdXRpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gRmxvYXQgeGZvcm0gY29udmVydHMgZmxvYXRzLiBTaW5jZSB0aGVyZSBhcmUgbm8gcGVyZm9ybWFuY2UgaXNzdWVzLCBvbmUgcm91dGluZSBkb2VzIGFsbCBqb2IsIGluY2x1ZGluZyBnYW11dCBjaGVjay4KKy8vIE5vdGUgdGhhdCBiZWNhdXNlIGV4dGVuZGVkIHJhbmdlLCB3ZSBjYW4gdXNlIGEgLTEuMCB2YWx1ZSBmb3Igb3V0IG9mIGdhbXV0IGluIHRoaXMgY2FzZS4KK3N0YXRpYwordm9pZCBGbG9hdFhGT1JNKF9jbXNUUkFOU0ZPUk0qIHAsCisgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogaW4sCisgICAgICAgICAgICAgICAgdm9pZCogb3V0LCBjbXNVSW50MzJOdW1iZXIgU2l6ZSwgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBjbXNVSW50OE51bWJlciogYWNjdW07CisgICAgY21zVUludDhOdW1iZXIqIG91dHB1dDsKKyAgICBjbXNGbG9hdDMyTnVtYmVyIGZJbltjbXNNQVhDSEFOTkVMU10sIGZPdXRbY21zTUFYQ0hBTk5FTFNdOworICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0T2ZHYW11dDsKKyAgICBjbXNVSW50MzJOdW1iZXIgaSwgajsKKworICAgIGFjY3VtICA9IChjbXNVSW50OE51bWJlciopICBpbjsKKyAgICBvdXRwdXQgPSAoY21zVUludDhOdW1iZXIqKSAgb3V0OworCisgICAgZm9yIChpPTA7IGkgPCBTaXplOyBpKyspIHsKKworICAgICAgICBhY2N1bSA9IHAgLT4gRnJvbUlucHV0RmxvYXQocCwgZkluLCBhY2N1bSwgU3RyaWRlKTsKKworICAgICAgICAvLyBBbnkgZ2FtdXQgY2hhY2sgdG8gZG8/CisgICAgICAgIGlmIChwIC0+R2FtdXRDaGVjayAhPSBOVUxMKSB7CisKKyAgICAgICAgICAgIC8vIEV2YWx1YXRlIGdhbXV0IG1hcmtlci4KKyAgICAgICAgICAgIGNtc1BpcGVsaW5lRXZhbEZsb2F0KCBmSW4sICZPdXRPZkdhbXV0LCBwIC0+R2FtdXRDaGVjayk7CisKKyAgICAgICAgICAgIC8vIElzIGN1cnJlbnQgY29sb3Igb3V0IG9mIGdhbXV0PworICAgICAgICAgICAgaWYgKE91dE9mR2FtdXQgPiAwLjApIHsKKworICAgICAgICAgICAgICAgIC8vIENlcnRhaW5seSwgb3V0IG9mIGdhbXV0CisgICAgICAgICAgICAgICAgZm9yIChqPTA7IGogPCBjbXNNQVhDSEFOTkVMUzsgaisrKQorICAgICAgICAgICAgICAgICAgICBmT3V0W2pdID0gLTEuMDsKKworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gTm8sIHByb2NlZWQgbm9ybWFsbHkKKyAgICAgICAgICAgICAgICBjbXNQaXBlbGluZUV2YWxGbG9hdChmSW4sIGZPdXQsIHAgLT4gTHV0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgLy8gTm8gZ2FtdXQgY2hlY2sgYXQgYWxsCisgICAgICAgICAgICBjbXNQaXBlbGluZUV2YWxGbG9hdChmSW4sIGZPdXQsIHAgLT4gTHV0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJhY2sgdG8gYXNrZWQgcmVwcmVzZW50YXRpb24KKyAgICAgICAgb3V0cHV0ID0gcCAtPiBUb091dHB1dEZsb2F0KHAsIGZPdXQsIG91dHB1dCwgU3RyaWRlKTsKKyAgICB9Cit9CisKKworc3RhdGljCit2b2lkIE51bGxGbG9hdFhGT1JNKF9jbXNUUkFOU0ZPUk0qIHAsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIGluLAorICAgICAgICAgICAgICAgICAgICB2b2lkKiBvdXQsIAorICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBjbXNVSW50OE51bWJlciogYWNjdW07CisgICAgY21zVUludDhOdW1iZXIqIG91dHB1dDsKKyAgICBjbXNGbG9hdDMyTnVtYmVyIGZJbltjbXNNQVhDSEFOTkVMU107CisgICAgY21zVUludDMyTnVtYmVyIGksIG47CisKKyAgICBhY2N1bSAgPSAoY21zVUludDhOdW1iZXIqKSAgaW47CisgICAgb3V0cHV0ID0gKGNtc1VJbnQ4TnVtYmVyKikgIG91dDsKKyAgICBuID0gU2l6ZTsgICAgICAgICAgICAgICAgICAgCisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIGFjY3VtICA9IHAgLT4gRnJvbUlucHV0RmxvYXQocCwgZkluLCBhY2N1bSwgU3RyaWRlKTsKKyAgICAgICAgb3V0cHV0ID0gcCAtPiBUb091dHB1dEZsb2F0KHAsIGZJbiwgb3V0cHV0LCBTdHJpZGUpOworICAgIH0KK30KKworLy8gMTYgYml0IHByZWNpc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBOdWxsIHRyYW5zZm9ybWF0aW9uLCBvbmx5IGFwcGxpZXMgZm9ybWF0dGVycy4gTm8gY2FjaD9zdGF0aWMKK3ZvaWQgTnVsbFhGT1JNKF9jbXNUUkFOU0ZPUk0qIHAsCisgICAgICAgICAgICAgICBjb25zdCB2b2lkKiBpbiwKKyAgICAgICAgICAgICAgIHZvaWQqIG91dCwgY21zVUludDMyTnVtYmVyIFNpemUsCisgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bTsKKyAgICBjbXNVSW50OE51bWJlciogb3V0cHV0OworICAgIGNtc1VJbnQxNk51bWJlciB3SW5bY21zTUFYQ0hBTk5FTFNdOworICAgIGNtc1VJbnQzMk51bWJlciBpLCBuOworCisgICAgYWNjdW0gID0gKGNtc1VJbnQ4TnVtYmVyKikgIGluOworICAgIG91dHB1dCA9IChjbXNVSW50OE51bWJlciopICBvdXQ7CisgICAgbiA9IFNpemU7ICAgICAgICAgICAgICAgICAgICAvLyBCdWZmZXIgbGVuCisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIGFjY3VtICA9IHAgLT4gRnJvbUlucHV0KHAsIHdJbiwgYWNjdW0sIFN0cmlkZSk7CisgICAgICAgIG91dHB1dCA9IHAgLT4gVG9PdXRwdXQocCwgd0luLCBvdXRwdXQsIFN0cmlkZSk7CisgICAgfQorfQorCisKKy8vIE5vIGdhbXV0IGNoZWNrLCBubyBjYWNoZSwgMTYgYml0cworc3RhdGljCit2b2lkIFByZWNhbGN1bGF0ZWRYRk9STShfY21zVFJBTlNGT1JNKiBwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBvdXQsIGNtc1VJbnQzMk51bWJlciBTaXplLCBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgIHJlZ2lzdGVyIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bTsKKyAgICByZWdpc3RlciBjbXNVSW50OE51bWJlciogb3V0cHV0OworICAgIGNtc1VJbnQxNk51bWJlciB3SW5bY21zTUFYQ0hBTk5FTFNdLCB3T3V0W2Ntc01BWENIQU5ORUxTXTsKKyAgICBjbXNVSW50MzJOdW1iZXIgaSwgbjsKKworICAgIGFjY3VtICA9IChjbXNVSW50OE51bWJlciopICBpbjsKKyAgICBvdXRwdXQgPSAoY21zVUludDhOdW1iZXIqKSAgb3V0OworICAgIG4gPSBTaXplOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICBhY2N1bSA9IHAgLT4gRnJvbUlucHV0KHAsIHdJbiwgYWNjdW0sIFN0cmlkZSk7CisgICAgICAgIHAgLT5MdXQgLT5FdmFsMTZGbih3SW4sIHdPdXQsIHAgLT4gTHV0LT5EYXRhKTsKKyAgICAgICAgb3V0cHV0ID0gcCAtPiBUb091dHB1dChwLCB3T3V0LCBvdXRwdXQsIFN0cmlkZSk7CisgICAgfQorfQorCisKKy8vIEF1eGlsaWFyOiBIYW5kbGUgcHJlY2FsY3VsYXRlZCBnYW11dCBjaGVjay4gVGhlIHJldHJpZXZhbCBvZiBjb250ZXh0IG1heSBiZSBhbGl0dGxlIGJpdCBzbG93LCBidXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgY3JpdGljYWwuCitzdGF0aWMKK3ZvaWQgVHJhbnNmb3JtT25lUGl4ZWxXaXRoR2FtdXRDaGVjayhfY21zVFJBTlNGT1JNKiBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1VJbnQxNk51bWJlciB3SW5bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MTZOdW1iZXIgd091dFtdKQoreworICAgIGNtc1VJbnQxNk51bWJlciB3T3V0T2ZHYW11dDsKKworICAgIHAgLT5HYW11dENoZWNrIC0+RXZhbDE2Rm4od0luLCAmd091dE9mR2FtdXQsIHAgLT5HYW11dENoZWNrIC0+RGF0YSk7CisgICAgaWYgKHdPdXRPZkdhbXV0ID49IDEpIHsKKworICAgICAgICBjbXNVSW50MTZOdW1iZXIgaTsKKyAgICAgICAgX2Ntc0FsYXJtQ29kZXNDaHVua1R5cGUqIENvbnRleHRBbGFybUNvZGVzID0gKF9jbXNBbGFybUNvZGVzQ2h1bmtUeXBlKikgX2Ntc0NvbnRleHRHZXRDbGllbnRDaHVuayhwLT5Db250ZXh0SUQsIEFsYXJtQ29kZXNDb250ZXh0KTsgICAgICAgIAorCisgICAgICAgIGZvciAoaT0wOyBpIDwgcCAtPkx1dC0+T3V0cHV0Q2hhbm5lbHM7IGkrKykgeworCisgICAgICAgICAgICB3T3V0W2ldID0gQ29udGV4dEFsYXJtQ29kZXMgLT5BbGFybUNvZGVzW2ldOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcCAtPkx1dCAtPkV2YWwxNkZuKHdJbiwgd091dCwgcCAtPiBMdXQtPkRhdGEpOworfQorCisvLyBHYW11dCBjaGVjaywgTm8gY2FjaD8gMTYgYml0cy4KK3N0YXRpYwordm9pZCBQcmVjYWxjdWxhdGVkWEZPUk1HYW11dENoZWNrKF9jbXNUUkFOU0ZPUk0qIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogb3V0LCBjbXNVSW50MzJOdW1iZXIgU2l6ZSwgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBjbXNVSW50OE51bWJlciogYWNjdW07CisgICAgY21zVUludDhOdW1iZXIqIG91dHB1dDsKKyAgICBjbXNVSW50MTZOdW1iZXIgd0luW2Ntc01BWENIQU5ORUxTXSwgd091dFtjbXNNQVhDSEFOTkVMU107CisgICAgY21zVUludDMyTnVtYmVyIGksIG47CisKKyAgICBhY2N1bSAgPSAoY21zVUludDhOdW1iZXIqKSAgaW47CisgICAgb3V0cHV0ID0gKGNtc1VJbnQ4TnVtYmVyKikgIG91dDsKKyAgICBuID0gU2l6ZTsgICAgICAgICAgICAgICAgICAgIC8vIEJ1ZmZlciBsZW4KKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisKKyAgICAgICAgYWNjdW0gPSBwIC0+IEZyb21JbnB1dChwLCB3SW4sIGFjY3VtLCBTdHJpZGUpOworICAgICAgICBUcmFuc2Zvcm1PbmVQaXhlbFdpdGhHYW11dENoZWNrKHAsIHdJbiwgd091dCk7CisgICAgICAgIG91dHB1dCA9IHAgLT4gVG9PdXRwdXQocCwgd091dCwgb3V0cHV0LCBTdHJpZGUpOworICAgIH0KK30KKworCisvLyBObyBnYW11dCBjaGVjaywgQ2FjaD8gMTYgYml0cywKK3N0YXRpYwordm9pZCBDYWNoZWRYRk9STShfY21zVFJBTlNGT1JNKiBwLAorICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiBpbiwKKyAgICAgICAgICAgICAgICAgdm9pZCogb3V0LCBjbXNVSW50MzJOdW1iZXIgU2l6ZSwgY21zVUludDMyTnVtYmVyIFN0cmlkZSkKK3sKKyAgICBjbXNVSW50OE51bWJlciogYWNjdW07CisgICAgY21zVUludDhOdW1iZXIqIG91dHB1dDsKKyAgICBjbXNVSW50MTZOdW1iZXIgd0luW2Ntc01BWENIQU5ORUxTXSwgd091dFtjbXNNQVhDSEFOTkVMU107CisgICAgY21zVUludDMyTnVtYmVyIGksIG47CisgICAgX2Ntc0NBQ0hFIENhY2hlOworCisgICAgYWNjdW0gID0gKGNtc1VJbnQ4TnVtYmVyKikgIGluOworICAgIG91dHB1dCA9IChjbXNVSW50OE51bWJlciopICBvdXQ7CisgICAgbiA9IFNpemU7ICAgICAgICAgICAgICAgICAgICAvLyBCdWZmZXIgbGVuCisKKyAgICAvLyBFbXB0eSBidWZmZXJzIGZvciBxdWljayBtZW1jbXAKKyAgICBtZW1zZXQod0luLCAgMCwgc2l6ZW9mKHdJbikpOworICAgIG1lbXNldCh3T3V0LCAwLCBzaXplb2Yod091dCkpOworCisgICAgLy8gR2V0IGNvcHkgb2YgemVybyBjYWNoZQorICAgIG1lbWNweSgmQ2FjaGUsICZwIC0+Q2FjaGUsIHNpemVvZihDYWNoZSkpOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICBhY2N1bSA9IHAgLT4gRnJvbUlucHV0KHAsIHdJbiwgYWNjdW0sIFN0cmlkZSk7CisKKyAgICAgICAgaWYgKG1lbWNtcCh3SW4sIENhY2hlLkNhY2hlSW4sIHNpemVvZihDYWNoZS5DYWNoZUluKSkgPT0gMCkgeworCisgICAgICAgICAgICBtZW1jcHkod091dCwgQ2FjaGUuQ2FjaGVPdXQsIHNpemVvZihDYWNoZS5DYWNoZU91dCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICBwIC0+THV0IC0+RXZhbDE2Rm4od0luLCB3T3V0LCBwIC0+IEx1dC0+RGF0YSk7CisKKyAgICAgICAgICAgIG1lbWNweShDYWNoZS5DYWNoZUluLCAgd0luLCAgc2l6ZW9mKENhY2hlLkNhY2hlSW4pKTsKKyAgICAgICAgICAgIG1lbWNweShDYWNoZS5DYWNoZU91dCwgd091dCwgc2l6ZW9mKENhY2hlLkNhY2hlT3V0KSk7CisgICAgICAgIH0KKworICAgICAgICBvdXRwdXQgPSBwIC0+IFRvT3V0cHV0KHAsIHdPdXQsIG91dHB1dCwgU3RyaWRlKTsKKyAgICB9CisKK30KKworCisvLyBBbGwgdGhvc2UgbmljZSBmZWF0dXJlcyB0b2dldGhlcgorc3RhdGljCit2b2lkIENhY2hlZFhGT1JNR2FtdXRDaGVjayhfY21zVFJBTlNGT1JNKiBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBvdXQsIGNtc1VJbnQzMk51bWJlciBTaXplLCBjbXNVSW50MzJOdW1iZXIgU3RyaWRlKQoreworICAgICAgIGNtc1VJbnQ4TnVtYmVyKiBhY2N1bTsKKyAgICAgICBjbXNVSW50OE51bWJlciogb3V0cHV0OworICAgICAgIGNtc1VJbnQxNk51bWJlciB3SW5bY21zTUFYQ0hBTk5FTFNdLCB3T3V0W2Ntc01BWENIQU5ORUxTXTsKKyAgICAgICBjbXNVSW50MzJOdW1iZXIgaSwgbjsKKyAgICAgICBfY21zQ0FDSEUgQ2FjaGU7CisKKyAgICAgICBhY2N1bSAgPSAoY21zVUludDhOdW1iZXIqKSAgaW47CisgICAgICAgb3V0cHV0ID0gKGNtc1VJbnQ4TnVtYmVyKikgIG91dDsKKyAgICAgICBuID0gU2l6ZTsgICAgICAgICAgICAgICAgICAgIC8vIEJ1ZmZlciBsZW4KKworICAgICAgIC8vIEVtcHR5IGJ1ZmZlcnMgZm9yIHF1aWNrIG1lbWNtcAorICAgICAgIG1lbXNldCh3SW4sICAwLCBzaXplb2YoY21zVUludDE2TnVtYmVyKSAqIGNtc01BWENIQU5ORUxTKTsKKyAgICAgICBtZW1zZXQod091dCwgMCwgc2l6ZW9mKGNtc1VJbnQxNk51bWJlcikgKiBjbXNNQVhDSEFOTkVMUyk7CisKKyAgICAgICAvLyBHZXQgY29weSBvZiB6ZXJvIGNhY2hlCisgICAgICAgbWVtY3B5KCZDYWNoZSwgJnAgLT5DYWNoZSwgc2l6ZW9mKENhY2hlKSk7CisKKyAgICAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgICAgICBhY2N1bSA9IHAgLT4gRnJvbUlucHV0KHAsIHdJbiwgYWNjdW0sIFN0cmlkZSk7CisKKyAgICAgICAgICAgIGlmIChtZW1jbXAod0luLCBDYWNoZS5DYWNoZUluLCBzaXplb2YoQ2FjaGUuQ2FjaGVJbikpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHdPdXQsIENhY2hlLkNhY2hlT3V0LCBzaXplb2YoQ2FjaGUuQ2FjaGVPdXQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1PbmVQaXhlbFdpdGhHYW11dENoZWNrKHAsIHdJbiwgd091dCk7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShDYWNoZS5DYWNoZUluLCB3SW4sIHNpemVvZihDYWNoZS5DYWNoZUluKSk7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShDYWNoZS5DYWNoZU91dCwgd091dCwgc2l6ZW9mKENhY2hlLkNhY2hlT3V0KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG91dHB1dCA9IHAgLT4gVG9PdXRwdXQocCwgd091dCwgb3V0cHV0LCBTdHJpZGUpOworICAgICAgIH0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIExpc3Qgb2YgdXNlZC1kZWZpbmVkIHRyYW5zZm9ybSBmYWN0b3JpZXMKK3R5cGVkZWYgc3RydWN0IF9jbXNUcmFuc2Zvcm1Db2xsZWN0aW9uX3N0IHsKKworICAgIF9jbXNUcmFuc2Zvcm1GYWN0b3J5ICBGYWN0b3J5OworICAgIHN0cnVjdCBfY21zVHJhbnNmb3JtQ29sbGVjdGlvbl9zdCAqTmV4dDsKKworfSBfY21zVHJhbnNmb3JtQ29sbGVjdGlvbjsKKworLy8gVGhlIGxpbmtlZCBsaXN0IGhlYWQKK19jbXNUcmFuc2Zvcm1QbHVnaW5DaHVua1R5cGUgX2Ntc1RyYW5zZm9ybVBsdWdpbkNodW5rID0geyBOVUxMIH07CisKKworLy8gRHVwbGljYXRlcyB0aGUgem9uZSBvZiBtZW1vcnkgdXNlZCBieSB0aGUgcGx1Zy1pbiBpbiB0aGUgbmV3IGNvbnRleHQKK3N0YXRpYwordm9pZCBEdXBQbHVnaW5UcmFuc2Zvcm1MaXN0KHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYykKK3sKKyAgIF9jbXNUcmFuc2Zvcm1QbHVnaW5DaHVua1R5cGUgbmV3SGVhZCA9IHsgTlVMTCB9OworICAgX2Ntc1RyYW5zZm9ybUNvbGxlY3Rpb24qICBlbnRyeTsKKyAgIF9jbXNUcmFuc2Zvcm1Db2xsZWN0aW9uKiAgQW50ZXJpb3IgPSBOVUxMOworICAgX2Ntc1RyYW5zZm9ybVBsdWdpbkNodW5rVHlwZSogaGVhZCA9IChfY21zVHJhbnNmb3JtUGx1Z2luQ2h1bmtUeXBlKikgc3JjLT5jaHVua3NbVHJhbnNmb3JtUGx1Z2luXTsKKworICAgIC8vIFdhbGsgdGhlIGxpc3QgY29weWluZyBhbGwgbm9kZXMKKyAgIGZvciAoZW50cnkgPSBoZWFkLT5UcmFuc2Zvcm1Db2xsZWN0aW9uOworICAgICAgICBlbnRyeSAhPSBOVUxMOworICAgICAgICBlbnRyeSA9IGVudHJ5IC0+TmV4dCkgeworCisgICAgICAgICAgICBfY21zVHJhbnNmb3JtQ29sbGVjdGlvbiAqbmV3RW50cnkgPSAoIF9jbXNUcmFuc2Zvcm1Db2xsZWN0aW9uICopIF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCBlbnRyeSwgc2l6ZW9mKF9jbXNUcmFuc2Zvcm1Db2xsZWN0aW9uKSk7CisgICAKKyAgICAgICAgICAgIGlmIChuZXdFbnRyeSA9PSBOVUxMKSAKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8ga2VlcCB0aGUgbGlua2VkIGxpc3Qgb3JkZXIsIHNvIHRoaXMgaXMgYSBsaXR0bGUgYml0IHRyaWNreQorICAgICAgICAgICAgbmV3RW50cnkgLT4gTmV4dCA9IE5VTEw7CisgICAgICAgICAgICBpZiAoQW50ZXJpb3IpCisgICAgICAgICAgICAgICAgQW50ZXJpb3IgLT4gTmV4dCA9IG5ld0VudHJ5OworICAgICAKKyAgICAgICAgICAgIEFudGVyaW9yID0gbmV3RW50cnk7CisKKyAgICAgICAgICAgIGlmIChuZXdIZWFkLlRyYW5zZm9ybUNvbGxlY3Rpb24gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBuZXdIZWFkLlRyYW5zZm9ybUNvbGxlY3Rpb24gPSBuZXdFbnRyeTsKKyAgICB9CisKKyAgY3R4IC0+Y2h1bmtzW1RyYW5zZm9ybVBsdWdpbl0gPSBfY21zU3ViQWxsb2NEdXAoY3R4LT5NZW1Qb29sLCAmbmV3SGVhZCwgc2l6ZW9mKF9jbXNUcmFuc2Zvcm1QbHVnaW5DaHVua1R5cGUpKTsKK30KKwordm9pZCBfY21zQWxsb2NUcmFuc2Zvcm1QbHVnaW5DaHVuayhzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYykKK3sKKyAgICBpZiAoc3JjICE9IE5VTEwpIHsKKworICAgICAgICAvLyBDb3B5IGFsbCBsaW5rZWQgbGlzdAorICAgICAgICBEdXBQbHVnaW5UcmFuc2Zvcm1MaXN0KGN0eCwgc3JjKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YXRpYyBfY21zVHJhbnNmb3JtUGx1Z2luQ2h1bmtUeXBlIFRyYW5zZm9ybVBsdWdpbkNodW5rVHlwZSA9IHsgTlVMTCB9OworICAgICAgICBjdHggLT5jaHVua3NbVHJhbnNmb3JtUGx1Z2luXSA9IF9jbXNTdWJBbGxvY0R1cChjdHggLT5NZW1Qb29sLCAmVHJhbnNmb3JtUGx1Z2luQ2h1bmtUeXBlLCBzaXplb2YoX2Ntc1RyYW5zZm9ybVBsdWdpbkNodW5rVHlwZSkpOworICAgIH0KK30KKworCisKKy8vIFJlZ2lzdGVyIG5ldyB3YXlzIHRvIHRyYW5zZm9ybQorY21zQm9vbCAgX2Ntc1JlZ2lzdGVyVHJhbnNmb3JtUGx1Z2luKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNQbHVnaW5CYXNlKiBEYXRhKQoreworICAgIGNtc1BsdWdpblRyYW5zZm9ybSogUGx1Z2luID0gKGNtc1BsdWdpblRyYW5zZm9ybSopIERhdGE7CisgICAgX2Ntc1RyYW5zZm9ybUNvbGxlY3Rpb24qIGZsOworICAgIF9jbXNUcmFuc2Zvcm1QbHVnaW5DaHVua1R5cGUqIGN0eCA9ICggX2Ntc1RyYW5zZm9ybVBsdWdpbkNodW5rVHlwZSopIF9jbXNDb250ZXh0R2V0Q2xpZW50Q2h1bmsoQ29udGV4dElELFRyYW5zZm9ybVBsdWdpbik7CisKKyAgICBpZiAoRGF0YSA9PSBOVUxMKSB7CisKKyAgICAgICAgLy8gRnJlZSB0aGUgY2hhaW4uIE1lbW9yeSBpcyBzYWZlbHkgZnJlZWQgYXQgZXhpdAorICAgICAgICBjdHgtPlRyYW5zZm9ybUNvbGxlY3Rpb24gPSBOVUxMOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICAvLyBGYWN0b3J5IGNhbGxiYWNrIGlzIHJlcXVpcmVkCisgICAgaWYgKFBsdWdpbiAtPkZhY3RvcnkgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisKKyAgICBmbCA9IChfY21zVHJhbnNmb3JtQ29sbGVjdGlvbiopIF9jbXNQbHVnaW5NYWxsb2MoQ29udGV4dElELCBzaXplb2YoX2Ntc1RyYW5zZm9ybUNvbGxlY3Rpb24pKTsKKyAgICBpZiAoZmwgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgLy8gQ29weSB0aGUgcGFyYW1ldGVycworICAgIGZsIC0+RmFjdG9yeSA9IFBsdWdpbiAtPkZhY3Rvcnk7CisKKyAgICAvLyBLZWVwIGxpbmtlZCBsaXN0CisgICAgZmwgLT5OZXh0ID0gY3R4LT5UcmFuc2Zvcm1Db2xsZWN0aW9uOworICAgIGN0eC0+VHJhbnNmb3JtQ29sbGVjdGlvbiA9IGZsOworCisgICAgLy8gQWxsIGlzIG9rCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKwordm9pZCBDTVNFWFBPUlQgX2Ntc1NldFRyYW5zZm9ybVVzZXJEYXRhKHN0cnVjdCBfY21zdHJhbnNmb3JtX3N0cnVjdCAqQ01NY2FyZ28sIHZvaWQqIHB0ciwgX2Ntc0ZyZWVVc2VyRGF0YUZuIEZyZWVQcml2YXRlRGF0YUZuKQoreworICAgIF9jbXNBc3NlcnQoQ01NY2FyZ28gIT0gTlVMTCk7CisgICAgQ01NY2FyZ28gLT5Vc2VyRGF0YSA9IHB0cjsKKyAgICBDTU1jYXJnbyAtPkZyZWVVc2VyRGF0YSA9IEZyZWVQcml2YXRlRGF0YUZuOworfQorCisvLyByZXR1cm5zIHRoZSBwb2ludGVyIGRlZmluZWQgYnkgdGhlIHBsdWctaW4gdG8gc3RvcmUgcHJpdmF0ZSBkYXRhCit2b2lkICogQ01TRVhQT1JUIF9jbXNHZXRUcmFuc2Zvcm1Vc2VyRGF0YShzdHJ1Y3QgX2Ntc3RyYW5zZm9ybV9zdHJ1Y3QgKkNNTWNhcmdvKQoreworICAgIF9jbXNBc3NlcnQoQ01NY2FyZ28gIT0gTlVMTCk7CisgICAgcmV0dXJuIENNTWNhcmdvIC0+VXNlckRhdGE7Cit9CisKKy8vIHJldHVybnMgdGhlIGN1cnJlbnQgZm9ybWF0dGVycwordm9pZCBDTVNFWFBPUlQgX2Ntc0dldFRyYW5zZm9ybUZvcm1hdHRlcnMxNihzdHJ1Y3QgX2Ntc3RyYW5zZm9ybV9zdHJ1Y3QgKkNNTWNhcmdvLCBjbXNGb3JtYXR0ZXIxNiogRnJvbUlucHV0LCBjbXNGb3JtYXR0ZXIxNiogVG9PdXRwdXQpCit7CisgICAgIF9jbXNBc3NlcnQoQ01NY2FyZ28gIT0gTlVMTCk7CisgICAgIGlmIChGcm9tSW5wdXQpICpGcm9tSW5wdXQgPSBDTU1jYXJnbyAtPkZyb21JbnB1dDsKKyAgICAgaWYgKFRvT3V0cHV0KSAgKlRvT3V0cHV0ICA9IENNTWNhcmdvIC0+VG9PdXRwdXQ7Cit9CisKK3ZvaWQgQ01TRVhQT1JUIF9jbXNHZXRUcmFuc2Zvcm1Gb3JtYXR0ZXJzRmxvYXQoc3RydWN0IF9jbXN0cmFuc2Zvcm1fc3RydWN0ICpDTU1jYXJnbywgY21zRm9ybWF0dGVyRmxvYXQqIEZyb21JbnB1dCwgY21zRm9ybWF0dGVyRmxvYXQqIFRvT3V0cHV0KQoreworICAgICBfY21zQXNzZXJ0KENNTWNhcmdvICE9IE5VTEwpOworICAgICBpZiAoRnJvbUlucHV0KSAqRnJvbUlucHV0ID0gQ01NY2FyZ28gLT5Gcm9tSW5wdXRGbG9hdDsKKyAgICAgaWYgKFRvT3V0cHV0KSAgKlRvT3V0cHV0ICA9IENNTWNhcmdvIC0+VG9PdXRwdXRGbG9hdDsKK30KKworCisvLyBBbGxvY2F0ZSB0cmFuc2Zvcm0gc3RydWN0IGFuZCBzZXQgaXQgdG8gZGVmYXVsdHMuIEFzayB0aGUgb3B0aW1pemF0aW9uIHBsdWctaW4gYWJvdXQgaWYgdGhvc2UgZm9ybWF0cyBhcmUgcHJvcGVyCisvLyBmb3Igc2VwYXJhdGVkIHRyYW5zZm9ybXMuIElmIHRoaXMgaXMgdGhlIGNhc2UsCitzdGF0aWMKK19jbXNUUkFOU0ZPUk0qIEFsbG9jRW1wdHlUcmFuc2Zvcm0oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BpcGVsaW5lKiBsdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsIGNtc1VJbnQzMk51bWJlciogSW5wdXRGb3JtYXQsIGNtc1VJbnQzMk51bWJlciogT3V0cHV0Rm9ybWF0LCBjbXNVSW50MzJOdW1iZXIqIGR3RmxhZ3MpCit7CisgICAgIF9jbXNUcmFuc2Zvcm1QbHVnaW5DaHVua1R5cGUqIGN0eCA9ICggX2Ntc1RyYW5zZm9ybVBsdWdpbkNodW5rVHlwZSopIF9jbXNDb250ZXh0R2V0Q2xpZW50Q2h1bmsoQ29udGV4dElELCBUcmFuc2Zvcm1QbHVnaW4pOworICAgICBfY21zVHJhbnNmb3JtQ29sbGVjdGlvbiogUGx1Z2luOworCisgICAgLy8gQWxsb2NhdGUgbmVlZGVkIG1lbW9yeQorICAgIF9jbXNUUkFOU0ZPUk0qIHAgPSAoX2Ntc1RSQU5TRk9STSopIF9jbXNNYWxsb2NaZXJvKENvbnRleHRJRCwgc2l6ZW9mKF9jbXNUUkFOU0ZPUk0pKTsKKyAgICBpZiAoIXApIHJldHVybiBOVUxMOworCisgICAgLy8gU3RvcmUgdGhlIHByb3Bvc2VkIHBpcGVsaW5lCisgICAgcCAtPkx1dCA9IGx1dDsKKworICAgIC8vIExldCdzIHNlZSBpZiBhbnkgcGx1Zy1pbiB3YW50IHRvIGRvIHRoZSB0cmFuc2Zvcm0gYnkgaXRzZWxmCisgICAgZm9yIChQbHVnaW4gPSBjdHggLT5UcmFuc2Zvcm1Db2xsZWN0aW9uOworICAgICAgICBQbHVnaW4gIT0gTlVMTDsKKyAgICAgICAgUGx1Z2luID0gUGx1Z2luIC0+TmV4dCkgeworCisgICAgICAgICAgICBpZiAoUGx1Z2luIC0+RmFjdG9yeSgmcC0+eGZvcm0sICZwLT5Vc2VyRGF0YSwgJnAgLT5GcmVlVXNlckRhdGEsICZwIC0+THV0LCBJbnB1dEZvcm1hdCwgT3V0cHV0Rm9ybWF0LCBkd0ZsYWdzKSkgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIExhc3QgcGx1Z2luIGluIHRoZSBkZWNsYXJhdGlvbiBvcmRlciB0YWtlcyBjb250cm9sLiBXZSBqdXN0IGtlZXAKKyAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgcGFyYW1ldGVycyBhcyBhIGxvZ2dpbmcuIAorICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBjbXNGTEFHU19DQU5fQ0hBTkdFX0ZPUk1BVFRFUiBpcyBub3Qgc2V0LCBzbyBieSBkZWZhdWx0IAorICAgICAgICAgICAgICAgIC8vIGFuIG9wdGltaXplZCB0cmFuc2Zvcm0gaXMgbm90IHJldXNhYmxlLiBUaGUgcGx1Zy1pbiBjYW4sIGhvd2V2ZXIsIGNoYW5nZQorICAgICAgICAgICAgICAgIC8vIHRoZSBmbGFncyBhbmQgbWFrZSBpdCBzdWl0YWJsZS4KKworICAgICAgICAgICAgICAgIHAgLT5Db250ZXh0SUQgICAgICAgPSBDb250ZXh0SUQ7ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcCAtPklucHV0Rm9ybWF0ICAgICA9ICpJbnB1dEZvcm1hdDsKKyAgICAgICAgICAgICAgICBwIC0+T3V0cHV0Rm9ybWF0ICAgID0gKk91dHB1dEZvcm1hdDsKKyAgICAgICAgICAgICAgICBwIC0+ZHdPcmlnaW5hbEZsYWdzID0gKmR3RmxhZ3M7CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBGaWxsIHRoZSBmb3JtYXR0ZXJzIGp1c3QgaW4gY2FzZSB0aGUgb3B0aW1pemVkIHJvdXRpbmUgaXMgaW50ZXJlc3RlZC4KKyAgICAgICAgICAgICAgICAvLyBObyBlcnJvciBpcyB0aHJvd24gaWYgdGhlIGZvcm1hdHRlciBkb2Vzbid0IGV4aXN0LiBJdCBpcyB1cCB0byB0aGUgb3B0aW1pemF0aW9uIAorICAgICAgICAgICAgICAgIC8vIGZhY3RvcnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gaW4gdGhvc2UgY2FzZXMuCisgICAgICAgICAgICAgICAgcCAtPkZyb21JbnB1dCAgICAgID0gX2Ntc0dldEZvcm1hdHRlcihDb250ZXh0SUQsICpJbnB1dEZvcm1hdCwgIGNtc0Zvcm1hdHRlcklucHV0LCBDTVNfUEFDS19GTEFHU18xNkJJVFMpLkZtdDE2OworICAgICAgICAgICAgICAgIHAgLT5Ub091dHB1dCAgICAgICA9IF9jbXNHZXRGb3JtYXR0ZXIoQ29udGV4dElELCAqT3V0cHV0Rm9ybWF0LCBjbXNGb3JtYXR0ZXJPdXRwdXQsIENNU19QQUNLX0ZMQUdTXzE2QklUUykuRm10MTY7CisgICAgICAgICAgICAgICAgcCAtPkZyb21JbnB1dEZsb2F0ID0gX2Ntc0dldEZvcm1hdHRlcihDb250ZXh0SUQsICpJbnB1dEZvcm1hdCwgIGNtc0Zvcm1hdHRlcklucHV0LCBDTVNfUEFDS19GTEFHU19GTE9BVCkuRm10RmxvYXQ7CisgICAgICAgICAgICAgICAgcCAtPlRvT3V0cHV0RmxvYXQgID0gX2Ntc0dldEZvcm1hdHRlcihDb250ZXh0SUQsICpPdXRwdXRGb3JtYXQsIGNtc0Zvcm1hdHRlck91dHB1dCwgQ01TX1BBQ0tfRkxBR1NfRkxPQVQpLkZtdEZsb2F0OworCisgICAgICAgICAgICAgICAgcmV0dXJuIHA7CisgICAgICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm90IHN1aXRhYmxlIGZvciB0aGUgdHJhbnNmb3JtIHBsdWctaW4sIGxldCdzIGNoZWNrICB0aGUgcGlwZWxpbmUgcGx1Zy1pbgorICAgIGlmIChwIC0+THV0ICE9IE5VTEwpCisgICAgICAgIF9jbXNPcHRpbWl6ZVBpcGVsaW5lKENvbnRleHRJRCwgJnAtPkx1dCwgSW50ZW50LCBJbnB1dEZvcm1hdCwgT3V0cHV0Rm9ybWF0LCBkd0ZsYWdzKTsKKworICAgIC8vIENoZWNrIHdoYXRldmVyIHRoaXMgaXMgYSB0cnVlIGZsb2F0aW5nIHBvaW50IHRyYW5zZm9ybQorICAgIGlmIChfY21zRm9ybWF0dGVySXNGbG9hdCgqSW5wdXRGb3JtYXQpICYmIF9jbXNGb3JtYXR0ZXJJc0Zsb2F0KCpPdXRwdXRGb3JtYXQpKSB7CisKKyAgICAgICAgLy8gR2V0IGZvcm1hdHRlciBmdW5jdGlvbiBhbHdheXMgcmV0dXJuIGEgdmFsaWQgdW5pb24sIGJ1dCB0aGUgY29udGVudHMgb2YgdGhpcyB1bmlvbiBtYXkgYmUgTlVMTC4KKyAgICAgICAgcCAtPkZyb21JbnB1dEZsb2F0ID0gX2Ntc0dldEZvcm1hdHRlcihDb250ZXh0SUQsICpJbnB1dEZvcm1hdCwgIGNtc0Zvcm1hdHRlcklucHV0LCBDTVNfUEFDS19GTEFHU19GTE9BVCkuRm10RmxvYXQ7CisgICAgICAgIHAgLT5Ub091dHB1dEZsb2F0ICA9IF9jbXNHZXRGb3JtYXR0ZXIoQ29udGV4dElELCAqT3V0cHV0Rm9ybWF0LCBjbXNGb3JtYXR0ZXJPdXRwdXQsIENNU19QQUNLX0ZMQUdTX0ZMT0FUKS5GbXRGbG9hdDsKKyAgICAgICAgKmR3RmxhZ3MgfD0gY21zRkxBR1NfQ0FOX0NIQU5HRV9GT1JNQVRURVI7CisKKyAgICAgICAgaWYgKHAgLT5Gcm9tSW5wdXRGbG9hdCA9PSBOVUxMIHx8IHAgLT5Ub091dHB1dEZsb2F0ID09IE5VTEwpIHsKKworICAgICAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9VTktOT1dOX0VYVEVOU0lPTiwgIlVuc3VwcG9ydGVkIHJhc3RlciBmb3JtYXQiKTsKKyAgICAgICAgICAgIF9jbXNGcmVlKENvbnRleHRJRCwgcCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgqZHdGbGFncyAmIGNtc0ZMQUdTX05VTExUUkFOU0ZPUk0pIHsKKworICAgICAgICAgICAgcCAtPnhmb3JtID0gTnVsbEZsb2F0WEZPUk07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBGbG9hdCB0cmFuc2Zvcm1zIGRvbid0IHVzZSBjYWNoPyBhbHdheXMgYXJlIG5vbi1OVUxMCisgICAgICAgICAgICBwIC0+eGZvcm0gPSBGbG9hdFhGT1JNOworICAgICAgICB9CisKKyAgICB9CisgICAgZWxzZSB7CisKKyAgICAgICAgaWYgKCpJbnB1dEZvcm1hdCA9PSAwICYmICpPdXRwdXRGb3JtYXQgPT0gMCkgeworICAgICAgICAgICAgcCAtPkZyb21JbnB1dCA9IHAgLT5Ub091dHB1dCA9IE5VTEw7CisgICAgICAgICAgICAqZHdGbGFncyB8PSBjbXNGTEFHU19DQU5fQ0hBTkdFX0ZPUk1BVFRFUjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgaW50IEJ5dGVzUGVyUGl4ZWxJbnB1dDsKKworICAgICAgICAgICAgcCAtPkZyb21JbnB1dCA9IF9jbXNHZXRGb3JtYXR0ZXIoQ29udGV4dElELCAqSW5wdXRGb3JtYXQsICBjbXNGb3JtYXR0ZXJJbnB1dCwgQ01TX1BBQ0tfRkxBR1NfMTZCSVRTKS5GbXQxNjsKKyAgICAgICAgICAgIHAgLT5Ub091dHB1dCAgPSBfY21zR2V0Rm9ybWF0dGVyKENvbnRleHRJRCwgKk91dHB1dEZvcm1hdCwgY21zRm9ybWF0dGVyT3V0cHV0LCBDTVNfUEFDS19GTEFHU18xNkJJVFMpLkZtdDE2OworCisgICAgICAgICAgICBpZiAocCAtPkZyb21JbnB1dCA9PSBOVUxMIHx8IHAgLT5Ub091dHB1dCA9PSBOVUxMKSB7CisKKyAgICAgICAgICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiVW5zdXBwb3J0ZWQgcmFzdGVyIGZvcm1hdCIpOworICAgICAgICAgICAgICAgIF9jbXNGcmVlKENvbnRleHRJRCwgcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEJ5dGVzUGVyUGl4ZWxJbnB1dCA9IFRfQllURVMocCAtPklucHV0Rm9ybWF0KTsKKyAgICAgICAgICAgIGlmIChCeXRlc1BlclBpeGVsSW5wdXQgPT0gMCB8fCBCeXRlc1BlclBpeGVsSW5wdXQgPj0gMikKKyAgICAgICAgICAgICAgICAgICAqZHdGbGFncyB8PSBjbXNGTEFHU19DQU5fQ0hBTkdFX0ZPUk1BVFRFUjsKKworICAgICAgICB9CisKKyAgICAgICAgaWYgKCpkd0ZsYWdzICYgY21zRkxBR1NfTlVMTFRSQU5TRk9STSkgeworCisgICAgICAgICAgICBwIC0+eGZvcm0gPSBOdWxsWEZPUk07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoKmR3RmxhZ3MgJiBjbXNGTEFHU19OT0NBQ0hFKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoKmR3RmxhZ3MgJiBjbXNGTEFHU19HQU1VVENIRUNLKQorICAgICAgICAgICAgICAgICAgICBwIC0+eGZvcm0gPSBQcmVjYWxjdWxhdGVkWEZPUk1HYW11dENoZWNrOyAgLy8gR2FtdXQgY2hlY2ssIG5vIGNhY2g/ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcCAtPnhmb3JtID0gUHJlY2FsY3VsYXRlZFhGT1JNOyAgLy8gTm8gY2FjaD8gbm8gZ2FtdXQgY2hlY2sKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICAgICAgaWYgKCpkd0ZsYWdzICYgY21zRkxBR1NfR0FNVVRDSEVDSykKKyAgICAgICAgICAgICAgICAgICAgcCAtPnhmb3JtID0gQ2FjaGVkWEZPUk1HYW11dENoZWNrOyAgICAvLyBHYW11dCBjaGVjaywgY2FjaD8gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBwIC0+eGZvcm0gPSBDYWNoZWRYRk9STTsgIC8vIE5vIGdhbXV0IGNoZWNrLCBjYWNoPworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcCAtPklucHV0Rm9ybWF0ICAgICA9ICpJbnB1dEZvcm1hdDsKKyAgICBwIC0+T3V0cHV0Rm9ybWF0ICAgID0gKk91dHB1dEZvcm1hdDsKKyAgICBwIC0+ZHdPcmlnaW5hbEZsYWdzID0gKmR3RmxhZ3M7CisgICAgcCAtPkNvbnRleHRJRCAgICAgICA9IENvbnRleHRJRDsKKyAgICBwIC0+VXNlckRhdGEgICAgICAgID0gTlVMTDsKKyAgICByZXR1cm4gcDsKK30KKworc3RhdGljCitjbXNCb29sIEdldFhGb3JtQ29sb3JTcGFjZXMoaW50IG5Qcm9maWxlcywgY21zSFBST0ZJTEUgaFByb2ZpbGVzW10sIGNtc0NvbG9yU3BhY2VTaWduYXR1cmUqIElucHV0LCBjbXNDb2xvclNwYWNlU2lnbmF0dXJlKiBPdXRwdXQpCit7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvclNwYWNlSW4sIENvbG9yU3BhY2VPdXQ7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBQb3N0Q29sb3JTcGFjZTsKKyAgICBpbnQgaTsKKworICAgIGlmIChuUHJvZmlsZXMgPD0gMCkgcmV0dXJuIEZBTFNFOworICAgIGlmIChoUHJvZmlsZXNbMF0gPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgKklucHV0ID0gUG9zdENvbG9yU3BhY2UgPSBjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlc1swXSk7CisKKyAgICBmb3IgKGk9MDsgaSA8IG5Qcm9maWxlczsgaSsrKSB7CisKKyAgICAgICAgY21zUHJvZmlsZUNsYXNzU2lnbmF0dXJlIGNsczsKKyAgICAgICAgY21zSFBST0ZJTEUgaFByb2ZpbGUgPSBoUHJvZmlsZXNbaV07CisKKyAgICAgICAgaW50IGxJc0lucHV0ID0gKFBvc3RDb2xvclNwYWNlICE9IGNtc1NpZ1hZWkRhdGEpICYmCisgICAgICAgICAgICAgICAgICAgICAgIChQb3N0Q29sb3JTcGFjZSAhPSBjbXNTaWdMYWJEYXRhKTsKKworICAgICAgICBpZiAoaFByb2ZpbGUgPT0gTlVMTCkgcmV0dXJuIEZBTFNFOworCisgICAgICAgIGNscyA9IGNtc0dldERldmljZUNsYXNzKGhQcm9maWxlKTsKKworICAgICAgICBpZiAoY2xzID09IGNtc1NpZ05hbWVkQ29sb3JDbGFzcykgeworCisgICAgICAgICAgICBDb2xvclNwYWNlSW4gICAgPSBjbXNTaWcxY29sb3JEYXRhOworICAgICAgICAgICAgQ29sb3JTcGFjZU91dCAgID0gKG5Qcm9maWxlcyA+IDEpID8gY21zR2V0UENTKGhQcm9maWxlKSA6IGNtc0dldENvbG9yU3BhY2UoaFByb2ZpbGUpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgaWYgKGxJc0lucHV0IHx8IChjbHMgPT0gY21zU2lnTGlua0NsYXNzKSkgeworCisgICAgICAgICAgICBDb2xvclNwYWNlSW4gICAgPSBjbXNHZXRDb2xvclNwYWNlKGhQcm9maWxlKTsKKyAgICAgICAgICAgIENvbG9yU3BhY2VPdXQgICA9IGNtc0dldFBDUyhoUHJvZmlsZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBDb2xvclNwYWNlSW4gICAgPSBjbXNHZXRQQ1MoaFByb2ZpbGUpOworICAgICAgICAgICAgQ29sb3JTcGFjZU91dCAgID0gY21zR2V0Q29sb3JTcGFjZShoUHJvZmlsZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaT09MCkKKyAgICAgICAgICAgICpJbnB1dCA9IENvbG9yU3BhY2VJbjsKKworICAgICAgICBQb3N0Q29sb3JTcGFjZSA9IENvbG9yU3BhY2VPdXQ7CisgICAgfQorCisgICAgKk91dHB1dCA9IFBvc3RDb2xvclNwYWNlOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKy8vIENoZWNrIGNvbG9yc3BhY2UKK3N0YXRpYworY21zQm9vbCAgSXNQcm9wZXJDb2xvclNwYWNlKGNtc0NvbG9yU3BhY2VTaWduYXR1cmUgQ2hlY2ssIGNtc1VJbnQzMk51bWJlciBkd0Zvcm1hdCkKK3sKKyAgICBpbnQgU3BhY2UxID0gVF9DT0xPUlNQQUNFKGR3Rm9ybWF0KTsKKyAgICBpbnQgU3BhY2UyID0gX2Ntc0xDTVNjb2xvclNwYWNlKENoZWNrKTsKKworICAgIGlmIChTcGFjZTEgPT0gUFRfQU5ZKSByZXR1cm4gVFJVRTsKKyAgICBpZiAoU3BhY2UxID09IFNwYWNlMikgcmV0dXJuIFRSVUU7CisKKyAgICBpZiAoU3BhY2UxID09IFBUX0xhYlYyICYmIFNwYWNlMiA9PSBQVF9MYWIpIHJldHVybiBUUlVFOworICAgIGlmIChTcGFjZTEgPT0gUFRfTGFiICAgJiYgU3BhY2UyID09IFBUX0xhYlYyKSByZXR1cm4gVFJVRTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMKK3ZvaWQgU2V0V2hpdGVQb2ludChjbXNDSUVYWVoqIHd0UHQsIGNvbnN0IGNtc0NJRVhZWiogc3JjKQoreworICAgIGlmIChzcmMgPT0gTlVMTCkgeworICAgICAgICB3dFB0IC0+WCA9IGNtc0Q1MFg7CisgICAgICAgIHd0UHQgLT5ZID0gY21zRDUwWTsKKyAgICAgICAgd3RQdCAtPlogPSBjbXNENTBaOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd3RQdCAtPlggPSBzcmMtPlg7CisgICAgICAgIHd0UHQgLT5ZID0gc3JjLT5ZOworICAgICAgICB3dFB0IC0+WiA9IHNyYy0+WjsKKyAgICB9CisKK30KKworLy8gTmV3IHRvIGxjbXMgMi4wIC0tIGhhdmUgYWxsIHBhcmFtZXRlcnMgYXZhaWxhYmxlLgorY21zSFRSQU5TRk9STSBDTVNFWFBPUlQgY21zQ3JlYXRlRXh0ZW5kZWRUcmFuc2Zvcm0oY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgblByb2ZpbGVzLCBjbXNIUFJPRklMRSBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Jvb2wgIEJQQ1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIEludGVudHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvblN0YXRlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgaEdhbXV0UHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBuR2FtdXRQQ1Nwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBPdXRwdXRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykKK3sKKyAgICBfY21zVFJBTlNGT1JNKiB4Zm9ybTsgICAgCisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBFbnRyeUNvbG9yU3BhY2U7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBFeGl0Q29sb3JTcGFjZTsKKyAgICBjbXNQaXBlbGluZSogTHV0OworICAgIGNtc1VJbnQzMk51bWJlciBMYXN0SW50ZW50ID0gSW50ZW50c1tuUHJvZmlsZXMtMV07CisKKyAgICAvLyBJZiBpdCBpcyBhIGZha2UgdHJhbnNmb3JtCisgICAgaWYgKGR3RmxhZ3MgJiBjbXNGTEFHU19OVUxMVFJBTlNGT1JNKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFsbG9jRW1wdHlUcmFuc2Zvcm0oQ29udGV4dElELCBOVUxMLCBJTlRFTlRfUEVSQ0VQVFVBTCwgJklucHV0Rm9ybWF0LCAmT3V0cHV0Rm9ybWF0LCAmZHdGbGFncyk7CisgICAgfQorCisgICAgLy8gSWYgZ2FtdXQgY2hlY2sgaXMgcmVxdWVzdGVkLCBtYWtlIHN1cmUgd2UgaGF2ZSBhIGdhbXV0IHByb2ZpbGUKKyAgICBpZiAoZHdGbGFncyAmIGNtc0ZMQUdTX0dBTVVUQ0hFQ0spIHsKKyAgICAgICAgaWYgKGhHYW11dFByb2ZpbGUgPT0gTlVMTCkgZHdGbGFncyAmPSB+Y21zRkxBR1NfR0FNVVRDSEVDSzsKKyAgICB9CisKKyAgICAvLyBPbiBmbG9hdGluZyBwb2ludCB0cmFuc2Zvcm1zLCBpbmhpYml0IGNhY2hlCisgICAgaWYgKF9jbXNGb3JtYXR0ZXJJc0Zsb2F0KElucHV0Rm9ybWF0KSB8fCBfY21zRm9ybWF0dGVySXNGbG9hdChPdXRwdXRGb3JtYXQpKQorICAgICAgICBkd0ZsYWdzIHw9IGNtc0ZMQUdTX05PQ0FDSEU7CisKKyAgICAvLyBNYXJrIGVudHJ5L2V4aXQgc3BhY2VzCisgICAgaWYgKCFHZXRYRm9ybUNvbG9yU3BhY2VzKG5Qcm9maWxlcywgaFByb2ZpbGVzLCAmRW50cnlDb2xvclNwYWNlLCAmRXhpdENvbG9yU3BhY2UpKSB7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKENvbnRleHRJRCwgY21zRVJST1JfTlVMTCwgIk5VTEwgaW5wdXQgcHJvZmlsZXMgb24gdHJhbnNmb3JtIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8vIENoZWNrIGlmIHByb3BlciBjb2xvcnNwYWNlcworICAgIGlmICghSXNQcm9wZXJDb2xvclNwYWNlKEVudHJ5Q29sb3JTcGFjZSwgSW5wdXRGb3JtYXQpKSB7CisgICAgICAgIGNtc1NpZ25hbEVycm9yKENvbnRleHRJRCwgY21zRVJST1JfQ09MT1JTUEFDRV9DSEVDSywgIldyb25nIGlucHV0IGNvbG9yIHNwYWNlIG9uIHRyYW5zZm9ybSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIUlzUHJvcGVyQ29sb3JTcGFjZShFeGl0Q29sb3JTcGFjZSwgT3V0cHV0Rm9ybWF0KSkgeworICAgICAgICBjbXNTaWduYWxFcnJvcihDb250ZXh0SUQsIGNtc0VSUk9SX0NPTE9SU1BBQ0VfQ0hFQ0ssICJXcm9uZyBvdXRwdXQgY29sb3Igc3BhY2Ugb24gdHJhbnNmb3JtIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIHBpcGVsaW5lIHdpdGggYWxsIHRyYW5zZm9ybWF0aW9ucworICAgIEx1dCA9IF9jbXNMaW5rUHJvZmlsZXMoQ29udGV4dElELCBuUHJvZmlsZXMsIEludGVudHMsIGhQcm9maWxlcywgQlBDLCBBZGFwdGF0aW9uU3RhdGVzLCBkd0ZsYWdzKTsKKyAgICBpZiAoTHV0ID09IE5VTEwpIHsKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9OT1RfU1VJVEFCTEUsICJDb3VsZG4ndCBsaW5rIHRoZSBwcm9maWxlcyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBDaGVjayBjaGFubmVsIGNvdW50CisgICAgaWYgKChjbXNDaGFubmVsc09mKEVudHJ5Q29sb3JTcGFjZSkgIT0gY21zUGlwZWxpbmVJbnB1dENoYW5uZWxzKEx1dCkpIHx8CisgICAgICAgIChjbXNDaGFubmVsc09mKEV4aXRDb2xvclNwYWNlKSAgIT0gY21zUGlwZWxpbmVPdXRwdXRDaGFubmVscyhMdXQpKSkgeworICAgICAgICBjbXNQaXBlbGluZUZyZWUoTHV0KTsKKyAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9OT1RfU1VJVEFCTEUsICJDaGFubmVsIGNvdW50IGRvZXNuJ3QgbWF0Y2guIFByb2ZpbGUgaXMgY29ycnVwdGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworCisgICAgLy8gQWxsIHNlZW1zIG9rCisgICAgeGZvcm0gPSBBbGxvY0VtcHR5VHJhbnNmb3JtKENvbnRleHRJRCwgTHV0LCBMYXN0SW50ZW50LCAmSW5wdXRGb3JtYXQsICZPdXRwdXRGb3JtYXQsICZkd0ZsYWdzKTsKKyAgICBpZiAoeGZvcm0gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvLyBLZWVwIHZhbHVlcworICAgIHhmb3JtIC0+RW50cnlDb2xvclNwYWNlID0gRW50cnlDb2xvclNwYWNlOworICAgIHhmb3JtIC0+RXhpdENvbG9yU3BhY2UgID0gRXhpdENvbG9yU3BhY2U7CisgICAgeGZvcm0gLT5SZW5kZXJpbmdJbnRlbnQgPSBJbnRlbnRzW25Qcm9maWxlcy0xXTsKKworICAgIC8vIFRha2Ugd2hpdGUgcG9pbnRzCisgICAgU2V0V2hpdGVQb2ludCgmeGZvcm0tPkVudHJ5V2hpdGVQb2ludCwgKGNtc0NJRVhZWiopIGNtc1JlYWRUYWcoaFByb2ZpbGVzWzBdLCBjbXNTaWdNZWRpYVdoaXRlUG9pbnRUYWcpKTsKKyAgICBTZXRXaGl0ZVBvaW50KCZ4Zm9ybS0+RXhpdFdoaXRlUG9pbnQsICAoY21zQ0lFWFlaKikgY21zUmVhZFRhZyhoUHJvZmlsZXNbblByb2ZpbGVzLTFdLCBjbXNTaWdNZWRpYVdoaXRlUG9pbnRUYWcpKTsKKyAgIAorCisgICAgLy8gQ3JlYXRlIGEgZ2FtdXQgY2hlY2sgTFVUIGlmIHJlcXVlc3RlZAorICAgIGlmIChoR2FtdXRQcm9maWxlICE9IE5VTEwgJiYgKGR3RmxhZ3MgJiBjbXNGTEFHU19HQU1VVENIRUNLKSkKKyAgICAgICAgeGZvcm0gLT5HYW11dENoZWNrICA9IF9jbXNDcmVhdGVHYW11dENoZWNrUGlwZWxpbmUoQ29udGV4dElELCBoUHJvZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJQQywgSW50ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRhcHRhdGlvblN0YXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkdhbXV0UENTcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhHYW11dFByb2ZpbGUpOworCisKKyAgICAvLyBUcnkgdG8gcmVhZCBpbnB1dCBhbmQgb3V0cHV0IGNvbG9yYW50IHRhYmxlCisgICAgaWYgKGNtc0lzVGFnKGhQcm9maWxlc1swXSwgY21zU2lnQ29sb3JhbnRUYWJsZVRhZykpIHsKKworICAgICAgICAvLyBJbnB1dCB0YWJsZSBjYW4gb25seSBjb21lIGluIHRoaXMgd2F5LgorICAgICAgICB4Zm9ybSAtPklucHV0Q29sb3JhbnQgPSBjbXNEdXBOYW1lZENvbG9yTGlzdCgoY21zTkFNRURDT0xPUkxJU1QqKSBjbXNSZWFkVGFnKGhQcm9maWxlc1swXSwgY21zU2lnQ29sb3JhbnRUYWJsZVRhZykpOworICAgIH0KKworICAgIC8vIE91dHB1dCBpcyBhIGxpdHRsZSBiaXQgbW9yZSBjb21wbGV4LgorICAgIGlmIChjbXNHZXREZXZpY2VDbGFzcyhoUHJvZmlsZXNbblByb2ZpbGVzLTFdKSA9PSBjbXNTaWdMaW5rQ2xhc3MpIHsKKworICAgICAgICAvLyBUaGlzIHRhZyBtYXkgZXhpc3Qgb25seSBvbiBkZXZpY2VsaW5rIHByb2ZpbGVzLgorICAgICAgICBpZiAoY21zSXNUYWcoaFByb2ZpbGVzW25Qcm9maWxlcy0xXSwgY21zU2lnQ29sb3JhbnRUYWJsZU91dFRhZykpIHsKKworICAgICAgICAgICAgLy8gSXQgbWF5IGJlIE5VTEwgaWYgZXJyb3IKKyAgICAgICAgICAgIHhmb3JtIC0+T3V0cHV0Q29sb3JhbnQgPSBjbXNEdXBOYW1lZENvbG9yTGlzdCgoY21zTkFNRURDT0xPUkxJU1QqKSBjbXNSZWFkVGFnKGhQcm9maWxlc1tuUHJvZmlsZXMtMV0sIGNtc1NpZ0NvbG9yYW50VGFibGVPdXRUYWcpKTsKKyAgICAgICAgfQorCisgICAgfSBlbHNlIHsKKworICAgICAgICBpZiAoY21zSXNUYWcoaFByb2ZpbGVzW25Qcm9maWxlcy0xXSwgY21zU2lnQ29sb3JhbnRUYWJsZVRhZykpIHsKKworICAgICAgICAgICAgeGZvcm0gLT4gT3V0cHV0Q29sb3JhbnQgPSBjbXNEdXBOYW1lZENvbG9yTGlzdCgoY21zTkFNRURDT0xPUkxJU1QqKSBjbXNSZWFkVGFnKGhQcm9maWxlc1tuUHJvZmlsZXMtMV0sIGNtc1NpZ0NvbG9yYW50VGFibGVUYWcpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFN0b3JlIHRoZSBzZXF1ZW5jZSBvZiBwcm9maWxlcworICAgIGlmIChkd0ZsYWdzICYgY21zRkxBR1NfS0VFUF9TRVFVRU5DRSkgeworICAgICAgICB4Zm9ybSAtPlNlcXVlbmNlID0gX2Ntc0NvbXBpbGVQcm9maWxlU2VxdWVuY2UoQ29udGV4dElELCBuUHJvZmlsZXMsIGhQcm9maWxlcyk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgeGZvcm0gLT5TZXF1ZW5jZSA9IE5VTEw7CisKKyAgICAvLyBJZiB0aGlzIGlzIGEgY2FjaGVkIHRyYW5zZm9ybSwgaW5pdCBmaXJzdCB2YWx1ZSwgd2hpY2ggaXMgemVybyAoMTYgYml0cyBvbmx5KQorICAgIGlmICghKGR3RmxhZ3MgJiBjbXNGTEFHU19OT0NBQ0hFKSkgeworCisgICAgICAgIG1lbXNldCgmeGZvcm0gLT5DYWNoZS5DYWNoZUluLCAwLCBzaXplb2YoeGZvcm0gLT5DYWNoZS5DYWNoZUluKSk7CisKKyAgICAgICAgaWYgKHhmb3JtIC0+R2FtdXRDaGVjayAhPSBOVUxMKSB7CisgICAgICAgICAgICBUcmFuc2Zvcm1PbmVQaXhlbFdpdGhHYW11dENoZWNrKHhmb3JtLCB4Zm9ybSAtPkNhY2hlLkNhY2hlSW4sIHhmb3JtLT5DYWNoZS5DYWNoZU91dCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgIHhmb3JtIC0+THV0IC0+RXZhbDE2Rm4oeGZvcm0gLT5DYWNoZS5DYWNoZUluLCB4Zm9ybS0+Q2FjaGUuQ2FjaGVPdXQsIHhmb3JtIC0+IEx1dC0+RGF0YSk7CisgICAgICAgIH0KKworICAgIH0KKworICAgIHJldHVybiAoY21zSFRSQU5TRk9STSkgeGZvcm07Cit9CisKKy8vIE11bHRpcHJvZmlsZSB0cmFuc2Zvcm1zOiBHYW11dCBjaGVjayBpcyBub3QgYXZhaWxhYmxlIGhlcmUsIGFzIGl0IGlzIHVuY2xlYXIgZnJvbSB3aGljaCBwcm9maWxlIHRoZSBnYW11dCBjb21lcy4KK2Ntc0hUUkFOU0ZPUk0gQ01TRVhQT1JUIGNtc0NyZWF0ZU11bHRpcHJvZmlsZVRyYW5zZm9ybVRIUihjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgblByb2ZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0cHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisgICAgY21zVUludDMyTnVtYmVyIGk7CisgICAgY21zQm9vbCBCUENbMjU2XTsKKyAgICBjbXNVSW50MzJOdW1iZXIgSW50ZW50c1syNTZdOworICAgIGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvblN0YXRlc1syNTZdOworCisgICAgaWYgKG5Qcm9maWxlcyA8PSAwIHx8IG5Qcm9maWxlcyA+IDI1NSkgeworICAgICAgICAgY21zU2lnbmFsRXJyb3IoQ29udGV4dElELCBjbXNFUlJPUl9SQU5HRSwgIldyb25nIG51bWJlciBvZiBwcm9maWxlcy4gMS4uMjU1IGV4cGVjdGVkLCAlZCBmb3VuZC4iLCBuUHJvZmlsZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IG5Qcm9maWxlczsgaSsrKSB7CisgICAgICAgIEJQQ1tpXSA9IGR3RmxhZ3MgJiBjbXNGTEFHU19CTEFDS1BPSU5UQ09NUEVOU0FUSU9OID8gVFJVRSA6IEZBTFNFOworICAgICAgICBJbnRlbnRzW2ldID0gSW50ZW50OworICAgICAgICBBZGFwdGF0aW9uU3RhdGVzW2ldID0gY21zU2V0QWRhcHRhdGlvblN0YXRlVEhSKENvbnRleHRJRCwgLTEpOworICAgIH0KKworCisgICAgcmV0dXJuIGNtc0NyZWF0ZUV4dGVuZGVkVHJhbnNmb3JtKENvbnRleHRJRCwgblByb2ZpbGVzLCBoUHJvZmlsZXMsIEJQQywgSW50ZW50cywgQWRhcHRhdGlvblN0YXRlcywgTlVMTCwgMCwgSW5wdXRGb3JtYXQsIE91dHB1dEZvcm1hdCwgZHdGbGFncyk7Cit9CisKKworCitjbXNIVFJBTlNGT1JNIENNU0VYUE9SVCBjbXNDcmVhdGVNdWx0aXByb2ZpbGVUcmFuc2Zvcm0oY21zSFBST0ZJTEUgaFByb2ZpbGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBuUHJvZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIE91dHB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIEludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisKKyAgICBpZiAoblByb2ZpbGVzIDw9IDAgfHwgblByb2ZpbGVzID4gMjU1KSB7CisgICAgICAgICBjbXNTaWduYWxFcnJvcihOVUxMLCBjbXNFUlJPUl9SQU5HRSwgIldyb25nIG51bWJlciBvZiBwcm9maWxlcy4gMS4uMjU1IGV4cGVjdGVkLCAlZCBmb3VuZC4iLCBuUHJvZmlsZXMpOworICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGNtc0NyZWF0ZU11bHRpcHJvZmlsZVRyYW5zZm9ybVRIUihjbXNHZXRQcm9maWxlQ29udGV4dElEKGhQcm9maWxlc1swXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhQcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgblByb2ZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3RmxhZ3MpOworfQorCitjbXNIVFJBTlNGT1JNIENNU0VYUE9SVCBjbXNDcmVhdGVUcmFuc2Zvcm1USFIoY21zQ29udGV4dCBDb250ZXh0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgSW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIE91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0cHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisKKyAgICBjbXNIUFJPRklMRSBoQXJyYXlbMl07CisKKyAgICBoQXJyYXlbMF0gPSBJbnB1dDsKKyAgICBoQXJyYXlbMV0gPSBPdXRwdXQ7CisKKyAgICByZXR1cm4gY21zQ3JlYXRlTXVsdGlwcm9maWxlVHJhbnNmb3JtVEhSKENvbnRleHRJRCwgaEFycmF5LCBPdXRwdXQgPT0gTlVMTCA/IDEgOiAyLCBJbnB1dEZvcm1hdCwgT3V0cHV0Rm9ybWF0LCBJbnRlbnQsIGR3RmxhZ3MpOworfQorCitDTVNBUEkgY21zSFRSQU5TRk9STSBDTVNFWFBPUlQgY21zQ3JlYXRlVHJhbnNmb3JtKGNtc0hQUk9GSUxFIElucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW5wdXRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIE91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIE91dHB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIEludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisgICAgcmV0dXJuIGNtc0NyZWF0ZVRyYW5zZm9ybVRIUihjbXNHZXRQcm9maWxlQ29udGV4dElEKElucHV0KSwgSW5wdXQsIElucHV0Rm9ybWF0LCBPdXRwdXQsIE91dHB1dEZvcm1hdCwgSW50ZW50LCBkd0ZsYWdzKTsKK30KKworCitjbXNIVFJBTlNGT1JNIENNU0VYUE9SVCBjbXNDcmVhdGVQcm9vZmluZ1RyYW5zZm9ybVRIUihjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIElucHV0UHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIE91dHB1dFByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0cHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgUHJvb2ZpbmdQcm9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG5JbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgUHJvb2ZpbmdJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgZHdGbGFncykKK3sKKyAgICBjbXNIUFJPRklMRSBoQXJyYXlbNF07CisgICAgY21zVUludDMyTnVtYmVyIEludGVudHNbNF07CisgICAgY21zQm9vbCAgQlBDWzRdOworICAgIGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvbls0XTsKKyAgICBjbXNCb29sICBEb0JQQyA9IChkd0ZsYWdzICYgY21zRkxBR1NfQkxBQ0tQT0lOVENPTVBFTlNBVElPTikgPyBUUlVFIDogRkFMU0U7CisKKworICAgIGhBcnJheVswXSAgPSBJbnB1dFByb2ZpbGU7IGhBcnJheVsxXSA9IFByb29maW5nUHJvZmlsZTsgaEFycmF5WzJdICA9IFByb29maW5nUHJvZmlsZTsgICAgICAgICAgICAgICBoQXJyYXlbM10gPSBPdXRwdXRQcm9maWxlOworICAgIEludGVudHNbMF0gPSBuSW50ZW50OyAgICAgIEludGVudHNbMV0gPSBuSW50ZW50OyAgICAgICAgSW50ZW50c1syXSA9IElOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUM7ICBJbnRlbnRzWzNdID0gUHJvb2ZpbmdJbnRlbnQ7CisgICAgQlBDWzBdICAgICA9IERvQlBDOyAgICAgICAgQlBDWzFdID0gRG9CUEM7ICAgICAgICAgICAgICBCUENbMl0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJQQ1szXSA9IDA7CisKKyAgICBBZGFwdGF0aW9uWzBdID0gQWRhcHRhdGlvblsxXSA9IEFkYXB0YXRpb25bMl0gPSBBZGFwdGF0aW9uWzNdID0gY21zU2V0QWRhcHRhdGlvblN0YXRlVEhSKENvbnRleHRJRCwgLTEpOworCisgICAgaWYgKCEoZHdGbGFncyAmIChjbXNGTEFHU19TT0ZUUFJPT0ZJTkd8Y21zRkxBR1NfR0FNVVRDSEVDSykpKQorICAgICAgICByZXR1cm4gY21zQ3JlYXRlVHJhbnNmb3JtVEhSKENvbnRleHRJRCwgSW5wdXRQcm9maWxlLCBJbnB1dEZvcm1hdCwgT3V0cHV0UHJvZmlsZSwgT3V0cHV0Rm9ybWF0LCBuSW50ZW50LCBkd0ZsYWdzKTsKKworICAgIHJldHVybiBjbXNDcmVhdGVFeHRlbmRlZFRyYW5zZm9ybShDb250ZXh0SUQsIDQsIGhBcnJheSwgQlBDLCBJbnRlbnRzLCBBZGFwdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb29maW5nUHJvZmlsZSwgMSwgSW5wdXRGb3JtYXQsIE91dHB1dEZvcm1hdCwgZHdGbGFncyk7CisKK30KKworCitjbXNIVFJBTlNGT1JNIENNU0VYUE9SVCBjbXNDcmVhdGVQcm9vZmluZ1RyYW5zZm9ybShjbXNIUFJPRklMRSBJbnB1dFByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgSW5wdXRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNIUFJPRklMRSBPdXRwdXRQcm9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIE91dHB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIFByb29maW5nUHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBuSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFByb29maW5nSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIGR3RmxhZ3MpCit7CisgICAgcmV0dXJuIGNtc0NyZWF0ZVByb29maW5nVHJhbnNmb3JtVEhSKGNtc0dldFByb2ZpbGVDb250ZXh0SUQoSW5wdXRQcm9maWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0UHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0UHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb29maW5nUHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9vZmluZ0ludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3RmxhZ3MpOworfQorCisKKy8vIEdyYWIgdGhlIENvbnRleHRJRCBmcm9tIGFuIG9wZW4gdHJhbnNmb3JtLiBSZXR1cm5zIE5VTEwgaWYgYSBOVUxMIHRyYW5zZm9ybSBpcyBwYXNzZWQKK2Ntc0NvbnRleHQgQ01TRVhQT1JUIGNtc0dldFRyYW5zZm9ybUNvbnRleHRJRChjbXNIVFJBTlNGT1JNIGhUcmFuc2Zvcm0pCit7CisgICAgX2Ntc1RSQU5TRk9STSogeGZvcm0gPSAoX2Ntc1RSQU5TRk9STSopIGhUcmFuc2Zvcm07CisKKyAgICBpZiAoeGZvcm0gPT0gTlVMTCkgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHhmb3JtIC0+IENvbnRleHRJRDsKK30KKworLy8gR3JhYiB0aGUgaW5wdXQvb3V0cHV0IGZvcm1hdHMKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0VHJhbnNmb3JtSW5wdXRGb3JtYXQoY21zSFRSQU5TRk9STSBoVHJhbnNmb3JtKQoreworICAgIF9jbXNUUkFOU0ZPUk0qIHhmb3JtID0gKF9jbXNUUkFOU0ZPUk0qKSBoVHJhbnNmb3JtOworCisgICAgaWYgKHhmb3JtID09IE5VTEwpIHJldHVybiAwOworICAgIHJldHVybiB4Zm9ybS0+SW5wdXRGb3JtYXQ7Cit9CisKK2Ntc1VJbnQzMk51bWJlciBDTVNFWFBPUlQgY21zR2V0VHJhbnNmb3JtT3V0cHV0Rm9ybWF0KGNtc0hUUkFOU0ZPUk0gaFRyYW5zZm9ybSkKK3sKKyAgICBfY21zVFJBTlNGT1JNKiB4Zm9ybSA9IChfY21zVFJBTlNGT1JNKikgaFRyYW5zZm9ybTsKKworICAgIGlmICh4Zm9ybSA9PSBOVUxMKSByZXR1cm4gMDsKKyAgICByZXR1cm4geGZvcm0tPk91dHB1dEZvcm1hdDsKK30KKworLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CitjbXNCb29sIENNU0VYUE9SVCBjbXNDaGFuZ2VCdWZmZXJzRm9ybWF0KGNtc0hUUkFOU0ZPUk0gaFRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgT3V0cHV0Rm9ybWF0KQoreworCisgICAgX2Ntc1RSQU5TRk9STSogeGZvcm0gPSAoX2Ntc1RSQU5TRk9STSopIGhUcmFuc2Zvcm07CisgICAgY21zRm9ybWF0dGVyMTYgRnJvbUlucHV0LCBUb091dHB1dDsKKworCisgICAgLy8gV2Ugb25seSBjYW4gYWZmb3JkIHRvIGNoYW5nZSBmb3JtYXR0ZXJzIGlmIHByZXZpb3VzIHRyYW5zZm9ybSBpcyBhdCBsZWFzdCAxNiBiaXRzCisgICAgaWYgKCEoeGZvcm0gLT5kd09yaWdpbmFsRmxhZ3MgJiBjbXNGTEFHU19DQU5fQ0hBTkdFX0ZPUk1BVFRFUikpIHsKKworICAgICAgICBjbXNTaWduYWxFcnJvcih4Zm9ybSAtPkNvbnRleHRJRCwgY21zRVJST1JfTk9UX1NVSVRBQkxFLCAiY21zQ2hhbmdlQnVmZmVyc0Zvcm1hdCB3b3JrcyBvbmx5IG9uIHRyYW5zZm9ybXMgY3JlYXRlZCBvcmlnaW5hbGx5IHdpdGggYXQgbGVhc3QgMTYgYml0cyBvZiBwcmVjaXNpb24iKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIEZyb21JbnB1dCA9IF9jbXNHZXRGb3JtYXR0ZXIoeGZvcm0tPkNvbnRleHRJRCwgSW5wdXRGb3JtYXQsICBjbXNGb3JtYXR0ZXJJbnB1dCwgQ01TX1BBQ0tfRkxBR1NfMTZCSVRTKS5GbXQxNjsKKyAgICBUb091dHB1dCAgPSBfY21zR2V0Rm9ybWF0dGVyKHhmb3JtLT5Db250ZXh0SUQsIE91dHB1dEZvcm1hdCwgY21zRm9ybWF0dGVyT3V0cHV0LCBDTVNfUEFDS19GTEFHU18xNkJJVFMpLkZtdDE2OworCisgICAgaWYgKEZyb21JbnB1dCA9PSBOVUxMIHx8IFRvT3V0cHV0ID09IE5VTEwpIHsKKworICAgICAgICBjbXNTaWduYWxFcnJvcih4Zm9ybSAtPiBDb250ZXh0SUQsIGNtc0VSUk9SX1VOS05PV05fRVhURU5TSU9OLCAiVW5zdXBwb3J0ZWQgcmFzdGVyIGZvcm1hdCIpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgeGZvcm0gLT5JbnB1dEZvcm1hdCAgPSBJbnB1dEZvcm1hdDsKKyAgICB4Zm9ybSAtPk91dHB1dEZvcm1hdCA9IE91dHB1dEZvcm1hdDsKKyAgICB4Zm9ybSAtPkZyb21JbnB1dCAgICA9IEZyb21JbnB1dDsKKyAgICB4Zm9ybSAtPlRvT3V0cHV0ICAgICA9IFRvT3V0cHV0OworICAgIHJldHVybiBUUlVFOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2xjbXMyX2ludGVybmFsLmggYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL2xjbXMyLTIuNi9zcmMvbGNtczJfaW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTE5MjE4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9sY21zMi0yLjYvc3JjL2xjbXMyX2ludGVybmFsLmgKQEAgLTAsMCArMSwxMDMyIEBACisvLzw8PCsrK09QRU5TT1VSQ0UKKy8vPDw8KysrT1BFTlNPVVJDRV9NVVNUX0JFR0lOIENPTU1FTlQ9PVRSVUUKKy8vCisvLyAgTGl0dGxlIENvbG9yIE1hbmFnZW1lbnQgU3lzdGVtCisvLyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMTQgTWFydGkgTWFyaWEgU2FndWVyCisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisvLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisvLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQorLy8gaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8KKy8vIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisvLyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisvLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKy8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworCisjaWZuZGVmIF9sY21zX2ludGVybmFsX0gKKworLy8gSW5jbHVkZSBwbHVnLWluIGZvdW5kYXRpb24KKyNpZm5kZWYgX2xjbXNfcGx1Z2luX0gKKyMgICBpbmNsdWRlICIuLi9pbmNsdWRlL2xjbXMyX3BsdWdpbi5oIgorI2VuZGlmCisKKy8vIGN0eXBlIGlzIHBhcnQgb2YgQzk5IGFzIHBlciA3LjEuMgorI2luY2x1ZGUgPGN0eXBlLmg+CisKKy8vIGFzc2VydCBtYWNybyBpcyBwYXJ0IG9mIEM5OSBhcyBwZXIgNy4yCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKy8vIFNvbWUgbmVlZGVkIGNvbnN0YW50cworI2lmbmRlZiBNX1BJCisjICAgICAgIGRlZmluZSBNX1BJICAgICAgICAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2CisjZW5kaWYKKworI2lmbmRlZiBNX0xPRzEwRQorIyAgICAgICBkZWZpbmUgTV9MT0cxMEUgICAgMC40MzQyOTQ0ODE5MDMyNTE4Mjc2NTEKKyNlbmRpZgorCisvLyBCb3JsYW5kQyA1LjUsIFZDMjAwMyBhcmUgYnJva2VuIG9uIHRoYXQKKyNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgKF9NU0NfVkVSIDwgMTQwMCkgLy8gMTQwMCA9PSBWQysrIDguMAorI2RlZmluZSBzaW5mKHgpIChmbG9hdClzaW4oKGZsb2F0KXgpCisjZGVmaW5lIHNxcnRmKHgpIChmbG9hdClzcXJ0KChmbG9hdCl4KQorI2VuZGlmCisKKworLy8gQWxpZ25tZW50IG9mIElDQyBmaWxlIGZvcm1hdCB1c2VzIDQgYnl0ZXMgKGNtc1VJbnQzMk51bWJlcikKKyNkZWZpbmUgX2Ntc0FMSUdOTE9ORyh4KSAoKCh4KSsoc2l6ZW9mKGNtc1VJbnQzMk51bWJlciktMSkpICYgfihzaXplb2YoY21zVUludDMyTnVtYmVyKS0xKSkKKworLy8gQWxpZ25tZW50IHRvIG1lbW9yeSBwb2ludGVyCisjZGVmaW5lIF9jbXNBTElHTk1FTSh4KSAgKCgoeCkrKHNpemVvZih2b2lkICopIC0gMSkpICYgfihzaXplb2Yodm9pZCAqKSAtIDEpKQorCisvLyBNYXhpbXVtIGVuY29kZWFibGUgdmFsdWVzIGluIGZsb2F0aW5nIHBvaW50CisjZGVmaW5lIE1BWF9FTkNPREVBQkxFX1hZWiAgKDEuMCArIDMyNzY3LjAvMzI3NjguMCkKKyNkZWZpbmUgTUlOX0VOQ09ERUFCTEVfYWIyICAoLTEyOC4wKQorI2RlZmluZSBNQVhfRU5DT0RFQUJMRV9hYjIgICgoNjU1MzUuMC8yNTYuMCkgLSAxMjguMCkKKyNkZWZpbmUgTUlOX0VOQ09ERUFCTEVfYWI0ICAoLTEyOC4wKQorI2RlZmluZSBNQVhfRU5DT0RFQUJMRV9hYjQgICgxMjcuMCkKKworLy8gTWF4aW11bSBvZiBjaGFubmVscyBmb3IgaW50ZXJuYWwgcGlwZWxpbmUgZXZhbHVhdGlvbgorI2RlZmluZSBNQVhfU1RBR0VfQ0hBTk5FTFMgIDEyOAorCisvLyBVbnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcgc3VwcmVzc2lvbgorI2RlZmluZSBjbXNVTlVTRURfUEFSQU1FVEVSKHgpICgodm9pZCl4KQorCisvLyBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgImlubGluZSIgaXMgc2VjdGlvbiA2LjcuNCBvZiB0aGUgQzk5IHN0YW5kYXJkIChJU08vSUVDIDk4OTk6MTk5OSkuCisvLyB1bmZvcnR1bmF0ZWx5IFZpc3VhbEMrKyBkb2VzIG5vdCBjb25mb3JtIHRoYXQKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKKyMgICBkZWZpbmUgY21zSU5MSU5FIF9faW5saW5lCisjZWxzZQorIyAgIGRlZmluZSBjbXNJTkxJTkUgc3RhdGljIGlubGluZQorI2VuZGlmCisKKy8vIE90aGVyIHJlcGxhY2VtZW50IGZ1bmN0aW9ucworI2lmZGVmIF9NU0NfVkVSCisjIGlmbmRlZiBzbnByaW50ZgorIyAgICAgICBkZWZpbmUgc25wcmludGYgIF9zbnByaW50ZgorIyBlbmRpZgorIyBpZm5kZWYgdnNucHJpbnRmCisjICAgICAgIGRlZmluZSB2c25wcmludGYgIF92c25wcmludGYKKyMgZW5kaWYKKyNlbmRpZgorCisKKy8vIEEgZmFzdCB3YXkgdG8gY29udmVydCBmcm9tL3RvIDE2IDwtPiA4IGJpdHMKKyNkZWZpbmUgRlJPTV84X1RPXzE2KHJnYikgKGNtc1VJbnQxNk51bWJlcikgKCgoKGNtc1VJbnQxNk51bWJlcikgKHJnYikpIDw8IDgpfChyZ2IpKQorI2RlZmluZSBGUk9NXzE2X1RPXzgocmdiKSAoY21zVUludDhOdW1iZXIpICgoKChyZ2IpICogNjUyODEgKyA4Mzg4NjA4KSA+PiAyNCkgJiAweEZGKQorCisvLyBDb2RlIGFuYWx5c2lzIGlzIGJyb2tlbiBvbiBhc3NlcnRzCisjaWZkZWYgX01TQ19WRVIKKyMgICAgaWYgKF9NU0NfVkVSID49IDE1MDApCisjICAgICAgICAgICAgZGVmaW5lIF9jbXNBc3NlcnQoYSkgIHsgYXNzZXJ0KChhKSk7IF9fYW5hbHlzaXNfYXNzdW1lKChhKSk7IH0KKyMgICAgIGVsc2UKKyMgICAgICAgICAgICBkZWZpbmUgX2Ntc0Fzc2VydChhKSAgIGFzc2VydCgoYSkpCisjICAgICBlbmRpZgorI2Vsc2UKKyMgICAgICBkZWZpbmUgX2Ntc0Fzc2VydChhKSAgIGFzc2VydCgoYSkpCisjZW5kaWYKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gRGV0ZXJtaW5hbnQgbG93ZXIgdGhhbiB0aGF0IGFyZSBhc3N1bWVkIHplcm8gKHVzZWQgb24gbWF0cml4IGludmVydCkKKyNkZWZpbmUgTUFUUklYX0RFVF9UT0xFUkFOQ0UgICAgMC4wMDAxCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEZpeGVkIHBvaW50CisjZGVmaW5lIEZJWEVEX1RPX0lOVCh4KSAgICAgICAgICgoeCk+PjE2KQorI2RlZmluZSBGSVhFRF9SRVNUX1RPX0lOVCh4KSAgICAoKHgpJjB4RkZGRlUpCisjZGVmaW5lIFJPVU5EX0ZJWEVEX1RPX0lOVCh4KSAgICgoKHgpKzB4ODAwMCk+PjE2KQorCitjbXNJTkxJTkUgY21zUzE1Rml4ZWQxNk51bWJlciBfY21zVG9GaXhlZERvbWFpbihpbnQgYSkgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gYSArICgoYSArIDB4N2ZmZikgLyAweGZmZmYpOyB9CitjbXNJTkxJTkUgaW50ICAgICAgICAgICAgICAgICBfY21zRnJvbUZpeGVkRG9tYWluKGNtc1MxNUZpeGVkMTZOdW1iZXIgYSkgeyByZXR1cm4gYSAtICgoYSArIDB4N2ZmZikgPj4gMTYpOyB9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEZhc3QgZmxvb3IgY29udmVyc2lvbiBsb2dpYy4gVGhhbmtzIHRvIFNyZWUgS290YXkgYW5kIFN0dWFydCBOaXhvbgorLy8gbm90ZSB0aGFuIHRoaXMgb25seSB3b3JrcyBpbiB0aGUgcmFuZ2UgLi4tMzI3NjcuLi4rMzI3NjcgYmVjYXVzZQorLy8gbWFudGlzc2EgaXMgaW50ZXJwcmV0ZWQgYXMgMTUuMTYgZml4ZWQgcG9pbnQuCisvLyBUaGUgdW5pb24gaXMgdG8gYXZvaWQgcG9pbnRlciBhbGlhc2luZyBvdmVyb3B0aW1pemF0aW9uLgorY21zSU5MSU5FIGludCBfY21zUXVpY2tGbG9vcihjbXNGbG9hdDY0TnVtYmVyIHZhbCkKK3sKKyNpZmRlZiBDTVNfRE9OVF9VU0VfRkFTVF9GTE9PUgorICAgIHJldHVybiAoaW50KSBmbG9vcih2YWwpOworI2Vsc2UKKyAgICBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIF9sY21zX2RvdWJsZTJmaXhtYWdpYyA9IDY4NzE5NDc2NzM2LjAgKiAxLjU7ICAvLyAyXjM2ICogMS41LCAoNTItMTY9MzYpIHVzZXMgbGltaXRlZCBwcmVjaXNpb24gdG8gZmxvb3IKKyAgICB1bmlvbiB7CisgICAgICAgIGNtc0Zsb2F0NjROdW1iZXIgdmFsOworICAgICAgICBpbnQgaGFsdmVzWzJdOworICAgIH0gdGVtcDsKKworICAgIHRlbXAudmFsID0gdmFsICsgX2xjbXNfZG91YmxlMmZpeG1hZ2ljOworCisjaWZkZWYgQ01TX1VTRV9CSUdfRU5ESUFOCisgICAgcmV0dXJuIHRlbXAuaGFsdmVzWzFdID4+IDE2OworI2Vsc2UKKyAgICByZXR1cm4gdGVtcC5oYWx2ZXNbMF0gPj4gMTY7CisjZW5kaWYKKyNlbmRpZgorfQorCisvLyBGYXN0IGZsb29yIHJlc3RyaWN0ZWQgdG8gMC4uNjU1MzUuMAorY21zSU5MSU5FIGNtc1VJbnQxNk51bWJlciBfY21zUXVpY2tGbG9vcldvcmQoY21zRmxvYXQ2NE51bWJlciBkKQoreworICAgIHJldHVybiAoY21zVUludDE2TnVtYmVyKSBfY21zUXVpY2tGbG9vcihkIC0gMzI3NjcuMCkgKyAzMjc2N1U7Cit9CisKKy8vIEZsb29yIHRvIHdvcmQsIHRha2luZyBjYXJlIG9mIHNhdHVyYXRpb24KK2Ntc0lOTElORSBjbXNVSW50MTZOdW1iZXIgX2Ntc1F1aWNrU2F0dXJhdGVXb3JkKGNtc0Zsb2F0NjROdW1iZXIgZCkKK3sKKyAgICBkICs9IDAuNTsKKyAgICBpZiAoZCA8PSAwKSByZXR1cm4gMDsKKyAgICBpZiAoZCA+PSA2NTUzNS4wKSByZXR1cm4gMHhmZmZmOworCisgICAgcmV0dXJuIF9jbXNRdWlja0Zsb29yV29yZChkKTsKK30KKworCisvLyBQdGhyZWFkIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNpZm5kZWYgQ01TX05PX1BUSFJFQURTCisKKy8vIFRoaXMgaXMgdGhlIHRocmVhZGluZyBzdXBwb3J0LiBVbmZvcnR1bmF0ZWx5LCBpdCBoYXMgdG8gYmUgcGxhdGZvcm0tZGVwZW5kZW50IGJlY2F1c2UgCisvLyB3aW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgcHRocmVhZHMuIAorCisjaWZkZWYgQ01TX0lTX1dJTkRPV1NfCisKKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTiAxCisjaW5jbHVkZSA8d2luZG93cy5oPgorCisKKy8vIEZyb206IGh0dHA6Ly9sb2NrbGVzc2luYy5jb20vYXJ0aWNsZXMvcHRocmVhZHNfb25fd2luZG93cy8KKy8vIFRoZSBwdGhyZWFkcyBBUEkgaGFzIGFuIGluaXRpYWxpemF0aW9uIG1hY3JvIHRoYXQgaGFzIG5vIGNvcnJlc3BvbmRlbmNlIHRvIGFueXRoaW5nIGluIAorLy8gdGhlIHdpbmRvd3MgQVBJLiBCeSBpbnZlc3RpZ2F0aW5nIHRoZSBpbnRlcm5hbCBkZWZpbml0aW9uIG9mIHRoZSBjcml0aWNhbCBzZWN0aW9uIHR5cGUsIAorLy8gb25lIG1heSB3b3JrIG91dCBob3cgdG8gaW5pdGlhbGl6ZSBvbmUgd2l0aG91dCBjYWxsaW5nIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oKS4gCisvLyBUaGUgdHJpY2sgaGVyZSBpcyB0aGF0IEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oKSBpcyBub3QgYWxsb3dlZCB0byBmYWlsLiBJdCB0cmllcyAKKy8vIHRvIGFsbG9jYXRlIGEgY3JpdGljYWwgc2VjdGlvbiBkZWJ1ZyBvYmplY3QsIGJ1dCBpZiBubyBtZW1vcnkgaXMgYXZhaWxhYmxlLCBpdCBzZXRzIAorLy8gdGhlIHBvaW50ZXIgdG8gYSBzcGVjaWZpYyB2YWx1ZS4gKE9uZSB3b3VsZCBleHBlY3QgdGhhdCB2YWx1ZSB0byBiZSBOVUxMLCBidXQgaXQgaXMgCisvLyBhY3R1YWxseSAodm9pZCAqKS0xIGZvciBzb21lIHJlYXNvbi4pIFRodXMgd2UgY2FuIHVzZSB0aGlzIHNwZWNpYWwgdmFsdWUgZm9yIHRoYXQgCisvLyBwb2ludGVyLCBhbmQgdGhlIGNyaXRpY2FsIHNlY3Rpb24gY29kZSB3aWxsIHdvcmsuCisKKy8vIFRoZSBvdGhlciBpbXBvcnRhbnQgcGFydCBvZiB0aGUgY3JpdGljYWwgc2VjdGlvbiB0eXBlIHRvIGluaXRpYWxpemUgaXMgdGhlIG51bWJlciAKKy8vIG9mIHdhaXRlcnMuIFRoaXMgY29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIG11dGV4IGlzIGxvY2tlZC4gRm9ydHVuYXRlbHksIHRoaXMgCisvLyBwYXJ0IG9mIHRoZSBjcml0aWNhbCBzZWN0aW9uIGlzIHVubGlrZWx5IHRvIGNoYW5nZS4gQXBwYXJlbnRseSwgbWFueSBwcm9ncmFtcyAKKy8vIGFscmVhZHkgdGVzdCBjcml0aWNhbCBzZWN0aW9ucyB0byBzZWUgaWYgdGhleSBhcmUgbG9ja2VkIHVzaW5nIHRoaXMgdmFsdWUsIHNvIAorLy8gTWljcm9zb2Z0IGZlbHQgdGhhdCBpdCB3YXMgbmVjZXNzYXJ5IHRvIGtlZXAgaXQgc2V0IGF0IC0xIGZvciBhbiB1bmxvY2tlZCBjcml0aWNhbAorLy8gc2VjdGlvbiwgZXZlbiB3aGVuIHRoZXkgY2hhbmdlZCB0aGUgdW5kZXJseWluZyBhbGdvcml0aG0gdG8gYmUgbW9yZSBzY2FsYWJsZS4gCisvLyBUaGUgZmluYWwgcGFydHMgb2YgdGhlIGNyaXRpY2FsIHNlY3Rpb24gb2JqZWN0IGFyZSB1bmltcG9ydGFudCwgYW5kIGNhbiBiZSBzZXQgCisvLyB0byB6ZXJvIGZvciB0aGVpciBkZWZhdWx0cy4gVGhpcyB5aWVsZHMgYW4gaW5pdGlhbGl6YXRpb24gbWFjcm86CisKK3R5cGVkZWYgQ1JJVElDQUxfU0VDVElPTiBfY21zTXV0ZXg7CisKKyNkZWZpbmUgQ01TX01VVEVYX0lOSVRJQUxJWkVSIHsodm9pZCopIC0xLC0xLDAsMCwwLDB9CisKK2Ntc0lOTElORSBpbnQgX2Ntc0xvY2tQcmltaXRpdmUoX2Ntc011dGV4ICptKQoreworCUVudGVyQ3JpdGljYWxTZWN0aW9uKG0pOworCXJldHVybiAwOworfQorCitjbXNJTkxJTkUgaW50IF9jbXNVbmxvY2tQcmltaXRpdmUoX2Ntc011dGV4ICptKQoreworCUxlYXZlQ3JpdGljYWxTZWN0aW9uKG0pOworCXJldHVybiAwOworfQorCQorY21zSU5MSU5FIGludCBfY21zSW5pdE11dGV4UHJpbWl0aXZlKF9jbXNNdXRleCAqbSkKK3sKKwlJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKG0pOworCXJldHVybiAwOworfQorCitjbXNJTkxJTkUgaW50IF9jbXNEZXN0cm95TXV0ZXhQcmltaXRpdmUoX2Ntc011dGV4ICptKQoreworCURlbGV0ZUNyaXRpY2FsU2VjdGlvbihtKTsKKwlyZXR1cm4gMDsKK30KKworY21zSU5MSU5FIGludCBfY21zRW50ZXJDcml0aWNhbFNlY3Rpb25QcmltaXRpdmUoX2Ntc011dGV4ICptKQoreworCUVudGVyQ3JpdGljYWxTZWN0aW9uKG0pOworCXJldHVybiAwOworfQorCitjbXNJTkxJTkUgaW50IF9jbXNMZWF2ZUNyaXRpY2FsU2VjdGlvblByaW1pdGl2ZShfY21zTXV0ZXggKm0pCit7CisJTGVhdmVDcml0aWNhbFNlY3Rpb24obSk7CisJcmV0dXJuIDA7Cit9CisKKyNlbHNlCisKKy8vIFJlc3Qgb2YgdGhlIHdpZGUgd29ybGQKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKyNkZWZpbmUgQ01TX01VVEVYX0lOSVRJQUxJWkVSIFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIKK3R5cGVkZWYgcHRocmVhZF9tdXRleF90IF9jbXNNdXRleDsKKworCitjbXNJTkxJTkUgaW50IF9jbXNMb2NrUHJpbWl0aXZlKF9jbXNNdXRleCAqbSkKK3sKKwlyZXR1cm4gcHRocmVhZF9tdXRleF9sb2NrKG0pOworfQorCitjbXNJTkxJTkUgaW50IF9jbXNVbmxvY2tQcmltaXRpdmUoX2Ntc011dGV4ICptKQoreworCXJldHVybiBwdGhyZWFkX211dGV4X3VubG9jayhtKTsKK30KKwkKK2Ntc0lOTElORSBpbnQgX2Ntc0luaXRNdXRleFByaW1pdGl2ZShfY21zTXV0ZXggKm0pCit7CisJcmV0dXJuIHB0aHJlYWRfbXV0ZXhfaW5pdChtLCBOVUxMKTsKK30KKworY21zSU5MSU5FIGludCBfY21zRGVzdHJveU11dGV4UHJpbWl0aXZlKF9jbXNNdXRleCAqbSkKK3sKKwlyZXR1cm4gcHRocmVhZF9tdXRleF9kZXN0cm95KG0pOworfQorCitjbXNJTkxJTkUgaW50IF9jbXNFbnRlckNyaXRpY2FsU2VjdGlvblByaW1pdGl2ZShfY21zTXV0ZXggKm0pCit7CisJcmV0dXJuIHB0aHJlYWRfbXV0ZXhfbG9jayhtKTsKK30KKworY21zSU5MSU5FIGludCBfY21zTGVhdmVDcml0aWNhbFNlY3Rpb25QcmltaXRpdmUoX2Ntc011dGV4ICptKQoreworCXJldHVybiBwdGhyZWFkX211dGV4X3VubG9jayhtKTsKK30KKworI2VuZGlmCisjZWxzZQorCisjZGVmaW5lIENNU19NVVRFWF9JTklUSUFMSVpFUiAwCit0eXBlZGVmIGludCBfY21zTXV0ZXg7CisKKworY21zSU5MSU5FIGludCBfY21zTG9ja1ByaW1pdGl2ZShfY21zTXV0ZXggKm0pCit7CisJcmV0dXJuIDA7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihtKTsKK30KKworY21zSU5MSU5FIGludCBfY21zVW5sb2NrUHJpbWl0aXZlKF9jbXNNdXRleCAqbSkKK3sKKwlyZXR1cm4gMDsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG0pOworfQorCQorY21zSU5MSU5FIGludCBfY21zSW5pdE11dGV4UHJpbWl0aXZlKF9jbXNNdXRleCAqbSkKK3sKKwlyZXR1cm4gMDsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG0pOworfQorCitjbXNJTkxJTkUgaW50IF9jbXNEZXN0cm95TXV0ZXhQcmltaXRpdmUoX2Ntc011dGV4ICptKQoreworCXJldHVybiAwOworICAgIGNtc1VOVVNFRF9QQVJBTUVURVIobSk7Cit9CisKK2Ntc0lOTElORSBpbnQgX2Ntc0VudGVyQ3JpdGljYWxTZWN0aW9uUHJpbWl0aXZlKF9jbXNNdXRleCAqbSkKK3sKKwlyZXR1cm4gMDsKKyAgICBjbXNVTlVTRURfUEFSQU1FVEVSKG0pOworfQorCitjbXNJTkxJTkUgaW50IF9jbXNMZWF2ZUNyaXRpY2FsU2VjdGlvblByaW1pdGl2ZShfY21zTXV0ZXggKm0pCit7CisJcmV0dXJuIDA7CisgICAgY21zVU5VU0VEX1BBUkFNRVRFUihtKTsKK30KKyNlbmRpZgorCisvLyBQbHVnLUluIHJlZ2lzdHJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gU3BlY2lhbGl6ZWQgZnVuY3Rpb24gZm9yIHBsdWctaW4gbWVtb3J5IG1hbmFnZW1lbnQuIE5vIHBhaXJpbmcgZnJlZSgpIHNpbmNlIHdob2xlIHBvb2wgaXMgZnJlZWQgYXQgb25jZS4KK3ZvaWQqIF9jbXNQbHVnaW5NYWxsb2MoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBzaXplKTsKKworLy8gTWVtb3J5IG1hbmFnZW1lbnQKK2Ntc0Jvb2wgICBfY21zUmVnaXN0ZXJNZW1IYW5kbGVyUGx1Z2luKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNQbHVnaW5CYXNlKiBQbHVnaW4pOworCisvLyBJbnRlcnBvbGF0aW9uCitjbXNCb29sICBfY21zUmVnaXN0ZXJJbnRlcnBQbHVnaW4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BsdWdpbkJhc2UqIFBsdWdpbik7CisKKy8vIFBhcmFtZXRyaWMgY3VydmVzCitjbXNCb29sICBfY21zUmVnaXN0ZXJQYXJhbWV0cmljQ3VydmVzUGx1Z2luKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNQbHVnaW5CYXNlKiBQbHVnaW4pOworCisvLyBGb3JtYXR0ZXJzIG1hbmFnZW1lbnQKK2Ntc0Jvb2wgIF9jbXNSZWdpc3RlckZvcm1hdHRlcnNQbHVnaW4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BsdWdpbkJhc2UqIFBsdWdpbik7CisKKy8vIFRhZyB0eXBlIG1hbmFnZW1lbnQKK2Ntc0Jvb2wgIF9jbXNSZWdpc3RlclRhZ1R5cGVQbHVnaW4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BsdWdpbkJhc2UqIFBsdWdpbik7CisKKy8vIFRhZyBtYW5hZ2VtZW50CitjbXNCb29sICBfY21zUmVnaXN0ZXJUYWdQbHVnaW4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BsdWdpbkJhc2UqIFBsdWdpbik7CisKKy8vIEludGVudCBtYW5hZ2VtZW50CitjbXNCb29sICBfY21zUmVnaXN0ZXJSZW5kZXJpbmdJbnRlbnRQbHVnaW4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BsdWdpbkJhc2UqIFBsdWdpbik7CisKKy8vIE11bHRpIFByb2Nlc3MgZWxlbWVudHMKK2Ntc0Jvb2wgIF9jbXNSZWdpc3Rlck11bHRpUHJvY2Vzc0VsZW1lbnRQbHVnaW4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BsdWdpbkJhc2UqIFBsdWdpbik7CisKKy8vIE9wdGltaXphdGlvbgorY21zQm9vbCAgX2Ntc1JlZ2lzdGVyT3B0aW1pemF0aW9uUGx1Z2luKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNQbHVnaW5CYXNlKiBQbHVnaW4pOworCisvLyBUcmFuc2Zvcm0KK2Ntc0Jvb2wgIF9jbXNSZWdpc3RlclRyYW5zZm9ybVBsdWdpbihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zUGx1Z2luQmFzZSogUGx1Z2luKTsKKworLy8gTXV0ZXgKK2Ntc0Jvb2wgX2Ntc1JlZ2lzdGVyTXV0ZXhQbHVnaW4oY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1BsdWdpbkJhc2UqIFBsdWdpbik7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBTdWJhbGxvY2F0b3JzLiAKK3R5cGVkZWYgc3RydWN0IF9jbXNTdWJBbGxvY2F0b3JfY2h1bmtfc3QgeworCisgICAgY21zVUludDhOdW1iZXIqIEJsb2NrOworICAgIGNtc1VJbnQzMk51bWJlciBCbG9ja1NpemU7CisgICAgY21zVUludDMyTnVtYmVyIFVzZWQ7CisKKyAgICBzdHJ1Y3QgX2Ntc1N1YkFsbG9jYXRvcl9jaHVua19zdCogbmV4dDsKKworfSBfY21zU3ViQWxsb2NhdG9yX2NodW5rOworCisKK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc0NvbnRleHQgQ29udGV4dElEOworICAgIF9jbXNTdWJBbGxvY2F0b3JfY2h1bmsqIGg7CisKK30gX2Ntc1N1YkFsbG9jYXRvcjsKKworCitfY21zU3ViQWxsb2NhdG9yKiBfY21zQ3JlYXRlU3ViQWxsb2MoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1VJbnQzMk51bWJlciBJbml0aWFsKTsKK3ZvaWQgICAgICAgICAgICAgIF9jbXNTdWJBbGxvY0Rlc3Ryb3koX2Ntc1N1YkFsbG9jYXRvciogcyk7Cit2b2lkKiAgICAgICAgICAgICBfY21zU3ViQWxsb2MoX2Ntc1N1YkFsbG9jYXRvciogcywgY21zVUludDMyTnVtYmVyIHNpemUpOwordm9pZCogICAgICAgICAgICAgX2Ntc1N1YkFsbG9jRHVwKF9jbXNTdWJBbGxvY2F0b3IqIHMsIGNvbnN0IHZvaWQgKnB0ciwgY21zVUludDMyTnVtYmVyIHNpemUpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFRoZSBjb250ZXh0IGNsaWVudHMuIAordHlwZWRlZiBlbnVtIHsKKworICAgIFVzZXJQdHIsICAgICAgICAgICAgLy8gVXNlci1kZWZpbmVkIHBvaW50ZXIKKyAgICBMb2dnZXIsCisgICAgQWxhcm1Db2Rlc0NvbnRleHQsCisgICAgQWRhcHRhdGlvblN0YXRlQ29udGV4dCwgCisgICAgTWVtUGx1Z2luLAorICAgIEludGVycFBsdWdpbiwKKyAgICBDdXJ2ZXNQbHVnaW4sCisgICAgRm9ybWF0dGVyc1BsdWdpbiwKKyAgICBUYWdUeXBlUGx1Z2luLAorICAgIFRhZ1BsdWdpbiwKKyAgICBJbnRlbnRQbHVnaW4sCisgICAgTVBFUGx1Z2luLAorICAgIE9wdGltaXphdGlvblBsdWdpbiwKKyAgICBUcmFuc2Zvcm1QbHVnaW4sCisgICAgTXV0ZXhQbHVnaW4sCisKKyAgICAvLyBMYXN0IGluIGxpc3QKKyAgICBNZW1vcnlDbGllbnRNYXgKKworfSBfY21zTWVtb3J5Q2xpZW50OworCisKKy8vIENvbnRhaW5lciBmb3IgbWVtb3J5IG1hbmFnZW1lbnQgcGx1Zy1pbi4KK3R5cGVkZWYgc3RydWN0IHsKKworICAgIF9jbXNNYWxsb2NGblB0clR5cGUgICAgIE1hbGxvY1B0cjsgICAgCisgICAgX2Ntc01hbGxvWmVyb2NGblB0clR5cGUgTWFsbG9jWmVyb1B0cjsKKyAgICBfY21zRnJlZUZuUHRyVHlwZSAgICAgICBGcmVlUHRyOworICAgIF9jbXNSZWFsbG9jRm5QdHJUeXBlICAgIFJlYWxsb2NQdHI7CisgICAgX2Ntc0NhbGxvY0ZuUHRyVHlwZSAgICAgQ2FsbG9jUHRyOworICAgIF9jbXNEdXBGblB0clR5cGUgICAgICAgIER1cFB0cjsKKworfSBfY21zTWVtUGx1Z2luQ2h1bmtUeXBlOworCisvLyBDb3B5IG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uIHBvaW50ZXJzIGZyb20gcGx1Zy1pbiB0byBjaHVuaywgdGFraW5nIGNhcmUgb2YgbWlzc2luZyByb3V0aW5lcwordm9pZCAgX2Ntc0luc3RhbGxBbGxvY0Z1bmN0aW9ucyhjbXNQbHVnaW5NZW1IYW5kbGVyKiBQbHVnaW4sIF9jbXNNZW1QbHVnaW5DaHVua1R5cGUqIHB0cik7CisKKy8vIEludGVybmFsIHN0cnVjdHVyZSBmb3IgY29udGV4dAorc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCB7CisgICAgCisgICAgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogTmV4dDsgIC8vIFBvaW50cyB0byBuZXh0IGNvbnRleHQgaW4gdGhlIG5ldyBzdHlsZQorICAgIF9jbXNTdWJBbGxvY2F0b3IqIE1lbVBvb2w7ICAgICAgICAvLyBUaGUgbWVtb3J5IHBvb2wgdGhhdCBzdG9yZXMgY29udGV4dCBkYXRhCisgICAgCisgICAgdm9pZCogY2h1bmtzW01lbW9yeUNsaWVudE1heF07ICAgIC8vIGFycmF5IG9mIHBvaW50ZXJzIHRvIGNsaWVudCBjaHVua3MuIE1lbW9yeSBpdHNlbGYgaXMgaG9sZCBpbiB0aGUgc3ViYWxsb2NhdG9yLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgTlVMTCwgdGhlbiBpdCByZXZlcnRzIHRvIGdsb2JhbCBDb250ZXh0MAorCisgICAgX2Ntc01lbVBsdWdpbkNodW5rVHlwZSBEZWZhdWx0TWVtb3J5TWFuYWdlcjsgIC8vIFRoZSBhbGxvY2F0b3JzIHVzZWQgZm9yIGNyZWF0aW5nIHRoZSBjb250ZXh0IGl0c2VsZi4gQ2Fubm90IGJlIG92ZXJyaWRlbgorfTsKKworLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSB2YWxpZCBjb250ZXh0IHN0cnVjdHVyZSwgaW5jbHVkaW5nIHRoZSBnbG9iYWwgb25lIGlmIGlkIGlzIHplcm8uIAorLy8gVmVyaWZpZXMgdGhlIG1hZ2ljIG51bWJlci4KK3N0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIF9jbXNHZXRDb250ZXh0KGNtc0NvbnRleHQgQ29udGV4dElEKTsKKworLy8gUmV0dXJucyB0aGUgYmxvY2sgYXNzaWduZWQgdG8gdGhlIHNwZWNpZmljIHpvbmUuIAordm9pZCogICAgIF9jbXNDb250ZXh0R2V0Q2xpZW50Q2h1bmsoY21zQ29udGV4dCBpZCwgX2Ntc01lbW9yeUNsaWVudCBtYyk7CisKKworLy8gQ2h1bmtzIG9mIGNvbnRleHQgbWVtb3J5IGJ5IHBsdWctaW4gY2xpZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gVGhvc2Ugc3RydWN0dXJlcyBlbmNhcHN1bGF0ZXMgYWxsIHZhcmlhYmxlcyBuZWVkZWQgYnkgdGhlIHNldmVyYWwgY29udGV4dCBjbGllbnRzIChtb3N0bHkgcGx1Zy1pbnMpCisKKy8vIENvbnRhaW5lciBmb3IgZXJyb3IgbG9nZ2VyIC0tIG5vdCBhIHBsdWctaW4KK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc0xvZ0Vycm9ySGFuZGxlckZ1bmN0aW9uIExvZ0Vycm9ySGFuZGxlcjsgIC8vIFNldCB0byBOVUxMIGZvciBDb250ZXh0MCBmYWxsYmFjaworCit9IF9jbXNMb2dFcnJvckNodW5rVHlwZTsKKworLy8gVGhlIGdsb2JhbCBDb250ZXh0MCBzdG9yYWdlIGZvciBlcnJvciBsb2dnZXIKK2V4dGVybiAgX2Ntc0xvZ0Vycm9yQ2h1bmtUeXBlICBfY21zTG9nRXJyb3JDaHVuazsKKworLy8gQWxsb2NhdGUgYW5kIGluaXQgZXJyb3IgbG9nZ2VyIGNvbnRhaW5lci4gCit2b2lkIF9jbXNBbGxvY0xvZ0Vycm9yQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpOworCisvLyBDb250YWluZXIgZm9yIGFsYXJtIGNvZGVzIC0tIG5vdCBhIHBsdWctaW4KK3R5cGVkZWYgc3RydWN0IHsKKyAgIAorICAgIGNtc1VJbnQxNk51bWJlciBBbGFybUNvZGVzW2Ntc01BWENIQU5ORUxTXTsKKworfSBfY21zQWxhcm1Db2Rlc0NodW5rVHlwZTsKKworLy8gVGhlIGdsb2JhbCBDb250ZXh0MCBzdG9yYWdlIGZvciBhbGFybSBjb2RlcworZXh0ZXJuICBfY21zQWxhcm1Db2Rlc0NodW5rVHlwZSBfY21zQWxhcm1Db2Rlc0NodW5rOworCisvLyBBbGxvY2F0ZSBhbmQgaW5pdCBhbGFybSBjb2RlcyBjb250YWluZXIuIAordm9pZCBfY21zQWxsb2NBbGFybUNvZGVzQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpOworCisvLyBDb250YWluZXIgZm9yIGFkYXB0YXRpb24gc3RhdGUgLS0gbm90IGEgcGx1Zy1pbgordHlwZWRlZiBzdHJ1Y3QgeworICAgIAorICAgIGNtc0Zsb2F0NjROdW1iZXIgIEFkYXB0YXRpb25TdGF0ZTsKKworfSBfY21zQWRhcHRhdGlvblN0YXRlQ2h1bmtUeXBlOworCisvLyBUaGUgZ2xvYmFsIENvbnRleHQwIHN0b3JhZ2UgZm9yIGFkYXB0YXRpb24gc3RhdGUKK2V4dGVybiAgX2Ntc0FkYXB0YXRpb25TdGF0ZUNodW5rVHlwZSAgICBfY21zQWRhcHRhdGlvblN0YXRlQ2h1bms7CisKKy8vIEFsbG9jYXRlIGFuZCBpbml0IGFkYXB0YXRpb24gc3RhdGUgY29udGFpbmVyLgordm9pZCBfY21zQWxsb2NBZGFwdGF0aW9uU3RhdGVDaHVuayhzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpOworCisKKy8vIFRoZSBnbG9iYWwgQ29udGV4dDAgc3RvcmFnZSBmb3IgbWVtb3J5IG1hbmFnZW1lbnQKK2V4dGVybiAgX2Ntc01lbVBsdWdpbkNodW5rVHlwZSBfY21zTWVtUGx1Z2luQ2h1bms7CisKKy8vIEFsbG9jYXRlIGFuZCBpbml0IG1lbW9yeSBtYW5hZ2VtZW50IGNvbnRhaW5lci4KK3ZvaWQgX2Ntc0FsbG9jTWVtUGx1Z2luQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKTsKKworLy8gQ29udGFpbmVyIGZvciBpbnRlcnBvbGF0aW9uIHBsdWctaW4KK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc0ludGVycEZuRmFjdG9yeSBJbnRlcnBvbGF0b3JzOworCit9IF9jbXNJbnRlcnBQbHVnaW5DaHVua1R5cGU7CisKKy8vIFRoZSBnbG9iYWwgQ29udGV4dDAgc3RvcmFnZSBmb3IgaW50ZXJwb2xhdGlvbiBwbHVnLWluCitleHRlcm4gIF9jbXNJbnRlcnBQbHVnaW5DaHVua1R5cGUgX2Ntc0ludGVycFBsdWdpbkNodW5rOworCisvLyBBbGxvY2F0ZSBhbmQgaW5pdCBpbnRlcnBvbGF0aW9uIGNvbnRhaW5lci4KK3ZvaWQgX2Ntc0FsbG9jSW50ZXJwUGx1Z2luQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKTsKKworLy8gQ29udGFpbmVyIGZvciBwYXJhbWV0cmljIGN1cnZlcyBwbHVnLWluCit0eXBlZGVmIHN0cnVjdCB7CisKKyAgICBzdHJ1Y3QgX2Ntc1BhcmFtZXRyaWNDdXJ2ZXNDb2xsZWN0aW9uX3N0KiBQYXJhbWV0cmljQ3VydmVzOworCit9IF9jbXNDdXJ2ZXNQbHVnaW5DaHVua1R5cGU7CisKKy8vIFRoZSBnbG9iYWwgQ29udGV4dDAgc3RvcmFnZSBmb3IgdG9uZSBjdXJ2ZXMgcGx1Zy1pbgorZXh0ZXJuICBfY21zQ3VydmVzUGx1Z2luQ2h1bmtUeXBlIF9jbXNDdXJ2ZXNQbHVnaW5DaHVuazsKKworLy8gQWxsb2NhdGUgYW5kIGluaXQgcGFyYW1ldHJpYyBjdXJ2ZXMgY29udGFpbmVyLgordm9pZCBfY21zQWxsb2NDdXJ2ZXNQbHVnaW5DaHVuayhzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKTsKKworLy8gQ29udGFpbmVyIGZvciBmb3JtYXR0ZXJzIHBsdWctaW4KK3R5cGVkZWYgc3RydWN0IHsKKworICAgIHN0cnVjdCBfY21zX2Zvcm1hdHRlcnNfZmFjdG9yeV9saXN0KiBGYWN0b3J5TGlzdDsKKworfSBfY21zRm9ybWF0dGVyc1BsdWdpbkNodW5rVHlwZTsKKworLy8gVGhlIGdsb2JhbCBDb250ZXh0MCBzdG9yYWdlIGZvciBmb3JtYXR0ZXJzIHBsdWctaW4KK2V4dGVybiAgX2Ntc0Zvcm1hdHRlcnNQbHVnaW5DaHVua1R5cGUgX2Ntc0Zvcm1hdHRlcnNQbHVnaW5DaHVuazsKKworLy8gQWxsb2NhdGUgYW5kIGluaXQgZm9ybWF0dGVycyBjb250YWluZXIuCit2b2lkIF9jbXNBbGxvY0Zvcm1hdHRlcnNQbHVnaW5DaHVuayhzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYyk7CisKKy8vIFRoaXMgY2h1bmsgdHlwZSBpcyBzaGFyZWQgYnkgVGFnVHlwZSBwbHVnLWluIGFuZCBNUEUgUGx1Zy1pbgordHlwZWRlZiBzdHJ1Y3QgeworCisgICAgc3RydWN0IF9jbXNUYWdUeXBlTGlua2VkTGlzdF9zdCogVGFnVHlwZXM7CisKK30gX2Ntc1RhZ1R5cGVQbHVnaW5DaHVua1R5cGU7CisKKworLy8gVGhlIGdsb2JhbCBDb250ZXh0MCBzdG9yYWdlIGZvciB0YWcgdHlwZXMgcGx1Zy1pbgorZXh0ZXJuICBfY21zVGFnVHlwZVBsdWdpbkNodW5rVHlwZSAgICAgIF9jbXNUYWdUeXBlUGx1Z2luQ2h1bms7CisKKworLy8gVGhlIGdsb2JhbCBDb250ZXh0MCBzdG9yYWdlIGZvciBtdWx0IHByb2Nlc3MgZWxlbWVudHMgcGx1Zy1pbgorZXh0ZXJuICBfY21zVGFnVHlwZVBsdWdpbkNodW5rVHlwZSAgICAgIF9jbXNNUEVUeXBlUGx1Z2luQ2h1bms7CisKKy8vIEFsbG9jYXRlIGFuZCBpbml0IFRhZyB0eXBlcyBjb250YWluZXIuCit2b2lkIF9jbXNBbGxvY1RhZ1R5cGVQbHVnaW5DaHVuayhzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBjdHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpOworLy8gQWxsb2NhdGUgYW5kIGluaXQgTVBFIGNvbnRhaW5lci4KK3ZvaWQgX2Ntc0FsbG9jTVBFVHlwZVBsdWdpbkNodW5rKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYyk7CisvLyBDb250YWluZXIgZm9yIHRhZyBwbHVnLWluCit0eXBlZGVmIHN0cnVjdCB7CisgICAKKyAgICBzdHJ1Y3QgX2Ntc1RhZ0xpbmtlZExpc3Rfc3QqIFRhZzsKKworfSBfY21zVGFnUGx1Z2luQ2h1bmtUeXBlOworCisKKy8vIFRoZSBnbG9iYWwgQ29udGV4dDAgc3RvcmFnZSBmb3IgdGFnIHBsdWctaW4KK2V4dGVybiAgX2Ntc1RhZ1BsdWdpbkNodW5rVHlwZSBfY21zVGFnUGx1Z2luQ2h1bms7CisKKy8vIEFsbG9jYXRlIGFuZCBpbml0IFRhZyBjb250YWluZXIuCit2b2lkIF9jbXNBbGxvY1RhZ1BsdWdpbkNodW5rKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpOyAKKworLy8gQ29udGFpbmVyIGZvciBpbnRlbnRzIHBsdWctaW4KK3R5cGVkZWYgc3RydWN0IHsKKworICAgIHN0cnVjdCBfY21zX2ludGVudHNfbGlzdCogSW50ZW50czsKKworfSBfY21zSW50ZW50c1BsdWdpbkNodW5rVHlwZTsKKworCisvLyBUaGUgZ2xvYmFsIENvbnRleHQwIHN0b3JhZ2UgZm9yIGludGVudHMgcGx1Zy1pbgorZXh0ZXJuICBfY21zSW50ZW50c1BsdWdpbkNodW5rVHlwZSBfY21zSW50ZW50c1BsdWdpbkNodW5rOworCisvLyBBbGxvY2F0ZSBhbmQgaW5pdCBpbnRlbnRzIGNvbnRhaW5lci4KK3ZvaWQgX2Ntc0FsbG9jSW50ZW50c1BsdWdpbkNodW5rKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYyk7IAorCisvLyBDb250YWluZXIgZm9yIG9wdGltaXphdGlvbiBwbHVnLWluCit0eXBlZGVmIHN0cnVjdCB7CisKKyAgICBzdHJ1Y3QgX2Ntc09wdGltaXphdGlvbkNvbGxlY3Rpb25fc3QqIE9wdGltaXphdGlvbkNvbGxlY3Rpb247CisKK30gX2Ntc09wdGltaXphdGlvblBsdWdpbkNodW5rVHlwZTsKKworCisvLyBUaGUgZ2xvYmFsIENvbnRleHQwIHN0b3JhZ2UgZm9yIG9wdGltaXplcnMgcGx1Zy1pbgorZXh0ZXJuICBfY21zT3B0aW1pemF0aW9uUGx1Z2luQ2h1bmtUeXBlIF9jbXNPcHRpbWl6YXRpb25QbHVnaW5DaHVuazsKKworLy8gQWxsb2NhdGUgYW5kIGluaXQgb3B0aW1pemVycyBjb250YWluZXIuCit2b2lkIF9jbXNBbGxvY09wdGltaXphdGlvblBsdWdpbkNodW5rKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIHNyYyk7CisKKy8vIENvbnRhaW5lciBmb3IgdHJhbnNmb3JtIHBsdWctaW4KK3R5cGVkZWYgc3RydWN0IHsKKworICAgIHN0cnVjdCBfY21zVHJhbnNmb3JtQ29sbGVjdGlvbl9zdCogVHJhbnNmb3JtQ29sbGVjdGlvbjsKKworfSBfY21zVHJhbnNmb3JtUGx1Z2luQ2h1bmtUeXBlOworCisvLyBUaGUgZ2xvYmFsIENvbnRleHQwIHN0b3JhZ2UgZm9yIGZ1bGwtdHJhbnNmb3JtIHJlcGxhY2VtZW50IHBsdWctaW4KK2V4dGVybiAgX2Ntc1RyYW5zZm9ybVBsdWdpbkNodW5rVHlwZSBfY21zVHJhbnNmb3JtUGx1Z2luQ2h1bms7CisKKy8vIEFsbG9jYXRlIGFuZCBpbml0IHRyYW5zZm9ybSBjb250YWluZXIuCit2b2lkIF9jbXNBbGxvY1RyYW5zZm9ybVBsdWdpbkNodW5rKHN0cnVjdCBfY21zQ29udGV4dF9zdHJ1Y3QqIGN0eCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogc3JjKTsKKworLy8gQ29udGFpbmVyIGZvciBtdXRleCBwbHVnLWluCit0eXBlZGVmIHN0cnVjdCB7CisKKyAgICBfY21zQ3JlYXRlTXV0ZXhGblB0clR5cGUgIENyZWF0ZU11dGV4UHRyOworICAgIF9jbXNEZXN0cm95TXV0ZXhGblB0clR5cGUgRGVzdHJveU11dGV4UHRyOworICAgIF9jbXNMb2NrTXV0ZXhGblB0clR5cGUgICAgTG9ja011dGV4UHRyOworICAgIF9jbXNVbmxvY2tNdXRleEZuUHRyVHlwZSAgVW5sb2NrTXV0ZXhQdHI7CisKK30gX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlOworCisvLyBUaGUgZ2xvYmFsIENvbnRleHQwIHN0b3JhZ2UgZm9yIG11dGV4IHBsdWctaW4KK2V4dGVybiAgX2Ntc011dGV4UGx1Z2luQ2h1bmtUeXBlIF9jbXNNdXRleFBsdWdpbkNodW5rOworCisvLyBBbGxvY2F0ZSBhbmQgaW5pdCBtdXRleCBjb250YWluZXIuCit2b2lkIF9jbXNBbGxvY011dGV4UGx1Z2luQ2h1bmsoc3RydWN0IF9jbXNDb250ZXh0X3N0cnVjdCogY3R4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Ntc0NvbnRleHRfc3RydWN0KiBzcmMpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBNTFUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24KK3R5cGVkZWYgc3RydWN0IHsKKworICAgIGNtc1VJbnQxNk51bWJlciBMYW5ndWFnZTsKKyAgICBjbXNVSW50MTZOdW1iZXIgQ291bnRyeTsKKworICAgIGNtc1VJbnQzMk51bWJlciBTdHJXOyAgICAgICAvLyBPZmZzZXQgdG8gY3VycmVudCB1bmljb2RlIHN0cmluZworICAgIGNtc1VJbnQzMk51bWJlciBMZW47ICAgICAgICAvLyBMZW5ndGggaW4gYnl0ZXMKKworfSBfY21zTUxVZW50cnk7CisKK3N0cnVjdCBfY21zX01MVV9zdHJ1Y3QgeworCisgICAgY21zQ29udGV4dCBDb250ZXh0SUQ7CisKKyAgICAvLyBUaGUgZGlyZWN0b3J5CisgICAgaW50IEFsbG9jYXRlZEVudHJpZXM7CisgICAgaW50IFVzZWRFbnRyaWVzOworICAgIF9jbXNNTFVlbnRyeSogRW50cmllczsgICAgIC8vIEFycmF5IG9mIHBvaW50ZXJzIHRvIHN0cmluZ3MgYWxsb2NhdGVkIGluIE1lbVBvb2wKKworICAgIC8vIFRoZSBQb29sCisgICAgY21zVUludDMyTnVtYmVyIFBvb2xTaXplOyAgLy8gVGhlIG1heGltdW0gYWxsb2NhdGVkIHNpemUKKyAgICBjbXNVSW50MzJOdW1iZXIgUG9vbFVzZWQ7ICAvLyBUaGUgdXNlZCBzaXplCisgICAgdm9pZCogIE1lbVBvb2w7ICAgICAgICAgICAgLy8gUG9pbnRlciB0byBiZWdpbiBvZiBtZW1vcnkgcG9vbAorfTsKKworLy8gTmFtZWQgY29sb3IgbGlzdCBpbnRlcm5hbCByZXByZXNlbnRhdGlvbgordHlwZWRlZiBzdHJ1Y3QgeworCisgICAgY2hhciBOYW1lW2Ntc01BWF9QQVRIXTsKKyAgICBjbXNVSW50MTZOdW1iZXIgUENTWzNdOworICAgIGNtc1VJbnQxNk51bWJlciBEZXZpY2VDb2xvcmFudFtjbXNNQVhDSEFOTkVMU107CisKK30gX2Ntc05BTUVEQ09MT1I7CisKK3N0cnVjdCBfY21zX05BTUVEQ09MT1JMSVNUX3N0cnVjdCB7CisKKyAgICBjbXNVSW50MzJOdW1iZXIgbkNvbG9yczsKKyAgICBjbXNVSW50MzJOdW1iZXIgQWxsb2NhdGVkOworICAgIGNtc1VJbnQzMk51bWJlciBDb2xvcmFudENvdW50OworCisgICAgY2hhciBQcmVmaXhbMzNdOyAgICAgIC8vIFByZWZpeCBhbmQgc3VmZml4IGFyZSBkZWZpbmVkIHRvIGJlIDMyIGNoYXJhY3RlcnMgYXQgbW9zdAorICAgIGNoYXIgU3VmZml4WzMzXTsKKworICAgIF9jbXNOQU1FRENPTE9SKiBMaXN0OworCisgICAgY21zQ29udGV4dCBDb250ZXh0SUQ7Cit9OworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gVGhpcyBpcyB0aGUgaW50ZXJuYWwgc3RydWN0IGhvbGRpbmcgcHJvZmlsZSBkZXRhaWxzLgorCisvLyBNYXhpbXVtIHN1cHBvcnRlZCB0YWdzIGluIGEgcHJvZmlsZQorI2RlZmluZSBNQVhfVEFCTEVfVEFHICAgICAgIDEwMAorCit0eXBlZGVmIHN0cnVjdCBfY21zX2ljY3Byb2ZpbGVfc3RydWN0IHsKKworICAgIC8vIEkvTyBoYW5kbGVyCisgICAgY21zSU9IQU5ETEVSKiAgICAgICAgICAgIElPaGFuZGxlcjsKKworICAgIC8vIFRoZSB0aHJlYWQgSUQKKyAgICBjbXNDb250ZXh0ICAgICAgICAgICAgICAgQ29udGV4dElEOworCisgICAgLy8gQ3JlYXRpb24gdGltZQorICAgIHN0cnVjdCB0bSAgICAgICAgICAgICAgICBDcmVhdGVkOworCisgICAgLy8gT25seSBtb3N0IGltcG9ydGFudCBpdGVtcyBmb3VuZCBpbiBJQ0MgcHJvZmlsZXMKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgICAgVmVyc2lvbjsKKyAgICBjbXNQcm9maWxlQ2xhc3NTaWduYXR1cmUgRGV2aWNlQ2xhc3M7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSAgIENvbG9yU3BhY2U7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSAgIFBDUzsKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgICAgUmVuZGVyaW5nSW50ZW50OworCisgICAgY21zVUludDMyTnVtYmVyICAgICAgICAgIGZsYWdzOworICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgICBtYW51ZmFjdHVyZXIsIG1vZGVsOworICAgIGNtc1VJbnQ2NE51bWJlciAgICAgICAgICBhdHRyaWJ1dGVzOworICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgICBjcmVhdG9yOworCisgICAgY21zUHJvZmlsZUlEICAgICAgICAgICAgIFByb2ZpbGVJRDsKKworICAgIC8vIERpY3Rpb25hcnkKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgICAgVGFnQ291bnQ7CisgICAgY21zVGFnU2lnbmF0dXJlICAgICAgICAgIFRhZ05hbWVzW01BWF9UQUJMRV9UQUddOworICAgIGNtc1RhZ1NpZ25hdHVyZSAgICAgICAgICBUYWdMaW5rZWRbTUFYX1RBQkxFX1RBR107ICAgICAgICAgICAvLyBUaGUgdGFnIHRvIHdpY2ggaXMgbGlua2VkICgwPW5vbmUpCisgICAgY21zVUludDMyTnVtYmVyICAgICAgICAgIFRhZ1NpemVzW01BWF9UQUJMRV9UQUddOyAgICAgICAgICAgIC8vIFNpemUgb24gZGlzaworICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgICBUYWdPZmZzZXRzW01BWF9UQUJMRV9UQUddOworICAgIGNtc0Jvb2wgICAgICAgICAgICAgICAgICBUYWdTYXZlQXNSYXdbTUFYX1RBQkxFX1RBR107ICAgICAgICAvLyBUcnVlIHRvIHdyaXRlIHVuY29va2VkCisgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgIFRhZ1B0cnNbTUFYX1RBQkxFX1RBR107CisgICAgY21zVGFnVHlwZUhhbmRsZXIqICAgICAgIFRhZ1R5cGVIYW5kbGVyc1tNQVhfVEFCTEVfVEFHXTsgICAgIC8vIFNhbWUgc3RydWN0dXJlIG1heSBiZSBzZXJpYWxpemVkIG9uIGRpZmZlcmVudCB0eXBlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXBlbmRpbmcgb24gcHJvZmlsZSB2ZXJzaW9uLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0eXBlIGhhbmRsZXIgZm9yIGVhY2ggdGFnIGluIHRoZSBsaXN0LgorICAgIC8vIFNwZWNpYWwKKyAgICBjbXNCb29sICAgICAgICAgICAgICAgICAgSXNXcml0ZTsKKworICAgIC8vIEtlZXAgYSBtdXRleCBmb3IgY21zUmVhZFRhZyAtLSBOb3RlIHRoYXQgdGhpcyBvbmx5IHdvcmtzIGlmIHRoZSB1c2VyIGluY2x1ZGVzIGEgbXV0ZXggcGx1Z2luCisgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgIFVzck11dGV4OworCit9IF9jbXNJQ0NQUk9GSUxFOworCisvLyBJTyBoZWxwZXJzIGZvciBwcm9maWxlcworY21zQm9vbCAgICAgICAgICAgICAgX2Ntc1JlYWRIZWFkZXIoX2Ntc0lDQ1BST0ZJTEUqIEljYyk7CitjbXNCb29sICAgICAgICAgICAgICBfY21zV3JpdGVIZWFkZXIoX2Ntc0lDQ1BST0ZJTEUqIEljYywgY21zVUludDMyTnVtYmVyIFVzZWRTcGFjZSk7CitpbnQgICAgICAgICAgICAgICAgICBfY21zU2VhcmNoVGFnKF9jbXNJQ0NQUk9GSUxFKiBJY2MsIGNtc1RhZ1NpZ25hdHVyZSBzaWcsIGNtc0Jvb2wgbEZvbGxvd0xpbmtzKTsKKworLy8gVGFnIHR5cGVzCitjbXNUYWdUeXBlSGFuZGxlciogICBfY21zR2V0VGFnVHlwZUhhbmRsZXIoY21zQ29udGV4dCBDb250ZXh0SUQsIGNtc1RhZ1R5cGVTaWduYXR1cmUgc2lnKTsKK2Ntc1RhZ1R5cGVTaWduYXR1cmUgIF9jbXNHZXRUYWdUcnVlVHlwZShjbXNIUFJPRklMRSBoUHJvZmlsZSwgY21zVGFnU2lnbmF0dXJlIHNpZyk7CitjbXNUYWdEZXNjcmlwdG9yKiAgICBfY21zR2V0VGFnRGVzY3JpcHRvcihjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVGFnU2lnbmF0dXJlIHNpZyk7CisKKy8vIEVycm9yIGxvZ2dpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgICAgICAgICAgICAgICAgIF9jbXNUYWdTaWduYXR1cmUyU3RyaW5nKGNoYXIgU3RyaW5nWzVdLCBjbXNUYWdTaWduYXR1cmUgc2lnKTsKKworLy8gSW50ZXJwb2xhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY21zSW50ZXJwUGFyYW1zKiAgICAgX2Ntc0NvbXB1dGVJbnRlcnBQYXJhbXMoY21zQ29udGV4dCBDb250ZXh0SUQsIGludCBuU2FtcGxlcywgaW50IElucHV0Q2hhbiwgaW50IE91dHB1dENoYW4sIGNvbnN0IHZvaWQqIFRhYmxlLCBjbXNVSW50MzJOdW1iZXIgZHdGbGFncyk7CitjbXNJbnRlcnBQYXJhbXMqICAgICBfY21zQ29tcHV0ZUludGVycFBhcmFtc0V4KGNtc0NvbnRleHQgQ29udGV4dElELCBjb25zdCBjbXNVSW50MzJOdW1iZXIgblNhbXBsZXNbXSwgaW50IElucHV0Q2hhbiwgaW50IE91dHB1dENoYW4sIGNvbnN0IHZvaWQqIFRhYmxlLCBjbXNVSW50MzJOdW1iZXIgZHdGbGFncyk7Cit2b2lkICAgICAgICAgICAgICAgICBfY21zRnJlZUludGVycFBhcmFtcyhjbXNJbnRlcnBQYXJhbXMqIHApOworY21zQm9vbCAgICAgICAgICAgICAgX2Ntc1NldEludGVycG9sYXRpb25Sb3V0aW5lKGNtc0NvbnRleHQgQ29udGV4dElELCBjbXNJbnRlcnBQYXJhbXMqIHApOworCisvLyBDdXJ2ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBUaGlzIHN0cnVjdCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBhIHNlZ21lbnQsIHBsdXMgYSBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgdGhlIGV2YWx1YXRpb24uCisvLyBJbiB0aGUgY2FzZSBvZiB0YWJsZS1iYXNlZCwgRXZhbCBwb2ludGVyIGlzIHNldCB0byBOVUxMCisKKy8vIFRoZSBnYW1tYSBmdW5jdGlvbiBtYWluIHN0cnVjdHVyZQorc3RydWN0IF9jbXNfY3VydmVfc3RydWN0IHsKKworICAgIGNtc0ludGVycFBhcmFtcyogIEludGVycFBhcmFtczsgIC8vIFByaXZhdGUgb3B0aW1pemF0aW9ucyBmb3IgaW50ZXJwb2xhdGlvbgorCisgICAgY21zVUludDMyTnVtYmVyICAgblNlZ21lbnRzOyAgICAgLy8gTnVtYmVyIG9mIHNlZ21lbnRzIGluIHRoZSBjdXJ2ZS4gWmVybyBmb3IgYSAxNi1iaXQgYmFzZWQgdGFibGVzCisgICAgY21zQ3VydmVTZWdtZW50KiAgU2VnbWVudHM7ICAgICAgLy8gVGhlIHNlZ21lbnRzCisgICAgY21zSW50ZXJwUGFyYW1zKiogU2VnSW50ZXJwOyAgICAgLy8gQXJyYXkgb2YgcHJpdmF0ZSBvcHRpbWl6YXRpb25zIGZvciBpbnRlcnBvbGF0aW9uIGluIHRhYmxlLWJhc2VkIHNlZ21lbnRzCisKKyAgICBjbXNQYXJhbWV0cmljQ3VydmVFdmFsdWF0b3IqIEV2YWxzOyAgLy8gRXZhbHVhdG9ycyAob25lIHBlciBzZWdtZW50KQorCisgICAgLy8gMTYgYml0IFRhYmxlLWJhc2VkIHJlcHJlc2VudGF0aW9uIGZvbGxvd3MKKyAgICBjbXNVSW50MzJOdW1iZXIgICAgbkVudHJpZXM7ICAgICAgLy8gTnVtYmVyIG9mIHRhYmxlIGVsZW1lbnRzCisgICAgY21zVUludDE2TnVtYmVyKiAgIFRhYmxlMTY7ICAgICAgIC8vIFRoZSB0YWJsZSBpdHNlbGYuCit9OworCisKKy8vICBQaXBlbGluZXMgJiBTdGFnZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEEgc2luZ2xlIHN0YWdlCitzdHJ1Y3QgX2Ntc1N0YWdlX3N0cnVjdCB7CisKKyAgICBjbXNDb250ZXh0ICAgICAgICAgIENvbnRleHRJRDsKKworICAgIGNtc1N0YWdlU2lnbmF0dXJlICAgVHlwZTsgICAgICAgICAgIC8vIElkZW50aWZpZXMgdGhlIHN0YWdlCisgICAgY21zU3RhZ2VTaWduYXR1cmUgICBJbXBsZW1lbnRzOyAgICAgLy8gSWRlbnRpZmllcyB0aGUgKmZ1bmN0aW9uKiBvZiB0aGUgc3RhZ2UgKGZvciBvcHRpbWl6YXRpb25zKQorCisgICAgY21zVUludDMyTnVtYmVyICAgICBJbnB1dENoYW5uZWxzOyAgLy8gSW5wdXQgY2hhbm5lbHMgLS0gZm9yIG9wdGltaXphdGlvbiBwdXJwb3NlcworICAgIGNtc1VJbnQzMk51bWJlciAgICAgT3V0cHV0Q2hhbm5lbHM7IC8vIE91dHB1dCBjaGFubmVscyAtLSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzCisKKyAgICBfY21zU3RhZ2VFdmFsRm4gICAgIEV2YWxQdHI7ICAgICAgICAvLyBQb2ludHMgdG8gZm4gdGhhdCBldmFsdWF0ZXMgdGhlIHN0YWdlIChhbHdheXMgaW4gZmxvYXRpbmcgcG9pbnQpCisgICAgX2Ntc1N0YWdlRHVwRWxlbUZuICBEdXBFbGVtUHRyOyAgICAgLy8gUG9pbnRzIHRvIGEgZm4gdGhhdCBkdXBsaWNhdGVzIHRoZSAqZGF0YSogb2YgdGhlIHN0YWdlCisgICAgX2Ntc1N0YWdlRnJlZUVsZW1GbiBGcmVlUHRyOyAgICAgICAgLy8gUG9pbnRzIHRvIGEgZm4gdGhhdCBzZXRzIHRoZSAqZGF0YSogb2YgdGhlIHN0YWdlIGZyZWUKKworICAgIC8vIEEgZ2VuZXJpYyBwb2ludGVyIHRvIHdoYXRldmVyIG1lbW9yeSBuZWVkZWQgYnkgdGhlIHN0YWdlCisgICAgdm9pZCogICAgICAgICAgICAgICBEYXRhOworCisgICAgLy8gTWFpbnRhaW5zIGxpbmtlZCBsaXN0ICh1c2VkIGludGVybmFsbHkpCisgICAgc3RydWN0IF9jbXNTdGFnZV9zdHJ1Y3QqIE5leHQ7Cit9OworCisKKy8vIFNwZWNpYWwgU3RhZ2VzIChjYW5ub3QgYmUgc2F2ZWQpCitjbXNTdGFnZSogICAgICAgIF9jbXNTdGFnZUFsbG9jTGFiMlhZWihjbXNDb250ZXh0IENvbnRleHRJRCk7CitjbXNTdGFnZSogICAgICAgIF9jbXNTdGFnZUFsbG9jWFlaMkxhYihjbXNDb250ZXh0IENvbnRleHRJRCk7CitjbXNTdGFnZSogICAgICAgIF9jbXNTdGFnZUFsbG9jTGFiUHJlbGluKGNtc0NvbnRleHQgQ29udGV4dElEKTsKK2Ntc1N0YWdlKiAgICAgICAgX2Ntc1N0YWdlQWxsb2NMYWJWMlRvVjQoY21zQ29udGV4dCBDb250ZXh0SUQpOworY21zU3RhZ2UqICAgICAgICBfY21zU3RhZ2VBbGxvY0xhYlYyVG9WNGN1cnZlcyhjbXNDb250ZXh0IENvbnRleHRJRCk7CitjbXNTdGFnZSogICAgICAgIF9jbXNTdGFnZUFsbG9jTGFiVjRUb1YyKGNtc0NvbnRleHQgQ29udGV4dElEKTsKK2Ntc1N0YWdlKiAgICAgICAgX2Ntc1N0YWdlQWxsb2NOYW1lZENvbG9yKGNtc05BTUVEQ09MT1JMSVNUKiBOYW1lZENvbG9yTGlzdCwgY21zQm9vbCBVc2VQQ1MpOworY21zU3RhZ2UqICAgICAgICBfY21zU3RhZ2VBbGxvY0lkZW50aXR5Q3VydmVzKGNtc0NvbnRleHQgQ29udGV4dElELCBpbnQgbkNoYW5uZWxzKTsKK2Ntc1N0YWdlKiAgICAgICAgX2Ntc1N0YWdlQWxsb2NJZGVudGl0eUNMdXQoY21zQ29udGV4dCBDb250ZXh0SUQsIGludCBuQ2hhbik7CitjbXNTdGFnZSogICAgICAgIF9jbXNTdGFnZU5vcm1hbGl6ZUZyb21MYWJGbG9hdChjbXNDb250ZXh0IENvbnRleHRJRCk7CitjbXNTdGFnZSogICAgICAgIF9jbXNTdGFnZU5vcm1hbGl6ZUZyb21YeXpGbG9hdChjbXNDb250ZXh0IENvbnRleHRJRCk7CitjbXNTdGFnZSogICAgICAgIF9jbXNTdGFnZU5vcm1hbGl6ZVRvTGFiRmxvYXQoY21zQ29udGV4dCBDb250ZXh0SUQpOworY21zU3RhZ2UqICAgICAgICBfY21zU3RhZ2VOb3JtYWxpemVUb1h5ekZsb2F0KGNtc0NvbnRleHQgQ29udGV4dElEKTsKKworLy8gRm9yIGN1cnZlIHNldCBvbmx5CitjbXNUb25lQ3VydmUqKiAgICAgX2Ntc1N0YWdlR2V0UHRyVG9DdXJ2ZVNldChjb25zdCBjbXNTdGFnZSogbXBlKTsKKworCisvLyBQaXBlbGluZSBFdmFsdWF0b3IgKGluIGZsb2F0aW5nIHBvaW50KQordHlwZWRlZiB2b2lkICgqIF9jbXNQaXBlbGluZUV2YWxGbG9hdEZuKShjb25zdCBjbXNGbG9hdDMyTnVtYmVyIEluW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Zsb2F0MzJOdW1iZXIgT3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqIERhdGEpOworCitzdHJ1Y3QgX2Ntc1BpcGVsaW5lX3N0cnVjdCB7CisKKyAgICBjbXNTdGFnZSogRWxlbWVudHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQb2ludHMgdG8gZWxlbWVudHMgY2hhaW4KKyAgICBjbXNVSW50MzJOdW1iZXIgSW5wdXRDaGFubmVscywgT3V0cHV0Q2hhbm5lbHM7CisKKyAgICAvLyBEYXRhICYgZXZhbHVhdG9ycworICAgIHZvaWQgKkRhdGE7CisKKyAgIF9jbXNPUFRldmFsMTZGbiAgICAgICAgIEV2YWwxNkZuOworICAgX2Ntc1BpcGVsaW5lRXZhbEZsb2F0Rm4gRXZhbEZsb2F0Rm47CisgICBfY21zRnJlZVVzZXJEYXRhRm4gICAgICBGcmVlRGF0YUZuOworICAgX2Ntc0R1cFVzZXJEYXRhRm4gICAgICAgRHVwRGF0YUZuOworCisgICAgY21zQ29udGV4dCBDb250ZXh0SUQ7ICAgICAgICAgICAgLy8gRW52aXJvbm1lbnQKKworICAgIGNtc0Jvb2wgIFNhdmVBczhCaXRzOyAgICAgICAgICAgIC8vIEltcGxlbWVudGF0aW9uLXNwZWNpZmljOiBzYXZlIGFzIDggYml0cyBpZiBwb3NzaWJsZQorfTsKKworLy8gTFVUIHJlYWRpbmcgJiBjcmVhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFJlYWQgdGFncyB1c2luZyBsb3ctbGV2ZWwgZnVuY3Rpb24sIHByb3ZpZGUgbmVjZXNzYXJ5IGdsdWUgY29kZSB0byBhZGFwdCB2ZXJzaW9ucywgZXRjLiBBbGwgdGhvc2UgcmV0dXJuIGEgYnJhbmQgbmV3IGNvcHkKKy8vIG9mIHRoZSBMVVRTLCBzaW5jZSBvd25lcnNoaXAgb2Ygb3JpZ2luYWwgaXMgdXAgdG8gdGhlIHByb2ZpbGUuIFRoZSB1c2VyIHNob3VsZCBmcmVlIGFsbG9jYXRlZCByZXNvdXJjZXMuCisKK2Ntc1BpcGVsaW5lKiAgICAgIF9jbXNSZWFkSW5wdXRMVVQoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGludCBJbnRlbnQpOworY21zUGlwZWxpbmUqICAgICAgX2Ntc1JlYWRPdXRwdXRMVVQoY21zSFBST0ZJTEUgaFByb2ZpbGUsIGludCBJbnRlbnQpOworY21zUGlwZWxpbmUqICAgICAgX2Ntc1JlYWREZXZpY2VsaW5rTFVUKGNtc0hQUk9GSUxFIGhQcm9maWxlLCBpbnQgSW50ZW50KTsKKworLy8gU3BlY2lhbCB2YWx1ZXMKK2Ntc0Jvb2wgICAgICAgICAgIF9jbXNSZWFkTWVkaWFXaGl0ZVBvaW50KGNtc0NJRVhZWiogRGVzdCwgY21zSFBST0ZJTEUgaFByb2ZpbGUpOworY21zQm9vbCAgICAgICAgICAgX2Ntc1JlYWRDSEFEKGNtc01BVDMqIERlc3QsIGNtc0hQUk9GSUxFIGhQcm9maWxlKTsKKworLy8gUHJvZmlsZSBsaW5rZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY21zUGlwZWxpbmUqIF9jbXNMaW5rUHJvZmlsZXMoY21zQ29udGV4dCAgICAgICAgIENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgICBuUHJvZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgICAgVGhlSW50ZW50c1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zSFBST0ZJTEUgICAgICAgIGhQcm9maWxlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zQm9vbCAgICAgICAgICAgIEJQQ1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciAgIEFkYXB0YXRpb25TdGF0ZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgICBkd0ZsYWdzKTsKKworLy8gU2VxdWVuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY21zU0VRKiBfY21zUmVhZFByb2ZpbGVTZXF1ZW5jZShjbXNIUFJPRklMRSBoUHJvZmlsZSk7CitjbXNCb29sIF9jbXNXcml0ZVByb2ZpbGVTZXF1ZW5jZShjbXNIUFJPRklMRSBoUHJvZmlsZSwgY29uc3QgY21zU0VRKiBzZXEpOworY21zU0VRKiBfY21zQ29tcGlsZVByb2ZpbGVTZXF1ZW5jZShjbXNDb250ZXh0IENvbnRleHRJRCwgY21zVUludDMyTnVtYmVyIG5Qcm9maWxlcywgY21zSFBST0ZJTEUgaFByb2ZpbGVzW10pOworCisKKy8vIExVVCBvcHRpbWl6YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Ntc1VJbnQxNk51bWJlciAgX2Ntc1F1YW50aXplVmFsKGNtc0Zsb2F0NjROdW1iZXIgaSwgaW50IE1heFNhbXBsZXMpOworaW50ICAgICAgICAgICAgICBfY21zUmVhc29uYWJsZUdyaWRwb2ludHNCeUNvbG9yc3BhY2UoY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBDb2xvcnNwYWNlLCBjbXNVSW50MzJOdW1iZXIgZHdGbGFncyk7CisKK2Ntc0Jvb2wgICAgICAgICAgX2Ntc0VuZFBvaW50c0J5U3BhY2UoY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDE2TnVtYmVyICoqV2hpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQxNk51bWJlciAqKkJsYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgKm5PdXRwdXRzKTsKKworY21zQm9vbCAgICAgICAgICBfY21zT3B0aW1pemVQaXBlbGluZShjbXNDb250ZXh0IENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zUGlwZWxpbmUqKiAgICBMdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgSW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIqIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIqIE91dHB1dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyKiBkd0ZsYWdzICk7CisKKworLy8gSGkgbGV2ZWwgTFVUIGJ1aWxkaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY21zUGlwZWxpbmUqICAgICBfY21zQ3JlYXRlR2FtdXRDaGVja1BpcGVsaW5lKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIGhQcm9maWxlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0Jvb2wgIEJQQ1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBJbnRlbnRzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uU3RhdGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIG5HYW11dFBDU3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc0hQUk9GSUxFIGhHYW11dCk7CisKKworLy8gRm9ybWF0dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBjbXNGTEFHU19DQU5fQ0hBTkdFX0ZPUk1BVFRFUiAgICAgMHgwMjAwMDAwMCAgIC8vIEFsbG93IGNoYW5nZSBidWZmZXIgZm9ybWF0CisKK2Ntc0Jvb2wgICAgICAgICBfY21zRm9ybWF0dGVySXNGbG9hdChjbXNVSW50MzJOdW1iZXIgVHlwZSk7CitjbXNCb29sICAgICAgICAgX2Ntc0Zvcm1hdHRlcklzOGJpdChjbXNVSW50MzJOdW1iZXIgVHlwZSk7CisKK2Ntc0Zvcm1hdHRlciAgICBfY21zR2V0Rm9ybWF0dGVyKGNtc0NvbnRleHQgQ29udGV4dElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyIFR5cGUsICAgICAgICAgIC8vIFNwZWNpZmljIHR5cGUsIGkuZS4gVFlQRV9SR0JfOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zRm9ybWF0dGVyRGlyZWN0aW9uIERpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciBkd0ZsYWdzKTsKKworCisjaWZuZGVmIENNU19OT19IQUxGX1NVUFBPUlQgCisKKy8vIEhhbGYgZmxvYXQKK2Ntc0Zsb2F0MzJOdW1iZXIgX2Ntc0hhbGYyRmxvYXQoY21zVUludDE2TnVtYmVyIGgpOworY21zVUludDE2TnVtYmVyICBfY21zRmxvYXQySGFsZihjbXNGbG9hdDMyTnVtYmVyIGZsdCk7CisKKyNlbmRpZgorCisvLyBUcmFuc2Zvcm0gbG9naWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0cnVjdCBfY21zdHJhbnNmb3JtX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworCisgICAgLy8gMS1waXhlbCBjYWNoZSAoMTYgYml0cyBvbmx5KQorICAgIGNtc1VJbnQxNk51bWJlciBDYWNoZUluW2Ntc01BWENIQU5ORUxTXTsKKyAgICBjbXNVSW50MTZOdW1iZXIgQ2FjaGVPdXRbY21zTUFYQ0hBTk5FTFNdOworCit9IF9jbXNDQUNIRTsKKworCisKKy8vIFRyYW5zZm9ybWF0aW9uCit0eXBlZGVmIHN0cnVjdCBfY21zdHJhbnNmb3JtX3N0cnVjdCB7CisKKyAgICBjbXNVSW50MzJOdW1iZXIgSW5wdXRGb3JtYXQsIE91dHB1dEZvcm1hdDsgLy8gS2VlcCBmb3JtYXRzIGZvciBmdXJ0aGVyIHJlZmVyZW5jZQorCisgICAgLy8gUG9pbnRzIHRvIHRyYW5zZm9ybSBjb2RlCisgICAgX2Ntc1RyYW5zZm9ybUZuIHhmb3JtOworCisgICAgLy8gRm9ybWF0dGVycywgY2Fubm90IGJlIGVtYmVkZGVkIGludG8gTFVUIGJlY2F1c2UgY2FjaGUKKyAgICBjbXNGb3JtYXR0ZXIxNiBGcm9tSW5wdXQ7CisgICAgY21zRm9ybWF0dGVyMTYgVG9PdXRwdXQ7CisKKyAgICBjbXNGb3JtYXR0ZXJGbG9hdCBGcm9tSW5wdXRGbG9hdDsKKyAgICBjbXNGb3JtYXR0ZXJGbG9hdCBUb091dHB1dEZsb2F0OworCisgICAgLy8gMS1waXhlbCBjYWNoZSBzZWVkIGZvciB6ZXJvIGFzIGlucHV0ICgxNiBiaXRzLCByZWFkIG9ubHkpCisgICAgX2Ntc0NBQ0hFIENhY2hlOworCisgICAgLy8gQSBQaXBlbGluZSBob2xkaW5nIHRoZSBmdWxsIChvcHRpbWl6ZWQpIHRyYW5zZm9ybQorICAgIGNtc1BpcGVsaW5lKiBMdXQ7CisKKyAgICAvLyBBIFBpcGVsaW5lIGhvbGRpbmcgdGhlIGdhbXV0IGNoZWNrLiBJdCBnb2VzIGZyb20gdGhlIGlucHV0IHNwYWNlIHRvIGJpbGV2ZWwKKyAgICBjbXNQaXBlbGluZSogR2FtdXRDaGVjazsKKworICAgIC8vIENvbG9yYW50IHRhYmxlcworICAgIGNtc05BTUVEQ09MT1JMSVNUKiBJbnB1dENvbG9yYW50OyAgICAgICAvLyBJbnB1dCBDb2xvcmFudCB0YWJsZQorICAgIGNtc05BTUVEQ09MT1JMSVNUKiBPdXRwdXRDb2xvcmFudDsgICAgICAvLyBDb2xvcmFudCB0YWJsZSAoZm9yIG4gY2hhbnMgPiBDTVlLKQorCisgICAgLy8gSW5mb3JtYXRpb25hbCBvbmx5CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBFbnRyeUNvbG9yU3BhY2U7CisgICAgY21zQ29sb3JTcGFjZVNpZ25hdHVyZSBFeGl0Q29sb3JTcGFjZTsKKworICAgIC8vIFdoaXRlIHBvaW50cyAoaW5mb3JtYXRpdmUgb25seSkKKyAgICBjbXNDSUVYWVogRW50cnlXaGl0ZVBvaW50OworICAgIGNtc0NJRVhZWiBFeGl0V2hpdGVQb2ludDsKKworICAgIC8vIFByb2ZpbGVzIHVzZWQgdG8gY3JlYXRlIHRoZSB0cmFuc2Zvcm0KKyAgICBjbXNTRVEqIFNlcXVlbmNlOworCisgICAgY21zVUludDMyTnVtYmVyICBkd09yaWdpbmFsRmxhZ3M7CisgICAgY21zRmxvYXQ2NE51bWJlciBBZGFwdGF0aW9uU3RhdGU7CisKKyAgICAvLyBUaGUgaW50ZW50IG9mIHRoaXMgdHJhbnNmb3JtLiBUaGF0IGlzIHVzdWFsbHkgdGhlIGxhc3QgaW50ZW50IGluIHRoZSBwcm9maWxlY2hhaW4sIGJ1dCBtYXkgZGlmZmVyCisgICAgY21zVUludDMyTnVtYmVyIFJlbmRlcmluZ0ludGVudDsKKworICAgIC8vIEFuIGlkIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgcnVubmluZyBjb250ZXh0LiBNYXkgYmUgbnVsbC4KKyAgICBjbXNDb250ZXh0IENvbnRleHRJRDsKKworICAgIC8vIEEgdXNlci1kZWZpbmVkIHBvaW50ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBkYXRhIGZvciB0cmFuc2Zvcm0gcGx1Zy1pbnMKKyAgICB2b2lkKiBVc2VyRGF0YTsKKyAgICBfY21zRnJlZVVzZXJEYXRhRm4gRnJlZVVzZXJEYXRhOworCit9IF9jbXNUUkFOU0ZPUk07CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Ntc0hUUkFOU0ZPUk0gX2Ntc0NoYWluMkxhYihjbXNDb250ZXh0ICAgICAgICAgICAgIENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgIG5Qcm9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgIElucHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgT3V0cHV0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc1VJbnQzMk51bWJlciAgSW50ZW50c1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0hQUk9GSUxFICAgICAgaFByb2ZpbGVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zQm9vbCAgICAgICAgICBCUENbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNGbG9hdDY0TnVtYmVyIEFkYXB0YXRpb25TdGF0ZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgIGR3RmxhZ3MpOworCisKK2Ntc1RvbmVDdXJ2ZSogX2Ntc0J1aWxkS1RvbmVDdXJ2ZShjbXNDb250ZXh0ICAgICAgIENvbnRleHRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNVSW50MzJOdW1iZXIgICAgICAgIG5Qb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zVUludDMyTnVtYmVyICAgICAgICBuUHJvZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zVUludDMyTnVtYmVyICBJbnRlbnRzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21zSFBST0ZJTEUgICAgICBoUHJvZmlsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbXNCb29sICAgICAgICAgIEJQQ1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtc0Zsb2F0NjROdW1iZXIgQWRhcHRhdGlvblN0YXRlc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc1VJbnQzMk51bWJlciAgICAgICAgZHdGbGFncyk7CisKK2Ntc0Jvb2wgICBfY21zQWRhcHRhdGlvbk1hdHJpeChjbXNNQVQzKiByLCBjb25zdCBjbXNNQVQzKiBDb25lTWF0cml4LCBjb25zdCBjbXNDSUVYWVoqIEZyb21JbGwsIGNvbnN0IGNtc0NJRVhZWiogVG9JbGwpOworCitjbXNCb29sICAgX2Ntc0J1aWxkUkdCMlhZWnRyYW5zZmVyTWF0cml4KGNtc01BVDMqIHIsIGNvbnN0IGNtc0NJRXh5WSogV2hpdGVQb2ludCwgY29uc3QgY21zQ0lFeHlZVFJJUExFKiBQcmltYXJpZXMpOworCisKKyNkZWZpbmUgX2xjbXNfaW50ZXJuYWxfSAorI2VuZGlmCisvLzw8PCsrK09QRU5TT1VSQ0VfTVVTVF9FTkQKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2NhbTAyLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNjYW0wMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NTg0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNjYW0wMi5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uL2xjbXMyLTIuNi9zcmMvY21zY2FtMDIuYyINCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNjZ2F0cy5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zY2dhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGRjYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zY2dhdHMuYwpAQCAtMCwwICsxLDcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi9sY21zMi0yLjYvc3JjL2Ntc2NnYXRzLmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zY252cnQuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2NudnJ0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI4YTI5MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2NudnJ0LmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNjbnZydC5jIg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2Vyci5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zZXJyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkyOWU3YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2Vyci5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uL2xjbXMyLTIuNi9zcmMvY21zZXJyLmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zZ2FtbWEuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2dhbW1hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjViYjY5MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2dhbW1hLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNnYW1tYS5jIg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2dtdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zZ210LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE4MmIxNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2dtdC5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uL2xjbXMyLTIuNi9zcmMvY21zZ210LmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zaGFsZi5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zaGFsZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZDZiMmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNoYWxmLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNoYWxmLmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zaW50cnAuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2ludHJwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmY2E1MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2ludHJwLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNpbnRycC5jIg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2lvMC5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zaW8wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI2YmM2OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2lvMC5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uL2xjbXMyLTIuNi9zcmMvY21zaW8wLmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zaW8xLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNpbzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTJlODc5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zaW8xLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNpbzEuYyINCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNsdXQuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc2x1dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YTMxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNsdXQuYwpAQCAtMCwwICsxLDcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi9sY21zMi0yLjYvc3JjL2Ntc2x1dC5jIg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc21kNS5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zbWQ1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EzYTk5NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc21kNS5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uL2xjbXMyLTIuNi9zcmMvY21zbWQ1LmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zbXRyeC5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zbXRyeC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2N2FjMWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNtdHJ4LmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNtdHJ4LmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zbmFtZWQuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc25hbWVkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUxYjAyOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc25hbWVkLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNuYW1lZC5jIg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc29wdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zb3B0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyNDI5YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc29wdC5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uL2xjbXMyLTIuNi9zcmMvY21zb3B0LmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zcGFjay5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zcGFjay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMDY0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNwYWNrLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNwYWNrLmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zcGNzLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNwY3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGNlMzlkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zcGNzLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNwY3MuYyINCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNwbHVnaW4uYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc3BsdWdpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MjY2YzIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNwbHVnaW4uYwpAQCAtMCwwICsxLDcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi9sY21zMi0yLjYvc3JjL2Ntc3BsdWdpbi5jIg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc3BzMi5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zcHMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNmNTU0MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc3BzMi5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uL2xjbXMyLTIuNi9zcmMvY21zcHMyLmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zc2FtcC5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zc2FtcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNDY4ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXNzYW1wLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNzYW1wLmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zc20uYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc3NtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUzYWQ3MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc3NtLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXNzbS5jIg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc3R5cGVzLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXN0eXBlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZjllNzAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXN0eXBlcy5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uL2xjbXMyLTIuNi9zcmMvY21zdHlwZXMuYyINCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXN2aXJ0LmMgYi9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXN2aXJ0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U1Mzk3ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc3ZpcnQuYwpAQCAtMCwwICsxLDcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi9sY21zMi0yLjYvc3JjL2Ntc3ZpcnQuYyINCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xjbXMyL3NyYy9meF9jbXN3dHBudC5jIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zd3RwbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTFhZmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zd3RwbnQuYwpAQCAtMCwwICsxLDcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi9sY21zMi0yLjYvc3JjL2Ntc3d0cG50LmMiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9sY21zMi9zcmMvZnhfY21zeGZvcm0uYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc3hmb3JtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiNmQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGNtczIvc3JjL2Z4X2Ntc3hmb3JtLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vbGNtczItMi42L3NyYy9jbXN4Zm9ybS5jIg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9jZGVycm9yLmggYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvY2RlcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxOWQzOGYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvY2RlcnJvci5oCkBAIC0wLDAgKzEsMTMyIEBACisvKg0KKyAqIGNkZXJyb3IuaA0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTk0LTE5OTcsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGVycm9yIGFuZCBtZXNzYWdlIGNvZGVzIGZvciB0aGUgY2pwZWcvZGpwZWcNCisgKiBhcHBsaWNhdGlvbnMuICBUaGVzZSBzdHJpbmdzIGFyZSBub3QgbmVlZGVkIGFzIHBhcnQgb2YgdGhlIEpQRUcgbGlicmFyeQ0KKyAqIHByb3Blci4NCisgKiBFZGl0IHRoaXMgZmlsZSB0byBhZGQgbmV3IGNvZGVzLCBvciB0byB0cmFuc2xhdGUgdGhlIG1lc3NhZ2Ugc3RyaW5ncyB0bw0KKyAqIHNvbWUgb3RoZXIgbGFuZ3VhZ2UuDQorICovDQorDQorLyoNCisgKiBUbyBkZWZpbmUgdGhlIGVudW0gbGlzdCBvZiBtZXNzYWdlIGNvZGVzLCBpbmNsdWRlIHRoaXMgZmlsZSB3aXRob3V0DQorICogZGVmaW5pbmcgbWFjcm8gSk1FU1NBR0UuICBUbyBjcmVhdGUgYSBtZXNzYWdlIHN0cmluZyB0YWJsZSwgaW5jbHVkZSBpdA0KKyAqIGFnYWluIHdpdGggYSBzdWl0YWJsZSBKTUVTU0FHRSBkZWZpbml0aW9uIChzZWUgamVycm9yLmMgZm9yIGFuIGV4YW1wbGUpLg0KKyAqLw0KKyNpZm5kZWYgSk1FU1NBR0UNCisjaWZuZGVmIENERVJST1JfSA0KKyNkZWZpbmUgQ0RFUlJPUl9IDQorLyogRmlyc3QgdGltZSB0aHJvdWdoLCBkZWZpbmUgdGhlIGVudW0gbGlzdCAqLw0KKyNkZWZpbmUgSk1BS0VfRU5VTV9MSVNUDQorI2Vsc2UNCisvKiBSZXBlYXRlZCBpbmNsdXNpb25zIG9mIHRoaXMgZmlsZSBhcmUgbm8tb3BzIHVubGVzcyBKTUVTU0FHRSBpcyBkZWZpbmVkICovDQorI2RlZmluZSBKTUVTU0FHRShjb2RlLHN0cmluZykNCisjZW5kaWYgLyogQ0RFUlJPUl9IICovDQorI2VuZGlmIC8qIEpNRVNTQUdFICovDQorDQorI2lmZGVmIEpNQUtFX0VOVU1fTElTVA0KKw0KK3R5cGVkZWYgZW51bSB7DQorDQorI2RlZmluZSBKTUVTU0FHRShjb2RlLHN0cmluZykJY29kZSAsDQorDQorI2VuZGlmIC8qIEpNQUtFX0VOVU1fTElTVCAqLw0KKw0KK0pNRVNTQUdFKEpNU0dfRklSU1RBRERPTkNPREU9MTAwMCwgTlVMTCkgLyogTXVzdCBiZSBmaXJzdCBlbnRyeSEgKi8NCisNCisjaWZkZWYgQk1QX1NVUFBPUlRFRA0KK0pNRVNTQUdFKEpFUlJfQk1QX0JBRENNQVAsICJVbnN1cHBvcnRlZCBCTVAgY29sb3JtYXAgZm9ybWF0IikNCitKTUVTU0FHRShKRVJSX0JNUF9CQURERVBUSCwgIk9ubHkgOC0gYW5kIDI0LWJpdCBCTVAgZmlsZXMgYXJlIHN1cHBvcnRlZCIpDQorSk1FU1NBR0UoSkVSUl9CTVBfQkFESEVBREVSLCAiSW52YWxpZCBCTVAgZmlsZTogYmFkIGhlYWRlciBsZW5ndGgiKQ0KK0pNRVNTQUdFKEpFUlJfQk1QX0JBRFBMQU5FUywgIkludmFsaWQgQk1QIGZpbGU6IGJpUGxhbmVzIG5vdCBlcXVhbCB0byAxIikNCitKTUVTU0FHRShKRVJSX0JNUF9DT0xPUlNQQUNFLCAiQk1QIG91dHB1dCBtdXN0IGJlIGdyYXlzY2FsZSBvciBSR0IiKQ0KK0pNRVNTQUdFKEpFUlJfQk1QX0NPTVBSRVNTRUQsICJTb3JyeSwgY29tcHJlc3NlZCBCTVBzIG5vdCB5ZXQgc3VwcG9ydGVkIikNCitKTUVTU0FHRShKRVJSX0JNUF9OT1QsICJOb3QgYSBCTVAgZmlsZSAtIGRvZXMgbm90IHN0YXJ0IHdpdGggQk0iKQ0KK0pNRVNTQUdFKEpUUkNfQk1QLCAiJXV4JXUgMjQtYml0IEJNUCBpbWFnZSIpDQorSk1FU1NBR0UoSlRSQ19CTVBfTUFQUEVELCAiJXV4JXUgOC1iaXQgY29sb3JtYXBwZWQgQk1QIGltYWdlIikNCitKTUVTU0FHRShKVFJDX0JNUF9PUzIsICIldXgldSAyNC1iaXQgT1MyIEJNUCBpbWFnZSIpDQorSk1FU1NBR0UoSlRSQ19CTVBfT1MyX01BUFBFRCwgIiV1eCV1IDgtYml0IGNvbG9ybWFwcGVkIE9TMiBCTVAgaW1hZ2UiKQ0KKyNlbmRpZiAvKiBCTVBfU1VQUE9SVEVEICovDQorDQorI2lmZGVmIEdJRl9TVVBQT1JURUQNCitKTUVTU0FHRShKRVJSX0dJRl9CVUcsICJHSUYgb3V0cHV0IGdvdCBjb25mdXNlZCIpDQorSk1FU1NBR0UoSkVSUl9HSUZfQ09ERVNJWkUsICJCb2d1cyBHSUYgY29kZXNpemUgJWQiKQ0KK0pNRVNTQUdFKEpFUlJfR0lGX0NPTE9SU1BBQ0UsICJHSUYgb3V0cHV0IG11c3QgYmUgZ3JheXNjYWxlIG9yIFJHQiIpDQorSk1FU1NBR0UoSkVSUl9HSUZfSU1BR0VOT1RGT1VORCwgIlRvbyBmZXcgaW1hZ2VzIGluIEdJRiBmaWxlIikNCitKTUVTU0FHRShKRVJSX0dJRl9OT1QsICJOb3QgYSBHSUYgZmlsZSIpDQorSk1FU1NBR0UoSlRSQ19HSUYsICIldXgldXglZCBHSUYgaW1hZ2UiKQ0KK0pNRVNTQUdFKEpUUkNfR0lGX0JBRFZFUlNJT04sDQorCSAiV2FybmluZzogdW5leHBlY3RlZCBHSUYgdmVyc2lvbiBudW1iZXIgJyVjJWMlYyciKQ0KK0pNRVNTQUdFKEpUUkNfR0lGX0VYVEVOU0lPTiwgIklnbm9yaW5nIEdJRiBleHRlbnNpb24gYmxvY2sgb2YgdHlwZSAweCUwMngiKQ0KK0pNRVNTQUdFKEpUUkNfR0lGX05PTlNRVUFSRSwgIkNhdXRpb246IG5vbnNxdWFyZSBwaXhlbHMgaW4gaW5wdXQiKQ0KK0pNRVNTQUdFKEpXUk5fR0lGX0JBRERBVEEsICJDb3JydXB0IGRhdGEgaW4gR0lGIGZpbGUiKQ0KK0pNRVNTQUdFKEpXUk5fR0lGX0NIQVIsICJCb2d1cyBjaGFyIDB4JTAyeCBpbiBHSUYgZmlsZSwgaWdub3JpbmciKQ0KK0pNRVNTQUdFKEpXUk5fR0lGX0VORENPREUsICJQcmVtYXR1cmUgZW5kIG9mIEdJRiBpbWFnZSIpDQorSk1FU1NBR0UoSldSTl9HSUZfTk9NT1JFREFUQSwgIlJhbiBvdXQgb2YgR0lGIGJpdHMiKQ0KKyNlbmRpZiAvKiBHSUZfU1VQUE9SVEVEICovDQorDQorI2lmZGVmIFBQTV9TVVBQT1JURUQNCitKTUVTU0FHRShKRVJSX1BQTV9DT0xPUlNQQUNFLCAiUFBNIG91dHB1dCBtdXN0IGJlIGdyYXlzY2FsZSBvciBSR0IiKQ0KK0pNRVNTQUdFKEpFUlJfUFBNX05PTk5VTUVSSUMsICJOb25udW1lcmljIGRhdGEgaW4gUFBNIGZpbGUiKQ0KK0pNRVNTQUdFKEpFUlJfUFBNX05PVCwgIk5vdCBhIFBQTS9QR00gZmlsZSIpDQorSk1FU1NBR0UoSlRSQ19QR00sICIldXgldSBQR00gaW1hZ2UiKQ0KK0pNRVNTQUdFKEpUUkNfUEdNX1RFWFQsICIldXgldSB0ZXh0IFBHTSBpbWFnZSIpDQorSk1FU1NBR0UoSlRSQ19QUE0sICIldXgldSBQUE0gaW1hZ2UiKQ0KK0pNRVNTQUdFKEpUUkNfUFBNX1RFWFQsICIldXgldSB0ZXh0IFBQTSBpbWFnZSIpDQorI2VuZGlmIC8qIFBQTV9TVVBQT1JURUQgKi8NCisNCisjaWZkZWYgUkxFX1NVUFBPUlRFRA0KK0pNRVNTQUdFKEpFUlJfUkxFX0JBREVSUk9SLCAiQm9ndXMgZXJyb3IgY29kZSBmcm9tIFJMRSBsaWJyYXJ5IikNCitKTUVTU0FHRShKRVJSX1JMRV9DT0xPUlNQQUNFLCAiUkxFIG91dHB1dCBtdXN0IGJlIGdyYXlzY2FsZSBvciBSR0IiKQ0KK0pNRVNTQUdFKEpFUlJfUkxFX0RJTUVOU0lPTlMsICJJbWFnZSBkaW1lbnNpb25zICgldXgldSkgdG9vIGxhcmdlIGZvciBSTEUiKQ0KK0pNRVNTQUdFKEpFUlJfUkxFX0VNUFRZLCAiRW1wdHkgUkxFIGZpbGUiKQ0KK0pNRVNTQUdFKEpFUlJfUkxFX0VPRiwgIlByZW1hdHVyZSBFT0YgaW4gUkxFIGhlYWRlciIpDQorSk1FU1NBR0UoSkVSUl9STEVfTUVNLCAiSW5zdWZmaWNpZW50IG1lbW9yeSBmb3IgUkxFIGhlYWRlciIpDQorSk1FU1NBR0UoSkVSUl9STEVfTk9ULCAiTm90IGFuIFJMRSBmaWxlIikNCitKTUVTU0FHRShKRVJSX1JMRV9UT09NQU5ZQ0hBTk5FTFMsICJDYW5ub3QgaGFuZGxlICVkIG91dHB1dCBjaGFubmVscyBmb3IgUkxFIikNCitKTUVTU0FHRShKRVJSX1JMRV9VTlNVUFBPUlRFRCwgIkNhbm5vdCBoYW5kbGUgdGhpcyBSTEUgc2V0dXAiKQ0KK0pNRVNTQUdFKEpUUkNfUkxFLCAiJXV4JXUgZnVsbC1jb2xvciBSTEUgZmlsZSIpDQorSk1FU1NBR0UoSlRSQ19STEVfRlVMTE1BUCwgIiV1eCV1IGZ1bGwtY29sb3IgUkxFIGZpbGUgd2l0aCBtYXAgb2YgbGVuZ3RoICVkIikNCitKTUVTU0FHRShKVFJDX1JMRV9HUkFZLCAiJXV4JXUgZ3JheXNjYWxlIFJMRSBmaWxlIikNCitKTUVTU0FHRShKVFJDX1JMRV9NQVBHUkFZLCAiJXV4JXUgZ3JheXNjYWxlIFJMRSBmaWxlIHdpdGggbWFwIG9mIGxlbmd0aCAlZCIpDQorSk1FU1NBR0UoSlRSQ19STEVfTUFQUEVELCAiJXV4JXUgY29sb3JtYXBwZWQgUkxFIGZpbGUgd2l0aCBtYXAgb2YgbGVuZ3RoICVkIikNCisjZW5kaWYgLyogUkxFX1NVUFBPUlRFRCAqLw0KKw0KKyNpZmRlZiBUQVJHQV9TVVBQT1JURUQNCitKTUVTU0FHRShKRVJSX1RHQV9CQURDTUFQLCAiVW5zdXBwb3J0ZWQgVGFyZ2EgY29sb3JtYXAgZm9ybWF0IikNCitKTUVTU0FHRShKRVJSX1RHQV9CQURQQVJNUywgIkludmFsaWQgb3IgdW5zdXBwb3J0ZWQgVGFyZ2EgZmlsZSIpDQorSk1FU1NBR0UoSkVSUl9UR0FfQ09MT1JTUEFDRSwgIlRhcmdhIG91dHB1dCBtdXN0IGJlIGdyYXlzY2FsZSBvciBSR0IiKQ0KK0pNRVNTQUdFKEpUUkNfVEdBLCAiJXV4JXUgUkdCIFRhcmdhIGltYWdlIikNCitKTUVTU0FHRShKVFJDX1RHQV9HUkFZLCAiJXV4JXUgZ3JheXNjYWxlIFRhcmdhIGltYWdlIikNCitKTUVTU0FHRShKVFJDX1RHQV9NQVBQRUQsICIldXgldSBjb2xvcm1hcHBlZCBUYXJnYSBpbWFnZSIpDQorI2Vsc2UNCitKTUVTU0FHRShKRVJSX1RHQV9OT1RDT01QLCAiVGFyZ2Egc3VwcG9ydCB3YXMgbm90IGNvbXBpbGVkIikNCisjZW5kaWYgLyogVEFSR0FfU1VQUE9SVEVEICovDQorDQorSk1FU1NBR0UoSkVSUl9CQURfQ01BUF9GSUxFLA0KKwkgIkNvbG9yIG1hcCBmaWxlIGlzIGludmFsaWQgb3Igb2YgdW5zdXBwb3J0ZWQgZm9ybWF0IikNCitKTUVTU0FHRShKRVJSX1RPT19NQU5ZX0NPTE9SUywNCisJICJPdXRwdXQgZmlsZSBmb3JtYXQgY2Fubm90IGhhbmRsZSAlZCBjb2xvcm1hcCBlbnRyaWVzIikNCitKTUVTU0FHRShKRVJSX1VOR0VUQ19GQUlMRUQsICJ1bmdldGMgZmFpbGVkIikNCisjaWZkZWYgVEFSR0FfU1VQUE9SVEVEDQorSk1FU1NBR0UoSkVSUl9VTktOT1dOX0ZPUk1BVCwNCisJICJVbnJlY29nbml6ZWQgaW5wdXQgZmlsZSBmb3JtYXQgLS0tIHBlcmhhcHMgeW91IG5lZWQgLXRhcmdhIikNCisjZWxzZQ0KK0pNRVNTQUdFKEpFUlJfVU5LTk9XTl9GT1JNQVQsICJVbnJlY29nbml6ZWQgaW5wdXQgZmlsZSBmb3JtYXQiKQ0KKyNlbmRpZg0KK0pNRVNTQUdFKEpFUlJfVU5TVVBQT1JURURfRk9STUFULCAiVW5zdXBwb3J0ZWQgb3V0cHV0IGZpbGUgZm9ybWF0IikNCisNCisjaWZkZWYgSk1BS0VfRU5VTV9MSVNUDQorDQorICBKTVNHX0xBU1RBRERPTkNPREUNCit9IEFERE9OX01FU1NBR0VfQ09ERTsNCisNCisjdW5kZWYgSk1BS0VfRU5VTV9MSVNUDQorI2VuZGlmIC8qIEpNQUtFX0VOVU1fTElTVCAqLw0KKw0KKy8qIFphcCBKTUVTU0FHRSBtYWNybyBzbyB0aGF0IGZ1dHVyZSByZS1pbmNsdXNpb25zIGRvIG5vdGhpbmcgYnkgZGVmYXVsdCAqLw0KKyN1bmRlZiBKTUVTU0FHRQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9jZGpwZWcuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9jZGpwZWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTEyMjc4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2NkanBlZy5oCkBAIC0wLDAgKzEsMTg0IEBACisvKg0KKyAqIGNkanBlZy5oDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgY29tbW9uIGRlY2xhcmF0aW9ucyBmb3IgdGhlIHNhbXBsZSBhcHBsaWNhdGlvbnMNCisgKiBjanBlZyBhbmQgZGpwZWcuICBJdCBpcyBOT1QgdXNlZCBieSB0aGUgY29yZSBKUEVHIGxpYnJhcnkuDQorICovDQorDQorI2RlZmluZSBKUEVHX0NKUEVHX0RKUEVHCS8qIGRlZmluZSBwcm9wZXIgb3B0aW9ucyBpbiBqY29uZmlnLmggKi8NCisjZGVmaW5lIEpQRUdfSU5URVJOQUxfT1BUSU9OUwkvKiBjanBlZy5jLGRqcGVnLmMgbmVlZCB0byBzZWUgeHh4X1NVUFBPUlRFRCAqLw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorI2luY2x1ZGUgImplcnJvci5oIgkJLyogZ2V0IGxpYnJhcnkgZXJyb3IgY29kZXMgdG9vICovDQorI2luY2x1ZGUgImNkZXJyb3IuaCIJCS8qIGdldCBhcHBsaWNhdGlvbi1zcGVjaWZpYyBlcnJvciBjb2RlcyAqLw0KKw0KKw0KKy8qDQorICogT2JqZWN0IGludGVyZmFjZSBmb3IgY2pwZWcncyBzb3VyY2UgZmlsZSBkZWNvZGluZyBtb2R1bGVzDQorICovDQorDQordHlwZWRlZiBzdHJ1Y3QgY2pwZWdfc291cmNlX3N0cnVjdCAqIGNqcGVnX3NvdXJjZV9wdHI7DQorDQorc3RydWN0IGNqcGVnX3NvdXJjZV9zdHJ1Y3Qgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9pbnB1dCwgKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCSAgICAgIGNqcGVnX3NvdXJjZV9wdHIgc2luZm8pKTsNCisgIEpNRVRIT0QoSkRJTUVOU0lPTiwgZ2V0X3BpeGVsX3Jvd3MsIChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJICAgICAgIGNqcGVnX3NvdXJjZV9wdHIgc2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgZmluaXNoX2lucHV0LCAoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJICAgICAgIGNqcGVnX3NvdXJjZV9wdHIgc2luZm8pKTsNCisNCisgIEZYU1lTX0ZJTEUgKmlucHV0X2ZpbGU7DQorDQorICBKU0FNUEFSUkFZIGJ1ZmZlcjsNCisgIEpESU1FTlNJT04gYnVmZmVyX2hlaWdodDsNCit9Ow0KKw0KKw0KKy8qDQorICogT2JqZWN0IGludGVyZmFjZSBmb3IgZGpwZWcncyBvdXRwdXQgZmlsZSBlbmNvZGluZyBtb2R1bGVzDQorICovDQorDQordHlwZWRlZiBzdHJ1Y3QgZGpwZWdfZGVzdF9zdHJ1Y3QgKiBkanBlZ19kZXN0X3B0cjsNCisNCitzdHJ1Y3QgZGpwZWdfZGVzdF9zdHJ1Y3Qgew0KKyAgLyogc3RhcnRfb3V0cHV0IGlzIGNhbGxlZCBhZnRlciBqcGVnX3N0YXJ0X2RlY29tcHJlc3MgZmluaXNoZXMuDQorICAgKiBUaGUgY29sb3IgbWFwIHdpbGwgYmUgcmVhZHkgYXQgdGhpcyB0aW1lLCBpZiBvbmUgaXMgbmVlZGVkLg0KKyAgICovDQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X291dHB1dCwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJICAgICAgIGRqcGVnX2Rlc3RfcHRyIGRpbmZvKSk7DQorICAvKiBFbWl0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHBpeGVsIHJvd3MgZnJvbSB0aGUgYnVmZmVyLiAqLw0KKyAgSk1FVEhPRCh2b2lkLCBwdXRfcGl4ZWxfcm93cywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCSBkanBlZ19kZXN0X3B0ciBkaW5mbywNCisJCQkJIEpESU1FTlNJT04gcm93c19zdXBwbGllZCkpOw0KKyAgLyogRmluaXNoIHVwIGF0IHRoZSBlbmQgb2YgdGhlIGltYWdlLiAqLw0KKyAgSk1FVEhPRCh2b2lkLCBmaW5pc2hfb3V0cHV0LCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJZGpwZWdfZGVzdF9wdHIgZGluZm8pKTsNCisNCisgIC8qIFRhcmdldCBmaWxlIHNwZWM7IGZpbGxlZCBpbiBieSBkanBlZy5jIGFmdGVyIG9iamVjdCBpcyBjcmVhdGVkLiAqLw0KKyAgRlhTWVNfRklMRSAqIG91dHB1dF9maWxlOw0KKw0KKyAgLyogT3V0cHV0IHBpeGVsLXJvdyBidWZmZXIuICBDcmVhdGVkIGJ5IG1vZHVsZSBpbml0IG9yIHN0YXJ0X291dHB1dC4NCisgICAqIFdpZHRoIGlzIGNpbmZvLT5vdXRwdXRfd2lkdGggKiBjaW5mby0+b3V0cHV0X2NvbXBvbmVudHM7DQorICAgKiBoZWlnaHQgaXMgYnVmZmVyX2hlaWdodC4NCisgICAqLw0KKyAgSlNBTVBBUlJBWSBidWZmZXI7DQorICBKRElNRU5TSU9OIGJ1ZmZlcl9oZWlnaHQ7DQorfTsNCisNCisNCisvKg0KKyAqIGNqcGVnL2RqcGVnIG1heSBuZWVkIHRvIHBlcmZvcm0gZXh0cmEgcGFzc2VzIHRvIGNvbnZlcnQgdG8gb3IgZnJvbQ0KKyAqIHRoZSBzb3VyY2UvZGVzdGluYXRpb24gZmlsZSBmb3JtYXQuICBUaGUgSlBFRyBsaWJyYXJ5IGRvZXMgbm90IGtub3cNCisgKiBhYm91dCB0aGVzZSBwYXNzZXMsIGJ1dCB3ZSdkIGxpa2UgdGhlbSB0byBiZSBjb3VudGVkIGJ5IHRoZSBwcm9ncmVzcw0KKyAqIG1vbml0b3IuICBXZSB1c2UgYW4gZXhwYW5kZWQgcHJvZ3Jlc3MgbW9uaXRvciBvYmplY3QgdG8gaG9sZCB0aGUNCisgKiBhZGRpdGlvbmFsIHBhc3MgY291bnQuDQorICovDQorDQorc3RydWN0IGNkanBlZ19wcm9ncmVzc19tZ3Igew0KKyAgc3RydWN0IGpwZWdfcHJvZ3Jlc3NfbWdyIHB1YjsJLyogZmllbGRzIGtub3duIHRvIEpQRUcgbGlicmFyeSAqLw0KKyAgaW50IGNvbXBsZXRlZF9leHRyYV9wYXNzZXM7CS8qIGV4dHJhIHBhc3NlcyBjb21wbGV0ZWQgKi8NCisgIGludCB0b3RhbF9leHRyYV9wYXNzZXM7CS8qIHRvdGFsIGV4dHJhICovDQorICAvKiBsYXN0IHByaW50ZWQgcGVyY2VudGFnZSBzdG9yZWQgaGVyZSB0byBhdm9pZCBtdWx0aXBsZSBwcmludG91dHMgKi8NCisgIGludCBwZXJjZW50X2RvbmU7DQorfTsNCisNCit0eXBlZGVmIHN0cnVjdCBjZGpwZWdfcHJvZ3Jlc3NfbWdyICogY2RfcHJvZ3Jlc3NfcHRyOw0KKw0KKw0KKy8qIFNob3J0IGZvcm1zIG9mIGV4dGVybmFsIG5hbWVzIGZvciBzeXN0ZW1zIHdpdGggYnJhaW4tZGFtYWdlZCBsaW5rZXJzLiAqLw0KKw0KKyNpZmRlZiBORUVEX1NIT1JUX0VYVEVSTkFMX05BTUVTDQorI2RlZmluZSBqaW5pdF9yZWFkX2JtcAkJaklSZEJNUA0KKyNkZWZpbmUgamluaXRfd3JpdGVfYm1wCQlqSVdyQk1QDQorI2RlZmluZSBqaW5pdF9yZWFkX2dpZgkJaklSZEdJRg0KKyNkZWZpbmUgamluaXRfd3JpdGVfZ2lmCQlqSVdyR0lGDQorI2RlZmluZSBqaW5pdF9yZWFkX3BwbQkJaklSZFBQTQ0KKyNkZWZpbmUgamluaXRfd3JpdGVfcHBtCQlqSVdyUFBNDQorI2RlZmluZSBqaW5pdF9yZWFkX3JsZQkJaklSZFJMRQ0KKyNkZWZpbmUgamluaXRfd3JpdGVfcmxlCQlqSVdyUkxFDQorI2RlZmluZSBqaW5pdF9yZWFkX3RhcmdhCWpJUmRUYXJnYQ0KKyNkZWZpbmUgamluaXRfd3JpdGVfdGFyZ2EJaklXclRhcmdhDQorI2RlZmluZSByZWFkX3F1YW50X3RhYmxlcwlSZFFUYWJsZXMNCisjZGVmaW5lIHJlYWRfc2Nhbl9zY3JpcHQJUmRTY25TY3JpcHQNCisjZGVmaW5lIHNldF9xdWFudF9zbG90cwkJU2V0UVNsb3RzDQorI2RlZmluZSBzZXRfc2FtcGxlX2ZhY3RvcnMJU2V0U0ZhY3RzDQorI2RlZmluZSByZWFkX2NvbG9yX21hcAkJUmRDTWFwDQorI2RlZmluZSBlbmFibGVfc2lnbmFsX2NhdGNoZXIJRW5TaWdDYXRjaGVyDQorI2RlZmluZSBzdGFydF9wcm9ncmVzc19tb25pdG9yCVN0UHJvZ01vbg0KKyNkZWZpbmUgZW5kX3Byb2dyZXNzX21vbml0b3IJRW5Qcm9nTW9uDQorI2RlZmluZSByZWFkX3N0ZGluCQlSZFN0ZGluDQorI2RlZmluZSB3cml0ZV9zdGRvdXQJCVdyU3Rkb3V0DQorI2VuZGlmIC8qIE5FRURfU0hPUlRfRVhURVJOQUxfTkFNRVMgKi8NCisNCisvKiBNb2R1bGUgc2VsZWN0aW9uIHJvdXRpbmVzIGZvciBJL08gbW9kdWxlcy4gKi8NCisNCitFWFRFUk4oY2pwZWdfc291cmNlX3B0cikgamluaXRfcmVhZF9ibXAgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTihkanBlZ19kZXN0X3B0cikgamluaXRfd3JpdGVfYm1wIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgICBib29sZWFuIGlzX29zMikpOw0KK0VYVEVSTihjanBlZ19zb3VyY2VfcHRyKSBqaW5pdF9yZWFkX2dpZiBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKGRqcGVnX2Rlc3RfcHRyKSBqaW5pdF93cml0ZV9naWYgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKGNqcGVnX3NvdXJjZV9wdHIpIGppbml0X3JlYWRfcHBtIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4oZGpwZWdfZGVzdF9wdHIpIGppbml0X3dyaXRlX3BwbSBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4oY2pwZWdfc291cmNlX3B0cikgamluaXRfcmVhZF9ybGUgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTihkanBlZ19kZXN0X3B0cikgamluaXRfd3JpdGVfcmxlIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTihjanBlZ19zb3VyY2VfcHRyKSBqaW5pdF9yZWFkX3RhcmdhIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4oZGpwZWdfZGVzdF9wdHIpIGppbml0X3dyaXRlX3RhcmdhIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKw0KKy8qIGNqcGVnIHN1cHBvcnQgcm91dGluZXMgKGluIHJkc3dpdGNoLmMpICovDQorDQorRVhURVJOKGJvb2xlYW4pIHJlYWRfcXVhbnRfdGFibGVzIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sIGNoYXIgKiBmaWxlbmFtZSwNCisJCQkJICAgIGludCBzY2FsZV9mYWN0b3IsIGJvb2xlYW4gZm9yY2VfYmFzZWxpbmUpKTsNCitFWFRFUk4oYm9vbGVhbikgcmVhZF9zY2FuX3NjcmlwdCBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBjaGFyICogZmlsZW5hbWUpKTsNCitFWFRFUk4oYm9vbGVhbikgc2V0X3F1YW50X3Nsb3RzIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sIGNoYXIgKmFyZykpOw0KK0VYVEVSTihib29sZWFuKSBzZXRfc2FtcGxlX2ZhY3RvcnMgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywgY2hhciAqYXJnKSk7DQorDQorLyogZGpwZWcgc3VwcG9ydCByb3V0aW5lcyAoaW4gcmRjb2xtYXAuYykgKi8NCisNCitFWFRFUk4odm9pZCkgcmVhZF9jb2xvcl9tYXAgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBGWFNZU19GSUxFICogaW5maWxlKSk7DQorDQorLyogY29tbW9uIHN1cHBvcnQgcm91dGluZXMgKGluIGNkanBlZy5jKSAqLw0KKw0KK0VYVEVSTih2b2lkKSBlbmFibGVfc2lnbmFsX2NhdGNoZXIgSlBQKChqX2NvbW1vbl9wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgc3RhcnRfcHJvZ3Jlc3NfbW9uaXRvciBKUFAoKGpfY29tbW9uX3B0ciBjaW5mbywNCisJCQkJCSBjZF9wcm9ncmVzc19wdHIgcHJvZ3Jlc3MpKTsNCitFWFRFUk4odm9pZCkgZW5kX3Byb2dyZXNzX21vbml0b3IgSlBQKChqX2NvbW1vbl9wdHIgY2luZm8pKTsNCitFWFRFUk4oYm9vbGVhbikga2V5bWF0Y2ggSlBQKChjaGFyICogYXJnLCBjb25zdCBjaGFyICoga2V5d29yZCwgaW50IG1pbmNoYXJzKSk7DQorRVhURVJOKEZYU1lTX0ZJTEUgKikgcmVhZF9zdGRpbiBKUFAoKHZvaWQpKTsNCitFWFRFUk4oRlhTWVNfRklMRSAqKSB3cml0ZV9zdGRvdXQgSlBQKCh2b2lkKSk7DQorDQorLyogbWlzY2VsbGFuZW91cyB1c2VmdWwgbWFjcm9zICovDQorDQorI2lmZGVmIERPTlRfVVNFX0JfTU9ERQkJLyogZGVmaW5lIG1vZGUgcGFyYW1ldGVycyBmb3IgZm9wZW4oKSAqLw0KKyNkZWZpbmUgUkVBRF9CSU5BUlkJInIiDQorI2RlZmluZSBXUklURV9CSU5BUlkJInciDQorI2Vsc2UNCisjaWZkZWYgVk1TCQkJLyogVk1TIGlzIHZlcnkgbm9uc3RhbmRhcmQgKi8NCisjZGVmaW5lIFJFQURfQklOQVJZCSJyYiIsICJjdHg9c3RtIg0KKyNkZWZpbmUgV1JJVEVfQklOQVJZCSJ3YiIsICJjdHg9c3RtIg0KKyNlbHNlCQkJCS8qIHN0YW5kYXJkIEFOU0ktY29tcGxpYW50IGNhc2UgKi8NCisjZGVmaW5lIFJFQURfQklOQVJZCSJyYiINCisjZGVmaW5lIFdSSVRFX0JJTkFSWQkid2IiDQorI2VuZGlmDQorI2VuZGlmDQorDQorI2lmbmRlZiBFWElUX0ZBSUxVUkUJCS8qIGRlZmluZSBleGl0KCkgY29kZXMgaWYgbm90IHByb3ZpZGVkICovDQorI2RlZmluZSBFWElUX0ZBSUxVUkUgIDENCisjZW5kaWYNCisjaWZuZGVmIEVYSVRfU1VDQ0VTUw0KKyNpZmRlZiBWTVMNCisjZGVmaW5lIEVYSVRfU1VDQ0VTUyAgMQkJLyogVk1TIGlzIHZlcnkgbm9uc3RhbmRhcmQgKi8NCisjZWxzZQ0KKyNkZWZpbmUgRVhJVF9TVUNDRVNTICAwDQorI2VuZGlmDQorI2VuZGlmDQorI2lmbmRlZiBFWElUX1dBUk5JTkcNCisjaWZkZWYgVk1TDQorI2RlZmluZSBFWElUX1dBUk5JTkcgIDEJCS8qIFZNUyBpcyB2ZXJ5IG5vbnN0YW5kYXJkICovDQorI2Vsc2UNCisjZGVmaW5lIEVYSVRfV0FSTklORyAgMg0KKyNlbmRpZg0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjYXBpbWluLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2FwaW1pbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjODhjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2FwaW1pbi5jCkBAIC0wLDAgKzEsMjgzIEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamNhcGltaW4uYw0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTk0LTE5OTgsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIGFwcGxpY2F0aW9uIGludGVyZmFjZSBjb2RlIGZvciB0aGUgY29tcHJlc3Npb24gaGFsZg0KKyAqIG9mIHRoZSBKUEVHIGxpYnJhcnkuICBUaGVzZSBhcmUgdGhlICJtaW5pbXVtIiBBUEkgcm91dGluZXMgdGhhdCBtYXkgYmUNCisgKiBuZWVkZWQgaW4gZWl0aGVyIHRoZSBub3JtYWwgZnVsbC1jb21wcmVzc2lvbiBjYXNlIG9yIHRoZSB0cmFuc2NvZGluZy1vbmx5DQorICogY2FzZS4NCisgKg0KKyAqIE1vc3Qgb2YgdGhlIHJvdXRpbmVzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBkaXJlY3RseSBieSBhbiBhcHBsaWNhdGlvbg0KKyAqIGFyZSBpbiB0aGlzIGZpbGUgb3IgaW4gamNhcGlzdGQuYy4gIEJ1dCBhbHNvIHNlZSBqY3BhcmFtLmMgZm9yDQorICogcGFyYW1ldGVyLXNldHVwIGhlbHBlciByb3V0aW5lcywgamNvbWFwaS5jIGZvciByb3V0aW5lcyBzaGFyZWQgYnkNCisgKiBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiwgYW5kIGpjdHJhbnMuYyBmb3IgdGhlIHRyYW5zY29kaW5nIGNhc2UuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQorLyoNCisgKiBJbml0aWFsaXphdGlvbiBvZiBhIEpQRUcgY29tcHJlc3Npb24gb2JqZWN0Lg0KKyAqIFRoZSBlcnJvciBtYW5hZ2VyIG11c3QgYWxyZWFkeSBiZSBzZXQgdXAgKGluIGNhc2UgbWVtb3J5IG1hbmFnZXIgZmFpbHMpLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfQ3JlYXRlQ29tcHJlc3MgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgdmVyc2lvbiwgc2l6ZV90IHN0cnVjdHNpemUpDQorew0KKyAgaW50IGk7DQorDQorICAvKiBHdWFyZCBhZ2FpbnN0IHZlcnNpb24gbWlzbWF0Y2hlcyBiZXR3ZWVuIGxpYnJhcnkgYW5kIGNhbGxlci4gKi8NCisgIGNpbmZvLT5tZW0gPSBOVUxMOwkJLyogc28ganBlZ19kZXN0cm95IGtub3dzIG1lbSBtZ3Igbm90IGNhbGxlZCAqLw0KKyAgaWYgKHZlcnNpb24gIT0gSlBFR19MSUJfVkVSU0lPTikNCisgICAgRVJSRVhJVDIoY2luZm8sIEpFUlJfQkFEX0xJQl9WRVJTSU9OLCBKUEVHX0xJQl9WRVJTSU9OLCB2ZXJzaW9uKTsNCisgIGlmIChzdHJ1Y3RzaXplICE9IFNJWkVPRihzdHJ1Y3QganBlZ19jb21wcmVzc19zdHJ1Y3QpKQ0KKyAgICBFUlJFWElUMihjaW5mbywgSkVSUl9CQURfU1RSVUNUX1NJWkUsIA0KKwkgICAgIChpbnQpIFNJWkVPRihzdHJ1Y3QganBlZ19jb21wcmVzc19zdHJ1Y3QpLCAoaW50KSBzdHJ1Y3RzaXplKTsNCisNCisgIC8qIEZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIHdlIHplcm8gdGhlIHdob2xlIG1hc3RlciBzdHJ1Y3R1cmUuDQorICAgKiBCdXQgdGhlIGFwcGxpY2F0aW9uIGhhcyBhbHJlYWR5IHNldCB0aGUgZXJyIHBvaW50ZXIsIGFuZCBtYXkgaGF2ZSBzZXQNCisgICAqIGNsaWVudF9kYXRhLCBzbyB3ZSBoYXZlIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhvc2UgZmllbGRzLg0KKyAgICogTm90ZTogaWYgYXBwbGljYXRpb24gaGFzbid0IHNldCBjbGllbnRfZGF0YSwgdG9vbHMgbGlrZSBQdXJpZnkgbWF5DQorICAgKiBjb21wbGFpbiBoZXJlLg0KKyAgICovDQorICB7DQorICAgIHN0cnVjdCBqcGVnX2Vycm9yX21nciAqIGVyciA9IGNpbmZvLT5lcnI7DQorICAgIHZvaWQgKiBjbGllbnRfZGF0YSA9IGNpbmZvLT5jbGllbnRfZGF0YTsgLyogaWdub3JlIFB1cmlmeSBjb21wbGFpbnQgaGVyZSAqLw0KKyAgICBNRU1aRVJPKGNpbmZvLCBTSVpFT0Yoc3RydWN0IGpwZWdfY29tcHJlc3Nfc3RydWN0KSk7DQorICAgIGNpbmZvLT5lcnIgPSBlcnI7DQorICAgIGNpbmZvLT5jbGllbnRfZGF0YSA9IGNsaWVudF9kYXRhOw0KKyAgfQ0KKyAgY2luZm8tPmlzX2RlY29tcHJlc3NvciA9IEZBTFNFOw0KKw0KKyAgLyogSW5pdGlhbGl6ZSBhIG1lbW9yeSBtYW5hZ2VyIGluc3RhbmNlIGZvciB0aGlzIG9iamVjdCAqLw0KKyAgamluaXRfbWVtb3J5X21ncigoal9jb21tb25fcHRyKSBjaW5mbyk7DQorDQorICAvKiBaZXJvIG91dCBwb2ludGVycyB0byBwZXJtYW5lbnQgc3RydWN0dXJlcy4gKi8NCisgIGNpbmZvLT5wcm9ncmVzcyA9IE5VTEw7DQorICBjaW5mby0+ZGVzdCA9IE5VTEw7DQorDQorICBjaW5mby0+Y29tcF9pbmZvID0gTlVMTDsNCisNCisgIGZvciAoaSA9IDA7IGkgPCBOVU1fUVVBTlRfVEJMUzsgaSsrKQ0KKyAgICBjaW5mby0+cXVhbnRfdGJsX3B0cnNbaV0gPSBOVUxMOw0KKw0KKyAgZm9yIChpID0gMDsgaSA8IE5VTV9IVUZGX1RCTFM7IGkrKykgew0KKyAgICBjaW5mby0+ZGNfaHVmZl90YmxfcHRyc1tpXSA9IE5VTEw7DQorICAgIGNpbmZvLT5hY19odWZmX3RibF9wdHJzW2ldID0gTlVMTDsNCisgIH0NCisNCisgIGNpbmZvLT5zY3JpcHRfc3BhY2UgPSBOVUxMOw0KKw0KKyAgY2luZm8tPmlucHV0X2dhbW1hID0gMS4wOwkvKiBpbiBjYXNlIGFwcGxpY2F0aW9uIGZvcmdldHMgKi8NCisNCisgIC8qIE9LLCBJJ20gcmVhZHkgKi8NCisgIGNpbmZvLT5nbG9iYWxfc3RhdGUgPSBDU1RBVEVfU1RBUlQ7DQorfQ0KKw0KKw0KKy8qDQorICogRGVzdHJ1Y3Rpb24gb2YgYSBKUEVHIGNvbXByZXNzaW9uIG9iamVjdA0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfZGVzdHJveV9jb21wcmVzcyAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAganBlZ19kZXN0cm95KChqX2NvbW1vbl9wdHIpIGNpbmZvKTsgLyogdXNlIGNvbW1vbiByb3V0aW5lICovDQorfQ0KKw0KKw0KKy8qDQorICogQWJvcnQgcHJvY2Vzc2luZyBvZiBhIEpQRUcgY29tcHJlc3Npb24gb3BlcmF0aW9uLA0KKyAqIGJ1dCBkb24ndCBkZXN0cm95IHRoZSBvYmplY3QgaXRzZWxmLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfYWJvcnRfY29tcHJlc3MgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIGpwZWdfYWJvcnQoKGpfY29tbW9uX3B0cikgY2luZm8pOyAvKiB1c2UgY29tbW9uIHJvdXRpbmUgKi8NCit9DQorDQorDQorLyoNCisgKiBGb3JjaWJseSBzdXBwcmVzcyBvciB1bi1zdXBwcmVzcyBhbGwgcXVhbnRpemF0aW9uIGFuZCBIdWZmbWFuIHRhYmxlcy4NCisgKiBNYXJrcyBhbGwgY3VycmVudGx5IGRlZmluZWQgdGFibGVzIGFzIGFscmVhZHkgd3JpdHRlbiAoaWYgc3VwcHJlc3MpDQorICogb3Igbm90IHdyaXR0ZW4gKGlmICFzdXBwcmVzcykuICBUaGlzIHdpbGwgY29udHJvbCB3aGV0aGVyIHRoZXkgZ2V0IGVtaXR0ZWQNCisgKiBieSBhIHN1YnNlcXVlbnQganBlZ19zdGFydF9jb21wcmVzcyBjYWxsLg0KKyAqDQorICogVGhpcyByb3V0aW5lIGlzIGV4cG9ydGVkIGZvciB1c2UgYnkgYXBwbGljYXRpb25zIHRoYXQgd2FudCB0byBwcm9kdWNlDQorICogYWJicmV2aWF0ZWQgSlBFRyBkYXRhc3RyZWFtcy4gIEl0IGxvZ2ljYWxseSBiZWxvbmdzIGluIGpjcGFyYW0uYywgYnV0DQorICogc2luY2UgaXQgaXMgY2FsbGVkIGJ5IGpwZWdfc3RhcnRfY29tcHJlc3MsIHdlIHB1dCBpdCBoZXJlIC0tLSBvdGhlcndpc2UNCisgKiBqY3BhcmFtLm8gd291bGQgYmUgbGlua2VkIHdoZXRoZXIgdGhlIGFwcGxpY2F0aW9uIHVzZWQgaXQgb3Igbm90Lg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfc3VwcHJlc3NfdGFibGVzIChqX2NvbXByZXNzX3B0ciBjaW5mbywgYm9vbGVhbiBzdXBwcmVzcykNCit7DQorICBpbnQgaTsNCisgIEpRVUFOVF9UQkwgKiBxdGJsOw0KKyAgSkhVRkZfVEJMICogaHRibDsNCisNCisgIGZvciAoaSA9IDA7IGkgPCBOVU1fUVVBTlRfVEJMUzsgaSsrKSB7DQorICAgIGlmICgocXRibCA9IGNpbmZvLT5xdWFudF90YmxfcHRyc1tpXSkgIT0gTlVMTCkNCisgICAgICBxdGJsLT5zZW50X3RhYmxlID0gc3VwcHJlc3M7DQorICB9DQorDQorICBmb3IgKGkgPSAwOyBpIDwgTlVNX0hVRkZfVEJMUzsgaSsrKSB7DQorICAgIGlmICgoaHRibCA9IGNpbmZvLT5kY19odWZmX3RibF9wdHJzW2ldKSAhPSBOVUxMKQ0KKyAgICAgIGh0YmwtPnNlbnRfdGFibGUgPSBzdXBwcmVzczsNCisgICAgaWYgKChodGJsID0gY2luZm8tPmFjX2h1ZmZfdGJsX3B0cnNbaV0pICE9IE5VTEwpDQorICAgICAgaHRibC0+c2VudF90YWJsZSA9IHN1cHByZXNzOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIEZpbmlzaCBKUEVHIGNvbXByZXNzaW9uLg0KKyAqDQorICogSWYgYSBtdWx0aXBhc3Mgb3BlcmF0aW5nIG1vZGUgd2FzIHNlbGVjdGVkLCB0aGlzIG1heSBkbyBhIGdyZWF0IGRlYWwgb2YNCisgKiB3b3JrIGluY2x1ZGluZyBtb3N0IG9mIHRoZSBhY3R1YWwgb3V0cHV0Lg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfZmluaXNoX2NvbXByZXNzIChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBKRElNRU5TSU9OIGlNQ1Vfcm93Ow0KKw0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgPT0gQ1NUQVRFX1NDQU5OSU5HIHx8DQorICAgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSA9PSBDU1RBVEVfUkFXX09LKSB7DQorICAgIC8qIFRlcm1pbmF0ZSBmaXJzdCBwYXNzICovDQorICAgIGlmIChjaW5mby0+bmV4dF9zY2FubGluZSA8IGNpbmZvLT5pbWFnZV9oZWlnaHQpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9UT09fTElUVExFX0RBVEEpOw0KKyAgICAoKmNpbmZvLT5tYXN0ZXItPmZpbmlzaF9wYXNzKSAoY2luZm8pOw0KKyAgfSBlbHNlIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlICE9IENTVEFURV9XUkNPRUZTKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKyAgLyogUGVyZm9ybSBhbnkgcmVtYWluaW5nIHBhc3NlcyAqLw0KKyAgd2hpbGUgKCEgY2luZm8tPm1hc3Rlci0+aXNfbGFzdF9wYXNzKSB7DQorICAgICgqY2luZm8tPm1hc3Rlci0+cHJlcGFyZV9mb3JfcGFzcykgKGNpbmZvKTsNCisgICAgZm9yIChpTUNVX3JvdyA9IDA7IGlNQ1Vfcm93IDwgY2luZm8tPnRvdGFsX2lNQ1Vfcm93czsgaU1DVV9yb3crKykgew0KKyAgICAgIGlmIChjaW5mby0+cHJvZ3Jlc3MgIT0gTlVMTCkgew0KKwljaW5mby0+cHJvZ3Jlc3MtPnBhc3NfY291bnRlciA9IChsb25nKSBpTUNVX3JvdzsNCisJY2luZm8tPnByb2dyZXNzLT5wYXNzX2xpbWl0ID0gKGxvbmcpIGNpbmZvLT50b3RhbF9pTUNVX3Jvd3M7DQorCSgqY2luZm8tPnByb2dyZXNzLT5wcm9ncmVzc19tb25pdG9yKSAoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKyAgICAgIH0NCisgICAgICAvKiBXZSBieXBhc3MgdGhlIG1haW4gY29udHJvbGxlciBhbmQgaW52b2tlIGNvZWYgY29udHJvbGxlciBkaXJlY3RseTsNCisgICAgICAgKiBhbGwgd29yayBpcyBiZWluZyBkb25lIGZyb20gdGhlIGNvZWZmaWNpZW50IGJ1ZmZlci4NCisgICAgICAgKi8NCisgICAgICBpZiAoISAoKmNpbmZvLT5jb2VmLT5jb21wcmVzc19kYXRhKSAoY2luZm8sIChKU0FNUElNQUdFKSBOVUxMKSkNCisJRVJSRVhJVChjaW5mbywgSkVSUl9DQU5UX1NVU1BFTkQpOw0KKyAgICB9DQorICAgICgqY2luZm8tPm1hc3Rlci0+ZmluaXNoX3Bhc3MpIChjaW5mbyk7DQorICB9DQorICAvKiBXcml0ZSBFT0ksIGRvIGZpbmFsIGNsZWFudXAgKi8NCisgICgqY2luZm8tPm1hcmtlci0+d3JpdGVfZmlsZV90cmFpbGVyKSAoY2luZm8pOw0KKyAgKCpjaW5mby0+ZGVzdC0+dGVybV9kZXN0aW5hdGlvbikgKGNpbmZvKTsNCisgIC8qIFdlIGNhbiB1c2UganBlZ19hYm9ydCB0byByZWxlYXNlIG1lbW9yeSBhbmQgcmVzZXQgZ2xvYmFsX3N0YXRlICovDQorICBqcGVnX2Fib3J0KChqX2NvbW1vbl9wdHIpIGNpbmZvKTsNCit9DQorDQorDQorLyoNCisgKiBXcml0ZSBhIHNwZWNpYWwgbWFya2VyLg0KKyAqIFRoaXMgaXMgb25seSByZWNvbW1lbmRlZCBmb3Igd3JpdGluZyBDT00gb3IgQVBQbiBtYXJrZXJzLg0KKyAqIE11c3QgYmUgY2FsbGVkIGFmdGVyIGpwZWdfc3RhcnRfY29tcHJlc3MoKSBhbmQgYmVmb3JlDQorICogZmlyc3QgY2FsbCB0byBqcGVnX3dyaXRlX3NjYW5saW5lcygpIG9yIGpwZWdfd3JpdGVfcmF3X2RhdGEoKS4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqcGVnX3dyaXRlX21hcmtlciAoal9jb21wcmVzc19wdHIgY2luZm8sIGludCBtYXJrZXIsDQorCQkgICBjb25zdCBKT0NURVQgKmRhdGFwdHIsIHVuc2lnbmVkIGludCBkYXRhbGVuKQ0KK3sNCisgIEpNRVRIT0Qodm9pZCwgd3JpdGVfbWFya2VyX2J5dGUsIChqX2NvbXByZXNzX3B0ciBpbmZvLCBpbnQgdmFsKSk7DQorDQorICBpZiAoY2luZm8tPm5leHRfc2NhbmxpbmUgIT0gMCB8fA0KKyAgICAgIChjaW5mby0+Z2xvYmFsX3N0YXRlICE9IENTVEFURV9TQ0FOTklORyAmJg0KKyAgICAgICBjaW5mby0+Z2xvYmFsX3N0YXRlICE9IENTVEFURV9SQVdfT0sgJiYNCisgICAgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSAhPSBDU1RBVEVfV1JDT0VGUykpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9TVEFURSwgY2luZm8tPmdsb2JhbF9zdGF0ZSk7DQorDQorICAoKmNpbmZvLT5tYXJrZXItPndyaXRlX21hcmtlcl9oZWFkZXIpIChjaW5mbywgbWFya2VyLCBkYXRhbGVuKTsNCisgIHdyaXRlX21hcmtlcl9ieXRlID0gY2luZm8tPm1hcmtlci0+d3JpdGVfbWFya2VyX2J5dGU7CS8qIGNvcHkgZm9yIHNwZWVkICovDQorICB3aGlsZSAoZGF0YWxlbi0tKSB7DQorICAgICgqd3JpdGVfbWFya2VyX2J5dGUpIChjaW5mbywgKmRhdGFwdHIpOw0KKyAgICBkYXRhcHRyKys7DQorICB9DQorfQ0KKw0KKy8qIFNhbWUsIGJ1dCBwaWVjZW1lYWwuICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ193cml0ZV9tX2hlYWRlciAoal9jb21wcmVzc19wdHIgY2luZm8sIGludCBtYXJrZXIsIHVuc2lnbmVkIGludCBkYXRhbGVuKQ0KK3sNCisgIGlmIChjaW5mby0+bmV4dF9zY2FubGluZSAhPSAwIHx8DQorICAgICAgKGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gQ1NUQVRFX1NDQU5OSU5HICYmDQorICAgICAgIGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gQ1NUQVRFX1JBV19PSyAmJg0KKyAgICAgICBjaW5mby0+Z2xvYmFsX3N0YXRlICE9IENTVEFURV9XUkNPRUZTKSkNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NUQVRFLCBjaW5mby0+Z2xvYmFsX3N0YXRlKTsNCisNCisgICgqY2luZm8tPm1hcmtlci0+d3JpdGVfbWFya2VyX2hlYWRlcikgKGNpbmZvLCBtYXJrZXIsIGRhdGFsZW4pOw0KK30NCisNCitHTE9CQUwodm9pZCkNCitqcGVnX3dyaXRlX21fYnl0ZSAoal9jb21wcmVzc19wdHIgY2luZm8sIGludCB2YWwpDQorew0KKyAgKCpjaW5mby0+bWFya2VyLT53cml0ZV9tYXJrZXJfYnl0ZSkgKGNpbmZvLCB2YWwpOw0KK30NCisNCisNCisvKg0KKyAqIEFsdGVybmF0ZSBjb21wcmVzc2lvbiBmdW5jdGlvbjoganVzdCB3cml0ZSBhbiBhYmJyZXZpYXRlZCB0YWJsZSBmaWxlLg0KKyAqIEJlZm9yZSBjYWxsaW5nIHRoaXMsIGFsbCBwYXJhbWV0ZXJzIGFuZCBhIGRhdGEgZGVzdGluYXRpb24gbXVzdCBiZSBzZXQgdXAuDQorICoNCisgKiBUbyBwcm9kdWNlIGEgcGFpciBvZiBmaWxlcyBjb250YWluaW5nIGFiYnJldmlhdGVkIHRhYmxlcyBhbmQgYWJicmV2aWF0ZWQNCisgKiBpbWFnZSBkYXRhLCBvbmUgd291bGQgcHJvY2VlZCBhcyBmb2xsb3dzOg0KKyAqDQorICoJCWluaXRpYWxpemUgSlBFRyBvYmplY3QNCisgKgkJc2V0IEpQRUcgcGFyYW1ldGVycw0KKyAqCQlzZXQgZGVzdGluYXRpb24gdG8gdGFibGUgZmlsZQ0KKyAqCQlqcGVnX3dyaXRlX3RhYmxlcyhjaW5mbyk7DQorICoJCXNldCBkZXN0aW5hdGlvbiB0byBpbWFnZSBmaWxlDQorICoJCWpwZWdfc3RhcnRfY29tcHJlc3MoY2luZm8sIEZBTFNFKTsNCisgKgkJd3JpdGUgZGF0YS4uLg0KKyAqCQlqcGVnX2ZpbmlzaF9jb21wcmVzcyhjaW5mbyk7DQorICoNCisgKiBqcGVnX3dyaXRlX3RhYmxlcyBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIG1hcmtpbmcgYWxsIHRhYmxlcyB3cml0dGVuDQorICogKHNhbWUgYXMganBlZ19zdXBwcmVzc190YWJsZXMoLi4uLCBUUlVFKSkuICBUaHVzIGEgc3Vic2VxdWVudCBzdGFydF9jb21wcmVzcw0KKyAqIHdpbGwgbm90IHJlLWVtaXQgdGhlIHRhYmxlcyB1bmxlc3MgaXQgaXMgcGFzc2VkIHdyaXRlX2FsbF90YWJsZXM9VFJVRS4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqcGVnX3dyaXRlX3RhYmxlcyAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gQ1NUQVRFX1NUQVJUKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKw0KKyAgLyogKFJlKWluaXRpYWxpemUgZXJyb3IgbWdyIGFuZCBkZXN0aW5hdGlvbiBtb2R1bGVzICovDQorICAoKmNpbmZvLT5lcnItPnJlc2V0X2Vycm9yX21ncikgKChqX2NvbW1vbl9wdHIpIGNpbmZvKTsNCisgICgqY2luZm8tPmRlc3QtPmluaXRfZGVzdGluYXRpb24pIChjaW5mbyk7DQorICAvKiBJbml0aWFsaXplIHRoZSBtYXJrZXIgd3JpdGVyIC4uLiBiaXQgb2YgYSBjcm9jayB0byBkbyBpdCBoZXJlLiAqLw0KKyAgamluaXRfbWFya2VyX3dyaXRlcihjaW5mbyk7DQorICAvKiBXcml0ZSB0aGVtIHRhYmxlcyEgKi8NCisgICgqY2luZm8tPm1hcmtlci0+d3JpdGVfdGFibGVzX29ubHkpIChjaW5mbyk7DQorICAvKiBBbmQgY2xlYW4gdXAuICovDQorICAoKmNpbmZvLT5kZXN0LT50ZXJtX2Rlc3RpbmF0aW9uKSAoY2luZm8pOw0KKyAgLyoNCisgICAqIEluIGxpYnJhcnkgcmVsZWFzZXMgdXAgdGhyb3VnaCB2NmEsIHdlIGNhbGxlZCBqcGVnX2Fib3J0KCkgaGVyZSB0byBmcmVlDQorICAgKiBhbnkgd29ya2luZyBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBkZXN0aW5hdGlvbiBtYW5hZ2VyIGFuZCBtYXJrZXINCisgICAqIHdyaXRlci4gIFNvbWUgYXBwbGljYXRpb25zIGhhZCBhIHByb2JsZW0gd2l0aCB0aGF0OiB0aGV5IGFsbG9jYXRlZCBzcGFjZQ0KKyAgICogb2YgdGhlaXIgb3duIGZyb20gdGhlIGxpYnJhcnkgbWVtb3J5IG1hbmFnZXIsIGFuZCBkaWRuJ3Qgd2FudCBpdCB0byBnbw0KKyAgICogYXdheSBkdXJpbmcgd3JpdGVfdGFibGVzLiAgU28gbm93IHdlIGRvIG5vdGhpbmcuICBUaGlzIHdpbGwgY2F1c2UgYQ0KKyAgICogbWVtb3J5IGxlYWsgaWYgYW4gYXBwIGNhbGxzIHdyaXRlX3RhYmxlcyByZXBlYXRlZGx5IHdpdGhvdXQgZG9pbmcgYSBmdWxsDQorICAgKiBjb21wcmVzc2lvbiBjeWNsZSBvciBvdGhlcndpc2UgcmVzZXR0aW5nIHRoZSBKUEVHIG9iamVjdC4gIEhvd2V2ZXIsIHRoYXQNCisgICAqIHNlZW1zIGxlc3MgYmFkIHRoYW4gdW5leHBlY3RlZGx5IGZyZWVpbmcgbWVtb3J5IGluIHRoZSBub3JtYWwgY2FzZS4NCisgICAqIEFuIGFwcCB0aGF0IHByZWZlcnMgdGhlIG9sZCBiZWhhdmlvciBjYW4gY2FsbCBqcGVnX2Fib3J0IGZvciBpdHNlbGYgYWZ0ZXINCisgICAqIGVhY2ggY2FsbCB0byBqcGVnX3dyaXRlX3RhYmxlcygpLg0KKyAgICovDQorfQ0KKw0KKyNlbmRpZiAvL19GWF9KUEVHX1RVUkJPXw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjYXBpc3RkLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2FwaXN0ZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMTM1NDIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2FwaXN0ZC5jCkBAIC0wLDAgKzEsMTY0IEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamNhcGlzdGQuYw0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTk0LTE5OTYsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIGFwcGxpY2F0aW9uIGludGVyZmFjZSBjb2RlIGZvciB0aGUgY29tcHJlc3Npb24gaGFsZg0KKyAqIG9mIHRoZSBKUEVHIGxpYnJhcnkuICBUaGVzZSBhcmUgdGhlICJzdGFuZGFyZCIgQVBJIHJvdXRpbmVzIHRoYXQgYXJlDQorICogdXNlZCBpbiB0aGUgbm9ybWFsIGZ1bGwtY29tcHJlc3Npb24gY2FzZS4gIFRoZXkgYXJlIG5vdCB1c2VkIGJ5IGENCisgKiB0cmFuc2NvZGluZy1vbmx5IGFwcGxpY2F0aW9uLiAgTm90ZSB0aGF0IGlmIGFuIGFwcGxpY2F0aW9uIGxpbmtzIGluDQorICoganBlZ19zdGFydF9jb21wcmVzcywgaXQgd2lsbCBlbmQgdXAgbGlua2luZyBpbiB0aGUgZW50aXJlIGNvbXByZXNzb3IuDQorICogV2UgdGh1cyBtdXN0IHNlcGFyYXRlIHRoaXMgZmlsZSBmcm9tIGpjYXBpbWluLmMgdG8gYXZvaWQgbGlua2luZyB0aGUNCisgKiB3aG9sZSBjb21wcmVzc2lvbiBsaWJyYXJ5IGludG8gYSB0cmFuc2NvZGVyLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKw0KKw0KKy8qDQorICogQ29tcHJlc3Npb24gaW5pdGlhbGl6YXRpb24uDQorICogQmVmb3JlIGNhbGxpbmcgdGhpcywgYWxsIHBhcmFtZXRlcnMgYW5kIGEgZGF0YSBkZXN0aW5hdGlvbiBtdXN0IGJlIHNldCB1cC4NCisgKg0KKyAqIFdlIHJlcXVpcmUgYSB3cml0ZV9hbGxfdGFibGVzIHBhcmFtZXRlciBhcyBhIGZhaWxzYWZlIGNoZWNrIHdoZW4gd3JpdGluZw0KKyAqIG11bHRpcGxlIGRhdGFzdHJlYW1zIGZyb20gdGhlIHNhbWUgY29tcHJlc3Npb24gb2JqZWN0LiAgU2luY2UgcHJpb3IgcnVucw0KKyAqIHdpbGwgaGF2ZSBsZWZ0IGFsbCB0aGUgdGFibGVzIG1hcmtlZCBzZW50X3RhYmxlPVRSVUUsIGEgc3Vic2VxdWVudCBydW4NCisgKiB3b3VsZCBlbWl0IGFuIGFiYnJldmlhdGVkIHN0cmVhbSAobm8gdGFibGVzKSBieSBkZWZhdWx0LiAgVGhpcyBtYXkgYmUgd2hhdA0KKyAqIGlzIHdhbnRlZCwgYnV0IGZvciBzYWZldHkncyBzYWtlIGl0IHNob3VsZCBub3QgYmUgdGhlIGRlZmF1bHQgYmVoYXZpb3I6DQorICogcHJvZ3JhbW1lcnMgc2hvdWxkIGhhdmUgdG8gbWFrZSBhIGRlbGliZXJhdGUgY2hvaWNlIHRvIGVtaXQgYWJicmV2aWF0ZWQNCisgKiBpbWFnZXMuICBUaGVyZWZvcmUgdGhlIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzIHNob3VsZCBlbmNvdXJhZ2UgcGVvcGxlDQorICogdG8gcGFzcyB3cml0ZV9hbGxfdGFibGVzPVRSVUU7IHRoZW4gaXQgd2lsbCB0YWtlIGFjdGl2ZSB0aG91Z2h0IHRvIGRvIHRoZQ0KKyAqIHdyb25nIHRoaW5nLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfc3RhcnRfY29tcHJlc3MgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBib29sZWFuIHdyaXRlX2FsbF90YWJsZXMpDQorew0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gQ1NUQVRFX1NUQVJUKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKw0KKyAgaWYgKHdyaXRlX2FsbF90YWJsZXMpDQorICAgIGpwZWdfc3VwcHJlc3NfdGFibGVzKGNpbmZvLCBGQUxTRSk7CS8qIG1hcmsgYWxsIHRhYmxlcyB0byBiZSB3cml0dGVuICovDQorDQorICAvKiAoUmUpaW5pdGlhbGl6ZSBlcnJvciBtZ3IgYW5kIGRlc3RpbmF0aW9uIG1vZHVsZXMgKi8NCisgICgqY2luZm8tPmVyci0+cmVzZXRfZXJyb3JfbWdyKSAoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKyAgKCpjaW5mby0+ZGVzdC0+aW5pdF9kZXN0aW5hdGlvbikgKGNpbmZvKTsNCisgIC8qIFBlcmZvcm0gbWFzdGVyIHNlbGVjdGlvbiBvZiBhY3RpdmUgbW9kdWxlcyAqLw0KKyAgamluaXRfY29tcHJlc3NfbWFzdGVyKGNpbmZvKTsNCisgIC8qIFNldCB1cCBmb3IgdGhlIGZpcnN0IHBhc3MgKi8NCisgICgqY2luZm8tPm1hc3Rlci0+cHJlcGFyZV9mb3JfcGFzcykgKGNpbmZvKTsNCisgIC8qIFJlYWR5IGZvciBhcHBsaWNhdGlvbiB0byBkcml2ZSBmaXJzdCBwYXNzIHRocm91Z2gganBlZ193cml0ZV9zY2FubGluZXMNCisgICAqIG9yIGpwZWdfd3JpdGVfcmF3X2RhdGEuDQorICAgKi8NCisgIGNpbmZvLT5uZXh0X3NjYW5saW5lID0gMDsNCisgIGNpbmZvLT5nbG9iYWxfc3RhdGUgPSAoY2luZm8tPnJhd19kYXRhX2luID8gQ1NUQVRFX1JBV19PSyA6IENTVEFURV9TQ0FOTklORyk7DQorfQ0KKw0KKw0KKy8qDQorICogV3JpdGUgc29tZSBzY2FubGluZXMgb2YgZGF0YSB0byB0aGUgSlBFRyBjb21wcmVzc29yLg0KKyAqDQorICogVGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHRoZSBudW1iZXIgb2YgbGluZXMgYWN0dWFsbHkgd3JpdHRlbi4NCisgKiBUaGlzIHNob3VsZCBiZSBsZXNzIHRoYW4gdGhlIHN1cHBsaWVkIG51bV9saW5lcyBvbmx5IGluIGNhc2UgdGhhdA0KKyAqIHRoZSBkYXRhIGRlc3RpbmF0aW9uIG1vZHVsZSBoYXMgcmVxdWVzdGVkIHN1c3BlbnNpb24gb2YgdGhlIGNvbXByZXNzb3IsDQorICogb3IgaWYgbW9yZSB0aGFuIGltYWdlX2hlaWdodCBzY2FubGluZXMgYXJlIHBhc3NlZCBpbi4NCisgKg0KKyAqIE5vdGU6IHdlIHdhcm4gYWJvdXQgZXhjZXNzIGNhbGxzIHRvIGpwZWdfd3JpdGVfc2NhbmxpbmVzKCkgc2luY2UNCisgKiB0aGlzIGxpa2VseSBzaWduYWxzIGFuIGFwcGxpY2F0aW9uIHByb2dyYW1tZXIgZXJyb3IuICBIb3dldmVyLA0KKyAqIGV4Y2VzcyBzY2FubGluZXMgcGFzc2VkIGluIHRoZSBsYXN0IHZhbGlkIGNhbGwgYXJlICpzaWxlbnRseSogaWdub3JlZCwNCisgKiBzbyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBuZWVkIG5vdCBhZGp1c3QgbnVtX2xpbmVzIGZvciBlbmQtb2YtaW1hZ2UNCisgKiB3aGVuIHVzaW5nIGEgbXVsdGlwbGUtc2NhbmxpbmUgYnVmZmVyLg0KKyAqLw0KKw0KK0dMT0JBTChKRElNRU5TSU9OKQ0KK2pwZWdfd3JpdGVfc2NhbmxpbmVzIChqX2NvbXByZXNzX3B0ciBjaW5mbywgSlNBTVBBUlJBWSBzY2FubGluZXMsDQorCQkgICAgICBKRElNRU5TSU9OIG51bV9saW5lcykNCit7DQorICBKRElNRU5TSU9OIHJvd19jdHIsIHJvd3NfbGVmdDsNCisNCisgIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlICE9IENTVEFURV9TQ0FOTklORykNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NUQVRFLCBjaW5mby0+Z2xvYmFsX3N0YXRlKTsNCisgIGlmIChjaW5mby0+bmV4dF9zY2FubGluZSA+PSBjaW5mby0+aW1hZ2VfaGVpZ2h0KQ0KKyAgICBXQVJOTVMoY2luZm8sIEpXUk5fVE9PX01VQ0hfREFUQSk7DQorDQorICAvKiBDYWxsIHByb2dyZXNzIG1vbml0b3IgaG9vayBpZiBwcmVzZW50ICovDQorICBpZiAoY2luZm8tPnByb2dyZXNzICE9IE5VTEwpIHsNCisgICAgY2luZm8tPnByb2dyZXNzLT5wYXNzX2NvdW50ZXIgPSAobG9uZykgY2luZm8tPm5leHRfc2NhbmxpbmU7DQorICAgIGNpbmZvLT5wcm9ncmVzcy0+cGFzc19saW1pdCA9IChsb25nKSBjaW5mby0+aW1hZ2VfaGVpZ2h0Ow0KKyAgICAoKmNpbmZvLT5wcm9ncmVzcy0+cHJvZ3Jlc3NfbW9uaXRvcikgKChqX2NvbW1vbl9wdHIpIGNpbmZvKTsNCisgIH0NCisNCisgIC8qIEdpdmUgbWFzdGVyIGNvbnRyb2wgbW9kdWxlIGFub3RoZXIgY2hhbmNlIGlmIHRoaXMgaXMgZmlyc3QgY2FsbCB0bw0KKyAgICoganBlZ193cml0ZV9zY2FubGluZXMuICBUaGlzIGxldHMgb3V0cHV0IG9mIHRoZSBmcmFtZS9zY2FuIGhlYWRlcnMgYmUNCisgICAqIGRlbGF5ZWQgc28gdGhhdCBhcHBsaWNhdGlvbiBjYW4gd3JpdGUgQ09NLCBldGMsIG1hcmtlcnMgYmV0d2Vlbg0KKyAgICoganBlZ19zdGFydF9jb21wcmVzcyBhbmQganBlZ193cml0ZV9zY2FubGluZXMuDQorICAgKi8NCisgIGlmIChjaW5mby0+bWFzdGVyLT5jYWxsX3Bhc3Nfc3RhcnR1cCkNCisgICAgKCpjaW5mby0+bWFzdGVyLT5wYXNzX3N0YXJ0dXApIChjaW5mbyk7DQorDQorICAvKiBJZ25vcmUgYW55IGV4dHJhIHNjYW5saW5lcyBhdCBib3R0b20gb2YgaW1hZ2UuICovDQorICByb3dzX2xlZnQgPSBjaW5mby0+aW1hZ2VfaGVpZ2h0IC0gY2luZm8tPm5leHRfc2NhbmxpbmU7DQorICBpZiAobnVtX2xpbmVzID4gcm93c19sZWZ0KQ0KKyAgICBudW1fbGluZXMgPSByb3dzX2xlZnQ7DQorDQorICByb3dfY3RyID0gMDsNCisgICgqY2luZm8tPm1haW4tPnByb2Nlc3NfZGF0YSkgKGNpbmZvLCBzY2FubGluZXMsICZyb3dfY3RyLCBudW1fbGluZXMpOw0KKyAgY2luZm8tPm5leHRfc2NhbmxpbmUgKz0gcm93X2N0cjsNCisgIHJldHVybiByb3dfY3RyOw0KK30NCisNCisNCisvKg0KKyAqIEFsdGVybmF0ZSBlbnRyeSBwb2ludCB0byB3cml0ZSByYXcgZGF0YS4NCisgKiBQcm9jZXNzZXMgZXhhY3RseSBvbmUgaU1DVSByb3cgcGVyIGNhbGwsIHVubGVzcyBzdXNwZW5kZWQuDQorICovDQorDQorR0xPQkFMKEpESU1FTlNJT04pDQoranBlZ193cml0ZV9yYXdfZGF0YSAoal9jb21wcmVzc19wdHIgY2luZm8sIEpTQU1QSU1BR0UgZGF0YSwNCisJCSAgICAgSkRJTUVOU0lPTiBudW1fbGluZXMpDQorew0KKyAgSkRJTUVOU0lPTiBsaW5lc19wZXJfaU1DVV9yb3c7DQorDQorICBpZiAoY2luZm8tPmdsb2JhbF9zdGF0ZSAhPSBDU1RBVEVfUkFXX09LKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKyAgaWYgKGNpbmZvLT5uZXh0X3NjYW5saW5lID49IGNpbmZvLT5pbWFnZV9oZWlnaHQpIHsNCisgICAgV0FSTk1TKGNpbmZvLCBKV1JOX1RPT19NVUNIX0RBVEEpOw0KKyAgICByZXR1cm4gMDsNCisgIH0NCisNCisgIC8qIENhbGwgcHJvZ3Jlc3MgbW9uaXRvciBob29rIGlmIHByZXNlbnQgKi8NCisgIGlmIChjaW5mby0+cHJvZ3Jlc3MgIT0gTlVMTCkgew0KKyAgICBjaW5mby0+cHJvZ3Jlc3MtPnBhc3NfY291bnRlciA9IChsb25nKSBjaW5mby0+bmV4dF9zY2FubGluZTsNCisgICAgY2luZm8tPnByb2dyZXNzLT5wYXNzX2xpbWl0ID0gKGxvbmcpIGNpbmZvLT5pbWFnZV9oZWlnaHQ7DQorICAgICgqY2luZm8tPnByb2dyZXNzLT5wcm9ncmVzc19tb25pdG9yKSAoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKyAgfQ0KKw0KKyAgLyogR2l2ZSBtYXN0ZXIgY29udHJvbCBtb2R1bGUgYW5vdGhlciBjaGFuY2UgaWYgdGhpcyBpcyBmaXJzdCBjYWxsIHRvDQorICAgKiBqcGVnX3dyaXRlX3Jhd19kYXRhLiAgVGhpcyBsZXRzIG91dHB1dCBvZiB0aGUgZnJhbWUvc2NhbiBoZWFkZXJzIGJlDQorICAgKiBkZWxheWVkIHNvIHRoYXQgYXBwbGljYXRpb24gY2FuIHdyaXRlIENPTSwgZXRjLCBtYXJrZXJzIGJldHdlZW4NCisgICAqIGpwZWdfc3RhcnRfY29tcHJlc3MgYW5kIGpwZWdfd3JpdGVfcmF3X2RhdGEuDQorICAgKi8NCisgIGlmIChjaW5mby0+bWFzdGVyLT5jYWxsX3Bhc3Nfc3RhcnR1cCkNCisgICAgKCpjaW5mby0+bWFzdGVyLT5wYXNzX3N0YXJ0dXApIChjaW5mbyk7DQorDQorICAvKiBWZXJpZnkgdGhhdCBhdCBsZWFzdCBvbmUgaU1DVSByb3cgaGFzIGJlZW4gcGFzc2VkLiAqLw0KKyAgbGluZXNfcGVyX2lNQ1Vfcm93ID0gY2luZm8tPm1heF92X3NhbXBfZmFjdG9yICogRENUU0laRTsNCisgIGlmIChudW1fbGluZXMgPCBsaW5lc19wZXJfaU1DVV9yb3cpDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQlVGRkVSX1NJWkUpOw0KKw0KKyAgLyogRGlyZWN0bHkgY29tcHJlc3MgdGhlIHJvdy4gKi8NCisgIGlmICghICgqY2luZm8tPmNvZWYtPmNvbXByZXNzX2RhdGEpIChjaW5mbywgZGF0YSkpIHsNCisgICAgLyogSWYgY29tcHJlc3NvciBkaWQgbm90IGNvbnN1bWUgdGhlIHdob2xlIHJvdywgc3VzcGVuZCBwcm9jZXNzaW5nLiAqLw0KKyAgICByZXR1cm4gMDsNCisgIH0NCisNCisgIC8qIE9LLCB3ZSBwcm9jZXNzZWQgb25lIGlNQ1Ugcm93LiAqLw0KKyAgY2luZm8tPm5leHRfc2NhbmxpbmUgKz0gbGluZXNfcGVyX2lNQ1Vfcm93Ow0KKyAgcmV0dXJuIGxpbmVzX3Blcl9pTUNVX3JvdzsNCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNjb2VmY3QuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjY29lZmN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEyYTRhNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjY29lZmN0LmMKQEAgLTAsMCArMSw0NTIgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqY2NvZWZjdC5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGNvZWZmaWNpZW50IGJ1ZmZlciBjb250cm9sbGVyIGZvciBjb21wcmVzc2lvbi4NCisgKiBUaGlzIGNvbnRyb2xsZXIgaXMgdGhlIHRvcCBsZXZlbCBvZiB0aGUgSlBFRyBjb21wcmVzc29yIHByb3Blci4NCisgKiBUaGUgY29lZmZpY2llbnQgYnVmZmVyIGxpZXMgYmV0d2VlbiBmb3J3YXJkLURDVCBhbmQgZW50cm9weSBlbmNvZGluZyBzdGVwcy4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisNCisNCisvKiBXZSB1c2UgYSBmdWxsLWltYWdlIGNvZWZmaWNpZW50IGJ1ZmZlciB3aGVuIGRvaW5nIEh1ZmZtYW4gb3B0aW1pemF0aW9uLA0KKyAqIGFuZCBhbHNvIGZvciB3cml0aW5nIG11bHRpcGxlLXNjYW4gSlBFRyBmaWxlcy4gIEluIGFsbCBjYXNlcywgdGhlIERDVA0KKyAqIHN0ZXAgaXMgcnVuIGR1cmluZyB0aGUgZmlyc3QgcGFzcywgYW5kIHN1YnNlcXVlbnQgcGFzc2VzIG5lZWQgb25seSByZWFkDQorICogdGhlIGJ1ZmZlcmVkIGNvZWZmaWNpZW50cy4NCisgKi8NCisjaWZkZWYgRU5UUk9QWV9PUFRfU1VQUE9SVEVEDQorI2RlZmluZSBGVUxMX0NPRUZfQlVGRkVSX1NVUFBPUlRFRA0KKyNlbHNlDQorI2lmZGVmIENfTVVMVElTQ0FOX0ZJTEVTX1NVUFBPUlRFRA0KKyNkZWZpbmUgRlVMTF9DT0VGX0JVRkZFUl9TVVBQT1JURUQNCisjZW5kaWYNCisjZW5kaWYNCisNCisNCisvKiBQcml2YXRlIGJ1ZmZlciBjb250cm9sbGVyIG9iamVjdCAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIHN0cnVjdCBqcGVnX2NfY29lZl9jb250cm9sbGVyIHB1YjsgLyogcHVibGljIGZpZWxkcyAqLw0KKw0KKyAgSkRJTUVOU0lPTiBpTUNVX3Jvd19udW07CS8qIGlNQ1Ugcm93ICMgd2l0aGluIGltYWdlICovDQorICBKRElNRU5TSU9OIG1jdV9jdHI7CQkvKiBjb3VudHMgTUNVcyBwcm9jZXNzZWQgaW4gY3VycmVudCByb3cgKi8NCisgIGludCBNQ1VfdmVydF9vZmZzZXQ7CQkvKiBjb3VudHMgTUNVIHJvd3Mgd2l0aGluIGlNQ1Ugcm93ICovDQorICBpbnQgTUNVX3Jvd3NfcGVyX2lNQ1Vfcm93OwkvKiBudW1iZXIgb2Ygc3VjaCByb3dzIG5lZWRlZCAqLw0KKw0KKyAgLyogRm9yIHNpbmdsZS1wYXNzIGNvbXByZXNzaW9uLCBpdCdzIHN1ZmZpY2llbnQgdG8gYnVmZmVyIGp1c3Qgb25lIE1DVQ0KKyAgICogKGFsdGhvdWdoIHRoaXMgbWF5IHByb3ZlIGEgYml0IHNsb3cgaW4gcHJhY3RpY2UpLiAgV2UgYWxsb2NhdGUgYQ0KKyAgICogd29ya3NwYWNlIG9mIENfTUFYX0JMT0NLU19JTl9NQ1UgY29lZmZpY2llbnQgYmxvY2tzLCBhbmQgcmV1c2UgaXQgZm9yIGVhY2gNCisgICAqIE1DVSBjb25zdHJ1Y3RlZCBhbmQgc2VudC4gIChPbiA4MHg4NiwgdGhlIHdvcmtzcGFjZSBpcyBGQVIgZXZlbiB0aG91Z2gNCisgICAqIGl0J3Mgbm90IHJlYWxseSB2ZXJ5IGJpZzsgdGhpcyBpcyB0byBrZWVwIHRoZSBtb2R1bGUgaW50ZXJmYWNlcyB1bmNoYW5nZWQNCisgICAqIHdoZW4gYSBsYXJnZSBjb2VmZmljaWVudCBidWZmZXIgaXMgbmVjZXNzYXJ5LikNCisgICAqIEluIG11bHRpLXBhc3MgbW9kZXMsIHRoaXMgYXJyYXkgcG9pbnRzIHRvIHRoZSBjdXJyZW50IE1DVSdzIGJsb2Nrcw0KKyAgICogd2l0aGluIHRoZSB2aXJ0dWFsIGFycmF5cy4NCisgICAqLw0KKyAgSkJMT0NLUk9XIE1DVV9idWZmZXJbQ19NQVhfQkxPQ0tTX0lOX01DVV07DQorDQorICAvKiBJbiBtdWx0aS1wYXNzIG1vZGVzLCB3ZSBuZWVkIGEgdmlydHVhbCBibG9jayBhcnJheSBmb3IgZWFjaCBjb21wb25lbnQuICovDQorICBqdmlydF9iYXJyYXlfcHRyIHdob2xlX2ltYWdlW01BWF9DT01QT05FTlRTXTsNCit9IG15X2NvZWZfY29udHJvbGxlcjsNCisNCit0eXBlZGVmIG15X2NvZWZfY29udHJvbGxlciAqIG15X2NvZWZfcHRyOw0KKw0KKw0KKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovDQorTUVUSE9EREVGKGJvb2xlYW4pIGNvbXByZXNzX2RhdGENCisgICAgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywgSlNBTVBJTUFHRSBpbnB1dF9idWYpKTsNCisjaWZkZWYgRlVMTF9DT0VGX0JVRkZFUl9TVVBQT1JURUQNCitNRVRIT0RERUYoYm9vbGVhbikgY29tcHJlc3NfZmlyc3RfcGFzcw0KKyAgICBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKU0FNUElNQUdFIGlucHV0X2J1ZikpOw0KK01FVEhPRERFRihib29sZWFuKSBjb21wcmVzc19vdXRwdXQNCisgICAgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywgSlNBTVBJTUFHRSBpbnB1dF9idWYpKTsNCisjZW5kaWYNCisNCisNCitMT0NBTCh2b2lkKQ0KK3N0YXJ0X2lNQ1Vfcm93IChqX2NvbXByZXNzX3B0ciBjaW5mbykNCisvKiBSZXNldCB3aXRoaW4taU1DVS1yb3cgY291bnRlcnMgZm9yIGEgbmV3IHJvdyAqLw0KK3sNCisgIG15X2NvZWZfcHRyIGNvZWYgPSAobXlfY29lZl9wdHIpIGNpbmZvLT5jb2VmOw0KKw0KKyAgLyogSW4gYW4gaW50ZXJsZWF2ZWQgc2NhbiwgYW4gTUNVIHJvdyBpcyB0aGUgc2FtZSBhcyBhbiBpTUNVIHJvdy4NCisgICAqIEluIGEgbm9uaW50ZXJsZWF2ZWQgc2NhbiwgYW4gaU1DVSByb3cgaGFzIHZfc2FtcF9mYWN0b3IgTUNVIHJvd3MuDQorICAgKiBCdXQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgaW1hZ2UsIHByb2Nlc3Mgb25seSB3aGF0J3MgbGVmdC4NCisgICAqLw0KKyAgaWYgKGNpbmZvLT5jb21wc19pbl9zY2FuID4gMSkgew0KKyAgICBjb2VmLT5NQ1Vfcm93c19wZXJfaU1DVV9yb3cgPSAxOw0KKyAgfSBlbHNlIHsNCisgICAgaWYgKGNvZWYtPmlNQ1Vfcm93X251bSA8IChjaW5mby0+dG90YWxfaU1DVV9yb3dzLTEpKQ0KKyAgICAgIGNvZWYtPk1DVV9yb3dzX3Blcl9pTUNVX3JvdyA9IGNpbmZvLT5jdXJfY29tcF9pbmZvWzBdLT52X3NhbXBfZmFjdG9yOw0KKyAgICBlbHNlDQorICAgICAgY29lZi0+TUNVX3Jvd3NfcGVyX2lNQ1Vfcm93ID0gY2luZm8tPmN1cl9jb21wX2luZm9bMF0tPmxhc3Rfcm93X2hlaWdodDsNCisgIH0NCisNCisgIGNvZWYtPm1jdV9jdHIgPSAwOw0KKyAgY29lZi0+TUNVX3ZlcnRfb2Zmc2V0ID0gMDsNCit9DQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIGZvciBhIHByb2Nlc3NpbmcgcGFzcy4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitzdGFydF9wYXNzX2NvZWYgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKX0JVRl9NT0RFIHBhc3NfbW9kZSkNCit7DQorICBteV9jb2VmX3B0ciBjb2VmID0gKG15X2NvZWZfcHRyKSBjaW5mby0+Y29lZjsNCisNCisgIGNvZWYtPmlNQ1Vfcm93X251bSA9IDA7DQorICBzdGFydF9pTUNVX3JvdyhjaW5mbyk7DQorDQorICBzd2l0Y2ggKHBhc3NfbW9kZSkgew0KKyAgY2FzZSBKQlVGX1BBU1NfVEhSVToNCisgICAgaWYgKGNvZWYtPndob2xlX2ltYWdlWzBdICE9IE5VTEwpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfQlVGRkVSX01PREUpOw0KKyAgICBjb2VmLT5wdWIuY29tcHJlc3NfZGF0YSA9IGNvbXByZXNzX2RhdGE7DQorICAgIGJyZWFrOw0KKyNpZmRlZiBGVUxMX0NPRUZfQlVGRkVSX1NVUFBPUlRFRA0KKyAgY2FzZSBKQlVGX1NBVkVfQU5EX1BBU1M6DQorICAgIGlmIChjb2VmLT53aG9sZV9pbWFnZVswXSA9PSBOVUxMKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0JVRkZFUl9NT0RFKTsNCisgICAgY29lZi0+cHViLmNvbXByZXNzX2RhdGEgPSBjb21wcmVzc19maXJzdF9wYXNzOw0KKyAgICBicmVhazsNCisgIGNhc2UgSkJVRl9DUkFOS19ERVNUOg0KKyAgICBpZiAoY29lZi0+d2hvbGVfaW1hZ2VbMF0gPT0gTlVMTCkNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9CVUZGRVJfTU9ERSk7DQorICAgIGNvZWYtPnB1Yi5jb21wcmVzc19kYXRhID0gY29tcHJlc3Nfb3V0cHV0Ow0KKyAgICBicmVhazsNCisjZW5kaWYNCisgIGRlZmF1bHQ6DQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0JVRkZFUl9NT0RFKTsNCisgICAgYnJlYWs7DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogUHJvY2VzcyBzb21lIGRhdGEgaW4gdGhlIHNpbmdsZS1wYXNzIGNhc2UuDQorICogV2UgcHJvY2VzcyB0aGUgZXF1aXZhbGVudCBvZiBvbmUgZnVsbHkgaW50ZXJsZWF2ZWQgTUNVIHJvdyAoImlNQ1UiIHJvdykNCisgKiBwZXIgY2FsbCwgaWUsIHZfc2FtcF9mYWN0b3IgYmxvY2sgcm93cyBmb3IgZWFjaCBjb21wb25lbnQgaW4gdGhlIGltYWdlLg0KKyAqIFJldHVybnMgVFJVRSBpZiB0aGUgaU1DVSByb3cgaXMgY29tcGxldGVkLCBGQUxTRSBpZiBzdXNwZW5kZWQuDQorICoNCisgKiBOQjogaW5wdXRfYnVmIGNvbnRhaW5zIGEgcGxhbmUgZm9yIGVhY2ggY29tcG9uZW50IGluIGltYWdlLA0KKyAqIHdoaWNoIHdlIGluZGV4IGFjY29yZGluZyB0byB0aGUgY29tcG9uZW50J3MgU09GIHBvc2l0aW9uLg0KKyAqLw0KKw0KK01FVEhPRERFRihib29sZWFuKQ0KK2NvbXByZXNzX2RhdGEgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKU0FNUElNQUdFIGlucHV0X2J1ZikNCit7DQorICBteV9jb2VmX3B0ciBjb2VmID0gKG15X2NvZWZfcHRyKSBjaW5mby0+Y29lZjsNCisgIEpESU1FTlNJT04gTUNVX2NvbF9udW07CS8qIGluZGV4IG9mIGN1cnJlbnQgTUNVIHdpdGhpbiByb3cgKi8NCisgIEpESU1FTlNJT04gbGFzdF9NQ1VfY29sID0gY2luZm8tPk1DVXNfcGVyX3JvdyAtIDE7DQorICBKRElNRU5TSU9OIGxhc3RfaU1DVV9yb3cgPSBjaW5mby0+dG90YWxfaU1DVV9yb3dzIC0gMTsNCisgIGludCBibGtuLCBiaSwgY2ksIHlpbmRleCwgeW9mZnNldCwgYmxvY2tjbnQ7DQorICBKRElNRU5TSU9OIHlwb3MsIHhwb3M7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyOw0KKw0KKyAgLyogTG9vcCB0byB3cml0ZSBhcyBtdWNoIGFzIG9uZSB3aG9sZSBpTUNVIHJvdyAqLw0KKyAgZm9yICh5b2Zmc2V0ID0gY29lZi0+TUNVX3ZlcnRfb2Zmc2V0OyB5b2Zmc2V0IDwgY29lZi0+TUNVX3Jvd3NfcGVyX2lNQ1Vfcm93Ow0KKyAgICAgICB5b2Zmc2V0KyspIHsNCisgICAgZm9yIChNQ1VfY29sX251bSA9IGNvZWYtPm1jdV9jdHI7IE1DVV9jb2xfbnVtIDw9IGxhc3RfTUNVX2NvbDsNCisJIE1DVV9jb2xfbnVtKyspIHsNCisgICAgICAvKiBEZXRlcm1pbmUgd2hlcmUgZGF0YSBjb21lcyBmcm9tIGluIGlucHV0X2J1ZiBhbmQgZG8gdGhlIERDVCB0aGluZy4NCisgICAgICAgKiBFYWNoIGNhbGwgb24gZm9yd2FyZF9EQ1QgcHJvY2Vzc2VzIGEgaG9yaXpvbnRhbCByb3cgb2YgRENUIGJsb2Nrcw0KKyAgICAgICAqIGFzIHdpZGUgYXMgYW4gTUNVOyB3ZSByZWx5IG9uIGhhdmluZyBhbGxvY2F0ZWQgdGhlIE1DVV9idWZmZXJbXSBibG9ja3MNCisgICAgICAgKiBzZXF1ZW50aWFsbHkuICBEdW1teSBibG9ja3MgYXQgdGhlIHJpZ2h0IG9yIGJvdHRvbSBlZGdlIGFyZSBmaWxsZWQgaW4NCisgICAgICAgKiBzcGVjaWFsbHkuICBUaGUgZGF0YSBpbiB0aGVtIGRvZXMgbm90IG1hdHRlciBmb3IgaW1hZ2UgcmVjb25zdHJ1Y3Rpb24sDQorICAgICAgICogc28gd2UgZmlsbCB0aGVtIHdpdGggdmFsdWVzIHRoYXQgd2lsbCBlbmNvZGUgdG8gdGhlIHNtYWxsZXN0IGFtb3VudCBvZg0KKyAgICAgICAqIGRhdGEsIHZpejogYWxsIHplcm9lcyBpbiB0aGUgQUMgZW50cmllcywgREMgZW50cmllcyBlcXVhbCB0byBwcmV2aW91cw0KKyAgICAgICAqIGJsb2NrJ3MgREMgdmFsdWUuICAoVGhhbmtzIHRvIFRob21hcyBLaW5zbWFuIGZvciB0aGlzIGlkZWEuKQ0KKyAgICAgICAqLw0KKyAgICAgIGJsa24gPSAwOw0KKyAgICAgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKSB7DQorCWNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorCWJsb2NrY250ID0gKE1DVV9jb2xfbnVtIDwgbGFzdF9NQ1VfY29sKSA/IGNvbXBwdHItPk1DVV93aWR0aA0KKwkJCQkJCTogY29tcHB0ci0+bGFzdF9jb2xfd2lkdGg7DQorCXhwb3MgPSBNQ1VfY29sX251bSAqIGNvbXBwdHItPk1DVV9zYW1wbGVfd2lkdGg7DQorCXlwb3MgPSB5b2Zmc2V0ICogRENUU0laRTsgLyogeXBvcyA9PSAoeW9mZnNldCt5aW5kZXgpICogRENUU0laRSAqLw0KKwlmb3IgKHlpbmRleCA9IDA7IHlpbmRleCA8IGNvbXBwdHItPk1DVV9oZWlnaHQ7IHlpbmRleCsrKSB7DQorCSAgaWYgKGNvZWYtPmlNQ1Vfcm93X251bSA8IGxhc3RfaU1DVV9yb3cgfHwNCisJICAgICAgeW9mZnNldCt5aW5kZXggPCBjb21wcHRyLT5sYXN0X3Jvd19oZWlnaHQpIHsNCisJICAgICgqY2luZm8tPmZkY3QtPmZvcndhcmRfRENUKSAoY2luZm8sIGNvbXBwdHIsDQorCQkJCQkgaW5wdXRfYnVmW2NvbXBwdHItPmNvbXBvbmVudF9pbmRleF0sDQorCQkJCQkgY29lZi0+TUNVX2J1ZmZlcltibGtuXSwNCisJCQkJCSB5cG9zLCB4cG9zLCAoSkRJTUVOU0lPTikgYmxvY2tjbnQpOw0KKwkgICAgaWYgKGJsb2NrY250IDwgY29tcHB0ci0+TUNVX3dpZHRoKSB7DQorCSAgICAgIC8qIENyZWF0ZSBzb21lIGR1bW15IGJsb2NrcyBhdCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgaW1hZ2UuICovDQorCSAgICAgIGp6ZXJvX2Zhcigodm9pZCBGQVIgKikgY29lZi0+TUNVX2J1ZmZlcltibGtuICsgYmxvY2tjbnRdLA0KKwkJCShjb21wcHRyLT5NQ1Vfd2lkdGggLSBibG9ja2NudCkgKiBTSVpFT0YoSkJMT0NLKSk7DQorCSAgICAgIGZvciAoYmkgPSBibG9ja2NudDsgYmkgPCBjb21wcHRyLT5NQ1Vfd2lkdGg7IGJpKyspIHsNCisJCWNvZWYtPk1DVV9idWZmZXJbYmxrbitiaV1bMF1bMF0gPSBjb2VmLT5NQ1VfYnVmZmVyW2Jsa24rYmktMV1bMF1bMF07DQorCSAgICAgIH0NCisJICAgIH0NCisJICB9IGVsc2Ugew0KKwkgICAgLyogQ3JlYXRlIGEgcm93IG9mIGR1bW15IGJsb2NrcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBpbWFnZS4gKi8NCisJICAgIGp6ZXJvX2Zhcigodm9pZCBGQVIgKikgY29lZi0+TUNVX2J1ZmZlcltibGtuXSwNCisJCSAgICAgIGNvbXBwdHItPk1DVV93aWR0aCAqIFNJWkVPRihKQkxPQ0spKTsNCisJICAgIGZvciAoYmkgPSAwOyBiaSA8IGNvbXBwdHItPk1DVV93aWR0aDsgYmkrKykgew0KKwkgICAgICBjb2VmLT5NQ1VfYnVmZmVyW2Jsa24rYmldWzBdWzBdID0gY29lZi0+TUNVX2J1ZmZlcltibGtuLTFdWzBdWzBdOw0KKwkgICAgfQ0KKwkgIH0NCisJICBibGtuICs9IGNvbXBwdHItPk1DVV93aWR0aDsNCisJICB5cG9zICs9IERDVFNJWkU7DQorCX0NCisgICAgICB9DQorICAgICAgLyogVHJ5IHRvIHdyaXRlIHRoZSBNQ1UuICBJbiBldmVudCBvZiBhIHN1c3BlbnNpb24gZmFpbHVyZSwgd2Ugd2lsbA0KKyAgICAgICAqIHJlLURDVCB0aGUgTUNVIG9uIHJlc3RhcnQgKGEgYml0IGluZWZmaWNpZW50LCBjb3VsZCBiZSBmaXhlZC4uLikNCisgICAgICAgKi8NCisgICAgICBpZiAoISAoKmNpbmZvLT5lbnRyb3B5LT5lbmNvZGVfbWN1KSAoY2luZm8sIGNvZWYtPk1DVV9idWZmZXIpKSB7DQorCS8qIFN1c3BlbnNpb24gZm9yY2VkOyB1cGRhdGUgc3RhdGUgY291bnRlcnMgYW5kIGV4aXQgKi8NCisJY29lZi0+TUNVX3ZlcnRfb2Zmc2V0ID0geW9mZnNldDsNCisJY29lZi0+bWN1X2N0ciA9IE1DVV9jb2xfbnVtOw0KKwlyZXR1cm4gRkFMU0U7DQorICAgICAgfQ0KKyAgICB9DQorICAgIC8qIENvbXBsZXRlZCBhbiBNQ1Ugcm93LCBidXQgcGVyaGFwcyBub3QgYW4gaU1DVSByb3cgKi8NCisgICAgY29lZi0+bWN1X2N0ciA9IDA7DQorICB9DQorICAvKiBDb21wbGV0ZWQgdGhlIGlNQ1Ugcm93LCBhZHZhbmNlIGNvdW50ZXJzIGZvciBuZXh0IG9uZSAqLw0KKyAgY29lZi0+aU1DVV9yb3dfbnVtKys7DQorICBzdGFydF9pTUNVX3JvdyhjaW5mbyk7DQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorI2lmZGVmIEZVTExfQ09FRl9CVUZGRVJfU1VQUE9SVEVEDQorDQorLyoNCisgKiBQcm9jZXNzIHNvbWUgZGF0YSBpbiB0aGUgZmlyc3QgcGFzcyBvZiBhIG11bHRpLXBhc3MgY2FzZS4NCisgKiBXZSBwcm9jZXNzIHRoZSBlcXVpdmFsZW50IG9mIG9uZSBmdWxseSBpbnRlcmxlYXZlZCBNQ1Ugcm93ICgiaU1DVSIgcm93KQ0KKyAqIHBlciBjYWxsLCBpZSwgdl9zYW1wX2ZhY3RvciBibG9jayByb3dzIGZvciBlYWNoIGNvbXBvbmVudCBpbiB0aGUgaW1hZ2UuDQorICogVGhpcyBhbW91bnQgb2YgZGF0YSBpcyByZWFkIGZyb20gdGhlIHNvdXJjZSBidWZmZXIsIERDVCdkIGFuZCBxdWFudGl6ZWQsDQorICogYW5kIHNhdmVkIGludG8gdGhlIHZpcnR1YWwgYXJyYXlzLiAgV2UgYWxzbyBnZW5lcmF0ZSBzdWl0YWJsZSBkdW1teSBibG9ja3MNCisgKiBhcyBuZWVkZWQgYXQgdGhlIHJpZ2h0IGFuZCBsb3dlciBlZGdlcy4gIChUaGUgZHVtbXkgYmxvY2tzIGFyZSBjb25zdHJ1Y3RlZA0KKyAqIGluIHRoZSB2aXJ0dWFsIGFycmF5cywgd2hpY2ggaGF2ZSBiZWVuIHBhZGRlZCBhcHByb3ByaWF0ZWx5LikgIFRoaXMgbWFrZXMNCisgKiBpdCBwb3NzaWJsZSBmb3Igc3Vic2VxdWVudCBwYXNzZXMgbm90IHRvIHdvcnJ5IGFib3V0IHJlYWwgdnMuIGR1bW15IGJsb2Nrcy4NCisgKg0KKyAqIFdlIG11c3QgYWxzbyBlbWl0IHRoZSBkYXRhIHRvIHRoZSBlbnRyb3B5IGVuY29kZXIuICBUaGlzIGlzIGNvbnZlbmllbnRseQ0KKyAqIGRvbmUgYnkgY2FsbGluZyBjb21wcmVzc19vdXRwdXQoKSBhZnRlciB3ZSd2ZSBsb2FkZWQgdGhlIGN1cnJlbnQgc3RyaXANCisgKiBvZiB0aGUgdmlydHVhbCBhcnJheXMuDQorICoNCisgKiBOQjogaW5wdXRfYnVmIGNvbnRhaW5zIGEgcGxhbmUgZm9yIGVhY2ggY29tcG9uZW50IGluIGltYWdlLiAgQWxsDQorICogY29tcG9uZW50cyBhcmUgRENUJ2QgYW5kIGxvYWRlZCBpbnRvIHRoZSB2aXJ0dWFsIGFycmF5cyBpbiB0aGlzIHBhc3MuDQorICogSG93ZXZlciwgaXQgbWF5IGJlIHRoYXQgb25seSBhIHN1YnNldCBvZiB0aGUgY29tcG9uZW50cyBhcmUgZW1pdHRlZCB0bw0KKyAqIHRoZSBlbnRyb3B5IGVuY29kZXIgZHVyaW5nIHRoaXMgZmlyc3QgcGFzczsgYmUgY2FyZWZ1bCBhYm91dCBsb29raW5nDQorICogYXQgdGhlIHNjYW4tZGVwZW5kZW50IHZhcmlhYmxlcyAoTUNVIGRpbWVuc2lvbnMsIGV0YykuDQorICovDQorDQorTUVUSE9EREVGKGJvb2xlYW4pDQorY29tcHJlc3NfZmlyc3RfcGFzcyAoal9jb21wcmVzc19wdHIgY2luZm8sIEpTQU1QSU1BR0UgaW5wdXRfYnVmKQ0KK3sNCisgIG15X2NvZWZfcHRyIGNvZWYgPSAobXlfY29lZl9wdHIpIGNpbmZvLT5jb2VmOw0KKyAgSkRJTUVOU0lPTiBsYXN0X2lNQ1Vfcm93ID0gY2luZm8tPnRvdGFsX2lNQ1Vfcm93cyAtIDE7DQorICBKRElNRU5TSU9OIGJsb2Nrc19hY3Jvc3MsIE1DVXNfYWNyb3NzLCBNQ1VpbmRleDsNCisgIGludCBiaSwgY2ksIGhfc2FtcF9mYWN0b3IsIGJsb2NrX3JvdywgYmxvY2tfcm93cywgbmR1bW15Ow0KKyAgSkNPRUYgbGFzdERDOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIEpCTE9DS0FSUkFZIGJ1ZmZlcjsNCisgIEpCTE9DS1JPVyB0aGlzYmxvY2tyb3csIGxhc3RibG9ja3JvdzsNCisNCisgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorICAgICAgIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICAvKiBBbGlnbiB0aGUgdmlydHVhbCBidWZmZXIgZm9yIHRoaXMgY29tcG9uZW50LiAqLw0KKyAgICBidWZmZXIgPSAoKmNpbmZvLT5tZW0tPmFjY2Vzc192aXJ0X2JhcnJheSkNCisgICAgICAoKGpfY29tbW9uX3B0cikgY2luZm8sIGNvZWYtPndob2xlX2ltYWdlW2NpXSwNCisgICAgICAgY29lZi0+aU1DVV9yb3dfbnVtICogY29tcHB0ci0+dl9zYW1wX2ZhY3RvciwNCisgICAgICAgKEpESU1FTlNJT04pIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IsIFRSVUUpOw0KKyAgICAvKiBDb3VudCBub24tZHVtbXkgRENUIGJsb2NrIHJvd3MgaW4gdGhpcyBpTUNVIHJvdy4gKi8NCisgICAgaWYgKGNvZWYtPmlNQ1Vfcm93X251bSA8IGxhc3RfaU1DVV9yb3cpDQorICAgICAgYmxvY2tfcm93cyA9IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7DQorICAgIGVsc2Ugew0KKyAgICAgIC8qIE5COiBjYW4ndCB1c2UgbGFzdF9yb3dfaGVpZ2h0IGhlcmUsIHNpbmNlIG1heSBub3QgYmUgc2V0ISAqLw0KKyAgICAgIGJsb2NrX3Jvd3MgPSAoaW50KSAoY29tcHB0ci0+aGVpZ2h0X2luX2Jsb2NrcyAlIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IpOw0KKyAgICAgIGlmIChibG9ja19yb3dzID09IDApIGJsb2NrX3Jvd3MgPSBjb21wcHRyLT52X3NhbXBfZmFjdG9yOw0KKyAgICB9DQorICAgIGJsb2Nrc19hY3Jvc3MgPSBjb21wcHRyLT53aWR0aF9pbl9ibG9ja3M7DQorICAgIGhfc2FtcF9mYWN0b3IgPSBjb21wcHRyLT5oX3NhbXBfZmFjdG9yOw0KKyAgICAvKiBDb3VudCBudW1iZXIgb2YgZHVtbXkgYmxvY2tzIHRvIGJlIGFkZGVkIGF0IHRoZSByaWdodCBtYXJnaW4uICovDQorICAgIG5kdW1teSA9IChpbnQpIChibG9ja3NfYWNyb3NzICUgaF9zYW1wX2ZhY3Rvcik7DQorICAgIGlmIChuZHVtbXkgPiAwKQ0KKyAgICAgIG5kdW1teSA9IGhfc2FtcF9mYWN0b3IgLSBuZHVtbXk7DQorICAgIC8qIFBlcmZvcm0gRENUIGZvciBhbGwgbm9uLWR1bW15IGJsb2NrcyBpbiB0aGlzIGlNQ1Ugcm93LiAgRWFjaCBjYWxsDQorICAgICAqIG9uIGZvcndhcmRfRENUIHByb2Nlc3NlcyBhIGNvbXBsZXRlIGhvcml6b250YWwgcm93IG9mIERDVCBibG9ja3MuDQorICAgICAqLw0KKyAgICBmb3IgKGJsb2NrX3JvdyA9IDA7IGJsb2NrX3JvdyA8IGJsb2NrX3Jvd3M7IGJsb2NrX3JvdysrKSB7DQorICAgICAgdGhpc2Jsb2Nrcm93ID0gYnVmZmVyW2Jsb2NrX3Jvd107DQorICAgICAgKCpjaW5mby0+ZmRjdC0+Zm9yd2FyZF9EQ1QpIChjaW5mbywgY29tcHB0ciwNCisJCQkJICAgaW5wdXRfYnVmW2NpXSwgdGhpc2Jsb2Nrcm93LA0KKwkJCQkgICAoSkRJTUVOU0lPTikgKGJsb2NrX3JvdyAqIERDVFNJWkUpLA0KKwkJCQkgICAoSkRJTUVOU0lPTikgMCwgYmxvY2tzX2Fjcm9zcyk7DQorICAgICAgaWYgKG5kdW1teSA+IDApIHsNCisJLyogQ3JlYXRlIGR1bW15IGJsb2NrcyBhdCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgaW1hZ2UuICovDQorCXRoaXNibG9ja3JvdyArPSBibG9ja3NfYWNyb3NzOyAvKiA9PiBmaXJzdCBkdW1teSBibG9jayAqLw0KKwlqemVyb19mYXIoKHZvaWQgRkFSICopIHRoaXNibG9ja3JvdywgbmR1bW15ICogU0laRU9GKEpCTE9DSykpOw0KKwlsYXN0REMgPSB0aGlzYmxvY2tyb3dbLTFdWzBdOw0KKwlmb3IgKGJpID0gMDsgYmkgPCBuZHVtbXk7IGJpKyspIHsNCisJICB0aGlzYmxvY2tyb3dbYmldWzBdID0gbGFzdERDOw0KKwl9DQorICAgICAgfQ0KKyAgICB9DQorICAgIC8qIElmIGF0IGVuZCBvZiBpbWFnZSwgY3JlYXRlIGR1bW15IGJsb2NrIHJvd3MgYXMgbmVlZGVkLg0KKyAgICAgKiBUaGUgdHJpY2t5IHBhcnQgaGVyZSBpcyB0aGF0IHdpdGhpbiBlYWNoIE1DVSwgd2Ugd2FudCB0aGUgREMgdmFsdWVzDQorICAgICAqIG9mIHRoZSBkdW1teSBibG9ja3MgdG8gbWF0Y2ggdGhlIGxhc3QgcmVhbCBibG9jaydzIERDIHZhbHVlLg0KKyAgICAgKiBUaGlzIHNxdWVlemVzIGEgZmV3IG1vcmUgYnl0ZXMgb3V0IG9mIHRoZSByZXN1bHRpbmcgZmlsZS4uLg0KKyAgICAgKi8NCisgICAgaWYgKGNvZWYtPmlNQ1Vfcm93X251bSA9PSBsYXN0X2lNQ1Vfcm93KSB7DQorICAgICAgYmxvY2tzX2Fjcm9zcyArPSBuZHVtbXk7CS8qIGluY2x1ZGUgbG93ZXIgcmlnaHQgY29ybmVyICovDQorICAgICAgTUNVc19hY3Jvc3MgPSBibG9ja3NfYWNyb3NzIC8gaF9zYW1wX2ZhY3RvcjsNCisgICAgICBmb3IgKGJsb2NrX3JvdyA9IGJsb2NrX3Jvd3M7IGJsb2NrX3JvdyA8IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7DQorCSAgIGJsb2NrX3JvdysrKSB7DQorCXRoaXNibG9ja3JvdyA9IGJ1ZmZlcltibG9ja19yb3ddOw0KKwlsYXN0YmxvY2tyb3cgPSBidWZmZXJbYmxvY2tfcm93LTFdOw0KKwlqemVyb19mYXIoKHZvaWQgRkFSICopIHRoaXNibG9ja3JvdywNCisJCSAgKHNpemVfdCkgKGJsb2Nrc19hY3Jvc3MgKiBTSVpFT0YoSkJMT0NLKSkpOw0KKwlmb3IgKE1DVWluZGV4ID0gMDsgTUNVaW5kZXggPCBNQ1VzX2Fjcm9zczsgTUNVaW5kZXgrKykgew0KKwkgIGxhc3REQyA9IGxhc3RibG9ja3Jvd1toX3NhbXBfZmFjdG9yLTFdWzBdOw0KKwkgIGZvciAoYmkgPSAwOyBiaSA8IGhfc2FtcF9mYWN0b3I7IGJpKyspIHsNCisJICAgIHRoaXNibG9ja3Jvd1tiaV1bMF0gPSBsYXN0REM7DQorCSAgfQ0KKwkgIHRoaXNibG9ja3JvdyArPSBoX3NhbXBfZmFjdG9yOyAvKiBhZHZhbmNlIHRvIG5leHQgTUNVIGluIHJvdyAqLw0KKwkgIGxhc3RibG9ja3JvdyArPSBoX3NhbXBfZmFjdG9yOw0KKwl9DQorICAgICAgfQ0KKyAgICB9DQorICB9DQorICAvKiBOQjogY29tcHJlc3Nfb3V0cHV0IHdpbGwgaW5jcmVtZW50IGlNQ1Vfcm93X251bSBpZiBzdWNjZXNzZnVsLg0KKyAgICogQSBzdXNwZW5zaW9uIHJldHVybiB3aWxsIHJlc3VsdCBpbiByZWRvaW5nIGFsbCB0aGUgd29yayBhYm92ZSBuZXh0IHRpbWUuDQorICAgKi8NCisNCisgIC8qIEVtaXQgZGF0YSB0byB0aGUgZW50cm9weSBlbmNvZGVyLCBzaGFyaW5nIGNvZGUgd2l0aCBzdWJzZXF1ZW50IHBhc3NlcyAqLw0KKyAgcmV0dXJuIGNvbXByZXNzX291dHB1dChjaW5mbywgaW5wdXRfYnVmKTsNCit9DQorDQorDQorLyoNCisgKiBQcm9jZXNzIHNvbWUgZGF0YSBpbiBzdWJzZXF1ZW50IHBhc3NlcyBvZiBhIG11bHRpLXBhc3MgY2FzZS4NCisgKiBXZSBwcm9jZXNzIHRoZSBlcXVpdmFsZW50IG9mIG9uZSBmdWxseSBpbnRlcmxlYXZlZCBNQ1Ugcm93ICgiaU1DVSIgcm93KQ0KKyAqIHBlciBjYWxsLCBpZSwgdl9zYW1wX2ZhY3RvciBibG9jayByb3dzIGZvciBlYWNoIGNvbXBvbmVudCBpbiB0aGUgc2Nhbi4NCisgKiBUaGUgZGF0YSBpcyBvYnRhaW5lZCBmcm9tIHRoZSB2aXJ0dWFsIGFycmF5cyBhbmQgZmVkIHRvIHRoZSBlbnRyb3B5IGNvZGVyLg0KKyAqIFJldHVybnMgVFJVRSBpZiB0aGUgaU1DVSByb3cgaXMgY29tcGxldGVkLCBGQUxTRSBpZiBzdXNwZW5kZWQuDQorICoNCisgKiBOQjogaW5wdXRfYnVmIGlzIGlnbm9yZWQ7IGl0IGlzIGxpa2VseSB0byBiZSBhIE5VTEwgcG9pbnRlci4NCisgKi8NCisNCitNRVRIT0RERUYoYm9vbGVhbikNCitjb21wcmVzc19vdXRwdXQgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKU0FNUElNQUdFIGlucHV0X2J1ZikNCit7DQorICBteV9jb2VmX3B0ciBjb2VmID0gKG15X2NvZWZfcHRyKSBjaW5mby0+Y29lZjsNCisgIEpESU1FTlNJT04gTUNVX2NvbF9udW07CS8qIGluZGV4IG9mIGN1cnJlbnQgTUNVIHdpdGhpbiByb3cgKi8NCisgIGludCBibGtuLCBjaSwgeGluZGV4LCB5aW5kZXgsIHlvZmZzZXQ7DQorICBKRElNRU5TSU9OIHN0YXJ0X2NvbDsNCisgIEpCTE9DS0FSUkFZIGJ1ZmZlcltNQVhfQ09NUFNfSU5fU0NBTl07DQorICBKQkxPQ0tST1cgYnVmZmVyX3B0cjsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorDQorICAvKiBBbGlnbiB0aGUgdmlydHVhbCBidWZmZXJzIGZvciB0aGUgY29tcG9uZW50cyB1c2VkIGluIHRoaXMgc2Nhbi4NCisgICAqIE5COiBkdXJpbmcgZmlyc3QgcGFzcywgdGhpcyBpcyBzYWZlIG9ubHkgYmVjYXVzZSB0aGUgYnVmZmVycyB3aWxsDQorICAgKiBhbHJlYWR5IGJlIGFsaWduZWQgcHJvcGVybHksIHNvIGptZW1tZ3IuYyB3b24ndCBuZWVkIHRvIGRvIGFueSBJL08uDQorICAgKi8NCisgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKSB7DQorICAgIGNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorICAgIGJ1ZmZlcltjaV0gPSAoKmNpbmZvLT5tZW0tPmFjY2Vzc192aXJ0X2JhcnJheSkNCisgICAgICAoKGpfY29tbW9uX3B0cikgY2luZm8sIGNvZWYtPndob2xlX2ltYWdlW2NvbXBwdHItPmNvbXBvbmVudF9pbmRleF0sDQorICAgICAgIGNvZWYtPmlNQ1Vfcm93X251bSAqIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IsDQorICAgICAgIChKRElNRU5TSU9OKSBjb21wcHRyLT52X3NhbXBfZmFjdG9yLCBGQUxTRSk7DQorICB9DQorDQorICAvKiBMb29wIHRvIHByb2Nlc3Mgb25lIHdob2xlIGlNQ1Ugcm93ICovDQorICBmb3IgKHlvZmZzZXQgPSBjb2VmLT5NQ1VfdmVydF9vZmZzZXQ7IHlvZmZzZXQgPCBjb2VmLT5NQ1Vfcm93c19wZXJfaU1DVV9yb3c7DQorICAgICAgIHlvZmZzZXQrKykgew0KKyAgICBmb3IgKE1DVV9jb2xfbnVtID0gY29lZi0+bWN1X2N0cjsgTUNVX2NvbF9udW0gPCBjaW5mby0+TUNVc19wZXJfcm93Ow0KKwkgTUNVX2NvbF9udW0rKykgew0KKyAgICAgIC8qIENvbnN0cnVjdCBsaXN0IG9mIHBvaW50ZXJzIHRvIERDVCBibG9ja3MgYmVsb25naW5nIHRvIHRoaXMgTUNVICovDQorICAgICAgYmxrbiA9IDA7CQkJLyogaW5kZXggb2YgY3VycmVudCBEQ1QgYmxvY2sgd2l0aGluIE1DVSAqLw0KKyAgICAgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKSB7DQorCWNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorCXN0YXJ0X2NvbCA9IE1DVV9jb2xfbnVtICogY29tcHB0ci0+TUNVX3dpZHRoOw0KKwlmb3IgKHlpbmRleCA9IDA7IHlpbmRleCA8IGNvbXBwdHItPk1DVV9oZWlnaHQ7IHlpbmRleCsrKSB7DQorCSAgYnVmZmVyX3B0ciA9IGJ1ZmZlcltjaV1beWluZGV4K3lvZmZzZXRdICsgc3RhcnRfY29sOw0KKwkgIGZvciAoeGluZGV4ID0gMDsgeGluZGV4IDwgY29tcHB0ci0+TUNVX3dpZHRoOyB4aW5kZXgrKykgew0KKwkgICAgY29lZi0+TUNVX2J1ZmZlcltibGtuKytdID0gYnVmZmVyX3B0cisrOw0KKwkgIH0NCisJfQ0KKyAgICAgIH0NCisgICAgICAvKiBUcnkgdG8gd3JpdGUgdGhlIE1DVS4gKi8NCisgICAgICBpZiAoISAoKmNpbmZvLT5lbnRyb3B5LT5lbmNvZGVfbWN1KSAoY2luZm8sIGNvZWYtPk1DVV9idWZmZXIpKSB7DQorCS8qIFN1c3BlbnNpb24gZm9yY2VkOyB1cGRhdGUgc3RhdGUgY291bnRlcnMgYW5kIGV4aXQgKi8NCisJY29lZi0+TUNVX3ZlcnRfb2Zmc2V0ID0geW9mZnNldDsNCisJY29lZi0+bWN1X2N0ciA9IE1DVV9jb2xfbnVtOw0KKwlyZXR1cm4gRkFMU0U7DQorICAgICAgfQ0KKyAgICB9DQorICAgIC8qIENvbXBsZXRlZCBhbiBNQ1Ugcm93LCBidXQgcGVyaGFwcyBub3QgYW4gaU1DVSByb3cgKi8NCisgICAgY29lZi0+bWN1X2N0ciA9IDA7DQorICB9DQorICAvKiBDb21wbGV0ZWQgdGhlIGlNQ1Ugcm93LCBhZHZhbmNlIGNvdW50ZXJzIGZvciBuZXh0IG9uZSAqLw0KKyAgY29lZi0+aU1DVV9yb3dfbnVtKys7DQorICBzdGFydF9pTUNVX3JvdyhjaW5mbyk7DQorICByZXR1cm4gVFJVRTsNCit9DQorDQorI2VuZGlmIC8qIEZVTExfQ09FRl9CVUZGRVJfU1VQUE9SVEVEICovDQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIGNvZWZmaWNpZW50IGJ1ZmZlciBjb250cm9sbGVyLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2ppbml0X2NfY29lZl9jb250cm9sbGVyIChqX2NvbXByZXNzX3B0ciBjaW5mbywgYm9vbGVhbiBuZWVkX2Z1bGxfYnVmZmVyKQ0KK3sNCisgIG15X2NvZWZfcHRyIGNvZWY7DQorDQorICBjb2VmID0gKG15X2NvZWZfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQlTSVpFT0YobXlfY29lZl9jb250cm9sbGVyKSk7DQorICBjaW5mby0+Y29lZiA9IChzdHJ1Y3QganBlZ19jX2NvZWZfY29udHJvbGxlciAqKSBjb2VmOw0KKyAgY29lZi0+cHViLnN0YXJ0X3Bhc3MgPSBzdGFydF9wYXNzX2NvZWY7DQorDQorICAvKiBDcmVhdGUgdGhlIGNvZWZmaWNpZW50IGJ1ZmZlci4gKi8NCisgIGlmIChuZWVkX2Z1bGxfYnVmZmVyKSB7DQorI2lmZGVmIEZVTExfQ09FRl9CVUZGRVJfU1VQUE9SVEVEDQorICAgIC8qIEFsbG9jYXRlIGEgZnVsbC1pbWFnZSB2aXJ0dWFsIGFycmF5IGZvciBlYWNoIGNvbXBvbmVudCwgKi8NCisgICAgLyogcGFkZGVkIHRvIGEgbXVsdGlwbGUgb2Ygc2FtcF9mYWN0b3IgRENUIGJsb2NrcyBpbiBlYWNoIGRpcmVjdGlvbi4gKi8NCisgICAgaW50IGNpOw0KKyAgICBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyOw0KKw0KKyAgICBmb3IgKGNpID0gMCwgY29tcHB0ciA9IGNpbmZvLT5jb21wX2luZm87IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOw0KKwkgY2krKywgY29tcHB0cisrKSB7DQorICAgICAgY29lZi0+d2hvbGVfaW1hZ2VbY2ldID0gKCpjaW5mby0+bWVtLT5yZXF1ZXN0X3ZpcnRfYmFycmF5KQ0KKwkoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLCBGQUxTRSwNCisJIChKRElNRU5TSU9OKSBqcm91bmRfdXAoKGxvbmcpIGNvbXBwdHItPndpZHRoX2luX2Jsb2NrcywNCisJCQkJKGxvbmcpIGNvbXBwdHItPmhfc2FtcF9mYWN0b3IpLA0KKwkgKEpESU1FTlNJT04pIGpyb3VuZF91cCgobG9uZykgY29tcHB0ci0+aGVpZ2h0X2luX2Jsb2NrcywNCisJCQkJKGxvbmcpIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IpLA0KKwkgKEpESU1FTlNJT04pIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IpOw0KKyAgICB9DQorI2Vsc2UNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfQlVGRkVSX01PREUpOw0KKyNlbmRpZg0KKyAgfSBlbHNlIHsNCisgICAgLyogV2Ugb25seSBuZWVkIGEgc2luZ2xlLU1DVSBidWZmZXIuICovDQorICAgIEpCTE9DS1JPVyBidWZmZXI7DQorICAgIGludCBpOw0KKw0KKyAgICBidWZmZXIgPSAoSkJMT0NLUk9XKQ0KKyAgICAgICgqY2luZm8tPm1lbS0+YWxsb2NfbGFyZ2UpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCSAgQ19NQVhfQkxPQ0tTX0lOX01DVSAqIFNJWkVPRihKQkxPQ0spKTsNCisgICAgZm9yIChpID0gMDsgaSA8IENfTUFYX0JMT0NLU19JTl9NQ1U7IGkrKykgew0KKyAgICAgIGNvZWYtPk1DVV9idWZmZXJbaV0gPSBidWZmZXIgKyBpOw0KKyAgICB9DQorICAgIGNvZWYtPndob2xlX2ltYWdlWzBdID0gTlVMTDsgLyogZmxhZyBmb3Igbm8gdmlydHVhbCBhcnJheXMgKi8NCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNjb2xvci5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNjb2xvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZjg2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2NvbG9yLmMKQEAgLTAsMCArMSw0NjIgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqY2NvbG9yLmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5MS0xOTk2LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyBpbnB1dCBjb2xvcnNwYWNlIGNvbnZlcnNpb24gcm91dGluZXMuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQorLyogUHJpdmF0ZSBzdWJvYmplY3QgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBzdHJ1Y3QganBlZ19jb2xvcl9jb252ZXJ0ZXIgcHViOyAvKiBwdWJsaWMgZmllbGRzICovDQorDQorICAvKiBQcml2YXRlIHN0YXRlIGZvciBSR0ItPllDQyBjb252ZXJzaW9uICovDQorICBJTlQzMiAqIHJnYl95Y2NfdGFiOwkJLyogPT4gdGFibGUgZm9yIFJHQiB0byBZQ2JDciBjb252ZXJzaW9uICovDQorfSBteV9jb2xvcl9jb252ZXJ0ZXI7DQorDQordHlwZWRlZiBteV9jb2xvcl9jb252ZXJ0ZXIgKiBteV9jY29udmVydF9wdHI7DQorDQorDQorLyoqKioqKioqKioqKioqKiogUkdCIC0+IFlDYkNyIGNvbnZlcnNpb246IG1vc3QgY29tbW9uIGNhc2UgKioqKioqKioqKioqKiovDQorDQorLyoNCisgKiBZQ2JDciBpcyBkZWZpbmVkIHBlciBDQ0lSIDYwMS0xLCBleGNlcHQgdGhhdCBDYiBhbmQgQ3IgYXJlDQorICogbm9ybWFsaXplZCB0byB0aGUgcmFuZ2UgMC4uTUFYSlNBTVBMRSByYXRoZXIgdGhhbiAtMC41IC4uIDAuNS4NCisgKiBUaGUgY29udmVyc2lvbiBlcXVhdGlvbnMgdG8gYmUgaW1wbGVtZW50ZWQgYXJlIHRoZXJlZm9yZQ0KKyAqCVkgID0gIDAuMjk5MDAgKiBSICsgMC41ODcwMCAqIEcgKyAwLjExNDAwICogQg0KKyAqCUNiID0gLTAuMTY4NzQgKiBSIC0gMC4zMzEyNiAqIEcgKyAwLjUwMDAwICogQiAgKyBDRU5URVJKU0FNUExFDQorICoJQ3IgPSAgMC41MDAwMCAqIFIgLSAwLjQxODY5ICogRyAtIDAuMDgxMzEgKiBCICArIENFTlRFUkpTQU1QTEUNCisgKiAoVGhlc2UgbnVtYmVycyBhcmUgZGVyaXZlZCBmcm9tIFRJRkYgNi4wIHNlY3Rpb24gMjEsIGRhdGVkIDMtSnVuZS05Mi4pDQorICogTm90ZTogb2xkZXIgdmVyc2lvbnMgb2YgdGhlIElKRyBjb2RlIHVzZWQgYSB6ZXJvIG9mZnNldCBvZiBNQVhKU0FNUExFLzIsDQorICogcmF0aGVyIHRoYW4gQ0VOVEVSSlNBTVBMRSwgZm9yIENiIGFuZCBDci4gIFRoaXMgZ2F2ZSBlcXVhbCBwb3NpdGl2ZSBhbmQNCisgKiBuZWdhdGl2ZSBzd2luZ3MgZm9yIENiL0NyLCBidXQgbWVhbnQgdGhhdCBncmF5c2NhbGUgdmFsdWVzIChDYj1Dcj0wKQ0KKyAqIHdlcmUgbm90IHJlcHJlc2VudGVkIGV4YWN0bHkuICBOb3cgd2Ugc2FjcmlmaWNlIGV4YWN0IHJlcHJlc2VudGF0aW9uIG9mDQorICogbWF4aW11bSByZWQgYW5kIG1heGltdW0gYmx1ZSBpbiBvcmRlciB0byBnZXQgZXhhY3QgZ3JheXNjYWxlcy4NCisgKg0KKyAqIFRvIGF2b2lkIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMsIHdlIHJlcHJlc2VudCB0aGUgZnJhY3Rpb25hbCBjb25zdGFudHMNCisgKiBhcyBpbnRlZ2VycyBzY2FsZWQgdXAgYnkgMl4xNiAoYWJvdXQgNCBkaWdpdHMgcHJlY2lzaW9uKTsgd2UgaGF2ZSB0byBkaXZpZGUNCisgKiB0aGUgcHJvZHVjdHMgYnkgMl4xNiwgd2l0aCBhcHByb3ByaWF0ZSByb3VuZGluZywgdG8gZ2V0IHRoZSBjb3JyZWN0IGFuc3dlci4NCisgKg0KKyAqIEZvciBldmVuIG1vcmUgc3BlZWQsIHdlIGF2b2lkIGRvaW5nIGFueSBtdWx0aXBsaWNhdGlvbnMgaW4gdGhlIGlubmVyIGxvb3ANCisgKiBieSBwcmVjYWxjdWxhdGluZyB0aGUgY29uc3RhbnRzIHRpbWVzIFIsRyxCIGZvciBhbGwgcG9zc2libGUgdmFsdWVzLg0KKyAqIEZvciA4LWJpdCBKU0FNUExFcyB0aGlzIGlzIHZlcnkgcmVhc29uYWJsZSAob25seSAyNTYgZW50cmllcyBwZXIgdGFibGUpOw0KKyAqIGZvciAxMi1iaXQgc2FtcGxlcyBpdCBpcyBzdGlsbCBhY2NlcHRhYmxlLiAgSXQncyBub3QgdmVyeSByZWFzb25hYmxlIGZvcg0KKyAqIDE2LWJpdCBzYW1wbGVzLCBidXQgaWYgeW91IHdhbnQgbG9zc2xlc3Mgc3RvcmFnZSB5b3Ugc2hvdWxkbid0IGJlIGNoYW5naW5nDQorICogY29sb3JzcGFjZSBhbnl3YXkuDQorICogVGhlIENFTlRFUkpTQU1QTEUgb2Zmc2V0cyBhbmQgdGhlIHJvdW5kaW5nIGZ1ZGdlLWZhY3RvciBvZiAwLjUgYXJlIGluY2x1ZGVkDQorICogaW4gdGhlIHRhYmxlcyB0byBzYXZlIGFkZGluZyB0aGVtIHNlcGFyYXRlbHkgaW4gdGhlIGlubmVyIGxvb3AuDQorICovDQorDQorI2RlZmluZSBTQ0FMRUJJVFMJMTYJLyogc3BlZWRpZXN0IHJpZ2h0LXNoaWZ0IG9uIHNvbWUgbWFjaGluZXMgKi8NCisjZGVmaW5lIENCQ1JfT0ZGU0VUCSgoSU5UMzIpIENFTlRFUkpTQU1QTEUgPDwgU0NBTEVCSVRTKQ0KKyNkZWZpbmUgT05FX0hBTEYJKChJTlQzMikgMSA8PCAoU0NBTEVCSVRTLTEpKQ0KKyNkZWZpbmUgRklYKHgpCQkoKElOVDMyKSAoKHgpICogKDFMPDxTQ0FMRUJJVFMpICsgMC41KSkNCisNCisvKiBXZSBhbGxvY2F0ZSBvbmUgYmlnIHRhYmxlIGFuZCBkaXZpZGUgaXQgdXAgaW50byBlaWdodCBwYXJ0cywgaW5zdGVhZCBvZg0KKyAqIGRvaW5nIGVpZ2h0IGFsbG9jX3NtYWxsIHJlcXVlc3RzLiAgVGhpcyBsZXRzIHVzIHVzZSBhIHNpbmdsZSB0YWJsZSBiYXNlDQorICogYWRkcmVzcywgd2hpY2ggY2FuIGJlIGhlbGQgaW4gYSByZWdpc3RlciBpbiB0aGUgaW5uZXIgbG9vcHMgb24gbWFueQ0KKyAqIG1hY2hpbmVzIChtb3JlIHRoYW4gY2FuIGhvbGQgYWxsIGVpZ2h0IGFkZHJlc3NlcywgYW55d2F5KS4NCisgKi8NCisNCisjZGVmaW5lIFJfWV9PRkYJCTAJCQkvKiBvZmZzZXQgdG8gUiA9PiBZIHNlY3Rpb24gKi8NCisjZGVmaW5lIEdfWV9PRkYJCSgxKihNQVhKU0FNUExFKzEpKQkvKiBvZmZzZXQgdG8gRyA9PiBZIHNlY3Rpb24gKi8NCisjZGVmaW5lIEJfWV9PRkYJCSgyKihNQVhKU0FNUExFKzEpKQkvKiBldGMuICovDQorI2RlZmluZSBSX0NCX09GRgkoMyooTUFYSlNBTVBMRSsxKSkNCisjZGVmaW5lIEdfQ0JfT0ZGCSg0KihNQVhKU0FNUExFKzEpKQ0KKyNkZWZpbmUgQl9DQl9PRkYJKDUqKE1BWEpTQU1QTEUrMSkpDQorI2RlZmluZSBSX0NSX09GRglCX0NCX09GRgkJLyogQj0+Q2IsIFI9PkNyIGFyZSB0aGUgc2FtZSAqLw0KKyNkZWZpbmUgR19DUl9PRkYJKDYqKE1BWEpTQU1QTEUrMSkpDQorI2RlZmluZSBCX0NSX09GRgkoNyooTUFYSlNBTVBMRSsxKSkNCisjZGVmaW5lIFRBQkxFX1NJWkUJKDgqKE1BWEpTQU1QTEUrMSkpDQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIGZvciBSR0ItPllDQyBjb2xvcnNwYWNlIGNvbnZlcnNpb24uDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorcmdiX3ljY19zdGFydCAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfY2NvbnZlcnRfcHRyIGNjb252ZXJ0ID0gKG15X2Njb252ZXJ0X3B0cikgY2luZm8tPmNjb252ZXJ0Ow0KKyAgSU5UMzIgKiByZ2JfeWNjX3RhYjsNCisgIElOVDMyIGk7DQorDQorICAvKiBBbGxvY2F0ZSBhbmQgZmlsbCBpbiB0aGUgY29udmVyc2lvbiB0YWJsZXMuICovDQorICBjY29udmVydC0+cmdiX3ljY190YWIgPSByZ2JfeWNjX3RhYiA9IChJTlQzMiAqKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQkoVEFCTEVfU0laRSAqIFNJWkVPRihJTlQzMikpKTsNCisNCisgIGZvciAoaSA9IDA7IGkgPD0gTUFYSlNBTVBMRTsgaSsrKSB7DQorICAgIHJnYl95Y2NfdGFiW2krUl9ZX09GRl0gPSBGSVgoMC4yOTkwMCkgKiBpOw0KKyAgICByZ2JfeWNjX3RhYltpK0dfWV9PRkZdID0gRklYKDAuNTg3MDApICogaTsNCisgICAgcmdiX3ljY190YWJbaStCX1lfT0ZGXSA9IEZJWCgwLjExNDAwKSAqIGkgICAgICsgT05FX0hBTEY7DQorICAgIHJnYl95Y2NfdGFiW2krUl9DQl9PRkZdID0gKC1GSVgoMC4xNjg3NCkpICogaTsNCisgICAgcmdiX3ljY190YWJbaStHX0NCX09GRl0gPSAoLUZJWCgwLjMzMTI2KSkgKiBpOw0KKyAgICAvKiBXZSB1c2UgYSByb3VuZGluZyBmdWRnZS1mYWN0b3Igb2YgMC41LWVwc2lsb24gZm9yIENiIGFuZCBDci4NCisgICAgICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG1heGltdW0gb3V0cHV0IHdpbGwgcm91bmQgdG8gTUFYSlNBTVBMRQ0KKyAgICAgKiBub3QgTUFYSlNBTVBMRSsxLCBhbmQgdGh1cyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcmFuZ2UtbGltaXQuDQorICAgICAqLw0KKyAgICByZ2JfeWNjX3RhYltpK0JfQ0JfT0ZGXSA9IEZJWCgwLjUwMDAwKSAqIGkgICAgKyBDQkNSX09GRlNFVCArIE9ORV9IQUxGLTE7DQorLyogIEI9PkNiIGFuZCBSPT5DciB0YWJsZXMgYXJlIHRoZSBzYW1lDQorICAgIHJnYl95Y2NfdGFiW2krUl9DUl9PRkZdID0gRklYKDAuNTAwMDApICogaSAgICArIENCQ1JfT0ZGU0VUICsgT05FX0hBTEYtMTsNCisqLw0KKyAgICByZ2JfeWNjX3RhYltpK0dfQ1JfT0ZGXSA9ICgtRklYKDAuNDE4NjkpKSAqIGk7DQorICAgIHJnYl95Y2NfdGFiW2krQl9DUl9PRkZdID0gKC1GSVgoMC4wODEzMSkpICogaTsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBDb252ZXJ0IHNvbWUgcm93cyBvZiBzYW1wbGVzIHRvIHRoZSBKUEVHIGNvbG9yc3BhY2UuDQorICoNCisgKiBOb3RlIHRoYXQgd2UgY2hhbmdlIGZyb20gdGhlIGFwcGxpY2F0aW9uJ3MgaW50ZXJsZWF2ZWQtcGl4ZWwgZm9ybWF0DQorICogdG8gb3VyIGludGVybmFsIG5vbmludGVybGVhdmVkLCBvbmUtcGxhbmUtcGVyLWNvbXBvbmVudCBmb3JtYXQuDQorICogVGhlIGlucHV0IGJ1ZmZlciBpcyB0aGVyZWZvcmUgdGhyZWUgdGltZXMgYXMgd2lkZSBhcyB0aGUgb3V0cHV0IGJ1ZmZlci4NCisgKg0KKyAqIEEgc3RhcnRpbmcgcm93IG9mZnNldCBpcyBwcm92aWRlZCBvbmx5IGZvciB0aGUgb3V0cHV0IGJ1ZmZlci4gIFRoZSBjYWxsZXINCisgKiBjYW4gZWFzaWx5IGFkanVzdCB0aGUgcGFzc2VkIGlucHV0X2J1ZiB2YWx1ZSB0byBhY2NvbW1vZGF0ZSBhbnkgcm93DQorICogb2Zmc2V0IHJlcXVpcmVkIG9uIHRoYXQgc2lkZS4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCityZ2JfeWNjX2NvbnZlcnQgKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJIEpTQU1QQVJSQVkgaW5wdXRfYnVmLCBKU0FNUElNQUdFIG91dHB1dF9idWYsDQorCQkgSkRJTUVOU0lPTiBvdXRwdXRfcm93LCBpbnQgbnVtX3Jvd3MpDQorew0KKyAgbXlfY2NvbnZlcnRfcHRyIGNjb252ZXJ0ID0gKG15X2Njb252ZXJ0X3B0cikgY2luZm8tPmNjb252ZXJ0Ow0KKyAgcmVnaXN0ZXIgaW50IHIsIGcsIGI7DQorICByZWdpc3RlciBJTlQzMiAqIGN0YWIgPSBjY29udmVydC0+cmdiX3ljY190YWI7DQorICByZWdpc3RlciBKU0FNUFJPVyBpbnB0cjsNCisgIHJlZ2lzdGVyIEpTQU1QUk9XIG91dHB0cjAsIG91dHB0cjEsIG91dHB0cjI7DQorICByZWdpc3RlciBKRElNRU5TSU9OIGNvbDsNCisgIEpESU1FTlNJT04gbnVtX2NvbHMgPSBjaW5mby0+aW1hZ2Vfd2lkdGg7DQorDQorICB3aGlsZSAoLS1udW1fcm93cyA+PSAwKSB7DQorICAgIGlucHRyID0gKmlucHV0X2J1ZisrOw0KKyAgICBvdXRwdHIwID0gb3V0cHV0X2J1ZlswXVtvdXRwdXRfcm93XTsNCisgICAgb3V0cHRyMSA9IG91dHB1dF9idWZbMV1bb3V0cHV0X3Jvd107DQorICAgIG91dHB0cjIgPSBvdXRwdXRfYnVmWzJdW291dHB1dF9yb3ddOw0KKyAgICBvdXRwdXRfcm93Kys7DQorICAgIGZvciAoY29sID0gMDsgY29sIDwgbnVtX2NvbHM7IGNvbCsrKSB7DQorICAgICAgciA9IEdFVEpTQU1QTEUoaW5wdHJbUkdCX1JFRF0pOw0KKyAgICAgIGcgPSBHRVRKU0FNUExFKGlucHRyW1JHQl9HUkVFTl0pOw0KKyAgICAgIGIgPSBHRVRKU0FNUExFKGlucHRyW1JHQl9CTFVFXSk7DQorICAgICAgaW5wdHIgKz0gUkdCX1BJWEVMU0laRTsNCisgICAgICAvKiBJZiB0aGUgaW5wdXRzIGFyZSAwLi5NQVhKU0FNUExFLCB0aGUgb3V0cHV0cyBvZiB0aGVzZSBlcXVhdGlvbnMNCisgICAgICAgKiBtdXN0IGJlIHRvbzsgd2UgZG8gbm90IG5lZWQgYW4gZXhwbGljaXQgcmFuZ2UtbGltaXRpbmcgb3BlcmF0aW9uLg0KKyAgICAgICAqIEhlbmNlIHRoZSB2YWx1ZSBiZWluZyBzaGlmdGVkIGlzIG5ldmVyIG5lZ2F0aXZlLCBhbmQgd2UgZG9uJ3QNCisgICAgICAgKiBuZWVkIHRoZSBnZW5lcmFsIFJJR0hUX1NISUZUIG1hY3JvLg0KKyAgICAgICAqLw0KKyAgICAgIC8qIFkgKi8NCisgICAgICBvdXRwdHIwW2NvbF0gPSAoSlNBTVBMRSkNCisJCSgoY3RhYltyK1JfWV9PRkZdICsgY3RhYltnK0dfWV9PRkZdICsgY3RhYltiK0JfWV9PRkZdKQ0KKwkJID4+IFNDQUxFQklUUyk7DQorICAgICAgLyogQ2IgKi8NCisgICAgICBvdXRwdHIxW2NvbF0gPSAoSlNBTVBMRSkNCisJCSgoY3RhYltyK1JfQ0JfT0ZGXSArIGN0YWJbZytHX0NCX09GRl0gKyBjdGFiW2IrQl9DQl9PRkZdKQ0KKwkJID4+IFNDQUxFQklUUyk7DQorICAgICAgLyogQ3IgKi8NCisgICAgICBvdXRwdHIyW2NvbF0gPSAoSlNBTVBMRSkNCisJCSgoY3RhYltyK1JfQ1JfT0ZGXSArIGN0YWJbZytHX0NSX09GRl0gKyBjdGFiW2IrQl9DUl9PRkZdKQ0KKwkJID4+IFNDQUxFQklUUyk7DQorICAgIH0NCisgIH0NCit9DQorDQorDQorLyoqKioqKioqKioqKioqKiogQ2FzZXMgb3RoZXIgdGhhbiBSR0IgLT4gWUNiQ3IgKioqKioqKioqKioqKiovDQorDQorDQorLyoNCisgKiBDb252ZXJ0IHNvbWUgcm93cyBvZiBzYW1wbGVzIHRvIHRoZSBKUEVHIGNvbG9yc3BhY2UuDQorICogVGhpcyB2ZXJzaW9uIGhhbmRsZXMgUkdCLT5ncmF5c2NhbGUgY29udmVyc2lvbiwgd2hpY2ggaXMgdGhlIHNhbWUNCisgKiBhcyB0aGUgUkdCLT5ZIHBvcnRpb24gb2YgUkdCLT5ZQ2JDci4NCisgKiBXZSBhc3N1bWUgcmdiX3ljY19zdGFydCBoYXMgYmVlbiBjYWxsZWQgKHdlIG9ubHkgdXNlIHRoZSBZIHRhYmxlcykuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorcmdiX2dyYXlfY29udmVydCAoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkgIEpTQU1QQVJSQVkgaW5wdXRfYnVmLCBKU0FNUElNQUdFIG91dHB1dF9idWYsDQorCQkgIEpESU1FTlNJT04gb3V0cHV0X3JvdywgaW50IG51bV9yb3dzKQ0KK3sNCisgIG15X2Njb252ZXJ0X3B0ciBjY29udmVydCA9IChteV9jY29udmVydF9wdHIpIGNpbmZvLT5jY29udmVydDsNCisgIHJlZ2lzdGVyIGludCByLCBnLCBiOw0KKyAgcmVnaXN0ZXIgSU5UMzIgKiBjdGFiID0gY2NvbnZlcnQtPnJnYl95Y2NfdGFiOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgaW5wdHI7DQorICByZWdpc3RlciBKU0FNUFJPVyBvdXRwdHI7DQorICByZWdpc3RlciBKRElNRU5TSU9OIGNvbDsNCisgIEpESU1FTlNJT04gbnVtX2NvbHMgPSBjaW5mby0+aW1hZ2Vfd2lkdGg7DQorDQorICB3aGlsZSAoLS1udW1fcm93cyA+PSAwKSB7DQorICAgIGlucHRyID0gKmlucHV0X2J1ZisrOw0KKyAgICBvdXRwdHIgPSBvdXRwdXRfYnVmWzBdW291dHB1dF9yb3ddOw0KKyAgICBvdXRwdXRfcm93Kys7DQorICAgIGZvciAoY29sID0gMDsgY29sIDwgbnVtX2NvbHM7IGNvbCsrKSB7DQorICAgICAgciA9IEdFVEpTQU1QTEUoaW5wdHJbUkdCX1JFRF0pOw0KKyAgICAgIGcgPSBHRVRKU0FNUExFKGlucHRyW1JHQl9HUkVFTl0pOw0KKyAgICAgIGIgPSBHRVRKU0FNUExFKGlucHRyW1JHQl9CTFVFXSk7DQorICAgICAgaW5wdHIgKz0gUkdCX1BJWEVMU0laRTsNCisgICAgICAvKiBZICovDQorICAgICAgb3V0cHRyW2NvbF0gPSAoSlNBTVBMRSkNCisJCSgoY3RhYltyK1JfWV9PRkZdICsgY3RhYltnK0dfWV9PRkZdICsgY3RhYltiK0JfWV9PRkZdKQ0KKwkJID4+IFNDQUxFQklUUyk7DQorICAgIH0NCisgIH0NCit9DQorDQorDQorLyoNCisgKiBDb252ZXJ0IHNvbWUgcm93cyBvZiBzYW1wbGVzIHRvIHRoZSBKUEVHIGNvbG9yc3BhY2UuDQorICogVGhpcyB2ZXJzaW9uIGhhbmRsZXMgQWRvYmUtc3R5bGUgQ01ZSy0+WUNDSyBjb252ZXJzaW9uLA0KKyAqIHdoZXJlIHdlIGNvbnZlcnQgUj0xLUMsIEc9MS1NLCBhbmQgQj0xLVkgdG8gWUNiQ3IgdXNpbmcgdGhlIHNhbWUNCisgKiBjb252ZXJzaW9uIGFzIGFib3ZlLCB3aGlsZSBwYXNzaW5nIEsgKGJsYWNrKSB1bmNoYW5nZWQuDQorICogV2UgYXNzdW1lIHJnYl95Y2Nfc3RhcnQgaGFzIGJlZW4gY2FsbGVkLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2NteWtfeWNja19jb252ZXJ0IChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCSAgIEpTQU1QQVJSQVkgaW5wdXRfYnVmLCBKU0FNUElNQUdFIG91dHB1dF9idWYsDQorCQkgICBKRElNRU5TSU9OIG91dHB1dF9yb3csIGludCBudW1fcm93cykNCit7DQorICBteV9jY29udmVydF9wdHIgY2NvbnZlcnQgPSAobXlfY2NvbnZlcnRfcHRyKSBjaW5mby0+Y2NvbnZlcnQ7DQorICByZWdpc3RlciBpbnQgciwgZywgYjsNCisgIHJlZ2lzdGVyIElOVDMyICogY3RhYiA9IGNjb252ZXJ0LT5yZ2JfeWNjX3RhYjsNCisgIHJlZ2lzdGVyIEpTQU1QUk9XIGlucHRyOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgb3V0cHRyMCwgb3V0cHRyMSwgb3V0cHRyMiwgb3V0cHRyMzsNCisgIHJlZ2lzdGVyIEpESU1FTlNJT04gY29sOw0KKyAgSkRJTUVOU0lPTiBudW1fY29scyA9IGNpbmZvLT5pbWFnZV93aWR0aDsNCisNCisgIHdoaWxlICgtLW51bV9yb3dzID49IDApIHsNCisgICAgaW5wdHIgPSAqaW5wdXRfYnVmKys7DQorICAgIG91dHB0cjAgPSBvdXRwdXRfYnVmWzBdW291dHB1dF9yb3ddOw0KKyAgICBvdXRwdHIxID0gb3V0cHV0X2J1ZlsxXVtvdXRwdXRfcm93XTsNCisgICAgb3V0cHRyMiA9IG91dHB1dF9idWZbMl1bb3V0cHV0X3Jvd107DQorICAgIG91dHB0cjMgPSBvdXRwdXRfYnVmWzNdW291dHB1dF9yb3ddOw0KKyAgICBvdXRwdXRfcm93Kys7DQorICAgIGZvciAoY29sID0gMDsgY29sIDwgbnVtX2NvbHM7IGNvbCsrKSB7DQorICAgICAgciA9IE1BWEpTQU1QTEUgLSBHRVRKU0FNUExFKGlucHRyWzBdKTsNCisgICAgICBnID0gTUFYSlNBTVBMRSAtIEdFVEpTQU1QTEUoaW5wdHJbMV0pOw0KKyAgICAgIGIgPSBNQVhKU0FNUExFIC0gR0VUSlNBTVBMRShpbnB0clsyXSk7DQorICAgICAgLyogSyBwYXNzZXMgdGhyb3VnaCBhcy1pcyAqLw0KKyAgICAgIG91dHB0cjNbY29sXSA9IGlucHRyWzNdOwkvKiBkb24ndCBuZWVkIEdFVEpTQU1QTEUgaGVyZSAqLw0KKyAgICAgIGlucHRyICs9IDQ7DQorICAgICAgLyogSWYgdGhlIGlucHV0cyBhcmUgMC4uTUFYSlNBTVBMRSwgdGhlIG91dHB1dHMgb2YgdGhlc2UgZXF1YXRpb25zDQorICAgICAgICogbXVzdCBiZSB0b287IHdlIGRvIG5vdCBuZWVkIGFuIGV4cGxpY2l0IHJhbmdlLWxpbWl0aW5nIG9wZXJhdGlvbi4NCisgICAgICAgKiBIZW5jZSB0aGUgdmFsdWUgYmVpbmcgc2hpZnRlZCBpcyBuZXZlciBuZWdhdGl2ZSwgYW5kIHdlIGRvbid0DQorICAgICAgICogbmVlZCB0aGUgZ2VuZXJhbCBSSUdIVF9TSElGVCBtYWNyby4NCisgICAgICAgKi8NCisgICAgICAvKiBZICovDQorICAgICAgb3V0cHRyMFtjb2xdID0gKEpTQU1QTEUpDQorCQkoKGN0YWJbcitSX1lfT0ZGXSArIGN0YWJbZytHX1lfT0ZGXSArIGN0YWJbYitCX1lfT0ZGXSkNCisJCSA+PiBTQ0FMRUJJVFMpOw0KKyAgICAgIC8qIENiICovDQorICAgICAgb3V0cHRyMVtjb2xdID0gKEpTQU1QTEUpDQorCQkoKGN0YWJbcitSX0NCX09GRl0gKyBjdGFiW2crR19DQl9PRkZdICsgY3RhYltiK0JfQ0JfT0ZGXSkNCisJCSA+PiBTQ0FMRUJJVFMpOw0KKyAgICAgIC8qIENyICovDQorICAgICAgb3V0cHRyMltjb2xdID0gKEpTQU1QTEUpDQorCQkoKGN0YWJbcitSX0NSX09GRl0gKyBjdGFiW2crR19DUl9PRkZdICsgY3RhYltiK0JfQ1JfT0ZGXSkNCisJCSA+PiBTQ0FMRUJJVFMpOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogQ29udmVydCBzb21lIHJvd3Mgb2Ygc2FtcGxlcyB0byB0aGUgSlBFRyBjb2xvcnNwYWNlLg0KKyAqIFRoaXMgdmVyc2lvbiBoYW5kbGVzIGdyYXlzY2FsZSBvdXRwdXQgd2l0aCBubyBjb252ZXJzaW9uLg0KKyAqIFRoZSBzb3VyY2UgY2FuIGJlIGVpdGhlciBwbGFpbiBncmF5c2NhbGUgb3IgWUNiQ3IgKHNpbmNlIFkgPT0gZ3JheSkuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorZ3JheXNjYWxlX2NvbnZlcnQgKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJICAgSlNBTVBBUlJBWSBpbnB1dF9idWYsIEpTQU1QSU1BR0Ugb3V0cHV0X2J1ZiwNCisJCSAgIEpESU1FTlNJT04gb3V0cHV0X3JvdywgaW50IG51bV9yb3dzKQ0KK3sNCisgIHJlZ2lzdGVyIEpTQU1QUk9XIGlucHRyOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgb3V0cHRyOw0KKyAgcmVnaXN0ZXIgSkRJTUVOU0lPTiBjb2w7DQorICBKRElNRU5TSU9OIG51bV9jb2xzID0gY2luZm8tPmltYWdlX3dpZHRoOw0KKyAgaW50IGluc3RyaWRlID0gY2luZm8tPmlucHV0X2NvbXBvbmVudHM7DQorDQorICB3aGlsZSAoLS1udW1fcm93cyA+PSAwKSB7DQorICAgIGlucHRyID0gKmlucHV0X2J1ZisrOw0KKyAgICBvdXRwdHIgPSBvdXRwdXRfYnVmWzBdW291dHB1dF9yb3ddOw0KKyAgICBvdXRwdXRfcm93Kys7DQorICAgIGZvciAoY29sID0gMDsgY29sIDwgbnVtX2NvbHM7IGNvbCsrKSB7DQorICAgICAgb3V0cHRyW2NvbF0gPSBpbnB0clswXTsJLyogZG9uJ3QgbmVlZCBHRVRKU0FNUExFKCkgaGVyZSAqLw0KKyAgICAgIGlucHRyICs9IGluc3RyaWRlOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogQ29udmVydCBzb21lIHJvd3Mgb2Ygc2FtcGxlcyB0byB0aGUgSlBFRyBjb2xvcnNwYWNlLg0KKyAqIFRoaXMgdmVyc2lvbiBoYW5kbGVzIG11bHRpLWNvbXBvbmVudCBjb2xvcnNwYWNlcyB3aXRob3V0IGNvbnZlcnNpb24uDQorICogV2UgYXNzdW1lIGlucHV0X2NvbXBvbmVudHMgPT0gbnVtX2NvbXBvbmVudHMuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorbnVsbF9jb252ZXJ0IChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJICAgICAgSlNBTVBBUlJBWSBpbnB1dF9idWYsIEpTQU1QSU1BR0Ugb3V0cHV0X2J1ZiwNCisJICAgICAgSkRJTUVOU0lPTiBvdXRwdXRfcm93LCBpbnQgbnVtX3Jvd3MpDQorew0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgaW5wdHI7DQorICByZWdpc3RlciBKU0FNUFJPVyBvdXRwdHI7DQorICByZWdpc3RlciBKRElNRU5TSU9OIGNvbDsNCisgIHJlZ2lzdGVyIGludCBjaTsNCisgIGludCBuYyA9IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgIEpESU1FTlNJT04gbnVtX2NvbHMgPSBjaW5mby0+aW1hZ2Vfd2lkdGg7DQorDQorICB3aGlsZSAoLS1udW1fcm93cyA+PSAwKSB7DQorICAgIC8qIEl0IHNlZW1zIGZhc3Rlc3QgdG8gbWFrZSBhIHNlcGFyYXRlIHBhc3MgZm9yIGVhY2ggY29tcG9uZW50LiAqLw0KKyAgICBmb3IgKGNpID0gMDsgY2kgPCBuYzsgY2krKykgew0KKyAgICAgIGlucHRyID0gKmlucHV0X2J1ZjsNCisgICAgICBvdXRwdHIgPSBvdXRwdXRfYnVmW2NpXVtvdXRwdXRfcm93XTsNCisgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IG51bV9jb2xzOyBjb2wrKykgew0KKwlvdXRwdHJbY29sXSA9IGlucHRyW2NpXTsgLyogZG9uJ3QgbmVlZCBHRVRKU0FNUExFKCkgaGVyZSAqLw0KKwlpbnB0ciArPSBuYzsNCisgICAgICB9DQorICAgIH0NCisgICAgaW5wdXRfYnVmKys7DQorICAgIG91dHB1dF9yb3crKzsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBFbXB0eSBtZXRob2QgZm9yIHN0YXJ0X3Bhc3MuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorbnVsbF9tZXRob2QgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIC8qIG5vIHdvcmsgbmVlZGVkICovDQorfQ0KKw0KKw0KKy8qDQorICogTW9kdWxlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIGlucHV0IGNvbG9yc3BhY2UgY29udmVyc2lvbi4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqaW5pdF9jb2xvcl9jb252ZXJ0ZXIgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIG15X2Njb252ZXJ0X3B0ciBjY29udmVydDsNCisNCisgIGNjb252ZXJ0ID0gKG15X2Njb252ZXJ0X3B0cikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJU0laRU9GKG15X2NvbG9yX2NvbnZlcnRlcikpOw0KKyAgY2luZm8tPmNjb252ZXJ0ID0gKHN0cnVjdCBqcGVnX2NvbG9yX2NvbnZlcnRlciAqKSBjY29udmVydDsNCisgIC8qIHNldCBzdGFydF9wYXNzIHRvIG51bGwgbWV0aG9kIHVudGlsIHdlIGZpbmQgb3V0IGRpZmZlcmVudGx5ICovDQorICBjY29udmVydC0+cHViLnN0YXJ0X3Bhc3MgPSBudWxsX21ldGhvZDsNCisNCisgIC8qIE1ha2Ugc3VyZSBpbnB1dF9jb21wb25lbnRzIGFncmVlcyB3aXRoIGluX2NvbG9yX3NwYWNlICovDQorICBzd2l0Y2ggKGNpbmZvLT5pbl9jb2xvcl9zcGFjZSkgew0KKyAgY2FzZSBKQ1NfR1JBWVNDQUxFOg0KKyAgICBpZiAoY2luZm8tPmlucHV0X2NvbXBvbmVudHMgIT0gMSkNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9JTl9DT0xPUlNQQUNFKTsNCisgICAgYnJlYWs7DQorDQorICBjYXNlIEpDU19SR0I6DQorI2lmIFJHQl9QSVhFTFNJWkUgIT0gMw0KKyAgICBpZiAoY2luZm8tPmlucHV0X2NvbXBvbmVudHMgIT0gUkdCX1BJWEVMU0laRSkNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9JTl9DT0xPUlNQQUNFKTsNCisgICAgYnJlYWs7DQorI2VuZGlmIC8qIGVsc2Ugc2hhcmUgY29kZSB3aXRoIFlDYkNyICovDQorDQorICBjYXNlIEpDU19ZQ2JDcjoNCisgICAgaWYgKGNpbmZvLT5pbnB1dF9jb21wb25lbnRzICE9IDMpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfSU5fQ09MT1JTUEFDRSk7DQorICAgIGJyZWFrOw0KKw0KKyAgY2FzZSBKQ1NfQ01ZSzoNCisgIGNhc2UgSkNTX1lDQ0s6DQorICAgIGlmIChjaW5mby0+aW5wdXRfY29tcG9uZW50cyAhPSA0KQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0lOX0NPTE9SU1BBQ0UpOw0KKyAgICBicmVhazsNCisNCisgIGRlZmF1bHQ6CQkJLyogSkNTX1VOS05PV04gY2FuIGJlIGFueXRoaW5nICovDQorICAgIGlmIChjaW5mby0+aW5wdXRfY29tcG9uZW50cyA8IDEpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfSU5fQ09MT1JTUEFDRSk7DQorICAgIGJyZWFrOw0KKyAgfQ0KKw0KKyAgLyogQ2hlY2sgbnVtX2NvbXBvbmVudHMsIHNldCBjb252ZXJzaW9uIG1ldGhvZCBiYXNlZCBvbiByZXF1ZXN0ZWQgc3BhY2UgKi8NCisgIHN3aXRjaCAoY2luZm8tPmpwZWdfY29sb3Jfc3BhY2UpIHsNCisgIGNhc2UgSkNTX0dSQVlTQ0FMRToNCisgICAgaWYgKGNpbmZvLT5udW1fY29tcG9uZW50cyAhPSAxKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0pfQ09MT1JTUEFDRSk7DQorICAgIGlmIChjaW5mby0+aW5fY29sb3Jfc3BhY2UgPT0gSkNTX0dSQVlTQ0FMRSkNCisgICAgICBjY29udmVydC0+cHViLmNvbG9yX2NvbnZlcnQgPSBncmF5c2NhbGVfY29udmVydDsNCisgICAgZWxzZSBpZiAoY2luZm8tPmluX2NvbG9yX3NwYWNlID09IEpDU19SR0IpIHsNCisgICAgICBjY29udmVydC0+cHViLnN0YXJ0X3Bhc3MgPSByZ2JfeWNjX3N0YXJ0Ow0KKyAgICAgIGNjb252ZXJ0LT5wdWIuY29sb3JfY29udmVydCA9IHJnYl9ncmF5X2NvbnZlcnQ7DQorICAgIH0gZWxzZSBpZiAoY2luZm8tPmluX2NvbG9yX3NwYWNlID09IEpDU19ZQ2JDcikNCisgICAgICBjY29udmVydC0+cHViLmNvbG9yX2NvbnZlcnQgPSBncmF5c2NhbGVfY29udmVydDsNCisgICAgZWxzZQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQ09OVkVSU0lPTl9OT1RJTVBMKTsNCisgICAgYnJlYWs7DQorDQorICBjYXNlIEpDU19SR0I6DQorICAgIGlmIChjaW5mby0+bnVtX2NvbXBvbmVudHMgIT0gMykNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9KX0NPTE9SU1BBQ0UpOw0KKyAgICBpZiAoY2luZm8tPmluX2NvbG9yX3NwYWNlID09IEpDU19SR0IgJiYgUkdCX1BJWEVMU0laRSA9PSAzKQ0KKyAgICAgIGNjb252ZXJ0LT5wdWIuY29sb3JfY29udmVydCA9IG51bGxfY29udmVydDsNCisgICAgZWxzZQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQ09OVkVSU0lPTl9OT1RJTVBMKTsNCisgICAgYnJlYWs7DQorDQorICBjYXNlIEpDU19ZQ2JDcjoNCisgICAgaWYgKGNpbmZvLT5udW1fY29tcG9uZW50cyAhPSAzKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0pfQ09MT1JTUEFDRSk7DQorICAgIGlmIChjaW5mby0+aW5fY29sb3Jfc3BhY2UgPT0gSkNTX1JHQikgew0KKyAgICAgIGNjb252ZXJ0LT5wdWIuc3RhcnRfcGFzcyA9IHJnYl95Y2Nfc3RhcnQ7DQorICAgICAgY2NvbnZlcnQtPnB1Yi5jb2xvcl9jb252ZXJ0ID0gcmdiX3ljY19jb252ZXJ0Ow0KKyAgICB9IGVsc2UgaWYgKGNpbmZvLT5pbl9jb2xvcl9zcGFjZSA9PSBKQ1NfWUNiQ3IpDQorICAgICAgY2NvbnZlcnQtPnB1Yi5jb2xvcl9jb252ZXJ0ID0gbnVsbF9jb252ZXJ0Ow0KKyAgICBlbHNlDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9DT05WRVJTSU9OX05PVElNUEwpOw0KKyAgICBicmVhazsNCisNCisgIGNhc2UgSkNTX0NNWUs6DQorICAgIGlmIChjaW5mby0+bnVtX2NvbXBvbmVudHMgIT0gNCkNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9KX0NPTE9SU1BBQ0UpOw0KKyAgICBpZiAoY2luZm8tPmluX2NvbG9yX3NwYWNlID09IEpDU19DTVlLKQ0KKyAgICAgIGNjb252ZXJ0LT5wdWIuY29sb3JfY29udmVydCA9IG51bGxfY29udmVydDsNCisgICAgZWxzZQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQ09OVkVSU0lPTl9OT1RJTVBMKTsNCisgICAgYnJlYWs7DQorDQorICBjYXNlIEpDU19ZQ0NLOg0KKyAgICBpZiAoY2luZm8tPm51bV9jb21wb25lbnRzICE9IDQpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfSl9DT0xPUlNQQUNFKTsNCisgICAgaWYgKGNpbmZvLT5pbl9jb2xvcl9zcGFjZSA9PSBKQ1NfQ01ZSykgew0KKyAgICAgIGNjb252ZXJ0LT5wdWIuc3RhcnRfcGFzcyA9IHJnYl95Y2Nfc3RhcnQ7DQorICAgICAgY2NvbnZlcnQtPnB1Yi5jb2xvcl9jb252ZXJ0ID0gY215a195Y2NrX2NvbnZlcnQ7DQorICAgIH0gZWxzZSBpZiAoY2luZm8tPmluX2NvbG9yX3NwYWNlID09IEpDU19ZQ0NLKQ0KKyAgICAgIGNjb252ZXJ0LT5wdWIuY29sb3JfY29udmVydCA9IG51bGxfY29udmVydDsNCisgICAgZWxzZQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQ09OVkVSU0lPTl9OT1RJTVBMKTsNCisgICAgYnJlYWs7DQorDQorICBkZWZhdWx0OgkJCS8qIGFsbG93IG51bGwgY29udmVyc2lvbiBvZiBKQ1NfVU5LTk9XTiAqLw0KKyAgICBpZiAoY2luZm8tPmpwZWdfY29sb3Jfc3BhY2UgIT0gY2luZm8tPmluX2NvbG9yX3NwYWNlIHx8DQorCWNpbmZvLT5udW1fY29tcG9uZW50cyAhPSBjaW5mby0+aW5wdXRfY29tcG9uZW50cykNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0NPTlZFUlNJT05fTk9USU1QTCk7DQorICAgIGNjb252ZXJ0LT5wdWIuY29sb3JfY29udmVydCA9IG51bGxfY29udmVydDsNCisgICAgYnJlYWs7DQorICB9DQorfQ0KKw0KKyNlbmRpZiAvL19GWF9KUEVHX1RVUkJPXw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjZGN0bWdyLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2RjdG1nci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MDgyMDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2RjdG1nci5jCkBAIC0wLDAgKzEsMzkwIEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamNkY3RtZ3IuYw0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTk0LTE5OTYsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBmb3J3YXJkLURDVCBtYW5hZ2VtZW50IGxvZ2ljLg0KKyAqIFRoaXMgY29kZSBzZWxlY3RzIGEgcGFydGljdWxhciBEQ1QgaW1wbGVtZW50YXRpb24gdG8gYmUgdXNlZCwNCisgKiBhbmQgaXQgcGVyZm9ybXMgcmVsYXRlZCBob3VzZWtlZXBpbmcgY2hvcmVzIGluY2x1ZGluZyBjb2VmZmljaWVudA0KKyAqIHF1YW50aXphdGlvbi4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisjaW5jbHVkZSAiamRjdC5oIgkJLyogUHJpdmF0ZSBkZWNsYXJhdGlvbnMgZm9yIERDVCBzdWJzeXN0ZW0gKi8NCisNCisNCisvKiBQcml2YXRlIHN1Ym9iamVjdCBmb3IgdGhpcyBtb2R1bGUgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBzdHJ1Y3QganBlZ19mb3J3YXJkX2RjdCBwdWI7CS8qIHB1YmxpYyBmaWVsZHMgKi8NCisNCisgIC8qIFBvaW50ZXIgdG8gdGhlIERDVCByb3V0aW5lIGFjdHVhbGx5IGluIHVzZSAqLw0KKyAgZm9yd2FyZF9EQ1RfbWV0aG9kX3B0ciBkb19kY3Q7DQorDQorICAvKiBUaGUgYWN0dWFsIHBvc3QtRENUIGRpdmlzb3JzIC0tLSBub3QgaWRlbnRpY2FsIHRvIHRoZSBxdWFudCB0YWJsZQ0KKyAgICogZW50cmllcywgYmVjYXVzZSBvZiBzY2FsaW5nIChlc3BlY2lhbGx5IGZvciBhbiB1bm5vcm1hbGl6ZWQgRENUKS4NCisgICAqIEVhY2ggdGFibGUgaXMgZ2l2ZW4gaW4gbm9ybWFsIGFycmF5IG9yZGVyLg0KKyAgICovDQorICBEQ1RFTEVNICogZGl2aXNvcnNbTlVNX1FVQU5UX1RCTFNdOw0KKw0KKyNpZmRlZiBEQ1RfRkxPQVRfU1VQUE9SVEVEDQorICAvKiBTYW1lIGFzIGFib3ZlIGZvciB0aGUgZmxvYXRpbmctcG9pbnQgY2FzZS4gKi8NCisgIGZsb2F0X0RDVF9tZXRob2RfcHRyIGRvX2Zsb2F0X2RjdDsNCisgIEZBU1RfRkxPQVQgKiBmbG9hdF9kaXZpc29yc1tOVU1fUVVBTlRfVEJMU107DQorI2VuZGlmDQorfSBteV9mZGN0X2NvbnRyb2xsZXI7DQorDQordHlwZWRlZiBteV9mZGN0X2NvbnRyb2xsZXIgKiBteV9mZGN0X3B0cjsNCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgZm9yIGEgcHJvY2Vzc2luZyBwYXNzLg0KKyAqIFZlcmlmeSB0aGF0IGFsbCByZWZlcmVuY2VkIFEtdGFibGVzIGFyZSBwcmVzZW50LCBhbmQgc2V0IHVwDQorICogdGhlIGRpdmlzb3IgdGFibGUgZm9yIGVhY2ggb25lLg0KKyAqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBEQ1Qgb2YgYWxsIGNvbXBvbmVudHMgaXMgZG9uZSBkdXJpbmcNCisgKiB0aGUgZmlyc3QgcGFzcywgZXZlbiBpZiBvbmx5IHNvbWUgY29tcG9uZW50cyB3aWxsIGJlIG91dHB1dCBpbiB0aGUNCisgKiBmaXJzdCBzY2FuLiAgSGVuY2UgYWxsIGNvbXBvbmVudHMgc2hvdWxkIGJlIGV4YW1pbmVkIGhlcmUuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc3RhcnRfcGFzc19mZGN0bWdyIChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBteV9mZGN0X3B0ciBmZGN0ID0gKG15X2ZkY3RfcHRyKSBjaW5mby0+ZmRjdDsNCisgIGludCBjaSwgcXRibG5vLCBpOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIEpRVUFOVF9UQkwgKiBxdGJsOw0KKyAgRENURUxFTSAqIGR0Ymw7DQorDQorICBmb3IgKGNpID0gMCwgY29tcHB0ciA9IGNpbmZvLT5jb21wX2luZm87IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgICAgICBjaSsrLCBjb21wcHRyKyspIHsNCisgICAgcXRibG5vID0gY29tcHB0ci0+cXVhbnRfdGJsX25vOw0KKyAgICAvKiBNYWtlIHN1cmUgc3BlY2lmaWVkIHF1YW50aXphdGlvbiB0YWJsZSBpcyBwcmVzZW50ICovDQorICAgIGlmIChxdGJsbm8gPCAwIHx8IHF0YmxubyA+PSBOVU1fUVVBTlRfVEJMUyB8fA0KKwljaW5mby0+cXVhbnRfdGJsX3B0cnNbcXRibG5vXSA9PSBOVUxMKQ0KKyAgICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX05PX1FVQU5UX1RBQkxFLCBxdGJsbm8pOw0KKyAgICBxdGJsID0gY2luZm8tPnF1YW50X3RibF9wdHJzW3F0Ymxub107DQorICAgIC8qIENvbXB1dGUgZGl2aXNvcnMgZm9yIHRoaXMgcXVhbnQgdGFibGUgKi8NCisgICAgLyogV2UgbWF5IGRvIHRoaXMgbW9yZSB0aGFuIG9uY2UgZm9yIHNhbWUgdGFibGUsIGJ1dCBpdCdzIG5vdCBhIGJpZyBkZWFsICovDQorICAgIHN3aXRjaCAoY2luZm8tPmRjdF9tZXRob2QpIHsNCisjaWZkZWYgRENUX0lTTE9XX1NVUFBPUlRFRA0KKyAgICBjYXNlIEpEQ1RfSVNMT1c6DQorICAgICAgLyogRm9yIExMJk0gSURDVCBtZXRob2QsIGRpdmlzb3JzIGFyZSBlcXVhbCB0byByYXcgcXVhbnRpemF0aW9uDQorICAgICAgICogY29lZmZpY2llbnRzIG11bHRpcGxpZWQgYnkgOCAodG8gY291bnRlcmFjdCBzY2FsaW5nKS4NCisgICAgICAgKi8NCisgICAgICBpZiAoZmRjdC0+ZGl2aXNvcnNbcXRibG5vXSA9PSBOVUxMKSB7DQorCWZkY3QtPmRpdmlzb3JzW3F0Ymxub10gPSAoRENURUxFTSAqKQ0KKwkgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCSAgICAgIERDVFNJWkUyICogU0laRU9GKERDVEVMRU0pKTsNCisgICAgICB9DQorICAgICAgZHRibCA9IGZkY3QtPmRpdmlzb3JzW3F0Ymxub107DQorICAgICAgZm9yIChpID0gMDsgaSA8IERDVFNJWkUyOyBpKyspIHsNCisJZHRibFtpXSA9ICgoRENURUxFTSkgcXRibC0+cXVhbnR2YWxbaV0pIDw8IDM7DQorICAgICAgfQ0KKyAgICAgIGJyZWFrOw0KKyNlbmRpZg0KKyNpZmRlZiBEQ1RfSUZBU1RfU1VQUE9SVEVEDQorICAgIGNhc2UgSkRDVF9JRkFTVDoNCisgICAgICB7DQorCS8qIEZvciBBQSZOIElEQ1QgbWV0aG9kLCBkaXZpc29ycyBhcmUgZXF1YWwgdG8gcXVhbnRpemF0aW9uDQorCSAqIGNvZWZmaWNpZW50cyBzY2FsZWQgYnkgc2NhbGVmYWN0b3Jbcm93XSpzY2FsZWZhY3Rvcltjb2xdLCB3aGVyZQ0KKwkgKiAgIHNjYWxlZmFjdG9yWzBdID0gMQ0KKwkgKiAgIHNjYWxlZmFjdG9yW2tdID0gY29zKGsqUEkvMTYpICogc3FydCgyKSAgICBmb3Igaz0xLi43DQorCSAqIFdlIGFwcGx5IGEgZnVydGhlciBzY2FsZSBmYWN0b3Igb2YgOC4NCisJICovDQorI2RlZmluZSBDT05TVF9CSVRTIDE0DQorCXN0YXRpYyBjb25zdCBJTlQxNiBhYW5zY2FsZXNbRENUU0laRTJdID0gew0KKwkgIC8qIHByZWNvbXB1dGVkIHZhbHVlcyBzY2FsZWQgdXAgYnkgMTQgYml0cyAqLw0KKwkgIDE2Mzg0LCAyMjcyNSwgMjE0MDcsIDE5MjY2LCAxNjM4NCwgMTI4NzMsICA4ODY3LCAgNDUyMCwNCisJICAyMjcyNSwgMzE1MjEsIDI5NjkyLCAyNjcyMiwgMjI3MjUsIDE3ODU1LCAxMjI5OSwgIDYyNzAsDQorCSAgMjE0MDcsIDI5NjkyLCAyNzk2OSwgMjUxNzIsIDIxNDA3LCAxNjgxOSwgMTE1ODUsICA1OTA2LA0KKwkgIDE5MjY2LCAyNjcyMiwgMjUxNzIsIDIyNjU0LCAxOTI2NiwgMTUxMzcsIDEwNDI2LCAgNTMxNSwNCisJICAxNjM4NCwgMjI3MjUsIDIxNDA3LCAxOTI2NiwgMTYzODQsIDEyODczLCAgODg2NywgIDQ1MjAsDQorCSAgMTI4NzMsIDE3ODU1LCAxNjgxOSwgMTUxMzcsIDEyODczLCAxMDExNCwgIDY5NjcsICAzNTUyLA0KKwkgICA4ODY3LCAxMjI5OSwgMTE1ODUsIDEwNDI2LCAgODg2NywgIDY5NjcsICA0Nzk5LCAgMjQ0NiwNCisJICAgNDUyMCwgIDYyNzAsICA1OTA2LCAgNTMxNSwgIDQ1MjAsICAzNTUyLCAgMjQ0NiwgIDEyNDcNCisJfTsNCisJU0hJRlRfVEVNUFMNCisNCisJaWYgKGZkY3QtPmRpdmlzb3JzW3F0Ymxub10gPT0gTlVMTCkgew0KKwkgIGZkY3QtPmRpdmlzb3JzW3F0Ymxub10gPSAoRENURUxFTSAqKQ0KKwkgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJCURDVFNJWkUyICogU0laRU9GKERDVEVMRU0pKTsNCisJfQ0KKwlkdGJsID0gZmRjdC0+ZGl2aXNvcnNbcXRibG5vXTsNCisJZm9yIChpID0gMDsgaSA8IERDVFNJWkUyOyBpKyspIHsNCisJICBkdGJsW2ldID0gKERDVEVMRU0pDQorCSAgICBERVNDQUxFKE1VTFRJUExZMTZWMTYoKElOVDMyKSBxdGJsLT5xdWFudHZhbFtpXSwNCisJCQkJICAoSU5UMzIpIGFhbnNjYWxlc1tpXSksDQorCQkgICAgQ09OU1RfQklUUy0zKTsNCisJfQ0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisjZW5kaWYNCisjaWZkZWYgRENUX0ZMT0FUX1NVUFBPUlRFRA0KKyAgICBjYXNlIEpEQ1RfRkxPQVQ6DQorICAgICAgew0KKwkvKiBGb3IgZmxvYXQgQUEmTiBJRENUIG1ldGhvZCwgZGl2aXNvcnMgYXJlIGVxdWFsIHRvIHF1YW50aXphdGlvbg0KKwkgKiBjb2VmZmljaWVudHMgc2NhbGVkIGJ5IHNjYWxlZmFjdG9yW3Jvd10qc2NhbGVmYWN0b3JbY29sXSwgd2hlcmUNCisJICogICBzY2FsZWZhY3RvclswXSA9IDENCisJICogICBzY2FsZWZhY3RvcltrXSA9IGNvcyhrKlBJLzE2KSAqIHNxcnQoMikgICAgZm9yIGs9MS4uNw0KKwkgKiBXZSBhcHBseSBhIGZ1cnRoZXIgc2NhbGUgZmFjdG9yIG9mIDguDQorCSAqIFdoYXQncyBhY3R1YWxseSBzdG9yZWQgaXMgMS9kaXZpc29yIHNvIHRoYXQgdGhlIGlubmVyIGxvb3AgY2FuDQorCSAqIHVzZSBhIG11bHRpcGxpY2F0aW9uIHJhdGhlciB0aGFuIGEgZGl2aXNpb24uDQorCSAqLw0KKwlGQVNUX0ZMT0FUICogZmR0Ymw7DQorCWludCByb3csIGNvbDsNCisJc3RhdGljIGNvbnN0IGRvdWJsZSBhYW5zY2FsZWZhY3RvcltEQ1RTSVpFXSA9IHsNCisJICAxLjAsIDEuMzg3MDM5ODQ1LCAxLjMwNjU2Mjk2NSwgMS4xNzU4NzU2MDIsDQorCSAgMS4wLCAwLjc4NTY5NDk1OCwgMC41NDExOTYxMDAsIDAuMjc1ODk5Mzc5DQorCX07DQorDQorCWlmIChmZGN0LT5mbG9hdF9kaXZpc29yc1txdGJsbm9dID09IE5VTEwpIHsNCisJICBmZGN0LT5mbG9hdF9kaXZpc29yc1txdGJsbm9dID0gKEZBU1RfRkxPQVQgKikNCisJICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCQlEQ1RTSVpFMiAqIFNJWkVPRihGQVNUX0ZMT0FUKSk7DQorCX0NCisJZmR0YmwgPSBmZGN0LT5mbG9hdF9kaXZpc29yc1txdGJsbm9dOw0KKwlpID0gMDsNCisJZm9yIChyb3cgPSAwOyByb3cgPCBEQ1RTSVpFOyByb3crKykgew0KKwkgIGZvciAoY29sID0gMDsgY29sIDwgRENUU0laRTsgY29sKyspIHsNCisJICAgIGZkdGJsW2ldID0gKEZBU1RfRkxPQVQpDQorCSAgICAgICgxLjAgLyAoKChkb3VibGUpIHF0YmwtPnF1YW50dmFsW2ldICoNCisJCSAgICAgICBhYW5zY2FsZWZhY3Rvcltyb3ddICogYWFuc2NhbGVmYWN0b3JbY29sXSAqIDguMCkpKTsNCisJICAgIGkrKzsNCisJICB9DQorCX0NCisgICAgICB9DQorICAgICAgYnJlYWs7DQorI2VuZGlmDQorICAgIGRlZmF1bHQ6DQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogUGVyZm9ybSBmb3J3YXJkIERDVCBvbiBvbmUgb3IgbW9yZSBibG9ja3Mgb2YgYSBjb21wb25lbnQuDQorICoNCisgKiBUaGUgaW5wdXQgc2FtcGxlcyBhcmUgdGFrZW4gZnJvbSB0aGUgc2FtcGxlX2RhdGFbXSBhcnJheSBzdGFydGluZyBhdA0KKyAqIHBvc2l0aW9uIHN0YXJ0X3Jvdy9zdGFydF9jb2wsIGFuZCBtb3ZpbmcgdG8gdGhlIHJpZ2h0IGZvciBhbnkgYWRkaXRpb25hbA0KKyAqIGJsb2Nrcy4gVGhlIHF1YW50aXplZCBjb2VmZmljaWVudHMgYXJlIHJldHVybmVkIGluIGNvZWZfYmxvY2tzW10uDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorZm9yd2FyZF9EQ1QgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0ciwNCisJICAgICBKU0FNUEFSUkFZIHNhbXBsZV9kYXRhLCBKQkxPQ0tST1cgY29lZl9ibG9ja3MsDQorCSAgICAgSkRJTUVOU0lPTiBzdGFydF9yb3csIEpESU1FTlNJT04gc3RhcnRfY29sLA0KKwkgICAgIEpESU1FTlNJT04gbnVtX2Jsb2NrcykNCisvKiBUaGlzIHZlcnNpb24gaXMgdXNlZCBmb3IgaW50ZWdlciBEQ1QgaW1wbGVtZW50YXRpb25zLiAqLw0KK3sNCisgIC8qIFRoaXMgcm91dGluZSBpcyBoZWF2aWx5IHVzZWQsIHNvIGl0J3Mgd29ydGggY29kaW5nIGl0IHRpZ2h0bHkuICovDQorICBteV9mZGN0X3B0ciBmZGN0ID0gKG15X2ZkY3RfcHRyKSBjaW5mby0+ZmRjdDsNCisgIGZvcndhcmRfRENUX21ldGhvZF9wdHIgZG9fZGN0ID0gZmRjdC0+ZG9fZGN0Ow0KKyAgRENURUxFTSAqIGRpdmlzb3JzID0gZmRjdC0+ZGl2aXNvcnNbY29tcHB0ci0+cXVhbnRfdGJsX25vXTsNCisgIERDVEVMRU0gd29ya3NwYWNlW0RDVFNJWkUyXTsJLyogd29yayBhcmVhIGZvciBGRENUIHN1YnJvdXRpbmUgKi8NCisgIEpESU1FTlNJT04gYmk7DQorDQorICBzYW1wbGVfZGF0YSArPSBzdGFydF9yb3c7CS8qIGZvbGQgaW4gdGhlIHZlcnRpY2FsIG9mZnNldCBvbmNlICovDQorDQorICBmb3IgKGJpID0gMDsgYmkgPCBudW1fYmxvY2tzOyBiaSsrLCBzdGFydF9jb2wgKz0gRENUU0laRSkgew0KKyAgICAvKiBMb2FkIGRhdGEgaW50byB3b3Jrc3BhY2UsIGFwcGx5aW5nIHVuc2lnbmVkLT5zaWduZWQgY29udmVyc2lvbiAqLw0KKyAgICB7IHJlZ2lzdGVyIERDVEVMRU0gKndvcmtzcGFjZXB0cjsNCisgICAgICByZWdpc3RlciBKU0FNUFJPVyBlbGVtcHRyOw0KKyAgICAgIHJlZ2lzdGVyIGludCBlbGVtcjsNCisNCisgICAgICB3b3Jrc3BhY2VwdHIgPSB3b3Jrc3BhY2U7DQorICAgICAgZm9yIChlbGVtciA9IDA7IGVsZW1yIDwgRENUU0laRTsgZWxlbXIrKykgew0KKwllbGVtcHRyID0gc2FtcGxlX2RhdGFbZWxlbXJdICsgc3RhcnRfY29sOw0KKyNpZiBEQ1RTSVpFID09IDgJCS8qIHVucm9sbCB0aGUgaW5uZXIgbG9vcCAqLw0KKwkqd29ya3NwYWNlcHRyKysgPSBHRVRKU0FNUExFKCplbGVtcHRyKyspIC0gQ0VOVEVSSlNBTVBMRTsNCisJKndvcmtzcGFjZXB0cisrID0gR0VUSlNBTVBMRSgqZWxlbXB0cisrKSAtIENFTlRFUkpTQU1QTEU7DQorCSp3b3Jrc3BhY2VwdHIrKyA9IEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFOw0KKwkqd29ya3NwYWNlcHRyKysgPSBHRVRKU0FNUExFKCplbGVtcHRyKyspIC0gQ0VOVEVSSlNBTVBMRTsNCisJKndvcmtzcGFjZXB0cisrID0gR0VUSlNBTVBMRSgqZWxlbXB0cisrKSAtIENFTlRFUkpTQU1QTEU7DQorCSp3b3Jrc3BhY2VwdHIrKyA9IEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFOw0KKwkqd29ya3NwYWNlcHRyKysgPSBHRVRKU0FNUExFKCplbGVtcHRyKyspIC0gQ0VOVEVSSlNBTVBMRTsNCisJKndvcmtzcGFjZXB0cisrID0gR0VUSlNBTVBMRSgqZWxlbXB0cisrKSAtIENFTlRFUkpTQU1QTEU7DQorI2Vsc2UNCisJeyByZWdpc3RlciBpbnQgZWxlbWM7DQorCSAgZm9yIChlbGVtYyA9IERDVFNJWkU7IGVsZW1jID4gMDsgZWxlbWMtLSkgew0KKwkgICAgKndvcmtzcGFjZXB0cisrID0gR0VUSlNBTVBMRSgqZWxlbXB0cisrKSAtIENFTlRFUkpTQU1QTEU7DQorCSAgfQ0KKwl9DQorI2VuZGlmDQorICAgICAgfQ0KKyAgICB9DQorDQorICAgIC8qIFBlcmZvcm0gdGhlIERDVCAqLw0KKyAgICAoKmRvX2RjdCkgKHdvcmtzcGFjZSk7DQorDQorICAgIC8qIFF1YW50aXplL2Rlc2NhbGUgdGhlIGNvZWZmaWNpZW50cywgYW5kIHN0b3JlIGludG8gY29lZl9ibG9ja3NbXSAqLw0KKyAgICB7IHJlZ2lzdGVyIERDVEVMRU0gdGVtcCwgcXZhbDsNCisgICAgICByZWdpc3RlciBpbnQgaTsNCisgICAgICByZWdpc3RlciBKQ09FRlBUUiBvdXRwdXRfcHRyID0gY29lZl9ibG9ja3NbYmldOw0KKw0KKyAgICAgIGZvciAoaSA9IDA7IGkgPCBEQ1RTSVpFMjsgaSsrKSB7DQorCXF2YWwgPSBkaXZpc29yc1tpXTsNCisJdGVtcCA9IHdvcmtzcGFjZVtpXTsNCisJLyogRGl2aWRlIHRoZSBjb2VmZmljaWVudCB2YWx1ZSBieSBxdmFsLCBlbnN1cmluZyBwcm9wZXIgcm91bmRpbmcuDQorCSAqIFNpbmNlIEMgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZGlyZWN0aW9uIG9mIHJvdW5kaW5nIGZvciBuZWdhdGl2ZQ0KKwkgKiBxdW90aWVudHMsIHdlIGhhdmUgdG8gZm9yY2UgdGhlIGRpdmlkZW5kIHBvc2l0aXZlIGZvciBwb3J0YWJpbGl0eS4NCisJICoNCisJICogSW4gbW9zdCBmaWxlcywgYXQgbGVhc3QgaGFsZiBvZiB0aGUgb3V0cHV0IHZhbHVlcyB3aWxsIGJlIHplcm8NCisJICogKGF0IGRlZmF1bHQgcXVhbnRpemF0aW9uIHNldHRpbmdzLCBtb3JlIGxpa2UgdGhyZWUtcXVhcnRlcnMuLi4pDQorCSAqIHNvIHdlIHNob3VsZCBlbnN1cmUgdGhhdCB0aGlzIGNhc2UgaXMgZmFzdC4gIE9uIG1hbnkgbWFjaGluZXMsDQorCSAqIGEgY29tcGFyaXNvbiBpcyBlbm91Z2ggY2hlYXBlciB0aGFuIGEgZGl2aWRlIHRvIG1ha2UgYSBzcGVjaWFsIHRlc3QNCisJICogYSB3aW4uICBTaW5jZSBib3RoIGlucHV0cyB3aWxsIGJlIG5vbm5lZ2F0aXZlLCB3ZSBuZWVkIG9ubHkgdGVzdA0KKwkgKiBmb3IgYSA8IGIgdG8gZGlzY292ZXIgd2hldGhlciBhL2IgaXMgMC4NCisJICogSWYgeW91ciBtYWNoaW5lJ3MgZGl2aXNpb24gaXMgZmFzdCBlbm91Z2gsIGRlZmluZSBGQVNUX0RJVklERS4NCisJICovDQorI2lmZGVmIEZBU1RfRElWSURFDQorI2RlZmluZSBESVZJREVfQlkoYSxiKQlhIC89IGINCisjZWxzZQ0KKyNkZWZpbmUgRElWSURFX0JZKGEsYikJaWYgKGEgPj0gYikgYSAvPSBiOyBlbHNlIGEgPSAwDQorI2VuZGlmDQorCWlmICh0ZW1wIDwgMCkgew0KKwkgIHRlbXAgPSAtdGVtcDsNCisJICB0ZW1wICs9IHF2YWw+PjE7CS8qIGZvciByb3VuZGluZyAqLw0KKwkgIERJVklERV9CWSh0ZW1wLCBxdmFsKTsNCisJICB0ZW1wID0gLXRlbXA7DQorCX0gZWxzZSB7DQorCSAgdGVtcCArPSBxdmFsPj4xOwkvKiBmb3Igcm91bmRpbmcgKi8NCisJICBESVZJREVfQlkodGVtcCwgcXZhbCk7DQorCX0NCisJb3V0cHV0X3B0cltpXSA9IChKQ09FRikgdGVtcDsNCisgICAgICB9DQorICAgIH0NCisgIH0NCit9DQorDQorDQorI2lmZGVmIERDVF9GTE9BVF9TVVBQT1JURUQNCisNCitNRVRIT0RERUYodm9pZCkNCitmb3J3YXJkX0RDVF9mbG9hdCAoal9jb21wcmVzc19wdHIgY2luZm8sIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyLA0KKwkJICAgSlNBTVBBUlJBWSBzYW1wbGVfZGF0YSwgSkJMT0NLUk9XIGNvZWZfYmxvY2tzLA0KKwkJICAgSkRJTUVOU0lPTiBzdGFydF9yb3csIEpESU1FTlNJT04gc3RhcnRfY29sLA0KKwkJICAgSkRJTUVOU0lPTiBudW1fYmxvY2tzKQ0KKy8qIFRoaXMgdmVyc2lvbiBpcyB1c2VkIGZvciBmbG9hdGluZy1wb2ludCBEQ1QgaW1wbGVtZW50YXRpb25zLiAqLw0KK3sNCisgIC8qIFRoaXMgcm91dGluZSBpcyBoZWF2aWx5IHVzZWQsIHNvIGl0J3Mgd29ydGggY29kaW5nIGl0IHRpZ2h0bHkuICovDQorICBteV9mZGN0X3B0ciBmZGN0ID0gKG15X2ZkY3RfcHRyKSBjaW5mby0+ZmRjdDsNCisgIGZsb2F0X0RDVF9tZXRob2RfcHRyIGRvX2RjdCA9IGZkY3QtPmRvX2Zsb2F0X2RjdDsNCisgIEZBU1RfRkxPQVQgKiBkaXZpc29ycyA9IGZkY3QtPmZsb2F0X2Rpdmlzb3JzW2NvbXBwdHItPnF1YW50X3RibF9ub107DQorICBGQVNUX0ZMT0FUIHdvcmtzcGFjZVtEQ1RTSVpFMl07IC8qIHdvcmsgYXJlYSBmb3IgRkRDVCBzdWJyb3V0aW5lICovDQorICBKRElNRU5TSU9OIGJpOw0KKw0KKyAgc2FtcGxlX2RhdGEgKz0gc3RhcnRfcm93OwkvKiBmb2xkIGluIHRoZSB2ZXJ0aWNhbCBvZmZzZXQgb25jZSAqLw0KKw0KKyAgZm9yIChiaSA9IDA7IGJpIDwgbnVtX2Jsb2NrczsgYmkrKywgc3RhcnRfY29sICs9IERDVFNJWkUpIHsNCisgICAgLyogTG9hZCBkYXRhIGludG8gd29ya3NwYWNlLCBhcHBseWluZyB1bnNpZ25lZC0+c2lnbmVkIGNvbnZlcnNpb24gKi8NCisgICAgeyByZWdpc3RlciBGQVNUX0ZMT0FUICp3b3Jrc3BhY2VwdHI7DQorICAgICAgcmVnaXN0ZXIgSlNBTVBST1cgZWxlbXB0cjsNCisgICAgICByZWdpc3RlciBpbnQgZWxlbXI7DQorDQorICAgICAgd29ya3NwYWNlcHRyID0gd29ya3NwYWNlOw0KKyAgICAgIGZvciAoZWxlbXIgPSAwOyBlbGVtciA8IERDVFNJWkU7IGVsZW1yKyspIHsNCisJZWxlbXB0ciA9IHNhbXBsZV9kYXRhW2VsZW1yXSArIHN0YXJ0X2NvbDsNCisjaWYgRENUU0laRSA9PSA4CQkvKiB1bnJvbGwgdGhlIGlubmVyIGxvb3AgKi8NCisJKndvcmtzcGFjZXB0cisrID0gKEZBU1RfRkxPQVQpKEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFKTsNCisJKndvcmtzcGFjZXB0cisrID0gKEZBU1RfRkxPQVQpKEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFKTsNCisJKndvcmtzcGFjZXB0cisrID0gKEZBU1RfRkxPQVQpKEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFKTsNCisJKndvcmtzcGFjZXB0cisrID0gKEZBU1RfRkxPQVQpKEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFKTsNCisJKndvcmtzcGFjZXB0cisrID0gKEZBU1RfRkxPQVQpKEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFKTsNCisJKndvcmtzcGFjZXB0cisrID0gKEZBU1RfRkxPQVQpKEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFKTsNCisJKndvcmtzcGFjZXB0cisrID0gKEZBU1RfRkxPQVQpKEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFKTsNCisJKndvcmtzcGFjZXB0cisrID0gKEZBU1RfRkxPQVQpKEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFKTsNCisjZWxzZQ0KKwl7IHJlZ2lzdGVyIGludCBlbGVtYzsNCisJICBmb3IgKGVsZW1jID0gRENUU0laRTsgZWxlbWMgPiAwOyBlbGVtYy0tKSB7DQorCSAgICAqd29ya3NwYWNlcHRyKysgPSAoRkFTVF9GTE9BVCkNCisJICAgICAgKEdFVEpTQU1QTEUoKmVsZW1wdHIrKykgLSBDRU5URVJKU0FNUExFKTsNCisJICB9DQorCX0NCisjZW5kaWYNCisgICAgICB9DQorICAgIH0NCisNCisgICAgLyogUGVyZm9ybSB0aGUgRENUICovDQorICAgICgqZG9fZGN0KSAod29ya3NwYWNlKTsNCisNCisgICAgLyogUXVhbnRpemUvZGVzY2FsZSB0aGUgY29lZmZpY2llbnRzLCBhbmQgc3RvcmUgaW50byBjb2VmX2Jsb2Nrc1tdICovDQorICAgIHsgcmVnaXN0ZXIgRkFTVF9GTE9BVCB0ZW1wOw0KKyAgICAgIHJlZ2lzdGVyIGludCBpOw0KKyAgICAgIHJlZ2lzdGVyIEpDT0VGUFRSIG91dHB1dF9wdHIgPSBjb2VmX2Jsb2Nrc1tiaV07DQorDQorICAgICAgZm9yIChpID0gMDsgaSA8IERDVFNJWkUyOyBpKyspIHsNCisJLyogQXBwbHkgdGhlIHF1YW50aXphdGlvbiBhbmQgc2NhbGluZyBmYWN0b3IgKi8NCisJdGVtcCA9IHdvcmtzcGFjZVtpXSAqIGRpdmlzb3JzW2ldOw0KKwkvKiBSb3VuZCB0byBuZWFyZXN0IGludGVnZXIuDQorCSAqIFNpbmNlIEMgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZGlyZWN0aW9uIG9mIHJvdW5kaW5nIGZvciBuZWdhdGl2ZQ0KKwkgKiBxdW90aWVudHMsIHdlIGhhdmUgdG8gZm9yY2UgdGhlIGRpdmlkZW5kIHBvc2l0aXZlIGZvciBwb3J0YWJpbGl0eS4NCisJICogVGhlIG1heGltdW0gY29lZmZpY2llbnQgc2l6ZSBpcyArLTE2SyAoZm9yIDEyLWJpdCBkYXRhKSwgc28gdGhpcw0KKwkgKiBjb2RlIHNob3VsZCB3b3JrIGZvciBlaXRoZXIgMTYtYml0IG9yIDMyLWJpdCBpbnRzLg0KKwkgKi8NCisJb3V0cHV0X3B0cltpXSA9IChKQ09FRikgKChpbnQpICh0ZW1wICsgKEZBU1RfRkxPQVQpIDE2Mzg0LjUpIC0gMTYzODQpOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KK30NCisNCisjZW5kaWYgLyogRENUX0ZMT0FUX1NVUFBPUlRFRCAqLw0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6ZSBGRENUIG1hbmFnZXIuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoramluaXRfZm9yd2FyZF9kY3QgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIG15X2ZkY3RfcHRyIGZkY3Q7DQorICBpbnQgaTsNCisNCisgIGZkY3QgPSAobXlfZmRjdF9wdHIpDQorICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCVNJWkVPRihteV9mZGN0X2NvbnRyb2xsZXIpKTsNCisgIGNpbmZvLT5mZGN0ID0gKHN0cnVjdCBqcGVnX2ZvcndhcmRfZGN0ICopIGZkY3Q7DQorICBmZGN0LT5wdWIuc3RhcnRfcGFzcyA9IHN0YXJ0X3Bhc3NfZmRjdG1ncjsNCisNCisgIHN3aXRjaCAoY2luZm8tPmRjdF9tZXRob2QpIHsNCisjaWZkZWYgRENUX0lTTE9XX1NVUFBPUlRFRA0KKyAgY2FzZSBKRENUX0lTTE9XOg0KKyAgICBmZGN0LT5wdWIuZm9yd2FyZF9EQ1QgPSBmb3J3YXJkX0RDVDsNCisgICAgZmRjdC0+ZG9fZGN0ID0ganBlZ19mZGN0X2lzbG93Ow0KKyAgICBicmVhazsNCisjZW5kaWYNCisjaWZkZWYgRENUX0lGQVNUX1NVUFBPUlRFRA0KKyAgY2FzZSBKRENUX0lGQVNUOg0KKyAgICBmZGN0LT5wdWIuZm9yd2FyZF9EQ1QgPSBmb3J3YXJkX0RDVDsNCisgICAgZmRjdC0+ZG9fZGN0ID0ganBlZ19mZGN0X2lmYXN0Ow0KKyAgICBicmVhazsNCisjZW5kaWYNCisjaWZkZWYgRENUX0ZMT0FUX1NVUFBPUlRFRA0KKyAgY2FzZSBKRENUX0ZMT0FUOg0KKyAgICBmZGN0LT5wdWIuZm9yd2FyZF9EQ1QgPSBmb3J3YXJkX0RDVF9mbG9hdDsNCisgICAgZmRjdC0+ZG9fZmxvYXRfZGN0ID0ganBlZ19mZGN0X2Zsb2F0Ow0KKyAgICBicmVhazsNCisjZW5kaWYNCisgIGRlZmF1bHQ6DQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfTk9UX0NPTVBJTEVEKTsNCisgICAgYnJlYWs7DQorICB9DQorDQorICAvKiBNYXJrIGRpdmlzb3IgdGFibGVzIHVuYWxsb2NhdGVkICovDQorICBmb3IgKGkgPSAwOyBpIDwgTlVNX1FVQU5UX1RCTFM7IGkrKykgew0KKyAgICBmZGN0LT5kaXZpc29yc1tpXSA9IE5VTEw7DQorI2lmZGVmIERDVF9GTE9BVF9TVVBQT1JURUQNCisgICAgZmRjdC0+ZmxvYXRfZGl2aXNvcnNbaV0gPSBOVUxMOw0KKyNlbmRpZg0KKyAgfQ0KK30NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2h1ZmYuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjaHVmZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZDFmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2h1ZmYuYwpAQCAtMCwwICsxLDkxNSBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGpjaHVmZi5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgSHVmZm1hbiBlbnRyb3B5IGVuY29kaW5nIHJvdXRpbmVzLg0KKyAqDQorICogTXVjaCBvZiB0aGUgY29tcGxleGl0eSBoZXJlIGhhcyB0byBkbyB3aXRoIHN1cHBvcnRpbmcgb3V0cHV0IHN1c3BlbnNpb24uDQorICogSWYgdGhlIGRhdGEgZGVzdGluYXRpb24gbW9kdWxlIGRlbWFuZHMgc3VzcGVuc2lvbiwgd2Ugd2FudCB0byBiZSBhYmxlIHRvDQorICogYmFjayB1cCB0byB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgTUNVLiAgVG8gZG8gdGhpcywgd2UgY29weSBzdGF0ZQ0KKyAqIHZhcmlhYmxlcyBpbnRvIGxvY2FsIHdvcmtpbmcgc3RvcmFnZSwgYW5kIHVwZGF0ZSB0aGVtIGJhY2sgdG8gdGhlDQorICogcGVybWFuZW50IEpQRUcgb2JqZWN0cyBvbmx5IHVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIGFuIE1DVS4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisjaW5jbHVkZSAiamNodWZmLmgiCQkvKiBEZWNsYXJhdGlvbnMgc2hhcmVkIHdpdGggamNwaHVmZi5jICovDQorDQorI2lmZGVmIF9GWF9NQU5BR0VEX0NPREVfDQorI2RlZmluZSBzYXZhYmxlX3N0YXRlCXNhdmFibGVfc3RhdGVfYw0KKyNlbmRpZg0KKw0KKy8qIEV4cGFuZGVkIGVudHJvcHkgZW5jb2RlciBvYmplY3QgZm9yIEh1ZmZtYW4gZW5jb2RpbmcuDQorICoNCisgKiBUaGUgc2F2YWJsZV9zdGF0ZSBzdWJyZWNvcmQgY29udGFpbnMgZmllbGRzIHRoYXQgY2hhbmdlIHdpdGhpbiBhbiBNQ1UsDQorICogYnV0IG11c3Qgbm90IGJlIHVwZGF0ZWQgcGVybWFuZW50bHkgdW50aWwgd2UgY29tcGxldGUgdGhlIE1DVS4NCisgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBJTlQzMiBwdXRfYnVmZmVyOwkJLyogY3VycmVudCBiaXQtYWNjdW11bGF0aW9uIGJ1ZmZlciAqLw0KKyAgaW50IHB1dF9iaXRzOwkJCS8qICMgb2YgYml0cyBub3cgaW4gaXQgKi8NCisgIGludCBsYXN0X2RjX3ZhbFtNQVhfQ09NUFNfSU5fU0NBTl07IC8qIGxhc3QgREMgY29lZiBmb3IgZWFjaCBjb21wb25lbnQgKi8NCit9IHNhdmFibGVfc3RhdGU7DQorDQorLyogVGhpcyBtYWNybyBpcyB0byB3b3JrIGFyb3VuZCBjb21waWxlcnMgd2l0aCBtaXNzaW5nIG9yIGJyb2tlbg0KKyAqIHN0cnVjdHVyZSBhc3NpZ25tZW50LiAgWW91J2xsIG5lZWQgdG8gZml4IHRoaXMgY29kZSBpZiB5b3UgaGF2ZQ0KKyAqIHN1Y2ggYSBjb21waWxlciBhbmQgeW91IGNoYW5nZSBNQVhfQ09NUFNfSU5fU0NBTi4NCisgKi8NCisNCisjaWZuZGVmIE5PX1NUUlVDVF9BU1NJR04NCisjZGVmaW5lIEFTU0lHTl9TVEFURShkZXN0LHNyYykgICgoZGVzdCkgPSAoc3JjKSkNCisjZWxzZQ0KKyNpZiBNQVhfQ09NUFNfSU5fU0NBTiA9PSA0DQorI2RlZmluZSBBU1NJR05fU1RBVEUoZGVzdCxzcmMpICBcDQorCSgoZGVzdCkucHV0X2J1ZmZlciA9IChzcmMpLnB1dF9idWZmZXIsIFwNCisJIChkZXN0KS5wdXRfYml0cyA9IChzcmMpLnB1dF9iaXRzLCBcDQorCSAoZGVzdCkubGFzdF9kY192YWxbMF0gPSAoc3JjKS5sYXN0X2RjX3ZhbFswXSwgXA0KKwkgKGRlc3QpLmxhc3RfZGNfdmFsWzFdID0gKHNyYykubGFzdF9kY192YWxbMV0sIFwNCisJIChkZXN0KS5sYXN0X2RjX3ZhbFsyXSA9IChzcmMpLmxhc3RfZGNfdmFsWzJdLCBcDQorCSAoZGVzdCkubGFzdF9kY192YWxbM10gPSAoc3JjKS5sYXN0X2RjX3ZhbFszXSkNCisjZW5kaWYNCisjZW5kaWYNCisNCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBzdHJ1Y3QganBlZ19lbnRyb3B5X2VuY29kZXIgcHViOyAvKiBwdWJsaWMgZmllbGRzICovDQorDQorICBzYXZhYmxlX3N0YXRlIHNhdmVkOwkJLyogQml0IGJ1ZmZlciAmIERDIHN0YXRlIGF0IHN0YXJ0IG9mIE1DVSAqLw0KKw0KKyAgLyogVGhlc2UgZmllbGRzIGFyZSBOT1QgbG9hZGVkIGludG8gbG9jYWwgd29ya2luZyBzdGF0ZS4gKi8NCisgIHVuc2lnbmVkIGludCByZXN0YXJ0c190b19nbzsJLyogTUNVcyBsZWZ0IGluIHRoaXMgcmVzdGFydCBpbnRlcnZhbCAqLw0KKyAgaW50IG5leHRfcmVzdGFydF9udW07CQkvKiBuZXh0IHJlc3RhcnQgbnVtYmVyIHRvIHdyaXRlICgwLTcpICovDQorDQorICAvKiBQb2ludGVycyB0byBkZXJpdmVkIHRhYmxlcyAodGhlc2Ugd29ya3NwYWNlcyBoYXZlIGltYWdlIGxpZmVzcGFuKSAqLw0KKyAgY19kZXJpdmVkX3RibCAqIGRjX2Rlcml2ZWRfdGJsc1tOVU1fSFVGRl9UQkxTXTsNCisgIGNfZGVyaXZlZF90YmwgKiBhY19kZXJpdmVkX3RibHNbTlVNX0hVRkZfVEJMU107DQorDQorI2lmZGVmIEVOVFJPUFlfT1BUX1NVUFBPUlRFRAkvKiBTdGF0aXN0aWNzIHRhYmxlcyBmb3Igb3B0aW1pemF0aW9uICovDQorICBsb25nICogZGNfY291bnRfcHRyc1tOVU1fSFVGRl9UQkxTXTsNCisgIGxvbmcgKiBhY19jb3VudF9wdHJzW05VTV9IVUZGX1RCTFNdOw0KKyNlbmRpZg0KK30gaHVmZl9lbnRyb3B5X2VuY29kZXI7DQorDQordHlwZWRlZiBodWZmX2VudHJvcHlfZW5jb2RlciAqIGh1ZmZfZW50cm9weV9wdHI7DQorDQorLyogV29ya2luZyBzdGF0ZSB3aGlsZSB3cml0aW5nIGFuIE1DVS4NCisgKiBUaGlzIHN0cnVjdCBjb250YWlucyBhbGwgdGhlIGZpZWxkcyB0aGF0IGFyZSBuZWVkZWQgYnkgc3Vicm91dGluZXMuDQorICovDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgSk9DVEVUICogbmV4dF9vdXRwdXRfYnl0ZTsJLyogPT4gbmV4dCBieXRlIHRvIHdyaXRlIGluIGJ1ZmZlciAqLw0KKyAgc2l6ZV90IGZyZWVfaW5fYnVmZmVyOwkvKiAjIG9mIGJ5dGUgc3BhY2VzIHJlbWFpbmluZyBpbiBidWZmZXIgKi8NCisgIHNhdmFibGVfc3RhdGUgY3VyOwkJLyogQ3VycmVudCBiaXQgYnVmZmVyICYgREMgc3RhdGUgKi8NCisgIGpfY29tcHJlc3NfcHRyIGNpbmZvOwkJLyogZHVtcF9idWZmZXIgbmVlZHMgYWNjZXNzIHRvIHRoaXMgKi8NCit9IHdvcmtpbmdfc3RhdGU7DQorDQorDQorLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8NCitNRVRIT0RERUYoYm9vbGVhbikgZW5jb2RlX21jdV9odWZmIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQlKQkxPQ0tST1cgKk1DVV9kYXRhKSk7DQorTUVUSE9EREVGKHZvaWQpIGZpbmlzaF9wYXNzX2h1ZmYgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyNpZmRlZiBFTlRST1BZX09QVF9TVVBQT1JURUQNCitNRVRIT0RERUYoYm9vbGVhbikgZW5jb2RlX21jdV9nYXRoZXIgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgSkJMT0NLUk9XICpNQ1VfZGF0YSkpOw0KK01FVEhPRERFRih2b2lkKSBmaW5pc2hfcGFzc19nYXRoZXIgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyNlbmRpZg0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6ZSBmb3IgYSBIdWZmbWFuLWNvbXByZXNzZWQgc2Nhbi4NCisgKiBJZiBnYXRoZXJfc3RhdGlzdGljcyBpcyBUUlVFLCB3ZSBkbyBub3Qgb3V0cHV0IGFueXRoaW5nIGR1cmluZyB0aGUgc2NhbiwNCisgKiBqdXN0IGNvdW50IHRoZSBIdWZmbWFuIHN5bWJvbHMgdXNlZCBhbmQgZ2VuZXJhdGUgSHVmZm1hbiBjb2RlIHRhYmxlcy4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitzdGFydF9wYXNzX2h1ZmYgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBib29sZWFuIGdhdGhlcl9zdGF0aXN0aWNzKQ0KK3sNCisgIGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSA9IChodWZmX2VudHJvcHlfcHRyKSBjaW5mby0+ZW50cm9weTsNCisgIGludCBjaSwgZGN0YmwsIGFjdGJsOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHI7DQorDQorICBpZiAoZ2F0aGVyX3N0YXRpc3RpY3MpIHsNCisjaWZkZWYgRU5UUk9QWV9PUFRfU1VQUE9SVEVEDQorICAgIGVudHJvcHktPnB1Yi5lbmNvZGVfbWN1ID0gZW5jb2RlX21jdV9nYXRoZXI7DQorICAgIGVudHJvcHktPnB1Yi5maW5pc2hfcGFzcyA9IGZpbmlzaF9wYXNzX2dhdGhlcjsNCisjZWxzZQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX05PVF9DT01QSUxFRCk7DQorI2VuZGlmDQorICB9IGVsc2Ugew0KKyAgICBlbnRyb3B5LT5wdWIuZW5jb2RlX21jdSA9IGVuY29kZV9tY3VfaHVmZjsNCisgICAgZW50cm9weS0+cHViLmZpbmlzaF9wYXNzID0gZmluaXNoX3Bhc3NfaHVmZjsNCisgIH0NCisNCisgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKSB7DQorICAgIGNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorICAgIGRjdGJsID0gY29tcHB0ci0+ZGNfdGJsX25vOw0KKyAgICBhY3RibCA9IGNvbXBwdHItPmFjX3RibF9ubzsNCisgICAgaWYgKGdhdGhlcl9zdGF0aXN0aWNzKSB7DQorI2lmZGVmIEVOVFJPUFlfT1BUX1NVUFBPUlRFRA0KKyAgICAgIC8qIENoZWNrIGZvciBpbnZhbGlkIHRhYmxlIGluZGV4ZXMgKi8NCisgICAgICAvKiAobWFrZV9jX2Rlcml2ZWRfdGJsIGRvZXMgdGhpcyBpbiB0aGUgb3RoZXIgcGF0aCkgKi8NCisgICAgICBpZiAoZGN0YmwgPCAwIHx8IGRjdGJsID49IE5VTV9IVUZGX1RCTFMpDQorCUVSUkVYSVQxKGNpbmZvLCBKRVJSX05PX0hVRkZfVEFCTEUsIGRjdGJsKTsNCisgICAgICBpZiAoYWN0YmwgPCAwIHx8IGFjdGJsID49IE5VTV9IVUZGX1RCTFMpDQorCUVSUkVYSVQxKGNpbmZvLCBKRVJSX05PX0hVRkZfVEFCTEUsIGFjdGJsKTsNCisgICAgICAvKiBBbGxvY2F0ZSBhbmQgemVybyB0aGUgc3RhdGlzdGljcyB0YWJsZXMgKi8NCisgICAgICAvKiBOb3RlIHRoYXQganBlZ19nZW5fb3B0aW1hbF90YWJsZSBleHBlY3RzIDI1NyBlbnRyaWVzIGluIGVhY2ggdGFibGUhICovDQorICAgICAgaWYgKGVudHJvcHktPmRjX2NvdW50X3B0cnNbZGN0YmxdID09IE5VTEwpDQorCWVudHJvcHktPmRjX2NvdW50X3B0cnNbZGN0YmxdID0gKGxvbmcgKikNCisJICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQkgICAgICAyNTcgKiBTSVpFT0YobG9uZykpOw0KKyAgICAgIE1FTVpFUk8oZW50cm9weS0+ZGNfY291bnRfcHRyc1tkY3RibF0sIDI1NyAqIFNJWkVPRihsb25nKSk7DQorICAgICAgaWYgKGVudHJvcHktPmFjX2NvdW50X3B0cnNbYWN0YmxdID09IE5VTEwpDQorCWVudHJvcHktPmFjX2NvdW50X3B0cnNbYWN0YmxdID0gKGxvbmcgKikNCisJICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQkgICAgICAyNTcgKiBTSVpFT0YobG9uZykpOw0KKyAgICAgIE1FTVpFUk8oZW50cm9weS0+YWNfY291bnRfcHRyc1thY3RibF0sIDI1NyAqIFNJWkVPRihsb25nKSk7DQorI2VuZGlmDQorICAgIH0gZWxzZSB7DQorICAgICAgLyogQ29tcHV0ZSBkZXJpdmVkIHZhbHVlcyBmb3IgSHVmZm1hbiB0YWJsZXMgKi8NCisgICAgICAvKiBXZSBtYXkgZG8gdGhpcyBtb3JlIHRoYW4gb25jZSBmb3IgYSB0YWJsZSwgYnV0IGl0J3Mgbm90IGV4cGVuc2l2ZSAqLw0KKyAgICAgIGpwZWdfbWFrZV9jX2Rlcml2ZWRfdGJsKGNpbmZvLCBUUlVFLCBkY3RibCwNCisJCQkgICAgICAmIGVudHJvcHktPmRjX2Rlcml2ZWRfdGJsc1tkY3RibF0pOw0KKyAgICAgIGpwZWdfbWFrZV9jX2Rlcml2ZWRfdGJsKGNpbmZvLCBGQUxTRSwgYWN0YmwsDQorCQkJICAgICAgJiBlbnRyb3B5LT5hY19kZXJpdmVkX3RibHNbYWN0YmxdKTsNCisgICAgfQ0KKyAgICAvKiBJbml0aWFsaXplIERDIHByZWRpY3Rpb25zIHRvIDAgKi8NCisgICAgZW50cm9weS0+c2F2ZWQubGFzdF9kY192YWxbY2ldID0gMDsNCisgIH0NCisNCisgIC8qIEluaXRpYWxpemUgYml0IGJ1ZmZlciB0byBlbXB0eSAqLw0KKyAgZW50cm9weS0+c2F2ZWQucHV0X2J1ZmZlciA9IDA7DQorICBlbnRyb3B5LT5zYXZlZC5wdXRfYml0cyA9IDA7DQorDQorICAvKiBJbml0aWFsaXplIHJlc3RhcnQgc3R1ZmYgKi8NCisgIGVudHJvcHktPnJlc3RhcnRzX3RvX2dvID0gY2luZm8tPnJlc3RhcnRfaW50ZXJ2YWw7DQorICBlbnRyb3B5LT5uZXh0X3Jlc3RhcnRfbnVtID0gMDsNCit9DQorDQorDQorLyoNCisgKiBDb21wdXRlIHRoZSBkZXJpdmVkIHZhbHVlcyBmb3IgYSBIdWZmbWFuIHRhYmxlLg0KKyAqIFRoaXMgcm91dGluZSBhbHNvIHBlcmZvcm1zIHNvbWUgdmFsaWRhdGlvbiBjaGVja3Mgb24gdGhlIHRhYmxlLg0KKyAqDQorICogTm90ZSB0aGlzIGlzIGFsc28gdXNlZCBieSBqY3BodWZmLmMuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19tYWtlX2NfZGVyaXZlZF90YmwgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBib29sZWFuIGlzREMsIGludCB0YmxubywNCisJCQkgY19kZXJpdmVkX3RibCAqKiBwZHRibCkNCit7DQorICBKSFVGRl9UQkwgKmh0Ymw7DQorICBjX2Rlcml2ZWRfdGJsICpkdGJsOw0KKyAgaW50IHAsIGksIGwsIGxhc3RwLCBfc2ksIG1heHN5bWJvbDsNCisgIGNoYXIgaHVmZnNpemVbMjU3XTsNCisgIHVuc2lnbmVkIGludCBodWZmY29kZVsyNTddOw0KKyAgdW5zaWduZWQgaW50IGNvZGU7DQorDQorICAvKiBOb3RlIHRoYXQgaHVmZnNpemVbXSBhbmQgaHVmZmNvZGVbXSBhcmUgZmlsbGVkIGluIGNvZGUtbGVuZ3RoIG9yZGVyLA0KKyAgICogcGFyYWxsZWxpbmcgdGhlIG9yZGVyIG9mIHRoZSBzeW1ib2xzIHRoZW1zZWx2ZXMgaW4gaHRibC0+aHVmZnZhbFtdLg0KKyAgICovDQorDQorICAvKiBGaW5kIHRoZSBpbnB1dCBIdWZmbWFuIHRhYmxlICovDQorICBpZiAodGJsbm8gPCAwIHx8IHRibG5vID49IE5VTV9IVUZGX1RCTFMpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX05PX0hVRkZfVEFCTEUsIHRibG5vKTsNCisgIGh0YmwgPQ0KKyAgICBpc0RDID8gY2luZm8tPmRjX2h1ZmZfdGJsX3B0cnNbdGJsbm9dIDogY2luZm8tPmFjX2h1ZmZfdGJsX3B0cnNbdGJsbm9dOw0KKyAgaWYgKGh0YmwgPT0gTlVMTCkNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfTk9fSFVGRl9UQUJMRSwgdGJsbm8pOw0KKw0KKyAgLyogQWxsb2NhdGUgYSB3b3Jrc3BhY2UgaWYgd2UgaGF2ZW4ndCBhbHJlYWR5IGRvbmUgc28uICovDQorICBpZiAoKnBkdGJsID09IE5VTEwpDQorICAgICpwZHRibCA9IChjX2Rlcml2ZWRfdGJsICopDQorICAgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJICBTSVpFT0YoY19kZXJpdmVkX3RibCkpOw0KKyAgZHRibCA9ICpwZHRibDsNCisgIA0KKyAgLyogRmlndXJlIEMuMTogbWFrZSB0YWJsZSBvZiBIdWZmbWFuIGNvZGUgbGVuZ3RoIGZvciBlYWNoIHN5bWJvbCAqLw0KKw0KKyAgcCA9IDA7DQorICBmb3IgKGwgPSAxOyBsIDw9IDE2OyBsKyspIHsNCisgICAgaSA9IChpbnQpIGh0YmwtPmJpdHNbbF07DQorICAgIGlmIChpIDwgMCB8fCBwICsgaSA+IDI1NikJLyogcHJvdGVjdCBhZ2FpbnN0IHRhYmxlIG92ZXJydW4gKi8NCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9IVUZGX1RBQkxFKTsNCisgICAgd2hpbGUgKGktLSkNCisgICAgICBodWZmc2l6ZVtwKytdID0gKGNoYXIpIGw7DQorICB9DQorICBodWZmc2l6ZVtwXSA9IDA7DQorICBsYXN0cCA9IHA7DQorICANCisgIC8qIEZpZ3VyZSBDLjI6IGdlbmVyYXRlIHRoZSBjb2RlcyB0aGVtc2VsdmVzICovDQorICAvKiBXZSBhbHNvIHZhbGlkYXRlIHRoYXQgdGhlIGNvdW50cyByZXByZXNlbnQgYSBsZWdhbCBIdWZmbWFuIGNvZGUgdHJlZS4gKi8NCisNCisgIGNvZGUgPSAwOw0KKyAgX3NpID0gaHVmZnNpemVbMF07DQorICBwID0gMDsNCisgIHdoaWxlIChodWZmc2l6ZVtwXSkgew0KKyAgICB3aGlsZSAoKChpbnQpIGh1ZmZzaXplW3BdKSA9PSBfc2kpIHsNCisgICAgICBodWZmY29kZVtwKytdID0gY29kZTsNCisgICAgICBjb2RlKys7DQorICAgIH0NCisgICAgLyogY29kZSBpcyBub3cgMSBtb3JlIHRoYW4gdGhlIGxhc3QgY29kZSB1c2VkIGZvciBjb2RlbGVuZ3RoIHNpOyBidXQNCisgICAgICogaXQgbXVzdCBzdGlsbCBmaXQgaW4gc2kgYml0cywgc2luY2Ugbm8gY29kZSBpcyBhbGxvd2VkIHRvIGJlIGFsbCBvbmVzLg0KKyAgICAgKi8NCisgICAgaWYgKCgoSU5UMzIpIGNvZGUpID49ICgoKElOVDMyKSAxKSA8PCBfc2kpKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0hVRkZfVEFCTEUpOw0KKyAgICBjb2RlIDw8PSAxOw0KKyAgICBfc2krKzsNCisgIH0NCisgIA0KKyAgLyogRmlndXJlIEMuMzogZ2VuZXJhdGUgZW5jb2RpbmcgdGFibGVzICovDQorICAvKiBUaGVzZSBhcmUgY29kZSBhbmQgc2l6ZSBpbmRleGVkIGJ5IHN5bWJvbCB2YWx1ZSAqLw0KKw0KKyAgLyogU2V0IGFsbCBjb2RlbGVzcyBzeW1ib2xzIHRvIGhhdmUgY29kZSBsZW5ndGggMDsNCisgICAqIHRoaXMgbGV0cyB1cyBkZXRlY3QgZHVwbGljYXRlIFZBTCBlbnRyaWVzIGhlcmUsIGFuZCBsYXRlcg0KKyAgICogYWxsb3dzIGVtaXRfYml0cyB0byBkZXRlY3QgYW55IGF0dGVtcHQgdG8gZW1pdCBzdWNoIHN5bWJvbHMuDQorICAgKi8NCisgIE1FTVpFUk8oZHRibC0+ZWh1ZnNpLCBTSVpFT0YoZHRibC0+ZWh1ZnNpKSk7DQorDQorICAvKiBUaGlzIGlzIGFsc28gYSBjb252ZW5pZW50IHBsYWNlIHRvIGNoZWNrIGZvciBvdXQtb2YtcmFuZ2UNCisgICAqIGFuZCBkdXBsaWNhdGVkIFZBTCBlbnRyaWVzLiAgV2UgYWxsb3cgMC4uMjU1IGZvciBBQyBzeW1ib2xzDQorICAgKiBidXQgb25seSAwLi4xNSBmb3IgREMuICAoV2UgY291bGQgY29uc3RyYWluIHRoZW0gZnVydGhlcg0KKyAgICogYmFzZWQgb24gZGF0YSBkZXB0aCBhbmQgbW9kZSwgYnV0IHRoaXMgc2VlbXMgZW5vdWdoLikNCisgICAqLw0KKyAgbWF4c3ltYm9sID0gaXNEQyA/IDE1IDogMjU1Ow0KKw0KKyAgZm9yIChwID0gMDsgcCA8IGxhc3RwOyBwKyspIHsNCisgICAgaSA9IGh0YmwtPmh1ZmZ2YWxbcF07DQorICAgIGlmIChpIDwgMCB8fCBpID4gbWF4c3ltYm9sIHx8IGR0YmwtPmVodWZzaVtpXSkNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9IVUZGX1RBQkxFKTsNCisgICAgZHRibC0+ZWh1ZmNvW2ldID0gaHVmZmNvZGVbcF07DQorICAgIGR0YmwtPmVodWZzaVtpXSA9IGh1ZmZzaXplW3BdOw0KKyAgfQ0KK30NCisNCisNCisvKiBPdXRwdXR0aW5nIGJ5dGVzIHRvIHRoZSBmaWxlICovDQorDQorLyogRW1pdCBhIGJ5dGUsIHRha2luZyAnYWN0aW9uJyBpZiBtdXN0IHN1c3BlbmQuICovDQorI2RlZmluZSBlbWl0X2J5dGUoc3RhdGUsdmFsLGFjdGlvbikgIFwNCisJeyAqKHN0YXRlKS0+bmV4dF9vdXRwdXRfYnl0ZSsrID0gKEpPQ1RFVCkgKHZhbCk7ICBcDQorCSAgaWYgKC0tKHN0YXRlKS0+ZnJlZV9pbl9idWZmZXIgPT0gMCkgIFwNCisJICAgIGlmICghIGR1bXBfYnVmZmVyKHN0YXRlKSkgIFwNCisJICAgICAgeyBhY3Rpb247IH0gfQ0KKw0KKw0KK0xPQ0FMKGJvb2xlYW4pDQorZHVtcF9idWZmZXIgKHdvcmtpbmdfc3RhdGUgKiBzdGF0ZSkNCisvKiBFbXB0eSB0aGUgb3V0cHV0IGJ1ZmZlcjsgcmV0dXJuIFRSVUUgaWYgc3VjY2Vzc2Z1bCwgRkFMU0UgaWYgbXVzdCBzdXNwZW5kICovDQorew0KKyAgc3RydWN0IGpwZWdfZGVzdGluYXRpb25fbWdyICogZGVzdCA9IHN0YXRlLT5jaW5mby0+ZGVzdDsNCisNCisgIGlmICghICgqZGVzdC0+ZW1wdHlfb3V0cHV0X2J1ZmZlcikgKHN0YXRlLT5jaW5mbykpDQorICAgIHJldHVybiBGQUxTRTsNCisgIC8qIEFmdGVyIGEgc3VjY2Vzc2Z1bCBidWZmZXIgZHVtcCwgbXVzdCByZXNldCBidWZmZXIgcG9pbnRlcnMgKi8NCisgIHN0YXRlLT5uZXh0X291dHB1dF9ieXRlID0gZGVzdC0+bmV4dF9vdXRwdXRfYnl0ZTsNCisgIHN0YXRlLT5mcmVlX2luX2J1ZmZlciA9IGRlc3QtPmZyZWVfaW5fYnVmZmVyOw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKw0KKy8qIE91dHB1dHRpbmcgYml0cyB0byB0aGUgZmlsZSAqLw0KKw0KKy8qIE9ubHkgdGhlIHJpZ2h0IDI0IGJpdHMgb2YgcHV0X2J1ZmZlciBhcmUgdXNlZDsgdGhlIHZhbGlkIGJpdHMgYXJlDQorICogbGVmdC1qdXN0aWZpZWQgaW4gdGhpcyBwYXJ0LiAgQXQgbW9zdCAxNiBiaXRzIGNhbiBiZSBwYXNzZWQgdG8gZW1pdF9iaXRzDQorICogaW4gb25lIGNhbGwsIGFuZCB3ZSBuZXZlciByZXRhaW4gbW9yZSB0aGFuIDcgYml0cyBpbiBwdXRfYnVmZmVyDQorICogYmV0d2VlbiBjYWxscywgc28gMjQgYml0cyBhcmUgc3VmZmljaWVudC4NCisgKi8NCisNCitJTkxJTkUNCitMT0NBTChib29sZWFuKQ0KK2VtaXRfYml0cyAod29ya2luZ19zdGF0ZSAqIHN0YXRlLCB1bnNpZ25lZCBpbnQgY29kZSwgaW50IHNpemUpDQorLyogRW1pdCBzb21lIGJpdHM7IHJldHVybiBUUlVFIGlmIHN1Y2Nlc3NmdWwsIEZBTFNFIGlmIG11c3Qgc3VzcGVuZCAqLw0KK3sNCisgIC8qIFRoaXMgcm91dGluZSBpcyBoZWF2aWx5IHVzZWQsIHNvIGl0J3Mgd29ydGggY29kaW5nIHRpZ2h0bHkuICovDQorICByZWdpc3RlciBJTlQzMiBwdXRfYnVmZmVyID0gKElOVDMyKSBjb2RlOw0KKyAgcmVnaXN0ZXIgaW50IHB1dF9iaXRzID0gc3RhdGUtPmN1ci5wdXRfYml0czsNCisNCisgIC8qIGlmIHNpemUgaXMgMCwgY2FsbGVyIHVzZWQgYW4gaW52YWxpZCBIdWZmbWFuIHRhYmxlIGVudHJ5ICovDQorICBpZiAoc2l6ZSA9PSAwKQ0KKyAgICBFUlJFWElUKHN0YXRlLT5jaW5mbywgSkVSUl9IVUZGX01JU1NJTkdfQ09ERSk7DQorDQorICBwdXRfYnVmZmVyICY9ICgoKElOVDMyKSAxKTw8c2l6ZSkgLSAxOyAvKiBtYXNrIG9mZiBhbnkgZXh0cmEgYml0cyBpbiBjb2RlICovDQorICANCisgIHB1dF9iaXRzICs9IHNpemU7CQkvKiBuZXcgbnVtYmVyIG9mIGJpdHMgaW4gYnVmZmVyICovDQorICANCisgIHB1dF9idWZmZXIgPDw9IDI0IC0gcHV0X2JpdHM7IC8qIGFsaWduIGluY29taW5nIGJpdHMgKi8NCisNCisgIHB1dF9idWZmZXIgfD0gc3RhdGUtPmN1ci5wdXRfYnVmZmVyOyAvKiBhbmQgbWVyZ2Ugd2l0aCBvbGQgYnVmZmVyIGNvbnRlbnRzICovDQorICANCisgIHdoaWxlIChwdXRfYml0cyA+PSA4KSB7DQorICAgIGludCBjID0gKGludCkgKChwdXRfYnVmZmVyID4+IDE2KSAmIDB4RkYpOw0KKyAgICANCisgICAgZW1pdF9ieXRlKHN0YXRlLCBjLCByZXR1cm4gRkFMU0UpOw0KKyAgICBpZiAoYyA9PSAweEZGKSB7CQkvKiBuZWVkIHRvIHN0dWZmIGEgemVybyBieXRlPyAqLw0KKyAgICAgIGVtaXRfYnl0ZShzdGF0ZSwgMCwgcmV0dXJuIEZBTFNFKTsNCisgICAgfQ0KKyAgICBwdXRfYnVmZmVyIDw8PSA4Ow0KKyAgICBwdXRfYml0cyAtPSA4Ow0KKyAgfQ0KKw0KKyAgc3RhdGUtPmN1ci5wdXRfYnVmZmVyID0gcHV0X2J1ZmZlcjsgLyogdXBkYXRlIHN0YXRlIHZhcmlhYmxlcyAqLw0KKyAgc3RhdGUtPmN1ci5wdXRfYml0cyA9IHB1dF9iaXRzOw0KKw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKw0KK0xPQ0FMKGJvb2xlYW4pDQorZmx1c2hfYml0cyAod29ya2luZ19zdGF0ZSAqIHN0YXRlKQ0KK3sNCisgIGlmICghIGVtaXRfYml0cyhzdGF0ZSwgMHg3RiwgNykpIC8qIGZpbGwgYW55IHBhcnRpYWwgYnl0ZSB3aXRoIG9uZXMgKi8NCisgICAgcmV0dXJuIEZBTFNFOw0KKyAgc3RhdGUtPmN1ci5wdXRfYnVmZmVyID0gMDsJLyogYW5kIHJlc2V0IGJpdC1idWZmZXIgdG8gZW1wdHkgKi8NCisgIHN0YXRlLT5jdXIucHV0X2JpdHMgPSAwOw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKw0KKy8qIEVuY29kZSBhIHNpbmdsZSBibG9jaydzIHdvcnRoIG9mIGNvZWZmaWNpZW50cyAqLw0KKw0KK0xPQ0FMKGJvb2xlYW4pDQorZW5jb2RlX29uZV9ibG9jayAod29ya2luZ19zdGF0ZSAqIHN0YXRlLCBKQ09FRlBUUiBibG9jaywgaW50IGxhc3RfZGNfdmFsLA0KKwkJICBjX2Rlcml2ZWRfdGJsICpkY3RibCwgY19kZXJpdmVkX3RibCAqYWN0YmwpDQorew0KKyAgcmVnaXN0ZXIgaW50IHRlbXAsIHRlbXAyOw0KKyAgcmVnaXN0ZXIgaW50IG5iaXRzOw0KKyAgcmVnaXN0ZXIgaW50IGssIHIsIGk7DQorICANCisgIC8qIEVuY29kZSB0aGUgREMgY29lZmZpY2llbnQgZGlmZmVyZW5jZSBwZXIgc2VjdGlvbiBGLjEuMi4xICovDQorICANCisgIHRlbXAgPSB0ZW1wMiA9IGJsb2NrWzBdIC0gbGFzdF9kY192YWw7DQorDQorICBpZiAodGVtcCA8IDApIHsNCisgICAgdGVtcCA9IC10ZW1wOwkJLyogdGVtcCBpcyBhYnMgdmFsdWUgb2YgaW5wdXQgKi8NCisgICAgLyogRm9yIGEgbmVnYXRpdmUgaW5wdXQsIHdhbnQgdGVtcDIgPSBiaXR3aXNlIGNvbXBsZW1lbnQgb2YgYWJzKGlucHV0KSAqLw0KKyAgICAvKiBUaGlzIGNvZGUgYXNzdW1lcyB3ZSBhcmUgb24gYSB0d28ncyBjb21wbGVtZW50IG1hY2hpbmUgKi8NCisgICAgdGVtcDItLTsNCisgIH0NCisgIA0KKyAgLyogRmluZCB0aGUgbnVtYmVyIG9mIGJpdHMgbmVlZGVkIGZvciB0aGUgbWFnbml0dWRlIG9mIHRoZSBjb2VmZmljaWVudCAqLw0KKyAgbmJpdHMgPSAwOw0KKyAgd2hpbGUgKHRlbXApIHsNCisgICAgbmJpdHMrKzsNCisgICAgdGVtcCA+Pj0gMTsNCisgIH0NCisgIC8qIENoZWNrIGZvciBvdXQtb2YtcmFuZ2UgY29lZmZpY2llbnQgdmFsdWVzLg0KKyAgICogU2luY2Ugd2UncmUgZW5jb2RpbmcgYSBkaWZmZXJlbmNlLCB0aGUgcmFuZ2UgbGltaXQgaXMgdHdpY2UgYXMgbXVjaC4NCisgICAqLw0KKyAgaWYgKG5iaXRzID4gTUFYX0NPRUZfQklUUysxKQ0KKyAgICBFUlJFWElUKHN0YXRlLT5jaW5mbywgSkVSUl9CQURfRENUX0NPRUYpOw0KKyAgDQorICAvKiBFbWl0IHRoZSBIdWZmbWFuLWNvZGVkIHN5bWJvbCBmb3IgdGhlIG51bWJlciBvZiBiaXRzICovDQorICBpZiAoISBlbWl0X2JpdHMoc3RhdGUsIGRjdGJsLT5laHVmY29bbmJpdHNdLCBkY3RibC0+ZWh1ZnNpW25iaXRzXSkpDQorICAgIHJldHVybiBGQUxTRTsNCisNCisgIC8qIEVtaXQgdGhhdCBudW1iZXIgb2YgYml0cyBvZiB0aGUgdmFsdWUsIGlmIHBvc2l0aXZlLCAqLw0KKyAgLyogb3IgdGhlIGNvbXBsZW1lbnQgb2YgaXRzIG1hZ25pdHVkZSwgaWYgbmVnYXRpdmUuICovDQorICBpZiAobmJpdHMpCQkJLyogZW1pdF9iaXRzIHJlamVjdHMgY2FsbHMgd2l0aCBzaXplIDAgKi8NCisgICAgaWYgKCEgZW1pdF9iaXRzKHN0YXRlLCAodW5zaWduZWQgaW50KSB0ZW1wMiwgbmJpdHMpKQ0KKyAgICAgIHJldHVybiBGQUxTRTsNCisNCisgIC8qIEVuY29kZSB0aGUgQUMgY29lZmZpY2llbnRzIHBlciBzZWN0aW9uIEYuMS4yLjIgKi8NCisgIA0KKyAgciA9IDA7CQkJLyogciA9IHJ1biBsZW5ndGggb2YgemVyb3MgKi8NCisgIA0KKyAgZm9yIChrID0gMTsgayA8IERDVFNJWkUyOyBrKyspIHsNCisgICAgaWYgKCh0ZW1wID0gYmxvY2tbanBlZ19uYXR1cmFsX29yZGVyW2tdXSkgPT0gMCkgew0KKyAgICAgIHIrKzsNCisgICAgfSBlbHNlIHsNCisgICAgICAvKiBpZiBydW4gbGVuZ3RoID4gMTUsIG11c3QgZW1pdCBzcGVjaWFsIHJ1bi1sZW5ndGgtMTYgY29kZXMgKDB4RjApICovDQorICAgICAgd2hpbGUgKHIgPiAxNSkgew0KKwlpZiAoISBlbWl0X2JpdHMoc3RhdGUsIGFjdGJsLT5laHVmY29bMHhGMF0sIGFjdGJsLT5laHVmc2lbMHhGMF0pKQ0KKwkgIHJldHVybiBGQUxTRTsNCisJciAtPSAxNjsNCisgICAgICB9DQorDQorICAgICAgdGVtcDIgPSB0ZW1wOw0KKyAgICAgIGlmICh0ZW1wIDwgMCkgew0KKwl0ZW1wID0gLXRlbXA7CQkvKiB0ZW1wIGlzIGFicyB2YWx1ZSBvZiBpbnB1dCAqLw0KKwkvKiBUaGlzIGNvZGUgYXNzdW1lcyB3ZSBhcmUgb24gYSB0d28ncyBjb21wbGVtZW50IG1hY2hpbmUgKi8NCisJdGVtcDItLTsNCisgICAgICB9DQorICAgICAgDQorICAgICAgLyogRmluZCB0aGUgbnVtYmVyIG9mIGJpdHMgbmVlZGVkIGZvciB0aGUgbWFnbml0dWRlIG9mIHRoZSBjb2VmZmljaWVudCAqLw0KKyAgICAgIG5iaXRzID0gMTsJCS8qIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIDEgYml0ICovDQorICAgICAgd2hpbGUgKCh0ZW1wID4+PSAxKSkNCisJbmJpdHMrKzsNCisgICAgICAvKiBDaGVjayBmb3Igb3V0LW9mLXJhbmdlIGNvZWZmaWNpZW50IHZhbHVlcyAqLw0KKyAgICAgIGlmIChuYml0cyA+IE1BWF9DT0VGX0JJVFMpDQorCUVSUkVYSVQoc3RhdGUtPmNpbmZvLCBKRVJSX0JBRF9EQ1RfQ09FRik7DQorICAgICAgDQorICAgICAgLyogRW1pdCBIdWZmbWFuIHN5bWJvbCBmb3IgcnVuIGxlbmd0aCAvIG51bWJlciBvZiBiaXRzICovDQorICAgICAgaSA9IChyIDw8IDQpICsgbmJpdHM7DQorICAgICAgaWYgKCEgZW1pdF9iaXRzKHN0YXRlLCBhY3RibC0+ZWh1ZmNvW2ldLCBhY3RibC0+ZWh1ZnNpW2ldKSkNCisJcmV0dXJuIEZBTFNFOw0KKw0KKyAgICAgIC8qIEVtaXQgdGhhdCBudW1iZXIgb2YgYml0cyBvZiB0aGUgdmFsdWUsIGlmIHBvc2l0aXZlLCAqLw0KKyAgICAgIC8qIG9yIHRoZSBjb21wbGVtZW50IG9mIGl0cyBtYWduaXR1ZGUsIGlmIG5lZ2F0aXZlLiAqLw0KKyAgICAgIGlmICghIGVtaXRfYml0cyhzdGF0ZSwgKHVuc2lnbmVkIGludCkgdGVtcDIsIG5iaXRzKSkNCisJcmV0dXJuIEZBTFNFOw0KKyAgICAgIA0KKyAgICAgIHIgPSAwOw0KKyAgICB9DQorICB9DQorDQorICAvKiBJZiB0aGUgbGFzdCBjb2VmKHMpIHdlcmUgemVybywgZW1pdCBhbiBlbmQtb2YtYmxvY2sgY29kZSAqLw0KKyAgaWYgKHIgPiAwKQ0KKyAgICBpZiAoISBlbWl0X2JpdHMoc3RhdGUsIGFjdGJsLT5laHVmY29bMF0sIGFjdGJsLT5laHVmc2lbMF0pKQ0KKyAgICAgIHJldHVybiBGQUxTRTsNCisNCisgIHJldHVybiBUUlVFOw0KK30NCisNCisNCisvKg0KKyAqIEVtaXQgYSByZXN0YXJ0IG1hcmtlciAmIHJlc3luY2hyb25pemUgcHJlZGljdGlvbnMuDQorICovDQorDQorTE9DQUwoYm9vbGVhbikNCitlbWl0X3Jlc3RhcnQgKHdvcmtpbmdfc3RhdGUgKiBzdGF0ZSwgaW50IHJlc3RhcnRfbnVtKQ0KK3sNCisgIGludCBjaTsNCisNCisgIGlmICghIGZsdXNoX2JpdHMoc3RhdGUpKQ0KKyAgICByZXR1cm4gRkFMU0U7DQorDQorICBlbWl0X2J5dGUoc3RhdGUsIDB4RkYsIHJldHVybiBGQUxTRSk7DQorICBlbWl0X2J5dGUoc3RhdGUsIEpQRUdfUlNUMCArIHJlc3RhcnRfbnVtLCByZXR1cm4gRkFMU0UpOw0KKw0KKyAgLyogUmUtaW5pdGlhbGl6ZSBEQyBwcmVkaWN0aW9ucyB0byAwICovDQorICBmb3IgKGNpID0gMDsgY2kgPCBzdGF0ZS0+Y2luZm8tPmNvbXBzX2luX3NjYW47IGNpKyspDQorICAgIHN0YXRlLT5jdXIubGFzdF9kY192YWxbY2ldID0gMDsNCisNCisgIC8qIFRoZSByZXN0YXJ0IGNvdW50ZXIgaXMgbm90IHVwZGF0ZWQgdW50aWwgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSBNQ1UuICovDQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBFbmNvZGUgYW5kIG91dHB1dCBvbmUgTUNVJ3Mgd29ydGggb2YgSHVmZm1hbi1jb21wcmVzc2VkIGNvZWZmaWNpZW50cy4NCisgKi8NCisNCitNRVRIT0RERUYoYm9vbGVhbikNCitlbmNvZGVfbWN1X2h1ZmYgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKQkxPQ0tST1cgKk1DVV9kYXRhKQ0KK3sNCisgIGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSA9IChodWZmX2VudHJvcHlfcHRyKSBjaW5mby0+ZW50cm9weTsNCisgIHdvcmtpbmdfc3RhdGUgc3RhdGU7DQorICBpbnQgYmxrbiwgY2k7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisNCisgIC8qIExvYWQgdXAgd29ya2luZyBzdGF0ZSAqLw0KKyAgc3RhdGUubmV4dF9vdXRwdXRfYnl0ZSA9IGNpbmZvLT5kZXN0LT5uZXh0X291dHB1dF9ieXRlOw0KKyAgc3RhdGUuZnJlZV9pbl9idWZmZXIgPSBjaW5mby0+ZGVzdC0+ZnJlZV9pbl9idWZmZXI7DQorICBBU1NJR05fU1RBVEUoc3RhdGUuY3VyLCBlbnRyb3B5LT5zYXZlZCk7DQorICBzdGF0ZS5jaW5mbyA9IGNpbmZvOw0KKw0KKyAgLyogRW1pdCByZXN0YXJ0IG1hcmtlciBpZiBuZWVkZWQgKi8NCisgIGlmIChjaW5mby0+cmVzdGFydF9pbnRlcnZhbCkgew0KKyAgICBpZiAoZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPT0gMCkNCisgICAgICBpZiAoISBlbWl0X3Jlc3RhcnQoJnN0YXRlLCBlbnRyb3B5LT5uZXh0X3Jlc3RhcnRfbnVtKSkNCisJcmV0dXJuIEZBTFNFOw0KKyAgfQ0KKw0KKyAgLyogRW5jb2RlIHRoZSBNQ1UgZGF0YSBibG9ja3MgKi8NCisgIGZvciAoYmxrbiA9IDA7IGJsa24gPCBjaW5mby0+YmxvY2tzX2luX01DVTsgYmxrbisrKSB7DQorICAgIGNpID0gY2luZm8tPk1DVV9tZW1iZXJzaGlwW2Jsa25dOw0KKyAgICBjb21wcHRyID0gY2luZm8tPmN1cl9jb21wX2luZm9bY2ldOw0KKyAgICBpZiAoISBlbmNvZGVfb25lX2Jsb2NrKCZzdGF0ZSwNCisJCQkgICBNQ1VfZGF0YVtibGtuXVswXSwgc3RhdGUuY3VyLmxhc3RfZGNfdmFsW2NpXSwNCisJCQkgICBlbnRyb3B5LT5kY19kZXJpdmVkX3RibHNbY29tcHB0ci0+ZGNfdGJsX25vXSwNCisJCQkgICBlbnRyb3B5LT5hY19kZXJpdmVkX3RibHNbY29tcHB0ci0+YWNfdGJsX25vXSkpDQorICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAvKiBVcGRhdGUgbGFzdF9kY192YWwgKi8NCisgICAgc3RhdGUuY3VyLmxhc3RfZGNfdmFsW2NpXSA9IE1DVV9kYXRhW2Jsa25dWzBdWzBdOw0KKyAgfQ0KKw0KKyAgLyogQ29tcGxldGVkIE1DVSwgc28gdXBkYXRlIHN0YXRlICovDQorICBjaW5mby0+ZGVzdC0+bmV4dF9vdXRwdXRfYnl0ZSA9IHN0YXRlLm5leHRfb3V0cHV0X2J5dGU7DQorICBjaW5mby0+ZGVzdC0+ZnJlZV9pbl9idWZmZXIgPSBzdGF0ZS5mcmVlX2luX2J1ZmZlcjsNCisgIEFTU0lHTl9TVEFURShlbnRyb3B5LT5zYXZlZCwgc3RhdGUuY3VyKTsNCisNCisgIC8qIFVwZGF0ZSByZXN0YXJ0LWludGVydmFsIHN0YXRlIHRvbyAqLw0KKyAgaWYgKGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsKSB7DQorICAgIGlmIChlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9PSAwKSB7DQorICAgICAgZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPSBjaW5mby0+cmVzdGFydF9pbnRlcnZhbDsNCisgICAgICBlbnRyb3B5LT5uZXh0X3Jlc3RhcnRfbnVtKys7DQorICAgICAgZW50cm9weS0+bmV4dF9yZXN0YXJ0X251bSAmPSA3Ow0KKyAgICB9DQorICAgIGVudHJvcHktPnJlc3RhcnRzX3RvX2dvLS07DQorICB9DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBGaW5pc2ggdXAgYXQgdGhlIGVuZCBvZiBhIEh1ZmZtYW4tY29tcHJlc3NlZCBzY2FuLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2ZpbmlzaF9wYXNzX2h1ZmYgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSA9IChodWZmX2VudHJvcHlfcHRyKSBjaW5mby0+ZW50cm9weTsNCisgIHdvcmtpbmdfc3RhdGUgc3RhdGU7DQorDQorICAvKiBMb2FkIHVwIHdvcmtpbmcgc3RhdGUgLi4uIGZsdXNoX2JpdHMgbmVlZHMgaXQgKi8NCisgIHN0YXRlLm5leHRfb3V0cHV0X2J5dGUgPSBjaW5mby0+ZGVzdC0+bmV4dF9vdXRwdXRfYnl0ZTsNCisgIHN0YXRlLmZyZWVfaW5fYnVmZmVyID0gY2luZm8tPmRlc3QtPmZyZWVfaW5fYnVmZmVyOw0KKyAgQVNTSUdOX1NUQVRFKHN0YXRlLmN1ciwgZW50cm9weS0+c2F2ZWQpOw0KKyAgc3RhdGUuY2luZm8gPSBjaW5mbzsNCisNCisgIC8qIEZsdXNoIG91dCB0aGUgbGFzdCBkYXRhICovDQorICBpZiAoISBmbHVzaF9iaXRzKCZzdGF0ZSkpDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQ0FOVF9TVVNQRU5EKTsNCisNCisgIC8qIFVwZGF0ZSBzdGF0ZSAqLw0KKyAgY2luZm8tPmRlc3QtPm5leHRfb3V0cHV0X2J5dGUgPSBzdGF0ZS5uZXh0X291dHB1dF9ieXRlOw0KKyAgY2luZm8tPmRlc3QtPmZyZWVfaW5fYnVmZmVyID0gc3RhdGUuZnJlZV9pbl9idWZmZXI7DQorICBBU1NJR05fU1RBVEUoZW50cm9weS0+c2F2ZWQsIHN0YXRlLmN1cik7DQorfQ0KKw0KKw0KKy8qDQorICogSHVmZm1hbiBjb2Rpbmcgb3B0aW1pemF0aW9uLg0KKyAqDQorICogV2UgZmlyc3Qgc2NhbiB0aGUgc3VwcGxpZWQgZGF0YSBhbmQgY291bnQgdGhlIG51bWJlciBvZiB1c2VzIG9mIGVhY2ggc3ltYm9sDQorICogdGhhdCBpcyB0byBiZSBIdWZmbWFuLWNvZGVkLiAoVGhpcyBwcm9jZXNzIE1VU1QgYWdyZWUgd2l0aCB0aGUgY29kZSBhYm92ZS4pDQorICogVGhlbiB3ZSBidWlsZCBhIEh1ZmZtYW4gY29kaW5nIHRyZWUgZm9yIHRoZSBvYnNlcnZlZCBjb3VudHMuDQorICogU3ltYm9scyB3aGljaCBhcmUgbm90IG5lZWRlZCBhdCBhbGwgZm9yIHRoZSBwYXJ0aWN1bGFyIGltYWdlIGFyZSBub3QNCisgKiBhc3NpZ25lZCBhbnkgY29kZSwgd2hpY2ggc2F2ZXMgc3BhY2UgaW4gdGhlIERIVCBtYXJrZXIgYXMgd2VsbCBhcyBpbg0KKyAqIHRoZSBjb21wcmVzc2VkIGRhdGEuDQorICovDQorDQorI2lmZGVmIEVOVFJPUFlfT1BUX1NVUFBPUlRFRA0KKw0KKw0KKy8qIFByb2Nlc3MgYSBzaW5nbGUgYmxvY2sncyB3b3J0aCBvZiBjb2VmZmljaWVudHMgKi8NCisNCitMT0NBTCh2b2lkKQ0KK2h0ZXN0X29uZV9ibG9jayAoal9jb21wcmVzc19wdHIgY2luZm8sIEpDT0VGUFRSIGJsb2NrLCBpbnQgbGFzdF9kY192YWwsDQorCQkgbG9uZyBkY19jb3VudHNbXSwgbG9uZyBhY19jb3VudHNbXSkNCit7DQorICByZWdpc3RlciBpbnQgdGVtcDsNCisgIHJlZ2lzdGVyIGludCBuYml0czsNCisgIHJlZ2lzdGVyIGludCBrLCByOw0KKyAgDQorICAvKiBFbmNvZGUgdGhlIERDIGNvZWZmaWNpZW50IGRpZmZlcmVuY2UgcGVyIHNlY3Rpb24gRi4xLjIuMSAqLw0KKyAgDQorICB0ZW1wID0gYmxvY2tbMF0gLSBsYXN0X2RjX3ZhbDsNCisgIGlmICh0ZW1wIDwgMCkNCisgICAgdGVtcCA9IC10ZW1wOw0KKyAgDQorICAvKiBGaW5kIHRoZSBudW1iZXIgb2YgYml0cyBuZWVkZWQgZm9yIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGNvZWZmaWNpZW50ICovDQorICBuYml0cyA9IDA7DQorICB3aGlsZSAodGVtcCkgew0KKyAgICBuYml0cysrOw0KKyAgICB0ZW1wID4+PSAxOw0KKyAgfQ0KKyAgLyogQ2hlY2sgZm9yIG91dC1vZi1yYW5nZSBjb2VmZmljaWVudCB2YWx1ZXMuDQorICAgKiBTaW5jZSB3ZSdyZSBlbmNvZGluZyBhIGRpZmZlcmVuY2UsIHRoZSByYW5nZSBsaW1pdCBpcyB0d2ljZSBhcyBtdWNoLg0KKyAgICovDQorICBpZiAobmJpdHMgPiBNQVhfQ09FRl9CSVRTKzEpDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0RDVF9DT0VGKTsNCisNCisgIC8qIENvdW50IHRoZSBIdWZmbWFuIHN5bWJvbCBmb3IgdGhlIG51bWJlciBvZiBiaXRzICovDQorICBkY19jb3VudHNbbmJpdHNdKys7DQorICANCisgIC8qIEVuY29kZSB0aGUgQUMgY29lZmZpY2llbnRzIHBlciBzZWN0aW9uIEYuMS4yLjIgKi8NCisgIA0KKyAgciA9IDA7CQkJLyogciA9IHJ1biBsZW5ndGggb2YgemVyb3MgKi8NCisgIA0KKyAgZm9yIChrID0gMTsgayA8IERDVFNJWkUyOyBrKyspIHsNCisgICAgaWYgKCh0ZW1wID0gYmxvY2tbanBlZ19uYXR1cmFsX29yZGVyW2tdXSkgPT0gMCkgew0KKyAgICAgIHIrKzsNCisgICAgfSBlbHNlIHsNCisgICAgICAvKiBpZiBydW4gbGVuZ3RoID4gMTUsIG11c3QgZW1pdCBzcGVjaWFsIHJ1bi1sZW5ndGgtMTYgY29kZXMgKDB4RjApICovDQorICAgICAgd2hpbGUgKHIgPiAxNSkgew0KKwlhY19jb3VudHNbMHhGMF0rKzsNCisJciAtPSAxNjsNCisgICAgICB9DQorICAgICAgDQorICAgICAgLyogRmluZCB0aGUgbnVtYmVyIG9mIGJpdHMgbmVlZGVkIGZvciB0aGUgbWFnbml0dWRlIG9mIHRoZSBjb2VmZmljaWVudCAqLw0KKyAgICAgIGlmICh0ZW1wIDwgMCkNCisJdGVtcCA9IC10ZW1wOw0KKyAgICAgIA0KKyAgICAgIC8qIEZpbmQgdGhlIG51bWJlciBvZiBiaXRzIG5lZWRlZCBmb3IgdGhlIG1hZ25pdHVkZSBvZiB0aGUgY29lZmZpY2llbnQgKi8NCisgICAgICBuYml0cyA9IDE7CQkvKiB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSAxIGJpdCAqLw0KKyAgICAgIHdoaWxlICgodGVtcCA+Pj0gMSkpDQorCW5iaXRzKys7DQorICAgICAgLyogQ2hlY2sgZm9yIG91dC1vZi1yYW5nZSBjb2VmZmljaWVudCB2YWx1ZXMgKi8NCisgICAgICBpZiAobmJpdHMgPiBNQVhfQ09FRl9CSVRTKQ0KKwlFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9EQ1RfQ09FRik7DQorICAgICAgDQorICAgICAgLyogQ291bnQgSHVmZm1hbiBzeW1ib2wgZm9yIHJ1biBsZW5ndGggLyBudW1iZXIgb2YgYml0cyAqLw0KKyAgICAgIGFjX2NvdW50c1sociA8PCA0KSArIG5iaXRzXSsrOw0KKyAgICAgIA0KKyAgICAgIHIgPSAwOw0KKyAgICB9DQorICB9DQorDQorICAvKiBJZiB0aGUgbGFzdCBjb2VmKHMpIHdlcmUgemVybywgZW1pdCBhbiBlbmQtb2YtYmxvY2sgY29kZSAqLw0KKyAgaWYgKHIgPiAwKQ0KKyAgICBhY19jb3VudHNbMF0rKzsNCit9DQorDQorDQorLyoNCisgKiBUcmlhbC1lbmNvZGUgb25lIE1DVSdzIHdvcnRoIG9mIEh1ZmZtYW4tY29tcHJlc3NlZCBjb2VmZmljaWVudHMuDQorICogTm8gZGF0YSBpcyBhY3R1YWxseSBvdXRwdXQsIHNvIG5vIHN1c3BlbnNpb24gcmV0dXJuIGlzIHBvc3NpYmxlLg0KKyAqLw0KKw0KK01FVEhPRERFRihib29sZWFuKQ0KK2VuY29kZV9tY3VfZ2F0aGVyIChqX2NvbXByZXNzX3B0ciBjaW5mbywgSkJMT0NLUk9XICpNQ1VfZGF0YSkNCit7DQorICBodWZmX2VudHJvcHlfcHRyIGVudHJvcHkgPSAoaHVmZl9lbnRyb3B5X3B0cikgY2luZm8tPmVudHJvcHk7DQorICBpbnQgYmxrbiwgY2k7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisNCisgIC8qIFRha2UgY2FyZSBvZiByZXN0YXJ0IGludGVydmFscyBpZiBuZWVkZWQgKi8NCisgIGlmIChjaW5mby0+cmVzdGFydF9pbnRlcnZhbCkgew0KKyAgICBpZiAoZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPT0gMCkgew0KKyAgICAgIC8qIFJlLWluaXRpYWxpemUgREMgcHJlZGljdGlvbnMgdG8gMCAqLw0KKyAgICAgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKQ0KKwllbnRyb3B5LT5zYXZlZC5sYXN0X2RjX3ZhbFtjaV0gPSAwOw0KKyAgICAgIC8qIFVwZGF0ZSByZXN0YXJ0IHN0YXRlICovDQorICAgICAgZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPSBjaW5mby0+cmVzdGFydF9pbnRlcnZhbDsNCisgICAgfQ0KKyAgICBlbnRyb3B5LT5yZXN0YXJ0c190b19nby0tOw0KKyAgfQ0KKw0KKyAgZm9yIChibGtuID0gMDsgYmxrbiA8IGNpbmZvLT5ibG9ja3NfaW5fTUNVOyBibGtuKyspIHsNCisgICAgY2kgPSBjaW5mby0+TUNVX21lbWJlcnNoaXBbYmxrbl07DQorICAgIGNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorICAgIGh0ZXN0X29uZV9ibG9jayhjaW5mbywgTUNVX2RhdGFbYmxrbl1bMF0sIGVudHJvcHktPnNhdmVkLmxhc3RfZGNfdmFsW2NpXSwNCisJCSAgICBlbnRyb3B5LT5kY19jb3VudF9wdHJzW2NvbXBwdHItPmRjX3RibF9ub10sDQorCQkgICAgZW50cm9weS0+YWNfY291bnRfcHRyc1tjb21wcHRyLT5hY190Ymxfbm9dKTsNCisgICAgZW50cm9weS0+c2F2ZWQubGFzdF9kY192YWxbY2ldID0gTUNVX2RhdGFbYmxrbl1bMF1bMF07DQorICB9DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBHZW5lcmF0ZSB0aGUgYmVzdCBIdWZmbWFuIGNvZGUgdGFibGUgZm9yIHRoZSBnaXZlbiBjb3VudHMsIGZpbGwgaHRibC4NCisgKiBOb3RlIHRoaXMgaXMgYWxzbyB1c2VkIGJ5IGpjcGh1ZmYuYy4NCisgKg0KKyAqIFRoZSBKUEVHIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgbm8gc3ltYm9sIGJlIGFzc2lnbmVkIGEgY29kZXdvcmQgb2YgYWxsDQorICogb25lIGJpdHMgKHNvIHRoYXQgcGFkZGluZyBiaXRzIGFkZGVkIGF0IHRoZSBlbmQgb2YgYSBjb21wcmVzc2VkIHNlZ21lbnQNCisgKiBjYW4ndCBsb29rIGxpa2UgYSB2YWxpZCBjb2RlKS4gIEJlY2F1c2Ugb2YgdGhlIGNhbm9uaWNhbCBvcmRlcmluZyBvZg0KKyAqIGNvZGV3b3JkcywgdGhpcyBqdXN0IG1lYW5zIHRoYXQgdGhlcmUgbXVzdCBiZSBhbiB1bnVzZWQgc2xvdCBpbiB0aGUNCisgKiBsb25nZXN0IGNvZGV3b3JkIGxlbmd0aCBjYXRlZ29yeS4gIFNlY3Rpb24gSy4yIG9mIHRoZSBKUEVHIHNwZWMgc3VnZ2VzdHMNCisgKiByZXNlcnZpbmcgc3VjaCBhIHNsb3QgYnkgcHJldGVuZGluZyB0aGF0IHN5bWJvbCAyNTYgaXMgYSB2YWxpZCBzeW1ib2wNCisgKiB3aXRoIGNvdW50IDEuICBJbiB0aGVvcnkgdGhhdCdzIG5vdCBvcHRpbWFsOyBnaXZpbmcgaXQgY291bnQgemVybyBidXQNCisgKiBpbmNsdWRpbmcgaXQgaW4gdGhlIHN5bWJvbCBzZXQgYW55d2F5IHNob3VsZCBnaXZlIGEgYmV0dGVyIEh1ZmZtYW4gY29kZS4NCisgKiBCdXQgdGhlIHRoZW9yZXRpY2FsbHkgYmV0dGVyIGNvZGUgYWN0dWFsbHkgc2VlbXMgdG8gY29tZSBvdXQgd29yc2UgaW4NCisgKiBwcmFjdGljZSwgYmVjYXVzZSBpdCBwcm9kdWNlcyBtb3JlIGFsbC1vbmVzIGJ5dGVzICh3aGljaCBpbmN1ciBzdHVmZmVkDQorICogemVybyBieXRlcyBpbiB0aGUgZmluYWwgZmlsZSkuICBJbiBhbnkgY2FzZSB0aGUgZGlmZmVyZW5jZSBpcyB0aW55Lg0KKyAqDQorICogVGhlIEpQRUcgc3RhbmRhcmQgcmVxdWlyZXMgSHVmZm1hbiBjb2RlcyB0byBiZSBubyBtb3JlIHRoYW4gMTYgYml0cyBsb25nLg0KKyAqIElmIHNvbWUgc3ltYm9scyBoYXZlIGEgdmVyeSBzbWFsbCBidXQgbm9uemVybyBwcm9iYWJpbGl0eSwgdGhlIEh1ZmZtYW4gdHJlZQ0KKyAqIG11c3QgYmUgYWRqdXN0ZWQgdG8gbWVldCB0aGUgY29kZSBsZW5ndGggcmVzdHJpY3Rpb24uICBXZSBjdXJyZW50bHkgdXNlDQorICogdGhlIGFkanVzdG1lbnQgbWV0aG9kIHN1Z2dlc3RlZCBpbiBKUEVHIHNlY3Rpb24gSy4yLiAgVGhpcyBtZXRob2QgaXMgKm5vdCoNCisgKiBvcHRpbWFsOyBpdCBtYXkgbm90IGNob29zZSB0aGUgYmVzdCBwb3NzaWJsZSBsaW1pdGVkLWxlbmd0aCBjb2RlLiAgQnV0DQorICogdHlwaWNhbGx5IG9ubHkgdmVyeS1sb3ctZnJlcXVlbmN5IHN5bWJvbHMgd2lsbCBiZSBnaXZlbiBsZXNzLXRoYW4tb3B0aW1hbA0KKyAqIGxlbmd0aHMsIHNvIHRoZSBjb2RlIGlzIGFsbW9zdCBvcHRpbWFsLiAgRXhwZXJpbWVudGFsIGNvbXBhcmlzb25zIGFnYWluc3QNCisgKiBhbiBvcHRpbWFsIGxpbWl0ZWQtbGVuZ3RoLWNvZGUgYWxnb3JpdGhtIGluZGljYXRlIHRoYXQgdGhlIGRpZmZlcmVuY2UgaXMNCisgKiBtaWNyb3Njb3BpYyAtLS0gdXN1YWxseSBsZXNzIHRoYW4gYSBodW5kcmVkdGggb2YgYSBwZXJjZW50IG9mIHRvdGFsIHNpemUuDQorICogU28gdGhlIGV4dHJhIGNvbXBsZXhpdHkgb2YgYW4gb3B0aW1hbCBhbGdvcml0aG0gZG9lc24ndCBzZWVtIHdvcnRod2hpbGUuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19nZW5fb3B0aW1hbF90YWJsZSAoal9jb21wcmVzc19wdHIgY2luZm8sIEpIVUZGX1RCTCAqIGh0YmwsIGxvbmcgZnJlcVtdKQ0KK3sNCisjZGVmaW5lIE1BWF9DTEVOIDMyCQkvKiBhc3N1bWVkIG1heGltdW0gaW5pdGlhbCBjb2RlIGxlbmd0aCAqLw0KKyAgVUlOVDggYml0c1tNQVhfQ0xFTisxXTsJLyogYml0c1trXSA9ICMgb2Ygc3ltYm9scyB3aXRoIGNvZGUgbGVuZ3RoIGsgKi8NCisgIGludCBjb2Rlc2l6ZVsyNTddOwkJLyogY29kZXNpemVba10gPSBjb2RlIGxlbmd0aCBvZiBzeW1ib2wgayAqLw0KKyAgaW50IG90aGVyc1syNTddOwkJLyogbmV4dCBzeW1ib2wgaW4gY3VycmVudCBicmFuY2ggb2YgdHJlZSAqLw0KKyAgaW50IGMxLCBjMjsNCisgIGludCBwLCBpLCBqOw0KKyAgbG9uZyB2Ow0KKw0KKyAgLyogVGhpcyBhbGdvcml0aG0gaXMgZXhwbGFpbmVkIGluIHNlY3Rpb24gSy4yIG9mIHRoZSBKUEVHIHN0YW5kYXJkICovDQorDQorICBNRU1aRVJPKGJpdHMsIFNJWkVPRihiaXRzKSk7DQorICBNRU1aRVJPKGNvZGVzaXplLCBTSVpFT0YoY29kZXNpemUpKTsNCisgIGZvciAoaSA9IDA7IGkgPCAyNTc7IGkrKykNCisgICAgb3RoZXJzW2ldID0gLTE7CQkvKiBpbml0IGxpbmtzIHRvIGVtcHR5ICovDQorICANCisgIGZyZXFbMjU2XSA9IDE7CQkvKiBtYWtlIHN1cmUgMjU2IGhhcyBhIG5vbnplcm8gY291bnQgKi8NCisgIC8qIEluY2x1ZGluZyB0aGUgcHNldWRvLXN5bWJvbCAyNTYgaW4gdGhlIEh1ZmZtYW4gcHJvY2VkdXJlIGd1YXJhbnRlZXMNCisgICAqIHRoYXQgbm8gcmVhbCBzeW1ib2wgaXMgZ2l2ZW4gY29kZS12YWx1ZSBvZiBhbGwgb25lcywgYmVjYXVzZSAyNTYNCisgICAqIHdpbGwgYmUgcGxhY2VkIGxhc3QgaW4gdGhlIGxhcmdlc3QgY29kZXdvcmQgY2F0ZWdvcnkuDQorICAgKi8NCisNCisgIC8qIEh1ZmZtYW4ncyBiYXNpYyBhbGdvcml0aG0gdG8gYXNzaWduIG9wdGltYWwgY29kZSBsZW5ndGhzIHRvIHN5bWJvbHMgKi8NCisNCisgIGZvciAoOzspIHsNCisgICAgLyogRmluZCB0aGUgc21hbGxlc3Qgbm9uemVybyBmcmVxdWVuY3ksIHNldCBjMSA9IGl0cyBzeW1ib2wgKi8NCisgICAgLyogSW4gY2FzZSBvZiB0aWVzLCB0YWtlIHRoZSBsYXJnZXIgc3ltYm9sIG51bWJlciAqLw0KKyAgICBjMSA9IC0xOw0KKyAgICB2ID0gMTAwMDAwMDAwMEw7DQorICAgIGZvciAoaSA9IDA7IGkgPD0gMjU2OyBpKyspIHsNCisgICAgICBpZiAoZnJlcVtpXSAmJiBmcmVxW2ldIDw9IHYpIHsNCisJdiA9IGZyZXFbaV07DQorCWMxID0gaTsNCisgICAgICB9DQorICAgIH0NCisNCisgICAgLyogRmluZCB0aGUgbmV4dCBzbWFsbGVzdCBub256ZXJvIGZyZXF1ZW5jeSwgc2V0IGMyID0gaXRzIHN5bWJvbCAqLw0KKyAgICAvKiBJbiBjYXNlIG9mIHRpZXMsIHRha2UgdGhlIGxhcmdlciBzeW1ib2wgbnVtYmVyICovDQorICAgIGMyID0gLTE7DQorICAgIHYgPSAxMDAwMDAwMDAwTDsNCisgICAgZm9yIChpID0gMDsgaSA8PSAyNTY7IGkrKykgew0KKyAgICAgIGlmIChmcmVxW2ldICYmIGZyZXFbaV0gPD0gdiAmJiBpICE9IGMxKSB7DQorCXYgPSBmcmVxW2ldOw0KKwljMiA9IGk7DQorICAgICAgfQ0KKyAgICB9DQorDQorICAgIC8qIERvbmUgaWYgd2UndmUgbWVyZ2VkIGV2ZXJ5dGhpbmcgaW50byBvbmUgZnJlcXVlbmN5ICovDQorICAgIGlmIChjMiA8IDApDQorICAgICAgYnJlYWs7DQorICAgIA0KKyAgICAvKiBFbHNlIG1lcmdlIHRoZSB0d28gY291bnRzL3RyZWVzICovDQorICAgIGZyZXFbYzFdICs9IGZyZXFbYzJdOw0KKyAgICBmcmVxW2MyXSA9IDA7DQorDQorICAgIC8qIEluY3JlbWVudCB0aGUgY29kZXNpemUgb2YgZXZlcnl0aGluZyBpbiBjMSdzIHRyZWUgYnJhbmNoICovDQorICAgIGNvZGVzaXplW2MxXSsrOw0KKyAgICB3aGlsZSAob3RoZXJzW2MxXSA+PSAwKSB7DQorICAgICAgYzEgPSBvdGhlcnNbYzFdOw0KKyAgICAgIGNvZGVzaXplW2MxXSsrOw0KKyAgICB9DQorICAgIA0KKyAgICBvdGhlcnNbYzFdID0gYzI7CQkvKiBjaGFpbiBjMiBvbnRvIGMxJ3MgdHJlZSBicmFuY2ggKi8NCisgICAgDQorICAgIC8qIEluY3JlbWVudCB0aGUgY29kZXNpemUgb2YgZXZlcnl0aGluZyBpbiBjMidzIHRyZWUgYnJhbmNoICovDQorICAgIGNvZGVzaXplW2MyXSsrOw0KKyAgICB3aGlsZSAob3RoZXJzW2MyXSA+PSAwKSB7DQorICAgICAgYzIgPSBvdGhlcnNbYzJdOw0KKyAgICAgIGNvZGVzaXplW2MyXSsrOw0KKyAgICB9DQorICB9DQorDQorICAvKiBOb3cgY291bnQgdGhlIG51bWJlciBvZiBzeW1ib2xzIG9mIGVhY2ggY29kZSBsZW5ndGggKi8NCisgIGZvciAoaSA9IDA7IGkgPD0gMjU2OyBpKyspIHsNCisgICAgaWYgKGNvZGVzaXplW2ldKSB7DQorICAgICAgLyogVGhlIEpQRUcgc3RhbmRhcmQgc2VlbXMgdG8gdGhpbmsgdGhhdCB0aGlzIGNhbid0IGhhcHBlbiwgKi8NCisgICAgICAvKiBidXQgSSdtIHBhcmFub2lkLi4uICovDQorICAgICAgaWYgKGNvZGVzaXplW2ldID4gTUFYX0NMRU4pDQorCUVSUkVYSVQoY2luZm8sIEpFUlJfSFVGRl9DTEVOX09WRVJGTE9XKTsNCisNCisgICAgICBiaXRzW2NvZGVzaXplW2ldXSsrOw0KKyAgICB9DQorICB9DQorDQorICAvKiBKUEVHIGRvZXNuJ3QgYWxsb3cgc3ltYm9scyB3aXRoIGNvZGUgbGVuZ3RocyBvdmVyIDE2IGJpdHMsIHNvIGlmIHRoZSBwdXJlDQorICAgKiBIdWZmbWFuIHByb2NlZHVyZSBhc3NpZ25lZCBhbnkgc3VjaCBsZW5ndGhzLCB3ZSBtdXN0IGFkanVzdCB0aGUgY29kaW5nLg0KKyAgICogSGVyZSBpcyB3aGF0IHRoZSBKUEVHIHNwZWMgc2F5cyBhYm91dCBob3cgdGhpcyBuZXh0IGJpdCB3b3JrczoNCisgICAqIFNpbmNlIHN5bWJvbHMgYXJlIHBhaXJlZCBmb3IgdGhlIGxvbmdlc3QgSHVmZm1hbiBjb2RlLCB0aGUgc3ltYm9scyBhcmUNCisgICAqIHJlbW92ZWQgZnJvbSB0aGlzIGxlbmd0aCBjYXRlZ29yeSB0d28gYXQgYSB0aW1lLiAgVGhlIHByZWZpeCBmb3IgdGhlIHBhaXINCisgICAqICh3aGljaCBpcyBvbmUgYml0IHNob3J0ZXIpIGlzIGFsbG9jYXRlZCB0byBvbmUgb2YgdGhlIHBhaXI7IHRoZW4sDQorICAgKiBza2lwcGluZyB0aGUgQklUUyBlbnRyeSBmb3IgdGhhdCBwcmVmaXggbGVuZ3RoLCBhIGNvZGUgd29yZCBmcm9tIHRoZSBuZXh0DQorICAgKiBzaG9ydGVzdCBub256ZXJvIEJJVFMgZW50cnkgaXMgY29udmVydGVkIGludG8gYSBwcmVmaXggZm9yIHR3byBjb2RlIHdvcmRzDQorICAgKiBvbmUgYml0IGxvbmdlci4NCisgICAqLw0KKyAgDQorICBmb3IgKGkgPSBNQVhfQ0xFTjsgaSA+IDE2OyBpLS0pIHsNCisgICAgd2hpbGUgKGJpdHNbaV0gPiAwKSB7DQorICAgICAgaiA9IGkgLSAyOwkJLyogZmluZCBsZW5ndGggb2YgbmV3IHByZWZpeCB0byBiZSB1c2VkICovDQorICAgICAgd2hpbGUgKGJpdHNbal0gPT0gMCkNCisJai0tOw0KKyAgICAgIA0KKyAgICAgIGJpdHNbaV0gLT0gMjsJCS8qIHJlbW92ZSB0d28gc3ltYm9scyAqLw0KKyAgICAgIGJpdHNbaS0xXSsrOwkJLyogb25lIGdvZXMgaW4gdGhpcyBsZW5ndGggKi8NCisgICAgICBiaXRzW2orMV0gKz0gMjsJCS8qIHR3byBuZXcgc3ltYm9scyBpbiB0aGlzIGxlbmd0aCAqLw0KKyAgICAgIGJpdHNbal0tLTsJCS8qIHN5bWJvbCBvZiB0aGlzIGxlbmd0aCBpcyBub3cgYSBwcmVmaXggKi8NCisgICAgfQ0KKyAgfQ0KKw0KKyAgLyogUmVtb3ZlIHRoZSBjb3VudCBmb3IgdGhlIHBzZXVkby1zeW1ib2wgMjU2IGZyb20gdGhlIGxhcmdlc3QgY29kZWxlbmd0aCAqLw0KKyAgd2hpbGUgKGJpdHNbaV0gPT0gMCkJCS8qIGZpbmQgbGFyZ2VzdCBjb2RlbGVuZ3RoIHN0aWxsIGluIHVzZSAqLw0KKyAgICBpLS07DQorICBiaXRzW2ldLS07DQorICANCisgIC8qIFJldHVybiBmaW5hbCBzeW1ib2wgY291bnRzIChvbmx5IGZvciBsZW5ndGhzIDAuLjE2KSAqLw0KKyAgTUVNQ09QWShodGJsLT5iaXRzLCBiaXRzLCBTSVpFT0YoaHRibC0+Yml0cykpOw0KKyAgDQorICAvKiBSZXR1cm4gYSBsaXN0IG9mIHRoZSBzeW1ib2xzIHNvcnRlZCBieSBjb2RlIGxlbmd0aCAqLw0KKyAgLyogSXQncyBub3QgcmVhbCBjbGVhciB0byBtZSB3aHkgd2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciB0aGUgY29kZWxlbmd0aA0KKyAgICogY2hhbmdlcyBtYWRlIGFib3ZlLCBidXQgdGhlIEpQRUcgc3BlYyBzZWVtcyB0byB0aGluayB0aGlzIHdvcmtzLg0KKyAgICovDQorICBwID0gMDsNCisgIGZvciAoaSA9IDE7IGkgPD0gTUFYX0NMRU47IGkrKykgew0KKyAgICBmb3IgKGogPSAwOyBqIDw9IDI1NTsgaisrKSB7DQorICAgICAgaWYgKGNvZGVzaXplW2pdID09IGkpIHsNCisJaHRibC0+aHVmZnZhbFtwXSA9IChVSU5UOCkgajsNCisJcCsrOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKw0KKyAgLyogU2V0IHNlbnRfdGFibGUgRkFMU0Ugc28gdXBkYXRlZCB0YWJsZSB3aWxsIGJlIHdyaXR0ZW4gdG8gSlBFRyBmaWxlLiAqLw0KKyAgaHRibC0+c2VudF90YWJsZSA9IEZBTFNFOw0KK30NCisNCisNCisvKg0KKyAqIEZpbmlzaCB1cCBhIHN0YXRpc3RpY3MtZ2F0aGVyaW5nIHBhc3MgYW5kIGNyZWF0ZSB0aGUgbmV3IEh1ZmZtYW4gdGFibGVzLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2ZpbmlzaF9wYXNzX2dhdGhlciAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5ID0gKGh1ZmZfZW50cm9weV9wdHIpIGNpbmZvLT5lbnRyb3B5Ow0KKyAgaW50IGNpLCBkY3RibCwgYWN0Ymw7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisgIEpIVUZGX1RCTCAqKmh0YmxwdHI7DQorICBib29sZWFuIGRpZF9kY1tOVU1fSFVGRl9UQkxTXTsNCisgIGJvb2xlYW4gZGlkX2FjW05VTV9IVUZGX1RCTFNdOw0KKw0KKyAgLyogSXQncyBpbXBvcnRhbnQgbm90IHRvIGFwcGx5IGpwZWdfZ2VuX29wdGltYWxfdGFibGUgbW9yZSB0aGFuIG9uY2UNCisgICAqIHBlciB0YWJsZSwgYmVjYXVzZSBpdCBjbG9iYmVycyB0aGUgaW5wdXQgZnJlcXVlbmN5IGNvdW50cyENCisgICAqLw0KKyAgTUVNWkVSTyhkaWRfZGMsIFNJWkVPRihkaWRfZGMpKTsNCisgIE1FTVpFUk8oZGlkX2FjLCBTSVpFT0YoZGlkX2FjKSk7DQorDQorICBmb3IgKGNpID0gMDsgY2kgPCBjaW5mby0+Y29tcHNfaW5fc2NhbjsgY2krKykgew0KKyAgICBjb21wcHRyID0gY2luZm8tPmN1cl9jb21wX2luZm9bY2ldOw0KKyAgICBkY3RibCA9IGNvbXBwdHItPmRjX3RibF9ubzsNCisgICAgYWN0YmwgPSBjb21wcHRyLT5hY190Ymxfbm87DQorICAgIGlmICghIGRpZF9kY1tkY3RibF0pIHsNCisgICAgICBodGJscHRyID0gJiBjaW5mby0+ZGNfaHVmZl90YmxfcHRyc1tkY3RibF07DQorICAgICAgaWYgKCpodGJscHRyID09IE5VTEwpDQorCSpodGJscHRyID0ganBlZ19hbGxvY19odWZmX3RhYmxlKChqX2NvbW1vbl9wdHIpIGNpbmZvKTsNCisgICAgICBqcGVnX2dlbl9vcHRpbWFsX3RhYmxlKGNpbmZvLCAqaHRibHB0ciwgZW50cm9weS0+ZGNfY291bnRfcHRyc1tkY3RibF0pOw0KKyAgICAgIGRpZF9kY1tkY3RibF0gPSBUUlVFOw0KKyAgICB9DQorICAgIGlmICghIGRpZF9hY1thY3RibF0pIHsNCisgICAgICBodGJscHRyID0gJiBjaW5mby0+YWNfaHVmZl90YmxfcHRyc1thY3RibF07DQorICAgICAgaWYgKCpodGJscHRyID09IE5VTEwpDQorCSpodGJscHRyID0ganBlZ19hbGxvY19odWZmX3RhYmxlKChqX2NvbW1vbl9wdHIpIGNpbmZvKTsNCisgICAgICBqcGVnX2dlbl9vcHRpbWFsX3RhYmxlKGNpbmZvLCAqaHRibHB0ciwgZW50cm9weS0+YWNfY291bnRfcHRyc1thY3RibF0pOw0KKyAgICAgIGRpZF9hY1thY3RibF0gPSBUUlVFOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKyNlbmRpZiAvKiBFTlRST1BZX09QVF9TVVBQT1JURUQgKi8NCisNCisNCisvKg0KKyAqIE1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBIdWZmbWFuIGVudHJvcHkgZW5jb2RpbmcuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoramluaXRfaHVmZl9lbmNvZGVyIChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBodWZmX2VudHJvcHlfcHRyIGVudHJvcHk7DQorICBpbnQgaTsNCisNCisgIGVudHJvcHkgPSAoaHVmZl9lbnRyb3B5X3B0cikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJU0laRU9GKGh1ZmZfZW50cm9weV9lbmNvZGVyKSk7DQorICBjaW5mby0+ZW50cm9weSA9IChzdHJ1Y3QganBlZ19lbnRyb3B5X2VuY29kZXIgKikgZW50cm9weTsNCisgIGVudHJvcHktPnB1Yi5zdGFydF9wYXNzID0gc3RhcnRfcGFzc19odWZmOw0KKw0KKyAgLyogTWFyayB0YWJsZXMgdW5hbGxvY2F0ZWQgKi8NCisgIGZvciAoaSA9IDA7IGkgPCBOVU1fSFVGRl9UQkxTOyBpKyspIHsNCisgICAgZW50cm9weS0+ZGNfZGVyaXZlZF90YmxzW2ldID0gZW50cm9weS0+YWNfZGVyaXZlZF90YmxzW2ldID0gTlVMTDsNCisjaWZkZWYgRU5UUk9QWV9PUFRfU1VQUE9SVEVEDQorICAgIGVudHJvcHktPmRjX2NvdW50X3B0cnNbaV0gPSBlbnRyb3B5LT5hY19jb3VudF9wdHJzW2ldID0gTlVMTDsNCisjZW5kaWYNCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNpbml0LmMgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY2luaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGQ4ZjgxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNpbml0LmMKQEAgLTAsMCArMSw3NSBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGpjaW5pdC5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIHRoZSBKUEVHIGNvbXByZXNzb3IuDQorICogVGhpcyByb3V0aW5lIGlzIGluIGNoYXJnZSBvZiBzZWxlY3RpbmcgdGhlIG1vZHVsZXMgdG8gYmUgZXhlY3V0ZWQgYW5kDQorICogbWFraW5nIGFuIGluaXRpYWxpemF0aW9uIGNhbGwgdG8gZWFjaCBvbmUuDQorICoNCisgKiBMb2dpY2FsbHksIHRoaXMgY29kZSBiZWxvbmdzIGluIGpjbWFzdGVyLmMuICBJdCdzIHNwbGl0IG91dCBiZWNhdXNlDQorICogbGlua2luZyB0aGlzIHJvdXRpbmUgaW1wbGllcyBsaW5raW5nIHRoZSBlbnRpcmUgY29tcHJlc3Npb24gbGlicmFyeS4NCisgKiBGb3IgYSB0cmFuc2NvZGluZy1vbmx5IGFwcGxpY2F0aW9uLCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIGpjbWFzdGVyLmMNCisgKiB3aXRob3V0IGxpbmtpbmcgaW4gdGhlIHdob2xlIGxpYnJhcnkuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQorLyoNCisgKiBNYXN0ZXIgc2VsZWN0aW9uIG9mIGNvbXByZXNzaW9uIG1vZHVsZXMuDQorICogVGhpcyBpcyBkb25lIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIHByb2Nlc3NpbmcgYW4gaW1hZ2UuICBXZSBkZXRlcm1pbmUNCisgKiB3aGljaCBtb2R1bGVzIHdpbGwgYmUgdXNlZCBhbmQgZ2l2ZSB0aGVtIGFwcHJvcHJpYXRlIGluaXRpYWxpemF0aW9uIGNhbGxzLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2ppbml0X2NvbXByZXNzX21hc3RlciAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgLyogSW5pdGlhbGl6ZSBtYXN0ZXIgY29udHJvbCAoaW5jbHVkZXMgcGFyYW1ldGVyIGNoZWNraW5nL3Byb2Nlc3NpbmcpICovDQorICBqaW5pdF9jX21hc3Rlcl9jb250cm9sKGNpbmZvLCBGQUxTRSAvKiBmdWxsIGNvbXByZXNzaW9uICovKTsNCisNCisgIC8qIFByZXByb2Nlc3NpbmcgKi8NCisgIGlmICghIGNpbmZvLT5yYXdfZGF0YV9pbikgew0KKyAgICBqaW5pdF9jb2xvcl9jb252ZXJ0ZXIoY2luZm8pOw0KKyAgICBqaW5pdF9kb3duc2FtcGxlcihjaW5mbyk7DQorICAgIGppbml0X2NfcHJlcF9jb250cm9sbGVyKGNpbmZvLCBGQUxTRSAvKiBuZXZlciBuZWVkIGZ1bGwgYnVmZmVyIGhlcmUgKi8pOw0KKyAgfQ0KKyAgLyogRm9yd2FyZCBEQ1QgKi8NCisgIGppbml0X2ZvcndhcmRfZGN0KGNpbmZvKTsNCisgIC8qIEVudHJvcHkgZW5jb2Rpbmc6IGVpdGhlciBIdWZmbWFuIG9yIGFyaXRobWV0aWMgY29kaW5nLiAqLw0KKyAgaWYgKGNpbmZvLT5hcml0aF9jb2RlKSB7DQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQVJJVEhfTk9USU1QTCk7DQorICB9IGVsc2Ugew0KKyAgICBpZiAoY2luZm8tPnByb2dyZXNzaXZlX21vZGUpIHsNCisjaWZkZWYgQ19QUk9HUkVTU0lWRV9TVVBQT1JURUQNCisgICAgICBqaW5pdF9waHVmZl9lbmNvZGVyKGNpbmZvKTsNCisjZWxzZQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfTk9UX0NPTVBJTEVEKTsNCisjZW5kaWYNCisgICAgfSBlbHNlDQorICAgICAgamluaXRfaHVmZl9lbmNvZGVyKGNpbmZvKTsNCisgIH0NCisNCisgIC8qIE5lZWQgYSBmdWxsLWltYWdlIGNvZWZmaWNpZW50IGJ1ZmZlciBpbiBhbnkgbXVsdGktcGFzcyBtb2RlLiAqLw0KKyAgamluaXRfY19jb2VmX2NvbnRyb2xsZXIoY2luZm8sDQorCQkoYm9vbGVhbikgKGNpbmZvLT5udW1fc2NhbnMgPiAxIHx8IGNpbmZvLT5vcHRpbWl6ZV9jb2RpbmcpKTsNCisgIGppbml0X2NfbWFpbl9jb250cm9sbGVyKGNpbmZvLCBGQUxTRSAvKiBuZXZlciBuZWVkIGZ1bGwgYnVmZmVyIGhlcmUgKi8pOw0KKw0KKyAgamluaXRfbWFya2VyX3dyaXRlcihjaW5mbyk7DQorDQorICAvKiBXZSBjYW4gbm93IHRlbGwgdGhlIG1lbW9yeSBtYW5hZ2VyIHRvIGFsbG9jYXRlIHZpcnR1YWwgYXJyYXlzLiAqLw0KKyAgKCpjaW5mby0+bWVtLT5yZWFsaXplX3ZpcnRfYXJyYXlzKSAoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKw0KKyAgLyogV3JpdGUgdGhlIGRhdGFzdHJlYW0gaGVhZGVyIChTT0kpIGltbWVkaWF0ZWx5Lg0KKyAgICogRnJhbWUgYW5kIHNjYW4gaGVhZGVycyBhcmUgcG9zdHBvbmVkIHRpbGwgbGF0ZXIuDQorICAgKiBUaGlzIGxldHMgYXBwbGljYXRpb24gaW5zZXJ0IHNwZWNpYWwgbWFya2VycyBhZnRlciB0aGUgU09JLg0KKyAgICovDQorICAoKmNpbmZvLT5tYXJrZXItPndyaXRlX2ZpbGVfaGVhZGVyKSAoY2luZm8pOw0KK30NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY21haW5jdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNtYWluY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWQ2MWYyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNtYWluY3QuYwpAQCAtMCwwICsxLDI5NiBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGpjbWFpbmN0LmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk2LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbWFpbiBidWZmZXIgY29udHJvbGxlciBmb3IgY29tcHJlc3Npb24uDQorICogVGhlIG1haW4gYnVmZmVyIGxpZXMgYmV0d2VlbiB0aGUgcHJlLXByb2Nlc3NvciBhbmQgdGhlIEpQRUcNCisgKiBjb21wcmVzc29yIHByb3BlcjsgaXQgaG9sZHMgZG93bnNhbXBsZWQgZGF0YSBpbiB0aGUgSlBFRyBjb2xvcnNwYWNlLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKw0KKw0KKy8qIE5vdGU6IGN1cnJlbnRseSwgdGhlcmUgaXMgbm8gb3BlcmF0aW5nIG1vZGUgaW4gd2hpY2ggYSBmdWxsLWltYWdlIGJ1ZmZlcg0KKyAqIGlzIG5lZWRlZCBhdCB0aGlzIHN0ZXAuICBJZiB0aGVyZSB3ZXJlLCB0aGF0IG1vZGUgY291bGQgbm90IGJlIHVzZWQgd2l0aA0KKyAqICJyYXcgZGF0YSIgaW5wdXQsIHNpbmNlIHRoaXMgbW9kdWxlIGlzIGJ5cGFzc2VkIGluIHRoYXQgY2FzZS4gIEhvd2V2ZXIsDQorICogd2UndmUgbGVmdCB0aGUgY29kZSBoZXJlIGZvciBwb3NzaWJsZSB1c2UgaW4gc3BlY2lhbCBhcHBsaWNhdGlvbnMuDQorICovDQorI3VuZGVmIEZVTExfTUFJTl9CVUZGRVJfU1VQUE9SVEVEDQorDQorDQorLyogUHJpdmF0ZSBidWZmZXIgY29udHJvbGxlciBvYmplY3QgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBzdHJ1Y3QganBlZ19jX21haW5fY29udHJvbGxlciBwdWI7IC8qIHB1YmxpYyBmaWVsZHMgKi8NCisNCisgIEpESU1FTlNJT04gY3VyX2lNQ1Vfcm93OwkvKiBudW1iZXIgb2YgY3VycmVudCBpTUNVIHJvdyAqLw0KKyAgSkRJTUVOU0lPTiByb3dncm91cF9jdHI7CS8qIGNvdW50cyByb3cgZ3JvdXBzIHJlY2VpdmVkIGluIGlNQ1Ugcm93ICovDQorICBib29sZWFuIHN1c3BlbmRlZDsJCS8qIHJlbWVtYmVyIGlmIHdlIHN1c3BlbmRlZCBvdXRwdXQgKi8NCisgIEpfQlVGX01PREUgcGFzc19tb2RlOwkJLyogY3VycmVudCBvcGVyYXRpbmcgbW9kZSAqLw0KKw0KKyAgLyogSWYgdXNpbmcganVzdCBhIHN0cmlwIGJ1ZmZlciwgdGhpcyBwb2ludHMgdG8gdGhlIGVudGlyZSBzZXQgb2YgYnVmZmVycw0KKyAgICogKHdlIGFsbG9jYXRlIG9uZSBmb3IgZWFjaCBjb21wb25lbnQpLiAgSW4gdGhlIGZ1bGwtaW1hZ2UgY2FzZSwgdGhpcw0KKyAgICogcG9pbnRzIHRvIHRoZSBjdXJyZW50bHkgYWNjZXNzaWJsZSBzdHJpcHMgb2YgdGhlIHZpcnR1YWwgYXJyYXlzLg0KKyAgICovDQorICBKU0FNUEFSUkFZIGJ1ZmZlcltNQVhfQ09NUE9ORU5UU107DQorDQorI2lmZGVmIEZVTExfTUFJTl9CVUZGRVJfU1VQUE9SVEVEDQorICAvKiBJZiB1c2luZyBmdWxsLWltYWdlIHN0b3JhZ2UsIHRoaXMgYXJyYXkgaG9sZHMgcG9pbnRlcnMgdG8gdmlydHVhbC1hcnJheQ0KKyAgICogY29udHJvbCBibG9ja3MgZm9yIGVhY2ggY29tcG9uZW50LiAgVW51c2VkIGlmIG5vdCBmdWxsLWltYWdlIHN0b3JhZ2UuDQorICAgKi8NCisgIGp2aXJ0X3NhcnJheV9wdHIgd2hvbGVfaW1hZ2VbTUFYX0NPTVBPTkVOVFNdOw0KKyNlbmRpZg0KK30gbXlfbWFpbl9jb250cm9sbGVyOw0KKw0KK3R5cGVkZWYgbXlfbWFpbl9jb250cm9sbGVyICogbXlfbWFpbl9wdHI7DQorDQorDQorLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8NCitNRVRIT0RERUYodm9pZCkgcHJvY2Vzc19kYXRhX3NpbXBsZV9tYWluDQorCUpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sIEpTQU1QQVJSQVkgaW5wdXRfYnVmLA0KKwkgICAgIEpESU1FTlNJT04gKmluX3Jvd19jdHIsIEpESU1FTlNJT04gaW5fcm93c19hdmFpbCkpOw0KKyNpZmRlZiBGVUxMX01BSU5fQlVGRkVSX1NVUFBPUlRFRA0KK01FVEhPRERFRih2b2lkKSBwcm9jZXNzX2RhdGFfYnVmZmVyX21haW4NCisJSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywgSlNBTVBBUlJBWSBpbnB1dF9idWYsDQorCSAgICAgSkRJTUVOU0lPTiAqaW5fcm93X2N0ciwgSkRJTUVOU0lPTiBpbl9yb3dzX2F2YWlsKSk7DQorI2VuZGlmDQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIGZvciBhIHByb2Nlc3NpbmcgcGFzcy4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitzdGFydF9wYXNzX21haW4gKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKX0JVRl9NT0RFIHBhc3NfbW9kZSkNCit7DQorICBteV9tYWluX3B0ciBtYWluID0gKG15X21haW5fcHRyKSBjaW5mby0+bWFpbjsNCisNCisgIC8qIERvIG5vdGhpbmcgaW4gcmF3LWRhdGEgbW9kZS4gKi8NCisgIGlmIChjaW5mby0+cmF3X2RhdGFfaW4pDQorICAgIHJldHVybjsNCisNCisgIG1haW4tPmN1cl9pTUNVX3JvdyA9IDA7CS8qIGluaXRpYWxpemUgY291bnRlcnMgKi8NCisgIG1haW4tPnJvd2dyb3VwX2N0ciA9IDA7DQorICBtYWluLT5zdXNwZW5kZWQgPSBGQUxTRTsNCisgIG1haW4tPnBhc3NfbW9kZSA9IHBhc3NfbW9kZTsJLyogc2F2ZSBtb2RlIGZvciB1c2UgYnkgcHJvY2Vzc19kYXRhICovDQorDQorICBzd2l0Y2ggKHBhc3NfbW9kZSkgew0KKyAgY2FzZSBKQlVGX1BBU1NfVEhSVToNCisjaWZkZWYgRlVMTF9NQUlOX0JVRkZFUl9TVVBQT1JURUQNCisgICAgaWYgKG1haW4tPndob2xlX2ltYWdlWzBdICE9IE5VTEwpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfQlVGRkVSX01PREUpOw0KKyNlbmRpZg0KKyAgICBtYWluLT5wdWIucHJvY2Vzc19kYXRhID0gcHJvY2Vzc19kYXRhX3NpbXBsZV9tYWluOw0KKyAgICBicmVhazsNCisjaWZkZWYgRlVMTF9NQUlOX0JVRkZFUl9TVVBQT1JURUQNCisgIGNhc2UgSkJVRl9TQVZFX1NPVVJDRToNCisgIGNhc2UgSkJVRl9DUkFOS19ERVNUOg0KKyAgY2FzZSBKQlVGX1NBVkVfQU5EX1BBU1M6DQorICAgIGlmIChtYWluLT53aG9sZV9pbWFnZVswXSA9PSBOVUxMKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0JVRkZFUl9NT0RFKTsNCisgICAgbWFpbi0+cHViLnByb2Nlc3NfZGF0YSA9IHByb2Nlc3NfZGF0YV9idWZmZXJfbWFpbjsNCisgICAgYnJlYWs7DQorI2VuZGlmDQorICBkZWZhdWx0Og0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9CVUZGRVJfTU9ERSk7DQorICAgIGJyZWFrOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIFByb2Nlc3Mgc29tZSBkYXRhLg0KKyAqIFRoaXMgcm91dGluZSBoYW5kbGVzIHRoZSBzaW1wbGUgcGFzcy10aHJvdWdoIG1vZGUsDQorICogd2hlcmUgd2UgaGF2ZSBvbmx5IGEgc3RyaXAgYnVmZmVyLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3Byb2Nlc3NfZGF0YV9zaW1wbGVfbWFpbiAoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJICBKU0FNUEFSUkFZIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiAqaW5fcm93X2N0ciwNCisJCQkgIEpESU1FTlNJT04gaW5fcm93c19hdmFpbCkNCit7DQorICBteV9tYWluX3B0ciBtYWluID0gKG15X21haW5fcHRyKSBjaW5mby0+bWFpbjsNCisNCisgIHdoaWxlIChtYWluLT5jdXJfaU1DVV9yb3cgPCBjaW5mby0+dG90YWxfaU1DVV9yb3dzKSB7DQorICAgIC8qIFJlYWQgaW5wdXQgZGF0YSBpZiB3ZSBoYXZlbid0IGZpbGxlZCB0aGUgbWFpbiBidWZmZXIgeWV0ICovDQorICAgIGlmIChtYWluLT5yb3dncm91cF9jdHIgPCBEQ1RTSVpFKQ0KKyAgICAgICgqY2luZm8tPnByZXAtPnByZV9wcm9jZXNzX2RhdGEpIChjaW5mbywNCisJCQkJCWlucHV0X2J1ZiwgaW5fcm93X2N0ciwgaW5fcm93c19hdmFpbCwNCisJCQkJCW1haW4tPmJ1ZmZlciwgJm1haW4tPnJvd2dyb3VwX2N0ciwNCisJCQkJCShKRElNRU5TSU9OKSBEQ1RTSVpFKTsNCisNCisgICAgLyogSWYgd2UgZG9uJ3QgaGF2ZSBhIGZ1bGwgaU1DVSByb3cgYnVmZmVyZWQsIHJldHVybiB0byBhcHBsaWNhdGlvbiBmb3INCisgICAgICogbW9yZSBkYXRhLiAgTm90ZSB0aGF0IHByZXByb2Nlc3NvciB3aWxsIGFsd2F5cyBwYWQgdG8gZmlsbCB0aGUgaU1DVSByb3cNCisgICAgICogYXQgdGhlIGJvdHRvbSBvZiB0aGUgaW1hZ2UuDQorICAgICAqLw0KKyAgICBpZiAobWFpbi0+cm93Z3JvdXBfY3RyICE9IERDVFNJWkUpDQorICAgICAgcmV0dXJuOw0KKw0KKyAgICAvKiBTZW5kIHRoZSBjb21wbGV0ZWQgcm93IHRvIHRoZSBjb21wcmVzc29yICovDQorICAgIGlmICghICgqY2luZm8tPmNvZWYtPmNvbXByZXNzX2RhdGEpIChjaW5mbywgbWFpbi0+YnVmZmVyKSkgew0KKyAgICAgIC8qIElmIGNvbXByZXNzb3IgZGlkIG5vdCBjb25zdW1lIHRoZSB3aG9sZSByb3csIHRoZW4gd2UgbXVzdCBuZWVkIHRvDQorICAgICAgICogc3VzcGVuZCBwcm9jZXNzaW5nIGFuZCByZXR1cm4gdG8gdGhlIGFwcGxpY2F0aW9uLiAgSW4gdGhpcyBzaXR1YXRpb24NCisgICAgICAgKiB3ZSBwcmV0ZW5kIHdlIGRpZG4ndCB5ZXQgY29uc3VtZSB0aGUgbGFzdCBpbnB1dCByb3c7IG90aGVyd2lzZSwgaWYNCisgICAgICAgKiBpdCBoYXBwZW5lZCB0byBiZSB0aGUgbGFzdCByb3cgb2YgdGhlIGltYWdlLCB0aGUgYXBwbGljYXRpb24gd291bGQNCisgICAgICAgKiB0aGluayB3ZSB3ZXJlIGRvbmUuDQorICAgICAgICovDQorICAgICAgaWYgKCEgbWFpbi0+c3VzcGVuZGVkKSB7DQorCSgqaW5fcm93X2N0ciktLTsNCisJbWFpbi0+c3VzcGVuZGVkID0gVFJVRTsNCisgICAgICB9DQorICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIC8qIFdlIGRpZCBmaW5pc2ggdGhlIHJvdy4gIFVuZG8gb3VyIGxpdHRsZSBzdXNwZW5zaW9uIGhhY2sgaWYgYSBwcmV2aW91cw0KKyAgICAgKiBjYWxsIHN1c3BlbmRlZDsgdGhlbiBtYXJrIHRoZSBtYWluIGJ1ZmZlciBlbXB0eS4NCisgICAgICovDQorICAgIGlmIChtYWluLT5zdXNwZW5kZWQpIHsNCisgICAgICAoKmluX3Jvd19jdHIpKys7DQorICAgICAgbWFpbi0+c3VzcGVuZGVkID0gRkFMU0U7DQorICAgIH0NCisgICAgbWFpbi0+cm93Z3JvdXBfY3RyID0gMDsNCisgICAgbWFpbi0+Y3VyX2lNQ1Vfcm93Kys7DQorICB9DQorfQ0KKw0KKw0KKyNpZmRlZiBGVUxMX01BSU5fQlVGRkVSX1NVUFBPUlRFRA0KKw0KKy8qDQorICogUHJvY2VzcyBzb21lIGRhdGEuDQorICogVGhpcyByb3V0aW5lIGhhbmRsZXMgYWxsIG9mIHRoZSBtb2RlcyB0aGF0IHVzZSBhIGZ1bGwtc2l6ZSBidWZmZXIuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorcHJvY2Vzc19kYXRhX2J1ZmZlcl9tYWluIChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkgIEpTQU1QQVJSQVkgaW5wdXRfYnVmLCBKRElNRU5TSU9OICppbl9yb3dfY3RyLA0KKwkJCSAgSkRJTUVOU0lPTiBpbl9yb3dzX2F2YWlsKQ0KK3sNCisgIG15X21haW5fcHRyIG1haW4gPSAobXlfbWFpbl9wdHIpIGNpbmZvLT5tYWluOw0KKyAgaW50IGNpOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIGJvb2xlYW4gd3JpdGluZyA9IChtYWluLT5wYXNzX21vZGUgIT0gSkJVRl9DUkFOS19ERVNUKTsNCisNCisgIHdoaWxlIChtYWluLT5jdXJfaU1DVV9yb3cgPCBjaW5mby0+dG90YWxfaU1DVV9yb3dzKSB7DQorICAgIC8qIFJlYWxpZ24gdGhlIHZpcnR1YWwgYnVmZmVycyBpZiBhdCB0aGUgc3RhcnQgb2YgYW4gaU1DVSByb3cuICovDQorICAgIGlmIChtYWluLT5yb3dncm91cF9jdHIgPT0gMCkgew0KKyAgICAgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorCSAgIGNpKyssIGNvbXBwdHIrKykgew0KKwltYWluLT5idWZmZXJbY2ldID0gKCpjaW5mby0+bWVtLT5hY2Nlc3NfdmlydF9zYXJyYXkpDQorCSAgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBtYWluLT53aG9sZV9pbWFnZVtjaV0sDQorCSAgIG1haW4tPmN1cl9pTUNVX3JvdyAqIChjb21wcHRyLT52X3NhbXBfZmFjdG9yICogRENUU0laRSksDQorCSAgIChKRElNRU5TSU9OKSAoY29tcHB0ci0+dl9zYW1wX2ZhY3RvciAqIERDVFNJWkUpLCB3cml0aW5nKTsNCisgICAgICB9DQorICAgICAgLyogSW4gYSByZWFkIHBhc3MsIHByZXRlbmQgd2UganVzdCByZWFkIHNvbWUgc291cmNlIGRhdGEuICovDQorICAgICAgaWYgKCEgd3JpdGluZykgew0KKwkqaW5fcm93X2N0ciArPSBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IgKiBEQ1RTSVpFOw0KKwltYWluLT5yb3dncm91cF9jdHIgPSBEQ1RTSVpFOw0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgICAvKiBJZiBhIHdyaXRlIHBhc3MsIHJlYWQgaW5wdXQgZGF0YSB1bnRpbCB0aGUgY3VycmVudCBpTUNVIHJvdyBpcyBmdWxsLiAqLw0KKyAgICAvKiBOb3RlOiBwcmVwcm9jZXNzb3Igd2lsbCBwYWQgaWYgbmVjZXNzYXJ5IHRvIGZpbGwgdGhlIGxhc3QgaU1DVSByb3cuICovDQorICAgIGlmICh3cml0aW5nKSB7DQorICAgICAgKCpjaW5mby0+cHJlcC0+cHJlX3Byb2Nlc3NfZGF0YSkgKGNpbmZvLA0KKwkJCQkJaW5wdXRfYnVmLCBpbl9yb3dfY3RyLCBpbl9yb3dzX2F2YWlsLA0KKwkJCQkJbWFpbi0+YnVmZmVyLCAmbWFpbi0+cm93Z3JvdXBfY3RyLA0KKwkJCQkJKEpESU1FTlNJT04pIERDVFNJWkUpOw0KKyAgICAgIC8qIFJldHVybiB0byBhcHBsaWNhdGlvbiBpZiB3ZSBuZWVkIG1vcmUgZGF0YSB0byBmaWxsIHRoZSBpTUNVIHJvdy4gKi8NCisgICAgICBpZiAobWFpbi0+cm93Z3JvdXBfY3RyIDwgRENUU0laRSkNCisJcmV0dXJuOw0KKyAgICB9DQorDQorICAgIC8qIEVtaXQgZGF0YSwgdW5sZXNzIHRoaXMgaXMgYSBzaW5rLW9ubHkgcGFzcy4gKi8NCisgICAgaWYgKG1haW4tPnBhc3NfbW9kZSAhPSBKQlVGX1NBVkVfU09VUkNFKSB7DQorICAgICAgaWYgKCEgKCpjaW5mby0+Y29lZi0+Y29tcHJlc3NfZGF0YSkgKGNpbmZvLCBtYWluLT5idWZmZXIpKSB7DQorCS8qIElmIGNvbXByZXNzb3IgZGlkIG5vdCBjb25zdW1lIHRoZSB3aG9sZSByb3csIHRoZW4gd2UgbXVzdCBuZWVkIHRvDQorCSAqIHN1c3BlbmQgcHJvY2Vzc2luZyBhbmQgcmV0dXJuIHRvIHRoZSBhcHBsaWNhdGlvbi4gIEluIHRoaXMgc2l0dWF0aW9uDQorCSAqIHdlIHByZXRlbmQgd2UgZGlkbid0IHlldCBjb25zdW1lIHRoZSBsYXN0IGlucHV0IHJvdzsgb3RoZXJ3aXNlLCBpZg0KKwkgKiBpdCBoYXBwZW5lZCB0byBiZSB0aGUgbGFzdCByb3cgb2YgdGhlIGltYWdlLCB0aGUgYXBwbGljYXRpb24gd291bGQNCisJICogdGhpbmsgd2Ugd2VyZSBkb25lLg0KKwkgKi8NCisJaWYgKCEgbWFpbi0+c3VzcGVuZGVkKSB7DQorCSAgKCppbl9yb3dfY3RyKS0tOw0KKwkgIG1haW4tPnN1c3BlbmRlZCA9IFRSVUU7DQorCX0NCisJcmV0dXJuOw0KKyAgICAgIH0NCisgICAgICAvKiBXZSBkaWQgZmluaXNoIHRoZSByb3cuICBVbmRvIG91ciBsaXR0bGUgc3VzcGVuc2lvbiBoYWNrIGlmIGEgcHJldmlvdXMNCisgICAgICAgKiBjYWxsIHN1c3BlbmRlZDsgdGhlbiBtYXJrIHRoZSBtYWluIGJ1ZmZlciBlbXB0eS4NCisgICAgICAgKi8NCisgICAgICBpZiAobWFpbi0+c3VzcGVuZGVkKSB7DQorCSgqaW5fcm93X2N0cikrKzsNCisJbWFpbi0+c3VzcGVuZGVkID0gRkFMU0U7DQorICAgICAgfQ0KKyAgICB9DQorDQorICAgIC8qIElmIGdldCBoZXJlLCB3ZSBhcmUgZG9uZSB3aXRoIHRoaXMgaU1DVSByb3cuICBNYXJrIGJ1ZmZlciBlbXB0eS4gKi8NCisgICAgbWFpbi0+cm93Z3JvdXBfY3RyID0gMDsNCisgICAgbWFpbi0+Y3VyX2lNQ1Vfcm93Kys7DQorICB9DQorfQ0KKw0KKyNlbmRpZiAvKiBGVUxMX01BSU5fQlVGRkVSX1NVUFBPUlRFRCAqLw0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6ZSBtYWluIGJ1ZmZlciBjb250cm9sbGVyLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2ppbml0X2NfbWFpbl9jb250cm9sbGVyIChqX2NvbXByZXNzX3B0ciBjaW5mbywgYm9vbGVhbiBuZWVkX2Z1bGxfYnVmZmVyKQ0KK3sNCisgIG15X21haW5fcHRyIG1haW47DQorICBpbnQgY2k7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyOw0KKw0KKyAgbWFpbiA9IChteV9tYWluX3B0cikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJU0laRU9GKG15X21haW5fY29udHJvbGxlcikpOw0KKyAgY2luZm8tPm1haW4gPSAoc3RydWN0IGpwZWdfY19tYWluX2NvbnRyb2xsZXIgKikgbWFpbjsNCisgIG1haW4tPnB1Yi5zdGFydF9wYXNzID0gc3RhcnRfcGFzc19tYWluOw0KKw0KKyAgLyogV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBidWZmZXIgaW4gcmF3LWRhdGEgbW9kZS4gKi8NCisgIGlmIChjaW5mby0+cmF3X2RhdGFfaW4pDQorICAgIHJldHVybjsNCisNCisgIC8qIENyZWF0ZSB0aGUgYnVmZmVyLiAgSXQgaG9sZHMgZG93bnNhbXBsZWQgZGF0YSwgc28gZWFjaCBjb21wb25lbnQNCisgICAqIG1heSBiZSBvZiBhIGRpZmZlcmVudCBzaXplLg0KKyAgICovDQorICBpZiAobmVlZF9mdWxsX2J1ZmZlcikgew0KKyNpZmRlZiBGVUxMX01BSU5fQlVGRkVSX1NVUFBPUlRFRA0KKyAgICAvKiBBbGxvY2F0ZSBhIGZ1bGwtaW1hZ2UgdmlydHVhbCBhcnJheSBmb3IgZWFjaCBjb21wb25lbnQgKi8NCisgICAgLyogTm90ZSB3ZSBwYWQgdGhlIGJvdHRvbSB0byBhIG11bHRpcGxlIG9mIHRoZSBpTUNVIGhlaWdodCAqLw0KKyAgICBmb3IgKGNpID0gMCwgY29tcHB0ciA9IGNpbmZvLT5jb21wX2luZm87IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOw0KKwkgY2krKywgY29tcHB0cisrKSB7DQorICAgICAgbWFpbi0+d2hvbGVfaW1hZ2VbY2ldID0gKCpjaW5mby0+bWVtLT5yZXF1ZXN0X3ZpcnRfc2FycmF5KQ0KKwkoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLCBGQUxTRSwNCisJIGNvbXBwdHItPndpZHRoX2luX2Jsb2NrcyAqIERDVFNJWkUsDQorCSAoSkRJTUVOU0lPTikganJvdW5kX3VwKChsb25nKSBjb21wcHRyLT5oZWlnaHRfaW5fYmxvY2tzLA0KKwkJCQkobG9uZykgY29tcHB0ci0+dl9zYW1wX2ZhY3RvcikgKiBEQ1RTSVpFLA0KKwkgKEpESU1FTlNJT04pIChjb21wcHRyLT52X3NhbXBfZmFjdG9yICogRENUU0laRSkpOw0KKyAgICB9DQorI2Vsc2UNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfQlVGRkVSX01PREUpOw0KKyNlbmRpZg0KKyAgfSBlbHNlIHsNCisjaWZkZWYgRlVMTF9NQUlOX0JVRkZFUl9TVVBQT1JURUQNCisgICAgbWFpbi0+d2hvbGVfaW1hZ2VbMF0gPSBOVUxMOyAvKiBmbGFnIGZvciBubyB2aXJ0dWFsIGFycmF5cyAqLw0KKyNlbmRpZg0KKyAgICAvKiBBbGxvY2F0ZSBhIHN0cmlwIGJ1ZmZlciBmb3IgZWFjaCBjb21wb25lbnQgKi8NCisgICAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisJIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICAgIG1haW4tPmJ1ZmZlcltjaV0gPSAoKmNpbmZvLT5tZW0tPmFsbG9jX3NhcnJheSkNCisJKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJIGNvbXBwdHItPndpZHRoX2luX2Jsb2NrcyAqIERDVFNJWkUsDQorCSAoSkRJTUVOU0lPTikgKGNvbXBwdHItPnZfc2FtcF9mYWN0b3IgKiBEQ1RTSVpFKSk7DQorICAgIH0NCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNtYXJrZXIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjbWFya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBhOWU4NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjbWFya2VyLmMKQEAgLTAsMCArMSw2NjcgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqY21hcmtlci5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5OCwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgcm91dGluZXMgdG8gd3JpdGUgSlBFRyBkYXRhc3RyZWFtIG1hcmtlcnMuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQordHlwZWRlZiBlbnVtIHsJCQkvKiBKUEVHIG1hcmtlciBjb2RlcyAqLw0KKyAgTV9TT0YwICA9IDB4YzAsDQorICBNX1NPRjEgID0gMHhjMSwNCisgIE1fU09GMiAgPSAweGMyLA0KKyAgTV9TT0YzICA9IDB4YzMsDQorICANCisgIE1fU09GNSAgPSAweGM1LA0KKyAgTV9TT0Y2ICA9IDB4YzYsDQorICBNX1NPRjcgID0gMHhjNywNCisgIA0KKyAgTV9KUEcgICA9IDB4YzgsDQorICBNX1NPRjkgID0gMHhjOSwNCisgIE1fU09GMTAgPSAweGNhLA0KKyAgTV9TT0YxMSA9IDB4Y2IsDQorICANCisgIE1fU09GMTMgPSAweGNkLA0KKyAgTV9TT0YxNCA9IDB4Y2UsDQorICBNX1NPRjE1ID0gMHhjZiwNCisgIA0KKyAgTV9ESFQgICA9IDB4YzQsDQorICANCisgIE1fREFDICAgPSAweGNjLA0KKyAgDQorICBNX1JTVDAgID0gMHhkMCwNCisgIE1fUlNUMSAgPSAweGQxLA0KKyAgTV9SU1QyICA9IDB4ZDIsDQorICBNX1JTVDMgID0gMHhkMywNCisgIE1fUlNUNCAgPSAweGQ0LA0KKyAgTV9SU1Q1ICA9IDB4ZDUsDQorICBNX1JTVDYgID0gMHhkNiwNCisgIE1fUlNUNyAgPSAweGQ3LA0KKyAgDQorICBNX1NPSSAgID0gMHhkOCwNCisgIE1fRU9JICAgPSAweGQ5LA0KKyAgTV9TT1MgICA9IDB4ZGEsDQorICBNX0RRVCAgID0gMHhkYiwNCisgIE1fRE5MICAgPSAweGRjLA0KKyAgTV9EUkkgICA9IDB4ZGQsDQorICBNX0RIUCAgID0gMHhkZSwNCisgIE1fRVhQICAgPSAweGRmLA0KKyAgDQorICBNX0FQUDAgID0gMHhlMCwNCisgIE1fQVBQMSAgPSAweGUxLA0KKyAgTV9BUFAyICA9IDB4ZTIsDQorICBNX0FQUDMgID0gMHhlMywNCisgIE1fQVBQNCAgPSAweGU0LA0KKyAgTV9BUFA1ICA9IDB4ZTUsDQorICBNX0FQUDYgID0gMHhlNiwNCisgIE1fQVBQNyAgPSAweGU3LA0KKyAgTV9BUFA4ICA9IDB4ZTgsDQorICBNX0FQUDkgID0gMHhlOSwNCisgIE1fQVBQMTAgPSAweGVhLA0KKyAgTV9BUFAxMSA9IDB4ZWIsDQorICBNX0FQUDEyID0gMHhlYywNCisgIE1fQVBQMTMgPSAweGVkLA0KKyAgTV9BUFAxNCA9IDB4ZWUsDQorICBNX0FQUDE1ID0gMHhlZiwNCisgIA0KKyAgTV9KUEcwICA9IDB4ZjAsDQorICBNX0pQRzEzID0gMHhmZCwNCisgIE1fQ09NICAgPSAweGZlLA0KKyAgDQorICBNX1RFTSAgID0gMHgwMSwNCisgIA0KKyAgTV9FUlJPUiA9IDB4MTAwDQorfSBKUEVHX01BUktFUjsNCisNCisNCisvKiBQcml2YXRlIHN0YXRlICovDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgc3RydWN0IGpwZWdfbWFya2VyX3dyaXRlciBwdWI7IC8qIHB1YmxpYyBmaWVsZHMgKi8NCisNCisgIHVuc2lnbmVkIGludCBsYXN0X3Jlc3RhcnRfaW50ZXJ2YWw7IC8qIGxhc3QgRFJJIHZhbHVlIGVtaXR0ZWQ7IDAgYWZ0ZXIgU09JICovDQorfSBteV9tYXJrZXJfd3JpdGVyOw0KKw0KK3R5cGVkZWYgbXlfbWFya2VyX3dyaXRlciAqIG15X21hcmtlcl9wdHI7DQorDQorDQorLyoNCisgKiBCYXNpYyBvdXRwdXQgcm91dGluZXMuDQorICoNCisgKiBOb3RlIHRoYXQgd2UgZG8gbm90IHN1cHBvcnQgc3VzcGVuc2lvbiB3aGlsZSB3cml0aW5nIGEgbWFya2VyLg0KKyAqIFRoZXJlZm9yZSwgYW4gYXBwbGljYXRpb24gdXNpbmcgc3VzcGVuc2lvbiBtdXN0IGVuc3VyZSB0aGF0IHRoZXJlIGlzDQorICogZW5vdWdoIGJ1ZmZlciBzcGFjZSBmb3IgdGhlIGluaXRpYWwgbWFya2VycyAodHlwLiA2MDAtNzAwIGJ5dGVzKSBiZWZvcmUNCisgKiBjYWxsaW5nIGpwZWdfc3RhcnRfY29tcHJlc3MsIGFuZCBlbm91Z2ggc3BhY2UgdG8gd3JpdGUgdGhlIHRyYWlsaW5nIEVPSQ0KKyAqIChhIGZldyBieXRlcykgYmVmb3JlIGNhbGxpbmcganBlZ19maW5pc2hfY29tcHJlc3MuICBNdWx0aXBhc3MgY29tcHJlc3Npb24NCisgKiBtb2RlcyBhcmUgbm90IHN1cHBvcnRlZCBhdCBhbGwgd2l0aCBzdXNwZW5zaW9uLCBzbyB0aG9zZSB0d28gYXJlIHRoZSBvbmx5DQorICogcG9pbnRzIHdoZXJlIG1hcmtlcnMgd2lsbCBiZSB3cml0dGVuLg0KKyAqLw0KKw0KK0xPQ0FMKHZvaWQpDQorZW1pdF9ieXRlIChqX2NvbXByZXNzX3B0ciBjaW5mbywgaW50IHZhbCkNCisvKiBFbWl0IGEgYnl0ZSAqLw0KK3sNCisgIHN0cnVjdCBqcGVnX2Rlc3RpbmF0aW9uX21nciAqIGRlc3QgPSBjaW5mby0+ZGVzdDsNCisNCisgICooZGVzdC0+bmV4dF9vdXRwdXRfYnl0ZSkrKyA9IChKT0NURVQpIHZhbDsNCisgIGlmICgtLWRlc3QtPmZyZWVfaW5fYnVmZmVyID09IDApIHsNCisgICAgaWYgKCEgKCpkZXN0LT5lbXB0eV9vdXRwdXRfYnVmZmVyKSAoY2luZm8pKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQ0FOVF9TVVNQRU5EKTsNCisgIH0NCit9DQorDQorDQorTE9DQUwodm9pZCkNCitlbWl0X21hcmtlciAoal9jb21wcmVzc19wdHIgY2luZm8sIEpQRUdfTUFSS0VSIG1hcmspDQorLyogRW1pdCBhIG1hcmtlciBjb2RlICovDQorew0KKyAgZW1pdF9ieXRlKGNpbmZvLCAweEZGKTsNCisgIGVtaXRfYnl0ZShjaW5mbywgKGludCkgbWFyayk7DQorfQ0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorZW1pdF8yYnl0ZXMgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgdmFsdWUpDQorLyogRW1pdCBhIDItYnl0ZSBpbnRlZ2VyOyB0aGVzZSBhcmUgYWx3YXlzIE1TQiBmaXJzdCBpbiBKUEVHIGZpbGVzICovDQorew0KKyAgZW1pdF9ieXRlKGNpbmZvLCAodmFsdWUgPj4gOCkgJiAweEZGKTsNCisgIGVtaXRfYnl0ZShjaW5mbywgdmFsdWUgJiAweEZGKTsNCit9DQorDQorDQorLyoNCisgKiBSb3V0aW5lcyB0byB3cml0ZSBzcGVjaWZpYyBtYXJrZXIgdHlwZXMuDQorICovDQorDQorTE9DQUwoaW50KQ0KK2VtaXRfZHF0IChqX2NvbXByZXNzX3B0ciBjaW5mbywgaW50IGluZGV4KQ0KKy8qIEVtaXQgYSBEUVQgbWFya2VyICovDQorLyogUmV0dXJucyB0aGUgcHJlY2lzaW9uIHVzZWQgKDAgPSA4Yml0cywgMSA9IDE2Yml0cykgZm9yIGJhc2VsaW5lIGNoZWNraW5nICovDQorew0KKyAgSlFVQU5UX1RCTCAqIHF0YmwgPSBjaW5mby0+cXVhbnRfdGJsX3B0cnNbaW5kZXhdOw0KKyAgaW50IHByZWM7DQorICBpbnQgaTsNCisNCisgIGlmIChxdGJsID09IE5VTEwpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX05PX1FVQU5UX1RBQkxFLCBpbmRleCk7DQorDQorICBwcmVjID0gMDsNCisgIGZvciAoaSA9IDA7IGkgPCBEQ1RTSVpFMjsgaSsrKSB7DQorICAgIGlmIChxdGJsLT5xdWFudHZhbFtpXSA+IDI1NSkNCisgICAgICBwcmVjID0gMTsNCisgIH0NCisNCisgIGlmICghIHF0YmwtPnNlbnRfdGFibGUpIHsNCisgICAgZW1pdF9tYXJrZXIoY2luZm8sIE1fRFFUKTsNCisNCisgICAgZW1pdF8yYnl0ZXMoY2luZm8sIHByZWMgPyBEQ1RTSVpFMioyICsgMSArIDIgOiBEQ1RTSVpFMiArIDEgKyAyKTsNCisNCisgICAgZW1pdF9ieXRlKGNpbmZvLCBpbmRleCArIChwcmVjPDw0KSk7DQorDQorICAgIGZvciAoaSA9IDA7IGkgPCBEQ1RTSVpFMjsgaSsrKSB7DQorICAgICAgLyogVGhlIHRhYmxlIGVudHJpZXMgbXVzdCBiZSBlbWl0dGVkIGluIHppZ3phZyBvcmRlci4gKi8NCisgICAgICB1bnNpZ25lZCBpbnQgcXZhbCA9IHF0YmwtPnF1YW50dmFsW2pwZWdfbmF0dXJhbF9vcmRlcltpXV07DQorICAgICAgaWYgKHByZWMpDQorCWVtaXRfYnl0ZShjaW5mbywgKGludCkgKHF2YWwgPj4gOCkpOw0KKyAgICAgIGVtaXRfYnl0ZShjaW5mbywgKGludCkgKHF2YWwgJiAweEZGKSk7DQorICAgIH0NCisNCisgICAgcXRibC0+c2VudF90YWJsZSA9IFRSVUU7DQorICB9DQorDQorICByZXR1cm4gcHJlYzsNCit9DQorDQorDQorTE9DQUwodm9pZCkNCitlbWl0X2RodCAoal9jb21wcmVzc19wdHIgY2luZm8sIGludCBpbmRleCwgYm9vbGVhbiBpc19hYykNCisvKiBFbWl0IGEgREhUIG1hcmtlciAqLw0KK3sNCisgIEpIVUZGX1RCTCAqIGh0Ymw7DQorICBpbnQgbGVuZ3RoLCBpOw0KKyAgDQorICBpZiAoaXNfYWMpIHsNCisgICAgaHRibCA9IGNpbmZvLT5hY19odWZmX3RibF9wdHJzW2luZGV4XTsNCisgICAgaW5kZXggKz0gMHgxMDsJCS8qIG91dHB1dCBpbmRleCBoYXMgQUMgYml0IHNldCAqLw0KKyAgfSBlbHNlIHsNCisgICAgaHRibCA9IGNpbmZvLT5kY19odWZmX3RibF9wdHJzW2luZGV4XTsNCisgIH0NCisNCisgIGlmIChodGJsID09IE5VTEwpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX05PX0hVRkZfVEFCTEUsIGluZGV4KTsNCisgIA0KKyAgaWYgKCEgaHRibC0+c2VudF90YWJsZSkgew0KKyAgICBlbWl0X21hcmtlcihjaW5mbywgTV9ESFQpOw0KKyAgICANCisgICAgbGVuZ3RoID0gMDsNCisgICAgZm9yIChpID0gMTsgaSA8PSAxNjsgaSsrKQ0KKyAgICAgIGxlbmd0aCArPSBodGJsLT5iaXRzW2ldOw0KKyAgICANCisgICAgZW1pdF8yYnl0ZXMoY2luZm8sIGxlbmd0aCArIDIgKyAxICsgMTYpOw0KKyAgICBlbWl0X2J5dGUoY2luZm8sIGluZGV4KTsNCisgICAgDQorICAgIGZvciAoaSA9IDE7IGkgPD0gMTY7IGkrKykNCisgICAgICBlbWl0X2J5dGUoY2luZm8sIGh0YmwtPmJpdHNbaV0pOw0KKyAgICANCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQ0KKyAgICAgIGVtaXRfYnl0ZShjaW5mbywgaHRibC0+aHVmZnZhbFtpXSk7DQorICAgIA0KKyAgICBodGJsLT5zZW50X3RhYmxlID0gVFJVRTsNCisgIH0NCit9DQorDQorDQorTE9DQUwodm9pZCkNCitlbWl0X2RhYyAoal9jb21wcmVzc19wdHIgY2luZm8pDQorLyogRW1pdCBhIERBQyBtYXJrZXIgKi8NCisvKiBTaW5jZSB0aGUgdXNlZnVsIGluZm8gaXMgc28gc21hbGwsIHdlIHdhbnQgdG8gZW1pdCBhbGwgdGhlIHRhYmxlcyBpbiAqLw0KKy8qIG9uZSBEQUMgbWFya2VyLiAgVGhlcmVmb3JlIHRoaXMgcm91dGluZSBkb2VzIGl0cyBvd24gc2NhbiBvZiB0aGUgdGFibGUuICovDQorew0KKyNpZmRlZiBDX0FSSVRIX0NPRElOR19TVVBQT1JURUQNCisgIGNoYXIgZGNfaW5fdXNlW05VTV9BUklUSF9UQkxTXTsNCisgIGNoYXIgYWNfaW5fdXNlW05VTV9BUklUSF9UQkxTXTsNCisgIGludCBsZW5ndGgsIGk7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyOw0KKyAgDQorICBmb3IgKGkgPSAwOyBpIDwgTlVNX0FSSVRIX1RCTFM7IGkrKykNCisgICAgZGNfaW5fdXNlW2ldID0gYWNfaW5fdXNlW2ldID0gMDsNCisgIA0KKyAgZm9yIChpID0gMDsgaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBpKyspIHsNCisgICAgY29tcHB0ciA9IGNpbmZvLT5jdXJfY29tcF9pbmZvW2ldOw0KKyAgICBkY19pbl91c2VbY29tcHB0ci0+ZGNfdGJsX25vXSA9IDE7DQorICAgIGFjX2luX3VzZVtjb21wcHRyLT5hY190Ymxfbm9dID0gMTsNCisgIH0NCisgIA0KKyAgbGVuZ3RoID0gMDsNCisgIGZvciAoaSA9IDA7IGkgPCBOVU1fQVJJVEhfVEJMUzsgaSsrKQ0KKyAgICBsZW5ndGggKz0gZGNfaW5fdXNlW2ldICsgYWNfaW5fdXNlW2ldOw0KKyAgDQorICBlbWl0X21hcmtlcihjaW5mbywgTV9EQUMpOw0KKyAgDQorICBlbWl0XzJieXRlcyhjaW5mbywgbGVuZ3RoKjIgKyAyKTsNCisgIA0KKyAgZm9yIChpID0gMDsgaSA8IE5VTV9BUklUSF9UQkxTOyBpKyspIHsNCisgICAgaWYgKGRjX2luX3VzZVtpXSkgew0KKyAgICAgIGVtaXRfYnl0ZShjaW5mbywgaSk7DQorICAgICAgZW1pdF9ieXRlKGNpbmZvLCBjaW5mby0+YXJpdGhfZGNfTFtpXSArIChjaW5mby0+YXJpdGhfZGNfVVtpXTw8NCkpOw0KKyAgICB9DQorICAgIGlmIChhY19pbl91c2VbaV0pIHsNCisgICAgICBlbWl0X2J5dGUoY2luZm8sIGkgKyAweDEwKTsNCisgICAgICBlbWl0X2J5dGUoY2luZm8sIGNpbmZvLT5hcml0aF9hY19LW2ldKTsNCisgICAgfQ0KKyAgfQ0KKyNlbmRpZiAvKiBDX0FSSVRIX0NPRElOR19TVVBQT1JURUQgKi8NCit9DQorDQorDQorTE9DQUwodm9pZCkNCitlbWl0X2RyaSAoal9jb21wcmVzc19wdHIgY2luZm8pDQorLyogRW1pdCBhIERSSSBtYXJrZXIgKi8NCit7DQorICBlbWl0X21hcmtlcihjaW5mbywgTV9EUkkpOw0KKyAgDQorICBlbWl0XzJieXRlcyhjaW5mbywgNCk7CS8qIGZpeGVkIGxlbmd0aCAqLw0KKw0KKyAgZW1pdF8yYnl0ZXMoY2luZm8sIChpbnQpIGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsKTsNCit9DQorDQorDQorTE9DQUwodm9pZCkNCitlbWl0X3NvZiAoal9jb21wcmVzc19wdHIgY2luZm8sIEpQRUdfTUFSS0VSIGNvZGUpDQorLyogRW1pdCBhIFNPRiBtYXJrZXIgKi8NCit7DQorICBpbnQgY2k7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyOw0KKyAgDQorICBlbWl0X21hcmtlcihjaW5mbywgY29kZSk7DQorICANCisgIGVtaXRfMmJ5dGVzKGNpbmZvLCAzICogY2luZm8tPm51bV9jb21wb25lbnRzICsgMiArIDUgKyAxKTsgLyogbGVuZ3RoICovDQorDQorICAvKiBNYWtlIHN1cmUgaW1hZ2UgaXNuJ3QgYmlnZ2VyIHRoYW4gU09GIGZpZWxkIGNhbiBoYW5kbGUgKi8NCisgIGlmICgobG9uZykgY2luZm8tPmltYWdlX2hlaWdodCA+IDY1NTM1TCB8fA0KKyAgICAgIChsb25nKSBjaW5mby0+aW1hZ2Vfd2lkdGggPiA2NTUzNUwpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0lNQUdFX1RPT19CSUcsICh1bnNpZ25lZCBpbnQpIDY1NTM1KTsNCisNCisgIGVtaXRfYnl0ZShjaW5mbywgY2luZm8tPmRhdGFfcHJlY2lzaW9uKTsNCisgIGVtaXRfMmJ5dGVzKGNpbmZvLCAoaW50KSBjaW5mby0+aW1hZ2VfaGVpZ2h0KTsNCisgIGVtaXRfMmJ5dGVzKGNpbmZvLCAoaW50KSBjaW5mby0+aW1hZ2Vfd2lkdGgpOw0KKw0KKyAgZW1pdF9ieXRlKGNpbmZvLCBjaW5mby0+bnVtX2NvbXBvbmVudHMpOw0KKw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIGVtaXRfYnl0ZShjaW5mbywgY29tcHB0ci0+Y29tcG9uZW50X2lkKTsNCisgICAgZW1pdF9ieXRlKGNpbmZvLCAoY29tcHB0ci0+aF9zYW1wX2ZhY3RvciA8PCA0KSArIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IpOw0KKyAgICBlbWl0X2J5dGUoY2luZm8sIGNvbXBwdHItPnF1YW50X3RibF9ubyk7DQorICB9DQorfQ0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorZW1pdF9zb3MgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIEVtaXQgYSBTT1MgbWFya2VyICovDQorew0KKyAgaW50IGksIHRkLCB0YTsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorICANCisgIGVtaXRfbWFya2VyKGNpbmZvLCBNX1NPUyk7DQorICANCisgIGVtaXRfMmJ5dGVzKGNpbmZvLCAyICogY2luZm8tPmNvbXBzX2luX3NjYW4gKyAyICsgMSArIDMpOyAvKiBsZW5ndGggKi8NCisgIA0KKyAgZW1pdF9ieXRlKGNpbmZvLCBjaW5mby0+Y29tcHNfaW5fc2Nhbik7DQorICANCisgIGZvciAoaSA9IDA7IGkgPCBjaW5mby0+Y29tcHNfaW5fc2NhbjsgaSsrKSB7DQorICAgIGNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tpXTsNCisgICAgZW1pdF9ieXRlKGNpbmZvLCBjb21wcHRyLT5jb21wb25lbnRfaWQpOw0KKyAgICB0ZCA9IGNvbXBwdHItPmRjX3RibF9ubzsNCisgICAgdGEgPSBjb21wcHRyLT5hY190Ymxfbm87DQorICAgIGlmIChjaW5mby0+cHJvZ3Jlc3NpdmVfbW9kZSkgew0KKyAgICAgIC8qIFByb2dyZXNzaXZlIG1vZGU6IG9ubHkgREMgb3Igb25seSBBQyB0YWJsZXMgYXJlIHVzZWQgaW4gb25lIHNjYW47DQorICAgICAgICogZnVydGhlcm1vcmUsIEh1ZmZtYW4gY29kaW5nIG9mIERDIHJlZmluZW1lbnQgdXNlcyBubyB0YWJsZSBhdCBhbGwuDQorICAgICAgICogV2UgZW1pdCAwIGZvciB1bnVzZWQgZmllbGQocyk7IHRoaXMgaXMgcmVjb21tZW5kZWQgYnkgdGhlIFAmTSB0ZXh0DQorICAgICAgICogYnV0IGRvZXMgbm90IHNlZW0gdG8gYmUgc3BlY2lmaWVkIGluIHRoZSBzdGFuZGFyZC4NCisgICAgICAgKi8NCisgICAgICBpZiAoY2luZm8tPlNzID09IDApIHsNCisJdGEgPSAwOwkJCS8qIERDIHNjYW4gKi8NCisJaWYgKGNpbmZvLT5BaCAhPSAwICYmICFjaW5mby0+YXJpdGhfY29kZSkNCisJICB0ZCA9IDA7CQkvKiBubyBEQyB0YWJsZSBlaXRoZXIgKi8NCisgICAgICB9IGVsc2Ugew0KKwl0ZCA9IDA7CQkJLyogQUMgc2NhbiAqLw0KKyAgICAgIH0NCisgICAgfQ0KKyAgICBlbWl0X2J5dGUoY2luZm8sICh0ZCA8PCA0KSArIHRhKTsNCisgIH0NCisNCisgIGVtaXRfYnl0ZShjaW5mbywgY2luZm8tPlNzKTsNCisgIGVtaXRfYnl0ZShjaW5mbywgY2luZm8tPlNlKTsNCisgIGVtaXRfYnl0ZShjaW5mbywgKGNpbmZvLT5BaCA8PCA0KSArIGNpbmZvLT5BbCk7DQorfQ0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorZW1pdF9qZmlmX2FwcDAgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIEVtaXQgYSBKRklGLWNvbXBsaWFudCBBUFAwIG1hcmtlciAqLw0KK3sNCisgIC8qDQorICAgKiBMZW5ndGggb2YgQVBQMCBibG9jawkoMiBieXRlcykNCisgICAqIEJsb2NrIElECQkJKDQgYnl0ZXMgLSBBU0NJSSAiSkZJRiIpDQorICAgKiBaZXJvIGJ5dGUJCQkoMSBieXRlIHRvIHRlcm1pbmF0ZSB0aGUgSUQgc3RyaW5nKQ0KKyAgICogVmVyc2lvbiBNYWpvciwgTWlub3IJKDIgYnl0ZXMgLSBtYWpvciBmaXJzdCkNCisgICAqIFVuaXRzCQkJKDEgYnl0ZSAtIDB4MDAgPSBub25lLCAweDAxID0gaW5jaCwgMHgwMiA9IGNtKQ0KKyAgICogWGRwdQkJCSgyIGJ5dGVzIC0gZG90cyBwZXIgdW5pdCBob3Jpem9udGFsKQ0KKyAgICogWWRwdQkJCSgyIGJ5dGVzIC0gZG90cyBwZXIgdW5pdCB2ZXJ0aWNhbCkNCisgICAqIFRodW1ibmFpbCBYIHNpemUJCSgxIGJ5dGUpDQorICAgKiBUaHVtYm5haWwgWSBzaXplCQkoMSBieXRlKQ0KKyAgICovDQorICANCisgIGVtaXRfbWFya2VyKGNpbmZvLCBNX0FQUDApOw0KKyAgDQorICBlbWl0XzJieXRlcyhjaW5mbywgMiArIDQgKyAxICsgMiArIDEgKyAyICsgMiArIDEgKyAxKTsgLyogbGVuZ3RoICovDQorDQorICBlbWl0X2J5dGUoY2luZm8sIDB4NEEpOwkvKiBJZGVudGlmaWVyOiBBU0NJSSAiSkZJRiIgKi8NCisgIGVtaXRfYnl0ZShjaW5mbywgMHg0Nik7DQorICBlbWl0X2J5dGUoY2luZm8sIDB4NDkpOw0KKyAgZW1pdF9ieXRlKGNpbmZvLCAweDQ2KTsNCisgIGVtaXRfYnl0ZShjaW5mbywgMCk7DQorICBlbWl0X2J5dGUoY2luZm8sIGNpbmZvLT5KRklGX21ham9yX3ZlcnNpb24pOyAvKiBWZXJzaW9uIGZpZWxkcyAqLw0KKyAgZW1pdF9ieXRlKGNpbmZvLCBjaW5mby0+SkZJRl9taW5vcl92ZXJzaW9uKTsNCisgIGVtaXRfYnl0ZShjaW5mbywgY2luZm8tPmRlbnNpdHlfdW5pdCk7IC8qIFBpeGVsIHNpemUgaW5mb3JtYXRpb24gKi8NCisgIGVtaXRfMmJ5dGVzKGNpbmZvLCAoaW50KSBjaW5mby0+WF9kZW5zaXR5KTsNCisgIGVtaXRfMmJ5dGVzKGNpbmZvLCAoaW50KSBjaW5mby0+WV9kZW5zaXR5KTsNCisgIGVtaXRfYnl0ZShjaW5mbywgMCk7CQkvKiBObyB0aHVtYm5haWwgaW1hZ2UgKi8NCisgIGVtaXRfYnl0ZShjaW5mbywgMCk7DQorfQ0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorZW1pdF9hZG9iZV9hcHAxNCAoal9jb21wcmVzc19wdHIgY2luZm8pDQorLyogRW1pdCBhbiBBZG9iZSBBUFAxNCBtYXJrZXIgKi8NCit7DQorICAvKg0KKyAgICogTGVuZ3RoIG9mIEFQUDE0IGJsb2NrCSgyIGJ5dGVzKQ0KKyAgICogQmxvY2sgSUQJCQkoNSBieXRlcyAtIEFTQ0lJICJBZG9iZSIpDQorICAgKiBWZXJzaW9uIE51bWJlcgkJKDIgYnl0ZXMgLSBjdXJyZW50bHkgMTAwKQ0KKyAgICogRmxhZ3MwCQkJKDIgYnl0ZXMgLSBjdXJyZW50bHkgMCkNCisgICAqIEZsYWdzMQkJCSgyIGJ5dGVzIC0gY3VycmVudGx5IDApDQorICAgKiBDb2xvciB0cmFuc2Zvcm0JCSgxIGJ5dGUpDQorICAgKg0KKyAgICogQWx0aG91Z2ggQWRvYmUgVE4gNTExNiBtZW50aW9ucyBWZXJzaW9uID0gMTAxLCBhbGwgdGhlIEFkb2JlIGZpbGVzDQorICAgKiBub3cgaW4gY2lyY3VsYXRpb24gc2VlbSB0byB1c2UgVmVyc2lvbiA9IDEwMCwgc28gdGhhdCdzIHdoYXQgd2Ugd3JpdGUuDQorICAgKg0KKyAgICogV2Ugd3JpdGUgdGhlIGNvbG9yIHRyYW5zZm9ybSBieXRlIGFzIDEgaWYgdGhlIEpQRUcgY29sb3Igc3BhY2UgaXMNCisgICAqIFlDYkNyLCAyIGlmIGl0J3MgWUNDSywgMCBvdGhlcndpc2UuICBBZG9iZSdzIGRlZmluaXRpb24gaGFzIHRvIGRvIHdpdGgNCisgICAqIHdoZXRoZXIgdGhlIGVuY29kZXIgcGVyZm9ybWVkIGEgdHJhbnNmb3JtYXRpb24sIHdoaWNoIGlzIHByZXR0eSB1c2VsZXNzLg0KKyAgICovDQorICANCisgIGVtaXRfbWFya2VyKGNpbmZvLCBNX0FQUDE0KTsNCisgIA0KKyAgZW1pdF8yYnl0ZXMoY2luZm8sIDIgKyA1ICsgMiArIDIgKyAyICsgMSk7IC8qIGxlbmd0aCAqLw0KKw0KKyAgZW1pdF9ieXRlKGNpbmZvLCAweDQxKTsJLyogSWRlbnRpZmllcjogQVNDSUkgIkFkb2JlIiAqLw0KKyAgZW1pdF9ieXRlKGNpbmZvLCAweDY0KTsNCisgIGVtaXRfYnl0ZShjaW5mbywgMHg2Rik7DQorICBlbWl0X2J5dGUoY2luZm8sIDB4NjIpOw0KKyAgZW1pdF9ieXRlKGNpbmZvLCAweDY1KTsNCisgIGVtaXRfMmJ5dGVzKGNpbmZvLCAxMDApOwkvKiBWZXJzaW9uICovDQorICBlbWl0XzJieXRlcyhjaW5mbywgMCk7CS8qIEZsYWdzMCAqLw0KKyAgZW1pdF8yYnl0ZXMoY2luZm8sIDApOwkvKiBGbGFnczEgKi8NCisgIHN3aXRjaCAoY2luZm8tPmpwZWdfY29sb3Jfc3BhY2UpIHsNCisgIGNhc2UgSkNTX1lDYkNyOg0KKyAgICBlbWl0X2J5dGUoY2luZm8sIDEpOwkvKiBDb2xvciB0cmFuc2Zvcm0gPSAxICovDQorICAgIGJyZWFrOw0KKyAgY2FzZSBKQ1NfWUNDSzoNCisgICAgZW1pdF9ieXRlKGNpbmZvLCAyKTsJLyogQ29sb3IgdHJhbnNmb3JtID0gMiAqLw0KKyAgICBicmVhazsNCisgIGRlZmF1bHQ6DQorICAgIGVtaXRfYnl0ZShjaW5mbywgMCk7CS8qIENvbG9yIHRyYW5zZm9ybSA9IDAgKi8NCisgICAgYnJlYWs7DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogVGhlc2Ugcm91dGluZXMgYWxsb3cgd3JpdGluZyBhbiBhcmJpdHJhcnkgbWFya2VyIHdpdGggcGFyYW1ldGVycy4NCisgKiBUaGUgb25seSBpbnRlbmRlZCB1c2UgaXMgdG8gZW1pdCBDT00gb3IgQVBQbiBtYXJrZXJzIGFmdGVyIGNhbGxpbmcNCisgKiB3cml0ZV9maWxlX2hlYWRlciBhbmQgYmVmb3JlIGNhbGxpbmcgd3JpdGVfZnJhbWVfaGVhZGVyLg0KKyAqIE90aGVyIHVzZXMgYXJlIG5vdCBndWFyYW50ZWVkIHRvIHByb2R1Y2UgZGVzaXJhYmxlIHJlc3VsdHMuDQorICogQ291bnRpbmcgdGhlIHBhcmFtZXRlciBieXRlcyBwcm9wZXJseSBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQord3JpdGVfbWFya2VyX2hlYWRlciAoal9jb21wcmVzc19wdHIgY2luZm8sIGludCBtYXJrZXIsIHVuc2lnbmVkIGludCBkYXRhbGVuKQ0KKy8qIEVtaXQgYW4gYXJiaXRyYXJ5IG1hcmtlciBoZWFkZXIgKi8NCit7DQorICBpZiAoZGF0YWxlbiA+ICh1bnNpZ25lZCBpbnQpIDY1NTMzKQkJLyogc2FmZXR5IGNoZWNrICovDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0xFTkdUSCk7DQorDQorICBlbWl0X21hcmtlcihjaW5mbywgKEpQRUdfTUFSS0VSKSBtYXJrZXIpOw0KKw0KKyAgZW1pdF8yYnl0ZXMoY2luZm8sIChpbnQpIChkYXRhbGVuICsgMikpOwkvKiB0b3RhbCBsZW5ndGggKi8NCit9DQorDQorTUVUSE9EREVGKHZvaWQpDQord3JpdGVfbWFya2VyX2J5dGUgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgdmFsKQ0KKy8qIEVtaXQgb25lIGJ5dGUgb2YgbWFya2VyIHBhcmFtZXRlcnMgZm9sbG93aW5nIHdyaXRlX21hcmtlcl9oZWFkZXIgKi8NCit7DQorICBlbWl0X2J5dGUoY2luZm8sIHZhbCk7DQorfQ0KKw0KKw0KKy8qDQorICogV3JpdGUgZGF0YXN0cmVhbSBoZWFkZXIuDQorICogVGhpcyBjb25zaXN0cyBvZiBhbiBTT0kgYW5kIG9wdGlvbmFsIEFQUG4gbWFya2Vycy4NCisgKiBXZSByZWNvbW1lbmQgdXNlIG9mIHRoZSBKRklGIG1hcmtlciwgYnV0IG5vdCB0aGUgQWRvYmUgbWFya2VyLA0KKyAqIHdoZW4gdXNpbmcgWUNiQ3Igb3IgZ3JheXNjYWxlIGRhdGEuICBUaGUgSkZJRiBtYXJrZXIgc2hvdWxkIE5PVA0KKyAqIGJlIHVzZWQgZm9yIGFueSBvdGhlciBKUEVHIGNvbG9yc3BhY2UuICBUaGUgQWRvYmUgbWFya2VyIGlzIGhlbHBmdWwNCisgKiB0byBkaXN0aW5ndWlzaCBSR0IsIENNWUssIGFuZCBZQ0NLIGNvbG9yc3BhY2VzLg0KKyAqIE5vdGUgdGhhdCBhbiBhcHBsaWNhdGlvbiBjYW4gd3JpdGUgYWRkaXRpb25hbCBoZWFkZXIgbWFya2VycyBhZnRlcg0KKyAqIGpwZWdfc3RhcnRfY29tcHJlc3MgcmV0dXJucy4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCit3cml0ZV9maWxlX2hlYWRlciAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfbWFya2VyX3B0ciBtYXJrZXIgPSAobXlfbWFya2VyX3B0cikgY2luZm8tPm1hcmtlcjsNCisNCisgIGVtaXRfbWFya2VyKGNpbmZvLCBNX1NPSSk7CS8qIGZpcnN0IHRoZSBTT0kgKi8NCisNCisgIC8qIFNPSSBpcyBkZWZpbmVkIHRvIHJlc2V0IHJlc3RhcnQgaW50ZXJ2YWwgdG8gMCAqLw0KKyAgbWFya2VyLT5sYXN0X3Jlc3RhcnRfaW50ZXJ2YWwgPSAwOw0KKw0KKyAgaWYgKGNpbmZvLT53cml0ZV9KRklGX2hlYWRlcikJLyogbmV4dCBhbiBvcHRpb25hbCBKRklGIEFQUDAgKi8NCisgICAgZW1pdF9qZmlmX2FwcDAoY2luZm8pOw0KKyAgaWYgKGNpbmZvLT53cml0ZV9BZG9iZV9tYXJrZXIpIC8qIG5leHQgYW4gb3B0aW9uYWwgQWRvYmUgQVBQMTQgKi8NCisgICAgZW1pdF9hZG9iZV9hcHAxNChjaW5mbyk7DQorfQ0KKw0KKw0KKy8qDQorICogV3JpdGUgZnJhbWUgaGVhZGVyLg0KKyAqIFRoaXMgY29uc2lzdHMgb2YgRFFUIGFuZCBTT0ZuIG1hcmtlcnMuDQorICogTm90ZSB0aGF0IHdlIGRvIG5vdCBlbWl0IHRoZSBTT0YgdW50aWwgd2UgaGF2ZSBlbWl0dGVkIHRoZSBEUVQocykuDQorICogVGhpcyBhdm9pZHMgY29tcGF0aWJpbGl0eSBwcm9ibGVtcyB3aXRoIGluY29ycmVjdCBpbXBsZW1lbnRhdGlvbnMgdGhhdA0KKyAqIHRyeSB0byBlcnJvci1jaGVjayB0aGUgcXVhbnQgdGFibGUgbnVtYmVycyBhcyBzb29uIGFzIHRoZXkgc2VlIHRoZSBTT0YuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQord3JpdGVfZnJhbWVfaGVhZGVyIChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBpbnQgY2ksIHByZWM7DQorICBib29sZWFuIGlzX2Jhc2VsaW5lOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIA0KKyAgLyogRW1pdCBEUVQgZm9yIGVhY2ggcXVhbnRpemF0aW9uIHRhYmxlLg0KKyAgICogTm90ZSB0aGF0IGVtaXRfZHF0KCkgc3VwcHJlc3NlcyBhbnkgZHVwbGljYXRlIHRhYmxlcy4NCisgICAqLw0KKyAgcHJlYyA9IDA7DQorICBmb3IgKGNpID0gMCwgY29tcHB0ciA9IGNpbmZvLT5jb21wX2luZm87IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgICAgICBjaSsrLCBjb21wcHRyKyspIHsNCisgICAgcHJlYyArPSBlbWl0X2RxdChjaW5mbywgY29tcHB0ci0+cXVhbnRfdGJsX25vKTsNCisgIH0NCisgIC8qIG5vdyBwcmVjIGlzIG5vbnplcm8gaWZmIHRoZXJlIGFyZSBhbnkgMTYtYml0IHF1YW50IHRhYmxlcy4gKi8NCisNCisgIC8qIENoZWNrIGZvciBhIG5vbi1iYXNlbGluZSBzcGVjaWZpY2F0aW9uLg0KKyAgICogTm90ZSB3ZSBhc3N1bWUgdGhhdCBIdWZmbWFuIHRhYmxlIG51bWJlcnMgd29uJ3QgYmUgY2hhbmdlZCBsYXRlci4NCisgICAqLw0KKyAgaWYgKGNpbmZvLT5hcml0aF9jb2RlIHx8IGNpbmZvLT5wcm9ncmVzc2l2ZV9tb2RlIHx8DQorICAgICAgY2luZm8tPmRhdGFfcHJlY2lzaW9uICE9IDgpIHsNCisgICAgaXNfYmFzZWxpbmUgPSBGQUxTRTsNCisgIH0gZWxzZSB7DQorICAgIGlzX2Jhc2VsaW5lID0gVFJVRTsNCisgICAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisJIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICAgIGlmIChjb21wcHRyLT5kY190Ymxfbm8gPiAxIHx8IGNvbXBwdHItPmFjX3RibF9ubyA+IDEpDQorCWlzX2Jhc2VsaW5lID0gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHByZWMgJiYgaXNfYmFzZWxpbmUpIHsNCisgICAgICBpc19iYXNlbGluZSA9IEZBTFNFOw0KKyAgICAgIC8qIElmIGl0J3MgYmFzZWxpbmUgZXhjZXB0IGZvciBxdWFudGl6ZXIgc2l6ZSwgd2FybiB0aGUgdXNlciAqLw0KKyAgICAgIFRSQUNFTVMoY2luZm8sIDAsIEpUUkNfMTZCSVRfVEFCTEVTKTsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgLyogRW1pdCB0aGUgcHJvcGVyIFNPRiBtYXJrZXIgKi8NCisgIGlmIChjaW5mby0+YXJpdGhfY29kZSkgew0KKyAgICBlbWl0X3NvZihjaW5mbywgTV9TT0Y5KTsJLyogU09GIGNvZGUgZm9yIGFyaXRobWV0aWMgY29kaW5nICovDQorICB9IGVsc2Ugew0KKyAgICBpZiAoY2luZm8tPnByb2dyZXNzaXZlX21vZGUpDQorICAgICAgZW1pdF9zb2YoY2luZm8sIE1fU09GMik7CS8qIFNPRiBjb2RlIGZvciBwcm9ncmVzc2l2ZSBIdWZmbWFuICovDQorICAgIGVsc2UgaWYgKGlzX2Jhc2VsaW5lKQ0KKyAgICAgIGVtaXRfc29mKGNpbmZvLCBNX1NPRjApOwkvKiBTT0YgY29kZSBmb3IgYmFzZWxpbmUgaW1wbGVtZW50YXRpb24gKi8NCisgICAgZWxzZQ0KKyAgICAgIGVtaXRfc29mKGNpbmZvLCBNX1NPRjEpOwkvKiBTT0YgY29kZSBmb3Igbm9uLWJhc2VsaW5lIEh1ZmZtYW4gZmlsZSAqLw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIFdyaXRlIHNjYW4gaGVhZGVyLg0KKyAqIFRoaXMgY29uc2lzdHMgb2YgREhUIG9yIERBQyBtYXJrZXJzLCBvcHRpb25hbCBEUkksIGFuZCBTT1MuDQorICogQ29tcHJlc3NlZCBkYXRhIHdpbGwgYmUgd3JpdHRlbiBmb2xsb3dpbmcgdGhlIFNPUy4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCit3cml0ZV9zY2FuX2hlYWRlciAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfbWFya2VyX3B0ciBtYXJrZXIgPSAobXlfbWFya2VyX3B0cikgY2luZm8tPm1hcmtlcjsNCisgIGludCBpOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisNCisgIGlmIChjaW5mby0+YXJpdGhfY29kZSkgew0KKyAgICAvKiBFbWl0IGFyaXRoIGNvbmRpdGlvbmluZyBpbmZvLiAgV2UgbWF5IGhhdmUgc29tZSBkdXBsaWNhdGlvbg0KKyAgICAgKiBpZiB0aGUgZmlsZSBoYXMgbXVsdGlwbGUgc2NhbnMsIGJ1dCBpdCdzIHNvIHNtYWxsIGl0J3MgaGFyZGx5DQorICAgICAqIHdvcnRoIHdvcnJ5aW5nIGFib3V0Lg0KKyAgICAgKi8NCisgICAgZW1pdF9kYWMoY2luZm8pOw0KKyAgfSBlbHNlIHsNCisgICAgLyogRW1pdCBIdWZmbWFuIHRhYmxlcy4NCisgICAgICogTm90ZSB0aGF0IGVtaXRfZGh0KCkgc3VwcHJlc3NlcyBhbnkgZHVwbGljYXRlIHRhYmxlcy4NCisgICAgICovDQorICAgIGZvciAoaSA9IDA7IGkgPCBjaW5mby0+Y29tcHNfaW5fc2NhbjsgaSsrKSB7DQorICAgICAgY29tcHB0ciA9IGNpbmZvLT5jdXJfY29tcF9pbmZvW2ldOw0KKyAgICAgIGlmIChjaW5mby0+cHJvZ3Jlc3NpdmVfbW9kZSkgew0KKwkvKiBQcm9ncmVzc2l2ZSBtb2RlOiBvbmx5IERDIG9yIG9ubHkgQUMgdGFibGVzIGFyZSB1c2VkIGluIG9uZSBzY2FuICovDQorCWlmIChjaW5mby0+U3MgPT0gMCkgew0KKwkgIGlmIChjaW5mby0+QWggPT0gMCkJLyogREMgbmVlZHMgbm8gdGFibGUgZm9yIHJlZmluZW1lbnQgc2NhbiAqLw0KKwkgICAgZW1pdF9kaHQoY2luZm8sIGNvbXBwdHItPmRjX3RibF9ubywgRkFMU0UpOw0KKwl9IGVsc2Ugew0KKwkgIGVtaXRfZGh0KGNpbmZvLCBjb21wcHRyLT5hY190Ymxfbm8sIFRSVUUpOw0KKwl9DQorICAgICAgfSBlbHNlIHsNCisJLyogU2VxdWVudGlhbCBtb2RlOiBuZWVkIGJvdGggREMgYW5kIEFDIHRhYmxlcyAqLw0KKwllbWl0X2RodChjaW5mbywgY29tcHB0ci0+ZGNfdGJsX25vLCBGQUxTRSk7DQorCWVtaXRfZGh0KGNpbmZvLCBjb21wcHRyLT5hY190Ymxfbm8sIFRSVUUpOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKw0KKyAgLyogRW1pdCBEUkkgaWYgcmVxdWlyZWQgLS0tIG5vdGUgdGhhdCBEUkkgdmFsdWUgY291bGQgY2hhbmdlIGZvciBlYWNoIHNjYW4uDQorICAgKiBXZSBhdm9pZCB3YXN0aW5nIHNwYWNlIHdpdGggdW5uZWNlc3NhcnkgRFJJcywgaG93ZXZlci4NCisgICAqLw0KKyAgaWYgKGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsICE9IG1hcmtlci0+bGFzdF9yZXN0YXJ0X2ludGVydmFsKSB7DQorICAgIGVtaXRfZHJpKGNpbmZvKTsNCisgICAgbWFya2VyLT5sYXN0X3Jlc3RhcnRfaW50ZXJ2YWwgPSBjaW5mby0+cmVzdGFydF9pbnRlcnZhbDsNCisgIH0NCisNCisgIGVtaXRfc29zKGNpbmZvKTsNCit9DQorDQorDQorLyoNCisgKiBXcml0ZSBkYXRhc3RyZWFtIHRyYWlsZXIuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQord3JpdGVfZmlsZV90cmFpbGVyIChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBlbWl0X21hcmtlcihjaW5mbywgTV9FT0kpOw0KK30NCisNCisNCisvKg0KKyAqIFdyaXRlIGFuIGFiYnJldmlhdGVkIHRhYmxlLXNwZWNpZmljYXRpb24gZGF0YXN0cmVhbS4NCisgKiBUaGlzIGNvbnNpc3RzIG9mIFNPSSwgRFFUIGFuZCBESFQgdGFibGVzLCBhbmQgRU9JLg0KKyAqIEFueSB0YWJsZSB0aGF0IGlzIGRlZmluZWQgYW5kIG5vdCBtYXJrZWQgc2VudF90YWJsZSA9IFRSVUUgd2lsbCBiZQ0KKyAqIGVtaXR0ZWQuICBOb3RlIHRoYXQgYWxsIHRhYmxlcyB3aWxsIGJlIG1hcmtlZCBzZW50X3RhYmxlID0gVFJVRSBhdCBleGl0Lg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3dyaXRlX3RhYmxlc19vbmx5IChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBpbnQgaTsNCisNCisgIGVtaXRfbWFya2VyKGNpbmZvLCBNX1NPSSk7DQorDQorICBmb3IgKGkgPSAwOyBpIDwgTlVNX1FVQU5UX1RCTFM7IGkrKykgew0KKyAgICBpZiAoY2luZm8tPnF1YW50X3RibF9wdHJzW2ldICE9IE5VTEwpDQorICAgICAgKHZvaWQpIGVtaXRfZHF0KGNpbmZvLCBpKTsNCisgIH0NCisNCisgIGlmICghIGNpbmZvLT5hcml0aF9jb2RlKSB7DQorICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fSFVGRl9UQkxTOyBpKyspIHsNCisgICAgICBpZiAoY2luZm8tPmRjX2h1ZmZfdGJsX3B0cnNbaV0gIT0gTlVMTCkNCisJZW1pdF9kaHQoY2luZm8sIGksIEZBTFNFKTsNCisgICAgICBpZiAoY2luZm8tPmFjX2h1ZmZfdGJsX3B0cnNbaV0gIT0gTlVMTCkNCisJZW1pdF9kaHQoY2luZm8sIGksIFRSVUUpOw0KKyAgICB9DQorICB9DQorDQorICBlbWl0X21hcmtlcihjaW5mbywgTV9FT0kpOw0KK30NCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgdGhlIG1hcmtlciB3cml0ZXIgbW9kdWxlLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2ppbml0X21hcmtlcl93cml0ZXIgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIG15X21hcmtlcl9wdHIgbWFya2VyOw0KKw0KKyAgLyogQ3JlYXRlIHRoZSBzdWJvYmplY3QgKi8NCisgIG1hcmtlciA9IChteV9tYXJrZXJfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQlTSVpFT0YobXlfbWFya2VyX3dyaXRlcikpOw0KKyAgY2luZm8tPm1hcmtlciA9IChzdHJ1Y3QganBlZ19tYXJrZXJfd3JpdGVyICopIG1hcmtlcjsNCisgIC8qIEluaXRpYWxpemUgbWV0aG9kIHBvaW50ZXJzICovDQorICBtYXJrZXItPnB1Yi53cml0ZV9maWxlX2hlYWRlciA9IHdyaXRlX2ZpbGVfaGVhZGVyOw0KKyAgbWFya2VyLT5wdWIud3JpdGVfZnJhbWVfaGVhZGVyID0gd3JpdGVfZnJhbWVfaGVhZGVyOw0KKyAgbWFya2VyLT5wdWIud3JpdGVfc2Nhbl9oZWFkZXIgPSB3cml0ZV9zY2FuX2hlYWRlcjsNCisgIG1hcmtlci0+cHViLndyaXRlX2ZpbGVfdHJhaWxlciA9IHdyaXRlX2ZpbGVfdHJhaWxlcjsNCisgIG1hcmtlci0+cHViLndyaXRlX3RhYmxlc19vbmx5ID0gd3JpdGVfdGFibGVzX29ubHk7DQorICBtYXJrZXItPnB1Yi53cml0ZV9tYXJrZXJfaGVhZGVyID0gd3JpdGVfbWFya2VyX2hlYWRlcjsNCisgIG1hcmtlci0+cHViLndyaXRlX21hcmtlcl9ieXRlID0gd3JpdGVfbWFya2VyX2J5dGU7DQorICAvKiBJbml0aWFsaXplIHByaXZhdGUgc3RhdGUgKi8NCisgIG1hcmtlci0+bGFzdF9yZXN0YXJ0X2ludGVydmFsID0gMDsNCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNtYXN0ZXIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjbWFzdGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcwZjc3NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjbWFzdGVyLmMKQEAgLTAsMCArMSw1OTMgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqY21hc3Rlci5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgbWFzdGVyIGNvbnRyb2wgbG9naWMgZm9yIHRoZSBKUEVHIGNvbXByZXNzb3IuDQorICogVGhlc2Ugcm91dGluZXMgYXJlIGNvbmNlcm5lZCB3aXRoIHBhcmFtZXRlciB2YWxpZGF0aW9uLCBpbml0aWFsIHNldHVwLA0KKyAqIGFuZCBpbnRlci1wYXNzIGNvbnRyb2wgKGRldGVybWluaW5nIHRoZSBudW1iZXIgb2YgcGFzc2VzIGFuZCB0aGUgd29yayANCisgKiB0byBiZSBkb25lIGluIGVhY2ggcGFzcykuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQorLyogUHJpdmF0ZSBzdGF0ZSAqLw0KKw0KK3R5cGVkZWYgZW51bSB7DQorCW1haW5fcGFzcywJCS8qIGlucHV0IGRhdGEsIGFsc28gZG8gZmlyc3Qgb3V0cHV0IHN0ZXAgKi8NCisJaHVmZl9vcHRfcGFzcywJCS8qIEh1ZmZtYW4gY29kZSBvcHRpbWl6YXRpb24gcGFzcyAqLw0KKwlvdXRwdXRfcGFzcwkJLyogZGF0YSBvdXRwdXQgcGFzcyAqLw0KK30gY19wYXNzX3R5cGU7DQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgc3RydWN0IGpwZWdfY29tcF9tYXN0ZXIgcHViOwkvKiBwdWJsaWMgZmllbGRzICovDQorDQorICBjX3Bhc3NfdHlwZSBwYXNzX3R5cGU7CS8qIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IHBhc3MgKi8NCisNCisgIGludCBwYXNzX251bWJlcjsJCS8qICMgb2YgcGFzc2VzIGNvbXBsZXRlZCAqLw0KKyAgaW50IHRvdGFsX3Bhc3NlczsJCS8qIHRvdGFsICMgb2YgcGFzc2VzIG5lZWRlZCAqLw0KKw0KKyAgaW50IHNjYW5fbnVtYmVyOwkJLyogY3VycmVudCBpbmRleCBpbiBzY2FuX2luZm9bXSAqLw0KK30gbXlfY29tcF9tYXN0ZXI7DQorDQordHlwZWRlZiBteV9jb21wX21hc3RlciAqIG15X21hc3Rlcl9wdHI7DQorDQorDQorLyoNCisgKiBTdXBwb3J0IHJvdXRpbmVzIHRoYXQgZG8gdmFyaW91cyBlc3NlbnRpYWwgY2FsY3VsYXRpb25zLg0KKyAqLw0KKw0KK0xPQ0FMKHZvaWQpDQoraW5pdGlhbF9zZXR1cCAoal9jb21wcmVzc19wdHIgY2luZm8pDQorLyogRG8gY29tcHV0YXRpb25zIHRoYXQgYXJlIG5lZWRlZCBiZWZvcmUgbWFzdGVyIHNlbGVjdGlvbiBwaGFzZSAqLw0KK3sNCisgIGludCBjaTsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorICBsb25nIHNhbXBsZXNwZXJyb3c7DQorICBKRElNRU5TSU9OIGpkX3NhbXBsZXNwZXJyb3c7DQorDQorICAvKiBTYW5pdHkgY2hlY2sgb24gaW1hZ2UgZGltZW5zaW9ucyAqLw0KKyAgaWYgKGNpbmZvLT5pbWFnZV9oZWlnaHQgPD0gMCB8fCBjaW5mby0+aW1hZ2Vfd2lkdGggPD0gMA0KKyAgICAgIHx8IGNpbmZvLT5udW1fY29tcG9uZW50cyA8PSAwIHx8IGNpbmZvLT5pbnB1dF9jb21wb25lbnRzIDw9IDApDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfRU1QVFlfSU1BR0UpOw0KKw0KKyAgLyogTWFrZSBzdXJlIGltYWdlIGlzbid0IGJpZ2dlciB0aGFuIEkgY2FuIGhhbmRsZSAqLw0KKyAgaWYgKChsb25nKSBjaW5mby0+aW1hZ2VfaGVpZ2h0ID4gKGxvbmcpIEpQRUdfTUFYX0RJTUVOU0lPTiB8fA0KKyAgICAgIChsb25nKSBjaW5mby0+aW1hZ2Vfd2lkdGggPiAobG9uZykgSlBFR19NQVhfRElNRU5TSU9OKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9JTUFHRV9UT09fQklHLCAodW5zaWduZWQgaW50KSBKUEVHX01BWF9ESU1FTlNJT04pOw0KKw0KKyAgLyogV2lkdGggb2YgYW4gaW5wdXQgc2NhbmxpbmUgbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIEpESU1FTlNJT04uICovDQorICBzYW1wbGVzcGVycm93ID0gKGxvbmcpIGNpbmZvLT5pbWFnZV93aWR0aCAqIChsb25nKSBjaW5mby0+aW5wdXRfY29tcG9uZW50czsNCisgIGpkX3NhbXBsZXNwZXJyb3cgPSAoSkRJTUVOU0lPTikgc2FtcGxlc3BlcnJvdzsNCisgIGlmICgobG9uZykgamRfc2FtcGxlc3BlcnJvdyAhPSBzYW1wbGVzcGVycm93KQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX1dJRFRIX09WRVJGTE9XKTsNCisNCisgIC8qIEZvciBub3csIHByZWNpc2lvbiBtdXN0IG1hdGNoIGNvbXBpbGVkLWluIHZhbHVlLi4uICovDQorICBpZiAoY2luZm8tPmRhdGFfcHJlY2lzaW9uICE9IEJJVFNfSU5fSlNBTVBMRSkNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1BSRUNJU0lPTiwgY2luZm8tPmRhdGFfcHJlY2lzaW9uKTsNCisNCisgIC8qIENoZWNrIHRoYXQgbnVtYmVyIG9mIGNvbXBvbmVudHMgd29uJ3QgZXhjZWVkIGludGVybmFsIGFycmF5IHNpemVzICovDQorICBpZiAoY2luZm8tPm51bV9jb21wb25lbnRzID4gTUFYX0NPTVBPTkVOVFMpDQorICAgIEVSUkVYSVQyKGNpbmZvLCBKRVJSX0NPTVBPTkVOVF9DT1VOVCwgY2luZm8tPm51bV9jb21wb25lbnRzLA0KKwkgICAgIE1BWF9DT01QT05FTlRTKTsNCisNCisgIC8qIENvbXB1dGUgbWF4aW11bSBzYW1wbGluZyBmYWN0b3JzOyBjaGVjayBmYWN0b3IgdmFsaWRpdHkgKi8NCisgIGNpbmZvLT5tYXhfaF9zYW1wX2ZhY3RvciA9IDE7DQorICBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IgPSAxOw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIGlmIChjb21wcHRyLT5oX3NhbXBfZmFjdG9yPD0wIHx8IGNvbXBwdHItPmhfc2FtcF9mYWN0b3I+TUFYX1NBTVBfRkFDVE9SIHx8DQorCWNvbXBwdHItPnZfc2FtcF9mYWN0b3I8PTAgfHwgY29tcHB0ci0+dl9zYW1wX2ZhY3Rvcj5NQVhfU0FNUF9GQUNUT1IpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfU0FNUExJTkcpOw0KKyAgICBjaW5mby0+bWF4X2hfc2FtcF9mYWN0b3IgPSBNQVgoY2luZm8tPm1heF9oX3NhbXBfZmFjdG9yLA0KKwkJCQkgICBjb21wcHRyLT5oX3NhbXBfZmFjdG9yKTsNCisgICAgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yID0gTUFYKGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvciwNCisJCQkJICAgY29tcHB0ci0+dl9zYW1wX2ZhY3Rvcik7DQorICB9DQorDQorICAvKiBDb21wdXRlIGRpbWVuc2lvbnMgb2YgY29tcG9uZW50cyAqLw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIC8qIEZpbGwgaW4gdGhlIGNvcnJlY3QgY29tcG9uZW50X2luZGV4IHZhbHVlOyBkb24ndCByZWx5IG9uIGFwcGxpY2F0aW9uICovDQorICAgIGNvbXBwdHItPmNvbXBvbmVudF9pbmRleCA9IGNpOw0KKyAgICAvKiBGb3IgY29tcHJlc3Npb24sIHdlIG5ldmVyIGRvIERDVCBzY2FsaW5nLiAqLw0KKyAgICBjb21wcHRyLT5EQ1Rfc2NhbGVkX3NpemUgPSBEQ1RTSVpFOw0KKyAgICAvKiBTaXplIGluIERDVCBibG9ja3MgKi8NCisgICAgY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzID0gKEpESU1FTlNJT04pDQorICAgICAgamRpdl9yb3VuZF91cCgobG9uZykgY2luZm8tPmltYWdlX3dpZHRoICogKGxvbmcpIGNvbXBwdHItPmhfc2FtcF9mYWN0b3IsDQorCQkgICAgKGxvbmcpIChjaW5mby0+bWF4X2hfc2FtcF9mYWN0b3IgKiBEQ1RTSVpFKSk7DQorICAgIGNvbXBwdHItPmhlaWdodF9pbl9ibG9ja3MgPSAoSkRJTUVOU0lPTikNCisgICAgICBqZGl2X3JvdW5kX3VwKChsb25nKSBjaW5mby0+aW1hZ2VfaGVpZ2h0ICogKGxvbmcpIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IsDQorCQkgICAgKGxvbmcpIChjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IgKiBEQ1RTSVpFKSk7DQorICAgIC8qIFNpemUgaW4gc2FtcGxlcyAqLw0KKyAgICBjb21wcHRyLT5kb3duc2FtcGxlZF93aWR0aCA9IChKRElNRU5TSU9OKQ0KKyAgICAgIGpkaXZfcm91bmRfdXAoKGxvbmcpIGNpbmZvLT5pbWFnZV93aWR0aCAqIChsb25nKSBjb21wcHRyLT5oX3NhbXBfZmFjdG9yLA0KKwkJICAgIChsb25nKSBjaW5mby0+bWF4X2hfc2FtcF9mYWN0b3IpOw0KKyAgICBjb21wcHRyLT5kb3duc2FtcGxlZF9oZWlnaHQgPSAoSkRJTUVOU0lPTikNCisgICAgICBqZGl2X3JvdW5kX3VwKChsb25nKSBjaW5mby0+aW1hZ2VfaGVpZ2h0ICogKGxvbmcpIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IsDQorCQkgICAgKGxvbmcpIGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3Rvcik7DQorICAgIC8qIE1hcmsgY29tcG9uZW50IG5lZWRlZCAodGhpcyBmbGFnIGlzbid0IGFjdHVhbGx5IHVzZWQgZm9yIGNvbXByZXNzaW9uKSAqLw0KKyAgICBjb21wcHRyLT5jb21wb25lbnRfbmVlZGVkID0gVFJVRTsNCisgIH0NCisNCisgIC8qIENvbXB1dGUgbnVtYmVyIG9mIGZ1bGx5IGludGVybGVhdmVkIE1DVSByb3dzIChudW1iZXIgb2YgdGltZXMgdGhhdA0KKyAgICogbWFpbiBjb250cm9sbGVyIHdpbGwgY2FsbCBjb2VmZmljaWVudCBjb250cm9sbGVyKS4NCisgICAqLw0KKyAgY2luZm8tPnRvdGFsX2lNQ1Vfcm93cyA9IChKRElNRU5TSU9OKQ0KKyAgICBqZGl2X3JvdW5kX3VwKChsb25nKSBjaW5mby0+aW1hZ2VfaGVpZ2h0LA0KKwkJICAobG9uZykgKGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvcipEQ1RTSVpFKSk7DQorfQ0KKw0KKw0KKyNpZmRlZiBDX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQNCisNCitMT0NBTCh2b2lkKQ0KK3ZhbGlkYXRlX3NjcmlwdCAoal9jb21wcmVzc19wdHIgY2luZm8pDQorLyogVmVyaWZ5IHRoYXQgdGhlIHNjYW4gc2NyaXB0IGluIGNpbmZvLT5zY2FuX2luZm9bXSBpcyB2YWxpZDsgYWxzbw0KKyAqIGRldGVybWluZSB3aGV0aGVyIGl0IHVzZXMgcHJvZ3Jlc3NpdmUgSlBFRywgYW5kIHNldCBjaW5mby0+cHJvZ3Jlc3NpdmVfbW9kZS4NCisgKi8NCit7DQorICBjb25zdCBqcGVnX3NjYW5faW5mbyAqIHNjYW5wdHI7DQorICBpbnQgc2Nhbm5vLCBuY29tcHMsIGNpLCBjb2VmaSwgdGhpc2k7DQorICBpbnQgU3MsIFNlLCBBaCwgQWw7DQorICBib29sZWFuIGNvbXBvbmVudF9zZW50W01BWF9DT01QT05FTlRTXTsNCisjaWZkZWYgQ19QUk9HUkVTU0lWRV9TVVBQT1JURUQNCisgIGludCAqIGxhc3RfYml0cG9zX3B0cjsNCisgIGludCBsYXN0X2JpdHBvc1tNQVhfQ09NUE9ORU5UU11bRENUU0laRTJdOw0KKyAgLyogLTEgdW50aWwgdGhhdCBjb2VmZmljaWVudCBoYXMgYmVlbiBzZWVuOyB0aGVuIGxhc3QgQWwgZm9yIGl0ICovDQorI2VuZGlmDQorDQorICBpZiAoY2luZm8tPm51bV9zY2FucyA8PSAwKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU0NBTl9TQ1JJUFQsIDApOw0KKw0KKyAgLyogRm9yIHNlcXVlbnRpYWwgSlBFRywgYWxsIHNjYW5zIG11c3QgaGF2ZSBTcz0wLCBTZT1EQ1RTSVpFMi0xOw0KKyAgICogZm9yIHByb2dyZXNzaXZlIEpQRUcsIG5vIHNjYW4gY2FuIGhhdmUgdGhpcy4NCisgICAqLw0KKyAgc2NhbnB0ciA9IGNpbmZvLT5zY2FuX2luZm87DQorICBpZiAoc2NhbnB0ci0+U3MgIT0gMCB8fCBzY2FucHRyLT5TZSAhPSBEQ1RTSVpFMi0xKSB7DQorI2lmZGVmIENfUFJPR1JFU1NJVkVfU1VQUE9SVEVEDQorICAgIGNpbmZvLT5wcm9ncmVzc2l2ZV9tb2RlID0gVFJVRTsNCisgICAgbGFzdF9iaXRwb3NfcHRyID0gJiBsYXN0X2JpdHBvc1swXVswXTsNCisgICAgZm9yIChjaSA9IDA7IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOyBjaSsrKSANCisgICAgICBmb3IgKGNvZWZpID0gMDsgY29lZmkgPCBEQ1RTSVpFMjsgY29lZmkrKykNCisJKmxhc3RfYml0cG9zX3B0cisrID0gLTE7DQorI2Vsc2UNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyNlbmRpZg0KKyAgfSBlbHNlIHsNCisgICAgY2luZm8tPnByb2dyZXNzaXZlX21vZGUgPSBGQUxTRTsNCisgICAgZm9yIChjaSA9IDA7IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOyBjaSsrKSANCisgICAgICBjb21wb25lbnRfc2VudFtjaV0gPSBGQUxTRTsNCisgIH0NCisNCisgIGZvciAoc2Nhbm5vID0gMTsgc2Nhbm5vIDw9IGNpbmZvLT5udW1fc2NhbnM7IHNjYW5wdHIrKywgc2Nhbm5vKyspIHsNCisgICAgLyogVmFsaWRhdGUgY29tcG9uZW50IGluZGV4ZXMgKi8NCisgICAgbmNvbXBzID0gc2NhbnB0ci0+Y29tcHNfaW5fc2NhbjsNCisgICAgaWYgKG5jb21wcyA8PSAwIHx8IG5jb21wcyA+IE1BWF9DT01QU19JTl9TQ0FOKQ0KKyAgICAgIEVSUkVYSVQyKGNpbmZvLCBKRVJSX0NPTVBPTkVOVF9DT1VOVCwgbmNvbXBzLCBNQVhfQ09NUFNfSU5fU0NBTik7DQorICAgIGZvciAoY2kgPSAwOyBjaSA8IG5jb21wczsgY2krKykgew0KKyAgICAgIHRoaXNpID0gc2NhbnB0ci0+Y29tcG9uZW50X2luZGV4W2NpXTsNCisgICAgICBpZiAodGhpc2kgPCAwIHx8IHRoaXNpID49IGNpbmZvLT5udW1fY29tcG9uZW50cykNCisJRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NDQU5fU0NSSVBULCBzY2Fubm8pOw0KKyAgICAgIC8qIENvbXBvbmVudHMgbXVzdCBhcHBlYXIgaW4gU09GIG9yZGVyIHdpdGhpbiBlYWNoIHNjYW4gKi8NCisgICAgICBpZiAoY2kgPiAwICYmIHRoaXNpIDw9IHNjYW5wdHItPmNvbXBvbmVudF9pbmRleFtjaS0xXSkNCisJRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NDQU5fU0NSSVBULCBzY2Fubm8pOw0KKyAgICB9DQorICAgIC8qIFZhbGlkYXRlIHByb2dyZXNzaW9uIHBhcmFtZXRlcnMgKi8NCisgICAgU3MgPSBzY2FucHRyLT5TczsNCisgICAgU2UgPSBzY2FucHRyLT5TZTsNCisgICAgQWggPSBzY2FucHRyLT5BaDsNCisgICAgQWwgPSBzY2FucHRyLT5BbDsNCisgICAgaWYgKGNpbmZvLT5wcm9ncmVzc2l2ZV9tb2RlKSB7DQorI2lmZGVmIENfUFJPR1JFU1NJVkVfU1VQUE9SVEVEDQorICAgICAgLyogVGhlIEpQRUcgc3BlYyBzaW1wbHkgZ2l2ZXMgdGhlIHJhbmdlcyAwLi4xMyBmb3IgQWggYW5kIEFsLCBidXQgdGhhdA0KKyAgICAgICAqIHNlZW1zIHdyb25nOiB0aGUgdXBwZXIgYm91bmQgb3VnaHQgdG8gZGVwZW5kIG9uIGRhdGEgcHJlY2lzaW9uLg0KKyAgICAgICAqIFBlcmhhcHMgdGhleSByZWFsbHkgbWVhbnQgMC4uTisxIGZvciBOLWJpdCBwcmVjaXNpb24uDQorICAgICAgICogSGVyZSB3ZSBhbGxvdyAwLi4xMCBmb3IgOC1iaXQgZGF0YTsgQWwgbGFyZ2VyIHRoYW4gMTAgcmVzdWx0cyBpbg0KKyAgICAgICAqIG91dC1vZi1yYW5nZSByZWNvbnN0cnVjdGVkIERDIHZhbHVlcyBkdXJpbmcgdGhlIGZpcnN0IERDIHNjYW4sDQorICAgICAgICogd2hpY2ggbWlnaHQgY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgZGVjb2RlcnMuDQorICAgICAgICovDQorI2lmIEJJVFNfSU5fSlNBTVBMRSA9PSA4DQorI2RlZmluZSBNQVhfQUhfQUwgMTANCisjZWxzZQ0KKyNkZWZpbmUgTUFYX0FIX0FMIDEzDQorI2VuZGlmDQorICAgICAgaWYgKFNzIDwgMCB8fCBTcyA+PSBEQ1RTSVpFMiB8fCBTZSA8IFNzIHx8IFNlID49IERDVFNJWkUyIHx8DQorCSAgQWggPCAwIHx8IEFoID4gTUFYX0FIX0FMIHx8IEFsIDwgMCB8fCBBbCA+IE1BWF9BSF9BTCkNCisJRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1BST0dfU0NSSVBULCBzY2Fubm8pOw0KKyAgICAgIGlmIChTcyA9PSAwKSB7DQorCWlmIChTZSAhPSAwKQkJLyogREMgYW5kIEFDIHRvZ2V0aGVyIG5vdCBPSyAqLw0KKwkgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9QUk9HX1NDUklQVCwgc2Nhbm5vKTsNCisgICAgICB9IGVsc2Ugew0KKwlpZiAobmNvbXBzICE9IDEpCS8qIEFDIHNjYW5zIG11c3QgYmUgZm9yIG9ubHkgb25lIGNvbXBvbmVudCAqLw0KKwkgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9QUk9HX1NDUklQVCwgc2Nhbm5vKTsNCisgICAgICB9DQorICAgICAgZm9yIChjaSA9IDA7IGNpIDwgbmNvbXBzOyBjaSsrKSB7DQorCWxhc3RfYml0cG9zX3B0ciA9ICYgbGFzdF9iaXRwb3Nbc2NhbnB0ci0+Y29tcG9uZW50X2luZGV4W2NpXV1bMF07DQorCWlmIChTcyAhPSAwICYmIGxhc3RfYml0cG9zX3B0clswXSA8IDApIC8qIEFDIHdpdGhvdXQgcHJpb3IgREMgc2NhbiAqLw0KKwkgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9QUk9HX1NDUklQVCwgc2Nhbm5vKTsNCisJZm9yIChjb2VmaSA9IFNzOyBjb2VmaSA8PSBTZTsgY29lZmkrKykgew0KKwkgIGlmIChsYXN0X2JpdHBvc19wdHJbY29lZmldIDwgMCkgew0KKwkgICAgLyogZmlyc3Qgc2NhbiBvZiB0aGlzIGNvZWZmaWNpZW50ICovDQorCSAgICBpZiAoQWggIT0gMCkNCisJICAgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1BST0dfU0NSSVBULCBzY2Fubm8pOw0KKwkgIH0gZWxzZSB7DQorCSAgICAvKiBub3QgZmlyc3Qgc2NhbiAqLw0KKwkgICAgaWYgKEFoICE9IGxhc3RfYml0cG9zX3B0cltjb2VmaV0gfHwgQWwgIT0gQWgtMSkNCisJICAgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1BST0dfU0NSSVBULCBzY2Fubm8pOw0KKwkgIH0NCisJICBsYXN0X2JpdHBvc19wdHJbY29lZmldID0gQWw7DQorCX0NCisgICAgICB9DQorI2VuZGlmDQorICAgIH0gZWxzZSB7DQorICAgICAgLyogRm9yIHNlcXVlbnRpYWwgSlBFRywgYWxsIHByb2dyZXNzaW9uIHBhcmFtZXRlcnMgbXVzdCBiZSB0aGVzZTogKi8NCisgICAgICBpZiAoU3MgIT0gMCB8fCBTZSAhPSBEQ1RTSVpFMi0xIHx8IEFoICE9IDAgfHwgQWwgIT0gMCkNCisJRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1BST0dfU0NSSVBULCBzY2Fubm8pOw0KKyAgICAgIC8qIE1ha2Ugc3VyZSBjb21wb25lbnRzIGFyZSBub3Qgc2VudCB0d2ljZSAqLw0KKyAgICAgIGZvciAoY2kgPSAwOyBjaSA8IG5jb21wczsgY2krKykgew0KKwl0aGlzaSA9IHNjYW5wdHItPmNvbXBvbmVudF9pbmRleFtjaV07DQorCWlmIChjb21wb25lbnRfc2VudFt0aGlzaV0pDQorCSAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NDQU5fU0NSSVBULCBzY2Fubm8pOw0KKwljb21wb25lbnRfc2VudFt0aGlzaV0gPSBUUlVFOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKw0KKyAgLyogTm93IHZlcmlmeSB0aGF0IGV2ZXJ5dGhpbmcgZ290IHNlbnQuICovDQorICBpZiAoY2luZm8tPnByb2dyZXNzaXZlX21vZGUpIHsNCisjaWZkZWYgQ19QUk9HUkVTU0lWRV9TVVBQT1JURUQNCisgICAgLyogRm9yIHByb2dyZXNzaXZlIG1vZGUsIHdlIG9ubHkgY2hlY2sgdGhhdCBhdCBsZWFzdCBzb21lIERDIGRhdGENCisgICAgICogZ290IHNlbnQgZm9yIGVhY2ggY29tcG9uZW50OyB0aGUgc3BlYyBkb2VzIG5vdCByZXF1aXJlIHRoYXQgYWxsIGJpdHMNCisgICAgICogb2YgYWxsIGNvZWZmaWNpZW50cyBiZSB0cmFuc21pdHRlZC4gIFdvdWxkIGl0IGJlIHdpc2VyIHRvIGVuZm9yY2UNCisgICAgICogdHJhbnNtaXNzaW9uIG9mIGFsbCBjb2VmZmljaWVudCBiaXRzPz8NCisgICAgICovDQorICAgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsgY2krKykgew0KKyAgICAgIGlmIChsYXN0X2JpdHBvc1tjaV1bMF0gPCAwKQ0KKwlFUlJFWElUKGNpbmZvLCBKRVJSX01JU1NJTkdfREFUQSk7DQorICAgIH0NCisjZW5kaWYNCisgIH0gZWxzZSB7DQorICAgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsgY2krKykgew0KKyAgICAgIGlmICghIGNvbXBvbmVudF9zZW50W2NpXSkNCisJRVJSRVhJVChjaW5mbywgSkVSUl9NSVNTSU5HX0RBVEEpOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKyNlbmRpZiAvKiBDX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQgKi8NCisNCisNCitMT0NBTCh2b2lkKQ0KK3NlbGVjdF9zY2FuX3BhcmFtZXRlcnMgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIFNldCB1cCB0aGUgc2NhbiBwYXJhbWV0ZXJzIGZvciB0aGUgY3VycmVudCBzY2FuICovDQorew0KKyAgaW50IGNpOw0KKw0KKyNpZmRlZiBDX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQNCisgIGlmIChjaW5mby0+c2Nhbl9pbmZvICE9IE5VTEwpIHsNCisgICAgLyogUHJlcGFyZSBmb3IgY3VycmVudCBzY2FuIC0tLSB0aGUgc2NyaXB0IGlzIGFscmVhZHkgdmFsaWRhdGVkICovDQorICAgIG15X21hc3Rlcl9wdHIgbWFzdGVyID0gKG15X21hc3Rlcl9wdHIpIGNpbmZvLT5tYXN0ZXI7DQorICAgIGNvbnN0IGpwZWdfc2Nhbl9pbmZvICogc2NhbnB0ciA9IGNpbmZvLT5zY2FuX2luZm8gKyBtYXN0ZXItPnNjYW5fbnVtYmVyOw0KKw0KKyAgICBjaW5mby0+Y29tcHNfaW5fc2NhbiA9IHNjYW5wdHItPmNvbXBzX2luX3NjYW47DQorICAgIGZvciAoY2kgPSAwOyBjaSA8IHNjYW5wdHItPmNvbXBzX2luX3NjYW47IGNpKyspIHsNCisgICAgICBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV0gPQ0KKwkmY2luZm8tPmNvbXBfaW5mb1tzY2FucHRyLT5jb21wb25lbnRfaW5kZXhbY2ldXTsNCisgICAgfQ0KKyAgICBjaW5mby0+U3MgPSBzY2FucHRyLT5TczsNCisgICAgY2luZm8tPlNlID0gc2NhbnB0ci0+U2U7DQorICAgIGNpbmZvLT5BaCA9IHNjYW5wdHItPkFoOw0KKyAgICBjaW5mby0+QWwgPSBzY2FucHRyLT5BbDsNCisgIH0NCisgIGVsc2UNCisjZW5kaWYNCisgIHsNCisgICAgLyogUHJlcGFyZSBmb3Igc2luZ2xlIHNlcXVlbnRpYWwtSlBFRyBzY2FuIGNvbnRhaW5pbmcgYWxsIGNvbXBvbmVudHMgKi8NCisgICAgaWYgKGNpbmZvLT5udW1fY29tcG9uZW50cyA+IE1BWF9DT01QU19JTl9TQ0FOKQ0KKyAgICAgIEVSUkVYSVQyKGNpbmZvLCBKRVJSX0NPTVBPTkVOVF9DT1VOVCwgY2luZm8tPm51bV9jb21wb25lbnRzLA0KKwkgICAgICAgTUFYX0NPTVBTX0lOX1NDQU4pOw0KKyAgICBjaW5mby0+Y29tcHNfaW5fc2NhbiA9IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgZm9yIChjaSA9IDA7IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOyBjaSsrKSB7DQorICAgICAgY2luZm8tPmN1cl9jb21wX2luZm9bY2ldID0gJmNpbmZvLT5jb21wX2luZm9bY2ldOw0KKyAgICB9DQorICAgIGNpbmZvLT5TcyA9IDA7DQorICAgIGNpbmZvLT5TZSA9IERDVFNJWkUyLTE7DQorICAgIGNpbmZvLT5BaCA9IDA7DQorICAgIGNpbmZvLT5BbCA9IDA7DQorICB9DQorfQ0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorcGVyX3NjYW5fc2V0dXAgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIERvIGNvbXB1dGF0aW9ucyB0aGF0IGFyZSBuZWVkZWQgYmVmb3JlIHByb2Nlc3NpbmcgYSBKUEVHIHNjYW4gKi8NCisvKiBjaW5mby0+Y29tcHNfaW5fc2NhbiBhbmQgY2luZm8tPmN1cl9jb21wX2luZm9bXSBhcmUgYWxyZWFkeSBzZXQgKi8NCit7DQorICBpbnQgY2ksIG1jdWJsa3MsIHRtcDsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorICANCisgIGlmIChjaW5mby0+Y29tcHNfaW5fc2NhbiA9PSAxKSB7DQorICAgIA0KKyAgICAvKiBOb25pbnRlcmxlYXZlZCAoc2luZ2xlLWNvbXBvbmVudCkgc2NhbiAqLw0KKyAgICBjb21wcHRyID0gY2luZm8tPmN1cl9jb21wX2luZm9bMF07DQorICAgIA0KKyAgICAvKiBPdmVyYWxsIGltYWdlIHNpemUgaW4gTUNVcyAqLw0KKyAgICBjaW5mby0+TUNVc19wZXJfcm93ID0gY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzOw0KKyAgICBjaW5mby0+TUNVX3Jvd3NfaW5fc2NhbiA9IGNvbXBwdHItPmhlaWdodF9pbl9ibG9ja3M7DQorICAgIA0KKyAgICAvKiBGb3Igbm9uaW50ZXJsZWF2ZWQgc2NhbiwgYWx3YXlzIG9uZSBibG9jayBwZXIgTUNVICovDQorICAgIGNvbXBwdHItPk1DVV93aWR0aCA9IDE7DQorICAgIGNvbXBwdHItPk1DVV9oZWlnaHQgPSAxOw0KKyAgICBjb21wcHRyLT5NQ1VfYmxvY2tzID0gMTsNCisgICAgY29tcHB0ci0+TUNVX3NhbXBsZV93aWR0aCA9IERDVFNJWkU7DQorICAgIGNvbXBwdHItPmxhc3RfY29sX3dpZHRoID0gMTsNCisgICAgLyogRm9yIG5vbmludGVybGVhdmVkIHNjYW5zLCBpdCBpcyBjb252ZW5pZW50IHRvIGRlZmluZSBsYXN0X3Jvd19oZWlnaHQNCisgICAgICogYXMgdGhlIG51bWJlciBvZiBibG9jayByb3dzIHByZXNlbnQgaW4gdGhlIGxhc3QgaU1DVSByb3cuDQorICAgICAqLw0KKyAgICB0bXAgPSAoaW50KSAoY29tcHB0ci0+aGVpZ2h0X2luX2Jsb2NrcyAlIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IpOw0KKyAgICBpZiAodG1wID09IDApIHRtcCA9IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7DQorICAgIGNvbXBwdHItPmxhc3Rfcm93X2hlaWdodCA9IHRtcDsNCisgICAgDQorICAgIC8qIFByZXBhcmUgYXJyYXkgZGVzY3JpYmluZyBNQ1UgY29tcG9zaXRpb24gKi8NCisgICAgY2luZm8tPmJsb2Nrc19pbl9NQ1UgPSAxOw0KKyAgICBjaW5mby0+TUNVX21lbWJlcnNoaXBbMF0gPSAwOw0KKyAgICANCisgIH0gZWxzZSB7DQorICAgIA0KKyAgICAvKiBJbnRlcmxlYXZlZCAobXVsdGktY29tcG9uZW50KSBzY2FuICovDQorICAgIGlmIChjaW5mby0+Y29tcHNfaW5fc2NhbiA8PSAwIHx8IGNpbmZvLT5jb21wc19pbl9zY2FuID4gTUFYX0NPTVBTX0lOX1NDQU4pDQorICAgICAgRVJSRVhJVDIoY2luZm8sIEpFUlJfQ09NUE9ORU5UX0NPVU5ULCBjaW5mby0+Y29tcHNfaW5fc2NhbiwNCisJICAgICAgIE1BWF9DT01QU19JTl9TQ0FOKTsNCisgICAgDQorICAgIC8qIE92ZXJhbGwgaW1hZ2Ugc2l6ZSBpbiBNQ1VzICovDQorICAgIGNpbmZvLT5NQ1VzX3Blcl9yb3cgPSAoSkRJTUVOU0lPTikNCisgICAgICBqZGl2X3JvdW5kX3VwKChsb25nKSBjaW5mby0+aW1hZ2Vfd2lkdGgsDQorCQkgICAgKGxvbmcpIChjaW5mby0+bWF4X2hfc2FtcF9mYWN0b3IqRENUU0laRSkpOw0KKyAgICBjaW5mby0+TUNVX3Jvd3NfaW5fc2NhbiA9IChKRElNRU5TSU9OKQ0KKyAgICAgIGpkaXZfcm91bmRfdXAoKGxvbmcpIGNpbmZvLT5pbWFnZV9oZWlnaHQsDQorCQkgICAgKGxvbmcpIChjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IqRENUU0laRSkpOw0KKyAgICANCisgICAgY2luZm8tPmJsb2Nrc19pbl9NQ1UgPSAwOw0KKyAgICANCisgICAgZm9yIChjaSA9IDA7IGNpIDwgY2luZm8tPmNvbXBzX2luX3NjYW47IGNpKyspIHsNCisgICAgICBjb21wcHRyID0gY2luZm8tPmN1cl9jb21wX2luZm9bY2ldOw0KKyAgICAgIC8qIFNhbXBsaW5nIGZhY3RvcnMgZ2l2ZSAjIG9mIGJsb2NrcyBvZiBjb21wb25lbnQgaW4gZWFjaCBNQ1UgKi8NCisgICAgICBjb21wcHRyLT5NQ1Vfd2lkdGggPSBjb21wcHRyLT5oX3NhbXBfZmFjdG9yOw0KKyAgICAgIGNvbXBwdHItPk1DVV9oZWlnaHQgPSBjb21wcHRyLT52X3NhbXBfZmFjdG9yOw0KKyAgICAgIGNvbXBwdHItPk1DVV9ibG9ja3MgPSBjb21wcHRyLT5NQ1Vfd2lkdGggKiBjb21wcHRyLT5NQ1VfaGVpZ2h0Ow0KKyAgICAgIGNvbXBwdHItPk1DVV9zYW1wbGVfd2lkdGggPSBjb21wcHRyLT5NQ1Vfd2lkdGggKiBEQ1RTSVpFOw0KKyAgICAgIC8qIEZpZ3VyZSBudW1iZXIgb2Ygbm9uLWR1bW15IGJsb2NrcyBpbiBsYXN0IE1DVSBjb2x1bW4gJiByb3cgKi8NCisgICAgICB0bXAgPSAoaW50KSAoY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzICUgY29tcHB0ci0+TUNVX3dpZHRoKTsNCisgICAgICBpZiAodG1wID09IDApIHRtcCA9IGNvbXBwdHItPk1DVV93aWR0aDsNCisgICAgICBjb21wcHRyLT5sYXN0X2NvbF93aWR0aCA9IHRtcDsNCisgICAgICB0bXAgPSAoaW50KSAoY29tcHB0ci0+aGVpZ2h0X2luX2Jsb2NrcyAlIGNvbXBwdHItPk1DVV9oZWlnaHQpOw0KKyAgICAgIGlmICh0bXAgPT0gMCkgdG1wID0gY29tcHB0ci0+TUNVX2hlaWdodDsNCisgICAgICBjb21wcHRyLT5sYXN0X3Jvd19oZWlnaHQgPSB0bXA7DQorICAgICAgLyogUHJlcGFyZSBhcnJheSBkZXNjcmliaW5nIE1DVSBjb21wb3NpdGlvbiAqLw0KKyAgICAgIG1jdWJsa3MgPSBjb21wcHRyLT5NQ1VfYmxvY2tzOw0KKyAgICAgIGlmIChjaW5mby0+YmxvY2tzX2luX01DVSArIG1jdWJsa3MgPiBDX01BWF9CTE9DS1NfSU5fTUNVKQ0KKwlFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9NQ1VfU0laRSk7DQorICAgICAgd2hpbGUgKG1jdWJsa3MtLSA+IDApIHsNCisJY2luZm8tPk1DVV9tZW1iZXJzaGlwW2NpbmZvLT5ibG9ja3NfaW5fTUNVKytdID0gY2k7DQorICAgICAgfQ0KKyAgICB9DQorICAgIA0KKyAgfQ0KKw0KKyAgLyogQ29udmVydCByZXN0YXJ0IHNwZWNpZmllZCBpbiByb3dzIHRvIGFjdHVhbCBNQ1UgY291bnQuICovDQorICAvKiBOb3RlIHRoYXQgY291bnQgbXVzdCBmaXQgaW4gMTYgYml0cywgc28gd2UgcHJvdmlkZSBsaW1pdGluZy4gKi8NCisgIGlmIChjaW5mby0+cmVzdGFydF9pbl9yb3dzID4gMCkgew0KKyAgICBsb25nIG5vbWluYWwgPSAobG9uZykgY2luZm8tPnJlc3RhcnRfaW5fcm93cyAqIChsb25nKSBjaW5mby0+TUNVc19wZXJfcm93Ow0KKyAgICBjaW5mby0+cmVzdGFydF9pbnRlcnZhbCA9ICh1bnNpZ25lZCBpbnQpIE1JTihub21pbmFsLCA2NTUzNUwpOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIFBlci1wYXNzIHNldHVwLg0KKyAqIFRoaXMgaXMgY2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBwYXNzLiAgV2UgZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMNCisgKiB3aWxsIGJlIGFjdGl2ZSBkdXJpbmcgdGhpcyBwYXNzIGFuZCBnaXZlIHRoZW0gYXBwcm9wcmlhdGUgc3RhcnRfcGFzcyBjYWxscy4NCisgKiBXZSBhbHNvIHNldCBpc19sYXN0X3Bhc3MgdG8gaW5kaWNhdGUgd2hldGhlciBhbnkgbW9yZSBwYXNzZXMgd2lsbCBiZQ0KKyAqIHJlcXVpcmVkLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3ByZXBhcmVfZm9yX3Bhc3MgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIG15X21hc3Rlcl9wdHIgbWFzdGVyID0gKG15X21hc3Rlcl9wdHIpIGNpbmZvLT5tYXN0ZXI7DQorDQorICBzd2l0Y2ggKG1hc3Rlci0+cGFzc190eXBlKSB7DQorICBjYXNlIG1haW5fcGFzczoNCisgICAgLyogSW5pdGlhbCBwYXNzOiB3aWxsIGNvbGxlY3QgaW5wdXQgZGF0YSwgYW5kIGRvIGVpdGhlciBIdWZmbWFuDQorICAgICAqIG9wdGltaXphdGlvbiBvciBkYXRhIG91dHB1dCBmb3IgdGhlIGZpcnN0IHNjYW4uDQorICAgICAqLw0KKyAgICBzZWxlY3Rfc2Nhbl9wYXJhbWV0ZXJzKGNpbmZvKTsNCisgICAgcGVyX3NjYW5fc2V0dXAoY2luZm8pOw0KKyAgICBpZiAoISBjaW5mby0+cmF3X2RhdGFfaW4pIHsNCisgICAgICAoKmNpbmZvLT5jY29udmVydC0+c3RhcnRfcGFzcykgKGNpbmZvKTsNCisgICAgICAoKmNpbmZvLT5kb3duc2FtcGxlLT5zdGFydF9wYXNzKSAoY2luZm8pOw0KKyAgICAgICgqY2luZm8tPnByZXAtPnN0YXJ0X3Bhc3MpIChjaW5mbywgSkJVRl9QQVNTX1RIUlUpOw0KKyAgICB9DQorICAgICgqY2luZm8tPmZkY3QtPnN0YXJ0X3Bhc3MpIChjaW5mbyk7DQorICAgICgqY2luZm8tPmVudHJvcHktPnN0YXJ0X3Bhc3MpIChjaW5mbywgY2luZm8tPm9wdGltaXplX2NvZGluZyk7DQorICAgICgqY2luZm8tPmNvZWYtPnN0YXJ0X3Bhc3MpIChjaW5mbywNCisJCQkJKG1hc3Rlci0+dG90YWxfcGFzc2VzID4gMSA/DQorCQkJCSBKQlVGX1NBVkVfQU5EX1BBU1MgOiBKQlVGX1BBU1NfVEhSVSkpOw0KKyAgICAoKmNpbmZvLT5tYWluLT5zdGFydF9wYXNzKSAoY2luZm8sIEpCVUZfUEFTU19USFJVKTsNCisgICAgaWYgKGNpbmZvLT5vcHRpbWl6ZV9jb2RpbmcpIHsNCisgICAgICAvKiBObyBpbW1lZGlhdGUgZGF0YSBvdXRwdXQ7IHBvc3Rwb25lIHdyaXRpbmcgZnJhbWUvc2NhbiBoZWFkZXJzICovDQorICAgICAgbWFzdGVyLT5wdWIuY2FsbF9wYXNzX3N0YXJ0dXAgPSBGQUxTRTsNCisgICAgfSBlbHNlIHsNCisgICAgICAvKiBXaWxsIHdyaXRlIGZyYW1lL3NjYW4gaGVhZGVycyBhdCBmaXJzdCBqcGVnX3dyaXRlX3NjYW5saW5lcyBjYWxsICovDQorICAgICAgbWFzdGVyLT5wdWIuY2FsbF9wYXNzX3N0YXJ0dXAgPSBUUlVFOw0KKyAgICB9DQorICAgIGJyZWFrOw0KKyNpZmRlZiBFTlRST1BZX09QVF9TVVBQT1JURUQNCisgIGNhc2UgaHVmZl9vcHRfcGFzczoNCisgICAgLyogRG8gSHVmZm1hbiBvcHRpbWl6YXRpb24gZm9yIGEgc2NhbiBhZnRlciB0aGUgZmlyc3Qgb25lLiAqLw0KKyAgICBzZWxlY3Rfc2Nhbl9wYXJhbWV0ZXJzKGNpbmZvKTsNCisgICAgcGVyX3NjYW5fc2V0dXAoY2luZm8pOw0KKyAgICBpZiAoY2luZm8tPlNzICE9IDAgfHwgY2luZm8tPkFoID09IDAgfHwgY2luZm8tPmFyaXRoX2NvZGUpIHsNCisgICAgICAoKmNpbmZvLT5lbnRyb3B5LT5zdGFydF9wYXNzKSAoY2luZm8sIFRSVUUpOw0KKyAgICAgICgqY2luZm8tPmNvZWYtPnN0YXJ0X3Bhc3MpIChjaW5mbywgSkJVRl9DUkFOS19ERVNUKTsNCisgICAgICBtYXN0ZXItPnB1Yi5jYWxsX3Bhc3Nfc3RhcnR1cCA9IEZBTFNFOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIC8qIFNwZWNpYWwgY2FzZTogSHVmZm1hbiBEQyByZWZpbmVtZW50IHNjYW5zIG5lZWQgbm8gSHVmZm1hbiB0YWJsZQ0KKyAgICAgKiBhbmQgdGhlcmVmb3JlIHdlIGNhbiBza2lwIHRoZSBvcHRpbWl6YXRpb24gcGFzcyBmb3IgdGhlbS4NCisgICAgICovDQorICAgIG1hc3Rlci0+cGFzc190eXBlID0gb3V0cHV0X3Bhc3M7DQorICAgIG1hc3Rlci0+cGFzc19udW1iZXIrKzsNCisgICAgLypGQUxMVEhST1VHSCovDQorI2VuZGlmDQorICBjYXNlIG91dHB1dF9wYXNzOg0KKyAgICAvKiBEbyBhIGRhdGEtb3V0cHV0IHBhc3MuICovDQorICAgIC8qIFdlIG5lZWQgbm90IHJlcGVhdCBwZXItc2NhbiBzZXR1cCBpZiBwcmlvciBvcHRpbWl6YXRpb24gcGFzcyBkaWQgaXQuICovDQorICAgIGlmICghIGNpbmZvLT5vcHRpbWl6ZV9jb2RpbmcpIHsNCisgICAgICBzZWxlY3Rfc2Nhbl9wYXJhbWV0ZXJzKGNpbmZvKTsNCisgICAgICBwZXJfc2Nhbl9zZXR1cChjaW5mbyk7DQorICAgIH0NCisgICAgKCpjaW5mby0+ZW50cm9weS0+c3RhcnRfcGFzcykgKGNpbmZvLCBGQUxTRSk7DQorICAgICgqY2luZm8tPmNvZWYtPnN0YXJ0X3Bhc3MpIChjaW5mbywgSkJVRl9DUkFOS19ERVNUKTsNCisgICAgLyogV2UgZW1pdCBmcmFtZS9zY2FuIGhlYWRlcnMgbm93ICovDQorICAgIGlmIChtYXN0ZXItPnNjYW5fbnVtYmVyID09IDApDQorICAgICAgKCpjaW5mby0+bWFya2VyLT53cml0ZV9mcmFtZV9oZWFkZXIpIChjaW5mbyk7DQorICAgICgqY2luZm8tPm1hcmtlci0+d3JpdGVfc2Nhbl9oZWFkZXIpIChjaW5mbyk7DQorICAgIG1hc3Rlci0+cHViLmNhbGxfcGFzc19zdGFydHVwID0gRkFMU0U7DQorICAgIGJyZWFrOw0KKyAgZGVmYXVsdDoNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyAgfQ0KKw0KKyAgbWFzdGVyLT5wdWIuaXNfbGFzdF9wYXNzID0gKG1hc3Rlci0+cGFzc19udW1iZXIgPT0gbWFzdGVyLT50b3RhbF9wYXNzZXMtMSk7DQorDQorICAvKiBTZXQgdXAgcHJvZ3Jlc3MgbW9uaXRvcidzIHBhc3MgaW5mbyBpZiBwcmVzZW50ICovDQorICBpZiAoY2luZm8tPnByb2dyZXNzICE9IE5VTEwpIHsNCisgICAgY2luZm8tPnByb2dyZXNzLT5jb21wbGV0ZWRfcGFzc2VzID0gbWFzdGVyLT5wYXNzX251bWJlcjsNCisgICAgY2luZm8tPnByb2dyZXNzLT50b3RhbF9wYXNzZXMgPSBtYXN0ZXItPnRvdGFsX3Bhc3NlczsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBTcGVjaWFsIHN0YXJ0LW9mLXBhc3MgaG9vay4NCisgKiBUaGlzIGlzIGNhbGxlZCBieSBqcGVnX3dyaXRlX3NjYW5saW5lcyBpZiBjYWxsX3Bhc3Nfc3RhcnR1cCBpcyBUUlVFLg0KKyAqIEluIHNpbmdsZS1wYXNzIHByb2Nlc3NpbmcsIHdlIG5lZWQgdGhpcyBob29rIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0bw0KKyAqIHdyaXRlIGZyYW1lL3NjYW4gaGVhZGVycyBkdXJpbmcganBlZ19zdGFydF9jb21wcmVzczsgd2Ugd2FudCB0byBsZXQgdGhlDQorICogYXBwbGljYXRpb24gd3JpdGUgQ09NIG1hcmtlcnMgZXRjLiBiZXR3ZWVuIGpwZWdfc3RhcnRfY29tcHJlc3MgYW5kIHRoZQ0KKyAqIGpwZWdfd3JpdGVfc2NhbmxpbmVzIGxvb3AuDQorICogSW4gbXVsdGktcGFzcyBwcm9jZXNzaW5nLCB0aGlzIHJvdXRpbmUgaXMgbm90IHVzZWQuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorcGFzc19zdGFydHVwIChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBjaW5mby0+bWFzdGVyLT5jYWxsX3Bhc3Nfc3RhcnR1cCA9IEZBTFNFOyAvKiByZXNldCBmbGFnIHNvIGNhbGwgb25seSBvbmNlICovDQorDQorICAoKmNpbmZvLT5tYXJrZXItPndyaXRlX2ZyYW1lX2hlYWRlcikgKGNpbmZvKTsNCisgICgqY2luZm8tPm1hcmtlci0+d3JpdGVfc2Nhbl9oZWFkZXIpIChjaW5mbyk7DQorfQ0KKw0KKw0KKy8qDQorICogRmluaXNoIHVwIGF0IGVuZCBvZiBwYXNzLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2ZpbmlzaF9wYXNzX21hc3RlciAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfbWFzdGVyX3B0ciBtYXN0ZXIgPSAobXlfbWFzdGVyX3B0cikgY2luZm8tPm1hc3RlcjsNCisNCisgIC8qIFRoZSBlbnRyb3B5IGNvZGVyIGFsd2F5cyBuZWVkcyBhbiBlbmQtb2YtcGFzcyBjYWxsLA0KKyAgICogZWl0aGVyIHRvIGFuYWx5emUgc3RhdGlzdGljcyBvciB0byBmbHVzaCBpdHMgb3V0cHV0IGJ1ZmZlci4NCisgICAqLw0KKyAgKCpjaW5mby0+ZW50cm9weS0+ZmluaXNoX3Bhc3MpIChjaW5mbyk7DQorDQorICAvKiBVcGRhdGUgc3RhdGUgZm9yIG5leHQgcGFzcyAqLw0KKyAgc3dpdGNoIChtYXN0ZXItPnBhc3NfdHlwZSkgew0KKyAgY2FzZSBtYWluX3Bhc3M6DQorICAgIC8qIG5leHQgcGFzcyBpcyBlaXRoZXIgb3V0cHV0IG9mIHNjYW4gMCAoYWZ0ZXIgb3B0aW1pemF0aW9uKQ0KKyAgICAgKiBvciBvdXRwdXQgb2Ygc2NhbiAxIChpZiBubyBvcHRpbWl6YXRpb24pLg0KKyAgICAgKi8NCisgICAgbWFzdGVyLT5wYXNzX3R5cGUgPSBvdXRwdXRfcGFzczsNCisgICAgaWYgKCEgY2luZm8tPm9wdGltaXplX2NvZGluZykNCisgICAgICBtYXN0ZXItPnNjYW5fbnVtYmVyKys7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBodWZmX29wdF9wYXNzOg0KKyAgICAvKiBuZXh0IHBhc3MgaXMgYWx3YXlzIG91dHB1dCBvZiBjdXJyZW50IHNjYW4gKi8NCisgICAgbWFzdGVyLT5wYXNzX3R5cGUgPSBvdXRwdXRfcGFzczsNCisgICAgYnJlYWs7DQorICBjYXNlIG91dHB1dF9wYXNzOg0KKyAgICAvKiBuZXh0IHBhc3MgaXMgZWl0aGVyIG9wdGltaXphdGlvbiBvciBvdXRwdXQgb2YgbmV4dCBzY2FuICovDQorICAgIGlmIChjaW5mby0+b3B0aW1pemVfY29kaW5nKQ0KKyAgICAgIG1hc3Rlci0+cGFzc190eXBlID0gaHVmZl9vcHRfcGFzczsNCisgICAgbWFzdGVyLT5zY2FuX251bWJlcisrOw0KKyAgICBicmVhazsNCisgIH0NCisNCisgIG1hc3Rlci0+cGFzc19udW1iZXIrKzsNCit9DQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIG1hc3RlciBjb21wcmVzc2lvbiBjb250cm9sLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2ppbml0X2NfbWFzdGVyX2NvbnRyb2wgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBib29sZWFuIHRyYW5zY29kZV9vbmx5KQ0KK3sNCisgIG15X21hc3Rlcl9wdHIgbWFzdGVyOw0KKw0KKyAgbWFzdGVyID0gKG15X21hc3Rlcl9wdHIpDQorICAgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJICBTSVpFT0YobXlfY29tcF9tYXN0ZXIpKTsNCisgIGNpbmZvLT5tYXN0ZXIgPSAoc3RydWN0IGpwZWdfY29tcF9tYXN0ZXIgKikgbWFzdGVyOw0KKyAgbWFzdGVyLT5wdWIucHJlcGFyZV9mb3JfcGFzcyA9IHByZXBhcmVfZm9yX3Bhc3M7DQorICBtYXN0ZXItPnB1Yi5wYXNzX3N0YXJ0dXAgPSBwYXNzX3N0YXJ0dXA7DQorICBtYXN0ZXItPnB1Yi5maW5pc2hfcGFzcyA9IGZpbmlzaF9wYXNzX21hc3RlcjsNCisgIG1hc3Rlci0+cHViLmlzX2xhc3RfcGFzcyA9IEZBTFNFOw0KKw0KKyAgLyogVmFsaWRhdGUgcGFyYW1ldGVycywgZGV0ZXJtaW5lIGRlcml2ZWQgdmFsdWVzICovDQorICBpbml0aWFsX3NldHVwKGNpbmZvKTsNCisNCisgIGlmIChjaW5mby0+c2Nhbl9pbmZvICE9IE5VTEwpIHsNCisjaWZkZWYgQ19NVUxUSVNDQU5fRklMRVNfU1VQUE9SVEVEDQorICAgIHZhbGlkYXRlX3NjcmlwdChjaW5mbyk7DQorI2Vsc2UNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyNlbmRpZg0KKyAgfSBlbHNlIHsNCisgICAgY2luZm8tPnByb2dyZXNzaXZlX21vZGUgPSBGQUxTRTsNCisgICAgY2luZm8tPm51bV9zY2FucyA9IDE7DQorICB9DQorDQorICBpZiAoY2luZm8tPnByb2dyZXNzaXZlX21vZGUpCS8qICBURU1QT1JBUlkgSEFDSyA/Pz8gKi8NCisgICAgY2luZm8tPm9wdGltaXplX2NvZGluZyA9IFRSVUU7IC8qIGFzc3VtZSBkZWZhdWx0IHRhYmxlcyBubyBnb29kIGZvciBwcm9ncmVzc2l2ZSBtb2RlICovDQorDQorICAvKiBJbml0aWFsaXplIG15IHByaXZhdGUgc3RhdGUgKi8NCisgIGlmICh0cmFuc2NvZGVfb25seSkgew0KKyAgICAvKiBubyBtYWluIHBhc3MgaW4gdHJhbnNjb2RpbmcgKi8NCisgICAgaWYgKGNpbmZvLT5vcHRpbWl6ZV9jb2RpbmcpDQorICAgICAgbWFzdGVyLT5wYXNzX3R5cGUgPSBodWZmX29wdF9wYXNzOw0KKyAgICBlbHNlDQorICAgICAgbWFzdGVyLT5wYXNzX3R5cGUgPSBvdXRwdXRfcGFzczsNCisgIH0gZWxzZSB7DQorICAgIC8qIGZvciBub3JtYWwgY29tcHJlc3Npb24sIGZpcnN0IHBhc3MgaXMgYWx3YXlzIHRoaXMgdHlwZTogKi8NCisgICAgbWFzdGVyLT5wYXNzX3R5cGUgPSBtYWluX3Bhc3M7DQorICB9DQorICBtYXN0ZXItPnNjYW5fbnVtYmVyID0gMDsNCisgIG1hc3Rlci0+cGFzc19udW1iZXIgPSAwOw0KKyAgaWYgKGNpbmZvLT5vcHRpbWl6ZV9jb2RpbmcpDQorICAgIG1hc3Rlci0+dG90YWxfcGFzc2VzID0gY2luZm8tPm51bV9zY2FucyAqIDI7DQorICBlbHNlDQorICAgIG1hc3Rlci0+dG90YWxfcGFzc2VzID0gY2luZm8tPm51bV9zY2FuczsNCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNvbWFwaS5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNvbWFwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NDkwOWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY29tYXBpLmMKQEAgLTAsMCArMSwxMDkgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqY29tYXBpLmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk3LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyBhcHBsaWNhdGlvbiBpbnRlcmZhY2Ugcm91dGluZXMgdGhhdCBhcmUgdXNlZCBmb3IgYm90aA0KKyAqIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKw0KKw0KKy8qDQorICogQWJvcnQgcHJvY2Vzc2luZyBvZiBhIEpQRUcgY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbiBvcGVyYXRpb24sDQorICogYnV0IGRvbid0IGRlc3Ryb3kgdGhlIG9iamVjdCBpdHNlbGYuDQorICoNCisgKiBGb3IgdGhpcywgd2UgbWVyZWx5IGNsZWFuIHVwIGFsbCB0aGUgbm9ucGVybWFuZW50IG1lbW9yeSBwb29scy4NCisgKiBOb3RlIHRoYXQgdGVtcCBmaWxlcyAodmlydHVhbCBhcnJheXMpIGFyZSBub3QgYWxsb3dlZCB0byBiZWxvbmcgdG8NCisgKiB0aGUgcGVybWFuZW50IHBvb2wsIHNvIHdlIHdpbGwgYmUgYWJsZSB0byBjbG9zZSBhbGwgdGVtcCBmaWxlcyBoZXJlLg0KKyAqIENsb3NpbmcgYSBkYXRhIHNvdXJjZSBvciBkZXN0aW5hdGlvbiwgaWYgbmVjZXNzYXJ5LCBpcyB0aGUgYXBwbGljYXRpb24ncw0KKyAqIHJlc3BvbnNpYmlsaXR5Lg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfYWJvcnQgKGpfY29tbW9uX3B0ciBjaW5mbykNCit7DQorICBpbnQgcG9vbDsNCisNCisgIC8qIERvIG5vdGhpbmcgaWYgY2FsbGVkIG9uIGEgbm90LWluaXRpYWxpemVkIG9yIGRlc3Ryb3llZCBKUEVHIG9iamVjdC4gKi8NCisgIGlmIChjaW5mby0+bWVtID09IE5VTEwpDQorICAgIHJldHVybjsNCisNCisgIC8qIFJlbGVhc2luZyBwb29scyBpbiByZXZlcnNlIG9yZGVyIG1pZ2h0IGhlbHAgYXZvaWQgZnJhZ21lbnRhdGlvbg0KKyAgICogd2l0aCBzb21lIChicmFpbi1kYW1hZ2VkKSBtYWxsb2MgbGlicmFyaWVzLg0KKyAgICovDQorICBmb3IgKHBvb2wgPSBKUE9PTF9OVU1QT09MUy0xOyBwb29sID4gSlBPT0xfUEVSTUFORU5UOyBwb29sLS0pIHsNCisgICAgKCpjaW5mby0+bWVtLT5mcmVlX3Bvb2wpIChjaW5mbywgcG9vbCk7DQorICB9DQorDQorICAvKiBSZXNldCBvdmVyYWxsIHN0YXRlIGZvciBwb3NzaWJsZSByZXVzZSBvZiBvYmplY3QgKi8NCisgIGlmIChjaW5mby0+aXNfZGVjb21wcmVzc29yKSB7DQorICAgIGNpbmZvLT5nbG9iYWxfc3RhdGUgPSBEU1RBVEVfU1RBUlQ7DQorICAgIC8qIFRyeSB0byBrZWVwIGFwcGxpY2F0aW9uIGZyb20gYWNjZXNzaW5nIG5vdy1kZWxldGVkIG1hcmtlciBsaXN0Lg0KKyAgICAgKiBBIGJpdCBrbHVkZ3kgdG8gZG8gaXQgaGVyZSwgYnV0IHRoaXMgaXMgdGhlIG1vc3QgY2VudHJhbCBwbGFjZS4NCisgICAgICovDQorICAgICgoal9kZWNvbXByZXNzX3B0cikgY2luZm8pLT5tYXJrZXJfbGlzdCA9IE5VTEw7DQorICB9IGVsc2Ugew0KKyAgICBjaW5mby0+Z2xvYmFsX3N0YXRlID0gQ1NUQVRFX1NUQVJUOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIERlc3RydWN0aW9uIG9mIGEgSlBFRyBvYmplY3QuDQorICoNCisgKiBFdmVyeXRoaW5nIGdldHMgZGVhbGxvY2F0ZWQgZXhjZXB0IHRoZSBtYXN0ZXIganBlZ19jb21wcmVzc19zdHJ1Y3QgaXRzZWxmDQorICogYW5kIHRoZSBlcnJvciBtYW5hZ2VyIHN0cnVjdC4gIEJvdGggb2YgdGhlc2UgYXJlIHN1cHBsaWVkIGJ5IHRoZSBhcHBsaWNhdGlvbg0KKyAqIGFuZCBtdXN0IGJlIGZyZWVkLCBpZiBuZWNlc3NhcnksIGJ5IHRoZSBhcHBsaWNhdGlvbi4gIChPZnRlbiB0aGV5IGFyZSBvbg0KKyAqIHRoZSBzdGFjayBhbmQgc28gZG9uJ3QgbmVlZCB0byBiZSBmcmVlZCBhbnl3YXkuKQ0KKyAqIENsb3NpbmcgYSBkYXRhIHNvdXJjZSBvciBkZXN0aW5hdGlvbiwgaWYgbmVjZXNzYXJ5LCBpcyB0aGUgYXBwbGljYXRpb24ncw0KKyAqIHJlc3BvbnNpYmlsaXR5Lg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfZGVzdHJveSAoal9jb21tb25fcHRyIGNpbmZvKQ0KK3sNCisgIC8qIFdlIG5lZWQgb25seSB0ZWxsIHRoZSBtZW1vcnkgbWFuYWdlciB0byByZWxlYXNlIGV2ZXJ5dGhpbmcuICovDQorICAvKiBOQjogbWVtIHBvaW50ZXIgaXMgTlVMTCBpZiBtZW1vcnkgbWdyIGZhaWxlZCB0byBpbml0aWFsaXplLiAqLw0KKyAgaWYgKGNpbmZvLT5tZW0gIT0gTlVMTCkNCisgICAgKCpjaW5mby0+bWVtLT5zZWxmX2Rlc3RydWN0KSAoY2luZm8pOw0KKyAgY2luZm8tPm1lbSA9IE5VTEw7CQkvKiBiZSBzYWZlIGlmIGpwZWdfZGVzdHJveSBpcyBjYWxsZWQgdHdpY2UgKi8NCisgIGNpbmZvLT5nbG9iYWxfc3RhdGUgPSAwOwkvKiBtYXJrIGl0IGRlc3Ryb3llZCAqLw0KK30NCisNCisNCisvKg0KKyAqIENvbnZlbmllbmNlIHJvdXRpbmVzIGZvciBhbGxvY2F0aW5nIHF1YW50aXphdGlvbiBhbmQgSHVmZm1hbiB0YWJsZXMuDQorICogKFdvdWxkIGp1dGlscy5jIGJlIGEgbW9yZSByZWFzb25hYmxlIHBsYWNlIHRvIHB1dCB0aGVzZT8pDQorICovDQorDQorR0xPQkFMKEpRVUFOVF9UQkwgKikNCitqcGVnX2FsbG9jX3F1YW50X3RhYmxlIChqX2NvbW1vbl9wdHIgY2luZm8pDQorew0KKyAgSlFVQU5UX1RCTCAqdGJsOw0KKw0KKyAgdGJsID0gKEpRVUFOVF9UQkwgKikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKGNpbmZvLCBKUE9PTF9QRVJNQU5FTlQsIFNJWkVPRihKUVVBTlRfVEJMKSk7DQorICB0YmwtPnNlbnRfdGFibGUgPSBGQUxTRTsJLyogbWFrZSBzdXJlIHRoaXMgaXMgZmFsc2UgaW4gYW55IG5ldyB0YWJsZSAqLw0KKyAgcmV0dXJuIHRibDsNCit9DQorDQorDQorR0xPQkFMKEpIVUZGX1RCTCAqKQ0KK2pwZWdfYWxsb2NfaHVmZl90YWJsZSAoal9jb21tb25fcHRyIGNpbmZvKQ0KK3sNCisgIEpIVUZGX1RCTCAqdGJsOw0KKw0KKyAgdGJsID0gKEpIVUZGX1RCTCAqKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoY2luZm8sIEpQT09MX1BFUk1BTkVOVCwgU0laRU9GKEpIVUZGX1RCTCkpOw0KKyAgdGJsLT5zZW50X3RhYmxlID0gRkFMU0U7CS8qIG1ha2Ugc3VyZSB0aGlzIGlzIGZhbHNlIGluIGFueSBuZXcgdGFibGUgKi8NCisgIHJldHVybiB0Ymw7DQorfQ0KKw0KKyNlbmRpZiAvL19GWF9KUEVHX1RVUkJPXw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjcGFyYW0uYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjcGFyYW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjFiOWI5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNwYXJhbS5jCkBAIC0wLDAgKzEsNjEzIEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamNwYXJhbS5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5OCwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgb3B0aW9uYWwgZGVmYXVsdC1zZXR0aW5nIGNvZGUgZm9yIHRoZSBKUEVHIGNvbXByZXNzb3IuDQorICogQXBwbGljYXRpb25zIGRvIG5vdCBoYXZlIHRvIHVzZSB0aGlzIGZpbGUsIGJ1dCB0aG9zZSB0aGF0IGRvbid0IHVzZSBpdA0KKyAqIG11c3Qga25vdyBhIGxvdCBtb3JlIGFib3V0IHRoZSBpbm5hcmRzIG9mIHRoZSBKUEVHIGNvZGUuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQorLyoNCisgKiBRdWFudGl6YXRpb24gdGFibGUgc2V0dXAgcm91dGluZXMNCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqcGVnX2FkZF9xdWFudF90YWJsZSAoal9jb21wcmVzc19wdHIgY2luZm8sIGludCB3aGljaF90YmwsDQorCQkgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgKmJhc2ljX3RhYmxlLA0KKwkJICAgICAgaW50IHNjYWxlX2ZhY3RvciwgYm9vbGVhbiBmb3JjZV9iYXNlbGluZSkNCisvKiBEZWZpbmUgYSBxdWFudGl6YXRpb24gdGFibGUgZXF1YWwgdG8gdGhlIGJhc2ljX3RhYmxlIHRpbWVzDQorICogYSBzY2FsZSBmYWN0b3IgKGdpdmVuIGFzIGEgcGVyY2VudGFnZSkuDQorICogSWYgZm9yY2VfYmFzZWxpbmUgaXMgVFJVRSwgdGhlIGNvbXB1dGVkIHF1YW50aXphdGlvbiB0YWJsZSBlbnRyaWVzDQorICogYXJlIGxpbWl0ZWQgdG8gMS4uMjU1IGZvciBKUEVHIGJhc2VsaW5lIGNvbXBhdGliaWxpdHkuDQorICovDQorew0KKyAgSlFVQU5UX1RCTCAqKiBxdGJscHRyOw0KKyAgaW50IGk7DQorICBsb25nIHRlbXA7DQorDQorICAvKiBTYWZldHkgY2hlY2sgdG8gZW5zdXJlIHN0YXJ0X2NvbXByZXNzIG5vdCBjYWxsZWQgeWV0LiAqLw0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gQ1NUQVRFX1NUQVJUKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKw0KKyAgaWYgKHdoaWNoX3RibCA8IDAgfHwgd2hpY2hfdGJsID49IE5VTV9RVUFOVF9UQkxTKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9EUVRfSU5ERVgsIHdoaWNoX3RibCk7DQorDQorICBxdGJscHRyID0gJiBjaW5mby0+cXVhbnRfdGJsX3B0cnNbd2hpY2hfdGJsXTsNCisNCisgIGlmICgqcXRibHB0ciA9PSBOVUxMKQ0KKyAgICAqcXRibHB0ciA9IGpwZWdfYWxsb2NfcXVhbnRfdGFibGUoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKw0KKyAgZm9yIChpID0gMDsgaSA8IERDVFNJWkUyOyBpKyspIHsNCisgICAgdGVtcCA9ICgobG9uZykgYmFzaWNfdGFibGVbaV0gKiBzY2FsZV9mYWN0b3IgKyA1MEwpIC8gMTAwTDsNCisgICAgLyogbGltaXQgdGhlIHZhbHVlcyB0byB0aGUgdmFsaWQgcmFuZ2UgKi8NCisgICAgaWYgKHRlbXAgPD0gMEwpIHRlbXAgPSAxTDsNCisgICAgaWYgKHRlbXAgPiAzMjc2N0wpIHRlbXAgPSAzMjc2N0w7IC8qIG1heCBxdWFudGl6ZXIgbmVlZGVkIGZvciAxMiBiaXRzICovDQorICAgIGlmIChmb3JjZV9iYXNlbGluZSAmJiB0ZW1wID4gMjU1TCkNCisgICAgICB0ZW1wID0gMjU1TDsJCS8qIGxpbWl0IHRvIGJhc2VsaW5lIHJhbmdlIGlmIHJlcXVlc3RlZCAqLw0KKyAgICAoKnF0YmxwdHIpLT5xdWFudHZhbFtpXSA9IChVSU5UMTYpIHRlbXA7DQorICB9DQorDQorICAvKiBJbml0aWFsaXplIHNlbnRfdGFibGUgRkFMU0Ugc28gdGFibGUgd2lsbCBiZSB3cml0dGVuIHRvIEpQRUcgZmlsZS4gKi8NCisgICgqcXRibHB0ciktPnNlbnRfdGFibGUgPSBGQUxTRTsNCit9DQorDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19zZXRfbGluZWFyX3F1YWxpdHkgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgc2NhbGVfZmFjdG9yLA0KKwkJCSBib29sZWFuIGZvcmNlX2Jhc2VsaW5lKQ0KKy8qIFNldCBvciBjaGFuZ2UgdGhlICdxdWFsaXR5JyAocXVhbnRpemF0aW9uKSBzZXR0aW5nLCB1c2luZyBkZWZhdWx0IHRhYmxlcw0KKyAqIGFuZCBhIHN0cmFpZ2h0IHBlcmNlbnRhZ2Utc2NhbGluZyBxdWFsaXR5IHNjYWxlLiAgSW4gbW9zdCBjYXNlcyBpdCdzIGJldHRlcg0KKyAqIHRvIHVzZSBqcGVnX3NldF9xdWFsaXR5IChiZWxvdyk7IHRoaXMgZW50cnkgcG9pbnQgaXMgcHJvdmlkZWQgZm9yDQorICogYXBwbGljYXRpb25zIHRoYXQgaW5zaXN0IG9uIGEgbGluZWFyIHBlcmNlbnRhZ2Ugc2NhbGluZy4NCisgKi8NCit7DQorICAvKiBUaGVzZSBhcmUgdGhlIHNhbXBsZSBxdWFudGl6YXRpb24gdGFibGVzIGdpdmVuIGluIEpQRUcgc3BlYyBzZWN0aW9uIEsuMS4NCisgICAqIFRoZSBzcGVjIHNheXMgdGhhdCB0aGUgdmFsdWVzIGdpdmVuIHByb2R1Y2UgImdvb2QiIHF1YWxpdHksIGFuZA0KKyAgICogd2hlbiBkaXZpZGVkIGJ5IDIsICJ2ZXJ5IGdvb2QiIHF1YWxpdHkuDQorICAgKi8NCisgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc3RkX2x1bWluYW5jZV9xdWFudF90YmxbRENUU0laRTJdID0gew0KKyAgICAxNiwgIDExLCAgMTAsICAxNiwgIDI0LCAgNDAsICA1MSwgIDYxLA0KKyAgICAxMiwgIDEyLCAgMTQsICAxOSwgIDI2LCAgNTgsICA2MCwgIDU1LA0KKyAgICAxNCwgIDEzLCAgMTYsICAyNCwgIDQwLCAgNTcsICA2OSwgIDU2LA0KKyAgICAxNCwgIDE3LCAgMjIsICAyOSwgIDUxLCAgODcsICA4MCwgIDYyLA0KKyAgICAxOCwgIDIyLCAgMzcsICA1NiwgIDY4LCAxMDksIDEwMywgIDc3LA0KKyAgICAyNCwgIDM1LCAgNTUsICA2NCwgIDgxLCAxMDQsIDExMywgIDkyLA0KKyAgICA0OSwgIDY0LCAgNzgsICA4NywgMTAzLCAxMjEsIDEyMCwgMTAxLA0KKyAgICA3MiwgIDkyLCAgOTUsICA5OCwgMTEyLCAxMDAsIDEwMywgIDk5DQorICB9Ow0KKyAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzdGRfY2hyb21pbmFuY2VfcXVhbnRfdGJsW0RDVFNJWkUyXSA9IHsNCisgICAgMTcsICAxOCwgIDI0LCAgNDcsICA5OSwgIDk5LCAgOTksICA5OSwNCisgICAgMTgsICAyMSwgIDI2LCAgNjYsICA5OSwgIDk5LCAgOTksICA5OSwNCisgICAgMjQsICAyNiwgIDU2LCAgOTksICA5OSwgIDk5LCAgOTksICA5OSwNCisgICAgNDcsICA2NiwgIDk5LCAgOTksICA5OSwgIDk5LCAgOTksICA5OSwNCisgICAgOTksICA5OSwgIDk5LCAgOTksICA5OSwgIDk5LCAgOTksICA5OSwNCisgICAgOTksICA5OSwgIDk5LCAgOTksICA5OSwgIDk5LCAgOTksICA5OSwNCisgICAgOTksICA5OSwgIDk5LCAgOTksICA5OSwgIDk5LCAgOTksICA5OSwNCisgICAgOTksICA5OSwgIDk5LCAgOTksICA5OSwgIDk5LCAgOTksICA5OQ0KKyAgfTsNCisNCisgIC8qIFNldCB1cCB0d28gcXVhbnRpemF0aW9uIHRhYmxlcyB1c2luZyB0aGUgc3BlY2lmaWVkIHNjYWxpbmcgKi8NCisgIGpwZWdfYWRkX3F1YW50X3RhYmxlKGNpbmZvLCAwLCBzdGRfbHVtaW5hbmNlX3F1YW50X3RibCwNCisJCSAgICAgICBzY2FsZV9mYWN0b3IsIGZvcmNlX2Jhc2VsaW5lKTsNCisgIGpwZWdfYWRkX3F1YW50X3RhYmxlKGNpbmZvLCAxLCBzdGRfY2hyb21pbmFuY2VfcXVhbnRfdGJsLA0KKwkJICAgICAgIHNjYWxlX2ZhY3RvciwgZm9yY2VfYmFzZWxpbmUpOw0KK30NCisNCisNCitHTE9CQUwoaW50KQ0KK2pwZWdfcXVhbGl0eV9zY2FsaW5nIChpbnQgcXVhbGl0eSkNCisvKiBDb252ZXJ0IGEgdXNlci1zcGVjaWZpZWQgcXVhbGl0eSByYXRpbmcgdG8gYSBwZXJjZW50YWdlIHNjYWxpbmcgZmFjdG9yDQorICogZm9yIGFuIHVuZGVybHlpbmcgcXVhbnRpemF0aW9uIHRhYmxlLCB1c2luZyBvdXIgcmVjb21tZW5kZWQgc2NhbGluZyBjdXJ2ZS4NCisgKiBUaGUgaW5wdXQgJ3F1YWxpdHknIGZhY3RvciBzaG91bGQgYmUgMCAodGVycmlibGUpIHRvIDEwMCAodmVyeSBnb29kKS4NCisgKi8NCit7DQorICAvKiBTYWZldHkgbGltaXQgb24gcXVhbGl0eSBmYWN0b3IuICBDb252ZXJ0IDAgdG8gMSB0byBhdm9pZCB6ZXJvIGRpdmlkZS4gKi8NCisgIGlmIChxdWFsaXR5IDw9IDApIHF1YWxpdHkgPSAxOw0KKyAgaWYgKHF1YWxpdHkgPiAxMDApIHF1YWxpdHkgPSAxMDA7DQorDQorICAvKiBUaGUgYmFzaWMgdGFibGUgaXMgdXNlZCBhcy1pcyAoc2NhbGluZyAxMDApIGZvciBhIHF1YWxpdHkgb2YgNTAuDQorICAgKiBRdWFsaXRpZXMgNTAuLjEwMCBhcmUgY29udmVydGVkIHRvIHNjYWxpbmcgcGVyY2VudGFnZSAyMDAgLSAyKlE7DQorICAgKiBub3RlIHRoYXQgYXQgUT0xMDAgdGhlIHNjYWxpbmcgaXMgMCwgd2hpY2ggd2lsbCBjYXVzZSBqcGVnX2FkZF9xdWFudF90YWJsZQ0KKyAgICogdG8gbWFrZSBhbGwgdGhlIHRhYmxlIGVudHJpZXMgMSAoaGVuY2UsIG1pbmltdW0gcXVhbnRpemF0aW9uIGxvc3MpLg0KKyAgICogUXVhbGl0aWVzIDEuLjUwIGFyZSBjb252ZXJ0ZWQgdG8gc2NhbGluZyBwZXJjZW50YWdlIDUwMDAvUS4NCisgICAqLw0KKyAgaWYgKHF1YWxpdHkgPCA1MCkNCisgICAgcXVhbGl0eSA9IDUwMDAgLyBxdWFsaXR5Ow0KKyAgZWxzZQ0KKyAgICBxdWFsaXR5ID0gMjAwIC0gcXVhbGl0eSoyOw0KKw0KKyAgcmV0dXJuIHF1YWxpdHk7DQorfQ0KKw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfc2V0X3F1YWxpdHkgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgcXVhbGl0eSwgYm9vbGVhbiBmb3JjZV9iYXNlbGluZSkNCisvKiBTZXQgb3IgY2hhbmdlIHRoZSAncXVhbGl0eScgKHF1YW50aXphdGlvbikgc2V0dGluZywgdXNpbmcgZGVmYXVsdCB0YWJsZXMuDQorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgcXVhbGl0eS1hZGp1c3RpbmcgZW50cnkgcG9pbnQgZm9yIHR5cGljYWwgdXNlcg0KKyAqIGludGVyZmFjZXM7IG9ubHkgdGhvc2Ugd2hvIHdhbnQgZGV0YWlsZWQgY29udHJvbCBvdmVyIHF1YW50aXphdGlvbiB0YWJsZXMNCisgKiB3b3VsZCB1c2UgdGhlIHByZWNlZGluZyB0aHJlZSByb3V0aW5lcyBkaXJlY3RseS4NCisgKi8NCit7DQorICAvKiBDb252ZXJ0IHVzZXIgMC0xMDAgcmF0aW5nIHRvIHBlcmNlbnRhZ2Ugc2NhbGluZyAqLw0KKyAgcXVhbGl0eSA9IGpwZWdfcXVhbGl0eV9zY2FsaW5nKHF1YWxpdHkpOw0KKw0KKyAgLyogU2V0IHVwIHN0YW5kYXJkIHF1YWxpdHkgdGFibGVzICovDQorICBqcGVnX3NldF9saW5lYXJfcXVhbGl0eShjaW5mbywgcXVhbGl0eSwgZm9yY2VfYmFzZWxpbmUpOw0KK30NCisNCisNCisvKg0KKyAqIEh1ZmZtYW4gdGFibGUgc2V0dXAgcm91dGluZXMNCisgKi8NCisNCitMT0NBTCh2b2lkKQ0KK2FkZF9odWZmX3RhYmxlIChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCUpIVUZGX1RCTCAqKmh0YmxwdHIsIGNvbnN0IFVJTlQ4ICpiaXRzLCBjb25zdCBVSU5UOCAqdmFsKQ0KKy8qIERlZmluZSBhIEh1ZmZtYW4gdGFibGUgKi8NCit7DQorICBpbnQgbnN5bWJvbHMsIGxlbjsNCisNCisgIGlmICgqaHRibHB0ciA9PSBOVUxMKQ0KKyAgICAqaHRibHB0ciA9IGpwZWdfYWxsb2NfaHVmZl90YWJsZSgoal9jb21tb25fcHRyKSBjaW5mbyk7DQorDQorICAvKiBDb3B5IHRoZSBudW1iZXItb2Ytc3ltYm9scy1vZi1lYWNoLWNvZGUtbGVuZ3RoIGNvdW50cyAqLw0KKyAgTUVNQ09QWSgoKmh0YmxwdHIpLT5iaXRzLCBiaXRzLCBTSVpFT0YoKCpodGJscHRyKS0+Yml0cykpOw0KKw0KKyAgLyogVmFsaWRhdGUgdGhlIGNvdW50cy4gIFdlIGRvIHRoaXMgaGVyZSBtYWlubHkgc28gd2UgY2FuIGNvcHkgdGhlIHJpZ2h0DQorICAgKiBudW1iZXIgb2Ygc3ltYm9scyBmcm9tIHRoZSB2YWxbXSBhcnJheSwgd2l0aG91dCByaXNraW5nIG1hcmNoaW5nIG9mZg0KKyAgICogdGhlIGVuZCBvZiBtZW1vcnkuICBqY2h1ZmYuYyB3aWxsIGRvIGEgbW9yZSB0aG9yb3VnaCB0ZXN0IGxhdGVyLg0KKyAgICovDQorICBuc3ltYm9scyA9IDA7DQorICBmb3IgKGxlbiA9IDE7IGxlbiA8PSAxNjsgbGVuKyspDQorICAgIG5zeW1ib2xzICs9IGJpdHNbbGVuXTsNCisgIGlmIChuc3ltYm9scyA8IDEgfHwgbnN5bWJvbHMgPiAyNTYpDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0hVRkZfVEFCTEUpOw0KKw0KKyAgTUVNQ09QWSgoKmh0YmxwdHIpLT5odWZmdmFsLCB2YWwsIG5zeW1ib2xzICogU0laRU9GKFVJTlQ4KSk7DQorDQorICAvKiBJbml0aWFsaXplIHNlbnRfdGFibGUgRkFMU0Ugc28gdGFibGUgd2lsbCBiZSB3cml0dGVuIHRvIEpQRUcgZmlsZS4gKi8NCisgICgqaHRibHB0ciktPnNlbnRfdGFibGUgPSBGQUxTRTsNCit9DQorDQorDQorTE9DQUwodm9pZCkNCitzdGRfaHVmZl90YWJsZXMgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIFNldCB1cCB0aGUgc3RhbmRhcmQgSHVmZm1hbiB0YWJsZXMgKGNmLiBKUEVHIHN0YW5kYXJkIHNlY3Rpb24gSy4zKSAqLw0KKy8qIElNUE9SVEFOVDogdGhlc2UgYXJlIG9ubHkgdmFsaWQgZm9yIDgtYml0IGRhdGEgcHJlY2lzaW9uISAqLw0KK3sNCisgIHN0YXRpYyBjb25zdCBVSU5UOCBiaXRzX2RjX2x1bWluYW5jZVsxN10gPQ0KKyAgICB7IC8qIDAtYmFzZSAqLyAwLCAwLCAxLCA1LCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07DQorICBzdGF0aWMgY29uc3QgVUlOVDggdmFsX2RjX2x1bWluYW5jZVtdID0NCisgICAgeyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEgfTsNCisgIA0KKyAgc3RhdGljIGNvbnN0IFVJTlQ4IGJpdHNfZGNfY2hyb21pbmFuY2VbMTddID0NCisgICAgeyAvKiAwLWJhc2UgKi8gMCwgMCwgMywgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgMCwgMCwgMCB9Ow0KKyAgc3RhdGljIGNvbnN0IFVJTlQ4IHZhbF9kY19jaHJvbWluYW5jZVtdID0NCisgICAgeyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEgfTsNCisgIA0KKyAgc3RhdGljIGNvbnN0IFVJTlQ4IGJpdHNfYWNfbHVtaW5hbmNlWzE3XSA9DQorICAgIHsgLyogMC1iYXNlICovIDAsIDAsIDIsIDEsIDMsIDMsIDIsIDQsIDMsIDUsIDUsIDQsIDQsIDAsIDAsIDEsIDB4N2QgfTsNCisgIHN0YXRpYyBjb25zdCBVSU5UOCB2YWxfYWNfbHVtaW5hbmNlW10gPQ0KKyAgICB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDAsIDB4MDQsIDB4MTEsIDB4MDUsIDB4MTIsDQorICAgICAgMHgyMSwgMHgzMSwgMHg0MSwgMHgwNiwgMHgxMywgMHg1MSwgMHg2MSwgMHgwNywNCisgICAgICAweDIyLCAweDcxLCAweDE0LCAweDMyLCAweDgxLCAweDkxLCAweGExLCAweDA4LA0KKyAgICAgIDB4MjMsIDB4NDIsIDB4YjEsIDB4YzEsIDB4MTUsIDB4NTIsIDB4ZDEsIDB4ZjAsDQorICAgICAgMHgyNCwgMHgzMywgMHg2MiwgMHg3MiwgMHg4MiwgMHgwOSwgMHgwYSwgMHgxNiwNCisgICAgICAweDE3LCAweDE4LCAweDE5LCAweDFhLCAweDI1LCAweDI2LCAweDI3LCAweDI4LA0KKyAgICAgIDB4MjksIDB4MmEsIDB4MzQsIDB4MzUsIDB4MzYsIDB4MzcsIDB4MzgsIDB4MzksDQorICAgICAgMHgzYSwgMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHg0NywgMHg0OCwgMHg0OSwNCisgICAgICAweDRhLCAweDUzLCAweDU0LCAweDU1LCAweDU2LCAweDU3LCAweDU4LCAweDU5LA0KKyAgICAgIDB4NWEsIDB4NjMsIDB4NjQsIDB4NjUsIDB4NjYsIDB4NjcsIDB4NjgsIDB4NjksDQorICAgICAgMHg2YSwgMHg3MywgMHg3NCwgMHg3NSwgMHg3NiwgMHg3NywgMHg3OCwgMHg3OSwNCisgICAgICAweDdhLCAweDgzLCAweDg0LCAweDg1LCAweDg2LCAweDg3LCAweDg4LCAweDg5LA0KKyAgICAgIDB4OGEsIDB4OTIsIDB4OTMsIDB4OTQsIDB4OTUsIDB4OTYsIDB4OTcsIDB4OTgsDQorICAgICAgMHg5OSwgMHg5YSwgMHhhMiwgMHhhMywgMHhhNCwgMHhhNSwgMHhhNiwgMHhhNywNCisgICAgICAweGE4LCAweGE5LCAweGFhLCAweGIyLCAweGIzLCAweGI0LCAweGI1LCAweGI2LA0KKyAgICAgIDB4YjcsIDB4YjgsIDB4YjksIDB4YmEsIDB4YzIsIDB4YzMsIDB4YzQsIDB4YzUsDQorICAgICAgMHhjNiwgMHhjNywgMHhjOCwgMHhjOSwgMHhjYSwgMHhkMiwgMHhkMywgMHhkNCwNCisgICAgICAweGQ1LCAweGQ2LCAweGQ3LCAweGQ4LCAweGQ5LCAweGRhLCAweGUxLCAweGUyLA0KKyAgICAgIDB4ZTMsIDB4ZTQsIDB4ZTUsIDB4ZTYsIDB4ZTcsIDB4ZTgsIDB4ZTksIDB4ZWEsDQorICAgICAgMHhmMSwgMHhmMiwgMHhmMywgMHhmNCwgMHhmNSwgMHhmNiwgMHhmNywgMHhmOCwNCisgICAgICAweGY5LCAweGZhIH07DQorICANCisgIHN0YXRpYyBjb25zdCBVSU5UOCBiaXRzX2FjX2Nocm9taW5hbmNlWzE3XSA9DQorICAgIHsgLyogMC1iYXNlICovIDAsIDAsIDIsIDEsIDIsIDQsIDQsIDMsIDQsIDcsIDUsIDQsIDQsIDAsIDEsIDIsIDB4NzcgfTsNCisgIHN0YXRpYyBjb25zdCBVSU5UOCB2YWxfYWNfY2hyb21pbmFuY2VbXSA9DQorICAgIHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgxMSwgMHgwNCwgMHgwNSwgMHgyMSwNCisgICAgICAweDMxLCAweDA2LCAweDEyLCAweDQxLCAweDUxLCAweDA3LCAweDYxLCAweDcxLA0KKyAgICAgIDB4MTMsIDB4MjIsIDB4MzIsIDB4ODEsIDB4MDgsIDB4MTQsIDB4NDIsIDB4OTEsDQorICAgICAgMHhhMSwgMHhiMSwgMHhjMSwgMHgwOSwgMHgyMywgMHgzMywgMHg1MiwgMHhmMCwNCisgICAgICAweDE1LCAweDYyLCAweDcyLCAweGQxLCAweDBhLCAweDE2LCAweDI0LCAweDM0LA0KKyAgICAgIDB4ZTEsIDB4MjUsIDB4ZjEsIDB4MTcsIDB4MTgsIDB4MTksIDB4MWEsIDB4MjYsDQorICAgICAgMHgyNywgMHgyOCwgMHgyOSwgMHgyYSwgMHgzNSwgMHgzNiwgMHgzNywgMHgzOCwNCisgICAgICAweDM5LCAweDNhLCAweDQzLCAweDQ0LCAweDQ1LCAweDQ2LCAweDQ3LCAweDQ4LA0KKyAgICAgIDB4NDksIDB4NGEsIDB4NTMsIDB4NTQsIDB4NTUsIDB4NTYsIDB4NTcsIDB4NTgsDQorICAgICAgMHg1OSwgMHg1YSwgMHg2MywgMHg2NCwgMHg2NSwgMHg2NiwgMHg2NywgMHg2OCwNCisgICAgICAweDY5LCAweDZhLCAweDczLCAweDc0LCAweDc1LCAweDc2LCAweDc3LCAweDc4LA0KKyAgICAgIDB4NzksIDB4N2EsIDB4ODIsIDB4ODMsIDB4ODQsIDB4ODUsIDB4ODYsIDB4ODcsDQorICAgICAgMHg4OCwgMHg4OSwgMHg4YSwgMHg5MiwgMHg5MywgMHg5NCwgMHg5NSwgMHg5NiwNCisgICAgICAweDk3LCAweDk4LCAweDk5LCAweDlhLCAweGEyLCAweGEzLCAweGE0LCAweGE1LA0KKyAgICAgIDB4YTYsIDB4YTcsIDB4YTgsIDB4YTksIDB4YWEsIDB4YjIsIDB4YjMsIDB4YjQsDQorICAgICAgMHhiNSwgMHhiNiwgMHhiNywgMHhiOCwgMHhiOSwgMHhiYSwgMHhjMiwgMHhjMywNCisgICAgICAweGM0LCAweGM1LCAweGM2LCAweGM3LCAweGM4LCAweGM5LCAweGNhLCAweGQyLA0KKyAgICAgIDB4ZDMsIDB4ZDQsIDB4ZDUsIDB4ZDYsIDB4ZDcsIDB4ZDgsIDB4ZDksIDB4ZGEsDQorICAgICAgMHhlMiwgMHhlMywgMHhlNCwgMHhlNSwgMHhlNiwgMHhlNywgMHhlOCwgMHhlOSwNCisgICAgICAweGVhLCAweGYyLCAweGYzLCAweGY0LCAweGY1LCAweGY2LCAweGY3LCAweGY4LA0KKyAgICAgIDB4ZjksIDB4ZmEgfTsNCisgIA0KKyAgYWRkX2h1ZmZfdGFibGUoY2luZm8sICZjaW5mby0+ZGNfaHVmZl90YmxfcHRyc1swXSwNCisJCSBiaXRzX2RjX2x1bWluYW5jZSwgdmFsX2RjX2x1bWluYW5jZSk7DQorICBhZGRfaHVmZl90YWJsZShjaW5mbywgJmNpbmZvLT5hY19odWZmX3RibF9wdHJzWzBdLA0KKwkJIGJpdHNfYWNfbHVtaW5hbmNlLCB2YWxfYWNfbHVtaW5hbmNlKTsNCisgIGFkZF9odWZmX3RhYmxlKGNpbmZvLCAmY2luZm8tPmRjX2h1ZmZfdGJsX3B0cnNbMV0sDQorCQkgYml0c19kY19jaHJvbWluYW5jZSwgdmFsX2RjX2Nocm9taW5hbmNlKTsNCisgIGFkZF9odWZmX3RhYmxlKGNpbmZvLCAmY2luZm8tPmFjX2h1ZmZfdGJsX3B0cnNbMV0sDQorCQkgYml0c19hY19jaHJvbWluYW5jZSwgdmFsX2FjX2Nocm9taW5hbmNlKTsNCit9DQorDQorDQorLyoNCisgKiBEZWZhdWx0IHBhcmFtZXRlciBzZXR1cCBmb3IgY29tcHJlc3Npb24uDQorICoNCisgKiBBcHBsaWNhdGlvbnMgdGhhdCBkb24ndCBjaG9vc2UgdG8gdXNlIHRoaXMgcm91dGluZSBtdXN0IGRvIHRoZWlyDQorICogb3duIHNldHVwIG9mIGFsbCB0aGVzZSBwYXJhbWV0ZXJzLiAgQWx0ZXJuYXRlbHksIHlvdSBjYW4gY2FsbCB0aGlzDQorICogdG8gZXN0YWJsaXNoIGRlZmF1bHRzIGFuZCB0aGVuIGFsdGVyIHBhcmFtZXRlcnMgc2VsZWN0aXZlbHkuICBUaGlzDQorICogaXMgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIHNpbmNlLCBpZiB3ZSBhZGQgYW55IG5ldyBwYXJhbWV0ZXJzLA0KKyAqIHlvdXIgY29kZSB3aWxsIHN0aWxsIHdvcmsgKHRoZXknbGwgYmUgc2V0IHRvIHJlYXNvbmFibGUgZGVmYXVsdHMpLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfc2V0X2RlZmF1bHRzIChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBpbnQgaTsNCisNCisgIC8qIFNhZmV0eSBjaGVjayB0byBlbnN1cmUgc3RhcnRfY29tcHJlc3Mgbm90IGNhbGxlZCB5ZXQuICovDQorICBpZiAoY2luZm8tPmdsb2JhbF9zdGF0ZSAhPSBDU1RBVEVfU1RBUlQpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9TVEFURSwgY2luZm8tPmdsb2JhbF9zdGF0ZSk7DQorDQorICAvKiBBbGxvY2F0ZSBjb21wX2luZm8gYXJyYXkgbGFyZ2UgZW5vdWdoIGZvciBtYXhpbXVtIGNvbXBvbmVudCBjb3VudC4NCisgICAqIEFycmF5IGlzIG1hZGUgcGVybWFuZW50IGluIGNhc2UgYXBwbGljYXRpb24gd2FudHMgdG8gY29tcHJlc3MNCisgICAqIG11bHRpcGxlIGltYWdlcyBhdCBzYW1lIHBhcmFtIHNldHRpbmdzLg0KKyAgICovDQorICBpZiAoY2luZm8tPmNvbXBfaW5mbyA9PSBOVUxMKQ0KKyAgICBjaW5mby0+Y29tcF9pbmZvID0gKGpwZWdfY29tcG9uZW50X2luZm8gKikNCisgICAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX1BFUk1BTkVOVCwNCisJCQkJICBNQVhfQ09NUE9ORU5UUyAqIFNJWkVPRihqcGVnX2NvbXBvbmVudF9pbmZvKSk7DQorDQorICAvKiBJbml0aWFsaXplIGV2ZXJ5dGhpbmcgbm90IGRlcGVuZGVudCBvbiB0aGUgY29sb3Igc3BhY2UgKi8NCisNCisgIGNpbmZvLT5kYXRhX3ByZWNpc2lvbiA9IEJJVFNfSU5fSlNBTVBMRTsNCisgIC8qIFNldCB1cCB0d28gcXVhbnRpemF0aW9uIHRhYmxlcyB1c2luZyBkZWZhdWx0IHF1YWxpdHkgb2YgNzUgKi8NCisgIGpwZWdfc2V0X3F1YWxpdHkoY2luZm8sIDc1LCBUUlVFKTsNCisgIC8qIFNldCB1cCB0d28gSHVmZm1hbiB0YWJsZXMgKi8NCisgIHN0ZF9odWZmX3RhYmxlcyhjaW5mbyk7DQorDQorICAvKiBJbml0aWFsaXplIGRlZmF1bHQgYXJpdGhtZXRpYyBjb2RpbmcgY29uZGl0aW9uaW5nICovDQorICBmb3IgKGkgPSAwOyBpIDwgTlVNX0FSSVRIX1RCTFM7IGkrKykgew0KKyAgICBjaW5mby0+YXJpdGhfZGNfTFtpXSA9IDA7DQorICAgIGNpbmZvLT5hcml0aF9kY19VW2ldID0gMTsNCisgICAgY2luZm8tPmFyaXRoX2FjX0tbaV0gPSA1Ow0KKyAgfQ0KKw0KKyAgLyogRGVmYXVsdCBpcyBubyBtdWx0aXBsZS1zY2FuIG91dHB1dCAqLw0KKyAgY2luZm8tPnNjYW5faW5mbyA9IE5VTEw7DQorICBjaW5mby0+bnVtX3NjYW5zID0gMDsNCisNCisgIC8qIEV4cGVjdCBub3JtYWwgc291cmNlIGltYWdlLCBub3QgcmF3IGRvd25zYW1wbGVkIGRhdGEgKi8NCisgIGNpbmZvLT5yYXdfZGF0YV9pbiA9IEZBTFNFOw0KKw0KKyAgLyogVXNlIEh1ZmZtYW4gY29kaW5nLCBub3QgYXJpdGhtZXRpYyBjb2RpbmcsIGJ5IGRlZmF1bHQgKi8NCisgIGNpbmZvLT5hcml0aF9jb2RlID0gRkFMU0U7DQorDQorICAvKiBCeSBkZWZhdWx0LCBkb24ndCBkbyBleHRyYSBwYXNzZXMgdG8gb3B0aW1pemUgZW50cm9weSBjb2RpbmcgKi8NCisgIGNpbmZvLT5vcHRpbWl6ZV9jb2RpbmcgPSBGQUxTRTsNCisgIC8qIFRoZSBzdGFuZGFyZCBIdWZmbWFuIHRhYmxlcyBhcmUgb25seSB2YWxpZCBmb3IgOC1iaXQgZGF0YSBwcmVjaXNpb24uDQorICAgKiBJZiB0aGUgcHJlY2lzaW9uIGlzIGhpZ2hlciwgZm9yY2Ugb3B0aW1pemF0aW9uIG9uIHNvIHRoYXQgdXNhYmxlDQorICAgKiB0YWJsZXMgd2lsbCBiZSBjb21wdXRlZC4gIFRoaXMgdGVzdCBjYW4gYmUgcmVtb3ZlZCBpZiBkZWZhdWx0IHRhYmxlcw0KKyAgICogYXJlIHN1cHBsaWVkIHRoYXQgYXJlIHZhbGlkIGZvciB0aGUgZGVzaXJlZCBwcmVjaXNpb24uDQorICAgKi8NCisgIGlmIChjaW5mby0+ZGF0YV9wcmVjaXNpb24gPiA4KQ0KKyAgICBjaW5mby0+b3B0aW1pemVfY29kaW5nID0gVFJVRTsNCisNCisgIC8qIEJ5IGRlZmF1bHQsIHVzZSB0aGUgc2ltcGxlciBub24tY29zaXRlZCBzYW1wbGluZyBhbGlnbm1lbnQgKi8NCisgIGNpbmZvLT5DQ0lSNjAxX3NhbXBsaW5nID0gRkFMU0U7DQorDQorICAvKiBObyBpbnB1dCBzbW9vdGhpbmcgKi8NCisgIGNpbmZvLT5zbW9vdGhpbmdfZmFjdG9yID0gMDsNCisNCisgIC8qIERDVCBhbGdvcml0aG0gcHJlZmVyZW5jZSAqLw0KKyAgY2luZm8tPmRjdF9tZXRob2QgPSBKRENUX0RFRkFVTFQ7DQorDQorICAvKiBObyByZXN0YXJ0IG1hcmtlcnMgKi8NCisgIGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsID0gMDsNCisgIGNpbmZvLT5yZXN0YXJ0X2luX3Jvd3MgPSAwOw0KKw0KKyAgLyogRmlsbCBpbiBkZWZhdWx0IEpGSUYgbWFya2VyIHBhcmFtZXRlcnMuICBOb3RlIHRoYXQgd2hldGhlciB0aGUgbWFya2VyDQorICAgKiB3aWxsIGFjdHVhbGx5IGJlIHdyaXR0ZW4gaXMgZGV0ZXJtaW5lZCBieSBqcGVnX3NldF9jb2xvcnNwYWNlLg0KKyAgICoNCisgICAqIEJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGVtaXRzIEpGSUYgdmVyc2lvbiBjb2RlIDEuMDEuDQorICAgKiBBbiBhcHBsaWNhdGlvbiB0aGF0IHdhbnRzIHRvIGVtaXQgSkZJRiAxLjAyIGV4dGVuc2lvbiBtYXJrZXJzIHNob3VsZCBzZXQNCisgICAqIEpGSUZfbWlub3JfdmVyc2lvbiB0byAyLiAgV2UgY291bGQgcHJvYmFibHkgZ2V0IGF3YXkgd2l0aCBqdXN0IGRlZmF1bHRpbmcNCisgICAqIHRvIDEuMDIsIGJ1dCB0aGVyZSBtYXkgc3RpbGwgYmUgc29tZSBkZWNvZGVycyBpbiB1c2UgdGhhdCB3aWxsIGNvbXBsYWluDQorICAgKiBhYm91dCB0aGF0OyBzYXlpbmcgMS4wMSBzaG91bGQgbWluaW1pemUgY29tcGF0aWJpbGl0eSBwcm9ibGVtcy4NCisgICAqLw0KKyAgY2luZm8tPkpGSUZfbWFqb3JfdmVyc2lvbiA9IDE7IC8qIERlZmF1bHQgSkZJRiB2ZXJzaW9uID0gMS4wMSAqLw0KKyAgY2luZm8tPkpGSUZfbWlub3JfdmVyc2lvbiA9IDE7DQorICBjaW5mby0+ZGVuc2l0eV91bml0ID0gMDsJLyogUGl4ZWwgc2l6ZSBpcyB1bmtub3duIGJ5IGRlZmF1bHQgKi8NCisgIGNpbmZvLT5YX2RlbnNpdHkgPSAxOwkJLyogUGl4ZWwgYXNwZWN0IHJhdGlvIGlzIHNxdWFyZSBieSBkZWZhdWx0ICovDQorICBjaW5mby0+WV9kZW5zaXR5ID0gMTsNCisNCisgIC8qIENob29zZSBKUEVHIGNvbG9yc3BhY2UgYmFzZWQgb24gaW5wdXQgc3BhY2UsIHNldCBkZWZhdWx0cyBhY2NvcmRpbmdseSAqLw0KKw0KKyAganBlZ19kZWZhdWx0X2NvbG9yc3BhY2UoY2luZm8pOw0KK30NCisNCisNCisvKg0KKyAqIFNlbGVjdCBhbiBhcHByb3ByaWF0ZSBKUEVHIGNvbG9yc3BhY2UgZm9yIGluX2NvbG9yX3NwYWNlLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfZGVmYXVsdF9jb2xvcnNwYWNlIChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBzd2l0Y2ggKGNpbmZvLT5pbl9jb2xvcl9zcGFjZSkgew0KKyAgY2FzZSBKQ1NfR1JBWVNDQUxFOg0KKyAgICBqcGVnX3NldF9jb2xvcnNwYWNlKGNpbmZvLCBKQ1NfR1JBWVNDQUxFKTsNCisgICAgYnJlYWs7DQorICBjYXNlIEpDU19SR0I6DQorICAgIGpwZWdfc2V0X2NvbG9yc3BhY2UoY2luZm8sIEpDU19ZQ2JDcik7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKQ1NfWUNiQ3I6DQorICAgIGpwZWdfc2V0X2NvbG9yc3BhY2UoY2luZm8sIEpDU19ZQ2JDcik7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKQ1NfQ01ZSzoNCisgICAganBlZ19zZXRfY29sb3JzcGFjZShjaW5mbywgSkNTX0NNWUspOyAvKiBCeSBkZWZhdWx0LCBubyB0cmFuc2xhdGlvbiAqLw0KKyAgICBicmVhazsNCisgIGNhc2UgSkNTX1lDQ0s6DQorICAgIGpwZWdfc2V0X2NvbG9yc3BhY2UoY2luZm8sIEpDU19ZQ0NLKTsNCisgICAgYnJlYWs7DQorICBjYXNlIEpDU19VTktOT1dOOg0KKyAgICBqcGVnX3NldF9jb2xvcnNwYWNlKGNpbmZvLCBKQ1NfVU5LTk9XTik7DQorICAgIGJyZWFrOw0KKyAgZGVmYXVsdDoNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfSU5fQ09MT1JTUEFDRSk7DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogU2V0IHRoZSBKUEVHIGNvbG9yc3BhY2UsIGFuZCBjaG9vc2UgY29sb3JzcGFjZS1kZXBlbmRlbnQgZGVmYXVsdCB2YWx1ZXMuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19zZXRfY29sb3JzcGFjZSAoal9jb21wcmVzc19wdHIgY2luZm8sIEpfQ09MT1JfU1BBQ0UgY29sb3JzcGFjZSkNCit7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisgIGludCBjaTsNCisNCisjZGVmaW5lIFNFVF9DT01QKGluZGV4LGlkLGhzYW1wLHZzYW1wLHF1YW50LGRjdGJsLGFjdGJsKSAgXA0KKyAgKGNvbXBwdHIgPSAmY2luZm8tPmNvbXBfaW5mb1tpbmRleF0sIFwNCisgICBjb21wcHRyLT5jb21wb25lbnRfaWQgPSAoaWQpLCBcDQorICAgY29tcHB0ci0+aF9zYW1wX2ZhY3RvciA9IChoc2FtcCksIFwNCisgICBjb21wcHRyLT52X3NhbXBfZmFjdG9yID0gKHZzYW1wKSwgXA0KKyAgIGNvbXBwdHItPnF1YW50X3RibF9ubyA9IChxdWFudCksIFwNCisgICBjb21wcHRyLT5kY190Ymxfbm8gPSAoZGN0YmwpLCBcDQorICAgY29tcHB0ci0+YWNfdGJsX25vID0gKGFjdGJsKSApDQorDQorICAvKiBTYWZldHkgY2hlY2sgdG8gZW5zdXJlIHN0YXJ0X2NvbXByZXNzIG5vdCBjYWxsZWQgeWV0LiAqLw0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gQ1NUQVRFX1NUQVJUKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKw0KKyAgLyogRm9yIGFsbCBjb2xvcnNwYWNlcywgd2UgdXNlIFEgYW5kIEh1ZmYgdGFibGVzIDAgZm9yIGx1bWluYW5jZSBjb21wb25lbnRzLA0KKyAgICogdGFibGVzIDEgZm9yIGNocm9taW5hbmNlIGNvbXBvbmVudHMuDQorICAgKi8NCisNCisgIGNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID0gY29sb3JzcGFjZTsNCisNCisgIGNpbmZvLT53cml0ZV9KRklGX2hlYWRlciA9IEZBTFNFOyAvKiBObyBtYXJrZXIgZm9yIG5vbi1KRklGIGNvbG9yc3BhY2VzICovDQorICBjaW5mby0+d3JpdGVfQWRvYmVfbWFya2VyID0gRkFMU0U7IC8qIHdyaXRlIG5vIEFkb2JlIG1hcmtlciBieSBkZWZhdWx0ICovDQorDQorICBzd2l0Y2ggKGNvbG9yc3BhY2UpIHsNCisgIGNhc2UgSkNTX0dSQVlTQ0FMRToNCisgICAgY2luZm8tPndyaXRlX0pGSUZfaGVhZGVyID0gVFJVRTsgLyogV3JpdGUgYSBKRklGIG1hcmtlciAqLw0KKyAgICBjaW5mby0+bnVtX2NvbXBvbmVudHMgPSAxOw0KKyAgICAvKiBKRklGIHNwZWNpZmllcyBjb21wb25lbnQgSUQgMSAqLw0KKyAgICBTRVRfQ09NUCgwLCAxLCAxLDEsIDAsIDAsMCk7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKQ1NfUkdCOg0KKyAgICBjaW5mby0+d3JpdGVfQWRvYmVfbWFya2VyID0gVFJVRTsgLyogd3JpdGUgQWRvYmUgbWFya2VyIHRvIGZsYWcgUkdCICovDQorICAgIGNpbmZvLT5udW1fY29tcG9uZW50cyA9IDM7DQorICAgIFNFVF9DT01QKDAsIDB4NTIgLyogJ1InICovLCAxLDEsIDAsIDAsMCk7DQorICAgIFNFVF9DT01QKDEsIDB4NDcgLyogJ0cnICovLCAxLDEsIDAsIDAsMCk7DQorICAgIFNFVF9DT01QKDIsIDB4NDIgLyogJ0InICovLCAxLDEsIDAsIDAsMCk7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKQ1NfWUNiQ3I6DQorICAgIGNpbmZvLT53cml0ZV9KRklGX2hlYWRlciA9IFRSVUU7IC8qIFdyaXRlIGEgSkZJRiBtYXJrZXIgKi8NCisgICAgY2luZm8tPm51bV9jb21wb25lbnRzID0gMzsNCisgICAgLyogSkZJRiBzcGVjaWZpZXMgY29tcG9uZW50IElEcyAxLDIsMyAqLw0KKyAgICAvKiBXZSBkZWZhdWx0IHRvIDJ4MiBzdWJzYW1wbGVzIG9mIGNocm9taW5hbmNlICovDQorICAgIFNFVF9DT01QKDAsIDEsIDIsMiwgMCwgMCwwKTsNCisgICAgU0VUX0NPTVAoMSwgMiwgMSwxLCAxLCAxLDEpOw0KKyAgICBTRVRfQ09NUCgyLCAzLCAxLDEsIDEsIDEsMSk7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKQ1NfQ01ZSzoNCisgICAgY2luZm8tPndyaXRlX0Fkb2JlX21hcmtlciA9IFRSVUU7IC8qIHdyaXRlIEFkb2JlIG1hcmtlciB0byBmbGFnIENNWUsgKi8NCisgICAgY2luZm8tPm51bV9jb21wb25lbnRzID0gNDsNCisgICAgU0VUX0NPTVAoMCwgMHg0MyAvKiAnQycgKi8sIDEsMSwgMCwgMCwwKTsNCisgICAgU0VUX0NPTVAoMSwgMHg0RCAvKiAnTScgKi8sIDEsMSwgMCwgMCwwKTsNCisgICAgU0VUX0NPTVAoMiwgMHg1OSAvKiAnWScgKi8sIDEsMSwgMCwgMCwwKTsNCisgICAgU0VUX0NPTVAoMywgMHg0QiAvKiAnSycgKi8sIDEsMSwgMCwgMCwwKTsNCisgICAgYnJlYWs7DQorICBjYXNlIEpDU19ZQ0NLOg0KKyAgICBjaW5mby0+d3JpdGVfQWRvYmVfbWFya2VyID0gVFJVRTsgLyogd3JpdGUgQWRvYmUgbWFya2VyIHRvIGZsYWcgWUNDSyAqLw0KKyAgICBjaW5mby0+bnVtX2NvbXBvbmVudHMgPSA0Ow0KKyAgICBTRVRfQ09NUCgwLCAxLCAyLDIsIDAsIDAsMCk7DQorICAgIFNFVF9DT01QKDEsIDIsIDEsMSwgMSwgMSwxKTsNCisgICAgU0VUX0NPTVAoMiwgMywgMSwxLCAxLCAxLDEpOw0KKyAgICBTRVRfQ09NUCgzLCA0LCAyLDIsIDAsIDAsMCk7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKQ1NfVU5LTk9XTjoNCisgICAgY2luZm8tPm51bV9jb21wb25lbnRzID0gY2luZm8tPmlucHV0X2NvbXBvbmVudHM7DQorICAgIGlmIChjaW5mby0+bnVtX2NvbXBvbmVudHMgPCAxIHx8IGNpbmZvLT5udW1fY29tcG9uZW50cyA+IE1BWF9DT01QT05FTlRTKQ0KKyAgICAgIEVSUkVYSVQyKGNpbmZvLCBKRVJSX0NPTVBPTkVOVF9DT1VOVCwgY2luZm8tPm51bV9jb21wb25lbnRzLA0KKwkgICAgICAgTUFYX0NPTVBPTkVOVFMpOw0KKyAgICBmb3IgKGNpID0gMDsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7IGNpKyspIHsNCisgICAgICBTRVRfQ09NUChjaSwgY2ksIDEsMSwgMCwgMCwwKTsNCisgICAgfQ0KKyAgICBicmVhazsNCisgIGRlZmF1bHQ6DQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0pfQ09MT1JTUEFDRSk7DQorICB9DQorfQ0KKw0KKw0KKyNpZmRlZiBDX1BST0dSRVNTSVZFX1NVUFBPUlRFRA0KKw0KK0xPQ0FMKGpwZWdfc2Nhbl9pbmZvICopDQorZmlsbF9hX3NjYW4gKGpwZWdfc2Nhbl9pbmZvICogc2NhbnB0ciwgaW50IGNpLA0KKwkgICAgIGludCBTcywgaW50IFNlLCBpbnQgQWgsIGludCBBbCkNCisvKiBTdXBwb3J0IHJvdXRpbmU6IGdlbmVyYXRlIG9uZSBzY2FuIGZvciBzcGVjaWZpZWQgY29tcG9uZW50ICovDQorew0KKyAgc2NhbnB0ci0+Y29tcHNfaW5fc2NhbiA9IDE7DQorICBzY2FucHRyLT5jb21wb25lbnRfaW5kZXhbMF0gPSBjaTsNCisgIHNjYW5wdHItPlNzID0gU3M7DQorICBzY2FucHRyLT5TZSA9IFNlOw0KKyAgc2NhbnB0ci0+QWggPSBBaDsNCisgIHNjYW5wdHItPkFsID0gQWw7DQorICBzY2FucHRyKys7DQorICByZXR1cm4gc2NhbnB0cjsNCit9DQorDQorTE9DQUwoanBlZ19zY2FuX2luZm8gKikNCitmaWxsX3NjYW5zIChqcGVnX3NjYW5faW5mbyAqIHNjYW5wdHIsIGludCBuY29tcHMsDQorCSAgICBpbnQgU3MsIGludCBTZSwgaW50IEFoLCBpbnQgQWwpDQorLyogU3VwcG9ydCByb3V0aW5lOiBnZW5lcmF0ZSBvbmUgc2NhbiBmb3IgZWFjaCBjb21wb25lbnQgKi8NCit7DQorICBpbnQgY2k7DQorDQorICBmb3IgKGNpID0gMDsgY2kgPCBuY29tcHM7IGNpKyspIHsNCisgICAgc2NhbnB0ci0+Y29tcHNfaW5fc2NhbiA9IDE7DQorICAgIHNjYW5wdHItPmNvbXBvbmVudF9pbmRleFswXSA9IGNpOw0KKyAgICBzY2FucHRyLT5TcyA9IFNzOw0KKyAgICBzY2FucHRyLT5TZSA9IFNlOw0KKyAgICBzY2FucHRyLT5BaCA9IEFoOw0KKyAgICBzY2FucHRyLT5BbCA9IEFsOw0KKyAgICBzY2FucHRyKys7DQorICB9DQorICByZXR1cm4gc2NhbnB0cjsNCit9DQorDQorTE9DQUwoanBlZ19zY2FuX2luZm8gKikNCitmaWxsX2RjX3NjYW5zIChqcGVnX3NjYW5faW5mbyAqIHNjYW5wdHIsIGludCBuY29tcHMsIGludCBBaCwgaW50IEFsKQ0KKy8qIFN1cHBvcnQgcm91dGluZTogZ2VuZXJhdGUgaW50ZXJsZWF2ZWQgREMgc2NhbiBpZiBwb3NzaWJsZSwgZWxzZSBOIHNjYW5zICovDQorew0KKyAgaW50IGNpOw0KKw0KKyAgaWYgKG5jb21wcyA8PSBNQVhfQ09NUFNfSU5fU0NBTikgew0KKyAgICAvKiBTaW5nbGUgaW50ZXJsZWF2ZWQgREMgc2NhbiAqLw0KKyAgICBzY2FucHRyLT5jb21wc19pbl9zY2FuID0gbmNvbXBzOw0KKyAgICBmb3IgKGNpID0gMDsgY2kgPCBuY29tcHM7IGNpKyspDQorICAgICAgc2NhbnB0ci0+Y29tcG9uZW50X2luZGV4W2NpXSA9IGNpOw0KKyAgICBzY2FucHRyLT5TcyA9IHNjYW5wdHItPlNlID0gMDsNCisgICAgc2NhbnB0ci0+QWggPSBBaDsNCisgICAgc2NhbnB0ci0+QWwgPSBBbDsNCisgICAgc2NhbnB0cisrOw0KKyAgfSBlbHNlIHsNCisgICAgLyogTm9uaW50ZXJsZWF2ZWQgREMgc2NhbiBmb3IgZWFjaCBjb21wb25lbnQgKi8NCisgICAgc2NhbnB0ciA9IGZpbGxfc2NhbnMoc2NhbnB0ciwgbmNvbXBzLCAwLCAwLCBBaCwgQWwpOw0KKyAgfQ0KKyAgcmV0dXJuIHNjYW5wdHI7DQorfQ0KKw0KKw0KKy8qDQorICogQ3JlYXRlIGEgcmVjb21tZW5kZWQgcHJvZ3Jlc3NpdmUtSlBFRyBzY3JpcHQuDQorICogY2luZm8tPm51bV9jb21wb25lbnRzIGFuZCBjaW5mby0+anBlZ19jb2xvcl9zcGFjZSBtdXN0IGJlIGNvcnJlY3QuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19zaW1wbGVfcHJvZ3Jlc3Npb24gKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIGludCBuY29tcHMgPSBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorICBpbnQgbnNjYW5zOw0KKyAganBlZ19zY2FuX2luZm8gKiBzY2FucHRyOw0KKw0KKyAgLyogU2FmZXR5IGNoZWNrIHRvIGVuc3VyZSBzdGFydF9jb21wcmVzcyBub3QgY2FsbGVkIHlldC4gKi8NCisgIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlICE9IENTVEFURV9TVEFSVCkNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NUQVRFLCBjaW5mby0+Z2xvYmFsX3N0YXRlKTsNCisNCisgIC8qIEZpZ3VyZSBzcGFjZSBuZWVkZWQgZm9yIHNjcmlwdC4gIENhbGN1bGF0aW9uIG11c3QgbWF0Y2ggY29kZSBiZWxvdyEgKi8NCisgIGlmIChuY29tcHMgPT0gMyAmJiBjaW5mby0+anBlZ19jb2xvcl9zcGFjZSA9PSBKQ1NfWUNiQ3IpIHsNCisgICAgLyogQ3VzdG9tIHNjcmlwdCBmb3IgWUNiQ3IgY29sb3IgaW1hZ2VzLiAqLw0KKyAgICBuc2NhbnMgPSAxMDsNCisgIH0gZWxzZSB7DQorICAgIC8qIEFsbC1wdXJwb3NlIHNjcmlwdCBmb3Igb3RoZXIgY29sb3Igc3BhY2VzLiAqLw0KKyAgICBpZiAobmNvbXBzID4gTUFYX0NPTVBTX0lOX1NDQU4pDQorICAgICAgbnNjYW5zID0gNiAqIG5jb21wczsJLyogMiBEQyArIDQgQUMgc2NhbnMgcGVyIGNvbXBvbmVudCAqLw0KKyAgICBlbHNlDQorICAgICAgbnNjYW5zID0gMiArIDQgKiBuY29tcHM7CS8qIDIgREMgc2NhbnM7IDQgQUMgc2NhbnMgcGVyIGNvbXBvbmVudCAqLw0KKyAgfQ0KKw0KKyAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIHNjcmlwdC4NCisgICAqIFdlIG5lZWQgdG8gcHV0IGl0IGluIHRoZSBwZXJtYW5lbnQgcG9vbCBpbiBjYXNlIHRoZSBhcHBsaWNhdGlvbiBwZXJmb3Jtcw0KKyAgICogbXVsdGlwbGUgY29tcHJlc3Npb25zIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNldHRpbmdzLiAgVG8gYXZvaWQgYSBtZW1vcnkNCisgICAqIGxlYWsgaWYganBlZ19zaW1wbGVfcHJvZ3Jlc3Npb24gaXMgY2FsbGVkIHJlcGVhdGVkbHkgZm9yIHRoZSBzYW1lIEpQRUcNCisgICAqIG9iamVjdCwgd2UgdHJ5IHRvIHJlLXVzZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBzcGFjZSwgYW5kIHdlIGFsbG9jYXRlDQorICAgKiBlbm91Z2ggc3BhY2UgdG8gaGFuZGxlIFlDYkNyIGV2ZW4gaWYgaW5pdGlhbGx5IGFza2VkIGZvciBncmF5c2NhbGUuDQorICAgKi8NCisgIGlmIChjaW5mby0+c2NyaXB0X3NwYWNlID09IE5VTEwgfHwgY2luZm8tPnNjcmlwdF9zcGFjZV9zaXplIDwgbnNjYW5zKSB7DQorICAgIGNpbmZvLT5zY3JpcHRfc3BhY2Vfc2l6ZSA9IE1BWChuc2NhbnMsIDEwKTsNCisgICAgY2luZm8tPnNjcmlwdF9zcGFjZSA9IChqcGVnX3NjYW5faW5mbyAqKQ0KKyAgICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfUEVSTUFORU5ULA0KKwkJCWNpbmZvLT5zY3JpcHRfc3BhY2Vfc2l6ZSAqIFNJWkVPRihqcGVnX3NjYW5faW5mbykpOw0KKyAgfQ0KKyAgc2NhbnB0ciA9IGNpbmZvLT5zY3JpcHRfc3BhY2U7DQorICBjaW5mby0+c2Nhbl9pbmZvID0gc2NhbnB0cjsNCisgIGNpbmZvLT5udW1fc2NhbnMgPSBuc2NhbnM7DQorDQorICBpZiAobmNvbXBzID09IDMgJiYgY2luZm8tPmpwZWdfY29sb3Jfc3BhY2UgPT0gSkNTX1lDYkNyKSB7DQorICAgIC8qIEN1c3RvbSBzY3JpcHQgZm9yIFlDYkNyIGNvbG9yIGltYWdlcy4gKi8NCisgICAgLyogSW5pdGlhbCBEQyBzY2FuICovDQorICAgIHNjYW5wdHIgPSBmaWxsX2RjX3NjYW5zKHNjYW5wdHIsIG5jb21wcywgMCwgMSk7DQorICAgIC8qIEluaXRpYWwgQUMgc2NhbjogZ2V0IHNvbWUgbHVtYSBkYXRhIG91dCBpbiBhIGh1cnJ5ICovDQorICAgIHNjYW5wdHIgPSBmaWxsX2Ffc2NhbihzY2FucHRyLCAwLCAxLCA1LCAwLCAyKTsNCisgICAgLyogQ2hyb21hIGRhdGEgaXMgdG9vIHNtYWxsIHRvIGJlIHdvcnRoIGV4cGVuZGluZyBtYW55IHNjYW5zIG9uICovDQorICAgIHNjYW5wdHIgPSBmaWxsX2Ffc2NhbihzY2FucHRyLCAyLCAxLCA2MywgMCwgMSk7DQorICAgIHNjYW5wdHIgPSBmaWxsX2Ffc2NhbihzY2FucHRyLCAxLCAxLCA2MywgMCwgMSk7DQorICAgIC8qIENvbXBsZXRlIHNwZWN0cmFsIHNlbGVjdGlvbiBmb3IgbHVtYSBBQyAqLw0KKyAgICBzY2FucHRyID0gZmlsbF9hX3NjYW4oc2NhbnB0ciwgMCwgNiwgNjMsIDAsIDIpOw0KKyAgICAvKiBSZWZpbmUgbmV4dCBiaXQgb2YgbHVtYSBBQyAqLw0KKyAgICBzY2FucHRyID0gZmlsbF9hX3NjYW4oc2NhbnB0ciwgMCwgMSwgNjMsIDIsIDEpOw0KKyAgICAvKiBGaW5pc2ggREMgc3VjY2Vzc2l2ZSBhcHByb3hpbWF0aW9uICovDQorICAgIHNjYW5wdHIgPSBmaWxsX2RjX3NjYW5zKHNjYW5wdHIsIG5jb21wcywgMSwgMCk7DQorICAgIC8qIEZpbmlzaCBBQyBzdWNjZXNzaXZlIGFwcHJveGltYXRpb24gKi8NCisgICAgc2NhbnB0ciA9IGZpbGxfYV9zY2FuKHNjYW5wdHIsIDIsIDEsIDYzLCAxLCAwKTsNCisgICAgc2NhbnB0ciA9IGZpbGxfYV9zY2FuKHNjYW5wdHIsIDEsIDEsIDYzLCAxLCAwKTsNCisgICAgLyogTHVtYSBib3R0b20gYml0IGNvbWVzIGxhc3Qgc2luY2UgaXQncyB1c3VhbGx5IGxhcmdlc3Qgc2NhbiAqLw0KKyAgICBzY2FucHRyID0gZmlsbF9hX3NjYW4oc2NhbnB0ciwgMCwgMSwgNjMsIDEsIDApOw0KKyAgfSBlbHNlIHsNCisgICAgLyogQWxsLXB1cnBvc2Ugc2NyaXB0IGZvciBvdGhlciBjb2xvciBzcGFjZXMuICovDQorICAgIC8qIFN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbiBmaXJzdCBwYXNzICovDQorICAgIHNjYW5wdHIgPSBmaWxsX2RjX3NjYW5zKHNjYW5wdHIsIG5jb21wcywgMCwgMSk7DQorICAgIHNjYW5wdHIgPSBmaWxsX3NjYW5zKHNjYW5wdHIsIG5jb21wcywgMSwgNSwgMCwgMik7DQorICAgIHNjYW5wdHIgPSBmaWxsX3NjYW5zKHNjYW5wdHIsIG5jb21wcywgNiwgNjMsIDAsIDIpOw0KKyAgICAvKiBTdWNjZXNzaXZlIGFwcHJveGltYXRpb24gc2Vjb25kIHBhc3MgKi8NCisgICAgc2NhbnB0ciA9IGZpbGxfc2NhbnMoc2NhbnB0ciwgbmNvbXBzLCAxLCA2MywgMiwgMSk7DQorICAgIC8qIFN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbiBmaW5hbCBwYXNzICovDQorICAgIHNjYW5wdHIgPSBmaWxsX2RjX3NjYW5zKHNjYW5wdHIsIG5jb21wcywgMSwgMCk7DQorICAgIHNjYW5wdHIgPSBmaWxsX3NjYW5zKHNjYW5wdHIsIG5jb21wcywgMSwgNjMsIDEsIDApOw0KKyAgfQ0KK30NCisNCisjZW5kaWYgLyogQ19QUk9HUkVTU0lWRV9TVVBQT1JURUQgKi8NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY3BodWZmLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY3BodWZmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI2NTVmYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjcGh1ZmYuYwpAQCAtMCwwICsxLDgzNiBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGpjcGh1ZmYuYw0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIEh1ZmZtYW4gZW50cm9weSBlbmNvZGluZyByb3V0aW5lcyBmb3IgcHJvZ3Jlc3NpdmUgSlBFRy4NCisgKg0KKyAqIFdlIGRvIG5vdCBzdXBwb3J0IG91dHB1dCBzdXNwZW5zaW9uIGluIHRoaXMgbW9kdWxlLCBzaW5jZSB0aGUgbGlicmFyeQ0KKyAqIGN1cnJlbnRseSBkb2VzIG5vdCBhbGxvdyBtdWx0aXBsZS1zY2FuIGZpbGVzIHRvIGJlIHdyaXR0ZW4gd2l0aCBvdXRwdXQNCisgKiBzdXNwZW5zaW9uLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKyNpbmNsdWRlICJqY2h1ZmYuaCIJCS8qIERlY2xhcmF0aW9ucyBzaGFyZWQgd2l0aCBqY2h1ZmYuYyAqLw0KKw0KKyNpZmRlZiBDX1BST0dSRVNTSVZFX1NVUFBPUlRFRA0KKw0KKy8qIEV4cGFuZGVkIGVudHJvcHkgZW5jb2RlciBvYmplY3QgZm9yIHByb2dyZXNzaXZlIEh1ZmZtYW4gZW5jb2RpbmcuICovDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgc3RydWN0IGpwZWdfZW50cm9weV9lbmNvZGVyIHB1YjsgLyogcHVibGljIGZpZWxkcyAqLw0KKw0KKyAgLyogTW9kZSBmbGFnOiBUUlVFIGZvciBvcHRpbWl6YXRpb24sIEZBTFNFIGZvciBhY3R1YWwgZGF0YSBvdXRwdXQgKi8NCisgIGJvb2xlYW4gZ2F0aGVyX3N0YXRpc3RpY3M7DQorDQorICAvKiBCaXQtbGV2ZWwgY29kaW5nIHN0YXR1cy4NCisgICAqIG5leHRfb3V0cHV0X2J5dGUvZnJlZV9pbl9idWZmZXIgYXJlIGxvY2FsIGNvcGllcyBvZiBjaW5mby0+ZGVzdCBmaWVsZHMuDQorICAgKi8NCisgIEpPQ1RFVCAqIG5leHRfb3V0cHV0X2J5dGU7CS8qID0+IG5leHQgYnl0ZSB0byB3cml0ZSBpbiBidWZmZXIgKi8NCisgIHNpemVfdCBmcmVlX2luX2J1ZmZlcjsJLyogIyBvZiBieXRlIHNwYWNlcyByZW1haW5pbmcgaW4gYnVmZmVyICovDQorICBJTlQzMiBwdXRfYnVmZmVyOwkJLyogY3VycmVudCBiaXQtYWNjdW11bGF0aW9uIGJ1ZmZlciAqLw0KKyAgaW50IHB1dF9iaXRzOwkJCS8qICMgb2YgYml0cyBub3cgaW4gaXQgKi8NCisgIGpfY29tcHJlc3NfcHRyIGNpbmZvOwkJLyogbGluayB0byBjaW5mbyAobmVlZGVkIGZvciBkdW1wX2J1ZmZlcikgKi8NCisNCisgIC8qIENvZGluZyBzdGF0dXMgZm9yIERDIGNvbXBvbmVudHMgKi8NCisgIGludCBsYXN0X2RjX3ZhbFtNQVhfQ09NUFNfSU5fU0NBTl07IC8qIGxhc3QgREMgY29lZiBmb3IgZWFjaCBjb21wb25lbnQgKi8NCisNCisgIC8qIENvZGluZyBzdGF0dXMgZm9yIEFDIGNvbXBvbmVudHMgKi8NCisgIGludCBhY190Ymxfbm87CQkvKiB0aGUgdGFibGUgbnVtYmVyIG9mIHRoZSBzaW5nbGUgY29tcG9uZW50ICovDQorICB1bnNpZ25lZCBpbnQgRU9CUlVOOwkJLyogcnVuIGxlbmd0aCBvZiBFT0JzICovDQorICB1bnNpZ25lZCBpbnQgQkU7CQkvKiAjIG9mIGJ1ZmZlcmVkIGNvcnJlY3Rpb24gYml0cyBiZWZvcmUgTUNVICovDQorICBjaGFyICogYml0X2J1ZmZlcjsJCS8qIGJ1ZmZlciBmb3IgY29ycmVjdGlvbiBiaXRzICgxIHBlciBjaGFyKSAqLw0KKyAgLyogcGFja2luZyBjb3JyZWN0aW9uIGJpdHMgdGlnaHRseSB3b3VsZCBzYXZlIHNvbWUgc3BhY2UgYnV0IGNvc3QgdGltZS4uLiAqLw0KKw0KKyAgdW5zaWduZWQgaW50IHJlc3RhcnRzX3RvX2dvOwkvKiBNQ1VzIGxlZnQgaW4gdGhpcyByZXN0YXJ0IGludGVydmFsICovDQorICBpbnQgbmV4dF9yZXN0YXJ0X251bTsJCS8qIG5leHQgcmVzdGFydCBudW1iZXIgdG8gd3JpdGUgKDAtNykgKi8NCisNCisgIC8qIFBvaW50ZXJzIHRvIGRlcml2ZWQgdGFibGVzICh0aGVzZSB3b3Jrc3BhY2VzIGhhdmUgaW1hZ2UgbGlmZXNwYW4pLg0KKyAgICogU2luY2UgYW55IG9uZSBzY2FuIGNvZGVzIG9ubHkgREMgb3Igb25seSBBQywgd2Ugb25seSBuZWVkIG9uZSBzZXQNCisgICAqIG9mIHRhYmxlcywgbm90IG9uZSBmb3IgREMgYW5kIG9uZSBmb3IgQUMuDQorICAgKi8NCisgIGNfZGVyaXZlZF90YmwgKiBkZXJpdmVkX3RibHNbTlVNX0hVRkZfVEJMU107DQorDQorICAvKiBTdGF0aXN0aWNzIHRhYmxlcyBmb3Igb3B0aW1pemF0aW9uOyBhZ2Fpbiwgb25lIHNldCBpcyBlbm91Z2ggKi8NCisgIGxvbmcgKiBjb3VudF9wdHJzW05VTV9IVUZGX1RCTFNdOw0KK30gcGh1ZmZfZW50cm9weV9lbmNvZGVyOw0KKw0KK3R5cGVkZWYgcGh1ZmZfZW50cm9weV9lbmNvZGVyICogcGh1ZmZfZW50cm9weV9wdHI7DQorDQorLyogTUFYX0NPUlJfQklUUyBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgdGhlIEFDIHJlZmluZW1lbnQgY29ycmVjdGlvbi1iaXQNCisgKiBidWZmZXIgY2FuIGhvbGQuICBMYXJnZXIgc2l6ZXMgbWF5IHNsaWdodGx5IGltcHJvdmUgY29tcHJlc3Npb24sIGJ1dA0KKyAqIDEwMDAgaXMgYWxyZWFkeSB3ZWxsIGludG8gdGhlIHJlYWxtIG9mIG92ZXJraWxsLg0KKyAqIFRoZSBtaW5pbXVtIHNhZmUgc2l6ZSBpcyA2NCBiaXRzLg0KKyAqLw0KKw0KKyNkZWZpbmUgTUFYX0NPUlJfQklUUyAgMTAwMAkvKiBNYXggIyBvZiBjb3JyZWN0aW9uIGJpdHMgSSBjYW4gYnVmZmVyICovDQorDQorLyogSVJJR0hUX1NISUZUIGlzIGxpa2UgUklHSFRfU0hJRlQsIGJ1dCB3b3JrcyBvbiBpbnQgcmF0aGVyIHRoYW4gSU5UMzIuDQorICogV2UgYXNzdW1lIHRoYXQgaW50IHJpZ2h0IHNoaWZ0IGlzIHVuc2lnbmVkIGlmIElOVDMyIHJpZ2h0IHNoaWZ0IGlzLA0KKyAqIHdoaWNoIHNob3VsZCBiZSBzYWZlLg0KKyAqLw0KKw0KKyNpZmRlZiBSSUdIVF9TSElGVF9JU19VTlNJR05FRA0KKyNkZWZpbmUgSVNISUZUX1RFTVBTCWludCBpc2hpZnRfdGVtcDsNCisjZGVmaW5lIElSSUdIVF9TSElGVCh4LHNoZnQpICBcDQorCSgoaXNoaWZ0X3RlbXAgPSAoeCkpIDwgMCA/IFwNCisJIChpc2hpZnRfdGVtcCA+PiAoc2hmdCkpIHwgKCh+MCkgPDwgKDE2LShzaGZ0KSkpIDogXA0KKwkgKGlzaGlmdF90ZW1wID4+IChzaGZ0KSkpDQorI2Vsc2UNCisjZGVmaW5lIElTSElGVF9URU1QUw0KKyNkZWZpbmUgSVJJR0hUX1NISUZUKHgsc2hmdCkJKCh4KSA+PiAoc2hmdCkpDQorI2VuZGlmDQorDQorLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8NCitNRVRIT0RERUYoYm9vbGVhbikgZW5jb2RlX21jdV9EQ19maXJzdCBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICAgIEpCTE9DS1JPVyAqTUNVX2RhdGEpKTsNCitNRVRIT0RERUYoYm9vbGVhbikgZW5jb2RlX21jdV9BQ19maXJzdCBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICAgIEpCTE9DS1JPVyAqTUNVX2RhdGEpKTsNCitNRVRIT0RERUYoYm9vbGVhbikgZW5jb2RlX21jdV9EQ19yZWZpbmUgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgICAgSkJMT0NLUk9XICpNQ1VfZGF0YSkpOw0KK01FVEhPRERFRihib29sZWFuKSBlbmNvZGVfbWN1X0FDX3JlZmluZSBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICAgICBKQkxPQ0tST1cgKk1DVV9kYXRhKSk7DQorTUVUSE9EREVGKHZvaWQpIGZpbmlzaF9wYXNzX3BodWZmIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitNRVRIT0RERUYodm9pZCkgZmluaXNoX3Bhc3NfZ2F0aGVyX3BodWZmIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgZm9yIGEgSHVmZm1hbi1jb21wcmVzc2VkIHNjYW4gdXNpbmcgcHJvZ3Jlc3NpdmUgSlBFRy4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitzdGFydF9wYXNzX3BodWZmIChqX2NvbXByZXNzX3B0ciBjaW5mbywgYm9vbGVhbiBnYXRoZXJfc3RhdGlzdGljcykNCit7ICANCisgIHBodWZmX2VudHJvcHlfcHRyIGVudHJvcHkgPSAocGh1ZmZfZW50cm9weV9wdHIpIGNpbmZvLT5lbnRyb3B5Ow0KKyAgYm9vbGVhbiBpc19EQ19iYW5kOw0KKyAgaW50IGNpLCB0Ymw7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisNCisgIGVudHJvcHktPmNpbmZvID0gY2luZm87DQorICBlbnRyb3B5LT5nYXRoZXJfc3RhdGlzdGljcyA9IGdhdGhlcl9zdGF0aXN0aWNzOw0KKw0KKyAgaXNfRENfYmFuZCA9IChjaW5mby0+U3MgPT0gMCk7DQorDQorICAvKiBXZSBhc3N1bWUgamNtYXN0ZXIuYyBhbHJlYWR5IHZhbGlkYXRlZCB0aGUgc2NhbiBwYXJhbWV0ZXJzLiAqLw0KKw0KKyAgLyogU2VsZWN0IGV4ZWN1dGlvbiByb3V0aW5lcyAqLw0KKyAgaWYgKGNpbmZvLT5BaCA9PSAwKSB7DQorICAgIGlmIChpc19EQ19iYW5kKQ0KKyAgICAgIGVudHJvcHktPnB1Yi5lbmNvZGVfbWN1ID0gZW5jb2RlX21jdV9EQ19maXJzdDsNCisgICAgZWxzZQ0KKyAgICAgIGVudHJvcHktPnB1Yi5lbmNvZGVfbWN1ID0gZW5jb2RlX21jdV9BQ19maXJzdDsNCisgIH0gZWxzZSB7DQorICAgIGlmIChpc19EQ19iYW5kKQ0KKyAgICAgIGVudHJvcHktPnB1Yi5lbmNvZGVfbWN1ID0gZW5jb2RlX21jdV9EQ19yZWZpbmU7DQorICAgIGVsc2Ugew0KKyAgICAgIGVudHJvcHktPnB1Yi5lbmNvZGVfbWN1ID0gZW5jb2RlX21jdV9BQ19yZWZpbmU7DQorICAgICAgLyogQUMgcmVmaW5lbWVudCBuZWVkcyBhIGNvcnJlY3Rpb24gYml0IGJ1ZmZlciAqLw0KKyAgICAgIGlmIChlbnRyb3B5LT5iaXRfYnVmZmVyID09IE5VTEwpDQorCWVudHJvcHktPmJpdF9idWZmZXIgPSAoY2hhciAqKQ0KKwkgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCSAgICAgIE1BWF9DT1JSX0JJVFMgKiBTSVpFT0YoY2hhcikpOw0KKyAgICB9DQorICB9DQorICBpZiAoZ2F0aGVyX3N0YXRpc3RpY3MpDQorICAgIGVudHJvcHktPnB1Yi5maW5pc2hfcGFzcyA9IGZpbmlzaF9wYXNzX2dhdGhlcl9waHVmZjsNCisgIGVsc2UNCisgICAgZW50cm9weS0+cHViLmZpbmlzaF9wYXNzID0gZmluaXNoX3Bhc3NfcGh1ZmY7DQorDQorICAvKiBPbmx5IERDIGNvZWZmaWNpZW50cyBtYXkgYmUgaW50ZXJsZWF2ZWQsIHNvIGNpbmZvLT5jb21wc19pbl9zY2FuID0gMQ0KKyAgICogZm9yIEFDIGNvZWZmaWNpZW50cy4NCisgICAqLw0KKyAgZm9yIChjaSA9IDA7IGNpIDwgY2luZm8tPmNvbXBzX2luX3NjYW47IGNpKyspIHsNCisgICAgY29tcHB0ciA9IGNpbmZvLT5jdXJfY29tcF9pbmZvW2NpXTsNCisgICAgLyogSW5pdGlhbGl6ZSBEQyBwcmVkaWN0aW9ucyB0byAwICovDQorICAgIGVudHJvcHktPmxhc3RfZGNfdmFsW2NpXSA9IDA7DQorICAgIC8qIEdldCB0YWJsZSBpbmRleCAqLw0KKyAgICBpZiAoaXNfRENfYmFuZCkgew0KKyAgICAgIGlmIChjaW5mby0+QWggIT0gMCkJLyogREMgcmVmaW5lbWVudCBuZWVkcyBubyB0YWJsZSAqLw0KKwljb250aW51ZTsNCisgICAgICB0YmwgPSBjb21wcHRyLT5kY190Ymxfbm87DQorICAgIH0gZWxzZSB7DQorICAgICAgZW50cm9weS0+YWNfdGJsX25vID0gdGJsID0gY29tcHB0ci0+YWNfdGJsX25vOw0KKyAgICB9DQorICAgIGlmIChnYXRoZXJfc3RhdGlzdGljcykgew0KKyAgICAgIC8qIENoZWNrIGZvciBpbnZhbGlkIHRhYmxlIGluZGV4ICovDQorICAgICAgLyogKG1ha2VfY19kZXJpdmVkX3RibCBkb2VzIHRoaXMgaW4gdGhlIG90aGVyIHBhdGgpICovDQorICAgICAgaWYgKHRibCA8IDAgfHwgdGJsID49IE5VTV9IVUZGX1RCTFMpDQorICAgICAgICBFUlJFWElUMShjaW5mbywgSkVSUl9OT19IVUZGX1RBQkxFLCB0YmwpOw0KKyAgICAgIC8qIEFsbG9jYXRlIGFuZCB6ZXJvIHRoZSBzdGF0aXN0aWNzIHRhYmxlcyAqLw0KKyAgICAgIC8qIE5vdGUgdGhhdCBqcGVnX2dlbl9vcHRpbWFsX3RhYmxlIGV4cGVjdHMgMjU3IGVudHJpZXMgaW4gZWFjaCB0YWJsZSEgKi8NCisgICAgICBpZiAoZW50cm9weS0+Y291bnRfcHRyc1t0YmxdID09IE5VTEwpDQorCWVudHJvcHktPmNvdW50X3B0cnNbdGJsXSA9IChsb25nICopDQorCSAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJICAgICAgMjU3ICogU0laRU9GKGxvbmcpKTsNCisgICAgICBNRU1aRVJPKGVudHJvcHktPmNvdW50X3B0cnNbdGJsXSwgMjU3ICogU0laRU9GKGxvbmcpKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAvKiBDb21wdXRlIGRlcml2ZWQgdmFsdWVzIGZvciBIdWZmbWFuIHRhYmxlICovDQorICAgICAgLyogV2UgbWF5IGRvIHRoaXMgbW9yZSB0aGFuIG9uY2UgZm9yIGEgdGFibGUsIGJ1dCBpdCdzIG5vdCBleHBlbnNpdmUgKi8NCisgICAgICBqcGVnX21ha2VfY19kZXJpdmVkX3RibChjaW5mbywgaXNfRENfYmFuZCwgdGJsLA0KKwkJCSAgICAgICYgZW50cm9weS0+ZGVyaXZlZF90YmxzW3RibF0pOw0KKyAgICB9DQorICB9DQorDQorICAvKiBJbml0aWFsaXplIEFDIHN0dWZmICovDQorICBlbnRyb3B5LT5FT0JSVU4gPSAwOw0KKyAgZW50cm9weS0+QkUgPSAwOw0KKw0KKyAgLyogSW5pdGlhbGl6ZSBiaXQgYnVmZmVyIHRvIGVtcHR5ICovDQorICBlbnRyb3B5LT5wdXRfYnVmZmVyID0gMDsNCisgIGVudHJvcHktPnB1dF9iaXRzID0gMDsNCisNCisgIC8qIEluaXRpYWxpemUgcmVzdGFydCBzdHVmZiAqLw0KKyAgZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPSBjaW5mby0+cmVzdGFydF9pbnRlcnZhbDsNCisgIGVudHJvcHktPm5leHRfcmVzdGFydF9udW0gPSAwOw0KK30NCisNCisNCisvKiBPdXRwdXR0aW5nIGJ5dGVzIHRvIHRoZSBmaWxlLg0KKyAqIE5COiB0aGVzZSBtdXN0IGJlIGNhbGxlZCBvbmx5IHdoZW4gYWN0dWFsbHkgb3V0cHV0dGluZywNCisgKiB0aGF0IGlzLCBlbnRyb3B5LT5nYXRoZXJfc3RhdGlzdGljcyA9PSBGQUxTRS4NCisgKi8NCisNCisvKiBFbWl0IGEgYnl0ZSAqLw0KKyNkZWZpbmUgZW1pdF9ieXRlKGVudHJvcHksdmFsKSAgXA0KKwl7ICooZW50cm9weSktPm5leHRfb3V0cHV0X2J5dGUrKyA9IChKT0NURVQpICh2YWwpOyAgXA0KKwkgIGlmICgtLShlbnRyb3B5KS0+ZnJlZV9pbl9idWZmZXIgPT0gMCkgIFwNCisJICAgIGR1bXBfYnVmZmVyKGVudHJvcHkpOyB9DQorDQorDQorTE9DQUwodm9pZCkNCitkdW1wX2J1ZmZlciAocGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSkNCisvKiBFbXB0eSB0aGUgb3V0cHV0IGJ1ZmZlcjsgd2UgZG8gbm90IHN1cHBvcnQgc3VzcGVuc2lvbiBpbiB0aGlzIG1vZHVsZS4gKi8NCit7DQorICBzdHJ1Y3QganBlZ19kZXN0aW5hdGlvbl9tZ3IgKiBkZXN0ID0gZW50cm9weS0+Y2luZm8tPmRlc3Q7DQorDQorICBpZiAoISAoKmRlc3QtPmVtcHR5X291dHB1dF9idWZmZXIpIChlbnRyb3B5LT5jaW5mbykpDQorICAgIEVSUkVYSVQoZW50cm9weS0+Y2luZm8sIEpFUlJfQ0FOVF9TVVNQRU5EKTsNCisgIC8qIEFmdGVyIGEgc3VjY2Vzc2Z1bCBidWZmZXIgZHVtcCwgbXVzdCByZXNldCBidWZmZXIgcG9pbnRlcnMgKi8NCisgIGVudHJvcHktPm5leHRfb3V0cHV0X2J5dGUgPSBkZXN0LT5uZXh0X291dHB1dF9ieXRlOw0KKyAgZW50cm9weS0+ZnJlZV9pbl9idWZmZXIgPSBkZXN0LT5mcmVlX2luX2J1ZmZlcjsNCit9DQorDQorDQorLyogT3V0cHV0dGluZyBiaXRzIHRvIHRoZSBmaWxlICovDQorDQorLyogT25seSB0aGUgcmlnaHQgMjQgYml0cyBvZiBwdXRfYnVmZmVyIGFyZSB1c2VkOyB0aGUgdmFsaWQgYml0cyBhcmUNCisgKiBsZWZ0LWp1c3RpZmllZCBpbiB0aGlzIHBhcnQuICBBdCBtb3N0IDE2IGJpdHMgY2FuIGJlIHBhc3NlZCB0byBlbWl0X2JpdHMNCisgKiBpbiBvbmUgY2FsbCwgYW5kIHdlIG5ldmVyIHJldGFpbiBtb3JlIHRoYW4gNyBiaXRzIGluIHB1dF9idWZmZXINCisgKiBiZXR3ZWVuIGNhbGxzLCBzbyAyNCBiaXRzIGFyZSBzdWZmaWNpZW50Lg0KKyAqLw0KKw0KK0lOTElORQ0KK0xPQ0FMKHZvaWQpDQorZW1pdF9iaXRzIChwaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5LCB1bnNpZ25lZCBpbnQgY29kZSwgaW50IHNpemUpDQorLyogRW1pdCBzb21lIGJpdHMsIHVubGVzcyB3ZSBhcmUgaW4gZ2F0aGVyIG1vZGUgKi8NCit7DQorICAvKiBUaGlzIHJvdXRpbmUgaXMgaGVhdmlseSB1c2VkLCBzbyBpdCdzIHdvcnRoIGNvZGluZyB0aWdodGx5LiAqLw0KKyAgcmVnaXN0ZXIgSU5UMzIgcHV0X2J1ZmZlciA9IChJTlQzMikgY29kZTsNCisgIHJlZ2lzdGVyIGludCBwdXRfYml0cyA9IGVudHJvcHktPnB1dF9iaXRzOw0KKw0KKyAgLyogaWYgc2l6ZSBpcyAwLCBjYWxsZXIgdXNlZCBhbiBpbnZhbGlkIEh1ZmZtYW4gdGFibGUgZW50cnkgKi8NCisgIGlmIChzaXplID09IDApDQorICAgIEVSUkVYSVQoZW50cm9weS0+Y2luZm8sIEpFUlJfSFVGRl9NSVNTSU5HX0NPREUpOw0KKw0KKyAgaWYgKGVudHJvcHktPmdhdGhlcl9zdGF0aXN0aWNzKQ0KKyAgICByZXR1cm47CQkJLyogZG8gbm90aGluZyBpZiB3ZSdyZSBvbmx5IGdldHRpbmcgc3RhdHMgKi8NCisNCisgIHB1dF9idWZmZXIgJj0gKCgoSU5UMzIpIDEpPDxzaXplKSAtIDE7IC8qIG1hc2sgb2ZmIGFueSBleHRyYSBiaXRzIGluIGNvZGUgKi8NCisgIA0KKyAgcHV0X2JpdHMgKz0gc2l6ZTsJCS8qIG5ldyBudW1iZXIgb2YgYml0cyBpbiBidWZmZXIgKi8NCisgIA0KKyAgcHV0X2J1ZmZlciA8PD0gMjQgLSBwdXRfYml0czsgLyogYWxpZ24gaW5jb21pbmcgYml0cyAqLw0KKw0KKyAgcHV0X2J1ZmZlciB8PSBlbnRyb3B5LT5wdXRfYnVmZmVyOyAvKiBhbmQgbWVyZ2Ugd2l0aCBvbGQgYnVmZmVyIGNvbnRlbnRzICovDQorDQorICB3aGlsZSAocHV0X2JpdHMgPj0gOCkgew0KKyAgICBpbnQgYyA9IChpbnQpICgocHV0X2J1ZmZlciA+PiAxNikgJiAweEZGKTsNCisgICAgDQorICAgIGVtaXRfYnl0ZShlbnRyb3B5LCBjKTsNCisgICAgaWYgKGMgPT0gMHhGRikgewkJLyogbmVlZCB0byBzdHVmZiBhIHplcm8gYnl0ZT8gKi8NCisgICAgICBlbWl0X2J5dGUoZW50cm9weSwgMCk7DQorICAgIH0NCisgICAgcHV0X2J1ZmZlciA8PD0gODsNCisgICAgcHV0X2JpdHMgLT0gODsNCisgIH0NCisNCisgIGVudHJvcHktPnB1dF9idWZmZXIgPSBwdXRfYnVmZmVyOyAvKiB1cGRhdGUgdmFyaWFibGVzICovDQorICBlbnRyb3B5LT5wdXRfYml0cyA9IHB1dF9iaXRzOw0KK30NCisNCisNCitMT0NBTCh2b2lkKQ0KK2ZsdXNoX2JpdHMgKHBodWZmX2VudHJvcHlfcHRyIGVudHJvcHkpDQorew0KKyAgZW1pdF9iaXRzKGVudHJvcHksIDB4N0YsIDcpOyAvKiBmaWxsIGFueSBwYXJ0aWFsIGJ5dGUgd2l0aCBvbmVzICovDQorICBlbnRyb3B5LT5wdXRfYnVmZmVyID0gMDsgICAgIC8qIGFuZCByZXNldCBiaXQtYnVmZmVyIHRvIGVtcHR5ICovDQorICBlbnRyb3B5LT5wdXRfYml0cyA9IDA7DQorfQ0KKw0KKw0KKy8qDQorICogRW1pdCAob3IganVzdCBjb3VudCkgYSBIdWZmbWFuIHN5bWJvbC4NCisgKi8NCisNCitJTkxJTkUNCitMT0NBTCh2b2lkKQ0KK2VtaXRfc3ltYm9sIChwaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5LCBpbnQgdGJsX25vLCBpbnQgc3ltYm9sKQ0KK3sNCisgIGlmIChlbnRyb3B5LT5nYXRoZXJfc3RhdGlzdGljcykNCisgICAgZW50cm9weS0+Y291bnRfcHRyc1t0Ymxfbm9dW3N5bWJvbF0rKzsNCisgIGVsc2Ugew0KKyAgICBjX2Rlcml2ZWRfdGJsICogdGJsID0gZW50cm9weS0+ZGVyaXZlZF90YmxzW3RibF9ub107DQorICAgIGVtaXRfYml0cyhlbnRyb3B5LCB0YmwtPmVodWZjb1tzeW1ib2xdLCB0YmwtPmVodWZzaVtzeW1ib2xdKTsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBFbWl0IGJpdHMgZnJvbSBhIGNvcnJlY3Rpb24gYml0IGJ1ZmZlci4NCisgKi8NCisNCitMT0NBTCh2b2lkKQ0KK2VtaXRfYnVmZmVyZWRfYml0cyAocGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSwgY2hhciAqIGJ1ZnN0YXJ0LA0KKwkJICAgIHVuc2lnbmVkIGludCBuYml0cykNCit7DQorICBpZiAoZW50cm9weS0+Z2F0aGVyX3N0YXRpc3RpY3MpDQorICAgIHJldHVybjsJCQkvKiBubyByZWFsIHdvcmsgKi8NCisNCisgIHdoaWxlIChuYml0cyA+IDApIHsNCisgICAgZW1pdF9iaXRzKGVudHJvcHksICh1bnNpZ25lZCBpbnQpICgqYnVmc3RhcnQpLCAxKTsNCisgICAgYnVmc3RhcnQrKzsNCisgICAgbmJpdHMtLTsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBFbWl0IGFueSBwZW5kaW5nIEVPQlJVTiBzeW1ib2wuDQorICovDQorDQorTE9DQUwodm9pZCkNCitlbWl0X2VvYnJ1biAocGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSkNCit7DQorICByZWdpc3RlciBpbnQgdGVtcCwgbmJpdHM7DQorDQorICBpZiAoZW50cm9weS0+RU9CUlVOID4gMCkgewkvKiBpZiB0aGVyZSBpcyBhbnkgcGVuZGluZyBFT0JSVU4gKi8NCisgICAgdGVtcCA9IGVudHJvcHktPkVPQlJVTjsNCisgICAgbmJpdHMgPSAwOw0KKyAgICB3aGlsZSAoKHRlbXAgPj49IDEpKQ0KKyAgICAgIG5iaXRzKys7DQorICAgIC8qIHNhZmV0eSBjaGVjazogc2hvdWxkbid0IGhhcHBlbiBnaXZlbiBsaW1pdGVkIGNvcnJlY3Rpb24tYml0IGJ1ZmZlciAqLw0KKyAgICBpZiAobmJpdHMgPiAxNCkNCisgICAgICBFUlJFWElUKGVudHJvcHktPmNpbmZvLCBKRVJSX0hVRkZfTUlTU0lOR19DT0RFKTsNCisNCisgICAgZW1pdF9zeW1ib2woZW50cm9weSwgZW50cm9weS0+YWNfdGJsX25vLCBuYml0cyA8PCA0KTsNCisgICAgaWYgKG5iaXRzKQ0KKyAgICAgIGVtaXRfYml0cyhlbnRyb3B5LCBlbnRyb3B5LT5FT0JSVU4sIG5iaXRzKTsNCisNCisgICAgZW50cm9weS0+RU9CUlVOID0gMDsNCisNCisgICAgLyogRW1pdCBhbnkgYnVmZmVyZWQgY29ycmVjdGlvbiBiaXRzICovDQorICAgIGVtaXRfYnVmZmVyZWRfYml0cyhlbnRyb3B5LCBlbnRyb3B5LT5iaXRfYnVmZmVyLCBlbnRyb3B5LT5CRSk7DQorICAgIGVudHJvcHktPkJFID0gMDsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBFbWl0IGEgcmVzdGFydCBtYXJrZXIgJiByZXN5bmNocm9uaXplIHByZWRpY3Rpb25zLg0KKyAqLw0KKw0KK0xPQ0FMKHZvaWQpDQorZW1pdF9yZXN0YXJ0IChwaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5LCBpbnQgcmVzdGFydF9udW0pDQorew0KKyAgaW50IGNpOw0KKw0KKyAgZW1pdF9lb2JydW4oZW50cm9weSk7DQorDQorICBpZiAoISBlbnRyb3B5LT5nYXRoZXJfc3RhdGlzdGljcykgew0KKyAgICBmbHVzaF9iaXRzKGVudHJvcHkpOw0KKyAgICBlbWl0X2J5dGUoZW50cm9weSwgMHhGRik7DQorICAgIGVtaXRfYnl0ZShlbnRyb3B5LCBKUEVHX1JTVDAgKyByZXN0YXJ0X251bSk7DQorICB9DQorDQorICBpZiAoZW50cm9weS0+Y2luZm8tPlNzID09IDApIHsNCisgICAgLyogUmUtaW5pdGlhbGl6ZSBEQyBwcmVkaWN0aW9ucyB0byAwICovDQorICAgIGZvciAoY2kgPSAwOyBjaSA8IGVudHJvcHktPmNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKQ0KKyAgICAgIGVudHJvcHktPmxhc3RfZGNfdmFsW2NpXSA9IDA7DQorICB9IGVsc2Ugew0KKyAgICAvKiBSZS1pbml0aWFsaXplIGFsbCBBQy1yZWxhdGVkIGZpZWxkcyB0byAwICovDQorICAgIGVudHJvcHktPkVPQlJVTiA9IDA7DQorICAgIGVudHJvcHktPkJFID0gMDsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBNQ1UgZW5jb2RpbmcgZm9yIERDIGluaXRpYWwgc2NhbiAoZWl0aGVyIHNwZWN0cmFsIHNlbGVjdGlvbiwNCisgKiBvciBmaXJzdCBwYXNzIG9mIHN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbikuDQorICovDQorDQorTUVUSE9EREVGKGJvb2xlYW4pDQorZW5jb2RlX21jdV9EQ19maXJzdCAoal9jb21wcmVzc19wdHIgY2luZm8sIEpCTE9DS1JPVyAqTUNVX2RhdGEpDQorew0KKyAgcGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSA9IChwaHVmZl9lbnRyb3B5X3B0cikgY2luZm8tPmVudHJvcHk7DQorICByZWdpc3RlciBpbnQgdGVtcCwgdGVtcDI7DQorICByZWdpc3RlciBpbnQgbmJpdHM7DQorICBpbnQgYmxrbiwgY2k7DQorICBpbnQgQWwgPSBjaW5mby0+QWw7DQorICBKQkxPQ0tST1cgYmxvY2s7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisgIElTSElGVF9URU1QUw0KKw0KKyAgZW50cm9weS0+bmV4dF9vdXRwdXRfYnl0ZSA9IGNpbmZvLT5kZXN0LT5uZXh0X291dHB1dF9ieXRlOw0KKyAgZW50cm9weS0+ZnJlZV9pbl9idWZmZXIgPSBjaW5mby0+ZGVzdC0+ZnJlZV9pbl9idWZmZXI7DQorDQorICAvKiBFbWl0IHJlc3RhcnQgbWFya2VyIGlmIG5lZWRlZCAqLw0KKyAgaWYgKGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsKQ0KKyAgICBpZiAoZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPT0gMCkNCisgICAgICBlbWl0X3Jlc3RhcnQoZW50cm9weSwgZW50cm9weS0+bmV4dF9yZXN0YXJ0X251bSk7DQorDQorICAvKiBFbmNvZGUgdGhlIE1DVSBkYXRhIGJsb2NrcyAqLw0KKyAgZm9yIChibGtuID0gMDsgYmxrbiA8IGNpbmZvLT5ibG9ja3NfaW5fTUNVOyBibGtuKyspIHsNCisgICAgYmxvY2sgPSBNQ1VfZGF0YVtibGtuXTsNCisgICAgY2kgPSBjaW5mby0+TUNVX21lbWJlcnNoaXBbYmxrbl07DQorICAgIGNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorDQorICAgIC8qIENvbXB1dGUgdGhlIERDIHZhbHVlIGFmdGVyIHRoZSByZXF1aXJlZCBwb2ludCB0cmFuc2Zvcm0gYnkgQWwuDQorICAgICAqIFRoaXMgaXMgc2ltcGx5IGFuIGFyaXRobWV0aWMgcmlnaHQgc2hpZnQuDQorICAgICAqLw0KKyAgICB0ZW1wMiA9IElSSUdIVF9TSElGVCgoaW50KSAoKCpibG9jaylbMF0pLCBBbCk7DQorDQorICAgIC8qIERDIGRpZmZlcmVuY2VzIGFyZSBmaWd1cmVkIG9uIHRoZSBwb2ludC10cmFuc2Zvcm1lZCB2YWx1ZXMuICovDQorICAgIHRlbXAgPSB0ZW1wMiAtIGVudHJvcHktPmxhc3RfZGNfdmFsW2NpXTsNCisgICAgZW50cm9weS0+bGFzdF9kY192YWxbY2ldID0gdGVtcDI7DQorDQorICAgIC8qIEVuY29kZSB0aGUgREMgY29lZmZpY2llbnQgZGlmZmVyZW5jZSBwZXIgc2VjdGlvbiBHLjEuMi4xICovDQorICAgIHRlbXAyID0gdGVtcDsNCisgICAgaWYgKHRlbXAgPCAwKSB7DQorICAgICAgdGVtcCA9IC10ZW1wOwkJLyogdGVtcCBpcyBhYnMgdmFsdWUgb2YgaW5wdXQgKi8NCisgICAgICAvKiBGb3IgYSBuZWdhdGl2ZSBpbnB1dCwgd2FudCB0ZW1wMiA9IGJpdHdpc2UgY29tcGxlbWVudCBvZiBhYnMoaW5wdXQpICovDQorICAgICAgLyogVGhpcyBjb2RlIGFzc3VtZXMgd2UgYXJlIG9uIGEgdHdvJ3MgY29tcGxlbWVudCBtYWNoaW5lICovDQorICAgICAgdGVtcDItLTsNCisgICAgfQ0KKyAgICANCisgICAgLyogRmluZCB0aGUgbnVtYmVyIG9mIGJpdHMgbmVlZGVkIGZvciB0aGUgbWFnbml0dWRlIG9mIHRoZSBjb2VmZmljaWVudCAqLw0KKyAgICBuYml0cyA9IDA7DQorICAgIHdoaWxlICh0ZW1wKSB7DQorICAgICAgbmJpdHMrKzsNCisgICAgICB0ZW1wID4+PSAxOw0KKyAgICB9DQorICAgIC8qIENoZWNrIGZvciBvdXQtb2YtcmFuZ2UgY29lZmZpY2llbnQgdmFsdWVzLg0KKyAgICAgKiBTaW5jZSB3ZSdyZSBlbmNvZGluZyBhIGRpZmZlcmVuY2UsIHRoZSByYW5nZSBsaW1pdCBpcyB0d2ljZSBhcyBtdWNoLg0KKyAgICAgKi8NCisgICAgaWYgKG5iaXRzID4gTUFYX0NPRUZfQklUUysxKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0RDVF9DT0VGKTsNCisgICAgDQorICAgIC8qIENvdW50L2VtaXQgdGhlIEh1ZmZtYW4tY29kZWQgc3ltYm9sIGZvciB0aGUgbnVtYmVyIG9mIGJpdHMgKi8NCisgICAgZW1pdF9zeW1ib2woZW50cm9weSwgY29tcHB0ci0+ZGNfdGJsX25vLCBuYml0cyk7DQorICAgIA0KKyAgICAvKiBFbWl0IHRoYXQgbnVtYmVyIG9mIGJpdHMgb2YgdGhlIHZhbHVlLCBpZiBwb3NpdGl2ZSwgKi8NCisgICAgLyogb3IgdGhlIGNvbXBsZW1lbnQgb2YgaXRzIG1hZ25pdHVkZSwgaWYgbmVnYXRpdmUuICovDQorICAgIGlmIChuYml0cykJCQkvKiBlbWl0X2JpdHMgcmVqZWN0cyBjYWxscyB3aXRoIHNpemUgMCAqLw0KKyAgICAgIGVtaXRfYml0cyhlbnRyb3B5LCAodW5zaWduZWQgaW50KSB0ZW1wMiwgbmJpdHMpOw0KKyAgfQ0KKw0KKyAgY2luZm8tPmRlc3QtPm5leHRfb3V0cHV0X2J5dGUgPSBlbnRyb3B5LT5uZXh0X291dHB1dF9ieXRlOw0KKyAgY2luZm8tPmRlc3QtPmZyZWVfaW5fYnVmZmVyID0gZW50cm9weS0+ZnJlZV9pbl9idWZmZXI7DQorDQorICAvKiBVcGRhdGUgcmVzdGFydC1pbnRlcnZhbCBzdGF0ZSB0b28gKi8NCisgIGlmIChjaW5mby0+cmVzdGFydF9pbnRlcnZhbCkgew0KKyAgICBpZiAoZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPT0gMCkgew0KKyAgICAgIGVudHJvcHktPnJlc3RhcnRzX3RvX2dvID0gY2luZm8tPnJlc3RhcnRfaW50ZXJ2YWw7DQorICAgICAgZW50cm9weS0+bmV4dF9yZXN0YXJ0X251bSsrOw0KKyAgICAgIGVudHJvcHktPm5leHRfcmVzdGFydF9udW0gJj0gNzsNCisgICAgfQ0KKyAgICBlbnRyb3B5LT5yZXN0YXJ0c190b19nby0tOw0KKyAgfQ0KKw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKw0KKy8qDQorICogTUNVIGVuY29kaW5nIGZvciBBQyBpbml0aWFsIHNjYW4gKGVpdGhlciBzcGVjdHJhbCBzZWxlY3Rpb24sDQorICogb3IgZmlyc3QgcGFzcyBvZiBzdWNjZXNzaXZlIGFwcHJveGltYXRpb24pLg0KKyAqLw0KKw0KK01FVEhPRERFRihib29sZWFuKQ0KK2VuY29kZV9tY3VfQUNfZmlyc3QgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKQkxPQ0tST1cgKk1DVV9kYXRhKQ0KK3sNCisgIHBodWZmX2VudHJvcHlfcHRyIGVudHJvcHkgPSAocGh1ZmZfZW50cm9weV9wdHIpIGNpbmZvLT5lbnRyb3B5Ow0KKyAgcmVnaXN0ZXIgaW50IHRlbXAsIHRlbXAyOw0KKyAgcmVnaXN0ZXIgaW50IG5iaXRzOw0KKyAgcmVnaXN0ZXIgaW50IHIsIGs7DQorICBpbnQgU2UgPSBjaW5mby0+U2U7DQorICBpbnQgQWwgPSBjaW5mby0+QWw7DQorICBKQkxPQ0tST1cgYmxvY2s7DQorDQorICBlbnRyb3B5LT5uZXh0X291dHB1dF9ieXRlID0gY2luZm8tPmRlc3QtPm5leHRfb3V0cHV0X2J5dGU7DQorICBlbnRyb3B5LT5mcmVlX2luX2J1ZmZlciA9IGNpbmZvLT5kZXN0LT5mcmVlX2luX2J1ZmZlcjsNCisNCisgIC8qIEVtaXQgcmVzdGFydCBtYXJrZXIgaWYgbmVlZGVkICovDQorICBpZiAoY2luZm8tPnJlc3RhcnRfaW50ZXJ2YWwpDQorICAgIGlmIChlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9PSAwKQ0KKyAgICAgIGVtaXRfcmVzdGFydChlbnRyb3B5LCBlbnRyb3B5LT5uZXh0X3Jlc3RhcnRfbnVtKTsNCisNCisgIC8qIEVuY29kZSB0aGUgTUNVIGRhdGEgYmxvY2sgKi8NCisgIGJsb2NrID0gTUNVX2RhdGFbMF07DQorDQorICAvKiBFbmNvZGUgdGhlIEFDIGNvZWZmaWNpZW50cyBwZXIgc2VjdGlvbiBHLjEuMi4yLCBmaWcuIEcuMyAqLw0KKyAgDQorICByID0gMDsJCQkvKiByID0gcnVuIGxlbmd0aCBvZiB6ZXJvcyAqLw0KKyAgIA0KKyAgZm9yIChrID0gY2luZm8tPlNzOyBrIDw9IFNlOyBrKyspIHsNCisgICAgaWYgKCh0ZW1wID0gKCpibG9jaylbanBlZ19uYXR1cmFsX29yZGVyW2tdXSkgPT0gMCkgew0KKyAgICAgIHIrKzsNCisgICAgICBjb250aW51ZTsNCisgICAgfQ0KKyAgICAvKiBXZSBtdXN0IGFwcGx5IHRoZSBwb2ludCB0cmFuc2Zvcm0gYnkgQWwuICBGb3IgQUMgY29lZmZpY2llbnRzIHRoaXMNCisgICAgICogaXMgYW4gaW50ZWdlciBkaXZpc2lvbiB3aXRoIHJvdW5kaW5nIHRvd2FyZHMgMC4gIFRvIGRvIHRoaXMgcG9ydGFibHkNCisgICAgICogaW4gQywgd2Ugc2hpZnQgYWZ0ZXIgb2J0YWluaW5nIHRoZSBhYnNvbHV0ZSB2YWx1ZTsgc28gdGhlIGNvZGUgaXMNCisgICAgICogaW50ZXJ3b3ZlbiB3aXRoIGZpbmRpbmcgdGhlIGFicyB2YWx1ZSAodGVtcCkgYW5kIG91dHB1dCBiaXRzICh0ZW1wMikuDQorICAgICAqLw0KKyAgICBpZiAodGVtcCA8IDApIHsNCisgICAgICB0ZW1wID0gLXRlbXA7CQkvKiB0ZW1wIGlzIGFicyB2YWx1ZSBvZiBpbnB1dCAqLw0KKyAgICAgIHRlbXAgPj49IEFsOwkJLyogYXBwbHkgdGhlIHBvaW50IHRyYW5zZm9ybSAqLw0KKyAgICAgIC8qIEZvciBhIG5lZ2F0aXZlIGNvZWYsIHdhbnQgdGVtcDIgPSBiaXR3aXNlIGNvbXBsZW1lbnQgb2YgYWJzKGNvZWYpICovDQorICAgICAgdGVtcDIgPSB+dGVtcDsNCisgICAgfSBlbHNlIHsNCisgICAgICB0ZW1wID4+PSBBbDsJCS8qIGFwcGx5IHRoZSBwb2ludCB0cmFuc2Zvcm0gKi8NCisgICAgICB0ZW1wMiA9IHRlbXA7DQorICAgIH0NCisgICAgLyogV2F0Y2ggb3V0IGZvciBjYXNlIHRoYXQgbm9uemVybyBjb2VmIGlzIHplcm8gYWZ0ZXIgcG9pbnQgdHJhbnNmb3JtICovDQorICAgIGlmICh0ZW1wID09IDApIHsNCisgICAgICByKys7DQorICAgICAgY29udGludWU7DQorICAgIH0NCisNCisgICAgLyogRW1pdCBhbnkgcGVuZGluZyBFT0JSVU4gKi8NCisgICAgaWYgKGVudHJvcHktPkVPQlJVTiA+IDApDQorICAgICAgZW1pdF9lb2JydW4oZW50cm9weSk7DQorICAgIC8qIGlmIHJ1biBsZW5ndGggPiAxNSwgbXVzdCBlbWl0IHNwZWNpYWwgcnVuLWxlbmd0aC0xNiBjb2RlcyAoMHhGMCkgKi8NCisgICAgd2hpbGUgKHIgPiAxNSkgew0KKyAgICAgIGVtaXRfc3ltYm9sKGVudHJvcHksIGVudHJvcHktPmFjX3RibF9ubywgMHhGMCk7DQorICAgICAgciAtPSAxNjsNCisgICAgfQ0KKw0KKyAgICAvKiBGaW5kIHRoZSBudW1iZXIgb2YgYml0cyBuZWVkZWQgZm9yIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGNvZWZmaWNpZW50ICovDQorICAgIG5iaXRzID0gMTsJCQkvKiB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSAxIGJpdCAqLw0KKyAgICB3aGlsZSAoKHRlbXAgPj49IDEpKQ0KKyAgICAgIG5iaXRzKys7DQorICAgIC8qIENoZWNrIGZvciBvdXQtb2YtcmFuZ2UgY29lZmZpY2llbnQgdmFsdWVzICovDQorICAgIGlmIChuYml0cyA+IE1BWF9DT0VGX0JJVFMpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfRENUX0NPRUYpOw0KKw0KKyAgICAvKiBDb3VudC9lbWl0IEh1ZmZtYW4gc3ltYm9sIGZvciBydW4gbGVuZ3RoIC8gbnVtYmVyIG9mIGJpdHMgKi8NCisgICAgZW1pdF9zeW1ib2woZW50cm9weSwgZW50cm9weS0+YWNfdGJsX25vLCAociA8PCA0KSArIG5iaXRzKTsNCisNCisgICAgLyogRW1pdCB0aGF0IG51bWJlciBvZiBiaXRzIG9mIHRoZSB2YWx1ZSwgaWYgcG9zaXRpdmUsICovDQorICAgIC8qIG9yIHRoZSBjb21wbGVtZW50IG9mIGl0cyBtYWduaXR1ZGUsIGlmIG5lZ2F0aXZlLiAqLw0KKyAgICBlbWl0X2JpdHMoZW50cm9weSwgKHVuc2lnbmVkIGludCkgdGVtcDIsIG5iaXRzKTsNCisNCisgICAgciA9IDA7CQkJLyogcmVzZXQgemVybyBydW4gbGVuZ3RoICovDQorICB9DQorDQorICBpZiAociA+IDApIHsJCQkvKiBJZiB0aGVyZSBhcmUgdHJhaWxpbmcgemVyb2VzLCAqLw0KKyAgICBlbnRyb3B5LT5FT0JSVU4rKzsJCS8qIGNvdW50IGFuIEVPQiAqLw0KKyAgICBpZiAoZW50cm9weS0+RU9CUlVOID09IDB4N0ZGRikNCisgICAgICBlbWl0X2VvYnJ1bihlbnRyb3B5KTsJLyogZm9yY2UgaXQgb3V0IHRvIGF2b2lkIG92ZXJmbG93ICovDQorICB9DQorDQorICBjaW5mby0+ZGVzdC0+bmV4dF9vdXRwdXRfYnl0ZSA9IGVudHJvcHktPm5leHRfb3V0cHV0X2J5dGU7DQorICBjaW5mby0+ZGVzdC0+ZnJlZV9pbl9idWZmZXIgPSBlbnRyb3B5LT5mcmVlX2luX2J1ZmZlcjsNCisNCisgIC8qIFVwZGF0ZSByZXN0YXJ0LWludGVydmFsIHN0YXRlIHRvbyAqLw0KKyAgaWYgKGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsKSB7DQorICAgIGlmIChlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9PSAwKSB7DQorICAgICAgZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPSBjaW5mby0+cmVzdGFydF9pbnRlcnZhbDsNCisgICAgICBlbnRyb3B5LT5uZXh0X3Jlc3RhcnRfbnVtKys7DQorICAgICAgZW50cm9weS0+bmV4dF9yZXN0YXJ0X251bSAmPSA3Ow0KKyAgICB9DQorICAgIGVudHJvcHktPnJlc3RhcnRzX3RvX2dvLS07DQorICB9DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBNQ1UgZW5jb2RpbmcgZm9yIERDIHN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbiByZWZpbmVtZW50IHNjYW4uDQorICogTm90ZTogd2UgYXNzdW1lIHN1Y2ggc2NhbnMgY2FuIGJlIG11bHRpLWNvbXBvbmVudCwgYWx0aG91Z2ggdGhlIHNwZWMNCisgKiBpcyBub3QgdmVyeSBjbGVhciBvbiB0aGUgcG9pbnQuDQorICovDQorDQorTUVUSE9EREVGKGJvb2xlYW4pDQorZW5jb2RlX21jdV9EQ19yZWZpbmUgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKQkxPQ0tST1cgKk1DVV9kYXRhKQ0KK3sNCisgIHBodWZmX2VudHJvcHlfcHRyIGVudHJvcHkgPSAocGh1ZmZfZW50cm9weV9wdHIpIGNpbmZvLT5lbnRyb3B5Ow0KKyAgcmVnaXN0ZXIgaW50IHRlbXA7DQorICBpbnQgYmxrbjsNCisgIGludCBBbCA9IGNpbmZvLT5BbDsNCisgIEpCTE9DS1JPVyBibG9jazsNCisNCisgIGVudHJvcHktPm5leHRfb3V0cHV0X2J5dGUgPSBjaW5mby0+ZGVzdC0+bmV4dF9vdXRwdXRfYnl0ZTsNCisgIGVudHJvcHktPmZyZWVfaW5fYnVmZmVyID0gY2luZm8tPmRlc3QtPmZyZWVfaW5fYnVmZmVyOw0KKw0KKyAgLyogRW1pdCByZXN0YXJ0IG1hcmtlciBpZiBuZWVkZWQgKi8NCisgIGlmIChjaW5mby0+cmVzdGFydF9pbnRlcnZhbCkNCisgICAgaWYgKGVudHJvcHktPnJlc3RhcnRzX3RvX2dvID09IDApDQorICAgICAgZW1pdF9yZXN0YXJ0KGVudHJvcHksIGVudHJvcHktPm5leHRfcmVzdGFydF9udW0pOw0KKw0KKyAgLyogRW5jb2RlIHRoZSBNQ1UgZGF0YSBibG9ja3MgKi8NCisgIGZvciAoYmxrbiA9IDA7IGJsa24gPCBjaW5mby0+YmxvY2tzX2luX01DVTsgYmxrbisrKSB7DQorICAgIGJsb2NrID0gTUNVX2RhdGFbYmxrbl07DQorDQorICAgIC8qIFdlIHNpbXBseSBlbWl0IHRoZSBBbCd0aCBiaXQgb2YgdGhlIERDIGNvZWZmaWNpZW50IHZhbHVlLiAqLw0KKyAgICB0ZW1wID0gKCpibG9jaylbMF07DQorICAgIGVtaXRfYml0cyhlbnRyb3B5LCAodW5zaWduZWQgaW50KSAodGVtcCA+PiBBbCksIDEpOw0KKyAgfQ0KKw0KKyAgY2luZm8tPmRlc3QtPm5leHRfb3V0cHV0X2J5dGUgPSBlbnRyb3B5LT5uZXh0X291dHB1dF9ieXRlOw0KKyAgY2luZm8tPmRlc3QtPmZyZWVfaW5fYnVmZmVyID0gZW50cm9weS0+ZnJlZV9pbl9idWZmZXI7DQorDQorICAvKiBVcGRhdGUgcmVzdGFydC1pbnRlcnZhbCBzdGF0ZSB0b28gKi8NCisgIGlmIChjaW5mby0+cmVzdGFydF9pbnRlcnZhbCkgew0KKyAgICBpZiAoZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPT0gMCkgew0KKyAgICAgIGVudHJvcHktPnJlc3RhcnRzX3RvX2dvID0gY2luZm8tPnJlc3RhcnRfaW50ZXJ2YWw7DQorICAgICAgZW50cm9weS0+bmV4dF9yZXN0YXJ0X251bSsrOw0KKyAgICAgIGVudHJvcHktPm5leHRfcmVzdGFydF9udW0gJj0gNzsNCisgICAgfQ0KKyAgICBlbnRyb3B5LT5yZXN0YXJ0c190b19nby0tOw0KKyAgfQ0KKw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKw0KKy8qDQorICogTUNVIGVuY29kaW5nIGZvciBBQyBzdWNjZXNzaXZlIGFwcHJveGltYXRpb24gcmVmaW5lbWVudCBzY2FuLg0KKyAqLw0KKw0KK01FVEhPRERFRihib29sZWFuKQ0KK2VuY29kZV9tY3VfQUNfcmVmaW5lIChqX2NvbXByZXNzX3B0ciBjaW5mbywgSkJMT0NLUk9XICpNQ1VfZGF0YSkNCit7DQorICBwaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5ID0gKHBodWZmX2VudHJvcHlfcHRyKSBjaW5mby0+ZW50cm9weTsNCisgIHJlZ2lzdGVyIGludCB0ZW1wOw0KKyAgcmVnaXN0ZXIgaW50IHIsIGs7DQorICBpbnQgRU9COw0KKyAgY2hhciAqQlJfYnVmZmVyOw0KKyAgdW5zaWduZWQgaW50IEJSOw0KKyAgaW50IFNlID0gY2luZm8tPlNlOw0KKyAgaW50IEFsID0gY2luZm8tPkFsOw0KKyAgSkJMT0NLUk9XIGJsb2NrOw0KKyAgaW50IGFic3ZhbHVlc1tEQ1RTSVpFMl07DQorDQorICBlbnRyb3B5LT5uZXh0X291dHB1dF9ieXRlID0gY2luZm8tPmRlc3QtPm5leHRfb3V0cHV0X2J5dGU7DQorICBlbnRyb3B5LT5mcmVlX2luX2J1ZmZlciA9IGNpbmZvLT5kZXN0LT5mcmVlX2luX2J1ZmZlcjsNCisNCisgIC8qIEVtaXQgcmVzdGFydCBtYXJrZXIgaWYgbmVlZGVkICovDQorICBpZiAoY2luZm8tPnJlc3RhcnRfaW50ZXJ2YWwpDQorICAgIGlmIChlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9PSAwKQ0KKyAgICAgIGVtaXRfcmVzdGFydChlbnRyb3B5LCBlbnRyb3B5LT5uZXh0X3Jlc3RhcnRfbnVtKTsNCisNCisgIC8qIEVuY29kZSB0aGUgTUNVIGRhdGEgYmxvY2sgKi8NCisgIGJsb2NrID0gTUNVX2RhdGFbMF07DQorDQorICAvKiBJdCBpcyBjb252ZW5pZW50IHRvIG1ha2UgYSBwcmUtcGFzcyB0byBkZXRlcm1pbmUgdGhlIHRyYW5zZm9ybWVkDQorICAgKiBjb2VmZmljaWVudHMnIGFic29sdXRlIHZhbHVlcyBhbmQgdGhlIEVPQiBwb3NpdGlvbi4NCisgICAqLw0KKyAgRU9CID0gMDsNCisgIGZvciAoayA9IGNpbmZvLT5TczsgayA8PSBTZTsgaysrKSB7DQorICAgIHRlbXAgPSAoKmJsb2NrKVtqcGVnX25hdHVyYWxfb3JkZXJba11dOw0KKyAgICAvKiBXZSBtdXN0IGFwcGx5IHRoZSBwb2ludCB0cmFuc2Zvcm0gYnkgQWwuICBGb3IgQUMgY29lZmZpY2llbnRzIHRoaXMNCisgICAgICogaXMgYW4gaW50ZWdlciBkaXZpc2lvbiB3aXRoIHJvdW5kaW5nIHRvd2FyZHMgMC4gIFRvIGRvIHRoaXMgcG9ydGFibHkNCisgICAgICogaW4gQywgd2Ugc2hpZnQgYWZ0ZXIgb2J0YWluaW5nIHRoZSBhYnNvbHV0ZSB2YWx1ZS4NCisgICAgICovDQorICAgIGlmICh0ZW1wIDwgMCkNCisgICAgICB0ZW1wID0gLXRlbXA7CQkvKiB0ZW1wIGlzIGFicyB2YWx1ZSBvZiBpbnB1dCAqLw0KKyAgICB0ZW1wID4+PSBBbDsJCS8qIGFwcGx5IHRoZSBwb2ludCB0cmFuc2Zvcm0gKi8NCisgICAgYWJzdmFsdWVzW2tdID0gdGVtcDsJLyogc2F2ZSBhYnMgdmFsdWUgZm9yIG1haW4gcGFzcyAqLw0KKyAgICBpZiAodGVtcCA9PSAxKQ0KKyAgICAgIEVPQiA9IGs7CQkJLyogRU9CID0gaW5kZXggb2YgbGFzdCBuZXdseS1ub256ZXJvIGNvZWYgKi8NCisgIH0NCisNCisgIC8qIEVuY29kZSB0aGUgQUMgY29lZmZpY2llbnRzIHBlciBzZWN0aW9uIEcuMS4yLjMsIGZpZy4gRy43ICovDQorICANCisgIHIgPSAwOwkJCS8qIHIgPSBydW4gbGVuZ3RoIG9mIHplcm9zICovDQorICBCUiA9IDA7CQkJLyogQlIgPSBjb3VudCBvZiBidWZmZXJlZCBiaXRzIGFkZGVkIG5vdyAqLw0KKyAgQlJfYnVmZmVyID0gZW50cm9weS0+Yml0X2J1ZmZlciArIGVudHJvcHktPkJFOyAvKiBBcHBlbmQgYml0cyB0byBidWZmZXIgKi8NCisNCisgIGZvciAoayA9IGNpbmZvLT5TczsgayA8PSBTZTsgaysrKSB7DQorICAgIGlmICgodGVtcCA9IGFic3ZhbHVlc1trXSkgPT0gMCkgew0KKyAgICAgIHIrKzsNCisgICAgICBjb250aW51ZTsNCisgICAgfQ0KKw0KKyAgICAvKiBFbWl0IGFueSByZXF1aXJlZCBaUkxzLCBidXQgbm90IGlmIHRoZXkgY2FuIGJlIGZvbGRlZCBpbnRvIEVPQiAqLw0KKyAgICB3aGlsZSAociA+IDE1ICYmIGsgPD0gRU9CKSB7DQorICAgICAgLyogZW1pdCBhbnkgcGVuZGluZyBFT0JSVU4gYW5kIHRoZSBCRSBjb3JyZWN0aW9uIGJpdHMgKi8NCisgICAgICBlbWl0X2VvYnJ1bihlbnRyb3B5KTsNCisgICAgICAvKiBFbWl0IFpSTCAqLw0KKyAgICAgIGVtaXRfc3ltYm9sKGVudHJvcHksIGVudHJvcHktPmFjX3RibF9ubywgMHhGMCk7DQorICAgICAgciAtPSAxNjsNCisgICAgICAvKiBFbWl0IGJ1ZmZlcmVkIGNvcnJlY3Rpb24gYml0cyB0aGF0IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIFpSTCAqLw0KKyAgICAgIGVtaXRfYnVmZmVyZWRfYml0cyhlbnRyb3B5LCBCUl9idWZmZXIsIEJSKTsNCisgICAgICBCUl9idWZmZXIgPSBlbnRyb3B5LT5iaXRfYnVmZmVyOyAvKiBCRSBiaXRzIGFyZSBnb25lIG5vdyAqLw0KKyAgICAgIEJSID0gMDsNCisgICAgfQ0KKw0KKyAgICAvKiBJZiB0aGUgY29lZiB3YXMgcHJldmlvdXNseSBub256ZXJvLCBpdCBvbmx5IG5lZWRzIGEgY29ycmVjdGlvbiBiaXQuDQorICAgICAqIE5PVEU6IGEgc3RyYWlnaHQgdHJhbnNsYXRpb24gb2YgdGhlIHNwZWMncyBmaWd1cmUgRy43IHdvdWxkIHN1Z2dlc3QNCisgICAgICogdGhhdCB3ZSBhbHNvIG5lZWQgdG8gdGVzdCByID4gMTUuICBCdXQgaWYgciA+IDE1LCB3ZSBjYW4gb25seSBnZXQgaGVyZQ0KKyAgICAgKiBpZiBrID4gRU9CLCB3aGljaCBpbXBsaWVzIHRoYXQgdGhpcyBjb2VmZmljaWVudCBpcyBub3QgMS4NCisgICAgICovDQorICAgIGlmICh0ZW1wID4gMSkgew0KKyAgICAgIC8qIFRoZSBjb3JyZWN0aW9uIGJpdCBpcyB0aGUgbmV4dCBiaXQgb2YgdGhlIGFic29sdXRlIHZhbHVlLiAqLw0KKyAgICAgIEJSX2J1ZmZlcltCUisrXSA9IChjaGFyKSAodGVtcCAmIDEpOw0KKyAgICAgIGNvbnRpbnVlOw0KKyAgICB9DQorDQorICAgIC8qIEVtaXQgYW55IHBlbmRpbmcgRU9CUlVOIGFuZCB0aGUgQkUgY29ycmVjdGlvbiBiaXRzICovDQorICAgIGVtaXRfZW9icnVuKGVudHJvcHkpOw0KKw0KKyAgICAvKiBDb3VudC9lbWl0IEh1ZmZtYW4gc3ltYm9sIGZvciBydW4gbGVuZ3RoIC8gbnVtYmVyIG9mIGJpdHMgKi8NCisgICAgZW1pdF9zeW1ib2woZW50cm9weSwgZW50cm9weS0+YWNfdGJsX25vLCAociA8PCA0KSArIDEpOw0KKw0KKyAgICAvKiBFbWl0IG91dHB1dCBiaXQgZm9yIG5ld2x5LW5vbnplcm8gY29lZiAqLw0KKyAgICB0ZW1wID0gKCgqYmxvY2spW2pwZWdfbmF0dXJhbF9vcmRlcltrXV0gPCAwKSA/IDAgOiAxOw0KKyAgICBlbWl0X2JpdHMoZW50cm9weSwgKHVuc2lnbmVkIGludCkgdGVtcCwgMSk7DQorDQorICAgIC8qIEVtaXQgYnVmZmVyZWQgY29ycmVjdGlvbiBiaXRzIHRoYXQgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb2RlICovDQorICAgIGVtaXRfYnVmZmVyZWRfYml0cyhlbnRyb3B5LCBCUl9idWZmZXIsIEJSKTsNCisgICAgQlJfYnVmZmVyID0gZW50cm9weS0+Yml0X2J1ZmZlcjsgLyogQkUgYml0cyBhcmUgZ29uZSBub3cgKi8NCisgICAgQlIgPSAwOw0KKyAgICByID0gMDsJCQkvKiByZXNldCB6ZXJvIHJ1biBsZW5ndGggKi8NCisgIH0NCisNCisgIGlmIChyID4gMCB8fCBCUiA+IDApIHsJLyogSWYgdGhlcmUgYXJlIHRyYWlsaW5nIHplcm9lcywgKi8NCisgICAgZW50cm9weS0+RU9CUlVOKys7CQkvKiBjb3VudCBhbiBFT0IgKi8NCisgICAgZW50cm9weS0+QkUgKz0gQlI7CQkvKiBjb25jYXQgbXkgY29ycmVjdGlvbiBiaXRzIHRvIG9sZGVyIG9uZXMgKi8NCisgICAgLyogV2UgZm9yY2Ugb3V0IHRoZSBFT0IgaWYgd2UgcmlzayBlaXRoZXI6DQorICAgICAqIDEuIG92ZXJmbG93IG9mIHRoZSBFT0IgY291bnRlcjsNCisgICAgICogMi4gb3ZlcmZsb3cgb2YgdGhlIGNvcnJlY3Rpb24gYml0IGJ1ZmZlciBkdXJpbmcgdGhlIG5leHQgTUNVLg0KKyAgICAgKi8NCisgICAgaWYgKGVudHJvcHktPkVPQlJVTiA9PSAweDdGRkYgfHwgZW50cm9weS0+QkUgPiAoTUFYX0NPUlJfQklUUy1EQ1RTSVpFMisxKSkNCisgICAgICBlbWl0X2VvYnJ1bihlbnRyb3B5KTsNCisgIH0NCisNCisgIGNpbmZvLT5kZXN0LT5uZXh0X291dHB1dF9ieXRlID0gZW50cm9weS0+bmV4dF9vdXRwdXRfYnl0ZTsNCisgIGNpbmZvLT5kZXN0LT5mcmVlX2luX2J1ZmZlciA9IGVudHJvcHktPmZyZWVfaW5fYnVmZmVyOw0KKw0KKyAgLyogVXBkYXRlIHJlc3RhcnQtaW50ZXJ2YWwgc3RhdGUgdG9vICovDQorICBpZiAoY2luZm8tPnJlc3RhcnRfaW50ZXJ2YWwpIHsNCisgICAgaWYgKGVudHJvcHktPnJlc3RhcnRzX3RvX2dvID09IDApIHsNCisgICAgICBlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9IGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsOw0KKyAgICAgIGVudHJvcHktPm5leHRfcmVzdGFydF9udW0rKzsNCisgICAgICBlbnRyb3B5LT5uZXh0X3Jlc3RhcnRfbnVtICY9IDc7DQorICAgIH0NCisgICAgZW50cm9weS0+cmVzdGFydHNfdG9fZ28tLTsNCisgIH0NCisNCisgIHJldHVybiBUUlVFOw0KK30NCisNCisNCisvKg0KKyAqIEZpbmlzaCB1cCBhdCB0aGUgZW5kIG9mIGEgSHVmZm1hbi1jb21wcmVzc2VkIHByb2dyZXNzaXZlIHNjYW4uDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorZmluaXNoX3Bhc3NfcGh1ZmYgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sgICANCisgIHBodWZmX2VudHJvcHlfcHRyIGVudHJvcHkgPSAocGh1ZmZfZW50cm9weV9wdHIpIGNpbmZvLT5lbnRyb3B5Ow0KKw0KKyAgZW50cm9weS0+bmV4dF9vdXRwdXRfYnl0ZSA9IGNpbmZvLT5kZXN0LT5uZXh0X291dHB1dF9ieXRlOw0KKyAgZW50cm9weS0+ZnJlZV9pbl9idWZmZXIgPSBjaW5mby0+ZGVzdC0+ZnJlZV9pbl9idWZmZXI7DQorDQorICAvKiBGbHVzaCBvdXQgYW55IGJ1ZmZlcmVkIGRhdGEgKi8NCisgIGVtaXRfZW9icnVuKGVudHJvcHkpOw0KKyAgZmx1c2hfYml0cyhlbnRyb3B5KTsNCisNCisgIGNpbmZvLT5kZXN0LT5uZXh0X291dHB1dF9ieXRlID0gZW50cm9weS0+bmV4dF9vdXRwdXRfYnl0ZTsNCisgIGNpbmZvLT5kZXN0LT5mcmVlX2luX2J1ZmZlciA9IGVudHJvcHktPmZyZWVfaW5fYnVmZmVyOw0KK30NCisNCisNCisvKg0KKyAqIEZpbmlzaCB1cCBhIHN0YXRpc3RpY3MtZ2F0aGVyaW5nIHBhc3MgYW5kIGNyZWF0ZSB0aGUgbmV3IEh1ZmZtYW4gdGFibGVzLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2ZpbmlzaF9wYXNzX2dhdGhlcl9waHVmZiAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgcGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSA9IChwaHVmZl9lbnRyb3B5X3B0cikgY2luZm8tPmVudHJvcHk7DQorICBib29sZWFuIGlzX0RDX2JhbmQ7DQorICBpbnQgY2ksIHRibDsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyOw0KKyAgSkhVRkZfVEJMICoqaHRibHB0cjsNCisgIGJvb2xlYW4gZGlkW05VTV9IVUZGX1RCTFNdOw0KKw0KKyAgLyogRmx1c2ggb3V0IGJ1ZmZlcmVkIGRhdGEgKGFsbCB3ZSBjYXJlIGFib3V0IGlzIGNvdW50aW5nIHRoZSBFT0Igc3ltYm9sKSAqLw0KKyAgZW1pdF9lb2JydW4oZW50cm9weSk7DQorDQorICBpc19EQ19iYW5kID0gKGNpbmZvLT5TcyA9PSAwKTsNCisNCisgIC8qIEl0J3MgaW1wb3J0YW50IG5vdCB0byBhcHBseSBqcGVnX2dlbl9vcHRpbWFsX3RhYmxlIG1vcmUgdGhhbiBvbmNlDQorICAgKiBwZXIgdGFibGUsIGJlY2F1c2UgaXQgY2xvYmJlcnMgdGhlIGlucHV0IGZyZXF1ZW5jeSBjb3VudHMhDQorICAgKi8NCisgIE1FTVpFUk8oZGlkLCBTSVpFT0YoZGlkKSk7DQorDQorICBmb3IgKGNpID0gMDsgY2kgPCBjaW5mby0+Y29tcHNfaW5fc2NhbjsgY2krKykgew0KKyAgICBjb21wcHRyID0gY2luZm8tPmN1cl9jb21wX2luZm9bY2ldOw0KKyAgICBpZiAoaXNfRENfYmFuZCkgew0KKyAgICAgIGlmIChjaW5mby0+QWggIT0gMCkJLyogREMgcmVmaW5lbWVudCBuZWVkcyBubyB0YWJsZSAqLw0KKwljb250aW51ZTsNCisgICAgICB0YmwgPSBjb21wcHRyLT5kY190Ymxfbm87DQorICAgIH0gZWxzZSB7DQorICAgICAgdGJsID0gY29tcHB0ci0+YWNfdGJsX25vOw0KKyAgICB9DQorICAgIGlmICghIGRpZFt0YmxdKSB7DQorICAgICAgaWYgKGlzX0RDX2JhbmQpDQorICAgICAgICBodGJscHRyID0gJiBjaW5mby0+ZGNfaHVmZl90YmxfcHRyc1t0YmxdOw0KKyAgICAgIGVsc2UNCisgICAgICAgIGh0YmxwdHIgPSAmIGNpbmZvLT5hY19odWZmX3RibF9wdHJzW3RibF07DQorICAgICAgaWYgKCpodGJscHRyID09IE5VTEwpDQorICAgICAgICAqaHRibHB0ciA9IGpwZWdfYWxsb2NfaHVmZl90YWJsZSgoal9jb21tb25fcHRyKSBjaW5mbyk7DQorICAgICAganBlZ19nZW5fb3B0aW1hbF90YWJsZShjaW5mbywgKmh0YmxwdHIsIGVudHJvcHktPmNvdW50X3B0cnNbdGJsXSk7DQorICAgICAgZGlkW3RibF0gPSBUUlVFOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogTW9kdWxlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIHByb2dyZXNzaXZlIEh1ZmZtYW4gZW50cm9weSBlbmNvZGluZy4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqaW5pdF9waHVmZl9lbmNvZGVyIChqX2NvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBwaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5Ow0KKyAgaW50IGk7DQorDQorICBlbnRyb3B5ID0gKHBodWZmX2VudHJvcHlfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQlTSVpFT0YocGh1ZmZfZW50cm9weV9lbmNvZGVyKSk7DQorICBjaW5mby0+ZW50cm9weSA9IChzdHJ1Y3QganBlZ19lbnRyb3B5X2VuY29kZXIgKikgZW50cm9weTsNCisgIGVudHJvcHktPnB1Yi5zdGFydF9wYXNzID0gc3RhcnRfcGFzc19waHVmZjsNCisNCisgIC8qIE1hcmsgdGFibGVzIHVuYWxsb2NhdGVkICovDQorICBmb3IgKGkgPSAwOyBpIDwgTlVNX0hVRkZfVEJMUzsgaSsrKSB7DQorICAgIGVudHJvcHktPmRlcml2ZWRfdGJsc1tpXSA9IE5VTEw7DQorICAgIGVudHJvcHktPmNvdW50X3B0cnNbaV0gPSBOVUxMOw0KKyAgfQ0KKyAgZW50cm9weS0+Yml0X2J1ZmZlciA9IE5VTEw7CS8qIG5lZWRlZCBvbmx5IGluIEFDIHJlZmluZW1lbnQgc2NhbiAqLw0KK30NCisNCisjZW5kaWYgLyogQ19QUk9HUkVTU0lWRV9TVVBQT1JURUQgKi8NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qY3ByZXBjdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNwcmVwY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzlkODdiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNwcmVwY3QuYwpAQCAtMCwwICsxLDM1NyBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGpjcHJlcGN0LmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk2LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29tcHJlc3Npb24gcHJlcHJvY2Vzc2luZyBjb250cm9sbGVyLg0KKyAqIFRoaXMgY29udHJvbGxlciBtYW5hZ2VzIHRoZSBjb2xvciBjb252ZXJzaW9uLCBkb3duc2FtcGxpbmcsDQorICogYW5kIGVkZ2UgZXhwYW5zaW9uIHN0ZXBzLg0KKyAqDQorICogTW9zdCBvZiB0aGUgY29tcGxleGl0eSBoZXJlIGlzIGFzc29jaWF0ZWQgd2l0aCBidWZmZXJpbmcgaW5wdXQgcm93cw0KKyAqIGFzIHJlcXVpcmVkIGJ5IHRoZSBkb3duc2FtcGxlci4gIFNlZSB0aGUgY29tbWVudHMgYXQgdGhlIGhlYWQgb2YNCisgKiBqY3NhbXBsZS5jIGZvciB0aGUgZG93bnNhbXBsZXIncyBuZWVkcy4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisNCisNCisvKiBBdCBwcmVzZW50LCBqY3NhbXBsZS5jIGNhbiByZXF1ZXN0IGNvbnRleHQgcm93cyBvbmx5IGZvciBzbW9vdGhpbmcuDQorICogSW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgYWxzbyBuZWVkIGNvbnRleHQgcm93cyBmb3IgQ0NJUjYwMSBzYW1wbGluZw0KKyAqIG9yIG90aGVyIG1vcmUtY29tcGxleCBkb3duc2FtcGxpbmcgcHJvY2VkdXJlcy4gIFRoZSBjb2RlIHRvIHN1cHBvcnQNCisgKiBjb250ZXh0IHJvd3Mgc2hvdWxkIGJlIGNvbXBpbGVkIG9ubHkgaWYgbmVlZGVkLg0KKyAqLw0KKyNpZmRlZiBJTlBVVF9TTU9PVEhJTkdfU1VQUE9SVEVEDQorI2RlZmluZSBDT05URVhUX1JPV1NfU1VQUE9SVEVEDQorI2VuZGlmDQorDQorDQorLyoNCisgKiBGb3IgdGhlIHNpbXBsZSAobm8tY29udGV4dC1yb3cpIGNhc2UsIHdlIGp1c3QgbmVlZCB0byBidWZmZXIgb25lDQorICogcm93IGdyb3VwJ3Mgd29ydGggb2YgcGl4ZWxzIGZvciB0aGUgZG93bnNhbXBsaW5nIHN0ZXAuICBBdCB0aGUgYm90dG9tIG9mDQorICogdGhlIGltYWdlLCB3ZSBwYWQgdG8gYSBmdWxsIHJvdyBncm91cCBieSByZXBsaWNhdGluZyB0aGUgbGFzdCBwaXhlbCByb3cuDQorICogVGhlIGRvd25zYW1wbGVyJ3MgbGFzdCBvdXRwdXQgcm93IGlzIHRoZW4gcmVwbGljYXRlZCBpZiBuZWVkZWQgdG8gcGFkDQorICogb3V0IHRvIGEgZnVsbCBpTUNVIHJvdy4NCisgKg0KKyAqIFdoZW4gcHJvdmlkaW5nIGNvbnRleHQgcm93cywgd2UgbXVzdCBidWZmZXIgdGhyZWUgcm93IGdyb3Vwcycgd29ydGggb2YNCisgKiBwaXhlbHMuICBUaHJlZSByb3cgZ3JvdXBzIGFyZSBwaHlzaWNhbGx5IGFsbG9jYXRlZCwgYnV0IHRoZSByb3cgcG9pbnRlcg0KKyAqIGFycmF5cyBhcmUgbWFkZSBmaXZlIHJvdyBncm91cHMgaGlnaCwgd2l0aCB0aGUgZXh0cmEgcG9pbnRlcnMgYWJvdmUgYW5kDQorICogYmVsb3cgIndyYXBwaW5nIGFyb3VuZCIgdG8gcG9pbnQgdG8gdGhlIGxhc3QgYW5kIGZpcnN0IHJlYWwgcm93IGdyb3Vwcy4NCisgKiBUaGlzIGFsbG93cyB0aGUgZG93bnNhbXBsZXIgdG8gYWNjZXNzIHRoZSBwcm9wZXIgY29udGV4dCByb3dzLg0KKyAqIEF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgaW1hZ2UsIHdlIGNyZWF0ZSBkdW1teSBjb250ZXh0IHJvd3MgYnkNCisgKiBjb3B5aW5nIHRoZSBmaXJzdCBvciBsYXN0IHJlYWwgcGl4ZWwgcm93LiAgVGhpcyBjb3B5aW5nIGNvdWxkIGJlIGF2b2lkZWQNCisgKiBieSBwb2ludGVyIGhhY2tpbmcgYXMgaXMgZG9uZSBpbiBqZG1haW5jdC5jLCBidXQgaXQgZG9lc24ndCBzZWVtIHdvcnRoIHRoZQ0KKyAqIHRyb3VibGUgb24gdGhlIGNvbXByZXNzaW9uIHNpZGUuDQorICovDQorDQorDQorLyogUHJpdmF0ZSBidWZmZXIgY29udHJvbGxlciBvYmplY3QgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBzdHJ1Y3QganBlZ19jX3ByZXBfY29udHJvbGxlciBwdWI7IC8qIHB1YmxpYyBmaWVsZHMgKi8NCisNCisgIC8qIERvd25zYW1wbGluZyBpbnB1dCBidWZmZXIuICBUaGlzIGJ1ZmZlciBob2xkcyBjb2xvci1jb252ZXJ0ZWQgZGF0YQ0KKyAgICogdW50aWwgd2UgaGF2ZSBlbm91Z2ggdG8gZG8gYSBkb3duc2FtcGxlIHN0ZXAuDQorICAgKi8NCisgIEpTQU1QQVJSQVkgY29sb3JfYnVmW01BWF9DT01QT05FTlRTXTsNCisNCisgIEpESU1FTlNJT04gcm93c190b19nbzsJLyogY291bnRzIHJvd3MgcmVtYWluaW5nIGluIHNvdXJjZSBpbWFnZSAqLw0KKyAgaW50IG5leHRfYnVmX3JvdzsJCS8qIGluZGV4IG9mIG5leHQgcm93IHRvIHN0b3JlIGluIGNvbG9yX2J1ZiAqLw0KKw0KKyNpZmRlZiBDT05URVhUX1JPV1NfU1VQUE9SVEVECS8qIG9ubHkgbmVlZGVkIGZvciBjb250ZXh0IGNhc2UgKi8NCisgIGludCB0aGlzX3Jvd19ncm91cDsJCS8qIHN0YXJ0aW5nIHJvdyBpbmRleCBvZiBncm91cCB0byBwcm9jZXNzICovDQorICBpbnQgbmV4dF9idWZfc3RvcDsJCS8qIGRvd25zYW1wbGUgd2hlbiB3ZSByZWFjaCB0aGlzIGluZGV4ICovDQorI2VuZGlmDQorfSBteV9wcmVwX2NvbnRyb2xsZXI7DQorDQordHlwZWRlZiBteV9wcmVwX2NvbnRyb2xsZXIgKiBteV9wcmVwX3B0cjsNCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgZm9yIGEgcHJvY2Vzc2luZyBwYXNzLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3N0YXJ0X3Bhc3NfcHJlcCAoal9jb21wcmVzc19wdHIgY2luZm8sIEpfQlVGX01PREUgcGFzc19tb2RlKQ0KK3sNCisgIG15X3ByZXBfcHRyIHByZXAgPSAobXlfcHJlcF9wdHIpIGNpbmZvLT5wcmVwOw0KKw0KKyAgaWYgKHBhc3NfbW9kZSAhPSBKQlVGX1BBU1NfVEhSVSkNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfQlVGRkVSX01PREUpOw0KKw0KKyAgLyogSW5pdGlhbGl6ZSB0b3RhbC1oZWlnaHQgY291bnRlciBmb3IgZGV0ZWN0aW5nIGJvdHRvbSBvZiBpbWFnZSAqLw0KKyAgcHJlcC0+cm93c190b19nbyA9IGNpbmZvLT5pbWFnZV9oZWlnaHQ7DQorICAvKiBNYXJrIHRoZSBjb252ZXJzaW9uIGJ1ZmZlciBlbXB0eSAqLw0KKyAgcHJlcC0+bmV4dF9idWZfcm93ID0gMDsNCisjaWZkZWYgQ09OVEVYVF9ST1dTX1NVUFBPUlRFRA0KKyAgLyogUHJlc2V0IGFkZGl0aW9uYWwgc3RhdGUgdmFyaWFibGVzIGZvciBjb250ZXh0IG1vZGUuDQorICAgKiBUaGVzZSBhcmVuJ3QgdXNlZCBpbiBub24tY29udGV4dCBtb2RlLCBzbyB3ZSBuZWVkbid0IHRlc3Qgd2hpY2ggbW9kZS4NCisgICAqLw0KKyAgcHJlcC0+dGhpc19yb3dfZ3JvdXAgPSAwOw0KKyAgLyogU2V0IG5leHRfYnVmX3N0b3AgdG8gc3RvcCBhZnRlciB0d28gcm93IGdyb3VwcyBoYXZlIGJlZW4gcmVhZCBpbi4gKi8NCisgIHByZXAtPm5leHRfYnVmX3N0b3AgPSAyICogY2luZm8tPm1heF92X3NhbXBfZmFjdG9yOw0KKyNlbmRpZg0KK30NCisNCisNCisvKg0KKyAqIEV4cGFuZCBhbiBpbWFnZSB2ZXJ0aWNhbGx5IGZyb20gaGVpZ2h0IGlucHV0X3Jvd3MgdG8gaGVpZ2h0IG91dHB1dF9yb3dzLA0KKyAqIGJ5IGR1cGxpY2F0aW5nIHRoZSBib3R0b20gcm93Lg0KKyAqLw0KKw0KK0xPQ0FMKHZvaWQpDQorZXhwYW5kX2JvdHRvbV9lZGdlIChKU0FNUEFSUkFZIGltYWdlX2RhdGEsIEpESU1FTlNJT04gbnVtX2NvbHMsDQorCQkgICAgaW50IGlucHV0X3Jvd3MsIGludCBvdXRwdXRfcm93cykNCit7DQorICByZWdpc3RlciBpbnQgcm93Ow0KKw0KKyAgZm9yIChyb3cgPSBpbnB1dF9yb3dzOyByb3cgPCBvdXRwdXRfcm93czsgcm93KyspIHsNCisgICAgamNvcHlfc2FtcGxlX3Jvd3MoaW1hZ2VfZGF0YSwgaW5wdXRfcm93cy0xLCBpbWFnZV9kYXRhLCByb3csDQorCQkgICAgICAxLCBudW1fY29scyk7DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogUHJvY2VzcyBzb21lIGRhdGEgaW4gdGhlIHNpbXBsZSBuby1jb250ZXh0IGNhc2UuDQorICoNCisgKiBQcmVwcm9jZXNzb3Igb3V0cHV0IGRhdGEgaXMgY291bnRlZCBpbiAicm93IGdyb3VwcyIuICBBIHJvdyBncm91cA0KKyAqIGlzIGRlZmluZWQgdG8gYmUgdl9zYW1wX2ZhY3RvciBzYW1wbGUgcm93cyBvZiBlYWNoIGNvbXBvbmVudC4NCisgKiBEb3duc2FtcGxpbmcgd2lsbCBwcm9kdWNlIHRoaXMgbXVjaCBkYXRhIGZyb20gZWFjaCBtYXhfdl9zYW1wX2ZhY3Rvcg0KKyAqIGlucHV0IHJvd3MuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorcHJlX3Byb2Nlc3NfZGF0YSAoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkgIEpTQU1QQVJSQVkgaW5wdXRfYnVmLCBKRElNRU5TSU9OICppbl9yb3dfY3RyLA0KKwkJICBKRElNRU5TSU9OIGluX3Jvd3NfYXZhaWwsDQorCQkgIEpTQU1QSU1BR0Ugb3V0cHV0X2J1ZiwgSkRJTUVOU0lPTiAqb3V0X3Jvd19ncm91cF9jdHIsDQorCQkgIEpESU1FTlNJT04gb3V0X3Jvd19ncm91cHNfYXZhaWwpDQorew0KKyAgbXlfcHJlcF9wdHIgcHJlcCA9IChteV9wcmVwX3B0cikgY2luZm8tPnByZXA7DQorICBpbnQgbnVtcm93cywgY2k7DQorICBKRElNRU5TSU9OIGlucm93czsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyOw0KKw0KKyAgd2hpbGUgKCppbl9yb3dfY3RyIDwgaW5fcm93c19hdmFpbCAmJg0KKwkgKm91dF9yb3dfZ3JvdXBfY3RyIDwgb3V0X3Jvd19ncm91cHNfYXZhaWwpIHsNCisgICAgLyogRG8gY29sb3IgY29udmVyc2lvbiB0byBmaWxsIHRoZSBjb252ZXJzaW9uIGJ1ZmZlci4gKi8NCisgICAgaW5yb3dzID0gaW5fcm93c19hdmFpbCAtICppbl9yb3dfY3RyOw0KKyAgICBudW1yb3dzID0gY2luZm8tPm1heF92X3NhbXBfZmFjdG9yIC0gcHJlcC0+bmV4dF9idWZfcm93Ow0KKyAgICBudW1yb3dzID0gKGludCkgTUlOKChKRElNRU5TSU9OKSBudW1yb3dzLCBpbnJvd3MpOw0KKyAgICAoKmNpbmZvLT5jY29udmVydC0+Y29sb3JfY29udmVydCkgKGNpbmZvLCBpbnB1dF9idWYgKyAqaW5fcm93X2N0ciwNCisJCQkJICAgICAgIHByZXAtPmNvbG9yX2J1ZiwNCisJCQkJICAgICAgIChKRElNRU5TSU9OKSBwcmVwLT5uZXh0X2J1Zl9yb3csDQorCQkJCSAgICAgICBudW1yb3dzKTsNCisgICAgKmluX3Jvd19jdHIgKz0gbnVtcm93czsNCisgICAgcHJlcC0+bmV4dF9idWZfcm93ICs9IG51bXJvd3M7DQorICAgIHByZXAtPnJvd3NfdG9fZ28gLT0gbnVtcm93czsNCisgICAgLyogSWYgYXQgYm90dG9tIG9mIGltYWdlLCBwYWQgdG8gZmlsbCB0aGUgY29udmVyc2lvbiBidWZmZXIuICovDQorICAgIGlmIChwcmVwLT5yb3dzX3RvX2dvID09IDAgJiYNCisJcHJlcC0+bmV4dF9idWZfcm93IDwgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yKSB7DQorICAgICAgZm9yIChjaSA9IDA7IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOyBjaSsrKSB7DQorCWV4cGFuZF9ib3R0b21fZWRnZShwcmVwLT5jb2xvcl9idWZbY2ldLCBjaW5mby0+aW1hZ2Vfd2lkdGgsDQorCQkJICAgcHJlcC0+bmV4dF9idWZfcm93LCBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IpOw0KKyAgICAgIH0NCisgICAgICBwcmVwLT5uZXh0X2J1Zl9yb3cgPSBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3I7DQorICAgIH0NCisgICAgLyogSWYgd2UndmUgZmlsbGVkIHRoZSBjb252ZXJzaW9uIGJ1ZmZlciwgZW1wdHkgaXQuICovDQorICAgIGlmIChwcmVwLT5uZXh0X2J1Zl9yb3cgPT0gY2luZm8tPm1heF92X3NhbXBfZmFjdG9yKSB7DQorICAgICAgKCpjaW5mby0+ZG93bnNhbXBsZS0+ZG93bnNhbXBsZSkgKGNpbmZvLA0KKwkJCQkJcHJlcC0+Y29sb3JfYnVmLCAoSkRJTUVOU0lPTikgMCwNCisJCQkJCW91dHB1dF9idWYsICpvdXRfcm93X2dyb3VwX2N0cik7DQorICAgICAgcHJlcC0+bmV4dF9idWZfcm93ID0gMDsNCisgICAgICAoKm91dF9yb3dfZ3JvdXBfY3RyKSsrOw0KKyAgICB9DQorICAgIC8qIElmIGF0IGJvdHRvbSBvZiBpbWFnZSwgcGFkIHRoZSBvdXRwdXQgdG8gYSBmdWxsIGlNQ1UgaGVpZ2h0Lg0KKyAgICAgKiBOb3RlIHdlIGFzc3VtZSB0aGUgY2FsbGVyIGlzIHByb3ZpZGluZyBhIG9uZS1pTUNVLWhlaWdodCBvdXRwdXQgYnVmZmVyIQ0KKyAgICAgKi8NCisgICAgaWYgKHByZXAtPnJvd3NfdG9fZ28gPT0gMCAmJg0KKwkqb3V0X3Jvd19ncm91cF9jdHIgPCBvdXRfcm93X2dyb3Vwc19hdmFpbCkgew0KKyAgICAgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorCSAgIGNpKyssIGNvbXBwdHIrKykgew0KKwlleHBhbmRfYm90dG9tX2VkZ2Uob3V0cHV0X2J1ZltjaV0sDQorCQkJICAgY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzICogRENUU0laRSwNCisJCQkgICAoaW50KSAoKm91dF9yb3dfZ3JvdXBfY3RyICogY29tcHB0ci0+dl9zYW1wX2ZhY3RvciksDQorCQkJICAgKGludCkgKG91dF9yb3dfZ3JvdXBzX2F2YWlsICogY29tcHB0ci0+dl9zYW1wX2ZhY3RvcikpOw0KKyAgICAgIH0NCisgICAgICAqb3V0X3Jvd19ncm91cF9jdHIgPSBvdXRfcm93X2dyb3Vwc19hdmFpbDsNCisgICAgICBicmVhazsJCQkvKiBjYW4gZXhpdCBvdXRlciBsb29wIHdpdGhvdXQgdGVzdCAqLw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKyNpZmRlZiBDT05URVhUX1JPV1NfU1VQUE9SVEVEDQorDQorLyoNCisgKiBQcm9jZXNzIHNvbWUgZGF0YSBpbiB0aGUgY29udGV4dCBjYXNlLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3ByZV9wcm9jZXNzX2NvbnRleHQgKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJICAgICBKU0FNUEFSUkFZIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiAqaW5fcm93X2N0ciwNCisJCSAgICAgSkRJTUVOU0lPTiBpbl9yb3dzX2F2YWlsLA0KKwkJICAgICBKU0FNUElNQUdFIG91dHB1dF9idWYsIEpESU1FTlNJT04gKm91dF9yb3dfZ3JvdXBfY3RyLA0KKwkJICAgICBKRElNRU5TSU9OIG91dF9yb3dfZ3JvdXBzX2F2YWlsKQ0KK3sNCisgIG15X3ByZXBfcHRyIHByZXAgPSAobXlfcHJlcF9wdHIpIGNpbmZvLT5wcmVwOw0KKyAgaW50IG51bXJvd3MsIGNpOw0KKyAgaW50IGJ1Zl9oZWlnaHQgPSBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IgKiAzOw0KKyAgSkRJTUVOU0lPTiBpbnJvd3M7DQorDQorICB3aGlsZSAoKm91dF9yb3dfZ3JvdXBfY3RyIDwgb3V0X3Jvd19ncm91cHNfYXZhaWwpIHsNCisgICAgaWYgKCppbl9yb3dfY3RyIDwgaW5fcm93c19hdmFpbCkgew0KKyAgICAgIC8qIERvIGNvbG9yIGNvbnZlcnNpb24gdG8gZmlsbCB0aGUgY29udmVyc2lvbiBidWZmZXIuICovDQorICAgICAgaW5yb3dzID0gaW5fcm93c19hdmFpbCAtICppbl9yb3dfY3RyOw0KKyAgICAgIG51bXJvd3MgPSBwcmVwLT5uZXh0X2J1Zl9zdG9wIC0gcHJlcC0+bmV4dF9idWZfcm93Ow0KKyAgICAgIG51bXJvd3MgPSAoaW50KSBNSU4oKEpESU1FTlNJT04pIG51bXJvd3MsIGlucm93cyk7DQorICAgICAgKCpjaW5mby0+Y2NvbnZlcnQtPmNvbG9yX2NvbnZlcnQpIChjaW5mbywgaW5wdXRfYnVmICsgKmluX3Jvd19jdHIsDQorCQkJCQkgcHJlcC0+Y29sb3JfYnVmLA0KKwkJCQkJIChKRElNRU5TSU9OKSBwcmVwLT5uZXh0X2J1Zl9yb3csDQorCQkJCQkgbnVtcm93cyk7DQorICAgICAgLyogUGFkIGF0IHRvcCBvZiBpbWFnZSwgaWYgZmlyc3QgdGltZSB0aHJvdWdoICovDQorICAgICAgaWYgKHByZXAtPnJvd3NfdG9fZ28gPT0gY2luZm8tPmltYWdlX2hlaWdodCkgew0KKwlmb3IgKGNpID0gMDsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7IGNpKyspIHsNCisJICBpbnQgcm93Ow0KKwkgIGZvciAocm93ID0gMTsgcm93IDw9IGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3Rvcjsgcm93KyspIHsNCisJICAgIGpjb3B5X3NhbXBsZV9yb3dzKHByZXAtPmNvbG9yX2J1ZltjaV0sIDAsDQorCQkJICAgICAgcHJlcC0+Y29sb3JfYnVmW2NpXSwgLXJvdywNCisJCQkgICAgICAxLCBjaW5mby0+aW1hZ2Vfd2lkdGgpOw0KKwkgIH0NCisJfQ0KKyAgICAgIH0NCisgICAgICAqaW5fcm93X2N0ciArPSBudW1yb3dzOw0KKyAgICAgIHByZXAtPm5leHRfYnVmX3JvdyArPSBudW1yb3dzOw0KKyAgICAgIHByZXAtPnJvd3NfdG9fZ28gLT0gbnVtcm93czsNCisgICAgfSBlbHNlIHsNCisgICAgICAvKiBSZXR1cm4gZm9yIG1vcmUgZGF0YSwgdW5sZXNzIHdlIGFyZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBpbWFnZS4gKi8NCisgICAgICBpZiAocHJlcC0+cm93c190b19nbyAhPSAwKQ0KKwlicmVhazsNCisgICAgICAvKiBXaGVuIGF0IGJvdHRvbSBvZiBpbWFnZSwgcGFkIHRvIGZpbGwgdGhlIGNvbnZlcnNpb24gYnVmZmVyLiAqLw0KKyAgICAgIGlmIChwcmVwLT5uZXh0X2J1Zl9yb3cgPCBwcmVwLT5uZXh0X2J1Zl9zdG9wKSB7DQorCWZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsgY2krKykgew0KKwkgIGV4cGFuZF9ib3R0b21fZWRnZShwcmVwLT5jb2xvcl9idWZbY2ldLCBjaW5mby0+aW1hZ2Vfd2lkdGgsDQorCQkJICAgICBwcmVwLT5uZXh0X2J1Zl9yb3csIHByZXAtPm5leHRfYnVmX3N0b3ApOw0KKwl9DQorCXByZXAtPm5leHRfYnVmX3JvdyA9IHByZXAtPm5leHRfYnVmX3N0b3A7DQorICAgICAgfQ0KKyAgICB9DQorICAgIC8qIElmIHdlJ3ZlIGdvdHRlbiBlbm91Z2ggZGF0YSwgZG93bnNhbXBsZSBhIHJvdyBncm91cC4gKi8NCisgICAgaWYgKHByZXAtPm5leHRfYnVmX3JvdyA9PSBwcmVwLT5uZXh0X2J1Zl9zdG9wKSB7DQorICAgICAgKCpjaW5mby0+ZG93bnNhbXBsZS0+ZG93bnNhbXBsZSkgKGNpbmZvLA0KKwkJCQkJcHJlcC0+Y29sb3JfYnVmLA0KKwkJCQkJKEpESU1FTlNJT04pIHByZXAtPnRoaXNfcm93X2dyb3VwLA0KKwkJCQkJb3V0cHV0X2J1ZiwgKm91dF9yb3dfZ3JvdXBfY3RyKTsNCisgICAgICAoKm91dF9yb3dfZ3JvdXBfY3RyKSsrOw0KKyAgICAgIC8qIEFkdmFuY2UgcG9pbnRlcnMgd2l0aCB3cmFwYXJvdW5kIGFzIG5lY2Vzc2FyeS4gKi8NCisgICAgICBwcmVwLT50aGlzX3Jvd19ncm91cCArPSBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3I7DQorICAgICAgaWYgKHByZXAtPnRoaXNfcm93X2dyb3VwID49IGJ1Zl9oZWlnaHQpDQorCXByZXAtPnRoaXNfcm93X2dyb3VwID0gMDsNCisgICAgICBpZiAocHJlcC0+bmV4dF9idWZfcm93ID49IGJ1Zl9oZWlnaHQpDQorCXByZXAtPm5leHRfYnVmX3JvdyA9IDA7DQorICAgICAgcHJlcC0+bmV4dF9idWZfc3RvcCA9IHByZXAtPm5leHRfYnVmX3JvdyArIGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvcjsNCisgICAgfQ0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIENyZWF0ZSB0aGUgd3JhcHBlZC1hcm91bmQgZG93bnNhbXBsaW5nIGlucHV0IGJ1ZmZlciBuZWVkZWQgZm9yIGNvbnRleHQgbW9kZS4NCisgKi8NCisNCitMT0NBTCh2b2lkKQ0KK2NyZWF0ZV9jb250ZXh0X2J1ZmZlciAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfcHJlcF9wdHIgcHJlcCA9IChteV9wcmVwX3B0cikgY2luZm8tPnByZXA7DQorICBpbnQgcmdyb3VwX2hlaWdodCA9IGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvcjsNCisgIGludCBjaSwgaTsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyOw0KKyAgSlNBTVBBUlJBWSB0cnVlX2J1ZmZlciwgZmFrZV9idWZmZXI7DQorDQorICAvKiBHcmFiIGVub3VnaCBzcGFjZSBmb3IgZmFrZSByb3cgcG9pbnRlcnMgZm9yIGFsbCB0aGUgY29tcG9uZW50czsNCisgICAqIHdlIG5lZWQgZml2ZSByb3cgZ3JvdXBzJyB3b3J0aCBvZiBwb2ludGVycyBmb3IgZWFjaCBjb21wb25lbnQuDQorICAgKi8NCisgIGZha2VfYnVmZmVyID0gKEpTQU1QQVJSQVkpDQorICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCShjaW5mby0+bnVtX2NvbXBvbmVudHMgKiA1ICogcmdyb3VwX2hlaWdodCkgKg0KKwkJCQlTSVpFT0YoSlNBTVBST1cpKTsNCisNCisgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorICAgICAgIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICAvKiBBbGxvY2F0ZSB0aGUgYWN0dWFsIGJ1ZmZlciBzcGFjZSAoMyByb3cgZ3JvdXBzKSBmb3IgdGhpcyBjb21wb25lbnQuDQorICAgICAqIFdlIG1ha2UgdGhlIGJ1ZmZlciB3aWRlIGVub3VnaCB0byBhbGxvdyB0aGUgZG93bnNhbXBsZXIgdG8gZWRnZS1leHBhbmQNCisgICAgICogaG9yaXpvbnRhbGx5IHdpdGhpbiB0aGUgYnVmZmVyLCBpZiBpdCBzbyBjaG9vc2VzLg0KKyAgICAgKi8NCisgICAgdHJ1ZV9idWZmZXIgPSAoKmNpbmZvLT5tZW0tPmFsbG9jX3NhcnJheSkNCisgICAgICAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKyAgICAgICAoSkRJTUVOU0lPTikgKCgobG9uZykgY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzICogRENUU0laRSAqDQorCQkgICAgICBjaW5mby0+bWF4X2hfc2FtcF9mYWN0b3IpIC8gY29tcHB0ci0+aF9zYW1wX2ZhY3RvciksDQorICAgICAgIChKRElNRU5TSU9OKSAoMyAqIHJncm91cF9oZWlnaHQpKTsNCisgICAgLyogQ29weSB0cnVlIGJ1ZmZlciByb3cgcG9pbnRlcnMgaW50byB0aGUgbWlkZGxlIG9mIHRoZSBmYWtlIHJvdyBhcnJheSAqLw0KKyAgICBNRU1DT1BZKGZha2VfYnVmZmVyICsgcmdyb3VwX2hlaWdodCwgdHJ1ZV9idWZmZXIsDQorCSAgICAzICogcmdyb3VwX2hlaWdodCAqIFNJWkVPRihKU0FNUFJPVykpOw0KKyAgICAvKiBGaWxsIGluIHRoZSBhYm92ZSBhbmQgYmVsb3cgd3JhcGFyb3VuZCBwb2ludGVycyAqLw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgcmdyb3VwX2hlaWdodDsgaSsrKSB7DQorICAgICAgZmFrZV9idWZmZXJbaV0gPSB0cnVlX2J1ZmZlclsyICogcmdyb3VwX2hlaWdodCArIGldOw0KKyAgICAgIGZha2VfYnVmZmVyWzQgKiByZ3JvdXBfaGVpZ2h0ICsgaV0gPSB0cnVlX2J1ZmZlcltpXTsNCisgICAgfQ0KKyAgICBwcmVwLT5jb2xvcl9idWZbY2ldID0gZmFrZV9idWZmZXIgKyByZ3JvdXBfaGVpZ2h0Ow0KKyAgICBmYWtlX2J1ZmZlciArPSA1ICogcmdyb3VwX2hlaWdodDsgLyogcG9pbnQgdG8gc3BhY2UgZm9yIG5leHQgY29tcG9uZW50ICovDQorICB9DQorfQ0KKw0KKyNlbmRpZiAvKiBDT05URVhUX1JPV1NfU1VQUE9SVEVEICovDQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIHByZXByb2Nlc3NpbmcgY29udHJvbGxlci4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqaW5pdF9jX3ByZXBfY29udHJvbGxlciAoal9jb21wcmVzc19wdHIgY2luZm8sIGJvb2xlYW4gbmVlZF9mdWxsX2J1ZmZlcikNCit7DQorICBteV9wcmVwX3B0ciBwcmVwOw0KKyAgaW50IGNpOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHI7DQorDQorICBpZiAobmVlZF9mdWxsX2J1ZmZlcikJCS8qIHNhZmV0eSBjaGVjayAqLw0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9CVUZGRVJfTU9ERSk7DQorDQorICBwcmVwID0gKG15X3ByZXBfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQlTSVpFT0YobXlfcHJlcF9jb250cm9sbGVyKSk7DQorICBjaW5mby0+cHJlcCA9IChzdHJ1Y3QganBlZ19jX3ByZXBfY29udHJvbGxlciAqKSBwcmVwOw0KKyAgcHJlcC0+cHViLnN0YXJ0X3Bhc3MgPSBzdGFydF9wYXNzX3ByZXA7DQorDQorICAvKiBBbGxvY2F0ZSB0aGUgY29sb3IgY29udmVyc2lvbiBidWZmZXIuDQorICAgKiBXZSBtYWtlIHRoZSBidWZmZXIgd2lkZSBlbm91Z2ggdG8gYWxsb3cgdGhlIGRvd25zYW1wbGVyIHRvIGVkZ2UtZXhwYW5kDQorICAgKiBob3Jpem9udGFsbHkgd2l0aGluIHRoZSBidWZmZXIsIGlmIGl0IHNvIGNob29zZXMuDQorICAgKi8NCisgIGlmIChjaW5mby0+ZG93bnNhbXBsZS0+bmVlZF9jb250ZXh0X3Jvd3MpIHsNCisgICAgLyogU2V0IHVwIHRvIHByb3ZpZGUgY29udGV4dCByb3dzICovDQorI2lmZGVmIENPTlRFWFRfUk9XU19TVVBQT1JURUQNCisgICAgcHJlcC0+cHViLnByZV9wcm9jZXNzX2RhdGEgPSBwcmVfcHJvY2Vzc19jb250ZXh0Ow0KKyAgICBjcmVhdGVfY29udGV4dF9idWZmZXIoY2luZm8pOw0KKyNlbHNlDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfTk9UX0NPTVBJTEVEKTsNCisjZW5kaWYNCisgIH0gZWxzZSB7DQorICAgIC8qIE5vIGNvbnRleHQsIGp1c3QgbWFrZSBpdCB0YWxsIGVub3VnaCBmb3Igb25lIHJvdyBncm91cCAqLw0KKyAgICBwcmVwLT5wdWIucHJlX3Byb2Nlc3NfZGF0YSA9IHByZV9wcm9jZXNzX2RhdGE7DQorICAgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorCSBjaSsrLCBjb21wcHRyKyspIHsNCisgICAgICBwcmVwLT5jb2xvcl9idWZbY2ldID0gKCpjaW5mby0+bWVtLT5hbGxvY19zYXJyYXkpDQorCSgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCSAoSkRJTUVOU0lPTikgKCgobG9uZykgY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzICogRENUU0laRSAqDQorCQkJY2luZm8tPm1heF9oX3NhbXBfZmFjdG9yKSAvIGNvbXBwdHItPmhfc2FtcF9mYWN0b3IpLA0KKwkgKEpESU1FTlNJT04pIGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3Rvcik7DQorICAgIH0NCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamNzYW1wbGUuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjc2FtcGxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI1NmJkNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjc2FtcGxlLmMKQEAgLTAsMCArMSw1MjIgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqY3NhbXBsZS5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NiwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgZG93bnNhbXBsaW5nIHJvdXRpbmVzLg0KKyAqDQorICogRG93bnNhbXBsaW5nIGlucHV0IGRhdGEgaXMgY291bnRlZCBpbiAicm93IGdyb3VwcyIuICBBIHJvdyBncm91cA0KKyAqIGlzIGRlZmluZWQgdG8gYmUgbWF4X3Zfc2FtcF9mYWN0b3IgcGl4ZWwgcm93cyBvZiBlYWNoIGNvbXBvbmVudCwNCisgKiBmcm9tIHdoaWNoIHRoZSBkb3duc2FtcGxlciBwcm9kdWNlcyB2X3NhbXBfZmFjdG9yIHNhbXBsZSByb3dzLg0KKyAqIEEgc2luZ2xlIHJvdyBncm91cCBpcyBwcm9jZXNzZWQgaW4gZWFjaCBjYWxsIHRvIHRoZSBkb3duc2FtcGxlciBtb2R1bGUuDQorICoNCisgKiBUaGUgZG93bnNhbXBsZXIgaXMgcmVzcG9uc2libGUgZm9yIGVkZ2UtZXhwYW5zaW9uIG9mIGl0cyBvdXRwdXQgZGF0YQ0KKyAqIHRvIGZpbGwgYW4gaW50ZWdyYWwgbnVtYmVyIG9mIERDVCBibG9ja3MgaG9yaXpvbnRhbGx5LiAgVGhlIHNvdXJjZSBidWZmZXINCisgKiBtYXkgYmUgbW9kaWZpZWQgaWYgaXQgaXMgaGVscGZ1bCBmb3IgdGhpcyBwdXJwb3NlICh0aGUgc291cmNlIGJ1ZmZlciBpcw0KKyAqIGFsbG9jYXRlZCB3aWRlIGVub3VnaCB0byBjb3JyZXNwb25kIHRvIHRoZSBkZXNpcmVkIG91dHB1dCB3aWR0aCkuDQorICogVGhlIGNhbGxlciAodGhlIHByZXAgY29udHJvbGxlcikgaXMgcmVzcG9uc2libGUgZm9yIHZlcnRpY2FsIHBhZGRpbmcuDQorICoNCisgKiBUaGUgZG93bnNhbXBsZXIgbWF5IHJlcXVlc3QgImNvbnRleHQgcm93cyIgYnkgc2V0dGluZyBuZWVkX2NvbnRleHRfcm93cw0KKyAqIGR1cmluZyBzdGFydHVwLiAgSW4gdGhpcyBjYXNlLCB0aGUgaW5wdXQgYXJyYXlzIHdpbGwgY29udGFpbiBhdCBsZWFzdA0KKyAqIG9uZSByb3cgZ3JvdXAncyB3b3J0aCBvZiBwaXhlbHMgYWJvdmUgYW5kIGJlbG93IHRoZSBwYXNzZWQtaW4gZGF0YTsNCisgKiB0aGUgY2FsbGVyIHdpbGwgY3JlYXRlIGR1bW15IHJvd3MgYXQgaW1hZ2UgdG9wIGFuZCBib3R0b20gYnkgcmVwbGljYXRpbmcNCisgKiB0aGUgZmlyc3Qgb3IgbGFzdCByZWFsIHBpeGVsIHJvdy4NCisgKg0KKyAqIEFuIGV4Y2VsbGVudCByZWZlcmVuY2UgZm9yIGltYWdlIHJlc2FtcGxpbmcgaXMNCisgKiAgIERpZ2l0YWwgSW1hZ2UgV2FycGluZywgR2VvcmdlIFdvbGJlcmcsIDE5OTAuDQorICogICBQdWIuIGJ5IElFRUUgQ29tcHV0ZXIgU29jaWV0eSBQcmVzcywgTG9zIEFsYW1pdG9zLCBDQS4gSVNCTiAwLTgxODYtODk0NC03Lg0KKyAqDQorICogVGhlIGRvd25zYW1wbGluZyBhbGdvcml0aG0gdXNlZCBoZXJlIGlzIGEgc2ltcGxlIGF2ZXJhZ2Ugb2YgdGhlIHNvdXJjZQ0KKyAqIHBpeGVscyBjb3ZlcmVkIGJ5IHRoZSBvdXRwdXQgcGl4ZWwuICBUaGUgaGktZmFsdXRpbiBzYW1wbGluZyBsaXRlcmF0dXJlDQorICogcmVmZXJzIHRvIHRoaXMgYXMgYSAiYm94IGZpbHRlciIuICBJbiBnZW5lcmFsIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBib3gNCisgKiBmaWx0ZXIgYXJlIG5vdCB2ZXJ5IGdvb2QsIGJ1dCBmb3IgdGhlIHNwZWNpZmljIGNhc2VzIHdlIG5vcm1hbGx5IHVzZSAoMToxDQorICogYW5kIDI6MSByYXRpb3MpIHRoZSBib3ggaXMgZXF1aXZhbGVudCB0byBhICJ0cmlhbmdsZSBmaWx0ZXIiIHdoaWNoIGlzIG5vdA0KKyAqIG5lYXJseSBzbyBiYWQuICBJZiB5b3UgaW50ZW5kIHRvIHVzZSBvdGhlciBzYW1wbGluZyByYXRpb3MsIHlvdSdkIGJlIHdlbGwNCisgKiBhZHZpc2VkIHRvIGltcHJvdmUgdGhpcyBjb2RlLg0KKyAqDQorICogQSBzaW1wbGUgaW5wdXQtc21vb3RoaW5nIGNhcGFiaWxpdHkgaXMgcHJvdmlkZWQuICBUaGlzIGlzIG1haW5seSBpbnRlbmRlZA0KKyAqIGZvciBjbGVhbmluZyB1cCBjb2xvci1kaXRoZXJlZCBHSUYgaW5wdXQgZmlsZXMgKGlmIHlvdSBmaW5kIGl0IGluYWRlcXVhdGUsDQorICogd2Ugc3VnZ2VzdCB1c2luZyBhbiBleHRlcm5hbCBmaWx0ZXJpbmcgcHJvZ3JhbSBzdWNoIGFzIHBubWNvbnZvbCkuICBXaGVuDQorICogZW5hYmxlZCwgZWFjaCBpbnB1dCBwaXhlbCBQIGlzIHJlcGxhY2VkIGJ5IGEgd2VpZ2h0ZWQgc3VtIG9mIGl0c2VsZiBhbmQgaXRzDQorICogZWlnaHQgbmVpZ2hib3JzLiAgUCdzIHdlaWdodCBpcyAxLTgqU0YgYW5kIGVhY2ggbmVpZ2hib3IncyB3ZWlnaHQgaXMgU0YsDQorICogd2hlcmUgU0YgPSAoc21vb3RoaW5nX2ZhY3RvciAvIDEwMjQpLg0KKyAqIEN1cnJlbnRseSwgc21vb3RoaW5nIGlzIG9ubHkgc3VwcG9ydGVkIGZvciAyaDJ2IHNhbXBsaW5nIGZhY3RvcnMuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQorLyogUG9pbnRlciB0byByb3V0aW5lIHRvIGRvd25zYW1wbGUgYSBzaW5nbGUgY29tcG9uZW50ICovDQordHlwZWRlZiBKTUVUSE9EKHZvaWQsIGRvd25zYW1wbGUxX3B0ciwNCisJCShqX2NvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCQkgSlNBTVBBUlJBWSBpbnB1dF9kYXRhLCBKU0FNUEFSUkFZIG91dHB1dF9kYXRhKSk7DQorDQorLyogUHJpdmF0ZSBzdWJvYmplY3QgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBzdHJ1Y3QganBlZ19kb3duc2FtcGxlciBwdWI7CS8qIHB1YmxpYyBmaWVsZHMgKi8NCisNCisgIC8qIERvd25zYW1wbGluZyBtZXRob2QgcG9pbnRlcnMsIG9uZSBwZXIgY29tcG9uZW50ICovDQorICBkb3duc2FtcGxlMV9wdHIgbWV0aG9kc1tNQVhfQ09NUE9ORU5UU107DQorfSBteV9kb3duc2FtcGxlcjsNCisNCit0eXBlZGVmIG15X2Rvd25zYW1wbGVyICogbXlfZG93bnNhbXBsZV9wdHI7DQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIGZvciBhIGRvd25zYW1wbGluZyBwYXNzLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3N0YXJ0X3Bhc3NfZG93bnNhbXBsZSAoal9jb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgLyogbm8gd29yayBmb3Igbm93ICovDQorfQ0KKw0KKw0KKy8qDQorICogRXhwYW5kIGEgY29tcG9uZW50IGhvcml6b250YWxseSBmcm9tIHdpZHRoIGlucHV0X2NvbHMgdG8gd2lkdGggb3V0cHV0X2NvbHMsDQorICogYnkgZHVwbGljYXRpbmcgdGhlIHJpZ2h0bW9zdCBzYW1wbGVzLg0KKyAqLw0KKw0KK0xPQ0FMKHZvaWQpDQorZXhwYW5kX3JpZ2h0X2VkZ2UgKEpTQU1QQVJSQVkgaW1hZ2VfZGF0YSwgaW50IG51bV9yb3dzLA0KKwkJICAgSkRJTUVOU0lPTiBpbnB1dF9jb2xzLCBKRElNRU5TSU9OIG91dHB1dF9jb2xzKQ0KK3sNCisgIHJlZ2lzdGVyIEpTQU1QUk9XIHB0cjsNCisgIHJlZ2lzdGVyIEpTQU1QTEUgcGl4dmFsOw0KKyAgcmVnaXN0ZXIgaW50IGNvdW50Ow0KKyAgaW50IHJvdzsNCisgIGludCBudW1jb2xzID0gKGludCkgKG91dHB1dF9jb2xzIC0gaW5wdXRfY29scyk7DQorDQorICBpZiAobnVtY29scyA+IDApIHsNCisgICAgZm9yIChyb3cgPSAwOyByb3cgPCBudW1fcm93czsgcm93KyspIHsNCisgICAgICBwdHIgPSBpbWFnZV9kYXRhW3Jvd10gKyBpbnB1dF9jb2xzOw0KKyAgICAgIHBpeHZhbCA9IHB0clstMV07CQkvKiBkb24ndCBuZWVkIEdFVEpTQU1QTEUoKSBoZXJlICovDQorICAgICAgZm9yIChjb3VudCA9IG51bWNvbHM7IGNvdW50ID4gMDsgY291bnQtLSkNCisJKnB0cisrID0gcGl4dmFsOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogRG8gZG93bnNhbXBsaW5nIGZvciBhIHdob2xlIHJvdyBncm91cCAoYWxsIGNvbXBvbmVudHMpLg0KKyAqDQorICogSW4gdGhpcyB2ZXJzaW9uIHdlIHNpbXBseSBkb3duc2FtcGxlIGVhY2ggY29tcG9uZW50IGluZGVwZW5kZW50bHkuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc2VwX2Rvd25zYW1wbGUgKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJSlNBTVBJTUFHRSBpbnB1dF9idWYsIEpESU1FTlNJT04gaW5fcm93X2luZGV4LA0KKwkJSlNBTVBJTUFHRSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OIG91dF9yb3dfZ3JvdXBfaW5kZXgpDQorew0KKyAgbXlfZG93bnNhbXBsZV9wdHIgZG93bnNhbXBsZSA9IChteV9kb3duc2FtcGxlX3B0cikgY2luZm8tPmRvd25zYW1wbGU7DQorICBpbnQgY2k7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisgIEpTQU1QQVJSQVkgaW5fcHRyLCBvdXRfcHRyOw0KKw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIGluX3B0ciA9IGlucHV0X2J1ZltjaV0gKyBpbl9yb3dfaW5kZXg7DQorICAgIG91dF9wdHIgPSBvdXRwdXRfYnVmW2NpXSArIChvdXRfcm93X2dyb3VwX2luZGV4ICogY29tcHB0ci0+dl9zYW1wX2ZhY3Rvcik7DQorICAgICgqZG93bnNhbXBsZS0+bWV0aG9kc1tjaV0pIChjaW5mbywgY29tcHB0ciwgaW5fcHRyLCBvdXRfcHRyKTsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBEb3duc2FtcGxlIHBpeGVsIHZhbHVlcyBvZiBhIHNpbmdsZSBjb21wb25lbnQuDQorICogT25lIHJvdyBncm91cCBpcyBwcm9jZXNzZWQgcGVyIGNhbGwuDQorICogVGhpcyB2ZXJzaW9uIGhhbmRsZXMgYXJiaXRyYXJ5IGludGVncmFsIHNhbXBsaW5nIHJhdGlvcywgd2l0aG91dCBzbW9vdGhpbmcuDQorICogTm90ZSB0aGF0IHRoaXMgdmVyc2lvbiBpcyBub3QgYWN0dWFsbHkgdXNlZCBmb3IgY3VzdG9tYXJ5IHNhbXBsaW5nIHJhdGlvcy4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitpbnRfZG93bnNhbXBsZSAoal9jb21wcmVzc19wdHIgY2luZm8sIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyLA0KKwkJSlNBTVBBUlJBWSBpbnB1dF9kYXRhLCBKU0FNUEFSUkFZIG91dHB1dF9kYXRhKQ0KK3sNCisgIGludCBpbnJvdywgb3V0cm93LCBoX2V4cGFuZCwgdl9leHBhbmQsIG51bXBpeCwgbnVtcGl4MiwgaCwgdjsNCisgIEpESU1FTlNJT04gb3V0Y29sLCBvdXRjb2xfaDsJLyogb3V0Y29sX2ggPT0gb3V0Y29sKmhfZXhwYW5kICovDQorICBKRElNRU5TSU9OIG91dHB1dF9jb2xzID0gY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzICogRENUU0laRTsNCisgIEpTQU1QUk9XIGlucHRyLCBvdXRwdHI7DQorICBJTlQzMiBvdXR2YWx1ZTsNCisNCisgIGhfZXhwYW5kID0gY2luZm8tPm1heF9oX3NhbXBfZmFjdG9yIC8gY29tcHB0ci0+aF9zYW1wX2ZhY3RvcjsNCisgIHZfZXhwYW5kID0gY2luZm8tPm1heF92X3NhbXBfZmFjdG9yIC8gY29tcHB0ci0+dl9zYW1wX2ZhY3RvcjsNCisgIG51bXBpeCA9IGhfZXhwYW5kICogdl9leHBhbmQ7DQorICBudW1waXgyID0gbnVtcGl4LzI7DQorDQorICAvKiBFeHBhbmQgaW5wdXQgZGF0YSBlbm91Z2ggdG8gbGV0IGFsbCB0aGUgb3V0cHV0IHNhbXBsZXMgYmUgZ2VuZXJhdGVkDQorICAgKiBieSB0aGUgc3RhbmRhcmQgbG9vcC4gIFNwZWNpYWwtY2FzaW5nIHBhZGRlZCBvdXRwdXQgd291bGQgYmUgbW9yZQ0KKyAgICogZWZmaWNpZW50Lg0KKyAgICovDQorICBleHBhbmRfcmlnaHRfZWRnZShpbnB1dF9kYXRhLCBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IsDQorCQkgICAgY2luZm8tPmltYWdlX3dpZHRoLCBvdXRwdXRfY29scyAqIGhfZXhwYW5kKTsNCisNCisgIGlucm93ID0gMDsNCisgIGZvciAob3V0cm93ID0gMDsgb3V0cm93IDwgY29tcHB0ci0+dl9zYW1wX2ZhY3Rvcjsgb3V0cm93KyspIHsNCisgICAgb3V0cHRyID0gb3V0cHV0X2RhdGFbb3V0cm93XTsNCisgICAgZm9yIChvdXRjb2wgPSAwLCBvdXRjb2xfaCA9IDA7IG91dGNvbCA8IG91dHB1dF9jb2xzOw0KKwkgb3V0Y29sKyssIG91dGNvbF9oICs9IGhfZXhwYW5kKSB7DQorICAgICAgb3V0dmFsdWUgPSAwOw0KKyAgICAgIGZvciAodiA9IDA7IHYgPCB2X2V4cGFuZDsgdisrKSB7DQorCWlucHRyID0gaW5wdXRfZGF0YVtpbnJvdyt2XSArIG91dGNvbF9oOw0KKwlmb3IgKGggPSAwOyBoIDwgaF9leHBhbmQ7IGgrKykgew0KKwkgIG91dHZhbHVlICs9IChJTlQzMikgR0VUSlNBTVBMRSgqaW5wdHIrKyk7DQorCX0NCisgICAgICB9DQorICAgICAgKm91dHB0cisrID0gKEpTQU1QTEUpICgob3V0dmFsdWUgKyBudW1waXgyKSAvIG51bXBpeCk7DQorICAgIH0NCisgICAgaW5yb3cgKz0gdl9leHBhbmQ7DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogRG93bnNhbXBsZSBwaXhlbCB2YWx1ZXMgb2YgYSBzaW5nbGUgY29tcG9uZW50Lg0KKyAqIFRoaXMgdmVyc2lvbiBoYW5kbGVzIHRoZSBzcGVjaWFsIGNhc2Ugb2YgYSBmdWxsLXNpemUgY29tcG9uZW50LA0KKyAqIHdpdGhvdXQgc21vb3RoaW5nLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2Z1bGxzaXplX2Rvd25zYW1wbGUgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0ciwNCisJCSAgICAgSlNBTVBBUlJBWSBpbnB1dF9kYXRhLCBKU0FNUEFSUkFZIG91dHB1dF9kYXRhKQ0KK3sNCisgIC8qIENvcHkgdGhlIGRhdGEgKi8NCisgIGpjb3B5X3NhbXBsZV9yb3dzKGlucHV0X2RhdGEsIDAsIG91dHB1dF9kYXRhLCAwLA0KKwkJICAgIGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvciwgY2luZm8tPmltYWdlX3dpZHRoKTsNCisgIC8qIEVkZ2UtZXhwYW5kICovDQorICBleHBhbmRfcmlnaHRfZWRnZShvdXRwdXRfZGF0YSwgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yLA0KKwkJICAgIGNpbmZvLT5pbWFnZV93aWR0aCwgY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzICogRENUU0laRSk7DQorfQ0KKw0KKw0KKy8qDQorICogRG93bnNhbXBsZSBwaXhlbCB2YWx1ZXMgb2YgYSBzaW5nbGUgY29tcG9uZW50Lg0KKyAqIFRoaXMgdmVyc2lvbiBoYW5kbGVzIHRoZSBjb21tb24gY2FzZSBvZiAyOjEgaG9yaXpvbnRhbCBhbmQgMToxIHZlcnRpY2FsLA0KKyAqIHdpdGhvdXQgc21vb3RoaW5nLg0KKyAqDQorICogQSBub3RlIGFib3V0IHRoZSAiYmlhcyIgY2FsY3VsYXRpb25zOiB3aGVuIHJvdW5kaW5nIGZyYWN0aW9uYWwgdmFsdWVzIHRvDQorICogaW50ZWdlciwgd2UgZG8gbm90IHdhbnQgdG8gYWx3YXlzIHJvdW5kIDAuNSB1cCB0byB0aGUgbmV4dCBpbnRlZ2VyLg0KKyAqIElmIHdlIGRpZCB0aGF0LCB3ZSdkIGludHJvZHVjZSBhIG5vdGljZWFibGUgYmlhcyB0b3dhcmRzIGxhcmdlciB2YWx1ZXMuDQorICogSW5zdGVhZCwgdGhpcyBjb2RlIGlzIGFycmFuZ2VkIHNvIHRoYXQgMC41IHdpbGwgYmUgcm91bmRlZCB1cCBvciBkb3duIGF0DQorICogYWx0ZXJuYXRlIHBpeGVsIGxvY2F0aW9ucyAoYSBzaW1wbGUgb3JkZXJlZCBkaXRoZXIgcGF0dGVybikuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQoraDJ2MV9kb3duc2FtcGxlIChqX2NvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCQkgSlNBTVBBUlJBWSBpbnB1dF9kYXRhLCBKU0FNUEFSUkFZIG91dHB1dF9kYXRhKQ0KK3sNCisgIGludCBvdXRyb3c7DQorICBKRElNRU5TSU9OIG91dGNvbDsNCisgIEpESU1FTlNJT04gb3V0cHV0X2NvbHMgPSBjb21wcHRyLT53aWR0aF9pbl9ibG9ja3MgKiBEQ1RTSVpFOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgaW5wdHIsIG91dHB0cjsNCisgIHJlZ2lzdGVyIGludCBiaWFzOw0KKw0KKyAgLyogRXhwYW5kIGlucHV0IGRhdGEgZW5vdWdoIHRvIGxldCBhbGwgdGhlIG91dHB1dCBzYW1wbGVzIGJlIGdlbmVyYXRlZA0KKyAgICogYnkgdGhlIHN0YW5kYXJkIGxvb3AuICBTcGVjaWFsLWNhc2luZyBwYWRkZWQgb3V0cHV0IHdvdWxkIGJlIG1vcmUNCisgICAqIGVmZmljaWVudC4NCisgICAqLw0KKyAgZXhwYW5kX3JpZ2h0X2VkZ2UoaW5wdXRfZGF0YSwgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yLA0KKwkJICAgIGNpbmZvLT5pbWFnZV93aWR0aCwgb3V0cHV0X2NvbHMgKiAyKTsNCisNCisgIGZvciAob3V0cm93ID0gMDsgb3V0cm93IDwgY29tcHB0ci0+dl9zYW1wX2ZhY3Rvcjsgb3V0cm93KyspIHsNCisgICAgb3V0cHRyID0gb3V0cHV0X2RhdGFbb3V0cm93XTsNCisgICAgaW5wdHIgPSBpbnB1dF9kYXRhW291dHJvd107DQorICAgIGJpYXMgPSAwOwkJCS8qIGJpYXMgPSAwLDEsMCwxLC4uLiBmb3Igc3VjY2Vzc2l2ZSBzYW1wbGVzICovDQorICAgIGZvciAob3V0Y29sID0gMDsgb3V0Y29sIDwgb3V0cHV0X2NvbHM7IG91dGNvbCsrKSB7DQorICAgICAgKm91dHB0cisrID0gKEpTQU1QTEUpICgoR0VUSlNBTVBMRSgqaW5wdHIpICsgR0VUSlNBTVBMRShpbnB0clsxXSkNCisJCQkgICAgICArIGJpYXMpID4+IDEpOw0KKyAgICAgIGJpYXMgXj0gMTsJCS8qIDA9PjEsIDE9PjAgKi8NCisgICAgICBpbnB0ciArPSAyOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogRG93bnNhbXBsZSBwaXhlbCB2YWx1ZXMgb2YgYSBzaW5nbGUgY29tcG9uZW50Lg0KKyAqIFRoaXMgdmVyc2lvbiBoYW5kbGVzIHRoZSBzdGFuZGFyZCBjYXNlIG9mIDI6MSBob3Jpem9udGFsIGFuZCAyOjEgdmVydGljYWwsDQorICogd2l0aG91dCBzbW9vdGhpbmcuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQoraDJ2Ml9kb3duc2FtcGxlIChqX2NvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCQkgSlNBTVBBUlJBWSBpbnB1dF9kYXRhLCBKU0FNUEFSUkFZIG91dHB1dF9kYXRhKQ0KK3sNCisgIGludCBpbnJvdywgb3V0cm93Ow0KKyAgSkRJTUVOU0lPTiBvdXRjb2w7DQorICBKRElNRU5TSU9OIG91dHB1dF9jb2xzID0gY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzICogRENUU0laRTsNCisgIHJlZ2lzdGVyIEpTQU1QUk9XIGlucHRyMCwgaW5wdHIxLCBvdXRwdHI7DQorICByZWdpc3RlciBpbnQgYmlhczsNCisNCisgIC8qIEV4cGFuZCBpbnB1dCBkYXRhIGVub3VnaCB0byBsZXQgYWxsIHRoZSBvdXRwdXQgc2FtcGxlcyBiZSBnZW5lcmF0ZWQNCisgICAqIGJ5IHRoZSBzdGFuZGFyZCBsb29wLiAgU3BlY2lhbC1jYXNpbmcgcGFkZGVkIG91dHB1dCB3b3VsZCBiZSBtb3JlDQorICAgKiBlZmZpY2llbnQuDQorICAgKi8NCisgIGV4cGFuZF9yaWdodF9lZGdlKGlucHV0X2RhdGEsIGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvciwNCisJCSAgICBjaW5mby0+aW1hZ2Vfd2lkdGgsIG91dHB1dF9jb2xzICogMik7DQorDQorICBpbnJvdyA9IDA7DQorICBmb3IgKG91dHJvdyA9IDA7IG91dHJvdyA8IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7IG91dHJvdysrKSB7DQorICAgIG91dHB0ciA9IG91dHB1dF9kYXRhW291dHJvd107DQorICAgIGlucHRyMCA9IGlucHV0X2RhdGFbaW5yb3ddOw0KKyAgICBpbnB0cjEgPSBpbnB1dF9kYXRhW2lucm93KzFdOw0KKyAgICBiaWFzID0gMTsJCQkvKiBiaWFzID0gMSwyLDEsMiwuLi4gZm9yIHN1Y2Nlc3NpdmUgc2FtcGxlcyAqLw0KKyAgICBmb3IgKG91dGNvbCA9IDA7IG91dGNvbCA8IG91dHB1dF9jb2xzOyBvdXRjb2wrKykgew0KKyAgICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSAoKEdFVEpTQU1QTEUoKmlucHRyMCkgKyBHRVRKU0FNUExFKGlucHRyMFsxXSkgKw0KKwkJCSAgICAgIEdFVEpTQU1QTEUoKmlucHRyMSkgKyBHRVRKU0FNUExFKGlucHRyMVsxXSkNCisJCQkgICAgICArIGJpYXMpID4+IDIpOw0KKyAgICAgIGJpYXMgXj0gMzsJCS8qIDE9PjIsIDI9PjEgKi8NCisgICAgICBpbnB0cjAgKz0gMjsgaW5wdHIxICs9IDI7DQorICAgIH0NCisgICAgaW5yb3cgKz0gMjsNCisgIH0NCit9DQorDQorDQorI2lmZGVmIElOUFVUX1NNT09USElOR19TVVBQT1JURUQNCisNCisvKg0KKyAqIERvd25zYW1wbGUgcGl4ZWwgdmFsdWVzIG9mIGEgc2luZ2xlIGNvbXBvbmVudC4NCisgKiBUaGlzIHZlcnNpb24gaGFuZGxlcyB0aGUgc3RhbmRhcmQgY2FzZSBvZiAyOjEgaG9yaXpvbnRhbCBhbmQgMjoxIHZlcnRpY2FsLA0KKyAqIHdpdGggc21vb3RoaW5nLiAgT25lIHJvdyBvZiBjb250ZXh0IGlzIHJlcXVpcmVkLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2gydjJfc21vb3RoX2Rvd25zYW1wbGUgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0ciwNCisJCQlKU0FNUEFSUkFZIGlucHV0X2RhdGEsIEpTQU1QQVJSQVkgb3V0cHV0X2RhdGEpDQorew0KKyAgaW50IGlucm93LCBvdXRyb3c7DQorICBKRElNRU5TSU9OIGNvbGN0cjsNCisgIEpESU1FTlNJT04gb3V0cHV0X2NvbHMgPSBjb21wcHRyLT53aWR0aF9pbl9ibG9ja3MgKiBEQ1RTSVpFOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgaW5wdHIwLCBpbnB0cjEsIGFib3ZlX3B0ciwgYmVsb3dfcHRyLCBvdXRwdHI7DQorICBJTlQzMiBtZW1iZXJzdW0sIG5laWdoc3VtLCBtZW1iZXJzY2FsZSwgbmVpZ2hzY2FsZTsNCisNCisgIC8qIEV4cGFuZCBpbnB1dCBkYXRhIGVub3VnaCB0byBsZXQgYWxsIHRoZSBvdXRwdXQgc2FtcGxlcyBiZSBnZW5lcmF0ZWQNCisgICAqIGJ5IHRoZSBzdGFuZGFyZCBsb29wLiAgU3BlY2lhbC1jYXNpbmcgcGFkZGVkIG91dHB1dCB3b3VsZCBiZSBtb3JlDQorICAgKiBlZmZpY2llbnQuDQorICAgKi8NCisgIGV4cGFuZF9yaWdodF9lZGdlKGlucHV0X2RhdGEgLSAxLCBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IgKyAyLA0KKwkJICAgIGNpbmZvLT5pbWFnZV93aWR0aCwgb3V0cHV0X2NvbHMgKiAyKTsNCisNCisgIC8qIFdlIGRvbid0IGJvdGhlciB0byBmb3JtIHRoZSBpbmRpdmlkdWFsICJzbW9vdGhlZCIgaW5wdXQgcGl4ZWwgdmFsdWVzOw0KKyAgICogd2UgY2FuIGRpcmVjdGx5IGNvbXB1dGUgdGhlIG91dHB1dCB3aGljaCBpcyB0aGUgYXZlcmFnZSBvZiB0aGUgZm91cg0KKyAgICogc21vb3RoZWQgdmFsdWVzLiAgRWFjaCBvZiB0aGUgZm91ciBtZW1iZXIgcGl4ZWxzIGNvbnRyaWJ1dGVzIGEgZnJhY3Rpb24NCisgICAqICgxLTgqU0YpIHRvIGl0cyBvd24gc21vb3RoZWQgaW1hZ2UgYW5kIGEgZnJhY3Rpb24gU0YgdG8gZWFjaCBvZiB0aGUgdGhyZWUNCisgICAqIG90aGVyIHNtb290aGVkIHBpeGVscywgdGhlcmVmb3JlIGEgdG90YWwgZnJhY3Rpb24gKDEtNSpTRikvNCB0byB0aGUgZmluYWwNCisgICAqIG91dHB1dC4gIFRoZSBmb3VyIGNvcm5lci1hZGphY2VudCBuZWlnaGJvciBwaXhlbHMgY29udHJpYnV0ZSBhIGZyYWN0aW9uDQorICAgKiBTRiB0byBqdXN0IG9uZSBzbW9vdGhlZCBwaXhlbCwgb3IgU0YvNCB0byB0aGUgZmluYWwgb3V0cHV0OyB3aGlsZSB0aGUNCisgICAqIGVpZ2h0IGVkZ2UtYWRqYWNlbnQgbmVpZ2hib3JzIGNvbnRyaWJ1dGUgU0YgdG8gZWFjaCBvZiB0d28gc21vb3RoZWQNCisgICAqIHBpeGVscywgb3IgU0YvMiBvdmVyYWxsLiAgSW4gb3JkZXIgdG8gdXNlIGludGVnZXIgYXJpdGhtZXRpYywgdGhlc2UNCisgICAqIGZhY3RvcnMgYXJlIHNjYWxlZCBieSAyXjE2ID0gNjU1MzYuDQorICAgKiBBbHNvIHJlY2FsbCB0aGF0IFNGID0gc21vb3RoaW5nX2ZhY3RvciAvIDEwMjQuDQorICAgKi8NCisNCisgIG1lbWJlcnNjYWxlID0gMTYzODQgLSBjaW5mby0+c21vb3RoaW5nX2ZhY3RvciAqIDgwOyAvKiBzY2FsZWQgKDEtNSpTRikvNCAqLw0KKyAgbmVpZ2hzY2FsZSA9IGNpbmZvLT5zbW9vdGhpbmdfZmFjdG9yICogMTY7IC8qIHNjYWxlZCBTRi80ICovDQorDQorICBpbnJvdyA9IDA7DQorICBmb3IgKG91dHJvdyA9IDA7IG91dHJvdyA8IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7IG91dHJvdysrKSB7DQorICAgIG91dHB0ciA9IG91dHB1dF9kYXRhW291dHJvd107DQorICAgIGlucHRyMCA9IGlucHV0X2RhdGFbaW5yb3ddOw0KKyAgICBpbnB0cjEgPSBpbnB1dF9kYXRhW2lucm93KzFdOw0KKyAgICBhYm92ZV9wdHIgPSBpbnB1dF9kYXRhW2lucm93LTFdOw0KKyAgICBiZWxvd19wdHIgPSBpbnB1dF9kYXRhW2lucm93KzJdOw0KKw0KKyAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGZpcnN0IGNvbHVtbjogcHJldGVuZCBjb2x1bW4gLTEgaXMgc2FtZSBhcyBjb2x1bW4gMCAqLw0KKyAgICBtZW1iZXJzdW0gPSBHRVRKU0FNUExFKCppbnB0cjApICsgR0VUSlNBTVBMRShpbnB0cjBbMV0pICsNCisJCUdFVEpTQU1QTEUoKmlucHRyMSkgKyBHRVRKU0FNUExFKGlucHRyMVsxXSk7DQorICAgIG5laWdoc3VtID0gR0VUSlNBTVBMRSgqYWJvdmVfcHRyKSArIEdFVEpTQU1QTEUoYWJvdmVfcHRyWzFdKSArDQorCSAgICAgICBHRVRKU0FNUExFKCpiZWxvd19wdHIpICsgR0VUSlNBTVBMRShiZWxvd19wdHJbMV0pICsNCisJICAgICAgIEdFVEpTQU1QTEUoKmlucHRyMCkgKyBHRVRKU0FNUExFKGlucHRyMFsyXSkgKw0KKwkgICAgICAgR0VUSlNBTVBMRSgqaW5wdHIxKSArIEdFVEpTQU1QTEUoaW5wdHIxWzJdKTsNCisgICAgbmVpZ2hzdW0gKz0gbmVpZ2hzdW07DQorICAgIG5laWdoc3VtICs9IEdFVEpTQU1QTEUoKmFib3ZlX3B0cikgKyBHRVRKU0FNUExFKGFib3ZlX3B0clsyXSkgKw0KKwkJR0VUSlNBTVBMRSgqYmVsb3dfcHRyKSArIEdFVEpTQU1QTEUoYmVsb3dfcHRyWzJdKTsNCisgICAgbWVtYmVyc3VtID0gbWVtYmVyc3VtICogbWVtYmVyc2NhbGUgKyBuZWlnaHN1bSAqIG5laWdoc2NhbGU7DQorICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSAoKG1lbWJlcnN1bSArIDMyNzY4KSA+PiAxNik7DQorICAgIGlucHRyMCArPSAyOyBpbnB0cjEgKz0gMjsgYWJvdmVfcHRyICs9IDI7IGJlbG93X3B0ciArPSAyOw0KKw0KKyAgICBmb3IgKGNvbGN0ciA9IG91dHB1dF9jb2xzIC0gMjsgY29sY3RyID4gMDsgY29sY3RyLS0pIHsNCisgICAgICAvKiBzdW0gb2YgcGl4ZWxzIGRpcmVjdGx5IG1hcHBlZCB0byB0aGlzIG91dHB1dCBlbGVtZW50ICovDQorICAgICAgbWVtYmVyc3VtID0gR0VUSlNBTVBMRSgqaW5wdHIwKSArIEdFVEpTQU1QTEUoaW5wdHIwWzFdKSArDQorCQkgIEdFVEpTQU1QTEUoKmlucHRyMSkgKyBHRVRKU0FNUExFKGlucHRyMVsxXSk7DQorICAgICAgLyogc3VtIG9mIGVkZ2UtbmVpZ2hib3IgcGl4ZWxzICovDQorICAgICAgbmVpZ2hzdW0gPSBHRVRKU0FNUExFKCphYm92ZV9wdHIpICsgR0VUSlNBTVBMRShhYm92ZV9wdHJbMV0pICsNCisJCSBHRVRKU0FNUExFKCpiZWxvd19wdHIpICsgR0VUSlNBTVBMRShiZWxvd19wdHJbMV0pICsNCisJCSBHRVRKU0FNUExFKGlucHRyMFstMV0pICsgR0VUSlNBTVBMRShpbnB0cjBbMl0pICsNCisJCSBHRVRKU0FNUExFKGlucHRyMVstMV0pICsgR0VUSlNBTVBMRShpbnB0cjFbMl0pOw0KKyAgICAgIC8qIFRoZSBlZGdlLW5laWdoYm9ycyBjb3VudCB0d2ljZSBhcyBtdWNoIGFzIGNvcm5lci1uZWlnaGJvcnMgKi8NCisgICAgICBuZWlnaHN1bSArPSBuZWlnaHN1bTsNCisgICAgICAvKiBBZGQgaW4gdGhlIGNvcm5lci1uZWlnaGJvcnMgKi8NCisgICAgICBuZWlnaHN1bSArPSBHRVRKU0FNUExFKGFib3ZlX3B0clstMV0pICsgR0VUSlNBTVBMRShhYm92ZV9wdHJbMl0pICsNCisJCSAgR0VUSlNBTVBMRShiZWxvd19wdHJbLTFdKSArIEdFVEpTQU1QTEUoYmVsb3dfcHRyWzJdKTsNCisgICAgICAvKiBmb3JtIGZpbmFsIG91dHB1dCBzY2FsZWQgdXAgYnkgMl4xNiAqLw0KKyAgICAgIG1lbWJlcnN1bSA9IG1lbWJlcnN1bSAqIG1lbWJlcnNjYWxlICsgbmVpZ2hzdW0gKiBuZWlnaHNjYWxlOw0KKyAgICAgIC8qIHJvdW5kLCBkZXNjYWxlIGFuZCBvdXRwdXQgaXQgKi8NCisgICAgICAqb3V0cHRyKysgPSAoSlNBTVBMRSkgKChtZW1iZXJzdW0gKyAzMjc2OCkgPj4gMTYpOw0KKyAgICAgIGlucHRyMCArPSAyOyBpbnB0cjEgKz0gMjsgYWJvdmVfcHRyICs9IDI7IGJlbG93X3B0ciArPSAyOw0KKyAgICB9DQorDQorICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgbGFzdCBjb2x1bW4gKi8NCisgICAgbWVtYmVyc3VtID0gR0VUSlNBTVBMRSgqaW5wdHIwKSArIEdFVEpTQU1QTEUoaW5wdHIwWzFdKSArDQorCQlHRVRKU0FNUExFKCppbnB0cjEpICsgR0VUSlNBTVBMRShpbnB0cjFbMV0pOw0KKyAgICBuZWlnaHN1bSA9IEdFVEpTQU1QTEUoKmFib3ZlX3B0cikgKyBHRVRKU0FNUExFKGFib3ZlX3B0clsxXSkgKw0KKwkgICAgICAgR0VUSlNBTVBMRSgqYmVsb3dfcHRyKSArIEdFVEpTQU1QTEUoYmVsb3dfcHRyWzFdKSArDQorCSAgICAgICBHRVRKU0FNUExFKGlucHRyMFstMV0pICsgR0VUSlNBTVBMRShpbnB0cjBbMV0pICsNCisJICAgICAgIEdFVEpTQU1QTEUoaW5wdHIxWy0xXSkgKyBHRVRKU0FNUExFKGlucHRyMVsxXSk7DQorICAgIG5laWdoc3VtICs9IG5laWdoc3VtOw0KKyAgICBuZWlnaHN1bSArPSBHRVRKU0FNUExFKGFib3ZlX3B0clstMV0pICsgR0VUSlNBTVBMRShhYm92ZV9wdHJbMV0pICsNCisJCUdFVEpTQU1QTEUoYmVsb3dfcHRyWy0xXSkgKyBHRVRKU0FNUExFKGJlbG93X3B0clsxXSk7DQorICAgIG1lbWJlcnN1bSA9IG1lbWJlcnN1bSAqIG1lbWJlcnNjYWxlICsgbmVpZ2hzdW0gKiBuZWlnaHNjYWxlOw0KKyAgICAqb3V0cHRyID0gKEpTQU1QTEUpICgobWVtYmVyc3VtICsgMzI3NjgpID4+IDE2KTsNCisNCisgICAgaW5yb3cgKz0gMjsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBEb3duc2FtcGxlIHBpeGVsIHZhbHVlcyBvZiBhIHNpbmdsZSBjb21wb25lbnQuDQorICogVGhpcyB2ZXJzaW9uIGhhbmRsZXMgdGhlIHNwZWNpYWwgY2FzZSBvZiBhIGZ1bGwtc2l6ZSBjb21wb25lbnQsDQorICogd2l0aCBzbW9vdGhpbmcuICBPbmUgcm93IG9mIGNvbnRleHQgaXMgcmVxdWlyZWQuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorZnVsbHNpemVfc21vb3RoX2Rvd25zYW1wbGUgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyLA0KKwkJCSAgICBKU0FNUEFSUkFZIGlucHV0X2RhdGEsIEpTQU1QQVJSQVkgb3V0cHV0X2RhdGEpDQorew0KKyAgaW50IG91dHJvdzsNCisgIEpESU1FTlNJT04gY29sY3RyOw0KKyAgSkRJTUVOU0lPTiBvdXRwdXRfY29scyA9IGNvbXBwdHItPndpZHRoX2luX2Jsb2NrcyAqIERDVFNJWkU7DQorICByZWdpc3RlciBKU0FNUFJPVyBpbnB0ciwgYWJvdmVfcHRyLCBiZWxvd19wdHIsIG91dHB0cjsNCisgIElOVDMyIG1lbWJlcnN1bSwgbmVpZ2hzdW0sIG1lbWJlcnNjYWxlLCBuZWlnaHNjYWxlOw0KKyAgaW50IGNvbHN1bSwgbGFzdGNvbHN1bSwgbmV4dGNvbHN1bTsNCisNCisgIC8qIEV4cGFuZCBpbnB1dCBkYXRhIGVub3VnaCB0byBsZXQgYWxsIHRoZSBvdXRwdXQgc2FtcGxlcyBiZSBnZW5lcmF0ZWQNCisgICAqIGJ5IHRoZSBzdGFuZGFyZCBsb29wLiAgU3BlY2lhbC1jYXNpbmcgcGFkZGVkIG91dHB1dCB3b3VsZCBiZSBtb3JlDQorICAgKiBlZmZpY2llbnQuDQorICAgKi8NCisgIGV4cGFuZF9yaWdodF9lZGdlKGlucHV0X2RhdGEgLSAxLCBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IgKyAyLA0KKwkJICAgIGNpbmZvLT5pbWFnZV93aWR0aCwgb3V0cHV0X2NvbHMpOw0KKw0KKyAgLyogRWFjaCBvZiB0aGUgZWlnaHQgbmVpZ2hib3IgcGl4ZWxzIGNvbnRyaWJ1dGVzIGEgZnJhY3Rpb24gU0YgdG8gdGhlDQorICAgKiBzbW9vdGhlZCBwaXhlbCwgd2hpbGUgdGhlIG1haW4gcGl4ZWwgY29udHJpYnV0ZXMgKDEtOCpTRikuICBJbiBvcmRlcg0KKyAgICogdG8gdXNlIGludGVnZXIgYXJpdGhtZXRpYywgdGhlc2UgZmFjdG9ycyBhcmUgbXVsdGlwbGllZCBieSAyXjE2ID0gNjU1MzYuDQorICAgKiBBbHNvIHJlY2FsbCB0aGF0IFNGID0gc21vb3RoaW5nX2ZhY3RvciAvIDEwMjQuDQorICAgKi8NCisNCisgIG1lbWJlcnNjYWxlID0gNjU1MzZMIC0gY2luZm8tPnNtb290aGluZ19mYWN0b3IgKiA1MTJMOyAvKiBzY2FsZWQgMS04KlNGICovDQorICBuZWlnaHNjYWxlID0gY2luZm8tPnNtb290aGluZ19mYWN0b3IgKiA2NDsgLyogc2NhbGVkIFNGICovDQorDQorICBmb3IgKG91dHJvdyA9IDA7IG91dHJvdyA8IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7IG91dHJvdysrKSB7DQorICAgIG91dHB0ciA9IG91dHB1dF9kYXRhW291dHJvd107DQorICAgIGlucHRyID0gaW5wdXRfZGF0YVtvdXRyb3ddOw0KKyAgICBhYm92ZV9wdHIgPSBpbnB1dF9kYXRhW291dHJvdy0xXTsNCisgICAgYmVsb3dfcHRyID0gaW5wdXRfZGF0YVtvdXRyb3crMV07DQorDQorICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZmlyc3QgY29sdW1uICovDQorICAgIGNvbHN1bSA9IEdFVEpTQU1QTEUoKmFib3ZlX3B0cisrKSArIEdFVEpTQU1QTEUoKmJlbG93X3B0cisrKSArDQorCSAgICAgR0VUSlNBTVBMRSgqaW5wdHIpOw0KKyAgICBtZW1iZXJzdW0gPSBHRVRKU0FNUExFKCppbnB0cisrKTsNCisgICAgbmV4dGNvbHN1bSA9IEdFVEpTQU1QTEUoKmFib3ZlX3B0cikgKyBHRVRKU0FNUExFKCpiZWxvd19wdHIpICsNCisJCSBHRVRKU0FNUExFKCppbnB0cik7DQorICAgIG5laWdoc3VtID0gY29sc3VtICsgKGNvbHN1bSAtIG1lbWJlcnN1bSkgKyBuZXh0Y29sc3VtOw0KKyAgICBtZW1iZXJzdW0gPSBtZW1iZXJzdW0gKiBtZW1iZXJzY2FsZSArIG5laWdoc3VtICogbmVpZ2hzY2FsZTsNCisgICAgKm91dHB0cisrID0gKEpTQU1QTEUpICgobWVtYmVyc3VtICsgMzI3NjgpID4+IDE2KTsNCisgICAgbGFzdGNvbHN1bSA9IGNvbHN1bTsgY29sc3VtID0gbmV4dGNvbHN1bTsNCisNCisgICAgZm9yIChjb2xjdHIgPSBvdXRwdXRfY29scyAtIDI7IGNvbGN0ciA+IDA7IGNvbGN0ci0tKSB7DQorICAgICAgbWVtYmVyc3VtID0gR0VUSlNBTVBMRSgqaW5wdHIrKyk7DQorICAgICAgYWJvdmVfcHRyKys7IGJlbG93X3B0cisrOw0KKyAgICAgIG5leHRjb2xzdW0gPSBHRVRKU0FNUExFKCphYm92ZV9wdHIpICsgR0VUSlNBTVBMRSgqYmVsb3dfcHRyKSArDQorCQkgICBHRVRKU0FNUExFKCppbnB0cik7DQorICAgICAgbmVpZ2hzdW0gPSBsYXN0Y29sc3VtICsgKGNvbHN1bSAtIG1lbWJlcnN1bSkgKyBuZXh0Y29sc3VtOw0KKyAgICAgIG1lbWJlcnN1bSA9IG1lbWJlcnN1bSAqIG1lbWJlcnNjYWxlICsgbmVpZ2hzdW0gKiBuZWlnaHNjYWxlOw0KKyAgICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSAoKG1lbWJlcnN1bSArIDMyNzY4KSA+PiAxNik7DQorICAgICAgbGFzdGNvbHN1bSA9IGNvbHN1bTsgY29sc3VtID0gbmV4dGNvbHN1bTsNCisgICAgfQ0KKw0KKyAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGxhc3QgY29sdW1uICovDQorICAgIG1lbWJlcnN1bSA9IEdFVEpTQU1QTEUoKmlucHRyKTsNCisgICAgbmVpZ2hzdW0gPSBsYXN0Y29sc3VtICsgKGNvbHN1bSAtIG1lbWJlcnN1bSkgKyBjb2xzdW07DQorICAgIG1lbWJlcnN1bSA9IG1lbWJlcnN1bSAqIG1lbWJlcnNjYWxlICsgbmVpZ2hzdW0gKiBuZWlnaHNjYWxlOw0KKyAgICAqb3V0cHRyID0gKEpTQU1QTEUpICgobWVtYmVyc3VtICsgMzI3NjgpID4+IDE2KTsNCisNCisgIH0NCit9DQorDQorI2VuZGlmIC8qIElOUFVUX1NNT09USElOR19TVVBQT1JURUQgKi8NCisNCisNCisvKg0KKyAqIE1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBkb3duc2FtcGxpbmcuDQorICogTm90ZSB0aGF0IHdlIG11c3Qgc2VsZWN0IGEgcm91dGluZSBmb3IgZWFjaCBjb21wb25lbnQuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoramluaXRfZG93bnNhbXBsZXIgKGpfY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIG15X2Rvd25zYW1wbGVfcHRyIGRvd25zYW1wbGU7DQorICBpbnQgY2k7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisgIGJvb2xlYW4gc21vb3Rob2sgPSBUUlVFOw0KKw0KKyAgZG93bnNhbXBsZSA9IChteV9kb3duc2FtcGxlX3B0cikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJU0laRU9GKG15X2Rvd25zYW1wbGVyKSk7DQorICBjaW5mby0+ZG93bnNhbXBsZSA9IChzdHJ1Y3QganBlZ19kb3duc2FtcGxlciAqKSBkb3duc2FtcGxlOw0KKyAgZG93bnNhbXBsZS0+cHViLnN0YXJ0X3Bhc3MgPSBzdGFydF9wYXNzX2Rvd25zYW1wbGU7DQorICBkb3duc2FtcGxlLT5wdWIuZG93bnNhbXBsZSA9IHNlcF9kb3duc2FtcGxlOw0KKyAgZG93bnNhbXBsZS0+cHViLm5lZWRfY29udGV4dF9yb3dzID0gRkFMU0U7DQorDQorICBpZiAoY2luZm8tPkNDSVI2MDFfc2FtcGxpbmcpDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQ0NJUjYwMV9OT1RJTVBMKTsNCisNCisgIC8qIFZlcmlmeSB3ZSBjYW4gaGFuZGxlIHRoZSBzYW1wbGluZyBmYWN0b3JzLCBhbmQgc2V0IHVwIG1ldGhvZCBwb2ludGVycyAqLw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIGlmIChjb21wcHRyLT5oX3NhbXBfZmFjdG9yID09IGNpbmZvLT5tYXhfaF9zYW1wX2ZhY3RvciAmJg0KKwljb21wcHRyLT52X3NhbXBfZmFjdG9yID09IGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3Rvcikgew0KKyNpZmRlZiBJTlBVVF9TTU9PVEhJTkdfU1VQUE9SVEVEDQorICAgICAgaWYgKGNpbmZvLT5zbW9vdGhpbmdfZmFjdG9yKSB7DQorCWRvd25zYW1wbGUtPm1ldGhvZHNbY2ldID0gZnVsbHNpemVfc21vb3RoX2Rvd25zYW1wbGU7DQorCWRvd25zYW1wbGUtPnB1Yi5uZWVkX2NvbnRleHRfcm93cyA9IFRSVUU7DQorICAgICAgfSBlbHNlDQorI2VuZGlmDQorCWRvd25zYW1wbGUtPm1ldGhvZHNbY2ldID0gZnVsbHNpemVfZG93bnNhbXBsZTsNCisgICAgfSBlbHNlIGlmIChjb21wcHRyLT5oX3NhbXBfZmFjdG9yICogMiA9PSBjaW5mby0+bWF4X2hfc2FtcF9mYWN0b3IgJiYNCisJICAgICAgIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IgPT0gY2luZm8tPm1heF92X3NhbXBfZmFjdG9yKSB7DQorICAgICAgc21vb3Rob2sgPSBGQUxTRTsNCisgICAgICBkb3duc2FtcGxlLT5tZXRob2RzW2NpXSA9IGgydjFfZG93bnNhbXBsZTsNCisgICAgfSBlbHNlIGlmIChjb21wcHRyLT5oX3NhbXBfZmFjdG9yICogMiA9PSBjaW5mby0+bWF4X2hfc2FtcF9mYWN0b3IgJiYNCisJICAgICAgIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IgKiAyID09IGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3Rvcikgew0KKyNpZmRlZiBJTlBVVF9TTU9PVEhJTkdfU1VQUE9SVEVEDQorICAgICAgaWYgKGNpbmZvLT5zbW9vdGhpbmdfZmFjdG9yKSB7DQorCWRvd25zYW1wbGUtPm1ldGhvZHNbY2ldID0gaDJ2Ml9zbW9vdGhfZG93bnNhbXBsZTsNCisJZG93bnNhbXBsZS0+cHViLm5lZWRfY29udGV4dF9yb3dzID0gVFJVRTsNCisgICAgICB9IGVsc2UNCisjZW5kaWYNCisJZG93bnNhbXBsZS0+bWV0aG9kc1tjaV0gPSBoMnYyX2Rvd25zYW1wbGU7DQorICAgIH0gZWxzZSBpZiAoKGNpbmZvLT5tYXhfaF9zYW1wX2ZhY3RvciAlIGNvbXBwdHItPmhfc2FtcF9mYWN0b3IpID09IDAgJiYNCisJICAgICAgIChjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IgJSBjb21wcHRyLT52X3NhbXBfZmFjdG9yKSA9PSAwKSB7DQorICAgICAgc21vb3Rob2sgPSBGQUxTRTsNCisgICAgICBkb3duc2FtcGxlLT5tZXRob2RzW2NpXSA9IGludF9kb3duc2FtcGxlOw0KKyAgICB9IGVsc2UNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0ZSQUNUX1NBTVBMRV9OT1RJTVBMKTsNCisgIH0NCisNCisjaWZkZWYgSU5QVVRfU01PT1RISU5HX1NVUFBPUlRFRA0KKyAgaWYgKGNpbmZvLT5zbW9vdGhpbmdfZmFjdG9yICYmICFzbW9vdGhvaykNCisgICAgVFJBQ0VNUyhjaW5mbywgMCwgSlRSQ19TTU9PVEhfTk9USU1QTCk7DQorI2VuZGlmDQorfQ0KKw0KKyNlbmRpZiAvL19GWF9KUEVHX1RVUkJPXw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjdHJhbnMuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pjdHJhbnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDU0MTE1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamN0cmFucy5jCkBAIC0wLDAgKzEsMzkxIEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamN0cmFucy5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgbGlicmFyeSByb3V0aW5lcyBmb3IgdHJhbnNjb2RpbmcgY29tcHJlc3Npb24sDQorICogdGhhdCBpcywgd3JpdGluZyByYXcgRENUIGNvZWZmaWNpZW50IGFycmF5cyB0byBhbiBvdXRwdXQgSlBFRyBmaWxlLg0KKyAqIFRoZSByb3V0aW5lcyBpbiBqY2FwaW1pbi5jIHdpbGwgYWxzbyBiZSBuZWVkZWQgYnkgYSB0cmFuc2NvZGVyLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKw0KKw0KKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovDQorTE9DQUwodm9pZCkgdHJhbnNlbmNvZGVfbWFzdGVyX3NlbGVjdGlvbg0KKwlKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBqdmlydF9iYXJyYXlfcHRyICogY29lZl9hcnJheXMpKTsNCitMT0NBTCh2b2lkKSB0cmFuc2VuY29kZV9jb2VmX2NvbnRyb2xsZXINCisJSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywganZpcnRfYmFycmF5X3B0ciAqIGNvZWZfYXJyYXlzKSk7DQorDQorDQorLyoNCisgKiBDb21wcmVzc2lvbiBpbml0aWFsaXphdGlvbiBmb3Igd3JpdGluZyByYXctY29lZmZpY2llbnQgZGF0YS4NCisgKiBCZWZvcmUgY2FsbGluZyB0aGlzLCBhbGwgcGFyYW1ldGVycyBhbmQgYSBkYXRhIGRlc3RpbmF0aW9uIG11c3QgYmUgc2V0IHVwLg0KKyAqIENhbGwganBlZ19maW5pc2hfY29tcHJlc3MoKSB0byBhY3R1YWxseSB3cml0ZSB0aGUgZGF0YS4NCisgKg0KKyAqIFRoZSBudW1iZXIgb2YgcGFzc2VkIHZpcnR1YWwgYXJyYXlzIG11c3QgbWF0Y2ggY2luZm8tPm51bV9jb21wb25lbnRzLg0KKyAqIE5vdGUgdGhhdCB0aGUgdmlydHVhbCBhcnJheXMgbmVlZCBub3QgYmUgZmlsbGVkIG9yIGV2ZW4gcmVhbGl6ZWQgYXQNCisgKiB0aGUgdGltZSB3cml0ZV9jb2VmZmljaWVudHMgaXMgY2FsbGVkOyBpbmRlZWQsIGlmIHRoZSB2aXJ0dWFsIGFycmF5cw0KKyAqIHdlcmUgcmVxdWVzdGVkIGZyb20gdGhpcyBjb21wcmVzc2lvbiBvYmplY3QncyBtZW1vcnkgbWFuYWdlciwgdGhleQ0KKyAqIHR5cGljYWxseSB3aWxsIGJlIHJlYWxpemVkIGR1cmluZyB0aGlzIHJvdXRpbmUgYW5kIGZpbGxlZCBhZnRlcndhcmRzLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfd3JpdGVfY29lZmZpY2llbnRzIChqX2NvbXByZXNzX3B0ciBjaW5mbywganZpcnRfYmFycmF5X3B0ciAqIGNvZWZfYXJyYXlzKQ0KK3sNCisgIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlICE9IENTVEFURV9TVEFSVCkNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NUQVRFLCBjaW5mby0+Z2xvYmFsX3N0YXRlKTsNCisgIC8qIE1hcmsgYWxsIHRhYmxlcyB0byBiZSB3cml0dGVuICovDQorICBqcGVnX3N1cHByZXNzX3RhYmxlcyhjaW5mbywgRkFMU0UpOw0KKyAgLyogKFJlKWluaXRpYWxpemUgZXJyb3IgbWdyIGFuZCBkZXN0aW5hdGlvbiBtb2R1bGVzICovDQorICAoKmNpbmZvLT5lcnItPnJlc2V0X2Vycm9yX21ncikgKChqX2NvbW1vbl9wdHIpIGNpbmZvKTsNCisgICgqY2luZm8tPmRlc3QtPmluaXRfZGVzdGluYXRpb24pIChjaW5mbyk7DQorICAvKiBQZXJmb3JtIG1hc3RlciBzZWxlY3Rpb24gb2YgYWN0aXZlIG1vZHVsZXMgKi8NCisgIHRyYW5zZW5jb2RlX21hc3Rlcl9zZWxlY3Rpb24oY2luZm8sIGNvZWZfYXJyYXlzKTsNCisgIC8qIFdhaXQgZm9yIGpwZWdfZmluaXNoX2NvbXByZXNzKCkgY2FsbCAqLw0KKyAgY2luZm8tPm5leHRfc2NhbmxpbmUgPSAwOwkvKiBzbyBqcGVnX3dyaXRlX21hcmtlciB3b3JrcyAqLw0KKyAgY2luZm8tPmdsb2JhbF9zdGF0ZSA9IENTVEFURV9XUkNPRUZTOw0KK30NCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgdGhlIGNvbXByZXNzaW9uIG9iamVjdCB3aXRoIGRlZmF1bHQgcGFyYW1ldGVycywNCisgKiB0aGVuIGNvcHkgZnJvbSB0aGUgc291cmNlIG9iamVjdCBhbGwgcGFyYW1ldGVycyBuZWVkZWQgZm9yIGxvc3NsZXNzDQorICogdHJhbnNjb2RpbmcuICBQYXJhbWV0ZXJzIHRoYXQgY2FuIGJlIHZhcmllZCB3aXRob3V0IGxvc3MgKHN1Y2ggYXMNCisgKiBzY2FuIHNjcmlwdCBhbmQgSHVmZm1hbiBvcHRpbWl6YXRpb24pIGFyZSBsZWZ0IGluIHRoZWlyIGRlZmF1bHQgc3RhdGVzLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfY29weV9jcml0aWNhbF9wYXJhbWV0ZXJzIChqX2RlY29tcHJlc3NfcHRyIHNyY2luZm8sDQorCQkJICAgICAgIGpfY29tcHJlc3NfcHRyIGRzdGluZm8pDQorew0KKyAgSlFVQU5UX1RCTCAqKiBxdGJscHRyOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqaW5jb21wLCAqb3V0Y29tcDsNCisgIEpRVUFOVF9UQkwgKmNfcXVhbnQsICpzbG90X3F1YW50Ow0KKyAgaW50IHRibG5vLCBjaSwgY29lZmk7DQorDQorICAvKiBTYWZldHkgY2hlY2sgdG8gZW5zdXJlIHN0YXJ0X2NvbXByZXNzIG5vdCBjYWxsZWQgeWV0LiAqLw0KKyAgaWYgKGRzdGluZm8tPmdsb2JhbF9zdGF0ZSAhPSBDU1RBVEVfU1RBUlQpDQorICAgIEVSUkVYSVQxKGRzdGluZm8sIEpFUlJfQkFEX1NUQVRFLCBkc3RpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKyAgLyogQ29weSBmdW5kYW1lbnRhbCBpbWFnZSBkaW1lbnNpb25zICovDQorICBkc3RpbmZvLT5pbWFnZV93aWR0aCA9IHNyY2luZm8tPmltYWdlX3dpZHRoOw0KKyAgZHN0aW5mby0+aW1hZ2VfaGVpZ2h0ID0gc3JjaW5mby0+aW1hZ2VfaGVpZ2h0Ow0KKyAgZHN0aW5mby0+aW5wdXRfY29tcG9uZW50cyA9IHNyY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgZHN0aW5mby0+aW5fY29sb3Jfc3BhY2UgPSBzcmNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlOw0KKyAgLyogSW5pdGlhbGl6ZSBhbGwgcGFyYW1ldGVycyB0byBkZWZhdWx0IHZhbHVlcyAqLw0KKyAganBlZ19zZXRfZGVmYXVsdHMoZHN0aW5mbyk7DQorICAvKiBqcGVnX3NldF9kZWZhdWx0cyBtYXkgY2hvb3NlIHdyb25nIGNvbG9yc3BhY2UsIGVnIFlDYkNyIGlmIGlucHV0IGlzIFJHQi4NCisgICAqIEZpeCBpdCB0byBnZXQgdGhlIHJpZ2h0IGhlYWRlciBtYXJrZXJzIGZvciB0aGUgaW1hZ2UgY29sb3JzcGFjZS4NCisgICAqLw0KKyAganBlZ19zZXRfY29sb3JzcGFjZShkc3RpbmZvLCBzcmNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlKTsNCisgIGRzdGluZm8tPmRhdGFfcHJlY2lzaW9uID0gc3JjaW5mby0+ZGF0YV9wcmVjaXNpb247DQorICBkc3RpbmZvLT5DQ0lSNjAxX3NhbXBsaW5nID0gc3JjaW5mby0+Q0NJUjYwMV9zYW1wbGluZzsNCisgIC8qIENvcHkgdGhlIHNvdXJjZSdzIHF1YW50aXphdGlvbiB0YWJsZXMuICovDQorICBmb3IgKHRibG5vID0gMDsgdGJsbm8gPCBOVU1fUVVBTlRfVEJMUzsgdGJsbm8rKykgew0KKyAgICBpZiAoc3JjaW5mby0+cXVhbnRfdGJsX3B0cnNbdGJsbm9dICE9IE5VTEwpIHsNCisgICAgICBxdGJscHRyID0gJiBkc3RpbmZvLT5xdWFudF90YmxfcHRyc1t0Ymxub107DQorICAgICAgaWYgKCpxdGJscHRyID09IE5VTEwpDQorCSpxdGJscHRyID0ganBlZ19hbGxvY19xdWFudF90YWJsZSgoal9jb21tb25fcHRyKSBkc3RpbmZvKTsNCisgICAgICBNRU1DT1BZKCgqcXRibHB0ciktPnF1YW50dmFsLA0KKwkgICAgICBzcmNpbmZvLT5xdWFudF90YmxfcHRyc1t0Ymxub10tPnF1YW50dmFsLA0KKwkgICAgICBTSVpFT0YoKCpxdGJscHRyKS0+cXVhbnR2YWwpKTsNCisgICAgICAoKnF0YmxwdHIpLT5zZW50X3RhYmxlID0gRkFMU0U7DQorICAgIH0NCisgIH0NCisgIC8qIENvcHkgdGhlIHNvdXJjZSdzIHBlci1jb21wb25lbnQgaW5mby4NCisgICAqIE5vdGUgd2UgYXNzdW1lIGpwZWdfc2V0X2RlZmF1bHRzIGhhcyBhbGxvY2F0ZWQgdGhlIGRlc3QgY29tcF9pbmZvIGFycmF5Lg0KKyAgICovDQorICBkc3RpbmZvLT5udW1fY29tcG9uZW50cyA9IHNyY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgaWYgKGRzdGluZm8tPm51bV9jb21wb25lbnRzIDwgMSB8fCBkc3RpbmZvLT5udW1fY29tcG9uZW50cyA+IE1BWF9DT01QT05FTlRTKQ0KKyAgICBFUlJFWElUMihkc3RpbmZvLCBKRVJSX0NPTVBPTkVOVF9DT1VOVCwgZHN0aW5mby0+bnVtX2NvbXBvbmVudHMsDQorCSAgICAgTUFYX0NPTVBPTkVOVFMpOw0KKyAgZm9yIChjaSA9IDAsIGluY29tcCA9IHNyY2luZm8tPmNvbXBfaW5mbywgb3V0Y29tcCA9IGRzdGluZm8tPmNvbXBfaW5mbzsNCisgICAgICAgY2kgPCBkc3RpbmZvLT5udW1fY29tcG9uZW50czsgY2krKywgaW5jb21wKyssIG91dGNvbXArKykgew0KKyAgICBvdXRjb21wLT5jb21wb25lbnRfaWQgPSBpbmNvbXAtPmNvbXBvbmVudF9pZDsNCisgICAgb3V0Y29tcC0+aF9zYW1wX2ZhY3RvciA9IGluY29tcC0+aF9zYW1wX2ZhY3RvcjsNCisgICAgb3V0Y29tcC0+dl9zYW1wX2ZhY3RvciA9IGluY29tcC0+dl9zYW1wX2ZhY3RvcjsNCisgICAgb3V0Y29tcC0+cXVhbnRfdGJsX25vID0gaW5jb21wLT5xdWFudF90Ymxfbm87DQorICAgIC8qIE1ha2Ugc3VyZSBzYXZlZCBxdWFudGl6YXRpb24gdGFibGUgZm9yIGNvbXBvbmVudCBtYXRjaGVzIHRoZSBxdGFibGUNCisgICAgICogc2xvdC4gIElmIG5vdCwgdGhlIGlucHV0IGZpbGUgcmUtdXNlZCB0aGlzIHF0YWJsZSBzbG90Lg0KKyAgICAgKiBJSkcgZW5jb2RlciBjdXJyZW50bHkgY2Fubm90IGR1cGxpY2F0ZSB0aGlzLg0KKyAgICAgKi8NCisgICAgdGJsbm8gPSBvdXRjb21wLT5xdWFudF90Ymxfbm87DQorICAgIGlmICh0YmxubyA8IDAgfHwgdGJsbm8gPj0gTlVNX1FVQU5UX1RCTFMgfHwNCisJc3JjaW5mby0+cXVhbnRfdGJsX3B0cnNbdGJsbm9dID09IE5VTEwpDQorICAgICAgRVJSRVhJVDEoZHN0aW5mbywgSkVSUl9OT19RVUFOVF9UQUJMRSwgdGJsbm8pOw0KKyAgICBzbG90X3F1YW50ID0gc3JjaW5mby0+cXVhbnRfdGJsX3B0cnNbdGJsbm9dOw0KKyAgICBjX3F1YW50ID0gaW5jb21wLT5xdWFudF90YWJsZTsNCisgICAgaWYgKGNfcXVhbnQgIT0gTlVMTCkgew0KKyAgICAgIGZvciAoY29lZmkgPSAwOyBjb2VmaSA8IERDVFNJWkUyOyBjb2VmaSsrKSB7DQorCWlmIChjX3F1YW50LT5xdWFudHZhbFtjb2VmaV0gIT0gc2xvdF9xdWFudC0+cXVhbnR2YWxbY29lZmldKQ0KKwkgIEVSUkVYSVQxKGRzdGluZm8sIEpFUlJfTUlTTUFUQ0hFRF9RVUFOVF9UQUJMRSwgdGJsbm8pOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgICAvKiBOb3RlOiB3ZSBkbyBub3QgY29weSB0aGUgc291cmNlJ3MgSHVmZm1hbiB0YWJsZSBhc3NpZ25tZW50czsNCisgICAgICogaW5zdGVhZCB3ZSByZWx5IG9uIGpwZWdfc2V0X2NvbG9yc3BhY2UgdG8gaGF2ZSBtYWRlIGEgc3VpdGFibGUgY2hvaWNlLg0KKyAgICAgKi8NCisgIH0NCisgIC8qIEFsc28gY29weSBKRklGIHZlcnNpb24gYW5kIHJlc29sdXRpb24gaW5mb3JtYXRpb24sIGlmIGF2YWlsYWJsZS4NCisgICAqIFN0cmljdGx5IHNwZWFraW5nIHRoaXMgaXNuJ3QgImNyaXRpY2FsIiBpbmZvLCBidXQgaXQncyBuZWFybHkNCisgICAqIGFsd2F5cyBhcHByb3ByaWF0ZSB0byBjb3B5IGl0IGlmIGF2YWlsYWJsZS4gIEluIHBhcnRpY3VsYXIsDQorICAgKiBpZiB0aGUgYXBwbGljYXRpb24gY2hvb3NlcyB0byBjb3B5IEpGSUYgMS4wMiBleHRlbnNpb24gbWFya2VycyBmcm9tDQorICAgKiB0aGUgc291cmNlIGZpbGUsIHdlIG5lZWQgdG8gY29weSB0aGUgdmVyc2lvbiB0byBtYWtlIHN1cmUgd2UgZG9uJ3QNCisgICAqIGVtaXQgYSBmaWxlIHRoYXQgaGFzIDEuMDIgZXh0ZW5zaW9ucyBidXQgYSBjbGFpbWVkIHZlcnNpb24gb2YgMS4wMS4NCisgICAqIFdlIHdpbGwgKm5vdCosIGhvd2V2ZXIsIGNvcHkgdmVyc2lvbiBpbmZvIGZyb20gbWlzbGFiZWxlZCAiMi4wMSIgZmlsZXMuDQorICAgKi8NCisgIGlmIChzcmNpbmZvLT5zYXdfSkZJRl9tYXJrZXIpIHsNCisgICAgaWYgKHNyY2luZm8tPkpGSUZfbWFqb3JfdmVyc2lvbiA9PSAxKSB7DQorICAgICAgZHN0aW5mby0+SkZJRl9tYWpvcl92ZXJzaW9uID0gc3JjaW5mby0+SkZJRl9tYWpvcl92ZXJzaW9uOw0KKyAgICAgIGRzdGluZm8tPkpGSUZfbWlub3JfdmVyc2lvbiA9IHNyY2luZm8tPkpGSUZfbWlub3JfdmVyc2lvbjsNCisgICAgfQ0KKyAgICBkc3RpbmZvLT5kZW5zaXR5X3VuaXQgPSBzcmNpbmZvLT5kZW5zaXR5X3VuaXQ7DQorICAgIGRzdGluZm8tPlhfZGVuc2l0eSA9IHNyY2luZm8tPlhfZGVuc2l0eTsNCisgICAgZHN0aW5mby0+WV9kZW5zaXR5ID0gc3JjaW5mby0+WV9kZW5zaXR5Ow0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIE1hc3RlciBzZWxlY3Rpb24gb2YgY29tcHJlc3Npb24gbW9kdWxlcyBmb3IgdHJhbnNjb2RpbmcuDQorICogVGhpcyBzdWJzdGl0dXRlcyBmb3IgamNpbml0LmMncyBpbml0aWFsaXphdGlvbiBvZiB0aGUgZnVsbCBjb21wcmVzc29yLg0KKyAqLw0KKw0KK0xPQ0FMKHZvaWQpDQordHJhbnNlbmNvZGVfbWFzdGVyX3NlbGVjdGlvbiAoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJICAgICAganZpcnRfYmFycmF5X3B0ciAqIGNvZWZfYXJyYXlzKQ0KK3sNCisgIC8qIEFsdGhvdWdoIHdlIGRvbid0IGFjdHVhbGx5IHVzZSBpbnB1dF9jb21wb25lbnRzIGZvciB0cmFuc2NvZGluZywNCisgICAqIGpjbWFzdGVyLmMncyBpbml0aWFsX3NldHVwIHdpbGwgY29tcGxhaW4gaWYgaW5wdXRfY29tcG9uZW50cyBpcyAwLg0KKyAgICovDQorICBjaW5mby0+aW5wdXRfY29tcG9uZW50cyA9IDE7DQorICAvKiBJbml0aWFsaXplIG1hc3RlciBjb250cm9sIChpbmNsdWRlcyBwYXJhbWV0ZXIgY2hlY2tpbmcvcHJvY2Vzc2luZykgKi8NCisgIGppbml0X2NfbWFzdGVyX2NvbnRyb2woY2luZm8sIFRSVUUgLyogdHJhbnNjb2RlIG9ubHkgKi8pOw0KKw0KKyAgLyogRW50cm9weSBlbmNvZGluZzogZWl0aGVyIEh1ZmZtYW4gb3IgYXJpdGhtZXRpYyBjb2RpbmcuICovDQorICBpZiAoY2luZm8tPmFyaXRoX2NvZGUpIHsNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9BUklUSF9OT1RJTVBMKTsNCisgIH0gZWxzZSB7DQorICAgIGlmIChjaW5mby0+cHJvZ3Jlc3NpdmVfbW9kZSkgew0KKyNpZmRlZiBDX1BST0dSRVNTSVZFX1NVUFBPUlRFRA0KKyAgICAgIGppbml0X3BodWZmX2VuY29kZXIoY2luZm8pOw0KKyNlbHNlDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyNlbmRpZg0KKyAgICB9IGVsc2UNCisgICAgICBqaW5pdF9odWZmX2VuY29kZXIoY2luZm8pOw0KKyAgfQ0KKw0KKyAgLyogV2UgbmVlZCBhIHNwZWNpYWwgY29lZmZpY2llbnQgYnVmZmVyIGNvbnRyb2xsZXIuICovDQorICB0cmFuc2VuY29kZV9jb2VmX2NvbnRyb2xsZXIoY2luZm8sIGNvZWZfYXJyYXlzKTsNCisNCisgIGppbml0X21hcmtlcl93cml0ZXIoY2luZm8pOw0KKw0KKyAgLyogV2UgY2FuIG5vdyB0ZWxsIHRoZSBtZW1vcnkgbWFuYWdlciB0byBhbGxvY2F0ZSB2aXJ0dWFsIGFycmF5cy4gKi8NCisgICgqY2luZm8tPm1lbS0+cmVhbGl6ZV92aXJ0X2FycmF5cykgKChqX2NvbW1vbl9wdHIpIGNpbmZvKTsNCisNCisgIC8qIFdyaXRlIHRoZSBkYXRhc3RyZWFtIGhlYWRlciAoU09JLCBKRklGKSBpbW1lZGlhdGVseS4NCisgICAqIEZyYW1lIGFuZCBzY2FuIGhlYWRlcnMgYXJlIHBvc3Rwb25lZCB0aWxsIGxhdGVyLg0KKyAgICogVGhpcyBsZXRzIGFwcGxpY2F0aW9uIGluc2VydCBzcGVjaWFsIG1hcmtlcnMgYWZ0ZXIgdGhlIFNPSS4NCisgICAqLw0KKyAgKCpjaW5mby0+bWFya2VyLT53cml0ZV9maWxlX2hlYWRlcikgKGNpbmZvKTsNCit9DQorDQorDQorLyoNCisgKiBUaGUgcmVzdCBvZiB0aGlzIGZpbGUgaXMgYSBzcGVjaWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBjb2VmZmljaWVudA0KKyAqIGJ1ZmZlciBjb250cm9sbGVyLiAgVGhpcyBpcyBzaW1pbGFyIHRvIGpjY29lZmN0LmMsIGJ1dCBpdCBoYW5kbGVzIG9ubHkNCisgKiBvdXRwdXQgZnJvbSBwcmVzdXBwbGllZCB2aXJ0dWFsIGFycmF5cy4gIEZ1cnRoZXJtb3JlLCB3ZSBnZW5lcmF0ZSBhbnkNCisgKiBkdW1teSBwYWRkaW5nIGJsb2NrcyBvbi10aGUtZmx5IHJhdGhlciB0aGFuIGV4cGVjdGluZyB0aGVtIHRvIGJlIHByZXNlbnQNCisgKiBpbiB0aGUgYXJyYXlzLg0KKyAqLw0KKw0KKy8qIFByaXZhdGUgYnVmZmVyIGNvbnRyb2xsZXIgb2JqZWN0ICovDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgc3RydWN0IGpwZWdfY19jb2VmX2NvbnRyb2xsZXIgcHViOyAvKiBwdWJsaWMgZmllbGRzICovDQorDQorICBKRElNRU5TSU9OIGlNQ1Vfcm93X251bTsJLyogaU1DVSByb3cgIyB3aXRoaW4gaW1hZ2UgKi8NCisgIEpESU1FTlNJT04gbWN1X2N0cjsJCS8qIGNvdW50cyBNQ1VzIHByb2Nlc3NlZCBpbiBjdXJyZW50IHJvdyAqLw0KKyAgaW50IE1DVV92ZXJ0X29mZnNldDsJCS8qIGNvdW50cyBNQ1Ugcm93cyB3aXRoaW4gaU1DVSByb3cgKi8NCisgIGludCBNQ1Vfcm93c19wZXJfaU1DVV9yb3c7CS8qIG51bWJlciBvZiBzdWNoIHJvd3MgbmVlZGVkICovDQorDQorICAvKiBWaXJ0dWFsIGJsb2NrIGFycmF5IGZvciBlYWNoIGNvbXBvbmVudC4gKi8NCisgIGp2aXJ0X2JhcnJheV9wdHIgKiB3aG9sZV9pbWFnZTsNCisNCisgIC8qIFdvcmtzcGFjZSBmb3IgY29uc3RydWN0aW5nIGR1bW15IGJsb2NrcyBhdCByaWdodC9ib3R0b20gZWRnZXMuICovDQorICBKQkxPQ0tST1cgZHVtbXlfYnVmZmVyW0NfTUFYX0JMT0NLU19JTl9NQ1VdOw0KK30gbXlfY29lZl9jb250cm9sbGVyOw0KKw0KK3R5cGVkZWYgbXlfY29lZl9jb250cm9sbGVyICogbXlfY29lZl9wdHI7DQorDQorDQorTE9DQUwodm9pZCkNCitzdGFydF9pTUNVX3JvdyAoal9jb21wcmVzc19wdHIgY2luZm8pDQorLyogUmVzZXQgd2l0aGluLWlNQ1Utcm93IGNvdW50ZXJzIGZvciBhIG5ldyByb3cgKi8NCit7DQorICBteV9jb2VmX3B0ciBjb2VmID0gKG15X2NvZWZfcHRyKSBjaW5mby0+Y29lZjsNCisNCisgIC8qIEluIGFuIGludGVybGVhdmVkIHNjYW4sIGFuIE1DVSByb3cgaXMgdGhlIHNhbWUgYXMgYW4gaU1DVSByb3cuDQorICAgKiBJbiBhIG5vbmludGVybGVhdmVkIHNjYW4sIGFuIGlNQ1Ugcm93IGhhcyB2X3NhbXBfZmFjdG9yIE1DVSByb3dzLg0KKyAgICogQnV0IGF0IHRoZSBib3R0b20gb2YgdGhlIGltYWdlLCBwcm9jZXNzIG9ubHkgd2hhdCdzIGxlZnQuDQorICAgKi8NCisgIGlmIChjaW5mby0+Y29tcHNfaW5fc2NhbiA+IDEpIHsNCisgICAgY29lZi0+TUNVX3Jvd3NfcGVyX2lNQ1Vfcm93ID0gMTsNCisgIH0gZWxzZSB7DQorICAgIGlmIChjb2VmLT5pTUNVX3Jvd19udW0gPCAoY2luZm8tPnRvdGFsX2lNQ1Vfcm93cy0xKSkNCisgICAgICBjb2VmLT5NQ1Vfcm93c19wZXJfaU1DVV9yb3cgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1swXS0+dl9zYW1wX2ZhY3RvcjsNCisgICAgZWxzZQ0KKyAgICAgIGNvZWYtPk1DVV9yb3dzX3Blcl9pTUNVX3JvdyA9IGNpbmZvLT5jdXJfY29tcF9pbmZvWzBdLT5sYXN0X3Jvd19oZWlnaHQ7DQorICB9DQorDQorICBjb2VmLT5tY3VfY3RyID0gMDsNCisgIGNvZWYtPk1DVV92ZXJ0X29mZnNldCA9IDA7DQorfQ0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6ZSBmb3IgYSBwcm9jZXNzaW5nIHBhc3MuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc3RhcnRfcGFzc19jb2VmIChqX2NvbXByZXNzX3B0ciBjaW5mbywgSl9CVUZfTU9ERSBwYXNzX21vZGUpDQorew0KKyAgbXlfY29lZl9wdHIgY29lZiA9IChteV9jb2VmX3B0cikgY2luZm8tPmNvZWY7DQorDQorICBpZiAocGFzc19tb2RlICE9IEpCVUZfQ1JBTktfREVTVCkNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfQlVGRkVSX01PREUpOw0KKw0KKyAgY29lZi0+aU1DVV9yb3dfbnVtID0gMDsNCisgIHN0YXJ0X2lNQ1Vfcm93KGNpbmZvKTsNCit9DQorDQorDQorLyoNCisgKiBQcm9jZXNzIHNvbWUgZGF0YS4NCisgKiBXZSBwcm9jZXNzIHRoZSBlcXVpdmFsZW50IG9mIG9uZSBmdWxseSBpbnRlcmxlYXZlZCBNQ1Ugcm93ICgiaU1DVSIgcm93KQ0KKyAqIHBlciBjYWxsLCBpZSwgdl9zYW1wX2ZhY3RvciBibG9jayByb3dzIGZvciBlYWNoIGNvbXBvbmVudCBpbiB0aGUgc2Nhbi4NCisgKiBUaGUgZGF0YSBpcyBvYnRhaW5lZCBmcm9tIHRoZSB2aXJ0dWFsIGFycmF5cyBhbmQgZmVkIHRvIHRoZSBlbnRyb3B5IGNvZGVyLg0KKyAqIFJldHVybnMgVFJVRSBpZiB0aGUgaU1DVSByb3cgaXMgY29tcGxldGVkLCBGQUxTRSBpZiBzdXNwZW5kZWQuDQorICoNCisgKiBOQjogaW5wdXRfYnVmIGlzIGlnbm9yZWQ7IGl0IGlzIGxpa2VseSB0byBiZSBhIE5VTEwgcG9pbnRlci4NCisgKi8NCisNCitNRVRIT0RERUYoYm9vbGVhbikNCitjb21wcmVzc19vdXRwdXQgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKU0FNUElNQUdFIGlucHV0X2J1ZikNCit7DQorICBteV9jb2VmX3B0ciBjb2VmID0gKG15X2NvZWZfcHRyKSBjaW5mby0+Y29lZjsNCisgIEpESU1FTlNJT04gTUNVX2NvbF9udW07CS8qIGluZGV4IG9mIGN1cnJlbnQgTUNVIHdpdGhpbiByb3cgKi8NCisgIEpESU1FTlNJT04gbGFzdF9NQ1VfY29sID0gY2luZm8tPk1DVXNfcGVyX3JvdyAtIDE7DQorICBKRElNRU5TSU9OIGxhc3RfaU1DVV9yb3cgPSBjaW5mby0+dG90YWxfaU1DVV9yb3dzIC0gMTsNCisgIGludCBibGtuLCBjaSwgeGluZGV4LCB5aW5kZXgsIHlvZmZzZXQsIGJsb2NrY250Ow0KKyAgSkRJTUVOU0lPTiBzdGFydF9jb2w7DQorICBKQkxPQ0tBUlJBWSBidWZmZXJbTUFYX0NPTVBTX0lOX1NDQU5dOw0KKyAgSkJMT0NLUk9XIE1DVV9idWZmZXJbQ19NQVhfQkxPQ0tTX0lOX01DVV07DQorICBKQkxPQ0tST1cgYnVmZmVyX3B0cjsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorDQorICAvKiBBbGlnbiB0aGUgdmlydHVhbCBidWZmZXJzIGZvciB0aGUgY29tcG9uZW50cyB1c2VkIGluIHRoaXMgc2Nhbi4gKi8NCisgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKSB7DQorICAgIGNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorICAgIGJ1ZmZlcltjaV0gPSAoKmNpbmZvLT5tZW0tPmFjY2Vzc192aXJ0X2JhcnJheSkNCisgICAgICAoKGpfY29tbW9uX3B0cikgY2luZm8sIGNvZWYtPndob2xlX2ltYWdlW2NvbXBwdHItPmNvbXBvbmVudF9pbmRleF0sDQorICAgICAgIGNvZWYtPmlNQ1Vfcm93X251bSAqIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IsDQorICAgICAgIChKRElNRU5TSU9OKSBjb21wcHRyLT52X3NhbXBfZmFjdG9yLCBGQUxTRSk7DQorICB9DQorDQorICAvKiBMb29wIHRvIHByb2Nlc3Mgb25lIHdob2xlIGlNQ1Ugcm93ICovDQorICBmb3IgKHlvZmZzZXQgPSBjb2VmLT5NQ1VfdmVydF9vZmZzZXQ7IHlvZmZzZXQgPCBjb2VmLT5NQ1Vfcm93c19wZXJfaU1DVV9yb3c7DQorICAgICAgIHlvZmZzZXQrKykgew0KKyAgICBmb3IgKE1DVV9jb2xfbnVtID0gY29lZi0+bWN1X2N0cjsgTUNVX2NvbF9udW0gPCBjaW5mby0+TUNVc19wZXJfcm93Ow0KKwkgTUNVX2NvbF9udW0rKykgew0KKyAgICAgIC8qIENvbnN0cnVjdCBsaXN0IG9mIHBvaW50ZXJzIHRvIERDVCBibG9ja3MgYmVsb25naW5nIHRvIHRoaXMgTUNVICovDQorICAgICAgYmxrbiA9IDA7CQkJLyogaW5kZXggb2YgY3VycmVudCBEQ1QgYmxvY2sgd2l0aGluIE1DVSAqLw0KKyAgICAgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKSB7DQorCWNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorCXN0YXJ0X2NvbCA9IE1DVV9jb2xfbnVtICogY29tcHB0ci0+TUNVX3dpZHRoOw0KKwlibG9ja2NudCA9IChNQ1VfY29sX251bSA8IGxhc3RfTUNVX2NvbCkgPyBjb21wcHRyLT5NQ1Vfd2lkdGgNCisJCQkJCQk6IGNvbXBwdHItPmxhc3RfY29sX3dpZHRoOw0KKwlmb3IgKHlpbmRleCA9IDA7IHlpbmRleCA8IGNvbXBwdHItPk1DVV9oZWlnaHQ7IHlpbmRleCsrKSB7DQorCSAgaWYgKGNvZWYtPmlNQ1Vfcm93X251bSA8IGxhc3RfaU1DVV9yb3cgfHwNCisJICAgICAgeWluZGV4K3lvZmZzZXQgPCBjb21wcHRyLT5sYXN0X3Jvd19oZWlnaHQpIHsNCisJICAgIC8qIEZpbGwgaW4gcG9pbnRlcnMgdG8gcmVhbCBibG9ja3MgaW4gdGhpcyByb3cgKi8NCisJICAgIGJ1ZmZlcl9wdHIgPSBidWZmZXJbY2ldW3lpbmRleCt5b2Zmc2V0XSArIHN0YXJ0X2NvbDsNCisJICAgIGZvciAoeGluZGV4ID0gMDsgeGluZGV4IDwgYmxvY2tjbnQ7IHhpbmRleCsrKQ0KKwkgICAgICBNQ1VfYnVmZmVyW2Jsa24rK10gPSBidWZmZXJfcHRyKys7DQorCSAgfSBlbHNlIHsNCisJICAgIC8qIEF0IGJvdHRvbSBvZiBpbWFnZSwgbmVlZCBhIHdob2xlIHJvdyBvZiBkdW1teSBibG9ja3MgKi8NCisJICAgIHhpbmRleCA9IDA7DQorCSAgfQ0KKwkgIC8qIEZpbGwgaW4gYW55IGR1bW15IGJsb2NrcyBuZWVkZWQgaW4gdGhpcyByb3cuDQorCSAgICogRHVtbXkgYmxvY2tzIGFyZSBmaWxsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGluIGpjY29lZmN0LmM6DQorCSAgICogYWxsIHplcm9lcyBpbiB0aGUgQUMgZW50cmllcywgREMgZW50cmllcyBlcXVhbCB0byBwcmV2aW91cw0KKwkgICAqIGJsb2NrJ3MgREMgdmFsdWUuICBUaGUgaW5pdCByb3V0aW5lIGhhcyBhbHJlYWR5IHplcm9lZCB0aGUNCisJICAgKiBBQyBlbnRyaWVzLCBzbyB3ZSBuZWVkIG9ubHkgc2V0IHRoZSBEQyBlbnRyaWVzIGNvcnJlY3RseS4NCisJICAgKi8NCisJICBmb3IgKDsgeGluZGV4IDwgY29tcHB0ci0+TUNVX3dpZHRoOyB4aW5kZXgrKykgew0KKwkgICAgTUNVX2J1ZmZlcltibGtuXSA9IGNvZWYtPmR1bW15X2J1ZmZlcltibGtuXTsNCisJICAgIE1DVV9idWZmZXJbYmxrbl1bMF1bMF0gPSBNQ1VfYnVmZmVyW2Jsa24tMV1bMF1bMF07DQorCSAgICBibGtuKys7DQorCSAgfQ0KKwl9DQorICAgICAgfQ0KKyAgICAgIC8qIFRyeSB0byB3cml0ZSB0aGUgTUNVLiAqLw0KKyAgICAgIGlmICghICgqY2luZm8tPmVudHJvcHktPmVuY29kZV9tY3UpIChjaW5mbywgTUNVX2J1ZmZlcikpIHsNCisJLyogU3VzcGVuc2lvbiBmb3JjZWQ7IHVwZGF0ZSBzdGF0ZSBjb3VudGVycyBhbmQgZXhpdCAqLw0KKwljb2VmLT5NQ1VfdmVydF9vZmZzZXQgPSB5b2Zmc2V0Ow0KKwljb2VmLT5tY3VfY3RyID0gTUNVX2NvbF9udW07DQorCXJldHVybiBGQUxTRTsNCisgICAgICB9DQorICAgIH0NCisgICAgLyogQ29tcGxldGVkIGFuIE1DVSByb3csIGJ1dCBwZXJoYXBzIG5vdCBhbiBpTUNVIHJvdyAqLw0KKyAgICBjb2VmLT5tY3VfY3RyID0gMDsNCisgIH0NCisgIC8qIENvbXBsZXRlZCB0aGUgaU1DVSByb3csIGFkdmFuY2UgY291bnRlcnMgZm9yIG5leHQgb25lICovDQorICBjb2VmLT5pTUNVX3Jvd19udW0rKzsNCisgIHN0YXJ0X2lNQ1Vfcm93KGNpbmZvKTsNCisgIHJldHVybiBUUlVFOw0KK30NCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgY29lZmZpY2llbnQgYnVmZmVyIGNvbnRyb2xsZXIuDQorICoNCisgKiBFYWNoIHBhc3NlZCBjb2VmZmljaWVudCBhcnJheSBtdXN0IGJlIHRoZSByaWdodCBzaXplIGZvciB0aGF0DQorICogY29lZmZpY2llbnQ6IHdpZHRoX2luX2Jsb2NrcyB3aWRlIGFuZCBoZWlnaHRfaW5fYmxvY2tzIGhpZ2gsDQorICogd2l0aCB1bml0aGVpZ2h0IGF0IGxlYXN0IHZfc2FtcF9mYWN0b3IuDQorICovDQorDQorTE9DQUwodm9pZCkNCit0cmFuc2VuY29kZV9jb2VmX2NvbnRyb2xsZXIgKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCSAgICAganZpcnRfYmFycmF5X3B0ciAqIGNvZWZfYXJyYXlzKQ0KK3sNCisgIG15X2NvZWZfcHRyIGNvZWY7DQorICBKQkxPQ0tST1cgYnVmZmVyOw0KKyAgaW50IGk7DQorDQorICBjb2VmID0gKG15X2NvZWZfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQlTSVpFT0YobXlfY29lZl9jb250cm9sbGVyKSk7DQorICBjaW5mby0+Y29lZiA9IChzdHJ1Y3QganBlZ19jX2NvZWZfY29udHJvbGxlciAqKSBjb2VmOw0KKyAgY29lZi0+cHViLnN0YXJ0X3Bhc3MgPSBzdGFydF9wYXNzX2NvZWY7DQorICBjb2VmLT5wdWIuY29tcHJlc3NfZGF0YSA9IGNvbXByZXNzX291dHB1dDsNCisNCisgIC8qIFNhdmUgcG9pbnRlciB0byB2aXJ0dWFsIGFycmF5cyAqLw0KKyAgY29lZi0+d2hvbGVfaW1hZ2UgPSBjb2VmX2FycmF5czsNCisNCisgIC8qIEFsbG9jYXRlIGFuZCBwcmUtemVybyBzcGFjZSBmb3IgZHVtbXkgRENUIGJsb2Nrcy4gKi8NCisgIGJ1ZmZlciA9IChKQkxPQ0tST1cpDQorICAgICgqY2luZm8tPm1lbS0+YWxsb2NfbGFyZ2UpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCUNfTUFYX0JMT0NLU19JTl9NQ1UgKiBTSVpFT0YoSkJMT0NLKSk7DQorICBqemVyb19mYXIoKHZvaWQgRkFSICopIGJ1ZmZlciwgQ19NQVhfQkxPQ0tTX0lOX01DVSAqIFNJWkVPRihKQkxPQ0spKTsNCisgIGZvciAoaSA9IDA7IGkgPCBDX01BWF9CTE9DS1NfSU5fTUNVOyBpKyspIHsNCisgICAgY29lZi0+ZHVtbXlfYnVmZmVyW2ldID0gYnVmZmVyICsgaTsNCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRhcGltaW4uYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkYXBpbWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIyNGI3MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkYXBpbWluLmMKQEAgLTAsMCArMSwzOTggQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqZGFwaW1pbi5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5OCwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgYXBwbGljYXRpb24gaW50ZXJmYWNlIGNvZGUgZm9yIHRoZSBkZWNvbXByZXNzaW9uIGhhbGYNCisgKiBvZiB0aGUgSlBFRyBsaWJyYXJ5LiAgVGhlc2UgYXJlIHRoZSAibWluaW11bSIgQVBJIHJvdXRpbmVzIHRoYXQgbWF5IGJlDQorICogbmVlZGVkIGluIGVpdGhlciB0aGUgbm9ybWFsIGZ1bGwtZGVjb21wcmVzc2lvbiBjYXNlIG9yIHRoZQ0KKyAqIHRyYW5zY29kaW5nLW9ubHkgY2FzZS4NCisgKg0KKyAqIE1vc3Qgb2YgdGhlIHJvdXRpbmVzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBkaXJlY3RseSBieSBhbiBhcHBsaWNhdGlvbg0KKyAqIGFyZSBpbiB0aGlzIGZpbGUgb3IgaW4gamRhcGlzdGQuYy4gIEJ1dCBhbHNvIHNlZSBqY29tYXBpLmMgZm9yIHJvdXRpbmVzDQorICogc2hhcmVkIGJ5IGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLCBhbmQgamR0cmFucy5jIGZvciB0aGUgdHJhbnNjb2RpbmcNCisgKiBjYXNlLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6YXRpb24gb2YgYSBKUEVHIGRlY29tcHJlc3Npb24gb2JqZWN0Lg0KKyAqIFRoZSBlcnJvciBtYW5hZ2VyIG11c3QgYWxyZWFkeSBiZSBzZXQgdXAgKGluIGNhc2UgbWVtb3J5IG1hbmFnZXIgZmFpbHMpLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfQ3JlYXRlRGVjb21wcmVzcyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgaW50IHZlcnNpb24sIHNpemVfdCBzdHJ1Y3RzaXplKQ0KK3sNCisgIGludCBpOw0KKw0KKyAgLyogR3VhcmQgYWdhaW5zdCB2ZXJzaW9uIG1pc21hdGNoZXMgYmV0d2VlbiBsaWJyYXJ5IGFuZCBjYWxsZXIuICovDQorICBjaW5mby0+bWVtID0gTlVMTDsJCS8qIHNvIGpwZWdfZGVzdHJveSBrbm93cyBtZW0gbWdyIG5vdCBjYWxsZWQgKi8NCisgIGlmICh2ZXJzaW9uICE9IEpQRUdfTElCX1ZFUlNJT04pDQorICAgIEVSUkVYSVQyKGNpbmZvLCBKRVJSX0JBRF9MSUJfVkVSU0lPTiwgSlBFR19MSUJfVkVSU0lPTiwgdmVyc2lvbik7DQorICBpZiAoc3RydWN0c2l6ZSAhPSBTSVpFT0Yoc3RydWN0IGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QpKQ0KKyAgICBFUlJFWElUMihjaW5mbywgSkVSUl9CQURfU1RSVUNUX1NJWkUsIA0KKwkgICAgIChpbnQpIFNJWkVPRihzdHJ1Y3QganBlZ19kZWNvbXByZXNzX3N0cnVjdCksIChpbnQpIHN0cnVjdHNpemUpOw0KKw0KKyAgLyogRm9yIGRlYnVnZ2luZyBwdXJwb3Nlcywgd2UgemVybyB0aGUgd2hvbGUgbWFzdGVyIHN0cnVjdHVyZS4NCisgICAqIEJ1dCB0aGUgYXBwbGljYXRpb24gaGFzIGFscmVhZHkgc2V0IHRoZSBlcnIgcG9pbnRlciwgYW5kIG1heSBoYXZlIHNldA0KKyAgICogY2xpZW50X2RhdGEsIHNvIHdlIGhhdmUgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aG9zZSBmaWVsZHMuDQorICAgKiBOb3RlOiBpZiBhcHBsaWNhdGlvbiBoYXNuJ3Qgc2V0IGNsaWVudF9kYXRhLCB0b29scyBsaWtlIFB1cmlmeSBtYXkNCisgICAqIGNvbXBsYWluIGhlcmUuDQorICAgKi8NCisgIHsNCisgICAgc3RydWN0IGpwZWdfZXJyb3JfbWdyICogZXJyID0gY2luZm8tPmVycjsNCisgICAgdm9pZCAqIGNsaWVudF9kYXRhID0gY2luZm8tPmNsaWVudF9kYXRhOyAvKiBpZ25vcmUgUHVyaWZ5IGNvbXBsYWludCBoZXJlICovDQorICAgIE1FTVpFUk8oY2luZm8sIFNJWkVPRihzdHJ1Y3QganBlZ19kZWNvbXByZXNzX3N0cnVjdCkpOw0KKyAgICBjaW5mby0+ZXJyID0gZXJyOw0KKyAgICBjaW5mby0+Y2xpZW50X2RhdGEgPSBjbGllbnRfZGF0YTsNCisgIH0NCisgIGNpbmZvLT5pc19kZWNvbXByZXNzb3IgPSBUUlVFOw0KKw0KKyAgLyogSW5pdGlhbGl6ZSBhIG1lbW9yeSBtYW5hZ2VyIGluc3RhbmNlIGZvciB0aGlzIG9iamVjdCAqLw0KKyAgamluaXRfbWVtb3J5X21ncigoal9jb21tb25fcHRyKSBjaW5mbyk7DQorDQorICAvKiBaZXJvIG91dCBwb2ludGVycyB0byBwZXJtYW5lbnQgc3RydWN0dXJlcy4gKi8NCisgIGNpbmZvLT5wcm9ncmVzcyA9IE5VTEw7DQorICBjaW5mby0+c3JjID0gTlVMTDsNCisNCisgIGZvciAoaSA9IDA7IGkgPCBOVU1fUVVBTlRfVEJMUzsgaSsrKQ0KKyAgICBjaW5mby0+cXVhbnRfdGJsX3B0cnNbaV0gPSBOVUxMOw0KKw0KKyAgZm9yIChpID0gMDsgaSA8IE5VTV9IVUZGX1RCTFM7IGkrKykgew0KKyAgICBjaW5mby0+ZGNfaHVmZl90YmxfcHRyc1tpXSA9IE5VTEw7DQorICAgIGNpbmZvLT5hY19odWZmX3RibF9wdHJzW2ldID0gTlVMTDsNCisgIH0NCisNCisgIC8qIEluaXRpYWxpemUgbWFya2VyIHByb2Nlc3NvciBzbyBhcHBsaWNhdGlvbiBjYW4gb3ZlcnJpZGUgbWV0aG9kcw0KKyAgICogZm9yIENPTSwgQVBQbiBtYXJrZXJzIGJlZm9yZSBjYWxsaW5nIGpwZWdfcmVhZF9oZWFkZXIuDQorICAgKi8NCisgIGNpbmZvLT5tYXJrZXJfbGlzdCA9IE5VTEw7DQorICBqaW5pdF9tYXJrZXJfcmVhZGVyKGNpbmZvKTsNCisNCisgIC8qIEFuZCBpbml0aWFsaXplIHRoZSBvdmVyYWxsIGlucHV0IGNvbnRyb2xsZXIuICovDQorICBqaW5pdF9pbnB1dF9jb250cm9sbGVyKGNpbmZvKTsNCisNCisgIC8qIE9LLCBJJ20gcmVhZHkgKi8NCisgIGNpbmZvLT5nbG9iYWxfc3RhdGUgPSBEU1RBVEVfU1RBUlQ7DQorfQ0KKw0KKw0KKy8qDQorICogRGVzdHJ1Y3Rpb24gb2YgYSBKUEVHIGRlY29tcHJlc3Npb24gb2JqZWN0DQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19kZXN0cm95X2RlY29tcHJlc3MgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAganBlZ19kZXN0cm95KChqX2NvbW1vbl9wdHIpIGNpbmZvKTsgLyogdXNlIGNvbW1vbiByb3V0aW5lICovDQorfQ0KKw0KKw0KKy8qDQorICogQWJvcnQgcHJvY2Vzc2luZyBvZiBhIEpQRUcgZGVjb21wcmVzc2lvbiBvcGVyYXRpb24sDQorICogYnV0IGRvbid0IGRlc3Ryb3kgdGhlIG9iamVjdCBpdHNlbGYuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19hYm9ydF9kZWNvbXByZXNzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIGpwZWdfYWJvcnQoKGpfY29tbW9uX3B0cikgY2luZm8pOyAvKiB1c2UgY29tbW9uIHJvdXRpbmUgKi8NCit9DQorDQorDQorLyoNCisgKiBTZXQgZGVmYXVsdCBkZWNvbXByZXNzaW9uIHBhcmFtZXRlcnMuDQorICovDQorDQorTE9DQUwodm9pZCkNCitkZWZhdWx0X2RlY29tcHJlc3NfcGFybXMgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgLyogR3Vlc3MgdGhlIGlucHV0IGNvbG9yc3BhY2UsIGFuZCBzZXQgb3V0cHV0IGNvbG9yc3BhY2UgYWNjb3JkaW5nbHkuICovDQorICAvKiAoV2lzaCBKUEVHIGNvbW1pdHRlZSBoYWQgcHJvdmlkZWQgYSByZWFsIHdheSB0byBzcGVjaWZ5IHRoaXMuLi4pICovDQorICAvKiBOb3RlIGFwcGxpY2F0aW9uIG1heSBvdmVycmlkZSBvdXIgZ3Vlc3Nlcy4gKi8NCisgIHN3aXRjaCAoY2luZm8tPm51bV9jb21wb25lbnRzKSB7DQorICBjYXNlIDE6DQorICAgIGNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID0gSkNTX0dSQVlTQ0FMRTsNCisgICAgY2luZm8tPm91dF9jb2xvcl9zcGFjZSA9IEpDU19HUkFZU0NBTEU7DQorICAgIGJyZWFrOw0KKyAgICANCisgIGNhc2UgMzoNCisgICAgaWYgKGNpbmZvLT5zYXdfSkZJRl9tYXJrZXIpIHsNCisgICAgICBjaW5mby0+anBlZ19jb2xvcl9zcGFjZSA9IEpDU19ZQ2JDcjsgLyogSkZJRiBpbXBsaWVzIFlDYkNyICovDQorICAgIH0gZWxzZSBpZiAoY2luZm8tPnNhd19BZG9iZV9tYXJrZXIpIHsNCisgICAgICBzd2l0Y2ggKGNpbmZvLT5BZG9iZV90cmFuc2Zvcm0pIHsNCisgICAgICBjYXNlIDA6DQorCWNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID0gSkNTX1JHQjsNCisJYnJlYWs7DQorICAgICAgY2FzZSAxOg0KKwljaW5mby0+anBlZ19jb2xvcl9zcGFjZSA9IEpDU19ZQ2JDcjsNCisJYnJlYWs7DQorICAgICAgZGVmYXVsdDoNCisJV0FSTk1TMShjaW5mbywgSldSTl9BRE9CRV9YRk9STSwgY2luZm8tPkFkb2JlX3RyYW5zZm9ybSk7DQorCWNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID0gSkNTX1lDYkNyOyAvKiBhc3N1bWUgaXQncyBZQ2JDciAqLw0KKwlicmVhazsNCisgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgLyogU2F3IG5vIHNwZWNpYWwgbWFya2VycywgdHJ5IHRvIGd1ZXNzIGZyb20gdGhlIGNvbXBvbmVudCBJRHMgKi8NCisgICAgICBpbnQgY2lkMCA9IGNpbmZvLT5jb21wX2luZm9bMF0uY29tcG9uZW50X2lkOw0KKyAgICAgIGludCBjaWQxID0gY2luZm8tPmNvbXBfaW5mb1sxXS5jb21wb25lbnRfaWQ7DQorICAgICAgaW50IGNpZDIgPSBjaW5mby0+Y29tcF9pbmZvWzJdLmNvbXBvbmVudF9pZDsNCisNCisgICAgICBpZiAoY2lkMCA9PSAxICYmIGNpZDEgPT0gMiAmJiBjaWQyID09IDMpDQorCWNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID0gSkNTX1lDYkNyOyAvKiBhc3N1bWUgSkZJRiB3L291dCBtYXJrZXIgKi8NCisgICAgICBlbHNlIGlmIChjaWQwID09IDgyICYmIGNpZDEgPT0gNzEgJiYgY2lkMiA9PSA2NikNCisJY2luZm8tPmpwZWdfY29sb3Jfc3BhY2UgPSBKQ1NfUkdCOyAvKiBBU0NJSSAnUicsICdHJywgJ0InICovDQorICAgICAgZWxzZSB7DQorCVRSQUNFTVMzKGNpbmZvLCAxLCBKVFJDX1VOS05PV05fSURTLCBjaWQwLCBjaWQxLCBjaWQyKTsNCisJY2luZm8tPmpwZWdfY29sb3Jfc3BhY2UgPSBKQ1NfWUNiQ3I7IC8qIGFzc3VtZSBpdCdzIFlDYkNyICovDQorICAgICAgfQ0KKyAgICB9DQorICAgIC8qIEFsd2F5cyBndWVzcyBSR0IgaXMgcHJvcGVyIG91dHB1dCBjb2xvcnNwYWNlLiAqLw0KKyAgICBjaW5mby0+b3V0X2NvbG9yX3NwYWNlID0gSkNTX1JHQjsNCisgICAgYnJlYWs7DQorICAgIA0KKyAgY2FzZSA0Og0KKyAgICBpZiAoY2luZm8tPnNhd19BZG9iZV9tYXJrZXIpIHsNCisgICAgICBzd2l0Y2ggKGNpbmZvLT5BZG9iZV90cmFuc2Zvcm0pIHsNCisgICAgICBjYXNlIDA6DQorCWNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID0gSkNTX0NNWUs7DQorCWJyZWFrOw0KKyAgICAgIGNhc2UgMjoNCisJY2luZm8tPmpwZWdfY29sb3Jfc3BhY2UgPSBKQ1NfWUNDSzsNCisJYnJlYWs7DQorICAgICAgZGVmYXVsdDoNCisJV0FSTk1TMShjaW5mbywgSldSTl9BRE9CRV9YRk9STSwgY2luZm8tPkFkb2JlX3RyYW5zZm9ybSk7DQorCWNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID0gSkNTX1lDQ0s7IC8qIGFzc3VtZSBpdCdzIFlDQ0sgKi8NCisJYnJlYWs7DQorICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgIC8qIE5vIHNwZWNpYWwgbWFya2VycywgYXNzdW1lIHN0cmFpZ2h0IENNWUsuICovDQorICAgICAgY2luZm8tPmpwZWdfY29sb3Jfc3BhY2UgPSBKQ1NfQ01ZSzsNCisgICAgfQ0KKyAgICBjaW5mby0+b3V0X2NvbG9yX3NwYWNlID0gSkNTX0NNWUs7DQorICAgIGJyZWFrOw0KKyAgICANCisgIGRlZmF1bHQ6DQorICAgIGNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID0gSkNTX1VOS05PV047DQorICAgIGNpbmZvLT5vdXRfY29sb3Jfc3BhY2UgPSBKQ1NfVU5LTk9XTjsNCisgICAgYnJlYWs7DQorICB9DQorDQorICAvKiBTZXQgZGVmYXVsdHMgZm9yIG90aGVyIGRlY29tcHJlc3Npb24gcGFyYW1ldGVycy4gKi8NCisgIGNpbmZvLT5zY2FsZV9udW0gPSAxOwkJLyogMToxIHNjYWxpbmcgKi8NCisgIGNpbmZvLT5zY2FsZV9kZW5vbSA9IDE7DQorICBjaW5mby0+b3V0cHV0X2dhbW1hID0gMS4wOw0KKyAgY2luZm8tPmJ1ZmZlcmVkX2ltYWdlID0gRkFMU0U7DQorICBjaW5mby0+cmF3X2RhdGFfb3V0ID0gRkFMU0U7DQorICBjaW5mby0+ZGN0X21ldGhvZCA9IEpEQ1RfREVGQVVMVDsNCisgIGNpbmZvLT5kb19mYW5jeV91cHNhbXBsaW5nID0gVFJVRTsNCisgIGNpbmZvLT5kb19ibG9ja19zbW9vdGhpbmcgPSBUUlVFOw0KKyAgY2luZm8tPnF1YW50aXplX2NvbG9ycyA9IEZBTFNFOw0KKyAgLyogV2Ugc2V0IHRoZXNlIGluIGNhc2UgYXBwbGljYXRpb24gb25seSBzZXRzIHF1YW50aXplX2NvbG9ycy4gKi8NCisgIGNpbmZvLT5kaXRoZXJfbW9kZSA9IEpESVRIRVJfRlM7DQorI2lmZGVmIFFVQU5UXzJQQVNTX1NVUFBPUlRFRA0KKyAgY2luZm8tPnR3b19wYXNzX3F1YW50aXplID0gVFJVRTsNCisjZWxzZQ0KKyAgY2luZm8tPnR3b19wYXNzX3F1YW50aXplID0gRkFMU0U7DQorI2VuZGlmDQorICBjaW5mby0+ZGVzaXJlZF9udW1iZXJfb2ZfY29sb3JzID0gMjU2Ow0KKyAgY2luZm8tPmNvbG9ybWFwID0gTlVMTDsNCisgIC8qIEluaXRpYWxpemUgZm9yIG5vIG1vZGUgY2hhbmdlIGluIGJ1ZmZlcmVkLWltYWdlIG1vZGUuICovDQorICBjaW5mby0+ZW5hYmxlXzFwYXNzX3F1YW50ID0gRkFMU0U7DQorICBjaW5mby0+ZW5hYmxlX2V4dGVybmFsX3F1YW50ID0gRkFMU0U7DQorICBjaW5mby0+ZW5hYmxlXzJwYXNzX3F1YW50ID0gRkFMU0U7DQorfQ0KKw0KKw0KKy8qDQorICogRGVjb21wcmVzc2lvbiBzdGFydHVwOiByZWFkIHN0YXJ0IG9mIEpQRUcgZGF0YXN0cmVhbSB0byBzZWUgd2hhdCdzIHRoZXJlLg0KKyAqIE5lZWQgb25seSBpbml0aWFsaXplIEpQRUcgb2JqZWN0IGFuZCBzdXBwbHkgYSBkYXRhIHNvdXJjZSBiZWZvcmUgY2FsbGluZy4NCisgKg0KKyAqIFRoaXMgcm91dGluZSB3aWxsIHJlYWQgYXMgZmFyIGFzIHRoZSBmaXJzdCBTT1MgbWFya2VyIChpZSwgYWN0dWFsIHN0YXJ0IG9mDQorICogY29tcHJlc3NlZCBkYXRhKSwgYW5kIHdpbGwgc2F2ZSBhbGwgdGFibGVzIGFuZCBwYXJhbWV0ZXJzIGluIHRoZSBKUEVHDQorICogb2JqZWN0LiAgSXQgd2lsbCBhbHNvIGluaXRpYWxpemUgdGhlIGRlY29tcHJlc3Npb24gcGFyYW1ldGVycyB0byBkZWZhdWx0DQorICogdmFsdWVzLCBhbmQgZmluYWxseSByZXR1cm4gSlBFR19IRUFERVJfT0suICBPbiByZXR1cm4sIHRoZSBhcHBsaWNhdGlvbiBtYXkNCisgKiBhZGp1c3QgdGhlIGRlY29tcHJlc3Npb24gcGFyYW1ldGVycyBhbmQgdGhlbiBjYWxsIGpwZWdfc3RhcnRfZGVjb21wcmVzcy4NCisgKiAoT3IsIGlmIHRoZSBhcHBsaWNhdGlvbiBvbmx5IHdhbnRlZCB0byBkZXRlcm1pbmUgdGhlIGltYWdlIHBhcmFtZXRlcnMsDQorICogdGhlIGRhdGEgbmVlZCBub3QgYmUgZGVjb21wcmVzc2VkLiAgSW4gdGhhdCBjYXNlLCBjYWxsIGpwZWdfYWJvcnQgb3INCisgKiBqcGVnX2Rlc3Ryb3kgdG8gcmVsZWFzZSBhbnkgdGVtcG9yYXJ5IHNwYWNlLikNCisgKiBJZiBhbiBhYmJyZXZpYXRlZCAodGFibGVzIG9ubHkpIGRhdGFzdHJlYW0gaXMgcHJlc2VudGVkLCB0aGUgcm91dGluZSB3aWxsDQorICogcmV0dXJuIEpQRUdfSEVBREVSX1RBQkxFU19PTkxZIHVwb24gcmVhY2hpbmcgRU9JLiAgVGhlIGFwcGxpY2F0aW9uIG1heSB0aGVuDQorICogcmUtdXNlIHRoZSBKUEVHIG9iamVjdCB0byByZWFkIHRoZSBhYmJyZXZpYXRlZCBpbWFnZSBkYXRhc3RyZWFtKHMpLg0KKyAqIEl0IGlzIHVubmVjZXNzYXJ5IChidXQgT0spIHRvIGNhbGwganBlZ19hYm9ydCBpbiB0aGlzIGNhc2UuDQorICogVGhlIEpQRUdfU1VTUEVOREVEIHJldHVybiBjb2RlIG9ubHkgb2NjdXJzIGlmIHRoZSBkYXRhIHNvdXJjZSBtb2R1bGUNCisgKiByZXF1ZXN0cyBzdXNwZW5zaW9uIG9mIHRoZSBkZWNvbXByZXNzb3IuICBJbiB0aGlzIGNhc2UgdGhlIGFwcGxpY2F0aW9uDQorICogc2hvdWxkIGxvYWQgbW9yZSBzb3VyY2UgZGF0YSBhbmQgdGhlbiByZS1jYWxsIGpwZWdfcmVhZF9oZWFkZXIgdG8gcmVzdW1lDQorICogcHJvY2Vzc2luZy4NCisgKiBJZiBhIG5vbi1zdXNwZW5kaW5nIGRhdGEgc291cmNlIGlzIHVzZWQgYW5kIHJlcXVpcmVfaW1hZ2UgaXMgVFJVRSwgdGhlbiB0aGUNCisgKiByZXR1cm4gY29kZSBuZWVkIG5vdCBiZSBpbnNwZWN0ZWQgc2luY2Ugb25seSBKUEVHX0hFQURFUl9PSyBpcyBwb3NzaWJsZS4NCisgKg0KKyAqIFRoaXMgcm91dGluZSBpcyBub3cganVzdCBhIGZyb250IGVuZCB0byBqcGVnX2NvbnN1bWVfaW5wdXQsIHdpdGggc29tZQ0KKyAqIGV4dHJhIGVycm9yIGNoZWNraW5nLg0KKyAqLw0KKw0KK0dMT0JBTChpbnQpDQoranBlZ19yZWFkX2hlYWRlciAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgYm9vbGVhbiByZXF1aXJlX2ltYWdlKQ0KK3sNCisgIGludCByZXRjb2RlOw0KKw0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gRFNUQVRFX1NUQVJUICYmDQorICAgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSAhPSBEU1RBVEVfSU5IRUFERVIpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9TVEFURSwgY2luZm8tPmdsb2JhbF9zdGF0ZSk7DQorDQorICByZXRjb2RlID0ganBlZ19jb25zdW1lX2lucHV0KGNpbmZvKTsNCisNCisgIHN3aXRjaCAocmV0Y29kZSkgew0KKyAgY2FzZSBKUEVHX1JFQUNIRURfU09TOg0KKyAgICByZXRjb2RlID0gSlBFR19IRUFERVJfT0s7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKUEVHX1JFQUNIRURfRU9JOg0KKyAgICBpZiAocmVxdWlyZV9pbWFnZSkJCS8qIENvbXBsYWluIGlmIGFwcGxpY2F0aW9uIHdhbnRlZCBhbiBpbWFnZSAqLw0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfTk9fSU1BR0UpOw0KKyAgICAvKiBSZXNldCB0byBzdGFydCBzdGF0ZTsgaXQgd291bGQgYmUgc2FmZXIgdG8gcmVxdWlyZSB0aGUgYXBwbGljYXRpb24gdG8NCisgICAgICogY2FsbCBqcGVnX2Fib3J0LCBidXQgd2UgY2FuJ3QgY2hhbmdlIGl0IG5vdyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLg0KKyAgICAgKiBBIHNpZGUgZWZmZWN0IGlzIHRvIGZyZWUgYW55IHRlbXBvcmFyeSBtZW1vcnkgKHRoZXJlIHNob3VsZG4ndCBiZSBhbnkpLg0KKyAgICAgKi8NCisgICAganBlZ19hYm9ydCgoal9jb21tb25fcHRyKSBjaW5mbyk7IC8qIHNldHMgc3RhdGUgPSBEU1RBVEVfU1RBUlQgKi8NCisgICAgcmV0Y29kZSA9IEpQRUdfSEVBREVSX1RBQkxFU19PTkxZOw0KKyAgICBicmVhazsNCisgIGNhc2UgSlBFR19TVVNQRU5ERUQ6DQorICAgIC8qIG5vIHdvcmsgKi8NCisgICAgYnJlYWs7DQorICB9DQorDQorICByZXR1cm4gcmV0Y29kZTsNCit9DQorDQorDQorLyoNCisgKiBDb25zdW1lIGRhdGEgaW4gYWR2YW5jZSBvZiB3aGF0IHRoZSBkZWNvbXByZXNzb3IgcmVxdWlyZXMuDQorICogVGhpcyBjYW4gYmUgY2FsbGVkIGF0IGFueSB0aW1lIG9uY2UgdGhlIGRlY29tcHJlc3NvciBvYmplY3QgaGFzDQorICogYmVlbiBjcmVhdGVkIGFuZCBhIGRhdGEgc291cmNlIGhhcyBiZWVuIHNldCB1cC4NCisgKg0KKyAqIFRoaXMgcm91dGluZSBpcyBlc3NlbnRpYWxseSBhIHN0YXRlIG1hY2hpbmUgdGhhdCBoYW5kbGVzIGEgY291cGxlDQorICogb2YgY3JpdGljYWwgc3RhdGUtdHJhbnNpdGlvbiBhY3Rpb25zLCBuYW1lbHkgaW5pdGlhbCBzZXR1cCBhbmQNCisgKiB0cmFuc2l0aW9uIGZyb20gaGVhZGVyIHNjYW5uaW5nIHRvIHJlYWR5LWZvci1zdGFydF9kZWNvbXByZXNzLg0KKyAqIEFsbCB0aGUgYWN0dWFsIGlucHV0IGlzIGRvbmUgdmlhIHRoZSBpbnB1dCBjb250cm9sbGVyJ3MgY29uc3VtZV9pbnB1dA0KKyAqIG1ldGhvZC4NCisgKi8NCisNCitHTE9CQUwoaW50KQ0KK2pwZWdfY29uc3VtZV9pbnB1dCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBpbnQgcmV0Y29kZSA9IEpQRUdfU1VTUEVOREVEOw0KKw0KKyAgLyogTkI6IGV2ZXJ5IHBvc3NpYmxlIERTVEFURSB2YWx1ZSBzaG91bGQgYmUgbGlzdGVkIGluIHRoaXMgc3dpdGNoICovDQorICBzd2l0Y2ggKGNpbmZvLT5nbG9iYWxfc3RhdGUpIHsNCisgIGNhc2UgRFNUQVRFX1NUQVJUOg0KKyAgICAvKiBTdGFydC1vZi1kYXRhc3RyZWFtIGFjdGlvbnM6IHJlc2V0IGFwcHJvcHJpYXRlIG1vZHVsZXMgKi8NCisgICAgKCpjaW5mby0+aW5wdXRjdGwtPnJlc2V0X2lucHV0X2NvbnRyb2xsZXIpIChjaW5mbyk7DQorICAgIC8qIEluaXRpYWxpemUgYXBwbGljYXRpb24ncyBkYXRhIHNvdXJjZSBtb2R1bGUgKi8NCisgICAgKCpjaW5mby0+c3JjLT5pbml0X3NvdXJjZSkgKGNpbmZvKTsNCisgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSA9IERTVEFURV9JTkhFQURFUjsNCisgICAgLypGQUxMVEhST1VHSCovDQorICBjYXNlIERTVEFURV9JTkhFQURFUjoNCisgICAgcmV0Y29kZSA9ICgqY2luZm8tPmlucHV0Y3RsLT5jb25zdW1lX2lucHV0KSAoY2luZm8pOw0KKyAgICBpZiAocmV0Y29kZSA9PSBKUEVHX1JFQUNIRURfU09TKSB7IC8qIEZvdW5kIFNPUywgcHJlcGFyZSB0byBkZWNvbXByZXNzICovDQorICAgICAgLyogU2V0IHVwIGRlZmF1bHQgcGFyYW1ldGVycyBiYXNlZCBvbiBoZWFkZXIgZGF0YSAqLw0KKyAgICAgIGRlZmF1bHRfZGVjb21wcmVzc19wYXJtcyhjaW5mbyk7DQorICAgICAgLyogU2V0IGdsb2JhbCBzdGF0ZTogcmVhZHkgZm9yIHN0YXJ0X2RlY29tcHJlc3MgKi8NCisgICAgICBjaW5mby0+Z2xvYmFsX3N0YXRlID0gRFNUQVRFX1JFQURZOw0KKyAgICB9DQorICAgIGJyZWFrOw0KKyAgY2FzZSBEU1RBVEVfUkVBRFk6DQorICAgIC8qIENhbid0IGFkdmFuY2UgcGFzdCBmaXJzdCBTT1MgdW50aWwgc3RhcnRfZGVjb21wcmVzcyBpcyBjYWxsZWQgKi8NCisgICAgcmV0Y29kZSA9IEpQRUdfUkVBQ0hFRF9TT1M7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBEU1RBVEVfUFJFTE9BRDoNCisgIGNhc2UgRFNUQVRFX1BSRVNDQU46DQorICBjYXNlIERTVEFURV9TQ0FOTklORzoNCisgIGNhc2UgRFNUQVRFX1JBV19PSzoNCisgIGNhc2UgRFNUQVRFX0JVRklNQUdFOg0KKyAgY2FzZSBEU1RBVEVfQlVGUE9TVDoNCisgIGNhc2UgRFNUQVRFX1NUT1BQSU5HOg0KKyAgICByZXRjb2RlID0gKCpjaW5mby0+aW5wdXRjdGwtPmNvbnN1bWVfaW5wdXQpIChjaW5mbyk7DQorICAgIGJyZWFrOw0KKyAgZGVmYXVsdDoNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NUQVRFLCBjaW5mby0+Z2xvYmFsX3N0YXRlKTsNCisgIH0NCisgIHJldHVybiByZXRjb2RlOw0KK30NCisNCisNCisvKg0KKyAqIEhhdmUgd2UgZmluaXNoZWQgcmVhZGluZyB0aGUgaW5wdXQgZmlsZT8NCisgKi8NCisNCitHTE9CQUwoYm9vbGVhbikNCitqcGVnX2lucHV0X2NvbXBsZXRlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIC8qIENoZWNrIGZvciB2YWxpZCBqcGVnIG9iamVjdCAqLw0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgPCBEU1RBVEVfU1RBUlQgfHwNCisgICAgICBjaW5mby0+Z2xvYmFsX3N0YXRlID4gRFNUQVRFX1NUT1BQSU5HKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKyAgcmV0dXJuIGNpbmZvLT5pbnB1dGN0bC0+ZW9pX3JlYWNoZWQ7DQorfQ0KKw0KKw0KKy8qDQorICogSXMgdGhlcmUgbW9yZSB0aGFuIG9uZSBzY2FuPw0KKyAqLw0KKw0KK0dMT0JBTChib29sZWFuKQ0KK2pwZWdfaGFzX211bHRpcGxlX3NjYW5zIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIC8qIE9ubHkgdmFsaWQgYWZ0ZXIganBlZ19yZWFkX2hlYWRlciBjb21wbGV0ZXMgKi8NCisgIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlIDwgRFNUQVRFX1JFQURZIHx8DQorICAgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSA+IERTVEFURV9TVE9QUElORykNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NUQVRFLCBjaW5mby0+Z2xvYmFsX3N0YXRlKTsNCisgIHJldHVybiBjaW5mby0+aW5wdXRjdGwtPmhhc19tdWx0aXBsZV9zY2FuczsNCit9DQorDQorDQorLyoNCisgKiBGaW5pc2ggSlBFRyBkZWNvbXByZXNzaW9uLg0KKyAqDQorICogVGhpcyB3aWxsIG5vcm1hbGx5IGp1c3QgdmVyaWZ5IHRoZSBmaWxlIHRyYWlsZXIgYW5kIHJlbGVhc2UgdGVtcCBzdG9yYWdlLg0KKyAqDQorICogUmV0dXJucyBGQUxTRSBpZiBzdXNwZW5kZWQuICBUaGUgcmV0dXJuIHZhbHVlIG5lZWQgYmUgaW5zcGVjdGVkIG9ubHkgaWYNCisgKiBhIHN1c3BlbmRpbmcgZGF0YSBzb3VyY2UgaXMgdXNlZC4NCisgKi8NCisNCitHTE9CQUwoYm9vbGVhbikNCitqcGVnX2ZpbmlzaF9kZWNvbXByZXNzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIGlmICgoY2luZm8tPmdsb2JhbF9zdGF0ZSA9PSBEU1RBVEVfU0NBTk5JTkcgfHwNCisgICAgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSA9PSBEU1RBVEVfUkFXX09LKSAmJiAhIGNpbmZvLT5idWZmZXJlZF9pbWFnZSkgew0KKyAgICAvKiBUZXJtaW5hdGUgZmluYWwgcGFzcyBvZiBub24tYnVmZmVyZWQgbW9kZSAqLw0KKyAgICBpZiAoY2luZm8tPm91dHB1dF9zY2FubGluZSA8IGNpbmZvLT5vdXRwdXRfaGVpZ2h0KQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfVE9PX0xJVFRMRV9EQVRBKTsNCisgICAgKCpjaW5mby0+bWFzdGVyLT5maW5pc2hfb3V0cHV0X3Bhc3MpIChjaW5mbyk7DQorICAgIGNpbmZvLT5nbG9iYWxfc3RhdGUgPSBEU1RBVEVfU1RPUFBJTkc7DQorICB9IGVsc2UgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgPT0gRFNUQVRFX0JVRklNQUdFKSB7DQorICAgIC8qIEZpbmlzaGluZyBhZnRlciBhIGJ1ZmZlcmVkLWltYWdlIG9wZXJhdGlvbiAqLw0KKyAgICBjaW5mby0+Z2xvYmFsX3N0YXRlID0gRFNUQVRFX1NUT1BQSU5HOw0KKyAgfSBlbHNlIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlICE9IERTVEFURV9TVE9QUElORykgew0KKyAgICAvKiBTVE9QUElORyA9IHJlcGVhdCBjYWxsIGFmdGVyIGEgc3VzcGVuc2lvbiwgYW55dGhpbmcgZWxzZSBpcyBlcnJvciAqLw0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKyAgfQ0KKyAgLyogUmVhZCB1bnRpbCBFT0kgKi8NCisgIHdoaWxlICghIGNpbmZvLT5pbnB1dGN0bC0+ZW9pX3JlYWNoZWQpIHsNCisgICAgaWYgKCgqY2luZm8tPmlucHV0Y3RsLT5jb25zdW1lX2lucHV0KSAoY2luZm8pID09IEpQRUdfU1VTUEVOREVEKQ0KKyAgICAgIHJldHVybiBGQUxTRTsJCS8qIFN1c3BlbmQsIGNvbWUgYmFjayBsYXRlciAqLw0KKyAgfQ0KKyAgLyogRG8gZmluYWwgY2xlYW51cCAqLw0KKyAgKCpjaW5mby0+c3JjLT50ZXJtX3NvdXJjZSkgKGNpbmZvKTsNCisgIC8qIFdlIGNhbiB1c2UganBlZ19hYm9ydCB0byByZWxlYXNlIG1lbW9yeSBhbmQgcmVzZXQgZ2xvYmFsX3N0YXRlICovDQorICBqcGVnX2Fib3J0KChqX2NvbW1vbl9wdHIpIGNpbmZvKTsNCisgIHJldHVybiBUUlVFOw0KK30NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZGFwaXN0ZC5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRhcGlzdGQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzk2OWViCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRhcGlzdGQuYwpAQCAtMCwwICsxLDI3OSBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGpkYXBpc3RkLmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk2LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyBhcHBsaWNhdGlvbiBpbnRlcmZhY2UgY29kZSBmb3IgdGhlIGRlY29tcHJlc3Npb24gaGFsZg0KKyAqIG9mIHRoZSBKUEVHIGxpYnJhcnkuICBUaGVzZSBhcmUgdGhlICJzdGFuZGFyZCIgQVBJIHJvdXRpbmVzIHRoYXQgYXJlDQorICogdXNlZCBpbiB0aGUgbm9ybWFsIGZ1bGwtZGVjb21wcmVzc2lvbiBjYXNlLiAgVGhleSBhcmUgbm90IHVzZWQgYnkgYQ0KKyAqIHRyYW5zY29kaW5nLW9ubHkgYXBwbGljYXRpb24uICBOb3RlIHRoYXQgaWYgYW4gYXBwbGljYXRpb24gbGlua3MgaW4NCisgKiBqcGVnX3N0YXJ0X2RlY29tcHJlc3MsIGl0IHdpbGwgZW5kIHVwIGxpbmtpbmcgaW4gdGhlIGVudGlyZSBkZWNvbXByZXNzb3IuDQorICogV2UgdGh1cyBtdXN0IHNlcGFyYXRlIHRoaXMgZmlsZSBmcm9tIGpkYXBpbWluLmMgdG8gYXZvaWQgbGlua2luZyB0aGUNCisgKiB3aG9sZSBkZWNvbXByZXNzaW9uIGxpYnJhcnkgaW50byBhIHRyYW5zY29kZXIuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQorLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8NCitMT0NBTChib29sZWFuKSBvdXRwdXRfcGFzc19zZXR1cCBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisNCisNCisvKg0KKyAqIERlY29tcHJlc3Npb24gaW5pdGlhbGl6YXRpb24uDQorICoganBlZ19yZWFkX2hlYWRlciBtdXN0IGJlIGNvbXBsZXRlZCBiZWZvcmUgY2FsbGluZyB0aGlzLg0KKyAqDQorICogSWYgYSBtdWx0aXBhc3Mgb3BlcmF0aW5nIG1vZGUgd2FzIHNlbGVjdGVkLCB0aGlzIHdpbGwgZG8gYWxsIGJ1dCB0aGUNCisgKiBsYXN0IHBhc3MsIGFuZCB0aHVzIG1heSB0YWtlIGEgZ3JlYXQgZGVhbCBvZiB0aW1lLg0KKyAqDQorICogUmV0dXJucyBGQUxTRSBpZiBzdXNwZW5kZWQuICBUaGUgcmV0dXJuIHZhbHVlIG5lZWQgYmUgaW5zcGVjdGVkIG9ubHkgaWYNCisgKiBhIHN1c3BlbmRpbmcgZGF0YSBzb3VyY2UgaXMgdXNlZC4NCisgKi8NCisNCitHTE9CQUwoYm9vbGVhbikNCitqcGVnX3N0YXJ0X2RlY29tcHJlc3MgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgPT0gRFNUQVRFX1JFQURZKSB7DQorICAgIC8qIEZpcnN0IGNhbGw6IGluaXRpYWxpemUgbWFzdGVyIGNvbnRyb2wsIHNlbGVjdCBhY3RpdmUgbW9kdWxlcyAqLw0KKyAgICBqaW5pdF9tYXN0ZXJfZGVjb21wcmVzcyhjaW5mbyk7DQorICAgIGlmIChjaW5mby0+YnVmZmVyZWRfaW1hZ2UpIHsNCisgICAgICAvKiBObyBtb3JlIHdvcmsgaGVyZTsgZXhwZWN0aW5nIGpwZWdfc3RhcnRfb3V0cHV0IG5leHQgKi8NCisgICAgICBjaW5mby0+Z2xvYmFsX3N0YXRlID0gRFNUQVRFX0JVRklNQUdFOw0KKyAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGNpbmZvLT5nbG9iYWxfc3RhdGUgPSBEU1RBVEVfUFJFTE9BRDsNCisgIH0NCisgIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlID09IERTVEFURV9QUkVMT0FEKSB7DQorICAgIC8qIElmIGZpbGUgaGFzIG11bHRpcGxlIHNjYW5zLCBhYnNvcmIgdGhlbSBhbGwgaW50byB0aGUgY29lZiBidWZmZXIgKi8NCisgICAgaWYgKGNpbmZvLT5pbnB1dGN0bC0+aGFzX211bHRpcGxlX3NjYW5zKSB7DQorI2lmZGVmIERfTVVMVElTQ0FOX0ZJTEVTX1NVUFBPUlRFRA0KKyAgICAgIGZvciAoOzspIHsNCisJaW50IHJldGNvZGU7DQorCS8qIENhbGwgcHJvZ3Jlc3MgbW9uaXRvciBob29rIGlmIHByZXNlbnQgKi8NCisJaWYgKGNpbmZvLT5wcm9ncmVzcyAhPSBOVUxMKQ0KKwkgICgqY2luZm8tPnByb2dyZXNzLT5wcm9ncmVzc19tb25pdG9yKSAoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKwkvKiBBYnNvcmIgc29tZSBtb3JlIGlucHV0ICovDQorCXJldGNvZGUgPSAoKmNpbmZvLT5pbnB1dGN0bC0+Y29uc3VtZV9pbnB1dCkgKGNpbmZvKTsNCisJaWYgKHJldGNvZGUgPT0gSlBFR19TVVNQRU5ERUQpDQorCSAgcmV0dXJuIEZBTFNFOw0KKwlpZiAocmV0Y29kZSA9PSBKUEVHX1JFQUNIRURfRU9JKQ0KKwkgIGJyZWFrOw0KKwkvKiBBZHZhbmNlIHByb2dyZXNzIGNvdW50ZXIgaWYgYXBwcm9wcmlhdGUgKi8NCisJaWYgKGNpbmZvLT5wcm9ncmVzcyAhPSBOVUxMICYmDQorCSAgICAocmV0Y29kZSA9PSBKUEVHX1JPV19DT01QTEVURUQgfHwgcmV0Y29kZSA9PSBKUEVHX1JFQUNIRURfU09TKSkgew0KKwkgIGlmICgrK2NpbmZvLT5wcm9ncmVzcy0+cGFzc19jb3VudGVyID49IGNpbmZvLT5wcm9ncmVzcy0+cGFzc19saW1pdCkgew0KKwkgICAgLyogamRtYXN0ZXIgdW5kZXJlc3RpbWF0ZWQgbnVtYmVyIG9mIHNjYW5zOyByYXRjaGV0IHVwIG9uZSBzY2FuICovDQorCSAgICBjaW5mby0+cHJvZ3Jlc3MtPnBhc3NfbGltaXQgKz0gKGxvbmcpIGNpbmZvLT50b3RhbF9pTUNVX3Jvd3M7DQorCSAgfQ0KKwl9DQorICAgICAgfQ0KKyNlbHNlDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyNlbmRpZiAvKiBEX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQgKi8NCisgICAgfQ0KKyAgICBjaW5mby0+b3V0cHV0X3NjYW5fbnVtYmVyID0gY2luZm8tPmlucHV0X3NjYW5fbnVtYmVyOw0KKyAgfSBlbHNlIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlICE9IERTVEFURV9QUkVTQ0FOKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKyAgLyogUGVyZm9ybSBhbnkgZHVtbXkgb3V0cHV0IHBhc3NlcywgYW5kIHNldCB1cCBmb3IgdGhlIGZpbmFsIHBhc3MgKi8NCisgIHJldHVybiBvdXRwdXRfcGFzc19zZXR1cChjaW5mbyk7DQorfQ0KKw0KKw0KKy8qDQorICogU2V0IHVwIGZvciBhbiBvdXRwdXQgcGFzcywgYW5kIHBlcmZvcm0gYW55IGR1bW15IHBhc3MoZXMpIG5lZWRlZC4NCisgKiBDb21tb24gc3Vicm91dGluZSBmb3IganBlZ19zdGFydF9kZWNvbXByZXNzIGFuZCBqcGVnX3N0YXJ0X291dHB1dC4NCisgKiBFbnRyeTogZ2xvYmFsX3N0YXRlID0gRFNUQVRFX1BSRVNDQU4gb25seSBpZiBwcmV2aW91c2x5IHN1c3BlbmRlZC4NCisgKiBFeGl0OiBJZiBkb25lLCByZXR1cm5zIFRSVUUgYW5kIHNldHMgZ2xvYmFsX3N0YXRlIGZvciBwcm9wZXIgb3V0cHV0IG1vZGUuDQorICogICAgICAgSWYgc3VzcGVuZGVkLCByZXR1cm5zIEZBTFNFIGFuZCBzZXRzIGdsb2JhbF9zdGF0ZSA9IERTVEFURV9QUkVTQ0FOLg0KKyAqLw0KKw0KK0xPQ0FMKGJvb2xlYW4pDQorb3V0cHV0X3Bhc3Nfc2V0dXAgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gRFNUQVRFX1BSRVNDQU4pIHsNCisgICAgLyogRmlyc3QgY2FsbDogZG8gcGFzcyBzZXR1cCAqLw0KKyAgICAoKmNpbmZvLT5tYXN0ZXItPnByZXBhcmVfZm9yX291dHB1dF9wYXNzKSAoY2luZm8pOw0KKyAgICBjaW5mby0+b3V0cHV0X3NjYW5saW5lID0gMDsNCisgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSA9IERTVEFURV9QUkVTQ0FOOw0KKyAgfQ0KKyAgLyogTG9vcCBvdmVyIGFueSByZXF1aXJlZCBkdW1teSBwYXNzZXMgKi8NCisgIHdoaWxlIChjaW5mby0+bWFzdGVyLT5pc19kdW1teV9wYXNzKSB7DQorI2lmZGVmIFFVQU5UXzJQQVNTX1NVUFBPUlRFRA0KKyAgICAvKiBDcmFuayB0aHJvdWdoIHRoZSBkdW1teSBwYXNzICovDQorICAgIHdoaWxlIChjaW5mby0+b3V0cHV0X3NjYW5saW5lIDwgY2luZm8tPm91dHB1dF9oZWlnaHQpIHsNCisgICAgICBKRElNRU5TSU9OIGxhc3Rfc2NhbmxpbmU7DQorICAgICAgLyogQ2FsbCBwcm9ncmVzcyBtb25pdG9yIGhvb2sgaWYgcHJlc2VudCAqLw0KKyAgICAgIGlmIChjaW5mby0+cHJvZ3Jlc3MgIT0gTlVMTCkgew0KKwljaW5mby0+cHJvZ3Jlc3MtPnBhc3NfY291bnRlciA9IChsb25nKSBjaW5mby0+b3V0cHV0X3NjYW5saW5lOw0KKwljaW5mby0+cHJvZ3Jlc3MtPnBhc3NfbGltaXQgPSAobG9uZykgY2luZm8tPm91dHB1dF9oZWlnaHQ7DQorCSgqY2luZm8tPnByb2dyZXNzLT5wcm9ncmVzc19tb25pdG9yKSAoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKyAgICAgIH0NCisgICAgICAvKiBQcm9jZXNzIHNvbWUgZGF0YSAqLw0KKyAgICAgIGxhc3Rfc2NhbmxpbmUgPSBjaW5mby0+b3V0cHV0X3NjYW5saW5lOw0KKyAgICAgICgqY2luZm8tPm1haW4tPnByb2Nlc3NfZGF0YSkgKGNpbmZvLCAoSlNBTVBBUlJBWSkgTlVMTCwNCisJCQkJICAgICZjaW5mby0+b3V0cHV0X3NjYW5saW5lLCAoSkRJTUVOU0lPTikgMCk7DQorICAgICAgaWYgKGNpbmZvLT5vdXRwdXRfc2NhbmxpbmUgPT0gbGFzdF9zY2FubGluZSkNCisJcmV0dXJuIEZBTFNFOwkJLyogTm8gcHJvZ3Jlc3MgbWFkZSwgbXVzdCBzdXNwZW5kICovDQorICAgIH0NCisgICAgLyogRmluaXNoIHVwIGR1bW15IHBhc3MsIGFuZCBzZXQgdXAgZm9yIGFub3RoZXIgb25lICovDQorICAgICgqY2luZm8tPm1hc3Rlci0+ZmluaXNoX291dHB1dF9wYXNzKSAoY2luZm8pOw0KKyAgICAoKmNpbmZvLT5tYXN0ZXItPnByZXBhcmVfZm9yX291dHB1dF9wYXNzKSAoY2luZm8pOw0KKyAgICBjaW5mby0+b3V0cHV0X3NjYW5saW5lID0gMDsNCisjZWxzZQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX05PVF9DT01QSUxFRCk7DQorI2VuZGlmIC8qIFFVQU5UXzJQQVNTX1NVUFBPUlRFRCAqLw0KKyAgfQ0KKyAgLyogUmVhZHkgZm9yIGFwcGxpY2F0aW9uIHRvIGRyaXZlIG91dHB1dCBwYXNzIHRocm91Z2gNCisgICAqIGpwZWdfcmVhZF9zY2FubGluZXMgb3IganBlZ19yZWFkX3Jhd19kYXRhLg0KKyAgICovDQorICBjaW5mby0+Z2xvYmFsX3N0YXRlID0gY2luZm8tPnJhd19kYXRhX291dCA/IERTVEFURV9SQVdfT0sgOiBEU1RBVEVfU0NBTk5JTkc7DQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBSZWFkIHNvbWUgc2NhbmxpbmVzIG9mIGRhdGEgZnJvbSB0aGUgSlBFRyBkZWNvbXByZXNzb3IuDQorICoNCisgKiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdGhlIG51bWJlciBvZiBsaW5lcyBhY3R1YWxseSByZWFkLg0KKyAqIFRoaXMgbWF5IGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIHJlcXVlc3RlZCBpbiBzZXZlcmFsIGNhc2VzLA0KKyAqIGluY2x1ZGluZyBib3R0b20gb2YgaW1hZ2UsIGRhdGEgc291cmNlIHN1c3BlbnNpb24sIGFuZCBvcGVyYXRpbmcNCisgKiBtb2RlcyB0aGF0IGVtaXQgbXVsdGlwbGUgc2NhbmxpbmVzIGF0IGEgdGltZS4NCisgKg0KKyAqIE5vdGU6IHdlIHdhcm4gYWJvdXQgZXhjZXNzIGNhbGxzIHRvIGpwZWdfcmVhZF9zY2FubGluZXMoKSBzaW5jZQ0KKyAqIHRoaXMgbGlrZWx5IHNpZ25hbHMgYW4gYXBwbGljYXRpb24gcHJvZ3JhbW1lciBlcnJvci4gIEhvd2V2ZXIsDQorICogYW4gb3ZlcnNpemUgYnVmZmVyIChtYXhfbGluZXMgPiBzY2FubGluZXMgcmVtYWluaW5nKSBpcyBub3QgYW4gZXJyb3IuDQorICovDQorDQorR0xPQkFMKEpESU1FTlNJT04pDQoranBlZ19yZWFkX3NjYW5saW5lcyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgSlNBTVBBUlJBWSBzY2FubGluZXMsDQorCQkgICAgIEpESU1FTlNJT04gbWF4X2xpbmVzKQ0KK3sNCisgIEpESU1FTlNJT04gcm93X2N0cjsNCisNCisgIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlICE9IERTVEFURV9TQ0FOTklORykNCisJICByZXR1cm4gMDsgLyogWFlRIDIwMTAtNi0yNzogZG9uJ3QgdGhyb3cgZXhjZXB0aW9uIGhlcmUgKi8NCisvKiAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOyAqLw0KKyAgaWYgKGNpbmZvLT5vdXRwdXRfc2NhbmxpbmUgPj0gY2luZm8tPm91dHB1dF9oZWlnaHQpIHsNCisgICAgV0FSTk1TKGNpbmZvLCBKV1JOX1RPT19NVUNIX0RBVEEpOw0KKyAgICByZXR1cm4gMDsNCisgIH0NCisNCisgIC8qIENhbGwgcHJvZ3Jlc3MgbW9uaXRvciBob29rIGlmIHByZXNlbnQgKi8NCisgIGlmIChjaW5mby0+cHJvZ3Jlc3MgIT0gTlVMTCkgew0KKyAgICBjaW5mby0+cHJvZ3Jlc3MtPnBhc3NfY291bnRlciA9IChsb25nKSBjaW5mby0+b3V0cHV0X3NjYW5saW5lOw0KKyAgICBjaW5mby0+cHJvZ3Jlc3MtPnBhc3NfbGltaXQgPSAobG9uZykgY2luZm8tPm91dHB1dF9oZWlnaHQ7DQorICAgICgqY2luZm8tPnByb2dyZXNzLT5wcm9ncmVzc19tb25pdG9yKSAoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKyAgfQ0KKw0KKyAgLyogUHJvY2VzcyBzb21lIGRhdGEgKi8NCisgIHJvd19jdHIgPSAwOw0KKyAgKCpjaW5mby0+bWFpbi0+cHJvY2Vzc19kYXRhKSAoY2luZm8sIHNjYW5saW5lcywgJnJvd19jdHIsIG1heF9saW5lcyk7DQorICBjaW5mby0+b3V0cHV0X3NjYW5saW5lICs9IHJvd19jdHI7DQorICByZXR1cm4gcm93X2N0cjsNCit9DQorDQorDQorLyoNCisgKiBBbHRlcm5hdGUgZW50cnkgcG9pbnQgdG8gcmVhZCByYXcgZGF0YS4NCisgKiBQcm9jZXNzZXMgZXhhY3RseSBvbmUgaU1DVSByb3cgcGVyIGNhbGwsIHVubGVzcyBzdXNwZW5kZWQuDQorICovDQorDQorR0xPQkFMKEpESU1FTlNJT04pDQoranBlZ19yZWFkX3Jhd19kYXRhIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBKU0FNUElNQUdFIGRhdGEsDQorCQkgICAgSkRJTUVOU0lPTiBtYXhfbGluZXMpDQorew0KKyAgSkRJTUVOU0lPTiBsaW5lc19wZXJfaU1DVV9yb3c7DQorDQorICBpZiAoY2luZm8tPmdsb2JhbF9zdGF0ZSAhPSBEU1RBVEVfUkFXX09LKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKyAgaWYgKGNpbmZvLT5vdXRwdXRfc2NhbmxpbmUgPj0gY2luZm8tPm91dHB1dF9oZWlnaHQpIHsNCisgICAgV0FSTk1TKGNpbmZvLCBKV1JOX1RPT19NVUNIX0RBVEEpOw0KKyAgICByZXR1cm4gMDsNCisgIH0NCisNCisgIC8qIENhbGwgcHJvZ3Jlc3MgbW9uaXRvciBob29rIGlmIHByZXNlbnQgKi8NCisgIGlmIChjaW5mby0+cHJvZ3Jlc3MgIT0gTlVMTCkgew0KKyAgICBjaW5mby0+cHJvZ3Jlc3MtPnBhc3NfY291bnRlciA9IChsb25nKSBjaW5mby0+b3V0cHV0X3NjYW5saW5lOw0KKyAgICBjaW5mby0+cHJvZ3Jlc3MtPnBhc3NfbGltaXQgPSAobG9uZykgY2luZm8tPm91dHB1dF9oZWlnaHQ7DQorICAgICgqY2luZm8tPnByb2dyZXNzLT5wcm9ncmVzc19tb25pdG9yKSAoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKyAgfQ0KKw0KKyAgLyogVmVyaWZ5IHRoYXQgYXQgbGVhc3Qgb25lIGlNQ1Ugcm93IGNhbiBiZSByZXR1cm5lZC4gKi8NCisgIGxpbmVzX3Blcl9pTUNVX3JvdyA9IGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvciAqIGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplOw0KKyAgaWYgKG1heF9saW5lcyA8IGxpbmVzX3Blcl9pTUNVX3JvdykNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CVUZGRVJfU0laRSk7DQorDQorICAvKiBEZWNvbXByZXNzIGRpcmVjdGx5IGludG8gdXNlcidzIGJ1ZmZlci4gKi8NCisgIGlmICghICgqY2luZm8tPmNvZWYtPmRlY29tcHJlc3NfZGF0YSkgKGNpbmZvLCBkYXRhKSkNCisgICAgcmV0dXJuIDA7CQkJLyogc3VzcGVuc2lvbiBmb3JjZWQsIGNhbiBkbyBub3RoaW5nIG1vcmUgKi8NCisNCisgIC8qIE9LLCB3ZSBwcm9jZXNzZWQgb25lIGlNQ1Ugcm93LiAqLw0KKyAgY2luZm8tPm91dHB1dF9zY2FubGluZSArPSBsaW5lc19wZXJfaU1DVV9yb3c7DQorICByZXR1cm4gbGluZXNfcGVyX2lNQ1Vfcm93Ow0KK30NCisNCisNCisvKiBBZGRpdGlvbmFsIGVudHJ5IHBvaW50cyBmb3IgYnVmZmVyZWQtaW1hZ2UgbW9kZS4gKi8NCisNCisjaWZkZWYgRF9NVUxUSVNDQU5fRklMRVNfU1VQUE9SVEVEDQorDQorLyoNCisgKiBJbml0aWFsaXplIGZvciBhbiBvdXRwdXQgcGFzcyBpbiBidWZmZXJlZC1pbWFnZSBtb2RlLg0KKyAqLw0KKw0KK0dMT0JBTChib29sZWFuKQ0KK2pwZWdfc3RhcnRfb3V0cHV0IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgc2Nhbl9udW1iZXIpDQorew0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gRFNUQVRFX0JVRklNQUdFICYmDQorICAgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSAhPSBEU1RBVEVfUFJFU0NBTikNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NUQVRFLCBjaW5mby0+Z2xvYmFsX3N0YXRlKTsNCisgIC8qIExpbWl0IHNjYW4gbnVtYmVyIHRvIHZhbGlkIHJhbmdlICovDQorICBpZiAoc2Nhbl9udW1iZXIgPD0gMCkNCisgICAgc2Nhbl9udW1iZXIgPSAxOw0KKyAgaWYgKGNpbmZvLT5pbnB1dGN0bC0+ZW9pX3JlYWNoZWQgJiYNCisgICAgICBzY2FuX251bWJlciA+IGNpbmZvLT5pbnB1dF9zY2FuX251bWJlcikNCisgICAgc2Nhbl9udW1iZXIgPSBjaW5mby0+aW5wdXRfc2Nhbl9udW1iZXI7DQorICBjaW5mby0+b3V0cHV0X3NjYW5fbnVtYmVyID0gc2Nhbl9udW1iZXI7DQorICAvKiBQZXJmb3JtIGFueSBkdW1teSBvdXRwdXQgcGFzc2VzLCBhbmQgc2V0IHVwIGZvciB0aGUgcmVhbCBwYXNzICovDQorICByZXR1cm4gb3V0cHV0X3Bhc3Nfc2V0dXAoY2luZm8pOw0KK30NCisNCisNCisvKg0KKyAqIEZpbmlzaCB1cCBhZnRlciBhbiBvdXRwdXQgcGFzcyBpbiBidWZmZXJlZC1pbWFnZSBtb2RlLg0KKyAqDQorICogUmV0dXJucyBGQUxTRSBpZiBzdXNwZW5kZWQuICBUaGUgcmV0dXJuIHZhbHVlIG5lZWQgYmUgaW5zcGVjdGVkIG9ubHkgaWYNCisgKiBhIHN1c3BlbmRpbmcgZGF0YSBzb3VyY2UgaXMgdXNlZC4NCisgKi8NCisNCitHTE9CQUwoYm9vbGVhbikNCitqcGVnX2ZpbmlzaF9vdXRwdXQgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgaWYgKChjaW5mby0+Z2xvYmFsX3N0YXRlID09IERTVEFURV9TQ0FOTklORyB8fA0KKyAgICAgICBjaW5mby0+Z2xvYmFsX3N0YXRlID09IERTVEFURV9SQVdfT0spICYmIGNpbmZvLT5idWZmZXJlZF9pbWFnZSkgew0KKyAgICAvKiBUZXJtaW5hdGUgdGhpcyBwYXNzLiAqLw0KKyAgICAvKiBXZSBkbyBub3QgcmVxdWlyZSB0aGUgd2hvbGUgcGFzcyB0byBoYXZlIGJlZW4gY29tcGxldGVkLiAqLw0KKyAgICAoKmNpbmZvLT5tYXN0ZXItPmZpbmlzaF9vdXRwdXRfcGFzcykgKGNpbmZvKTsNCisgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSA9IERTVEFURV9CVUZQT1NUOw0KKyAgfSBlbHNlIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlICE9IERTVEFURV9CVUZQT1NUKSB7DQorICAgIC8qIEJVRlBPU1QgPSByZXBlYXQgY2FsbCBhZnRlciBhIHN1c3BlbnNpb24sIGFueXRoaW5nIGVsc2UgaXMgZXJyb3IgKi8NCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1NUQVRFLCBjaW5mby0+Z2xvYmFsX3N0YXRlKTsNCisgIH0NCisgIC8qIFJlYWQgbWFya2VycyBsb29raW5nIGZvciBTT1Mgb3IgRU9JICovDQorICB3aGlsZSAoY2luZm8tPmlucHV0X3NjYW5fbnVtYmVyIDw9IGNpbmZvLT5vdXRwdXRfc2Nhbl9udW1iZXIgJiYNCisJICEgY2luZm8tPmlucHV0Y3RsLT5lb2lfcmVhY2hlZCkgew0KKyAgICBpZiAoKCpjaW5mby0+aW5wdXRjdGwtPmNvbnN1bWVfaW5wdXQpIChjaW5mbykgPT0gSlBFR19TVVNQRU5ERUQpDQorICAgICAgcmV0dXJuIEZBTFNFOwkJLyogU3VzcGVuZCwgY29tZSBiYWNrIGxhdGVyICovDQorICB9DQorICBjaW5mby0+Z2xvYmFsX3N0YXRlID0gRFNUQVRFX0JVRklNQUdFOw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKyNlbmRpZiAvKiBEX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQgKi8NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZGNvZWZjdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRjb2VmY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTA0MWYzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRjb2VmY3QuYwpAQCAtMCwwICsxLDczOSBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGpkY29lZmN0LmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk3LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29lZmZpY2llbnQgYnVmZmVyIGNvbnRyb2xsZXIgZm9yIGRlY29tcHJlc3Npb24uDQorICogVGhpcyBjb250cm9sbGVyIGlzIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIEpQRUcgZGVjb21wcmVzc29yIHByb3Blci4NCisgKiBUaGUgY29lZmZpY2llbnQgYnVmZmVyIGxpZXMgYmV0d2VlbiBlbnRyb3B5IGRlY29kaW5nIGFuZCBpbnZlcnNlLURDVCBzdGVwcy4NCisgKg0KKyAqIEluIGJ1ZmZlcmVkLWltYWdlIG1vZGUsIHRoaXMgY29udHJvbGxlciBpcyB0aGUgaW50ZXJmYWNlIGJldHdlZW4NCisgKiBpbnB1dC1vcmllbnRlZCBwcm9jZXNzaW5nIGFuZCBvdXRwdXQtb3JpZW50ZWQgcHJvY2Vzc2luZy4NCisgKiBBbHNvLCB0aGUgaW5wdXQgc2lkZSAob25seSkgaXMgdXNlZCB3aGVuIHJlYWRpbmcgYSBmaWxlIGZvciB0cmFuc2NvZGluZy4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisNCisvKiBCbG9jayBzbW9vdGhpbmcgaXMgb25seSBhcHBsaWNhYmxlIGZvciBwcm9ncmVzc2l2ZSBKUEVHLCBzbzogKi8NCisjaWZuZGVmIERfUFJPR1JFU1NJVkVfU1VQUE9SVEVEDQorI3VuZGVmIEJMT0NLX1NNT09USElOR19TVVBQT1JURUQNCisjZW5kaWYNCisNCisvKiBQcml2YXRlIGJ1ZmZlciBjb250cm9sbGVyIG9iamVjdCAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIHN0cnVjdCBqcGVnX2RfY29lZl9jb250cm9sbGVyIHB1YjsgLyogcHVibGljIGZpZWxkcyAqLw0KKw0KKyAgLyogVGhlc2UgdmFyaWFibGVzIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgbG9jYXRpb24gb2YgdGhlIGlucHV0IHNpZGUuICovDQorICAvKiBjaW5mby0+aW5wdXRfaU1DVV9yb3cgaXMgYWxzbyB1c2VkIGZvciB0aGlzLiAqLw0KKyAgSkRJTUVOU0lPTiBNQ1VfY3RyOwkJLyogY291bnRzIE1DVXMgcHJvY2Vzc2VkIGluIGN1cnJlbnQgcm93ICovDQorICBpbnQgTUNVX3ZlcnRfb2Zmc2V0OwkJLyogY291bnRzIE1DVSByb3dzIHdpdGhpbiBpTUNVIHJvdyAqLw0KKyAgaW50IE1DVV9yb3dzX3Blcl9pTUNVX3JvdzsJLyogbnVtYmVyIG9mIHN1Y2ggcm93cyBuZWVkZWQgKi8NCisNCisgIC8qIFRoZSBvdXRwdXQgc2lkZSdzIGxvY2F0aW9uIGlzIHJlcHJlc2VudGVkIGJ5IGNpbmZvLT5vdXRwdXRfaU1DVV9yb3cuICovDQorDQorICAvKiBJbiBzaW5nbGUtcGFzcyBtb2RlcywgaXQncyBzdWZmaWNpZW50IHRvIGJ1ZmZlciBqdXN0IG9uZSBNQ1UuDQorICAgKiBXZSBhbGxvY2F0ZSBhIHdvcmtzcGFjZSBvZiBEX01BWF9CTE9DS1NfSU5fTUNVIGNvZWZmaWNpZW50IGJsb2NrcywNCisgICAqIGFuZCBsZXQgdGhlIGVudHJvcHkgZGVjb2RlciB3cml0ZSBpbnRvIHRoYXQgd29ya3NwYWNlIGVhY2ggdGltZS4NCisgICAqIChPbiA4MHg4NiwgdGhlIHdvcmtzcGFjZSBpcyBGQVIgZXZlbiB0aG91Z2ggaXQncyBub3QgcmVhbGx5IHZlcnkgYmlnOw0KKyAgICogdGhpcyBpcyB0byBrZWVwIHRoZSBtb2R1bGUgaW50ZXJmYWNlcyB1bmNoYW5nZWQgd2hlbiBhIGxhcmdlIGNvZWZmaWNpZW50DQorICAgKiBidWZmZXIgaXMgbmVjZXNzYXJ5LikNCisgICAqIEluIG11bHRpLXBhc3MgbW9kZXMsIHRoaXMgYXJyYXkgcG9pbnRzIHRvIHRoZSBjdXJyZW50IE1DVSdzIGJsb2Nrcw0KKyAgICogd2l0aGluIHRoZSB2aXJ0dWFsIGFycmF5czsgaXQgaXMgdXNlZCBvbmx5IGJ5IHRoZSBpbnB1dCBzaWRlLg0KKyAgICovDQorICBKQkxPQ0tST1cgTUNVX2J1ZmZlcltEX01BWF9CTE9DS1NfSU5fTUNVXTsNCisNCisjaWZkZWYgRF9NVUxUSVNDQU5fRklMRVNfU1VQUE9SVEVEDQorICAvKiBJbiBtdWx0aS1wYXNzIG1vZGVzLCB3ZSBuZWVkIGEgdmlydHVhbCBibG9jayBhcnJheSBmb3IgZWFjaCBjb21wb25lbnQuICovDQorICBqdmlydF9iYXJyYXlfcHRyIHdob2xlX2ltYWdlW01BWF9DT01QT05FTlRTXTsNCisjZW5kaWYNCisNCisjaWZkZWYgQkxPQ0tfU01PT1RISU5HX1NVUFBPUlRFRA0KKyAgLyogV2hlbiBkb2luZyBibG9jayBzbW9vdGhpbmcsIHdlIGxhdGNoIGNvZWZmaWNpZW50IEFsIHZhbHVlcyBoZXJlICovDQorICBpbnQgKiBjb2VmX2JpdHNfbGF0Y2g7DQorI2RlZmluZSBTQVZFRF9DT0VGUyAgNgkJLyogd2Ugc2F2ZSBjb2VmX2JpdHNbMC4uNV0gKi8NCisjZW5kaWYNCit9IG15X2NvZWZfY29udHJvbGxlcjsNCisNCit0eXBlZGVmIG15X2NvZWZfY29udHJvbGxlciAqIG15X2NvZWZfcHRyOw0KKw0KKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovDQorTUVUSE9EREVGKGludCkgZGVjb21wcmVzc19vbmVwYXNzDQorCUpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgSlNBTVBJTUFHRSBvdXRwdXRfYnVmKSk7DQorI2lmZGVmIERfTVVMVElTQ0FOX0ZJTEVTX1NVUFBPUlRFRA0KK01FVEhPRERFRihpbnQpIGRlY29tcHJlc3NfZGF0YQ0KKwlKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpTQU1QSU1BR0Ugb3V0cHV0X2J1ZikpOw0KKyNlbmRpZg0KKyNpZmRlZiBCTE9DS19TTU9PVEhJTkdfU1VQUE9SVEVEDQorTE9DQUwoYm9vbGVhbikgc21vb3RoaW5nX29rIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK01FVEhPRERFRihpbnQpIGRlY29tcHJlc3Nfc21vb3RoX2RhdGENCisJSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBKU0FNUElNQUdFIG91dHB1dF9idWYpKTsNCisjZW5kaWYNCisNCisNCitMT0NBTCh2b2lkKQ0KK3N0YXJ0X2lNQ1Vfcm93IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIFJlc2V0IHdpdGhpbi1pTUNVLXJvdyBjb3VudGVycyBmb3IgYSBuZXcgcm93IChpbnB1dCBzaWRlKSAqLw0KK3sNCisgIG15X2NvZWZfcHRyIGNvZWYgPSAobXlfY29lZl9wdHIpIGNpbmZvLT5jb2VmOw0KKw0KKyAgLyogSW4gYW4gaW50ZXJsZWF2ZWQgc2NhbiwgYW4gTUNVIHJvdyBpcyB0aGUgc2FtZSBhcyBhbiBpTUNVIHJvdy4NCisgICAqIEluIGEgbm9uaW50ZXJsZWF2ZWQgc2NhbiwgYW4gaU1DVSByb3cgaGFzIHZfc2FtcF9mYWN0b3IgTUNVIHJvd3MuDQorICAgKiBCdXQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgaW1hZ2UsIHByb2Nlc3Mgb25seSB3aGF0J3MgbGVmdC4NCisgICAqLw0KKyAgaWYgKGNpbmZvLT5jb21wc19pbl9zY2FuID4gMSkgew0KKyAgICBjb2VmLT5NQ1Vfcm93c19wZXJfaU1DVV9yb3cgPSAxOw0KKyAgfSBlbHNlIHsNCisgICAgaWYgKGNpbmZvLT5pbnB1dF9pTUNVX3JvdyA8IChjaW5mby0+dG90YWxfaU1DVV9yb3dzLTEpKQ0KKyAgICAgIGNvZWYtPk1DVV9yb3dzX3Blcl9pTUNVX3JvdyA9IGNpbmZvLT5jdXJfY29tcF9pbmZvWzBdLT52X3NhbXBfZmFjdG9yOw0KKyAgICBlbHNlDQorICAgICAgY29lZi0+TUNVX3Jvd3NfcGVyX2lNQ1Vfcm93ID0gY2luZm8tPmN1cl9jb21wX2luZm9bMF0tPmxhc3Rfcm93X2hlaWdodDsNCisgIH0NCisNCisgIGNvZWYtPk1DVV9jdHIgPSAwOw0KKyAgY29lZi0+TUNVX3ZlcnRfb2Zmc2V0ID0gMDsNCit9DQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIGZvciBhbiBpbnB1dCBwcm9jZXNzaW5nIHBhc3MuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc3RhcnRfaW5wdXRfcGFzcyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBjaW5mby0+aW5wdXRfaU1DVV9yb3cgPSAwOw0KKyAgc3RhcnRfaU1DVV9yb3coY2luZm8pOw0KK30NCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgZm9yIGFuIG91dHB1dCBwcm9jZXNzaW5nIHBhc3MuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc3RhcnRfb3V0cHV0X3Bhc3MgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyNpZmRlZiBCTE9DS19TTU9PVEhJTkdfU1VQUE9SVEVEDQorICBteV9jb2VmX3B0ciBjb2VmID0gKG15X2NvZWZfcHRyKSBjaW5mby0+Y29lZjsNCisNCisgIC8qIElmIG11bHRpcGFzcywgY2hlY2sgdG8gc2VlIHdoZXRoZXIgdG8gdXNlIGJsb2NrIHNtb290aGluZyBvbiB0aGlzIHBhc3MgKi8NCisgIGlmIChjb2VmLT5wdWIuY29lZl9hcnJheXMgIT0gTlVMTCkgew0KKyAgICBpZiAoY2luZm8tPmRvX2Jsb2NrX3Ntb290aGluZyAmJiBzbW9vdGhpbmdfb2soY2luZm8pKQ0KKyAgICAgIGNvZWYtPnB1Yi5kZWNvbXByZXNzX2RhdGEgPSBkZWNvbXByZXNzX3Ntb290aF9kYXRhOw0KKyAgICBlbHNlDQorICAgICAgY29lZi0+cHViLmRlY29tcHJlc3NfZGF0YSA9IGRlY29tcHJlc3NfZGF0YTsNCisgIH0NCisjZW5kaWYNCisgIGNpbmZvLT5vdXRwdXRfaU1DVV9yb3cgPSAwOw0KK30NCisNCisNCisvKg0KKyAqIERlY29tcHJlc3MgYW5kIHJldHVybiBzb21lIGRhdGEgaW4gdGhlIHNpbmdsZS1wYXNzIGNhc2UuDQorICogQWx3YXlzIGF0dGVtcHRzIHRvIGVtaXQgb25lIGZ1bGx5IGludGVybGVhdmVkIE1DVSByb3cgKCJpTUNVIiByb3cpLg0KKyAqIElucHV0IGFuZCBvdXRwdXQgbXVzdCBydW4gaW4gbG9ja3N0ZXAgc2luY2Ugd2UgaGF2ZSBvbmx5IGEgb25lLU1DVSBidWZmZXIuDQorICogUmV0dXJuIHZhbHVlIGlzIEpQRUdfUk9XX0NPTVBMRVRFRCwgSlBFR19TQ0FOX0NPTVBMRVRFRCwgb3IgSlBFR19TVVNQRU5ERUQuDQorICoNCisgKiBOQjogb3V0cHV0X2J1ZiBjb250YWlucyBhIHBsYW5lIGZvciBlYWNoIGNvbXBvbmVudCBpbiBpbWFnZSwNCisgKiB3aGljaCB3ZSBpbmRleCBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvbmVudCdzIFNPRiBwb3NpdGlvbi4NCisgKi8NCisNCitNRVRIT0RERUYoaW50KQ0KK2RlY29tcHJlc3Nfb25lcGFzcyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgSlNBTVBJTUFHRSBvdXRwdXRfYnVmKQ0KK3sNCisgIG15X2NvZWZfcHRyIGNvZWYgPSAobXlfY29lZl9wdHIpIGNpbmZvLT5jb2VmOw0KKyAgSkRJTUVOU0lPTiBNQ1VfY29sX251bTsJLyogaW5kZXggb2YgY3VycmVudCBNQ1Ugd2l0aGluIHJvdyAqLw0KKyAgSkRJTUVOU0lPTiBsYXN0X01DVV9jb2wgPSBjaW5mby0+TUNVc19wZXJfcm93IC0gMTsNCisgIEpESU1FTlNJT04gbGFzdF9pTUNVX3JvdyA9IGNpbmZvLT50b3RhbF9pTUNVX3Jvd3MgLSAxOw0KKyAgaW50IGJsa24sIGNpLCB4aW5kZXgsIHlpbmRleCwgeW9mZnNldCwgdXNlZnVsX3dpZHRoOw0KKyAgSlNBTVBBUlJBWSBvdXRwdXRfcHRyOw0KKyAgSkRJTUVOU0lPTiBzdGFydF9jb2wsIG91dHB1dF9jb2w7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyOw0KKyAgaW52ZXJzZV9EQ1RfbWV0aG9kX3B0ciBpbnZlcnNlX0RDVDsNCisNCisgIC8qIExvb3AgdG8gcHJvY2VzcyBhcyBtdWNoIGFzIG9uZSB3aG9sZSBpTUNVIHJvdyAqLw0KKyAgZm9yICh5b2Zmc2V0ID0gY29lZi0+TUNVX3ZlcnRfb2Zmc2V0OyB5b2Zmc2V0IDwgY29lZi0+TUNVX3Jvd3NfcGVyX2lNQ1Vfcm93Ow0KKyAgICAgICB5b2Zmc2V0KyspIHsNCisgICAgZm9yIChNQ1VfY29sX251bSA9IGNvZWYtPk1DVV9jdHI7IE1DVV9jb2xfbnVtIDw9IGxhc3RfTUNVX2NvbDsNCisJIE1DVV9jb2xfbnVtKyspIHsNCisgICAgICAvKiBUcnkgdG8gZmV0Y2ggYW4gTUNVLiAgRW50cm9weSBkZWNvZGVyIGV4cGVjdHMgYnVmZmVyIHRvIGJlIHplcm9lZC4gKi8NCisgICAgICBqemVyb19mYXIoKHZvaWQgRkFSICopIGNvZWYtPk1DVV9idWZmZXJbMF0sDQorCQkoc2l6ZV90KSAoY2luZm8tPmJsb2Nrc19pbl9NQ1UgKiBTSVpFT0YoSkJMT0NLKSkpOw0KKyAgICAgIGlmICghICgqY2luZm8tPmVudHJvcHktPmRlY29kZV9tY3UpIChjaW5mbywgY29lZi0+TUNVX2J1ZmZlcikpIHsNCisJLyogU3VzcGVuc2lvbiBmb3JjZWQ7IHVwZGF0ZSBzdGF0ZSBjb3VudGVycyBhbmQgZXhpdCAqLw0KKwljb2VmLT5NQ1VfdmVydF9vZmZzZXQgPSB5b2Zmc2V0Ow0KKwljb2VmLT5NQ1VfY3RyID0gTUNVX2NvbF9udW07DQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICB9DQorICAgICAgLyogRGV0ZXJtaW5lIHdoZXJlIGRhdGEgc2hvdWxkIGdvIGluIG91dHB1dF9idWYgYW5kIGRvIHRoZSBJRENUIHRoaW5nLg0KKyAgICAgICAqIFdlIHNraXAgZHVtbXkgYmxvY2tzIGF0IHRoZSByaWdodCBhbmQgYm90dG9tIGVkZ2VzIChidXQgYmxrbiBnZXRzDQorICAgICAgICogaW5jcmVtZW50ZWQgcGFzdCB0aGVtISkuICBOb3RlIHRoZSBpbm5lciBsb29wIHJlbGllcyBvbiBoYXZpbmcNCisgICAgICAgKiBhbGxvY2F0ZWQgdGhlIE1DVV9idWZmZXJbXSBibG9ja3Mgc2VxdWVudGlhbGx5Lg0KKyAgICAgICAqLw0KKyAgICAgIGJsa24gPSAwOwkJCS8qIGluZGV4IG9mIGN1cnJlbnQgRENUIGJsb2NrIHdpdGhpbiBNQ1UgKi8NCisgICAgICBmb3IgKGNpID0gMDsgY2kgPCBjaW5mby0+Y29tcHNfaW5fc2NhbjsgY2krKykgew0KKwljb21wcHRyID0gY2luZm8tPmN1cl9jb21wX2luZm9bY2ldOw0KKwkvKiBEb24ndCBib3RoZXIgdG8gSURDVCBhbiB1bmludGVyZXN0aW5nIGNvbXBvbmVudC4gKi8NCisJaWYgKCEgY29tcHB0ci0+Y29tcG9uZW50X25lZWRlZCkgew0KKwkgIGJsa24gKz0gY29tcHB0ci0+TUNVX2Jsb2NrczsNCisJICBjb250aW51ZTsNCisJfQ0KKwlpbnZlcnNlX0RDVCA9IGNpbmZvLT5pZGN0LT5pbnZlcnNlX0RDVFtjb21wcHRyLT5jb21wb25lbnRfaW5kZXhdOw0KKwl1c2VmdWxfd2lkdGggPSAoTUNVX2NvbF9udW0gPCBsYXN0X01DVV9jb2wpID8gY29tcHB0ci0+TUNVX3dpZHRoDQorCQkJCQkJICAgIDogY29tcHB0ci0+bGFzdF9jb2xfd2lkdGg7DQorCW91dHB1dF9wdHIgPSBvdXRwdXRfYnVmW2NvbXBwdHItPmNvbXBvbmVudF9pbmRleF0gKw0KKwkgIHlvZmZzZXQgKiBjb21wcHRyLT5EQ1Rfc2NhbGVkX3NpemU7DQorCXN0YXJ0X2NvbCA9IE1DVV9jb2xfbnVtICogY29tcHB0ci0+TUNVX3NhbXBsZV93aWR0aDsNCisJZm9yICh5aW5kZXggPSAwOyB5aW5kZXggPCBjb21wcHRyLT5NQ1VfaGVpZ2h0OyB5aW5kZXgrKykgew0KKwkgIGlmIChjaW5mby0+aW5wdXRfaU1DVV9yb3cgPCBsYXN0X2lNQ1Vfcm93IHx8DQorCSAgICAgIHlvZmZzZXQreWluZGV4IDwgY29tcHB0ci0+bGFzdF9yb3dfaGVpZ2h0KSB7DQorCSAgICBvdXRwdXRfY29sID0gc3RhcnRfY29sOw0KKwkgICAgZm9yICh4aW5kZXggPSAwOyB4aW5kZXggPCB1c2VmdWxfd2lkdGg7IHhpbmRleCsrKSB7DQorCSAgICAgICgqaW52ZXJzZV9EQ1QpIChjaW5mbywgY29tcHB0ciwNCisJCQkgICAgICAoSkNPRUZQVFIpIGNvZWYtPk1DVV9idWZmZXJbYmxrbit4aW5kZXhdLA0KKwkJCSAgICAgIG91dHB1dF9wdHIsIG91dHB1dF9jb2wpOw0KKwkgICAgICBvdXRwdXRfY29sICs9IGNvbXBwdHItPkRDVF9zY2FsZWRfc2l6ZTsNCisJICAgIH0NCisJICB9DQorCSAgYmxrbiArPSBjb21wcHRyLT5NQ1Vfd2lkdGg7DQorCSAgb3V0cHV0X3B0ciArPSBjb21wcHRyLT5EQ1Rfc2NhbGVkX3NpemU7DQorCX0NCisgICAgICB9DQorICAgIH0NCisgICAgLyogQ29tcGxldGVkIGFuIE1DVSByb3csIGJ1dCBwZXJoYXBzIG5vdCBhbiBpTUNVIHJvdyAqLw0KKyAgICBjb2VmLT5NQ1VfY3RyID0gMDsNCisgIH0NCisgIC8qIENvbXBsZXRlZCB0aGUgaU1DVSByb3csIGFkdmFuY2UgY291bnRlcnMgZm9yIG5leHQgb25lICovDQorICBjaW5mby0+b3V0cHV0X2lNQ1Vfcm93Kys7DQorICBpZiAoKysoY2luZm8tPmlucHV0X2lNQ1Vfcm93KSA8IGNpbmZvLT50b3RhbF9pTUNVX3Jvd3MpIHsNCisgICAgc3RhcnRfaU1DVV9yb3coY2luZm8pOw0KKyAgICByZXR1cm4gSlBFR19ST1dfQ09NUExFVEVEOw0KKyAgfQ0KKyAgLyogQ29tcGxldGVkIHRoZSBzY2FuICovDQorICAoKmNpbmZvLT5pbnB1dGN0bC0+ZmluaXNoX2lucHV0X3Bhc3MpIChjaW5mbyk7DQorICByZXR1cm4gSlBFR19TQ0FOX0NPTVBMRVRFRDsNCit9DQorDQorDQorLyoNCisgKiBEdW1teSBjb25zdW1lLWlucHV0IHJvdXRpbmUgZm9yIHNpbmdsZS1wYXNzIG9wZXJhdGlvbi4NCisgKi8NCisNCitNRVRIT0RERUYoaW50KQ0KK2R1bW15X2NvbnN1bWVfZGF0YSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICByZXR1cm4gSlBFR19TVVNQRU5ERUQ7CS8qIEFsd2F5cyBpbmRpY2F0ZSBub3RoaW5nIHdhcyBkb25lICovDQorfQ0KKw0KKw0KKyNpZmRlZiBEX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQNCisNCisvKg0KKyAqIENvbnN1bWUgaW5wdXQgZGF0YSBhbmQgc3RvcmUgaXQgaW4gdGhlIGZ1bGwtaW1hZ2UgY29lZmZpY2llbnQgYnVmZmVyLg0KKyAqIFdlIHJlYWQgYXMgbXVjaCBhcyBvbmUgZnVsbHkgaW50ZXJsZWF2ZWQgTUNVIHJvdyAoImlNQ1UiIHJvdykgcGVyIGNhbGwsDQorICogaWUsIHZfc2FtcF9mYWN0b3IgYmxvY2sgcm93cyBmb3IgZWFjaCBjb21wb25lbnQgaW4gdGhlIHNjYW4uDQorICogUmV0dXJuIHZhbHVlIGlzIEpQRUdfUk9XX0NPTVBMRVRFRCwgSlBFR19TQ0FOX0NPTVBMRVRFRCwgb3IgSlBFR19TVVNQRU5ERUQuDQorICovDQorDQorTUVUSE9EREVGKGludCkNCitjb25zdW1lX2RhdGEgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfY29lZl9wdHIgY29lZiA9IChteV9jb2VmX3B0cikgY2luZm8tPmNvZWY7DQorICBKRElNRU5TSU9OIE1DVV9jb2xfbnVtOwkvKiBpbmRleCBvZiBjdXJyZW50IE1DVSB3aXRoaW4gcm93ICovDQorICBpbnQgYmxrbiwgY2ksIHhpbmRleCwgeWluZGV4LCB5b2Zmc2V0Ow0KKyAgSkRJTUVOU0lPTiBzdGFydF9jb2w7DQorICBKQkxPQ0tBUlJBWSBidWZmZXJbTUFYX0NPTVBTX0lOX1NDQU5dOw0KKyAgSkJMT0NLUk9XIGJ1ZmZlcl9wdHI7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyOw0KKw0KKyAgLyogQWxpZ24gdGhlIHZpcnR1YWwgYnVmZmVycyBmb3IgdGhlIGNvbXBvbmVudHMgdXNlZCBpbiB0aGlzIHNjYW4uICovDQorICBmb3IgKGNpID0gMDsgY2kgPCBjaW5mby0+Y29tcHNfaW5fc2NhbjsgY2krKykgew0KKyAgICBjb21wcHRyID0gY2luZm8tPmN1cl9jb21wX2luZm9bY2ldOw0KKyAgICBidWZmZXJbY2ldID0gKCpjaW5mby0+bWVtLT5hY2Nlc3NfdmlydF9iYXJyYXkpDQorICAgICAgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBjb2VmLT53aG9sZV9pbWFnZVtjb21wcHRyLT5jb21wb25lbnRfaW5kZXhdLA0KKyAgICAgICBjaW5mby0+aW5wdXRfaU1DVV9yb3cgKiBjb21wcHRyLT52X3NhbXBfZmFjdG9yLA0KKyAgICAgICAoSkRJTUVOU0lPTikgY29tcHB0ci0+dl9zYW1wX2ZhY3RvciwgVFJVRSk7DQorICAgIC8qIE5vdGU6IGVudHJvcHkgZGVjb2RlciBleHBlY3RzIGJ1ZmZlciB0byBiZSB6ZXJvZWQsDQorICAgICAqIGJ1dCB0aGlzIGlzIGhhbmRsZWQgYXV0b21hdGljYWxseSBieSB0aGUgbWVtb3J5IG1hbmFnZXINCisgICAgICogYmVjYXVzZSB3ZSByZXF1ZXN0ZWQgYSBwcmUtemVyb2VkIGFycmF5Lg0KKyAgICAgKi8NCisgIH0NCisNCisgIC8qIExvb3AgdG8gcHJvY2VzcyBvbmUgd2hvbGUgaU1DVSByb3cgKi8NCisgIGZvciAoeW9mZnNldCA9IGNvZWYtPk1DVV92ZXJ0X29mZnNldDsgeW9mZnNldCA8IGNvZWYtPk1DVV9yb3dzX3Blcl9pTUNVX3JvdzsNCisgICAgICAgeW9mZnNldCsrKSB7DQorICAgIGZvciAoTUNVX2NvbF9udW0gPSBjb2VmLT5NQ1VfY3RyOyBNQ1VfY29sX251bSA8IGNpbmZvLT5NQ1VzX3Blcl9yb3c7DQorCSBNQ1VfY29sX251bSsrKSB7DQorICAgICAgLyogQ29uc3RydWN0IGxpc3Qgb2YgcG9pbnRlcnMgdG8gRENUIGJsb2NrcyBiZWxvbmdpbmcgdG8gdGhpcyBNQ1UgKi8NCisgICAgICBibGtuID0gMDsJCQkvKiBpbmRleCBvZiBjdXJyZW50IERDVCBibG9jayB3aXRoaW4gTUNVICovDQorICAgICAgZm9yIChjaSA9IDA7IGNpIDwgY2luZm8tPmNvbXBzX2luX3NjYW47IGNpKyspIHsNCisJY29tcHB0ciA9IGNpbmZvLT5jdXJfY29tcF9pbmZvW2NpXTsNCisJc3RhcnRfY29sID0gTUNVX2NvbF9udW0gKiBjb21wcHRyLT5NQ1Vfd2lkdGg7DQorCWZvciAoeWluZGV4ID0gMDsgeWluZGV4IDwgY29tcHB0ci0+TUNVX2hlaWdodDsgeWluZGV4KyspIHsNCisJICBidWZmZXJfcHRyID0gYnVmZmVyW2NpXVt5aW5kZXgreW9mZnNldF0gKyBzdGFydF9jb2w7DQorCSAgZm9yICh4aW5kZXggPSAwOyB4aW5kZXggPCBjb21wcHRyLT5NQ1Vfd2lkdGg7IHhpbmRleCsrKSB7DQorCSAgICBjb2VmLT5NQ1VfYnVmZmVyW2Jsa24rK10gPSBidWZmZXJfcHRyKys7DQorCSAgfQ0KKwl9DQorICAgICAgfQ0KKyAgICAgIC8qIFRyeSB0byBmZXRjaCB0aGUgTUNVLiAqLw0KKyAgICAgIGlmICghICgqY2luZm8tPmVudHJvcHktPmRlY29kZV9tY3UpIChjaW5mbywgY29lZi0+TUNVX2J1ZmZlcikpIHsNCisJLyogU3VzcGVuc2lvbiBmb3JjZWQ7IHVwZGF0ZSBzdGF0ZSBjb3VudGVycyBhbmQgZXhpdCAqLw0KKwljb2VmLT5NQ1VfdmVydF9vZmZzZXQgPSB5b2Zmc2V0Ow0KKwljb2VmLT5NQ1VfY3RyID0gTUNVX2NvbF9udW07DQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICB9DQorICAgIH0NCisgICAgLyogQ29tcGxldGVkIGFuIE1DVSByb3csIGJ1dCBwZXJoYXBzIG5vdCBhbiBpTUNVIHJvdyAqLw0KKyAgICBjb2VmLT5NQ1VfY3RyID0gMDsNCisgIH0NCisgIC8qIENvbXBsZXRlZCB0aGUgaU1DVSByb3csIGFkdmFuY2UgY291bnRlcnMgZm9yIG5leHQgb25lICovDQorICBpZiAoKysoY2luZm8tPmlucHV0X2lNQ1Vfcm93KSA8IGNpbmZvLT50b3RhbF9pTUNVX3Jvd3MpIHsNCisgICAgc3RhcnRfaU1DVV9yb3coY2luZm8pOw0KKyAgICByZXR1cm4gSlBFR19ST1dfQ09NUExFVEVEOw0KKyAgfQ0KKyAgLyogQ29tcGxldGVkIHRoZSBzY2FuICovDQorICAoKmNpbmZvLT5pbnB1dGN0bC0+ZmluaXNoX2lucHV0X3Bhc3MpIChjaW5mbyk7DQorICByZXR1cm4gSlBFR19TQ0FOX0NPTVBMRVRFRDsNCit9DQorDQorDQorLyoNCisgKiBEZWNvbXByZXNzIGFuZCByZXR1cm4gc29tZSBkYXRhIGluIHRoZSBtdWx0aS1wYXNzIGNhc2UuDQorICogQWx3YXlzIGF0dGVtcHRzIHRvIGVtaXQgb25lIGZ1bGx5IGludGVybGVhdmVkIE1DVSByb3cgKCJpTUNVIiByb3cpLg0KKyAqIFJldHVybiB2YWx1ZSBpcyBKUEVHX1JPV19DT01QTEVURUQsIEpQRUdfU0NBTl9DT01QTEVURUQsIG9yIEpQRUdfU1VTUEVOREVELg0KKyAqDQorICogTkI6IG91dHB1dF9idWYgY29udGFpbnMgYSBwbGFuZSBmb3IgZWFjaCBjb21wb25lbnQgaW4gaW1hZ2UuDQorICovDQorDQorTUVUSE9EREVGKGludCkNCitkZWNvbXByZXNzX2RhdGEgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpTQU1QSU1BR0Ugb3V0cHV0X2J1ZikNCit7DQorICBteV9jb2VmX3B0ciBjb2VmID0gKG15X2NvZWZfcHRyKSBjaW5mby0+Y29lZjsNCisgIEpESU1FTlNJT04gbGFzdF9pTUNVX3JvdyA9IGNpbmZvLT50b3RhbF9pTUNVX3Jvd3MgLSAxOw0KKyAgSkRJTUVOU0lPTiBibG9ja19udW07DQorICBpbnQgY2ksIGJsb2NrX3JvdywgYmxvY2tfcm93czsNCisgIEpCTE9DS0FSUkFZIGJ1ZmZlcjsNCisgIEpCTE9DS1JPVyBidWZmZXJfcHRyOw0KKyAgSlNBTVBBUlJBWSBvdXRwdXRfcHRyOw0KKyAgSkRJTUVOU0lPTiBvdXRwdXRfY29sOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIGludmVyc2VfRENUX21ldGhvZF9wdHIgaW52ZXJzZV9EQ1Q7DQorDQorICAvKiBGb3JjZSBzb21lIGlucHV0IHRvIGJlIGRvbmUgaWYgd2UgYXJlIGdldHRpbmcgYWhlYWQgb2YgdGhlIGlucHV0LiAqLw0KKyAgd2hpbGUgKGNpbmZvLT5pbnB1dF9zY2FuX251bWJlciA8IGNpbmZvLT5vdXRwdXRfc2Nhbl9udW1iZXIgfHwNCisJIChjaW5mby0+aW5wdXRfc2Nhbl9udW1iZXIgPT0gY2luZm8tPm91dHB1dF9zY2FuX251bWJlciAmJg0KKwkgIGNpbmZvLT5pbnB1dF9pTUNVX3JvdyA8PSBjaW5mby0+b3V0cHV0X2lNQ1Vfcm93KSkgew0KKyAgICBpZiAoKCpjaW5mby0+aW5wdXRjdGwtPmNvbnN1bWVfaW5wdXQpKGNpbmZvKSA9PSBKUEVHX1NVU1BFTkRFRCkNCisgICAgICByZXR1cm4gSlBFR19TVVNQRU5ERUQ7DQorICB9DQorDQorICAvKiBPSywgb3V0cHV0IGZyb20gdGhlIHZpcnR1YWwgYXJyYXlzLiAqLw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIC8qIERvbid0IGJvdGhlciB0byBJRENUIGFuIHVuaW50ZXJlc3RpbmcgY29tcG9uZW50LiAqLw0KKyAgICBpZiAoISBjb21wcHRyLT5jb21wb25lbnRfbmVlZGVkKQ0KKyAgICAgIGNvbnRpbnVlOw0KKyAgICAvKiBBbGlnbiB0aGUgdmlydHVhbCBidWZmZXIgZm9yIHRoaXMgY29tcG9uZW50LiAqLw0KKyAgICBidWZmZXIgPSAoKmNpbmZvLT5tZW0tPmFjY2Vzc192aXJ0X2JhcnJheSkNCisgICAgICAoKGpfY29tbW9uX3B0cikgY2luZm8sIGNvZWYtPndob2xlX2ltYWdlW2NpXSwNCisgICAgICAgY2luZm8tPm91dHB1dF9pTUNVX3JvdyAqIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IsDQorICAgICAgIChKRElNRU5TSU9OKSBjb21wcHRyLT52X3NhbXBfZmFjdG9yLCBGQUxTRSk7DQorICAgIC8qIENvdW50IG5vbi1kdW1teSBEQ1QgYmxvY2sgcm93cyBpbiB0aGlzIGlNQ1Ugcm93LiAqLw0KKyAgICBpZiAoY2luZm8tPm91dHB1dF9pTUNVX3JvdyA8IGxhc3RfaU1DVV9yb3cpDQorICAgICAgYmxvY2tfcm93cyA9IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7DQorICAgIGVsc2Ugew0KKyAgICAgIC8qIE5COiBjYW4ndCB1c2UgbGFzdF9yb3dfaGVpZ2h0IGhlcmU7IGl0IGlzIGlucHV0LXNpZGUtZGVwZW5kZW50ISAqLw0KKyAgICAgIGJsb2NrX3Jvd3MgPSAoaW50KSAoY29tcHB0ci0+aGVpZ2h0X2luX2Jsb2NrcyAlIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IpOw0KKyAgICAgIGlmIChibG9ja19yb3dzID09IDApIGJsb2NrX3Jvd3MgPSBjb21wcHRyLT52X3NhbXBfZmFjdG9yOw0KKyAgICB9DQorICAgIGludmVyc2VfRENUID0gY2luZm8tPmlkY3QtPmludmVyc2VfRENUW2NpXTsNCisgICAgb3V0cHV0X3B0ciA9IG91dHB1dF9idWZbY2ldOw0KKyAgICAvKiBMb29wIG92ZXIgYWxsIERDVCBibG9ja3MgdG8gYmUgcHJvY2Vzc2VkLiAqLw0KKyAgICBmb3IgKGJsb2NrX3JvdyA9IDA7IGJsb2NrX3JvdyA8IGJsb2NrX3Jvd3M7IGJsb2NrX3JvdysrKSB7DQorICAgICAgYnVmZmVyX3B0ciA9IGJ1ZmZlcltibG9ja19yb3ddOw0KKyAgICAgIG91dHB1dF9jb2wgPSAwOw0KKyAgICAgIGZvciAoYmxvY2tfbnVtID0gMDsgYmxvY2tfbnVtIDwgY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzOyBibG9ja19udW0rKykgew0KKwkoKmludmVyc2VfRENUKSAoY2luZm8sIGNvbXBwdHIsIChKQ09FRlBUUikgYnVmZmVyX3B0ciwNCisJCQlvdXRwdXRfcHRyLCBvdXRwdXRfY29sKTsNCisJYnVmZmVyX3B0cisrOw0KKwlvdXRwdXRfY29sICs9IGNvbXBwdHItPkRDVF9zY2FsZWRfc2l6ZTsNCisgICAgICB9DQorICAgICAgb3V0cHV0X3B0ciArPSBjb21wcHRyLT5EQ1Rfc2NhbGVkX3NpemU7DQorICAgIH0NCisgIH0NCisNCisgIGlmICgrKyhjaW5mby0+b3V0cHV0X2lNQ1Vfcm93KSA8IGNpbmZvLT50b3RhbF9pTUNVX3Jvd3MpDQorICAgIHJldHVybiBKUEVHX1JPV19DT01QTEVURUQ7DQorICByZXR1cm4gSlBFR19TQ0FOX0NPTVBMRVRFRDsNCit9DQorDQorI2VuZGlmIC8qIERfTVVMVElTQ0FOX0ZJTEVTX1NVUFBPUlRFRCAqLw0KKw0KKw0KKyNpZmRlZiBCTE9DS19TTU9PVEhJTkdfU1VQUE9SVEVEDQorDQorLyoNCisgKiBUaGlzIGNvZGUgYXBwbGllcyBpbnRlcmJsb2NrIHNtb290aGluZyBhcyBkZXNjcmliZWQgYnkgc2VjdGlvbiBLLjgNCisgKiBvZiB0aGUgSlBFRyBzdGFuZGFyZDogdGhlIGZpcnN0IDUgQUMgY29lZmZpY2llbnRzIGFyZSBlc3RpbWF0ZWQgZnJvbQ0KKyAqIHRoZSBEQyB2YWx1ZXMgb2YgYSBEQ1QgYmxvY2sgYW5kIGl0cyA4IG5laWdoYm9yaW5nIGJsb2Nrcy4NCisgKiBXZSBhcHBseSBzbW9vdGhpbmcgb25seSBmb3IgcHJvZ3Jlc3NpdmUgSlBFRyBkZWNvZGluZywgYW5kIG9ubHkgaWYNCisgKiB0aGUgY29lZmZpY2llbnRzIGl0IGNhbiBlc3RpbWF0ZSBhcmUgbm90IHlldCBrbm93biB0byBmdWxsIHByZWNpc2lvbi4NCisgKi8NCisNCisvKiBOYXR1cmFsLW9yZGVyIGFycmF5IHBvc2l0aW9ucyBvZiB0aGUgZmlyc3QgNSB6aWd6YWctb3JkZXIgY29lZmZpY2llbnRzICovDQorI2RlZmluZSBRMDFfUE9TICAxDQorI2RlZmluZSBRMTBfUE9TICA4DQorI2RlZmluZSBRMjBfUE9TICAxNg0KKyNkZWZpbmUgUTExX1BPUyAgOQ0KKyNkZWZpbmUgUTAyX1BPUyAgMg0KKw0KKy8qDQorICogRGV0ZXJtaW5lIHdoZXRoZXIgYmxvY2sgc21vb3RoaW5nIGlzIGFwcGxpY2FibGUgYW5kIHNhZmUuDQorICogV2UgYWxzbyBsYXRjaCB0aGUgY3VycmVudCBzdGF0ZXMgb2YgdGhlIGNvZWZfYml0c1tdIGVudHJpZXMgZm9yIHRoZQ0KKyAqIEFDIGNvZWZmaWNpZW50czsgb3RoZXJ3aXNlLCBpZiB0aGUgaW5wdXQgc2lkZSBvZiB0aGUgZGVjb21wcmVzc29yDQorICogYWR2YW5jZXMgaW50byBhIG5ldyBzY2FuLCB3ZSBtaWdodCB0aGluayB0aGUgY29lZmZpY2llbnRzIGFyZSBrbm93bg0KKyAqIG1vcmUgYWNjdXJhdGVseSB0aGFuIHRoZXkgcmVhbGx5IGFyZS4NCisgKi8NCisNCitMT0NBTChib29sZWFuKQ0KK3Ntb290aGluZ19vayAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBteV9jb2VmX3B0ciBjb2VmID0gKG15X2NvZWZfcHRyKSBjaW5mby0+Y29lZjsNCisgIGJvb2xlYW4gc21vb3RoaW5nX3VzZWZ1bCA9IEZBTFNFOw0KKyAgaW50IGNpLCBjb2VmaTsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorICBKUVVBTlRfVEJMICogcXRhYmxlOw0KKyAgaW50ICogY29lZl9iaXRzOw0KKyAgaW50ICogY29lZl9iaXRzX2xhdGNoOw0KKw0KKyAgaWYgKCEgY2luZm8tPnByb2dyZXNzaXZlX21vZGUgfHwgY2luZm8tPmNvZWZfYml0cyA9PSBOVUxMKQ0KKyAgICByZXR1cm4gRkFMU0U7DQorDQorICAvKiBBbGxvY2F0ZSBsYXRjaCBhcmVhIGlmIG5vdCBhbHJlYWR5IGRvbmUgKi8NCisgIGlmIChjb2VmLT5jb2VmX2JpdHNfbGF0Y2ggPT0gTlVMTCkNCisgICAgY29lZi0+Y29lZl9iaXRzX2xhdGNoID0gKGludCAqKQ0KKyAgICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCSAgY2luZm8tPm51bV9jb21wb25lbnRzICoNCisJCQkJICAoU0FWRURfQ09FRlMgKiBTSVpFT0YoaW50KSkpOw0KKyAgY29lZl9iaXRzX2xhdGNoID0gY29lZi0+Y29lZl9iaXRzX2xhdGNoOw0KKw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIC8qIEFsbCBjb21wb25lbnRzJyBxdWFudGl6YXRpb24gdmFsdWVzIG11c3QgYWxyZWFkeSBiZSBsYXRjaGVkLiAqLw0KKyAgICBpZiAoKHF0YWJsZSA9IGNvbXBwdHItPnF1YW50X3RhYmxlKSA9PSBOVUxMKQ0KKyAgICAgIHJldHVybiBGQUxTRTsNCisgICAgLyogVmVyaWZ5IERDICYgZmlyc3QgNSBBQyBxdWFudGl6ZXJzIGFyZSBub256ZXJvIHRvIGF2b2lkIHplcm8tZGl2aWRlLiAqLw0KKyAgICBpZiAocXRhYmxlLT5xdWFudHZhbFswXSA9PSAwIHx8DQorCXF0YWJsZS0+cXVhbnR2YWxbUTAxX1BPU10gPT0gMCB8fA0KKwlxdGFibGUtPnF1YW50dmFsW1ExMF9QT1NdID09IDAgfHwNCisJcXRhYmxlLT5xdWFudHZhbFtRMjBfUE9TXSA9PSAwIHx8DQorCXF0YWJsZS0+cXVhbnR2YWxbUTExX1BPU10gPT0gMCB8fA0KKwlxdGFibGUtPnF1YW50dmFsW1EwMl9QT1NdID09IDApDQorICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAvKiBEQyB2YWx1ZXMgbXVzdCBiZSBhdCBsZWFzdCBwYXJ0bHkga25vd24gZm9yIGFsbCBjb21wb25lbnRzLiAqLw0KKyAgICBjb2VmX2JpdHMgPSBjaW5mby0+Y29lZl9iaXRzW2NpXTsNCisgICAgaWYgKGNvZWZfYml0c1swXSA8IDApDQorICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAvKiBCbG9jayBzbW9vdGhpbmcgaXMgaGVscGZ1bCBpZiBzb21lIEFDIGNvZWZmaWNpZW50cyByZW1haW4gaW5hY2N1cmF0ZS4gKi8NCisgICAgZm9yIChjb2VmaSA9IDE7IGNvZWZpIDw9IDU7IGNvZWZpKyspIHsNCisgICAgICBjb2VmX2JpdHNfbGF0Y2hbY29lZmldID0gY29lZl9iaXRzW2NvZWZpXTsNCisgICAgICBpZiAoY29lZl9iaXRzW2NvZWZpXSAhPSAwKQ0KKwlzbW9vdGhpbmdfdXNlZnVsID0gVFJVRTsNCisgICAgfQ0KKyAgICBjb2VmX2JpdHNfbGF0Y2ggKz0gU0FWRURfQ09FRlM7DQorICB9DQorDQorICByZXR1cm4gc21vb3RoaW5nX3VzZWZ1bDsNCit9DQorDQorDQorLyoNCisgKiBWYXJpYW50IG9mIGRlY29tcHJlc3NfZGF0YSBmb3IgdXNlIHdoZW4gZG9pbmcgYmxvY2sgc21vb3RoaW5nLg0KKyAqLw0KKw0KK01FVEhPRERFRihpbnQpDQorZGVjb21wcmVzc19zbW9vdGhfZGF0YSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgSlNBTVBJTUFHRSBvdXRwdXRfYnVmKQ0KK3sNCisgIG15X2NvZWZfcHRyIGNvZWYgPSAobXlfY29lZl9wdHIpIGNpbmZvLT5jb2VmOw0KKyAgSkRJTUVOU0lPTiBsYXN0X2lNQ1Vfcm93ID0gY2luZm8tPnRvdGFsX2lNQ1Vfcm93cyAtIDE7DQorICBKRElNRU5TSU9OIGJsb2NrX251bSwgbGFzdF9ibG9ja19jb2x1bW47DQorICBpbnQgY2ksIGJsb2NrX3JvdywgYmxvY2tfcm93cywgYWNjZXNzX3Jvd3M7DQorICBKQkxPQ0tBUlJBWSBidWZmZXI7DQorICBKQkxPQ0tST1cgYnVmZmVyX3B0ciwgcHJldl9ibG9ja19yb3csIG5leHRfYmxvY2tfcm93Ow0KKyAgSlNBTVBBUlJBWSBvdXRwdXRfcHRyOw0KKyAgSkRJTUVOU0lPTiBvdXRwdXRfY29sOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIGludmVyc2VfRENUX21ldGhvZF9wdHIgaW52ZXJzZV9EQ1Q7DQorICBib29sZWFuIGZpcnN0X3JvdywgbGFzdF9yb3c7DQorICBKQkxPQ0sgd29ya3NwYWNlOw0KKyAgaW50ICpjb2VmX2JpdHM7DQorICBKUVVBTlRfVEJMICpxdWFudHRibDsNCisgIElOVDMyIFEwMCxRMDEsUTAyLFExMCxRMTEsUTIwLCBudW07DQorICBpbnQgREMxLERDMixEQzMsREM0LERDNSxEQzYsREM3LERDOCxEQzk7DQorICBpbnQgQWwsIHByZWQ7DQorDQorICAvKiBGb3JjZSBzb21lIGlucHV0IHRvIGJlIGRvbmUgaWYgd2UgYXJlIGdldHRpbmcgYWhlYWQgb2YgdGhlIGlucHV0LiAqLw0KKyAgd2hpbGUgKGNpbmZvLT5pbnB1dF9zY2FuX251bWJlciA8PSBjaW5mby0+b3V0cHV0X3NjYW5fbnVtYmVyICYmDQorCSAhIGNpbmZvLT5pbnB1dGN0bC0+ZW9pX3JlYWNoZWQpIHsNCisgICAgaWYgKGNpbmZvLT5pbnB1dF9zY2FuX251bWJlciA9PSBjaW5mby0+b3V0cHV0X3NjYW5fbnVtYmVyKSB7DQorICAgICAgLyogSWYgaW5wdXQgaXMgd29ya2luZyBvbiBjdXJyZW50IHNjYW4sIHdlIG9yZGluYXJpbHkgd2FudCBpdCB0bw0KKyAgICAgICAqIGhhdmUgY29tcGxldGVkIHRoZSBjdXJyZW50IHJvdy4gIEJ1dCBpZiBpbnB1dCBzY2FuIGlzIERDLA0KKyAgICAgICAqIHdlIHdhbnQgaXQgdG8ga2VlcCBvbmUgcm93IGFoZWFkIHNvIHRoYXQgbmV4dCBibG9jayByb3cncyBEQw0KKyAgICAgICAqIHZhbHVlcyBhcmUgdXAgdG8gZGF0ZS4NCisgICAgICAgKi8NCisgICAgICBKRElNRU5TSU9OIGRlbHRhID0gKGNpbmZvLT5TcyA9PSAwKSA/IDEgOiAwOw0KKyAgICAgIGlmIChjaW5mby0+aW5wdXRfaU1DVV9yb3cgPiBjaW5mby0+b3V0cHV0X2lNQ1Vfcm93K2RlbHRhKQ0KKwlicmVhazsNCisgICAgfQ0KKyAgICBpZiAoKCpjaW5mby0+aW5wdXRjdGwtPmNvbnN1bWVfaW5wdXQpKGNpbmZvKSA9PSBKUEVHX1NVU1BFTkRFRCkNCisgICAgICByZXR1cm4gSlBFR19TVVNQRU5ERUQ7DQorICB9DQorDQorICAvKiBPSywgb3V0cHV0IGZyb20gdGhlIHZpcnR1YWwgYXJyYXlzLiAqLw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIC8qIERvbid0IGJvdGhlciB0byBJRENUIGFuIHVuaW50ZXJlc3RpbmcgY29tcG9uZW50LiAqLw0KKyAgICBpZiAoISBjb21wcHRyLT5jb21wb25lbnRfbmVlZGVkKQ0KKyAgICAgIGNvbnRpbnVlOw0KKyAgICAvKiBDb3VudCBub24tZHVtbXkgRENUIGJsb2NrIHJvd3MgaW4gdGhpcyBpTUNVIHJvdy4gKi8NCisgICAgaWYgKGNpbmZvLT5vdXRwdXRfaU1DVV9yb3cgPCBsYXN0X2lNQ1Vfcm93KSB7DQorICAgICAgYmxvY2tfcm93cyA9IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7DQorICAgICAgYWNjZXNzX3Jvd3MgPSBibG9ja19yb3dzICogMjsgLyogdGhpcyBhbmQgbmV4dCBpTUNVIHJvdyAqLw0KKyAgICAgIGxhc3Rfcm93ID0gRkFMU0U7DQorICAgIH0gZWxzZSB7DQorICAgICAgLyogTkI6IGNhbid0IHVzZSBsYXN0X3Jvd19oZWlnaHQgaGVyZTsgaXQgaXMgaW5wdXQtc2lkZS1kZXBlbmRlbnQhICovDQorICAgICAgYmxvY2tfcm93cyA9IChpbnQpIChjb21wcHRyLT5oZWlnaHRfaW5fYmxvY2tzICUgY29tcHB0ci0+dl9zYW1wX2ZhY3Rvcik7DQorICAgICAgaWYgKGJsb2NrX3Jvd3MgPT0gMCkgYmxvY2tfcm93cyA9IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7DQorICAgICAgYWNjZXNzX3Jvd3MgPSBibG9ja19yb3dzOyAvKiB0aGlzIGlNQ1Ugcm93IG9ubHkgKi8NCisgICAgICBsYXN0X3JvdyA9IFRSVUU7DQorICAgIH0NCisgICAgLyogQWxpZ24gdGhlIHZpcnR1YWwgYnVmZmVyIGZvciB0aGlzIGNvbXBvbmVudC4gKi8NCisgICAgaWYgKGNpbmZvLT5vdXRwdXRfaU1DVV9yb3cgPiAwKSB7DQorICAgICAgYWNjZXNzX3Jvd3MgKz0gY29tcHB0ci0+dl9zYW1wX2ZhY3RvcjsgLyogcHJpb3IgaU1DVSByb3cgdG9vICovDQorICAgICAgYnVmZmVyID0gKCpjaW5mby0+bWVtLT5hY2Nlc3NfdmlydF9iYXJyYXkpDQorCSgoal9jb21tb25fcHRyKSBjaW5mbywgY29lZi0+d2hvbGVfaW1hZ2VbY2ldLA0KKwkgKGNpbmZvLT5vdXRwdXRfaU1DVV9yb3cgLSAxKSAqIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IsDQorCSAoSkRJTUVOU0lPTikgYWNjZXNzX3Jvd3MsIEZBTFNFKTsNCisgICAgICBidWZmZXIgKz0gY29tcHB0ci0+dl9zYW1wX2ZhY3RvcjsJLyogcG9pbnQgdG8gY3VycmVudCBpTUNVIHJvdyAqLw0KKyAgICAgIGZpcnN0X3JvdyA9IEZBTFNFOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIGJ1ZmZlciA9ICgqY2luZm8tPm1lbS0+YWNjZXNzX3ZpcnRfYmFycmF5KQ0KKwkoKGpfY29tbW9uX3B0cikgY2luZm8sIGNvZWYtPndob2xlX2ltYWdlW2NpXSwNCisJIChKRElNRU5TSU9OKSAwLCAoSkRJTUVOU0lPTikgYWNjZXNzX3Jvd3MsIEZBTFNFKTsNCisgICAgICBmaXJzdF9yb3cgPSBUUlVFOw0KKyAgICB9DQorICAgIC8qIEZldGNoIGNvbXBvbmVudC1kZXBlbmRlbnQgaW5mbyAqLw0KKyAgICBjb2VmX2JpdHMgPSBjb2VmLT5jb2VmX2JpdHNfbGF0Y2ggKyAoY2kgKiBTQVZFRF9DT0VGUyk7DQorICAgIHF1YW50dGJsID0gY29tcHB0ci0+cXVhbnRfdGFibGU7DQorICAgIFEwMCA9IHF1YW50dGJsLT5xdWFudHZhbFswXTsNCisgICAgUTAxID0gcXVhbnR0YmwtPnF1YW50dmFsW1EwMV9QT1NdOw0KKyAgICBRMTAgPSBxdWFudHRibC0+cXVhbnR2YWxbUTEwX1BPU107DQorICAgIFEyMCA9IHF1YW50dGJsLT5xdWFudHZhbFtRMjBfUE9TXTsNCisgICAgUTExID0gcXVhbnR0YmwtPnF1YW50dmFsW1ExMV9QT1NdOw0KKyAgICBRMDIgPSBxdWFudHRibC0+cXVhbnR2YWxbUTAyX1BPU107DQorICAgIGludmVyc2VfRENUID0gY2luZm8tPmlkY3QtPmludmVyc2VfRENUW2NpXTsNCisgICAgb3V0cHV0X3B0ciA9IG91dHB1dF9idWZbY2ldOw0KKyAgICAvKiBMb29wIG92ZXIgYWxsIERDVCBibG9ja3MgdG8gYmUgcHJvY2Vzc2VkLiAqLw0KKyAgICBmb3IgKGJsb2NrX3JvdyA9IDA7IGJsb2NrX3JvdyA8IGJsb2NrX3Jvd3M7IGJsb2NrX3JvdysrKSB7DQorICAgICAgYnVmZmVyX3B0ciA9IGJ1ZmZlcltibG9ja19yb3ddOw0KKyAgICAgIGlmIChmaXJzdF9yb3cgJiYgYmxvY2tfcm93ID09IDApDQorCXByZXZfYmxvY2tfcm93ID0gYnVmZmVyX3B0cjsNCisgICAgICBlbHNlDQorCXByZXZfYmxvY2tfcm93ID0gYnVmZmVyW2Jsb2NrX3Jvdy0xXTsNCisgICAgICBpZiAobGFzdF9yb3cgJiYgYmxvY2tfcm93ID09IGJsb2NrX3Jvd3MtMSkNCisJbmV4dF9ibG9ja19yb3cgPSBidWZmZXJfcHRyOw0KKyAgICAgIGVsc2UNCisJbmV4dF9ibG9ja19yb3cgPSBidWZmZXJbYmxvY2tfcm93KzFdOw0KKyAgICAgIC8qIFdlIGZldGNoIHRoZSBzdXJyb3VuZGluZyBEQyB2YWx1ZXMgdXNpbmcgYSBzbGlkaW5nLXJlZ2lzdGVyIGFwcHJvYWNoLg0KKyAgICAgICAqIEluaXRpYWxpemUgYWxsIG5pbmUgaGVyZSBzbyBhcyB0byBkbyB0aGUgcmlnaHQgdGhpbmcgb24gbmFycm93IHBpY3MuDQorICAgICAgICovDQorICAgICAgREMxID0gREMyID0gREMzID0gKGludCkgcHJldl9ibG9ja19yb3dbMF1bMF07DQorICAgICAgREM0ID0gREM1ID0gREM2ID0gKGludCkgYnVmZmVyX3B0clswXVswXTsNCisgICAgICBEQzcgPSBEQzggPSBEQzkgPSAoaW50KSBuZXh0X2Jsb2NrX3Jvd1swXVswXTsNCisgICAgICBvdXRwdXRfY29sID0gMDsNCisgICAgICBsYXN0X2Jsb2NrX2NvbHVtbiA9IGNvbXBwdHItPndpZHRoX2luX2Jsb2NrcyAtIDE7DQorICAgICAgZm9yIChibG9ja19udW0gPSAwOyBibG9ja19udW0gPD0gbGFzdF9ibG9ja19jb2x1bW47IGJsb2NrX251bSsrKSB7DQorCS8qIEZldGNoIGN1cnJlbnQgRENUIGJsb2NrIGludG8gd29ya3NwYWNlIHNvIHdlIGNhbiBtb2RpZnkgaXQuICovDQorCWpjb3B5X2Jsb2NrX3JvdyhidWZmZXJfcHRyLCAoSkJMT0NLUk9XKSB3b3Jrc3BhY2UsIChKRElNRU5TSU9OKSAxKTsNCisJLyogVXBkYXRlIERDIHZhbHVlcyAqLw0KKwlpZiAoYmxvY2tfbnVtIDwgbGFzdF9ibG9ja19jb2x1bW4pIHsNCisJICBEQzMgPSAoaW50KSBwcmV2X2Jsb2NrX3Jvd1sxXVswXTsNCisJICBEQzYgPSAoaW50KSBidWZmZXJfcHRyWzFdWzBdOw0KKwkgIERDOSA9IChpbnQpIG5leHRfYmxvY2tfcm93WzFdWzBdOw0KKwl9DQorCS8qIENvbXB1dGUgY29lZmZpY2llbnQgZXN0aW1hdGVzIHBlciBLLjguDQorCSAqIEFuIGVzdGltYXRlIGlzIGFwcGxpZWQgb25seSBpZiBjb2VmZmljaWVudCBpcyBzdGlsbCB6ZXJvLA0KKwkgKiBhbmQgaXMgbm90IGtub3duIHRvIGJlIGZ1bGx5IGFjY3VyYXRlLg0KKwkgKi8NCisJLyogQUMwMSAqLw0KKwlpZiAoKEFsPWNvZWZfYml0c1sxXSkgIT0gMCAmJiB3b3Jrc3BhY2VbMV0gPT0gMCkgew0KKwkgIG51bSA9IDM2ICogUTAwICogKERDNCAtIERDNik7DQorCSAgaWYgKG51bSA+PSAwKSB7DQorCSAgICBwcmVkID0gKGludCkgKCgoUTAxPDw3KSArIG51bSkgLyAoUTAxPDw4KSk7DQorCSAgICBpZiAoQWwgPiAwICYmIHByZWQgPj0gKDE8PEFsKSkNCisJICAgICAgcHJlZCA9ICgxPDxBbCktMTsNCisJICB9IGVsc2Ugew0KKwkgICAgcHJlZCA9IChpbnQpICgoKFEwMTw8NykgLSBudW0pIC8gKFEwMTw8OCkpOw0KKwkgICAgaWYgKEFsID4gMCAmJiBwcmVkID49ICgxPDxBbCkpDQorCSAgICAgIHByZWQgPSAoMTw8QWwpLTE7DQorCSAgICBwcmVkID0gLXByZWQ7DQorCSAgfQ0KKwkgIHdvcmtzcGFjZVsxXSA9IChKQ09FRikgcHJlZDsNCisJfQ0KKwkvKiBBQzEwICovDQorCWlmICgoQWw9Y29lZl9iaXRzWzJdKSAhPSAwICYmIHdvcmtzcGFjZVs4XSA9PSAwKSB7DQorCSAgbnVtID0gMzYgKiBRMDAgKiAoREMyIC0gREM4KTsNCisJICBpZiAobnVtID49IDApIHsNCisJICAgIHByZWQgPSAoaW50KSAoKChRMTA8PDcpICsgbnVtKSAvIChRMTA8PDgpKTsNCisJICAgIGlmIChBbCA+IDAgJiYgcHJlZCA+PSAoMTw8QWwpKQ0KKwkgICAgICBwcmVkID0gKDE8PEFsKS0xOw0KKwkgIH0gZWxzZSB7DQorCSAgICBwcmVkID0gKGludCkgKCgoUTEwPDw3KSAtIG51bSkgLyAoUTEwPDw4KSk7DQorCSAgICBpZiAoQWwgPiAwICYmIHByZWQgPj0gKDE8PEFsKSkNCisJICAgICAgcHJlZCA9ICgxPDxBbCktMTsNCisJICAgIHByZWQgPSAtcHJlZDsNCisJICB9DQorCSAgd29ya3NwYWNlWzhdID0gKEpDT0VGKSBwcmVkOw0KKwl9DQorCS8qIEFDMjAgKi8NCisJaWYgKChBbD1jb2VmX2JpdHNbM10pICE9IDAgJiYgd29ya3NwYWNlWzE2XSA9PSAwKSB7DQorCSAgbnVtID0gOSAqIFEwMCAqIChEQzIgKyBEQzggLSAyKkRDNSk7DQorCSAgaWYgKG51bSA+PSAwKSB7DQorCSAgICBwcmVkID0gKGludCkgKCgoUTIwPDw3KSArIG51bSkgLyAoUTIwPDw4KSk7DQorCSAgICBpZiAoQWwgPiAwICYmIHByZWQgPj0gKDE8PEFsKSkNCisJICAgICAgcHJlZCA9ICgxPDxBbCktMTsNCisJICB9IGVsc2Ugew0KKwkgICAgcHJlZCA9IChpbnQpICgoKFEyMDw8NykgLSBudW0pIC8gKFEyMDw8OCkpOw0KKwkgICAgaWYgKEFsID4gMCAmJiBwcmVkID49ICgxPDxBbCkpDQorCSAgICAgIHByZWQgPSAoMTw8QWwpLTE7DQorCSAgICBwcmVkID0gLXByZWQ7DQorCSAgfQ0KKwkgIHdvcmtzcGFjZVsxNl0gPSAoSkNPRUYpIHByZWQ7DQorCX0NCisJLyogQUMxMSAqLw0KKwlpZiAoKEFsPWNvZWZfYml0c1s0XSkgIT0gMCAmJiB3b3Jrc3BhY2VbOV0gPT0gMCkgew0KKwkgIG51bSA9IDUgKiBRMDAgKiAoREMxIC0gREMzIC0gREM3ICsgREM5KTsNCisJICBpZiAobnVtID49IDApIHsNCisJICAgIHByZWQgPSAoaW50KSAoKChRMTE8PDcpICsgbnVtKSAvIChRMTE8PDgpKTsNCisJICAgIGlmIChBbCA+IDAgJiYgcHJlZCA+PSAoMTw8QWwpKQ0KKwkgICAgICBwcmVkID0gKDE8PEFsKS0xOw0KKwkgIH0gZWxzZSB7DQorCSAgICBwcmVkID0gKGludCkgKCgoUTExPDw3KSAtIG51bSkgLyAoUTExPDw4KSk7DQorCSAgICBpZiAoQWwgPiAwICYmIHByZWQgPj0gKDE8PEFsKSkNCisJICAgICAgcHJlZCA9ICgxPDxBbCktMTsNCisJICAgIHByZWQgPSAtcHJlZDsNCisJICB9DQorCSAgd29ya3NwYWNlWzldID0gKEpDT0VGKSBwcmVkOw0KKwl9DQorCS8qIEFDMDIgKi8NCisJaWYgKChBbD1jb2VmX2JpdHNbNV0pICE9IDAgJiYgd29ya3NwYWNlWzJdID09IDApIHsNCisJICBudW0gPSA5ICogUTAwICogKERDNCArIERDNiAtIDIqREM1KTsNCisJICBpZiAobnVtID49IDApIHsNCisJICAgIHByZWQgPSAoaW50KSAoKChRMDI8PDcpICsgbnVtKSAvIChRMDI8PDgpKTsNCisJICAgIGlmIChBbCA+IDAgJiYgcHJlZCA+PSAoMTw8QWwpKQ0KKwkgICAgICBwcmVkID0gKDE8PEFsKS0xOw0KKwkgIH0gZWxzZSB7DQorCSAgICBwcmVkID0gKGludCkgKCgoUTAyPDw3KSAtIG51bSkgLyAoUTAyPDw4KSk7DQorCSAgICBpZiAoQWwgPiAwICYmIHByZWQgPj0gKDE8PEFsKSkNCisJICAgICAgcHJlZCA9ICgxPDxBbCktMTsNCisJICAgIHByZWQgPSAtcHJlZDsNCisJICB9DQorCSAgd29ya3NwYWNlWzJdID0gKEpDT0VGKSBwcmVkOw0KKwl9DQorCS8qIE9LLCBkbyB0aGUgSURDVCAqLw0KKwkoKmludmVyc2VfRENUKSAoY2luZm8sIGNvbXBwdHIsIChKQ09FRlBUUikgd29ya3NwYWNlLA0KKwkJCW91dHB1dF9wdHIsIG91dHB1dF9jb2wpOw0KKwkvKiBBZHZhbmNlIGZvciBuZXh0IGNvbHVtbiAqLw0KKwlEQzEgPSBEQzI7IERDMiA9IERDMzsNCisJREM0ID0gREM1OyBEQzUgPSBEQzY7DQorCURDNyA9IERDODsgREM4ID0gREM5Ow0KKwlidWZmZXJfcHRyKyssIHByZXZfYmxvY2tfcm93KyssIG5leHRfYmxvY2tfcm93Kys7DQorCW91dHB1dF9jb2wgKz0gY29tcHB0ci0+RENUX3NjYWxlZF9zaXplOw0KKyAgICAgIH0NCisgICAgICBvdXRwdXRfcHRyICs9IGNvbXBwdHItPkRDVF9zY2FsZWRfc2l6ZTsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgaWYgKCsrKGNpbmZvLT5vdXRwdXRfaU1DVV9yb3cpIDwgY2luZm8tPnRvdGFsX2lNQ1Vfcm93cykNCisgICAgcmV0dXJuIEpQRUdfUk9XX0NPTVBMRVRFRDsNCisgIHJldHVybiBKUEVHX1NDQU5fQ09NUExFVEVEOw0KK30NCisNCisjZW5kaWYgLyogQkxPQ0tfU01PT1RISU5HX1NVUFBPUlRFRCAqLw0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6ZSBjb2VmZmljaWVudCBidWZmZXIgY29udHJvbGxlci4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqaW5pdF9kX2NvZWZfY29udHJvbGxlciAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgYm9vbGVhbiBuZWVkX2Z1bGxfYnVmZmVyKQ0KK3sNCisgIG15X2NvZWZfcHRyIGNvZWY7DQorDQorICBjb2VmID0gKG15X2NvZWZfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQlTSVpFT0YobXlfY29lZl9jb250cm9sbGVyKSk7DQorICBjaW5mby0+Y29lZiA9IChzdHJ1Y3QganBlZ19kX2NvZWZfY29udHJvbGxlciAqKSBjb2VmOw0KKyAgY29lZi0+cHViLnN0YXJ0X2lucHV0X3Bhc3MgPSBzdGFydF9pbnB1dF9wYXNzOw0KKyAgY29lZi0+cHViLnN0YXJ0X291dHB1dF9wYXNzID0gc3RhcnRfb3V0cHV0X3Bhc3M7DQorI2lmZGVmIEJMT0NLX1NNT09USElOR19TVVBQT1JURUQNCisgIGNvZWYtPmNvZWZfYml0c19sYXRjaCA9IE5VTEw7DQorI2VuZGlmDQorDQorICAvKiBDcmVhdGUgdGhlIGNvZWZmaWNpZW50IGJ1ZmZlci4gKi8NCisgIGlmIChuZWVkX2Z1bGxfYnVmZmVyKSB7DQorI2lmZGVmIERfTVVMVElTQ0FOX0ZJTEVTX1NVUFBPUlRFRA0KKyAgICAvKiBBbGxvY2F0ZSBhIGZ1bGwtaW1hZ2UgdmlydHVhbCBhcnJheSBmb3IgZWFjaCBjb21wb25lbnQsICovDQorICAgIC8qIHBhZGRlZCB0byBhIG11bHRpcGxlIG9mIHNhbXBfZmFjdG9yIERDVCBibG9ja3MgaW4gZWFjaCBkaXJlY3Rpb24uICovDQorICAgIC8qIE5vdGUgd2UgYXNrIGZvciBhIHByZS16ZXJvZWQgYXJyYXkuICovDQorICAgIGludCBjaSwgYWNjZXNzX3Jvd3M7DQorICAgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorDQorICAgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorCSBjaSsrLCBjb21wcHRyKyspIHsNCisgICAgICBhY2Nlc3Nfcm93cyA9IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I7DQorI2lmZGVmIEJMT0NLX1NNT09USElOR19TVVBQT1JURUQNCisgICAgICAvKiBJZiBibG9jayBzbW9vdGhpbmcgY291bGQgYmUgdXNlZCwgbmVlZCBhIGJpZ2dlciB3aW5kb3cgKi8NCisgICAgICBpZiAoY2luZm8tPnByb2dyZXNzaXZlX21vZGUpDQorCWFjY2Vzc19yb3dzICo9IDM7DQorI2VuZGlmDQorICAgICAgY29lZi0+d2hvbGVfaW1hZ2VbY2ldID0gKCpjaW5mby0+bWVtLT5yZXF1ZXN0X3ZpcnRfYmFycmF5KQ0KKwkoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLCBUUlVFLA0KKwkgKEpESU1FTlNJT04pIGpyb3VuZF91cCgobG9uZykgY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzLA0KKwkJCQkobG9uZykgY29tcHB0ci0+aF9zYW1wX2ZhY3RvciksDQorCSAoSkRJTUVOU0lPTikganJvdW5kX3VwKChsb25nKSBjb21wcHRyLT5oZWlnaHRfaW5fYmxvY2tzLA0KKwkJCQkobG9uZykgY29tcHB0ci0+dl9zYW1wX2ZhY3RvciksDQorCSAoSkRJTUVOU0lPTikgYWNjZXNzX3Jvd3MpOw0KKyAgICB9DQorICAgIGNvZWYtPnB1Yi5jb25zdW1lX2RhdGEgPSBjb25zdW1lX2RhdGE7DQorICAgIGNvZWYtPnB1Yi5kZWNvbXByZXNzX2RhdGEgPSBkZWNvbXByZXNzX2RhdGE7DQorICAgIGNvZWYtPnB1Yi5jb2VmX2FycmF5cyA9IGNvZWYtPndob2xlX2ltYWdlOyAvKiBsaW5rIHRvIHZpcnR1YWwgYXJyYXlzICovDQorI2Vsc2UNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyNlbmRpZg0KKyAgfSBlbHNlIHsNCisgICAgLyogV2Ugb25seSBuZWVkIGEgc2luZ2xlLU1DVSBidWZmZXIuICovDQorICAgIEpCTE9DS1JPVyBidWZmZXI7DQorICAgIGludCBpOw0KKw0KKyAgICBidWZmZXIgPSAoSkJMT0NLUk9XKQ0KKyAgICAgICgqY2luZm8tPm1lbS0+YWxsb2NfbGFyZ2UpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCSAgRF9NQVhfQkxPQ0tTX0lOX01DVSAqIFNJWkVPRihKQkxPQ0spKTsNCisgICAgZm9yIChpID0gMDsgaSA8IERfTUFYX0JMT0NLU19JTl9NQ1U7IGkrKykgew0KKyAgICAgIGNvZWYtPk1DVV9idWZmZXJbaV0gPSBidWZmZXIgKyBpOw0KKyAgICB9DQorICAgIGNvZWYtPnB1Yi5jb25zdW1lX2RhdGEgPSBkdW1teV9jb25zdW1lX2RhdGE7DQorICAgIGNvZWYtPnB1Yi5kZWNvbXByZXNzX2RhdGEgPSBkZWNvbXByZXNzX29uZXBhc3M7DQorICAgIGNvZWYtPnB1Yi5jb2VmX2FycmF5cyA9IE5VTEw7IC8qIGZsYWcgZm9yIG5vIHZpcnR1YWwgYXJyYXlzICovDQorICB9DQorfQ0KKw0KKyNlbmRpZiAvL19GWF9KUEVHX1RVUkJPXw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkY29sb3IuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkY29sb3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2QzNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRjb2xvci5jCkBAIC0wLDAgKzEsMzk5IEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamRjb2xvci5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgb3V0cHV0IGNvbG9yc3BhY2UgY29udmVyc2lvbiByb3V0aW5lcy4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisNCisNCisvKiBQcml2YXRlIHN1Ym9iamVjdCAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIHN0cnVjdCBqcGVnX2NvbG9yX2RlY29udmVydGVyIHB1YjsgLyogcHVibGljIGZpZWxkcyAqLw0KKw0KKyAgLyogUHJpdmF0ZSBzdGF0ZSBmb3IgWUNDLT5SR0IgY29udmVyc2lvbiAqLw0KKyAgaW50ICogQ3Jfcl90YWI7CQkvKiA9PiB0YWJsZSBmb3IgQ3IgdG8gUiBjb252ZXJzaW9uICovDQorICBpbnQgKiBDYl9iX3RhYjsJCS8qID0+IHRhYmxlIGZvciBDYiB0byBCIGNvbnZlcnNpb24gKi8NCisgIElOVDMyICogQ3JfZ190YWI7CQkvKiA9PiB0YWJsZSBmb3IgQ3IgdG8gRyBjb252ZXJzaW9uICovDQorICBJTlQzMiAqIENiX2dfdGFiOwkJLyogPT4gdGFibGUgZm9yIENiIHRvIEcgY29udmVyc2lvbiAqLw0KK30gbXlfY29sb3JfZGVjb252ZXJ0ZXI7DQorDQordHlwZWRlZiBteV9jb2xvcl9kZWNvbnZlcnRlciAqIG15X2Njb252ZXJ0X3B0cjsNCisNCisNCisvKioqKioqKioqKioqKioqKiBZQ2JDciAtPiBSR0IgY29udmVyc2lvbjogbW9zdCBjb21tb24gY2FzZSAqKioqKioqKioqKioqKi8NCisNCisvKg0KKyAqIFlDYkNyIGlzIGRlZmluZWQgcGVyIENDSVIgNjAxLTEsIGV4Y2VwdCB0aGF0IENiIGFuZCBDciBhcmUNCisgKiBub3JtYWxpemVkIHRvIHRoZSByYW5nZSAwLi5NQVhKU0FNUExFIHJhdGhlciB0aGFuIC0wLjUgLi4gMC41Lg0KKyAqIFRoZSBjb252ZXJzaW9uIGVxdWF0aW9ucyB0byBiZSBpbXBsZW1lbnRlZCBhcmUgdGhlcmVmb3JlDQorICoJUiA9IFkgICAgICAgICAgICAgICAgKyAxLjQwMjAwICogQ3INCisgKglHID0gWSAtIDAuMzQ0MTQgKiBDYiAtIDAuNzE0MTQgKiBDcg0KKyAqCUIgPSBZICsgMS43NzIwMCAqIENiDQorICogd2hlcmUgQ2IgYW5kIENyIHJlcHJlc2VudCB0aGUgaW5jb21pbmcgdmFsdWVzIGxlc3MgQ0VOVEVSSlNBTVBMRS4NCisgKiAoVGhlc2UgbnVtYmVycyBhcmUgZGVyaXZlZCBmcm9tIFRJRkYgNi4wIHNlY3Rpb24gMjEsIGRhdGVkIDMtSnVuZS05Mi4pDQorICoNCisgKiBUbyBhdm9pZCBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljLCB3ZSByZXByZXNlbnQgdGhlIGZyYWN0aW9uYWwgY29uc3RhbnRzDQorICogYXMgaW50ZWdlcnMgc2NhbGVkIHVwIGJ5IDJeMTYgKGFib3V0IDQgZGlnaXRzIHByZWNpc2lvbik7IHdlIGhhdmUgdG8gZGl2aWRlDQorICogdGhlIHByb2R1Y3RzIGJ5IDJeMTYsIHdpdGggYXBwcm9wcmlhdGUgcm91bmRpbmcsIHRvIGdldCB0aGUgY29ycmVjdCBhbnN3ZXIuDQorICogTm90aWNlIHRoYXQgWSwgYmVpbmcgYW4gaW50ZWdyYWwgaW5wdXQsIGRvZXMgbm90IGNvbnRyaWJ1dGUgYW55IGZyYWN0aW9uDQorICogc28gaXQgbmVlZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIHJvdW5kaW5nLg0KKyAqDQorICogRm9yIGV2ZW4gbW9yZSBzcGVlZCwgd2UgYXZvaWQgZG9pbmcgYW55IG11bHRpcGxpY2F0aW9ucyBpbiB0aGUgaW5uZXIgbG9vcA0KKyAqIGJ5IHByZWNhbGN1bGF0aW5nIHRoZSBjb25zdGFudHMgdGltZXMgQ2IgYW5kIENyIGZvciBhbGwgcG9zc2libGUgdmFsdWVzLg0KKyAqIEZvciA4LWJpdCBKU0FNUExFcyB0aGlzIGlzIHZlcnkgcmVhc29uYWJsZSAob25seSAyNTYgZW50cmllcyBwZXIgdGFibGUpOw0KKyAqIGZvciAxMi1iaXQgc2FtcGxlcyBpdCBpcyBzdGlsbCBhY2NlcHRhYmxlLiAgSXQncyBub3QgdmVyeSByZWFzb25hYmxlIGZvcg0KKyAqIDE2LWJpdCBzYW1wbGVzLCBidXQgaWYgeW91IHdhbnQgbG9zc2xlc3Mgc3RvcmFnZSB5b3Ugc2hvdWxkbid0IGJlIGNoYW5naW5nDQorICogY29sb3JzcGFjZSBhbnl3YXkuDQorICogVGhlIENyPT5SIGFuZCBDYj0+QiB2YWx1ZXMgY2FuIGJlIHJvdW5kZWQgdG8gaW50ZWdlcnMgaW4gYWR2YW5jZTsgdGhlDQorICogdmFsdWVzIGZvciB0aGUgRyBjYWxjdWxhdGlvbiBhcmUgbGVmdCBzY2FsZWQgdXAsIHNpbmNlIHdlIG11c3QgYWRkIHRoZW0NCisgKiB0b2dldGhlciBiZWZvcmUgcm91bmRpbmcuDQorICovDQorDQorI2RlZmluZSBTQ0FMRUJJVFMJMTYJLyogc3BlZWRpZXN0IHJpZ2h0LXNoaWZ0IG9uIHNvbWUgbWFjaGluZXMgKi8NCisjZGVmaW5lIE9ORV9IQUxGCSgoSU5UMzIpIDEgPDwgKFNDQUxFQklUUy0xKSkNCisjZGVmaW5lIEZJWCh4KQkJKChJTlQzMikgKCh4KSAqICgxTDw8U0NBTEVCSVRTKSArIDAuNSkpDQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIHRhYmxlcyBmb3IgWUNDLT5SR0IgY29sb3JzcGFjZSBjb252ZXJzaW9uLg0KKyAqLw0KKw0KK0xPQ0FMKHZvaWQpDQorYnVpbGRfeWNjX3JnYl90YWJsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBteV9jY29udmVydF9wdHIgY2NvbnZlcnQgPSAobXlfY2NvbnZlcnRfcHRyKSBjaW5mby0+Y2NvbnZlcnQ7DQorICBpbnQgaTsNCisgIElOVDMyIHg7DQorICBTSElGVF9URU1QUw0KKw0KKyAgY2NvbnZlcnQtPkNyX3JfdGFiID0gKGludCAqKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQkoTUFYSlNBTVBMRSsxKSAqIFNJWkVPRihpbnQpKTsNCisgIGNjb252ZXJ0LT5DYl9iX3RhYiA9IChpbnQgKikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJKE1BWEpTQU1QTEUrMSkgKiBTSVpFT0YoaW50KSk7DQorICBjY29udmVydC0+Q3JfZ190YWIgPSAoSU5UMzIgKikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJKE1BWEpTQU1QTEUrMSkgKiBTSVpFT0YoSU5UMzIpKTsNCisgIGNjb252ZXJ0LT5DYl9nX3RhYiA9IChJTlQzMiAqKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQkoTUFYSlNBTVBMRSsxKSAqIFNJWkVPRihJTlQzMikpOw0KKw0KKyAgZm9yIChpID0gMCwgeCA9IC1DRU5URVJKU0FNUExFOyBpIDw9IE1BWEpTQU1QTEU7IGkrKywgeCsrKSB7DQorICAgIC8qIGkgaXMgdGhlIGFjdHVhbCBpbnB1dCBwaXhlbCB2YWx1ZSwgaW4gdGhlIHJhbmdlIDAuLk1BWEpTQU1QTEUgKi8NCisgICAgLyogVGhlIENiIG9yIENyIHZhbHVlIHdlIGFyZSB0aGlua2luZyBvZiBpcyB4ID0gaSAtIENFTlRFUkpTQU1QTEUgKi8NCisgICAgLyogQ3I9PlIgdmFsdWUgaXMgbmVhcmVzdCBpbnQgdG8gMS40MDIwMCAqIHggKi8NCisgICAgY2NvbnZlcnQtPkNyX3JfdGFiW2ldID0gKGludCkNCisJCSAgICBSSUdIVF9TSElGVChGSVgoMS40MDIwMCkgKiB4ICsgT05FX0hBTEYsIFNDQUxFQklUUyk7DQorICAgIC8qIENiPT5CIHZhbHVlIGlzIG5lYXJlc3QgaW50IHRvIDEuNzcyMDAgKiB4ICovDQorICAgIGNjb252ZXJ0LT5DYl9iX3RhYltpXSA9IChpbnQpDQorCQkgICAgUklHSFRfU0hJRlQoRklYKDEuNzcyMDApICogeCArIE9ORV9IQUxGLCBTQ0FMRUJJVFMpOw0KKyAgICAvKiBDcj0+RyB2YWx1ZSBpcyBzY2FsZWQtdXAgLTAuNzE0MTQgKiB4ICovDQorICAgIGNjb252ZXJ0LT5Dcl9nX3RhYltpXSA9ICgtIEZJWCgwLjcxNDE0KSkgKiB4Ow0KKyAgICAvKiBDYj0+RyB2YWx1ZSBpcyBzY2FsZWQtdXAgLTAuMzQ0MTQgKiB4ICovDQorICAgIC8qIFdlIGFsc28gYWRkIGluIE9ORV9IQUxGIHNvIHRoYXQgbmVlZCBub3QgZG8gaXQgaW4gaW5uZXIgbG9vcCAqLw0KKyAgICBjY29udmVydC0+Q2JfZ190YWJbaV0gPSAoLSBGSVgoMC4zNDQxNCkpICogeCArIE9ORV9IQUxGOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIENvbnZlcnQgc29tZSByb3dzIG9mIHNhbXBsZXMgdG8gdGhlIG91dHB1dCBjb2xvcnNwYWNlLg0KKyAqDQorICogTm90ZSB0aGF0IHdlIGNoYW5nZSBmcm9tIG5vbmludGVybGVhdmVkLCBvbmUtcGxhbmUtcGVyLWNvbXBvbmVudCBmb3JtYXQNCisgKiB0byBpbnRlcmxlYXZlZC1waXhlbCBmb3JtYXQuICBUaGUgb3V0cHV0IGJ1ZmZlciBpcyB0aGVyZWZvcmUgdGhyZWUgdGltZXMNCisgKiBhcyB3aWRlIGFzIHRoZSBpbnB1dCBidWZmZXIuDQorICogQSBzdGFydGluZyByb3cgb2Zmc2V0IGlzIHByb3ZpZGVkIG9ubHkgZm9yIHRoZSBpbnB1dCBidWZmZXIuICBUaGUgY2FsbGVyDQorICogY2FuIGVhc2lseSBhZGp1c3QgdGhlIHBhc3NlZCBvdXRwdXRfYnVmIHZhbHVlIHRvIGFjY29tbW9kYXRlIGFueSByb3cNCisgKiBvZmZzZXQgcmVxdWlyZWQgb24gdGhhdCBzaWRlLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3ljY19yZ2JfY29udmVydCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCSBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiBpbnB1dF9yb3csDQorCQkgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBpbnQgbnVtX3Jvd3MpDQorew0KKyAgbXlfY2NvbnZlcnRfcHRyIGNjb252ZXJ0ID0gKG15X2Njb252ZXJ0X3B0cikgY2luZm8tPmNjb252ZXJ0Ow0KKyAgcmVnaXN0ZXIgaW50IHksIGNiLCBjcjsNCisgIHJlZ2lzdGVyIEpTQU1QUk9XIG91dHB0cjsNCisgIHJlZ2lzdGVyIEpTQU1QUk9XIGlucHRyMCwgaW5wdHIxLCBpbnB0cjI7DQorICByZWdpc3RlciBKRElNRU5TSU9OIGNvbDsNCisgIEpESU1FTlNJT04gbnVtX2NvbHMgPSBjaW5mby0+b3V0cHV0X3dpZHRoOw0KKyAgLyogY29weSB0aGVzZSBwb2ludGVycyBpbnRvIHJlZ2lzdGVycyBpZiBwb3NzaWJsZSAqLw0KKyAgcmVnaXN0ZXIgSlNBTVBMRSAqIHJhbmdlX2xpbWl0ID0gY2luZm8tPnNhbXBsZV9yYW5nZV9saW1pdDsNCisgIHJlZ2lzdGVyIGludCAqIENycnRhYiA9IGNjb252ZXJ0LT5Dcl9yX3RhYjsNCisgIHJlZ2lzdGVyIGludCAqIENiYnRhYiA9IGNjb252ZXJ0LT5DYl9iX3RhYjsNCisgIHJlZ2lzdGVyIElOVDMyICogQ3JndGFiID0gY2NvbnZlcnQtPkNyX2dfdGFiOw0KKyAgcmVnaXN0ZXIgSU5UMzIgKiBDYmd0YWIgPSBjY29udmVydC0+Q2JfZ190YWI7DQorICBTSElGVF9URU1QUw0KKw0KKyAgd2hpbGUgKC0tbnVtX3Jvd3MgPj0gMCkgew0KKyAgICBpbnB0cjAgPSBpbnB1dF9idWZbMF1baW5wdXRfcm93XTsNCisgICAgaW5wdHIxID0gaW5wdXRfYnVmWzFdW2lucHV0X3Jvd107DQorICAgIGlucHRyMiA9IGlucHV0X2J1ZlsyXVtpbnB1dF9yb3ddOw0KKyAgICBpbnB1dF9yb3crKzsNCisgICAgb3V0cHRyID0gKm91dHB1dF9idWYrKzsNCisgICAgZm9yIChjb2wgPSAwOyBjb2wgPCBudW1fY29sczsgY29sKyspIHsNCisgICAgICB5ICA9IEdFVEpTQU1QTEUoaW5wdHIwW2NvbF0pOw0KKyAgICAgIGNiID0gR0VUSlNBTVBMRShpbnB0cjFbY29sXSk7DQorICAgICAgY3IgPSBHRVRKU0FNUExFKGlucHRyMltjb2xdKTsNCisgICAgICAvKiBSYW5nZS1saW1pdGluZyBpcyBlc3NlbnRpYWwgZHVlIHRvIG5vaXNlIGludHJvZHVjZWQgYnkgRENUIGxvc3Nlcy4gKi8NCisgICAgICBvdXRwdHJbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBDcnJ0YWJbY3JdXTsNCisgICAgICBvdXRwdHJbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKw0KKwkJCSAgICAgICgoaW50KSBSSUdIVF9TSElGVChDYmd0YWJbY2JdICsgQ3JndGFiW2NyXSwNCisJCQkJCQkgU0NBTEVCSVRTKSldOw0KKyAgICAgIG91dHB0cltSR0JfQkxVRV0gPSAgcmFuZ2VfbGltaXRbeSArIENiYnRhYltjYl1dOw0KKyAgICAgIG91dHB0ciArPSBSR0JfUElYRUxTSVpFOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qKioqKioqKioqKioqKioqIENhc2VzIG90aGVyIHRoYW4gWUNiQ3IgLT4gUkdCICoqKioqKioqKioqKioqLw0KKw0KKw0KKy8qDQorICogQ29sb3IgY29udmVyc2lvbiBmb3Igbm8gY29sb3JzcGFjZSBjaGFuZ2U6IGp1c3QgY29weSB0aGUgZGF0YSwNCisgKiBjb252ZXJ0aW5nIGZyb20gc2VwYXJhdGUtcGxhbmVzIHRvIGludGVybGVhdmVkIHJlcHJlc2VudGF0aW9uLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK251bGxfY29udmVydCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJICAgICAgSlNBTVBJTUFHRSBpbnB1dF9idWYsIEpESU1FTlNJT04gaW5wdXRfcm93LA0KKwkgICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIGludCBudW1fcm93cykNCit7DQorICByZWdpc3RlciBKU0FNUFJPVyBpbnB0ciwgb3V0cHRyOw0KKyAgcmVnaXN0ZXIgSkRJTUVOU0lPTiBjb3VudDsNCisgIHJlZ2lzdGVyIGludCBudW1fY29tcG9uZW50cyA9IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgIEpESU1FTlNJT04gbnVtX2NvbHMgPSBjaW5mby0+b3V0cHV0X3dpZHRoOw0KKyAgaW50IGNpOw0KKw0KKyAgd2hpbGUgKC0tbnVtX3Jvd3MgPj0gMCkgew0KKyAgICBmb3IgKGNpID0gMDsgY2kgPCBudW1fY29tcG9uZW50czsgY2krKykgew0KKyAgICAgIGlucHRyID0gaW5wdXRfYnVmW2NpXVtpbnB1dF9yb3ddOw0KKyAgICAgIG91dHB0ciA9IG91dHB1dF9idWZbMF0gKyBjaTsNCisgICAgICBmb3IgKGNvdW50ID0gbnVtX2NvbHM7IGNvdW50ID4gMDsgY291bnQtLSkgew0KKwkqb3V0cHRyID0gKmlucHRyKys7CS8qIG5lZWRuJ3QgYm90aGVyIHdpdGggR0VUSlNBTVBMRSgpIGhlcmUgKi8NCisJb3V0cHRyICs9IG51bV9jb21wb25lbnRzOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgICBpbnB1dF9yb3crKzsNCisgICAgb3V0cHV0X2J1ZisrOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIENvbG9yIGNvbnZlcnNpb24gZm9yIGdyYXlzY2FsZToganVzdCBjb3B5IHRoZSBkYXRhLg0KKyAqIFRoaXMgYWxzbyB3b3JrcyBmb3IgWUNiQ3IgLT4gZ3JheXNjYWxlIGNvbnZlcnNpb24sIGluIHdoaWNoDQorICogd2UganVzdCBjb3B5IHRoZSBZIChsdW1pbmFuY2UpIGNvbXBvbmVudCBhbmQgaWdub3JlIGNocm9taW5hbmNlLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2dyYXlzY2FsZV9jb252ZXJ0IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJICAgSlNBTVBJTUFHRSBpbnB1dF9idWYsIEpESU1FTlNJT04gaW5wdXRfcm93LA0KKwkJICAgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBpbnQgbnVtX3Jvd3MpDQorew0KKyAgamNvcHlfc2FtcGxlX3Jvd3MoaW5wdXRfYnVmWzBdLCAoaW50KSBpbnB1dF9yb3csIG91dHB1dF9idWYsIDAsDQorCQkgICAgbnVtX3Jvd3MsIGNpbmZvLT5vdXRwdXRfd2lkdGgpOw0KK30NCisNCisNCisvKg0KKyAqIENvbnZlcnQgZ3JheXNjYWxlIHRvIFJHQjoganVzdCBkdXBsaWNhdGUgdGhlIGdyYXlsZXZlbCB0aHJlZSB0aW1lcy4NCisgKiBUaGlzIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zIHRoYXQgZG9uJ3Qgd2FudCB0byBjb3BlDQorICogd2l0aCBncmF5c2NhbGUgYXMgYSBzZXBhcmF0ZSBjYXNlLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2dyYXlfcmdiX2NvbnZlcnQgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkgIEpTQU1QSU1BR0UgaW5wdXRfYnVmLCBKRElNRU5TSU9OIGlucHV0X3JvdywNCisJCSAgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBpbnQgbnVtX3Jvd3MpDQorew0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgaW5wdHIsIG91dHB0cjsNCisgIHJlZ2lzdGVyIEpESU1FTlNJT04gY29sOw0KKyAgSkRJTUVOU0lPTiBudW1fY29scyA9IGNpbmZvLT5vdXRwdXRfd2lkdGg7DQorDQorICB3aGlsZSAoLS1udW1fcm93cyA+PSAwKSB7DQorICAgIGlucHRyID0gaW5wdXRfYnVmWzBdW2lucHV0X3JvdysrXTsNCisgICAgb3V0cHRyID0gKm91dHB1dF9idWYrKzsNCisgICAgZm9yIChjb2wgPSAwOyBjb2wgPCBudW1fY29sczsgY29sKyspIHsNCisgICAgICAvKiBXZSBjYW4gZGlzcGVuc2Ugd2l0aCBHRVRKU0FNUExFKCkgaGVyZSAqLw0KKyAgICAgIG91dHB0cltSR0JfUkVEXSA9IG91dHB0cltSR0JfR1JFRU5dID0gb3V0cHRyW1JHQl9CTFVFXSA9IGlucHRyW2NvbF07DQorICAgICAgb3V0cHRyICs9IFJHQl9QSVhFTFNJWkU7DQorICAgIH0NCisgIH0NCit9DQorDQorDQorLyoNCisgKiBBZG9iZS1zdHlsZSBZQ0NLLT5DTVlLIGNvbnZlcnNpb24uDQorICogV2UgY29udmVydCBZQ2JDciB0byBSPTEtQywgRz0xLU0sIGFuZCBCPTEtWSB1c2luZyB0aGUgc2FtZQ0KKyAqIGNvbnZlcnNpb24gYXMgYWJvdmUsIHdoaWxlIHBhc3NpbmcgSyAoYmxhY2spIHVuY2hhbmdlZC4NCisgKiBXZSBhc3N1bWUgYnVpbGRfeWNjX3JnYl90YWJsZSBoYXMgYmVlbiBjYWxsZWQuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQoreWNja19jbXlrX2NvbnZlcnQgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiBpbnB1dF9yb3csDQorCQkgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIGludCBudW1fcm93cykNCit7DQorICBteV9jY29udmVydF9wdHIgY2NvbnZlcnQgPSAobXlfY2NvbnZlcnRfcHRyKSBjaW5mby0+Y2NvbnZlcnQ7DQorICByZWdpc3RlciBpbnQgeSwgY2IsIGNyOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgb3V0cHRyOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgaW5wdHIwLCBpbnB0cjEsIGlucHRyMiwgaW5wdHIzOw0KKyAgcmVnaXN0ZXIgSkRJTUVOU0lPTiBjb2w7DQorICBKRElNRU5TSU9OIG51bV9jb2xzID0gY2luZm8tPm91dHB1dF93aWR0aDsNCisgIC8qIGNvcHkgdGhlc2UgcG9pbnRlcnMgaW50byByZWdpc3RlcnMgaWYgcG9zc2libGUgKi8NCisgIHJlZ2lzdGVyIEpTQU1QTEUgKiByYW5nZV9saW1pdCA9IGNpbmZvLT5zYW1wbGVfcmFuZ2VfbGltaXQ7DQorICByZWdpc3RlciBpbnQgKiBDcnJ0YWIgPSBjY29udmVydC0+Q3Jfcl90YWI7DQorICByZWdpc3RlciBpbnQgKiBDYmJ0YWIgPSBjY29udmVydC0+Q2JfYl90YWI7DQorICByZWdpc3RlciBJTlQzMiAqIENyZ3RhYiA9IGNjb252ZXJ0LT5Dcl9nX3RhYjsNCisgIHJlZ2lzdGVyIElOVDMyICogQ2JndGFiID0gY2NvbnZlcnQtPkNiX2dfdGFiOw0KKyAgU0hJRlRfVEVNUFMNCisNCisgIHdoaWxlICgtLW51bV9yb3dzID49IDApIHsNCisgICAgaW5wdHIwID0gaW5wdXRfYnVmWzBdW2lucHV0X3Jvd107DQorICAgIGlucHRyMSA9IGlucHV0X2J1ZlsxXVtpbnB1dF9yb3ddOw0KKyAgICBpbnB0cjIgPSBpbnB1dF9idWZbMl1baW5wdXRfcm93XTsNCisgICAgaW5wdHIzID0gaW5wdXRfYnVmWzNdW2lucHV0X3Jvd107DQorICAgIGlucHV0X3JvdysrOw0KKyAgICBvdXRwdHIgPSAqb3V0cHV0X2J1ZisrOw0KKyAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IG51bV9jb2xzOyBjb2wrKykgew0KKyAgICAgIHkgID0gR0VUSlNBTVBMRShpbnB0cjBbY29sXSk7DQorICAgICAgY2IgPSBHRVRKU0FNUExFKGlucHRyMVtjb2xdKTsNCisgICAgICBjciA9IEdFVEpTQU1QTEUoaW5wdHIyW2NvbF0pOw0KKyAgICAgIC8qIFJhbmdlLWxpbWl0aW5nIGlzIGVzc2VudGlhbCBkdWUgdG8gbm9pc2UgaW50cm9kdWNlZCBieSBEQ1QgbG9zc2VzLiAqLw0KKyAgICAgIG91dHB0clswXSA9IHJhbmdlX2xpbWl0W01BWEpTQU1QTEUgLSAoeSArIENycnRhYltjcl0pXTsJLyogcmVkICovDQorICAgICAgb3V0cHRyWzFdID0gcmFuZ2VfbGltaXRbTUFYSlNBTVBMRSAtICh5ICsJCQkvKiBncmVlbiAqLw0KKwkJCSAgICAgICgoaW50KSBSSUdIVF9TSElGVChDYmd0YWJbY2JdICsgQ3JndGFiW2NyXSwNCisJCQkJCQkgU0NBTEVCSVRTKSkpXTsNCisgICAgICBvdXRwdHJbMl0gPSByYW5nZV9saW1pdFtNQVhKU0FNUExFIC0gKHkgKyBDYmJ0YWJbY2JdKV07CS8qIGJsdWUgKi8NCisgICAgICAvKiBLIHBhc3NlcyB0aHJvdWdoIHVuY2hhbmdlZCAqLw0KKyAgICAgIG91dHB0clszXSA9IGlucHRyM1tjb2xdOwkvKiBkb24ndCBuZWVkIEdFVEpTQU1QTEUgaGVyZSAqLw0KKyAgICAgIG91dHB0ciArPSA0Ow0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogRW1wdHkgbWV0aG9kIGZvciBzdGFydF9wYXNzLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3N0YXJ0X3Bhc3NfZGNvbG9yIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIC8qIG5vIHdvcmsgbmVlZGVkICovDQorfQ0KKw0KKw0KKy8qDQorICogTW9kdWxlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIG91dHB1dCBjb2xvcnNwYWNlIGNvbnZlcnNpb24uDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoramluaXRfY29sb3JfZGVjb252ZXJ0ZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfY2NvbnZlcnRfcHRyIGNjb252ZXJ0Ow0KKyAgaW50IGNpOw0KKw0KKyAgY2NvbnZlcnQgPSAobXlfY2NvbnZlcnRfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQlTSVpFT0YobXlfY29sb3JfZGVjb252ZXJ0ZXIpKTsNCisgIGNpbmZvLT5jY29udmVydCA9IChzdHJ1Y3QganBlZ19jb2xvcl9kZWNvbnZlcnRlciAqKSBjY29udmVydDsNCisgIGNjb252ZXJ0LT5wdWIuc3RhcnRfcGFzcyA9IHN0YXJ0X3Bhc3NfZGNvbG9yOw0KKw0KKyAgLyogTWFrZSBzdXJlIG51bV9jb21wb25lbnRzIGFncmVlcyB3aXRoIGpwZWdfY29sb3Jfc3BhY2UgKi8NCisgIHN3aXRjaCAoY2luZm8tPmpwZWdfY29sb3Jfc3BhY2UpIHsNCisgIGNhc2UgSkNTX0dSQVlTQ0FMRToNCisgICAgaWYgKGNpbmZvLT5udW1fY29tcG9uZW50cyAhPSAxKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0pfQ09MT1JTUEFDRSk7DQorICAgIGJyZWFrOw0KKw0KKyAgY2FzZSBKQ1NfUkdCOg0KKyAgY2FzZSBKQ1NfWUNiQ3I6DQorICAgIGlmIChjaW5mby0+bnVtX2NvbXBvbmVudHMgIT0gMykNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9KX0NPTE9SU1BBQ0UpOw0KKyAgICBicmVhazsNCisNCisgIGNhc2UgSkNTX0NNWUs6DQorICBjYXNlIEpDU19ZQ0NLOg0KKyAgICBpZiAoY2luZm8tPm51bV9jb21wb25lbnRzICE9IDQpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfSl9DT0xPUlNQQUNFKTsNCisgICAgYnJlYWs7DQorDQorICBkZWZhdWx0OgkJCS8qIEpDU19VTktOT1dOIGNhbiBiZSBhbnl0aGluZyAqLw0KKyAgICBpZiAoY2luZm8tPm51bV9jb21wb25lbnRzIDwgMSkNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9KX0NPTE9SU1BBQ0UpOw0KKyAgICBicmVhazsNCisgIH0NCisNCisgIC8qIFNldCBvdXRfY29sb3JfY29tcG9uZW50cyBhbmQgY29udmVyc2lvbiBtZXRob2QgYmFzZWQgb24gcmVxdWVzdGVkIHNwYWNlLg0KKyAgICogQWxzbyBjbGVhciB0aGUgY29tcG9uZW50X25lZWRlZCBmbGFncyBmb3IgYW55IHVudXNlZCBjb21wb25lbnRzLA0KKyAgICogc28gdGhhdCBlYXJsaWVyIHBpcGVsaW5lIHN0YWdlcyBjYW4gYXZvaWQgdXNlbGVzcyBjb21wdXRhdGlvbi4NCisgICAqLw0KKw0KKyAgc3dpdGNoIChjaW5mby0+b3V0X2NvbG9yX3NwYWNlKSB7DQorICBjYXNlIEpDU19HUkFZU0NBTEU6DQorICAgIGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50cyA9IDE7DQorICAgIGlmIChjaW5mby0+anBlZ19jb2xvcl9zcGFjZSA9PSBKQ1NfR1JBWVNDQUxFIHx8DQorCWNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID09IEpDU19ZQ2JDcikgew0KKyAgICAgIGNjb252ZXJ0LT5wdWIuY29sb3JfY29udmVydCA9IGdyYXlzY2FsZV9jb252ZXJ0Ow0KKyAgICAgIC8qIEZvciBjb2xvci0+Z3JheXNjYWxlIGNvbnZlcnNpb24sIG9ubHkgdGhlIFkgKDApIGNvbXBvbmVudCBpcyBuZWVkZWQgKi8NCisgICAgICBmb3IgKGNpID0gMTsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7IGNpKyspDQorCWNpbmZvLT5jb21wX2luZm9bY2ldLmNvbXBvbmVudF9uZWVkZWQgPSBGQUxTRTsNCisgICAgfSBlbHNlDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9DT05WRVJTSU9OX05PVElNUEwpOw0KKyAgICBicmVhazsNCisNCisgIGNhc2UgSkNTX1JHQjoNCisgICAgY2luZm8tPm91dF9jb2xvcl9jb21wb25lbnRzID0gUkdCX1BJWEVMU0laRTsNCisgICAgaWYgKGNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID09IEpDU19ZQ2JDcikgew0KKyAgICAgIGNjb252ZXJ0LT5wdWIuY29sb3JfY29udmVydCA9IHljY19yZ2JfY29udmVydDsNCisgICAgICBidWlsZF95Y2NfcmdiX3RhYmxlKGNpbmZvKTsNCisgICAgfSBlbHNlIGlmIChjaW5mby0+anBlZ19jb2xvcl9zcGFjZSA9PSBKQ1NfR1JBWVNDQUxFKSB7DQorICAgICAgY2NvbnZlcnQtPnB1Yi5jb2xvcl9jb252ZXJ0ID0gZ3JheV9yZ2JfY29udmVydDsNCisgICAgfSBlbHNlIGlmIChjaW5mby0+anBlZ19jb2xvcl9zcGFjZSA9PSBKQ1NfUkdCICYmIFJHQl9QSVhFTFNJWkUgPT0gMykgew0KKyAgICAgIGNjb252ZXJ0LT5wdWIuY29sb3JfY29udmVydCA9IG51bGxfY29udmVydDsNCisgICAgfSBlbHNlDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9DT05WRVJTSU9OX05PVElNUEwpOw0KKyAgICBicmVhazsNCisNCisgIGNhc2UgSkNTX0NNWUs6DQorICAgIGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50cyA9IDQ7DQorICAgIGlmIChjaW5mby0+anBlZ19jb2xvcl9zcGFjZSA9PSBKQ1NfWUNDSykgew0KKyAgICAgIGNjb252ZXJ0LT5wdWIuY29sb3JfY29udmVydCA9IHljY2tfY215a19jb252ZXJ0Ow0KKyAgICAgIGJ1aWxkX3ljY19yZ2JfdGFibGUoY2luZm8pOw0KKyAgICB9IGVsc2UgaWYgKGNpbmZvLT5qcGVnX2NvbG9yX3NwYWNlID09IEpDU19DTVlLKSB7DQorICAgICAgY2NvbnZlcnQtPnB1Yi5jb2xvcl9jb252ZXJ0ID0gbnVsbF9jb252ZXJ0Ow0KKyAgICB9IGVsc2UNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0NPTlZFUlNJT05fTk9USU1QTCk7DQorICAgIGJyZWFrOw0KKw0KKyAgZGVmYXVsdDoNCisgICAgLyogUGVybWl0IG51bGwgY29udmVyc2lvbiB0byBzYW1lIG91dHB1dCBzcGFjZSAqLw0KKyAgICBpZiAoY2luZm8tPm91dF9jb2xvcl9zcGFjZSA9PSBjaW5mby0+anBlZ19jb2xvcl9zcGFjZSkgew0KKyAgICAgIGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50cyA9IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICBjY29udmVydC0+cHViLmNvbG9yX2NvbnZlcnQgPSBudWxsX2NvbnZlcnQ7DQorICAgIH0gZWxzZQkJCS8qIHVuc3VwcG9ydGVkIG5vbi1udWxsIGNvbnZlcnNpb24gKi8NCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0NPTlZFUlNJT05fTk9USU1QTCk7DQorICAgIGJyZWFrOw0KKyAgfQ0KKw0KKyAgaWYgKGNpbmZvLT5xdWFudGl6ZV9jb2xvcnMpDQorICAgIGNpbmZvLT5vdXRwdXRfY29tcG9uZW50cyA9IDE7IC8qIHNpbmdsZSBjb2xvcm1hcHBlZCBvdXRwdXQgY29tcG9uZW50ICovDQorICBlbHNlDQorICAgIGNpbmZvLT5vdXRwdXRfY29tcG9uZW50cyA9IGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50czsNCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRkY3RtZ3IuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkZGN0bWdyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODExZDUxZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkZGN0bWdyLmMKQEAgLTAsMCArMSwyNzIgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqZGRjdG1nci5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NiwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGludmVyc2UtRENUIG1hbmFnZW1lbnQgbG9naWMuDQorICogVGhpcyBjb2RlIHNlbGVjdHMgYSBwYXJ0aWN1bGFyIElEQ1QgaW1wbGVtZW50YXRpb24gdG8gYmUgdXNlZCwNCisgKiBhbmQgaXQgcGVyZm9ybXMgcmVsYXRlZCBob3VzZWtlZXBpbmcgY2hvcmVzLiAgTm8gY29kZSBpbiB0aGlzIGZpbGUNCisgKiBpcyBleGVjdXRlZCBwZXIgSURDVCBzdGVwLCBvbmx5IGR1cmluZyBvdXRwdXQgcGFzcyBzZXR1cC4NCisgKg0KKyAqIE5vdGUgdGhhdCB0aGUgSURDVCByb3V0aW5lcyBhcmUgcmVzcG9uc2libGUgZm9yIHBlcmZvcm1pbmcgY29lZmZpY2llbnQNCisgKiBkZXF1YW50aXphdGlvbiBhcyB3ZWxsIGFzIHRoZSBJRENUIHByb3Blci4gIFRoaXMgbW9kdWxlIHNldHMgdXAgdGhlDQorICogZGVxdWFudGl6YXRpb24gbXVsdGlwbGllciB0YWJsZSBuZWVkZWQgYnkgdGhlIElEQ1Qgcm91dGluZS4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisjaW5jbHVkZSAiamRjdC5oIgkJLyogUHJpdmF0ZSBkZWNsYXJhdGlvbnMgZm9yIERDVCBzdWJzeXN0ZW0gKi8NCisNCisNCisvKg0KKyAqIFRoZSBkZWNvbXByZXNzb3IgaW5wdXQgc2lkZSAoamRpbnB1dC5jKSBzYXZlcyBhd2F5IHRoZSBhcHByb3ByaWF0ZQ0KKyAqIHF1YW50aXphdGlvbiB0YWJsZSBmb3IgZWFjaCBjb21wb25lbnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBzY2FuDQorICogaW52b2x2aW5nIHRoYXQgY29tcG9uZW50LiAgKFRoaXMgaXMgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIGNvcnJlY3RseQ0KKyAqIGRlY29kZSBmaWxlcyB0aGF0IHJldXNlIFEtdGFibGUgc2xvdHMuKQ0KKyAqIFdoZW4gd2UgYXJlIHJlYWR5IHRvIG1ha2UgYW4gb3V0cHV0IHBhc3MsIHRoZSBzYXZlZCBRLXRhYmxlIGlzIGNvbnZlcnRlZA0KKyAqIHRvIGEgbXVsdGlwbGllciB0YWJsZSB0aGF0IHdpbGwgYWN0dWFsbHkgYmUgdXNlZCBieSB0aGUgSURDVCByb3V0aW5lLg0KKyAqIFRoZSBtdWx0aXBsaWVyIHRhYmxlIGNvbnRlbnRzIGFyZSBJRENULW1ldGhvZC1kZXBlbmRlbnQuICBUbyBzdXBwb3J0DQorICogYXBwbGljYXRpb24gY2hhbmdlcyBpbiBJRENUIG1ldGhvZCBiZXR3ZWVuIHNjYW5zLCB3ZSBjYW4gcmVtYWtlIHRoZQ0KKyAqIG11bHRpcGxpZXIgdGFibGVzIGlmIG5lY2Vzc2FyeS4NCisgKiBJbiBidWZmZXJlZC1pbWFnZSBtb2RlLCB0aGUgZmlyc3Qgb3V0cHV0IHBhc3MgbWF5IG9jY3VyIGJlZm9yZSBhbnkgZGF0YQ0KKyAqIGhhcyBiZWVuIHNlZW4gZm9yIHNvbWUgY29tcG9uZW50cywgYW5kIHRodXMgYmVmb3JlIHRoZWlyIFEtdGFibGVzIGhhdmUNCisgKiBiZWVuIHNhdmVkIGF3YXkuICBUbyBoYW5kbGUgdGhpcyBjYXNlLCBtdWx0aXBsaWVyIHRhYmxlcyBhcmUgcHJlc2V0DQorICogdG8gemVyb2VzOyB0aGUgcmVzdWx0IG9mIHRoZSBJRENUIHdpbGwgYmUgYSBuZXV0cmFsIGdyYXkgbGV2ZWwuDQorICovDQorDQorDQorLyogUHJpdmF0ZSBzdWJvYmplY3QgZm9yIHRoaXMgbW9kdWxlICovDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgc3RydWN0IGpwZWdfaW52ZXJzZV9kY3QgcHViOwkvKiBwdWJsaWMgZmllbGRzICovDQorDQorICAvKiBUaGlzIGFycmF5IGNvbnRhaW5zIHRoZSBJRENUIG1ldGhvZCBjb2RlIHRoYXQgZWFjaCBtdWx0aXBsaWVyIHRhYmxlDQorICAgKiBpcyBjdXJyZW50bHkgc2V0IHVwIGZvciwgb3IgLTEgaWYgaXQncyBub3QgeWV0IHNldCB1cC4NCisgICAqIFRoZSBhY3R1YWwgbXVsdGlwbGllciB0YWJsZXMgYXJlIHBvaW50ZWQgdG8gYnkgZGN0X3RhYmxlIGluIHRoZQ0KKyAgICogcGVyLWNvbXBvbmVudCBjb21wX2luZm8gc3RydWN0dXJlcy4NCisgICAqLw0KKyAgaW50IGN1cl9tZXRob2RbTUFYX0NPTVBPTkVOVFNdOw0KK30gbXlfaWRjdF9jb250cm9sbGVyOw0KKw0KK3R5cGVkZWYgbXlfaWRjdF9jb250cm9sbGVyICogbXlfaWRjdF9wdHI7DQorDQorDQorLyogQWxsb2NhdGVkIG11bHRpcGxpZXIgdGFibGVzOiBiaWcgZW5vdWdoIGZvciBhbnkgc3VwcG9ydGVkIHZhcmlhbnQgKi8NCisNCit0eXBlZGVmIHVuaW9uIHsNCisgIElTTE9XX01VTFRfVFlQRSBpc2xvd19hcnJheVtEQ1RTSVpFMl07DQorI2lmZGVmIERDVF9JRkFTVF9TVVBQT1JURUQNCisgIElGQVNUX01VTFRfVFlQRSBpZmFzdF9hcnJheVtEQ1RTSVpFMl07DQorI2VuZGlmDQorI2lmZGVmIERDVF9GTE9BVF9TVVBQT1JURUQNCisgIEZMT0FUX01VTFRfVFlQRSBmbG9hdF9hcnJheVtEQ1RTSVpFMl07DQorI2VuZGlmDQorfSBtdWx0aXBsaWVyX3RhYmxlOw0KKw0KKw0KKy8qIFRoZSBjdXJyZW50IHNjYWxlZC1JRENUIHJvdXRpbmVzIHJlcXVpcmUgSVNMT1ctc3R5bGUgbXVsdGlwbGllciB0YWJsZXMsDQorICogc28gYmUgc3VyZSB0byBjb21waWxlIHRoYXQgY29kZSBpZiBlaXRoZXIgSVNMT1cgb3IgU0NBTElORyBpcyByZXF1ZXN0ZWQuDQorICovDQorI2lmZGVmIERDVF9JU0xPV19TVVBQT1JURUQNCisjZGVmaW5lIFBST1ZJREVfSVNMT1dfVEFCTEVTDQorI2Vsc2UNCisjaWZkZWYgSURDVF9TQ0FMSU5HX1NVUFBPUlRFRA0KKyNkZWZpbmUgUFJPVklERV9JU0xPV19UQUJMRVMNCisjZW5kaWYNCisjZW5kaWYNCisNCisNCisvKg0KKyAqIFByZXBhcmUgZm9yIGFuIG91dHB1dCBwYXNzLg0KKyAqIEhlcmUgd2Ugc2VsZWN0IHRoZSBwcm9wZXIgSURDVCByb3V0aW5lIGZvciBlYWNoIGNvbXBvbmVudCBhbmQgYnVpbGQNCisgKiBhIG1hdGNoaW5nIG11bHRpcGxpZXIgdGFibGUuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc3RhcnRfcGFzcyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBteV9pZGN0X3B0ciBpZGN0ID0gKG15X2lkY3RfcHRyKSBjaW5mby0+aWRjdDsNCisgIGludCBjaSwgaTsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorICBpbnQgbWV0aG9kID0gMDsNCisgIGludmVyc2VfRENUX21ldGhvZF9wdHIgbWV0aG9kX3B0ciA9IE5VTEw7DQorICBKUVVBTlRfVEJMICogcXRibDsNCisNCisgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorICAgICAgIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICAvKiBTZWxlY3QgdGhlIHByb3BlciBJRENUIHJvdXRpbmUgZm9yIHRoaXMgY29tcG9uZW50J3Mgc2NhbGluZyAqLw0KKyAgICBzd2l0Y2ggKGNvbXBwdHItPkRDVF9zY2FsZWRfc2l6ZSkgew0KKyNpZmRlZiBJRENUX1NDQUxJTkdfU1VQUE9SVEVEDQorICAgIGNhc2UgMToNCisgICAgICBtZXRob2RfcHRyID0ganBlZ19pZGN0XzF4MTsNCisgICAgICBtZXRob2QgPSBKRENUX0lTTE9XOwkvKiBqaWRjdHJlZCB1c2VzIGlzbG93LXN0eWxlIHRhYmxlICovDQorICAgICAgYnJlYWs7DQorICAgIGNhc2UgMjoNCisgICAgICBtZXRob2RfcHRyID0ganBlZ19pZGN0XzJ4MjsNCisgICAgICBtZXRob2QgPSBKRENUX0lTTE9XOwkvKiBqaWRjdHJlZCB1c2VzIGlzbG93LXN0eWxlIHRhYmxlICovDQorICAgICAgYnJlYWs7DQorICAgIGNhc2UgNDoNCisgICAgICBtZXRob2RfcHRyID0ganBlZ19pZGN0XzR4NDsNCisgICAgICBtZXRob2QgPSBKRENUX0lTTE9XOwkvKiBqaWRjdHJlZCB1c2VzIGlzbG93LXN0eWxlIHRhYmxlICovDQorICAgICAgYnJlYWs7DQorI2VuZGlmDQorICAgIGNhc2UgRENUU0laRToNCisgICAgICBzd2l0Y2ggKGNpbmZvLT5kY3RfbWV0aG9kKSB7DQorI2lmZGVmIERDVF9JU0xPV19TVVBQT1JURUQNCisgICAgICBjYXNlIEpEQ1RfSVNMT1c6DQorCW1ldGhvZF9wdHIgPSBqcGVnX2lkY3RfaXNsb3c7DQorCW1ldGhvZCA9IEpEQ1RfSVNMT1c7DQorCWJyZWFrOw0KKyNlbmRpZg0KKyNpZmRlZiBEQ1RfSUZBU1RfU1VQUE9SVEVEDQorICAgICAgY2FzZSBKRENUX0lGQVNUOg0KKwltZXRob2RfcHRyID0ganBlZ19pZGN0X2lmYXN0Ow0KKwltZXRob2QgPSBKRENUX0lGQVNUOw0KKwlicmVhazsNCisjZW5kaWYNCisjaWZkZWYgRENUX0ZMT0FUX1NVUFBPUlRFRA0KKyAgICAgIGNhc2UgSkRDVF9GTE9BVDoNCisJbWV0aG9kX3B0ciA9IGpwZWdfaWRjdF9mbG9hdDsNCisJbWV0aG9kID0gSkRDVF9GTE9BVDsNCisJYnJlYWs7DQorI2VuZGlmDQorICAgICAgZGVmYXVsdDoNCisJRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKwlicmVhazsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorICAgIGRlZmF1bHQ6DQorICAgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX0RDVFNJWkUsIGNvbXBwdHItPkRDVF9zY2FsZWRfc2l6ZSk7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgaWRjdC0+cHViLmludmVyc2VfRENUW2NpXSA9IG1ldGhvZF9wdHI7DQorICAgIC8qIENyZWF0ZSBtdWx0aXBsaWVyIHRhYmxlIGZyb20gcXVhbnQgdGFibGUuDQorICAgICAqIEhvd2V2ZXIsIHdlIGNhbiBza2lwIHRoaXMgaWYgdGhlIGNvbXBvbmVudCBpcyB1bmludGVyZXN0aW5nDQorICAgICAqIG9yIGlmIHdlIGFscmVhZHkgYnVpbHQgdGhlIHRhYmxlLiAgQWxzbywgaWYgbm8gcXVhbnQgdGFibGUNCisgICAgICogaGFzIHlldCBiZWVuIHNhdmVkIGZvciB0aGUgY29tcG9uZW50LCB3ZSBsZWF2ZSB0aGUNCisgICAgICogbXVsdGlwbGllciB0YWJsZSBhbGwtemVybzsgd2UnbGwgYmUgcmVhZGluZyB6ZXJvZXMgZnJvbSB0aGUNCisgICAgICogY29lZmZpY2llbnQgY29udHJvbGxlcidzIGJ1ZmZlciBhbnl3YXkuDQorICAgICAqLw0KKyAgICBpZiAoISBjb21wcHRyLT5jb21wb25lbnRfbmVlZGVkIHx8IGlkY3QtPmN1cl9tZXRob2RbY2ldID09IG1ldGhvZCkNCisgICAgICBjb250aW51ZTsNCisgICAgcXRibCA9IGNvbXBwdHItPnF1YW50X3RhYmxlOw0KKyAgICBpZiAocXRibCA9PSBOVUxMKQkJLyogaGFwcGVucyBpZiBubyBkYXRhIHlldCBmb3IgY29tcG9uZW50ICovDQorICAgICAgY29udGludWU7DQorICAgIGlkY3QtPmN1cl9tZXRob2RbY2ldID0gbWV0aG9kOw0KKyAgICBzd2l0Y2ggKG1ldGhvZCkgew0KKyNpZmRlZiBQUk9WSURFX0lTTE9XX1RBQkxFUw0KKyAgICBjYXNlIEpEQ1RfSVNMT1c6DQorICAgICAgew0KKwkvKiBGb3IgTEwmTSBJRENUIG1ldGhvZCwgbXVsdGlwbGllcnMgYXJlIGVxdWFsIHRvIHJhdyBxdWFudGl6YXRpb24NCisJICogY29lZmZpY2llbnRzLCBidXQgYXJlIHN0b3JlZCBhcyBpbnRzIHRvIGVuc3VyZSBhY2Nlc3MgZWZmaWNpZW5jeS4NCisJICovDQorCUlTTE9XX01VTFRfVFlQRSAqIGlzbXRibCA9IChJU0xPV19NVUxUX1RZUEUgKikgY29tcHB0ci0+ZGN0X3RhYmxlOw0KKwlmb3IgKGkgPSAwOyBpIDwgRENUU0laRTI7IGkrKykgew0KKwkgIGlzbXRibFtpXSA9IChJU0xPV19NVUxUX1RZUEUpIHF0YmwtPnF1YW50dmFsW2ldOw0KKwl9DQorICAgICAgfQ0KKyAgICAgIGJyZWFrOw0KKyNlbmRpZg0KKyNpZmRlZiBEQ1RfSUZBU1RfU1VQUE9SVEVEDQorICAgIGNhc2UgSkRDVF9JRkFTVDoNCisgICAgICB7DQorCS8qIEZvciBBQSZOIElEQ1QgbWV0aG9kLCBtdWx0aXBsaWVycyBhcmUgZXF1YWwgdG8gcXVhbnRpemF0aW9uDQorCSAqIGNvZWZmaWNpZW50cyBzY2FsZWQgYnkgc2NhbGVmYWN0b3Jbcm93XSpzY2FsZWZhY3Rvcltjb2xdLCB3aGVyZQ0KKwkgKiAgIHNjYWxlZmFjdG9yWzBdID0gMQ0KKwkgKiAgIHNjYWxlZmFjdG9yW2tdID0gY29zKGsqUEkvMTYpICogc3FydCgyKSAgICBmb3Igaz0xLi43DQorCSAqIEZvciBpbnRlZ2VyIG9wZXJhdGlvbiwgdGhlIG11bHRpcGxpZXIgdGFibGUgaXMgdG8gYmUgc2NhbGVkIGJ5DQorCSAqIElGQVNUX1NDQUxFX0JJVFMuDQorCSAqLw0KKwlJRkFTVF9NVUxUX1RZUEUgKiBpZm10YmwgPSAoSUZBU1RfTVVMVF9UWVBFICopIGNvbXBwdHItPmRjdF90YWJsZTsNCisjZGVmaW5lIENPTlNUX0JJVFMgMTQNCisJc3RhdGljIGNvbnN0IElOVDE2IGFhbnNjYWxlc1tEQ1RTSVpFMl0gPSB7DQorCSAgLyogcHJlY29tcHV0ZWQgdmFsdWVzIHNjYWxlZCB1cCBieSAxNCBiaXRzICovDQorCSAgMTYzODQsIDIyNzI1LCAyMTQwNywgMTkyNjYsIDE2Mzg0LCAxMjg3MywgIDg4NjcsICA0NTIwLA0KKwkgIDIyNzI1LCAzMTUyMSwgMjk2OTIsIDI2NzIyLCAyMjcyNSwgMTc4NTUsIDEyMjk5LCAgNjI3MCwNCisJICAyMTQwNywgMjk2OTIsIDI3OTY5LCAyNTE3MiwgMjE0MDcsIDE2ODE5LCAxMTU4NSwgIDU5MDYsDQorCSAgMTkyNjYsIDI2NzIyLCAyNTE3MiwgMjI2NTQsIDE5MjY2LCAxNTEzNywgMTA0MjYsICA1MzE1LA0KKwkgIDE2Mzg0LCAyMjcyNSwgMjE0MDcsIDE5MjY2LCAxNjM4NCwgMTI4NzMsICA4ODY3LCAgNDUyMCwNCisJICAxMjg3MywgMTc4NTUsIDE2ODE5LCAxNTEzNywgMTI4NzMsIDEwMTE0LCAgNjk2NywgIDM1NTIsDQorCSAgIDg4NjcsIDEyMjk5LCAxMTU4NSwgMTA0MjYsICA4ODY3LCAgNjk2NywgIDQ3OTksICAyNDQ2LA0KKwkgICA0NTIwLCAgNjI3MCwgIDU5MDYsICA1MzE1LCAgNDUyMCwgIDM1NTIsICAyNDQ2LCAgMTI0Nw0KKwl9Ow0KKwlTSElGVF9URU1QUw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgRENUU0laRTI7IGkrKykgew0KKwkgIGlmbXRibFtpXSA9IChJRkFTVF9NVUxUX1RZUEUpDQorCSAgICBERVNDQUxFKE1VTFRJUExZMTZWMTYoKElOVDMyKSBxdGJsLT5xdWFudHZhbFtpXSwNCisJCQkJICAoSU5UMzIpIGFhbnNjYWxlc1tpXSksDQorCQkgICAgQ09OU1RfQklUUy1JRkFTVF9TQ0FMRV9CSVRTKTsNCisJfQ0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisjZW5kaWYNCisjaWZkZWYgRENUX0ZMT0FUX1NVUFBPUlRFRA0KKyAgICBjYXNlIEpEQ1RfRkxPQVQ6DQorICAgICAgew0KKwkvKiBGb3IgZmxvYXQgQUEmTiBJRENUIG1ldGhvZCwgbXVsdGlwbGllcnMgYXJlIGVxdWFsIHRvIHF1YW50aXphdGlvbg0KKwkgKiBjb2VmZmljaWVudHMgc2NhbGVkIGJ5IHNjYWxlZmFjdG9yW3Jvd10qc2NhbGVmYWN0b3JbY29sXSwgd2hlcmUNCisJICogICBzY2FsZWZhY3RvclswXSA9IDENCisJICogICBzY2FsZWZhY3RvcltrXSA9IGNvcyhrKlBJLzE2KSAqIHNxcnQoMikgICAgZm9yIGs9MS4uNw0KKwkgKi8NCisJRkxPQVRfTVVMVF9UWVBFICogZm10YmwgPSAoRkxPQVRfTVVMVF9UWVBFICopIGNvbXBwdHItPmRjdF90YWJsZTsNCisJaW50IHJvdywgY29sOw0KKwlzdGF0aWMgY29uc3QgZG91YmxlIGFhbnNjYWxlZmFjdG9yW0RDVFNJWkVdID0gew0KKwkgIDEuMCwgMS4zODcwMzk4NDUsIDEuMzA2NTYyOTY1LCAxLjE3NTg3NTYwMiwNCisJICAxLjAsIDAuNzg1Njk0OTU4LCAwLjU0MTE5NjEwMCwgMC4yNzU4OTkzNzkNCisJfTsNCisNCisJaSA9IDA7DQorCWZvciAocm93ID0gMDsgcm93IDwgRENUU0laRTsgcm93KyspIHsNCisJICBmb3IgKGNvbCA9IDA7IGNvbCA8IERDVFNJWkU7IGNvbCsrKSB7DQorCSAgICBmbXRibFtpXSA9IChGTE9BVF9NVUxUX1RZUEUpDQorCSAgICAgICgoZG91YmxlKSBxdGJsLT5xdWFudHZhbFtpXSAqDQorCSAgICAgICBhYW5zY2FsZWZhY3Rvcltyb3ddICogYWFuc2NhbGVmYWN0b3JbY29sXSk7DQorCSAgICBpKys7DQorCSAgfQ0KKwl9DQorICAgICAgfQ0KKyAgICAgIGJyZWFrOw0KKyNlbmRpZg0KKyAgICBkZWZhdWx0Og0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfTk9UX0NPTVBJTEVEKTsNCisgICAgICBicmVhazsNCisgICAgfQ0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgSURDVCBtYW5hZ2VyLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2ppbml0X2ludmVyc2VfZGN0IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIG15X2lkY3RfcHRyIGlkY3Q7DQorICBpbnQgY2k7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyOw0KKw0KKyAgaWRjdCA9IChteV9pZGN0X3B0cikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJU0laRU9GKG15X2lkY3RfY29udHJvbGxlcikpOw0KKyAgY2luZm8tPmlkY3QgPSAoc3RydWN0IGpwZWdfaW52ZXJzZV9kY3QgKikgaWRjdDsNCisgIGlkY3QtPnB1Yi5zdGFydF9wYXNzID0gc3RhcnRfcGFzczsNCisNCisgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorICAgICAgIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICAvKiBBbGxvY2F0ZSBhbmQgcHJlLXplcm8gYSBtdWx0aXBsaWVyIHRhYmxlIGZvciBlYWNoIGNvbXBvbmVudCAqLw0KKyAgICBjb21wcHRyLT5kY3RfdGFibGUgPQ0KKyAgICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCSAgU0laRU9GKG11bHRpcGxpZXJfdGFibGUpKTsNCisgICAgTUVNWkVSTyhjb21wcHRyLT5kY3RfdGFibGUsIFNJWkVPRihtdWx0aXBsaWVyX3RhYmxlKSk7DQorICAgIC8qIE1hcmsgbXVsdGlwbGllciB0YWJsZSBub3QgeWV0IHNldCB1cCBmb3IgYW55IG1ldGhvZCAqLw0KKyAgICBpZGN0LT5jdXJfbWV0aG9kW2NpXSA9IC0xOw0KKyAgfQ0KK30NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZGh1ZmYuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkaHVmZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MjRkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZGh1ZmYuYwpAQCAtMCwwICsxLDY1NyBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGpkaHVmZi5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgSHVmZm1hbiBlbnRyb3B5IGRlY29kaW5nIHJvdXRpbmVzLg0KKyAqDQorICogTXVjaCBvZiB0aGUgY29tcGxleGl0eSBoZXJlIGhhcyB0byBkbyB3aXRoIHN1cHBvcnRpbmcgaW5wdXQgc3VzcGVuc2lvbi4NCisgKiBJZiB0aGUgZGF0YSBzb3VyY2UgbW9kdWxlIGRlbWFuZHMgc3VzcGVuc2lvbiwgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGJhY2sNCisgKiB1cCB0byB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgTUNVLiAgVG8gZG8gdGhpcywgd2UgY29weSBzdGF0ZSB2YXJpYWJsZXMNCisgKiBpbnRvIGxvY2FsIHdvcmtpbmcgc3RvcmFnZSwgYW5kIHVwZGF0ZSB0aGVtIGJhY2sgdG8gdGhlIHBlcm1hbmVudA0KKyAqIHN0b3JhZ2Ugb25seSB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiBhbiBNQ1UuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorI2luY2x1ZGUgImpkaHVmZi5oIgkJLyogRGVjbGFyYXRpb25zIHNoYXJlZCB3aXRoIGpkcGh1ZmYuYyAqLw0KKw0KKyNpZmRlZiBfRlhfTUFOQUdFRF9DT0RFXw0KKyNkZWZpbmUgc2F2YWJsZV9zdGF0ZQlzYXZhYmxlX3N0YXRlX2QNCisjZW5kaWYNCisNCisvKg0KKyAqIEV4cGFuZGVkIGVudHJvcHkgZGVjb2RlciBvYmplY3QgZm9yIEh1ZmZtYW4gZGVjb2RpbmcuDQorICoNCisgKiBUaGUgc2F2YWJsZV9zdGF0ZSBzdWJyZWNvcmQgY29udGFpbnMgZmllbGRzIHRoYXQgY2hhbmdlIHdpdGhpbiBhbiBNQ1UsDQorICogYnV0IG11c3Qgbm90IGJlIHVwZGF0ZWQgcGVybWFuZW50bHkgdW50aWwgd2UgY29tcGxldGUgdGhlIE1DVS4NCisgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBpbnQgbGFzdF9kY192YWxbTUFYX0NPTVBTX0lOX1NDQU5dOyAvKiBsYXN0IERDIGNvZWYgZm9yIGVhY2ggY29tcG9uZW50ICovDQorfSBzYXZhYmxlX3N0YXRlOw0KKw0KKy8qIFRoaXMgbWFjcm8gaXMgdG8gd29yayBhcm91bmQgY29tcGlsZXJzIHdpdGggbWlzc2luZyBvciBicm9rZW4NCisgKiBzdHJ1Y3R1cmUgYXNzaWdubWVudC4gIFlvdSdsbCBuZWVkIHRvIGZpeCB0aGlzIGNvZGUgaWYgeW91IGhhdmUNCisgKiBzdWNoIGEgY29tcGlsZXIgYW5kIHlvdSBjaGFuZ2UgTUFYX0NPTVBTX0lOX1NDQU4uDQorICovDQorDQorI2lmbmRlZiBOT19TVFJVQ1RfQVNTSUdODQorI2RlZmluZSBBU1NJR05fU1RBVEUoZGVzdCxzcmMpICAoKGRlc3QpID0gKHNyYykpDQorI2Vsc2UNCisjaWYgTUFYX0NPTVBTX0lOX1NDQU4gPT0gNA0KKyNkZWZpbmUgQVNTSUdOX1NUQVRFKGRlc3Qsc3JjKSAgXA0KKwkoKGRlc3QpLmxhc3RfZGNfdmFsWzBdID0gKHNyYykubGFzdF9kY192YWxbMF0sIFwNCisJIChkZXN0KS5sYXN0X2RjX3ZhbFsxXSA9IChzcmMpLmxhc3RfZGNfdmFsWzFdLCBcDQorCSAoZGVzdCkubGFzdF9kY192YWxbMl0gPSAoc3JjKS5sYXN0X2RjX3ZhbFsyXSwgXA0KKwkgKGRlc3QpLmxhc3RfZGNfdmFsWzNdID0gKHNyYykubGFzdF9kY192YWxbM10pDQorI2VuZGlmDQorI2VuZGlmDQorDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgc3RydWN0IGpwZWdfZW50cm9weV9kZWNvZGVyIHB1YjsgLyogcHVibGljIGZpZWxkcyAqLw0KKw0KKyAgLyogVGhlc2UgZmllbGRzIGFyZSBsb2FkZWQgaW50byBsb2NhbCB2YXJpYWJsZXMgYXQgc3RhcnQgb2YgZWFjaCBNQ1UuDQorICAgKiBJbiBjYXNlIG9mIHN1c3BlbnNpb24sIHdlIGV4aXQgV0lUSE9VVCB1cGRhdGluZyB0aGVtLg0KKyAgICovDQorICBiaXRyZWFkX3Blcm1fc3RhdGUgYml0c3RhdGU7CS8qIEJpdCBidWZmZXIgYXQgc3RhcnQgb2YgTUNVICovDQorICBzYXZhYmxlX3N0YXRlIHNhdmVkOwkJLyogT3RoZXIgc3RhdGUgYXQgc3RhcnQgb2YgTUNVICovDQorDQorICAvKiBUaGVzZSBmaWVsZHMgYXJlIE5PVCBsb2FkZWQgaW50byBsb2NhbCB3b3JraW5nIHN0YXRlLiAqLw0KKyAgdW5zaWduZWQgaW50IHJlc3RhcnRzX3RvX2dvOwkvKiBNQ1VzIGxlZnQgaW4gdGhpcyByZXN0YXJ0IGludGVydmFsICovDQorDQorICAvKiBQb2ludGVycyB0byBkZXJpdmVkIHRhYmxlcyAodGhlc2Ugd29ya3NwYWNlcyBoYXZlIGltYWdlIGxpZmVzcGFuKSAqLw0KKyAgZF9kZXJpdmVkX3RibCAqIGRjX2Rlcml2ZWRfdGJsc1tOVU1fSFVGRl9UQkxTXTsNCisgIGRfZGVyaXZlZF90YmwgKiBhY19kZXJpdmVkX3RibHNbTlVNX0hVRkZfVEJMU107DQorDQorICAvKiBQcmVjYWxjdWxhdGVkIGluZm8gc2V0IHVwIGJ5IHN0YXJ0X3Bhc3MgZm9yIHVzZSBpbiBkZWNvZGVfbWN1OiAqLw0KKw0KKyAgLyogUG9pbnRlcnMgdG8gZGVyaXZlZCB0YWJsZXMgdG8gYmUgdXNlZCBmb3IgZWFjaCBibG9jayB3aXRoaW4gYW4gTUNVICovDQorICBkX2Rlcml2ZWRfdGJsICogZGNfY3VyX3RibHNbRF9NQVhfQkxPQ0tTX0lOX01DVV07DQorICBkX2Rlcml2ZWRfdGJsICogYWNfY3VyX3RibHNbRF9NQVhfQkxPQ0tTX0lOX01DVV07DQorICAvKiBXaGV0aGVyIHdlIGNhcmUgYWJvdXQgdGhlIERDIGFuZCBBQyBjb2VmZmljaWVudCB2YWx1ZXMgZm9yIGVhY2ggYmxvY2sgKi8NCisgIGJvb2xlYW4gZGNfbmVlZGVkW0RfTUFYX0JMT0NLU19JTl9NQ1VdOw0KKyAgYm9vbGVhbiBhY19uZWVkZWRbRF9NQVhfQkxPQ0tTX0lOX01DVV07DQorfSBodWZmX2VudHJvcHlfZGVjb2RlcjsNCisNCit0eXBlZGVmIGh1ZmZfZW50cm9weV9kZWNvZGVyICogaHVmZl9lbnRyb3B5X3B0cjsNCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgZm9yIGEgSHVmZm1hbi1jb21wcmVzc2VkIHNjYW4uDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc3RhcnRfcGFzc19odWZmX2RlY29kZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5ID0gKGh1ZmZfZW50cm9weV9wdHIpIGNpbmZvLT5lbnRyb3B5Ow0KKyAgaW50IGNpLCBibGtuLCBkY3RibCwgYWN0Ymw7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisNCisgIC8qIENoZWNrIHRoYXQgdGhlIHNjYW4gcGFyYW1ldGVycyBTcywgU2UsIEFoL0FsIGFyZSBPSyBmb3Igc2VxdWVudGlhbCBKUEVHLg0KKyAgICogVGhpcyBvdWdodCB0byBiZSBhbiBlcnJvciBjb25kaXRpb24sIGJ1dCB3ZSBtYWtlIGl0IGEgd2FybmluZyBiZWNhdXNlDQorICAgKiB0aGVyZSBhcmUgc29tZSBiYXNlbGluZSBmaWxlcyBvdXQgdGhlcmUgd2l0aCBhbGwgemVyb2VzIGluIHRoZXNlIGJ5dGVzLg0KKyAgICovDQorICBpZiAoY2luZm8tPlNzICE9IDAgfHwgY2luZm8tPlNlICE9IERDVFNJWkUyLTEgfHwNCisgICAgICBjaW5mby0+QWggIT0gMCB8fCBjaW5mby0+QWwgIT0gMCkNCisgICAgV0FSTk1TKGNpbmZvLCBKV1JOX05PVF9TRVFVRU5USUFMKTsNCisNCisgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKSB7DQorICAgIGNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorICAgIGRjdGJsID0gY29tcHB0ci0+ZGNfdGJsX25vOw0KKyAgICBhY3RibCA9IGNvbXBwdHItPmFjX3RibF9ubzsNCisgICAgLyogQ29tcHV0ZSBkZXJpdmVkIHZhbHVlcyBmb3IgSHVmZm1hbiB0YWJsZXMgKi8NCisgICAgLyogV2UgbWF5IGRvIHRoaXMgbW9yZSB0aGFuIG9uY2UgZm9yIGEgdGFibGUsIGJ1dCBpdCdzIG5vdCBleHBlbnNpdmUgKi8NCisgICAganBlZ19tYWtlX2RfZGVyaXZlZF90YmwoY2luZm8sIFRSVUUsIGRjdGJsLA0KKwkJCSAgICAmIGVudHJvcHktPmRjX2Rlcml2ZWRfdGJsc1tkY3RibF0pOw0KKyAgICBqcGVnX21ha2VfZF9kZXJpdmVkX3RibChjaW5mbywgRkFMU0UsIGFjdGJsLA0KKwkJCSAgICAmIGVudHJvcHktPmFjX2Rlcml2ZWRfdGJsc1thY3RibF0pOw0KKyAgICAvKiBJbml0aWFsaXplIERDIHByZWRpY3Rpb25zIHRvIDAgKi8NCisgICAgZW50cm9weS0+c2F2ZWQubGFzdF9kY192YWxbY2ldID0gMDsNCisgIH0NCisNCisgIC8qIFByZWNhbGN1bGF0ZSBkZWNvZGluZyBpbmZvIGZvciBlYWNoIGJsb2NrIGluIGFuIE1DVSBvZiB0aGlzIHNjYW4gKi8NCisgIGZvciAoYmxrbiA9IDA7IGJsa24gPCBjaW5mby0+YmxvY2tzX2luX01DVTsgYmxrbisrKSB7DQorICAgIGNpID0gY2luZm8tPk1DVV9tZW1iZXJzaGlwW2Jsa25dOw0KKyAgICBjb21wcHRyID0gY2luZm8tPmN1cl9jb21wX2luZm9bY2ldOw0KKyAgICAvKiBQcmVjYWxjdWxhdGUgd2hpY2ggdGFibGUgdG8gdXNlIGZvciBlYWNoIGJsb2NrICovDQorICAgIGVudHJvcHktPmRjX2N1cl90YmxzW2Jsa25dID0gZW50cm9weS0+ZGNfZGVyaXZlZF90YmxzW2NvbXBwdHItPmRjX3RibF9ub107DQorICAgIGVudHJvcHktPmFjX2N1cl90YmxzW2Jsa25dID0gZW50cm9weS0+YWNfZGVyaXZlZF90YmxzW2NvbXBwdHItPmFjX3RibF9ub107DQorICAgIC8qIERlY2lkZSB3aGV0aGVyIHdlIHJlYWxseSBjYXJlIGFib3V0IHRoZSBjb2VmZmljaWVudCB2YWx1ZXMgKi8NCisgICAgaWYgKGNvbXBwdHItPmNvbXBvbmVudF9uZWVkZWQpIHsNCisgICAgICBlbnRyb3B5LT5kY19uZWVkZWRbYmxrbl0gPSBUUlVFOw0KKyAgICAgIC8qIHdlIGRvbid0IG5lZWQgdGhlIEFDcyBpZiBwcm9kdWNpbmcgYSAxLzh0aC1zaXplIGltYWdlICovDQorICAgICAgZW50cm9weS0+YWNfbmVlZGVkW2Jsa25dID0gKGNvbXBwdHItPkRDVF9zY2FsZWRfc2l6ZSA+IDEpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIGVudHJvcHktPmRjX25lZWRlZFtibGtuXSA9IGVudHJvcHktPmFjX25lZWRlZFtibGtuXSA9IEZBTFNFOw0KKyAgICB9DQorICB9DQorDQorICAvKiBJbml0aWFsaXplIGJpdHJlYWQgc3RhdGUgdmFyaWFibGVzICovDQorICBlbnRyb3B5LT5iaXRzdGF0ZS5iaXRzX2xlZnQgPSAwOw0KKyAgZW50cm9weS0+Yml0c3RhdGUuZ2V0X2J1ZmZlciA9IDA7IC8qIHVubmVjZXNzYXJ5LCBidXQga2VlcHMgUHVyaWZ5IHF1aWV0ICovDQorICBlbnRyb3B5LT5wdWIuaW5zdWZmaWNpZW50X2RhdGEgPSBGQUxTRTsNCisNCisgIC8qIEluaXRpYWxpemUgcmVzdGFydCBjb3VudGVyICovDQorICBlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9IGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsOw0KK30NCisNCisNCisvKg0KKyAqIENvbXB1dGUgdGhlIGRlcml2ZWQgdmFsdWVzIGZvciBhIEh1ZmZtYW4gdGFibGUuDQorICogVGhpcyByb3V0aW5lIGFsc28gcGVyZm9ybXMgc29tZSB2YWxpZGF0aW9uIGNoZWNrcyBvbiB0aGUgdGFibGUuDQorICoNCisgKiBOb3RlIHRoaXMgaXMgYWxzbyB1c2VkIGJ5IGpkcGh1ZmYuYy4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqcGVnX21ha2VfZF9kZXJpdmVkX3RibCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgYm9vbGVhbiBpc0RDLCBpbnQgdGJsbm8sDQorCQkJIGRfZGVyaXZlZF90YmwgKiogcGR0YmwpDQorew0KKyAgSkhVRkZfVEJMICpodGJsOw0KKyAgZF9kZXJpdmVkX3RibCAqZHRibDsNCisgIGludCBwLCBpLCBsLCBfc2ksIG51bXN5bWJvbHM7DQorICBpbnQgbG9va2JpdHMsIGN0cjsNCisgIGNoYXIgaHVmZnNpemVbMjU3XTsNCisgIHVuc2lnbmVkIGludCBodWZmY29kZVsyNTddOw0KKyAgdW5zaWduZWQgaW50IGNvZGU7DQorDQorICAvKiBOb3RlIHRoYXQgaHVmZnNpemVbXSBhbmQgaHVmZmNvZGVbXSBhcmUgZmlsbGVkIGluIGNvZGUtbGVuZ3RoIG9yZGVyLA0KKyAgICogcGFyYWxsZWxpbmcgdGhlIG9yZGVyIG9mIHRoZSBzeW1ib2xzIHRoZW1zZWx2ZXMgaW4gaHRibC0+aHVmZnZhbFtdLg0KKyAgICovDQorDQorICAvKiBGaW5kIHRoZSBpbnB1dCBIdWZmbWFuIHRhYmxlICovDQorICBpZiAodGJsbm8gPCAwIHx8IHRibG5vID49IE5VTV9IVUZGX1RCTFMpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX05PX0hVRkZfVEFCTEUsIHRibG5vKTsNCisgIGh0YmwgPQ0KKyAgICBpc0RDID8gY2luZm8tPmRjX2h1ZmZfdGJsX3B0cnNbdGJsbm9dIDogY2luZm8tPmFjX2h1ZmZfdGJsX3B0cnNbdGJsbm9dOw0KKyAgaWYgKGh0YmwgPT0gTlVMTCkNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfTk9fSFVGRl9UQUJMRSwgdGJsbm8pOw0KKw0KKyAgLyogQWxsb2NhdGUgYSB3b3Jrc3BhY2UgaWYgd2UgaGF2ZW4ndCBhbHJlYWR5IGRvbmUgc28uICovDQorICBpZiAoKnBkdGJsID09IE5VTEwpDQorICAgICpwZHRibCA9IChkX2Rlcml2ZWRfdGJsICopDQorICAgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJICBTSVpFT0YoZF9kZXJpdmVkX3RibCkpOw0KKyAgZHRibCA9ICpwZHRibDsNCisgIGR0YmwtPnB1YiA9IGh0Ymw7CQkvKiBmaWxsIGluIGJhY2sgbGluayAqLw0KKyAgDQorICAvKiBGaWd1cmUgQy4xOiBtYWtlIHRhYmxlIG9mIEh1ZmZtYW4gY29kZSBsZW5ndGggZm9yIGVhY2ggc3ltYm9sICovDQorDQorICBwID0gMDsNCisgIGZvciAobCA9IDE7IGwgPD0gMTY7IGwrKykgew0KKyAgICBpID0gKGludCkgaHRibC0+Yml0c1tsXTsNCisgICAgaWYgKGkgPCAwIHx8IHAgKyBpID4gMjU2KQkvKiBwcm90ZWN0IGFnYWluc3QgdGFibGUgb3ZlcnJ1biAqLw0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0hVRkZfVEFCTEUpOw0KKyAgICB3aGlsZSAoaS0tKQ0KKyAgICAgIGh1ZmZzaXplW3ArK10gPSAoY2hhcikgbDsNCisgIH0NCisgIGh1ZmZzaXplW3BdID0gMDsNCisgIG51bXN5bWJvbHMgPSBwOw0KKyAgDQorICAvKiBGaWd1cmUgQy4yOiBnZW5lcmF0ZSB0aGUgY29kZXMgdGhlbXNlbHZlcyAqLw0KKyAgLyogV2UgYWxzbyB2YWxpZGF0ZSB0aGF0IHRoZSBjb3VudHMgcmVwcmVzZW50IGEgbGVnYWwgSHVmZm1hbiBjb2RlIHRyZWUuICovDQorICANCisgIGNvZGUgPSAwOw0KKyAgX3NpID0gaHVmZnNpemVbMF07DQorICBwID0gMDsNCisgIHdoaWxlIChodWZmc2l6ZVtwXSkgew0KKyAgICB3aGlsZSAoKChpbnQpIGh1ZmZzaXplW3BdKSA9PSBfc2kpIHsNCisgICAgICBodWZmY29kZVtwKytdID0gY29kZTsNCisgICAgICBjb2RlKys7DQorICAgIH0NCisgICAgLyogY29kZSBpcyBub3cgMSBtb3JlIHRoYW4gdGhlIGxhc3QgY29kZSB1c2VkIGZvciBjb2RlbGVuZ3RoIHNpOyBidXQNCisgICAgICogaXQgbXVzdCBzdGlsbCBmaXQgaW4gc2kgYml0cywgc2luY2Ugbm8gY29kZSBpcyBhbGxvd2VkIHRvIGJlIGFsbCBvbmVzLg0KKyAgICAgKi8NCisgICAgaWYgKCgoSU5UMzIpIGNvZGUpID49ICgoKElOVDMyKSAxKSA8PCBfc2kpKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0hVRkZfVEFCTEUpOw0KKyAgICBjb2RlIDw8PSAxOw0KKyAgICBfc2krKzsNCisgIH0NCisNCisgIC8qIEZpZ3VyZSBGLjE1OiBnZW5lcmF0ZSBkZWNvZGluZyB0YWJsZXMgZm9yIGJpdC1zZXF1ZW50aWFsIGRlY29kaW5nICovDQorDQorICBwID0gMDsNCisgIGZvciAobCA9IDE7IGwgPD0gMTY7IGwrKykgew0KKyAgICBpZiAoaHRibC0+Yml0c1tsXSkgew0KKyAgICAgIC8qIHZhbG9mZnNldFtsXSA9IGh1ZmZ2YWxbXSBpbmRleCBvZiAxc3Qgc3ltYm9sIG9mIGNvZGUgbGVuZ3RoIGwsDQorICAgICAgICogbWludXMgdGhlIG1pbmltdW0gY29kZSBvZiBsZW5ndGggbA0KKyAgICAgICAqLw0KKyAgICAgIGR0YmwtPnZhbG9mZnNldFtsXSA9IChJTlQzMikgcCAtIChJTlQzMikgaHVmZmNvZGVbcF07DQorICAgICAgcCArPSBodGJsLT5iaXRzW2xdOw0KKyAgICAgIGR0YmwtPm1heGNvZGVbbF0gPSBodWZmY29kZVtwLTFdOyAvKiBtYXhpbXVtIGNvZGUgb2YgbGVuZ3RoIGwgKi8NCisgICAgfSBlbHNlIHsNCisgICAgICBkdGJsLT5tYXhjb2RlW2xdID0gLTE7CS8qIC0xIGlmIG5vIGNvZGVzIG9mIHRoaXMgbGVuZ3RoICovDQorICAgIH0NCisgIH0NCisgIGR0YmwtPm1heGNvZGVbMTddID0gMHhGRkZGRkw7IC8qIGVuc3VyZXMganBlZ19odWZmX2RlY29kZSB0ZXJtaW5hdGVzICovDQorDQorICAvKiBDb21wdXRlIGxvb2thaGVhZCB0YWJsZXMgdG8gc3BlZWQgdXAgZGVjb2RpbmcuDQorICAgKiBGaXJzdCB3ZSBzZXQgYWxsIHRoZSB0YWJsZSBlbnRyaWVzIHRvIDAsIGluZGljYXRpbmcgInRvbyBsb25nIjsNCisgICAqIHRoZW4gd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBIdWZmbWFuIGNvZGVzIHRoYXQgYXJlIHNob3J0IGVub3VnaCBhbmQNCisgICAqIGZpbGwgaW4gYWxsIHRoZSBlbnRyaWVzIHRoYXQgY29ycmVzcG9uZCB0byBiaXQgc2VxdWVuY2VzIHN0YXJ0aW5nDQorICAgKiB3aXRoIHRoYXQgY29kZS4NCisgICAqLw0KKw0KKyAgTUVNWkVSTyhkdGJsLT5sb29rX25iaXRzLCBTSVpFT0YoZHRibC0+bG9va19uYml0cykpOw0KKw0KKyAgcCA9IDA7DQorICBmb3IgKGwgPSAxOyBsIDw9IEhVRkZfTE9PS0FIRUFEOyBsKyspIHsNCisgICAgZm9yIChpID0gMTsgaSA8PSAoaW50KSBodGJsLT5iaXRzW2xdOyBpKyssIHArKykgew0KKyAgICAgIC8qIGwgPSBjdXJyZW50IGNvZGUncyBsZW5ndGgsIHAgPSBpdHMgaW5kZXggaW4gaHVmZmNvZGVbXSAmIGh1ZmZ2YWxbXS4gKi8NCisgICAgICAvKiBHZW5lcmF0ZSBsZWZ0LWp1c3RpZmllZCBjb2RlIGZvbGxvd2VkIGJ5IGFsbCBwb3NzaWJsZSBiaXQgc2VxdWVuY2VzICovDQorICAgICAgbG9va2JpdHMgPSBodWZmY29kZVtwXSA8PCAoSFVGRl9MT09LQUhFQUQtbCk7DQorICAgICAgZm9yIChjdHIgPSAxIDw8IChIVUZGX0xPT0tBSEVBRC1sKTsgY3RyID4gMDsgY3RyLS0pIHsNCisJZHRibC0+bG9va19uYml0c1tsb29rYml0c10gPSBsOw0KKwlkdGJsLT5sb29rX3N5bVtsb29rYml0c10gPSBodGJsLT5odWZmdmFsW3BdOw0KKwlsb29rYml0cysrOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKw0KKyAgLyogVmFsaWRhdGUgc3ltYm9scyBhcyBiZWluZyByZWFzb25hYmxlLg0KKyAgICogRm9yIEFDIHRhYmxlcywgd2UgbWFrZSBubyBjaGVjaywgYnV0IGFjY2VwdCBhbGwgYnl0ZSB2YWx1ZXMgMC4uMjU1Lg0KKyAgICogRm9yIERDIHRhYmxlcywgd2UgcmVxdWlyZSB0aGUgc3ltYm9scyB0byBiZSBpbiByYW5nZSAwLi4xNS4NCisgICAqIChUaWdodGVyIGJvdW5kcyBjb3VsZCBiZSBhcHBsaWVkIGRlcGVuZGluZyBvbiB0aGUgZGF0YSBkZXB0aCBhbmQgbW9kZSwNCisgICAqIGJ1dCB0aGlzIGlzIHN1ZmZpY2llbnQgdG8gZW5zdXJlIHNhZmUgZGVjb2RpbmcuKQ0KKyAgICovDQorICBpZiAoaXNEQykgew0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtc3ltYm9sczsgaSsrKSB7DQorICAgICAgaW50IHN5bSA9IGh0YmwtPmh1ZmZ2YWxbaV07DQorICAgICAgaWYgKHN5bSA8IDAgfHwgc3ltID4gMTUpDQorCUVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0hVRkZfVEFCTEUpOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogT3V0LW9mLWxpbmUgY29kZSBmb3IgYml0IGZldGNoaW5nIChzaGFyZWQgd2l0aCBqZHBodWZmLmMpLg0KKyAqIFNlZSBqZGh1ZmYuaCBmb3IgaW5mbyBhYm91dCB1c2FnZS4NCisgKiBOb3RlOiBjdXJyZW50IHZhbHVlcyBvZiBnZXRfYnVmZmVyIGFuZCBiaXRzX2xlZnQgYXJlIHBhc3NlZCBhcyBwYXJhbWV0ZXJzLA0KKyAqIGJ1dCBhcmUgcmV0dXJuZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIG9mIHRoZSBzdGF0ZSBzdHJ1Y3QuDQorICoNCisgKiBPbiBtb3N0IG1hY2hpbmVzIE1JTl9HRVRfQklUUyBzaG91bGQgYmUgMjUgdG8gYWxsb3cgdGhlIGZ1bGwgMzItYml0IHdpZHRoDQorICogb2YgZ2V0X2J1ZmZlciB0byBiZSB1c2VkLiAgKE9uIG1hY2hpbmVzIHdpdGggd2lkZXIgd29yZHMsIGFuIGV2ZW4gbGFyZ2VyDQorICogYnVmZmVyIGNvdWxkIGJlIHVzZWQuKSAgSG93ZXZlciwgb24gc29tZSBtYWNoaW5lcyAzMi1iaXQgc2hpZnRzIGFyZQ0KKyAqIHF1aXRlIHNsb3cgYW5kIHRha2UgdGltZSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZiBwbGFjZXMgc2hpZnRlZC4NCisgKiAoVGhpcyBpcyB0cnVlIHdpdGggbW9zdCBQQyBjb21waWxlcnMsIGZvciBpbnN0YW5jZS4pICBJbiB0aGlzIGNhc2UgaXQgbWF5DQorICogYmUgYSB3aW4gdG8gc2V0IE1JTl9HRVRfQklUUyB0byB0aGUgbWluaW11bSB2YWx1ZSBvZiAxNS4gIFRoaXMgcmVkdWNlcyB0aGUNCisgKiBhdmVyYWdlIHNoaWZ0IGRpc3RhbmNlIGF0IHRoZSBjb3N0IG9mIG1vcmUgY2FsbHMgdG8ganBlZ19maWxsX2JpdF9idWZmZXIuDQorICovDQorDQorI2lmZGVmIFNMT1dfU0hJRlRfMzINCisjZGVmaW5lIE1JTl9HRVRfQklUUyAgMTUJLyogbWluaW11bSBhbGxvd2FibGUgdmFsdWUgKi8NCisjZWxzZQ0KKyNkZWZpbmUgTUlOX0dFVF9CSVRTICAoQklUX0JVRl9TSVpFLTcpDQorI2VuZGlmDQorDQorDQorR0xPQkFMKGJvb2xlYW4pDQoranBlZ19maWxsX2JpdF9idWZmZXIgKGJpdHJlYWRfd29ya2luZ19zdGF0ZSAqIHN0YXRlLA0KKwkJICAgICAgcmVnaXN0ZXIgYml0X2J1Zl90eXBlIGdldF9idWZmZXIsIHJlZ2lzdGVyIGludCBiaXRzX2xlZnQsDQorCQkgICAgICBpbnQgbmJpdHMpDQorLyogTG9hZCB1cCB0aGUgYml0IGJ1ZmZlciB0byBhIGRlcHRoIG9mIGF0IGxlYXN0IG5iaXRzICovDQorew0KKyAgLyogQ29weSBoZWF2aWx5IHVzZWQgc3RhdGUgZmllbGRzIGludG8gbG9jYWxzIChob3BlZnVsbHkgcmVnaXN0ZXJzKSAqLw0KKyAgcmVnaXN0ZXIgY29uc3QgSk9DVEVUICogbmV4dF9pbnB1dF9ieXRlID0gc3RhdGUtPm5leHRfaW5wdXRfYnl0ZTsNCisgIHJlZ2lzdGVyIHNpemVfdCBieXRlc19pbl9idWZmZXIgPSBzdGF0ZS0+Ynl0ZXNfaW5fYnVmZmVyOw0KKyAgal9kZWNvbXByZXNzX3B0ciBjaW5mbyA9IHN0YXRlLT5jaW5mbzsNCisNCisgIC8qIEF0dGVtcHQgdG8gbG9hZCBhdCBsZWFzdCBNSU5fR0VUX0JJVFMgYml0cyBpbnRvIGdldF9idWZmZXIuICovDQorICAvKiAoSXQgaXMgYXNzdW1lZCB0aGF0IG5vIHJlcXVlc3Qgd2lsbCBiZSBmb3IgbW9yZSB0aGFuIHRoYXQgbWFueSBiaXRzLikgKi8NCisgIC8qIFdlIGZhaWwgdG8gZG8gc28gb25seSBpZiB3ZSBoaXQgYSBtYXJrZXIgb3IgYXJlIGZvcmNlZCB0byBzdXNwZW5kLiAqLw0KKw0KKyAgaWYgKGNpbmZvLT51bnJlYWRfbWFya2VyID09IDApIHsJLyogY2Fubm90IGFkdmFuY2UgcGFzdCBhIG1hcmtlciAqLw0KKyAgICB3aGlsZSAoYml0c19sZWZ0IDwgTUlOX0dFVF9CSVRTKSB7DQorICAgICAgcmVnaXN0ZXIgaW50IGM7DQorDQorICAgICAgLyogQXR0ZW1wdCB0byByZWFkIGEgYnl0ZSAqLw0KKyAgICAgIGlmIChieXRlc19pbl9idWZmZXIgPT0gMCkgew0KKwlpZiAoISAoKmNpbmZvLT5zcmMtPmZpbGxfaW5wdXRfYnVmZmVyKSAoY2luZm8pKQ0KKwkgIHJldHVybiBGQUxTRTsNCisJbmV4dF9pbnB1dF9ieXRlID0gY2luZm8tPnNyYy0+bmV4dF9pbnB1dF9ieXRlOw0KKwlieXRlc19pbl9idWZmZXIgPSBjaW5mby0+c3JjLT5ieXRlc19pbl9idWZmZXI7DQorICAgICAgfQ0KKyAgICAgIGJ5dGVzX2luX2J1ZmZlci0tOw0KKyAgICAgIGMgPSBHRVRKT0NURVQoKm5leHRfaW5wdXRfYnl0ZSsrKTsNCisNCisgICAgICAvKiBJZiBpdCdzIDB4RkYsIGNoZWNrIGFuZCBkaXNjYXJkIHN0dWZmZWQgemVybyBieXRlICovDQorICAgICAgaWYgKGMgPT0gMHhGRikgew0KKwkvKiBMb29wIGhlcmUgdG8gZGlzY2FyZCBhbnkgcGFkZGluZyBGRidzIG9uIHRlcm1pbmF0aW5nIG1hcmtlciwNCisJICogc28gdGhhdCB3ZSBjYW4gc2F2ZSBhIHZhbGlkIHVucmVhZF9tYXJrZXIgdmFsdWUuICBOT1RFOiB3ZSB3aWxsDQorCSAqIGFjY2VwdCBtdWx0aXBsZSBGRidzIGZvbGxvd2VkIGJ5IGEgMCBhcyBtZWFuaW5nIGEgc2luZ2xlIEZGIGRhdGENCisJICogYnl0ZS4gIFRoaXMgZGF0YSBwYXR0ZXJuIGlzIG5vdCB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkLg0KKwkgKi8NCisJZG8gew0KKwkgIGlmIChieXRlc19pbl9idWZmZXIgPT0gMCkgew0KKwkgICAgaWYgKCEgKCpjaW5mby0+c3JjLT5maWxsX2lucHV0X2J1ZmZlcikgKGNpbmZvKSkNCisJICAgICAgcmV0dXJuIEZBTFNFOw0KKwkgICAgbmV4dF9pbnB1dF9ieXRlID0gY2luZm8tPnNyYy0+bmV4dF9pbnB1dF9ieXRlOw0KKwkgICAgYnl0ZXNfaW5fYnVmZmVyID0gY2luZm8tPnNyYy0+Ynl0ZXNfaW5fYnVmZmVyOw0KKwkgIH0NCisJICBieXRlc19pbl9idWZmZXItLTsNCisJICBjID0gR0VUSk9DVEVUKCpuZXh0X2lucHV0X2J5dGUrKyk7DQorCX0gd2hpbGUgKGMgPT0gMHhGRik7DQorDQorCWlmIChjID09IDApIHsNCisJICAvKiBGb3VuZCBGRi8wMCwgd2hpY2ggcmVwcmVzZW50cyBhbiBGRiBkYXRhIGJ5dGUgKi8NCisJICBjID0gMHhGRjsNCisJfSBlbHNlIHsNCisJICAvKiBPb3BzLCBpdCdzIGFjdHVhbGx5IGEgbWFya2VyIGluZGljYXRpbmcgZW5kIG9mIGNvbXByZXNzZWQgZGF0YS4NCisJICAgKiBTYXZlIHRoZSBtYXJrZXIgY29kZSBmb3IgbGF0ZXIgdXNlLg0KKwkgICAqIEZpbmUgcG9pbnQ6IGl0IG1pZ2h0IGFwcGVhciB0aGF0IHdlIHNob3VsZCBzYXZlIHRoZSBtYXJrZXIgaW50bw0KKwkgICAqIGJpdHJlYWQgd29ya2luZyBzdGF0ZSwgbm90IHN0cmFpZ2h0IGludG8gcGVybWFuZW50IHN0YXRlLiAgQnV0DQorCSAgICogb25jZSB3ZSBoYXZlIGhpdCBhIG1hcmtlciwgd2UgY2Fubm90IG5lZWQgdG8gc3VzcGVuZCB3aXRoaW4gdGhlDQorCSAgICogY3VycmVudCBNQ1UsIGJlY2F1c2Ugd2Ugd2lsbCByZWFkIG5vIG1vcmUgYnl0ZXMgZnJvbSB0aGUgZGF0YQ0KKwkgICAqIHNvdXJjZS4gIFNvIGl0IGlzIE9LIHRvIHVwZGF0ZSBwZXJtYW5lbnQgc3RhdGUgcmlnaHQgYXdheS4NCisJICAgKi8NCisJICBjaW5mby0+dW5yZWFkX21hcmtlciA9IGM7DQorCSAgLyogU2VlIGlmIHdlIG5lZWQgdG8gaW5zZXJ0IHNvbWUgZmFrZSB6ZXJvIGJpdHMuICovDQorCSAgZ290byBub19tb3JlX2J5dGVzOw0KKwl9DQorICAgICAgfQ0KKw0KKyAgICAgIC8qIE9LLCBsb2FkIGMgaW50byBnZXRfYnVmZmVyICovDQorICAgICAgZ2V0X2J1ZmZlciA9IChnZXRfYnVmZmVyIDw8IDgpIHwgYzsNCisgICAgICBiaXRzX2xlZnQgKz0gODsNCisgICAgfSAvKiBlbmQgd2hpbGUgKi8NCisgIH0gZWxzZSB7DQorICBub19tb3JlX2J5dGVzOg0KKyAgICAvKiBXZSBnZXQgaGVyZSBpZiB3ZSd2ZSByZWFkIHRoZSBtYXJrZXIgdGhhdCB0ZXJtaW5hdGVzIHRoZSBjb21wcmVzc2VkDQorICAgICAqIGRhdGEgc2VnbWVudC4gIFRoZXJlIHNob3VsZCBiZSBlbm91Z2ggYml0cyBpbiB0aGUgYnVmZmVyIHJlZ2lzdGVyDQorICAgICAqIHRvIHNhdGlzZnkgdGhlIHJlcXVlc3Q7IGlmIHNvLCBubyBwcm9ibGVtLg0KKyAgICAgKi8NCisgICAgaWYgKG5iaXRzID4gYml0c19sZWZ0KSB7DQorICAgICAgLyogVWgtb2guICBSZXBvcnQgY29ycnVwdGVkIGRhdGEgdG8gdXNlciBhbmQgc3R1ZmYgemVyb2VzIGludG8NCisgICAgICAgKiB0aGUgZGF0YSBzdHJlYW0sIHNvIHRoYXQgd2UgY2FuIHByb2R1Y2Ugc29tZSBraW5kIG9mIGltYWdlLg0KKyAgICAgICAqIFdlIHVzZSBhIG5vbnZvbGF0aWxlIGZsYWcgdG8gZW5zdXJlIHRoYXQgb25seSBvbmUgd2FybmluZyBtZXNzYWdlDQorICAgICAgICogYXBwZWFycyBwZXIgZGF0YSBzZWdtZW50Lg0KKyAgICAgICAqLw0KKyAgICAgIGlmICghIGNpbmZvLT5lbnRyb3B5LT5pbnN1ZmZpY2llbnRfZGF0YSkgew0KKwlXQVJOTVMoY2luZm8sIEpXUk5fSElUX01BUktFUik7DQorCWNpbmZvLT5lbnRyb3B5LT5pbnN1ZmZpY2llbnRfZGF0YSA9IFRSVUU7DQorICAgICAgfQ0KKyAgICAgIC8qIEZpbGwgdGhlIGJ1ZmZlciB3aXRoIHplcm8gYml0cyAqLw0KKyAgICAgIGdldF9idWZmZXIgPDw9IE1JTl9HRVRfQklUUyAtIGJpdHNfbGVmdDsNCisgICAgICBiaXRzX2xlZnQgPSBNSU5fR0VUX0JJVFM7DQorICAgIH0NCisgIH0NCisNCisgIC8qIFVubG9hZCB0aGUgbG9jYWwgcmVnaXN0ZXJzICovDQorICBzdGF0ZS0+bmV4dF9pbnB1dF9ieXRlID0gbmV4dF9pbnB1dF9ieXRlOw0KKyAgc3RhdGUtPmJ5dGVzX2luX2J1ZmZlciA9IGJ5dGVzX2luX2J1ZmZlcjsNCisgIHN0YXRlLT5nZXRfYnVmZmVyID0gZ2V0X2J1ZmZlcjsNCisgIHN0YXRlLT5iaXRzX2xlZnQgPSBiaXRzX2xlZnQ7DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBPdXQtb2YtbGluZSBjb2RlIGZvciBIdWZmbWFuIGNvZGUgZGVjb2RpbmcuDQorICogU2VlIGpkaHVmZi5oIGZvciBpbmZvIGFib3V0IHVzYWdlLg0KKyAqLw0KKw0KK0dMT0JBTChpbnQpDQoranBlZ19odWZmX2RlY29kZSAoYml0cmVhZF93b3JraW5nX3N0YXRlICogc3RhdGUsDQorCQkgIHJlZ2lzdGVyIGJpdF9idWZfdHlwZSBnZXRfYnVmZmVyLCByZWdpc3RlciBpbnQgYml0c19sZWZ0LA0KKwkJICBkX2Rlcml2ZWRfdGJsICogaHRibCwgaW50IG1pbl9iaXRzKQ0KK3sNCisgIHJlZ2lzdGVyIGludCBsID0gbWluX2JpdHM7DQorICByZWdpc3RlciBJTlQzMiBjb2RlOw0KKw0KKyAgLyogSFVGRl9ERUNPREUgaGFzIGRldGVybWluZWQgdGhhdCB0aGUgY29kZSBpcyBhdCBsZWFzdCBtaW5fYml0cyAqLw0KKyAgLyogYml0cyBsb25nLCBzbyBmZXRjaCB0aGF0IG1hbnkgYml0cyBpbiBvbmUgc3dvb3AuICovDQorDQorICBDSEVDS19CSVRfQlVGRkVSKCpzdGF0ZSwgbCwgcmV0dXJuIC0xKTsNCisgIGNvZGUgPSBHRVRfQklUUyhsKTsNCisNCisgIC8qIENvbGxlY3QgdGhlIHJlc3Qgb2YgdGhlIEh1ZmZtYW4gY29kZSBvbmUgYml0IGF0IGEgdGltZS4gKi8NCisgIC8qIFRoaXMgaXMgcGVyIEZpZ3VyZSBGLjE2IGluIHRoZSBKUEVHIHNwZWMuICovDQorDQorICB3aGlsZSAoY29kZSA+IGh0YmwtPm1heGNvZGVbbF0pIHsNCisgICAgY29kZSA8PD0gMTsNCisgICAgQ0hFQ0tfQklUX0JVRkZFUigqc3RhdGUsIDEsIHJldHVybiAtMSk7DQorICAgIGNvZGUgfD0gR0VUX0JJVFMoMSk7DQorICAgIGwrKzsNCisgIH0NCisNCisgIC8qIFVubG9hZCB0aGUgbG9jYWwgcmVnaXN0ZXJzICovDQorICBzdGF0ZS0+Z2V0X2J1ZmZlciA9IGdldF9idWZmZXI7DQorICBzdGF0ZS0+Yml0c19sZWZ0ID0gYml0c19sZWZ0Ow0KKw0KKyAgLyogV2l0aCBnYXJiYWdlIGlucHV0IHdlIG1heSByZWFjaCB0aGUgc2VudGluZWwgdmFsdWUgbCA9IDE3LiAqLw0KKw0KKyAgaWYgKGwgPiAxNikgew0KKyAgICBXQVJOTVMoc3RhdGUtPmNpbmZvLCBKV1JOX0hVRkZfQkFEX0NPREUpOw0KKyAgICByZXR1cm4gMDsJCQkvKiBmYWtlIGEgemVybyBhcyB0aGUgc2FmZXN0IHJlc3VsdCAqLw0KKyAgfQ0KKw0KKyAgcmV0dXJuIGh0YmwtPnB1Yi0+aHVmZnZhbFsgKGludCkgKGNvZGUgKyBodGJsLT52YWxvZmZzZXRbbF0pIF07DQorfQ0KKw0KKw0KKy8qDQorICogRmlndXJlIEYuMTI6IGV4dGVuZCBzaWduIGJpdC4NCisgKiBPbiBzb21lIG1hY2hpbmVzLCBhIHNoaWZ0IGFuZCBhZGQgd2lsbCBiZSBmYXN0ZXIgdGhhbiBhIHRhYmxlIGxvb2t1cC4NCisgKi8NCisNCisjaWZkZWYgQVZPSURfVEFCTEVTDQorDQorI2RlZmluZSBIVUZGX0VYVEVORCh4LHMpICAoKHgpIDwgKDE8PCgocyktMSkpID8gKHgpICsgKCgoLTEpPDwocykpICsgMSkgOiAoeCkpDQorDQorI2Vsc2UNCisNCisjZGVmaW5lIEhVRkZfRVhURU5EKHgscykgICgoeCkgPCBleHRlbmRfdGVzdFtzXSA/ICh4KSArIGV4dGVuZF9vZmZzZXRbc10gOiAoeCkpDQorDQorc3RhdGljIGNvbnN0IGludCBleHRlbmRfdGVzdFsxNl0gPSAgIC8qIGVudHJ5IG4gaXMgMioqKG4tMSkgKi8NCisgIHsgMCwgMHgwMDAxLCAweDAwMDIsIDB4MDAwNCwgMHgwMDA4LCAweDAwMTAsIDB4MDAyMCwgMHgwMDQwLCAweDAwODAsDQorICAgIDB4MDEwMCwgMHgwMjAwLCAweDA0MDAsIDB4MDgwMCwgMHgxMDAwLCAweDIwMDAsIDB4NDAwMCB9Ow0KKw0KK3N0YXRpYyBjb25zdCBpbnQgZXh0ZW5kX29mZnNldFsxNl0gPSAvKiBlbnRyeSBuIGlzICgtMSA8PCBuKSArIDEgKi8NCisgIHsgMCwgKCgtMSk8PDEpICsgMSwgKCgtMSk8PDIpICsgMSwgKCgtMSk8PDMpICsgMSwgKCgtMSk8PDQpICsgMSwNCisgICAgKCgtMSk8PDUpICsgMSwgKCgtMSk8PDYpICsgMSwgKCgtMSk8PDcpICsgMSwgKCgtMSk8PDgpICsgMSwNCisgICAgKCgtMSk8PDkpICsgMSwgKCgtMSk8PDEwKSArIDEsICgoLTEpPDwxMSkgKyAxLCAoKC0xKTw8MTIpICsgMSwNCisgICAgKCgtMSk8PDEzKSArIDEsICgoLTEpPDwxNCkgKyAxLCAoKC0xKTw8MTUpICsgMSB9Ow0KKw0KKyNlbmRpZiAvKiBBVk9JRF9UQUJMRVMgKi8NCisNCisNCisvKg0KKyAqIENoZWNrIGZvciBhIHJlc3RhcnQgbWFya2VyICYgcmVzeW5jaHJvbml6ZSBkZWNvZGVyLg0KKyAqIFJldHVybnMgRkFMU0UgaWYgbXVzdCBzdXNwZW5kLg0KKyAqLw0KKw0KK0xPQ0FMKGJvb2xlYW4pDQorcHJvY2Vzc19yZXN0YXJ0IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSA9IChodWZmX2VudHJvcHlfcHRyKSBjaW5mby0+ZW50cm9weTsNCisgIGludCBjaTsNCisNCisgIC8qIFRocm93IGF3YXkgYW55IHVudXNlZCBiaXRzIHJlbWFpbmluZyBpbiBiaXQgYnVmZmVyOyAqLw0KKyAgLyogaW5jbHVkZSBhbnkgZnVsbCBieXRlcyBpbiBuZXh0X21hcmtlcidzIGNvdW50IG9mIGRpc2NhcmRlZCBieXRlcyAqLw0KKyAgY2luZm8tPm1hcmtlci0+ZGlzY2FyZGVkX2J5dGVzICs9IGVudHJvcHktPmJpdHN0YXRlLmJpdHNfbGVmdCAvIDg7DQorICBlbnRyb3B5LT5iaXRzdGF0ZS5iaXRzX2xlZnQgPSAwOw0KKw0KKyAgLyogQWR2YW5jZSBwYXN0IHRoZSBSU1RuIG1hcmtlciAqLw0KKyAgaWYgKCEgKCpjaW5mby0+bWFya2VyLT5yZWFkX3Jlc3RhcnRfbWFya2VyKSAoY2luZm8pKQ0KKyAgICByZXR1cm4gRkFMU0U7DQorDQorICAvKiBSZS1pbml0aWFsaXplIERDIHByZWRpY3Rpb25zIHRvIDAgKi8NCisgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKQ0KKyAgICBlbnRyb3B5LT5zYXZlZC5sYXN0X2RjX3ZhbFtjaV0gPSAwOw0KKw0KKyAgLyogUmVzZXQgcmVzdGFydCBjb3VudGVyICovDQorICBlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9IGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsOw0KKw0KKyAgLyogUmVzZXQgb3V0LW9mLWRhdGEgZmxhZywgdW5sZXNzIHJlYWRfcmVzdGFydF9tYXJrZXIgbGVmdCB1cyBzbWFjayB1cA0KKyAgICogYWdhaW5zdCBhIG1hcmtlci4gIEluIHRoYXQgY2FzZSB3ZSB3aWxsIGVuZCB1cCB0cmVhdGluZyB0aGUgbmV4dCBkYXRhDQorICAgKiBzZWdtZW50IGFzIGVtcHR5LCBhbmQgd2UgY2FuIGF2b2lkIHByb2R1Y2luZyBib2d1cyBvdXRwdXQgcGl4ZWxzIGJ5DQorICAgKiBsZWF2aW5nIHRoZSBmbGFnIHNldC4NCisgICAqLw0KKyAgaWYgKGNpbmZvLT51bnJlYWRfbWFya2VyID09IDApDQorICAgIGVudHJvcHktPnB1Yi5pbnN1ZmZpY2llbnRfZGF0YSA9IEZBTFNFOw0KKw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKw0KKy8qDQorICogRGVjb2RlIGFuZCByZXR1cm4gb25lIE1DVSdzIHdvcnRoIG9mIEh1ZmZtYW4tY29tcHJlc3NlZCBjb2VmZmljaWVudHMuDQorICogVGhlIGNvZWZmaWNpZW50cyBhcmUgcmVvcmRlcmVkIGZyb20gemlnemFnIG9yZGVyIGludG8gbmF0dXJhbCBhcnJheSBvcmRlciwNCisgKiBidXQgYXJlIG5vdCBkZXF1YW50aXplZC4NCisgKg0KKyAqIFRoZSBpJ3RoIGJsb2NrIG9mIHRoZSBNQ1UgaXMgc3RvcmVkIGludG8gdGhlIGJsb2NrIHBvaW50ZWQgdG8gYnkNCisgKiBNQ1VfZGF0YVtpXS4gIFdFIEFTU1VNRSBUSElTIEFSRUEgSEFTIEJFRU4gWkVST0VEIEJZIFRIRSBDQUxMRVIuDQorICogKFdob2xlc2FsZSB6ZXJvaW5nIGlzIHVzdWFsbHkgYSBsaXR0bGUgZmFzdGVyIHRoYW4gcmV0YWlsLi4uKQ0KKyAqDQorICogUmV0dXJucyBGQUxTRSBpZiBkYXRhIHNvdXJjZSByZXF1ZXN0ZWQgc3VzcGVuc2lvbi4gIEluIHRoYXQgY2FzZSBubw0KKyAqIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgdG8gcGVybWFuZW50IHN0YXRlLiAgKEV4Y2VwdGlvbjogc29tZSBvdXRwdXQNCisgKiBjb2VmZmljaWVudHMgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkLiAgVGhpcyBpcyBoYXJtbGVzcyBmb3INCisgKiB0aGlzIG1vZHVsZSwgc2luY2Ugd2UnbGwganVzdCByZS1hc3NpZ24gdGhlbSBvbiB0aGUgbmV4dCBjYWxsLikNCisgKi8NCisNCitNRVRIT0RERUYoYm9vbGVhbikNCitkZWNvZGVfbWN1IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBKQkxPQ0tST1cgKk1DVV9kYXRhKQ0KK3sNCisgIGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSA9IChodWZmX2VudHJvcHlfcHRyKSBjaW5mby0+ZW50cm9weTsNCisgIGludCBibGtuOw0KKyAgQklUUkVBRF9TVEFURV9WQVJTOw0KKyAgc2F2YWJsZV9zdGF0ZSBzdGF0ZTsNCisNCisgIC8qIFByb2Nlc3MgcmVzdGFydCBtYXJrZXIgaWYgbmVlZGVkOyBtYXkgaGF2ZSB0byBzdXNwZW5kICovDQorICBpZiAoY2luZm8tPnJlc3RhcnRfaW50ZXJ2YWwpIHsNCisgICAgaWYgKGVudHJvcHktPnJlc3RhcnRzX3RvX2dvID09IDApDQorICAgICAgaWYgKCEgcHJvY2Vzc19yZXN0YXJ0KGNpbmZvKSkNCisJcmV0dXJuIEZBTFNFOw0KKyAgfQ0KKw0KKyAgLyogSWYgd2UndmUgcnVuIG91dCBvZiBkYXRhLCBqdXN0IGxlYXZlIHRoZSBNQ1Ugc2V0IHRvIHplcm9lcy4NCisgICAqIFRoaXMgd2F5LCB3ZSByZXR1cm4gdW5pZm9ybSBncmF5IGZvciB0aGUgcmVtYWluZGVyIG9mIHRoZSBzZWdtZW50Lg0KKyAgICovDQorICBpZiAoISBlbnRyb3B5LT5wdWIuaW5zdWZmaWNpZW50X2RhdGEpIHsNCisNCisgICAgLyogTG9hZCB1cCB3b3JraW5nIHN0YXRlICovDQorICAgIEJJVFJFQURfTE9BRF9TVEFURShjaW5mbyxlbnRyb3B5LT5iaXRzdGF0ZSk7DQorICAgIEFTU0lHTl9TVEFURShzdGF0ZSwgZW50cm9weS0+c2F2ZWQpOw0KKw0KKyAgICAvKiBPdXRlciBsb29wIGhhbmRsZXMgZWFjaCBibG9jayBpbiB0aGUgTUNVICovDQorDQorICAgIGZvciAoYmxrbiA9IDA7IGJsa24gPCBjaW5mby0+YmxvY2tzX2luX01DVTsgYmxrbisrKSB7DQorICAgICAgSkJMT0NLUk9XIGJsb2NrID0gTUNVX2RhdGFbYmxrbl07DQorICAgICAgZF9kZXJpdmVkX3RibCAqIGRjdGJsID0gZW50cm9weS0+ZGNfY3VyX3RibHNbYmxrbl07DQorICAgICAgZF9kZXJpdmVkX3RibCAqIGFjdGJsID0gZW50cm9weS0+YWNfY3VyX3RibHNbYmxrbl07DQorICAgICAgcmVnaXN0ZXIgaW50IHMsIGssIHI7DQorDQorICAgICAgLyogRGVjb2RlIGEgc2luZ2xlIGJsb2NrJ3Mgd29ydGggb2YgY29lZmZpY2llbnRzICovDQorDQorICAgICAgLyogU2VjdGlvbiBGLjIuMi4xOiBkZWNvZGUgdGhlIERDIGNvZWZmaWNpZW50IGRpZmZlcmVuY2UgKi8NCisgICAgICBIVUZGX0RFQ09ERShzLCBicl9zdGF0ZSwgZGN0YmwsIHJldHVybiBGQUxTRSwgbGFiZWwxKTsNCisgICAgICBpZiAocykgew0KKwlDSEVDS19CSVRfQlVGRkVSKGJyX3N0YXRlLCBzLCByZXR1cm4gRkFMU0UpOw0KKwlyID0gR0VUX0JJVFMocyk7DQorCXMgPSBIVUZGX0VYVEVORChyLCBzKTsNCisgICAgICB9DQorDQorICAgICAgaWYgKGVudHJvcHktPmRjX25lZWRlZFtibGtuXSkgew0KKwkvKiBDb252ZXJ0IERDIGRpZmZlcmVuY2UgdG8gYWN0dWFsIHZhbHVlLCB1cGRhdGUgbGFzdF9kY192YWwgKi8NCisJaW50IGNpID0gY2luZm8tPk1DVV9tZW1iZXJzaGlwW2Jsa25dOw0KKwlzICs9IHN0YXRlLmxhc3RfZGNfdmFsW2NpXTsNCisJc3RhdGUubGFzdF9kY192YWxbY2ldID0gczsNCisJLyogT3V0cHV0IHRoZSBEQyBjb2VmZmljaWVudCAoYXNzdW1lcyBqcGVnX25hdHVyYWxfb3JkZXJbMF0gPSAwKSAqLw0KKwkoKmJsb2NrKVswXSA9IChKQ09FRikgczsNCisgICAgICB9DQorDQorICAgICAgaWYgKGVudHJvcHktPmFjX25lZWRlZFtibGtuXSkgew0KKw0KKwkvKiBTZWN0aW9uIEYuMi4yLjI6IGRlY29kZSB0aGUgQUMgY29lZmZpY2llbnRzICovDQorCS8qIFNpbmNlIHplcm9lcyBhcmUgc2tpcHBlZCwgb3V0cHV0IGFyZWEgbXVzdCBiZSBjbGVhcmVkIGJlZm9yZWhhbmQgKi8NCisJZm9yIChrID0gMTsgayA8IERDVFNJWkUyOyBrKyspIHsNCisJICBIVUZGX0RFQ09ERShzLCBicl9zdGF0ZSwgYWN0YmwsIHJldHVybiBGQUxTRSwgbGFiZWwyKTsNCisgICAgICANCisJICByID0gcyA+PiA0Ow0KKwkgIHMgJj0gMTU7DQorICAgICAgDQorCSAgaWYgKHMpIHsNCisJICAgIGsgKz0gcjsNCisJICAgIENIRUNLX0JJVF9CVUZGRVIoYnJfc3RhdGUsIHMsIHJldHVybiBGQUxTRSk7DQorCSAgICByID0gR0VUX0JJVFMocyk7DQorCSAgICBzID0gSFVGRl9FWFRFTkQociwgcyk7DQorCSAgICAvKiBPdXRwdXQgY29lZmZpY2llbnQgaW4gbmF0dXJhbCAoZGV6aWd6YWdnZWQpIG9yZGVyLg0KKwkgICAgICogTm90ZTogdGhlIGV4dHJhIGVudHJpZXMgaW4ganBlZ19uYXR1cmFsX29yZGVyW10gd2lsbCBzYXZlIHVzDQorCSAgICAgKiBpZiBrID49IERDVFNJWkUyLCB3aGljaCBjb3VsZCBoYXBwZW4gaWYgdGhlIGRhdGEgaXMgY29ycnVwdGVkLg0KKwkgICAgICovDQorCSAgICAoKmJsb2NrKVtqcGVnX25hdHVyYWxfb3JkZXJba11dID0gKEpDT0VGKSBzOw0KKwkgIH0gZWxzZSB7DQorCSAgICBpZiAociAhPSAxNSkNCisJICAgICAgYnJlYWs7DQorCSAgICBrICs9IDE1Ow0KKwkgIH0NCisJfQ0KKw0KKyAgICAgIH0gZWxzZSB7DQorDQorCS8qIFNlY3Rpb24gRi4yLjIuMjogZGVjb2RlIHRoZSBBQyBjb2VmZmljaWVudHMgKi8NCisJLyogSW4gdGhpcyBwYXRoIHdlIGp1c3QgZGlzY2FyZCB0aGUgdmFsdWVzICovDQorCWZvciAoayA9IDE7IGsgPCBEQ1RTSVpFMjsgaysrKSB7DQorCSAgSFVGRl9ERUNPREUocywgYnJfc3RhdGUsIGFjdGJsLCByZXR1cm4gRkFMU0UsIGxhYmVsMyk7DQorICAgICAgDQorCSAgciA9IHMgPj4gNDsNCisJICBzICY9IDE1Ow0KKyAgICAgIA0KKwkgIGlmIChzKSB7DQorCSAgICBrICs9IHI7DQorCSAgICBDSEVDS19CSVRfQlVGRkVSKGJyX3N0YXRlLCBzLCByZXR1cm4gRkFMU0UpOw0KKwkgICAgRFJPUF9CSVRTKHMpOw0KKwkgIH0gZWxzZSB7DQorCSAgICBpZiAociAhPSAxNSkNCisJICAgICAgYnJlYWs7DQorCSAgICBrICs9IDE1Ow0KKwkgIH0NCisJfQ0KKw0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgICAvKiBDb21wbGV0ZWQgTUNVLCBzbyB1cGRhdGUgc3RhdGUgKi8NCisgICAgQklUUkVBRF9TQVZFX1NUQVRFKGNpbmZvLGVudHJvcHktPmJpdHN0YXRlKTsNCisgICAgQVNTSUdOX1NUQVRFKGVudHJvcHktPnNhdmVkLCBzdGF0ZSk7DQorICB9DQorDQorICAvKiBBY2NvdW50IGZvciByZXN0YXJ0IGludGVydmFsIChuby1vcCBpZiBub3QgdXNpbmcgcmVzdGFydHMpICovDQorICBlbnRyb3B5LT5yZXN0YXJ0c190b19nby0tOw0KKw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKw0KKy8qDQorICogTW9kdWxlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIEh1ZmZtYW4gZW50cm9weSBkZWNvZGluZy4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqaW5pdF9odWZmX2RlY29kZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5Ow0KKyAgaW50IGk7DQorDQorICBlbnRyb3B5ID0gKGh1ZmZfZW50cm9weV9wdHIpDQorICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCVNJWkVPRihodWZmX2VudHJvcHlfZGVjb2RlcikpOw0KKyAgY2luZm8tPmVudHJvcHkgPSAoc3RydWN0IGpwZWdfZW50cm9weV9kZWNvZGVyICopIGVudHJvcHk7DQorICBlbnRyb3B5LT5wdWIuc3RhcnRfcGFzcyA9IHN0YXJ0X3Bhc3NfaHVmZl9kZWNvZGVyOw0KKyAgZW50cm9weS0+cHViLmRlY29kZV9tY3UgPSBkZWNvZGVfbWN1Ow0KKw0KKyAgLyogTWFyayB0YWJsZXMgdW5hbGxvY2F0ZWQgKi8NCisgIGZvciAoaSA9IDA7IGkgPCBOVU1fSFVGRl9UQkxTOyBpKyspIHsNCisgICAgZW50cm9weS0+ZGNfZGVyaXZlZF90YmxzW2ldID0gZW50cm9weS0+YWNfZGVyaXZlZF90YmxzW2ldID0gTlVMTDsNCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRpbnB1dC5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRpbnB1dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YTdlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZGlucHV0LmMKQEAgLTAsMCArMSwzODQgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqZGlucHV0LmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5MS0xOTk3LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyBpbnB1dCBjb250cm9sIGxvZ2ljIGZvciB0aGUgSlBFRyBkZWNvbXByZXNzb3IuDQorICogVGhlc2Ugcm91dGluZXMgYXJlIGNvbmNlcm5lZCB3aXRoIGNvbnRyb2xsaW5nIHRoZSBkZWNvbXByZXNzb3IncyBpbnB1dA0KKyAqIHByb2Nlc3NpbmcgKG1hcmtlciByZWFkaW5nIGFuZCBjb2VmZmljaWVudCBkZWNvZGluZykuICBUaGUgYWN0dWFsIGlucHV0DQorICogcmVhZGluZyBpcyBkb25lIGluIGpkbWFya2VyLmMsIGpkaHVmZi5jLCBhbmQgamRwaHVmZi5jLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKw0KKw0KKy8qIFByaXZhdGUgc3RhdGUgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBzdHJ1Y3QganBlZ19pbnB1dF9jb250cm9sbGVyIHB1YjsgLyogcHVibGljIGZpZWxkcyAqLw0KKw0KKyAgYm9vbGVhbiBpbmhlYWRlcnM7CQkvKiBUUlVFIHVudGlsIGZpcnN0IFNPUyBpcyByZWFjaGVkICovDQorfSBteV9pbnB1dF9jb250cm9sbGVyOw0KKw0KK3R5cGVkZWYgbXlfaW5wdXRfY29udHJvbGxlciAqIG15X2lucHV0Y3RsX3B0cjsNCisNCisNCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLw0KK01FVEhPRERFRihpbnQpIGNvbnN1bWVfbWFya2VycyBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisNCisNCisvKg0KKyAqIFJvdXRpbmVzIHRvIGNhbGN1bGF0ZSB2YXJpb3VzIHF1YW50aXRpZXMgcmVsYXRlZCB0byB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UuDQorICovDQorDQorTE9DQUwodm9pZCkNCitpbml0aWFsX3NldHVwIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIENhbGxlZCBvbmNlLCB3aGVuIGZpcnN0IFNPUyBtYXJrZXIgaXMgcmVhY2hlZCAqLw0KK3sNCisgIGludCBjaTsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorDQorICAvKiBNYWtlIHN1cmUgaW1hZ2UgaXNuJ3QgYmlnZ2VyIHRoYW4gSSBjYW4gaGFuZGxlICovDQorICBpZiAoKGxvbmcpIGNpbmZvLT5pbWFnZV9oZWlnaHQgPiAobG9uZykgSlBFR19NQVhfRElNRU5TSU9OIHx8DQorICAgICAgKGxvbmcpIGNpbmZvLT5pbWFnZV93aWR0aCA+IChsb25nKSBKUEVHX01BWF9ESU1FTlNJT04pDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0lNQUdFX1RPT19CSUcsICh1bnNpZ25lZCBpbnQpIEpQRUdfTUFYX0RJTUVOU0lPTik7DQorDQorICAvKiBGb3Igbm93LCBwcmVjaXNpb24gbXVzdCBtYXRjaCBjb21waWxlZC1pbiB2YWx1ZS4uLiAqLw0KKyAgaWYgKGNpbmZvLT5kYXRhX3ByZWNpc2lvbiAhPSBCSVRTX0lOX0pTQU1QTEUpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9QUkVDSVNJT04sIGNpbmZvLT5kYXRhX3ByZWNpc2lvbik7DQorDQorICAvKiBDaGVjayB0aGF0IG51bWJlciBvZiBjb21wb25lbnRzIHdvbid0IGV4Y2VlZCBpbnRlcm5hbCBhcnJheSBzaXplcyAqLw0KKyAgaWYgKGNpbmZvLT5udW1fY29tcG9uZW50cyA+IE1BWF9DT01QT05FTlRTKQ0KKyAgICBFUlJFWElUMihjaW5mbywgSkVSUl9DT01QT05FTlRfQ09VTlQsIGNpbmZvLT5udW1fY29tcG9uZW50cywNCisJICAgICBNQVhfQ09NUE9ORU5UUyk7DQorDQorICAvKiBDb21wdXRlIG1heGltdW0gc2FtcGxpbmcgZmFjdG9yczsgY2hlY2sgZmFjdG9yIHZhbGlkaXR5ICovDQorICBjaW5mby0+bWF4X2hfc2FtcF9mYWN0b3IgPSAxOw0KKyAgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yID0gMTsNCisgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorICAgICAgIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICBpZiAoY29tcHB0ci0+aF9zYW1wX2ZhY3Rvcjw9MCB8fCBjb21wcHRyLT5oX3NhbXBfZmFjdG9yPk1BWF9TQU1QX0ZBQ1RPUiB8fA0KKwljb21wcHRyLT52X3NhbXBfZmFjdG9yPD0wIHx8IGNvbXBwdHItPnZfc2FtcF9mYWN0b3I+TUFYX1NBTVBfRkFDVE9SKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX1NBTVBMSU5HKTsNCisgICAgY2luZm8tPm1heF9oX3NhbXBfZmFjdG9yID0gTUFYKGNpbmZvLT5tYXhfaF9zYW1wX2ZhY3RvciwNCisJCQkJICAgY29tcHB0ci0+aF9zYW1wX2ZhY3Rvcik7DQorICAgIGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvciA9IE1BWChjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IsDQorCQkJCSAgIGNvbXBwdHItPnZfc2FtcF9mYWN0b3IpOw0KKyAgfQ0KKw0KKyAgLyogV2UgaW5pdGlhbGl6ZSBEQ1Rfc2NhbGVkX3NpemUgYW5kIG1pbl9EQ1Rfc2NhbGVkX3NpemUgdG8gRENUU0laRS4NCisgICAqIEluIHRoZSBmdWxsIGRlY29tcHJlc3NvciwgdGhpcyB3aWxsIGJlIG92ZXJyaWRkZW4gYnkgamRtYXN0ZXIuYzsNCisgICAqIGJ1dCBpbiB0aGUgdHJhbnNjb2RlciwgamRtYXN0ZXIuYyBpcyBub3QgdXNlZCwgc28gd2UgbXVzdCBkbyBpdCBoZXJlLg0KKyAgICovDQorICBjaW5mby0+bWluX0RDVF9zY2FsZWRfc2l6ZSA9IERDVFNJWkU7DQorDQorICAvKiBDb21wdXRlIGRpbWVuc2lvbnMgb2YgY29tcG9uZW50cyAqLw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIGNvbXBwdHItPkRDVF9zY2FsZWRfc2l6ZSA9IERDVFNJWkU7DQorICAgIC8qIFNpemUgaW4gRENUIGJsb2NrcyAqLw0KKyAgICBjb21wcHRyLT53aWR0aF9pbl9ibG9ja3MgPSAoSkRJTUVOU0lPTikNCisgICAgICBqZGl2X3JvdW5kX3VwKChsb25nKSBjaW5mby0+aW1hZ2Vfd2lkdGggKiAobG9uZykgY29tcHB0ci0+aF9zYW1wX2ZhY3RvciwNCisJCSAgICAobG9uZykgKGNpbmZvLT5tYXhfaF9zYW1wX2ZhY3RvciAqIERDVFNJWkUpKTsNCisgICAgY29tcHB0ci0+aGVpZ2h0X2luX2Jsb2NrcyA9IChKRElNRU5TSU9OKQ0KKyAgICAgIGpkaXZfcm91bmRfdXAoKGxvbmcpIGNpbmZvLT5pbWFnZV9oZWlnaHQgKiAobG9uZykgY29tcHB0ci0+dl9zYW1wX2ZhY3RvciwNCisJCSAgICAobG9uZykgKGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvciAqIERDVFNJWkUpKTsNCisgICAgLyogZG93bnNhbXBsZWRfd2lkdGggYW5kIGRvd25zYW1wbGVkX2hlaWdodCB3aWxsIGFsc28gYmUgb3ZlcnJpZGRlbiBieQ0KKyAgICAgKiBqZG1hc3Rlci5jIGlmIHdlIGFyZSBkb2luZyBmdWxsIGRlY29tcHJlc3Npb24uICBUaGUgdHJhbnNjb2RlciBsaWJyYXJ5DQorICAgICAqIGRvZXNuJ3QgdXNlIHRoZXNlIHZhbHVlcywgYnV0IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uIG1pZ2h0Lg0KKyAgICAgKi8NCisgICAgLyogU2l6ZSBpbiBzYW1wbGVzICovDQorICAgIGNvbXBwdHItPmRvd25zYW1wbGVkX3dpZHRoID0gKEpESU1FTlNJT04pDQorICAgICAgamRpdl9yb3VuZF91cCgobG9uZykgY2luZm8tPmltYWdlX3dpZHRoICogKGxvbmcpIGNvbXBwdHItPmhfc2FtcF9mYWN0b3IsDQorCQkgICAgKGxvbmcpIGNpbmZvLT5tYXhfaF9zYW1wX2ZhY3Rvcik7DQorICAgIGNvbXBwdHItPmRvd25zYW1wbGVkX2hlaWdodCA9IChKRElNRU5TSU9OKQ0KKyAgICAgIGpkaXZfcm91bmRfdXAoKGxvbmcpIGNpbmZvLT5pbWFnZV9oZWlnaHQgKiAobG9uZykgY29tcHB0ci0+dl9zYW1wX2ZhY3RvciwNCisJCSAgICAobG9uZykgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yKTsNCisgICAgLyogTWFyayBjb21wb25lbnQgbmVlZGVkLCB1bnRpbCBjb2xvciBjb252ZXJzaW9uIHNheXMgb3RoZXJ3aXNlICovDQorICAgIGNvbXBwdHItPmNvbXBvbmVudF9uZWVkZWQgPSBUUlVFOw0KKyAgICAvKiBNYXJrIG5vIHF1YW50aXphdGlvbiB0YWJsZSB5ZXQgc2F2ZWQgZm9yIGNvbXBvbmVudCAqLw0KKyAgICBjb21wcHRyLT5xdWFudF90YWJsZSA9IE5VTEw7DQorICB9DQorDQorICAvKiBDb21wdXRlIG51bWJlciBvZiBmdWxseSBpbnRlcmxlYXZlZCBNQ1Ugcm93cy4gKi8NCisgIGNpbmZvLT50b3RhbF9pTUNVX3Jvd3MgPSAoSkRJTUVOU0lPTikNCisgICAgamRpdl9yb3VuZF91cCgobG9uZykgY2luZm8tPmltYWdlX2hlaWdodCwNCisJCSAgKGxvbmcpIChjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IqRENUU0laRSkpOw0KKw0KKyAgLyogRGVjaWRlIHdoZXRoZXIgZmlsZSBjb250YWlucyBtdWx0aXBsZSBzY2FucyAqLw0KKyAgaWYgKGNpbmZvLT5jb21wc19pbl9zY2FuIDwgY2luZm8tPm51bV9jb21wb25lbnRzIHx8IGNpbmZvLT5wcm9ncmVzc2l2ZV9tb2RlKQ0KKyAgICBjaW5mby0+aW5wdXRjdGwtPmhhc19tdWx0aXBsZV9zY2FucyA9IFRSVUU7DQorICBlbHNlDQorICAgIGNpbmZvLT5pbnB1dGN0bC0+aGFzX211bHRpcGxlX3NjYW5zID0gRkFMU0U7DQorfQ0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorcGVyX3NjYW5fc2V0dXAgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorLyogRG8gY29tcHV0YXRpb25zIHRoYXQgYXJlIG5lZWRlZCBiZWZvcmUgcHJvY2Vzc2luZyBhIEpQRUcgc2NhbiAqLw0KKy8qIGNpbmZvLT5jb21wc19pbl9zY2FuIGFuZCBjaW5mby0+Y3VyX2NvbXBfaW5mb1tdIHdlcmUgc2V0IGZyb20gU09TIG1hcmtlciAqLw0KK3sNCisgIGludCBjaSwgbWN1YmxrcywgdG1wOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIA0KKyAgaWYgKGNpbmZvLT5jb21wc19pbl9zY2FuID09IDEpIHsNCisgICAgDQorICAgIC8qIE5vbmludGVybGVhdmVkIChzaW5nbGUtY29tcG9uZW50KSBzY2FuICovDQorICAgIGNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1swXTsNCisgICAgDQorICAgIC8qIE92ZXJhbGwgaW1hZ2Ugc2l6ZSBpbiBNQ1VzICovDQorICAgIGNpbmZvLT5NQ1VzX3Blcl9yb3cgPSBjb21wcHRyLT53aWR0aF9pbl9ibG9ja3M7DQorICAgIGNpbmZvLT5NQ1Vfcm93c19pbl9zY2FuID0gY29tcHB0ci0+aGVpZ2h0X2luX2Jsb2NrczsNCisgICAgDQorICAgIC8qIEZvciBub25pbnRlcmxlYXZlZCBzY2FuLCBhbHdheXMgb25lIGJsb2NrIHBlciBNQ1UgKi8NCisgICAgY29tcHB0ci0+TUNVX3dpZHRoID0gMTsNCisgICAgY29tcHB0ci0+TUNVX2hlaWdodCA9IDE7DQorICAgIGNvbXBwdHItPk1DVV9ibG9ja3MgPSAxOw0KKyAgICBjb21wcHRyLT5NQ1Vfc2FtcGxlX3dpZHRoID0gY29tcHB0ci0+RENUX3NjYWxlZF9zaXplOw0KKyAgICBjb21wcHRyLT5sYXN0X2NvbF93aWR0aCA9IDE7DQorICAgIC8qIEZvciBub25pbnRlcmxlYXZlZCBzY2FucywgaXQgaXMgY29udmVuaWVudCB0byBkZWZpbmUgbGFzdF9yb3dfaGVpZ2h0DQorICAgICAqIGFzIHRoZSBudW1iZXIgb2YgYmxvY2sgcm93cyBwcmVzZW50IGluIHRoZSBsYXN0IGlNQ1Ugcm93Lg0KKyAgICAgKi8NCisgICAgdG1wID0gKGludCkgKGNvbXBwdHItPmhlaWdodF9pbl9ibG9ja3MgJSBjb21wcHRyLT52X3NhbXBfZmFjdG9yKTsNCisgICAgaWYgKHRtcCA9PSAwKSB0bXAgPSBjb21wcHRyLT52X3NhbXBfZmFjdG9yOw0KKyAgICBjb21wcHRyLT5sYXN0X3Jvd19oZWlnaHQgPSB0bXA7DQorICAgIA0KKyAgICAvKiBQcmVwYXJlIGFycmF5IGRlc2NyaWJpbmcgTUNVIGNvbXBvc2l0aW9uICovDQorICAgIGNpbmZvLT5ibG9ja3NfaW5fTUNVID0gMTsNCisgICAgY2luZm8tPk1DVV9tZW1iZXJzaGlwWzBdID0gMDsNCisgICAgDQorICB9IGVsc2Ugew0KKyAgICANCisgICAgLyogSW50ZXJsZWF2ZWQgKG11bHRpLWNvbXBvbmVudCkgc2NhbiAqLw0KKyAgICBpZiAoY2luZm8tPmNvbXBzX2luX3NjYW4gPD0gMCB8fCBjaW5mby0+Y29tcHNfaW5fc2NhbiA+IE1BWF9DT01QU19JTl9TQ0FOKQ0KKyAgICAgIEVSUkVYSVQyKGNpbmZvLCBKRVJSX0NPTVBPTkVOVF9DT1VOVCwgY2luZm8tPmNvbXBzX2luX3NjYW4sDQorCSAgICAgICBNQVhfQ09NUFNfSU5fU0NBTik7DQorICAgIA0KKyAgICAvKiBPdmVyYWxsIGltYWdlIHNpemUgaW4gTUNVcyAqLw0KKyAgICBjaW5mby0+TUNVc19wZXJfcm93ID0gKEpESU1FTlNJT04pDQorICAgICAgamRpdl9yb3VuZF91cCgobG9uZykgY2luZm8tPmltYWdlX3dpZHRoLA0KKwkJICAgIChsb25nKSAoY2luZm8tPm1heF9oX3NhbXBfZmFjdG9yKkRDVFNJWkUpKTsNCisgICAgY2luZm8tPk1DVV9yb3dzX2luX3NjYW4gPSAoSkRJTUVOU0lPTikNCisgICAgICBqZGl2X3JvdW5kX3VwKChsb25nKSBjaW5mby0+aW1hZ2VfaGVpZ2h0LA0KKwkJICAgIChsb25nKSAoY2luZm8tPm1heF92X3NhbXBfZmFjdG9yKkRDVFNJWkUpKTsNCisgICAgDQorICAgIGNpbmZvLT5ibG9ja3NfaW5fTUNVID0gMDsNCisgICAgDQorICAgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKSB7DQorICAgICAgY29tcHB0ciA9IGNpbmZvLT5jdXJfY29tcF9pbmZvW2NpXTsNCisgICAgICAvKiBTYW1wbGluZyBmYWN0b3JzIGdpdmUgIyBvZiBibG9ja3Mgb2YgY29tcG9uZW50IGluIGVhY2ggTUNVICovDQorICAgICAgY29tcHB0ci0+TUNVX3dpZHRoID0gY29tcHB0ci0+aF9zYW1wX2ZhY3RvcjsNCisgICAgICBjb21wcHRyLT5NQ1VfaGVpZ2h0ID0gY29tcHB0ci0+dl9zYW1wX2ZhY3RvcjsNCisgICAgICBjb21wcHRyLT5NQ1VfYmxvY2tzID0gY29tcHB0ci0+TUNVX3dpZHRoICogY29tcHB0ci0+TUNVX2hlaWdodDsNCisgICAgICBjb21wcHRyLT5NQ1Vfc2FtcGxlX3dpZHRoID0gY29tcHB0ci0+TUNVX3dpZHRoICogY29tcHB0ci0+RENUX3NjYWxlZF9zaXplOw0KKyAgICAgIC8qIEZpZ3VyZSBudW1iZXIgb2Ygbm9uLWR1bW15IGJsb2NrcyBpbiBsYXN0IE1DVSBjb2x1bW4gJiByb3cgKi8NCisgICAgICB0bXAgPSAoaW50KSAoY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzICUgY29tcHB0ci0+TUNVX3dpZHRoKTsNCisgICAgICBpZiAodG1wID09IDApIHRtcCA9IGNvbXBwdHItPk1DVV93aWR0aDsNCisgICAgICBjb21wcHRyLT5sYXN0X2NvbF93aWR0aCA9IHRtcDsNCisgICAgICB0bXAgPSAoaW50KSAoY29tcHB0ci0+aGVpZ2h0X2luX2Jsb2NrcyAlIGNvbXBwdHItPk1DVV9oZWlnaHQpOw0KKyAgICAgIGlmICh0bXAgPT0gMCkgdG1wID0gY29tcHB0ci0+TUNVX2hlaWdodDsNCisgICAgICBjb21wcHRyLT5sYXN0X3Jvd19oZWlnaHQgPSB0bXA7DQorICAgICAgLyogUHJlcGFyZSBhcnJheSBkZXNjcmliaW5nIE1DVSBjb21wb3NpdGlvbiAqLw0KKyAgICAgIG1jdWJsa3MgPSBjb21wcHRyLT5NQ1VfYmxvY2tzOw0KKyAgICAgIGlmIChjaW5mby0+YmxvY2tzX2luX01DVSArIG1jdWJsa3MgPiBEX01BWF9CTE9DS1NfSU5fTUNVKQ0KKwlFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9NQ1VfU0laRSk7DQorICAgICAgd2hpbGUgKG1jdWJsa3MtLSA+IDApIHsNCisJY2luZm8tPk1DVV9tZW1iZXJzaGlwW2NpbmZvLT5ibG9ja3NfaW5fTUNVKytdID0gY2k7DQorICAgICAgfQ0KKyAgICB9DQorICAgIA0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIFNhdmUgYXdheSBhIGNvcHkgb2YgdGhlIFEtdGFibGUgcmVmZXJlbmNlZCBieSBlYWNoIGNvbXBvbmVudCBwcmVzZW50DQorICogaW4gdGhlIGN1cnJlbnQgc2NhbiwgdW5sZXNzIGFscmVhZHkgc2F2ZWQgZHVyaW5nIGEgcHJpb3Igc2Nhbi4NCisgKg0KKyAqIEluIGEgbXVsdGlwbGUtc2NhbiBKUEVHIGZpbGUsIHRoZSBlbmNvZGVyIGNvdWxkIGFzc2lnbiBkaWZmZXJlbnQgY29tcG9uZW50cw0KKyAqIHRoZSBzYW1lIFEtdGFibGUgc2xvdCBudW1iZXIsIGJ1dCBjaGFuZ2UgdGFibGUgZGVmaW5pdGlvbnMgYmV0d2VlbiBzY2Fucw0KKyAqIHNvIHRoYXQgZWFjaCBjb21wb25lbnQgdXNlcyBhIGRpZmZlcmVudCBRLXRhYmxlLiAgKFRoZSBJSkcgZW5jb2RlciBpcyBub3QNCisgKiBjdXJyZW50bHkgY2FwYWJsZSBvZiBkb2luZyB0aGlzLCBidXQgb3RoZXIgZW5jb2RlcnMgbWlnaHQuKSAgU2luY2Ugd2Ugd2FudA0KKyAqIHRvIGJlIGFibGUgdG8gZGVxdWFudGl6ZSBhbGwgdGhlIGNvbXBvbmVudHMgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSwgdGhpcw0KKyAqIG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBzYXZlIGF3YXkgdGhlIHRhYmxlIGFjdHVhbGx5IHVzZWQgZm9yIGVhY2ggY29tcG9uZW50Lg0KKyAqIFdlIGRvIHRoaXMgYnkgY29weWluZyB0aGUgdGFibGUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBzY2FuIGNvbnRhaW5pbmcNCisgKiB0aGUgY29tcG9uZW50Lg0KKyAqIFRoZSBKUEVHIHNwZWMgcHJvaGliaXRzIHRoZSBlbmNvZGVyIGZyb20gY2hhbmdpbmcgdGhlIGNvbnRlbnRzIG9mIGEgUS10YWJsZQ0KKyAqIHNsb3QgYmV0d2VlbiBzY2FucyBvZiBhIGNvbXBvbmVudCB1c2luZyB0aGF0IHNsb3QuICBJZiB0aGUgZW5jb2RlciBkb2VzIHNvDQorICogYW55d2F5LCB0aGlzIGRlY29kZXIgd2lsbCBzaW1wbHkgdXNlIHRoZSBRLXRhYmxlIHZhbHVlcyB0aGF0IHdlcmUgY3VycmVudA0KKyAqIGF0IHRoZSBzdGFydCBvZiB0aGUgZmlyc3Qgc2NhbiBmb3IgdGhlIGNvbXBvbmVudC4NCisgKg0KKyAqIFRoZSBkZWNvbXByZXNzb3Igb3V0cHV0IHNpZGUgbG9va3Mgb25seSBhdCB0aGUgc2F2ZWQgcXVhbnQgdGFibGVzLA0KKyAqIG5vdCBhdCB0aGUgY3VycmVudCBRLXRhYmxlIHNsb3RzLg0KKyAqLw0KKw0KK0xPQ0FMKHZvaWQpDQorbGF0Y2hfcXVhbnRfdGFibGVzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIGludCBjaSwgcXRibG5vOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIEpRVUFOVF9UQkwgKiBxdGJsOw0KKw0KKyAgZm9yIChjaSA9IDA7IGNpIDwgY2luZm8tPmNvbXBzX2luX3NjYW47IGNpKyspIHsNCisgICAgY29tcHB0ciA9IGNpbmZvLT5jdXJfY29tcF9pbmZvW2NpXTsNCisgICAgLyogTm8gd29yayBpZiB3ZSBhbHJlYWR5IHNhdmVkIFEtdGFibGUgZm9yIHRoaXMgY29tcG9uZW50ICovDQorICAgIGlmIChjb21wcHRyLT5xdWFudF90YWJsZSAhPSBOVUxMKQ0KKyAgICAgIGNvbnRpbnVlOw0KKyAgICAvKiBNYWtlIHN1cmUgc3BlY2lmaWVkIHF1YW50aXphdGlvbiB0YWJsZSBpcyBwcmVzZW50ICovDQorICAgIHF0YmxubyA9IGNvbXBwdHItPnF1YW50X3RibF9ubzsNCisgICAgaWYgKHF0YmxubyA8IDAgfHwgcXRibG5vID49IE5VTV9RVUFOVF9UQkxTIHx8DQorCWNpbmZvLT5xdWFudF90YmxfcHRyc1txdGJsbm9dID09IE5VTEwpDQorICAgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfTk9fUVVBTlRfVEFCTEUsIHF0Ymxubyk7DQorICAgIC8qIE9LLCBzYXZlIGF3YXkgdGhlIHF1YW50aXphdGlvbiB0YWJsZSAqLw0KKyAgICBxdGJsID0gKEpRVUFOVF9UQkwgKikNCisgICAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQkgIFNJWkVPRihKUVVBTlRfVEJMKSk7DQorICAgIE1FTUNPUFkocXRibCwgY2luZm8tPnF1YW50X3RibF9wdHJzW3F0Ymxub10sIFNJWkVPRihKUVVBTlRfVEJMKSk7DQorICAgIGNvbXBwdHItPnF1YW50X3RhYmxlID0gcXRibDsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIHRoZSBpbnB1dCBtb2R1bGVzIHRvIHJlYWQgYSBzY2FuIG9mIGNvbXByZXNzZWQgZGF0YS4NCisgKiBUaGUgZmlyc3QgY2FsbCB0byB0aGlzIGlzIGRvbmUgYnkgamRtYXN0ZXIuYyBhZnRlciBpbml0aWFsaXppbmcNCisgKiB0aGUgZW50aXJlIGRlY29tcHJlc3NvciAoZHVyaW5nIGpwZWdfc3RhcnRfZGVjb21wcmVzcykuDQorICogU3Vic2VxdWVudCBjYWxscyBjb21lIGZyb20gY29uc3VtZV9tYXJrZXJzLCBiZWxvdy4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitzdGFydF9pbnB1dF9wYXNzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIHBlcl9zY2FuX3NldHVwKGNpbmZvKTsNCisgIGxhdGNoX3F1YW50X3RhYmxlcyhjaW5mbyk7DQorICAoKmNpbmZvLT5lbnRyb3B5LT5zdGFydF9wYXNzKSAoY2luZm8pOw0KKyAgKCpjaW5mby0+Y29lZi0+c3RhcnRfaW5wdXRfcGFzcykgKGNpbmZvKTsNCisgIGNpbmZvLT5pbnB1dGN0bC0+Y29uc3VtZV9pbnB1dCA9IGNpbmZvLT5jb2VmLT5jb25zdW1lX2RhdGE7DQorfQ0KKw0KKw0KKy8qDQorICogRmluaXNoIHVwIGFmdGVyIGlucHV0dGluZyBhIGNvbXByZXNzZWQtZGF0YSBzY2FuLg0KKyAqIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBjb2VmZmljaWVudCBjb250cm9sbGVyIGFmdGVyIGl0J3MgcmVhZCBhbGwNCisgKiB0aGUgZXhwZWN0ZWQgZGF0YSBvZiB0aGUgc2Nhbi4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitmaW5pc2hfaW5wdXRfcGFzcyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBjaW5mby0+aW5wdXRjdGwtPmNvbnN1bWVfaW5wdXQgPSBjb25zdW1lX21hcmtlcnM7DQorfQ0KKw0KKw0KKy8qDQorICogUmVhZCBKUEVHIG1hcmtlcnMgYmVmb3JlLCBiZXR3ZWVuLCBvciBhZnRlciBjb21wcmVzc2VkLWRhdGEgc2NhbnMuDQorICogQ2hhbmdlIHN0YXRlIGFzIG5lY2Vzc2FyeSB3aGVuIGEgbmV3IHNjYW4gaXMgcmVhY2hlZC4NCisgKiBSZXR1cm4gdmFsdWUgaXMgSlBFR19TVVNQRU5ERUQsIEpQRUdfUkVBQ0hFRF9TT1MsIG9yIEpQRUdfUkVBQ0hFRF9FT0kuDQorICoNCisgKiBUaGUgY29uc3VtZV9pbnB1dCBtZXRob2QgcG9pbnRlciBwb2ludHMgZWl0aGVyIGhlcmUgb3IgdG8gdGhlDQorICogY29lZmZpY2llbnQgY29udHJvbGxlcidzIGNvbnN1bWVfZGF0YSByb3V0aW5lLCBkZXBlbmRpbmcgb24gd2hldGhlcg0KKyAqIHdlIGFyZSByZWFkaW5nIGEgY29tcHJlc3NlZCBkYXRhIHNlZ21lbnQgb3IgaW50ZXItc2VnbWVudCBtYXJrZXJzLg0KKyAqLw0KKw0KK01FVEhPRERFRihpbnQpDQorY29uc3VtZV9tYXJrZXJzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIG15X2lucHV0Y3RsX3B0ciBpbnB1dGN0bCA9IChteV9pbnB1dGN0bF9wdHIpIGNpbmZvLT5pbnB1dGN0bDsNCisgIGludCB2YWw7DQorDQorICBpZiAoaW5wdXRjdGwtPnB1Yi5lb2lfcmVhY2hlZCkgLyogQWZ0ZXIgaGl0dGluZyBFT0ksIHJlYWQgbm8gZnVydGhlciAqLw0KKyAgICByZXR1cm4gSlBFR19SRUFDSEVEX0VPSTsNCisNCisgIHZhbCA9ICgqY2luZm8tPm1hcmtlci0+cmVhZF9tYXJrZXJzKSAoY2luZm8pOw0KKw0KKyAgc3dpdGNoICh2YWwpIHsNCisgIGNhc2UgSlBFR19SRUFDSEVEX1NPUzoJLyogRm91bmQgU09TICovDQorICAgIGlmIChpbnB1dGN0bC0+aW5oZWFkZXJzKSB7CS8qIDFzdCBTT1MgKi8NCisgICAgICBpbml0aWFsX3NldHVwKGNpbmZvKTsNCisgICAgICBpbnB1dGN0bC0+aW5oZWFkZXJzID0gRkFMU0U7DQorICAgICAgLyogTm90ZTogc3RhcnRfaW5wdXRfcGFzcyBtdXN0IGJlIGNhbGxlZCBieSBqZG1hc3Rlci5jDQorICAgICAgICogYmVmb3JlIGFueSBtb3JlIGlucHV0IGNhbiBiZSBjb25zdW1lZC4gIGpkYXBpbWluLmMgaXMNCisgICAgICAgKiByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIHRoaXMgc2VxdWVuY2luZy4NCisgICAgICAgKi8NCisgICAgfSBlbHNlIHsJCQkvKiAybmQgb3IgbGF0ZXIgU09TIG1hcmtlciAqLw0KKyAgICAgIGlmICghIGlucHV0Y3RsLT5wdWIuaGFzX211bHRpcGxlX3NjYW5zKQ0KKwlFUlJFWElUKGNpbmZvLCBKRVJSX0VPSV9FWFBFQ1RFRCk7IC8qIE9vcHMsIEkgd2Fzbid0IGV4cGVjdGluZyB0aGlzISAqLw0KKyAgICAgIHN0YXJ0X2lucHV0X3Bhc3MoY2luZm8pOw0KKyAgICB9DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKUEVHX1JFQUNIRURfRU9JOgkvKiBGb3VuZCBFT0kgKi8NCisgICAgaW5wdXRjdGwtPnB1Yi5lb2lfcmVhY2hlZCA9IFRSVUU7DQorICAgIGlmIChpbnB1dGN0bC0+aW5oZWFkZXJzKSB7CS8qIFRhYmxlcy1vbmx5IGRhdGFzdHJlYW0sIGFwcGFyZW50bHkgKi8NCisgICAgICBpZiAoY2luZm8tPm1hcmtlci0+c2F3X1NPRikNCisJRVJSRVhJVChjaW5mbywgSkVSUl9TT0ZfTk9fU09TKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAvKiBQcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gY29lZiBjdGxyJ3MgZGVjb21wcmVzc19kYXRhIHJvdXRpbmUNCisgICAgICAgKiBpZiB1c2VyIHNldCBvdXRwdXRfc2Nhbl9udW1iZXIgbGFyZ2VyIHRoYW4gbnVtYmVyIG9mIHNjYW5zLg0KKyAgICAgICAqLw0KKyAgICAgIGlmIChjaW5mby0+b3V0cHV0X3NjYW5fbnVtYmVyID4gY2luZm8tPmlucHV0X3NjYW5fbnVtYmVyKQ0KKwljaW5mby0+b3V0cHV0X3NjYW5fbnVtYmVyID0gY2luZm8tPmlucHV0X3NjYW5fbnVtYmVyOw0KKyAgICB9DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKUEVHX1NVU1BFTkRFRDoNCisgICAgYnJlYWs7DQorICB9DQorDQorICByZXR1cm4gdmFsOw0KK30NCisNCisNCisvKg0KKyAqIFJlc2V0IHN0YXRlIHRvIGJlZ2luIGEgZnJlc2ggZGF0YXN0cmVhbS4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCityZXNldF9pbnB1dF9jb250cm9sbGVyIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIG15X2lucHV0Y3RsX3B0ciBpbnB1dGN0bCA9IChteV9pbnB1dGN0bF9wdHIpIGNpbmZvLT5pbnB1dGN0bDsNCisNCisgIGlucHV0Y3RsLT5wdWIuY29uc3VtZV9pbnB1dCA9IGNvbnN1bWVfbWFya2VyczsNCisgIGlucHV0Y3RsLT5wdWIuaGFzX211bHRpcGxlX3NjYW5zID0gRkFMU0U7IC8qICJ1bmtub3duIiB3b3VsZCBiZSBiZXR0ZXIgKi8NCisgIGlucHV0Y3RsLT5wdWIuZW9pX3JlYWNoZWQgPSBGQUxTRTsNCisgIGlucHV0Y3RsLT5pbmhlYWRlcnMgPSBUUlVFOw0KKyAgLyogUmVzZXQgb3RoZXIgbW9kdWxlcyAqLw0KKyAgKCpjaW5mby0+ZXJyLT5yZXNldF9lcnJvcl9tZ3IpICgoal9jb21tb25fcHRyKSBjaW5mbyk7DQorICAoKmNpbmZvLT5tYXJrZXItPnJlc2V0X21hcmtlcl9yZWFkZXIpIChjaW5mbyk7DQorICAvKiBSZXNldCBwcm9ncmVzc2lvbiBzdGF0ZSAtLSB3b3VsZCBiZSBjbGVhbmVyIGlmIGVudHJvcHkgZGVjb2RlciBkaWQgdGhpcyAqLw0KKyAgY2luZm8tPmNvZWZfYml0cyA9IE5VTEw7DQorfQ0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6ZSB0aGUgaW5wdXQgY29udHJvbGxlciBtb2R1bGUuDQorICogVGhpcyBpcyBjYWxsZWQgb25seSBvbmNlLCB3aGVuIHRoZSBkZWNvbXByZXNzaW9uIG9iamVjdCBpcyBjcmVhdGVkLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2ppbml0X2lucHV0X2NvbnRyb2xsZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfaW5wdXRjdGxfcHRyIGlucHV0Y3RsOw0KKw0KKyAgLyogQ3JlYXRlIHN1Ym9iamVjdCBpbiBwZXJtYW5lbnQgcG9vbCAqLw0KKyAgaW5wdXRjdGwgPSAobXlfaW5wdXRjdGxfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX1BFUk1BTkVOVCwNCisJCQkJU0laRU9GKG15X2lucHV0X2NvbnRyb2xsZXIpKTsNCisgIGNpbmZvLT5pbnB1dGN0bCA9IChzdHJ1Y3QganBlZ19pbnB1dF9jb250cm9sbGVyICopIGlucHV0Y3RsOw0KKyAgLyogSW5pdGlhbGl6ZSBtZXRob2QgcG9pbnRlcnMgKi8NCisgIGlucHV0Y3RsLT5wdWIuY29uc3VtZV9pbnB1dCA9IGNvbnN1bWVfbWFya2VyczsNCisgIGlucHV0Y3RsLT5wdWIucmVzZXRfaW5wdXRfY29udHJvbGxlciA9IHJlc2V0X2lucHV0X2NvbnRyb2xsZXI7DQorICBpbnB1dGN0bC0+cHViLnN0YXJ0X2lucHV0X3Bhc3MgPSBzdGFydF9pbnB1dF9wYXNzOw0KKyAgaW5wdXRjdGwtPnB1Yi5maW5pc2hfaW5wdXRfcGFzcyA9IGZpbmlzaF9pbnB1dF9wYXNzOw0KKyAgLyogSW5pdGlhbGl6ZSBzdGF0ZTogY2FuJ3QgdXNlIHJlc2V0X2lucHV0X2NvbnRyb2xsZXIgc2luY2Ugd2UgZG9uJ3QNCisgICAqIHdhbnQgdG8gdHJ5IHRvIHJlc2V0IG90aGVyIG1vZHVsZXMgeWV0Lg0KKyAgICovDQorICBpbnB1dGN0bC0+cHViLmhhc19tdWx0aXBsZV9zY2FucyA9IEZBTFNFOyAvKiAidW5rbm93biIgd291bGQgYmUgYmV0dGVyICovDQorICBpbnB1dGN0bC0+cHViLmVvaV9yZWFjaGVkID0gRkFMU0U7DQorICBpbnB1dGN0bC0+aW5oZWFkZXJzID0gVFJVRTsNCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRtYWluY3QuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkbWFpbmN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZjNzdjNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkbWFpbmN0LmMKQEAgLTAsMCArMSw1MTUgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqZG1haW5jdC5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NiwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG1haW4gYnVmZmVyIGNvbnRyb2xsZXIgZm9yIGRlY29tcHJlc3Npb24uDQorICogVGhlIG1haW4gYnVmZmVyIGxpZXMgYmV0d2VlbiB0aGUgSlBFRyBkZWNvbXByZXNzb3IgcHJvcGVyIGFuZCB0aGUNCisgKiBwb3N0LXByb2Nlc3NvcjsgaXQgaG9sZHMgZG93bnNhbXBsZWQgZGF0YSBpbiB0aGUgSlBFRyBjb2xvcnNwYWNlLg0KKyAqDQorICogTm90ZSB0aGF0IHRoaXMgY29kZSBpcyBieXBhc3NlZCBpbiByYXctZGF0YSBtb2RlLCBzaW5jZSB0aGUgYXBwbGljYXRpb24NCisgKiBzdXBwbGllcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgbWFpbiBidWZmZXIgaW4gdGhhdCBjYXNlLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKw0KKw0KKy8qDQorICogSW4gdGhlIGN1cnJlbnQgc3lzdGVtIGRlc2lnbiwgdGhlIG1haW4gYnVmZmVyIG5lZWQgbmV2ZXIgYmUgYSBmdWxsLWltYWdlDQorICogYnVmZmVyOyBhbnkgZnVsbC1oZWlnaHQgYnVmZmVycyB3aWxsIGJlIGZvdW5kIGluc2lkZSB0aGUgY29lZmZpY2llbnQgb3INCisgKiBwb3N0cHJvY2Vzc2luZyBjb250cm9sbGVycy4gIE5vbmV0aGVsZXNzLCB0aGUgbWFpbiBjb250cm9sbGVyIGlzIG5vdA0KKyAqIHRyaXZpYWwuICBJdHMgcmVzcG9uc2liaWxpdHkgaXMgdG8gcHJvdmlkZSBjb250ZXh0IHJvd3MgZm9yIHVwc2FtcGxpbmcvDQorICogcmVzY2FsaW5nLCBhbmQgZG9pbmcgdGhpcyBpbiBhbiBlZmZpY2llbnQgZmFzaGlvbiBpcyBhIGJpdCB0cmlja3kuDQorICoNCisgKiBQb3N0cHJvY2Vzc29yIGlucHV0IGRhdGEgaXMgY291bnRlZCBpbiAicm93IGdyb3VwcyIuICBBIHJvdyBncm91cA0KKyAqIGlzIGRlZmluZWQgdG8gYmUgKHZfc2FtcF9mYWN0b3IgKiBEQ1Rfc2NhbGVkX3NpemUgLyBtaW5fRENUX3NjYWxlZF9zaXplKQ0KKyAqIHNhbXBsZSByb3dzIG9mIGVhY2ggY29tcG9uZW50LiAgKFdlIHJlcXVpcmUgRENUX3NjYWxlZF9zaXplIHZhbHVlcyB0byBiZQ0KKyAqIGNob3NlbiBzdWNoIHRoYXQgdGhlc2UgbnVtYmVycyBhcmUgaW50ZWdlcnMuICBJbiBwcmFjdGljZSBEQ1Rfc2NhbGVkX3NpemUNCisgKiB2YWx1ZXMgd2lsbCBsaWtlbHkgYmUgcG93ZXJzIG9mIHR3bywgc28gd2UgYWN0dWFsbHkgaGF2ZSB0aGUgc3Ryb25nZXINCisgKiBjb25kaXRpb24gdGhhdCBEQ1Rfc2NhbGVkX3NpemUgLyBtaW5fRENUX3NjYWxlZF9zaXplIGlzIGFuIGludGVnZXIuKQ0KKyAqIFVwc2FtcGxpbmcgd2lsbCB0eXBpY2FsbHkgcHJvZHVjZSBtYXhfdl9zYW1wX2ZhY3RvciBwaXhlbCByb3dzIGZyb20gZWFjaA0KKyAqIHJvdyBncm91cCAodGltZXMgYW55IGFkZGl0aW9uYWwgc2NhbGUgZmFjdG9yIHRoYXQgdGhlIHVwc2FtcGxlciBpcw0KKyAqIGFwcGx5aW5nKS4NCisgKg0KKyAqIFRoZSBjb2VmZmljaWVudCBjb250cm9sbGVyIHdpbGwgZGVsaXZlciBkYXRhIHRvIHVzIG9uZSBpTUNVIHJvdyBhdCBhIHRpbWU7DQorICogZWFjaCBpTUNVIHJvdyBjb250YWlucyB2X3NhbXBfZmFjdG9yICogRENUX3NjYWxlZF9zaXplIHNhbXBsZSByb3dzLCBvcg0KKyAqIGV4YWN0bHkgbWluX0RDVF9zY2FsZWRfc2l6ZSByb3cgZ3JvdXBzLiAgKFRoaXMgYW1vdW50IG9mIGRhdGEgY29ycmVzcG9uZHMNCisgKiB0byBvbmUgcm93IG9mIE1DVXMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgaW50ZXJsZWF2ZWQuKSAgTm90ZSB0aGF0IHRoZQ0KKyAqIG51bWJlciBvZiBzYW1wbGUgcm93cyB2YXJpZXMgYWNyb3NzIGNvbXBvbmVudHMsIGJ1dCB0aGUgbnVtYmVyIG9mIHJvdw0KKyAqIGdyb3VwcyBkb2VzIG5vdC4gIFNvbWUgZ2FyYmFnZSBzYW1wbGUgcm93cyBtYXkgYmUgaW5jbHVkZWQgaW4gdGhlIGxhc3QgaU1DVQ0KKyAqIHJvdyBhdCB0aGUgYm90dG9tIG9mIHRoZSBpbWFnZS4NCisgKg0KKyAqIERlcGVuZGluZyBvbiB0aGUgdmVydGljYWwgc2NhbGluZyBhbGdvcml0aG0gdXNlZCwgdGhlIHVwc2FtcGxlciBtYXkgbmVlZA0KKyAqIGFjY2VzcyB0byB0aGUgc2FtcGxlIHJvdyhzKSBhYm92ZSBhbmQgYmVsb3cgaXRzIGN1cnJlbnQgaW5wdXQgcm93IGdyb3VwLg0KKyAqIFRoZSB1cHNhbXBsZXIgaXMgcmVxdWlyZWQgdG8gc2V0IG5lZWRfY29udGV4dF9yb3dzIFRSVUUgYXQgZ2xvYmFsIHNlbGVjdGlvbg0KKyAqIHRpbWUgaWYgc28uICBXaGVuIG5lZWRfY29udGV4dF9yb3dzIGlzIEZBTFNFLCB0aGlzIGNvbnRyb2xsZXIgY2FuIHNpbXBseQ0KKyAqIG9idGFpbiBvbmUgaU1DVSByb3cgYXQgYSB0aW1lIGZyb20gdGhlIGNvZWZmaWNpZW50IGNvbnRyb2xsZXIgYW5kIGRvbGUgaXQNCisgKiBvdXQgYXMgcm93IGdyb3VwcyB0byB0aGUgcG9zdHByb2Nlc3Nvci4NCisgKg0KKyAqIFdoZW4gbmVlZF9jb250ZXh0X3Jvd3MgaXMgVFJVRSwgdGhpcyBjb250cm9sbGVyIGd1YXJhbnRlZXMgdGhhdCB0aGUgYnVmZmVyDQorICogcGFzc2VkIHRvIHBvc3Rwcm9jZXNzaW5nIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSByb3cgZ3JvdXAncyB3b3J0aCBvZiBzYW1wbGVzDQorICogYWJvdmUgYW5kIGJlbG93IHRoZSByb3cgZ3JvdXAocykgYmVpbmcgcHJvY2Vzc2VkLiAgTm90ZSB0aGF0IHRoZSBjb250ZXh0DQorICogcm93cyAiYWJvdmUiIHRoZSBmaXJzdCBwYXNzZWQgcm93IGdyb3VwIGFwcGVhciBhdCBuZWdhdGl2ZSByb3cgb2Zmc2V0cyBpbg0KKyAqIHRoZSBwYXNzZWQgYnVmZmVyLiAgQXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIHRoZSBpbWFnZSwgdGhlIHJlcXVpcmVkDQorICogY29udGV4dCByb3dzIGFyZSBtYW51ZmFjdHVyZWQgYnkgZHVwbGljYXRpbmcgdGhlIGZpcnN0IG9yIGxhc3QgcmVhbCBzYW1wbGUNCisgKiByb3c7IHRoaXMgYXZvaWRzIGhhdmluZyBzcGVjaWFsIGNhc2VzIGluIHRoZSB1cHNhbXBsaW5nIGlubmVyIGxvb3BzLg0KKyAqDQorICogVGhlIGFtb3VudCBvZiBjb250ZXh0IGlzIGZpeGVkIGF0IG9uZSByb3cgZ3JvdXAganVzdCBiZWNhdXNlIHRoYXQncyBhDQorICogY29udmVuaWVudCBudW1iZXIgZm9yIHRoaXMgY29udHJvbGxlciB0byB3b3JrIHdpdGguICBUaGUgZXhpc3RpbmcNCisgKiB1cHNhbXBsZXJzIHJlYWxseSBvbmx5IG5lZWQgb25lIHNhbXBsZSByb3cgb2YgY29udGV4dC4gIEFuIHVwc2FtcGxlcg0KKyAqIHN1cHBvcnRpbmcgYXJiaXRyYXJ5IG91dHB1dCByZXNjYWxpbmcgbWlnaHQgd2lzaCBmb3IgbW9yZSB0aGFuIG9uZSByb3cNCisgKiBncm91cCBvZiBjb250ZXh0IHdoZW4gc2hyaW5raW5nIHRoZSBpbWFnZTsgdG91Z2gsIHdlIGRvbid0IGhhbmRsZSB0aGF0Lg0KKyAqIChUaGlzIGlzIGp1c3RpZmllZCBieSB0aGUgYXNzdW1wdGlvbiB0aGF0IGRvd25zaXppbmcgd2lsbCBiZSBoYW5kbGVkIG1vc3RseQ0KKyAqIGJ5IGFkanVzdGluZyB0aGUgRENUX3NjYWxlZF9zaXplIHZhbHVlcywgc28gdGhhdCB0aGUgYWN0dWFsIHNjYWxlIGZhY3RvciBhdA0KKyAqIHRoZSB1cHNhbXBsZSBzdGVwIG5lZWRuJ3QgYmUgbXVjaCBsZXNzIHRoYW4gb25lLikNCisgKg0KKyAqIFRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgY29udGV4dCwgd2UgaGF2ZSB0byByZXRhaW4gdGhlIGxhc3QgdHdvIHJvdyBncm91cHMNCisgKiBvZiBvbmUgaU1DVSByb3cgd2hpbGUgcmVhZGluZyBpbiB0aGUgbmV4dCBpTUNVIHJvdy4gIChUaGUgbGFzdCByb3cgZ3JvdXANCisgKiBjYW4ndCBiZSBwcm9jZXNzZWQgdW50aWwgd2UgaGF2ZSBhbm90aGVyIHJvdyBncm91cCBmb3IgaXRzIGJlbG93LWNvbnRleHQsDQorICogYW5kIHNvIHdlIGhhdmUgdG8gc2F2ZSB0aGUgbmV4dC10by1sYXN0IGdyb3VwIHRvbyBmb3IgaXRzIGFib3ZlLWNvbnRleHQuKQ0KKyAqIFdlIGNvdWxkIGRvIHRoaXMgbW9zdCBzaW1wbHkgYnkgY29weWluZyBkYXRhIGFyb3VuZCBpbiBvdXIgYnVmZmVyLCBidXQNCisgKiB0aGF0J2QgYmUgdmVyeSBzbG93LiAgV2UgY2FuIGF2b2lkIGNvcHlpbmcgYW55IGRhdGEgYnkgY3JlYXRpbmcgYSByYXRoZXINCisgKiBzdHJhbmdlIHBvaW50ZXIgc3RydWN0dXJlLiAgSGVyZSdzIGhvdyBpdCB3b3Jrcy4gIFdlIGFsbG9jYXRlIGEgd29ya3NwYWNlDQorICogY29uc2lzdGluZyBvZiBNKzIgcm93IGdyb3VwcyAod2hlcmUgTSA9IG1pbl9EQ1Rfc2NhbGVkX3NpemUgaXMgdGhlIG51bWJlcg0KKyAqIG9mIHJvdyBncm91cHMgcGVyIGlNQ1Ugcm93KS4gIFdlIGNyZWF0ZSB0d28gc2V0cyBvZiByZWR1bmRhbnQgcG9pbnRlcnMgdG8NCisgKiB0aGUgd29ya3NwYWNlLiAgTGFiZWxpbmcgdGhlIHBoeXNpY2FsIHJvdyBncm91cHMgMCB0byBNKzEsIHRoZSBzeW50aGVzaXplZA0KKyAqIHBvaW50ZXIgbGlzdHMgbG9vayBsaWtlIHRoaXM6DQorICogICAgICAgICAgICAgICAgICAgTSsxICAgICAgICAgICAgICAgICAgICAgICAgICBNLTENCisgKiBtYXN0ZXIgcG9pbnRlciAtLT4gMCAgICAgICAgIG1hc3RlciBwb2ludGVyIC0tPiAwDQorICogICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQ0KKyAqICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uDQorICogICAgICAgICAgICAgICAgICAgTS0zICAgICAgICAgICAgICAgICAgICAgICAgICBNLTMNCisgKiAgICAgICAgICAgICAgICAgICBNLTIgICAgICAgICAgICAgICAgICAgICAgICAgICBNDQorICogICAgICAgICAgICAgICAgICAgTS0xICAgICAgICAgICAgICAgICAgICAgICAgICBNKzENCisgKiAgICAgICAgICAgICAgICAgICAgTSAgICAgICAgICAgICAgICAgICAgICAgICAgIE0tMg0KKyAqICAgICAgICAgICAgICAgICAgIE0rMSAgICAgICAgICAgICAgICAgICAgICAgICAgTS0xDQorICogICAgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyAqIFdlIHJlYWQgYWx0ZXJuYXRlIGlNQ1Ugcm93cyB1c2luZyBlYWNoIG1hc3RlciBwb2ludGVyOyB0aHVzIHRoZSBsYXN0IHR3bw0KKyAqIHJvdyBncm91cHMgb2YgdGhlIHByZXZpb3VzIGlNQ1Ugcm93IHJlbWFpbiB1bi1vdmVyd3JpdHRlbiBpbiB0aGUgd29ya3NwYWNlLg0KKyAqIFRoZSBwb2ludGVyIGxpc3RzIGFyZSBzZXQgdXAgc28gdGhhdCB0aGUgcmVxdWlyZWQgY29udGV4dCByb3dzIGFwcGVhciB0bw0KKyAqIGJlIGFkamFjZW50IHRvIHRoZSBwcm9wZXIgcGxhY2VzIHdoZW4gd2UgcGFzcyB0aGUgcG9pbnRlciBsaXN0cyB0byB0aGUNCisgKiB1cHNhbXBsZXIuDQorICoNCisgKiBUaGUgYWJvdmUgcGljdHVyZXMgZGVzY3JpYmUgdGhlIG5vcm1hbCBzdGF0ZSBvZiB0aGUgcG9pbnRlciBsaXN0cy4NCisgKiBBdCB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgaW1hZ2UsIHdlIGRpZGRsZSB0aGUgcG9pbnRlciBsaXN0cyB0byBkdXBsaWNhdGUNCisgKiB0aGUgZmlyc3Qgb3IgbGFzdCBzYW1wbGUgcm93IGFzIG5lY2Vzc2FyeSAodGhpcyBpcyBjaGVhcGVyIHRoYW4gY29weWluZw0KKyAqIHNhbXBsZSByb3dzIGFyb3VuZCkuDQorICoNCisgKiBUaGlzIHNjaGVtZSBicmVha3MgZG93biBpZiBNIDwgMiwgaWUsIG1pbl9EQ1Rfc2NhbGVkX3NpemUgaXMgMS4gIEluIHRoYXQNCisgKiBzaXR1YXRpb24gZWFjaCBpTUNVIHJvdyBwcm92aWRlcyBvbmx5IG9uZSByb3cgZ3JvdXAgc28gdGhlIGJ1ZmZlcmluZyBsb2dpYw0KKyAqIG11c3QgYmUgZGlmZmVyZW50IChlZywgd2UgbXVzdCByZWFkIHR3byBpTUNVIHJvd3MgYmVmb3JlIHdlIGNhbiBlbWl0IHRoZQ0KKyAqIGZpcnN0IHJvdyBncm91cCkuICBGb3Igbm93LCB3ZSBzaW1wbHkgZG8gbm90IHN1cHBvcnQgcHJvdmlkaW5nIGNvbnRleHQNCisgKiByb3dzIHdoZW4gbWluX0RDVF9zY2FsZWRfc2l6ZSBpcyAxLiAgVGhhdCBjb21iaW5hdGlvbiBzZWVtcyB1bmxpa2VseSB0bw0KKyAqIGJlIHdvcnRoIHByb3ZpZGluZyAtLS0gaWYgc29tZW9uZSB3YW50cyBhIDEvOHRoLXNpemUgcHJldmlldywgdGhleSBwcm9iYWJseQ0KKyAqIHdhbnQgaXQgcXVpY2sgYW5kIGRpcnR5LCBzbyBhIGNvbnRleHQtZnJlZSB1cHNhbXBsZXIgaXMgc3VmZmljaWVudC4NCisgKi8NCisNCisNCisvKiBQcml2YXRlIGJ1ZmZlciBjb250cm9sbGVyIG9iamVjdCAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIHN0cnVjdCBqcGVnX2RfbWFpbl9jb250cm9sbGVyIHB1YjsgLyogcHVibGljIGZpZWxkcyAqLw0KKw0KKyAgLyogUG9pbnRlciB0byBhbGxvY2F0ZWQgd29ya3NwYWNlIChNIG9yIE0rMiByb3cgZ3JvdXBzKS4gKi8NCisgIEpTQU1QQVJSQVkgYnVmZmVyW01BWF9DT01QT05FTlRTXTsNCisNCisgIGJvb2xlYW4gYnVmZmVyX2Z1bGw7CQkvKiBIYXZlIHdlIGdvdHRlbiBhbiBpTUNVIHJvdyBmcm9tIGRlY29kZXI/ICovDQorICBKRElNRU5TSU9OIHJvd2dyb3VwX2N0cjsJLyogY291bnRzIHJvdyBncm91cHMgb3V0cHV0IHRvIHBvc3Rwcm9jZXNzb3IgKi8NCisNCisgIC8qIFJlbWFpbmluZyBmaWVsZHMgYXJlIG9ubHkgdXNlZCBpbiB0aGUgY29udGV4dCBjYXNlLiAqLw0KKw0KKyAgLyogVGhlc2UgYXJlIHRoZSBtYXN0ZXIgcG9pbnRlcnMgdG8gdGhlIGZ1bm55LW9yZGVyIHBvaW50ZXIgbGlzdHMuICovDQorICBKU0FNUElNQUdFIHhidWZmZXJbMl07CS8qIHBvaW50ZXJzIHRvIHdlaXJkIHBvaW50ZXIgbGlzdHMgKi8NCisNCisgIGludCB3aGljaHB0cjsJCQkvKiBpbmRpY2F0ZXMgd2hpY2ggcG9pbnRlciBzZXQgaXMgbm93IGluIHVzZSAqLw0KKyAgaW50IGNvbnRleHRfc3RhdGU7CQkvKiBwcm9jZXNzX2RhdGEgc3RhdGUgbWFjaGluZSBzdGF0dXMgKi8NCisgIEpESU1FTlNJT04gcm93Z3JvdXBzX2F2YWlsOwkvKiByb3cgZ3JvdXBzIGF2YWlsYWJsZSB0byBwb3N0cHJvY2Vzc29yICovDQorICBKRElNRU5TSU9OIGlNQ1Vfcm93X2N0cjsJLyogY291bnRzIGlNQ1Ugcm93cyB0byBkZXRlY3QgaW1hZ2UgdG9wL2JvdCAqLw0KK30gbXlfbWFpbl9jb250cm9sbGVyOw0KKw0KK3R5cGVkZWYgbXlfbWFpbl9jb250cm9sbGVyICogbXlfbWFpbl9wdHI7DQorDQorLyogY29udGV4dF9zdGF0ZSB2YWx1ZXM6ICovDQorI2RlZmluZSBDVFhfUFJFUEFSRV9GT1JfSU1DVQkwCS8qIG5lZWQgdG8gcHJlcGFyZSBmb3IgTUNVIHJvdyAqLw0KKyNkZWZpbmUgQ1RYX1BST0NFU1NfSU1DVQkxCS8qIGZlZWRpbmcgaU1DVSB0byBwb3N0cHJvY2Vzc29yICovDQorI2RlZmluZSBDVFhfUE9TVFBPTkVEX1JPVwkyCS8qIGZlZWRpbmcgcG9zdHBvbmVkIHJvdyBncm91cCAqLw0KKw0KKw0KKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovDQorTUVUSE9EREVGKHZvaWQpIHByb2Nlc3NfZGF0YV9zaW1wbGVfbWFpbg0KKwlKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZiwNCisJICAgICBKRElNRU5TSU9OICpvdXRfcm93X2N0ciwgSkRJTUVOU0lPTiBvdXRfcm93c19hdmFpbCkpOw0KK01FVEhPRERFRih2b2lkKSBwcm9jZXNzX2RhdGFfY29udGV4dF9tYWluDQorCUpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLA0KKwkgICAgIEpESU1FTlNJT04gKm91dF9yb3dfY3RyLCBKRElNRU5TSU9OIG91dF9yb3dzX2F2YWlsKSk7DQorI2lmZGVmIFFVQU5UXzJQQVNTX1NVUFBPUlRFRA0KK01FVEhPRERFRih2b2lkKSBwcm9jZXNzX2RhdGFfY3JhbmtfcG9zdA0KKwlKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZiwNCisJICAgICBKRElNRU5TSU9OICpvdXRfcm93X2N0ciwgSkRJTUVOU0lPTiBvdXRfcm93c19hdmFpbCkpOw0KKyNlbmRpZg0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorYWxsb2NfZnVubnlfcG9pbnRlcnMgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorLyogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBmdW5ueSBwb2ludGVyIGxpc3RzLg0KKyAqIFRoaXMgaXMgZG9uZSBvbmx5IG9uY2UsIG5vdCBvbmNlIHBlciBwYXNzLg0KKyAqLw0KK3sNCisgIG15X21haW5fcHRyIG1haW4gPSAobXlfbWFpbl9wdHIpIGNpbmZvLT5tYWluOw0KKyAgaW50IGNpLCByZ3JvdXA7DQorICBpbnQgTSA9IGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIEpTQU1QQVJSQVkgeGJ1ZjsNCisNCisgIC8qIEdldCB0b3AtbGV2ZWwgc3BhY2UgZm9yIGNvbXBvbmVudCBhcnJheSBwb2ludGVycy4NCisgICAqIFdlIGFsbG9jIGJvdGggYXJyYXlzIHdpdGggb25lIGNhbGwgdG8gc2F2ZSBhIGZldyBjeWNsZXMuDQorICAgKi8NCisgIG1haW4tPnhidWZmZXJbMF0gPSAoSlNBTVBJTUFHRSkNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJY2luZm8tPm51bV9jb21wb25lbnRzICogMiAqIFNJWkVPRihKU0FNUEFSUkFZKSk7DQorICBtYWluLT54YnVmZmVyWzFdID0gbWFpbi0+eGJ1ZmZlclswXSArIGNpbmZvLT5udW1fY29tcG9uZW50czsNCisNCisgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorICAgICAgIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICByZ3JvdXAgPSAoY29tcHB0ci0+dl9zYW1wX2ZhY3RvciAqIGNvbXBwdHItPkRDVF9zY2FsZWRfc2l6ZSkgLw0KKyAgICAgIGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplOyAvKiBoZWlnaHQgb2YgYSByb3cgZ3JvdXAgb2YgY29tcG9uZW50ICovDQorICAgIC8qIEdldCBzcGFjZSBmb3IgcG9pbnRlciBsaXN0cyAtLS0gTSs0IHJvdyBncm91cHMgaW4gZWFjaCBsaXN0Lg0KKyAgICAgKiBXZSBhbGxvYyBib3RoIHBvaW50ZXIgbGlzdHMgd2l0aCBvbmUgY2FsbCB0byBzYXZlIGEgZmV3IGN5Y2xlcy4NCisgICAgICovDQorICAgIHhidWYgPSAoSlNBTVBBUlJBWSkNCisgICAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQkgIDIgKiAocmdyb3VwICogKE0gKyA0KSkgKiBTSVpFT0YoSlNBTVBST1cpKTsNCisgICAgeGJ1ZiArPSByZ3JvdXA7CQkvKiB3YW50IG9uZSByb3cgZ3JvdXAgYXQgbmVnYXRpdmUgb2Zmc2V0cyAqLw0KKyAgICBtYWluLT54YnVmZmVyWzBdW2NpXSA9IHhidWY7DQorICAgIHhidWYgKz0gcmdyb3VwICogKE0gKyA0KTsNCisgICAgbWFpbi0+eGJ1ZmZlclsxXVtjaV0gPSB4YnVmOw0KKyAgfQ0KK30NCisNCisNCitMT0NBTCh2b2lkKQ0KK21ha2VfZnVubnlfcG9pbnRlcnMgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorLyogQ3JlYXRlIHRoZSBmdW5ueSBwb2ludGVyIGxpc3RzIGRpc2N1c3NlZCBpbiB0aGUgY29tbWVudHMgYWJvdmUuDQorICogVGhlIGFjdHVhbCB3b3Jrc3BhY2UgaXMgYWxyZWFkeSBhbGxvY2F0ZWQgKGluIG1haW4tPmJ1ZmZlciksDQorICogYW5kIHRoZSBzcGFjZSBmb3IgdGhlIHBvaW50ZXIgbGlzdHMgaXMgYWxsb2NhdGVkIHRvby4NCisgKiBUaGlzIHJvdXRpbmUganVzdCBmaWxscyBpbiB0aGUgY3VyaW91c2x5IG9yZGVyZWQgbGlzdHMuDQorICogVGhpcyB3aWxsIGJlIHJlcGVhdGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBwYXNzLg0KKyAqLw0KK3sNCisgIG15X21haW5fcHRyIG1haW4gPSAobXlfbWFpbl9wdHIpIGNpbmZvLT5tYWluOw0KKyAgaW50IGNpLCBpLCByZ3JvdXA7DQorICBpbnQgTSA9IGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqY29tcHB0cjsNCisgIEpTQU1QQVJSQVkgYnVmLCB4YnVmMCwgeGJ1ZjE7DQorDQorICBmb3IgKGNpID0gMCwgY29tcHB0ciA9IGNpbmZvLT5jb21wX2luZm87IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgICAgICBjaSsrLCBjb21wcHRyKyspIHsNCisgICAgcmdyb3VwID0gKGNvbXBwdHItPnZfc2FtcF9mYWN0b3IgKiBjb21wcHRyLT5EQ1Rfc2NhbGVkX3NpemUpIC8NCisgICAgICBjaW5mby0+bWluX0RDVF9zY2FsZWRfc2l6ZTsgLyogaGVpZ2h0IG9mIGEgcm93IGdyb3VwIG9mIGNvbXBvbmVudCAqLw0KKyAgICB4YnVmMCA9IG1haW4tPnhidWZmZXJbMF1bY2ldOw0KKyAgICB4YnVmMSA9IG1haW4tPnhidWZmZXJbMV1bY2ldOw0KKyAgICAvKiBGaXJzdCBjb3B5IHRoZSB3b3Jrc3BhY2UgcG9pbnRlcnMgYXMtaXMgKi8NCisgICAgYnVmID0gbWFpbi0+YnVmZmVyW2NpXTsNCisgICAgZm9yIChpID0gMDsgaSA8IHJncm91cCAqIChNICsgMik7IGkrKykgew0KKyAgICAgIHhidWYwW2ldID0geGJ1ZjFbaV0gPSBidWZbaV07DQorICAgIH0NCisgICAgLyogSW4gdGhlIHNlY29uZCBsaXN0LCBwdXQgdGhlIGxhc3QgZm91ciByb3cgZ3JvdXBzIGluIHN3YXBwZWQgb3JkZXIgKi8NCisgICAgZm9yIChpID0gMDsgaSA8IHJncm91cCAqIDI7IGkrKykgew0KKyAgICAgIHhidWYxW3Jncm91cCooTS0yKSArIGldID0gYnVmW3Jncm91cCpNICsgaV07DQorICAgICAgeGJ1ZjFbcmdyb3VwKk0gKyBpXSA9IGJ1ZltyZ3JvdXAqKE0tMikgKyBpXTsNCisgICAgfQ0KKyAgICAvKiBUaGUgd3JhcGFyb3VuZCBwb2ludGVycyBhdCB0b3AgYW5kIGJvdHRvbSB3aWxsIGJlIGZpbGxlZCBsYXRlcg0KKyAgICAgKiAoc2VlIHNldF93cmFwYXJvdW5kX3BvaW50ZXJzLCBiZWxvdykuICBJbml0aWFsbHkgd2Ugd2FudCB0aGUgImFib3ZlIg0KKyAgICAgKiBwb2ludGVycyB0byBkdXBsaWNhdGUgdGhlIGZpcnN0IGFjdHVhbCBkYXRhIGxpbmUuICBUaGlzIG9ubHkgbmVlZHMNCisgICAgICogdG8gaGFwcGVuIGluIHhidWZmZXJbMF0uDQorICAgICAqLw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgcmdyb3VwOyBpKyspIHsNCisgICAgICB4YnVmMFtpIC0gcmdyb3VwXSA9IHhidWYwWzBdOw0KKyAgICB9DQorICB9DQorfQ0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorc2V0X3dyYXBhcm91bmRfcG9pbnRlcnMgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorLyogU2V0IHVwIHRoZSAid3JhcGFyb3VuZCIgcG9pbnRlcnMgYXQgdG9wIGFuZCBib3R0b20gb2YgdGhlIHBvaW50ZXIgbGlzdHMuDQorICogVGhpcyBjaGFuZ2VzIHRoZSBwb2ludGVyIGxpc3Qgc3RhdGUgZnJvbSB0b3Atb2YtaW1hZ2UgdG8gdGhlIG5vcm1hbCBzdGF0ZS4NCisgKi8NCit7DQorICBteV9tYWluX3B0ciBtYWluID0gKG15X21haW5fcHRyKSBjaW5mby0+bWFpbjsNCisgIGludCBjaSwgaSwgcmdyb3VwOw0KKyAgaW50IE0gPSBjaW5mby0+bWluX0RDVF9zY2FsZWRfc2l6ZTsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorICBKU0FNUEFSUkFZIHhidWYwLCB4YnVmMTsNCisNCisgIGZvciAoY2kgPSAwLCBjb21wcHRyID0gY2luZm8tPmNvbXBfaW5mbzsgY2kgPCBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorICAgICAgIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICByZ3JvdXAgPSAoY29tcHB0ci0+dl9zYW1wX2ZhY3RvciAqIGNvbXBwdHItPkRDVF9zY2FsZWRfc2l6ZSkgLw0KKyAgICAgIGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplOyAvKiBoZWlnaHQgb2YgYSByb3cgZ3JvdXAgb2YgY29tcG9uZW50ICovDQorICAgIHhidWYwID0gbWFpbi0+eGJ1ZmZlclswXVtjaV07DQorICAgIHhidWYxID0gbWFpbi0+eGJ1ZmZlclsxXVtjaV07DQorICAgIGZvciAoaSA9IDA7IGkgPCByZ3JvdXA7IGkrKykgew0KKyAgICAgIHhidWYwW2kgLSByZ3JvdXBdID0geGJ1ZjBbcmdyb3VwKihNKzEpICsgaV07DQorICAgICAgeGJ1ZjFbaSAtIHJncm91cF0gPSB4YnVmMVtyZ3JvdXAqKE0rMSkgKyBpXTsNCisgICAgICB4YnVmMFtyZ3JvdXAqKE0rMikgKyBpXSA9IHhidWYwW2ldOw0KKyAgICAgIHhidWYxW3Jncm91cCooTSsyKSArIGldID0geGJ1ZjFbaV07DQorICAgIH0NCisgIH0NCit9DQorDQorDQorTE9DQUwodm9pZCkNCitzZXRfYm90dG9tX3BvaW50ZXJzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIENoYW5nZSB0aGUgcG9pbnRlciBsaXN0cyB0byBkdXBsaWNhdGUgdGhlIGxhc3Qgc2FtcGxlIHJvdyBhdCB0aGUgYm90dG9tDQorICogb2YgdGhlIGltYWdlLiAgd2hpY2hwdHIgaW5kaWNhdGVzIHdoaWNoIHhidWZmZXIgaG9sZHMgdGhlIGZpbmFsIGlNQ1Ugcm93Lg0KKyAqIEFsc28gc2V0cyByb3dncm91cHNfYXZhaWwgdG8gaW5kaWNhdGUgbnVtYmVyIG9mIG5vbmR1bW15IHJvdyBncm91cHMgaW4gcm93Lg0KKyAqLw0KK3sNCisgIG15X21haW5fcHRyIG1haW4gPSAobXlfbWFpbl9wdHIpIGNpbmZvLT5tYWluOw0KKyAgaW50IGNpLCBpLCByZ3JvdXAsIGlNQ1VoZWlnaHQsIHJvd3NfbGVmdDsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorICBKU0FNUEFSUkFZIHhidWY7DQorDQorICBmb3IgKGNpID0gMCwgY29tcHB0ciA9IGNpbmZvLT5jb21wX2luZm87IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgICAgICBjaSsrLCBjb21wcHRyKyspIHsNCisgICAgLyogQ291bnQgc2FtcGxlIHJvd3MgaW4gb25lIGlNQ1Ugcm93IGFuZCBpbiBvbmUgcm93IGdyb3VwICovDQorICAgIGlNQ1VoZWlnaHQgPSBjb21wcHRyLT52X3NhbXBfZmFjdG9yICogY29tcHB0ci0+RENUX3NjYWxlZF9zaXplOw0KKyAgICByZ3JvdXAgPSBpTUNVaGVpZ2h0IC8gY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemU7DQorICAgIC8qIENvdW50IG5vbmR1bW15IHNhbXBsZSByb3dzIHJlbWFpbmluZyBmb3IgdGhpcyBjb21wb25lbnQgKi8NCisgICAgcm93c19sZWZ0ID0gKGludCkgKGNvbXBwdHItPmRvd25zYW1wbGVkX2hlaWdodCAlIChKRElNRU5TSU9OKSBpTUNVaGVpZ2h0KTsNCisgICAgaWYgKHJvd3NfbGVmdCA9PSAwKSByb3dzX2xlZnQgPSBpTUNVaGVpZ2h0Ow0KKyAgICAvKiBDb3VudCBub25kdW1teSByb3cgZ3JvdXBzLiAgU2hvdWxkIGdldCBzYW1lIGFuc3dlciBmb3IgZWFjaCBjb21wb25lbnQsDQorICAgICAqIHNvIHdlIG5lZWQgb25seSBkbyBpdCBvbmNlLg0KKyAgICAgKi8NCisgICAgaWYgKGNpID09IDApIHsNCisgICAgICBtYWluLT5yb3dncm91cHNfYXZhaWwgPSAoSkRJTUVOU0lPTikgKChyb3dzX2xlZnQtMSkgLyByZ3JvdXAgKyAxKTsNCisgICAgfQ0KKyAgICAvKiBEdXBsaWNhdGUgdGhlIGxhc3QgcmVhbCBzYW1wbGUgcm93IHJncm91cCoyIHRpbWVzOyB0aGlzIHBhZHMgb3V0IHRoZQ0KKyAgICAgKiBsYXN0IHBhcnRpYWwgcm93Z3JvdXAgYW5kIGVuc3VyZXMgYXQgbGVhc3Qgb25lIGZ1bGwgcm93Z3JvdXAgb2YgY29udGV4dC4NCisgICAgICovDQorICAgIHhidWYgPSBtYWluLT54YnVmZmVyW21haW4tPndoaWNocHRyXVtjaV07DQorICAgIGZvciAoaSA9IDA7IGkgPCByZ3JvdXAgKiAyOyBpKyspIHsNCisgICAgICB4YnVmW3Jvd3NfbGVmdCArIGldID0geGJ1Zltyb3dzX2xlZnQtMV07DQorICAgIH0NCisgIH0NCit9DQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIGZvciBhIHByb2Nlc3NpbmcgcGFzcy4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitzdGFydF9wYXNzX21haW4gKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpfQlVGX01PREUgcGFzc19tb2RlKQ0KK3sNCisgIG15X21haW5fcHRyIG1haW4gPSAobXlfbWFpbl9wdHIpIGNpbmZvLT5tYWluOw0KKw0KKyAgc3dpdGNoIChwYXNzX21vZGUpIHsNCisgIGNhc2UgSkJVRl9QQVNTX1RIUlU6DQorICAgIGlmIChjaW5mby0+dXBzYW1wbGUtPm5lZWRfY29udGV4dF9yb3dzKSB7DQorICAgICAgbWFpbi0+cHViLnByb2Nlc3NfZGF0YSA9IHByb2Nlc3NfZGF0YV9jb250ZXh0X21haW47DQorICAgICAgbWFrZV9mdW5ueV9wb2ludGVycyhjaW5mbyk7IC8qIENyZWF0ZSB0aGUgeGJ1ZmZlcltdIGxpc3RzICovDQorICAgICAgbWFpbi0+d2hpY2hwdHIgPSAwOwkvKiBSZWFkIGZpcnN0IGlNQ1Ugcm93IGludG8geGJ1ZmZlclswXSAqLw0KKyAgICAgIG1haW4tPmNvbnRleHRfc3RhdGUgPSBDVFhfUFJFUEFSRV9GT1JfSU1DVTsNCisgICAgICBtYWluLT5pTUNVX3Jvd19jdHIgPSAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIC8qIFNpbXBsZSBjYXNlIHdpdGggbm8gY29udGV4dCBuZWVkZWQgKi8NCisgICAgICBtYWluLT5wdWIucHJvY2Vzc19kYXRhID0gcHJvY2Vzc19kYXRhX3NpbXBsZV9tYWluOw0KKyAgICB9DQorICAgIG1haW4tPmJ1ZmZlcl9mdWxsID0gRkFMU0U7CS8qIE1hcmsgYnVmZmVyIGVtcHR5ICovDQorICAgIG1haW4tPnJvd2dyb3VwX2N0ciA9IDA7DQorICAgIGJyZWFrOw0KKyNpZmRlZiBRVUFOVF8yUEFTU19TVVBQT1JURUQNCisgIGNhc2UgSkJVRl9DUkFOS19ERVNUOg0KKyAgICAvKiBGb3IgbGFzdCBwYXNzIG9mIDItcGFzcyBxdWFudGl6YXRpb24sIGp1c3QgY3JhbmsgdGhlIHBvc3Rwcm9jZXNzb3IgKi8NCisgICAgbWFpbi0+cHViLnByb2Nlc3NfZGF0YSA9IHByb2Nlc3NfZGF0YV9jcmFua19wb3N0Ow0KKyAgICBicmVhazsNCisjZW5kaWYNCisgIGRlZmF1bHQ6DQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0JVRkZFUl9NT0RFKTsNCisgICAgYnJlYWs7DQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogUHJvY2VzcyBzb21lIGRhdGEuDQorICogVGhpcyBoYW5kbGVzIHRoZSBzaW1wbGUgY2FzZSB3aGVyZSBubyBjb250ZXh0IGlzIHJlcXVpcmVkLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3Byb2Nlc3NfZGF0YV9zaW1wbGVfbWFpbiAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkgIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZiwgSkRJTUVOU0lPTiAqb3V0X3Jvd19jdHIsDQorCQkJICBKRElNRU5TSU9OIG91dF9yb3dzX2F2YWlsKQ0KK3sNCisgIG15X21haW5fcHRyIG1haW4gPSAobXlfbWFpbl9wdHIpIGNpbmZvLT5tYWluOw0KKyAgSkRJTUVOU0lPTiByb3dncm91cHNfYXZhaWw7DQorDQorICAvKiBSZWFkIGlucHV0IGRhdGEgaWYgd2UgaGF2ZW4ndCBmaWxsZWQgdGhlIG1haW4gYnVmZmVyIHlldCAqLw0KKyAgaWYgKCEgbWFpbi0+YnVmZmVyX2Z1bGwpIHsNCisgICAgaWYgKCEgKCpjaW5mby0+Y29lZi0+ZGVjb21wcmVzc19kYXRhKSAoY2luZm8sIG1haW4tPmJ1ZmZlcikpDQorICAgICAgcmV0dXJuOwkJCS8qIHN1c3BlbnNpb24gZm9yY2VkLCBjYW4gZG8gbm90aGluZyBtb3JlICovDQorICAgIG1haW4tPmJ1ZmZlcl9mdWxsID0gVFJVRTsJLyogT0ssIHdlIGhhdmUgYW4gaU1DVSByb3cgdG8gd29yayB3aXRoICovDQorICB9DQorDQorICAvKiBUaGVyZSBhcmUgYWx3YXlzIG1pbl9EQ1Rfc2NhbGVkX3NpemUgcm93IGdyb3VwcyBpbiBhbiBpTUNVIHJvdy4gKi8NCisgIHJvd2dyb3Vwc19hdmFpbCA9IChKRElNRU5TSU9OKSBjaW5mby0+bWluX0RDVF9zY2FsZWRfc2l6ZTsNCisgIC8qIE5vdGU6IGF0IHRoZSBib3R0b20gb2YgdGhlIGltYWdlLCB3ZSBtYXkgcGFzcyBleHRyYSBnYXJiYWdlIHJvdyBncm91cHMNCisgICAqIHRvIHRoZSBwb3N0cHJvY2Vzc29yLiAgVGhlIHBvc3Rwcm9jZXNzb3IgaGFzIHRvIGNoZWNrIGZvciBib3R0b20NCisgICAqIG9mIGltYWdlIGFueXdheSAoYXQgcm93IHJlc29sdXRpb24pLCBzbyBubyBwb2ludCBpbiB1cyBkb2luZyBpdCB0b28uDQorICAgKi8NCisNCisgIC8qIEZlZWQgdGhlIHBvc3Rwcm9jZXNzb3IgKi8NCisgICgqY2luZm8tPnBvc3QtPnBvc3RfcHJvY2Vzc19kYXRhKSAoY2luZm8sIG1haW4tPmJ1ZmZlciwNCisJCQkJICAgICAmbWFpbi0+cm93Z3JvdXBfY3RyLCByb3dncm91cHNfYXZhaWwsDQorCQkJCSAgICAgb3V0cHV0X2J1Ziwgb3V0X3Jvd19jdHIsIG91dF9yb3dzX2F2YWlsKTsNCisNCisgIC8qIEhhcyBwb3N0cHJvY2Vzc29yIGNvbnN1bWVkIGFsbCB0aGUgZGF0YSB5ZXQ/IElmIHNvLCBtYXJrIGJ1ZmZlciBlbXB0eSAqLw0KKyAgaWYgKG1haW4tPnJvd2dyb3VwX2N0ciA+PSByb3dncm91cHNfYXZhaWwpIHsNCisgICAgbWFpbi0+YnVmZmVyX2Z1bGwgPSBGQUxTRTsNCisgICAgbWFpbi0+cm93Z3JvdXBfY3RyID0gMDsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBQcm9jZXNzIHNvbWUgZGF0YS4NCisgKiBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgY29udGV4dCByb3dzIG11c3QgYmUgcHJvdmlkZWQuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorcHJvY2Vzc19kYXRhX2NvbnRleHRfbWFpbiAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gKm91dF9yb3dfY3RyLA0KKwkJCSAgIEpESU1FTlNJT04gb3V0X3Jvd3NfYXZhaWwpDQorew0KKyAgbXlfbWFpbl9wdHIgbWFpbiA9IChteV9tYWluX3B0cikgY2luZm8tPm1haW47DQorDQorICAvKiBSZWFkIGlucHV0IGRhdGEgaWYgd2UgaGF2ZW4ndCBmaWxsZWQgdGhlIG1haW4gYnVmZmVyIHlldCAqLw0KKyAgaWYgKCEgbWFpbi0+YnVmZmVyX2Z1bGwpIHsNCisgICAgaWYgKCEgKCpjaW5mby0+Y29lZi0+ZGVjb21wcmVzc19kYXRhKSAoY2luZm8sDQorCQkJCQkgICBtYWluLT54YnVmZmVyW21haW4tPndoaWNocHRyXSkpDQorICAgICAgcmV0dXJuOwkJCS8qIHN1c3BlbnNpb24gZm9yY2VkLCBjYW4gZG8gbm90aGluZyBtb3JlICovDQorICAgIG1haW4tPmJ1ZmZlcl9mdWxsID0gVFJVRTsJLyogT0ssIHdlIGhhdmUgYW4gaU1DVSByb3cgdG8gd29yayB3aXRoICovDQorICAgIG1haW4tPmlNQ1Vfcm93X2N0cisrOwkvKiBjb3VudCByb3dzIHJlY2VpdmVkICovDQorICB9DQorDQorICAvKiBQb3N0cHJvY2Vzc29yIHR5cGljYWxseSB3aWxsIG5vdCBzd2FsbG93IGFsbCB0aGUgaW5wdXQgZGF0YSBpdCBpcyBoYW5kZWQNCisgICAqIGluIG9uZSBjYWxsIChkdWUgdG8gZmlsbGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBmaXJzdCkuICBNdXN0IGJlIHByZXBhcmVkDQorICAgKiB0byBleGl0IGFuZCByZXN0YXJ0LiAgVGhpcyBzd2l0Y2ggbGV0cyB1cyBrZWVwIHRyYWNrIG9mIGhvdyBmYXIgd2UgZ290Lg0KKyAgICogTm90ZSB0aGF0IGVhY2ggY2FzZSBmYWxscyB0aHJvdWdoIHRvIHRoZSBuZXh0IG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4NCisgICAqLw0KKyAgc3dpdGNoIChtYWluLT5jb250ZXh0X3N0YXRlKSB7DQorICBjYXNlIENUWF9QT1NUUE9ORURfUk9XOg0KKyAgICAvKiBDYWxsIHBvc3Rwcm9jZXNzb3IgdXNpbmcgcHJldmlvdXNseSBzZXQgcG9pbnRlcnMgZm9yIHBvc3Rwb25lZCByb3cgKi8NCisgICAgKCpjaW5mby0+cG9zdC0+cG9zdF9wcm9jZXNzX2RhdGEpIChjaW5mbywgbWFpbi0+eGJ1ZmZlclttYWluLT53aGljaHB0cl0sDQorCQkJJm1haW4tPnJvd2dyb3VwX2N0ciwgbWFpbi0+cm93Z3JvdXBzX2F2YWlsLA0KKwkJCW91dHB1dF9idWYsIG91dF9yb3dfY3RyLCBvdXRfcm93c19hdmFpbCk7DQorICAgIGlmIChtYWluLT5yb3dncm91cF9jdHIgPCBtYWluLT5yb3dncm91cHNfYXZhaWwpDQorICAgICAgcmV0dXJuOwkJCS8qIE5lZWQgdG8gc3VzcGVuZCAqLw0KKyAgICBtYWluLT5jb250ZXh0X3N0YXRlID0gQ1RYX1BSRVBBUkVfRk9SX0lNQ1U7DQorICAgIGlmICgqb3V0X3Jvd19jdHIgPj0gb3V0X3Jvd3NfYXZhaWwpDQorICAgICAgcmV0dXJuOwkJCS8qIFBvc3Rwcm9jZXNzb3IgZXhhY3RseSBmaWxsZWQgb3V0cHV0IGJ1ZiAqLw0KKyAgICAvKkZBTExUSFJPVUdIKi8NCisgIGNhc2UgQ1RYX1BSRVBBUkVfRk9SX0lNQ1U6DQorICAgIC8qIFByZXBhcmUgdG8gcHJvY2VzcyBmaXJzdCBNLTEgcm93IGdyb3VwcyBvZiB0aGlzIGlNQ1Ugcm93ICovDQorICAgIG1haW4tPnJvd2dyb3VwX2N0ciA9IDA7DQorICAgIG1haW4tPnJvd2dyb3Vwc19hdmFpbCA9IChKRElNRU5TSU9OKSAoY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemUgLSAxKTsNCisgICAgLyogQ2hlY2sgZm9yIGJvdHRvbSBvZiBpbWFnZTogaWYgc28sIHR3ZWFrIHBvaW50ZXJzIHRvICJkdXBsaWNhdGUiDQorICAgICAqIHRoZSBsYXN0IHNhbXBsZSByb3csIGFuZCBhZGp1c3Qgcm93Z3JvdXBzX2F2YWlsIHRvIGlnbm9yZSBwYWRkaW5nIHJvd3MuDQorICAgICAqLw0KKyAgICBpZiAobWFpbi0+aU1DVV9yb3dfY3RyID09IGNpbmZvLT50b3RhbF9pTUNVX3Jvd3MpDQorICAgICAgc2V0X2JvdHRvbV9wb2ludGVycyhjaW5mbyk7DQorICAgIG1haW4tPmNvbnRleHRfc3RhdGUgPSBDVFhfUFJPQ0VTU19JTUNVOw0KKyAgICAvKkZBTExUSFJPVUdIKi8NCisgIGNhc2UgQ1RYX1BST0NFU1NfSU1DVToNCisgICAgLyogQ2FsbCBwb3N0cHJvY2Vzc29yIHVzaW5nIHByZXZpb3VzbHkgc2V0IHBvaW50ZXJzICovDQorICAgICgqY2luZm8tPnBvc3QtPnBvc3RfcHJvY2Vzc19kYXRhKSAoY2luZm8sIG1haW4tPnhidWZmZXJbbWFpbi0+d2hpY2hwdHJdLA0KKwkJCSZtYWluLT5yb3dncm91cF9jdHIsIG1haW4tPnJvd2dyb3Vwc19hdmFpbCwNCisJCQlvdXRwdXRfYnVmLCBvdXRfcm93X2N0ciwgb3V0X3Jvd3NfYXZhaWwpOw0KKyAgICBpZiAobWFpbi0+cm93Z3JvdXBfY3RyIDwgbWFpbi0+cm93Z3JvdXBzX2F2YWlsKQ0KKyAgICAgIHJldHVybjsJCQkvKiBOZWVkIHRvIHN1c3BlbmQgKi8NCisgICAgLyogQWZ0ZXIgdGhlIGZpcnN0IGlNQ1UsIGNoYW5nZSB3cmFwYXJvdW5kIHBvaW50ZXJzIHRvIG5vcm1hbCBzdGF0ZSAqLw0KKyAgICBpZiAobWFpbi0+aU1DVV9yb3dfY3RyID09IDEpDQorICAgICAgc2V0X3dyYXBhcm91bmRfcG9pbnRlcnMoY2luZm8pOw0KKyAgICAvKiBQcmVwYXJlIHRvIGxvYWQgbmV3IGlNQ1Ugcm93IHVzaW5nIG90aGVyIHhidWZmZXIgbGlzdCAqLw0KKyAgICBtYWluLT53aGljaHB0ciBePSAxOwkvKiAwPT4xIG9yIDE9PjAgKi8NCisgICAgbWFpbi0+YnVmZmVyX2Z1bGwgPSBGQUxTRTsNCisgICAgLyogU3RpbGwgbmVlZCB0byBwcm9jZXNzIGxhc3Qgcm93IGdyb3VwIG9mIHRoaXMgaU1DVSByb3csICovDQorICAgIC8qIHdoaWNoIGlzIHNhdmVkIGF0IGluZGV4IE0rMSBvZiB0aGUgb3RoZXIgeGJ1ZmZlciAqLw0KKyAgICBtYWluLT5yb3dncm91cF9jdHIgPSAoSkRJTUVOU0lPTikgKGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplICsgMSk7DQorICAgIG1haW4tPnJvd2dyb3Vwc19hdmFpbCA9IChKRElNRU5TSU9OKSAoY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemUgKyAyKTsNCisgICAgbWFpbi0+Y29udGV4dF9zdGF0ZSA9IENUWF9QT1NUUE9ORURfUk9XOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIFByb2Nlc3Mgc29tZSBkYXRhLg0KKyAqIEZpbmFsIHBhc3Mgb2YgdHdvLXBhc3MgcXVhbnRpemF0aW9uOiBqdXN0IGNhbGwgdGhlIHBvc3Rwcm9jZXNzb3IuDQorICogU291cmNlIGRhdGEgd2lsbCBiZSB0aGUgcG9zdHByb2Nlc3NvciBjb250cm9sbGVyJ3MgaW50ZXJuYWwgYnVmZmVyLg0KKyAqLw0KKw0KKyNpZmRlZiBRVUFOVF8yUEFTU19TVVBQT1JURUQNCisNCitNRVRIT0RERUYodm9pZCkNCitwcm9jZXNzX2RhdGFfY3JhbmtfcG9zdCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OICpvdXRfcm93X2N0ciwNCisJCQkgSkRJTUVOU0lPTiBvdXRfcm93c19hdmFpbCkNCit7DQorICAoKmNpbmZvLT5wb3N0LT5wb3N0X3Byb2Nlc3NfZGF0YSkgKGNpbmZvLCAoSlNBTVBJTUFHRSkgTlVMTCwNCisJCQkJICAgICAoSkRJTUVOU0lPTiAqKSBOVUxMLCAoSkRJTUVOU0lPTikgMCwNCisJCQkJICAgICBvdXRwdXRfYnVmLCBvdXRfcm93X2N0ciwgb3V0X3Jvd3NfYXZhaWwpOw0KK30NCisNCisjZW5kaWYgLyogUVVBTlRfMlBBU1NfU1VQUE9SVEVEICovDQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIG1haW4gYnVmZmVyIGNvbnRyb2xsZXIuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoramluaXRfZF9tYWluX2NvbnRyb2xsZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGJvb2xlYW4gbmVlZF9mdWxsX2J1ZmZlcikNCit7DQorICBteV9tYWluX3B0ciBtYWluOw0KKyAgaW50IGNpLCByZ3JvdXAsIG5ncm91cHM7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICpjb21wcHRyOw0KKw0KKyAgbWFpbiA9IChteV9tYWluX3B0cikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJU0laRU9GKG15X21haW5fY29udHJvbGxlcikpOw0KKyAgY2luZm8tPm1haW4gPSAoc3RydWN0IGpwZWdfZF9tYWluX2NvbnRyb2xsZXIgKikgbWFpbjsNCisgIG1haW4tPnB1Yi5zdGFydF9wYXNzID0gc3RhcnRfcGFzc19tYWluOw0KKw0KKyAgaWYgKG5lZWRfZnVsbF9idWZmZXIpCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0JVRkZFUl9NT0RFKTsNCisNCisgIC8qIEFsbG9jYXRlIHRoZSB3b3Jrc3BhY2UuDQorICAgKiBuZ3JvdXBzIGlzIHRoZSBudW1iZXIgb2Ygcm93IGdyb3VwcyB3ZSBuZWVkLg0KKyAgICovDQorICBpZiAoY2luZm8tPnVwc2FtcGxlLT5uZWVkX2NvbnRleHRfcm93cykgew0KKyAgICBpZiAoY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemUgPCAyKSAvKiB1bnN1cHBvcnRlZCwgc2VlIGNvbW1lbnRzIGFib3ZlICovDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RJTVBMKTsNCisgICAgYWxsb2NfZnVubnlfcG9pbnRlcnMoY2luZm8pOyAvKiBBbGxvYyBzcGFjZSBmb3IgeGJ1ZmZlcltdIGxpc3RzICovDQorICAgIG5ncm91cHMgPSBjaW5mby0+bWluX0RDVF9zY2FsZWRfc2l6ZSArIDI7DQorICB9IGVsc2Ugew0KKyAgICBuZ3JvdXBzID0gY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemU7DQorICB9DQorDQorICBmb3IgKGNpID0gMCwgY29tcHB0ciA9IGNpbmZvLT5jb21wX2luZm87IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgICAgICBjaSsrLCBjb21wcHRyKyspIHsNCisgICAgcmdyb3VwID0gKGNvbXBwdHItPnZfc2FtcF9mYWN0b3IgKiBjb21wcHRyLT5EQ1Rfc2NhbGVkX3NpemUpIC8NCisgICAgICBjaW5mby0+bWluX0RDVF9zY2FsZWRfc2l6ZTsgLyogaGVpZ2h0IG9mIGEgcm93IGdyb3VwIG9mIGNvbXBvbmVudCAqLw0KKyAgICBtYWluLT5idWZmZXJbY2ldID0gKCpjaW5mby0+bWVtLT5hbGxvY19zYXJyYXkpDQorCQkJKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkgY29tcHB0ci0+d2lkdGhfaW5fYmxvY2tzICogY29tcHB0ci0+RENUX3NjYWxlZF9zaXplLA0KKwkJCSAoSkRJTUVOU0lPTikgKHJncm91cCAqIG5ncm91cHMpKTsNCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRtYXJrZXIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkbWFya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBmMjEzOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkbWFya2VyLmMKQEAgLTAsMCArMSwxMzk2IEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamRtYXJrZXIuYw0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTgsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRvIGRlY29kZSBKUEVHIGRhdGFzdHJlYW0gbWFya2Vycy4NCisgKiBNb3N0IG9mIHRoZSBjb21wbGV4aXR5IGFyaXNlcyBmcm9tIG91ciBkZXNpcmUgdG8gc3VwcG9ydCBpbnB1dA0KKyAqIHN1c3BlbnNpb246IGlmIG5vdCBhbGwgb2YgdGhlIGRhdGEgZm9yIGEgbWFya2VyIGlzIGF2YWlsYWJsZSwNCisgKiB3ZSBtdXN0IGV4aXQgYmFjayB0byB0aGUgYXBwbGljYXRpb24uICBPbiByZXN1bXB0aW9uLCB3ZSByZXByb2Nlc3MNCisgKiB0aGUgbWFya2VyLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKw0KKw0KK3R5cGVkZWYgZW51bSB7CQkJLyogSlBFRyBtYXJrZXIgY29kZXMgKi8NCisgIE1fU09GMCAgPSAweGMwLA0KKyAgTV9TT0YxICA9IDB4YzEsDQorICBNX1NPRjIgID0gMHhjMiwNCisgIE1fU09GMyAgPSAweGMzLA0KKyAgDQorICBNX1NPRjUgID0gMHhjNSwNCisgIE1fU09GNiAgPSAweGM2LA0KKyAgTV9TT0Y3ICA9IDB4YzcsDQorICANCisgIE1fSlBHICAgPSAweGM4LA0KKyAgTV9TT0Y5ICA9IDB4YzksDQorICBNX1NPRjEwID0gMHhjYSwNCisgIE1fU09GMTEgPSAweGNiLA0KKyAgDQorICBNX1NPRjEzID0gMHhjZCwNCisgIE1fU09GMTQgPSAweGNlLA0KKyAgTV9TT0YxNSA9IDB4Y2YsDQorICANCisgIE1fREhUICAgPSAweGM0LA0KKyAgDQorICBNX0RBQyAgID0gMHhjYywNCisgIA0KKyAgTV9SU1QwICA9IDB4ZDAsDQorICBNX1JTVDEgID0gMHhkMSwNCisgIE1fUlNUMiAgPSAweGQyLA0KKyAgTV9SU1QzICA9IDB4ZDMsDQorICBNX1JTVDQgID0gMHhkNCwNCisgIE1fUlNUNSAgPSAweGQ1LA0KKyAgTV9SU1Q2ICA9IDB4ZDYsDQorICBNX1JTVDcgID0gMHhkNywNCisgIA0KKyAgTV9TT0kgICA9IDB4ZDgsDQorICBNX0VPSSAgID0gMHhkOSwNCisgIE1fU09TICAgPSAweGRhLA0KKyAgTV9EUVQgICA9IDB4ZGIsDQorICBNX0ROTCAgID0gMHhkYywNCisgIE1fRFJJICAgPSAweGRkLA0KKyAgTV9ESFAgICA9IDB4ZGUsDQorICBNX0VYUCAgID0gMHhkZiwNCisgIA0KKyAgTV9BUFAwICA9IDB4ZTAsDQorICBNX0FQUDEgID0gMHhlMSwNCisgIE1fQVBQMiAgPSAweGUyLA0KKyAgTV9BUFAzICA9IDB4ZTMsDQorICBNX0FQUDQgID0gMHhlNCwNCisgIE1fQVBQNSAgPSAweGU1LA0KKyAgTV9BUFA2ICA9IDB4ZTYsDQorICBNX0FQUDcgID0gMHhlNywNCisgIE1fQVBQOCAgPSAweGU4LA0KKyAgTV9BUFA5ICA9IDB4ZTksDQorICBNX0FQUDEwID0gMHhlYSwNCisgIE1fQVBQMTEgPSAweGViLA0KKyAgTV9BUFAxMiA9IDB4ZWMsDQorICBNX0FQUDEzID0gMHhlZCwNCisgIE1fQVBQMTQgPSAweGVlLA0KKyAgTV9BUFAxNSA9IDB4ZWYsDQorICANCisgIE1fSlBHMCAgPSAweGYwLA0KKyAgTV9KUEcxMyA9IDB4ZmQsDQorICBNX0NPTSAgID0gMHhmZSwNCisgIA0KKyAgTV9URU0gICA9IDB4MDEsDQorICANCisgIE1fRVJST1IgPSAweDEwMA0KK30gSlBFR19NQVJLRVI7DQorDQorDQorLyogUHJpdmF0ZSBzdGF0ZSAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIHN0cnVjdCBqcGVnX21hcmtlcl9yZWFkZXIgcHViOyAvKiBwdWJsaWMgZmllbGRzICovDQorDQorICAvKiBBcHBsaWNhdGlvbi1vdmVycmlkYWJsZSBtYXJrZXIgcHJvY2Vzc2luZyBtZXRob2RzICovDQorICBqcGVnX21hcmtlcl9wYXJzZXJfbWV0aG9kIHByb2Nlc3NfQ09NOw0KKyAganBlZ19tYXJrZXJfcGFyc2VyX21ldGhvZCBwcm9jZXNzX0FQUG5bMTZdOw0KKw0KKyAgLyogTGltaXQgb24gbWFya2VyIGRhdGEgbGVuZ3RoIHRvIHNhdmUgZm9yIGVhY2ggbWFya2VyIHR5cGUgKi8NCisgIHVuc2lnbmVkIGludCBsZW5ndGhfbGltaXRfQ09NOw0KKyAgdW5zaWduZWQgaW50IGxlbmd0aF9saW1pdF9BUFBuWzE2XTsNCisNCisgIC8qIFN0YXR1cyBvZiBDT00vQVBQbiBtYXJrZXIgc2F2aW5nICovDQorICBqcGVnX3NhdmVkX21hcmtlcl9wdHIgY3VyX21hcmtlcjsJLyogTlVMTCBpZiBub3QgcHJvY2Vzc2luZyBhIG1hcmtlciAqLw0KKyAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7CQkvKiBkYXRhIGJ5dGVzIHJlYWQgc28gZmFyIGluIG1hcmtlciAqLw0KKyAgLyogTm90ZTogY3VyX21hcmtlciBpcyBub3QgbGlua2VkIGludG8gbWFya2VyX2xpc3QgdW50aWwgaXQncyBhbGwgcmVhZC4gKi8NCit9IG15X21hcmtlcl9yZWFkZXI7DQorDQordHlwZWRlZiBteV9tYXJrZXJfcmVhZGVyICogbXlfbWFya2VyX3B0cjsNCisNCisNCisvKg0KKyAqIE1hY3JvcyBmb3IgZmV0Y2hpbmcgZGF0YSBmcm9tIHRoZSBkYXRhIHNvdXJjZSBtb2R1bGUuDQorICoNCisgKiBBdCBhbGwgdGltZXMsIGNpbmZvLT5zcmMtPm5leHRfaW5wdXRfYnl0ZSBhbmQgLT5ieXRlc19pbl9idWZmZXIgcmVmbGVjdA0KKyAqIHRoZSBjdXJyZW50IHJlc3RhcnQgcG9pbnQ7IHdlIHVwZGF0ZSB0aGVtIG9ubHkgd2hlbiB3ZSBoYXZlIHJlYWNoZWQgYQ0KKyAqIHN1aXRhYmxlIHBsYWNlIHRvIHJlc3RhcnQgaWYgYSBzdXNwZW5zaW9uIG9jY3Vycy4NCisgKi8NCisNCisvKiBEZWNsYXJlIGFuZCBpbml0aWFsaXplIGxvY2FsIGNvcGllcyBvZiBpbnB1dCBwb2ludGVyL2NvdW50ICovDQorI2RlZmluZSBJTlBVVF9WQVJTKGNpbmZvKSAgXA0KKwlzdHJ1Y3QganBlZ19zb3VyY2VfbWdyICogZGF0YXNyYyA9IChjaW5mbyktPnNyYzsgIFwNCisJY29uc3QgSk9DVEVUICogbmV4dF9pbnB1dF9ieXRlID0gZGF0YXNyYy0+bmV4dF9pbnB1dF9ieXRlOyAgXA0KKwlzaXplX3QgYnl0ZXNfaW5fYnVmZmVyID0gZGF0YXNyYy0+Ynl0ZXNfaW5fYnVmZmVyDQorDQorLyogVW5sb2FkIHRoZSBsb2NhbCBjb3BpZXMgLS0tIGRvIHRoaXMgb25seSBhdCBhIHJlc3RhcnQgYm91bmRhcnkgKi8NCisjZGVmaW5lIElOUFVUX1NZTkMoY2luZm8pICBcDQorCSggZGF0YXNyYy0+bmV4dF9pbnB1dF9ieXRlID0gbmV4dF9pbnB1dF9ieXRlLCAgXA0KKwkgIGRhdGFzcmMtPmJ5dGVzX2luX2J1ZmZlciA9IGJ5dGVzX2luX2J1ZmZlciApDQorDQorLyogUmVsb2FkIHRoZSBsb2NhbCBjb3BpZXMgLS0tIHVzZWQgb25seSBpbiBNQUtFX0JZVEVfQVZBSUwgKi8NCisjZGVmaW5lIElOUFVUX1JFTE9BRChjaW5mbykgIFwNCisJKCBuZXh0X2lucHV0X2J5dGUgPSBkYXRhc3JjLT5uZXh0X2lucHV0X2J5dGUsICBcDQorCSAgYnl0ZXNfaW5fYnVmZmVyID0gZGF0YXNyYy0+Ynl0ZXNfaW5fYnVmZmVyICkNCisNCisvKiBJbnRlcm5hbCBtYWNybyBmb3IgSU5QVVRfQllURSBhbmQgSU5QVVRfMkJZVEVTOiBtYWtlIGEgYnl0ZSBhdmFpbGFibGUuDQorICogTm90ZSB3ZSBkbyAqbm90KiBkbyBJTlBVVF9TWU5DIGJlZm9yZSBjYWxsaW5nIGZpbGxfaW5wdXRfYnVmZmVyLA0KKyAqIGJ1dCB3ZSBtdXN0IHJlbG9hZCB0aGUgbG9jYWwgY29waWVzIGFmdGVyIGEgc3VjY2Vzc2Z1bCBmaWxsLg0KKyAqLw0KKyNkZWZpbmUgTUFLRV9CWVRFX0FWQUlMKGNpbmZvLGFjdGlvbikgIFwNCisJaWYgKGJ5dGVzX2luX2J1ZmZlciA9PSAwKSB7ICBcDQorCSAgaWYgKCEgKCpkYXRhc3JjLT5maWxsX2lucHV0X2J1ZmZlcikgKGNpbmZvKSkgIFwNCisJICAgIHsgYWN0aW9uOyB9ICBcDQorCSAgSU5QVVRfUkVMT0FEKGNpbmZvKTsgIFwNCisJfQ0KKw0KKy8qIFJlYWQgYSBieXRlIGludG8gdmFyaWFibGUgVi4NCisgKiBJZiBtdXN0IHN1c3BlbmQsIHRha2UgdGhlIHNwZWNpZmllZCBhY3Rpb24gKHR5cGljYWxseSAicmV0dXJuIEZBTFNFIikuDQorICovDQorI2RlZmluZSBJTlBVVF9CWVRFKGNpbmZvLFYsYWN0aW9uKSAgXA0KKwlNQUtFU1RNVCggTUFLRV9CWVRFX0FWQUlMKGNpbmZvLGFjdGlvbik7IFwNCisJCSAgYnl0ZXNfaW5fYnVmZmVyLS07IFwNCisJCSAgViA9IEdFVEpPQ1RFVCgqbmV4dF9pbnB1dF9ieXRlKyspOyApDQorDQorLyogQXMgYWJvdmUsIGJ1dCByZWFkIHR3byBieXRlcyBpbnRlcnByZXRlZCBhcyBhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlci4NCisgKiBWIHNob3VsZCBiZSBkZWNsYXJlZCB1bnNpZ25lZCBpbnQgb3IgcGVyaGFwcyBJTlQzMi4NCisgKi8NCisjZGVmaW5lIElOUFVUXzJCWVRFUyhjaW5mbyxWLGFjdGlvbikgIFwNCisJTUFLRVNUTVQoIE1BS0VfQllURV9BVkFJTChjaW5mbyxhY3Rpb24pOyBcDQorCQkgIGJ5dGVzX2luX2J1ZmZlci0tOyBcDQorCQkgIFYgPSAoKHVuc2lnbmVkIGludCkgR0VUSk9DVEVUKCpuZXh0X2lucHV0X2J5dGUrKykpIDw8IDg7IFwNCisJCSAgTUFLRV9CWVRFX0FWQUlMKGNpbmZvLGFjdGlvbik7IFwNCisJCSAgYnl0ZXNfaW5fYnVmZmVyLS07IFwNCisJCSAgViArPSBHRVRKT0NURVQoKm5leHRfaW5wdXRfYnl0ZSsrKTsgKQ0KKw0KKw0KKy8qDQorICogUm91dGluZXMgdG8gcHJvY2VzcyBKUEVHIG1hcmtlcnMuDQorICoNCisgKiBFbnRyeSBjb25kaXRpb246IEpQRUcgbWFya2VyIGl0c2VsZiBoYXMgYmVlbiByZWFkIGFuZCBpdHMgY29kZSBzYXZlZA0KKyAqICAgaW4gY2luZm8tPnVucmVhZF9tYXJrZXI7IGlucHV0IHJlc3RhcnQgcG9pbnQgaXMganVzdCBhZnRlciB0aGUgbWFya2VyLg0KKyAqDQorICogRXhpdDogaWYgcmV0dXJuIFRSVUUsIGhhdmUgcmVhZCBhbmQgcHJvY2Vzc2VkIGFueSBwYXJhbWV0ZXJzLCBhbmQgaGF2ZQ0KKyAqICAgdXBkYXRlZCB0aGUgcmVzdGFydCBwb2ludCB0byBwb2ludCBhZnRlciB0aGUgcGFyYW1ldGVycy4NCisgKiAgIElmIHJldHVybiBGQUxTRSwgd2FzIGZvcmNlZCB0byBzdXNwZW5kIGJlZm9yZSByZWFjaGluZyBlbmQgb2YNCisgKiAgIG1hcmtlciBwYXJhbWV0ZXJzOyByZXN0YXJ0IHBvaW50IGhhcyBub3QgYmVlbiBtb3ZlZC4gIFNhbWUgcm91dGluZQ0KKyAqICAgd2lsbCBiZSBjYWxsZWQgYWdhaW4gYWZ0ZXIgYXBwbGljYXRpb24gc3VwcGxpZXMgbW9yZSBpbnB1dCBkYXRhLg0KKyAqDQorICogVGhpcyBhcHByb2FjaCB0byBzdXNwZW5zaW9uIGFzc3VtZXMgdGhhdCBhbGwgb2YgYSBtYXJrZXIncyBwYXJhbWV0ZXJzDQorICogY2FuIGZpdCBpbnRvIGEgc2luZ2xlIGlucHV0IGJ1ZmZlcmxvYWQuICBUaGlzIHNob3VsZCBob2xkIGZvciAibm9ybWFsIg0KKyAqIG1hcmtlcnMuICBTb21lIENPTS9BUFBuIG1hcmtlcnMgbWlnaHQgaGF2ZSBsYXJnZSBwYXJhbWV0ZXIgc2VnbWVudHMNCisgKiB0aGF0IG1pZ2h0IG5vdCBmaXQuICBJZiB3ZSBhcmUgc2ltcGx5IGRyb3BwaW5nIHN1Y2ggYSBtYXJrZXIsIHdlIHVzZQ0KKyAqIHNraXBfaW5wdXRfZGF0YSB0byBnZXQgcGFzdCBpdCwgYW5kIHRoZXJlYnkgcHV0IHRoZSBwcm9ibGVtIG9uIHRoZQ0KKyAqIHNvdXJjZSBtYW5hZ2VyJ3Mgc2hvdWxkZXJzLiAgSWYgd2UgYXJlIHNhdmluZyB0aGUgbWFya2VyJ3MgY29udGVudHMNCisgKiBpbnRvIG1lbW9yeSwgd2UgdXNlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGNvbnZlbnRpb246IHdoZW4gZm9yY2VkIHRvDQorICogc3VzcGVuZCwgdGhlIG1hcmtlciBwcm9jZXNzb3IgdXBkYXRlcyB0aGUgcmVzdGFydCBwb2ludCB0byB0aGUgZW5kIG9mDQorICogd2hhdCBpdCdzIGNvbnN1bWVkIChpZSwgdGhlIGVuZCBvZiB0aGUgYnVmZmVyKSBiZWZvcmUgcmV0dXJuaW5nIEZBTFNFLg0KKyAqIE9uIHJlc3VtcHRpb24sIGNpbmZvLT51bnJlYWRfbWFya2VyIHN0aWxsIGNvbnRhaW5zIHRoZSBtYXJrZXIgY29kZSwNCisgKiBidXQgdGhlIGRhdGEgc291cmNlIHdpbGwgcG9pbnQgdG8gdGhlIG5leHQgY2h1bmsgb2YgbWFya2VyIGRhdGEuDQorICogVGhlIG1hcmtlciBwcm9jZXNzb3IgbXVzdCByZXRhaW4gaW50ZXJuYWwgc3RhdGUgdG8gZGVhbCB3aXRoIHRoaXMuDQorICoNCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgYm90aGVyIHRvIGF2b2lkIGR1cGxpY2F0ZSB0cmFjZSBtZXNzYWdlcyBpZiBhDQorICogc3VzcGVuc2lvbiBvY2N1cnMgd2l0aGluIG1hcmtlciBwYXJhbWV0ZXJzLiAgT3RoZXIgc2lkZSBlZmZlY3RzDQorICogcmVxdWlyZSBtb3JlIGNhcmUuDQorICovDQorDQorDQorTE9DQUwoYm9vbGVhbikNCitnZXRfc29pIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIFByb2Nlc3MgYW4gU09JIG1hcmtlciAqLw0KK3sNCisgIGludCBpOw0KKyAgDQorICBUUkFDRU1TKGNpbmZvLCAxLCBKVFJDX1NPSSk7DQorDQorICBpZiAoY2luZm8tPm1hcmtlci0+c2F3X1NPSSkNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9TT0lfRFVQTElDQVRFKTsNCisNCisgIC8qIFJlc2V0IGFsbCBwYXJhbWV0ZXJzIHRoYXQgYXJlIGRlZmluZWQgdG8gYmUgcmVzZXQgYnkgU09JICovDQorDQorICBmb3IgKGkgPSAwOyBpIDwgTlVNX0FSSVRIX1RCTFM7IGkrKykgew0KKyAgICBjaW5mby0+YXJpdGhfZGNfTFtpXSA9IDA7DQorICAgIGNpbmZvLT5hcml0aF9kY19VW2ldID0gMTsNCisgICAgY2luZm8tPmFyaXRoX2FjX0tbaV0gPSA1Ow0KKyAgfQ0KKyAgY2luZm8tPnJlc3RhcnRfaW50ZXJ2YWwgPSAwOw0KKw0KKyAgLyogU2V0IGluaXRpYWwgYXNzdW1wdGlvbnMgZm9yIGNvbG9yc3BhY2UgZXRjICovDQorDQorICBjaW5mby0+anBlZ19jb2xvcl9zcGFjZSA9IEpDU19VTktOT1dOOw0KKyAgY2luZm8tPkNDSVI2MDFfc2FtcGxpbmcgPSBGQUxTRTsgLyogQXNzdW1lIG5vbi1DQ0lSIHNhbXBsaW5nPz8/ICovDQorDQorICBjaW5mby0+c2F3X0pGSUZfbWFya2VyID0gRkFMU0U7DQorICBjaW5mby0+SkZJRl9tYWpvcl92ZXJzaW9uID0gMTsgLyogc2V0IGRlZmF1bHQgSkZJRiBBUFAwIHZhbHVlcyAqLw0KKyAgY2luZm8tPkpGSUZfbWlub3JfdmVyc2lvbiA9IDE7DQorICBjaW5mby0+ZGVuc2l0eV91bml0ID0gMDsNCisgIGNpbmZvLT5YX2RlbnNpdHkgPSAxOw0KKyAgY2luZm8tPllfZGVuc2l0eSA9IDE7DQorICBjaW5mby0+c2F3X0Fkb2JlX21hcmtlciA9IEZBTFNFOw0KKyAgY2luZm8tPkFkb2JlX3RyYW5zZm9ybSA9IDA7DQorDQorICBjaW5mby0+bWFya2VyLT5zYXdfU09JID0gVFJVRTsNCisNCisgIHJldHVybiBUUlVFOw0KK30NCisNCisNCitMT0NBTChib29sZWFuKQ0KK2dldF9zb2YgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGJvb2xlYW4gaXNfcHJvZywgYm9vbGVhbiBpc19hcml0aCkNCisvKiBQcm9jZXNzIGEgU09GbiBtYXJrZXIgKi8NCit7DQorICBJTlQzMiBsZW5ndGg7DQorICBpbnQgYywgY2k7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisgIC8qIExpdVN1bmxpYW5nIGFkZGVkIDIwMTExMjA5ICovDQorICBKRElNRU5TSU9OIGltYWdlX3dpZHRoLCBpbWFnZV9oZWlnaHQ7DQorICBJTlBVVF9WQVJTKGNpbmZvKTsNCisNCisgIGNpbmZvLT5wcm9ncmVzc2l2ZV9tb2RlID0gaXNfcHJvZzsNCisgIGNpbmZvLT5hcml0aF9jb2RlID0gaXNfYXJpdGg7DQorDQorICBJTlBVVF8yQllURVMoY2luZm8sIGxlbmd0aCwgcmV0dXJuIEZBTFNFKTsNCisNCisgIElOUFVUX0JZVEUoY2luZm8sIGNpbmZvLT5kYXRhX3ByZWNpc2lvbiwgcmV0dXJuIEZBTFNFKTsNCisgIElOUFVUXzJCWVRFUyhjaW5mbywgaW1hZ2VfaGVpZ2h0LCByZXR1cm4gRkFMU0UpOw0KKyAgSU5QVVRfMkJZVEVTKGNpbmZvLCBpbWFnZV93aWR0aCwgcmV0dXJuIEZBTFNFKTsNCisgIElOUFVUX0JZVEUoY2luZm8sIGNpbmZvLT5udW1fY29tcG9uZW50cywgcmV0dXJuIEZBTFNFKTsNCisNCisgIGlmIChpbWFnZV93aWR0aCA8PSBKUEVHX01BWF9ESU1FTlNJT04pDQorCSAgY2luZm8tPmltYWdlX3dpZHRoID0gaW1hZ2Vfd2lkdGg7DQorIA0KKyAgaWYgKGltYWdlX2hlaWdodCA8PSBKUEVHX01BWF9ESU1FTlNJT04pDQorCSAgY2luZm8tPmltYWdlX2hlaWdodCA9IGltYWdlX2hlaWdodDsNCisNCisgIGxlbmd0aCAtPSA4Ow0KKw0KKyAgVFJBQ0VNUzQoY2luZm8sIDEsIEpUUkNfU09GLCBjaW5mby0+dW5yZWFkX21hcmtlciwNCisJICAgKGludCkgY2luZm8tPmltYWdlX3dpZHRoLCAoaW50KSBjaW5mby0+aW1hZ2VfaGVpZ2h0LA0KKwkgICBjaW5mby0+bnVtX2NvbXBvbmVudHMpOw0KKw0KKyAgaWYgKGNpbmZvLT5tYXJrZXItPnNhd19TT0YpDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfU09GX0RVUExJQ0FURSk7DQorDQorICAvKiBXZSBkb24ndCBzdXBwb3J0IGZpbGVzIGluIHdoaWNoIHRoZSBpbWFnZSBoZWlnaHQgaXMgaW5pdGlhbGx5IHNwZWNpZmllZCAqLw0KKyAgLyogYXMgMCBhbmQgaXMgbGF0ZXIgcmVkZWZpbmVkIGJ5IEROTC4gIEFzIGxvbmcgYXMgd2UgaGF2ZSB0byBjaGVjayB0aGF0LCAgKi8NCisgIC8qIG1pZ2h0IGFzIHdlbGwgaGF2ZSBhIGdlbmVyYWwgc2FuaXR5IGNoZWNrLiAqLw0KKyAgaWYgKGNpbmZvLT5pbWFnZV9oZWlnaHQgPD0gMCB8fCBjaW5mby0+aW1hZ2Vfd2lkdGggPD0gMA0KKyAgICAgIHx8IGNpbmZvLT5udW1fY29tcG9uZW50cyA8PSAwKQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0VNUFRZX0lNQUdFKTsNCisNCisgIGlmIChsZW5ndGggIT0gKGNpbmZvLT5udW1fY29tcG9uZW50cyAqIDMpKQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9MRU5HVEgpOw0KKw0KKyAgaWYgKGNpbmZvLT5jb21wX2luZm8gPT0gTlVMTCkJLyogZG8gb25seSBvbmNlLCBldmVuIGlmIHN1c3BlbmQgKi8NCisgICAgY2luZm8tPmNvbXBfaW5mbyA9IChqcGVnX2NvbXBvbmVudF9pbmZvICopICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpDQorCQkJKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkgY2luZm8tPm51bV9jb21wb25lbnRzICogU0laRU9GKGpwZWdfY29tcG9uZW50X2luZm8pKTsNCisgIA0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIGNvbXBwdHItPmNvbXBvbmVudF9pbmRleCA9IGNpOw0KKyAgICBJTlBVVF9CWVRFKGNpbmZvLCBjb21wcHRyLT5jb21wb25lbnRfaWQsIHJldHVybiBGQUxTRSk7DQorCS8qIFhZUSAyMDA4LTAzLTI1OiBBZG9iZSBDTVlLIEpQRUcgaGFzIHNlcmlvdXMgZmxhdzogdGhlIEsgY2hhbm5lbCBoYXMgc2FtZSBjb21wb25lbnQgaWQgYXMgQyBjaGFubmVsICovDQorCXsNCisJCWludCBpOw0KKwkJZm9yIChpID0gMDsgaSA8IGNpOyBpICsrKQ0KKwkJCWlmIChjb21wcHRyLT5jb21wb25lbnRfaWQgPT0gY2luZm8tPmNvbXBfaW5mb1tpXS5jb21wb25lbnRfaWQpIGJyZWFrOw0KKwkJaWYgKGkgPCBjaSkNCisJCQkvKiBGb3VuZCB0aGUgZXJyb3IhIFdlIHJlcGxhY2UgdGhlIGlkIHdpdGggc29tZXRoaW5nIHVubGlrZWx5IHVzZWQgZWxzZXdoZXJlICovDQorCQkJY29tcHB0ci0+Y29tcG9uZW50X2lkICs9IDB4ZjA7DQorCX0NCisJLyogZW5kIG9mIG1vZGlmaWNhdGlvbiAqLw0KKyAgICBJTlBVVF9CWVRFKGNpbmZvLCBjLCByZXR1cm4gRkFMU0UpOw0KKyAgICBjb21wcHRyLT5oX3NhbXBfZmFjdG9yID0gKGMgPj4gNCkgJiAxNTsNCisgICAgY29tcHB0ci0+dl9zYW1wX2ZhY3RvciA9IChjICAgICApICYgMTU7DQorICAgIElOUFVUX0JZVEUoY2luZm8sIGNvbXBwdHItPnF1YW50X3RibF9ubywgcmV0dXJuIEZBTFNFKTsNCisNCisgICAgVFJBQ0VNUzQoY2luZm8sIDEsIEpUUkNfU09GX0NPTVBPTkVOVCwNCisJICAgICBjb21wcHRyLT5jb21wb25lbnRfaWQsIGNvbXBwdHItPmhfc2FtcF9mYWN0b3IsDQorCSAgICAgY29tcHB0ci0+dl9zYW1wX2ZhY3RvciwgY29tcHB0ci0+cXVhbnRfdGJsX25vKTsNCisgIH0NCisNCisgIGNpbmZvLT5tYXJrZXItPnNhd19TT0YgPSBUUlVFOw0KKw0KKyAgSU5QVVRfU1lOQyhjaW5mbyk7DQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorTE9DQUwoYm9vbGVhbikNCitnZXRfc29zIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIFByb2Nlc3MgYSBTT1MgbWFya2VyICovDQorew0KKyAgSU5UMzIgbGVuZ3RoOw0KKyAgaW50IGksIGNpLCBuLCBjLCBjYzsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyOw0KKyAgSU5QVVRfVkFSUyhjaW5mbyk7DQorDQorICBpZiAoISBjaW5mby0+bWFya2VyLT5zYXdfU09GKQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX1NPU19OT19TT0YpOw0KKw0KKyAgSU5QVVRfMkJZVEVTKGNpbmZvLCBsZW5ndGgsIHJldHVybiBGQUxTRSk7DQorDQorICBJTlBVVF9CWVRFKGNpbmZvLCBuLCByZXR1cm4gRkFMU0UpOyAvKiBOdW1iZXIgb2YgY29tcG9uZW50cyAqLw0KKw0KKyAgVFJBQ0VNUzEoY2luZm8sIDEsIEpUUkNfU09TLCBuKTsNCisNCisgIGlmIChsZW5ndGggIT0gKG4gKiAyICsgNikgfHwgbiA8IDEgfHwgbiA+IE1BWF9DT01QU19JTl9TQ0FOKQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9MRU5HVEgpOw0KKw0KKyAgY2luZm8tPmNvbXBzX2luX3NjYW4gPSBuOw0KKw0KKyAgLyogQ29sbGVjdCB0aGUgY29tcG9uZW50LXNwZWMgcGFyYW1ldGVycyAqLw0KKw0KKyAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgew0KKyAgICBJTlBVVF9CWVRFKGNpbmZvLCBjYywgcmV0dXJuIEZBTFNFKTsNCisgICAgSU5QVVRfQllURShjaW5mbywgYywgcmV0dXJuIEZBTFNFKTsNCisgICAgDQorCS8qIFhZUSAyMDA4LTAzLTI1OiBBZG9iZSBDTVlLIEpQRUcgaGFzIHNlcmlvdXMgZmxhdzogdGhlIEsgY2hhbm5lbCBoYXMgc2FtZSBjb21wb25lbnQgaWQgYXMgQyBjaGFubmVsICovDQorCXsNCisJCWludCBqOw0KKwkJZm9yIChqID0gMDsgaiA8IGk7IGogKyspDQorCQkJaWYgKGNjID09IGNpbmZvLT5jdXJfY29tcF9pbmZvW2pdLT5jb21wb25lbnRfaWQpIGJyZWFrOw0KKwkJaWYgKGogPCBpKQ0KKwkJCS8qIGZvdW5kIHRoZSBlcnJvciEgKi8NCisJCQljYyArPSAweGYwOw0KKwl9DQorCS8qIGVuZCBvZiBtb2RpZmljYXRpb24gKi8NCisgICAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisJIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICAgIGlmIChjYyA9PSBjb21wcHRyLT5jb21wb25lbnRfaWQpDQorCWdvdG8gaWRfZm91bmQ7DQorICAgIH0NCisNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX0NPTVBPTkVOVF9JRCwgY2MpOw0KKw0KKyAgaWRfZm91bmQ6DQorDQorICAgIGNpbmZvLT5jdXJfY29tcF9pbmZvW2ldID0gY29tcHB0cjsNCisgICAgY29tcHB0ci0+ZGNfdGJsX25vID0gKGMgPj4gNCkgJiAxNTsNCisgICAgY29tcHB0ci0+YWNfdGJsX25vID0gKGMgICAgICkgJiAxNTsNCisgICAgDQorICAgIFRSQUNFTVMzKGNpbmZvLCAxLCBKVFJDX1NPU19DT01QT05FTlQsIGNjLA0KKwkgICAgIGNvbXBwdHItPmRjX3RibF9ubywgY29tcHB0ci0+YWNfdGJsX25vKTsNCisJLyogVGhpcyBDU2kgKGNjKSBzaG91bGQgZGlmZmVyIGZyb20gdGhlIHByZXZpb3VzIENTaSAqLw0KKyAgICBmb3IgKGNpID0gMDsgY2kgPCBpOyBjaSsrKSB7DQorICAgICAgaWYgKGNpbmZvLT5jdXJfY29tcF9pbmZvW2NpXSA9PSBjb21wcHRyKQ0KKyAgICAgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX0NPTVBPTkVOVF9JRCwgY2MpOw0KKyAgICB9DQorICB9DQorDQorICAvKiBDb2xsZWN0IHRoZSBhZGRpdGlvbmFsIHNjYW4gcGFyYW1ldGVycyBTcywgU2UsIEFoL0FsLiAqLw0KKyAgSU5QVVRfQllURShjaW5mbywgYywgcmV0dXJuIEZBTFNFKTsNCisgIGNpbmZvLT5TcyA9IGM7DQorICBJTlBVVF9CWVRFKGNpbmZvLCBjLCByZXR1cm4gRkFMU0UpOw0KKyAgY2luZm8tPlNlID0gYzsNCisgIElOUFVUX0JZVEUoY2luZm8sIGMsIHJldHVybiBGQUxTRSk7DQorICBjaW5mby0+QWggPSAoYyA+PiA0KSAmIDE1Ow0KKyAgY2luZm8tPkFsID0gKGMgICAgICkgJiAxNTsNCisNCisgIFRSQUNFTVM0KGNpbmZvLCAxLCBKVFJDX1NPU19QQVJBTVMsIGNpbmZvLT5TcywgY2luZm8tPlNlLA0KKwkgICBjaW5mby0+QWgsIGNpbmZvLT5BbCk7DQorDQorICAvKiBQcmVwYXJlIHRvIHNjYW4gZGF0YSAmIHJlc3RhcnQgbWFya2VycyAqLw0KKyAgY2luZm8tPm1hcmtlci0+bmV4dF9yZXN0YXJ0X251bSA9IDA7DQorDQorICAvKiBDb3VudCBhbm90aGVyIFNPUyBtYXJrZXIgKi8NCisgIGNpbmZvLT5pbnB1dF9zY2FuX251bWJlcisrOw0KKw0KKyAgSU5QVVRfU1lOQyhjaW5mbyk7DQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorI2lmZGVmIERfQVJJVEhfQ09ESU5HX1NVUFBPUlRFRA0KKw0KK0xPQ0FMKGJvb2xlYW4pDQorZ2V0X2RhYyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCisvKiBQcm9jZXNzIGEgREFDIG1hcmtlciAqLw0KK3sNCisgIElOVDMyIGxlbmd0aDsNCisgIGludCBpbmRleCwgdmFsOw0KKyAgSU5QVVRfVkFSUyhjaW5mbyk7DQorDQorICBJTlBVVF8yQllURVMoY2luZm8sIGxlbmd0aCwgcmV0dXJuIEZBTFNFKTsNCisgIGxlbmd0aCAtPSAyOw0KKyAgDQorICB3aGlsZSAobGVuZ3RoID4gMCkgew0KKyAgICBJTlBVVF9CWVRFKGNpbmZvLCBpbmRleCwgcmV0dXJuIEZBTFNFKTsNCisgICAgSU5QVVRfQllURShjaW5mbywgdmFsLCByZXR1cm4gRkFMU0UpOw0KKw0KKyAgICBsZW5ndGggLT0gMjsNCisNCisgICAgVFJBQ0VNUzIoY2luZm8sIDEsIEpUUkNfREFDLCBpbmRleCwgdmFsKTsNCisNCisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSAoMipOVU1fQVJJVEhfVEJMUykpDQorICAgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfREFDX0lOREVYLCBpbmRleCk7DQorDQorICAgIGlmIChpbmRleCA+PSBOVU1fQVJJVEhfVEJMUykgeyAvKiBkZWZpbmUgQUMgdGFibGUgKi8NCisgICAgICBjaW5mby0+YXJpdGhfYWNfS1tpbmRleC1OVU1fQVJJVEhfVEJMU10gPSAoVUlOVDgpIHZhbDsNCisgICAgfSBlbHNlIHsJCQkvKiBkZWZpbmUgREMgdGFibGUgKi8NCisgICAgICBjaW5mby0+YXJpdGhfZGNfTFtpbmRleF0gPSAoVUlOVDgpICh2YWwgJiAweDBGKTsNCisgICAgICBjaW5mby0+YXJpdGhfZGNfVVtpbmRleF0gPSAoVUlOVDgpICh2YWwgPj4gNCk7DQorICAgICAgaWYgKGNpbmZvLT5hcml0aF9kY19MW2luZGV4XSA+IGNpbmZvLT5hcml0aF9kY19VW2luZGV4XSkNCisJRVJSRVhJVDEoY2luZm8sIEpFUlJfREFDX1ZBTFVFLCB2YWwpOw0KKyAgICB9DQorICB9DQorDQorICBpZiAobGVuZ3RoICE9IDApDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0xFTkdUSCk7DQorDQorICBJTlBVVF9TWU5DKGNpbmZvKTsNCisgIHJldHVybiBUUlVFOw0KK30NCisNCisjZWxzZSAvKiAhIERfQVJJVEhfQ09ESU5HX1NVUFBPUlRFRCAqLw0KKw0KKyNkZWZpbmUgZ2V0X2RhYyhjaW5mbykgIHNraXBfdmFyaWFibGUoY2luZm8pDQorDQorI2VuZGlmIC8qIERfQVJJVEhfQ09ESU5HX1NVUFBPUlRFRCAqLw0KKw0KKw0KK0xPQ0FMKGJvb2xlYW4pDQorZ2V0X2RodCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCisvKiBQcm9jZXNzIGEgREhUIG1hcmtlciAqLw0KK3sNCisgIElOVDMyIGxlbmd0aDsNCisgIFVJTlQ4IGJpdHNbMTddOw0KKyAgVUlOVDggaHVmZnZhbFsyNTZdOw0KKyAgaW50IGksIGluZGV4LCBjb3VudDsNCisgIEpIVUZGX1RCTCAqKmh0YmxwdHI7DQorICBJTlBVVF9WQVJTKGNpbmZvKTsNCisNCisgIElOUFVUXzJCWVRFUyhjaW5mbywgbGVuZ3RoLCByZXR1cm4gRkFMU0UpOw0KKyAgbGVuZ3RoIC09IDI7DQorICANCisgIHdoaWxlIChsZW5ndGggPiAxNikgew0KKyAgICBJTlBVVF9CWVRFKGNpbmZvLCBpbmRleCwgcmV0dXJuIEZBTFNFKTsNCisNCisgICAgVFJBQ0VNUzEoY2luZm8sIDEsIEpUUkNfREhULCBpbmRleCk7DQorICAgICAgDQorICAgIGJpdHNbMF0gPSAwOw0KKyAgICBjb3VudCA9IDA7DQorICAgIGZvciAoaSA9IDE7IGkgPD0gMTY7IGkrKykgew0KKyAgICAgIElOUFVUX0JZVEUoY2luZm8sIGJpdHNbaV0sIHJldHVybiBGQUxTRSk7DQorICAgICAgY291bnQgKz0gYml0c1tpXTsNCisgICAgfQ0KKw0KKyAgICBsZW5ndGggLT0gMSArIDE2Ow0KKw0KKyAgICBUUkFDRU1TOChjaW5mbywgMiwgSlRSQ19IVUZGQklUUywNCisJICAgICBiaXRzWzFdLCBiaXRzWzJdLCBiaXRzWzNdLCBiaXRzWzRdLA0KKwkgICAgIGJpdHNbNV0sIGJpdHNbNl0sIGJpdHNbN10sIGJpdHNbOF0pOw0KKyAgICBUUkFDRU1TOChjaW5mbywgMiwgSlRSQ19IVUZGQklUUywNCisJICAgICBiaXRzWzldLCBiaXRzWzEwXSwgYml0c1sxMV0sIGJpdHNbMTJdLA0KKwkgICAgIGJpdHNbMTNdLCBiaXRzWzE0XSwgYml0c1sxNV0sIGJpdHNbMTZdKTsNCisNCisgICAgLyogSGVyZSB3ZSBqdXN0IGRvIG1pbmltYWwgdmFsaWRhdGlvbiBvZiB0aGUgY291bnRzIHRvIGF2b2lkIHdhbGtpbmcNCisgICAgICogb2ZmIHRoZSBlbmQgb2Ygb3VyIHRhYmxlIHNwYWNlLiAgamRodWZmLmMgd2lsbCBjaGVjayBtb3JlIGNhcmVmdWxseS4NCisgICAgICovDQorICAgIGlmIChjb3VudCA+IDI1NiB8fCAoKElOVDMyKSBjb3VudCkgPiBsZW5ndGgpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfSFVGRl9UQUJMRSk7DQorDQorICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQ0KKyAgICAgIElOUFVUX0JZVEUoY2luZm8sIGh1ZmZ2YWxbaV0sIHJldHVybiBGQUxTRSk7DQorDQorICAgIGxlbmd0aCAtPSBjb3VudDsNCisNCisgICAgaWYgKGluZGV4ICYgMHgxMCkgewkJLyogQUMgdGFibGUgZGVmaW5pdGlvbiAqLw0KKyAgICAgIGluZGV4IC09IDB4MTA7DQorICAgICAgaHRibHB0ciA9ICZjaW5mby0+YWNfaHVmZl90YmxfcHRyc1tpbmRleF07DQorICAgIH0gZWxzZSB7CQkJLyogREMgdGFibGUgZGVmaW5pdGlvbiAqLw0KKyAgICAgIGh0YmxwdHIgPSAmY2luZm8tPmRjX2h1ZmZfdGJsX3B0cnNbaW5kZXhdOw0KKyAgICB9DQorDQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gTlVNX0hVRkZfVEJMUykNCisgICAgICBFUlJFWElUMShjaW5mbywgSkVSUl9ESFRfSU5ERVgsIGluZGV4KTsNCisNCisgICAgaWYgKCpodGJscHRyID09IE5VTEwpDQorICAgICAgKmh0YmxwdHIgPSBqcGVnX2FsbG9jX2h1ZmZfdGFibGUoKGpfY29tbW9uX3B0cikgY2luZm8pOw0KKyAgDQorICAgIE1FTUNPUFkoKCpodGJscHRyKS0+Yml0cywgYml0cywgU0laRU9GKCgqaHRibHB0ciktPmJpdHMpKTsNCisgICAgTUVNQ09QWSgoKmh0YmxwdHIpLT5odWZmdmFsLCBodWZmdmFsLCBTSVpFT0YoKCpodGJscHRyKS0+aHVmZnZhbCkpOw0KKyAgfQ0KKw0KKyAgaWYgKGxlbmd0aCAhPSAwKQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9MRU5HVEgpOw0KKw0KKyAgSU5QVVRfU1lOQyhjaW5mbyk7DQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorTE9DQUwoYm9vbGVhbikNCitnZXRfZHF0IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIFByb2Nlc3MgYSBEUVQgbWFya2VyICovDQorew0KKyAgSU5UMzIgbGVuZ3RoOw0KKyAgaW50IG4sIGksIHByZWM7DQorICB1bnNpZ25lZCBpbnQgdG1wOw0KKyAgSlFVQU5UX1RCTCAqcXVhbnRfcHRyOw0KKyAgSU5QVVRfVkFSUyhjaW5mbyk7DQorDQorICBJTlBVVF8yQllURVMoY2luZm8sIGxlbmd0aCwgcmV0dXJuIEZBTFNFKTsNCisgIGxlbmd0aCAtPSAyOw0KKw0KKyAgd2hpbGUgKGxlbmd0aCA+IDApIHsNCisgICAgSU5QVVRfQllURShjaW5mbywgbiwgcmV0dXJuIEZBTFNFKTsNCisgICAgcHJlYyA9IG4gPj4gNDsNCisgICAgbiAmPSAweDBGOw0KKw0KKyAgICBUUkFDRU1TMihjaW5mbywgMSwgSlRSQ19EUVQsIG4sIHByZWMpOw0KKw0KKyAgICBpZiAobiA+PSBOVU1fUVVBTlRfVEJMUykNCisgICAgICBFUlJFWElUMShjaW5mbywgSkVSUl9EUVRfSU5ERVgsIG4pOw0KKyAgICAgIA0KKyAgICBpZiAoY2luZm8tPnF1YW50X3RibF9wdHJzW25dID09IE5VTEwpDQorICAgICAgY2luZm8tPnF1YW50X3RibF9wdHJzW25dID0ganBlZ19hbGxvY19xdWFudF90YWJsZSgoal9jb21tb25fcHRyKSBjaW5mbyk7DQorICAgIHF1YW50X3B0ciA9IGNpbmZvLT5xdWFudF90YmxfcHRyc1tuXTsNCisNCisgICAgZm9yIChpID0gMDsgaSA8IERDVFNJWkUyOyBpKyspIHsNCisgICAgICBpZiAocHJlYykNCisJSU5QVVRfMkJZVEVTKGNpbmZvLCB0bXAsIHJldHVybiBGQUxTRSk7DQorICAgICAgZWxzZQ0KKwlJTlBVVF9CWVRFKGNpbmZvLCB0bXAsIHJldHVybiBGQUxTRSk7DQorICAgICAgLyogV2UgY29udmVydCB0aGUgemlnemFnLW9yZGVyIHRhYmxlIHRvIG5hdHVyYWwgYXJyYXkgb3JkZXIuICovDQorICAgICAgcXVhbnRfcHRyLT5xdWFudHZhbFtqcGVnX25hdHVyYWxfb3JkZXJbaV1dID0gKFVJTlQxNikgdG1wOw0KKyAgICB9DQorDQorICAgIGlmIChjaW5mby0+ZXJyLT50cmFjZV9sZXZlbCA+PSAyKSB7DQorICAgICAgZm9yIChpID0gMDsgaSA8IERDVFNJWkUyOyBpICs9IDgpIHsNCisJVFJBQ0VNUzgoY2luZm8sIDIsIEpUUkNfUVVBTlRWQUxTLA0KKwkJIHF1YW50X3B0ci0+cXVhbnR2YWxbaV0sICAgcXVhbnRfcHRyLT5xdWFudHZhbFtpKzFdLA0KKwkJIHF1YW50X3B0ci0+cXVhbnR2YWxbaSsyXSwgcXVhbnRfcHRyLT5xdWFudHZhbFtpKzNdLA0KKwkJIHF1YW50X3B0ci0+cXVhbnR2YWxbaSs0XSwgcXVhbnRfcHRyLT5xdWFudHZhbFtpKzVdLA0KKwkJIHF1YW50X3B0ci0+cXVhbnR2YWxbaSs2XSwgcXVhbnRfcHRyLT5xdWFudHZhbFtpKzddKTsNCisgICAgICB9DQorICAgIH0NCisNCisgICAgbGVuZ3RoIC09IERDVFNJWkUyKzE7DQorICAgIGlmIChwcmVjKSBsZW5ndGggLT0gRENUU0laRTI7DQorICB9DQorDQorICBpZiAobGVuZ3RoICE9IDApDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0xFTkdUSCk7DQorDQorICBJTlBVVF9TWU5DKGNpbmZvKTsNCisgIHJldHVybiBUUlVFOw0KK30NCisNCisNCitMT0NBTChib29sZWFuKQ0KK2dldF9kcmkgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorLyogUHJvY2VzcyBhIERSSSBtYXJrZXIgKi8NCit7DQorICBJTlQzMiBsZW5ndGg7DQorICB1bnNpZ25lZCBpbnQgdG1wOw0KKyAgSU5QVVRfVkFSUyhjaW5mbyk7DQorDQorICBJTlBVVF8yQllURVMoY2luZm8sIGxlbmd0aCwgcmV0dXJuIEZBTFNFKTsNCisgIA0KKyAgaWYgKGxlbmd0aCAhPSA0KQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9MRU5HVEgpOw0KKw0KKyAgSU5QVVRfMkJZVEVTKGNpbmZvLCB0bXAsIHJldHVybiBGQUxTRSk7DQorDQorICBUUkFDRU1TMShjaW5mbywgMSwgSlRSQ19EUkksIHRtcCk7DQorDQorICBjaW5mby0+cmVzdGFydF9pbnRlcnZhbCA9IHRtcDsNCisNCisgIElOUFVUX1NZTkMoY2luZm8pOw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKw0KKy8qDQorICogUm91dGluZXMgZm9yIHByb2Nlc3NpbmcgQVBQbiBhbmQgQ09NIG1hcmtlcnMuDQorICogVGhlc2UgYXJlIGVpdGhlciBzYXZlZCBpbiBtZW1vcnkgb3IgZGlzY2FyZGVkLCBwZXIgYXBwbGljYXRpb24gcmVxdWVzdC4NCisgKiBBUFAwIGFuZCBBUFAxNCBhcmUgc3BlY2lhbGx5IGNoZWNrZWQgdG8gc2VlIGlmIHRoZXkgYXJlDQorICogSkZJRiBhbmQgQWRvYmUgbWFya2VycywgcmVzcGVjdGl2ZWx5Lg0KKyAqLw0KKw0KKyNkZWZpbmUgQVBQMF9EQVRBX0xFTgkxNAkvKiBMZW5ndGggb2YgaW50ZXJlc3RpbmcgZGF0YSBpbiBBUFAwICovDQorI2RlZmluZSBBUFAxNF9EQVRBX0xFTgkxMgkvKiBMZW5ndGggb2YgaW50ZXJlc3RpbmcgZGF0YSBpbiBBUFAxNCAqLw0KKyNkZWZpbmUgQVBQTl9EQVRBX0xFTgkxNAkvKiBNdXN0IGJlIHRoZSBsYXJnZXN0IG9mIHRoZSBhYm92ZSEhICovDQorDQorDQorTE9DQUwodm9pZCkNCitleGFtaW5lX2FwcDAgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpPQ1RFVCBGQVIgKiBkYXRhLA0KKwkgICAgICB1bnNpZ25lZCBpbnQgZGF0YWxlbiwgSU5UMzIgcmVtYWluaW5nKQ0KKy8qIEV4YW1pbmUgZmlyc3QgZmV3IGJ5dGVzIGZyb20gYW4gQVBQMC4NCisgKiBUYWtlIGFwcHJvcHJpYXRlIGFjdGlvbiBpZiBpdCBpcyBhIEpGSUYgbWFya2VyLg0KKyAqIGRhdGFsZW4gaXMgIyBvZiBieXRlcyBhdCBkYXRhW10sIHJlbWFpbmluZyBpcyBsZW5ndGggb2YgcmVzdCBvZiBtYXJrZXIgZGF0YS4NCisgKi8NCit7DQorICBJTlQzMiB0b3RhbGxlbiA9IChJTlQzMikgZGF0YWxlbiArIHJlbWFpbmluZzsNCisNCisgIGlmIChkYXRhbGVuID49IEFQUDBfREFUQV9MRU4gJiYNCisgICAgICBHRVRKT0NURVQoZGF0YVswXSkgPT0gMHg0QSAmJg0KKyAgICAgIEdFVEpPQ1RFVChkYXRhWzFdKSA9PSAweDQ2ICYmDQorICAgICAgR0VUSk9DVEVUKGRhdGFbMl0pID09IDB4NDkgJiYNCisgICAgICBHRVRKT0NURVQoZGF0YVszXSkgPT0gMHg0NiAmJg0KKyAgICAgIEdFVEpPQ1RFVChkYXRhWzRdKSA9PSAwKSB7DQorICAgIC8qIEZvdW5kIEpGSUYgQVBQMCBtYXJrZXI6IHNhdmUgaW5mbyAqLw0KKyAgICBjaW5mby0+c2F3X0pGSUZfbWFya2VyID0gVFJVRTsNCisgICAgY2luZm8tPkpGSUZfbWFqb3JfdmVyc2lvbiA9IEdFVEpPQ1RFVChkYXRhWzVdKTsNCisgICAgY2luZm8tPkpGSUZfbWlub3JfdmVyc2lvbiA9IEdFVEpPQ1RFVChkYXRhWzZdKTsNCisgICAgY2luZm8tPmRlbnNpdHlfdW5pdCA9IEdFVEpPQ1RFVChkYXRhWzddKTsNCisgICAgY2luZm8tPlhfZGVuc2l0eSA9IChHRVRKT0NURVQoZGF0YVs4XSkgPDwgOCkgKyBHRVRKT0NURVQoZGF0YVs5XSk7DQorICAgIGNpbmZvLT5ZX2RlbnNpdHkgPSAoR0VUSk9DVEVUKGRhdGFbMTBdKSA8PCA4KSArIEdFVEpPQ1RFVChkYXRhWzExXSk7DQorICAgIC8qIENoZWNrIHZlcnNpb24uDQorICAgICAqIE1ham9yIHZlcnNpb24gbXVzdCBiZSAxLCBhbnl0aGluZyBlbHNlIHNpZ25hbHMgYW4gaW5jb21wYXRpYmxlIGNoYW5nZS4NCisgICAgICogKFdlIHVzZWQgdG8gdHJlYXQgdGhpcyBhcyBhbiBlcnJvciwgYnV0IG5vdyBpdCdzIGEgbm9uZmF0YWwgd2FybmluZywNCisgICAgICogYmVjYXVzZSBzb21lIGJvem8gYXQgSGlqYWFrIGNvdWxkbid0IHJlYWQgdGhlIHNwZWMuKQ0KKyAgICAgKiBNaW5vciB2ZXJzaW9uIHNob3VsZCBiZSAwLi4yLCBidXQgcHJvY2VzcyBhbnl3YXkgaWYgbmV3ZXIuDQorICAgICAqLw0KKyAgICBpZiAoY2luZm8tPkpGSUZfbWFqb3JfdmVyc2lvbiAhPSAxKQ0KKyAgICAgIFdBUk5NUzIoY2luZm8sIEpXUk5fSkZJRl9NQUpPUiwNCisJICAgICAgY2luZm8tPkpGSUZfbWFqb3JfdmVyc2lvbiwgY2luZm8tPkpGSUZfbWlub3JfdmVyc2lvbik7DQorICAgIC8qIEdlbmVyYXRlIHRyYWNlIG1lc3NhZ2VzICovDQorICAgIFRSQUNFTVM1KGNpbmZvLCAxLCBKVFJDX0pGSUYsDQorCSAgICAgY2luZm8tPkpGSUZfbWFqb3JfdmVyc2lvbiwgY2luZm8tPkpGSUZfbWlub3JfdmVyc2lvbiwNCisJICAgICBjaW5mby0+WF9kZW5zaXR5LCBjaW5mby0+WV9kZW5zaXR5LCBjaW5mby0+ZGVuc2l0eV91bml0KTsNCisgICAgLyogVmFsaWRhdGUgdGh1bWJuYWlsIGRpbWVuc2lvbnMgYW5kIGlzc3VlIGFwcHJvcHJpYXRlIG1lc3NhZ2VzICovDQorICAgIGlmIChHRVRKT0NURVQoZGF0YVsxMl0pIHwgR0VUSk9DVEVUKGRhdGFbMTNdKSkNCisgICAgICBUUkFDRU1TMihjaW5mbywgMSwgSlRSQ19KRklGX1RIVU1CTkFJTCwNCisJICAgICAgIEdFVEpPQ1RFVChkYXRhWzEyXSksIEdFVEpPQ1RFVChkYXRhWzEzXSkpOw0KKyAgICB0b3RhbGxlbiAtPSBBUFAwX0RBVEFfTEVOOw0KKyAgICBpZiAodG90YWxsZW4gIT0NCisJKChJTlQzMilHRVRKT0NURVQoZGF0YVsxMl0pICogKElOVDMyKUdFVEpPQ1RFVChkYXRhWzEzXSkgKiAoSU5UMzIpIDMpKQ0KKyAgICAgIFRSQUNFTVMxKGNpbmZvLCAxLCBKVFJDX0pGSUZfQkFEVEhVTUJOQUlMU0laRSwgKGludCkgdG90YWxsZW4pOw0KKyAgfSBlbHNlIGlmIChkYXRhbGVuID49IDYgJiYNCisgICAgICBHRVRKT0NURVQoZGF0YVswXSkgPT0gMHg0QSAmJg0KKyAgICAgIEdFVEpPQ1RFVChkYXRhWzFdKSA9PSAweDQ2ICYmDQorICAgICAgR0VUSk9DVEVUKGRhdGFbMl0pID09IDB4NTggJiYNCisgICAgICBHRVRKT0NURVQoZGF0YVszXSkgPT0gMHg1OCAmJg0KKyAgICAgIEdFVEpPQ1RFVChkYXRhWzRdKSA9PSAwKSB7DQorICAgIC8qIEZvdW5kIEpGSUYgIkpGWFgiIGV4dGVuc2lvbiBBUFAwIG1hcmtlciAqLw0KKyAgICAvKiBUaGUgbGlicmFyeSBkb2Vzbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIHdpdGggdGhlc2UsDQorICAgICAqIGJ1dCB3ZSB0cnkgdG8gcHJvZHVjZSBhIGhlbHBmdWwgdHJhY2UgbWVzc2FnZS4NCisgICAgICovDQorICAgIHN3aXRjaCAoR0VUSk9DVEVUKGRhdGFbNV0pKSB7DQorICAgIGNhc2UgMHgxMDoNCisgICAgICBUUkFDRU1TMShjaW5mbywgMSwgSlRSQ19USFVNQl9KUEVHLCAoaW50KSB0b3RhbGxlbik7DQorICAgICAgYnJlYWs7DQorICAgIGNhc2UgMHgxMToNCisgICAgICBUUkFDRU1TMShjaW5mbywgMSwgSlRSQ19USFVNQl9QQUxFVFRFLCAoaW50KSB0b3RhbGxlbik7DQorICAgICAgYnJlYWs7DQorICAgIGNhc2UgMHgxMzoNCisgICAgICBUUkFDRU1TMShjaW5mbywgMSwgSlRSQ19USFVNQl9SR0IsIChpbnQpIHRvdGFsbGVuKTsNCisgICAgICBicmVhazsNCisgICAgZGVmYXVsdDoNCisgICAgICBUUkFDRU1TMihjaW5mbywgMSwgSlRSQ19KRklGX0VYVEVOU0lPTiwNCisJICAgICAgIEdFVEpPQ1RFVChkYXRhWzVdKSwgKGludCkgdG90YWxsZW4pOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorICB9IGVsc2Ugew0KKyAgICAvKiBTdGFydCBvZiBBUFAwIGRvZXMgbm90IG1hdGNoICJKRklGIiBvciAiSkZYWCIsIG9yIHRvbyBzaG9ydCAqLw0KKyAgICBUUkFDRU1TMShjaW5mbywgMSwgSlRSQ19BUFAwLCAoaW50KSB0b3RhbGxlbik7DQorICB9DQorfQ0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorZXhhbWluZV9hcHAxNCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgSk9DVEVUIEZBUiAqIGRhdGEsDQorCSAgICAgICB1bnNpZ25lZCBpbnQgZGF0YWxlbiwgSU5UMzIgcmVtYWluaW5nKQ0KKy8qIEV4YW1pbmUgZmlyc3QgZmV3IGJ5dGVzIGZyb20gYW4gQVBQMTQuDQorICogVGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24gaWYgaXQgaXMgYW4gQWRvYmUgbWFya2VyLg0KKyAqIGRhdGFsZW4gaXMgIyBvZiBieXRlcyBhdCBkYXRhW10sIHJlbWFpbmluZyBpcyBsZW5ndGggb2YgcmVzdCBvZiBtYXJrZXIgZGF0YS4NCisgKi8NCit7DQorICB1bnNpZ25lZCBpbnQgdmVyc2lvbiwgZmxhZ3MwLCBmbGFnczEsIHRyYW5zZm9ybTsNCisNCisgIGlmIChkYXRhbGVuID49IEFQUDE0X0RBVEFfTEVOICYmDQorICAgICAgR0VUSk9DVEVUKGRhdGFbMF0pID09IDB4NDEgJiYNCisgICAgICBHRVRKT0NURVQoZGF0YVsxXSkgPT0gMHg2NCAmJg0KKyAgICAgIEdFVEpPQ1RFVChkYXRhWzJdKSA9PSAweDZGICYmDQorICAgICAgR0VUSk9DVEVUKGRhdGFbM10pID09IDB4NjIgJiYNCisgICAgICBHRVRKT0NURVQoZGF0YVs0XSkgPT0gMHg2NSkgew0KKyAgICAvKiBGb3VuZCBBZG9iZSBBUFAxNCBtYXJrZXIgKi8NCisgICAgdmVyc2lvbiA9IChHRVRKT0NURVQoZGF0YVs1XSkgPDwgOCkgKyBHRVRKT0NURVQoZGF0YVs2XSk7DQorICAgIGZsYWdzMCA9IChHRVRKT0NURVQoZGF0YVs3XSkgPDwgOCkgKyBHRVRKT0NURVQoZGF0YVs4XSk7DQorICAgIGZsYWdzMSA9IChHRVRKT0NURVQoZGF0YVs5XSkgPDwgOCkgKyBHRVRKT0NURVQoZGF0YVsxMF0pOw0KKyAgICB0cmFuc2Zvcm0gPSBHRVRKT0NURVQoZGF0YVsxMV0pOw0KKyAgICBUUkFDRU1TNChjaW5mbywgMSwgSlRSQ19BRE9CRSwgdmVyc2lvbiwgZmxhZ3MwLCBmbGFnczEsIHRyYW5zZm9ybSk7DQorICAgIGNpbmZvLT5zYXdfQWRvYmVfbWFya2VyID0gVFJVRTsNCisgICAgY2luZm8tPkFkb2JlX3RyYW5zZm9ybSA9IChVSU5UOCkgdHJhbnNmb3JtOw0KKyAgfSBlbHNlIHsNCisgICAgLyogU3RhcnQgb2YgQVBQMTQgZG9lcyBub3QgbWF0Y2ggIkFkb2JlIiwgb3IgdG9vIHNob3J0ICovDQorICAgIFRSQUNFTVMxKGNpbmZvLCAxLCBKVFJDX0FQUDE0LCAoaW50KSAoZGF0YWxlbiArIHJlbWFpbmluZykpOw0KKyAgfQ0KK30NCisNCisNCitNRVRIT0RERUYoYm9vbGVhbikNCitnZXRfaW50ZXJlc3RpbmdfYXBwbiAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCisvKiBQcm9jZXNzIGFuIEFQUDAgb3IgQVBQMTQgbWFya2VyIHdpdGhvdXQgc2F2aW5nIGl0ICovDQorew0KKyAgSU5UMzIgbGVuZ3RoOw0KKyAgSk9DVEVUIGJbQVBQTl9EQVRBX0xFTl07DQorICB1bnNpZ25lZCBpbnQgaSwgbnVtdG9yZWFkOw0KKyAgSU5QVVRfVkFSUyhjaW5mbyk7DQorDQorICBJTlBVVF8yQllURVMoY2luZm8sIGxlbmd0aCwgcmV0dXJuIEZBTFNFKTsNCisgIGxlbmd0aCAtPSAyOw0KKw0KKyAgLyogZ2V0IHRoZSBpbnRlcmVzdGluZyBwYXJ0IG9mIHRoZSBtYXJrZXIgZGF0YSAqLw0KKyAgaWYgKGxlbmd0aCA+PSBBUFBOX0RBVEFfTEVOKQ0KKyAgICBudW10b3JlYWQgPSBBUFBOX0RBVEFfTEVOOw0KKyAgZWxzZSBpZiAobGVuZ3RoID4gMCkNCisgICAgbnVtdG9yZWFkID0gKHVuc2lnbmVkIGludCkgbGVuZ3RoOw0KKyAgZWxzZQ0KKyAgICBudW10b3JlYWQgPSAwOw0KKyAgZm9yIChpID0gMDsgaSA8IG51bXRvcmVhZDsgaSsrKQ0KKyAgICBJTlBVVF9CWVRFKGNpbmZvLCBiW2ldLCByZXR1cm4gRkFMU0UpOw0KKyAgbGVuZ3RoIC09IG51bXRvcmVhZDsNCisNCisgIC8qIHByb2Nlc3MgaXQgKi8NCisgIHN3aXRjaCAoY2luZm8tPnVucmVhZF9tYXJrZXIpIHsNCisgIGNhc2UgTV9BUFAwOg0KKyAgICBleGFtaW5lX2FwcDAoY2luZm8sIChKT0NURVQgRkFSICopIGIsIG51bXRvcmVhZCwgbGVuZ3RoKTsNCisgICAgYnJlYWs7DQorICBjYXNlIE1fQVBQMTQ6DQorICAgIGV4YW1pbmVfYXBwMTQoY2luZm8sIChKT0NURVQgRkFSICopIGIsIG51bXRvcmVhZCwgbGVuZ3RoKTsNCisgICAgYnJlYWs7DQorICBkZWZhdWx0Og0KKyAgICAvKiBjYW4ndCBnZXQgaGVyZSB1bmxlc3MganBlZ19zYXZlX21hcmtlcnMgY2hvb3NlcyB3cm9uZyBwcm9jZXNzb3IgKi8NCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfVU5LTk9XTl9NQVJLRVIsIGNpbmZvLT51bnJlYWRfbWFya2VyKTsNCisgICAgYnJlYWs7DQorICB9DQorDQorICAvKiBza2lwIGFueSByZW1haW5pbmcgZGF0YSAtLSBjb3VsZCBiZSBsb3RzICovDQorICBJTlBVVF9TWU5DKGNpbmZvKTsNCisgIGlmIChsZW5ndGggPiAwKQ0KKyAgICAoKmNpbmZvLT5zcmMtPnNraXBfaW5wdXRfZGF0YSkgKGNpbmZvLCAobG9uZykgbGVuZ3RoKTsNCisNCisgIHJldHVybiBUUlVFOw0KK30NCisNCisNCisjaWZkZWYgU0FWRV9NQVJLRVJTX1NVUFBPUlRFRA0KKw0KK01FVEhPRERFRihib29sZWFuKQ0KK3NhdmVfbWFya2VyIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIFNhdmUgYW4gQVBQbiBvciBDT00gbWFya2VyIGludG8gdGhlIG1hcmtlciBsaXN0ICovDQorew0KKyAgbXlfbWFya2VyX3B0ciBtYXJrZXIgPSAobXlfbWFya2VyX3B0cikgY2luZm8tPm1hcmtlcjsNCisgIGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBjdXJfbWFya2VyID0gbWFya2VyLT5jdXJfbWFya2VyOw0KKyAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQsIGRhdGFfbGVuZ3RoOw0KKyAgSk9DVEVUIEZBUiAqIGRhdGE7DQorICBJTlQzMiBsZW5ndGggPSAwOw0KKyAgSU5QVVRfVkFSUyhjaW5mbyk7DQorDQorICBpZiAoY3VyX21hcmtlciA9PSBOVUxMKSB7DQorICAgIC8qIGJlZ2luIHJlYWRpbmcgYSBtYXJrZXIgKi8NCisgICAgSU5QVVRfMkJZVEVTKGNpbmZvLCBsZW5ndGgsIHJldHVybiBGQUxTRSk7DQorICAgIGxlbmd0aCAtPSAyOw0KKyAgICBpZiAobGVuZ3RoID49IDApIHsJCS8qIHdhdGNoIG91dCBmb3IgYm9ndXMgbGVuZ3RoIHdvcmQgKi8NCisgICAgICAvKiBmaWd1cmUgb3V0IGhvdyBtdWNoIHdlIHdhbnQgdG8gc2F2ZSAqLw0KKyAgICAgIHVuc2lnbmVkIGludCBsaW1pdDsNCisgICAgICBpZiAoY2luZm8tPnVucmVhZF9tYXJrZXIgPT0gKGludCkgTV9DT00pDQorCWxpbWl0ID0gbWFya2VyLT5sZW5ndGhfbGltaXRfQ09NOw0KKyAgICAgIGVsc2UNCisJbGltaXQgPSBtYXJrZXItPmxlbmd0aF9saW1pdF9BUFBuW2NpbmZvLT51bnJlYWRfbWFya2VyIC0gKGludCkgTV9BUFAwXTsNCisgICAgICBpZiAoKHVuc2lnbmVkIGludCkgbGVuZ3RoIDwgbGltaXQpDQorCWxpbWl0ID0gKHVuc2lnbmVkIGludCkgbGVuZ3RoOw0KKyAgICAgIC8qIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSBtYXJrZXIgaXRlbSAqLw0KKyAgICAgIGN1cl9tYXJrZXIgPSAoanBlZ19zYXZlZF9tYXJrZXJfcHRyKQ0KKwkoKmNpbmZvLT5tZW0tPmFsbG9jX2xhcmdlKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQkgICAgU0laRU9GKHN0cnVjdCBqcGVnX21hcmtlcl9zdHJ1Y3QpICsgbGltaXQpOw0KKyAgICAgIGN1cl9tYXJrZXItPm5leHQgPSBOVUxMOw0KKyAgICAgIGN1cl9tYXJrZXItPm1hcmtlciA9IChVSU5UOCkgY2luZm8tPnVucmVhZF9tYXJrZXI7DQorICAgICAgY3VyX21hcmtlci0+b3JpZ2luYWxfbGVuZ3RoID0gKHVuc2lnbmVkIGludCkgbGVuZ3RoOw0KKyAgICAgIGN1cl9tYXJrZXItPmRhdGFfbGVuZ3RoID0gbGltaXQ7DQorICAgICAgLyogZGF0YSBhcmVhIGlzIGp1c3QgYmV5b25kIHRoZSBqcGVnX21hcmtlcl9zdHJ1Y3QgKi8NCisgICAgICBkYXRhID0gY3VyX21hcmtlci0+ZGF0YSA9IChKT0NURVQgRkFSICopIChjdXJfbWFya2VyICsgMSk7DQorICAgICAgbWFya2VyLT5jdXJfbWFya2VyID0gY3VyX21hcmtlcjsNCisgICAgICBtYXJrZXItPmJ5dGVzX3JlYWQgPSAwOw0KKyAgICAgIGJ5dGVzX3JlYWQgPSAwOw0KKyAgICAgIGRhdGFfbGVuZ3RoID0gbGltaXQ7DQorICAgIH0gZWxzZSB7DQorICAgICAgLyogZGVhbCB3aXRoIGJvZ3VzIGxlbmd0aCB3b3JkICovDQorICAgICAgYnl0ZXNfcmVhZCA9IGRhdGFfbGVuZ3RoID0gMDsNCisgICAgICBkYXRhID0gTlVMTDsNCisgICAgfQ0KKyAgfSBlbHNlIHsNCisgICAgLyogcmVzdW1lIHJlYWRpbmcgYSBtYXJrZXIgKi8NCisgICAgYnl0ZXNfcmVhZCA9IG1hcmtlci0+Ynl0ZXNfcmVhZDsNCisgICAgZGF0YV9sZW5ndGggPSBjdXJfbWFya2VyLT5kYXRhX2xlbmd0aDsNCisgICAgZGF0YSA9IGN1cl9tYXJrZXItPmRhdGEgKyBieXRlc19yZWFkOw0KKyAgfQ0KKw0KKyAgd2hpbGUgKGJ5dGVzX3JlYWQgPCBkYXRhX2xlbmd0aCkgew0KKyAgICBJTlBVVF9TWU5DKGNpbmZvKTsJCS8qIG1vdmUgdGhlIHJlc3RhcnQgcG9pbnQgdG8gaGVyZSAqLw0KKyAgICBtYXJrZXItPmJ5dGVzX3JlYWQgPSBieXRlc19yZWFkOw0KKyAgICAvKiBJZiB0aGVyZSdzIG5vdCBhdCBsZWFzdCBvbmUgYnl0ZSBpbiBidWZmZXIsIHN1c3BlbmQgKi8NCisgICAgTUFLRV9CWVRFX0FWQUlMKGNpbmZvLCByZXR1cm4gRkFMU0UpOw0KKyAgICAvKiBDb3B5IGJ5dGVzIHdpdGggcmVhc29uYWJsZSByYXBpZGl0eSAqLw0KKyAgICB3aGlsZSAoYnl0ZXNfcmVhZCA8IGRhdGFfbGVuZ3RoICYmIGJ5dGVzX2luX2J1ZmZlciA+IDApIHsNCisgICAgICAqZGF0YSsrID0gKm5leHRfaW5wdXRfYnl0ZSsrOw0KKyAgICAgIGJ5dGVzX2luX2J1ZmZlci0tOw0KKyAgICAgIGJ5dGVzX3JlYWQrKzsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgLyogRG9uZSByZWFkaW5nIHdoYXQgd2Ugd2FudCB0byByZWFkICovDQorICBpZiAoY3VyX21hcmtlciAhPSBOVUxMKSB7CS8qIHdpbGwgYmUgTlVMTCBpZiBib2d1cyBsZW5ndGggd29yZCAqLw0KKyAgICAvKiBBZGQgbmV3IG1hcmtlciB0byBlbmQgb2YgbGlzdCAqLw0KKyAgICBpZiAoY2luZm8tPm1hcmtlcl9saXN0ID09IE5VTEwpIHsNCisgICAgICBjaW5mby0+bWFya2VyX2xpc3QgPSBjdXJfbWFya2VyOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBwcmV2ID0gY2luZm8tPm1hcmtlcl9saXN0Ow0KKyAgICAgIHdoaWxlIChwcmV2LT5uZXh0ICE9IE5VTEwpDQorCXByZXYgPSBwcmV2LT5uZXh0Ow0KKyAgICAgIHByZXYtPm5leHQgPSBjdXJfbWFya2VyOw0KKyAgICB9DQorICAgIC8qIFJlc2V0IHBvaW50ZXIgJiBjYWxjIHJlbWFpbmluZyBkYXRhIGxlbmd0aCAqLw0KKyAgICBkYXRhID0gY3VyX21hcmtlci0+ZGF0YTsNCisgICAgbGVuZ3RoID0gY3VyX21hcmtlci0+b3JpZ2luYWxfbGVuZ3RoIC0gZGF0YV9sZW5ndGg7DQorICB9DQorICAvKiBSZXNldCB0byBpbml0aWFsIHN0YXRlIGZvciBuZXh0IG1hcmtlciAqLw0KKyAgbWFya2VyLT5jdXJfbWFya2VyID0gTlVMTDsNCisNCisgIC8qIFByb2Nlc3MgdGhlIG1hcmtlciBpZiBpbnRlcmVzdGluZzsgZWxzZSBqdXN0IG1ha2UgYSBnZW5lcmljIHRyYWNlIG1zZyAqLw0KKyAgc3dpdGNoIChjaW5mby0+dW5yZWFkX21hcmtlcikgew0KKyAgY2FzZSBNX0FQUDA6DQorICAgIGV4YW1pbmVfYXBwMChjaW5mbywgZGF0YSwgZGF0YV9sZW5ndGgsIGxlbmd0aCk7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBNX0FQUDE0Og0KKyAgICBleGFtaW5lX2FwcDE0KGNpbmZvLCBkYXRhLCBkYXRhX2xlbmd0aCwgbGVuZ3RoKTsNCisgICAgYnJlYWs7DQorICBkZWZhdWx0Og0KKyAgICBUUkFDRU1TMihjaW5mbywgMSwgSlRSQ19NSVNDX01BUktFUiwgY2luZm8tPnVucmVhZF9tYXJrZXIsDQorCSAgICAgKGludCkgKGRhdGFfbGVuZ3RoICsgbGVuZ3RoKSk7DQorICAgIGJyZWFrOw0KKyAgfQ0KKw0KKyAgLyogc2tpcCBhbnkgcmVtYWluaW5nIGRhdGEgLS0gY291bGQgYmUgbG90cyAqLw0KKyAgSU5QVVRfU1lOQyhjaW5mbyk7CQkvKiBkbyBiZWZvcmUgc2tpcF9pbnB1dF9kYXRhICovDQorICBpZiAobGVuZ3RoID4gMCkNCisgICAgKCpjaW5mby0+c3JjLT5za2lwX2lucHV0X2RhdGEpIChjaW5mbywgKGxvbmcpIGxlbmd0aCk7DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorI2VuZGlmIC8qIFNBVkVfTUFSS0VSU19TVVBQT1JURUQgKi8NCisNCisNCitNRVRIT0RERUYoYm9vbGVhbikNCitza2lwX3ZhcmlhYmxlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIFNraXAgb3ZlciBhbiB1bmtub3duIG9yIHVuaW50ZXJlc3RpbmcgdmFyaWFibGUtbGVuZ3RoIG1hcmtlciAqLw0KK3sNCisgIElOVDMyIGxlbmd0aDsNCisgIElOUFVUX1ZBUlMoY2luZm8pOw0KKw0KKyAgSU5QVVRfMkJZVEVTKGNpbmZvLCBsZW5ndGgsIHJldHVybiBGQUxTRSk7DQorICBsZW5ndGggLT0gMjsNCisgIA0KKyAgVFJBQ0VNUzIoY2luZm8sIDEsIEpUUkNfTUlTQ19NQVJLRVIsIGNpbmZvLT51bnJlYWRfbWFya2VyLCAoaW50KSBsZW5ndGgpOw0KKw0KKyAgSU5QVVRfU1lOQyhjaW5mbyk7CQkvKiBkbyBiZWZvcmUgc2tpcF9pbnB1dF9kYXRhICovDQorICBpZiAobGVuZ3RoID4gMCkNCisgICAgKCpjaW5mby0+c3JjLT5za2lwX2lucHV0X2RhdGEpIChjaW5mbywgKGxvbmcpIGxlbmd0aCk7DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBGaW5kIHRoZSBuZXh0IEpQRUcgbWFya2VyLCBzYXZlIGl0IGluIGNpbmZvLT51bnJlYWRfbWFya2VyLg0KKyAqIFJldHVybnMgRkFMU0UgaWYgaGFkIHRvIHN1c3BlbmQgYmVmb3JlIHJlYWNoaW5nIGEgbWFya2VyOw0KKyAqIGluIHRoYXQgY2FzZSBjaW5mby0+dW5yZWFkX21hcmtlciBpcyB1bmNoYW5nZWQuDQorICoNCisgKiBOb3RlIHRoYXQgdGhlIHJlc3VsdCBtaWdodCBub3QgYmUgYSB2YWxpZCBtYXJrZXIgY29kZSwNCisgKiBidXQgaXQgd2lsbCBuZXZlciBiZSAwIG9yIEZGLg0KKyAqLw0KKw0KK0xPQ0FMKGJvb2xlYW4pDQorbmV4dF9tYXJrZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgaW50IGM7DQorICBJTlBVVF9WQVJTKGNpbmZvKTsNCisNCisgIGZvciAoOzspIHsNCisgICAgSU5QVVRfQllURShjaW5mbywgYywgcmV0dXJuIEZBTFNFKTsNCisgICAgLyogU2tpcCBhbnkgbm9uLUZGIGJ5dGVzLg0KKyAgICAgKiBUaGlzIG1heSBsb29rIGEgYml0IGluZWZmaWNpZW50LCBidXQgaXQgd2lsbCBub3Qgb2NjdXIgaW4gYSB2YWxpZCBmaWxlLg0KKyAgICAgKiBXZSBzeW5jIGFmdGVyIGVhY2ggZGlzY2FyZGVkIGJ5dGUgc28gdGhhdCBhIHN1c3BlbmRpbmcgZGF0YSBzb3VyY2UNCisgICAgICogY2FuIGRpc2NhcmQgdGhlIGJ5dGUgZnJvbSBpdHMgYnVmZmVyLg0KKyAgICAgKi8NCisgICAgd2hpbGUgKGMgIT0gMHhGRikgew0KKyAgICAgIGNpbmZvLT5tYXJrZXItPmRpc2NhcmRlZF9ieXRlcysrOw0KKyAgICAgIElOUFVUX1NZTkMoY2luZm8pOw0KKyAgICAgIElOUFVUX0JZVEUoY2luZm8sIGMsIHJldHVybiBGQUxTRSk7DQorICAgIH0NCisgICAgLyogVGhpcyBsb29wIHN3YWxsb3dzIGFueSBkdXBsaWNhdGUgRkYgYnl0ZXMuICBFeHRyYSBGRnMgYXJlIGxlZ2FsIGFzDQorICAgICAqIHBhZCBieXRlcywgc28gZG9uJ3QgY291bnQgdGhlbSBpbiBkaXNjYXJkZWRfYnl0ZXMuICBXZSBhc3N1bWUgdGhlcmUNCisgICAgICogd2lsbCBub3QgYmUgc28gbWFueSBjb25zZWN1dGl2ZSBGRiBieXRlcyBhcyB0byBvdmVyZmxvdyBhIHN1c3BlbmRpbmcNCisgICAgICogZGF0YSBzb3VyY2UncyBpbnB1dCBidWZmZXIuDQorICAgICAqLw0KKyAgICBkbyB7DQorICAgICAgSU5QVVRfQllURShjaW5mbywgYywgcmV0dXJuIEZBTFNFKTsNCisgICAgfSB3aGlsZSAoYyA9PSAweEZGKTsNCisgICAgaWYgKGMgIT0gMCkNCisgICAgICBicmVhazsJCQkvKiBmb3VuZCBhIHZhbGlkIG1hcmtlciwgZXhpdCBsb29wICovDQorICAgIC8qIFJlYWNoIGhlcmUgaWYgd2UgZm91bmQgYSBzdHVmZmVkLXplcm8gZGF0YSBzZXF1ZW5jZSAoRkYvMDApLg0KKyAgICAgKiBEaXNjYXJkIGl0IGFuZCBsb29wIGJhY2sgdG8gdHJ5IGFnYWluLg0KKyAgICAgKi8NCisgICAgY2luZm8tPm1hcmtlci0+ZGlzY2FyZGVkX2J5dGVzICs9IDI7DQorICAgIElOUFVUX1NZTkMoY2luZm8pOw0KKyAgfQ0KKw0KKyAgaWYgKGNpbmZvLT5tYXJrZXItPmRpc2NhcmRlZF9ieXRlcyAhPSAwKSB7DQorICAgIFdBUk5NUzIoY2luZm8sIEpXUk5fRVhUUkFORU9VU19EQVRBLCBjaW5mby0+bWFya2VyLT5kaXNjYXJkZWRfYnl0ZXMsIGMpOw0KKyAgICBjaW5mby0+bWFya2VyLT5kaXNjYXJkZWRfYnl0ZXMgPSAwOw0KKyAgfQ0KKw0KKyAgY2luZm8tPnVucmVhZF9tYXJrZXIgPSBjOw0KKw0KKyAgSU5QVVRfU1lOQyhjaW5mbyk7DQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorTE9DQUwoYm9vbGVhbikNCitmaXJzdF9tYXJrZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorLyogTGlrZSBuZXh0X21hcmtlciwgYnV0IHVzZWQgdG8gb2J0YWluIHRoZSBpbml0aWFsIFNPSSBtYXJrZXIuICovDQorLyogRm9yIHRoaXMgbWFya2VyLCB3ZSBkbyBub3QgYWxsb3cgcHJlY2VkaW5nIGdhcmJhZ2Ugb3IgZmlsbDsgb3RoZXJ3aXNlLA0KKyAqIHdlIG1pZ2h0IHdlbGwgc2NhbiBhbiBlbnRpcmUgaW5wdXQgZmlsZSBiZWZvcmUgcmVhbGl6aW5nIGl0IGFpbid0IEpQRUcuDQorICogSWYgYW4gYXBwbGljYXRpb24gd2FudHMgdG8gcHJvY2VzcyBub24tSkZJRiBmaWxlcywgaXQgbXVzdCBzZWVrIHRvIHRoZQ0KKyAqIFNPSSBiZWZvcmUgY2FsbGluZyB0aGUgSlBFRyBsaWJyYXJ5Lg0KKyAqLw0KK3sNCisgIGludCBjLCBjMjsNCisgIElOUFVUX1ZBUlMoY2luZm8pOw0KKw0KKyAgSU5QVVRfQllURShjaW5mbywgYywgcmV0dXJuIEZBTFNFKTsNCisgIElOUFVUX0JZVEUoY2luZm8sIGMyLCByZXR1cm4gRkFMU0UpOw0KKyAgaWYgKGMgIT0gMHhGRiB8fCBjMiAhPSAoaW50KSBNX1NPSSkNCisgICAgRVJSRVhJVDIoY2luZm8sIEpFUlJfTk9fU09JLCBjLCBjMik7DQorDQorICBjaW5mby0+dW5yZWFkX21hcmtlciA9IGMyOw0KKw0KKyAgSU5QVVRfU1lOQyhjaW5mbyk7DQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBSZWFkIG1hcmtlcnMgdW50aWwgU09TIG9yIEVPSS4NCisgKg0KKyAqIFJldHVybnMgc2FtZSBjb2RlcyBhcyBhcmUgZGVmaW5lZCBmb3IganBlZ19jb25zdW1lX2lucHV0Og0KKyAqIEpQRUdfU1VTUEVOREVELCBKUEVHX1JFQUNIRURfU09TLCBvciBKUEVHX1JFQUNIRURfRU9JLg0KKyAqLw0KKw0KK01FVEhPRERFRihpbnQpDQorcmVhZF9tYXJrZXJzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIC8qIE91dGVyIGxvb3AgcmVwZWF0cyBvbmNlIGZvciBlYWNoIG1hcmtlci4gKi8NCisgIGZvciAoOzspIHsNCisgICAgLyogQ29sbGVjdCB0aGUgbWFya2VyIHByb3BlciwgdW5sZXNzIHdlIGFscmVhZHkgZGlkLiAqLw0KKyAgICAvKiBOQjogZmlyc3RfbWFya2VyKCkgZW5mb3JjZXMgdGhlIHJlcXVpcmVtZW50IHRoYXQgU09JIGFwcGVhciBmaXJzdC4gKi8NCisgICAgaWYgKGNpbmZvLT51bnJlYWRfbWFya2VyID09IDApIHsNCisgICAgICBpZiAoISBjaW5mby0+bWFya2VyLT5zYXdfU09JKSB7DQorCWlmICghIGZpcnN0X21hcmtlcihjaW5mbykpDQorCSAgcmV0dXJuIEpQRUdfU1VTUEVOREVEOw0KKyAgICAgIH0gZWxzZSB7DQorCWlmICghIG5leHRfbWFya2VyKGNpbmZvKSkNCisJICByZXR1cm4gSlBFR19TVVNQRU5ERUQ7DQorICAgICAgfQ0KKyAgICB9DQorICAgIC8qIEF0IHRoaXMgcG9pbnQgY2luZm8tPnVucmVhZF9tYXJrZXIgY29udGFpbnMgdGhlIG1hcmtlciBjb2RlIGFuZCB0aGUNCisgICAgICogaW5wdXQgcG9pbnQgaXMganVzdCBwYXN0IHRoZSBtYXJrZXIgcHJvcGVyLCBidXQgYmVmb3JlIGFueSBwYXJhbWV0ZXJzLg0KKyAgICAgKiBBIHN1c3BlbnNpb24gd2lsbCBjYXVzZSB1cyB0byByZXR1cm4gd2l0aCB0aGlzIHN0YXRlIHN0aWxsIHRydWUuDQorICAgICAqLw0KKyAgICBzd2l0Y2ggKGNpbmZvLT51bnJlYWRfbWFya2VyKSB7DQorICAgIGNhc2UgTV9TT0k6DQorICAgICAgaWYgKCEgZ2V0X3NvaShjaW5mbykpDQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBNX1NPRjA6CQkvKiBCYXNlbGluZSAqLw0KKyAgICBjYXNlIE1fU09GMToJCS8qIEV4dGVuZGVkIHNlcXVlbnRpYWwsIEh1ZmZtYW4gKi8NCisgICAgICBpZiAoISBnZXRfc29mKGNpbmZvLCBGQUxTRSwgRkFMU0UpKQ0KKwlyZXR1cm4gSlBFR19TVVNQRU5ERUQ7DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgTV9TT0YyOgkJLyogUHJvZ3Jlc3NpdmUsIEh1ZmZtYW4gKi8NCisgICAgICBpZiAoISBnZXRfc29mKGNpbmZvLCBUUlVFLCBGQUxTRSkpDQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBNX1NPRjk6CQkvKiBFeHRlbmRlZCBzZXF1ZW50aWFsLCBhcml0aG1ldGljICovDQorICAgICAgaWYgKCEgZ2V0X3NvZihjaW5mbywgRkFMU0UsIFRSVUUpKQ0KKwlyZXR1cm4gSlBFR19TVVNQRU5ERUQ7DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgTV9TT0YxMDoJCS8qIFByb2dyZXNzaXZlLCBhcml0aG1ldGljICovDQorICAgICAgaWYgKCEgZ2V0X3NvZihjaW5mbywgVFJVRSwgVFJVRSkpDQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICBicmVhazsNCisNCisgICAgLyogQ3VycmVudGx5IHVuc3VwcG9ydGVkIFNPRm4gdHlwZXMgKi8NCisgICAgY2FzZSBNX1NPRjM6CQkvKiBMb3NzbGVzcywgSHVmZm1hbiAqLw0KKyAgICBjYXNlIE1fU09GNToJCS8qIERpZmZlcmVudGlhbCBzZXF1ZW50aWFsLCBIdWZmbWFuICovDQorICAgIGNhc2UgTV9TT0Y2OgkJLyogRGlmZmVyZW50aWFsIHByb2dyZXNzaXZlLCBIdWZmbWFuICovDQorICAgIGNhc2UgTV9TT0Y3OgkJLyogRGlmZmVyZW50aWFsIGxvc3NsZXNzLCBIdWZmbWFuICovDQorICAgIGNhc2UgTV9KUEc6CQkJLyogUmVzZXJ2ZWQgZm9yIEpQRUcgZXh0ZW5zaW9ucyAqLw0KKyAgICBjYXNlIE1fU09GMTE6CQkvKiBMb3NzbGVzcywgYXJpdGhtZXRpYyAqLw0KKyAgICBjYXNlIE1fU09GMTM6CQkvKiBEaWZmZXJlbnRpYWwgc2VxdWVudGlhbCwgYXJpdGhtZXRpYyAqLw0KKyAgICBjYXNlIE1fU09GMTQ6CQkvKiBEaWZmZXJlbnRpYWwgcHJvZ3Jlc3NpdmUsIGFyaXRobWV0aWMgKi8NCisgICAgY2FzZSBNX1NPRjE1OgkJLyogRGlmZmVyZW50aWFsIGxvc3NsZXNzLCBhcml0aG1ldGljICovDQorICAgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfU09GX1VOU1VQUE9SVEVELCBjaW5mby0+dW5yZWFkX21hcmtlcik7DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgTV9TT1M6DQorICAgICAgaWYgKCEgZ2V0X3NvcyhjaW5mbykpDQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICBjaW5mby0+dW5yZWFkX21hcmtlciA9IDA7CS8qIHByb2Nlc3NlZCB0aGUgbWFya2VyICovDQorICAgICAgcmV0dXJuIEpQRUdfUkVBQ0hFRF9TT1M7DQorICAgIA0KKyAgICBjYXNlIE1fRU9JOg0KKyAgICAgIFRSQUNFTVMoY2luZm8sIDEsIEpUUkNfRU9JKTsNCisgICAgICBjaW5mby0+dW5yZWFkX21hcmtlciA9IDA7CS8qIHByb2Nlc3NlZCB0aGUgbWFya2VyICovDQorICAgICAgcmV0dXJuIEpQRUdfUkVBQ0hFRF9FT0k7DQorICAgICAgDQorICAgIGNhc2UgTV9EQUM6DQorICAgICAgaWYgKCEgZ2V0X2RhYyhjaW5mbykpDQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICBicmVhazsNCisgICAgICANCisgICAgY2FzZSBNX0RIVDoNCisgICAgICBpZiAoISBnZXRfZGh0KGNpbmZvKSkNCisJcmV0dXJuIEpQRUdfU1VTUEVOREVEOw0KKyAgICAgIGJyZWFrOw0KKyAgICAgIA0KKyAgICBjYXNlIE1fRFFUOg0KKyAgICAgIGlmICghIGdldF9kcXQoY2luZm8pKQ0KKwlyZXR1cm4gSlBFR19TVVNQRU5ERUQ7DQorICAgICAgYnJlYWs7DQorICAgICAgDQorICAgIGNhc2UgTV9EUkk6DQorICAgICAgaWYgKCEgZ2V0X2RyaShjaW5mbykpDQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICBicmVhazsNCisgICAgICANCisgICAgY2FzZSBNX0FQUDA6DQorICAgIGNhc2UgTV9BUFAxOg0KKyAgICBjYXNlIE1fQVBQMjoNCisgICAgY2FzZSBNX0FQUDM6DQorICAgIGNhc2UgTV9BUFA0Og0KKyAgICBjYXNlIE1fQVBQNToNCisgICAgY2FzZSBNX0FQUDY6DQorICAgIGNhc2UgTV9BUFA3Og0KKyAgICBjYXNlIE1fQVBQODoNCisgICAgY2FzZSBNX0FQUDk6DQorICAgIGNhc2UgTV9BUFAxMDoNCisgICAgY2FzZSBNX0FQUDExOg0KKyAgICBjYXNlIE1fQVBQMTI6DQorICAgIGNhc2UgTV9BUFAxMzoNCisgICAgY2FzZSBNX0FQUDE0Og0KKyAgICBjYXNlIE1fQVBQMTU6DQorICAgICAgaWYgKCEgKCooKG15X21hcmtlcl9wdHIpIGNpbmZvLT5tYXJrZXIpLT5wcm9jZXNzX0FQUG5bDQorCQljaW5mby0+dW5yZWFkX21hcmtlciAtIChpbnQpIE1fQVBQMF0pIChjaW5mbykpDQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICBicmVhazsNCisgICAgICANCisgICAgY2FzZSBNX0NPTToNCisgICAgICBpZiAoISAoKigobXlfbWFya2VyX3B0cikgY2luZm8tPm1hcmtlciktPnByb2Nlc3NfQ09NKSAoY2luZm8pKQ0KKwlyZXR1cm4gSlBFR19TVVNQRU5ERUQ7DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgTV9SU1QwOgkJLyogdGhlc2UgYXJlIGFsbCBwYXJhbWV0ZXJsZXNzICovDQorICAgIGNhc2UgTV9SU1QxOg0KKyAgICBjYXNlIE1fUlNUMjoNCisgICAgY2FzZSBNX1JTVDM6DQorICAgIGNhc2UgTV9SU1Q0Og0KKyAgICBjYXNlIE1fUlNUNToNCisgICAgY2FzZSBNX1JTVDY6DQorICAgIGNhc2UgTV9SU1Q3Og0KKyAgICBjYXNlIE1fVEVNOg0KKyAgICAgIFRSQUNFTVMxKGNpbmZvLCAxLCBKVFJDX1BBUk1MRVNTX01BUktFUiwgY2luZm8tPnVucmVhZF9tYXJrZXIpOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIE1fRE5MOgkJCS8qIElnbm9yZSBETkwgLi4uIHBlcmhhcHMgdGhlIHdyb25nIHRoaW5nICovDQorICAgICAgaWYgKCEgc2tpcF92YXJpYWJsZShjaW5mbykpDQorCXJldHVybiBKUEVHX1NVU1BFTkRFRDsNCisgICAgICBicmVhazsNCisNCisgICAgZGVmYXVsdDoJCQkvKiBtdXN0IGJlIERIUCwgRVhQLCBKUEduLCBvciBSRVNuICovDQorICAgICAgLyogRm9yIG5vdywgd2UgdHJlYXQgdGhlIHJlc2VydmVkIG1hcmtlcnMgYXMgZmF0YWwgZXJyb3JzIHNpbmNlIHRoZXkgYXJlDQorICAgICAgICogbGlrZWx5IHRvIGJlIHVzZWQgdG8gc2lnbmFsIGluY29tcGF0aWJsZSBKUEVHIFBhcnQgMyBleHRlbnNpb25zLg0KKyAgICAgICAqIE9uY2UgdGhlIEpQRUcgMyB2ZXJzaW9uLW51bWJlciBtYXJrZXIgaXMgd2VsbCBkZWZpbmVkLCB0aGlzIGNvZGUNCisgICAgICAgKiBvdWdodCB0byBjaGFuZ2UhDQorICAgICAgICovDQorICAgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfVU5LTk9XTl9NQVJLRVIsIGNpbmZvLT51bnJlYWRfbWFya2VyKTsNCisgICAgICBicmVhazsNCisgICAgfQ0KKyAgICAvKiBTdWNjZXNzZnVsbHkgcHJvY2Vzc2VkIG1hcmtlciwgc28gcmVzZXQgc3RhdGUgdmFyaWFibGUgKi8NCisgICAgY2luZm8tPnVucmVhZF9tYXJrZXIgPSAwOw0KKyAgfSAvKiBlbmQgbG9vcCAqLw0KK30NCisNCisNCisvKg0KKyAqIFJlYWQgYSByZXN0YXJ0IG1hcmtlciwgd2hpY2ggaXMgZXhwZWN0ZWQgdG8gYXBwZWFyIG5leHQgaW4gdGhlIGRhdGFzdHJlYW07DQorICogaWYgdGhlIG1hcmtlciBpcyBub3QgdGhlcmUsIHRha2UgYXBwcm9wcmlhdGUgcmVjb3ZlcnkgYWN0aW9uLg0KKyAqIFJldHVybnMgRkFMU0UgaWYgc3VzcGVuc2lvbiBpcyByZXF1aXJlZC4NCisgKg0KKyAqIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBlbnRyb3B5IGRlY29kZXIgYWZ0ZXIgaXQgaGFzIHJlYWQgYW4gYXBwcm9wcmlhdGUNCisgKiBudW1iZXIgb2YgTUNVcy4gIGNpbmZvLT51bnJlYWRfbWFya2VyIG1heSBiZSBub256ZXJvIGlmIHRoZSBlbnRyb3B5IGRlY29kZXINCisgKiBoYXMgYWxyZWFkeSByZWFkIGEgbWFya2VyIGZyb20gdGhlIGRhdGEgc291cmNlLiAgVW5kZXIgbm9ybWFsIGNvbmRpdGlvbnMNCisgKiBjaW5mby0+dW5yZWFkX21hcmtlciB3aWxsIGJlIHJlc2V0IHRvIDAgYmVmb3JlIHJldHVybmluZzsgaWYgbm90IHJlc2V0LA0KKyAqIGl0IGhvbGRzIGEgbWFya2VyIHdoaWNoIHRoZSBkZWNvZGVyIHdpbGwgYmUgdW5hYmxlIHRvIHJlYWQgcGFzdC4NCisgKi8NCisNCitNRVRIT0RERUYoYm9vbGVhbikNCityZWFkX3Jlc3RhcnRfbWFya2VyIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIC8qIE9idGFpbiBhIG1hcmtlciB1bmxlc3Mgd2UgYWxyZWFkeSBkaWQuICovDQorICAvKiBOb3RlIHRoYXQgbmV4dF9tYXJrZXIgd2lsbCBjb21wbGFpbiBpZiBpdCBza2lwcyBhbnkgZGF0YS4gKi8NCisgIGlmIChjaW5mby0+dW5yZWFkX21hcmtlciA9PSAwKSB7DQorICAgIGlmICghIG5leHRfbWFya2VyKGNpbmZvKSkNCisgICAgICByZXR1cm4gRkFMU0U7DQorICB9DQorDQorICBpZiAoY2luZm8tPnVucmVhZF9tYXJrZXIgPT0NCisgICAgICAoKGludCkgTV9SU1QwICsgY2luZm8tPm1hcmtlci0+bmV4dF9yZXN0YXJ0X251bSkpIHsNCisgICAgLyogTm9ybWFsIGNhc2UgLS0tIHN3YWxsb3cgdGhlIG1hcmtlciBhbmQgbGV0IGVudHJvcHkgZGVjb2RlciBjb250aW51ZSAqLw0KKyAgICBUUkFDRU1TMShjaW5mbywgMywgSlRSQ19SU1QsIGNpbmZvLT5tYXJrZXItPm5leHRfcmVzdGFydF9udW0pOw0KKyAgICBjaW5mby0+dW5yZWFkX21hcmtlciA9IDA7DQorICB9IGVsc2Ugew0KKyAgICAvKiBVaC1vaCwgdGhlIHJlc3RhcnQgbWFya2VycyBoYXZlIGJlZW4gbWVzc2VkIHVwLiAqLw0KKyAgICAvKiBMZXQgdGhlIGRhdGEgc291cmNlIG1hbmFnZXIgZGV0ZXJtaW5lIGhvdyB0byByZXN5bmMuICovDQorICAgIGlmICghICgqY2luZm8tPnNyYy0+cmVzeW5jX3RvX3Jlc3RhcnQpIChjaW5mbywNCisJCQkJCSAgICBjaW5mby0+bWFya2VyLT5uZXh0X3Jlc3RhcnRfbnVtKSkNCisgICAgICByZXR1cm4gRkFMU0U7DQorICB9DQorDQorICAvKiBVcGRhdGUgbmV4dC1yZXN0YXJ0IHN0YXRlICovDQorICBjaW5mby0+bWFya2VyLT5uZXh0X3Jlc3RhcnRfbnVtID0gKGNpbmZvLT5tYXJrZXItPm5leHRfcmVzdGFydF9udW0gKyAxKSAmIDc7DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBUaGlzIGlzIHRoZSBkZWZhdWx0IHJlc3luY190b19yZXN0YXJ0IG1ldGhvZCBmb3IgZGF0YSBzb3VyY2UgbWFuYWdlcnMNCisgKiB0byB1c2UgaWYgdGhleSBkb24ndCBoYXZlIGFueSBiZXR0ZXIgYXBwcm9hY2guICBTb21lIGRhdGEgc291cmNlIG1hbmFnZXJzDQorICogbWF5IGJlIGFibGUgdG8gYmFjayB1cCwgb3IgbWF5IGhhdmUgYWRkaXRpb25hbCBrbm93bGVkZ2UgYWJvdXQgdGhlIGRhdGENCisgKiB3aGljaCBwZXJtaXRzIGEgbW9yZSBpbnRlbGxpZ2VudCByZWNvdmVyeSBzdHJhdGVneTsgc3VjaCBtYW5hZ2VycyB3b3VsZA0KKyAqIHByZXN1bWFibHkgc3VwcGx5IHRoZWlyIG93biByZXN5bmMgbWV0aG9kLg0KKyAqDQorICogcmVhZF9yZXN0YXJ0X21hcmtlciBjYWxscyByZXN5bmNfdG9fcmVzdGFydCBpZiBpdCBmaW5kcyBhIG1hcmtlciBvdGhlciB0aGFuDQorICogdGhlIHJlc3RhcnQgbWFya2VyIGl0IHdhcyBleHBlY3RpbmcuICAoVGhpcyBjb2RlIGlzICpub3QqIHVzZWQgdW5sZXNzDQorICogYSBub256ZXJvIHJlc3RhcnQgaW50ZXJ2YWwgaGFzIGJlZW4gZGVjbGFyZWQuKSAgY2luZm8tPnVucmVhZF9tYXJrZXIgaXMNCisgKiB0aGUgbWFya2VyIGNvZGUgYWN0dWFsbHkgZm91bmQgKG1pZ2h0IGJlIGFueXRoaW5nLCBleGNlcHQgMCBvciBGRikuDQorICogVGhlIGRlc2lyZWQgcmVzdGFydCBtYXJrZXIgbnVtYmVyICgwLi43KSBpcyBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuDQorICogVGhpcyByb3V0aW5lIGlzIHN1cHBvc2VkIHRvIGFwcGx5IHdoYXRldmVyIGVycm9yIHJlY292ZXJ5IHN0cmF0ZWd5IHNlZW1zDQorICogYXBwcm9wcmlhdGUgaW4gb3JkZXIgdG8gcG9zaXRpb24gdGhlIGlucHV0IHN0cmVhbSB0byB0aGUgbmV4dCBkYXRhIHNlZ21lbnQuDQorICogTm90ZSB0aGF0IGNpbmZvLT51bnJlYWRfbWFya2VyIGlzIHRyZWF0ZWQgYXMgYSBtYXJrZXIgYXBwZWFyaW5nIGJlZm9yZQ0KKyAqIHRoZSBjdXJyZW50IGRhdGEtc291cmNlIGlucHV0IHBvaW50OyB1c3VhbGx5IGl0IHNob3VsZCBiZSByZXNldCB0byB6ZXJvDQorICogYmVmb3JlIHJldHVybmluZy4NCisgKiBSZXR1cm5zIEZBTFNFIGlmIHN1c3BlbnNpb24gaXMgcmVxdWlyZWQuDQorICoNCisgKiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHN1YnN0YW50aWFsbHkgY29uc3RyYWluZWQgYnkgd2FudGluZyB0byB0cmVhdCB0aGUNCisgKiBpbnB1dCBhcyBhIGRhdGEgc3RyZWFtOyB0aGlzIG1lYW5zIHdlIGNhbid0IGJhY2sgdXAuICBUaGVyZWZvcmUsIHdlIGhhdmUNCisgKiBvbmx5IHRoZSBmb2xsb3dpbmcgYWN0aW9ucyB0byB3b3JrIHdpdGg6DQorICogICAxLiBTaW1wbHkgZGlzY2FyZCB0aGUgbWFya2VyIGFuZCBsZXQgdGhlIGVudHJvcHkgZGVjb2RlciByZXN1bWUgYXQgbmV4dA0KKyAqICAgICAgYnl0ZSBvZiBmaWxlLg0KKyAqICAgMi4gUmVhZCBmb3J3YXJkIHVudGlsIHdlIGZpbmQgYW5vdGhlciBtYXJrZXIsIGRpc2NhcmRpbmcgaW50ZXJ2ZW5pbmcNCisgKiAgICAgIGRhdGEuICAoSW4gdGhlb3J5IHdlIGNvdWxkIGxvb2sgYWhlYWQgd2l0aGluIHRoZSBjdXJyZW50IGJ1ZmZlcmxvYWQsDQorICogICAgICB3aXRob3V0IGhhdmluZyB0byBkaXNjYXJkIGRhdGEgaWYgd2UgZG9uJ3QgZmluZCB0aGUgZGVzaXJlZCBtYXJrZXIuDQorICogICAgICBUaGlzIGlkZWEgaXMgbm90IGltcGxlbWVudGVkIGhlcmUsIGluIHBhcnQgYmVjYXVzZSBpdCBtYWtlcyBiZWhhdmlvcg0KKyAqICAgICAgZGVwZW5kZW50IG9uIGJ1ZmZlciBzaXplIGFuZCBjaGFuY2UgYnVmZmVyLWJvdW5kYXJ5IHBvc2l0aW9ucy4pDQorICogICAzLiBMZWF2ZSB0aGUgbWFya2VyIHVucmVhZCAoYnkgZmFpbGluZyB0byB6ZXJvIGNpbmZvLT51bnJlYWRfbWFya2VyKS4NCisgKiAgICAgIFRoaXMgd2lsbCBjYXVzZSB0aGUgZW50cm9weSBkZWNvZGVyIHRvIHByb2Nlc3MgYW4gZW1wdHkgZGF0YSBzZWdtZW50LA0KKyAqICAgICAgaW5zZXJ0aW5nIGR1bW15IHplcm9lcywgYW5kIHRoZW4gd2Ugd2lsbCByZXByb2Nlc3MgdGhlIG1hcmtlci4NCisgKg0KKyAqICMyIGlzIGFwcHJvcHJpYXRlIGlmIHdlIHRoaW5rIHRoZSBkZXNpcmVkIG1hcmtlciBsaWVzIGFoZWFkLCB3aGlsZSAjMyBpcw0KKyAqIGFwcHJvcHJpYXRlIGlmIHRoZSBmb3VuZCBtYXJrZXIgaXMgYSBmdXR1cmUgcmVzdGFydCBtYXJrZXIgKGluZGljYXRpbmcNCisgKiB0aGF0IHdlIGhhdmUgbWlzc2VkIHRoZSBkZXNpcmVkIHJlc3RhcnQgbWFya2VyLCBwcm9iYWJseSBiZWNhdXNlIGl0IGdvdA0KKyAqIGNvcnJ1cHRlZCkuDQorICogV2UgYXBwbHkgIzIgb3IgIzMgaWYgdGhlIGZvdW5kIG1hcmtlciBpcyBhIHJlc3RhcnQgbWFya2VyIG5vIG1vcmUgdGhhbg0KKyAqIHR3byBjb3VudHMgYmVoaW5kIG9yIGFoZWFkIG9mIHRoZSBleHBlY3RlZCBvbmUuICBXZSBhbHNvIGFwcGx5ICMyIGlmIHRoZQ0KKyAqIGZvdW5kIG1hcmtlciBpcyBub3QgYSBsZWdhbCBKUEVHIG1hcmtlciBjb2RlIChpdCdzIGNlcnRhaW5seSBib2d1cyBkYXRhKS4NCisgKiBJZiB0aGUgZm91bmQgbWFya2VyIGlzIGEgcmVzdGFydCBtYXJrZXIgbW9yZSB0aGFuIDIgY291bnRzIGF3YXksIHdlIGRvICMxDQorICogKHRvbyBtdWNoIHJpc2sgdGhhdCB0aGUgbWFya2VyIGlzIGVycm9uZW91czsgd2l0aCBsdWNrIHdlIHdpbGwgYmUgYWJsZSB0bw0KKyAqIHJlc3luYyBhdCBzb21lIGZ1dHVyZSBwb2ludCkuDQorICogRm9yIGFueSB2YWxpZCBub24tcmVzdGFydCBKUEVHIG1hcmtlciwgd2UgYXBwbHkgIzMuICBUaGlzIGtlZXBzIHVzIGZyb20NCisgKiBvdmVycnVubmluZyB0aGUgZW5kIG9mIGEgc2Nhbi4gIEFuIGltcGxlbWVudGF0aW9uIGxpbWl0ZWQgdG8gc2luZ2xlLXNjYW4NCisgKiBmaWxlcyBtaWdodCBmaW5kIGl0IGJldHRlciB0byBhcHBseSAjMiBmb3IgbWFya2VycyBvdGhlciB0aGFuIEVPSSwgc2luY2UNCisgKiBhbnkgb3RoZXIgbWFya2VyIHdvdWxkIGhhdmUgdG8gYmUgYm9ndXMgZGF0YSBpbiB0aGF0IGNhc2UuDQorICovDQorDQorR0xPQkFMKGJvb2xlYW4pDQoranBlZ19yZXN5bmNfdG9fcmVzdGFydCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgaW50IGRlc2lyZWQpDQorew0KKyAgaW50IG1hcmtlciA9IGNpbmZvLT51bnJlYWRfbWFya2VyOw0KKyAgaW50IGFjdGlvbiA9IDE7DQorICANCisgIC8qIEFsd2F5cyBwdXQgdXAgYSB3YXJuaW5nLiAqLw0KKyAgV0FSTk1TMihjaW5mbywgSldSTl9NVVNUX1JFU1lOQywgbWFya2VyLCBkZXNpcmVkKTsNCisgIA0KKyAgLyogT3V0ZXIgbG9vcCBoYW5kbGVzIHJlcGVhdGVkIGRlY2lzaW9uIGFmdGVyIHNjYW5uaW5nIGZvcndhcmQuICovDQorICBmb3IgKDs7KSB7DQorICAgIGlmIChtYXJrZXIgPCAoaW50KSBNX1NPRjApDQorICAgICAgYWN0aW9uID0gMjsJCS8qIGludmFsaWQgbWFya2VyICovDQorICAgIGVsc2UgaWYgKG1hcmtlciA8IChpbnQpIE1fUlNUMCB8fCBtYXJrZXIgPiAoaW50KSBNX1JTVDcpDQorICAgICAgYWN0aW9uID0gMzsJCS8qIHZhbGlkIG5vbi1yZXN0YXJ0IG1hcmtlciAqLw0KKyAgICBlbHNlIHsNCisgICAgICBpZiAobWFya2VyID09ICgoaW50KSBNX1JTVDAgKyAoKGRlc2lyZWQrMSkgJiA3KSkgfHwNCisJICBtYXJrZXIgPT0gKChpbnQpIE1fUlNUMCArICgoZGVzaXJlZCsyKSAmIDcpKSkNCisJYWN0aW9uID0gMzsJCS8qIG9uZSBvZiB0aGUgbmV4dCB0d28gZXhwZWN0ZWQgcmVzdGFydHMgKi8NCisgICAgICBlbHNlIGlmIChtYXJrZXIgPT0gKChpbnQpIE1fUlNUMCArICgoZGVzaXJlZC0xKSAmIDcpKSB8fA0KKwkgICAgICAgbWFya2VyID09ICgoaW50KSBNX1JTVDAgKyAoKGRlc2lyZWQtMikgJiA3KSkpDQorCWFjdGlvbiA9IDI7CQkvKiBhIHByaW9yIHJlc3RhcnQsIHNvIGFkdmFuY2UgKi8NCisgICAgICBlbHNlDQorCWFjdGlvbiA9IDE7CQkvKiBkZXNpcmVkIHJlc3RhcnQgb3IgdG9vIGZhciBhd2F5ICovDQorICAgIH0NCisgICAgVFJBQ0VNUzIoY2luZm8sIDQsIEpUUkNfUkVDT1ZFUllfQUNUSU9OLCBtYXJrZXIsIGFjdGlvbik7DQorICAgIHN3aXRjaCAoYWN0aW9uKSB7DQorICAgIGNhc2UgMToNCisgICAgICAvKiBEaXNjYXJkIG1hcmtlciBhbmQgbGV0IGVudHJvcHkgZGVjb2RlciByZXN1bWUgcHJvY2Vzc2luZy4gKi8NCisgICAgICBjaW5mby0+dW5yZWFkX21hcmtlciA9IDA7DQorICAgICAgcmV0dXJuIFRSVUU7DQorICAgIGNhc2UgMjoNCisgICAgICAvKiBTY2FuIHRvIHRoZSBuZXh0IG1hcmtlciwgYW5kIHJlcGVhdCB0aGUgZGVjaXNpb24gbG9vcC4gKi8NCisgICAgICBpZiAoISBuZXh0X21hcmtlcihjaW5mbykpDQorCXJldHVybiBGQUxTRTsNCisgICAgICBtYXJrZXIgPSBjaW5mby0+dW5yZWFkX21hcmtlcjsNCisgICAgICBicmVhazsNCisgICAgY2FzZSAzOg0KKyAgICAgIC8qIFJldHVybiB3aXRob3V0IGFkdmFuY2luZyBwYXN0IHRoaXMgbWFya2VyLiAqLw0KKyAgICAgIC8qIEVudHJvcHkgZGVjb2RlciB3aWxsIGJlIGZvcmNlZCB0byBwcm9jZXNzIGFuIGVtcHR5IHNlZ21lbnQuICovDQorICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgIH0gLyogZW5kIGxvb3AgKi8NCit9DQorDQorDQorLyoNCisgKiBSZXNldCBtYXJrZXIgcHJvY2Vzc2luZyBzdGF0ZSB0byBiZWdpbiBhIGZyZXNoIGRhdGFzdHJlYW0uDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorcmVzZXRfbWFya2VyX3JlYWRlciAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBteV9tYXJrZXJfcHRyIG1hcmtlciA9IChteV9tYXJrZXJfcHRyKSBjaW5mby0+bWFya2VyOw0KKw0KKyAgY2luZm8tPmNvbXBfaW5mbyA9IE5VTEw7CQkvKiB1bnRpbCBhbGxvY2F0ZWQgYnkgZ2V0X3NvZiAqLw0KKyAgY2luZm8tPmlucHV0X3NjYW5fbnVtYmVyID0gMDsJCS8qIG5vIFNPUyBzZWVuIHlldCAqLw0KKyAgY2luZm8tPnVucmVhZF9tYXJrZXIgPSAwOwkJLyogbm8gcGVuZGluZyBtYXJrZXIgKi8NCisgIG1hcmtlci0+cHViLnNhd19TT0kgPSBGQUxTRTsJCS8qIHNldCBpbnRlcm5hbCBzdGF0ZSB0b28gKi8NCisgIG1hcmtlci0+cHViLnNhd19TT0YgPSBGQUxTRTsNCisgIG1hcmtlci0+cHViLmRpc2NhcmRlZF9ieXRlcyA9IDA7DQorICBtYXJrZXItPmN1cl9tYXJrZXIgPSBOVUxMOw0KK30NCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgdGhlIG1hcmtlciByZWFkZXIgbW9kdWxlLg0KKyAqIFRoaXMgaXMgY2FsbGVkIG9ubHkgb25jZSwgd2hlbiB0aGUgZGVjb21wcmVzc2lvbiBvYmplY3QgaXMgY3JlYXRlZC4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqaW5pdF9tYXJrZXJfcmVhZGVyIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIG15X21hcmtlcl9wdHIgbWFya2VyOw0KKyAgaW50IGk7DQorDQorICAvKiBDcmVhdGUgc3Vib2JqZWN0IGluIHBlcm1hbmVudCBwb29sICovDQorICBtYXJrZXIgPSAobXlfbWFya2VyX3B0cikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9QRVJNQU5FTlQsDQorCQkJCVNJWkVPRihteV9tYXJrZXJfcmVhZGVyKSk7DQorICBjaW5mby0+bWFya2VyID0gKHN0cnVjdCBqcGVnX21hcmtlcl9yZWFkZXIgKikgbWFya2VyOw0KKyAgLyogSW5pdGlhbGl6ZSBwdWJsaWMgbWV0aG9kIHBvaW50ZXJzICovDQorICBtYXJrZXItPnB1Yi5yZXNldF9tYXJrZXJfcmVhZGVyID0gcmVzZXRfbWFya2VyX3JlYWRlcjsNCisgIG1hcmtlci0+cHViLnJlYWRfbWFya2VycyA9IHJlYWRfbWFya2VyczsNCisgIG1hcmtlci0+cHViLnJlYWRfcmVzdGFydF9tYXJrZXIgPSByZWFkX3Jlc3RhcnRfbWFya2VyOw0KKyAgLyogSW5pdGlhbGl6ZSBDT00vQVBQbiBwcm9jZXNzaW5nLg0KKyAgICogQnkgZGVmYXVsdCwgd2UgZXhhbWluZSBhbmQgdGhlbiBkaXNjYXJkIEFQUDAgYW5kIEFQUDE0LA0KKyAgICogYnV0IHNpbXBseSBkaXNjYXJkIENPTSBhbmQgYWxsIG90aGVyIEFQUG4uDQorICAgKi8NCisgIG1hcmtlci0+cHJvY2Vzc19DT00gPSBza2lwX3ZhcmlhYmxlOw0KKyAgbWFya2VyLT5sZW5ndGhfbGltaXRfQ09NID0gMDsNCisgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7DQorICAgIG1hcmtlci0+cHJvY2Vzc19BUFBuW2ldID0gc2tpcF92YXJpYWJsZTsNCisgICAgbWFya2VyLT5sZW5ndGhfbGltaXRfQVBQbltpXSA9IDA7DQorICB9DQorICBtYXJrZXItPnByb2Nlc3NfQVBQblswXSA9IGdldF9pbnRlcmVzdGluZ19hcHBuOw0KKyAgbWFya2VyLT5wcm9jZXNzX0FQUG5bMTRdID0gZ2V0X2ludGVyZXN0aW5nX2FwcG47DQorICAvKiBSZXNldCBtYXJrZXIgcHJvY2Vzc2luZyBzdGF0ZSAqLw0KKyAgcmVzZXRfbWFya2VyX3JlYWRlcihjaW5mbyk7DQorfQ0KKw0KKw0KKy8qDQorICogQ29udHJvbCBzYXZpbmcgb2YgQ09NIGFuZCBBUFBuIG1hcmtlcnMgaW50byBtYXJrZXJfbGlzdC4NCisgKi8NCisNCisjaWZkZWYgU0FWRV9NQVJLRVJTX1NVUFBPUlRFRA0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfc2F2ZV9tYXJrZXJzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgbWFya2VyX2NvZGUsDQorCQkgICB1bnNpZ25lZCBpbnQgbGVuZ3RoX2xpbWl0KQ0KK3sNCisgIG15X21hcmtlcl9wdHIgbWFya2VyID0gKG15X21hcmtlcl9wdHIpIGNpbmZvLT5tYXJrZXI7DQorICBsb25nIG1heGxlbmd0aDsNCisgIGpwZWdfbWFya2VyX3BhcnNlcl9tZXRob2QgcHJvY2Vzc29yOw0KKw0KKyAgLyogTGVuZ3RoIGxpbWl0IG11c3RuJ3QgYmUgbGFyZ2VyIHRoYW4gd2hhdCB3ZSBjYW4gYWxsb2NhdGUNCisgICAqIChzaG91bGQgb25seSBiZSBhIGNvbmNlcm4gaW4gYSAxNi1iaXQgZW52aXJvbm1lbnQpLg0KKyAgICovDQorICBtYXhsZW5ndGggPSBjaW5mby0+bWVtLT5tYXhfYWxsb2NfY2h1bmsgLSBTSVpFT0Yoc3RydWN0IGpwZWdfbWFya2VyX3N0cnVjdCk7DQorICBpZiAoKChsb25nKSBsZW5ndGhfbGltaXQpID4gbWF4bGVuZ3RoKQ0KKyAgICBsZW5ndGhfbGltaXQgPSAodW5zaWduZWQgaW50KSBtYXhsZW5ndGg7DQorDQorICAvKiBDaG9vc2UgcHJvY2Vzc29yIHJvdXRpbmUgdG8gdXNlLg0KKyAgICogQVBQMC9BUFAxNCBoYXZlIHNwZWNpYWwgcmVxdWlyZW1lbnRzLg0KKyAgICovDQorICBpZiAobGVuZ3RoX2xpbWl0KSB7DQorICAgIHByb2Nlc3NvciA9IHNhdmVfbWFya2VyOw0KKyAgICAvKiBJZiBzYXZpbmcgQVBQMC9BUFAxNCwgc2F2ZSBhdCBsZWFzdCBlbm91Z2ggZm9yIG91ciBpbnRlcm5hbCB1c2UuICovDQorICAgIGlmIChtYXJrZXJfY29kZSA9PSAoaW50KSBNX0FQUDAgJiYgbGVuZ3RoX2xpbWl0IDwgQVBQMF9EQVRBX0xFTikNCisgICAgICBsZW5ndGhfbGltaXQgPSBBUFAwX0RBVEFfTEVOOw0KKyAgICBlbHNlIGlmIChtYXJrZXJfY29kZSA9PSAoaW50KSBNX0FQUDE0ICYmIGxlbmd0aF9saW1pdCA8IEFQUDE0X0RBVEFfTEVOKQ0KKyAgICAgIGxlbmd0aF9saW1pdCA9IEFQUDE0X0RBVEFfTEVOOw0KKyAgfSBlbHNlIHsNCisgICAgcHJvY2Vzc29yID0gc2tpcF92YXJpYWJsZTsNCisgICAgLyogSWYgZGlzY2FyZGluZyBBUFAwL0FQUDE0LCB1c2Ugb3VyIHJlZ3VsYXIgb24tdGhlLWZseSBwcm9jZXNzb3IuICovDQorICAgIGlmIChtYXJrZXJfY29kZSA9PSAoaW50KSBNX0FQUDAgfHwgbWFya2VyX2NvZGUgPT0gKGludCkgTV9BUFAxNCkNCisgICAgICBwcm9jZXNzb3IgPSBnZXRfaW50ZXJlc3RpbmdfYXBwbjsNCisgIH0NCisNCisgIGlmIChtYXJrZXJfY29kZSA9PSAoaW50KSBNX0NPTSkgew0KKyAgICBtYXJrZXItPnByb2Nlc3NfQ09NID0gcHJvY2Vzc29yOw0KKyAgICBtYXJrZXItPmxlbmd0aF9saW1pdF9DT00gPSBsZW5ndGhfbGltaXQ7DQorICB9IGVsc2UgaWYgKG1hcmtlcl9jb2RlID49IChpbnQpIE1fQVBQMCAmJiBtYXJrZXJfY29kZSA8PSAoaW50KSBNX0FQUDE1KSB7DQorICAgIG1hcmtlci0+cHJvY2Vzc19BUFBuW21hcmtlcl9jb2RlIC0gKGludCkgTV9BUFAwXSA9IHByb2Nlc3NvcjsNCisgICAgbWFya2VyLT5sZW5ndGhfbGltaXRfQVBQblttYXJrZXJfY29kZSAtIChpbnQpIE1fQVBQMF0gPSBsZW5ndGhfbGltaXQ7DQorICB9IGVsc2UNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfVU5LTk9XTl9NQVJLRVIsIG1hcmtlcl9jb2RlKTsNCit9DQorDQorI2VuZGlmIC8qIFNBVkVfTUFSS0VSU19TVVBQT1JURUQgKi8NCisNCisNCisvKg0KKyAqIEluc3RhbGwgYSBzcGVjaWFsIHByb2Nlc3NpbmcgbWV0aG9kIGZvciBDT00gb3IgQVBQbiBtYXJrZXJzLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfc2V0X21hcmtlcl9wcm9jZXNzb3IgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGludCBtYXJrZXJfY29kZSwNCisJCQkgICBqcGVnX21hcmtlcl9wYXJzZXJfbWV0aG9kIHJvdXRpbmUpDQorew0KKyAgbXlfbWFya2VyX3B0ciBtYXJrZXIgPSAobXlfbWFya2VyX3B0cikgY2luZm8tPm1hcmtlcjsNCisNCisgIGlmIChtYXJrZXJfY29kZSA9PSAoaW50KSBNX0NPTSkNCisgICAgbWFya2VyLT5wcm9jZXNzX0NPTSA9IHJvdXRpbmU7DQorICBlbHNlIGlmIChtYXJrZXJfY29kZSA+PSAoaW50KSBNX0FQUDAgJiYgbWFya2VyX2NvZGUgPD0gKGludCkgTV9BUFAxNSkNCisgICAgbWFya2VyLT5wcm9jZXNzX0FQUG5bbWFya2VyX2NvZGUgLSAoaW50KSBNX0FQUDBdID0gcm91dGluZTsNCisgIGVsc2UNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfVU5LTk9XTl9NQVJLRVIsIG1hcmtlcl9jb2RlKTsNCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRtYXN0ZXIuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkbWFzdGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFkZmQ4MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkbWFzdGVyLmMKQEAgLTAsMCArMSw1NjAgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqZG1hc3Rlci5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgbWFzdGVyIGNvbnRyb2wgbG9naWMgZm9yIHRoZSBKUEVHIGRlY29tcHJlc3Nvci4NCisgKiBUaGVzZSByb3V0aW5lcyBhcmUgY29uY2VybmVkIHdpdGggc2VsZWN0aW5nIHRoZSBtb2R1bGVzIHRvIGJlIGV4ZWN1dGVkDQorICogYW5kIHdpdGggZGV0ZXJtaW5pbmcgdGhlIG51bWJlciBvZiBwYXNzZXMgYW5kIHRoZSB3b3JrIHRvIGJlIGRvbmUgaW4gZWFjaA0KKyAqIHBhc3MuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQorLyogUHJpdmF0ZSBzdGF0ZSAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIHN0cnVjdCBqcGVnX2RlY29tcF9tYXN0ZXIgcHViOyAvKiBwdWJsaWMgZmllbGRzICovDQorDQorICBpbnQgcGFzc19udW1iZXI7CQkvKiAjIG9mIHBhc3NlcyBjb21wbGV0ZWQgKi8NCisNCisgIGJvb2xlYW4gdXNpbmdfbWVyZ2VkX3Vwc2FtcGxlOyAvKiBUUlVFIGlmIHVzaW5nIG1lcmdlZCB1cHNhbXBsZS9jY29udmVydCAqLw0KKw0KKyAgLyogU2F2ZWQgcmVmZXJlbmNlcyB0byBpbml0aWFsaXplZCBxdWFudGl6ZXIgbW9kdWxlcywNCisgICAqIGluIGNhc2Ugd2UgbmVlZCB0byBzd2l0Y2ggbW9kZXMuDQorICAgKi8NCisgIHN0cnVjdCBqcGVnX2NvbG9yX3F1YW50aXplciAqIHF1YW50aXplcl8xcGFzczsNCisgIHN0cnVjdCBqcGVnX2NvbG9yX3F1YW50aXplciAqIHF1YW50aXplcl8ycGFzczsNCit9IG15X2RlY29tcF9tYXN0ZXI7DQorDQordHlwZWRlZiBteV9kZWNvbXBfbWFzdGVyICogbXlfbWFzdGVyX3B0cjsNCisNCisNCisvKg0KKyAqIERldGVybWluZSB3aGV0aGVyIG1lcmdlZCB1cHNhbXBsZS9jb2xvciBjb252ZXJzaW9uIHNob3VsZCBiZSB1c2VkLg0KKyAqIENSVUNJQUw6IHRoaXMgbXVzdCBtYXRjaCB0aGUgYWN0dWFsIGNhcGFiaWxpdGllcyBvZiBqZG1lcmdlLmMhDQorICovDQorDQorTE9DQUwoYm9vbGVhbikNCit1c2VfbWVyZ2VkX3Vwc2FtcGxlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisjaWZkZWYgVVBTQU1QTEVfTUVSR0lOR19TVVBQT1JURUQNCisgIC8qIE1lcmdpbmcgaXMgdGhlIGVxdWl2YWxlbnQgb2YgcGxhaW4gYm94LWZpbHRlciB1cHNhbXBsaW5nICovDQorICBpZiAoY2luZm8tPmRvX2ZhbmN5X3Vwc2FtcGxpbmcgfHwgY2luZm8tPkNDSVI2MDFfc2FtcGxpbmcpDQorICAgIHJldHVybiBGQUxTRTsNCisgIC8qIGpkbWVyZ2UuYyBvbmx5IHN1cHBvcnRzIFlDQz0+UkdCIGNvbG9yIGNvbnZlcnNpb24gKi8NCisgIGlmIChjaW5mby0+anBlZ19jb2xvcl9zcGFjZSAhPSBKQ1NfWUNiQ3IgfHwgY2luZm8tPm51bV9jb21wb25lbnRzICE9IDMgfHwNCisgICAgICBjaW5mby0+b3V0X2NvbG9yX3NwYWNlICE9IEpDU19SR0IgfHwNCisgICAgICBjaW5mby0+b3V0X2NvbG9yX2NvbXBvbmVudHMgIT0gUkdCX1BJWEVMU0laRSkNCisgICAgcmV0dXJuIEZBTFNFOw0KKyAgLyogYW5kIGl0IG9ubHkgaGFuZGxlcyAyaDF2IG9yIDJoMnYgc2FtcGxpbmcgcmF0aW9zICovDQorICBpZiAoY2luZm8tPmNvbXBfaW5mb1swXS5oX3NhbXBfZmFjdG9yICE9IDIgfHwNCisgICAgICBjaW5mby0+Y29tcF9pbmZvWzFdLmhfc2FtcF9mYWN0b3IgIT0gMSB8fA0KKyAgICAgIGNpbmZvLT5jb21wX2luZm9bMl0uaF9zYW1wX2ZhY3RvciAhPSAxIHx8DQorICAgICAgY2luZm8tPmNvbXBfaW5mb1swXS52X3NhbXBfZmFjdG9yID4gIDIgfHwNCisgICAgICBjaW5mby0+Y29tcF9pbmZvWzFdLnZfc2FtcF9mYWN0b3IgIT0gMSB8fA0KKyAgICAgIGNpbmZvLT5jb21wX2luZm9bMl0udl9zYW1wX2ZhY3RvciAhPSAxKQ0KKyAgICByZXR1cm4gRkFMU0U7DQorICAvKiBmdXJ0aGVybW9yZSwgaXQgZG9lc24ndCB3b3JrIGlmIHdlJ3ZlIHNjYWxlZCB0aGUgSURDVHMgZGlmZmVyZW50bHkgKi8NCisgIGlmIChjaW5mby0+Y29tcF9pbmZvWzBdLkRDVF9zY2FsZWRfc2l6ZSAhPSBjaW5mby0+bWluX0RDVF9zY2FsZWRfc2l6ZSB8fA0KKyAgICAgIGNpbmZvLT5jb21wX2luZm9bMV0uRENUX3NjYWxlZF9zaXplICE9IGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplIHx8DQorICAgICAgY2luZm8tPmNvbXBfaW5mb1syXS5EQ1Rfc2NhbGVkX3NpemUgIT0gY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemUpDQorICAgIHJldHVybiBGQUxTRTsNCisgIC8qID8/PyBhbHNvIG5lZWQgdG8gdGVzdCBmb3IgdXBzYW1wbGUtdGltZSByZXNjYWxpbmcsIHdoZW4gJiBpZiBzdXBwb3J0ZWQgKi8NCisgIHJldHVybiBUUlVFOwkJCS8qIGJ5IGdvbGx5LCBpdCdsbCB3b3JrLi4uICovDQorI2Vsc2UNCisgIHJldHVybiBGQUxTRTsNCisjZW5kaWYNCit9DQorDQorDQorLyoNCisgKiBDb21wdXRlIG91dHB1dCBpbWFnZSBkaW1lbnNpb25zIGFuZCByZWxhdGVkIHZhbHVlcy4NCisgKiBOT1RFOiB0aGlzIGlzIGV4cG9ydGVkIGZvciBwb3NzaWJsZSB1c2UgYnkgYXBwbGljYXRpb24uDQorICogSGVuY2UgaXQgbXVzdG4ndCBkbyBhbnl0aGluZyB0aGF0IGNhbid0IGJlIGRvbmUgdHdpY2UuDQorICogQWxzbyBub3RlIHRoYXQgaXQgbWF5IGJlIGNhbGxlZCBiZWZvcmUgdGhlIG1hc3RlciBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQhDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19jYWxjX291dHB1dF9kaW1lbnNpb25zIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIERvIGNvbXB1dGF0aW9ucyB0aGF0IGFyZSBuZWVkZWQgYmVmb3JlIG1hc3RlciBzZWxlY3Rpb24gcGhhc2UgKi8NCit7DQorI2lmZGVmIElEQ1RfU0NBTElOR19TVVBQT1JURUQNCisgIGludCBjaTsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKmNvbXBwdHI7DQorI2VuZGlmDQorDQorICAvKiBQcmV2ZW50IGFwcGxpY2F0aW9uIGZyb20gY2FsbGluZyBtZSBhdCB3cm9uZyB0aW1lcyAqLw0KKyAgaWYgKGNpbmZvLT5nbG9iYWxfc3RhdGUgIT0gRFNUQVRFX1JFQURZKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfU1RBVEUsIGNpbmZvLT5nbG9iYWxfc3RhdGUpOw0KKw0KKyNpZmRlZiBJRENUX1NDQUxJTkdfU1VQUE9SVEVEDQorDQorICAvKiBDb21wdXRlIGFjdHVhbCBvdXRwdXQgaW1hZ2UgZGltZW5zaW9ucyBhbmQgRENUIHNjYWxpbmcgY2hvaWNlcy4gKi8NCisgIGlmIChjaW5mby0+c2NhbGVfbnVtICogOCA8PSBjaW5mby0+c2NhbGVfZGVub20pIHsNCisgICAgLyogUHJvdmlkZSAxLzggc2NhbGluZyAqLw0KKyAgICBjaW5mby0+b3V0cHV0X3dpZHRoID0gKEpESU1FTlNJT04pDQorICAgICAgamRpdl9yb3VuZF91cCgobG9uZykgY2luZm8tPmltYWdlX3dpZHRoLCA4TCk7DQorICAgIGNpbmZvLT5vdXRwdXRfaGVpZ2h0ID0gKEpESU1FTlNJT04pDQorICAgICAgamRpdl9yb3VuZF91cCgobG9uZykgY2luZm8tPmltYWdlX2hlaWdodCwgOEwpOw0KKyAgICBjaW5mby0+bWluX0RDVF9zY2FsZWRfc2l6ZSA9IDE7DQorICB9IGVsc2UgaWYgKGNpbmZvLT5zY2FsZV9udW0gKiA0IDw9IGNpbmZvLT5zY2FsZV9kZW5vbSkgew0KKyAgICAvKiBQcm92aWRlIDEvNCBzY2FsaW5nICovDQorICAgIGNpbmZvLT5vdXRwdXRfd2lkdGggPSAoSkRJTUVOU0lPTikNCisgICAgICBqZGl2X3JvdW5kX3VwKChsb25nKSBjaW5mby0+aW1hZ2Vfd2lkdGgsIDRMKTsNCisgICAgY2luZm8tPm91dHB1dF9oZWlnaHQgPSAoSkRJTUVOU0lPTikNCisgICAgICBqZGl2X3JvdW5kX3VwKChsb25nKSBjaW5mby0+aW1hZ2VfaGVpZ2h0LCA0TCk7DQorICAgIGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplID0gMjsNCisgIH0gZWxzZSBpZiAoY2luZm8tPnNjYWxlX251bSAqIDIgPD0gY2luZm8tPnNjYWxlX2Rlbm9tKSB7DQorICAgIC8qIFByb3ZpZGUgMS8yIHNjYWxpbmcgKi8NCisgICAgY2luZm8tPm91dHB1dF93aWR0aCA9IChKRElNRU5TSU9OKQ0KKyAgICAgIGpkaXZfcm91bmRfdXAoKGxvbmcpIGNpbmZvLT5pbWFnZV93aWR0aCwgMkwpOw0KKyAgICBjaW5mby0+b3V0cHV0X2hlaWdodCA9IChKRElNRU5TSU9OKQ0KKyAgICAgIGpkaXZfcm91bmRfdXAoKGxvbmcpIGNpbmZvLT5pbWFnZV9oZWlnaHQsIDJMKTsNCisgICAgY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemUgPSA0Ow0KKyAgfSBlbHNlIHsNCisgICAgLyogUHJvdmlkZSAxLzEgc2NhbGluZyAqLw0KKyAgICBjaW5mby0+b3V0cHV0X3dpZHRoID0gY2luZm8tPmltYWdlX3dpZHRoOw0KKyAgICBjaW5mby0+b3V0cHV0X2hlaWdodCA9IGNpbmZvLT5pbWFnZV9oZWlnaHQ7DQorICAgIGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplID0gRENUU0laRTsNCisgIH0NCisgIC8qIEluIHNlbGVjdGluZyB0aGUgYWN0dWFsIERDVCBzY2FsaW5nIGZvciBlYWNoIGNvbXBvbmVudCwgd2UgdHJ5IHRvDQorICAgKiBzY2FsZSB1cCB0aGUgY2hyb21hIGNvbXBvbmVudHMgdmlhIElEQ1Qgc2NhbGluZyByYXRoZXIgdGhhbiB1cHNhbXBsaW5nLg0KKyAgICogVGhpcyBzYXZlcyB0aW1lIGlmIHRoZSB1cHNhbXBsZXIgZ2V0cyB0byB1c2UgMToxIHNjYWxpbmcuDQorICAgKiBOb3RlIHRoaXMgY29kZSBhc3N1bWVzIHRoYXQgdGhlIHN1cHBvcnRlZCBEQ1Qgc2NhbGluZ3MgYXJlIHBvd2VycyBvZiAyLg0KKyAgICovDQorICBmb3IgKGNpID0gMCwgY29tcHB0ciA9IGNpbmZvLT5jb21wX2luZm87IGNpIDwgY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgICAgICBjaSsrLCBjb21wcHRyKyspIHsNCisgICAgaW50IHNzaXplID0gY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemU7DQorICAgIHdoaWxlIChzc2l6ZSA8IERDVFNJWkUgJiYNCisJICAgKGNvbXBwdHItPmhfc2FtcF9mYWN0b3IgKiBzc2l6ZSAqIDIgPD0NCisJICAgIGNpbmZvLT5tYXhfaF9zYW1wX2ZhY3RvciAqIGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplKSAmJg0KKwkgICAoY29tcHB0ci0+dl9zYW1wX2ZhY3RvciAqIHNzaXplICogMiA8PQ0KKwkgICAgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yICogY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemUpKSB7DQorICAgICAgc3NpemUgPSBzc2l6ZSAqIDI7DQorICAgIH0NCisgICAgY29tcHB0ci0+RENUX3NjYWxlZF9zaXplID0gc3NpemU7DQorICB9DQorDQorICAvKiBSZWNvbXB1dGUgZG93bnNhbXBsZWQgZGltZW5zaW9ucyBvZiBjb21wb25lbnRzOw0KKyAgICogYXBwbGljYXRpb24gbmVlZHMgdG8ga25vdyB0aGVzZSBpZiB1c2luZyByYXcgZG93bnNhbXBsZWQgZGF0YS4NCisgICAqLw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIC8qIFNpemUgaW4gc2FtcGxlcywgYWZ0ZXIgSURDVCBzY2FsaW5nICovDQorICAgIGNvbXBwdHItPmRvd25zYW1wbGVkX3dpZHRoID0gKEpESU1FTlNJT04pDQorICAgICAgamRpdl9yb3VuZF91cCgobG9uZykgY2luZm8tPmltYWdlX3dpZHRoICoNCisJCSAgICAobG9uZykgKGNvbXBwdHItPmhfc2FtcF9mYWN0b3IgKiBjb21wcHRyLT5EQ1Rfc2NhbGVkX3NpemUpLA0KKwkJICAgIChsb25nKSAoY2luZm8tPm1heF9oX3NhbXBfZmFjdG9yICogRENUU0laRSkpOw0KKyAgICBjb21wcHRyLT5kb3duc2FtcGxlZF9oZWlnaHQgPSAoSkRJTUVOU0lPTikNCisgICAgICBqZGl2X3JvdW5kX3VwKChsb25nKSBjaW5mby0+aW1hZ2VfaGVpZ2h0ICoNCisJCSAgICAobG9uZykgKGNvbXBwdHItPnZfc2FtcF9mYWN0b3IgKiBjb21wcHRyLT5EQ1Rfc2NhbGVkX3NpemUpLA0KKwkJICAgIChsb25nKSAoY2luZm8tPm1heF92X3NhbXBfZmFjdG9yICogRENUU0laRSkpOw0KKyAgfQ0KKw0KKyNlbHNlIC8qICFJRENUX1NDQUxJTkdfU1VQUE9SVEVEICovDQorDQorICAvKiBIYXJkd2lyZSBpdCB0byAibm8gc2NhbGluZyIgKi8NCisgIGNpbmZvLT5vdXRwdXRfd2lkdGggPSBjaW5mby0+aW1hZ2Vfd2lkdGg7DQorICBjaW5mby0+b3V0cHV0X2hlaWdodCA9IGNpbmZvLT5pbWFnZV9oZWlnaHQ7DQorICAvKiBqZGlucHV0LmMgaGFzIGFscmVhZHkgaW5pdGlhbGl6ZWQgRENUX3NjYWxlZF9zaXplIHRvIERDVFNJWkUsDQorICAgKiBhbmQgaGFzIGNvbXB1dGVkIHVuc2NhbGVkIGRvd25zYW1wbGVkX3dpZHRoIGFuZCBkb3duc2FtcGxlZF9oZWlnaHQuDQorICAgKi8NCisNCisjZW5kaWYgLyogSURDVF9TQ0FMSU5HX1NVUFBPUlRFRCAqLw0KKw0KKyAgLyogUmVwb3J0IG51bWJlciBvZiBjb21wb25lbnRzIGluIHNlbGVjdGVkIGNvbG9yc3BhY2UuICovDQorICAvKiBQcm9iYWJseSB0aGlzIHNob3VsZCBiZSBpbiB0aGUgY29sb3IgY29udmVyc2lvbiBtb2R1bGUuLi4gKi8NCisgIHN3aXRjaCAoY2luZm8tPm91dF9jb2xvcl9zcGFjZSkgew0KKyAgY2FzZSBKQ1NfR1JBWVNDQUxFOg0KKyAgICBjaW5mby0+b3V0X2NvbG9yX2NvbXBvbmVudHMgPSAxOw0KKyAgICBicmVhazsNCisgIGNhc2UgSkNTX1JHQjoNCisjaWYgUkdCX1BJWEVMU0laRSAhPSAzDQorICAgIGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50cyA9IFJHQl9QSVhFTFNJWkU7DQorICAgIGJyZWFrOw0KKyNlbmRpZiAvKiBlbHNlIHNoYXJlIGNvZGUgd2l0aCBZQ2JDciAqLw0KKyAgY2FzZSBKQ1NfWUNiQ3I6DQorICAgIGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50cyA9IDM7DQorICAgIGJyZWFrOw0KKyAgY2FzZSBKQ1NfQ01ZSzoNCisgIGNhc2UgSkNTX1lDQ0s6DQorICAgIGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50cyA9IDQ7DQorICAgIGJyZWFrOw0KKyAgZGVmYXVsdDoJCQkvKiBlbHNlIG11c3QgYmUgc2FtZSBjb2xvcnNwYWNlIGFzIGluIGZpbGUgKi8NCisgICAgY2luZm8tPm91dF9jb2xvcl9jb21wb25lbnRzID0gY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgICBicmVhazsNCisgIH0NCisgIGNpbmZvLT5vdXRwdXRfY29tcG9uZW50cyA9IChjaW5mby0+cXVhbnRpemVfY29sb3JzID8gMSA6DQorCQkJICAgICAgY2luZm8tPm91dF9jb2xvcl9jb21wb25lbnRzKTsNCisNCisgIC8qIFNlZSBpZiB1cHNhbXBsZXIgd2lsbCB3YW50IHRvIGVtaXQgbW9yZSB0aGFuIG9uZSByb3cgYXQgYSB0aW1lICovDQorICBpZiAodXNlX21lcmdlZF91cHNhbXBsZShjaW5mbykpDQorICAgIGNpbmZvLT5yZWNfb3V0YnVmX2hlaWdodCA9IGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvcjsNCisgIGVsc2UNCisgICAgY2luZm8tPnJlY19vdXRidWZfaGVpZ2h0ID0gMTsNCit9DQorDQorDQorLyoNCisgKiBTZXZlcmFsIGRlY29tcHJlc3Npb24gcHJvY2Vzc2VzIG5lZWQgdG8gcmFuZ2UtbGltaXQgdmFsdWVzIHRvIHRoZSByYW5nZQ0KKyAqIDAuLk1BWEpTQU1QTEU7IHRoZSBpbnB1dCB2YWx1ZSBtYXkgZmFsbCBzb21ld2hhdCBvdXRzaWRlIHRoaXMgcmFuZ2UNCisgKiBkdWUgdG8gbm9pc2UgaW50cm9kdWNlZCBieSBxdWFudGl6YXRpb24sIHJvdW5kb2ZmIGVycm9yLCBldGMuICBUaGVzZQ0KKyAqIHByb2Nlc3NlcyBhcmUgaW5uZXIgbG9vcHMgYW5kIG5lZWQgdG8gYmUgYXMgZmFzdCBhcyBwb3NzaWJsZS4gIE9uIG1vc3QNCisgKiBtYWNoaW5lcywgcGFydGljdWxhcmx5IENQVXMgd2l0aCBwaXBlbGluZXMgb3IgaW5zdHJ1Y3Rpb24gcHJlZmV0Y2gsDQorICogYSAoc3Vic2NyaXB0LWNoZWNrLWxlc3MpIEMgdGFibGUgbG9va3VwDQorICoJCXggPSBzYW1wbGVfcmFuZ2VfbGltaXRbeF07DQorICogaXMgZmFzdGVyIHRoYW4gZXhwbGljaXQgdGVzdHMNCisgKgkJaWYgKHggPCAwKSAgeCA9IDA7DQorICoJCWVsc2UgaWYgKHggPiBNQVhKU0FNUExFKSAgeCA9IE1BWEpTQU1QTEU7DQorICogVGhlc2UgcHJvY2Vzc2VzIGFsbCB1c2UgYSBjb21tb24gdGFibGUgcHJlcGFyZWQgYnkgdGhlIHJvdXRpbmUgYmVsb3cuDQorICoNCisgKiBGb3IgbW9zdCBzdGVwcyB3ZSBjYW4gbWF0aGVtYXRpY2FsbHkgZ3VhcmFudGVlIHRoYXQgdGhlIGluaXRpYWwgdmFsdWUNCisgKiBvZiB4IGlzIHdpdGhpbiBNQVhKU0FNUExFKzEgb2YgdGhlIGxlZ2FsIHJhbmdlLCBzbyBhIHRhYmxlIHJ1bm5pbmcgZnJvbQ0KKyAqIC0oTUFYSlNBTVBMRSsxKSB0byAyKk1BWEpTQU1QTEUrMSBpcyBzdWZmaWNpZW50LiAgQnV0IGZvciB0aGUgaW5pdGlhbA0KKyAqIGxpbWl0aW5nIHN0ZXAgKGp1c3QgYWZ0ZXIgdGhlIElEQ1QpLCBhIHdpbGRseSBvdXQtb2YtcmFuZ2UgdmFsdWUgaXMgDQorICogcG9zc2libGUgaWYgdGhlIGlucHV0IGRhdGEgaXMgY29ycnVwdC4gIFRvIGF2b2lkIGFueSBjaGFuY2Ugb2YgaW5kZXhpbmcNCisgKiBvZmYgdGhlIGVuZCBvZiBtZW1vcnkgYW5kIGdldHRpbmcgYSBiYWQtcG9pbnRlciB0cmFwLCB3ZSBwZXJmb3JtIHRoZQ0KKyAqIHBvc3QtSURDVCBsaW1pdGluZyB0aHVzOg0KKyAqCQl4ID0gcmFuZ2VfbGltaXRbeCAmIE1BU0tdOw0KKyAqIHdoZXJlIE1BU0sgaXMgMiBiaXRzIHdpZGVyIHRoYW4gbGVnYWwgc2FtcGxlIGRhdGEsIGllIDEwIGJpdHMgZm9yIDgtYml0DQorICogc2FtcGxlcy4gIFVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHRoaXMgaXMgbW9yZSB0aGFuIGVub3VnaCByYW5nZSBhbmQNCisgKiBhIGNvcnJlY3Qgb3V0cHV0IHdpbGwgYmUgZ2VuZXJhdGVkOyB3aXRoIGJvZ3VzIGlucHV0IGRhdGEgdGhlIG1hc2sgd2lsbA0KKyAqIGNhdXNlIHdyYXBhcm91bmQsIGFuZCB3ZSB3aWxsIHNhZmVseSBnZW5lcmF0ZSBhIGJvZ3VzLWJ1dC1pbi1yYW5nZSBvdXRwdXQuDQorICogRm9yIHRoZSBwb3N0LUlEQ1Qgc3RlcCwgd2Ugd2FudCB0byBjb252ZXJ0IHRoZSBkYXRhIGZyb20gc2lnbmVkIHRvIHVuc2lnbmVkDQorICogcmVwcmVzZW50YXRpb24gYnkgYWRkaW5nIENFTlRFUkpTQU1QTEUgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHdlIGxpbWl0IGl0Lg0KKyAqIFNvIHRoZSBwb3N0LUlEQ1QgbGltaXRpbmcgdGFibGUgZW5kcyB1cCBsb29raW5nIGxpa2UgdGhpczoNCisgKiAgIENFTlRFUkpTQU1QTEUsQ0VOVEVSSlNBTVBMRSsxLC4uLixNQVhKU0FNUExFLA0KKyAqICAgTUFYSlNBTVBMRSAocmVwZWF0IDIqKE1BWEpTQU1QTEUrMSktQ0VOVEVSSlNBTVBMRSB0aW1lcyksDQorICogICAwICAgICAgICAgIChyZXBlYXQgMiooTUFYSlNBTVBMRSsxKS1DRU5URVJKU0FNUExFIHRpbWVzKSwNCisgKiAgIDAsMSwuLi4sQ0VOVEVSSlNBTVBMRS0xDQorICogTmVnYXRpdmUgaW5wdXRzIHNlbGVjdCB2YWx1ZXMgZnJvbSB0aGUgdXBwZXIgaGFsZiBvZiB0aGUgdGFibGUgYWZ0ZXINCisgKiBtYXNraW5nLg0KKyAqDQorICogV2UgY2FuIHNhdmUgc29tZSBzcGFjZSBieSBvdmVybGFwcGluZyB0aGUgc3RhcnQgb2YgdGhlIHBvc3QtSURDVCB0YWJsZQ0KKyAqIHdpdGggdGhlIHNpbXBsZXIgcmFuZ2UgbGltaXRpbmcgdGFibGUuICBUaGUgcG9zdC1JRENUIHRhYmxlIGJlZ2lucyBhdA0KKyAqIHNhbXBsZV9yYW5nZV9saW1pdCArIENFTlRFUkpTQU1QTEUuDQorICoNCisgKiBOb3RlIHRoYXQgdGhlIHRhYmxlIGlzIGFsbG9jYXRlZCBpbiBuZWFyIGRhdGEgc3BhY2Ugb24gUENzOyBpdCdzIHNtYWxsDQorICogZW5vdWdoIGFuZCB1c2VkIG9mdGVuIGVub3VnaCB0byBqdXN0aWZ5IHRoaXMuDQorICovDQorDQorTE9DQUwodm9pZCkNCitwcmVwYXJlX3JhbmdlX2xpbWl0X3RhYmxlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KKy8qIEFsbG9jYXRlIGFuZCBmaWxsIGluIHRoZSBzYW1wbGVfcmFuZ2VfbGltaXQgdGFibGUgKi8NCit7DQorICBKU0FNUExFICogdGFibGU7DQorICBpbnQgaTsNCisNCisgIHRhYmxlID0gKEpTQU1QTEUgKikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCSg1ICogKE1BWEpTQU1QTEUrMSkgKyBDRU5URVJKU0FNUExFKSAqIFNJWkVPRihKU0FNUExFKSk7DQorICB0YWJsZSArPSAoTUFYSlNBTVBMRSsxKTsJLyogYWxsb3cgbmVnYXRpdmUgc3Vic2NyaXB0cyBvZiBzaW1wbGUgdGFibGUgKi8NCisgIGNpbmZvLT5zYW1wbGVfcmFuZ2VfbGltaXQgPSB0YWJsZTsNCisgIC8qIEZpcnN0IHNlZ21lbnQgb2YgInNpbXBsZSIgdGFibGU6IGxpbWl0W3hdID0gMCBmb3IgeCA8IDAgKi8NCisgIE1FTVpFUk8odGFibGUgLSAoTUFYSlNBTVBMRSsxKSwgKE1BWEpTQU1QTEUrMSkgKiBTSVpFT0YoSlNBTVBMRSkpOw0KKyAgLyogTWFpbiBwYXJ0IG9mICJzaW1wbGUiIHRhYmxlOiBsaW1pdFt4XSA9IHggKi8NCisgIGZvciAoaSA9IDA7IGkgPD0gTUFYSlNBTVBMRTsgaSsrKQ0KKyAgICB0YWJsZVtpXSA9IChKU0FNUExFKSBpOw0KKyAgdGFibGUgKz0gQ0VOVEVSSlNBTVBMRTsJLyogUG9pbnQgdG8gd2hlcmUgcG9zdC1JRENUIHRhYmxlIHN0YXJ0cyAqLw0KKyAgLyogRW5kIG9mIHNpbXBsZSB0YWJsZSwgcmVzdCBvZiBmaXJzdCBoYWxmIG9mIHBvc3QtSURDVCB0YWJsZSAqLw0KKyAgZm9yIChpID0gQ0VOVEVSSlNBTVBMRTsgaSA8IDIqKE1BWEpTQU1QTEUrMSk7IGkrKykNCisgICAgdGFibGVbaV0gPSBNQVhKU0FNUExFOw0KKyAgLyogU2Vjb25kIGhhbGYgb2YgcG9zdC1JRENUIHRhYmxlICovDQorICBNRU1aRVJPKHRhYmxlICsgKDIgKiAoTUFYSlNBTVBMRSsxKSksDQorCSAgKDIgKiAoTUFYSlNBTVBMRSsxKSAtIENFTlRFUkpTQU1QTEUpICogU0laRU9GKEpTQU1QTEUpKTsNCisgIE1FTUNPUFkodGFibGUgKyAoNCAqIChNQVhKU0FNUExFKzEpIC0gQ0VOVEVSSlNBTVBMRSksDQorCSAgY2luZm8tPnNhbXBsZV9yYW5nZV9saW1pdCwgQ0VOVEVSSlNBTVBMRSAqIFNJWkVPRihKU0FNUExFKSk7DQorfQ0KKw0KKw0KKy8qDQorICogTWFzdGVyIHNlbGVjdGlvbiBvZiBkZWNvbXByZXNzaW9uIG1vZHVsZXMuDQorICogVGhpcyBpcyBkb25lIG9uY2UgYXQganBlZ19zdGFydF9kZWNvbXByZXNzIHRpbWUuICBXZSBkZXRlcm1pbmUNCisgKiB3aGljaCBtb2R1bGVzIHdpbGwgYmUgdXNlZCBhbmQgZ2l2ZSB0aGVtIGFwcHJvcHJpYXRlIGluaXRpYWxpemF0aW9uIGNhbGxzLg0KKyAqIFdlIGFsc28gaW5pdGlhbGl6ZSB0aGUgZGVjb21wcmVzc29yIGlucHV0IHNpZGUgdG8gYmVnaW4gY29uc3VtaW5nIGRhdGEuDQorICoNCisgKiBTaW5jZSBqcGVnX3JlYWRfaGVhZGVyIGhhcyBmaW5pc2hlZCwgd2Uga25vdyB3aGF0IGlzIGluIHRoZSBTT0YNCisgKiBhbmQgKGZpcnN0KSBTT1MgbWFya2Vycy4gIFdlIGFsc28gaGF2ZSBhbGwgdGhlIGFwcGxpY2F0aW9uIHBhcmFtZXRlcg0KKyAqIHNldHRpbmdzLg0KKyAqLw0KKw0KK0xPQ0FMKHZvaWQpDQorbWFzdGVyX3NlbGVjdGlvbiAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBteV9tYXN0ZXJfcHRyIG1hc3RlciA9IChteV9tYXN0ZXJfcHRyKSBjaW5mby0+bWFzdGVyOw0KKyAgYm9vbGVhbiB1c2VfY19idWZmZXI7DQorICBsb25nIHNhbXBsZXNwZXJyb3c7DQorICBKRElNRU5TSU9OIGpkX3NhbXBsZXNwZXJyb3c7DQorDQorICAvKiBJbml0aWFsaXplIGRpbWVuc2lvbnMgYW5kIG90aGVyIHN0dWZmICovDQorICBqcGVnX2NhbGNfb3V0cHV0X2RpbWVuc2lvbnMoY2luZm8pOw0KKyAgcHJlcGFyZV9yYW5nZV9saW1pdF90YWJsZShjaW5mbyk7DQorDQorICAvKiBXaWR0aCBvZiBhbiBvdXRwdXQgc2NhbmxpbmUgbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIEpESU1FTlNJT04uICovDQorICBzYW1wbGVzcGVycm93ID0gKGxvbmcpIGNpbmZvLT5vdXRwdXRfd2lkdGggKiAobG9uZykgY2luZm8tPm91dF9jb2xvcl9jb21wb25lbnRzOw0KKyAgamRfc2FtcGxlc3BlcnJvdyA9IChKRElNRU5TSU9OKSBzYW1wbGVzcGVycm93Ow0KKyAgaWYgKChsb25nKSBqZF9zYW1wbGVzcGVycm93ICE9IHNhbXBsZXNwZXJyb3cpDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfV0lEVEhfT1ZFUkZMT1cpOw0KKw0KKyAgLyogSW5pdGlhbGl6ZSBteSBwcml2YXRlIHN0YXRlICovDQorICBtYXN0ZXItPnBhc3NfbnVtYmVyID0gMDsNCisgIG1hc3Rlci0+dXNpbmdfbWVyZ2VkX3Vwc2FtcGxlID0gdXNlX21lcmdlZF91cHNhbXBsZShjaW5mbyk7DQorDQorICAvKiBDb2xvciBxdWFudGl6ZXIgc2VsZWN0aW9uICovDQorICBtYXN0ZXItPnF1YW50aXplcl8xcGFzcyA9IE5VTEw7DQorICBtYXN0ZXItPnF1YW50aXplcl8ycGFzcyA9IE5VTEw7DQorICAvKiBObyBtb2RlIGNoYW5nZXMgaWYgbm90IHVzaW5nIGJ1ZmZlcmVkLWltYWdlIG1vZGUuICovDQorICBpZiAoISBjaW5mby0+cXVhbnRpemVfY29sb3JzIHx8ICEgY2luZm8tPmJ1ZmZlcmVkX2ltYWdlKSB7DQorICAgIGNpbmZvLT5lbmFibGVfMXBhc3NfcXVhbnQgPSBGQUxTRTsNCisgICAgY2luZm8tPmVuYWJsZV9leHRlcm5hbF9xdWFudCA9IEZBTFNFOw0KKyAgICBjaW5mby0+ZW5hYmxlXzJwYXNzX3F1YW50ID0gRkFMU0U7DQorICB9DQorICBpZiAoY2luZm8tPnF1YW50aXplX2NvbG9ycykgew0KKyAgICBpZiAoY2luZm8tPnJhd19kYXRhX291dCkNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX05PVElNUEwpOw0KKyAgICAvKiAyLXBhc3MgcXVhbnRpemVyIG9ubHkgd29ya3MgaW4gMy1jb21wb25lbnQgY29sb3Igc3BhY2UuICovDQorICAgIGlmIChjaW5mby0+b3V0X2NvbG9yX2NvbXBvbmVudHMgIT0gMykgew0KKyAgICAgIGNpbmZvLT5lbmFibGVfMXBhc3NfcXVhbnQgPSBUUlVFOw0KKyAgICAgIGNpbmZvLT5lbmFibGVfZXh0ZXJuYWxfcXVhbnQgPSBGQUxTRTsNCisgICAgICBjaW5mby0+ZW5hYmxlXzJwYXNzX3F1YW50ID0gRkFMU0U7DQorICAgICAgY2luZm8tPmNvbG9ybWFwID0gTlVMTDsNCisgICAgfSBlbHNlIGlmIChjaW5mby0+Y29sb3JtYXAgIT0gTlVMTCkgew0KKyAgICAgIGNpbmZvLT5lbmFibGVfZXh0ZXJuYWxfcXVhbnQgPSBUUlVFOw0KKyAgICB9IGVsc2UgaWYgKGNpbmZvLT50d29fcGFzc19xdWFudGl6ZSkgew0KKyAgICAgIGNpbmZvLT5lbmFibGVfMnBhc3NfcXVhbnQgPSBUUlVFOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIGNpbmZvLT5lbmFibGVfMXBhc3NfcXVhbnQgPSBUUlVFOw0KKyAgICB9DQorDQorICAgIGlmIChjaW5mby0+ZW5hYmxlXzFwYXNzX3F1YW50KSB7DQorI2lmZGVmIFFVQU5UXzFQQVNTX1NVUFBPUlRFRA0KKyAgICAgIGppbml0XzFwYXNzX3F1YW50aXplcihjaW5mbyk7DQorICAgICAgbWFzdGVyLT5xdWFudGl6ZXJfMXBhc3MgPSBjaW5mby0+Y3F1YW50aXplOw0KKyNlbHNlDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyNlbmRpZg0KKyAgICB9DQorDQorICAgIC8qIFdlIHVzZSB0aGUgMi1wYXNzIGNvZGUgdG8gbWFwIHRvIGV4dGVybmFsIGNvbG9ybWFwcy4gKi8NCisgICAgaWYgKGNpbmZvLT5lbmFibGVfMnBhc3NfcXVhbnQgfHwgY2luZm8tPmVuYWJsZV9leHRlcm5hbF9xdWFudCkgew0KKyNpZmRlZiBRVUFOVF8yUEFTU19TVVBQT1JURUQNCisgICAgICBqaW5pdF8ycGFzc19xdWFudGl6ZXIoY2luZm8pOw0KKyAgICAgIG1hc3Rlci0+cXVhbnRpemVyXzJwYXNzID0gY2luZm8tPmNxdWFudGl6ZTsNCisjZWxzZQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfTk9UX0NPTVBJTEVEKTsNCisjZW5kaWYNCisgICAgfQ0KKyAgICAvKiBJZiBib3RoIHF1YW50aXplcnMgYXJlIGluaXRpYWxpemVkLCB0aGUgMi1wYXNzIG9uZSBpcyBsZWZ0IGFjdGl2ZTsNCisgICAgICogdGhpcyBpcyBuZWNlc3NhcnkgZm9yIHN0YXJ0aW5nIHdpdGggcXVhbnRpemF0aW9uIHRvIGFuIGV4dGVybmFsIG1hcC4NCisgICAgICovDQorICB9DQorDQorICAvKiBQb3N0LXByb2Nlc3Npbmc6IGluIHBhcnRpY3VsYXIsIGNvbG9yIGNvbnZlcnNpb24gZmlyc3QgKi8NCisgIGlmICghIGNpbmZvLT5yYXdfZGF0YV9vdXQpIHsNCisgICAgaWYgKG1hc3Rlci0+dXNpbmdfbWVyZ2VkX3Vwc2FtcGxlKSB7DQorI2lmZGVmIFVQU0FNUExFX01FUkdJTkdfU1VQUE9SVEVEDQorICAgICAgamluaXRfbWVyZ2VkX3Vwc2FtcGxlcihjaW5mbyk7IC8qIGRvZXMgY29sb3IgY29udmVyc2lvbiB0b28gKi8NCisjZWxzZQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfTk9UX0NPTVBJTEVEKTsNCisjZW5kaWYNCisgICAgfSBlbHNlIHsNCisgICAgICBqaW5pdF9jb2xvcl9kZWNvbnZlcnRlcihjaW5mbyk7DQorICAgICAgamluaXRfdXBzYW1wbGVyKGNpbmZvKTsNCisgICAgfQ0KKyAgICBqaW5pdF9kX3Bvc3RfY29udHJvbGxlcihjaW5mbywgY2luZm8tPmVuYWJsZV8ycGFzc19xdWFudCk7DQorICB9DQorICAvKiBJbnZlcnNlIERDVCAqLw0KKyAgamluaXRfaW52ZXJzZV9kY3QoY2luZm8pOw0KKyAgLyogRW50cm9weSBkZWNvZGluZzogZWl0aGVyIEh1ZmZtYW4gb3IgYXJpdGhtZXRpYyBjb2RpbmcuICovDQorICBpZiAoY2luZm8tPmFyaXRoX2NvZGUpIHsNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9BUklUSF9OT1RJTVBMKTsNCisgIH0gZWxzZSB7DQorICAgIGlmIChjaW5mby0+cHJvZ3Jlc3NpdmVfbW9kZSkgew0KKyNpZmRlZiBEX1BST0dSRVNTSVZFX1NVUFBPUlRFRA0KKyAgICAgIGppbml0X3BodWZmX2RlY29kZXIoY2luZm8pOw0KKyNlbHNlDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyNlbmRpZg0KKyAgICB9IGVsc2UNCisgICAgICBqaW5pdF9odWZmX2RlY29kZXIoY2luZm8pOw0KKyAgfQ0KKw0KKyAgLyogSW5pdGlhbGl6ZSBwcmluY2lwYWwgYnVmZmVyIGNvbnRyb2xsZXJzLiAqLw0KKyAgdXNlX2NfYnVmZmVyID0gY2luZm8tPmlucHV0Y3RsLT5oYXNfbXVsdGlwbGVfc2NhbnMgfHwgY2luZm8tPmJ1ZmZlcmVkX2ltYWdlOw0KKyAgamluaXRfZF9jb2VmX2NvbnRyb2xsZXIoY2luZm8sIHVzZV9jX2J1ZmZlcik7DQorDQorICBpZiAoISBjaW5mby0+cmF3X2RhdGFfb3V0KQ0KKyAgICBqaW5pdF9kX21haW5fY29udHJvbGxlcihjaW5mbywgRkFMU0UgLyogbmV2ZXIgbmVlZCBmdWxsIGJ1ZmZlciBoZXJlICovKTsNCisNCisgIC8qIFdlIGNhbiBub3cgdGVsbCB0aGUgbWVtb3J5IG1hbmFnZXIgdG8gYWxsb2NhdGUgdmlydHVhbCBhcnJheXMuICovDQorICAoKmNpbmZvLT5tZW0tPnJlYWxpemVfdmlydF9hcnJheXMpICgoal9jb21tb25fcHRyKSBjaW5mbyk7DQorDQorICAvKiBJbml0aWFsaXplIGlucHV0IHNpZGUgb2YgZGVjb21wcmVzc29yIHRvIGNvbnN1bWUgZmlyc3Qgc2Nhbi4gKi8NCisgICgqY2luZm8tPmlucHV0Y3RsLT5zdGFydF9pbnB1dF9wYXNzKSAoY2luZm8pOw0KKw0KKyNpZmRlZiBEX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQNCisgIC8qIElmIGpwZWdfc3RhcnRfZGVjb21wcmVzcyB3aWxsIHJlYWQgdGhlIHdob2xlIGZpbGUsIGluaXRpYWxpemUNCisgICAqIHByb2dyZXNzIG1vbml0b3JpbmcgYXBwcm9wcmlhdGVseS4gIFRoZSBpbnB1dCBzdGVwIGlzIGNvdW50ZWQNCisgICAqIGFzIG9uZSBwYXNzLg0KKyAgICovDQorICBpZiAoY2luZm8tPnByb2dyZXNzICE9IE5VTEwgJiYgISBjaW5mby0+YnVmZmVyZWRfaW1hZ2UgJiYNCisgICAgICBjaW5mby0+aW5wdXRjdGwtPmhhc19tdWx0aXBsZV9zY2Fucykgew0KKyAgICBpbnQgbnNjYW5zOw0KKyAgICAvKiBFc3RpbWF0ZSBudW1iZXIgb2Ygc2NhbnMgdG8gc2V0IHBhc3NfbGltaXQuICovDQorICAgIGlmIChjaW5mby0+cHJvZ3Jlc3NpdmVfbW9kZSkgew0KKyAgICAgIC8qIEFyYml0cmFyaWx5IGVzdGltYXRlIDIgaW50ZXJsZWF2ZWQgREMgc2NhbnMgKyAzIEFDIHNjYW5zL2NvbXBvbmVudC4gKi8NCisgICAgICBuc2NhbnMgPSAyICsgMyAqIGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgfSBlbHNlIHsNCisgICAgICAvKiBGb3IgYSBub25wcm9ncmVzc2l2ZSBtdWx0aXNjYW4gZmlsZSwgZXN0aW1hdGUgMSBzY2FuIHBlciBjb21wb25lbnQuICovDQorICAgICAgbnNjYW5zID0gY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgICB9DQorICAgIGNpbmZvLT5wcm9ncmVzcy0+cGFzc19jb3VudGVyID0gMEw7DQorICAgIGNpbmZvLT5wcm9ncmVzcy0+cGFzc19saW1pdCA9IChsb25nKSBjaW5mby0+dG90YWxfaU1DVV9yb3dzICogbnNjYW5zOw0KKyAgICBjaW5mby0+cHJvZ3Jlc3MtPmNvbXBsZXRlZF9wYXNzZXMgPSAwOw0KKyAgICBjaW5mby0+cHJvZ3Jlc3MtPnRvdGFsX3Bhc3NlcyA9IChjaW5mby0+ZW5hYmxlXzJwYXNzX3F1YW50ID8gMyA6IDIpOw0KKyAgICAvKiBDb3VudCB0aGUgaW5wdXQgcGFzcyBhcyBkb25lICovDQorICAgIG1hc3Rlci0+cGFzc19udW1iZXIrKzsNCisgIH0NCisjZW5kaWYgLyogRF9NVUxUSVNDQU5fRklMRVNfU1VQUE9SVEVEICovDQorfQ0KKw0KKw0KKy8qDQorICogUGVyLXBhc3Mgc2V0dXAuDQorICogVGhpcyBpcyBjYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIG91dHB1dCBwYXNzLiAgV2UgZGV0ZXJtaW5lIHdoaWNoDQorICogbW9kdWxlcyB3aWxsIGJlIGFjdGl2ZSBkdXJpbmcgdGhpcyBwYXNzIGFuZCBnaXZlIHRoZW0gYXBwcm9wcmlhdGUNCisgKiBzdGFydF9wYXNzIGNhbGxzLiAgV2UgYWxzbyBzZXQgaXNfZHVtbXlfcGFzcyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoaXMNCisgKiBpcyBhICJyZWFsIiBvdXRwdXQgcGFzcyBvciBhIGR1bW15IHBhc3MgZm9yIGNvbG9yIHF1YW50aXphdGlvbi4NCisgKiAoSW4gdGhlIGxhdHRlciBjYXNlLCBqZGFwaXN0ZC5jIHdpbGwgY3JhbmsgdGhlIHBhc3MgdG8gY29tcGxldGlvbi4pDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorcHJlcGFyZV9mb3Jfb3V0cHV0X3Bhc3MgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfbWFzdGVyX3B0ciBtYXN0ZXIgPSAobXlfbWFzdGVyX3B0cikgY2luZm8tPm1hc3RlcjsNCisNCisgIGlmIChtYXN0ZXItPnB1Yi5pc19kdW1teV9wYXNzKSB7DQorI2lmZGVmIFFVQU5UXzJQQVNTX1NVUFBPUlRFRA0KKyAgICAvKiBGaW5hbCBwYXNzIG9mIDItcGFzcyBxdWFudGl6YXRpb24gKi8NCisgICAgbWFzdGVyLT5wdWIuaXNfZHVtbXlfcGFzcyA9IEZBTFNFOw0KKyAgICAoKmNpbmZvLT5jcXVhbnRpemUtPnN0YXJ0X3Bhc3MpIChjaW5mbywgRkFMU0UpOw0KKyAgICAoKmNpbmZvLT5wb3N0LT5zdGFydF9wYXNzKSAoY2luZm8sIEpCVUZfQ1JBTktfREVTVCk7DQorICAgICgqY2luZm8tPm1haW4tPnN0YXJ0X3Bhc3MpIChjaW5mbywgSkJVRl9DUkFOS19ERVNUKTsNCisjZWxzZQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX05PVF9DT01QSUxFRCk7DQorI2VuZGlmIC8qIFFVQU5UXzJQQVNTX1NVUFBPUlRFRCAqLw0KKyAgfSBlbHNlIHsNCisgICAgaWYgKGNpbmZvLT5xdWFudGl6ZV9jb2xvcnMgJiYgY2luZm8tPmNvbG9ybWFwID09IE5VTEwpIHsNCisgICAgICAvKiBTZWxlY3QgbmV3IHF1YW50aXphdGlvbiBtZXRob2QgKi8NCisgICAgICBpZiAoY2luZm8tPnR3b19wYXNzX3F1YW50aXplICYmIGNpbmZvLT5lbmFibGVfMnBhc3NfcXVhbnQpIHsNCisJY2luZm8tPmNxdWFudGl6ZSA9IG1hc3Rlci0+cXVhbnRpemVyXzJwYXNzOw0KKwltYXN0ZXItPnB1Yi5pc19kdW1teV9wYXNzID0gVFJVRTsNCisgICAgICB9IGVsc2UgaWYgKGNpbmZvLT5lbmFibGVfMXBhc3NfcXVhbnQpIHsNCisJY2luZm8tPmNxdWFudGl6ZSA9IG1hc3Rlci0+cXVhbnRpemVyXzFwYXNzOw0KKyAgICAgIH0gZWxzZSB7DQorCUVSUkVYSVQoY2luZm8sIEpFUlJfTU9ERV9DSEFOR0UpOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgICAoKmNpbmZvLT5pZGN0LT5zdGFydF9wYXNzKSAoY2luZm8pOw0KKyAgICAoKmNpbmZvLT5jb2VmLT5zdGFydF9vdXRwdXRfcGFzcykgKGNpbmZvKTsNCisgICAgaWYgKCEgY2luZm8tPnJhd19kYXRhX291dCkgew0KKyAgICAgIGlmICghIG1hc3Rlci0+dXNpbmdfbWVyZ2VkX3Vwc2FtcGxlKQ0KKwkoKmNpbmZvLT5jY29udmVydC0+c3RhcnRfcGFzcykgKGNpbmZvKTsNCisgICAgICAoKmNpbmZvLT51cHNhbXBsZS0+c3RhcnRfcGFzcykgKGNpbmZvKTsNCisgICAgICBpZiAoY2luZm8tPnF1YW50aXplX2NvbG9ycykNCisJKCpjaW5mby0+Y3F1YW50aXplLT5zdGFydF9wYXNzKSAoY2luZm8sIG1hc3Rlci0+cHViLmlzX2R1bW15X3Bhc3MpOw0KKyAgICAgICgqY2luZm8tPnBvc3QtPnN0YXJ0X3Bhc3MpIChjaW5mbywNCisJICAgIChtYXN0ZXItPnB1Yi5pc19kdW1teV9wYXNzID8gSkJVRl9TQVZFX0FORF9QQVNTIDogSkJVRl9QQVNTX1RIUlUpKTsNCisgICAgICAoKmNpbmZvLT5tYWluLT5zdGFydF9wYXNzKSAoY2luZm8sIEpCVUZfUEFTU19USFJVKTsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgLyogU2V0IHVwIHByb2dyZXNzIG1vbml0b3IncyBwYXNzIGluZm8gaWYgcHJlc2VudCAqLw0KKyAgaWYgKGNpbmZvLT5wcm9ncmVzcyAhPSBOVUxMKSB7DQorICAgIGNpbmZvLT5wcm9ncmVzcy0+Y29tcGxldGVkX3Bhc3NlcyA9IG1hc3Rlci0+cGFzc19udW1iZXI7DQorICAgIGNpbmZvLT5wcm9ncmVzcy0+dG90YWxfcGFzc2VzID0gbWFzdGVyLT5wYXNzX251bWJlciArDQorCQkJCSAgICAobWFzdGVyLT5wdWIuaXNfZHVtbXlfcGFzcyA/IDIgOiAxKTsNCisgICAgLyogSW4gYnVmZmVyZWQtaW1hZ2UgbW9kZSwgd2UgYXNzdW1lIG9uZSBtb3JlIG91dHB1dCBwYXNzIGlmIEVPSSBub3QNCisgICAgICogeWV0IHJlYWNoZWQsIGJ1dCBubyBtb3JlIHBhc3NlcyBpZiBFT0kgaGFzIGJlZW4gcmVhY2hlZC4NCisgICAgICovDQorICAgIGlmIChjaW5mby0+YnVmZmVyZWRfaW1hZ2UgJiYgISBjaW5mby0+aW5wdXRjdGwtPmVvaV9yZWFjaGVkKSB7DQorICAgICAgY2luZm8tPnByb2dyZXNzLT50b3RhbF9wYXNzZXMgKz0gKGNpbmZvLT5lbmFibGVfMnBhc3NfcXVhbnQgPyAyIDogMSk7DQorICAgIH0NCisgIH0NCit9DQorDQorDQorLyoNCisgKiBGaW5pc2ggdXAgYXQgZW5kIG9mIGFuIG91dHB1dCBwYXNzLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2ZpbmlzaF9vdXRwdXRfcGFzcyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBteV9tYXN0ZXJfcHRyIG1hc3RlciA9IChteV9tYXN0ZXJfcHRyKSBjaW5mby0+bWFzdGVyOw0KKw0KKyAgaWYgKGNpbmZvLT5xdWFudGl6ZV9jb2xvcnMpDQorICAgICgqY2luZm8tPmNxdWFudGl6ZS0+ZmluaXNoX3Bhc3MpIChjaW5mbyk7DQorICBtYXN0ZXItPnBhc3NfbnVtYmVyKys7DQorfQ0KKw0KKw0KKyNpZmRlZiBEX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQNCisNCisvKg0KKyAqIFN3aXRjaCB0byBhIG5ldyBleHRlcm5hbCBjb2xvcm1hcCBiZXR3ZWVuIG91dHB1dCBwYXNzZXMuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19uZXdfY29sb3JtYXAgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfbWFzdGVyX3B0ciBtYXN0ZXIgPSAobXlfbWFzdGVyX3B0cikgY2luZm8tPm1hc3RlcjsNCisNCisgIC8qIFByZXZlbnQgYXBwbGljYXRpb24gZnJvbSBjYWxsaW5nIG1lIGF0IHdyb25nIHRpbWVzICovDQorICBpZiAoY2luZm8tPmdsb2JhbF9zdGF0ZSAhPSBEU1RBVEVfQlVGSU1BR0UpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9TVEFURSwgY2luZm8tPmdsb2JhbF9zdGF0ZSk7DQorDQorICBpZiAoY2luZm8tPnF1YW50aXplX2NvbG9ycyAmJiBjaW5mby0+ZW5hYmxlX2V4dGVybmFsX3F1YW50ICYmDQorICAgICAgY2luZm8tPmNvbG9ybWFwICE9IE5VTEwpIHsNCisgICAgLyogU2VsZWN0IDItcGFzcyBxdWFudGl6ZXIgZm9yIGV4dGVybmFsIGNvbG9ybWFwIHVzZSAqLw0KKyAgICBjaW5mby0+Y3F1YW50aXplID0gbWFzdGVyLT5xdWFudGl6ZXJfMnBhc3M7DQorICAgIC8qIE5vdGlmeSBxdWFudGl6ZXIgb2YgY29sb3JtYXAgY2hhbmdlICovDQorICAgICgqY2luZm8tPmNxdWFudGl6ZS0+bmV3X2NvbG9yX21hcCkgKGNpbmZvKTsNCisgICAgbWFzdGVyLT5wdWIuaXNfZHVtbXlfcGFzcyA9IEZBTFNFOyAvKiBqdXN0IGluIGNhc2UgKi8NCisgIH0gZWxzZQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX01PREVfQ0hBTkdFKTsNCit9DQorDQorI2VuZGlmIC8qIERfTVVMVElTQ0FOX0ZJTEVTX1NVUFBPUlRFRCAqLw0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6ZSBtYXN0ZXIgZGVjb21wcmVzc2lvbiBjb250cm9sIGFuZCBzZWxlY3QgYWN0aXZlIG1vZHVsZXMuDQorICogVGhpcyBpcyBwZXJmb3JtZWQgYXQgdGhlIHN0YXJ0IG9mIGpwZWdfc3RhcnRfZGVjb21wcmVzcy4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqaW5pdF9tYXN0ZXJfZGVjb21wcmVzcyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBteV9tYXN0ZXJfcHRyIG1hc3RlcjsNCisNCisgIG1hc3RlciA9IChteV9tYXN0ZXJfcHRyKQ0KKyAgICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCSAgU0laRU9GKG15X2RlY29tcF9tYXN0ZXIpKTsNCisgIGNpbmZvLT5tYXN0ZXIgPSAoc3RydWN0IGpwZWdfZGVjb21wX21hc3RlciAqKSBtYXN0ZXI7DQorICBtYXN0ZXItPnB1Yi5wcmVwYXJlX2Zvcl9vdXRwdXRfcGFzcyA9IHByZXBhcmVfZm9yX291dHB1dF9wYXNzOw0KKyAgbWFzdGVyLT5wdWIuZmluaXNoX291dHB1dF9wYXNzID0gZmluaXNoX291dHB1dF9wYXNzOw0KKw0KKyAgbWFzdGVyLT5wdWIuaXNfZHVtbXlfcGFzcyA9IEZBTFNFOw0KKw0KKyAgbWFzdGVyX3NlbGVjdGlvbihjaW5mbyk7DQorfQ0KKw0KKyNlbmRpZiAvL19GWF9KUEVHX1RVUkJPXw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkbWVyZ2UuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkbWVyZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWE5OTZjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRtZXJnZS5jCkBAIC0wLDAgKzEsNDA2IEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamRtZXJnZS5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NiwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgY29kZSBmb3IgbWVyZ2VkIHVwc2FtcGxpbmcvY29sb3IgY29udmVyc2lvbi4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb21iaW5lcyBmdW5jdGlvbnMgZnJvbSBqZHNhbXBsZS5jIGFuZCBqZGNvbG9yLmM7DQorICogcmVhZCB0aG9zZSBmaWxlcyBmaXJzdCB0byB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbi4NCisgKg0KKyAqIFdoZW4gdGhlIGNocm9tYSBjb21wb25lbnRzIGFyZSB0byBiZSB1cHNhbXBsZWQgYnkgc2ltcGxlIHJlcGxpY2F0aW9uDQorICogKGllLCBib3ggZmlsdGVyaW5nKSwgd2UgY2FuIHNhdmUgc29tZSB3b3JrIGluIGNvbG9yIGNvbnZlcnNpb24gYnkNCisgKiBjYWxjdWxhdGluZyBhbGwgdGhlIG91dHB1dCBwaXhlbHMgY29ycmVzcG9uZGluZyB0byBhIHBhaXIgb2YgY2hyb21hDQorICogc2FtcGxlcyBhdCBvbmUgdGltZS4gIEluIHRoZSBjb252ZXJzaW9uIGVxdWF0aW9ucw0KKyAqCVIgPSBZICAgICAgICAgICArIEsxICogQ3INCisgKglHID0gWSArIEsyICogQ2IgKyBLMyAqIENyDQorICoJQiA9IFkgKyBLNCAqIENiDQorICogb25seSB0aGUgWSB0ZXJtIHZhcmllcyBhbW9uZyB0aGUgZ3JvdXAgb2YgcGl4ZWxzIGNvcnJlc3BvbmRpbmcgdG8gYSBwYWlyDQorICogb2YgY2hyb21hIHNhbXBsZXMsIHNvIHRoZSByZXN0IG9mIHRoZSB0ZXJtcyBjYW4gYmUgY2FsY3VsYXRlZCBqdXN0IG9uY2UuDQorICogQXQgdHlwaWNhbCBzYW1wbGluZyByYXRpb3MsIHRoaXMgZWxpbWluYXRlcyBoYWxmIG9yIHRocmVlLXF1YXJ0ZXJzIG9mIHRoZQ0KKyAqIG11bHRpcGxpY2F0aW9ucyBuZWVkZWQgZm9yIGNvbG9yIGNvbnZlcnNpb24uDQorICoNCisgKiBUaGlzIGZpbGUgY3VycmVudGx5IHByb3ZpZGVzIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBjYXNlczoNCisgKglZQ2JDciA9PiBSR0IgY29sb3IgY29udmVyc2lvbiBvbmx5Lg0KKyAqCVNhbXBsaW5nIHJhdGlvcyBvZiAyaDF2IG9yIDJoMnYuDQorICoJTm8gc2NhbGluZyBuZWVkZWQgYXQgdXBzYW1wbGUgdGltZS4NCisgKglDb3JuZXItYWxpZ25lZCAobm9uLUNDSVI2MDEpIHNhbXBsaW5nIGFsaWdubWVudC4NCisgKiBPdGhlciBzcGVjaWFsIGNhc2VzIGNvdWxkIGJlIGFkZGVkLCBidXQgaW4gbW9zdCBhcHBsaWNhdGlvbnMgdGhlc2UgYXJlDQorICogdGhlIG9ubHkgY29tbW9uIGNhc2VzLiAgKEZvciB1bmNvbW1vbiBjYXNlcyB3ZSBmYWxsIGJhY2sgb24gdGhlIG1vcmUNCisgKiBnZW5lcmFsIGNvZGUgaW4gamRzYW1wbGUuYyBhbmQgamRjb2xvci5jLikNCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisNCisjaWZkZWYgVVBTQU1QTEVfTUVSR0lOR19TVVBQT1JURUQNCisNCisjaWZkZWYgX0ZYX01BTkFHRURfQ09ERV8NCisjZGVmaW5lIG15X3Vwc2FtcGxlcglteV91cHNhbXBsZXJfbQ0KKyNlbmRpZg0KKw0KKy8qIFByaXZhdGUgc3Vib2JqZWN0ICovDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgc3RydWN0IGpwZWdfdXBzYW1wbGVyIHB1YjsJLyogcHVibGljIGZpZWxkcyAqLw0KKw0KKyAgLyogUG9pbnRlciB0byByb3V0aW5lIHRvIGRvIGFjdHVhbCB1cHNhbXBsaW5nL2NvbnZlcnNpb24gb2Ygb25lIHJvdyBncm91cCAqLw0KKyAgSk1FVEhPRCh2b2lkLCB1cG1ldGhvZCwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJICAgSlNBTVBJTUFHRSBpbnB1dF9idWYsIEpESU1FTlNJT04gaW5fcm93X2dyb3VwX2N0ciwNCisJCQkgICBKU0FNUEFSUkFZIG91dHB1dF9idWYpKTsNCisNCisgIC8qIFByaXZhdGUgc3RhdGUgZm9yIFlDQy0+UkdCIGNvbnZlcnNpb24gKi8NCisgIGludCAqIENyX3JfdGFiOwkJLyogPT4gdGFibGUgZm9yIENyIHRvIFIgY29udmVyc2lvbiAqLw0KKyAgaW50ICogQ2JfYl90YWI7CQkvKiA9PiB0YWJsZSBmb3IgQ2IgdG8gQiBjb252ZXJzaW9uICovDQorICBJTlQzMiAqIENyX2dfdGFiOwkJLyogPT4gdGFibGUgZm9yIENyIHRvIEcgY29udmVyc2lvbiAqLw0KKyAgSU5UMzIgKiBDYl9nX3RhYjsJCS8qID0+IHRhYmxlIGZvciBDYiB0byBHIGNvbnZlcnNpb24gKi8NCisNCisgIC8qIEZvciAyOjEgdmVydGljYWwgc2FtcGxpbmcsIHdlIHByb2R1Y2UgdHdvIG91dHB1dCByb3dzIGF0IGEgdGltZS4NCisgICAqIFdlIG5lZWQgYSAic3BhcmUiIHJvdyBidWZmZXIgdG8gaG9sZCB0aGUgc2Vjb25kIG91dHB1dCByb3cgaWYgdGhlDQorICAgKiBhcHBsaWNhdGlvbiBwcm92aWRlcyBqdXN0IGEgb25lLXJvdyBidWZmZXI7IHdlIGFsc28gdXNlIHRoZSBzcGFyZQ0KKyAgICogdG8gZGlzY2FyZCB0aGUgZHVtbXkgbGFzdCByb3cgaWYgdGhlIGltYWdlIGhlaWdodCBpcyBvZGQuDQorICAgKi8NCisgIEpTQU1QUk9XIHNwYXJlX3JvdzsNCisgIGJvb2xlYW4gc3BhcmVfZnVsbDsJCS8qIFQgaWYgc3BhcmUgYnVmZmVyIGlzIG9jY3VwaWVkICovDQorDQorICBKRElNRU5TSU9OIG91dF9yb3dfd2lkdGg7CS8qIHNhbXBsZXMgcGVyIG91dHB1dCByb3cgKi8NCisgIEpESU1FTlNJT04gcm93c190b19nbzsJLyogY291bnRzIHJvd3MgcmVtYWluaW5nIGluIGltYWdlICovDQorfSBteV91cHNhbXBsZXI7DQorDQordHlwZWRlZiBteV91cHNhbXBsZXIgKiBteV91cHNhbXBsZV9wdHI7DQorDQorI2RlZmluZSBTQ0FMRUJJVFMJMTYJLyogc3BlZWRpZXN0IHJpZ2h0LXNoaWZ0IG9uIHNvbWUgbWFjaGluZXMgKi8NCisjZGVmaW5lIE9ORV9IQUxGCSgoSU5UMzIpIDEgPDwgKFNDQUxFQklUUy0xKSkNCisjZGVmaW5lIEZJWCh4KQkJKChJTlQzMikgKCh4KSAqICgxTDw8U0NBTEVCSVRTKSArIDAuNSkpDQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIHRhYmxlcyBmb3IgWUNDLT5SR0IgY29sb3JzcGFjZSBjb252ZXJzaW9uLg0KKyAqIFRoaXMgaXMgdGFrZW4gZGlyZWN0bHkgZnJvbSBqZGNvbG9yLmM7IHNlZSB0aGF0IGZpbGUgZm9yIG1vcmUgaW5mby4NCisgKi8NCisNCitMT0NBTCh2b2lkKQ0KK2J1aWxkX3ljY19yZ2JfdGFibGUgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfdXBzYW1wbGVfcHRyIHVwc2FtcGxlID0gKG15X3Vwc2FtcGxlX3B0cikgY2luZm8tPnVwc2FtcGxlOw0KKyAgaW50IGk7DQorICBJTlQzMiB4Ow0KKyAgU0hJRlRfVEVNUFMNCisNCisgIHVwc2FtcGxlLT5Dcl9yX3RhYiA9IChpbnQgKikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJKE1BWEpTQU1QTEUrMSkgKiBTSVpFT0YoaW50KSk7DQorICB1cHNhbXBsZS0+Q2JfYl90YWIgPSAoaW50ICopDQorICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCShNQVhKU0FNUExFKzEpICogU0laRU9GKGludCkpOw0KKyAgdXBzYW1wbGUtPkNyX2dfdGFiID0gKElOVDMyICopDQorICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCShNQVhKU0FNUExFKzEpICogU0laRU9GKElOVDMyKSk7DQorICB1cHNhbXBsZS0+Q2JfZ190YWIgPSAoSU5UMzIgKikNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJKE1BWEpTQU1QTEUrMSkgKiBTSVpFT0YoSU5UMzIpKTsNCisNCisgIGZvciAoaSA9IDAsIHggPSAtQ0VOVEVSSlNBTVBMRTsgaSA8PSBNQVhKU0FNUExFOyBpKyssIHgrKykgew0KKyAgICAvKiBpIGlzIHRoZSBhY3R1YWwgaW5wdXQgcGl4ZWwgdmFsdWUsIGluIHRoZSByYW5nZSAwLi5NQVhKU0FNUExFICovDQorICAgIC8qIFRoZSBDYiBvciBDciB2YWx1ZSB3ZSBhcmUgdGhpbmtpbmcgb2YgaXMgeCA9IGkgLSBDRU5URVJKU0FNUExFICovDQorICAgIC8qIENyPT5SIHZhbHVlIGlzIG5lYXJlc3QgaW50IHRvIDEuNDAyMDAgKiB4ICovDQorICAgIHVwc2FtcGxlLT5Dcl9yX3RhYltpXSA9IChpbnQpDQorCQkgICAgUklHSFRfU0hJRlQoRklYKDEuNDAyMDApICogeCArIE9ORV9IQUxGLCBTQ0FMRUJJVFMpOw0KKyAgICAvKiBDYj0+QiB2YWx1ZSBpcyBuZWFyZXN0IGludCB0byAxLjc3MjAwICogeCAqLw0KKyAgICB1cHNhbXBsZS0+Q2JfYl90YWJbaV0gPSAoaW50KQ0KKwkJICAgIFJJR0hUX1NISUZUKEZJWCgxLjc3MjAwKSAqIHggKyBPTkVfSEFMRiwgU0NBTEVCSVRTKTsNCisgICAgLyogQ3I9PkcgdmFsdWUgaXMgc2NhbGVkLXVwIC0wLjcxNDE0ICogeCAqLw0KKyAgICB1cHNhbXBsZS0+Q3JfZ190YWJbaV0gPSAoLSBGSVgoMC43MTQxNCkpICogeDsNCisgICAgLyogQ2I9PkcgdmFsdWUgaXMgc2NhbGVkLXVwIC0wLjM0NDE0ICogeCAqLw0KKyAgICAvKiBXZSBhbHNvIGFkZCBpbiBPTkVfSEFMRiBzbyB0aGF0IG5lZWQgbm90IGRvIGl0IGluIGlubmVyIGxvb3AgKi8NCisgICAgdXBzYW1wbGUtPkNiX2dfdGFiW2ldID0gKC0gRklYKDAuMzQ0MTQpKSAqIHggKyBPTkVfSEFMRjsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIGZvciBhbiB1cHNhbXBsaW5nIHBhc3MuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc3RhcnRfcGFzc19tZXJnZWRfdXBzYW1wbGUgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfdXBzYW1wbGVfcHRyIHVwc2FtcGxlID0gKG15X3Vwc2FtcGxlX3B0cikgY2luZm8tPnVwc2FtcGxlOw0KKw0KKyAgLyogTWFyayB0aGUgc3BhcmUgYnVmZmVyIGVtcHR5ICovDQorICB1cHNhbXBsZS0+c3BhcmVfZnVsbCA9IEZBTFNFOw0KKyAgLyogSW5pdGlhbGl6ZSB0b3RhbC1oZWlnaHQgY291bnRlciBmb3IgZGV0ZWN0aW5nIGJvdHRvbSBvZiBpbWFnZSAqLw0KKyAgdXBzYW1wbGUtPnJvd3NfdG9fZ28gPSBjaW5mby0+b3V0cHV0X2hlaWdodDsNCit9DQorDQorDQorLyoNCisgKiBDb250cm9sIHJvdXRpbmUgdG8gZG8gdXBzYW1wbGluZyAoYW5kIGNvbG9yIGNvbnZlcnNpb24pLg0KKyAqDQorICogVGhlIGNvbnRyb2wgcm91dGluZSBqdXN0IGhhbmRsZXMgdGhlIHJvdyBidWZmZXJpbmcgY29uc2lkZXJhdGlvbnMuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorbWVyZ2VkXzJ2X3Vwc2FtcGxlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJICAgIEpTQU1QSU1BR0UgaW5wdXRfYnVmLCBKRElNRU5TSU9OICppbl9yb3dfZ3JvdXBfY3RyLA0KKwkJICAgIEpESU1FTlNJT04gaW5fcm93X2dyb3Vwc19hdmFpbCwNCisJCSAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gKm91dF9yb3dfY3RyLA0KKwkJICAgIEpESU1FTlNJT04gb3V0X3Jvd3NfYXZhaWwpDQorLyogMjoxIHZlcnRpY2FsIHNhbXBsaW5nIGNhc2U6IG1heSBuZWVkIGEgc3BhcmUgcm93LiAqLw0KK3sNCisgIG15X3Vwc2FtcGxlX3B0ciB1cHNhbXBsZSA9IChteV91cHNhbXBsZV9wdHIpIGNpbmZvLT51cHNhbXBsZTsNCisgIEpTQU1QUk9XIHdvcmtfcHRyc1syXTsNCisgIEpESU1FTlNJT04gbnVtX3Jvd3M7CQkvKiBudW1iZXIgb2Ygcm93cyByZXR1cm5lZCB0byBjYWxsZXIgKi8NCisNCisgIGlmICh1cHNhbXBsZS0+c3BhcmVfZnVsbCkgew0KKyAgICAvKiBJZiB3ZSBoYXZlIGEgc3BhcmUgcm93IHNhdmVkIGZyb20gYSBwcmV2aW91cyBjeWNsZSwganVzdCByZXR1cm4gaXQuICovDQorICAgIGpjb3B5X3NhbXBsZV9yb3dzKCYgdXBzYW1wbGUtPnNwYXJlX3JvdywgMCwgb3V0cHV0X2J1ZiArICpvdXRfcm93X2N0ciwgMCwNCisJCSAgICAgIDEsIHVwc2FtcGxlLT5vdXRfcm93X3dpZHRoKTsNCisgICAgbnVtX3Jvd3MgPSAxOw0KKyAgICB1cHNhbXBsZS0+c3BhcmVfZnVsbCA9IEZBTFNFOw0KKyAgfSBlbHNlIHsNCisgICAgLyogRmlndXJlIG51bWJlciBvZiByb3dzIHRvIHJldHVybiB0byBjYWxsZXIuICovDQorICAgIG51bV9yb3dzID0gMjsNCisgICAgLyogTm90IG1vcmUgdGhhbiB0aGUgZGlzdGFuY2UgdG8gdGhlIGVuZCBvZiB0aGUgaW1hZ2UuICovDQorICAgIGlmIChudW1fcm93cyA+IHVwc2FtcGxlLT5yb3dzX3RvX2dvKQ0KKyAgICAgIG51bV9yb3dzID0gdXBzYW1wbGUtPnJvd3NfdG9fZ287DQorICAgIC8qIEFuZCBub3QgbW9yZSB0aGFuIHdoYXQgdGhlIGNsaWVudCBjYW4gYWNjZXB0OiAqLw0KKyAgICBvdXRfcm93c19hdmFpbCAtPSAqb3V0X3Jvd19jdHI7DQorICAgIGlmIChudW1fcm93cyA+IG91dF9yb3dzX2F2YWlsKQ0KKyAgICAgIG51bV9yb3dzID0gb3V0X3Jvd3NfYXZhaWw7DQorICAgIC8qIENyZWF0ZSBvdXRwdXQgcG9pbnRlciBhcnJheSBmb3IgdXBzYW1wbGVyLiAqLw0KKyAgICB3b3JrX3B0cnNbMF0gPSBvdXRwdXRfYnVmWypvdXRfcm93X2N0cl07DQorICAgIGlmIChudW1fcm93cyA+IDEpIHsNCisgICAgICB3b3JrX3B0cnNbMV0gPSBvdXRwdXRfYnVmWypvdXRfcm93X2N0ciArIDFdOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIHdvcmtfcHRyc1sxXSA9IHVwc2FtcGxlLT5zcGFyZV9yb3c7DQorICAgICAgdXBzYW1wbGUtPnNwYXJlX2Z1bGwgPSBUUlVFOw0KKyAgICB9DQorICAgIC8qIE5vdyBkbyB0aGUgdXBzYW1wbGluZy4gKi8NCisgICAgKCp1cHNhbXBsZS0+dXBtZXRob2QpIChjaW5mbywgaW5wdXRfYnVmLCAqaW5fcm93X2dyb3VwX2N0ciwgd29ya19wdHJzKTsNCisgIH0NCisNCisgIC8qIEFkanVzdCBjb3VudHMgKi8NCisgICpvdXRfcm93X2N0ciArPSBudW1fcm93czsNCisgIHVwc2FtcGxlLT5yb3dzX3RvX2dvIC09IG51bV9yb3dzOw0KKyAgLyogV2hlbiB0aGUgYnVmZmVyIGlzIGVtcHRpZWQsIGRlY2xhcmUgdGhpcyBpbnB1dCByb3cgZ3JvdXAgY29uc3VtZWQgKi8NCisgIGlmICghIHVwc2FtcGxlLT5zcGFyZV9mdWxsKQ0KKyAgICAoKmluX3Jvd19ncm91cF9jdHIpKys7DQorfQ0KKw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK21lcmdlZF8xdl91cHNhbXBsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCSAgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiAqaW5fcm93X2dyb3VwX2N0ciwNCisJCSAgICBKRElNRU5TSU9OIGluX3Jvd19ncm91cHNfYXZhaWwsDQorCQkgICAgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OICpvdXRfcm93X2N0ciwNCisJCSAgICBKRElNRU5TSU9OIG91dF9yb3dzX2F2YWlsKQ0KKy8qIDE6MSB2ZXJ0aWNhbCBzYW1wbGluZyBjYXNlOiBtdWNoIGVhc2llciwgbmV2ZXIgbmVlZCBhIHNwYXJlIHJvdy4gKi8NCit7DQorICBteV91cHNhbXBsZV9wdHIgdXBzYW1wbGUgPSAobXlfdXBzYW1wbGVfcHRyKSBjaW5mby0+dXBzYW1wbGU7DQorDQorICAvKiBKdXN0IGRvIHRoZSB1cHNhbXBsaW5nLiAqLw0KKyAgKCp1cHNhbXBsZS0+dXBtZXRob2QpIChjaW5mbywgaW5wdXRfYnVmLCAqaW5fcm93X2dyb3VwX2N0ciwNCisJCQkgb3V0cHV0X2J1ZiArICpvdXRfcm93X2N0cik7DQorICAvKiBBZGp1c3QgY291bnRzICovDQorICAoKm91dF9yb3dfY3RyKSsrOw0KKyAgKCppbl9yb3dfZ3JvdXBfY3RyKSsrOw0KK30NCisNCisNCisvKg0KKyAqIFRoZXNlIGFyZSB0aGUgcm91dGluZXMgaW52b2tlZCBieSB0aGUgY29udHJvbCByb3V0aW5lcyB0byBkbw0KKyAqIHRoZSBhY3R1YWwgdXBzYW1wbGluZy9jb252ZXJzaW9uLiAgT25lIHJvdyBncm91cCBpcyBwcm9jZXNzZWQgcGVyIGNhbGwuDQorICoNCisgKiBOb3RlOiBzaW5jZSB3ZSBtYXkgYmUgd3JpdGluZyBkaXJlY3RseSBpbnRvIGFwcGxpY2F0aW9uLXN1cHBsaWVkIGJ1ZmZlcnMsDQorICogd2UgaGF2ZSB0byBiZSBob25lc3QgYWJvdXQgdGhlIG91dHB1dCB3aWR0aDsgd2UgY2FuJ3QgYXNzdW1lIHRoZSBidWZmZXINCisgKiBoYXMgYmVlbiByb3VuZGVkIHVwIHRvIGFuIGV2ZW4gd2lkdGguDQorICovDQorDQorDQorLyoNCisgKiBVcHNhbXBsZSBhbmQgY29sb3IgY29udmVydCBmb3IgdGhlIGNhc2Ugb2YgMjoxIGhvcml6b250YWwgYW5kIDE6MSB2ZXJ0aWNhbC4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitoMnYxX21lcmdlZF91cHNhbXBsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCSAgICAgIEpTQU1QSU1BR0UgaW5wdXRfYnVmLCBKRElNRU5TSU9OIGluX3Jvd19ncm91cF9jdHIsDQorCQkgICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYpDQorew0KKyAgbXlfdXBzYW1wbGVfcHRyIHVwc2FtcGxlID0gKG15X3Vwc2FtcGxlX3B0cikgY2luZm8tPnVwc2FtcGxlOw0KKyAgcmVnaXN0ZXIgaW50IHksIGNyZWQsIGNncmVlbiwgY2JsdWU7DQorICBpbnQgY2IsIGNyOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgb3V0cHRyOw0KKyAgSlNBTVBST1cgaW5wdHIwLCBpbnB0cjEsIGlucHRyMjsNCisgIEpESU1FTlNJT04gY29sOw0KKyAgLyogY29weSB0aGVzZSBwb2ludGVycyBpbnRvIHJlZ2lzdGVycyBpZiBwb3NzaWJsZSAqLw0KKyAgcmVnaXN0ZXIgSlNBTVBMRSAqIHJhbmdlX2xpbWl0ID0gY2luZm8tPnNhbXBsZV9yYW5nZV9saW1pdDsNCisgIGludCAqIENycnRhYiA9IHVwc2FtcGxlLT5Dcl9yX3RhYjsNCisgIGludCAqIENiYnRhYiA9IHVwc2FtcGxlLT5DYl9iX3RhYjsNCisgIElOVDMyICogQ3JndGFiID0gdXBzYW1wbGUtPkNyX2dfdGFiOw0KKyAgSU5UMzIgKiBDYmd0YWIgPSB1cHNhbXBsZS0+Q2JfZ190YWI7DQorICBTSElGVF9URU1QUw0KKw0KKyAgaW5wdHIwID0gaW5wdXRfYnVmWzBdW2luX3Jvd19ncm91cF9jdHJdOw0KKyAgaW5wdHIxID0gaW5wdXRfYnVmWzFdW2luX3Jvd19ncm91cF9jdHJdOw0KKyAgaW5wdHIyID0gaW5wdXRfYnVmWzJdW2luX3Jvd19ncm91cF9jdHJdOw0KKyAgb3V0cHRyID0gb3V0cHV0X2J1ZlswXTsNCisgIC8qIExvb3AgZm9yIGVhY2ggcGFpciBvZiBvdXRwdXQgcGl4ZWxzICovDQorICBmb3IgKGNvbCA9IGNpbmZvLT5vdXRwdXRfd2lkdGggPj4gMTsgY29sID4gMDsgY29sLS0pIHsNCisgICAgLyogRG8gdGhlIGNocm9tYSBwYXJ0IG9mIHRoZSBjYWxjdWxhdGlvbiAqLw0KKyAgICBjYiA9IEdFVEpTQU1QTEUoKmlucHRyMSsrKTsNCisgICAgY3IgPSBHRVRKU0FNUExFKCppbnB0cjIrKyk7DQorICAgIGNyZWQgPSBDcnJ0YWJbY3JdOw0KKyAgICBjZ3JlZW4gPSAoaW50KSBSSUdIVF9TSElGVChDYmd0YWJbY2JdICsgQ3JndGFiW2NyXSwgU0NBTEVCSVRTKTsNCisgICAgY2JsdWUgPSBDYmJ0YWJbY2JdOw0KKyAgICAvKiBGZXRjaCAyIFkgdmFsdWVzIGFuZCBlbWl0IDIgcGl4ZWxzICovDQorICAgIHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwKyspOw0KKyAgICBvdXRwdHJbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBjcmVkXTsNCisgICAgb3V0cHRyW1JHQl9HUkVFTl0gPSByYW5nZV9saW1pdFt5ICsgY2dyZWVuXTsNCisgICAgb3V0cHRyW1JHQl9CTFVFXSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOw0KKyAgICBvdXRwdHIgKz0gUkdCX1BJWEVMU0laRTsNCisgICAgeSAgPSBHRVRKU0FNUExFKCppbnB0cjArKyk7DQorICAgIG91dHB0cltSR0JfUkVEXSA9ICAgcmFuZ2VfbGltaXRbeSArIGNyZWRdOw0KKyAgICBvdXRwdHJbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOw0KKyAgICBvdXRwdHJbUkdCX0JMVUVdID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1ZV07DQorICAgIG91dHB0ciArPSBSR0JfUElYRUxTSVpFOw0KKyAgfQ0KKyAgLyogSWYgaW1hZ2Ugd2lkdGggaXMgb2RkLCBkbyB0aGUgbGFzdCBvdXRwdXQgY29sdW1uIHNlcGFyYXRlbHkgKi8NCisgIGlmIChjaW5mby0+b3V0cHV0X3dpZHRoICYgMSkgew0KKyAgICBjYiA9IEdFVEpTQU1QTEUoKmlucHRyMSk7DQorICAgIGNyID0gR0VUSlNBTVBMRSgqaW5wdHIyKTsNCisgICAgY3JlZCA9IENycnRhYltjcl07DQorICAgIGNncmVlbiA9IChpbnQpIFJJR0hUX1NISUZUKENiZ3RhYltjYl0gKyBDcmd0YWJbY3JdLCBTQ0FMRUJJVFMpOw0KKyAgICBjYmx1ZSA9IENiYnRhYltjYl07DQorICAgIHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwKTsNCisgICAgb3V0cHRyW1JHQl9SRURdID0gICByYW5nZV9saW1pdFt5ICsgY3JlZF07DQorICAgIG91dHB0cltSR0JfR1JFRU5dID0gcmFuZ2VfbGltaXRbeSArIGNncmVlbl07DQorICAgIG91dHB0cltSR0JfQkxVRV0gPSAgcmFuZ2VfbGltaXRbeSArIGNibHVlXTsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBVcHNhbXBsZSBhbmQgY29sb3IgY29udmVydCBmb3IgdGhlIGNhc2Ugb2YgMjoxIGhvcml6b250YWwgYW5kIDI6MSB2ZXJ0aWNhbC4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitoMnYyX21lcmdlZF91cHNhbXBsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCSAgICAgIEpTQU1QSU1BR0UgaW5wdXRfYnVmLCBKRElNRU5TSU9OIGluX3Jvd19ncm91cF9jdHIsDQorCQkgICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYpDQorew0KKyAgbXlfdXBzYW1wbGVfcHRyIHVwc2FtcGxlID0gKG15X3Vwc2FtcGxlX3B0cikgY2luZm8tPnVwc2FtcGxlOw0KKyAgcmVnaXN0ZXIgaW50IHksIGNyZWQsIGNncmVlbiwgY2JsdWU7DQorICBpbnQgY2IsIGNyOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgb3V0cHRyMCwgb3V0cHRyMTsNCisgIEpTQU1QUk9XIGlucHRyMDAsIGlucHRyMDEsIGlucHRyMSwgaW5wdHIyOw0KKyAgSkRJTUVOU0lPTiBjb2w7DQorICAvKiBjb3B5IHRoZXNlIHBvaW50ZXJzIGludG8gcmVnaXN0ZXJzIGlmIHBvc3NpYmxlICovDQorICByZWdpc3RlciBKU0FNUExFICogcmFuZ2VfbGltaXQgPSBjaW5mby0+c2FtcGxlX3JhbmdlX2xpbWl0Ow0KKyAgaW50ICogQ3JydGFiID0gdXBzYW1wbGUtPkNyX3JfdGFiOw0KKyAgaW50ICogQ2JidGFiID0gdXBzYW1wbGUtPkNiX2JfdGFiOw0KKyAgSU5UMzIgKiBDcmd0YWIgPSB1cHNhbXBsZS0+Q3JfZ190YWI7DQorICBJTlQzMiAqIENiZ3RhYiA9IHVwc2FtcGxlLT5DYl9nX3RhYjsNCisgIFNISUZUX1RFTVBTDQorDQorICBpbnB0cjAwID0gaW5wdXRfYnVmWzBdW2luX3Jvd19ncm91cF9jdHIqMl07DQorICBpbnB0cjAxID0gaW5wdXRfYnVmWzBdW2luX3Jvd19ncm91cF9jdHIqMiArIDFdOw0KKyAgaW5wdHIxID0gaW5wdXRfYnVmWzFdW2luX3Jvd19ncm91cF9jdHJdOw0KKyAgaW5wdHIyID0gaW5wdXRfYnVmWzJdW2luX3Jvd19ncm91cF9jdHJdOw0KKyAgb3V0cHRyMCA9IG91dHB1dF9idWZbMF07DQorICBvdXRwdHIxID0gb3V0cHV0X2J1ZlsxXTsNCisgIC8qIExvb3AgZm9yIGVhY2ggZ3JvdXAgb2Ygb3V0cHV0IHBpeGVscyAqLw0KKyAgZm9yIChjb2wgPSBjaW5mby0+b3V0cHV0X3dpZHRoID4+IDE7IGNvbCA+IDA7IGNvbC0tKSB7DQorICAgIC8qIERvIHRoZSBjaHJvbWEgcGFydCBvZiB0aGUgY2FsY3VsYXRpb24gKi8NCisgICAgY2IgPSBHRVRKU0FNUExFKCppbnB0cjErKyk7DQorICAgIGNyID0gR0VUSlNBTVBMRSgqaW5wdHIyKyspOw0KKyAgICBjcmVkID0gQ3JydGFiW2NyXTsNCisgICAgY2dyZWVuID0gKGludCkgUklHSFRfU0hJRlQoQ2JndGFiW2NiXSArIENyZ3RhYltjcl0sIFNDQUxFQklUUyk7DQorICAgIGNibHVlID0gQ2JidGFiW2NiXTsNCisgICAgLyogRmV0Y2ggNCBZIHZhbHVlcyBhbmQgZW1pdCA0IHBpeGVscyAqLw0KKyAgICB5ICA9IEdFVEpTQU1QTEUoKmlucHRyMDArKyk7DQorICAgIG91dHB0cjBbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBjcmVkXTsNCisgICAgb3V0cHRyMFtSR0JfR1JFRU5dID0gcmFuZ2VfbGltaXRbeSArIGNncmVlbl07DQorICAgIG91dHB0cjBbUkdCX0JMVUVdID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1ZV07DQorICAgIG91dHB0cjAgKz0gUkdCX1BJWEVMU0laRTsNCisgICAgeSAgPSBHRVRKU0FNUExFKCppbnB0cjAwKyspOw0KKyAgICBvdXRwdHIwW1JHQl9SRURdID0gICByYW5nZV9saW1pdFt5ICsgY3JlZF07DQorICAgIG91dHB0cjBbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOw0KKyAgICBvdXRwdHIwW1JHQl9CTFVFXSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOw0KKyAgICBvdXRwdHIwICs9IFJHQl9QSVhFTFNJWkU7DQorICAgIHkgID0gR0VUSlNBTVBMRSgqaW5wdHIwMSsrKTsNCisgICAgb3V0cHRyMVtSR0JfUkVEXSA9ICAgcmFuZ2VfbGltaXRbeSArIGNyZWRdOw0KKyAgICBvdXRwdHIxW1JHQl9HUkVFTl0gPSByYW5nZV9saW1pdFt5ICsgY2dyZWVuXTsNCisgICAgb3V0cHRyMVtSR0JfQkxVRV0gPSAgcmFuZ2VfbGltaXRbeSArIGNibHVlXTsNCisgICAgb3V0cHRyMSArPSBSR0JfUElYRUxTSVpFOw0KKyAgICB5ICA9IEdFVEpTQU1QTEUoKmlucHRyMDErKyk7DQorICAgIG91dHB0cjFbUkdCX1JFRF0gPSAgIHJhbmdlX2xpbWl0W3kgKyBjcmVkXTsNCisgICAgb3V0cHRyMVtSR0JfR1JFRU5dID0gcmFuZ2VfbGltaXRbeSArIGNncmVlbl07DQorICAgIG91dHB0cjFbUkdCX0JMVUVdID0gIHJhbmdlX2xpbWl0W3kgKyBjYmx1ZV07DQorICAgIG91dHB0cjEgKz0gUkdCX1BJWEVMU0laRTsNCisgIH0NCisgIC8qIElmIGltYWdlIHdpZHRoIGlzIG9kZCwgZG8gdGhlIGxhc3Qgb3V0cHV0IGNvbHVtbiBzZXBhcmF0ZWx5ICovDQorICBpZiAoY2luZm8tPm91dHB1dF93aWR0aCAmIDEpIHsNCisgICAgY2IgPSBHRVRKU0FNUExFKCppbnB0cjEpOw0KKyAgICBjciA9IEdFVEpTQU1QTEUoKmlucHRyMik7DQorICAgIGNyZWQgPSBDcnJ0YWJbY3JdOw0KKyAgICBjZ3JlZW4gPSAoaW50KSBSSUdIVF9TSElGVChDYmd0YWJbY2JdICsgQ3JndGFiW2NyXSwgU0NBTEVCSVRTKTsNCisgICAgY2JsdWUgPSBDYmJ0YWJbY2JdOw0KKyAgICB5ICA9IEdFVEpTQU1QTEUoKmlucHRyMDApOw0KKyAgICBvdXRwdHIwW1JHQl9SRURdID0gICByYW5nZV9saW1pdFt5ICsgY3JlZF07DQorICAgIG91dHB0cjBbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOw0KKyAgICBvdXRwdHIwW1JHQl9CTFVFXSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOw0KKyAgICB5ICA9IEdFVEpTQU1QTEUoKmlucHRyMDEpOw0KKyAgICBvdXRwdHIxW1JHQl9SRURdID0gICByYW5nZV9saW1pdFt5ICsgY3JlZF07DQorICAgIG91dHB0cjFbUkdCX0dSRUVOXSA9IHJhbmdlX2xpbWl0W3kgKyBjZ3JlZW5dOw0KKyAgICBvdXRwdHIxW1JHQl9CTFVFXSA9ICByYW5nZV9saW1pdFt5ICsgY2JsdWVdOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIE1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBtZXJnZWQgdXBzYW1wbGluZy9jb2xvciBjb252ZXJzaW9uLg0KKyAqDQorICogTkI6IHRoaXMgaXMgY2FsbGVkIHVuZGVyIHRoZSBjb25kaXRpb25zIGRldGVybWluZWQgYnkgdXNlX21lcmdlZF91cHNhbXBsZSgpDQorICogaW4gamRtYXN0ZXIuYy4gIFRoYXQgcm91dGluZSBNVVNUIGNvcnJlc3BvbmQgdG8gdGhlIGFjdHVhbCBjYXBhYmlsaXRpZXMNCisgKiBvZiB0aGlzIG1vZHVsZTsgbm8gc2FmZXR5IGNoZWNrcyBhcmUgbWFkZSBoZXJlLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2ppbml0X21lcmdlZF91cHNhbXBsZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfdXBzYW1wbGVfcHRyIHVwc2FtcGxlOw0KKw0KKyAgdXBzYW1wbGUgPSAobXlfdXBzYW1wbGVfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQlTSVpFT0YobXlfdXBzYW1wbGVyKSk7DQorICBjaW5mby0+dXBzYW1wbGUgPSAoc3RydWN0IGpwZWdfdXBzYW1wbGVyICopIHVwc2FtcGxlOw0KKyAgdXBzYW1wbGUtPnB1Yi5zdGFydF9wYXNzID0gc3RhcnRfcGFzc19tZXJnZWRfdXBzYW1wbGU7DQorICB1cHNhbXBsZS0+cHViLm5lZWRfY29udGV4dF9yb3dzID0gRkFMU0U7DQorDQorICB1cHNhbXBsZS0+b3V0X3Jvd193aWR0aCA9IGNpbmZvLT5vdXRwdXRfd2lkdGggKiBjaW5mby0+b3V0X2NvbG9yX2NvbXBvbmVudHM7DQorDQorICBpZiAoY2luZm8tPm1heF92X3NhbXBfZmFjdG9yID09IDIpIHsNCisgICAgdXBzYW1wbGUtPnB1Yi51cHNhbXBsZSA9IG1lcmdlZF8ydl91cHNhbXBsZTsNCisgICAgdXBzYW1wbGUtPnVwbWV0aG9kID0gaDJ2Ml9tZXJnZWRfdXBzYW1wbGU7DQorICAgIC8qIEFsbG9jYXRlIGEgc3BhcmUgcm93IGJ1ZmZlciAqLw0KKyAgICB1cHNhbXBsZS0+c3BhcmVfcm93ID0gKEpTQU1QUk9XKQ0KKyAgICAgICgqY2luZm8tPm1lbS0+YWxsb2NfbGFyZ2UpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkoc2l6ZV90KSAodXBzYW1wbGUtPm91dF9yb3dfd2lkdGggKiBTSVpFT0YoSlNBTVBMRSkpKTsNCisgIH0gZWxzZSB7DQorICAgIHVwc2FtcGxlLT5wdWIudXBzYW1wbGUgPSBtZXJnZWRfMXZfdXBzYW1wbGU7DQorICAgIHVwc2FtcGxlLT51cG1ldGhvZCA9IGgydjFfbWVyZ2VkX3Vwc2FtcGxlOw0KKyAgICAvKiBObyBzcGFyZSByb3cgbmVlZGVkICovDQorICAgIHVwc2FtcGxlLT5zcGFyZV9yb3cgPSBOVUxMOw0KKyAgfQ0KKw0KKyAgYnVpbGRfeWNjX3JnYl90YWJsZShjaW5mbyk7DQorfQ0KKw0KKyNlbmRpZiAvKiBVUFNBTVBMRV9NRVJHSU5HX1NVUFBPUlRFRCAqLw0KKw0KKyNlbmRpZiAvL19GWF9KUEVHX1RVUkJPXw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkcGh1ZmYuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkcGh1ZmYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzE5ZDBhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRwaHVmZi5jCkBAIC0wLDAgKzEsNjcxIEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamRwaHVmZi5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgSHVmZm1hbiBlbnRyb3B5IGRlY29kaW5nIHJvdXRpbmVzIGZvciBwcm9ncmVzc2l2ZSBKUEVHLg0KKyAqDQorICogTXVjaCBvZiB0aGUgY29tcGxleGl0eSBoZXJlIGhhcyB0byBkbyB3aXRoIHN1cHBvcnRpbmcgaW5wdXQgc3VzcGVuc2lvbi4NCisgKiBJZiB0aGUgZGF0YSBzb3VyY2UgbW9kdWxlIGRlbWFuZHMgc3VzcGVuc2lvbiwgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGJhY2sNCisgKiB1cCB0byB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgTUNVLiAgVG8gZG8gdGhpcywgd2UgY29weSBzdGF0ZSB2YXJpYWJsZXMNCisgKiBpbnRvIGxvY2FsIHdvcmtpbmcgc3RvcmFnZSwgYW5kIHVwZGF0ZSB0aGVtIGJhY2sgdG8gdGhlIHBlcm1hbmVudA0KKyAqIHN0b3JhZ2Ugb25seSB1cG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiBhbiBNQ1UuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorI2luY2x1ZGUgImpkaHVmZi5oIgkJLyogRGVjbGFyYXRpb25zIHNoYXJlZCB3aXRoIGpkaHVmZi5jICovDQorDQorDQorI2lmZGVmIERfUFJPR1JFU1NJVkVfU1VQUE9SVEVEDQorDQorLyoNCisgKiBFeHBhbmRlZCBlbnRyb3B5IGRlY29kZXIgb2JqZWN0IGZvciBwcm9ncmVzc2l2ZSBIdWZmbWFuIGRlY29kaW5nLg0KKyAqDQorICogVGhlIHNhdmFibGVfc3RhdGUgc3VicmVjb3JkIGNvbnRhaW5zIGZpZWxkcyB0aGF0IGNoYW5nZSB3aXRoaW4gYW4gTUNVLA0KKyAqIGJ1dCBtdXN0IG5vdCBiZSB1cGRhdGVkIHBlcm1hbmVudGx5IHVudGlsIHdlIGNvbXBsZXRlIHRoZSBNQ1UuDQorICovDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgdW5zaWduZWQgaW50IEVPQlJVTjsJCQkvKiByZW1haW5pbmcgRU9CcyBpbiBFT0JSVU4gKi8NCisgIGludCBsYXN0X2RjX3ZhbFtNQVhfQ09NUFNfSU5fU0NBTl07CS8qIGxhc3QgREMgY29lZiBmb3IgZWFjaCBjb21wb25lbnQgKi8NCit9IHNhdmFibGVfc3RhdGU7DQorDQorLyogVGhpcyBtYWNybyBpcyB0byB3b3JrIGFyb3VuZCBjb21waWxlcnMgd2l0aCBtaXNzaW5nIG9yIGJyb2tlbg0KKyAqIHN0cnVjdHVyZSBhc3NpZ25tZW50LiAgWW91J2xsIG5lZWQgdG8gZml4IHRoaXMgY29kZSBpZiB5b3UgaGF2ZQ0KKyAqIHN1Y2ggYSBjb21waWxlciBhbmQgeW91IGNoYW5nZSBNQVhfQ09NUFNfSU5fU0NBTi4NCisgKi8NCisNCisjaWZuZGVmIE5PX1NUUlVDVF9BU1NJR04NCisjZGVmaW5lIEFTU0lHTl9TVEFURShkZXN0LHNyYykgICgoZGVzdCkgPSAoc3JjKSkNCisjZWxzZQ0KKyNpZiBNQVhfQ09NUFNfSU5fU0NBTiA9PSA0DQorI2RlZmluZSBBU1NJR05fU1RBVEUoZGVzdCxzcmMpICBcDQorCSgoZGVzdCkuRU9CUlVOID0gKHNyYykuRU9CUlVOLCBcDQorCSAoZGVzdCkubGFzdF9kY192YWxbMF0gPSAoc3JjKS5sYXN0X2RjX3ZhbFswXSwgXA0KKwkgKGRlc3QpLmxhc3RfZGNfdmFsWzFdID0gKHNyYykubGFzdF9kY192YWxbMV0sIFwNCisJIChkZXN0KS5sYXN0X2RjX3ZhbFsyXSA9IChzcmMpLmxhc3RfZGNfdmFsWzJdLCBcDQorCSAoZGVzdCkubGFzdF9kY192YWxbM10gPSAoc3JjKS5sYXN0X2RjX3ZhbFszXSkNCisjZW5kaWYNCisjZW5kaWYNCisNCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBzdHJ1Y3QganBlZ19lbnRyb3B5X2RlY29kZXIgcHViOyAvKiBwdWJsaWMgZmllbGRzICovDQorDQorICAvKiBUaGVzZSBmaWVsZHMgYXJlIGxvYWRlZCBpbnRvIGxvY2FsIHZhcmlhYmxlcyBhdCBzdGFydCBvZiBlYWNoIE1DVS4NCisgICAqIEluIGNhc2Ugb2Ygc3VzcGVuc2lvbiwgd2UgZXhpdCBXSVRIT1VUIHVwZGF0aW5nIHRoZW0uDQorICAgKi8NCisgIGJpdHJlYWRfcGVybV9zdGF0ZSBiaXRzdGF0ZTsJLyogQml0IGJ1ZmZlciBhdCBzdGFydCBvZiBNQ1UgKi8NCisgIHNhdmFibGVfc3RhdGUgc2F2ZWQ7CQkvKiBPdGhlciBzdGF0ZSBhdCBzdGFydCBvZiBNQ1UgKi8NCisNCisgIC8qIFRoZXNlIGZpZWxkcyBhcmUgTk9UIGxvYWRlZCBpbnRvIGxvY2FsIHdvcmtpbmcgc3RhdGUuICovDQorICB1bnNpZ25lZCBpbnQgcmVzdGFydHNfdG9fZ287CS8qIE1DVXMgbGVmdCBpbiB0aGlzIHJlc3RhcnQgaW50ZXJ2YWwgKi8NCisNCisgIC8qIFBvaW50ZXJzIHRvIGRlcml2ZWQgdGFibGVzICh0aGVzZSB3b3Jrc3BhY2VzIGhhdmUgaW1hZ2UgbGlmZXNwYW4pICovDQorICBkX2Rlcml2ZWRfdGJsICogZGVyaXZlZF90YmxzW05VTV9IVUZGX1RCTFNdOw0KKw0KKyAgZF9kZXJpdmVkX3RibCAqIGFjX2Rlcml2ZWRfdGJsOyAvKiBhY3RpdmUgdGFibGUgZHVyaW5nIGFuIEFDIHNjYW4gKi8NCit9IHBodWZmX2VudHJvcHlfZGVjb2RlcjsNCisNCit0eXBlZGVmIHBodWZmX2VudHJvcHlfZGVjb2RlciAqIHBodWZmX2VudHJvcHlfcHRyOw0KKw0KKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovDQorTUVUSE9EREVGKGJvb2xlYW4pIGRlY29kZV9tY3VfRENfZmlyc3QgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICAgIEpCTE9DS1JPVyAqTUNVX2RhdGEpKTsNCitNRVRIT0RERUYoYm9vbGVhbikgZGVjb2RlX21jdV9BQ19maXJzdCBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgICAgSkJMT0NLUk9XICpNQ1VfZGF0YSkpOw0KK01FVEhPRERFRihib29sZWFuKSBkZWNvZGVfbWN1X0RDX3JlZmluZSBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgICAgIEpCTE9DS1JPVyAqTUNVX2RhdGEpKTsNCitNRVRIT0RERUYoYm9vbGVhbikgZGVjb2RlX21jdV9BQ19yZWZpbmUgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICAgICBKQkxPQ0tST1cgKk1DVV9kYXRhKSk7DQorDQorDQorLyoNCisgKiBJbml0aWFsaXplIGZvciBhIEh1ZmZtYW4tY29tcHJlc3NlZCBzY2FuLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3N0YXJ0X3Bhc3NfcGh1ZmZfZGVjb2RlciAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBwaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5ID0gKHBodWZmX2VudHJvcHlfcHRyKSBjaW5mby0+ZW50cm9weTsNCisgIGJvb2xlYW4gaXNfRENfYmFuZCwgYmFkOw0KKyAgaW50IGNpLCBjb2VmaSwgdGJsOw0KKyAgaW50ICpjb2VmX2JpdF9wdHI7DQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0cjsNCisNCisgIGlzX0RDX2JhbmQgPSAoY2luZm8tPlNzID09IDApOw0KKw0KKyAgLyogVmFsaWRhdGUgc2NhbiBwYXJhbWV0ZXJzICovDQorICBiYWQgPSBGQUxTRTsNCisgIGlmIChpc19EQ19iYW5kKSB7DQorICAgIGlmIChjaW5mby0+U2UgIT0gMCkNCisgICAgICBiYWQgPSBUUlVFOw0KKyAgfSBlbHNlIHsNCisgICAgLyogbmVlZCBub3QgY2hlY2sgU3MvU2UgPCAwIHNpbmNlIHRoZXkgY2FtZSBmcm9tIHVuc2lnbmVkIGJ5dGVzICovDQorICAgIGlmIChjaW5mby0+U3MgPiBjaW5mby0+U2UgfHwgY2luZm8tPlNlID49IERDVFNJWkUyKQ0KKyAgICAgIGJhZCA9IFRSVUU7DQorICAgIC8qIEFDIHNjYW5zIG1heSBoYXZlIG9ubHkgb25lIGNvbXBvbmVudCAqLw0KKyAgICBpZiAoY2luZm8tPmNvbXBzX2luX3NjYW4gIT0gMSkNCisgICAgICBiYWQgPSBUUlVFOw0KKyAgfQ0KKyAgaWYgKGNpbmZvLT5BaCAhPSAwKSB7DQorICAgIC8qIFN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbiByZWZpbmVtZW50IHNjYW46IG11c3QgaGF2ZSBBbCA9IEFoLTEuICovDQorICAgIGlmIChjaW5mby0+QWwgIT0gY2luZm8tPkFoLTEpDQorICAgICAgYmFkID0gVFJVRTsNCisgIH0NCisgIGlmIChjaW5mby0+QWwgPiAxMykJCS8qIG5lZWQgbm90IGNoZWNrIGZvciA8IDAgKi8NCisgICAgYmFkID0gVFJVRTsNCisgIC8qIEFyZ3VhYmx5IHRoZSBtYXhpbXVtIEFsIHZhbHVlIHNob3VsZCBiZSBsZXNzIHRoYW4gMTMgZm9yIDgtYml0IHByZWNpc2lvbiwNCisgICAqIGJ1dCB0aGUgc3BlYyBkb2Vzbid0IHNheSBzbywgYW5kIHdlIHRyeSB0byBiZSBsaWJlcmFsIGFib3V0IHdoYXQgd2UNCisgICAqIGFjY2VwdC4gIE5vdGU6IGxhcmdlIEFsIHZhbHVlcyBjb3VsZCByZXN1bHQgaW4gb3V0LW9mLXJhbmdlIERDDQorICAgKiBjb2VmZmljaWVudHMgZHVyaW5nIGVhcmx5IHNjYW5zLCBsZWFkaW5nIHRvIGJpemFycmUgZGlzcGxheXMgZHVlIHRvDQorICAgKiBvdmVyZmxvd3MgaW4gdGhlIElEQ1QgbWF0aC4gIEJ1dCB3ZSB3b24ndCBjcmFzaC4NCisgICAqLw0KKyAgaWYgKGJhZCkNCisgICAgRVJSRVhJVDQoY2luZm8sIEpFUlJfQkFEX1BST0dSRVNTSU9OLA0KKwkgICAgIGNpbmZvLT5TcywgY2luZm8tPlNlLCBjaW5mby0+QWgsIGNpbmZvLT5BbCk7DQorICAvKiBVcGRhdGUgcHJvZ3Jlc3Npb24gc3RhdHVzLCBhbmQgdmVyaWZ5IHRoYXQgc2NhbiBvcmRlciBpcyBsZWdhbC4NCisgICAqIE5vdGUgdGhhdCBpbnRlci1zY2FuIGluY29uc2lzdGVuY2llcyBhcmUgdHJlYXRlZCBhcyB3YXJuaW5ncw0KKyAgICogbm90IGZhdGFsIGVycm9ycyAuLi4gbm90IGNsZWFyIGlmIHRoaXMgaXMgcmlnaHQgd2F5IHRvIGJlaGF2ZS4NCisgICAqLw0KKyAgZm9yIChjaSA9IDA7IGNpIDwgY2luZm8tPmNvbXBzX2luX3NjYW47IGNpKyspIHsNCisgICAgaW50IGNpbmRleCA9IGNpbmZvLT5jdXJfY29tcF9pbmZvW2NpXS0+Y29tcG9uZW50X2luZGV4Ow0KKyAgICBjb2VmX2JpdF9wdHIgPSAmIGNpbmZvLT5jb2VmX2JpdHNbY2luZGV4XVswXTsNCisgICAgaWYgKCFpc19EQ19iYW5kICYmIGNvZWZfYml0X3B0clswXSA8IDApIC8qIEFDIHdpdGhvdXQgcHJpb3IgREMgc2NhbiAqLw0KKyAgICAgIFdBUk5NUzIoY2luZm8sIEpXUk5fQk9HVVNfUFJPR1JFU1NJT04sIGNpbmRleCwgMCk7DQorICAgIGZvciAoY29lZmkgPSBjaW5mby0+U3M7IGNvZWZpIDw9IGNpbmZvLT5TZTsgY29lZmkrKykgew0KKyAgICAgIGludCBleHBlY3RlZCA9IChjb2VmX2JpdF9wdHJbY29lZmldIDwgMCkgPyAwIDogY29lZl9iaXRfcHRyW2NvZWZpXTsNCisgICAgICBpZiAoY2luZm8tPkFoICE9IGV4cGVjdGVkKQ0KKwlXQVJOTVMyKGNpbmZvLCBKV1JOX0JPR1VTX1BST0dSRVNTSU9OLCBjaW5kZXgsIGNvZWZpKTsNCisgICAgICBjb2VmX2JpdF9wdHJbY29lZmldID0gY2luZm8tPkFsOw0KKyAgICB9DQorICB9DQorDQorICAvKiBTZWxlY3QgTUNVIGRlY29kaW5nIHJvdXRpbmUgKi8NCisgIGlmIChjaW5mby0+QWggPT0gMCkgew0KKyAgICBpZiAoaXNfRENfYmFuZCkNCisgICAgICBlbnRyb3B5LT5wdWIuZGVjb2RlX21jdSA9IGRlY29kZV9tY3VfRENfZmlyc3Q7DQorICAgIGVsc2UNCisgICAgICBlbnRyb3B5LT5wdWIuZGVjb2RlX21jdSA9IGRlY29kZV9tY3VfQUNfZmlyc3Q7DQorICB9IGVsc2Ugew0KKyAgICBpZiAoaXNfRENfYmFuZCkNCisgICAgICBlbnRyb3B5LT5wdWIuZGVjb2RlX21jdSA9IGRlY29kZV9tY3VfRENfcmVmaW5lOw0KKyAgICBlbHNlDQorICAgICAgZW50cm9weS0+cHViLmRlY29kZV9tY3UgPSBkZWNvZGVfbWN1X0FDX3JlZmluZTsNCisgIH0NCisNCisgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKSB7DQorICAgIGNvbXBwdHIgPSBjaW5mby0+Y3VyX2NvbXBfaW5mb1tjaV07DQorICAgIC8qIE1ha2Ugc3VyZSByZXF1ZXN0ZWQgdGFibGVzIGFyZSBwcmVzZW50LCBhbmQgY29tcHV0ZSBkZXJpdmVkIHRhYmxlcy4NCisgICAgICogV2UgbWF5IGJ1aWxkIHNhbWUgZGVyaXZlZCB0YWJsZSBtb3JlIHRoYW4gb25jZSwgYnV0IGl0J3Mgbm90IGV4cGVuc2l2ZS4NCisgICAgICovDQorICAgIGlmIChpc19EQ19iYW5kKSB7DQorICAgICAgaWYgKGNpbmZvLT5BaCA9PSAwKSB7CS8qIERDIHJlZmluZW1lbnQgbmVlZHMgbm8gdGFibGUgKi8NCisJdGJsID0gY29tcHB0ci0+ZGNfdGJsX25vOw0KKwlqcGVnX21ha2VfZF9kZXJpdmVkX3RibChjaW5mbywgVFJVRSwgdGJsLA0KKwkJCQkmIGVudHJvcHktPmRlcml2ZWRfdGJsc1t0YmxdKTsNCisgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgdGJsID0gY29tcHB0ci0+YWNfdGJsX25vOw0KKyAgICAgIGpwZWdfbWFrZV9kX2Rlcml2ZWRfdGJsKGNpbmZvLCBGQUxTRSwgdGJsLA0KKwkJCSAgICAgICYgZW50cm9weS0+ZGVyaXZlZF90YmxzW3RibF0pOw0KKyAgICAgIC8qIHJlbWVtYmVyIHRoZSBzaW5nbGUgYWN0aXZlIHRhYmxlICovDQorICAgICAgZW50cm9weS0+YWNfZGVyaXZlZF90YmwgPSBlbnRyb3B5LT5kZXJpdmVkX3RibHNbdGJsXTsNCisgICAgfQ0KKyAgICAvKiBJbml0aWFsaXplIERDIHByZWRpY3Rpb25zIHRvIDAgKi8NCisgICAgZW50cm9weS0+c2F2ZWQubGFzdF9kY192YWxbY2ldID0gMDsNCisgIH0NCisNCisgIC8qIEluaXRpYWxpemUgYml0cmVhZCBzdGF0ZSB2YXJpYWJsZXMgKi8NCisgIGVudHJvcHktPmJpdHN0YXRlLmJpdHNfbGVmdCA9IDA7DQorICBlbnRyb3B5LT5iaXRzdGF0ZS5nZXRfYnVmZmVyID0gMDsgLyogdW5uZWNlc3NhcnksIGJ1dCBrZWVwcyBQdXJpZnkgcXVpZXQgKi8NCisgIGVudHJvcHktPnB1Yi5pbnN1ZmZpY2llbnRfZGF0YSA9IEZBTFNFOw0KKw0KKyAgLyogSW5pdGlhbGl6ZSBwcml2YXRlIHN0YXRlIHZhcmlhYmxlcyAqLw0KKyAgZW50cm9weS0+c2F2ZWQuRU9CUlVOID0gMDsNCisNCisgIC8qIEluaXRpYWxpemUgcmVzdGFydCBjb3VudGVyICovDQorICBlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9IGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsOw0KK30NCisNCisNCisvKg0KKyAqIEZpZ3VyZSBGLjEyOiBleHRlbmQgc2lnbiBiaXQuDQorICogT24gc29tZSBtYWNoaW5lcywgYSBzaGlmdCBhbmQgYWRkIHdpbGwgYmUgZmFzdGVyIHRoYW4gYSB0YWJsZSBsb29rdXAuDQorICovDQorDQorI2lmZGVmIEFWT0lEX1RBQkxFUw0KKw0KKyNkZWZpbmUgSFVGRl9FWFRFTkQoeCxzKSAgKCh4KSA8ICgxPDwoKHMpLTEpKSA/ICh4KSArICgoKC0xKTw8KHMpKSArIDEpIDogKHgpKQ0KKw0KKyNlbHNlDQorDQorI2RlZmluZSBIVUZGX0VYVEVORCh4LHMpICAoKHgpIDwgZXh0ZW5kX3Rlc3Rbc10gPyAoeCkgKyBleHRlbmRfb2Zmc2V0W3NdIDogKHgpKQ0KKw0KK3N0YXRpYyBjb25zdCBpbnQgZXh0ZW5kX3Rlc3RbMTZdID0gICAvKiBlbnRyeSBuIGlzIDIqKihuLTEpICovDQorICB7IDAsIDB4MDAwMSwgMHgwMDAyLCAweDAwMDQsIDB4MDAwOCwgMHgwMDEwLCAweDAwMjAsIDB4MDA0MCwgMHgwMDgwLA0KKyAgICAweDAxMDAsIDB4MDIwMCwgMHgwNDAwLCAweDA4MDAsIDB4MTAwMCwgMHgyMDAwLCAweDQwMDAgfTsNCisNCitzdGF0aWMgY29uc3QgaW50IGV4dGVuZF9vZmZzZXRbMTZdID0gLyogZW50cnkgbiBpcyAoLTEgPDwgbikgKyAxICovDQorICB7IDAsICgoLTEpPDwxKSArIDEsICgoLTEpPDwyKSArIDEsICgoLTEpPDwzKSArIDEsICgoLTEpPDw0KSArIDEsDQorICAgICgoLTEpPDw1KSArIDEsICgoLTEpPDw2KSArIDEsICgoLTEpPDw3KSArIDEsICgoLTEpPDw4KSArIDEsDQorICAgICgoLTEpPDw5KSArIDEsICgoLTEpPDwxMCkgKyAxLCAoKC0xKTw8MTEpICsgMSwgKCgtMSk8PDEyKSArIDEsDQorICAgICgoLTEpPDwxMykgKyAxLCAoKC0xKTw8MTQpICsgMSwgKCgtMSk8PDE1KSArIDEgfTsNCisNCisjZW5kaWYgLyogQVZPSURfVEFCTEVTICovDQorDQorDQorLyoNCisgKiBDaGVjayBmb3IgYSByZXN0YXJ0IG1hcmtlciAmIHJlc3luY2hyb25pemUgZGVjb2Rlci4NCisgKiBSZXR1cm5zIEZBTFNFIGlmIG11c3Qgc3VzcGVuZC4NCisgKi8NCisNCitMT0NBTChib29sZWFuKQ0KK3Byb2Nlc3NfcmVzdGFydCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBwaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5ID0gKHBodWZmX2VudHJvcHlfcHRyKSBjaW5mby0+ZW50cm9weTsNCisgIGludCBjaTsNCisNCisgIC8qIFRocm93IGF3YXkgYW55IHVudXNlZCBiaXRzIHJlbWFpbmluZyBpbiBiaXQgYnVmZmVyOyAqLw0KKyAgLyogaW5jbHVkZSBhbnkgZnVsbCBieXRlcyBpbiBuZXh0X21hcmtlcidzIGNvdW50IG9mIGRpc2NhcmRlZCBieXRlcyAqLw0KKyAgY2luZm8tPm1hcmtlci0+ZGlzY2FyZGVkX2J5dGVzICs9IGVudHJvcHktPmJpdHN0YXRlLmJpdHNfbGVmdCAvIDg7DQorICBlbnRyb3B5LT5iaXRzdGF0ZS5iaXRzX2xlZnQgPSAwOw0KKw0KKyAgLyogQWR2YW5jZSBwYXN0IHRoZSBSU1RuIG1hcmtlciAqLw0KKyAgaWYgKCEgKCpjaW5mby0+bWFya2VyLT5yZWFkX3Jlc3RhcnRfbWFya2VyKSAoY2luZm8pKQ0KKyAgICByZXR1cm4gRkFMU0U7DQorDQorICAvKiBSZS1pbml0aWFsaXplIERDIHByZWRpY3Rpb25zIHRvIDAgKi8NCisgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5jb21wc19pbl9zY2FuOyBjaSsrKQ0KKyAgICBlbnRyb3B5LT5zYXZlZC5sYXN0X2RjX3ZhbFtjaV0gPSAwOw0KKyAgLyogUmUtaW5pdCBFT0IgcnVuIGNvdW50LCB0b28gKi8NCisgIGVudHJvcHktPnNhdmVkLkVPQlJVTiA9IDA7DQorDQorICAvKiBSZXNldCByZXN0YXJ0IGNvdW50ZXIgKi8NCisgIGVudHJvcHktPnJlc3RhcnRzX3RvX2dvID0gY2luZm8tPnJlc3RhcnRfaW50ZXJ2YWw7DQorDQorICAvKiBSZXNldCBvdXQtb2YtZGF0YSBmbGFnLCB1bmxlc3MgcmVhZF9yZXN0YXJ0X21hcmtlciBsZWZ0IHVzIHNtYWNrIHVwDQorICAgKiBhZ2FpbnN0IGEgbWFya2VyLiAgSW4gdGhhdCBjYXNlIHdlIHdpbGwgZW5kIHVwIHRyZWF0aW5nIHRoZSBuZXh0IGRhdGENCisgICAqIHNlZ21lbnQgYXMgZW1wdHksIGFuZCB3ZSBjYW4gYXZvaWQgcHJvZHVjaW5nIGJvZ3VzIG91dHB1dCBwaXhlbHMgYnkNCisgICAqIGxlYXZpbmcgdGhlIGZsYWcgc2V0Lg0KKyAgICovDQorICBpZiAoY2luZm8tPnVucmVhZF9tYXJrZXIgPT0gMCkNCisgICAgZW50cm9weS0+cHViLmluc3VmZmljaWVudF9kYXRhID0gRkFMU0U7DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBIdWZmbWFuIE1DVSBkZWNvZGluZy4NCisgKiBFYWNoIG9mIHRoZXNlIHJvdXRpbmVzIGRlY29kZXMgYW5kIHJldHVybnMgb25lIE1DVSdzIHdvcnRoIG9mDQorICogSHVmZm1hbi1jb21wcmVzc2VkIGNvZWZmaWNpZW50cy4gDQorICogVGhlIGNvZWZmaWNpZW50cyBhcmUgcmVvcmRlcmVkIGZyb20gemlnemFnIG9yZGVyIGludG8gbmF0dXJhbCBhcnJheSBvcmRlciwNCisgKiBidXQgYXJlIG5vdCBkZXF1YW50aXplZC4NCisgKg0KKyAqIFRoZSBpJ3RoIGJsb2NrIG9mIHRoZSBNQ1UgaXMgc3RvcmVkIGludG8gdGhlIGJsb2NrIHBvaW50ZWQgdG8gYnkNCisgKiBNQ1VfZGF0YVtpXS4gIFdFIEFTU1VNRSBUSElTIEFSRUEgSVMgSU5JVElBTExZIFpFUk9FRCBCWSBUSEUgQ0FMTEVSLg0KKyAqDQorICogV2UgcmV0dXJuIEZBTFNFIGlmIGRhdGEgc291cmNlIHJlcXVlc3RlZCBzdXNwZW5zaW9uLiAgSW4gdGhhdCBjYXNlIG5vDQorICogY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBwZXJtYW5lbnQgc3RhdGUuICAoRXhjZXB0aW9uOiBzb21lIG91dHB1dA0KKyAqIGNvZWZmaWNpZW50cyBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gYXNzaWduZWQuICBUaGlzIGlzIGhhcm1sZXNzIGZvcg0KKyAqIHNwZWN0cmFsIHNlbGVjdGlvbiwgc2luY2Ugd2UnbGwganVzdCByZS1hc3NpZ24gdGhlbSBvbiB0aGUgbmV4dCBjYWxsLg0KKyAqIFN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbiBBQyByZWZpbmVtZW50IGhhcyB0byBiZSBtb3JlIGNhcmVmdWwsIGhvd2V2ZXIuKQ0KKyAqLw0KKw0KKy8qDQorICogTUNVIGRlY29kaW5nIGZvciBEQyBpbml0aWFsIHNjYW4gKGVpdGhlciBzcGVjdHJhbCBzZWxlY3Rpb24sDQorICogb3IgZmlyc3QgcGFzcyBvZiBzdWNjZXNzaXZlIGFwcHJveGltYXRpb24pLg0KKyAqLw0KKw0KK01FVEhPRERFRihib29sZWFuKQ0KK2RlY29kZV9tY3VfRENfZmlyc3QgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpCTE9DS1JPVyAqTUNVX2RhdGEpDQoreyAgIA0KKyAgcGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSA9IChwaHVmZl9lbnRyb3B5X3B0cikgY2luZm8tPmVudHJvcHk7DQorICBpbnQgQWwgPSBjaW5mby0+QWw7DQorICByZWdpc3RlciBpbnQgcywgcjsNCisgIGludCBibGtuLCBjaTsNCisgIEpCTE9DS1JPVyBibG9jazsNCisgIEJJVFJFQURfU1RBVEVfVkFSUzsNCisgIHNhdmFibGVfc3RhdGUgc3RhdGU7DQorICBkX2Rlcml2ZWRfdGJsICogdGJsOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHI7DQorDQorICAvKiBQcm9jZXNzIHJlc3RhcnQgbWFya2VyIGlmIG5lZWRlZDsgbWF5IGhhdmUgdG8gc3VzcGVuZCAqLw0KKyAgaWYgKGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsKSB7DQorICAgIGlmIChlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9PSAwKQ0KKyAgICAgIGlmICghIHByb2Nlc3NfcmVzdGFydChjaW5mbykpDQorCXJldHVybiBGQUxTRTsNCisgIH0NCisNCisgIC8qIElmIHdlJ3ZlIHJ1biBvdXQgb2YgZGF0YSwganVzdCBsZWF2ZSB0aGUgTUNVIHNldCB0byB6ZXJvZXMuDQorICAgKiBUaGlzIHdheSwgd2UgcmV0dXJuIHVuaWZvcm0gZ3JheSBmb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgc2VnbWVudC4NCisgICAqLw0KKyAgaWYgKCEgZW50cm9weS0+cHViLmluc3VmZmljaWVudF9kYXRhKSB7DQorDQorICAgIC8qIExvYWQgdXAgd29ya2luZyBzdGF0ZSAqLw0KKyAgICBCSVRSRUFEX0xPQURfU1RBVEUoY2luZm8sZW50cm9weS0+Yml0c3RhdGUpOw0KKyAgICBBU1NJR05fU1RBVEUoc3RhdGUsIGVudHJvcHktPnNhdmVkKTsNCisNCisgICAgLyogT3V0ZXIgbG9vcCBoYW5kbGVzIGVhY2ggYmxvY2sgaW4gdGhlIE1DVSAqLw0KKw0KKyAgICBmb3IgKGJsa24gPSAwOyBibGtuIDwgY2luZm8tPmJsb2Nrc19pbl9NQ1U7IGJsa24rKykgew0KKyAgICAgIGJsb2NrID0gTUNVX2RhdGFbYmxrbl07DQorICAgICAgY2kgPSBjaW5mby0+TUNVX21lbWJlcnNoaXBbYmxrbl07DQorICAgICAgY29tcHB0ciA9IGNpbmZvLT5jdXJfY29tcF9pbmZvW2NpXTsNCisgICAgICB0YmwgPSBlbnRyb3B5LT5kZXJpdmVkX3RibHNbY29tcHB0ci0+ZGNfdGJsX25vXTsNCisNCisgICAgICAvKiBEZWNvZGUgYSBzaW5nbGUgYmxvY2sncyB3b3J0aCBvZiBjb2VmZmljaWVudHMgKi8NCisNCisgICAgICAvKiBTZWN0aW9uIEYuMi4yLjE6IGRlY29kZSB0aGUgREMgY29lZmZpY2llbnQgZGlmZmVyZW5jZSAqLw0KKyAgICAgIEhVRkZfREVDT0RFKHMsIGJyX3N0YXRlLCB0YmwsIHJldHVybiBGQUxTRSwgbGFiZWwxKTsNCisgICAgICBpZiAocykgew0KKwlDSEVDS19CSVRfQlVGRkVSKGJyX3N0YXRlLCBzLCByZXR1cm4gRkFMU0UpOw0KKwlyID0gR0VUX0JJVFMocyk7DQorCXMgPSBIVUZGX0VYVEVORChyLCBzKTsNCisgICAgICB9DQorDQorICAgICAgLyogQ29udmVydCBEQyBkaWZmZXJlbmNlIHRvIGFjdHVhbCB2YWx1ZSwgdXBkYXRlIGxhc3RfZGNfdmFsICovDQorICAgICAgcyArPSBzdGF0ZS5sYXN0X2RjX3ZhbFtjaV07DQorICAgICAgc3RhdGUubGFzdF9kY192YWxbY2ldID0gczsNCisgICAgICAvKiBTY2FsZSBhbmQgb3V0cHV0IHRoZSBjb2VmZmljaWVudCAoYXNzdW1lcyBqcGVnX25hdHVyYWxfb3JkZXJbMF09MCkgKi8NCisgICAgICAoKmJsb2NrKVswXSA9IChKQ09FRikgKHMgPDwgQWwpOw0KKyAgICB9DQorDQorICAgIC8qIENvbXBsZXRlZCBNQ1UsIHNvIHVwZGF0ZSBzdGF0ZSAqLw0KKyAgICBCSVRSRUFEX1NBVkVfU1RBVEUoY2luZm8sZW50cm9weS0+Yml0c3RhdGUpOw0KKyAgICBBU1NJR05fU1RBVEUoZW50cm9weS0+c2F2ZWQsIHN0YXRlKTsNCisgIH0NCisNCisgIC8qIEFjY291bnQgZm9yIHJlc3RhcnQgaW50ZXJ2YWwgKG5vLW9wIGlmIG5vdCB1c2luZyByZXN0YXJ0cykgKi8NCisgIGVudHJvcHktPnJlc3RhcnRzX3RvX2dvLS07DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBNQ1UgZGVjb2RpbmcgZm9yIEFDIGluaXRpYWwgc2NhbiAoZWl0aGVyIHNwZWN0cmFsIHNlbGVjdGlvbiwNCisgKiBvciBmaXJzdCBwYXNzIG9mIHN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbikuDQorICovDQorDQorTUVUSE9EREVGKGJvb2xlYW4pDQorZGVjb2RlX21jdV9BQ19maXJzdCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgSkJMT0NLUk9XICpNQ1VfZGF0YSkNCit7ICAgDQorICBwaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5ID0gKHBodWZmX2VudHJvcHlfcHRyKSBjaW5mby0+ZW50cm9weTsNCisgIGludCBTZSA9IGNpbmZvLT5TZTsNCisgIGludCBBbCA9IGNpbmZvLT5BbDsNCisgIHJlZ2lzdGVyIGludCBzLCBrLCByOw0KKyAgdW5zaWduZWQgaW50IEVPQlJVTjsNCisgIEpCTE9DS1JPVyBibG9jazsNCisgIEJJVFJFQURfU1RBVEVfVkFSUzsNCisgIGRfZGVyaXZlZF90YmwgKiB0Ymw7DQorDQorICAvKiBQcm9jZXNzIHJlc3RhcnQgbWFya2VyIGlmIG5lZWRlZDsgbWF5IGhhdmUgdG8gc3VzcGVuZCAqLw0KKyAgaWYgKGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsKSB7DQorICAgIGlmIChlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9PSAwKQ0KKyAgICAgIGlmICghIHByb2Nlc3NfcmVzdGFydChjaW5mbykpDQorCXJldHVybiBGQUxTRTsNCisgIH0NCisNCisgIC8qIElmIHdlJ3ZlIHJ1biBvdXQgb2YgZGF0YSwganVzdCBsZWF2ZSB0aGUgTUNVIHNldCB0byB6ZXJvZXMuDQorICAgKiBUaGlzIHdheSwgd2UgcmV0dXJuIHVuaWZvcm0gZ3JheSBmb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgc2VnbWVudC4NCisgICAqLw0KKyAgaWYgKCEgZW50cm9weS0+cHViLmluc3VmZmljaWVudF9kYXRhKSB7DQorDQorICAgIC8qIExvYWQgdXAgd29ya2luZyBzdGF0ZS4NCisgICAgICogV2UgY2FuIGF2b2lkIGxvYWRpbmcvc2F2aW5nIGJpdHJlYWQgc3RhdGUgaWYgaW4gYW4gRU9CIHJ1bi4NCisgICAgICovDQorICAgIEVPQlJVTiA9IGVudHJvcHktPnNhdmVkLkVPQlJVTjsJLyogb25seSBwYXJ0IG9mIHNhdmVkIHN0YXRlIHdlIG5lZWQgKi8NCisNCisgICAgLyogVGhlcmUgaXMgYWx3YXlzIG9ubHkgb25lIGJsb2NrIHBlciBNQ1UgKi8NCisNCisgICAgaWYgKEVPQlJVTiA+IDApCQkvKiBpZiBpdCdzIGEgYmFuZCBvZiB6ZXJvZXMuLi4gKi8NCisgICAgICBFT0JSVU4tLTsJCQkvKiAuLi5wcm9jZXNzIGl0IG5vdyAod2UgZG8gbm90aGluZykgKi8NCisgICAgZWxzZSB7DQorICAgICAgQklUUkVBRF9MT0FEX1NUQVRFKGNpbmZvLGVudHJvcHktPmJpdHN0YXRlKTsNCisgICAgICBibG9jayA9IE1DVV9kYXRhWzBdOw0KKyAgICAgIHRibCA9IGVudHJvcHktPmFjX2Rlcml2ZWRfdGJsOw0KKw0KKyAgICAgIGZvciAoayA9IGNpbmZvLT5TczsgayA8PSBTZTsgaysrKSB7DQorCUhVRkZfREVDT0RFKHMsIGJyX3N0YXRlLCB0YmwsIHJldHVybiBGQUxTRSwgbGFiZWwyKTsNCisJciA9IHMgPj4gNDsNCisJcyAmPSAxNTsNCisJaWYgKHMpIHsNCisJICBrICs9IHI7DQorCSAgQ0hFQ0tfQklUX0JVRkZFUihicl9zdGF0ZSwgcywgcmV0dXJuIEZBTFNFKTsNCisJICByID0gR0VUX0JJVFMocyk7DQorCSAgcyA9IEhVRkZfRVhURU5EKHIsIHMpOw0KKwkgIC8qIFNjYWxlIGFuZCBvdXRwdXQgY29lZmZpY2llbnQgaW4gbmF0dXJhbCAoZGV6aWd6YWdnZWQpIG9yZGVyICovDQorCSAgKCpibG9jaylbanBlZ19uYXR1cmFsX29yZGVyW2tdXSA9IChKQ09FRikgKHMgPDwgQWwpOw0KKwl9IGVsc2Ugew0KKwkgIGlmIChyID09IDE1KSB7CS8qIFpSTCAqLw0KKwkgICAgayArPSAxNTsJCS8qIHNraXAgMTUgemVyb2VzIGluIGJhbmQgKi8NCisJICB9IGVsc2UgewkJLyogRU9CciwgcnVuIGxlbmd0aCBpcyAyXnIgKyBhcHBlbmRlZCBiaXRzICovDQorCSAgICBFT0JSVU4gPSAxIDw8IHI7DQorCSAgICBpZiAocikgewkJLyogRU9CciwgciA+IDAgKi8NCisJICAgICAgQ0hFQ0tfQklUX0JVRkZFUihicl9zdGF0ZSwgciwgcmV0dXJuIEZBTFNFKTsNCisJICAgICAgciA9IEdFVF9CSVRTKHIpOw0KKwkgICAgICBFT0JSVU4gKz0gcjsNCisJICAgIH0NCisJICAgIEVPQlJVTi0tOwkJLyogdGhpcyBiYW5kIGlzIHByb2Nlc3NlZCBhdCB0aGlzIG1vbWVudCAqLw0KKwkgICAgYnJlYWs7CQkvKiBmb3JjZSBlbmQtb2YtYmFuZCAqLw0KKwkgIH0NCisJfQ0KKyAgICAgIH0NCisNCisgICAgICBCSVRSRUFEX1NBVkVfU1RBVEUoY2luZm8sZW50cm9weS0+Yml0c3RhdGUpOw0KKyAgICB9DQorDQorICAgIC8qIENvbXBsZXRlZCBNQ1UsIHNvIHVwZGF0ZSBzdGF0ZSAqLw0KKyAgICBlbnRyb3B5LT5zYXZlZC5FT0JSVU4gPSBFT0JSVU47CS8qIG9ubHkgcGFydCBvZiBzYXZlZCBzdGF0ZSB3ZSBuZWVkICovDQorICB9DQorDQorICAvKiBBY2NvdW50IGZvciByZXN0YXJ0IGludGVydmFsIChuby1vcCBpZiBub3QgdXNpbmcgcmVzdGFydHMpICovDQorICBlbnRyb3B5LT5yZXN0YXJ0c190b19nby0tOw0KKw0KKyAgcmV0dXJuIFRSVUU7DQorfQ0KKw0KKw0KKy8qDQorICogTUNVIGRlY29kaW5nIGZvciBEQyBzdWNjZXNzaXZlIGFwcHJveGltYXRpb24gcmVmaW5lbWVudCBzY2FuLg0KKyAqIE5vdGU6IHdlIGFzc3VtZSBzdWNoIHNjYW5zIGNhbiBiZSBtdWx0aS1jb21wb25lbnQsIGFsdGhvdWdoIHRoZSBzcGVjDQorICogaXMgbm90IHZlcnkgY2xlYXIgb24gdGhlIHBvaW50Lg0KKyAqLw0KKw0KK01FVEhPRERFRihib29sZWFuKQ0KK2RlY29kZV9tY3VfRENfcmVmaW5lIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBKQkxPQ0tST1cgKk1DVV9kYXRhKQ0KK3sgICANCisgIHBodWZmX2VudHJvcHlfcHRyIGVudHJvcHkgPSAocGh1ZmZfZW50cm9weV9wdHIpIGNpbmZvLT5lbnRyb3B5Ow0KKyAgaW50IHAxID0gMSA8PCBjaW5mby0+QWw7CS8qIDEgaW4gdGhlIGJpdCBwb3NpdGlvbiBiZWluZyBjb2RlZCAqLw0KKyAgaW50IGJsa247DQorICBKQkxPQ0tST1cgYmxvY2s7DQorICBCSVRSRUFEX1NUQVRFX1ZBUlM7DQorDQorICAvKiBQcm9jZXNzIHJlc3RhcnQgbWFya2VyIGlmIG5lZWRlZDsgbWF5IGhhdmUgdG8gc3VzcGVuZCAqLw0KKyAgaWYgKGNpbmZvLT5yZXN0YXJ0X2ludGVydmFsKSB7DQorICAgIGlmIChlbnRyb3B5LT5yZXN0YXJ0c190b19nbyA9PSAwKQ0KKyAgICAgIGlmICghIHByb2Nlc3NfcmVzdGFydChjaW5mbykpDQorCXJldHVybiBGQUxTRTsNCisgIH0NCisNCisgIC8qIE5vdCB3b3J0aCB0aGUgY3ljbGVzIHRvIGNoZWNrIGluc3VmZmljaWVudF9kYXRhIGhlcmUsDQorICAgKiBzaW5jZSB3ZSB3aWxsIG5vdCBjaGFuZ2UgdGhlIGRhdGEgYW55d2F5IGlmIHdlIHJlYWQgemVyb2VzLg0KKyAgICovDQorDQorICAvKiBMb2FkIHVwIHdvcmtpbmcgc3RhdGUgKi8NCisgIEJJVFJFQURfTE9BRF9TVEFURShjaW5mbyxlbnRyb3B5LT5iaXRzdGF0ZSk7DQorDQorICAvKiBPdXRlciBsb29wIGhhbmRsZXMgZWFjaCBibG9jayBpbiB0aGUgTUNVICovDQorDQorICBmb3IgKGJsa24gPSAwOyBibGtuIDwgY2luZm8tPmJsb2Nrc19pbl9NQ1U7IGJsa24rKykgew0KKyAgICBibG9jayA9IE1DVV9kYXRhW2Jsa25dOw0KKw0KKyAgICAvKiBFbmNvZGVkIGRhdGEgaXMgc2ltcGx5IHRoZSBuZXh0IGJpdCBvZiB0aGUgdHdvJ3MtY29tcGxlbWVudCBEQyB2YWx1ZSAqLw0KKyAgICBDSEVDS19CSVRfQlVGRkVSKGJyX3N0YXRlLCAxLCByZXR1cm4gRkFMU0UpOw0KKyAgICBpZiAoR0VUX0JJVFMoMSkpDQorICAgICAgKCpibG9jaylbMF0gfD0gcDE7DQorICAgIC8qIE5vdGU6IHNpbmNlIHdlIHVzZSB8PSwgcmVwZWF0aW5nIHRoZSBhc3NpZ25tZW50IGxhdGVyIGlzIHNhZmUgKi8NCisgIH0NCisNCisgIC8qIENvbXBsZXRlZCBNQ1UsIHNvIHVwZGF0ZSBzdGF0ZSAqLw0KKyAgQklUUkVBRF9TQVZFX1NUQVRFKGNpbmZvLGVudHJvcHktPmJpdHN0YXRlKTsNCisNCisgIC8qIEFjY291bnQgZm9yIHJlc3RhcnQgaW50ZXJ2YWwgKG5vLW9wIGlmIG5vdCB1c2luZyByZXN0YXJ0cykgKi8NCisgIGVudHJvcHktPnJlc3RhcnRzX3RvX2dvLS07DQorDQorICByZXR1cm4gVFJVRTsNCit9DQorDQorDQorLyoNCisgKiBNQ1UgZGVjb2RpbmcgZm9yIEFDIHN1Y2Nlc3NpdmUgYXBwcm94aW1hdGlvbiByZWZpbmVtZW50IHNjYW4uDQorICovDQorDQorTUVUSE9EREVGKGJvb2xlYW4pDQorZGVjb2RlX21jdV9BQ19yZWZpbmUgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpCTE9DS1JPVyAqTUNVX2RhdGEpDQoreyAgIA0KKyAgcGh1ZmZfZW50cm9weV9wdHIgZW50cm9weSA9IChwaHVmZl9lbnRyb3B5X3B0cikgY2luZm8tPmVudHJvcHk7DQorICBpbnQgU2UgPSBjaW5mby0+U2U7DQorICBpbnQgcDEgPSAxIDw8IGNpbmZvLT5BbDsJLyogMSBpbiB0aGUgYml0IHBvc2l0aW9uIGJlaW5nIGNvZGVkICovDQorICBpbnQgbTEgPSAoLTEpIDw8IGNpbmZvLT5BbDsJLyogLTEgaW4gdGhlIGJpdCBwb3NpdGlvbiBiZWluZyBjb2RlZCAqLw0KKyAgcmVnaXN0ZXIgaW50IHMsIGssIHI7DQorICB1bnNpZ25lZCBpbnQgRU9CUlVOOw0KKyAgSkJMT0NLUk9XIGJsb2NrOw0KKyAgSkNPRUZQVFIgdGhpc2NvZWY7DQorICBCSVRSRUFEX1NUQVRFX1ZBUlM7DQorICBkX2Rlcml2ZWRfdGJsICogdGJsOw0KKyAgaW50IG51bV9uZXduejsNCisgIGludCBuZXduel9wb3NbRENUU0laRTJdOw0KKw0KKyAgLyogUHJvY2VzcyByZXN0YXJ0IG1hcmtlciBpZiBuZWVkZWQ7IG1heSBoYXZlIHRvIHN1c3BlbmQgKi8NCisgIGlmIChjaW5mby0+cmVzdGFydF9pbnRlcnZhbCkgew0KKyAgICBpZiAoZW50cm9weS0+cmVzdGFydHNfdG9fZ28gPT0gMCkNCisgICAgICBpZiAoISBwcm9jZXNzX3Jlc3RhcnQoY2luZm8pKQ0KKwlyZXR1cm4gRkFMU0U7DQorICB9DQorDQorICAvKiBJZiB3ZSd2ZSBydW4gb3V0IG9mIGRhdGEsIGRvbid0IG1vZGlmeSB0aGUgTUNVLg0KKyAgICovDQorICBpZiAoISBlbnRyb3B5LT5wdWIuaW5zdWZmaWNpZW50X2RhdGEpIHsNCisNCisgICAgLyogTG9hZCB1cCB3b3JraW5nIHN0YXRlICovDQorICAgIEJJVFJFQURfTE9BRF9TVEFURShjaW5mbyxlbnRyb3B5LT5iaXRzdGF0ZSk7DQorICAgIEVPQlJVTiA9IGVudHJvcHktPnNhdmVkLkVPQlJVTjsgLyogb25seSBwYXJ0IG9mIHNhdmVkIHN0YXRlIHdlIG5lZWQgKi8NCisNCisgICAgLyogVGhlcmUgaXMgYWx3YXlzIG9ubHkgb25lIGJsb2NrIHBlciBNQ1UgKi8NCisgICAgYmxvY2sgPSBNQ1VfZGF0YVswXTsNCisgICAgdGJsID0gZW50cm9weS0+YWNfZGVyaXZlZF90Ymw7DQorDQorICAgIC8qIElmIHdlIGFyZSBmb3JjZWQgdG8gc3VzcGVuZCwgd2UgbXVzdCB1bmRvIHRoZSBhc3NpZ25tZW50cyB0byBhbnkgbmV3bHkNCisgICAgICogbm9uemVybyBjb2VmZmljaWVudHMgaW4gdGhlIGJsb2NrLCBiZWNhdXNlIG90aGVyd2lzZSB3ZSdkIGdldCBjb25mdXNlZA0KKyAgICAgKiBuZXh0IHRpbWUgYWJvdXQgd2hpY2ggY29lZmZpY2llbnRzIHdlcmUgYWxyZWFkeSBub256ZXJvLg0KKyAgICAgKiBCdXQgd2UgbmVlZCBub3QgdW5kbyBhZGRpdGlvbiBvZiBiaXRzIHRvIGFscmVhZHktbm9uemVybyBjb2VmZmljaWVudHM7DQorICAgICAqIGluc3RlYWQsIHdlIGNhbiB0ZXN0IHRoZSBjdXJyZW50IGJpdCB0byBzZWUgaWYgd2UgYWxyZWFkeSBkaWQgaXQuDQorICAgICAqLw0KKyAgICBudW1fbmV3bnogPSAwOw0KKw0KKyAgICAvKiBpbml0aWFsaXplIGNvZWZmaWNpZW50IGxvb3AgY291bnRlciB0byBzdGFydCBvZiBiYW5kICovDQorICAgIGsgPSBjaW5mby0+U3M7DQorDQorICAgIGlmIChFT0JSVU4gPT0gMCkgew0KKyAgICAgIGZvciAoOyBrIDw9IFNlOyBrKyspIHsNCisJSFVGRl9ERUNPREUocywgYnJfc3RhdGUsIHRibCwgZ290byB1bmRvaXQsIGxhYmVsMyk7DQorCXIgPSBzID4+IDQ7DQorCXMgJj0gMTU7DQorCWlmIChzKSB7DQorCSAgaWYgKHMgIT0gMSkJCS8qIHNpemUgb2YgbmV3IGNvZWYgc2hvdWxkIGFsd2F5cyBiZSAxICovDQorCSAgICBXQVJOTVMoY2luZm8sIEpXUk5fSFVGRl9CQURfQ09ERSk7DQorCSAgQ0hFQ0tfQklUX0JVRkZFUihicl9zdGF0ZSwgMSwgZ290byB1bmRvaXQpOw0KKwkgIGlmIChHRVRfQklUUygxKSkNCisJICAgIHMgPSBwMTsJCS8qIG5ld2x5IG5vbnplcm8gY29lZiBpcyBwb3NpdGl2ZSAqLw0KKwkgIGVsc2UNCisJICAgIHMgPSBtMTsJCS8qIG5ld2x5IG5vbnplcm8gY29lZiBpcyBuZWdhdGl2ZSAqLw0KKwl9IGVsc2Ugew0KKwkgIGlmIChyICE9IDE1KSB7DQorCSAgICBFT0JSVU4gPSAxIDw8IHI7CS8qIEVPQnIsIHJ1biBsZW5ndGggaXMgMl5yICsgYXBwZW5kZWQgYml0cyAqLw0KKwkgICAgaWYgKHIpIHsNCisJICAgICAgQ0hFQ0tfQklUX0JVRkZFUihicl9zdGF0ZSwgciwgZ290byB1bmRvaXQpOw0KKwkgICAgICByID0gR0VUX0JJVFMocik7DQorCSAgICAgIEVPQlJVTiArPSByOw0KKwkgICAgfQ0KKwkgICAgYnJlYWs7CQkvKiByZXN0IG9mIGJsb2NrIGlzIGhhbmRsZWQgYnkgRU9CIGxvZ2ljICovDQorCSAgfQ0KKwkgIC8qIG5vdGUgcyA9IDAgZm9yIHByb2Nlc3NpbmcgWlJMICovDQorCX0NCisJLyogQWR2YW5jZSBvdmVyIGFscmVhZHktbm9uemVybyBjb2VmcyBhbmQgciBzdGlsbC16ZXJvIGNvZWZzLA0KKwkgKiBhcHBlbmRpbmcgY29ycmVjdGlvbiBiaXRzIHRvIHRoZSBub256ZXJvZXMuICBBIGNvcnJlY3Rpb24gYml0IGlzIDENCisJICogaWYgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBjb2VmZmljaWVudCBtdXN0IGJlIGluY3JlYXNlZC4NCisJICovDQorCWRvIHsNCisJICB0aGlzY29lZiA9ICpibG9jayArIGpwZWdfbmF0dXJhbF9vcmRlcltrXTsNCisJICBpZiAoKnRoaXNjb2VmICE9IDApIHsNCisJICAgIENIRUNLX0JJVF9CVUZGRVIoYnJfc3RhdGUsIDEsIGdvdG8gdW5kb2l0KTsNCisJICAgIGlmIChHRVRfQklUUygxKSkgew0KKwkgICAgICBpZiAoKCp0aGlzY29lZiAmIHAxKSA9PSAwKSB7IC8qIGRvIG5vdGhpbmcgaWYgYWxyZWFkeSBzZXQgaXQgKi8NCisJCWlmICgqdGhpc2NvZWYgPj0gMCkNCisJCSAgKnRoaXNjb2VmICs9IHAxOw0KKwkJZWxzZQ0KKwkJICAqdGhpc2NvZWYgKz0gbTE7DQorCSAgICAgIH0NCisJICAgIH0NCisJICB9IGVsc2Ugew0KKwkgICAgaWYgKC0tciA8IDApDQorCSAgICAgIGJyZWFrOwkJLyogcmVhY2hlZCB0YXJnZXQgemVybyBjb2VmZmljaWVudCAqLw0KKwkgIH0NCisJICBrKys7DQorCX0gd2hpbGUgKGsgPD0gU2UpOw0KKwlpZiAocykgew0KKwkgIGludCBwb3MgPSBqcGVnX25hdHVyYWxfb3JkZXJba107DQorCSAgLyogT3V0cHV0IG5ld2x5IG5vbnplcm8gY29lZmZpY2llbnQgKi8NCisJICAoKmJsb2NrKVtwb3NdID0gKEpDT0VGKSBzOw0KKwkgIC8qIFJlbWVtYmVyIGl0cyBwb3NpdGlvbiBpbiBjYXNlIHdlIGhhdmUgdG8gc3VzcGVuZCAqLw0KKwkgIG5ld256X3Bvc1tudW1fbmV3bnorK10gPSBwb3M7DQorCX0NCisgICAgICB9DQorICAgIH0NCisNCisgICAgaWYgKEVPQlJVTiA+IDApIHsNCisgICAgICAvKiBTY2FuIGFueSByZW1haW5pbmcgY29lZmZpY2llbnQgcG9zaXRpb25zIGFmdGVyIHRoZSBlbmQtb2YtYmFuZA0KKyAgICAgICAqICh0aGUgbGFzdCBuZXdseSBub256ZXJvIGNvZWZmaWNpZW50LCBpZiBhbnkpLiAgQXBwZW5kIGEgY29ycmVjdGlvbg0KKyAgICAgICAqIGJpdCB0byBlYWNoIGFscmVhZHktbm9uemVybyBjb2VmZmljaWVudC4gIEEgY29ycmVjdGlvbiBiaXQgaXMgMQ0KKyAgICAgICAqIGlmIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgY29lZmZpY2llbnQgbXVzdCBiZSBpbmNyZWFzZWQuDQorICAgICAgICovDQorICAgICAgZm9yICg7IGsgPD0gU2U7IGsrKykgew0KKwl0aGlzY29lZiA9ICpibG9jayArIGpwZWdfbmF0dXJhbF9vcmRlcltrXTsNCisJaWYgKCp0aGlzY29lZiAhPSAwKSB7DQorCSAgQ0hFQ0tfQklUX0JVRkZFUihicl9zdGF0ZSwgMSwgZ290byB1bmRvaXQpOw0KKwkgIGlmIChHRVRfQklUUygxKSkgew0KKwkgICAgaWYgKCgqdGhpc2NvZWYgJiBwMSkgPT0gMCkgeyAvKiBkbyBub3RoaW5nIGlmIGFscmVhZHkgY2hhbmdlZCBpdCAqLw0KKwkgICAgICBpZiAoKnRoaXNjb2VmID49IDApDQorCQkqdGhpc2NvZWYgKz0gcDE7DQorCSAgICAgIGVsc2UNCisJCSp0aGlzY29lZiArPSBtMTsNCisJICAgIH0NCisJICB9DQorCX0NCisgICAgICB9DQorICAgICAgLyogQ291bnQgb25lIGJsb2NrIGNvbXBsZXRlZCBpbiBFT0IgcnVuICovDQorICAgICAgRU9CUlVOLS07DQorICAgIH0NCisNCisgICAgLyogQ29tcGxldGVkIE1DVSwgc28gdXBkYXRlIHN0YXRlICovDQorICAgIEJJVFJFQURfU0FWRV9TVEFURShjaW5mbyxlbnRyb3B5LT5iaXRzdGF0ZSk7DQorICAgIGVudHJvcHktPnNhdmVkLkVPQlJVTiA9IEVPQlJVTjsgLyogb25seSBwYXJ0IG9mIHNhdmVkIHN0YXRlIHdlIG5lZWQgKi8NCisgIH0NCisNCisgIC8qIEFjY291bnQgZm9yIHJlc3RhcnQgaW50ZXJ2YWwgKG5vLW9wIGlmIG5vdCB1c2luZyByZXN0YXJ0cykgKi8NCisgIGVudHJvcHktPnJlc3RhcnRzX3RvX2dvLS07DQorDQorICByZXR1cm4gVFJVRTsNCisNCit1bmRvaXQ6DQorICAvKiBSZS16ZXJvIGFueSBvdXRwdXQgY29lZmZpY2llbnRzIHRoYXQgd2UgbWFkZSBuZXdseSBub256ZXJvICovDQorICB3aGlsZSAobnVtX25ld256ID4gMCkNCisgICAgKCpibG9jaylbbmV3bnpfcG9zWy0tbnVtX25ld256XV0gPSAwOw0KKw0KKyAgcmV0dXJuIEZBTFNFOw0KK30NCisNCisNCisvKg0KKyAqIE1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBwcm9ncmVzc2l2ZSBIdWZmbWFuIGVudHJvcHkgZGVjb2RpbmcuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoramluaXRfcGh1ZmZfZGVjb2RlciAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykNCit7DQorICBwaHVmZl9lbnRyb3B5X3B0ciBlbnRyb3B5Ow0KKyAgaW50ICpjb2VmX2JpdF9wdHI7DQorICBpbnQgY2ksIGk7DQorDQorICBlbnRyb3B5ID0gKHBodWZmX2VudHJvcHlfcHRyKQ0KKyAgICAoKmNpbmZvLT5tZW0tPmFsbG9jX3NtYWxsKSAoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkJCQlTSVpFT0YocGh1ZmZfZW50cm9weV9kZWNvZGVyKSk7DQorICBjaW5mby0+ZW50cm9weSA9IChzdHJ1Y3QganBlZ19lbnRyb3B5X2RlY29kZXIgKikgZW50cm9weTsNCisgIGVudHJvcHktPnB1Yi5zdGFydF9wYXNzID0gc3RhcnRfcGFzc19waHVmZl9kZWNvZGVyOw0KKw0KKyAgLyogTWFyayBkZXJpdmVkIHRhYmxlcyB1bmFsbG9jYXRlZCAqLw0KKyAgZm9yIChpID0gMDsgaSA8IE5VTV9IVUZGX1RCTFM7IGkrKykgew0KKyAgICBlbnRyb3B5LT5kZXJpdmVkX3RibHNbaV0gPSBOVUxMOw0KKyAgfQ0KKw0KKyAgLyogQ3JlYXRlIHByb2dyZXNzaW9uIHN0YXR1cyB0YWJsZSAqLw0KKyAgY2luZm8tPmNvZWZfYml0cyA9IChpbnQgKCopW0RDVFNJWkUyXSkNCisgICAgKCpjaW5mby0+bWVtLT5hbGxvY19zbWFsbCkgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJY2luZm8tPm51bV9jb21wb25lbnRzKkRDVFNJWkUyKlNJWkVPRihpbnQpKTsNCisgIGNvZWZfYml0X3B0ciA9ICYgY2luZm8tPmNvZWZfYml0c1swXVswXTsNCisgIGZvciAoY2kgPSAwOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsgY2krKykgDQorICAgIGZvciAoaSA9IDA7IGkgPCBEQ1RTSVpFMjsgaSsrKQ0KKyAgICAgICpjb2VmX2JpdF9wdHIrKyA9IC0xOw0KK30NCisNCisjZW5kaWYgLyogRF9QUk9HUkVTU0lWRV9TVVBQT1JURUQgKi8NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZHBvc3RjdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRwb3N0Y3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTViZTVjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRwb3N0Y3QuYwpAQCAtMCwwICsxLDI5MyBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGpkcG9zdGN0LmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk2LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVjb21wcmVzc2lvbiBwb3N0cHJvY2Vzc2luZyBjb250cm9sbGVyLg0KKyAqIFRoaXMgY29udHJvbGxlciBtYW5hZ2VzIHRoZSB1cHNhbXBsaW5nLCBjb2xvciBjb252ZXJzaW9uLCBhbmQgY29sb3INCisgKiBxdWFudGl6YXRpb24vcmVkdWN0aW9uIHN0ZXBzOyBzcGVjaWZpY2FsbHksIGl0IGNvbnRyb2xzIHRoZSBidWZmZXJpbmcNCisgKiBiZXR3ZWVuIHVwc2FtcGxlL2NvbG9yIGNvbnZlcnNpb24gYW5kIGNvbG9yIHF1YW50aXphdGlvbi9yZWR1Y3Rpb24uDQorICoNCisgKiBJZiBubyBjb2xvciBxdWFudGl6YXRpb24vcmVkdWN0aW9uIGlzIHJlcXVpcmVkLCB0aGVuIHRoaXMgbW9kdWxlIGhhcyBubw0KKyAqIHdvcmsgdG8gZG8sIGFuZCBpdCBqdXN0IGhhbmRzIG9mZiB0byB0aGUgdXBzYW1wbGUvY29sb3IgY29udmVyc2lvbiBjb2RlLg0KKyAqIEFuIGludGVncmF0ZWQgdXBzYW1wbGUvY29udmVydC9xdWFudGl6ZSBwcm9jZXNzIHdvdWxkIHJlcGxhY2UgdGhpcyBtb2R1bGUNCisgKiBlbnRpcmVseS4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisNCisNCisvKiBQcml2YXRlIGJ1ZmZlciBjb250cm9sbGVyIG9iamVjdCAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIHN0cnVjdCBqcGVnX2RfcG9zdF9jb250cm9sbGVyIHB1YjsgLyogcHVibGljIGZpZWxkcyAqLw0KKw0KKyAgLyogQ29sb3IgcXVhbnRpemF0aW9uIHNvdXJjZSBidWZmZXI6IHRoaXMgaG9sZHMgb3V0cHV0IGRhdGEgZnJvbQ0KKyAgICogdGhlIHVwc2FtcGxlL2NvbG9yIGNvbnZlcnNpb24gc3RlcCB0byBiZSBwYXNzZWQgdG8gdGhlIHF1YW50aXplci4NCisgICAqIEZvciB0d28tcGFzcyBjb2xvciBxdWFudGl6YXRpb24sIHdlIG5lZWQgYSBmdWxsLWltYWdlIGJ1ZmZlcjsNCisgICAqIGZvciBvbmUtcGFzcyBvcGVyYXRpb24sIGEgc3RyaXAgYnVmZmVyIGlzIHN1ZmZpY2llbnQuDQorICAgKi8NCisgIGp2aXJ0X3NhcnJheV9wdHIgd2hvbGVfaW1hZ2U7CS8qIHZpcnR1YWwgYXJyYXksIG9yIE5VTEwgaWYgb25lLXBhc3MgKi8NCisgIEpTQU1QQVJSQVkgYnVmZmVyOwkJLyogc3RyaXAgYnVmZmVyLCBvciBjdXJyZW50IHN0cmlwIG9mIHZpcnR1YWwgKi8NCisgIEpESU1FTlNJT04gc3RyaXBfaGVpZ2h0OwkvKiBidWZmZXIgc2l6ZSBpbiByb3dzICovDQorICAvKiBmb3IgdHdvLXBhc3MgbW9kZSBvbmx5OiAqLw0KKyAgSkRJTUVOU0lPTiBzdGFydGluZ19yb3c7CS8qIHJvdyAjIG9mIGZpcnN0IHJvdyBpbiBjdXJyZW50IHN0cmlwICovDQorICBKRElNRU5TSU9OIG5leHRfcm93OwkJLyogaW5kZXggb2YgbmV4dCByb3cgdG8gZmlsbC9lbXB0eSBpbiBzdHJpcCAqLw0KK30gbXlfcG9zdF9jb250cm9sbGVyOw0KKw0KK3R5cGVkZWYgbXlfcG9zdF9jb250cm9sbGVyICogbXlfcG9zdF9wdHI7DQorDQorDQorLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8NCitNRVRIT0RERUYodm9pZCkgcG9zdF9wcm9jZXNzXzFwYXNzDQorCUpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJICAgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiAqaW5fcm93X2dyb3VwX2N0ciwNCisJICAgICBKRElNRU5TSU9OIGluX3Jvd19ncm91cHNfYXZhaWwsDQorCSAgICAgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OICpvdXRfcm93X2N0ciwNCisJICAgICBKRElNRU5TSU9OIG91dF9yb3dzX2F2YWlsKSk7DQorI2lmZGVmIFFVQU5UXzJQQVNTX1NVUFBPUlRFRA0KK01FVEhPRERFRih2b2lkKSBwb3N0X3Byb2Nlc3NfcHJlcGFzcw0KKwlKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCSAgICAgSlNBTVBJTUFHRSBpbnB1dF9idWYsIEpESU1FTlNJT04gKmluX3Jvd19ncm91cF9jdHIsDQorCSAgICAgSkRJTUVOU0lPTiBpbl9yb3dfZ3JvdXBzX2F2YWlsLA0KKwkgICAgIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZiwgSkRJTUVOU0lPTiAqb3V0X3Jvd19jdHIsDQorCSAgICAgSkRJTUVOU0lPTiBvdXRfcm93c19hdmFpbCkpOw0KK01FVEhPRERFRih2b2lkKSBwb3N0X3Byb2Nlc3NfMnBhc3MNCisJSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkgICAgIEpTQU1QSU1BR0UgaW5wdXRfYnVmLCBKRElNRU5TSU9OICppbl9yb3dfZ3JvdXBfY3RyLA0KKwkgICAgIEpESU1FTlNJT04gaW5fcm93X2dyb3Vwc19hdmFpbCwNCisJICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gKm91dF9yb3dfY3RyLA0KKwkgICAgIEpESU1FTlNJT04gb3V0X3Jvd3NfYXZhaWwpKTsNCisjZW5kaWYNCisNCisNCisvKg0KKyAqIEluaXRpYWxpemUgZm9yIGEgcHJvY2Vzc2luZyBwYXNzLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3N0YXJ0X3Bhc3NfZHBvc3QgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpfQlVGX01PREUgcGFzc19tb2RlKQ0KK3sNCisgIG15X3Bvc3RfcHRyIHBvc3QgPSAobXlfcG9zdF9wdHIpIGNpbmZvLT5wb3N0Ow0KKw0KKyAgc3dpdGNoIChwYXNzX21vZGUpIHsNCisgIGNhc2UgSkJVRl9QQVNTX1RIUlU6DQorICAgIGlmIChjaW5mby0+cXVhbnRpemVfY29sb3JzKSB7DQorICAgICAgLyogU2luZ2xlLXBhc3MgcHJvY2Vzc2luZyB3aXRoIGNvbG9yIHF1YW50aXphdGlvbi4gKi8NCisgICAgICBwb3N0LT5wdWIucG9zdF9wcm9jZXNzX2RhdGEgPSBwb3N0X3Byb2Nlc3NfMXBhc3M7DQorICAgICAgLyogV2UgY291bGQgYmUgZG9pbmcgYnVmZmVyZWQtaW1hZ2Ugb3V0cHV0IGJlZm9yZSBzdGFydGluZyBhIDItcGFzcw0KKyAgICAgICAqIGNvbG9yIHF1YW50aXphdGlvbjsgaW4gdGhhdCBjYXNlLCBqaW5pdF9kX3Bvc3RfY29udHJvbGxlciBkaWQgbm90DQorICAgICAgICogYWxsb2NhdGUgYSBzdHJpcCBidWZmZXIuICBVc2UgdGhlIHZpcnR1YWwtYXJyYXkgYnVmZmVyIGFzIHdvcmtzcGFjZS4NCisgICAgICAgKi8NCisgICAgICBpZiAocG9zdC0+YnVmZmVyID09IE5VTEwpIHsNCisJcG9zdC0+YnVmZmVyID0gKCpjaW5mby0+bWVtLT5hY2Nlc3NfdmlydF9zYXJyYXkpDQorCSAgKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBwb3N0LT53aG9sZV9pbWFnZSwNCisJICAgKEpESU1FTlNJT04pIDAsIHBvc3QtPnN0cmlwX2hlaWdodCwgVFJVRSk7DQorICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgIC8qIEZvciBzaW5nbGUtcGFzcyBwcm9jZXNzaW5nIHdpdGhvdXQgY29sb3IgcXVhbnRpemF0aW9uLA0KKyAgICAgICAqIEkgaGF2ZSBubyB3b3JrIHRvIGRvOyBqdXN0IGNhbGwgdGhlIHVwc2FtcGxlciBkaXJlY3RseS4NCisgICAgICAgKi8NCisgICAgICBwb3N0LT5wdWIucG9zdF9wcm9jZXNzX2RhdGEgPSBjaW5mby0+dXBzYW1wbGUtPnVwc2FtcGxlOw0KKyAgICB9DQorICAgIGJyZWFrOw0KKyNpZmRlZiBRVUFOVF8yUEFTU19TVVBQT1JURUQNCisgIGNhc2UgSkJVRl9TQVZFX0FORF9QQVNTOg0KKyAgICAvKiBGaXJzdCBwYXNzIG9mIDItcGFzcyBxdWFudGl6YXRpb24gKi8NCisgICAgaWYgKHBvc3QtPndob2xlX2ltYWdlID09IE5VTEwpDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfQlVGRkVSX01PREUpOw0KKyAgICBwb3N0LT5wdWIucG9zdF9wcm9jZXNzX2RhdGEgPSBwb3N0X3Byb2Nlc3NfcHJlcGFzczsNCisgICAgYnJlYWs7DQorICBjYXNlIEpCVUZfQ1JBTktfREVTVDoNCisgICAgLyogU2Vjb25kIHBhc3Mgb2YgMi1wYXNzIHF1YW50aXphdGlvbiAqLw0KKyAgICBpZiAocG9zdC0+d2hvbGVfaW1hZ2UgPT0gTlVMTCkNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9CVUZGRVJfTU9ERSk7DQorICAgIHBvc3QtPnB1Yi5wb3N0X3Byb2Nlc3NfZGF0YSA9IHBvc3RfcHJvY2Vzc18ycGFzczsNCisgICAgYnJlYWs7DQorI2VuZGlmIC8qIFFVQU5UXzJQQVNTX1NVUFBPUlRFRCAqLw0KKyAgZGVmYXVsdDoNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9CQURfQlVGRkVSX01PREUpOw0KKyAgICBicmVhazsNCisgIH0NCisgIHBvc3QtPnN0YXJ0aW5nX3JvdyA9IHBvc3QtPm5leHRfcm93ID0gMDsNCit9DQorDQorDQorLyoNCisgKiBQcm9jZXNzIHNvbWUgZGF0YSBpbiB0aGUgb25lLXBhc3MgKHN0cmlwIGJ1ZmZlcikgY2FzZS4NCisgKiBUaGlzIGlzIHVzZWQgZm9yIGNvbG9yIHByZWNpc2lvbiByZWR1Y3Rpb24gYXMgd2VsbCBhcyBvbmUtcGFzcyBxdWFudGl6YXRpb24uDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorcG9zdF9wcm9jZXNzXzFwYXNzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJICAgIEpTQU1QSU1BR0UgaW5wdXRfYnVmLCBKRElNRU5TSU9OICppbl9yb3dfZ3JvdXBfY3RyLA0KKwkJICAgIEpESU1FTlNJT04gaW5fcm93X2dyb3Vwc19hdmFpbCwNCisJCSAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gKm91dF9yb3dfY3RyLA0KKwkJICAgIEpESU1FTlNJT04gb3V0X3Jvd3NfYXZhaWwpDQorew0KKyAgbXlfcG9zdF9wdHIgcG9zdCA9IChteV9wb3N0X3B0cikgY2luZm8tPnBvc3Q7DQorICBKRElNRU5TSU9OIG51bV9yb3dzLCBtYXhfcm93czsNCisNCisgIC8qIEZpbGwgdGhlIGJ1ZmZlciwgYnV0IG5vdCBtb3JlIHRoYW4gd2hhdCB3ZSBjYW4gZHVtcCBvdXQgaW4gb25lIGdvLiAqLw0KKyAgLyogTm90ZSB3ZSByZWx5IG9uIHRoZSB1cHNhbXBsZXIgdG8gZGV0ZWN0IGJvdHRvbSBvZiBpbWFnZS4gKi8NCisgIG1heF9yb3dzID0gb3V0X3Jvd3NfYXZhaWwgLSAqb3V0X3Jvd19jdHI7DQorICBpZiAobWF4X3Jvd3MgPiBwb3N0LT5zdHJpcF9oZWlnaHQpDQorICAgIG1heF9yb3dzID0gcG9zdC0+c3RyaXBfaGVpZ2h0Ow0KKyAgbnVtX3Jvd3MgPSAwOw0KKyAgKCpjaW5mby0+dXBzYW1wbGUtPnVwc2FtcGxlKSAoY2luZm8sDQorCQlpbnB1dF9idWYsIGluX3Jvd19ncm91cF9jdHIsIGluX3Jvd19ncm91cHNfYXZhaWwsDQorCQlwb3N0LT5idWZmZXIsICZudW1fcm93cywgbWF4X3Jvd3MpOw0KKyAgLyogUXVhbnRpemUgYW5kIGVtaXQgZGF0YS4gKi8NCisgICgqY2luZm8tPmNxdWFudGl6ZS0+Y29sb3JfcXVhbnRpemUpIChjaW5mbywNCisJCXBvc3QtPmJ1ZmZlciwgb3V0cHV0X2J1ZiArICpvdXRfcm93X2N0ciwgKGludCkgbnVtX3Jvd3MpOw0KKyAgKm91dF9yb3dfY3RyICs9IG51bV9yb3dzOw0KK30NCisNCisNCisjaWZkZWYgUVVBTlRfMlBBU1NfU1VQUE9SVEVEDQorDQorLyoNCisgKiBQcm9jZXNzIHNvbWUgZGF0YSBpbiB0aGUgZmlyc3QgcGFzcyBvZiAyLXBhc3MgcXVhbnRpemF0aW9uLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3Bvc3RfcHJvY2Vzc19wcmVwYXNzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJICAgICAgSlNBTVBJTUFHRSBpbnB1dF9idWYsIEpESU1FTlNJT04gKmluX3Jvd19ncm91cF9jdHIsDQorCQkgICAgICBKRElNRU5TSU9OIGluX3Jvd19ncm91cHNfYXZhaWwsDQorCQkgICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gKm91dF9yb3dfY3RyLA0KKwkJICAgICAgSkRJTUVOU0lPTiBvdXRfcm93c19hdmFpbCkNCit7DQorICBteV9wb3N0X3B0ciBwb3N0ID0gKG15X3Bvc3RfcHRyKSBjaW5mby0+cG9zdDsNCisgIEpESU1FTlNJT04gb2xkX25leHRfcm93LCBudW1fcm93czsNCisNCisgIC8qIFJlcG9zaXRpb24gdmlydHVhbCBidWZmZXIgaWYgYXQgc3RhcnQgb2Ygc3RyaXAuICovDQorICBpZiAocG9zdC0+bmV4dF9yb3cgPT0gMCkgew0KKyAgICBwb3N0LT5idWZmZXIgPSAoKmNpbmZvLT5tZW0tPmFjY2Vzc192aXJ0X3NhcnJheSkNCisJKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBwb3N0LT53aG9sZV9pbWFnZSwNCisJIHBvc3QtPnN0YXJ0aW5nX3JvdywgcG9zdC0+c3RyaXBfaGVpZ2h0LCBUUlVFKTsNCisgIH0NCisNCisgIC8qIFVwc2FtcGxlIHNvbWUgZGF0YSAodXAgdG8gYSBzdHJpcCBoZWlnaHQncyB3b3J0aCkuICovDQorICBvbGRfbmV4dF9yb3cgPSBwb3N0LT5uZXh0X3JvdzsNCisgICgqY2luZm8tPnVwc2FtcGxlLT51cHNhbXBsZSkgKGNpbmZvLA0KKwkJaW5wdXRfYnVmLCBpbl9yb3dfZ3JvdXBfY3RyLCBpbl9yb3dfZ3JvdXBzX2F2YWlsLA0KKwkJcG9zdC0+YnVmZmVyLCAmcG9zdC0+bmV4dF9yb3csIHBvc3QtPnN0cmlwX2hlaWdodCk7DQorDQorICAvKiBBbGxvdyBxdWFudGl6ZXIgdG8gc2NhbiBuZXcgZGF0YS4gIE5vIGRhdGEgaXMgZW1pdHRlZCwgKi8NCisgIC8qIGJ1dCB3ZSBhZHZhbmNlIG91dF9yb3dfY3RyIHNvIG91dGVyIGxvb3AgY2FuIHRlbGwgd2hlbiB3ZSdyZSBkb25lLiAqLw0KKyAgaWYgKHBvc3QtPm5leHRfcm93ID4gb2xkX25leHRfcm93KSB7DQorICAgIG51bV9yb3dzID0gcG9zdC0+bmV4dF9yb3cgLSBvbGRfbmV4dF9yb3c7DQorICAgICgqY2luZm8tPmNxdWFudGl6ZS0+Y29sb3JfcXVhbnRpemUpIChjaW5mbywgcG9zdC0+YnVmZmVyICsgb2xkX25leHRfcm93LA0KKwkJCQkJIChKU0FNUEFSUkFZKSBOVUxMLCAoaW50KSBudW1fcm93cyk7DQorICAgICpvdXRfcm93X2N0ciArPSBudW1fcm93czsNCisgIH0NCisNCisgIC8qIEFkdmFuY2UgaWYgd2UgZmlsbGVkIHRoZSBzdHJpcC4gKi8NCisgIGlmIChwb3N0LT5uZXh0X3JvdyA+PSBwb3N0LT5zdHJpcF9oZWlnaHQpIHsNCisgICAgcG9zdC0+c3RhcnRpbmdfcm93ICs9IHBvc3QtPnN0cmlwX2hlaWdodDsNCisgICAgcG9zdC0+bmV4dF9yb3cgPSAwOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIFByb2Nlc3Mgc29tZSBkYXRhIGluIHRoZSBzZWNvbmQgcGFzcyBvZiAyLXBhc3MgcXVhbnRpemF0aW9uLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3Bvc3RfcHJvY2Vzc18ycGFzcyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCSAgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiAqaW5fcm93X2dyb3VwX2N0ciwNCisJCSAgICBKRElNRU5TSU9OIGluX3Jvd19ncm91cHNfYXZhaWwsDQorCQkgICAgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OICpvdXRfcm93X2N0ciwNCisJCSAgICBKRElNRU5TSU9OIG91dF9yb3dzX2F2YWlsKQ0KK3sNCisgIG15X3Bvc3RfcHRyIHBvc3QgPSAobXlfcG9zdF9wdHIpIGNpbmZvLT5wb3N0Ow0KKyAgSkRJTUVOU0lPTiBudW1fcm93cywgbWF4X3Jvd3M7DQorDQorICAvKiBSZXBvc2l0aW9uIHZpcnR1YWwgYnVmZmVyIGlmIGF0IHN0YXJ0IG9mIHN0cmlwLiAqLw0KKyAgaWYgKHBvc3QtPm5leHRfcm93ID09IDApIHsNCisgICAgcG9zdC0+YnVmZmVyID0gKCpjaW5mby0+bWVtLT5hY2Nlc3NfdmlydF9zYXJyYXkpDQorCSgoal9jb21tb25fcHRyKSBjaW5mbywgcG9zdC0+d2hvbGVfaW1hZ2UsDQorCSBwb3N0LT5zdGFydGluZ19yb3csIHBvc3QtPnN0cmlwX2hlaWdodCwgRkFMU0UpOw0KKyAgfQ0KKw0KKyAgLyogRGV0ZXJtaW5lIG51bWJlciBvZiByb3dzIHRvIGVtaXQuICovDQorICBudW1fcm93cyA9IHBvc3QtPnN0cmlwX2hlaWdodCAtIHBvc3QtPm5leHRfcm93OyAvKiBhdmFpbGFibGUgaW4gc3RyaXAgKi8NCisgIG1heF9yb3dzID0gb3V0X3Jvd3NfYXZhaWwgLSAqb3V0X3Jvd19jdHI7IC8qIGF2YWlsYWJsZSBpbiBvdXRwdXQgYXJlYSAqLw0KKyAgaWYgKG51bV9yb3dzID4gbWF4X3Jvd3MpDQorICAgIG51bV9yb3dzID0gbWF4X3Jvd3M7DQorICAvKiBXZSBoYXZlIHRvIGNoZWNrIGJvdHRvbSBvZiBpbWFnZSBoZXJlLCBjYW4ndCBkZXBlbmQgb24gdXBzYW1wbGVyLiAqLw0KKyAgbWF4X3Jvd3MgPSBjaW5mby0+b3V0cHV0X2hlaWdodCAtIHBvc3QtPnN0YXJ0aW5nX3JvdzsNCisgIGlmIChudW1fcm93cyA+IG1heF9yb3dzKQ0KKyAgICBudW1fcm93cyA9IG1heF9yb3dzOw0KKw0KKyAgLyogUXVhbnRpemUgYW5kIGVtaXQgZGF0YS4gKi8NCisgICgqY2luZm8tPmNxdWFudGl6ZS0+Y29sb3JfcXVhbnRpemUpIChjaW5mbywNCisJCXBvc3QtPmJ1ZmZlciArIHBvc3QtPm5leHRfcm93LCBvdXRwdXRfYnVmICsgKm91dF9yb3dfY3RyLA0KKwkJKGludCkgbnVtX3Jvd3MpOw0KKyAgKm91dF9yb3dfY3RyICs9IG51bV9yb3dzOw0KKw0KKyAgLyogQWR2YW5jZSBpZiB3ZSBmaWxsZWQgdGhlIHN0cmlwLiAqLw0KKyAgcG9zdC0+bmV4dF9yb3cgKz0gbnVtX3Jvd3M7DQorICBpZiAocG9zdC0+bmV4dF9yb3cgPj0gcG9zdC0+c3RyaXBfaGVpZ2h0KSB7DQorICAgIHBvc3QtPnN0YXJ0aW5nX3JvdyArPSBwb3N0LT5zdHJpcF9oZWlnaHQ7DQorICAgIHBvc3QtPm5leHRfcm93ID0gMDsNCisgIH0NCit9DQorDQorI2VuZGlmIC8qIFFVQU5UXzJQQVNTX1NVUFBPUlRFRCAqLw0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6ZSBwb3N0cHJvY2Vzc2luZyBjb250cm9sbGVyLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2ppbml0X2RfcG9zdF9jb250cm9sbGVyIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBib29sZWFuIG5lZWRfZnVsbF9idWZmZXIpDQorew0KKyAgbXlfcG9zdF9wdHIgcG9zdDsNCisNCisgIHBvc3QgPSAobXlfcG9zdF9wdHIpDQorICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCVNJWkVPRihteV9wb3N0X2NvbnRyb2xsZXIpKTsNCisgIGNpbmZvLT5wb3N0ID0gKHN0cnVjdCBqcGVnX2RfcG9zdF9jb250cm9sbGVyICopIHBvc3Q7DQorICBwb3N0LT5wdWIuc3RhcnRfcGFzcyA9IHN0YXJ0X3Bhc3NfZHBvc3Q7DQorICBwb3N0LT53aG9sZV9pbWFnZSA9IE5VTEw7CS8qIGZsYWcgZm9yIG5vIHZpcnR1YWwgYXJyYXlzICovDQorICBwb3N0LT5idWZmZXIgPSBOVUxMOwkJLyogZmxhZyBmb3Igbm8gc3RyaXAgYnVmZmVyICovDQorDQorICAvKiBDcmVhdGUgdGhlIHF1YW50aXphdGlvbiBidWZmZXIsIGlmIG5lZWRlZCAqLw0KKyAgaWYgKGNpbmZvLT5xdWFudGl6ZV9jb2xvcnMpIHsNCisgICAgLyogVGhlIGJ1ZmZlciBzdHJpcCBoZWlnaHQgaXMgbWF4X3Zfc2FtcF9mYWN0b3IsIHdoaWNoIGlzIHR5cGljYWxseQ0KKyAgICAgKiBhbiBlZmZpY2llbnQgbnVtYmVyIG9mIHJvd3MgZm9yIHVwc2FtcGxpbmcgdG8gcmV0dXJuLg0KKyAgICAgKiAoSW4gdGhlIHByZXNlbmNlIG9mIG91dHB1dCByZXNjYWxpbmcsIHdlIG1pZ2h0IHdhbnQgdG8gYmUgc21hcnRlcj8pDQorICAgICAqLw0KKyAgICBwb3N0LT5zdHJpcF9oZWlnaHQgPSAoSkRJTUVOU0lPTikgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yOw0KKyAgICBpZiAobmVlZF9mdWxsX2J1ZmZlcikgew0KKyAgICAgIC8qIFR3by1wYXNzIGNvbG9yIHF1YW50aXphdGlvbjogbmVlZCBmdWxsLWltYWdlIHN0b3JhZ2UuICovDQorICAgICAgLyogV2Ugcm91bmQgdXAgdGhlIG51bWJlciBvZiByb3dzIHRvIGEgbXVsdGlwbGUgb2YgdGhlIHN0cmlwIGhlaWdodC4gKi8NCisjaWZkZWYgUVVBTlRfMlBBU1NfU1VQUE9SVEVEDQorICAgICAgcG9zdC0+d2hvbGVfaW1hZ2UgPSAoKmNpbmZvLT5tZW0tPnJlcXVlc3RfdmlydF9zYXJyYXkpDQorCSgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsIEZBTFNFLA0KKwkgY2luZm8tPm91dHB1dF93aWR0aCAqIGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50cywNCisJIChKRElNRU5TSU9OKSBqcm91bmRfdXAoKGxvbmcpIGNpbmZvLT5vdXRwdXRfaGVpZ2h0LA0KKwkJCQkobG9uZykgcG9zdC0+c3RyaXBfaGVpZ2h0KSwNCisJIHBvc3QtPnN0cmlwX2hlaWdodCk7DQorI2Vsc2UNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9CVUZGRVJfTU9ERSk7DQorI2VuZGlmIC8qIFFVQU5UXzJQQVNTX1NVUFBPUlRFRCAqLw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIC8qIE9uZS1wYXNzIGNvbG9yIHF1YW50aXphdGlvbjoganVzdCBtYWtlIGEgc3RyaXAgYnVmZmVyLiAqLw0KKyAgICAgIHBvc3QtPmJ1ZmZlciA9ICgqY2luZm8tPm1lbS0+YWxsb2Nfc2FycmF5KQ0KKwkoKGpfY29tbW9uX3B0cikgY2luZm8sIEpQT09MX0lNQUdFLA0KKwkgY2luZm8tPm91dHB1dF93aWR0aCAqIGNpbmZvLT5vdXRfY29sb3JfY29tcG9uZW50cywNCisJIHBvc3QtPnN0cmlwX2hlaWdodCk7DQorICAgIH0NCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamRzYW1wbGUuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkc2FtcGxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJlYWU5NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pkc2FtcGxlLmMKQEAgLTAsMCArMSw0ODEgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqZHNhbXBsZS5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NiwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdXBzYW1wbGluZyByb3V0aW5lcy4NCisgKg0KKyAqIFVwc2FtcGxpbmcgaW5wdXQgZGF0YSBpcyBjb3VudGVkIGluICJyb3cgZ3JvdXBzIi4gIEEgcm93IGdyb3VwDQorICogaXMgZGVmaW5lZCB0byBiZSAodl9zYW1wX2ZhY3RvciAqIERDVF9zY2FsZWRfc2l6ZSAvIG1pbl9EQ1Rfc2NhbGVkX3NpemUpDQorICogc2FtcGxlIHJvd3Mgb2YgZWFjaCBjb21wb25lbnQuICBVcHNhbXBsaW5nIHdpbGwgbm9ybWFsbHkgcHJvZHVjZQ0KKyAqIG1heF92X3NhbXBfZmFjdG9yIHBpeGVsIHJvd3MgZnJvbSBlYWNoIHJvdyBncm91cCAoYnV0IHRoaXMgY291bGQgdmFyeQ0KKyAqIGlmIHRoZSB1cHNhbXBsZXIgaXMgYXBwbHlpbmcgYSBzY2FsZSBmYWN0b3Igb2YgaXRzIG93bikuDQorICoNCisgKiBBbiBleGNlbGxlbnQgcmVmZXJlbmNlIGZvciBpbWFnZSByZXNhbXBsaW5nIGlzDQorICogICBEaWdpdGFsIEltYWdlIFdhcnBpbmcsIEdlb3JnZSBXb2xiZXJnLCAxOTkwLg0KKyAqICAgUHViLiBieSBJRUVFIENvbXB1dGVyIFNvY2lldHkgUHJlc3MsIExvcyBBbGFtaXRvcywgQ0EuIElTQk4gMC04MTg2LTg5NDQtNy4NCisgKi8NCisNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxTDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisNCisNCisvKiBQb2ludGVyIHRvIHJvdXRpbmUgdG8gdXBzYW1wbGUgYSBzaW5nbGUgY29tcG9uZW50ICovDQordHlwZWRlZiBKTUVUSE9EKHZvaWQsIHVwc2FtcGxlMV9wdHIsDQorCQkoal9kZWNvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCQkgSlNBTVBBUlJBWSBpbnB1dF9kYXRhLCBKU0FNUEFSUkFZICogb3V0cHV0X2RhdGFfcHRyKSk7DQorDQorLyogUHJpdmF0ZSBzdWJvYmplY3QgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBzdHJ1Y3QganBlZ191cHNhbXBsZXIgcHViOwkvKiBwdWJsaWMgZmllbGRzICovDQorDQorICAvKiBDb2xvciBjb252ZXJzaW9uIGJ1ZmZlci4gIFdoZW4gdXNpbmcgc2VwYXJhdGUgdXBzYW1wbGluZyBhbmQgY29sb3INCisgICAqIGNvbnZlcnNpb24gc3RlcHMsIHRoaXMgYnVmZmVyIGhvbGRzIG9uZSB1cHNhbXBsZWQgcm93IGdyb3VwIHVudGlsIGl0DQorICAgKiBoYXMgYmVlbiBjb2xvciBjb252ZXJ0ZWQgYW5kIG91dHB1dC4NCisgICAqIE5vdGU6IHdlIGRvIG5vdCBhbGxvY2F0ZSBhbnkgc3RvcmFnZSBmb3IgY29tcG9uZW50KHMpIHdoaWNoIGFyZSBmdWxsLXNpemUsDQorICAgKiBpZSBkbyBub3QgbmVlZCByZXNjYWxpbmcuICBUaGUgY29ycmVzcG9uZGluZyBlbnRyeSBvZiBjb2xvcl9idWZbXSBpcw0KKyAgICogc2ltcGx5IHNldCB0byBwb2ludCB0byB0aGUgaW5wdXQgZGF0YSBhcnJheSwgdGhlcmVieSBhdm9pZGluZyBjb3B5aW5nLg0KKyAgICovDQorICBKU0FNUEFSUkFZIGNvbG9yX2J1ZltNQVhfQ09NUE9ORU5UU107DQorDQorICAvKiBQZXItY29tcG9uZW50IHVwc2FtcGxpbmcgbWV0aG9kIHBvaW50ZXJzICovDQorICB1cHNhbXBsZTFfcHRyIG1ldGhvZHNbTUFYX0NPTVBPTkVOVFNdOw0KKw0KKyAgaW50IG5leHRfcm93X291dDsJCS8qIGNvdW50cyByb3dzIGVtaXR0ZWQgZnJvbSBjb2xvcl9idWYgKi8NCisgIEpESU1FTlNJT04gcm93c190b19nbzsJLyogY291bnRzIHJvd3MgcmVtYWluaW5nIGluIGltYWdlICovDQorDQorICAvKiBIZWlnaHQgb2YgYW4gaW5wdXQgcm93IGdyb3VwIGZvciBlYWNoIGNvbXBvbmVudC4gKi8NCisgIGludCByb3dncm91cF9oZWlnaHRbTUFYX0NPTVBPTkVOVFNdOw0KKw0KKyAgLyogVGhlc2UgYXJyYXlzIHNhdmUgcGl4ZWwgZXhwYW5zaW9uIGZhY3RvcnMgc28gdGhhdCBpbnRfZXhwYW5kIG5lZWQgbm90DQorICAgKiByZWNvbXB1dGUgdGhlbSBlYWNoIHRpbWUuICBUaGV5IGFyZSB1bnVzZWQgZm9yIG90aGVyIHVwc2FtcGxpbmcgbWV0aG9kcy4NCisgICAqLw0KKyAgVUlOVDggaF9leHBhbmRbTUFYX0NPTVBPTkVOVFNdOw0KKyAgVUlOVDggdl9leHBhbmRbTUFYX0NPTVBPTkVOVFNdOw0KK30gbXlfdXBzYW1wbGVyOw0KKw0KK3R5cGVkZWYgbXlfdXBzYW1wbGVyICogbXlfdXBzYW1wbGVfcHRyOw0KKw0KKw0KKy8qDQorICogSW5pdGlhbGl6ZSBmb3IgYW4gdXBzYW1wbGluZyBwYXNzLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3N0YXJ0X3Bhc3NfdXBzYW1wbGUgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfdXBzYW1wbGVfcHRyIHVwc2FtcGxlID0gKG15X3Vwc2FtcGxlX3B0cikgY2luZm8tPnVwc2FtcGxlOw0KKw0KKyAgLyogTWFyayB0aGUgY29udmVyc2lvbiBidWZmZXIgZW1wdHkgKi8NCisgIHVwc2FtcGxlLT5uZXh0X3Jvd19vdXQgPSBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3I7DQorICAvKiBJbml0aWFsaXplIHRvdGFsLWhlaWdodCBjb3VudGVyIGZvciBkZXRlY3RpbmcgYm90dG9tIG9mIGltYWdlICovDQorICB1cHNhbXBsZS0+cm93c190b19nbyA9IGNpbmZvLT5vdXRwdXRfaGVpZ2h0Ow0KK30NCisNCisNCisvKg0KKyAqIENvbnRyb2wgcm91dGluZSB0byBkbyB1cHNhbXBsaW5nIChhbmQgY29sb3IgY29udmVyc2lvbikuDQorICoNCisgKiBJbiB0aGlzIHZlcnNpb24gd2UgdXBzYW1wbGUgZWFjaCBjb21wb25lbnQgaW5kZXBlbmRlbnRseS4NCisgKiBXZSB1cHNhbXBsZSBvbmUgcm93IGdyb3VwIGludG8gdGhlIGNvbnZlcnNpb24gYnVmZmVyLCB0aGVuIGFwcGx5DQorICogY29sb3IgY29udmVyc2lvbiBhIHJvdyBhdCBhIHRpbWUuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc2VwX3Vwc2FtcGxlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkgICAgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiAqaW5fcm93X2dyb3VwX2N0ciwNCisJICAgICAgSkRJTUVOU0lPTiBpbl9yb3dfZ3JvdXBzX2F2YWlsLA0KKwkgICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gKm91dF9yb3dfY3RyLA0KKwkgICAgICBKRElNRU5TSU9OIG91dF9yb3dzX2F2YWlsKQ0KK3sNCisgIG15X3Vwc2FtcGxlX3B0ciB1cHNhbXBsZSA9IChteV91cHNhbXBsZV9wdHIpIGNpbmZvLT51cHNhbXBsZTsNCisgIGludCBjaTsNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyOw0KKyAgSkRJTUVOU0lPTiBudW1fcm93czsNCisNCisgIC8qIEZpbGwgdGhlIGNvbnZlcnNpb24gYnVmZmVyLCBpZiBpdCdzIGVtcHR5ICovDQorICBpZiAodXBzYW1wbGUtPm5leHRfcm93X291dCA+PSBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IpIHsNCisgICAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisJIGNpKyssIGNvbXBwdHIrKykgew0KKyAgICAgIC8qIEludm9rZSBwZXItY29tcG9uZW50IHVwc2FtcGxlIG1ldGhvZC4gIE5vdGljZSB3ZSBwYXNzIGEgUE9JTlRFUg0KKyAgICAgICAqIHRvIGNvbG9yX2J1ZltjaV0sIHNvIHRoYXQgZnVsbHNpemVfdXBzYW1wbGUgY2FuIGNoYW5nZSBpdC4NCisgICAgICAgKi8NCisgICAgICAoKnVwc2FtcGxlLT5tZXRob2RzW2NpXSkgKGNpbmZvLCBjb21wcHRyLA0KKwlpbnB1dF9idWZbY2ldICsgKCppbl9yb3dfZ3JvdXBfY3RyICogdXBzYW1wbGUtPnJvd2dyb3VwX2hlaWdodFtjaV0pLA0KKwl1cHNhbXBsZS0+Y29sb3JfYnVmICsgY2kpOw0KKyAgICB9DQorICAgIHVwc2FtcGxlLT5uZXh0X3Jvd19vdXQgPSAwOw0KKyAgfQ0KKw0KKyAgLyogQ29sb3ItY29udmVydCBhbmQgZW1pdCByb3dzICovDQorDQorICAvKiBIb3cgbWFueSB3ZSBoYXZlIGluIHRoZSBidWZmZXI6ICovDQorICBudW1fcm93cyA9IChKRElNRU5TSU9OKSAoY2luZm8tPm1heF92X3NhbXBfZmFjdG9yIC0gdXBzYW1wbGUtPm5leHRfcm93X291dCk7DQorICAvKiBOb3QgbW9yZSB0aGFuIHRoZSBkaXN0YW5jZSB0byB0aGUgZW5kIG9mIHRoZSBpbWFnZS4gIE5lZWQgdGhpcyB0ZXN0DQorICAgKiBpbiBjYXNlIHRoZSBpbWFnZSBoZWlnaHQgaXMgbm90IGEgbXVsdGlwbGUgb2YgbWF4X3Zfc2FtcF9mYWN0b3I6DQorICAgKi8NCisgIGlmIChudW1fcm93cyA+IHVwc2FtcGxlLT5yb3dzX3RvX2dvKSANCisgICAgbnVtX3Jvd3MgPSB1cHNhbXBsZS0+cm93c190b19nbzsNCisgIC8qIEFuZCBub3QgbW9yZSB0aGFuIHdoYXQgdGhlIGNsaWVudCBjYW4gYWNjZXB0OiAqLw0KKyAgb3V0X3Jvd3NfYXZhaWwgLT0gKm91dF9yb3dfY3RyOw0KKyAgaWYgKG51bV9yb3dzID4gb3V0X3Jvd3NfYXZhaWwpDQorICAgIG51bV9yb3dzID0gb3V0X3Jvd3NfYXZhaWw7DQorDQorICAoKmNpbmZvLT5jY29udmVydC0+Y29sb3JfY29udmVydCkgKGNpbmZvLCB1cHNhbXBsZS0+Y29sb3JfYnVmLA0KKwkJCQkgICAgIChKRElNRU5TSU9OKSB1cHNhbXBsZS0+bmV4dF9yb3dfb3V0LA0KKwkJCQkgICAgIG91dHB1dF9idWYgKyAqb3V0X3Jvd19jdHIsDQorCQkJCSAgICAgKGludCkgbnVtX3Jvd3MpOw0KKw0KKyAgLyogQWRqdXN0IGNvdW50cyAqLw0KKyAgKm91dF9yb3dfY3RyICs9IG51bV9yb3dzOw0KKyAgdXBzYW1wbGUtPnJvd3NfdG9fZ28gLT0gbnVtX3Jvd3M7DQorICB1cHNhbXBsZS0+bmV4dF9yb3dfb3V0ICs9IG51bV9yb3dzOw0KKyAgLyogV2hlbiB0aGUgYnVmZmVyIGlzIGVtcHRpZWQsIGRlY2xhcmUgdGhpcyBpbnB1dCByb3cgZ3JvdXAgY29uc3VtZWQgKi8NCisgIGlmICh1cHNhbXBsZS0+bmV4dF9yb3dfb3V0ID49IGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvcikNCisgICAgKCppbl9yb3dfZ3JvdXBfY3RyKSsrOw0KK30NCisNCisNCisvKg0KKyAqIFRoZXNlIGFyZSB0aGUgcm91dGluZXMgaW52b2tlZCBieSBzZXBfdXBzYW1wbGUgdG8gdXBzYW1wbGUgcGl4ZWwgdmFsdWVzDQorICogb2YgYSBzaW5nbGUgY29tcG9uZW50LiAgT25lIHJvdyBncm91cCBpcyBwcm9jZXNzZWQgcGVyIGNhbGwuDQorICovDQorDQorDQorLyoNCisgKiBGb3IgZnVsbC1zaXplIGNvbXBvbmVudHMsIHdlIGp1c3QgbWFrZSBjb2xvcl9idWZbY2ldIHBvaW50IGF0IHRoZQ0KKyAqIGlucHV0IGJ1ZmZlciwgYW5kIHRodXMgYXZvaWQgY29weWluZyBhbnkgZGF0YS4gIE5vdGUgdGhhdCB0aGlzIGlzDQorICogc2FmZSBvbmx5IGJlY2F1c2Ugc2VwX3Vwc2FtcGxlIGRvZXNuJ3QgZGVjbGFyZSB0aGUgaW5wdXQgcm93IGdyb3VwDQorICogImNvbnN1bWVkIiB1bnRpbCB3ZSBhcmUgZG9uZSBjb2xvciBjb252ZXJ0aW5nIGFuZCBlbWl0dGluZyBpdC4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitmdWxsc2l6ZV91cHNhbXBsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCQkgICBKU0FNUEFSUkFZIGlucHV0X2RhdGEsIEpTQU1QQVJSQVkgKiBvdXRwdXRfZGF0YV9wdHIpDQorew0KKyAgKm91dHB1dF9kYXRhX3B0ciA9IGlucHV0X2RhdGE7DQorfQ0KKw0KKw0KKy8qDQorICogVGhpcyBpcyBhIG5vLW9wIHZlcnNpb24gdXNlZCBmb3IgInVuaW50ZXJlc3RpbmciIGNvbXBvbmVudHMuDQorICogVGhlc2UgY29tcG9uZW50cyB3aWxsIG5vdCBiZSByZWZlcmVuY2VkIGJ5IGNvbG9yIGNvbnZlcnNpb24uDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorbm9vcF91cHNhbXBsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCSAgICAgICBKU0FNUEFSUkFZIGlucHV0X2RhdGEsIEpTQU1QQVJSQVkgKiBvdXRwdXRfZGF0YV9wdHIpDQorew0KKyAgKm91dHB1dF9kYXRhX3B0ciA9IE5VTEw7CS8qIHNhZmV0eSBjaGVjayAqLw0KK30NCisNCisNCisvKg0KKyAqIFRoaXMgdmVyc2lvbiBoYW5kbGVzIGFueSBpbnRlZ3JhbCBzYW1wbGluZyByYXRpb3MuDQorICogVGhpcyBpcyBub3QgdXNlZCBmb3IgdHlwaWNhbCBKUEVHIGZpbGVzLCBzbyBpdCBuZWVkIG5vdCBiZSBmYXN0Lg0KKyAqIE5vciwgZm9yIHRoYXQgbWF0dGVyLCBpcyBpdCBwYXJ0aWN1bGFybHkgYWNjdXJhdGU6IHRoZSBhbGdvcml0aG0gaXMNCisgKiBzaW1wbGUgcmVwbGljYXRpb24gb2YgdGhlIGlucHV0IHBpeGVsIG9udG8gdGhlIGNvcnJlc3BvbmRpbmcgb3V0cHV0DQorICogcGl4ZWxzLiAgVGhlIGhpLWZhbHV0aW4gc2FtcGxpbmcgbGl0ZXJhdHVyZSByZWZlcnMgdG8gdGhpcyBhcyBhDQorICogImJveCBmaWx0ZXIiLiAgQSBib3ggZmlsdGVyIHRlbmRzIHRvIGludHJvZHVjZSB2aXNpYmxlIGFydGlmYWN0cywNCisgKiBzbyBpZiB5b3UgYXJlIGFjdHVhbGx5IGdvaW5nIHRvIHVzZSAzOjEgb3IgNDoxIHNhbXBsaW5nIHJhdGlvcw0KKyAqIHlvdSB3b3VsZCBiZSB3ZWxsIGFkdmlzZWQgdG8gaW1wcm92ZSB0aGlzIGNvZGUuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQoraW50X3Vwc2FtcGxlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0ciwNCisJICAgICAgSlNBTVBBUlJBWSBpbnB1dF9kYXRhLCBKU0FNUEFSUkFZICogb3V0cHV0X2RhdGFfcHRyKQ0KK3sNCisgIG15X3Vwc2FtcGxlX3B0ciB1cHNhbXBsZSA9IChteV91cHNhbXBsZV9wdHIpIGNpbmZvLT51cHNhbXBsZTsNCisgIEpTQU1QQVJSQVkgb3V0cHV0X2RhdGEgPSAqb3V0cHV0X2RhdGFfcHRyOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgaW5wdHIsIG91dHB0cjsNCisgIHJlZ2lzdGVyIEpTQU1QTEUgaW52YWx1ZTsNCisgIHJlZ2lzdGVyIGludCBoOw0KKyAgSlNBTVBST1cgb3V0ZW5kOw0KKyAgaW50IGhfZXhwYW5kLCB2X2V4cGFuZDsNCisgIGludCBpbnJvdywgb3V0cm93Ow0KKw0KKyAgaF9leHBhbmQgPSB1cHNhbXBsZS0+aF9leHBhbmRbY29tcHB0ci0+Y29tcG9uZW50X2luZGV4XTsNCisgIHZfZXhwYW5kID0gdXBzYW1wbGUtPnZfZXhwYW5kW2NvbXBwdHItPmNvbXBvbmVudF9pbmRleF07DQorDQorICBpbnJvdyA9IG91dHJvdyA9IDA7DQorICB3aGlsZSAob3V0cm93IDwgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yKSB7DQorICAgIC8qIEdlbmVyYXRlIG9uZSBvdXRwdXQgcm93IHdpdGggcHJvcGVyIGhvcml6b250YWwgZXhwYW5zaW9uICovDQorICAgIGlucHRyID0gaW5wdXRfZGF0YVtpbnJvd107DQorICAgIG91dHB0ciA9IG91dHB1dF9kYXRhW291dHJvd107DQorICAgIG91dGVuZCA9IG91dHB0ciArIGNpbmZvLT5vdXRwdXRfd2lkdGg7DQorICAgIHdoaWxlIChvdXRwdHIgPCBvdXRlbmQpIHsNCisgICAgICBpbnZhbHVlID0gKmlucHRyKys7CS8qIGRvbid0IG5lZWQgR0VUSlNBTVBMRSgpIGhlcmUgKi8NCisgICAgICBmb3IgKGggPSBoX2V4cGFuZDsgaCA+IDA7IGgtLSkgew0KKwkqb3V0cHRyKysgPSBpbnZhbHVlOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgICAvKiBHZW5lcmF0ZSBhbnkgYWRkaXRpb25hbCBvdXRwdXQgcm93cyBieSBkdXBsaWNhdGluZyB0aGUgZmlyc3Qgb25lICovDQorICAgIGlmICh2X2V4cGFuZCA+IDEpIHsNCisgICAgICBqY29weV9zYW1wbGVfcm93cyhvdXRwdXRfZGF0YSwgb3V0cm93LCBvdXRwdXRfZGF0YSwgb3V0cm93KzEsDQorCQkJdl9leHBhbmQtMSwgY2luZm8tPm91dHB1dF93aWR0aCk7DQorICAgIH0NCisgICAgaW5yb3crKzsNCisgICAgb3V0cm93ICs9IHZfZXhwYW5kOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIEZhc3QgcHJvY2Vzc2luZyBmb3IgdGhlIGNvbW1vbiBjYXNlIG9mIDI6MSBob3Jpem9udGFsIGFuZCAxOjEgdmVydGljYWwuDQorICogSXQncyBzdGlsbCBhIGJveCBmaWx0ZXIuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQoraDJ2MV91cHNhbXBsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCSAgICAgICBKU0FNUEFSUkFZIGlucHV0X2RhdGEsIEpTQU1QQVJSQVkgKiBvdXRwdXRfZGF0YV9wdHIpDQorew0KKyAgSlNBTVBBUlJBWSBvdXRwdXRfZGF0YSA9ICpvdXRwdXRfZGF0YV9wdHI7DQorICByZWdpc3RlciBKU0FNUFJPVyBpbnB0ciwgb3V0cHRyOw0KKyAgcmVnaXN0ZXIgSlNBTVBMRSBpbnZhbHVlOw0KKyAgSlNBTVBST1cgb3V0ZW5kOw0KKyAgaW50IGlucm93Ow0KKw0KKyAgZm9yIChpbnJvdyA9IDA7IGlucm93IDwgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yOyBpbnJvdysrKSB7DQorICAgIGlucHRyID0gaW5wdXRfZGF0YVtpbnJvd107DQorICAgIG91dHB0ciA9IG91dHB1dF9kYXRhW2lucm93XTsNCisgICAgb3V0ZW5kID0gb3V0cHRyICsgY2luZm8tPm91dHB1dF93aWR0aDsNCisgICAgd2hpbGUgKG91dHB0ciA8IG91dGVuZCkgew0KKyAgICAgIGludmFsdWUgPSAqaW5wdHIrKzsJLyogZG9uJ3QgbmVlZCBHRVRKU0FNUExFKCkgaGVyZSAqLw0KKyAgICAgICpvdXRwdHIrKyA9IGludmFsdWU7DQorICAgICAgKm91dHB0cisrID0gaW52YWx1ZTsNCisgICAgfQ0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIEZhc3QgcHJvY2Vzc2luZyBmb3IgdGhlIGNvbW1vbiBjYXNlIG9mIDI6MSBob3Jpem9udGFsIGFuZCAyOjEgdmVydGljYWwuDQorICogSXQncyBzdGlsbCBhIGJveCBmaWx0ZXIuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQoraDJ2Ml91cHNhbXBsZSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCSAgICAgICBKU0FNUEFSUkFZIGlucHV0X2RhdGEsIEpTQU1QQVJSQVkgKiBvdXRwdXRfZGF0YV9wdHIpDQorew0KKyAgSlNBTVBBUlJBWSBvdXRwdXRfZGF0YSA9ICpvdXRwdXRfZGF0YV9wdHI7DQorICByZWdpc3RlciBKU0FNUFJPVyBpbnB0ciwgb3V0cHRyOw0KKyAgcmVnaXN0ZXIgSlNBTVBMRSBpbnZhbHVlOw0KKyAgSlNBTVBST1cgb3V0ZW5kOw0KKyAgaW50IGlucm93LCBvdXRyb3c7DQorDQorICBpbnJvdyA9IG91dHJvdyA9IDA7DQorICB3aGlsZSAob3V0cm93IDwgY2luZm8tPm1heF92X3NhbXBfZmFjdG9yKSB7DQorICAgIGlucHRyID0gaW5wdXRfZGF0YVtpbnJvd107DQorICAgIG91dHB0ciA9IG91dHB1dF9kYXRhW291dHJvd107DQorICAgIG91dGVuZCA9IG91dHB0ciArIGNpbmZvLT5vdXRwdXRfd2lkdGg7DQorICAgIHdoaWxlIChvdXRwdHIgPCBvdXRlbmQpIHsNCisgICAgICBpbnZhbHVlID0gKmlucHRyKys7CS8qIGRvbid0IG5lZWQgR0VUSlNBTVBMRSgpIGhlcmUgKi8NCisgICAgICAqb3V0cHRyKysgPSBpbnZhbHVlOw0KKyAgICAgICpvdXRwdHIrKyA9IGludmFsdWU7DQorICAgIH0NCisgICAgamNvcHlfc2FtcGxlX3Jvd3Mob3V0cHV0X2RhdGEsIG91dHJvdywgb3V0cHV0X2RhdGEsIG91dHJvdysxLA0KKwkJICAgICAgMSwgY2luZm8tPm91dHB1dF93aWR0aCk7DQorICAgIGlucm93Kys7DQorICAgIG91dHJvdyArPSAyOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIEZhbmN5IHByb2Nlc3NpbmcgZm9yIHRoZSBjb21tb24gY2FzZSBvZiAyOjEgaG9yaXpvbnRhbCBhbmQgMToxIHZlcnRpY2FsLg0KKyAqDQorICogVGhlIHVwc2FtcGxpbmcgYWxnb3JpdGhtIGlzIGxpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gcGl4ZWwgY2VudGVycywNCisgKiBhbHNvIGtub3duIGFzIGEgInRyaWFuZ2xlIGZpbHRlciIuICBUaGlzIGlzIGEgZ29vZCBjb21wcm9taXNlIGJldHdlZW4NCisgKiBzcGVlZCBhbmQgdmlzdWFsIHF1YWxpdHkuICBUaGUgY2VudGVycyBvZiB0aGUgb3V0cHV0IHBpeGVscyBhcmUgMS80IGFuZCAzLzQNCisgKiBvZiB0aGUgd2F5IGJldHdlZW4gaW5wdXQgcGl4ZWwgY2VudGVycy4NCisgKg0KKyAqIEEgbm90ZSBhYm91dCB0aGUgImJpYXMiIGNhbGN1bGF0aW9uczogd2hlbiByb3VuZGluZyBmcmFjdGlvbmFsIHZhbHVlcyB0bw0KKyAqIGludGVnZXIsIHdlIGRvIG5vdCB3YW50IHRvIGFsd2F5cyByb3VuZCAwLjUgdXAgdG8gdGhlIG5leHQgaW50ZWdlci4NCisgKiBJZiB3ZSBkaWQgdGhhdCwgd2UnZCBpbnRyb2R1Y2UgYSBub3RpY2VhYmxlIGJpYXMgdG93YXJkcyBsYXJnZXIgdmFsdWVzLg0KKyAqIEluc3RlYWQsIHRoaXMgY29kZSBpcyBhcnJhbmdlZCBzbyB0aGF0IDAuNSB3aWxsIGJlIHJvdW5kZWQgdXAgb3IgZG93biBhdA0KKyAqIGFsdGVybmF0ZSBwaXhlbCBsb2NhdGlvbnMgKGEgc2ltcGxlIG9yZGVyZWQgZGl0aGVyIHBhdHRlcm4pLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2gydjFfZmFuY3lfdXBzYW1wbGUgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyLA0KKwkJICAgICBKU0FNUEFSUkFZIGlucHV0X2RhdGEsIEpTQU1QQVJSQVkgKiBvdXRwdXRfZGF0YV9wdHIpDQorew0KKyAgSlNBTVBBUlJBWSBvdXRwdXRfZGF0YSA9ICpvdXRwdXRfZGF0YV9wdHI7DQorICByZWdpc3RlciBKU0FNUFJPVyBpbnB0ciwgb3V0cHRyOw0KKyAgcmVnaXN0ZXIgaW50IGludmFsdWU7DQorICByZWdpc3RlciBKRElNRU5TSU9OIGNvbGN0cjsNCisgIGludCBpbnJvdzsNCisNCisgIGZvciAoaW5yb3cgPSAwOyBpbnJvdyA8IGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvcjsgaW5yb3crKykgew0KKyAgICBpbnB0ciA9IGlucHV0X2RhdGFbaW5yb3ddOw0KKyAgICBvdXRwdHIgPSBvdXRwdXRfZGF0YVtpbnJvd107DQorICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZmlyc3QgY29sdW1uICovDQorICAgIGludmFsdWUgPSBHRVRKU0FNUExFKCppbnB0cisrKTsNCisgICAgKm91dHB0cisrID0gKEpTQU1QTEUpIGludmFsdWU7DQorICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSAoKGludmFsdWUgKiAzICsgR0VUSlNBTVBMRSgqaW5wdHIpICsgMikgPj4gMik7DQorDQorICAgIGZvciAoY29sY3RyID0gY29tcHB0ci0+ZG93bnNhbXBsZWRfd2lkdGggLSAyOyBjb2xjdHIgPiAwOyBjb2xjdHItLSkgew0KKyAgICAgIC8qIEdlbmVyYWwgY2FzZTogMy80ICogbmVhcmVyIHBpeGVsICsgMS80ICogZnVydGhlciBwaXhlbCAqLw0KKyAgICAgIGludmFsdWUgPSBHRVRKU0FNUExFKCppbnB0cisrKSAqIDM7DQorICAgICAgKm91dHB0cisrID0gKEpTQU1QTEUpICgoaW52YWx1ZSArIEdFVEpTQU1QTEUoaW5wdHJbLTJdKSArIDEpID4+IDIpOw0KKyAgICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSAoKGludmFsdWUgKyBHRVRKU0FNUExFKCppbnB0cikgKyAyKSA+PiAyKTsNCisgICAgfQ0KKw0KKyAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGxhc3QgY29sdW1uICovDQorICAgIGludmFsdWUgPSBHRVRKU0FNUExFKCppbnB0cik7DQorICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSAoKGludmFsdWUgKiAzICsgR0VUSlNBTVBMRShpbnB0clstMV0pICsgMSkgPj4gMik7DQorICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSBpbnZhbHVlOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIEZhbmN5IHByb2Nlc3NpbmcgZm9yIHRoZSBjb21tb24gY2FzZSBvZiAyOjEgaG9yaXpvbnRhbCBhbmQgMjoxIHZlcnRpY2FsLg0KKyAqIEFnYWluIGEgdHJpYW5nbGUgZmlsdGVyOyBzZWUgY29tbWVudHMgZm9yIGgydjEgY2FzZSwgYWJvdmUuDQorICoNCisgKiBJdCBpcyBPSyBmb3IgdXMgdG8gcmVmZXJlbmNlIHRoZSBhZGphY2VudCBpbnB1dCByb3dzIGJlY2F1c2Ugd2UgZGVtYW5kZWQNCisgKiBjb250ZXh0IGZyb20gdGhlIG1haW4gYnVmZmVyIGNvbnRyb2xsZXIgKHNlZSBpbml0aWFsaXphdGlvbiBjb2RlKS4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitoMnYyX2ZhbmN5X3Vwc2FtcGxlIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0ciwNCisJCSAgICAgSlNBTVBBUlJBWSBpbnB1dF9kYXRhLCBKU0FNUEFSUkFZICogb3V0cHV0X2RhdGFfcHRyKQ0KK3sNCisgIEpTQU1QQVJSQVkgb3V0cHV0X2RhdGEgPSAqb3V0cHV0X2RhdGFfcHRyOw0KKyAgcmVnaXN0ZXIgSlNBTVBST1cgaW5wdHIwLCBpbnB0cjEsIG91dHB0cjsNCisjaWYgQklUU19JTl9KU0FNUExFID09IDgNCisgIHJlZ2lzdGVyIGludCB0aGlzY29sc3VtLCBsYXN0Y29sc3VtLCBuZXh0Y29sc3VtOw0KKyNlbHNlDQorICByZWdpc3RlciBJTlQzMiB0aGlzY29sc3VtLCBsYXN0Y29sc3VtLCBuZXh0Y29sc3VtOw0KKyNlbmRpZg0KKyAgcmVnaXN0ZXIgSkRJTUVOU0lPTiBjb2xjdHI7DQorICBpbnQgaW5yb3csIG91dHJvdywgdjsNCisNCisgIGlucm93ID0gb3V0cm93ID0gMDsNCisgIHdoaWxlIChvdXRyb3cgPCBjaW5mby0+bWF4X3Zfc2FtcF9mYWN0b3IpIHsNCisgICAgZm9yICh2ID0gMDsgdiA8IDI7IHYrKykgew0KKyAgICAgIC8qIGlucHRyMCBwb2ludHMgdG8gbmVhcmVzdCBpbnB1dCByb3csIGlucHRyMSBwb2ludHMgdG8gbmV4dCBuZWFyZXN0ICovDQorICAgICAgaW5wdHIwID0gaW5wdXRfZGF0YVtpbnJvd107DQorICAgICAgaWYgKHYgPT0gMCkJCS8qIG5leHQgbmVhcmVzdCBpcyByb3cgYWJvdmUgKi8NCisJaW5wdHIxID0gaW5wdXRfZGF0YVtpbnJvdy0xXTsNCisgICAgICBlbHNlCQkJLyogbmV4dCBuZWFyZXN0IGlzIHJvdyBiZWxvdyAqLw0KKwlpbnB0cjEgPSBpbnB1dF9kYXRhW2lucm93KzFdOw0KKyAgICAgIG91dHB0ciA9IG91dHB1dF9kYXRhW291dHJvdysrXTsNCisNCisgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGZpcnN0IGNvbHVtbiAqLw0KKyAgICAgIHRoaXNjb2xzdW0gPSBHRVRKU0FNUExFKCppbnB0cjArKykgKiAzICsgR0VUSlNBTVBMRSgqaW5wdHIxKyspOw0KKyAgICAgIG5leHRjb2xzdW0gPSBHRVRKU0FNUExFKCppbnB0cjArKykgKiAzICsgR0VUSlNBTVBMRSgqaW5wdHIxKyspOw0KKyAgICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSAoKHRoaXNjb2xzdW0gKiA0ICsgOCkgPj4gNCk7DQorICAgICAgKm91dHB0cisrID0gKEpTQU1QTEUpICgodGhpc2NvbHN1bSAqIDMgKyBuZXh0Y29sc3VtICsgNykgPj4gNCk7DQorICAgICAgbGFzdGNvbHN1bSA9IHRoaXNjb2xzdW07IHRoaXNjb2xzdW0gPSBuZXh0Y29sc3VtOw0KKw0KKyAgICAgIGZvciAoY29sY3RyID0gY29tcHB0ci0+ZG93bnNhbXBsZWRfd2lkdGggLSAyOyBjb2xjdHIgPiAwOyBjb2xjdHItLSkgew0KKwkvKiBHZW5lcmFsIGNhc2U6IDMvNCAqIG5lYXJlciBwaXhlbCArIDEvNCAqIGZ1cnRoZXIgcGl4ZWwgaW4gZWFjaCAqLw0KKwkvKiBkaW1lbnNpb24sIHRodXMgOS8xNiwgMy8xNiwgMy8xNiwgMS8xNiBvdmVyYWxsICovDQorCW5leHRjb2xzdW0gPSBHRVRKU0FNUExFKCppbnB0cjArKykgKiAzICsgR0VUSlNBTVBMRSgqaW5wdHIxKyspOw0KKwkqb3V0cHRyKysgPSAoSlNBTVBMRSkgKCh0aGlzY29sc3VtICogMyArIGxhc3Rjb2xzdW0gKyA4KSA+PiA0KTsNCisJKm91dHB0cisrID0gKEpTQU1QTEUpICgodGhpc2NvbHN1bSAqIDMgKyBuZXh0Y29sc3VtICsgNykgPj4gNCk7DQorCWxhc3Rjb2xzdW0gPSB0aGlzY29sc3VtOyB0aGlzY29sc3VtID0gbmV4dGNvbHN1bTsNCisgICAgICB9DQorDQorICAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBsYXN0IGNvbHVtbiAqLw0KKyAgICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSAoKHRoaXNjb2xzdW0gKiAzICsgbGFzdGNvbHN1bSArIDgpID4+IDQpOw0KKyAgICAgICpvdXRwdHIrKyA9IChKU0FNUExFKSAoKHRoaXNjb2xzdW0gKiA0ICsgNykgPj4gNCk7DQorICAgIH0NCisgICAgaW5yb3crKzsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBNb2R1bGUgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgdXBzYW1wbGluZy4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqaW5pdF91cHNhbXBsZXIgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pDQorew0KKyAgbXlfdXBzYW1wbGVfcHRyIHVwc2FtcGxlOw0KKyAgaW50IGNpOw0KKyAganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHI7DQorICBib29sZWFuIG5lZWRfYnVmZmVyLCBkb19mYW5jeTsNCisgIGludCBoX2luX2dyb3VwLCB2X2luX2dyb3VwLCBoX291dF9ncm91cCwgdl9vdXRfZ3JvdXA7DQorDQorICB1cHNhbXBsZSA9IChteV91cHNhbXBsZV9wdHIpDQorICAgICgqY2luZm8tPm1lbS0+YWxsb2Nfc21hbGwpICgoal9jb21tb25fcHRyKSBjaW5mbywgSlBPT0xfSU1BR0UsDQorCQkJCVNJWkVPRihteV91cHNhbXBsZXIpKTsNCisgIGNpbmZvLT51cHNhbXBsZSA9IChzdHJ1Y3QganBlZ191cHNhbXBsZXIgKikgdXBzYW1wbGU7DQorICB1cHNhbXBsZS0+cHViLnN0YXJ0X3Bhc3MgPSBzdGFydF9wYXNzX3Vwc2FtcGxlOw0KKyAgdXBzYW1wbGUtPnB1Yi51cHNhbXBsZSA9IHNlcF91cHNhbXBsZTsNCisgIHVwc2FtcGxlLT5wdWIubmVlZF9jb250ZXh0X3Jvd3MgPSBGQUxTRTsgLyogdW50aWwgd2UgZmluZCBvdXQgZGlmZmVyZW50bHkgKi8NCisNCisgIGlmIChjaW5mby0+Q0NJUjYwMV9zYW1wbGluZykJLyogdGhpcyBpc24ndCBzdXBwb3J0ZWQgKi8NCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9DQ0lSNjAxX05PVElNUEwpOw0KKw0KKyAgLyogamRtYWluY3QuYyBkb2Vzbid0IHN1cHBvcnQgY29udGV4dCByb3dzIHdoZW4gbWluX0RDVF9zY2FsZWRfc2l6ZSA9IDEsDQorICAgKiBzbyBkb24ndCBhc2sgZm9yIGl0Lg0KKyAgICovDQorICBkb19mYW5jeSA9IGNpbmZvLT5kb19mYW5jeV91cHNhbXBsaW5nICYmIGNpbmZvLT5taW5fRENUX3NjYWxlZF9zaXplID4gMTsNCisNCisgIC8qIFZlcmlmeSB3ZSBjYW4gaGFuZGxlIHRoZSBzYW1wbGluZyBmYWN0b3JzLCBzZWxlY3QgcGVyLWNvbXBvbmVudCBtZXRob2RzLA0KKyAgICogYW5kIGNyZWF0ZSBzdG9yYWdlIGFzIG5lZWRlZC4NCisgICAqLw0KKyAgZm9yIChjaSA9IDAsIGNvbXBwdHIgPSBjaW5mby0+Y29tcF9pbmZvOyBjaSA8IGNpbmZvLT5udW1fY29tcG9uZW50czsNCisgICAgICAgY2krKywgY29tcHB0cisrKSB7DQorICAgIC8qIENvbXB1dGUgc2l6ZSBvZiBhbiAiaW5wdXQgZ3JvdXAiIGFmdGVyIElEQ1Qgc2NhbGluZy4gIFRoaXMgbWFueSBzYW1wbGVzDQorICAgICAqIGFyZSB0byBiZSBjb252ZXJ0ZWQgdG8gbWF4X2hfc2FtcF9mYWN0b3IgKiBtYXhfdl9zYW1wX2ZhY3RvciBwaXhlbHMuDQorICAgICAqLw0KKyAgICBoX2luX2dyb3VwID0gKGNvbXBwdHItPmhfc2FtcF9mYWN0b3IgKiBjb21wcHRyLT5EQ1Rfc2NhbGVkX3NpemUpIC8NCisJCSBjaW5mby0+bWluX0RDVF9zY2FsZWRfc2l6ZTsNCisgICAgdl9pbl9ncm91cCA9IChjb21wcHRyLT52X3NhbXBfZmFjdG9yICogY29tcHB0ci0+RENUX3NjYWxlZF9zaXplKSAvDQorCQkgY2luZm8tPm1pbl9EQ1Rfc2NhbGVkX3NpemU7DQorICAgIGhfb3V0X2dyb3VwID0gY2luZm8tPm1heF9oX3NhbXBfZmFjdG9yOw0KKyAgICB2X291dF9ncm91cCA9IGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3RvcjsNCisgICAgdXBzYW1wbGUtPnJvd2dyb3VwX2hlaWdodFtjaV0gPSB2X2luX2dyb3VwOyAvKiBzYXZlIGZvciB1c2UgbGF0ZXIgKi8NCisgICAgbmVlZF9idWZmZXIgPSBUUlVFOw0KKyAgICBpZiAoISBjb21wcHRyLT5jb21wb25lbnRfbmVlZGVkKSB7DQorICAgICAgLyogRG9uJ3QgYm90aGVyIHRvIHVwc2FtcGxlIGFuIHVuaW50ZXJlc3RpbmcgY29tcG9uZW50LiAqLw0KKyAgICAgIHVwc2FtcGxlLT5tZXRob2RzW2NpXSA9IG5vb3BfdXBzYW1wbGU7DQorICAgICAgbmVlZF9idWZmZXIgPSBGQUxTRTsNCisgICAgfSBlbHNlIGlmIChoX2luX2dyb3VwID09IGhfb3V0X2dyb3VwICYmIHZfaW5fZ3JvdXAgPT0gdl9vdXRfZ3JvdXApIHsNCisgICAgICAvKiBGdWxsc2l6ZSBjb21wb25lbnRzIGNhbiBiZSBwcm9jZXNzZWQgd2l0aG91dCBhbnkgd29yay4gKi8NCisgICAgICB1cHNhbXBsZS0+bWV0aG9kc1tjaV0gPSBmdWxsc2l6ZV91cHNhbXBsZTsNCisgICAgICBuZWVkX2J1ZmZlciA9IEZBTFNFOw0KKyAgICB9IGVsc2UgaWYgKGhfaW5fZ3JvdXAgKiAyID09IGhfb3V0X2dyb3VwICYmDQorCSAgICAgICB2X2luX2dyb3VwID09IHZfb3V0X2dyb3VwKSB7DQorICAgICAgLyogU3BlY2lhbCBjYXNlcyBmb3IgMmgxdiB1cHNhbXBsaW5nICovDQorICAgICAgaWYgKGRvX2ZhbmN5ICYmIGNvbXBwdHItPmRvd25zYW1wbGVkX3dpZHRoID4gMikNCisJdXBzYW1wbGUtPm1ldGhvZHNbY2ldID0gaDJ2MV9mYW5jeV91cHNhbXBsZTsNCisgICAgICBlbHNlDQorCXVwc2FtcGxlLT5tZXRob2RzW2NpXSA9IGgydjFfdXBzYW1wbGU7DQorICAgIH0gZWxzZSBpZiAoaF9pbl9ncm91cCAqIDIgPT0gaF9vdXRfZ3JvdXAgJiYNCisJICAgICAgIHZfaW5fZ3JvdXAgKiAyID09IHZfb3V0X2dyb3VwKSB7DQorICAgICAgLyogU3BlY2lhbCBjYXNlcyBmb3IgMmgydiB1cHNhbXBsaW5nICovDQorICAgICAgaWYgKGRvX2ZhbmN5ICYmIGNvbXBwdHItPmRvd25zYW1wbGVkX3dpZHRoID4gMikgew0KKwl1cHNhbXBsZS0+bWV0aG9kc1tjaV0gPSBoMnYyX2ZhbmN5X3Vwc2FtcGxlOw0KKwl1cHNhbXBsZS0+cHViLm5lZWRfY29udGV4dF9yb3dzID0gVFJVRTsNCisgICAgICB9IGVsc2UNCisJdXBzYW1wbGUtPm1ldGhvZHNbY2ldID0gaDJ2Ml91cHNhbXBsZTsNCisgICAgfSBlbHNlIGlmICgoaF9vdXRfZ3JvdXAgJSBoX2luX2dyb3VwKSA9PSAwICYmDQorCSAgICAgICAodl9vdXRfZ3JvdXAgJSB2X2luX2dyb3VwKSA9PSAwKSB7DQorICAgICAgLyogR2VuZXJpYyBpbnRlZ3JhbC1mYWN0b3JzIHVwc2FtcGxpbmcgbWV0aG9kICovDQorICAgICAgdXBzYW1wbGUtPm1ldGhvZHNbY2ldID0gaW50X3Vwc2FtcGxlOw0KKyAgICAgIHVwc2FtcGxlLT5oX2V4cGFuZFtjaV0gPSAoVUlOVDgpIChoX291dF9ncm91cCAvIGhfaW5fZ3JvdXApOw0KKyAgICAgIHVwc2FtcGxlLT52X2V4cGFuZFtjaV0gPSAoVUlOVDgpICh2X291dF9ncm91cCAvIHZfaW5fZ3JvdXApOw0KKyAgICB9IGVsc2UNCisgICAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0ZSQUNUX1NBTVBMRV9OT1RJTVBMKTsNCisgICAgaWYgKG5lZWRfYnVmZmVyKSB7DQorICAgICAgdXBzYW1wbGUtPmNvbG9yX2J1ZltjaV0gPSAoKmNpbmZvLT5tZW0tPmFsbG9jX3NhcnJheSkNCisJKChqX2NvbW1vbl9wdHIpIGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJIChKRElNRU5TSU9OKSBqcm91bmRfdXAoKGxvbmcpIGNpbmZvLT5vdXRwdXRfd2lkdGgsDQorCQkJCShsb25nKSBjaW5mby0+bWF4X2hfc2FtcF9mYWN0b3IpLA0KKwkgKEpESU1FTlNJT04pIGNpbmZvLT5tYXhfdl9zYW1wX2ZhY3Rvcik7DQorICAgIH0NCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamR0cmFucy5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamR0cmFucy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNzZhNmMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZHRyYW5zLmMKQEAgLTAsMCArMSwxNDYgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqZHRyYW5zLmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk3LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyBsaWJyYXJ5IHJvdXRpbmVzIGZvciB0cmFuc2NvZGluZyBkZWNvbXByZXNzaW9uLA0KKyAqIHRoYXQgaXMsIHJlYWRpbmcgcmF3IERDVCBjb2VmZmljaWVudCBhcnJheXMgZnJvbSBhbiBpbnB1dCBKUEVHIGZpbGUuDQorICogVGhlIHJvdXRpbmVzIGluIGpkYXBpbWluLmMgd2lsbCBhbHNvIGJlIG5lZWRlZCBieSBhIHRyYW5zY29kZXIuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorDQorDQorLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8NCitMT0NBTCh2b2lkKSB0cmFuc2RlY29kZV9tYXN0ZXJfc2VsZWN0aW9uIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKw0KKw0KKy8qDQorICogUmVhZCB0aGUgY29lZmZpY2llbnQgYXJyYXlzIGZyb20gYSBKUEVHIGZpbGUuDQorICoganBlZ19yZWFkX2hlYWRlciBtdXN0IGJlIGNvbXBsZXRlZCBiZWZvcmUgY2FsbGluZyB0aGlzLg0KKyAqDQorICogVGhlIGVudGlyZSBpbWFnZSBpcyByZWFkIGludG8gYSBzZXQgb2YgdmlydHVhbCBjb2VmZmljaWVudC1ibG9jayBhcnJheXMsDQorICogb25lIHBlciBjb21wb25lbnQuICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgcG9pbnRlciB0byB0aGUgYXJyYXkgb2YNCisgKiB2aXJ0dWFsLWFycmF5IGRlc2NyaXB0b3JzLiAgVGhlc2UgY2FuIGJlIG1hbmlwdWxhdGVkIGRpcmVjdGx5IHZpYSB0aGUNCisgKiBKUEVHIG1lbW9yeSBtYW5hZ2VyLCBvciBoYW5kZWQgb2ZmIHRvIGpwZWdfd3JpdGVfY29lZmZpY2llbnRzKCkuDQorICogVG8gcmVsZWFzZSB0aGUgbWVtb3J5IG9jY3VwaWVkIGJ5IHRoZSB2aXJ0dWFsIGFycmF5cywgY2FsbA0KKyAqIGpwZWdfZmluaXNoX2RlY29tcHJlc3MoKSB3aGVuIGRvbmUgd2l0aCB0aGUgZGF0YS4NCisgKg0KKyAqIEFuIGFsdGVybmF0aXZlIHVzYWdlIGlzIHRvIHNpbXBseSBvYnRhaW4gYWNjZXNzIHRvIHRoZSBjb2VmZmljaWVudCBhcnJheXMNCisgKiBkdXJpbmcgYSBidWZmZXJlZC1pbWFnZS1tb2RlIGRlY29tcHJlc3Npb24gb3BlcmF0aW9uLiAgVGhpcyBpcyBhbGxvd2VkDQorICogYWZ0ZXIgYW55IGpwZWdfZmluaXNoX291dHB1dCgpIGNhbGwuICBUaGUgYXJyYXlzIGNhbiBiZSBhY2Nlc3NlZCB1bnRpbA0KKyAqIGpwZWdfZmluaXNoX2RlY29tcHJlc3MoKSBpcyBjYWxsZWQuICAoTm90ZSB0aGF0IGFueSBjYWxsIHRvIHRoZSBsaWJyYXJ5DQorICogbWF5IHJlcG9zaXRpb24gdGhlIGFycmF5cywgc28gZG9uJ3QgcmVseSBvbiBhY2Nlc3NfdmlydF9iYXJyYXkoKSByZXN1bHRzDQorICogdG8gc3RheSB2YWxpZCBhY3Jvc3MgbGlicmFyeSBjYWxscy4pDQorICoNCisgKiBSZXR1cm5zIE5VTEwgaWYgc3VzcGVuZGVkLiAgVGhpcyBjYXNlIG5lZWQgYmUgY2hlY2tlZCBvbmx5IGlmDQorICogYSBzdXNwZW5kaW5nIGRhdGEgc291cmNlIGlzIHVzZWQuDQorICovDQorDQorR0xPQkFMKGp2aXJ0X2JhcnJheV9wdHIgKikNCitqcGVnX3JlYWRfY29lZmZpY2llbnRzIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIGlmIChjaW5mby0+Z2xvYmFsX3N0YXRlID09IERTVEFURV9SRUFEWSkgew0KKyAgICAvKiBGaXJzdCBjYWxsOiBpbml0aWFsaXplIGFjdGl2ZSBtb2R1bGVzICovDQorICAgIHRyYW5zZGVjb2RlX21hc3Rlcl9zZWxlY3Rpb24oY2luZm8pOw0KKyAgICBjaW5mby0+Z2xvYmFsX3N0YXRlID0gRFNUQVRFX1JEQ09FRlM7DQorICB9DQorICBpZiAoY2luZm8tPmdsb2JhbF9zdGF0ZSA9PSBEU1RBVEVfUkRDT0VGUykgew0KKyAgICAvKiBBYnNvcmIgd2hvbGUgZmlsZSBpbnRvIHRoZSBjb2VmIGJ1ZmZlciAqLw0KKyAgICBmb3IgKDs7KSB7DQorICAgICAgaW50IHJldGNvZGU7DQorICAgICAgLyogQ2FsbCBwcm9ncmVzcyBtb25pdG9yIGhvb2sgaWYgcHJlc2VudCAqLw0KKyAgICAgIGlmIChjaW5mby0+cHJvZ3Jlc3MgIT0gTlVMTCkNCisJKCpjaW5mby0+cHJvZ3Jlc3MtPnByb2dyZXNzX21vbml0b3IpICgoal9jb21tb25fcHRyKSBjaW5mbyk7DQorICAgICAgLyogQWJzb3JiIHNvbWUgbW9yZSBpbnB1dCAqLw0KKyAgICAgIHJldGNvZGUgPSAoKmNpbmZvLT5pbnB1dGN0bC0+Y29uc3VtZV9pbnB1dCkgKGNpbmZvKTsNCisgICAgICBpZiAocmV0Y29kZSA9PSBKUEVHX1NVU1BFTkRFRCkNCisJcmV0dXJuIE5VTEw7DQorICAgICAgaWYgKHJldGNvZGUgPT0gSlBFR19SRUFDSEVEX0VPSSkNCisJYnJlYWs7DQorICAgICAgLyogQWR2YW5jZSBwcm9ncmVzcyBjb3VudGVyIGlmIGFwcHJvcHJpYXRlICovDQorICAgICAgaWYgKGNpbmZvLT5wcm9ncmVzcyAhPSBOVUxMICYmDQorCSAgKHJldGNvZGUgPT0gSlBFR19ST1dfQ09NUExFVEVEIHx8IHJldGNvZGUgPT0gSlBFR19SRUFDSEVEX1NPUykpIHsNCisJaWYgKCsrY2luZm8tPnByb2dyZXNzLT5wYXNzX2NvdW50ZXIgPj0gY2luZm8tPnByb2dyZXNzLT5wYXNzX2xpbWl0KSB7DQorCSAgLyogc3RhcnR1cCB1bmRlcmVzdGltYXRlZCBudW1iZXIgb2Ygc2NhbnM7IHJhdGNoZXQgdXAgb25lIHNjYW4gKi8NCisJICBjaW5mby0+cHJvZ3Jlc3MtPnBhc3NfbGltaXQgKz0gKGxvbmcpIGNpbmZvLT50b3RhbF9pTUNVX3Jvd3M7DQorCX0NCisgICAgICB9DQorICAgIH0NCisgICAgLyogU2V0IHN0YXRlIHNvIHRoYXQganBlZ19maW5pc2hfZGVjb21wcmVzcyBkb2VzIHRoZSByaWdodCB0aGluZyAqLw0KKyAgICBjaW5mby0+Z2xvYmFsX3N0YXRlID0gRFNUQVRFX1NUT1BQSU5HOw0KKyAgfQ0KKyAgLyogQXQgdGhpcyBwb2ludCB3ZSBzaG91bGQgYmUgaW4gc3RhdGUgRFNUQVRFX1NUT1BQSU5HIGlmIGJlaW5nIHVzZWQNCisgICAqIHN0YW5kYWxvbmUsIG9yIGluIHN0YXRlIERTVEFURV9CVUZJTUFHRSBpZiBiZWluZyBpbnZva2VkIHRvIGdldCBhY2Nlc3MNCisgICAqIHRvIHRoZSBjb2VmZmljaWVudHMgZHVyaW5nIGEgZnVsbCBidWZmZXJlZC1pbWFnZS1tb2RlIGRlY29tcHJlc3Npb24uDQorICAgKi8NCisgIGlmICgoY2luZm8tPmdsb2JhbF9zdGF0ZSA9PSBEU1RBVEVfU1RPUFBJTkcgfHwNCisgICAgICAgY2luZm8tPmdsb2JhbF9zdGF0ZSA9PSBEU1RBVEVfQlVGSU1BR0UpICYmIGNpbmZvLT5idWZmZXJlZF9pbWFnZSkgew0KKyAgICByZXR1cm4gY2luZm8tPmNvZWYtPmNvZWZfYXJyYXlzOw0KKyAgfQ0KKyAgLyogT29wcywgaW1wcm9wZXIgdXNhZ2UgKi8NCisgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9TVEFURSwgY2luZm8tPmdsb2JhbF9zdGF0ZSk7DQorICByZXR1cm4gTlVMTDsJCQkvKiBrZWVwIGNvbXBpbGVyIGhhcHB5ICovDQorfQ0KKw0KKw0KKy8qDQorICogTWFzdGVyIHNlbGVjdGlvbiBvZiBkZWNvbXByZXNzaW9uIG1vZHVsZXMgZm9yIHRyYW5zY29kaW5nLg0KKyAqIFRoaXMgc3Vic3RpdHV0ZXMgZm9yIGpkbWFzdGVyLmMncyBpbml0aWFsaXphdGlvbiBvZiB0aGUgZnVsbCBkZWNvbXByZXNzb3IuDQorICovDQorDQorTE9DQUwodm9pZCkNCit0cmFuc2RlY29kZV9tYXN0ZXJfc2VsZWN0aW9uIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKQ0KK3sNCisgIC8qIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBidWZmZXJlZC1pbWFnZSBvcGVyYXRpb24uICovDQorICBjaW5mby0+YnVmZmVyZWRfaW1hZ2UgPSBUUlVFOw0KKw0KKyAgLyogRW50cm9weSBkZWNvZGluZzogZWl0aGVyIEh1ZmZtYW4gb3IgYXJpdGhtZXRpYyBjb2RpbmcuICovDQorICBpZiAoY2luZm8tPmFyaXRoX2NvZGUpIHsNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9BUklUSF9OT1RJTVBMKTsNCisgIH0gZWxzZSB7DQorICAgIGlmIChjaW5mby0+cHJvZ3Jlc3NpdmVfbW9kZSkgew0KKyNpZmRlZiBEX1BST0dSRVNTSVZFX1NVUFBPUlRFRA0KKyAgICAgIGppbml0X3BodWZmX2RlY29kZXIoY2luZm8pOw0KKyNlbHNlDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9OT1RfQ09NUElMRUQpOw0KKyNlbmRpZg0KKyAgICB9IGVsc2UNCisgICAgICBqaW5pdF9odWZmX2RlY29kZXIoY2luZm8pOw0KKyAgfQ0KKw0KKyAgLyogQWx3YXlzIGdldCBhIGZ1bGwtaW1hZ2UgY29lZmZpY2llbnQgYnVmZmVyLiAqLw0KKyAgamluaXRfZF9jb2VmX2NvbnRyb2xsZXIoY2luZm8sIFRSVUUpOw0KKw0KKyAgLyogV2UgY2FuIG5vdyB0ZWxsIHRoZSBtZW1vcnkgbWFuYWdlciB0byBhbGxvY2F0ZSB2aXJ0dWFsIGFycmF5cy4gKi8NCisgICgqY2luZm8tPm1lbS0+cmVhbGl6ZV92aXJ0X2FycmF5cykgKChqX2NvbW1vbl9wdHIpIGNpbmZvKTsNCisNCisgIC8qIEluaXRpYWxpemUgaW5wdXQgc2lkZSBvZiBkZWNvbXByZXNzb3IgdG8gY29uc3VtZSBmaXJzdCBzY2FuLiAqLw0KKyAgKCpjaW5mby0+aW5wdXRjdGwtPnN0YXJ0X2lucHV0X3Bhc3MpIChjaW5mbyk7DQorDQorICAvKiBJbml0aWFsaXplIHByb2dyZXNzIG1vbml0b3JpbmcuICovDQorICBpZiAoY2luZm8tPnByb2dyZXNzICE9IE5VTEwpIHsNCisgICAgaW50IG5zY2FuczsNCisgICAgLyogRXN0aW1hdGUgbnVtYmVyIG9mIHNjYW5zIHRvIHNldCBwYXNzX2xpbWl0LiAqLw0KKyAgICBpZiAoY2luZm8tPnByb2dyZXNzaXZlX21vZGUpIHsNCisgICAgICAvKiBBcmJpdHJhcmlseSBlc3RpbWF0ZSAyIGludGVybGVhdmVkIERDIHNjYW5zICsgMyBBQyBzY2Fucy9jb21wb25lbnQuICovDQorICAgICAgbnNjYW5zID0gMiArIDMgKiBjaW5mby0+bnVtX2NvbXBvbmVudHM7DQorICAgIH0gZWxzZSBpZiAoY2luZm8tPmlucHV0Y3RsLT5oYXNfbXVsdGlwbGVfc2NhbnMpIHsNCisgICAgICAvKiBGb3IgYSBub25wcm9ncmVzc2l2ZSBtdWx0aXNjYW4gZmlsZSwgZXN0aW1hdGUgMSBzY2FuIHBlciBjb21wb25lbnQuICovDQorICAgICAgbnNjYW5zID0gY2luZm8tPm51bV9jb21wb25lbnRzOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIG5zY2FucyA9IDE7DQorICAgIH0NCisgICAgY2luZm8tPnByb2dyZXNzLT5wYXNzX2NvdW50ZXIgPSAwTDsNCisgICAgY2luZm8tPnByb2dyZXNzLT5wYXNzX2xpbWl0ID0gKGxvbmcpIGNpbmZvLT50b3RhbF9pTUNVX3Jvd3MgKiBuc2NhbnM7DQorICAgIGNpbmZvLT5wcm9ncmVzcy0+Y29tcGxldGVkX3Bhc3NlcyA9IDA7DQorICAgIGNpbmZvLT5wcm9ncmVzcy0+dG90YWxfcGFzc2VzID0gMTsNCisgIH0NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamVycm9yLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZXJyb3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDY3M2JhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamVycm9yLmMKQEAgLTAsMCArMSwyNTUgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqZXJyb3IuYw0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTgsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIHNpbXBsZSBlcnJvci1yZXBvcnRpbmcgYW5kIHRyYWNlLW1lc3NhZ2Ugcm91dGluZXMuDQorICogVGhlc2UgYXJlIHN1aXRhYmxlIGZvciBVbml4LWxpa2Ugc3lzdGVtcyBhbmQgb3RoZXJzIHdoZXJlIHdyaXRpbmcgdG8NCisgKiBzdGRlcnIgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLiAgTWFueSBhcHBsaWNhdGlvbnMgd2lsbCB3YW50IHRvIHJlcGxhY2UNCisgKiBzb21lIG9yIGFsbCBvZiB0aGVzZSByb3V0aW5lcy4NCisgKg0KKyAqIElmIHlvdSBkZWZpbmUgVVNFX1dJTkRPV1NfTUVTU0FHRUJPWCBpbiBqY29uZmlnLmggb3IgaW4gdGhlIG1ha2VmaWxlLA0KKyAqIHlvdSBnZXQgYSBXaW5kb3dzLXNwZWNpZmljIGhhY2sgdG8gZGlzcGxheSBlcnJvciBtZXNzYWdlcyBpbiBhIGRpYWxvZyBib3guDQorICogSXQgYWluJ3QgbXVjaCwgYnV0IGl0IGJlYXRzIGRyb3BwaW5nIGVycm9yIG1lc3NhZ2VzIGludG8gdGhlIGJpdCBidWNrZXQsDQorICogd2hpY2ggaXMgd2hhdCBoYXBwZW5zIHRvIG91dHB1dCB0byBzdGRlcnIgdW5kZXIgbW9zdCBXaW5kb3dzIEMgY29tcGlsZXJzLg0KKyAqDQorICogVGhlc2Ugcm91dGluZXMgYXJlIHVzZWQgYnkgYm90aCB0aGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gY29kZS4NCisgKi8NCisNCisvKiB0aGlzIGlzIG5vdCBhIGNvcmUgbGlicmFyeSBtb2R1bGUsIHNvIGl0IGRvZXNuJ3QgZGVmaW5lIEpQRUdfSU5URVJOQUxTICovDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisjaW5jbHVkZSAianZlcnNpb24uaCINCisjaW5jbHVkZSAiamVycm9yLmgiDQorDQorI2lmbmRlZiBFWElUX0ZBSUxVUkUJCS8qIGRlZmluZSBleGl0KCkgY29kZXMgaWYgbm90IHByb3ZpZGVkICovDQorI2RlZmluZSBFWElUX0ZBSUxVUkUgIDENCisjZW5kaWYNCisNCisNCisvKg0KKyAqIENyZWF0ZSB0aGUgbWVzc2FnZSBzdHJpbmcgdGFibGUuDQorICogV2UgZG8gdGhpcyBmcm9tIHRoZSBtYXN0ZXIgbWVzc2FnZSBsaXN0IGluIGplcnJvci5oIGJ5IHJlLXJlYWRpbmcNCisgKiBqZXJyb3IuaCB3aXRoIGEgc3VpdGFibGUgZGVmaW5pdGlvbiBmb3IgbWFjcm8gSk1FU1NBR0UuDQorICogVGhlIG1lc3NhZ2UgdGFibGUgaXMgbWFkZSBhbiBleHRlcm5hbCBzeW1ib2wganVzdCBpbiBjYXNlIGFueSBhcHBsaWNhdGlvbnMNCisgKiB3YW50IHRvIHJlZmVyIHRvIGl0IGRpcmVjdGx5Lg0KKyAqLw0KKw0KKyNpZmRlZiBORUVEX1NIT1JUX0VYVEVSTkFMX05BTUVTDQorI2RlZmluZSBqcGVnX3N0ZF9tZXNzYWdlX3RhYmxlCWpNc2dUYWJsZQ0KKyNlbmRpZg0KKw0KKyNkZWZpbmUgSk1FU1NBR0UoY29kZSxzdHJpbmcpCXN0cmluZyAsDQorDQorY29uc3QgY2hhciAqIGNvbnN0IGpwZWdfc3RkX21lc3NhZ2VfdGFibGVbXSA9IHsNCisjaW5jbHVkZSAiamVycm9yLmgiDQorICBOVUxMDQorfTsNCisNCisNCisvKg0KKyAqIEVycm9yIGV4aXQgaGFuZGxlcjogbXVzdCBub3QgcmV0dXJuIHRvIGNhbGxlci4NCisgKg0KKyAqIEFwcGxpY2F0aW9ucyBtYXkgb3ZlcnJpZGUgdGhpcyBpZiB0aGV5IHdhbnQgdG8gZ2V0IGNvbnRyb2wgYmFjayBhZnRlcg0KKyAqIGFuIGVycm9yLiAgVHlwaWNhbGx5IG9uZSB3b3VsZCBsb25nam1wIHNvbWV3aGVyZSBpbnN0ZWFkIG9mIGV4aXRpbmcuDQorICogVGhlIHNldGptcCBidWZmZXIgY2FuIGJlIG1hZGUgYSBwcml2YXRlIGZpZWxkIHdpdGhpbiBhbiBleHBhbmRlZCBlcnJvcg0KKyAqIGhhbmRsZXIgb2JqZWN0LiAgTm90ZSB0aGF0IHRoZSBpbmZvIG5lZWRlZCB0byBnZW5lcmF0ZSBhbiBlcnJvciBtZXNzYWdlDQorICogaXMgc3RvcmVkIGluIHRoZSBlcnJvciBvYmplY3QsIHNvIHlvdSBjYW4gZ2VuZXJhdGUgdGhlIG1lc3NhZ2Ugbm93IG9yDQorICogbGF0ZXIsIGF0IHlvdXIgY29udmVuaWVuY2UuDQorICogWW91IHNob3VsZCBtYWtlIHN1cmUgdGhhdCB0aGUgSlBFRyBvYmplY3QgaXMgY2xlYW5lZCB1cCAod2l0aCBqcGVnX2Fib3J0DQorICogb3IganBlZ19kZXN0cm95KSBhdCBzb21lIHBvaW50Lg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2Vycm9yX2V4aXQgKGpfY29tbW9uX3B0ciBjaW5mbykNCit7DQorICAvKiBBbHdheXMgZGlzcGxheSB0aGUgbWVzc2FnZSAqLw0KKyAgKCpjaW5mby0+ZXJyLT5vdXRwdXRfbWVzc2FnZSkgKGNpbmZvKTsNCisNCisgIC8qIExldCB0aGUgbWVtb3J5IG1hbmFnZXIgZGVsZXRlIGFueSB0ZW1wIGZpbGVzIGJlZm9yZSB3ZSBkaWUgKi8NCisgIGpwZWdfZGVzdHJveShjaW5mbyk7DQorDQorLy8gIGV4aXQoRVhJVF9GQUlMVVJFKTsNCit9DQorDQorDQorLyoNCisgKiBBY3R1YWwgb3V0cHV0IG9mIGFuIGVycm9yIG9yIHRyYWNlIG1lc3NhZ2UuDQorICogQXBwbGljYXRpb25zIG1heSBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBzZW5kIEpQRUcgbWVzc2FnZXMgc29tZXdoZXJlDQorICogb3RoZXIgdGhhbiBzdGRlcnIuDQorICoNCisgKiBPbiBXaW5kb3dzLCBwcmludGluZyB0byBzdGRlcnIgaXMgZ2VuZXJhbGx5IGNvbXBsZXRlbHkgdXNlbGVzcywNCisgKiBzbyB3ZSBwcm92aWRlIG9wdGlvbmFsIGNvZGUgdG8gcHJvZHVjZSBhbiBlcnJvci1kaWFsb2cgcG9wdXAuDQorICogTW9zdCBXaW5kb3dzIGFwcGxpY2F0aW9ucyB3aWxsIHN0aWxsIHByZWZlciB0byBvdmVycmlkZSB0aGlzIHJvdXRpbmUsDQorICogYnV0IGlmIHRoZXkgZG9uJ3QsIGl0J2xsIGRvIHNvbWV0aGluZyBhdCBsZWFzdCBtYXJnaW5hbGx5IHVzZWZ1bC4NCisgKg0KKyAqIE5PVEU6IHRvIHVzZSB0aGUgbGlicmFyeSBpbiBhbiBlbnZpcm9ubWVudCB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUNCisgKiBDIHN0ZGlvIGxpYnJhcnksIHlvdSBtYXkgaGF2ZSB0byBkZWxldGUgdGhlIGNhbGwgdG8gZnByaW50ZigpIGVudGlyZWx5LA0KKyAqIG5vdCBqdXN0IG5vdCB1c2UgdGhpcyByb3V0aW5lLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK291dHB1dF9tZXNzYWdlIChqX2NvbW1vbl9wdHIgY2luZm8pDQorew0KKyAgY2hhciBidWZmZXJbSk1TR19MRU5HVEhfTUFYXTsNCisNCisgIC8qIENyZWF0ZSB0aGUgbWVzc2FnZSAqLw0KKyAgKCpjaW5mby0+ZXJyLT5mb3JtYXRfbWVzc2FnZSkgKGNpbmZvLCBidWZmZXIpOw0KKw0KKyNpZmRlZiBVU0VfV0lORE9XU19NRVNTQUdFQk9YDQorICAvKiBEaXNwbGF5IGl0IGluIGEgbWVzc2FnZSBkaWFsb2cgYm94ICovDQorICBNZXNzYWdlQm94KEdldEFjdGl2ZVdpbmRvdygpLCBidWZmZXIsICJKUEVHIExpYnJhcnkgRXJyb3IiLA0KKwkgICAgIE1CX09LIHwgTUJfSUNPTkVSUk9SKTsNCisjZWxzZQ0KKyAgLyogU2VuZCBpdCB0byBzdGRlcnIsIGFkZGluZyBhIG5ld2xpbmUgKi8NCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorICBGWFNZU19mcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBidWZmZXIpOw0KKyNlbmRpZg0KKyNlbmRpZg0KK30NCisNCisNCisvKg0KKyAqIERlY2lkZSB3aGV0aGVyIHRvIGVtaXQgYSB0cmFjZSBvciB3YXJuaW5nIG1lc3NhZ2UuDQorICogbXNnX2xldmVsIGlzIG9uZSBvZjoNCisgKiAgIC0xOiByZWNvdmVyYWJsZSBjb3JydXB0LWRhdGEgd2FybmluZywgbWF5IHdhbnQgdG8gYWJvcnQuDQorICogICAgMDogaW1wb3J0YW50IGFkdmlzb3J5IG1lc3NhZ2VzIChhbHdheXMgZGlzcGxheSB0byB1c2VyKS4NCisgKiAgICAxOiBmaXJzdCBsZXZlbCBvZiB0cmFjaW5nIGRldGFpbC4NCisgKiAgICAyLDMsLi4uOiBzdWNjZXNzaXZlbHkgbW9yZSBkZXRhaWxlZCB0cmFjaW5nIG1lc3NhZ2VzLg0KKyAqIEFuIGFwcGxpY2F0aW9uIG1pZ2h0IG92ZXJyaWRlIHRoaXMgbWV0aG9kIGlmIGl0IHdhbnRlZCB0byBhYm9ydCBvbiB3YXJuaW5ncw0KKyAqIG9yIGNoYW5nZSB0aGUgcG9saWN5IGFib3V0IHdoaWNoIG1lc3NhZ2VzIHRvIGRpc3BsYXkuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorZW1pdF9tZXNzYWdlIChqX2NvbW1vbl9wdHIgY2luZm8sIGludCBtc2dfbGV2ZWwpDQorew0KKyAgc3RydWN0IGpwZWdfZXJyb3JfbWdyICogZXJyID0gY2luZm8tPmVycjsNCisNCisgIGlmIChtc2dfbGV2ZWwgPCAwKSB7DQorICAgIC8qIEl0J3MgYSB3YXJuaW5nIG1lc3NhZ2UuICBTaW5jZSBjb3JydXB0IGZpbGVzIG1heSBnZW5lcmF0ZSBtYW55IHdhcm5pbmdzLA0KKyAgICAgKiB0aGUgcG9saWN5IGltcGxlbWVudGVkIGhlcmUgaXMgdG8gc2hvdyBvbmx5IHRoZSBmaXJzdCB3YXJuaW5nLA0KKyAgICAgKiB1bmxlc3MgdHJhY2VfbGV2ZWwgPj0gMy4NCisgICAgICovDQorICAgIGlmIChlcnItPm51bV93YXJuaW5ncyA9PSAwIHx8IGVyci0+dHJhY2VfbGV2ZWwgPj0gMykNCisgICAgICAoKmVyci0+b3V0cHV0X21lc3NhZ2UpIChjaW5mbyk7DQorICAgIC8qIEFsd2F5cyBjb3VudCB3YXJuaW5ncyBpbiBudW1fd2FybmluZ3MuICovDQorICAgIGVyci0+bnVtX3dhcm5pbmdzKys7DQorICB9IGVsc2Ugew0KKyAgICAvKiBJdCdzIGEgdHJhY2UgbWVzc2FnZS4gIFNob3cgaXQgaWYgdHJhY2VfbGV2ZWwgPj0gbXNnX2xldmVsLiAqLw0KKyAgICBpZiAoZXJyLT50cmFjZV9sZXZlbCA+PSBtc2dfbGV2ZWwpDQorICAgICAgKCplcnItPm91dHB1dF9tZXNzYWdlKSAoY2luZm8pOw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIEZvcm1hdCBhIG1lc3NhZ2Ugc3RyaW5nIGZvciB0aGUgbW9zdCByZWNlbnQgSlBFRyBlcnJvciBvciBtZXNzYWdlLg0KKyAqIFRoZSBtZXNzYWdlIGlzIHN0b3JlZCBpbnRvIGJ1ZmZlciwgd2hpY2ggc2hvdWxkIGJlIGF0IGxlYXN0IEpNU0dfTEVOR1RIX01BWA0KKyAqIGNoYXJhY3RlcnMuICBOb3RlIHRoYXQgbm8gJ1xuJyBjaGFyYWN0ZXIgaXMgYWRkZWQgdG8gdGhlIHN0cmluZy4NCisgKiBGZXcgYXBwbGljYXRpb25zIHNob3VsZCBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLg0KKyAqLw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK2Zvcm1hdF9tZXNzYWdlIChqX2NvbW1vbl9wdHIgY2luZm8sIGNoYXIgKiBidWZmZXIpDQorew0KKyNpZiAwCS8qIFhZUSAqLw0KKyAgc3RydWN0IGpwZWdfZXJyb3JfbWdyICogZXJyID0gY2luZm8tPmVycjsNCisgIGludCBtc2dfY29kZSA9IGVyci0+bXNnX2NvZGU7DQorICBjb25zdCBjaGFyICogbXNndGV4dCA9IE5VTEw7DQorICBjb25zdCBjaGFyICogbXNncHRyOw0KKyAgY2hhciBjaDsNCisgIGJvb2xlYW4gaXNzdHJpbmc7DQorDQorICAvKiBMb29rIHVwIG1lc3NhZ2Ugc3RyaW5nIGluIHByb3BlciB0YWJsZSAqLw0KKyAgaWYgKG1zZ19jb2RlID4gMCAmJiBtc2dfY29kZSA8PSBlcnItPmxhc3RfanBlZ19tZXNzYWdlKSB7DQorICAgIG1zZ3RleHQgPSBlcnItPmpwZWdfbWVzc2FnZV90YWJsZVttc2dfY29kZV07DQorICB9IGVsc2UgaWYgKGVyci0+YWRkb25fbWVzc2FnZV90YWJsZSAhPSBOVUxMICYmDQorCSAgICAgbXNnX2NvZGUgPj0gZXJyLT5maXJzdF9hZGRvbl9tZXNzYWdlICYmDQorCSAgICAgbXNnX2NvZGUgPD0gZXJyLT5sYXN0X2FkZG9uX21lc3NhZ2UpIHsNCisgICAgbXNndGV4dCA9IGVyci0+YWRkb25fbWVzc2FnZV90YWJsZVttc2dfY29kZSAtIGVyci0+Zmlyc3RfYWRkb25fbWVzc2FnZV07DQorICB9DQorDQorICAvKiBEZWZlbmQgYWdhaW5zdCBib2d1cyBtZXNzYWdlIG51bWJlciAqLw0KKyAgaWYgKG1zZ3RleHQgPT0gTlVMTCkgew0KKyAgICBlcnItPm1zZ19wYXJtLmlbMF0gPSBtc2dfY29kZTsNCisgICAgbXNndGV4dCA9IGVyci0+anBlZ19tZXNzYWdlX3RhYmxlWzBdOw0KKyAgfQ0KKw0KKyAgLyogQ2hlY2sgZm9yIHN0cmluZyBwYXJhbWV0ZXIsIGFzIGluZGljYXRlZCBieSAlcyBpbiB0aGUgbWVzc2FnZSB0ZXh0ICovDQorICBpc3N0cmluZyA9IEZBTFNFOw0KKyAgbXNncHRyID0gbXNndGV4dDsNCisgIHdoaWxlICgoY2ggPSAqbXNncHRyKyspICE9ICdcMCcpIHsNCisgICAgaWYgKGNoID09ICclJykgew0KKyAgICAgIGlmICgqbXNncHRyID09ICdzJykgaXNzdHJpbmcgPSBUUlVFOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorICB9DQorDQorICAvKiBGb3JtYXQgdGhlIG1lc3NhZ2UgaW50byB0aGUgcGFzc2VkIGJ1ZmZlciAqLw0KKyAgaWYgKGlzc3RyaW5nKQ0KKyAgICBGWFNZU19zcHJpbnRmKGJ1ZmZlciwgbXNndGV4dCwgZXJyLT5tc2dfcGFybS5zKTsNCisgIGVsc2UNCisgICAgRlhTWVNfc3ByaW50ZihidWZmZXIsIG1zZ3RleHQsDQorCSAgICBlcnItPm1zZ19wYXJtLmlbMF0sIGVyci0+bXNnX3Bhcm0uaVsxXSwNCisJICAgIGVyci0+bXNnX3Bhcm0uaVsyXSwgZXJyLT5tc2dfcGFybS5pWzNdLA0KKwkgICAgZXJyLT5tc2dfcGFybS5pWzRdLCBlcnItPm1zZ19wYXJtLmlbNV0sDQorCSAgICBlcnItPm1zZ19wYXJtLmlbNl0sIGVyci0+bXNnX3Bhcm0uaVs3XSk7DQorI2VuZGlmDQorfQ0KKw0KKw0KKy8qDQorICogUmVzZXQgZXJyb3Igc3RhdGUgdmFyaWFibGVzIGF0IHN0YXJ0IG9mIGEgbmV3IGltYWdlLg0KKyAqIFRoaXMgaXMgY2FsbGVkIGR1cmluZyBjb21wcmVzc2lvbiBzdGFydHVwIHRvIHJlc2V0IHRyYWNlL2Vycm9yDQorICogcHJvY2Vzc2luZyB0byBkZWZhdWx0IHN0YXRlLCB3aXRob3V0IGxvc2luZyBhbnkgYXBwbGljYXRpb24tc3BlY2lmaWMNCisgKiBtZXRob2QgcG9pbnRlcnMuICBBbiBhcHBsaWNhdGlvbiBtaWdodCBwb3NzaWJseSB3YW50IHRvIG92ZXJyaWRlDQorICogdGhpcyBtZXRob2QgaWYgaXQgaGFzIGFkZGl0aW9uYWwgZXJyb3IgcHJvY2Vzc2luZyBzdGF0ZS4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCityZXNldF9lcnJvcl9tZ3IgKGpfY29tbW9uX3B0ciBjaW5mbykNCit7DQorICBjaW5mby0+ZXJyLT5udW1fd2FybmluZ3MgPSAwOw0KKyAgLyogdHJhY2VfbGV2ZWwgaXMgbm90IHJlc2V0IHNpbmNlIGl0IGlzIGFuIGFwcGxpY2F0aW9uLXN1cHBsaWVkIHBhcmFtZXRlciAqLw0KKyAgY2luZm8tPmVyci0+bXNnX2NvZGUgPSAwOwkvKiBtYXkgYmUgdXNlZnVsIGFzIGEgZmxhZyBmb3IgIm5vIGVycm9yIiAqLw0KK30NCisNCisNCisvKg0KKyAqIEZpbGwgaW4gdGhlIHN0YW5kYXJkIGVycm9yLWhhbmRsaW5nIG1ldGhvZHMgaW4gYSBqcGVnX2Vycm9yX21nciBvYmplY3QuDQorICogVHlwaWNhbCBjYWxsIGlzOg0KKyAqCXN0cnVjdCBqcGVnX2NvbXByZXNzX3N0cnVjdCBjaW5mbzsNCisgKglzdHJ1Y3QganBlZ19lcnJvcl9tZ3IgZXJyOw0KKyAqDQorICoJY2luZm8uZXJyID0ganBlZ19zdGRfZXJyb3IoJmVycik7DQorICogYWZ0ZXIgd2hpY2ggdGhlIGFwcGxpY2F0aW9uIG1heSBvdmVycmlkZSBzb21lIG9mIHRoZSBtZXRob2RzLg0KKyAqLw0KKw0KK0dMT0JBTChzdHJ1Y3QganBlZ19lcnJvcl9tZ3IgKikNCitqcGVnX3N0ZF9lcnJvciAoc3RydWN0IGpwZWdfZXJyb3JfbWdyICogZXJyKQ0KK3sNCisgIGVyci0+ZXJyb3JfZXhpdCA9IGVycm9yX2V4aXQ7DQorICBlcnItPmVtaXRfbWVzc2FnZSA9IGVtaXRfbWVzc2FnZTsNCisgIGVyci0+b3V0cHV0X21lc3NhZ2UgPSBvdXRwdXRfbWVzc2FnZTsNCisgIGVyci0+Zm9ybWF0X21lc3NhZ2UgPSBmb3JtYXRfbWVzc2FnZTsNCisgIGVyci0+cmVzZXRfZXJyb3JfbWdyID0gcmVzZXRfZXJyb3JfbWdyOw0KKw0KKyAgZXJyLT50cmFjZV9sZXZlbCA9IDA7CQkvKiBkZWZhdWx0ID0gbm8gdHJhY2luZyAqLw0KKyAgZXJyLT5udW1fd2FybmluZ3MgPSAwOwkvKiBubyB3YXJuaW5ncyBlbWl0dGVkIHlldCAqLw0KKyAgZXJyLT5tc2dfY29kZSA9IDA7CQkvKiBtYXkgYmUgdXNlZnVsIGFzIGEgZmxhZyBmb3IgIm5vIGVycm9yIiAqLw0KKw0KKyAgLyogSW5pdGlhbGl6ZSBtZXNzYWdlIHRhYmxlIHBvaW50ZXJzICovDQorICBlcnItPmpwZWdfbWVzc2FnZV90YWJsZSA9IGpwZWdfc3RkX21lc3NhZ2VfdGFibGU7DQorICBlcnItPmxhc3RfanBlZ19tZXNzYWdlID0gKGludCkgSk1TR19MQVNUTVNHQ09ERSAtIDE7DQorDQorICBlcnItPmFkZG9uX21lc3NhZ2VfdGFibGUgPSBOVUxMOw0KKyAgZXJyLT5maXJzdF9hZGRvbl9tZXNzYWdlID0gMDsJLyogZm9yIHNhZmV0eSAqLw0KKyAgZXJyLT5sYXN0X2FkZG9uX21lc3NhZ2UgPSAwOw0KKw0KKyAgcmV0dXJuIGVycjsNCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamZkY3Rmc3QuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pmZGN0ZnN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNkM2RkNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pmZGN0ZnN0LmMKQEAgLTAsMCArMSwyMjcgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqZmRjdGZzdC5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NiwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgYSBmYXN0LCBub3Qgc28gYWNjdXJhdGUgaW50ZWdlciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUNCisgKiBmb3J3YXJkIERDVCAoRGlzY3JldGUgQ29zaW5lIFRyYW5zZm9ybSkuDQorICoNCisgKiBBIDItRCBEQ1QgY2FuIGJlIGRvbmUgYnkgMS1EIERDVCBvbiBlYWNoIHJvdyBmb2xsb3dlZCBieSAxLUQgRENUDQorICogb24gZWFjaCBjb2x1bW4uICBEaXJlY3QgYWxnb3JpdGhtcyBhcmUgYWxzbyBhdmFpbGFibGUsIGJ1dCB0aGV5IGFyZQ0KKyAqIG11Y2ggbW9yZSBjb21wbGV4IGFuZCBzZWVtIG5vdCB0byBiZSBhbnkgZmFzdGVyIHdoZW4gcmVkdWNlZCB0byBjb2RlLg0KKyAqDQorICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBBcmFpLCBBZ3VpLCBhbmQgTmFrYWppbWEncyBhbGdvcml0aG0gZm9yDQorICogc2NhbGVkIERDVC4gIFRoZWlyIG9yaWdpbmFsIHBhcGVyIChUcmFucy4gSUVJQ0UgRS03MSgxMSk6MTA5NSkgaXMgaW4NCisgKiBKYXBhbmVzZSwgYnV0IHRoZSBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHRoZSBQZW5uZWJha2VyICYgTWl0Y2hlbGwNCisgKiBKUEVHIHRleHRib29rIChzZWUgUkVGRVJFTkNFUyBzZWN0aW9uIGluIGZpbGUgUkVBRE1FKS4gIFRoZSBmb2xsb3dpbmcgY29kZQ0KKyAqIGlzIGJhc2VkIGRpcmVjdGx5IG9uIGZpZ3VyZSA0LTggaW4gUCZNLg0KKyAqIFdoaWxlIGFuIDgtcG9pbnQgRENUIGNhbm5vdCBiZSBkb25lIGluIGxlc3MgdGhhbiAxMSBtdWx0aXBsaWVzLCBpdCBpcw0KKyAqIHBvc3NpYmxlIHRvIGFycmFuZ2UgdGhlIGNvbXB1dGF0aW9uIHNvIHRoYXQgbWFueSBvZiB0aGUgbXVsdGlwbGllcyBhcmUNCisgKiBzaW1wbGUgc2NhbGluZ3Mgb2YgdGhlIGZpbmFsIG91dHB1dHMuICBUaGVzZSBtdWx0aXBsaWVzIGNhbiB0aGVuIGJlDQorICogZm9sZGVkIGludG8gdGhlIG11bHRpcGxpY2F0aW9ucyBvciBkaXZpc2lvbnMgYnkgdGhlIEpQRUcgcXVhbnRpemF0aW9uDQorICogdGFibGUgZW50cmllcy4gIFRoZSBBQSZOIG1ldGhvZCBsZWF2ZXMgb25seSA1IG11bHRpcGxpZXMgYW5kIDI5IGFkZHMNCisgKiB0byBiZSBkb25lIGluIHRoZSBEQ1QgaXRzZWxmLg0KKyAqIFRoZSBwcmltYXJ5IGRpc2FkdmFudGFnZSBvZiB0aGlzIG1ldGhvZCBpcyB0aGF0IHdpdGggZml4ZWQtcG9pbnQgbWF0aCwNCisgKiBhY2N1cmFjeSBpcyBsb3N0IGR1ZSB0byBpbXByZWNpc2UgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNjYWxlZA0KKyAqIHF1YW50aXphdGlvbiB2YWx1ZXMuICBUaGUgc21hbGxlciB0aGUgcXVhbnRpemF0aW9uIHRhYmxlIGVudHJ5LCB0aGUgbGVzcw0KKyAqIHByZWNpc2UgdGhlIHNjYWxlZCB2YWx1ZSwgc28gdGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIHdvcnNlIHdpdGggaGlnaC0NCisgKiBxdWFsaXR5LXNldHRpbmcgZmlsZXMgdGhhbiB3aXRoIGxvdy1xdWFsaXR5IG9uZXMuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorI2luY2x1ZGUgImpkY3QuaCIJCS8qIFByaXZhdGUgZGVjbGFyYXRpb25zIGZvciBEQ1Qgc3Vic3lzdGVtICovDQorDQorI2lmZGVmIERDVF9JRkFTVF9TVVBQT1JURUQNCisNCisNCisvKg0KKyAqIFRoaXMgbW9kdWxlIGlzIHNwZWNpYWxpemVkIHRvIHRoZSBjYXNlIERDVFNJWkUgPSA4Lg0KKyAqLw0KKw0KKyNpZiBEQ1RTSVpFICE9IDgNCisgIFNvcnJ5LCB0aGlzIGNvZGUgb25seSBjb3BlcyB3aXRoIDh4OCBEQ1RzLiAvKiBkZWxpYmVyYXRlIHN5bnRheCBlcnIgKi8NCisjZW5kaWYNCisNCisNCisvKiBTY2FsaW5nIGRlY2lzaW9ucyBhcmUgZ2VuZXJhbGx5IHRoZSBzYW1lIGFzIGluIHRoZSBMTCZNIGFsZ29yaXRobTsNCisgKiBzZWUgamZkY3RpbnQuYyBmb3IgbW9yZSBkZXRhaWxzLiAgSG93ZXZlciwgd2UgY2hvb3NlIHRvIGRlc2NhbGUNCisgKiAocmlnaHQgc2hpZnQpIG11bHRpcGxpY2F0aW9uIHByb2R1Y3RzIGFzIHNvb24gYXMgdGhleSBhcmUgZm9ybWVkLA0KKyAqIHJhdGhlciB0aGFuIGNhcnJ5aW5nIGFkZGl0aW9uYWwgZnJhY3Rpb25hbCBiaXRzIGludG8gc3Vic2VxdWVudCBhZGRpdGlvbnMuDQorICogVGhpcyBjb21wcm9taXNlcyBhY2N1cmFjeSBzbGlnaHRseSwgYnV0IGl0IGxldHMgdXMgc2F2ZSBhIGZldyBzaGlmdHMuDQorICogTW9yZSBpbXBvcnRhbnRseSwgMTYtYml0IGFyaXRobWV0aWMgaXMgdGhlbiBhZGVxdWF0ZSAoZm9yIDgtYml0IHNhbXBsZXMpDQorICogZXZlcnl3aGVyZSBleGNlcHQgaW4gdGhlIG11bHRpcGxpY2F0aW9ucyBwcm9wZXI7IHRoaXMgc2F2ZXMgYSBnb29kIGRlYWwNCisgKiBvZiB3b3JrIG9uIDE2LWJpdC1pbnQgbWFjaGluZXMuDQorICoNCisgKiBBZ2FpbiB0byBzYXZlIGEgZmV3IHNoaWZ0cywgdGhlIGludGVybWVkaWF0ZSByZXN1bHRzIGJldHdlZW4gcGFzcyAxIGFuZA0KKyAqIHBhc3MgMiBhcmUgbm90IHVwc2NhbGVkLCBidXQgYXJlIHJlcHJlc2VudGVkIG9ubHkgdG8gaW50ZWdyYWwgcHJlY2lzaW9uLg0KKyAqDQorICogQSBmaW5hbCBjb21wcm9taXNlIGlzIHRvIHJlcHJlc2VudCB0aGUgbXVsdGlwbGljYXRpdmUgY29uc3RhbnRzIHRvIG9ubHkNCisgKiA4IGZyYWN0aW9uYWwgYml0cywgcmF0aGVyIHRoYW4gMTMuICBUaGlzIHNhdmVzIHNvbWUgc2hpZnRpbmcgd29yayBvbiBzb21lDQorICogbWFjaGluZXMsIGFuZCBtYXkgYWxzbyByZWR1Y2UgdGhlIGNvc3Qgb2YgbXVsdGlwbGljYXRpb24gKHNpbmNlIHRoZXJlDQorICogYXJlIGZld2VyIG9uZS1iaXRzIGluIHRoZSBjb25zdGFudHMpLg0KKyAqLw0KKw0KKyNkZWZpbmUgQ09OU1RfQklUUyAgOA0KKw0KKw0KKy8qIFNvbWUgQyBjb21waWxlcnMgZmFpbCB0byByZWR1Y2UgIkZJWChjb25zdGFudCkiIGF0IGNvbXBpbGUgdGltZSwgdGh1cw0KKyAqIGNhdXNpbmcgYSBsb3Qgb2YgdXNlbGVzcyBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGF0IHJ1biB0aW1lLg0KKyAqIFRvIGdldCBhcm91bmQgdGhpcyB3ZSB1c2UgdGhlIGZvbGxvd2luZyBwcmUtY2FsY3VsYXRlZCBjb25zdGFudHMuDQorICogSWYgeW91IGNoYW5nZSBDT05TVF9CSVRTIHlvdSBtYXkgd2FudCB0byBhZGQgYXBwcm9wcmlhdGUgdmFsdWVzLg0KKyAqIChXaXRoIGEgcmVhc29uYWJsZSBDIGNvbXBpbGVyLCB5b3UgY2FuIGp1c3QgcmVseSBvbiB0aGUgRklYKCkgbWFjcm8uLi4pDQorICovDQorDQorI2lmIENPTlNUX0JJVFMgPT0gOA0KKyNkZWZpbmUgRklYXzBfMzgyNjgzNDMzICAoKElOVDMyKSAgIDk4KQkJLyogRklYKDAuMzgyNjgzNDMzKSAqLw0KKyNkZWZpbmUgRklYXzBfNTQxMTk2MTAwICAoKElOVDMyKSAgMTM5KQkJLyogRklYKDAuNTQxMTk2MTAwKSAqLw0KKyNkZWZpbmUgRklYXzBfNzA3MTA2NzgxICAoKElOVDMyKSAgMTgxKQkJLyogRklYKDAuNzA3MTA2NzgxKSAqLw0KKyNkZWZpbmUgRklYXzFfMzA2NTYyOTY1ICAoKElOVDMyKSAgMzM0KQkJLyogRklYKDEuMzA2NTYyOTY1KSAqLw0KKyNlbHNlDQorI2RlZmluZSBGSVhfMF8zODI2ODM0MzMgIEZJWCgwLjM4MjY4MzQzMykNCisjZGVmaW5lIEZJWF8wXzU0MTE5NjEwMCAgRklYKDAuNTQxMTk2MTAwKQ0KKyNkZWZpbmUgRklYXzBfNzA3MTA2NzgxICBGSVgoMC43MDcxMDY3ODEpDQorI2RlZmluZSBGSVhfMV8zMDY1NjI5NjUgIEZJWCgxLjMwNjU2Mjk2NSkNCisjZW5kaWYNCisNCisNCisvKiBXZSBjYW4gZ2FpbiBhIGxpdHRsZSBtb3JlIHNwZWVkLCB3aXRoIGEgZnVydGhlciBjb21wcm9taXNlIGluIGFjY3VyYWN5LA0KKyAqIGJ5IG9taXR0aW5nIHRoZSBhZGRpdGlvbiBpbiBhIGRlc2NhbGluZyBzaGlmdC4gIFRoaXMgeWllbGRzIGFuIGluY29ycmVjdGx5DQorICogcm91bmRlZCByZXN1bHQgaGFsZiB0aGUgdGltZS4uLg0KKyAqLw0KKw0KKyNpZm5kZWYgVVNFX0FDQ1VSQVRFX1JPVU5ESU5HDQorI3VuZGVmIERFU0NBTEUNCisjZGVmaW5lIERFU0NBTEUoeCxuKSAgUklHSFRfU0hJRlQoeCwgbikNCisjZW5kaWYNCisNCisNCisvKiBNdWx0aXBseSBhIERDVEVMRU0gdmFyaWFibGUgYnkgYW4gSU5UMzIgY29uc3RhbnQsIGFuZCBpbW1lZGlhdGVseQ0KKyAqIGRlc2NhbGUgdG8geWllbGQgYSBEQ1RFTEVNIHJlc3VsdC4NCisgKi8NCisNCisjZGVmaW5lIE1VTFRJUExZKHZhcixjb25zdCkgICgoRENURUxFTSkgREVTQ0FMRSgodmFyKSAqIChjb25zdCksIENPTlNUX0JJVFMpKQ0KKw0KKw0KKy8qDQorICogUGVyZm9ybSB0aGUgZm9yd2FyZCBEQ1Qgb24gb25lIGJsb2NrIG9mIHNhbXBsZXMuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19mZGN0X2lmYXN0IChEQ1RFTEVNICogZGF0YSkNCit7DQorICBEQ1RFTEVNIHRtcDAsIHRtcDEsIHRtcDIsIHRtcDMsIHRtcDQsIHRtcDUsIHRtcDYsIHRtcDc7DQorICBEQ1RFTEVNIHRtcDEwLCB0bXAxMSwgdG1wMTIsIHRtcDEzOw0KKyAgRENURUxFTSB6MSwgejIsIHozLCB6NCwgejUsIHoxMSwgejEzOw0KKyAgRENURUxFTSAqZGF0YXB0cjsNCisgIGludCBjdHI7DQorICBTSElGVF9URU1QUw0KKw0KKyAgLyogUGFzcyAxOiBwcm9jZXNzIHJvd3MuICovDQorDQorICBkYXRhcHRyID0gZGF0YTsNCisgIGZvciAoY3RyID0gRENUU0laRS0xOyBjdHIgPj0gMDsgY3RyLS0pIHsNCisgICAgdG1wMCA9IGRhdGFwdHJbMF0gKyBkYXRhcHRyWzddOw0KKyAgICB0bXA3ID0gZGF0YXB0clswXSAtIGRhdGFwdHJbN107DQorICAgIHRtcDEgPSBkYXRhcHRyWzFdICsgZGF0YXB0cls2XTsNCisgICAgdG1wNiA9IGRhdGFwdHJbMV0gLSBkYXRhcHRyWzZdOw0KKyAgICB0bXAyID0gZGF0YXB0clsyXSArIGRhdGFwdHJbNV07DQorICAgIHRtcDUgPSBkYXRhcHRyWzJdIC0gZGF0YXB0cls1XTsNCisgICAgdG1wMyA9IGRhdGFwdHJbM10gKyBkYXRhcHRyWzRdOw0KKyAgICB0bXA0ID0gZGF0YXB0clszXSAtIGRhdGFwdHJbNF07DQorICAgIA0KKyAgICAvKiBFdmVuIHBhcnQgKi8NCisgICAgDQorICAgIHRtcDEwID0gdG1wMCArIHRtcDM7CS8qIHBoYXNlIDIgKi8NCisgICAgdG1wMTMgPSB0bXAwIC0gdG1wMzsNCisgICAgdG1wMTEgPSB0bXAxICsgdG1wMjsNCisgICAgdG1wMTIgPSB0bXAxIC0gdG1wMjsNCisgICAgDQorICAgIGRhdGFwdHJbMF0gPSB0bXAxMCArIHRtcDExOyAvKiBwaGFzZSAzICovDQorICAgIGRhdGFwdHJbNF0gPSB0bXAxMCAtIHRtcDExOw0KKyAgICANCisgICAgejEgPSBNVUxUSVBMWSh0bXAxMiArIHRtcDEzLCBGSVhfMF83MDcxMDY3ODEpOyAvKiBjNCAqLw0KKyAgICBkYXRhcHRyWzJdID0gdG1wMTMgKyB6MTsJLyogcGhhc2UgNSAqLw0KKyAgICBkYXRhcHRyWzZdID0gdG1wMTMgLSB6MTsNCisgICAgDQorICAgIC8qIE9kZCBwYXJ0ICovDQorDQorICAgIHRtcDEwID0gdG1wNCArIHRtcDU7CS8qIHBoYXNlIDIgKi8NCisgICAgdG1wMTEgPSB0bXA1ICsgdG1wNjsNCisgICAgdG1wMTIgPSB0bXA2ICsgdG1wNzsNCisNCisgICAgLyogVGhlIHJvdGF0b3IgaXMgbW9kaWZpZWQgZnJvbSBmaWcgNC04IHRvIGF2b2lkIGV4dHJhIG5lZ2F0aW9ucy4gKi8NCisgICAgejUgPSBNVUxUSVBMWSh0bXAxMCAtIHRtcDEyLCBGSVhfMF8zODI2ODM0MzMpOyAvKiBjNiAqLw0KKyAgICB6MiA9IE1VTFRJUExZKHRtcDEwLCBGSVhfMF81NDExOTYxMDApICsgejU7IC8qIGMyLWM2ICovDQorICAgIHo0ID0gTVVMVElQTFkodG1wMTIsIEZJWF8xXzMwNjU2Mjk2NSkgKyB6NTsgLyogYzIrYzYgKi8NCisgICAgejMgPSBNVUxUSVBMWSh0bXAxMSwgRklYXzBfNzA3MTA2NzgxKTsgLyogYzQgKi8NCisNCisgICAgejExID0gdG1wNyArIHozOwkJLyogcGhhc2UgNSAqLw0KKyAgICB6MTMgPSB0bXA3IC0gejM7DQorDQorICAgIGRhdGFwdHJbNV0gPSB6MTMgKyB6MjsJLyogcGhhc2UgNiAqLw0KKyAgICBkYXRhcHRyWzNdID0gejEzIC0gejI7DQorICAgIGRhdGFwdHJbMV0gPSB6MTEgKyB6NDsNCisgICAgZGF0YXB0cls3XSA9IHoxMSAtIHo0Ow0KKw0KKyAgICBkYXRhcHRyICs9IERDVFNJWkU7CQkvKiBhZHZhbmNlIHBvaW50ZXIgdG8gbmV4dCByb3cgKi8NCisgIH0NCisNCisgIC8qIFBhc3MgMjogcHJvY2VzcyBjb2x1bW5zLiAqLw0KKw0KKyAgZGF0YXB0ciA9IGRhdGE7DQorICBmb3IgKGN0ciA9IERDVFNJWkUtMTsgY3RyID49IDA7IGN0ci0tKSB7DQorICAgIHRtcDAgPSBkYXRhcHRyW0RDVFNJWkUqMF0gKyBkYXRhcHRyW0RDVFNJWkUqN107DQorICAgIHRtcDcgPSBkYXRhcHRyW0RDVFNJWkUqMF0gLSBkYXRhcHRyW0RDVFNJWkUqN107DQorICAgIHRtcDEgPSBkYXRhcHRyW0RDVFNJWkUqMV0gKyBkYXRhcHRyW0RDVFNJWkUqNl07DQorICAgIHRtcDYgPSBkYXRhcHRyW0RDVFNJWkUqMV0gLSBkYXRhcHRyW0RDVFNJWkUqNl07DQorICAgIHRtcDIgPSBkYXRhcHRyW0RDVFNJWkUqMl0gKyBkYXRhcHRyW0RDVFNJWkUqNV07DQorICAgIHRtcDUgPSBkYXRhcHRyW0RDVFNJWkUqMl0gLSBkYXRhcHRyW0RDVFNJWkUqNV07DQorICAgIHRtcDMgPSBkYXRhcHRyW0RDVFNJWkUqM10gKyBkYXRhcHRyW0RDVFNJWkUqNF07DQorICAgIHRtcDQgPSBkYXRhcHRyW0RDVFNJWkUqM10gLSBkYXRhcHRyW0RDVFNJWkUqNF07DQorICAgIA0KKyAgICAvKiBFdmVuIHBhcnQgKi8NCisgICAgDQorICAgIHRtcDEwID0gdG1wMCArIHRtcDM7CS8qIHBoYXNlIDIgKi8NCisgICAgdG1wMTMgPSB0bXAwIC0gdG1wMzsNCisgICAgdG1wMTEgPSB0bXAxICsgdG1wMjsNCisgICAgdG1wMTIgPSB0bXAxIC0gdG1wMjsNCisgICAgDQorICAgIGRhdGFwdHJbRENUU0laRSowXSA9IHRtcDEwICsgdG1wMTE7IC8qIHBoYXNlIDMgKi8NCisgICAgZGF0YXB0cltEQ1RTSVpFKjRdID0gdG1wMTAgLSB0bXAxMTsNCisgICAgDQorICAgIHoxID0gTVVMVElQTFkodG1wMTIgKyB0bXAxMywgRklYXzBfNzA3MTA2NzgxKTsgLyogYzQgKi8NCisgICAgZGF0YXB0cltEQ1RTSVpFKjJdID0gdG1wMTMgKyB6MTsgLyogcGhhc2UgNSAqLw0KKyAgICBkYXRhcHRyW0RDVFNJWkUqNl0gPSB0bXAxMyAtIHoxOw0KKyAgICANCisgICAgLyogT2RkIHBhcnQgKi8NCisNCisgICAgdG1wMTAgPSB0bXA0ICsgdG1wNTsJLyogcGhhc2UgMiAqLw0KKyAgICB0bXAxMSA9IHRtcDUgKyB0bXA2Ow0KKyAgICB0bXAxMiA9IHRtcDYgKyB0bXA3Ow0KKw0KKyAgICAvKiBUaGUgcm90YXRvciBpcyBtb2RpZmllZCBmcm9tIGZpZyA0LTggdG8gYXZvaWQgZXh0cmEgbmVnYXRpb25zLiAqLw0KKyAgICB6NSA9IE1VTFRJUExZKHRtcDEwIC0gdG1wMTIsIEZJWF8wXzM4MjY4MzQzMyk7IC8qIGM2ICovDQorICAgIHoyID0gTVVMVElQTFkodG1wMTAsIEZJWF8wXzU0MTE5NjEwMCkgKyB6NTsgLyogYzItYzYgKi8NCisgICAgejQgPSBNVUxUSVBMWSh0bXAxMiwgRklYXzFfMzA2NTYyOTY1KSArIHo1OyAvKiBjMitjNiAqLw0KKyAgICB6MyA9IE1VTFRJUExZKHRtcDExLCBGSVhfMF83MDcxMDY3ODEpOyAvKiBjNCAqLw0KKw0KKyAgICB6MTEgPSB0bXA3ICsgejM7CQkvKiBwaGFzZSA1ICovDQorICAgIHoxMyA9IHRtcDcgLSB6MzsNCisNCisgICAgZGF0YXB0cltEQ1RTSVpFKjVdID0gejEzICsgejI7IC8qIHBoYXNlIDYgKi8NCisgICAgZGF0YXB0cltEQ1RTSVpFKjNdID0gejEzIC0gejI7DQorICAgIGRhdGFwdHJbRENUU0laRSoxXSA9IHoxMSArIHo0Ow0KKyAgICBkYXRhcHRyW0RDVFNJWkUqN10gPSB6MTEgLSB6NDsNCisNCisgICAgZGF0YXB0cisrOwkJCS8qIGFkdmFuY2UgcG9pbnRlciB0byBuZXh0IGNvbHVtbiAqLw0KKyAgfQ0KK30NCisNCisjZW5kaWYgLyogRENUX0lGQVNUX1NVUFBPUlRFRCAqLw0KKw0KKyNlbmRpZiAvL19GWF9KUEVHX1RVUkJPXw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2pmZGN0aW50LmMgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZmRjdGludC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODEwYTcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qZmRjdGludC5jCkBAIC0wLDAgKzEsMjg2IEBACisjaWYgIWRlZmluZWQoX0ZYX0pQRUdfVFVSQk9fKQ0KKy8qDQorICogamZkY3RpbnQuYw0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTYsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIGEgc2xvdy1idXQtYWNjdXJhdGUgaW50ZWdlciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUNCisgKiBmb3J3YXJkIERDVCAoRGlzY3JldGUgQ29zaW5lIFRyYW5zZm9ybSkuDQorICoNCisgKiBBIDItRCBEQ1QgY2FuIGJlIGRvbmUgYnkgMS1EIERDVCBvbiBlYWNoIHJvdyBmb2xsb3dlZCBieSAxLUQgRENUDQorICogb24gZWFjaCBjb2x1bW4uICBEaXJlY3QgYWxnb3JpdGhtcyBhcmUgYWxzbyBhdmFpbGFibGUsIGJ1dCB0aGV5IGFyZQ0KKyAqIG11Y2ggbW9yZSBjb21wbGV4IGFuZCBzZWVtIG5vdCB0byBiZSBhbnkgZmFzdGVyIHdoZW4gcmVkdWNlZCB0byBjb2RlLg0KKyAqDQorICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBhbiBhbGdvcml0aG0gZGVzY3JpYmVkIGluDQorICogICBDLiBMb2VmZmxlciwgQS4gTGlndGVuYmVyZyBhbmQgRy4gTW9zY2h5dHosICJQcmFjdGljYWwgRmFzdCAxLUQgRENUDQorICogICBBbGdvcml0aG1zIHdpdGggMTEgTXVsdGlwbGljYXRpb25zIiwgUHJvYy4gSW50J2wuIENvbmYuIG9uIEFjb3VzdGljcywNCisgKiAgIFNwZWVjaCwgYW5kIFNpZ25hbCBQcm9jZXNzaW5nIDE5ODkgKElDQVNTUCAnODkpLCBwcC4gOTg4LTk5MS4NCisgKiBUaGUgcHJpbWFyeSBhbGdvcml0aG0gZGVzY3JpYmVkIHRoZXJlIHVzZXMgMTEgbXVsdGlwbGllcyBhbmQgMjkgYWRkcy4NCisgKiBXZSB1c2UgdGhlaXIgYWx0ZXJuYXRlIG1ldGhvZCB3aXRoIDEyIG11bHRpcGxpZXMgYW5kIDMyIGFkZHMuDQorICogVGhlIGFkdmFudGFnZSBvZiB0aGlzIG1ldGhvZCBpcyB0aGF0IG5vIGRhdGEgcGF0aCBjb250YWlucyBtb3JlIHRoYW4gb25lDQorICogbXVsdGlwbGljYXRpb247IHRoaXMgYWxsb3dzIGEgdmVyeSBzaW1wbGUgYW5kIGFjY3VyYXRlIGltcGxlbWVudGF0aW9uIGluDQorICogc2NhbGVkIGZpeGVkLXBvaW50IGFyaXRobWV0aWMsIHdpdGggYSBtaW5pbWFsIG51bWJlciBvZiBzaGlmdHMuDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorI2luY2x1ZGUgImpkY3QuaCIJCS8qIFByaXZhdGUgZGVjbGFyYXRpb25zIGZvciBEQ1Qgc3Vic3lzdGVtICovDQorDQorI2lmZGVmIERDVF9JU0xPV19TVVBQT1JURUQNCisNCisNCisvKg0KKyAqIFRoaXMgbW9kdWxlIGlzIHNwZWNpYWxpemVkIHRvIHRoZSBjYXNlIERDVFNJWkUgPSA4Lg0KKyAqLw0KKw0KKyNpZiBEQ1RTSVpFICE9IDgNCisgIFNvcnJ5LCB0aGlzIGNvZGUgb25seSBjb3BlcyB3aXRoIDh4OCBEQ1RzLiAvKiBkZWxpYmVyYXRlIHN5bnRheCBlcnIgKi8NCisjZW5kaWYNCisNCisNCisvKg0KKyAqIFRoZSBwb29wIG9uIHRoaXMgc2NhbGluZyBzdHVmZiBpcyBhcyBmb2xsb3dzOg0KKyAqDQorICogRWFjaCAxLUQgRENUIHN0ZXAgcHJvZHVjZXMgb3V0cHV0cyB3aGljaCBhcmUgYSBmYWN0b3Igb2Ygc3FydChOKQ0KKyAqIGxhcmdlciB0aGFuIHRoZSB0cnVlIERDVCBvdXRwdXRzLiAgVGhlIGZpbmFsIG91dHB1dHMgYXJlIHRoZXJlZm9yZQ0KKyAqIGEgZmFjdG9yIG9mIE4gbGFyZ2VyIHRoYW4gZGVzaXJlZDsgc2luY2UgTj04IHRoaXMgY2FuIGJlIGN1cmVkIGJ5DQorICogYSBzaW1wbGUgcmlnaHQgc2hpZnQgYXQgdGhlIGVuZCBvZiB0aGUgYWxnb3JpdGhtLiAgVGhlIGFkdmFudGFnZSBvZg0KKyAqIHRoaXMgYXJyYW5nZW1lbnQgaXMgdGhhdCB3ZSBzYXZlIHR3byBtdWx0aXBsaWNhdGlvbnMgcGVyIDEtRCBEQ1QsDQorICogYmVjYXVzZSB0aGUgeTAgYW5kIHk0IG91dHB1dHMgbmVlZCBub3QgYmUgZGl2aWRlZCBieSBzcXJ0KE4pLg0KKyAqIEluIHRoZSBJSkcgY29kZSwgdGhpcyBmYWN0b3Igb2YgOCBpcyByZW1vdmVkIGJ5IHRoZSBxdWFudGl6YXRpb24gc3RlcA0KKyAqIChpbiBqY2RjdG1nci5jKSwgTk9UIGluIHRoaXMgbW9kdWxlLg0KKyAqDQorICogV2UgaGF2ZSB0byBkbyBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gb2YgdGhlIGludGVnZXIgaW5wdXRzLCB3aGljaA0KKyAqIGlzIG5vIHByb2JsZW0sIGFuZCBtdWx0aXBsaWNhdGlvbiBieSBmcmFjdGlvbmFsIGNvbnN0YW50cywgd2hpY2ggaXMNCisgKiBhIHByb2JsZW0gdG8gZG8gaW4gaW50ZWdlciBhcml0aG1ldGljLiAgV2UgbXVsdGlwbHkgYWxsIHRoZSBjb25zdGFudHMNCisgKiBieSBDT05TVF9TQ0FMRSBhbmQgY29udmVydCB0aGVtIHRvIGludGVnZXIgY29uc3RhbnRzICh0aHVzIHJldGFpbmluZw0KKyAqIENPTlNUX0JJVFMgYml0cyBvZiBwcmVjaXNpb24gaW4gdGhlIGNvbnN0YW50cykuICBBZnRlciBkb2luZyBhDQorICogbXVsdGlwbGljYXRpb24gd2UgaGF2ZSB0byBkaXZpZGUgdGhlIHByb2R1Y3QgYnkgQ09OU1RfU0NBTEUsIHdpdGggcHJvcGVyDQorICogcm91bmRpbmcsIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3Qgb3V0cHV0LiAgVGhpcyBkaXZpc2lvbiBjYW4gYmUgZG9uZQ0KKyAqIGNoZWFwbHkgYXMgYSByaWdodCBzaGlmdCBvZiBDT05TVF9CSVRTIGJpdHMuICBXZSBwb3N0cG9uZSBzaGlmdGluZw0KKyAqIGFzIGxvbmcgYXMgcG9zc2libGUgc28gdGhhdCBwYXJ0aWFsIHN1bXMgY2FuIGJlIGFkZGVkIHRvZ2V0aGVyIHdpdGgNCisgKiBmdWxsIGZyYWN0aW9uYWwgcHJlY2lzaW9uLg0KKyAqDQorICogVGhlIG91dHB1dHMgb2YgdGhlIGZpcnN0IHBhc3MgYXJlIHNjYWxlZCB1cCBieSBQQVNTMV9CSVRTIGJpdHMgc28gdGhhdA0KKyAqIHRoZXkgYXJlIHJlcHJlc2VudGVkIHRvIGJldHRlci10aGFuLWludGVncmFsIHByZWNpc2lvbi4gIFRoZXNlIG91dHB1dHMNCisgKiByZXF1aXJlIEJJVFNfSU5fSlNBTVBMRSArIFBBU1MxX0JJVFMgKyAzIGJpdHM7IHRoaXMgZml0cyBpbiBhIDE2LWJpdCB3b3JkDQorICogd2l0aCB0aGUgcmVjb21tZW5kZWQgc2NhbGluZy4gIChGb3IgMTItYml0IHNhbXBsZSBkYXRhLCB0aGUgaW50ZXJtZWRpYXRlDQorICogYXJyYXkgaXMgSU5UMzIgYW55d2F5LikNCisgKg0KKyAqIFRvIGF2b2lkIG92ZXJmbG93IG9mIHRoZSAzMi1iaXQgaW50ZXJtZWRpYXRlIHJlc3VsdHMgaW4gcGFzcyAyLCB3ZSBtdXN0DQorICogaGF2ZSBCSVRTX0lOX0pTQU1QTEUgKyBDT05TVF9CSVRTICsgUEFTUzFfQklUUyA8PSAyNi4gIEVycm9yIGFuYWx5c2lzDQorICogc2hvd3MgdGhhdCB0aGUgdmFsdWVzIGdpdmVuIGJlbG93IGFyZSB0aGUgbW9zdCBlZmZlY3RpdmUuDQorICovDQorDQorI2lmIEJJVFNfSU5fSlNBTVBMRSA9PSA4DQorI2RlZmluZSBDT05TVF9CSVRTICAxMw0KKyNkZWZpbmUgUEFTUzFfQklUUyAgMg0KKyNlbHNlDQorI2RlZmluZSBDT05TVF9CSVRTICAxMw0KKyNkZWZpbmUgUEFTUzFfQklUUyAgMQkJLyogbG9zZSBhIGxpdHRsZSBwcmVjaXNpb24gdG8gYXZvaWQgb3ZlcmZsb3cgKi8NCisjZW5kaWYNCisNCisvKiBTb21lIEMgY29tcGlsZXJzIGZhaWwgdG8gcmVkdWNlICJGSVgoY29uc3RhbnQpIiBhdCBjb21waWxlIHRpbWUsIHRodXMNCisgKiBjYXVzaW5nIGEgbG90IG9mIHVzZWxlc3MgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyBhdCBydW4gdGltZS4NCisgKiBUbyBnZXQgYXJvdW5kIHRoaXMgd2UgdXNlIHRoZSBmb2xsb3dpbmcgcHJlLWNhbGN1bGF0ZWQgY29uc3RhbnRzLg0KKyAqIElmIHlvdSBjaGFuZ2UgQ09OU1RfQklUUyB5b3UgbWF5IHdhbnQgdG8gYWRkIGFwcHJvcHJpYXRlIHZhbHVlcy4NCisgKiAoV2l0aCBhIHJlYXNvbmFibGUgQyBjb21waWxlciwgeW91IGNhbiBqdXN0IHJlbHkgb24gdGhlIEZJWCgpIG1hY3JvLi4uKQ0KKyAqLw0KKw0KKyNpZiBDT05TVF9CSVRTID09IDEzDQorI2RlZmluZSBGSVhfMF8yOTg2MzEzMzYgICgoSU5UMzIpICAyNDQ2KQkvKiBGSVgoMC4yOTg2MzEzMzYpICovDQorI2RlZmluZSBGSVhfMF8zOTAxODA2NDQgICgoSU5UMzIpICAzMTk2KQkvKiBGSVgoMC4zOTAxODA2NDQpICovDQorI2RlZmluZSBGSVhfMF81NDExOTYxMDAgICgoSU5UMzIpICA0NDMzKQkvKiBGSVgoMC41NDExOTYxMDApICovDQorI2RlZmluZSBGSVhfMF83NjUzNjY4NjUgICgoSU5UMzIpICA2MjcwKQkvKiBGSVgoMC43NjUzNjY4NjUpICovDQorI2RlZmluZSBGSVhfMF84OTk5NzYyMjMgICgoSU5UMzIpICA3MzczKQkvKiBGSVgoMC44OTk5NzYyMjMpICovDQorI2RlZmluZSBGSVhfMV8xNzU4NzU2MDIgICgoSU5UMzIpICA5NjMzKQkvKiBGSVgoMS4xNzU4NzU2MDIpICovDQorI2RlZmluZSBGSVhfMV81MDEzMjExMTAgICgoSU5UMzIpICAxMjI5OSkJLyogRklYKDEuNTAxMzIxMTEwKSAqLw0KKyNkZWZpbmUgRklYXzFfODQ3NzU5MDY1ICAoKElOVDMyKSAgMTUxMzcpCS8qIEZJWCgxLjg0Nzc1OTA2NSkgKi8NCisjZGVmaW5lIEZJWF8xXzk2MTU3MDU2MCAgKChJTlQzMikgIDE2MDY5KQkvKiBGSVgoMS45NjE1NzA1NjApICovDQorI2RlZmluZSBGSVhfMl8wNTMxMTk4NjkgICgoSU5UMzIpICAxNjgxOSkJLyogRklYKDIuMDUzMTE5ODY5KSAqLw0KKyNkZWZpbmUgRklYXzJfNTYyOTE1NDQ3ICAoKElOVDMyKSAgMjA5OTUpCS8qIEZJWCgyLjU2MjkxNTQ0NykgKi8NCisjZGVmaW5lIEZJWF8zXzA3MjcxMTAyNiAgKChJTlQzMikgIDI1MTcyKQkvKiBGSVgoMy4wNzI3MTEwMjYpICovDQorI2Vsc2UNCisjZGVmaW5lIEZJWF8wXzI5ODYzMTMzNiAgRklYKDAuMjk4NjMxMzM2KQ0KKyNkZWZpbmUgRklYXzBfMzkwMTgwNjQ0ICBGSVgoMC4zOTAxODA2NDQpDQorI2RlZmluZSBGSVhfMF81NDExOTYxMDAgIEZJWCgwLjU0MTE5NjEwMCkNCisjZGVmaW5lIEZJWF8wXzc2NTM2Njg2NSAgRklYKDAuNzY1MzY2ODY1KQ0KKyNkZWZpbmUgRklYXzBfODk5OTc2MjIzICBGSVgoMC44OTk5NzYyMjMpDQorI2RlZmluZSBGSVhfMV8xNzU4NzU2MDIgIEZJWCgxLjE3NTg3NTYwMikNCisjZGVmaW5lIEZJWF8xXzUwMTMyMTExMCAgRklYKDEuNTAxMzIxMTEwKQ0KKyNkZWZpbmUgRklYXzFfODQ3NzU5MDY1ICBGSVgoMS44NDc3NTkwNjUpDQorI2RlZmluZSBGSVhfMV85NjE1NzA1NjAgIEZJWCgxLjk2MTU3MDU2MCkNCisjZGVmaW5lIEZJWF8yXzA1MzExOTg2OSAgRklYKDIuMDUzMTE5ODY5KQ0KKyNkZWZpbmUgRklYXzJfNTYyOTE1NDQ3ICBGSVgoMi41NjI5MTU0NDcpDQorI2RlZmluZSBGSVhfM18wNzI3MTEwMjYgIEZJWCgzLjA3MjcxMTAyNikNCisjZW5kaWYNCisNCisNCisvKiBNdWx0aXBseSBhbiBJTlQzMiB2YXJpYWJsZSBieSBhbiBJTlQzMiBjb25zdGFudCB0byB5aWVsZCBhbiBJTlQzMiByZXN1bHQuDQorICogRm9yIDgtYml0IHNhbXBsZXMgd2l0aCB0aGUgcmVjb21tZW5kZWQgc2NhbGluZywgYWxsIHRoZSB2YXJpYWJsZQ0KKyAqIGFuZCBjb25zdGFudCB2YWx1ZXMgaW52b2x2ZWQgYXJlIG5vIG1vcmUgdGhhbiAxNiBiaXRzIHdpZGUsIHNvIGENCisgKiAxNngxNi0+MzIgYml0IG11bHRpcGx5IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBmdWxsIDMyeDMyIG11bHRpcGx5Lg0KKyAqIEZvciAxMi1iaXQgc2FtcGxlcywgYSBmdWxsIDMyLWJpdCBtdWx0aXBsaWNhdGlvbiB3aWxsIGJlIG5lZWRlZC4NCisgKi8NCisNCisjaWYgQklUU19JTl9KU0FNUExFID09IDgNCisjZGVmaW5lIE1VTFRJUExZKHZhcixjb25zdCkgIE1VTFRJUExZMTZDMTYodmFyLGNvbnN0KQ0KKyNlbHNlDQorI2RlZmluZSBNVUxUSVBMWSh2YXIsY29uc3QpICAoKHZhcikgKiAoY29uc3QpKQ0KKyNlbmRpZg0KKw0KKw0KKy8qDQorICogUGVyZm9ybSB0aGUgZm9yd2FyZCBEQ1Qgb24gb25lIGJsb2NrIG9mIHNhbXBsZXMuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19mZGN0X2lzbG93IChEQ1RFTEVNICogZGF0YSkNCit7DQorICBJTlQzMiB0bXAwLCB0bXAxLCB0bXAyLCB0bXAzLCB0bXA0LCB0bXA1LCB0bXA2LCB0bXA3Ow0KKyAgSU5UMzIgdG1wMTAsIHRtcDExLCB0bXAxMiwgdG1wMTM7DQorICBJTlQzMiB6MSwgejIsIHozLCB6NCwgejU7DQorICBEQ1RFTEVNICpkYXRhcHRyOw0KKyAgaW50IGN0cjsNCisgIFNISUZUX1RFTVBTDQorDQorICAvKiBQYXNzIDE6IHByb2Nlc3Mgcm93cy4gKi8NCisgIC8qIE5vdGUgcmVzdWx0cyBhcmUgc2NhbGVkIHVwIGJ5IHNxcnQoOCkgY29tcGFyZWQgdG8gYSB0cnVlIERDVDsgKi8NCisgIC8qIGZ1cnRoZXJtb3JlLCB3ZSBzY2FsZSB0aGUgcmVzdWx0cyBieSAyKipQQVNTMV9CSVRTLiAqLw0KKw0KKyAgZGF0YXB0ciA9IGRhdGE7DQorICBmb3IgKGN0ciA9IERDVFNJWkUtMTsgY3RyID49IDA7IGN0ci0tKSB7DQorICAgIHRtcDAgPSBkYXRhcHRyWzBdICsgZGF0YXB0cls3XTsNCisgICAgdG1wNyA9IGRhdGFwdHJbMF0gLSBkYXRhcHRyWzddOw0KKyAgICB0bXAxID0gZGF0YXB0clsxXSArIGRhdGFwdHJbNl07DQorICAgIHRtcDYgPSBkYXRhcHRyWzFdIC0gZGF0YXB0cls2XTsNCisgICAgdG1wMiA9IGRhdGFwdHJbMl0gKyBkYXRhcHRyWzVdOw0KKyAgICB0bXA1ID0gZGF0YXB0clsyXSAtIGRhdGFwdHJbNV07DQorICAgIHRtcDMgPSBkYXRhcHRyWzNdICsgZGF0YXB0cls0XTsNCisgICAgdG1wNCA9IGRhdGFwdHJbM10gLSBkYXRhcHRyWzRdOw0KKyAgICANCisgICAgLyogRXZlbiBwYXJ0IHBlciBMTCZNIGZpZ3VyZSAxIC0tLSBub3RlIHRoYXQgcHVibGlzaGVkIGZpZ3VyZSBpcyBmYXVsdHk7DQorICAgICAqIHJvdGF0b3IgInNxcnQoMikqYzEiIHNob3VsZCBiZSAic3FydCgyKSpjNiIuDQorICAgICAqLw0KKyAgICANCisgICAgdG1wMTAgPSB0bXAwICsgdG1wMzsNCisgICAgdG1wMTMgPSB0bXAwIC0gdG1wMzsNCisgICAgdG1wMTEgPSB0bXAxICsgdG1wMjsNCisgICAgdG1wMTIgPSB0bXAxIC0gdG1wMjsNCisgICAgDQorICAgIGRhdGFwdHJbMF0gPSAoRENURUxFTSkgKCh0bXAxMCArIHRtcDExKSA8PCBQQVNTMV9CSVRTKTsNCisgICAgZGF0YXB0cls0XSA9IChEQ1RFTEVNKSAoKHRtcDEwIC0gdG1wMTEpIDw8IFBBU1MxX0JJVFMpOw0KKyAgICANCisgICAgejEgPSBNVUxUSVBMWSh0bXAxMiArIHRtcDEzLCBGSVhfMF81NDExOTYxMDApOw0KKyAgICBkYXRhcHRyWzJdID0gKERDVEVMRU0pIERFU0NBTEUoejEgKyBNVUxUSVBMWSh0bXAxMywgRklYXzBfNzY1MzY2ODY1KSwNCisJCQkJICAgQ09OU1RfQklUUy1QQVNTMV9CSVRTKTsNCisgICAgZGF0YXB0cls2XSA9IChEQ1RFTEVNKSBERVNDQUxFKHoxICsgTVVMVElQTFkodG1wMTIsIC0gRklYXzFfODQ3NzU5MDY1KSwNCisJCQkJICAgQ09OU1RfQklUUy1QQVNTMV9CSVRTKTsNCisgICAgDQorICAgIC8qIE9kZCBwYXJ0IHBlciBmaWd1cmUgOCAtLS0gbm90ZSBwYXBlciBvbWl0cyBmYWN0b3Igb2Ygc3FydCgyKS4NCisgICAgICogY0sgcmVwcmVzZW50cyBjb3MoSypwaS8xNikuDQorICAgICAqIGkwLi5pMyBpbiB0aGUgcGFwZXIgYXJlIHRtcDQuLnRtcDcgaGVyZS4NCisgICAgICovDQorICAgIA0KKyAgICB6MSA9IHRtcDQgKyB0bXA3Ow0KKyAgICB6MiA9IHRtcDUgKyB0bXA2Ow0KKyAgICB6MyA9IHRtcDQgKyB0bXA2Ow0KKyAgICB6NCA9IHRtcDUgKyB0bXA3Ow0KKyAgICB6NSA9IE1VTFRJUExZKHozICsgejQsIEZJWF8xXzE3NTg3NTYwMik7IC8qIHNxcnQoMikgKiBjMyAqLw0KKyAgICANCisgICAgdG1wNCA9IE1VTFRJUExZKHRtcDQsIEZJWF8wXzI5ODYzMTMzNik7IC8qIHNxcnQoMikgKiAoLWMxK2MzK2M1LWM3KSAqLw0KKyAgICB0bXA1ID0gTVVMVElQTFkodG1wNSwgRklYXzJfMDUzMTE5ODY5KTsgLyogc3FydCgyKSAqICggYzErYzMtYzUrYzcpICovDQorICAgIHRtcDYgPSBNVUxUSVBMWSh0bXA2LCBGSVhfM18wNzI3MTEwMjYpOyAvKiBzcXJ0KDIpICogKCBjMStjMytjNS1jNykgKi8NCisgICAgdG1wNyA9IE1VTFRJUExZKHRtcDcsIEZJWF8xXzUwMTMyMTExMCk7IC8qIHNxcnQoMikgKiAoIGMxK2MzLWM1LWM3KSAqLw0KKyAgICB6MSA9IE1VTFRJUExZKHoxLCAtIEZJWF8wXzg5OTk3NjIyMyk7IC8qIHNxcnQoMikgKiAoYzctYzMpICovDQorICAgIHoyID0gTVVMVElQTFkoejIsIC0gRklYXzJfNTYyOTE1NDQ3KTsgLyogc3FydCgyKSAqICgtYzEtYzMpICovDQorICAgIHozID0gTVVMVElQTFkoejMsIC0gRklYXzFfOTYxNTcwNTYwKTsgLyogc3FydCgyKSAqICgtYzMtYzUpICovDQorICAgIHo0ID0gTVVMVElQTFkoejQsIC0gRklYXzBfMzkwMTgwNjQ0KTsgLyogc3FydCgyKSAqIChjNS1jMykgKi8NCisgICAgDQorICAgIHozICs9IHo1Ow0KKyAgICB6NCArPSB6NTsNCisgICAgDQorICAgIGRhdGFwdHJbN10gPSAoRENURUxFTSkgREVTQ0FMRSh0bXA0ICsgejEgKyB6MywgQ09OU1RfQklUUy1QQVNTMV9CSVRTKTsNCisgICAgZGF0YXB0cls1XSA9IChEQ1RFTEVNKSBERVNDQUxFKHRtcDUgKyB6MiArIHo0LCBDT05TVF9CSVRTLVBBU1MxX0JJVFMpOw0KKyAgICBkYXRhcHRyWzNdID0gKERDVEVMRU0pIERFU0NBTEUodG1wNiArIHoyICsgejMsIENPTlNUX0JJVFMtUEFTUzFfQklUUyk7DQorICAgIGRhdGFwdHJbMV0gPSAoRENURUxFTSkgREVTQ0FMRSh0bXA3ICsgejEgKyB6NCwgQ09OU1RfQklUUy1QQVNTMV9CSVRTKTsNCisgICAgDQorICAgIGRhdGFwdHIgKz0gRENUU0laRTsJCS8qIGFkdmFuY2UgcG9pbnRlciB0byBuZXh0IHJvdyAqLw0KKyAgfQ0KKw0KKyAgLyogUGFzcyAyOiBwcm9jZXNzIGNvbHVtbnMuDQorICAgKiBXZSByZW1vdmUgdGhlIFBBU1MxX0JJVFMgc2NhbGluZywgYnV0IGxlYXZlIHRoZSByZXN1bHRzIHNjYWxlZCB1cA0KKyAgICogYnkgYW4gb3ZlcmFsbCBmYWN0b3Igb2YgOC4NCisgICAqLw0KKw0KKyAgZGF0YXB0ciA9IGRhdGE7DQorICBmb3IgKGN0ciA9IERDVFNJWkUtMTsgY3RyID49IDA7IGN0ci0tKSB7DQorICAgIHRtcDAgPSBkYXRhcHRyW0RDVFNJWkUqMF0gKyBkYXRhcHRyW0RDVFNJWkUqN107DQorICAgIHRtcDcgPSBkYXRhcHRyW0RDVFNJWkUqMF0gLSBkYXRhcHRyW0RDVFNJWkUqN107DQorICAgIHRtcDEgPSBkYXRhcHRyW0RDVFNJWkUqMV0gKyBkYXRhcHRyW0RDVFNJWkUqNl07DQorICAgIHRtcDYgPSBkYXRhcHRyW0RDVFNJWkUqMV0gLSBkYXRhcHRyW0RDVFNJWkUqNl07DQorICAgIHRtcDIgPSBkYXRhcHRyW0RDVFNJWkUqMl0gKyBkYXRhcHRyW0RDVFNJWkUqNV07DQorICAgIHRtcDUgPSBkYXRhcHRyW0RDVFNJWkUqMl0gLSBkYXRhcHRyW0RDVFNJWkUqNV07DQorICAgIHRtcDMgPSBkYXRhcHRyW0RDVFNJWkUqM10gKyBkYXRhcHRyW0RDVFNJWkUqNF07DQorICAgIHRtcDQgPSBkYXRhcHRyW0RDVFNJWkUqM10gLSBkYXRhcHRyW0RDVFNJWkUqNF07DQorICAgIA0KKyAgICAvKiBFdmVuIHBhcnQgcGVyIExMJk0gZmlndXJlIDEgLS0tIG5vdGUgdGhhdCBwdWJsaXNoZWQgZmlndXJlIGlzIGZhdWx0eTsNCisgICAgICogcm90YXRvciAic3FydCgyKSpjMSIgc2hvdWxkIGJlICJzcXJ0KDIpKmM2Ii4NCisgICAgICovDQorICAgIA0KKyAgICB0bXAxMCA9IHRtcDAgKyB0bXAzOw0KKyAgICB0bXAxMyA9IHRtcDAgLSB0bXAzOw0KKyAgICB0bXAxMSA9IHRtcDEgKyB0bXAyOw0KKyAgICB0bXAxMiA9IHRtcDEgLSB0bXAyOw0KKyAgICANCisgICAgZGF0YXB0cltEQ1RTSVpFKjBdID0gKERDVEVMRU0pIERFU0NBTEUodG1wMTAgKyB0bXAxMSwgUEFTUzFfQklUUyk7DQorICAgIGRhdGFwdHJbRENUU0laRSo0XSA9IChEQ1RFTEVNKSBERVNDQUxFKHRtcDEwIC0gdG1wMTEsIFBBU1MxX0JJVFMpOw0KKyAgICANCisgICAgejEgPSBNVUxUSVBMWSh0bXAxMiArIHRtcDEzLCBGSVhfMF81NDExOTYxMDApOw0KKyAgICBkYXRhcHRyW0RDVFNJWkUqMl0gPSAoRENURUxFTSkgREVTQ0FMRSh6MSArIE1VTFRJUExZKHRtcDEzLCBGSVhfMF83NjUzNjY4NjUpLA0KKwkJCQkJICAgQ09OU1RfQklUUytQQVNTMV9CSVRTKTsNCisgICAgZGF0YXB0cltEQ1RTSVpFKjZdID0gKERDVEVMRU0pIERFU0NBTEUoejEgKyBNVUxUSVBMWSh0bXAxMiwgLSBGSVhfMV84NDc3NTkwNjUpLA0KKwkJCQkJICAgQ09OU1RfQklUUytQQVNTMV9CSVRTKTsNCisgICAgDQorICAgIC8qIE9kZCBwYXJ0IHBlciBmaWd1cmUgOCAtLS0gbm90ZSBwYXBlciBvbWl0cyBmYWN0b3Igb2Ygc3FydCgyKS4NCisgICAgICogY0sgcmVwcmVzZW50cyBjb3MoSypwaS8xNikuDQorICAgICAqIGkwLi5pMyBpbiB0aGUgcGFwZXIgYXJlIHRtcDQuLnRtcDcgaGVyZS4NCisgICAgICovDQorICAgIA0KKyAgICB6MSA9IHRtcDQgKyB0bXA3Ow0KKyAgICB6MiA9IHRtcDUgKyB0bXA2Ow0KKyAgICB6MyA9IHRtcDQgKyB0bXA2Ow0KKyAgICB6NCA9IHRtcDUgKyB0bXA3Ow0KKyAgICB6NSA9IE1VTFRJUExZKHozICsgejQsIEZJWF8xXzE3NTg3NTYwMik7IC8qIHNxcnQoMikgKiBjMyAqLw0KKyAgICANCisgICAgdG1wNCA9IE1VTFRJUExZKHRtcDQsIEZJWF8wXzI5ODYzMTMzNik7IC8qIHNxcnQoMikgKiAoLWMxK2MzK2M1LWM3KSAqLw0KKyAgICB0bXA1ID0gTVVMVElQTFkodG1wNSwgRklYXzJfMDUzMTE5ODY5KTsgLyogc3FydCgyKSAqICggYzErYzMtYzUrYzcpICovDQorICAgIHRtcDYgPSBNVUxUSVBMWSh0bXA2LCBGSVhfM18wNzI3MTEwMjYpOyAvKiBzcXJ0KDIpICogKCBjMStjMytjNS1jNykgKi8NCisgICAgdG1wNyA9IE1VTFRJUExZKHRtcDcsIEZJWF8xXzUwMTMyMTExMCk7IC8qIHNxcnQoMikgKiAoIGMxK2MzLWM1LWM3KSAqLw0KKyAgICB6MSA9IE1VTFRJUExZKHoxLCAtIEZJWF8wXzg5OTk3NjIyMyk7IC8qIHNxcnQoMikgKiAoYzctYzMpICovDQorICAgIHoyID0gTVVMVElQTFkoejIsIC0gRklYXzJfNTYyOTE1NDQ3KTsgLyogc3FydCgyKSAqICgtYzEtYzMpICovDQorICAgIHozID0gTVVMVElQTFkoejMsIC0gRklYXzFfOTYxNTcwNTYwKTsgLyogc3FydCgyKSAqICgtYzMtYzUpICovDQorICAgIHo0ID0gTVVMVElQTFkoejQsIC0gRklYXzBfMzkwMTgwNjQ0KTsgLyogc3FydCgyKSAqIChjNS1jMykgKi8NCisgICAgDQorICAgIHozICs9IHo1Ow0KKyAgICB6NCArPSB6NTsNCisgICAgDQorICAgIGRhdGFwdHJbRENUU0laRSo3XSA9IChEQ1RFTEVNKSBERVNDQUxFKHRtcDQgKyB6MSArIHozLA0KKwkJCQkJICAgQ09OU1RfQklUUytQQVNTMV9CSVRTKTsNCisgICAgZGF0YXB0cltEQ1RTSVpFKjVdID0gKERDVEVMRU0pIERFU0NBTEUodG1wNSArIHoyICsgejQsDQorCQkJCQkgICBDT05TVF9CSVRTK1BBU1MxX0JJVFMpOw0KKyAgICBkYXRhcHRyW0RDVFNJWkUqM10gPSAoRENURUxFTSkgREVTQ0FMRSh0bXA2ICsgejIgKyB6MywNCisJCQkJCSAgIENPTlNUX0JJVFMrUEFTUzFfQklUUyk7DQorICAgIGRhdGFwdHJbRENUU0laRSoxXSA9IChEQ1RFTEVNKSBERVNDQUxFKHRtcDcgKyB6MSArIHo0LA0KKwkJCQkJICAgQ09OU1RfQklUUytQQVNTMV9CSVRTKTsNCisgICAgDQorICAgIGRhdGFwdHIrKzsJCQkvKiBhZHZhbmNlIHBvaW50ZXIgdG8gbmV4dCBjb2x1bW4gKi8NCisgIH0NCit9DQorDQorI2VuZGlmIC8qIERDVF9JU0xPV19TVVBQT1JURUQgKi8NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qaWRjdGZzdC5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamlkY3Rmc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGM1MDRjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamlkY3Rmc3QuYwpAQCAtMCwwICsxLDM3MSBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGppZGN0ZnN0LmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk4LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyBhIGZhc3QsIG5vdCBzbyBhY2N1cmF0ZSBpbnRlZ2VyIGltcGxlbWVudGF0aW9uIG9mIHRoZQ0KKyAqIGludmVyc2UgRENUIChEaXNjcmV0ZSBDb3NpbmUgVHJhbnNmb3JtKS4gIEluIHRoZSBJSkcgY29kZSwgdGhpcyByb3V0aW5lDQorICogbXVzdCBhbHNvIHBlcmZvcm0gZGVxdWFudGl6YXRpb24gb2YgdGhlIGlucHV0IGNvZWZmaWNpZW50cy4NCisgKg0KKyAqIEEgMi1EIElEQ1QgY2FuIGJlIGRvbmUgYnkgMS1EIElEQ1Qgb24gZWFjaCBjb2x1bW4gZm9sbG93ZWQgYnkgMS1EIElEQ1QNCisgKiBvbiBlYWNoIHJvdyAob3IgdmljZSB2ZXJzYSwgYnV0IGl0J3MgbW9yZSBjb252ZW5pZW50IHRvIGVtaXQgYSByb3cgYXQNCisgKiBhIHRpbWUpLiAgRGlyZWN0IGFsZ29yaXRobXMgYXJlIGFsc28gYXZhaWxhYmxlLCBidXQgdGhleSBhcmUgbXVjaCBtb3JlDQorICogY29tcGxleCBhbmQgc2VlbSBub3QgdG8gYmUgYW55IGZhc3RlciB3aGVuIHJlZHVjZWQgdG8gY29kZS4NCisgKg0KKyAqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gQXJhaSwgQWd1aSwgYW5kIE5ha2FqaW1hJ3MgYWxnb3JpdGhtIGZvcg0KKyAqIHNjYWxlZCBEQ1QuICBUaGVpciBvcmlnaW5hbCBwYXBlciAoVHJhbnMuIElFSUNFIEUtNzEoMTEpOjEwOTUpIGlzIGluDQorICogSmFwYW5lc2UsIGJ1dCB0aGUgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiB0aGUgUGVubmViYWtlciAmIE1pdGNoZWxsDQorICogSlBFRyB0ZXh0Ym9vayAoc2VlIFJFRkVSRU5DRVMgc2VjdGlvbiBpbiBmaWxlIFJFQURNRSkuICBUaGUgZm9sbG93aW5nIGNvZGUNCisgKiBpcyBiYXNlZCBkaXJlY3RseSBvbiBmaWd1cmUgNC04IGluIFAmTS4NCisgKiBXaGlsZSBhbiA4LXBvaW50IERDVCBjYW5ub3QgYmUgZG9uZSBpbiBsZXNzIHRoYW4gMTEgbXVsdGlwbGllcywgaXQgaXMNCisgKiBwb3NzaWJsZSB0byBhcnJhbmdlIHRoZSBjb21wdXRhdGlvbiBzbyB0aGF0IG1hbnkgb2YgdGhlIG11bHRpcGxpZXMgYXJlDQorICogc2ltcGxlIHNjYWxpbmdzIG9mIHRoZSBmaW5hbCBvdXRwdXRzLiAgVGhlc2UgbXVsdGlwbGllcyBjYW4gdGhlbiBiZQ0KKyAqIGZvbGRlZCBpbnRvIHRoZSBtdWx0aXBsaWNhdGlvbnMgb3IgZGl2aXNpb25zIGJ5IHRoZSBKUEVHIHF1YW50aXphdGlvbg0KKyAqIHRhYmxlIGVudHJpZXMuICBUaGUgQUEmTiBtZXRob2QgbGVhdmVzIG9ubHkgNSBtdWx0aXBsaWVzIGFuZCAyOSBhZGRzDQorICogdG8gYmUgZG9uZSBpbiB0aGUgRENUIGl0c2VsZi4NCisgKiBUaGUgcHJpbWFyeSBkaXNhZHZhbnRhZ2Ugb2YgdGhpcyBtZXRob2QgaXMgdGhhdCB3aXRoIGZpeGVkLXBvaW50IG1hdGgsDQorICogYWNjdXJhY3kgaXMgbG9zdCBkdWUgdG8gaW1wcmVjaXNlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzY2FsZWQNCisgKiBxdWFudGl6YXRpb24gdmFsdWVzLiAgVGhlIHNtYWxsZXIgdGhlIHF1YW50aXphdGlvbiB0YWJsZSBlbnRyeSwgdGhlIGxlc3MNCisgKiBwcmVjaXNlIHRoZSBzY2FsZWQgdmFsdWUsIHNvIHRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyB3b3JzZSB3aXRoIGhpZ2gtDQorICogcXVhbGl0eS1zZXR0aW5nIGZpbGVzIHRoYW4gd2l0aCBsb3ctcXVhbGl0eSBvbmVzLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKyNpbmNsdWRlICJqZGN0LmgiCQkvKiBQcml2YXRlIGRlY2xhcmF0aW9ucyBmb3IgRENUIHN1YnN5c3RlbSAqLw0KKw0KKyNpZmRlZiBEQ1RfSUZBU1RfU1VQUE9SVEVEDQorDQorDQorLyoNCisgKiBUaGlzIG1vZHVsZSBpcyBzcGVjaWFsaXplZCB0byB0aGUgY2FzZSBEQ1RTSVpFID0gOC4NCisgKi8NCisNCisjaWYgRENUU0laRSAhPSA4DQorICBTb3JyeSwgdGhpcyBjb2RlIG9ubHkgY29wZXMgd2l0aCA4eDggRENUcy4gLyogZGVsaWJlcmF0ZSBzeW50YXggZXJyICovDQorI2VuZGlmDQorDQorDQorLyogU2NhbGluZyBkZWNpc2lvbnMgYXJlIGdlbmVyYWxseSB0aGUgc2FtZSBhcyBpbiB0aGUgTEwmTSBhbGdvcml0aG07DQorICogc2VlIGppZGN0aW50LmMgZm9yIG1vcmUgZGV0YWlscy4gIEhvd2V2ZXIsIHdlIGNob29zZSB0byBkZXNjYWxlDQorICogKHJpZ2h0IHNoaWZ0KSBtdWx0aXBsaWNhdGlvbiBwcm9kdWN0cyBhcyBzb29uIGFzIHRoZXkgYXJlIGZvcm1lZCwNCisgKiByYXRoZXIgdGhhbiBjYXJyeWluZyBhZGRpdGlvbmFsIGZyYWN0aW9uYWwgYml0cyBpbnRvIHN1YnNlcXVlbnQgYWRkaXRpb25zLg0KKyAqIFRoaXMgY29tcHJvbWlzZXMgYWNjdXJhY3kgc2xpZ2h0bHksIGJ1dCBpdCBsZXRzIHVzIHNhdmUgYSBmZXcgc2hpZnRzLg0KKyAqIE1vcmUgaW1wb3J0YW50bHksIDE2LWJpdCBhcml0aG1ldGljIGlzIHRoZW4gYWRlcXVhdGUgKGZvciA4LWJpdCBzYW1wbGVzKQ0KKyAqIGV2ZXJ5d2hlcmUgZXhjZXB0IGluIHRoZSBtdWx0aXBsaWNhdGlvbnMgcHJvcGVyOyB0aGlzIHNhdmVzIGEgZ29vZCBkZWFsDQorICogb2Ygd29yayBvbiAxNi1iaXQtaW50IG1hY2hpbmVzLg0KKyAqDQorICogVGhlIGRlcXVhbnRpemVkIGNvZWZmaWNpZW50cyBhcmUgbm90IGludGVnZXJzIGJlY2F1c2UgdGhlIEFBJk4gc2NhbGluZw0KKyAqIGZhY3RvcnMgaGF2ZSBiZWVuIGluY29ycG9yYXRlZC4gIFdlIHJlcHJlc2VudCB0aGVtIHNjYWxlZCB1cCBieSBQQVNTMV9CSVRTLA0KKyAqIHNvIHRoYXQgdGhlIGZpcnN0IGFuZCBzZWNvbmQgSURDVCByb3VuZHMgaGF2ZSB0aGUgc2FtZSBpbnB1dCBzY2FsaW5nLg0KKyAqIEZvciA4LWJpdCBKU0FNUExFcywgd2UgY2hvb3NlIElGQVNUX1NDQUxFX0JJVFMgPSBQQVNTMV9CSVRTIHNvIGFzIHRvDQorICogYXZvaWQgYSBkZXNjYWxpbmcgc2hpZnQ7IHRoaXMgY29tcHJvbWlzZXMgYWNjdXJhY3kgcmF0aGVyIGRyYXN0aWNhbGx5DQorICogZm9yIHNtYWxsIHF1YW50aXphdGlvbiB0YWJsZSBlbnRyaWVzLCBidXQgaXQgc2F2ZXMgYSBsb3Qgb2Ygc2hpZnRzLg0KKyAqIEZvciAxMi1iaXQgSlNBTVBMRXMsIHRoZXJlJ3Mgbm8gaG9wZSBvZiB1c2luZyAxNngxNiBtdWx0aXBsaWVzIGFueXdheSwNCisgKiBzbyB3ZSB1c2UgYSBtdWNoIGxhcmdlciBzY2FsaW5nIGZhY3RvciB0byBwcmVzZXJ2ZSBhY2N1cmFjeS4NCisgKg0KKyAqIEEgZmluYWwgY29tcHJvbWlzZSBpcyB0byByZXByZXNlbnQgdGhlIG11bHRpcGxpY2F0aXZlIGNvbnN0YW50cyB0byBvbmx5DQorICogOCBmcmFjdGlvbmFsIGJpdHMsIHJhdGhlciB0aGFuIDEzLiAgVGhpcyBzYXZlcyBzb21lIHNoaWZ0aW5nIHdvcmsgb24gc29tZQ0KKyAqIG1hY2hpbmVzLCBhbmQgbWF5IGFsc28gcmVkdWNlIHRoZSBjb3N0IG9mIG11bHRpcGxpY2F0aW9uIChzaW5jZSB0aGVyZQ0KKyAqIGFyZSBmZXdlciBvbmUtYml0cyBpbiB0aGUgY29uc3RhbnRzKS4NCisgKi8NCisNCisjaWYgQklUU19JTl9KU0FNUExFID09IDgNCisjZGVmaW5lIENPTlNUX0JJVFMgIDgNCisjZGVmaW5lIFBBU1MxX0JJVFMgIDINCisjZWxzZQ0KKyNkZWZpbmUgQ09OU1RfQklUUyAgOA0KKyNkZWZpbmUgUEFTUzFfQklUUyAgMQkJLyogbG9zZSBhIGxpdHRsZSBwcmVjaXNpb24gdG8gYXZvaWQgb3ZlcmZsb3cgKi8NCisjZW5kaWYNCisNCisvKiBTb21lIEMgY29tcGlsZXJzIGZhaWwgdG8gcmVkdWNlICJGSVgoY29uc3RhbnQpIiBhdCBjb21waWxlIHRpbWUsIHRodXMNCisgKiBjYXVzaW5nIGEgbG90IG9mIHVzZWxlc3MgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyBhdCBydW4gdGltZS4NCisgKiBUbyBnZXQgYXJvdW5kIHRoaXMgd2UgdXNlIHRoZSBmb2xsb3dpbmcgcHJlLWNhbGN1bGF0ZWQgY29uc3RhbnRzLg0KKyAqIElmIHlvdSBjaGFuZ2UgQ09OU1RfQklUUyB5b3UgbWF5IHdhbnQgdG8gYWRkIGFwcHJvcHJpYXRlIHZhbHVlcy4NCisgKiAoV2l0aCBhIHJlYXNvbmFibGUgQyBjb21waWxlciwgeW91IGNhbiBqdXN0IHJlbHkgb24gdGhlIEZJWCgpIG1hY3JvLi4uKQ0KKyAqLw0KKw0KKyNpZiBDT05TVF9CSVRTID09IDgNCisjZGVmaW5lIEZJWF8xXzA4MjM5MjIwMCAgKChJTlQzMikgIDI3NykJCS8qIEZJWCgxLjA4MjM5MjIwMCkgKi8NCisjZGVmaW5lIEZJWF8xXzQxNDIxMzU2MiAgKChJTlQzMikgIDM2MikJCS8qIEZJWCgxLjQxNDIxMzU2MikgKi8NCisjZGVmaW5lIEZJWF8xXzg0Nzc1OTA2NSAgKChJTlQzMikgIDQ3MykJCS8qIEZJWCgxLjg0Nzc1OTA2NSkgKi8NCisjZGVmaW5lIEZJWF8yXzYxMzEyNTkzMCAgKChJTlQzMikgIDY2OSkJCS8qIEZJWCgyLjYxMzEyNTkzMCkgKi8NCisjZWxzZQ0KKyNkZWZpbmUgRklYXzFfMDgyMzkyMjAwICBGSVgoMS4wODIzOTIyMDApDQorI2RlZmluZSBGSVhfMV80MTQyMTM1NjIgIEZJWCgxLjQxNDIxMzU2MikNCisjZGVmaW5lIEZJWF8xXzg0Nzc1OTA2NSAgRklYKDEuODQ3NzU5MDY1KQ0KKyNkZWZpbmUgRklYXzJfNjEzMTI1OTMwICBGSVgoMi42MTMxMjU5MzApDQorI2VuZGlmDQorDQorDQorLyogV2UgY2FuIGdhaW4gYSBsaXR0bGUgbW9yZSBzcGVlZCwgd2l0aCBhIGZ1cnRoZXIgY29tcHJvbWlzZSBpbiBhY2N1cmFjeSwNCisgKiBieSBvbWl0dGluZyB0aGUgYWRkaXRpb24gaW4gYSBkZXNjYWxpbmcgc2hpZnQuICBUaGlzIHlpZWxkcyBhbiBpbmNvcnJlY3RseQ0KKyAqIHJvdW5kZWQgcmVzdWx0IGhhbGYgdGhlIHRpbWUuLi4NCisgKi8NCisNCisjaWZuZGVmIFVTRV9BQ0NVUkFURV9ST1VORElORw0KKyN1bmRlZiBERVNDQUxFDQorI2RlZmluZSBERVNDQUxFKHgsbikgIFJJR0hUX1NISUZUKHgsIG4pDQorI2VuZGlmDQorDQorDQorLyogTXVsdGlwbHkgYSBEQ1RFTEVNIHZhcmlhYmxlIGJ5IGFuIElOVDMyIGNvbnN0YW50LCBhbmQgaW1tZWRpYXRlbHkNCisgKiBkZXNjYWxlIHRvIHlpZWxkIGEgRENURUxFTSByZXN1bHQuDQorICovDQorDQorI2RlZmluZSBNVUxUSVBMWSh2YXIsY29uc3QpICAoKERDVEVMRU0pIERFU0NBTEUoKHZhcikgKiAoY29uc3QpLCBDT05TVF9CSVRTKSkNCisNCisNCisvKiBEZXF1YW50aXplIGEgY29lZmZpY2llbnQgYnkgbXVsdGlwbHlpbmcgaXQgYnkgdGhlIG11bHRpcGxpZXItdGFibGUNCisgKiBlbnRyeTsgcHJvZHVjZSBhIERDVEVMRU0gcmVzdWx0LiAgRm9yIDgtYml0IGRhdGEgYSAxNngxNi0+MTYNCisgKiBtdWx0aXBsaWNhdGlvbiB3aWxsIGRvLiAgRm9yIDEyLWJpdCBkYXRhLCB0aGUgbXVsdGlwbGllciB0YWJsZSBpcw0KKyAqIGRlY2xhcmVkIElOVDMyLCBzbyBhIDMyLWJpdCBtdWx0aXBseSB3aWxsIGJlIHVzZWQuDQorICovDQorDQorI2lmIEJJVFNfSU5fSlNBTVBMRSA9PSA4DQorI2RlZmluZSBERVFVQU5USVpFKGNvZWYscXVhbnR2YWwpICAoKChJRkFTVF9NVUxUX1RZUEUpIChjb2VmKSkgKiAocXVhbnR2YWwpKQ0KKyNlbHNlDQorI2RlZmluZSBERVFVQU5USVpFKGNvZWYscXVhbnR2YWwpICBcDQorCURFU0NBTEUoKGNvZWYpKihxdWFudHZhbCksIElGQVNUX1NDQUxFX0JJVFMtUEFTUzFfQklUUykNCisjZW5kaWYNCisNCisNCisvKiBMaWtlIERFU0NBTEUsIGJ1dCBhcHBsaWVzIHRvIGEgRENURUxFTSBhbmQgcHJvZHVjZXMgYW4gaW50Lg0KKyAqIFdlIGFzc3VtZSB0aGF0IGludCByaWdodCBzaGlmdCBpcyB1bnNpZ25lZCBpZiBJTlQzMiByaWdodCBzaGlmdCBpcy4NCisgKi8NCisNCisjaWZkZWYgUklHSFRfU0hJRlRfSVNfVU5TSUdORUQNCisjZGVmaW5lIElTSElGVF9URU1QUwlEQ1RFTEVNIGlzaGlmdF90ZW1wOw0KKyNpZiBCSVRTX0lOX0pTQU1QTEUgPT0gOA0KKyNkZWZpbmUgRENURUxFTUJJVFMgIDE2CQkvKiBEQ1RFTEVNIG1heSBiZSAxNiBvciAzMiBiaXRzICovDQorI2Vsc2UNCisjZGVmaW5lIERDVEVMRU1CSVRTICAzMgkJLyogRENURUxFTSBtdXN0IGJlIDMyIGJpdHMgKi8NCisjZW5kaWYNCisjZGVmaW5lIElSSUdIVF9TSElGVCh4LHNoZnQpICBcDQorICAgICgoaXNoaWZ0X3RlbXAgPSAoeCkpIDwgMCA/IFwNCisgICAgIChpc2hpZnRfdGVtcCA+PiAoc2hmdCkpIHwgKCh+KChEQ1RFTEVNKSAwKSkgPDwgKERDVEVMRU1CSVRTLShzaGZ0KSkpIDogXA0KKyAgICAgKGlzaGlmdF90ZW1wID4+IChzaGZ0KSkpDQorI2Vsc2UNCisjZGVmaW5lIElTSElGVF9URU1QUw0KKyNkZWZpbmUgSVJJR0hUX1NISUZUKHgsc2hmdCkJKCh4KSA+PiAoc2hmdCkpDQorI2VuZGlmDQorDQorI2lmZGVmIFVTRV9BQ0NVUkFURV9ST1VORElORw0KKyNkZWZpbmUgSURFU0NBTEUoeCxuKSAgKChpbnQpIElSSUdIVF9TSElGVCgoeCkgKyAoMSA8PCAoKG4pLTEpKSwgbikpDQorI2Vsc2UNCisjZGVmaW5lIElERVNDQUxFKHgsbikgICgoaW50KSBJUklHSFRfU0hJRlQoeCwgbikpDQorI2VuZGlmDQorDQorDQorLyoNCisgKiBQZXJmb3JtIGRlcXVhbnRpemF0aW9uIGFuZCBpbnZlcnNlIERDVCBvbiBvbmUgYmxvY2sgb2YgY29lZmZpY2llbnRzLg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfaWRjdF9pZmFzdCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCQkgSkNPRUZQVFIgY29lZl9ibG9jaywNCisJCSBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gb3V0cHV0X2NvbCkNCit7DQorICBEQ1RFTEVNIHRtcDAsIHRtcDEsIHRtcDIsIHRtcDMsIHRtcDQsIHRtcDUsIHRtcDYsIHRtcDc7DQorICBEQ1RFTEVNIHRtcDEwLCB0bXAxMSwgdG1wMTIsIHRtcDEzOw0KKyAgRENURUxFTSB6NSwgejEwLCB6MTEsIHoxMiwgejEzOw0KKyAgSkNPRUZQVFIgaW5wdHI7DQorICBJRkFTVF9NVUxUX1RZUEUgKiBxdWFudHB0cjsNCisgIGludCAqIHdzcHRyOw0KKyAgSlNBTVBST1cgb3V0cHRyOw0KKyAgSlNBTVBMRSAqcmFuZ2VfbGltaXQgPSBJRENUX3JhbmdlX2xpbWl0KGNpbmZvKTsNCisgIGludCBjdHI7DQorICBpbnQgd29ya3NwYWNlW0RDVFNJWkUyXTsJLyogYnVmZmVycyBkYXRhIGJldHdlZW4gcGFzc2VzICovDQorICBTSElGVF9URU1QUwkJCS8qIGZvciBERVNDQUxFICovDQorICBJU0hJRlRfVEVNUFMJCQkvKiBmb3IgSURFU0NBTEUgKi8NCisNCisgIC8qIFBhc3MgMTogcHJvY2VzcyBjb2x1bW5zIGZyb20gaW5wdXQsIHN0b3JlIGludG8gd29yayBhcnJheS4gKi8NCisNCisgIGlucHRyID0gY29lZl9ibG9jazsNCisgIHF1YW50cHRyID0gKElGQVNUX01VTFRfVFlQRSAqKSBjb21wcHRyLT5kY3RfdGFibGU7DQorICB3c3B0ciA9IHdvcmtzcGFjZTsNCisgIGZvciAoY3RyID0gRENUU0laRTsgY3RyID4gMDsgY3RyLS0pIHsNCisgICAgLyogRHVlIHRvIHF1YW50aXphdGlvbiwgd2Ugd2lsbCB1c3VhbGx5IGZpbmQgdGhhdCBtYW55IG9mIHRoZSBpbnB1dA0KKyAgICAgKiBjb2VmZmljaWVudHMgYXJlIHplcm8sIGVzcGVjaWFsbHkgdGhlIEFDIHRlcm1zLiAgV2UgY2FuIGV4cGxvaXQgdGhpcw0KKyAgICAgKiBieSBzaG9ydC1jaXJjdWl0aW5nIHRoZSBJRENUIGNhbGN1bGF0aW9uIGZvciBhbnkgY29sdW1uIGluIHdoaWNoIGFsbA0KKyAgICAgKiB0aGUgQUMgdGVybXMgYXJlIHplcm8uICBJbiB0aGF0IGNhc2UgZWFjaCBvdXRwdXQgaXMgZXF1YWwgdG8gdGhlDQorICAgICAqIERDIGNvZWZmaWNpZW50ICh3aXRoIHNjYWxlIGZhY3RvciBhcyBuZWVkZWQpLg0KKyAgICAgKiBXaXRoIHR5cGljYWwgaW1hZ2VzIGFuZCBxdWFudGl6YXRpb24gdGFibGVzLCBoYWxmIG9yIG1vcmUgb2YgdGhlDQorICAgICAqIGNvbHVtbiBEQ1QgY2FsY3VsYXRpb25zIGNhbiBiZSBzaW1wbGlmaWVkIHRoaXMgd2F5Lg0KKyAgICAgKi8NCisgICAgDQorICAgIGlmIChpbnB0cltEQ1RTSVpFKjFdID09IDAgJiYgaW5wdHJbRENUU0laRSoyXSA9PSAwICYmDQorCWlucHRyW0RDVFNJWkUqM10gPT0gMCAmJiBpbnB0cltEQ1RTSVpFKjRdID09IDAgJiYNCisJaW5wdHJbRENUU0laRSo1XSA9PSAwICYmIGlucHRyW0RDVFNJWkUqNl0gPT0gMCAmJg0KKwlpbnB0cltEQ1RTSVpFKjddID09IDApIHsNCisgICAgICAvKiBBQyB0ZXJtcyBhbGwgemVybyAqLw0KKyAgICAgIGludCBkY3ZhbCA9IChpbnQpIERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSowXSwgcXVhbnRwdHJbRENUU0laRSowXSk7DQorDQorICAgICAgd3NwdHJbRENUU0laRSowXSA9IGRjdmFsOw0KKyAgICAgIHdzcHRyW0RDVFNJWkUqMV0gPSBkY3ZhbDsNCisgICAgICB3c3B0cltEQ1RTSVpFKjJdID0gZGN2YWw7DQorICAgICAgd3NwdHJbRENUU0laRSozXSA9IGRjdmFsOw0KKyAgICAgIHdzcHRyW0RDVFNJWkUqNF0gPSBkY3ZhbDsNCisgICAgICB3c3B0cltEQ1RTSVpFKjVdID0gZGN2YWw7DQorICAgICAgd3NwdHJbRENUU0laRSo2XSA9IGRjdmFsOw0KKyAgICAgIHdzcHRyW0RDVFNJWkUqN10gPSBkY3ZhbDsNCisgICAgICANCisgICAgICBpbnB0cisrOwkJCS8qIGFkdmFuY2UgcG9pbnRlcnMgdG8gbmV4dCBjb2x1bW4gKi8NCisgICAgICBxdWFudHB0cisrOw0KKyAgICAgIHdzcHRyKys7DQorICAgICAgY29udGludWU7DQorICAgIH0NCisgICAgDQorICAgIC8qIEV2ZW4gcGFydCAqLw0KKw0KKyAgICB0bXAwID0gREVRVUFOVElaRShpbnB0cltEQ1RTSVpFKjBdLCBxdWFudHB0cltEQ1RTSVpFKjBdKTsNCisgICAgdG1wMSA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSoyXSwgcXVhbnRwdHJbRENUU0laRSoyXSk7DQorICAgIHRtcDIgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqNF0sIHF1YW50cHRyW0RDVFNJWkUqNF0pOw0KKyAgICB0bXAzID0gREVRVUFOVElaRShpbnB0cltEQ1RTSVpFKjZdLCBxdWFudHB0cltEQ1RTSVpFKjZdKTsNCisNCisgICAgdG1wMTAgPSB0bXAwICsgdG1wMjsJLyogcGhhc2UgMyAqLw0KKyAgICB0bXAxMSA9IHRtcDAgLSB0bXAyOw0KKw0KKyAgICB0bXAxMyA9IHRtcDEgKyB0bXAzOwkvKiBwaGFzZXMgNS0zICovDQorICAgIHRtcDEyID0gTVVMVElQTFkodG1wMSAtIHRtcDMsIEZJWF8xXzQxNDIxMzU2MikgLSB0bXAxMzsgLyogMipjNCAqLw0KKw0KKyAgICB0bXAwID0gdG1wMTAgKyB0bXAxMzsJLyogcGhhc2UgMiAqLw0KKyAgICB0bXAzID0gdG1wMTAgLSB0bXAxMzsNCisgICAgdG1wMSA9IHRtcDExICsgdG1wMTI7DQorICAgIHRtcDIgPSB0bXAxMSAtIHRtcDEyOw0KKyAgICANCisgICAgLyogT2RkIHBhcnQgKi8NCisNCisgICAgdG1wNCA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSoxXSwgcXVhbnRwdHJbRENUU0laRSoxXSk7DQorICAgIHRtcDUgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqM10sIHF1YW50cHRyW0RDVFNJWkUqM10pOw0KKyAgICB0bXA2ID0gREVRVUFOVElaRShpbnB0cltEQ1RTSVpFKjVdLCBxdWFudHB0cltEQ1RTSVpFKjVdKTsNCisgICAgdG1wNyA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSo3XSwgcXVhbnRwdHJbRENUU0laRSo3XSk7DQorDQorICAgIHoxMyA9IHRtcDYgKyB0bXA1OwkJLyogcGhhc2UgNiAqLw0KKyAgICB6MTAgPSB0bXA2IC0gdG1wNTsNCisgICAgejExID0gdG1wNCArIHRtcDc7DQorICAgIHoxMiA9IHRtcDQgLSB0bXA3Ow0KKw0KKyAgICB0bXA3ID0gejExICsgejEzOwkJLyogcGhhc2UgNSAqLw0KKyAgICB0bXAxMSA9IE1VTFRJUExZKHoxMSAtIHoxMywgRklYXzFfNDE0MjEzNTYyKTsgLyogMipjNCAqLw0KKw0KKyAgICB6NSA9IE1VTFRJUExZKHoxMCArIHoxMiwgRklYXzFfODQ3NzU5MDY1KTsgLyogMipjMiAqLw0KKyAgICB0bXAxMCA9IE1VTFRJUExZKHoxMiwgRklYXzFfMDgyMzkyMjAwKSAtIHo1OyAvKiAyKihjMi1jNikgKi8NCisgICAgdG1wMTIgPSBNVUxUSVBMWSh6MTAsIC0gRklYXzJfNjEzMTI1OTMwKSArIHo1OyAvKiAtMiooYzIrYzYpICovDQorDQorICAgIHRtcDYgPSB0bXAxMiAtIHRtcDc7CS8qIHBoYXNlIDIgKi8NCisgICAgdG1wNSA9IHRtcDExIC0gdG1wNjsNCisgICAgdG1wNCA9IHRtcDEwICsgdG1wNTsNCisNCisgICAgd3NwdHJbRENUU0laRSowXSA9IChpbnQpICh0bXAwICsgdG1wNyk7DQorICAgIHdzcHRyW0RDVFNJWkUqN10gPSAoaW50KSAodG1wMCAtIHRtcDcpOw0KKyAgICB3c3B0cltEQ1RTSVpFKjFdID0gKGludCkgKHRtcDEgKyB0bXA2KTsNCisgICAgd3NwdHJbRENUU0laRSo2XSA9IChpbnQpICh0bXAxIC0gdG1wNik7DQorICAgIHdzcHRyW0RDVFNJWkUqMl0gPSAoaW50KSAodG1wMiArIHRtcDUpOw0KKyAgICB3c3B0cltEQ1RTSVpFKjVdID0gKGludCkgKHRtcDIgLSB0bXA1KTsNCisgICAgd3NwdHJbRENUU0laRSo0XSA9IChpbnQpICh0bXAzICsgdG1wNCk7DQorICAgIHdzcHRyW0RDVFNJWkUqM10gPSAoaW50KSAodG1wMyAtIHRtcDQpOw0KKw0KKyAgICBpbnB0cisrOwkJCS8qIGFkdmFuY2UgcG9pbnRlcnMgdG8gbmV4dCBjb2x1bW4gKi8NCisgICAgcXVhbnRwdHIrKzsNCisgICAgd3NwdHIrKzsNCisgIH0NCisgIA0KKyAgLyogUGFzcyAyOiBwcm9jZXNzIHJvd3MgZnJvbSB3b3JrIGFycmF5LCBzdG9yZSBpbnRvIG91dHB1dCBhcnJheS4gKi8NCisgIC8qIE5vdGUgdGhhdCB3ZSBtdXN0IGRlc2NhbGUgdGhlIHJlc3VsdHMgYnkgYSBmYWN0b3Igb2YgOCA9PSAyKiozLCAqLw0KKyAgLyogYW5kIGFsc28gdW5kbyB0aGUgUEFTUzFfQklUUyBzY2FsaW5nLiAqLw0KKw0KKyAgd3NwdHIgPSB3b3Jrc3BhY2U7DQorICBmb3IgKGN0ciA9IDA7IGN0ciA8IERDVFNJWkU7IGN0cisrKSB7DQorICAgIG91dHB0ciA9IG91dHB1dF9idWZbY3RyXSArIG91dHB1dF9jb2w7DQorICAgIC8qIFJvd3Mgb2YgemVyb2VzIGNhbiBiZSBleHBsb2l0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHdlIGRpZCB3aXRoIGNvbHVtbnMuDQorICAgICAqIEhvd2V2ZXIsIHRoZSBjb2x1bW4gY2FsY3VsYXRpb24gaGFzIGNyZWF0ZWQgbWFueSBub256ZXJvIEFDIHRlcm1zLCBzbw0KKyAgICAgKiB0aGUgc2ltcGxpZmljYXRpb24gYXBwbGllcyBsZXNzIG9mdGVuICh0eXBpY2FsbHkgNSUgdG8gMTAlIG9mIHRoZSB0aW1lKS4NCisgICAgICogT24gbWFjaGluZXMgd2l0aCB2ZXJ5IGZhc3QgbXVsdGlwbGljYXRpb24sIGl0J3MgcG9zc2libGUgdGhhdCB0aGUNCisgICAgICogdGVzdCB0YWtlcyBtb3JlIHRpbWUgdGhhbiBpdCdzIHdvcnRoLiAgSW4gdGhhdCBjYXNlIHRoaXMgc2VjdGlvbg0KKyAgICAgKiBtYXkgYmUgY29tbWVudGVkIG91dC4NCisgICAgICovDQorICAgIA0KKyNpZm5kZWYgTk9fWkVST19ST1dfVEVTVA0KKyAgICBpZiAod3NwdHJbMV0gPT0gMCAmJiB3c3B0clsyXSA9PSAwICYmIHdzcHRyWzNdID09IDAgJiYgd3NwdHJbNF0gPT0gMCAmJg0KKwl3c3B0cls1XSA9PSAwICYmIHdzcHRyWzZdID09IDAgJiYgd3NwdHJbN10gPT0gMCkgew0KKyAgICAgIC8qIEFDIHRlcm1zIGFsbCB6ZXJvICovDQorICAgICAgSlNBTVBMRSBkY3ZhbCA9IHJhbmdlX2xpbWl0W0lERVNDQUxFKHdzcHRyWzBdLCBQQVNTMV9CSVRTKzMpDQorCQkJCSAgJiBSQU5HRV9NQVNLXTsNCisgICAgICANCisgICAgICBvdXRwdHJbMF0gPSBkY3ZhbDsNCisgICAgICBvdXRwdHJbMV0gPSBkY3ZhbDsNCisgICAgICBvdXRwdHJbMl0gPSBkY3ZhbDsNCisgICAgICBvdXRwdHJbM10gPSBkY3ZhbDsNCisgICAgICBvdXRwdHJbNF0gPSBkY3ZhbDsNCisgICAgICBvdXRwdHJbNV0gPSBkY3ZhbDsNCisgICAgICBvdXRwdHJbNl0gPSBkY3ZhbDsNCisgICAgICBvdXRwdHJbN10gPSBkY3ZhbDsNCisNCisgICAgICB3c3B0ciArPSBEQ1RTSVpFOwkJLyogYWR2YW5jZSBwb2ludGVyIHRvIG5leHQgcm93ICovDQorICAgICAgY29udGludWU7DQorICAgIH0NCisjZW5kaWYNCisgICAgDQorICAgIC8qIEV2ZW4gcGFydCAqLw0KKw0KKyAgICB0bXAxMCA9ICgoRENURUxFTSkgd3NwdHJbMF0gKyAoRENURUxFTSkgd3NwdHJbNF0pOw0KKyAgICB0bXAxMSA9ICgoRENURUxFTSkgd3NwdHJbMF0gLSAoRENURUxFTSkgd3NwdHJbNF0pOw0KKw0KKyAgICB0bXAxMyA9ICgoRENURUxFTSkgd3NwdHJbMl0gKyAoRENURUxFTSkgd3NwdHJbNl0pOw0KKyAgICB0bXAxMiA9IE1VTFRJUExZKChEQ1RFTEVNKSB3c3B0clsyXSAtIChEQ1RFTEVNKSB3c3B0cls2XSwgRklYXzFfNDE0MjEzNTYyKQ0KKwkgICAgLSB0bXAxMzsNCisNCisgICAgdG1wMCA9IHRtcDEwICsgdG1wMTM7DQorICAgIHRtcDMgPSB0bXAxMCAtIHRtcDEzOw0KKyAgICB0bXAxID0gdG1wMTEgKyB0bXAxMjsNCisgICAgdG1wMiA9IHRtcDExIC0gdG1wMTI7DQorDQorICAgIC8qIE9kZCBwYXJ0ICovDQorDQorICAgIHoxMyA9IChEQ1RFTEVNKSB3c3B0cls1XSArIChEQ1RFTEVNKSB3c3B0clszXTsNCisgICAgejEwID0gKERDVEVMRU0pIHdzcHRyWzVdIC0gKERDVEVMRU0pIHdzcHRyWzNdOw0KKyAgICB6MTEgPSAoRENURUxFTSkgd3NwdHJbMV0gKyAoRENURUxFTSkgd3NwdHJbN107DQorICAgIHoxMiA9IChEQ1RFTEVNKSB3c3B0clsxXSAtIChEQ1RFTEVNKSB3c3B0cls3XTsNCisNCisgICAgdG1wNyA9IHoxMSArIHoxMzsJCS8qIHBoYXNlIDUgKi8NCisgICAgdG1wMTEgPSBNVUxUSVBMWSh6MTEgLSB6MTMsIEZJWF8xXzQxNDIxMzU2Mik7IC8qIDIqYzQgKi8NCisNCisgICAgejUgPSBNVUxUSVBMWSh6MTAgKyB6MTIsIEZJWF8xXzg0Nzc1OTA2NSk7IC8qIDIqYzIgKi8NCisgICAgdG1wMTAgPSBNVUxUSVBMWSh6MTIsIEZJWF8xXzA4MjM5MjIwMCkgLSB6NTsgLyogMiooYzItYzYpICovDQorICAgIHRtcDEyID0gTVVMVElQTFkoejEwLCAtIEZJWF8yXzYxMzEyNTkzMCkgKyB6NTsgLyogLTIqKGMyK2M2KSAqLw0KKw0KKyAgICB0bXA2ID0gdG1wMTIgLSB0bXA3OwkvKiBwaGFzZSAyICovDQorICAgIHRtcDUgPSB0bXAxMSAtIHRtcDY7DQorICAgIHRtcDQgPSB0bXAxMCArIHRtcDU7DQorDQorICAgIC8qIEZpbmFsIG91dHB1dCBzdGFnZTogc2NhbGUgZG93biBieSBhIGZhY3RvciBvZiA4IGFuZCByYW5nZS1saW1pdCAqLw0KKw0KKyAgICBvdXRwdHJbMF0gPSByYW5nZV9saW1pdFtJREVTQ0FMRSh0bXAwICsgdG1wNywgUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbN10gPSByYW5nZV9saW1pdFtJREVTQ0FMRSh0bXAwIC0gdG1wNywgUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbMV0gPSByYW5nZV9saW1pdFtJREVTQ0FMRSh0bXAxICsgdG1wNiwgUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbNl0gPSByYW5nZV9saW1pdFtJREVTQ0FMRSh0bXAxIC0gdG1wNiwgUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbMl0gPSByYW5nZV9saW1pdFtJREVTQ0FMRSh0bXAyICsgdG1wNSwgUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbNV0gPSByYW5nZV9saW1pdFtJREVTQ0FMRSh0bXAyIC0gdG1wNSwgUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbNF0gPSByYW5nZV9saW1pdFtJREVTQ0FMRSh0bXAzICsgdG1wNCwgUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbM10gPSByYW5nZV9saW1pdFtJREVTQ0FMRSh0bXAzIC0gdG1wNCwgUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKw0KKyAgICB3c3B0ciArPSBEQ1RTSVpFOwkJLyogYWR2YW5jZSBwb2ludGVyIHRvIG5leHQgcm93ICovDQorICB9DQorfQ0KKw0KKyNlbmRpZiAvKiBEQ1RfSUZBU1RfU1VQUE9SVEVEICovDQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamlkY3RpbnQuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2ppZGN0aW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJmNWNjNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2ppZGN0aW50LmMKQEAgLTAsMCArMSwzOTIgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqaWRjdGludC5jDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5OCwgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgYSBzbG93LWJ1dC1hY2N1cmF0ZSBpbnRlZ2VyIGltcGxlbWVudGF0aW9uIG9mIHRoZQ0KKyAqIGludmVyc2UgRENUIChEaXNjcmV0ZSBDb3NpbmUgVHJhbnNmb3JtKS4gIEluIHRoZSBJSkcgY29kZSwgdGhpcyByb3V0aW5lDQorICogbXVzdCBhbHNvIHBlcmZvcm0gZGVxdWFudGl6YXRpb24gb2YgdGhlIGlucHV0IGNvZWZmaWNpZW50cy4NCisgKg0KKyAqIEEgMi1EIElEQ1QgY2FuIGJlIGRvbmUgYnkgMS1EIElEQ1Qgb24gZWFjaCBjb2x1bW4gZm9sbG93ZWQgYnkgMS1EIElEQ1QNCisgKiBvbiBlYWNoIHJvdyAob3IgdmljZSB2ZXJzYSwgYnV0IGl0J3MgbW9yZSBjb252ZW5pZW50IHRvIGVtaXQgYSByb3cgYXQNCisgKiBhIHRpbWUpLiAgRGlyZWN0IGFsZ29yaXRobXMgYXJlIGFsc28gYXZhaWxhYmxlLCBidXQgdGhleSBhcmUgbXVjaCBtb3JlDQorICogY29tcGxleCBhbmQgc2VlbSBub3QgdG8gYmUgYW55IGZhc3RlciB3aGVuIHJlZHVjZWQgdG8gY29kZS4NCisgKg0KKyAqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gYW4gYWxnb3JpdGhtIGRlc2NyaWJlZCBpbg0KKyAqICAgQy4gTG9lZmZsZXIsIEEuIExpZ3RlbmJlcmcgYW5kIEcuIE1vc2NoeXR6LCAiUHJhY3RpY2FsIEZhc3QgMS1EIERDVA0KKyAqICAgQWxnb3JpdGhtcyB3aXRoIDExIE11bHRpcGxpY2F0aW9ucyIsIFByb2MuIEludCdsLiBDb25mLiBvbiBBY291c3RpY3MsDQorICogICBTcGVlY2gsIGFuZCBTaWduYWwgUHJvY2Vzc2luZyAxOTg5IChJQ0FTU1AgJzg5KSwgcHAuIDk4OC05OTEuDQorICogVGhlIHByaW1hcnkgYWxnb3JpdGhtIGRlc2NyaWJlZCB0aGVyZSB1c2VzIDExIG11bHRpcGxpZXMgYW5kIDI5IGFkZHMuDQorICogV2UgdXNlIHRoZWlyIGFsdGVybmF0ZSBtZXRob2Qgd2l0aCAxMiBtdWx0aXBsaWVzIGFuZCAzMiBhZGRzLg0KKyAqIFRoZSBhZHZhbnRhZ2Ugb2YgdGhpcyBtZXRob2QgaXMgdGhhdCBubyBkYXRhIHBhdGggY29udGFpbnMgbW9yZSB0aGFuIG9uZQ0KKyAqIG11bHRpcGxpY2F0aW9uOyB0aGlzIGFsbG93cyBhIHZlcnkgc2ltcGxlIGFuZCBhY2N1cmF0ZSBpbXBsZW1lbnRhdGlvbiBpbg0KKyAqIHNjYWxlZCBmaXhlZC1wb2ludCBhcml0aG1ldGljLCB3aXRoIGEgbWluaW1hbCBudW1iZXIgb2Ygc2hpZnRzLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKyNpbmNsdWRlICJqZGN0LmgiCQkvKiBQcml2YXRlIGRlY2xhcmF0aW9ucyBmb3IgRENUIHN1YnN5c3RlbSAqLw0KKw0KKyNpZmRlZiBEQ1RfSVNMT1dfU1VQUE9SVEVEDQorDQorDQorLyoNCisgKiBUaGlzIG1vZHVsZSBpcyBzcGVjaWFsaXplZCB0byB0aGUgY2FzZSBEQ1RTSVpFID0gOC4NCisgKi8NCisNCisjaWYgRENUU0laRSAhPSA4DQorICBTb3JyeSwgdGhpcyBjb2RlIG9ubHkgY29wZXMgd2l0aCA4eDggRENUcy4gLyogZGVsaWJlcmF0ZSBzeW50YXggZXJyICovDQorI2VuZGlmDQorDQorDQorLyoNCisgKiBUaGUgcG9vcCBvbiB0aGlzIHNjYWxpbmcgc3R1ZmYgaXMgYXMgZm9sbG93czoNCisgKg0KKyAqIEVhY2ggMS1EIElEQ1Qgc3RlcCBwcm9kdWNlcyBvdXRwdXRzIHdoaWNoIGFyZSBhIGZhY3RvciBvZiBzcXJ0KE4pDQorICogbGFyZ2VyIHRoYW4gdGhlIHRydWUgSURDVCBvdXRwdXRzLiAgVGhlIGZpbmFsIG91dHB1dHMgYXJlIHRoZXJlZm9yZQ0KKyAqIGEgZmFjdG9yIG9mIE4gbGFyZ2VyIHRoYW4gZGVzaXJlZDsgc2luY2UgTj04IHRoaXMgY2FuIGJlIGN1cmVkIGJ5DQorICogYSBzaW1wbGUgcmlnaHQgc2hpZnQgYXQgdGhlIGVuZCBvZiB0aGUgYWxnb3JpdGhtLiAgVGhlIGFkdmFudGFnZSBvZg0KKyAqIHRoaXMgYXJyYW5nZW1lbnQgaXMgdGhhdCB3ZSBzYXZlIHR3byBtdWx0aXBsaWNhdGlvbnMgcGVyIDEtRCBJRENULA0KKyAqIGJlY2F1c2UgdGhlIHkwIGFuZCB5NCBpbnB1dHMgbmVlZCBub3QgYmUgZGl2aWRlZCBieSBzcXJ0KE4pLg0KKyAqDQorICogV2UgaGF2ZSB0byBkbyBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gb2YgdGhlIGludGVnZXIgaW5wdXRzLCB3aGljaA0KKyAqIGlzIG5vIHByb2JsZW0sIGFuZCBtdWx0aXBsaWNhdGlvbiBieSBmcmFjdGlvbmFsIGNvbnN0YW50cywgd2hpY2ggaXMNCisgKiBhIHByb2JsZW0gdG8gZG8gaW4gaW50ZWdlciBhcml0aG1ldGljLiAgV2UgbXVsdGlwbHkgYWxsIHRoZSBjb25zdGFudHMNCisgKiBieSBDT05TVF9TQ0FMRSBhbmQgY29udmVydCB0aGVtIHRvIGludGVnZXIgY29uc3RhbnRzICh0aHVzIHJldGFpbmluZw0KKyAqIENPTlNUX0JJVFMgYml0cyBvZiBwcmVjaXNpb24gaW4gdGhlIGNvbnN0YW50cykuICBBZnRlciBkb2luZyBhDQorICogbXVsdGlwbGljYXRpb24gd2UgaGF2ZSB0byBkaXZpZGUgdGhlIHByb2R1Y3QgYnkgQ09OU1RfU0NBTEUsIHdpdGggcHJvcGVyDQorICogcm91bmRpbmcsIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3Qgb3V0cHV0LiAgVGhpcyBkaXZpc2lvbiBjYW4gYmUgZG9uZQ0KKyAqIGNoZWFwbHkgYXMgYSByaWdodCBzaGlmdCBvZiBDT05TVF9CSVRTIGJpdHMuICBXZSBwb3N0cG9uZSBzaGlmdGluZw0KKyAqIGFzIGxvbmcgYXMgcG9zc2libGUgc28gdGhhdCBwYXJ0aWFsIHN1bXMgY2FuIGJlIGFkZGVkIHRvZ2V0aGVyIHdpdGgNCisgKiBmdWxsIGZyYWN0aW9uYWwgcHJlY2lzaW9uLg0KKyAqDQorICogVGhlIG91dHB1dHMgb2YgdGhlIGZpcnN0IHBhc3MgYXJlIHNjYWxlZCB1cCBieSBQQVNTMV9CSVRTIGJpdHMgc28gdGhhdA0KKyAqIHRoZXkgYXJlIHJlcHJlc2VudGVkIHRvIGJldHRlci10aGFuLWludGVncmFsIHByZWNpc2lvbi4gIFRoZXNlIG91dHB1dHMNCisgKiByZXF1aXJlIEJJVFNfSU5fSlNBTVBMRSArIFBBU1MxX0JJVFMgKyAzIGJpdHM7IHRoaXMgZml0cyBpbiBhIDE2LWJpdCB3b3JkDQorICogd2l0aCB0aGUgcmVjb21tZW5kZWQgc2NhbGluZy4gIChUbyBzY2FsZSB1cCAxMi1iaXQgc2FtcGxlIGRhdGEgZnVydGhlciwgYW4NCisgKiBpbnRlcm1lZGlhdGUgSU5UMzIgYXJyYXkgd291bGQgYmUgbmVlZGVkLikNCisgKg0KKyAqIFRvIGF2b2lkIG92ZXJmbG93IG9mIHRoZSAzMi1iaXQgaW50ZXJtZWRpYXRlIHJlc3VsdHMgaW4gcGFzcyAyLCB3ZSBtdXN0DQorICogaGF2ZSBCSVRTX0lOX0pTQU1QTEUgKyBDT05TVF9CSVRTICsgUEFTUzFfQklUUyA8PSAyNi4gIEVycm9yIGFuYWx5c2lzDQorICogc2hvd3MgdGhhdCB0aGUgdmFsdWVzIGdpdmVuIGJlbG93IGFyZSB0aGUgbW9zdCBlZmZlY3RpdmUuDQorICovDQorDQorI2lmIEJJVFNfSU5fSlNBTVBMRSA9PSA4DQorI2RlZmluZSBDT05TVF9CSVRTICAxMw0KKyNkZWZpbmUgUEFTUzFfQklUUyAgMg0KKyNlbHNlDQorI2RlZmluZSBDT05TVF9CSVRTICAxMw0KKyNkZWZpbmUgUEFTUzFfQklUUyAgMQkJLyogbG9zZSBhIGxpdHRsZSBwcmVjaXNpb24gdG8gYXZvaWQgb3ZlcmZsb3cgKi8NCisjZW5kaWYNCisNCisvKiBTb21lIEMgY29tcGlsZXJzIGZhaWwgdG8gcmVkdWNlICJGSVgoY29uc3RhbnQpIiBhdCBjb21waWxlIHRpbWUsIHRodXMNCisgKiBjYXVzaW5nIGEgbG90IG9mIHVzZWxlc3MgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyBhdCBydW4gdGltZS4NCisgKiBUbyBnZXQgYXJvdW5kIHRoaXMgd2UgdXNlIHRoZSBmb2xsb3dpbmcgcHJlLWNhbGN1bGF0ZWQgY29uc3RhbnRzLg0KKyAqIElmIHlvdSBjaGFuZ2UgQ09OU1RfQklUUyB5b3UgbWF5IHdhbnQgdG8gYWRkIGFwcHJvcHJpYXRlIHZhbHVlcy4NCisgKiAoV2l0aCBhIHJlYXNvbmFibGUgQyBjb21waWxlciwgeW91IGNhbiBqdXN0IHJlbHkgb24gdGhlIEZJWCgpIG1hY3JvLi4uKQ0KKyAqLw0KKw0KKyNpZiBDT05TVF9CSVRTID09IDEzDQorI2RlZmluZSBGSVhfMF8yOTg2MzEzMzYgICgoSU5UMzIpICAyNDQ2KQkvKiBGSVgoMC4yOTg2MzEzMzYpICovDQorI2RlZmluZSBGSVhfMF8zOTAxODA2NDQgICgoSU5UMzIpICAzMTk2KQkvKiBGSVgoMC4zOTAxODA2NDQpICovDQorI2RlZmluZSBGSVhfMF81NDExOTYxMDAgICgoSU5UMzIpICA0NDMzKQkvKiBGSVgoMC41NDExOTYxMDApICovDQorI2RlZmluZSBGSVhfMF83NjUzNjY4NjUgICgoSU5UMzIpICA2MjcwKQkvKiBGSVgoMC43NjUzNjY4NjUpICovDQorI2RlZmluZSBGSVhfMF84OTk5NzYyMjMgICgoSU5UMzIpICA3MzczKQkvKiBGSVgoMC44OTk5NzYyMjMpICovDQorI2RlZmluZSBGSVhfMV8xNzU4NzU2MDIgICgoSU5UMzIpICA5NjMzKQkvKiBGSVgoMS4xNzU4NzU2MDIpICovDQorI2RlZmluZSBGSVhfMV81MDEzMjExMTAgICgoSU5UMzIpICAxMjI5OSkJLyogRklYKDEuNTAxMzIxMTEwKSAqLw0KKyNkZWZpbmUgRklYXzFfODQ3NzU5MDY1ICAoKElOVDMyKSAgMTUxMzcpCS8qIEZJWCgxLjg0Nzc1OTA2NSkgKi8NCisjZGVmaW5lIEZJWF8xXzk2MTU3MDU2MCAgKChJTlQzMikgIDE2MDY5KQkvKiBGSVgoMS45NjE1NzA1NjApICovDQorI2RlZmluZSBGSVhfMl8wNTMxMTk4NjkgICgoSU5UMzIpICAxNjgxOSkJLyogRklYKDIuMDUzMTE5ODY5KSAqLw0KKyNkZWZpbmUgRklYXzJfNTYyOTE1NDQ3ICAoKElOVDMyKSAgMjA5OTUpCS8qIEZJWCgyLjU2MjkxNTQ0NykgKi8NCisjZGVmaW5lIEZJWF8zXzA3MjcxMTAyNiAgKChJTlQzMikgIDI1MTcyKQkvKiBGSVgoMy4wNzI3MTEwMjYpICovDQorI2Vsc2UNCisjZGVmaW5lIEZJWF8wXzI5ODYzMTMzNiAgRklYKDAuMjk4NjMxMzM2KQ0KKyNkZWZpbmUgRklYXzBfMzkwMTgwNjQ0ICBGSVgoMC4zOTAxODA2NDQpDQorI2RlZmluZSBGSVhfMF81NDExOTYxMDAgIEZJWCgwLjU0MTE5NjEwMCkNCisjZGVmaW5lIEZJWF8wXzc2NTM2Njg2NSAgRklYKDAuNzY1MzY2ODY1KQ0KKyNkZWZpbmUgRklYXzBfODk5OTc2MjIzICBGSVgoMC44OTk5NzYyMjMpDQorI2RlZmluZSBGSVhfMV8xNzU4NzU2MDIgIEZJWCgxLjE3NTg3NTYwMikNCisjZGVmaW5lIEZJWF8xXzUwMTMyMTExMCAgRklYKDEuNTAxMzIxMTEwKQ0KKyNkZWZpbmUgRklYXzFfODQ3NzU5MDY1ICBGSVgoMS44NDc3NTkwNjUpDQorI2RlZmluZSBGSVhfMV85NjE1NzA1NjAgIEZJWCgxLjk2MTU3MDU2MCkNCisjZGVmaW5lIEZJWF8yXzA1MzExOTg2OSAgRklYKDIuMDUzMTE5ODY5KQ0KKyNkZWZpbmUgRklYXzJfNTYyOTE1NDQ3ICBGSVgoMi41NjI5MTU0NDcpDQorI2RlZmluZSBGSVhfM18wNzI3MTEwMjYgIEZJWCgzLjA3MjcxMTAyNikNCisjZW5kaWYNCisNCisNCisvKiBNdWx0aXBseSBhbiBJTlQzMiB2YXJpYWJsZSBieSBhbiBJTlQzMiBjb25zdGFudCB0byB5aWVsZCBhbiBJTlQzMiByZXN1bHQuDQorICogRm9yIDgtYml0IHNhbXBsZXMgd2l0aCB0aGUgcmVjb21tZW5kZWQgc2NhbGluZywgYWxsIHRoZSB2YXJpYWJsZQ0KKyAqIGFuZCBjb25zdGFudCB2YWx1ZXMgaW52b2x2ZWQgYXJlIG5vIG1vcmUgdGhhbiAxNiBiaXRzIHdpZGUsIHNvIGENCisgKiAxNngxNi0+MzIgYml0IG11bHRpcGx5IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBmdWxsIDMyeDMyIG11bHRpcGx5Lg0KKyAqIEZvciAxMi1iaXQgc2FtcGxlcywgYSBmdWxsIDMyLWJpdCBtdWx0aXBsaWNhdGlvbiB3aWxsIGJlIG5lZWRlZC4NCisgKi8NCisNCisjaWYgQklUU19JTl9KU0FNUExFID09IDgNCisjZGVmaW5lIE1VTFRJUExZKHZhcixjb25zdCkgIE1VTFRJUExZMTZDMTYodmFyLGNvbnN0KQ0KKyNlbHNlDQorI2RlZmluZSBNVUxUSVBMWSh2YXIsY29uc3QpICAoKHZhcikgKiAoY29uc3QpKQ0KKyNlbmRpZg0KKw0KKw0KKy8qIERlcXVhbnRpemUgYSBjb2VmZmljaWVudCBieSBtdWx0aXBseWluZyBpdCBieSB0aGUgbXVsdGlwbGllci10YWJsZQ0KKyAqIGVudHJ5OyBwcm9kdWNlIGFuIGludCByZXN1bHQuICBJbiB0aGlzIG1vZHVsZSwgYm90aCBpbnB1dHMgYW5kIHJlc3VsdA0KKyAqIGFyZSAxNiBiaXRzIG9yIGxlc3MsIHNvIGVpdGhlciBpbnQgb3Igc2hvcnQgbXVsdGlwbHkgd2lsbCB3b3JrLg0KKyAqLw0KKw0KKyNkZWZpbmUgREVRVUFOVElaRShjb2VmLHF1YW50dmFsKSAgKCgoSVNMT1dfTVVMVF9UWVBFKSAoY29lZikpICogKHF1YW50dmFsKSkNCisNCisNCisvKg0KKyAqIFBlcmZvcm0gZGVxdWFudGl6YXRpb24gYW5kIGludmVyc2UgRENUIG9uIG9uZSBibG9jayBvZiBjb2VmZmljaWVudHMuDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19pZGN0X2lzbG93IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0ciwNCisJCSBKQ09FRlBUUiBjb2VmX2Jsb2NrLA0KKwkJIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZiwgSkRJTUVOU0lPTiBvdXRwdXRfY29sKQ0KK3sNCisgIElOVDMyIHRtcDAsIHRtcDEsIHRtcDIsIHRtcDM7DQorICBJTlQzMiB0bXAxMCwgdG1wMTEsIHRtcDEyLCB0bXAxMzsNCisgIElOVDMyIHoxLCB6MiwgejMsIHo0LCB6NTsNCisgIEpDT0VGUFRSIGlucHRyOw0KKyAgSVNMT1dfTVVMVF9UWVBFICogcXVhbnRwdHI7DQorICBpbnQgKiB3c3B0cjsNCisgIEpTQU1QUk9XIG91dHB0cjsNCisgIEpTQU1QTEUgKnJhbmdlX2xpbWl0ID0gSURDVF9yYW5nZV9saW1pdChjaW5mbyk7DQorICBpbnQgY3RyOw0KKyAgaW50IHdvcmtzcGFjZVtEQ1RTSVpFMl07CS8qIGJ1ZmZlcnMgZGF0YSBiZXR3ZWVuIHBhc3NlcyAqLw0KKyAgU0hJRlRfVEVNUFMNCisNCisgIC8qIFBhc3MgMTogcHJvY2VzcyBjb2x1bW5zIGZyb20gaW5wdXQsIHN0b3JlIGludG8gd29yayBhcnJheS4gKi8NCisgIC8qIE5vdGUgcmVzdWx0cyBhcmUgc2NhbGVkIHVwIGJ5IHNxcnQoOCkgY29tcGFyZWQgdG8gYSB0cnVlIElEQ1Q7ICovDQorICAvKiBmdXJ0aGVybW9yZSwgd2Ugc2NhbGUgdGhlIHJlc3VsdHMgYnkgMioqUEFTUzFfQklUUy4gKi8NCisNCisgIGlucHRyID0gY29lZl9ibG9jazsNCisgIHF1YW50cHRyID0gKElTTE9XX01VTFRfVFlQRSAqKSBjb21wcHRyLT5kY3RfdGFibGU7DQorICB3c3B0ciA9IHdvcmtzcGFjZTsNCisgIGZvciAoY3RyID0gRENUU0laRTsgY3RyID4gMDsgY3RyLS0pIHsNCisgICAgLyogRHVlIHRvIHF1YW50aXphdGlvbiwgd2Ugd2lsbCB1c3VhbGx5IGZpbmQgdGhhdCBtYW55IG9mIHRoZSBpbnB1dA0KKyAgICAgKiBjb2VmZmljaWVudHMgYXJlIHplcm8sIGVzcGVjaWFsbHkgdGhlIEFDIHRlcm1zLiAgV2UgY2FuIGV4cGxvaXQgdGhpcw0KKyAgICAgKiBieSBzaG9ydC1jaXJjdWl0aW5nIHRoZSBJRENUIGNhbGN1bGF0aW9uIGZvciBhbnkgY29sdW1uIGluIHdoaWNoIGFsbA0KKyAgICAgKiB0aGUgQUMgdGVybXMgYXJlIHplcm8uICBJbiB0aGF0IGNhc2UgZWFjaCBvdXRwdXQgaXMgZXF1YWwgdG8gdGhlDQorICAgICAqIERDIGNvZWZmaWNpZW50ICh3aXRoIHNjYWxlIGZhY3RvciBhcyBuZWVkZWQpLg0KKyAgICAgKiBXaXRoIHR5cGljYWwgaW1hZ2VzIGFuZCBxdWFudGl6YXRpb24gdGFibGVzLCBoYWxmIG9yIG1vcmUgb2YgdGhlDQorICAgICAqIGNvbHVtbiBEQ1QgY2FsY3VsYXRpb25zIGNhbiBiZSBzaW1wbGlmaWVkIHRoaXMgd2F5Lg0KKyAgICAgKi8NCisgICAgDQorICAgIGlmIChpbnB0cltEQ1RTSVpFKjFdID09IDAgJiYgaW5wdHJbRENUU0laRSoyXSA9PSAwICYmDQorCWlucHRyW0RDVFNJWkUqM10gPT0gMCAmJiBpbnB0cltEQ1RTSVpFKjRdID09IDAgJiYNCisJaW5wdHJbRENUU0laRSo1XSA9PSAwICYmIGlucHRyW0RDVFNJWkUqNl0gPT0gMCAmJg0KKwlpbnB0cltEQ1RTSVpFKjddID09IDApIHsNCisgICAgICAvKiBBQyB0ZXJtcyBhbGwgemVybyAqLw0KKyAgICAgIGludCBkY3ZhbCA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSowXSwgcXVhbnRwdHJbRENUU0laRSowXSkgPDwgUEFTUzFfQklUUzsNCisgICAgICANCisgICAgICB3c3B0cltEQ1RTSVpFKjBdID0gZGN2YWw7DQorICAgICAgd3NwdHJbRENUU0laRSoxXSA9IGRjdmFsOw0KKyAgICAgIHdzcHRyW0RDVFNJWkUqMl0gPSBkY3ZhbDsNCisgICAgICB3c3B0cltEQ1RTSVpFKjNdID0gZGN2YWw7DQorICAgICAgd3NwdHJbRENUU0laRSo0XSA9IGRjdmFsOw0KKyAgICAgIHdzcHRyW0RDVFNJWkUqNV0gPSBkY3ZhbDsNCisgICAgICB3c3B0cltEQ1RTSVpFKjZdID0gZGN2YWw7DQorICAgICAgd3NwdHJbRENUU0laRSo3XSA9IGRjdmFsOw0KKyAgICAgIA0KKyAgICAgIGlucHRyKys7CQkJLyogYWR2YW5jZSBwb2ludGVycyB0byBuZXh0IGNvbHVtbiAqLw0KKyAgICAgIHF1YW50cHRyKys7DQorICAgICAgd3NwdHIrKzsNCisgICAgICBjb250aW51ZTsNCisgICAgfQ0KKyAgICANCisgICAgLyogRXZlbiBwYXJ0OiByZXZlcnNlIHRoZSBldmVuIHBhcnQgb2YgdGhlIGZvcndhcmQgRENULiAqLw0KKyAgICAvKiBUaGUgcm90YXRvciBpcyBzcXJ0KDIpKmMoLTYpLiAqLw0KKyAgICANCisgICAgejIgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqMl0sIHF1YW50cHRyW0RDVFNJWkUqMl0pOw0KKyAgICB6MyA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSo2XSwgcXVhbnRwdHJbRENUU0laRSo2XSk7DQorICAgIA0KKyAgICB6MSA9IE1VTFRJUExZKHoyICsgejMsIEZJWF8wXzU0MTE5NjEwMCk7DQorICAgIHRtcDIgPSB6MSArIE1VTFRJUExZKHozLCAtIEZJWF8xXzg0Nzc1OTA2NSk7DQorICAgIHRtcDMgPSB6MSArIE1VTFRJUExZKHoyLCBGSVhfMF83NjUzNjY4NjUpOw0KKyAgICANCisgICAgejIgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqMF0sIHF1YW50cHRyW0RDVFNJWkUqMF0pOw0KKyAgICB6MyA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSo0XSwgcXVhbnRwdHJbRENUU0laRSo0XSk7DQorDQorICAgIHRtcDAgPSAoejIgKyB6MykgPDwgQ09OU1RfQklUUzsNCisgICAgdG1wMSA9ICh6MiAtIHozKSA8PCBDT05TVF9CSVRTOw0KKyAgICANCisgICAgdG1wMTAgPSB0bXAwICsgdG1wMzsNCisgICAgdG1wMTMgPSB0bXAwIC0gdG1wMzsNCisgICAgdG1wMTEgPSB0bXAxICsgdG1wMjsNCisgICAgdG1wMTIgPSB0bXAxIC0gdG1wMjsNCisgICAgDQorICAgIC8qIE9kZCBwYXJ0IHBlciBmaWd1cmUgODsgdGhlIG1hdHJpeCBpcyB1bml0YXJ5IGFuZCBoZW5jZSBpdHMNCisgICAgICogdHJhbnNwb3NlIGlzIGl0cyBpbnZlcnNlLiAgaTAuLmkzIGFyZSB5Nyx5NSx5Myx5MSByZXNwZWN0aXZlbHkuDQorICAgICAqLw0KKyAgICANCisgICAgdG1wMCA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSo3XSwgcXVhbnRwdHJbRENUU0laRSo3XSk7DQorICAgIHRtcDEgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqNV0sIHF1YW50cHRyW0RDVFNJWkUqNV0pOw0KKyAgICB0bXAyID0gREVRVUFOVElaRShpbnB0cltEQ1RTSVpFKjNdLCBxdWFudHB0cltEQ1RTSVpFKjNdKTsNCisgICAgdG1wMyA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSoxXSwgcXVhbnRwdHJbRENUU0laRSoxXSk7DQorICAgIA0KKyAgICB6MSA9IHRtcDAgKyB0bXAzOw0KKyAgICB6MiA9IHRtcDEgKyB0bXAyOw0KKyAgICB6MyA9IHRtcDAgKyB0bXAyOw0KKyAgICB6NCA9IHRtcDEgKyB0bXAzOw0KKyAgICB6NSA9IE1VTFRJUExZKHozICsgejQsIEZJWF8xXzE3NTg3NTYwMik7IC8qIHNxcnQoMikgKiBjMyAqLw0KKyAgICANCisgICAgdG1wMCA9IE1VTFRJUExZKHRtcDAsIEZJWF8wXzI5ODYzMTMzNik7IC8qIHNxcnQoMikgKiAoLWMxK2MzK2M1LWM3KSAqLw0KKyAgICB0bXAxID0gTVVMVElQTFkodG1wMSwgRklYXzJfMDUzMTE5ODY5KTsgLyogc3FydCgyKSAqICggYzErYzMtYzUrYzcpICovDQorICAgIHRtcDIgPSBNVUxUSVBMWSh0bXAyLCBGSVhfM18wNzI3MTEwMjYpOyAvKiBzcXJ0KDIpICogKCBjMStjMytjNS1jNykgKi8NCisgICAgdG1wMyA9IE1VTFRJUExZKHRtcDMsIEZJWF8xXzUwMTMyMTExMCk7IC8qIHNxcnQoMikgKiAoIGMxK2MzLWM1LWM3KSAqLw0KKyAgICB6MSA9IE1VTFRJUExZKHoxLCAtIEZJWF8wXzg5OTk3NjIyMyk7IC8qIHNxcnQoMikgKiAoYzctYzMpICovDQorICAgIHoyID0gTVVMVElQTFkoejIsIC0gRklYXzJfNTYyOTE1NDQ3KTsgLyogc3FydCgyKSAqICgtYzEtYzMpICovDQorICAgIHozID0gTVVMVElQTFkoejMsIC0gRklYXzFfOTYxNTcwNTYwKTsgLyogc3FydCgyKSAqICgtYzMtYzUpICovDQorICAgIHo0ID0gTVVMVElQTFkoejQsIC0gRklYXzBfMzkwMTgwNjQ0KTsgLyogc3FydCgyKSAqIChjNS1jMykgKi8NCisgICAgDQorICAgIHozICs9IHo1Ow0KKyAgICB6NCArPSB6NTsNCisgICAgDQorICAgIHRtcDAgKz0gejEgKyB6MzsNCisgICAgdG1wMSArPSB6MiArIHo0Ow0KKyAgICB0bXAyICs9IHoyICsgejM7DQorICAgIHRtcDMgKz0gejEgKyB6NDsNCisgICAgDQorICAgIC8qIEZpbmFsIG91dHB1dCBzdGFnZTogaW5wdXRzIGFyZSB0bXAxMC4udG1wMTMsIHRtcDAuLnRtcDMgKi8NCisgICAgDQorICAgIHdzcHRyW0RDVFNJWkUqMF0gPSAoaW50KSBERVNDQUxFKHRtcDEwICsgdG1wMywgQ09OU1RfQklUUy1QQVNTMV9CSVRTKTsNCisgICAgd3NwdHJbRENUU0laRSo3XSA9IChpbnQpIERFU0NBTEUodG1wMTAgLSB0bXAzLCBDT05TVF9CSVRTLVBBU1MxX0JJVFMpOw0KKyAgICB3c3B0cltEQ1RTSVpFKjFdID0gKGludCkgREVTQ0FMRSh0bXAxMSArIHRtcDIsIENPTlNUX0JJVFMtUEFTUzFfQklUUyk7DQorICAgIHdzcHRyW0RDVFNJWkUqNl0gPSAoaW50KSBERVNDQUxFKHRtcDExIC0gdG1wMiwgQ09OU1RfQklUUy1QQVNTMV9CSVRTKTsNCisgICAgd3NwdHJbRENUU0laRSoyXSA9IChpbnQpIERFU0NBTEUodG1wMTIgKyB0bXAxLCBDT05TVF9CSVRTLVBBU1MxX0JJVFMpOw0KKyAgICB3c3B0cltEQ1RTSVpFKjVdID0gKGludCkgREVTQ0FMRSh0bXAxMiAtIHRtcDEsIENPTlNUX0JJVFMtUEFTUzFfQklUUyk7DQorICAgIHdzcHRyW0RDVFNJWkUqM10gPSAoaW50KSBERVNDQUxFKHRtcDEzICsgdG1wMCwgQ09OU1RfQklUUy1QQVNTMV9CSVRTKTsNCisgICAgd3NwdHJbRENUU0laRSo0XSA9IChpbnQpIERFU0NBTEUodG1wMTMgLSB0bXAwLCBDT05TVF9CSVRTLVBBU1MxX0JJVFMpOw0KKyAgICANCisgICAgaW5wdHIrKzsJCQkvKiBhZHZhbmNlIHBvaW50ZXJzIHRvIG5leHQgY29sdW1uICovDQorICAgIHF1YW50cHRyKys7DQorICAgIHdzcHRyKys7DQorICB9DQorICANCisgIC8qIFBhc3MgMjogcHJvY2VzcyByb3dzIGZyb20gd29yayBhcnJheSwgc3RvcmUgaW50byBvdXRwdXQgYXJyYXkuICovDQorICAvKiBOb3RlIHRoYXQgd2UgbXVzdCBkZXNjYWxlIHRoZSByZXN1bHRzIGJ5IGEgZmFjdG9yIG9mIDggPT0gMioqMywgKi8NCisgIC8qIGFuZCBhbHNvIHVuZG8gdGhlIFBBU1MxX0JJVFMgc2NhbGluZy4gKi8NCisNCisgIHdzcHRyID0gd29ya3NwYWNlOw0KKyAgZm9yIChjdHIgPSAwOyBjdHIgPCBEQ1RTSVpFOyBjdHIrKykgew0KKyAgICBvdXRwdHIgPSBvdXRwdXRfYnVmW2N0cl0gKyBvdXRwdXRfY29sOw0KKyAgICAvKiBSb3dzIG9mIHplcm9lcyBjYW4gYmUgZXhwbG9pdGVkIGluIHRoZSBzYW1lIHdheSBhcyB3ZSBkaWQgd2l0aCBjb2x1bW5zLg0KKyAgICAgKiBIb3dldmVyLCB0aGUgY29sdW1uIGNhbGN1bGF0aW9uIGhhcyBjcmVhdGVkIG1hbnkgbm9uemVybyBBQyB0ZXJtcywgc28NCisgICAgICogdGhlIHNpbXBsaWZpY2F0aW9uIGFwcGxpZXMgbGVzcyBvZnRlbiAodHlwaWNhbGx5IDUlIHRvIDEwJSBvZiB0aGUgdGltZSkuDQorICAgICAqIE9uIG1hY2hpbmVzIHdpdGggdmVyeSBmYXN0IG11bHRpcGxpY2F0aW9uLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlDQorICAgICAqIHRlc3QgdGFrZXMgbW9yZSB0aW1lIHRoYW4gaXQncyB3b3J0aC4gIEluIHRoYXQgY2FzZSB0aGlzIHNlY3Rpb24NCisgICAgICogbWF5IGJlIGNvbW1lbnRlZCBvdXQuDQorICAgICAqLw0KKyAgICANCisjaWZuZGVmIE5PX1pFUk9fUk9XX1RFU1QNCisgICAgaWYgKHdzcHRyWzFdID09IDAgJiYgd3NwdHJbMl0gPT0gMCAmJiB3c3B0clszXSA9PSAwICYmIHdzcHRyWzRdID09IDAgJiYNCisJd3NwdHJbNV0gPT0gMCAmJiB3c3B0cls2XSA9PSAwICYmIHdzcHRyWzddID09IDApIHsNCisgICAgICAvKiBBQyB0ZXJtcyBhbGwgemVybyAqLw0KKyAgICAgIEpTQU1QTEUgZGN2YWwgPSByYW5nZV9saW1pdFsoaW50KSBERVNDQUxFKChJTlQzMikgd3NwdHJbMF0sIFBBU1MxX0JJVFMrMykNCisJCQkJICAmIFJBTkdFX01BU0tdOw0KKyAgICAgIA0KKyAgICAgIG91dHB0clswXSA9IGRjdmFsOw0KKyAgICAgIG91dHB0clsxXSA9IGRjdmFsOw0KKyAgICAgIG91dHB0clsyXSA9IGRjdmFsOw0KKyAgICAgIG91dHB0clszXSA9IGRjdmFsOw0KKyAgICAgIG91dHB0cls0XSA9IGRjdmFsOw0KKyAgICAgIG91dHB0cls1XSA9IGRjdmFsOw0KKyAgICAgIG91dHB0cls2XSA9IGRjdmFsOw0KKyAgICAgIG91dHB0cls3XSA9IGRjdmFsOw0KKw0KKyAgICAgIHdzcHRyICs9IERDVFNJWkU7CQkvKiBhZHZhbmNlIHBvaW50ZXIgdG8gbmV4dCByb3cgKi8NCisgICAgICBjb250aW51ZTsNCisgICAgfQ0KKyNlbmRpZg0KKyAgICANCisgICAgLyogRXZlbiBwYXJ0OiByZXZlcnNlIHRoZSBldmVuIHBhcnQgb2YgdGhlIGZvcndhcmQgRENULiAqLw0KKyAgICAvKiBUaGUgcm90YXRvciBpcyBzcXJ0KDIpKmMoLTYpLiAqLw0KKyAgICANCisgICAgejIgPSAoSU5UMzIpIHdzcHRyWzJdOw0KKyAgICB6MyA9IChJTlQzMikgd3NwdHJbNl07DQorICAgIA0KKyAgICB6MSA9IE1VTFRJUExZKHoyICsgejMsIEZJWF8wXzU0MTE5NjEwMCk7DQorICAgIHRtcDIgPSB6MSArIE1VTFRJUExZKHozLCAtIEZJWF8xXzg0Nzc1OTA2NSk7DQorICAgIHRtcDMgPSB6MSArIE1VTFRJUExZKHoyLCBGSVhfMF83NjUzNjY4NjUpOw0KKyAgICANCisgICAgdG1wMCA9ICgoSU5UMzIpIHdzcHRyWzBdICsgKElOVDMyKSB3c3B0cls0XSkgPDwgQ09OU1RfQklUUzsNCisgICAgdG1wMSA9ICgoSU5UMzIpIHdzcHRyWzBdIC0gKElOVDMyKSB3c3B0cls0XSkgPDwgQ09OU1RfQklUUzsNCisgICAgDQorICAgIHRtcDEwID0gdG1wMCArIHRtcDM7DQorICAgIHRtcDEzID0gdG1wMCAtIHRtcDM7DQorICAgIHRtcDExID0gdG1wMSArIHRtcDI7DQorICAgIHRtcDEyID0gdG1wMSAtIHRtcDI7DQorICAgIA0KKyAgICAvKiBPZGQgcGFydCBwZXIgZmlndXJlIDg7IHRoZSBtYXRyaXggaXMgdW5pdGFyeSBhbmQgaGVuY2UgaXRzDQorICAgICAqIHRyYW5zcG9zZSBpcyBpdHMgaW52ZXJzZS4gIGkwLi5pMyBhcmUgeTcseTUseTMseTEgcmVzcGVjdGl2ZWx5Lg0KKyAgICAgKi8NCisgICAgDQorICAgIHRtcDAgPSAoSU5UMzIpIHdzcHRyWzddOw0KKyAgICB0bXAxID0gKElOVDMyKSB3c3B0cls1XTsNCisgICAgdG1wMiA9IChJTlQzMikgd3NwdHJbM107DQorICAgIHRtcDMgPSAoSU5UMzIpIHdzcHRyWzFdOw0KKyAgICANCisgICAgejEgPSB0bXAwICsgdG1wMzsNCisgICAgejIgPSB0bXAxICsgdG1wMjsNCisgICAgejMgPSB0bXAwICsgdG1wMjsNCisgICAgejQgPSB0bXAxICsgdG1wMzsNCisgICAgejUgPSBNVUxUSVBMWSh6MyArIHo0LCBGSVhfMV8xNzU4NzU2MDIpOyAvKiBzcXJ0KDIpICogYzMgKi8NCisgICAgDQorICAgIHRtcDAgPSBNVUxUSVBMWSh0bXAwLCBGSVhfMF8yOTg2MzEzMzYpOyAvKiBzcXJ0KDIpICogKC1jMStjMytjNS1jNykgKi8NCisgICAgdG1wMSA9IE1VTFRJUExZKHRtcDEsIEZJWF8yXzA1MzExOTg2OSk7IC8qIHNxcnQoMikgKiAoIGMxK2MzLWM1K2M3KSAqLw0KKyAgICB0bXAyID0gTVVMVElQTFkodG1wMiwgRklYXzNfMDcyNzExMDI2KTsgLyogc3FydCgyKSAqICggYzErYzMrYzUtYzcpICovDQorICAgIHRtcDMgPSBNVUxUSVBMWSh0bXAzLCBGSVhfMV81MDEzMjExMTApOyAvKiBzcXJ0KDIpICogKCBjMStjMy1jNS1jNykgKi8NCisgICAgejEgPSBNVUxUSVBMWSh6MSwgLSBGSVhfMF84OTk5NzYyMjMpOyAvKiBzcXJ0KDIpICogKGM3LWMzKSAqLw0KKyAgICB6MiA9IE1VTFRJUExZKHoyLCAtIEZJWF8yXzU2MjkxNTQ0Nyk7IC8qIHNxcnQoMikgKiAoLWMxLWMzKSAqLw0KKyAgICB6MyA9IE1VTFRJUExZKHozLCAtIEZJWF8xXzk2MTU3MDU2MCk7IC8qIHNxcnQoMikgKiAoLWMzLWM1KSAqLw0KKyAgICB6NCA9IE1VTFRJUExZKHo0LCAtIEZJWF8wXzM5MDE4MDY0NCk7IC8qIHNxcnQoMikgKiAoYzUtYzMpICovDQorICAgIA0KKyAgICB6MyArPSB6NTsNCisgICAgejQgKz0gejU7DQorICAgIA0KKyAgICB0bXAwICs9IHoxICsgejM7DQorICAgIHRtcDEgKz0gejIgKyB6NDsNCisgICAgdG1wMiArPSB6MiArIHozOw0KKyAgICB0bXAzICs9IHoxICsgejQ7DQorICAgIA0KKyAgICAvKiBGaW5hbCBvdXRwdXQgc3RhZ2U6IGlucHV0cyBhcmUgdG1wMTAuLnRtcDEzLCB0bXAwLi50bXAzICovDQorICAgIA0KKyAgICBvdXRwdHJbMF0gPSByYW5nZV9saW1pdFsoaW50KSBERVNDQUxFKHRtcDEwICsgdG1wMywNCisJCQkJCSAgQ09OU1RfQklUUytQQVNTMV9CSVRTKzMpDQorCQkJICAgICYgUkFOR0VfTUFTS107DQorICAgIG91dHB0cls3XSA9IHJhbmdlX2xpbWl0WyhpbnQpIERFU0NBTEUodG1wMTAgLSB0bXAzLA0KKwkJCQkJICBDT05TVF9CSVRTK1BBU1MxX0JJVFMrMykNCisJCQkgICAgJiBSQU5HRV9NQVNLXTsNCisgICAgb3V0cHRyWzFdID0gcmFuZ2VfbGltaXRbKGludCkgREVTQ0FMRSh0bXAxMSArIHRtcDIsDQorCQkJCQkgIENPTlNUX0JJVFMrUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbNl0gPSByYW5nZV9saW1pdFsoaW50KSBERVNDQUxFKHRtcDExIC0gdG1wMiwNCisJCQkJCSAgQ09OU1RfQklUUytQQVNTMV9CSVRTKzMpDQorCQkJICAgICYgUkFOR0VfTUFTS107DQorICAgIG91dHB0clsyXSA9IHJhbmdlX2xpbWl0WyhpbnQpIERFU0NBTEUodG1wMTIgKyB0bXAxLA0KKwkJCQkJICBDT05TVF9CSVRTK1BBU1MxX0JJVFMrMykNCisJCQkgICAgJiBSQU5HRV9NQVNLXTsNCisgICAgb3V0cHRyWzVdID0gcmFuZ2VfbGltaXRbKGludCkgREVTQ0FMRSh0bXAxMiAtIHRtcDEsDQorCQkJCQkgIENPTlNUX0JJVFMrUEFTUzFfQklUUyszKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbM10gPSByYW5nZV9saW1pdFsoaW50KSBERVNDQUxFKHRtcDEzICsgdG1wMCwNCisJCQkJCSAgQ09OU1RfQklUUytQQVNTMV9CSVRTKzMpDQorCQkJICAgICYgUkFOR0VfTUFTS107DQorICAgIG91dHB0cls0XSA9IHJhbmdlX2xpbWl0WyhpbnQpIERFU0NBTEUodG1wMTMgLSB0bXAwLA0KKwkJCQkJICBDT05TVF9CSVRTK1BBU1MxX0JJVFMrMykNCisJCQkgICAgJiBSQU5HRV9NQVNLXTsNCisgICAgDQorICAgIHdzcHRyICs9IERDVFNJWkU7CQkvKiBhZHZhbmNlIHBvaW50ZXIgdG8gbmV4dCByb3cgKi8NCisgIH0NCit9DQorDQorI2VuZGlmIC8qIERDVF9JU0xPV19TVVBQT1JURUQgKi8NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qaWRjdHJlZC5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamlkY3RyZWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWIxZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfamlkY3RyZWQuYwpAQCAtMCwwICsxLDQwMSBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGppZGN0cmVkLmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk4LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyBpbnZlcnNlLURDVCByb3V0aW5lcyB0aGF0IHByb2R1Y2UgcmVkdWNlZC1zaXplIG91dHB1dDoNCisgKiBlaXRoZXIgNHg0LCAyeDIsIG9yIDF4MSBwaXhlbHMgZnJvbSBhbiA4eDggRENUIGJsb2NrLg0KKyAqDQorICogVGhlIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBMb2VmZmxlciwgTGlndGVuYmVyZyBhbmQgTW9zY2h5dHogKExMJk0pDQorICogYWxnb3JpdGhtIHVzZWQgaW4gamlkY3RpbnQuYy4gIFdlIHNpbXBseSByZXBsYWNlIGVhY2ggOC10by04IDEtRCBJRENUIHN0ZXANCisgKiB3aXRoIGFuIDgtdG8tNCBzdGVwIHRoYXQgcHJvZHVjZXMgdGhlIGZvdXIgYXZlcmFnZXMgb2YgdHdvIGFkamFjZW50IG91dHB1dHMNCisgKiAob3IgYW4gOC10by0yIHN0ZXAgcHJvZHVjaW5nIHR3byBhdmVyYWdlcyBvZiBmb3VyIG91dHB1dHMsIGZvciAyeDIgb3V0cHV0KS4NCisgKiBUaGVzZSBzdGVwcyB3ZXJlIGRlcml2ZWQgYnkgY29tcHV0aW5nIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBhdCB0aGUgZW5kDQorICogb2YgdGhlIG5vcm1hbCBMTCZNIGNvZGUsIHRoZW4gc2ltcGxpZnlpbmcgYXMgbXVjaCBhcyBwb3NzaWJsZS4NCisgKg0KKyAqIDF4MSBpcyB0cml2aWFsOiBqdXN0IHRha2UgdGhlIERDIGNvZWZmaWNpZW50IGRpdmlkZWQgYnkgOC4NCisgKg0KKyAqIFNlZSBqaWRjdGludC5jIGZvciBhZGRpdGlvbmFsIGNvbW1lbnRzLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKyNpbmNsdWRlICJqZGN0LmgiCQkvKiBQcml2YXRlIGRlY2xhcmF0aW9ucyBmb3IgRENUIHN1YnN5c3RlbSAqLw0KKw0KKyNpZmRlZiBJRENUX1NDQUxJTkdfU1VQUE9SVEVEDQorDQorDQorLyoNCisgKiBUaGlzIG1vZHVsZSBpcyBzcGVjaWFsaXplZCB0byB0aGUgY2FzZSBEQ1RTSVpFID0gOC4NCisgKi8NCisNCisjaWYgRENUU0laRSAhPSA4DQorICBTb3JyeSwgdGhpcyBjb2RlIG9ubHkgY29wZXMgd2l0aCA4eDggRENUcy4gLyogZGVsaWJlcmF0ZSBzeW50YXggZXJyICovDQorI2VuZGlmDQorDQorDQorLyogU2NhbGluZyBpcyB0aGUgc2FtZSBhcyBpbiBqaWRjdGludC5jLiAqLw0KKw0KKyNpZiBCSVRTX0lOX0pTQU1QTEUgPT0gOA0KKyNkZWZpbmUgQ09OU1RfQklUUyAgMTMNCisjZGVmaW5lIFBBU1MxX0JJVFMgIDINCisjZWxzZQ0KKyNkZWZpbmUgQ09OU1RfQklUUyAgMTMNCisjZGVmaW5lIFBBU1MxX0JJVFMgIDEJCS8qIGxvc2UgYSBsaXR0bGUgcHJlY2lzaW9uIHRvIGF2b2lkIG92ZXJmbG93ICovDQorI2VuZGlmDQorDQorLyogU29tZSBDIGNvbXBpbGVycyBmYWlsIHRvIHJlZHVjZSAiRklYKGNvbnN0YW50KSIgYXQgY29tcGlsZSB0aW1lLCB0aHVzDQorICogY2F1c2luZyBhIGxvdCBvZiB1c2VsZXNzIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgYXQgcnVuIHRpbWUuDQorICogVG8gZ2V0IGFyb3VuZCB0aGlzIHdlIHVzZSB0aGUgZm9sbG93aW5nIHByZS1jYWxjdWxhdGVkIGNvbnN0YW50cy4NCisgKiBJZiB5b3UgY2hhbmdlIENPTlNUX0JJVFMgeW91IG1heSB3YW50IHRvIGFkZCBhcHByb3ByaWF0ZSB2YWx1ZXMuDQorICogKFdpdGggYSByZWFzb25hYmxlIEMgY29tcGlsZXIsIHlvdSBjYW4ganVzdCByZWx5IG9uIHRoZSBGSVgoKSBtYWNyby4uLikNCisgKi8NCisNCisjaWYgQ09OU1RfQklUUyA9PSAxMw0KKyNkZWZpbmUgRklYXzBfMjExMTY0MjQzICAoKElOVDMyKSAgMTczMCkJLyogRklYKDAuMjExMTY0MjQzKSAqLw0KKyNkZWZpbmUgRklYXzBfNTA5Nzk1NTc5ICAoKElOVDMyKSAgNDE3NikJLyogRklYKDAuNTA5Nzk1NTc5KSAqLw0KKyNkZWZpbmUgRklYXzBfNjAxMzQ0ODg3ICAoKElOVDMyKSAgNDkyNikJLyogRklYKDAuNjAxMzQ0ODg3KSAqLw0KKyNkZWZpbmUgRklYXzBfNzIwOTU5ODIyICAoKElOVDMyKSAgNTkwNikJLyogRklYKDAuNzIwOTU5ODIyKSAqLw0KKyNkZWZpbmUgRklYXzBfNzY1MzY2ODY1ICAoKElOVDMyKSAgNjI3MCkJLyogRklYKDAuNzY1MzY2ODY1KSAqLw0KKyNkZWZpbmUgRklYXzBfODUwNDMwMDk1ICAoKElOVDMyKSAgNjk2NykJLyogRklYKDAuODUwNDMwMDk1KSAqLw0KKyNkZWZpbmUgRklYXzBfODk5OTc2MjIzICAoKElOVDMyKSAgNzM3MykJLyogRklYKDAuODk5OTc2MjIzKSAqLw0KKyNkZWZpbmUgRklYXzFfMDYxNTk0MzM3ICAoKElOVDMyKSAgODY5NykJLyogRklYKDEuMDYxNTk0MzM3KSAqLw0KKyNkZWZpbmUgRklYXzFfMjcyNzU4NTgwICAoKElOVDMyKSAgMTA0MjYpCS8qIEZJWCgxLjI3Mjc1ODU4MCkgKi8NCisjZGVmaW5lIEZJWF8xXzQ1MTc3NDk4MSAgKChJTlQzMikgIDExODkzKQkvKiBGSVgoMS40NTE3NzQ5ODEpICovDQorI2RlZmluZSBGSVhfMV84NDc3NTkwNjUgICgoSU5UMzIpICAxNTEzNykJLyogRklYKDEuODQ3NzU5MDY1KSAqLw0KKyNkZWZpbmUgRklYXzJfMTcyNzM0ODAzICAoKElOVDMyKSAgMTc3OTkpCS8qIEZJWCgyLjE3MjczNDgwMykgKi8NCisjZGVmaW5lIEZJWF8yXzU2MjkxNTQ0NyAgKChJTlQzMikgIDIwOTk1KQkvKiBGSVgoMi41NjI5MTU0NDcpICovDQorI2RlZmluZSBGSVhfM182MjQ1MDk3ODUgICgoSU5UMzIpICAyOTY5MikJLyogRklYKDMuNjI0NTA5Nzg1KSAqLw0KKyNlbHNlDQorI2RlZmluZSBGSVhfMF8yMTExNjQyNDMgIEZJWCgwLjIxMTE2NDI0MykNCisjZGVmaW5lIEZJWF8wXzUwOTc5NTU3OSAgRklYKDAuNTA5Nzk1NTc5KQ0KKyNkZWZpbmUgRklYXzBfNjAxMzQ0ODg3ICBGSVgoMC42MDEzNDQ4ODcpDQorI2RlZmluZSBGSVhfMF83MjA5NTk4MjIgIEZJWCgwLjcyMDk1OTgyMikNCisjZGVmaW5lIEZJWF8wXzc2NTM2Njg2NSAgRklYKDAuNzY1MzY2ODY1KQ0KKyNkZWZpbmUgRklYXzBfODUwNDMwMDk1ICBGSVgoMC44NTA0MzAwOTUpDQorI2RlZmluZSBGSVhfMF84OTk5NzYyMjMgIEZJWCgwLjg5OTk3NjIyMykNCisjZGVmaW5lIEZJWF8xXzA2MTU5NDMzNyAgRklYKDEuMDYxNTk0MzM3KQ0KKyNkZWZpbmUgRklYXzFfMjcyNzU4NTgwICBGSVgoMS4yNzI3NTg1ODApDQorI2RlZmluZSBGSVhfMV80NTE3NzQ5ODEgIEZJWCgxLjQ1MTc3NDk4MSkNCisjZGVmaW5lIEZJWF8xXzg0Nzc1OTA2NSAgRklYKDEuODQ3NzU5MDY1KQ0KKyNkZWZpbmUgRklYXzJfMTcyNzM0ODAzICBGSVgoMi4xNzI3MzQ4MDMpDQorI2RlZmluZSBGSVhfMl81NjI5MTU0NDcgIEZJWCgyLjU2MjkxNTQ0NykNCisjZGVmaW5lIEZJWF8zXzYyNDUwOTc4NSAgRklYKDMuNjI0NTA5Nzg1KQ0KKyNlbmRpZg0KKw0KKw0KKy8qIE11bHRpcGx5IGFuIElOVDMyIHZhcmlhYmxlIGJ5IGFuIElOVDMyIGNvbnN0YW50IHRvIHlpZWxkIGFuIElOVDMyIHJlc3VsdC4NCisgKiBGb3IgOC1iaXQgc2FtcGxlcyB3aXRoIHRoZSByZWNvbW1lbmRlZCBzY2FsaW5nLCBhbGwgdGhlIHZhcmlhYmxlDQorICogYW5kIGNvbnN0YW50IHZhbHVlcyBpbnZvbHZlZCBhcmUgbm8gbW9yZSB0aGFuIDE2IGJpdHMgd2lkZSwgc28gYQ0KKyAqIDE2eDE2LT4zMiBiaXQgbXVsdGlwbHkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBhIGZ1bGwgMzJ4MzIgbXVsdGlwbHkuDQorICogRm9yIDEyLWJpdCBzYW1wbGVzLCBhIGZ1bGwgMzItYml0IG11bHRpcGxpY2F0aW9uIHdpbGwgYmUgbmVlZGVkLg0KKyAqLw0KKw0KKyNpZiBCSVRTX0lOX0pTQU1QTEUgPT0gOA0KKyNkZWZpbmUgTVVMVElQTFkodmFyLGNvbnN0KSAgTVVMVElQTFkxNkMxNih2YXIsY29uc3QpDQorI2Vsc2UNCisjZGVmaW5lIE1VTFRJUExZKHZhcixjb25zdCkgICgodmFyKSAqIChjb25zdCkpDQorI2VuZGlmDQorDQorDQorLyogRGVxdWFudGl6ZSBhIGNvZWZmaWNpZW50IGJ5IG11bHRpcGx5aW5nIGl0IGJ5IHRoZSBtdWx0aXBsaWVyLXRhYmxlDQorICogZW50cnk7IHByb2R1Y2UgYW4gaW50IHJlc3VsdC4gIEluIHRoaXMgbW9kdWxlLCBib3RoIGlucHV0cyBhbmQgcmVzdWx0DQorICogYXJlIDE2IGJpdHMgb3IgbGVzcywgc28gZWl0aGVyIGludCBvciBzaG9ydCBtdWx0aXBseSB3aWxsIHdvcmsuDQorICovDQorDQorI2RlZmluZSBERVFVQU5USVpFKGNvZWYscXVhbnR2YWwpICAoKChJU0xPV19NVUxUX1RZUEUpIChjb2VmKSkgKiAocXVhbnR2YWwpKQ0KKw0KKw0KKy8qDQorICogUGVyZm9ybSBkZXF1YW50aXphdGlvbiBhbmQgaW52ZXJzZSBEQ1Qgb24gb25lIGJsb2NrIG9mIGNvZWZmaWNpZW50cywNCisgKiBwcm9kdWNpbmcgYSByZWR1Y2VkLXNpemUgNHg0IG91dHB1dCBibG9jay4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqcGVnX2lkY3RfNHg0IChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0ciwNCisJICAgICAgIEpDT0VGUFRSIGNvZWZfYmxvY2ssDQorCSAgICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gb3V0cHV0X2NvbCkNCit7DQorICBJTlQzMiB0bXAwLCB0bXAyLCB0bXAxMCwgdG1wMTI7DQorICBJTlQzMiB6MSwgejIsIHozLCB6NDsNCisgIEpDT0VGUFRSIGlucHRyOw0KKyAgSVNMT1dfTVVMVF9UWVBFICogcXVhbnRwdHI7DQorICBpbnQgKiB3c3B0cjsNCisgIEpTQU1QUk9XIG91dHB0cjsNCisgIEpTQU1QTEUgKnJhbmdlX2xpbWl0ID0gSURDVF9yYW5nZV9saW1pdChjaW5mbyk7DQorICBpbnQgY3RyOw0KKyAgaW50IHdvcmtzcGFjZVtEQ1RTSVpFKjRdOwkvKiBidWZmZXJzIGRhdGEgYmV0d2VlbiBwYXNzZXMgKi8NCisgIFNISUZUX1RFTVBTDQorDQorICAvKiBQYXNzIDE6IHByb2Nlc3MgY29sdW1ucyBmcm9tIGlucHV0LCBzdG9yZSBpbnRvIHdvcmsgYXJyYXkuICovDQorDQorICBpbnB0ciA9IGNvZWZfYmxvY2s7DQorICBxdWFudHB0ciA9IChJU0xPV19NVUxUX1RZUEUgKikgY29tcHB0ci0+ZGN0X3RhYmxlOw0KKyAgd3NwdHIgPSB3b3Jrc3BhY2U7DQorICBmb3IgKGN0ciA9IERDVFNJWkU7IGN0ciA+IDA7IGlucHRyKyssIHF1YW50cHRyKyssIHdzcHRyKyssIGN0ci0tKSB7DQorICAgIC8qIERvbid0IGJvdGhlciB0byBwcm9jZXNzIGNvbHVtbiA0LCBiZWNhdXNlIHNlY29uZCBwYXNzIHdvbid0IHVzZSBpdCAqLw0KKyAgICBpZiAoY3RyID09IERDVFNJWkUtNCkNCisgICAgICBjb250aW51ZTsNCisgICAgaWYgKGlucHRyW0RDVFNJWkUqMV0gPT0gMCAmJiBpbnB0cltEQ1RTSVpFKjJdID09IDAgJiYNCisJaW5wdHJbRENUU0laRSozXSA9PSAwICYmIGlucHRyW0RDVFNJWkUqNV0gPT0gMCAmJg0KKwlpbnB0cltEQ1RTSVpFKjZdID09IDAgJiYgaW5wdHJbRENUU0laRSo3XSA9PSAwKSB7DQorICAgICAgLyogQUMgdGVybXMgYWxsIHplcm87IHdlIG5lZWQgbm90IGV4YW1pbmUgdGVybSA0IGZvciA0eDQgb3V0cHV0ICovDQorICAgICAgaW50IGRjdmFsID0gREVRVUFOVElaRShpbnB0cltEQ1RTSVpFKjBdLCBxdWFudHB0cltEQ1RTSVpFKjBdKSA8PCBQQVNTMV9CSVRTOw0KKyAgICAgIA0KKyAgICAgIHdzcHRyW0RDVFNJWkUqMF0gPSBkY3ZhbDsNCisgICAgICB3c3B0cltEQ1RTSVpFKjFdID0gZGN2YWw7DQorICAgICAgd3NwdHJbRENUU0laRSoyXSA9IGRjdmFsOw0KKyAgICAgIHdzcHRyW0RDVFNJWkUqM10gPSBkY3ZhbDsNCisgICAgICANCisgICAgICBjb250aW51ZTsNCisgICAgfQ0KKyAgICANCisgICAgLyogRXZlbiBwYXJ0ICovDQorICAgIA0KKyAgICB0bXAwID0gREVRVUFOVElaRShpbnB0cltEQ1RTSVpFKjBdLCBxdWFudHB0cltEQ1RTSVpFKjBdKTsNCisgICAgdG1wMCA8PD0gKENPTlNUX0JJVFMrMSk7DQorICAgIA0KKyAgICB6MiA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSoyXSwgcXVhbnRwdHJbRENUU0laRSoyXSk7DQorICAgIHozID0gREVRVUFOVElaRShpbnB0cltEQ1RTSVpFKjZdLCBxdWFudHB0cltEQ1RTSVpFKjZdKTsNCisNCisgICAgdG1wMiA9IE1VTFRJUExZKHoyLCBGSVhfMV84NDc3NTkwNjUpICsgTVVMVElQTFkoejMsIC0gRklYXzBfNzY1MzY2ODY1KTsNCisgICAgDQorICAgIHRtcDEwID0gdG1wMCArIHRtcDI7DQorICAgIHRtcDEyID0gdG1wMCAtIHRtcDI7DQorICAgIA0KKyAgICAvKiBPZGQgcGFydCAqLw0KKyAgICANCisgICAgejEgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqN10sIHF1YW50cHRyW0RDVFNJWkUqN10pOw0KKyAgICB6MiA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSo1XSwgcXVhbnRwdHJbRENUU0laRSo1XSk7DQorICAgIHozID0gREVRVUFOVElaRShpbnB0cltEQ1RTSVpFKjNdLCBxdWFudHB0cltEQ1RTSVpFKjNdKTsNCisgICAgejQgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqMV0sIHF1YW50cHRyW0RDVFNJWkUqMV0pOw0KKyAgICANCisgICAgdG1wMCA9IE1VTFRJUExZKHoxLCAtIEZJWF8wXzIxMTE2NDI0MykgLyogc3FydCgyKSAqIChjMy1jMSkgKi8NCisJICsgTVVMVElQTFkoejIsIEZJWF8xXzQ1MTc3NDk4MSkgLyogc3FydCgyKSAqIChjMytjNykgKi8NCisJICsgTVVMVElQTFkoejMsIC0gRklYXzJfMTcyNzM0ODAzKSAvKiBzcXJ0KDIpICogKC1jMS1jNSkgKi8NCisJICsgTVVMVElQTFkoejQsIEZJWF8xXzA2MTU5NDMzNyk7IC8qIHNxcnQoMikgKiAoYzUrYzcpICovDQorICAgIA0KKyAgICB0bXAyID0gTVVMVElQTFkoejEsIC0gRklYXzBfNTA5Nzk1NTc5KSAvKiBzcXJ0KDIpICogKGM3LWM1KSAqLw0KKwkgKyBNVUxUSVBMWSh6MiwgLSBGSVhfMF82MDEzNDQ4ODcpIC8qIHNxcnQoMikgKiAoYzUtYzEpICovDQorCSArIE1VTFRJUExZKHozLCBGSVhfMF84OTk5NzYyMjMpIC8qIHNxcnQoMikgKiAoYzMtYzcpICovDQorCSArIE1VTFRJUExZKHo0LCBGSVhfMl81NjI5MTU0NDcpOyAvKiBzcXJ0KDIpICogKGMxK2MzKSAqLw0KKw0KKyAgICAvKiBGaW5hbCBvdXRwdXQgc3RhZ2UgKi8NCisgICAgDQorICAgIHdzcHRyW0RDVFNJWkUqMF0gPSAoaW50KSBERVNDQUxFKHRtcDEwICsgdG1wMiwgQ09OU1RfQklUUy1QQVNTMV9CSVRTKzEpOw0KKyAgICB3c3B0cltEQ1RTSVpFKjNdID0gKGludCkgREVTQ0FMRSh0bXAxMCAtIHRtcDIsIENPTlNUX0JJVFMtUEFTUzFfQklUUysxKTsNCisgICAgd3NwdHJbRENUU0laRSoxXSA9IChpbnQpIERFU0NBTEUodG1wMTIgKyB0bXAwLCBDT05TVF9CSVRTLVBBU1MxX0JJVFMrMSk7DQorICAgIHdzcHRyW0RDVFNJWkUqMl0gPSAoaW50KSBERVNDQUxFKHRtcDEyIC0gdG1wMCwgQ09OU1RfQklUUy1QQVNTMV9CSVRTKzEpOw0KKyAgfQ0KKyAgDQorICAvKiBQYXNzIDI6IHByb2Nlc3MgNCByb3dzIGZyb20gd29yayBhcnJheSwgc3RvcmUgaW50byBvdXRwdXQgYXJyYXkuICovDQorDQorICB3c3B0ciA9IHdvcmtzcGFjZTsNCisgIGZvciAoY3RyID0gMDsgY3RyIDwgNDsgY3RyKyspIHsNCisgICAgb3V0cHRyID0gb3V0cHV0X2J1ZltjdHJdICsgb3V0cHV0X2NvbDsNCisgICAgLyogSXQncyBub3QgY2xlYXIgd2hldGhlciBhIHplcm8gcm93IHRlc3QgaXMgd29ydGh3aGlsZSBoZXJlIC4uLiAqLw0KKw0KKyNpZm5kZWYgTk9fWkVST19ST1dfVEVTVA0KKyAgICBpZiAod3NwdHJbMV0gPT0gMCAmJiB3c3B0clsyXSA9PSAwICYmIHdzcHRyWzNdID09IDAgJiYNCisJd3NwdHJbNV0gPT0gMCAmJiB3c3B0cls2XSA9PSAwICYmIHdzcHRyWzddID09IDApIHsNCisgICAgICAvKiBBQyB0ZXJtcyBhbGwgemVybyAqLw0KKyAgICAgIEpTQU1QTEUgZGN2YWwgPSByYW5nZV9saW1pdFsoaW50KSBERVNDQUxFKChJTlQzMikgd3NwdHJbMF0sIFBBU1MxX0JJVFMrMykNCisJCQkJICAmIFJBTkdFX01BU0tdOw0KKyAgICAgIA0KKyAgICAgIG91dHB0clswXSA9IGRjdmFsOw0KKyAgICAgIG91dHB0clsxXSA9IGRjdmFsOw0KKyAgICAgIG91dHB0clsyXSA9IGRjdmFsOw0KKyAgICAgIG91dHB0clszXSA9IGRjdmFsOw0KKyAgICAgIA0KKyAgICAgIHdzcHRyICs9IERDVFNJWkU7CQkvKiBhZHZhbmNlIHBvaW50ZXIgdG8gbmV4dCByb3cgKi8NCisgICAgICBjb250aW51ZTsNCisgICAgfQ0KKyNlbmRpZg0KKyAgICANCisgICAgLyogRXZlbiBwYXJ0ICovDQorICAgIA0KKyAgICB0bXAwID0gKChJTlQzMikgd3NwdHJbMF0pIDw8IChDT05TVF9CSVRTKzEpOw0KKyAgICANCisgICAgdG1wMiA9IE1VTFRJUExZKChJTlQzMikgd3NwdHJbMl0sIEZJWF8xXzg0Nzc1OTA2NSkNCisJICsgTVVMVElQTFkoKElOVDMyKSB3c3B0cls2XSwgLSBGSVhfMF83NjUzNjY4NjUpOw0KKyAgICANCisgICAgdG1wMTAgPSB0bXAwICsgdG1wMjsNCisgICAgdG1wMTIgPSB0bXAwIC0gdG1wMjsNCisgICAgDQorICAgIC8qIE9kZCBwYXJ0ICovDQorICAgIA0KKyAgICB6MSA9IChJTlQzMikgd3NwdHJbN107DQorICAgIHoyID0gKElOVDMyKSB3c3B0cls1XTsNCisgICAgejMgPSAoSU5UMzIpIHdzcHRyWzNdOw0KKyAgICB6NCA9IChJTlQzMikgd3NwdHJbMV07DQorICAgIA0KKyAgICB0bXAwID0gTVVMVElQTFkoejEsIC0gRklYXzBfMjExMTY0MjQzKSAvKiBzcXJ0KDIpICogKGMzLWMxKSAqLw0KKwkgKyBNVUxUSVBMWSh6MiwgRklYXzFfNDUxNzc0OTgxKSAvKiBzcXJ0KDIpICogKGMzK2M3KSAqLw0KKwkgKyBNVUxUSVBMWSh6MywgLSBGSVhfMl8xNzI3MzQ4MDMpIC8qIHNxcnQoMikgKiAoLWMxLWM1KSAqLw0KKwkgKyBNVUxUSVBMWSh6NCwgRklYXzFfMDYxNTk0MzM3KTsgLyogc3FydCgyKSAqIChjNStjNykgKi8NCisgICAgDQorICAgIHRtcDIgPSBNVUxUSVBMWSh6MSwgLSBGSVhfMF81MDk3OTU1NzkpIC8qIHNxcnQoMikgKiAoYzctYzUpICovDQorCSArIE1VTFRJUExZKHoyLCAtIEZJWF8wXzYwMTM0NDg4NykgLyogc3FydCgyKSAqIChjNS1jMSkgKi8NCisJICsgTVVMVElQTFkoejMsIEZJWF8wXzg5OTk3NjIyMykgLyogc3FydCgyKSAqIChjMy1jNykgKi8NCisJICsgTVVMVElQTFkoejQsIEZJWF8yXzU2MjkxNTQ0Nyk7IC8qIHNxcnQoMikgKiAoYzErYzMpICovDQorDQorICAgIC8qIEZpbmFsIG91dHB1dCBzdGFnZSAqLw0KKyAgICANCisgICAgb3V0cHRyWzBdID0gcmFuZ2VfbGltaXRbKGludCkgREVTQ0FMRSh0bXAxMCArIHRtcDIsDQorCQkJCQkgIENPTlNUX0JJVFMrUEFTUzFfQklUUyszKzEpDQorCQkJICAgICYgUkFOR0VfTUFTS107DQorICAgIG91dHB0clszXSA9IHJhbmdlX2xpbWl0WyhpbnQpIERFU0NBTEUodG1wMTAgLSB0bXAyLA0KKwkJCQkJICBDT05TVF9CSVRTK1BBU1MxX0JJVFMrMysxKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICBvdXRwdHJbMV0gPSByYW5nZV9saW1pdFsoaW50KSBERVNDQUxFKHRtcDEyICsgdG1wMCwNCisJCQkJCSAgQ09OU1RfQklUUytQQVNTMV9CSVRTKzMrMSkNCisJCQkgICAgJiBSQU5HRV9NQVNLXTsNCisgICAgb3V0cHRyWzJdID0gcmFuZ2VfbGltaXRbKGludCkgREVTQ0FMRSh0bXAxMiAtIHRtcDAsDQorCQkJCQkgIENPTlNUX0JJVFMrUEFTUzFfQklUUyszKzEpDQorCQkJICAgICYgUkFOR0VfTUFTS107DQorICAgIA0KKyAgICB3c3B0ciArPSBEQ1RTSVpFOwkJLyogYWR2YW5jZSBwb2ludGVyIHRvIG5leHQgcm93ICovDQorICB9DQorfQ0KKw0KKw0KKy8qDQorICogUGVyZm9ybSBkZXF1YW50aXphdGlvbiBhbmQgaW52ZXJzZSBEQ1Qgb24gb25lIGJsb2NrIG9mIGNvZWZmaWNpZW50cywNCisgKiBwcm9kdWNpbmcgYSByZWR1Y2VkLXNpemUgMngyIG91dHB1dCBibG9jay4NCisgKi8NCisNCitHTE9CQUwodm9pZCkNCitqcGVnX2lkY3RfMngyIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0ciwNCisJICAgICAgIEpDT0VGUFRSIGNvZWZfYmxvY2ssDQorCSAgICAgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gb3V0cHV0X2NvbCkNCit7DQorICBJTlQzMiB0bXAwLCB0bXAxMCwgejE7DQorICBKQ09FRlBUUiBpbnB0cjsNCisgIElTTE9XX01VTFRfVFlQRSAqIHF1YW50cHRyOw0KKyAgaW50ICogd3NwdHI7DQorICBKU0FNUFJPVyBvdXRwdHI7DQorICBKU0FNUExFICpyYW5nZV9saW1pdCA9IElEQ1RfcmFuZ2VfbGltaXQoY2luZm8pOw0KKyAgaW50IGN0cjsNCisgIGludCB3b3Jrc3BhY2VbRENUU0laRSoyXTsJLyogYnVmZmVycyBkYXRhIGJldHdlZW4gcGFzc2VzICovDQorICBTSElGVF9URU1QUw0KKw0KKyAgLyogUGFzcyAxOiBwcm9jZXNzIGNvbHVtbnMgZnJvbSBpbnB1dCwgc3RvcmUgaW50byB3b3JrIGFycmF5LiAqLw0KKw0KKyAgaW5wdHIgPSBjb2VmX2Jsb2NrOw0KKyAgcXVhbnRwdHIgPSAoSVNMT1dfTVVMVF9UWVBFICopIGNvbXBwdHItPmRjdF90YWJsZTsNCisgIHdzcHRyID0gd29ya3NwYWNlOw0KKyAgZm9yIChjdHIgPSBEQ1RTSVpFOyBjdHIgPiAwOyBpbnB0cisrLCBxdWFudHB0cisrLCB3c3B0cisrLCBjdHItLSkgew0KKyAgICAvKiBEb24ndCBib3RoZXIgdG8gcHJvY2VzcyBjb2x1bW5zIDIsNCw2ICovDQorICAgIGlmIChjdHIgPT0gRENUU0laRS0yIHx8IGN0ciA9PSBEQ1RTSVpFLTQgfHwgY3RyID09IERDVFNJWkUtNikNCisgICAgICBjb250aW51ZTsNCisgICAgaWYgKGlucHRyW0RDVFNJWkUqMV0gPT0gMCAmJiBpbnB0cltEQ1RTSVpFKjNdID09IDAgJiYNCisJaW5wdHJbRENUU0laRSo1XSA9PSAwICYmIGlucHRyW0RDVFNJWkUqN10gPT0gMCkgew0KKyAgICAgIC8qIEFDIHRlcm1zIGFsbCB6ZXJvOyB3ZSBuZWVkIG5vdCBleGFtaW5lIHRlcm1zIDIsNCw2IGZvciAyeDIgb3V0cHV0ICovDQorICAgICAgaW50IGRjdmFsID0gREVRVUFOVElaRShpbnB0cltEQ1RTSVpFKjBdLCBxdWFudHB0cltEQ1RTSVpFKjBdKSA8PCBQQVNTMV9CSVRTOw0KKyAgICAgIA0KKyAgICAgIHdzcHRyW0RDVFNJWkUqMF0gPSBkY3ZhbDsNCisgICAgICB3c3B0cltEQ1RTSVpFKjFdID0gZGN2YWw7DQorICAgICAgDQorICAgICAgY29udGludWU7DQorICAgIH0NCisgICAgDQorICAgIC8qIEV2ZW4gcGFydCAqLw0KKyAgICANCisgICAgejEgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqMF0sIHF1YW50cHRyW0RDVFNJWkUqMF0pOw0KKyAgICB0bXAxMCA9IHoxIDw8IChDT05TVF9CSVRTKzIpOw0KKyAgICANCisgICAgLyogT2RkIHBhcnQgKi8NCisNCisgICAgejEgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqN10sIHF1YW50cHRyW0RDVFNJWkUqN10pOw0KKyAgICB0bXAwID0gTVVMVElQTFkoejEsIC0gRklYXzBfNzIwOTU5ODIyKTsgLyogc3FydCgyKSAqIChjNy1jNStjMy1jMSkgKi8NCisgICAgejEgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqNV0sIHF1YW50cHRyW0RDVFNJWkUqNV0pOw0KKyAgICB0bXAwICs9IE1VTFRJUExZKHoxLCBGSVhfMF84NTA0MzAwOTUpOyAvKiBzcXJ0KDIpICogKC1jMStjMytjNStjNykgKi8NCisgICAgejEgPSBERVFVQU5USVpFKGlucHRyW0RDVFNJWkUqM10sIHF1YW50cHRyW0RDVFNJWkUqM10pOw0KKyAgICB0bXAwICs9IE1VTFRJUExZKHoxLCAtIEZJWF8xXzI3Mjc1ODU4MCk7IC8qIHNxcnQoMikgKiAoLWMxK2MzLWM1LWM3KSAqLw0KKyAgICB6MSA9IERFUVVBTlRJWkUoaW5wdHJbRENUU0laRSoxXSwgcXVhbnRwdHJbRENUU0laRSoxXSk7DQorICAgIHRtcDAgKz0gTVVMVElQTFkoejEsIEZJWF8zXzYyNDUwOTc4NSk7IC8qIHNxcnQoMikgKiAoYzErYzMrYzUrYzcpICovDQorDQorICAgIC8qIEZpbmFsIG91dHB1dCBzdGFnZSAqLw0KKyAgICANCisgICAgd3NwdHJbRENUU0laRSowXSA9IChpbnQpIERFU0NBTEUodG1wMTAgKyB0bXAwLCBDT05TVF9CSVRTLVBBU1MxX0JJVFMrMik7DQorICAgIHdzcHRyW0RDVFNJWkUqMV0gPSAoaW50KSBERVNDQUxFKHRtcDEwIC0gdG1wMCwgQ09OU1RfQklUUy1QQVNTMV9CSVRTKzIpOw0KKyAgfQ0KKyAgDQorICAvKiBQYXNzIDI6IHByb2Nlc3MgMiByb3dzIGZyb20gd29yayBhcnJheSwgc3RvcmUgaW50byBvdXRwdXQgYXJyYXkuICovDQorDQorICB3c3B0ciA9IHdvcmtzcGFjZTsNCisgIGZvciAoY3RyID0gMDsgY3RyIDwgMjsgY3RyKyspIHsNCisgICAgb3V0cHRyID0gb3V0cHV0X2J1ZltjdHJdICsgb3V0cHV0X2NvbDsNCisgICAgLyogSXQncyBub3QgY2xlYXIgd2hldGhlciBhIHplcm8gcm93IHRlc3QgaXMgd29ydGh3aGlsZSBoZXJlIC4uLiAqLw0KKw0KKyNpZm5kZWYgTk9fWkVST19ST1dfVEVTVA0KKyAgICBpZiAod3NwdHJbMV0gPT0gMCAmJiB3c3B0clszXSA9PSAwICYmIHdzcHRyWzVdID09IDAgJiYgd3NwdHJbN10gPT0gMCkgew0KKyAgICAgIC8qIEFDIHRlcm1zIGFsbCB6ZXJvICovDQorICAgICAgSlNBTVBMRSBkY3ZhbCA9IHJhbmdlX2xpbWl0WyhpbnQpIERFU0NBTEUoKElOVDMyKSB3c3B0clswXSwgUEFTUzFfQklUUyszKQ0KKwkJCQkgICYgUkFOR0VfTUFTS107DQorICAgICAgDQorICAgICAgb3V0cHRyWzBdID0gZGN2YWw7DQorICAgICAgb3V0cHRyWzFdID0gZGN2YWw7DQorICAgICAgDQorICAgICAgd3NwdHIgKz0gRENUU0laRTsJCS8qIGFkdmFuY2UgcG9pbnRlciB0byBuZXh0IHJvdyAqLw0KKyAgICAgIGNvbnRpbnVlOw0KKyAgICB9DQorI2VuZGlmDQorICAgIA0KKyAgICAvKiBFdmVuIHBhcnQgKi8NCisgICAgDQorICAgIHRtcDEwID0gKChJTlQzMikgd3NwdHJbMF0pIDw8IChDT05TVF9CSVRTKzIpOw0KKyAgICANCisgICAgLyogT2RkIHBhcnQgKi8NCisNCisgICAgdG1wMCA9IE1VTFRJUExZKChJTlQzMikgd3NwdHJbN10sIC0gRklYXzBfNzIwOTU5ODIyKSAvKiBzcXJ0KDIpICogKGM3LWM1K2MzLWMxKSAqLw0KKwkgKyBNVUxUSVBMWSgoSU5UMzIpIHdzcHRyWzVdLCBGSVhfMF84NTA0MzAwOTUpIC8qIHNxcnQoMikgKiAoLWMxK2MzK2M1K2M3KSAqLw0KKwkgKyBNVUxUSVBMWSgoSU5UMzIpIHdzcHRyWzNdLCAtIEZJWF8xXzI3Mjc1ODU4MCkgLyogc3FydCgyKSAqICgtYzErYzMtYzUtYzcpICovDQorCSArIE1VTFRJUExZKChJTlQzMikgd3NwdHJbMV0sIEZJWF8zXzYyNDUwOTc4NSk7IC8qIHNxcnQoMikgKiAoYzErYzMrYzUrYzcpICovDQorDQorICAgIC8qIEZpbmFsIG91dHB1dCBzdGFnZSAqLw0KKyAgICANCisgICAgb3V0cHRyWzBdID0gcmFuZ2VfbGltaXRbKGludCkgREVTQ0FMRSh0bXAxMCArIHRtcDAsDQorCQkJCQkgIENPTlNUX0JJVFMrUEFTUzFfQklUUyszKzIpDQorCQkJICAgICYgUkFOR0VfTUFTS107DQorICAgIG91dHB0clsxXSA9IHJhbmdlX2xpbWl0WyhpbnQpIERFU0NBTEUodG1wMTAgLSB0bXAwLA0KKwkJCQkJICBDT05TVF9CSVRTK1BBU1MxX0JJVFMrMysyKQ0KKwkJCSAgICAmIFJBTkdFX01BU0tdOw0KKyAgICANCisgICAgd3NwdHIgKz0gRENUU0laRTsJCS8qIGFkdmFuY2UgcG9pbnRlciB0byBuZXh0IHJvdyAqLw0KKyAgfQ0KK30NCisNCisNCisvKg0KKyAqIFBlcmZvcm0gZGVxdWFudGl6YXRpb24gYW5kIGludmVyc2UgRENUIG9uIG9uZSBibG9jayBvZiBjb2VmZmljaWVudHMsDQorICogcHJvZHVjaW5nIGEgcmVkdWNlZC1zaXplIDF4MSBvdXRwdXQgYmxvY2suDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19pZGN0XzF4MSAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCSAgICAgICBKQ09FRlBUUiBjb2VmX2Jsb2NrLA0KKwkgICAgICAgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OIG91dHB1dF9jb2wpDQorew0KKyAgaW50IGRjdmFsOw0KKyAgSVNMT1dfTVVMVF9UWVBFICogcXVhbnRwdHI7DQorICBKU0FNUExFICpyYW5nZV9saW1pdCA9IElEQ1RfcmFuZ2VfbGltaXQoY2luZm8pOw0KKyAgU0hJRlRfVEVNUFMNCisNCisgIC8qIFdlIGhhcmRseSBuZWVkIGFuIGludmVyc2UgRENUIHJvdXRpbmUgZm9yIHRoaXM6IGp1c3QgdGFrZSB0aGUNCisgICAqIGF2ZXJhZ2UgcGl4ZWwgdmFsdWUsIHdoaWNoIGlzIG9uZS1laWdodGggb2YgdGhlIERDIGNvZWZmaWNpZW50Lg0KKyAgICovDQorICBxdWFudHB0ciA9IChJU0xPV19NVUxUX1RZUEUgKikgY29tcHB0ci0+ZGN0X3RhYmxlOw0KKyAgZGN2YWwgPSBERVFVQU5USVpFKGNvZWZfYmxvY2tbMF0sIHF1YW50cHRyWzBdKTsNCisgIGRjdmFsID0gKGludCkgREVTQ0FMRSgoSU5UMzIpIGRjdmFsLCAzKTsNCisNCisgIG91dHB1dF9idWZbMF1bb3V0cHV0X2NvbF0gPSByYW5nZV9saW1pdFtkY3ZhbCAmIFJBTkdFX01BU0tdOw0KK30NCisNCisjZW5kaWYgLyogSURDVF9TQ0FMSU5HX1NVUFBPUlRFRCAqLw0KKw0KKyNlbmRpZiAvL19GWF9KUEVHX1RVUkJPXw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2ptZW1tZ3IuYyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9mcGRmYXBpX2ptZW1tZ3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWVlNjY1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfam1lbW1nci5jCkBAIC0wLDAgKzEsMTEyMyBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGptZW1tZ3IuYw0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTcsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBKUEVHIHN5c3RlbS1pbmRlcGVuZGVudCBtZW1vcnkgbWFuYWdlbWVudA0KKyAqIHJvdXRpbmVzLiAgVGhpcyBjb2RlIGlzIHVzYWJsZSBhY3Jvc3MgYSB3aWRlIHZhcmlldHkgb2YgbWFjaGluZXM7IG1vc3QNCisgKiBvZiB0aGUgc3lzdGVtIGRlcGVuZGVuY2llcyBoYXZlIGJlZW4gaXNvbGF0ZWQgaW4gYSBzZXBhcmF0ZSBmaWxlLg0KKyAqIFRoZSBtYWpvciBmdW5jdGlvbnMgcHJvdmlkZWQgaGVyZSBhcmU6DQorICogICAqIHBvb2wtYmFzZWQgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBvZiBtZW1vcnk7DQorICogICAqIHBvbGljeSBkZWNpc2lvbnMgYWJvdXQgaG93IHRvIGRpdmlkZSBhdmFpbGFibGUgbWVtb3J5IGFtb25nIHRoZQ0KKyAqICAgICB2aXJ0dWFsIGFycmF5czsNCisgKiAgICogY29udHJvbCBsb2dpYyBmb3Igc3dhcHBpbmcgdmlydHVhbCBhcnJheXMgYmV0d2VlbiBtYWluIG1lbW9yeSBhbmQNCisgKiAgICAgYmFja2luZyBzdG9yYWdlLg0KKyAqIFRoZSBzZXBhcmF0ZSBzeXN0ZW0tZGVwZW5kZW50IGZpbGUgcHJvdmlkZXMgdGhlIGFjdHVhbCBiYWNraW5nLXN0b3JhZ2UNCisgKiBhY2Nlc3MgY29kZSwgYW5kIGl0IGNvbnRhaW5zIHRoZSBwb2xpY3kgZGVjaXNpb24gYWJvdXQgaG93IG11Y2ggdG90YWwNCisgKiBtYWluIG1lbW9yeSB0byB1c2UuDQorICogVGhpcyBmaWxlIGlzIHN5c3RlbS1kZXBlbmRlbnQgaW4gdGhlIHNlbnNlIHRoYXQgc29tZSBvZiBpdHMgZnVuY3Rpb25zDQorICogYXJlIHVubmVjZXNzYXJ5IGluIHNvbWUgc3lzdGVtcy4gIEZvciBleGFtcGxlLCBpZiB0aGVyZSBpcyBlbm91Z2ggdmlydHVhbA0KKyAqIG1lbW9yeSBzbyB0aGF0IGJhY2tpbmcgc3RvcmFnZSB3aWxsIG5ldmVyIGJlIHVzZWQsIG11Y2ggb2YgdGhlIHZpcnR1YWwNCisgKiBhcnJheSBjb250cm9sIGxvZ2ljIGNvdWxkIGJlIHJlbW92ZWQuICAoT2YgY291cnNlLCBpZiB5b3UgaGF2ZSB0aGF0IG11Y2gNCisgKiBtZW1vcnkgdGhlbiB5b3Ugc2hvdWxkbid0IGNhcmUgYWJvdXQgYSBsaXR0bGUgYml0IG9mIHVudXNlZCBjb2RlLi4uKQ0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjZGVmaW5lIEFNX01FTU9SWV9NQU5BR0VSCS8qIHdlIGRlZmluZSBqdmlydF9YYXJyYXlfY29udHJvbCBzdHJ1Y3RzICovDQorI2luY2x1ZGUgImppbmNsdWRlLmgiDQorI2luY2x1ZGUgImpwZWdsaWIuaCINCisjaW5jbHVkZSAiam1lbXN5cy5oIgkJLyogaW1wb3J0IHRoZSBzeXN0ZW0tZGVwZW5kZW50IGRlY2xhcmF0aW9ucyAqLw0KKw0KKyNkZWZpbmUgTk9fR0VURU5WCS8qIFhZUTogMjAwNy01LTIyIERvbid0IHVzZSBpdCAqLw0KKw0KKyNpZm5kZWYgTk9fR0VURU5WDQorI2lmbmRlZiBIQVZFX1NURExJQl9ICQkvKiA8c3RkbGliLmg+IHNob3VsZCBkZWNsYXJlIGdldGVudigpICovDQorZXh0ZXJuIGNoYXIgKiBnZXRlbnYgSlBQKChjb25zdCBjaGFyICogbmFtZSkpOw0KKyNlbmRpZg0KKyNlbmRpZg0KKw0KKw0KKy8qDQorICogU29tZSBpbXBvcnRhbnQgbm90ZXM6DQorICogICBUaGUgYWxsb2NhdGlvbiByb3V0aW5lcyBwcm92aWRlZCBoZXJlIG11c3QgbmV2ZXIgcmV0dXJuIE5VTEwuDQorICogICBUaGV5IHNob3VsZCBleGl0IHRvIGVycm9yX2V4aXQgaWYgdW5zdWNjZXNzZnVsLg0KKyAqDQorICogICBJdCdzIG5vdCBhIGdvb2QgaWRlYSB0byB0cnkgdG8gbWVyZ2UgdGhlIHNhcnJheSBhbmQgYmFycmF5IHJvdXRpbmVzLA0KKyAqICAgZXZlbiB0aG91Z2ggdGhleSBhcmUgdGV4dHVhbGx5IGFsbW9zdCB0aGUgc2FtZSwgYmVjYXVzZSBzYW1wbGVzIGFyZQ0KKyAqICAgdXN1YWxseSBzdG9yZWQgYXMgYnl0ZXMgd2hpbGUgY29lZmZpY2llbnRzIGFyZSBzaG9ydHMgb3IgaW50cy4gIFRodXMsDQorICogICBpbiBtYWNoaW5lcyB3aGVyZSBieXRlIHBvaW50ZXJzIGhhdmUgYSBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb24gZnJvbQ0KKyAqICAgd29yZCBwb2ludGVycywgdGhlIHJlc3VsdGluZyBtYWNoaW5lIGNvZGUgY291bGQgbm90IGJlIHRoZSBzYW1lLg0KKyAqLw0KKw0KKw0KKy8qDQorICogTWFueSBtYWNoaW5lcyByZXF1aXJlIHN0b3JhZ2UgYWxpZ25tZW50OiBsb25ncyBtdXN0IHN0YXJ0IG9uIDQtYnl0ZQ0KKyAqIGJvdW5kYXJpZXMsIGRvdWJsZXMgb24gOC1ieXRlIGJvdW5kYXJpZXMsIGV0Yy4gIE9uIHN1Y2ggbWFjaGluZXMsIG1hbGxvYygpDQorICogYWx3YXlzIHJldHVybnMgcG9pbnRlcnMgdGhhdCBhcmUgbXVsdGlwbGVzIG9mIHRoZSB3b3JzdC1jYXNlIGFsaWdubWVudA0KKyAqIHJlcXVpcmVtZW50LCBhbmQgd2UgaGFkIGJldHRlciBkbyBzbyB0b28uDQorICogVGhlcmUgaXNuJ3QgYW55IHJlYWxseSBwb3J0YWJsZSB3YXkgdG8gZGV0ZXJtaW5lIHRoZSB3b3JzdC1jYXNlIGFsaWdubWVudA0KKyAqIHJlcXVpcmVtZW50LiAgVGhpcyBtb2R1bGUgYXNzdW1lcyB0aGF0IHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnQgaXMNCisgKiBtdWx0aXBsZXMgb2Ygc2l6ZW9mKEFMSUdOX1RZUEUpLg0KKyAqIEJ5IGRlZmF1bHQsIHdlIGRlZmluZSBBTElHTl9UWVBFIGFzIGRvdWJsZS4gIFRoaXMgaXMgbmVjZXNzYXJ5IG9uIHNvbWUNCisgKiB3b3Jrc3RhdGlvbnMgKHdoZXJlIGRvdWJsZXMgcmVhbGx5IGRvIG5lZWQgOC1ieXRlIGFsaWdubWVudCkgYW5kIHdpbGwgd29yaw0KKyAqIGZpbmUgb24gbmVhcmx5IGV2ZXJ5dGhpbmcuICBJZiB5b3VyIG1hY2hpbmUgaGFzIGxlc3NlciBhbGlnbm1lbnQgbmVlZHMsDQorICogeW91IGNhbiBzYXZlIGEgZmV3IGJ5dGVzIGJ5IG1ha2luZyBBTElHTl9UWVBFIHNtYWxsZXIuDQorICogVGhlIG9ubHkgcGxhY2UgSSBrbm93IG9mIHdoZXJlIHRoaXMgd2lsbCBOT1Qgd29yayBpcyBjZXJ0YWluIE1hY2ludG9zaA0KKyAqIDY4MHgwIGNvbXBpbGVycyB0aGF0IGRlZmluZSBkb3VibGUgYXMgYSAxMC1ieXRlIElFRUUgZXh0ZW5kZWQgZmxvYXQuDQorICogRG9pbmcgMTAtYnl0ZSBhbGlnbm1lbnQgaXMgY291bnRlcnByb2R1Y3RpdmUgYmVjYXVzZSBsb25nd29yZHMgd29uJ3QgYmUNCisgKiBhbGlnbmVkIHdlbGwuICBQdXQgIiNkZWZpbmUgQUxJR05fVFlQRSBsb25nIiBpbiBqY29uZmlnLmggaWYgeW91IGhhdmUNCisgKiBzdWNoIGEgY29tcGlsZXIuDQorICovDQorDQorI2lmbmRlZiBBTElHTl9UWVBFCQkvKiBzbyBjYW4gb3ZlcnJpZGUgZnJvbSBqY29uZmlnLmggKi8NCisjZGVmaW5lIEFMSUdOX1RZUEUgIGRvdWJsZQ0KKyNlbmRpZg0KKw0KKw0KKy8qDQorICogV2UgYWxsb2NhdGUgb2JqZWN0cyBmcm9tICJwb29scyIsIHdoZXJlIGVhY2ggcG9vbCBpcyBnb3R0ZW4gd2l0aCBhIHNpbmdsZQ0KKyAqIHJlcXVlc3QgdG8ganBlZ19nZXRfc21hbGwoKSBvciBqcGVnX2dldF9sYXJnZSgpLiAgVGhlcmUgaXMgbm8gcGVyLW9iamVjdA0KKyAqIG92ZXJoZWFkIHdpdGhpbiBhIHBvb2wsIGV4Y2VwdCBmb3IgYWxpZ25tZW50IHBhZGRpbmcuICBFYWNoIHBvb2wgaGFzIGENCisgKiBoZWFkZXIgd2l0aCBhIGxpbmsgdG8gdGhlIG5leHQgcG9vbCBvZiB0aGUgc2FtZSBjbGFzcy4NCisgKiBTbWFsbCBhbmQgbGFyZ2UgcG9vbCBoZWFkZXJzIGFyZSBpZGVudGljYWwgZXhjZXB0IHRoYXQgdGhlIGxhdHRlcidzDQorICogbGluayBwb2ludGVyIG11c3QgYmUgRkFSIG9uIDgweDg2IG1hY2hpbmVzLg0KKyAqIE5vdGljZSB0aGF0IHRoZSAicmVhbCIgaGVhZGVyIGZpZWxkcyBhcmUgdW5pb24nZWQgd2l0aCBhIGR1bW15IEFMSUdOX1RZUEUNCisgKiBmaWVsZC4gIFRoaXMgZm9yY2VzIHRoZSBjb21waWxlciB0byBtYWtlIFNJWkVPRihzbWFsbF9wb29sX2hkcikgYSBtdWx0aXBsZQ0KKyAqIG9mIHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnQgb2YgQUxJR05fVFlQRS4NCisgKi8NCisNCit0eXBlZGVmIHVuaW9uIHNtYWxsX3Bvb2xfc3RydWN0ICogc21hbGxfcG9vbF9wdHI7DQorDQordHlwZWRlZiB1bmlvbiBzbWFsbF9wb29sX3N0cnVjdCB7DQorICBzdHJ1Y3Qgew0KKyAgICBzbWFsbF9wb29sX3B0ciBuZXh0OwkvKiBuZXh0IGluIGxpc3Qgb2YgcG9vbHMgKi8NCisgICAgc2l6ZV90IGJ5dGVzX3VzZWQ7CQkvKiBob3cgbWFueSBieXRlcyBhbHJlYWR5IHVzZWQgd2l0aGluIHBvb2wgKi8NCisgICAgc2l6ZV90IGJ5dGVzX2xlZnQ7CQkvKiBieXRlcyBzdGlsbCBhdmFpbGFibGUgaW4gdGhpcyBwb29sICovDQorICB9IGhkcjsNCisgIEFMSUdOX1RZUEUgZHVtbXk7CQkvKiBpbmNsdWRlZCBpbiB1bmlvbiB0byBlbnN1cmUgYWxpZ25tZW50ICovDQorfSBzbWFsbF9wb29sX2hkcjsNCisNCit0eXBlZGVmIHVuaW9uIGxhcmdlX3Bvb2xfc3RydWN0IEZBUiAqIGxhcmdlX3Bvb2xfcHRyOw0KKw0KK3R5cGVkZWYgdW5pb24gbGFyZ2VfcG9vbF9zdHJ1Y3Qgew0KKyAgc3RydWN0IHsNCisgICAgbGFyZ2VfcG9vbF9wdHIgbmV4dDsJLyogbmV4dCBpbiBsaXN0IG9mIHBvb2xzICovDQorICAgIHNpemVfdCBieXRlc191c2VkOwkJLyogaG93IG1hbnkgYnl0ZXMgYWxyZWFkeSB1c2VkIHdpdGhpbiBwb29sICovDQorICAgIHNpemVfdCBieXRlc19sZWZ0OwkJLyogYnl0ZXMgc3RpbGwgYXZhaWxhYmxlIGluIHRoaXMgcG9vbCAqLw0KKyAgfSBoZHI7DQorICBBTElHTl9UWVBFIGR1bW15OwkJLyogaW5jbHVkZWQgaW4gdW5pb24gdG8gZW5zdXJlIGFsaWdubWVudCAqLw0KK30gbGFyZ2VfcG9vbF9oZHI7DQorDQorDQorLyoNCisgKiBIZXJlIGlzIHRoZSBmdWxsIGRlZmluaXRpb24gb2YgYSBtZW1vcnkgbWFuYWdlciBvYmplY3QuDQorICovDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgc3RydWN0IGpwZWdfbWVtb3J5X21nciBwdWI7CS8qIHB1YmxpYyBmaWVsZHMgKi8NCisNCisgIC8qIEVhY2ggcG9vbCBpZGVudGlmaWVyIChsaWZldGltZSBjbGFzcykgbmFtZXMgYSBsaW5rZWQgbGlzdCBvZiBwb29scy4gKi8NCisgIHNtYWxsX3Bvb2xfcHRyIHNtYWxsX2xpc3RbSlBPT0xfTlVNUE9PTFNdOw0KKyAgbGFyZ2VfcG9vbF9wdHIgbGFyZ2VfbGlzdFtKUE9PTF9OVU1QT09MU107DQorDQorICAvKiBTaW5jZSB3ZSBvbmx5IGhhdmUgb25lIGxpZmV0aW1lIGNsYXNzIG9mIHZpcnR1YWwgYXJyYXlzLCBvbmx5IG9uZQ0KKyAgICogbGlua2VkIGxpc3QgaXMgbmVjZXNzYXJ5IChmb3IgZWFjaCBkYXRhdHlwZSkuICBOb3RlIHRoYXQgdGhlIHZpcnR1YWwNCisgICAqIGFycmF5IGNvbnRyb2wgYmxvY2tzIGJlaW5nIGxpbmtlZCB0b2dldGhlciBhcmUgYWN0dWFsbHkgc3RvcmVkIHNvbWV3aGVyZQ0KKyAgICogaW4gdGhlIHNtYWxsLXBvb2wgbGlzdC4NCisgICAqLw0KKyAganZpcnRfc2FycmF5X3B0ciB2aXJ0X3NhcnJheV9saXN0Ow0KKyAganZpcnRfYmFycmF5X3B0ciB2aXJ0X2JhcnJheV9saXN0Ow0KKw0KKyAgLyogVGhpcyBjb3VudHMgdG90YWwgc3BhY2Ugb2J0YWluZWQgZnJvbSBqcGVnX2dldF9zbWFsbC9sYXJnZSAqLw0KKyAgbG9uZyB0b3RhbF9zcGFjZV9hbGxvY2F0ZWQ7DQorDQorICAvKiBhbGxvY19zYXJyYXkgYW5kIGFsbG9jX2JhcnJheSBzZXQgdGhpcyB2YWx1ZSBmb3IgdXNlIGJ5IHZpcnR1YWwNCisgICAqIGFycmF5IHJvdXRpbmVzLg0KKyAgICovDQorICBKRElNRU5TSU9OIGxhc3Rfcm93c3BlcmNodW5rOwkvKiBmcm9tIG1vc3QgcmVjZW50IGFsbG9jX3NhcnJheS9iYXJyYXkgKi8NCit9IG15X21lbW9yeV9tZ3I7DQorDQordHlwZWRlZiBteV9tZW1vcnlfbWdyICogbXlfbWVtX3B0cjsNCisNCisNCisvKg0KKyAqIFRoZSBjb250cm9sIGJsb2NrcyBmb3IgdmlydHVhbCBhcnJheXMuDQorICogTm90ZSB0aGF0IHRoZXNlIGJsb2NrcyBhcmUgYWxsb2NhdGVkIGluIHRoZSAic21hbGwiIHBvb2wgYXJlYS4NCisgKiBTeXN0ZW0tZGVwZW5kZW50IGluZm8gZm9yIHRoZSBhc3NvY2lhdGVkIGJhY2tpbmcgc3RvcmUgKGlmIGFueSkgaXMgaGlkZGVuDQorICogaW5zaWRlIHRoZSBiYWNraW5nX3N0b3JlX2luZm8gc3RydWN0Lg0KKyAqLw0KKw0KK3N0cnVjdCBqdmlydF9zYXJyYXlfY29udHJvbCB7DQorICBKU0FNUEFSUkFZIG1lbV9idWZmZXI7CS8qID0+IHRoZSBpbi1tZW1vcnkgYnVmZmVyICovDQorICBKRElNRU5TSU9OIHJvd3NfaW5fYXJyYXk7CS8qIHRvdGFsIHZpcnR1YWwgYXJyYXkgaGVpZ2h0ICovDQorICBKRElNRU5TSU9OIHNhbXBsZXNwZXJyb3c7CS8qIHdpZHRoIG9mIGFycmF5IChhbmQgb2YgbWVtb3J5IGJ1ZmZlcikgKi8NCisgIEpESU1FTlNJT04gbWF4YWNjZXNzOwkJLyogbWF4IHJvd3MgYWNjZXNzZWQgYnkgYWNjZXNzX3ZpcnRfc2FycmF5ICovDQorICBKRElNRU5TSU9OIHJvd3NfaW5fbWVtOwkvKiBoZWlnaHQgb2YgbWVtb3J5IGJ1ZmZlciAqLw0KKyAgSkRJTUVOU0lPTiByb3dzcGVyY2h1bms7CS8qIGFsbG9jYXRpb24gY2h1bmsgc2l6ZSBpbiBtZW1fYnVmZmVyICovDQorICBKRElNRU5TSU9OIGN1cl9zdGFydF9yb3c7CS8qIGZpcnN0IGxvZ2ljYWwgcm93ICMgaW4gdGhlIGJ1ZmZlciAqLw0KKyAgSkRJTUVOU0lPTiBmaXJzdF91bmRlZl9yb3c7CS8qIHJvdyAjIG9mIGZpcnN0IHVuaW5pdGlhbGl6ZWQgcm93ICovDQorICBib29sZWFuIHByZV96ZXJvOwkJLyogcHJlLXplcm8gbW9kZSByZXF1ZXN0ZWQ/ICovDQorICBib29sZWFuIGRpcnR5OwkJLyogZG8gY3VycmVudCBidWZmZXIgY29udGVudHMgbmVlZCB3cml0dGVuPyAqLw0KKyAgYm9vbGVhbiBiX3Nfb3BlbjsJCS8qIGlzIGJhY2tpbmctc3RvcmUgZGF0YSB2YWxpZD8gKi8NCisgIGp2aXJ0X3NhcnJheV9wdHIgbmV4dDsJLyogbGluayB0byBuZXh0IHZpcnR1YWwgc2FycmF5IGNvbnRyb2wgYmxvY2sgKi8NCisgIGJhY2tpbmdfc3RvcmVfaW5mbyBiX3NfaW5mbzsJLyogU3lzdGVtLWRlcGVuZGVudCBjb250cm9sIGluZm8gKi8NCit9Ow0KKw0KK3N0cnVjdCBqdmlydF9iYXJyYXlfY29udHJvbCB7DQorICBKQkxPQ0tBUlJBWSBtZW1fYnVmZmVyOwkvKiA9PiB0aGUgaW4tbWVtb3J5IGJ1ZmZlciAqLw0KKyAgSkRJTUVOU0lPTiByb3dzX2luX2FycmF5OwkvKiB0b3RhbCB2aXJ0dWFsIGFycmF5IGhlaWdodCAqLw0KKyAgSkRJTUVOU0lPTiBibG9ja3NwZXJyb3c7CS8qIHdpZHRoIG9mIGFycmF5IChhbmQgb2YgbWVtb3J5IGJ1ZmZlcikgKi8NCisgIEpESU1FTlNJT04gbWF4YWNjZXNzOwkJLyogbWF4IHJvd3MgYWNjZXNzZWQgYnkgYWNjZXNzX3ZpcnRfYmFycmF5ICovDQorICBKRElNRU5TSU9OIHJvd3NfaW5fbWVtOwkvKiBoZWlnaHQgb2YgbWVtb3J5IGJ1ZmZlciAqLw0KKyAgSkRJTUVOU0lPTiByb3dzcGVyY2h1bms7CS8qIGFsbG9jYXRpb24gY2h1bmsgc2l6ZSBpbiBtZW1fYnVmZmVyICovDQorICBKRElNRU5TSU9OIGN1cl9zdGFydF9yb3c7CS8qIGZpcnN0IGxvZ2ljYWwgcm93ICMgaW4gdGhlIGJ1ZmZlciAqLw0KKyAgSkRJTUVOU0lPTiBmaXJzdF91bmRlZl9yb3c7CS8qIHJvdyAjIG9mIGZpcnN0IHVuaW5pdGlhbGl6ZWQgcm93ICovDQorICBib29sZWFuIHByZV96ZXJvOwkJLyogcHJlLXplcm8gbW9kZSByZXF1ZXN0ZWQ/ICovDQorICBib29sZWFuIGRpcnR5OwkJLyogZG8gY3VycmVudCBidWZmZXIgY29udGVudHMgbmVlZCB3cml0dGVuPyAqLw0KKyAgYm9vbGVhbiBiX3Nfb3BlbjsJCS8qIGlzIGJhY2tpbmctc3RvcmUgZGF0YSB2YWxpZD8gKi8NCisgIGp2aXJ0X2JhcnJheV9wdHIgbmV4dDsJLyogbGluayB0byBuZXh0IHZpcnR1YWwgYmFycmF5IGNvbnRyb2wgYmxvY2sgKi8NCisgIGJhY2tpbmdfc3RvcmVfaW5mbyBiX3NfaW5mbzsJLyogU3lzdGVtLWRlcGVuZGVudCBjb250cm9sIGluZm8gKi8NCit9Ow0KKw0KKw0KKyNpZmRlZiBNRU1fU1RBVFMJCS8qIG9wdGlvbmFsIGV4dHJhIHN0dWZmIGZvciBzdGF0aXN0aWNzICovDQorDQorTE9DQUwodm9pZCkNCitwcmludF9tZW1fc3RhdHMgKGpfY29tbW9uX3B0ciBjaW5mbywgaW50IHBvb2xfaWQpDQorew0KKyAgbXlfbWVtX3B0ciBtZW0gPSAobXlfbWVtX3B0cikgY2luZm8tPm1lbTsNCisgIHNtYWxsX3Bvb2xfcHRyIHNoZHJfcHRyOw0KKyAgbGFyZ2VfcG9vbF9wdHIgbGhkcl9wdHI7DQorDQorICAvKiBTaW5jZSB0aGlzIGlzIG9ubHkgYSBkZWJ1Z2dpbmcgc3R1Yiwgd2UgY2FuIGNoZWF0IGEgbGl0dGxlIGJ5IHVzaW5nDQorICAgKiBmcHJpbnRmIGRpcmVjdGx5IHJhdGhlciB0aGFuIGdvaW5nIHRocm91Z2ggdGhlIHRyYWNlIG1lc3NhZ2UgY29kZS4NCisgICAqIFRoaXMgaXMgaGVscGZ1bCBiZWNhdXNlIG1lc3NhZ2UgcGFybSBhcnJheSBjYW4ndCBoYW5kbGUgbG9uZ3MuDQorICAgKi8NCisgIEZYU1lTX2ZwcmludGYoc3RkZXJyLCAiRnJlZWluZyBwb29sICVkLCB0b3RhbCBzcGFjZSA9ICVsZFxuIiwNCisJICBwb29sX2lkLCBtZW0tPnRvdGFsX3NwYWNlX2FsbG9jYXRlZCk7DQorDQorICBmb3IgKGxoZHJfcHRyID0gbWVtLT5sYXJnZV9saXN0W3Bvb2xfaWRdOyBsaGRyX3B0ciAhPSBOVUxMOw0KKyAgICAgICBsaGRyX3B0ciA9IGxoZHJfcHRyLT5oZHIubmV4dCkgew0KKyAgICBGWFNZU19mcHJpbnRmKHN0ZGVyciwgIiAgTGFyZ2UgY2h1bmsgdXNlZCAlbGRcbiIsDQorCSAgICAobG9uZykgbGhkcl9wdHItPmhkci5ieXRlc191c2VkKTsNCisgIH0NCisNCisgIGZvciAoc2hkcl9wdHIgPSBtZW0tPnNtYWxsX2xpc3RbcG9vbF9pZF07IHNoZHJfcHRyICE9IE5VTEw7DQorICAgICAgIHNoZHJfcHRyID0gc2hkcl9wdHItPmhkci5uZXh0KSB7DQorICAgIEZYU1lTX2ZwcmludGYoc3RkZXJyLCAiICBTbWFsbCBjaHVuayB1c2VkICVsZCBmcmVlICVsZFxuIiwNCisJICAgIChsb25nKSBzaGRyX3B0ci0+aGRyLmJ5dGVzX3VzZWQsDQorCSAgICAobG9uZykgc2hkcl9wdHItPmhkci5ieXRlc19sZWZ0KTsNCisgIH0NCit9DQorDQorI2VuZGlmIC8qIE1FTV9TVEFUUyAqLw0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorb3V0X29mX21lbW9yeSAoal9jb21tb25fcHRyIGNpbmZvLCBpbnQgd2hpY2gpDQorLyogUmVwb3J0IGFuIG91dC1vZi1tZW1vcnkgZXJyb3IgYW5kIHN0b3AgZXhlY3V0aW9uICovDQorLyogSWYgd2UgY29tcGlsZWQgTUVNX1NUQVRTIHN1cHBvcnQsIHJlcG9ydCBhbGxvYyByZXF1ZXN0cyBiZWZvcmUgZHlpbmcgKi8NCit7DQorI2lmZGVmIE1FTV9TVEFUUw0KKyAgY2luZm8tPmVyci0+dHJhY2VfbGV2ZWwgPSAyOwkvKiBmb3JjZSBzZWxmX2Rlc3RydWN0IHRvIHJlcG9ydCBzdGF0cyAqLw0KKyNlbmRpZg0KKyAgRVJSRVhJVDEoY2luZm8sIEpFUlJfT1VUX09GX01FTU9SWSwgd2hpY2gpOw0KK30NCisNCisNCisvKg0KKyAqIEFsbG9jYXRpb24gb2YgInNtYWxsIiBvYmplY3RzLg0KKyAqDQorICogRm9yIHRoZXNlLCB3ZSB1c2UgcG9vbGVkIHN0b3JhZ2UuICBXaGVuIGEgbmV3IHBvb2wgbXVzdCBiZSBjcmVhdGVkLA0KKyAqIHdlIHRyeSB0byBnZXQgZW5vdWdoIHNwYWNlIGZvciB0aGUgY3VycmVudCByZXF1ZXN0IHBsdXMgYSAic2xvcCIgZmFjdG9yLA0KKyAqIHdoZXJlIHRoZSBzbG9wIHdpbGwgYmUgdGhlIGFtb3VudCBvZiBsZWZ0b3ZlciBzcGFjZSBpbiB0aGUgbmV3IHBvb2wuDQorICogVGhlIHNwZWVkIHZzLiBzcGFjZSB0cmFkZW9mZiBpcyBsYXJnZWx5IGRldGVybWluZWQgYnkgdGhlIHNsb3AgdmFsdWVzLg0KKyAqIEEgZGlmZmVyZW50IHNsb3AgdmFsdWUgaXMgcHJvdmlkZWQgZm9yIGVhY2ggcG9vbCBjbGFzcyAobGlmZXRpbWUpLA0KKyAqIGFuZCB3ZSBhbHNvIGRpc3Rpbmd1aXNoIHRoZSBmaXJzdCBwb29sIG9mIGEgY2xhc3MgZnJvbSBsYXRlciBvbmVzLg0KKyAqIE5PVEU6IHRoZSB2YWx1ZXMgZ2l2ZW4gd29yayBmYWlybHkgd2VsbCBvbiBib3RoIDE2LSBhbmQgMzItYml0LWludA0KKyAqIG1hY2hpbmVzLCBidXQgbWF5IGJlIHRvbyBzbWFsbCBpZiBsb25ncyBhcmUgNjQgYml0cyBvciBtb3JlLg0KKyAqLw0KKw0KK3N0YXRpYyBjb25zdCBzaXplX3QgZmlyc3RfcG9vbF9zbG9wW0pQT09MX05VTVBPT0xTXSA9IA0KK3sNCisJMTYwMCwJCQkvKiBmaXJzdCBQRVJNQU5FTlQgcG9vbCAqLw0KKwkxNjAwMAkJCS8qIGZpcnN0IElNQUdFIHBvb2wgKi8NCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzaXplX3QgZXh0cmFfcG9vbF9zbG9wW0pQT09MX05VTVBPT0xTXSA9IA0KK3sNCisJMCwJCQkvKiBhZGRpdGlvbmFsIFBFUk1BTkVOVCBwb29scyAqLw0KKwk1MDAwCQkJLyogYWRkaXRpb25hbCBJTUFHRSBwb29scyAqLw0KK307DQorDQorI2RlZmluZSBNSU5fU0xPUCAgNTAJCS8qIGdyZWF0ZXIgdGhhbiAwIHRvIGF2b2lkIGZ1dGlsZSBsb29waW5nICovDQorDQorDQorTUVUSE9EREVGKHZvaWQgKikNCithbGxvY19zbWFsbCAoal9jb21tb25fcHRyIGNpbmZvLCBpbnQgcG9vbF9pZCwgc2l6ZV90IHNpemVvZm9iamVjdCkNCisvKiBBbGxvY2F0ZSBhICJzbWFsbCIgb2JqZWN0ICovDQorew0KKyAgbXlfbWVtX3B0ciBtZW0gPSAobXlfbWVtX3B0cikgY2luZm8tPm1lbTsNCisgIHNtYWxsX3Bvb2xfcHRyIGhkcl9wdHIsIHByZXZfaGRyX3B0cjsNCisgIGNoYXIgKiBkYXRhX3B0cjsNCisgIHNpemVfdCBvZGRfYnl0ZXMsIG1pbl9yZXF1ZXN0LCBzbG9wOw0KKw0KKyAgLyogQ2hlY2sgZm9yIHVuc2F0aXNmaWFibGUgcmVxdWVzdCAoZG8gbm93IHRvIGVuc3VyZSBubyBvdmVyZmxvdyBiZWxvdykgKi8NCisgIGlmIChzaXplb2ZvYmplY3QgPiAoc2l6ZV90KSAoTUFYX0FMTE9DX0NIVU5LLVNJWkVPRihzbWFsbF9wb29sX2hkcikpKQ0KKyAgICBvdXRfb2ZfbWVtb3J5KGNpbmZvLCAxKTsJLyogcmVxdWVzdCBleGNlZWRzIG1hbGxvYydzIGFiaWxpdHkgKi8NCisNCisgIC8qIFJvdW5kIHVwIHRoZSByZXF1ZXN0ZWQgc2l6ZSB0byBhIG11bHRpcGxlIG9mIFNJWkVPRihBTElHTl9UWVBFKSAqLw0KKyAgb2RkX2J5dGVzID0gc2l6ZW9mb2JqZWN0ICUgU0laRU9GKEFMSUdOX1RZUEUpOw0KKyAgaWYgKG9kZF9ieXRlcyA+IDApDQorICAgIHNpemVvZm9iamVjdCArPSBTSVpFT0YoQUxJR05fVFlQRSkgLSBvZGRfYnl0ZXM7DQorDQorICAvKiBTZWUgaWYgc3BhY2UgaXMgYXZhaWxhYmxlIGluIGFueSBleGlzdGluZyBwb29sICovDQorICBpZiAocG9vbF9pZCA8IDAgfHwgcG9vbF9pZCA+PSBKUE9PTF9OVU1QT09MUykNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1BPT0xfSUQsIHBvb2xfaWQpOwkvKiBzYWZldHkgY2hlY2sgKi8NCisgIHByZXZfaGRyX3B0ciA9IE5VTEw7DQorICBoZHJfcHRyID0gbWVtLT5zbWFsbF9saXN0W3Bvb2xfaWRdOw0KKyAgd2hpbGUgKGhkcl9wdHIgIT0gTlVMTCkgew0KKyAgICBpZiAoaGRyX3B0ci0+aGRyLmJ5dGVzX2xlZnQgPj0gc2l6ZW9mb2JqZWN0KQ0KKyAgICAgIGJyZWFrOwkJCS8qIGZvdW5kIHBvb2wgd2l0aCBlbm91Z2ggc3BhY2UgKi8NCisgICAgcHJldl9oZHJfcHRyID0gaGRyX3B0cjsNCisgICAgaGRyX3B0ciA9IGhkcl9wdHItPmhkci5uZXh0Ow0KKyAgfQ0KKw0KKyAgLyogVGltZSB0byBtYWtlIGEgbmV3IHBvb2w/ICovDQorICBpZiAoaGRyX3B0ciA9PSBOVUxMKSB7DQorICAgIC8qIG1pbl9yZXF1ZXN0IGlzIHdoYXQgd2UgbmVlZCBub3csIHNsb3AgaXMgd2hhdCB3aWxsIGJlIGxlZnRvdmVyICovDQorICAgIG1pbl9yZXF1ZXN0ID0gc2l6ZW9mb2JqZWN0ICsgU0laRU9GKHNtYWxsX3Bvb2xfaGRyKTsNCisgICAgaWYgKHByZXZfaGRyX3B0ciA9PSBOVUxMKQkvKiBmaXJzdCBwb29sIGluIGNsYXNzPyAqLw0KKyAgICAgIHNsb3AgPSBmaXJzdF9wb29sX3Nsb3BbcG9vbF9pZF07DQorICAgIGVsc2UNCisgICAgICBzbG9wID0gZXh0cmFfcG9vbF9zbG9wW3Bvb2xfaWRdOw0KKyAgICAvKiBEb24ndCBhc2sgZm9yIG1vcmUgdGhhbiBNQVhfQUxMT0NfQ0hVTksgKi8NCisgICAgaWYgKHNsb3AgPiAoc2l6ZV90KSAoTUFYX0FMTE9DX0NIVU5LLW1pbl9yZXF1ZXN0KSkNCisgICAgICBzbG9wID0gKHNpemVfdCkgKE1BWF9BTExPQ19DSFVOSy1taW5fcmVxdWVzdCk7DQorICAgIC8qIFRyeSB0byBnZXQgc3BhY2UsIGlmIGZhaWwgcmVkdWNlIHNsb3AgYW5kIHRyeSBhZ2FpbiAqLw0KKyAgICBmb3IgKDs7KSB7DQorICAgICAgaGRyX3B0ciA9IChzbWFsbF9wb29sX3B0cikganBlZ19nZXRfc21hbGwoY2luZm8sIG1pbl9yZXF1ZXN0ICsgc2xvcCk7DQorICAgICAgaWYgKGhkcl9wdHIgIT0gTlVMTCkNCisJYnJlYWs7DQorICAgICAgc2xvcCAvPSAyOw0KKyAgICAgIGlmIChzbG9wIDwgTUlOX1NMT1ApCS8qIGdpdmUgdXAgd2hlbiBpdCBnZXRzIHJlYWwgc21hbGwgKi8NCisJb3V0X29mX21lbW9yeShjaW5mbywgMik7IC8qIGpwZWdfZ2V0X3NtYWxsIGZhaWxlZCAqLw0KKyAgICB9DQorICAgIG1lbS0+dG90YWxfc3BhY2VfYWxsb2NhdGVkICs9IG1pbl9yZXF1ZXN0ICsgc2xvcDsNCisgICAgLyogU3VjY2VzcywgaW5pdGlhbGl6ZSB0aGUgbmV3IHBvb2wgaGVhZGVyIGFuZCBhZGQgdG8gZW5kIG9mIGxpc3QgKi8NCisgICAgaGRyX3B0ci0+aGRyLm5leHQgPSBOVUxMOw0KKyAgICBoZHJfcHRyLT5oZHIuYnl0ZXNfdXNlZCA9IDA7DQorICAgIGhkcl9wdHItPmhkci5ieXRlc19sZWZ0ID0gc2l6ZW9mb2JqZWN0ICsgc2xvcDsNCisgICAgaWYgKHByZXZfaGRyX3B0ciA9PSBOVUxMKQkvKiBmaXJzdCBwb29sIGluIGNsYXNzPyAqLw0KKyAgICAgIG1lbS0+c21hbGxfbGlzdFtwb29sX2lkXSA9IGhkcl9wdHI7DQorICAgIGVsc2UNCisgICAgICBwcmV2X2hkcl9wdHItPmhkci5uZXh0ID0gaGRyX3B0cjsNCisgIH0NCisNCisgIC8qIE9LLCBhbGxvY2F0ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGN1cnJlbnQgcG9vbCAqLw0KKyAgZGF0YV9wdHIgPSAoY2hhciAqKSAoaGRyX3B0ciArIDEpOyAvKiBwb2ludCB0byBmaXJzdCBkYXRhIGJ5dGUgaW4gcG9vbCAqLw0KKyAgZGF0YV9wdHIgKz0gaGRyX3B0ci0+aGRyLmJ5dGVzX3VzZWQ7IC8qIHBvaW50IHRvIHBsYWNlIGZvciBvYmplY3QgKi8NCisgIGhkcl9wdHItPmhkci5ieXRlc191c2VkICs9IHNpemVvZm9iamVjdDsNCisgIGhkcl9wdHItPmhkci5ieXRlc19sZWZ0IC09IHNpemVvZm9iamVjdDsNCisNCisgIHJldHVybiAodm9pZCAqKSBkYXRhX3B0cjsNCit9DQorDQorDQorLyoNCisgKiBBbGxvY2F0aW9uIG9mICJsYXJnZSIgb2JqZWN0cy4NCisgKg0KKyAqIFRoZSBleHRlcm5hbCBzZW1hbnRpY3Mgb2YgdGhlc2UgYXJlIHRoZSBzYW1lIGFzICJzbWFsbCIgb2JqZWN0cywNCisgKiBleGNlcHQgdGhhdCBGQVIgcG9pbnRlcnMgYXJlIHVzZWQgb24gODB4ODYuICBIb3dldmVyIHRoZSBwb29sDQorICogbWFuYWdlbWVudCBoZXVyaXN0aWNzIGFyZSBxdWl0ZSBkaWZmZXJlbnQuICBXZSBhc3N1bWUgdGhhdCBlYWNoDQorICogcmVxdWVzdCBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBtYXkgYXMgd2VsbCBiZSBwYXNzZWQgZGlyZWN0bHkgdG8NCisgKiBqcGVnX2dldF9sYXJnZTsgdGhlIHBvb2wgbWFuYWdlbWVudCBqdXN0IGxpbmtzIGV2ZXJ5dGhpbmcgdG9nZXRoZXINCisgKiBzbyB0aGF0IHdlIGNhbiBmcmVlIGl0IGFsbCBvbiBkZW1hbmQuDQorICogTm90ZTogdGhlIG1ham9yIHVzZSBvZiAibGFyZ2UiIG9iamVjdHMgaXMgaW4gSlNBTVBBUlJBWSBhbmQgSkJMT0NLQVJSQVkNCisgKiBzdHJ1Y3R1cmVzLiAgVGhlIHJvdXRpbmVzIHRoYXQgY3JlYXRlIHRoZXNlIHN0cnVjdHVyZXMgKHNlZSBiZWxvdykNCisgKiBkZWxpYmVyYXRlbHkgYnVuY2ggcm93cyB0b2dldGhlciB0byBlbnN1cmUgYSBsYXJnZSByZXF1ZXN0IHNpemUuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQgRkFSICopDQorYWxsb2NfbGFyZ2UgKGpfY29tbW9uX3B0ciBjaW5mbywgaW50IHBvb2xfaWQsIHNpemVfdCBzaXplb2ZvYmplY3QpDQorLyogQWxsb2NhdGUgYSAibGFyZ2UiIG9iamVjdCAqLw0KK3sNCisgIG15X21lbV9wdHIgbWVtID0gKG15X21lbV9wdHIpIGNpbmZvLT5tZW07DQorICBsYXJnZV9wb29sX3B0ciBoZHJfcHRyOw0KKyAgc2l6ZV90IG9kZF9ieXRlczsNCisNCisgIC8qIENoZWNrIGZvciB1bnNhdGlzZmlhYmxlIHJlcXVlc3QgKGRvIG5vdyB0byBlbnN1cmUgbm8gb3ZlcmZsb3cgYmVsb3cpICovDQorICBpZiAoc2l6ZW9mb2JqZWN0ID4gKHNpemVfdCkgKE1BWF9BTExPQ19DSFVOSy1TSVpFT0YobGFyZ2VfcG9vbF9oZHIpKSkNCisgICAgb3V0X29mX21lbW9yeShjaW5mbywgMyk7CS8qIHJlcXVlc3QgZXhjZWVkcyBtYWxsb2MncyBhYmlsaXR5ICovDQorDQorICAvKiBSb3VuZCB1cCB0aGUgcmVxdWVzdGVkIHNpemUgdG8gYSBtdWx0aXBsZSBvZiBTSVpFT0YoQUxJR05fVFlQRSkgKi8NCisgIG9kZF9ieXRlcyA9IHNpemVvZm9iamVjdCAlIFNJWkVPRihBTElHTl9UWVBFKTsNCisgIGlmIChvZGRfYnl0ZXMgPiAwKQ0KKyAgICBzaXplb2ZvYmplY3QgKz0gU0laRU9GKEFMSUdOX1RZUEUpIC0gb2RkX2J5dGVzOw0KKw0KKyAgLyogQWx3YXlzIG1ha2UgYSBuZXcgcG9vbCAqLw0KKyAgaWYgKHBvb2xfaWQgPCAwIHx8IHBvb2xfaWQgPj0gSlBPT0xfTlVNUE9PTFMpDQorICAgIEVSUkVYSVQxKGNpbmZvLCBKRVJSX0JBRF9QT09MX0lELCBwb29sX2lkKTsJLyogc2FmZXR5IGNoZWNrICovDQorDQorICBoZHJfcHRyID0gKGxhcmdlX3Bvb2xfcHRyKSBqcGVnX2dldF9sYXJnZShjaW5mbywgc2l6ZW9mb2JqZWN0ICsNCisJCQkJCSAgICBTSVpFT0YobGFyZ2VfcG9vbF9oZHIpKTsNCisgIGlmIChoZHJfcHRyID09IE5VTEwpDQorICAgIG91dF9vZl9tZW1vcnkoY2luZm8sIDQpOwkvKiBqcGVnX2dldF9sYXJnZSBmYWlsZWQgKi8NCisgIG1lbS0+dG90YWxfc3BhY2VfYWxsb2NhdGVkICs9IHNpemVvZm9iamVjdCArIFNJWkVPRihsYXJnZV9wb29sX2hkcik7DQorDQorICAvKiBTdWNjZXNzLCBpbml0aWFsaXplIHRoZSBuZXcgcG9vbCBoZWFkZXIgYW5kIGFkZCB0byBsaXN0ICovDQorICBoZHJfcHRyLT5oZHIubmV4dCA9IG1lbS0+bGFyZ2VfbGlzdFtwb29sX2lkXTsNCisgIC8qIFdlIG1haW50YWluIHNwYWNlIGNvdW50cyBpbiBlYWNoIHBvb2wgaGVhZGVyIGZvciBzdGF0aXN0aWNhbCBwdXJwb3NlcywNCisgICAqIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIG5vdCBuZWVkZWQgZm9yIGFsbG9jYXRpb24uDQorICAgKi8NCisgIGhkcl9wdHItPmhkci5ieXRlc191c2VkID0gc2l6ZW9mb2JqZWN0Ow0KKyAgaGRyX3B0ci0+aGRyLmJ5dGVzX2xlZnQgPSAwOw0KKyAgbWVtLT5sYXJnZV9saXN0W3Bvb2xfaWRdID0gaGRyX3B0cjsNCisNCisgIHJldHVybiAodm9pZCBGQVIgKikgKGhkcl9wdHIgKyAxKTsgLyogcG9pbnQgdG8gZmlyc3QgZGF0YSBieXRlIGluIHBvb2wgKi8NCit9DQorDQorDQorLyoNCisgKiBDcmVhdGlvbiBvZiAyLUQgc2FtcGxlIGFycmF5cy4NCisgKiBUaGUgcG9pbnRlcnMgYXJlIGluIG5lYXIgaGVhcCwgdGhlIHNhbXBsZXMgdGhlbXNlbHZlcyBpbiBGQVIgaGVhcC4NCisgKg0KKyAqIFRvIG1pbmltaXplIGFsbG9jYXRpb24gb3ZlcmhlYWQgYW5kIHRvIGFsbG93IEkvTyBvZiBsYXJnZSBjb250aWd1b3VzDQorICogYmxvY2tzLCB3ZSBhbGxvY2F0ZSB0aGUgc2FtcGxlIHJvd3MgaW4gZ3JvdXBzIG9mIGFzIG1hbnkgcm93cyBhcyBwb3NzaWJsZQ0KKyAqIHdpdGhvdXQgZXhjZWVkaW5nIE1BWF9BTExPQ19DSFVOSyB0b3RhbCBieXRlcyBwZXIgYWxsb2NhdGlvbiByZXF1ZXN0Lg0KKyAqIE5COiB0aGUgdmlydHVhbCBhcnJheSBjb250cm9sIHJvdXRpbmVzLCBsYXRlciBpbiB0aGlzIGZpbGUsIGtub3cgYWJvdXQNCisgKiB0aGlzIGNodW5raW5nIG9mIHJvd3MuICBUaGUgcm93c3BlcmNodW5rIHZhbHVlIGlzIGxlZnQgaW4gdGhlIG1lbSBtYW5hZ2VyDQorICogb2JqZWN0IHNvIHRoYXQgaXQgY2FuIGJlIHNhdmVkIGF3YXkgaWYgdGhpcyBzYXJyYXkgaXMgdGhlIHdvcmtzcGFjZSBmb3INCisgKiBhIHZpcnR1YWwgYXJyYXkuDQorICovDQorDQorTUVUSE9EREVGKEpTQU1QQVJSQVkpDQorYWxsb2Nfc2FycmF5IChqX2NvbW1vbl9wdHIgY2luZm8sIGludCBwb29sX2lkLA0KKwkgICAgICBKRElNRU5TSU9OIHNhbXBsZXNwZXJyb3csIEpESU1FTlNJT04gbnVtcm93cykNCisvKiBBbGxvY2F0ZSBhIDItRCBzYW1wbGUgYXJyYXkgKi8NCit7DQorICBteV9tZW1fcHRyIG1lbSA9IChteV9tZW1fcHRyKSBjaW5mby0+bWVtOw0KKyAgSlNBTVBBUlJBWSByZXN1bHQ7DQorICBKU0FNUFJPVyB3b3Jrc3BhY2U7DQorICBKRElNRU5TSU9OIHJvd3NwZXJjaHVuaywgY3Vycm93LCBpOw0KKyAgbG9uZyBsdGVtcDsNCisNCisgIC8qIENhbGN1bGF0ZSBtYXggIyBvZiByb3dzIGFsbG93ZWQgaW4gb25lIGFsbG9jYXRpb24gY2h1bmsgKi8NCisgIGx0ZW1wID0gKE1BWF9BTExPQ19DSFVOSy1TSVpFT0YobGFyZ2VfcG9vbF9oZHIpKSAvDQorCSAgKChsb25nKSBzYW1wbGVzcGVycm93ICogU0laRU9GKEpTQU1QTEUpKTsNCisgIGlmIChsdGVtcCA8PSAwKQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX1dJRFRIX09WRVJGTE9XKTsNCisgIGlmIChsdGVtcCA8IChsb25nKSBudW1yb3dzKQ0KKyAgICByb3dzcGVyY2h1bmsgPSAoSkRJTUVOU0lPTikgbHRlbXA7DQorICBlbHNlDQorICAgIHJvd3NwZXJjaHVuayA9IG51bXJvd3M7DQorICBtZW0tPmxhc3Rfcm93c3BlcmNodW5rID0gcm93c3BlcmNodW5rOw0KKw0KKyAgLyogR2V0IHNwYWNlIGZvciByb3cgcG9pbnRlcnMgKHNtYWxsIG9iamVjdCkgKi8NCisgIHJlc3VsdCA9IChKU0FNUEFSUkFZKSBhbGxvY19zbWFsbChjaW5mbywgcG9vbF9pZCwNCisJCQkJICAgIChzaXplX3QpIChudW1yb3dzICogU0laRU9GKEpTQU1QUk9XKSkpOw0KKw0KKyAgLyogR2V0IHRoZSByb3dzIHRoZW1zZWx2ZXMgKGxhcmdlIG9iamVjdHMpICovDQorICBjdXJyb3cgPSAwOw0KKyAgd2hpbGUgKGN1cnJvdyA8IG51bXJvd3MpIHsNCisgICAgcm93c3BlcmNodW5rID0gTUlOKHJvd3NwZXJjaHVuaywgbnVtcm93cyAtIGN1cnJvdyk7DQorICAgIHdvcmtzcGFjZSA9IChKU0FNUFJPVykgYWxsb2NfbGFyZ2UoY2luZm8sIHBvb2xfaWQsDQorCShzaXplX3QpICgoc2l6ZV90KSByb3dzcGVyY2h1bmsgKiAoc2l6ZV90KSBzYW1wbGVzcGVycm93DQorCQkgICogU0laRU9GKEpTQU1QTEUpKSk7DQorICAgIGZvciAoaSA9IHJvd3NwZXJjaHVuazsgaSA+IDA7IGktLSkgew0KKyAgICAgIHJlc3VsdFtjdXJyb3crK10gPSB3b3Jrc3BhY2U7DQorICAgICAgd29ya3NwYWNlICs9IHNhbXBsZXNwZXJyb3c7DQorICAgIH0NCisgIH0NCisNCisgIHJldHVybiByZXN1bHQ7DQorfQ0KKw0KKw0KKy8qDQorICogQ3JlYXRpb24gb2YgMi1EIGNvZWZmaWNpZW50LWJsb2NrIGFycmF5cy4NCisgKiBUaGlzIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIHRoZSBjb2RlIGZvciBzYW1wbGUgYXJyYXlzLCBhYm92ZS4NCisgKi8NCisNCitNRVRIT0RERUYoSkJMT0NLQVJSQVkpDQorYWxsb2NfYmFycmF5IChqX2NvbW1vbl9wdHIgY2luZm8sIGludCBwb29sX2lkLA0KKwkgICAgICBKRElNRU5TSU9OIGJsb2Nrc3BlcnJvdywgSkRJTUVOU0lPTiBudW1yb3dzKQ0KKy8qIEFsbG9jYXRlIGEgMi1EIGNvZWZmaWNpZW50LWJsb2NrIGFycmF5ICovDQorew0KKyAgbXlfbWVtX3B0ciBtZW0gPSAobXlfbWVtX3B0cikgY2luZm8tPm1lbTsNCisgIEpCTE9DS0FSUkFZIHJlc3VsdDsNCisgIEpCTE9DS1JPVyB3b3Jrc3BhY2U7DQorICBKRElNRU5TSU9OIHJvd3NwZXJjaHVuaywgY3Vycm93LCBpOw0KKyAgbG9uZyBsdGVtcDsNCisNCisgIC8qIENhbGN1bGF0ZSBtYXggIyBvZiByb3dzIGFsbG93ZWQgaW4gb25lIGFsbG9jYXRpb24gY2h1bmsgKi8NCisgIGx0ZW1wID0gKE1BWF9BTExPQ19DSFVOSy1TSVpFT0YobGFyZ2VfcG9vbF9oZHIpKSAvDQorCSAgKChsb25nKSBibG9ja3NwZXJyb3cgKiBTSVpFT0YoSkJMT0NLKSk7DQorICBpZiAobHRlbXAgPD0gMCkNCisgICAgRVJSRVhJVChjaW5mbywgSkVSUl9XSURUSF9PVkVSRkxPVyk7DQorICBpZiAobHRlbXAgPCAobG9uZykgbnVtcm93cykNCisgICAgcm93c3BlcmNodW5rID0gKEpESU1FTlNJT04pIGx0ZW1wOw0KKyAgZWxzZQ0KKyAgICByb3dzcGVyY2h1bmsgPSBudW1yb3dzOw0KKyAgbWVtLT5sYXN0X3Jvd3NwZXJjaHVuayA9IHJvd3NwZXJjaHVuazsNCisNCisgIC8qIEdldCBzcGFjZSBmb3Igcm93IHBvaW50ZXJzIChzbWFsbCBvYmplY3QpICovDQorICByZXN1bHQgPSAoSkJMT0NLQVJSQVkpIGFsbG9jX3NtYWxsKGNpbmZvLCBwb29sX2lkLA0KKwkJCQkgICAgIChzaXplX3QpIChudW1yb3dzICogU0laRU9GKEpCTE9DS1JPVykpKTsNCisNCisgIC8qIEdldCB0aGUgcm93cyB0aGVtc2VsdmVzIChsYXJnZSBvYmplY3RzKSAqLw0KKyAgY3Vycm93ID0gMDsNCisgIHdoaWxlIChjdXJyb3cgPCBudW1yb3dzKSB7DQorICAgIHJvd3NwZXJjaHVuayA9IE1JTihyb3dzcGVyY2h1bmssIG51bXJvd3MgLSBjdXJyb3cpOw0KKyAgICB3b3Jrc3BhY2UgPSAoSkJMT0NLUk9XKSBhbGxvY19sYXJnZShjaW5mbywgcG9vbF9pZCwNCisJKHNpemVfdCkgKChzaXplX3QpIHJvd3NwZXJjaHVuayAqIChzaXplX3QpIGJsb2Nrc3BlcnJvdw0KKwkJICAqIFNJWkVPRihKQkxPQ0spKSk7DQorICAgIGZvciAoaSA9IHJvd3NwZXJjaHVuazsgaSA+IDA7IGktLSkgew0KKyAgICAgIHJlc3VsdFtjdXJyb3crK10gPSB3b3Jrc3BhY2U7DQorICAgICAgd29ya3NwYWNlICs9IGJsb2Nrc3BlcnJvdzsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgcmV0dXJuIHJlc3VsdDsNCit9DQorDQorDQorLyoNCisgKiBBYm91dCB2aXJ0dWFsIGFycmF5IG1hbmFnZW1lbnQ6DQorICoNCisgKiBUaGUgYWJvdmUgIm5vcm1hbCIgYXJyYXkgcm91dGluZXMgYXJlIG9ubHkgdXNlZCB0byBhbGxvY2F0ZSBzdHJpcCBidWZmZXJzDQorICogKGFzIHdpZGUgYXMgdGhlIGltYWdlLCBidXQganVzdCBhIGZldyByb3dzIGhpZ2gpLiAgRnVsbC1pbWFnZS1zaXplZCBidWZmZXJzDQorICogYXJlIGhhbmRsZWQgYXMgInZpcnR1YWwiIGFycmF5cy4gIFRoZSBhcnJheSBpcyBzdGlsbCBhY2Nlc3NlZCBhIHN0cmlwIGF0IGENCisgKiB0aW1lLCBidXQgdGhlIG1lbW9yeSBtYW5hZ2VyIG11c3Qgc2F2ZSB0aGUgd2hvbGUgYXJyYXkgZm9yIHJlcGVhdGVkDQorICogYWNjZXNzZXMuICBUaGUgaW50ZW5kZWQgaW1wbGVtZW50YXRpb24gaXMgdGhhdCB0aGVyZSBpcyBhIHN0cmlwIGJ1ZmZlciBpbg0KKyAqIG1lbW9yeSAoYXMgaGlnaCBhcyBpcyBwb3NzaWJsZSBnaXZlbiB0aGUgZGVzaXJlZCBtZW1vcnkgbGltaXQpLCBwbHVzIGENCisgKiBiYWNraW5nIGZpbGUgdGhhdCBob2xkcyB0aGUgcmVzdCBvZiB0aGUgYXJyYXkuDQorICoNCisgKiBUaGUgcmVxdWVzdF92aXJ0X2FycmF5IHJvdXRpbmVzIGFyZSB0b2xkIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBpbWFnZSBhbmQNCisgKiB0aGUgbWF4aW11bSBudW1iZXIgb2Ygcm93cyB0aGF0IHdpbGwgYmUgYWNjZXNzZWQgYXQgb25jZS4gIFRoZSBpbi1tZW1vcnkNCisgKiBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCBhcyBsYXJnZSBhcyB0aGUgbWF4YWNjZXNzIHZhbHVlLg0KKyAqDQorICogVGhlIHJlcXVlc3Qgcm91dGluZXMgY3JlYXRlIGNvbnRyb2wgYmxvY2tzIGJ1dCBub3QgdGhlIGluLW1lbW9yeSBidWZmZXJzLg0KKyAqIFRoYXQgaXMgcG9zdHBvbmVkIHVudGlsIHJlYWxpemVfdmlydF9hcnJheXMgaXMgY2FsbGVkLiAgQXQgdGhhdCB0aW1lIHRoZQ0KKyAqIHRvdGFsIGFtb3VudCBvZiBzcGFjZSBuZWVkZWQgaXMga25vd24gKGFwcHJveGltYXRlbHksIGFueXdheSksIHNvIGZyZWUNCisgKiBtZW1vcnkgY2FuIGJlIGRpdmlkZWQgdXAgZmFpcmx5Lg0KKyAqDQorICogVGhlIGFjY2Vzc192aXJ0X2FycmF5IHJvdXRpbmVzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFraW5nIGEgc3BlY2lmaWMgc3RyaXANCisgKiBhcmVhIGFjY2Vzc2libGUgKGFmdGVyIHJlYWRpbmcgb3Igd3JpdGluZyB0aGUgYmFja2luZyBmaWxlLCBpZiBuZWNlc3NhcnkpLg0KKyAqIE5vdGUgdGhhdCB0aGUgYWNjZXNzIHJvdXRpbmVzIGFyZSB0b2xkIHdoZXRoZXIgdGhlIGNhbGxlciBpbnRlbmRzIHRvIG1vZGlmeQ0KKyAqIHRoZSBhY2Nlc3NlZCBzdHJpcDsgZHVyaW5nIGEgcmVhZC1vbmx5IHBhc3MgdGhpcyBzYXZlcyBoYXZpbmcgdG8gcmV3cml0ZQ0KKyAqIGRhdGEgdG8gZGlzay4gIFRoZSBhY2Nlc3Mgcm91dGluZXMgYXJlIGFsc28gcmVzcG9uc2libGUgZm9yIHByZS16ZXJvaW5nDQorICogYW55IG5ld2x5IGFjY2Vzc2VkIHJvd3MsIGlmIHByZS16ZXJvaW5nIHdhcyByZXF1ZXN0ZWQuDQorICoNCisgKiBJbiBjdXJyZW50IHVzYWdlLCB0aGUgYWNjZXNzIHJlcXVlc3RzIGFyZSB1c3VhbGx5IGZvciBub25vdmVybGFwcGluZw0KKyAqIHN0cmlwczsgdGhhdCBpcywgc3VjY2Vzc2l2ZSBhY2Nlc3Mgc3RhcnRfcm93IG51bWJlcnMgZGlmZmVyIGJ5IGV4YWN0bHkNCisgKiBudW1fcm93cyA9IG1heGFjY2Vzcy4gIFRoaXMgbWVhbnMgd2UgY2FuIGdldCBnb29kIHBlcmZvcm1hbmNlIHdpdGggc2ltcGxlDQorICogYnVmZmVyIGR1bXAvcmVsb2FkIGxvZ2ljLCBieSBtYWtpbmcgdGhlIGluLW1lbW9yeSBidWZmZXIgYmUgYSBtdWx0aXBsZQ0KKyAqIG9mIHRoZSBhY2Nlc3MgaGVpZ2h0OyB0aGVuIHRoZXJlIHdpbGwgbmV2ZXIgYmUgYWNjZXNzZXMgYWNyb3NzIGJ1ZmZlcmxvYWQNCisgKiBib3VuZGFyaWVzLiAgVGhlIGNvZGUgd2lsbCBzdGlsbCB3b3JrIHdpdGggb3ZlcmxhcHBpbmcgYWNjZXNzIHJlcXVlc3RzLA0KKyAqIGJ1dCBpdCBkb2Vzbid0IGhhbmRsZSBidWZmZXJsb2FkIG92ZXJsYXBzIHZlcnkgZWZmaWNpZW50bHkuDQorICovDQorDQorDQorTUVUSE9EREVGKGp2aXJ0X3NhcnJheV9wdHIpDQorcmVxdWVzdF92aXJ0X3NhcnJheSAoal9jb21tb25fcHRyIGNpbmZvLCBpbnQgcG9vbF9pZCwgYm9vbGVhbiBwcmVfemVybywNCisJCSAgICAgSkRJTUVOU0lPTiBzYW1wbGVzcGVycm93LCBKRElNRU5TSU9OIG51bXJvd3MsDQorCQkgICAgIEpESU1FTlNJT04gbWF4YWNjZXNzKQ0KKy8qIFJlcXVlc3QgYSB2aXJ0dWFsIDItRCBzYW1wbGUgYXJyYXkgKi8NCit7DQorICBteV9tZW1fcHRyIG1lbSA9IChteV9tZW1fcHRyKSBjaW5mby0+bWVtOw0KKyAganZpcnRfc2FycmF5X3B0ciByZXN1bHQ7DQorDQorICAvKiBPbmx5IElNQUdFLWxpZmV0aW1lIHZpcnR1YWwgYXJyYXlzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkICovDQorICBpZiAocG9vbF9pZCAhPSBKUE9PTF9JTUFHRSkNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1BPT0xfSUQsIHBvb2xfaWQpOwkvKiBzYWZldHkgY2hlY2sgKi8NCisNCisgIC8qIGdldCBjb250cm9sIGJsb2NrICovDQorICByZXN1bHQgPSAoanZpcnRfc2FycmF5X3B0cikgYWxsb2Nfc21hbGwoY2luZm8sIHBvb2xfaWQsDQorCQkJCQkgIFNJWkVPRihzdHJ1Y3QganZpcnRfc2FycmF5X2NvbnRyb2wpKTsNCisNCisgIHJlc3VsdC0+bWVtX2J1ZmZlciA9IE5VTEw7CS8qIG1hcmtzIGFycmF5IG5vdCB5ZXQgcmVhbGl6ZWQgKi8NCisgIHJlc3VsdC0+cm93c19pbl9hcnJheSA9IG51bXJvd3M7DQorICByZXN1bHQtPnNhbXBsZXNwZXJyb3cgPSBzYW1wbGVzcGVycm93Ow0KKyAgcmVzdWx0LT5tYXhhY2Nlc3MgPSBtYXhhY2Nlc3M7DQorICByZXN1bHQtPnByZV96ZXJvID0gcHJlX3plcm87DQorICByZXN1bHQtPmJfc19vcGVuID0gRkFMU0U7CS8qIG5vIGFzc29jaWF0ZWQgYmFja2luZy1zdG9yZSBvYmplY3QgKi8NCisgIHJlc3VsdC0+bmV4dCA9IG1lbS0+dmlydF9zYXJyYXlfbGlzdDsgLyogYWRkIHRvIGxpc3Qgb2YgdmlydHVhbCBhcnJheXMgKi8NCisgIG1lbS0+dmlydF9zYXJyYXlfbGlzdCA9IHJlc3VsdDsNCisNCisgIHJldHVybiByZXN1bHQ7DQorfQ0KKw0KKw0KK01FVEhPRERFRihqdmlydF9iYXJyYXlfcHRyKQ0KK3JlcXVlc3RfdmlydF9iYXJyYXkgKGpfY29tbW9uX3B0ciBjaW5mbywgaW50IHBvb2xfaWQsIGJvb2xlYW4gcHJlX3plcm8sDQorCQkgICAgIEpESU1FTlNJT04gYmxvY2tzcGVycm93LCBKRElNRU5TSU9OIG51bXJvd3MsDQorCQkgICAgIEpESU1FTlNJT04gbWF4YWNjZXNzKQ0KKy8qIFJlcXVlc3QgYSB2aXJ0dWFsIDItRCBjb2VmZmljaWVudC1ibG9jayBhcnJheSAqLw0KK3sNCisgIG15X21lbV9wdHIgbWVtID0gKG15X21lbV9wdHIpIGNpbmZvLT5tZW07DQorICBqdmlydF9iYXJyYXlfcHRyIHJlc3VsdDsNCisNCisgIC8qIE9ubHkgSU1BR0UtbGlmZXRpbWUgdmlydHVhbCBhcnJheXMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQgKi8NCisgIGlmIChwb29sX2lkICE9IEpQT09MX0lNQUdFKQ0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9CQURfUE9PTF9JRCwgcG9vbF9pZCk7CS8qIHNhZmV0eSBjaGVjayAqLw0KKw0KKyAgLyogZ2V0IGNvbnRyb2wgYmxvY2sgKi8NCisgIHJlc3VsdCA9IChqdmlydF9iYXJyYXlfcHRyKSBhbGxvY19zbWFsbChjaW5mbywgcG9vbF9pZCwNCisJCQkJCSAgU0laRU9GKHN0cnVjdCBqdmlydF9iYXJyYXlfY29udHJvbCkpOw0KKw0KKyAgcmVzdWx0LT5tZW1fYnVmZmVyID0gTlVMTDsJLyogbWFya3MgYXJyYXkgbm90IHlldCByZWFsaXplZCAqLw0KKyAgcmVzdWx0LT5yb3dzX2luX2FycmF5ID0gbnVtcm93czsNCisgIHJlc3VsdC0+YmxvY2tzcGVycm93ID0gYmxvY2tzcGVycm93Ow0KKyAgcmVzdWx0LT5tYXhhY2Nlc3MgPSBtYXhhY2Nlc3M7DQorICByZXN1bHQtPnByZV96ZXJvID0gcHJlX3plcm87DQorICByZXN1bHQtPmJfc19vcGVuID0gRkFMU0U7CS8qIG5vIGFzc29jaWF0ZWQgYmFja2luZy1zdG9yZSBvYmplY3QgKi8NCisgIHJlc3VsdC0+bmV4dCA9IG1lbS0+dmlydF9iYXJyYXlfbGlzdDsgLyogYWRkIHRvIGxpc3Qgb2YgdmlydHVhbCBhcnJheXMgKi8NCisgIG1lbS0+dmlydF9iYXJyYXlfbGlzdCA9IHJlc3VsdDsNCisNCisgIHJldHVybiByZXN1bHQ7DQorfQ0KKw0KKw0KK01FVEhPRERFRih2b2lkKQ0KK3JlYWxpemVfdmlydF9hcnJheXMgKGpfY29tbW9uX3B0ciBjaW5mbykNCisvKiBBbGxvY2F0ZSB0aGUgaW4tbWVtb3J5IGJ1ZmZlcnMgZm9yIGFueSB1bnJlYWxpemVkIHZpcnR1YWwgYXJyYXlzICovDQorew0KKyAgbXlfbWVtX3B0ciBtZW0gPSAobXlfbWVtX3B0cikgY2luZm8tPm1lbTsNCisgIGxvbmcgc3BhY2VfcGVyX21pbmhlaWdodCwgbWF4aW11bV9zcGFjZSwgYXZhaWxfbWVtOw0KKyAgbG9uZyBtaW5oZWlnaHRzLCBtYXhfbWluaGVpZ2h0czsNCisgIGp2aXJ0X3NhcnJheV9wdHIgc3B0cjsNCisgIGp2aXJ0X2JhcnJheV9wdHIgYnB0cjsNCisNCisgIC8qIENvbXB1dGUgdGhlIG1pbmltdW0gc3BhY2UgbmVlZGVkIChtYXhhY2Nlc3Mgcm93cyBpbiBlYWNoIGJ1ZmZlcikNCisgICAqIGFuZCB0aGUgbWF4aW11bSBzcGFjZSBuZWVkZWQgKGZ1bGwgaW1hZ2UgaGVpZ2h0IGluIGVhY2ggYnVmZmVyKS4NCisgICAqIFRoZXNlIG1heSBiZSBvZiB1c2UgdG8gdGhlIHN5c3RlbS1kZXBlbmRlbnQganBlZ19tZW1fYXZhaWxhYmxlIHJvdXRpbmUuDQorICAgKi8NCisgIHNwYWNlX3Blcl9taW5oZWlnaHQgPSAwOw0KKyAgbWF4aW11bV9zcGFjZSA9IDA7DQorICBmb3IgKHNwdHIgPSBtZW0tPnZpcnRfc2FycmF5X2xpc3Q7IHNwdHIgIT0gTlVMTDsgc3B0ciA9IHNwdHItPm5leHQpIHsNCisgICAgaWYgKHNwdHItPm1lbV9idWZmZXIgPT0gTlVMTCkgeyAvKiBpZiBub3QgcmVhbGl6ZWQgeWV0ICovDQorICAgICAgc3BhY2VfcGVyX21pbmhlaWdodCArPSAobG9uZykgc3B0ci0+bWF4YWNjZXNzICoNCisJCQkgICAgIChsb25nKSBzcHRyLT5zYW1wbGVzcGVycm93ICogU0laRU9GKEpTQU1QTEUpOw0KKyAgICAgIG1heGltdW1fc3BhY2UgKz0gKGxvbmcpIHNwdHItPnJvd3NfaW5fYXJyYXkgKg0KKwkJICAgICAgIChsb25nKSBzcHRyLT5zYW1wbGVzcGVycm93ICogU0laRU9GKEpTQU1QTEUpOw0KKyAgICB9DQorICB9DQorICBmb3IgKGJwdHIgPSBtZW0tPnZpcnRfYmFycmF5X2xpc3Q7IGJwdHIgIT0gTlVMTDsgYnB0ciA9IGJwdHItPm5leHQpIHsNCisgICAgaWYgKGJwdHItPm1lbV9idWZmZXIgPT0gTlVMTCkgeyAvKiBpZiBub3QgcmVhbGl6ZWQgeWV0ICovDQorICAgICAgc3BhY2VfcGVyX21pbmhlaWdodCArPSAobG9uZykgYnB0ci0+bWF4YWNjZXNzICoNCisJCQkgICAgIChsb25nKSBicHRyLT5ibG9ja3NwZXJyb3cgKiBTSVpFT0YoSkJMT0NLKTsNCisgICAgICBtYXhpbXVtX3NwYWNlICs9IChsb25nKSBicHRyLT5yb3dzX2luX2FycmF5ICoNCisJCSAgICAgICAobG9uZykgYnB0ci0+YmxvY2tzcGVycm93ICogU0laRU9GKEpCTE9DSyk7DQorICAgIH0NCisgIH0NCisNCisgIGlmIChzcGFjZV9wZXJfbWluaGVpZ2h0IDw9IDApDQorICAgIHJldHVybjsJCQkvKiBubyB1bnJlYWxpemVkIGFycmF5cywgbm8gd29yayAqLw0KKw0KKyAgLyogRGV0ZXJtaW5lIGFtb3VudCBvZiBtZW1vcnkgdG8gYWN0dWFsbHkgdXNlOyB0aGlzIGlzIHN5c3RlbS1kZXBlbmRlbnQuICovDQorICBhdmFpbF9tZW0gPSBqcGVnX21lbV9hdmFpbGFibGUoY2luZm8sIHNwYWNlX3Blcl9taW5oZWlnaHQsIG1heGltdW1fc3BhY2UsDQorCQkJCSBtZW0tPnRvdGFsX3NwYWNlX2FsbG9jYXRlZCk7DQorDQorICAvKiBJZiB0aGUgbWF4aW11bSBzcGFjZSBuZWVkZWQgaXMgYXZhaWxhYmxlLCBtYWtlIGFsbCB0aGUgYnVmZmVycyBmdWxsDQorICAgKiBoZWlnaHQ7IG90aGVyd2lzZSBwYXJjZWwgaXQgb3V0IHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIG1pbmhlaWdodHMNCisgICAqIGluIGVhY2ggYnVmZmVyLg0KKyAgICovDQorICBpZiAoYXZhaWxfbWVtID49IG1heGltdW1fc3BhY2UpDQorICAgIG1heF9taW5oZWlnaHRzID0gMTAwMDAwMDAwMEw7DQorICBlbHNlIHsNCisgICAgbWF4X21pbmhlaWdodHMgPSBhdmFpbF9tZW0gLyBzcGFjZV9wZXJfbWluaGVpZ2h0Ow0KKyAgICAvKiBJZiB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgZW5vdWdoIHNwYWNlLCB0cnkgdG8gZ2V0IHRoZSBtaW5pbXVtDQorICAgICAqIGFueXdheS4gIFRoaXMgYWxsb3dzIGEgInN0dWIiIGltcGxlbWVudGF0aW9uIG9mIGpwZWdfbWVtX2F2YWlsYWJsZSgpLg0KKyAgICAgKi8NCisgICAgaWYgKG1heF9taW5oZWlnaHRzIDw9IDApDQorICAgICAgbWF4X21pbmhlaWdodHMgPSAxOw0KKyAgfQ0KKw0KKyAgLyogQWxsb2NhdGUgdGhlIGluLW1lbW9yeSBidWZmZXJzIGFuZCBpbml0aWFsaXplIGJhY2tpbmcgc3RvcmUgYXMgbmVlZGVkLiAqLw0KKw0KKyAgZm9yIChzcHRyID0gbWVtLT52aXJ0X3NhcnJheV9saXN0OyBzcHRyICE9IE5VTEw7IHNwdHIgPSBzcHRyLT5uZXh0KSB7DQorICAgIGlmIChzcHRyLT5tZW1fYnVmZmVyID09IE5VTEwpIHsgLyogaWYgbm90IHJlYWxpemVkIHlldCAqLw0KKyAgICAgIG1pbmhlaWdodHMgPSAoKGxvbmcpIHNwdHItPnJvd3NfaW5fYXJyYXkgLSAxTCkgLyBzcHRyLT5tYXhhY2Nlc3MgKyAxTDsNCisgICAgICBpZiAobWluaGVpZ2h0cyA8PSBtYXhfbWluaGVpZ2h0cykgew0KKwkvKiBUaGlzIGJ1ZmZlciBmaXRzIGluIG1lbW9yeSAqLw0KKwlzcHRyLT5yb3dzX2luX21lbSA9IHNwdHItPnJvd3NfaW5fYXJyYXk7DQorICAgICAgfSBlbHNlIHsNCisJLyogSXQgZG9lc24ndCBmaXQgaW4gbWVtb3J5LCBjcmVhdGUgYmFja2luZyBzdG9yZS4gKi8NCisJc3B0ci0+cm93c19pbl9tZW0gPSAoSkRJTUVOU0lPTikgKG1heF9taW5oZWlnaHRzICogc3B0ci0+bWF4YWNjZXNzKTsNCisJanBlZ19vcGVuX2JhY2tpbmdfc3RvcmUoY2luZm8sICYgc3B0ci0+Yl9zX2luZm8sDQorCQkJCShsb25nKSBzcHRyLT5yb3dzX2luX2FycmF5ICoNCisJCQkJKGxvbmcpIHNwdHItPnNhbXBsZXNwZXJyb3cgKg0KKwkJCQkobG9uZykgU0laRU9GKEpTQU1QTEUpKTsNCisJc3B0ci0+Yl9zX29wZW4gPSBUUlVFOw0KKyAgICAgIH0NCisgICAgICBzcHRyLT5tZW1fYnVmZmVyID0gYWxsb2Nfc2FycmF5KGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJICAgICAgc3B0ci0+c2FtcGxlc3BlcnJvdywgc3B0ci0+cm93c19pbl9tZW0pOw0KKyAgICAgIHNwdHItPnJvd3NwZXJjaHVuayA9IG1lbS0+bGFzdF9yb3dzcGVyY2h1bms7DQorICAgICAgc3B0ci0+Y3VyX3N0YXJ0X3JvdyA9IDA7DQorICAgICAgc3B0ci0+Zmlyc3RfdW5kZWZfcm93ID0gMDsNCisgICAgICBzcHRyLT5kaXJ0eSA9IEZBTFNFOw0KKyAgICB9DQorICB9DQorDQorICBmb3IgKGJwdHIgPSBtZW0tPnZpcnRfYmFycmF5X2xpc3Q7IGJwdHIgIT0gTlVMTDsgYnB0ciA9IGJwdHItPm5leHQpIHsNCisgICAgaWYgKGJwdHItPm1lbV9idWZmZXIgPT0gTlVMTCkgeyAvKiBpZiBub3QgcmVhbGl6ZWQgeWV0ICovDQorICAgICAgbWluaGVpZ2h0cyA9ICgobG9uZykgYnB0ci0+cm93c19pbl9hcnJheSAtIDFMKSAvIGJwdHItPm1heGFjY2VzcyArIDFMOw0KKyAgICAgIGlmIChtaW5oZWlnaHRzIDw9IG1heF9taW5oZWlnaHRzKSB7DQorCS8qIFRoaXMgYnVmZmVyIGZpdHMgaW4gbWVtb3J5ICovDQorCWJwdHItPnJvd3NfaW5fbWVtID0gYnB0ci0+cm93c19pbl9hcnJheTsNCisgICAgICB9IGVsc2Ugew0KKwkvKiBJdCBkb2Vzbid0IGZpdCBpbiBtZW1vcnksIGNyZWF0ZSBiYWNraW5nIHN0b3JlLiAqLw0KKwlicHRyLT5yb3dzX2luX21lbSA9IChKRElNRU5TSU9OKSAobWF4X21pbmhlaWdodHMgKiBicHRyLT5tYXhhY2Nlc3MpOw0KKwlqcGVnX29wZW5fYmFja2luZ19zdG9yZShjaW5mbywgJiBicHRyLT5iX3NfaW5mbywNCisJCQkJKGxvbmcpIGJwdHItPnJvd3NfaW5fYXJyYXkgKg0KKwkJCQkobG9uZykgYnB0ci0+YmxvY2tzcGVycm93ICoNCisJCQkJKGxvbmcpIFNJWkVPRihKQkxPQ0spKTsNCisJYnB0ci0+Yl9zX29wZW4gPSBUUlVFOw0KKyAgICAgIH0NCisgICAgICBicHRyLT5tZW1fYnVmZmVyID0gYWxsb2NfYmFycmF5KGNpbmZvLCBKUE9PTF9JTUFHRSwNCisJCQkJICAgICAgYnB0ci0+YmxvY2tzcGVycm93LCBicHRyLT5yb3dzX2luX21lbSk7DQorICAgICAgYnB0ci0+cm93c3BlcmNodW5rID0gbWVtLT5sYXN0X3Jvd3NwZXJjaHVuazsNCisgICAgICBicHRyLT5jdXJfc3RhcnRfcm93ID0gMDsNCisgICAgICBicHRyLT5maXJzdF91bmRlZl9yb3cgPSAwOw0KKyAgICAgIGJwdHItPmRpcnR5ID0gRkFMU0U7DQorICAgIH0NCisgIH0NCit9DQorDQorDQorTE9DQUwodm9pZCkNCitkb19zYXJyYXlfaW8gKGpfY29tbW9uX3B0ciBjaW5mbywganZpcnRfc2FycmF5X3B0ciBwdHIsIGJvb2xlYW4gd3JpdGluZykNCisvKiBEbyBiYWNraW5nIHN0b3JlIHJlYWQgb3Igd3JpdGUgb2YgYSB2aXJ0dWFsIHNhbXBsZSBhcnJheSAqLw0KK3sNCisgIGxvbmcgYnl0ZXNwZXJyb3csIGZpbGVfb2Zmc2V0LCBieXRlX2NvdW50LCByb3dzLCB0aGlzcm93LCBpOw0KKw0KKyAgYnl0ZXNwZXJyb3cgPSAobG9uZykgcHRyLT5zYW1wbGVzcGVycm93ICogU0laRU9GKEpTQU1QTEUpOw0KKyAgZmlsZV9vZmZzZXQgPSBwdHItPmN1cl9zdGFydF9yb3cgKiBieXRlc3BlcnJvdzsNCisgIC8qIExvb3AgdG8gcmVhZCBvciB3cml0ZSBlYWNoIGFsbG9jYXRpb24gY2h1bmsgaW4gbWVtX2J1ZmZlciAqLw0KKyAgZm9yIChpID0gMDsgaSA8IChsb25nKSBwdHItPnJvd3NfaW5fbWVtOyBpICs9IHB0ci0+cm93c3BlcmNodW5rKSB7DQorICAgIC8qIE9uZSBjaHVuaywgYnV0IGNoZWNrIGZvciBzaG9ydCBjaHVuayBhdCBlbmQgb2YgYnVmZmVyICovDQorICAgIHJvd3MgPSBNSU4oKGxvbmcpIHB0ci0+cm93c3BlcmNodW5rLCAobG9uZykgcHRyLT5yb3dzX2luX21lbSAtIGkpOw0KKyAgICAvKiBUcmFuc2ZlciBubyBtb3JlIHRoYW4gaXMgY3VycmVudGx5IGRlZmluZWQgKi8NCisgICAgdGhpc3JvdyA9IChsb25nKSBwdHItPmN1cl9zdGFydF9yb3cgKyBpOw0KKyAgICByb3dzID0gTUlOKHJvd3MsIChsb25nKSBwdHItPmZpcnN0X3VuZGVmX3JvdyAtIHRoaXNyb3cpOw0KKyAgICAvKiBUcmFuc2ZlciBubyBtb3JlIHRoYW4gZml0cyBpbiBmaWxlICovDQorICAgIHJvd3MgPSBNSU4ocm93cywgKGxvbmcpIHB0ci0+cm93c19pbl9hcnJheSAtIHRoaXNyb3cpOw0KKyAgICBpZiAocm93cyA8PSAwKQkJLyogdGhpcyBjaHVuayBtaWdodCBiZSBwYXN0IGVuZCBvZiBmaWxlISAqLw0KKyAgICAgIGJyZWFrOw0KKyAgICBieXRlX2NvdW50ID0gcm93cyAqIGJ5dGVzcGVycm93Ow0KKyAgICBpZiAod3JpdGluZykNCisgICAgICAoKnB0ci0+Yl9zX2luZm8ud3JpdGVfYmFja2luZ19zdG9yZSkgKGNpbmZvLCAmIHB0ci0+Yl9zX2luZm8sDQorCQkJCQkgICAgKHZvaWQgRkFSICopIHB0ci0+bWVtX2J1ZmZlcltpXSwNCisJCQkJCSAgICBmaWxlX29mZnNldCwgYnl0ZV9jb3VudCk7DQorICAgIGVsc2UNCisgICAgICAoKnB0ci0+Yl9zX2luZm8ucmVhZF9iYWNraW5nX3N0b3JlKSAoY2luZm8sICYgcHRyLT5iX3NfaW5mbywNCisJCQkJCSAgICh2b2lkIEZBUiAqKSBwdHItPm1lbV9idWZmZXJbaV0sDQorCQkJCQkgICBmaWxlX29mZnNldCwgYnl0ZV9jb3VudCk7DQorICAgIGZpbGVfb2Zmc2V0ICs9IGJ5dGVfY291bnQ7DQorICB9DQorfQ0KKw0KKw0KK0xPQ0FMKHZvaWQpDQorZG9fYmFycmF5X2lvIChqX2NvbW1vbl9wdHIgY2luZm8sIGp2aXJ0X2JhcnJheV9wdHIgcHRyLCBib29sZWFuIHdyaXRpbmcpDQorLyogRG8gYmFja2luZyBzdG9yZSByZWFkIG9yIHdyaXRlIG9mIGEgdmlydHVhbCBjb2VmZmljaWVudC1ibG9jayBhcnJheSAqLw0KK3sNCisgIGxvbmcgYnl0ZXNwZXJyb3csIGZpbGVfb2Zmc2V0LCBieXRlX2NvdW50LCByb3dzLCB0aGlzcm93LCBpOw0KKw0KKyAgYnl0ZXNwZXJyb3cgPSAobG9uZykgcHRyLT5ibG9ja3NwZXJyb3cgKiBTSVpFT0YoSkJMT0NLKTsNCisgIGZpbGVfb2Zmc2V0ID0gcHRyLT5jdXJfc3RhcnRfcm93ICogYnl0ZXNwZXJyb3c7DQorICAvKiBMb29wIHRvIHJlYWQgb3Igd3JpdGUgZWFjaCBhbGxvY2F0aW9uIGNodW5rIGluIG1lbV9idWZmZXIgKi8NCisgIGZvciAoaSA9IDA7IGkgPCAobG9uZykgcHRyLT5yb3dzX2luX21lbTsgaSArPSBwdHItPnJvd3NwZXJjaHVuaykgew0KKyAgICAvKiBPbmUgY2h1bmssIGJ1dCBjaGVjayBmb3Igc2hvcnQgY2h1bmsgYXQgZW5kIG9mIGJ1ZmZlciAqLw0KKyAgICByb3dzID0gTUlOKChsb25nKSBwdHItPnJvd3NwZXJjaHVuaywgKGxvbmcpIHB0ci0+cm93c19pbl9tZW0gLSBpKTsNCisgICAgLyogVHJhbnNmZXIgbm8gbW9yZSB0aGFuIGlzIGN1cnJlbnRseSBkZWZpbmVkICovDQorICAgIHRoaXNyb3cgPSAobG9uZykgcHRyLT5jdXJfc3RhcnRfcm93ICsgaTsNCisgICAgcm93cyA9IE1JTihyb3dzLCAobG9uZykgcHRyLT5maXJzdF91bmRlZl9yb3cgLSB0aGlzcm93KTsNCisgICAgLyogVHJhbnNmZXIgbm8gbW9yZSB0aGFuIGZpdHMgaW4gZmlsZSAqLw0KKyAgICByb3dzID0gTUlOKHJvd3MsIChsb25nKSBwdHItPnJvd3NfaW5fYXJyYXkgLSB0aGlzcm93KTsNCisgICAgaWYgKHJvd3MgPD0gMCkJCS8qIHRoaXMgY2h1bmsgbWlnaHQgYmUgcGFzdCBlbmQgb2YgZmlsZSEgKi8NCisgICAgICBicmVhazsNCisgICAgYnl0ZV9jb3VudCA9IHJvd3MgKiBieXRlc3BlcnJvdzsNCisgICAgaWYgKHdyaXRpbmcpDQorICAgICAgKCpwdHItPmJfc19pbmZvLndyaXRlX2JhY2tpbmdfc3RvcmUpIChjaW5mbywgJiBwdHItPmJfc19pbmZvLA0KKwkJCQkJICAgICh2b2lkIEZBUiAqKSBwdHItPm1lbV9idWZmZXJbaV0sDQorCQkJCQkgICAgZmlsZV9vZmZzZXQsIGJ5dGVfY291bnQpOw0KKyAgICBlbHNlDQorICAgICAgKCpwdHItPmJfc19pbmZvLnJlYWRfYmFja2luZ19zdG9yZSkgKGNpbmZvLCAmIHB0ci0+Yl9zX2luZm8sDQorCQkJCQkgICAodm9pZCBGQVIgKikgcHRyLT5tZW1fYnVmZmVyW2ldLA0KKwkJCQkJICAgZmlsZV9vZmZzZXQsIGJ5dGVfY291bnQpOw0KKyAgICBmaWxlX29mZnNldCArPSBieXRlX2NvdW50Ow0KKyAgfQ0KK30NCisNCisNCitNRVRIT0RERUYoSlNBTVBBUlJBWSkNCithY2Nlc3NfdmlydF9zYXJyYXkgKGpfY29tbW9uX3B0ciBjaW5mbywganZpcnRfc2FycmF5X3B0ciBwdHIsDQorCQkgICAgSkRJTUVOU0lPTiBzdGFydF9yb3csIEpESU1FTlNJT04gbnVtX3Jvd3MsDQorCQkgICAgYm9vbGVhbiB3cml0YWJsZSkNCisvKiBBY2Nlc3MgdGhlIHBhcnQgb2YgYSB2aXJ0dWFsIHNhbXBsZSBhcnJheSBzdGFydGluZyBhdCBzdGFydF9yb3cgKi8NCisvKiBhbmQgZXh0ZW5kaW5nIGZvciBudW1fcm93cyByb3dzLiAgd3JpdGFibGUgaXMgdHJ1ZSBpZiAgKi8NCisvKiBjYWxsZXIgaW50ZW5kcyB0byBtb2RpZnkgdGhlIGFjY2Vzc2VkIGFyZWEuICovDQorew0KKyAgSkRJTUVOU0lPTiBlbmRfcm93ID0gc3RhcnRfcm93ICsgbnVtX3Jvd3M7DQorICBKRElNRU5TSU9OIHVuZGVmX3JvdzsNCisNCisgIC8qIGRlYnVnZ2luZyBjaGVjayAqLw0KKyAgaWYgKGVuZF9yb3cgPiBwdHItPnJvd3NfaW5fYXJyYXkgfHwgbnVtX3Jvd3MgPiBwdHItPm1heGFjY2VzcyB8fA0KKyAgICAgIHB0ci0+bWVtX2J1ZmZlciA9PSBOVUxMKQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9WSVJUVUFMX0FDQ0VTUyk7DQorDQorICAvKiBNYWtlIHRoZSBkZXNpcmVkIHBhcnQgb2YgdGhlIHZpcnR1YWwgYXJyYXkgYWNjZXNzaWJsZSAqLw0KKyAgaWYgKHN0YXJ0X3JvdyA8IHB0ci0+Y3VyX3N0YXJ0X3JvdyB8fA0KKyAgICAgIGVuZF9yb3cgPiBwdHItPmN1cl9zdGFydF9yb3crcHRyLT5yb3dzX2luX21lbSkgew0KKyAgICBpZiAoISBwdHItPmJfc19vcGVuKQ0KKyAgICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfVklSVFVBTF9CVUcpOw0KKyAgICAvKiBGbHVzaCBvbGQgYnVmZmVyIGNvbnRlbnRzIGlmIG5lY2Vzc2FyeSAqLw0KKyAgICBpZiAocHRyLT5kaXJ0eSkgew0KKyAgICAgIGRvX3NhcnJheV9pbyhjaW5mbywgcHRyLCBUUlVFKTsNCisgICAgICBwdHItPmRpcnR5ID0gRkFMU0U7DQorICAgIH0NCisgICAgLyogRGVjaWRlIHdoYXQgcGFydCBvZiB2aXJ0dWFsIGFycmF5IHRvIGFjY2Vzcy4NCisgICAgICogQWxnb3JpdGhtOiBpZiB0YXJnZXQgYWRkcmVzcyA+IGN1cnJlbnQgd2luZG93LCBhc3N1bWUgZm9yd2FyZCBzY2FuLA0KKyAgICAgKiBsb2FkIHN0YXJ0aW5nIGF0IHRhcmdldCBhZGRyZXNzLiAgSWYgdGFyZ2V0IGFkZHJlc3MgPCBjdXJyZW50IHdpbmRvdywNCisgICAgICogYXNzdW1lIGJhY2t3YXJkIHNjYW4sIGxvYWQgc28gdGhhdCB0YXJnZXQgYXJlYSBpcyB0b3Agb2Ygd2luZG93Lg0KKyAgICAgKiBOb3RlIHRoYXQgd2hlbiBzd2l0Y2hpbmcgZnJvbSBmb3J3YXJkIHdyaXRlIHRvIGZvcndhcmQgcmVhZCwgd2lsbCBoYXZlDQorICAgICAqIHN0YXJ0X3JvdyA9IDAsIHNvIHRoZSBsaW1pdGluZyBjYXNlIGFwcGxpZXMgYW5kIHdlIGxvYWQgZnJvbSAwIGFueXdheS4NCisgICAgICovDQorICAgIGlmIChzdGFydF9yb3cgPiBwdHItPmN1cl9zdGFydF9yb3cpIHsNCisgICAgICBwdHItPmN1cl9zdGFydF9yb3cgPSBzdGFydF9yb3c7DQorICAgIH0gZWxzZSB7DQorICAgICAgLyogdXNlIGxvbmcgYXJpdGhtZXRpYyBoZXJlIHRvIGF2b2lkIG92ZXJmbG93ICYgdW5zaWduZWQgcHJvYmxlbXMgKi8NCisgICAgICBsb25nIGx0ZW1wOw0KKw0KKyAgICAgIGx0ZW1wID0gKGxvbmcpIGVuZF9yb3cgLSAobG9uZykgcHRyLT5yb3dzX2luX21lbTsNCisgICAgICBpZiAobHRlbXAgPCAwKQ0KKwlsdGVtcCA9IDA7CQkvKiBkb24ndCBmYWxsIG9mZiBmcm9udCBlbmQgb2YgZmlsZSAqLw0KKyAgICAgIHB0ci0+Y3VyX3N0YXJ0X3JvdyA9IChKRElNRU5TSU9OKSBsdGVtcDsNCisgICAgfQ0KKyAgICAvKiBSZWFkIGluIHRoZSBzZWxlY3RlZCBwYXJ0IG9mIHRoZSBhcnJheS4NCisgICAgICogRHVyaW5nIHRoZSBpbml0aWFsIHdyaXRlIHBhc3MsIHdlIHdpbGwgZG8gbm8gYWN0dWFsIHJlYWQNCisgICAgICogYmVjYXVzZSB0aGUgc2VsZWN0ZWQgcGFydCBpcyBhbGwgdW5kZWZpbmVkLg0KKyAgICAgKi8NCisgICAgZG9fc2FycmF5X2lvKGNpbmZvLCBwdHIsIEZBTFNFKTsNCisgIH0NCisgIC8qIEVuc3VyZSB0aGUgYWNjZXNzZWQgcGFydCBvZiB0aGUgYXJyYXkgaXMgZGVmaW5lZDsgcHJlemVybyBpZiBuZWVkZWQuDQorICAgKiBUbyBpbXByb3ZlIGxvY2FsaXR5IG9mIGFjY2Vzcywgd2Ugb25seSBwcmV6ZXJvIHRoZSBwYXJ0IG9mIHRoZSBhcnJheQ0KKyAgICogdGhhdCB0aGUgY2FsbGVyIGlzIGFib3V0IHRvIGFjY2Vzcywgbm90IHRoZSBlbnRpcmUgaW4tbWVtb3J5IGFycmF5Lg0KKyAgICovDQorICBpZiAocHRyLT5maXJzdF91bmRlZl9yb3cgPCBlbmRfcm93KSB7DQorICAgIGlmIChwdHItPmZpcnN0X3VuZGVmX3JvdyA8IHN0YXJ0X3Jvdykgew0KKyAgICAgIGlmICh3cml0YWJsZSkJCS8qIHdyaXRlciBza2lwcGVkIG92ZXIgYSBzZWN0aW9uIG9mIGFycmF5ICovDQorCUVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX1ZJUlRVQUxfQUNDRVNTKTsNCisgICAgICB1bmRlZl9yb3cgPSBzdGFydF9yb3c7CS8qIGJ1dCByZWFkZXIgaXMgYWxsb3dlZCB0byByZWFkIGFoZWFkICovDQorICAgIH0gZWxzZSB7DQorICAgICAgdW5kZWZfcm93ID0gcHRyLT5maXJzdF91bmRlZl9yb3c7DQorICAgIH0NCisgICAgaWYgKHdyaXRhYmxlKQ0KKyAgICAgIHB0ci0+Zmlyc3RfdW5kZWZfcm93ID0gZW5kX3JvdzsNCisgICAgaWYgKHB0ci0+cHJlX3plcm8pIHsNCisgICAgICBzaXplX3QgYnl0ZXNwZXJyb3cgPSAoc2l6ZV90KSBwdHItPnNhbXBsZXNwZXJyb3cgKiBTSVpFT0YoSlNBTVBMRSk7DQorICAgICAgdW5kZWZfcm93IC09IHB0ci0+Y3VyX3N0YXJ0X3JvdzsgLyogbWFrZSBpbmRleGVzIHJlbGF0aXZlIHRvIGJ1ZmZlciAqLw0KKyAgICAgIGVuZF9yb3cgLT0gcHRyLT5jdXJfc3RhcnRfcm93Ow0KKyAgICAgIHdoaWxlICh1bmRlZl9yb3cgPCBlbmRfcm93KSB7DQorCWp6ZXJvX2Zhcigodm9pZCBGQVIgKikgcHRyLT5tZW1fYnVmZmVyW3VuZGVmX3Jvd10sIGJ5dGVzcGVycm93KTsNCisJdW5kZWZfcm93Kys7DQorICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgIGlmICghIHdyaXRhYmxlKQkJLyogcmVhZGVyIGxvb2tpbmcgYXQgdW5kZWZpbmVkIGRhdGEgKi8NCisJRVJSRVhJVChjaW5mbywgSkVSUl9CQURfVklSVFVBTF9BQ0NFU1MpOw0KKyAgICB9DQorICB9DQorICAvKiBGbGFnIHRoZSBidWZmZXIgZGlydHkgaWYgY2FsbGVyIHdpbGwgd3JpdGUgaW4gaXQgKi8NCisgIGlmICh3cml0YWJsZSkNCisgICAgcHRyLT5kaXJ0eSA9IFRSVUU7DQorICAvKiBSZXR1cm4gYWRkcmVzcyBvZiBwcm9wZXIgcGFydCBvZiB0aGUgYnVmZmVyICovDQorICByZXR1cm4gcHRyLT5tZW1fYnVmZmVyICsgKHN0YXJ0X3JvdyAtIHB0ci0+Y3VyX3N0YXJ0X3Jvdyk7DQorfQ0KKw0KKw0KK01FVEhPRERFRihKQkxPQ0tBUlJBWSkNCithY2Nlc3NfdmlydF9iYXJyYXkgKGpfY29tbW9uX3B0ciBjaW5mbywganZpcnRfYmFycmF5X3B0ciBwdHIsDQorCQkgICAgSkRJTUVOU0lPTiBzdGFydF9yb3csIEpESU1FTlNJT04gbnVtX3Jvd3MsDQorCQkgICAgYm9vbGVhbiB3cml0YWJsZSkNCisvKiBBY2Nlc3MgdGhlIHBhcnQgb2YgYSB2aXJ0dWFsIGJsb2NrIGFycmF5IHN0YXJ0aW5nIGF0IHN0YXJ0X3JvdyAqLw0KKy8qIGFuZCBleHRlbmRpbmcgZm9yIG51bV9yb3dzIHJvd3MuICB3cml0YWJsZSBpcyB0cnVlIGlmICAqLw0KKy8qIGNhbGxlciBpbnRlbmRzIHRvIG1vZGlmeSB0aGUgYWNjZXNzZWQgYXJlYS4gKi8NCit7DQorICBKRElNRU5TSU9OIGVuZF9yb3cgPSBzdGFydF9yb3cgKyBudW1fcm93czsNCisgIEpESU1FTlNJT04gdW5kZWZfcm93Ow0KKw0KKyAgLyogZGVidWdnaW5nIGNoZWNrICovDQorICBpZiAoZW5kX3JvdyA+IHB0ci0+cm93c19pbl9hcnJheSB8fCBudW1fcm93cyA+IHB0ci0+bWF4YWNjZXNzIHx8DQorICAgICAgcHRyLT5tZW1fYnVmZmVyID09IE5VTEwpDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX1ZJUlRVQUxfQUNDRVNTKTsNCisNCisgIC8qIE1ha2UgdGhlIGRlc2lyZWQgcGFydCBvZiB0aGUgdmlydHVhbCBhcnJheSBhY2Nlc3NpYmxlICovDQorICBpZiAoc3RhcnRfcm93IDwgcHRyLT5jdXJfc3RhcnRfcm93IHx8DQorICAgICAgZW5kX3JvdyA+IHB0ci0+Y3VyX3N0YXJ0X3JvdytwdHItPnJvd3NfaW5fbWVtKSB7DQorICAgIGlmICghIHB0ci0+Yl9zX29wZW4pDQorICAgICAgRVJSRVhJVChjaW5mbywgSkVSUl9WSVJUVUFMX0JVRyk7DQorICAgIC8qIEZsdXNoIG9sZCBidWZmZXIgY29udGVudHMgaWYgbmVjZXNzYXJ5ICovDQorICAgIGlmIChwdHItPmRpcnR5KSB7DQorICAgICAgZG9fYmFycmF5X2lvKGNpbmZvLCBwdHIsIFRSVUUpOw0KKyAgICAgIHB0ci0+ZGlydHkgPSBGQUxTRTsNCisgICAgfQ0KKyAgICAvKiBEZWNpZGUgd2hhdCBwYXJ0IG9mIHZpcnR1YWwgYXJyYXkgdG8gYWNjZXNzLg0KKyAgICAgKiBBbGdvcml0aG06IGlmIHRhcmdldCBhZGRyZXNzID4gY3VycmVudCB3aW5kb3csIGFzc3VtZSBmb3J3YXJkIHNjYW4sDQorICAgICAqIGxvYWQgc3RhcnRpbmcgYXQgdGFyZ2V0IGFkZHJlc3MuICBJZiB0YXJnZXQgYWRkcmVzcyA8IGN1cnJlbnQgd2luZG93LA0KKyAgICAgKiBhc3N1bWUgYmFja3dhcmQgc2NhbiwgbG9hZCBzbyB0aGF0IHRhcmdldCBhcmVhIGlzIHRvcCBvZiB3aW5kb3cuDQorICAgICAqIE5vdGUgdGhhdCB3aGVuIHN3aXRjaGluZyBmcm9tIGZvcndhcmQgd3JpdGUgdG8gZm9yd2FyZCByZWFkLCB3aWxsIGhhdmUNCisgICAgICogc3RhcnRfcm93ID0gMCwgc28gdGhlIGxpbWl0aW5nIGNhc2UgYXBwbGllcyBhbmQgd2UgbG9hZCBmcm9tIDAgYW55d2F5Lg0KKyAgICAgKi8NCisgICAgaWYgKHN0YXJ0X3JvdyA+IHB0ci0+Y3VyX3N0YXJ0X3Jvdykgew0KKyAgICAgIHB0ci0+Y3VyX3N0YXJ0X3JvdyA9IHN0YXJ0X3JvdzsNCisgICAgfSBlbHNlIHsNCisgICAgICAvKiB1c2UgbG9uZyBhcml0aG1ldGljIGhlcmUgdG8gYXZvaWQgb3ZlcmZsb3cgJiB1bnNpZ25lZCBwcm9ibGVtcyAqLw0KKyAgICAgIGxvbmcgbHRlbXA7DQorDQorICAgICAgbHRlbXAgPSAobG9uZykgZW5kX3JvdyAtIChsb25nKSBwdHItPnJvd3NfaW5fbWVtOw0KKyAgICAgIGlmIChsdGVtcCA8IDApDQorCWx0ZW1wID0gMDsJCS8qIGRvbid0IGZhbGwgb2ZmIGZyb250IGVuZCBvZiBmaWxlICovDQorICAgICAgcHRyLT5jdXJfc3RhcnRfcm93ID0gKEpESU1FTlNJT04pIGx0ZW1wOw0KKyAgICB9DQorICAgIC8qIFJlYWQgaW4gdGhlIHNlbGVjdGVkIHBhcnQgb2YgdGhlIGFycmF5Lg0KKyAgICAgKiBEdXJpbmcgdGhlIGluaXRpYWwgd3JpdGUgcGFzcywgd2Ugd2lsbCBkbyBubyBhY3R1YWwgcmVhZA0KKyAgICAgKiBiZWNhdXNlIHRoZSBzZWxlY3RlZCBwYXJ0IGlzIGFsbCB1bmRlZmluZWQuDQorICAgICAqLw0KKyAgICBkb19iYXJyYXlfaW8oY2luZm8sIHB0ciwgRkFMU0UpOw0KKyAgfQ0KKyAgLyogRW5zdXJlIHRoZSBhY2Nlc3NlZCBwYXJ0IG9mIHRoZSBhcnJheSBpcyBkZWZpbmVkOyBwcmV6ZXJvIGlmIG5lZWRlZC4NCisgICAqIFRvIGltcHJvdmUgbG9jYWxpdHkgb2YgYWNjZXNzLCB3ZSBvbmx5IHByZXplcm8gdGhlIHBhcnQgb2YgdGhlIGFycmF5DQorICAgKiB0aGF0IHRoZSBjYWxsZXIgaXMgYWJvdXQgdG8gYWNjZXNzLCBub3QgdGhlIGVudGlyZSBpbi1tZW1vcnkgYXJyYXkuDQorICAgKi8NCisgIGlmIChwdHItPmZpcnN0X3VuZGVmX3JvdyA8IGVuZF9yb3cpIHsNCisgICAgaWYgKHB0ci0+Zmlyc3RfdW5kZWZfcm93IDwgc3RhcnRfcm93KSB7DQorICAgICAgaWYgKHdyaXRhYmxlKQkJLyogd3JpdGVyIHNraXBwZWQgb3ZlciBhIHNlY3Rpb24gb2YgYXJyYXkgKi8NCisJRVJSRVhJVChjaW5mbywgSkVSUl9CQURfVklSVFVBTF9BQ0NFU1MpOw0KKyAgICAgIHVuZGVmX3JvdyA9IHN0YXJ0X3JvdzsJLyogYnV0IHJlYWRlciBpcyBhbGxvd2VkIHRvIHJlYWQgYWhlYWQgKi8NCisgICAgfSBlbHNlIHsNCisgICAgICB1bmRlZl9yb3cgPSBwdHItPmZpcnN0X3VuZGVmX3JvdzsNCisgICAgfQ0KKyAgICBpZiAod3JpdGFibGUpDQorICAgICAgcHRyLT5maXJzdF91bmRlZl9yb3cgPSBlbmRfcm93Ow0KKyAgICBpZiAocHRyLT5wcmVfemVybykgew0KKyAgICAgIHNpemVfdCBieXRlc3BlcnJvdyA9IChzaXplX3QpIHB0ci0+YmxvY2tzcGVycm93ICogU0laRU9GKEpCTE9DSyk7DQorICAgICAgdW5kZWZfcm93IC09IHB0ci0+Y3VyX3N0YXJ0X3JvdzsgLyogbWFrZSBpbmRleGVzIHJlbGF0aXZlIHRvIGJ1ZmZlciAqLw0KKyAgICAgIGVuZF9yb3cgLT0gcHRyLT5jdXJfc3RhcnRfcm93Ow0KKyAgICAgIHdoaWxlICh1bmRlZl9yb3cgPCBlbmRfcm93KSB7DQorCWp6ZXJvX2Zhcigodm9pZCBGQVIgKikgcHRyLT5tZW1fYnVmZmVyW3VuZGVmX3Jvd10sIGJ5dGVzcGVycm93KTsNCisJdW5kZWZfcm93Kys7DQorICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgIGlmICghIHdyaXRhYmxlKQkJLyogcmVhZGVyIGxvb2tpbmcgYXQgdW5kZWZpbmVkIGRhdGEgKi8NCisJRVJSRVhJVChjaW5mbywgSkVSUl9CQURfVklSVFVBTF9BQ0NFU1MpOw0KKyAgICB9DQorICB9DQorICAvKiBGbGFnIHRoZSBidWZmZXIgZGlydHkgaWYgY2FsbGVyIHdpbGwgd3JpdGUgaW4gaXQgKi8NCisgIGlmICh3cml0YWJsZSkNCisgICAgcHRyLT5kaXJ0eSA9IFRSVUU7DQorICAvKiBSZXR1cm4gYWRkcmVzcyBvZiBwcm9wZXIgcGFydCBvZiB0aGUgYnVmZmVyICovDQorICByZXR1cm4gcHRyLT5tZW1fYnVmZmVyICsgKHN0YXJ0X3JvdyAtIHB0ci0+Y3VyX3N0YXJ0X3Jvdyk7DQorfQ0KKw0KKw0KKy8qDQorICogUmVsZWFzZSBhbGwgb2JqZWN0cyBiZWxvbmdpbmcgdG8gYSBzcGVjaWZpZWQgcG9vbC4NCisgKi8NCisNCitNRVRIT0RERUYodm9pZCkNCitmcmVlX3Bvb2wgKGpfY29tbW9uX3B0ciBjaW5mbywgaW50IHBvb2xfaWQpDQorew0KKyAgbXlfbWVtX3B0ciBtZW0gPSAobXlfbWVtX3B0cikgY2luZm8tPm1lbTsNCisgIHNtYWxsX3Bvb2xfcHRyIHNoZHJfcHRyOw0KKyAgbGFyZ2VfcG9vbF9wdHIgbGhkcl9wdHI7DQorICBzaXplX3Qgc3BhY2VfZnJlZWQ7DQorDQorICBpZiAocG9vbF9pZCA8IDAgfHwgcG9vbF9pZCA+PSBKUE9PTF9OVU1QT09MUykNCisgICAgRVJSRVhJVDEoY2luZm8sIEpFUlJfQkFEX1BPT0xfSUQsIHBvb2xfaWQpOwkvKiBzYWZldHkgY2hlY2sgKi8NCisNCisjaWZkZWYgTUVNX1NUQVRTDQorICBpZiAoY2luZm8tPmVyci0+dHJhY2VfbGV2ZWwgPiAxKQ0KKyAgICBwcmludF9tZW1fc3RhdHMoY2luZm8sIHBvb2xfaWQpOyAvKiBwcmludCBwb29sJ3MgbWVtb3J5IHVzYWdlIHN0YXRpc3RpY3MgKi8NCisjZW5kaWYNCisNCisgIC8qIElmIGZyZWVpbmcgSU1BR0UgcG9vbCwgY2xvc2UgYW55IHZpcnR1YWwgYXJyYXlzIGZpcnN0ICovDQorICBpZiAocG9vbF9pZCA9PSBKUE9PTF9JTUFHRSkgew0KKyAgICBqdmlydF9zYXJyYXlfcHRyIHNwdHI7DQorICAgIGp2aXJ0X2JhcnJheV9wdHIgYnB0cjsNCisNCisgICAgZm9yIChzcHRyID0gbWVtLT52aXJ0X3NhcnJheV9saXN0OyBzcHRyICE9IE5VTEw7IHNwdHIgPSBzcHRyLT5uZXh0KSB7DQorICAgICAgaWYgKHNwdHItPmJfc19vcGVuKSB7CS8qIHRoZXJlIG1heSBiZSBubyBiYWNraW5nIHN0b3JlICovDQorCXNwdHItPmJfc19vcGVuID0gRkFMU0U7CS8qIHByZXZlbnQgcmVjdXJzaXZlIGNsb3NlIGlmIGVycm9yICovDQorCSgqc3B0ci0+Yl9zX2luZm8uY2xvc2VfYmFja2luZ19zdG9yZSkgKGNpbmZvLCAmIHNwdHItPmJfc19pbmZvKTsNCisgICAgICB9DQorICAgIH0NCisgICAgbWVtLT52aXJ0X3NhcnJheV9saXN0ID0gTlVMTDsNCisgICAgZm9yIChicHRyID0gbWVtLT52aXJ0X2JhcnJheV9saXN0OyBicHRyICE9IE5VTEw7IGJwdHIgPSBicHRyLT5uZXh0KSB7DQorICAgICAgaWYgKGJwdHItPmJfc19vcGVuKSB7CS8qIHRoZXJlIG1heSBiZSBubyBiYWNraW5nIHN0b3JlICovDQorCWJwdHItPmJfc19vcGVuID0gRkFMU0U7CS8qIHByZXZlbnQgcmVjdXJzaXZlIGNsb3NlIGlmIGVycm9yICovDQorCSgqYnB0ci0+Yl9zX2luZm8uY2xvc2VfYmFja2luZ19zdG9yZSkgKGNpbmZvLCAmIGJwdHItPmJfc19pbmZvKTsNCisgICAgICB9DQorICAgIH0NCisgICAgbWVtLT52aXJ0X2JhcnJheV9saXN0ID0gTlVMTDsNCisgIH0NCisNCisgIC8qIFJlbGVhc2UgbGFyZ2Ugb2JqZWN0cyAqLw0KKyAgbGhkcl9wdHIgPSBtZW0tPmxhcmdlX2xpc3RbcG9vbF9pZF07DQorICBtZW0tPmxhcmdlX2xpc3RbcG9vbF9pZF0gPSBOVUxMOw0KKw0KKyAgd2hpbGUgKGxoZHJfcHRyICE9IE5VTEwpIHsNCisgICAgbGFyZ2VfcG9vbF9wdHIgbmV4dF9saGRyX3B0ciA9IGxoZHJfcHRyLT5oZHIubmV4dDsNCisgICAgc3BhY2VfZnJlZWQgPSBsaGRyX3B0ci0+aGRyLmJ5dGVzX3VzZWQgKw0KKwkJICBsaGRyX3B0ci0+aGRyLmJ5dGVzX2xlZnQgKw0KKwkJICBTSVpFT0YobGFyZ2VfcG9vbF9oZHIpOw0KKyAgICBqcGVnX2ZyZWVfbGFyZ2UoY2luZm8sICh2b2lkIEZBUiAqKSBsaGRyX3B0ciwgc3BhY2VfZnJlZWQpOw0KKyAgICBtZW0tPnRvdGFsX3NwYWNlX2FsbG9jYXRlZCAtPSBzcGFjZV9mcmVlZDsNCisgICAgbGhkcl9wdHIgPSBuZXh0X2xoZHJfcHRyOw0KKyAgfQ0KKw0KKyAgLyogUmVsZWFzZSBzbWFsbCBvYmplY3RzICovDQorICBzaGRyX3B0ciA9IG1lbS0+c21hbGxfbGlzdFtwb29sX2lkXTsNCisgIG1lbS0+c21hbGxfbGlzdFtwb29sX2lkXSA9IE5VTEw7DQorDQorICB3aGlsZSAoc2hkcl9wdHIgIT0gTlVMTCkgew0KKyAgICBzbWFsbF9wb29sX3B0ciBuZXh0X3NoZHJfcHRyID0gc2hkcl9wdHItPmhkci5uZXh0Ow0KKyAgICBzcGFjZV9mcmVlZCA9IHNoZHJfcHRyLT5oZHIuYnl0ZXNfdXNlZCArDQorCQkgIHNoZHJfcHRyLT5oZHIuYnl0ZXNfbGVmdCArDQorCQkgIFNJWkVPRihzbWFsbF9wb29sX2hkcik7DQorICAgIGpwZWdfZnJlZV9zbWFsbChjaW5mbywgKHZvaWQgKikgc2hkcl9wdHIsIHNwYWNlX2ZyZWVkKTsNCisgICAgbWVtLT50b3RhbF9zcGFjZV9hbGxvY2F0ZWQgLT0gc3BhY2VfZnJlZWQ7DQorICAgIHNoZHJfcHRyID0gbmV4dF9zaGRyX3B0cjsNCisgIH0NCit9DQorDQorDQorLyoNCisgKiBDbG9zZSB1cCBzaG9wIGVudGlyZWx5Lg0KKyAqIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCBiZSBjYWxsZWQgdW5sZXNzIGNpbmZvLT5tZW0gaXMgbm9uLU5VTEwuDQorICovDQorDQorTUVUSE9EREVGKHZvaWQpDQorc2VsZl9kZXN0cnVjdCAoal9jb21tb25fcHRyIGNpbmZvKQ0KK3sNCisgIGludCBwb29sOw0KKw0KKyAgLyogQ2xvc2UgYWxsIGJhY2tpbmcgc3RvcmUsIHJlbGVhc2UgYWxsIG1lbW9yeS4NCisgICAqIFJlbGVhc2luZyBwb29scyBpbiByZXZlcnNlIG9yZGVyIG1pZ2h0IGhlbHAgYXZvaWQgZnJhZ21lbnRhdGlvbg0KKyAgICogd2l0aCBzb21lIChicmFpbi1kYW1hZ2VkKSBtYWxsb2MgbGlicmFyaWVzLg0KKyAgICovDQorICBmb3IgKHBvb2wgPSBKUE9PTF9OVU1QT09MUy0xOyBwb29sID49IEpQT09MX1BFUk1BTkVOVDsgcG9vbC0tKSB7DQorICAgIGZyZWVfcG9vbChjaW5mbywgcG9vbCk7DQorICB9DQorDQorICAvKiBSZWxlYXNlIHRoZSBtZW1vcnkgbWFuYWdlciBjb250cm9sIGJsb2NrIHRvby4gKi8NCisgIGpwZWdfZnJlZV9zbWFsbChjaW5mbywgKHZvaWQgKikgY2luZm8tPm1lbSwgU0laRU9GKG15X21lbW9yeV9tZ3IpKTsNCisgIGNpbmZvLT5tZW0gPSBOVUxMOwkJLyogZW5zdXJlcyBJIHdpbGwgYmUgY2FsbGVkIG9ubHkgb25jZSAqLw0KKw0KKyAganBlZ19tZW1fdGVybShjaW5mbyk7CQkvKiBzeXN0ZW0tZGVwZW5kZW50IGNsZWFudXAgKi8NCit9DQorDQorDQorLyoNCisgKiBNZW1vcnkgbWFuYWdlciBpbml0aWFsaXphdGlvbi4NCisgKiBXaGVuIHRoaXMgaXMgY2FsbGVkLCBvbmx5IHRoZSBlcnJvciBtYW5hZ2VyIHBvaW50ZXIgaXMgdmFsaWQgaW4gY2luZm8hDQorICovDQorDQorR0xPQkFMKHZvaWQpDQoramluaXRfbWVtb3J5X21nciAoal9jb21tb25fcHRyIGNpbmZvKQ0KK3sNCisgIG15X21lbV9wdHIgbWVtOw0KKyAgbG9uZyBtYXhfdG9fdXNlOw0KKyAgaW50IHBvb2w7DQorICBzaXplX3QgdGVzdF9tYWM7DQorDQorICBjaW5mby0+bWVtID0gTlVMTDsJCS8qIGZvciBzYWZldHkgaWYgaW5pdCBmYWlscyAqLw0KKw0KKyAgLyogQ2hlY2sgZm9yIGNvbmZpZ3VyYXRpb24gZXJyb3JzLg0KKyAgICogU0laRU9GKEFMSUdOX1RZUEUpIHNob3VsZCBiZSBhIHBvd2VyIG9mIDI7IG90aGVyd2lzZSwgaXQgcHJvYmFibHkNCisgICAqIGRvZXNuJ3QgcmVmbGVjdCBhbnkgcmVhbCBoYXJkd2FyZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnQuDQorICAgKiBUaGUgdGVzdCBpcyBhIGxpdHRsZSB0cmlja3k6IGZvciBYPjAsIFggYW5kIFgtMSBoYXZlIG5vIG9uZS1iaXRzDQorICAgKiBpbiBjb21tb24gaWYgYW5kIG9ubHkgaWYgWCBpcyBhIHBvd2VyIG9mIDIsIGllIGhhcyBvbmx5IG9uZSBvbmUtYml0Lg0KKyAgICogU29tZSBjb21waWxlcnMgbWF5IGdpdmUgYW4gInVucmVhY2hhYmxlIGNvZGUiIHdhcm5pbmcgaGVyZTsgaWdub3JlIGl0Lg0KKyAgICovDQorICBpZiAoKFNJWkVPRihBTElHTl9UWVBFKSAmIChTSVpFT0YoQUxJR05fVFlQRSktMSkpICE9IDApDQorICAgIEVSUkVYSVQoY2luZm8sIEpFUlJfQkFEX0FMSUdOX1RZUEUpOw0KKyAgLyogTUFYX0FMTE9DX0NIVU5LIG11c3QgYmUgcmVwcmVzZW50YWJsZSBhcyB0eXBlIHNpemVfdCwgYW5kIG11c3QgYmUNCisgICAqIGEgbXVsdGlwbGUgb2YgU0laRU9GKEFMSUdOX1RZUEUpLg0KKyAgICogQWdhaW4sIGFuICJ1bnJlYWNoYWJsZSBjb2RlIiB3YXJuaW5nIG1heSBiZSBpZ25vcmVkIGhlcmUuDQorICAgKiBCdXQgYSAiY29uc3RhbnQgdG9vIGxhcmdlIiB3YXJuaW5nIG1lYW5zIHlvdSBuZWVkIHRvIGZpeCBNQVhfQUxMT0NfQ0hVTksuDQorICAgKi8NCisgIHRlc3RfbWFjID0gKHNpemVfdCkgTUFYX0FMTE9DX0NIVU5LOw0KKyAgaWYgKChsb25nKSB0ZXN0X21hYyAhPSBNQVhfQUxMT0NfQ0hVTksgfHwNCisgICAgICAoTUFYX0FMTE9DX0NIVU5LICUgU0laRU9GKEFMSUdOX1RZUEUpKSAhPSAwKQ0KKyAgICBFUlJFWElUKGNpbmZvLCBKRVJSX0JBRF9BTExPQ19DSFVOSyk7DQorDQorICBtYXhfdG9fdXNlID0ganBlZ19tZW1faW5pdChjaW5mbyk7IC8qIHN5c3RlbS1kZXBlbmRlbnQgaW5pdGlhbGl6YXRpb24gKi8NCisNCisgIC8qIEF0dGVtcHQgdG8gYWxsb2NhdGUgbWVtb3J5IG1hbmFnZXIncyBjb250cm9sIGJsb2NrICovDQorICBtZW0gPSAobXlfbWVtX3B0cikganBlZ19nZXRfc21hbGwoY2luZm8sIFNJWkVPRihteV9tZW1vcnlfbWdyKSk7DQorDQorICBpZiAobWVtID09IE5VTEwpIHsNCisgICAganBlZ19tZW1fdGVybShjaW5mbyk7CS8qIHN5c3RlbS1kZXBlbmRlbnQgY2xlYW51cCAqLw0KKyAgICBFUlJFWElUMShjaW5mbywgSkVSUl9PVVRfT0ZfTUVNT1JZLCAwKTsNCisgIH0NCisNCisgIC8qIE9LLCBmaWxsIGluIHRoZSBtZXRob2QgcG9pbnRlcnMgKi8NCisgIG1lbS0+cHViLmFsbG9jX3NtYWxsID0gYWxsb2Nfc21hbGw7DQorICBtZW0tPnB1Yi5hbGxvY19sYXJnZSA9IGFsbG9jX2xhcmdlOw0KKyAgbWVtLT5wdWIuYWxsb2Nfc2FycmF5ID0gYWxsb2Nfc2FycmF5Ow0KKyAgbWVtLT5wdWIuYWxsb2NfYmFycmF5ID0gYWxsb2NfYmFycmF5Ow0KKyAgbWVtLT5wdWIucmVxdWVzdF92aXJ0X3NhcnJheSA9IHJlcXVlc3RfdmlydF9zYXJyYXk7DQorICBtZW0tPnB1Yi5yZXF1ZXN0X3ZpcnRfYmFycmF5ID0gcmVxdWVzdF92aXJ0X2JhcnJheTsNCisgIG1lbS0+cHViLnJlYWxpemVfdmlydF9hcnJheXMgPSByZWFsaXplX3ZpcnRfYXJyYXlzOw0KKyAgbWVtLT5wdWIuYWNjZXNzX3ZpcnRfc2FycmF5ID0gYWNjZXNzX3ZpcnRfc2FycmF5Ow0KKyAgbWVtLT5wdWIuYWNjZXNzX3ZpcnRfYmFycmF5ID0gYWNjZXNzX3ZpcnRfYmFycmF5Ow0KKyAgbWVtLT5wdWIuZnJlZV9wb29sID0gZnJlZV9wb29sOw0KKyAgbWVtLT5wdWIuc2VsZl9kZXN0cnVjdCA9IHNlbGZfZGVzdHJ1Y3Q7DQorDQorICAvKiBNYWtlIE1BWF9BTExPQ19DSFVOSyBhY2Nlc3NpYmxlIHRvIG90aGVyIG1vZHVsZXMgKi8NCisgIG1lbS0+cHViLm1heF9hbGxvY19jaHVuayA9IE1BWF9BTExPQ19DSFVOSzsNCisNCisgIC8qIEluaXRpYWxpemUgd29ya2luZyBzdGF0ZSAqLw0KKyAgbWVtLT5wdWIubWF4X21lbW9yeV90b191c2UgPSBtYXhfdG9fdXNlOw0KKw0KKyAgZm9yIChwb29sID0gSlBPT0xfTlVNUE9PTFMtMTsgcG9vbCA+PSBKUE9PTF9QRVJNQU5FTlQ7IHBvb2wtLSkgew0KKyAgICBtZW0tPnNtYWxsX2xpc3RbcG9vbF0gPSBOVUxMOw0KKyAgICBtZW0tPmxhcmdlX2xpc3RbcG9vbF0gPSBOVUxMOw0KKyAgfQ0KKyAgbWVtLT52aXJ0X3NhcnJheV9saXN0ID0gTlVMTDsNCisgIG1lbS0+dmlydF9iYXJyYXlfbGlzdCA9IE5VTEw7DQorDQorICBtZW0tPnRvdGFsX3NwYWNlX2FsbG9jYXRlZCA9IFNJWkVPRihteV9tZW1vcnlfbWdyKTsNCisNCisgIC8qIERlY2xhcmUgb3Vyc2VsdmVzIG9wZW4gZm9yIGJ1c2luZXNzICovDQorICBjaW5mby0+bWVtID0gJiBtZW0tPnB1YjsNCisNCisgIC8qIENoZWNrIGZvciBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBKUEVHTUVNOyBpZiBmb3VuZCwgb3ZlcnJpZGUgdGhlDQorICAgKiBkZWZhdWx0IG1heF9tZW1vcnkgc2V0dGluZyBmcm9tIGpwZWdfbWVtX2luaXQuICBOb3RlIHRoYXQgdGhlDQorICAgKiBzdXJyb3VuZGluZyBhcHBsaWNhdGlvbiBtYXkgYWdhaW4gb3ZlcnJpZGUgdGhpcyB2YWx1ZS4NCisgICAqIElmIHlvdXIgc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydCBnZXRlbnYoKSwgZGVmaW5lIE5PX0dFVEVOViB0byBkaXNhYmxlDQorICAgKiB0aGlzIGZlYXR1cmUuDQorICAgKi8NCisjaWZuZGVmIE5PX0dFVEVOVg0KKyAgeyBjaGFyICogbWVtZW52Ow0KKw0KKyAgICBpZiAoKG1lbWVudiA9IGdldGVudigiSlBFR01FTSIpKSAhPSBOVUxMKSB7DQorICAgICAgY2hhciBjaCA9ICd4JzsNCisNCisgICAgICBpZiAoc3NjYW5mKG1lbWVudiwgIiVsZCVjIiwgJm1heF90b191c2UsICZjaCkgPiAwKSB7DQorCWlmIChjaCA9PSAnbScgfHwgY2ggPT0gJ00nKQ0KKwkgIG1heF90b191c2UgKj0gMTAwMEw7DQorCW1lbS0+cHViLm1heF9tZW1vcnlfdG9fdXNlID0gbWF4X3RvX3VzZSAqIDEwMDBMOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKyNlbmRpZg0KKw0KK30NCisNCisjZW5kaWYgLy9fRlhfSlBFR19UVVJCT18NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qbWVtbm9icy5jIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfam1lbW5vYnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGFlZDcyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfam1lbW5vYnMuYwpAQCAtMCwwICsxLDEyNiBAQAorI2lmICFkZWZpbmVkKF9GWF9KUEVHX1RVUkJPXykNCisvKg0KKyAqIGptZW1ub2JzLmMNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5Mi0xOTk2LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBwcm92aWRlcyBhIHJlYWxseSBzaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHN5c3RlbS0NCisgKiBkZXBlbmRlbnQgcG9ydGlvbiBvZiB0aGUgSlBFRyBtZW1vcnkgbWFuYWdlci4gIFRoaXMgaW1wbGVtZW50YXRpb24NCisgKiBhc3N1bWVzIHRoYXQgbm8gYmFja2luZy1zdG9yZSBmaWxlcyBhcmUgbmVlZGVkOiBhbGwgcmVxdWlyZWQgc3BhY2UNCisgKiBjYW4gYmUgb2J0YWluZWQgZnJvbSBtYWxsb2MoKS4NCisgKiBUaGlzIGlzIHZlcnkgcG9ydGFibGUgaW4gdGhlIHNlbnNlIHRoYXQgaXQnbGwgY29tcGlsZSBvbiBhbG1vc3QgYW55dGhpbmcsDQorICogYnV0IHlvdSdkIGJldHRlciBoYXZlIGxvdHMgb2YgbWFpbiBtZW1vcnkgKG9yIHZpcnR1YWwgbWVtb3J5KSBpZiB5b3Ugd2FudA0KKyAqIHRvIHByb2Nlc3MgYmlnIGltYWdlcy4NCisgKiBOb3RlIHRoYXQgdGhlIG1heF9tZW1vcnlfdG9fdXNlIG9wdGlvbiBpcyBpZ25vcmVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24uDQorICovDQorDQorI2RlZmluZSBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqaW5jbHVkZS5oIg0KKyNpbmNsdWRlICJqcGVnbGliLmgiDQorI2luY2x1ZGUgImptZW1zeXMuaCIJCS8qIGltcG9ydCB0aGUgc3lzdGVtLWRlcGVuZGVudCBkZWNsYXJhdGlvbnMgKi8NCisNCisjaWZuZGVmIEhBVkVfU1RETElCX0gJCS8qIDxzdGRsaWIuaD4gc2hvdWxkIGRlY2xhcmUgbWFsbG9jKCksZnJlZSgpICovDQorZXh0ZXJuIHZvaWQgKiBtYWxsb2MgSlBQKChzaXplX3Qgc2l6ZSkpOw0KK2V4dGVybiB2b2lkIGZyZWUgSlBQKCh2b2lkICpwdHIpKTsNCisjZW5kaWYNCisNCisjaWYgZGVmaW5lZChfRlhfTUFOQUdFRF9DT0RFXykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCit2b2lkKglGWE1FTV9EZWZhdWx0QWxsb2MoaW50IGJ5dGVfc2l6ZSwgaW50KTsNCit2b2lkCUZYTUVNX0RlZmF1bHRGcmVlKHZvaWQqIHBvaW50ZXIsIGludCk7DQorDQorI2lmIGRlZmluZWQoX0ZYX01BTkFHRURfQ09ERV8pICYmIGRlZmluZWQoX19jcGx1c3BsdXMpDQorfQ0KKyNlbmRpZg0KKw0KKy8qDQorICogTWVtb3J5IGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHJlZ3VsYXIgbGlicmFyeQ0KKyAqIHJvdXRpbmVzIG1hbGxvYygpIGFuZCBmcmVlKCkuDQorICovDQorDQorR0xPQkFMKHZvaWQgKikNCitqcGVnX2dldF9zbWFsbCAoal9jb21tb25fcHRyIGNpbmZvLCBzaXplX3Qgc2l6ZW9mb2JqZWN0KQ0KK3sNCisvLyAgcmV0dXJuICh2b2lkICopIG1hbGxvYyhzaXplb2ZvYmplY3QpOw0KKwlyZXR1cm4gRlhNRU1fRGVmYXVsdEFsbG9jKHNpemVvZm9iamVjdCwgMCk7DQorfQ0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfZnJlZV9zbWFsbCAoal9jb21tb25fcHRyIGNpbmZvLCB2b2lkICogb2JqZWN0LCBzaXplX3Qgc2l6ZW9mb2JqZWN0KQ0KK3sNCisvLyAgZnJlZShvYmplY3QpOw0KKwlGWE1FTV9EZWZhdWx0RnJlZShvYmplY3QsIDApOw0KK30NCisNCisNCisvKg0KKyAqICJMYXJnZSIgb2JqZWN0cyBhcmUgdHJlYXRlZCB0aGUgc2FtZSBhcyAic21hbGwiIG9uZXMuDQorICogTkI6IGFsdGhvdWdoIHdlIGluY2x1ZGUgRkFSIGtleXdvcmRzIGluIHRoZSByb3V0aW5lIGRlY2xhcmF0aW9ucywNCisgKiB0aGlzIGZpbGUgd29uJ3QgYWN0dWFsbHkgd29yayBpbiA4MHg4NiBzbWFsbC9tZWRpdW0gbW9kZWw7IGF0IGxlYXN0LA0KKyAqIHlvdSBwcm9iYWJseSB3b24ndCBiZSBhYmxlIHRvIHByb2Nlc3MgdXNlZnVsLXNpemUgaW1hZ2VzIGluIG9ubHkgNjRLQi4NCisgKi8NCisNCitHTE9CQUwodm9pZCBGQVIgKikNCitqcGVnX2dldF9sYXJnZSAoal9jb21tb25fcHRyIGNpbmZvLCBzaXplX3Qgc2l6ZW9mb2JqZWN0KQ0KK3sNCisvLyAgcmV0dXJuICh2b2lkIEZBUiAqKSBtYWxsb2Moc2l6ZW9mb2JqZWN0KTsNCisJcmV0dXJuIEZYTUVNX0RlZmF1bHRBbGxvYyhzaXplb2ZvYmplY3QsIDApOw0KK30NCisNCitHTE9CQUwodm9pZCkNCitqcGVnX2ZyZWVfbGFyZ2UgKGpfY29tbW9uX3B0ciBjaW5mbywgdm9pZCBGQVIgKiBvYmplY3QsIHNpemVfdCBzaXplb2ZvYmplY3QpDQorew0KKy8vICBmcmVlKG9iamVjdCk7DQorCUZYTUVNX0RlZmF1bHRGcmVlKG9iamVjdCwgMCk7DQorfQ0KKw0KKw0KKy8qDQorICogVGhpcyByb3V0aW5lIGNvbXB1dGVzIHRoZSB0b3RhbCBtZW1vcnkgc3BhY2UgYXZhaWxhYmxlIGZvciBhbGxvY2F0aW9uLg0KKyAqIEhlcmUgd2UgYWx3YXlzIHNheSwgIndlIGdvdCBhbGwgeW91IHdhbnQgYnVkISINCisgKi8NCisNCitHTE9CQUwobG9uZykNCitqcGVnX21lbV9hdmFpbGFibGUgKGpfY29tbW9uX3B0ciBjaW5mbywgbG9uZyBtaW5fYnl0ZXNfbmVlZGVkLA0KKwkJICAgIGxvbmcgbWF4X2J5dGVzX25lZWRlZCwgbG9uZyBhbHJlYWR5X2FsbG9jYXRlZCkNCit7DQorICByZXR1cm4gbWF4X2J5dGVzX25lZWRlZDsNCit9DQorDQorDQorLyoNCisgKiBCYWNraW5nIHN0b3JlICh0ZW1wb3JhcnkgZmlsZSkgbWFuYWdlbWVudC4NCisgKiBTaW5jZSBqcGVnX21lbV9hdmFpbGFibGUgYWx3YXlzIHByb21pc2VkIHRoZSBtb29uLA0KKyAqIHRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBhbmQgd2UgY2FuIGp1c3QgZXJyb3Igb3V0Lg0KKyAqLw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2pwZWdfb3Blbl9iYWNraW5nX3N0b3JlIChqX2NvbW1vbl9wdHIgY2luZm8sIGJhY2tpbmdfc3RvcmVfcHRyIGluZm8sDQorCQkJIGxvbmcgdG90YWxfYnl0ZXNfbmVlZGVkKQ0KK3sNCisgIEVSUkVYSVQoY2luZm8sIEpFUlJfTk9fQkFDS0lOR19TVE9SRSk7DQorfQ0KKw0KKw0KKy8qDQorICogVGhlc2Ugcm91dGluZXMgdGFrZSBjYXJlIG9mIGFueSBzeXN0ZW0tZGVwZW5kZW50IGluaXRpYWxpemF0aW9uIGFuZA0KKyAqIGNsZWFudXAgcmVxdWlyZWQuICBIZXJlLCB0aGVyZSBpc24ndCBhbnkuDQorICovDQorDQorR0xPQkFMKGxvbmcpDQoranBlZ19tZW1faW5pdCAoal9jb21tb25fcHRyIGNpbmZvKQ0KK3sNCisgIHJldHVybiAwOwkJCS8qIGp1c3Qgc2V0IG1heF9tZW1vcnlfdG9fdXNlIHRvIDAgKi8NCit9DQorDQorR0xPQkFMKHZvaWQpDQoranBlZ19tZW1fdGVybSAoal9jb21tb25fcHRyIGNpbmZvKQ0KK3sNCisgIC8qIG5vIHdvcmsgKi8NCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfanV0aWxzLmMgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvZnBkZmFwaV9qdXRpbHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTFmZDUwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ZwZGZhcGlfanV0aWxzLmMKQEAgLTAsMCArMSwxODIgQEAKKyNpZiAhZGVmaW5lZChfRlhfSlBFR19UVVJCT18pDQorLyoNCisgKiBqdXRpbHMuYw0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTYsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRhYmxlcyBhbmQgbWlzY2VsbGFuZW91cyB1dGlsaXR5IHJvdXRpbmVzIG5lZWRlZA0KKyAqIGZvciBib3RoIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLg0KKyAqIE5vdGUgd2UgcHJlZml4IGFsbCBnbG9iYWwgbmFtZXMgd2l0aCAiaiIgdG8gbWluaW1pemUgY29uZmxpY3RzIHdpdGgNCisgKiBhIHN1cnJvdW5kaW5nIGFwcGxpY2F0aW9uLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19JTlRFUk5BTFMNCisjaW5jbHVkZSAiamluY2x1ZGUuaCINCisjaW5jbHVkZSAianBlZ2xpYi5oIg0KKw0KKw0KKy8qDQorICoganBlZ196aWd6YWdfb3JkZXJbaV0gaXMgdGhlIHppZ3phZy1vcmRlciBwb3NpdGlvbiBvZiB0aGUgaSd0aCBlbGVtZW50DQorICogb2YgYSBEQ1QgYmxvY2sgcmVhZCBpbiBuYXR1cmFsIG9yZGVyIChsZWZ0IHRvIHJpZ2h0LCB0b3AgdG8gYm90dG9tKS4NCisgKi8NCisNCisjaWYgMAkJCQkvKiBUaGlzIHRhYmxlIGlzIG5vdCBhY3R1YWxseSBuZWVkZWQgaW4gdjZhICovDQorDQorY29uc3QgaW50IGpwZWdfemlnemFnX29yZGVyW0RDVFNJWkUyXSA9IHsNCisgICAwLCAgMSwgIDUsICA2LCAxNCwgMTUsIDI3LCAyOCwNCisgICAyLCAgNCwgIDcsIDEzLCAxNiwgMjYsIDI5LCA0MiwNCisgICAzLCAgOCwgMTIsIDE3LCAyNSwgMzAsIDQxLCA0MywNCisgICA5LCAxMSwgMTgsIDI0LCAzMSwgNDAsIDQ0LCA1MywNCisgIDEwLCAxOSwgMjMsIDMyLCAzOSwgNDUsIDUyLCA1NCwNCisgIDIwLCAyMiwgMzMsIDM4LCA0NiwgNTEsIDU1LCA2MCwNCisgIDIxLCAzNCwgMzcsIDQ3LCA1MCwgNTYsIDU5LCA2MSwNCisgIDM1LCAzNiwgNDgsIDQ5LCA1NywgNTgsIDYyLCA2Mw0KK307DQorDQorI2VuZGlmDQorDQorLyoNCisgKiBqcGVnX25hdHVyYWxfb3JkZXJbaV0gaXMgdGhlIG5hdHVyYWwtb3JkZXIgcG9zaXRpb24gb2YgdGhlIGkndGggZWxlbWVudA0KKyAqIG9mIHppZ3phZyBvcmRlci4NCisgKg0KKyAqIFdoZW4gcmVhZGluZyBjb3JydXB0ZWQgZGF0YSwgdGhlIEh1ZmZtYW4gZGVjb2RlcnMgY291bGQgYXR0ZW1wdA0KKyAqIHRvIHJlZmVyZW5jZSBhbiBlbnRyeSBiZXlvbmQgdGhlIGVuZCBvZiB0aGlzIGFycmF5IChpZiB0aGUgZGVjb2RlZA0KKyAqIHplcm8gcnVuIGxlbmd0aCByZWFjaGVzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYmxvY2spLiAgVG8gcHJldmVudA0KKyAqIHdpbGQgc3RvcmVzIHdpdGhvdXQgYWRkaW5nIGFuIGlubmVyLWxvb3AgdGVzdCwgd2UgcHV0IHNvbWUgZXh0cmENCisgKiAiNjMicyBhZnRlciB0aGUgcmVhbCBlbnRyaWVzLiAgVGhpcyB3aWxsIGNhdXNlIHRoZSBleHRyYSBjb2VmZmljaWVudA0KKyAqIHRvIGJlIHN0b3JlZCBpbiBsb2NhdGlvbiA2MyBvZiB0aGUgYmxvY2ssIG5vdCBzb21ld2hlcmUgcmFuZG9tLg0KKyAqIFRoZSB3b3JzdCBjYXNlIHdvdWxkIGJlIGEgcnVuLWxlbmd0aCBvZiAxNSwgd2hpY2ggbWVhbnMgd2UgbmVlZCAxNg0KKyAqIGZha2UgZW50cmllcy4NCisgKi8NCisNCitjb25zdCBpbnQganBlZ19uYXR1cmFsX29yZGVyW0RDVFNJWkUyKzE2XSA9IHsNCisgIDAsICAxLCAgOCwgMTYsICA5LCAgMiwgIDMsIDEwLA0KKyAxNywgMjQsIDMyLCAyNSwgMTgsIDExLCAgNCwgIDUsDQorIDEyLCAxOSwgMjYsIDMzLCA0MCwgNDgsIDQxLCAzNCwNCisgMjcsIDIwLCAxMywgIDYsICA3LCAxNCwgMjEsIDI4LA0KKyAzNSwgNDIsIDQ5LCA1NiwgNTcsIDUwLCA0MywgMzYsDQorIDI5LCAyMiwgMTUsIDIzLCAzMCwgMzcsIDQ0LCA1MSwNCisgNTgsIDU5LCA1MiwgNDUsIDM4LCAzMSwgMzksIDQ2LA0KKyA1MywgNjAsIDYxLCA1NCwgNDcsIDU1LCA2MiwgNjMsDQorIDYzLCA2MywgNjMsIDYzLCA2MywgNjMsIDYzLCA2MywgLyogZXh0cmEgZW50cmllcyBmb3Igc2FmZXR5IGluIGRlY29kZXIgKi8NCisgNjMsIDYzLCA2MywgNjMsIDYzLCA2MywgNjMsIDYzDQorfTsNCisNCisNCisvKg0KKyAqIEFyaXRobWV0aWMgdXRpbGl0aWVzDQorICovDQorDQorR0xPQkFMKGxvbmcpDQoramRpdl9yb3VuZF91cCAobG9uZyBhLCBsb25nIGIpDQorLyogQ29tcHV0ZSBhL2Igcm91bmRlZCB1cCB0byBuZXh0IGludGVnZXIsIGllLCBjZWlsKGEvYikgKi8NCisvKiBBc3N1bWVzIGEgPj0gMCwgYiA+IDAgKi8NCit7DQorICByZXR1cm4gKGEgKyBiIC0gMUwpIC8gYjsNCit9DQorDQorDQorR0xPQkFMKGxvbmcpDQoranJvdW5kX3VwIChsb25nIGEsIGxvbmcgYikNCisvKiBDb21wdXRlIGEgcm91bmRlZCB1cCB0byBuZXh0IG11bHRpcGxlIG9mIGIsIGllLCBjZWlsKGEvYikqYiAqLw0KKy8qIEFzc3VtZXMgYSA+PSAwLCBiID4gMCAqLw0KK3sNCisgIGEgKz0gYiAtIDFMOw0KKyAgcmV0dXJuIGEgLSAoYSAlIGIpOw0KK30NCisNCisNCisvKiBPbiBub3JtYWwgbWFjaGluZXMgd2UgY2FuIGFwcGx5IE1FTUNPUFkoKSBhbmQgTUVNWkVSTygpIHRvIHNhbXBsZSBhcnJheXMNCisgKiBhbmQgY29lZmZpY2llbnQtYmxvY2sgYXJyYXlzLiAgVGhpcyB3b24ndCB3b3JrIG9uIDgweDg2IGJlY2F1c2UgdGhlIGFycmF5cw0KKyAqIGFyZSBGQVIgYW5kIHdlJ3JlIGFzc3VtaW5nIGEgc21hbGwtcG9pbnRlciBtZW1vcnkgbW9kZWwuICBIb3dldmVyLCBzb21lDQorICogRE9TIGNvbXBpbGVycyBwcm92aWRlIGZhci1wb2ludGVyIHZlcnNpb25zIG9mIG1lbWNweSgpIGFuZCBtZW1zZXQoKSBldmVuDQorICogaW4gdGhlIHNtYWxsLW1vZGVsIGxpYnJhcmllcy4gIFRoZXNlIHdpbGwgYmUgdXNlZCBpZiBVU0VfRk1FTSBpcyBkZWZpbmVkLg0KKyAqIE90aGVyd2lzZSwgdGhlIHJvdXRpbmVzIGJlbG93IGRvIGl0IHRoZSBoYXJkIHdheS4gIChUaGUgcGVyZm9ybWFuY2UgY29zdA0KKyAqIGlzIG5vdCBhbGwgdGhhdCBncmVhdCwgYmVjYXVzZSB0aGVzZSByb3V0aW5lcyBhcmVuJ3QgdmVyeSBoZWF2aWx5IHVzZWQuKQ0KKyAqLw0KKw0KKyNpZm5kZWYgTkVFRF9GQVJfUE9JTlRFUlMJLyogbm9ybWFsIGNhc2UsIHNhbWUgYXMgcmVndWxhciBtYWNyb3MgKi8NCisjZGVmaW5lIEZNRU1DT1BZKGRlc3Qsc3JjLHNpemUpCU1FTUNPUFkoZGVzdCxzcmMsc2l6ZSkNCisjZGVmaW5lIEZNRU1aRVJPKHRhcmdldCxzaXplKQlNRU1aRVJPKHRhcmdldCxzaXplKQ0KKyNlbHNlCQkJCS8qIDgweDg2IGNhc2UsIGRlZmluZSBpZiB3ZSBjYW4gKi8NCisjaWZkZWYgVVNFX0ZNRU0NCisjZGVmaW5lIEZNRU1DT1BZKGRlc3Qsc3JjLHNpemUpCV9mbWVtY3B5KCh2b2lkIEZBUiAqKShkZXN0KSwgKGNvbnN0IHZvaWQgRkFSICopKHNyYyksIChzaXplX3QpKHNpemUpKQ0KKyNkZWZpbmUgRk1FTVpFUk8odGFyZ2V0LHNpemUpCV9mbWVtc2V0KCh2b2lkIEZBUiAqKSh0YXJnZXQpLCAwLCAoc2l6ZV90KShzaXplKSkNCisjZW5kaWYNCisjZW5kaWYNCisNCisNCitHTE9CQUwodm9pZCkNCitqY29weV9zYW1wbGVfcm93cyAoSlNBTVBBUlJBWSBpbnB1dF9hcnJheSwgaW50IHNvdXJjZV9yb3csDQorCQkgICBKU0FNUEFSUkFZIG91dHB1dF9hcnJheSwgaW50IGRlc3Rfcm93LA0KKwkJICAgaW50IG51bV9yb3dzLCBKRElNRU5TSU9OIG51bV9jb2xzKQ0KKy8qIENvcHkgc29tZSByb3dzIG9mIHNhbXBsZXMgZnJvbSBvbmUgcGxhY2UgdG8gYW5vdGhlci4NCisgKiBudW1fcm93cyByb3dzIGFyZSBjb3BpZWQgZnJvbSBpbnB1dF9hcnJheVtzb3VyY2Vfcm93KytdDQorICogdG8gb3V0cHV0X2FycmF5W2Rlc3Rfcm93KytdOyB0aGVzZSBhcmVhcyBtYXkgb3ZlcmxhcCBmb3IgZHVwbGljYXRpb24uDQorICogVGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJyYXlzIG11c3QgYmUgYXQgbGVhc3QgYXMgd2lkZSBhcyBudW1fY29scy4NCisgKi8NCit7DQorICByZWdpc3RlciBKU0FNUFJPVyBpbnB0ciwgb3V0cHRyOw0KKyNpZmRlZiBGTUVNQ09QWQ0KKyAgcmVnaXN0ZXIgc2l6ZV90IGNvdW50ID0gKHNpemVfdCkgKG51bV9jb2xzICogU0laRU9GKEpTQU1QTEUpKTsNCisjZWxzZQ0KKyAgcmVnaXN0ZXIgSkRJTUVOU0lPTiBjb3VudDsNCisjZW5kaWYNCisgIHJlZ2lzdGVyIGludCByb3c7DQorDQorICBpbnB1dF9hcnJheSArPSBzb3VyY2Vfcm93Ow0KKyAgb3V0cHV0X2FycmF5ICs9IGRlc3Rfcm93Ow0KKw0KKyAgZm9yIChyb3cgPSBudW1fcm93czsgcm93ID4gMDsgcm93LS0pIHsNCisgICAgaW5wdHIgPSAqaW5wdXRfYXJyYXkrKzsNCisgICAgb3V0cHRyID0gKm91dHB1dF9hcnJheSsrOw0KKyNpZmRlZiBGTUVNQ09QWQ0KKyAgICBGTUVNQ09QWShvdXRwdHIsIGlucHRyLCBjb3VudCk7DQorI2Vsc2UNCisgICAgZm9yIChjb3VudCA9IG51bV9jb2xzOyBjb3VudCA+IDA7IGNvdW50LS0pDQorICAgICAgKm91dHB0cisrID0gKmlucHRyKys7CS8qIG5lZWRuJ3QgYm90aGVyIHdpdGggR0VUSlNBTVBMRSgpIGhlcmUgKi8NCisjZW5kaWYNCisgIH0NCit9DQorDQorDQorR0xPQkFMKHZvaWQpDQoramNvcHlfYmxvY2tfcm93IChKQkxPQ0tST1cgaW5wdXRfcm93LCBKQkxPQ0tST1cgb3V0cHV0X3JvdywNCisJCSBKRElNRU5TSU9OIG51bV9ibG9ja3MpDQorLyogQ29weSBhIHJvdyBvZiBjb2VmZmljaWVudCBibG9ja3MgZnJvbSBvbmUgcGxhY2UgdG8gYW5vdGhlci4gKi8NCit7DQorI2lmZGVmIEZNRU1DT1BZDQorICBGTUVNQ09QWShvdXRwdXRfcm93LCBpbnB1dF9yb3csIG51bV9ibG9ja3MgKiAoRENUU0laRTIgKiBTSVpFT0YoSkNPRUYpKSk7DQorI2Vsc2UNCisgIHJlZ2lzdGVyIEpDT0VGUFRSIGlucHRyLCBvdXRwdHI7DQorICByZWdpc3RlciBsb25nIGNvdW50Ow0KKw0KKyAgaW5wdHIgPSAoSkNPRUZQVFIpIGlucHV0X3JvdzsNCisgIG91dHB0ciA9IChKQ09FRlBUUikgb3V0cHV0X3JvdzsNCisgIGZvciAoY291bnQgPSAobG9uZykgbnVtX2Jsb2NrcyAqIERDVFNJWkUyOyBjb3VudCA+IDA7IGNvdW50LS0pIHsNCisgICAgKm91dHB0cisrID0gKmlucHRyKys7DQorICB9DQorI2VuZGlmDQorfQ0KKw0KKw0KK0dMT0JBTCh2b2lkKQ0KK2p6ZXJvX2ZhciAodm9pZCBGQVIgKiB0YXJnZXQsIHNpemVfdCBieXRlc3RvemVybykNCisvKiBaZXJvIG91dCBhIGNodW5rIG9mIEZBUiBtZW1vcnkuICovDQorLyogVGhpcyBtaWdodCBiZSBzYW1wbGUtYXJyYXkgZGF0YSwgYmxvY2stYXJyYXkgZGF0YSwgb3IgYWxsb2NfbGFyZ2UgZGF0YS4gKi8NCit7DQorI2lmZGVmIEZNRU1aRVJPDQorICBGTUVNWkVSTyh0YXJnZXQsIGJ5dGVzdG96ZXJvKTsNCisjZWxzZQ0KKyAgcmVnaXN0ZXIgY2hhciBGQVIgKiBwdHIgPSAoY2hhciBGQVIgKikgdGFyZ2V0Ow0KKyAgcmVnaXN0ZXIgc2l6ZV90IGNvdW50Ow0KKw0KKyAgZm9yIChjb3VudCA9IGJ5dGVzdG96ZXJvOyBjb3VudCA+IDA7IGNvdW50LS0pIHsNCisgICAgKnB0cisrID0gMDsNCisgIH0NCisjZW5kaWYNCit9DQorDQorI2VuZGlmIC8vX0ZYX0pQRUdfVFVSQk9fDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2pjaHVmZi5oIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2pjaHVmZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMDJjMDkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvamNodWZmLmgKQEAgLTAsMCArMSw0NyBAQAorLyoNCisgKiBqY2h1ZmYuaA0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTcsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIGRlY2xhcmF0aW9ucyBmb3IgSHVmZm1hbiBlbnRyb3B5IGVuY29kaW5nIHJvdXRpbmVzDQorICogdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIHNlcXVlbnRpYWwgZW5jb2RlciAoamNodWZmLmMpIGFuZCB0aGUNCisgKiBwcm9ncmVzc2l2ZSBlbmNvZGVyIChqY3BodWZmLmMpLiAgTm8gb3RoZXIgbW9kdWxlcyBuZWVkIHRvIHNlZSB0aGVzZS4NCisgKi8NCisNCisvKiBUaGUgbGVnYWwgcmFuZ2Ugb2YgYSBEQ1QgY29lZmZpY2llbnQgaXMNCisgKiAgLTEwMjQgLi4gKzEwMjMgIGZvciA4LWJpdCBkYXRhOw0KKyAqIC0xNjM4NCAuLiArMTYzODMgZm9yIDEyLWJpdCBkYXRhLg0KKyAqIEhlbmNlIHRoZSBtYWduaXR1ZGUgc2hvdWxkIGFsd2F5cyBmaXQgaW4gMTAgb3IgMTQgYml0cyByZXNwZWN0aXZlbHkuDQorICovDQorDQorI2lmIEJJVFNfSU5fSlNBTVBMRSA9PSA4DQorI2RlZmluZSBNQVhfQ09FRl9CSVRTIDEwDQorI2Vsc2UNCisjZGVmaW5lIE1BWF9DT0VGX0JJVFMgMTQNCisjZW5kaWYNCisNCisvKiBEZXJpdmVkIGRhdGEgY29uc3RydWN0ZWQgZm9yIGVhY2ggSHVmZm1hbiB0YWJsZSAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIHVuc2lnbmVkIGludCBlaHVmY29bMjU2XTsJLyogY29kZSBmb3IgZWFjaCBzeW1ib2wgKi8NCisgIGNoYXIgZWh1ZnNpWzI1Nl07CQkvKiBsZW5ndGggb2YgY29kZSBmb3IgZWFjaCBzeW1ib2wgKi8NCisgIC8qIElmIG5vIGNvZGUgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciBhIHN5bWJvbCBTLCBlaHVmc2lbU10gY29udGFpbnMgMCAqLw0KK30gY19kZXJpdmVkX3RibDsNCisNCisvKiBTaG9ydCBmb3JtcyBvZiBleHRlcm5hbCBuYW1lcyBmb3Igc3lzdGVtcyB3aXRoIGJyYWluLWRhbWFnZWQgbGlua2Vycy4gKi8NCisNCisjaWZkZWYgTkVFRF9TSE9SVF9FWFRFUk5BTF9OQU1FUw0KKyNkZWZpbmUganBlZ19tYWtlX2NfZGVyaXZlZF90YmwJak1rQ0Rlcml2ZWQNCisjZGVmaW5lIGpwZWdfZ2VuX29wdGltYWxfdGFibGUJakdlbk9wdFRibA0KKyNlbmRpZiAvKiBORUVEX1NIT1JUX0VYVEVSTkFMX05BTUVTICovDQorDQorLyogRXhwYW5kIGEgSHVmZm1hbiB0YWJsZSBkZWZpbml0aW9uIGludG8gdGhlIGRlcml2ZWQgZm9ybWF0ICovDQorRVhURVJOKHZvaWQpIGpwZWdfbWFrZV9jX2Rlcml2ZWRfdGJsDQorCUpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sIGJvb2xlYW4gaXNEQywgaW50IHRibG5vLA0KKwkgICAgIGNfZGVyaXZlZF90YmwgKiogcGR0YmwpKTsNCisNCisvKiBHZW5lcmF0ZSBhbiBvcHRpbWFsIHRhYmxlIGRlZmluaXRpb24gZ2l2ZW4gdGhlIHNwZWNpZmllZCBjb3VudHMgKi8NCitFWFRFUk4odm9pZCkganBlZ19nZW5fb3B0aW1hbF90YWJsZQ0KKwlKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKSFVGRl9UQkwgKiBodGJsLCBsb25nIGZyZXFbXSkpOw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qY29uZmlnLmggYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvamNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNGRhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvamNvbmZpZy5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qIGpjb25maWcudmMgLS0tIGpjb25maWcuaCBmb3IgTWljcm9zb2Z0IFZpc3VhbCBDKysgb24gV2luZG93cyA5NSBvciBOVC4gKi8NCisvKiBzZWUgamNvbmZpZy5kb2MgZm9yIGV4cGxhbmF0aW9ucyAqLw0KKw0KKyNkZWZpbmUgSEFWRV9QUk9UT1RZUEVTDQorI2RlZmluZSBIQVZFX1VOU0lHTkVEX0NIQVINCisjZGVmaW5lIEhBVkVfVU5TSUdORURfU0hPUlQNCisvKiAjZGVmaW5lIHZvaWQgY2hhciAqLw0KKy8qICNkZWZpbmUgY29uc3QgKi8NCisjdW5kZWYgQ0hBUl9JU19VTlNJR05FRA0KKyNkZWZpbmUgSEFWRV9TVERERUZfSA0KKyNkZWZpbmUgSEFWRV9TVERMSUJfSA0KKyN1bmRlZiBORUVEX0JTRF9TVFJJTkdTDQorI3VuZGVmIE5FRURfU1lTX1RZUEVTX0gNCisjdW5kZWYgTkVFRF9GQVJfUE9JTlRFUlMJLyogd2UgcHJlc3VtZSBhIDMyLWJpdCBmbGF0IG1lbW9yeSBtb2RlbCAqLw0KKyN1bmRlZiBORUVEX1NIT1JUX0VYVEVSTkFMX05BTUVTDQorI3VuZGVmIElOQ09NUExFVEVfVFlQRVNfQlJPS0VODQorDQorLyogRGVmaW5lICJib29sZWFuIiBhcyB1bnNpZ25lZCBjaGFyLCBub3QgaW50LCBwZXIgV2luZG93cyBjdXN0b20gKi8NCisjaWZuZGVmIF9fUlBDTkRSX0hfXwkJLyogZG9uJ3QgY29uZmxpY3QgaWYgcnBjbmRyLmggYWxyZWFkeSByZWFkICovDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIGJvb2xlYW47DQorI2VuZGlmDQorI2RlZmluZSBIQVZFX0JPT0xFQU4JCS8qIHByZXZlbnQgam1vcmVjZmcuaCBmcm9tIHJlZGVmaW5pbmcgaXQgKi8NCisNCisNCisjaWZkZWYgSlBFR19JTlRFUk5BTFMNCisNCisjdW5kZWYgUklHSFRfU0hJRlRfSVNfVU5TSUdORUQNCisNCisjZW5kaWYgLyogSlBFR19JTlRFUk5BTFMgKi8NCisNCisjaWZkZWYgSlBFR19DSlBFR19ESlBFRw0KKw0KKyNkZWZpbmUgQk1QX1NVUFBPUlRFRAkJLyogQk1QIGltYWdlIGZpbGUgZm9ybWF0ICovDQorI2RlZmluZSBHSUZfU1VQUE9SVEVECQkvKiBHSUYgaW1hZ2UgZmlsZSBmb3JtYXQgKi8NCisjZGVmaW5lIFBQTV9TVVBQT1JURUQJCS8qIFBCTVBMVVMgUFBNL1BHTSBpbWFnZSBmaWxlIGZvcm1hdCAqLw0KKyN1bmRlZiBSTEVfU1VQUE9SVEVECQkvKiBVdGFoIFJMRSBpbWFnZSBmaWxlIGZvcm1hdCAqLw0KKyNkZWZpbmUgVEFSR0FfU1VQUE9SVEVECQkvKiBUYXJnYSBpbWFnZSBmaWxlIGZvcm1hdCAqLw0KKw0KKyNkZWZpbmUgVFdPX0ZJTEVfQ09NTUFORExJTkUJLyogb3B0aW9uYWwgKi8NCisjZGVmaW5lIFVTRV9TRVRNT0RFCQkvKiBNaWNyb3NvZnQgaGFzIHNldG1vZGUoKSAqLw0KKyN1bmRlZiBORUVEX1NJR05BTF9DQVRDSEVSDQorI3VuZGVmIERPTlRfVVNFX0JfTU9ERQ0KKyN1bmRlZiBQUk9HUkVTU19SRVBPUlQJCS8qIG9wdGlvbmFsICovDQorDQorI2VuZGlmIC8qIEpQRUdfQ0pQRUdfREpQRUcgKi8NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvamRjdC5oIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2pkY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjY0Y2FiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2pkY3QuaApAQCAtMCwwICsxLDE3NiBAQAorLyoNCisgKiBqZGN0LmgNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NC0xOTk2LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgaW5jbHVkZSBmaWxlIGNvbnRhaW5zIGNvbW1vbiBkZWNsYXJhdGlvbnMgZm9yIHRoZSBmb3J3YXJkIGFuZA0KKyAqIGludmVyc2UgRENUIG1vZHVsZXMuICBUaGVzZSBkZWNsYXJhdGlvbnMgYXJlIHByaXZhdGUgdG8gdGhlIERDVCBtYW5hZ2Vycw0KKyAqIChqY2RjdG1nci5jLCBqZGRjdG1nci5jKSBhbmQgdGhlIGluZGl2aWR1YWwgRENUIGFsZ29yaXRobXMuDQorICogVGhlIGluZGl2aWR1YWwgRENUIGFsZ29yaXRobXMgYXJlIGtlcHQgaW4gc2VwYXJhdGUgZmlsZXMgdG8gZWFzZSANCisgKiBtYWNoaW5lLWRlcGVuZGVudCB0dW5pbmcgKGUuZy4sIGFzc2VtYmx5IGNvZGluZykuDQorICovDQorDQorDQorLyoNCisgKiBBIGZvcndhcmQgRENUIHJvdXRpbmUgaXMgZ2l2ZW4gYSBwb2ludGVyIHRvIGEgd29yayBhcmVhIG9mIHR5cGUgRENURUxFTVtdOw0KKyAqIHRoZSBEQ1QgaXMgdG8gYmUgcGVyZm9ybWVkIGluLXBsYWNlIGluIHRoYXQgYnVmZmVyLiAgVHlwZSBEQ1RFTEVNIGlzIGludA0KKyAqIGZvciA4LWJpdCBzYW1wbGVzLCBJTlQzMiBmb3IgMTItYml0IHNhbXBsZXMuICAoTk9URTogRmxvYXRpbmctcG9pbnQgRENUDQorICogaW1wbGVtZW50YXRpb25zIHVzZSBhbiBhcnJheSBvZiB0eXBlIEZBU1RfRkxPQVQsIGluc3RlYWQuKQ0KKyAqIFRoZSBEQ1QgaW5wdXRzIGFyZSBleHBlY3RlZCB0byBiZSBzaWduZWQgKHJhbmdlICstQ0VOVEVSSlNBTVBMRSkuDQorICogVGhlIERDVCBvdXRwdXRzIGFyZSByZXR1cm5lZCBzY2FsZWQgdXAgYnkgYSBmYWN0b3Igb2YgODsgdGhleSB0aGVyZWZvcmUNCisgKiBoYXZlIGEgcmFuZ2Ugb2YgKy04SyBmb3IgOC1iaXQgZGF0YSwgKy0xMjhLIGZvciAxMi1iaXQgZGF0YS4gIFRoaXMNCisgKiBjb252ZW50aW9uIGltcHJvdmVzIGFjY3VyYWN5IGluIGludGVnZXIgaW1wbGVtZW50YXRpb25zIGFuZCBzYXZlcyBzb21lDQorICogd29yayBpbiBmbG9hdGluZy1wb2ludCBvbmVzLg0KKyAqIFF1YW50aXphdGlvbiBvZiB0aGUgb3V0cHV0IGNvZWZmaWNpZW50cyBpcyBkb25lIGJ5IGpjZGN0bWdyLmMuDQorICovDQorDQorI2lmIEJJVFNfSU5fSlNBTVBMRSA9PSA4DQordHlwZWRlZiBpbnQgRENURUxFTTsJCS8qIDE2IG9yIDMyIGJpdHMgaXMgZmluZSAqLw0KKyNlbHNlDQordHlwZWRlZiBJTlQzMiBEQ1RFTEVNOwkJLyogbXVzdCBoYXZlIDMyIGJpdHMgKi8NCisjZW5kaWYNCisNCit0eXBlZGVmIEpNRVRIT0Qodm9pZCwgZm9yd2FyZF9EQ1RfbWV0aG9kX3B0ciwgKERDVEVMRU0gKiBkYXRhKSk7DQordHlwZWRlZiBKTUVUSE9EKHZvaWQsIGZsb2F0X0RDVF9tZXRob2RfcHRyLCAoRkFTVF9GTE9BVCAqIGRhdGEpKTsNCisNCisNCisvKg0KKyAqIEFuIGludmVyc2UgRENUIHJvdXRpbmUgaXMgZ2l2ZW4gYSBwb2ludGVyIHRvIHRoZSBpbnB1dCBKQkxPQ0sgYW5kIGEgcG9pbnRlcg0KKyAqIHRvIGFuIG91dHB1dCBzYW1wbGUgYXJyYXkuICBUaGUgcm91dGluZSBtdXN0IGRlcXVhbnRpemUgdGhlIGlucHV0IGRhdGEgYXMNCisgKiB3ZWxsIGFzIHBlcmZvcm0gdGhlIElEQ1Q7IGZvciBkZXF1YW50aXphdGlvbiwgaXQgdXNlcyB0aGUgbXVsdGlwbGllciB0YWJsZQ0KKyAqIHBvaW50ZWQgdG8gYnkgY29tcHB0ci0+ZGN0X3RhYmxlLiAgVGhlIG91dHB1dCBkYXRhIGlzIHRvIGJlIHBsYWNlZCBpbnRvIHRoZQ0KKyAqIHNhbXBsZSBhcnJheSBzdGFydGluZyBhdCBhIHNwZWNpZmllZCBjb2x1bW4uICAoQW55IHJvdyBvZmZzZXQgbmVlZGVkIHdpbGwNCisgKiBiZSBhcHBsaWVkIHRvIHRoZSBhcnJheSBwb2ludGVyIGJlZm9yZSBpdCBpcyBwYXNzZWQgdG8gdGhlIElEQ1QgY29kZS4pDQorICogTm90ZSB0aGF0IHRoZSBudW1iZXIgb2Ygc2FtcGxlcyBlbWl0dGVkIGJ5IHRoZSBJRENUIHJvdXRpbmUgaXMNCisgKiBEQ1Rfc2NhbGVkX3NpemUgKiBEQ1Rfc2NhbGVkX3NpemUuDQorICovDQorDQorLyogdHlwZWRlZiBpbnZlcnNlX0RDVF9tZXRob2RfcHRyIGlzIGRlY2xhcmVkIGluIGpwZWdpbnQuaCAqLw0KKw0KKy8qDQorICogRWFjaCBJRENUIHJvdXRpbmUgaGFzIGl0cyBvd24gaWRlYXMgYWJvdXQgdGhlIGJlc3QgZGN0X3RhYmxlIGVsZW1lbnQgdHlwZS4NCisgKi8NCisNCit0eXBlZGVmIE1VTFRJUExJRVIgSVNMT1dfTVVMVF9UWVBFOyAvKiBzaG9ydCBvciBpbnQsIHdoaWNoZXZlciBpcyBmYXN0ZXIgKi8NCisjaWYgQklUU19JTl9KU0FNUExFID09IDgNCit0eXBlZGVmIE1VTFRJUExJRVIgSUZBU1RfTVVMVF9UWVBFOyAvKiAxNiBiaXRzIGlzIE9LLCB1c2Ugc2hvcnQgaWYgZmFzdGVyICovDQorI2RlZmluZSBJRkFTVF9TQ0FMRV9CSVRTICAyCS8qIGZyYWN0aW9uYWwgYml0cyBpbiBzY2FsZSBmYWN0b3JzICovDQorI2Vsc2UNCit0eXBlZGVmIElOVDMyIElGQVNUX01VTFRfVFlQRTsJLyogbmVlZCAzMiBiaXRzIGZvciBzY2FsZWQgcXVhbnRpemVycyAqLw0KKyNkZWZpbmUgSUZBU1RfU0NBTEVfQklUUyAgMTMJLyogZnJhY3Rpb25hbCBiaXRzIGluIHNjYWxlIGZhY3RvcnMgKi8NCisjZW5kaWYNCit0eXBlZGVmIEZBU1RfRkxPQVQgRkxPQVRfTVVMVF9UWVBFOyAvKiBwcmVmZXJyZWQgZmxvYXRpbmcgdHlwZSAqLw0KKw0KKw0KKy8qDQorICogRWFjaCBJRENUIHJvdXRpbmUgaXMgcmVzcG9uc2libGUgZm9yIHJhbmdlLWxpbWl0aW5nIGl0cyByZXN1bHRzIGFuZA0KKyAqIGNvbnZlcnRpbmcgdGhlbSB0byB1bnNpZ25lZCBmb3JtICgwLi5NQVhKU0FNUExFKS4gIFRoZSByYXcgb3V0cHV0cyBjb3VsZA0KKyAqIGJlIHF1aXRlIGZhciBvdXQgb2YgcmFuZ2UgaWYgdGhlIGlucHV0IGRhdGEgaXMgY29ycnVwdCwgc28gYSBidWxsZXRwcm9vZg0KKyAqIHJhbmdlLWxpbWl0aW5nIHN0ZXAgaXMgcmVxdWlyZWQuICBXZSB1c2UgYSBtYXNrLWFuZC10YWJsZS1sb29rdXAgbWV0aG9kDQorICogdG8gZG8gdGhlIGNvbWJpbmVkIG9wZXJhdGlvbnMgcXVpY2tseS4gIFNlZSB0aGUgY29tbWVudHMgd2l0aA0KKyAqIHByZXBhcmVfcmFuZ2VfbGltaXRfdGFibGUgKGluIGpkbWFzdGVyLmMpIGZvciBtb3JlIGluZm8uDQorICovDQorDQorI2RlZmluZSBJRENUX3JhbmdlX2xpbWl0KGNpbmZvKSAgKChjaW5mbyktPnNhbXBsZV9yYW5nZV9saW1pdCArIENFTlRFUkpTQU1QTEUpDQorDQorI2RlZmluZSBSQU5HRV9NQVNLICAoTUFYSlNBTVBMRSAqIDQgKyAzKSAvKiAyIGJpdHMgd2lkZXIgdGhhbiBsZWdhbCBzYW1wbGVzICovDQorDQorDQorLyogU2hvcnQgZm9ybXMgb2YgZXh0ZXJuYWwgbmFtZXMgZm9yIHN5c3RlbXMgd2l0aCBicmFpbi1kYW1hZ2VkIGxpbmtlcnMuICovDQorDQorI2lmZGVmIE5FRURfU0hPUlRfRVhURVJOQUxfTkFNRVMNCisjZGVmaW5lIGpwZWdfZmRjdF9pc2xvdwkJakZEaXNsb3cNCisjZGVmaW5lIGpwZWdfZmRjdF9pZmFzdAkJakZEaWZhc3QNCisjZGVmaW5lIGpwZWdfZmRjdF9mbG9hdAkJakZEZmxvYXQNCisjZGVmaW5lIGpwZWdfaWRjdF9pc2xvdwkJalJEaXNsb3cNCisjZGVmaW5lIGpwZWdfaWRjdF9pZmFzdAkJalJEaWZhc3QNCisjZGVmaW5lIGpwZWdfaWRjdF9mbG9hdAkJalJEZmxvYXQNCisjZGVmaW5lIGpwZWdfaWRjdF80eDQJCWpSRDR4NA0KKyNkZWZpbmUganBlZ19pZGN0XzJ4MgkJalJEMngyDQorI2RlZmluZSBqcGVnX2lkY3RfMXgxCQlqUkQxeDENCisjZW5kaWYgLyogTkVFRF9TSE9SVF9FWFRFUk5BTF9OQU1FUyAqLw0KKw0KKy8qIEV4dGVybiBkZWNsYXJhdGlvbnMgZm9yIHRoZSBmb3J3YXJkIGFuZCBpbnZlcnNlIERDVCByb3V0aW5lcy4gKi8NCisNCitFWFRFUk4odm9pZCkganBlZ19mZGN0X2lzbG93IEpQUCgoRENURUxFTSAqIGRhdGEpKTsNCitFWFRFUk4odm9pZCkganBlZ19mZGN0X2lmYXN0IEpQUCgoRENURUxFTSAqIGRhdGEpKTsNCitFWFRFUk4odm9pZCkganBlZ19mZGN0X2Zsb2F0IEpQUCgoRkFTVF9GTE9BVCAqIGRhdGEpKTsNCisNCitFWFRFUk4odm9pZCkganBlZ19pZGN0X2lzbG93DQorICAgIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCSBKQ09FRlBUUiBjb2VmX2Jsb2NrLCBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gb3V0cHV0X2NvbCkpOw0KK0VYVEVSTih2b2lkKSBqcGVnX2lkY3RfaWZhc3QNCisgICAgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBqcGVnX2NvbXBvbmVudF9pbmZvICogY29tcHB0ciwNCisJIEpDT0VGUFRSIGNvZWZfYmxvY2ssIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZiwgSkRJTUVOU0lPTiBvdXRwdXRfY29sKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfaWRjdF9mbG9hdA0KKyAgICBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyLA0KKwkgSkNPRUZQVFIgY29lZl9ibG9jaywgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OIG91dHB1dF9jb2wpKTsNCitFWFRFUk4odm9pZCkganBlZ19pZGN0XzR4NA0KKyAgICBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyLA0KKwkgSkNPRUZQVFIgY29lZl9ibG9jaywgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OIG91dHB1dF9jb2wpKTsNCitFWFRFUk4odm9pZCkganBlZ19pZGN0XzJ4Mg0KKyAgICBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyLA0KKwkgSkNPRUZQVFIgY29lZl9ibG9jaywgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OIG91dHB1dF9jb2wpKTsNCitFWFRFUk4odm9pZCkganBlZ19pZGN0XzF4MQ0KKyAgICBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wcHRyLA0KKwkgSkNPRUZQVFIgY29lZl9ibG9jaywgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OIG91dHB1dF9jb2wpKTsNCisNCisNCisvKg0KKyAqIE1hY3JvcyBmb3IgaGFuZGxpbmcgZml4ZWQtcG9pbnQgYXJpdGhtZXRpYzsgdGhlc2UgYXJlIHVzZWQgYnkgbWFueQ0KKyAqIGJ1dCBub3QgYWxsIG9mIHRoZSBEQ1QvSURDVCBtb2R1bGVzLg0KKyAqDQorICogQWxsIHZhbHVlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgb2YgdHlwZSBJTlQzMi4NCisgKiBGcmFjdGlvbmFsIGNvbnN0YW50cyBhcmUgc2NhbGVkIGxlZnQgYnkgQ09OU1RfQklUUyBiaXRzLg0KKyAqIENPTlNUX0JJVFMgaXMgZGVmaW5lZCB3aXRoaW4gZWFjaCBtb2R1bGUgdXNpbmcgdGhlc2UgbWFjcm9zLA0KKyAqIGFuZCBtYXkgZGlmZmVyIGZyb20gb25lIG1vZHVsZSB0byB0aGUgbmV4dC4NCisgKi8NCisNCisjZGVmaW5lIE9ORQkoKElOVDMyKSAxKQ0KKyNkZWZpbmUgQ09OU1RfU0NBTEUgKE9ORSA8PCBDT05TVF9CSVRTKQ0KKw0KKy8qIENvbnZlcnQgYSBwb3NpdGl2ZSByZWFsIGNvbnN0YW50IHRvIGFuIGludGVnZXIgc2NhbGVkIGJ5IENPTlNUX1NDQUxFLg0KKyAqIENhdXRpb246IHNvbWUgQyBjb21waWxlcnMgZmFpbCB0byByZWR1Y2UgIkZJWChjb25zdGFudCkiIGF0IGNvbXBpbGUgdGltZSwNCisgKiB0aHVzIGNhdXNpbmcgYSBsb3Qgb2YgdXNlbGVzcyBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGF0IHJ1biB0aW1lLg0KKyAqLw0KKw0KKyNkZWZpbmUgRklYKHgpCSgoSU5UMzIpICgoeCkgKiBDT05TVF9TQ0FMRSArIDAuNSkpDQorDQorLyogRGVzY2FsZSBhbmQgY29ycmVjdGx5IHJvdW5kIGFuIElOVDMyIHZhbHVlIHRoYXQncyBzY2FsZWQgYnkgTiBiaXRzLg0KKyAqIFdlIGFzc3VtZSBSSUdIVF9TSElGVCByb3VuZHMgdG93YXJkcyBtaW51cyBpbmZpbml0eSwgc28gYWRkaW5nDQorICogdGhlIGZ1ZGdlIGZhY3RvciBpcyBjb3JyZWN0IGZvciBlaXRoZXIgc2lnbiBvZiBYLg0KKyAqLw0KKw0KKyNkZWZpbmUgREVTQ0FMRSh4LG4pICBSSUdIVF9TSElGVCgoeCkgKyAoT05FIDw8ICgobiktMSkpLCBuKQ0KKw0KKy8qIE11bHRpcGx5IGFuIElOVDMyIHZhcmlhYmxlIGJ5IGFuIElOVDMyIGNvbnN0YW50IHRvIHlpZWxkIGFuIElOVDMyIHJlc3VsdC4NCisgKiBUaGlzIG1hY3JvIGlzIHVzZWQgb25seSB3aGVuIHRoZSB0d28gaW5wdXRzIHdpbGwgYWN0dWFsbHkgYmUgbm8gbW9yZSB0aGFuDQorICogMTYgYml0cyB3aWRlLCBzbyB0aGF0IGEgMTZ4MTYtPjMyIGJpdCBtdWx0aXBseSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIGENCisgKiBmdWxsIDMyeDMyIG11bHRpcGx5LiAgVGhpcyBwcm92aWRlcyBhIHVzZWZ1bCBzcGVlZHVwIG9uIG1hbnkgbWFjaGluZXMuDQorICogVW5mb3J0dW5hdGVseSB0aGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSBhIDE2eDE2LT4zMiBtdWx0aXBseSBwb3J0YWJseQ0KKyAqIGluIEMsIGJ1dCBzb21lIEMgY29tcGlsZXJzIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIGlmIHlvdSBwcm92aWRlIHRoZQ0KKyAqIGNvcnJlY3QgY29tYmluYXRpb24gb2YgY2FzdHMuDQorICovDQorDQorI2lmZGVmIFNIT1JUeFNIT1JUXzMyCQkvKiBtYXkgd29yayBpZiAnaW50JyBpcyAzMiBiaXRzICovDQorI2RlZmluZSBNVUxUSVBMWTE2QzE2KHZhcixjb25zdCkgICgoKElOVDE2KSAodmFyKSkgKiAoKElOVDE2KSAoY29uc3QpKSkNCisjZW5kaWYNCisjaWZkZWYgU0hPUlR4TENPTlNUXzMyCQkvKiBrbm93biB0byB3b3JrIHdpdGggTWljcm9zb2Z0IEMgNi4wICovDQorI2RlZmluZSBNVUxUSVBMWTE2QzE2KHZhcixjb25zdCkgICgoKElOVDE2KSAodmFyKSkgKiAoKElOVDMyKSAoY29uc3QpKSkNCisjZW5kaWYNCisNCisjaWZuZGVmIE1VTFRJUExZMTZDMTYJCS8qIGRlZmF1bHQgZGVmaW5pdGlvbiAqLw0KKyNkZWZpbmUgTVVMVElQTFkxNkMxNih2YXIsY29uc3QpICAoKHZhcikgKiAoY29uc3QpKQ0KKyNlbmRpZg0KKw0KKy8qIFNhbWUgZXhjZXB0IGJvdGggaW5wdXRzIGFyZSB2YXJpYWJsZXMuICovDQorDQorI2lmZGVmIFNIT1JUeFNIT1JUXzMyCQkvKiBtYXkgd29yayBpZiAnaW50JyBpcyAzMiBiaXRzICovDQorI2RlZmluZSBNVUxUSVBMWTE2VjE2KHZhcjEsdmFyMikgICgoKElOVDE2KSAodmFyMSkpICogKChJTlQxNikgKHZhcjIpKSkNCisjZW5kaWYNCisNCisjaWZuZGVmIE1VTFRJUExZMTZWMTYJCS8qIGRlZmF1bHQgZGVmaW5pdGlvbiAqLw0KKyNkZWZpbmUgTVVMVElQTFkxNlYxNih2YXIxLHZhcjIpICAoKHZhcjEpICogKHZhcjIpKQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qZGh1ZmYuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qZGh1ZmYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmMwNzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2pkaHVmZi5oCkBAIC0wLDAgKzEsMjAxIEBACisvKg0KKyAqIGpkaHVmZi5oDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgZGVjbGFyYXRpb25zIGZvciBIdWZmbWFuIGVudHJvcHkgZGVjb2Rpbmcgcm91dGluZXMNCisgKiB0aGF0IGFyZSBzaGFyZWQgYmV0d2VlbiB0aGUgc2VxdWVudGlhbCBkZWNvZGVyIChqZGh1ZmYuYykgYW5kIHRoZQ0KKyAqIHByb2dyZXNzaXZlIGRlY29kZXIgKGpkcGh1ZmYuYykuICBObyBvdGhlciBtb2R1bGVzIG5lZWQgdG8gc2VlIHRoZXNlLg0KKyAqLw0KKw0KKy8qIFNob3J0IGZvcm1zIG9mIGV4dGVybmFsIG5hbWVzIGZvciBzeXN0ZW1zIHdpdGggYnJhaW4tZGFtYWdlZCBsaW5rZXJzLiAqLw0KKw0KKyNpZmRlZiBORUVEX1NIT1JUX0VYVEVSTkFMX05BTUVTDQorI2RlZmluZSBqcGVnX21ha2VfZF9kZXJpdmVkX3RibAlqTWtERGVyaXZlZA0KKyNkZWZpbmUganBlZ19maWxsX2JpdF9idWZmZXIJakZpbEJpdEJ1Zg0KKyNkZWZpbmUganBlZ19odWZmX2RlY29kZQlqSHVmRGVjb2RlDQorI2VuZGlmIC8qIE5FRURfU0hPUlRfRVhURVJOQUxfTkFNRVMgKi8NCisNCisNCisvKiBEZXJpdmVkIGRhdGEgY29uc3RydWN0ZWQgZm9yIGVhY2ggSHVmZm1hbiB0YWJsZSAqLw0KKw0KKyNkZWZpbmUgSFVGRl9MT09LQUhFQUQJOAkvKiAjIG9mIGJpdHMgb2YgbG9va2FoZWFkICovDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgLyogQmFzaWMgdGFibGVzOiAoZWxlbWVudCBbMF0gb2YgZWFjaCBhcnJheSBpcyB1bnVzZWQpICovDQorICBJTlQzMiBtYXhjb2RlWzE4XTsJCS8qIGxhcmdlc3QgY29kZSBvZiBsZW5ndGggayAoLTEgaWYgbm9uZSkgKi8NCisgIC8qIChtYXhjb2RlWzE3XSBpcyBhIHNlbnRpbmVsIHRvIGVuc3VyZSBqcGVnX2h1ZmZfZGVjb2RlIHRlcm1pbmF0ZXMpICovDQorICBJTlQzMiB2YWxvZmZzZXRbMTddOwkJLyogaHVmZnZhbFtdIG9mZnNldCBmb3IgY29kZXMgb2YgbGVuZ3RoIGsgKi8NCisgIC8qIHZhbG9mZnNldFtrXSA9IGh1ZmZ2YWxbXSBpbmRleCBvZiAxc3Qgc3ltYm9sIG9mIGNvZGUgbGVuZ3RoIGssIGxlc3MNCisgICAqIHRoZSBzbWFsbGVzdCBjb2RlIG9mIGxlbmd0aCBrOyBzbyBnaXZlbiBhIGNvZGUgb2YgbGVuZ3RoIGssIHRoZQ0KKyAgICogY29ycmVzcG9uZGluZyBzeW1ib2wgaXMgaHVmZnZhbFtjb2RlICsgdmFsb2Zmc2V0W2tdXQ0KKyAgICovDQorDQorICAvKiBMaW5rIHRvIHB1YmxpYyBIdWZmbWFuIHRhYmxlIChuZWVkZWQgb25seSBpbiBqcGVnX2h1ZmZfZGVjb2RlKSAqLw0KKyAgSkhVRkZfVEJMICpwdWI7DQorDQorICAvKiBMb29rYWhlYWQgdGFibGVzOiBpbmRleGVkIGJ5IHRoZSBuZXh0IEhVRkZfTE9PS0FIRUFEIGJpdHMgb2YNCisgICAqIHRoZSBpbnB1dCBkYXRhIHN0cmVhbS4gIElmIHRoZSBuZXh0IEh1ZmZtYW4gY29kZSBpcyBubyBtb3JlDQorICAgKiB0aGFuIEhVRkZfTE9PS0FIRUFEIGJpdHMgbG9uZywgd2UgY2FuIG9idGFpbiBpdHMgbGVuZ3RoIGFuZA0KKyAgICogdGhlIGNvcnJlc3BvbmRpbmcgc3ltYm9sIGRpcmVjdGx5IGZyb20gdGhlc2UgdGFibGVzLg0KKyAgICovDQorICBpbnQgbG9va19uYml0c1sxPDxIVUZGX0xPT0tBSEVBRF07IC8qICMgYml0cywgb3IgMCBpZiB0b28gbG9uZyAqLw0KKyAgVUlOVDggbG9va19zeW1bMTw8SFVGRl9MT09LQUhFQURdOyAvKiBzeW1ib2wsIG9yIHVudXNlZCAqLw0KK30gZF9kZXJpdmVkX3RibDsNCisNCisvKiBFeHBhbmQgYSBIdWZmbWFuIHRhYmxlIGRlZmluaXRpb24gaW50byB0aGUgZGVyaXZlZCBmb3JtYXQgKi8NCitFWFRFUk4odm9pZCkganBlZ19tYWtlX2RfZGVyaXZlZF90YmwNCisJSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBib29sZWFuIGlzREMsIGludCB0YmxubywNCisJICAgICBkX2Rlcml2ZWRfdGJsICoqIHBkdGJsKSk7DQorDQorDQorLyoNCisgKiBGZXRjaGluZyB0aGUgbmV4dCBOIGJpdHMgZnJvbSB0aGUgaW5wdXQgc3RyZWFtIGlzIGEgdGltZS1jcml0aWNhbCBvcGVyYXRpb24NCisgKiBmb3IgdGhlIEh1ZmZtYW4gZGVjb2RlcnMuICBXZSBpbXBsZW1lbnQgaXQgd2l0aCBhIGNvbWJpbmF0aW9uIG9mIGlubGluZQ0KKyAqIG1hY3JvcyBhbmQgb3V0LW9mLWxpbmUgc3Vicm91dGluZXMuICBOb3RlIHRoYXQgTiAodGhlIG51bWJlciBvZiBiaXRzDQorICogZGVtYW5kZWQgYXQgb25lIHRpbWUpIG5ldmVyIGV4Y2VlZHMgMTUgZm9yIEpQRUcgdXNlLg0KKyAqDQorICogV2UgcmVhZCBzb3VyY2UgYnl0ZXMgaW50byBnZXRfYnVmZmVyIGFuZCBkb2xlIG91dCBiaXRzIGFzIG5lZWRlZC4NCisgKiBJZiBnZXRfYnVmZmVyIGFscmVhZHkgY29udGFpbnMgZW5vdWdoIGJpdHMsIHRoZXkgYXJlIGZldGNoZWQgaW4tbGluZQ0KKyAqIGJ5IHRoZSBtYWNyb3MgQ0hFQ0tfQklUX0JVRkZFUiBhbmQgR0VUX0JJVFMuICBXaGVuIHRoZXJlIGFyZW4ndCBlbm91Z2gNCisgKiBiaXRzLCBqcGVnX2ZpbGxfYml0X2J1ZmZlciBpcyBjYWxsZWQ7IGl0IHdpbGwgYXR0ZW1wdCB0byBmaWxsIGdldF9idWZmZXINCisgKiBhcyBmdWxsIGFzIHBvc3NpYmxlIChub3QganVzdCB0byB0aGUgbnVtYmVyIG9mIGJpdHMgbmVlZGVkOyB0aGlzDQorICogcHJlZmV0Y2hpbmcgcmVkdWNlcyB0aGUgb3ZlcmhlYWQgY29zdCBvZiBjYWxsaW5nIGpwZWdfZmlsbF9iaXRfYnVmZmVyKS4NCisgKiBOb3RlIHRoYXQganBlZ19maWxsX2JpdF9idWZmZXIgbWF5IHJldHVybiBGQUxTRSB0byBpbmRpY2F0ZSBzdXNwZW5zaW9uLg0KKyAqIE9uIFRSVUUgcmV0dXJuLCBqcGVnX2ZpbGxfYml0X2J1ZmZlciBndWFyYW50ZWVzIHRoYXQgZ2V0X2J1ZmZlciBjb250YWlucw0KKyAqIGF0IGxlYXN0IHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGJpdHMgLS0tIGR1bW15IHplcm9lcyBhcmUgaW5zZXJ0ZWQgaWYNCisgKiBuZWNlc3NhcnkuDQorICovDQorDQordHlwZWRlZiBJTlQzMiBiaXRfYnVmX3R5cGU7CS8qIHR5cGUgb2YgYml0LWV4dHJhY3Rpb24gYnVmZmVyICovDQorI2RlZmluZSBCSVRfQlVGX1NJWkUgIDMyCS8qIHNpemUgb2YgYnVmZmVyIGluIGJpdHMgKi8NCisNCisvKiBJZiBsb25nIGlzID4gMzIgYml0cyBvbiB5b3VyIG1hY2hpbmUsIGFuZCBzaGlmdGluZy9tYXNraW5nIGxvbmdzIGlzDQorICogcmVhc29uYWJseSBmYXN0LCBtYWtpbmcgYml0X2J1Zl90eXBlIGJlIGxvbmcgYW5kIHNldHRpbmcgQklUX0JVRl9TSVpFDQorICogYXBwcm9wcmlhdGVseSBzaG91bGQgYmUgYSB3aW4uICBVbmZvcnR1bmF0ZWx5IHdlIGNhbid0IGRlZmluZSB0aGUgc2l6ZQ0KKyAqIHdpdGggc29tZXRoaW5nIGxpa2UgICNkZWZpbmUgQklUX0JVRl9TSVpFIChzaXplb2YoYml0X2J1Zl90eXBlKSo4KQ0KKyAqIGJlY2F1c2Ugbm90IGFsbCBtYWNoaW5lcyBtZWFzdXJlIHNpemVvZiBpbiA4LWJpdCBieXRlcy4NCisgKi8NCisNCit0eXBlZGVmIHN0cnVjdCB7CQkvKiBCaXRyZWFkaW5nIHN0YXRlIHNhdmVkIGFjcm9zcyBNQ1VzICovDQorICBiaXRfYnVmX3R5cGUgZ2V0X2J1ZmZlcjsJLyogY3VycmVudCBiaXQtZXh0cmFjdGlvbiBidWZmZXIgKi8NCisgIGludCBiaXRzX2xlZnQ7CQkvKiAjIG9mIHVudXNlZCBiaXRzIGluIGl0ICovDQorfSBiaXRyZWFkX3Blcm1fc3RhdGU7DQorDQordHlwZWRlZiBzdHJ1Y3QgewkJLyogQml0cmVhZGluZyB3b3JraW5nIHN0YXRlIHdpdGhpbiBhbiBNQ1UgKi8NCisgIC8qIEN1cnJlbnQgZGF0YSBzb3VyY2UgbG9jYXRpb24gKi8NCisgIC8qIFdlIG5lZWQgYSBjb3B5LCByYXRoZXIgdGhhbiBtdW5naW5nIHRoZSBvcmlnaW5hbCwgaW4gY2FzZSBvZiBzdXNwZW5zaW9uICovDQorICBjb25zdCBKT0NURVQgKiBuZXh0X2lucHV0X2J5dGU7IC8qID0+IG5leHQgYnl0ZSB0byByZWFkIGZyb20gc291cmNlICovDQorICBzaXplX3QgYnl0ZXNfaW5fYnVmZmVyOwkvKiAjIG9mIGJ5dGVzIHJlbWFpbmluZyBpbiBzb3VyY2UgYnVmZmVyICovDQorICAvKiBCaXQgaW5wdXQgYnVmZmVyIC0tLSBub3RlIHRoZXNlIHZhbHVlcyBhcmUga2VwdCBpbiByZWdpc3RlciB2YXJpYWJsZXMsDQorICAgKiBub3QgaW4gdGhpcyBzdHJ1Y3QsIGluc2lkZSB0aGUgaW5uZXIgbG9vcHMuDQorICAgKi8NCisgIGJpdF9idWZfdHlwZSBnZXRfYnVmZmVyOwkvKiBjdXJyZW50IGJpdC1leHRyYWN0aW9uIGJ1ZmZlciAqLw0KKyAgaW50IGJpdHNfbGVmdDsJCS8qICMgb2YgdW51c2VkIGJpdHMgaW4gaXQgKi8NCisgIC8qIFBvaW50ZXIgbmVlZGVkIGJ5IGpwZWdfZmlsbF9iaXRfYnVmZmVyLiAqLw0KKyAgal9kZWNvbXByZXNzX3B0ciBjaW5mbzsJLyogYmFjayBsaW5rIHRvIGRlY29tcHJlc3MgbWFzdGVyIHJlY29yZCAqLw0KK30gYml0cmVhZF93b3JraW5nX3N0YXRlOw0KKw0KKy8qIE1hY3JvcyB0byBkZWNsYXJlIGFuZCBsb2FkL3NhdmUgYml0cmVhZCBsb2NhbCB2YXJpYWJsZXMuICovDQorI2RlZmluZSBCSVRSRUFEX1NUQVRFX1ZBUlMgIFwNCisJcmVnaXN0ZXIgYml0X2J1Zl90eXBlIGdldF9idWZmZXI7ICBcDQorCXJlZ2lzdGVyIGludCBiaXRzX2xlZnQ7ICBcDQorCWJpdHJlYWRfd29ya2luZ19zdGF0ZSBicl9zdGF0ZQ0KKw0KKyNkZWZpbmUgQklUUkVBRF9MT0FEX1NUQVRFKGNpbmZvcCxwZXJtc3RhdGUpICBcDQorCWJyX3N0YXRlLmNpbmZvID0gY2luZm9wOyBcDQorCWJyX3N0YXRlLm5leHRfaW5wdXRfYnl0ZSA9IGNpbmZvcC0+c3JjLT5uZXh0X2lucHV0X2J5dGU7IFwNCisJYnJfc3RhdGUuYnl0ZXNfaW5fYnVmZmVyID0gY2luZm9wLT5zcmMtPmJ5dGVzX2luX2J1ZmZlcjsgXA0KKwlnZXRfYnVmZmVyID0gcGVybXN0YXRlLmdldF9idWZmZXI7IFwNCisJYml0c19sZWZ0ID0gcGVybXN0YXRlLmJpdHNfbGVmdDsNCisNCisjZGVmaW5lIEJJVFJFQURfU0FWRV9TVEFURShjaW5mb3AscGVybXN0YXRlKSAgXA0KKwljaW5mb3AtPnNyYy0+bmV4dF9pbnB1dF9ieXRlID0gYnJfc3RhdGUubmV4dF9pbnB1dF9ieXRlOyBcDQorCWNpbmZvcC0+c3JjLT5ieXRlc19pbl9idWZmZXIgPSBicl9zdGF0ZS5ieXRlc19pbl9idWZmZXI7IFwNCisJcGVybXN0YXRlLmdldF9idWZmZXIgPSBnZXRfYnVmZmVyOyBcDQorCXBlcm1zdGF0ZS5iaXRzX2xlZnQgPSBiaXRzX2xlZnQNCisNCisvKg0KKyAqIFRoZXNlIG1hY3JvcyBwcm92aWRlIHRoZSBpbi1saW5lIHBvcnRpb24gb2YgYml0IGZldGNoaW5nLg0KKyAqIFVzZSBDSEVDS19CSVRfQlVGRkVSIHRvIGVuc3VyZSB0aGVyZSBhcmUgTiBiaXRzIGluIGdldF9idWZmZXINCisgKiBiZWZvcmUgdXNpbmcgR0VUX0JJVFMsIFBFRUtfQklUUywgb3IgRFJPUF9CSVRTLg0KKyAqIFRoZSB2YXJpYWJsZXMgZ2V0X2J1ZmZlciBhbmQgYml0c19sZWZ0IGFyZSBhc3N1bWVkIHRvIGJlIGxvY2FscywNCisgKiBidXQgdGhlIHN0YXRlIHN0cnVjdCBtaWdodCBub3QgYmUgKGpwZWdfaHVmZl9kZWNvZGUgbmVlZHMgdGhpcykuDQorICoJQ0hFQ0tfQklUX0JVRkZFUihzdGF0ZSxuLGFjdGlvbik7DQorICoJCUVuc3VyZSB0aGVyZSBhcmUgTiBiaXRzIGluIGdldF9idWZmZXI7IGlmIHN1c3BlbmQsIHRha2UgYWN0aW9uLg0KKyAqICAgICAgdmFsID0gR0VUX0JJVFMobik7DQorICoJCUZldGNoIG5leHQgTiBiaXRzLg0KKyAqICAgICAgdmFsID0gUEVFS19CSVRTKG4pOw0KKyAqCQlGZXRjaCBuZXh0IE4gYml0cyB3aXRob3V0IHJlbW92aW5nIHRoZW0gZnJvbSB0aGUgYnVmZmVyLg0KKyAqCURST1BfQklUUyhuKTsNCisgKgkJRGlzY2FyZCBuZXh0IE4gYml0cy4NCisgKiBUaGUgdmFsdWUgTiBzaG91bGQgYmUgYSBzaW1wbGUgdmFyaWFibGUsIG5vdCBhbiBleHByZXNzaW9uLCBiZWNhdXNlIGl0DQorICogaXMgZXZhbHVhdGVkIG11bHRpcGxlIHRpbWVzLg0KKyAqLw0KKw0KKyNkZWZpbmUgQ0hFQ0tfQklUX0JVRkZFUihzdGF0ZSxuYml0cyxhY3Rpb24pIFwNCisJeyBpZiAoYml0c19sZWZ0IDwgKG5iaXRzKSkgeyAgXA0KKwkgICAgaWYgKCEganBlZ19maWxsX2JpdF9idWZmZXIoJihzdGF0ZSksZ2V0X2J1ZmZlcixiaXRzX2xlZnQsbmJpdHMpKSAgXA0KKwkgICAgICB7IGFjdGlvbjsgfSAgXA0KKwkgICAgZ2V0X2J1ZmZlciA9IChzdGF0ZSkuZ2V0X2J1ZmZlcjsgYml0c19sZWZ0ID0gKHN0YXRlKS5iaXRzX2xlZnQ7IH0gfQ0KKw0KKyNkZWZpbmUgR0VUX0JJVFMobmJpdHMpIFwNCisJKCgoaW50KSAoZ2V0X2J1ZmZlciA+PiAoYml0c19sZWZ0IC09IChuYml0cykpKSkgJiAoKDE8PChuYml0cykpLTEpKQ0KKw0KKyNkZWZpbmUgUEVFS19CSVRTKG5iaXRzKSBcDQorCSgoKGludCkgKGdldF9idWZmZXIgPj4gKGJpdHNfbGVmdCAtICAobmJpdHMpKSkpICYgKCgxPDwobmJpdHMpKS0xKSkNCisNCisjZGVmaW5lIERST1BfQklUUyhuYml0cykgXA0KKwkoYml0c19sZWZ0IC09IChuYml0cykpDQorDQorLyogTG9hZCB1cCB0aGUgYml0IGJ1ZmZlciB0byBhIGRlcHRoIG9mIGF0IGxlYXN0IG5iaXRzICovDQorRVhURVJOKGJvb2xlYW4pIGpwZWdfZmlsbF9iaXRfYnVmZmVyDQorCUpQUCgoYml0cmVhZF93b3JraW5nX3N0YXRlICogc3RhdGUsIHJlZ2lzdGVyIGJpdF9idWZfdHlwZSBnZXRfYnVmZmVyLA0KKwkgICAgIHJlZ2lzdGVyIGludCBiaXRzX2xlZnQsIGludCBuYml0cykpOw0KKw0KKw0KKy8qDQorICogQ29kZSBmb3IgZXh0cmFjdGluZyBuZXh0IEh1ZmZtYW4tY29kZWQgc3ltYm9sIGZyb20gaW5wdXQgYml0IHN0cmVhbS4NCisgKiBBZ2FpbiwgdGhpcyBpcyB0aW1lLWNyaXRpY2FsIGFuZCB3ZSBtYWtlIHRoZSBtYWluIHBhdGhzIGJlIG1hY3Jvcy4NCisgKg0KKyAqIFdlIHVzZSBhIGxvb2thaGVhZCB0YWJsZSB0byBwcm9jZXNzIGNvZGVzIG9mIHVwIHRvIEhVRkZfTE9PS0FIRUFEIGJpdHMNCisgKiB3aXRob3V0IGxvb3BpbmcuICBVc3VhbGx5LCBtb3JlIHRoYW4gOTUlIG9mIHRoZSBIdWZmbWFuIGNvZGVzIHdpbGwgYmUgOA0KKyAqIG9yIGZld2VyIGJpdHMgbG9uZy4gIFRoZSBmZXcgb3Zlcmxlbmd0aCBjb2RlcyBhcmUgaGFuZGxlZCB3aXRoIGEgbG9vcCwNCisgKiB3aGljaCBuZWVkIG5vdCBiZSBpbmxpbmUgY29kZS4NCisgKg0KKyAqIE5vdGVzIGFib3V0IHRoZSBIVUZGX0RFQ09ERSBtYWNybzoNCisgKiAxLiBOZWFyIHRoZSBlbmQgb2YgdGhlIGRhdGEgc2VnbWVudCwgd2UgbWF5IGZhaWwgdG8gZ2V0IGVub3VnaCBiaXRzDQorICogICAgZm9yIGEgbG9va2FoZWFkLiAgSW4gdGhhdCBjYXNlLCB3ZSBkbyBpdCB0aGUgaGFyZCB3YXkuDQorICogMi4gSWYgdGhlIGxvb2thaGVhZCB0YWJsZSBjb250YWlucyBubyBlbnRyeSwgdGhlIG5leHQgY29kZSBtdXN0IGJlDQorICogICAgbW9yZSB0aGFuIEhVRkZfTE9PS0FIRUFEIGJpdHMgbG9uZy4NCisgKiAzLiBqcGVnX2h1ZmZfZGVjb2RlIHJldHVybnMgLTEgaWYgZm9yY2VkIHRvIHN1c3BlbmQuDQorICovDQorDQorI2RlZmluZSBIVUZGX0RFQ09ERShyZXN1bHQsc3RhdGUsaHRibCxmYWlsYWN0aW9uLHNsb3dsYWJlbCkgXA0KK3sgcmVnaXN0ZXIgaW50IG5iLCBsb29rOyBcDQorICBpZiAoYml0c19sZWZ0IDwgSFVGRl9MT09LQUhFQUQpIHsgXA0KKyAgICBpZiAoISBqcGVnX2ZpbGxfYml0X2J1ZmZlcigmc3RhdGUsZ2V0X2J1ZmZlcixiaXRzX2xlZnQsIDApKSB7ZmFpbGFjdGlvbjt9IFwNCisgICAgZ2V0X2J1ZmZlciA9IHN0YXRlLmdldF9idWZmZXI7IGJpdHNfbGVmdCA9IHN0YXRlLmJpdHNfbGVmdDsgXA0KKyAgICBpZiAoYml0c19sZWZ0IDwgSFVGRl9MT09LQUhFQUQpIHsgXA0KKyAgICAgIG5iID0gMTsgZ290byBzbG93bGFiZWw7IFwNCisgICAgfSBcDQorICB9IFwNCisgIGxvb2sgPSBQRUVLX0JJVFMoSFVGRl9MT09LQUhFQUQpOyBcDQorICBpZiAoKG5iID0gaHRibC0+bG9va19uYml0c1tsb29rXSkgIT0gMCkgeyBcDQorICAgIERST1BfQklUUyhuYik7IFwNCisgICAgcmVzdWx0ID0gaHRibC0+bG9va19zeW1bbG9va107IFwNCisgIH0gZWxzZSB7IFwNCisgICAgbmIgPSBIVUZGX0xPT0tBSEVBRCsxOyBcDQorc2xvd2xhYmVsOiBcDQorICAgIGlmICgocmVzdWx0PWpwZWdfaHVmZl9kZWNvZGUoJnN0YXRlLGdldF9idWZmZXIsYml0c19sZWZ0LGh0YmwsbmIpKSA8IDApIFwNCisJeyBmYWlsYWN0aW9uOyB9IFwNCisgICAgZ2V0X2J1ZmZlciA9IHN0YXRlLmdldF9idWZmZXI7IGJpdHNfbGVmdCA9IHN0YXRlLmJpdHNfbGVmdDsgXA0KKyAgfSBcDQorfQ0KKw0KKy8qIE91dC1vZi1saW5lIGNhc2UgZm9yIEh1ZmZtYW4gY29kZSBmZXRjaGluZyAqLw0KK0VYVEVSTihpbnQpIGpwZWdfaHVmZl9kZWNvZGUNCisJSlBQKChiaXRyZWFkX3dvcmtpbmdfc3RhdGUgKiBzdGF0ZSwgcmVnaXN0ZXIgYml0X2J1Zl90eXBlIGdldF9idWZmZXIsDQorCSAgICAgcmVnaXN0ZXIgaW50IGJpdHNfbGVmdCwgZF9kZXJpdmVkX3RibCAqIGh0YmwsIGludCBtaW5fYml0cykpOw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qZXJyb3IuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qZXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmI4Zjk2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2plcnJvci5oCkBAIC0wLDAgKzEsMjkxIEBACisvKg0KKyAqIGplcnJvci5oDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgZXJyb3IgYW5kIG1lc3NhZ2UgY29kZXMgZm9yIHRoZSBKUEVHIGxpYnJhcnkuDQorICogRWRpdCB0aGlzIGZpbGUgdG8gYWRkIG5ldyBjb2Rlcywgb3IgdG8gdHJhbnNsYXRlIHRoZSBtZXNzYWdlIHN0cmluZ3MgdG8NCisgKiBzb21lIG90aGVyIGxhbmd1YWdlLg0KKyAqIEEgc2V0IG9mIGVycm9yLXJlcG9ydGluZyBtYWNyb3MgYXJlIGRlZmluZWQgdG9vLiAgU29tZSBhcHBsaWNhdGlvbnMgdXNpbmcNCisgKiB0aGUgSlBFRyBsaWJyYXJ5IG1heSB3aXNoIHRvIGluY2x1ZGUgdGhpcyBmaWxlIHRvIGdldCB0aGUgZXJyb3IgY29kZXMNCisgKiBhbmQvb3IgdGhlIG1hY3Jvcy4NCisgKi8NCisNCisvKg0KKyAqIFRvIGRlZmluZSB0aGUgZW51bSBsaXN0IG9mIG1lc3NhZ2UgY29kZXMsIGluY2x1ZGUgdGhpcyBmaWxlIHdpdGhvdXQNCisgKiBkZWZpbmluZyBtYWNybyBKTUVTU0FHRS4gIFRvIGNyZWF0ZSBhIG1lc3NhZ2Ugc3RyaW5nIHRhYmxlLCBpbmNsdWRlIGl0DQorICogYWdhaW4gd2l0aCBhIHN1aXRhYmxlIEpNRVNTQUdFIGRlZmluaXRpb24gKHNlZSBqZXJyb3IuYyBmb3IgYW4gZXhhbXBsZSkuDQorICovDQorI2lmbmRlZiBKTUVTU0FHRQ0KKyNpZm5kZWYgSkVSUk9SX0gNCisvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGRlZmluZSB0aGUgZW51bSBsaXN0ICovDQorI2RlZmluZSBKTUFLRV9FTlVNX0xJU1QNCisjZWxzZQ0KKy8qIFJlcGVhdGVkIGluY2x1c2lvbnMgb2YgdGhpcyBmaWxlIGFyZSBuby1vcHMgdW5sZXNzIEpNRVNTQUdFIGlzIGRlZmluZWQgKi8NCisjZGVmaW5lIEpNRVNTQUdFKGNvZGUsc3RyaW5nKQ0KKyNlbmRpZiAvKiBKRVJST1JfSCAqLw0KKyNlbmRpZiAvKiBKTUVTU0FHRSAqLw0KKw0KKyNpZmRlZiBKTUFLRV9FTlVNX0xJU1QNCisNCit0eXBlZGVmIGVudW0gew0KKw0KKyNkZWZpbmUgSk1FU1NBR0UoY29kZSxzdHJpbmcpCWNvZGUgLA0KKw0KKyNlbmRpZiAvKiBKTUFLRV9FTlVNX0xJU1QgKi8NCisNCitKTUVTU0FHRShKTVNHX05PTUVTU0FHRSwgIkJvZ3VzIG1lc3NhZ2UgY29kZSAlZCIpIC8qIE11c3QgYmUgZmlyc3QgZW50cnkhICovDQorDQorLyogRm9yIG1haW50ZW5hbmNlIGNvbnZlbmllbmNlLCBsaXN0IGlzIGFscGhhYmV0aWNhbCBieSBtZXNzYWdlIGNvZGUgbmFtZSAqLw0KK0pNRVNTQUdFKEpFUlJfQVJJVEhfTk9USU1QTCwNCisJICJTb3JyeSwgdGhlcmUgYXJlIGxlZ2FsIHJlc3RyaWN0aW9ucyBvbiBhcml0aG1ldGljIGNvZGluZyIpDQorSk1FU1NBR0UoSkVSUl9CQURfQUxJR05fVFlQRSwgIkFMSUdOX1RZUEUgaXMgd3JvbmcsIHBsZWFzZSBmaXgiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX0FMTE9DX0NIVU5LLCAiTUFYX0FMTE9DX0NIVU5LIGlzIHdyb25nLCBwbGVhc2UgZml4IikNCitKTUVTU0FHRShKRVJSX0JBRF9CVUZGRVJfTU9ERSwgIkJvZ3VzIGJ1ZmZlciBjb250cm9sIG1vZGUiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX0NPTVBPTkVOVF9JRCwgIkludmFsaWQgY29tcG9uZW50IElEICVkIGluIFNPUyIpDQorSk1FU1NBR0UoSkVSUl9CQURfRENUX0NPRUYsICJEQ1QgY29lZmZpY2llbnQgb3V0IG9mIHJhbmdlIikNCitKTUVTU0FHRShKRVJSX0JBRF9EQ1RTSVpFLCAiSURDVCBvdXRwdXQgYmxvY2sgc2l6ZSAlZCBub3Qgc3VwcG9ydGVkIikNCitKTUVTU0FHRShKRVJSX0JBRF9IVUZGX1RBQkxFLCAiQm9ndXMgSHVmZm1hbiB0YWJsZSBkZWZpbml0aW9uIikNCitKTUVTU0FHRShKRVJSX0JBRF9JTl9DT0xPUlNQQUNFLCAiQm9ndXMgaW5wdXQgY29sb3JzcGFjZSIpDQorSk1FU1NBR0UoSkVSUl9CQURfSl9DT0xPUlNQQUNFLCAiQm9ndXMgSlBFRyBjb2xvcnNwYWNlIikNCitKTUVTU0FHRShKRVJSX0JBRF9MRU5HVEgsICJCb2d1cyBtYXJrZXIgbGVuZ3RoIikNCitKTUVTU0FHRShKRVJSX0JBRF9MSUJfVkVSU0lPTiwNCisJICJXcm9uZyBKUEVHIGxpYnJhcnkgdmVyc2lvbjogbGlicmFyeSBpcyAlZCwgY2FsbGVyIGV4cGVjdHMgJWQiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX01DVV9TSVpFLCAiU2FtcGxpbmcgZmFjdG9ycyB0b28gbGFyZ2UgZm9yIGludGVybGVhdmVkIHNjYW4iKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX1BPT0xfSUQsICJJbnZhbGlkIG1lbW9yeSBwb29sIGNvZGUgJWQiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX1BSRUNJU0lPTiwgIlVuc3VwcG9ydGVkIEpQRUcgZGF0YSBwcmVjaXNpb24gJWQiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX1BST0dSRVNTSU9OLA0KKwkgIkludmFsaWQgcHJvZ3Jlc3NpdmUgcGFyYW1ldGVycyBTcz0lZCBTZT0lZCBBaD0lZCBBbD0lZCIpDQorSk1FU1NBR0UoSkVSUl9CQURfUFJPR19TQ1JJUFQsDQorCSAiSW52YWxpZCBwcm9ncmVzc2l2ZSBwYXJhbWV0ZXJzIGF0IHNjYW4gc2NyaXB0IGVudHJ5ICVkIikNCitKTUVTU0FHRShKRVJSX0JBRF9TQU1QTElORywgIkJvZ3VzIHNhbXBsaW5nIGZhY3RvcnMiKQ0KK0pNRVNTQUdFKEpFUlJfQkFEX1NDQU5fU0NSSVBULCAiSW52YWxpZCBzY2FuIHNjcmlwdCBhdCBlbnRyeSAlZCIpDQorSk1FU1NBR0UoSkVSUl9CQURfU1RBVEUsICJJbXByb3BlciBjYWxsIHRvIEpQRUcgbGlicmFyeSBpbiBzdGF0ZSAlZCIpDQorSk1FU1NBR0UoSkVSUl9CQURfU1RSVUNUX1NJWkUsDQorCSAiSlBFRyBwYXJhbWV0ZXIgc3RydWN0IG1pc21hdGNoOiBsaWJyYXJ5IHRoaW5rcyBzaXplIGlzICV1LCBjYWxsZXIgZXhwZWN0cyAldSIpDQorSk1FU1NBR0UoSkVSUl9CQURfVklSVFVBTF9BQ0NFU1MsICJCb2d1cyB2aXJ0dWFsIGFycmF5IGFjY2VzcyIpDQorSk1FU1NBR0UoSkVSUl9CVUZGRVJfU0laRSwgIkJ1ZmZlciBwYXNzZWQgdG8gSlBFRyBsaWJyYXJ5IGlzIHRvbyBzbWFsbCIpDQorSk1FU1NBR0UoSkVSUl9DQU5UX1NVU1BFTkQsICJTdXNwZW5zaW9uIG5vdCBhbGxvd2VkIGhlcmUiKQ0KK0pNRVNTQUdFKEpFUlJfQ0NJUjYwMV9OT1RJTVBMLCAiQ0NJUjYwMSBzYW1wbGluZyBub3QgaW1wbGVtZW50ZWQgeWV0IikNCitKTUVTU0FHRShKRVJSX0NPTVBPTkVOVF9DT1VOVCwgIlRvbyBtYW55IGNvbG9yIGNvbXBvbmVudHM6ICVkLCBtYXggJWQiKQ0KK0pNRVNTQUdFKEpFUlJfQ09OVkVSU0lPTl9OT1RJTVBMLCAiVW5zdXBwb3J0ZWQgY29sb3IgY29udmVyc2lvbiByZXF1ZXN0IikNCitKTUVTU0FHRShKRVJSX0RBQ19JTkRFWCwgIkJvZ3VzIERBQyBpbmRleCAlZCIpDQorSk1FU1NBR0UoSkVSUl9EQUNfVkFMVUUsICJCb2d1cyBEQUMgdmFsdWUgMHgleCIpDQorSk1FU1NBR0UoSkVSUl9ESFRfSU5ERVgsICJCb2d1cyBESFQgaW5kZXggJWQiKQ0KK0pNRVNTQUdFKEpFUlJfRFFUX0lOREVYLCAiQm9ndXMgRFFUIGluZGV4ICVkIikNCitKTUVTU0FHRShKRVJSX0VNUFRZX0lNQUdFLCAiRW1wdHkgSlBFRyBpbWFnZSAoRE5MIG5vdCBzdXBwb3J0ZWQpIikNCitKTUVTU0FHRShKRVJSX0VNU19SRUFELCAiUmVhZCBmcm9tIEVNUyBmYWlsZWQiKQ0KK0pNRVNTQUdFKEpFUlJfRU1TX1dSSVRFLCAiV3JpdGUgdG8gRU1TIGZhaWxlZCIpDQorSk1FU1NBR0UoSkVSUl9FT0lfRVhQRUNURUQsICJEaWRuJ3QgZXhwZWN0IG1vcmUgdGhhbiBvbmUgc2NhbiIpDQorSk1FU1NBR0UoSkVSUl9GSUxFX1JFQUQsICJJbnB1dCBmaWxlIHJlYWQgZXJyb3IiKQ0KK0pNRVNTQUdFKEpFUlJfRklMRV9XUklURSwgIk91dHB1dCBmaWxlIHdyaXRlIGVycm9yIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8iKQ0KK0pNRVNTQUdFKEpFUlJfRlJBQ1RfU0FNUExFX05PVElNUEwsICJGcmFjdGlvbmFsIHNhbXBsaW5nIG5vdCBpbXBsZW1lbnRlZCB5ZXQiKQ0KK0pNRVNTQUdFKEpFUlJfSFVGRl9DTEVOX09WRVJGTE9XLCAiSHVmZm1hbiBjb2RlIHNpemUgdGFibGUgb3ZlcmZsb3ciKQ0KK0pNRVNTQUdFKEpFUlJfSFVGRl9NSVNTSU5HX0NPREUsICJNaXNzaW5nIEh1ZmZtYW4gY29kZSB0YWJsZSBlbnRyeSIpDQorSk1FU1NBR0UoSkVSUl9JTUFHRV9UT09fQklHLCAiTWF4aW11bSBzdXBwb3J0ZWQgaW1hZ2UgZGltZW5zaW9uIGlzICV1IHBpeGVscyIpDQorSk1FU1NBR0UoSkVSUl9JTlBVVF9FTVBUWSwgIkVtcHR5IGlucHV0IGZpbGUiKQ0KK0pNRVNTQUdFKEpFUlJfSU5QVVRfRU9GLCAiUHJlbWF0dXJlIGVuZCBvZiBpbnB1dCBmaWxlIikNCitKTUVTU0FHRShKRVJSX01JU01BVENIRURfUVVBTlRfVEFCTEUsDQorCSAiQ2Fubm90IHRyYW5zY29kZSBkdWUgdG8gbXVsdGlwbGUgdXNlIG9mIHF1YW50aXphdGlvbiB0YWJsZSAlZCIpDQorSk1FU1NBR0UoSkVSUl9NSVNTSU5HX0RBVEEsICJTY2FuIHNjcmlwdCBkb2VzIG5vdCB0cmFuc21pdCBhbGwgZGF0YSIpDQorSk1FU1NBR0UoSkVSUl9NT0RFX0NIQU5HRSwgIkludmFsaWQgY29sb3IgcXVhbnRpemF0aW9uIG1vZGUgY2hhbmdlIikNCitKTUVTU0FHRShKRVJSX05PVElNUEwsICJOb3QgaW1wbGVtZW50ZWQgeWV0IikNCitKTUVTU0FHRShKRVJSX05PVF9DT01QSUxFRCwgIlJlcXVlc3RlZCBmZWF0dXJlIHdhcyBvbWl0dGVkIGF0IGNvbXBpbGUgdGltZSIpDQorSk1FU1NBR0UoSkVSUl9OT19CQUNLSU5HX1NUT1JFLCAiQmFja2luZyBzdG9yZSBub3Qgc3VwcG9ydGVkIikNCitKTUVTU0FHRShKRVJSX05PX0hVRkZfVEFCTEUsICJIdWZmbWFuIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQiKQ0KK0pNRVNTQUdFKEpFUlJfTk9fSU1BR0UsICJKUEVHIGRhdGFzdHJlYW0gY29udGFpbnMgbm8gaW1hZ2UiKQ0KK0pNRVNTQUdFKEpFUlJfTk9fUVVBTlRfVEFCTEUsICJRdWFudGl6YXRpb24gdGFibGUgMHglMDJ4IHdhcyBub3QgZGVmaW5lZCIpDQorSk1FU1NBR0UoSkVSUl9OT19TT0ksICJOb3QgYSBKUEVHIGZpbGU6IHN0YXJ0cyB3aXRoIDB4JTAyeCAweCUwMngiKQ0KK0pNRVNTQUdFKEpFUlJfT1VUX09GX01FTU9SWSwgIkluc3VmZmljaWVudCBtZW1vcnkgKGNhc2UgJWQpIikNCitKTUVTU0FHRShKRVJSX1FVQU5UX0NPTVBPTkVOVFMsDQorCSAiQ2Fubm90IHF1YW50aXplIG1vcmUgdGhhbiAlZCBjb2xvciBjb21wb25lbnRzIikNCitKTUVTU0FHRShKRVJSX1FVQU5UX0ZFV19DT0xPUlMsICJDYW5ub3QgcXVhbnRpemUgdG8gZmV3ZXIgdGhhbiAlZCBjb2xvcnMiKQ0KK0pNRVNTQUdFKEpFUlJfUVVBTlRfTUFOWV9DT0xPUlMsICJDYW5ub3QgcXVhbnRpemUgdG8gbW9yZSB0aGFuICVkIGNvbG9ycyIpDQorSk1FU1NBR0UoSkVSUl9TT0ZfRFVQTElDQVRFLCAiSW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiB0d28gU09GIG1hcmtlcnMiKQ0KK0pNRVNTQUdFKEpFUlJfU09GX05PX1NPUywgIkludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogbWlzc2luZyBTT1MgbWFya2VyIikNCitKTUVTU0FHRShKRVJSX1NPRl9VTlNVUFBPUlRFRCwgIlVuc3VwcG9ydGVkIEpQRUcgcHJvY2VzczogU09GIHR5cGUgMHglMDJ4IikNCitKTUVTU0FHRShKRVJSX1NPSV9EVVBMSUNBVEUsICJJbnZhbGlkIEpQRUcgZmlsZSBzdHJ1Y3R1cmU6IHR3byBTT0kgbWFya2VycyIpDQorSk1FU1NBR0UoSkVSUl9TT1NfTk9fU09GLCAiSW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiBTT1MgYmVmb3JlIFNPRiIpDQorSk1FU1NBR0UoSkVSUl9URklMRV9DUkVBVEUsICJGYWlsZWQgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlICVzIikNCitKTUVTU0FHRShKRVJSX1RGSUxFX1JFQUQsICJSZWFkIGZhaWxlZCBvbiB0ZW1wb3JhcnkgZmlsZSIpDQorSk1FU1NBR0UoSkVSUl9URklMRV9TRUVLLCAiU2VlayBmYWlsZWQgb24gdGVtcG9yYXJ5IGZpbGUiKQ0KK0pNRVNTQUdFKEpFUlJfVEZJTEVfV1JJVEUsDQorCSAiV3JpdGUgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8iKQ0KK0pNRVNTQUdFKEpFUlJfVE9PX0xJVFRMRV9EQVRBLCAiQXBwbGljYXRpb24gdHJhbnNmZXJyZWQgdG9vIGZldyBzY2FubGluZXMiKQ0KK0pNRVNTQUdFKEpFUlJfVU5LTk9XTl9NQVJLRVIsICJVbnN1cHBvcnRlZCBtYXJrZXIgdHlwZSAweCUwMngiKQ0KK0pNRVNTQUdFKEpFUlJfVklSVFVBTF9CVUcsICJWaXJ0dWFsIGFycmF5IGNvbnRyb2xsZXIgbWVzc2VkIHVwIikNCitKTUVTU0FHRShKRVJSX1dJRFRIX09WRVJGTE9XLCAiSW1hZ2UgdG9vIHdpZGUgZm9yIHRoaXMgaW1wbGVtZW50YXRpb24iKQ0KK0pNRVNTQUdFKEpFUlJfWE1TX1JFQUQsICJSZWFkIGZyb20gWE1TIGZhaWxlZCIpDQorSk1FU1NBR0UoSkVSUl9YTVNfV1JJVEUsICJXcml0ZSB0byBYTVMgZmFpbGVkIikNCitKTUVTU0FHRShKTVNHX0NPUFlSSUdIVCwgSkNPUFlSSUdIVCkNCitKTUVTU0FHRShKTVNHX1ZFUlNJT04sIEpWRVJTSU9OKQ0KK0pNRVNTQUdFKEpUUkNfMTZCSVRfVEFCTEVTLA0KKwkgIkNhdXRpb246IHF1YW50aXphdGlvbiB0YWJsZXMgYXJlIHRvbyBjb2Fyc2UgZm9yIGJhc2VsaW5lIEpQRUciKQ0KK0pNRVNTQUdFKEpUUkNfQURPQkUsDQorCSAiQWRvYmUgQVBQMTQgbWFya2VyOiB2ZXJzaW9uICVkLCBmbGFncyAweCUwNHggMHglMDR4LCB0cmFuc2Zvcm0gJWQiKQ0KK0pNRVNTQUdFKEpUUkNfQVBQMCwgIlVua25vd24gQVBQMCBtYXJrZXIgKG5vdCBKRklGKSwgbGVuZ3RoICV1IikNCitKTUVTU0FHRShKVFJDX0FQUDE0LCAiVW5rbm93biBBUFAxNCBtYXJrZXIgKG5vdCBBZG9iZSksIGxlbmd0aCAldSIpDQorSk1FU1NBR0UoSlRSQ19EQUMsICJEZWZpbmUgQXJpdGhtZXRpYyBUYWJsZSAweCUwMng6IDB4JTAyeCIpDQorSk1FU1NBR0UoSlRSQ19ESFQsICJEZWZpbmUgSHVmZm1hbiBUYWJsZSAweCUwMngiKQ0KK0pNRVNTQUdFKEpUUkNfRFFULCAiRGVmaW5lIFF1YW50aXphdGlvbiBUYWJsZSAlZCAgcHJlY2lzaW9uICVkIikNCitKTUVTU0FHRShKVFJDX0RSSSwgIkRlZmluZSBSZXN0YXJ0IEludGVydmFsICV1IikNCitKTUVTU0FHRShKVFJDX0VNU19DTE9TRSwgIkZyZWVkIEVNUyBoYW5kbGUgJXUiKQ0KK0pNRVNTQUdFKEpUUkNfRU1TX09QRU4sICJPYnRhaW5lZCBFTVMgaGFuZGxlICV1IikNCitKTUVTU0FHRShKVFJDX0VPSSwgIkVuZCBPZiBJbWFnZSIpDQorSk1FU1NBR0UoSlRSQ19IVUZGQklUUywgIiAgICAgICAgJTNkICUzZCAlM2QgJTNkICUzZCAlM2QgJTNkICUzZCIpDQorSk1FU1NBR0UoSlRSQ19KRklGLCAiSkZJRiBBUFAwIG1hcmtlcjogdmVyc2lvbiAlZC4lMDJkLCBkZW5zaXR5ICVkeCVkICAlZCIpDQorSk1FU1NBR0UoSlRSQ19KRklGX0JBRFRIVU1CTkFJTFNJWkUsDQorCSAiV2FybmluZzogdGh1bWJuYWlsIGltYWdlIHNpemUgZG9lcyBub3QgbWF0Y2ggZGF0YSBsZW5ndGggJXUiKQ0KK0pNRVNTQUdFKEpUUkNfSkZJRl9FWFRFTlNJT04sDQorCSAiSkZJRiBleHRlbnNpb24gbWFya2VyOiB0eXBlIDB4JTAyeCwgbGVuZ3RoICV1IikNCitKTUVTU0FHRShKVFJDX0pGSUZfVEhVTUJOQUlMLCAiICAgIHdpdGggJWQgeCAlZCB0aHVtYm5haWwgaW1hZ2UiKQ0KK0pNRVNTQUdFKEpUUkNfTUlTQ19NQVJLRVIsICJNaXNjZWxsYW5lb3VzIG1hcmtlciAweCUwMngsIGxlbmd0aCAldSIpDQorSk1FU1NBR0UoSlRSQ19QQVJNTEVTU19NQVJLRVIsICJVbmV4cGVjdGVkIG1hcmtlciAweCUwMngiKQ0KK0pNRVNTQUdFKEpUUkNfUVVBTlRWQUxTLCAiICAgICAgICAlNHUgJTR1ICU0dSAlNHUgJTR1ICU0dSAlNHUgJTR1IikNCitKTUVTU0FHRShKVFJDX1FVQU5UXzNfTkNPTE9SUywgIlF1YW50aXppbmcgdG8gJWQgPSAlZColZColZCBjb2xvcnMiKQ0KK0pNRVNTQUdFKEpUUkNfUVVBTlRfTkNPTE9SUywgIlF1YW50aXppbmcgdG8gJWQgY29sb3JzIikNCitKTUVTU0FHRShKVFJDX1FVQU5UX1NFTEVDVEVELCAiU2VsZWN0ZWQgJWQgY29sb3JzIGZvciBxdWFudGl6YXRpb24iKQ0KK0pNRVNTQUdFKEpUUkNfUkVDT1ZFUllfQUNUSU9OLCAiQXQgbWFya2VyIDB4JTAyeCwgcmVjb3ZlcnkgYWN0aW9uICVkIikNCitKTUVTU0FHRShKVFJDX1JTVCwgIlJTVCVkIikNCitKTUVTU0FHRShKVFJDX1NNT09USF9OT1RJTVBMLA0KKwkgIlNtb290aGluZyBub3Qgc3VwcG9ydGVkIHdpdGggbm9uc3RhbmRhcmQgc2FtcGxpbmcgcmF0aW9zIikNCitKTUVTU0FHRShKVFJDX1NPRiwgIlN0YXJ0IE9mIEZyYW1lIDB4JTAyeDogd2lkdGg9JXUsIGhlaWdodD0ldSwgY29tcG9uZW50cz0lZCIpDQorSk1FU1NBR0UoSlRSQ19TT0ZfQ09NUE9ORU5ULCAiICAgIENvbXBvbmVudCAlZDogJWRoeCVkdiBxPSVkIikNCitKTUVTU0FHRShKVFJDX1NPSSwgIlN0YXJ0IG9mIEltYWdlIikNCitKTUVTU0FHRShKVFJDX1NPUywgIlN0YXJ0IE9mIFNjYW46ICVkIGNvbXBvbmVudHMiKQ0KK0pNRVNTQUdFKEpUUkNfU09TX0NPTVBPTkVOVCwgIiAgICBDb21wb25lbnQgJWQ6IGRjPSVkIGFjPSVkIikNCitKTUVTU0FHRShKVFJDX1NPU19QQVJBTVMsICIgIFNzPSVkLCBTZT0lZCwgQWg9JWQsIEFsPSVkIikNCitKTUVTU0FHRShKVFJDX1RGSUxFX0NMT1NFLCAiQ2xvc2VkIHRlbXBvcmFyeSBmaWxlICVzIikNCitKTUVTU0FHRShKVFJDX1RGSUxFX09QRU4sICJPcGVuZWQgdGVtcG9yYXJ5IGZpbGUgJXMiKQ0KK0pNRVNTQUdFKEpUUkNfVEhVTUJfSlBFRywNCisJICJKRklGIGV4dGVuc2lvbiBtYXJrZXI6IEpQRUctY29tcHJlc3NlZCB0aHVtYm5haWwgaW1hZ2UsIGxlbmd0aCAldSIpDQorSk1FU1NBR0UoSlRSQ19USFVNQl9QQUxFVFRFLA0KKwkgIkpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogcGFsZXR0ZSB0aHVtYm5haWwgaW1hZ2UsIGxlbmd0aCAldSIpDQorSk1FU1NBR0UoSlRSQ19USFVNQl9SR0IsDQorCSAiSkZJRiBleHRlbnNpb24gbWFya2VyOiBSR0IgdGh1bWJuYWlsIGltYWdlLCBsZW5ndGggJXUiKQ0KK0pNRVNTQUdFKEpUUkNfVU5LTk9XTl9JRFMsDQorCSAiVW5yZWNvZ25pemVkIGNvbXBvbmVudCBJRHMgJWQgJWQgJWQsIGFzc3VtaW5nIFlDYkNyIikNCitKTUVTU0FHRShKVFJDX1hNU19DTE9TRSwgIkZyZWVkIFhNUyBoYW5kbGUgJXUiKQ0KK0pNRVNTQUdFKEpUUkNfWE1TX09QRU4sICJPYnRhaW5lZCBYTVMgaGFuZGxlICV1IikNCitKTUVTU0FHRShKV1JOX0FET0JFX1hGT1JNLCAiVW5rbm93biBBZG9iZSBjb2xvciB0cmFuc2Zvcm0gY29kZSAlZCIpDQorSk1FU1NBR0UoSldSTl9CT0dVU19QUk9HUkVTU0lPTiwNCisJICJJbmNvbnNpc3RlbnQgcHJvZ3Jlc3Npb24gc2VxdWVuY2UgZm9yIGNvbXBvbmVudCAlZCBjb2VmZmljaWVudCAlZCIpDQorSk1FU1NBR0UoSldSTl9FWFRSQU5FT1VTX0RBVEEsDQorCSAiQ29ycnVwdCBKUEVHIGRhdGE6ICV1IGV4dHJhbmVvdXMgYnl0ZXMgYmVmb3JlIG1hcmtlciAweCUwMngiKQ0KK0pNRVNTQUdFKEpXUk5fSElUX01BUktFUiwgIkNvcnJ1cHQgSlBFRyBkYXRhOiBwcmVtYXR1cmUgZW5kIG9mIGRhdGEgc2VnbWVudCIpDQorSk1FU1NBR0UoSldSTl9IVUZGX0JBRF9DT0RFLCAiQ29ycnVwdCBKUEVHIGRhdGE6IGJhZCBIdWZmbWFuIGNvZGUiKQ0KK0pNRVNTQUdFKEpXUk5fSkZJRl9NQUpPUiwgIldhcm5pbmc6IHVua25vd24gSkZJRiByZXZpc2lvbiBudW1iZXIgJWQuJTAyZCIpDQorSk1FU1NBR0UoSldSTl9KUEVHX0VPRiwgIlByZW1hdHVyZSBlbmQgb2YgSlBFRyBmaWxlIikNCitKTUVTU0FHRShKV1JOX01VU1RfUkVTWU5DLA0KKwkgIkNvcnJ1cHQgSlBFRyBkYXRhOiBmb3VuZCBtYXJrZXIgMHglMDJ4IGluc3RlYWQgb2YgUlNUJWQiKQ0KK0pNRVNTQUdFKEpXUk5fTk9UX1NFUVVFTlRJQUwsICJJbnZhbGlkIFNPUyBwYXJhbWV0ZXJzIGZvciBzZXF1ZW50aWFsIEpQRUciKQ0KK0pNRVNTQUdFKEpXUk5fVE9PX01VQ0hfREFUQSwgIkFwcGxpY2F0aW9uIHRyYW5zZmVycmVkIHRvbyBtYW55IHNjYW5saW5lcyIpDQorDQorI2lmZGVmIEpNQUtFX0VOVU1fTElTVA0KKw0KKyAgSk1TR19MQVNUTVNHQ09ERQ0KK30gSl9NRVNTQUdFX0NPREU7DQorDQorI3VuZGVmIEpNQUtFX0VOVU1fTElTVA0KKyNlbmRpZiAvKiBKTUFLRV9FTlVNX0xJU1QgKi8NCisNCisvKiBaYXAgSk1FU1NBR0UgbWFjcm8gc28gdGhhdCBmdXR1cmUgcmUtaW5jbHVzaW9ucyBkbyBub3RoaW5nIGJ5IGRlZmF1bHQgKi8NCisjdW5kZWYgSk1FU1NBR0UNCisNCisNCisjaWZuZGVmIEpFUlJPUl9IDQorI2RlZmluZSBKRVJST1JfSA0KKw0KKy8qIE1hY3JvcyB0byBzaW1wbGlmeSB1c2luZyB0aGUgZXJyb3IgYW5kIHRyYWNlIG1lc3NhZ2Ugc3R1ZmYgKi8NCisvKiBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIGVpdGhlciB0eXBlIG9mIGNpbmZvIHBvaW50ZXIgKi8NCisNCisvKiBGYXRhbCBlcnJvcnMgKHByaW50IG1lc3NhZ2UgYW5kIGV4aXQpICovDQorI2RlZmluZSBFUlJFWElUKGNpbmZvLGNvZGUpICBcDQorICAoKGNpbmZvKS0+ZXJyLT5tc2dfY29kZSA9IChjb2RlKSwgXA0KKyAgICgqKGNpbmZvKS0+ZXJyLT5lcnJvcl9leGl0KSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSkpDQorI2RlZmluZSBFUlJFWElUMShjaW5mbyxjb2RlLHAxKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMF0gPSAocDEpLCBcDQorICAgKCooY2luZm8pLT5lcnItPmVycm9yX2V4aXQpICgoal9jb21tb25fcHRyKSAoY2luZm8pKSkNCisjZGVmaW5lIEVSUkVYSVQyKGNpbmZvLGNvZGUscDEscDIpICBcDQorICAoKGNpbmZvKS0+ZXJyLT5tc2dfY29kZSA9IChjb2RlKSwgXA0KKyAgIChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaVswXSA9IChwMSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMV0gPSAocDIpLCBcDQorICAgKCooY2luZm8pLT5lcnItPmVycm9yX2V4aXQpICgoal9jb21tb25fcHRyKSAoY2luZm8pKSkNCisjZGVmaW5lIEVSUkVYSVQzKGNpbmZvLGNvZGUscDEscDIscDMpICBcDQorICAoKGNpbmZvKS0+ZXJyLT5tc2dfY29kZSA9IChjb2RlKSwgXA0KKyAgIChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaVswXSA9IChwMSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMV0gPSAocDIpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzJdID0gKHAzKSwgXA0KKyAgICgqKGNpbmZvKS0+ZXJyLT5lcnJvcl9leGl0KSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSkpDQorI2RlZmluZSBFUlJFWElUNChjaW5mbyxjb2RlLHAxLHAyLHAzLHA0KSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMF0gPSAocDEpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzFdID0gKHAyKSwgXA0KKyAgIChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaVsyXSA9IChwMyksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbM10gPSAocDQpLCBcDQorICAgKCooY2luZm8pLT5lcnItPmVycm9yX2V4aXQpICgoal9jb21tb25fcHRyKSAoY2luZm8pKSkNCisjZGVmaW5lIEVSUkVYSVRTKGNpbmZvLGNvZGUsc3RyKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICBGWFNZU19zdHJuY3B5KChjaW5mbyktPmVyci0+bXNnX3Bhcm0ucywgKHN0ciksIEpNU0dfU1RSX1BBUk1fTUFYKSwgXA0KKyAgICgqKGNpbmZvKS0+ZXJyLT5lcnJvcl9leGl0KSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSkpDQorDQorI2RlZmluZSBNQUtFU1RNVChzdHVmZikJCWRvIHsgc3R1ZmYgfSB3aGlsZSAoMCkNCisNCisvKiBOb25mYXRhbCBlcnJvcnMgKHdlIGNhbiBrZWVwIGdvaW5nLCBidXQgdGhlIGRhdGEgaXMgcHJvYmFibHkgY29ycnVwdCkgKi8NCisjZGVmaW5lIFdBUk5NUyhjaW5mbyxjb2RlKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoKihjaW5mbyktPmVyci0+ZW1pdF9tZXNzYWdlKSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSwgLTEpKQ0KKyNkZWZpbmUgV0FSTk1TMShjaW5mbyxjb2RlLHAxKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMF0gPSAocDEpLCBcDQorICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIC0xKSkNCisjZGVmaW5lIFdBUk5NUzIoY2luZm8sY29kZSxwMSxwMikgIFwNCisgICgoY2luZm8pLT5lcnItPm1zZ19jb2RlID0gKGNvZGUpLCBcDQorICAgKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pWzBdID0gKHAxKSwgXA0KKyAgIChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaVsxXSA9IChwMiksIFwNCisgICAoKihjaW5mbyktPmVyci0+ZW1pdF9tZXNzYWdlKSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSwgLTEpKQ0KKw0KKy8qIEluZm9ybWF0aW9uYWwvZGVidWdnaW5nIG1lc3NhZ2VzICovDQorI2RlZmluZSBUUkFDRU1TKGNpbmZvLGx2bCxjb2RlKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICAoKihjaW5mbyktPmVyci0+ZW1pdF9tZXNzYWdlKSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSwgKGx2bCkpKQ0KKyNkZWZpbmUgVFJBQ0VNUzEoY2luZm8sbHZsLGNvZGUscDEpICBcDQorICAoKGNpbmZvKS0+ZXJyLT5tc2dfY29kZSA9IChjb2RlKSwgXA0KKyAgIChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaVswXSA9IChwMSksIFwNCisgICAoKihjaW5mbyktPmVyci0+ZW1pdF9tZXNzYWdlKSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSwgKGx2bCkpKQ0KKyNkZWZpbmUgVFJBQ0VNUzIoY2luZm8sbHZsLGNvZGUscDEscDIpICBcDQorICAoKGNpbmZvKS0+ZXJyLT5tc2dfY29kZSA9IChjb2RlKSwgXA0KKyAgIChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaVswXSA9IChwMSksIFwNCisgICAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmlbMV0gPSAocDIpLCBcDQorICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIChsdmwpKSkNCisjZGVmaW5lIFRSQUNFTVMzKGNpbmZvLGx2bCxjb2RlLHAxLHAyLHAzKSAgXA0KKyAgTUFLRVNUTVQoaW50ICogX21wID0gKGNpbmZvKS0+ZXJyLT5tc2dfcGFybS5pOyBcDQorCSAgIF9tcFswXSA9IChwMSk7IF9tcFsxXSA9IChwMik7IF9tcFsyXSA9IChwMyk7IFwNCisJICAgKGNpbmZvKS0+ZXJyLT5tc2dfY29kZSA9IChjb2RlKTsgXA0KKwkgICAoKihjaW5mbyktPmVyci0+ZW1pdF9tZXNzYWdlKSAoKGpfY29tbW9uX3B0cikgKGNpbmZvKSwgKGx2bCkpOyApDQorI2RlZmluZSBUUkFDRU1TNChjaW5mbyxsdmwsY29kZSxwMSxwMixwMyxwNCkgIFwNCisgIE1BS0VTVE1UKGludCAqIF9tcCA9IChjaW5mbyktPmVyci0+bXNnX3Bhcm0uaTsgXA0KKwkgICBfbXBbMF0gPSAocDEpOyBfbXBbMV0gPSAocDIpOyBfbXBbMl0gPSAocDMpOyBfbXBbM10gPSAocDQpOyBcDQorCSAgIChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSk7IFwNCisJICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIChsdmwpKTsgKQ0KKyNkZWZpbmUgVFJBQ0VNUzUoY2luZm8sbHZsLGNvZGUscDEscDIscDMscDQscDUpICBcDQorICBNQUtFU1RNVChpbnQgKiBfbXAgPSAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmk7IFwNCisJICAgX21wWzBdID0gKHAxKTsgX21wWzFdID0gKHAyKTsgX21wWzJdID0gKHAzKTsgX21wWzNdID0gKHA0KTsgXA0KKwkgICBfbXBbNF0gPSAocDUpOyBcDQorCSAgIChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSk7IFwNCisJICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIChsdmwpKTsgKQ0KKyNkZWZpbmUgVFJBQ0VNUzgoY2luZm8sbHZsLGNvZGUscDEscDIscDMscDQscDUscDYscDcscDgpICBcDQorICBNQUtFU1RNVChpbnQgKiBfbXAgPSAoY2luZm8pLT5lcnItPm1zZ19wYXJtLmk7IFwNCisJICAgX21wWzBdID0gKHAxKTsgX21wWzFdID0gKHAyKTsgX21wWzJdID0gKHAzKTsgX21wWzNdID0gKHA0KTsgXA0KKwkgICBfbXBbNF0gPSAocDUpOyBfbXBbNV0gPSAocDYpOyBfbXBbNl0gPSAocDcpOyBfbXBbN10gPSAocDgpOyBcDQorCSAgIChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSk7IFwNCisJICAgKCooY2luZm8pLT5lcnItPmVtaXRfbWVzc2FnZSkgKChqX2NvbW1vbl9wdHIpIChjaW5mbyksIChsdmwpKTsgKQ0KKyNkZWZpbmUgVFJBQ0VNU1MoY2luZm8sbHZsLGNvZGUsc3RyKSAgXA0KKyAgKChjaW5mbyktPmVyci0+bXNnX2NvZGUgPSAoY29kZSksIFwNCisgICBGWFNZU19zdHJuY3B5KChjaW5mbyktPmVyci0+bXNnX3Bhcm0ucywgKHN0ciksIEpNU0dfU1RSX1BBUk1fTUFYKSwgXA0KKyAgICgqKGNpbmZvKS0+ZXJyLT5lbWl0X21lc3NhZ2UpICgoal9jb21tb25fcHRyKSAoY2luZm8pLCAobHZsKSkpDQorDQorI2VuZGlmIC8qIEpFUlJPUl9IICovDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ppbmNsdWRlLmggYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvamluY2x1ZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzAxODhhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ppbmNsdWRlLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qDQorICogamluY2x1ZGUuaA0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTQsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGV4aXN0cyB0byBwcm92aWRlIGEgc2luZ2xlIHBsYWNlIHRvIGZpeCBhbnkgcHJvYmxlbXMgd2l0aA0KKyAqIGluY2x1ZGluZyB0aGUgd3Jvbmcgc3lzdGVtIGluY2x1ZGUgZmlsZXMuICAoQ29tbW9uIHByb2JsZW1zIGFyZSB0YWtlbg0KKyAqIGNhcmUgb2YgYnkgdGhlIHN0YW5kYXJkIGpjb25maWcgc3ltYm9scywgYnV0IG9uIHJlYWxseSB3ZWlyZCBzeXN0ZW1zDQorICogeW91IG1heSBoYXZlIHRvIGVkaXQgdGhpcyBmaWxlLikNCisgKg0KKyAqIE5PVEU6IHRoaXMgZmlsZSBpcyBOT1QgaW50ZW5kZWQgdG8gYmUgaW5jbHVkZWQgYnkgYXBwbGljYXRpb25zIHVzaW5nIHRoZQ0KKyAqIEpQRUcgbGlicmFyeS4gIE1vc3QgYXBwbGljYXRpb25zIG5lZWQgb25seSBpbmNsdWRlIGpwZWdsaWIuaC4NCisgKi8NCisNCisNCisvKiBJbmNsdWRlIGF1dG8tY29uZmlnIGZpbGUgdG8gZmluZCBvdXQgd2hpY2ggc3lzdGVtIGluY2x1ZGUgZmlsZXMgd2UgbmVlZC4gKi8NCisNCisjaW5jbHVkZSAiamNvbmZpZy5oIgkJLyogYXV0byBjb25maWd1cmF0aW9uIG9wdGlvbnMgKi8NCisjZGVmaW5lIEpDT05GSUdfSU5DTFVERUQJLyogc28gdGhhdCBqcGVnbGliLmggZG9lc24ndCBkbyBpdCBhZ2FpbiAqLw0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X3N5c3RlbS5oIg0KKy8qDQorICogV2UgbmVlZCB0aGUgTlVMTCBtYWNybyBhbmQgc2l6ZV90IHR5cGVkZWYuDQorICogT24gYW4gQU5TSS1jb25mb3JtaW5nIHN5c3RlbSBpdCBpcyBzdWZmaWNpZW50IHRvIGluY2x1ZGUgPHN0ZGRlZi5oPi4NCisgKiBPdGhlcndpc2UsIHdlIGdldCB0aGVtIGZyb20gPHN0ZGxpYi5oPiBvciA8c3RkaW8uaD47IHdlIG1heSBoYXZlIHRvDQorICogcHVsbCBpbiA8c3lzL3R5cGVzLmg+IGFzIHdlbGwuDQorICogTm90ZSB0aGF0IHRoZSBjb3JlIEpQRUcgbGlicmFyeSBkb2VzIG5vdCByZXF1aXJlIDxzdGRpby5oPjsNCisgKiBvbmx5IHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIgYW5kIGRhdGEgc291cmNlL2Rlc3RpbmF0aW9uIG1vZHVsZXMgZG8uDQorICogQnV0IHdlIG11c3QgcHVsbCBpdCBpbiBiZWNhdXNlIG9mIHRoZSByZWZlcmVuY2VzIHRvIEZJTEUgaW4ganBlZ2xpYi5oLg0KKyAqIFlvdSBjYW4gcmVtb3ZlIHRob3NlIHJlZmVyZW5jZXMgaWYgeW91IHdhbnQgdG8gY29tcGlsZSB3aXRob3V0IDxzdGRpby5oPi4NCisgKi8NCisNCisjaWZkZWYgX0RFQlVHDQorI2RlZmluZSBDUlREQkdfTUFQX0FMTE9DDQorLy8jaW5jbHVkZSA8c3RkbGliLmg+DQorLy8jaW5jbHVkZSA8Y3J0ZGJnLmg+DQorI2VuZGlmDQorDQorI2lmZGVmIEhBVkVfU1REREVGX0gNCisjaW5jbHVkZSA8c3RkZGVmLmg+DQorI2VuZGlmDQorDQorI2lmZGVmIEhBVkVfU1RETElCX0gNCisvLyNpbmNsdWRlIDxzdGRsaWIuaD4NCisjZW5kaWYNCisNCisjaWZkZWYgTkVFRF9TWVNfVFlQRVNfSA0KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCisjZW5kaWYNCisNCisjaWZuZGVmIEZBUg0KKyNkZWZpbmUgRkFSDQorI2VuZGlmDQorDQorLy8jaW5jbHVkZSA8c3RkaW8uaD4NCisNCisvKg0KKyAqIFdlIG5lZWQgbWVtb3J5IGNvcHlpbmcgYW5kIHplcm9pbmcgZnVuY3Rpb25zLCBwbHVzIHN0cm5jcHkoKS4NCisgKiBBTlNJIGFuZCBTeXN0ZW0gViBpbXBsZW1lbnRhdGlvbnMgZGVjbGFyZSB0aGVzZSBpbiA8c3RyaW5nLmg+Lg0KKyAqIEJTRCBkb2Vzbid0IGhhdmUgdGhlIG1lbSgpIGZ1bmN0aW9ucywgYnV0IGl0IGRvZXMgaGF2ZSBiY29weSgpL2J6ZXJvKCkuDQorICogU29tZSBzeXN0ZW1zIG1heSBkZWNsYXJlIG1lbXNldCBhbmQgbWVtY3B5IGluIDxtZW1vcnkuaD4uDQorICoNCisgKiBOT1RFOiB3ZSBhc3N1bWUgdGhlIHNpemUgcGFyYW1ldGVycyB0byB0aGVzZSBmdW5jdGlvbnMgYXJlIG9mIHR5cGUgc2l6ZV90Lg0KKyAqIENoYW5nZSB0aGUgY2FzdHMgaW4gdGhlc2UgbWFjcm9zIGlmIG5vdCENCisgKi8NCisNCisjaWZkZWYgTkVFRF9CU0RfU1RSSU5HUw0KKw0KKy8vI2luY2x1ZGUgPHN0cmluZ3MuaD4NCisjZGVmaW5lIE1FTVpFUk8odGFyZ2V0LHNpemUpCWJ6ZXJvKCh2b2lkICopKHRhcmdldCksIChzaXplX3QpKHNpemUpKQ0KKyNkZWZpbmUgTUVNQ09QWShkZXN0LHNyYyxzaXplKQliY29weSgoY29uc3Qgdm9pZCAqKShzcmMpLCAodm9pZCAqKShkZXN0KSwgKHNpemVfdCkoc2l6ZSkpDQorDQorI2Vsc2UgLyogbm90IEJTRCwgYXNzdW1lIEFOU0kvU3lzViBzdHJpbmcgbGliICovDQorDQorLy8jaW5jbHVkZSA8c3RyaW5nLmg+DQorI2RlZmluZSBNRU1aRVJPKHRhcmdldCxzaXplKQlGWFNZU19tZW1zZXQzMigodm9pZCAqKSh0YXJnZXQpLCAwLCAoc2l6ZV90KShzaXplKSkNCisjZGVmaW5lIE1FTUNPUFkoZGVzdCxzcmMsc2l6ZSkJRlhTWVNfbWVtY3B5MzIoKHZvaWQgKikoZGVzdCksIChjb25zdCB2b2lkICopKHNyYyksIChzaXplX3QpKHNpemUpKQ0KKw0KKyNlbmRpZg0KKw0KKy8qDQorICogSW4gQU5TSSBDLCBhbmQgaW5kZWVkIGFueSByYXRpb25hbCBpbXBsZW1lbnRhdGlvbiwgc2l6ZV90IGlzIGFsc28gdGhlDQorICogdHlwZSByZXR1cm5lZCBieSBzaXplb2YoKS4gIEhvd2V2ZXIsIGl0IHNlZW1zIHRoZXJlIGFyZSBzb21lIGlycmF0aW9uYWwNCisgKiBpbXBsZW1lbnRhdGlvbnMgb3V0IHRoZXJlLCBpbiB3aGljaCBzaXplb2YoKSByZXR1cm5zIGFuIGludCBldmVuIHRob3VnaA0KKyAqIHNpemVfdCBpcyBkZWZpbmVkIGFzIGxvbmcgb3IgdW5zaWduZWQgbG9uZy4gIFRvIGVuc3VyZSBjb25zaXN0ZW50IHJlc3VsdHMNCisgKiB3ZSBhbHdheXMgdXNlIHRoaXMgU0laRU9GKCkgbWFjcm8gaW4gcGxhY2Ugb2YgdXNpbmcgc2l6ZW9mKCkgZGlyZWN0bHkuDQorICovDQorDQorI2RlZmluZSBTSVpFT0Yob2JqZWN0KQkoKHNpemVfdCkgc2l6ZW9mKG9iamVjdCkpDQorDQorLyoNCisgKiBUaGUgbW9kdWxlcyB0aGF0IHVzZSBmcmVhZCgpIGFuZCBmd3JpdGUoKSBhbHdheXMgaW52b2tlIHRoZW0gdGhyb3VnaA0KKyAqIHRoZXNlIG1hY3Jvcy4gIE9uIHNvbWUgc3lzdGVtcyB5b3UgbWF5IG5lZWQgdG8gdHdpZGRsZSB0aGUgYXJndW1lbnQgY2FzdHMuDQorICogQ0FVVElPTjogYXJndW1lbnQgb3JkZXIgaXMgZGlmZmVyZW50IGZyb20gdW5kZXJseWluZyBmdW5jdGlvbnMhDQorICovDQorDQorI2RlZmluZSBKRlJFQUQoZmlsZSxidWYsc2l6ZW9mYnVmKSAgXA0KKyAgKChzaXplX3QpIEZYU1lTX2ZyZWFkKCh2b2lkICopIChidWYpLCAoc2l6ZV90KSAxLCAoc2l6ZV90KSAoc2l6ZW9mYnVmKSwgKGZpbGUpKSkNCisjZGVmaW5lIEpGV1JJVEUoZmlsZSxidWYsc2l6ZW9mYnVmKSAgXA0KKyAgKChzaXplX3QpIEZYU1lTX2Z3cml0ZSgoY29uc3Qgdm9pZCAqKSAoYnVmKSwgKHNpemVfdCkgMSwgKHNpemVfdCkgKHNpemVvZmJ1ZiksIChmaWxlKSkpDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ptZW1zeXMuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qbWVtc3lzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFhN2I3ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qbWVtc3lzLmgKQEAgLTAsMCArMSwyMDAgQEAKKy8qDQorICogam1lbXN5cy5oDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTItMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGluY2x1ZGUgZmlsZSBkZWZpbmVzIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgc3lzdGVtLWluZGVwZW5kZW50DQorICogYW5kIHN5c3RlbS1kZXBlbmRlbnQgcG9ydGlvbnMgb2YgdGhlIEpQRUcgbWVtb3J5IG1hbmFnZXIuICBObyBvdGhlcg0KKyAqIG1vZHVsZXMgbmVlZCBpbmNsdWRlIGl0LiAgKFRoZSBzeXN0ZW0taW5kZXBlbmRlbnQgcG9ydGlvbiBpcyBqbWVtbWdyLmM7DQorICogdGhlcmUgYXJlIHNldmVyYWwgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzeXN0ZW0tZGVwZW5kZW50IHBvcnRpb24uKQ0KKyAqDQorICogVGhpcyBmaWxlIHdvcmtzIGFzLWlzIGZvciB0aGUgc3lzdGVtLWRlcGVuZGVudCBtZW1vcnkgbWFuYWdlcnMgc3VwcGxpZWQNCisgKiBpbiB0aGUgSUpHIGRpc3RyaWJ1dGlvbi4gIFlvdSBtYXkgbmVlZCB0byBtb2RpZnkgaXQgaWYgeW91IHdyaXRlIGENCisgKiBjdXN0b20gbWVtb3J5IG1hbmFnZXIuICBJZiBzeXN0ZW0tZGVwZW5kZW50IGNoYW5nZXMgYXJlIG5lZWRlZCBpbg0KKyAqIHRoaXMgZmlsZSwgdGhlIGJlc3QgbWV0aG9kIGlzIHRvICNpZmRlZiB0aGVtIGJhc2VkIG9uIGEgY29uZmlndXJhdGlvbg0KKyAqIHN5bWJvbCBzdXBwbGllZCBpbiBqY29uZmlnLmgsIGFzIHdlIGhhdmUgZG9uZSB3aXRoIFVTRV9NU0RPU19NRU1NR1INCisgKiBhbmQgVVNFX01BQ19NRU1NR1IuDQorICovDQorDQorDQorLyogU2hvcnQgZm9ybXMgb2YgZXh0ZXJuYWwgbmFtZXMgZm9yIHN5c3RlbXMgd2l0aCBicmFpbi1kYW1hZ2VkIGxpbmtlcnMuICovDQorDQorI2lmZGVmIE5FRURfU0hPUlRfRVhURVJOQUxfTkFNRVMNCisjZGVmaW5lIGpwZWdfZ2V0X3NtYWxsCQlqR2V0U21hbGwNCisjZGVmaW5lIGpwZWdfZnJlZV9zbWFsbAkJakZyZWVTbWFsbA0KKyNkZWZpbmUganBlZ19nZXRfbGFyZ2UJCWpHZXRMYXJnZQ0KKyNkZWZpbmUganBlZ19mcmVlX2xhcmdlCQlqRnJlZUxhcmdlDQorI2RlZmluZSBqcGVnX21lbV9hdmFpbGFibGUJak1lbUF2YWlsDQorI2RlZmluZSBqcGVnX29wZW5fYmFja2luZ19zdG9yZQlqT3BlbkJhY2tTdG9yZQ0KKyNkZWZpbmUganBlZ19tZW1faW5pdAkJak1lbUluaXQNCisjZGVmaW5lIGpwZWdfbWVtX3Rlcm0JCWpNZW1UZXJtDQorI2VuZGlmIC8qIE5FRURfU0hPUlRfRVhURVJOQUxfTkFNRVMgKi8NCisNCisNCisvKg0KKyAqIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gYWxsb2NhdGUgYW5kIHJlbGVhc2Ugc21hbGwgY2h1bmtzIG9mDQorICogbWVtb3J5LiAgKFR5cGljYWxseSB0aGUgdG90YWwgYW1vdW50IHJlcXVlc3RlZCB0aHJvdWdoIGpwZWdfZ2V0X3NtYWxsIGlzDQorICogbm8gbW9yZSB0aGFuIDIwSyBvciBzbzsgdGhpcyB3aWxsIGJlIHJlcXVlc3RlZCBpbiBjaHVua3Mgb2YgYSBmZXcgSyBlYWNoLikNCisgKiBCZWhhdmlvciBzaG91bGQgYmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGZ1bmN0aW9ucyBtYWxsb2MNCisgKiBhbmQgZnJlZTsgaW4gcGFydGljdWxhciwganBlZ19nZXRfc21hbGwgbXVzdCByZXR1cm4gTlVMTCBvbiBmYWlsdXJlLg0KKyAqIE9uIG1vc3Qgc3lzdGVtcywgdGhlc2UgQVJFIG1hbGxvYyBhbmQgZnJlZS4gIGpwZWdfZnJlZV9zbWFsbCBpcyBwYXNzZWQgdGhlDQorICogc2l6ZSBvZiB0aGUgb2JqZWN0IGJlaW5nIGZyZWVkLCBqdXN0IGluIGNhc2UgaXQncyBuZWVkZWQuDQorICogT24gYW4gODB4ODYgbWFjaGluZSB1c2luZyBzbWFsbC1kYXRhIG1lbW9yeSBtb2RlbCwgdGhlc2UgbWFuYWdlIG5lYXIgaGVhcC4NCisgKi8NCisNCitFWFRFUk4odm9pZCAqKSBqcGVnX2dldF9zbWFsbCBKUFAoKGpfY29tbW9uX3B0ciBjaW5mbywgc2l6ZV90IHNpemVvZm9iamVjdCkpOw0KK0VYVEVSTih2b2lkKSBqcGVnX2ZyZWVfc21hbGwgSlBQKChqX2NvbW1vbl9wdHIgY2luZm8sIHZvaWQgKiBvYmplY3QsDQorCQkJCSAgc2l6ZV90IHNpemVvZm9iamVjdCkpOw0KKw0KKy8qDQorICogVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBhbGxvY2F0ZSBhbmQgcmVsZWFzZSBsYXJnZSBjaHVua3Mgb2YNCisgKiBtZW1vcnkgKHVwIHRvIHRoZSB0b3RhbCBmcmVlIHNwYWNlIGRlc2lnbmF0ZWQgYnkganBlZ19tZW1fYXZhaWxhYmxlKS4NCisgKiBUaGUgaW50ZXJmYWNlIGlzIHRoZSBzYW1lIGFzIGFib3ZlLCBleGNlcHQgdGhhdCBvbiBhbiA4MHg4NiBtYWNoaW5lLA0KKyAqIGZhciBwb2ludGVycyBhcmUgdXNlZC4gIE9uIG1vc3Qgb3RoZXIgbWFjaGluZXMgdGhlc2UgYXJlIGlkZW50aWNhbCB0bw0KKyAqIHRoZSBqcGVnX2dldC9mcmVlX3NtYWxsIHJvdXRpbmVzOyBidXQgd2Uga2VlcCB0aGVtIHNlcGFyYXRlIGFueXdheSwNCisgKiBpbiBjYXNlIGEgZGlmZmVyZW50IGFsbG9jYXRpb24gc3RyYXRlZ3kgaXMgZGVzaXJhYmxlIGZvciBsYXJnZSBjaHVua3MuDQorICovDQorDQorRVhURVJOKHZvaWQgRkFSICopIGpwZWdfZ2V0X2xhcmdlIEpQUCgoal9jb21tb25fcHRyIGNpbmZvLA0KKwkJCQkgICAgICAgc2l6ZV90IHNpemVvZm9iamVjdCkpOw0KK0VYVEVSTih2b2lkKSBqcGVnX2ZyZWVfbGFyZ2UgSlBQKChqX2NvbW1vbl9wdHIgY2luZm8sIHZvaWQgRkFSICogb2JqZWN0LA0KKwkJCQkgIHNpemVfdCBzaXplb2ZvYmplY3QpKTsNCisNCisvKg0KKyAqIFRoZSBtYWNybyBNQVhfQUxMT0NfQ0hVTksgZGVzaWduYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBtYXkNCisgKiBiZSByZXF1ZXN0ZWQgaW4gYSBzaW5nbGUgY2FsbCB0byBqcGVnX2dldF9sYXJnZSAoYW5kIGpwZWdfZ2V0X3NtYWxsIGZvciB0aGF0DQorICogbWF0dGVyLCBidXQgdGhhdCBjYXNlIHNob3VsZCBuZXZlciBjb21lIGludG8gcGxheSkuICBUaGlzIG1hY3JvIGlzIG5lZWRlZA0KKyAqIHRvIG1vZGVsIHRoZSA2NEtiLXNlZ21lbnQtc2l6ZSBsaW1pdCBvZiBmYXIgYWRkcmVzc2luZyBvbiA4MHg4NiBtYWNoaW5lcy4NCisgKiBPbiB0aG9zZSBtYWNoaW5lcywgd2UgZXhwZWN0IHRoYXQgamNvbmZpZy5oIHdpbGwgcHJvdmlkZSBhIHByb3BlciB2YWx1ZS4NCisgKiBPbiBtYWNoaW5lcyB3aXRoIDMyLWJpdCBmbGF0IGFkZHJlc3Mgc3BhY2VzLCBhbnkgbGFyZ2UgY29uc3RhbnQgbWF5IGJlIHVzZWQuDQorICoNCisgKiBOQjogam1lbW1nci5jIGV4cGVjdHMgdGhhdCBNQVhfQUxMT0NfQ0hVTksgd2lsbCBiZSByZXByZXNlbnRhYmxlIGFzIHR5cGUNCisgKiBzaXplX3QgYW5kIHdpbGwgYmUgYSBtdWx0aXBsZSBvZiBzaXplb2YoYWxpZ25fdHlwZSkuDQorICovDQorDQorI2lmbmRlZiBNQVhfQUxMT0NfQ0hVTksJCS8qIG1heSBiZSBvdmVycmlkZGVuIGluIGpjb25maWcuaCAqLw0KKyNkZWZpbmUgTUFYX0FMTE9DX0NIVU5LICAxMDAwMDAwMDAwTA0KKyNlbmRpZg0KKw0KKy8qDQorICogVGhpcyByb3V0aW5lIGNvbXB1dGVzIHRoZSB0b3RhbCBzcGFjZSBzdGlsbCBhdmFpbGFibGUgZm9yIGFsbG9jYXRpb24gYnkNCisgKiBqcGVnX2dldF9sYXJnZS4gIElmIG1vcmUgc3BhY2UgdGhhbiB0aGlzIGlzIG5lZWRlZCwgYmFja2luZyBzdG9yZSB3aWxsIGJlDQorICogdXNlZC4gIE5PVEU6IGFueSBtZW1vcnkgYWxyZWFkeSBhbGxvY2F0ZWQgbXVzdCBub3QgYmUgY291bnRlZC4NCisgKg0KKyAqIFRoZXJlIGlzIGEgbWluaW11bSBzcGFjZSByZXF1aXJlbWVudCwgY29ycmVzcG9uZGluZyB0byB0aGUgbWluaW11bQ0KKyAqIGZlYXNpYmxlIGJ1ZmZlciBzaXplczsgam1lbW1nci5jIHdpbGwgcmVxdWVzdCB0aGF0IG11Y2ggc3BhY2UgZXZlbiBpZg0KKyAqIGpwZWdfbWVtX2F2YWlsYWJsZSByZXR1cm5zIHplcm8uICBUaGUgbWF4aW11bSBzcGFjZSBuZWVkZWQsIGVub3VnaCB0byBob2xkDQorICogYWxsIHdvcmtpbmcgc3RvcmFnZSBpbiBtZW1vcnksIGlzIGFsc28gcGFzc2VkIGluIGNhc2UgaXQgaXMgdXNlZnVsLg0KKyAqIEZpbmFsbHksIHRoZSB0b3RhbCBzcGFjZSBhbHJlYWR5IGFsbG9jYXRlZCBpcyBwYXNzZWQuICBJZiBubyBiZXR0ZXINCisgKiBtZXRob2QgaXMgYXZhaWxhYmxlLCBjaW5mby0+bWVtLT5tYXhfbWVtb3J5X3RvX3VzZSAtIGFscmVhZHlfYWxsb2NhdGVkDQorICogaXMgb2Z0ZW4gYSBzdWl0YWJsZSBjYWxjdWxhdGlvbi4NCisgKg0KKyAqIEl0IGlzIE9LIGZvciBqcGVnX21lbV9hdmFpbGFibGUgdG8gdW5kZXJlc3RpbWF0ZSB0aGUgc3BhY2UgYXZhaWxhYmxlDQorICogKHRoYXQnbGwganVzdCBsZWFkIHRvIG1vcmUgYmFja2luZy1zdG9yZSBhY2Nlc3MgdGhhbiBpcyByZWFsbHkgbmVjZXNzYXJ5KS4NCisgKiBIb3dldmVyLCBhbiBvdmVyZXN0aW1hdGUgd2lsbCBsZWFkIHRvIGZhaWx1cmUuICBIZW5jZSBpdCdzIHdpc2UgdG8gc3VidHJhY3QNCisgKiBhIHNsb3AgZmFjdG9yIGZyb20gdGhlIHRydWUgYXZhaWxhYmxlIHNwYWNlLiAgNSUgc2hvdWxkIGJlIGVub3VnaC4NCisgKg0KKyAqIE9uIG1hY2hpbmVzIHdpdGggbG90cyBvZiB2aXJ0dWFsIG1lbW9yeSwgYW55IGxhcmdlIGNvbnN0YW50IG1heSBiZSByZXR1cm5lZC4NCisgKiBDb252ZXJzZWx5LCB6ZXJvIG1heSBiZSByZXR1cm5lZCB0byBhbHdheXMgdXNlIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBtZW1vcnkuDQorICovDQorDQorRVhURVJOKGxvbmcpIGpwZWdfbWVtX2F2YWlsYWJsZSBKUFAoKGpfY29tbW9uX3B0ciBjaW5mbywNCisJCQkJICAgICBsb25nIG1pbl9ieXRlc19uZWVkZWQsDQorCQkJCSAgICAgbG9uZyBtYXhfYnl0ZXNfbmVlZGVkLA0KKwkJCQkgICAgIGxvbmcgYWxyZWFkeV9hbGxvY2F0ZWQpKTsNCisNCisNCisvKg0KKyAqIFRoaXMgc3RydWN0dXJlIGhvbGRzIHdoYXRldmVyIHN0YXRlIGlzIG5lZWRlZCB0byBhY2Nlc3MgYSBzaW5nbGUNCisgKiBiYWNraW5nLXN0b3JlIG9iamVjdC4gIFRoZSByZWFkL3dyaXRlL2Nsb3NlIG1ldGhvZCBwb2ludGVycyBhcmUgY2FsbGVkDQorICogYnkgam1lbW1nci5jIHRvIG1hbmlwdWxhdGUgdGhlIGJhY2tpbmctc3RvcmUgb2JqZWN0OyBhbGwgb3RoZXIgZmllbGRzDQorICogYXJlIHByaXZhdGUgdG8gdGhlIHN5c3RlbS1kZXBlbmRlbnQgYmFja2luZyBzdG9yZSByb3V0aW5lcy4NCisgKi8NCisNCisjZGVmaW5lIFRFTVBfTkFNRV9MRU5HVEggICA2NAkvKiBtYXggbGVuZ3RoIG9mIGEgdGVtcG9yYXJ5IGZpbGUncyBuYW1lICovDQorDQorDQorI2lmZGVmIFVTRV9NU0RPU19NRU1NR1IJCS8qIERPUy1zcGVjaWZpYyBqdW5rICovDQorDQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBYTVNIOwkvKiB0eXBlIG9mIGV4dGVuZGVkLW1lbW9yeSBoYW5kbGVzICovDQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBFTVNIOwkvKiB0eXBlIG9mIGV4cGFuZGVkLW1lbW9yeSBoYW5kbGVzICovDQorDQordHlwZWRlZiB1bmlvbiB7DQorICBzaG9ydCBmaWxlX2hhbmRsZTsJCS8qIERPUyBmaWxlIGhhbmRsZSBpZiBpdCdzIGEgdGVtcCBmaWxlICovDQorICBYTVNIIHhtc19oYW5kbGU7CQkvKiBoYW5kbGUgaWYgaXQncyBhIGNodW5rIG9mIFhNUyAqLw0KKyAgRU1TSCBlbXNfaGFuZGxlOwkJLyogaGFuZGxlIGlmIGl0J3MgYSBjaHVuayBvZiBFTVMgKi8NCit9IGhhbmRsZV91bmlvbjsNCisNCisjZW5kaWYgLyogVVNFX01TRE9TX01FTU1HUiAqLw0KKw0KKyNpZmRlZiBVU0VfTUFDX01FTU1HUgkJLyogTWFjLXNwZWNpZmljIGp1bmsgKi8NCisjaW5jbHVkZSA8RmlsZXMuaD4NCisjZW5kaWYgLyogVVNFX01BQ19NRU1NR1IgKi8NCisNCisNCit0eXBlZGVmIHN0cnVjdCBiYWNraW5nX3N0b3JlX3N0cnVjdCAqIGJhY2tpbmdfc3RvcmVfcHRyOw0KKw0KK3R5cGVkZWYgc3RydWN0IGJhY2tpbmdfc3RvcmVfc3RydWN0IHsNCisgIC8qIE1ldGhvZHMgZm9yIHJlYWRpbmcvd3JpdGluZy9jbG9zaW5nIHRoaXMgYmFja2luZy1zdG9yZSBvYmplY3QgKi8NCisgIEpNRVRIT0Qodm9pZCwgcmVhZF9iYWNraW5nX3N0b3JlLCAoal9jb21tb25fcHRyIGNpbmZvLA0KKwkJCQkgICAgIGJhY2tpbmdfc3RvcmVfcHRyIGluZm8sDQorCQkJCSAgICAgdm9pZCBGQVIgKiBidWZmZXJfYWRkcmVzcywNCisJCQkJICAgICBsb25nIGZpbGVfb2Zmc2V0LCBsb25nIGJ5dGVfY291bnQpKTsNCisgIEpNRVRIT0Qodm9pZCwgd3JpdGVfYmFja2luZ19zdG9yZSwgKGpfY29tbW9uX3B0ciBjaW5mbywNCisJCQkJICAgICAgYmFja2luZ19zdG9yZV9wdHIgaW5mbywNCisJCQkJICAgICAgdm9pZCBGQVIgKiBidWZmZXJfYWRkcmVzcywNCisJCQkJICAgICAgbG9uZyBmaWxlX29mZnNldCwgbG9uZyBieXRlX2NvdW50KSk7DQorICBKTUVUSE9EKHZvaWQsIGNsb3NlX2JhY2tpbmdfc3RvcmUsIChqX2NvbW1vbl9wdHIgY2luZm8sDQorCQkJCSAgICAgIGJhY2tpbmdfc3RvcmVfcHRyIGluZm8pKTsNCisNCisgIC8qIFByaXZhdGUgZmllbGRzIGZvciBzeXN0ZW0tZGVwZW5kZW50IGJhY2tpbmctc3RvcmUgbWFuYWdlbWVudCAqLw0KKyNpZmRlZiBVU0VfTVNET1NfTUVNTUdSDQorICAvKiBGb3IgdGhlIE1TLURPUyBtYW5hZ2VyIChqbWVtZG9zLmMpLCB3ZSBuZWVkOiAqLw0KKyAgaGFuZGxlX3VuaW9uIGhhbmRsZTsJCS8qIHJlZmVyZW5jZSB0byBiYWNraW5nLXN0b3JlIHN0b3JhZ2Ugb2JqZWN0ICovDQorICBjaGFyIHRlbXBfbmFtZVtURU1QX05BTUVfTEVOR1RIXTsgLyogbmFtZSBpZiBpdCdzIGEgZmlsZSAqLw0KKyNlbHNlDQorI2lmZGVmIFVTRV9NQUNfTUVNTUdSDQorICAvKiBGb3IgdGhlIE1hYyBtYW5hZ2VyIChqbWVtbWFjLmMpLCB3ZSBuZWVkOiAqLw0KKyAgc2hvcnQgdGVtcF9maWxlOwkJLyogZmlsZSByZWZlcmVuY2UgbnVtYmVyIHRvIHRlbXAgZmlsZSAqLw0KKyAgRlNTcGVjIHRlbXBTcGVjOwkJLyogdGhlIEZTU3BlYyBmb3IgdGhlIHRlbXAgZmlsZSAqLw0KKyAgY2hhciB0ZW1wX25hbWVbVEVNUF9OQU1FX0xFTkdUSF07IC8qIG5hbWUgaWYgaXQncyBhIGZpbGUgKi8NCisjZWxzZQ0KKyAgLyogRm9yIGEgdHlwaWNhbCBpbXBsZW1lbnRhdGlvbiB3aXRoIHRlbXAgZmlsZXMsIHdlIG5lZWQ6ICovDQorI2lmbmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgRlhTWVNfRklMRSAqIHRlbXBfZmlsZTsJCS8qIHN0ZGlvIHJlZmVyZW5jZSB0byB0ZW1wIGZpbGUgKi8NCisgIGNoYXIgdGVtcF9uYW1lW1RFTVBfTkFNRV9MRU5HVEhdOyAvKiBuYW1lIG9mIHRlbXAgZmlsZSAqLw0KKyNlbmRpZg0KKyNlbmRpZg0KKyNlbmRpZg0KK30gYmFja2luZ19zdG9yZV9pbmZvOw0KKw0KKw0KKy8qDQorICogSW5pdGlhbCBvcGVuaW5nIG9mIGEgYmFja2luZy1zdG9yZSBvYmplY3QuICBUaGlzIG11c3QgZmlsbCBpbiB0aGUNCisgKiByZWFkL3dyaXRlL2Nsb3NlIHBvaW50ZXJzIGluIHRoZSBvYmplY3QuICBUaGUgcmVhZC93cml0ZSByb3V0aW5lcw0KKyAqIG1heSB0YWtlIGFuIGVycm9yIGV4aXQgaWYgdGhlIHNwZWNpZmllZCBtYXhpbXVtIGZpbGUgc2l6ZSBpcyBleGNlZWRlZC4NCisgKiAoSWYganBlZ19tZW1fYXZhaWxhYmxlIGFsd2F5cyByZXR1cm5zIGEgbGFyZ2UgdmFsdWUsIHRoaXMgcm91dGluZSBjYW4NCisgKiBqdXN0IHRha2UgYW4gZXJyb3IgZXhpdC4pDQorICovDQorDQorRVhURVJOKHZvaWQpIGpwZWdfb3Blbl9iYWNraW5nX3N0b3JlIEpQUCgoal9jb21tb25fcHRyIGNpbmZvLA0KKwkJCQkJICBiYWNraW5nX3N0b3JlX3B0ciBpbmZvLA0KKwkJCQkJICBsb25nIHRvdGFsX2J5dGVzX25lZWRlZCkpOw0KKw0KKw0KKy8qDQorICogVGhlc2Ugcm91dGluZXMgdGFrZSBjYXJlIG9mIGFueSBzeXN0ZW0tZGVwZW5kZW50IGluaXRpYWxpemF0aW9uIGFuZA0KKyAqIGNsZWFudXAgcmVxdWlyZWQuICBqcGVnX21lbV9pbml0IHdpbGwgYmUgY2FsbGVkIGJlZm9yZSBhbnl0aGluZyBpcw0KKyAqIGFsbG9jYXRlZCAoYW5kLCB0aGVyZWZvcmUsIG5vdGhpbmcgaW4gY2luZm8gaXMgb2YgdXNlIGV4Y2VwdCB0aGUgZXJyb3INCisgKiBtYW5hZ2VyIHBvaW50ZXIpLiAgSXQgc2hvdWxkIHJldHVybiBhIHN1aXRhYmxlIGRlZmF1bHQgdmFsdWUgZm9yDQorICogbWF4X21lbW9yeV90b191c2U7IHRoaXMgbWF5IHN1YnNlcXVlbnRseSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBzdXJyb3VuZGluZw0KKyAqIGFwcGxpY2F0aW9uLiAgKE5vdGUgdGhhdCBtYXhfbWVtb3J5X3RvX3VzZSBpcyBvbmx5IGltcG9ydGFudCBpZg0KKyAqIGpwZWdfbWVtX2F2YWlsYWJsZSBjaG9vc2VzIHRvIGNvbnN1bHQgaXQgLi4uIG5vIG9uZSBlbHNlIHdpbGwuKQ0KKyAqIGpwZWdfbWVtX3Rlcm0gbWF5IGFzc3VtZSB0aGF0IGFsbCByZXF1ZXN0ZWQgbWVtb3J5IGhhcyBiZWVuIGZyZWVkIGFuZCB0aGF0DQorICogYWxsIG9wZW5lZCBiYWNraW5nLXN0b3JlIG9iamVjdHMgaGF2ZSBiZWVuIGNsb3NlZC4NCisgKi8NCisNCitFWFRFUk4obG9uZykganBlZ19tZW1faW5pdCBKUFAoKGpfY29tbW9uX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqcGVnX21lbV90ZXJtIEpQUCgoal9jb21tb25fcHRyIGNpbmZvKSk7DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ptb3JlY2ZnLmggYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvam1vcmVjZmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjAyMTE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2ptb3JlY2ZnLmgKQEAgLTAsMCArMSwzNzYgQEAKKy8qDQorICogam1vcmVjZmcuaA0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTcsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGNvbnRhaW5zIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY3VzdG9taXplIHRoZQ0KKyAqIEpQRUcgc29mdHdhcmUgZm9yIHNwZWNpYWwgYXBwbGljYXRpb25zIG9yIHN1cHBvcnQgbWFjaGluZS1kZXBlbmRlbnQNCisgKiBvcHRpbWl6YXRpb25zLiAgTW9zdCB1c2VycyB3aWxsIG5vdCBuZWVkIHRvIHRvdWNoIHRoaXMgZmlsZS4NCisgKi8NCisNCisjaWZkZWYgX01TQ19WRVINCisjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MTQyKQ0KKyNlbmRpZg0KKw0KKy8qDQorICogRGVmaW5lIEJJVFNfSU5fSlNBTVBMRSBhcyBlaXRoZXINCisgKiAgIDggICBmb3IgOC1iaXQgc2FtcGxlIHZhbHVlcyAodGhlIHVzdWFsIHNldHRpbmcpDQorICogICAxMiAgZm9yIDEyLWJpdCBzYW1wbGUgdmFsdWVzDQorICogT25seSA4IGFuZCAxMiBhcmUgbGVnYWwgZGF0YSBwcmVjaXNpb25zIGZvciBsb3NzeSBKUEVHIGFjY29yZGluZyB0byB0aGUNCisgKiBKUEVHIHN0YW5kYXJkLCBhbmQgdGhlIElKRyBjb2RlIGRvZXMgbm90IHN1cHBvcnQgYW55dGhpbmcgZWxzZSENCisgKiBXZSBkbyBub3Qgc3VwcG9ydCBydW4tdGltZSBzZWxlY3Rpb24gb2YgZGF0YSBwcmVjaXNpb24sIHNvcnJ5Lg0KKyAqLw0KKw0KKyNkZWZpbmUgQklUU19JTl9KU0FNUExFICA4CS8qIHVzZSA4IG9yIDEyICovDQorDQorDQorLyoNCisgKiBNYXhpbXVtIG51bWJlciBvZiBjb21wb25lbnRzIChjb2xvciBjaGFubmVscykgYWxsb3dlZCBpbiBKUEVHIGltYWdlLg0KKyAqIFRvIG1lZXQgdGhlIGxldHRlciBvZiB0aGUgSlBFRyBzcGVjLCBzZXQgdGhpcyB0byAyNTUuICBIb3dldmVyLCBkYXJuDQorICogZmV3IGFwcGxpY2F0aW9ucyBuZWVkIG1vcmUgdGhhbiA0IGNoYW5uZWxzIChtYXliZSA1IGZvciBDTVlLICsgYWxwaGENCisgKiBtYXNrKS4gIFdlIHJlY29tbWVuZCAxMCBhcyBhIHJlYXNvbmFibGUgY29tcHJvbWlzZTsgdXNlIDQgaWYgeW91IGFyZQ0KKyAqIHJlYWxseSBzaG9ydCBvbiBtZW1vcnkuICAoRWFjaCBhbGxvd2VkIGNvbXBvbmVudCBjb3N0cyBhIGh1bmRyZWQgb3Igc28NCisgKiBieXRlcyBvZiBzdG9yYWdlLCB3aGV0aGVyIGFjdHVhbGx5IHVzZWQgaW4gYW4gaW1hZ2Ugb3Igbm90LikNCisgKi8NCisNCisjZGVmaW5lIE1BWF9DT01QT05FTlRTICAxMAkvKiBtYXhpbXVtIG51bWJlciBvZiBpbWFnZSBjb21wb25lbnRzICovDQorDQorDQorLyoNCisgKiBCYXNpYyBkYXRhIHR5cGVzLg0KKyAqIFlvdSBtYXkgbmVlZCB0byBjaGFuZ2UgdGhlc2UgaWYgeW91IGhhdmUgYSBtYWNoaW5lIHdpdGggdW51c3VhbCBkYXRhDQorICogdHlwZSBzaXplczsgZm9yIGV4YW1wbGUsICJjaGFyIiBub3QgOCBiaXRzLCAic2hvcnQiIG5vdCAxNiBiaXRzLA0KKyAqIG9yICJsb25nIiBub3QgMzIgYml0cy4gIFdlIGRvbid0IGNhcmUgd2hldGhlciAiaW50IiBpcyAxNiBvciAzMiBiaXRzLA0KKyAqIGJ1dCBpdCBoYWQgYmV0dGVyIGJlIGF0IGxlYXN0IDE2Lg0KKyAqLw0KKw0KKy8qIFJlcHJlc2VudGF0aW9uIG9mIGEgc2luZ2xlIHNhbXBsZSAocGl4ZWwgZWxlbWVudCB2YWx1ZSkuDQorICogV2UgZnJlcXVlbnRseSBhbGxvY2F0ZSBsYXJnZSBhcnJheXMgb2YgdGhlc2UsIHNvIGl0J3MgaW1wb3J0YW50IHRvIGtlZXANCisgKiB0aGVtIHNtYWxsLiAgQnV0IGlmIHlvdSBoYXZlIG1lbW9yeSB0byBidXJuIGFuZCBhY2Nlc3MgdG8gY2hhciBvciBzaG9ydA0KKyAqIGFycmF5cyBpcyB2ZXJ5IHNsb3cgb24geW91ciBoYXJkd2FyZSwgeW91IG1pZ2h0IHdhbnQgdG8gY2hhbmdlIHRoZXNlLg0KKyAqLw0KKw0KKyNpZiBCSVRTX0lOX0pTQU1QTEUgPT0gOA0KKy8qIEpTQU1QTEUgc2hvdWxkIGJlIHRoZSBzbWFsbGVzdCB0eXBlIHRoYXQgd2lsbCBob2xkIHRoZSB2YWx1ZXMgMC4uMjU1Lg0KKyAqIFlvdSBjYW4gdXNlIGEgc2lnbmVkIGNoYXIgYnkgaGF2aW5nIEdFVEpTQU1QTEUgbWFzayBpdCB3aXRoIDB4RkYuDQorICovDQorDQorI2lmZGVmIEhBVkVfVU5TSUdORURfQ0hBUg0KKw0KK3R5cGVkZWYgdW5zaWduZWQgY2hhciBKU0FNUExFOw0KKyNkZWZpbmUgR0VUSlNBTVBMRSh2YWx1ZSkgICgoaW50KSAodmFsdWUpKQ0KKw0KKyNlbHNlIC8qIG5vdCBIQVZFX1VOU0lHTkVEX0NIQVIgKi8NCisNCit0eXBlZGVmIGNoYXIgSlNBTVBMRTsNCisjaWZkZWYgQ0hBUl9JU19VTlNJR05FRA0KKyNkZWZpbmUgR0VUSlNBTVBMRSh2YWx1ZSkgICgoaW50KSAodmFsdWUpKQ0KKyNlbHNlDQorI2RlZmluZSBHRVRKU0FNUExFKHZhbHVlKSAgKChpbnQpICh2YWx1ZSkgJiAweEZGKQ0KKyNlbmRpZiAvKiBDSEFSX0lTX1VOU0lHTkVEICovDQorDQorI2VuZGlmIC8qIEhBVkVfVU5TSUdORURfQ0hBUiAqLw0KKw0KKyNkZWZpbmUgTUFYSlNBTVBMRQkyNTUNCisjZGVmaW5lIENFTlRFUkpTQU1QTEUJMTI4DQorDQorI2VuZGlmIC8qIEJJVFNfSU5fSlNBTVBMRSA9PSA4ICovDQorDQorDQorI2lmIEJJVFNfSU5fSlNBTVBMRSA9PSAxMg0KKy8qIEpTQU1QTEUgc2hvdWxkIGJlIHRoZSBzbWFsbGVzdCB0eXBlIHRoYXQgd2lsbCBob2xkIHRoZSB2YWx1ZXMgMC4uNDA5NS4NCisgKiBPbiBuZWFybHkgYWxsIG1hY2hpbmVzICJzaG9ydCIgd2lsbCBkbyBuaWNlbHkuDQorICovDQorDQordHlwZWRlZiBzaG9ydCBKU0FNUExFOw0KKyNkZWZpbmUgR0VUSlNBTVBMRSh2YWx1ZSkgICgoaW50KSAodmFsdWUpKQ0KKw0KKyNkZWZpbmUgTUFYSlNBTVBMRQk0MDk1DQorI2RlZmluZSBDRU5URVJKU0FNUExFCTIwNDgNCisNCisjZW5kaWYgLyogQklUU19JTl9KU0FNUExFID09IDEyICovDQorDQorDQorLyogUmVwcmVzZW50YXRpb24gb2YgYSBEQ1QgZnJlcXVlbmN5IGNvZWZmaWNpZW50Lg0KKyAqIFRoaXMgc2hvdWxkIGJlIGEgc2lnbmVkIHZhbHVlIG9mIGF0IGxlYXN0IDE2IGJpdHM7ICJzaG9ydCIgaXMgdXN1YWxseSBPSy4NCisgKiBBZ2Fpbiwgd2UgYWxsb2NhdGUgbGFyZ2UgYXJyYXlzIG9mIHRoZXNlLCBidXQgeW91IGNhbiBjaGFuZ2UgdG8gaW50DQorICogaWYgeW91IGhhdmUgbWVtb3J5IHRvIGJ1cm4gYW5kICJzaG9ydCIgaXMgcmVhbGx5IHNsb3cuDQorICovDQorDQordHlwZWRlZiBzaG9ydCBKQ09FRjsNCisNCisNCisvKiBDb21wcmVzc2VkIGRhdGFzdHJlYW1zIGFyZSByZXByZXNlbnRlZCBhcyBhcnJheXMgb2YgSk9DVEVULg0KKyAqIFRoZXNlIG11c3QgYmUgRVhBQ1RMWSA4IGJpdHMgd2lkZSwgYXQgbGVhc3Qgb25jZSB0aGV5IGFyZSB3cml0dGVuIHRvDQorICogZXh0ZXJuYWwgc3RvcmFnZS4gIE5vdGUgdGhhdCB3aGVuIHVzaW5nIHRoZSBzdGRpbyBkYXRhIHNvdXJjZS9kZXN0aW5hdGlvbg0KKyAqIG1hbmFnZXJzLCB0aGlzIGlzIGFsc28gdGhlIGRhdGEgdHlwZSBwYXNzZWQgdG8gZnJlYWQvZndyaXRlLg0KKyAqLw0KKw0KKyNpZmRlZiBIQVZFX1VOU0lHTkVEX0NIQVINCisNCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgSk9DVEVUOw0KKyNkZWZpbmUgR0VUSk9DVEVUKHZhbHVlKSAgKHZhbHVlKQ0KKw0KKyNlbHNlIC8qIG5vdCBIQVZFX1VOU0lHTkVEX0NIQVIgKi8NCisNCit0eXBlZGVmIGNoYXIgSk9DVEVUOw0KKyNpZmRlZiBDSEFSX0lTX1VOU0lHTkVEDQorI2RlZmluZSBHRVRKT0NURVQodmFsdWUpICAodmFsdWUpDQorI2Vsc2UNCisjZGVmaW5lIEdFVEpPQ1RFVCh2YWx1ZSkgICgodmFsdWUpICYgMHhGRikNCisjZW5kaWYgLyogQ0hBUl9JU19VTlNJR05FRCAqLw0KKw0KKyNlbmRpZiAvKiBIQVZFX1VOU0lHTkVEX0NIQVIgKi8NCisNCisNCisvKiBUaGVzZSB0eXBlZGVmcyBhcmUgdXNlZCBmb3IgdmFyaW91cyB0YWJsZSBlbnRyaWVzIGFuZCBzbyBmb3J0aC4NCisgKiBUaGV5IG11c3QgYmUgYXQgbGVhc3QgYXMgd2lkZSBhcyBzcGVjaWZpZWQ7IGJ1dCBtYWtpbmcgdGhlbSB0b28gYmlnDQorICogd29uJ3QgY29zdCBhIGh1Z2UgYW1vdW50IG9mIG1lbW9yeSwgc28gd2UgZG9uJ3QgcHJvdmlkZSBzcGVjaWFsDQorICogZXh0cmFjdGlvbiBjb2RlIGxpa2Ugd2UgZGlkIGZvciBKU0FNUExFLiAgKEluIG90aGVyIHdvcmRzLCB0aGVzZQ0KKyAqIHR5cGVkZWZzIGxpdmUgYXQgYSBkaWZmZXJlbnQgcG9pbnQgb24gdGhlIHNwZWVkL3NwYWNlIHRyYWRlb2ZmIGN1cnZlLikNCisgKi8NCisNCisjaWYgX0ZYX09TXyAhPSBfRlhfVlhXT1JLU18NCisNCisvKiBVSU5UOCBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIHZhbHVlcyAwLi4yNTUuICovDQorDQorI2lmZGVmIEhBVkVfVU5TSUdORURfQ0hBUg0KK3R5cGVkZWYgdW5zaWduZWQgY2hhciBVSU5UODsNCisjZWxzZSAvKiBub3QgSEFWRV9VTlNJR05FRF9DSEFSICovDQorI2lmZGVmIENIQVJfSVNfVU5TSUdORUQNCit0eXBlZGVmIGNoYXIgVUlOVDg7DQorI2Vsc2UgLyogbm90IENIQVJfSVNfVU5TSUdORUQgKi8NCit0eXBlZGVmIHNob3J0IFVJTlQ4Ow0KKyNlbmRpZiAvKiBDSEFSX0lTX1VOU0lHTkVEICovDQorI2VuZGlmIC8qIEhBVkVfVU5TSUdORURfQ0hBUiAqLw0KKw0KKw0KKy8qIFVJTlQxNiBtdXN0IGhvbGQgYXQgbGVhc3QgdGhlIHZhbHVlcyAwLi42NTUzNS4gKi8NCisNCisjaWZkZWYgSEFWRV9VTlNJR05FRF9TSE9SVA0KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgVUlOVDE2Ow0KKyNlbHNlIC8qIG5vdCBIQVZFX1VOU0lHTkVEX1NIT1JUICovDQordHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDE2Ow0KKyNlbmRpZiAvKiBIQVZFX1VOU0lHTkVEX1NIT1JUICovDQorDQorLyogSU5UMTYgbXVzdCBob2xkIGF0IGxlYXN0IHRoZSB2YWx1ZXMgLTMyNzY4Li4zMjc2Ny4gKi8NCisNCisjaWZuZGVmIFhNRF9ICQkJLyogWDExL3htZC5oIGNvcnJlY3RseSBkZWZpbmVzIElOVDE2ICovDQordHlwZWRlZiBzaG9ydCBJTlQxNjsNCisjZW5kaWYNCisNCisvKiBJTlQzMiBtdXN0IGhvbGQgYXQgbGVhc3Qgc2lnbmVkIDMyLWJpdCB2YWx1ZXMuICovDQorDQorI2lmbmRlZiBYTURfSAkJCS8qIFgxMS94bWQuaCBjb3JyZWN0bHkgZGVmaW5lcyBJTlQzMiAqLw0KK3R5cGVkZWYgaW50IElOVDMyOw0KKyNlbmRpZg0KKw0KKyNlbmRpZiANCisNCisvKiBEYXRhdHlwZSB1c2VkIGZvciBpbWFnZSBkaW1lbnNpb25zLiAgVGhlIEpQRUcgc3RhbmRhcmQgb25seSBzdXBwb3J0cw0KKyAqIGltYWdlcyB1cCB0byA2NEsqNjRLIGR1ZSB0byAxNi1iaXQgZmllbGRzIGluIFNPRiBtYXJrZXJzLiAgVGhlcmVmb3JlDQorICogInVuc2lnbmVkIGludCIgaXMgc3VmZmljaWVudCBvbiBhbGwgbWFjaGluZXMuICBIb3dldmVyLCBpZiB5b3UgbmVlZCB0bw0KKyAqIGhhbmRsZSBsYXJnZXIgaW1hZ2VzIGFuZCB5b3UgZG9uJ3QgbWluZCBkZXZpYXRpbmcgZnJvbSB0aGUgc3BlYywgeW91DQorICogY2FuIGNoYW5nZSB0aGlzIGRhdGF0eXBlLg0KKyAqLw0KKw0KK3R5cGVkZWYgdW5zaWduZWQgaW50IEpESU1FTlNJT047DQorDQorI2RlZmluZSBKUEVHX01BWF9ESU1FTlNJT04gIDY1NTAwTCAgLyogYSB0YWQgdW5kZXIgNjRLIHRvIHByZXZlbnQgb3ZlcmZsb3dzICovDQorDQorDQorLyogVGhlc2UgbWFjcm9zIGFyZSB1c2VkIGluIGFsbCBmdW5jdGlvbiBkZWZpbml0aW9ucyBhbmQgZXh0ZXJuIGRlY2xhcmF0aW9ucy4NCisgKiBZb3UgY291bGQgbW9kaWZ5IHRoZW0gaWYgeW91IG5lZWQgdG8gY2hhbmdlIGZ1bmN0aW9uIGxpbmthZ2UgY29udmVudGlvbnM7DQorICogaW4gcGFydGljdWxhciwgeW91J2xsIG5lZWQgdG8gZG8gdGhhdCB0byBtYWtlIHRoZSBsaWJyYXJ5IGEgV2luZG93cyBETEwuDQorICogQW5vdGhlciBhcHBsaWNhdGlvbiBpcyB0byBtYWtlIGFsbCBmdW5jdGlvbnMgZ2xvYmFsIGZvciB1c2Ugd2l0aCBkZWJ1Z2dlcnMNCisgKiBvciBjb2RlIHByb2ZpbGVycyB0aGF0IHJlcXVpcmUgaXQuDQorICovDQorDQorLyogYSBmdW5jdGlvbiBjYWxsZWQgdGhyb3VnaCBtZXRob2QgcG9pbnRlcnM6ICovDQorI2RlZmluZSBNRVRIT0RERUYodHlwZSkJCXN0YXRpYyB0eXBlDQorLyogYSBmdW5jdGlvbiB1c2VkIG9ubHkgaW4gaXRzIG1vZHVsZTogKi8NCisjZGVmaW5lIExPQ0FMKHR5cGUpCQlzdGF0aWMgdHlwZQ0KKy8qIGEgZnVuY3Rpb24gcmVmZXJlbmNlZCB0aHJ1IEVYVEVSTnM6ICovDQorI2RlZmluZSBHTE9CQUwodHlwZSkJCXR5cGUNCisNCisjaWZkZWYgX0ZYX01BTkFHRURfQ09ERV8NCisjZGVmaW5lIEVYVEVSTih0eXBlKQkJZXh0ZXJuICJDIiB0eXBlDQorI2Vsc2UNCisvKiBhIHJlZmVyZW5jZSB0byBhIEdMT0JBTCBmdW5jdGlvbjogKi8NCisjZGVmaW5lIEVYVEVSTih0eXBlKQkJZXh0ZXJuIHR5cGUNCisjZW5kaWYNCisNCisNCisvKiBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gZGVjbGFyZSBhICJtZXRob2QiLCB0aGF0IGlzLCBhIGZ1bmN0aW9uIHBvaW50ZXIuDQorICogV2Ugd2FudCB0byBzdXBwbHkgcHJvdG90eXBlIHBhcmFtZXRlcnMgaWYgdGhlIGNvbXBpbGVyIGNhbiBjb3BlLg0KKyAqIE5vdGUgdGhhdCB0aGUgYXJnbGlzdCBwYXJhbWV0ZXIgbXVzdCBiZSBwYXJlbnRoZXNpemVkIQ0KKyAqIEFnYWluLCB5b3UgY2FuIGN1c3RvbWl6ZSB0aGlzIGlmIHlvdSBuZWVkIHNwZWNpYWwgbGlua2FnZSBrZXl3b3Jkcy4NCisgKi8NCisNCisjaWZkZWYgSEFWRV9QUk9UT1RZUEVTDQorI2RlZmluZSBKTUVUSE9EKHR5cGUsbWV0aG9kbmFtZSxhcmdsaXN0KSAgdHlwZSAoKm1ldGhvZG5hbWUpIGFyZ2xpc3QNCisjZWxzZQ0KKyNkZWZpbmUgSk1FVEhPRCh0eXBlLG1ldGhvZG5hbWUsYXJnbGlzdCkgIHR5cGUgKCptZXRob2RuYW1lKSAoKQ0KKyNlbmRpZg0KKw0KKw0KKy8qIEhlcmUgaXMgdGhlIHBzZXVkby1rZXl3b3JkIGZvciBkZWNsYXJpbmcgcG9pbnRlcnMgdGhhdCBtdXN0IGJlICJmYXIiDQorICogb24gODB4ODYgbWFjaGluZXMuICBNb3N0IG9mIHRoZSBzcGVjaWFsaXplZCBjb2RpbmcgZm9yIDgweDg2IGlzIGhhbmRsZWQNCisgKiBieSBqdXN0IHNheWluZyAiRkFSICoiIHdoZXJlIHN1Y2ggYSBwb2ludGVyIGlzIG5lZWRlZC4gIEluIGEgZmV3IHBsYWNlcw0KKyAqIGV4cGxpY2l0IGNvZGluZyBpcyBuZWVkZWQ7IHNlZSB1c2VzIG9mIHRoZSBORUVEX0ZBUl9QT0lOVEVSUyBzeW1ib2wuDQorICovDQorDQorI2lmZGVmIE5FRURfRkFSX1BPSU5URVJTDQorI2RlZmluZSBGQVIgIGZhcg0KKyNlbHNlDQorLy8jZGVmaW5lIEZBUg0KKyNlbmRpZg0KKw0KKw0KKy8qDQorICogT24gYSBmZXcgc3lzdGVtcywgdHlwZSBib29sZWFuIGFuZC9vciBpdHMgdmFsdWVzIEZBTFNFLCBUUlVFIG1heSBhcHBlYXINCisgKiBpbiBzdGFuZGFyZCBoZWFkZXIgZmlsZXMuICBPciB5b3UgbWF5IGhhdmUgY29uZmxpY3RzIHdpdGggYXBwbGljYXRpb24tDQorICogc3BlY2lmaWMgaGVhZGVyIGZpbGVzIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSB0b2dldGhlciB3aXRoIHRoZXNlIGZpbGVzLg0KKyAqIERlZmluaW5nIEhBVkVfQk9PTEVBTiBiZWZvcmUgaW5jbHVkaW5nIGpwZWdsaWIuaCBzaG91bGQgbWFrZSBpdCB3b3JrLg0KKyAqLw0KKw0KKyNpZm5kZWYgSEFWRV9CT09MRUFODQordHlwZWRlZiBpbnQgYm9vbGVhbjsNCisjZW5kaWYNCisjaWZuZGVmIEZBTFNFCQkJLyogaW4gY2FzZSB0aGVzZSBtYWNyb3MgYWxyZWFkeSBleGlzdCAqLw0KKyNkZWZpbmUgRkFMU0UJMAkJLyogdmFsdWVzIG9mIGJvb2xlYW4gKi8NCisjZW5kaWYNCisjaWZuZGVmIFRSVUUNCisjZGVmaW5lIFRSVUUJMQ0KKyNlbmRpZg0KKw0KKw0KKy8qDQorICogVGhlIHJlbWFpbmluZyBvcHRpb25zIGFmZmVjdCBjb2RlIHNlbGVjdGlvbiB3aXRoaW4gdGhlIEpQRUcgbGlicmFyeSwNCisgKiBidXQgdGhleSBkb24ndCBuZWVkIHRvIGJlIHZpc2libGUgdG8gbW9zdCBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGxpYnJhcnkuDQorICogVG8gbWluaW1pemUgYXBwbGljYXRpb24gbmFtZXNwYWNlIHBvbGx1dGlvbiwgdGhlIHN5bWJvbHMgd29uJ3QgYmUNCisgKiBkZWZpbmVkIHVubGVzcyBKUEVHX0lOVEVSTkFMUyBvciBKUEVHX0lOVEVSTkFMX09QVElPTlMgaGFzIGJlZW4gZGVmaW5lZC4NCisgKi8NCisNCisjaWZkZWYgSlBFR19JTlRFUk5BTFMNCisjZGVmaW5lIEpQRUdfSU5URVJOQUxfT1BUSU9OUw0KKyNlbmRpZg0KKw0KKyNpZmRlZiBKUEVHX0lOVEVSTkFMX09QVElPTlMNCisNCisNCisvKg0KKyAqIFRoZXNlIGRlZmluZXMgaW5kaWNhdGUgd2hldGhlciB0byBpbmNsdWRlIHZhcmlvdXMgb3B0aW9uYWwgZnVuY3Rpb25zLg0KKyAqIFVuZGVmaW5pbmcgc29tZSBvZiB0aGVzZSBzeW1ib2xzIHdpbGwgcHJvZHVjZSBhIHNtYWxsZXIgYnV0IGxlc3MgY2FwYWJsZQ0KKyAqIGxpYnJhcnkuICBOb3RlIHRoYXQgeW91IGNhbiBsZWF2ZSBjZXJ0YWluIHNvdXJjZSBmaWxlcyBvdXQgb2YgdGhlDQorICogY29tcGlsYXRpb24vbGlua2luZyBwcm9jZXNzIGlmIHlvdSd2ZSAjdW5kZWYnZCB0aGUgY29ycmVzcG9uZGluZyBzeW1ib2xzLg0KKyAqIChZb3UgbWF5IEhBVkUgdG8gZG8gdGhhdCBpZiB5b3VyIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZSBudWxsIHNvdXJjZSBmaWxlcy4pDQorICovDQorDQorLyogQXJpdGhtZXRpYyBjb2RpbmcgaXMgdW5zdXBwb3J0ZWQgZm9yIGxlZ2FsIHJlYXNvbnMuICBDb21wbGFpbnRzIHRvIElCTS4gKi8NCisNCisvKiBDYXBhYmlsaXR5IG9wdGlvbnMgY29tbW9uIHRvIGVuY29kZXIgYW5kIGRlY29kZXI6ICovDQorDQorI2RlZmluZSBEQ1RfSVNMT1dfU1VQUE9SVEVECS8qIHNsb3cgYnV0IGFjY3VyYXRlIGludGVnZXIgYWxnb3JpdGhtICovDQorI2RlZmluZSBEQ1RfSUZBU1RfU1VQUE9SVEVECS8qIGZhc3RlciwgbGVzcyBhY2N1cmF0ZSBpbnRlZ2VyIG1ldGhvZCAqLw0KKyN1bmRlZiBEQ1RfRkxPQVRfU1VQUE9SVEVECS8qIGZsb2F0aW5nLXBvaW50OiBhY2N1cmF0ZSwgZmFzdCBvbiBmYXN0IEhXICovDQorDQorLyogRW5jb2RlciBjYXBhYmlsaXR5IG9wdGlvbnM6ICovDQorDQorI3VuZGVmICBDX0FSSVRIX0NPRElOR19TVVBQT1JURUQgICAgLyogQXJpdGhtZXRpYyBjb2RpbmcgYmFjayBlbmQ/ICovDQorI2RlZmluZSBDX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQgLyogTXVsdGlwbGUtc2NhbiBKUEVHIGZpbGVzPyAqLw0KKyNkZWZpbmUgQ19QUk9HUkVTU0lWRV9TVVBQT1JURUQJICAgIC8qIFByb2dyZXNzaXZlIEpQRUc/IChSZXF1aXJlcyBNVUxUSVNDQU4pKi8NCisjZGVmaW5lIEVOVFJPUFlfT1BUX1NVUFBPUlRFRAkgICAgLyogT3B0aW1pemF0aW9uIG9mIGVudHJvcHkgY29kaW5nIHBhcm1zPyAqLw0KKy8qIE5vdGU6IGlmIHlvdSBzZWxlY3RlZCAxMi1iaXQgZGF0YSBwcmVjaXNpb24sIGl0IGlzIGRhbmdlcm91cyB0byB0dXJuIG9mZg0KKyAqIEVOVFJPUFlfT1BUX1NVUFBPUlRFRC4gIFRoZSBzdGFuZGFyZCBIdWZmbWFuIHRhYmxlcyBhcmUgb25seSBnb29kIGZvciA4LWJpdA0KKyAqIHByZWNpc2lvbiwgc28gamNodWZmLmMgbm9ybWFsbHkgdXNlcyBlbnRyb3B5IG9wdGltaXphdGlvbiB0byBjb21wdXRlDQorICogdXNhYmxlIHRhYmxlcyBmb3IgaGlnaGVyIHByZWNpc2lvbi4gIElmIHlvdSBkb24ndCB3YW50IHRvIGRvIG9wdGltaXphdGlvbiwNCisgKiB5b3UnbGwgaGF2ZSB0byBzdXBwbHkgZGlmZmVyZW50IGRlZmF1bHQgSHVmZm1hbiB0YWJsZXMuDQorICogVGhlIGV4YWN0IHNhbWUgc3RhdGVtZW50cyBhcHBseSBmb3IgcHJvZ3Jlc3NpdmUgSlBFRzogdGhlIGRlZmF1bHQgdGFibGVzDQorICogZG9uJ3Qgd29yayBmb3IgcHJvZ3Jlc3NpdmUgbW9kZS4gIChUaGlzIG1heSBnZXQgZml4ZWQsIGhvd2V2ZXIuKQ0KKyAqLw0KKyNkZWZpbmUgSU5QVVRfU01PT1RISU5HX1NVUFBPUlRFRCAgIC8qIElucHV0IGltYWdlIHNtb290aGluZyBvcHRpb24/ICovDQorDQorLyogRGVjb2RlciBjYXBhYmlsaXR5IG9wdGlvbnM6ICovDQorDQorI3VuZGVmICBEX0FSSVRIX0NPRElOR19TVVBQT1JURUQgICAgLyogQXJpdGhtZXRpYyBjb2RpbmcgYmFjayBlbmQ/ICovDQorI2RlZmluZSBEX01VTFRJU0NBTl9GSUxFU19TVVBQT1JURUQgLyogTXVsdGlwbGUtc2NhbiBKUEVHIGZpbGVzPyAqLw0KKyNkZWZpbmUgRF9QUk9HUkVTU0lWRV9TVVBQT1JURUQJICAgIC8qIFByb2dyZXNzaXZlIEpQRUc/IChSZXF1aXJlcyBNVUxUSVNDQU4pKi8NCisjZGVmaW5lIFNBVkVfTUFSS0VSU19TVVBQT1JURUQJICAgIC8qIGpwZWdfc2F2ZV9tYXJrZXJzKCkgbmVlZGVkPyAqLw0KKyNkZWZpbmUgQkxPQ0tfU01PT1RISU5HX1NVUFBPUlRFRCAgIC8qIEJsb2NrIHNtb290aGluZz8gKFByb2dyZXNzaXZlIG9ubHkpICovDQorI2RlZmluZSBJRENUX1NDQUxJTkdfU1VQUE9SVEVECSAgICAvKiBPdXRwdXQgcmVzY2FsaW5nIHZpYSBJRENUPyAqLw0KKyN1bmRlZiBVUFNBTVBMRV9TQ0FMSU5HX1NVUFBPUlRFRCAgLyogT3V0cHV0IHJlc2NhbGluZyBhdCB1cHNhbXBsZSBzdGFnZT8gKi8NCisjZGVmaW5lIFVQU0FNUExFX01FUkdJTkdfU1VQUE9SVEVEICAvKiBGYXN0IHBhdGggZm9yIHNsb3BweSB1cHNhbXBsaW5nPyAqLw0KKyN1bmRlZiBRVUFOVF8xUEFTU19TVVBQT1JURUQJICAgIC8qIDEtcGFzcyBjb2xvciBxdWFudGl6YXRpb24/ICovDQorI3VuZGVmIFFVQU5UXzJQQVNTX1NVUFBPUlRFRAkgICAgLyogMi1wYXNzIGNvbG9yIHF1YW50aXphdGlvbj8gKi8NCisNCisvKiBtb3JlIGNhcGFiaWxpdHkgb3B0aW9ucyBsYXRlciwgbm8gZG91YnQgKi8NCisNCisNCisvKg0KKyAqIE9yZGVyaW5nIG9mIFJHQiBkYXRhIGluIHNjYW5saW5lcyBwYXNzZWQgdG8gb3IgZnJvbSB0aGUgYXBwbGljYXRpb24uDQorICogSWYgeW91ciBhcHBsaWNhdGlvbiB3YW50cyB0byBkZWFsIHdpdGggZGF0YSBpbiB0aGUgb3JkZXIgQixHLFIsIGp1c3QNCisgKiBjaGFuZ2UgdGhlc2UgbWFjcm9zLiAgWW91IGNhbiBhbHNvIGRlYWwgd2l0aCBmb3JtYXRzIHN1Y2ggYXMgUixHLEIsWA0KKyAqIChvbmUgZXh0cmEgYnl0ZSBwZXIgcGl4ZWwpIGJ5IGNoYW5naW5nIFJHQl9QSVhFTFNJWkUuICBOb3RlIHRoYXQgY2hhbmdpbmcNCisgKiB0aGUgb2Zmc2V0cyB3aWxsIGFsc28gY2hhbmdlIHRoZSBvcmRlciBpbiB3aGljaCBjb2xvcm1hcCBkYXRhIGlzIG9yZ2FuaXplZC4NCisgKiBSRVNUUklDVElPTlM6DQorICogMS4gVGhlIHNhbXBsZSBhcHBsaWNhdGlvbnMgY2pwZWcsZGpwZWcgZG8gTk9UIHN1cHBvcnQgbW9kaWZpZWQgUkdCIGZvcm1hdHMuDQorICogMi4gVGhlc2UgbWFjcm9zIG9ubHkgYWZmZWN0IFJHQjw9PllDYkNyIGNvbG9yIGNvbnZlcnNpb24sIHNvIHRoZXkgYXJlIG5vdA0KKyAqICAgIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIEpQRUcgY29sb3Igc3BhY2VzIG90aGVyIHRoYW4gWUNiQ3Igb3IgZ3JheXNjYWxlLg0KKyAqIDMuIFRoZSBjb2xvciBxdWFudGl6ZXIgbW9kdWxlcyB3aWxsIG5vdCBiZWhhdmUgZGVzaXJhYmx5IGlmIFJHQl9QSVhFTFNJWkUNCisgKiAgICBpcyBub3QgMyAodGhleSBkb24ndCB1bmRlcnN0YW5kIGFib3V0IGR1bW15IGNvbG9yIGNvbXBvbmVudHMhKS4gIFNvIHlvdQ0KKyAqICAgIGNhbid0IHVzZSBjb2xvciBxdWFudGl6YXRpb24gaWYgeW91IGNoYW5nZSB0aGF0IHZhbHVlLg0KKyAqLw0KKw0KKyNkZWZpbmUgUkdCX1JFRAkJMAkvKiBPZmZzZXQgb2YgUmVkIGluIGFuIFJHQiBzY2FubGluZSBlbGVtZW50ICovDQorI2RlZmluZSBSR0JfR1JFRU4JMQkvKiBPZmZzZXQgb2YgR3JlZW4gKi8NCisjZGVmaW5lIFJHQl9CTFVFCTIJLyogT2Zmc2V0IG9mIEJsdWUgKi8NCisjZGVmaW5lIFJHQl9QSVhFTFNJWkUJMwkvKiBKU0FNUExFcyBwZXIgUkdCIHNjYW5saW5lIGVsZW1lbnQgKi8NCisNCisNCisvKiBEZWZpbml0aW9ucyBmb3Igc3BlZWQtcmVsYXRlZCBvcHRpbWl6YXRpb25zLiAqLw0KKw0KKw0KKy8qIElmIHlvdXIgY29tcGlsZXIgc3VwcG9ydHMgaW5saW5lIGZ1bmN0aW9ucywgZGVmaW5lIElOTElORQ0KKyAqIGFzIHRoZSBpbmxpbmUga2V5d29yZDsgb3RoZXJ3aXNlIGRlZmluZSBpdCBhcyBlbXB0eS4NCisgKi8NCisNCisjaWZuZGVmIElOTElORQ0KKyNpZmRlZiBfX0dOVUNfXwkJCS8qIGZvciBpbnN0YW5jZSwgR05VIEMga25vd3MgYWJvdXQgaW5saW5lICovDQorI2RlZmluZSBJTkxJTkUgX19pbmxpbmVfXw0KKyNlbmRpZg0KKyNpZm5kZWYgSU5MSU5FDQorI2RlZmluZSBJTkxJTkUJCQkvKiBkZWZhdWx0IGlzIHRvIGRlZmluZSBpdCBhcyBlbXB0eSAqLw0KKyNlbmRpZg0KKyNlbmRpZg0KKw0KKw0KKy8qIE9uIHNvbWUgbWFjaGluZXMgKG5vdGFibHkgNjgwMDAgc2VyaWVzKSAiaW50IiBpcyAzMiBiaXRzLCBidXQgbXVsdGlwbHlpbmcNCisgKiB0d28gMTYtYml0IHNob3J0cyBpcyBmYXN0ZXIgdGhhbiBtdWx0aXBseWluZyB0d28gaW50cy4gIERlZmluZSBNVUxUSVBMSUVSDQorICogYXMgc2hvcnQgb24gc3VjaCBhIG1hY2hpbmUuICBNVUxUSVBMSUVSIG11c3QgYmUgYXQgbGVhc3QgMTYgYml0cyB3aWRlLg0KKyAqLw0KKw0KKyNpZm5kZWYgTVVMVElQTElFUg0KKyNkZWZpbmUgTVVMVElQTElFUiAgaW50CQkvKiB0eXBlIGZvciBmYXN0ZXN0IGludGVnZXIgbXVsdGlwbHkgKi8NCisjZW5kaWYNCisNCisNCisvKiBGQVNUX0ZMT0FUIHNob3VsZCBiZSBlaXRoZXIgZmxvYXQgb3IgZG91YmxlLCB3aGljaGV2ZXIgaXMgZG9uZSBmYXN0ZXINCisgKiBieSB5b3VyIGNvbXBpbGVyLiAgKE5vdGUgdGhhdCB0aGlzIHR5cGUgaXMgb25seSB1c2VkIGluIHRoZSBmbG9hdGluZyBwb2ludA0KKyAqIERDVCByb3V0aW5lcywgc28gaXQgb25seSBtYXR0ZXJzIGlmIHlvdSd2ZSBkZWZpbmVkIERDVF9GTE9BVF9TVVBQT1JURUQuKQ0KKyAqIFR5cGljYWxseSwgZmxvYXQgaXMgZmFzdGVyIGluIEFOU0kgQyBjb21waWxlcnMsIHdoaWxlIGRvdWJsZSBpcyBmYXN0ZXIgaW4NCisgKiBwcmUtQU5TSSBjb21waWxlcnMgKGJlY2F1c2UgdGhleSBpbnNpc3Qgb24gY29udmVydGluZyB0byBkb3VibGUgYW55d2F5KS4NCisgKiBUaGUgY29kZSBiZWxvdyB0aGVyZWZvcmUgY2hvb3NlcyBmbG9hdCBpZiB3ZSBoYXZlIEFOU0ktc3R5bGUgcHJvdG90eXBlcy4NCisgKi8NCisNCisjaWZuZGVmIEZBU1RfRkxPQVQNCisjaWZkZWYgSEFWRV9QUk9UT1RZUEVTDQorI2RlZmluZSBGQVNUX0ZMT0FUICBmbG9hdA0KKyNlbHNlDQorI2RlZmluZSBGQVNUX0ZMT0FUICBkb3VibGUNCisjZW5kaWYNCisjZW5kaWYNCisNCisjZW5kaWYgLyogSlBFR19JTlRFUk5BTF9PUFRJT05TICovDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2pwZWdpbnQuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qcGVnaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg1YTM2MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qcGVnaW50LmgKQEAgLTAsMCArMSwzOTIgQEAKKy8qDQorICoganBlZ2ludC5oDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTEtMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgY29tbW9uIGRlY2xhcmF0aW9ucyBmb3IgdGhlIHZhcmlvdXMgSlBFRyBtb2R1bGVzLg0KKyAqIFRoZXNlIGRlY2xhcmF0aW9ucyBhcmUgY29uc2lkZXJlZCBpbnRlcm5hbCB0byB0aGUgSlBFRyBsaWJyYXJ5OyBtb3N0DQorICogYXBwbGljYXRpb25zIHVzaW5nIHRoZSBsaWJyYXJ5IHNob3VsZG4ndCBuZWVkIHRvIGluY2x1ZGUgdGhpcyBmaWxlLg0KKyAqLw0KKw0KKw0KKy8qIERlY2xhcmF0aW9ucyBmb3IgYm90aCBjb21wcmVzc2lvbiAmIGRlY29tcHJlc3Npb24gKi8NCisNCit0eXBlZGVmIGVudW0gewkJCS8qIE9wZXJhdGluZyBtb2RlcyBmb3IgYnVmZmVyIGNvbnRyb2xsZXJzICovDQorCUpCVUZfUEFTU19USFJVLAkJLyogUGxhaW4gc3RyaXB3aXNlIG9wZXJhdGlvbiAqLw0KKwkvKiBSZW1haW5pbmcgbW9kZXMgcmVxdWlyZSBhIGZ1bGwtaW1hZ2UgYnVmZmVyIHRvIGhhdmUgYmVlbiBjcmVhdGVkICovDQorCUpCVUZfU0FWRV9TT1VSQ0UsCS8qIFJ1biBzb3VyY2Ugc3Vib2JqZWN0IG9ubHksIHNhdmUgb3V0cHV0ICovDQorCUpCVUZfQ1JBTktfREVTVCwJLyogUnVuIGRlc3Qgc3Vib2JqZWN0IG9ubHksIHVzaW5nIHNhdmVkIGRhdGEgKi8NCisJSkJVRl9TQVZFX0FORF9QQVNTCS8qIFJ1biBib3RoIHN1Ym9iamVjdHMsIHNhdmUgb3V0cHV0ICovDQorfSBKX0JVRl9NT0RFOw0KKw0KKy8qIFZhbHVlcyBvZiBnbG9iYWxfc3RhdGUgZmllbGQgKGpkYXBpLmMgaGFzIHNvbWUgZGVwZW5kZW5jaWVzIG9uIG9yZGVyaW5nISkgKi8NCisjZGVmaW5lIENTVEFURV9TVEFSVAkxMDAJLyogYWZ0ZXIgY3JlYXRlX2NvbXByZXNzICovDQorI2RlZmluZSBDU1RBVEVfU0NBTk5JTkcJMTAxCS8qIHN0YXJ0X2NvbXByZXNzIGRvbmUsIHdyaXRlX3NjYW5saW5lcyBPSyAqLw0KKyNkZWZpbmUgQ1NUQVRFX1JBV19PSwkxMDIJLyogc3RhcnRfY29tcHJlc3MgZG9uZSwgd3JpdGVfcmF3X2RhdGEgT0sgKi8NCisjZGVmaW5lIENTVEFURV9XUkNPRUZTCTEwMwkvKiBqcGVnX3dyaXRlX2NvZWZmaWNpZW50cyBkb25lICovDQorI2RlZmluZSBEU1RBVEVfU1RBUlQJMjAwCS8qIGFmdGVyIGNyZWF0ZV9kZWNvbXByZXNzICovDQorI2RlZmluZSBEU1RBVEVfSU5IRUFERVIJMjAxCS8qIHJlYWRpbmcgaGVhZGVyIG1hcmtlcnMsIG5vIFNPUyB5ZXQgKi8NCisjZGVmaW5lIERTVEFURV9SRUFEWQkyMDIJLyogZm91bmQgU09TLCByZWFkeSBmb3Igc3RhcnRfZGVjb21wcmVzcyAqLw0KKyNkZWZpbmUgRFNUQVRFX1BSRUxPQUQJMjAzCS8qIHJlYWRpbmcgbXVsdGlzY2FuIGZpbGUgaW4gc3RhcnRfZGVjb21wcmVzcyovDQorI2RlZmluZSBEU1RBVEVfUFJFU0NBTgkyMDQJLyogcGVyZm9ybWluZyBkdW1teSBwYXNzIGZvciAyLXBhc3MgcXVhbnQgKi8NCisjZGVmaW5lIERTVEFURV9TQ0FOTklORwkyMDUJLyogc3RhcnRfZGVjb21wcmVzcyBkb25lLCByZWFkX3NjYW5saW5lcyBPSyAqLw0KKyNkZWZpbmUgRFNUQVRFX1JBV19PSwkyMDYJLyogc3RhcnRfZGVjb21wcmVzcyBkb25lLCByZWFkX3Jhd19kYXRhIE9LICovDQorI2RlZmluZSBEU1RBVEVfQlVGSU1BR0UJMjA3CS8qIGV4cGVjdGluZyBqcGVnX3N0YXJ0X291dHB1dCAqLw0KKyNkZWZpbmUgRFNUQVRFX0JVRlBPU1QJMjA4CS8qIGxvb2tpbmcgZm9yIFNPUy9FT0kgaW4ganBlZ19maW5pc2hfb3V0cHV0ICovDQorI2RlZmluZSBEU1RBVEVfUkRDT0VGUwkyMDkJLyogcmVhZGluZyBmaWxlIGluIGpwZWdfcmVhZF9jb2VmZmljaWVudHMgKi8NCisjZGVmaW5lIERTVEFURV9TVE9QUElORwkyMTAJLyogbG9va2luZyBmb3IgRU9JIGluIGpwZWdfZmluaXNoX2RlY29tcHJlc3MgKi8NCisNCisNCisvKiBEZWNsYXJhdGlvbnMgZm9yIGNvbXByZXNzaW9uIG1vZHVsZXMgKi8NCisNCisvKiBNYXN0ZXIgY29udHJvbCBtb2R1bGUgKi8NCitzdHJ1Y3QganBlZ19jb21wX21hc3RlciB7DQorICBKTUVUSE9EKHZvaWQsIHByZXBhcmVfZm9yX3Bhc3MsIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCBwYXNzX3N0YXJ0dXAsIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCBmaW5pc2hfcGFzcywgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorDQorICAvKiBTdGF0ZSB2YXJpYWJsZXMgbWFkZSB2aXNpYmxlIHRvIG90aGVyIG1vZHVsZXMgKi8NCisgIGJvb2xlYW4gY2FsbF9wYXNzX3N0YXJ0dXA7CS8qIFRydWUgaWYgcGFzc19zdGFydHVwIG11c3QgYmUgY2FsbGVkICovDQorICBib29sZWFuIGlzX2xhc3RfcGFzczsJCS8qIFRydWUgZHVyaW5nIGxhc3QgcGFzcyAqLw0KK307DQorDQorLyogTWFpbiBidWZmZXIgY29udHJvbCAoZG93bnNhbXBsZWQtZGF0YSBidWZmZXIpICovDQorc3RydWN0IGpwZWdfY19tYWluX2NvbnRyb2xsZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9wYXNzLCAoal9jb21wcmVzc19wdHIgY2luZm8sIEpfQlVGX01PREUgcGFzc19tb2RlKSk7DQorICBKTUVUSE9EKHZvaWQsIHByb2Nlc3NfZGF0YSwgKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCSAgICAgICBKU0FNUEFSUkFZIGlucHV0X2J1ZiwgSkRJTUVOU0lPTiAqaW5fcm93X2N0ciwNCisJCQkgICAgICAgSkRJTUVOU0lPTiBpbl9yb3dzX2F2YWlsKSk7DQorfTsNCisNCisvKiBDb21wcmVzc2lvbiBwcmVwcm9jZXNzaW5nIChkb3duc2FtcGxpbmcgaW5wdXQgYnVmZmVyIGNvbnRyb2wpICovDQorc3RydWN0IGpwZWdfY19wcmVwX2NvbnRyb2xsZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9wYXNzLCAoal9jb21wcmVzc19wdHIgY2luZm8sIEpfQlVGX01PREUgcGFzc19tb2RlKSk7DQorICBKTUVUSE9EKHZvaWQsIHByZV9wcm9jZXNzX2RhdGEsIChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJICAgSlNBTVBBUlJBWSBpbnB1dF9idWYsDQorCQkJCSAgIEpESU1FTlNJT04gKmluX3Jvd19jdHIsDQorCQkJCSAgIEpESU1FTlNJT04gaW5fcm93c19hdmFpbCwNCisJCQkJICAgSlNBTVBJTUFHRSBvdXRwdXRfYnVmLA0KKwkJCQkgICBKRElNRU5TSU9OICpvdXRfcm93X2dyb3VwX2N0ciwNCisJCQkJICAgSkRJTUVOU0lPTiBvdXRfcm93X2dyb3Vwc19hdmFpbCkpOw0KK307DQorDQorLyogQ29lZmZpY2llbnQgYnVmZmVyIGNvbnRyb2wgKi8NCitzdHJ1Y3QganBlZ19jX2NvZWZfY29udHJvbGxlciB7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X3Bhc3MsIChqX2NvbXByZXNzX3B0ciBjaW5mbywgSl9CVUZfTU9ERSBwYXNzX21vZGUpKTsNCisgIEpNRVRIT0QoYm9vbGVhbiwgY29tcHJlc3NfZGF0YSwgKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkgICBKU0FNUElNQUdFIGlucHV0X2J1ZikpOw0KK307DQorDQorLyogQ29sb3JzcGFjZSBjb252ZXJzaW9uICovDQorc3RydWN0IGpwZWdfY29sb3JfY29udmVydGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIGNvbG9yX2NvbnZlcnQsIChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJSlNBTVBBUlJBWSBpbnB1dF9idWYsIEpTQU1QSU1BR0Ugb3V0cHV0X2J1ZiwNCisJCQkJSkRJTUVOU0lPTiBvdXRwdXRfcm93LCBpbnQgbnVtX3Jvd3MpKTsNCit9Ow0KKw0KKy8qIERvd25zYW1wbGluZyAqLw0KK3N0cnVjdCBqcGVnX2Rvd25zYW1wbGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIGRvd25zYW1wbGUsIChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkgICAgIEpTQU1QSU1BR0UgaW5wdXRfYnVmLCBKRElNRU5TSU9OIGluX3Jvd19pbmRleCwNCisJCQkgICAgIEpTQU1QSU1BR0Ugb3V0cHV0X2J1ZiwNCisJCQkgICAgIEpESU1FTlNJT04gb3V0X3Jvd19ncm91cF9pbmRleCkpOw0KKw0KKyAgYm9vbGVhbiBuZWVkX2NvbnRleHRfcm93czsJLyogVFJVRSBpZiBuZWVkIHJvd3MgYWJvdmUgJiBiZWxvdyAqLw0KK307DQorDQorLyogRm9yd2FyZCBEQ1QgKGFsc28gY29udHJvbHMgY29lZmZpY2llbnQgcXVhbnRpemF0aW9uKSAqLw0KK3N0cnVjdCBqcGVnX2ZvcndhcmRfZGN0IHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICAvKiBwZXJoYXBzIHRoaXMgc2hvdWxkIGJlIGFuIGFycmF5Pz8/ICovDQorICBKTUVUSE9EKHZvaWQsIGZvcndhcmRfRENULCAoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJICAgICAganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCQkJICAgICAgSlNBTVBBUlJBWSBzYW1wbGVfZGF0YSwgSkJMT0NLUk9XIGNvZWZfYmxvY2tzLA0KKwkJCSAgICAgIEpESU1FTlNJT04gc3RhcnRfcm93LCBKRElNRU5TSU9OIHN0YXJ0X2NvbCwNCisJCQkgICAgICBKRElNRU5TSU9OIG51bV9ibG9ja3MpKTsNCit9Ow0KKw0KKy8qIEVudHJvcHkgZW5jb2RpbmcgKi8NCitzdHJ1Y3QganBlZ19lbnRyb3B5X2VuY29kZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9wYXNzLCAoal9jb21wcmVzc19wdHIgY2luZm8sIGJvb2xlYW4gZ2F0aGVyX3N0YXRpc3RpY3MpKTsNCisgIEpNRVRIT0QoYm9vbGVhbiwgZW5jb2RlX21jdSwgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBKQkxPQ0tST1cgKk1DVV9kYXRhKSk7DQorICBKTUVUSE9EKHZvaWQsIGZpbmlzaF9wYXNzLCAoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCit9Ow0KKw0KKy8qIE1hcmtlciB3cml0aW5nICovDQorc3RydWN0IGpwZWdfbWFya2VyX3dyaXRlciB7DQorICBKTUVUSE9EKHZvaWQsIHdyaXRlX2ZpbGVfaGVhZGVyLCAoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgd3JpdGVfZnJhbWVfaGVhZGVyLCAoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgd3JpdGVfc2Nhbl9oZWFkZXIsIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCB3cml0ZV9maWxlX3RyYWlsZXIsIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCB3cml0ZV90YWJsZXNfb25seSwgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICAvKiBUaGVzZSByb3V0aW5lcyBhcmUgZXhwb3J0ZWQgdG8gYWxsb3cgaW5zZXJ0aW9uIG9mIGV4dHJhIG1hcmtlcnMgKi8NCisgIC8qIFByb2JhYmx5IG9ubHkgQ09NIGFuZCBBUFBuIG1hcmtlcnMgc2hvdWxkIGJlIHdyaXR0ZW4gdGhpcyB3YXkgKi8NCisgIEpNRVRIT0Qodm9pZCwgd3JpdGVfbWFya2VyX2hlYWRlciwgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgbWFya2VyLA0KKwkJCQkgICAgICB1bnNpZ25lZCBpbnQgZGF0YWxlbikpOw0KKyAgSk1FVEhPRCh2b2lkLCB3cml0ZV9tYXJrZXJfYnl0ZSwgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgdmFsKSk7DQorfTsNCisNCisNCisvKiBEZWNsYXJhdGlvbnMgZm9yIGRlY29tcHJlc3Npb24gbW9kdWxlcyAqLw0KKw0KKy8qIE1hc3RlciBjb250cm9sIG1vZHVsZSAqLw0KK3N0cnVjdCBqcGVnX2RlY29tcF9tYXN0ZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBwcmVwYXJlX2Zvcl9vdXRwdXRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgZmluaXNoX291dHB1dF9wYXNzLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKw0KKyAgLyogU3RhdGUgdmFyaWFibGVzIG1hZGUgdmlzaWJsZSB0byBvdGhlciBtb2R1bGVzICovDQorICBib29sZWFuIGlzX2R1bW15X3Bhc3M7CS8qIFRydWUgZHVyaW5nIDFzdCBwYXNzIGZvciAyLXBhc3MgcXVhbnQgKi8NCit9Ow0KKw0KKy8qIElucHV0IGNvbnRyb2wgbW9kdWxlICovDQorc3RydWN0IGpwZWdfaW5wdXRfY29udHJvbGxlciB7DQorICBKTUVUSE9EKGludCwgY29uc3VtZV9pbnB1dCwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgcmVzZXRfaW5wdXRfY29udHJvbGxlciwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfaW5wdXRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgZmluaXNoX2lucHV0X3Bhc3MsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorDQorICAvKiBTdGF0ZSB2YXJpYWJsZXMgbWFkZSB2aXNpYmxlIHRvIG90aGVyIG1vZHVsZXMgKi8NCisgIGJvb2xlYW4gaGFzX211bHRpcGxlX3NjYW5zOwkvKiBUcnVlIGlmIGZpbGUgaGFzIG11bHRpcGxlIHNjYW5zICovDQorICBib29sZWFuIGVvaV9yZWFjaGVkOwkJLyogVHJ1ZSB3aGVuIEVPSSBoYXMgYmVlbiBjb25zdW1lZCAqLw0KK307DQorDQorLyogTWFpbiBidWZmZXIgY29udHJvbCAoZG93bnNhbXBsZWQtZGF0YSBidWZmZXIpICovDQorc3RydWN0IGpwZWdfZF9tYWluX2NvbnRyb2xsZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9wYXNzLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgSl9CVUZfTU9ERSBwYXNzX21vZGUpKTsNCisgIEpNRVRIT0Qodm9pZCwgcHJvY2Vzc19kYXRhLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkgICAgICAgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLCBKRElNRU5TSU9OICpvdXRfcm93X2N0ciwNCisJCQkgICAgICAgSkRJTUVOU0lPTiBvdXRfcm93c19hdmFpbCkpOw0KK307DQorDQorLyogQ29lZmZpY2llbnQgYnVmZmVyIGNvbnRyb2wgKi8NCitzdHJ1Y3QganBlZ19kX2NvZWZfY29udHJvbGxlciB7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X2lucHV0X3Bhc3MsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKGludCwgY29uc3VtZV9kYXRhLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9vdXRwdXRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0QoaW50LCBkZWNvbXByZXNzX2RhdGEsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkgSlNBTVBJTUFHRSBvdXRwdXRfYnVmKSk7DQorICAvKiBQb2ludGVyIHRvIGFycmF5IG9mIGNvZWZmaWNpZW50IHZpcnR1YWwgYXJyYXlzLCBvciBOVUxMIGlmIG5vbmUgKi8NCisgIGp2aXJ0X2JhcnJheV9wdHIgKmNvZWZfYXJyYXlzOw0KK307DQorDQorLyogRGVjb21wcmVzc2lvbiBwb3N0cHJvY2Vzc2luZyAoY29sb3IgcXVhbnRpemF0aW9uIGJ1ZmZlciBjb250cm9sKSAqLw0KK3N0cnVjdCBqcGVnX2RfcG9zdF9jb250cm9sbGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEpfQlVGX01PREUgcGFzc19tb2RlKSk7DQorICBKTUVUSE9EKHZvaWQsIHBvc3RfcHJvY2Vzc19kYXRhLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJICAgIEpTQU1QSU1BR0UgaW5wdXRfYnVmLA0KKwkJCQkgICAgSkRJTUVOU0lPTiAqaW5fcm93X2dyb3VwX2N0ciwNCisJCQkJICAgIEpESU1FTlNJT04gaW5fcm93X2dyb3Vwc19hdmFpbCwNCisJCQkJICAgIEpTQU1QQVJSQVkgb3V0cHV0X2J1ZiwNCisJCQkJICAgIEpESU1FTlNJT04gKm91dF9yb3dfY3RyLA0KKwkJCQkgICAgSkRJTUVOU0lPTiBvdXRfcm93c19hdmFpbCkpOw0KK307DQorDQorLyogTWFya2VyIHJlYWRpbmcgJiBwYXJzaW5nICovDQorc3RydWN0IGpwZWdfbWFya2VyX3JlYWRlciB7DQorICBKTUVUSE9EKHZvaWQsIHJlc2V0X21hcmtlcl9yZWFkZXIsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICAvKiBSZWFkIG1hcmtlcnMgdW50aWwgU09TIG9yIEVPSS4NCisgICAqIFJldHVybnMgc2FtZSBjb2RlcyBhcyBhcmUgZGVmaW5lZCBmb3IganBlZ19jb25zdW1lX2lucHV0Og0KKyAgICogSlBFR19TVVNQRU5ERUQsIEpQRUdfUkVBQ0hFRF9TT1MsIG9yIEpQRUdfUkVBQ0hFRF9FT0kuDQorICAgKi8NCisgIEpNRVRIT0QoaW50LCByZWFkX21hcmtlcnMsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICAvKiBSZWFkIGEgcmVzdGFydCBtYXJrZXIgLS0tIGV4cG9ydGVkIGZvciB1c2UgYnkgZW50cm9weSBkZWNvZGVyIG9ubHkgKi8NCisgIGpwZWdfbWFya2VyX3BhcnNlcl9tZXRob2QgcmVhZF9yZXN0YXJ0X21hcmtlcjsNCisNCisgIC8qIFN0YXRlIG9mIG1hcmtlciByZWFkZXIgLS0tIG5vbWluYWxseSBpbnRlcm5hbCwgYnV0IGFwcGxpY2F0aW9ucw0KKyAgICogc3VwcGx5aW5nIENPTSBvciBBUFBuIGhhbmRsZXJzIG1pZ2h0IGxpa2UgdG8ga25vdyB0aGUgc3RhdGUuDQorICAgKi8NCisgIGJvb2xlYW4gc2F3X1NPSTsJCS8qIGZvdW5kIFNPST8gKi8NCisgIGJvb2xlYW4gc2F3X1NPRjsJCS8qIGZvdW5kIFNPRj8gKi8NCisgIGludCBuZXh0X3Jlc3RhcnRfbnVtOwkJLyogbmV4dCByZXN0YXJ0IG51bWJlciBleHBlY3RlZCAoMC03KSAqLw0KKyAgdW5zaWduZWQgaW50IGRpc2NhcmRlZF9ieXRlczsJLyogIyBvZiBieXRlcyBza2lwcGVkIGxvb2tpbmcgZm9yIGEgbWFya2VyICovDQorfTsNCisNCisvKiBFbnRyb3B5IGRlY29kaW5nICovDQorc3RydWN0IGpwZWdfZW50cm9weV9kZWNvZGVyIHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0QoYm9vbGVhbiwgZGVjb2RlX21jdSwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCUpCTE9DS1JPVyAqTUNVX2RhdGEpKTsNCisNCisgIC8qIFRoaXMgaXMgaGVyZSB0byBzaGFyZSBjb2RlIGJldHdlZW4gYmFzZWxpbmUgYW5kIHByb2dyZXNzaXZlIGRlY29kZXJzOyAqLw0KKyAgLyogb3RoZXIgbW9kdWxlcyBwcm9iYWJseSBzaG91bGQgbm90IHVzZSBpdCAqLw0KKyAgYm9vbGVhbiBpbnN1ZmZpY2llbnRfZGF0YTsJLyogc2V0IFRSVUUgYWZ0ZXIgZW1pdHRpbmcgd2FybmluZyAqLw0KK307DQorDQorLyogSW52ZXJzZSBEQ1QgKGFsc28gcGVyZm9ybXMgZGVxdWFudGl6YXRpb24pICovDQordHlwZWRlZiBKTUVUSE9EKHZvaWQsIGludmVyc2VfRENUX21ldGhvZF9wdHIsDQorCQkoal9kZWNvbXByZXNzX3B0ciBjaW5mbywganBlZ19jb21wb25lbnRfaW5mbyAqIGNvbXBwdHIsDQorCQkgSkNPRUZQVFIgY29lZl9ibG9jaywNCisJCSBKU0FNUEFSUkFZIG91dHB1dF9idWYsIEpESU1FTlNJT04gb3V0cHV0X2NvbCkpOw0KKw0KK3N0cnVjdCBqcGVnX2ludmVyc2VfZGN0IHsNCisgIEpNRVRIT0Qodm9pZCwgc3RhcnRfcGFzcywgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIC8qIEl0IGlzIHVzZWZ1bCB0byBhbGxvdyBlYWNoIGNvbXBvbmVudCB0byBoYXZlIGEgc2VwYXJhdGUgSURDVCBtZXRob2QuICovDQorICBpbnZlcnNlX0RDVF9tZXRob2RfcHRyIGludmVyc2VfRENUW01BWF9DT01QT05FTlRTXTsNCit9Ow0KKw0KKy8qIFVwc2FtcGxpbmcgKG5vdGUgdGhhdCB1cHNhbXBsZXIgbXVzdCBhbHNvIGNhbGwgY29sb3IgY29udmVydGVyKSAqLw0KK3N0cnVjdCBqcGVnX3Vwc2FtcGxlciB7DQorICBKTUVUSE9EKHZvaWQsIHN0YXJ0X3Bhc3MsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIHVwc2FtcGxlLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkgICBKU0FNUElNQUdFIGlucHV0X2J1ZiwNCisJCQkgICBKRElNRU5TSU9OICppbl9yb3dfZ3JvdXBfY3RyLA0KKwkJCSAgIEpESU1FTlNJT04gaW5fcm93X2dyb3Vwc19hdmFpbCwNCisJCQkgICBKU0FNUEFSUkFZIG91dHB1dF9idWYsDQorCQkJICAgSkRJTUVOU0lPTiAqb3V0X3Jvd19jdHIsDQorCQkJICAgSkRJTUVOU0lPTiBvdXRfcm93c19hdmFpbCkpOw0KKw0KKyAgYm9vbGVhbiBuZWVkX2NvbnRleHRfcm93czsJLyogVFJVRSBpZiBuZWVkIHJvd3MgYWJvdmUgJiBiZWxvdyAqLw0KK307DQorDQorLyogQ29sb3JzcGFjZSBjb252ZXJzaW9uICovDQorc3RydWN0IGpwZWdfY29sb3JfZGVjb252ZXJ0ZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9wYXNzLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCBjb2xvcl9jb252ZXJ0LCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJSlNBTVBJTUFHRSBpbnB1dF9idWYsIEpESU1FTlNJT04gaW5wdXRfcm93LA0KKwkJCQlKU0FNUEFSUkFZIG91dHB1dF9idWYsIGludCBudW1fcm93cykpOw0KK307DQorDQorLyogQ29sb3IgcXVhbnRpemF0aW9uIG9yIGNvbG9yIHByZWNpc2lvbiByZWR1Y3Rpb24gKi8NCitzdHJ1Y3QganBlZ19jb2xvcl9xdWFudGl6ZXIgew0KKyAgSk1FVEhPRCh2b2lkLCBzdGFydF9wYXNzLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgYm9vbGVhbiBpc19wcmVfc2NhbikpOw0KKyAgSk1FVEhPRCh2b2lkLCBjb2xvcl9xdWFudGl6ZSwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sDQorCQkJCSBKU0FNUEFSUkFZIGlucHV0X2J1ZiwgSlNBTVBBUlJBWSBvdXRwdXRfYnVmLA0KKwkJCQkgaW50IG51bV9yb3dzKSk7DQorICBKTUVUSE9EKHZvaWQsIGZpbmlzaF9wYXNzLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRCh2b2lkLCBuZXdfY29sb3JfbWFwLCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK307DQorDQorDQorLyogTWlzY2VsbGFuZW91cyB1c2VmdWwgbWFjcm9zICovDQorDQorI3VuZGVmIE1BWA0KKyNkZWZpbmUgTUFYKGEsYikJKChhKSA+IChiKSA/IChhKSA6IChiKSkNCisjdW5kZWYgTUlODQorI2RlZmluZSBNSU4oYSxiKQkoKGEpIDwgKGIpID8gKGEpIDogKGIpKQ0KKw0KKw0KKy8qIFdlIGFzc3VtZSB0aGF0IHJpZ2h0IHNoaWZ0IGNvcnJlc3BvbmRzIHRvIHNpZ25lZCBkaXZpc2lvbiBieSAyIHdpdGgNCisgKiByb3VuZGluZyB0b3dhcmRzIG1pbnVzIGluZmluaXR5LiAgVGhpcyBpcyBjb3JyZWN0IGZvciB0eXBpY2FsICJhcml0aG1ldGljDQorICogc2hpZnQiIGluc3RydWN0aW9ucyB0aGF0IHNoaWZ0IGluIGNvcGllcyBvZiB0aGUgc2lnbiBiaXQuICBCdXQgc29tZQ0KKyAqIEMgY29tcGlsZXJzIGltcGxlbWVudCA+PiB3aXRoIGFuIHVuc2lnbmVkIHNoaWZ0LiAgRm9yIHRoZXNlIG1hY2hpbmVzIHlvdQ0KKyAqIG11c3QgZGVmaW5lIFJJR0hUX1NISUZUX0lTX1VOU0lHTkVELg0KKyAqIFJJR0hUX1NISUZUIHByb3ZpZGVzIGEgcHJvcGVyIHNpZ25lZCByaWdodCBzaGlmdCBvZiBhbiBJTlQzMiBxdWFudGl0eS4NCisgKiBJdCBpcyBvbmx5IGFwcGxpZWQgd2l0aCBjb25zdGFudCBzaGlmdCBjb3VudHMuICBTSElGVF9URU1QUyBtdXN0IGJlDQorICogaW5jbHVkZWQgaW4gdGhlIHZhcmlhYmxlcyBvZiBhbnkgcm91dGluZSB1c2luZyBSSUdIVF9TSElGVC4NCisgKi8NCisNCisjaWZkZWYgUklHSFRfU0hJRlRfSVNfVU5TSUdORUQNCisjZGVmaW5lIFNISUZUX1RFTVBTCUlOVDMyIHNoaWZ0X3RlbXA7DQorI2RlZmluZSBSSUdIVF9TSElGVCh4LHNoZnQpICBcDQorCSgoc2hpZnRfdGVtcCA9ICh4KSkgPCAwID8gXA0KKwkgKHNoaWZ0X3RlbXAgPj4gKHNoZnQpKSB8ICgofigoSU5UMzIpIDApKSA8PCAoMzItKHNoZnQpKSkgOiBcDQorCSAoc2hpZnRfdGVtcCA+PiAoc2hmdCkpKQ0KKyNlbHNlDQorI2RlZmluZSBTSElGVF9URU1QUw0KKyNkZWZpbmUgUklHSFRfU0hJRlQoeCxzaGZ0KQkoKHgpID4+IChzaGZ0KSkNCisjZW5kaWYNCisNCisNCisvKiBTaG9ydCBmb3JtcyBvZiBleHRlcm5hbCBuYW1lcyBmb3Igc3lzdGVtcyB3aXRoIGJyYWluLWRhbWFnZWQgbGlua2Vycy4gKi8NCisNCisjaWZkZWYgTkVFRF9TSE9SVF9FWFRFUk5BTF9OQU1FUw0KKyNkZWZpbmUgamluaXRfY29tcHJlc3NfbWFzdGVyCWpJQ29tcHJlc3MNCisjZGVmaW5lIGppbml0X2NfbWFzdGVyX2NvbnRyb2wJaklDTWFzdGVyDQorI2RlZmluZSBqaW5pdF9jX21haW5fY29udHJvbGxlcglqSUNNYWluQw0KKyNkZWZpbmUgamluaXRfY19wcmVwX2NvbnRyb2xsZXIJaklDUHJlcEMNCisjZGVmaW5lIGppbml0X2NfY29lZl9jb250cm9sbGVyCWpJQ0NvZWZDDQorI2RlZmluZSBqaW5pdF9jb2xvcl9jb252ZXJ0ZXIJaklDQ29sb3INCisjZGVmaW5lIGppbml0X2Rvd25zYW1wbGVyCWpJRG93bnNhbXBsZXINCisjZGVmaW5lIGppbml0X2ZvcndhcmRfZGN0CWpJRkRDVA0KKyNkZWZpbmUgamluaXRfaHVmZl9lbmNvZGVyCWpJSEVuY29kZXINCisjZGVmaW5lIGppbml0X3BodWZmX2VuY29kZXIJaklQSEVuY29kZXINCisjZGVmaW5lIGppbml0X21hcmtlcl93cml0ZXIJaklNV3JpdGVyDQorI2RlZmluZSBqaW5pdF9tYXN0ZXJfZGVjb21wcmVzcwlqSURNYXN0ZXINCisjZGVmaW5lIGppbml0X2RfbWFpbl9jb250cm9sbGVyCWpJRE1haW5DDQorI2RlZmluZSBqaW5pdF9kX2NvZWZfY29udHJvbGxlcglqSURDb2VmQw0KKyNkZWZpbmUgamluaXRfZF9wb3N0X2NvbnRyb2xsZXIJaklEUG9zdEMNCisjZGVmaW5lIGppbml0X2lucHV0X2NvbnRyb2xsZXIJaklJbkN0bHINCisjZGVmaW5lIGppbml0X21hcmtlcl9yZWFkZXIJaklNUmVhZGVyDQorI2RlZmluZSBqaW5pdF9odWZmX2RlY29kZXIJaklIRGVjb2Rlcg0KKyNkZWZpbmUgamluaXRfcGh1ZmZfZGVjb2RlcglqSVBIRGVjb2Rlcg0KKyNkZWZpbmUgamluaXRfaW52ZXJzZV9kY3QJaklJRENUDQorI2RlZmluZSBqaW5pdF91cHNhbXBsZXIJCWpJVXBzYW1wbGVyDQorI2RlZmluZSBqaW5pdF9jb2xvcl9kZWNvbnZlcnRlcglqSURDb2xvcg0KKyNkZWZpbmUgamluaXRfMXBhc3NfcXVhbnRpemVyCWpJMVF1YW50DQorI2RlZmluZSBqaW5pdF8ycGFzc19xdWFudGl6ZXIJakkyUXVhbnQNCisjZGVmaW5lIGppbml0X21lcmdlZF91cHNhbXBsZXIJaklNVXBzYW1wbGVyDQorI2RlZmluZSBqaW5pdF9tZW1vcnlfbWdyCWpJTWVtTWdyDQorI2RlZmluZSBqZGl2X3JvdW5kX3VwCQlqRGl2Um91bmQNCisjZGVmaW5lIGpyb3VuZF91cAkJalJvdW5kDQorI2RlZmluZSBqY29weV9zYW1wbGVfcm93cwlqQ29weVNhbXBsZXMNCisjZGVmaW5lIGpjb3B5X2Jsb2NrX3JvdwkJakNvcHlCbG9ja3MNCisjZGVmaW5lIGp6ZXJvX2ZhcgkJalplcm9GYXINCisjZGVmaW5lIGpwZWdfemlnemFnX29yZGVyCWpaSUdUYWJsZQ0KKyNkZWZpbmUganBlZ19uYXR1cmFsX29yZGVyCWpaQUdUYWJsZQ0KKyNlbmRpZiAvKiBORUVEX1NIT1JUX0VYVEVSTkFMX05BTUVTICovDQorDQorDQorLyogQ29tcHJlc3Npb24gbW9kdWxlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzICovDQorRVhURVJOKHZvaWQpIGppbml0X2NvbXByZXNzX21hc3RlciBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2NfbWFzdGVyX2NvbnRyb2wgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSBib29sZWFuIHRyYW5zY29kZV9vbmx5KSk7DQorRVhURVJOKHZvaWQpIGppbml0X2NfbWFpbl9jb250cm9sbGVyIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCQkgIGJvb2xlYW4gbmVlZF9mdWxsX2J1ZmZlcikpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9jX3ByZXBfY29udHJvbGxlciBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICBib29sZWFuIG5lZWRfZnVsbF9idWZmZXIpKTsNCitFWFRFUk4odm9pZCkgamluaXRfY19jb2VmX2NvbnRyb2xsZXIgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgYm9vbGVhbiBuZWVkX2Z1bGxfYnVmZmVyKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2NvbG9yX2NvbnZlcnRlciBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2Rvd25zYW1wbGVyIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgamluaXRfZm9yd2FyZF9kY3QgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9odWZmX2VuY29kZXIgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9waHVmZl9lbmNvZGVyIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgamluaXRfbWFya2VyX3dyaXRlciBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorLyogRGVjb21wcmVzc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMgKi8NCitFWFRFUk4odm9pZCkgamluaXRfbWFzdGVyX2RlY29tcHJlc3MgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2RfbWFpbl9jb250cm9sbGVyIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgYm9vbGVhbiBuZWVkX2Z1bGxfYnVmZmVyKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2RfY29lZl9jb250cm9sbGVyIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgYm9vbGVhbiBuZWVkX2Z1bGxfYnVmZmVyKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2RfcG9zdF9jb250cm9sbGVyIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgYm9vbGVhbiBuZWVkX2Z1bGxfYnVmZmVyKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2lucHV0X2NvbnRyb2xsZXIgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X21hcmtlcl9yZWFkZXIgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X2h1ZmZfZGVjb2RlciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgamluaXRfcGh1ZmZfZGVjb2RlciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgamluaXRfaW52ZXJzZV9kY3QgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0X3Vwc2FtcGxlciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgamluaXRfY29sb3JfZGVjb252ZXJ0ZXIgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGppbml0XzFwYXNzX3F1YW50aXplciBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkgamluaXRfMnBhc3NfcXVhbnRpemVyIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqaW5pdF9tZXJnZWRfdXBzYW1wbGVyIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKy8qIE1lbW9yeSBtYW5hZ2VyIGluaXRpYWxpemF0aW9uICovDQorRVhURVJOKHZvaWQpIGppbml0X21lbW9yeV9tZ3IgSlBQKChqX2NvbW1vbl9wdHIgY2luZm8pKTsNCisNCisvKiBVdGlsaXR5IHJvdXRpbmVzIGluIGp1dGlscy5jICovDQorRVhURVJOKGxvbmcpIGpkaXZfcm91bmRfdXAgSlBQKChsb25nIGEsIGxvbmcgYikpOw0KK0VYVEVSTihsb25nKSBqcm91bmRfdXAgSlBQKChsb25nIGEsIGxvbmcgYikpOw0KK0VYVEVSTih2b2lkKSBqY29weV9zYW1wbGVfcm93cyBKUFAoKEpTQU1QQVJSQVkgaW5wdXRfYXJyYXksIGludCBzb3VyY2Vfcm93LA0KKwkJCQkgICAgSlNBTVBBUlJBWSBvdXRwdXRfYXJyYXksIGludCBkZXN0X3JvdywNCisJCQkJICAgIGludCBudW1fcm93cywgSkRJTUVOU0lPTiBudW1fY29scykpOw0KK0VYVEVSTih2b2lkKSBqY29weV9ibG9ja19yb3cgSlBQKChKQkxPQ0tST1cgaW5wdXRfcm93LCBKQkxPQ0tST1cgb3V0cHV0X3JvdywNCisJCQkJICBKRElNRU5TSU9OIG51bV9ibG9ja3MpKTsNCitFWFRFUk4odm9pZCkganplcm9fZmFyIEpQUCgodm9pZCBGQVIgKiB0YXJnZXQsIHNpemVfdCBieXRlc3RvemVybykpOw0KKy8qIENvbnN0YW50IHRhYmxlcyBpbiBqdXRpbHMuYyAqLw0KKyNpZiAwCQkJCS8qIFRoaXMgdGFibGUgaXMgbm90IGFjdHVhbGx5IG5lZWRlZCBpbiB2NmEgKi8NCitleHRlcm4gY29uc3QgaW50IGpwZWdfemlnemFnX29yZGVyW107IC8qIG5hdHVyYWwgY29lZiBvcmRlciB0byB6aWd6YWcgb3JkZXIgKi8NCisjZW5kaWYNCitleHRlcm4gY29uc3QgaW50IGpwZWdfbmF0dXJhbF9vcmRlcltdOyAvKiB6aWd6YWcgY29lZiBvcmRlciB0byBuYXR1cmFsIG9yZGVyICovDQorDQorLyogU3VwcHJlc3MgdW5kZWZpbmVkLXN0cnVjdHVyZSBjb21wbGFpbnRzIGlmIG5lY2Vzc2FyeS4gKi8NCisNCisjaWZkZWYgSU5DT01QTEVURV9UWVBFU19CUk9LRU4NCisjaWZuZGVmIEFNX01FTU9SWV9NQU5BR0VSCS8qIG9ubHkgam1lbW1nci5jIGRlZmluZXMgdGhlc2UgKi8NCitzdHJ1Y3QganZpcnRfc2FycmF5X2NvbnRyb2wgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqdmlydF9iYXJyYXlfY29udHJvbCB7IGxvbmcgZHVtbXk7IH07DQorI2VuZGlmDQorI2VuZGlmIC8qIElOQ09NUExFVEVfVFlQRVNfQlJPS0VOICovDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL2pwZWdsaWIuaCBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qcGVnbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMyYWZmOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qcGVnbGliLmgKQEAgLTAsMCArMSwxMTY1IEBACisvKg0KKyAqIGpwZWdsaWIuaA0KKyAqDQorICogQ29weXJpZ2h0IChDKSAxOTkxLTE5OTgsIFRob21hcyBHLiBMYW5lLg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBJbmRlcGVuZGVudCBKUEVHIEdyb3VwJ3Mgc29mdHdhcmUuDQorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgYWNjb21wYW55aW5nIFJFQURNRSBmaWxlLg0KKyAqDQorICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGFwcGxpY2F0aW9uIGludGVyZmFjZSBmb3IgdGhlIEpQRUcgbGlicmFyeS4NCisgKiBNb3N0IGFwcGxpY2F0aW9ucyB1c2luZyB0aGUgbGlicmFyeSBuZWVkIG9ubHkgaW5jbHVkZSB0aGlzIGZpbGUsDQorICogYW5kIHBlcmhhcHMgamVycm9yLmggaWYgdGhleSB3YW50IHRvIGtub3cgdGhlIGV4YWN0IGVycm9yIGNvZGVzLg0KKyAqLw0KKw0KKyNpZm5kZWYgSlBFR0xJQl9IDQorI2RlZmluZSBKUEVHTElCX0gNCisNCisjZGVmaW5lIEZPWElUX1BSRUZJWChvcmlnTmFtZSkgIEZQREZBUElKUEVHXyMjb3JpZ05hbWUNCisNCisjZGVmaW5lIGpjb3B5X2Jsb2NrX3JvdyBGT1hJVF9QUkVGSVgoamNvcHlfYmxvY2tfcm93KQ0KKyNkZWZpbmUgamNvcHlfc2FtcGxlX3Jvd3MgRk9YSVRfUFJFRklYKGpjb3B5X3NhbXBsZV9yb3dzKQ0KKyNkZWZpbmUgamRpdl9yb3VuZF91cCBGT1hJVF9QUkVGSVgoamRpdl9yb3VuZF91cCkNCisjZGVmaW5lIGppbml0XzFwYXNzX3F1YW50aXplciBGT1hJVF9QUkVGSVgoamluaXRfMXBhc3NfcXVhbnRpemVyKQ0KKyNkZWZpbmUgamluaXRfMnBhc3NfcXVhbnRpemVyIEZPWElUX1BSRUZJWChqaW5pdF8ycGFzc19xdWFudGl6ZXIpDQorI2RlZmluZSBqaW5pdF9jb2xvcl9kZWNvbnZlcnRlciBGT1hJVF9QUkVGSVgoamluaXRfY29sb3JfZGVjb252ZXJ0ZXIpDQorI2RlZmluZSBqaW5pdF9kX2NvZWZfY29udHJvbGxlciBGT1hJVF9QUkVGSVgoamluaXRfZF9jb2VmX2NvbnRyb2xsZXIpDQorI2RlZmluZSBqaW5pdF9kX21haW5fY29udHJvbGxlciBGT1hJVF9QUkVGSVgoamluaXRfZF9tYWluX2NvbnRyb2xsZXIpDQorI2RlZmluZSBqaW5pdF9kX3Bvc3RfY29udHJvbGxlciBGT1hJVF9QUkVGSVgoamluaXRfZF9wb3N0X2NvbnRyb2xsZXIpDQorI2RlZmluZSBqaW5pdF9odWZmX2RlY29kZXIgRk9YSVRfUFJFRklYKGppbml0X2h1ZmZfZGVjb2RlcikNCisjZGVmaW5lIGppbml0X2lucHV0X2NvbnRyb2xsZXIgRk9YSVRfUFJFRklYKGppbml0X2lucHV0X2NvbnRyb2xsZXIpDQorI2RlZmluZSBqaW5pdF9pbnZlcnNlX2RjdCBGT1hJVF9QUkVGSVgoamluaXRfaW52ZXJzZV9kY3QpDQorI2RlZmluZSBqaW5pdF9tYXJrZXJfcmVhZGVyIEZPWElUX1BSRUZJWChqaW5pdF9tYXJrZXJfcmVhZGVyKQ0KKyNkZWZpbmUgamluaXRfbWFzdGVyX2RlY29tcHJlc3MgRk9YSVRfUFJFRklYKGppbml0X21hc3Rlcl9kZWNvbXByZXNzKQ0KKyNkZWZpbmUgamluaXRfbWVtb3J5X21nciBGT1hJVF9QUkVGSVgoamluaXRfbWVtb3J5X21ncikNCisjZGVmaW5lIGppbml0X21lcmdlZF91cHNhbXBsZXIgRk9YSVRfUFJFRklYKGppbml0X21lcmdlZF91cHNhbXBsZXIpDQorI2RlZmluZSBqaW5pdF9waHVmZl9kZWNvZGVyIEZPWElUX1BSRUZJWChqaW5pdF9waHVmZl9kZWNvZGVyKQ0KKyNkZWZpbmUgamluaXRfdXBzYW1wbGVyIEZPWElUX1BSRUZJWChqaW5pdF91cHNhbXBsZXIpDQorI2RlZmluZSBqcGVnX0NyZWF0ZURlY29tcHJlc3MgRk9YSVRfUFJFRklYKGpwZWdfQ3JlYXRlRGVjb21wcmVzcykNCisjZGVmaW5lIGpwZWdfYWJvcnQgRk9YSVRfUFJFRklYKGpwZWdfYWJvcnQpDQorI2RlZmluZSBqcGVnX2Fib3J0X2RlY29tcHJlc3MgRk9YSVRfUFJFRklYKGpwZWdfYWJvcnRfZGVjb21wcmVzcykNCisjZGVmaW5lIGpwZWdfYWxsb2NfaHVmZl90YWJsZSBGT1hJVF9QUkVGSVgoanBlZ19hbGxvY19odWZmX3RhYmxlKQ0KKyNkZWZpbmUganBlZ19hbGxvY19xdWFudF90YWJsZSBGT1hJVF9QUkVGSVgoanBlZ19hbGxvY19xdWFudF90YWJsZSkNCisjZGVmaW5lIGpwZWdfY2FsY19vdXRwdXRfZGltZW5zaW9ucyBGT1hJVF9QUkVGSVgoanBlZ19jYWxjX291dHB1dF9kaW1lbnNpb25zKQ0KKyNkZWZpbmUganBlZ19jb25zdW1lX2lucHV0IEZPWElUX1BSRUZJWChqcGVnX2NvbnN1bWVfaW5wdXQpDQorI2RlZmluZSBqcGVnX2Rlc3Ryb3kgRk9YSVRfUFJFRklYKGpwZWdfZGVzdHJveSkNCisjZGVmaW5lIGpwZWdfZGVzdHJveV9kZWNvbXByZXNzIEZPWElUX1BSRUZJWChqcGVnX2Rlc3Ryb3lfZGVjb21wcmVzcykNCisjZGVmaW5lIGpwZWdfZmlsbF9iaXRfYnVmZmVyIEZPWElUX1BSRUZJWChqcGVnX2ZpbGxfYml0X2J1ZmZlcikNCisjZGVmaW5lIGpwZWdfZmluaXNoX2RlY29tcHJlc3MgRk9YSVRfUFJFRklYKGpwZWdfZmluaXNoX2RlY29tcHJlc3MpDQorI2RlZmluZSBqcGVnX2ZpbmlzaF9vdXRwdXQgRk9YSVRfUFJFRklYKGpwZWdfZmluaXNoX291dHB1dCkNCisjZGVmaW5lIGpwZWdfZnJlZV9sYXJnZSBGT1hJVF9QUkVGSVgoanBlZ19mcmVlX2xhcmdlKQ0KKyNkZWZpbmUganBlZ19mcmVlX3NtYWxsIEZPWElUX1BSRUZJWChqcGVnX2ZyZWVfc21hbGwpDQorI2RlZmluZSBqcGVnX2dldF9sYXJnZSBGT1hJVF9QUkVGSVgoanBlZ19nZXRfbGFyZ2UpDQorI2RlZmluZSBqcGVnX2dldF9zbWFsbCBGT1hJVF9QUkVGSVgoanBlZ19nZXRfc21hbGwpDQorI2RlZmluZSBqcGVnX2hhc19tdWx0aXBsZV9zY2FucyBGT1hJVF9QUkVGSVgoanBlZ19oYXNfbXVsdGlwbGVfc2NhbnMpDQorI2RlZmluZSBqcGVnX2h1ZmZfZGVjb2RlIEZPWElUX1BSRUZJWChqcGVnX2h1ZmZfZGVjb2RlKQ0KKyNkZWZpbmUganBlZ19pZGN0XzF4MSBGT1hJVF9QUkVGSVgoanBlZ19pZGN0XzF4MSkNCisjZGVmaW5lIGpwZWdfaWRjdF8yeDIgRk9YSVRfUFJFRklYKGpwZWdfaWRjdF8yeDIpDQorI2RlZmluZSBqcGVnX2lkY3RfNHg0IEZPWElUX1BSRUZJWChqcGVnX2lkY3RfNHg0KQ0KKyNkZWZpbmUganBlZ19pZGN0X2Zsb2F0IEZPWElUX1BSRUZJWChqcGVnX2lkY3RfZmxvYXQpDQorI2RlZmluZSBqcGVnX2lkY3RfaWZhc3QgRk9YSVRfUFJFRklYKGpwZWdfaWRjdF9pZmFzdCkNCisjZGVmaW5lIGpwZWdfaWRjdF9pc2xvdyBGT1hJVF9QUkVGSVgoanBlZ19pZGN0X2lzbG93KQ0KKyNkZWZpbmUganBlZ19pbnB1dF9jb21wbGV0ZSBGT1hJVF9QUkVGSVgoanBlZ19pbnB1dF9jb21wbGV0ZSkNCisjZGVmaW5lIGpwZWdfbWFrZV9kX2Rlcml2ZWRfdGJsIEZPWElUX1BSRUZJWChqcGVnX21ha2VfZF9kZXJpdmVkX3RibCkNCisjZGVmaW5lIGpwZWdfbWVtX2F2YWlsYWJsZSBGT1hJVF9QUkVGSVgoanBlZ19tZW1fYXZhaWxhYmxlKQ0KKyNkZWZpbmUganBlZ19tZW1faW5pdCBGT1hJVF9QUkVGSVgoanBlZ19tZW1faW5pdCkNCisjZGVmaW5lIGpwZWdfbWVtX3Rlcm0gRk9YSVRfUFJFRklYKGpwZWdfbWVtX3Rlcm0pDQorI2RlZmluZSBqcGVnX25hdHVyYWxfb3JkZXIgRk9YSVRfUFJFRklYKGpwZWdfbmF0dXJhbF9vcmRlcikNCisjZGVmaW5lIGpwZWdfbmV3X2NvbG9ybWFwIEZPWElUX1BSRUZJWChqcGVnX25ld19jb2xvcm1hcCkNCisjZGVmaW5lIGpwZWdfb3Blbl9iYWNraW5nX3N0b3JlIEZPWElUX1BSRUZJWChqcGVnX29wZW5fYmFja2luZ19zdG9yZSkNCisjZGVmaW5lIGpwZWdfcmVhZF9jb2VmZmljaWVudHMgRk9YSVRfUFJFRklYKGpwZWdfcmVhZF9jb2VmZmljaWVudHMpDQorI2RlZmluZSBqcGVnX3JlYWRfaGVhZGVyIEZPWElUX1BSRUZJWChqcGVnX3JlYWRfaGVhZGVyKQ0KKyNkZWZpbmUganBlZ19yZWFkX3Jhd19kYXRhIEZPWElUX1BSRUZJWChqcGVnX3JlYWRfcmF3X2RhdGEpDQorI2RlZmluZSBqcGVnX3JlYWRfc2NhbmxpbmVzIEZPWElUX1BSRUZJWChqcGVnX3JlYWRfc2NhbmxpbmVzKQ0KKyNkZWZpbmUganBlZ19yZXN5bmNfdG9fcmVzdGFydCBGT1hJVF9QUkVGSVgoanBlZ19yZXN5bmNfdG9fcmVzdGFydCkNCisjZGVmaW5lIGpwZWdfc2F2ZV9tYXJrZXJzIEZPWElUX1BSRUZJWChqcGVnX3NhdmVfbWFya2VycykNCisjZGVmaW5lIGpwZWdfc2V0X21hcmtlcl9wcm9jZXNzb3IgRk9YSVRfUFJFRklYKGpwZWdfc2V0X21hcmtlcl9wcm9jZXNzb3IpDQorI2RlZmluZSBqcGVnX3N0YXJ0X2RlY29tcHJlc3MgRk9YSVRfUFJFRklYKGpwZWdfc3RhcnRfZGVjb21wcmVzcykNCisjZGVmaW5lIGpwZWdfc3RhcnRfb3V0cHV0IEZPWElUX1BSRUZJWChqcGVnX3N0YXJ0X291dHB1dCkNCisjZGVmaW5lIGpwZWdfc3RkX2Vycm9yIEZPWElUX1BSRUZJWChqcGVnX3N0ZF9lcnJvcikNCisjZGVmaW5lIGpwZWdfc3RkX21lc3NhZ2VfdGFibGUgRk9YSVRfUFJFRklYKGpwZWdfc3RkX21lc3NhZ2VfdGFibGUpDQorI2RlZmluZSBqcGVnX3N0ZGlvX3NyYyBGT1hJVF9QUkVGSVgoanBlZ19zdGRpb19zcmMpDQorI2RlZmluZSBqcm91bmRfdXAgRk9YSVRfUFJFRklYKGpyb3VuZF91cCkNCisjZGVmaW5lIGp6ZXJvX2ZhciBGT1hJVF9QUkVGSVgoanplcm9fZmFyKQ0KKw0KKyAvKg0KKyAqIEZpcnN0IHdlIGluY2x1ZGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCByZWNvcmQgaG93IHRoaXMNCisgKiBpbnN0YWxsYXRpb24gb2YgdGhlIEpQRUcgbGlicmFyeSBpcyBzZXQgdXAuICBqY29uZmlnLmggY2FuIGJlDQorICogZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZm9yIG1hbnkgc3lzdGVtcy4gIGptb3JlY2ZnLmggY29udGFpbnMNCisgKiBtYW51YWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbW9zdCBwZW9wbGUgbmVlZCBub3Qgd29ycnkgYWJvdXQuDQorICovDQorDQorI2lmbmRlZiBKQ09ORklHX0lOQ0xVREVECS8qIGluIGNhc2UgamluY2x1ZGUuaCBhbHJlYWR5IGRpZCAqLw0KKyNpbmNsdWRlICJqY29uZmlnLmgiCQkvKiB3aWRlbHkgdXNlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgKi8NCisjZW5kaWYNCisjaW5jbHVkZSAiam1vcmVjZmcuaCIJCS8qIHNlbGRvbSBjaGFuZ2VkIG9wdGlvbnMgKi8NCisNCisNCisvKiBWZXJzaW9uIElEIGZvciB0aGUgSlBFRyBsaWJyYXJ5Lg0KKyAqIE1pZ2h0IGJlIHVzZWZ1bCBmb3IgdGVzdHMgbGlrZSAiI2lmIEpQRUdfTElCX1ZFUlNJT04gPj0gNjAiLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19MSUJfVkVSU0lPTiAgNjIJLyogVmVyc2lvbiA2YiAqLw0KKw0KKw0KKy8qIFZhcmlvdXMgY29uc3RhbnRzIGRldGVybWluaW5nIHRoZSBzaXplcyBvZiB0aGluZ3MuDQorICogQWxsIG9mIHRoZXNlIGFyZSBzcGVjaWZpZWQgYnkgdGhlIEpQRUcgc3RhbmRhcmQsIHNvIGRvbid0IGNoYW5nZSB0aGVtDQorICogaWYgeW91IHdhbnQgdG8gYmUgY29tcGF0aWJsZS4NCisgKi8NCisNCisjZGVmaW5lIERDVFNJWkUJCSAgICA4CS8qIFRoZSBiYXNpYyBEQ1QgYmxvY2sgaXMgOHg4IHNhbXBsZXMgKi8NCisjZGVmaW5lIERDVFNJWkUyCSAgICA2NAkvKiBEQ1RTSVpFIHNxdWFyZWQ7ICMgb2YgZWxlbWVudHMgaW4gYSBibG9jayAqLw0KKyNkZWZpbmUgTlVNX1FVQU5UX1RCTFMgICAgICA0CS8qIFF1YW50aXphdGlvbiB0YWJsZXMgYXJlIG51bWJlcmVkIDAuLjMgKi8NCisjZGVmaW5lIE5VTV9IVUZGX1RCTFMgICAgICAgNAkvKiBIdWZmbWFuIHRhYmxlcyBhcmUgbnVtYmVyZWQgMC4uMyAqLw0KKyNkZWZpbmUgTlVNX0FSSVRIX1RCTFMgICAgICAxNgkvKiBBcml0aC1jb2RpbmcgdGFibGVzIGFyZSBudW1iZXJlZCAwLi4xNSAqLw0KKyNkZWZpbmUgTUFYX0NPTVBTX0lOX1NDQU4gICA0CS8qIEpQRUcgbGltaXQgb24gIyBvZiBjb21wb25lbnRzIGluIG9uZSBzY2FuICovDQorI2RlZmluZSBNQVhfU0FNUF9GQUNUT1IgICAgIDQJLyogSlBFRyBsaW1pdCBvbiBzYW1wbGluZyBmYWN0b3JzICovDQorLyogVW5mb3J0dW5hdGVseSwgc29tZSBib3pvIGF0IEFkb2JlIHNhdyBubyByZWFzb24gdG8gYmUgYm91bmQgYnkgdGhlIHN0YW5kYXJkOw0KKyAqIHRoZSBQb3N0U2NyaXB0IERDVCBmaWx0ZXIgY2FuIGVtaXQgZmlsZXMgd2l0aCBtYW55IG1vcmUgdGhhbiAxMCBibG9ja3MvTUNVLg0KKyAqIElmIHlvdSBoYXBwZW4gdG8gcnVuIGFjcm9zcyBzdWNoIGEgZmlsZSwgeW91IGNhbiB1cCBEX01BWF9CTE9DS1NfSU5fTUNVDQorICogdG8gaGFuZGxlIGl0LiAgV2UgZXZlbiBsZXQgeW91IGRvIHRoaXMgZnJvbSB0aGUgamNvbmZpZy5oIGZpbGUuICBIb3dldmVyLA0KKyAqIHdlIHN0cm9uZ2x5IGRpc2NvdXJhZ2UgY2hhbmdpbmcgQ19NQVhfQkxPQ0tTX0lOX01DVTsganVzdCBiZWNhdXNlIEFkb2JlDQorICogc29tZXRpbWVzIGVtaXRzIG5vbmNvbXBsaWFudCBmaWxlcyBkb2Vzbid0IG1lYW4geW91IHNob3VsZCB0b28uDQorICovDQorI2RlZmluZSBDX01BWF9CTE9DS1NfSU5fTUNVICAgMTAgLyogY29tcHJlc3NvcidzIGxpbWl0IG9uIGJsb2NrcyBwZXIgTUNVICovDQorI2lmbmRlZiBEX01BWF9CTE9DS1NfSU5fTUNVDQorI2RlZmluZSBEX01BWF9CTE9DS1NfSU5fTUNVICAgMTAgLyogZGVjb21wcmVzc29yJ3MgbGltaXQgb24gYmxvY2tzIHBlciBNQ1UgKi8NCisjZW5kaWYNCisNCisNCisvKiBEYXRhIHN0cnVjdHVyZXMgZm9yIGltYWdlcyAoYXJyYXlzIG9mIHNhbXBsZXMgYW5kIG9mIERDVCBjb2VmZmljaWVudHMpLg0KKyAqIE9uIDgweDg2IG1hY2hpbmVzLCB0aGUgaW1hZ2UgYXJyYXlzIGFyZSB0b28gYmlnIGZvciBuZWFyIHBvaW50ZXJzLA0KKyAqIGJ1dCB0aGUgcG9pbnRlciBhcnJheXMgY2FuIGZpdCBpbiBuZWFyIG1lbW9yeS4NCisgKi8NCisNCit0eXBlZGVmIEpTQU1QTEUgICpKU0FNUFJPVzsJLyogcHRyIHRvIG9uZSBpbWFnZSByb3cgb2YgcGl4ZWwgc2FtcGxlcy4gKi8NCit0eXBlZGVmIEpTQU1QUk9XICpKU0FNUEFSUkFZOwkvKiBwdHIgdG8gc29tZSByb3dzIChhIDItRCBzYW1wbGUgYXJyYXkpICovDQordHlwZWRlZiBKU0FNUEFSUkFZICpKU0FNUElNQUdFOwkvKiBhIDMtRCBzYW1wbGUgYXJyYXk6IHRvcCBpbmRleCBpcyBjb2xvciAqLw0KKw0KK3R5cGVkZWYgSkNPRUYgSkJMT0NLW0RDVFNJWkUyXTsJLyogb25lIGJsb2NrIG9mIGNvZWZmaWNpZW50cyAqLw0KK3R5cGVkZWYgSkJMT0NLICAqSkJMT0NLUk9XOwkvKiBwb2ludGVyIHRvIG9uZSByb3cgb2YgY29lZmZpY2llbnQgYmxvY2tzICovDQordHlwZWRlZiBKQkxPQ0tST1cgKkpCTE9DS0FSUkFZOwkJLyogYSAyLUQgYXJyYXkgb2YgY29lZmZpY2llbnQgYmxvY2tzICovDQordHlwZWRlZiBKQkxPQ0tBUlJBWSAqSkJMT0NLSU1BR0U7CS8qIGEgMy1EIGFycmF5IG9mIGNvZWZmaWNpZW50IGJsb2NrcyAqLw0KKw0KK3R5cGVkZWYgSkNPRUYgICpKQ09FRlBUUjsJLyogdXNlZnVsIGluIGEgY291cGxlIG9mIHBsYWNlcyAqLw0KKw0KKw0KKy8qIFR5cGVzIGZvciBKUEVHIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgYW5kIHdvcmtpbmcgdGFibGVzLiAqLw0KKw0KKw0KKy8qIERDVCBjb2VmZmljaWVudCBxdWFudGl6YXRpb24gdGFibGVzLiAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIC8qIFRoaXMgYXJyYXkgZ2l2ZXMgdGhlIGNvZWZmaWNpZW50IHF1YW50aXplcnMgaW4gbmF0dXJhbCBhcnJheSBvcmRlcg0KKyAgICogKG5vdCB0aGUgemlnemFnIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIHN0b3JlZCBpbiBhIEpQRUcgRFFUIG1hcmtlcikuDQorICAgKiBDQVVUSU9OOiBJSkcgdmVyc2lvbnMgcHJpb3IgdG8gdjZhIGtlcHQgdGhpcyBhcnJheSBpbiB6aWd6YWcgb3JkZXIuDQorICAgKi8NCisgIFVJTlQxNiBxdWFudHZhbFtEQ1RTSVpFMl07CS8qIHF1YW50aXphdGlvbiBzdGVwIGZvciBlYWNoIGNvZWZmaWNpZW50ICovDQorICAvKiBUaGlzIGZpZWxkIGlzIHVzZWQgb25seSBkdXJpbmcgY29tcHJlc3Npb24uICBJdCdzIGluaXRpYWxpemVkIEZBTFNFIHdoZW4NCisgICAqIHRoZSB0YWJsZSBpcyBjcmVhdGVkLCBhbmQgc2V0IFRSVUUgd2hlbiBpdCdzIGJlZW4gb3V0cHV0IHRvIHRoZSBmaWxlLg0KKyAgICogWW91IGNvdWxkIHN1cHByZXNzIG91dHB1dCBvZiBhIHRhYmxlIGJ5IHNldHRpbmcgdGhpcyB0byBUUlVFLg0KKyAgICogKFNlZSBqcGVnX3N1cHByZXNzX3RhYmxlcyBmb3IgYW4gZXhhbXBsZS4pDQorICAgKi8NCisgIGJvb2xlYW4gc2VudF90YWJsZTsJCS8qIFRSVUUgd2hlbiB0YWJsZSBoYXMgYmVlbiBvdXRwdXQgKi8NCit9IEpRVUFOVF9UQkw7DQorDQorDQorLyogSHVmZm1hbiBjb2RpbmcgdGFibGVzLiAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIC8qIFRoZXNlIHR3byBmaWVsZHMgZGlyZWN0bHkgcmVwcmVzZW50IHRoZSBjb250ZW50cyBvZiBhIEpQRUcgREhUIG1hcmtlciAqLw0KKyAgVUlOVDggYml0c1sxN107CQkvKiBiaXRzW2tdID0gIyBvZiBzeW1ib2xzIHdpdGggY29kZXMgb2YgKi8NCisJCQkJLyogbGVuZ3RoIGsgYml0czsgYml0c1swXSBpcyB1bnVzZWQgKi8NCisgIFVJTlQ4IGh1ZmZ2YWxbMjU2XTsJCS8qIFRoZSBzeW1ib2xzLCBpbiBvcmRlciBvZiBpbmNyIGNvZGUgbGVuZ3RoICovDQorICAvKiBUaGlzIGZpZWxkIGlzIHVzZWQgb25seSBkdXJpbmcgY29tcHJlc3Npb24uICBJdCdzIGluaXRpYWxpemVkIEZBTFNFIHdoZW4NCisgICAqIHRoZSB0YWJsZSBpcyBjcmVhdGVkLCBhbmQgc2V0IFRSVUUgd2hlbiBpdCdzIGJlZW4gb3V0cHV0IHRvIHRoZSBmaWxlLg0KKyAgICogWW91IGNvdWxkIHN1cHByZXNzIG91dHB1dCBvZiBhIHRhYmxlIGJ5IHNldHRpbmcgdGhpcyB0byBUUlVFLg0KKyAgICogKFNlZSBqcGVnX3N1cHByZXNzX3RhYmxlcyBmb3IgYW4gZXhhbXBsZS4pDQorICAgKi8NCisgIGJvb2xlYW4gc2VudF90YWJsZTsJCS8qIFRSVUUgd2hlbiB0YWJsZSBoYXMgYmVlbiBvdXRwdXQgKi8NCit9IEpIVUZGX1RCTDsNCisNCisNCisvKiBCYXNpYyBpbmZvIGFib3V0IG9uZSBjb21wb25lbnQgKGNvbG9yIGNoYW5uZWwpLiAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIC8qIFRoZXNlIHZhbHVlcyBhcmUgZml4ZWQgb3ZlciB0aGUgd2hvbGUgaW1hZ2UuICovDQorICAvKiBGb3IgY29tcHJlc3Npb24sIHRoZXkgbXVzdCBiZSBzdXBwbGllZCBieSBwYXJhbWV0ZXIgc2V0dXA7ICovDQorICAvKiBmb3IgZGVjb21wcmVzc2lvbiwgdGhleSBhcmUgcmVhZCBmcm9tIHRoZSBTT0YgbWFya2VyLiAqLw0KKyAgaW50IGNvbXBvbmVudF9pZDsJCS8qIGlkZW50aWZpZXIgZm9yIHRoaXMgY29tcG9uZW50ICgwLi4yNTUpICovDQorICBpbnQgY29tcG9uZW50X2luZGV4OwkJLyogaXRzIGluZGV4IGluIFNPRiBvciBjaW5mby0+Y29tcF9pbmZvW10gKi8NCisgIGludCBoX3NhbXBfZmFjdG9yOwkJLyogaG9yaXpvbnRhbCBzYW1wbGluZyBmYWN0b3IgKDEuLjQpICovDQorICBpbnQgdl9zYW1wX2ZhY3RvcjsJCS8qIHZlcnRpY2FsIHNhbXBsaW5nIGZhY3RvciAoMS4uNCkgKi8NCisgIGludCBxdWFudF90Ymxfbm87CQkvKiBxdWFudGl6YXRpb24gdGFibGUgc2VsZWN0b3IgKDAuLjMpICovDQorICAvKiBUaGVzZSB2YWx1ZXMgbWF5IHZhcnkgYmV0d2VlbiBzY2Fucy4gKi8NCisgIC8qIEZvciBjb21wcmVzc2lvbiwgdGhleSBtdXN0IGJlIHN1cHBsaWVkIGJ5IHBhcmFtZXRlciBzZXR1cDsgKi8NCisgIC8qIGZvciBkZWNvbXByZXNzaW9uLCB0aGV5IGFyZSByZWFkIGZyb20gdGhlIFNPUyBtYXJrZXIuICovDQorICAvKiBUaGUgZGVjb21wcmVzc29yIG91dHB1dCBzaWRlIG1heSBub3QgdXNlIHRoZXNlIHZhcmlhYmxlcy4gKi8NCisgIGludCBkY190Ymxfbm87CQkvKiBEQyBlbnRyb3B5IHRhYmxlIHNlbGVjdG9yICgwLi4zKSAqLw0KKyAgaW50IGFjX3RibF9ubzsJCS8qIEFDIGVudHJvcHkgdGFibGUgc2VsZWN0b3IgKDAuLjMpICovDQorICANCisgIC8qIFJlbWFpbmluZyBmaWVsZHMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgcHJpdmF0ZSBieSBhcHBsaWNhdGlvbnMuICovDQorICANCisgIC8qIFRoZXNlIHZhbHVlcyBhcmUgY29tcHV0ZWQgZHVyaW5nIGNvbXByZXNzaW9uIG9yIGRlY29tcHJlc3Npb24gc3RhcnR1cDogKi8NCisgIC8qIENvbXBvbmVudCdzIHNpemUgaW4gRENUIGJsb2Nrcy4NCisgICAqIEFueSBkdW1teSBibG9ja3MgYWRkZWQgdG8gY29tcGxldGUgYW4gTUNVIGFyZSBub3QgY291bnRlZDsgdGhlcmVmb3JlDQorICAgKiB0aGVzZSB2YWx1ZXMgZG8gbm90IGRlcGVuZCBvbiB3aGV0aGVyIGEgc2NhbiBpcyBpbnRlcmxlYXZlZCBvciBub3QuDQorICAgKi8NCisgIEpESU1FTlNJT04gd2lkdGhfaW5fYmxvY2tzOw0KKyAgSkRJTUVOU0lPTiBoZWlnaHRfaW5fYmxvY2tzOw0KKyAgLyogU2l6ZSBvZiBhIERDVCBibG9jayBpbiBzYW1wbGVzLiAgQWx3YXlzIERDVFNJWkUgZm9yIGNvbXByZXNzaW9uLg0KKyAgICogRm9yIGRlY29tcHJlc3Npb24gdGhpcyBpcyB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IGZyb20gb25lIERDVCBibG9jaywNCisgICAqIHJlZmxlY3RpbmcgYW55IHNjYWxpbmcgd2UgY2hvb3NlIHRvIGFwcGx5IGR1cmluZyB0aGUgSURDVCBzdGVwLg0KKyAgICogVmFsdWVzIG9mIDEsMiw0LDggYXJlIGxpa2VseSB0byBiZSBzdXBwb3J0ZWQuICBOb3RlIHRoYXQgZGlmZmVyZW50DQorICAgKiBjb21wb25lbnRzIG1heSByZWNlaXZlIGRpZmZlcmVudCBJRENUIHNjYWxpbmdzLg0KKyAgICovDQorICBpbnQgRENUX3NjYWxlZF9zaXplOw0KKyAgLyogVGhlIGRvd25zYW1wbGVkIGRpbWVuc2lvbnMgYXJlIHRoZSBjb21wb25lbnQncyBhY3R1YWwsIHVucGFkZGVkIG51bWJlcg0KKyAgICogb2Ygc2FtcGxlcyBhdCB0aGUgbWFpbiBidWZmZXIgKHByZXByb2Nlc3NpbmcvY29tcHJlc3Npb24gaW50ZXJmYWNlKSwgdGh1cw0KKyAgICogZG93bnNhbXBsZWRfd2lkdGggPSBjZWlsKGltYWdlX3dpZHRoICogSGkvSG1heCkNCisgICAqIGFuZCBzaW1pbGFybHkgZm9yIGhlaWdodC4gIEZvciBkZWNvbXByZXNzaW9uLCBJRENUIHNjYWxpbmcgaXMgaW5jbHVkZWQsIHNvDQorICAgKiBkb3duc2FtcGxlZF93aWR0aCA9IGNlaWwoaW1hZ2Vfd2lkdGggKiBIaS9IbWF4ICogRENUX3NjYWxlZF9zaXplL0RDVFNJWkUpDQorICAgKi8NCisgIEpESU1FTlNJT04gZG93bnNhbXBsZWRfd2lkdGg7CSAvKiBhY3R1YWwgd2lkdGggaW4gc2FtcGxlcyAqLw0KKyAgSkRJTUVOU0lPTiBkb3duc2FtcGxlZF9oZWlnaHQ7IC8qIGFjdHVhbCBoZWlnaHQgaW4gc2FtcGxlcyAqLw0KKyAgLyogVGhpcyBmbGFnIGlzIHVzZWQgb25seSBmb3IgZGVjb21wcmVzc2lvbi4gIEluIGNhc2VzIHdoZXJlIHNvbWUgb2YgdGhlDQorICAgKiBjb21wb25lbnRzIHdpbGwgYmUgaWdub3JlZCAoZWcgZ3JheXNjYWxlIG91dHB1dCBmcm9tIFlDYkNyIGltYWdlKSwNCisgICAqIHdlIGNhbiBza2lwIG1vc3QgY29tcHV0YXRpb25zIGZvciB0aGUgdW51c2VkIGNvbXBvbmVudHMuDQorICAgKi8NCisgIGJvb2xlYW4gY29tcG9uZW50X25lZWRlZDsJLyogZG8gd2UgbmVlZCB0aGUgdmFsdWUgb2YgdGhpcyBjb21wb25lbnQ/ICovDQorDQorICAvKiBUaGVzZSB2YWx1ZXMgYXJlIGNvbXB1dGVkIGJlZm9yZSBzdGFydGluZyBhIHNjYW4gb2YgdGhlIGNvbXBvbmVudC4gKi8NCisgIC8qIFRoZSBkZWNvbXByZXNzb3Igb3V0cHV0IHNpZGUgbWF5IG5vdCB1c2UgdGhlc2UgdmFyaWFibGVzLiAqLw0KKyAgaW50IE1DVV93aWR0aDsJCS8qIG51bWJlciBvZiBibG9ja3MgcGVyIE1DVSwgaG9yaXpvbnRhbGx5ICovDQorICBpbnQgTUNVX2hlaWdodDsJCS8qIG51bWJlciBvZiBibG9ja3MgcGVyIE1DVSwgdmVydGljYWxseSAqLw0KKyAgaW50IE1DVV9ibG9ja3M7CQkvKiBNQ1Vfd2lkdGggKiBNQ1VfaGVpZ2h0ICovDQorICBpbnQgTUNVX3NhbXBsZV93aWR0aDsJCS8qIE1DVSB3aWR0aCBpbiBzYW1wbGVzLCBNQ1Vfd2lkdGgqRENUX3NjYWxlZF9zaXplICovDQorICBpbnQgbGFzdF9jb2xfd2lkdGg7CQkvKiAjIG9mIG5vbi1kdW1teSBibG9ja3MgYWNyb3NzIGluIGxhc3QgTUNVICovDQorICBpbnQgbGFzdF9yb3dfaGVpZ2h0OwkJLyogIyBvZiBub24tZHVtbXkgYmxvY2tzIGRvd24gaW4gbGFzdCBNQ1UgKi8NCisNCisgIC8qIFNhdmVkIHF1YW50aXphdGlvbiB0YWJsZSBmb3IgY29tcG9uZW50OyBOVUxMIGlmIG5vbmUgeWV0IHNhdmVkLg0KKyAgICogU2VlIGpkaW5wdXQuYyBjb21tZW50cyBhYm91dCB0aGUgbmVlZCBmb3IgdGhpcyBpbmZvcm1hdGlvbi4NCisgICAqIFRoaXMgZmllbGQgaXMgY3VycmVudGx5IHVzZWQgb25seSBmb3IgZGVjb21wcmVzc2lvbi4NCisgICAqLw0KKyAgSlFVQU5UX1RCTCAqIHF1YW50X3RhYmxlOw0KKw0KKyAgLyogUHJpdmF0ZSBwZXItY29tcG9uZW50IHN0b3JhZ2UgZm9yIERDVCBvciBJRENUIHN1YnN5c3RlbS4gKi8NCisgIHZvaWQgKiBkY3RfdGFibGU7DQorfSBqcGVnX2NvbXBvbmVudF9pbmZvOw0KKw0KKw0KKy8qIFRoZSBzY3JpcHQgZm9yIGVuY29kaW5nIGEgbXVsdGlwbGUtc2NhbiBmaWxlIGlzIGFuIGFycmF5IG9mIHRoZXNlOiAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIGludCBjb21wc19pbl9zY2FuOwkJLyogbnVtYmVyIG9mIGNvbXBvbmVudHMgZW5jb2RlZCBpbiB0aGlzIHNjYW4gKi8NCisgIGludCBjb21wb25lbnRfaW5kZXhbTUFYX0NPTVBTX0lOX1NDQU5dOyAvKiB0aGVpciBTT0YvY29tcF9pbmZvW10gaW5kZXhlcyAqLw0KKyAgaW50IFNzLCBTZTsJCQkvKiBwcm9ncmVzc2l2ZSBKUEVHIHNwZWN0cmFsIHNlbGVjdGlvbiBwYXJtcyAqLw0KKyAgaW50IEFoLCBBbDsJCQkvKiBwcm9ncmVzc2l2ZSBKUEVHIHN1Y2Nlc3NpdmUgYXBwcm94LiBwYXJtcyAqLw0KK30ganBlZ19zY2FuX2luZm87DQorDQorLyogVGhlIGRlY29tcHJlc3NvciBjYW4gc2F2ZSBBUFBuIGFuZCBDT00gbWFya2VycyBpbiBhIGxpc3Qgb2YgdGhlc2U6ICovDQorDQordHlwZWRlZiBzdHJ1Y3QganBlZ19tYXJrZXJfc3RydWN0ICAqIGpwZWdfc2F2ZWRfbWFya2VyX3B0cjsNCisNCitzdHJ1Y3QganBlZ19tYXJrZXJfc3RydWN0IHsNCisgIGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBuZXh0OwkvKiBuZXh0IGluIGxpc3QsIG9yIE5VTEwgKi8NCisgIFVJTlQ4IG1hcmtlcjsJCQkvKiBtYXJrZXIgY29kZTogSlBFR19DT00sIG9yIEpQRUdfQVBQMCtuICovDQorICB1bnNpZ25lZCBpbnQgb3JpZ2luYWxfbGVuZ3RoOwkvKiAjIGJ5dGVzIG9mIGRhdGEgaW4gdGhlIGZpbGUgKi8NCisgIHVuc2lnbmVkIGludCBkYXRhX2xlbmd0aDsJLyogIyBieXRlcyBvZiBkYXRhIHNhdmVkIGF0IGRhdGFbXSAqLw0KKyAgSk9DVEVUICAqIGRhdGE7CQkvKiB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIG1hcmtlciAqLw0KKyAgLyogdGhlIG1hcmtlciBsZW5ndGggd29yZCBpcyBub3QgY291bnRlZCBpbiBkYXRhX2xlbmd0aCBvciBvcmlnaW5hbF9sZW5ndGggKi8NCit9Ow0KKw0KKy8qIEtub3duIGNvbG9yIHNwYWNlcy4gKi8NCisNCit0eXBlZGVmIGVudW0gew0KKwlKQ1NfVU5LTk9XTiwJCS8qIGVycm9yL3Vuc3BlY2lmaWVkICovDQorCUpDU19HUkFZU0NBTEUsCQkvKiBtb25vY2hyb21lICovDQorCUpDU19SR0IsCQkvKiByZWQvZ3JlZW4vYmx1ZSAqLw0KKwlKQ1NfWUNiQ3IsCQkvKiBZL0NiL0NyIChhbHNvIGtub3duIGFzIFlVVikgKi8NCisJSkNTX0NNWUssCQkvKiBDL00vWS9LICovDQorCUpDU19ZQ0NLCQkvKiBZL0NiL0NyL0sgKi8NCit9IEpfQ09MT1JfU1BBQ0U7DQorDQorLyogRENUL0lEQ1QgYWxnb3JpdGhtIG9wdGlvbnMuICovDQorDQordHlwZWRlZiBlbnVtIHsNCisJSkRDVF9JU0xPVywJCS8qIHNsb3cgYnV0IGFjY3VyYXRlIGludGVnZXIgYWxnb3JpdGhtICovDQorCUpEQ1RfSUZBU1QsCQkvKiBmYXN0ZXIsIGxlc3MgYWNjdXJhdGUgaW50ZWdlciBtZXRob2QgKi8NCisJSkRDVF9GTE9BVAkJLyogZmxvYXRpbmctcG9pbnQ6IGFjY3VyYXRlLCBmYXN0IG9uIGZhc3QgSFcgKi8NCit9IEpfRENUX01FVEhPRDsNCisNCisjaWZuZGVmIEpEQ1RfREVGQVVMVAkJLyogbWF5IGJlIG92ZXJyaWRkZW4gaW4gamNvbmZpZy5oICovDQorI2RlZmluZSBKRENUX0RFRkFVTFQgIEpEQ1RfSVNMT1cNCisjZW5kaWYNCisjaWZuZGVmIEpEQ1RfRkFTVEVTVAkJLyogbWF5IGJlIG92ZXJyaWRkZW4gaW4gamNvbmZpZy5oICovDQorI2RlZmluZSBKRENUX0ZBU1RFU1QgIEpEQ1RfSUZBU1QNCisjZW5kaWYNCisNCisvKiBEaXRoZXJpbmcgb3B0aW9ucyBmb3IgZGVjb21wcmVzc2lvbi4gKi8NCisNCit0eXBlZGVmIGVudW0gew0KKwlKRElUSEVSX05PTkUsCQkvKiBubyBkaXRoZXJpbmcgKi8NCisJSkRJVEhFUl9PUkRFUkVELAkvKiBzaW1wbGUgb3JkZXJlZCBkaXRoZXIgKi8NCisJSkRJVEhFUl9GUwkJLyogRmxveWQtU3RlaW5iZXJnIGVycm9yIGRpZmZ1c2lvbiBkaXRoZXIgKi8NCit9IEpfRElUSEVSX01PREU7DQorDQorDQorLyogQ29tbW9uIGZpZWxkcyBiZXR3ZWVuIEpQRUcgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gbWFzdGVyIHN0cnVjdHMuICovDQorDQorI2RlZmluZSBqcGVnX2NvbW1vbl9maWVsZHMgXA0KKyAgc3RydWN0IGpwZWdfZXJyb3JfbWdyICogZXJyOwkvKiBFcnJvciBoYW5kbGVyIG1vZHVsZSAqL1wNCisgIHN0cnVjdCBqcGVnX21lbW9yeV9tZ3IgKiBtZW07CS8qIE1lbW9yeSBtYW5hZ2VyIG1vZHVsZSAqL1wNCisgIHN0cnVjdCBqcGVnX3Byb2dyZXNzX21nciAqIHByb2dyZXNzOyAvKiBQcm9ncmVzcyBtb25pdG9yLCBvciBOVUxMIGlmIG5vbmUgKi9cDQorICB2b2lkICogY2xpZW50X2RhdGE7CQkvKiBBdmFpbGFibGUgZm9yIHVzZSBieSBhcHBsaWNhdGlvbiAqL1wNCisgIGJvb2xlYW4gaXNfZGVjb21wcmVzc29yOwkvKiBTbyBjb21tb24gY29kZSBjYW4gdGVsbCB3aGljaCBpcyB3aGljaCAqL1wNCisgIGludCBnbG9iYWxfc3RhdGUJCS8qIEZvciBjaGVja2luZyBjYWxsIHNlcXVlbmNlIHZhbGlkaXR5ICovDQorDQorLyogUm91dGluZXMgdGhhdCBhcmUgdG8gYmUgdXNlZCBieSBib3RoIGhhbHZlcyBvZiB0aGUgbGlicmFyeSBhcmUgZGVjbGFyZWQNCisgKiB0byByZWNlaXZlIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZS4gIFRoZXJlIGFyZSBubyBhY3R1YWwgaW5zdGFuY2VzIG9mDQorICoganBlZ19jb21tb25fc3RydWN0LCBvbmx5IG9mIGpwZWdfY29tcHJlc3Nfc3RydWN0IGFuZCBqcGVnX2RlY29tcHJlc3Nfc3RydWN0Lg0KKyAqLw0KK3N0cnVjdCBqcGVnX2NvbW1vbl9zdHJ1Y3Qgew0KKyAganBlZ19jb21tb25fZmllbGRzOwkJLyogRmllbGRzIGNvbW1vbiB0byBib3RoIG1hc3RlciBzdHJ1Y3QgdHlwZXMgKi8NCisgIC8qIEFkZGl0aW9uYWwgZmllbGRzIGZvbGxvdyBpbiBhbiBhY3R1YWwganBlZ19jb21wcmVzc19zdHJ1Y3Qgb3INCisgICAqIGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QuICBBbGwgdGhyZWUgc3RydWN0cyBtdXN0IGFncmVlIG9uIHRoZXNlDQorICAgKiBpbml0aWFsIGZpZWxkcyEgIChUaGlzIHdvdWxkIGJlIGEgbG90IGNsZWFuZXIgaW4gQysrLikNCisgICAqLw0KK307DQorDQordHlwZWRlZiBzdHJ1Y3QganBlZ19jb21tb25fc3RydWN0ICogal9jb21tb25fcHRyOw0KK3R5cGVkZWYgc3RydWN0IGpwZWdfY29tcHJlc3Nfc3RydWN0ICogal9jb21wcmVzc19wdHI7DQordHlwZWRlZiBzdHJ1Y3QganBlZ19kZWNvbXByZXNzX3N0cnVjdCAqIGpfZGVjb21wcmVzc19wdHI7DQorDQorDQorLyogTWFzdGVyIHJlY29yZCBmb3IgYSBjb21wcmVzc2lvbiBpbnN0YW5jZSAqLw0KKw0KK3N0cnVjdCBqcGVnX2NvbXByZXNzX3N0cnVjdCB7DQorICBqcGVnX2NvbW1vbl9maWVsZHM7CQkvKiBGaWVsZHMgc2hhcmVkIHdpdGgganBlZ19kZWNvbXByZXNzX3N0cnVjdCAqLw0KKw0KKyAgLyogRGVzdGluYXRpb24gZm9yIGNvbXByZXNzZWQgZGF0YSAqLw0KKyAgc3RydWN0IGpwZWdfZGVzdGluYXRpb25fbWdyICogZGVzdDsNCisNCisgIC8qIERlc2NyaXB0aW9uIG9mIHNvdXJjZSBpbWFnZSAtLS0gdGhlc2UgZmllbGRzIG11c3QgYmUgZmlsbGVkIGluIGJ5DQorICAgKiBvdXRlciBhcHBsaWNhdGlvbiBiZWZvcmUgc3RhcnRpbmcgY29tcHJlc3Npb24uICBpbl9jb2xvcl9zcGFjZSBtdXN0DQorICAgKiBiZSBjb3JyZWN0IGJlZm9yZSB5b3UgY2FuIGV2ZW4gY2FsbCBqcGVnX3NldF9kZWZhdWx0cygpLg0KKyAgICovDQorDQorICBKRElNRU5TSU9OIGltYWdlX3dpZHRoOwkvKiBpbnB1dCBpbWFnZSB3aWR0aCAqLw0KKyAgSkRJTUVOU0lPTiBpbWFnZV9oZWlnaHQ7CS8qIGlucHV0IGltYWdlIGhlaWdodCAqLw0KKyAgaW50IGlucHV0X2NvbXBvbmVudHM7CQkvKiAjIG9mIGNvbG9yIGNvbXBvbmVudHMgaW4gaW5wdXQgaW1hZ2UgKi8NCisgIEpfQ09MT1JfU1BBQ0UgaW5fY29sb3Jfc3BhY2U7CS8qIGNvbG9yc3BhY2Ugb2YgaW5wdXQgaW1hZ2UgKi8NCisNCisgIGRvdWJsZSBpbnB1dF9nYW1tYTsJCS8qIGltYWdlIGdhbW1hIG9mIGlucHV0IGltYWdlICovDQorDQorICAvKiBDb21wcmVzc2lvbiBwYXJhbWV0ZXJzIC0tLSB0aGVzZSBmaWVsZHMgbXVzdCBiZSBzZXQgYmVmb3JlIGNhbGxpbmcNCisgICAqIGpwZWdfc3RhcnRfY29tcHJlc3MoKS4gIFdlIHJlY29tbWVuZCBjYWxsaW5nIGpwZWdfc2V0X2RlZmF1bHRzKCkgdG8NCisgICAqIGluaXRpYWxpemUgZXZlcnl0aGluZyB0byByZWFzb25hYmxlIGRlZmF1bHRzLCB0aGVuIGNoYW5naW5nIGFueXRoaW5nDQorICAgKiB0aGUgYXBwbGljYXRpb24gc3BlY2lmaWNhbGx5IHdhbnRzIHRvIGNoYW5nZS4gIFRoYXQgd2F5IHlvdSB3b24ndCBnZXQNCisgICAqIGJ1cm50IHdoZW4gbmV3IHBhcmFtZXRlcnMgYXJlIGFkZGVkLiAgQWxzbyBub3RlIHRoYXQgdGhlcmUgYXJlIHNldmVyYWwNCisgICAqIGhlbHBlciByb3V0aW5lcyB0byBzaW1wbGlmeSBjaGFuZ2luZyBwYXJhbWV0ZXJzLg0KKyAgICovDQorDQorICBpbnQgZGF0YV9wcmVjaXNpb247CQkvKiBiaXRzIG9mIHByZWNpc2lvbiBpbiBpbWFnZSBkYXRhICovDQorDQorICBpbnQgbnVtX2NvbXBvbmVudHM7CQkvKiAjIG9mIGNvbG9yIGNvbXBvbmVudHMgaW4gSlBFRyBpbWFnZSAqLw0KKyAgSl9DT0xPUl9TUEFDRSBqcGVnX2NvbG9yX3NwYWNlOyAvKiBjb2xvcnNwYWNlIG9mIEpQRUcgaW1hZ2UgKi8NCisNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wX2luZm87DQorICAvKiBjb21wX2luZm9baV0gZGVzY3JpYmVzIGNvbXBvbmVudCB0aGF0IGFwcGVhcnMgaSd0aCBpbiBTT0YgKi8NCisgIA0KKyAgSlFVQU5UX1RCTCAqIHF1YW50X3RibF9wdHJzW05VTV9RVUFOVF9UQkxTXTsNCisgIC8qIHB0cnMgdG8gY29lZmZpY2llbnQgcXVhbnRpemF0aW9uIHRhYmxlcywgb3IgTlVMTCBpZiBub3QgZGVmaW5lZCAqLw0KKyAgDQorICBKSFVGRl9UQkwgKiBkY19odWZmX3RibF9wdHJzW05VTV9IVUZGX1RCTFNdOw0KKyAgSkhVRkZfVEJMICogYWNfaHVmZl90YmxfcHRyc1tOVU1fSFVGRl9UQkxTXTsNCisgIC8qIHB0cnMgdG8gSHVmZm1hbiBjb2RpbmcgdGFibGVzLCBvciBOVUxMIGlmIG5vdCBkZWZpbmVkICovDQorICANCisgIFVJTlQ4IGFyaXRoX2RjX0xbTlVNX0FSSVRIX1RCTFNdOyAvKiBMIHZhbHVlcyBmb3IgREMgYXJpdGgtY29kaW5nIHRhYmxlcyAqLw0KKyAgVUlOVDggYXJpdGhfZGNfVVtOVU1fQVJJVEhfVEJMU107IC8qIFUgdmFsdWVzIGZvciBEQyBhcml0aC1jb2RpbmcgdGFibGVzICovDQorICBVSU5UOCBhcml0aF9hY19LW05VTV9BUklUSF9UQkxTXTsgLyogS3ggdmFsdWVzIGZvciBBQyBhcml0aC1jb2RpbmcgdGFibGVzICovDQorDQorICBpbnQgbnVtX3NjYW5zOwkJLyogIyBvZiBlbnRyaWVzIGluIHNjYW5faW5mbyBhcnJheSAqLw0KKyAgY29uc3QganBlZ19zY2FuX2luZm8gKiBzY2FuX2luZm87IC8qIHNjcmlwdCBmb3IgbXVsdGktc2NhbiBmaWxlLCBvciBOVUxMICovDQorICAvKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBzY2FuX2luZm8gaXMgTlVMTCwgd2hpY2ggY2F1c2VzIGEgc2luZ2xlLXNjYW4NCisgICAqIHNlcXVlbnRpYWwgSlBFRyBmaWxlIHRvIGJlIGVtaXR0ZWQuICBUbyBjcmVhdGUgYSBtdWx0aS1zY2FuIGZpbGUsDQorICAgKiBzZXQgbnVtX3NjYW5zIGFuZCBzY2FuX2luZm8gdG8gcG9pbnQgdG8gYW4gYXJyYXkgb2Ygc2NhbiBkZWZpbml0aW9ucy4NCisgICAqLw0KKw0KKyAgYm9vbGVhbiByYXdfZGF0YV9pbjsJCS8qIFRSVUU9Y2FsbGVyIHN1cHBsaWVzIGRvd25zYW1wbGVkIGRhdGEgKi8NCisgIGJvb2xlYW4gYXJpdGhfY29kZTsJCS8qIFRSVUU9YXJpdGhtZXRpYyBjb2RpbmcsIEZBTFNFPUh1ZmZtYW4gKi8NCisgIGJvb2xlYW4gb3B0aW1pemVfY29kaW5nOwkvKiBUUlVFPW9wdGltaXplIGVudHJvcHkgZW5jb2RpbmcgcGFybXMgKi8NCisgIGJvb2xlYW4gQ0NJUjYwMV9zYW1wbGluZzsJLyogVFJVRT1maXJzdCBzYW1wbGVzIGFyZSBjb3NpdGVkICovDQorICBpbnQgc21vb3RoaW5nX2ZhY3RvcjsJCS8qIDEuLjEwMCwgb3IgMCBmb3Igbm8gaW5wdXQgc21vb3RoaW5nICovDQorICBKX0RDVF9NRVRIT0QgZGN0X21ldGhvZDsJLyogRENUIGFsZ29yaXRobSBzZWxlY3RvciAqLw0KKw0KKyAgLyogVGhlIHJlc3RhcnQgaW50ZXJ2YWwgY2FuIGJlIHNwZWNpZmllZCBpbiBhYnNvbHV0ZSBNQ1VzIGJ5IHNldHRpbmcNCisgICAqIHJlc3RhcnRfaW50ZXJ2YWwsIG9yIGluIE1DVSByb3dzIGJ5IHNldHRpbmcgcmVzdGFydF9pbl9yb3dzDQorICAgKiAoaW4gd2hpY2ggY2FzZSB0aGUgY29ycmVjdCByZXN0YXJ0X2ludGVydmFsIHdpbGwgYmUgZmlndXJlZA0KKyAgICogZm9yIGVhY2ggc2NhbikuDQorICAgKi8NCisgIHVuc2lnbmVkIGludCByZXN0YXJ0X2ludGVydmFsOyAvKiBNQ1VzIHBlciByZXN0YXJ0LCBvciAwIGZvciBubyByZXN0YXJ0ICovDQorICBpbnQgcmVzdGFydF9pbl9yb3dzOwkJLyogaWYgPiAwLCBNQ1Ugcm93cyBwZXIgcmVzdGFydCBpbnRlcnZhbCAqLw0KKw0KKyAgLyogUGFyYW1ldGVycyBjb250cm9sbGluZyBlbWlzc2lvbiBvZiBzcGVjaWFsIG1hcmtlcnMuICovDQorDQorICBib29sZWFuIHdyaXRlX0pGSUZfaGVhZGVyOwkvKiBzaG91bGQgYSBKRklGIG1hcmtlciBiZSB3cml0dGVuPyAqLw0KKyAgVUlOVDggSkZJRl9tYWpvcl92ZXJzaW9uOwkvKiBXaGF0IHRvIHdyaXRlIGZvciB0aGUgSkZJRiB2ZXJzaW9uIG51bWJlciAqLw0KKyAgVUlOVDggSkZJRl9taW5vcl92ZXJzaW9uOw0KKyAgLyogVGhlc2UgdGhyZWUgdmFsdWVzIGFyZSBub3QgdXNlZCBieSB0aGUgSlBFRyBjb2RlLCBtZXJlbHkgY29waWVkICovDQorICAvKiBpbnRvIHRoZSBKRklGIEFQUDAgbWFya2VyLiAgZGVuc2l0eV91bml0IGNhbiBiZSAwIGZvciB1bmtub3duLCAqLw0KKyAgLyogMSBmb3IgZG90cy9pbmNoLCBvciAyIGZvciBkb3RzL2NtLiAgTm90ZSB0aGF0IHRoZSBwaXhlbCBhc3BlY3QgKi8NCisgIC8qIHJhdGlvIGlzIGRlZmluZWQgYnkgWF9kZW5zaXR5L1lfZGVuc2l0eSBldmVuIHdoZW4gZGVuc2l0eV91bml0PTAuICovDQorICBVSU5UOCBkZW5zaXR5X3VuaXQ7CQkvKiBKRklGIGNvZGUgZm9yIHBpeGVsIHNpemUgdW5pdHMgKi8NCisgIFVJTlQxNiBYX2RlbnNpdHk7CQkvKiBIb3Jpem9udGFsIHBpeGVsIGRlbnNpdHkgKi8NCisgIFVJTlQxNiBZX2RlbnNpdHk7CQkvKiBWZXJ0aWNhbCBwaXhlbCBkZW5zaXR5ICovDQorICBib29sZWFuIHdyaXRlX0Fkb2JlX21hcmtlcjsJLyogc2hvdWxkIGFuIEFkb2JlIG1hcmtlciBiZSB3cml0dGVuPyAqLw0KKyAgDQorICAvKiBTdGF0ZSB2YXJpYWJsZTogaW5kZXggb2YgbmV4dCBzY2FubGluZSB0byBiZSB3cml0dGVuIHRvDQorICAgKiBqcGVnX3dyaXRlX3NjYW5saW5lcygpLiAgQXBwbGljYXRpb24gbWF5IHVzZSB0aGlzIHRvIGNvbnRyb2wgaXRzDQorICAgKiBwcm9jZXNzaW5nIGxvb3AsIGUuZy4sICJ3aGlsZSAobmV4dF9zY2FubGluZSA8IGltYWdlX2hlaWdodCkiLg0KKyAgICovDQorDQorICBKRElNRU5TSU9OIG5leHRfc2NhbmxpbmU7CS8qIDAgLi4gaW1hZ2VfaGVpZ2h0LTEgICovDQorDQorICAvKiBSZW1haW5pbmcgZmllbGRzIGFyZSBrbm93biB0aHJvdWdob3V0IGNvbXByZXNzb3IsIGJ1dCBnZW5lcmFsbHkNCisgICAqIHNob3VsZCBub3QgYmUgdG91Y2hlZCBieSBhIHN1cnJvdW5kaW5nIGFwcGxpY2F0aW9uLg0KKyAgICovDQorDQorICAvKg0KKyAgICogVGhlc2UgZmllbGRzIGFyZSBjb21wdXRlZCBkdXJpbmcgY29tcHJlc3Npb24gc3RhcnR1cA0KKyAgICovDQorICBib29sZWFuIHByb2dyZXNzaXZlX21vZGU7CS8qIFRSVUUgaWYgc2NhbiBzY3JpcHQgdXNlcyBwcm9ncmVzc2l2ZSBtb2RlICovDQorICBpbnQgbWF4X2hfc2FtcF9mYWN0b3I7CS8qIGxhcmdlc3QgaF9zYW1wX2ZhY3RvciAqLw0KKyAgaW50IG1heF92X3NhbXBfZmFjdG9yOwkvKiBsYXJnZXN0IHZfc2FtcF9mYWN0b3IgKi8NCisNCisgIEpESU1FTlNJT04gdG90YWxfaU1DVV9yb3dzOwkvKiAjIG9mIGlNQ1Ugcm93cyB0byBiZSBpbnB1dCB0byBjb2VmIGN0bHIgKi8NCisgIC8qIFRoZSBjb2VmZmljaWVudCBjb250cm9sbGVyIHJlY2VpdmVzIGRhdGEgaW4gdW5pdHMgb2YgTUNVIHJvd3MgYXMgZGVmaW5lZA0KKyAgICogZm9yIGZ1bGx5IGludGVybGVhdmVkIHNjYW5zICh3aGV0aGVyIHRoZSBKUEVHIGZpbGUgaXMgaW50ZXJsZWF2ZWQgb3Igbm90KS4NCisgICAqIFRoZXJlIGFyZSB2X3NhbXBfZmFjdG9yICogRENUU0laRSBzYW1wbGUgcm93cyBvZiBlYWNoIGNvbXBvbmVudCBpbiBhbg0KKyAgICogImlNQ1UiIChpbnRlcmxlYXZlZCBNQ1UpIHJvdy4NCisgICAqLw0KKyAgDQorICAvKg0KKyAgICogVGhlc2UgZmllbGRzIGFyZSB2YWxpZCBkdXJpbmcgYW55IG9uZSBzY2FuLg0KKyAgICogVGhleSBkZXNjcmliZSB0aGUgY29tcG9uZW50cyBhbmQgTUNVcyBhY3R1YWxseSBhcHBlYXJpbmcgaW4gdGhlIHNjYW4uDQorICAgKi8NCisgIGludCBjb21wc19pbl9zY2FuOwkJLyogIyBvZiBKUEVHIGNvbXBvbmVudHMgaW4gdGhpcyBzY2FuICovDQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY3VyX2NvbXBfaW5mb1tNQVhfQ09NUFNfSU5fU0NBTl07DQorICAvKiAqY3VyX2NvbXBfaW5mb1tpXSBkZXNjcmliZXMgY29tcG9uZW50IHRoYXQgYXBwZWFycyBpJ3RoIGluIFNPUyAqLw0KKyAgDQorICBKRElNRU5TSU9OIE1DVXNfcGVyX3JvdzsJLyogIyBvZiBNQ1VzIGFjcm9zcyB0aGUgaW1hZ2UgKi8NCisgIEpESU1FTlNJT04gTUNVX3Jvd3NfaW5fc2NhbjsJLyogIyBvZiBNQ1Ugcm93cyBpbiB0aGUgaW1hZ2UgKi8NCisgIA0KKyAgaW50IGJsb2Nrc19pbl9NQ1U7CQkvKiAjIG9mIERDVCBibG9ja3MgcGVyIE1DVSAqLw0KKyAgaW50IE1DVV9tZW1iZXJzaGlwW0NfTUFYX0JMT0NLU19JTl9NQ1VdOw0KKyAgLyogTUNVX21lbWJlcnNoaXBbaV0gaXMgaW5kZXggaW4gY3VyX2NvbXBfaW5mbyBvZiBjb21wb25lbnQgb3duaW5nICovDQorICAvKiBpJ3RoIGJsb2NrIGluIGFuIE1DVSAqLw0KKw0KKyAgaW50IFNzLCBTZSwgQWgsIEFsOwkJLyogcHJvZ3Jlc3NpdmUgSlBFRyBwYXJhbWV0ZXJzIGZvciBzY2FuICovDQorDQorICAvKg0KKyAgICogTGlua3MgdG8gY29tcHJlc3Npb24gc3Vib2JqZWN0cyAobWV0aG9kcyBhbmQgcHJpdmF0ZSB2YXJpYWJsZXMgb2YgbW9kdWxlcykNCisgICAqLw0KKyAgc3RydWN0IGpwZWdfY29tcF9tYXN0ZXIgKiBtYXN0ZXI7DQorICBzdHJ1Y3QganBlZ19jX21haW5fY29udHJvbGxlciAqIG1haW47DQorICBzdHJ1Y3QganBlZ19jX3ByZXBfY29udHJvbGxlciAqIHByZXA7DQorICBzdHJ1Y3QganBlZ19jX2NvZWZfY29udHJvbGxlciAqIGNvZWY7DQorICBzdHJ1Y3QganBlZ19tYXJrZXJfd3JpdGVyICogbWFya2VyOw0KKyAgc3RydWN0IGpwZWdfY29sb3JfY29udmVydGVyICogY2NvbnZlcnQ7DQorICBzdHJ1Y3QganBlZ19kb3duc2FtcGxlciAqIGRvd25zYW1wbGU7DQorICBzdHJ1Y3QganBlZ19mb3J3YXJkX2RjdCAqIGZkY3Q7DQorICBzdHJ1Y3QganBlZ19lbnRyb3B5X2VuY29kZXIgKiBlbnRyb3B5Ow0KKyAganBlZ19zY2FuX2luZm8gKiBzY3JpcHRfc3BhY2U7IC8qIHdvcmtzcGFjZSBmb3IganBlZ19zaW1wbGVfcHJvZ3Jlc3Npb24gKi8NCisgIGludCBzY3JpcHRfc3BhY2Vfc2l6ZTsNCit9Ow0KKw0KKw0KKy8qIE1hc3RlciByZWNvcmQgZm9yIGEgZGVjb21wcmVzc2lvbiBpbnN0YW5jZSAqLw0KKw0KK3N0cnVjdCBqcGVnX2RlY29tcHJlc3Nfc3RydWN0IHsNCisgIGpwZWdfY29tbW9uX2ZpZWxkczsJCS8qIEZpZWxkcyBzaGFyZWQgd2l0aCBqcGVnX2NvbXByZXNzX3N0cnVjdCAqLw0KKw0KKyAgLyogU291cmNlIG9mIGNvbXByZXNzZWQgZGF0YSAqLw0KKyAgc3RydWN0IGpwZWdfc291cmNlX21nciAqIHNyYzsNCisNCisgIC8qIEJhc2ljIGRlc2NyaXB0aW9uIG9mIGltYWdlIC0tLSBmaWxsZWQgaW4gYnkganBlZ19yZWFkX2hlYWRlcigpLiAqLw0KKyAgLyogQXBwbGljYXRpb24gbWF5IGluc3BlY3QgdGhlc2UgdmFsdWVzIHRvIGRlY2lkZSBob3cgdG8gcHJvY2VzcyBpbWFnZS4gKi8NCisNCisgIEpESU1FTlNJT04gaW1hZ2Vfd2lkdGg7CS8qIG5vbWluYWwgaW1hZ2Ugd2lkdGggKGZyb20gU09GIG1hcmtlcikgKi8NCisgIEpESU1FTlNJT04gaW1hZ2VfaGVpZ2h0OwkvKiBub21pbmFsIGltYWdlIGhlaWdodCAqLw0KKyAgaW50IG51bV9jb21wb25lbnRzOwkJLyogIyBvZiBjb2xvciBjb21wb25lbnRzIGluIEpQRUcgaW1hZ2UgKi8NCisgIEpfQ09MT1JfU1BBQ0UganBlZ19jb2xvcl9zcGFjZTsgLyogY29sb3JzcGFjZSBvZiBKUEVHIGltYWdlICovDQorDQorICAvKiBEZWNvbXByZXNzaW9uIHByb2Nlc3NpbmcgcGFyYW1ldGVycyAtLS0gdGhlc2UgZmllbGRzIG11c3QgYmUgc2V0IGJlZm9yZQ0KKyAgICogY2FsbGluZyBqcGVnX3N0YXJ0X2RlY29tcHJlc3MoKS4gIE5vdGUgdGhhdCBqcGVnX3JlYWRfaGVhZGVyKCkgaW5pdGlhbGl6ZXMNCisgICAqIHRoZW0gdG8gZGVmYXVsdCB2YWx1ZXMuDQorICAgKi8NCisNCisgIEpfQ09MT1JfU1BBQ0Ugb3V0X2NvbG9yX3NwYWNlOyAvKiBjb2xvcnNwYWNlIGZvciBvdXRwdXQgKi8NCisNCisgIHVuc2lnbmVkIGludCBzY2FsZV9udW0sIHNjYWxlX2Rlbm9tOyAvKiBmcmFjdGlvbiBieSB3aGljaCB0byBzY2FsZSBpbWFnZSAqLw0KKw0KKyAgZG91YmxlIG91dHB1dF9nYW1tYTsJCS8qIGltYWdlIGdhbW1hIHdhbnRlZCBpbiBvdXRwdXQgKi8NCisNCisgIGJvb2xlYW4gYnVmZmVyZWRfaW1hZ2U7CS8qIFRSVUU9bXVsdGlwbGUgb3V0cHV0IHBhc3NlcyAqLw0KKyAgYm9vbGVhbiByYXdfZGF0YV9vdXQ7CQkvKiBUUlVFPWRvd25zYW1wbGVkIGRhdGEgd2FudGVkICovDQorDQorICBKX0RDVF9NRVRIT0QgZGN0X21ldGhvZDsJLyogSURDVCBhbGdvcml0aG0gc2VsZWN0b3IgKi8NCisgIGJvb2xlYW4gZG9fZmFuY3lfdXBzYW1wbGluZzsJLyogVFJVRT1hcHBseSBmYW5jeSB1cHNhbXBsaW5nICovDQorICBib29sZWFuIGRvX2Jsb2NrX3Ntb290aGluZzsJLyogVFJVRT1hcHBseSBpbnRlcmJsb2NrIHNtb290aGluZyAqLw0KKw0KKyAgYm9vbGVhbiBxdWFudGl6ZV9jb2xvcnM7CS8qIFRSVUU9Y29sb3JtYXBwZWQgb3V0cHV0IHdhbnRlZCAqLw0KKyAgLyogdGhlIGZvbGxvd2luZyBhcmUgaWdub3JlZCBpZiBub3QgcXVhbnRpemVfY29sb3JzOiAqLw0KKyAgSl9ESVRIRVJfTU9ERSBkaXRoZXJfbW9kZTsJLyogdHlwZSBvZiBjb2xvciBkaXRoZXJpbmcgdG8gdXNlICovDQorICBib29sZWFuIHR3b19wYXNzX3F1YW50aXplOwkvKiBUUlVFPXVzZSB0d28tcGFzcyBjb2xvciBxdWFudGl6YXRpb24gKi8NCisgIGludCBkZXNpcmVkX251bWJlcl9vZl9jb2xvcnM7CS8qIG1heCAjIGNvbG9ycyB0byB1c2UgaW4gY3JlYXRlZCBjb2xvcm1hcCAqLw0KKyAgLyogdGhlc2UgYXJlIHNpZ25pZmljYW50IG9ubHkgaW4gYnVmZmVyZWQtaW1hZ2UgbW9kZTogKi8NCisgIGJvb2xlYW4gZW5hYmxlXzFwYXNzX3F1YW50OwkvKiBlbmFibGUgZnV0dXJlIHVzZSBvZiAxLXBhc3MgcXVhbnRpemVyICovDQorICBib29sZWFuIGVuYWJsZV9leHRlcm5hbF9xdWFudDsvKiBlbmFibGUgZnV0dXJlIHVzZSBvZiBleHRlcm5hbCBjb2xvcm1hcCAqLw0KKyAgYm9vbGVhbiBlbmFibGVfMnBhc3NfcXVhbnQ7CS8qIGVuYWJsZSBmdXR1cmUgdXNlIG9mIDItcGFzcyBxdWFudGl6ZXIgKi8NCisNCisgIC8qIERlc2NyaXB0aW9uIG9mIGFjdHVhbCBvdXRwdXQgaW1hZ2UgdGhhdCB3aWxsIGJlIHJldHVybmVkIHRvIGFwcGxpY2F0aW9uLg0KKyAgICogVGhlc2UgZmllbGRzIGFyZSBjb21wdXRlZCBieSBqcGVnX3N0YXJ0X2RlY29tcHJlc3MoKS4NCisgICAqIFlvdSBjYW4gYWxzbyB1c2UganBlZ19jYWxjX291dHB1dF9kaW1lbnNpb25zKCkgdG8gZGV0ZXJtaW5lIHRoZXNlIHZhbHVlcw0KKyAgICogaW4gYWR2YW5jZSBvZiBjYWxsaW5nIGpwZWdfc3RhcnRfZGVjb21wcmVzcygpLg0KKyAgICovDQorDQorICBKRElNRU5TSU9OIG91dHB1dF93aWR0aDsJLyogc2NhbGVkIGltYWdlIHdpZHRoICovDQorICBKRElNRU5TSU9OIG91dHB1dF9oZWlnaHQ7CS8qIHNjYWxlZCBpbWFnZSBoZWlnaHQgKi8NCisgIGludCBvdXRfY29sb3JfY29tcG9uZW50czsJLyogIyBvZiBjb2xvciBjb21wb25lbnRzIGluIG91dF9jb2xvcl9zcGFjZSAqLw0KKyAgaW50IG91dHB1dF9jb21wb25lbnRzOwkvKiAjIG9mIGNvbG9yIGNvbXBvbmVudHMgcmV0dXJuZWQgKi8NCisgIC8qIG91dHB1dF9jb21wb25lbnRzIGlzIDEgKGEgY29sb3JtYXAgaW5kZXgpIHdoZW4gcXVhbnRpemluZyBjb2xvcnM7DQorICAgKiBvdGhlcndpc2UgaXQgZXF1YWxzIG91dF9jb2xvcl9jb21wb25lbnRzLg0KKyAgICovDQorICBpbnQgcmVjX291dGJ1Zl9oZWlnaHQ7CS8qIG1pbiByZWNvbW1lbmRlZCBoZWlnaHQgb2Ygc2NhbmxpbmUgYnVmZmVyICovDQorICAvKiBJZiB0aGUgYnVmZmVyIHBhc3NlZCB0byBqcGVnX3JlYWRfc2NhbmxpbmVzKCkgaXMgbGVzcyB0aGFuIHRoaXMgbWFueSByb3dzDQorICAgKiBoaWdoLCBzcGFjZSBhbmQgdGltZSB3aWxsIGJlIHdhc3RlZCBkdWUgdG8gdW5uZWNlc3NhcnkgZGF0YSBjb3B5aW5nLg0KKyAgICogVXN1YWxseSByZWNfb3V0YnVmX2hlaWdodCB3aWxsIGJlIDEgb3IgMiwgYXQgbW9zdCA0Lg0KKyAgICovDQorDQorICAvKiBXaGVuIHF1YW50aXppbmcgY29sb3JzLCB0aGUgb3V0cHV0IGNvbG9ybWFwIGlzIGRlc2NyaWJlZCBieSB0aGVzZSBmaWVsZHMuDQorICAgKiBUaGUgYXBwbGljYXRpb24gY2FuIHN1cHBseSBhIGNvbG9ybWFwIGJ5IHNldHRpbmcgY29sb3JtYXAgbm9uLU5VTEwgYmVmb3JlDQorICAgKiBjYWxsaW5nIGpwZWdfc3RhcnRfZGVjb21wcmVzczsgb3RoZXJ3aXNlIGEgY29sb3JtYXAgaXMgY3JlYXRlZCBkdXJpbmcNCisgICAqIGpwZWdfc3RhcnRfZGVjb21wcmVzcyBvciBqcGVnX3N0YXJ0X291dHB1dC4NCisgICAqIFRoZSBtYXAgaGFzIG91dF9jb2xvcl9jb21wb25lbnRzIHJvd3MgYW5kIGFjdHVhbF9udW1iZXJfb2ZfY29sb3JzIGNvbHVtbnMuDQorICAgKi8NCisgIGludCBhY3R1YWxfbnVtYmVyX29mX2NvbG9yczsJLyogbnVtYmVyIG9mIGVudHJpZXMgaW4gdXNlICovDQorICBKU0FNUEFSUkFZIGNvbG9ybWFwOwkJLyogVGhlIGNvbG9yIG1hcCBhcyBhIDItRCBwaXhlbCBhcnJheSAqLw0KKw0KKyAgLyogU3RhdGUgdmFyaWFibGVzOiB0aGVzZSB2YXJpYWJsZXMgaW5kaWNhdGUgdGhlIHByb2dyZXNzIG9mIGRlY29tcHJlc3Npb24uDQorICAgKiBUaGUgYXBwbGljYXRpb24gbWF5IGV4YW1pbmUgdGhlc2UgYnV0IG11c3Qgbm90IG1vZGlmeSB0aGVtLg0KKyAgICovDQorDQorICAvKiBSb3cgaW5kZXggb2YgbmV4dCBzY2FubGluZSB0byBiZSByZWFkIGZyb20ganBlZ19yZWFkX3NjYW5saW5lcygpLg0KKyAgICogQXBwbGljYXRpb24gbWF5IHVzZSB0aGlzIHRvIGNvbnRyb2wgaXRzIHByb2Nlc3NpbmcgbG9vcCwgZS5nLiwNCisgICAqICJ3aGlsZSAob3V0cHV0X3NjYW5saW5lIDwgb3V0cHV0X2hlaWdodCkiLg0KKyAgICovDQorICBKRElNRU5TSU9OIG91dHB1dF9zY2FubGluZTsJLyogMCAuLiBvdXRwdXRfaGVpZ2h0LTEgICovDQorDQorICAvKiBDdXJyZW50IGlucHV0IHNjYW4gbnVtYmVyIGFuZCBudW1iZXIgb2YgaU1DVSByb3dzIGNvbXBsZXRlZCBpbiBzY2FuLg0KKyAgICogVGhlc2UgaW5kaWNhdGUgdGhlIHByb2dyZXNzIG9mIHRoZSBkZWNvbXByZXNzb3IgaW5wdXQgc2lkZS4NCisgICAqLw0KKyAgaW50IGlucHV0X3NjYW5fbnVtYmVyOwkvKiBOdW1iZXIgb2YgU09TIG1hcmtlcnMgc2VlbiBzbyBmYXIgKi8NCisgIEpESU1FTlNJT04gaW5wdXRfaU1DVV9yb3c7CS8qIE51bWJlciBvZiBpTUNVIHJvd3MgY29tcGxldGVkICovDQorDQorICAvKiBUaGUgIm91dHB1dCBzY2FuIG51bWJlciIgaXMgdGhlIG5vdGlvbmFsIHNjYW4gYmVpbmcgZGlzcGxheWVkIGJ5IHRoZQ0KKyAgICogb3V0cHV0IHNpZGUuICBUaGUgZGVjb21wcmVzc29yIHdpbGwgbm90IGFsbG93IG91dHB1dCBzY2FuL3JvdyBudW1iZXINCisgICAqIHRvIGdldCBhaGVhZCBvZiBpbnB1dCBzY2FuL3JvdywgYnV0IGl0IGNhbiBmYWxsIGFyYml0cmFyaWx5IGZhciBiZWhpbmQuDQorICAgKi8NCisgIGludCBvdXRwdXRfc2Nhbl9udW1iZXI7CS8qIE5vbWluYWwgc2NhbiBudW1iZXIgYmVpbmcgZGlzcGxheWVkICovDQorICBKRElNRU5TSU9OIG91dHB1dF9pTUNVX3JvdzsJLyogTnVtYmVyIG9mIGlNQ1Ugcm93cyByZWFkICovDQorDQorICAvKiBDdXJyZW50IHByb2dyZXNzaW9uIHN0YXR1cy4gIGNvZWZfYml0c1tjXVtpXSBpbmRpY2F0ZXMgdGhlIHByZWNpc2lvbg0KKyAgICogd2l0aCB3aGljaCBjb21wb25lbnQgYydzIERDVCBjb2VmZmljaWVudCBpIChpbiB6aWd6YWcgb3JkZXIpIGlzIGtub3duLg0KKyAgICogSXQgaXMgLTEgd2hlbiBubyBkYXRhIGhhcyB5ZXQgYmVlbiByZWNlaXZlZCwgb3RoZXJ3aXNlIGl0IGlzIHRoZSBwb2ludA0KKyAgICogdHJhbnNmb3JtIChzaGlmdCkgdmFsdWUgZm9yIHRoZSBtb3N0IHJlY2VudCBzY2FuIG9mIHRoZSBjb2VmZmljaWVudA0KKyAgICogKHRodXMsIDAgYXQgY29tcGxldGlvbiBvZiB0aGUgcHJvZ3Jlc3Npb24pLg0KKyAgICogVGhpcyBwb2ludGVyIGlzIE5VTEwgd2hlbiByZWFkaW5nIGEgbm9uLXByb2dyZXNzaXZlIGZpbGUuDQorICAgKi8NCisgIGludCAoKmNvZWZfYml0cylbRENUU0laRTJdOwkvKiAtMSBvciBjdXJyZW50IEFsIHZhbHVlIGZvciBlYWNoIGNvZWYgKi8NCisNCisgIC8qIEludGVybmFsIEpQRUcgcGFyYW1ldGVycyAtLS0gdGhlIGFwcGxpY2F0aW9uIHVzdWFsbHkgbmVlZCBub3QgbG9vayBhdA0KKyAgICogdGhlc2UgZmllbGRzLiAgTm90ZSB0aGF0IHRoZSBkZWNvbXByZXNzb3Igb3V0cHV0IHNpZGUgbWF5IG5vdCB1c2UNCisgICAqIGFueSBwYXJhbWV0ZXJzIHRoYXQgY2FuIGNoYW5nZSBiZXR3ZWVuIHNjYW5zLg0KKyAgICovDQorDQorICAvKiBRdWFudGl6YXRpb24gYW5kIEh1ZmZtYW4gdGFibGVzIGFyZSBjYXJyaWVkIGZvcndhcmQgYWNyb3NzIGlucHV0DQorICAgKiBkYXRhc3RyZWFtcyB3aGVuIHByb2Nlc3NpbmcgYWJicmV2aWF0ZWQgSlBFRyBkYXRhc3RyZWFtcy4NCisgICAqLw0KKw0KKyAgSlFVQU5UX1RCTCAqIHF1YW50X3RibF9wdHJzW05VTV9RVUFOVF9UQkxTXTsNCisgIC8qIHB0cnMgdG8gY29lZmZpY2llbnQgcXVhbnRpemF0aW9uIHRhYmxlcywgb3IgTlVMTCBpZiBub3QgZGVmaW5lZCAqLw0KKw0KKyAgSkhVRkZfVEJMICogZGNfaHVmZl90YmxfcHRyc1tOVU1fSFVGRl9UQkxTXTsNCisgIEpIVUZGX1RCTCAqIGFjX2h1ZmZfdGJsX3B0cnNbTlVNX0hVRkZfVEJMU107DQorICAvKiBwdHJzIHRvIEh1ZmZtYW4gY29kaW5nIHRhYmxlcywgb3IgTlVMTCBpZiBub3QgZGVmaW5lZCAqLw0KKw0KKyAgLyogVGhlc2UgcGFyYW1ldGVycyBhcmUgbmV2ZXIgY2FycmllZCBhY3Jvc3MgZGF0YXN0cmVhbXMsIHNpbmNlIHRoZXkNCisgICAqIGFyZSBnaXZlbiBpbiBTT0YvU09TIG1hcmtlcnMgb3IgZGVmaW5lZCB0byBiZSByZXNldCBieSBTT0kuDQorICAgKi8NCisNCisgIGludCBkYXRhX3ByZWNpc2lvbjsJCS8qIGJpdHMgb2YgcHJlY2lzaW9uIGluIGltYWdlIGRhdGEgKi8NCisNCisgIGpwZWdfY29tcG9uZW50X2luZm8gKiBjb21wX2luZm87DQorICAvKiBjb21wX2luZm9baV0gZGVzY3JpYmVzIGNvbXBvbmVudCB0aGF0IGFwcGVhcnMgaSd0aCBpbiBTT0YgKi8NCisNCisgIGJvb2xlYW4gcHJvZ3Jlc3NpdmVfbW9kZTsJLyogVFJVRSBpZiBTT0ZuIHNwZWNpZmllcyBwcm9ncmVzc2l2ZSBtb2RlICovDQorICBib29sZWFuIGFyaXRoX2NvZGU7CQkvKiBUUlVFPWFyaXRobWV0aWMgY29kaW5nLCBGQUxTRT1IdWZmbWFuICovDQorDQorICBVSU5UOCBhcml0aF9kY19MW05VTV9BUklUSF9UQkxTXTsgLyogTCB2YWx1ZXMgZm9yIERDIGFyaXRoLWNvZGluZyB0YWJsZXMgKi8NCisgIFVJTlQ4IGFyaXRoX2RjX1VbTlVNX0FSSVRIX1RCTFNdOyAvKiBVIHZhbHVlcyBmb3IgREMgYXJpdGgtY29kaW5nIHRhYmxlcyAqLw0KKyAgVUlOVDggYXJpdGhfYWNfS1tOVU1fQVJJVEhfVEJMU107IC8qIEt4IHZhbHVlcyBmb3IgQUMgYXJpdGgtY29kaW5nIHRhYmxlcyAqLw0KKw0KKyAgdW5zaWduZWQgaW50IHJlc3RhcnRfaW50ZXJ2YWw7IC8qIE1DVXMgcGVyIHJlc3RhcnQgaW50ZXJ2YWwsIG9yIDAgZm9yIG5vIHJlc3RhcnQgKi8NCisNCisgIC8qIFRoZXNlIGZpZWxkcyByZWNvcmQgZGF0YSBvYnRhaW5lZCBmcm9tIG9wdGlvbmFsIG1hcmtlcnMgcmVjb2duaXplZCBieQ0KKyAgICogdGhlIEpQRUcgbGlicmFyeS4NCisgICAqLw0KKyAgYm9vbGVhbiBzYXdfSkZJRl9tYXJrZXI7CS8qIFRSVUUgaWZmIGEgSkZJRiBBUFAwIG1hcmtlciB3YXMgZm91bmQgKi8NCisgIC8qIERhdGEgY29waWVkIGZyb20gSkZJRiBtYXJrZXI7IG9ubHkgdmFsaWQgaWYgc2F3X0pGSUZfbWFya2VyIGlzIFRSVUU6ICovDQorICBVSU5UOCBKRklGX21ham9yX3ZlcnNpb247CS8qIEpGSUYgdmVyc2lvbiBudW1iZXIgKi8NCisgIFVJTlQ4IEpGSUZfbWlub3JfdmVyc2lvbjsNCisgIFVJTlQ4IGRlbnNpdHlfdW5pdDsJCS8qIEpGSUYgY29kZSBmb3IgcGl4ZWwgc2l6ZSB1bml0cyAqLw0KKyAgVUlOVDE2IFhfZGVuc2l0eTsJCS8qIEhvcml6b250YWwgcGl4ZWwgZGVuc2l0eSAqLw0KKyAgVUlOVDE2IFlfZGVuc2l0eTsJCS8qIFZlcnRpY2FsIHBpeGVsIGRlbnNpdHkgKi8NCisgIGJvb2xlYW4gc2F3X0Fkb2JlX21hcmtlcjsJLyogVFJVRSBpZmYgYW4gQWRvYmUgQVBQMTQgbWFya2VyIHdhcyBmb3VuZCAqLw0KKyAgVUlOVDggQWRvYmVfdHJhbnNmb3JtOwkvKiBDb2xvciB0cmFuc2Zvcm0gY29kZSBmcm9tIEFkb2JlIG1hcmtlciAqLw0KKw0KKyAgYm9vbGVhbiBDQ0lSNjAxX3NhbXBsaW5nOwkvKiBUUlVFPWZpcnN0IHNhbXBsZXMgYXJlIGNvc2l0ZWQgKi8NCisNCisgIC8qIEFzaWRlIGZyb20gdGhlIHNwZWNpZmljIGRhdGEgcmV0YWluZWQgZnJvbSBBUFBuIG1hcmtlcnMga25vd24gdG8gdGhlDQorICAgKiBsaWJyYXJ5LCB0aGUgdW5pbnRlcnByZXRlZCBjb250ZW50cyBvZiBhbnkgb3IgYWxsIEFQUG4gYW5kIENPTSBtYXJrZXJzDQorICAgKiBjYW4gYmUgc2F2ZWQgaW4gYSBsaXN0IGZvciBleGFtaW5hdGlvbiBieSB0aGUgYXBwbGljYXRpb24uDQorICAgKi8NCisgIGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXJfbGlzdDsgLyogSGVhZCBvZiBsaXN0IG9mIHNhdmVkIG1hcmtlcnMgKi8NCisNCisgIC8qIFJlbWFpbmluZyBmaWVsZHMgYXJlIGtub3duIHRocm91Z2hvdXQgZGVjb21wcmVzc29yLCBidXQgZ2VuZXJhbGx5DQorICAgKiBzaG91bGQgbm90IGJlIHRvdWNoZWQgYnkgYSBzdXJyb3VuZGluZyBhcHBsaWNhdGlvbi4NCisgICAqLw0KKw0KKyAgLyoNCisgICAqIFRoZXNlIGZpZWxkcyBhcmUgY29tcHV0ZWQgZHVyaW5nIGRlY29tcHJlc3Npb24gc3RhcnR1cA0KKyAgICovDQorICBpbnQgbWF4X2hfc2FtcF9mYWN0b3I7CS8qIGxhcmdlc3QgaF9zYW1wX2ZhY3RvciAqLw0KKyAgaW50IG1heF92X3NhbXBfZmFjdG9yOwkvKiBsYXJnZXN0IHZfc2FtcF9mYWN0b3IgKi8NCisNCisgIGludCBtaW5fRENUX3NjYWxlZF9zaXplOwkvKiBzbWFsbGVzdCBEQ1Rfc2NhbGVkX3NpemUgb2YgYW55IGNvbXBvbmVudCAqLw0KKw0KKyAgSkRJTUVOU0lPTiB0b3RhbF9pTUNVX3Jvd3M7CS8qICMgb2YgaU1DVSByb3dzIGluIGltYWdlICovDQorICAvKiBUaGUgY29lZmZpY2llbnQgY29udHJvbGxlcidzIGlucHV0IGFuZCBvdXRwdXQgcHJvZ3Jlc3MgaXMgbWVhc3VyZWQgaW4NCisgICAqIHVuaXRzIG9mICJpTUNVIiAoaW50ZXJsZWF2ZWQgTUNVKSByb3dzLiAgVGhlc2UgYXJlIHRoZSBzYW1lIGFzIE1DVSByb3dzDQorICAgKiBpbiBmdWxseSBpbnRlcmxlYXZlZCBKUEVHIHNjYW5zLCBidXQgYXJlIHVzZWQgd2hldGhlciB0aGUgc2NhbiBpcw0KKyAgICogaW50ZXJsZWF2ZWQgb3Igbm90LiAgV2UgZGVmaW5lIGFuIGlNQ1Ugcm93IGFzIHZfc2FtcF9mYWN0b3IgRENUIGJsb2NrDQorICAgKiByb3dzIG9mIGVhY2ggY29tcG9uZW50LiAgVGhlcmVmb3JlLCB0aGUgSURDVCBvdXRwdXQgY29udGFpbnMNCisgICAqIHZfc2FtcF9mYWN0b3IqRENUX3NjYWxlZF9zaXplIHNhbXBsZSByb3dzIG9mIGEgY29tcG9uZW50IHBlciBpTUNVIHJvdy4NCisgICAqLw0KKw0KKyAgSlNBTVBMRSAqIHNhbXBsZV9yYW5nZV9saW1pdDsgLyogdGFibGUgZm9yIGZhc3QgcmFuZ2UtbGltaXRpbmcgKi8NCisNCisgIC8qDQorICAgKiBUaGVzZSBmaWVsZHMgYXJlIHZhbGlkIGR1cmluZyBhbnkgb25lIHNjYW4uDQorICAgKiBUaGV5IGRlc2NyaWJlIHRoZSBjb21wb25lbnRzIGFuZCBNQ1VzIGFjdHVhbGx5IGFwcGVhcmluZyBpbiB0aGUgc2Nhbi4NCisgICAqIE5vdGUgdGhhdCB0aGUgZGVjb21wcmVzc29yIG91dHB1dCBzaWRlIG11c3Qgbm90IHVzZSB0aGVzZSBmaWVsZHMuDQorICAgKi8NCisgIGludCBjb21wc19pbl9zY2FuOwkJLyogIyBvZiBKUEVHIGNvbXBvbmVudHMgaW4gdGhpcyBzY2FuICovDQorICBqcGVnX2NvbXBvbmVudF9pbmZvICogY3VyX2NvbXBfaW5mb1tNQVhfQ09NUFNfSU5fU0NBTl07DQorICAvKiAqY3VyX2NvbXBfaW5mb1tpXSBkZXNjcmliZXMgY29tcG9uZW50IHRoYXQgYXBwZWFycyBpJ3RoIGluIFNPUyAqLw0KKw0KKyAgSkRJTUVOU0lPTiBNQ1VzX3Blcl9yb3c7CS8qICMgb2YgTUNVcyBhY3Jvc3MgdGhlIGltYWdlICovDQorICBKRElNRU5TSU9OIE1DVV9yb3dzX2luX3NjYW47CS8qICMgb2YgTUNVIHJvd3MgaW4gdGhlIGltYWdlICovDQorDQorICBpbnQgYmxvY2tzX2luX01DVTsJCS8qICMgb2YgRENUIGJsb2NrcyBwZXIgTUNVICovDQorICBpbnQgTUNVX21lbWJlcnNoaXBbRF9NQVhfQkxPQ0tTX0lOX01DVV07DQorICAvKiBNQ1VfbWVtYmVyc2hpcFtpXSBpcyBpbmRleCBpbiBjdXJfY29tcF9pbmZvIG9mIGNvbXBvbmVudCBvd25pbmcgKi8NCisgIC8qIGkndGggYmxvY2sgaW4gYW4gTUNVICovDQorDQorICBpbnQgU3MsIFNlLCBBaCwgQWw7CQkvKiBwcm9ncmVzc2l2ZSBKUEVHIHBhcmFtZXRlcnMgZm9yIHNjYW4gKi8NCisNCisgIC8qIFRoaXMgZmllbGQgaXMgc2hhcmVkIGJldHdlZW4gZW50cm9weSBkZWNvZGVyIGFuZCBtYXJrZXIgcGFyc2VyLg0KKyAgICogSXQgaXMgZWl0aGVyIHplcm8gb3IgdGhlIGNvZGUgb2YgYSBKUEVHIG1hcmtlciB0aGF0IGhhcyBiZWVuDQorICAgKiByZWFkIGZyb20gdGhlIGRhdGEgc291cmNlLCBidXQgaGFzIG5vdCB5ZXQgYmVlbiBwcm9jZXNzZWQuDQorICAgKi8NCisgIGludCB1bnJlYWRfbWFya2VyOw0KKw0KKyAgLyoNCisgICAqIExpbmtzIHRvIGRlY29tcHJlc3Npb24gc3Vib2JqZWN0cyAobWV0aG9kcywgcHJpdmF0ZSB2YXJpYWJsZXMgb2YgbW9kdWxlcykNCisgICAqLw0KKyAgc3RydWN0IGpwZWdfZGVjb21wX21hc3RlciAqIG1hc3RlcjsNCisgIHN0cnVjdCBqcGVnX2RfbWFpbl9jb250cm9sbGVyICogbWFpbjsNCisgIHN0cnVjdCBqcGVnX2RfY29lZl9jb250cm9sbGVyICogY29lZjsNCisgIHN0cnVjdCBqcGVnX2RfcG9zdF9jb250cm9sbGVyICogcG9zdDsNCisgIHN0cnVjdCBqcGVnX2lucHV0X2NvbnRyb2xsZXIgKiBpbnB1dGN0bDsNCisgIHN0cnVjdCBqcGVnX21hcmtlcl9yZWFkZXIgKiBtYXJrZXI7DQorICBzdHJ1Y3QganBlZ19lbnRyb3B5X2RlY29kZXIgKiBlbnRyb3B5Ow0KKyAgc3RydWN0IGpwZWdfaW52ZXJzZV9kY3QgKiBpZGN0Ow0KKyAgc3RydWN0IGpwZWdfdXBzYW1wbGVyICogdXBzYW1wbGU7DQorICBzdHJ1Y3QganBlZ19jb2xvcl9kZWNvbnZlcnRlciAqIGNjb252ZXJ0Ow0KKyAgc3RydWN0IGpwZWdfY29sb3JfcXVhbnRpemVyICogY3F1YW50aXplOw0KK307DQorDQorDQorLyogIk9iamVjdCIgZGVjbGFyYXRpb25zIGZvciBKUEVHIG1vZHVsZXMgdGhhdCBtYXkgYmUgc3VwcGxpZWQgb3IgY2FsbGVkDQorICogZGlyZWN0bHkgYnkgdGhlIHN1cnJvdW5kaW5nIGFwcGxpY2F0aW9uLg0KKyAqIEFzIHdpdGggYWxsIG9iamVjdHMgaW4gdGhlIEpQRUcgbGlicmFyeSwgdGhlc2Ugc3RydWN0cyBvbmx5IGRlZmluZSB0aGUNCisgKiBwdWJsaWNseSB2aXNpYmxlIG1ldGhvZHMgYW5kIHN0YXRlIHZhcmlhYmxlcyBvZiBhIG1vZHVsZS4gIEFkZGl0aW9uYWwNCisgKiBwcml2YXRlIGZpZWxkcyBtYXkgZXhpc3QgYWZ0ZXIgdGhlIHB1YmxpYyBvbmVzLg0KKyAqLw0KKw0KKw0KKy8qIEVycm9yIGhhbmRsZXIgb2JqZWN0ICovDQorDQorc3RydWN0IGpwZWdfZXJyb3JfbWdyIHsNCisgIC8qIEVycm9yIGV4aXQgaGFuZGxlcjogZG9lcyBub3QgcmV0dXJuIHRvIGNhbGxlciAqLw0KKyAgSk1FVEhPRCh2b2lkLCBlcnJvcl9leGl0LCAoal9jb21tb25fcHRyIGNpbmZvKSk7DQorICAvKiBDb25kaXRpb25hbGx5IGVtaXQgYSB0cmFjZSBvciB3YXJuaW5nIG1lc3NhZ2UgKi8NCisgIEpNRVRIT0Qodm9pZCwgZW1pdF9tZXNzYWdlLCAoal9jb21tb25fcHRyIGNpbmZvLCBpbnQgbXNnX2xldmVsKSk7DQorICAvKiBSb3V0aW5lIHRoYXQgYWN0dWFsbHkgb3V0cHV0cyBhIHRyYWNlIG9yIGVycm9yIG1lc3NhZ2UgKi8NCisgIEpNRVRIT0Qodm9pZCwgb3V0cHV0X21lc3NhZ2UsIChqX2NvbW1vbl9wdHIgY2luZm8pKTsNCisgIC8qIEZvcm1hdCBhIG1lc3NhZ2Ugc3RyaW5nIGZvciB0aGUgbW9zdCByZWNlbnQgSlBFRyBlcnJvciBvciBtZXNzYWdlICovDQorICBKTUVUSE9EKHZvaWQsIGZvcm1hdF9tZXNzYWdlLCAoal9jb21tb25fcHRyIGNpbmZvLCBjaGFyICogYnVmZmVyKSk7DQorI2RlZmluZSBKTVNHX0xFTkdUSF9NQVggIDIwMAkvKiByZWNvbW1lbmRlZCBzaXplIG9mIGZvcm1hdF9tZXNzYWdlIGJ1ZmZlciAqLw0KKyAgLyogUmVzZXQgZXJyb3Igc3RhdGUgdmFyaWFibGVzIGF0IHN0YXJ0IG9mIGEgbmV3IGltYWdlICovDQorICBKTUVUSE9EKHZvaWQsIHJlc2V0X2Vycm9yX21nciwgKGpfY29tbW9uX3B0ciBjaW5mbykpOw0KKyAgDQorICAvKiBUaGUgbWVzc2FnZSBJRCBjb2RlIGFuZCBhbnkgcGFyYW1ldGVycyBhcmUgc2F2ZWQgaGVyZS4NCisgICAqIEEgbWVzc2FnZSBjYW4gaGF2ZSBvbmUgc3RyaW5nIHBhcmFtZXRlciBvciB1cCB0byA4IGludCBwYXJhbWV0ZXJzLg0KKyAgICovDQorICBpbnQgbXNnX2NvZGU7DQorI2RlZmluZSBKTVNHX1NUUl9QQVJNX01BWCAgODANCisgIHVuaW9uIHsNCisgICAgaW50IGlbOF07DQorICAgIGNoYXIgc1tKTVNHX1NUUl9QQVJNX01BWF07DQorICB9IG1zZ19wYXJtOw0KKyAgDQorICAvKiBTdGFuZGFyZCBzdGF0ZSB2YXJpYWJsZXMgZm9yIGVycm9yIGZhY2lsaXR5ICovDQorICANCisgIGludCB0cmFjZV9sZXZlbDsJCS8qIG1heCBtc2dfbGV2ZWwgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCAqLw0KKyAgDQorICAvKiBGb3IgcmVjb3ZlcmFibGUgY29ycnVwdC1kYXRhIGVycm9ycywgd2UgZW1pdCBhIHdhcm5pbmcgbWVzc2FnZSwNCisgICAqIGJ1dCBrZWVwIGdvaW5nIHVubGVzcyBlbWl0X21lc3NhZ2UgY2hvb3NlcyB0byBhYm9ydC4gIGVtaXRfbWVzc2FnZQ0KKyAgICogc2hvdWxkIGNvdW50IHdhcm5pbmdzIGluIG51bV93YXJuaW5ncy4gIFRoZSBzdXJyb3VuZGluZyBhcHBsaWNhdGlvbg0KKyAgICogY2FuIGNoZWNrIGZvciBiYWQgZGF0YSBieSBzZWVpbmcgaWYgbnVtX3dhcm5pbmdzIGlzIG5vbnplcm8gYXQgdGhlDQorICAgKiBlbmQgb2YgcHJvY2Vzc2luZy4NCisgICAqLw0KKyAgbG9uZyBudW1fd2FybmluZ3M7CQkvKiBudW1iZXIgb2YgY29ycnVwdC1kYXRhIHdhcm5pbmdzICovDQorDQorICAvKiBUaGVzZSBmaWVsZHMgcG9pbnQgdG8gdGhlIHRhYmxlKHMpIG9mIGVycm9yIG1lc3NhZ2Ugc3RyaW5ncy4NCisgICAqIEFuIGFwcGxpY2F0aW9uIGNhbiBjaGFuZ2UgdGhlIHRhYmxlIHBvaW50ZXIgdG8gc3dpdGNoIHRvIGEgZGlmZmVyZW50DQorICAgKiBtZXNzYWdlIGxpc3QgKHR5cGljYWxseSwgdG8gY2hhbmdlIHRoZSBsYW5ndWFnZSBpbiB3aGljaCBlcnJvcnMgYXJlDQorICAgKiByZXBvcnRlZCkuICBTb21lIGFwcGxpY2F0aW9ucyBtYXkgd2lzaCB0byBhZGQgYWRkaXRpb25hbCBlcnJvciBjb2Rlcw0KKyAgICogdGhhdCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIEpQRUcgbGlicmFyeSBlcnJvciBtZWNoYW5pc207IHRoZSBzZWNvbmQNCisgICAqIHRhYmxlIHBvaW50ZXIgaXMgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLg0KKyAgICoNCisgICAqIEZpcnN0IHRhYmxlIGluY2x1ZGVzIGFsbCBlcnJvcnMgZ2VuZXJhdGVkIGJ5IEpQRUcgbGlicmFyeSBpdHNlbGYuDQorICAgKiBFcnJvciBjb2RlIDAgaXMgcmVzZXJ2ZWQgZm9yIGEgIm5vIHN1Y2ggZXJyb3Igc3RyaW5nIiBtZXNzYWdlLg0KKyAgICovDQorICBjb25zdCBjaGFyICogY29uc3QgKiBqcGVnX21lc3NhZ2VfdGFibGU7IC8qIExpYnJhcnkgZXJyb3JzICovDQorICBpbnQgbGFzdF9qcGVnX21lc3NhZ2U7ICAgIC8qIFRhYmxlIGNvbnRhaW5zIHN0cmluZ3MgMC4ubGFzdF9qcGVnX21lc3NhZ2UgKi8NCisgIC8qIFNlY29uZCB0YWJsZSBjYW4gYmUgYWRkZWQgYnkgYXBwbGljYXRpb24gKHNlZSBjanBlZy9kanBlZyBmb3IgZXhhbXBsZSkuDQorICAgKiBJdCBjb250YWlucyBzdHJpbmdzIG51bWJlcmVkIGZpcnN0X2FkZG9uX21lc3NhZ2UuLmxhc3RfYWRkb25fbWVzc2FnZS4NCisgICAqLw0KKyAgY29uc3QgY2hhciAqIGNvbnN0ICogYWRkb25fbWVzc2FnZV90YWJsZTsgLyogTm9uLWxpYnJhcnkgZXJyb3JzICovDQorICBpbnQgZmlyc3RfYWRkb25fbWVzc2FnZTsJLyogY29kZSBmb3IgZmlyc3Qgc3RyaW5nIGluIGFkZG9uIHRhYmxlICovDQorICBpbnQgbGFzdF9hZGRvbl9tZXNzYWdlOwkvKiBjb2RlIGZvciBsYXN0IHN0cmluZyBpbiBhZGRvbiB0YWJsZSAqLw0KK307DQorDQorDQorLyogUHJvZ3Jlc3MgbW9uaXRvciBvYmplY3QgKi8NCisNCitzdHJ1Y3QganBlZ19wcm9ncmVzc19tZ3Igew0KKyAgSk1FVEhPRCh2b2lkLCBwcm9ncmVzc19tb25pdG9yLCAoal9jb21tb25fcHRyIGNpbmZvKSk7DQorDQorICBsb25nIHBhc3NfY291bnRlcjsJCS8qIHdvcmsgdW5pdHMgY29tcGxldGVkIGluIHRoaXMgcGFzcyAqLw0KKyAgbG9uZyBwYXNzX2xpbWl0OwkJLyogdG90YWwgbnVtYmVyIG9mIHdvcmsgdW5pdHMgaW4gdGhpcyBwYXNzICovDQorICBpbnQgY29tcGxldGVkX3Bhc3NlczsJCS8qIHBhc3NlcyBjb21wbGV0ZWQgc28gZmFyICovDQorICBpbnQgdG90YWxfcGFzc2VzOwkJLyogdG90YWwgbnVtYmVyIG9mIHBhc3NlcyBleHBlY3RlZCAqLw0KK307DQorDQorDQorLyogRGF0YSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGNvbXByZXNzaW9uICovDQorDQorc3RydWN0IGpwZWdfZGVzdGluYXRpb25fbWdyIHsNCisgIEpPQ1RFVCAqIG5leHRfb3V0cHV0X2J5dGU7CS8qID0+IG5leHQgYnl0ZSB0byB3cml0ZSBpbiBidWZmZXIgKi8NCisgIHNpemVfdCBmcmVlX2luX2J1ZmZlcjsJLyogIyBvZiBieXRlIHNwYWNlcyByZW1haW5pbmcgaW4gYnVmZmVyICovDQorDQorICBKTUVUSE9EKHZvaWQsIGluaXRfZGVzdGluYXRpb24sIChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKyAgSk1FVEhPRChib29sZWFuLCBlbXB0eV9vdXRwdXRfYnVmZmVyLCAoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0Qodm9pZCwgdGVybV9kZXN0aW5hdGlvbiwgKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorfTsNCisNCisNCisvKiBEYXRhIHNvdXJjZSBvYmplY3QgZm9yIGRlY29tcHJlc3Npb24gKi8NCisNCitzdHJ1Y3QganBlZ19zb3VyY2VfbWdyIHsNCisgIGNvbnN0IEpPQ1RFVCAqIG5leHRfaW5wdXRfYnl0ZTsgLyogPT4gbmV4dCBieXRlIHRvIHJlYWQgZnJvbSBidWZmZXIgKi8NCisgIHNpemVfdCBieXRlc19pbl9idWZmZXI7CS8qICMgb2YgYnl0ZXMgcmVtYWluaW5nIGluIGJ1ZmZlciAqLw0KKw0KKyAgSk1FVEhPRCh2b2lkLCBpbml0X3NvdXJjZSwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisgIEpNRVRIT0QoYm9vbGVhbiwgZmlsbF9pbnB1dF9idWZmZXIsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKHZvaWQsIHNraXBfaW5wdXRfZGF0YSwgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGxvbmcgbnVtX2J5dGVzKSk7DQorICBKTUVUSE9EKGJvb2xlYW4sIHJlc3luY190b19yZXN0YXJ0LCAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgaW50IGRlc2lyZWQpKTsNCisgIEpNRVRIT0Qodm9pZCwgdGVybV9zb3VyY2UsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorfTsNCisNCisNCisvKiBNZW1vcnkgbWFuYWdlciBvYmplY3QuDQorICogQWxsb2NhdGVzICJzbWFsbCIgb2JqZWN0cyAoYSBmZXcgSyB0b3RhbCksICJsYXJnZSIgb2JqZWN0cyAodGVucyBvZiBLKSwNCisgKiBhbmQgInJlYWxseSBiaWciIG9iamVjdHMgKHZpcnR1YWwgYXJyYXlzIHdpdGggYmFja2luZyBzdG9yZSBpZiBuZWVkZWQpLg0KKyAqIFRoZSBtZW1vcnkgbWFuYWdlciBkb2VzIG5vdCBhbGxvdyBpbmRpdmlkdWFsIG9iamVjdHMgdG8gYmUgZnJlZWQ7IHJhdGhlciwNCisgKiBlYWNoIGNyZWF0ZWQgb2JqZWN0IGlzIGFzc2lnbmVkIHRvIGEgcG9vbCwgYW5kIHdob2xlIHBvb2xzIGNhbiBiZSBmcmVlZA0KKyAqIGF0IG9uY2UuICBUaGlzIGlzIGZhc3RlciBhbmQgbW9yZSBjb252ZW5pZW50IHRoYW4gcmVtZW1iZXJpbmcgZXhhY3RseSB3aGF0DQorICogdG8gZnJlZSwgZXNwZWNpYWxseSB3aGVyZSBtYWxsb2MoKS9mcmVlKCkgYXJlIG5vdCB0b28gc3BlZWR5Lg0KKyAqIE5COiBhbGxvYyByb3V0aW5lcyBuZXZlciByZXR1cm4gTlVMTC4gIFRoZXkgZXhpdCB0byBlcnJvcl9leGl0IGlmIG5vdA0KKyAqIHN1Y2Nlc3NmdWwuDQorICovDQorDQorI2RlZmluZSBKUE9PTF9QRVJNQU5FTlQJMAkvKiBsYXN0cyB1bnRpbCBtYXN0ZXIgcmVjb3JkIGlzIGRlc3Ryb3llZCAqLw0KKyNkZWZpbmUgSlBPT0xfSU1BR0UJMQkvKiBsYXN0cyB1bnRpbCBkb25lIHdpdGggaW1hZ2UvZGF0YXN0cmVhbSAqLw0KKyNkZWZpbmUgSlBPT0xfTlVNUE9PTFMJMg0KKw0KK3R5cGVkZWYgc3RydWN0IGp2aXJ0X3NhcnJheV9jb250cm9sICoganZpcnRfc2FycmF5X3B0cjsNCit0eXBlZGVmIHN0cnVjdCBqdmlydF9iYXJyYXlfY29udHJvbCAqIGp2aXJ0X2JhcnJheV9wdHI7DQorDQorDQorc3RydWN0IGpwZWdfbWVtb3J5X21nciB7DQorICAvKiBNZXRob2QgcG9pbnRlcnMgKi8NCisgIEpNRVRIT0Qodm9pZCAqLCBhbGxvY19zbWFsbCwgKGpfY29tbW9uX3B0ciBjaW5mbywgaW50IHBvb2xfaWQsDQorCQkJCXNpemVfdCBzaXplb2ZvYmplY3QpKTsNCisgIEpNRVRIT0Qodm9pZCAgKiwgYWxsb2NfbGFyZ2UsIChqX2NvbW1vbl9wdHIgY2luZm8sIGludCBwb29sX2lkLA0KKwkJCQkgICAgIHNpemVfdCBzaXplb2ZvYmplY3QpKTsNCisgIEpNRVRIT0QoSlNBTVBBUlJBWSwgYWxsb2Nfc2FycmF5LCAoal9jb21tb25fcHRyIGNpbmZvLCBpbnQgcG9vbF9pZCwNCisJCQkJICAgICBKRElNRU5TSU9OIHNhbXBsZXNwZXJyb3csDQorCQkJCSAgICAgSkRJTUVOU0lPTiBudW1yb3dzKSk7DQorICBKTUVUSE9EKEpCTE9DS0FSUkFZLCBhbGxvY19iYXJyYXksIChqX2NvbW1vbl9wdHIgY2luZm8sIGludCBwb29sX2lkLA0KKwkJCQkgICAgICBKRElNRU5TSU9OIGJsb2Nrc3BlcnJvdywNCisJCQkJICAgICAgSkRJTUVOU0lPTiBudW1yb3dzKSk7DQorICBKTUVUSE9EKGp2aXJ0X3NhcnJheV9wdHIsIHJlcXVlc3RfdmlydF9zYXJyYXksIChqX2NvbW1vbl9wdHIgY2luZm8sDQorCQkJCQkJICBpbnQgcG9vbF9pZCwNCisJCQkJCQkgIGJvb2xlYW4gcHJlX3plcm8sDQorCQkJCQkJICBKRElNRU5TSU9OIHNhbXBsZXNwZXJyb3csDQorCQkJCQkJICBKRElNRU5TSU9OIG51bXJvd3MsDQorCQkJCQkJICBKRElNRU5TSU9OIG1heGFjY2VzcykpOw0KKyAgSk1FVEhPRChqdmlydF9iYXJyYXlfcHRyLCByZXF1ZXN0X3ZpcnRfYmFycmF5LCAoal9jb21tb25fcHRyIGNpbmZvLA0KKwkJCQkJCSAgaW50IHBvb2xfaWQsDQorCQkJCQkJICBib29sZWFuIHByZV96ZXJvLA0KKwkJCQkJCSAgSkRJTUVOU0lPTiBibG9ja3NwZXJyb3csDQorCQkJCQkJICBKRElNRU5TSU9OIG51bXJvd3MsDQorCQkJCQkJICBKRElNRU5TSU9OIG1heGFjY2VzcykpOw0KKyAgSk1FVEhPRCh2b2lkLCByZWFsaXplX3ZpcnRfYXJyYXlzLCAoal9jb21tb25fcHRyIGNpbmZvKSk7DQorICBKTUVUSE9EKEpTQU1QQVJSQVksIGFjY2Vzc192aXJ0X3NhcnJheSwgKGpfY29tbW9uX3B0ciBjaW5mbywNCisJCQkJCSAgIGp2aXJ0X3NhcnJheV9wdHIgcHRyLA0KKwkJCQkJICAgSkRJTUVOU0lPTiBzdGFydF9yb3csDQorCQkJCQkgICBKRElNRU5TSU9OIG51bV9yb3dzLA0KKwkJCQkJICAgYm9vbGVhbiB3cml0YWJsZSkpOw0KKyAgSk1FVEhPRChKQkxPQ0tBUlJBWSwgYWNjZXNzX3ZpcnRfYmFycmF5LCAoal9jb21tb25fcHRyIGNpbmZvLA0KKwkJCQkJICAgIGp2aXJ0X2JhcnJheV9wdHIgcHRyLA0KKwkJCQkJICAgIEpESU1FTlNJT04gc3RhcnRfcm93LA0KKwkJCQkJICAgIEpESU1FTlNJT04gbnVtX3Jvd3MsDQorCQkJCQkgICAgYm9vbGVhbiB3cml0YWJsZSkpOw0KKyAgSk1FVEhPRCh2b2lkLCBmcmVlX3Bvb2wsIChqX2NvbW1vbl9wdHIgY2luZm8sIGludCBwb29sX2lkKSk7DQorICBKTUVUSE9EKHZvaWQsIHNlbGZfZGVzdHJ1Y3QsIChqX2NvbW1vbl9wdHIgY2luZm8pKTsNCisNCisgIC8qIExpbWl0IG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZvciB0aGlzIEpQRUcgb2JqZWN0LiAgKE5vdGUgdGhhdCB0aGlzIGlzDQorICAgKiBtZXJlbHkgYWR2aXNvcnksIG5vdCBhIGd1YXJhbnRlZWQgbWF4aW11bTsgaXQgb25seSBhZmZlY3RzIHRoZSBzcGFjZQ0KKyAgICogdXNlZCBmb3IgdmlydHVhbC1hcnJheSBidWZmZXJzLikgIE1heSBiZSBjaGFuZ2VkIGJ5IG91dGVyIGFwcGxpY2F0aW9uDQorICAgKiBhZnRlciBjcmVhdGluZyB0aGUgSlBFRyBvYmplY3QuDQorICAgKi8NCisgIGxvbmcgbWF4X21lbW9yeV90b191c2U7DQorDQorICAvKiBNYXhpbXVtIGFsbG9jYXRpb24gcmVxdWVzdCBhY2NlcHRlZCBieSBhbGxvY19sYXJnZS4gKi8NCisgIGxvbmcgbWF4X2FsbG9jX2NodW5rOw0KK307DQorDQorDQorLyogUm91dGluZSBzaWduYXR1cmUgZm9yIGFwcGxpY2F0aW9uLXN1cHBsaWVkIG1hcmtlciBwcm9jZXNzaW5nIG1ldGhvZHMuDQorICogTmVlZCBub3QgcGFzcyBtYXJrZXIgY29kZSBzaW5jZSBpdCBpcyBzdG9yZWQgaW4gY2luZm8tPnVucmVhZF9tYXJrZXIuDQorICovDQordHlwZWRlZiBKTUVUSE9EKGJvb2xlYW4sIGpwZWdfbWFya2VyX3BhcnNlcl9tZXRob2QsIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorDQorDQorLyogRGVjbGFyYXRpb25zIGZvciByb3V0aW5lcyBjYWxsZWQgYnkgYXBwbGljYXRpb24uDQorICogVGhlIEpQUCBtYWNybyBoaWRlcyBwcm90b3R5cGUgcGFyYW1ldGVycyBmcm9tIGNvbXBpbGVycyB0aGF0IGNhbid0IGNvcGUuDQorICogTm90ZSBKUFAgcmVxdWlyZXMgZG91YmxlIHBhcmVudGhlc2VzLg0KKyAqLw0KKw0KKyNpZmRlZiBIQVZFX1BST1RPVFlQRVMNCisjZGVmaW5lIEpQUChhcmdsaXN0KQlhcmdsaXN0DQorI2Vsc2UNCisjZGVmaW5lIEpQUChhcmdsaXN0KQkoKQ0KKyNlbmRpZg0KKw0KKw0KKy8qIFNob3J0IGZvcm1zIG9mIGV4dGVybmFsIG5hbWVzIGZvciBzeXN0ZW1zIHdpdGggYnJhaW4tZGFtYWdlZCBsaW5rZXJzLg0KKyAqIFdlIHNob3J0ZW4gZXh0ZXJuYWwgbmFtZXMgdG8gYmUgdW5pcXVlIGluIHRoZSBmaXJzdCBzaXggbGV0dGVycywgd2hpY2gNCisgKiBpcyBnb29kIGVub3VnaCBmb3IgYWxsIGtub3duIHN5c3RlbXMuDQorICogKElmIHlvdXIgY29tcGlsZXIgaXRzZWxmIG5lZWRzIG5hbWVzIHRvIGJlIHVuaXF1ZSBpbiBsZXNzIHRoYW4gMTUgDQorICogY2hhcmFjdGVycywgeW91IGFyZSBvdXQgb2YgbHVjay4gIEdldCBhIGJldHRlciBjb21waWxlci4pDQorICovDQorDQorI2lmZGVmIE5FRURfU0hPUlRfRVhURVJOQUxfTkFNRVMNCisjZGVmaW5lIGpwZWdfc3RkX2Vycm9yCQlqU3RkRXJyb3INCisjZGVmaW5lIGpwZWdfQ3JlYXRlQ29tcHJlc3MJakNyZWFDb21wcmVzcw0KKyNkZWZpbmUganBlZ19DcmVhdGVEZWNvbXByZXNzCWpDcmVhRGVjb21wcmVzcw0KKyNkZWZpbmUganBlZ19kZXN0cm95X2NvbXByZXNzCWpEZXN0Q29tcHJlc3MNCisjZGVmaW5lIGpwZWdfZGVzdHJveV9kZWNvbXByZXNzCWpEZXN0RGVjb21wcmVzcw0KKyNkZWZpbmUganBlZ19zdGRpb19kZXN0CQlqU3RkRGVzdA0KKyNkZWZpbmUganBlZ19zdGRpb19zcmMJCWpTdGRTcmMNCisjZGVmaW5lIGpwZWdfc2V0X2RlZmF1bHRzCWpTZXREZWZhdWx0cw0KKyNkZWZpbmUganBlZ19zZXRfY29sb3JzcGFjZQlqU2V0Q29sb3JzcGFjZQ0KKyNkZWZpbmUganBlZ19kZWZhdWx0X2NvbG9yc3BhY2UJakRlZkNvbG9yc3BhY2UNCisjZGVmaW5lIGpwZWdfc2V0X3F1YWxpdHkJalNldFF1YWxpdHkNCisjZGVmaW5lIGpwZWdfc2V0X2xpbmVhcl9xdWFsaXR5CWpTZXRMUXVhbGl0eQ0KKyNkZWZpbmUganBlZ19hZGRfcXVhbnRfdGFibGUJakFkZFF1YW50VGFibGUNCisjZGVmaW5lIGpwZWdfcXVhbGl0eV9zY2FsaW5nCWpRdWFsaXR5U2NhbGluZw0KKyNkZWZpbmUganBlZ19zaW1wbGVfcHJvZ3Jlc3Npb24JalNpbVByb2dyZXNzDQorI2RlZmluZSBqcGVnX3N1cHByZXNzX3RhYmxlcwlqU3VwcHJlc3NUYWJsZXMNCisjZGVmaW5lIGpwZWdfYWxsb2NfcXVhbnRfdGFibGUJakFsY1FUYWJsZQ0KKyNkZWZpbmUganBlZ19hbGxvY19odWZmX3RhYmxlCWpBbGNIVGFibGUNCisjZGVmaW5lIGpwZWdfc3RhcnRfY29tcHJlc3MJalN0cnRDb21wcmVzcw0KKyNkZWZpbmUganBlZ193cml0ZV9zY2FubGluZXMJaldydFNjYW5saW5lcw0KKyNkZWZpbmUganBlZ19maW5pc2hfY29tcHJlc3MJakZpbkNvbXByZXNzDQorI2RlZmluZSBqcGVnX3dyaXRlX3Jhd19kYXRhCWpXcnRSYXdEYXRhDQorI2RlZmluZSBqcGVnX3dyaXRlX21hcmtlcglqV3J0TWFya2VyDQorI2RlZmluZSBqcGVnX3dyaXRlX21faGVhZGVyCWpXcnRNSGVhZGVyDQorI2RlZmluZSBqcGVnX3dyaXRlX21fYnl0ZQlqV3J0TUJ5dGUNCisjZGVmaW5lIGpwZWdfd3JpdGVfdGFibGVzCWpXcnRUYWJsZXMNCisjZGVmaW5lIGpwZWdfcmVhZF9oZWFkZXIJalJlYWRIZWFkZXINCisjZGVmaW5lIGpwZWdfc3RhcnRfZGVjb21wcmVzcwlqU3RydERlY29tcHJlc3MNCisjZGVmaW5lIGpwZWdfcmVhZF9zY2FubGluZXMJalJlYWRTY2FubGluZXMNCisjZGVmaW5lIGpwZWdfZmluaXNoX2RlY29tcHJlc3MJakZpbkRlY29tcHJlc3MNCisjZGVmaW5lIGpwZWdfcmVhZF9yYXdfZGF0YQlqUmVhZFJhd0RhdGENCisjZGVmaW5lIGpwZWdfaGFzX211bHRpcGxlX3NjYW5zCWpIYXNNdWx0U2NuDQorI2RlZmluZSBqcGVnX3N0YXJ0X291dHB1dAlqU3RydE91dHB1dA0KKyNkZWZpbmUganBlZ19maW5pc2hfb3V0cHV0CWpGaW5PdXRwdXQNCisjZGVmaW5lIGpwZWdfaW5wdXRfY29tcGxldGUJakluQ29tcGxldGUNCisjZGVmaW5lIGpwZWdfbmV3X2NvbG9ybWFwCWpOZXdDTWFwDQorI2RlZmluZSBqcGVnX2NvbnN1bWVfaW5wdXQJakNvbnN1bWVJbnB1dA0KKyNkZWZpbmUganBlZ19jYWxjX291dHB1dF9kaW1lbnNpb25zCWpDYWxjRGltZW5zaW9ucw0KKyNkZWZpbmUganBlZ19zYXZlX21hcmtlcnMJalNhdmVNYXJrZXJzDQorI2RlZmluZSBqcGVnX3NldF9tYXJrZXJfcHJvY2Vzc29yCWpTZXRNYXJrZXINCisjZGVmaW5lIGpwZWdfcmVhZF9jb2VmZmljaWVudHMJalJlYWRDb2Vmcw0KKyNkZWZpbmUganBlZ193cml0ZV9jb2VmZmljaWVudHMJaldydENvZWZzDQorI2RlZmluZSBqcGVnX2NvcHlfY3JpdGljYWxfcGFyYW1ldGVycwlqQ29weUNyaXQNCisjZGVmaW5lIGpwZWdfYWJvcnRfY29tcHJlc3MJakFicnRDb21wcmVzcw0KKyNkZWZpbmUganBlZ19hYm9ydF9kZWNvbXByZXNzCWpBYnJ0RGVjb21wcmVzcw0KKyNkZWZpbmUganBlZ19hYm9ydAkJakFib3J0DQorI2RlZmluZSBqcGVnX2Rlc3Ryb3kJCWpEZXN0cm95DQorI2RlZmluZSBqcGVnX3Jlc3luY190b19yZXN0YXJ0CWpSZXN5bmNSZXN0YXJ0DQorI2VuZGlmIC8qIE5FRURfU0hPUlRfRVhURVJOQUxfTkFNRVMgKi8NCisNCisNCisvKiBEZWZhdWx0IGVycm9yLW1hbmFnZW1lbnQgc2V0dXAgKi8NCitFWFRFUk4oc3RydWN0IGpwZWdfZXJyb3JfbWdyICopIGpwZWdfc3RkX2Vycm9yDQorCUpQUCgoc3RydWN0IGpwZWdfZXJyb3JfbWdyICogZXJyKSk7DQorDQorLyogSW5pdGlhbGl6YXRpb24gb2YgSlBFRyBjb21wcmVzc2lvbiBvYmplY3RzLg0KKyAqIGpwZWdfY3JlYXRlX2NvbXByZXNzKCkgYW5kIGpwZWdfY3JlYXRlX2RlY29tcHJlc3MoKSBhcmUgdGhlIGV4cG9ydGVkDQorICogbmFtZXMgdGhhdCBhcHBsaWNhdGlvbnMgc2hvdWxkIGNhbGwuICBUaGVzZSBleHBhbmQgdG8gY2FsbHMgb24NCisgKiBqcGVnX0NyZWF0ZUNvbXByZXNzIGFuZCBqcGVnX0NyZWF0ZURlY29tcHJlc3Mgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcGFzc2VkIGZvciB2ZXJzaW9uIG1pc21hdGNoIGNoZWNraW5nLg0KKyAqIE5COiB5b3UgbXVzdCBzZXQgdXAgdGhlIGVycm9yLW1hbmFnZXIgQkVGT1JFIGNhbGxpbmcganBlZ19jcmVhdGVfeHh4Lg0KKyAqLw0KKyNkZWZpbmUganBlZ19jcmVhdGVfY29tcHJlc3MoY2luZm8pIFwNCisgICAganBlZ19DcmVhdGVDb21wcmVzcygoY2luZm8pLCBKUEVHX0xJQl9WRVJTSU9OLCBcDQorCQkJKHNpemVfdCkgc2l6ZW9mKHN0cnVjdCBqcGVnX2NvbXByZXNzX3N0cnVjdCkpDQorI2RlZmluZSBqcGVnX2NyZWF0ZV9kZWNvbXByZXNzKGNpbmZvKSBcDQorICAgIGpwZWdfQ3JlYXRlRGVjb21wcmVzcygoY2luZm8pLCBKUEVHX0xJQl9WRVJTSU9OLCBcDQorCQkJICAoc2l6ZV90KSBzaXplb2Yoc3RydWN0IGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QpKQ0KK0VYVEVSTih2b2lkKSBqcGVnX0NyZWF0ZUNvbXByZXNzIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sDQorCQkJCSAgICAgIGludCB2ZXJzaW9uLCBzaXplX3Qgc3RydWN0c2l6ZSkpOw0KK0VYVEVSTih2b2lkKSBqcGVnX0NyZWF0ZURlY29tcHJlc3MgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJaW50IHZlcnNpb24sIHNpemVfdCBzdHJ1Y3RzaXplKSk7DQorLyogRGVzdHJ1Y3Rpb24gb2YgSlBFRyBjb21wcmVzc2lvbiBvYmplY3RzICovDQorRVhURVJOKHZvaWQpIGpwZWdfZGVzdHJveV9jb21wcmVzcyBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfZGVzdHJveV9kZWNvbXByZXNzIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKw0KKyNpZiAwDQorLyogU3RhbmRhcmQgZGF0YSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG1hbmFnZXJzOiBzdGRpbyBzdHJlYW1zLiAqLw0KKy8qIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3Igb3BlbmluZyB0aGUgZmlsZSBiZWZvcmUgYW5kIGNsb3NpbmcgYWZ0ZXIuICovDQorRVhURVJOKHZvaWQpIGpwZWdfc3RkaW9fZGVzdCBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBGWFNZU19GSUxFICogb3V0ZmlsZSkpOw0KK0VYVEVSTih2b2lkKSBqcGVnX3N0ZGlvX3NyYyBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIEZYU1lTX0ZJTEUgKiBpbmZpbGUpKTsNCisjZW5kaWYNCisNCisvKiBEZWZhdWx0IHBhcmFtZXRlciBzZXR1cCBmb3IgY29tcHJlc3Npb24gKi8NCitFWFRFUk4odm9pZCkganBlZ19zZXRfZGVmYXVsdHMgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KKy8qIENvbXByZXNzaW9uIHBhcmFtZXRlciBzZXR1cCBhaWRzICovDQorRVhURVJOKHZvaWQpIGpwZWdfc2V0X2NvbG9yc3BhY2UgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJICAgICAgSl9DT0xPUl9TUEFDRSBjb2xvcnNwYWNlKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfZGVmYXVsdF9jb2xvcnNwYWNlIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkganBlZ19zZXRfcXVhbGl0eSBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgcXVhbGl0eSwNCisJCQkJICAgYm9vbGVhbiBmb3JjZV9iYXNlbGluZSkpOw0KK0VYVEVSTih2b2lkKSBqcGVnX3NldF9saW5lYXJfcXVhbGl0eSBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICBpbnQgc2NhbGVfZmFjdG9yLA0KKwkJCQkJICBib29sZWFuIGZvcmNlX2Jhc2VsaW5lKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfYWRkX3F1YW50X3RhYmxlIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8sIGludCB3aGljaF90YmwsDQorCQkJCSAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgKmJhc2ljX3RhYmxlLA0KKwkJCQkgICAgICAgaW50IHNjYWxlX2ZhY3RvciwNCisJCQkJICAgICAgIGJvb2xlYW4gZm9yY2VfYmFzZWxpbmUpKTsNCitFWFRFUk4oaW50KSBqcGVnX3F1YWxpdHlfc2NhbGluZyBKUFAoKGludCBxdWFsaXR5KSk7DQorRVhURVJOKHZvaWQpIGpwZWdfc2ltcGxlX3Byb2dyZXNzaW9uIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkganBlZ19zdXBwcmVzc190YWJsZXMgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJICAgICAgIGJvb2xlYW4gc3VwcHJlc3MpKTsNCitFWFRFUk4oSlFVQU5UX1RCTCAqKSBqcGVnX2FsbG9jX3F1YW50X3RhYmxlIEpQUCgoal9jb21tb25fcHRyIGNpbmZvKSk7DQorRVhURVJOKEpIVUZGX1RCTCAqKSBqcGVnX2FsbG9jX2h1ZmZfdGFibGUgSlBQKChqX2NvbW1vbl9wdHIgY2luZm8pKTsNCisNCisvKiBNYWluIGVudHJ5IHBvaW50cyBmb3IgY29tcHJlc3Npb24gKi8NCitFWFRFUk4odm9pZCkganBlZ19zdGFydF9jb21wcmVzcyBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkgICAgICBib29sZWFuIHdyaXRlX2FsbF90YWJsZXMpKTsNCitFWFRFUk4oSkRJTUVOU0lPTikganBlZ193cml0ZV9zY2FubGluZXMgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgICAgSlNBTVBBUlJBWSBzY2FubGluZXMsDQorCQkJCQkgICAgIEpESU1FTlNJT04gbnVtX2xpbmVzKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfZmluaXNoX2NvbXByZXNzIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisNCisvKiBSZXBsYWNlcyBqcGVnX3dyaXRlX3NjYW5saW5lcyB3aGVuIHdyaXRpbmcgcmF3IGRvd25zYW1wbGVkIGRhdGEuICovDQorRVhURVJOKEpESU1FTlNJT04pIGpwZWdfd3JpdGVfcmF3X2RhdGEgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgICBKU0FNUElNQUdFIGRhdGEsDQorCQkJCQkgICAgSkRJTUVOU0lPTiBudW1fbGluZXMpKTsNCisNCisvKiBXcml0ZSBhIHNwZWNpYWwgbWFya2VyLiAgU2VlIGxpYmpwZWcuZG9jIGNvbmNlcm5pbmcgc2FmZSB1c2FnZS4gKi8NCitFWFRFUk4odm9pZCkganBlZ193cml0ZV9tYXJrZXINCisJSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywgaW50IG1hcmtlciwNCisJICAgICBjb25zdCBKT0NURVQgKiBkYXRhcHRyLCB1bnNpZ25lZCBpbnQgZGF0YWxlbikpOw0KKy8qIFNhbWUsIGJ1dCBwaWVjZW1lYWwuICovDQorRVhURVJOKHZvaWQpIGpwZWdfd3JpdGVfbV9oZWFkZXINCisJSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywgaW50IG1hcmtlciwgdW5zaWduZWQgaW50IGRhdGFsZW4pKTsNCitFWFRFUk4odm9pZCkganBlZ193cml0ZV9tX2J5dGUNCisJSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbywgaW50IHZhbCkpOw0KKw0KKy8qIEFsdGVybmF0ZSBjb21wcmVzc2lvbiBmdW5jdGlvbjoganVzdCB3cml0ZSBhbiBhYmJyZXZpYXRlZCB0YWJsZSBmaWxlICovDQorRVhURVJOKHZvaWQpIGpwZWdfd3JpdGVfdGFibGVzIEpQUCgoal9jb21wcmVzc19wdHIgY2luZm8pKTsNCisNCisvKiBEZWNvbXByZXNzaW9uIHN0YXJ0dXA6IHJlYWQgc3RhcnQgb2YgSlBFRyBkYXRhc3RyZWFtIHRvIHNlZSB3aGF0J3MgdGhlcmUgKi8NCitFWFRFUk4oaW50KSBqcGVnX3JlYWRfaGVhZGVyIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJICBib29sZWFuIHJlcXVpcmVfaW1hZ2UpKTsNCisvKiBSZXR1cm4gdmFsdWUgaXMgb25lIG9mOiAqLw0KKyNkZWZpbmUgSlBFR19TVVNQRU5ERUQJCTAgLyogU3VzcGVuZGVkIGR1ZSB0byBsYWNrIG9mIGlucHV0IGRhdGEgKi8NCisjZGVmaW5lIEpQRUdfSEVBREVSX09LCQkxIC8qIEZvdW5kIHZhbGlkIGltYWdlIGRhdGFzdHJlYW0gKi8NCisjZGVmaW5lIEpQRUdfSEVBREVSX1RBQkxFU19PTkxZCTIgLyogRm91bmQgdmFsaWQgdGFibGUtc3BlY3Mtb25seSBkYXRhc3RyZWFtICovDQorLyogSWYgeW91IHBhc3MgcmVxdWlyZV9pbWFnZSA9IFRSVUUgKG5vcm1hbCBjYXNlKSwgeW91IG5lZWQgbm90IGNoZWNrIGZvcg0KKyAqIGEgVEFCTEVTX09OTFkgcmV0dXJuIGNvZGU7IGFuIGFiYnJldmlhdGVkIGZpbGUgd2lsbCBjYXVzZSBhbiBlcnJvciBleGl0Lg0KKyAqIEpQRUdfU1VTUEVOREVEIGlzIG9ubHkgcG9zc2libGUgaWYgeW91IHVzZSBhIGRhdGEgc291cmNlIG1vZHVsZSB0aGF0IGNhbg0KKyAqIGdpdmUgYSBzdXNwZW5zaW9uIHJldHVybiAodGhlIHN0ZGlvIHNvdXJjZSBtb2R1bGUgZG9lc24ndCkuDQorICovDQorDQorLyogTWFpbiBlbnRyeSBwb2ludHMgZm9yIGRlY29tcHJlc3Npb24gKi8NCitFWFRFUk4oYm9vbGVhbikganBlZ19zdGFydF9kZWNvbXByZXNzIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTihKRElNRU5TSU9OKSBqcGVnX3JlYWRfc2NhbmxpbmVzIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgICBKU0FNUEFSUkFZIHNjYW5saW5lcywNCisJCQkJCSAgICBKRElNRU5TSU9OIG1heF9saW5lcykpOw0KK0VYVEVSTihib29sZWFuKSBqcGVnX2ZpbmlzaF9kZWNvbXByZXNzIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KKw0KKy8qIFJlcGxhY2VzIGpwZWdfcmVhZF9zY2FubGluZXMgd2hlbiByZWFkaW5nIHJhdyBkb3duc2FtcGxlZCBkYXRhLiAqLw0KK0VYVEVSTihKRElNRU5TSU9OKSBqcGVnX3JlYWRfcmF3X2RhdGEgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICAgSlNBTVBJTUFHRSBkYXRhLA0KKwkJCQkJICAgSkRJTUVOU0lPTiBtYXhfbGluZXMpKTsNCisNCisvKiBBZGRpdGlvbmFsIGVudHJ5IHBvaW50cyBmb3IgYnVmZmVyZWQtaW1hZ2UgbW9kZS4gKi8NCitFWFRFUk4oYm9vbGVhbikganBlZ19oYXNfbXVsdGlwbGVfc2NhbnMgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKGJvb2xlYW4pIGpwZWdfc3RhcnRfb3V0cHV0IEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJICAgICAgIGludCBzY2FuX251bWJlcikpOw0KK0VYVEVSTihib29sZWFuKSBqcGVnX2ZpbmlzaF9vdXRwdXQgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKGJvb2xlYW4pIGpwZWdfaW5wdXRfY29tcGxldGUgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorRVhURVJOKHZvaWQpIGpwZWdfbmV3X2NvbG9ybWFwIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTihpbnQpIGpwZWdfY29uc3VtZV9pbnB1dCBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisvKiBSZXR1cm4gdmFsdWUgaXMgb25lIG9mOiAqLw0KKy8qICNkZWZpbmUgSlBFR19TVVNQRU5ERUQJMCAgICBTdXNwZW5kZWQgZHVlIHRvIGxhY2sgb2YgaW5wdXQgZGF0YSAqLw0KKyNkZWZpbmUgSlBFR19SRUFDSEVEX1NPUwkxIC8qIFJlYWNoZWQgc3RhcnQgb2YgbmV3IHNjYW4gKi8NCisjZGVmaW5lIEpQRUdfUkVBQ0hFRF9FT0kJMiAvKiBSZWFjaGVkIGVuZCBvZiBpbWFnZSAqLw0KKyNkZWZpbmUgSlBFR19ST1dfQ09NUExFVEVECTMgLyogQ29tcGxldGVkIG9uZSBpTUNVIHJvdyAqLw0KKyNkZWZpbmUgSlBFR19TQ0FOX0NPTVBMRVRFRAk0IC8qIENvbXBsZXRlZCBsYXN0IGlNQ1Ugcm93IG9mIGEgc2NhbiAqLw0KKw0KKy8qIFByZWNhbGN1bGF0ZSBvdXRwdXQgZGltZW5zaW9ucyBmb3IgY3VycmVudCBkZWNvbXByZXNzaW9uIHBhcmFtZXRlcnMuICovDQorRVhURVJOKHZvaWQpIGpwZWdfY2FsY19vdXRwdXRfZGltZW5zaW9ucyBKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8pKTsNCisNCisvKiBDb250cm9sIHNhdmluZyBvZiBDT00gYW5kIEFQUG4gbWFya2VycyBpbnRvIG1hcmtlcl9saXN0LiAqLw0KK0VYVEVSTih2b2lkKSBqcGVnX3NhdmVfbWFya2Vycw0KKwlKUFAoKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIGludCBtYXJrZXJfY29kZSwNCisJICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoX2xpbWl0KSk7DQorDQorLyogSW5zdGFsbCBhIHNwZWNpYWwgcHJvY2Vzc2luZyBtZXRob2QgZm9yIENPTSBvciBBUFBuIG1hcmtlcnMuICovDQorRVhURVJOKHZvaWQpIGpwZWdfc2V0X21hcmtlcl9wcm9jZXNzb3INCisJSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCBpbnQgbWFya2VyX2NvZGUsDQorCSAgICAganBlZ19tYXJrZXJfcGFyc2VyX21ldGhvZCByb3V0aW5lKSk7DQorDQorLyogUmVhZCBvciB3cml0ZSByYXcgRENUIGNvZWZmaWNpZW50cyAtLS0gdXNlZnVsIGZvciBsb3NzbGVzcyB0cmFuc2NvZGluZy4gKi8NCitFWFRFUk4oanZpcnRfYmFycmF5X3B0ciAqKSBqcGVnX3JlYWRfY29lZmZpY2llbnRzIEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqcGVnX3dyaXRlX2NvZWZmaWNpZW50cyBKUFAoKGpfY29tcHJlc3NfcHRyIGNpbmZvLA0KKwkJCQkJICBqdmlydF9iYXJyYXlfcHRyICogY29lZl9hcnJheXMpKTsNCitFWFRFUk4odm9pZCkganBlZ19jb3B5X2NyaXRpY2FsX3BhcmFtZXRlcnMgSlBQKChqX2RlY29tcHJlc3NfcHRyIHNyY2luZm8sDQorCQkJCQkJal9jb21wcmVzc19wdHIgZHN0aW5mbykpOw0KKw0KKy8qIElmIHlvdSBjaG9vc2UgdG8gYWJvcnQgY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbiBiZWZvcmUgY29tcGxldGluZw0KKyAqIGpwZWdfZmluaXNoXyhkZSljb21wcmVzcywgdGhlbiB5b3UgbmVlZCB0byBjbGVhbiB1cCB0byByZWxlYXNlIG1lbW9yeSwNCisgKiB0ZW1wb3JhcnkgZmlsZXMsIGV0Yy4gIFlvdSBjYW4ganVzdCBjYWxsIGpwZWdfZGVzdHJveV8oZGUpY29tcHJlc3MNCisgKiBpZiB5b3UncmUgZG9uZSB3aXRoIHRoZSBKUEVHIG9iamVjdCwgYnV0IGlmIHlvdSB3YW50IHRvIGNsZWFuIGl0IHVwIGFuZA0KKyAqIHJldXNlIGl0LCBjYWxsIHRoaXM6DQorICovDQorRVhURVJOKHZvaWQpIGpwZWdfYWJvcnRfY29tcHJlc3MgSlBQKChqX2NvbXByZXNzX3B0ciBjaW5mbykpOw0KK0VYVEVSTih2b2lkKSBqcGVnX2Fib3J0X2RlY29tcHJlc3MgSlBQKChqX2RlY29tcHJlc3NfcHRyIGNpbmZvKSk7DQorDQorLyogR2VuZXJpYyB2ZXJzaW9ucyBvZiBqcGVnX2Fib3J0IGFuZCBqcGVnX2Rlc3Ryb3kgdGhhdCB3b3JrIG9uIGVpdGhlcg0KKyAqIGZsYXZvciBvZiBKUEVHIG9iamVjdC4gIFRoZXNlIG1heSBiZSBtb3JlIGNvbnZlbmllbnQgaW4gc29tZSBwbGFjZXMuDQorICovDQorRVhURVJOKHZvaWQpIGpwZWdfYWJvcnQgSlBQKChqX2NvbW1vbl9wdHIgY2luZm8pKTsNCitFWFRFUk4odm9pZCkganBlZ19kZXN0cm95IEpQUCgoal9jb21tb25fcHRyIGNpbmZvKSk7DQorDQorLyogRGVmYXVsdCByZXN0YXJ0LW1hcmtlci1yZXN5bmMgcHJvY2VkdXJlIGZvciB1c2UgYnkgZGF0YSBzb3VyY2UgbW9kdWxlcyAqLw0KK0VYVEVSTihib29sZWFuKSBqcGVnX3Jlc3luY190b19yZXN0YXJ0IEpQUCgoal9kZWNvbXByZXNzX3B0ciBjaW5mbywNCisJCQkJCSAgICBpbnQgZGVzaXJlZCkpOw0KKw0KKw0KKy8qIFRoZXNlIG1hcmtlciBjb2RlcyBhcmUgZXhwb3J0ZWQgc2luY2UgYXBwbGljYXRpb25zIGFuZCBkYXRhIHNvdXJjZSBtb2R1bGVzDQorICogYXJlIGxpa2VseSB0byB3YW50IHRvIHVzZSB0aGVtLg0KKyAqLw0KKw0KKyNkZWZpbmUgSlBFR19SU1QwCTB4RDAJLyogUlNUMCBtYXJrZXIgY29kZSAqLw0KKyNkZWZpbmUgSlBFR19FT0kJMHhEOQkvKiBFT0kgbWFya2VyIGNvZGUgKi8NCisjZGVmaW5lIEpQRUdfQVBQMAkweEUwCS8qIEFQUDAgbWFya2VyIGNvZGUgKi8NCisjZGVmaW5lIEpQRUdfQ09NCTB4RkUJLyogQ09NIG1hcmtlciBjb2RlICovDQorDQorDQorLyogSWYgd2UgaGF2ZSBhIGJyYWluLWRhbWFnZWQgY29tcGlsZXIgdGhhdCBlbWl0cyB3YXJuaW5ncyAob3Igd29yc2UsIGVycm9ycykNCisgKiBmb3Igc3RydWN0dXJlIGRlZmluaXRpb25zIHRoYXQgYXJlIG5ldmVyIGZpbGxlZCBpbiwga2VlcCBpdCBxdWlldCBieQ0KKyAqIHN1cHBseWluZyBkdW1teSBkZWZpbml0aW9ucyBmb3IgdGhlIHZhcmlvdXMgc3Vic3RydWN0dXJlcy4NCisgKi8NCisNCisjaWZkZWYgSU5DT01QTEVURV9UWVBFU19CUk9LRU4NCisjaWZuZGVmIEpQRUdfSU5URVJOQUxTCQkvKiB3aWxsIGJlIGRlZmluZWQgaW4ganBlZ2ludC5oICovDQorc3RydWN0IGp2aXJ0X3NhcnJheV9jb250cm9sIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganZpcnRfYmFycmF5X2NvbnRyb2wgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqcGVnX2NvbXBfbWFzdGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19jX21haW5fY29udHJvbGxlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfY19wcmVwX2NvbnRyb2xsZXIgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqcGVnX2NfY29lZl9jb250cm9sbGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19tYXJrZXJfd3JpdGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19jb2xvcl9jb252ZXJ0ZXIgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqcGVnX2Rvd25zYW1wbGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19mb3J3YXJkX2RjdCB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfZW50cm9weV9lbmNvZGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19kZWNvbXBfbWFzdGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19kX21haW5fY29udHJvbGxlciB7IGxvbmcgZHVtbXk7IH07DQorc3RydWN0IGpwZWdfZF9jb2VmX2NvbnRyb2xsZXIgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqcGVnX2RfcG9zdF9jb250cm9sbGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19pbnB1dF9jb250cm9sbGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19tYXJrZXJfcmVhZGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19lbnRyb3B5X2RlY29kZXIgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqcGVnX2ludmVyc2VfZGN0IHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ191cHNhbXBsZXIgeyBsb25nIGR1bW15OyB9Ow0KK3N0cnVjdCBqcGVnX2NvbG9yX2RlY29udmVydGVyIHsgbG9uZyBkdW1teTsgfTsNCitzdHJ1Y3QganBlZ19jb2xvcl9xdWFudGl6ZXIgeyBsb25nIGR1bW15OyB9Ow0KKyNlbmRpZiAvKiBKUEVHX0lOVEVSTkFMUyAqLw0KKyNlbmRpZiAvKiBJTkNPTVBMRVRFX1RZUEVTX0JST0tFTiAqLw0KKw0KKw0KKy8qDQorICogVGhlIEpQRUcgbGlicmFyeSBtb2R1bGVzIGRlZmluZSBKUEVHX0lOVEVSTkFMUyBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgZmlsZS4NCisgKiBUaGUgaW50ZXJuYWwgc3RydWN0dXJlIGRlY2xhcmF0aW9ucyBhcmUgcmVhZCBvbmx5IHdoZW4gdGhhdCBpcyB0cnVlLg0KKyAqIEFwcGxpY2F0aW9ucyB1c2luZyB0aGUgbGlicmFyeSBzaG91bGQgbm90IGluY2x1ZGUganBlZ2ludC5oLCBidXQgbWF5IHdpc2gNCisgKiB0byBpbmNsdWRlIGplcnJvci5oLg0KKyAqLw0KKw0KKyNpZmRlZiBKUEVHX0lOVEVSTkFMUw0KKyNpbmNsdWRlICJqcGVnaW50LmgiCQkvKiBmZXRjaCBwcml2YXRlIGRlY2xhcmF0aW9ucyAqLw0KKyNpbmNsdWRlICJqZXJyb3IuaCIJCS8qIGZldGNoIGVycm9yIGNvZGVzIHRvbyAqLw0KKyNlbmRpZg0KKw0KKyNlbmRpZiAvKiBKUEVHTElCX0ggKi8NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvanZlcnNpb24uaCBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy9qdmVyc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZGQ0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvanZlcnNpb24uaApAQCAtMCwwICsxLDE0IEBACisvKg0KKyAqIGp2ZXJzaW9uLmgNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5MS0xOTk4LCBUaG9tYXMgRy4gTGFuZS4NCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgSW5kZXBlbmRlbnQgSlBFRyBHcm91cCdzIHNvZnR3YXJlLg0KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZS4NCisgKg0KKyAqIFRoaXMgZmlsZSBjb250YWlucyBzb2Z0d2FyZSB2ZXJzaW9uIGlkZW50aWZpY2F0aW9uLg0KKyAqLw0KKw0KKw0KKyNkZWZpbmUgSlZFUlNJT04JIjZiICAyNy1NYXItMTk5OCINCisNCisjZGVmaW5lIEpDT1BZUklHSFQJIkNvcHlyaWdodCAoQykgMTk5OCwgVGhvbWFzIEcuIExhbmUiDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL21ha2VmaWxlIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL21ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3N2Q4M2IKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNvZGVjL2xpYmpwZWcvbWFrZWZpbGUKQEAgLTAsMCArMSw4IEBACitzb3VyY2VzID0gZnBkZmFwaV9qY2FwaW1pbi5jIGZwZGZhcGlfamNhcGlzdGQuYyBmcGRmYXBpX2pjY29lZmN0LmMgZnBkZmFwaV9qY2NvbG9yLmMgZnBkZmFwaV9qY2RjdG1nci5jIGZwZGZhcGlfamNodWZmLmMgZnBkZmFwaV9qY2luaXQuYyBmcGRmYXBpX2pjbWFpbmN0LmMgZnBkZmFwaV9qY21hcmtlci5jIGZwZGZhcGlfamNtYXN0ZXIuYyBcCisJZnBkZmFwaV9qY29tYXBpLmMgZnBkZmFwaV9qY3BhcmFtLmMgZnBkZmFwaV9qY3BodWZmLmMgZnBkZmFwaV9qY3ByZXBjdC5jIGZwZGZhcGlfamNzYW1wbGUuYyBmcGRmYXBpX2pjdHJhbnMuYyBmcGRmYXBpX2pkYXBpbWluLmMgZnBkZmFwaV9qZGFwaXN0ZC5jIGZwZGZhcGlfamRjb2VmY3QuYyBcCisJIGZwZGZhcGlfamRjb2xvci5jIGZwZGZhcGlfamRkY3RtZ3IuYyBmcGRmYXBpX2pkaHVmZi5jIGZwZGZhcGlfamRpbnB1dC5jIGZwZGZhcGlfamRtYWluY3QuYyBmcGRmYXBpX2pkbWFya2VyLmMgZnBkZmFwaV9qZG1hc3Rlci5jIGZwZGZhcGlfamRtZXJnZS5jIGZwZGZhcGlfamRwaHVmZi5jIGZwZGZhcGlfamRwb3N0Y3QuYyBmcGRmYXBpX2pkc2FtcGxlLmMgXAorCSBmcGRmYXBpX2pkdHJhbnMuYyBmcGRmYXBpX2plcnJvci5jIGZwZGZhcGlfamZkY3Rmc3QuYyBmcGRmYXBpX2pmZGN0aW50LmMgZnBkZmFwaV9qY2FwaW1pbi5jIGZwZGZhcGlfamlkY3Rmc3QuYyBmcGRmYXBpX2ppZGN0aW50LmMgZnBkZmFwaV9qaWRjdHJlZC5jIGZwZGZhcGlfam1lbW1nci5jIFwKKwkgZnBkZmFwaV9qbWVtbm9icy5jIGZwZGZhcGlfanV0aWxzLmMKK2FybXNvdXJjZXM9JChzb3VyY2VzKQorYXJtc291cmNlc2M9JChzb3VyY2VzKQoraW5jbHVkZSAuLi8uLi9zcmMvbWFrZWZpbGUKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy90cmFuc3VwcC5oIGIvY29yZS9zcmMvZnhjb2RlYy9saWJqcGVnL3RyYW5zdXBwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIwYjA1NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y29kZWMvbGlianBlZy90cmFuc3VwcC5oCkBAIC0wLDAgKzEsMTM1IEBACisvKg0KKyAqIHRyYW5zdXBwLmgNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMTk5NywgVGhvbWFzIEcuIExhbmUuDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEluZGVwZW5kZW50IEpQRUcgR3JvdXAncyBzb2Z0d2FyZS4NCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmcgUkVBRE1FIGZpbGUuDQorICoNCisgKiBUaGlzIGZpbGUgY29udGFpbnMgZGVjbGFyYXRpb25zIGZvciBpbWFnZSB0cmFuc2Zvcm1hdGlvbiByb3V0aW5lcyBhbmQNCisgKiBvdGhlciB1dGlsaXR5IGNvZGUgdXNlZCBieSB0aGUganBlZ3RyYW4gc2FtcGxlIGFwcGxpY2F0aW9uLiAgVGhlc2UgYXJlDQorICogTk9UIHBhcnQgb2YgdGhlIGNvcmUgSlBFRyBsaWJyYXJ5LiAgQnV0IHdlIGtlZXAgdGhlc2Ugcm91dGluZXMgc2VwYXJhdGUNCisgKiBmcm9tIGpwZWd0cmFuLmMgdG8gZWFzZSB0aGUgdGFzayBvZiBtYWludGFpbmluZyBqcGVndHJhbi1saWtlIHByb2dyYW1zDQorICogdGhhdCBoYXZlIG90aGVyIHVzZXIgaW50ZXJmYWNlcy4NCisgKg0KKyAqIE5PVEU6IGFsbCB0aGUgcm91dGluZXMgZGVjbGFyZWQgaGVyZSBoYXZlIHZlcnkgc3BlY2lmaWMgcmVxdWlyZW1lbnRzDQorICogYWJvdXQgd2hlbiB0aGV5IGFyZSB0byBiZSBleGVjdXRlZCBkdXJpbmcgdGhlIHJlYWRpbmcgYW5kIHdyaXRpbmcgb2YgdGhlDQorICogc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmaWxlcy4gIFNlZSB0aGUgY29tbWVudHMgaW4gdHJhbnN1cHAuYywgb3Igc2VlDQorICoganBlZ3RyYW4uYyBmb3IgYW4gZXhhbXBsZSBvZiBjb3JyZWN0IHVzYWdlLg0KKyAqLw0KKw0KKy8qIElmIHlvdSBoYXBwZW4gbm90IHRvIHdhbnQgdGhlIGltYWdlIHRyYW5zZm9ybSBzdXBwb3J0LCBkaXNhYmxlIGl0IGhlcmUgKi8NCisjaWZuZGVmIFRSQU5TRk9STVNfU1VQUE9SVEVEDQorI2RlZmluZSBUUkFOU0ZPUk1TX1NVUFBPUlRFRCAxCQkvKiAwIGRpc2FibGVzIHRyYW5zZm9ybSBjb2RlICovDQorI2VuZGlmDQorDQorLyogU2hvcnQgZm9ybXMgb2YgZXh0ZXJuYWwgbmFtZXMgZm9yIHN5c3RlbXMgd2l0aCBicmFpbi1kYW1hZ2VkIGxpbmtlcnMuICovDQorDQorI2lmZGVmIE5FRURfU0hPUlRfRVhURVJOQUxfTkFNRVMNCisjZGVmaW5lIGp0cmFuc2Zvcm1fcmVxdWVzdF93b3Jrc3BhY2UJCWpUclJlcXVlc3QNCisjZGVmaW5lIGp0cmFuc2Zvcm1fYWRqdXN0X3BhcmFtZXRlcnMJCWpUckFkanVzdA0KKyNkZWZpbmUganRyYW5zZm9ybV9leGVjdXRlX3RyYW5zZm9ybWF0aW9uCWpUckV4ZWMNCisjZGVmaW5lIGpjb3B5X21hcmtlcnNfc2V0dXAJCQlqQ01ya1NldHVwDQorI2RlZmluZSBqY29weV9tYXJrZXJzX2V4ZWN1dGUJCQlqQ01ya0V4ZWMNCisjZW5kaWYgLyogTkVFRF9TSE9SVF9FWFRFUk5BTF9OQU1FUyAqLw0KKw0KKw0KKy8qDQorICogQ29kZXMgZm9yIHN1cHBvcnRlZCB0eXBlcyBvZiBpbWFnZSB0cmFuc2Zvcm1hdGlvbnMuDQorICovDQorDQordHlwZWRlZiBlbnVtIHsNCisJSlhGT1JNX05PTkUsCQkvKiBubyB0cmFuc2Zvcm1hdGlvbiAqLw0KKwlKWEZPUk1fRkxJUF9ILAkJLyogaG9yaXpvbnRhbCBmbGlwICovDQorCUpYRk9STV9GTElQX1YsCQkvKiB2ZXJ0aWNhbCBmbGlwICovDQorCUpYRk9STV9UUkFOU1BPU0UsCS8qIHRyYW5zcG9zZSBhY3Jvc3MgVUwtdG8tTFIgYXhpcyAqLw0KKwlKWEZPUk1fVFJBTlNWRVJTRSwJLyogdHJhbnNwb3NlIGFjcm9zcyBVUi10by1MTCBheGlzICovDQorCUpYRk9STV9ST1RfOTAsCQkvKiA5MC1kZWdyZWUgY2xvY2t3aXNlIHJvdGF0aW9uICovDQorCUpYRk9STV9ST1RfMTgwLAkJLyogMTgwLWRlZ3JlZSByb3RhdGlvbiAqLw0KKwlKWEZPUk1fUk9UXzI3MAkJLyogMjcwLWRlZ3JlZSBjbG9ja3dpc2UgKG9yIDkwIGNjdykgKi8NCit9IEpYRk9STV9DT0RFOw0KKw0KKy8qDQorICogQWx0aG91Z2ggcm90YXRpbmcgYW5kIGZsaXBwaW5nIGRhdGEgZXhwcmVzc2VkIGFzIERDVCBjb2VmZmljaWVudHMgaXMgbm90DQorICogaGFyZCwgdGhlcmUgaXMgYW4gYXN5bW1ldHJ5IGluIHRoZSBKUEVHIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGZvciBpbWFnZXMNCisgKiB3aG9zZSBkaW1lbnNpb25zIGFyZW4ndCBtdWx0aXBsZXMgb2YgdGhlIGlNQ1Ugc2l6ZS4gIFRoZSByaWdodCBhbmQgYm90dG9tDQorICogaW1hZ2UgZWRnZXMgYXJlIHBhZGRlZCBvdXQgdG8gdGhlIG5leHQgaU1DVSBib3VuZGFyeSB3aXRoIGp1bmsgZGF0YTsgYnV0DQorICogbm8gcGFkZGluZyBpcyBwb3NzaWJsZSBhdCB0aGUgdG9wIGFuZCBsZWZ0IGVkZ2VzLiAgSWYgd2Ugd2VyZSB0byBmbGlwDQorICogdGhlIHdob2xlIGltYWdlIGluY2x1ZGluZyB0aGUgcGFkIGRhdGEsIHRoZW4gcGFkIGdhcmJhZ2Ugd291bGQgYmVjb21lDQorICogdmlzaWJsZSBhdCB0aGUgdG9wIGFuZC9vciBsZWZ0LCBhbmQgcmVhbCBwaXhlbHMgd291bGQgZGlzYXBwZWFyIGludG8gdGhlDQorICogcGFkIG1hcmdpbnMgLS0tIHBlcmhhcHMgcGVybWFuZW50bHksIHNpbmNlIGVuY29kZXJzICYgZGVjb2RlcnMgbWF5IG5vdA0KKyAqIGJvdGhlciB0byBwcmVzZXJ2ZSBEQ1QgYmxvY2tzIHRoYXQgYXBwZWFyIHRvIGJlIGNvbXBsZXRlbHkgb3V0c2lkZSB0aGUNCisgKiBub21pbmFsIGltYWdlIGFyZWEuICBTbywgd2UgaGF2ZSB0byBleGNsdWRlIGFueSBwYXJ0aWFsIGlNQ1VzIGZyb20gdGhlDQorICogYmFzaWMgdHJhbnNmb3JtYXRpb24uDQorICoNCisgKiBUcmFuc3Bvc2UgaXMgdGhlIG9ubHkgdHJhbnNmb3JtYXRpb24gdGhhdCBjYW4gaGFuZGxlIHBhcnRpYWwgaU1DVXMgYXQgdGhlDQorICogcmlnaHQgYW5kIGJvdHRvbSBlZGdlcyBjb21wbGV0ZWx5IGNsZWFubHkuICBmbGlwX2ggY2FuIGZsaXAgcGFydGlhbCBpTUNVcw0KKyAqIGF0IHRoZSBib3R0b20sIGJ1dCBsZWF2ZXMgYW55IHBhcnRpYWwgaU1DVXMgYXQgdGhlIHJpZ2h0IGVkZ2UgdW50b3VjaGVkLg0KKyAqIFNpbWlsYXJseSBmbGlwX3YgbGVhdmVzIGFueSBwYXJ0aWFsIGlNQ1VzIGF0IHRoZSBib3R0b20gZWRnZSB1bnRvdWNoZWQuDQorICogVGhlIG90aGVyIHRyYW5zZm9ybXMgYXJlIGRlZmluZWQgYXMgY29tYmluYXRpb25zIG9mIHRoZXNlIGJhc2ljIHRyYW5zZm9ybXMNCisgKiBhbmQgcHJvY2VzcyBlZGdlIGJsb2NrcyBpbiBhIHdheSB0aGF0IHByZXNlcnZlcyB0aGUgZXF1aXZhbGVuY2UuDQorICoNCisgKiBUaGUgInRyaW0iIG9wdGlvbiBjYXVzZXMgdW50cmFuc2Zvcm1hYmxlIHBhcnRpYWwgaU1DVXMgdG8gYmUgZHJvcHBlZDsNCisgKiB0aGlzIGlzIG5vdCBzdHJpY3RseSBsb3NzbGVzcywgYnV0IGl0IHVzdWFsbHkgZ2l2ZXMgdGhlIGJlc3QtbG9va2luZw0KKyAqIHJlc3VsdCBmb3Igb2RkLXNpemUgaW1hZ2VzLiAgTm90ZSB0aGF0IHdoZW4gdGhpcyBvcHRpb24gaXMgYWN0aXZlLA0KKyAqIHRoZSBleHBlY3RlZCBtYXRoZW1hdGljYWwgZXF1aXZhbGVuY2VzIGJldHdlZW4gdGhlIHRyYW5zZm9ybXMgbWF5IG5vdCBob2xkLg0KKyAqIChGb3IgZXhhbXBsZSwgLXJvdCAyNzAgLXRyaW0gdHJpbXMgb25seSB0aGUgYm90dG9tIGVkZ2UsIGJ1dCAtcm90IDkwIC10cmltDQorICogZm9sbG93ZWQgYnkgLXJvdCAxODAgLXRyaW0gdHJpbXMgYm90aCBlZGdlcy4pDQorICoNCisgKiBXZSBhbHNvIG9mZmVyIGEgImZvcmNlIHRvIGdyYXlzY2FsZSIgb3B0aW9uLCB3aGljaCBzaW1wbHkgZGlzY2FyZHMgdGhlDQorICogY2hyb21pbmFuY2UgY2hhbm5lbHMgb2YgYSBZQ2JDciBpbWFnZS4gIFRoaXMgaXMgbG9zc2xlc3MgaW4gdGhlIHNlbnNlIHRoYXQNCisgKiB0aGUgbHVtaW5hbmNlIGNoYW5uZWwgaXMgcHJlc2VydmVkIGV4YWN0bHkuICBJdCdzIG5vdCB0aGUgc2FtZSBraW5kIG9mDQorICogdGhpbmcgYXMgdGhlIHJvdGF0ZS9mbGlwIHRyYW5zZm9ybWF0aW9ucywgYnV0IGl0J3MgY29udmVuaWVudCB0byBoYW5kbGUgaXQNCisgKiBhcyBwYXJ0IG9mIHRoaXMgcGFja2FnZSwgbWFpbmx5IGJlY2F1c2UgdGhlIHRyYW5zZm9ybWF0aW9uIHJvdXRpbmVzIGhhdmUgdG8NCisgKiBiZSBhd2FyZSBvZiB0aGUgb3B0aW9uIHRvIGtub3cgaG93IG1hbnkgY29tcG9uZW50cyB0byB3b3JrIG9uLg0KKyAqLw0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIC8qIE9wdGlvbnM6IHNldCBieSBjYWxsZXIgKi8NCisgIEpYRk9STV9DT0RFIHRyYW5zZm9ybTsJLyogaW1hZ2UgdHJhbnNmb3JtIG9wZXJhdG9yICovDQorICBib29sZWFuIHRyaW07CQkJLyogaWYgVFJVRSwgdHJpbSBwYXJ0aWFsIE1DVXMgYXMgbmVlZGVkICovDQorICBib29sZWFuIGZvcmNlX2dyYXlzY2FsZTsJLyogaWYgVFJVRSwgY29udmVydCBjb2xvciBpbWFnZSB0byBncmF5c2NhbGUgKi8NCisNCisgIC8qIEludGVybmFsIHdvcmtzcGFjZTogY2FsbGVyIHNob3VsZCBub3QgdG91Y2ggdGhlc2UgKi8NCisgIGludCBudW1fY29tcG9uZW50czsJCS8qICMgb2YgY29tcG9uZW50cyBpbiB3b3Jrc3BhY2UgKi8NCisgIGp2aXJ0X2JhcnJheV9wdHIgKiB3b3Jrc3BhY2VfY29lZl9hcnJheXM7IC8qIHdvcmtzcGFjZSBmb3IgdHJhbnNmb3JtYXRpb25zICovDQorfSBqcGVnX3RyYW5zZm9ybV9pbmZvOw0KKw0KKw0KKyNpZiBUUkFOU0ZPUk1TX1NVUFBPUlRFRA0KKw0KKy8qIFJlcXVlc3QgYW55IHJlcXVpcmVkIHdvcmtzcGFjZSAqLw0KK0VYVEVSTih2b2lkKSBqdHJhbnNmb3JtX3JlcXVlc3Rfd29ya3NwYWNlDQorCUpQUCgoal9kZWNvbXByZXNzX3B0ciBzcmNpbmZvLCBqcGVnX3RyYW5zZm9ybV9pbmZvICppbmZvKSk7DQorLyogQWRqdXN0IG91dHB1dCBpbWFnZSBwYXJhbWV0ZXJzICovDQorRVhURVJOKGp2aXJ0X2JhcnJheV9wdHIgKikganRyYW5zZm9ybV9hZGp1c3RfcGFyYW1ldGVycw0KKwlKUFAoKGpfZGVjb21wcmVzc19wdHIgc3JjaW5mbywgal9jb21wcmVzc19wdHIgZHN0aW5mbywNCisJICAgICBqdmlydF9iYXJyYXlfcHRyICpzcmNfY29lZl9hcnJheXMsDQorCSAgICAganBlZ190cmFuc2Zvcm1faW5mbyAqaW5mbykpOw0KKy8qIEV4ZWN1dGUgdGhlIGFjdHVhbCB0cmFuc2Zvcm1hdGlvbiwgaWYgYW55ICovDQorRVhURVJOKHZvaWQpIGp0cmFuc2Zvcm1fZXhlY3V0ZV90cmFuc2Zvcm1hdGlvbg0KKwlKUFAoKGpfZGVjb21wcmVzc19wdHIgc3JjaW5mbywgal9jb21wcmVzc19wdHIgZHN0aW5mbywNCisJICAgICBqdmlydF9iYXJyYXlfcHRyICpzcmNfY29lZl9hcnJheXMsDQorCSAgICAganBlZ190cmFuc2Zvcm1faW5mbyAqaW5mbykpOw0KKw0KKyNlbmRpZiAvKiBUUkFOU0ZPUk1TX1NVUFBPUlRFRCAqLw0KKw0KKw0KKy8qDQorICogU3VwcG9ydCBmb3IgY29weWluZyBvcHRpb25hbCBtYXJrZXJzIGZyb20gc291cmNlIHRvIGRlc3RpbmF0aW9uIGZpbGUuDQorICovDQorDQordHlwZWRlZiBlbnVtIHsNCisJSkNPUFlPUFRfTk9ORSwJCS8qIGNvcHkgbm8gb3B0aW9uYWwgbWFya2VycyAqLw0KKwlKQ09QWU9QVF9DT01NRU5UUywJLyogY29weSBvbmx5IGNvbW1lbnQgKENPTSkgbWFya2VycyAqLw0KKwlKQ09QWU9QVF9BTEwJCS8qIGNvcHkgYWxsIG9wdGlvbmFsIG1hcmtlcnMgKi8NCit9IEpDT1BZX09QVElPTjsNCisNCisjZGVmaW5lIEpDT1BZT1BUX0RFRkFVTFQgIEpDT1BZT1BUX0NPTU1FTlRTCS8qIHJlY29tbWVuZGVkIGRlZmF1bHQgKi8NCisNCisvKiBTZXR1cCBkZWNvbXByZXNzaW9uIG9iamVjdCB0byBzYXZlIGRlc2lyZWQgbWFya2VycyBpbiBtZW1vcnkgKi8NCitFWFRFUk4odm9pZCkgamNvcHlfbWFya2Vyc19zZXR1cA0KKwlKUFAoKGpfZGVjb21wcmVzc19wdHIgc3JjaW5mbywgSkNPUFlfT1BUSU9OIG9wdGlvbikpOw0KKy8qIENvcHkgbWFya2VycyBzYXZlZCBpbiB0aGUgZ2l2ZW4gc291cmNlIG9iamVjdCB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0ICovDQorRVhURVJOKHZvaWQpIGpjb3B5X21hcmtlcnNfZXhlY3V0ZQ0KKwlKUFAoKGpfZGVjb21wcmVzc19wdHIgc3JjaW5mbywgal9jb21wcmVzc19wdHIgZHN0aW5mbywNCisJICAgICBKQ09QWV9PUFRJT04gb3B0aW9uKSk7DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvZXh0ZW5zaW9uLmggYi9jb3JlL3NyYy9meGNydC9leHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjVjNWVjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw0MTMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYQ1JUX0VYVEVOU0lPTl9JTVBfDQorI2RlZmluZSBfRlhDUlRfRVhURU5TSU9OX0lNUF8NCitjbGFzcyBJRlhDUlRfRmlsZUFjY2Vzcw0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgfklGWENSVF9GaWxlQWNjZXNzKCkge30NCisgICAgdmlydHVhbCBGWF9CT09MCQlPcGVuKEZYX0JTVFIgZmlsZU5hbWUsIEZYX0RXT1JEIGR3TW9kZSkgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCU9wZW4oRlhfV1NUUiBmaWxlTmFtZSwgRlhfRFdPUkQgZHdNb2RlKSA9IDA7DQorICAgIHZpcnR1YWwgdm9pZAkJQ2xvc2UoKSA9IDA7DQorICAgIHZpcnR1YWwgdm9pZAkJUmVsZWFzZShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCkgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCUdldFNpemUoKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgRlhfRklMRVNJWkUJR2V0UG9zaXRpb24oKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgRlhfRklMRVNJWkUJU2V0UG9zaXRpb24oRlhfRklMRVNJWkUgcG9zKSA9IDA7DQorICAgIHZpcnR1YWwgc2l6ZV90CQlSZWFkKHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlcikgPSAwOw0KKyAgICB2aXJ0dWFsIHNpemVfdAkJV3JpdGUoY29uc3Qgdm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyKSA9IDA7DQorICAgIHZpcnR1YWwgc2l6ZV90CQlSZWFkUG9zKHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlciwgRlhfRklMRVNJWkUgcG9zKSA9IDA7DQorICAgIHZpcnR1YWwgc2l6ZV90CQlXcml0ZVBvcyhjb25zdCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIsIEZYX0ZJTEVTSVpFIHBvcykgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUZsdXNoKCkgPSAwOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVRydW5jYXRlKEZYX0ZJTEVTSVpFIHN6RmlsZSkgPSAwOw0KK307DQorSUZYQ1JUX0ZpbGVBY2Nlc3MqCUZYQ1JUX0ZpbGVBY2Nlc3NfQ3JlYXRlKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCitjbGFzcyBDRlhfQ1JURmlsZVN0cmVhbSA6IHB1YmxpYyBJRlhfRmlsZVN0cmVhbSwgcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhfQ1JURmlsZVN0cmVhbShJRlhDUlRfRmlsZUFjY2VzcyogcEZBLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKSA6IG1fcEFsbG9jYXRvcihwQWxsb2NhdG9yKSwgbV9wRmlsZShwRkEpLCBtX2R3Q291bnQoMSksIG1fYlVzZVJhbmdlKEZBTFNFKSwgbV9uT2Zmc2V0KDApLCBtX25TaXplKDApIHt9DQorICAgIH5DRlhfQ1JURmlsZVN0cmVhbSgpDQorICAgIHsNCisgICAgICAgIGlmIChtX3BGaWxlKSB7DQorICAgICAgICAgICAgbV9wRmlsZS0+UmVsZWFzZShtX3BBbGxvY2F0b3IpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHZpcnR1YWwgSUZYX0ZpbGVTdHJlYW0qCQlSZXRhaW4oKQ0KKyAgICB7DQorICAgICAgICBtX2R3Q291bnQgKys7DQorICAgICAgICByZXR1cm4gdGhpczsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJUmVsZWFzZSgpDQorICAgIHsNCisgICAgICAgIEZYX0RXT1JEIG5Db3VudCA9IC0tIG1fZHdDb3VudDsNCisgICAgICAgIGlmICghbkNvdW50KSB7DQorICAgICAgICAgICAgaWYgKG1fcEFsbG9jYXRvcikgew0KKyAgICAgICAgICAgICAgICBGWF9EZWxldGVBdEFsbG9jYXRvcih0aGlzLCBtX3BBbGxvY2F0b3IsIENGWF9DUlRGaWxlU3RyZWFtKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBkZWxldGUgdGhpczsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQkJCUdldFNpemUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9iVXNlUmFuZ2UgPyBtX25TaXplIDogbV9wRmlsZS0+R2V0U2l6ZSgpOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQlJc0VPRigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRQb3NpdGlvbigpID49IEdldFNpemUoKTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCQkJR2V0UG9zaXRpb24oKQ0KKyAgICB7DQorICAgICAgICBGWF9GSUxFU0laRSBwb3MgPSBtX3BGaWxlLT5HZXRQb3NpdGlvbigpOw0KKyAgICAgICAgaWYgKG1fYlVzZVJhbmdlKSB7DQorICAgICAgICAgICAgcG9zIC09IG1fbk9mZnNldDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBwb3M7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9CT09MCQkJCVNldFJhbmdlKEZYX0ZJTEVTSVpFIG9mZnNldCwgRlhfRklMRVNJWkUgc2l6ZSkNCisgICAgew0KKyAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgc2l6ZSA+IG1fcEZpbGUtPkdldFNpemUoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIG1fbk9mZnNldCA9IG9mZnNldCwgbV9uU2l6ZSA9IHNpemU7DQorICAgICAgICBtX2JVc2VSYW5nZSA9IFRSVUU7DQorICAgICAgICBtX3BGaWxlLT5TZXRQb3NpdGlvbihtX25PZmZzZXQpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgdmlydHVhbCB2b2lkCQkJCUNsZWFyUmFuZ2UoKQ0KKyAgICB7DQorICAgICAgICBtX2JVc2VSYW5nZSA9IEZBTFNFOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQlSZWFkQmxvY2sodm9pZCogYnVmZmVyLCBGWF9GSUxFU0laRSBvZmZzZXQsIHNpemVfdCBzaXplKQ0KKyAgICB7DQorICAgICAgICBpZiAobV9iVXNlUmFuZ2UpIHsNCisgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+IChzaXplX3QpR2V0U2l6ZSgpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgb2Zmc2V0ICs9IG1fbk9mZnNldDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAoRlhfQk9PTCltX3BGaWxlLT5SZWFkUG9zKGJ1ZmZlciwgc2l6ZSwgb2Zmc2V0KTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHNpemVfdAkJCQlSZWFkQmxvY2sodm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkNCisgICAgew0KKyAgICAgICAgaWYgKG1fYlVzZVJhbmdlKSB7DQorICAgICAgICAgICAgRlhfRklMRVNJWkUgYXZhaWxTaXplID0gbV9uT2Zmc2V0ICsgbV9uU2l6ZSAtIG1fcEZpbGUtPkdldFBvc2l0aW9uKCk7DQorICAgICAgICAgICAgaWYgKChzaXplX3QpYXZhaWxTaXplIDwgc2l6ZSkgew0KKyAgICAgICAgICAgICAgICBzaXplIC09IHNpemUgLSAoc2l6ZV90KWF2YWlsU2l6ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gbV9wRmlsZS0+UmVhZChidWZmZXIsIHNpemUpOw0KKyAgICB9DQorICAgIHZpcnR1YWwJRlhfQk9PTAkJCQlXcml0ZUJsb2NrKGNvbnN0IHZvaWQqIGJ1ZmZlciwgRlhfRklMRVNJWkUgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkNCisgICAgew0KKyAgICAgICAgaWYgKG1fYlVzZVJhbmdlKSB7DQorICAgICAgICAgICAgb2Zmc2V0ICs9IG1fbk9mZnNldDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiAoRlhfQk9PTCltX3BGaWxlLT5Xcml0ZVBvcyhidWZmZXIsIHNpemUsIG9mZnNldCk7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9CT09MCQkJCUZsdXNoKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcEZpbGUtPkZsdXNoKCk7DQorICAgIH0NCisgICAgSUZYX0FsbG9jYXRvcioJCW1fcEFsbG9jYXRvcjsNCisgICAgSUZYQ1JUX0ZpbGVBY2Nlc3MqCW1fcEZpbGU7DQorICAgIEZYX0RXT1JECQkJbV9kd0NvdW50Ow0KKyAgICBGWF9CT09MCQkJCW1fYlVzZVJhbmdlOw0KKyAgICBGWF9GSUxFU0laRQkJCW1fbk9mZnNldDsNCisgICAgRlhfRklMRVNJWkUJCQltX25TaXplOw0KK307DQorI2RlZmluZSBGWF9NRU1TVFJFQU1fQmxvY2tTaXplCQkoNjQgKiAxMDI0KQ0KKyNkZWZpbmUgRlhfTUVNU1RSRUFNX0NvbnNlY3V0aXZlCTB4MDENCisjZGVmaW5lIEZYX01FTVNUUkVBTV9UYWtlT3ZlcgkJMHgwMg0KK2NsYXNzIENGWF9NZW1vcnlTdHJlYW0gOiBwdWJsaWMgSUZYX01lbW9yeVN0cmVhbSwgcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhfTWVtb3J5U3RyZWFtKEZYX0JPT0wgYkNvbnNlY3V0aXZlLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KKyAgICAgICAgOiBtX0Jsb2NrcyhwQWxsb2NhdG9yKQ0KKyAgICAgICAgLCBtX2R3Q291bnQoMSkNCisgICAgICAgICwgbV9uVG90YWxTaXplKDApDQorICAgICAgICAsIG1fbkN1clNpemUoMCkNCisgICAgICAgICwgbV9uQ3VyUG9zKDApDQorICAgICAgICAsIG1fbkdyb3dTaXplKEZYX01FTVNUUkVBTV9CbG9ja1NpemUpDQorICAgICAgICAsIG1fYlVzZVJhbmdlKEZBTFNFKQ0KKyAgICB7DQorICAgICAgICBtX2R3RmxhZ3MgPSBGWF9NRU1TVFJFQU1fVGFrZU92ZXIgfCAoYkNvbnNlY3V0aXZlID8gRlhfTUVNU1RSRUFNX0NvbnNlY3V0aXZlIDogMCk7DQorICAgIH0NCisgICAgQ0ZYX01lbW9yeVN0cmVhbShGWF9MUEJZVEUgcEJ1ZmZlciwgc2l6ZV90IG5TaXplLCBGWF9CT09MIGJUYWtlT3ZlciwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCisgICAgICAgIDogbV9CbG9ja3MocEFsbG9jYXRvcikNCisgICAgICAgICwgbV9kd0NvdW50KDEpDQorICAgICAgICAsIG1fblRvdGFsU2l6ZShuU2l6ZSkNCisgICAgICAgICwgbV9uQ3VyU2l6ZShuU2l6ZSkNCisgICAgICAgICwgbV9uQ3VyUG9zKDApDQorICAgICAgICAsIG1fbkdyb3dTaXplKEZYX01FTVNUUkVBTV9CbG9ja1NpemUpDQorICAgICAgICAsIG1fYlVzZVJhbmdlKEZBTFNFKQ0KKyAgICB7DQorICAgICAgICBtX0Jsb2Nrcy5BZGQocEJ1ZmZlcik7DQorICAgICAgICBtX2R3RmxhZ3MgPSBGWF9NRU1TVFJFQU1fQ29uc2VjdXRpdmUgfCAoYlRha2VPdmVyID8gRlhfTUVNU1RSRUFNX1Rha2VPdmVyIDogMCk7DQorICAgIH0NCisgICAgfkNGWF9NZW1vcnlTdHJlYW0oKQ0KKyAgICB7DQorICAgICAgICBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gbV9CbG9ja3MubV9wQWxsb2NhdG9yOw0KKyAgICAgICAgaWYgKG1fZHdGbGFncyAmIEZYX01FTVNUUkVBTV9UYWtlT3Zlcikgew0KKyAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgaSA9IDA7IGkgPCBtX0Jsb2Nrcy5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfQWxsb2NhdG9yX0ZyZWUocEFsbG9jYXRvciwgKEZYX0xQQllURSltX0Jsb2Nrc1tpXSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9CbG9ja3MuUmVtb3ZlQWxsKCk7DQorICAgIH0NCisgICAgdmlydHVhbCBJRlhfRmlsZVN0cmVhbSoJCVJldGFpbigpDQorICAgIHsNCisgICAgICAgIG1fZHdDb3VudCArKzsNCisgICAgICAgIHJldHVybiB0aGlzOw0KKyAgICB9DQorICAgIHZpcnR1YWwgdm9pZAkJCQlSZWxlYXNlKCkNCisgICAgew0KKyAgICAgICAgRlhfRFdPUkQgbkNvdW50ID0gLS0gbV9kd0NvdW50Ow0KKyAgICAgICAgaWYgKG5Db3VudCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBtX0Jsb2Nrcy5tX3BBbGxvY2F0b3I7DQorICAgICAgICBpZiAocEFsbG9jYXRvcikgew0KKyAgICAgICAgICAgIEZYX0RlbGV0ZUF0QWxsb2NhdG9yKHRoaXMsIHBBbGxvY2F0b3IsIENGWF9NZW1vcnlTdHJlYW0pOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBkZWxldGUgdGhpczsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCQkJR2V0U2l6ZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2JVc2VSYW5nZSA/IChGWF9GSUxFU0laRSkgbV9uU2l6ZSA6IChGWF9GSUxFU0laRSltX25DdXJTaXplOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQlJc0VPRigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25DdXJQb3MgPj0gKHNpemVfdClHZXRTaXplKCk7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQkJCUdldFBvc2l0aW9uKCkNCisgICAgew0KKyAgICAgICAgRlhfRklMRVNJWkUgcG9zID0gKEZYX0ZJTEVTSVpFKW1fbkN1clBvczsNCisgICAgICAgIGlmIChtX2JVc2VSYW5nZSkgew0KKyAgICAgICAgICAgIHBvcyAtPSAoRlhfRklMRVNJWkUpbV9uT2Zmc2V0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHBvczsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJU2V0UmFuZ2UoRlhfRklMRVNJWkUgb2Zmc2V0LCBGWF9GSUxFU0laRSBzaXplKQ0KKyAgICB7DQorICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCAoc2l6ZV90KShvZmZzZXQgKyBzaXplKSA+IG1fbkN1clNpemUpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX25PZmZzZXQgPSAoc2l6ZV90KW9mZnNldCwgbV9uU2l6ZSA9IChzaXplX3Qpc2l6ZTsNCisgICAgICAgIG1fYlVzZVJhbmdlID0gVFJVRTsNCisgICAgICAgIG1fbkN1clBvcyA9IG1fbk9mZnNldDsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHZpcnR1YWwgdm9pZAkJCQlDbGVhclJhbmdlKCkNCisgICAgew0KKyAgICAgICAgbV9iVXNlUmFuZ2UgPSBGQUxTRTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQkJUmVhZEJsb2NrKHZvaWQqIGJ1ZmZlciwgRlhfRklMRVNJWkUgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkNCisgICAgew0KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgIXNpemUpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9iVXNlUmFuZ2UpIHsNCisgICAgICAgICAgICBvZmZzZXQgKz0gKEZYX0ZJTEVTSVpFKW1fbk9mZnNldDsNCisgICAgICAgIH0NCisgICAgICAgIGlmICgoc2l6ZV90KW9mZnNldCArIHNpemUgPiBtX25DdXJTaXplKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9uQ3VyUG9zID0gKHNpemVfdClvZmZzZXQgKyBzaXplOw0KKyAgICAgICAgaWYgKG1fZHdGbGFncyAmIEZYX01FTVNUUkVBTV9Db25zZWN1dGl2ZSkgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKGJ1ZmZlciwgKEZYX0xQQllURSltX0Jsb2Nrc1swXSArIChzaXplX3Qpb2Zmc2V0LCBzaXplKTsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIHNpemVfdCBuU3RhcnRCbG9jayA9IChzaXplX3Qpb2Zmc2V0IC8gbV9uR3Jvd1NpemU7DQorICAgICAgICBvZmZzZXQgLT0gKEZYX0ZJTEVTSVpFKShuU3RhcnRCbG9jayAqIG1fbkdyb3dTaXplKTsNCisgICAgICAgIHdoaWxlIChzaXplKSB7DQorICAgICAgICAgICAgc2l6ZV90IG5SZWFkID0gbV9uR3Jvd1NpemUgLSAoc2l6ZV90KW9mZnNldDsNCisgICAgICAgICAgICBpZiAoblJlYWQgPiBzaXplKSB7DQorICAgICAgICAgICAgICAgIG5SZWFkID0gc2l6ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIoYnVmZmVyLCAoRlhfTFBCWVRFKW1fQmxvY2tzWyhpbnQpblN0YXJ0QmxvY2tdICsgKHNpemVfdClvZmZzZXQsIG5SZWFkKTsNCisgICAgICAgICAgICBidWZmZXIgPSAoKEZYX0xQQllURSlidWZmZXIpICsgblJlYWQ7DQorICAgICAgICAgICAgc2l6ZSAtPSBuUmVhZDsNCisgICAgICAgICAgICBuU3RhcnRCbG9jayArKzsNCisgICAgICAgICAgICBvZmZzZXQgPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgdmlydHVhbCBzaXplX3QJCQkJUmVhZEJsb2NrKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IHNpemUpDQorICAgIHsNCisgICAgICAgIGlmIChtX25DdXJQb3MgPj0gbV9uQ3VyU2l6ZSkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fYlVzZVJhbmdlKSB7DQorICAgICAgICAgICAgc2l6ZV90IGF2YWlsU2l6ZSA9IG1fbk9mZnNldCArIG1fblNpemUgLSBtX25DdXJQb3M7DQorICAgICAgICAgICAgaWYgKGF2YWlsU2l6ZSA8IHNpemUpIHsNCisgICAgICAgICAgICAgICAgc2l6ZSAtPSBzaXplIC0gKHNpemVfdClhdmFpbFNpemU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgc2l6ZV90IG5SZWFkID0gRlhfTUlOKHNpemUsIG1fbkN1clNpemUgLSBtX25DdXJQb3MpOw0KKyAgICAgICAgaWYgKCFSZWFkQmxvY2soYnVmZmVyLCAoRlhfSU5UMzIpbV9uQ3VyUG9zLCBuUmVhZCkpIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBuUmVhZDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsCUZYX0JPT0wJCQkJV3JpdGVCbG9jayhjb25zdCB2b2lkKiBidWZmZXIsIEZYX0ZJTEVTSVpFIG9mZnNldCwgc2l6ZV90IHNpemUpDQorICAgIHsNCisgICAgICAgIGlmICghYnVmZmVyIHx8ICFzaXplKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fYlVzZVJhbmdlKSB7DQorICAgICAgICAgICAgb2Zmc2V0ICs9IChGWF9GSUxFU0laRSltX25PZmZzZXQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9kd0ZsYWdzICYgRlhfTUVNU1RSRUFNX0NvbnNlY3V0aXZlKSB7DQorICAgICAgICAgICAgbV9uQ3VyUG9zID0gKHNpemVfdClvZmZzZXQgKyBzaXplOw0KKyAgICAgICAgICAgIGlmIChtX25DdXJQb3MgPiBtX25Ub3RhbFNpemUpIHsNCisgICAgICAgICAgICAgICAgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IG1fQmxvY2tzLm1fcEFsbG9jYXRvcjsNCisgICAgICAgICAgICAgICAgbV9uVG90YWxTaXplID0gKG1fbkN1clBvcyArIG1fbkdyb3dTaXplIC0gMSkgLyBtX25Hcm93U2l6ZSAqIG1fbkdyb3dTaXplOw0KKyAgICAgICAgICAgICAgICBpZiAobV9CbG9ja3MuR2V0U2l6ZSgpIDwgMSkgew0KKyAgICAgICAgICAgICAgICAgICAgdm9pZCogYmxvY2sgPSBGWF9BbGxvY2F0b3JfQWxsb2MocEFsbG9jYXRvciwgRlhfQllURSwgbV9uVG90YWxTaXplKTsNCisgICAgICAgICAgICAgICAgICAgIG1fQmxvY2tzLkFkZChibG9jayk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBtX0Jsb2Nrc1swXSA9IEZYX0FsbG9jYXRvcl9SZWFsbG9jKHBBbGxvY2F0b3IsIEZYX0JZVEUsIG1fQmxvY2tzWzBdLCBtX25Ub3RhbFNpemUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmICghbV9CbG9ja3NbMF0pIHsNCisgICAgICAgICAgICAgICAgICAgIG1fQmxvY2tzLlJlbW92ZUFsbCgpOw0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKChGWF9MUEJZVEUpbV9CbG9ja3NbMF0gKyAoc2l6ZV90KW9mZnNldCwgYnVmZmVyLCBzaXplKTsNCisgICAgICAgICAgICBpZiAobV9uQ3VyU2l6ZSA8IG1fbkN1clBvcykgew0KKyAgICAgICAgICAgICAgICBtX25DdXJTaXplID0gbV9uQ3VyUG9zOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghRXhwYW5kQmxvY2tzKChzaXplX3Qpb2Zmc2V0ICsgc2l6ZSkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBtX25DdXJQb3MgPSAoc2l6ZV90KW9mZnNldCArIHNpemU7DQorICAgICAgICBzaXplX3QgblN0YXJ0QmxvY2sgPSAoc2l6ZV90KW9mZnNldCAvIG1fbkdyb3dTaXplOw0KKyAgICAgICAgb2Zmc2V0IC09IChGWF9GSUxFU0laRSkoblN0YXJ0QmxvY2sgKiBtX25Hcm93U2l6ZSk7DQorICAgICAgICB3aGlsZSAoc2l6ZSkgew0KKyAgICAgICAgICAgIHNpemVfdCBuV3JpdGUgPSBtX25Hcm93U2l6ZSAtIChzaXplX3Qpb2Zmc2V0Ow0KKyAgICAgICAgICAgIGlmIChuV3JpdGUgPiBzaXplKSB7DQorICAgICAgICAgICAgICAgIG5Xcml0ZSA9IHNpemU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKChGWF9MUEJZVEUpbV9CbG9ja3NbKGludCluU3RhcnRCbG9ja10gKyAoc2l6ZV90KW9mZnNldCwgYnVmZmVyLCBuV3JpdGUpOw0KKyAgICAgICAgICAgIGJ1ZmZlciA9ICgoRlhfTFBCWVRFKWJ1ZmZlcikgKyBuV3JpdGU7DQorICAgICAgICAgICAgc2l6ZSAtPSBuV3JpdGU7DQorICAgICAgICAgICAgblN0YXJ0QmxvY2sgKys7DQorICAgICAgICAgICAgb2Zmc2V0ID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQlGbHVzaCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCQlJc0NvbnNlY3V0aXZlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fZHdGbGFncyAmIEZYX01FTVNUUkVBTV9Db25zZWN1dGl2ZTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJRXN0aW1hdGVTaXplKHNpemVfdCBuSW5pdFNpemUsIHNpemVfdCBuR3Jvd1NpemUpDQorICAgIHsNCisgICAgICAgIGlmIChtX2R3RmxhZ3MgJiBGWF9NRU1TVFJFQU1fQ29uc2VjdXRpdmUpIHsNCisgICAgICAgICAgICBpZiAobV9CbG9ja3MuR2V0U2l6ZSgpIDwgMSkgew0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgcEJsb2NrID0gRlhfQWxsb2NhdG9yX0FsbG9jKG1fQmxvY2tzLm1fcEFsbG9jYXRvciwgRlhfQllURSwgRlhfTUFYKG5Jbml0U2l6ZSwgNDA5NikpOw0KKyAgICAgICAgICAgICAgICBpZiAocEJsb2NrKSB7DQorICAgICAgICAgICAgICAgICAgICBtX0Jsb2Nrcy5BZGQocEJsb2NrKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX25Hcm93U2l6ZSA9IEZYX01BWChuR3Jvd1NpemUsIDQwOTYpOw0KKyAgICAgICAgfSBlbHNlIGlmIChtX0Jsb2Nrcy5HZXRTaXplKCkgPCAxKSB7DQorICAgICAgICAgICAgbV9uR3Jvd1NpemUgPSBGWF9NQVgobkdyb3dTaXplLCA0MDk2KTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0xQQllURQkJCUdldEJ1ZmZlcigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX0Jsb2Nrcy5HZXRTaXplKCkgPyAoRlhfTFBCWVRFKW1fQmxvY2tzWzBdIDogTlVMTDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQJCQkJQXR0YWNoQnVmZmVyKEZYX0xQQllURSBwQnVmZmVyLCBzaXplX3QgblNpemUsIEZYX0JPT0wgYlRha2VPdmVyID0gRkFMU0UpDQorICAgIHsNCisgICAgICAgIGlmICghKG1fZHdGbGFncyAmIEZYX01FTVNUUkVBTV9Db25zZWN1dGl2ZSkpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBtX0Jsb2Nrcy5SZW1vdmVBbGwoKTsNCisgICAgICAgIG1fQmxvY2tzLkFkZChwQnVmZmVyKTsNCisgICAgICAgIG1fblRvdGFsU2l6ZSA9IG1fbkN1clNpemUgPSBuU2l6ZTsNCisgICAgICAgIG1fbkN1clBvcyA9IDA7DQorICAgICAgICBtX2R3RmxhZ3MgPSBGWF9NRU1TVFJFQU1fQ29uc2VjdXRpdmUgfCAoYlRha2VPdmVyID8gRlhfTUVNU1RSRUFNX1Rha2VPdmVyIDogMCk7DQorICAgICAgICBDbGVhclJhbmdlKCk7DQorICAgIH0NCisgICAgdmlydHVhbCB2b2lkCQkJCURldGFjaEJ1ZmZlcigpDQorICAgIHsNCisgICAgICAgIGlmICghKG1fZHdGbGFncyAmIEZYX01FTVNUUkVBTV9Db25zZWN1dGl2ZSkpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBtX0Jsb2Nrcy5SZW1vdmVBbGwoKTsNCisgICAgICAgIG1fblRvdGFsU2l6ZSA9IG1fbkN1clNpemUgPSBtX25DdXJQb3MgPSAwOw0KKyAgICAgICAgbV9kd0ZsYWdzID0gRlhfTUVNU1RSRUFNX1Rha2VPdmVyOw0KKyAgICAgICAgQ2xlYXJSYW5nZSgpOw0KKyAgICB9DQorcHJvdGVjdGVkOg0KKyAgICBDRlhfUHRyQXJyYXkJbV9CbG9ja3M7DQorICAgIEZYX0RXT1JECQltX2R3Q291bnQ7DQorICAgIHNpemVfdAkJCW1fblRvdGFsU2l6ZTsNCisgICAgc2l6ZV90CQkJbV9uQ3VyU2l6ZTsNCisgICAgc2l6ZV90CQkJbV9uQ3VyUG9zOw0KKyAgICBzaXplX3QJCQltX25Hcm93U2l6ZTsNCisgICAgRlhfRFdPUkQJCW1fZHdGbGFnczsNCisgICAgRlhfQk9PTAkJCW1fYlVzZVJhbmdlOw0KKyAgICBzaXplX3QJCQltX25PZmZzZXQ7DQorICAgIHNpemVfdAkJCW1fblNpemU7DQorICAgIEZYX0JPT0wJRXhwYW5kQmxvY2tzKHNpemVfdCBzaXplKQ0KKyAgICB7DQorICAgICAgICBpZiAobV9uQ3VyU2l6ZSA8IHNpemUpIHsNCisgICAgICAgICAgICBtX25DdXJTaXplID0gc2l6ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzaXplIDw9IG1fblRvdGFsU2l6ZSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfSU5UMzIgaUNvdW50ID0gbV9CbG9ja3MuR2V0U2l6ZSgpOw0KKyAgICAgICAgc2l6ZSA9IChzaXplIC0gbV9uVG90YWxTaXplICsgbV9uR3Jvd1NpemUgLSAxKSAvIG1fbkdyb3dTaXplOw0KKyAgICAgICAgbV9CbG9ja3MuU2V0U2l6ZShtX0Jsb2Nrcy5HZXRTaXplKCkgKyAoRlhfSU5UMzIpc2l6ZSwgLTEpOw0KKyAgICAgICAgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IG1fQmxvY2tzLm1fcEFsbG9jYXRvcjsNCisgICAgICAgIHdoaWxlIChzaXplIC0tKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIHBCbG9jayA9IEZYX0FsbG9jYXRvcl9BbGxvYyhwQWxsb2NhdG9yLCBGWF9CWVRFLCBtX25Hcm93U2l6ZSk7DQorICAgICAgICAgICAgaWYgKCFwQmxvY2spIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX0Jsb2Nrcy5TZXRBdChpQ291bnQgKyssIHBCbG9jayk7DQorICAgICAgICAgICAgbV9uVG90YWxTaXplICs9IG1fbkdyb3dTaXplOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCit9Ow0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZg0KKyNkZWZpbmUgTVRfTgkJCTg0OA0KKyNkZWZpbmUgTVRfTQkJCTQ1Ng0KKyNkZWZpbmUgTVRfTWF0cml4X0EJCTB4OTkwOGIwZGYNCisjZGVmaW5lIE1UX1VwcGVyX01hc2sJMHg4MDAwMDAwMA0KKyNkZWZpbmUgTVRfTG93ZXJfTWFzawkweDdmZmZmZmZmDQordHlwZWRlZiBzdHJ1Y3QgX0ZYX01UUkFORE9NQ09OVEVYVCB7DQorICAgIF9GWF9NVFJBTkRPTUNPTlRFWFQoKQ0KKyAgICB7DQorICAgICAgICBtdGkgPSBNVF9OICsgMTsNCisgICAgICAgIGJIYXZlU2VlZCA9IEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIG10aTsNCisgICAgRlhfQk9PTAkgYkhhdmVTZWVkOw0KKyAgICBGWF9EV09SRCBtdFtNVF9OXTsNCit9IEZYX01UUkFORE9NQ09OVEVYVCwgKiBGWF9MUE1UUkFORE9NQ09OVEVYVDsNCit0eXBlZGVmIEZYX01UUkFORE9NQ09OVEVYVCBjb25zdCAqIEZYX0xQQ01UUkFORE9NQ09OVEVYVDsNCisjaWYgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9XSU5ET1dTXw0KK0ZYX0JPT0wgRlhfR2VuZXJhdGVDcnlwdG9SYW5kb20oRlhfTFBEV09SRCBwQnVmZmVyLCBGWF9JTlQzMiBpQ291bnQpOw0KKyNlbmRpZg0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNydC9meF9hcmFiaWMuY3BwIGIvY29yZS9zcmMvZnhjcnQvZnhfYXJhYmljLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODNjZTgxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZnhfYXJhYmljLmNwcApAQCAtMCwwICsxLDg2IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGNydC9meF9leHQuaCIKKyNpbmNsdWRlICJmeF9hcmFiaWMuaCIKK2V4dGVybiBjb25zdCBGWF9EV09SRCBnc19GWF9UZXh0TGF5b3V0X0NvZGVQcm9wZXJ0aWVzWzY1NTM2XTsKK0lGWF9CaWRpQ2hhciogSUZYX0JpZGlDaGFyOjpDcmVhdGUoKQoreworICAgIHJldHVybiBGWF9ORVcgQ0ZYX0JpZGlDaGFyOworfQorQ0ZYX0JpZGlDaGFyOjpDRlhfQmlkaUNoYXIoKQorICAgIDogbV9iU2VwYXJhdGVOZXV0cmFsKFRSVUUpCisgICAgLCBtX2lDdXJTdGFydCgwKQorICAgICwgbV9pQ3VyQ291bnQoMCkKKyAgICAsIG1faUN1ckJpZGkoMCkKKyAgICAsIG1faUxhc3RCaWRpKDApCisgICAgLCBtX2lMYXN0U3RhcnQoMCkKKyAgICAsIG1faUxhc3RDb3VudCgwKQoreworfQorRlhfQk9PTCBDRlhfQmlkaUNoYXI6OkFwcGVuZENoYXIoRlhfV0NIQVIgd2NoKQoreworICAgIEZYX0RXT1JEIGR3UHJvcHMgPSBnc19GWF9UZXh0TGF5b3V0X0NvZGVQcm9wZXJ0aWVzWyhGWF9XT1JEKXdjaF07CisgICAgRlhfSU5UMzIgaUJpZGlDbHMgPSAoZHdQcm9wcyAmIEZYX0JJRElDTEFTU0JJVFNNQVNLKSA+PiBGWF9CSURJQ0xBU1NCSVRTOworICAgIEZYX0lOVDMyIGlDb250ZXh0ID0gMDsKKyAgICBzd2l0Y2ggKGlCaWRpQ2xzKSB7CisgICAgICAgIGNhc2UgRlhfQklESUNMQVNTX0w6CisgICAgICAgIGNhc2UgRlhfQklESUNMQVNTX0FOOgorICAgICAgICBjYXNlIEZYX0JJRElDTEFTU19FTjoKKyAgICAgICAgICAgIGlDb250ZXh0ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZYX0JJRElDTEFTU19SOgorICAgICAgICBjYXNlIEZYX0JJRElDTEFTU19BTDoKKyAgICAgICAgICAgIGlDb250ZXh0ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBGWF9CT09MIGJSZXQgPSBGQUxTRTsKKyAgICBpZiAoaUNvbnRleHQgIT0gbV9pQ3VyQmlkaSkgeworICAgICAgICBpZiAobV9iU2VwYXJhdGVOZXV0cmFsKSB7CisgICAgICAgICAgICBiUmV0ID0gVFJVRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtX2lDdXJCaWRpID09IDApIHsKKyAgICAgICAgICAgICAgICBiUmV0ID0gKG1faUN1ckNvdW50ID4gMCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJSZXQgPSAoaUNvbnRleHQgIT0gMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJSZXQpIHsKKyAgICAgICAgICAgIG1faUxhc3RCaWRpID0gbV9pQ3VyQmlkaTsKKyAgICAgICAgICAgIG1faUxhc3RTdGFydCA9IG1faUN1clN0YXJ0OworICAgICAgICAgICAgbV9pQ3VyU3RhcnQgPSBtX2lDdXJDb3VudDsKKyAgICAgICAgICAgIG1faUxhc3RDb3VudCA9IG1faUN1ckNvdW50IC0gbV9pTGFzdFN0YXJ0OworICAgICAgICB9CisgICAgICAgIGlmIChtX2JTZXBhcmF0ZU5ldXRyYWwgfHwgaUNvbnRleHQgIT0gMCkgeworICAgICAgICAgICAgbV9pQ3VyQmlkaSA9IGlDb250ZXh0OworICAgICAgICB9CisgICAgfQorICAgIG1faUN1ckNvdW50ICsrOworICAgIHJldHVybiBiUmV0OworfQorRlhfQk9PTCBDRlhfQmlkaUNoYXI6OkVuZENoYXIoKQoreworICAgIG1faUxhc3RCaWRpID0gbV9pQ3VyQmlkaTsKKyAgICBtX2lMYXN0U3RhcnQgPSBtX2lDdXJTdGFydDsKKyAgICBtX2lDdXJTdGFydCA9IG1faUN1ckNvdW50OworICAgIG1faUxhc3RDb3VudCA9IG1faUN1ckNvdW50IC0gbV9pTGFzdFN0YXJ0OworICAgIHJldHVybiBtX2lMYXN0Q291bnQgPiAwOworfQorRlhfSU5UMzIgQ0ZYX0JpZGlDaGFyOjpHZXRCaWRpSW5mbyhGWF9JTlQzMiAmaVN0YXJ0LCBGWF9JTlQzMiAmaUNvdW50KQoreworICAgIGlTdGFydCA9IG1faUxhc3RTdGFydDsKKyAgICBpQ291bnQgPSBtX2lMYXN0Q291bnQ7CisgICAgcmV0dXJuIG1faUxhc3RCaWRpOworfQordm9pZCBDRlhfQmlkaUNoYXI6OlJlc2V0KCkKK3sKKyAgICBtX2lDdXJTdGFydCA9IDA7CisgICAgbV9pQ3VyQ291bnQgPSAwOworICAgIG1faUN1ckJpZGkgPSAwOworICAgIG1faUxhc3RCaWRpID0gMDsKKyAgICBtX2lMYXN0U3RhcnQgPSAwOworICAgIG1faUxhc3RDb3VudCA9IDA7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNydC9meF9hcmFiaWMuaCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2FyYWJpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwM2VjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC9meF9hcmFiaWMuaApAQCAtMCwwICsxLDM0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWF9BUkFCSUNfSU1QCisjZGVmaW5lIF9GWF9BUkFCSUNfSU1QCitjbGFzcyBDRlhfQmlkaUNoYXIgOiBwdWJsaWMgSUZYX0JpZGlDaGFyLCBwdWJsaWMgQ0ZYX09iamVjdAoreworcHVibGljOgorICAgIENGWF9CaWRpQ2hhcigpOworICAgIHZpcnR1YWwgdm9pZAkJUmVsZWFzZSgpCisgICAgeworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkCQlTZXRQb2xpY3koRlhfQk9PTCBiU2VwYXJhdGVOZXV0cmFsID0gVFJVRSkKKyAgICB7CisgICAgICAgIG1fYlNlcGFyYXRlTmV1dHJhbCA9IGJTZXBhcmF0ZU5ldXRyYWw7CisgICAgfQorICAgIHZpcnR1YWwgRlhfQk9PTAkJQXBwZW5kQ2hhcihGWF9XQ0hBUiB3Y2gpOworICAgIHZpcnR1YWwgRlhfQk9PTAkJRW5kQ2hhcigpOworICAgIHZpcnR1YWwgRlhfSU5UMzIJR2V0QmlkaUluZm8oRlhfSU5UMzIgJmlTdGFydCwgRlhfSU5UMzIgJmlDb3VudCk7CisgICAgdmlydHVhbCB2b2lkCQlSZXNldCgpOworcHJvdGVjdGVkOgorICAgIEZYX0JPT0wJCW1fYlNlcGFyYXRlTmV1dHJhbDsKKyAgICBGWF9JTlQzMgltX2lDdXJTdGFydDsKKyAgICBGWF9JTlQzMgltX2lDdXJDb3VudDsKKyAgICBGWF9JTlQzMgltX2lDdXJCaWRpOworICAgIEZYX0lOVDMyCW1faUxhc3RCaWRpOworICAgIEZYX0lOVDMyCW1faUxhc3RTdGFydDsKKyAgICBGWF9JTlQzMgltX2lMYXN0Q291bnQ7Cit9OworI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNydC9meF9iYXNpY19hcnJheS5jcHAgYi9jb3JlL3NyYy9meGNydC9meF9iYXNpY19hcnJheS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY4NTdjZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX2FycmF5LmNwcApAQCAtMCwwICsxLDM2NSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCINCitDRlhfQmFzaWNBcnJheTo6Q0ZYX0Jhc2ljQXJyYXkoaW50IHVuaXRfc2l6ZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCisgICAgOiBtX3BBbGxvY2F0b3IocEFsbG9jYXRvcikNCisgICAgLCBtX3BEYXRhKE5VTEwpDQorICAgICwgbV9uU2l6ZSgwKQ0KKyAgICAsIG1fbk1heFNpemUoMCkNCisgICAgLCBtX25Hcm93QnkoMCkNCit7DQorICAgIGlmICh1bml0X3NpemUgPCAwIHx8IHVuaXRfc2l6ZSA+ICgxIDw8IDI4KSkgew0KKyAgICAgICAgbV9uVW5pdFNpemUgPSA0Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9uVW5pdFNpemUgPSB1bml0X3NpemU7DQorICAgIH0NCit9DQorQ0ZYX0Jhc2ljQXJyYXk6On5DRlhfQmFzaWNBcnJheSgpDQorew0KKyAgICBGWF9BbGxvY2F0b3JfRnJlZShtX3BBbGxvY2F0b3IsIG1fcERhdGEpOw0KK30NCitGWF9CT09MIENGWF9CYXNpY0FycmF5OjpTZXRTaXplKGludCBuTmV3U2l6ZSwgaW50IG5Hcm93QnkpDQorew0KKyAgICBpZiAobk5ld1NpemUgPCAwIHx8IG5OZXdTaXplID4gKDEgPDwgMjgpIC8gbV9uVW5pdFNpemUpIHsNCisgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICAgICAgbV9uU2l6ZSA9IG1fbk1heFNpemUgPSAwOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChuR3Jvd0J5ID49IDApIHsNCisgICAgICAgIG1fbkdyb3dCeSA9IG5Hcm93Qnk7DQorICAgIH0NCisgICAgaWYgKG5OZXdTaXplID09IDApIHsNCisgICAgICAgIGlmIChtX3BEYXRhICE9IE5VTEwpIHsNCisgICAgICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShtX3BBbGxvY2F0b3IsIG1fcERhdGEpOw0KKyAgICAgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9uU2l6ZSA9IG1fbk1heFNpemUgPSAwOw0KKyAgICB9IGVsc2UgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgbV9wRGF0YSA9IEZYX0FsbG9jYXRvcl9BbGxvYyhtX3BBbGxvY2F0b3IsIEZYX0JZVEUsIG5OZXdTaXplICogbV9uVW5pdFNpemUpOw0KKyAgICAgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICAgICAgbV9uU2l6ZSA9IG1fbk1heFNpemUgPSAwOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbXNldDMyKG1fcERhdGEsIDAsIG5OZXdTaXplICogbV9uVW5pdFNpemUpOw0KKyAgICAgICAgbV9uU2l6ZSA9IG1fbk1heFNpemUgPSBuTmV3U2l6ZTsNCisgICAgfSBlbHNlIGlmIChuTmV3U2l6ZSA8PSBtX25NYXhTaXplKSB7DQorICAgICAgICBpZiAobk5ld1NpemUgPiBtX25TaXplKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtc2V0MzIobV9wRGF0YSArIG1fblNpemUgKiBtX25Vbml0U2l6ZSwgMCwgKG5OZXdTaXplIC0gbV9uU2l6ZSkgKiBtX25Vbml0U2l6ZSk7DQorICAgICAgICB9DQorICAgICAgICBtX25TaXplID0gbk5ld1NpemU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpbnQgbkdyb3dCeSA9IG1fbkdyb3dCeTsNCisgICAgICAgIGlmIChuR3Jvd0J5ID09IDApIHsNCisgICAgICAgICAgICBuR3Jvd0J5ID0gbV9uU2l6ZSAvIDg7DQorICAgICAgICAgICAgbkdyb3dCeSA9IChuR3Jvd0J5IDwgNCkgPyA0IDogKChuR3Jvd0J5ID4gMTAyNCkgPyAxMDI0IDogbkdyb3dCeSk7DQorICAgICAgICB9DQorICAgICAgICBpbnQgbk5ld01heDsNCisgICAgICAgIGlmIChuTmV3U2l6ZSA8IG1fbk1heFNpemUgKyBuR3Jvd0J5KSB7DQorICAgICAgICAgICAgbk5ld01heCA9IG1fbk1heFNpemUgKyBuR3Jvd0J5Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBuTmV3TWF4ID0gbk5ld1NpemU7DQorICAgICAgICB9DQorICAgICAgICBGWF9MUEJZVEUgcE5ld0RhdGEgPSBGWF9BbGxvY2F0b3JfUmVhbGxvYyhtX3BBbGxvY2F0b3IsIEZYX0JZVEUsIG1fcERhdGEsIG5OZXdNYXggKiBtX25Vbml0U2l6ZSk7DQorICAgICAgICBpZiAocE5ld0RhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbXNldDMyKHBOZXdEYXRhICsgbV9uU2l6ZSAqIG1fblVuaXRTaXplLCAwLCAobk5ld01heCAtIG1fblNpemUpICogbV9uVW5pdFNpemUpOw0KKyAgICAgICAgbV9wRGF0YSA9IHBOZXdEYXRhOw0KKyAgICAgICAgbV9uU2l6ZSA9IG5OZXdTaXplOw0KKyAgICAgICAgbV9uTWF4U2l6ZSA9IG5OZXdNYXg7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0Jhc2ljQXJyYXk6OkFwcGVuZChjb25zdCBDRlhfQmFzaWNBcnJheSYgc3JjKQ0KK3sNCisgICAgaW50IG5PbGRTaXplID0gbV9uU2l6ZTsNCisgICAgaWYgKCFTZXRTaXplKG1fblNpemUgKyBzcmMubV9uU2l6ZSwgLTEpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIobV9wRGF0YSArIG5PbGRTaXplICogbV9uVW5pdFNpemUsIHNyYy5tX3BEYXRhLCBzcmMubV9uU2l6ZSAqIG1fblVuaXRTaXplKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0Jhc2ljQXJyYXk6OkNvcHkoY29uc3QgQ0ZYX0Jhc2ljQXJyYXkmIHNyYykNCit7DQorICAgIGlmICghU2V0U2l6ZShzcmMubV9uU2l6ZSwgLTEpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIobV9wRGF0YSwgc3JjLm1fcERhdGEsIHNyYy5tX25TaXplICogbV9uVW5pdFNpemUpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfTFBCWVRFIENGWF9CYXNpY0FycmF5OjpJbnNlcnRTcGFjZUF0KGludCBuSW5kZXgsIGludCBuQ291bnQpDQorew0KKyAgICBpZiAobkluZGV4IDwgMCB8fCBuQ291bnQgPD0gMCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKG5JbmRleCA+PSBtX25TaXplKSB7DQorICAgICAgICBpZiAoIVNldFNpemUobkluZGV4ICsgbkNvdW50LCAtMSkpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCBuT2xkU2l6ZSA9IG1fblNpemU7DQorICAgICAgICBpZiAoIVNldFNpemUobV9uU2l6ZSArIG5Db3VudCwgLTEpKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBGWFNZU19tZW1tb3ZlMzIobV9wRGF0YSArIChuSW5kZXggKyBuQ291bnQpKm1fblVuaXRTaXplLCBtX3BEYXRhICsgbkluZGV4ICogbV9uVW5pdFNpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgKG5PbGRTaXplIC0gbkluZGV4KSAqIG1fblVuaXRTaXplKTsNCisgICAgICAgIEZYU1lTX21lbXNldDMyKG1fcERhdGEgKyBuSW5kZXggKiBtX25Vbml0U2l6ZSwgMCwgbkNvdW50ICogbV9uVW5pdFNpemUpOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BEYXRhICsgbkluZGV4ICogbV9uVW5pdFNpemU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0Jhc2ljQXJyYXk6OlJlbW92ZUF0KGludCBuSW5kZXgsIGludCBuQ291bnQpDQorew0KKyAgICBpZiAobkluZGV4IDwgMCB8fCBuQ291bnQgPD0gMCB8fCBtX25TaXplIDwgbkluZGV4ICsgbkNvdW50KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IG5Nb3ZlQ291bnQgPSBtX25TaXplIC0gKG5JbmRleCArIG5Db3VudCk7DQorICAgIGlmIChuTW92ZUNvdW50KSB7DQorICAgICAgICBGWFNZU19tZW1tb3ZlMzIobV9wRGF0YSArIG5JbmRleCAqIG1fblVuaXRTaXplLCBtX3BEYXRhICsgKG5JbmRleCArIG5Db3VudCkgKiBtX25Vbml0U2l6ZSwgbk1vdmVDb3VudCAqIG1fblVuaXRTaXplKTsNCisgICAgfQ0KKyAgICBtX25TaXplIC09IG5Db3VudDsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0Jhc2ljQXJyYXk6Okluc2VydEF0KGludCBuU3RhcnRJbmRleCwgY29uc3QgQ0ZYX0Jhc2ljQXJyYXkqIHBOZXdBcnJheSkNCit7DQorICAgIGlmIChwTmV3QXJyYXkgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChwTmV3QXJyYXktPm1fblNpemUgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKCFJbnNlcnRTcGFjZUF0KG5TdGFydEluZGV4LCBwTmV3QXJyYXktPm1fblNpemUpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIobV9wRGF0YSArIG5TdGFydEluZGV4ICogbV9uVW5pdFNpemUsIHBOZXdBcnJheS0+bV9wRGF0YSwgcE5ld0FycmF5LT5tX25TaXplICogbV9uVW5pdFNpemUpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorY29uc3Qgdm9pZCogQ0ZYX0Jhc2ljQXJyYXk6OkdldERhdGFQdHIoaW50IGluZGV4KSBjb25zdA0KK3sNCisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBtX25TaXplIHx8IG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcERhdGEgKyBpbmRleCAqIG1fblVuaXRTaXplOw0KK30NCitDRlhfQmFzZVNlZ21lbnRlZEFycmF5OjpDRlhfQmFzZVNlZ21lbnRlZEFycmF5KGludCB1bml0X3NpemUsIGludCBzZWdtZW50X3VuaXRzLCBpbnQgaW5kZXhfc2l6ZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCisgICAgOiBtX3BBbGxvY2F0b3IocEFsbG9jYXRvcikNCisgICAgLCBtX1VuaXRTaXplKHVuaXRfc2l6ZSkNCisgICAgLCBtX1NlZ21lbnRTaXplKHNlZ21lbnRfdW5pdHMpDQorICAgICwgbV9JbmRleFNpemUoaW5kZXhfc2l6ZSkNCisgICAgLCBtX0luZGV4RGVwdGgoMCkNCisgICAgLCBtX0RhdGFTaXplKDApDQorICAgICwgbV9wSW5kZXgoTlVMTCkNCit7DQorfQ0KK3ZvaWQgQ0ZYX0Jhc2VTZWdtZW50ZWRBcnJheTo6U2V0VW5pdFNpemUoaW50IHVuaXRfc2l6ZSwgaW50IHNlZ21lbnRfdW5pdHMsIGludCBpbmRleF9zaXplKQ0KK3sNCisgICAgQVNTRVJUKG1fRGF0YVNpemUgPT0gMCk7DQorICAgIG1fVW5pdFNpemUgPSB1bml0X3NpemU7DQorICAgIG1fU2VnbWVudFNpemUgPSBzZWdtZW50X3VuaXRzOw0KKyAgICBtX0luZGV4U2l6ZSA9IGluZGV4X3NpemU7DQorfQ0KK0NGWF9CYXNlU2VnbWVudGVkQXJyYXk6On5DRlhfQmFzZVNlZ21lbnRlZEFycmF5KCkNCit7DQorICAgIFJlbW92ZUFsbCgpOw0KK30NCitzdGF0aWMgdm9pZCBfQ2xlYXJJbmRleChJRlhfQWxsb2NhdG9yKiBwQWxsY2F0b3IsIGludCBsZXZlbCwgaW50IHNpemUsIHZvaWQqKiBwSW5kZXgpDQorew0KKyAgICBpZiAobGV2ZWwgPT0gMCkgew0KKyAgICAgICAgRlhfQWxsb2NhdG9yX0ZyZWUocEFsbGNhdG9yLCBwSW5kZXgpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgew0KKyAgICAgICAgaWYgKHBJbmRleFtpXSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBfQ2xlYXJJbmRleChwQWxsY2F0b3IsIGxldmVsIC0gMSwgc2l6ZSwgKHZvaWQqKilwSW5kZXhbaV0pOw0KKyAgICB9DQorICAgIEZYX0FsbG9jYXRvcl9GcmVlKHBBbGxjYXRvciwgcEluZGV4KTsNCit9DQordm9pZCBDRlhfQmFzZVNlZ21lbnRlZEFycmF5OjpSZW1vdmVBbGwoKQ0KK3sNCisgICAgaWYgKG1fcEluZGV4ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBfQ2xlYXJJbmRleChtX3BBbGxvY2F0b3IsIG1fSW5kZXhEZXB0aCwgbV9JbmRleFNpemUsICh2b2lkKiopbV9wSW5kZXgpOw0KKyAgICBtX3BJbmRleCA9IE5VTEw7DQorICAgIG1fSW5kZXhEZXB0aCA9IDA7DQorICAgIG1fRGF0YVNpemUgPSAwOw0KK30NCit2b2lkKiBDRlhfQmFzZVNlZ21lbnRlZEFycmF5OjpBZGQoKQ0KK3sNCisgICAgaWYgKG1fRGF0YVNpemUgJSBtX1NlZ21lbnRTaXplKSB7DQorICAgICAgICByZXR1cm4gR2V0QXQobV9EYXRhU2l6ZSArKyk7DQorICAgIH0NCisgICAgdm9pZCogcFNlZ21lbnQgPSBGWF9BbGxvY2F0b3JfQWxsb2MobV9wQWxsb2NhdG9yLCBGWF9CWVRFLCBtX1VuaXRTaXplICogbV9TZWdtZW50U2l6ZSk7DQorICAgIGlmICghcFNlZ21lbnQpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BJbmRleCA9PSBOVUxMKSB7DQorICAgICAgICBtX3BJbmRleCA9IHBTZWdtZW50Ow0KKyAgICAgICAgbV9EYXRhU2l6ZSArKzsNCisgICAgICAgIHJldHVybiBwU2VnbWVudDsNCisgICAgfQ0KKyAgICBpZiAobV9JbmRleERlcHRoID09IDApIHsNCisgICAgICAgIHZvaWQqKiBwSW5kZXggPSAodm9pZCoqKUZYX0FsbG9jYXRvcl9BbGxvYyhtX3BBbGxvY2F0b3IsIHZvaWQqLCBtX0luZGV4U2l6ZSk7DQorICAgICAgICBpZiAocEluZGV4ID09IE5VTEwpIHsNCisgICAgICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShtX3BBbGxvY2F0b3IsIHBTZWdtZW50KTsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbXNldDMyKHBJbmRleCwgMCwgc2l6ZW9mKHZvaWQqKSAqIG1fSW5kZXhTaXplKTsNCisgICAgICAgIHBJbmRleFswXSA9IG1fcEluZGV4Ow0KKyAgICAgICAgcEluZGV4WzFdID0gcFNlZ21lbnQ7DQorICAgICAgICBtX3BJbmRleCA9IHBJbmRleDsNCisgICAgICAgIG1fRGF0YVNpemUgKys7DQorICAgICAgICBtX0luZGV4RGVwdGggKys7DQorICAgICAgICByZXR1cm4gcFNlZ21lbnQ7DQorICAgIH0NCisgICAgaW50IHNlZ19pbmRleCA9IG1fRGF0YVNpemUgLyBtX1NlZ21lbnRTaXplOw0KKyAgICBpZiAoc2VnX2luZGV4ICUgbV9JbmRleFNpemUpIHsNCisgICAgICAgIHZvaWQqKiBwSW5kZXggPSBHZXRJbmRleChzZWdfaW5kZXgpOw0KKyAgICAgICAgcEluZGV4W3NlZ19pbmRleCAlIG1fSW5kZXhTaXplXSA9IHBTZWdtZW50Ow0KKyAgICAgICAgbV9EYXRhU2l6ZSArKzsNCisgICAgICAgIHJldHVybiBwU2VnbWVudDsNCisgICAgfQ0KKyAgICBpbnQgdHJlZV9zaXplID0gMTsNCisgICAgaW50IGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX0luZGV4RGVwdGg7IGkgKyspIHsNCisgICAgICAgIHRyZWVfc2l6ZSAqPSBtX0luZGV4U2l6ZTsNCisgICAgfQ0KKyAgICBpZiAobV9EYXRhU2l6ZSA9PSB0cmVlX3NpemUgKiBtX1NlZ21lbnRTaXplKSB7DQorICAgICAgICB2b2lkKiogcEluZGV4ID0gKHZvaWQqKilGWF9BbGxvY2F0b3JfQWxsb2MobV9wQWxsb2NhdG9yLCB2b2lkKiwgbV9JbmRleFNpemUpOw0KKyAgICAgICAgaWYgKHBJbmRleCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgRlhfQWxsb2NhdG9yX0ZyZWUobV9wQWxsb2NhdG9yLCBwU2VnbWVudCk7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBGWFNZU19tZW1zZXQzMihwSW5kZXgsIDAsIHNpemVvZih2b2lkKikgKiBtX0luZGV4U2l6ZSk7DQorICAgICAgICBwSW5kZXhbMF0gPSBtX3BJbmRleDsNCisgICAgICAgIG1fcEluZGV4ID0gcEluZGV4Ow0KKyAgICAgICAgbV9JbmRleERlcHRoICsrOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgdHJlZV9zaXplIC89IG1fSW5kZXhTaXplOw0KKyAgICB9DQorICAgIHZvaWQqKiBwU3BvdCA9ICh2b2lkKiopbV9wSW5kZXg7DQorICAgIGZvciAoaSA9IDE7IGkgPCBtX0luZGV4RGVwdGg7IGkgKyspIHsNCisgICAgICAgIGlmIChwU3BvdFtzZWdfaW5kZXggLyB0cmVlX3NpemVdID09IE5VTEwpIHsNCisgICAgICAgICAgICBwU3BvdFtzZWdfaW5kZXggLyB0cmVlX3NpemVdID0gKHZvaWQqKUZYX0FsbG9jYXRvcl9BbGxvYyhtX3BBbGxvY2F0b3IsIHZvaWQqLCBtX0luZGV4U2l6ZSk7DQorICAgICAgICAgICAgaWYgKHBTcG90W3NlZ19pbmRleCAvIHRyZWVfc2l6ZV0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhTWVNfbWVtc2V0MzIocFNwb3Rbc2VnX2luZGV4IC8gdHJlZV9zaXplXSwgMCwgc2l6ZW9mKHZvaWQqKSAqIG1fSW5kZXhTaXplKTsNCisgICAgICAgIH0NCisgICAgICAgIHBTcG90ID0gKHZvaWQqKilwU3BvdFtzZWdfaW5kZXggLyB0cmVlX3NpemVdOw0KKyAgICAgICAgc2VnX2luZGV4ID0gc2VnX2luZGV4ICUgdHJlZV9zaXplOw0KKyAgICAgICAgdHJlZV9zaXplIC89IG1fSW5kZXhTaXplOw0KKyAgICB9DQorICAgIGlmIChpIDwgbV9JbmRleERlcHRoKSB7DQorICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShtX3BBbGxvY2F0b3IsIHBTZWdtZW50KTsNCisgICAgICAgIFJlbW92ZUFsbCgpOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcFNwb3Rbc2VnX2luZGV4ICUgbV9JbmRleFNpemVdID0gcFNlZ21lbnQ7DQorICAgIG1fRGF0YVNpemUgKys7DQorICAgIHJldHVybiBwU2VnbWVudDsNCit9DQordm9pZCoqIENGWF9CYXNlU2VnbWVudGVkQXJyYXk6OkdldEluZGV4KGludCBzZWdfaW5kZXgpIGNvbnN0DQorew0KKyAgICBBU1NFUlQobV9JbmRleERlcHRoICE9IDApOw0KKyAgICBpZiAobV9JbmRleERlcHRoID09IDEpIHsNCisgICAgICAgIHJldHVybiAodm9pZCoqKW1fcEluZGV4Ow0KKyAgICB9IGVsc2UgaWYgKG1fSW5kZXhEZXB0aCA9PSAyKSB7DQorICAgICAgICByZXR1cm4gKHZvaWQqKikoKHZvaWQqKiltX3BJbmRleClbc2VnX2luZGV4IC8gbV9JbmRleFNpemVdOw0KKyAgICB9DQorICAgIGludCB0cmVlX3NpemUgPSAxOw0KKyAgICBpbnQgaTsNCisgICAgZm9yIChpID0gMTsgaSA8IG1fSW5kZXhEZXB0aDsgaSArKykgew0KKyAgICAgICAgdHJlZV9zaXplICo9IG1fSW5kZXhTaXplOw0KKyAgICB9DQorICAgIHZvaWQqKiBwU3BvdCA9ICh2b2lkKiopbV9wSW5kZXg7DQorICAgIGZvciAoaSA9IDE7IGkgPCBtX0luZGV4RGVwdGg7IGkgKyspIHsNCisgICAgICAgIHBTcG90ID0gKHZvaWQqKilwU3BvdFtzZWdfaW5kZXggLyB0cmVlX3NpemVdOw0KKyAgICAgICAgc2VnX2luZGV4ID0gc2VnX2luZGV4ICUgdHJlZV9zaXplOw0KKyAgICAgICAgdHJlZV9zaXplIC89IG1fSW5kZXhTaXplOw0KKyAgICB9DQorICAgIHJldHVybiBwU3BvdDsNCit9DQordm9pZCogQ0ZYX0Jhc2VTZWdtZW50ZWRBcnJheTo6SXRlcmF0ZVNlZ21lbnQoRlhfTFBDQllURSBwU2VnbWVudCwgaW50IGNvdW50LCBGWF9CT09MICgqY2FsbGJhY2spKHZvaWQqIHBhcmFtLCB2b2lkKiBwRGF0YSksIHZvaWQqIHBhcmFtKSBjb25zdA0KK3sNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSArKykgew0KKyAgICAgICAgaWYgKCFjYWxsYmFjayhwYXJhbSwgKHZvaWQqKShwU2VnbWVudCArIGkgKiBtX1VuaXRTaXplKSkpIHsNCisgICAgICAgICAgICByZXR1cm4gKHZvaWQqKShwU2VnbWVudCArIGkgKiBtX1VuaXRTaXplKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQordm9pZCogQ0ZYX0Jhc2VTZWdtZW50ZWRBcnJheTo6SXRlcmF0ZUluZGV4KGludCBsZXZlbCwgaW50JiBzdGFydCwgdm9pZCoqIHBJbmRleCwgRlhfQk9PTCAoKmNhbGxiYWNrKSh2b2lkKiBwYXJhbSwgdm9pZCogcERhdGEpLCB2b2lkKiBwYXJhbSkgY29uc3QNCit7DQorICAgIGlmIChsZXZlbCA9PSAwKSB7DQorICAgICAgICBpbnQgY291bnQgPSBtX0RhdGFTaXplIC0gc3RhcnQ7DQorICAgICAgICBpZiAoY291bnQgPiBtX1NlZ21lbnRTaXplKSB7DQorICAgICAgICAgICAgY291bnQgPSBtX1NlZ21lbnRTaXplOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3RhcnQgKz0gY291bnQ7DQorICAgICAgICByZXR1cm4gSXRlcmF0ZVNlZ21lbnQoKEZYX0xQQ0JZVEUpcEluZGV4LCBjb3VudCwgY2FsbGJhY2ssIHBhcmFtKTsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fSW5kZXhTaXplOyBpICsrKSB7DQorICAgICAgICBpZiAocEluZGV4W2ldID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIHZvaWQqIHAgPSBJdGVyYXRlSW5kZXgobGV2ZWwgLSAxLCBzdGFydCwgKHZvaWQqKilwSW5kZXhbaV0sIGNhbGxiYWNrLCBwYXJhbSk7DQorICAgICAgICBpZiAocCkgew0KKyAgICAgICAgICAgIHJldHVybiBwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCit2b2lkKiBDRlhfQmFzZVNlZ21lbnRlZEFycmF5OjpJdGVyYXRlKEZYX0JPT0wgKCpjYWxsYmFjaykodm9pZCogcGFyYW0sIHZvaWQqIHBEYXRhKSwgdm9pZCogcGFyYW0pIGNvbnN0DQorew0KKyAgICBpZiAobV9wSW5kZXggPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaW50IHN0YXJ0ID0gMDsNCisgICAgcmV0dXJuIEl0ZXJhdGVJbmRleChtX0luZGV4RGVwdGgsIHN0YXJ0LCAodm9pZCoqKW1fcEluZGV4LCBjYWxsYmFjaywgcGFyYW0pOw0KK30NCit2b2lkKiBDRlhfQmFzZVNlZ21lbnRlZEFycmF5OjpHZXRBdChpbnQgaW5kZXgpIGNvbnN0DQorew0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG1fRGF0YVNpemUpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX0luZGV4RGVwdGggPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIChGWF9MUEJZVEUpbV9wSW5kZXggKyBtX1VuaXRTaXplICogaW5kZXg7DQorICAgIH0NCisgICAgaW50IHNlZ19pbmRleCA9IGluZGV4IC8gbV9TZWdtZW50U2l6ZTsNCisgICAgcmV0dXJuIChGWF9MUEJZVEUpR2V0SW5kZXgoc2VnX2luZGV4KVtzZWdfaW5kZXggJSBtX0luZGV4U2l6ZV0gKyAoaW5kZXggJSBtX1NlZ21lbnRTaXplKSAqIG1fVW5pdFNpemU7DQorfQ0KK3ZvaWQgQ0ZYX0Jhc2VTZWdtZW50ZWRBcnJheTo6RGVsZXRlKGludCBpbmRleCwgaW50IGNvdW50KQ0KK3sNCisgICAgaWYoaW5kZXggPCAwIHx8IGNvdW50IDwgMSB8fCBpbmRleCArIGNvdW50ID4gbV9EYXRhU2l6ZSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSBpbmRleDsgaSA8IG1fRGF0YVNpemUgLSBjb3VudDsgaSArKykgew0KKyAgICAgICAgRlhfQllURSogcFNyYyA9IChGWF9CWVRFKilHZXRBdChpICsgY291bnQpOw0KKyAgICAgICAgRlhfQllURSogcERlc3QgPSAoRlhfQllURSopR2V0QXQoaSk7DQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fVW5pdFNpemU7IGogKyspIHsNCisgICAgICAgICAgICBwRGVzdFtqXSA9IHBTcmNbal07DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IG5ld19zZWdzID0gKG1fRGF0YVNpemUgLSBjb3VudCArIG1fU2VnbWVudFNpemUgLSAxKSAvIG1fU2VnbWVudFNpemU7DQorICAgIGludCBvbGRfc2VncyA9IChtX0RhdGFTaXplICsgbV9TZWdtZW50U2l6ZSAtIDEpIC8gbV9TZWdtZW50U2l6ZTsNCisgICAgaWYgKG5ld19zZWdzIDwgb2xkX3NlZ3MpIHsNCisgICAgICAgIGlmKG1fSW5kZXhEZXB0aCkgew0KKyAgICAgICAgICAgIGZvciAoaSA9IG5ld19zZWdzOyBpIDwgb2xkX3NlZ3M7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgdm9pZCoqIHBJbmRleCA9IEdldEluZGV4KGkpOw0KKyAgICAgICAgICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShtX3BBbGxvY2F0b3IsIHBJbmRleFtpICUgbV9JbmRleFNpemVdKTsNCisgICAgICAgICAgICAgICAgcEluZGV4W2kgJSBtX0luZGV4U2l6ZV0gPSBOVUxMOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgRlhfQWxsb2NhdG9yX0ZyZWUobV9wQWxsb2NhdG9yLCBtX3BJbmRleCk7DQorICAgICAgICAgICAgbV9wSW5kZXggPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fRGF0YVNpemUgLT0gY291bnQ7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX2JzdHJpbmcuY3BwIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfYnN0cmluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI4YjA2OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX2JzdHJpbmcuY3BwCkBAIC0wLDAgKzEsMTIwNCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCINCitzdGF0aWMgaW50IF9CdWZmZXJfaXRvYShjaGFyKiBidWYsIGludCBpLCBGWF9EV09SRCBmbGFncykNCit7DQorICAgIGlmIChpID09IDApIHsNCisgICAgICAgIGJ1ZlswXSA9ICcwJzsNCisgICAgICAgIHJldHVybiAxOw0KKyAgICB9DQorICAgIGNoYXIgYnVmMVszMl07DQorICAgIGludCBidWZfcG9zID0gMzE7DQorICAgIEZYX0RXT1JEIHUgPSBpOw0KKyAgICBpZiAoKGZsYWdzICYgRlhGT1JNQVRfU0lHTkVEKSAmJiBpIDwgMCkgew0KKyAgICAgICAgdSA9IC1pOw0KKyAgICB9DQorICAgIGludCBiYXNlID0gMTA7DQorICAgIEZYX0xQQ1NUUiBzdHJpbmcgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7DQorICAgIGlmIChmbGFncyAmIEZYRk9STUFUX0hFWCkgew0KKyAgICAgICAgYmFzZSA9IDE2Ow0KKyAgICAgICAgaWYgKGZsYWdzICYgRlhGT1JNQVRfQ0FQSVRBTCkgew0KKyAgICAgICAgICAgIHN0cmluZyA9ICIwMTIzNDU2Nzg5QUJDREVGIjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB3aGlsZSAodSAhPSAwKSB7DQorICAgICAgICBidWYxW2J1Zl9wb3MtLV0gPSBzdHJpbmdbdSAlIGJhc2VdOw0KKyAgICAgICAgdSA9IHUgLyBiYXNlOw0KKyAgICB9DQorICAgIGlmICgoZmxhZ3MgJiBGWEZPUk1BVF9TSUdORUQpICYmIGkgPCAwKSB7DQorICAgICAgICBidWYxW2J1Zl9wb3MtLV0gPSAnLSc7DQorICAgIH0NCisgICAgaW50IGxlbiA9IDMxIC0gYnVmX3BvczsNCisgICAgZm9yIChpbnQgaWkgPSAwOyBpaSA8IGxlbjsgaWkgKyspIHsNCisgICAgICAgIGJ1ZltpaV0gPSBidWYxW2lpICsgYnVmX3BvcyArIDFdOw0KKyAgICB9DQorICAgIHJldHVybiBsZW47DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENGWF9CeXRlU3RyaW5nOjpGb3JtYXRJbnRlZ2VyKGludCBpLCBGWF9EV09SRCBmbGFncykNCit7DQorICAgIGNoYXIgYnVmWzMyXTsNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nQyhidWYsIF9CdWZmZXJfaXRvYShidWYsIGksIGZsYWdzKSk7DQorfQ0KK3N0YXRpYyBDRlhfU3RyaW5nRGF0YSogRlhfQWxsb2NTdHJpbmcoaW50IG5MZW4pDQorew0KKyAgICBpZiAobkxlbiA9PSAwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfU3RyaW5nRGF0YSogcERhdGEgPSAoQ0ZYX1N0cmluZ0RhdGEqKUZYX0FsbG9jKEZYX0JZVEUsIHNpemVvZihsb25nKSAqIDMgKyAobkxlbiArIDEpICogc2l6ZW9mKGNoYXIpKTsNCisgICAgaWYgKCFwRGF0YSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcERhdGEtPm1fbkFsbG9jTGVuZ3RoID0gbkxlbjsNCisgICAgcERhdGEtPm1fbkRhdGFMZW5ndGggPSBuTGVuOw0KKyAgICBwRGF0YS0+bV9uUmVmcyA9IDE7DQorICAgIHBEYXRhLT5tX1N0cmluZ1tuTGVuXSA9IDA7DQorICAgIHJldHVybiBwRGF0YTsNCit9DQorc3RhdGljIHZvaWQgRlhfUmVsZWFzZVN0cmluZyhDRlhfU3RyaW5nRGF0YSogcERhdGEpDQorew0KKyAgICBpZiAocERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHBEYXRhLT5tX25SZWZzIC0tOw0KKyAgICBpZiAocERhdGEtPm1fblJlZnMgPD0gMCkgew0KKyAgICAgICAgRlhfRnJlZShwRGF0YSk7DQorICAgIH0NCit9DQorQ0ZYX0J5dGVTdHJpbmc6On5DRlhfQnl0ZVN0cmluZygpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wRGF0YS0+bV9uUmVmcyAtLTsNCisgICAgaWYgKG1fcERhdGEtPm1fblJlZnMgPCAxKSB7DQorICAgICAgICBGWF9GcmVlKG1fcERhdGEpOw0KKyAgICB9DQorfQ0KK0NGWF9CeXRlU3RyaW5nOjpDRlhfQnl0ZVN0cmluZyhGWF9MUENTVFIgbHBzeiwgRlhfU1RSU0laRSBuTGVuKQ0KK3sNCisgICAgaWYgKG5MZW4gPCAwKSB7DQorICAgICAgICBuTGVuID0gbHBzeiA/IChGWF9TVFJTSVpFKUZYU1lTX3N0cmxlbihscHN6KSA6IDA7DQorICAgIH0NCisgICAgaWYgKG5MZW4pIHsNCisgICAgICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZyhuTGVuKTsNCisgICAgICAgIGlmIChtX3BEYXRhKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wRGF0YS0+bV9TdHJpbmcsIGxwc3osIG5MZW4gKiBzaXplb2YoY2hhcikpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wRGF0YSA9IE5VTEw7DQorICAgIH0NCit9DQorQ0ZYX0J5dGVTdHJpbmc6OkNGWF9CeXRlU3RyaW5nKEZYX0xQQ0JZVEUgbHBzeiwgRlhfU1RSU0laRSBuTGVuKQ0KK3sNCisgICAgaWYgKG5MZW4gPiAwKSB7DQorICAgICAgICBtX3BEYXRhID0gRlhfQWxsb2NTdHJpbmcobkxlbik7DQorICAgICAgICBpZiAobV9wRGF0YSkgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nLCBscHN6LCBuTGVuICogc2l6ZW9mKGNoYXIpKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICB9DQorfQ0KK0NGWF9CeXRlU3RyaW5nOjpDRlhfQnl0ZVN0cmluZyhjaGFyIGNoKQ0KK3sNCisgICAgbV9wRGF0YSA9IEZYX0FsbG9jU3RyaW5nKDEpOw0KKyAgICBpZiAobV9wRGF0YSkgew0KKyAgICAgICAgbV9wRGF0YS0+bV9TdHJpbmdbMF0gPSBjaDsNCisgICAgfQ0KK30NCitDRlhfQnl0ZVN0cmluZzo6Q0ZYX0J5dGVTdHJpbmcoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0cmluZ1NyYykNCit7DQorICAgIGlmIChzdHJpbmdTcmMubV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoc3RyaW5nU3JjLm1fcERhdGEtPm1fblJlZnMgPj0gMCkgew0KKyAgICAgICAgbV9wRGF0YSA9IHN0cmluZ1NyYy5tX3BEYXRhOw0KKyAgICAgICAgbV9wRGF0YS0+bV9uUmVmcyArKzsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICAgICAgKnRoaXMgPSBzdHJpbmdTcmM7DQorICAgIH0NCit9DQorQ0ZYX0J5dGVTdHJpbmc6OkNGWF9CeXRlU3RyaW5nKEZYX0JTVFIgc3RyaW5nU3JjKQ0KK3sNCisgICAgaWYgKHN0cmluZ1NyYy5Jc0VtcHR5KCkpIHsNCisgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wRGF0YSA9IE5VTEw7DQorICAgICAgICAqdGhpcyA9IHN0cmluZ1NyYzsNCisgICAgfQ0KK30NCitDRlhfQnl0ZVN0cmluZzo6Q0ZYX0J5dGVTdHJpbmcoRlhfQlNUUiBzdHIxLCBGWF9CU1RSIHN0cjIpDQorew0KKyAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgaW50IG5OZXdMZW4gPSBzdHIxLkdldExlbmd0aCgpICsgc3RyMi5HZXRMZW5ndGgoKTsNCisgICAgaWYgKG5OZXdMZW4gPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZyhuTmV3TGVuKTsNCisgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nLCBzdHIxLkdldENTdHIoKSwgc3RyMS5HZXRMZW5ndGgoKSk7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZyArIHN0cjEuR2V0TGVuZ3RoKCksIHN0cjIuR2V0Q1N0cigpLCBzdHIyLkdldExlbmd0aCgpKTsNCisgICAgfQ0KK30NCitjb25zdCBDRlhfQnl0ZVN0cmluZyYgQ0ZYX0J5dGVTdHJpbmc6Om9wZXJhdG9yPShGWF9MUENTVFIgbHBzeikNCit7DQorICAgIGlmIChscHN6ID09IE5VTEwgfHwgbHBzelswXSA9PSAwKSB7DQorICAgICAgICBFbXB0eSgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQXNzaWduQ29weSgoRlhfU1RSU0laRSlGWFNZU19zdHJsZW4obHBzeiksIGxwc3opOw0KKyAgICB9DQorICAgIHJldHVybiAqdGhpczsNCit9DQorY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIENGWF9CeXRlU3RyaW5nOjpvcGVyYXRvcj0oRlhfQlNUUiBzdHIpDQorew0KKyAgICBpZiAoc3RyLklzRW1wdHkoKSkgew0KKyAgICAgICAgRW1wdHkoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEFzc2lnbkNvcHkoc3RyLkdldExlbmd0aCgpLCBzdHIuR2V0Q1N0cigpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK2NvbnN0IENGWF9CeXRlU3RyaW5nJiBDRlhfQnl0ZVN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBzdHJpbmdTcmMpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBzdHJpbmdTcmMubV9wRGF0YSkgew0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorICAgIGlmIChzdHJpbmdTcmMuSXNFbXB0eSgpKSB7DQorICAgICAgICBFbXB0eSgpOw0KKyAgICB9IGVsc2UgaWYgKChtX3BEYXRhICYmIG1fcERhdGEtPm1fblJlZnMgPCAwKSB8fA0KKyAgICAgICAgICAgICAgIChzdHJpbmdTcmMubV9wRGF0YSAmJiBzdHJpbmdTcmMubV9wRGF0YS0+bV9uUmVmcyA8IDApKSB7DQorICAgICAgICBBc3NpZ25Db3B5KHN0cmluZ1NyYy5tX3BEYXRhLT5tX25EYXRhTGVuZ3RoLCBzdHJpbmdTcmMubV9wRGF0YS0+bV9TdHJpbmcpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRW1wdHkoKTsNCisgICAgICAgIG1fcERhdGEgPSBzdHJpbmdTcmMubV9wRGF0YTsNCisgICAgICAgIGlmIChtX3BEYXRhKSB7DQorICAgICAgICAgICAgbV9wRGF0YS0+bV9uUmVmcyArKzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK2NvbnN0IENGWF9CeXRlU3RyaW5nJiBDRlhfQnl0ZVN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IENGWF9CaW5hcnlCdWYmIGJ1ZikNCit7DQorICAgIExvYWQoYnVmLkdldEJ1ZmZlcigpLCBidWYuR2V0U2l6ZSgpKTsNCisgICAgcmV0dXJuICp0aGlzOw0KK30NCit2b2lkIENGWF9CeXRlU3RyaW5nOjpMb2FkKEZYX0xQQ0JZVEUgYnVmLCBGWF9TVFJTSVpFIGxlbikNCit7DQorICAgIEVtcHR5KCk7DQorICAgIGlmIChsZW4pIHsNCisgICAgICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZyhsZW4pOw0KKyAgICAgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZywgYnVmLCBsZW4gKiBzaXplb2YoY2hhcikpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wRGF0YSA9IE5VTEw7DQorICAgIH0NCit9DQorY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIENGWF9CeXRlU3RyaW5nOjpvcGVyYXRvcis9KEZYX0xQQ1NUUiBscHN6KQ0KK3sNCisgICAgaWYgKGxwc3opIHsNCisgICAgICAgIENvbmNhdEluUGxhY2UoKEZYX1NUUlNJWkUpRlhTWVNfc3RybGVuKGxwc3opLCBscHN6KTsNCisgICAgfQ0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK2NvbnN0IENGWF9CeXRlU3RyaW5nJiBDRlhfQnl0ZVN0cmluZzo6b3BlcmF0b3IrPShjaGFyIGNoKQ0KK3sNCisgICAgQ29uY2F0SW5QbGFjZSgxLCAmY2gpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK2NvbnN0IENGWF9CeXRlU3RyaW5nJiBDRlhfQnl0ZVN0cmluZzo6b3BlcmF0b3IrPShjb25zdCBDRlhfQnl0ZVN0cmluZyYgc3RyaW5nKQ0KK3sNCisgICAgaWYgKHN0cmluZy5tX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICBDb25jYXRJblBsYWNlKHN0cmluZy5tX3BEYXRhLT5tX25EYXRhTGVuZ3RoLCBzdHJpbmcubV9wRGF0YS0+bV9TdHJpbmcpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK2NvbnN0IENGWF9CeXRlU3RyaW5nJiBDRlhfQnl0ZVN0cmluZzo6b3BlcmF0b3IrPShGWF9CU1RSIHN0cmluZykNCit7DQorICAgIGlmIChzdHJpbmcuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgICAgQ29uY2F0SW5QbGFjZShzdHJpbmcuR2V0TGVuZ3RoKCksIHN0cmluZy5HZXRDU3RyKCkpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK2Jvb2wgQ0ZYX0J5dGVTdHJpbmc6OkVxdWFsKEZYX0JTVFIgc3RyKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIHN0ci5Jc0VtcHR5KCk7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggPT0gc3RyLkdldExlbmd0aCgpICYmDQorICAgICAgICAgICBGWFNZU19tZW1jbXAzMihtX3BEYXRhLT5tX1N0cmluZywgc3RyLkdldENTdHIoKSwgc3RyLkdldExlbmd0aCgpKSA9PSAwOw0KK30NCitib29sIENGWF9CeXRlU3RyaW5nOjpvcGVyYXRvciA9PShjb25zdCBDRlhfQnl0ZVN0cmluZyYgczIpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gczIuSXNFbXB0eSgpOw0KKyAgICB9DQorICAgIGlmIChzMi5tX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBmYWxzZTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCA9PSBzMi5tX3BEYXRhLT5tX25EYXRhTGVuZ3RoICYmDQorICAgICAgICAgICBGWFNZU19tZW1jbXAzMihtX3BEYXRhLT5tX1N0cmluZywgczIubV9wRGF0YS0+bV9TdHJpbmcsIG1fcERhdGEtPm1fbkRhdGFMZW5ndGgpID09IDA7DQorfQ0KK3ZvaWQgQ0ZYX0J5dGVTdHJpbmc6OkVtcHR5KCkNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wRGF0YS0+bV9uUmVmcyA+IDEpIHsNCisgICAgICAgIG1fcERhdGEtPm1fblJlZnMgLS07DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWF9GcmVlKG1fcERhdGEpOw0KKyAgICB9DQorICAgIG1fcERhdGEgPSBOVUxMOw0KK30NCitib29sIENGWF9CeXRlU3RyaW5nOjpFcXVhbE5vQ2FzZShGWF9CU1RSIHN0cikgY29uc3QNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBzdHIuSXNFbXB0eSgpOw0KKyAgICB9DQorICAgIEZYX1NUUlNJWkUgbGVuID0gc3RyLkdldExlbmd0aCgpOw0KKyAgICBpZiAobV9wRGF0YS0+bV9uRGF0YUxlbmd0aCAhPSBsZW4pIHsNCisgICAgICAgIHJldHVybiBmYWxzZTsNCisgICAgfQ0KKyAgICBGWF9MUENCWVRFIHBUaGlzID0gKEZYX0xQQ0JZVEUpbV9wRGF0YS0+bV9TdHJpbmc7DQorICAgIEZYX0xQQ0JZVEUgcFRoYXQgPSAoRlhfTFBDQllURSlzdHI7DQorICAgIGZvciAoRlhfU1RSU0laRSBpID0gMDsgaSA8IGxlbjsgaSArKykgew0KKyAgICAgICAgaWYgKCgqcFRoaXMpICE9ICgqcFRoYXQpKSB7DQorICAgICAgICAgICAgRlhfQllURSBiVGhpcyA9ICpwVGhpczsNCisgICAgICAgICAgICBpZiAoYlRoaXMgPj0gJ0EnICYmIGJUaGlzIDw9ICdaJykgew0KKyAgICAgICAgICAgICAgICBiVGhpcyArPSAnYScgLSAnQSc7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0JZVEUgYlRoYXQgPSAqcFRoYXQ7DQorICAgICAgICAgICAgaWYgKGJUaGF0ID49ICdBJyAmJiBiVGhhdCA8PSAnWicpIHsNCisgICAgICAgICAgICAgICAgYlRoYXQgKz0gJ2EnIC0gJ0EnOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoYlRoaXMgIT0gYlRoYXQpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHBUaGlzICsrOw0KKyAgICAgICAgcFRoYXQgKys7DQorICAgIH0NCisgICAgcmV0dXJuIHRydWU7DQorfQ0KK3ZvaWQgQ0ZYX0J5dGVTdHJpbmc6OkFzc2lnbkNvcHkoRlhfU1RSU0laRSBuU3JjTGVuLCBGWF9MUENTVFIgbHBzelNyY0RhdGEpDQorew0KKyAgICBBbGxvY0JlZm9yZVdyaXRlKG5TcmNMZW4pOw0KKyAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZywgbHBzelNyY0RhdGEsIG5TcmNMZW4gKiBzaXplb2YoY2hhcikpOw0KKyAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoID0gblNyY0xlbjsNCisgICAgbV9wRGF0YS0+bV9TdHJpbmdbblNyY0xlbl0gPSAwOw0KK30NCit2b2lkIENGWF9CeXRlU3RyaW5nOjpDb3B5QmVmb3JlV3JpdGUoKQ0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCB8fCBtX3BEYXRhLT5tX25SZWZzIDw9IDEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhfU3RyaW5nRGF0YSogcERhdGEgPSBtX3BEYXRhOw0KKyAgICBtX3BEYXRhLT5tX25SZWZzIC0tOw0KKyAgICBGWF9TVFJTSVpFIG5EYXRhTGVuZ3RoID0gcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZyhuRGF0YUxlbmd0aCk7DQorICAgIGlmIChtX3BEYXRhICE9IE5VTEwpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nLCBwRGF0YS0+bV9TdHJpbmcsIChuRGF0YUxlbmd0aCArIDEpICogc2l6ZW9mKGNoYXIpKTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9CeXRlU3RyaW5nOjpBbGxvY0JlZm9yZVdyaXRlKEZYX1NUUlNJWkUgbkxlbikNCit7DQorICAgIGlmIChtX3BEYXRhICYmIG1fcERhdGEtPm1fblJlZnMgPD0gMSAmJiBtX3BEYXRhLT5tX25BbGxvY0xlbmd0aCA+PSBuTGVuKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRW1wdHkoKTsNCisgICAgbV9wRGF0YSA9IEZYX0FsbG9jU3RyaW5nKG5MZW4pOw0KK30NCit2b2lkIENGWF9CeXRlU3RyaW5nOjpSZWxlYXNlQnVmZmVyKEZYX1NUUlNJWkUgbk5ld0xlbmd0aCkNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDb3B5QmVmb3JlV3JpdGUoKTsNCisgICAgaWYgKG5OZXdMZW5ndGggPT0gLTEpIHsNCisgICAgICAgIG5OZXdMZW5ndGggPSAoRlhfU1RSU0laRSlGWFNZU19zdHJsZW4oKEZYX0xQQ1NUUiltX3BEYXRhLT5tX1N0cmluZyk7DQorICAgIH0NCisgICAgaWYgKG5OZXdMZW5ndGggPT0gMCkgew0KKyAgICAgICAgRW1wdHkoKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWFNZU19hc3NlcnQobk5ld0xlbmd0aCA8PSBtX3BEYXRhLT5tX25BbGxvY0xlbmd0aCk7DQorICAgIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggPSBuTmV3TGVuZ3RoOw0KKyAgICBtX3BEYXRhLT5tX1N0cmluZ1tuTmV3TGVuZ3RoXSA9IDA7DQorfQ0KK0ZYX0xQU1RSIENGWF9CeXRlU3RyaW5nOjpMb2NrQnVmZmVyKCkNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX0xQU1RSIGxwc3ogPSBHZXRCdWZmZXIoMCk7DQorICAgIG1fcERhdGEtPm1fblJlZnMgPSAtMTsNCisgICAgcmV0dXJuIGxwc3o7DQorfQ0KK3ZvaWQgQ0ZYX0J5dGVTdHJpbmc6OlJlc2VydmUoRlhfU1RSU0laRSBsZW4pDQorew0KKyAgICBHZXRCdWZmZXIobGVuKTsNCisgICAgUmVsZWFzZUJ1ZmZlcihHZXRMZW5ndGgoKSk7DQorfQ0KK0ZYX0xQU1RSIENGWF9CeXRlU3RyaW5nOjpHZXRCdWZmZXIoRlhfU1RSU0laRSBuTWluQnVmTGVuZ3RoKQ0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCAmJiBuTWluQnVmTGVuZ3RoID09IDApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BEYXRhICYmIG1fcERhdGEtPm1fblJlZnMgPD0gMSAmJiBtX3BEYXRhLT5tX25BbGxvY0xlbmd0aCA+PSBuTWluQnVmTGVuZ3RoKSB7DQorICAgICAgICByZXR1cm4gbV9wRGF0YS0+bV9TdHJpbmc7DQorICAgIH0NCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgbV9wRGF0YSA9IEZYX0FsbG9jU3RyaW5nKG5NaW5CdWZMZW5ndGgpOw0KKyAgICAgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoID0gMDsNCisgICAgICAgIG1fcERhdGEtPm1fU3RyaW5nWzBdID0gMDsNCisgICAgICAgIHJldHVybiBtX3BEYXRhLT5tX1N0cmluZzsNCisgICAgfQ0KKyAgICBDRlhfU3RyaW5nRGF0YSogcE9sZERhdGEgPSBtX3BEYXRhOw0KKyAgICBGWF9TVFJTSVpFIG5PbGRMZW4gPSBwT2xkRGF0YS0+bV9uRGF0YUxlbmd0aDsNCisgICAgaWYgKG5NaW5CdWZMZW5ndGggPCBuT2xkTGVuKSB7DQorICAgICAgICBuTWluQnVmTGVuZ3RoID0gbk9sZExlbjsNCisgICAgfQ0KKyAgICBtX3BEYXRhID0gRlhfQWxsb2NTdHJpbmcobk1pbkJ1Zkxlbmd0aCk7DQorICAgIGlmICghbV9wRGF0YSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIobV9wRGF0YS0+bV9TdHJpbmcsIHBPbGREYXRhLT5tX1N0cmluZywgKG5PbGRMZW4gKyAxKSpzaXplb2YoY2hhcikpOw0KKyAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoID0gbk9sZExlbjsNCisgICAgcE9sZERhdGEtPm1fblJlZnMgLS07DQorICAgIGlmIChwT2xkRGF0YS0+bV9uUmVmcyA8PSAwKSB7DQorICAgICAgICBGWF9GcmVlKHBPbGREYXRhKTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGF0YS0+bV9TdHJpbmc7DQorfQ0KK0ZYX1NUUlNJWkUgQ0ZYX0J5dGVTdHJpbmc6OkRlbGV0ZShGWF9TVFJTSVpFIG5JbmRleCwgRlhfU1RSU0laRSBuQ291bnQpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAobkluZGV4IDwgMCkgew0KKyAgICAgICAgbkluZGV4ID0gMDsNCisgICAgfQ0KKyAgICBGWF9TVFJTSVpFIG5PbGRMZW5ndGggPSBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoOw0KKyAgICBpZiAobkNvdW50ID4gMCAmJiBuSW5kZXggPCBuT2xkTGVuZ3RoKSB7DQorICAgICAgICBGWF9TVFJTSVpFIG1MZW5ndGggPSBuSW5kZXggKyBuQ291bnQ7DQorICAgICAgICBpZiAobUxlbmd0aCA+PSBuT2xkTGVuZ3RoKSB7DQorICAgICAgICAgICAgbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCA9IG5JbmRleDsNCisgICAgICAgICAgICByZXR1cm4gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aDsNCisgICAgICAgIH0NCisgICAgICAgIENvcHlCZWZvcmVXcml0ZSgpOw0KKyAgICAgICAgaW50IG5CeXRlc1RvQ29weSA9IG5PbGRMZW5ndGggLSBtTGVuZ3RoICsgMTsNCisgICAgICAgIEZYU1lTX21lbW1vdmUzMihtX3BEYXRhLT5tX1N0cmluZyArIG5JbmRleCwNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BEYXRhLT5tX1N0cmluZyArIG1MZW5ndGgsIG5CeXRlc1RvQ29weSAqIHNpemVvZihjaGFyKSk7DQorICAgICAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoID0gbk9sZExlbmd0aCAtIG5Db3VudDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aDsNCit9DQordm9pZCBDRlhfQnl0ZVN0cmluZzo6Q29uY2F0SW5QbGFjZShGWF9TVFJTSVpFIG5TcmNMZW4sIEZYX0xQQ1NUUiBscHN6U3JjRGF0YSkNCit7DQorICAgIGlmIChuU3JjTGVuID09IDAgfHwgbHBzelNyY0RhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZyhuU3JjTGVuKTsNCisgICAgICAgIGlmICghbV9wRGF0YSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nLCBscHN6U3JjRGF0YSwgblNyY0xlbiAqIHNpemVvZihjaGFyKSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fcERhdGEtPm1fblJlZnMgPiAxIHx8IG1fcERhdGEtPm1fbkRhdGFMZW5ndGggKyBuU3JjTGVuID4gbV9wRGF0YS0+bV9uQWxsb2NMZW5ndGgpIHsNCisgICAgICAgIENGWF9TdHJpbmdEYXRhKiBwT2xkRGF0YSA9IG1fcERhdGE7DQorICAgICAgICBDb25jYXRDb3B5KG1fcERhdGEtPm1fbkRhdGFMZW5ndGgsIG1fcERhdGEtPm1fU3RyaW5nLCBuU3JjTGVuLCBscHN6U3JjRGF0YSk7DQorICAgICAgICBGWF9SZWxlYXNlU3RyaW5nKHBPbGREYXRhKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nICsgbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCwgbHBzelNyY0RhdGEsIG5TcmNMZW4gKiBzaXplb2YoY2hhcikpOw0KKyAgICAgICAgbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCArPSBuU3JjTGVuOw0KKyAgICAgICAgbV9wRGF0YS0+bV9TdHJpbmdbbV9wRGF0YS0+bV9uRGF0YUxlbmd0aF0gPSAwOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0J5dGVTdHJpbmc6OkNvbmNhdENvcHkoRlhfU1RSU0laRSBuU3JjMUxlbiwgRlhfTFBDU1RSIGxwc3pTcmMxRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX1NUUlNJWkUgblNyYzJMZW4sIEZYX0xQQ1NUUiBscHN6U3JjMkRhdGEpDQorew0KKyAgICBpbnQgbk5ld0xlbiA9IG5TcmMxTGVuICsgblNyYzJMZW47DQorICAgIGlmIChuTmV3TGVuID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BEYXRhID0gRlhfQWxsb2NTdHJpbmcobk5ld0xlbik7DQorICAgIGlmIChtX3BEYXRhKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZywgbHBzelNyYzFEYXRhLCBuU3JjMUxlbiAqIHNpemVvZihjaGFyKSk7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZyArIG5TcmMxTGVuLCBscHN6U3JjMkRhdGEsIG5TcmMyTGVuICogc2l6ZW9mKGNoYXIpKTsNCisgICAgfQ0KK30NCitDRlhfQnl0ZVN0cmluZyBDRlhfQnl0ZVN0cmluZzo6TWlkKEZYX1NUUlNJWkUgbkZpcnN0KSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgcmV0dXJuIE1pZChuRmlyc3QsIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggLSBuRmlyc3QpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDRlhfQnl0ZVN0cmluZzo6TWlkKEZYX1NUUlNJWkUgbkZpcnN0LCBGWF9TVFJTSVpFIG5Db3VudCkgY29uc3QNCit7DQorICAgIGlmIChuRmlyc3QgPCAwKSB7DQorICAgICAgICBuRmlyc3QgPSAwOw0KKyAgICB9DQorICAgIGlmIChuQ291bnQgPCAwKSB7DQorICAgICAgICBuQ291bnQgPSAwOw0KKyAgICB9DQorICAgIGlmIChuRmlyc3QgKyBuQ291bnQgPiBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoKSB7DQorICAgICAgICBuQ291bnQgPSBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoIC0gbkZpcnN0Ow0KKyAgICB9DQorICAgIGlmIChuRmlyc3QgPiBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoKSB7DQorICAgICAgICBuQ291bnQgPSAwOw0KKyAgICB9DQorICAgIGlmIChuRmlyc3QgPT0gMCAmJiBuRmlyc3QgKyBuQ291bnQgPT0gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCkgew0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGRlc3Q7DQorICAgIEFsbG9jQ29weShkZXN0LCBuQ291bnQsIG5GaXJzdCwgMCk7DQorICAgIHJldHVybiBkZXN0Ow0KK30NCit2b2lkIENGWF9CeXRlU3RyaW5nOjpBbGxvY0NvcHkoQ0ZYX0J5dGVTdHJpbmcmIGRlc3QsIEZYX1NUUlNJWkUgbkNvcHlMZW4sIEZYX1NUUlNJWkUgbkNvcHlJbmRleCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfU1RSU0laRSBuRXh0cmFMZW4pIGNvbnN0DQorew0KKyAgICBGWF9TVFJTSVpFIG5OZXdMZW4gPSBuQ29weUxlbiArIG5FeHRyYUxlbjsNCisgICAgaWYgKG5OZXdMZW4gPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEFTU0VSVChkZXN0Lm1fcERhdGEgPT0gTlVMTCk7DQorICAgIGRlc3QubV9wRGF0YSA9IEZYX0FsbG9jU3RyaW5nKG5OZXdMZW4pOw0KKyAgICBpZiAoZGVzdC5tX3BEYXRhKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0Lm1fcERhdGEtPm1fU3RyaW5nLCBtX3BEYXRhLT5tX1N0cmluZyArIG5Db3B5SW5kZXgsIG5Db3B5TGVuICogc2l6ZW9mKGNoYXIpKTsNCisgICAgfQ0KK30NCisjZGVmaW5lIEZPUkNFX0FOU0kgICAgICAweDEwMDAwDQorI2RlZmluZSBGT1JDRV9VTklDT0RFICAgMHgyMDAwMA0KKyNkZWZpbmUgRk9SQ0VfSU5UNjQgICAgIDB4NDAwMDANCit2b2lkIENGWF9CeXRlU3RyaW5nOjpGb3JtYXRWKEZYX0xQQ1NUUiBscHN6Rm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpDQorew0KKyAgICB2YV9saXN0IGFyZ0xpc3RTYXZlOw0KKyNpZiBkZWZpbmVkKF9fQVJNQ0NfVkVSU0lPTikgfHwgKCFkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX0ZYX0NQVV8gPT0gX0ZYX1g2NF8gfHwgX0ZYX0NQVV8gPT0gX0ZYX0lBNjRfIHx8IF9GWF9DUFVfID09IF9GWF9BUk02NF8pKSB8fCBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQ0KKyAgICB2YV9jb3B5KGFyZ0xpc3RTYXZlLCBhcmdMaXN0KTsNCisjZWxzZQ0KKyAgICBhcmdMaXN0U2F2ZSA9IGFyZ0xpc3Q7DQorI2VuZGlmDQorICAgIGludCBuTWF4TGVuID0gMDsNCisgICAgZm9yIChGWF9MUENTVFIgbHBzeiA9IGxwc3pGb3JtYXQ7ICpscHN6ICE9IDA7IGxwc3ogKyspIHsNCisgICAgICAgIGlmICgqbHBzeiAhPSAnJScgfHwgKihscHN6ID0gbHBzeiArIDEpID09ICclJykgew0KKyAgICAgICAgICAgIG5NYXhMZW4gKz0gKEZYX1NUUlNJWkUpRlhTWVNfc3RybGVuKGxwc3opOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IG5JdGVtTGVuID0gMDsNCisgICAgICAgIGludCBuV2lkdGggPSAwOw0KKyAgICAgICAgZm9yICg7ICpscHN6ICE9IDA7IGxwc3ogKyspIHsNCisgICAgICAgICAgICBpZiAoKmxwc3ogPT0gJyMnKSB7DQorICAgICAgICAgICAgICAgIG5NYXhMZW4gKz0gMjsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKCpscHN6ID09ICcqJykgew0KKyAgICAgICAgICAgICAgICBuV2lkdGggPSB2YV9hcmcoYXJnTGlzdCwgaW50KTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKCpscHN6ID09ICctJyB8fCAqbHBzeiA9PSAnKycgfHwgKmxwc3ogPT0gJzAnIHx8DQorICAgICAgICAgICAgICAgICAgICAgICAqbHBzeiA9PSAnICcpDQorICAgICAgICAgICAgICAgIDsNCisgICAgICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG5XaWR0aCA9PSAwKSB7DQorICAgICAgICAgICAgbldpZHRoID0gRlhTWVNfYXRvaShscHN6KTsNCisgICAgICAgICAgICBmb3IgKDsgKCpscHN6KSA+PSAnMCcgJiYgKCpscHN6KSA8PSAnOSc7IGxwc3ogKyspDQorICAgICAgICAgICAgICAgIDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChuV2lkdGggPCAwIHx8IG5XaWR0aCA+IDEyOCAqIDEwMjQpIHsNCisgICAgICAgICAgICBscHN6Rm9ybWF0ID0gIkJhZCB3aWR0aCI7DQorICAgICAgICAgICAgbk1heExlbiA9IDEwOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IG5QcmVjaXNpb24gPSAwOw0KKyAgICAgICAgaWYgKCpscHN6ID09ICcuJykgew0KKyAgICAgICAgICAgIGxwc3ogKys7DQorICAgICAgICAgICAgaWYgKCpscHN6ID09ICcqJykgew0KKyAgICAgICAgICAgICAgICBuUHJlY2lzaW9uID0gdmFfYXJnKGFyZ0xpc3QsIGludCk7DQorICAgICAgICAgICAgICAgIGxwc3ogKys7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgblByZWNpc2lvbiA9IEZYU1lTX2F0b2kobHBzeik7DQorICAgICAgICAgICAgICAgIGZvciAoOyAoKmxwc3opID49ICcwJyAmJiAoKmxwc3opIDw9ICc5JzsgbHBzeiArKykNCisgICAgICAgICAgICAgICAgICAgIDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoblByZWNpc2lvbiA8IDAgfHwgblByZWNpc2lvbiA+IDEyOCAqIDEwMjQpIHsNCisgICAgICAgICAgICBscHN6Rm9ybWF0ID0gIkJhZCBwcmVjaXNpb24iOw0KKyAgICAgICAgICAgIG5NYXhMZW4gPSAxNDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGludCBuTW9kaWZpZXIgPSAwOw0KKyAgICAgICAgaWYgKEZYU1lTX3N0cm5jbXAobHBzeiwgIkk2NCIsIDMpID09IDApIHsNCisgICAgICAgICAgICBscHN6ICs9IDM7DQorICAgICAgICAgICAgbk1vZGlmaWVyID0gRk9SQ0VfSU5UNjQ7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHN3aXRjaCAoKmxwc3opIHsNCisgICAgICAgICAgICAgICAgY2FzZSAnaCc6DQorICAgICAgICAgICAgICAgICAgICBuTW9kaWZpZXIgPSBGT1JDRV9BTlNJOw0KKyAgICAgICAgICAgICAgICAgICAgbHBzeiArKzsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlICdsJzoNCisgICAgICAgICAgICAgICAgICAgIG5Nb2RpZmllciA9IEZPUkNFX1VOSUNPREU7DQorICAgICAgICAgICAgICAgICAgICBscHN6ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgJ0YnOg0KKyAgICAgICAgICAgICAgICBjYXNlICdOJzoNCisgICAgICAgICAgICAgICAgY2FzZSAnTCc6DQorICAgICAgICAgICAgICAgICAgICBscHN6ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgc3dpdGNoICgqbHBzeiB8IG5Nb2RpZmllcikgew0KKyAgICAgICAgICAgIGNhc2UgJ2MnOg0KKyAgICAgICAgICAgIGNhc2UgJ0MnOg0KKyAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IDI7DQorICAgICAgICAgICAgICAgIHZhX2FyZyhhcmdMaXN0LCBpbnQpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlICdjJ3xGT1JDRV9BTlNJOg0KKyAgICAgICAgICAgIGNhc2UgJ0MnfEZPUkNFX0FOU0k6DQorICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMjsNCisgICAgICAgICAgICAgICAgdmFfYXJnKGFyZ0xpc3QsIGludCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgJ2MnfEZPUkNFX1VOSUNPREU6DQorICAgICAgICAgICAgY2FzZSAnQyd8Rk9SQ0VfVU5JQ09ERToNCisgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAyOw0KKyAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgaW50KTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAncyc6IHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0xQQ1NUUiBwc3RyTmV4dEFyZyA9IHZhX2FyZyhhcmdMaXN0LCBGWF9MUENTVFIpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBzdHJOZXh0QXJnID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IDY7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gKEZYX1NUUlNJWkUpRlhTWVNfc3RybGVuKHBzdHJOZXh0QXJnKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobkl0ZW1MZW4gPCAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAnUyc6IHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0xQV1NUUiBwc3RyTmV4dEFyZyA9IHZhX2FyZyhhcmdMaXN0LCBGWF9MUFdTVFIpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBzdHJOZXh0QXJnID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IDY7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gKEZYX1NUUlNJWkUpRlhTWVNfd2NzbGVuKHBzdHJOZXh0QXJnKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobkl0ZW1MZW4gPCAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAncyd8Rk9SQ0VfQU5TSToNCisgICAgICAgICAgICBjYXNlICdTJ3xGT1JDRV9BTlNJOiB7DQorICAgICAgICAgICAgICAgICAgICBGWF9MUENTVFIgcHN0ck5leHRBcmcgPSB2YV9hcmcoYXJnTGlzdCwgRlhfTFBDU1RSKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwc3RyTmV4dEFyZyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSA2Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IChGWF9TVFJTSVpFKUZYU1lTX3N0cmxlbihwc3RyTmV4dEFyZyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5JdGVtTGVuIDwgMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgJ3MnfEZPUkNFX1VOSUNPREU6DQorICAgICAgICAgICAgY2FzZSAnUyd8Rk9SQ0VfVU5JQ09ERTogew0KKyAgICAgICAgICAgICAgICAgICAgRlhfTFBXU1RSIHBzdHJOZXh0QXJnID0gdmFfYXJnKGFyZ0xpc3QsIEZYX0xQV1NUUik7DQorICAgICAgICAgICAgICAgICAgICBpZiAocHN0ck5leHRBcmcgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gNjsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4ocHN0ck5leHRBcmcpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuSXRlbUxlbiA8IDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChuSXRlbUxlbiAhPSAwKSB7DQorICAgICAgICAgICAgaWYgKG5QcmVjaXNpb24gIT0gMCAmJiBuSXRlbUxlbiA+IG5QcmVjaXNpb24pIHsNCisgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSBuUHJlY2lzaW9uOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobkl0ZW1MZW4gPCBuV2lkdGgpIHsNCisgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSBuV2lkdGg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzd2l0Y2ggKCpscHN6KSB7DQorICAgICAgICAgICAgICAgIGNhc2UgJ2QnOg0KKyAgICAgICAgICAgICAgICBjYXNlICdpJzoNCisgICAgICAgICAgICAgICAgY2FzZSAndSc6DQorICAgICAgICAgICAgICAgIGNhc2UgJ3gnOg0KKyAgICAgICAgICAgICAgICBjYXNlICdYJzoNCisgICAgICAgICAgICAgICAgY2FzZSAnbyc6DQorICAgICAgICAgICAgICAgICAgICBpZiAobk1vZGlmaWVyICYgRk9SQ0VfSU5UNjQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgRlhfSU5UNjQpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgaW50KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMzI7DQorICAgICAgICAgICAgICAgICAgICBpZiAobkl0ZW1MZW4gPCBuV2lkdGggKyBuUHJlY2lzaW9uKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSBuV2lkdGggKyBuUHJlY2lzaW9uOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgJ2EnOg0KKyAgICAgICAgICAgICAgICBjYXNlICdBJzoNCisgICAgICAgICAgICAgICAgY2FzZSAnZSc6DQorICAgICAgICAgICAgICAgIGNhc2UgJ0UnOg0KKyAgICAgICAgICAgICAgICBjYXNlICdnJzoNCisgICAgICAgICAgICAgICAgY2FzZSAnRyc6DQorICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgZG91YmxlKTsNCisgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMTI4Ow0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG5JdGVtTGVuIDwgbldpZHRoICsgblByZWNpc2lvbikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gbldpZHRoICsgblByZWNpc2lvbjsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlICdmJzoNCisgICAgICAgICAgICAgICAgICAgIGlmIChuV2lkdGggKyBuUHJlY2lzaW9uID4gMTAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSBuUHJlY2lzaW9uICsgbldpZHRoICsgMTI4Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZjsNCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHBzelRlbXBbMjU2XTsNCisgICAgICAgICAgICAgICAgICAgICAgICBmID0gdmFfYXJnKGFyZ0xpc3QsIGRvdWJsZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfc3ByaW50Zihwc3pUZW1wLCAiJSouKmYiLCBuV2lkdGgsIG5QcmVjaXNpb24gKyA2LCBmICk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAoRlhfU1RSU0laRSlGWFNZU19zdHJsZW4ocHN6VGVtcCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAncCc6DQorICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgdm9pZCopOw0KKyAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAzMjsNCisgICAgICAgICAgICAgICAgICAgIGlmIChuSXRlbUxlbiA8IG5XaWR0aCArIG5QcmVjaXNpb24pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IG5XaWR0aCArIG5QcmVjaXNpb247DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAnbic6DQorICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgaW50Kik7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBuTWF4TGVuICs9IG5JdGVtTGVuOw0KKyAgICB9DQorICAgIEdldEJ1ZmZlcihuTWF4TGVuKTsNCisgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgIEZYU1lTX3ZzcHJpbnRmKG1fcERhdGEtPm1fU3RyaW5nLCBscHN6Rm9ybWF0LCBhcmdMaXN0U2F2ZSk7DQorICAgICAgICBSZWxlYXNlQnVmZmVyKCk7DQorICAgIH0NCisgICAgdmFfZW5kKGFyZ0xpc3RTYXZlKTsNCit9DQordm9pZCBDRlhfQnl0ZVN0cmluZzo6Rm9ybWF0KEZYX0xQQ1NUUiBscHN6Rm9ybWF0LCAuLi4pDQorew0KKyAgICB2YV9saXN0IGFyZ0xpc3Q7DQorICAgIHZhX3N0YXJ0KGFyZ0xpc3QsIGxwc3pGb3JtYXQpOw0KKyAgICBGb3JtYXRWKGxwc3pGb3JtYXQsIGFyZ0xpc3QpOw0KKyAgICB2YV9lbmQoYXJnTGlzdCk7DQorfQ0KK0ZYX1NUUlNJWkUgQ0ZYX0J5dGVTdHJpbmc6Okluc2VydChGWF9TVFJTSVpFIG5JbmRleCwgRlhfQ0hBUiBjaCkNCit7DQorICAgIENvcHlCZWZvcmVXcml0ZSgpOw0KKyAgICBpZiAobkluZGV4IDwgMCkgew0KKyAgICAgICAgbkluZGV4ID0gMDsNCisgICAgfQ0KKyAgICBGWF9TVFJTSVpFIG5OZXdMZW5ndGggPSBtX3BEYXRhID8gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCA6IDA7DQorICAgIGlmIChuSW5kZXggPiBuTmV3TGVuZ3RoKSB7DQorICAgICAgICBuSW5kZXggPSBuTmV3TGVuZ3RoOw0KKyAgICB9DQorICAgIG5OZXdMZW5ndGgrKzsNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCB8fCBtX3BEYXRhLT5tX25BbGxvY0xlbmd0aCA8IG5OZXdMZW5ndGgpIHsNCisgICAgICAgIENGWF9TdHJpbmdEYXRhKiBwT2xkRGF0YSA9IG1fcERhdGE7DQorICAgICAgICBGWF9MUENTVFIgcHN0ciA9IG1fcERhdGEtPm1fU3RyaW5nOw0KKyAgICAgICAgbV9wRGF0YSA9IEZYX0FsbG9jU3RyaW5nKG5OZXdMZW5ndGgpOw0KKyAgICAgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICBpZihwT2xkRGF0YSAhPSBOVUxMKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtbW92ZTMyKG1fcERhdGEtPm1fU3RyaW5nLCBwc3RyLCAocE9sZERhdGEtPm1fbkRhdGFMZW5ndGggKyAxKSpzaXplb2YoY2hhcikpOw0KKyAgICAgICAgICAgIEZYX1JlbGVhc2VTdHJpbmcocE9sZERhdGEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX3BEYXRhLT5tX1N0cmluZ1swXSA9IDA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhTWVNfbWVtbW92ZTMyKG1fcERhdGEtPm1fU3RyaW5nICsgbkluZGV4ICsgMSwNCisgICAgICAgICAgICAgICAgICAgIG1fcERhdGEtPm1fU3RyaW5nICsgbkluZGV4LCAobk5ld0xlbmd0aCAtIG5JbmRleCkqc2l6ZW9mKGNoYXIpKTsNCisgICAgbV9wRGF0YS0+bV9TdHJpbmdbbkluZGV4XSA9IGNoOw0KKyAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoID0gbk5ld0xlbmd0aDsNCisgICAgcmV0dXJuIG5OZXdMZW5ndGg7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENGWF9CeXRlU3RyaW5nOjpSaWdodChGWF9TVFJTSVpFIG5Db3VudCkgY29uc3QNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIGlmIChuQ291bnQgPCAwKSB7DQorICAgICAgICBuQ291bnQgPSAwOw0KKyAgICB9DQorICAgIGlmIChuQ291bnQgPj0gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCkgew0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGRlc3Q7DQorICAgIEFsbG9jQ29weShkZXN0LCBuQ291bnQsIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggLSBuQ291bnQsIDApOw0KKyAgICByZXR1cm4gZGVzdDsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ0ZYX0J5dGVTdHJpbmc6OkxlZnQoRlhfU1RSU0laRSBuQ291bnQpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICBpZiAobkNvdW50IDwgMCkgew0KKyAgICAgICAgbkNvdW50ID0gMDsNCisgICAgfQ0KKyAgICBpZiAobkNvdW50ID49IG1fcERhdGEtPm1fbkRhdGFMZW5ndGgpIHsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBkZXN0Ow0KKyAgICBBbGxvY0NvcHkoZGVzdCwgbkNvdW50LCAwLCAwKTsNCisgICAgcmV0dXJuIGRlc3Q7DQorfQ0KK0ZYX1NUUlNJWkUgQ0ZYX0J5dGVTdHJpbmc6OkZpbmQoRlhfQ0hBUiBjaCwgRlhfU1RSU0laRSBuU3RhcnQpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgRlhfU1RSU0laRSBuTGVuZ3RoID0gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aDsNCisgICAgaWYgKG5TdGFydCA+PSBuTGVuZ3RoKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgRlhfTFBDU1RSIGxwc3ogPSBGWFNZU19zdHJjaHIobV9wRGF0YS0+bV9TdHJpbmcgKyBuU3RhcnQsIGNoKTsNCisgICAgcmV0dXJuIChscHN6ID09IE5VTEwpID8gLTEgOiAoaW50KShscHN6IC0gbV9wRGF0YS0+bV9TdHJpbmcpOw0KK30NCitGWF9TVFJTSVpFIENGWF9CeXRlU3RyaW5nOjpSZXZlcnNlRmluZChGWF9DSEFSIGNoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIEZYX1NUUlNJWkUgbkxlbmd0aCA9IG1fcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIHdoaWxlIChuTGVuZ3RoKSB7DQorICAgICAgICBpZiAobV9wRGF0YS0+bV9TdHJpbmdbbkxlbmd0aCAtIDFdID09IGNoKSB7DQorICAgICAgICAgICAgcmV0dXJuIG5MZW5ndGggLSAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbkxlbmd0aCAtLTsNCisgICAgfQ0KKyAgICByZXR1cm4gLTE7DQorfQ0KK0ZYX0xQQ1NUUiBGWF9zdHJzdHIoRlhfTFBDU1RSIHN0cjEsIGludCBsZW4xLCBGWF9MUENTVFIgc3RyMiwgaW50IGxlbjIpDQorew0KKyAgICBpZiAobGVuMiA+IGxlbjEgfHwgbGVuMiA9PSAwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9MUENTVFIgZW5kX3B0ciA9IHN0cjEgKyBsZW4xIC0gbGVuMjsNCisgICAgd2hpbGUgKHN0cjEgPD0gZW5kX3B0cikgew0KKyAgICAgICAgaW50IGkgPSAwOw0KKyAgICAgICAgd2hpbGUgKDEpIHsNCisgICAgICAgICAgICBpZiAoc3RyMVtpXSAhPSBzdHIyW2ldKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpICsrOw0KKyAgICAgICAgICAgIGlmIChpID09IGxlbjIpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cjE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgc3RyMSArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorRlhfU1RSU0laRSBDRlhfQnl0ZVN0cmluZzo6RmluZChGWF9CU1RSIGxwc3pTdWIsIEZYX1NUUlNJWkUgblN0YXJ0KSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIEZYX1NUUlNJWkUgbkxlbmd0aCA9IG1fcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIGlmIChuU3RhcnQgPiBuTGVuZ3RoKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgRlhfTFBDU1RSIGxwc3ogPSBGWF9zdHJzdHIobV9wRGF0YS0+bV9TdHJpbmcgKyBuU3RhcnQsIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggLSBuU3RhcnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwc3pTdWIuR2V0Q1N0cigpLCBscHN6U3ViLkdldExlbmd0aCgpKTsNCisgICAgcmV0dXJuIChscHN6ID09IE5VTEwpID8gLTEgOiAoaW50KShscHN6IC0gbV9wRGF0YS0+bV9TdHJpbmcpOw0KK30NCit2b2lkIENGWF9CeXRlU3RyaW5nOjpNYWtlTG93ZXIoKQ0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENvcHlCZWZvcmVXcml0ZSgpOw0KKyAgICBpZiAoR2V0TGVuZ3RoKCkgPCAxKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhTWVNfc3RybHdyKG1fcERhdGEtPm1fU3RyaW5nKTsNCit9DQordm9pZCBDRlhfQnl0ZVN0cmluZzo6TWFrZVVwcGVyKCkNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDb3B5QmVmb3JlV3JpdGUoKTsNCisgICAgaWYgKEdldExlbmd0aCgpIDwgMSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYU1lTX3N0cnVwcihtX3BEYXRhLT5tX1N0cmluZyk7DQorfQ0KK0ZYX1NUUlNJWkUgQ0ZYX0J5dGVTdHJpbmc6OlJlbW92ZShGWF9DSEFSIGNoUmVtb3ZlKQ0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgQ29weUJlZm9yZVdyaXRlKCk7DQorICAgIGlmIChHZXRMZW5ndGgoKSA8IDEpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIEZYX0xQU1RSIHBzdHJTb3VyY2UgPSBtX3BEYXRhLT5tX1N0cmluZzsNCisgICAgRlhfTFBTVFIgcHN0ckRlc3QgPSBtX3BEYXRhLT5tX1N0cmluZzsNCisgICAgRlhfTFBTVFIgcHN0ckVuZCA9IG1fcERhdGEtPm1fU3RyaW5nICsgbV9wRGF0YS0+bV9uRGF0YUxlbmd0aDsNCisgICAgd2hpbGUgKHBzdHJTb3VyY2UgPCBwc3RyRW5kKSB7DQorICAgICAgICBpZiAoKnBzdHJTb3VyY2UgIT0gY2hSZW1vdmUpIHsNCisgICAgICAgICAgICAqcHN0ckRlc3QgPSAqcHN0clNvdXJjZTsNCisgICAgICAgICAgICBwc3RyRGVzdCArKzsNCisgICAgICAgIH0NCisgICAgICAgIHBzdHJTb3VyY2UgKys7DQorICAgIH0NCisgICAgKnBzdHJEZXN0ID0gMDsNCisgICAgRlhfU1RSU0laRSBuQ291bnQgPSAoRlhfU1RSU0laRSkocHN0clNvdXJjZSAtIHBzdHJEZXN0KTsNCisgICAgbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCAtPSBuQ291bnQ7DQorICAgIHJldHVybiBuQ291bnQ7DQorfQ0KK0ZYX1NUUlNJWkUgQ0ZYX0J5dGVTdHJpbmc6OlJlcGxhY2UoRlhfQlNUUiBscHN6T2xkLCBGWF9CU1RSIGxwc3pOZXcpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAobHBzek9sZC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIEZYX1NUUlNJWkUgblNvdXJjZUxlbiA9IGxwc3pPbGQuR2V0TGVuZ3RoKCk7DQorICAgIEZYX1NUUlNJWkUgblJlcGxhY2VtZW50TGVuID0gbHBzek5ldy5HZXRMZW5ndGgoKTsNCisgICAgRlhfU1RSU0laRSBuQ291bnQgPSAwOw0KKyAgICBGWF9MUENTVFIgcFN0YXJ0ID0gbV9wRGF0YS0+bV9TdHJpbmc7DQorICAgIEZYX0xQU1RSIHBFbmQgPSBtX3BEYXRhLT5tX1N0cmluZyArIG1fcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIHdoaWxlICgxKSB7DQorICAgICAgICBGWF9MUENTVFIgcFRhcmdldCA9IEZYX3N0cnN0cihwU3RhcnQsIChGWF9TVFJTSVpFKShwRW5kIC0gcFN0YXJ0KSwgbHBzek9sZC5HZXRDU3RyKCksIG5Tb3VyY2VMZW4pOw0KKyAgICAgICAgaWYgKHBUYXJnZXQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbkNvdW50Kys7DQorICAgICAgICBwU3RhcnQgPSBwVGFyZ2V0ICsgblNvdXJjZUxlbjsNCisgICAgfQ0KKyAgICBpZiAobkNvdW50ID09IDApIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIEZYX1NUUlNJWkUgbk5ld0xlbmd0aCA9ICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoICsgKG5SZXBsYWNlbWVudExlbiAtIG5Tb3VyY2VMZW4pICogbkNvdW50Ow0KKyAgICBpZiAobk5ld0xlbmd0aCA9PSAwKSB7DQorICAgICAgICBFbXB0eSgpOw0KKyAgICAgICAgcmV0dXJuIG5Db3VudDsNCisgICAgfQ0KKyAgICBDRlhfU3RyaW5nRGF0YSogcE5ld0RhdGEgPSBGWF9BbGxvY1N0cmluZyhuTmV3TGVuZ3RoKTsNCisgICAgaWYgKCFwTmV3RGF0YSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcFN0YXJ0ID0gbV9wRGF0YS0+bV9TdHJpbmc7DQorICAgIEZYX0xQU1RSIHBEZXN0ID0gcE5ld0RhdGEtPm1fU3RyaW5nOw0KKyAgICBmb3IgKEZYX1NUUlNJWkUgaSA9IDA7IGkgPCBuQ291bnQ7IGkgKyspIHsNCisgICAgICAgIEZYX0xQQ1NUUiBwVGFyZ2V0ID0gRlhfc3Ryc3RyKHBTdGFydCwgKEZYX1NUUlNJWkUpKHBFbmQgLSBwU3RhcnQpLCBscHN6T2xkLkdldENTdHIoKSwgblNvdXJjZUxlbik7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihwRGVzdCwgcFN0YXJ0LCBwVGFyZ2V0IC0gcFN0YXJ0KTsNCisgICAgICAgIHBEZXN0ICs9IHBUYXJnZXQgLSBwU3RhcnQ7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihwRGVzdCwgbHBzek5ldy5HZXRDU3RyKCksIGxwc3pOZXcuR2V0TGVuZ3RoKCkpOw0KKyAgICAgICAgcERlc3QgKz0gbHBzek5ldy5HZXRMZW5ndGgoKTsNCisgICAgICAgIHBTdGFydCA9IHBUYXJnZXQgKyBuU291cmNlTGVuOw0KKyAgICB9DQorICAgIEZYU1lTX21lbWNweTMyKHBEZXN0LCBwU3RhcnQsIHBFbmQgLSBwU3RhcnQpOw0KKyAgICBGWF9SZWxlYXNlU3RyaW5nKG1fcERhdGEpOw0KKyAgICBtX3BEYXRhID0gcE5ld0RhdGE7DQorICAgIHJldHVybiBuQ291bnQ7DQorfQ0KK3ZvaWQgQ0ZYX0J5dGVTdHJpbmc6OlNldEF0KEZYX1NUUlNJWkUgbkluZGV4LCBGWF9DSEFSIGNoKQ0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYU1lTX2Fzc2VydChuSW5kZXggPj0gMCk7DQorICAgIEZYU1lTX2Fzc2VydChuSW5kZXggPCBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoKTsNCisgICAgQ29weUJlZm9yZVdyaXRlKCk7DQorICAgIG1fcERhdGEtPm1fU3RyaW5nW25JbmRleF0gPSBjaDsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ0ZYX0J5dGVTdHJpbmc6OkxvYWRGcm9tRmlsZShGWF9CU1RSIGZpbGVuYW1lKQ0KK3sNCisgICAgRlhTWVNfRklMRSogZmlsZSA9IEZYU1lTX2ZvcGVuKENGWF9CeXRlU3RyaW5nKGZpbGVuYW1lKSwgInJiIik7DQorICAgIGlmIChmaWxlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIEZYU1lTX2ZzZWVrKGZpbGUsIDAsIEZYU1lTX1NFRUtfRU5EKTsNCisgICAgaW50IGxlbiA9IEZYU1lTX2Z0ZWxsKGZpbGUpOw0KKyAgICBGWFNZU19mc2VlayhmaWxlLCAwLCBGWFNZU19TRUVLX1NFVCk7DQorICAgIENGWF9CeXRlU3RyaW5nIHN0cjsNCisgICAgRlhfTFBTVFIgYnVmID0gc3RyLkdldEJ1ZmZlcihsZW4pOw0KKyAgICBzaXplX3QgcmVhZENudCA9IEZYU1lTX2ZyZWFkKGJ1ZiwgMSwgbGVuLCBmaWxlKTsNCisgICAgc3RyLlJlbGVhc2VCdWZmZXIobGVuKTsNCisgICAgRlhTWVNfZmNsb3NlKGZpbGUpOw0KKyAgICByZXR1cm4gc3RyOw0KK30NCitDRlhfV2lkZVN0cmluZyBDRlhfQnl0ZVN0cmluZzo6VVRGOERlY29kZSgpIGNvbnN0DQorew0KKyAgICBDRlhfVVRGOERlY29kZXIgZGVjb2RlcjsNCisgICAgZm9yIChGWF9TVFJTSVpFIGkgPSAwOyBpIDwgR2V0TGVuZ3RoKCk7IGkgKyspIHsNCisgICAgICAgIGRlY29kZXIuSW5wdXQoKEZYX0JZVEUpbV9wRGF0YS0+bV9TdHJpbmdbaV0pOw0KKyAgICB9DQorICAgIHJldHVybiBkZWNvZGVyLkdldFJlc3VsdCgpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDRlhfQnl0ZVN0cmluZzo6RnJvbVVuaWNvZGUoRlhfTFBDV1NUUiBzdHIsIEZYX1NUUlNJWkUgbGVuKQ0KK3sNCisgICAgaWYgKGxlbiA8IDApIHsNCisgICAgICAgIGxlbiA9IChGWF9TVFJTSVpFKUZYU1lTX3djc2xlbihzdHIpOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGJzdHI7DQorICAgIGJzdHIuQ29udmVydEZyb20oQ0ZYX1dpZGVTdHJpbmcoc3RyLCBsZW4pKTsNCisgICAgcmV0dXJuIGJzdHI7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENGWF9CeXRlU3RyaW5nOjpGcm9tVW5pY29kZShjb25zdCBDRlhfV2lkZVN0cmluZyYgc3RyKQ0KK3sNCisgICAgcmV0dXJuIEZyb21Vbmljb2RlKChGWF9MUENXU1RSKXN0ciwgc3RyLkdldExlbmd0aCgpKTsNCit9DQordm9pZCBDRlhfQnl0ZVN0cmluZzo6Q29udmVydEZyb20oY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0ciwgQ0ZYX0NoYXJNYXAqIHBDaGFyTWFwKQ0KK3sNCisgICAgaWYgKHBDaGFyTWFwID09IE5VTEwpIHsNCisgICAgICAgIHBDaGFyTWFwID0gQ0ZYX0NoYXJNYXA6OkdldERlZmF1bHRNYXBwZXIoKTsNCisgICAgfQ0KKyAgICAqdGhpcyA9ICgqcENoYXJNYXAtPm1fR2V0Qnl0ZVN0cmluZykocENoYXJNYXAsIHN0cik7DQorfQ0KK2ludCBDRlhfQnl0ZVN0cmluZzo6Q29tcGFyZShGWF9CU1RSIHN0cikgY29uc3QNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBzdHIuSXNFbXB0eSgpID8gMCA6IC0xOw0KKyAgICB9DQorICAgIGludCB0aGlzX2xlbiA9IG1fcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIGludCB0aGF0X2xlbiA9IHN0ci5HZXRMZW5ndGgoKTsNCisgICAgaW50IG1pbl9sZW4gPSB0aGlzX2xlbiA8IHRoYXRfbGVuID8gdGhpc19sZW4gOiB0aGF0X2xlbjsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtaW5fbGVuOyBpICsrKSB7DQorICAgICAgICBpZiAoKEZYX0JZVEUpbV9wRGF0YS0+bV9TdHJpbmdbaV0gPCBzdHIuR2V0QXQoaSkpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9IGVsc2UgaWYgKChGWF9CWVRFKW1fcERhdGEtPm1fU3RyaW5nW2ldID4gc3RyLkdldEF0KGkpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHRoaXNfbGVuIDwgdGhhdF9sZW4pIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfSBlbHNlIGlmICh0aGlzX2xlbiA+IHRoYXRfbGVuKSB7DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQordm9pZCBDRlhfQnl0ZVN0cmluZzo6VHJpbVJpZ2h0KEZYX0JTVFIgbHBzelRhcmdldHMpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMIHx8IGxwc3pUYXJnZXRzLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENvcHlCZWZvcmVXcml0ZSgpOw0KKyAgICBGWF9TVFJTSVpFIHBvcyA9IEdldExlbmd0aCgpOw0KKyAgICBpZiAocG9zIDwgMSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIEZYX1NUUlNJWkUgaSA9IDA7DQorICAgICAgICB3aGlsZSAoaSA8IGxwc3pUYXJnZXRzLkdldExlbmd0aCgpICYmIGxwc3pUYXJnZXRzW2ldICE9IG1fcERhdGEtPm1fU3RyaW5nW3BvcyAtIDFdKSB7DQorICAgICAgICAgICAgaSArKzsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChpID09IGxwc3pUYXJnZXRzLkdldExlbmd0aCgpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBwb3MgLS07DQorICAgIH0NCisgICAgaWYgKHBvcyA8IG1fcERhdGEtPm1fbkRhdGFMZW5ndGgpIHsNCisgICAgICAgIG1fcERhdGEtPm1fU3RyaW5nW3Bvc10gPSAwOw0KKyAgICAgICAgbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCA9IHBvczsNCisgICAgfQ0KK30NCit2b2lkIENGWF9CeXRlU3RyaW5nOjpUcmltUmlnaHQoRlhfQ0hBUiBjaFRhcmdldCkNCit7DQorICAgIFRyaW1SaWdodChDRlhfQnl0ZVN0cmluZ0MoY2hUYXJnZXQpKTsNCit9DQordm9pZCBDRlhfQnl0ZVN0cmluZzo6VHJpbVJpZ2h0KCkNCit7DQorICAgIFRyaW1SaWdodChGWF9CU1RSQygiXHgwOVx4MGFceDBiXHgwY1x4MGRceDIwIikpOw0KK30NCit2b2lkIENGWF9CeXRlU3RyaW5nOjpUcmltTGVmdChGWF9CU1RSIGxwc3pUYXJnZXRzKQ0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChscHN6VGFyZ2V0cy5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDb3B5QmVmb3JlV3JpdGUoKTsNCisgICAgRlhfU1RSU0laRSBsZW4gPSBHZXRMZW5ndGgoKTsNCisgICAgaWYgKGxlbiA8IDEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9TVFJTSVpFIHBvcyA9IDA7DQorICAgIHdoaWxlIChwb3MgPCBsZW4pIHsNCisgICAgICAgIEZYX1NUUlNJWkUgaSA9IDA7DQorICAgICAgICB3aGlsZSAoaSA8IGxwc3pUYXJnZXRzLkdldExlbmd0aCgpICYmIGxwc3pUYXJnZXRzW2ldICE9IG1fcERhdGEtPm1fU3RyaW5nW3Bvc10pIHsNCisgICAgICAgICAgICBpICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGkgPT0gbHBzelRhcmdldHMuR2V0TGVuZ3RoKCkpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIHBvcyArKzsNCisgICAgfQ0KKyAgICBpZiAocG9zKSB7DQorICAgICAgICBGWF9TVFJTSVpFIG5EYXRhTGVuZ3RoID0gbGVuIC0gcG9zOw0KKyAgICAgICAgRlhTWVNfbWVtbW92ZTMyKG1fcERhdGEtPm1fU3RyaW5nLCBtX3BEYXRhLT5tX1N0cmluZyArIHBvcywgKG5EYXRhTGVuZ3RoICsgMSkqc2l6ZW9mKEZYX0NIQVIpKTsNCisgICAgICAgIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggPSBuRGF0YUxlbmd0aDsNCisgICAgfQ0KK30NCit2b2lkIENGWF9CeXRlU3RyaW5nOjpUcmltTGVmdChGWF9DSEFSIGNoVGFyZ2V0KQ0KK3sNCisgICAgVHJpbUxlZnQoQ0ZYX0J5dGVTdHJpbmdDKGNoVGFyZ2V0KSk7DQorfQ0KK3ZvaWQgQ0ZYX0J5dGVTdHJpbmc6OlRyaW1MZWZ0KCkNCit7DQorICAgIFRyaW1MZWZ0KEZYX0JTVFJDKCJceDA5XHgwYVx4MGJceDBjXHgwZFx4MjAiKSk7DQorfQ0KK0ZYX0RXT1JEIENGWF9CeXRlU3RyaW5nOjpHZXRJRChGWF9TVFJTSVpFIHN0YXJ0X3BvcykgY29uc3QNCit7DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZ0MoKnRoaXMpLkdldElEKHN0YXJ0X3Bvcyk7DQorfQ0KK0ZYX0RXT1JEIENGWF9CeXRlU3RyaW5nQzo6R2V0SUQoRlhfU1RSU0laRSBzdGFydF9wb3MpIGNvbnN0DQorew0KKyAgICBpZiAobV9MZW5ndGggPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKHN0YXJ0X3BvcyA+PSBtX0xlbmd0aCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfRFdPUkQgc3RyaWQgPSAwOw0KKyAgICBpZiAoc3RhcnRfcG9zICsgNCA+IG1fTGVuZ3RoKSB7DQorICAgICAgICBmb3IgKEZYX1NUUlNJWkUgaSA9IDA7IGkgPCBtX0xlbmd0aCAtIHN0YXJ0X3BvczsgaSArKykgew0KKyAgICAgICAgICAgIHN0cmlkID0gc3RyaWQgKiAyNTYgKyBtX1B0cltzdGFydF9wb3MgKyBpXTsNCisgICAgICAgIH0NCisgICAgICAgIHN0cmlkID0gc3RyaWQgPDwgKCg0IC0gbV9MZW5ndGggKyBzdGFydF9wb3MpICogOCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkgKyspIHsNCisgICAgICAgICAgICBzdHJpZCA9IHN0cmlkICogMjU2ICsgbV9QdHJbc3RhcnRfcG9zICsgaV07DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHN0cmlkOw0KK30NCitGWF9TVFJTSVpFIEZYX2Z0b2EoRlhfRkxPQVQgZCwgRlhfTFBTVFIgYnVmKQ0KK3sNCisgICAgYnVmWzBdID0gJzAnOw0KKyAgICBidWZbMV0gPSAnXDAnOw0KKyAgICBpZiAoZCA9PSAwLjBmKSB7DQorICAgICAgICByZXR1cm4gMTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJOZWdhdGl2ZSA9IEZBTFNFOw0KKyAgICBpZiAoZCA8IDApIHsNCisgICAgICAgIGJOZWdhdGl2ZSA9IFRSVUU7DQorICAgICAgICBkID0gLWQ7DQorICAgIH0NCisgICAgaW50IHNjYWxlID0gMTsNCisgICAgaW50IHNjYWxlZCA9IEZYU1lTX3JvdW5kKGQpOw0KKyAgICB3aGlsZSAoc2NhbGVkIDwgMTAwMDAwKSB7DQorICAgICAgICBpZiAoc2NhbGUgPT0gMTAwMDAwMCkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc2NhbGUgKj0gMTA7DQorICAgICAgICBzY2FsZWQgPSBGWFNZU19yb3VuZChkICogc2NhbGUpOw0KKyAgICB9DQorICAgIGlmIChzY2FsZWQgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgY2hhciBidWYyWzMyXTsNCisgICAgaW50IGJ1Zl9zaXplID0gMDsNCisgICAgaWYgKGJOZWdhdGl2ZSkgew0KKyAgICAgICAgYnVmW2J1Zl9zaXplKytdID0gJy0nOw0KKyAgICB9DQorICAgIGludCBpID0gc2NhbGVkIC8gc2NhbGU7DQorICAgIEZYU1lTX2l0b2EoaSwgYnVmMiwgMTApOw0KKyAgICBGWF9TVFJTSVpFIGxlbiA9IChGWF9TVFJTSVpFKUZYU1lTX3N0cmxlbihidWYyKTsNCisgICAgRlhTWVNfbWVtY3B5MzIoYnVmICsgYnVmX3NpemUsIGJ1ZjIsIGxlbik7DQorICAgIGJ1Zl9zaXplICs9IGxlbjsNCisgICAgaW50IGZyYWN0aW9uID0gc2NhbGVkICUgc2NhbGU7DQorICAgIGlmIChmcmFjdGlvbiA9PSAwKSB7DQorICAgICAgICByZXR1cm4gYnVmX3NpemU7DQorICAgIH0NCisgICAgYnVmW2J1Zl9zaXplKytdID0gJy4nOw0KKyAgICBzY2FsZSAvPSAxMDsNCisgICAgd2hpbGUgKGZyYWN0aW9uKSB7DQorICAgICAgICBidWZbYnVmX3NpemUrK10gPSAnMCcgKyBmcmFjdGlvbiAvIHNjYWxlOw0KKyAgICAgICAgZnJhY3Rpb24gJT0gc2NhbGU7DQorICAgICAgICBzY2FsZSAvPSAxMDsNCisgICAgfQ0KKyAgICByZXR1cm4gYnVmX3NpemU7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENGWF9CeXRlU3RyaW5nOjpGb3JtYXRGbG9hdChGWF9GTE9BVCBkLCBpbnQgcHJlY2lzaW9uKQ0KK3sNCisgICAgRlhfQ0hBUiBidWZbMzJdOw0KKyAgICBGWF9TVFJTSVpFIGxlbiA9IEZYX2Z0b2EoZCwgYnVmKTsNCisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKGJ1ZiwgbGVuKTsNCit9DQordm9pZCBDRlhfU3RyaW5nQnVmQmFzZTo6Q29weShGWF9CU1RSIHN0cikNCit7DQorICAgIG1fU2l6ZSA9IHN0ci5HZXRMZW5ndGgoKTsNCisgICAgaWYgKG1fU2l6ZSA+IG1fTGltaXQpIHsNCisgICAgICAgIG1fU2l6ZSA9IG1fTGltaXQ7DQorICAgIH0NCisgICAgRlhfQ0hBUiogcEJ1ZmZlciA9IChGWF9DSEFSKikodGhpcyArIDEpOw0KKyAgICBGWFNZU19tZW1jcHkzMihwQnVmZmVyLCBzdHIuR2V0UHRyKCksIG1fU2l6ZSk7DQorfQ0KK3ZvaWQgQ0ZYX1N0cmluZ0J1ZkJhc2U6OkFwcGVuZChGWF9CU1RSIHN0cikNCit7DQorICAgIGludCBsZW4gPSBzdHIuR2V0TGVuZ3RoKCk7DQorICAgIGlmIChsZW4gPiBtX0xpbWl0IC0gbV9TaXplKSB7DQorICAgICAgICBsZW4gPSBtX0xpbWl0IC0gbV9TaXplOw0KKyAgICB9DQorICAgIEZYX0NIQVIqIHBCdWZmZXIgPSAoRlhfQ0hBUiopKHRoaXMgKyAxKTsNCisgICAgRlhTWVNfbWVtY3B5MzIocEJ1ZmZlciArIG1fU2l6ZSwgc3RyLkdldFB0cigpLCBsZW4pOw0KKyAgICBtX1NpemUgKz0gbGVuOw0KK30NCit2b2lkIENGWF9TdHJpbmdCdWZCYXNlOjpBcHBlbmQoaW50IGksIEZYX0RXT1JEIGZsYWdzKQ0KK3sNCisgICAgY2hhciBidWZbMzJdOw0KKyAgICBpbnQgbGVuID0gX0J1ZmZlcl9pdG9hKGJ1ZiwgaSwgZmxhZ3MpOw0KKyAgICBBcHBlbmQoQ0ZYX0J5dGVTdHJpbmdDKGJ1ZiwgbGVuKSk7DQorfQ0KK3ZvaWQgQ0ZYX0J5dGVTdHJpbmdMOjpFbXB0eShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgaWYgKG1fUHRyKSB7DQorICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShwQWxsb2NhdG9yLCAoRlhfTFBWT0lEKW1fUHRyKTsNCisgICAgfQ0KKyAgICBtX1B0ciA9IE5VTEwsIG1fTGVuZ3RoID0gMDsNCit9DQorRlhfTFBTVFIgQ0ZYX0J5dGVTdHJpbmdMOjpBbGxvY0J1ZmZlcihGWF9TVFJTSVpFIGxlbmd0aCwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIEVtcHR5KHBBbGxvY2F0b3IpOw0KKyAgICBGWF9MUFNUUiBzdHIgPSBGWF9BbGxvY2F0b3JfQWxsb2MocEFsbG9jYXRvciwgRlhfQ0hBUiwgbGVuZ3RoICsgMSk7DQorICAgIGlmICghc3RyKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICAqKEZYX0xQU1RSKikoJm1fUHRyKSA9IHN0cjsNCisgICAgbV9MZW5ndGggPSBsZW5ndGg7DQorICAgIHJldHVybiBzdHI7DQorfQ0KK3ZvaWQgQ0ZYX0J5dGVTdHJpbmdMOjpTZXQoRlhfQlNUUiBzcmMsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorew0KKyAgICBFbXB0eShwQWxsb2NhdG9yKTsNCisgICAgaWYgKHNyYy5HZXRDU3RyKCkgIT0gTlVMTCAmJiBzcmMuR2V0TGVuZ3RoKCkgPiAwKSB7DQorICAgICAgICBGWF9MUFNUUiBzdHIgPSBGWF9BbGxvY2F0b3JfQWxsb2MocEFsbG9jYXRvciwgRlhfQ0hBUiwgc3JjLkdldExlbmd0aCgpICsgMSk7DQorICAgICAgICBpZiAoIXN0cikgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbWNweTMyKHN0ciwgc3JjLCBzcmMuR2V0TGVuZ3RoKCkpOw0KKyAgICAgICAgc3RyW3NyYy5HZXRMZW5ndGgoKV0gPSAnXDAnOw0KKyAgICAgICAgKihGWF9MUFNUUiopKCZtX1B0cikgPSBzdHI7DQorICAgICAgICBtX0xlbmd0aCA9IHNyYy5HZXRMZW5ndGgoKTsNCisgICAgfQ0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNydC9meF9iYXNpY19idWZmZXIuY3BwIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfYnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjNjZDIxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfYnVmZmVyLmNwcApAQCAtMCwwICsxLDU3NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCINCitGWF9TVFJTSVpFIEZYX2Z0b2EoRlhfRkxPQVQgZiwgRlhfTFBTVFIgYnVmKTsNCitDRlhfQmluYXJ5QnVmOjpDRlhfQmluYXJ5QnVmKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorICAgIDogbV9wQWxsb2NhdG9yKHBBbGxvY2F0b3IpDQorICAgICwgbV9BbGxvY1N0ZXAoMCkNCisgICAgLCBtX3BCdWZmZXIoTlVMTCkNCisgICAgLCBtX0RhdGFTaXplKDApDQorICAgICwgbV9BbGxvY1NpemUoMCkNCit7DQorfQ0KK0NGWF9CaW5hcnlCdWY6OkNGWF9CaW5hcnlCdWYoRlhfU1RSU0laRSBzaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KKyAgICA6IG1fcEFsbG9jYXRvcihwQWxsb2NhdG9yKQ0KKyAgICAsIG1fQWxsb2NTdGVwKDApDQorICAgICwgbV9EYXRhU2l6ZShzaXplKQ0KKyAgICAsIG1fQWxsb2NTaXplKHNpemUpDQorew0KKyAgICBtX3BCdWZmZXIgPSBGWF9BbGxvY2F0b3JfQWxsb2MobV9wQWxsb2NhdG9yLCBGWF9CWVRFLCBzaXplKTsNCit9DQorQ0ZYX0JpbmFyeUJ1Zjo6fkNGWF9CaW5hcnlCdWYoKQ0KK3sNCisgICAgaWYgKG1fcEJ1ZmZlcikgew0KKyAgICAgICAgRlhfQWxsb2NhdG9yX0ZyZWUobV9wQWxsb2NhdG9yLCBtX3BCdWZmZXIpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0JpbmFyeUJ1Zjo6RGVsZXRlKGludCBzdGFydF9pbmRleCwgaW50IGNvdW50KQ0KK3sNCisgICAgaWYgKCFtX3BCdWZmZXIgfHwgc3RhcnRfaW5kZXggPCAwIHx8IHN0YXJ0X2luZGV4ICsgY291bnQgPiBtX0RhdGFTaXplKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhTWVNfbWVtbW92ZTMyKG1fcEJ1ZmZlciArIHN0YXJ0X2luZGV4LCBtX3BCdWZmZXIgKyBzdGFydF9pbmRleCArIGNvdW50LCBtX0RhdGFTaXplIC0gc3RhcnRfaW5kZXggLSBjb3VudCk7DQorICAgIG1fRGF0YVNpemUgLT0gY291bnQ7DQorfQ0KK3ZvaWQgQ0ZYX0JpbmFyeUJ1Zjo6Q2xlYXIoKQ0KK3sNCisgICAgbV9EYXRhU2l6ZSA9IDA7DQorfQ0KK3ZvaWQgQ0ZYX0JpbmFyeUJ1Zjo6RGV0YWNoQnVmZmVyKCkNCit7DQorICAgIG1fRGF0YVNpemUgPSAwOw0KKyAgICBtX3BCdWZmZXIgPSBOVUxMOw0KKyAgICBtX0FsbG9jU2l6ZSA9IDA7DQorfQ0KK3ZvaWQgQ0ZYX0JpbmFyeUJ1Zjo6QXR0YWNoRGF0YSh2b2lkKiBidWZmZXIsIEZYX1NUUlNJWkUgc2l6ZSkNCit7DQorICAgIGlmIChtX3BCdWZmZXIpIHsNCisgICAgICAgIEZYX0FsbG9jYXRvcl9GcmVlKG1fcEFsbG9jYXRvciwgbV9wQnVmZmVyKTsNCisgICAgfQ0KKyAgICBtX0RhdGFTaXplID0gc2l6ZTsNCisgICAgbV9wQnVmZmVyID0gKEZYX0xQQllURSlidWZmZXI7DQorICAgIG1fQWxsb2NTaXplID0gc2l6ZTsNCit9DQordm9pZCBDRlhfQmluYXJ5QnVmOjpUYWtlT3ZlcihDRlhfQmluYXJ5QnVmJiBvdGhlcikNCit7DQorICAgIEF0dGFjaERhdGEob3RoZXIuR2V0QnVmZmVyKCksIG90aGVyLkdldFNpemUoKSk7DQorICAgIG90aGVyLkRldGFjaEJ1ZmZlcigpOw0KK30NCit2b2lkIENGWF9CaW5hcnlCdWY6OkVzdGltYXRlU2l6ZShGWF9TVFJTSVpFIHNpemUsIEZYX1NUUlNJWkUgc3RlcCkNCit7DQorICAgIG1fQWxsb2NTdGVwID0gc3RlcDsNCisgICAgaWYgKG1fQWxsb2NTaXplID49IHNpemUpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBFeHBhbmRCdWYoc2l6ZSAtIG1fRGF0YVNpemUpOw0KK30NCit2b2lkIENGWF9CaW5hcnlCdWY6OkV4cGFuZEJ1ZihGWF9TVFJTSVpFIGFkZF9zaXplKQ0KK3sNCisgICAgRlhfU1RSU0laRSBuZXdfc2l6ZSA9IGFkZF9zaXplICsgbV9EYXRhU2l6ZTsNCisgICAgaWYgKG1fQWxsb2NTaXplID49IG5ld19zaXplKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IGFsbG9jX3N0ZXA7DQorICAgIGlmIChtX0FsbG9jU3RlcCA9PSAwKSB7DQorICAgICAgICBhbGxvY19zdGVwID0gbV9BbGxvY1NpemUgLyA0Ow0KKyAgICAgICAgaWYgKGFsbG9jX3N0ZXAgPCAxMjggKSB7DQorICAgICAgICAgICAgYWxsb2Nfc3RlcCA9IDEyODsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGFsbG9jX3N0ZXAgPSBtX0FsbG9jU3RlcDsNCisgICAgfQ0KKyAgICBuZXdfc2l6ZSA9IChuZXdfc2l6ZSArIGFsbG9jX3N0ZXAgLSAxKSAvIGFsbG9jX3N0ZXAgKiBhbGxvY19zdGVwOw0KKyAgICBGWF9MUEJZVEUgcE5ld0J1ZmZlciA9IG1fcEJ1ZmZlcjsNCisgICAgaWYgKHBOZXdCdWZmZXIpIHsNCisgICAgICAgIHBOZXdCdWZmZXIgPSBGWF9BbGxvY2F0b3JfUmVhbGxvYyhtX3BBbGxvY2F0b3IsIEZYX0JZVEUsIG1fcEJ1ZmZlciwgbmV3X3NpemUpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcE5ld0J1ZmZlciA9IEZYX0FsbG9jYXRvcl9BbGxvYyhtX3BBbGxvY2F0b3IsIEZYX0JZVEUsIG5ld19zaXplKTsNCisgICAgfQ0KKyAgICBpZiAocE5ld0J1ZmZlcikgew0KKyAgICAgICAgbV9wQnVmZmVyID0gcE5ld0J1ZmZlcjsNCisgICAgICAgIG1fQWxsb2NTaXplID0gbmV3X3NpemU7DQorICAgIH0NCit9DQordm9pZCBDRlhfQmluYXJ5QnVmOjpDb3B5RGF0YShjb25zdCB2b2lkKiBwU3RyLCBGWF9TVFJTSVpFIHNpemUpDQorew0KKyAgICBpZiAoc2l6ZSA9PSAwKSB7DQorICAgICAgICBtX0RhdGFTaXplID0gMDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9BbGxvY1NpemUgPCBzaXplKSB7DQorICAgICAgICBFeHBhbmRCdWYoc2l6ZSAtIG1fRGF0YVNpemUpOw0KKyAgICB9DQorICAgIGlmICghbV9wQnVmZmVyKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIobV9wQnVmZmVyLCBwU3RyLCBzaXplKTsNCisgICAgbV9EYXRhU2l6ZSA9IHNpemU7DQorfQ0KK3ZvaWQgQ0ZYX0JpbmFyeUJ1Zjo6QXBwZW5kQmxvY2soY29uc3Qgdm9pZCogcEJ1ZiwgRlhfU1RSU0laRSBzaXplKQ0KK3sNCisgICAgRXhwYW5kQnVmKHNpemUpOw0KKyAgICBpZiAocEJ1ZiAmJiBtX3BCdWZmZXIpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcEJ1ZmZlciArIG1fRGF0YVNpemUsIHBCdWYsIHNpemUpOw0KKyAgICB9DQorICAgIG1fRGF0YVNpemUgKz0gc2l6ZTsNCit9DQordm9pZCBDRlhfQmluYXJ5QnVmOjpJbnNlcnRCbG9jayhGWF9TVFJTSVpFIHBvcywgY29uc3Qgdm9pZCogcEJ1ZiwgRlhfU1RSU0laRSBzaXplKQ0KK3sNCisgICAgRXhwYW5kQnVmKHNpemUpOw0KKyAgICBpZiAoIW1fcEJ1ZmZlcikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYU1lTX21lbW1vdmUzMihtX3BCdWZmZXIgKyBwb3MgKyBzaXplLCBtX3BCdWZmZXIgKyBwb3MsIG1fRGF0YVNpemUgLSBwb3MpOw0KKyAgICBpZiAocEJ1Zikgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wQnVmZmVyICsgcG9zLCBwQnVmLCBzaXplKTsNCisgICAgfQ0KKyAgICBtX0RhdGFTaXplICs9IHNpemU7DQorfQ0KK3ZvaWQgQ0ZYX0JpbmFyeUJ1Zjo6QXBwZW5kRmlsbChGWF9CWVRFIGJ5dGUsIEZYX1NUUlNJWkUgY291bnQpDQorew0KKyAgICBFeHBhbmRCdWYoY291bnQpOw0KKyAgICBpZiAoIW1fcEJ1ZmZlcikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYU1lTX21lbXNldDgobV9wQnVmZmVyICsgbV9EYXRhU2l6ZSwgYnl0ZSwgY291bnQpOw0KKyAgICBtX0RhdGFTaXplICs9IGNvdW50Ow0KK30NCitDRlhfQnl0ZVN0cmluZ0MgQ0ZYX0JpbmFyeUJ1Zjo6R2V0Qnl0ZVN0cmluZygpIGNvbnN0DQorew0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKG1fcEJ1ZmZlciwgbV9EYXRhU2l6ZSk7DQorfQ0KK3ZvaWQgQ0ZYX0JpbmFyeUJ1Zjo6R2V0Qnl0ZVN0cmluZ0woQ0ZYX0J5dGVTdHJpbmdMICZzdHIpIGNvbnN0DQorew0KKyAgICBzdHIuU2V0KENGWF9CeXRlU3RyaW5nQyhtX3BCdWZmZXIsIG1fRGF0YVNpemUpLCBtX3BBbGxvY2F0b3IpOw0KK30NCitDRlhfQnl0ZVRleHRCdWYmIENGWF9CeXRlVGV4dEJ1Zjo6b3BlcmF0b3IgPDwgKEZYX0JTVFIgbHBzeikNCit7DQorICAgIEFwcGVuZEJsb2NrKChGWF9MUENCWVRFKWxwc3osIGxwc3ouR2V0TGVuZ3RoKCkpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK0NGWF9CeXRlVGV4dEJ1ZiYgQ0ZYX0J5dGVUZXh0QnVmOjpvcGVyYXRvciA8PCAoaW50IGkpDQorew0KKyAgICBjaGFyIGJ1ZlszMl07DQorICAgIEZYU1lTX2l0b2EoaSwgYnVmLCAxMCk7DQorICAgIEFwcGVuZEJsb2NrKGJ1ZiwgKEZYX1NUUlNJWkUpRlhTWVNfc3RybGVuKGJ1ZikpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK0NGWF9CeXRlVGV4dEJ1ZiYgQ0ZYX0J5dGVUZXh0QnVmOjpvcGVyYXRvciA8PCAoRlhfRFdPUkQgaSkNCit7DQorICAgIGNoYXIgYnVmWzMyXTsNCisgICAgRlhTWVNfaXRvYShpLCBidWYsIDEwKTsNCisgICAgQXBwZW5kQmxvY2soYnVmLCAoRlhfU1RSU0laRSlGWFNZU19zdHJsZW4oYnVmKSk7DQorICAgIHJldHVybiAqdGhpczsNCit9DQorQ0ZYX0J5dGVUZXh0QnVmJiBDRlhfQnl0ZVRleHRCdWY6Om9wZXJhdG9yIDw8IChkb3VibGUgZikNCit7DQorICAgIGNoYXIgYnVmWzMyXTsNCisgICAgRlhfU1RSU0laRSBsZW4gPSBGWF9mdG9hKChGWF9GTE9BVClmLCBidWYpOw0KKyAgICBBcHBlbmRCbG9jayhidWYsIGxlbik7DQorICAgIHJldHVybiAqdGhpczsNCit9DQorQ0ZYX0J5dGVUZXh0QnVmJiBDRlhfQnl0ZVRleHRCdWY6Om9wZXJhdG9yIDw8IChjb25zdCBDRlhfQnl0ZVRleHRCdWYmIGJ1ZikNCit7DQorICAgIEFwcGVuZEJsb2NrKGJ1Zi5tX3BCdWZmZXIsIGJ1Zi5tX0RhdGFTaXplKTsNCisgICAgcmV0dXJuICp0aGlzOw0KK30NCit2b2lkIENGWF9CeXRlVGV4dEJ1Zjo6b3BlcmF0b3IgPShjb25zdCBDRlhfQnl0ZVN0cmluZ0MmIHN0cikNCit7DQorICAgIENvcHlEYXRhKChGWF9MUENCWVRFKXN0ciwgc3RyLkdldExlbmd0aCgpKTsNCit9DQordm9pZCBDRlhfV2lkZVRleHRCdWY6OkFwcGVuZENoYXIoRlhfV0NIQVIgY2gpDQorew0KKyAgICBpZiAobV9BbGxvY1NpemUgPCBtX0RhdGFTaXplICsgKEZYX1NUUlNJWkUpc2l6ZW9mKEZYX1dDSEFSKSkgew0KKyAgICAgICAgRXhwYW5kQnVmKHNpemVvZihGWF9XQ0hBUikpOw0KKyAgICB9DQorICAgIEFTU0VSVChtX3BCdWZmZXIgIT0gTlVMTCk7DQorICAgICooRlhfV0NIQVIqKShtX3BCdWZmZXIgKyBtX0RhdGFTaXplKSA9IGNoOw0KKyAgICBtX0RhdGFTaXplICs9IHNpemVvZihGWF9XQ0hBUik7DQorfQ0KK0NGWF9XaWRlVGV4dEJ1ZiYgQ0ZYX1dpZGVUZXh0QnVmOjpvcGVyYXRvciA8PCAoRlhfV1NUUiBzdHIpDQorew0KKyAgICBBcHBlbmRCbG9jayhzdHIuR2V0UHRyKCksIHN0ci5HZXRMZW5ndGgoKSAqIHNpemVvZihGWF9XQ0hBUikpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK0NGWF9XaWRlVGV4dEJ1ZiYgQ0ZYX1dpZGVUZXh0QnVmOjpvcGVyYXRvciA8PCAoY29uc3QgQ0ZYX1dpZGVTdHJpbmcgJnN0cikNCit7DQorICAgIEFwcGVuZEJsb2NrKChGWF9MUENXU1RSKXN0ciwgc3RyLkdldExlbmd0aCgpICogc2l6ZW9mKEZYX1dDSEFSKSk7DQorICAgIHJldHVybiAqdGhpczsNCit9DQorQ0ZYX1dpZGVUZXh0QnVmJiBDRlhfV2lkZVRleHRCdWY6Om9wZXJhdG9yIDw8IChpbnQgaSkNCit7DQorICAgIGNoYXIgYnVmWzMyXTsNCisgICAgRlhTWVNfaXRvYShpLCBidWYsIDEwKTsNCisgICAgRlhfU1RSU0laRSBsZW4gPSAoRlhfU1RSU0laRSlGWFNZU19zdHJsZW4oYnVmKTsNCisgICAgaWYgKG1fQWxsb2NTaXplIDwgbV9EYXRhU2l6ZSArIChGWF9TVFJTSVpFKShsZW4gKiBzaXplb2YoRlhfV0NIQVIpKSkgew0KKyAgICAgICAgRXhwYW5kQnVmKGxlbiAqIHNpemVvZihGWF9XQ0hBUikpOw0KKyAgICB9DQorICAgIEFTU0VSVChtX3BCdWZmZXIgIT0gTlVMTCk7DQorICAgIEZYX0xQV1NUUiBzdHIgPSAoRlhfV0NIQVIqKShtX3BCdWZmZXIgKyBtX0RhdGFTaXplKTsNCisgICAgZm9yIChGWF9TVFJTSVpFIGogPSAwOyBqIDwgbGVuOyBqICsrKSB7DQorICAgICAgICAqc3RyICsrID0gYnVmW2pdOw0KKyAgICB9DQorICAgIG1fRGF0YVNpemUgKz0gbGVuICogc2l6ZW9mKEZYX1dDSEFSKTsNCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitDRlhfV2lkZVRleHRCdWYmIENGWF9XaWRlVGV4dEJ1Zjo6b3BlcmF0b3IgPDwgKGRvdWJsZSBmKQ0KK3sNCisgICAgY2hhciBidWZbMzJdOw0KKyAgICBGWF9TVFJTSVpFIGxlbiA9IEZYX2Z0b2EoKEZYX0ZMT0FUKWYsIGJ1Zik7DQorICAgIGlmIChtX0FsbG9jU2l6ZSA8IG1fRGF0YVNpemUgKyAoRlhfU1RSU0laRSkobGVuICogc2l6ZW9mKEZYX1dDSEFSKSkpIHsNCisgICAgICAgIEV4cGFuZEJ1ZihsZW4gKiBzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgfQ0KKyAgICBBU1NFUlQobV9wQnVmZmVyICE9IE5VTEwpOw0KKyAgICBGWF9MUFdTVFIgc3RyID0gKEZYX1dDSEFSKikobV9wQnVmZmVyICsgbV9EYXRhU2l6ZSk7DQorICAgIGZvciAoRlhfU1RSU0laRSBpID0gMDsgaSA8IGxlbjsgaSArKykgew0KKyAgICAgICAgKnN0ciArKyA9IGJ1ZltpXTsNCisgICAgfQ0KKyAgICBtX0RhdGFTaXplICs9IGxlbiAqIHNpemVvZihGWF9XQ0hBUik7DQorICAgIHJldHVybiAqdGhpczsNCit9DQorQ0ZYX1dpZGVUZXh0QnVmJiBDRlhfV2lkZVRleHRCdWY6Om9wZXJhdG9yIDw8IChGWF9MUENXU1RSIGxwc3opDQorew0KKyAgICBBcHBlbmRCbG9jayhscHN6LCAoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4obHBzeikqc2l6ZW9mKEZYX1dDSEFSKSk7DQorICAgIHJldHVybiAqdGhpczsNCit9DQorQ0ZYX1dpZGVUZXh0QnVmJiBDRlhfV2lkZVRleHRCdWY6Om9wZXJhdG9yIDw8IChjb25zdCBDRlhfV2lkZVRleHRCdWYmIGJ1ZikNCit7DQorICAgIEFwcGVuZEJsb2NrKGJ1Zi5tX3BCdWZmZXIsIGJ1Zi5tX0RhdGFTaXplKTsNCisgICAgcmV0dXJuICp0aGlzOw0KK30NCit2b2lkIENGWF9XaWRlVGV4dEJ1Zjo6b3BlcmF0b3IgPShGWF9XU1RSIHN0cikNCit7DQorICAgIENvcHlEYXRhKHN0ci5HZXRQdHIoKSwgc3RyLkdldExlbmd0aCgpICogc2l6ZW9mKEZYX1dDSEFSKSk7DQorfQ0KK0NGWF9XaWRlU3RyaW5nQyBDRlhfV2lkZVRleHRCdWY6OkdldFdpZGVTdHJpbmcoKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nQygoRlhfTFBDV1NUUiltX3BCdWZmZXIsIG1fRGF0YVNpemUgLyBzaXplb2YoRlhfV0NIQVIpKTsNCit9DQordm9pZCBDRlhfV2lkZVRleHRCdWY6OkdldFdpZGVTdHJpbmdMKENGWF9XaWRlU3RyaW5nTCYgd2lkZVRleHQpIGNvbnN0DQorew0KKyAgICB3aWRlVGV4dC5TZXQoQ0ZYX1dpZGVTdHJpbmdDKChGWF9MUENXU1RSKW1fcEJ1ZmZlciwgbV9EYXRhU2l6ZSAvIHNpemVvZihGWF9XQ0hBUikpLCBtX3BBbGxvY2F0b3IpOw0KK30NCitDRlhfQXJjaGl2ZVNhdmVyJiBDRlhfQXJjaGl2ZVNhdmVyOjpvcGVyYXRvciA8PCAoRlhfQllURSBpKQ0KK3sNCisgICAgaWYgKG1fcFN0cmVhbSkgew0KKyAgICAgICAgbV9wU3RyZWFtLT5Xcml0ZUJsb2NrKCZpLCAxKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fU2F2aW5nQnVmLkFwcGVuZEJ5dGUoaSk7DQorICAgIH0NCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitDRlhfQXJjaGl2ZVNhdmVyJiBDRlhfQXJjaGl2ZVNhdmVyOjpvcGVyYXRvciA8PCAoaW50IGkpDQorew0KKyAgICBpZiAobV9wU3RyZWFtKSB7DQorICAgICAgICBtX3BTdHJlYW0tPldyaXRlQmxvY2soJmksIHNpemVvZihpbnQpKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fU2F2aW5nQnVmLkFwcGVuZEJsb2NrKCZpLCBzaXplb2YoaW50KSk7DQorICAgIH0NCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitDRlhfQXJjaGl2ZVNhdmVyJiBDRlhfQXJjaGl2ZVNhdmVyOjpvcGVyYXRvciA8PCAoRlhfRFdPUkQgaSkNCit7DQorICAgIGlmIChtX3BTdHJlYW0pIHsNCisgICAgICAgIG1fcFN0cmVhbS0+V3JpdGVCbG9jaygmaSwgc2l6ZW9mKEZYX0RXT1JEKSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX1NhdmluZ0J1Zi5BcHBlbmRCbG9jaygmaSwgc2l6ZW9mKEZYX0RXT1JEKSk7DQorICAgIH0NCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitDRlhfQXJjaGl2ZVNhdmVyJiBDRlhfQXJjaGl2ZVNhdmVyOjpvcGVyYXRvciA8PCAoRlhfRkxPQVQgZikNCit7DQorICAgIGlmIChtX3BTdHJlYW0pIHsNCisgICAgICAgIG1fcFN0cmVhbS0+V3JpdGVCbG9jaygmZiwgc2l6ZW9mKEZYX0ZMT0FUKSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX1NhdmluZ0J1Zi5BcHBlbmRCbG9jaygmZiwgc2l6ZW9mKEZYX0ZMT0FUKSk7DQorICAgIH0NCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitDRlhfQXJjaGl2ZVNhdmVyJiBDRlhfQXJjaGl2ZVNhdmVyOjpvcGVyYXRvciA8PCAoRlhfQlNUUiBic3RyKQ0KK3sNCisgICAgaW50IGxlbiA9IGJzdHIuR2V0TGVuZ3RoKCk7DQorICAgIGlmIChtX3BTdHJlYW0pIHsNCisgICAgICAgIG1fcFN0cmVhbS0+V3JpdGVCbG9jaygmbGVuLCBzaXplb2YoaW50KSk7DQorICAgICAgICBtX3BTdHJlYW0tPldyaXRlQmxvY2soYnN0ciwgbGVuKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fU2F2aW5nQnVmLkFwcGVuZEJsb2NrKCZsZW4sIHNpemVvZihpbnQpKTsNCisgICAgICAgIG1fU2F2aW5nQnVmLkFwcGVuZEJsb2NrKGJzdHIsIGxlbik7DQorICAgIH0NCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitDRlhfQXJjaGl2ZVNhdmVyJiBDRlhfQXJjaGl2ZVNhdmVyOjpvcGVyYXRvciA8PCAoRlhfTFBDV1NUUiB3c3RyKQ0KK3sNCisgICAgRlhfU1RSU0laRSBsZW4gPSAoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4od3N0cik7DQorICAgIGlmIChtX3BTdHJlYW0pIHsNCisgICAgICAgIG1fcFN0cmVhbS0+V3JpdGVCbG9jaygmbGVuLCBzaXplb2YoaW50KSk7DQorICAgICAgICBtX3BTdHJlYW0tPldyaXRlQmxvY2sod3N0ciwgbGVuKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fU2F2aW5nQnVmLkFwcGVuZEJsb2NrKCZsZW4sIHNpemVvZihpbnQpKTsNCisgICAgICAgIG1fU2F2aW5nQnVmLkFwcGVuZEJsb2NrKHdzdHIsIGxlbik7DQorICAgIH0NCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitDRlhfQXJjaGl2ZVNhdmVyJiBDRlhfQXJjaGl2ZVNhdmVyOjpvcGVyYXRvciA8PCAoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHdzdHIpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBlbmNvZGVkID0gd3N0ci5VVEYxNkxFX0VuY29kZSgpOw0KKyAgICByZXR1cm4gb3BlcmF0b3IgPDwgKGVuY29kZWQpOw0KK30NCit2b2lkIENGWF9BcmNoaXZlU2F2ZXI6OldyaXRlKGNvbnN0IHZvaWQqIHBEYXRhLCBGWF9TVFJTSVpFIGR3U2l6ZSkNCit7DQorICAgIGlmIChtX3BTdHJlYW0pIHsNCisgICAgICAgIG1fcFN0cmVhbS0+V3JpdGVCbG9jayhwRGF0YSwgZHdTaXplKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fU2F2aW5nQnVmLkFwcGVuZEJsb2NrKHBEYXRhLCBkd1NpemUpOw0KKyAgICB9DQorfQ0KK0NGWF9BcmNoaXZlTG9hZGVyOjpDRlhfQXJjaGl2ZUxvYWRlcihGWF9MUENCWVRFIHBEYXRhLCBGWF9EV09SRCBkd1NpemUpDQorew0KKyAgICBtX3BMb2FkaW5nQnVmID0gcERhdGE7DQorICAgIG1fTG9hZGluZ1BvcyA9IDA7DQorICAgIG1fTG9hZGluZ1NpemUgPSBkd1NpemU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0FyY2hpdmVMb2FkZXI6OklzRU9GKCkNCit7DQorICAgIHJldHVybiBtX0xvYWRpbmdQb3MgPj0gbV9Mb2FkaW5nU2l6ZTsNCit9DQorQ0ZYX0FyY2hpdmVMb2FkZXImIENGWF9BcmNoaXZlTG9hZGVyOjpvcGVyYXRvciA+PiAoRlhfQllURSYgaSkNCit7DQorICAgIGlmIChtX0xvYWRpbmdQb3MgPj0gbV9Mb2FkaW5nU2l6ZSkgew0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorICAgIGkgPSBtX3BMb2FkaW5nQnVmW21fTG9hZGluZ1BvcysrXTsNCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitDRlhfQXJjaGl2ZUxvYWRlciYgQ0ZYX0FyY2hpdmVMb2FkZXI6Om9wZXJhdG9yID4+IChpbnQmIGkpDQorew0KKyAgICBSZWFkKCZpLCBzaXplb2YoaW50KSk7DQorICAgIHJldHVybiAqdGhpczsNCit9DQorQ0ZYX0FyY2hpdmVMb2FkZXImIENGWF9BcmNoaXZlTG9hZGVyOjpvcGVyYXRvciA+PiAoRlhfRFdPUkQmIGkpDQorew0KKyAgICBSZWFkKCZpLCBzaXplb2YoRlhfRFdPUkQpKTsNCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitDRlhfQXJjaGl2ZUxvYWRlciYgQ0ZYX0FyY2hpdmVMb2FkZXI6Om9wZXJhdG9yID4+IChGWF9GTE9BVCYgaSkNCit7DQorICAgIFJlYWQoJmksIHNpemVvZihGWF9GTE9BVCkpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK0NGWF9BcmNoaXZlTG9hZGVyJiBDRlhfQXJjaGl2ZUxvYWRlcjo6b3BlcmF0b3IgPj4gKENGWF9CeXRlU3RyaW5nJiBzdHIpDQorew0KKyAgICBpZiAobV9Mb2FkaW5nUG9zICsgNCA+IG1fTG9hZGluZ1NpemUpIHsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICBpbnQgbGVuOw0KKyAgICBvcGVyYXRvciA+PiAobGVuKTsNCisgICAgc3RyLkVtcHR5KCk7DQorICAgIGlmIChsZW4gPD0gMCB8fCBtX0xvYWRpbmdQb3MgKyBsZW4gPiBtX0xvYWRpbmdTaXplKSB7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgICAgRlhfTFBTVFIgYnVmZmVyID0gc3RyLkdldEJ1ZmZlcihsZW4pOw0KKyAgICBGWFNZU19tZW1jcHkzMihidWZmZXIsIG1fcExvYWRpbmdCdWYgKyBtX0xvYWRpbmdQb3MsIGxlbik7DQorICAgIHN0ci5SZWxlYXNlQnVmZmVyKGxlbik7DQorICAgIG1fTG9hZGluZ1BvcyArPSBsZW47DQorICAgIHJldHVybiAqdGhpczsNCit9DQorQ0ZYX0FyY2hpdmVMb2FkZXImIENGWF9BcmNoaXZlTG9hZGVyOjpvcGVyYXRvciA+PiAoQ0ZYX1dpZGVTdHJpbmcmIHN0cikNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIGVuY29kZWQ7DQorICAgIG9wZXJhdG9yID4+IChlbmNvZGVkKTsNCisgICAgc3RyID0gQ0ZYX1dpZGVTdHJpbmc6OkZyb21VVEYxNkxFKChjb25zdCB1bnNpZ25lZCBzaG9ydCopKEZYX0xQQ1NUUillbmNvZGVkLCBlbmNvZGVkLkdldExlbmd0aCgpKTsNCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitGWF9CT09MIENGWF9BcmNoaXZlTG9hZGVyOjpSZWFkKHZvaWQqIHBCdWYsIEZYX0RXT1JEIGR3U2l6ZSkNCit7DQorICAgIGlmIChtX0xvYWRpbmdQb3MgKyBkd1NpemUgPiBtX0xvYWRpbmdTaXplKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIocEJ1ZiwgbV9wTG9hZGluZ0J1ZiArIG1fTG9hZGluZ1BvcywgZHdTaXplKTsNCisgICAgbV9Mb2FkaW5nUG9zICs9IGR3U2l6ZTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ0ZYX0JpdFN0cmVhbTo6SW5pdChGWF9MUENCWVRFIHBEYXRhLCBGWF9EV09SRCBkd1NpemUpDQorew0KKyAgICBtX3BEYXRhID0gcERhdGE7DQorICAgIG1fQml0U2l6ZSA9IGR3U2l6ZSAqIDg7DQorICAgIG1fQml0UG9zID0gMDsNCit9DQordm9pZCBDRlhfQml0U3RyZWFtOjpCeXRlQWxpZ24oKQ0KK3sNCisgICAgaW50IG1vZCA9IG1fQml0UG9zICUgODsNCisgICAgaWYgKG1vZCA9PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9CaXRQb3MgKz0gOCAtIG1vZDsNCit9DQorRlhfRFdPUkQgQ0ZYX0JpdFN0cmVhbTo6R2V0Qml0cyhGWF9EV09SRCBuQml0cykNCit7DQorICAgIGlmIChuQml0cyA+IG1fQml0U2l6ZSB8fCBtX0JpdFBvcyArIG5CaXRzID4gbV9CaXRTaXplKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAobkJpdHMgPT0gMSkgew0KKyAgICAgICAgaW50IGJpdCA9IChtX3BEYXRhW21fQml0UG9zIC8gOF0gJiAoMSA8PCAoNyAtIG1fQml0UG9zICUgOCkpKSA/IDEgOiAwOw0KKyAgICAgICAgbV9CaXRQb3MgKys7DQorICAgICAgICByZXR1cm4gYml0Ow0KKyAgICB9DQorICAgIEZYX0RXT1JEIGJ5dGVfcG9zID0gbV9CaXRQb3MgLyA4Ow0KKyAgICBGWF9EV09SRCBiaXRfcG9zID0gbV9CaXRQb3MgJSA4LCBiaXRfbGVmdCA9IG5CaXRzOw0KKyAgICBGWF9EV09SRCByZXN1bHQgPSAwOw0KKyAgICBpZiAoYml0X3Bvcykgew0KKyAgICAgICAgaWYgKDggLSBiaXRfcG9zID49IGJpdF9sZWZ0KSB7DQorICAgICAgICAgICAgcmVzdWx0ID0gKG1fcERhdGFbYnl0ZV9wb3NdICYgKDB4ZmYgPj4gYml0X3BvcykpID4+ICg4IC0gYml0X3BvcyAtIGJpdF9sZWZ0KTsNCisgICAgICAgICAgICBtX0JpdFBvcyArPSBiaXRfbGVmdDsNCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgYml0X2xlZnQgLT0gOCAtIGJpdF9wb3M7DQorICAgICAgICByZXN1bHQgPSAobV9wRGF0YVtieXRlX3BvcysrXSAmICgoMSA8PCAoOCAtIGJpdF9wb3MpKSAtIDEpKSA8PCBiaXRfbGVmdDsNCisgICAgfQ0KKyAgICB3aGlsZSAoYml0X2xlZnQgPj0gOCkgew0KKyAgICAgICAgYml0X2xlZnQgLT0gODsNCisgICAgICAgIHJlc3VsdCB8PSBtX3BEYXRhW2J5dGVfcG9zKytdIDw8IGJpdF9sZWZ0Ow0KKyAgICB9DQorICAgIGlmIChiaXRfbGVmdCkgew0KKyAgICAgICAgcmVzdWx0IHw9IG1fcERhdGFbYnl0ZV9wb3NdID4+ICg4IC0gYml0X2xlZnQpOw0KKyAgICB9DQorICAgIG1fQml0UG9zICs9IG5CaXRzOw0KKyAgICByZXR1cm4gcmVzdWx0Ow0KK30NCitJRlhfQnVmZmVyQXJjaGl2ZTo6SUZYX0J1ZmZlckFyY2hpdmUoRlhfU1RSU0laRSBzaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KKyAgICA6IG1fcEFsbG9jYXRvcihwQWxsb2NhdG9yKQ0KKyAgICAsIG1fQnVmU2l6ZShzaXplKQ0KKyAgICAsIG1fcEJ1ZmZlcihOVUxMKQ0KKyAgICAsIG1fTGVuZ3RoKDApDQorew0KK30NCit2b2lkIElGWF9CdWZmZXJBcmNoaXZlOjpDbGVhcigpDQorew0KKyAgICBtX0xlbmd0aCA9IDA7DQorICAgIGlmIChtX3BCdWZmZXIpIHsNCisgICAgICAgIEZYX0FsbG9jYXRvcl9GcmVlKG1fcEFsbG9jYXRvciwgbV9wQnVmZmVyKTsNCisgICAgICAgIG1fcEJ1ZmZlciA9IE5VTEw7DQorICAgIH0NCit9DQorRlhfQk9PTCBJRlhfQnVmZmVyQXJjaGl2ZTo6Rmx1c2goKQ0KK3sNCisgICAgRlhfQk9PTCBiUmV0ID0gRG9Xb3JrKG1fcEJ1ZmZlciwgbV9MZW5ndGgpOw0KKyAgICBtX0xlbmd0aCA9IDA7DQorICAgIHJldHVybiBiUmV0Ow0KK30NCitGWF9JTlQzMiBJRlhfQnVmZmVyQXJjaGl2ZTo6QXBwZW5kQmxvY2soY29uc3Qgdm9pZCogcEJ1Ziwgc2l6ZV90IHNpemUpDQorew0KKyAgICBpZiAoIXBCdWYgfHwgc2l6ZSA8IDEpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmICghbV9wQnVmZmVyKSB7DQorICAgICAgICBtX3BCdWZmZXIgPSBGWF9BbGxvY2F0b3JfQWxsb2MobV9wQWxsb2NhdG9yLCBGWF9CWVRFLCBtX0J1ZlNpemUpOw0KKyAgICAgICAgaWYgKCFtX3BCdWZmZXIpIHsNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfTFBCWVRFIGJ1ZmZlciA9IChGWF9MUEJZVEUpcEJ1ZjsNCisgICAgRlhfU1RSU0laRSB0ZW1wX3NpemUgPSAoRlhfU1RSU0laRSlzaXplOw0KKyAgICB3aGlsZSAodGVtcF9zaXplID4gMCkgew0KKyAgICAgICAgRlhfU1RSU0laRSBidWZfc2l6ZSA9IEZYX01JTihtX0J1ZlNpemUgLSBtX0xlbmd0aCwgKEZYX1NUUlNJWkUpdGVtcF9zaXplKTsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcEJ1ZmZlciArIG1fTGVuZ3RoLCBidWZmZXIsIGJ1Zl9zaXplKTsNCisgICAgICAgIG1fTGVuZ3RoICs9IGJ1Zl9zaXplOw0KKyAgICAgICAgaWYgKG1fTGVuZ3RoID09IG1fQnVmU2l6ZSkgew0KKyAgICAgICAgICAgIGlmICghRmx1c2goKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgdGVtcF9zaXplIC09IGJ1Zl9zaXplOw0KKyAgICAgICAgYnVmZmVyICs9IGJ1Zl9zaXplOw0KKyAgICB9DQorICAgIHJldHVybiAoRlhfSU5UMzIpc2l6ZTsNCit9DQorRlhfSU5UMzIgSUZYX0J1ZmZlckFyY2hpdmU6OkFwcGVuZEJ5dGUoRlhfQllURSBieXRlKQ0KK3sNCisgICAgcmV0dXJuIEFwcGVuZEJsb2NrKCZieXRlLCAxKTsNCit9DQorRlhfSU5UMzIgSUZYX0J1ZmZlckFyY2hpdmU6OkFwcGVuZERXb3JkKEZYX0RXT1JEIGkpDQorew0KKyAgICBjaGFyIGJ1ZlszMl07DQorICAgIEZYU1lTX2l0b2EoaSwgYnVmLCAxMCk7DQorICAgIHJldHVybiBBcHBlbmRCbG9jayhidWYsIChzaXplX3QpRlhTWVNfc3RybGVuKGJ1ZikpOw0KK30NCitGWF9JTlQzMiBJRlhfQnVmZmVyQXJjaGl2ZTo6QXBwZW5kU3RyaW5nKEZYX0JTVFIgbHBzeikNCit7DQorICAgIHJldHVybiBBcHBlbmRCbG9jaygoRlhfTFBDQllURSlscHN6LCBscHN6LkdldExlbmd0aCgpKTsNCit9DQorQ0ZYX0ZpbGVCdWZmZXJBcmNoaXZlOjpDRlhfRmlsZUJ1ZmZlckFyY2hpdmUoRlhfU1RSU0laRSBzaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KKyAgICA6IElGWF9CdWZmZXJBcmNoaXZlKHNpemUsIHBBbGxvY2F0b3IpDQorICAgICwgbV9wRmlsZShOVUxMKQ0KKyAgICAsIG1fYlRha2VvdmVyKEZBTFNFKQ0KK3sNCit9DQorQ0ZYX0ZpbGVCdWZmZXJBcmNoaXZlOjp+Q0ZYX0ZpbGVCdWZmZXJBcmNoaXZlKCkNCit7DQorICAgIENsZWFyKCk7DQorfQ0KK3ZvaWQgQ0ZYX0ZpbGVCdWZmZXJBcmNoaXZlOjpDbGVhcigpDQorew0KKyAgICBpZiAobV9wRmlsZSAmJiBtX2JUYWtlb3Zlcikgew0KKyAgICAgICAgbV9wRmlsZS0+UmVsZWFzZSgpOw0KKyAgICB9DQorICAgIG1fcEZpbGUgPSBOVUxMOw0KKyAgICBtX2JUYWtlb3ZlciA9IEZBTFNFOw0KKyAgICBJRlhfQnVmZmVyQXJjaGl2ZTo6Q2xlYXIoKTsNCit9DQorRlhfQk9PTCBDRlhfRmlsZUJ1ZmZlckFyY2hpdmU6OkF0dGFjaEZpbGUoSUZYX1N0cmVhbVdyaXRlICpwRmlsZSwgRlhfQk9PTCBiVGFrZW92ZXIgKQ0KK3sNCisgICAgaWYgKCFwRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX3BGaWxlICYmIG1fYlRha2VvdmVyKSB7DQorICAgICAgICBtX3BGaWxlLT5SZWxlYXNlKCk7DQorICAgIH0NCisgICAgbV9wRmlsZSA9IHBGaWxlOw0KKyAgICBtX2JUYWtlb3ZlciA9IGJUYWtlb3ZlcjsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ZpbGVCdWZmZXJBcmNoaXZlOjpBdHRhY2hGaWxlKEZYX0xQQ1dTVFIgZmlsZW5hbWUpDQorew0KKyAgICBpZiAoIWZpbGVuYW1lKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fcEZpbGUgJiYgbV9iVGFrZW92ZXIpIHsNCisgICAgICAgIG1fcEZpbGUtPlJlbGVhc2UoKTsNCisgICAgfQ0KKyAgICBtX3BGaWxlID0gRlhfQ3JlYXRlRmlsZVdyaXRlKGZpbGVuYW1lKTsNCisgICAgaWYgKCFtX3BGaWxlKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9iVGFrZW92ZXIgPSBUUlVFOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDRlhfRmlsZUJ1ZmZlckFyY2hpdmU6OkF0dGFjaEZpbGUoRlhfTFBDU1RSIGZpbGVuYW1lKQ0KK3sNCisgICAgaWYgKCFmaWxlbmFtZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX3BGaWxlICYmIG1fYlRha2VvdmVyKSB7DQorICAgICAgICBtX3BGaWxlLT5SZWxlYXNlKCk7DQorICAgIH0NCisgICAgbV9wRmlsZSA9IEZYX0NyZWF0ZUZpbGVXcml0ZShmaWxlbmFtZSk7DQorICAgIGlmICghbV9wRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fYlRha2VvdmVyID0gVFJVRTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ZpbGVCdWZmZXJBcmNoaXZlOjpEb1dvcmsoY29uc3Qgdm9pZCogcEJ1Ziwgc2l6ZV90IHNpemUpDQorew0KKyAgICBpZiAoIW1fcEZpbGUpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoIXBCdWYgfHwgc2l6ZSA8IDEpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BGaWxlLT5Xcml0ZUJsb2NrKHBCdWYsIHNpemUpOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNydC9meF9iYXNpY19jb29yZHMuY3BwIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfY29vcmRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzIwNGUwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfY29vcmRzLmNwcApAQCAtMCwwICsxLDU1NiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfZXh0LmgiDQordm9pZCBGWF9SRUNUOjpOb3JtYWxpemUoKQ0KK3sNCisgICAgaWYgKGxlZnQgPiByaWdodCkgew0KKyAgICAgICAgaW50IHRlbXAgPSBsZWZ0Ow0KKyAgICAgICAgbGVmdCA9IHJpZ2h0Ow0KKyAgICAgICAgcmlnaHQgPSB0ZW1wOw0KKyAgICB9DQorICAgIGlmICh0b3AgPiBib3R0b20pIHsNCisgICAgICAgIGludCB0ZW1wID0gdG9wOw0KKyAgICAgICAgdG9wID0gYm90dG9tOw0KKyAgICAgICAgYm90dG9tID0gdGVtcDsNCisgICAgfQ0KK30NCit2b2lkIEZYX1JFQ1Q6OkludGVyc2VjdChjb25zdCBGWF9SRUNUJiBzcmMpDQorew0KKyAgICBGWF9SRUNUIHNyY19uID0gc3JjOw0KKyAgICBzcmNfbi5Ob3JtYWxpemUoKTsNCisgICAgTm9ybWFsaXplKCk7DQorICAgIGxlZnQgPSBsZWZ0ID4gc3JjX24ubGVmdCA/IGxlZnQgOiBzcmNfbi5sZWZ0Ow0KKyAgICB0b3AgPSB0b3AgPiBzcmNfbi50b3AgPyB0b3AgOiBzcmNfbi50b3A7DQorICAgIHJpZ2h0ID0gcmlnaHQgPCBzcmNfbi5yaWdodCA/IHJpZ2h0IDogc3JjX24ucmlnaHQ7DQorICAgIGJvdHRvbSA9IGJvdHRvbSA8IHNyY19uLmJvdHRvbSA/IGJvdHRvbSA6IHNyY19uLmJvdHRvbTsNCisgICAgaWYgKGxlZnQgPiByaWdodCB8fCB0b3AgPiBib3R0b20pIHsNCisgICAgICAgIGxlZnQgPSB0b3AgPSByaWdodCA9IGJvdHRvbSA9IDA7DQorICAgIH0NCit9DQordm9pZCBGWF9SRUNUOjpVbmlvbihjb25zdCBGWF9SRUNUJiBvdGhlcl9yZWN0KQ0KK3sNCisgICAgTm9ybWFsaXplKCk7DQorICAgIEZYX1JFQ1Qgb3RoZXIgPSBvdGhlcl9yZWN0Ow0KKyAgICBvdGhlci5Ob3JtYWxpemUoKTsNCisgICAgbGVmdCA9IGxlZnQgPCBvdGhlci5sZWZ0ID8gbGVmdCA6IG90aGVyLmxlZnQ7DQorICAgIHJpZ2h0ID0gcmlnaHQgPiBvdGhlci5yaWdodCA/IHJpZ2h0IDogb3RoZXIucmlnaHQ7DQorICAgIGJvdHRvbSA9IGJvdHRvbSA+IG90aGVyLmJvdHRvbSA/IGJvdHRvbSA6IG90aGVyLmJvdHRvbTsNCisgICAgdG9wID0gdG9wIDwgb3RoZXIudG9wID8gdG9wIDogb3RoZXIudG9wOw0KK30NCitGWF9CT09MIEdldEludGVyc2VjdGlvbihGWF9GTE9BVCBsb3cxLCBGWF9GTE9BVCBoaWdoMSwgRlhfRkxPQVQgbG93MiwgRlhfRkxPQVQgaGlnaDIsDQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQmIGludGVybG93LCBGWF9GTE9BVCYgaW50ZXJoaWdoKQ0KK3sNCisgICAgaWYgKGxvdzEgPj0gaGlnaDIgfHwgbG93MiA+PSBoaWdoMSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGludGVybG93ID0gbG93MSA+IGxvdzIgPyBsb3cxIDogbG93MjsNCisgICAgaW50ZXJoaWdoID0gaGlnaDEgPiBoaWdoMiA/IGhpZ2gyIDogaGlnaDE7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitleHRlcm4gIkMiIGludCBGWFNZU19yb3VuZChGWF9GTE9BVCBkKQ0KK3sNCisgICAgaW50IGlSZXQgPSAwOw0KKyAgICBpZiAoZCA+PSAwLjBmKSB7DQorICAgICAgICBpUmV0ID0gKGludCkoZCArIDAuNWYpOw0KKyAgICAgICAgaWYgKGlSZXQgPj0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBpUmV0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIC1pUmV0Ow0KKyAgICB9DQorICAgIHJldHVybiAoaW50KShkIC0gMC41Zik7DQorfQ0KK0NGWF9GbG9hdFJlY3Q6OkNGWF9GbG9hdFJlY3QoY29uc3QgRlhfUkVDVCYgcmVjdCkNCit7DQorICAgIGxlZnQgPSAoRlhfRkxPQVQpKHJlY3QubGVmdCk7DQorICAgIHJpZ2h0ID0gKEZYX0ZMT0FUKShyZWN0LnJpZ2h0KTsNCisgICAgYm90dG9tID0gKEZYX0ZMT0FUKShyZWN0LnRvcCk7DQorICAgIHRvcCA9IChGWF9GTE9BVCkocmVjdC5ib3R0b20pOw0KK30NCit2b2lkIENGWF9GbG9hdFJlY3Q6Ok5vcm1hbGl6ZSgpDQorew0KKyAgICBGWF9GTE9BVCB0ZW1wOw0KKyAgICBpZiAobGVmdCA+IHJpZ2h0KSB7DQorICAgICAgICB0ZW1wID0gbGVmdDsNCisgICAgICAgIGxlZnQgPSByaWdodDsNCisgICAgICAgIHJpZ2h0ID0gdGVtcDsNCisgICAgfQ0KKyAgICBpZiAoYm90dG9tID4gdG9wKSB7DQorICAgICAgICB0ZW1wID0gdG9wOw0KKyAgICAgICAgdG9wID0gYm90dG9tOw0KKyAgICAgICAgYm90dG9tID0gdGVtcDsNCisgICAgfQ0KK30NCit2b2lkIENGWF9GbG9hdFJlY3Q6OkludGVyc2VjdChjb25zdCBDRlhfRmxvYXRSZWN0JiBvdGhlcl9yZWN0KQ0KK3sNCisgICAgTm9ybWFsaXplKCk7DQorICAgIENGWF9GbG9hdFJlY3Qgb3RoZXIgPSBvdGhlcl9yZWN0Ow0KKyAgICBvdGhlci5Ob3JtYWxpemUoKTsNCisgICAgbGVmdCA9IGxlZnQgPiBvdGhlci5sZWZ0ID8gbGVmdCA6IG90aGVyLmxlZnQ7DQorICAgIHJpZ2h0ID0gcmlnaHQgPCBvdGhlci5yaWdodCA/IHJpZ2h0IDogb3RoZXIucmlnaHQ7DQorICAgIGJvdHRvbSA9IGJvdHRvbSA+IG90aGVyLmJvdHRvbSA/IGJvdHRvbSA6IG90aGVyLmJvdHRvbTsNCisgICAgdG9wID0gdG9wIDwgb3RoZXIudG9wID8gdG9wIDogb3RoZXIudG9wOw0KKyAgICBpZiAobGVmdCA+IHJpZ2h0IHx8IGJvdHRvbSA+IHRvcCkgew0KKyAgICAgICAgbGVmdCA9IHJpZ2h0ID0gYm90dG9tID0gdG9wID0gMDsNCisgICAgfQ0KK30NCit2b2lkIENGWF9GbG9hdFJlY3Q6OlVuaW9uKGNvbnN0IENGWF9GbG9hdFJlY3QmIG90aGVyX3JlY3QpDQorew0KKyAgICBOb3JtYWxpemUoKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCBvdGhlciA9IG90aGVyX3JlY3Q7DQorICAgIG90aGVyLk5vcm1hbGl6ZSgpOw0KKyAgICBsZWZ0ID0gbGVmdCA8IG90aGVyLmxlZnQgPyBsZWZ0IDogb3RoZXIubGVmdDsNCisgICAgcmlnaHQgPSByaWdodCA+IG90aGVyLnJpZ2h0ID8gcmlnaHQgOiBvdGhlci5yaWdodDsNCisgICAgYm90dG9tID0gYm90dG9tIDwgb3RoZXIuYm90dG9tID8gYm90dG9tIDogb3RoZXIuYm90dG9tOw0KKyAgICB0b3AgPSB0b3AgPiBvdGhlci50b3AgPyB0b3AgOiBvdGhlci50b3A7DQorfQ0KK3ZvaWQgQ0ZYX0Zsb2F0UmVjdDo6VHJhbnNmb3JtKGNvbnN0IENGWF9NYXRyaXgqIHBNYXRyaXgpDQorew0KKyAgICBwTWF0cml4LT5UcmFuc2Zvcm1SZWN0KGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSk7DQorfQ0KK2ludCBDRlhfRmxvYXRSZWN0OjpTdWJzdHJhY3Q0KENGWF9GbG9hdFJlY3QmIHMsIENGWF9GbG9hdFJlY3QqIHBSZWN0cykNCit7DQorICAgIE5vcm1hbGl6ZSgpOw0KKyAgICBzLk5vcm1hbGl6ZSgpOw0KKyAgICBpbnQgblJlY3RzID0gMDsNCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0c1s0XTsNCisgICAgaWYgKGxlZnQgPCBzLmxlZnQpIHsNCisgICAgICAgIHJlY3RzW25SZWN0c10ubGVmdCA9IGxlZnQ7DQorICAgICAgICByZWN0c1tuUmVjdHNdLnJpZ2h0ID0gcy5sZWZ0Ow0KKyAgICAgICAgcmVjdHNbblJlY3RzXS5ib3R0b20gPSBib3R0b207DQorICAgICAgICByZWN0c1tuUmVjdHNdLnRvcCA9IHRvcDsNCisgICAgICAgIG5SZWN0cyArKzsNCisgICAgfQ0KKyAgICBpZiAocy5sZWZ0IDwgcmlnaHQgJiYgcy50b3AgPCB0b3ApIHsNCisgICAgICAgIHJlY3RzW25SZWN0c10ubGVmdCA9IHMubGVmdDsNCisgICAgICAgIHJlY3RzW25SZWN0c10ucmlnaHQgPSByaWdodDsNCisgICAgICAgIHJlY3RzW25SZWN0c10uYm90dG9tID0gcy50b3A7DQorICAgICAgICByZWN0c1tuUmVjdHNdLnRvcCA9IHRvcDsNCisgICAgICAgIG5SZWN0cyArKzsNCisgICAgfQ0KKyAgICBpZiAocy50b3AgPiBib3R0b20gJiYgcy5yaWdodCA8IHJpZ2h0KSB7DQorICAgICAgICByZWN0c1tuUmVjdHNdLmxlZnQgPSBzLnJpZ2h0Ow0KKyAgICAgICAgcmVjdHNbblJlY3RzXS5yaWdodCA9IHJpZ2h0Ow0KKyAgICAgICAgcmVjdHNbblJlY3RzXS5ib3R0b20gPSBib3R0b207DQorICAgICAgICByZWN0c1tuUmVjdHNdLnRvcCA9IHMudG9wOw0KKyAgICAgICAgblJlY3RzICsrOw0KKyAgICB9DQorICAgIGlmIChzLmJvdHRvbSA+IGJvdHRvbSkgew0KKyAgICAgICAgcmVjdHNbblJlY3RzXS5sZWZ0ID0gcy5sZWZ0Ow0KKyAgICAgICAgcmVjdHNbblJlY3RzXS5yaWdodCA9IHMucmlnaHQ7DQorICAgICAgICByZWN0c1tuUmVjdHNdLmJvdHRvbSA9IGJvdHRvbTsNCisgICAgICAgIHJlY3RzW25SZWN0c10udG9wID0gcy5ib3R0b207DQorICAgICAgICBuUmVjdHMgKys7DQorICAgIH0NCisgICAgaWYgKG5SZWN0cyA9PSAwKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5SZWN0czsgaSArKykgew0KKyAgICAgICAgcFJlY3RzW2ldID0gcmVjdHNbaV07DQorICAgICAgICBwUmVjdHNbaV0uSW50ZXJzZWN0KCp0aGlzKTsNCisgICAgfQ0KKyAgICByZXR1cm4gblJlY3RzOw0KK30NCitGWF9SRUNUIENGWF9GbG9hdFJlY3Q6OkdldE91dHRlclJlY3QoKSBjb25zdA0KK3sNCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0MSA9ICp0aGlzOw0KKyAgICBGWF9SRUNUIHJlY3Q7DQorICAgIHJlY3QubGVmdCA9IChpbnQpRlhTWVNfZmxvb3IocmVjdDEubGVmdCk7DQorICAgIHJlY3QucmlnaHQgPSAoaW50KUZYU1lTX2NlaWwocmVjdDEucmlnaHQpOw0KKyAgICByZWN0LnRvcCA9IChpbnQpRlhTWVNfZmxvb3IocmVjdDEuYm90dG9tKTsNCisgICAgcmVjdC5ib3R0b20gPSAoaW50KUZYU1lTX2NlaWwocmVjdDEudG9wKTsNCisgICAgcmVjdC5Ob3JtYWxpemUoKTsNCisgICAgcmV0dXJuIHJlY3Q7DQorfQ0KK0ZYX1JFQ1QgQ0ZYX0Zsb2F0UmVjdDo6R2V0SW5uZXJSZWN0KCkgY29uc3QNCit7DQorICAgIENGWF9GbG9hdFJlY3QgcmVjdDEgPSAqdGhpczsNCisgICAgRlhfUkVDVCByZWN0Ow0KKyAgICByZWN0LmxlZnQgPSAoaW50KUZYU1lTX2NlaWwocmVjdDEubGVmdCk7DQorICAgIHJlY3QucmlnaHQgPSAoaW50KUZYU1lTX2Zsb29yKHJlY3QxLnJpZ2h0KTsNCisgICAgcmVjdC50b3AgPSAoaW50KUZYU1lTX2NlaWwocmVjdDEuYm90dG9tKTsNCisgICAgcmVjdC5ib3R0b20gPSAoaW50KUZYU1lTX2Zsb29yKHJlY3QxLnRvcCk7DQorICAgIHJlY3QuTm9ybWFsaXplKCk7DQorICAgIHJldHVybiByZWN0Ow0KK30NCitzdGF0aWMgdm9pZCBfTWF0Y2hGbG9hdFJhbmdlKEZYX0ZMT0FUIGYxLCBGWF9GTE9BVCBmMiwgaW50JiBpMSwgaW50JiBpMikNCit7DQorICAgIGludCBsZW5ndGggPSAoaW50KUZYU1lTX2NlaWwoZjIgLSBmMSk7DQorICAgIGludCBpMV8xID0gKGludClGWFNZU19mbG9vcihmMSk7DQorICAgIGludCBpMV8yID0gKGludClGWFNZU19jZWlsKGYxKTsNCisgICAgRlhfRkxPQVQgZXJyb3IxID0gZjEgLSBpMV8xICsgKEZYX0ZMT0FUKUZYU1lTX2ZhYnMoZjIgLSBpMV8xIC0gbGVuZ3RoKTsNCisgICAgRlhfRkxPQVQgZXJyb3IyID0gaTFfMiAtIGYxICsgKEZYX0ZMT0FUKUZYU1lTX2ZhYnMoZjIgLSBpMV8yIC0gbGVuZ3RoKTsNCisgICAgaTEgPSAoZXJyb3IxID4gZXJyb3IyKSA/IGkxXzIgOiBpMV8xOw0KKyAgICBpMiA9IGkxICsgbGVuZ3RoOw0KK30NCitGWF9SRUNUIENGWF9GbG9hdFJlY3Q6OkdldENsb3Nlc3RSZWN0KCkgY29uc3QNCit7DQorICAgIENGWF9GbG9hdFJlY3QgcmVjdDEgPSAqdGhpczsNCisgICAgRlhfUkVDVCByZWN0Ow0KKyAgICBfTWF0Y2hGbG9hdFJhbmdlKHJlY3QxLmxlZnQsIHJlY3QxLnJpZ2h0LCByZWN0LmxlZnQsIHJlY3QucmlnaHQpOw0KKyAgICBfTWF0Y2hGbG9hdFJhbmdlKHJlY3QxLmJvdHRvbSwgcmVjdDEudG9wLCByZWN0LnRvcCwgcmVjdC5ib3R0b20pOw0KKyAgICByZWN0Lk5vcm1hbGl6ZSgpOw0KKyAgICByZXR1cm4gcmVjdDsNCit9DQorRlhfQk9PTCBDRlhfRmxvYXRSZWN0OjpDb250YWlucyhjb25zdCBDRlhfRmxvYXRSZWN0JiBvdGhlcl9yZWN0KSBjb25zdA0KK3sNCisgICAgQ0ZYX0Zsb2F0UmVjdCBuMSA9ICp0aGlzOw0KKyAgICBuMS5Ob3JtYWxpemUoKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCBuMiA9IG90aGVyX3JlY3Q7DQorICAgIG4yLk5vcm1hbGl6ZSgpOw0KKyAgICBpZiAobjIubGVmdCA+PSBuMS5sZWZ0ICYmIG4yLnJpZ2h0IDw9IG4xLnJpZ2h0ICYmIG4yLmJvdHRvbSA+PSBuMS5ib3R0b20gJiYgbjIudG9wIDw9IG4xLnRvcCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitGWF9CT09MIENGWF9GbG9hdFJlY3Q6OkNvbnRhaW5zKEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHkpIGNvbnN0DQorew0KKyAgICBDRlhfRmxvYXRSZWN0IG4xID0gKnRoaXM7DQorICAgIG4xLk5vcm1hbGl6ZSgpOw0KKyAgICByZXR1cm4geCA8PSBuMS5yaWdodCAmJiB4ID49IG4xLmxlZnQgJiYgeSA8PSBuMS50b3AgJiYgeSA+PSBuMS5ib3R0b207DQorfQ0KK3ZvaWQgQ0ZYX0Zsb2F0UmVjdDo6VXBkYXRlUmVjdChGWF9GTE9BVCB4LCBGWF9GTE9BVCB5KQ0KK3sNCisgICAgaWYgKGxlZnQgPiB4KSB7DQorICAgICAgICBsZWZ0ID0geDsNCisgICAgfQ0KKyAgICBpZiAocmlnaHQgPCB4KSB7DQorICAgICAgICByaWdodCA9IHg7DQorICAgIH0NCisgICAgaWYgKGJvdHRvbSA+IHkpIHsNCisgICAgICAgIGJvdHRvbSA9IHk7DQorICAgIH0NCisgICAgaWYgKHRvcCA8IHkpIHsNCisgICAgICAgIHRvcCA9IHk7DQorICAgIH0NCit9DQorQ0ZYX0Zsb2F0UmVjdCBDRlhfRmxvYXRSZWN0OjpHZXRCQm94KGNvbnN0IENGWF9GbG9hdFBvaW50KiBwUG9pbnRzLCBpbnQgblBvaW50cykNCit7DQorICAgIGlmIChuUG9pbnRzID09IDApIHsNCisgICAgICAgIHJldHVybiBDRlhfRmxvYXRSZWN0KCk7DQorICAgIH0NCisgICAgRlhfRkxPQVQgbWluX3ggPSBwUG9pbnRzLT54LCBtYXhfeCA9IHBQb2ludHMtPngsIG1pbl95ID0gcFBvaW50cy0+eSwgbWF4X3kgPSBwUG9pbnRzLT55Ow0KKyAgICBmb3IgKGludCBpID0gMTsgaSA8IG5Qb2ludHM7IGkgKyspIHsNCisgICAgICAgIGlmIChtaW5feCA+IHBQb2ludHNbaV0ueCkgew0KKyAgICAgICAgICAgIG1pbl94ID0gcFBvaW50c1tpXS54Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1heF94IDwgcFBvaW50c1tpXS54KSB7DQorICAgICAgICAgICAgbWF4X3ggPSBwUG9pbnRzW2ldLng7DQorICAgICAgICB9DQorICAgICAgICBpZiAobWluX3kgPiBwUG9pbnRzW2ldLnkpIHsNCisgICAgICAgICAgICBtaW5feSA9IHBQb2ludHNbaV0ueTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtYXhfeSA8IHBQb2ludHNbaV0ueSkgew0KKyAgICAgICAgICAgIG1heF95ID0gcFBvaW50c1tpXS55Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDRlhfRmxvYXRSZWN0KG1pbl94LCBtaW5feSwgbWF4X3gsIG1heF95KTsNCit9DQordm9pZCBDRlhfTWF0cml4OjpTZXQoRlhfRkxPQVQgYSwgRlhfRkxPQVQgYiwgRlhfRkxPQVQgYywgRlhfRkxPQVQgZCwgRlhfRkxPQVQgZSwgRlhfRkxPQVQgZikNCit7DQorICAgIHRoaXMtPmEgPSBhOw0KKyAgICB0aGlzLT5iID0gYjsNCisgICAgdGhpcy0+YyA9IGM7DQorICAgIHRoaXMtPmQgPSBkOw0KKyAgICB0aGlzLT5lID0gZTsNCisgICAgdGhpcy0+ZiA9IGY7DQorfQ0KK3ZvaWQgQ0ZYX01hdHJpeDo6U2V0KGNvbnN0IEZYX0ZMT0FUIG5bNl0pDQorew0KKyAgICBGWFNZU19tZW1jcHkzMigodm9pZCopdGhpcywgJm4sIHNpemVvZihDRlhfTWF0cml4KSk7DQorfQ0KK3ZvaWQgQ0ZYX01hdHJpeDo6U2V0UmV2ZXJzZShjb25zdCBDRlhfTWF0cml4ICZtKQ0KK3sNCisgICAgRlhfRkxPQVQgaSA9IG0uYSAqIG0uZCAtIG0uYiAqIG0uYzsNCisgICAgaWYgKEZYU1lTX2ZhYnMoaSkgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIGogPSAtaTsNCisgICAgYSA9IG0uZCAvIGk7DQorICAgIGIgPSBtLmIgLyBqOw0KKyAgICBjID0gbS5jIC8gajsNCisgICAgZCA9IG0uYSAvIGk7DQorICAgIGUgPSAobS5jICogbS5mIC0gbS5kICogbS5lKSAvIGk7DQorICAgIGYgPSAobS5hICogbS5mIC0gbS5iICogbS5lKSAvIGo7DQorfQ0KK3N0YXRpYyB2b2lkIEZYQ1JUX01hdHJpeF9Db25jYXQoQ0ZYX01hdHJpeCAmbSwgY29uc3QgQ0ZYX01hdHJpeCAmbTEsIGNvbnN0IENGWF9NYXRyaXggJm0yKQ0KK3sNCisgICAgRlhfRkxPQVQgYWEgPSBtMS5hICogbTIuYSArIG0xLmIgKiBtMi5jOw0KKyAgICBGWF9GTE9BVCBiYiA9IG0xLmEgKiBtMi5iICsgbTEuYiAqIG0yLmQ7DQorICAgIEZYX0ZMT0FUIGNjID0gbTEuYyAqIG0yLmEgKyBtMS5kICogbTIuYzsNCisgICAgRlhfRkxPQVQgZGQgPSBtMS5jICogbTIuYiArIG0xLmQgKiBtMi5kOw0KKyAgICBGWF9GTE9BVCBlZSA9IG0xLmUgKiBtMi5hICsgbTEuZiAqIG0yLmMgKyBtMi5lOw0KKyAgICBGWF9GTE9BVCBmZiA9IG0xLmUgKiBtMi5iICsgbTEuZiAqIG0yLmQgKyBtMi5mOw0KKyAgICBtLmEgPSBhYSwgbS5iID0gYmIsIG0uYyA9IGNjLCBtLmQgPSBkZCwgbS5lID0gZWUsIG0uZiA9IGZmOw0KK30NCit2b2lkIENGWF9NYXRyaXg6OkNvbmNhdChGWF9GTE9BVCBhLCBGWF9GTE9BVCBiLCBGWF9GTE9BVCBjLCBGWF9GTE9BVCBkLCBGWF9GTE9BVCBlLCBGWF9GTE9BVCBmLCBGWF9CT09MIGJQcmVwZW5kZWQpDQorew0KKyAgICBDRlhfTWF0cml4IG07DQorICAgIG0uU2V0KGEsIGIsIGMsIGQsIGUsIGYpOw0KKyAgICBDb25jYXQobSwgYlByZXBlbmRlZCk7DQorfQ0KK3ZvaWQgQ0ZYX01hdHJpeDo6Q29uY2F0KGNvbnN0IENGWF9NYXRyaXggJm0sIEZYX0JPT0wgYlByZXBlbmRlZCkNCit7DQorICAgIGlmIChiUHJlcGVuZGVkKSB7DQorICAgICAgICBGWENSVF9NYXRyaXhfQ29uY2F0KCp0aGlzLCBtLCAqdGhpcyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWENSVF9NYXRyaXhfQ29uY2F0KCp0aGlzLCAqdGhpcywgbSk7DQorICAgIH0NCit9DQordm9pZCBDRlhfTWF0cml4OjpDb25jYXRJbnZlcnNlKGNvbnN0IENGWF9NYXRyaXgmIHNyYywgRlhfQk9PTCBiUHJlcGVuZGVkKQ0KK3sNCisgICAgQ0ZYX01hdHJpeCBtOw0KKyAgICBtLlNldFJldmVyc2Uoc3JjKTsNCisgICAgQ29uY2F0KG0sIGJQcmVwZW5kZWQpOw0KK30NCitGWF9CT09MIENGWF9NYXRyaXg6OklzSW52ZXJ0aWJsZSgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gRlhTWVNfZmFicyhhICogZCAtIGIgKiBjKSA+PSAwLjAwMDFmOw0KK30NCitGWF9CT09MIENGWF9NYXRyaXg6OklzOTBSb3RhdGVkKCkgY29uc3QNCit7DQorICAgIHJldHVybiBGWFNZU19mYWJzKGEgKiAxMDAwKSA8IEZYU1lTX2ZhYnMoYikgJiYgRlhTWVNfZmFicyhkICogMTAwMCkgPCBGWFNZU19mYWJzKGMpOw0KK30NCitGWF9CT09MIENGWF9NYXRyaXg6OklzU2NhbGVkKCkgY29uc3QNCit7DQorICAgIHJldHVybiBGWFNZU19mYWJzKGIgKiAxMDAwKSA8IEZYU1lTX2ZhYnMoYSkgJiYgRlhTWVNfZmFicyhjICogMTAwMCkgPCBGWFNZU19mYWJzKGQpOw0KK30NCit2b2lkIENGWF9NYXRyaXg6OlRyYW5zbGF0ZShGWF9GTE9BVCB4LCBGWF9GTE9BVCB5LCBGWF9CT09MIGJQcmVwZW5kZWQpDQorew0KKyAgICBpZiAoYlByZXBlbmRlZCkgew0KKyAgICAgICAgZSArPSB4ICogYSArIHkgKiBjOw0KKyAgICAgICAgZiArPSB5ICogZCArIHggKiBiOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZSArPSB4LCBmICs9IHk7DQorICAgIH0NCit9DQordm9pZCBDRlhfTWF0cml4OjpTY2FsZShGWF9GTE9BVCBzeCwgRlhfRkxPQVQgc3ksIEZYX0JPT0wgYlByZXBlbmRlZCkNCit7DQorICAgIGEgKj0gc3gsIGQgKj0gc3k7DQorICAgIGlmIChiUHJlcGVuZGVkKSB7DQorICAgICAgICBiICo9IHN4Ow0KKyAgICAgICAgYyAqPSBzeTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGIgKj0gc3k7DQorICAgICAgICBjICo9IHN4Ow0KKyAgICAgICAgZSAqPSBzeDsNCisgICAgICAgIGYgKj0gc3k7DQorICAgIH0NCit9DQordm9pZCBDRlhfTWF0cml4OjpSb3RhdGUoRlhfRkxPQVQgZlJhZGlhbiwgRlhfQk9PTCBiUHJlcGVuZGVkKQ0KK3sNCisgICAgRlhfRkxPQVQgY29zVmFsdWUgPSBGWFNZU19jb3MoZlJhZGlhbik7DQorICAgIEZYX0ZMT0FUIHNpblZhbHVlID0gRlhTWVNfc2luKGZSYWRpYW4pOw0KKyAgICBDRlhfTWF0cml4IG07DQorICAgIG0uU2V0KGNvc1ZhbHVlLCBzaW5WYWx1ZSwgLXNpblZhbHVlLCBjb3NWYWx1ZSwgMCwgMCk7DQorICAgIGlmIChiUHJlcGVuZGVkKSB7DQorICAgICAgICBGWENSVF9NYXRyaXhfQ29uY2F0KCp0aGlzLCBtLCAqdGhpcyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWENSVF9NYXRyaXhfQ29uY2F0KCp0aGlzLCAqdGhpcywgbSk7DQorICAgIH0NCit9DQordm9pZCBDRlhfTWF0cml4OjpSb3RhdGVBdChGWF9GTE9BVCBmUmFkaWFuLCBGWF9GTE9BVCBkeCwgRlhfRkxPQVQgZHksIEZYX0JPT0wgYlByZXBlbmRlZCkNCit7DQorICAgIFRyYW5zbGF0ZShkeCwgZHksIGJQcmVwZW5kZWQpOw0KKyAgICBSb3RhdGUoZlJhZGlhbiwgYlByZXBlbmRlZCk7DQorICAgIFRyYW5zbGF0ZSgtZHgsIC1keSwgYlByZXBlbmRlZCk7DQorfQ0KK3ZvaWQgQ0ZYX01hdHJpeDo6U2hlYXIoRlhfRkxPQVQgZkFscGhhUmFkaWFuLCBGWF9GTE9BVCBmQmV0YVJhZGlhbiwgRlhfQk9PTCBiUHJlcGVuZGVkKQ0KK3sNCisgICAgQ0ZYX01hdHJpeCBtOw0KKyAgICBtLlNldCgxLCBGWFNZU190YW4oZkFscGhhUmFkaWFuKSwgRlhTWVNfdGFuKGZCZXRhUmFkaWFuKSwgMSwgMCwgMCk7DQorICAgIGlmIChiUHJlcGVuZGVkKSB7DQorICAgICAgICBGWENSVF9NYXRyaXhfQ29uY2F0KCp0aGlzLCBtLCAqdGhpcyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWENSVF9NYXRyaXhfQ29uY2F0KCp0aGlzLCAqdGhpcywgbSk7DQorICAgIH0NCit9DQordm9pZCBDRlhfTWF0cml4OjpNYXRjaFJlY3QoY29uc3QgQ0ZYX0Zsb2F0UmVjdCYgZGVzdCwgY29uc3QgQ0ZYX0Zsb2F0UmVjdCYgc3JjKQ0KK3sNCisgICAgRlhfRkxPQVQgZkRpZmYgPSBzcmMubGVmdCAtIHNyYy5yaWdodDsNCisgICAgYSA9IEZYU1lTX2ZhYnMoZkRpZmYpIDwgMC4wMDFmID8gMSA6IChkZXN0LmxlZnQgLSBkZXN0LnJpZ2h0KSAvIGZEaWZmOw0KKyAgICBmRGlmZiA9IHNyYy5ib3R0b20gLSBzcmMudG9wOw0KKyAgICBkID0gRlhTWVNfZmFicyhmRGlmZikgPCAwLjAwMWYgPyAxIDogKGRlc3QuYm90dG9tIC0gZGVzdC50b3ApIC8gZkRpZmY7DQorICAgIGUgPSBkZXN0LmxlZnQgLSBzcmMubGVmdCAqIGE7DQorICAgIGYgPSBkZXN0LmJvdHRvbSAtIHNyYy5ib3R0b20gKiBkOw0KKyAgICBiID0gMDsNCisgICAgYyA9IDA7DQorfQ0KK0ZYX0ZMT0FUIENGWF9NYXRyaXg6OkdldFhVbml0KCkgY29uc3QNCit7DQorICAgIGlmIChiID09IDApIHsNCisgICAgICAgIHJldHVybiAoYSA+IDAgPyBhIDogLWEpOw0KKyAgICB9DQorICAgIGlmIChhID09IDApIHsNCisgICAgICAgIHJldHVybiAoYiA+IDAgPyBiIDogLWIpOw0KKyAgICB9DQorICAgIHJldHVybiBGWFNZU19zcXJ0KGEgKiBhICsgYiAqIGIpOw0KK30NCitGWF9GTE9BVCBDRlhfTWF0cml4OjpHZXRZVW5pdCgpIGNvbnN0DQorew0KKyAgICBpZiAoYyA9PSAwKSB7DQorICAgICAgICByZXR1cm4gKGQgPiAwID8gZCA6IC1kKTsNCisgICAgfQ0KKyAgICBpZiAoZCA9PSAwKSB7DQorICAgICAgICByZXR1cm4gKGMgPiAwID8gYyA6IC1jKTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhTWVNfc3FydChjICogYyArIGQgKiBkKTsNCit9DQordm9pZCBDRlhfTWF0cml4OjpHZXRVbml0UmVjdChDRlhfUmVjdEYgJnJlY3QpIGNvbnN0DQorew0KKyAgICByZWN0LmxlZnQgPSByZWN0LnRvcCA9IDA7DQorICAgIHJlY3Qud2lkdGggPSByZWN0LmhlaWdodCA9IDE7DQorICAgIFRyYW5zZm9ybVJlY3QocmVjdCk7DQorfQ0KK0NGWF9GbG9hdFJlY3QgQ0ZYX01hdHJpeDo6R2V0VW5pdFJlY3QoKSBjb25zdA0KK3sNCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0KDAsIDAsIDEsIDEpOw0KKyAgICByZWN0LlRyYW5zZm9ybSgoY29uc3QgQ0ZYX01hdHJpeCopdGhpcyk7DQorICAgIHJldHVybiByZWN0Ow0KK30NCitGWF9GTE9BVCBDRlhfTWF0cml4OjpHZXRVbml0QXJlYSgpIGNvbnN0DQorew0KKyAgICBGWF9GTE9BVCBBID0gRlhTWVNfc3FydChhICogYSArIGIgKiBiKTsNCisgICAgRlhfRkxPQVQgQiA9IEZYU1lTX3NxcnQoYyAqIGMgKyBkICogZCk7DQorICAgIEZYX0ZMT0FUIGFjID0gYSArIGMsIGJkID0gYiArIGQ7DQorICAgIEZYX0ZMT0FUIEMgPSBGWFNZU19zcXJ0KGFjICogYWMgKyBiZCAqIGJkKTsNCisgICAgRlhfRkxPQVQgUCA9IChBICsgQiArIEMgKSAvIDI7DQorICAgIHJldHVybiBGWFNZU19zcXJ0KFAgKiAoUCAtIEEpICogKFAgLSBCKSAqIChQIC0gQykpICogMjsNCit9DQorRlhfRkxPQVQgQ0ZYX01hdHJpeDo6VHJhbnNmb3JtWERpc3RhbmNlKEZYX0ZMT0FUIGR4KSBjb25zdA0KK3sNCisgICAgRlhfRkxPQVQgZnggPSBhICogZHgsIGZ5ID0gYiAqIGR4Ow0KKyAgICByZXR1cm4gRlhTWVNfc3FydChmeCAqIGZ4ICsgZnkgKiBmeSk7DQorfQ0KK0ZYX0lOVDMyIENGWF9NYXRyaXg6OlRyYW5zZm9ybVhEaXN0YW5jZShGWF9JTlQzMiBkeCkgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUIGZ4ID0gYSAqIGR4LCBmeSA9IGIgKiBkeDsNCisgICAgcmV0dXJuIEZYU1lTX3JvdW5kKEZYU1lTX3NxcnQoZnggKiBmeCArIGZ5ICogZnkpKTsNCit9DQorRlhfRkxPQVQgQ0ZYX01hdHJpeDo6VHJhbnNmb3JtWURpc3RhbmNlKEZYX0ZMT0FUIGR5KSBjb25zdA0KK3sNCisgICAgRlhfRkxPQVQgZnggPSBjICogZHksIGZ5ID0gZCAqIGR5Ow0KKyAgICByZXR1cm4gRlhTWVNfc3FydChmeCAqIGZ4ICsgZnkgKiBmeSk7DQorfQ0KK0ZYX0lOVDMyIENGWF9NYXRyaXg6OlRyYW5zZm9ybVlEaXN0YW5jZShGWF9JTlQzMiBkeSkgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUIGZ4ID0gYyAqIGR5LCBmeSA9IGQgKiBkeTsNCisgICAgcmV0dXJuIEZYU1lTX3JvdW5kKEZYU1lTX3NxcnQoZnggKiBmeCArIGZ5ICogZnkpKTsNCit9DQorRlhfRkxPQVQgQ0ZYX01hdHJpeDo6VHJhbnNmb3JtRGlzdGFuY2UoRlhfRkxPQVQgZHgsIEZYX0ZMT0FUIGR5KSBjb25zdA0KK3sNCisgICAgRlhfRkxPQVQgZnggPSBhICogZHggKyBjICogZHksIGZ5ID0gYiAqIGR4ICsgZCAqIGR5Ow0KKyAgICByZXR1cm4gRlhTWVNfc3FydChmeCAqIGZ4ICsgZnkgKiBmeSk7DQorfQ0KK0ZYX0lOVDMyIENGWF9NYXRyaXg6OlRyYW5zZm9ybURpc3RhbmNlKEZYX0lOVDMyIGR4LCBGWF9JTlQzMiBkeSkgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUIGZ4ID0gYSAqIGR4ICsgYyAqIGR5LCBmeSA9IGIgKiBkeCArIGQgKiBkeTsNCisgICAgcmV0dXJuIEZYU1lTX3JvdW5kKEZYU1lTX3NxcnQoZnggKiBmeCArIGZ5ICogZnkpKTsNCit9DQorRlhfRkxPQVQgQ0ZYX01hdHJpeDo6VHJhbnNmb3JtRGlzdGFuY2UoRlhfRkxPQVQgZGlzdGFuY2UpIGNvbnN0DQorew0KKyAgICByZXR1cm4gZGlzdGFuY2UgKiAoR2V0WFVuaXQoKSArIEdldFlVbml0KCkpIC8gMjsNCit9DQordm9pZCBDRlhfTWF0cml4OjpUcmFuc2Zvcm1WZWN0b3IoQ0ZYX1ZlY3RvckYgJnYpIGNvbnN0DQorew0KKyAgICBGWF9GTE9BVCBmeCA9IGEgKiB2LnggKyBjICogdi55Ow0KKyAgICBGWF9GTE9BVCBmeSA9IGIgKiB2LnggKyBkICogdi55Ow0KKyAgICB2LnggPSBmeCwgdi55ID0gZnk7DQorfQ0KK3ZvaWQgQ0ZYX01hdHJpeDo6VHJhbnNmb3JtVmVjdG9yKENGWF9WZWN0b3IgJnYpIGNvbnN0DQorew0KKyAgICBGWF9GTE9BVCBmeCA9IGEgKiB2LnggKyBjICogdi55Ow0KKyAgICBGWF9GTE9BVCBmeSA9IGIgKiB2LnggKyBkICogdi55Ow0KKyAgICB2LnggPSBGWFNZU19yb3VuZChmeCk7DQorICAgIHYueSA9IEZYU1lTX3JvdW5kKGZ5KTsNCit9DQordm9pZCBDRlhfTWF0cml4OjpUcmFuc2Zvcm1Qb2ludHMoQ0ZYX1BvaW50ICpwb2ludHMsIEZYX0lOVDMyIGlDb3VudCkgY29uc3QNCit7DQorICAgIEZYU1lTX2Fzc2VydChpQ291bnQgPiAwKTsNCisgICAgRlhfRkxPQVQgZngsIGZ5Ow0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgaUNvdW50OyBpICsrKSB7DQorICAgICAgICBmeCA9IGEgKiBwb2ludHMtPnggKyBjICogcG9pbnRzLT55ICsgZTsNCisgICAgICAgIGZ5ID0gYiAqIHBvaW50cy0+eCArIGQgKiBwb2ludHMtPnkgKyBmOw0KKyAgICAgICAgcG9pbnRzLT54ID0gRlhTWVNfcm91bmQoZngpOw0KKyAgICAgICAgcG9pbnRzLT55ID0gRlhTWVNfcm91bmQoZnkpOw0KKyAgICAgICAgcG9pbnRzICsrOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX01hdHJpeDo6VHJhbnNmb3JtUG9pbnRzKENGWF9Qb2ludEYgKnBvaW50cywgRlhfSU5UMzIgaUNvdW50KSBjb25zdA0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KGlDb3VudCA+IDApOw0KKyAgICBGWF9GTE9BVCBmeCwgZnk7DQorICAgIGZvciAoRlhfSU5UMzIgaSA9IDA7IGkgPCBpQ291bnQ7IGkgKyspIHsNCisgICAgICAgIGZ4ID0gYSAqIHBvaW50cy0+eCArIGMgKiBwb2ludHMtPnkgKyBlOw0KKyAgICAgICAgZnkgPSBiICogcG9pbnRzLT54ICsgZCAqIHBvaW50cy0+eSArIGY7DQorICAgICAgICBwb2ludHMtPnggPSBmeCwgcG9pbnRzLT55ID0gZnk7DQorICAgICAgICBwb2ludHMgKys7DQorICAgIH0NCit9DQordm9pZCBDRlhfTWF0cml4OjpUcmFuc2Zvcm1Qb2ludChGWF9GTE9BVCAmeCwgRlhfRkxPQVQgJnkpIGNvbnN0DQorew0KKyAgICBGWF9GTE9BVCBmeCA9IGEgKiB4ICsgYyAqIHkgKyBlOw0KKyAgICBGWF9GTE9BVCBmeSA9IGIgKiB4ICsgZCAqIHkgKyBmOw0KKyAgICB4ID0gZngsIHkgPSBmeTsNCit9DQordm9pZCBDRlhfTWF0cml4OjpUcmFuc2Zvcm1Qb2ludChGWF9JTlQzMiAmeCwgRlhfSU5UMzIgJnkpIGNvbnN0DQorew0KKyAgICBGWF9GTE9BVCBmeCA9IGEgKiB4ICsgYyAqIHkgKyBlOw0KKyAgICBGWF9GTE9BVCBmeSA9IGIgKiB4ICsgZCAqIHkgKyBmOw0KKyAgICB4ID0gRlhTWVNfcm91bmQoZngpOw0KKyAgICB5ID0gRlhTWVNfcm91bmQoZnkpOw0KK30NCit2b2lkIENGWF9NYXRyaXg6OlRyYW5zZm9ybVJlY3QoQ0ZYX1JlY3RGICZyZWN0KSBjb25zdA0KK3sNCisgICAgRlhfRkxPQVQgcmlnaHQgPSByZWN0LnJpZ2h0KCksIGJvdHRvbSA9IHJlY3QuYm90dG9tKCk7DQorICAgIFRyYW5zZm9ybVJlY3QocmVjdC5sZWZ0LCByaWdodCwgYm90dG9tLCByZWN0LnRvcCk7DQorICAgIHJlY3Qud2lkdGggPSByaWdodCAtIHJlY3QubGVmdDsNCisgICAgcmVjdC5oZWlnaHQgPSBib3R0b20gLSByZWN0LnRvcDsNCit9DQordm9pZCBDRlhfTWF0cml4OjpUcmFuc2Zvcm1SZWN0KENGWF9SZWN0ICZyZWN0KSBjb25zdA0KK3sNCisgICAgRlhfRkxPQVQgbGVmdCA9IChGWF9GTE9BVClyZWN0LmxlZnQ7DQorICAgIEZYX0ZMT0FUIHRvcCA9IChGWF9GTE9BVClyZWN0LmJvdHRvbSgpOw0KKyAgICBGWF9GTE9BVCByaWdodCA9IChGWF9GTE9BVClyZWN0LnJpZ2h0KCk7DQorICAgIEZYX0ZMT0FUIGJvdHRvbSA9IChGWF9GTE9BVClyZWN0LnRvcDsNCisgICAgVHJhbnNmb3JtUmVjdChsZWZ0LCByaWdodCwgdG9wLCBib3R0b20pOw0KKyAgICByZWN0LmxlZnQgPSBGWFNZU19yb3VuZChsZWZ0KTsNCisgICAgcmVjdC50b3AgPSBGWFNZU19yb3VuZChib3R0b20pOw0KKyAgICByZWN0LndpZHRoID0gRlhTWVNfcm91bmQocmlnaHQgLSBsZWZ0KTsNCisgICAgcmVjdC5oZWlnaHQgPSBGWFNZU19yb3VuZCh0b3AgLSBib3R0b20pOw0KK30NCit2b2lkIENGWF9NYXRyaXg6OlRyYW5zZm9ybVJlY3QoRlhfRkxPQVQmIGxlZnQsIEZYX0ZMT0FUJiByaWdodCwgRlhfRkxPQVQmIHRvcCwgRlhfRkxPQVQmIGJvdHRvbSkgY29uc3QNCit7DQorICAgIEZYX0ZMT0FUIHhbNF0sIHlbNF07DQorICAgIHhbMF0gPSBsZWZ0Ow0KKyAgICB5WzBdID0gdG9wOw0KKyAgICB4WzFdID0gbGVmdDsNCisgICAgeVsxXSA9IGJvdHRvbTsNCisgICAgeFsyXSA9IHJpZ2h0Ow0KKyAgICB5WzJdID0gdG9wOw0KKyAgICB4WzNdID0gcmlnaHQ7DQorICAgIHlbM10gPSBib3R0b207DQorICAgIGludCBpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgVHJhbnNmb3JtKHhbaV0sIHlbaV0sIHhbaV0sIHlbaV0pOw0KKyAgICB9DQorICAgIHJpZ2h0ID0gbGVmdCA9IHhbMF07DQorICAgIHRvcCA9IGJvdHRvbSA9IHlbMF07DQorICAgIGZvciAoaSA9IDE7IGkgPCA0OyBpICsrKSB7DQorICAgICAgICBpZiAocmlnaHQgPCB4W2ldKSB7DQorICAgICAgICAgICAgcmlnaHQgPSB4W2ldOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGxlZnQgPiB4W2ldKSB7DQorICAgICAgICAgICAgbGVmdCA9IHhbaV07DQorICAgICAgICB9DQorICAgICAgICBpZiAodG9wIDwgeVtpXSkgew0KKyAgICAgICAgICAgIHRvcCA9IHlbaV07DQorICAgICAgICB9DQorICAgICAgICBpZiAoYm90dG9tID4geVtpXSkgew0KKyAgICAgICAgICAgIGJvdHRvbSA9IHlbaV07DQorICAgICAgICB9DQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfZ2NjLmNwcCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX2djYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBhMWU1OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX2djYy5jcHAKQEAgLTAsMCArMSwyMzIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2V4dC5oIg0KK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBTVFJfVD4NCitUIEZYU1lTX1N0clRvSW50KFNUUl9UIHN0cikNCit7DQorICAgIEZYX0JPT0wgbmVnID0gRkFMU0U7DQorICAgIGlmIChzdHIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKCpzdHIgPT0gJy0nKSB7DQorICAgICAgICBuZWcgPSBUUlVFOw0KKyAgICAgICAgc3RyICsrOw0KKyAgICB9DQorICAgIFQgbnVtID0gMDsNCisgICAgd2hpbGUgKCpzdHIpIHsNCisgICAgICAgIGlmICgoKnN0cikgPCAnMCcgfHwgKCpzdHIpID4gJzknKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBudW0gPSBudW0gKiAxMCArICgqc3RyKSAtICcwJzsNCisgICAgICAgIHN0ciArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gbmVnID8gLW51bSA6IG51bTsNCit9DQordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNUUl9UPg0KK1NUUl9UIEZYU1lTX0ludFRvU3RyKFQgdmFsdWUsIFNUUl9UIHN0cmluZywgaW50IHJhZGl4KQ0KK3sNCisgICAgaW50IGkgPSAwOw0KKyAgICBpZiAodmFsdWUgPCAwKSB7DQorICAgICAgICBzdHJpbmdbaSsrXSA9ICctJzsNCisgICAgICAgIHZhbHVlID0gLXZhbHVlOw0KKyAgICB9IGVsc2UgaWYgKHZhbHVlID09IDApIHsNCisgICAgICAgIHN0cmluZ1swXSA9ICcwJzsNCisgICAgICAgIHN0cmluZ1sxXSA9IDA7DQorICAgICAgICByZXR1cm4gc3RyaW5nOw0KKyAgICB9DQorICAgIGludCBkaWdpdHMgPSAxOw0KKyAgICBUIG9yZGVyID0gdmFsdWUgLyAxMDsNCisgICAgd2hpbGUob3JkZXIgPiAwKSB7DQorICAgICAgICBkaWdpdHMrKzsNCisgICAgICAgIG9yZGVyID0gb3JkZXIgLyAxMDsNCisgICAgfQ0KKyAgICBmb3IgKGludCBkID0gZGlnaXRzIC0gMTsgZCA+IC0xOyBkLS0pIHsNCisgICAgICAgIHN0cmluZ1tkICsgaV0gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbdmFsdWUgJSAxMF07DQorICAgICAgICB2YWx1ZSAvPSAxMDsNCisgICAgfQ0KKyAgICBzdHJpbmdbZGlnaXRzICsgaV0gPSAwOw0KKyAgICByZXR1cm4gc3RyaW5nOw0KK30NCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCitGWF9JTlQzMiBGWFNZU19hdG9pKEZYX0xQQ1NUUiBzdHIpDQorew0KKyAgICByZXR1cm4gRlhTWVNfU3RyVG9JbnQ8RlhfSU5UMzIsIEZYX0xQQ1NUUj4oc3RyKTsNCit9DQorRlhfSU5UMzIgRlhTWVNfd3RvaShGWF9MUENXU1RSIHN0cikNCit7DQorICAgIHJldHVybiBGWFNZU19TdHJUb0ludDxGWF9JTlQzMiwgRlhfTFBDV1NUUj4oc3RyKTsNCit9DQorRlhfSU5UNjQgRlhTWVNfYXRvaTY0KEZYX0xQQ1NUUiBzdHIpDQorew0KKyAgICByZXR1cm4gRlhTWVNfU3RyVG9JbnQ8RlhfSU5UNjQsIEZYX0xQQ1NUUj4oc3RyKTsNCit9DQorRlhfSU5UNjQgRlhTWVNfd3RvaTY0KEZYX0xQQ1dTVFIgc3RyKQ0KK3sNCisgICAgcmV0dXJuIEZYU1lTX1N0clRvSW50PEZYX0lOVDY0LCBGWF9MUENXU1RSPihzdHIpOw0KK30NCitGWF9MUENTVFIgRlhTWVNfaTY0dG9hKEZYX0lOVDY0IHZhbHVlLCBGWF9MUFNUUiBzdHIsIGludCByYWRpeCkNCit7DQorICAgIHJldHVybiBGWFNZU19JbnRUb1N0cjxGWF9JTlQ2NCwgRlhfTFBTVFI+KHZhbHVlLCBzdHIsIHJhZGl4KTsNCit9DQorRlhfTFBDV1NUUiBGWFNZU19pNjR0b3coRlhfSU5UNjQgdmFsdWUsIEZYX0xQV1NUUiBzdHIsIGludCByYWRpeCkNCit7DQorICAgIHJldHVybiBGWFNZU19JbnRUb1N0cjxGWF9JTlQ2NCwgRlhfTFBXU1RSPih2YWx1ZSwgc3RyLCByYWRpeCk7DQorfQ0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisjaWYgX0ZYTV9QTEFURk9STV8gIT0gX0ZYTV9QTEFURk9STV9XSU5ET1dTXw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZg0KK2ludCBGWFNZU19HZXRBQ1AoKQ0KK3sNCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX0RXT1JEIEZYU1lTX0dldEZ1bGxQYXRoTmFtZShGWF9MUENTVFIgZmlsZW5hbWUsIEZYX0RXT1JEIGJ1ZmxlbiwgRlhfTFBTVFIgYnVmLCBGWF9MUFNUUiogZmlsZXBhcnQpDQorew0KKyAgICBpbnQgc3JjbGVuID0gRlhTWVNfc3RybGVuKGZpbGVuYW1lKTsNCisgICAgaWYgKGJ1ZiA9PSBOVUxMIHx8IChpbnQpYnVmbGVuIDwgc3JjbGVuICsgMSkgew0KKyAgICAgICAgcmV0dXJuIHNyY2xlbiArIDE7DQorICAgIH0NCisgICAgRlhTWVNfc3RyY3B5KGJ1ZiwgZmlsZW5hbWUpOw0KKyAgICByZXR1cm4gc3JjbGVuOw0KK30NCitGWF9EV09SRCBGWFNZU19HZXRNb2R1bGVGaWxlTmFtZShGWF9MUFZPSUQgaE1vZHVsZSwgY2hhciogYnVmLCBGWF9EV09SRCBidWZzaXplKQ0KK3sNCisgICAgcmV0dXJuIChGWF9EV09SRCkgLSAxOw0KK30NCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorI2VuZGlmDQorI2lmIF9GWE1fUExBVEZPUk1fICE9IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCitGWFNZU19GSUxFKiBGWFNZU193Zm9wZW4oRlhfTFBDV1NUUiBmaWxlbmFtZSwgRlhfTFBDV1NUUiBtb2RlKQ0KK3sNCisgICAgcmV0dXJuIEZYU1lTX2ZvcGVuKENGWF9CeXRlU3RyaW5nOjpGcm9tVW5pY29kZShmaWxlbmFtZSksIENGWF9CeXRlU3RyaW5nOjpGcm9tVW5pY29kZShtb2RlKSk7DQorfQ0KK2NoYXIqIEZYU1lTX3N0cmx3cihjaGFyKiBzdHIpDQorew0KKyAgICBpZiAoc3RyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGNoYXIqIHMgPSBzdHI7DQorICAgIHdoaWxlICgqc3RyKSB7DQorICAgICAgICAqc3RyID0gRlhTWVNfdG9sb3dlcigqc3RyKTsNCisgICAgICAgIHN0ciArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gczsNCit9DQorY2hhciogRlhTWVNfc3RydXByKGNoYXIqIHN0cikNCit7DQorICAgIGlmIChzdHIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgY2hhciogcyA9IHN0cjsNCisgICAgd2hpbGUgKCpzdHIpIHsNCisgICAgICAgICpzdHIgPSBGWFNZU190b3VwcGVyKCpzdHIpOw0KKyAgICAgICAgc3RyICsrOw0KKyAgICB9DQorICAgIHJldHVybiBzOw0KK30NCitGWF9XQ0hBUiogRlhTWVNfd2NzbHdyKEZYX1dDSEFSKiBzdHIpDQorew0KKyAgICBpZiAoc3RyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX1dDSEFSKiBzID0gc3RyOw0KKyAgICB3aGlsZSAoKnN0cikgew0KKyAgICAgICAgKnN0ciA9IEZYU1lTX3RvbG93ZXIoKnN0cik7DQorICAgICAgICBzdHIgKys7DQorICAgIH0NCisgICAgcmV0dXJuIHM7DQorfQ0KK0ZYX1dDSEFSKiBGWFNZU193Y3N1cHIoRlhfV0NIQVIqIHN0cikNCit7DQorICAgIGlmIChzdHIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhfV0NIQVIqIHMgPSBzdHI7DQorICAgIHdoaWxlICgqc3RyKSB7DQorICAgICAgICAqc3RyID0gRlhTWVNfdG91cHBlcigqc3RyKTsNCisgICAgICAgIHN0ciArKzsNCisgICAgfQ0KKyAgICByZXR1cm4gczsNCit9DQoraW50IEZYU1lTX3N0cmljbXAoY29uc3QgY2hhcipkc3QsIGNvbnN0IGNoYXIqc3JjKQ0KK3sNCisgICAgaW50IGYsIGw7DQorICAgIGRvIHsNCisgICAgICAgIGlmICggKChmID0gKHVuc2lnbmVkIGNoYXIpKCooZHN0KyspKSkgPj0gJ0EnKSAmJiAoZiA8PSAnWicpICkgew0KKyAgICAgICAgICAgIGYgLT0gKCdBJyAtICdhJyk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoICgobCA9ICh1bnNpZ25lZCBjaGFyKSgqKHNyYysrKSkpID49ICdBJykgJiYgKGwgPD0gJ1onKSApIHsNCisgICAgICAgICAgICBsIC09ICgnQScgLSAnYScpOw0KKyAgICAgICAgfQ0KKyAgICB9IHdoaWxlICggZiAmJiAoZiA9PSBsKSApOw0KKyAgICByZXR1cm4oZiAtIGwpOw0KK30NCitpbnQgRlhTWVNfd2NzaWNtcChjb25zdCBGWF9XQ0hBUiAqZHN0LCBjb25zdCBGWF9XQ0hBUiAqc3JjKQ0KK3sNCisgICAgRlhfV0NIQVIgZiwgbDsNCisgICAgZG8gew0KKyAgICAgICAgaWYgKCAoKGYgPSAoRlhfV0NIQVIpKCooZHN0KyspKSkgPj0gJ0EnKSAmJiAoZiA8PSAnWicpICkgew0KKyAgICAgICAgICAgIGYgLT0gKCdBJyAtICdhJyk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoICgobCA9IChGWF9XQ0hBUikoKihzcmMrKykpKSA+PSAnQScpICYmIChsIDw9ICdaJykgKSB7DQorICAgICAgICAgICAgbCAtPSAoJ0EnIC0gJ2EnKTsNCisgICAgICAgIH0NCisgICAgfSB3aGlsZSAoIGYgJiYgKGYgPT0gbCkgKTsNCisgICAgcmV0dXJuKGYgLSBsKTsNCit9DQorY2hhciogRlhTWVNfaXRvYShpbnQgdmFsdWUsIGNoYXIqIHN0cmluZywgaW50IHJhZGl4KQ0KK3sNCisgICAgcmV0dXJuIEZYU1lTX0ludFRvU3RyPEZYX0lOVDMyLCBGWF9MUFNUUj4odmFsdWUsIHN0cmluZywgcmFkaXgpOw0KK30NCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorI2VuZGlmDQorI2lmIF9GWE1fUExBVEZPUk1fICE9IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCitpbnQgRlhTWVNfV2lkZUNoYXJUb011bHRpQnl0ZShGWF9EV09SRCBjb2RlcGFnZSwgRlhfRFdPUkQgZHdGbGFncywgRlhfTFBDV1NUUiB3c3RyLCBpbnQgd2xlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUFNUUiBidWYsIGludCBidWZsZW4sIEZYX0xQQ1NUUiBkZWZhdWx0X3N0ciwgRlhfQk9PTCogcFVzZURlZmF1bHQpDQorew0KKyAgICBpbnQgbGVuID0gMDsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3bGVuOyBpICsrKSB7DQorICAgICAgICBpZiAod3N0cltpXSA8IDB4MTAwKSB7DQorICAgICAgICAgICAgaWYgKGJ1ZiAmJiBsZW4gPCBidWZsZW4pIHsNCisgICAgICAgICAgICAgICAgYnVmW2xlbl0gPSAoRlhfQ0hBUil3c3RyW2ldOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBsZW4gKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGxlbjsNCit9DQoraW50IEZYU1lTX011bHRpQnl0ZVRvV2lkZUNoYXIoRlhfRFdPUkQgY29kZXBhZ2UsIEZYX0RXT1JEIGR3RmxhZ3MsIEZYX0xQQ1NUUiBic3RyLCBpbnQgYmxlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUFdTVFIgYnVmLCBpbnQgYnVmbGVuKQ0KK3sNCisgICAgaW50IHdsZW4gPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJsZW47IGkgKyspIHsNCisgICAgICAgIGlmIChidWYgJiYgd2xlbiA8IGJ1Zmxlbikgew0KKyAgICAgICAgICAgIGJ1Zlt3bGVuXSA9IGJzdHJbaV07DQorICAgICAgICB9DQorICAgICAgICB3bGVuICsrOw0KKyAgICB9DQorICAgIHJldHVybiB3bGVuOw0KK30NCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfbGlzdC5jcHAgYi9jb3JlL3NyYy9meGNydC9meF9iYXNpY19saXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmIzZDJjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfbGlzdC5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2Jhc2ljLmgiDQorI2luY2x1ZGUgInBsZXguaCINCitDRlhfUHRyTGlzdDo6Q0ZYX1B0ckxpc3QoaW50IG5CbG9ja1NpemUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorICAgIDogbV9wQWxsb2NhdG9yKHBBbGxvY2F0b3IpDQorICAgICwgbV9wTm9kZUhlYWQoTlVMTCkNCisgICAgLCBtX3BOb2RlVGFpbChOVUxMKQ0KKyAgICAsIG1fbkNvdW50KDApDQorICAgICwgbV9wTm9kZUZyZWUoTlVMTCkNCisgICAgLCBtX3BCbG9ja3MoTlVMTCkNCisgICAgLCBtX25CbG9ja1NpemUobkJsb2NrU2l6ZSkNCit7DQorfQ0KK0ZYX1BPU0lUSU9OIENGWF9QdHJMaXN0OjpBZGRUYWlsKHZvaWQqIG5ld0VsZW1lbnQpDQorew0KKyAgICBDTm9kZSogcE5ld05vZGUgPSBOZXdOb2RlKG1fcE5vZGVUYWlsLCBOVUxMKTsNCisgICAgcE5ld05vZGUtPmRhdGEgPSBuZXdFbGVtZW50Ow0KKyAgICBpZiAobV9wTm9kZVRhaWwgIT0gTlVMTCkgew0KKyAgICAgICAgbV9wTm9kZVRhaWwtPnBOZXh0ID0gcE5ld05vZGU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BOb2RlSGVhZCA9IHBOZXdOb2RlOw0KKyAgICB9DQorICAgIG1fcE5vZGVUYWlsID0gcE5ld05vZGU7DQorICAgIHJldHVybiAoRlhfUE9TSVRJT04pIHBOZXdOb2RlOw0KK30NCitGWF9QT1NJVElPTiBDRlhfUHRyTGlzdDo6QWRkSGVhZCh2b2lkKiBuZXdFbGVtZW50KQ0KK3sNCisgICAgQ05vZGUqIHBOZXdOb2RlID0gTmV3Tm9kZShOVUxMLCBtX3BOb2RlSGVhZCk7DQorICAgIHBOZXdOb2RlLT5kYXRhID0gbmV3RWxlbWVudDsNCisgICAgaWYgKG1fcE5vZGVIZWFkICE9IE5VTEwpIHsNCisgICAgICAgIG1fcE5vZGVIZWFkLT5wUHJldiA9IHBOZXdOb2RlOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wTm9kZVRhaWwgPSBwTmV3Tm9kZTsNCisgICAgfQ0KKyAgICBtX3BOb2RlSGVhZCA9IHBOZXdOb2RlOw0KKyAgICByZXR1cm4gKEZYX1BPU0lUSU9OKSBwTmV3Tm9kZTsNCit9DQorRlhfUE9TSVRJT04gQ0ZYX1B0ckxpc3Q6Okluc2VydEFmdGVyKEZYX1BPU0lUSU9OIHBvc2l0aW9uLCB2b2lkKiBuZXdFbGVtZW50KQ0KK3sNCisgICAgaWYgKHBvc2l0aW9uID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBBZGRUYWlsKG5ld0VsZW1lbnQpOw0KKyAgICB9DQorICAgIENOb2RlKiBwT2xkTm9kZSA9IChDTm9kZSopIHBvc2l0aW9uOw0KKyAgICBDTm9kZSogcE5ld05vZGUgPSBOZXdOb2RlKHBPbGROb2RlLCBwT2xkTm9kZS0+cE5leHQpOw0KKyAgICBwTmV3Tm9kZS0+ZGF0YSA9IG5ld0VsZW1lbnQ7DQorICAgIGlmIChwT2xkTm9kZS0+cE5leHQgIT0gTlVMTCkgew0KKyAgICAgICAgcE9sZE5vZGUtPnBOZXh0LT5wUHJldiA9IHBOZXdOb2RlOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wTm9kZVRhaWwgPSBwTmV3Tm9kZTsNCisgICAgfQ0KKyAgICBwT2xkTm9kZS0+cE5leHQgPSBwTmV3Tm9kZTsNCisgICAgcmV0dXJuIChGWF9QT1NJVElPTikgcE5ld05vZGU7DQorfQ0KK3ZvaWQgQ0ZYX1B0ckxpc3Q6OlJlbW92ZUF0KEZYX1BPU0lUSU9OIHBvc2l0aW9uKQ0KK3sNCisgICAgQ05vZGUqIHBPbGROb2RlID0gKENOb2RlKikgcG9zaXRpb247DQorICAgIGlmIChwT2xkTm9kZSA9PSBtX3BOb2RlSGVhZCkgew0KKyAgICAgICAgbV9wTm9kZUhlYWQgPSBwT2xkTm9kZS0+cE5leHQ7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwT2xkTm9kZS0+cFByZXYtPnBOZXh0ID0gcE9sZE5vZGUtPnBOZXh0Ow0KKyAgICB9DQorICAgIGlmIChwT2xkTm9kZSA9PSBtX3BOb2RlVGFpbCkgew0KKyAgICAgICAgbV9wTm9kZVRhaWwgPSBwT2xkTm9kZS0+cFByZXY7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwT2xkTm9kZS0+cE5leHQtPnBQcmV2ID0gcE9sZE5vZGUtPnBQcmV2Ow0KKyAgICB9DQorICAgIEZyZWVOb2RlKHBPbGROb2RlKTsNCit9DQordm9pZCBDRlhfUHRyTGlzdDo6RnJlZU5vZGUoQ0ZYX1B0ckxpc3Q6OkNOb2RlKiBwTm9kZSkNCit7DQorICAgIHBOb2RlLT5wTmV4dCA9IG1fcE5vZGVGcmVlOw0KKyAgICBtX3BOb2RlRnJlZSA9IHBOb2RlOw0KKyAgICBtX25Db3VudC0tOw0KKyAgICBpZiAobV9uQ291bnQgPT0gMCkgew0KKyAgICAgICAgUmVtb3ZlQWxsKCk7DQorICAgIH0NCit9DQordm9pZCBDRlhfUHRyTGlzdDo6UmVtb3ZlQWxsKCkNCit7DQorICAgIG1fbkNvdW50ID0gMDsNCisgICAgbV9wTm9kZUhlYWQgPSBtX3BOb2RlVGFpbCA9IG1fcE5vZGVGcmVlID0gTlVMTDsNCisgICAgbV9wQmxvY2tzLT5GcmVlRGF0YUNoYWluKG1fcEFsbG9jYXRvcik7DQorICAgIG1fcEJsb2NrcyA9IE5VTEw7DQorfQ0KK0NGWF9QdHJMaXN0OjpDTm9kZSoNCitDRlhfUHRyTGlzdDo6TmV3Tm9kZShDRlhfUHRyTGlzdDo6Q05vZGUqIHBQcmV2LCBDRlhfUHRyTGlzdDo6Q05vZGUqIHBOZXh0KQ0KK3sNCisgICAgaWYgKG1fcE5vZGVGcmVlID09IE5VTEwpIHsNCisgICAgICAgIENGWF9QbGV4KiBwTmV3QmxvY2sgPSBDRlhfUGxleDo6Q3JlYXRlKG1fcEFsbG9jYXRvciwgbV9wQmxvY2tzLCBtX25CbG9ja1NpemUsIHNpemVvZihDTm9kZSkpOw0KKyAgICAgICAgQ05vZGUqIHBOb2RlID0gKENOb2RlKilwTmV3QmxvY2stPmRhdGEoKTsNCisgICAgICAgIHBOb2RlICs9IG1fbkJsb2NrU2l6ZSAtIDE7DQorICAgICAgICBmb3IgKGludCBpID0gbV9uQmxvY2tTaXplIC0gMTsgaSA+PSAwOyBpLS0sIHBOb2RlLS0pIHsNCisgICAgICAgICAgICBwTm9kZS0+cE5leHQgPSBtX3BOb2RlRnJlZTsNCisgICAgICAgICAgICBtX3BOb2RlRnJlZSA9IHBOb2RlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEFTU0VSVChtX3BOb2RlRnJlZSAhPSBOVUxMKTsNCisgICAgQ0ZYX1B0ckxpc3Q6OkNOb2RlKiBwTm9kZSA9IG1fcE5vZGVGcmVlOw0KKyAgICBtX3BOb2RlRnJlZSA9IG1fcE5vZGVGcmVlLT5wTmV4dDsNCisgICAgcE5vZGUtPnBQcmV2ID0gcFByZXY7DQorICAgIHBOb2RlLT5wTmV4dCA9IHBOZXh0Ow0KKyAgICBtX25Db3VudCsrOw0KKyAgICBBU1NFUlQobV9uQ291bnQgPiAwKTsNCisgICAgcE5vZGUtPmRhdGEgPSAwOw0KKyAgICByZXR1cm4gcE5vZGU7DQorfQ0KK0NGWF9QdHJMaXN0Ojp+Q0ZYX1B0ckxpc3QoKQ0KK3sNCisgICAgUmVtb3ZlQWxsKCk7DQorICAgIEFTU0VSVChtX25Db3VudCA9PSAwKTsNCit9DQorRlhfUE9TSVRJT04gQ0ZYX1B0ckxpc3Q6OkZpbmRJbmRleChpbnQgbkluZGV4KSBjb25zdA0KK3sNCisgICAgaWYgKG5JbmRleCA+PSBtX25Db3VudCB8fCBuSW5kZXggPCAwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDTm9kZSogcE5vZGUgPSBtX3BOb2RlSGVhZDsNCisgICAgd2hpbGUgKG5JbmRleC0tKSB7DQorICAgICAgICBwTm9kZSA9IHBOb2RlLT5wTmV4dDsNCisgICAgfQ0KKyAgICByZXR1cm4gKEZYX1BPU0lUSU9OKSBwTm9kZTsNCit9DQorRlhfUE9TSVRJT04gQ0ZYX1B0ckxpc3Q6OkZpbmQodm9pZCogc2VhcmNoVmFsdWUsIEZYX1BPU0lUSU9OIHN0YXJ0QWZ0ZXIpIGNvbnN0DQorew0KKyAgICBDTm9kZSogcE5vZGUgPSAoQ05vZGUqKSBzdGFydEFmdGVyOw0KKyAgICBpZiAocE5vZGUgPT0gTlVMTCkgew0KKyAgICAgICAgcE5vZGUgPSBtX3BOb2RlSGVhZDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBOb2RlID0gcE5vZGUtPnBOZXh0Ow0KKyAgICB9DQorICAgIGZvciAoOyBwTm9kZSAhPSBOVUxMOyBwTm9kZSA9IHBOb2RlLT5wTmV4dCkNCisgICAgICAgIGlmIChwTm9kZS0+ZGF0YSA9PSBzZWFyY2hWYWx1ZSkgew0KKyAgICAgICAgICAgIHJldHVybiAoRlhfUE9TSVRJT04pIHBOb2RlOw0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfbWFwcy5jcHAgYi9jb3JlL3NyYy9meGNydC9meF9iYXNpY19tYXBzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjM5N2VlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfbWFwcy5jcHAKQEAgLTAsMCArMSw2NTQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2V4dC5oIg0KKyNpbmNsdWRlICJwbGV4LmgiDQorc3RhdGljIHZvaWQgQ29uc3RydWN0RWxlbWVudChDRlhfQnl0ZVN0cmluZyogcE5ld0RhdGEpDQorew0KKyAgICBuZXcgKHBOZXdEYXRhKSBDRlhfQnl0ZVN0cmluZygpOw0KK30NCitzdGF0aWMgdm9pZCBEZXN0cnVjdEVsZW1lbnQoQ0ZYX0J5dGVTdHJpbmcqIHBPbGREYXRhKQ0KK3sNCisgICAgcE9sZERhdGEtPn5DRlhfQnl0ZVN0cmluZygpOw0KK30NCitDRlhfTWFwUHRyVG9QdHI6OkNGWF9NYXBQdHJUb1B0cihpbnQgbkJsb2NrU2l6ZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCisgICAgOiBtX3BBbGxvY2F0b3IocEFsbG9jYXRvcikNCisgICAgLCBtX3BIYXNoVGFibGUoTlVMTCkNCisgICAgLCBtX25IYXNoVGFibGVTaXplKDE3KQ0KKyAgICAsIG1fbkNvdW50KDApDQorICAgICwgbV9wRnJlZUxpc3QoTlVMTCkNCisgICAgLCBtX3BCbG9ja3MoTlVMTCkNCisgICAgLCBtX25CbG9ja1NpemUobkJsb2NrU2l6ZSkNCit7DQorICAgIEFTU0VSVChtX25CbG9ja1NpemUgPiAwKTsNCit9DQordm9pZCBDRlhfTWFwUHRyVG9QdHI6OlJlbW92ZUFsbCgpDQorew0KKyAgICBpZiAobV9wSGFzaFRhYmxlKSB7DQorICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShtX3BBbGxvY2F0b3IsIG1fcEhhc2hUYWJsZSk7DQorICAgICAgICBtX3BIYXNoVGFibGUgPSBOVUxMOw0KKyAgICB9DQorICAgIG1fbkNvdW50ID0gMDsNCisgICAgbV9wRnJlZUxpc3QgPSBOVUxMOw0KKyAgICBtX3BCbG9ja3MtPkZyZWVEYXRhQ2hhaW4obV9wQWxsb2NhdG9yKTsNCisgICAgbV9wQmxvY2tzID0gTlVMTDsNCit9DQorQ0ZYX01hcFB0clRvUHRyOjp+Q0ZYX01hcFB0clRvUHRyKCkNCit7DQorICAgIFJlbW92ZUFsbCgpOw0KKyAgICBBU1NFUlQobV9uQ291bnQgPT0gMCk7DQorfQ0KK0ZYX0RXT1JEIENGWF9NYXBQdHJUb1B0cjo6SGFzaEtleSh2b2lkKiBrZXkpIGNvbnN0DQorew0KKyAgICByZXR1cm4gKChGWF9EV09SRCkoRlhfVUlOVFBUUilrZXkpID4+IDQ7DQorfQ0KK3ZvaWQgQ0ZYX01hcFB0clRvUHRyOjpHZXROZXh0QXNzb2MoRlhfUE9TSVRJT04mIHJOZXh0UG9zaXRpb24sIHZvaWQqJiByS2V5LCB2b2lkKiYgclZhbHVlKSBjb25zdA0KK3sNCisgICAgQVNTRVJUKG1fcEhhc2hUYWJsZSAhPSBOVUxMKTsNCisgICAgQ0Fzc29jKiBwQXNzb2NSZXQgPSAoQ0Fzc29jKilyTmV4dFBvc2l0aW9uOw0KKyAgICBBU1NFUlQocEFzc29jUmV0ICE9IE5VTEwpOw0KKyAgICBpZiAocEFzc29jUmV0ID09IChDQXNzb2MqKSAtIDEpIHsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgbkJ1Y2tldCA9IDA7IG5CdWNrZXQgPCBtX25IYXNoVGFibGVTaXplOyBuQnVja2V0KyspDQorICAgICAgICAgICAgaWYgKChwQXNzb2NSZXQgPSBtX3BIYXNoVGFibGVbbkJ1Y2tldF0pICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgQVNTRVJUKHBBc3NvY1JldCAhPSBOVUxMKTsNCisgICAgfQ0KKyAgICBDQXNzb2MqIHBBc3NvY05leHQ7DQorICAgIGlmICgocEFzc29jTmV4dCA9IHBBc3NvY1JldC0+cE5leHQpID09IE5VTEwpIHsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgbkJ1Y2tldCA9IChIYXNoS2V5KHBBc3NvY1JldC0+a2V5KSAlIG1fbkhhc2hUYWJsZVNpemUpICsgMTsgbkJ1Y2tldCA8IG1fbkhhc2hUYWJsZVNpemU7IG5CdWNrZXQgKyspIHsNCisgICAgICAgICAgICBpZiAoKHBBc3NvY05leHQgPSBtX3BIYXNoVGFibGVbbkJ1Y2tldF0pICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJOZXh0UG9zaXRpb24gPSAoRlhfUE9TSVRJT04pIHBBc3NvY05leHQ7DQorICAgIHJLZXkgPSBwQXNzb2NSZXQtPmtleTsNCisgICAgclZhbHVlID0gcEFzc29jUmV0LT52YWx1ZTsNCit9DQorRlhfQk9PTCBDRlhfTWFwUHRyVG9QdHI6Okxvb2t1cCh2b2lkKiBrZXksIHZvaWQqJiByVmFsdWUpIGNvbnN0DQorew0KKyAgICBGWF9EV09SRCBuSGFzaDsNCisgICAgQ0Fzc29jKiBwQXNzb2MgPSBHZXRBc3NvY0F0KGtleSwgbkhhc2gpOw0KKyAgICBpZiAocEFzc29jID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByVmFsdWUgPSBwQXNzb2MtPnZhbHVlOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCogQ0ZYX01hcFB0clRvUHRyOjpHZXRWYWx1ZUF0KHZvaWQqIGtleSkgY29uc3QNCit7DQorICAgIEZYX0RXT1JEIG5IYXNoOw0KKyAgICBDQXNzb2MqIHBBc3NvYyA9IEdldEFzc29jQXQoa2V5LCBuSGFzaCk7DQorICAgIGlmIChwQXNzb2MgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHBBc3NvYy0+dmFsdWU7DQorfQ0KK3ZvaWQqJiBDRlhfTWFwUHRyVG9QdHI6Om9wZXJhdG9yW10odm9pZCoga2V5KQ0KK3sNCisgICAgRlhfRFdPUkQgbkhhc2g7DQorICAgIENBc3NvYyogcEFzc29jOw0KKyAgICBpZiAoKHBBc3NvYyA9IEdldEFzc29jQXQoa2V5LCBuSGFzaCkpID09IE5VTEwpIHsNCisgICAgICAgIGlmIChtX3BIYXNoVGFibGUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIEluaXRIYXNoVGFibGUobV9uSGFzaFRhYmxlU2l6ZSk7DQorICAgICAgICB9DQorICAgICAgICBwQXNzb2MgPSBOZXdBc3NvYygpOw0KKyAgICAgICAgcEFzc29jLT5rZXkgPSBrZXk7DQorICAgICAgICBwQXNzb2MtPnBOZXh0ID0gbV9wSGFzaFRhYmxlW25IYXNoXTsNCisgICAgICAgIG1fcEhhc2hUYWJsZVtuSGFzaF0gPSBwQXNzb2M7DQorICAgIH0NCisgICAgcmV0dXJuIHBBc3NvYy0+dmFsdWU7DQorfQ0KK0NGWF9NYXBQdHJUb1B0cjo6Q0Fzc29jKg0KK0NGWF9NYXBQdHJUb1B0cjo6R2V0QXNzb2NBdCh2b2lkKiBrZXksIEZYX0RXT1JEJiBuSGFzaCkgY29uc3QNCit7DQorICAgIG5IYXNoID0gSGFzaEtleShrZXkpICUgbV9uSGFzaFRhYmxlU2l6ZTsNCisgICAgaWYgKG1fcEhhc2hUYWJsZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDQXNzb2MqIHBBc3NvYzsNCisgICAgZm9yIChwQXNzb2MgPSBtX3BIYXNoVGFibGVbbkhhc2hdOyBwQXNzb2MgIT0gTlVMTDsgcEFzc29jID0gcEFzc29jLT5wTmV4dCkgew0KKyAgICAgICAgaWYgKHBBc3NvYy0+a2V5ID09IGtleSkgew0KKyAgICAgICAgICAgIHJldHVybiBwQXNzb2M7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0NGWF9NYXBQdHJUb1B0cjo6Q0Fzc29jKg0KK0NGWF9NYXBQdHJUb1B0cjo6TmV3QXNzb2MoKQ0KK3sNCisgICAgaWYgKG1fcEZyZWVMaXN0ID09IE5VTEwpIHsNCisgICAgICAgIENGWF9QbGV4KiBuZXdCbG9jayA9IENGWF9QbGV4OjpDcmVhdGUobV9wQWxsb2NhdG9yLCBtX3BCbG9ja3MsIG1fbkJsb2NrU2l6ZSwgc2l6ZW9mKENGWF9NYXBQdHJUb1B0cjo6Q0Fzc29jKSk7DQorICAgICAgICBDRlhfTWFwUHRyVG9QdHI6OkNBc3NvYyogcEFzc29jID0gKENGWF9NYXBQdHJUb1B0cjo6Q0Fzc29jKiluZXdCbG9jay0+ZGF0YSgpOw0KKyAgICAgICAgcEFzc29jICs9IG1fbkJsb2NrU2l6ZSAtIDE7DQorICAgICAgICBmb3IgKGludCBpID0gbV9uQmxvY2tTaXplIC0gMTsgaSA+PSAwOyBpLS0sIHBBc3NvYy0tKSB7DQorICAgICAgICAgICAgcEFzc29jLT5wTmV4dCA9IG1fcEZyZWVMaXN0Ow0KKyAgICAgICAgICAgIG1fcEZyZWVMaXN0ID0gcEFzc29jOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEFTU0VSVChtX3BGcmVlTGlzdCAhPSBOVUxMKTsNCisgICAgQ0ZYX01hcFB0clRvUHRyOjpDQXNzb2MqIHBBc3NvYyA9IG1fcEZyZWVMaXN0Ow0KKyAgICBtX3BGcmVlTGlzdCA9IG1fcEZyZWVMaXN0LT5wTmV4dDsNCisgICAgbV9uQ291bnQrKzsNCisgICAgQVNTRVJUKG1fbkNvdW50ID4gMCk7DQorICAgIHBBc3NvYy0+a2V5ID0gMDsNCisgICAgcEFzc29jLT52YWx1ZSA9IDA7DQorICAgIHJldHVybiBwQXNzb2M7DQorfQ0KK3ZvaWQgQ0ZYX01hcFB0clRvUHRyOjpJbml0SGFzaFRhYmxlKA0KKyAgICBGWF9EV09SRCBuSGFzaFNpemUsIEZYX0JPT0wgYkFsbG9jTm93KQ0KK3sNCisgICAgQVNTRVJUKG1fbkNvdW50ID09IDApOw0KKyAgICBBU1NFUlQobkhhc2hTaXplID4gMCk7DQorICAgIGlmIChtX3BIYXNoVGFibGUgIT0gTlVMTCkgew0KKyAgICAgICAgRlhfQWxsb2NhdG9yX0ZyZWUobV9wQWxsb2NhdG9yLCBtX3BIYXNoVGFibGUpOw0KKyAgICAgICAgbV9wSGFzaFRhYmxlID0gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoYkFsbG9jTm93KSB7DQorICAgICAgICBtX3BIYXNoVGFibGUgPSBGWF9BbGxvY2F0b3JfQWxsb2MobV9wQWxsb2NhdG9yLCBDQXNzb2MqLCBuSGFzaFNpemUpOw0KKyAgICAgICAgaWYgKG1fcEhhc2hUYWJsZSkgew0KKyAgICAgICAgICAgIEZYU1lTX21lbXNldDMyKG1fcEhhc2hUYWJsZSwgMCwgc2l6ZW9mKENBc3NvYyopICogbkhhc2hTaXplKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX25IYXNoVGFibGVTaXplID0gbkhhc2hTaXplOw0KK30NCitGWF9CT09MIENGWF9NYXBQdHJUb1B0cjo6UmVtb3ZlS2V5KHZvaWQqIGtleSkNCit7DQorICAgIGlmIChtX3BIYXNoVGFibGUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENBc3NvYyoqIHBwQXNzb2NQcmV2Ow0KKyAgICBwcEFzc29jUHJldiA9ICZtX3BIYXNoVGFibGVbSGFzaEtleShrZXkpICUgbV9uSGFzaFRhYmxlU2l6ZV07DQorICAgIENBc3NvYyogcEFzc29jOw0KKyAgICBmb3IgKHBBc3NvYyA9ICpwcEFzc29jUHJldjsgcEFzc29jICE9IE5VTEw7IHBBc3NvYyA9IHBBc3NvYy0+cE5leHQpIHsNCisgICAgICAgIGlmIChwQXNzb2MtPmtleSA9PSBrZXkpIHsNCisgICAgICAgICAgICAqcHBBc3NvY1ByZXYgPSBwQXNzb2MtPnBOZXh0Ow0KKyAgICAgICAgICAgIEZyZWVBc3NvYyhwQXNzb2MpOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcHBBc3NvY1ByZXYgPSAmcEFzc29jLT5wTmV4dDsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK3ZvaWQgQ0ZYX01hcFB0clRvUHRyOjpGcmVlQXNzb2MoQ0ZYX01hcFB0clRvUHRyOjpDQXNzb2MqIHBBc3NvYykNCit7DQorICAgIHBBc3NvYy0+cE5leHQgPSBtX3BGcmVlTGlzdDsNCisgICAgbV9wRnJlZUxpc3QgPSBwQXNzb2M7DQorICAgIG1fbkNvdW50LS07DQorICAgIEFTU0VSVChtX25Db3VudCA+PSAwKTsNCisgICAgaWYgKG1fbkNvdW50ID09IDApIHsNCisgICAgICAgIFJlbW92ZUFsbCgpOw0KKyAgICB9DQorfQ0KK0NGWF9NYXBCeXRlU3RyaW5nVG9QdHI6OkNGWF9NYXBCeXRlU3RyaW5nVG9QdHIoaW50IG5CbG9ja1NpemUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorICAgIDogbV9wQWxsb2NhdG9yKHBBbGxvY2F0b3IpDQorICAgICwgbV9wSGFzaFRhYmxlKE5VTEwpDQorICAgICwgbV9uSGFzaFRhYmxlU2l6ZSgxNykNCisgICAgLCBtX25Db3VudCgwKQ0KKyAgICAsIG1fcEZyZWVMaXN0KE5VTEwpDQorICAgICwgbV9wQmxvY2tzKE5VTEwpDQorICAgICwgbV9uQmxvY2tTaXplKG5CbG9ja1NpemUpDQorew0KKyAgICBBU1NFUlQobV9uQmxvY2tTaXplID4gMCk7DQorfQ0KK3ZvaWQgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cjo6UmVtb3ZlQWxsKCkNCit7DQorICAgIGlmIChtX3BIYXNoVGFibGUgIT0gTlVMTCkgew0KKyAgICAgICAgZm9yIChGWF9EV09SRCBuSGFzaCA9IDA7IG5IYXNoIDwgbV9uSGFzaFRhYmxlU2l6ZTsgbkhhc2grKykgew0KKyAgICAgICAgICAgIENBc3NvYyogcEFzc29jOw0KKyAgICAgICAgICAgIGZvciAocEFzc29jID0gbV9wSGFzaFRhYmxlW25IYXNoXTsgcEFzc29jICE9IE5VTEw7DQorICAgICAgICAgICAgICAgICAgICBwQXNzb2MgPSBwQXNzb2MtPnBOZXh0KSB7DQorICAgICAgICAgICAgICAgIERlc3RydWN0RWxlbWVudCgmcEFzc29jLT5rZXkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEZYX0FsbG9jYXRvcl9GcmVlKG1fcEFsbG9jYXRvciwgbV9wSGFzaFRhYmxlKTsNCisgICAgICAgIG1fcEhhc2hUYWJsZSA9IE5VTEw7DQorICAgIH0NCisgICAgbV9uQ291bnQgPSAwOw0KKyAgICBtX3BGcmVlTGlzdCA9IE5VTEw7DQorICAgIG1fcEJsb2Nrcy0+RnJlZURhdGFDaGFpbihtX3BBbGxvY2F0b3IpOw0KKyAgICBtX3BCbG9ja3MgPSBOVUxMOw0KK30NCitDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyOjp+Q0ZYX01hcEJ5dGVTdHJpbmdUb1B0cigpDQorew0KKyAgICBSZW1vdmVBbGwoKTsNCisgICAgQVNTRVJUKG1fbkNvdW50ID09IDApOw0KK30NCit2b2lkIENGWF9NYXBCeXRlU3RyaW5nVG9QdHI6OkdldE5leHRBc3NvYyhGWF9QT1NJVElPTiYgck5leHRQb3NpdGlvbiwNCisgICAgICAgIENGWF9CeXRlU3RyaW5nJiByS2V5LCB2b2lkKiYgclZhbHVlKSBjb25zdA0KK3sNCisgICAgQVNTRVJUKG1fcEhhc2hUYWJsZSAhPSBOVUxMKTsNCisgICAgQ0Fzc29jKiBwQXNzb2NSZXQgPSAoQ0Fzc29jKilyTmV4dFBvc2l0aW9uOw0KKyAgICBBU1NFUlQocEFzc29jUmV0ICE9IE5VTEwpOw0KKyAgICBpZiAocEFzc29jUmV0ID09IChDQXNzb2MqKSAtIDEpIHsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgbkJ1Y2tldCA9IDA7IG5CdWNrZXQgPCBtX25IYXNoVGFibGVTaXplOyBuQnVja2V0KyspDQorICAgICAgICAgICAgaWYgKChwQXNzb2NSZXQgPSBtX3BIYXNoVGFibGVbbkJ1Y2tldF0pICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgQVNTRVJUKHBBc3NvY1JldCAhPSBOVUxMKTsNCisgICAgfQ0KKyAgICBDQXNzb2MqIHBBc3NvY05leHQ7DQorICAgIGlmICgocEFzc29jTmV4dCA9IHBBc3NvY1JldC0+cE5leHQpID09IE5VTEwpIHsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgbkJ1Y2tldCA9IHBBc3NvY1JldC0+bkhhc2hWYWx1ZSArIDE7DQorICAgICAgICAgICAgICAgIG5CdWNrZXQgPCBtX25IYXNoVGFibGVTaXplOyBuQnVja2V0KyspDQorICAgICAgICAgICAgaWYgKChwQXNzb2NOZXh0ID0gbV9wSGFzaFRhYmxlW25CdWNrZXRdKSAhPSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICByTmV4dFBvc2l0aW9uID0gKEZYX1BPU0lUSU9OKSBwQXNzb2NOZXh0Ow0KKyAgICByS2V5ID0gcEFzc29jUmV0LT5rZXk7DQorICAgIHJWYWx1ZSA9IHBBc3NvY1JldC0+dmFsdWU7DQorfQ0KK0ZYX0xQVk9JRCBDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyOjpHZXROZXh0VmFsdWUoRlhfUE9TSVRJT04mIHJOZXh0UG9zaXRpb24pIGNvbnN0DQorew0KKyAgICBBU1NFUlQobV9wSGFzaFRhYmxlICE9IE5VTEwpOw0KKyAgICBDQXNzb2MqIHBBc3NvY1JldCA9IChDQXNzb2MqKXJOZXh0UG9zaXRpb247DQorICAgIEFTU0VSVChwQXNzb2NSZXQgIT0gTlVMTCk7DQorICAgIGlmIChwQXNzb2NSZXQgPT0gKENBc3NvYyopIC0gMSkgew0KKyAgICAgICAgZm9yIChGWF9EV09SRCBuQnVja2V0ID0gMDsgbkJ1Y2tldCA8IG1fbkhhc2hUYWJsZVNpemU7IG5CdWNrZXQrKykNCisgICAgICAgICAgICBpZiAoKHBBc3NvY1JldCA9IG1fcEhhc2hUYWJsZVtuQnVja2V0XSkgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBBU1NFUlQocEFzc29jUmV0ICE9IE5VTEwpOw0KKyAgICB9DQorICAgIENBc3NvYyogcEFzc29jTmV4dDsNCisgICAgaWYgKChwQXNzb2NOZXh0ID0gcEFzc29jUmV0LT5wTmV4dCkgPT0gTlVMTCkgew0KKyAgICAgICAgZm9yIChGWF9EV09SRCBuQnVja2V0ID0gcEFzc29jUmV0LT5uSGFzaFZhbHVlICsgMTsNCisgICAgICAgICAgICAgICAgbkJ1Y2tldCA8IG1fbkhhc2hUYWJsZVNpemU7IG5CdWNrZXQrKykNCisgICAgICAgICAgICBpZiAoKHBBc3NvY05leHQgPSBtX3BIYXNoVGFibGVbbkJ1Y2tldF0pICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorICAgIHJOZXh0UG9zaXRpb24gPSAoRlhfUE9TSVRJT04pIHBBc3NvY05leHQ7DQorICAgIHJldHVybiBwQXNzb2NSZXQtPnZhbHVlOw0KK30NCit2b2lkKiYgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cjo6b3BlcmF0b3JbXShGWF9CU1RSIGtleSkNCit7DQorICAgIEZYX0RXT1JEIG5IYXNoOw0KKyAgICBDQXNzb2MqIHBBc3NvYzsNCisgICAgaWYgKChwQXNzb2MgPSBHZXRBc3NvY0F0KGtleSwgbkhhc2gpKSA9PSBOVUxMKSB7DQorICAgICAgICBpZiAobV9wSGFzaFRhYmxlID09IE5VTEwpIHsNCisgICAgICAgICAgICBJbml0SGFzaFRhYmxlKG1fbkhhc2hUYWJsZVNpemUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEFzc29jID0gTmV3QXNzb2MoKTsNCisgICAgICAgIHBBc3NvYy0+bkhhc2hWYWx1ZSA9IG5IYXNoOw0KKyAgICAgICAgcEFzc29jLT5rZXkgPSBrZXk7DQorICAgICAgICBwQXNzb2MtPnBOZXh0ID0gbV9wSGFzaFRhYmxlW25IYXNoXTsNCisgICAgICAgIG1fcEhhc2hUYWJsZVtuSGFzaF0gPSBwQXNzb2M7DQorICAgIH0NCisgICAgcmV0dXJuIHBBc3NvYy0+dmFsdWU7DQorfQ0KK0NGWF9NYXBCeXRlU3RyaW5nVG9QdHI6OkNBc3NvYyoNCitDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyOjpOZXdBc3NvYygpDQorew0KKyAgICBpZiAobV9wRnJlZUxpc3QgPT0gTlVMTCkgew0KKyAgICAgICAgQ0ZYX1BsZXgqIG5ld0Jsb2NrID0gQ0ZYX1BsZXg6OkNyZWF0ZShtX3BBbGxvY2F0b3IsIG1fcEJsb2NrcywgbV9uQmxvY2tTaXplLCBzaXplb2YoQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cjo6Q0Fzc29jKSk7DQorICAgICAgICBDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyOjpDQXNzb2MqIHBBc3NvYyA9IChDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyOjpDQXNzb2MqKW5ld0Jsb2NrLT5kYXRhKCk7DQorICAgICAgICBwQXNzb2MgKz0gbV9uQmxvY2tTaXplIC0gMTsNCisgICAgICAgIGZvciAoaW50IGkgPSBtX25CbG9ja1NpemUgLSAxOyBpID49IDA7IGktLSwgcEFzc29jLS0pIHsNCisgICAgICAgICAgICBwQXNzb2MtPnBOZXh0ID0gbV9wRnJlZUxpc3Q7DQorICAgICAgICAgICAgbV9wRnJlZUxpc3QgPSBwQXNzb2M7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQVNTRVJUKG1fcEZyZWVMaXN0ICE9IE5VTEwpOw0KKyAgICBDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyOjpDQXNzb2MqIHBBc3NvYyA9IG1fcEZyZWVMaXN0Ow0KKyAgICBtX3BGcmVlTGlzdCA9IG1fcEZyZWVMaXN0LT5wTmV4dDsNCisgICAgbV9uQ291bnQrKzsNCisgICAgQVNTRVJUKG1fbkNvdW50ID4gMCk7DQorICAgIENvbnN0cnVjdEVsZW1lbnQoJnBBc3NvYy0+a2V5KTsNCisgICAgcEFzc29jLT52YWx1ZSA9IDA7DQorICAgIHJldHVybiBwQXNzb2M7DQorfQ0KK3ZvaWQgQ0ZYX01hcEJ5dGVTdHJpbmdUb1B0cjo6RnJlZUFzc29jKENGWF9NYXBCeXRlU3RyaW5nVG9QdHI6OkNBc3NvYyogcEFzc29jKQ0KK3sNCisgICAgRGVzdHJ1Y3RFbGVtZW50KCZwQXNzb2MtPmtleSk7DQorICAgIHBBc3NvYy0+cE5leHQgPSBtX3BGcmVlTGlzdDsNCisgICAgbV9wRnJlZUxpc3QgPSBwQXNzb2M7DQorICAgIG1fbkNvdW50LS07DQorICAgIEFTU0VSVChtX25Db3VudCA+PSAwKTsNCisgICAgaWYgKG1fbkNvdW50ID09IDApIHsNCisgICAgICAgIFJlbW92ZUFsbCgpOw0KKyAgICB9DQorfQ0KK0NGWF9NYXBCeXRlU3RyaW5nVG9QdHI6OkNBc3NvYyoNCitDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyOjpHZXRBc3NvY0F0KEZYX0JTVFIga2V5LCBGWF9EV09SRCYgbkhhc2gpIGNvbnN0DQorew0KKyAgICBuSGFzaCA9IEhhc2hLZXkoa2V5KSAlIG1fbkhhc2hUYWJsZVNpemU7DQorICAgIGlmIChtX3BIYXNoVGFibGUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0Fzc29jKiBwQXNzb2M7DQorICAgIGZvciAocEFzc29jID0gbV9wSGFzaFRhYmxlW25IYXNoXTsgcEFzc29jICE9IE5VTEw7IHBBc3NvYyA9IHBBc3NvYy0+cE5leHQpIHsNCisgICAgICAgIGlmIChwQXNzb2MtPmtleSA9PSBrZXkpIHsNCisgICAgICAgICAgICByZXR1cm4gcEFzc29jOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitGWF9CT09MIENGWF9NYXBCeXRlU3RyaW5nVG9QdHI6Okxvb2t1cChGWF9CU1RSIGtleSwgdm9pZComIHJWYWx1ZSkgY29uc3QNCit7DQorICAgIEZYX0RXT1JEIG5IYXNoOw0KKyAgICBDQXNzb2MqIHBBc3NvYyA9IEdldEFzc29jQXQoa2V5LCBuSGFzaCk7DQorICAgIGlmIChwQXNzb2MgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJWYWx1ZSA9IHBBc3NvYy0+dmFsdWU7DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENGWF9NYXBCeXRlU3RyaW5nVG9QdHI6OkluaXRIYXNoVGFibGUoDQorICAgIEZYX0RXT1JEIG5IYXNoU2l6ZSwgRlhfQk9PTCBiQWxsb2NOb3cpDQorew0KKyAgICBBU1NFUlQobV9uQ291bnQgPT0gMCk7DQorICAgIEFTU0VSVChuSGFzaFNpemUgPiAwKTsNCisgICAgaWYgKG1fcEhhc2hUYWJsZSAhPSBOVUxMKSB7DQorICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShtX3BBbGxvY2F0b3IsIG1fcEhhc2hUYWJsZSk7DQorICAgICAgICBtX3BIYXNoVGFibGUgPSBOVUxMOw0KKyAgICB9DQorICAgIGlmIChiQWxsb2NOb3cpIHsNCisgICAgICAgIG1fcEhhc2hUYWJsZSA9IEZYX0FsbG9jYXRvcl9BbGxvYyhtX3BBbGxvY2F0b3IsIENBc3NvYyosIG5IYXNoU2l6ZSk7DQorICAgICAgICBpZiAobV9wSGFzaFRhYmxlKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtc2V0MzIobV9wSGFzaFRhYmxlLCAwLCBzaXplb2YoQ0Fzc29jKikgKiBuSGFzaFNpemUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fbkhhc2hUYWJsZVNpemUgPSBuSGFzaFNpemU7DQorfQ0KK2lubGluZSBGWF9EV09SRCBDRlhfTWFwQnl0ZVN0cmluZ1RvUHRyOjpIYXNoS2V5KEZYX0JTVFIga2V5KSBjb25zdA0KK3sNCisgICAgRlhfRFdPUkQgbkhhc2ggPSAwOw0KKyAgICBpbnQgbGVuID0ga2V5LkdldExlbmd0aCgpOw0KKyAgICBGWF9MUENCWVRFIGJ1ZiA9IGtleTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkgKyspIHsNCisgICAgICAgIG5IYXNoID0gKG5IYXNoIDw8IDUpICsgbkhhc2ggKyBidWZbaV07DQorICAgIH0NCisgICAgcmV0dXJuIG5IYXNoOw0KK30NCitGWF9CT09MIENGWF9NYXBCeXRlU3RyaW5nVG9QdHI6OlJlbW92ZUtleShGWF9CU1RSIGtleSkNCit7DQorICAgIGlmIChtX3BIYXNoVGFibGUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENBc3NvYyoqIHBwQXNzb2NQcmV2Ow0KKyAgICBwcEFzc29jUHJldiA9ICZtX3BIYXNoVGFibGVbSGFzaEtleShrZXkpICUgbV9uSGFzaFRhYmxlU2l6ZV07DQorICAgIENBc3NvYyogcEFzc29jOw0KKyAgICBmb3IgKHBBc3NvYyA9ICpwcEFzc29jUHJldjsgcEFzc29jICE9IE5VTEw7IHBBc3NvYyA9IHBBc3NvYy0+cE5leHQpIHsNCisgICAgICAgIGlmIChwQXNzb2MtPmtleSA9PSBrZXkpIHsNCisgICAgICAgICAgICAqcHBBc3NvY1ByZXYgPSBwQXNzb2MtPnBOZXh0Ow0KKyAgICAgICAgICAgIEZyZWVBc3NvYyhwQXNzb2MpOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcHBBc3NvY1ByZXYgPSAmcEFzc29jLT5wTmV4dDsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK3N0cnVjdCBfQ29tcGFjdFN0cmluZyB7DQorICAgIEZYX0JZVEUJCW1fQ29tcGFjdExlbjsNCisgICAgRlhfQllURQkJbV9MZW5IaWdoOw0KKyAgICBGWF9CWVRFCQltX0xlbkxvdzsNCisgICAgRlhfQllURQkJbV9VbnVzZWQ7DQorICAgIEZYX0xQQllURQltX3BCdWZmZXI7DQorfTsNCitzdGF0aWMgdm9pZCBfQ29tcGFjdFN0cmluZ1JlbGVhc2UoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgX0NvbXBhY3RTdHJpbmcqIHBDb21wYWN0KQ0KK3sNCisgICAgaWYgKHBDb21wYWN0LT5tX0NvbXBhY3RMZW4gPT0gMHhmZikgew0KKyAgICAgICAgRlhfQWxsb2NhdG9yX0ZyZWUocEFsbG9jYXRvciwgcENvbXBhY3QtPm1fcEJ1ZmZlcik7DQorICAgIH0NCit9DQorc3RhdGljIEZYX0JPT0wgX0NvbXBhY3RTdHJpbmdTYW1lKF9Db21wYWN0U3RyaW5nKiBwQ29tcGFjdCwgRlhfTFBDQllURSBwU3RyLCBpbnQgbGVuKQ0KK3sNCisgICAgaWYgKGxlbiA8IHNpemVvZihfQ29tcGFjdFN0cmluZykpIHsNCisgICAgICAgIGlmIChwQ29tcGFjdC0+bV9Db21wYWN0TGVuICE9IGxlbikgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBGWFNZU19tZW1jbXAzMigmcENvbXBhY3QtPm1fTGVuSGlnaCwgcFN0ciwgbGVuKSA9PSAwOw0KKyAgICB9DQorICAgIGlmIChwQ29tcGFjdC0+bV9Db21wYWN0TGVuICE9IDB4ZmYgfHwgcENvbXBhY3QtPm1fTGVuSGlnaCAqIDI1NiArIHBDb21wYWN0LT5tX0xlbkxvdyAhPSBsZW4pIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhTWVNfbWVtY21wMzIocENvbXBhY3QtPm1fcEJ1ZmZlciwgcFN0ciwgbGVuKSA9PSAwOw0KK30NCitzdGF0aWMgdm9pZCBfQ29tcGFjdFN0cmluZ1N0b3JlKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IsIF9Db21wYWN0U3RyaW5nKiBwQ29tcGFjdCwgRlhfTFBDQllURSBwU3RyLCBpbnQgbGVuKQ0KK3sNCisgICAgaWYgKGxlbiA8IChpbnQpc2l6ZW9mKF9Db21wYWN0U3RyaW5nKSkgew0KKyAgICAgICAgcENvbXBhY3QtPm1fQ29tcGFjdExlbiA9IChGWF9CWVRFKWxlbjsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKCZwQ29tcGFjdC0+bV9MZW5IaWdoLCBwU3RyLCBsZW4pOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHBDb21wYWN0LT5tX0NvbXBhY3RMZW4gPSAweGZmOw0KKyAgICBwQ29tcGFjdC0+bV9MZW5IaWdoID0gbGVuIC8gMjU2Ow0KKyAgICBwQ29tcGFjdC0+bV9MZW5Mb3cgPSBsZW4gJSAyNTY7DQorICAgIHBDb21wYWN0LT5tX3BCdWZmZXIgPSBGWF9BbGxvY2F0b3JfQWxsb2MocEFsbG9jYXRvciwgRlhfQllURSwgbGVuKTsNCisgICAgaWYgKHBDb21wYWN0LT5tX3BCdWZmZXIpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKHBDb21wYWN0LT5tX3BCdWZmZXIsIHBTdHIsIGxlbik7DQorICAgIH0NCit9DQorc3RhdGljIENGWF9CeXRlU3RyaW5nQyBfQ29tcGFjdFN0cmluZ0dldChfQ29tcGFjdFN0cmluZyogcENvbXBhY3QpDQorew0KKyAgICBpZiAocENvbXBhY3QtPm1fQ29tcGFjdExlbiA9PSAweGZmKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKHBDb21wYWN0LT5tX3BCdWZmZXIsIHBDb21wYWN0LT5tX0xlbkhpZ2ggKiAyNTYgKyBwQ29tcGFjdC0+bV9MZW5Mb3cpOw0KKyAgICB9DQorICAgIGlmIChwQ29tcGFjdC0+bV9Db21wYWN0TGVuID09IDB4ZmUpIHsNCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZ0MoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKCZwQ29tcGFjdC0+bV9MZW5IaWdoLCBwQ29tcGFjdC0+bV9Db21wYWN0TGVuKTsNCit9DQorI2RlZmluZSBDTUFQX0FMTE9DX1NURVAJCTgNCisjZGVmaW5lIENNQVBfSU5ERVhfU0laRQkJOA0KK0NGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyOjpDRlhfQ01hcEJ5dGVTdHJpbmdUb1B0cihJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KKyAgICA6IG1fQnVmZmVyKHNpemVvZihfQ29tcGFjdFN0cmluZykgKyBzaXplb2Yodm9pZCopLCBDTUFQX0FMTE9DX1NURVAsIENNQVBfSU5ERVhfU0laRSwgcEFsbG9jYXRvcikNCit7DQorfQ0KK0NGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyOjp+Q0ZYX0NNYXBCeXRlU3RyaW5nVG9QdHIoKQ0KK3sNCisgICAgUmVtb3ZlQWxsKCk7DQorfQ0KK3ZvaWQgQ0ZYX0NNYXBCeXRlU3RyaW5nVG9QdHI6OlJlbW92ZUFsbCgpDQorew0KKyAgICBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gbV9CdWZmZXIubV9wQWxsb2NhdG9yOw0KKyAgICBpbnQgc2l6ZSA9IG1fQnVmZmVyLkdldFNpemUoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7DQorICAgICAgICBfQ29tcGFjdFN0cmluZ1JlbGVhc2UocEFsbG9jYXRvciwgKF9Db21wYWN0U3RyaW5nKiltX0J1ZmZlci5HZXRBdChpKSk7DQorICAgIH0NCisgICAgbV9CdWZmZXIuUmVtb3ZlQWxsKCk7DQorfQ0KK0ZYX1BPU0lUSU9OIENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyOjpHZXRTdGFydFBvc2l0aW9uKCkgY29uc3QNCit7DQorICAgIGludCBzaXplID0gbV9CdWZmZXIuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIHsNCisgICAgICAgIF9Db21wYWN0U3RyaW5nKiBwS2V5ID0gKF9Db21wYWN0U3RyaW5nKiltX0J1ZmZlci5HZXRBdChpKTsNCisgICAgICAgIGlmIChwS2V5LT5tX0NvbXBhY3RMZW4gIT0gMHhmZSkgew0KKyAgICAgICAgICAgIHJldHVybiAoRlhfUE9TSVRJT04pKEZYX1VJTlRQVFIpKGkgKyAxKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQordm9pZCBDRlhfQ01hcEJ5dGVTdHJpbmdUb1B0cjo6R2V0TmV4dEFzc29jKEZYX1BPU0lUSU9OJiByTmV4dFBvc2l0aW9uLCBDRlhfQnl0ZVN0cmluZyYgcktleSwgdm9pZComIHJWYWx1ZSkgY29uc3QNCit7DQorICAgIGlmIChyTmV4dFBvc2l0aW9uID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgaW5kZXggPSAoaW50KShGWF9VSU5UUFRSKXJOZXh0UG9zaXRpb24gLSAxOw0KKyAgICBfQ29tcGFjdFN0cmluZyogcEtleSA9IChfQ29tcGFjdFN0cmluZyopbV9CdWZmZXIuR2V0QXQoaW5kZXgpOw0KKyAgICByS2V5ID0gX0NvbXBhY3RTdHJpbmdHZXQocEtleSk7DQorICAgIHJWYWx1ZSA9ICoodm9pZCoqKShwS2V5ICsgMSk7DQorICAgIGluZGV4ICsrOw0KKyAgICBpbnQgc2l6ZSA9IG1fQnVmZmVyLkdldFNpemUoKTsNCisgICAgd2hpbGUgKGluZGV4IDwgc2l6ZSkgew0KKyAgICAgICAgcEtleSA9IChfQ29tcGFjdFN0cmluZyopbV9CdWZmZXIuR2V0QXQoaW5kZXgpOw0KKyAgICAgICAgaWYgKHBLZXktPm1fQ29tcGFjdExlbiAhPSAweGZlKSB7DQorICAgICAgICAgICAgck5leHRQb3NpdGlvbiA9IChGWF9QT1NJVElPTikoRlhfVUlOVFBUUikoaW5kZXggKyAxKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBpbmRleCArKzsNCisgICAgfQ0KKyAgICByTmV4dFBvc2l0aW9uID0gTlVMTDsNCit9DQorRlhfTFBWT0lEIENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyOjpHZXROZXh0VmFsdWUoRlhfUE9TSVRJT04mIHJOZXh0UG9zaXRpb24pIGNvbnN0DQorew0KKyAgICBpZiAock5leHRQb3NpdGlvbiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpbnQgaW5kZXggPSAoaW50KShGWF9VSU5UUFRSKXJOZXh0UG9zaXRpb24gLSAxOw0KKyAgICBfQ29tcGFjdFN0cmluZyogcEtleSA9IChfQ29tcGFjdFN0cmluZyopbV9CdWZmZXIuR2V0QXQoaW5kZXgpOw0KKyAgICBGWF9MUFZPSUQgclZhbHVlID0gKih2b2lkKiopKHBLZXkgKyAxKTsNCisgICAgaW5kZXggKys7DQorICAgIGludCBzaXplID0gbV9CdWZmZXIuR2V0U2l6ZSgpOw0KKyAgICB3aGlsZSAoaW5kZXggPCBzaXplKSB7DQorICAgICAgICBwS2V5ID0gKF9Db21wYWN0U3RyaW5nKiltX0J1ZmZlci5HZXRBdChpbmRleCk7DQorICAgICAgICBpZiAocEtleS0+bV9Db21wYWN0TGVuICE9IDB4ZmUpIHsNCisgICAgICAgICAgICByTmV4dFBvc2l0aW9uID0gKEZYX1BPU0lUSU9OKShGWF9VSU5UUFRSKShpbmRleCArIDEpOw0KKyAgICAgICAgICAgIHJldHVybiByVmFsdWU7DQorICAgICAgICB9DQorICAgICAgICBpbmRleCArKzsNCisgICAgfQ0KKyAgICByTmV4dFBvc2l0aW9uID0gTlVMTDsNCisgICAgcmV0dXJuIHJWYWx1ZTsNCit9DQorRlhfQk9PTCBfQ01hcExvb2t1cENhbGxiYWNrKHZvaWQqIHBhcmFtLCB2b2lkKiBwRGF0YSkNCit7DQorICAgIHJldHVybiAhX0NvbXBhY3RTdHJpbmdTYW1lKChfQ29tcGFjdFN0cmluZyopcERhdGEsICgoQ0ZYX0J5dGVTdHJpbmdDKilwYXJhbSktPkdldFB0cigpLCAoKENGWF9CeXRlU3RyaW5nQyopcGFyYW0pLT5HZXRMZW5ndGgoKSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0NNYXBCeXRlU3RyaW5nVG9QdHI6Okxvb2t1cChGWF9CU1RSIGtleSwgdm9pZComIHJWYWx1ZSkgY29uc3QNCit7DQorICAgIHZvaWQqIHAgPSBtX0J1ZmZlci5JdGVyYXRlKF9DTWFwTG9va3VwQ2FsbGJhY2ssICh2b2lkKikma2V5KTsNCisgICAgaWYgKCFwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgclZhbHVlID0gKih2b2lkKiopKChfQ29tcGFjdFN0cmluZyopcCArIDEpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDRlhfQ01hcEJ5dGVTdHJpbmdUb1B0cjo6U2V0QXQoRlhfQlNUUiBrZXksIHZvaWQqIHZhbHVlKQ0KK3sNCisgICAgQVNTRVJUKHZhbHVlICE9IE5VTEwpOw0KKyAgICBpbnQgaW5kZXgsIGtleV9sZW4gPSBrZXkuR2V0TGVuZ3RoKCk7DQorICAgIGludCBzaXplID0gbV9CdWZmZXIuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBzaXplOyBpbmRleCArKykgew0KKyAgICAgICAgX0NvbXBhY3RTdHJpbmcqIHBLZXkgPSAoX0NvbXBhY3RTdHJpbmcqKW1fQnVmZmVyLkdldEF0KGluZGV4KTsNCisgICAgICAgIGlmICghX0NvbXBhY3RTdHJpbmdTYW1lKHBLZXksIChGWF9MUENCWVRFKWtleSwga2V5X2xlbikpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgICoodm9pZCoqKShwS2V5ICsgMSkgPSB2YWx1ZTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gbV9CdWZmZXIubV9wQWxsb2NhdG9yOw0KKyAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBzaXplOyBpbmRleCArKykgew0KKyAgICAgICAgX0NvbXBhY3RTdHJpbmcqIHBLZXkgPSAoX0NvbXBhY3RTdHJpbmcqKW1fQnVmZmVyLkdldEF0KGluZGV4KTsNCisgICAgICAgIGlmIChwS2V5LT5tX0NvbXBhY3RMZW4pIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIF9Db21wYWN0U3RyaW5nU3RvcmUocEFsbG9jYXRvciwgcEtleSwgKEZYX0xQQ0JZVEUpa2V5LCBrZXlfbGVuKTsNCisgICAgICAgICoodm9pZCoqKShwS2V5ICsgMSkgPSB2YWx1ZTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBfQ29tcGFjdFN0cmluZyogcEtleSA9IChfQ29tcGFjdFN0cmluZyopbV9CdWZmZXIuQWRkKCk7DQorICAgIF9Db21wYWN0U3RyaW5nU3RvcmUocEFsbG9jYXRvciwgcEtleSwgKEZYX0xQQ0JZVEUpa2V5LCBrZXlfbGVuKTsNCisgICAgKih2b2lkKiopKHBLZXkgKyAxKSA9IHZhbHVlOw0KK30NCit2b2lkIENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyOjpBZGRWYWx1ZShGWF9CU1RSIGtleSwgdm9pZCogdmFsdWUpDQorew0KKyAgICBBU1NFUlQodmFsdWUgIT0gTlVMTCk7DQorICAgIF9Db21wYWN0U3RyaW5nKiBwS2V5ID0gKF9Db21wYWN0U3RyaW5nKiltX0J1ZmZlci5BZGQoKTsNCisgICAgX0NvbXBhY3RTdHJpbmdTdG9yZShtX0J1ZmZlci5tX3BBbGxvY2F0b3IsIHBLZXksIChGWF9MUENCWVRFKWtleSwga2V5LkdldExlbmd0aCgpKTsNCisgICAgKih2b2lkKiopKHBLZXkgKyAxKSA9IHZhbHVlOw0KK30NCit2b2lkIENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyOjpSZW1vdmVLZXkoRlhfQlNUUiBrZXkpDQorew0KKyAgICBpbnQga2V5X2xlbiA9IGtleS5HZXRMZW5ndGgoKTsNCisgICAgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IG1fQnVmZmVyLm1fcEFsbG9jYXRvcjsNCisgICAgaW50IHNpemUgPSBtX0J1ZmZlci5HZXRTaXplKCk7DQorICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBzaXplOyBpbmRleCArKykgew0KKyAgICAgICAgX0NvbXBhY3RTdHJpbmcqIHBLZXkgPSAoX0NvbXBhY3RTdHJpbmcqKW1fQnVmZmVyLkdldEF0KGluZGV4KTsNCisgICAgICAgIGlmICghX0NvbXBhY3RTdHJpbmdTYW1lKHBLZXksIChGWF9MUENCWVRFKWtleSwga2V5X2xlbikpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIF9Db21wYWN0U3RyaW5nUmVsZWFzZShwQWxsb2NhdG9yLCBwS2V5KTsNCisgICAgICAgIHBLZXktPm1fQ29tcGFjdExlbiA9IDB4ZmU7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCit9DQoraW50IENGWF9DTWFwQnl0ZVN0cmluZ1RvUHRyOjpHZXRDb3VudCgpIGNvbnN0DQorew0KKyAgICBpbnQgY291bnQgPSAwOw0KKyAgICBpbnQgc2l6ZSA9IG1fQnVmZmVyLkdldFNpemUoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7DQorICAgICAgICBfQ29tcGFjdFN0cmluZyogcEtleSA9IChfQ29tcGFjdFN0cmluZyopbV9CdWZmZXIuR2V0QXQoaSk7DQorICAgICAgICBpZiAocEtleS0+bV9Db21wYWN0TGVuICE9IDB4ZmUpIHsNCisgICAgICAgICAgICBjb3VudCArKzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gY291bnQ7DQorfQ0KK2V4dGVybiAiQyIgew0KKyAgICBzdGF0aWMgaW50IF9Db21wYXJlRFdvcmQoY29uc3Qgdm9pZCogcDEsIGNvbnN0IHZvaWQqIHAyKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKCooRlhfRFdPUkQqKXAxKSAtICgqKEZYX0RXT1JEKilwMik7DQorICAgIH0NCit9Ow0KK3N0cnVjdCBfRFdvcmRQYWlyIHsNCisgICAgRlhfRFdPUkQga2V5Ow0KKyAgICBGWF9EV09SRCB2YWx1ZTsNCit9Ow0KK0ZYX0JPT0wgQ0ZYX0NNYXBEV29yZFRvRFdvcmQ6Okxvb2t1cChGWF9EV09SRCBrZXksIEZYX0RXT1JEJiB2YWx1ZSkgY29uc3QNCit7DQorICAgIEZYX0xQVk9JRCBwUmVzdWx0ID0gRlhTWVNfYnNlYXJjaCgma2V5LCBtX0J1ZmZlci5HZXRCdWZmZXIoKSwgbV9CdWZmZXIuR2V0U2l6ZSgpIC8gc2l6ZW9mKF9EV29yZFBhaXIpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9EV29yZFBhaXIpLCBfQ29tcGFyZURXb3JkKTsNCisgICAgaWYgKHBSZXN1bHQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHZhbHVlID0gKChGWF9EV09SRCopcFJlc3VsdClbMV07DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9QT1NJVElPTiBDRlhfQ01hcERXb3JkVG9EV29yZDo6R2V0U3RhcnRQb3NpdGlvbigpIGNvbnN0DQorew0KKyAgICBGWF9EV09SRCBjb3VudCA9IG1fQnVmZmVyLkdldFNpemUoKSAvIHNpemVvZihfRFdvcmRQYWlyKTsNCisgICAgaWYgKGNvdW50ID09IDApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiAoRlhfUE9TSVRJT04pMTsNCit9DQordm9pZCBDRlhfQ01hcERXb3JkVG9EV29yZDo6R2V0TmV4dEFzc29jKEZYX1BPU0lUSU9OJiBwb3MsIEZYX0RXT1JEJiBrZXksIEZYX0RXT1JEJiB2YWx1ZSkgY29uc3QNCit7DQorICAgIGlmIChwb3MgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGluZGV4ID0gKChGWF9EV09SRCkoRlhfVUlOVFBUUilwb3MpIC0gMTsNCisgICAgRlhfRFdPUkQgY291bnQgPSBtX0J1ZmZlci5HZXRTaXplKCkgLyBzaXplb2YoX0RXb3JkUGFpcik7DQorICAgIF9EV29yZFBhaXIqIGJ1ZiA9IChfRFdvcmRQYWlyKiltX0J1ZmZlci5HZXRCdWZmZXIoKTsNCisgICAga2V5ID0gYnVmW2luZGV4XS5rZXk7DQorICAgIHZhbHVlID0gYnVmW2luZGV4XS52YWx1ZTsNCisgICAgaWYgKGluZGV4ID09IGNvdW50IC0gMSkgew0KKyAgICAgICAgcG9zID0gMDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBvcyA9IChGWF9QT1NJVElPTikoKEZYX1VJTlRQVFIpcG9zICsgMSk7DQorICAgIH0NCit9DQordm9pZCBDRlhfQ01hcERXb3JkVG9EV29yZDo6U2V0QXQoRlhfRFdPUkQga2V5LCBGWF9EV09SRCB2YWx1ZSkNCit7DQorICAgIEZYX0RXT1JEIGNvdW50ID0gbV9CdWZmZXIuR2V0U2l6ZSgpIC8gc2l6ZW9mKF9EV29yZFBhaXIpOw0KKyAgICBfRFdvcmRQYWlyKiBidWYgPSAoX0RXb3JkUGFpciopbV9CdWZmZXIuR2V0QnVmZmVyKCk7DQorICAgIF9EV29yZFBhaXIgcGFpciA9IHtrZXksIHZhbHVlfTsNCisgICAgaWYgKGNvdW50ID09IDAgfHwga2V5ID4gYnVmW2NvdW50IC0gMV0ua2V5KSB7DQorICAgICAgICBtX0J1ZmZlci5BcHBlbmRCbG9jaygmcGFpciwgc2l6ZW9mKF9EV29yZFBhaXIpKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgbG93ID0gMCwgaGlnaCA9IGNvdW50IC0gMTsNCisgICAgd2hpbGUgKGxvdyA8PSBoaWdoKSB7DQorICAgICAgICBpbnQgbWlkID0gKGxvdyArIGhpZ2gpIC8gMjsNCisgICAgICAgIGlmIChidWZbbWlkXS5rZXkgPCBrZXkpIHsNCisgICAgICAgICAgICBsb3cgPSBtaWQgKyAxOw0KKyAgICAgICAgfSBlbHNlIGlmIChidWZbbWlkXS5rZXkgPiBrZXkpIHsNCisgICAgICAgICAgICBoaWdoID0gbWlkIC0gMTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYnVmW21pZF0udmFsdWUgPSB2YWx1ZTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9CdWZmZXIuSW5zZXJ0QmxvY2sobG93ICogc2l6ZW9mKF9EV29yZFBhaXIpLCAmcGFpciwgc2l6ZW9mKF9EV29yZFBhaXIpKTsNCit9DQordm9pZCBDRlhfQ01hcERXb3JkVG9EV29yZDo6RXN0aW1hdGVTaXplKEZYX0RXT1JEIHNpemUsIEZYX0RXT1JEIGdyb3dfYnkpDQorew0KKyAgICBtX0J1ZmZlci5Fc3RpbWF0ZVNpemUoc2l6ZSwgZ3Jvd19ieSk7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX21lbW1nci5jcHAgYi9jb3JlL3NyYy9meGNydC9meF9iYXNpY19tZW1tZ3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZGY4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC9meF9iYXNpY19tZW1tZ3IuY3BwCkBAIC0wLDAgKzEsMzA2IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGNydC9meF9iYXNpYy5oIg0KKyNpbmNsdWRlICJtZW1faW50LmgiDQordm9pZCBGWE1FTV9EZXN0cm95Rm94aXRNZ3IoRlhNRU1fRm94aXRNZ3IqIHBGb3hpdE1ncikNCit7DQorICAgIGlmIChwRm94aXRNZ3IgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9NZW1vcnlNZ3IqIHAgPSAoQ0ZYX01lbW9yeU1nciopcEZveGl0TWdyOw0KKyAgICBpZiAocC0+bV9wU3lzdGVtTWdyLT5Db2xsZWN0QWxsKSB7DQorICAgICAgICBwLT5tX3BTeXN0ZW1NZ3ItPkNvbGxlY3RBbGwocC0+bV9wU3lzdGVtTWdyKTsNCisgICAgfQ0KKyAgICBpZiAocC0+bV9iUmVsZWFzZU1ncikgew0KKyAgICAgICAgcC0+bV9wU3lzdGVtTWdyLT5GcmVlKHAtPm1fcFN5c3RlbU1nciwgcCwgMCk7DQorICAgIH0NCisgICAgaWYgKHAtPm1fcEV4dGVybmFsTWVtb3J5KSB7DQorICAgICAgICBmcmVlKHAtPm1fcEV4dGVybmFsTWVtb3J5KTsNCisgICAgfQ0KK30NCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCitzdGF0aWMgdm9pZCogX0RlZkFsbG9jRGVidWcoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgc2l6ZV90IHNpemUsIEZYX0xQQ1NUUiBmaWxlbmFtZSwgaW50IGxpbmUpDQorew0KKyAgICByZXR1cm4gKChGWF9EZWZBbGxvY2F0b3IqKXBBbGxvY2F0b3IpLT5tX3BGb3hpdE1nci0+QWxsb2NEZWJ1ZyhzaXplLCAwLCBmaWxlbmFtZSwgbGluZSk7DQorfQ0KK3N0YXRpYyB2b2lkKiBfRGVmQWxsb2MoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgc2l6ZV90IHNpemUpDQorew0KKyAgICByZXR1cm4gKChGWF9EZWZBbGxvY2F0b3IqKXBBbGxvY2F0b3IpLT5tX3BGb3hpdE1nci0+QWxsb2Moc2l6ZSwgMCk7DQorfQ0KK3N0YXRpYyB2b2lkKiBfRGVmUmVhbGxvY0RlYnVnKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IsIHZvaWQqIHAsIHNpemVfdCBzaXplLCBGWF9MUENTVFIgZmlsZW5hbWUsIGludCBsaW5lKQ0KK3sNCisgICAgcmV0dXJuICgoRlhfRGVmQWxsb2NhdG9yKilwQWxsb2NhdG9yKS0+bV9wRm94aXRNZ3ItPlJlYWxsb2NEZWJ1ZyhwLCBzaXplLCAwLCBmaWxlbmFtZSwgbGluZSk7DQorfQ0KK3N0YXRpYyB2b2lkKiBfRGVmUmVhbGxvYyhJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCB2b2lkKiBwLCBzaXplX3Qgc2l6ZSkNCit7DQorICAgIHJldHVybiAoKEZYX0RlZkFsbG9jYXRvciopcEFsbG9jYXRvciktPm1fcEZveGl0TWdyLT5SZWFsbG9jKHAsIHNpemUsIDApOw0KK30NCitzdGF0aWMgdm9pZCBfRGVmRnJlZShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCB2b2lkKiBwKQ0KK3sNCisgICAgKChGWF9EZWZBbGxvY2F0b3IqKXBBbGxvY2F0b3IpLT5tX3BGb3hpdE1nci0+RnJlZShwLCAwKTsNCit9DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KK3ZvaWQgQ0ZYX01lbW9yeU1ncjo6SW5pdChGWE1FTV9TeXN0ZW1NZ3IqIHBTeXN0ZW1NZ3IpDQorew0KKyAgICBtX3BTeXN0ZW1NZ3IgPSBwU3lzdGVtTWdyOw0KKyAgICBJRlhfQWxsb2NhdG9yICZhYyA9IG1fRGVmQWxsb2NhdG9yLm1fQWxsb2NhdG9yOw0KKyAgICBhYy5tX0FsbG9jID0gX0RlZkFsbG9jOw0KKyAgICBhYy5tX0FsbG9jRGVidWcgPSBfRGVmQWxsb2NEZWJ1ZzsNCisgICAgYWMubV9SZWFsbG9jID0gX0RlZlJlYWxsb2M7DQorICAgIGFjLm1fUmVhbGxvY0RlYnVnID0gX0RlZlJlYWxsb2NEZWJ1ZzsNCisgICAgYWMubV9GcmVlID0gX0RlZkZyZWU7DQorICAgIG1fRGVmQWxsb2NhdG9yLm1fcEZveGl0TWdyID0gdGhpczsNCisgICAgbV9wRXh0ZXJuYWxNZW1vcnkgPSBOVUxMOw0KKyAgICBtX2JSZWxlYXNlTWdyID0gVFJVRTsNCit9DQordm9pZCBDRlhfTWVtb3J5TWdyOjpQdXJnZU1ncigpDQorew0KKyAgICBpZiAobV9wU3lzdGVtTWdyLT5QdXJnZSkgew0KKyAgICAgICAgbV9wU3lzdGVtTWdyLT5QdXJnZShtX3BTeXN0ZW1NZ3IpOw0KKyAgICB9DQorfQ0KK3ZvaWQqIENGWF9NZW1vcnlNZ3I6OkFsbG9jKHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpDQorew0KKyAgICB2b2lkKiBwID0gbV9wU3lzdGVtTWdyLT5BbGxvYyhtX3BTeXN0ZW1NZ3IsIHNpemUsIGZsYWdzKTsNCisgICAgaWYgKHAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHA7DQorfQ0KK3ZvaWQqIENGWF9NZW1vcnlNZ3I6OkFsbG9jRGVidWcoc2l6ZV90IHNpemUsIGludCBmbGFncywgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKQ0KK3sNCisgICAgdm9pZCogcCA9IG1fcFN5c3RlbU1nci0+QWxsb2NEZWJ1ZyhtX3BTeXN0ZW1NZ3IsIHNpemUsIGZsYWdzLCBmaWxlLCBsaW5lKTsNCisgICAgaWYgKHAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHA7DQorfQ0KK3ZvaWQqIENGWF9NZW1vcnlNZ3I6OlJlYWxsb2Modm9pZCogcCwgc2l6ZV90IHNpemUsIGludCBmbGFncykNCit7DQorICAgIHZvaWQqIHAxID0gbV9wU3lzdGVtTWdyLT5SZWFsbG9jKG1fcFN5c3RlbU1nciwgcCwgc2l6ZSwgZmxhZ3MpOw0KKyAgICBpZiAocDEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHAxOw0KK30NCit2b2lkKiBDRlhfTWVtb3J5TWdyOjpSZWFsbG9jRGVidWcodm9pZCogcCwgc2l6ZV90IHNpemUsIGludCBmbGFncywgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKQ0KK3sNCisgICAgdm9pZCogcDEgPSBtX3BTeXN0ZW1NZ3ItPlJlYWxsb2NEZWJ1ZyhtX3BTeXN0ZW1NZ3IsIHAsIHNpemUsIGZsYWdzLCBmaWxlLCBsaW5lKTsNCisgICAgaWYgKHAxID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBwMTsNCit9DQordm9pZCBDRlhfTWVtb3J5TWdyOjpGcmVlKHZvaWQqIHAsIGludCBmbGFncykNCit7DQorICAgIGlmIChwID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BTeXN0ZW1NZ3ItPkZyZWUobV9wU3lzdGVtTWdyLCBwLCBmbGFncyk7DQorfQ0KK0NGWF9NZW1vcnlNZ3IqIGdfcERlZkZveGl0TWdyID0gTlVMTDsNCit2b2lkKiBGWE1FTV9EZWZhdWx0QWxsb2Moc2l6ZV90IHNpemUsIGludCBmbGFncykNCit7DQorICAgIHJldHVybiBnX3BEZWZGb3hpdE1nci0+QWxsb2Moc2l6ZSwgZmxhZ3MpOw0KK30NCit2b2lkKiBGWE1FTV9EZWZhdWx0QWxsb2MyKHNpemVfdCBzaXplLCBzaXplX3QgdW5pdCwgaW50IGZsYWdzKQ0KK3sNCisgICAgcmV0dXJuIGdfcERlZkZveGl0TWdyLT5BbGxvYyhzaXplICogdW5pdCwgZmxhZ3MpOw0KK30NCit2b2lkKiBGWE1FTV9EZWZhdWx0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQ0KK3sNCisgICAgaWYgKHAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZYTUVNX0RlZmF1bHRBbGxvYyhzaXplLCBmbGFncyk7DQorICAgIH0NCisgICAgcmV0dXJuIGdfcERlZkZveGl0TWdyLT5SZWFsbG9jKHAsIHNpemUsIGZsYWdzKTsNCit9DQordm9pZCogRlhNRU1fRGVmYXVsdFJlYWxsb2MyKHZvaWQqIHAsIHNpemVfdCBzaXplLCBzaXplX3QgdW5pdCwgaW50IGZsYWdzKQ0KK3sNCisgICAgaWYgKHAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZYTUVNX0RlZmF1bHRBbGxvYzIoc2l6ZSwgdW5pdCwgZmxhZ3MpOw0KKyAgICB9DQorICAgIHJldHVybiBnX3BEZWZGb3hpdE1nci0+UmVhbGxvYyhwLCBzaXplICogdW5pdCwgZmxhZ3MpOw0KK30NCit2b2lkKiBGWE1FTV9EZWZhdWx0QWxsb2NEZWJ1ZyhzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLCBGWF9MUENTVFIgZmlsZSwgaW50IGxpbmUpDQorew0KKyAgICByZXR1cm4gZ19wRGVmRm94aXRNZ3ItPkFsbG9jRGVidWcoc2l6ZSwgZmxhZ3MsIGZpbGUsIGxpbmUpOw0KK30NCit2b2lkKiBGWE1FTV9EZWZhdWx0QWxsb2NEZWJ1ZzIoc2l6ZV90IHNpemUsIHNpemVfdCB1bml0LCBpbnQgZmxhZ3MsIEZYX0xQQ1NUUiBmaWxlLCBpbnQgbGluZSkNCit7DQorICAgIHJldHVybiBnX3BEZWZGb3hpdE1nci0+QWxsb2NEZWJ1ZyhzaXplICogdW5pdCwgZmxhZ3MsIGZpbGUsIGxpbmUpOw0KK30NCit2b2lkKiBGWE1FTV9EZWZhdWx0UmVhbGxvY0RlYnVnKHZvaWQqIHAsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MsIEZYX0xQQ1NUUiBmaWxlLCBpbnQgbGluZSkNCit7DQorICAgIGlmIChwID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGWE1FTV9EZWZhdWx0QWxsb2NEZWJ1ZyhzaXplLCBmbGFncywgZmlsZSwgbGluZSk7DQorICAgIH0NCisgICAgcmV0dXJuIGdfcERlZkZveGl0TWdyLT5SZWFsbG9jRGVidWcocCwgc2l6ZSwgZmxhZ3MsIGZpbGUsIGxpbmUpOw0KK30NCit2b2lkKiBGWE1FTV9EZWZhdWx0UmVhbGxvY0RlYnVnMih2b2lkKiBwLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IHVuaXQsIGludCBmbGFncywgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKQ0KK3sNCisgICAgaWYgKHAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZYTUVNX0RlZmF1bHRBbGxvY0RlYnVnMihzaXplLCB1bml0LCBmbGFncywgZmlsZSwgbGluZSk7DQorICAgIH0NCisgICAgcmV0dXJuIGdfcERlZkZveGl0TWdyLT5SZWFsbG9jRGVidWcocCwgc2l6ZSAqIHVuaXQsIGZsYWdzLCBmaWxlLCBsaW5lKTsNCit9DQordm9pZCBGWE1FTV9EZWZhdWx0RnJlZSh2b2lkKiBwLCBpbnQgZmxhZ3MpDQorew0KKyAgICBnX3BEZWZGb3hpdE1nci0+RnJlZShwLCBmbGFncyk7DQorfQ0KK0lGWF9BbGxvY2F0b3IqIEZYTUVNX0dldERlZkFsbG9jYXRvcigpDQorew0KKyAgICByZXR1cm4gJmdfcERlZkZveGl0TWdyLT5tX0RlZkFsbG9jYXRvci5tX0FsbG9jYXRvcjsNCit9DQordm9pZCogQ0ZYX09iamVjdDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKQ0KK3sNCisgICAgcmV0dXJuIGdfcERlZkZveGl0TWdyLT5BbGxvYyhzaXplLCAwKTsNCit9DQordm9pZCogQ0ZYX09iamVjdDo6b3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpDQorew0KKyAgICByZXR1cm4gZ19wRGVmRm94aXRNZ3ItPkFsbG9jKHNpemUsIDApOw0KK30NCit2b2lkKiBDRlhfT2JqZWN0OjpvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSwgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKQ0KK3sNCisgICAgcmV0dXJuIGdfcERlZkZveGl0TWdyLT5BbGxvY0RlYnVnKHNpemUsIDAsIGZpbGUsIGxpbmUpOw0KK30NCit2b2lkKiBDRlhfT2JqZWN0OjpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIEZYX0xQQ1NUUiBmaWxlLCBpbnQgbGluZSkNCit7DQorICAgIHJldHVybiBnX3BEZWZGb3hpdE1nci0+QWxsb2NEZWJ1ZyhzaXplLCAwLCBmaWxlLCBsaW5lKTsNCit9DQordm9pZCBDRlhfT2JqZWN0OjpvcGVyYXRvciBkZWxldGUodm9pZCogcCkNCit7DQorICAgIGdfcERlZkZveGl0TWdyLT5GcmVlKHAsIDApOw0KK30NCit2b2lkIENGWF9PYmplY3Q6Om9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApDQorew0KKyAgICBnX3BEZWZGb3hpdE1nci0+RnJlZShwLCAwKTsNCit9DQordm9pZCBDRlhfT2JqZWN0OjpvcGVyYXRvciBkZWxldGUodm9pZCogcCwgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKQ0KK3sNCisgICAgZ19wRGVmRm94aXRNZ3ItPkZyZWUocCwgMCk7DQorfQ0KK3ZvaWQgQ0ZYX09iamVjdDo6b3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCwgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKQ0KK3sNCisgICAgZ19wRGVmRm94aXRNZ3ItPkZyZWUocCwgMCk7DQorfQ0KK3ZvaWQqIENGWF9BbGxvY09iamVjdDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCBGWF9MUENTVFIgZmlsZW5hbWUsIGludCBsaW5lKQ0KK3sNCisgICAgdm9pZCogcCA9IHBBbGxvY2F0b3IgPyBwQWxsb2NhdG9yLT5tX0FsbG9jRGVidWcocEFsbG9jYXRvciwgc2l6ZSwgZmlsZW5hbWUsIGxpbmUpIDoNCisgICAgICAgICAgICAgIGdfcERlZkZveGl0TWdyLT5BbGxvY0RlYnVnKHNpemUsIDAsIGZpbGVuYW1lLCBsaW5lKTsNCisgICAgKChDRlhfQWxsb2NPYmplY3QqKXApLT5tX3BBbGxvY2F0b3IgPSBwQWxsb2NhdG9yOw0KKyAgICByZXR1cm4gcDsNCit9DQordm9pZCBDRlhfQWxsb2NPYmplY3Q6Om9wZXJhdG9yIGRlbGV0ZSAodm9pZCogcCwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgRlhfTFBDU1RSIGZpbGVuYW1lLCBpbnQgbGluZSkNCit7DQorICAgIGlmIChwQWxsb2NhdG9yKSB7DQorICAgICAgICBwQWxsb2NhdG9yLT5tX0ZyZWUocEFsbG9jYXRvciwgcCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBnX3BEZWZGb3hpdE1nci0+RnJlZShwLCAwKTsNCisgICAgfQ0KK30NCit2b2lkKiBDRlhfQWxsb2NPYmplY3Q6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIHZvaWQqIHAgPSBwQWxsb2NhdG9yID8gcEFsbG9jYXRvci0+bV9BbGxvYyhwQWxsb2NhdG9yLCBzaXplKSA6IGdfcERlZkZveGl0TWdyLT5BbGxvYyhzaXplLCAwKTsNCisgICAgKChDRlhfQWxsb2NPYmplY3QqKXApLT5tX3BBbGxvY2F0b3IgPSBwQWxsb2NhdG9yOw0KKyAgICByZXR1cm4gcDsNCit9DQordm9pZCBDRlhfQWxsb2NPYmplY3Q6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKQ0KK3sNCisgICAgaWYgKCgoQ0ZYX0FsbG9jT2JqZWN0KilwKS0+bV9wQWxsb2NhdG9yKSB7DQorICAgICAgICAoKChDRlhfQWxsb2NPYmplY3QqKXApLT5tX3BBbGxvY2F0b3IpLT5tX0ZyZWUoKChDRlhfQWxsb2NPYmplY3QqKXApLT5tX3BBbGxvY2F0b3IsIHApOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZ19wRGVmRm94aXRNZ3ItPkZyZWUocCwgMCk7DQorICAgIH0NCit9DQordm9pZCBDRlhfQWxsb2NPYmplY3Q6Om9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgaWYgKHBBbGxvY2F0b3IpIHsNCisgICAgICAgIHBBbGxvY2F0b3ItPm1fRnJlZShwQWxsb2NhdG9yLCBwKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGdfcERlZkZveGl0TWdyLT5GcmVlKHAsIDApOw0KKyAgICB9DQorfQ0KK2V4dGVybiAiQyIgew0KKyAgICBzdGF0aWMgdm9pZCogX0dPUEFsbG9jRGVidWcoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgc2l6ZV90IHNpemUsIEZYX0xQQ1NUUiBmaWxlLCBpbnQgbGluZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuICgoQ0ZYX0dyb3dPbmx5UG9vbCopcEFsbG9jYXRvciktPkFsbG9jKHNpemUpOw0KKyAgICB9DQorICAgIHN0YXRpYyB2b2lkKiBfR09QQWxsb2MoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgc2l6ZV90IHNpemUpDQorICAgIHsNCisgICAgICAgIHJldHVybiAoKENGWF9Hcm93T25seVBvb2wqKXBBbGxvY2F0b3IpLT5BbGxvYyhzaXplKTsNCisgICAgfQ0KKyAgICBzdGF0aWMgdm9pZCogX0dPUFJlYWxsb2NEZWJ1ZyhJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCB2b2lkKiBwLCBzaXplX3QgbmV3X3NpemUsIEZYX0xQQ1NUUiBmaWxlLCBpbnQgbGluZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuICgoQ0ZYX0dyb3dPbmx5UG9vbCopcEFsbG9jYXRvciktPlJlYWxsb2MocCwgbmV3X3NpemUpOw0KKyAgICB9DQorICAgIHN0YXRpYyB2b2lkKiBfR09QUmVhbGxvYyhJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCB2b2lkKiBwLCBzaXplX3QgbmV3X3NpemUpDQorICAgIHsNCisgICAgICAgIHJldHVybiAoKENGWF9Hcm93T25seVBvb2wqKXBBbGxvY2F0b3IpLT5SZWFsbG9jKHAsIG5ld19zaXplKTsNCisgICAgfQ0KKyAgICBzdGF0aWMgdm9pZCBfR09QRnJlZShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCB2b2lkKiBwKQ0KKyAgICB7DQorICAgIH0NCit9Ow0KK0NGWF9Hcm93T25seVBvb2w6OkNGWF9Hcm93T25seVBvb2woSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciwgc2l6ZV90IHRydW5rX3NpemUpDQorew0KKyAgICBtX1RydW5rU2l6ZSA9IHRydW5rX3NpemU7DQorICAgIG1fcEZpcnN0VHJ1bmsgPSBOVUxMOw0KKyAgICBtX3BBbGxvY2F0b3IgPSBwQWxsb2NhdG9yID8gcEFsbG9jYXRvciA6ICZnX3BEZWZGb3hpdE1nci0+bV9EZWZBbGxvY2F0b3IubV9BbGxvY2F0b3I7DQorICAgIG1fQWxsb2NEZWJ1ZyA9IF9HT1BBbGxvY0RlYnVnOw0KKyAgICBtX0FsbG9jID0gX0dPUEFsbG9jOw0KKyAgICBtX1JlYWxsb2NEZWJ1ZyA9IF9HT1BSZWFsbG9jRGVidWc7DQorICAgIG1fUmVhbGxvYyA9IF9HT1BSZWFsbG9jOw0KKyAgICBtX0ZyZWUgPSBfR09QRnJlZTsNCit9DQorQ0ZYX0dyb3dPbmx5UG9vbDo6fkNGWF9Hcm93T25seVBvb2woKQ0KK3sNCisgICAgRnJlZUFsbCgpOw0KK30NCit2b2lkIENGWF9Hcm93T25seVBvb2w6OlNldEFsbG9jYXRvcihJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgQVNTRVJUKG1fcEZpcnN0VHJ1bmsgPT0gTlVMTCk7DQorICAgIG1fcEFsbG9jYXRvciA9IHBBbGxvY2F0b3IgPyBwQWxsb2NhdG9yIDogJmdfcERlZkZveGl0TWdyLT5tX0RlZkFsbG9jYXRvci5tX0FsbG9jYXRvcjsNCit9DQorc3RydWN0IF9GWF9Hcm93T25seVRydW5rIHsNCisgICAgc2l6ZV90CW1fU2l6ZTsNCisgICAgc2l6ZV90CW1fQWxsb2NhdGVkOw0KKyAgICBfRlhfR3Jvd09ubHlUcnVuayoJbV9wTmV4dDsNCit9Ow0KK3ZvaWQgQ0ZYX0dyb3dPbmx5UG9vbDo6RnJlZUFsbCgpDQorew0KKyAgICBfRlhfR3Jvd09ubHlUcnVuayogcFRydW5rID0gKF9GWF9Hcm93T25seVRydW5rKiltX3BGaXJzdFRydW5rOw0KKyAgICB3aGlsZSAocFRydW5rKSB7DQorICAgICAgICBfRlhfR3Jvd09ubHlUcnVuayogcE5leHQgPSBwVHJ1bmstPm1fcE5leHQ7DQorICAgICAgICBtX3BBbGxvY2F0b3ItPm1fRnJlZShtX3BBbGxvY2F0b3IsIHBUcnVuayk7DQorICAgICAgICBwVHJ1bmsgPSBwTmV4dDsNCisgICAgfQ0KKyAgICBtX3BGaXJzdFRydW5rID0gTlVMTDsNCit9DQordm9pZCogQ0ZYX0dyb3dPbmx5UG9vbDo6QWxsb2Moc2l6ZV90IHNpemUpDQorew0KKyAgICBzaXplID0gKHNpemUgKyAzKSAvIDQgKiA0Ow0KKyAgICBfRlhfR3Jvd09ubHlUcnVuayogcFRydW5rID0gKF9GWF9Hcm93T25seVRydW5rKiltX3BGaXJzdFRydW5rOw0KKyAgICB3aGlsZSAocFRydW5rKSB7DQorICAgICAgICBpZiAocFRydW5rLT5tX1NpemUgLSBwVHJ1bmstPm1fQWxsb2NhdGVkID49IHNpemUpIHsNCisgICAgICAgICAgICB2b2lkKiBwID0gKEZYX0xQQllURSkocFRydW5rICsgMSkgKyBwVHJ1bmstPm1fQWxsb2NhdGVkOw0KKyAgICAgICAgICAgIHBUcnVuay0+bV9BbGxvY2F0ZWQgKz0gc2l6ZTsNCisgICAgICAgICAgICByZXR1cm4gcDsNCisgICAgICAgIH0NCisgICAgICAgIHBUcnVuayA9IHBUcnVuay0+bV9wTmV4dDsNCisgICAgfQ0KKyAgICBzaXplX3QgYWxsb2Nfc2l6ZSA9IHNpemUgPiBtX1RydW5rU2l6ZSA/IHNpemUgOiBtX1RydW5rU2l6ZTsNCisgICAgcFRydW5rID0gKF9GWF9Hcm93T25seVRydW5rKiltX3BBbGxvY2F0b3ItPm1fQWxsb2MobV9wQWxsb2NhdG9yLCBzaXplb2YoX0ZYX0dyb3dPbmx5VHJ1bmspICsgYWxsb2Nfc2l6ZSk7DQorICAgIHBUcnVuay0+bV9TaXplID0gYWxsb2Nfc2l6ZTsNCisgICAgcFRydW5rLT5tX0FsbG9jYXRlZCA9IHNpemU7DQorICAgIHBUcnVuay0+bV9wTmV4dCA9IChfRlhfR3Jvd09ubHlUcnVuayopbV9wRmlyc3RUcnVuazsNCisgICAgbV9wRmlyc3RUcnVuayA9IHBUcnVuazsNCisgICAgcmV0dXJuIHBUcnVuayArIDE7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX21lbW1ncl9taW5pLmNwcCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX21lbW1ncl9taW5pLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODM4NWUyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfbWVtbWdyX21pbmkuY3BwCkBAIC0wLDAgKzEsODIyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGNydC9meF9leHQuaCINCisjaW5jbHVkZSAibWVtX2ludC5oIg0KKyNpZmRlZiBfRlBERkFQSV9NSU5JXw0KK3N0YXRpYyBGWF9NRU1DT05GSUcgZ19NZW1Db25maWcgPSB7DQorICAgIDEsDQorICAgIDUsDQorICAgIDgsDQorICAgIDQsDQorICAgIDEyLA0KKyAgICA4LA0KKyAgICAyLA0KKyAgICA0LA0KKyAgICAzMiwNCisgICAgNjQsDQorfTsNCisjZWxzZQ0KK3N0YXRpYyBGWF9NRU1DT05GSUcgZ19NZW1Db25maWcgPSB7DQorICAgIDEsDQorICAgIDgsDQorICAgIDI0LA0KKyAgICA4LA0KKyAgICAzMiwNCisgICAgMTYsDQorICAgIDQsDQorICAgIDgsDQorICAgIDEyOCwNCisgICAgNjQsDQorfTsNCisjZW5kaWYNCit2b2lkIEZYTUVNX1NldENvbmZpZyhjb25zdCBGWF9NRU1DT05GSUcqIG1lbUNvbmZpZykNCit7DQorICAgIGdfTWVtQ29uZmlnID0gKm1lbUNvbmZpZzsNCit9DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorc3RhdGljIHZvaWQqIEZpeGVkQWxsb2MoRlhNRU1fU3lzdGVtTWdyKiBwTWdyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQ0KK3sNCisgICAgcmV0dXJuICgoQ0ZYTUVNX0ZpeGVkTWdyKilwTWdyLT51c2VyKS0+QWxsb2Moc2l6ZSk7DQorfQ0KK3N0YXRpYyB2b2lkKiBGaXhlZEFsbG9jRGVidWcoRlhNRU1fU3lzdGVtTWdyKiBwTWdyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLCBGWF9MUENTVFIgZmlsZSwgaW50IGxpbmUpDQorew0KKyAgICByZXR1cm4gKChDRlhNRU1fRml4ZWRNZ3IqKXBNZ3ItPnVzZXIpLT5BbGxvYyhzaXplKTsNCit9DQorc3RhdGljIHZvaWQqIEZpeGVkUmVhbGxvYyhGWE1FTV9TeXN0ZW1NZ3IqIHBNZ3IsIHZvaWQqIHBvaW50ZXIsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpDQorew0KKyAgICByZXR1cm4gKChDRlhNRU1fRml4ZWRNZ3IqKXBNZ3ItPnVzZXIpLT5SZWFsbG9jKHBvaW50ZXIsIHNpemUpOw0KK30NCitzdGF0aWMgdm9pZCogRml4ZWRSZWFsbG9jRGVidWcoRlhNRU1fU3lzdGVtTWdyKiBwTWdyLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLCBGWF9MUENTVFIgZmlsZSwgaW50IGxpbmUpDQorew0KKyAgICByZXR1cm4gKChDRlhNRU1fRml4ZWRNZ3IqKXBNZ3ItPnVzZXIpLT5SZWFsbG9jKHBvaW50ZXIsIHNpemUpOw0KK30NCitzdGF0aWMgdm9pZCAgRml4ZWRGcmVlKEZYTUVNX1N5c3RlbU1nciogcE1nciwgdm9pZCogcG9pbnRlciwgaW50IGZsYWdzKQ0KK3sNCisgICAgKChDRlhNRU1fRml4ZWRNZ3IqKXBNZ3ItPnVzZXIpLT5GcmVlKHBvaW50ZXIpOw0KK30NCitzdGF0aWMgdm9pZCAgRml4ZWRQdXJnZShGWE1FTV9TeXN0ZW1NZ3IqIHBNZ3IpDQorew0KKyAgICAoKENGWE1FTV9GaXhlZE1nciopcE1nci0+dXNlciktPlB1cmdlKCk7DQorfQ0KK3N0YXRpYyB2b2lkIEZpeGVkQ29sbGVjdEFsbChGWE1FTV9TeXN0ZW1NZ3IqIHBNZ3IpDQorew0KKyAgICAoKENGWE1FTV9GaXhlZE1nciopcE1nci0+dXNlciktPkZyZWVBbGwoKTsNCit9DQorI2RlZmluZSBGSVhFRE1FTV9NSU5JTVVNU0laRQkoMTAyNCAqIDEwMjQgKiA4KQ0KK0ZYTUVNX0ZveGl0TWdyKiBGWE1FTV9DcmVhdGVNZW1vcnlNZ3Ioc2l6ZV90IHNpemUsIEZYX0JPT0wgZXh0ZW5zaWJsZSkNCit7DQorICAgIGlmIChzaXplIDwgRklYRURNRU1fTUlOSU1VTVNJWkUpIHsNCisgICAgICAgIHNpemUgPSBGSVhFRE1FTV9NSU5JTVVNU0laRTsNCisgICAgfQ0KKyAgICBGWF9MUFZPSUQgcE1lbW9yeSA9IG1hbGxvYyhzaXplKTsNCisgICAgaWYgKCFwTWVtb3J5KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRml4ZWRNZ3JfUHJveHkqIHBQcm94eSA9IChDRml4ZWRNZ3JfUHJveHkqKXBNZW1vcnk7DQorICAgIHNpemVfdCBvZmZzZXRTaXplID0gKHNpemVvZihDRml4ZWRNZ3JfUHJveHkpICsgMTUpIC8gMTYgKiAxNjsNCisgICAgRlhNRU1fRm94aXRNZ3IqIHBGb3hpdE1nciA9IHBQcm94eS0+SW5pdGlhbGl6ZSgoRlhfTFBCWVRFKXBQcm94eSArIG9mZnNldFNpemUsIHNpemUgLSBvZmZzZXRTaXplLCBleHRlbnNpYmxlKTsNCisgICAgaWYgKCFwRm94aXRNZ3IpIHsNCisgICAgICAgIGZyZWUocE1lbW9yeSk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBnX3BEZWZGb3hpdE1nciA9IChDRlhfTWVtb3J5TWdyKilwRm94aXRNZ3I7DQorICAgIGdfcERlZkZveGl0TWdyLT5tX3BFeHRlcm5hbE1lbW9yeSA9IHBNZW1vcnk7DQorICAgIHJldHVybiBwRm94aXRNZ3I7DQorfQ0KK0ZYTUVNX0ZveGl0TWdyKiBGWE1FTV9DcmVhdGVGaXhlZE1ncih2b2lkKiBwTWVtb3J5LCBzaXplX3Qgc2l6ZSwgRlhNRU1fU3lzdGVtTWdyMiogcFN5c3RlbU1ncikNCit7DQorICAgIGlmIChwTWVtb3J5ID09IE5VTEwgfHwgc2l6ZSA8IEZYX0ZJWEVETUVNX1BBR0VTSVpFKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoIXBTeXN0ZW1NZ3IgJiYgc2l6ZSA+PSBGSVhFRE1FTV9QUk9YWVNJWkVfMSkgew0KKyAgICAgICAgQ0ZpeGVkTWdyX1Byb3h5KiBwUHJveHkgPSAoQ0ZpeGVkTWdyX1Byb3h5KilwTWVtb3J5Ow0KKyAgICAgICAgc2l6ZV90IG9mZnNldFNpemUgPSAoc2l6ZW9mKENGaXhlZE1ncl9Qcm94eSkgKyAxNSkgLyAxNiAqIDE2Ow0KKyAgICAgICAgcmV0dXJuIHBQcm94eS0+SW5pdGlhbGl6ZSgoRlhfTFBCWVRFKXBQcm94eSArIG9mZnNldFNpemUsIHNpemUgLSBvZmZzZXRTaXplLCBGQUxTRSk7DQorICAgIH0NCisgICAgQ0ZYTUVNX0ZpeGVkTWdyKiBwSGVhZGVyID0gKENGWE1FTV9GaXhlZE1nciopcE1lbW9yeTsNCisgICAgcEhlYWRlci0+SW5pdGlhbGl6ZShzaXplKTsNCisgICAgcEhlYWRlci0+bV9wRXh0ZW5kZXIgPSBwU3lzdGVtTWdyOw0KKyAgICBDRlhfTWVtb3J5TWdyKiBwID0gKENGWF9NZW1vcnlNZ3IqKXBIZWFkZXItPkFsbG9jKHNpemVvZihDRlhfTWVtb3J5TWdyKSk7DQorICAgIGlmIChwID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHAtPkluaXQoJnBIZWFkZXItPm1fU3lzdGVtTWdyKTsNCisgICAgcmV0dXJuIChGWE1FTV9Gb3hpdE1nciopcDsNCit9DQorc2l6ZV90IEZYTUVNX0dldEJsb2NrU2l6ZUluRml4ZWRNZ3IoRlhNRU1fRm94aXRNZ3IqIHBGb3hpdE1nciwgdm9pZCogcHRyKQ0KK3sNCisgICAgcmV0dXJuIHBGb3hpdE1nciA/ICgoQ0ZYTUVNX0ZpeGVkTWdyKikoKENGWF9NZW1vcnlNZ3IqKXBGb3hpdE1nciktPm1fcFN5c3RlbU1nci0+dXNlciktPkdldFNpemUocHRyKSA6IDA7DQorfQ0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCitjb25zdCBGWF9NRU1DT05GSUcgZ19Qcm94eU1ncl9NZW1Db25maWdzWzZdID0gew0KKyAgICB7MSwgICAgICAyLCAgICAgIDQsICAgICAgMCwgICAgICAyLCAgICAgIDIsICAgMiwgICAgICAgMCwgICAgICAgMCwgICAgIDB9LA0KKyAgICB7MSwgICAgICA0LCAgICAgIDgsICAgICAgMCwgICAgICAyLCAgICAgIDIsICAgMiwgICAgICAgMCwgICAgICAgMCwgICAgIDB9LA0KKyAgICB7MSwgICAgICA0LCAgICAgIDE2LCAgICAgNCwgICAgICA4LCAgICAgIDgsICAgMiwgICAgICAgMSwgICAgICAgMTYsICAgIDE2fSwNCisgICAgezEsICAgICAgOCwgICAgICAyNCwgICAgIDQsICAgICAgMTIsICAgICAxMiwgIDQsICAgICAgIDIsICAgICAgIDMyLCAgICAxNn0sDQorICAgIHsxLCAgICAgIDgsICAgICAgMjQsICAgICA4LCAgICAgIDE2LCAgICAgMTYsICA0LCAgICAgICAyLCAgICAgICA2NCwgICAgMzJ9LA0KKyAgICB7MSwgICAgICA4LCAgICAgIDI0LCAgICAgOCwgICAgICAyNCwgICAgIDMyLCAgNCwgICAgICAgMiwgICAgICAgMTI4LCAgIDY0fSwNCit9Ow0KK2NvbnN0IEZYX01FTUNPTkZJRyoJRml4ZWRNZ3JfR2V0Q29uZmlnKHNpemVfdCBuU2l6ZSkNCit7DQorICAgIGludCBpbmRleCA9IDU7DQorICAgIGlmIChuU2l6ZSA8PSBGSVhFRE1FTV9QUk9YWVNJWkVfMCkgew0KKyAgICAgICAgaW5kZXggPSAwOw0KKyAgICB9IGVsc2UgaWYgKG5TaXplIDw9IEZJWEVETUVNX1BST1hZU0laRV8xKSB7DQorICAgICAgICBpbmRleCA9IDE7DQorICAgIH0gZWxzZSBpZiAoblNpemUgPD0gRklYRURNRU1fUFJPWFlTSVpFXzIpIHsNCisgICAgICAgIGluZGV4ID0gMjsNCisgICAgfSBlbHNlIGlmIChuU2l6ZSA8PSBGSVhFRE1FTV9QUk9YWVNJWkVfMykgew0KKyAgICAgICAgaW5kZXggPSAzOw0KKyAgICB9IGVsc2UgaWYgKG5TaXplIDw9IEZJWEVETUVNX1BST1hZU0laRV80KSB7DQorICAgICAgICBpbmRleCA9IDQ7DQorICAgIH0NCisgICAgcmV0dXJuICZnX1Byb3h5TWdyX01lbUNvbmZpZ3NbaW5kZXhdOw0KK30NCitGWE1FTV9Gb3hpdE1nciogQ0ZpeGVkTWdyX1Byb3h5OjpJbml0aWFsaXplKEZYX0xQVk9JRCBwQnVmZmVyLCBzaXplX3QgblNpemUsIEZYX0JPT0wgYkV4dGVuc2libGUpDQorew0KKyAgICBGWFNZU19hc3NlcnQocEJ1ZmZlciAhPSBOVUxMICYmIG5TaXplID49IEZJWEVETUVNX1BST1hZU0laRV8xIC0gc2l6ZW9mKENGaXhlZE1ncl9Qcm94eSkpOw0KKyAgICBGWE1FTV9TZXRDb25maWcoRml4ZWRNZ3JfR2V0Q29uZmlnKG5TaXplKSk7DQorICAgIG1fU3lzdGVtTWdyLk1vcmUgPSAmQ0ZpeGVkTWdyX1Byb3h5OjpDb21tb25fTW9yZTsNCisgICAgbV9TeXN0ZW1NZ3IuRnJlZSA9ICZDRml4ZWRNZ3JfUHJveHk6OkNvbW1vbl9GcmVlOw0KKyAgICBtX3BGaXhlZFBhZ2UgPSAoQ0ZYTUVNX1BhZ2UqKSgoRlhfTFBCWVRFKXBCdWZmZXIgKyBGSVhFRE1FTV9QUk9YWVNJWkVfMCk7DQorICAgIG1fcEZpeGVkUGFnZS0+SW5pdGlhbGl6ZShuU2l6ZSAtIEZJWEVETUVNX1BST1hZU0laRV8wKTsNCisgICAgbV9wQnVmZmVyID0gcEJ1ZmZlcjsNCisgICAgbV9uU2l6ZSA9IG5TaXplOw0KKyAgICBtX2JFeHRlbnNpYmxlID0gYkV4dGVuc2libGU7DQorICAgIHJldHVybiBGWE1FTV9DcmVhdGVGaXhlZE1ncihwQnVmZmVyLCBGSVhFRE1FTV9QUk9YWVNJWkVfMCwgJm1fU3lzdGVtTWdyKTsNCit9DQorRlhfQk9PTCBDRml4ZWRNZ3JfUHJveHk6OkNvbW1vbl9Nb3JlKEZYTUVNX1N5c3RlbU1ncjIqIHBNZ3IsIHNpemVfdCBhbGxvY19zaXplLCB2b2lkKiogbmV3X21lbW9yeSwgc2l6ZV90KiBuZXdfc2l6ZSkNCit7DQorICAgIENGaXhlZE1ncl9Qcm94eSogcFByb3h5TWdyID0gKENGaXhlZE1ncl9Qcm94eSopcE1ncjsNCisgICAgRlhTWVNfYXNzZXJ0KHBQcm94eU1nciAhPSBOVUxMICYmIHBQcm94eU1nci0+bV9wRml4ZWRQYWdlICE9IE5VTEwpOw0KKyAgICAqbmV3X3NpemUgPSBhbGxvY19zaXplOw0KKyAgICAqbmV3X21lbW9yeSA9IHBQcm94eU1nci0+bV9wRml4ZWRQYWdlLT5BbGxvYyhhbGxvY19zaXplKTsNCisgICAgaWYgKCpuZXdfbWVtb3J5ID09IE5VTEwgJiYgcFByb3h5TWdyLT5tX2JFeHRlbnNpYmxlKSB7DQorICAgICAgICAqbmV3X21lbW9yeSA9IG1hbGxvYyhhbGxvY19zaXplKTsNCisgICAgfQ0KKyAgICByZXR1cm4gKm5ld19tZW1vcnkgIT0gTlVMTDsNCit9DQordm9pZCBDRml4ZWRNZ3JfUHJveHk6OkNvbW1vbl9GcmVlKEZYTUVNX1N5c3RlbU1ncjIqIHBNZ3IsIHZvaWQqIG1lbW9yeSkNCit7DQorICAgIENGaXhlZE1ncl9Qcm94eSogcFByb3h5TWdyID0gKENGaXhlZE1ncl9Qcm94eSopcE1ncjsNCisgICAgRlhTWVNfYXNzZXJ0KHBQcm94eU1nciAhPSBOVUxMICYmIHBQcm94eU1nci0+bV9wRml4ZWRQYWdlICE9IE5VTEwpOw0KKyAgICBpZiAobWVtb3J5ID4gcFByb3h5TWdyLT5tX3BCdWZmZXIgJiYgbWVtb3J5IDwgKEZYX0xQQllURSlwUHJveHlNZ3ItPm1fcEJ1ZmZlciArIHBQcm94eU1nci0+bV9uU2l6ZSkgew0KKyAgICAgICAgcFByb3h5TWdyLT5tX3BGaXhlZFBhZ2UtPkZyZWUobWVtb3J5KTsNCisgICAgfSBlbHNlIGlmIChwUHJveHlNZ3ItPm1fYkV4dGVuc2libGUpIHsNCisgICAgICAgIGZyZWUobWVtb3J5KTsNCisgICAgfQ0KK30NCit2b2lkIENGWE1FTV9QYWdlOjpJbml0aWFsaXplKHNpemVfdCBzaXplKQ0KK3sNCisgICAgQ0ZYTUVNX0Jsb2NrICpwRmlyc3RCbG9jayA9IChDRlhNRU1fQmxvY2sqKSh0aGlzICsgMSk7DQorICAgIG1fbkF2YWlsU2l6ZSA9IHNpemUgLSBzaXplb2YoQ0ZYTUVNX1BhZ2UpIC0gc2l6ZW9mKENGWE1FTV9CbG9jayk7DQorICAgIHBGaXJzdEJsb2NrLT5tX25CbG9ja1NpemUgPSBtX25BdmFpbFNpemU7DQorICAgIHBGaXJzdEJsb2NrLT5tX3BOZXh0QmxvY2sgPSBOVUxMOw0KKyAgICBtX0F2YWlsSGVhZC5tX25CbG9ja1NpemUgPSBtX25BdmFpbFNpemU7DQorICAgIG1fQXZhaWxIZWFkLm1fcE5leHRCbG9jayA9IHBGaXJzdEJsb2NrOw0KKyAgICBtX3BMaW1pdFBvcyA9IChDRlhNRU1fQmxvY2sqKSgoRlhfTFBCWVRFKXRoaXMgKyBzaXplKTsNCit9DQorRlhfTFBWT0lEIENGWE1FTV9QYWdlOjpBbGxvYyhDRlhNRU1fQmxvY2sqIHBQcmV2QmxvY2ssIENGWE1FTV9CbG9jayogcE5leHRCbG9jaywgc2l6ZV90IHNpemUsIHNpemVfdCBvbGRzaXplKQ0KK3sNCisgICAgc2l6ZV90IGdhcCA9IHBOZXh0QmxvY2stPm1fbkJsb2NrU2l6ZSAtIHNpemU7DQorICAgIGlmIChnYXAgPD0gNjQgKyBzaXplb2YoQ0ZYTUVNX0Jsb2NrKSkgew0KKyAgICAgICAgcFByZXZCbG9jay0+bV9wTmV4dEJsb2NrID0gcE5leHRCbG9jay0+bV9wTmV4dEJsb2NrOw0KKyAgICAgICAgbV9uQXZhaWxTaXplIC09IHBOZXh0QmxvY2stPm1fbkJsb2NrU2l6ZTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fbkF2YWlsU2l6ZSAtPSBzaXplICsgc2l6ZW9mKENGWE1FTV9CbG9jayk7DQorICAgICAgICBwTmV4dEJsb2NrLT5tX25CbG9ja1NpemUgPSBzaXplOw0KKyAgICAgICAgQ0ZYTUVNX0Jsb2NrICpwTmV3QmxvY2sgPSAoQ0ZYTUVNX0Jsb2NrKikoKEZYX0xQQllURSkocE5leHRCbG9jayArIDEpICsgc2l6ZSk7DQorICAgICAgICBwTmV3QmxvY2stPm1fbkJsb2NrU2l6ZSA9IGdhcCAtIHNpemVvZihDRlhNRU1fQmxvY2spOw0KKyAgICAgICAgcE5ld0Jsb2NrLT5tX3BOZXh0QmxvY2sgPSBwTmV4dEJsb2NrLT5tX3BOZXh0QmxvY2s7DQorICAgICAgICBwUHJldkJsb2NrLT5tX3BOZXh0QmxvY2sgPSBwTmV3QmxvY2s7DQorICAgIH0NCisgICAgcmV0dXJuIChGWF9MUFZPSUQpKHBOZXh0QmxvY2sgKyAxKTsNCit9DQorRlhfTFBWT0lEIENGWE1FTV9QYWdlOjpBbGxvYyhzaXplX3Qgc2l6ZSkNCit7DQorICAgIHNpemVfdCBvbGRzaXplID0gc2l6ZTsNCisjaWYgX0ZYX1dPUkRTSVpFXyA9PSBfRlhfVzY0Xw0KKyAgICBzaXplID0gKHNpemUgKyAzMSkgLyAzMiAqIDMyOw0KKyNlbHNlDQorICAgIHNpemUgPSAoc2l6ZSArIDcpIC8gOCAqIDg7DQorI2VuZGlmDQorICAgIGlmIChtX25BdmFpbFNpemUgPCBzaXplKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhNRU1fQmxvY2sgKnBOZXh0QmxvY2s7DQorICAgIENGWE1FTV9CbG9jayAqcFByZXZCbG9jayA9ICZtX0F2YWlsSGVhZDsNCisgICAgd2hpbGUgKFRSVUUpIHsNCisgICAgICAgIHBOZXh0QmxvY2sgPSBwUHJldkJsb2NrLT5tX3BOZXh0QmxvY2s7DQorICAgICAgICBpZiAoIXBOZXh0QmxvY2spIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwTmV4dEJsb2NrLT5tX25CbG9ja1NpemUgPj0gc2l6ZSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFByZXZCbG9jayA9IHBOZXh0QmxvY2s7DQorICAgIH0NCisgICAgcmV0dXJuIEFsbG9jKHBQcmV2QmxvY2ssIHBOZXh0QmxvY2ssIHNpemUsIG9sZHNpemUpOw0KK30NCitGWF9MUFZPSUQgQ0ZYTUVNX1BhZ2U6OlJlYWxsb2MoRlhfTFBWT0lEIHAsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkNCit7DQorICAgIEZYU1lTX2Fzc2VydChwID4gKEZYX0xQVk9JRCl0aGlzICYmIHAgPCAoRlhfTFBWT0lEKW1fcExpbWl0UG9zKTsNCisgICAgc2l6ZV90IG9sZG5ld1NpemUgPSBuZXdTaXplOw0KKyNpZiBfRlhfV09SRFNJWkVfID09IF9GWF9XNjRfDQorICAgIG5ld1NpemUgPSAobmV3U2l6ZSArIDMxKSAvIDMyICogMzI7DQorI2Vsc2UNCisgICAgbmV3U2l6ZSA9IChuZXdTaXplICsgNykgLyA4ICogODsNCisjZW5kaWYNCisgICAgQ0ZYTUVNX0Jsb2NrICpwUHJldkJsb2NrID0gJm1fQXZhaWxIZWFkOw0KKyAgICBDRlhNRU1fQmxvY2sgKnBOZXh0QmxvY2ssICpwUHJldlByZXY7DQorICAgIENGWE1FTV9CbG9jayAqcEJsb2NrID0gKENGWE1FTV9CbG9jayopcCAtIDE7DQorICAgIHBQcmV2UHJldiA9IE5VTEw7DQorICAgIHdoaWxlIChUUlVFKSB7DQorICAgICAgICBwTmV4dEJsb2NrID0gcFByZXZCbG9jay0+bV9wTmV4dEJsb2NrOw0KKyAgICAgICAgaWYgKHBOZXh0QmxvY2sgPT0gTlVMTCB8fCBwTmV4dEJsb2NrID4gcEJsb2NrKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFByZXZCbG9jayAhPSAmbV9BdmFpbEhlYWQgJiYgKEZYX0xQQllURSlwTmV4dEJsb2NrID09IChGWF9MUEJZVEUpKHBQcmV2QmxvY2sgKyAxKSArIHBQcmV2QmxvY2stPm1fbkJsb2NrU2l6ZSkgew0KKyAgICAgICAgICAgIG1fbkF2YWlsU2l6ZSArPSBzaXplb2YoQ0ZYTUVNX0Jsb2NrKTsNCisgICAgICAgICAgICBwUHJldkJsb2NrLT5tX25CbG9ja1NpemUgKz0gcE5leHRCbG9jay0+bV9uQmxvY2tTaXplICsgc2l6ZW9mKENGWE1FTV9CbG9jayk7DQorICAgICAgICAgICAgcFByZXZCbG9jay0+bV9wTmV4dEJsb2NrID0gcE5leHRCbG9jay0+bV9wTmV4dEJsb2NrOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwUHJldlByZXYgPSBwUHJldkJsb2NrOw0KKyAgICAgICAgICAgIHBQcmV2QmxvY2sgPSBwTmV4dEJsb2NrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwTmV4dEJsb2NrKSB7DQorICAgICAgICBDRlhNRU1fQmxvY2sqIHBDdXJCbG9jayA9IHBOZXh0QmxvY2stPm1fcE5leHRCbG9jazsNCisgICAgICAgIHdoaWxlICgoRlhfTFBCWVRFKXBDdXJCbG9jayA9PSAoRlhfTFBCWVRFKShwTmV4dEJsb2NrICsgMSkgKyBwTmV4dEJsb2NrLT5tX25CbG9ja1NpemUpIHsNCisgICAgICAgICAgICBtX25BdmFpbFNpemUgKz0gc2l6ZW9mKENGWE1FTV9CbG9jayk7DQorICAgICAgICAgICAgcE5leHRCbG9jay0+bV9uQmxvY2tTaXplICs9IHBDdXJCbG9jay0+bV9uQmxvY2tTaXplICsgc2l6ZW9mKENGWE1FTV9CbG9jayk7DQorICAgICAgICAgICAgcEN1ckJsb2NrID0gcEN1ckJsb2NrLT5tX3BOZXh0QmxvY2s7DQorICAgICAgICAgICAgcE5leHRCbG9jay0+bV9wTmV4dEJsb2NrID0gcEN1ckJsb2NrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHNpemVfdCBzaXplID0gMDsNCisgICAgRlhfRFdPUkQgZHdGbGFncyA9IDA7DQorICAgIGlmIChwUHJldkJsb2NrICE9ICZtX0F2YWlsSGVhZCAmJiAoRlhfTFBCWVRFKXBCbG9jayA9PSAoRlhfTFBCWVRFKShwUHJldkJsb2NrICsgMSkgKyBwUHJldkJsb2NrLT5tX25CbG9ja1NpemUpIHsNCisgICAgICAgIHNpemUgKz0gcFByZXZCbG9jay0+bV9uQmxvY2tTaXplICsgb2xkU2l6ZSArIHNpemVvZihDRlhNRU1fQmxvY2spOw0KKyAgICAgICAgZHdGbGFncyB8PSAweDEwOw0KKyAgICB9DQorICAgIGlmIChwTmV4dEJsb2NrICYmIChGWF9MUEJZVEUpcE5leHRCbG9jayA9PSAoRlhfTFBCWVRFKXAgKyBvbGRTaXplKSB7DQorICAgICAgICBzaXplICs9IHBOZXh0QmxvY2stPm1fbkJsb2NrU2l6ZSArIHNpemVvZihDRlhNRU1fQmxvY2spOw0KKyAgICAgICAgZHdGbGFncyB8PSAweDAxOw0KKyAgICB9DQorICAgIGlmIChzaXplID49IG5ld1NpemUpIHsNCisgICAgICAgIG1fbkF2YWlsU2l6ZSArPSBwQmxvY2stPm1fbkJsb2NrU2l6ZTsNCisgICAgICAgIENGWE1FTV9CbG9jayogcEN1ckJsb2NrID0gcEJsb2NrOw0KKyAgICAgICAgaWYgKGR3RmxhZ3MgJiAweDEwKSB7DQorICAgICAgICAgICAgcEN1ckJsb2NrID0gcFByZXZCbG9jazsNCisgICAgICAgICAgICBtX25BdmFpbFNpemUgKz0gc2l6ZW9mKENGWE1FTV9CbG9jayk7DQorICAgICAgICAgICAgcEN1ckJsb2NrLT5tX25CbG9ja1NpemUgKz0gcEJsb2NrLT5tX25CbG9ja1NpemUgKyBzaXplb2YoQ0ZYTUVNX0Jsb2NrKTsNCisgICAgICAgICAgICBwUHJldkJsb2NrID0gcFByZXZQcmV2Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGR3RmxhZ3MgJiAweDAxKSB7DQorICAgICAgICAgICAgbV9uQXZhaWxTaXplICs9IHNpemVvZihDRlhNRU1fQmxvY2spOw0KKyAgICAgICAgICAgIHBDdXJCbG9jay0+bV9uQmxvY2tTaXplICs9IHBOZXh0QmxvY2stPm1fbkJsb2NrU2l6ZSArIHNpemVvZihDRlhNRU1fQmxvY2spOw0KKyAgICAgICAgICAgIHBDdXJCbG9jay0+bV9wTmV4dEJsb2NrID0gcE5leHRCbG9jay0+bV9wTmV4dEJsb2NrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBDdXJCbG9jayAhPSBwQmxvY2spIHsNCisgICAgICAgICAgICBGWFNZU19tZW1tb3ZlMzIoKEZYX0xQVk9JRCkocEN1ckJsb2NrICsgMSksIHAsIG9sZFNpemUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEFsbG9jKHBQcmV2QmxvY2ssIHBDdXJCbG9jaywgbmV3U2l6ZSwgb2xkbmV3U2l6ZSk7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK3ZvaWQgQ0ZYTUVNX1BhZ2U6OkZyZWUoRlhfTFBWT0lEIHApDQorew0KKyAgICBGWFNZU19hc3NlcnQocCA+IChGWF9MUFZPSUQpdGhpcyAmJiBwIDwgKEZYX0xQVk9JRCltX3BMaW1pdFBvcyk7DQorICAgIENGWE1FTV9CbG9jayAqcFByZXZCbG9jayA9ICZtX0F2YWlsSGVhZDsNCisgICAgQ0ZYTUVNX0Jsb2NrICpwTmV4dEJsb2NrOw0KKyAgICBDRlhNRU1fQmxvY2sgKnBCbG9jayA9IChDRlhNRU1fQmxvY2sqKXAgLSAxOw0KKyAgICBtX25BdmFpbFNpemUgKz0gcEJsb2NrLT5tX25CbG9ja1NpemU7DQorICAgIHdoaWxlIChUUlVFKSB7DQorICAgICAgICBwTmV4dEJsb2NrID0gcFByZXZCbG9jay0+bV9wTmV4dEJsb2NrOw0KKyAgICAgICAgaWYgKHBOZXh0QmxvY2sgPT0gTlVMTCB8fCBwTmV4dEJsb2NrID4gcEJsb2NrKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFByZXZCbG9jayAhPSAmbV9BdmFpbEhlYWQgJiYgKEZYX0xQQllURSlwTmV4dEJsb2NrID09IChGWF9MUEJZVEUpKHBQcmV2QmxvY2sgKyAxKSArIHBQcmV2QmxvY2stPm1fbkJsb2NrU2l6ZSkgew0KKyAgICAgICAgICAgIG1fbkF2YWlsU2l6ZSArPSBzaXplb2YoQ0ZYTUVNX0Jsb2NrKTsNCisgICAgICAgICAgICBwUHJldkJsb2NrLT5tX25CbG9ja1NpemUgKz0gcE5leHRCbG9jay0+bV9uQmxvY2tTaXplICsgc2l6ZW9mKENGWE1FTV9CbG9jayk7DQorICAgICAgICAgICAgcFByZXZCbG9jay0+bV9wTmV4dEJsb2NrID0gcE5leHRCbG9jay0+bV9wTmV4dEJsb2NrOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwUHJldkJsb2NrID0gcE5leHRCbG9jazsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB3aGlsZSAoKEZYX0xQQllURSlwTmV4dEJsb2NrID09IChGWF9MUEJZVEUpKHBCbG9jayArIDEpICsgcEJsb2NrLT5tX25CbG9ja1NpemUpIHsNCisgICAgICAgIG1fbkF2YWlsU2l6ZSArPSBzaXplb2YoQ0ZYTUVNX0Jsb2NrKTsNCisgICAgICAgIHBCbG9jay0+bV9uQmxvY2tTaXplICs9IHBOZXh0QmxvY2stPm1fbkJsb2NrU2l6ZSArIHNpemVvZihDRlhNRU1fQmxvY2spOw0KKyAgICAgICAgcE5leHRCbG9jayA9IHBOZXh0QmxvY2stPm1fcE5leHRCbG9jazsNCisgICAgfQ0KKyAgICBwQmxvY2stPm1fcE5leHRCbG9jayA9IHBOZXh0QmxvY2s7DQorICAgIGlmIChwUHJldkJsb2NrICE9ICZtX0F2YWlsSGVhZCAmJiAoRlhfTFBCWVRFKXBCbG9jayA9PSAoRlhfTFBCWVRFKShwUHJldkJsb2NrICsgMSkgKyBwUHJldkJsb2NrLT5tX25CbG9ja1NpemUpIHsNCisgICAgICAgIG1fbkF2YWlsU2l6ZSArPSBzaXplb2YoQ0ZYTUVNX0Jsb2NrKTsNCisgICAgICAgIHBQcmV2QmxvY2stPm1fbkJsb2NrU2l6ZSArPSBwQmxvY2stPm1fbkJsb2NrU2l6ZSArIHNpemVvZihDRlhNRU1fQmxvY2spOw0KKyAgICAgICAgcFByZXZCbG9jay0+bV9wTmV4dEJsb2NrID0gcEJsb2NrLT5tX3BOZXh0QmxvY2s7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWFNZU19hc3NlcnQocFByZXZCbG9jayAhPSBwQmxvY2spOw0KKyAgICAgICAgcFByZXZCbG9jay0+bV9wTmV4dEJsb2NrID0gcEJsb2NrOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYTUVNX1BhZ2VzOjpJbml0aWFsaXplKEZYX0xQQllURSBwU3RhcnQsIHNpemVfdCBwYWdlU2l6ZSwgc2l6ZV90IHBhZ2VzKQ0KK3sNCisgICAgbV9wU3RhcnRQYWdlID0gbV9wQ3VyUGFnZSA9IChDRlhNRU1fUGFnZSopcFN0YXJ0Ow0KKyAgICBtX25QYWdlU2l6ZSA9IHBhZ2VTaXplOw0KKyAgICBmb3IgKHNpemVfdCBuID0gMDsgbiA8IHBhZ2VzOyBuKyspIHsNCisgICAgICAgICgoQ0ZYTUVNX1BhZ2UqKXBTdGFydCktPkluaXRpYWxpemUocGFnZVNpemUpOw0KKyAgICAgICAgcFN0YXJ0ICs9IHBhZ2VTaXplOw0KKyAgICB9DQorICAgIG1fcExpbWl0UG9zID0gKENGWE1FTV9QYWdlKilwU3RhcnQ7DQorfQ0KK0ZYX0JPT0wgQ0ZYTUVNX1BhZ2VzOjpJc0VtcHR5KCkgY29uc3QNCit7DQorICAgIGlmIChtX3BTdGFydFBhZ2UgPj0gbV9wTGltaXRQb3MpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX0xQQllURSBwUGFnZSA9IChGWF9MUEJZVEUpbV9wU3RhcnRQYWdlOw0KKyAgICB3aGlsZSAocFBhZ2UgPCAoRlhfTFBCWVRFKW1fcExpbWl0UG9zKSB7DQorICAgICAgICBpZiAoISgoQ0ZYTUVNX1BhZ2UqKXBQYWdlKS0+SXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFBhZ2UgKz0gbV9uUGFnZVNpemU7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0xQVk9JRCBDRlhNRU1fUGFnZXM6OkFsbG9jKHNpemVfdCBzaXplKQ0KK3sNCisgICAgQ0ZYTUVNX1BhZ2UgKnBDdXJQYWdlID0gbV9wQ3VyUGFnZTsNCisgICAgZG8gew0KKyAgICAgICAgRlhfTFBWT0lEIHAgPSBtX3BDdXJQYWdlLT5BbGxvYyhzaXplKTsNCisgICAgICAgIGlmIChwKSB7DQorICAgICAgICAgICAgcmV0dXJuIHA7DQorICAgICAgICB9DQorICAgICAgICBtX3BDdXJQYWdlID0gKENGWE1FTV9QYWdlKikoKEZYX0xQQllURSltX3BDdXJQYWdlICsgbV9uUGFnZVNpemUpOw0KKyAgICAgICAgaWYgKG1fcEN1clBhZ2UgPT0gbV9wTGltaXRQb3MpIHsNCisgICAgICAgICAgICBtX3BDdXJQYWdlID0gbV9wU3RhcnRQYWdlOw0KKyAgICAgICAgfQ0KKyAgICB9IHdoaWxlIChtX3BDdXJQYWdlICE9IHBDdXJQYWdlKTsNCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0ZYX0xQVk9JRCBDRlhNRU1fUGFnZXM6OlJlYWxsb2MoRlhfTFBWT0lEIHAsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkNCit7DQorICAgIEZYU1lTX2Fzc2VydCAocCA+IChGWF9MUFZPSUQpbV9wU3RhcnRQYWdlICYmIHAgPCAoRlhfTFBWT0lEKW1fcExpbWl0UG9zKTsNCisgICAgQ0ZYTUVNX1BhZ2UqIHBQYWdlID0gKENGWE1FTV9QYWdlKikoKEZYX0xQQllURSltX3BTdGFydFBhZ2UgKyAoKEZYX0xQQllURSlwIC0gKEZYX0xQQllURSltX3BTdGFydFBhZ2UpIC8gbV9uUGFnZVNpemUgKiBtX25QYWdlU2l6ZSk7DQorICAgIHJldHVybiBwUGFnZS0+UmVhbGxvYyhwLCBvbGRTaXplLCBuZXdTaXplKTsNCit9DQordm9pZCBDRlhNRU1fUGFnZXM6OkZyZWUoRlhfTFBWT0lEIHApDQorew0KKyAgICBGWFNZU19hc3NlcnQgKHAgPiAoRlhfTFBWT0lEKW1fcFN0YXJ0UGFnZSAmJiBwIDwgKEZYX0xQVk9JRCltX3BMaW1pdFBvcyk7DQorICAgIENGWE1FTV9QYWdlKiBwUGFnZSA9IChDRlhNRU1fUGFnZSopKChGWF9MUEJZVEUpbV9wU3RhcnRQYWdlICsgKChGWF9MUEJZVEUpcCAtIChGWF9MUEJZVEUpbV9wU3RhcnRQYWdlKSAvIG1fblBhZ2VTaXplICogbV9uUGFnZVNpemUpOw0KKyAgICBwUGFnZS0+RnJlZShwKTsNCit9DQordm9pZCBDRlhNRU1fUG9vbDo6SW5pdGlhbGl6ZShjb25zdCBGWF9NRU1DT05GSUcqIHBNZW1Db25maWcsIHNpemVfdCBzaXplLCBzaXplX3QgcGFnZU51bThCeXRlcywgc2l6ZV90IHBhZ2VOdW0xNkJ5dGVzLCBzaXplX3QgcGFnZU51bTMyQnl0ZXMsIHNpemVfdCBwYWdlTnVtTWlkKQ0KK3sNCisgICAgbV9wUHJldlBvb2wgPSBOVUxMOw0KKyAgICBtX3BOZXh0UG9vbCA9IE5VTEw7DQorICAgIG1fYkFsb25lID0gRkFMU0U7DQorICAgIEZYX0xQQllURSBwUGFnZSA9IChGWF9MUEJZVEUpdGhpcyArIHNpemVvZihDRlhNRU1fUG9vbCk7DQorICAgIHNpemUgLT0gc2l6ZW9mKENGWE1FTV9Qb29sKTsNCisgICAgbV84Qnl0ZXNQYWdlcy5Jbml0aWFsaXplKHBQYWdlLCBwYWdlTnVtOEJ5dGVzKTsNCisgICAgcFBhZ2UgKz0gcGFnZU51bThCeXRlcyAqIEZYX0ZJWEVETUVNX1BBR0VTSVpFOw0KKyAgICBzaXplIC09IHBhZ2VOdW04Qnl0ZXMgKiBGWF9GSVhFRE1FTV9QQUdFU0laRTsNCisgICAgbV8xNkJ5dGVzUGFnZXMuSW5pdGlhbGl6ZShwUGFnZSwgcGFnZU51bTE2Qnl0ZXMpOw0KKyAgICBwUGFnZSArPSBwYWdlTnVtMTZCeXRlcyAqIEZYX0ZJWEVETUVNX1BBR0VTSVpFOw0KKyAgICBzaXplIC09IHBhZ2VOdW0xNkJ5dGVzICogRlhfRklYRURNRU1fUEFHRVNJWkU7DQorICAgIG1fMzJCeXRlc1BhZ2VzLkluaXRpYWxpemUocFBhZ2UsIHBhZ2VOdW0zMkJ5dGVzKTsNCisgICAgcFBhZ2UgKz0gcGFnZU51bTMyQnl0ZXMgKiBGWF9GSVhFRE1FTV9QQUdFU0laRTsNCisgICAgc2l6ZSAtPSBwYWdlTnVtMzJCeXRlcyAqIEZYX0ZJWEVETUVNX1BBR0VTSVpFOw0KKyAgICBtX01pZFBhZ2VzLkluaXRpYWxpemUocFBhZ2UsIHBNZW1Db25maWctPm5QYWdlU2l6ZV9NaWQgKiBGWF9GSVhFRE1FTV9QQUdFU0laRSwgcGFnZU51bU1pZCk7DQorICAgIHBQYWdlICs9IHBhZ2VOdW1NaWQgKiBwTWVtQ29uZmlnLT5uUGFnZVNpemVfTWlkICogRlhfRklYRURNRU1fUEFHRVNJWkU7DQorICAgIHNpemUgLT0gcGFnZU51bU1pZCAqIHBNZW1Db25maWctPm5QYWdlU2l6ZV9NaWQgKiBGWF9GSVhFRE1FTV9QQUdFU0laRTsNCisgICAgaWYgKHNpemUgPCBGWF9GSVhFRE1FTV9NSURCTE9DS1NJWkUpIHsNCisgICAgICAgIG1fcExhcmdlUGFnZSA9IE5VTEw7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BMYXJnZVBhZ2UgPSAoQ0ZYTUVNX1BhZ2UqKXBQYWdlOw0KKyAgICAgICAgbV9wTGFyZ2VQYWdlLT5Jbml0aWFsaXplKHNpemUpOw0KKyAgICB9DQorICAgIG1fcExpbWl0UG9zID0gcFBhZ2UgKyBzaXplOw0KK30NCitGWF9CT09MIENGWE1FTV9Qb29sOjpJc0VtcHR5KCkgY29uc3QNCit7DQorICAgIGlmICghbV84Qnl0ZXNQYWdlcy5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoIW1fMTZCeXRlc1BhZ2VzLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICghbV8zMkJ5dGVzUGFnZXMuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKCFtX01pZFBhZ2VzLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiAhbV9wTGFyZ2VQYWdlIHx8IG1fcExhcmdlUGFnZS0+SXNFbXB0eSgpOw0KK30NCitzaXplX3QgQ0ZYTUVNX1Bvb2w6OkdldFNpemUoRlhfTFBWT0lEIHApIGNvbnN0DQorew0KKyAgICBGWFNZU19hc3NlcnQocCA+IChGWF9MUFZPSUQpdGhpcyAmJiBwIDwgKEZYX0xQVk9JRCltX3BMaW1pdFBvcyk7DQorICAgIGlmIChwIDwgKEZYX0xQVk9JRCltXzhCeXRlc1BhZ2VzLm1fcExpbWl0UG9zKSB7DQorICAgICAgICByZXR1cm4gODsNCisgICAgfQ0KKyAgICBpZiAocCA8IChGWF9MUFZPSUQpbV8xNkJ5dGVzUGFnZXMubV9wTGltaXRQb3MpIHsNCisgICAgICAgIHJldHVybiAxNjsNCisgICAgfQ0KKyAgICBpZiAocCA8IChGWF9MUFZPSUQpbV8zMkJ5dGVzUGFnZXMubV9wTGltaXRQb3MpIHsNCisgICAgICAgIHJldHVybiAzMjsNCisgICAgfQ0KKyAgICByZXR1cm4gKChDRlhNRU1fQmxvY2sqKXAgLSAxKS0+bV9uQmxvY2tTaXplOw0KK30NCitGWF9MUFZPSUQgQ0ZYTUVNX1Bvb2w6OlJlYWxsb2MoRlhfTFBWT0lEIHAsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkNCit7DQorICAgIEZYU1lTX2Fzc2VydChwID4gKEZYX0xQVk9JRCl0aGlzICYmIHAgPCAoRlhfTFBWT0lEKW1fcExpbWl0UG9zKTsNCisgICAgaWYgKHAgPiAoRlhfTFBWT0lEKW1fMzJCeXRlc1BhZ2VzLm1fcExpbWl0UG9zKSB7DQorICAgICAgICBpZiAocCA8IChGWF9MUFZPSUQpbV9NaWRQYWdlcy5tX3BMaW1pdFBvcykgew0KKyAgICAgICAgICAgIHJldHVybiBtX01pZFBhZ2VzLlJlYWxsb2MocCwgb2xkU2l6ZSwgbmV3U2l6ZSk7DQorICAgICAgICB9IGVsc2UgaWYgKG1fcExhcmdlUGFnZSkgew0KKyAgICAgICAgICAgIHJldHVybiBtX3BMYXJnZVBhZ2UtPlJlYWxsb2MocCwgb2xkU2l6ZSwgbmV3U2l6ZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK3ZvaWQgQ0ZYTUVNX1Bvb2w6OkZyZWUoRlhfTFBWT0lEIHApDQorew0KKyAgICBGWFNZU19hc3NlcnQocCA+IChGWF9MUFZPSUQpdGhpcyAmJiBwIDwgKEZYX0xQVk9JRCltX3BMaW1pdFBvcyk7DQorICAgIGlmIChwIDwgKEZYX0xQVk9JRCltXzMyQnl0ZXNQYWdlcy5tX3BMaW1pdFBvcykgew0KKyAgICAgICAgaWYgKHAgPCAoRlhfTFBWT0lEKW1fOEJ5dGVzUGFnZXMubV9wTGltaXRQb3MpIHsNCisgICAgICAgICAgICBtXzhCeXRlc1BhZ2VzLkZyZWUocCk7DQorICAgICAgICB9IGVsc2UgaWYgKHAgPCAoRlhfTFBWT0lEKW1fMTZCeXRlc1BhZ2VzLm1fcExpbWl0UG9zKSB7DQorICAgICAgICAgICAgbV8xNkJ5dGVzUGFnZXMuRnJlZShwKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV8zMkJ5dGVzUGFnZXMuRnJlZShwKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfSBlbHNlIGlmIChwIDwgKEZYX0xQVk9JRCltX01pZFBhZ2VzLm1fcExpbWl0UG9zKSB7DQorICAgICAgICBtX01pZFBhZ2VzLkZyZWUocCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BMYXJnZVBhZ2UtPkZyZWUocCk7DQorICAgIH0NCit9DQordm9pZCBDRlhNRU1fRml4ZWRNZ3I6OkluaXRpYWxpemUoc2l6ZV90IHNpemUpDQorew0KKyAgICBtX01lbUNvbmZpZyA9IGdfTWVtQ29uZmlnOw0KKyAgICBGWFNZU19tZW1zZXQzMigmbV9TeXN0ZW1NZ3IsIDAsIHNpemVvZiBtX1N5c3RlbU1ncik7DQorICAgIG1fU3lzdGVtTWdyLkFsbG9jID0gRml4ZWRBbGxvYzsNCisgICAgbV9TeXN0ZW1NZ3IuQWxsb2NEZWJ1ZyA9IEZpeGVkQWxsb2NEZWJ1ZzsNCisgICAgbV9TeXN0ZW1NZ3IuRnJlZSA9IEZpeGVkRnJlZTsNCisgICAgbV9TeXN0ZW1NZ3IuUmVhbGxvYyA9IEZpeGVkUmVhbGxvYzsNCisgICAgbV9TeXN0ZW1NZ3IuUmVhbGxvY0RlYnVnID0gRml4ZWRSZWFsbG9jRGVidWc7DQorICAgIG1fU3lzdGVtTWdyLkNvbGxlY3RBbGwgPSBGaXhlZENvbGxlY3RBbGw7DQorICAgIG1fU3lzdGVtTWdyLlB1cmdlID0gRml4ZWRQdXJnZTsNCisgICAgbV9TeXN0ZW1NZ3IudXNlciA9IHRoaXM7DQorICAgIHNpemUgLT0gc2l6ZW9mKENGWE1FTV9GaXhlZE1ncik7DQorICAgIHNpemVfdCBuTWlkUGFnZXMgPSAwOw0KKyAgICBpZiAobV9NZW1Db25maWcublBhZ2VTaXplX01pZCkgew0KKyAgICAgICAgbk1pZFBhZ2VzID0gKHNpemUgLSAobV9NZW1Db25maWcublBhZ2VOdW1fSW5pdDggKyBtX01lbUNvbmZpZy5uUGFnZU51bV9Jbml0MTYgKyBtX01lbUNvbmZpZy5uUGFnZU51bV9Jbml0MzIpICogRlhfRklYRURNRU1fUEFHRVNJWkUpIC8gKG1fTWVtQ29uZmlnLm5QYWdlU2l6ZV9NaWQgKiBGWF9GSVhFRE1FTV9QQUdFU0laRSk7DQorICAgICAgICBpZiAobk1pZFBhZ2VzID4gbV9NZW1Db25maWcublBhZ2VOdW1fSW5pdE1pZCkgew0KKyAgICAgICAgICAgIG5NaWRQYWdlcyA9IG1fTWVtQ29uZmlnLm5QYWdlTnVtX0luaXRNaWQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgbV9GaXJzdFBvb2wuSW5pdGlhbGl6ZSgmbV9NZW1Db25maWcsIHNpemUsIG1fTWVtQ29uZmlnLm5QYWdlTnVtX0luaXQ4LCBtX01lbUNvbmZpZy5uUGFnZU51bV9Jbml0MTYsIG1fTWVtQ29uZmlnLm5QYWdlTnVtX0luaXQzMiwgbk1pZFBhZ2VzKTsNCit9DQorRlhfTFBWT0lEIENGWE1FTV9GaXhlZE1ncjo6QWxsb2MxNihDRlhNRU1fUG9vbCAqKnBwMzJQb29sLCBzaXplX3Qgc2l6ZSkNCit7DQorICAgIENGWE1FTV9Qb29sICpwUG9vbCA9ICZtX0ZpcnN0UG9vbDsNCisgICAgZG8gew0KKyAgICAgICAgQ0ZYTUVNXzE2Qnl0ZXNQYWdlcyAmcGFnZXMgPSBwUG9vbC0+bV8xNkJ5dGVzUGFnZXM7DQorICAgICAgICBpZiAocGFnZXMuSGFzRnJlZUJsb2NrKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gcGFnZXMuQWxsb2Moc2l6ZSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAocHAzMlBvb2wgJiYgcFBvb2wtPm1fMzJCeXRlc1BhZ2VzLkhhc0ZyZWVCbG9jaygpKSB7DQorICAgICAgICAgICAgKnBwMzJQb29sID0gcFBvb2w7DQorICAgICAgICB9DQorICAgICAgICBwUG9vbCA9IHBQb29sLT5tX3BOZXh0UG9vbDsNCisgICAgfSB3aGlsZShwUG9vbCk7DQorICAgIHJldHVybiBOVUxMOw0KK30NCitGWF9MUFZPSUQgQ0ZYTUVNX0ZpeGVkTWdyOjpBbGxvYzMyKHNpemVfdCBzaXplKQ0KK3sNCisgICAgaWYgKHNpemUgPD0gOCkgew0KKyAgICAgICAgQ0ZYTUVNXzhCeXRlc1BhZ2VzICZwYWdlcyA9IG1fRmlyc3RQb29sLm1fOEJ5dGVzUGFnZXM7DQorICAgICAgICBpZiAocGFnZXMuSGFzRnJlZUJsb2NrKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gcGFnZXMuQWxsb2Moc2l6ZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ0ZYTUVNX1Bvb2wgKnAzMkJ5dGVzUG9vbDsNCisgICAgaWYgKHNpemUgPD0gMTYpIHsNCisgICAgICAgIHAzMkJ5dGVzUG9vbCA9IE5VTEw7DQorICAgICAgICBGWF9MUFZPSUQgcCA9IEFsbG9jMTYoJnAzMkJ5dGVzUG9vbCwgc2l6ZSk7DQorICAgICAgICBpZiAocCkgew0KKyAgICAgICAgICAgIHJldHVybiBwOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcDMyQnl0ZXNQb29sID0gJm1fRmlyc3RQb29sOw0KKyAgICB9DQorICAgIHdoaWxlIChwMzJCeXRlc1Bvb2wpIHsNCisgICAgICAgIENGWE1FTV8zMkJ5dGVzUGFnZXMgJnBhZ2VzID0gcDMyQnl0ZXNQb29sLT5tXzMyQnl0ZXNQYWdlczsNCisgICAgICAgIGlmIChwYWdlcy5IYXNGcmVlQmxvY2soKSkgew0KKyAgICAgICAgICAgIHJldHVybiBwYWdlcy5BbGxvYyhzaXplKTsNCisgICAgICAgIH0NCisgICAgICAgIHAzMkJ5dGVzUG9vbCA9IHAzMkJ5dGVzUG9vbC0+bV9wTmV4dFBvb2w7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0ZYX0xQVk9JRCBDRlhNRU1fRml4ZWRNZ3I6OkFsbG9jU21hbGwoc2l6ZV90IHNpemUpDQorew0KKyAgICBGWF9MUFZPSUQgcCA9IEFsbG9jMzIoc2l6ZSk7DQorICAgIGlmIChwKSB7DQorICAgICAgICByZXR1cm4gcDsNCisgICAgfQ0KKyAgICBpZiAoIW1fcEV4dGVuZGVyKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBzaXplX3QgcmVxdWlyZWRTaXplID0gKG1fTWVtQ29uZmlnLm5QYWdlTnVtX01vcmUxNiArIG1fTWVtQ29uZmlnLm5QYWdlTnVtX01vcmUzMikgKiBGWF9GSVhFRE1FTV9QQUdFU0laRTsNCisgICAgaWYgKCFyZXF1aXJlZFNpemUpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGWE1FTV9Qb29sICpwTmV3UG9vbCA9IE5VTEw7DQorICAgIHJlcXVpcmVkU2l6ZSArPSBzaXplb2YoQ0ZYTUVNX1Bvb2wpOw0KKyAgICBzaXplX3QgbmV3U2l6ZSA9IHJlcXVpcmVkU2l6ZTsNCisgICAgaWYgKCFtX3BFeHRlbmRlci0+TW9yZShtX3BFeHRlbmRlciwgbmV3U2l6ZSwgKHZvaWQqKikmcE5ld1Bvb2wsICZuZXdTaXplKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgc2l6ZV90IG5NaWRQYWdlcyA9IDA7DQorICAgIGlmIChtX01lbUNvbmZpZy5uUGFnZVNpemVfTWlkKSB7DQorICAgICAgICBuTWlkUGFnZXMgPSAobmV3U2l6ZSAtIHJlcXVpcmVkU2l6ZSkgLyAobV9NZW1Db25maWcublBhZ2VTaXplX01pZCAqIEZYX0ZJWEVETUVNX1BBR0VTSVpFKTsNCisgICAgICAgIGlmIChuTWlkUGFnZXMgPiBtX01lbUNvbmZpZy5uUGFnZU51bV9Nb3JlTWlkKSB7DQorICAgICAgICAgICAgbk1pZFBhZ2VzID0gbV9NZW1Db25maWcublBhZ2VOdW1fTW9yZU1pZDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBwTmV3UG9vbC0+SW5pdGlhbGl6ZSgmbV9NZW1Db25maWcsIG5ld1NpemUsIDAsIG1fTWVtQ29uZmlnLm5QYWdlTnVtX01vcmUxNiwgbV9NZW1Db25maWcublBhZ2VOdW1fTW9yZTMyLCBuTWlkUGFnZXMpOw0KKyAgICBwTmV3UG9vbC0+bV9wUHJldlBvb2wgPSAmbV9GaXJzdFBvb2w7DQorICAgIENGWE1FTV9Qb29sICpwUG9vbCA9IG1fRmlyc3RQb29sLm1fcE5leHRQb29sOw0KKyAgICBwTmV3UG9vbC0+bV9wTmV4dFBvb2wgPSBwUG9vbDsNCisgICAgaWYgKHBQb29sKSB7DQorICAgICAgICBwUG9vbC0+bV9wUHJldlBvb2wgPSBwTmV3UG9vbDsNCisgICAgfQ0KKyAgICBtX0ZpcnN0UG9vbC5tX3BOZXh0UG9vbCA9IHBOZXdQb29sOw0KKyAgICByZXR1cm4gQWxsb2MzMihzaXplKTsNCit9DQorRlhfTFBWT0lEIENGWE1FTV9GaXhlZE1ncjo6QWxsb2NNaWQoc2l6ZV90IHNpemUpDQorew0KKyAgICBDRlhNRU1fUG9vbCAqcFBvb2wgPSAmbV9GaXJzdFBvb2w7DQorICAgIGRvIHsNCisgICAgICAgIENGWE1FTV9QYWdlcyAmcGFnZXMgPSBwUG9vbC0+bV9NaWRQYWdlczsNCisgICAgICAgIGlmIChwYWdlcy5tX3BMaW1pdFBvcyA+IHBhZ2VzLm1fcFN0YXJ0UGFnZSkgew0KKyAgICAgICAgICAgIEZYX0xQVk9JRCBwID0gcGFnZXMuQWxsb2Moc2l6ZSk7DQorICAgICAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcFBvb2wgPSBwUG9vbC0+bV9wTmV4dFBvb2w7DQorICAgIH0gd2hpbGUocFBvb2wpOw0KKyAgICBpZiAoIW1fcEV4dGVuZGVyKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBzaXplX3QgbmV3U2l6ZSA9IG1fTWVtQ29uZmlnLm5QYWdlU2l6ZV9NaWQgKiBGWF9GSVhFRE1FTV9QQUdFU0laRSAqIG1fTWVtQ29uZmlnLm5QYWdlTnVtX01vcmVNaWQ7DQorICAgIGlmICghbmV3U2l6ZSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0ZYTUVNX1Bvb2wgKnBOZXdQb29sID0gTlVMTDsNCisgICAgbmV3U2l6ZSArPSBzaXplb2YoQ0ZYTUVNX1Bvb2wpOw0KKyAgICBpZiAoIW1fcEV4dGVuZGVyLT5Nb3JlKG1fcEV4dGVuZGVyLCBuZXdTaXplLCAodm9pZCoqKSZwTmV3UG9vbCwgJm5ld1NpemUpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBzaXplX3Qgbk1pZFBhZ2VzID0gKG5ld1NpemUgLSBzaXplb2YoQ0ZYTUVNX1Bvb2wpKSAvIChtX01lbUNvbmZpZy5uUGFnZVNpemVfTWlkICogRlhfRklYRURNRU1fUEFHRVNJWkUpOw0KKyAgICBpZiAobk1pZFBhZ2VzID4gbV9NZW1Db25maWcublBhZ2VOdW1fTW9yZU1pZCkgew0KKyAgICAgICAgbk1pZFBhZ2VzID0gbV9NZW1Db25maWcublBhZ2VOdW1fTW9yZU1pZDsNCisgICAgfQ0KKyAgICBwTmV3UG9vbC0+SW5pdGlhbGl6ZSgmbV9NZW1Db25maWcsIG5ld1NpemUsIDAsIDAsIDAsIG5NaWRQYWdlcyk7DQorICAgIHBOZXdQb29sLT5tX3BQcmV2UG9vbCA9ICZtX0ZpcnN0UG9vbDsNCisgICAgcFBvb2wgPSBtX0ZpcnN0UG9vbC5tX3BOZXh0UG9vbDsNCisgICAgcE5ld1Bvb2wtPm1fcE5leHRQb29sID0gcFBvb2w7DQorICAgIGlmIChwUG9vbCkgew0KKyAgICAgICAgcFBvb2wtPm1fcFByZXZQb29sID0gcE5ld1Bvb2w7DQorICAgIH0NCisgICAgbV9GaXJzdFBvb2wubV9wTmV4dFBvb2wgPSBwTmV3UG9vbDsNCisgICAgcmV0dXJuIHBOZXdQb29sLT5tX01pZFBhZ2VzLkFsbG9jKHNpemUpOw0KK30NCitGWF9MUFZPSUQgQ0ZYTUVNX0ZpeGVkTWdyOjpBbGxvY0xhcmdlKHNpemVfdCBzaXplKQ0KK3sNCisgICAgQ0ZYTUVNX1Bvb2wgKnBQb29sID0gJm1fRmlyc3RQb29sOw0KKyAgICBkbyB7DQorICAgICAgICBpZiAoIXBQb29sLT5tX2JBbG9uZSAmJiBwUG9vbC0+bV9wTGFyZ2VQYWdlKSB7DQorICAgICAgICAgICAgRlhfTFBWT0lEIHAgPSBwUG9vbC0+bV9wTGFyZ2VQYWdlLT5BbGxvYyhzaXplKTsNCisgICAgICAgICAgICBpZiAocCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBwUG9vbCA9IHBQb29sLT5tX3BOZXh0UG9vbDsNCisgICAgfSB3aGlsZShwUG9vbCk7DQorICAgIGlmICghbV9wRXh0ZW5kZXIgfHwgIW1fTWVtQ29uZmlnLm5QYWdlU2l6ZV9MYXJnZSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0ZYTUVNX1Bvb2wgKnBOZXdQb29sID0gTlVMTDsNCisjaWYgX0ZYX1dPUkRTSVpFXyA9PSBfRlhfVzY0Xw0KKyAgICBzaXplX3QgbmV3U2l6ZSA9ICgoc2l6ZSArIDMxKSAvIDMyICogMzIgKyBzaXplb2YoQ0ZYTUVNX1Bvb2wpICsgc2l6ZW9mKENGWE1FTV9QYWdlKSArIHNpemVvZihDRlhNRU1fQmxvY2spICsgNDA5NSkgLyA0MDk2ICogNDA5NjsNCisjZWxzZQ0KKyAgICBzaXplX3QgbmV3U2l6ZSA9IChzaXplICsgNykgLyA4ICogOCArIHNpemVvZihDRlhNRU1fUG9vbCkgKyBzaXplb2YoQ0ZYTUVNX1BhZ2UpICsgc2l6ZW9mKENGWE1FTV9CbG9jayk7DQorI2VuZGlmDQorICAgIGlmIChuZXdTaXplIDwgbV9NZW1Db25maWcublBhZ2VTaXplX0xhcmdlICogRlhfRklYRURNRU1fUEFHRVNJWkUpIHsNCisgICAgICAgIG5ld1NpemUgPSBtX01lbUNvbmZpZy5uUGFnZVNpemVfTGFyZ2UgKiBGWF9GSVhFRE1FTV9QQUdFU0laRTsNCisgICAgfQ0KKyAgICBpZiAoIW1fcEV4dGVuZGVyLT5Nb3JlKG1fcEV4dGVuZGVyLCBuZXdTaXplLCAodm9pZCoqKSZwTmV3UG9vbCwgJm5ld1NpemUpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwTmV3UG9vbC0+SW5pdGlhbGl6ZSgmbV9NZW1Db25maWcsIG5ld1NpemUsIDAsIDAsIDAsIDApOw0KKyAgICBwTmV3UG9vbC0+bV9iQWxvbmUgPSBzaXplID49IG1fTWVtQ29uZmlnLm5QYWdlU2l6ZV9BbG9uZSAqIEZYX0ZJWEVETUVNX1BBR0VTSVpFOw0KKyAgICBwTmV3UG9vbC0+bV9wUHJldlBvb2wgPSAmbV9GaXJzdFBvb2w7DQorICAgIHBQb29sID0gbV9GaXJzdFBvb2wubV9wTmV4dFBvb2w7DQorICAgIHBOZXdQb29sLT5tX3BOZXh0UG9vbCA9IHBQb29sOw0KKyAgICBpZiAocFBvb2wpIHsNCisgICAgICAgIHBQb29sLT5tX3BQcmV2UG9vbCA9IHBOZXdQb29sOw0KKyAgICB9DQorICAgIG1fRmlyc3RQb29sLm1fcE5leHRQb29sID0gcE5ld1Bvb2w7DQorICAgIHJldHVybiBwTmV3UG9vbC0+bV9wTGFyZ2VQYWdlLT5BbGxvYyhzaXplKTsNCit9DQorc2l6ZV90IENGWE1FTV9GaXhlZE1ncjo6R2V0U2l6ZShGWF9MUFZPSUQgcCkgY29uc3QNCit7DQorICAgIGNvbnN0IENGWE1FTV9Qb29sICpwRmluZCA9ICZtX0ZpcnN0UG9vbDsNCisgICAgZG8gew0KKyAgICAgICAgaWYgKHAgPiAoRlhfTFBWT0lEKXBGaW5kICYmIHAgPCBwRmluZC0+bV9wTGltaXRQb3MpIHsNCisgICAgICAgICAgICByZXR1cm4gcEZpbmQtPkdldFNpemUocCk7DQorICAgICAgICB9DQorICAgICAgICBwRmluZCA9IHBGaW5kLT5tX3BOZXh0UG9vbDsNCisgICAgfSB3aGlsZSAocEZpbmQpOw0KKyAgICByZXR1cm4gMDsNCit9DQorRlhfTFBWT0lEIENGWE1FTV9GaXhlZE1ncjo6QWxsb2Moc2l6ZV90IHNpemUpDQorew0KKyAgICBGWF9MUFZPSUQgcDsNCisgICAgaWYgKHNpemUgPD0gMzIpIHsNCisgICAgICAgIHAgPSBBbGxvY1NtYWxsKHNpemUpOw0KKyAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICByZXR1cm4gcDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoc2l6ZSA8PSBGWF9GSVhFRE1FTV9NSURCTE9DS1NJWkUpIHsNCisgICAgICAgIHAgPSBBbGxvY01pZChzaXplKTsNCisgICAgICAgIGlmIChwKSB7DQorICAgICAgICAgICAgcmV0dXJuIHA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcCA9IEFsbG9jTGFyZ2Uoc2l6ZSk7DQorICAgIHJldHVybiBwOw0KK30NCitGWF9MUFZPSUQgQ0ZYTUVNX0ZpeGVkTWdyOjpSZWFsbG9jU21hbGwoQ0ZYTUVNX1Bvb2wqIHBQb29sLCBGWF9MUFZPSUQgcCwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQ0KK3sNCisgICAgRlhfTFBWT0lEIG5wID0gQWxsb2NTbWFsbChuZXdTaXplKTsNCisgICAgaWYgKCFucCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIobnAsIHAsIG9sZFNpemUpOw0KKyAgICBwUG9vbC0+RnJlZShwKTsNCisgICAgcmV0dXJuIG5wOw0KK30NCitGWF9MUFZPSUQgQ0ZYTUVNX0ZpeGVkTWdyOjpSZWFsbG9jKEZYX0xQVk9JRCBwLCBzaXplX3QgbmV3U2l6ZSkNCit7DQorICAgIGlmICghcCkgew0KKyAgICAgICAgcmV0dXJuIEFsbG9jKG5ld1NpemUpOw0KKyAgICB9DQorICAgIHNpemVfdCBvbGRTaXplID0gMDsNCisgICAgQ0ZYTUVNX1Bvb2wgKnBGaW5kID0gJm1fRmlyc3RQb29sOw0KKyAgICBkbyB7DQorICAgICAgICBpZiAocCA+IChGWF9MUFZPSUQpcEZpbmQgJiYgcCA8IHBGaW5kLT5tX3BMaW1pdFBvcykgew0KKyAgICAgICAgICAgIG9sZFNpemUgPSBwRmluZC0+R2V0U2l6ZShwKTsNCisgICAgICAgICAgICBpZiAob2xkU2l6ZSA+PSBuZXdTaXplKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIHBGaW5kID0gcEZpbmQtPm1fcE5leHRQb29sOw0KKyAgICB9IHdoaWxlIChwRmluZCk7DQorICAgIGlmICghb2xkU2l6ZSB8fCAhcEZpbmQpIHsNCisgICAgICAgIHJldHVybiBBbGxvYyhuZXdTaXplKTsNCisgICAgfQ0KKyAgICBGWF9MUFZPSUQgbnAgPSBOVUxMOw0KKyAgICBpZiAobmV3U2l6ZSA8PSAzMikgew0KKyAgICAgICAgbnAgPSBSZWFsbG9jU21hbGwocEZpbmQsIHAsIG9sZFNpemUsIG5ld1NpemUpOw0KKyAgICAgICAgaWYgKG5wKSB7DQorICAgICAgICAgICAgcmV0dXJuIG5wOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChuZXdTaXplIDw9IEZYX0ZJWEVETUVNX01JREJMT0NLU0laRSkgew0KKyAgICAgICAgbnAgPSBwRmluZC0+UmVhbGxvYyhwLCBvbGRTaXplLCBuZXdTaXplKTsNCisgICAgICAgIGlmIChucCkgew0KKyAgICAgICAgICAgIHJldHVybiBucDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBucCA9IEFsbG9jKG5ld1NpemUpOw0KKyAgICBpZiAobnApIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG5wLCBwLCBvbGRTaXplKTsNCisgICAgICAgIHBGaW5kLT5GcmVlKHApOw0KKyAgICB9DQorICAgIGlmIChwRmluZC0+bV9iQWxvbmUgJiYgcEZpbmQtPklzRW1wdHkoKSkgew0KKyAgICAgICAgRnJlZVBvb2wocEZpbmQpOw0KKyAgICB9DQorICAgIHJldHVybiBucDsNCit9DQordm9pZCBDRlhNRU1fRml4ZWRNZ3I6OkZyZWUoRlhfTFBWT0lEIHApDQorew0KKyAgICBDRlhNRU1fUG9vbCAqcEZpbmQgPSAmbV9GaXJzdFBvb2w7DQorICAgIGRvIHsNCisgICAgICAgIGlmIChwID4gKEZYX0xQVk9JRClwRmluZCAmJiBwIDwgcEZpbmQtPm1fcExpbWl0UG9zKSB7DQorICAgICAgICAgICAgcEZpbmQtPkZyZWUocCk7DQorICAgICAgICAgICAgaWYgKHBGaW5kLT5tX2JBbG9uZSAmJiBwRmluZC0+SXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIEZyZWVQb29sKHBGaW5kKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEZpbmQgPSBwRmluZC0+bV9wTmV4dFBvb2w7DQorICAgIH0gd2hpbGUgKHBGaW5kKTsNCit9DQordm9pZCBDRlhNRU1fRml4ZWRNZ3I6OkZyZWVQb29sKENGWE1FTV9Qb29sKiBwUG9vbCkNCit7DQorICAgIEZYU1lTX2Fzc2VydChwUG9vbC0+bV9iQWxvbmUgJiYgcFBvb2wtPklzRW1wdHkoKSk7DQorICAgIEZYU1lTX2Fzc2VydChtX3BFeHRlbmRlciAhPSBOVUxMKTsNCisgICAgQ0ZYTUVNX1Bvb2wqIHBQcmV2UG9vbCA9IHBQb29sLT5tX3BQcmV2UG9vbDsNCisgICAgQ0ZYTUVNX1Bvb2wqIHBOZXh0UG9vbCA9IHBQb29sLT5tX3BOZXh0UG9vbDsNCisgICAgaWYgKHBQcmV2UG9vbCkgew0KKyAgICAgICAgcFByZXZQb29sLT5tX3BOZXh0UG9vbCA9IHBOZXh0UG9vbDsNCisgICAgfQ0KKyAgICBpZiAocE5leHRQb29sKSB7DQorICAgICAgICBwTmV4dFBvb2wtPm1fcFByZXZQb29sID0gcFByZXZQb29sOw0KKyAgICB9DQorICAgIG1fcEV4dGVuZGVyLT5GcmVlKG1fcEV4dGVuZGVyLCBwUG9vbCk7DQorfQ0KK3ZvaWQgQ0ZYTUVNX0ZpeGVkTWdyOjpGcmVlQWxsKCkNCit7DQorICAgIGlmICghbV9wRXh0ZW5kZXIpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhNRU1fUG9vbCogcFBvb2wgPSBtX0ZpcnN0UG9vbC5tX3BOZXh0UG9vbDsNCisgICAgd2hpbGUgKHBQb29sKSB7DQorICAgICAgICBDRlhNRU1fUG9vbCogcFByZXZQb29sID0gcFBvb2w7DQorICAgICAgICBwUG9vbCA9IHBQb29sLT5tX3BOZXh0UG9vbDsNCisgICAgICAgIG1fcEV4dGVuZGVyLT5GcmVlKG1fcEV4dGVuZGVyLCBwUHJldlBvb2wpOw0KKyAgICB9DQorICAgIG1fRmlyc3RQb29sLm1fcE5leHRQb29sID0gTlVMTDsNCit9DQordm9pZCBDRlhNRU1fRml4ZWRNZ3I6OlB1cmdlKCkNCit7DQorICAgIGlmICghbV9wRXh0ZW5kZXIpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhNRU1fUG9vbCogcFBvb2wgPSBtX0ZpcnN0UG9vbC5tX3BOZXh0UG9vbDsNCisgICAgd2hpbGUgKHBQb29sKSB7DQorICAgICAgICBDRlhNRU1fUG9vbCogcE5leHRQb29sID0gcFBvb2wtPm1fcE5leHRQb29sOw0KKyAgICAgICAgaWYgKHBQb29sLT5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICBDRlhNRU1fUG9vbCogcFByZXZQb29sID0gcFBvb2wtPm1fcFByZXZQb29sOw0KKyAgICAgICAgICAgIHBQcmV2UG9vbC0+bV9wTmV4dFBvb2wgPSBwTmV4dFBvb2w7DQorICAgICAgICAgICAgaWYgKHBOZXh0UG9vbCkgew0KKyAgICAgICAgICAgICAgICBwTmV4dFBvb2wtPm1fcFByZXZQb29sID0gcFByZXZQb29sOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX3BFeHRlbmRlci0+RnJlZShtX3BFeHRlbmRlciwgcFBvb2wpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFBvb2wgPSBwTmV4dFBvb2w7DQorICAgIH0NCit9DQorZXh0ZXJuIGNvbnN0IEZYX0JZVEUgT25lTGVhZFBvc1syNTZdID0gew0KKyAgICA4LCA3LCA2LCA2LCA1LCA1LCA1LCA1LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LA0KKyAgICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLA0KKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLA0KKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLA0KKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLA0KKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLA0KKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLA0KKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLA0KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLA0KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLA0KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLA0KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLA0KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLA0KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLA0KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLA0KKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLA0KK307DQorZXh0ZXJuIGNvbnN0IEZYX0JZVEUgWmVyb0xlYWRQb3NbMjU2XSA9IHsNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwNCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwNCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwNCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwNCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwNCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwNCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwNCisgICAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywNCisgICAgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNSwgNSwgNSwgNSwgNiwgNiwgNywgOCwNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX3BsZXguY3BwIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfcGxleC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQzYThiYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX3BsZXguY3BwCkBAIC0wLDAgKzEsMjggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2Jhc2ljLmgiDQorI2luY2x1ZGUgInBsZXguaCINCitDRlhfUGxleCogQ0ZYX1BsZXg6OkNyZWF0ZShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yLCBDRlhfUGxleComIHBIZWFkLCBGWF9EV09SRCBuTWF4LCBGWF9EV09SRCBjYkVsZW1lbnQpDQorew0KKyAgICBDRlhfUGxleCogcCA9IChDRlhfUGxleCopRlhfQWxsb2NhdG9yX0FsbG9jKHBBbGxvY2F0b3IsIEZYX0JZVEUsIHNpemVvZihDRlhfUGxleCkgKyBuTWF4ICogY2JFbGVtZW50KTsNCisgICAgaWYgKCFwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwLT5wTmV4dCA9IHBIZWFkOw0KKyAgICBwSGVhZCA9IHA7DQorICAgIHJldHVybiBwOw0KK30NCit2b2lkIENGWF9QbGV4OjpGcmVlRGF0YUNoYWluKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorew0KKyAgICBDRlhfUGxleCogcCA9IHRoaXM7DQorICAgIHdoaWxlIChwICE9IE5VTEwpIHsNCisgICAgICAgIEZYX0JZVEUqIGJ5dGVzID0gKEZYX0JZVEUqKSBwOw0KKyAgICAgICAgQ0ZYX1BsZXgqIHBOZXh0ID0gcC0+cE5leHQ7DQorICAgICAgICBGWF9BbGxvY2F0b3JfRnJlZShwQWxsb2NhdG9yLCBieXRlcyk7DQorICAgICAgICBwID0gcE5leHQ7DQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfdXRmLmNwcCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX3V0Zi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk0ZTA4ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX3V0Zi5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2Jhc2ljLmgiDQordm9pZCBDRlhfVVRGOERlY29kZXI6OkNsZWFyKCkNCit7DQorICAgIG1fQnVmZmVyLkNsZWFyKCk7DQorICAgIG1fUGVuZGluZ0J5dGVzID0gMDsNCit9DQordm9pZCBDRlhfVVRGOERlY29kZXI6OkFwcGVuZENoYXIoRlhfRFdPUkQgY2gpDQorew0KKyAgICBtX0J1ZmZlci5BcHBlbmRDaGFyKChGWF9XQ0hBUiljaCk7DQorfQ0KK3ZvaWQgQ0ZYX1VURjhEZWNvZGVyOjpJbnB1dChGWF9CWVRFIGJ5dGUpDQorew0KKyAgICBpZiAoYnl0ZSA8IDB4ODApIHsNCisgICAgICAgIG1fUGVuZGluZ0J5dGVzID0gMDsNCisgICAgICAgIG1fQnVmZmVyLkFwcGVuZENoYXIoYnl0ZSk7DQorICAgIH0gZWxzZSBpZiAoYnl0ZSA8IDB4YzApIHsNCisgICAgICAgIGlmIChtX1BlbmRpbmdCeXRlcyA9PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9QZW5kaW5nQnl0ZXMgLS07DQorICAgICAgICBtX1BlbmRpbmdDaGFyIHw9IChieXRlICYgMHgzZikgPDwgKG1fUGVuZGluZ0J5dGVzICogNik7DQorICAgICAgICBpZiAobV9QZW5kaW5nQnl0ZXMgPT0gMCkgew0KKyAgICAgICAgICAgIEFwcGVuZENoYXIobV9QZW5kaW5nQ2hhcik7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAoYnl0ZSA8IDB4ZTApIHsNCisgICAgICAgIG1fUGVuZGluZ0J5dGVzID0gMTsNCisgICAgICAgIG1fUGVuZGluZ0NoYXIgPSAoYnl0ZSAmIDB4MWYpIDw8IDY7DQorICAgIH0gZWxzZSBpZiAoYnl0ZSA8IDB4ZjApIHsNCisgICAgICAgIG1fUGVuZGluZ0J5dGVzID0gMjsNCisgICAgICAgIG1fUGVuZGluZ0NoYXIgPSAoYnl0ZSAmIDB4MGYpIDw8IDEyOw0KKyAgICB9IGVsc2UgaWYgKGJ5dGUgPCAweGY4KSB7DQorICAgICAgICBtX1BlbmRpbmdCeXRlcyA9IDM7DQorICAgICAgICBtX1BlbmRpbmdDaGFyID0gKGJ5dGUgJiAweDA3KSA8PCAxODsNCisgICAgfSBlbHNlIGlmIChieXRlIDwgMHhmYykgew0KKyAgICAgICAgbV9QZW5kaW5nQnl0ZXMgPSA0Ow0KKyAgICAgICAgbV9QZW5kaW5nQ2hhciA9IChieXRlICYgMHgwMykgPDwgMjQ7DQorICAgIH0gZWxzZSBpZiAoYnl0ZSA8IDB4ZmUpIHsNCisgICAgICAgIG1fUGVuZGluZ0J5dGVzID0gNTsNCisgICAgICAgIG1fUGVuZGluZ0NoYXIgPSAoYnl0ZSAmIDB4MDEpIDw8IDMwOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX1VURjhFbmNvZGVyOjpJbnB1dChGWF9XQ0hBUiB1bmljb2RlKQ0KK3sNCisgICAgaWYgKChGWF9EV09SRCl1bmljb2RlIDwgMHg4MCkgew0KKyAgICAgICAgbV9CdWZmZXIuQXBwZW5kQ2hhcih1bmljb2RlKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmICgoRlhfRFdPUkQpdW5pY29kZSA+PSAweDgwMDAwMDAwKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IG5ieXRlcyA9IDA7DQorICAgICAgICBpZiAoKEZYX0RXT1JEKXVuaWNvZGUgPCAweDgwMCkgew0KKyAgICAgICAgICAgIG5ieXRlcyA9IDI7DQorICAgICAgICB9IGVsc2UgaWYgKChGWF9EV09SRCl1bmljb2RlIDwgMHgxMDAwMCkgew0KKyAgICAgICAgICAgIG5ieXRlcyA9IDM7DQorICAgICAgICB9IGVsc2UgaWYgKChGWF9EV09SRCl1bmljb2RlIDwgMHgyMDAwMDApIHsNCisgICAgICAgICAgICBuYnl0ZXMgPSA0Ow0KKyAgICAgICAgfSBlbHNlIGlmICgoRlhfRFdPUkQpdW5pY29kZSA8IDB4NDAwMDAwMCkgew0KKyAgICAgICAgICAgIG5ieXRlcyA9IDU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG5ieXRlcyA9IDY7DQorICAgICAgICB9DQorICAgICAgICBzdGF0aWMgRlhfQllURSBwcmVmaXhbXSA9IHsweGMwLCAweGUwLCAweGYwLCAweGY4LCAweGZjfTsNCisgICAgICAgIGludCBvcmRlciA9IDEgPDwgKChuYnl0ZXMgLSAxKSAqIDYpOw0KKyAgICAgICAgaW50IGNvZGUgPSB1bmljb2RlOw0KKyAgICAgICAgbV9CdWZmZXIuQXBwZW5kQ2hhcihwcmVmaXhbbmJ5dGVzIC0gMl0gfCAoY29kZSAvIG9yZGVyKSk7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5ieXRlcyAtIDE7IGkgKyspIHsNCisgICAgICAgICAgICBjb2RlID0gY29kZSAlIG9yZGVyOw0KKyAgICAgICAgICAgIG9yZGVyID4+PSA2Ow0KKyAgICAgICAgICAgIG1fQnVmZmVyLkFwcGVuZENoYXIoMHg4MCB8IChjb2RlIC8gb3JkZXIpKTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDRlhfQnl0ZVN0cmluZyBGWF9VVEY4RW5jb2RlKEZYX0xQQ1dTVFIgcHdzU3RyLCBGWF9TVFJTSVpFIGxlbikNCit7DQorICAgIEZYU1lTX2Fzc2VydChwd3NTdHIgIT0gTlVMTCk7DQorICAgIGlmIChsZW4gPCAwKSB7DQorICAgICAgICBsZW4gPSAoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4ocHdzU3RyKTsNCisgICAgfQ0KKyAgICBDRlhfVVRGOEVuY29kZXIgZW5jb2RlcjsNCisgICAgd2hpbGUgKGxlbiAtLSA+IDApIHsNCisgICAgICAgIGVuY29kZXIuSW5wdXQoKnB3c1N0ciArKyk7DQorICAgIH0NCisgICAgcmV0dXJuIGVuY29kZXIuR2V0UmVzdWx0KCk7DQorfQ0KK3ZvaWQgRlhfVVRGOEVuY29kZShGWF9MUENXU1RSIHB3c1N0ciwgRlhfU1RSU0laRSBsZW4sIENGWF9CeXRlU3RyaW5nTCAmdXRmOFN0ciwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIEZYU1lTX2Fzc2VydChwd3NTdHIgIT0gTlVMTCk7DQorICAgIGlmIChsZW4gPCAwKSB7DQorICAgICAgICBsZW4gPSAoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4ocHdzU3RyKTsNCisgICAgfQ0KKyAgICBDRlhfVVRGOEVuY29kZXIgZW5jb2RlcihwQWxsb2NhdG9yKTsNCisgICAgd2hpbGUgKGxlbiAtLSA+IDApIHsNCisgICAgICAgIGVuY29kZXIuSW5wdXQoKnB3c1N0ciArKyk7DQorICAgIH0NCisgICAgZW5jb2Rlci5HZXRSZXN1bHQodXRmOFN0cik7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX3V0aWwuY3BwIGIvY29yZS9zcmMvZnhjcnQvZnhfYmFzaWNfdXRpbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY0ZDQyYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX3V0aWwuY3BwCkBAIC0wLDAgKzEsNDQ0IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGNydC9meF9iYXNpYy5oIg0KKyNpZiBfRlhNX1BMQVRGT1JNXyAhPSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KKyNpbmNsdWRlIDxkaXJlbnQuaD4NCisjZWxzZQ0KKyNpbmNsdWRlIDxkaXJlY3QuaD4NCisjZW5kaWYNCitDRlhfUHJpdmF0ZURhdGE6On5DRlhfUHJpdmF0ZURhdGEoKQ0KK3sNCisgICAgQ2xlYXJBbGwoKTsNCit9DQordm9pZCBGWF9QUklWQVRFREFUQTo6RnJlZURhdGEoKQ0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX2JTZWxmRGVzdHJ1Y3QpIHsNCisgICAgICAgIGRlbGV0ZSAoQ0ZYX0Rlc3RydWN0T2JqZWN0KiltX3BEYXRhOw0KKyAgICB9IGVsc2UgaWYgKG1fcENhbGxiYWNrKSB7DQorICAgICAgICBtX3BDYWxsYmFjayhtX3BEYXRhKTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9Qcml2YXRlRGF0YTo6QWRkRGF0YShGWF9MUFZPSUQgcE1vZHVsZUlkLCBGWF9MUFZPSUQgcERhdGEsIFBEX0NBTExCQUNLX0ZSRUVEQVRBIGNhbGxiYWNrLCBGWF9CT09MIGJTZWxmRGVzdHJ1Y3QpDQorew0KKyAgICBpZiAocE1vZHVsZUlkID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9QUklWQVRFREFUQSogcExpc3QgPSBtX0RhdGFMaXN0LkdldERhdGEoKTsNCisgICAgaW50IGNvdW50ID0gbV9EYXRhTGlzdC5HZXRTaXplKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsNCisgICAgICAgIGlmIChwTGlzdFtpXS5tX3BNb2R1bGVJZCA9PSBwTW9kdWxlSWQpIHsNCisgICAgICAgICAgICBwTGlzdFtpXS5GcmVlRGF0YSgpOw0KKyAgICAgICAgICAgIHBMaXN0W2ldLm1fcERhdGEgPSBwRGF0YTsNCisgICAgICAgICAgICBwTGlzdFtpXS5tX3BDYWxsYmFjayA9IGNhbGxiYWNrOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9QUklWQVRFREFUQSBkYXRhID0ge3BNb2R1bGVJZCwgcERhdGEsIGNhbGxiYWNrLCBiU2VsZkRlc3RydWN0fTsNCisgICAgbV9EYXRhTGlzdC5BZGQoZGF0YSk7DQorfQ0KK3ZvaWQgQ0ZYX1ByaXZhdGVEYXRhOjpTZXRQcml2YXRlRGF0YShGWF9MUFZPSUQgcE1vZHVsZUlkLCBGWF9MUFZPSUQgcERhdGEsIFBEX0NBTExCQUNLX0ZSRUVEQVRBIGNhbGxiYWNrKQ0KK3sNCisgICAgQWRkRGF0YShwTW9kdWxlSWQsIHBEYXRhLCBjYWxsYmFjaywgRkFMU0UpOw0KK30NCit2b2lkIENGWF9Qcml2YXRlRGF0YTo6U2V0UHJpdmF0ZU9iaihGWF9MUFZPSUQgcE1vZHVsZUlkLCBDRlhfRGVzdHJ1Y3RPYmplY3QqIHBPYmopDQorew0KKyAgICBBZGREYXRhKHBNb2R1bGVJZCwgcE9iaiwgTlVMTCwgVFJVRSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1ByaXZhdGVEYXRhOjpSZW1vdmVQcml2YXRlRGF0YShGWF9MUFZPSUQgcE1vZHVsZUlkKQ0KK3sNCisgICAgaWYgKHBNb2R1bGVJZCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfUFJJVkFURURBVEEqIHBMaXN0ID0gbV9EYXRhTGlzdC5HZXREYXRhKCk7DQorICAgIGludCBjb3VudCA9IG1fRGF0YUxpc3QuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpICsrKSB7DQorICAgICAgICBpZiAocExpc3RbaV0ubV9wTW9kdWxlSWQgPT0gcE1vZHVsZUlkKSB7DQorICAgICAgICAgICAgbV9EYXRhTGlzdC5SZW1vdmVBdChpKTsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0xQVk9JRCBDRlhfUHJpdmF0ZURhdGE6OkdldFByaXZhdGVEYXRhKEZYX0xQVk9JRCBwTW9kdWxlSWQpDQorew0KKyAgICBpZiAocE1vZHVsZUlkID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYX1BSSVZBVEVEQVRBKiBwTGlzdCA9IG1fRGF0YUxpc3QuR2V0RGF0YSgpOw0KKyAgICBpbnQgY291bnQgPSBtX0RhdGFMaXN0LkdldFNpemUoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSArKykgew0KKyAgICAgICAgaWYgKHBMaXN0W2ldLm1fcE1vZHVsZUlkID09IHBNb2R1bGVJZCkgew0KKyAgICAgICAgICAgIHJldHVybiBwTGlzdFtpXS5tX3BEYXRhOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCit2b2lkIENGWF9Qcml2YXRlRGF0YTo6Q2xlYXJBbGwoKQ0KK3sNCisgICAgRlhfUFJJVkFURURBVEEqIHBMaXN0ID0gbV9EYXRhTGlzdC5HZXREYXRhKCk7DQorICAgIGludCBjb3VudCA9IG1fRGF0YUxpc3QuR2V0U2l6ZSgpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpICsrKSB7DQorICAgICAgICBwTGlzdFtpXS5GcmVlRGF0YSgpOw0KKyAgICB9DQorICAgIG1fRGF0YUxpc3QuUmVtb3ZlQWxsKCk7DQorfQ0KK3ZvaWQgRlhfYXRvbnVtKEZYX0JTVFIgc3RyYywgRlhfQk9PTCYgYkludGVnZXIsIHZvaWQqIHBEYXRhKQ0KK3sNCisgICAgaWYgKEZYU1lTX21lbWNocihzdHJjLkdldFB0cigpLCAnLicsIHN0cmMuR2V0TGVuZ3RoKCkpID09IE5VTEwpIHsNCisgICAgICAgIGJJbnRlZ2VyID0gVFJVRTsNCisgICAgICAgIGludCBjYyA9IDAsIGludGVnZXIgPSAwOw0KKyAgICAgICAgRlhfTFBDU1RSIHN0ciA9IHN0cmMuR2V0Q1N0cigpOw0KKyAgICAgICAgaW50IGxlbiA9IHN0cmMuR2V0TGVuZ3RoKCk7DQorICAgICAgICBGWF9CT09MIGJOZWdhdGl2ZSA9IEZBTFNFOw0KKyAgICAgICAgaWYgKHN0clswXSA9PSAnKycpIHsNCisgICAgICAgICAgICBjYysrOw0KKyAgICAgICAgfSBlbHNlIGlmIChzdHJbMF0gPT0gJy0nKSB7DQorICAgICAgICAgICAgYk5lZ2F0aXZlID0gVFJVRTsNCisgICAgICAgICAgICBjYysrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgd2hpbGUgKGNjIDwgbGVuKSB7DQorICAgICAgICAgICAgaWYgKHN0cltjY10gPCAnMCcgfHwgc3RyW2NjXSA+ICc5Jykgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaW50ZWdlciA9IGludGVnZXIgKiAxMCArIHN0cltjY10gLSAnMCc7DQorICAgICAgICAgICAgaWYgKGludGVnZXIgPCAwKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjYyArKzsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChiTmVnYXRpdmUpIHsNCisgICAgICAgICAgICBpbnRlZ2VyID0gLWludGVnZXI7DQorICAgICAgICB9DQorICAgICAgICAqKGludCopcERhdGEgPSBpbnRlZ2VyOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgYkludGVnZXIgPSBGQUxTRTsNCisgICAgICAgICooRlhfRkxPQVQqKXBEYXRhID0gRlhfYXRvZihzdHJjKTsNCisgICAgfQ0KK30NCitGWF9GTE9BVCBGWF9hdG9mKEZYX0JTVFIgc3RyYykNCit7DQorICAgIGlmIChzdHJjLkdldExlbmd0aCgpID09IDApIHsNCisgICAgICAgIHJldHVybiAwLjA7DQorICAgIH0NCisgICAgaW50IGNjID0gMDsNCisgICAgRlhfQk9PTCBiTmVnYXRpdmUgPSBGQUxTRTsNCisgICAgRlhfTFBDU1RSIHN0ciA9IHN0cmMuR2V0Q1N0cigpOw0KKyAgICBpbnQgbGVuID0gc3RyYy5HZXRMZW5ndGgoKTsNCisgICAgaWYgKHN0clswXSA9PSAnKycpIHsNCisgICAgICAgIGNjKys7DQorICAgIH0gZWxzZSBpZiAoc3RyWzBdID09ICctJykgew0KKyAgICAgICAgYk5lZ2F0aXZlID0gVFJVRTsNCisgICAgICAgIGNjKys7DQorICAgIH0NCisgICAgd2hpbGUgKGNjIDwgbGVuKSB7DQorICAgICAgICBpZiAoc3RyW2NjXSAhPSAnKycgJiYgc3RyW2NjXSAhPSAnLScpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGNjICsrOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIHZhbHVlID0gMDsNCisgICAgd2hpbGUgKGNjIDwgbGVuKSB7DQorICAgICAgICBpZiAoc3RyW2NjXSA9PSAnLicpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIHZhbHVlID0gdmFsdWUgKiAxMCArIHN0cltjY10gLSAnMCc7DQorICAgICAgICBjYyArKzsNCisgICAgfQ0KKyAgICBzdGF0aWMgY29uc3QgRlhfRkxPQVQgZnJhY3Rpb25fc2NhbGVzW10gPSB7MC4xZiwgMC4wMWYsIDAuMDAxZiwgMC4wMDAxZiwgMC4wMDAwMWYsIDAuMDAwMDAxZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMDAwMDAwMWYsIDAuMDAwMDAwMDFmLCAwLjAwMDAwMDAwMWYsIDAuMDAwMDAwMDAwMWYsIDAuMDAwMDAwMDAwMDFmDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07DQorICAgIGludCBzY2FsZSA9IDA7DQorICAgIGlmIChjYyA8IGxlbiAmJiBzdHJbY2NdID09ICcuJykgew0KKyAgICAgICAgY2MgKys7DQorICAgICAgICB3aGlsZSAoY2MgPCBsZW4pIHsNCisgICAgICAgICAgICB2YWx1ZSArPSBmcmFjdGlvbl9zY2FsZXNbc2NhbGVdICogKHN0cltjY10gLSAnMCcpOw0KKyAgICAgICAgICAgIHNjYWxlICsrOw0KKyAgICAgICAgICAgIGlmIChzY2FsZSA9PSBzaXplb2YgZnJhY3Rpb25fc2NhbGVzIC8gc2l6ZW9mKEZYX0ZMT0FUKSkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2MgKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGJOZWdhdGl2ZSA/IC12YWx1ZSA6IHZhbHVlOw0KK30NCitzdGF0aWMgRlhfQk9PTCBGWF9Jc0RpZ2l0KEZYX0JZVEUgY2gpDQorew0KKyAgICByZXR1cm4gKGNoID49ICcwJyAmJiBjaCA8PSAnOScpID8gVFJVRSA6IEZBTFNFOw0KK30NCitzdGF0aWMgRlhfQk9PTCBGWF9Jc1hEaWdpdChGWF9CWVRFIGNoKQ0KK3sNCisgICAgcmV0dXJuIChGWF9Jc0RpZ2l0KGNoKSB8fCAoY2ggPj0gJ0EnICYmIGNoIDw9ICdGJykgfHwgKGNoID49ICdhJyAmJiBjaCA8PSAnZicpKSA/IFRSVUUgOiBGQUxTRTsNCit9DQorc3RhdGljIEZYX0JZVEUgRlhfTWFrZVVwcGVyKEZYX0JZVEUgY2gpDQorew0KKyAgICBpZiAoY2ggPCAnYScgfHwgY2ggPiAneicpIHsNCisgICAgICAgIHJldHVybiBjaDsNCisgICAgfQ0KKyAgICByZXR1cm4gY2ggLSAzMjsNCit9DQorc3RhdGljIGludCBGWF9IZXhUb0koRlhfQllURSBjaCkNCit7DQorICAgIGNoID0gRlhfTWFrZVVwcGVyKGNoKTsNCisgICAgcmV0dXJuIEZYX0lzRGlnaXQoY2gpID8gKGNoIC0gJzAnKSA6IChjaCAtIDU1KTsNCit9DQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdXJsX2VuY29kZVRhYmxlWzEyOF0gPSB7DQorICAgIDEsICAxLCAgMSwgIDEsCQkxLCAgMSwgIDEsICAxLA0KKyAgICAxLCAgMSwgIDEsICAxLAkJMSwgIDEsICAxLCAgMSwNCisgICAgMSwgIDEsICAxLCAgMSwJCTEsICAxLCAgMSwgIDEsDQorICAgIDEsICAxLCAgMSwgIDEsCQkxLCAgMSwgIDEsICAxLA0KKyAgICAxLCAgMCwgIDEsICAxLAkJMCwgIDEsICAwLCAgMCwNCisgICAgMCwgIDAsICAwLCAgMCwJCTAsICAwLCAgMCwgIDAsDQorICAgIDAsICAwLCAgMCwgIDAsCQkwLCAgMCwgIDAsICAwLA0KKyAgICAwLCAgMCwgIDAsICAwLAkJMSwgIDAsICAxLCAgMCwNCisgICAgMCwgIDAsICAwLCAgMCwJCTAsICAwLCAgMCwgIDAsDQorICAgIDAsICAwLCAgMCwgIDAsCQkwLCAgMCwgIDAsICAwLA0KKyAgICAwLCAgMCwgIDAsICAwLAkJMCwgIDAsICAwLCAgMCwNCisgICAgMCwgIDAsICAwLCAgMSwJCTEsICAxLCAgMSwgIDAsDQorICAgIDEsICAwLCAgMCwgIDAsCQkwLCAgMCwgIDAsICAwLA0KKyAgICAwLCAgMCwgIDAsICAwLAkJMCwgIDAsICAwLCAgMCwNCisgICAgMCwgIDAsICAwLCAgMCwJCTAsICAwLCAgMCwgIDAsDQorICAgIDAsICAwLCAgMCwgIDEsCQkxLCAgMSwgIDEsICAxLA0KK307DQorQ0ZYX0J5dGVTdHJpbmcgRlhfVXJsRW5jb2RlKGNvbnN0IENGWF9XaWRlU3RyaW5nJiB3c1VybCkNCit7DQorICAgIGNvbnN0IGNoYXIgYXJEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgclVybDsNCisgICAgaW50IG5MZW5ndGggPSB3c1VybC5HZXRMZW5ndGgoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuTGVuZ3RoOyBpKyspIHsNCisgICAgICAgIEZYX0RXT1JEIHdvcmQgPSB3c1VybC5HZXRBdChpKTsNCisgICAgICAgIGlmICh3b3JkID4gMHg3RiB8fCB1cmxfZW5jb2RlVGFibGVbd29yZF0gPT0gMSkgew0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGJzVXJpID0gQ0ZYX0J5dGVTdHJpbmc6OkZyb21Vbmljb2RlKChGWF9XT1JEKXdvcmQpOw0KKyAgICAgICAgICAgIGludCBuQnl0ZSA9IGJzVXJpLkdldExlbmd0aCgpOw0KKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbkJ5dGU7IGorKykgew0KKyAgICAgICAgICAgICAgICByVXJsICs9ICclJzsNCisgICAgICAgICAgICAgICAgRlhfQllURSBjb2RlID0gYnNVcmkuR2V0QXQoaik7DQorICAgICAgICAgICAgICAgIHJVcmwgKz0gYXJEaWdpdHNbY29kZSA+PiA0XTsNCisgICAgICAgICAgICAgICAgclVybCArPSBhckRpZ2l0c1tjb2RlICYgMHgwRl07DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByVXJsICs9IENGWF9CeXRlU3RyaW5nOjpGcm9tVW5pY29kZSgoRlhfV09SRCl3b3JkKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gclVybDsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgRlhfVXJsRGVjb2RlKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBic1VybCkNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIHJVcmw7DQorICAgIGludCBuTGVuZ3RoID0gYnNVcmwuR2V0TGVuZ3RoKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkxlbmd0aDsgaSsrKSB7DQorICAgICAgICBpZiAoaSA8IG5MZW5ndGggLSAyICYmIGJzVXJsW2ldID09ICclJyAmJiBGWF9Jc1hEaWdpdChic1VybFtpICsgMV0pICYmIEZYX0lzWERpZ2l0KGJzVXJsW2kgKyAyXSkpIHsNCisgICAgICAgICAgICByVXJsICs9IChGWF9IZXhUb0koYnNVcmxbaSArIDFdKSA8PCA0IHwgRlhfSGV4VG9JKGJzVXJsW2kgKyAyXSkpOw0KKyAgICAgICAgICAgIGkgKz0gMjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgclVybCArPSBic1VybFtpXTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbChyVXJsKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgRlhfRW5jb2RlVVJJKGNvbnN0IENGWF9XaWRlU3RyaW5nJiB3c1VSSSkNCit7DQorICAgIGNvbnN0IGNoYXIgYXJEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgclVSSTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgYnNVcmkgPSB3c1VSSS5VVEY4RW5jb2RlKCk7DQorICAgIGludCBuTGVuZ3RoID0gYnNVcmkuR2V0TGVuZ3RoKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkxlbmd0aDsgaSsrKSB7DQorICAgICAgICBGWF9CWVRFIGNvZGUgPSBic1VyaS5HZXRBdChpKTsNCisgICAgICAgIGlmIChjb2RlID4gMHg3RiB8fCB1cmxfZW5jb2RlVGFibGVbY29kZV0gPT0gMSkgew0KKyAgICAgICAgICAgIHJVUkkgKz0gJyUnOw0KKyAgICAgICAgICAgIHJVUkkgKz0gYXJEaWdpdHNbY29kZSA+PiA0XTsNCisgICAgICAgICAgICByVVJJICs9IGFyRGlnaXRzW2NvZGUgJiAweDBGXTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgclVSSSArPSBjb2RlOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiByVVJJOw0KK30NCitDRlhfV2lkZVN0cmluZyBGWF9EZWNvZGVVUkkoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIGJzVVJJKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgclVSSTsNCisgICAgaW50IG5MZW5ndGggPSBic1VSSS5HZXRMZW5ndGgoKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuTGVuZ3RoOyBpKyspIHsNCisgICAgICAgIGlmIChpIDwgbkxlbmd0aCAtIDIgJiYgYnNVUklbaV0gPT0gJyUnICYmIEZYX0lzWERpZ2l0KGJzVVJJW2kgKyAxXSkgJiYgRlhfSXNYRGlnaXQoYnNVUklbaSArIDJdKSkgew0KKyAgICAgICAgICAgIHJVUkkgKz0gKEZYX0hleFRvSShic1VSSVtpICsgMV0pIDw8IDQgfCBGWF9IZXhUb0koYnNVUklbaSArIDJdKSk7DQorICAgICAgICAgICAgaSArPSAyOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByVVJJICs9IGJzVVJJW2ldOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDRlhfV2lkZVN0cmluZzo6RnJvbVVURjgoclVSSSk7DQorfQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorY2xhc3MgQ0ZpbmRGaWxlRGF0YSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgdmlydHVhbCB+Q0ZpbmRGaWxlRGF0YSgpIHt9DQorICAgIEhBTkRMRQkJCQltX0hhbmRsZTsNCisgICAgRlhfQk9PTAkJCQltX2JFbmQ7DQorfTsNCitjbGFzcyBDRmluZEZpbGVEYXRhQSA6IHB1YmxpYyBDRmluZEZpbGVEYXRhDQorew0KK3B1YmxpYzoNCisgICAgdmlydHVhbCB+Q0ZpbmRGaWxlRGF0YUEoKSB7fQ0KKyAgICBXSU4zMl9GSU5EX0RBVEFBCW1fRmluZERhdGE7DQorfTsNCitjbGFzcyBDRmluZEZpbGVEYXRhVyA6IHB1YmxpYyBDRmluZEZpbGVEYXRhDQorew0KK3B1YmxpYzoNCisgICAgdmlydHVhbCB+Q0ZpbmRGaWxlRGF0YVcoKSB7fQ0KKyAgICBXSU4zMl9GSU5EX0RBVEFXCW1fRmluZERhdGE7DQorfTsNCisjZW5kaWYNCit2b2lkKiBGWF9PcGVuRm9sZGVyKEZYX0xQQ1NUUiBwYXRoKQ0KK3sNCisjaWYgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9XSU5ET1dTXw0KKyNpZm5kZWYgX1dJTjMyX1dDRQ0KKyAgICBDRmluZEZpbGVEYXRhQSogcERhdGEgPSBGWF9ORVcgQ0ZpbmRGaWxlRGF0YUE7DQorICAgIGlmICghcERhdGEpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorI2lmZGVmIF9GWF9XSU5BUElfUEFSVElUSU9OX0RFU0tUT1BfDQorICAgIHBEYXRhLT5tX0hhbmRsZSA9IEZpbmRGaXJzdEZpbGVBKENGWF9CeXRlU3RyaW5nKHBhdGgpICsgIi8qLioiLCAmcERhdGEtPm1fRmluZERhdGEpOw0KKyNlbHNlDQorICAgIHBEYXRhLT5tX0hhbmRsZSA9IEZpbmRGaXJzdEZpbGVFeEEoQ0ZYX0J5dGVTdHJpbmcocGF0aCkgKyAiLyouKiIsIEZpbmRFeEluZm9TdGFuZGFyZCwgJnBEYXRhLT5tX0ZpbmREYXRhLCBGaW5kRXhTZWFyY2hOYW1lTWF0Y2gsIE5VTEwsIDApOw0KKyNlbmRpZg0KKyNlbHNlDQorICAgIENGaW5kRmlsZURhdGFXKiBwRGF0YSA9IEZYX05FVyBDRmluZEZpbGVEYXRhVzsNCisgICAgaWYgKCFwRGF0YSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcERhdGEtPm1fSGFuZGxlID0gRmluZEZpcnN0RmlsZVcoQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbChwYXRoKSArIEwiLyouKiIsICZwRGF0YS0+bV9GaW5kRGF0YSk7DQorI2VuZGlmDQorICAgIGlmIChwRGF0YS0+bV9IYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsNCisgICAgICAgIGRlbGV0ZSBwRGF0YTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBEYXRhLT5tX2JFbmQgPSBGQUxTRTsNCisgICAgcmV0dXJuIHBEYXRhOw0KKyNlbHNlDQorICAgIERJUiogZGlyID0gb3BlbmRpcihwYXRoKTsNCisgICAgcmV0dXJuIGRpcjsNCisjZW5kaWYNCit9DQordm9pZCogRlhfT3BlbkZvbGRlcihGWF9MUENXU1RSIHBhdGgpDQorew0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorICAgIENGaW5kRmlsZURhdGFXKiBwRGF0YSA9IEZYX05FVyBDRmluZEZpbGVEYXRhVzsNCisgICAgaWYgKCFwRGF0YSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisjaWZkZWYgX0ZYX1dJTkFQSV9QQVJUSVRJT05fREVTS1RPUF8NCisgICAgcERhdGEtPm1fSGFuZGxlID0gRmluZEZpcnN0RmlsZVcoQ0ZYX1dpZGVTdHJpbmcocGF0aCkgKyBMIi8qLioiLCAmcERhdGEtPm1fRmluZERhdGEpOw0KKyNlbHNlDQorICAgIHBEYXRhLT5tX0hhbmRsZSA9IEZpbmRGaXJzdEZpbGVFeFcoQ0ZYX1dpZGVTdHJpbmcocGF0aCkgKyBMIi8qLioiLCBGaW5kRXhJbmZvU3RhbmRhcmQsICZwRGF0YS0+bV9GaW5kRGF0YSwgRmluZEV4U2VhcmNoTmFtZU1hdGNoLCBOVUxMLCAwKTsNCisjZW5kaWYNCisgICAgaWYgKHBEYXRhLT5tX0hhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgew0KKyAgICAgICAgZGVsZXRlIHBEYXRhOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcERhdGEtPm1fYkVuZCA9IEZBTFNFOw0KKyAgICByZXR1cm4gcERhdGE7DQorI2Vsc2UNCisgICAgRElSKiBkaXIgPSBvcGVuZGlyKENGWF9CeXRlU3RyaW5nOjpGcm9tVW5pY29kZShwYXRoKSk7DQorICAgIHJldHVybiBkaXI7DQorI2VuZGlmDQorfQ0KK0ZYX0JPT0wgRlhfR2V0TmV4dEZpbGUodm9pZCogaGFuZGxlLCBDRlhfQnl0ZVN0cmluZyYgZmlsZW5hbWUsIEZYX0JPT0wmIGJGb2xkZXIpDQorew0KKyAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorI2lmbmRlZiBfV0lOMzJfV0NFDQorICAgIENGaW5kRmlsZURhdGFBKiBwRGF0YSA9IChDRmluZEZpbGVEYXRhQSopaGFuZGxlOw0KKyAgICBpZiAocERhdGEtPm1fYkVuZCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGZpbGVuYW1lID0gcERhdGEtPm1fRmluZERhdGEuY0ZpbGVOYW1lOw0KKyAgICBiRm9sZGVyID0gcERhdGEtPm1fRmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWTsNCisgICAgaWYgKCFGaW5kTmV4dEZpbGVBKHBEYXRhLT5tX0hhbmRsZSwgJnBEYXRhLT5tX0ZpbmREYXRhKSkgew0KKyAgICAgICAgcERhdGEtPm1fYkVuZCA9IFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorI2Vsc2UNCisgICAgQ0ZpbmRGaWxlRGF0YVcqIHBEYXRhID0gKENGaW5kRmlsZURhdGFXKiloYW5kbGU7DQorICAgIGlmIChwRGF0YS0+bV9iRW5kKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgZmlsZW5hbWUgPSBDRlhfQnl0ZVN0cmluZzo6RnJvbVVuaWNvZGUocERhdGEtPm1fRmluZERhdGEuY0ZpbGVOYW1lKTsNCisgICAgYkZvbGRlciA9IHBEYXRhLT5tX0ZpbmREYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlk7DQorICAgIGlmICghRmluZE5leHRGaWxlVyhwRGF0YS0+bV9IYW5kbGUsICZwRGF0YS0+bV9GaW5kRGF0YSkpIHsNCisgICAgICAgIHBEYXRhLT5tX2JFbmQgPSBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KKyNlbmRpZg0KKyNlbGlmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pDQorICAgIGFib3J0KCk7DQorICAgIHJldHVybiBGQUxTRTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3QgZGlyZW50ICpkZSA9IHJlYWRkaXIoKERJUiopaGFuZGxlKTsNCisgICAgaWYgKGRlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBmaWxlbmFtZSA9IGRlLT5kX25hbWU7DQorICAgIGJGb2xkZXIgPSBkZS0+ZF90eXBlID09IERUX0RJUjsNCisgICAgcmV0dXJuIFRSVUU7DQorI2VuZGlmDQorfQ0KK0ZYX0JPT0wgRlhfR2V0TmV4dEZpbGUodm9pZCogaGFuZGxlLCBDRlhfV2lkZVN0cmluZyYgZmlsZW5hbWUsIEZYX0JPT0wmIGJGb2xkZXIpDQorew0KKyAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorICAgIENGaW5kRmlsZURhdGFXKiBwRGF0YSA9IChDRmluZEZpbGVEYXRhVyopaGFuZGxlOw0KKyAgICBpZiAocERhdGEtPm1fYkVuZCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGZpbGVuYW1lID0gcERhdGEtPm1fRmluZERhdGEuY0ZpbGVOYW1lOw0KKyAgICBiRm9sZGVyID0gcERhdGEtPm1fRmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWTsNCisgICAgaWYgKCFGaW5kTmV4dEZpbGVXKHBEYXRhLT5tX0hhbmRsZSwgJnBEYXRhLT5tX0ZpbmREYXRhKSkgew0KKyAgICAgICAgcERhdGEtPm1fYkVuZCA9IFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorI2VsaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykNCisgICAgYWJvcnQoKTsNCisgICAgcmV0dXJuIEZBTFNFOw0KKyNlbHNlDQorICAgIHN0cnVjdCBkaXJlbnQgKmRlID0gcmVhZGRpcigoRElSKiloYW5kbGUpOw0KKyAgICBpZiAoZGUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGZpbGVuYW1lID0gQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbChkZS0+ZF9uYW1lKTsNCisgICAgYkZvbGRlciA9IGRlLT5kX3R5cGUgPT0gRFRfRElSOw0KKyAgICByZXR1cm4gVFJVRTsNCisjZW5kaWYNCit9DQordm9pZCBGWF9DbG9zZUZvbGRlcih2b2lkKiBoYW5kbGUpDQorew0KKyAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorICAgIENGaW5kRmlsZURhdGEqIHBEYXRhID0gKENGaW5kRmlsZURhdGEqKWhhbmRsZTsNCisgICAgRmluZENsb3NlKHBEYXRhLT5tX0hhbmRsZSk7DQorICAgIGRlbGV0ZSBwRGF0YTsNCisjZWxzZQ0KKyAgICBjbG9zZWRpcigoRElSKiloYW5kbGUpOw0KKyNlbmRpZg0KK30NCitGWF9XQ0hBUiBGWF9HZXRGb2xkZXJTZXBhcmF0b3IoKQ0KK3sNCisjaWYgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9XSU5ET1dTXw0KKyAgICByZXR1cm4gJ1xcJzsNCisjZWxzZQ0KKyAgICByZXR1cm4gJy8nOw0KKyNlbmRpZg0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNydC9meF9iYXNpY193c3RyaW5nLmNwcCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X2Jhc2ljX3dzdHJpbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMGYwNTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC9meF9iYXNpY193c3RyaW5nLmNwcApAQCAtMCwwICsxLDExNjggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2Jhc2ljLmgiDQorc3RhdGljIENGWF9TdHJpbmdEYXRhVyogRlhfQWxsb2NTdHJpbmdXKGludCBuTGVuKQ0KK3sNCisgICAgaWYgKG5MZW4gPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0ZYX1N0cmluZ0RhdGFXKiBwRGF0YSA9IChDRlhfU3RyaW5nRGF0YVcqKUZYX0FsbG9jKEZYX0JZVEUsIHNpemVvZihsb25nKSAqIDMgKyAobkxlbiArIDEpICogc2l6ZW9mKEZYX1dDSEFSKSk7DQorICAgIGlmICghcERhdGEpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBEYXRhLT5tX25BbGxvY0xlbmd0aCA9IG5MZW47DQorICAgIHBEYXRhLT5tX25EYXRhTGVuZ3RoID0gbkxlbjsNCisgICAgcERhdGEtPm1fblJlZnMgPSAxOw0KKyAgICBwRGF0YS0+bV9TdHJpbmdbbkxlbl0gPSAwOw0KKyAgICByZXR1cm4gcERhdGE7DQorfQ0KK3N0YXRpYyB2b2lkIEZYX1JlbGVhc2VTdHJpbmdXKENGWF9TdHJpbmdEYXRhVyogcERhdGEpDQorew0KKyAgICBpZiAocERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHBEYXRhLT5tX25SZWZzIC0tOw0KKyAgICBpZiAocERhdGEtPm1fblJlZnMgPD0gMCkgew0KKyAgICAgICAgRlhfRnJlZShwRGF0YSk7DQorICAgIH0NCit9DQorQ0ZYX1dpZGVTdHJpbmc6On5DRlhfV2lkZVN0cmluZygpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wRGF0YS0+bV9uUmVmcyAtLTsNCisgICAgaWYgKG1fcERhdGEtPm1fblJlZnMgPCAxKSB7DQorICAgICAgICBGWF9GcmVlKG1fcERhdGEpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6OkluaXRTdHIoRlhfTFBDV1NUUiBscHN6LCBGWF9TVFJTSVpFIG5MZW4pDQorew0KKyAgICBpZiAobkxlbiA8IDApIHsNCisgICAgICAgIG5MZW4gPSBscHN6ID8gKEZYX1NUUlNJWkUpRlhTWVNfd2NzbGVuKGxwc3opIDogMDsNCisgICAgfQ0KKyAgICBpZiAobkxlbikgew0KKyAgICAgICAgbV9wRGF0YSA9IEZYX0FsbG9jU3RyaW5nVyhuTGVuKTsNCisgICAgICAgIGlmICghbV9wRGF0YSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nLCBscHN6LCBuTGVuICogc2l6ZW9mKEZYX1dDSEFSKSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgfQ0KK30NCitDRlhfV2lkZVN0cmluZzo6Q0ZYX1dpZGVTdHJpbmcoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cmluZ1NyYykNCit7DQorICAgIGlmIChzdHJpbmdTcmMubV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoc3RyaW5nU3JjLm1fcERhdGEtPm1fblJlZnMgPj0gMCkgew0KKyAgICAgICAgbV9wRGF0YSA9IHN0cmluZ1NyYy5tX3BEYXRhOw0KKyAgICAgICAgbV9wRGF0YS0+bV9uUmVmcyArKzsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICAgICAgKnRoaXMgPSBzdHJpbmdTcmM7DQorICAgIH0NCit9DQorQ0ZYX1dpZGVTdHJpbmc6OkNGWF9XaWRlU3RyaW5nKEZYX1dDSEFSIGNoKQ0KK3sNCisgICAgbV9wRGF0YSA9IEZYX0FsbG9jU3RyaW5nVygxKTsNCisgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgIG1fcERhdGEtPm1fU3RyaW5nWzBdID0gY2g7DQorICAgIH0NCit9DQorQ0ZYX1dpZGVTdHJpbmc6OkNGWF9XaWRlU3RyaW5nKGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3RyKQ0KK3sNCisgICAgaWYgKHN0ci5Jc0VtcHR5KCkpIHsNCisgICAgICAgIG1fcERhdGEgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZ1coc3RyLkdldExlbmd0aCgpKTsNCisgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nLCBzdHIuR2V0UHRyKCksIHN0ci5HZXRMZW5ndGgoKSpzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgfQ0KK30NCitDRlhfV2lkZVN0cmluZzo6Q0ZYX1dpZGVTdHJpbmcoY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzdHIxLCBjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHN0cjIpDQorew0KKyAgICBtX3BEYXRhID0gTlVMTDsNCisgICAgaW50IG5OZXdMZW4gPSBzdHIxLkdldExlbmd0aCgpICsgc3RyMi5HZXRMZW5ndGgoKTsNCisgICAgaWYgKG5OZXdMZW4gPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZ1cobk5ld0xlbik7DQorICAgIGlmIChtX3BEYXRhKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZywgc3RyMS5HZXRQdHIoKSwgc3RyMS5HZXRMZW5ndGgoKSpzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nICsgc3RyMS5HZXRMZW5ndGgoKSwgc3RyMi5HZXRQdHIoKSwgc3RyMi5HZXRMZW5ndGgoKSpzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9XaWRlU3RyaW5nOjpSZWxlYXNlQnVmZmVyKEZYX1NUUlNJWkUgbk5ld0xlbmd0aCkNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDb3B5QmVmb3JlV3JpdGUoKTsNCisgICAgaWYgKG5OZXdMZW5ndGggPT0gLTEpIHsNCisgICAgICAgIG5OZXdMZW5ndGggPSBtX3BEYXRhID8gKEZYX1NUUlNJWkUpRlhTWVNfd2NzbGVuKG1fcERhdGEtPm1fU3RyaW5nKSA6IDA7DQorICAgIH0NCisgICAgaWYgKG5OZXdMZW5ndGggPT0gMCkgew0KKyAgICAgICAgRW1wdHkoKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWFNZU19hc3NlcnQobk5ld0xlbmd0aCA8PSBtX3BEYXRhLT5tX25BbGxvY0xlbmd0aCk7DQorICAgIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggPSBuTmV3TGVuZ3RoOw0KKyAgICBtX3BEYXRhLT5tX1N0cmluZ1tuTmV3TGVuZ3RoXSA9IDA7DQorfQ0KK2NvbnN0IENGWF9XaWRlU3RyaW5nJiBDRlhfV2lkZVN0cmluZzo6b3BlcmF0b3I9KEZYX0xQQ1dTVFIgbHBzeikNCit7DQorICAgIGlmIChscHN6ID09IE5VTEwgfHwgbHBzelswXSA9PSAwKSB7DQorICAgICAgICBFbXB0eSgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQXNzaWduQ29weSgoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4obHBzeiksIGxwc3opOw0KKyAgICB9DQorICAgIHJldHVybiAqdGhpczsNCit9DQorY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIENGWF9XaWRlU3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzdHJpbmdTcmMpDQorew0KKyAgICBpZiAoc3RyaW5nU3JjLklzRW1wdHkoKSkgew0KKyAgICAgICAgRW1wdHkoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEFzc2lnbkNvcHkoc3RyaW5nU3JjLkdldExlbmd0aCgpLCBzdHJpbmdTcmMuR2V0UHRyKCkpOw0KKyAgICB9DQorICAgIHJldHVybiAqdGhpczsNCit9DQorY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIENGWF9XaWRlU3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cmluZ1NyYykNCit7DQorICAgIGlmIChtX3BEYXRhID09IHN0cmluZ1NyYy5tX3BEYXRhKSB7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgICAgaWYgKHN0cmluZ1NyYy5Jc0VtcHR5KCkpIHsNCisgICAgICAgIEVtcHR5KCk7DQorICAgIH0gZWxzZSBpZiAoKG1fcERhdGEgJiYgbV9wRGF0YS0+bV9uUmVmcyA8IDApIHx8DQorICAgICAgICAgICAgICAgKHN0cmluZ1NyYy5tX3BEYXRhICYmIHN0cmluZ1NyYy5tX3BEYXRhLT5tX25SZWZzIDwgMCkpIHsNCisgICAgICAgIEFzc2lnbkNvcHkoc3RyaW5nU3JjLm1fcERhdGEtPm1fbkRhdGFMZW5ndGgsIHN0cmluZ1NyYy5tX3BEYXRhLT5tX1N0cmluZyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBFbXB0eSgpOw0KKyAgICAgICAgbV9wRGF0YSA9IHN0cmluZ1NyYy5tX3BEYXRhOw0KKyAgICAgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgICAgICBtX3BEYXRhLT5tX25SZWZzICsrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAqdGhpczsNCit9DQorY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIENGWF9XaWRlU3RyaW5nOjpvcGVyYXRvcis9KEZYX1dDSEFSIGNoKQ0KK3sNCisgICAgQ29uY2F0SW5QbGFjZSgxLCAmY2gpOw0KKyAgICByZXR1cm4gKnRoaXM7DQorfQ0KK2NvbnN0IENGWF9XaWRlU3RyaW5nJiBDRlhfV2lkZVN0cmluZzo6b3BlcmF0b3IrPShGWF9MUENXU1RSIGxwc3opDQorew0KKyAgICBpZiAobHBzeikgew0KKyAgICAgICAgQ29uY2F0SW5QbGFjZSgoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4obHBzeiksIGxwc3opOw0KKyAgICB9DQorICAgIHJldHVybiAqdGhpczsNCit9DQorY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIENGWF9XaWRlU3RyaW5nOjpvcGVyYXRvcis9KGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzdHJpbmcpDQorew0KKyAgICBpZiAoc3RyaW5nLm1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorICAgIENvbmNhdEluUGxhY2Uoc3RyaW5nLm1fcERhdGEtPm1fbkRhdGFMZW5ndGgsIHN0cmluZy5tX3BEYXRhLT5tX1N0cmluZyk7DQorICAgIHJldHVybiAqdGhpczsNCit9DQorY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIENGWF9XaWRlU3RyaW5nOjpvcGVyYXRvcis9KGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgc3RyaW5nKQ0KK3sNCisgICAgaWYgKHN0cmluZy5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICBDb25jYXRJblBsYWNlKHN0cmluZy5HZXRMZW5ndGgoKSwgc3RyaW5nLkdldFB0cigpKTsNCisgICAgcmV0dXJuICp0aGlzOw0KK30NCitib29sIG9wZXJhdG9yPT0oY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMxLCBGWF9MUENXU1RSIHMyKQ0KK3sNCisgICAgcmV0dXJuIHMxLkVxdWFsKHMyKTsNCit9DQorYm9vbCBvcGVyYXRvcj09KEZYX0xQQ1dTVFIgczEsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzMikNCit7DQorICAgIHJldHVybiBzMi5FcXVhbChzMSk7DQorfQ0KK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBDRlhfV2lkZVN0cmluZyYgczEsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzMikNCit7DQorICAgIHJldHVybiBzMS5FcXVhbChzMik7DQorfQ0KK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBDRlhfV2lkZVN0cmluZyYgczEsIGNvbnN0IENGWF9XaWRlU3RyaW5nQyYgczIpDQorew0KKyAgICByZXR1cm4gczEuRXF1YWwoczIpOw0KK30NCitib29sIG9wZXJhdG9yPT0oY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzMSwgY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMyKQ0KK3sNCisgICAgcmV0dXJuIHMyLkVxdWFsKHMxKTsNCit9DQorYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMxLCBGWF9MUENXU1RSIHMyKQ0KK3sNCisgICAgcmV0dXJuICFzMS5FcXVhbChzMik7DQorfQ0KK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBDRlhfV2lkZVN0cmluZyYgczEsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiBzMikNCit7DQorICAgIHJldHVybiAhczEuRXF1YWwoczIpOw0KK30NCitib29sIG9wZXJhdG9yIT0oY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHMxLCBjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHMyKQ0KK3sNCisgICAgcmV0dXJuICFzMS5FcXVhbChzMik7DQorfQ0KK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBDRlhfV2lkZVN0cmluZ0MmIHMxLCBjb25zdCBDRlhfV2lkZVN0cmluZyYgczIpDQorew0KKyAgICByZXR1cm4gIXMyLkVxdWFsKHMxKTsNCit9DQorYm9vbCBDRlhfV2lkZVN0cmluZzo6RXF1YWwoY29uc3QgQ0ZYX1dpZGVTdHJpbmdDJiBzdHIpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gc3RyLklzRW1wdHkoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gc3RyLkdldExlbmd0aCgpID09IG1fcERhdGEtPm1fbkRhdGFMZW5ndGggJiYNCisgICAgICAgICAgIEZYU1lTX21lbWNtcDMyKHN0ci5HZXRQdHIoKSwgbV9wRGF0YS0+bV9TdHJpbmcsIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggKiBzaXplb2YoRlhfV0NIQVIpKSA9PSAwOw0KK30NCit2b2lkIENGWF9XaWRlU3RyaW5nOjpFbXB0eSgpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fcERhdGEtPm1fblJlZnMgPiAxKSB7DQorICAgICAgICBtX3BEYXRhLT5tX25SZWZzIC0tOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfRnJlZShtX3BEYXRhKTsNCisgICAgfQ0KKyAgICBtX3BEYXRhID0gTlVMTDsNCit9DQordm9pZCBDRlhfV2lkZVN0cmluZzo6Q29uY2F0SW5QbGFjZShGWF9TVFJTSVpFIG5TcmNMZW4sIEZYX0xQQ1dTVFIgbHBzelNyY0RhdGEpDQorew0KKyAgICBpZiAoblNyY0xlbiA9PSAwIHx8IGxwc3pTcmNEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICBtX3BEYXRhID0gRlhfQWxsb2NTdHJpbmdXKG5TcmNMZW4pOw0KKyAgICAgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZywgbHBzelNyY0RhdGEsIG5TcmNMZW4gKiBzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wRGF0YS0+bV9uUmVmcyA+IDEgfHwgbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCArIG5TcmNMZW4gPiBtX3BEYXRhLT5tX25BbGxvY0xlbmd0aCkgew0KKyAgICAgICAgQ0ZYX1N0cmluZ0RhdGFXKiBwT2xkRGF0YSA9IG1fcERhdGE7DQorICAgICAgICBDb25jYXRDb3B5KG1fcERhdGEtPm1fbkRhdGFMZW5ndGgsIG1fcERhdGEtPm1fU3RyaW5nLCBuU3JjTGVuLCBscHN6U3JjRGF0YSk7DQorICAgICAgICBGWF9SZWxlYXNlU3RyaW5nVyhwT2xkRGF0YSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZyArIG1fcERhdGEtPm1fbkRhdGFMZW5ndGgsIGxwc3pTcmNEYXRhLCBuU3JjTGVuICogc2l6ZW9mKEZYX1dDSEFSKSk7DQorICAgICAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoICs9IG5TcmNMZW47DQorICAgICAgICBtX3BEYXRhLT5tX1N0cmluZ1ttX3BEYXRhLT5tX25EYXRhTGVuZ3RoXSA9IDA7DQorICAgIH0NCit9DQordm9pZCBDRlhfV2lkZVN0cmluZzo6Q29uY2F0Q29weShGWF9TVFJTSVpFIG5TcmMxTGVuLCBGWF9MUENXU1RSIGxwc3pTcmMxRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX1NUUlNJWkUgblNyYzJMZW4sIEZYX0xQQ1dTVFIgbHBzelNyYzJEYXRhKQ0KK3sNCisgICAgRlhfU1RSU0laRSBuTmV3TGVuID0gblNyYzFMZW4gKyBuU3JjMkxlbjsNCisgICAgaWYgKG5OZXdMZW4gPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZ1cobk5ld0xlbik7DQorICAgIGlmIChtX3BEYXRhKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZywgbHBzelNyYzFEYXRhLCBuU3JjMUxlbiAqIHNpemVvZihGWF9XQ0hBUikpOw0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wRGF0YS0+bV9TdHJpbmcgKyBuU3JjMUxlbiwgbHBzelNyYzJEYXRhLCBuU3JjMkxlbiAqIHNpemVvZihGWF9XQ0hBUikpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6OkNvcHlCZWZvcmVXcml0ZSgpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMIHx8IG1fcERhdGEtPm1fblJlZnMgPD0gMSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9TdHJpbmdEYXRhVyogcERhdGEgPSBtX3BEYXRhOw0KKyAgICBtX3BEYXRhLT5tX25SZWZzIC0tOw0KKyAgICBGWF9TVFJTSVpFIG5EYXRhTGVuZ3RoID0gcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZ1cobkRhdGFMZW5ndGgpOw0KKyAgICBpZiAobV9wRGF0YSAhPSBOVUxMKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BEYXRhLT5tX1N0cmluZywgcERhdGEtPm1fU3RyaW5nLCAobkRhdGFMZW5ndGggKyAxKSAqIHNpemVvZihGWF9XQ0hBUikpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6OkFsbG9jQmVmb3JlV3JpdGUoRlhfU1RSU0laRSBuTGVuKQ0KK3sNCisgICAgaWYgKG1fcERhdGEgJiYgbV9wRGF0YS0+bV9uUmVmcyA8PSAxICYmIG1fcERhdGEtPm1fbkFsbG9jTGVuZ3RoID49IG5MZW4pIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBFbXB0eSgpOw0KKyAgICBtX3BEYXRhID0gRlhfQWxsb2NTdHJpbmdXKG5MZW4pOw0KK30NCit2b2lkIENGWF9XaWRlU3RyaW5nOjpBc3NpZ25Db3B5KEZYX1NUUlNJWkUgblNyY0xlbiwgRlhfTFBDV1NUUiBscHN6U3JjRGF0YSkNCit7DQorICAgIEFsbG9jQmVmb3JlV3JpdGUoblNyY0xlbik7DQorICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nLCBscHN6U3JjRGF0YSwgblNyY0xlbiAqIHNpemVvZihGWF9XQ0hBUikpOw0KKyAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoID0gblNyY0xlbjsNCisgICAgbV9wRGF0YS0+bV9TdHJpbmdbblNyY0xlbl0gPSAwOw0KK30NCitpbnQgQ0ZYX1dpZGVTdHJpbmc6OkNvbXBhcmUoRlhfTFBDV1NUUiBscHN6KSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIChscHN6ID09IE5VTEwgfHwgbHBzelswXSA9PSAwKSA/IDAgOiAtMTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhTWVNfd2NzY21wKG1fcERhdGEtPm1fU3RyaW5nLCBscHN6KTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ0ZYX1dpZGVTdHJpbmc6OlVURjhFbmNvZGUoKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIEZYX1VURjhFbmNvZGUoKnRoaXMpOw0KK30NCitDRlhfQnl0ZVN0cmluZyBDRlhfV2lkZVN0cmluZzo6VVRGMTZMRV9FbmNvZGUoRlhfQk9PTCBiVGVybWluYXRlKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIGJUZXJtaW5hdGUgPyBDRlhfQnl0ZVN0cmluZyhGWF9CU1RSQygiXDBcMCIpKSA6IENGWF9CeXRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgaW50IGxlbiA9IG1fcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIENGWF9CeXRlU3RyaW5nIHJlc3VsdDsNCisgICAgRlhfTFBTVFIgYnVmZmVyID0gcmVzdWx0LkdldEJ1ZmZlcihsZW4gKiAyICsgKGJUZXJtaW5hdGUgPyAyIDogMCkpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSArKykgew0KKyAgICAgICAgYnVmZmVyW2kgKiAyXSA9IG1fcERhdGEtPm1fU3RyaW5nW2ldICYgMHhmZjsNCisgICAgICAgIGJ1ZmZlcltpICogMiArIDFdID0gbV9wRGF0YS0+bV9TdHJpbmdbaV0gPj4gODsNCisgICAgfQ0KKyAgICBpZiAoYlRlcm1pbmF0ZSkgew0KKyAgICAgICAgYnVmZmVyW2xlbiAqIDJdID0gMDsNCisgICAgICAgIGJ1ZmZlcltsZW4gKiAyICsgMV0gPSAwOw0KKyAgICAgICAgcmVzdWx0LlJlbGVhc2VCdWZmZXIobGVuICogMiArIDIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmVzdWx0LlJlbGVhc2VCdWZmZXIobGVuICogMik7DQorICAgIH0NCisgICAgcmV0dXJuIHJlc3VsdDsNCit9DQordm9pZCBDRlhfV2lkZVN0cmluZzo6Q29udmVydEZyb20oY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIHN0ciwgQ0ZYX0NoYXJNYXAqIHBDaGFyTWFwKQ0KK3sNCisgICAgaWYgKHBDaGFyTWFwID09IE5VTEwpIHsNCisgICAgICAgIHBDaGFyTWFwID0gQ0ZYX0NoYXJNYXA6OkdldERlZmF1bHRNYXBwZXIoKTsNCisgICAgfQ0KKyAgICAqdGhpcyA9IHBDaGFyTWFwLT5tX0dldFdpZGVTdHJpbmcocENoYXJNYXAsIHN0cik7DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6OlJlc2VydmUoRlhfU1RSU0laRSBsZW4pDQorew0KKyAgICBHZXRCdWZmZXIobGVuKTsNCisgICAgUmVsZWFzZUJ1ZmZlcihHZXRMZW5ndGgoKSk7DQorfQ0KK0ZYX0xQV1NUUiBDRlhfV2lkZVN0cmluZzo6R2V0QnVmZmVyKEZYX1NUUlNJWkUgbk1pbkJ1Zkxlbmd0aCkNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwgJiYgbk1pbkJ1Zkxlbmd0aCA9PSAwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAobV9wRGF0YSAmJiBtX3BEYXRhLT5tX25SZWZzIDw9IDEgJiYgbV9wRGF0YS0+bV9uQWxsb2NMZW5ndGggPj0gbk1pbkJ1Zkxlbmd0aCkgew0KKyAgICAgICAgcmV0dXJuIG1fcERhdGEtPm1fU3RyaW5nOw0KKyAgICB9DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIG1fcERhdGEgPSBGWF9BbGxvY1N0cmluZ1cobk1pbkJ1Zkxlbmd0aCk7DQorICAgICAgICBpZiAoIW1fcERhdGEpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggPSAwOw0KKyAgICAgICAgbV9wRGF0YS0+bV9TdHJpbmdbMF0gPSAwOw0KKyAgICAgICAgcmV0dXJuIG1fcERhdGEtPm1fU3RyaW5nOw0KKyAgICB9DQorICAgIENGWF9TdHJpbmdEYXRhVyogcE9sZERhdGEgPSBtX3BEYXRhOw0KKyAgICBGWF9TVFJTSVpFIG5PbGRMZW4gPSBwT2xkRGF0YS0+bV9uRGF0YUxlbmd0aDsNCisgICAgaWYgKG5NaW5CdWZMZW5ndGggPCBuT2xkTGVuKSB7DQorICAgICAgICBuTWluQnVmTGVuZ3RoID0gbk9sZExlbjsNCisgICAgfQ0KKyAgICBtX3BEYXRhID0gRlhfQWxsb2NTdHJpbmdXKG5NaW5CdWZMZW5ndGgpOw0KKyAgICBpZiAoIW1fcERhdGEpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nLCBwT2xkRGF0YS0+bV9TdHJpbmcsIChuT2xkTGVuICsgMSkqc2l6ZW9mKEZYX1dDSEFSKSk7DQorICAgIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggPSBuT2xkTGVuOw0KKyAgICBwT2xkRGF0YS0+bV9uUmVmcyAtLTsNCisgICAgaWYgKHBPbGREYXRhLT5tX25SZWZzIDw9IDApIHsNCisgICAgICAgIEZYX0ZyZWUocE9sZERhdGEpOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BEYXRhLT5tX1N0cmluZzsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbChjb25zdCBjaGFyKiBzdHIsIEZYX1NUUlNJWkUgbGVuKQ0KK3sNCisgICAgQ0ZYX1dpZGVTdHJpbmcgcmVzdWx0Ow0KKyAgICByZXN1bHQuQ29udmVydEZyb20oQ0ZYX0J5dGVTdHJpbmcoc3RyLCBsZW4pKTsNCisgICAgcmV0dXJuIHJlc3VsdDsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ0ZYX1dpZGVTdHJpbmc6OkZyb21VVEY4KGNvbnN0IGNoYXIqIHN0ciwgRlhfU1RSU0laRSBsZW4pDQorew0KKyAgICBpZiAoIXN0cikgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgaWYgKGxlbiA8IDApIHsNCisgICAgICAgIGxlbiA9IDA7DQorICAgICAgICB3aGlsZSAoc3RyW2xlbl0pIHsNCisgICAgICAgICAgICBsZW4gKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgQ0ZYX1VURjhEZWNvZGVyIGRlY29kZXI7DQorICAgIGZvciAoRlhfU1RSU0laRSBpID0gMDsgaSA8IGxlbjsgaSArKykgew0KKyAgICAgICAgZGVjb2Rlci5JbnB1dChzdHJbaV0pOw0KKyAgICB9DQorICAgIHJldHVybiBkZWNvZGVyLkdldFJlc3VsdCgpOw0KK30NCitDRlhfV2lkZVN0cmluZyBDRlhfV2lkZVN0cmluZzo6RnJvbVVURjE2TEUoY29uc3QgdW5zaWduZWQgc2hvcnQqIHdzdHIsIEZYX1NUUlNJWkUgd2xlbikNCit7DQorICAgIGlmICghd3N0ciB8fCAhd2xlbikgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgaWYgKHdsZW4gPCAwKSB7DQorICAgICAgICB3bGVuID0gMDsNCisgICAgICAgIHdoaWxlICh3c3RyW3dsZW5dKSB7DQorICAgICAgICAgICAgd2xlbiArKzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDRlhfV2lkZVN0cmluZyByZXN1bHQ7DQorICAgIEZYX1dDSEFSKiBidWYgPSByZXN1bHQuR2V0QnVmZmVyKHdsZW4pOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHdsZW47IGkgKyspIHsNCisgICAgICAgIGJ1ZltpXSA9IHdzdHJbaV07DQorICAgIH0NCisgICAgcmVzdWx0LlJlbGVhc2VCdWZmZXIod2xlbik7DQorICAgIHJldHVybiByZXN1bHQ7DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6OkFsbG9jQ29weShDRlhfV2lkZVN0cmluZyYgZGVzdCwgRlhfU1RSU0laRSBuQ29weUxlbiwgRlhfU1RSU0laRSBuQ29weUluZGV4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9TVFJTSVpFIG5FeHRyYUxlbikgY29uc3QNCit7DQorICAgIEZYX1NUUlNJWkUgbk5ld0xlbiA9IG5Db3B5TGVuICsgbkV4dHJhTGVuOw0KKyAgICBpZiAobk5ld0xlbiA9PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQVNTRVJUKGRlc3QubV9wRGF0YSA9PSBOVUxMKTsNCisgICAgZGVzdC5tX3BEYXRhID0gRlhfQWxsb2NTdHJpbmdXKG5OZXdMZW4pOw0KKyAgICBpZiAoZGVzdC5tX3BEYXRhKSB7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0Lm1fcERhdGEtPm1fU3RyaW5nLCBtX3BEYXRhLT5tX1N0cmluZyArIG5Db3B5SW5kZXgsIG5Db3B5TGVuICogc2l6ZW9mKEZYX1dDSEFSKSk7DQorICAgIH0NCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ0ZYX1dpZGVTdHJpbmc6OkxlZnQoRlhfU1RSU0laRSBuQ291bnQpIGNvbnN0DQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICBpZiAobkNvdW50IDwgMCkgew0KKyAgICAgICAgbkNvdW50ID0gMDsNCisgICAgfQ0KKyAgICBpZiAobkNvdW50ID49IG1fcERhdGEtPm1fbkRhdGFMZW5ndGgpIHsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyAgICBDRlhfV2lkZVN0cmluZyBkZXN0Ow0KKyAgICBBbGxvY0NvcHkoZGVzdCwgbkNvdW50LCAwLCAwKTsNCisgICAgcmV0dXJuIGRlc3Q7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENGWF9XaWRlU3RyaW5nOjpNaWQoRlhfU1RSU0laRSBuRmlyc3QpIGNvbnN0DQorew0KKyAgICByZXR1cm4gTWlkKG5GaXJzdCwgbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCAtIG5GaXJzdCk7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENGWF9XaWRlU3RyaW5nOjpNaWQoRlhfU1RSU0laRSBuRmlyc3QsIEZYX1NUUlNJWkUgbkNvdW50KSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgaWYgKG5GaXJzdCA8IDApIHsNCisgICAgICAgIG5GaXJzdCA9IDA7DQorICAgIH0NCisgICAgaWYgKG5Db3VudCA8IDApIHsNCisgICAgICAgIG5Db3VudCA9IDA7DQorICAgIH0NCisgICAgaWYgKG5GaXJzdCArIG5Db3VudCA+IG1fcERhdGEtPm1fbkRhdGFMZW5ndGgpIHsNCisgICAgICAgIG5Db3VudCA9IG1fcERhdGEtPm1fbkRhdGFMZW5ndGggLSBuRmlyc3Q7DQorICAgIH0NCisgICAgaWYgKG5GaXJzdCA+IG1fcERhdGEtPm1fbkRhdGFMZW5ndGgpIHsNCisgICAgICAgIG5Db3VudCA9IDA7DQorICAgIH0NCisgICAgaWYgKG5GaXJzdCA9PSAwICYmIG5GaXJzdCArIG5Db3VudCA9PSBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoKSB7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgZGVzdDsNCisgICAgQWxsb2NDb3B5KGRlc3QsIG5Db3VudCwgbkZpcnN0LCAwKTsNCisgICAgcmV0dXJuIGRlc3Q7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENGWF9XaWRlU3RyaW5nOjpSaWdodChGWF9TVFJTSVpFIG5Db3VudCkgY29uc3QNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZygpOw0KKyAgICB9DQorICAgIGlmIChuQ291bnQgPCAwKSB7DQorICAgICAgICBuQ291bnQgPSAwOw0KKyAgICB9DQorICAgIGlmIChuQ291bnQgPj0gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aCkgew0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorICAgIENGWF9XaWRlU3RyaW5nIGRlc3Q7DQorICAgIEFsbG9jQ29weShkZXN0LCBuQ291bnQsIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggLSBuQ291bnQsIDApOw0KKyAgICByZXR1cm4gZGVzdDsNCit9DQoraW50IENGWF9XaWRlU3RyaW5nOjpDb21wYXJlTm9DYXNlKEZYX0xQQ1dTVFIgbHBzeikgY29uc3QNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAobHBzeiA9PSBOVUxMIHx8IGxwc3pbMF0gPT0gMCkgPyAwIDogLTE7DQorICAgIH0NCisgICAgcmV0dXJuIEZYU1lTX3djc2ljbXAobV9wRGF0YS0+bV9TdHJpbmcsIGxwc3opOw0KK30NCitpbnQgQ0ZYX1dpZGVTdHJpbmc6OkNvbXBhcmUoY29uc3QgQ0ZYX1dpZGVTdHJpbmcmIHN0cikgY29uc3QNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIGlmIChzdHIubV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0gZWxzZSBpZiAoc3RyLm1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgaW50IHRoaXNfbGVuID0gbV9wRGF0YS0+bV9uRGF0YUxlbmd0aDsNCisgICAgaW50IHRoYXRfbGVuID0gc3RyLm1fcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIGludCBtaW5fbGVuID0gdGhpc19sZW4gPCB0aGF0X2xlbiA/IHRoaXNfbGVuIDogdGhhdF9sZW47DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWluX2xlbjsgaSArKykgew0KKyAgICAgICAgaWYgKG1fcERhdGEtPm1fU3RyaW5nW2ldIDwgc3RyLm1fcERhdGEtPm1fU3RyaW5nW2ldKSB7DQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfSBlbHNlIGlmIChtX3BEYXRhLT5tX1N0cmluZ1tpXSA+IHN0ci5tX3BEYXRhLT5tX1N0cmluZ1tpXSkgew0KKyAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICh0aGlzX2xlbiA8IHRoYXRfbGVuKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0gZWxzZSBpZiAodGhpc19sZW4gPiB0aGF0X2xlbikgew0KKyAgICAgICAgcmV0dXJuIDE7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KK0ZYX0xQV1NUUiBDRlhfV2lkZVN0cmluZzo6TG9ja0J1ZmZlcigpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9MUFdTVFIgbHBzeiA9IEdldEJ1ZmZlcigwKTsNCisgICAgbV9wRGF0YS0+bV9uUmVmcyA9IC0xOw0KKyAgICByZXR1cm4gbHBzejsNCit9DQordm9pZCBDRlhfV2lkZVN0cmluZzo6U2V0QXQoRlhfU1RSU0laRSBuSW5kZXgsIEZYX1dDSEFSIGNoKQ0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEFTU0VSVChuSW5kZXggPj0gMCk7DQorICAgIEFTU0VSVChuSW5kZXggPCBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoKTsNCisgICAgQ29weUJlZm9yZVdyaXRlKCk7DQorICAgIG1fcERhdGEtPm1fU3RyaW5nW25JbmRleF0gPSBjaDsNCit9DQordm9pZCBDRlhfV2lkZVN0cmluZzo6TWFrZUxvd2VyKCkNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDb3B5QmVmb3JlV3JpdGUoKTsNCisgICAgaWYgKEdldExlbmd0aCgpIDwgMSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYU1lTX3djc2x3cihtX3BEYXRhLT5tX1N0cmluZyk7DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6Ok1ha2VVcHBlcigpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ29weUJlZm9yZVdyaXRlKCk7DQorICAgIGlmIChHZXRMZW5ndGgoKSA8IDEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWFNZU193Y3N1cHIobV9wRGF0YS0+bV9TdHJpbmcpOw0KK30NCitGWF9TVFJTSVpFIENGWF9XaWRlU3RyaW5nOjpGaW5kKEZYX0xQQ1dTVFIgbHBzelN1YiwgRlhfU1RSU0laRSBuU3RhcnQpIGNvbnN0DQorew0KKyAgICBGWF9TVFJTSVpFIG5MZW5ndGggPSBHZXRMZW5ndGgoKTsNCisgICAgaWYgKG5MZW5ndGggPCAxIHx8IG5TdGFydCA+IG5MZW5ndGgpIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKyAgICBGWF9MUENXU1RSIGxwc3ogPSAoRlhfTFBDV1NUUilGWFNZU193Y3NzdHIobV9wRGF0YS0+bV9TdHJpbmcgKyBuU3RhcnQsIGxwc3pTdWIpOw0KKyAgICByZXR1cm4gKGxwc3ogPT0gTlVMTCkgPyAtMSA6IChpbnQpKGxwc3ogLSBtX3BEYXRhLT5tX1N0cmluZyk7DQorfQ0KK0ZYX1NUUlNJWkUgQ0ZYX1dpZGVTdHJpbmc6OkZpbmQoRlhfV0NIQVIgY2gsIEZYX1NUUlNJWkUgblN0YXJ0KSBjb25zdA0KK3sNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIEZYX1NUUlNJWkUgbkxlbmd0aCA9IG1fcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIGlmIChuU3RhcnQgPj0gbkxlbmd0aCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIEZYX0xQQ1dTVFIgbHBzeiA9IChGWF9MUENXU1RSKUZYU1lTX3djc2NocihtX3BEYXRhLT5tX1N0cmluZyArIG5TdGFydCwgY2gpOw0KKyAgICByZXR1cm4gKGxwc3ogPT0gTlVMTCkgPyAtMSA6IChpbnQpKGxwc3ogLSBtX3BEYXRhLT5tX1N0cmluZyk7DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6OlRyaW1SaWdodChGWF9MUENXU1RSIGxwc3pUYXJnZXRMaXN0KQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KGxwc3pUYXJnZXRMaXN0ICE9IE5VTEwpOw0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMIHx8ICpscHN6VGFyZ2V0TGlzdCA9PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ29weUJlZm9yZVdyaXRlKCk7DQorICAgIEZYX1NUUlNJWkUgbGVuID0gR2V0TGVuZ3RoKCk7DQorICAgIGlmIChsZW4gPCAxKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfU1RSU0laRSBwb3MgPSBsZW47DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIGlmIChGWFNZU193Y3NjaHIobHBzelRhcmdldExpc3QsIG1fcERhdGEtPm1fU3RyaW5nW3BvcyAtIDFdKSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBwb3MgLS07DQorICAgIH0NCisgICAgaWYgKHBvcyA8IGxlbikgew0KKyAgICAgICAgbV9wRGF0YS0+bV9TdHJpbmdbcG9zXSA9IDA7DQorICAgICAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoID0gcG9zOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6OlRyaW1SaWdodChGWF9XQ0hBUiBjaFRhcmdldCkNCit7DQorICAgIEZYX1dDSEFSIHN0clsyXSA9IHtjaFRhcmdldCwgMH07DQorICAgIFRyaW1SaWdodChzdHIpOw0KK30NCit2b2lkIENGWF9XaWRlU3RyaW5nOjpUcmltUmlnaHQoKQ0KK3sNCisgICAgVHJpbVJpZ2h0KEwiXHgwOVx4MGFceDBiXHgwY1x4MGRceDIwIik7DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6OlRyaW1MZWZ0KEZYX0xQQ1dTVFIgbHBzelRhcmdldHMpDQorew0KKyAgICBGWFNZU19hc3NlcnQobHBzelRhcmdldHMgIT0gTlVMTCk7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwgfHwgKmxwc3pUYXJnZXRzID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDb3B5QmVmb3JlV3JpdGUoKTsNCisgICAgaWYgKEdldExlbmd0aCgpIDwgMSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0xQQ1dTVFIgbHBzeiA9IG1fcERhdGEtPm1fU3RyaW5nOw0KKyAgICB3aGlsZSAoKmxwc3ogIT0gMCkgew0KKyAgICAgICAgaWYgKEZYU1lTX3djc2NocihscHN6VGFyZ2V0cywgKmxwc3opID09IE5VTEwpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGxwc3ogKys7DQorICAgIH0NCisgICAgaWYgKGxwc3ogIT0gbV9wRGF0YS0+bV9TdHJpbmcpIHsNCisgICAgICAgIGludCBuRGF0YUxlbmd0aCA9IG1fcERhdGEtPm1fbkRhdGFMZW5ndGggLSAoRlhfU1RSU0laRSkobHBzeiAtIG1fcERhdGEtPm1fU3RyaW5nKTsNCisgICAgICAgIEZYU1lTX21lbW1vdmUzMihtX3BEYXRhLT5tX1N0cmluZywgbHBzeiwgKG5EYXRhTGVuZ3RoICsgMSkqc2l6ZW9mKEZYX1dDSEFSKSk7DQorICAgICAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoID0gbkRhdGFMZW5ndGg7DQorICAgIH0NCit9DQordm9pZCBDRlhfV2lkZVN0cmluZzo6VHJpbUxlZnQoRlhfV0NIQVIgY2hUYXJnZXQpDQorew0KKyAgICBGWF9XQ0hBUiBzdHJbMl0gPSB7Y2hUYXJnZXQsIDB9Ow0KKyAgICBUcmltTGVmdChzdHIpOw0KK30NCit2b2lkIENGWF9XaWRlU3RyaW5nOjpUcmltTGVmdCgpDQorew0KKyAgICBUcmltTGVmdChMIlx4MDlceDBhXHgwYlx4MGNceDBkXHgyMCIpOw0KK30NCitGWF9TVFJTSVpFIENGWF9XaWRlU3RyaW5nOjpSZXBsYWNlKEZYX0xQQ1dTVFIgbHBzek9sZCwgRlhfTFBDV1NUUiBscHN6TmV3KQ0KK3sNCisgICAgaWYgKEdldExlbmd0aCgpIDwgMSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKGxwc3pPbGQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfU1RSU0laRSBuU291cmNlTGVuID0gKEZYX1NUUlNJWkUpRlhTWVNfd2NzbGVuKGxwc3pPbGQpOw0KKyAgICBpZiAoblNvdXJjZUxlbiA9PSAwKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBGWF9TVFJTSVpFIG5SZXBsYWNlbWVudExlbiA9IGxwc3pOZXcgPyAoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4obHBzek5ldykgOiAwOw0KKyAgICBGWF9TVFJTSVpFIG5Db3VudCA9IDA7DQorICAgIEZYX0xQV1NUUiBscHN6U3RhcnQgPSBtX3BEYXRhLT5tX1N0cmluZzsNCisgICAgRlhfTFBXU1RSIGxwc3pFbmQgPSBtX3BEYXRhLT5tX1N0cmluZyArIG1fcERhdGEtPm1fbkRhdGFMZW5ndGg7DQorICAgIEZYX0xQV1NUUiBscHN6VGFyZ2V0Ow0KKyAgICB7DQorICAgICAgICB3aGlsZSAoKGxwc3pUYXJnZXQgPSAoRlhfTFBXU1RSKUZYU1lTX3djc3N0cihscHN6U3RhcnQsIGxwc3pPbGQpKSAhPSBOVUxMICYmIGxwc3pTdGFydCA8IGxwc3pFbmQpIHsNCisgICAgICAgICAgICBuQ291bnQrKzsNCisgICAgICAgICAgICBscHN6U3RhcnQgPSBscHN6VGFyZ2V0ICsgblNvdXJjZUxlbjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobkNvdW50ID4gMCkgew0KKyAgICAgICAgQ29weUJlZm9yZVdyaXRlKCk7DQorICAgICAgICBGWF9TVFJTSVpFIG5PbGRMZW5ndGggPSBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoOw0KKyAgICAgICAgRlhfU1RSU0laRSBuTmV3TGVuZ3RoID0gIG5PbGRMZW5ndGggKyAoblJlcGxhY2VtZW50TGVuIC0gblNvdXJjZUxlbikgKiBuQ291bnQ7DQorICAgICAgICBpZiAobV9wRGF0YS0+bV9uQWxsb2NMZW5ndGggPCBuTmV3TGVuZ3RoIHx8IG1fcERhdGEtPm1fblJlZnMgPiAxKSB7DQorICAgICAgICAgICAgQ0ZYX1N0cmluZ0RhdGFXKiBwT2xkRGF0YSA9IG1fcERhdGE7DQorICAgICAgICAgICAgRlhfTFBDV1NUUiBwc3RyID0gbV9wRGF0YS0+bV9TdHJpbmc7DQorICAgICAgICAgICAgbV9wRGF0YSA9IEZYX0FsbG9jU3RyaW5nVyhuTmV3TGVuZ3RoKTsNCisgICAgICAgICAgICBpZiAoIW1fcERhdGEpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcERhdGEtPm1fU3RyaW5nLCBwc3RyLCBwT2xkRGF0YS0+bV9uRGF0YUxlbmd0aCAqIHNpemVvZihGWF9XQ0hBUikpOw0KKyAgICAgICAgICAgIEZYX1JlbGVhc2VTdHJpbmdXKHBPbGREYXRhKTsNCisgICAgICAgIH0NCisgICAgICAgIGxwc3pTdGFydCA9IG1fcERhdGEtPm1fU3RyaW5nOw0KKyAgICAgICAgbHBzekVuZCA9IG1fcERhdGEtPm1fU3RyaW5nICsgRlhfTUFYKG1fcERhdGEtPm1fbkRhdGFMZW5ndGgsIG5OZXdMZW5ndGgpOw0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHdoaWxlICgobHBzelRhcmdldCA9IChGWF9MUFdTVFIpRlhTWVNfd2Nzc3RyKGxwc3pTdGFydCwgbHBzek9sZCkpICE9IE5VTEwgJiYgbHBzelN0YXJ0IDwgbHBzekVuZCkgew0KKyAgICAgICAgICAgICAgICBGWF9TVFJTSVpFIG5CYWxhbmNlID0gbk9sZExlbmd0aCAtIChGWF9TVFJTSVpFKShscHN6VGFyZ2V0IC0gbV9wRGF0YS0+bV9TdHJpbmcgKyBuU291cmNlTGVuKTsNCisgICAgICAgICAgICAgICAgRlhTWVNfbWVtbW92ZTMyKGxwc3pUYXJnZXQgKyBuUmVwbGFjZW1lbnRMZW4sIGxwc3pUYXJnZXQgKyBuU291cmNlTGVuLCBuQmFsYW5jZSAqIHNpemVvZihGWF9XQ0hBUikpOw0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihscHN6VGFyZ2V0LCBscHN6TmV3LCBuUmVwbGFjZW1lbnRMZW4gKiBzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgICAgICAgICAgICAgbHBzelN0YXJ0ID0gbHBzelRhcmdldCArIG5SZXBsYWNlbWVudExlbjsNCisgICAgICAgICAgICAgICAgbHBzelN0YXJ0W25CYWxhbmNlXSA9IDA7DQorICAgICAgICAgICAgICAgIG5PbGRMZW5ndGggKz0gKG5SZXBsYWNlbWVudExlbiAtIG5Tb3VyY2VMZW4pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEFTU0VSVChtX3BEYXRhLT5tX1N0cmluZ1tuTmV3TGVuZ3RoXSA9PSAwKTsNCisgICAgICAgIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggPSBuTmV3TGVuZ3RoOw0KKyAgICB9DQorICAgIHJldHVybiBuQ291bnQ7DQorfQ0KK0ZYX1NUUlNJWkUgQ0ZYX1dpZGVTdHJpbmc6Okluc2VydChGWF9TVFJTSVpFIG5JbmRleCwgRlhfV0NIQVIgY2gpDQorew0KKyAgICBDb3B5QmVmb3JlV3JpdGUoKTsNCisgICAgaWYgKG5JbmRleCA8IDApIHsNCisgICAgICAgIG5JbmRleCA9IDA7DQorICAgIH0NCisgICAgRlhfU1RSU0laRSBuTmV3TGVuZ3RoID0gR2V0TGVuZ3RoKCk7DQorICAgIGlmIChuSW5kZXggPiBuTmV3TGVuZ3RoKSB7DQorICAgICAgICBuSW5kZXggPSBuTmV3TGVuZ3RoOw0KKyAgICB9DQorICAgIG5OZXdMZW5ndGgrKzsNCisgICAgaWYgKG1fcERhdGEgPT0gTlVMTCB8fCBtX3BEYXRhLT5tX25BbGxvY0xlbmd0aCA8IG5OZXdMZW5ndGgpIHsNCisgICAgICAgIENGWF9TdHJpbmdEYXRhVyogcE9sZERhdGEgPSBtX3BEYXRhOw0KKyAgICAgICAgRlhfTFBDV1NUUiBwc3RyID0gbV9wRGF0YS0+bV9TdHJpbmc7DQorICAgICAgICBtX3BEYXRhID0gRlhfQWxsb2NTdHJpbmdXKG5OZXdMZW5ndGgpOw0KKyAgICAgICAgaWYgKCFtX3BEYXRhKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICBpZihwT2xkRGF0YSAhPSBOVUxMKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtbW92ZTMyKG1fcERhdGEtPm1fU3RyaW5nLCBwc3RyLCAocE9sZERhdGEtPm1fbkRhdGFMZW5ndGggKyAxKSpzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgICAgICAgICBGWF9SZWxlYXNlU3RyaW5nVyhwT2xkRGF0YSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fcERhdGEtPm1fU3RyaW5nWzBdID0gMDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWFNZU19tZW1tb3ZlMzIobV9wRGF0YS0+bV9TdHJpbmcgKyBuSW5kZXggKyAxLA0KKyAgICAgICAgICAgICAgICAgICAgbV9wRGF0YS0+bV9TdHJpbmcgKyBuSW5kZXgsIChuTmV3TGVuZ3RoIC0gbkluZGV4KSpzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgbV9wRGF0YS0+bV9TdHJpbmdbbkluZGV4XSA9IGNoOw0KKyAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoID0gbk5ld0xlbmd0aDsNCisgICAgcmV0dXJuIG5OZXdMZW5ndGg7DQorfQ0KK0ZYX1NUUlNJWkUgQ0ZYX1dpZGVTdHJpbmc6OkRlbGV0ZShGWF9TVFJTSVpFIG5JbmRleCwgRlhfU1RSU0laRSBuQ291bnQpDQorew0KKyAgICBpZiAoR2V0TGVuZ3RoKCkgPCAxKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAobkluZGV4IDwgMCkgew0KKyAgICAgICAgbkluZGV4ID0gMDsNCisgICAgfQ0KKyAgICBGWF9TVFJTSVpFIG5PbGRMZW5ndGggPSBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoOw0KKyAgICBpZiAobkNvdW50ID4gMCAmJiBuSW5kZXggPCBuT2xkTGVuZ3RoKSB7DQorICAgICAgICBDb3B5QmVmb3JlV3JpdGUoKTsNCisgICAgICAgIGludCBuQnl0ZXNUb0NvcHkgPSBuT2xkTGVuZ3RoIC0gKG5JbmRleCArIG5Db3VudCkgKyAxOw0KKyAgICAgICAgRlhTWVNfbWVtbW92ZTMyKG1fcERhdGEtPm1fU3RyaW5nICsgbkluZGV4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcERhdGEtPm1fU3RyaW5nICsgbkluZGV4ICsgbkNvdW50LCBuQnl0ZXNUb0NvcHkgKiBzaXplb2YoRlhfV0NIQVIpKTsNCisgICAgICAgIG1fcERhdGEtPm1fbkRhdGFMZW5ndGggPSBuT2xkTGVuZ3RoIC0gbkNvdW50Ow0KKyAgICB9DQorICAgIHJldHVybiBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoOw0KK30NCitGWF9TVFJTSVpFIENGWF9XaWRlU3RyaW5nOjpSZW1vdmUoRlhfV0NIQVIgY2hSZW1vdmUpDQorew0KKyAgICBpZiAobV9wRGF0YSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBDb3B5QmVmb3JlV3JpdGUoKTsNCisgICAgaWYgKEdldExlbmd0aCgpIDwgMSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfTFBXU1RSIHBzdHJTb3VyY2UgPSBtX3BEYXRhLT5tX1N0cmluZzsNCisgICAgRlhfTFBXU1RSIHBzdHJEZXN0ID0gbV9wRGF0YS0+bV9TdHJpbmc7DQorICAgIEZYX0xQV1NUUiBwc3RyRW5kID0gbV9wRGF0YS0+bV9TdHJpbmcgKyBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoOw0KKyAgICB3aGlsZSAocHN0clNvdXJjZSA8IHBzdHJFbmQpIHsNCisgICAgICAgIGlmICgqcHN0clNvdXJjZSAhPSBjaFJlbW92ZSkgew0KKyAgICAgICAgICAgICpwc3RyRGVzdCA9ICpwc3RyU291cmNlOw0KKyAgICAgICAgICAgIHBzdHJEZXN0ICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcHN0clNvdXJjZSArKzsNCisgICAgfQ0KKyAgICAqcHN0ckRlc3QgPSAwOw0KKyAgICBGWF9TVFJTSVpFIG5Db3VudCA9IChGWF9TVFJTSVpFKShwc3RyU291cmNlIC0gcHN0ckRlc3QpOw0KKyAgICBtX3BEYXRhLT5tX25EYXRhTGVuZ3RoIC09IG5Db3VudDsNCisgICAgcmV0dXJuIG5Db3VudDsNCit9DQorI2RlZmluZSBGT1JDRV9BTlNJICAgICAgMHgxMDAwMA0KKyNkZWZpbmUgRk9SQ0VfVU5JQ09ERSAgIDB4MjAwMDANCisjZGVmaW5lIEZPUkNFX0lOVDY0ICAgICAweDQwMDAwDQordm9pZCBDRlhfV2lkZVN0cmluZzo6Rm9ybWF0VihGWF9MUENXU1RSIGxwc3pGb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkNCit7DQorICAgIHZhX2xpc3QgYXJnTGlzdFNhdmU7DQorI2lmIGRlZmluZWQoX19BUk1DQ19WRVJTSU9OKSB8fCAoIWRlZmluZWQoX01TQ19WRVIpICYmIChfRlhfQ1BVXyA9PSBfRlhfWDY0XyB8fCBfRlhfQ1BVXyA9PSBfRlhfSUE2NF8gfHwgX0ZYX0NQVV8gPT0gX0ZYX0FSTTY0XykpIHx8IGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pDQorICAgIHZhX2NvcHkoYXJnTGlzdFNhdmUsIGFyZ0xpc3QpOw0KKyNlbHNlDQorICAgIGFyZ0xpc3RTYXZlID0gYXJnTGlzdDsNCisjZW5kaWYNCisgICAgaW50IG5NYXhMZW4gPSAwOw0KKyAgICBmb3IgKEZYX0xQQ1dTVFIgbHBzeiA9IGxwc3pGb3JtYXQ7ICpscHN6ICE9IDA7IGxwc3ogKyspIHsNCisgICAgICAgIGlmICgqbHBzeiAhPSAnJScgfHwgKihscHN6ID0gbHBzeiArIDEpID09ICclJykgew0KKyAgICAgICAgICAgIG5NYXhMZW4gKz0gKEZYX1NUUlNJWkUpRlhTWVNfd2NzbGVuKGxwc3opOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IG5JdGVtTGVuID0gMDsNCisgICAgICAgIGludCBuV2lkdGggPSAwOw0KKyAgICAgICAgZm9yICg7ICpscHN6ICE9IDA7IGxwc3ogKyspIHsNCisgICAgICAgICAgICBpZiAoKmxwc3ogPT0gJyMnKSB7DQorICAgICAgICAgICAgICAgIG5NYXhMZW4gKz0gMjsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKCpscHN6ID09ICcqJykgew0KKyAgICAgICAgICAgICAgICBuV2lkdGggPSB2YV9hcmcoYXJnTGlzdCwgaW50KTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKCpscHN6ID09ICctJyB8fCAqbHBzeiA9PSAnKycgfHwgKmxwc3ogPT0gJzAnIHx8DQorICAgICAgICAgICAgICAgICAgICAgICAqbHBzeiA9PSAnICcpDQorICAgICAgICAgICAgICAgIDsNCisgICAgICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG5XaWR0aCA9PSAwKSB7DQorICAgICAgICAgICAgbldpZHRoID0gRlhTWVNfd3RvaShscHN6KTsNCisgICAgICAgICAgICBmb3IgKDsgKmxwc3ogIT0gMCAmJiAoKmxwc3opIDw9ICc5JyAmJiAoKmxwc3opID49ICcwJzsgbHBzeiArKykNCisgICAgICAgICAgICAgICAgOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG5XaWR0aCA8IDAgfHwgbldpZHRoID4gMTI4ICogMTAyNCkgew0KKyAgICAgICAgICAgIGxwc3pGb3JtYXQgPSAoRlhfTFBDV1NUUilMIkJhZCB3aWR0aCI7DQorICAgICAgICAgICAgbk1heExlbiA9IDEwOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IG5QcmVjaXNpb24gPSAwOw0KKyAgICAgICAgaWYgKCpscHN6ID09ICcuJykgew0KKyAgICAgICAgICAgIGxwc3ogKys7DQorICAgICAgICAgICAgaWYgKCpscHN6ID09ICcqJykgew0KKyAgICAgICAgICAgICAgICBuUHJlY2lzaW9uID0gdmFfYXJnKGFyZ0xpc3QsIGludCk7DQorICAgICAgICAgICAgICAgIGxwc3ogKys7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgblByZWNpc2lvbiA9IEZYU1lTX3d0b2kobHBzeik7DQorICAgICAgICAgICAgICAgIGZvciAoOyAqbHBzeiAhPSAwICYmICgqbHBzeikgPj0gJzAnICYmICgqbHBzeikgPD0gJzknOyBscHN6ICsrKQ0KKyAgICAgICAgICAgICAgICAgICAgOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChuUHJlY2lzaW9uIDwgMCB8fCBuUHJlY2lzaW9uID4gMTI4ICogMTAyNCkgew0KKyAgICAgICAgICAgIGxwc3pGb3JtYXQgPSAoRlhfTFBDV1NUUilMIkJhZCBwcmVjaXNpb24iOw0KKyAgICAgICAgICAgIG5NYXhMZW4gPSAxNDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGludCBuTW9kaWZpZXIgPSAwOw0KKyAgICAgICAgaWYgKCpscHN6ID09IEwnSScgJiYgKihscHN6ICsgMSkgPT0gTCc2JyAmJiAqKGxwc3ogKyAyKSA9PSBMJzQnKSB7DQorICAgICAgICAgICAgbHBzeiArPSAzOw0KKyAgICAgICAgICAgIG5Nb2RpZmllciA9IEZPUkNFX0lOVDY0Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzd2l0Y2ggKCpscHN6KSB7DQorICAgICAgICAgICAgICAgIGNhc2UgJ2gnOg0KKyAgICAgICAgICAgICAgICAgICAgbk1vZGlmaWVyID0gRk9SQ0VfQU5TSTsNCisgICAgICAgICAgICAgICAgICAgIGxwc3ogKys7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAnbCc6DQorICAgICAgICAgICAgICAgICAgICBuTW9kaWZpZXIgPSBGT1JDRV9VTklDT0RFOw0KKyAgICAgICAgICAgICAgICAgICAgbHBzeiArKzsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlICdGJzoNCisgICAgICAgICAgICAgICAgY2FzZSAnTic6DQorICAgICAgICAgICAgICAgIGNhc2UgJ0wnOg0KKyAgICAgICAgICAgICAgICAgICAgbHBzeiArKzsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHN3aXRjaCAoKmxwc3ogfCBuTW9kaWZpZXIpIHsNCisgICAgICAgICAgICBjYXNlICdjJzoNCisgICAgICAgICAgICBjYXNlICdDJzoNCisgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAyOw0KKyAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgaW50KTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAnYyd8Rk9SQ0VfQU5TSToNCisgICAgICAgICAgICBjYXNlICdDJ3xGT1JDRV9BTlNJOg0KKyAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IDI7DQorICAgICAgICAgICAgICAgIHZhX2FyZyhhcmdMaXN0LCBpbnQpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlICdjJ3xGT1JDRV9VTklDT0RFOg0KKyAgICAgICAgICAgIGNhc2UgJ0MnfEZPUkNFX1VOSUNPREU6DQorICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMjsNCisgICAgICAgICAgICAgICAgdmFfYXJnKGFyZ0xpc3QsIGludCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgJ3MnOiB7DQorICAgICAgICAgICAgICAgICAgICBGWF9MUENXU1RSIHBzdHJOZXh0QXJnID0gdmFfYXJnKGFyZ0xpc3QsIEZYX0xQQ1dTVFIpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBzdHJOZXh0QXJnID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IDY7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gKEZYX1NUUlNJWkUpRlhTWVNfd2NzbGVuKHBzdHJOZXh0QXJnKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobkl0ZW1MZW4gPCAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAnUyc6IHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0xQQ1NUUiBwc3RyTmV4dEFyZyA9IHZhX2FyZyhhcmdMaXN0LCBGWF9MUENTVFIpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBzdHJOZXh0QXJnID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IDY7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gKEZYX1NUUlNJWkUpRlhTWVNfc3RybGVuKHBzdHJOZXh0QXJnKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobkl0ZW1MZW4gPCAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAncyd8Rk9SQ0VfQU5TSToNCisgICAgICAgICAgICBjYXNlICdTJ3xGT1JDRV9BTlNJOiB7DQorICAgICAgICAgICAgICAgICAgICBGWF9MUENTVFIgcHN0ck5leHRBcmcgPSB2YV9hcmcoYXJnTGlzdCwgRlhfTFBDU1RSKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwc3RyTmV4dEFyZyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSA2Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IChGWF9TVFJTSVpFKUZYU1lTX3N0cmxlbihwc3RyTmV4dEFyZyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5JdGVtTGVuIDwgMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgJ3MnfEZPUkNFX1VOSUNPREU6DQorICAgICAgICAgICAgY2FzZSAnUyd8Rk9SQ0VfVU5JQ09ERTogew0KKyAgICAgICAgICAgICAgICAgICAgRlhfTFBXU1RSIHBzdHJOZXh0QXJnID0gdmFfYXJnKGFyZ0xpc3QsIEZYX0xQV1NUUik7DQorICAgICAgICAgICAgICAgICAgICBpZiAocHN0ck5leHRBcmcgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gNjsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAoRlhfU1RSU0laRSlGWFNZU193Y3NsZW4ocHN0ck5leHRBcmcpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuSXRlbUxlbiA8IDEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChuSXRlbUxlbiAhPSAwKSB7DQorICAgICAgICAgICAgaWYgKG5QcmVjaXNpb24gIT0gMCAmJiBuSXRlbUxlbiA+IG5QcmVjaXNpb24pIHsNCisgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSBuUHJlY2lzaW9uOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobkl0ZW1MZW4gPCBuV2lkdGgpIHsNCisgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSBuV2lkdGg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzd2l0Y2ggKCpscHN6KSB7DQorICAgICAgICAgICAgICAgIGNhc2UgJ2QnOg0KKyAgICAgICAgICAgICAgICBjYXNlICdpJzoNCisgICAgICAgICAgICAgICAgY2FzZSAndSc6DQorICAgICAgICAgICAgICAgIGNhc2UgJ3gnOg0KKyAgICAgICAgICAgICAgICBjYXNlICdYJzoNCisgICAgICAgICAgICAgICAgY2FzZSAnbyc6DQorICAgICAgICAgICAgICAgICAgICBpZiAobk1vZGlmaWVyICYgRk9SQ0VfSU5UNjQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgRlhfSU5UNjQpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgaW50KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMzI7DQorICAgICAgICAgICAgICAgICAgICBpZiAobkl0ZW1MZW4gPCBuV2lkdGggKyBuUHJlY2lzaW9uKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSBuV2lkdGggKyBuUHJlY2lzaW9uOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgJ2EnOg0KKyAgICAgICAgICAgICAgICBjYXNlICdBJzoNCisgICAgICAgICAgICAgICAgY2FzZSAnZSc6DQorICAgICAgICAgICAgICAgIGNhc2UgJ0UnOg0KKyAgICAgICAgICAgICAgICBjYXNlICdnJzoNCisgICAgICAgICAgICAgICAgY2FzZSAnRyc6DQorICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgZG91YmxlKTsNCisgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gMTI4Ow0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG5JdGVtTGVuIDwgbldpZHRoICsgblByZWNpc2lvbikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5JdGVtTGVuID0gbldpZHRoICsgblByZWNpc2lvbjsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlICdmJzoNCisgICAgICAgICAgICAgICAgICAgIGlmIChuV2lkdGggKyBuUHJlY2lzaW9uID4gMTAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSBuUHJlY2lzaW9uICsgbldpZHRoICsgMTI4Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZjsNCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHBzelRlbXBbMjU2XTsNCisgICAgICAgICAgICAgICAgICAgICAgICBmID0gdmFfYXJnKGFyZ0xpc3QsIGRvdWJsZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfc25wcmludGYocHN6VGVtcCwgc2l6ZW9mKHBzelRlbXApLCAiJSouKmYiLCBuV2lkdGgsIG5QcmVjaXNpb24gKyA2LCBmICk7DQorICAgICAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAoRlhfU1RSU0laRSlGWFNZU19zdHJsZW4ocHN6VGVtcCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAncCc6DQorICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgdm9pZCopOw0KKyAgICAgICAgICAgICAgICAgICAgbkl0ZW1MZW4gPSAzMjsNCisgICAgICAgICAgICAgICAgICAgIGlmIChuSXRlbUxlbiA8IG5XaWR0aCArIG5QcmVjaXNpb24pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBuSXRlbUxlbiA9IG5XaWR0aCArIG5QcmVjaXNpb247DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAnbic6DQorICAgICAgICAgICAgICAgICAgICB2YV9hcmcoYXJnTGlzdCwgaW50Kik7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBuTWF4TGVuICs9IG5JdGVtTGVuOw0KKyAgICB9DQorICAgIEdldEJ1ZmZlcihuTWF4TGVuKTsNCisgICAgaWYgKG1fcERhdGEpIHsNCisgICAgICAgIEZYU1lTX3Zzd3ByaW50Zigod2NoYXJfdCopbV9wRGF0YS0+bV9TdHJpbmcsIG5NYXhMZW4gKyAxLCAoY29uc3Qgd2NoYXJfdCopbHBzekZvcm1hdCwgYXJnTGlzdFNhdmUpOw0KKyAgICAgICAgUmVsZWFzZUJ1ZmZlcigpOw0KKyAgICB9DQorICAgIHZhX2VuZChhcmdMaXN0U2F2ZSk7DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmc6OkZvcm1hdChGWF9MUENXU1RSIGxwc3pGb3JtYXQsIC4uLikNCit7DQorICAgIHZhX2xpc3QgYXJnTGlzdDsNCisgICAgdmFfc3RhcnQoYXJnTGlzdCwgbHBzekZvcm1hdCk7DQorICAgIEZvcm1hdFYobHBzekZvcm1hdCwgYXJnTGlzdCk7DQorICAgIHZhX2VuZChhcmdMaXN0KTsNCit9DQorRlhfRkxPQVQgRlhfd3RvZihGWF9MUENXU1RSIHN0ciwgaW50IGxlbikNCit7DQorICAgIGlmIChsZW4gPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIDAuMDsNCisgICAgfQ0KKyAgICBpbnQgY2MgPSAwOw0KKyAgICBGWF9CT09MIGJOZWdhdGl2ZSA9IEZBTFNFOw0KKyAgICBpZiAoc3RyWzBdID09ICcrJykgew0KKyAgICAgICAgY2MrKzsNCisgICAgfSBlbHNlIGlmIChzdHJbMF0gPT0gJy0nKSB7DQorICAgICAgICBiTmVnYXRpdmUgPSBUUlVFOw0KKyAgICAgICAgY2MrKzsNCisgICAgfQ0KKyAgICBpbnQgaW50ZWdlciA9IDA7DQorICAgIHdoaWxlIChjYyA8IGxlbikgew0KKyAgICAgICAgaWYgKHN0cltjY10gPT0gJy4nKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpbnRlZ2VyID0gaW50ZWdlciAqIDEwICsgc3RyW2NjXSAtICcwJzsNCisgICAgICAgIGNjICsrOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIGZyYWN0aW9uID0gMDsNCisgICAgaWYgKHN0cltjY10gPT0gJy4nKSB7DQorICAgICAgICBjYyArKzsNCisgICAgICAgIEZYX0ZMT0FUIHNjYWxlID0gMC4xZjsNCisgICAgICAgIHdoaWxlIChjYyA8IGxlbikgew0KKyAgICAgICAgICAgIGZyYWN0aW9uICs9IHNjYWxlICogKHN0cltjY10gLSAnMCcpOw0KKyAgICAgICAgICAgIHNjYWxlICo9IDAuMWY7DQorICAgICAgICAgICAgY2MgKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgZnJhY3Rpb24gKz0gKEZYX0ZMT0FUKWludGVnZXI7DQorICAgIHJldHVybiBiTmVnYXRpdmUgPyAtZnJhY3Rpb24gOiBmcmFjdGlvbjsNCit9DQoraW50IENGWF9XaWRlU3RyaW5nOjpHZXRJbnRlZ2VyKCkgY29uc3QNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiBGWFNZU193dG9pKG1fcERhdGEtPm1fU3RyaW5nKTsNCit9DQorRlhfRkxPQVQgQ0ZYX1dpZGVTdHJpbmc6OkdldEZsb2F0KCkgY29uc3QNCit7DQorICAgIGlmIChtX3BEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwLjA7DQorICAgIH0NCisgICAgcmV0dXJuIEZYX3d0b2YobV9wRGF0YS0+bV9TdHJpbmcsIG1fcERhdGEtPm1fbkRhdGFMZW5ndGgpOw0KK30NCit2b2lkIENGWF9XaWRlU3RyaW5nTDo6RW1wdHkoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIGlmIChtX1B0cikgew0KKyAgICAgICAgRlhfQWxsb2NhdG9yX0ZyZWUocEFsbG9jYXRvciwgKEZYX0xQVk9JRCltX1B0cik7DQorICAgIH0NCisgICAgbV9QdHIgPSBOVUxMLCBtX0xlbmd0aCA9IDA7DQorfQ0KK3ZvaWQgQ0ZYX1dpZGVTdHJpbmdMOjpTZXQoRlhfV1NUUiBzcmMsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorew0KKyAgICBFbXB0eShwQWxsb2NhdG9yKTsNCisgICAgaWYgKHNyYy5HZXRQdHIoKSAhPSBOVUxMICYmIHNyYy5HZXRMZW5ndGgoKSA+IDApIHsNCisgICAgICAgIEZYX0xQV1NUUiBzdHIgPSBGWF9BbGxvY2F0b3JfQWxsb2MocEFsbG9jYXRvciwgRlhfV0NIQVIsIHNyYy5HZXRMZW5ndGgoKSArIDEpOw0KKyAgICAgICAgaWYgKCFzdHIpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBGWFNZU19tZW1jcHkzMihzdHIsIHNyYy5HZXRQdHIoKSwgc3JjLkdldExlbmd0aCgpKnNpemVvZihGWF9XQ0hBUikpOw0KKyAgICAgICAgc3RyW3NyYy5HZXRMZW5ndGgoKV0gPSAnXDAnOw0KKyAgICAgICAgKihGWF9MUFdTVFIqKSgmbV9QdHIpID0gc3RyOw0KKyAgICAgICAgbV9MZW5ndGggPSBzcmMuR2V0TGVuZ3RoKCk7DQorICAgIH0NCit9DQoraW50IENGWF9XaWRlU3RyaW5nTDo6R2V0SW50ZWdlcigpIGNvbnN0DQorew0KKyAgICBpZiAoIW1fUHRyKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhTWVNfd3RvaShtX1B0cik7DQorfQ0KK0ZYX0ZMT0FUIENGWF9XaWRlU3RyaW5nTDo6R2V0RmxvYXQoKSBjb25zdA0KK3sNCisgICAgaWYgKCFtX1B0cikgew0KKyAgICAgICAgcmV0dXJuIDAuMGY7DQorICAgIH0NCisgICAgcmV0dXJuIEZYX3d0b2YobV9QdHIsIG1fTGVuZ3RoKTsNCit9DQordm9pZCBDRlhfV2lkZVN0cmluZ0w6OlRyaW1SaWdodChGWF9MUENXU1RSIGxwc3pUYXJnZXRzKQ0KK3sNCisgICAgaWYgKCFscHN6VGFyZ2V0cyB8fCAqbHBzelRhcmdldHMgPT0gMCB8fCAhbV9QdHIgfHwgbV9MZW5ndGggPCAxKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfU1RSU0laRSBwb3MgPSBtX0xlbmd0aDsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgaWYgKEZYU1lTX3djc2NocihscHN6VGFyZ2V0cywgbV9QdHJbcG9zIC0gMV0pID09IE5VTEwpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIHBvcyAtLTsNCisgICAgfQ0KKyAgICBpZiAocG9zIDwgbV9MZW5ndGgpIHsNCisgICAgICAgICgqKEZYX0xQV1NUUiopKCZtX1B0cikpW3Bvc10gPSAwOw0KKyAgICAgICAgbV9MZW5ndGggPSBwb3M7DQorICAgIH0NCit9DQorc3RhdGljIENGWF9CeXRlU3RyaW5nIF9EZWZNYXBfR2V0Qnl0ZVN0cmluZyhDRlhfQ2hhck1hcCogcENoYXJNYXAsIGNvbnN0IENGWF9XaWRlU3RyaW5nJiB3aWRlc3RyKQ0KK3sNCisgICAgaW50IHNyY19sZW4gPSB3aWRlc3RyLkdldExlbmd0aCgpOw0KKyAgICBpbnQgY29kZXBhZ2UgPSBwQ2hhck1hcC0+bV9HZXRDb2RlUGFnZSA/IHBDaGFyTWFwLT5tX0dldENvZGVQYWdlKCkgOiAwOw0KKyAgICBpbnQgZGVzdF9sZW4gPSBGWFNZU19XaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVwYWdlLCAwLCB3aWRlc3RyLCBzcmNfbGVuLCBOVUxMLCAwLCBOVUxMLCBOVUxMKTsNCisgICAgaWYgKGRlc3RfbGVuID09IDApIHsNCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGJ5dGVzdHI7DQorICAgIEZYX0xQU1RSIGRlc3RfYnVmID0gYnl0ZXN0ci5HZXRCdWZmZXIoZGVzdF9sZW4pOw0KKyAgICBGWFNZU19XaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVwYWdlLCAwLCB3aWRlc3RyLCBzcmNfbGVuLCBkZXN0X2J1ZiwgZGVzdF9sZW4sIE5VTEwsIE5VTEwpOw0KKyAgICBieXRlc3RyLlJlbGVhc2VCdWZmZXIoZGVzdF9sZW4pOw0KKyAgICByZXR1cm4gYnl0ZXN0cjsNCit9DQorc3RhdGljIENGWF9XaWRlU3RyaW5nIF9EZWZNYXBfR2V0V2lkZVN0cmluZyhDRlhfQ2hhck1hcCogcENoYXJNYXAsIGNvbnN0IENGWF9CeXRlU3RyaW5nJiBieXRlc3RyKQ0KK3sNCisgICAgaW50IHNyY19sZW4gPSBieXRlc3RyLkdldExlbmd0aCgpOw0KKyAgICBpbnQgY29kZXBhZ2UgPSBwQ2hhck1hcC0+bV9HZXRDb2RlUGFnZSA/IHBDaGFyTWFwLT5tX0dldENvZGVQYWdlKCkgOiAwOw0KKyAgICBpbnQgZGVzdF9sZW4gPSBGWFNZU19NdWx0aUJ5dGVUb1dpZGVDaGFyKGNvZGVwYWdlLCAwLCBieXRlc3RyLCBzcmNfbGVuLCBOVUxMLCAwKTsNCisgICAgaWYgKGRlc3RfbGVuID09IDApIHsNCisgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZygpOw0KKyAgICB9DQorICAgIENGWF9XaWRlU3RyaW5nIHdpZGVzdHI7DQorICAgIEZYX0xQV1NUUiBkZXN0X2J1ZiA9IHdpZGVzdHIuR2V0QnVmZmVyKGRlc3RfbGVuKTsNCisgICAgRlhTWVNfTXVsdGlCeXRlVG9XaWRlQ2hhcihjb2RlcGFnZSwgMCwgYnl0ZXN0ciwgc3JjX2xlbiwgZGVzdF9idWYsIGRlc3RfbGVuKTsNCisgICAgd2lkZXN0ci5SZWxlYXNlQnVmZmVyKGRlc3RfbGVuKTsNCisgICAgcmV0dXJuIHdpZGVzdHI7DQorfQ0KK3N0YXRpYyBpbnQgX0RlZk1hcF9HZXRHQktDb2RlUGFnZSgpDQorew0KKyAgICByZXR1cm4gOTM2Ow0KK30NCitzdGF0aWMgaW50IF9EZWZNYXBfR2V0VUhDQ29kZVBhZ2UoKQ0KK3sNCisgICAgcmV0dXJuIDk0OTsNCit9DQorc3RhdGljIGludCBfRGVmTWFwX0dldEpJU0NvZGVQYWdlKCkNCit7DQorICAgIHJldHVybiA5MzI7DQorfQ0KK3N0YXRpYyBpbnQgX0RlZk1hcF9HZXRCaWc1Q29kZVBhZ2UoKQ0KK3sNCisgICAgcmV0dXJuIDk1MDsNCit9DQorc3RhdGljIGNvbnN0IENGWF9DaGFyTWFwIGdfRGVmYXVsdE1hcHBlciA9IHsmX0RlZk1hcF9HZXRXaWRlU3RyaW5nLCAmX0RlZk1hcF9HZXRCeXRlU3RyaW5nLCBOVUxMfTsNCitzdGF0aWMgY29uc3QgQ0ZYX0NoYXJNYXAgZ19EZWZhdWx0R0JLTWFwcGVyID0geyZfRGVmTWFwX0dldFdpZGVTdHJpbmcsICZfRGVmTWFwX0dldEJ5dGVTdHJpbmcsICZfRGVmTWFwX0dldEdCS0NvZGVQYWdlfTsNCitzdGF0aWMgY29uc3QgQ0ZYX0NoYXJNYXAgZ19EZWZhdWx0SklTTWFwcGVyID0geyZfRGVmTWFwX0dldFdpZGVTdHJpbmcsICZfRGVmTWFwX0dldEJ5dGVTdHJpbmcsICZfRGVmTWFwX0dldEpJU0NvZGVQYWdlfTsNCitzdGF0aWMgY29uc3QgQ0ZYX0NoYXJNYXAgZ19EZWZhdWx0VUhDTWFwcGVyID0geyZfRGVmTWFwX0dldFdpZGVTdHJpbmcsICZfRGVmTWFwX0dldEJ5dGVTdHJpbmcsICZfRGVmTWFwX0dldFVIQ0NvZGVQYWdlfTsNCitzdGF0aWMgY29uc3QgQ0ZYX0NoYXJNYXAgZ19EZWZhdWx0QmlnNU1hcHBlciA9IHsmX0RlZk1hcF9HZXRXaWRlU3RyaW5nLCAmX0RlZk1hcF9HZXRCeXRlU3RyaW5nLCAmX0RlZk1hcF9HZXRCaWc1Q29kZVBhZ2V9Ow0KK0NGWF9DaGFyTWFwKiBDRlhfQ2hhck1hcDo6R2V0RGVmYXVsdE1hcHBlcihGWF9JTlQzMiBjb2RlcGFnZSkNCit7DQorICAgIHN3aXRjaCAoY29kZXBhZ2UpIHsNCisgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICByZXR1cm4gKENGWF9DaGFyTWFwKikmZ19EZWZhdWx0TWFwcGVyOw0KKyAgICAgICAgY2FzZSA5MzI6DQorICAgICAgICAgICAgcmV0dXJuIChDRlhfQ2hhck1hcCopJmdfRGVmYXVsdEpJU01hcHBlcjsNCisgICAgICAgIGNhc2UgOTM2Og0KKyAgICAgICAgICAgIHJldHVybiAoQ0ZYX0NoYXJNYXAqKSZnX0RlZmF1bHRHQktNYXBwZXI7DQorICAgICAgICBjYXNlIDk0OToNCisgICAgICAgICAgICByZXR1cm4gKENGWF9DaGFyTWFwKikmZ19EZWZhdWx0VUhDTWFwcGVyOw0KKyAgICAgICAgY2FzZSA5NTA6DQorICAgICAgICAgICAgcmV0dXJuIChDRlhfQ2hhck1hcCopJmdfRGVmYXVsdEJpZzVNYXBwZXI7DQorICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4X2V4dGVuc2lvbi5jcHAgYi9jb3JlL3NyYy9meGNydC9meF9leHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZDMwMDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC9meF9leHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsNDAxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGNydC9meF9leHQuaCINCisjaW5jbHVkZSAiZXh0ZW5zaW9uLmgiDQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisjaW5jbHVkZSA8d2luY3J5cHQuaD4NCisjZWxzZQ0KKyNpbmNsdWRlIDxjdGltZT4NCisjZW5kaWYNCitGWF9IRklMRSBGWF9GaWxlX09wZW4oRlhfQlNUUiBmaWxlTmFtZSwgRlhfRFdPUkQgZHdNb2RlLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgSUZYQ1JUX0ZpbGVBY2Nlc3MqIHBGQSA9IEZYQ1JUX0ZpbGVBY2Nlc3NfQ3JlYXRlKHBBbGxvY2F0b3IpOw0KKyAgICBpZiAocEZBICYmICFwRkEtPk9wZW4oZmlsZU5hbWUsIGR3TW9kZSkpIHsNCisgICAgICAgIHBGQS0+UmVsZWFzZShwQWxsb2NhdG9yKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiAoRlhfSEZJTEUpcEZBOw0KK30NCitGWF9IRklMRSBGWF9GaWxlX09wZW4oRlhfV1NUUiBmaWxlTmFtZSwgRlhfRFdPUkQgZHdNb2RlLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgSUZYQ1JUX0ZpbGVBY2Nlc3MqIHBGQSA9IEZYQ1JUX0ZpbGVBY2Nlc3NfQ3JlYXRlKHBBbGxvY2F0b3IpOw0KKyAgICBpZiAocEZBICYmICFwRkEtPk9wZW4oZmlsZU5hbWUsIGR3TW9kZSkpIHsNCisgICAgICAgIHBGQS0+UmVsZWFzZShwQWxsb2NhdG9yKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiAoRlhfSEZJTEUpcEZBOw0KK30NCit2b2lkIEZYX0ZpbGVfQ2xvc2UoRlhfSEZJTEUgaEZpbGUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorew0KKyAgICBGWFNZU19hc3NlcnQoaEZpbGUgIT0gTlVMTCk7DQorICAgICgoSUZYQ1JUX0ZpbGVBY2Nlc3MqKWhGaWxlKS0+Q2xvc2UoKTsNCisgICAgKChJRlhDUlRfRmlsZUFjY2VzcyopaEZpbGUpLT5SZWxlYXNlKHBBbGxvY2F0b3IpOw0KK30NCitGWF9GSUxFU0laRSBGWF9GaWxlX0dldFNpemUoRlhfSEZJTEUgaEZpbGUpDQorew0KKyAgICBGWFNZU19hc3NlcnQoaEZpbGUgIT0gTlVMTCk7DQorICAgIHJldHVybiAoKElGWENSVF9GaWxlQWNjZXNzKiloRmlsZSktPkdldFNpemUoKTsNCit9DQorRlhfRklMRVNJWkUgRlhfRmlsZV9HZXRQb3NpdGlvbihGWF9IRklMRSBoRmlsZSkNCit7DQorICAgIEZYU1lTX2Fzc2VydChoRmlsZSAhPSBOVUxMKTsNCisgICAgcmV0dXJuICgoSUZYQ1JUX0ZpbGVBY2Nlc3MqKWhGaWxlKS0+R2V0UG9zaXRpb24oKTsNCit9DQorRlhfRklMRVNJWkUgRlhfRmlsZV9TZXRQb3NpdGlvbihGWF9IRklMRSBoRmlsZSwgRlhfRklMRVNJWkUgcG9zKQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KGhGaWxlICE9IE5VTEwpOw0KKyAgICByZXR1cm4gKChJRlhDUlRfRmlsZUFjY2VzcyopaEZpbGUpLT5TZXRQb3NpdGlvbihwb3MpOw0KK30NCitzaXplX3QgRlhfRmlsZV9SZWFkKEZYX0hGSUxFIGhGaWxlLCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpDQorew0KKyAgICBGWFNZU19hc3NlcnQoaEZpbGUgIT0gTlVMTCk7DQorICAgIHJldHVybiAoKElGWENSVF9GaWxlQWNjZXNzKiloRmlsZSktPlJlYWQocEJ1ZmZlciwgc3pCdWZmZXIpOw0KK30NCitzaXplX3QgRlhfRmlsZV9SZWFkUG9zKEZYX0hGSUxFIGhGaWxlLCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIsIEZYX0ZJTEVTSVpFIHBvcykNCit7DQorICAgIEZYU1lTX2Fzc2VydChoRmlsZSAhPSBOVUxMKTsNCisgICAgcmV0dXJuICgoSUZYQ1JUX0ZpbGVBY2Nlc3MqKWhGaWxlKS0+UmVhZFBvcyhwQnVmZmVyLCBzekJ1ZmZlciwgcG9zKTsNCit9DQorc2l6ZV90IEZYX0ZpbGVfV3JpdGUoRlhfSEZJTEUgaEZpbGUsIGNvbnN0IHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlcikNCit7DQorICAgIEZYU1lTX2Fzc2VydChoRmlsZSAhPSBOVUxMKTsNCisgICAgcmV0dXJuICgoSUZYQ1JUX0ZpbGVBY2Nlc3MqKWhGaWxlKS0+V3JpdGUocEJ1ZmZlciwgc3pCdWZmZXIpOw0KK30NCitzaXplX3QgRlhfRmlsZV9Xcml0ZVBvcyhGWF9IRklMRSBoRmlsZSwgY29uc3Qgdm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyLCBGWF9GSUxFU0laRSBwb3MpDQorew0KKyAgICBGWFNZU19hc3NlcnQoaEZpbGUgIT0gTlVMTCk7DQorICAgIHJldHVybiAoKElGWENSVF9GaWxlQWNjZXNzKiloRmlsZSktPldyaXRlUG9zKHBCdWZmZXIsIHN6QnVmZmVyLCBwb3MpOw0KK30NCitGWF9CT09MIEZYX0ZpbGVfRmx1c2goRlhfSEZJTEUgaEZpbGUpDQorew0KKyAgICBGWFNZU19hc3NlcnQoaEZpbGUgIT0gTlVMTCk7DQorICAgIHJldHVybiAoKElGWENSVF9GaWxlQWNjZXNzKiloRmlsZSktPkZsdXNoKCk7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9UcnVuY2F0ZShGWF9IRklMRSBoRmlsZSwgRlhfRklMRVNJWkUgc3pGaWxlKQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KGhGaWxlICE9IE5VTEwpOw0KKyAgICByZXR1cm4gKChJRlhDUlRfRmlsZUFjY2VzcyopaEZpbGUpLT5UcnVuY2F0ZShzekZpbGUpOw0KK30NCitJRlhfRmlsZVN0cmVhbSogRlhfQ3JlYXRlRmlsZVN0cmVhbShGWF9MUENTVFIgZmlsZW5hbWUsIEZYX0RXT1JEIGR3TW9kZXMsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorew0KKyAgICBJRlhDUlRfRmlsZUFjY2VzcyogcEZBID0gRlhDUlRfRmlsZUFjY2Vzc19DcmVhdGUocEFsbG9jYXRvcik7DQorICAgIGlmICghcEZBKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoIXBGQS0+T3BlbihmaWxlbmFtZSwgZHdNb2RlcykpIHsNCisgICAgICAgIHBGQS0+UmVsZWFzZShwQWxsb2NhdG9yKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChwQWxsb2NhdG9yKSB7DQorICAgICAgICByZXR1cm4gRlhfTmV3QXRBbGxvY2F0b3IocEFsbG9jYXRvcikgQ0ZYX0NSVEZpbGVTdHJlYW0ocEZBLCBwQWxsb2NhdG9yKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiBGWF9ORVcgQ0ZYX0NSVEZpbGVTdHJlYW0ocEZBLCBwQWxsb2NhdG9yKTsNCisgICAgfQ0KK30NCitJRlhfRmlsZVN0cmVhbSogRlhfQ3JlYXRlRmlsZVN0cmVhbShGWF9MUENXU1RSIGZpbGVuYW1lLCBGWF9EV09SRCBkd01vZGVzLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgSUZYQ1JUX0ZpbGVBY2Nlc3MqIHBGQSA9IEZYQ1JUX0ZpbGVBY2Nlc3NfQ3JlYXRlKHBBbGxvY2F0b3IpOw0KKyAgICBpZiAoIXBGQSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKCFwRkEtPk9wZW4oZmlsZW5hbWUsIGR3TW9kZXMpKSB7DQorICAgICAgICBwRkEtPlJlbGVhc2UocEFsbG9jYXRvcik7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAocEFsbG9jYXRvcikgew0KKyAgICAgICAgcmV0dXJuIEZYX05ld0F0QWxsb2NhdG9yKHBBbGxvY2F0b3IpIENGWF9DUlRGaWxlU3RyZWFtKHBGQSwgcEFsbG9jYXRvcik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gRlhfTkVXIENGWF9DUlRGaWxlU3RyZWFtKHBGQSwgcEFsbG9jYXRvcik7DQorICAgIH0NCit9DQorSUZYX0ZpbGVXcml0ZSogRlhfQ3JlYXRlRmlsZVdyaXRlKEZYX0xQQ1NUUiBmaWxlbmFtZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIHJldHVybiBGWF9DcmVhdGVGaWxlU3RyZWFtKGZpbGVuYW1lLCBGWF9GSUxFTU9ERV9UcnVuY2F0ZSwgcEFsbG9jYXRvcik7DQorfQ0KK0lGWF9GaWxlV3JpdGUqIEZYX0NyZWF0ZUZpbGVXcml0ZShGWF9MUENXU1RSIGZpbGVuYW1lLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgcmV0dXJuIEZYX0NyZWF0ZUZpbGVTdHJlYW0oZmlsZW5hbWUsIEZYX0ZJTEVNT0RFX1RydW5jYXRlLCBwQWxsb2NhdG9yKTsNCit9DQorSUZYX0ZpbGVSZWFkKiBGWF9DcmVhdGVGaWxlUmVhZChGWF9MUENTVFIgZmlsZW5hbWUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorew0KKyAgICByZXR1cm4gRlhfQ3JlYXRlRmlsZVN0cmVhbShmaWxlbmFtZSwgRlhfRklMRU1PREVfUmVhZE9ubHksIHBBbGxvY2F0b3IpOw0KK30NCitJRlhfRmlsZVJlYWQqIEZYX0NyZWF0ZUZpbGVSZWFkKEZYX0xQQ1dTVFIgZmlsZW5hbWUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorew0KKyAgICByZXR1cm4gRlhfQ3JlYXRlRmlsZVN0cmVhbShmaWxlbmFtZSwgRlhfRklMRU1PREVfUmVhZE9ubHksIHBBbGxvY2F0b3IpOw0KK30NCitJRlhfTWVtb3J5U3RyZWFtKiBGWF9DcmVhdGVNZW1vcnlTdHJlYW0oRlhfTFBCWVRFIHBCdWZmZXIsIHNpemVfdCBkd1NpemUsIEZYX0JPT0wgYlRha2VPdmVyLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgaWYgKHBBbGxvY2F0b3IpIHsNCisgICAgICAgIHJldHVybiBGWF9OZXdBdEFsbG9jYXRvcihwQWxsb2NhdG9yKUNGWF9NZW1vcnlTdHJlYW0ocEJ1ZmZlciwgZHdTaXplLCBiVGFrZU92ZXIsIHBBbGxvY2F0b3IpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDRlhfTWVtb3J5U3RyZWFtKHBCdWZmZXIsIGR3U2l6ZSwgYlRha2VPdmVyLCBOVUxMKTsNCisgICAgfQ0KK30NCitJRlhfTWVtb3J5U3RyZWFtKiBGWF9DcmVhdGVNZW1vcnlTdHJlYW0oRlhfQk9PTCBiQ29uc2VjdXRpdmUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorew0KKyAgICBpZiAocEFsbG9jYXRvcikgew0KKyAgICAgICAgcmV0dXJuIEZYX05ld0F0QWxsb2NhdG9yKHBBbGxvY2F0b3IpQ0ZYX01lbW9yeVN0cmVhbShiQ29uc2VjdXRpdmUsIHBBbGxvY2F0b3IpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDRlhfTWVtb3J5U3RyZWFtKGJDb25zZWN1dGl2ZSwgTlVMTCk7DQorICAgIH0NCit9DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorRlhfRkxPQVQgRlhTWVNfdGFuKEZYX0ZMT0FUIGEpDQorew0KKyAgICByZXR1cm4gKEZYX0ZMT0FUKXRhbihhKTsNCit9DQorRlhfRkxPQVQgRlhTWVNfbG9nYihGWF9GTE9BVCBiLCBGWF9GTE9BVCB4KQ0KK3sNCisgICAgcmV0dXJuIEZYU1lTX2xvZyh4KSAvIEZYU1lTX2xvZyhiKTsNCit9DQorRlhfRkxPQVQgRlhTWVNfc3RydG9mKEZYX0xQQ1NUUiBwY3NTdHIsIEZYX0lOVDMyIGlMZW5ndGgsIEZYX0lOVDMyICpwVXNlZExlbikNCit7DQorICAgIEZYU1lTX2Fzc2VydChwY3NTdHIgIT0gTlVMTCk7DQorICAgIGlmIChpTGVuZ3RoIDwgMCkgew0KKyAgICAgICAgaUxlbmd0aCA9IChGWF9JTlQzMilGWFNZU19zdHJsZW4ocGNzU3RyKTsNCisgICAgfQ0KKyAgICBDRlhfV2lkZVN0cmluZyB3cyA9IENGWF9XaWRlU3RyaW5nOjpGcm9tTG9jYWwocGNzU3RyLCBpTGVuZ3RoKTsNCisgICAgcmV0dXJuIEZYU1lTX3djc3RvZigoRlhfTFBDV1NUUil3cywgaUxlbmd0aCwgcFVzZWRMZW4pOw0KK30NCitGWF9GTE9BVCBGWFNZU193Y3N0b2YoRlhfTFBDV1NUUiBwd3NTdHIsIEZYX0lOVDMyIGlMZW5ndGgsIEZYX0lOVDMyICpwVXNlZExlbikNCit7DQorICAgIEZYU1lTX2Fzc2VydChwd3NTdHIgIT0gTlVMTCk7DQorICAgIGlmIChpTGVuZ3RoIDwgMCkgew0KKyAgICAgICAgaUxlbmd0aCA9IChGWF9JTlQzMilGWFNZU193Y3NsZW4ocHdzU3RyKTsNCisgICAgfQ0KKyAgICBpZiAoaUxlbmd0aCA9PSAwKSB7DQorICAgICAgICByZXR1cm4gMC4wZjsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBpVXNlZExlbiA9IDA7DQorICAgIEZYX0JPT0wgYk5lZ3RpdmUgPSBGQUxTRTsNCisgICAgc3dpdGNoIChwd3NTdHJbaVVzZWRMZW5dKSB7DQorICAgICAgICBjYXNlICctJzoNCisgICAgICAgICAgICBiTmVndGl2ZSA9IFRSVUU7DQorICAgICAgICBjYXNlICcrJzoNCisgICAgICAgICAgICBpVXNlZExlbisrOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIGZWYWx1ZSA9IDAuMGY7DQorICAgIHdoaWxlIChpVXNlZExlbiA8IGlMZW5ndGgpIHsNCisgICAgICAgIEZYX1dDSEFSIHdjaCA9IHB3c1N0cltpVXNlZExlbl07DQorICAgICAgICBpZiAod2NoID49IEwnMCcgJiYgd2NoIDw9IEwnOScpIHsNCisgICAgICAgICAgICBmVmFsdWUgPSBmVmFsdWUgKiAxMC4wZiArICh3Y2ggLSBMJzAnKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBpVXNlZExlbisrOw0KKyAgICB9DQorICAgIGlmIChpVXNlZExlbiA8IGlMZW5ndGggJiYgcHdzU3RyW2lVc2VkTGVuXSA9PSBMJy4nKSB7DQorICAgICAgICBGWF9GTE9BVCBmUHJlY2lzZSA9IDAuMWY7DQorICAgICAgICB3aGlsZSAoKytpVXNlZExlbiA8IGlMZW5ndGgpIHsNCisgICAgICAgICAgICBGWF9XQ0hBUiB3Y2ggPSBwd3NTdHJbaVVzZWRMZW5dOw0KKyAgICAgICAgICAgIGlmICh3Y2ggPj0gTCcwJyAmJiB3Y2ggPD0gTCc5Jykgew0KKyAgICAgICAgICAgICAgICBmVmFsdWUgKz0gKHdjaCAtIEwnMCcpICogZlByZWNpc2U7DQorICAgICAgICAgICAgICAgIGZQcmVjaXNlICo9IDAuMWY7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwVXNlZExlbikgew0KKyAgICAgICAgKnBVc2VkTGVuID0gaVVzZWRMZW47DQorICAgIH0NCisgICAgcmV0dXJuIGJOZWd0aXZlID8gLWZWYWx1ZSA6IGZWYWx1ZTsNCit9DQorRlhfTFBXU1RSIEZYU1lTX3djc25jcHkoRlhfTFBXU1RSIGRzdFN0ciwgRlhfTFBDV1NUUiBzcmNTdHIsIHNpemVfdCBjb3VudCkNCit7DQorICAgIEZYU1lTX2Fzc2VydChkc3RTdHIgIT0gTlVMTCAmJiBzcmNTdHIgIT0gTlVMTCAmJiBjb3VudCA+IDApOw0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpDQorICAgICAgICBpZiAoKGRzdFN0cltpXSA9IHNyY1N0cltpXSkgPT0gTCdcMCcpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgcmV0dXJuIGRzdFN0cjsNCit9DQorRlhfSU5UMzIgRlhTWVNfd2NzbmljbXAoRlhfTFBDV1NUUiBzMSwgRlhfTFBDV1NUUiBzMiwgc2l6ZV90IGNvdW50KQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KHMxICE9IE5VTEwgJiYgczIgIT0gTlVMTCAmJiBjb3VudCA+IDApOw0KKyAgICBGWF9XQ0hBUiB3Y2gxID0gMCwgd2NoMiA9IDA7DQorICAgIHdoaWxlIChjb3VudC0tID4gMCkgew0KKyAgICAgICAgd2NoMSA9IChGWF9XQ0hBUilGWFNZU190b2xvd2VyKCpzMSsrKTsNCisgICAgICAgIHdjaDIgPSAoRlhfV0NIQVIpRlhTWVNfdG9sb3dlcigqczIrKyk7DQorICAgICAgICBpZiAod2NoMSAhPSB3Y2gyKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHdjaDEgLSB3Y2gyOw0KK30NCitGWF9JTlQzMiBGWFNZU19zdHJuaWNtcChGWF9MUENTVFIgczEsIEZYX0xQQ1NUUiBzMiwgc2l6ZV90IGNvdW50KQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KHMxICE9IE5VTEwgJiYgczIgIT0gTlVMTCAmJiBjb3VudCA+IDApOw0KKyAgICBGWF9DSEFSIGNoMSA9IDAsIGNoMiA9IDA7DQorICAgIHdoaWxlIChjb3VudC0tID4gMCkgew0KKyAgICAgICAgY2gxID0gKEZYX0NIQVIpRlhTWVNfdG9sb3dlcigqczErKyk7DQorICAgICAgICBjaDIgPSAoRlhfQ0hBUilGWFNZU190b2xvd2VyKCpzMisrKTsNCisgICAgICAgIGlmIChjaDEgIT0gY2gyKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGNoMSAtIGNoMjsNCit9DQorRlhfRFdPUkQgRlhfSGFzaENvZGVfU3RyaW5nX0dldEEoRlhfTFBDU1RSIHBTdHIsIEZYX0lOVDMyIGlMZW5ndGgsIEZYX0JPT0wgYklnbm9yZUNhc2UpDQorew0KKyAgICBGWFNZU19hc3NlcnQocFN0ciAhPSBOVUxMKTsNCisgICAgaWYgKGlMZW5ndGggPCAwKSB7DQorICAgICAgICBpTGVuZ3RoID0gKEZYX0lOVDMyKUZYU1lTX3N0cmxlbihwU3RyKTsNCisgICAgfQ0KKyAgICBGWF9MUENTVFIgcFN0ckVuZCA9IHBTdHIgKyBpTGVuZ3RoOw0KKyAgICBGWF9EV09SRCBkd0hhc2hDb2RlID0gMDsNCisgICAgaWYgKGJJZ25vcmVDYXNlKSB7DQorICAgICAgICB3aGlsZSAocFN0ciA8IHBTdHJFbmQpIHsNCisgICAgICAgICAgICBkd0hhc2hDb2RlID0gMzEgKiBkd0hhc2hDb2RlICsgRlhTWVNfdG9sb3dlcigqcFN0cisrKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIHdoaWxlIChwU3RyIDwgcFN0ckVuZCkgew0KKyAgICAgICAgICAgIGR3SGFzaENvZGUgPSAzMSAqIGR3SGFzaENvZGUgKyAqcFN0ciArKzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gZHdIYXNoQ29kZTsNCit9DQorRlhfRFdPUkQgRlhfSGFzaENvZGVfU3RyaW5nX0dldFcoRlhfTFBDV1NUUiBwU3RyLCBGWF9JTlQzMiBpTGVuZ3RoLCBGWF9CT09MIGJJZ25vcmVDYXNlKQ0KK3sNCisgICAgRlhTWVNfYXNzZXJ0KHBTdHIgIT0gTlVMTCk7DQorICAgIGlmIChpTGVuZ3RoIDwgMCkgew0KKyAgICAgICAgaUxlbmd0aCA9IChGWF9JTlQzMilGWFNZU193Y3NsZW4ocFN0cik7DQorICAgIH0NCisgICAgRlhfTFBDV1NUUiBwU3RyRW5kID0gcFN0ciArIGlMZW5ndGg7DQorICAgIEZYX0RXT1JEIGR3SGFzaENvZGUgPSAwOw0KKyAgICBpZiAoYklnbm9yZUNhc2UpIHsNCisgICAgICAgIHdoaWxlIChwU3RyIDwgcFN0ckVuZCkgew0KKyAgICAgICAgICAgIGR3SGFzaENvZGUgPSAxMzEzICogZHdIYXNoQ29kZSArIEZYU1lTX3RvbG93ZXIoKnBTdHIrKyk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICB3aGlsZSAocFN0ciA8IHBTdHJFbmQpIHsNCisgICAgICAgICAgICBkd0hhc2hDb2RlID0gMTMxMyAqIGR3SGFzaENvZGUgKyAqcFN0ciArKzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gZHdIYXNoQ29kZTsNCit9DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZg0KK0ZYX0xQVk9JRCBGWF9SYW5kb21fTVRfU3RhcnQoRlhfRFdPUkQgZHdTZWVkKQ0KK3sNCisgICAgRlhfTFBNVFJBTkRPTUNPTlRFWFQgcENvbnRleHQgPSBGWF9BbGxvYyhGWF9NVFJBTkRPTUNPTlRFWFQsIDEpOw0KKyAgICBpZiAoIXBDb250ZXh0KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwQ29udGV4dC0+bXRbMF0gPSBkd1NlZWQ7DQorICAgIEZYX0RXT1JEICZpID0gcENvbnRleHQtPm10aTsNCisgICAgRlhfTFBEV09SRCBwQnVmID0gcENvbnRleHQtPm10Ow0KKyAgICBmb3IgKGkgPSAxOyBpIDwgTVRfTjsgaSArKykgew0KKyAgICAgICAgcEJ1ZltpXSA9ICgxODEyNDMzMjUzVUwgKiAocEJ1ZltpIC0gMV0gXiAocEJ1ZltpIC0gMV0gPj4gMzApKSArIGkpOw0KKyAgICB9DQorICAgIHBDb250ZXh0LT5iSGF2ZVNlZWQgPSBUUlVFOw0KKyAgICByZXR1cm4gcENvbnRleHQ7DQorfQ0KK0ZYX0RXT1JEIEZYX1JhbmRvbV9NVF9HZW5lcmF0ZShGWF9MUFZPSUQgcENvbnRleHQpDQorew0KKyAgICBGWFNZU19hc3NlcnQocENvbnRleHQgIT0gTlVMTCk7DQorICAgIEZYX0xQTVRSQU5ET01DT05URVhUIHBNVEMgPSAoRlhfTFBNVFJBTkRPTUNPTlRFWFQpcENvbnRleHQ7DQorICAgIEZYX0RXT1JEIHY7DQorICAgIHN0YXRpYyBGWF9EV09SRCBtYWdbMl0gPSB7MCwgTVRfTWF0cml4X0F9Ow0KKyAgICBGWF9EV09SRCAmbXRpID0gcE1UQy0+bXRpOw0KKyAgICBGWF9MUERXT1JEIHBCdWYgPSBwTVRDLT5tdDsNCisgICAgaWYgKChpbnQpbXRpIDwgMCB8fCBtdGkgPj0gTVRfTikgew0KKyAgICAgICAgaWYgKG10aSA+IE1UX04gJiYgIXBNVEMtPmJIYXZlU2VlZCkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRFdPUkQga2s7DQorICAgICAgICBmb3IgKGtrID0gMDsga2sgPCBNVF9OIC0gTVRfTTsga2sgKyspIHsNCisgICAgICAgICAgICB2ID0gKHBCdWZba2tdICYgTVRfVXBwZXJfTWFzaykgfCAocEJ1ZltrayArIDFdICYgTVRfTG93ZXJfTWFzayk7DQorICAgICAgICAgICAgcEJ1Zltra10gPSBwQnVmW2trICsgTVRfTV0gXiAodiA+PiAxKSBeIG1hZ1t2ICYgMV07DQorICAgICAgICB9DQorICAgICAgICBmb3IgKDsga2sgPCBNVF9OIC0gMTsga2sgKyspIHsNCisgICAgICAgICAgICB2ID0gKHBCdWZba2tdICYgTVRfVXBwZXJfTWFzaykgfCAocEJ1ZltrayArIDFdICYgTVRfTG93ZXJfTWFzayk7DQorICAgICAgICAgICAgcEJ1Zltra10gPSBwQnVmW2trICsgKE1UX00gLSBNVF9OKV0gXiAodiA+PiAxKSBeIG1hZ1t2ICYgMV07DQorICAgICAgICB9DQorICAgICAgICB2ID0gKHBCdWZbTVRfTiAtIDFdICYgTVRfVXBwZXJfTWFzaykgfCAocEJ1ZlswXSAmIE1UX0xvd2VyX01hc2spOw0KKyAgICAgICAgcEJ1ZltNVF9OIC0gMV0gPSBwQnVmW01UX00gLSAxXSBeICh2ID4+IDEpIF4gbWFnW3YgJiAxXTsNCisgICAgICAgIG10aSA9IDA7DQorICAgIH0NCisgICAgdiA9IHBCdWZbbXRpICsrXTsNCisgICAgdiBePSAodiA+PiAxMSk7DQorICAgIHYgXj0gKHYgPDwgNykgJiAweDlkMmM1NjgwVUw7DQorICAgIHYgXj0gKHYgPDwgMTUpICYgMHhlZmM2MDAwMFVMOw0KKyAgICB2IF49ICh2ID4+IDE4KTsNCisgICAgcmV0dXJuIHY7DQorfQ0KK3ZvaWQgRlhfUmFuZG9tX01UX0Nsb3NlKEZYX0xQVk9JRCBwQ29udGV4dCkNCit7DQorICAgIEZYU1lTX2Fzc2VydChwQ29udGV4dCAhPSBOVUxMKTsNCisgICAgRlhfRnJlZShwQ29udGV4dCk7DQorfQ0KK3ZvaWQgRlhfUmFuZG9tX0dlbmVyYXRlTVQoRlhfTFBEV09SRCBwQnVmZmVyLCBGWF9JTlQzMiBpQ291bnQpDQorew0KKyAgICBGWF9EV09SRCBkd1NlZWQ7DQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgaWYgKCFGWF9HZW5lcmF0ZUNyeXB0b1JhbmRvbSgmZHdTZWVkLCAxKSkgew0KKyAgICAgICAgRlhfUmFuZG9tX0dlbmVyYXRlQmFzZSgmZHdTZWVkLCAxKTsNCisgICAgfQ0KKyNlbHNlDQorICAgIEZYX1JhbmRvbV9HZW5lcmF0ZUJhc2UoJmR3U2VlZCwgMSk7DQorI2VuZGlmDQorICAgIEZYX0xQVk9JRCBwQ29udGV4dCA9IEZYX1JhbmRvbV9NVF9TdGFydChkd1NlZWQpOw0KKyAgICB3aGlsZSAoaUNvdW50IC0tID4gMCkgew0KKyAgICAgICAgKnBCdWZmZXIgKysgPSBGWF9SYW5kb21fTVRfR2VuZXJhdGUocENvbnRleHQpOw0KKyAgICB9DQorICAgIEZYX1JhbmRvbV9NVF9DbG9zZShwQ29udGV4dCk7DQorfQ0KK3ZvaWQgRlhfUmFuZG9tX0dlbmVyYXRlQmFzZShGWF9MUERXT1JEIHBCdWZmZXIsIEZYX0lOVDMyIGlDb3VudCkNCit7DQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgU1lTVEVNVElNRSBzdDEsIHN0MjsNCisgICAgOjpHZXRTeXN0ZW1UaW1lKCZzdDEpOw0KKyAgICBkbyB7DQorICAgICAgICA6OkdldFN5c3RlbVRpbWUoJnN0Mik7DQorICAgIH0gd2hpbGUgKEZYU1lTX21lbWNtcDMyKCZzdDEsICZzdDIsIHNpemVvZihTWVNURU1USU1FKSkgPT0gMCk7DQorICAgIEZYX0RXT1JEIGR3SGFzaDEgPSBGWF9IYXNoQ29kZV9TdHJpbmdfR2V0QSgoRlhfTFBDU1RSKSZzdDEsIHNpemVvZihzdDEpLCBUUlVFKTsNCisgICAgRlhfRFdPUkQgZHdIYXNoMiA9IEZYX0hhc2hDb2RlX1N0cmluZ19HZXRBKChGWF9MUENTVFIpJnN0Miwgc2l6ZW9mKHN0MiksIFRSVUUpOw0KKyAgICA6OnNyYW5kKChkd0hhc2gxIDw8IDE2KSB8IChGWF9EV09SRClkd0hhc2gyKTsNCisjZWxzZQ0KKyAgICB0aW1lX3QgdG1MYXN0ID0gdGltZShOVUxMKSwgdG1DdXI7DQorICAgIHdoaWxlICgodG1DdXIgPSB0aW1lKE5VTEwpKSA9PSB0bUxhc3QpOw0KKyAgICA6OnNyYW5kKCh0bUN1ciA8PCAxNikgfCAodG1MYXN0ICYgMHhGRkZGKSk7DQorI2VuZGlmDQorICAgIHdoaWxlIChpQ291bnQgLS0gPiAwKSB7DQorICAgICAgICAqcEJ1ZmZlciArKyA9IChGWF9EV09SRCkoKDo6cmFuZCgpIDw8IDE2KSB8ICg6OnJhbmQoKSAmIDB4RkZGRikpOw0KKyAgICB9DQorfQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorRlhfQk9PTCBGWF9HZW5lcmF0ZUNyeXB0b1JhbmRvbShGWF9MUERXT1JEIHBCdWZmZXIsIEZYX0lOVDMyIGlDb3VudCkNCit7DQorICAgIEhDUllQVFBST1YgaENQID0gTlVMTDsNCisgICAgaWYgKCE6OkNyeXB0QWNxdWlyZUNvbnRleHQoJmhDUCwgTlVMTCwgTlVMTCwgUFJPVl9SU0FfRlVMTCwgMCkgfHwgaENQID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICA6OkNyeXB0R2VuUmFuZG9tKGhDUCwgaUNvdW50ICogc2l6ZW9mKEZYX0RXT1JEKSwgKEZYX0xQQllURSlwQnVmZmVyKTsNCisgICAgOjpDcnlwdFJlbGVhc2VDb250ZXh0KGhDUCwgMCk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCisjZW5kaWYNCit2b2lkIEZYX1JhbmRvbV9HZW5lcmF0ZUNyeXB0byhGWF9MUERXT1JEIHBCdWZmZXIsIEZYX0lOVDMyIGlDb3VudCkNCit7DQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgRlhfR2VuZXJhdGVDcnlwdG9SYW5kb20ocEJ1ZmZlciwgaUNvdW50KTsNCisjZWxzZQ0KKyAgICBGWF9SYW5kb21fR2VuZXJhdGVCYXNlKHBCdWZmZXIsIGlDb3VudCk7DQorI2VuZGlmDQorfQ0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNydC9meF91Y2RkYXRhLmNwcCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X3VjZGRhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYTM0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC9meF91Y2RkYXRhLmNwcApAQCAtMCwwICsxLDQxNDUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2V4dC5oIgorZXh0ZXJuIGNvbnN0IEZYX0RXT1JEIGdzX0ZYX1RleHRMYXlvdXRfQ29kZVByb3BlcnRpZXNbNjU1MzZdID0geworICAgIDB4ZmZmZTlhOTMsIDB4ZmZmZTlhOTMsIDB4ZmZmZTlhOTMsIDB4ZmZmZTlhOTMsIDB4ZmZmZTlhOTMsIDB4ZmZmZTlhOTMsIDB4ZmZmZTlhOTMsIDB4ZmZmZTlhOTMsIDB4ZmZmZTlhOTMsIDB4ZmZmZThhZTUsIDB4ZmZmZTliNWMsIDB4ZmZmZTlhZGEsIDB4ZmZmZTliMWEsIDB4ZmZmZTliNWIsIDB4ZmZmZTlhOTMsIDB4ZmZmZTlhOTMsCisgICAgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWE5MywgMHhmZmZlOWI1MywgMHhmZmZlOWI1MywgMHhmZmZlOWI1MywgMHhmZmZlOWFkMywKKyAgICAweGZmZmU5MzIzLCAweGZmZmViMDA1LCAweGZmZmViMDAyLCAweGZmZmViMjRiLCAweGZmZmViMjQ4LCAweGZmZmViMjQ5LCAweGZmZmViMDBiLCAweGZmZmViMDAyLCAweDAwN2ViMDAwLCAweDAwZmViMDAxLCAweGZmZmViMDBiLCAweGZmZmViMjA4LCAweGZmZmViMWM3LCAweGZmZmViMjBlLCAweGZmZmViMWM3LCAweGZmZmViMWM2LAorICAgIDB4ZmZmZWE5MGEsIDB4ZmZmZWE5MGEsIDB4ZmZmZWE5MGEsIDB4ZmZmZWE5MGEsIDB4ZmZmZWE5MGEsIDB4ZmZmZWE5MGEsIDB4ZmZmZWE5MGEsIDB4ZmZmZWE5MGEsIDB4ZmZmZWE5MGEsIDB4ZmZmZWE5MGEsIDB4ZmZmZWIxYzcsIDB4ZmZmZWIwMDcsIDB4MDE3ZWIwMDAsIDB4ZmZmZWIwMGIsIDB4MDFmZWIwMDEsIDB4ZmZmZWIwMDUsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweDAyN2ViMDAwLCAweGZmZmViMDA4LCAweDAyZmViMDAxLCAweGZmZmViMDBiLCAweGZmODBiMDBiLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHgwMzdlYjAwMCwgMHhmZmZlYjAwZiwgMHgwM2ZlYjAwMSwgMHhmZmZlYjAwYiwgMHhmZmZlYjI5MywKKyAgICAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMzVkLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLCAweGZmZmViMjkzLAorICAgIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsIDB4ZmZmZWIyOTMsCisgICAgMHhmZmZlOTFjMywgMHhmZmZlYjAwMCwgMHhmZmZlYjI0OSwgMHhmZmZlYjI0OCwgMHhmZmZlYjI0OCwgMHhmZmZlYjI0OCwgMHhmZmZlYjAwYiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA2MiwgMHgwNDdlYjAwMCwgMHhmZmZlYjAwYiwgMHhmZmZlYjI4ZiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMjQ5LCAweGZmZmViMjQ4LCAweGZmZmViMTIyLCAweGZmZmViMTIyLCAweGZmZmViMDEwLCAweGZmZmViMDRiLCAweGZmZmViMDIyLCAweGZmZmViMDIyLCAweGZmZmViMDIyLCAweGZmZmViMTIyLCAweGZmZmViMDYyLCAweDA0ZmViMDAxLCAweGZmZmViMDIyLCAweGZmZmViMDIyLCAweGZmZmViMDIyLCAweGZmZmViMDAwLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAyMiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMDEwLCAweGZmZmViMDIyLCAweGZmZmViMDIyLCAweGZmZmViMDIyLCAweGZmZmViMDEwLCAweGZmZmViMDIyLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMTAsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE4MywKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTgzLCAweGZmZmVhMTgzLCAweGZmZmVhMTgzLCAweGZmZmVhMTgzLAorICAgIDB4ZmZmZWExODMsIDB4ZmZmZWExODMsIDB4ZmZmZWExODMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwNywgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDRiLCAweGZmZmViMDBiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIxOTMsIDB4ZmZmZWIxOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0NywgMHhmZmZlYjAwZiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MGE0LCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA4ZiwgMHhmZmZlYTE5MywKKyAgICAweGZmZmViMDhiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDhiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDg1LCAweGZmZmVhMTkzLCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LAorICAgIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsCisgICAgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwKKyAgICAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LAorICAgIDB4ZmZmZWQwY2IsIDB4ZmZmZWQwY2IsIDB4ZmZmZWQwY2IsIDB4ZmZmZWQwY2IsIDB4ZmZmZWQxNjQsIDB4ZmZmZWQxNjQsIDB4ZmZmZWQwMGIsIDB4ZmZmZWQwMGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQyNDksIDB4ZmZmZWQyNDksIDB4ZmZmZWQxNDksIDB4ZmZmZWQxYzcsIDB4ZmZmZWQxNDcsIDB4ZmZmZWQwMGIsIDB4ZmZmZWQwMGIsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlZDE0NSwgMHhmZmZlZDE2NCwgMHhmZmZlZDE2NCwgMHhmZmZlZDE0NSwgMHhmZmZlZDE0NSwKKyAgICAweGZmZmVkMTY0LCAweGZmZmVkMTRiLCAweGZmZmViOTRiLCAweGZmZmViOTRiLCAweGZmZmVjMTRiLCAweGZmZmViOTRiLCAweGZmZmVjOTRiLCAweGZmZmViOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjMTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjMTRiLAorICAgIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsCisgICAgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzE0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVkMTY0LAorICAgIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQyNDksIDB4ZmZmZWQwY2EsIDB4ZmZmZWQwY2EsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYzE0YiwgMHhmZmZlYzE0YiwgMHhmZmZlYzE0YiwgMHhmZmZlYTE0YiwgMHhmZmZlYzE0YiwgMHhmZmZlYzE0YiwgMHhmZmZlYzE0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwKKyAgICAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLAorICAgIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsCisgICAgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwKKyAgICAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVkMTRiLCAweGZmZmVkMTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLCAweGZmZmVjOTRiLAorICAgIDB4ZmZmZWMxNGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWM5NGIsIDB4ZmZmZWMxNGIsCisgICAgMHhmZmZlYzk0YiwgMHhmZmZlYzk0YiwgMHhmZmZlYzE0YiwgMHhmZmZlYzE0YiwgMHhmZmZlYzk0NSwgMHhmZmZlYzE0YiwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlZDBjYiwgMHhmZmZlZDE5MywgMHhmZmZlYTE5MywKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVkMTRiLCAweGZmZmVkMTRiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVkMDBiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLAorICAgIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxMGEsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsCisgICAgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlODE2NCwgMHhmZmZlYjI4YiwKKyAgICAweGZmZmViMTRiLCAweGZmZmVhMTkzLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLAorICAgIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MTY0LCAweGZmZmU4MTY0LCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLAorICAgIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWMxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsIDB4ZmZmZWQxNGIsCisgICAgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlYzE0YiwgMHhmZmZlYzE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwgMHhmZmZlZDE0YiwKKyAgICAweGZmZmVkMTRiLCAweGZmZmVjMTRiLCAweGZmZmVkMTRiLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLCAweGZmZmVkMTRiLCAweGZmZmVkMTRiLCAweGZmZmVkMTRiLCAweGZmZmVjMTRiLCAweGZmZmVjMTRiLCAweGZmZmVkMTRiLCAweGZmZmVkMTRiLCAweGZmZmVkMTRiLCAweGZmZmVkMTRiLCAweGZmZmVkMTRiLCAweGZmZmVkMTRiLAorICAgIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsIDB4ZmZmZWIxNGIsCisgICAgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwgMHhmZmZlYjE0YiwKKyAgICAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmViMTRiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWIxNGIsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsIDB4ZmZmZTgxNjQsCisgICAgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YSwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwKKyAgICAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLAorICAgIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwNywgMHhmZmZlYjAwNSwgMHhmZmZlYjA4YiwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwKKyAgICAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLAorICAgIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwOGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA4YiwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA4YiwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwKKyAgICAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmU4MGE0LAorICAgIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsCisgICAgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwKKyAgICAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LAorICAgIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsCisgICAgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwKKyAgICAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LAorICAgIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsCisgICAgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwKKyAgICAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LAorICAgIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsIDB4ZmZmZTgwYTQsCisgICAgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwgMHhmZmZlODBhNCwKKyAgICAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LCAweGZmZmU4MGE0LAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsCisgICAgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmViMDRiLCAweGZmZmViMDUzLCAweGZmZmViMDUzLAorICAgIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIyNDksIDB4ZmZmZWIyNDksIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNDksIDB4ZmZmZWIwNGIsIDB4ZmZmZWIyNDgsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywKKyAgICAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsCisgICAgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlYjI0OCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmViMDRiLCAweGZmZmViMDUzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYTE5MywgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywKKyAgICAweGZmZmVhMTkzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmU4MDI0LCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMjQ4LCAweGZmZmViMDBiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmViMDRiLCAweGZmZmViMDUzLCAweGZmZmVhMDUzLAorICAgIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZWEwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywKKyAgICAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmU4MDI0LCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDQ5LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA1MywKKyAgICAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDVlLCAweGZmZmVhMTllLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMjQ4LAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlODAyNCwgMHhmZmZlYjA1ZSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlODAyNCwgMHhmZmZlYjA1ZSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA1ZSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmU4MDI0LCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNWUsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNWUsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlODAyNCwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmU4MDI0LCAweGZmZmViMDVlLCAweGZmZmU4MDI0LCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNTAsIDB4ZmZmZWIwNTAsIDB4ZmZmZWIwNTAsIDB4ZmZmZWIwNTAsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNTAsIDB4ZmZmZWIwNTAsIDB4ZmZmZWIwNDMsIDB4ZmZmZWIwNTAsIDB4ZmZmZWIwNTAsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNDMsIDB4ZmZmZWIwNDUsIDB4ZmZmZWIwNDUsIDB4ZmZmZWIwNDUsCisgICAgMHhmZmZlYjA0NSwgMHhmZmZlYjA0NSwgMHhmZmZlYjA0MywgMHhmZmZlYjA0YiwgMHhmZmZlYjA0NSwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGYsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4MDU3ZWIwMDAsIDB4MDVmZWIwMDEsIDB4MDY3ZWIwMDAsIDB4MDZmZWIwMDEsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA0ZiwKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDRmLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmViMDRmLCAweGZmZmViMDRmLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA1MCwgMHhmZmZlYjA1MCwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA1MCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsCisgICAgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRmLCAweGZmZmViMDRmLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsCisgICAgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDVlLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LAorICAgIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsCisgICAgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywKKyAgICAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LCAweGZmZmUzMDU3LAorICAgIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsIDB4ZmZmZTMwNTcsCisgICAgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywgMHhmZmZlMzA1NywKKyAgICAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LAorICAgIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsCisgICAgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwKKyAgICAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LAorICAgIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTgsIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksCisgICAgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwKKyAgICAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LAorICAgIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksCisgICAgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwKKyAgICAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDBmLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIzMGYsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHgwNzdlYjAwMCwgMHgwN2ZlYjAwMSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDRmLCAweGZmZmViMDRmLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmVhMTllLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLAorICAgIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNDQsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIwNWUsIDB4ZmZmZWExOWUsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMDUsIDB4ZmZmZWIwMDUsIDB4ZmZmZWIwMGYsIDB4ZmZmZWIwMGYsIDB4ZmZmZWIwMTAsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMDUsIDB4ZmZmZWIwMDUsIDB4ZmZmZWIwMGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIzMDMsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYTE5MywgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDBiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDA1LCAweGZmZmViMDA1LCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDFlLCAweGZmZmViMDFlLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlODAyNCwKKyAgICAweGZmZmVhMTllLCAweGZmZmViMDVlLCAweGZmZmVhMTllLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmVhMTllLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZWExOWUsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsCisgICAgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRmLCAweGZmZmViMDRmLCAweGZmZmViMDRiLCAweGZmZmViMDRmLCAweGZmZmViMDRmLCAweGZmZmViMDRmLAorICAgIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDUzLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywgMHhmZmZlYjA1MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwKKyAgICAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRmLCAweGZmZmViMDRmLAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDRiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA1MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAxMCwgMHhmZmZlYjAwYiwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMzBmLCAweGZmZmViMzBmLCAweGZmZmViMzBmLCAweGZmZmViMzBmLCAweGZmZmViMzBmLCAweGZmZmViMzBmLCAweGZmZmViMzBmLCAweGZmZmViMzAzLCAweGZmZmViMzBmLCAweGZmZmViMzBmLCAweGZmZmViMzBmLCAweGZmZmViMjkyLCAweGZmZmU5YTkzLCAweGZmZmU5YTkzLCAweGZmZmU5ODUzLCAweGZmZmU5ODkzLAorICAgIDB4ZmZmZWIwMGYsIDB4ZmZmZWIwMDMsIDB4ZmZmZWIwMGYsIDB4ZmY4MmIwMGYsIDB4ZmY4NGIwMTEsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4MDgwNmIwMDAsIDB4MDg4OGIwMDIsIDB4ZmZmZWIwMDAsIDB4ZmZmZWIwMDIsIDB4MDkwYWIwMDAsIDB4MDk4Y2IwMDEsIDB4ZmZmZWIwMDAsIDB4ZmZmZWIwMDIsCisgICAgMHhmZmZlYjAyMiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwZCwgMHhmZmZlYjAwZCwgMHhmZmZlYjAwZCwgMHhmZmZlYjAwZiwgMHhmZmZlOWIxYSwgMHhmZmZlOWI1YSwgMHhmZmZlOWM1MywgMHhmZmZlOWJkMywgMHhmZmZlOWM5MywgMHhmZmZlOWMxMywgMHhmZmZlOWI5MywgMHhmZmZlYjFjMywKKyAgICAweGZmZmViMjQ5LCAweGZmZmViMjQ5LCAweGZmZmViMjQ5LCAweGZmZmViMjQ5LCAweGZmZmViMjQ5LCAweGZmZmViMDA5LCAweGZmZmViMDA5LCAweGZmZmViMDA5LCAweGZmZmViMDBiLCAweDBhN2ViMDAwLCAweDBhZmViMDAxLCAweGZmZmViMDIyLCAweGZmZmViMDA0LCAweGZmZmViMDA0LCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIxYzcsIDB4MGI3ZWIwMDAsIDB4MGJmZWIwMDEsIDB4ZmZmZWIwMDQsIDB4ZmZmZWIwMDQsIDB4ZmZmZWIwMDQsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwZiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwZiwgMHhmZmZlYjAwZiwgMHhmZmZlYjAwZiwgMHhmZmZlYjAwZiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwZiwgMHhmZmZlYjAwZiwgMHhmZmZlYjMwZiwKKyAgICAweGZmZmViMjk0LCAweGZmZmViMjhiLCAweGZmZmViMjhiLCAweGZmZmViMjhiLCAweGZmZmViMjhiLCAweGZmZmU4MmE0LCAweGZmZmU4MmE0LCAweGZmZmU4MmE0LCAweGZmZmU4MmE0LCAweGZmZmU4MmE0LCAweGZmZmU5YTkzLCAweGZmZmU5YTkzLCAweGZmZmU5YTkzLCAweGZmZmU5YTkzLCAweGZmZmU5YTkzLCAweGZmZmU5YTkzLAorICAgIDB4ZmZmZWIxMGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIxMjIsIDB4ZmZmZWIxMGIsIDB4ZmZmZWIxMGIsIDB4ZmZmZWIxMGIsIDB4ZmZmZWIxMGIsIDB4ZmZmZWIxMGIsIDB4ZmZmZWIyMGIsIDB4ZmZmZWIyMGIsIDB4ZmZmZWIwMGIsIDB4MGM3ZWIwMDAsIDB4MGNmZWIwMDEsIDB4ZmZmZWIwNjIsCisgICAgMHhmZmZlYjEwYiwgMHhmZmZlYjEyMiwgMHhmZmZlYjEyMiwgMHhmZmZlYjEyMiwgMHhmZmZlYjEyMiwgMHhmZmZlYjEwYiwgMHhmZmZlYjEwYiwgMHhmZmZlYjEwYiwgMHhmZmZlYjEwYiwgMHhmZmZlYjEwYiwgMHhmZmZlYjIwYiwgMHhmZmZlYjIwYiwgMHhmZmZlYjAwYiwgMHgwZDdlYjAwMCwgMHgwZGZlYjAwMSwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDksIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsIDB4ZmZmZWIyNDgsCisgICAgMHhmZmZlYjI0OCwgMHhmZmZlYjI0OCwgMHhmZmZlYjI0OCwgMHhmZmZlYjI0OCwgMHhmZmZlYjI0OCwgMHhmZmZlYjI0OCwgMHhmZmZlYjI0OSwgMHhmZmZlYjI0OCwgMHhmZmZlYjI0OCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIxOTMsIDB4ZmZmZWIxOTMsIDB4ZmZmZWIxOTMsCisgICAgMHhmZmZlYjE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjE5MywgMHhmZmZlYjE5MywgMHhmZmZlYjE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywKKyAgICAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMDksIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMDksIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA2MiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwOCwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMDIyLCAweGZmZmViMDBiLCAweGZmZmViMDRiLCAweGZmZmViMDBiLCAweGZmZmViMDRiLCAweGZmZmViMDBiLCAweGZmZmViMDRiLCAweGZmZmViMDBiLCAweGZmZmViMDRiLCAweGZmZmViMDYyLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMjRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMDIyLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNjIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA2MiwgMHhmZmZlYjA2MiwgMHhmZmZlYjA2MiwgMHhmZmZlYjA2MiwgMHhmZmZlYjA2MiwgMHhmZmZlYjA2MiwgMHhmZmZlYjA2MiwgMHhmZmZlYjA2MiwgMHhmZmZlYjA2MiwgMHhmZmZlYjA2MiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDIyLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAyMiwgMHgwZTdlYjAyMiwgMHgwZWZlYjAwYiwgMHgwZjdlYjAwYiwgMHgwZmZlYjAyMiwgMHgxMDdlYjAwYiwgMHgxMGZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAyMiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMjA4LCAweGZmZmViMjQ4LCAweGZmZmViMDBiLCAweDExN2ViMDIyLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMDIyLCAweGZmZmViMDIyLAorICAgIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHgxMWZlYjAyMiwgMHgxMjdlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweDEyZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4MTM3ZWIwMjIsIDB4MTNmZWIwMGIsIDB4MTQ3ZWIwMGIsIDB4MTRmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAyMiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHgxNTdlYjAyMiwgMHgxNWZlYjAyMiwgMHgxNjdlYjAyMiwgMHgxNmZlYjAyMiwgMHgxNzdlYjAwYiwgMHgxN2ZlYjAwYiwgMHgxODdlYjAyMiwgMHgxOGZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHgxOTdlYjAyMiwgMHgxOWZlYjAyMiwKKyAgICAweDFhN2ViMDBiLCAweDFhZmViMDBiLCAweDFiN2ViMDBiLCAweDFiZmViMDBiLCAweDFjN2ViMDBiLCAweDFjZmViMDBiLCAweDFkN2ViMDBiLCAweDFkZmViMDBiLCAweDFlN2ViMDBiLCAweDFlZmViMDBiLCAweDFmN2ViMDBiLCAweDFmZmViMDBiLCAweDIwN2ViMDBiLCAweDIwZmViMDBiLCAweDIxN2ViMDBiLCAweDIxZmViMDBiLAorICAgIDB4MjI3ZWIwMGIsIDB4MjJmZWIwMGIsIDB4MjM3ZWIwMjIsIDB4MjNmZWIwMjIsIDB4MjQ3ZWIwMGIsIDB4MjRmZWIwMGIsIDB4MjU3ZWIwMjIsIDB4MjVmZWIwMjIsIDB4MjY3ZWIwMGIsIDB4MjZmZWIwMGIsIDB4Mjc3ZWIwMGIsIDB4MjdmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4Mjg3ZWIwMGIsCisgICAgMHgyOGZlYjAwYiwgMHgyOTdlYjAwYiwgMHgyOWZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHgyYTdlYjAwYiwgMHhmZmZlYjAyMiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweDJhZmViMDBiLCAweDJiN2ViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDIyLCAweDJiZmViMDBiLCAweGZmZmViMDBiLCAweDJjN2ViMDBiLCAweDJjZmViMDBiLCAweGZmZmViMDBiLCAweDJkN2ViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4MmRmZWIwMGIsIDB4MmU3ZWIwMGIsIDB4MmVmZWIwMGIsIDB4MmY3ZWIwMGIsIDB4MmZmZWIwMGIsIDB4MzA3ZWIwMGIsIDB4MzBmZWIwMGIsIDB4MzE3ZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMjIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHgzMWZlYjAwYiwgMHgzMjdlYjAwYiwgMHgzMmZlYjAwYiwgMHgzMzdlYjAwYiwgMHgzM2ZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweDM0N2ViMDBiLCAweDM0ZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweDM1N2ViMDBiLCAweDM1ZmViMDBiLCAweDM2N2ViMDBiLCAweDM2ZmViMDBiLCAweDM3N2ViMDBiLCAweDM3ZmViMDBiLCAweDM4N2ViMDBiLCAweDM4ZmViMDBiLCAweDM5N2ViMDBiLCAweDM5ZmViMDBiLAorICAgIDB4M2E3ZWIwMGIsIDB4M2FmZWIwMGIsIDB4M2I3ZWIwMGIsIDB4M2JmZWIwMGIsIDB4M2M3ZWIwMGIsIDB4M2NmZWIwMGIsIDB4M2Q3ZWIwMGIsIDB4M2RmZWIwMGIsIDB4M2U3ZWIwMGIsIDB4M2VmZWIwMGIsIDB4M2Y3ZWIwMGIsIDB4M2ZmZWIwMGIsIDB4NDA3ZWIwMGIsIDB4NDBmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHg0MTdlYjAwYiwgMHg0MWZlYjAwYiwgMHg0MjdlYjAwYiwgMHg0MmZlYjAwYiwgMHg0MzdlYjAwYiwgMHhmZmZlYjAwYiwgMHg0M2ZlYjAwYiwgMHg0NDdlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHg0NGZlYjAwYiwgMHg0NTdlYjAwYiwgMHg0NWZlYjAwYiwgMHg0NjdlYjAwYiwgMHg0NmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweDQ3N2ViMDBiLCAweDQ3ZmViMDBiLCAweDQ4N2ViMDBiLCAweDQ4ZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMjIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHg0OTdlYjAwMCwgMHg0OWZlYjAwMSwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDRiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsCisgICAgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwKKyAgICAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMTIyLCAweGZmZmUzMTIyLCAweGZmZmUzMTIyLCAweGZmZmUzMTIyLCAweGZmZmUzMTIyLCAweGZmZmUzMTIyLCAweGZmZmUzMTIyLCAweGZmZmUzMTIyLAorICAgIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMxMjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsCisgICAgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwKKyAgICAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLAorICAgIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsCisgICAgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwgMHhmZmZlMzA2MiwKKyAgICAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDYyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLAorICAgIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwKKyAgICAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLAorICAgIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsCisgICAgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwKKyAgICAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsCisgICAgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwKKyAgICAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwKKyAgICAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUwMDI0LCAweGZmZmUzMDIyLAorICAgIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsCisgICAgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMDAyNCwgMHhmZmZlMzAyMiwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwKKyAgICAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLAorICAgIDB4ZmZmZTAwMjQsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTAwMjQsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUwMDI0LCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMDAyNCwgMHhmZmZlMzAwYiwgMHhmZmZlMDAyNCwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUzMDBiLCAweGZmZmUzMDIyLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDAyLCAweGZmZmUzMDAyLCAweGZmZmUzMDAyLCAweGZmZmUzMDAyLCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTAwMjQsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMDUsIDB4ZmZmZTMwMDUsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4NGE3ZTMwMDAsIDB4NGFmZTMwMDEsIDB4NGI3ZTMwMDAsIDB4NGJmZTMwMDEsIDB4NGM3ZTMwMDAsIDB4NGNmZTMwMDEsIDB4NGQ3ZTMwMDAsIDB4NGRmZTMwMDEsCisgICAgMHg0ZTdlMzAwMCwgMHg0ZWZlMzAwMSwgMHg0ZjdlMzAwMCwgMHg0ZmZlMzAwMSwgMHg1MDdlMzAwMCwgMHg1MGZlMzAwMSwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwgMHhmZmZlMzAyMiwKKyAgICAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLCAweGZmZmUzMDIyLAorICAgIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUwMDI0LCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4NTE3ZTMwMGIsIDB4NTFmZTMwMGIsIDB4NTI3ZTMwMDAsIDB4NTJmZTMwMDEsIDB4ZmZmZTMwMGIsIDB4NTM3ZTMwMGIsIDB4NTNmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTAwMjQsIDB4ZmZmZTMwMGIsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHg1NDdlMzAwYiwgMHg1NGZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHg1NTdlMzAwYiwgMHg1NWZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDU2N2UzMDBiLCAweDU2ZmUzMDBiLCAweDU3N2UzMDBiLCAweDU3ZmUzMDBiLCAweDU4N2UzMDAwLCAweDU4ZmUzMDAxLCAweDU5N2UzMDAwLCAweDU5ZmUzMDAxLCAweDVhN2UzMDAwLCAweDVhZmUzMDAxLCAweDViN2UzMDAwLCAweDViZmUzMDAxLCAweDVjN2UzMDAwLCAweDVjZmUzMDAxLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHg1ZDdlMzAwMCwgMHg1ZGZlMzAwMSwgMHg1ZTdlMzAwMCwgMHg1ZWZlMzAwMSwgMHg1ZjdlMzAwMCwgMHg1ZmZlMzAwMSwgMHg2MDdlMzAwMCwgMHg2MGZlMzAwMSwgMHg2MTdlMzAwMCwgMHg2MWZlMzAwMSwgMHg2MjdlMzAwMCwgMHg2MmZlMzAwMSwgMHg2MzdlMzAwMCwKKyAgICAweDYzZmUzMDAxLCAweDY0N2UzMDAwLCAweDY0ZmUzMDAxLCAweDY1N2UzMDAwLCAweDY1ZmUzMDAxLCAweDY2N2UzMDAwLCAweDY2ZmUzMDAxLCAweDY3N2UzMDAwLCAweDY3ZmUzMDAxLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHg2ODdlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweDY4ZmUzMDBiLCAweDY5N2UzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDY5ZmUzMDBiLCAweDZhN2UzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDZhZmUzMDBiLAorICAgIDB4NmI3ZTMwMGIsIDB4NmJmZTMwMGIsIDB4NmM3ZTMwMGIsIDB4ZmZmZTMwMGIsIDB4NmNmZTMwMGIsIDB4NmQ3ZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4NmRmZTMwMDAsIDB4NmU3ZTMwMDEsIDB4NmVmZTMwMDAsIDB4NmY3ZTMwMDEsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDcwN2UzMDBiLCAweDcwZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDcxN2UzMDAwLCAweDcxZmUzMDAxLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDcyN2UzMDBiLCAweDcyZmUzMDBiLCAweDczN2UzMDBiLCAweDczZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4NzQ3ZTMwMGIsIDB4NzRmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4NzU3ZTMwMGIsIDB4NzVmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4NzY3ZTMwMGIsIDB4NzZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHg3NzdlMzAwYiwgMHg3N2ZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHg3ODdlMzAwYiwgMHg3OGZlMzAwYiwgMHg3OTdlMzAwYiwKKyAgICAweDc5ZmUzMDBiLCAweDdhN2UzMDBiLCAweDdhZmUzMDBiLCAweDdiN2UzMDBiLCAweDdiZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDdjN2UzMDBiLCAweDdjZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4N2Q3ZTMwMGIsIDB4N2RmZTMwMGIsIDB4N2U3ZTMwMGIsIDB4N2VmZTMwMGIsIDB4N2Y3ZTMwMGIsIDB4N2ZmZTMwMGIsIDB4ODA3ZTMwMGIsIDB4ODBmZTMwMGIsIDB4ODE3ZTMwMGIsIDB4ODFmZTMwMGIsIDB4ODI3ZTMwMGIsIDB4ODJmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHg4MzdlMzAwYiwgMHg4M2ZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHg4NDdlMzAwYiwgMHg4NGZlMzAwYiwgMHg4NTdlMzAwYiwgMHg4NWZlMzAwYiwgMHg4NjdlMzAwYiwgMHg4NmZlMzAwYiwgMHg4NzdlMzAwYiwgMHg4N2ZlMzAwYiwgMHhmZmZlMzAwYiwgMHg4ODdlMzAwYiwKKyAgICAweDg4ZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDg5N2UzMDBiLCAweDg5ZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDhhN2UzMDBiLCAweDhhZmUzMDBiLCAweDhiN2UzMDBiLCAweDhiZmUzMDBiLCAweDhjN2UzMDBiLAorICAgIDB4OGNmZTMwMGIsIDB4OGQ3ZTMwMGIsIDB4OGRmZTMwMGIsIDB4OGU3ZTMwMGIsIDB4OGVmZTMwMGIsIDB4OGY3ZTMwMGIsIDB4OGZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4OTA3ZTMwMGIsIDB4OTBmZTMwMGIsIDB4OTE3ZTMwMGIsCisgICAgMHg5MWZlMzAwYiwgMHg5MjdlMzAwYiwgMHg5MmZlMzAwYiwgMHg5MzdlMzAwYiwgMHg5M2ZlMzAwYiwgMHg5NDdlMzAwYiwgMHg5NGZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHg5NTdlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDk1ZmUzMDBiLCAweDk2N2UzMDBiLCAweDk2ZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweDk3N2UzMDBiLCAweDk3ZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4OTg3ZTMwMGIsIDB4OThmZTMwMGIsIDB4OTk3ZTMwMGIsIDB4OTlmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTMwMjIsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYTE5MywKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDA1LCAweGZmZmViMDBmLCAweGZmZmViMDBmLCAweGZmZmViMDBmLCAweGZmZmViMDBiLCAweGZmZmViMDA1LCAweGZmZmViMDBmLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsCisgICAgMHhmZmZlYjAwMSwgMHhmZmZlYjAwMSwgMHg5YTdlYjAwMCwgMHg5YWZlYjAwMSwgMHg5YjdlYjAwMCwgMHg5YmZlYjAwMSwgMHhmZmZlYjAwMiwgMHhmZmZlYjAwMiwgMHhmZmZlYjAwMiwgMHg5YzdlYjAwMCwgMHg5Y2ZlYjAwMSwgMHhmZmZlYjAwMiwgMHg5ZDdlYjAwMCwgMHg5ZGZlYjAwMSwgMHhmZmZlYjAwZiwgMHhmZmZlYjAwZiwKKyAgICAweGZmZmViMDBmLCAweGZmZmViMDBmLCAweGZmZmViMDBmLCAweGZmZmViMDBmLCAweGZmZmViMDBmLCAweGZmZmViMDBmLCAweGZmZmViMDBiLCAweGZmZmViMDBmLCAweGZmZmViMDAwLCAweGZmZmViMDBmLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweDllN2ViMDAwLCAweDllZmViMDAxLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4OWY3ZWIwMDAsIDB4OWZmZWIwMDEsIDB4YTA3ZWIwMDAsIDB4YTBmZWIwMDEsIDB4YTE3ZWIwMDAsIDB4YTFmZWIwMDEsIDB4YTI3ZWIwMDAsIDB4YTJmZWIwMDEsIDB4YTM3ZWIwMDAsIDB4YTNmZWIwMDEsIDB4ZmZmZWIwMGYsIDB4ZmZmZWIwMGYsIDB4ZmZmZWIwMGYsIDB4ZmZmZWIwMGYsIDB4ZmZmZWIwMDUsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwZiwgMHhmZmZlYjAwZiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMDAyNCwgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTMzMGMsIDB4ZmZmZjMwMDEsIDB4ZmZmZjMwMDEsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4YTQwZWIwMDAsIDB4YTQ5MGIwMDEsIDB4YTUxMmIwMDAsIDB4YTU5NGIwMDEsIDB4YTYxNmIwMDAsIDB4YTY5OGIwMDEsIDB4YTcxYWIwMDAsIDB4YTc5Y2IwMDEsCisgICAgMHhhODFlYjAwMCwgMHhhOGEwYjAwMSwgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhhOTIyYjAwMCwgMHhhOWE0YjAwMSwgMHhhYTdlYjAwMCwgMHhhYWZlYjAwMSwgMHhhYjdlYjAwMCwgMHhhYmZlYjAwMSwgMHhhYzdlYjAwMCwgMHhhY2ZlYjAwMSwgMHhmZmZlMzAwNCwgMHhmZmZlMzAwMCwgMHhmZmZlMzAwMSwgMHhmZmZlMzAwMSwKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUyMTkzLCAweGZmZmUyMTkzLCAweGZmZmUyMTkzLCAweGZmZmUyMTkzLCAweGZmZmUyMTkzLCAweGZmZmUyMTkzLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZjMwNDQsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmYzMDQ0LCAweGZmZmUzMDRjLCAweGZmZmYzMDQ0LCAweGZmZmUzMDRjLCAweGZmZmYzMDQ0LCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDQ0LCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTIxOTMsIDB4ZmZmZTIxOTMsIDB4ZmZmZTMwMDQsIDB4ZmZmZTMwMDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzAwNCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDQ0LCAweGZmZmUzMDRjLCAweGZmZmUzMDQ0LCAweGZmZmUzMDRjLCAweGZmZmUzMDQ0LCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDQ0LCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwMDQsIDB4ZmZmZWIwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZWIwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwgMHhmZmZlMzA0NCwKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsIDB4ZmZmZTMwNjIsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMDA2NCwgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsIDB4ZmZmZTMwMGIsCisgICAgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwgMHhmZmZlMzAwYiwKKyAgICAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDQ0LCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRmLCAweGZmZmUzMDRmLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzAwZiwgMHhmZmZlMzAwNSwgMHhmZmZlMzAwZiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGEsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYTE5MywKKyAgICAweGZmZmViMTkzLCAweGZmZmViMTkzLCAweGZmZmViMTkzLCAweGZmZmViMDBiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA0YiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLAorICAgIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsIDB4ZmZmZWIwMGIsCisgICAgMHhmZmZlYjAwYiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAwYiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDUzLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmViMDBiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIyNDksIDB4ZmZmZWIyNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjAxMCwgMHhmZmZlYjAxMCwgMHhmZmZlYjAwNSwgMHhmZmZlYjAwNSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLAorICAgIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGYsCisgICAgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGYsIDB4ZmZmZWIwNGYsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywgMHhmZmZlYjA1NywKKyAgICAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmViMDU3LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZWIwNTMsCisgICAgMHhmZmZlYjA1MywgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmViMDRhLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYjA1MywKKyAgICAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwNTMsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlYjA0YSwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwgMHhmZmZlYjA0ZiwKKyAgICAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwKKyAgICAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLCAweGZmZmViMDVlLAorICAgIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYjA1ZSwgMHhmZmZlYTE5ZSwgMHhmZmZlYTE5ZSwKKyAgICAweGZmZmViMDVlLCAweGZmZmVhMTllLCAweGZmZmViMDVlLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsIDB4ZmZmZWIwNWUsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsCisgICAgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwgMHhmZmZlYjA0YiwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmViMDUzLCAweGZmZmViMDUzLCAweGZmZmViMDRmLCAweGZmZmViMDUzLCAweGZmZmVhMTkzLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZWIwNGEsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwKKyAgICAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTMwNTUsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsCisgICAgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUwMDY0LCAweGZmZmUzMDU1LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsCisgICAgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMDA2NCwgMHhmZmZlMzA1NSwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwgMHhmZmZlMzA1NiwKKyAgICAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LCAweGZmZmUzMDU2LAorICAgIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTMwNTYsIDB4ZmZmZTAwNjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwgMHhmZmZlMzA1OCwKKyAgICAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUzMDU4LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LAorICAgIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksIDB4ZmZmZTMwNTksCisgICAgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwgMHhmZmZlMzA1OSwKKyAgICAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUzMDU5LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwKKyAgICAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLCAweGZmZmUzMDFmLAorICAgIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsIDB4ZmZmZTMwMWYsCisgICAgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMzAxZiwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLAorICAgIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsIDB4ZmZmZTMwNjEsCisgICAgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwgMHhmZmZlMzA2MSwKKyAgICAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUzMDYxLCAweGZmZmUwMDY0LAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzAwYywgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsCisgICAgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLAorICAgIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMzAwYywgMHhmZmZlMDAyNCwKKyAgICAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmViMDRiLCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LCAweGZmZmU4MDI0LAorICAgIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZWIwNGIsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZTgwMjQsIDB4ZmZmZWIwOGIsIDB4ZmZmZWExOTMsIDB4ZmZmZWIwOGIsCisgICAgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjIwYiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwgMHhmZmZlYjA4YiwKKyAgICAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmU4MGE0LCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmViMDhiLCAweGZmZmU4MGE0LCAweGZmZmViMDhiLCAweGZmZmU4MGE0LAorICAgIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZTgwYTQsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZTgwYTQsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsIDB4ZmZmZWIwOGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwKKyAgICAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LAorICAgIDB4ZmZmZWQ5NjQsIDB4ZmZmZWQ5NjQsIDB4ZmZmZWQ5NjQsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDgwMCwgMHhmZmZlZDgwMSwKKyAgICAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwKKyAgICAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LCAweGZmZmVkYWE0LAorICAgIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsIDB4ZmZmZWRhYTQsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0OSwgMHhmZmZlZDgwYiwgMHhmZmZlZDk2NCwgMHhmZmZlZDk2NCwKKyAgICAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLCAweGZmZmVhMTkzLAorICAgIDB4ZmZmZTMwMDcsIDB4ZmZmZTMwMDEsIDB4ZmZmZTMwMDEsIDB4ZmZmZTMwMDcsIDB4ZmZmZTMwMDcsIDB4ZmZmZTMwMDUsIDB4ZmZmZTMwMDUsIDB4ZmZmZTMwMDAsIDB4ZmZmZTMwMDEsIDB4ZmZmZTMwMGQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsCisgICAgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlYTE5MywgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwgMHhmZmZlODAyNCwKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDAwLCAweGZmZmUzMDAxLCAweGZmZmUzMDAwLCAweGZmZmUzMDAxLCAweGZmZmUzMDAwLCAweGZmZmUzMDAxLCAweGZmZmUzMDAwLCAweGZmZmUzMDAxLCAweGZmZmUzMDAwLCAweGZmZmUzMDAxLCAweGZmZmUzMDAwLAorICAgIDB4ZmZmZTMwMDEsIDB4ZmZmZTMwMDAsIDB4ZmZmZTMwMDEsIDB4ZmZmZTMwMDAsIDB4ZmZmZTMwMDEsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMDAsIDB4ZmZmZTMwMDEsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4ZmZhNjMwMGMsCisgICAgMHhmZmZlMzFjMSwgMHhmZmZlMzAwYywgMHhmZmZlMzFjMSwgMHhmZmZlMDAyNCwgMHhmZmZlMzAwNCwgMHhmZmZlMzFjNCwgMHhmZmZlMzAwNSwgMHhmZmZlMzAwNSwgMHhmZmZlMzAwYywgMHhhZDdlMzAwMCwgMHhhZGZlMzAwMSwgMHhhZTdlMzAwMCwgMHhhZWZlMzAwMSwgMHhhZjdlMzAwMCwgMHhhZmZlMzAwMSwgMHhmZmZlMzI0YywKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMjBjLCAweGZmZmUzMjBjLCAweGIwN2UzMDBjLCAweGIwZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUwMDI0LCAweGZmZmUzMDBjLCAweGZmZmUzMjQ4LCAweGZmZmUzMjQ5LCAweGZmZmUzMDBjLCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NjQsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLAorICAgIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsIDB4ZmZmZWQ5NGIsCisgICAgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwgMHhmZmZlZDk0YiwKKyAgICAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTRiLCAweGZmZmVkOTY0LCAweGZmZmVkOTY0LCAweGZmZmU5YTk0LAorICAgIDB4ZmZmZTAwMjQsIDB4ZmZmZjMwMDUsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMyNGMsIDB4ZmZmZTMyNDgsIDB4ZmZmZTMyNDksIDB4ZmZmZTMwMGMsIDB4ZmZmZTMwMGMsIDB4YjEyODMwMDAsIDB4YjFhYTMwMDEsIDB4ZmZmZTMwMGMsIDB4ZmZmZTMyMGMsIDB4ZmZmZjMxYzEsIDB4ZmZmZWIyMGMsIDB4ZmZmZjMxYzEsIDB4ZmZmZTMxY2MsCisgICAgMHhmZmZlMzEwYywgMHhmZmZlMzEwYywgMHhmZmZlMzEwYywgMHhmZmZlMzEwYywgMHhmZmZlMzEwYywgMHhmZmZlMzEwYywgMHhmZmZlMzEwYywgMHhmZmZlMzEwYywgMHhmZmZlMzEwYywgMHhmZmZlMzEwYywgMHhmZmZmMzFjNCwgMHhmZmZmMzAwNCwgMHhiMjdlMzAwYywgMHhmZmZlMzAwYywgMHhiMmZlMzAwYywgMHhmZmZmMzAwNSwKKyAgICAweGZmZmUzMDBjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLAorICAgIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4ZmZmZTMwNGMsIDB4YjM3ZWIwMDAsIDB4ZmZmZTMwMGMsIDB4YjNmZWIwMDEsIDB4ZmZmZTMwMGMsIDB4ZmZmZWIwMGMsCisgICAgMHhmZmZlMzAwYywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywgMHhmZmZlMzA0YywKKyAgICAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGZmZmUzMDRjLCAweGI0MmMzMDAwLCAweGZmZmUzMDBjLCAweGI0YWUzMDAxLCAweGZmZmViMDBjLCAweGI1N2UzMDAwLAorICAgIDB4YjVmZTMwMDEsIDB4ZmZmZWIwMDEsIDB4YjY3ZWIwMDAsIDB4YjZmZWIwMDEsIDB4ZmZmZWIwMDEsIDB4ZmZmZTMwMDQsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsCisgICAgMHhmZmZlMzA0NCwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLAorICAgIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNDQsIDB4ZmZmZTMwNDQsCisgICAgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwKKyAgICAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUzMDRiLCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTAwMjQsIDB4ZmZmZTAwMjQsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsIDB4ZmZmZTMwNGIsCisgICAgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMzA0YiwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwgMHhmZmZlMDAyNCwKKyAgICAweGZmZmUzMjQ5LCAweGZmZmUzMjQ4LCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMDBjLCAweGZmZmUzMjQ4LCAweGZmZmUzMjQ4LCAweGZmZmUwMDI0LCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUzMDBiLCAweGZmZmUwMDI0LAorICAgIDB4ZmZmZTAyYTQsIDB4ZmZmZTAyYTQsIDB4ZmZmZTAyYTQsIDB4ZmZmZTAyYTQsIDB4ZmZmZTAyYTQsIDB4ZmZmZTAyYTQsIDB4ZmZmZTAyYTQsIDB4ZmZmZTAyYTQsIDB4ZmZmZTAyYTQsIDB4ZmZmZTMwMTMsIDB4ZmZmZTMwMTMsIDB4ZmZmZTMwMTMsIDB4ZmZmZTMwMTEsIDB4ZmZmZTMwMjIsIDB4ZmZmZTFhYTQsIDB4ZmZmZTFhYTQsCit9OworZXh0ZXJuIGNvbnN0IEZYX1dDSEFSIGdzX0ZYX1RleHRMYXlvdXRfVmVydGljYWxNaXJyb3JbNjRdID0geworICAgIDB4RkUzMywgMHhGRTMyLCAweEZFMzEsIDB4RkU0MSwgMHhGRTQyLCAweEZFNDMsIDB4RkU0NCwgMHhGRTNGLCAweEZFNDAsIDB4RkUzRCwgMHhGRTNFLCAweEZFNDEsIDB4RkU0MiwgMHhGRTQzLCAweEZFNDQsIDB4RkUzQiwKKyAgICAweEZFM0MsIDB4RkUzOSwgMHhGRTNBLCAweEZFMzQsIDB4RkUzNSwgMHhGRTM2LCAweEZFMzcsIDB4RkUzOCwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsCisgICAgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLAorICAgIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwKK307CitleHRlcm4gY29uc3QgRlhfV0NIQVIgZ3NfRlhfVGV4dExheW91dF9CaWRpTWlycm9yWzUxMl0gPSB7CisgICAgMHgwMDI5LCAweDAwMjgsIDB4MDAzRSwgMHgwMDNDLCAweDAwNUQsIDB4MDA1QiwgMHgwMDdELCAweDAwN0IsIDB4MDBCQiwgMHgwMEFCLCAweDBGM0IsIDB4MEYzQSwgMHgwRjNELCAweDBGM0MsIDB4MTY5QywgMHgxNjlCLAorICAgIDB4MjAxOSwgMHgyMDE4LCAweDIwMUQsIDB4MjAxQywgMHgyMDNBLCAweDIwMzksIDB4MjA0NiwgMHgyMDQ1LCAweDIwN0UsIDB4MjA3RCwgMHgyMDhFLCAweDIwOEQsIDB4MjIwQiwgMHgyMjBDLCAweDIyMEQsIDB4MjIwOCwKKyAgICAweDIyMDksIDB4MjIwQSwgMHgyOUY1LCAweDIyM0QsIDB4MjIzQywgMHgyMkNELCAweDIyNTMsIDB4MjI1MiwgMHgyMjU1LCAweDIyNTQsIDB4MjI2NSwgMHgyMjY0LCAweDIyNjcsIDB4MjI2NiwgMHgyMjY5LCAweDIyNjgsCisgICAgMHgyMjZCLCAweDIyNkEsIDB4MjI2RiwgMHgyMjZFLCAweDIyNzEsIDB4MjI3MCwgMHgyMjczLCAweDIyNzIsIDB4MjI3NSwgMHgyMjc0LCAweDIyNzcsIDB4MjI3NiwgMHgyMjc5LCAweDIyNzgsIDB4MjI3QiwgMHgyMjdBLAorICAgIDB4MjI3RCwgMHgyMjdDLCAweDIyN0YsIDB4MjI3RSwgMHgyMjgxLCAweDIyODAsIDB4MjI4MywgMHgyMjgyLCAweDIyODUsIDB4MjI4NCwgMHgyMjg3LCAweDIyODYsIDB4MjI4OSwgMHgyMjg4LCAweDIyOEIsIDB4MjI4QSwKKyAgICAweDIyOTAsIDB4MjI4RiwgMHgyMjkyLCAweDIyOTEsIDB4MjlCOCwgMHgyMkEzLCAweDIyQTIsIDB4MkFERSwgMHgyQUU0LCAweDJBRTMsIDB4MkFFNSwgMHgyMkIxLCAweDIyQjAsIDB4MjJCMywgMHgyMkIyLCAweDIyQjUsCisgICAgMHgyMkI0LCAweDIyQjcsIDB4MjJCNiwgMHgyMkNBLCAweDIyQzksIDB4MjJDQywgMHgyMkNCLCAweDIyNDMsIDB4MjJEMSwgMHgyMkQwLCAweDIyRDcsIDB4MjJENiwgMHgyMkQ5LCAweDIyRDgsIDB4MjJEQiwgMHgyMkRBLAorICAgIDB4MjJERCwgMHgyMkRDLCAweDIyREYsIDB4MjJERSwgMHgyMkUxLCAweDIyRTAsIDB4MjJFMywgMHgyMkUyLCAweDIyRTUsIDB4MjJFNCwgMHgyMkU3LCAweDIyRTYsIDB4MjJFOSwgMHgyMkU4LCAweDIyRUIsIDB4MjJFQSwKKyAgICAweDIyRUQsIDB4MjJFQywgMHgyMkYxLCAweDIyRjAsIDB4MjJGQSwgMHgyMkZCLCAweDIyRkMsIDB4MjJGRCwgMHgyMkZFLCAweDIyRjIsIDB4MjJGMywgMHgyMkY0LCAweDIyRjYsIDB4MjJGNywgMHgyMzA5LCAweDIzMDgsCisgICAgMHgyMzBCLCAweDIzMEEsIDB4MjMyQSwgMHgyMzI5LCAweDI3NjksIDB4Mjc2OCwgMHgyNzZCLCAweDI3NkEsIDB4Mjc2RCwgMHgyNzZDLCAweDI3NkYsIDB4Mjc2RSwgMHgyNzcxLCAweDI3NzAsIDB4Mjc3MywgMHgyNzcyLAorICAgIDB4Mjc3NSwgMHgyNzc0LCAweDI3QzQsIDB4MjdDMywgMHgyN0M2LCAweDI3QzUsIDB4MjdDOSwgMHgyN0M4LCAweDI3RDYsIDB4MjdENSwgMHgyN0RFLCAweDI3REQsIDB4MjdFMywgMHgyN0UyLCAweDI3RTUsIDB4MjdFNCwKKyAgICAweDI3RTcsIDB4MjdFNiwgMHgyN0U5LCAweDI3RTgsIDB4MjdFQiwgMHgyN0VBLCAweDI3RUQsIDB4MjdFQywgMHgyN0VGLCAweDI3RUUsIDB4Mjk4NCwgMHgyOTgzLCAweDI5ODYsIDB4Mjk4NSwgMHgyOTg4LCAweDI5ODcsCisgICAgMHgyOThBLCAweDI5ODksIDB4Mjk4QywgMHgyOThCLCAweDI5OTAsIDB4Mjk4RiwgMHgyOThFLCAweDI5OEQsIDB4Mjk5MiwgMHgyOTkxLCAweDI5OTQsIDB4Mjk5MywgMHgyOTk2LCAweDI5OTUsIDB4Mjk5OCwgMHgyOTk3LAorICAgIDB4MjI5OCwgMHgyOUMxLCAweDI5QzAsIDB4MjlDNSwgMHgyOUM0LCAweDI5RDAsIDB4MjlDRiwgMHgyOUQyLCAweDI5RDEsIDB4MjlENSwgMHgyOUQ0LCAweDI5RDksIDB4MjlEOCwgMHgyOURCLCAweDI5REEsIDB4MjIxNSwKKyAgICAweDI5RjksIDB4MjlGOCwgMHgyOUZELCAweDI5RkMsIDB4MkEyQywgMHgyQTJCLCAweDJBMkUsIDB4MkEyRCwgMHgyQTM1LCAweDJBMzQsIDB4MkEzRCwgMHgyQTNDLCAweDJBNjUsIDB4MkE2NCwgMHgyQTdBLCAweDJBNzksCisgICAgMHgyQTdFLCAweDJBN0QsIDB4MkE4MCwgMHgyQTdGLCAweDJBODIsIDB4MkE4MSwgMHgyQTg0LCAweDJBODMsIDB4MkE4QywgMHgyQThCLCAweDJBOTIsIDB4MkE5MSwgMHgyQTk0LCAweDJBOTMsIDB4MkE5NiwgMHgyQTk1LAorICAgIDB4MkE5OCwgMHgyQTk3LCAweDJBOUEsIDB4MkE5OSwgMHgyQTlDLCAweDJBOUIsIDB4MkFBMiwgMHgyQUExLCAweDJBQTcsIDB4MkFBNiwgMHgyQUE5LCAweDJBQTgsIDB4MkFBQiwgMHgyQUFBLCAweDJBQUQsIDB4MkFBQywKKyAgICAweDJBQjAsIDB4MkFBRiwgMHgyQUI0LCAweDJBQjMsIDB4MkFCQywgMHgyQUJCLCAweDJBQkUsIDB4MkFCRCwgMHgyQUMwLCAweDJBQkYsIDB4MkFDMiwgMHgyQUMxLCAweDJBQzQsIDB4MkFDMywgMHgyQUM2LCAweDJBQzUsCisgICAgMHgyQUNFLCAweDJBQ0QsIDB4MkFEMCwgMHgyQUNGLCAweDJBRDIsIDB4MkFEMSwgMHgyQUQ0LCAweDJBRDMsIDB4MkFENiwgMHgyQUQ1LCAweDIyQTYsIDB4MjJBOSwgMHgyMkE4LCAweDIyQUIsIDB4MkFFRCwgMHgyQUVDLAorICAgIDB4MkFGOCwgMHgyQUY3LCAweDJBRkEsIDB4MkFGOSwgMHgyRTAzLCAweDJFMDIsIDB4MkUwNSwgMHgyRTA0LCAweDJFMEEsIDB4MkUwOSwgMHgyRTBELCAweDJFMEMsIDB4MkUxRCwgMHgyRTFDLCAweDJFMjEsIDB4MkUyMCwKKyAgICAweDJFMjMsIDB4MkUyMiwgMHgyRTI1LCAweDJFMjQsIDB4MkUyNywgMHgyRTI2LCAweDJFMjksIDB4MkUyOCwgMHgzMDA5LCAweDMwMDgsIDB4MzAwQiwgMHgzMDBBLCAweDMwMEQsIDB4MzAwQywgMHgzMDBGLCAweDMwMEUsCisgICAgMHgzMDExLCAweDMwMTAsIDB4MzAxNSwgMHgzMDE0LCAweDMwMTcsIDB4MzAxNiwgMHgzMDE5LCAweDMwMTgsIDB4MzAxQiwgMHgzMDFBLCAweEZFNUEsIDB4RkU1OSwgMHhGRTVDLCAweEZFNUIsIDB4RkU1RSwgMHhGRTVELAorICAgIDB4RkU2NSwgMHhGRTY0LCAweEZGMDksIDB4RkYwOCwgMHhGRjFFLCAweEZGMUMsIDB4RkYzRCwgMHhGRjNCLCAweEZGNUQsIDB4RkY1QiwgMHhGRjYwLCAweEZGNUYsIDB4RkY2MywgMHhGRjYyLCAweEZGRkYsIDB4RkVGRiwKKyAgICAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsCisgICAgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLAorICAgIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwKKyAgICAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsCisgICAgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLAorICAgIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwKKyAgICAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsCisgICAgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLAorICAgIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwgMHhGRUZGLCAweEZFRkYsIDB4RkVGRiwKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGNydC9meF91bmljb2RlLmNwcCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X3VuaWNvZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYzYxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC9meF91bmljb2RlLmNwcApAQCAtMCwwICsxLDY1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGNydC9meF9leHQuaCIKK2V4dGVybiBjb25zdCBGWF9EV09SRCBnc19GWF9UZXh0TGF5b3V0X0NvZGVQcm9wZXJ0aWVzWzY1NTM2XTsKK2V4dGVybiBjb25zdCBGWF9XQ0hBUiBnc19GWF9UZXh0TGF5b3V0X1ZlcnRpY2FsTWlycm9yWzY0XTsKK2V4dGVybiBjb25zdCBGWF9XQ0hBUiBnc19GWF9UZXh0TGF5b3V0X0JpZGlNaXJyb3JbNTEyXTsKK0ZYX0RXT1JEIEZYX0dldFVuaWNvZGVQcm9wZXJ0aWVzKEZYX1dDSEFSIHdjaCkKK3sKKyAgICByZXR1cm4gZ3NfRlhfVGV4dExheW91dF9Db2RlUHJvcGVydGllc1soRlhfV09SRCl3Y2hdOworfQorRlhfQk9PTCBGWF9Jc0N0cmxDb2RlKEZYX1dDSEFSIGNoKQoreworICAgIEZYX0RXT1JEIGR3UmV0ID0gKGdzX0ZYX1RleHRMYXlvdXRfQ29kZVByb3BlcnRpZXNbKEZYX1dPUkQpY2hdICYgRlhfQ0hBUlRZUEVCSVRTTUFTSyk7CisgICAgcmV0dXJuIGR3UmV0ID09IEZYX0NIQVJUWVBFX1RhYiB8fCBkd1JldCA9PSBGWF9DSEFSVFlQRV9Db250cm9sOworfQorRlhfQk9PTCBGWF9Jc1JvdGF0aW9uQ29kZShGWF9XQ0hBUiBjaCkKK3sKKyAgICByZXR1cm4gKGdzX0ZYX1RleHRMYXlvdXRfQ29kZVByb3BlcnRpZXNbKEZYX1dPUkQpY2hdICYgMHg4MDAwKSAhPSAwOworfQorRlhfQk9PTCBGWF9Jc0NvbWJpbmF0aW9uQ2hhcihGWF9XQ0hBUiB3Y2gpCit7CisgICAgRlhfRFdPUkQgZHdQcm9wcyA9IChnc19GWF9UZXh0TGF5b3V0X0NvZGVQcm9wZXJ0aWVzWyhGWF9XT1JEKXdjaF0gJiBGWF9DSEFSVFlQRUJJVFNNQVNLKTsKKyAgICByZXR1cm4gZHdQcm9wcyA9PSBGWF9DSEFSVFlQRV9Db21iaW5hdGlvbjsKK30KK0ZYX0JPT0wJRlhfSXNCaWRpQ2hhcihGWF9XQ0hBUiB3Y2gpCit7CisgICAgRlhfRFdPUkQgZHdQcm9wcyA9IGdzX0ZYX1RleHRMYXlvdXRfQ29kZVByb3BlcnRpZXNbKEZYX1dPUkQpd2NoXTsKKyAgICBGWF9JTlQzMiBpQmlkaUNscyA9IChkd1Byb3BzICYgRlhfQklESUNMQVNTQklUU01BU0spID4+IEZYX0JJRElDTEFTU0JJVFM7CisgICAgcmV0dXJuIChGWF9CSURJQ0xBU1NfUiA9PSBpQmlkaUNscyB8fCBGWF9CSURJQ0xBU1NfQUwgPT0gaUJpZGlDbHMpOworfQorRlhfV0NIQVIgRlhfR2V0TWlycm9yQ2hhcihGWF9XQ0hBUiB3Y2gsIEZYX0JPT0wgYlJUTCwgRlhfQk9PTCBiVmVydGljYWwpCit7CisgICAgRlhfRFdPUkQgZHdQcm9wcyA9IGdzX0ZYX1RleHRMYXlvdXRfQ29kZVByb3BlcnRpZXNbKEZYX1dPUkQpd2NoXTsKKyAgICBGWF9EV09SRCBkd1RlbXAgPSAoZHdQcm9wcyAmIDB4RkY4MDAwMDApOworICAgIGlmIChiUlRMICYmIGR3VGVtcCA8IDB4RkY4MDAwMDApIHsKKyAgICAgICAgd2NoID0gZ3NfRlhfVGV4dExheW91dF9CaWRpTWlycm9yW2R3VGVtcCA+PiAyM107CisgICAgICAgIGR3UHJvcHMgPSBnc19GWF9UZXh0TGF5b3V0X0NvZGVQcm9wZXJ0aWVzWyhGWF9XT1JEKXdjaF07CisgICAgfQorICAgIGlmIChiVmVydGljYWwpIHsKKyAgICAgICAgZHdUZW1wID0gKGR3UHJvcHMgJiAweDAwN0UwMDAwKTsKKyAgICAgICAgaWYgKGR3VGVtcCA8IDB4MDA3RTAwMDApIHsKKyAgICAgICAgICAgIHdjaCA9IGdzX0ZYX1RleHRMYXlvdXRfVmVydGljYWxNaXJyb3JbZHdUZW1wID4+IDE3XTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gd2NoOworfQorRlhfV0NIQVIgRlhfR2V0TWlycm9yQ2hhcihGWF9XQ0hBUiB3Y2gsIEZYX0RXT1JEIGR3UHJvcHMsIEZYX0JPT0wgYlJUTCwgRlhfQk9PTCBiVmVydGljYWwpCit7CisgICAgRlhfRFdPUkQgZHdUZW1wID0gKGR3UHJvcHMgJiAweEZGODAwMDAwKTsKKyAgICBpZiAoYlJUTCAmJiBkd1RlbXAgPCAweEZGODAwMDAwKSB7CisgICAgICAgIHdjaCA9IGdzX0ZYX1RleHRMYXlvdXRfQmlkaU1pcnJvcltkd1RlbXAgPj4gMjNdOworICAgICAgICBkd1Byb3BzID0gZ3NfRlhfVGV4dExheW91dF9Db2RlUHJvcGVydGllc1soRlhfV09SRCl3Y2hdOworICAgIH0KKyAgICBpZiAoYlZlcnRpY2FsKSB7CisgICAgICAgIGR3VGVtcCA9IChkd1Byb3BzICYgMHgwMDdFMDAwMCk7CisgICAgICAgIGlmIChkd1RlbXAgPCAweDAwN0UwMDAwKSB7CisgICAgICAgICAgICB3Y2ggPSBnc19GWF9UZXh0TGF5b3V0X1ZlcnRpY2FsTWlycm9yW2R3VGVtcCA+PiAxN107CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHdjaDsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4X3htbF9jb21wb3Nlci5jcHAgYi9jb3JlL3NyYy9meGNydC9meF94bWxfY29tcG9zZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OGRkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC9meF94bWxfY29tcG9zZXIuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X3htbC5oIg0KKyNpbmNsdWRlICJ4bWxfaW50LmgiDQordm9pZCBGWF9YTUxfU3BsaXRRdWFsaWZpZWROYW1lKEZYX0JTVFIgYnNGdWxsTmFtZSwgQ0ZYX0J5dGVTdHJpbmdDICZic1NwYWNlLCBDRlhfQnl0ZVN0cmluZ0MgJmJzTmFtZSkNCit7DQorICAgIGlmIChic0Z1bGxOYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIGlTdGFydCA9IDA7DQorICAgIGZvciAoOyBpU3RhcnQgPCBic0Z1bGxOYW1lLkdldExlbmd0aCgpOyBpU3RhcnQgKyspIHsNCisgICAgICAgIGlmIChic0Z1bGxOYW1lLkdldEF0KGlTdGFydCkgPT0gJzonKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGlTdGFydCA+PSBic0Z1bGxOYW1lLkdldExlbmd0aCgpKSB7DQorICAgICAgICBic05hbWUgPSBic0Z1bGxOYW1lOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgYnNTcGFjZSA9IENGWF9CeXRlU3RyaW5nQyhic0Z1bGxOYW1lLkdldENTdHIoKSwgaVN0YXJ0KTsNCisgICAgICAgIGlTdGFydCArKzsNCisgICAgICAgIGJzTmFtZSA9IENGWF9CeXRlU3RyaW5nQyhic0Z1bGxOYW1lLkdldENTdHIoKSArIGlTdGFydCwgYnNGdWxsTmFtZS5HZXRMZW5ndGgoKSAtIGlTdGFydCk7DQorICAgIH0NCit9DQordm9pZCBDWE1MX0VsZW1lbnQ6OlNldFRhZyhGWF9CU1RSIHFTcGFjZSwgRlhfQlNUUiB0YWduYW1lKQ0KK3sNCisgICAgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IG1fQ2hpbGRyZW4ubV9wQWxsb2NhdG9yOw0KKyAgICBtX1FTcGFjZU5hbWUuU2V0KHFTcGFjZSwgcEFsbG9jYXRvcik7DQorICAgIG1fVGFnTmFtZS5TZXQodGFnbmFtZSwgcEFsbG9jYXRvcik7DQorfQ0KK3ZvaWQgQ1hNTF9FbGVtZW50OjpTZXRUYWcoRlhfQlNUUiBxVGFnTmFtZSkNCit7DQorICAgIEFTU0VSVCghcVRhZ05hbWUuSXNFbXB0eSgpKTsNCisgICAgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IG1fQ2hpbGRyZW4ubV9wQWxsb2NhdG9yOw0KKyAgICBDRlhfQnl0ZVN0cmluZ0MgYnNTcGFjZSwgYnNOYW1lOw0KKyAgICBGWF9YTUxfU3BsaXRRdWFsaWZpZWROYW1lKHFUYWdOYW1lLCBic1NwYWNlLCBic05hbWUpOw0KKyAgICBtX1FTcGFjZU5hbWUuU2V0KGJzU3BhY2UsIHBBbGxvY2F0b3IpOw0KKyAgICBtX1RhZ05hbWUuU2V0KGJzTmFtZSwgcEFsbG9jYXRvcik7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4X3htbF9wYXJzZXIuY3BwIGIvY29yZS9zcmMvZnhjcnQvZnhfeG1sX3BhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlOTU0NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4X3htbF9wYXJzZXIuY3BwCkBAIC0wLDAgKzEsMTAxNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfeG1sLmgiDQorI2luY2x1ZGUgInhtbF9pbnQuaCINCitDWE1MX1BhcnNlcjo6fkNYTUxfUGFyc2VyKCkNCit7DQorICAgIGlmIChtX2JPd25lZFN0cmVhbSkgew0KKyAgICAgICAgbV9wRGF0YUFjYy0+UmVsZWFzZSgpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1hNTF9QYXJzZXI6OkluaXQoRlhfTFBCWVRFIHBCdWZmZXIsIHNpemVfdCBzaXplKQ0KK3sNCisgICAgaWYgKG1fcEFsbG9jYXRvcikgew0KKyAgICAgICAgbV9wRGF0YUFjYyA9IEZYX05ld0F0QWxsb2NhdG9yKG1fcEFsbG9jYXRvcilDWE1MX0RhdGFCdWZBY2MocEJ1ZmZlciwgc2l6ZSwgbV9wQWxsb2NhdG9yKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcERhdGFBY2MgPSBGWF9ORVcgQ1hNTF9EYXRhQnVmQWNjKHBCdWZmZXIsIHNpemUsIE5VTEwpOw0KKyAgICB9DQorICAgIGlmICghbV9wRGF0YUFjYykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBJbml0KFRSVUUpOw0KK30NCitGWF9CT09MIENYTUxfUGFyc2VyOjpJbml0KElGWF9GaWxlUmVhZCAqcEZpbGVSZWFkKQ0KK3sNCisgICAgaWYgKG1fcEFsbG9jYXRvcikgew0KKyAgICAgICAgbV9wRGF0YUFjYyA9IEZYX05ld0F0QWxsb2NhdG9yKG1fcEFsbG9jYXRvcilDWE1MX0RhdGFTdG1BY2MocEZpbGVSZWFkLCBtX3BBbGxvY2F0b3IpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wRGF0YUFjYyA9IEZYX05FVyBDWE1MX0RhdGFTdG1BY2MocEZpbGVSZWFkLCBOVUxMKTsNCisgICAgfQ0KKyAgICBpZiAoIW1fcERhdGFBY2MpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gSW5pdChUUlVFKTsNCit9DQorRlhfQk9PTCBDWE1MX1BhcnNlcjo6SW5pdChJRlhfQnVmZmVyUmVhZCAqcEJ1ZmZlcikNCit7DQorICAgIGlmICghcEJ1ZmZlcikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fcERhdGFBY2MgPSBwQnVmZmVyOw0KKyAgICByZXR1cm4gSW5pdChGQUxTRSk7DQorfQ0KK0ZYX0JPT0wgQ1hNTF9QYXJzZXI6OkluaXQoRlhfQk9PTCBiT3duZGVkU3RyZWFtKQ0KK3sNCisgICAgbV9iT3duZWRTdHJlYW0gPSBiT3duZGVkU3RyZWFtOw0KKyAgICBtX25PZmZzZXQgPSAwOw0KKyAgICByZXR1cm4gUmVhZE5leHRCbG9jaygpOw0KK30NCitGWF9CT09MIENYTUxfUGFyc2VyOjpSZWFkTmV4dEJsb2NrKCkNCit7DQorICAgIGlmICghbV9wRGF0YUFjYy0+UmVhZE5leHRCbG9jaygpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9wQnVmZmVyID0gbV9wRGF0YUFjYy0+R2V0QmxvY2tCdWZmZXIoKTsNCisgICAgbV9kd0J1ZmZlclNpemUgPSBtX3BEYXRhQWNjLT5HZXRCbG9ja1NpemUoKTsNCisgICAgbV9uQnVmZmVyT2Zmc2V0ID0gbV9wRGF0YUFjYy0+R2V0QmxvY2tPZmZzZXQoKTsNCisgICAgbV9kd0luZGV4ID0gMDsNCisgICAgcmV0dXJuIG1fZHdCdWZmZXJTaXplID4gMDsNCit9DQorRlhfQk9PTCBDWE1MX1BhcnNlcjo6SXNFT0YoKQ0KK3sNCisgICAgaWYgKCFtX3BEYXRhQWNjLT5Jc0VPRigpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIG1fZHdJbmRleCA+PSBtX2R3QnVmZmVyU2l6ZTsNCit9DQorI2RlZmluZSBGWENSVE1fWE1MX0NIQVJUWVBFX05vcm1hbAkJCTB4MDANCisjZGVmaW5lIEZYQ1JUTV9YTUxfQ0hBUlRZUEVfU3BhY2VDaGFyCQkweDAxDQorI2RlZmluZSBGWENSVE1fWE1MX0NIQVJUWVBFX0xldHRlcgkJCTB4MDINCisjZGVmaW5lIEZYQ1JUTV9YTUxfQ0hBUlRZUEVfRGlnaXRhbAkJCTB4MDQNCisjZGVmaW5lIEZYQ1JUTV9YTUxfQ0hBUlRZUEVfTmFtZUludHJvCQkweDA4DQorI2RlZmluZSBGWENSVE1fWE1MX0NIQVJUWVBFX05hbWVDaGFyCQkweDEwDQorI2RlZmluZSBGWENSVE1fWE1MX0NIQVJUWVBFX0hleERpZ2l0YWwJCTB4MjANCisjZGVmaW5lIEZYQ1JUTV9YTUxfQ0hBUlRZUEVfSGV4TG93ZXJMZXR0ZXIJMHg0MA0KKyNkZWZpbmUgRlhDUlRNX1hNTF9DSEFSVFlQRV9IZXhVcHBlckxldHRlcgkweDYwDQorI2RlZmluZSBGWENSVE1fWE1MX0NIQVJUWVBFX0hleENoYXIJCQkweDYwDQorRlhfQllURSBnX0ZYQ1JUX1hNTF9CeXRlVHlwZXNbMjU2XSA9IHsNCisgICAgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwNCisgICAgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwNCisgICAgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgxMCwgMHgwMCwNCisgICAgMHgzNCwgMHgzNCwgMHgzNCwgMHgzNCwgMHgzNCwgMHgzNCwgMHgzNCwgMHgzNCwgMHgzNCwgMHgzNCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCisgICAgMHgwMCwgMHg3QSwgMHg3QSwgMHg3QSwgMHg3QSwgMHg3QSwgMHg3QSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxOCwNCisgICAgMHgwMCwgMHg1QSwgMHg1QSwgMHg1QSwgMHg1QSwgMHg1QSwgMHg1QSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwNCisgICAgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgxQSwgMHgwMSwgMHgwMSwNCit9Ow0KK0ZYX0JPT0wgZ19GWENSVF9YTUxfSXNXaGl0ZVNwYWNlKEZYX0JZVEUgY2gpDQorew0KKyAgICByZXR1cm4gKGdfRlhDUlRfWE1MX0J5dGVUeXBlc1tjaF0gJiBGWENSVE1fWE1MX0NIQVJUWVBFX1NwYWNlQ2hhcikgIT0gMDsNCit9DQorRlhfQk9PTCBnX0ZYQ1JUX1hNTF9Jc0xldHRlcihGWF9CWVRFIGNoKQ0KK3sNCisgICAgcmV0dXJuIChnX0ZYQ1JUX1hNTF9CeXRlVHlwZXNbY2hdICYgRlhDUlRNX1hNTF9DSEFSVFlQRV9MZXR0ZXIpICE9IDA7DQorfQ0KK0ZYX0JPT0wgZ19GWENSVF9YTUxfSXNEaWdpdGFsKEZYX0JZVEUgY2gpDQorew0KKyAgICByZXR1cm4gKGdfRlhDUlRfWE1MX0J5dGVUeXBlc1tjaF0gJiBGWENSVE1fWE1MX0NIQVJUWVBFX0RpZ2l0YWwpICE9IDA7DQorfQ0KK0ZYX0JPT0wgZ19GWENSVF9YTUxfSXNOYW1lSW50cm8oRlhfQllURSBjaCkNCit7DQorICAgIHJldHVybiAoZ19GWENSVF9YTUxfQnl0ZVR5cGVzW2NoXSAmIEZYQ1JUTV9YTUxfQ0hBUlRZUEVfTmFtZUludHJvKSAhPSAwOw0KK30NCitGWF9CT09MIGdfRlhDUlRfWE1MX0lzTmFtZUNoYXIoRlhfQllURSBjaCkNCit7DQorICAgIHJldHVybiAoZ19GWENSVF9YTUxfQnl0ZVR5cGVzW2NoXSAmIEZYQ1JUTV9YTUxfQ0hBUlRZUEVfTmFtZUNoYXIpICE9IDA7DQorfQ0KK0ZYX0JPT0wgZ19GWENSVF9YTUxfSXNIZXhDaGFyKEZYX0JZVEUgY2gpDQorew0KKyAgICByZXR1cm4gKGdfRlhDUlRfWE1MX0J5dGVUeXBlc1tjaF0gJiBGWENSVE1fWE1MX0NIQVJUWVBFX0hleENoYXIpICE9IDA7DQorfQ0KK3ZvaWQgQ1hNTF9QYXJzZXI6OlNraXBXaGl0ZVNwYWNlcygpDQorew0KKyAgICBtX25PZmZzZXQgPSBtX25CdWZmZXJPZmZzZXQgKyAoRlhfRklMRVNJWkUpbV9kd0luZGV4Ow0KKyAgICBpZiAoSXNFT0YoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGRvIHsNCisgICAgICAgIHdoaWxlIChtX2R3SW5kZXggPCBtX2R3QnVmZmVyU2l6ZSAmJiBnX0ZYQ1JUX1hNTF9Jc1doaXRlU3BhY2UobV9wQnVmZmVyW21fZHdJbmRleF0pKSB7DQorICAgICAgICAgICAgbV9kd0luZGV4ICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9uT2Zmc2V0ID0gbV9uQnVmZmVyT2Zmc2V0ICsgKEZYX0ZJTEVTSVpFKW1fZHdJbmRleDsNCisgICAgICAgIGlmIChtX2R3SW5kZXggPCBtX2R3QnVmZmVyU2l6ZSB8fCBJc0VPRigpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0gd2hpbGUgKFJlYWROZXh0QmxvY2soKSk7DQorfQ0KK3ZvaWQgQ1hNTF9QYXJzZXI6OkdldE5hbWUoQ0ZYX0J5dGVTdHJpbmdMICZzcGFjZSwgQ0ZYX0J5dGVTdHJpbmdMICZuYW1lKQ0KK3sNCisgICAgbV9uT2Zmc2V0ID0gbV9uQnVmZmVyT2Zmc2V0ICsgKEZYX0ZJTEVTSVpFKW1fZHdJbmRleDsNCisgICAgaWYgKElzRU9GKCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVRleHRCdWYgYnVmKG1fcEFsbG9jYXRvcik7DQorICAgIEZYX0JZVEUgY2g7DQorICAgIGRvIHsNCisgICAgICAgIHdoaWxlIChtX2R3SW5kZXggPCBtX2R3QnVmZmVyU2l6ZSkgew0KKyAgICAgICAgICAgIGNoID0gbV9wQnVmZmVyW21fZHdJbmRleF07DQorICAgICAgICAgICAgaWYgKGNoID09ICc6Jykgew0KKyAgICAgICAgICAgICAgICBidWYuR2V0Qnl0ZVN0cmluZ0woc3BhY2UpOw0KKyAgICAgICAgICAgICAgICBidWYuQ2xlYXIoKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKGdfRlhDUlRfWE1MX0lzTmFtZUNoYXIoY2gpKSB7DQorICAgICAgICAgICAgICAgIGJ1Zi5BcHBlbmRDaGFyKGNoKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9kd0luZGV4ICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9uT2Zmc2V0ID0gbV9uQnVmZmVyT2Zmc2V0ICsgKEZYX0ZJTEVTSVpFKW1fZHdJbmRleDsNCisgICAgICAgIGlmIChtX2R3SW5kZXggPCBtX2R3QnVmZmVyU2l6ZSB8fCBJc0VPRigpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0gd2hpbGUgKFJlYWROZXh0QmxvY2soKSk7DQorICAgIGJ1Zi5HZXRCeXRlU3RyaW5nTChuYW1lKTsNCit9DQordm9pZCBDWE1MX1BhcnNlcjo6U2tpcExpdGVyYWxzKEZYX0JTVFIgc3RyKQ0KK3sNCisgICAgbV9uT2Zmc2V0ID0gbV9uQnVmZmVyT2Zmc2V0ICsgKEZYX0ZJTEVTSVpFKW1fZHdJbmRleDsNCisgICAgaWYgKElzRU9GKCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBpID0gMCwgaUxlbiA9IHN0ci5HZXRMZW5ndGgoKTsNCisgICAgZG8gew0KKyAgICAgICAgd2hpbGUgKG1fZHdJbmRleCA8IG1fZHdCdWZmZXJTaXplKSB7DQorICAgICAgICAgICAgaWYgKHN0ci5HZXRBdChpKSAhPSBtX3BCdWZmZXJbbV9kd0luZGV4ICsrXSkgew0KKyAgICAgICAgICAgICAgICBpID0gMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpICsrOw0KKyAgICAgICAgICAgICAgICBpZiAoaSA9PSBpTGVuKSB7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fbk9mZnNldCA9IG1fbkJ1ZmZlck9mZnNldCArIChGWF9GSUxFU0laRSltX2R3SW5kZXg7DQorICAgICAgICBpZiAoaSA9PSBpTGVuKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fZHdJbmRleCA8IG1fZHdCdWZmZXJTaXplIHx8IElzRU9GKCkpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfSB3aGlsZSAoUmVhZE5leHRCbG9jaygpKTsNCisgICAgd2hpbGUgKCFtX3BEYXRhQWNjLT5Jc0VPRigpKSB7DQorICAgICAgICBSZWFkTmV4dEJsb2NrKCk7DQorICAgICAgICBtX25PZmZzZXQgPSBtX25CdWZmZXJPZmZzZXQgKyAoRlhfRklMRVNJWkUpbV9kd0J1ZmZlclNpemU7DQorICAgIH0NCisgICAgbV9kd0luZGV4ID0gbV9kd0J1ZmZlclNpemU7DQorfQ0KK0ZYX0RXT1JEIENYTUxfUGFyc2VyOjpHZXRDaGFyUmVmKCkNCit7DQorICAgIG1fbk9mZnNldCA9IG1fbkJ1ZmZlck9mZnNldCArIChGWF9GSUxFU0laRSltX2R3SW5kZXg7DQorICAgIGlmIChJc0VPRigpKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBGWF9CWVRFIGNoOw0KKyAgICBGWF9JTlQzMiBpU3RhdGUgPSAwOw0KKyAgICBDRlhfQnl0ZVRleHRCdWYgYnVmKG1fcEFsbG9jYXRvcik7DQorICAgIEZYX0RXT1JEIGNvZGUgPSAwOw0KKyAgICBkbyB7DQorICAgICAgICB3aGlsZSAobV9kd0luZGV4IDwgbV9kd0J1ZmZlclNpemUpIHsNCisgICAgICAgICAgICBjaCA9IG1fcEJ1ZmZlclttX2R3SW5kZXhdOw0KKyAgICAgICAgICAgIHN3aXRjaCAoaVN0YXRlKSB7DQorICAgICAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnIycpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX2R3SW5kZXggKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgaVN0YXRlID0gMjsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlTdGF0ZSA9IDE7DQorICAgICAgICAgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICAgICAgICAgIG1fZHdJbmRleCArKzsNCisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnOycpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZ0MgcmVmID0gYnVmLkdldEJ5dGVTdHJpbmcoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVmID09IEZYX0JTVFJDKCJndCIpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAnPic7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWYgPT0gRlhfQlNUUkMoImx0IikpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9ICc8JzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlZiA9PSBGWF9CU1RSQygiYW1wIikpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9ICcmJzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlZiA9PSBGWF9CU1RSQygiYXBvcyIpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAnXCcnOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVmID09IEZYX0JTVFJDKCJxdW90IikpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9ICciJzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaVN0YXRlID0gMTA7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBidWYuQXBwZW5kQnl0ZShjaCk7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICd4Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZHdJbmRleCArKzsNCisgICAgICAgICAgICAgICAgICAgICAgICBpU3RhdGUgPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaVN0YXRlID0gMzsNCisgICAgICAgICAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgICAgICAgICAgbV9kd0luZGV4ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICc7Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlTdGF0ZSA9IDEwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGdfRlhDUlRfWE1MX0lzRGlnaXRhbChjaCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZSAqIDEwICsgY2ggLSAnMCc7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSA0Og0KKyAgICAgICAgICAgICAgICAgICAgbV9kd0luZGV4ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICc7Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlTdGF0ZSA9IDEwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSBuSGV4ID0gZ19GWENSVF9YTUxfQnl0ZVR5cGVzW2NoXSAmIEZYQ1JUTV9YTUxfQ0hBUlRZUEVfSGV4Q2hhcjsNCisgICAgICAgICAgICAgICAgICAgIGlmIChuSGV4KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5IZXggPT0gRlhDUlRNX1hNTF9DSEFSVFlQRV9IZXhEaWdpdGFsKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAoY29kZSA8PCA0KSArIGNoIC0gJzAnOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobkhleCA9PSBGWENSVE1fWE1MX0NIQVJUWVBFX0hleExvd2VyTGV0dGVyKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAoY29kZSA8PCA0KSArIGNoIC0gODc7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IChjb2RlIDw8IDQpICsgY2ggLSA1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGlTdGF0ZSA9PSAxMCkgew0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBtX25PZmZzZXQgPSBtX25CdWZmZXJPZmZzZXQgKyAoRlhfRklMRVNJWkUpbV9kd0luZGV4Ow0KKyAgICAgICAgaWYgKGlTdGF0ZSA9PSAxMCB8fCBtX2R3SW5kZXggPCBtX2R3QnVmZmVyU2l6ZSB8fCBJc0VPRigpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0gd2hpbGUgKFJlYWROZXh0QmxvY2soKSk7DQorICAgIHJldHVybiBjb2RlOw0KK30NCit2b2lkIENYTUxfUGFyc2VyOjpHZXRBdHRyVmFsdWUoQ0ZYX1dpZGVTdHJpbmdMICZ2YWx1ZSkNCit7DQorICAgIG1fbk9mZnNldCA9IG1fbkJ1ZmZlck9mZnNldCArIChGWF9GSUxFU0laRSltX2R3SW5kZXg7DQorICAgIGlmIChJc0VPRigpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0ZYX1VURjhEZWNvZGVyIGRlY29kZXIobV9wQWxsb2NhdG9yKTsNCisgICAgRlhfQllURSBtYXJrID0gMCwgY2g7DQorICAgIGRvIHsNCisgICAgICAgIHdoaWxlIChtX2R3SW5kZXggPCBtX2R3QnVmZmVyU2l6ZSkgew0KKyAgICAgICAgICAgIGNoID0gbV9wQnVmZmVyW21fZHdJbmRleF07DQorICAgICAgICAgICAgaWYgKG1hcmsgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBpZiAoY2ggIT0gJ1wnJyAmJiBjaCAhPSAnIicpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtYXJrID0gY2g7DQorICAgICAgICAgICAgICAgIG1fZHdJbmRleCArKzsNCisgICAgICAgICAgICAgICAgY2ggPSAwOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9kd0luZGV4ICsrOw0KKyAgICAgICAgICAgIGlmIChjaCA9PSBtYXJrKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoY2ggPT0gJyYnKSB7DQorICAgICAgICAgICAgICAgIGRlY29kZXIuQXBwZW5kQ2hhcihHZXRDaGFyUmVmKCkpOw0KKyAgICAgICAgICAgICAgICBpZiAoSXNFT0YoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgZGVjb2Rlci5HZXRSZXN1bHQodmFsdWUpOw0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgZGVjb2Rlci5JbnB1dChjaCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9uT2Zmc2V0ID0gbV9uQnVmZmVyT2Zmc2V0ICsgKEZYX0ZJTEVTSVpFKW1fZHdJbmRleDsNCisgICAgICAgIGlmIChjaCA9PSBtYXJrIHx8IG1fZHdJbmRleCA8IG1fZHdCdWZmZXJTaXplIHx8IElzRU9GKCkpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfSB3aGlsZSAoUmVhZE5leHRCbG9jaygpKTsNCisgICAgZGVjb2Rlci5HZXRSZXN1bHQodmFsdWUpOw0KK30NCit2b2lkIENYTUxfUGFyc2VyOjpHZXRUYWdOYW1lKENGWF9CeXRlU3RyaW5nTCAmc3BhY2UsIENGWF9CeXRlU3RyaW5nTCAmbmFtZSwgRlhfQk9PTCAmYkVuZFRhZywgRlhfQk9PTCBiU3RhcnRUYWcpDQorew0KKyAgICBtX25PZmZzZXQgPSBtX25CdWZmZXJPZmZzZXQgKyAoRlhfRklMRVNJWkUpbV9kd0luZGV4Ow0KKyAgICBpZiAoSXNFT0YoKSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGJFbmRUYWcgPSBGQUxTRTsNCisgICAgRlhfQllURSBjaDsNCisgICAgRlhfSU5UMzIgaVN0YXRlID0gYlN0YXJ0VGFnID8gMSA6IDA7DQorICAgIGRvIHsNCisgICAgICAgIHdoaWxlIChtX2R3SW5kZXggPCBtX2R3QnVmZmVyU2l6ZSkgew0KKyAgICAgICAgICAgIGNoID0gbV9wQnVmZmVyW21fZHdJbmRleF07DQorICAgICAgICAgICAgc3dpdGNoIChpU3RhdGUpIHsNCisgICAgICAgICAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgICAgICAgICAgICAgbV9kd0luZGV4ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoICE9ICc8Jykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaVN0YXRlID0gMTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJz8nKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9kd0luZGV4ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNraXBMaXRlcmFscyhGWF9CU1RSQygiPz4iKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaVN0YXRlID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJyEnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9kd0luZGV4ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNraXBMaXRlcmFscyhGWF9CU1RSQygiLS0+IikpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlTdGF0ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJy8nKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9kd0luZGV4ICsrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIEdldE5hbWUoc3BhY2UsIG5hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJFbmRUYWcgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBHZXROYW1lKHNwYWNlLCBuYW1lKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBiRW5kVGFnID0gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9uT2Zmc2V0ID0gbV9uQnVmZmVyT2Zmc2V0ICsgKEZYX0ZJTEVTSVpFKW1fZHdJbmRleDsNCisgICAgICAgIGlmIChtX2R3SW5kZXggPCBtX2R3QnVmZmVyU2l6ZSB8fCBJc0VPRigpKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0gd2hpbGUgKFJlYWROZXh0QmxvY2soKSk7DQorfQ0KK0NYTUxfRWxlbWVudCogQ1hNTF9QYXJzZXI6OlBhcnNlRWxlbWVudChDWE1MX0VsZW1lbnQqIHBQYXJlbnQsIEZYX0JPT0wgYlN0YXJ0VGFnKQ0KK3sNCisgICAgbV9uT2Zmc2V0ID0gbV9uQnVmZmVyT2Zmc2V0ICsgKEZYX0ZJTEVTSVpFKW1fZHdJbmRleDsNCisgICAgaWYgKElzRU9GKCkpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nTCB0YWdfbmFtZSwgdGFnX3NwYWNlOw0KKyAgICBGWF9CT09MIGJFbmRUYWc7DQorICAgIEdldFRhZ05hbWUodGFnX3NwYWNlLCB0YWdfbmFtZSwgYkVuZFRhZywgYlN0YXJ0VGFnKTsNCisgICAgaWYgKHRhZ19uYW1lLklzRW1wdHkoKSB8fCBiRW5kVGFnKSB7DQorICAgICAgICB0YWdfc3BhY2UuRW1wdHkobV9wQWxsb2NhdG9yKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENYTUxfRWxlbWVudCogcEVsZW1lbnQ7DQorICAgIGlmIChtX3BBbGxvY2F0b3IpIHsNCisgICAgICAgIHBFbGVtZW50ID0gRlhfTmV3QXRBbGxvY2F0b3IobV9wQWxsb2NhdG9yKUNYTUxfRWxlbWVudChtX3BBbGxvY2F0b3IpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcEVsZW1lbnQgPSBGWF9ORVcgQ1hNTF9FbGVtZW50Ow0KKyAgICB9DQorICAgIGlmIChwRWxlbWVudCkgew0KKyAgICAgICAgcEVsZW1lbnQtPm1fcFBhcmVudCA9IHBQYXJlbnQ7DQorICAgICAgICBwRWxlbWVudC0+U2V0VGFnKHRhZ19zcGFjZSwgdGFnX25hbWUpOw0KKyAgICB9DQorICAgIHRhZ19zcGFjZS5FbXB0eShtX3BBbGxvY2F0b3IpOw0KKyAgICB0YWdfbmFtZS5FbXB0eShtX3BBbGxvY2F0b3IpOw0KKyAgICBpZiAoIXBFbGVtZW50KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBkbyB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZ0wgYXR0cl9zcGFjZSwgYXR0cl9uYW1lOw0KKyAgICAgICAgd2hpbGUgKG1fZHdJbmRleCA8IG1fZHdCdWZmZXJTaXplKSB7DQorICAgICAgICAgICAgU2tpcFdoaXRlU3BhY2VzKCk7DQorICAgICAgICAgICAgaWYgKElzRU9GKCkpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICghZ19GWENSVF9YTUxfSXNOYW1lSW50cm8obV9wQnVmZmVyW21fZHdJbmRleF0pKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBhdHRyX3NwYWNlLkVtcHR5KG1fcEFsbG9jYXRvcik7DQorICAgICAgICAgICAgYXR0cl9uYW1lLkVtcHR5KG1fcEFsbG9jYXRvcik7DQorICAgICAgICAgICAgR2V0TmFtZShhdHRyX3NwYWNlLCBhdHRyX25hbWUpOw0KKyAgICAgICAgICAgIFNraXBXaGl0ZVNwYWNlcygpOw0KKyAgICAgICAgICAgIGlmIChJc0VPRigpKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAobV9wQnVmZmVyW21fZHdJbmRleF0gIT0gJz0nKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX2R3SW5kZXggKys7DQorICAgICAgICAgICAgU2tpcFdoaXRlU3BhY2VzKCk7DQorICAgICAgICAgICAgaWYgKElzRU9GKCkpIHsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nTCBhdHRyX3ZhbHVlOw0KKyAgICAgICAgICAgIEdldEF0dHJWYWx1ZShhdHRyX3ZhbHVlKTsNCisgICAgICAgICAgICBwRWxlbWVudC0+bV9BdHRyTWFwLlNldEF0KGF0dHJfc3BhY2UsIGF0dHJfbmFtZSwgYXR0cl92YWx1ZSwgbV9wQWxsb2NhdG9yKTsNCisgICAgICAgICAgICBhdHRyX3ZhbHVlLkVtcHR5KG1fcEFsbG9jYXRvcik7DQorICAgICAgICB9DQorICAgICAgICBhdHRyX3NwYWNlLkVtcHR5KG1fcEFsbG9jYXRvcik7DQorICAgICAgICBhdHRyX25hbWUuRW1wdHkobV9wQWxsb2NhdG9yKTsNCisgICAgICAgIG1fbk9mZnNldCA9IG1fbkJ1ZmZlck9mZnNldCArIChGWF9GSUxFU0laRSltX2R3SW5kZXg7DQorICAgICAgICBpZiAobV9kd0luZGV4IDwgbV9kd0J1ZmZlclNpemUgfHwgSXNFT0YoKSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9IHdoaWxlIChSZWFkTmV4dEJsb2NrKCkpOw0KKyAgICBTa2lwV2hpdGVTcGFjZXMoKTsNCisgICAgaWYgKElzRU9GKCkpIHsNCisgICAgICAgIHJldHVybiBwRWxlbWVudDsNCisgICAgfQ0KKyAgICBGWF9CWVRFIGNoID0gbV9wQnVmZmVyW21fZHdJbmRleCArK107DQorICAgIGlmIChjaCA9PSAnLycpIHsNCisgICAgICAgIG1fZHdJbmRleCArKzsNCisgICAgICAgIG1fbk9mZnNldCA9IG1fbkJ1ZmZlck9mZnNldCArIChGWF9GSUxFU0laRSltX2R3SW5kZXg7DQorICAgICAgICByZXR1cm4gcEVsZW1lbnQ7DQorICAgIH0NCisgICAgaWYgKGNoICE9ICc+Jykgew0KKyAgICAgICAgbV9uT2Zmc2V0ID0gbV9uQnVmZmVyT2Zmc2V0ICsgKEZYX0ZJTEVTSVpFKW1fZHdJbmRleDsNCisgICAgICAgIGlmIChtX3BBbGxvY2F0b3IpIHsNCisgICAgICAgICAgICBGWF9EZWxldGVBdEFsbG9jYXRvcihwRWxlbWVudCwgbV9wQWxsb2NhdG9yLCBDWE1MX0VsZW1lbnQpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBkZWxldGUgcEVsZW1lbnQ7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBTa2lwV2hpdGVTcGFjZXMoKTsNCisgICAgaWYgKElzRU9GKCkpIHsNCisgICAgICAgIHJldHVybiBwRWxlbWVudDsNCisgICAgfQ0KKyAgICBDRlhfVVRGOERlY29kZXIgZGVjb2RlcihtX3BBbGxvY2F0b3IpOw0KKyAgICBDRlhfV2lkZVRleHRCdWYgY29udGVudChtX3BBbGxvY2F0b3IpOw0KKyAgICBGWF9CT09MIGJDREFUQSA9IEZBTFNFOw0KKyAgICBGWF9JTlQzMiBpU3RhdGUgPSAwOw0KKyAgICBkbyB7DQorICAgICAgICB3aGlsZSAobV9kd0luZGV4IDwgbV9kd0J1ZmZlclNpemUpIHsNCisgICAgICAgICAgICBjaCA9IG1fcEJ1ZmZlclttX2R3SW5kZXggKytdOw0KKyAgICAgICAgICAgIHN3aXRjaCAoaVN0YXRlKSB7DQorICAgICAgICAgICAgICAgIGNhc2UgMDoNCisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnPCcpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpU3RhdGUgPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnJicpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLkNsZWFyU3RhdHVzKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2Rlci5BcHBlbmRDaGFyKEdldENoYXJSZWYoKSk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXIuSW5wdXQoY2gpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnIScpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpU3RhdGUgPSAyOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnPycpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBTa2lwTGl0ZXJhbHMoRlhfQlNUUkMoIj8+IikpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNraXBXaGl0ZVNwYWNlcygpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlTdGF0ZSA9IDA7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICcvJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nTCBzcGFjZSwgbmFtZTsNCisgICAgICAgICAgICAgICAgICAgICAgICBHZXROYW1lKHNwYWNlLCBuYW1lKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZS5FbXB0eShtX3BBbGxvY2F0b3IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuRW1wdHkobV9wQWxsb2NhdG9yKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBTa2lwV2hpdGVTcGFjZXMoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX2R3SW5kZXggKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgaVN0YXRlID0gMTA7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPDwgZGVjb2Rlci5HZXRSZXN1bHQoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZ0wgZGF0YVN0cjsNCisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LkdldFdpZGVTdHJpbmdMKGRhdGFTdHIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYkNEQVRBICYmICFtX2JTYXZlU3BhY2VDaGFycykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU3RyLlRyaW1SaWdodCgoRlhfTFBDV1NUUilMIiBcdFxyXG4iKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zZXJ0Q29udGVudFNlZ21lbnQoYkNEQVRBLCBkYXRhU3RyLCBwRWxlbWVudCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVN0ci5FbXB0eShtX3BBbGxvY2F0b3IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuQ2xlYXIoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLkNsZWFyKCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgYkNEQVRBID0gRkFMU0U7DQorICAgICAgICAgICAgICAgICAgICAgICAgaVN0YXRlID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX2R3SW5kZXggLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgQ1hNTF9FbGVtZW50KiBwU3ViRWxlbWVudCA9IFBhcnNlRWxlbWVudChwRWxlbWVudCwgVFJVRSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBTdWJFbGVtZW50ID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBTdWJFbGVtZW50LT5tX3BQYXJlbnQgPSBwRWxlbWVudDsNCisgICAgICAgICAgICAgICAgICAgICAgICBwRWxlbWVudC0+bV9DaGlsZHJlbi5BZGQoKEZYX0xQVk9JRClDWE1MX0VsZW1lbnQ6OkVsZW1lbnQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBFbGVtZW50LT5tX0NoaWxkcmVuLkFkZChwU3ViRWxlbWVudCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgU2tpcFdoaXRlU3BhY2VzKCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09ICdbJykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNraXBMaXRlcmFscyhGWF9CU1RSQygiXV0+IikpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnLScpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX2R3SW5kZXggKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgU2tpcExpdGVyYWxzKEZYX0JTVFJDKCItLT4iKSk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIFNraXBMaXRlcmFscyhGWF9CU1RSQygiPiIpKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlY29kZXIuQ2xlYXIoKTsNCisgICAgICAgICAgICAgICAgICAgIFNraXBXaGl0ZVNwYWNlcygpOw0KKyAgICAgICAgICAgICAgICAgICAgaVN0YXRlID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoaVN0YXRlID09IDEwKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fbk9mZnNldCA9IG1fbkJ1ZmZlck9mZnNldCArIChGWF9GSUxFU0laRSltX2R3SW5kZXg7DQorICAgICAgICBpZiAoaVN0YXRlID09IDEwIHx8IG1fZHdJbmRleCA8IG1fZHdCdWZmZXJTaXplIHx8IElzRU9GKCkpIHsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgfSB3aGlsZSAoUmVhZE5leHRCbG9jaygpKTsNCisgICAgY29udGVudCA8PCBkZWNvZGVyLkdldFJlc3VsdCgpOw0KKyAgICBDRlhfV2lkZVN0cmluZ0wgZGF0YVN0cjsNCisgICAgY29udGVudC5HZXRXaWRlU3RyaW5nTChkYXRhU3RyKTsNCisgICAgaWYgKCFtX2JTYXZlU3BhY2VDaGFycykgew0KKyAgICAgICAgZGF0YVN0ci5UcmltUmlnaHQoKEZYX0xQQ1dTVFIpTCIgXHRcclxuIik7DQorICAgIH0NCisgICAgSW5zZXJ0Q29udGVudFNlZ21lbnQoYkNEQVRBLCBkYXRhU3RyLCBwRWxlbWVudCk7DQorICAgIGRhdGFTdHIuRW1wdHkobV9wQWxsb2NhdG9yKTsNCisgICAgY29udGVudC5DbGVhcigpOw0KKyAgICBkZWNvZGVyLkNsZWFyKCk7DQorICAgIGJDREFUQSA9IEZBTFNFOw0KKyAgICByZXR1cm4gcEVsZW1lbnQ7DQorfQ0KK3ZvaWQgQ1hNTF9QYXJzZXI6Okluc2VydENvbnRlbnRTZWdtZW50KEZYX0JPT0wgYkNEQVRBLCBGWF9XU1RSIGNvbnRlbnQsIENYTUxfRWxlbWVudCogcEVsZW1lbnQpDQorew0KKyAgICBpZiAoY29udGVudC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDWE1MX0NvbnRlbnQqIHBDb250ZW50Ow0KKyAgICBpZiAobV9wQWxsb2NhdG9yKSB7DQorICAgICAgICBwQ29udGVudCA9IEZYX05ld0F0QWxsb2NhdG9yKG1fcEFsbG9jYXRvcilDWE1MX0NvbnRlbnQ7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwQ29udGVudCA9IEZYX05FVyBDWE1MX0NvbnRlbnQ7DQorICAgIH0NCisgICAgaWYgKCFwQ29udGVudCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHBDb250ZW50LT5TZXQoYkNEQVRBLCBjb250ZW50LCBtX3BBbGxvY2F0b3IpOw0KKyAgICBwRWxlbWVudC0+bV9DaGlsZHJlbi5BZGQoKEZYX0xQVk9JRClDWE1MX0VsZW1lbnQ6OkNvbnRlbnQpOw0KKyAgICBwRWxlbWVudC0+bV9DaGlsZHJlbi5BZGQocENvbnRlbnQpOw0KK30NCitzdGF0aWMgQ1hNTF9FbGVtZW50KiBYTUxfQ29udGludWVQYXJzZShDWE1MX1BhcnNlciAmcGFyc2VyLCBGWF9CT09MIGJTYXZlU3BhY2VDaGFycywgRlhfRklMRVNJWkUqIHBQYXJzZWRTaXplKQ0KK3sNCisgICAgcGFyc2VyLm1fYlNhdmVTcGFjZUNoYXJzID0gYlNhdmVTcGFjZUNoYXJzOw0KKyAgICBDWE1MX0VsZW1lbnQqIHBFbGVtZW50ID0gcGFyc2VyLlBhcnNlRWxlbWVudChOVUxMLCBGQUxTRSk7DQorICAgIGlmIChwUGFyc2VkU2l6ZSkgew0KKyAgICAgICAgKnBQYXJzZWRTaXplID0gcGFyc2VyLm1fbk9mZnNldDsNCisgICAgfQ0KKyAgICByZXR1cm4gcEVsZW1lbnQ7DQorfQ0KK0NYTUxfRWxlbWVudCogQ1hNTF9FbGVtZW50OjpQYXJzZShjb25zdCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc2l6ZSwgRlhfQk9PTCBiU2F2ZVNwYWNlQ2hhcnMsIEZYX0ZJTEVTSVpFKiBwUGFyc2VkU2l6ZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIENYTUxfUGFyc2VyIHBhcnNlcihwQWxsb2NhdG9yKTsNCisgICAgaWYgKCFwYXJzZXIuSW5pdCgoRlhfTFBCWVRFKXBCdWZmZXIsIHNpemUpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gWE1MX0NvbnRpbnVlUGFyc2UocGFyc2VyLCBiU2F2ZVNwYWNlQ2hhcnMsIHBQYXJzZWRTaXplKTsNCit9DQorQ1hNTF9FbGVtZW50KiBDWE1MX0VsZW1lbnQ6OlBhcnNlKElGWF9GaWxlUmVhZCAqcEZpbGUsIEZYX0JPT0wgYlNhdmVTcGFjZUNoYXJzLCBGWF9GSUxFU0laRSogcFBhcnNlZFNpemUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpDQorew0KKyAgICBDWE1MX1BhcnNlciBwYXJzZXIocEFsbG9jYXRvcik7DQorICAgIGlmICghcGFyc2VyLkluaXQocEZpbGUpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gWE1MX0NvbnRpbnVlUGFyc2UocGFyc2VyLCBiU2F2ZVNwYWNlQ2hhcnMsIHBQYXJzZWRTaXplKTsNCit9DQorQ1hNTF9FbGVtZW50KiBDWE1MX0VsZW1lbnQ6OlBhcnNlKElGWF9CdWZmZXJSZWFkICpwQnVmZmVyLCBGWF9CT09MIGJTYXZlU3BhY2VDaGFycywgRlhfRklMRVNJWkUqIHBQYXJzZWRTaXplLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgQ1hNTF9QYXJzZXIgcGFyc2VyKHBBbGxvY2F0b3IpOw0KKyAgICBpZiAoIXBhcnNlci5Jbml0KHBCdWZmZXIpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gWE1MX0NvbnRpbnVlUGFyc2UocGFyc2VyLCBiU2F2ZVNwYWNlQ2hhcnMsIHBQYXJzZWRTaXplKTsNCit9DQorQ1hNTF9FbGVtZW50OjpDWE1MX0VsZW1lbnQoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCisgICAgOiBtX3BQYXJlbnQoTlVMTCkNCisgICAgLCBtX1FTcGFjZU5hbWUoKQ0KKyAgICAsIG1fVGFnTmFtZSgpDQorICAgICwgbV9BdHRyTWFwKCkNCisgICAgLCBtX0NoaWxkcmVuKHBBbGxvY2F0b3IpDQorew0KK30NCitDWE1MX0VsZW1lbnQ6OkNYTUxfRWxlbWVudChGWF9CU1RSIHFTcGFjZSwgRlhfQlNUUiB0YWdOYW1lLCBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KKyAgICA6IG1fcFBhcmVudChOVUxMKQ0KKyAgICAsIG1fUVNwYWNlTmFtZSgpDQorICAgICwgbV9UYWdOYW1lKCkNCisgICAgLCBtX0F0dHJNYXAoKQ0KKyAgICAsIG1fQ2hpbGRyZW4ocEFsbG9jYXRvcikNCit7DQorICAgIG1fUVNwYWNlTmFtZS5TZXQocVNwYWNlLCBwQWxsb2NhdG9yKTsNCisgICAgbV9UYWdOYW1lLlNldCh0YWdOYW1lLCBwQWxsb2NhdG9yKTsNCit9DQorQ1hNTF9FbGVtZW50OjpDWE1MX0VsZW1lbnQoRlhfQlNUUiBxVGFnTmFtZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCisgICAgOiBtX3BQYXJlbnQoTlVMTCkNCisgICAgLCBtX1FTcGFjZU5hbWUoKQ0KKyAgICAsIG1fVGFnTmFtZSgpDQorICAgICwgbV9BdHRyTWFwKCkNCisgICAgLCBtX0NoaWxkcmVuKHBBbGxvY2F0b3IpDQorew0KKyAgICBTZXRUYWcocVRhZ05hbWUpOw0KK30NCitDWE1MX0VsZW1lbnQ6On5DWE1MX0VsZW1lbnQoKQ0KK3sNCisgICAgRW1wdHkoKTsNCit9DQordm9pZCBDWE1MX0VsZW1lbnQ6OkVtcHR5KCkNCit7DQorICAgIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBtX0NoaWxkcmVuLm1fcEFsbG9jYXRvcjsNCisgICAgbV9RU3BhY2VOYW1lLkVtcHR5KHBBbGxvY2F0b3IpOw0KKyAgICBtX1RhZ05hbWUuRW1wdHkocEFsbG9jYXRvcik7DQorICAgIG1fQXR0ck1hcC5SZW1vdmVBbGwocEFsbG9jYXRvcik7DQorICAgIFJlbW92ZUNoaWxkcmVuKCk7DQorfQ0KK3ZvaWQgQ1hNTF9FbGVtZW50OjpSZW1vdmVDaGlsZHJlbigpDQorew0KKyAgICBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gbV9DaGlsZHJlbi5tX3BBbGxvY2F0b3I7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9DaGlsZHJlbi5HZXRTaXplKCk7IGkgKz0gMikgew0KKyAgICAgICAgQ2hpbGRUeXBlIHR5cGUgPSAoQ2hpbGRUeXBlKShGWF9VSU5UUFRSKW1fQ2hpbGRyZW4uR2V0QXQoaSk7DQorICAgICAgICBpZiAodHlwZSA9PSBDb250ZW50KSB7DQorICAgICAgICAgICAgQ1hNTF9Db250ZW50KiBjb250ZW50ID0gKENYTUxfQ29udGVudCopbV9DaGlsZHJlbi5HZXRBdChpICsgMSk7DQorICAgICAgICAgICAgaWYgKHBBbGxvY2F0b3IpIHsNCisgICAgICAgICAgICAgICAgRlhfRGVsZXRlQXRBbGxvY2F0b3IoY29udGVudCwgcEFsbG9jYXRvciwgQ1hNTF9Db250ZW50KTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBkZWxldGUgY29udGVudDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gRWxlbWVudCkgew0KKyAgICAgICAgICAgIENYTUxfRWxlbWVudCogY2hpbGQgPSAoQ1hNTF9FbGVtZW50KiltX0NoaWxkcmVuLkdldEF0KGkgKyAxKTsNCisgICAgICAgICAgICBjaGlsZC0+UmVtb3ZlQ2hpbGRyZW4oKTsNCisgICAgICAgICAgICBpZiAocEFsbG9jYXRvcikgew0KKyAgICAgICAgICAgICAgICBGWF9EZWxldGVBdEFsbG9jYXRvcihjaGlsZCwgcEFsbG9jYXRvciwgQ1hNTF9FbGVtZW50KTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBkZWxldGUgY2hpbGQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fQ2hpbGRyZW4uUmVtb3ZlQWxsKCk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENYTUxfRWxlbWVudDo6R2V0VGFnTmFtZShGWF9CT09MIGJRdWFsaWZpZWQpIGNvbnN0DQorew0KKyAgICBpZiAoIWJRdWFsaWZpZWQgfHwgbV9RU3BhY2VOYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIG1fVGFnTmFtZTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBic1RhZyA9IG1fUVNwYWNlTmFtZTsNCisgICAgYnNUYWcgKz0gIjoiOw0KKyAgICBic1RhZyArPSBtX1RhZ05hbWU7DQorICAgIHJldHVybiBic1RhZzsNCit9DQordm9pZCBDWE1MX0VsZW1lbnQ6OkdldFRhZ05hbWUoQ0ZYX0J5dGVTdHJpbmdMICZ0YWdOYW1lLCBGWF9CT09MIGJRdWFsaWZpZWQpIGNvbnN0DQorew0KKyAgICBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gbV9DaGlsZHJlbi5tX3BBbGxvY2F0b3I7DQorICAgIGlmICghYlF1YWxpZmllZCB8fCBtX1FTcGFjZU5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICB0YWdOYW1lLlNldChtX1RhZ05hbWUsIHBBbGxvY2F0b3IpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYX0xQU1RSIHN0ciA9IHRhZ05hbWUuQWxsb2NCdWZmZXIobV9RU3BhY2VOYW1lLkdldExlbmd0aCgpICsgbV9UYWdOYW1lLkdldExlbmd0aCgpICsgMiwgcEFsbG9jYXRvcik7DQorICAgIGlmICghc3RyKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIoc3RyLCBtX1FTcGFjZU5hbWUuR2V0Q1N0cigpLCBtX1FTcGFjZU5hbWUuR2V0TGVuZ3RoKCkpOw0KKyAgICBzdHIgKz0gbV9RU3BhY2VOYW1lLkdldExlbmd0aCgpOw0KKyAgICAqc3RyID0gJzonOw0KKyAgICBzdHIgKys7DQorICAgIEZYU1lTX21lbWNweTMyKHN0ciwgbV9UYWdOYW1lLkdldENTdHIoKSwgbV9UYWdOYW1lLkdldExlbmd0aCgpKTsNCisgICAgc3RyICs9IG1fVGFnTmFtZS5HZXRMZW5ndGgoKTsNCisgICAgKnN0ciA9ICdcMCc7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENYTUxfRWxlbWVudDo6R2V0TmFtZXNwYWNlKEZYX0JPT0wgYlF1YWxpZmllZCkgY29uc3QNCit7DQorICAgIGlmIChiUXVhbGlmaWVkKSB7DQorICAgICAgICByZXR1cm4gbV9RU3BhY2VOYW1lOw0KKyAgICB9DQorICAgIHJldHVybiBHZXROYW1lc3BhY2VVUkkobV9RU3BhY2VOYW1lKTsNCit9DQordm9pZCBDWE1MX0VsZW1lbnQ6OkdldE5hbWVzcGFjZShDRlhfQnl0ZVN0cmluZ0wgJm5hbWVTcGFjZSwgRlhfQk9PTCBiUXVhbGlmaWVkKSBjb25zdA0KK3sNCisgICAgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IG1fQ2hpbGRyZW4ubV9wQWxsb2NhdG9yOw0KKyAgICBpZiAoYlF1YWxpZmllZCkgew0KKyAgICAgICAgbmFtZVNwYWNlLlNldChtX1FTcGFjZU5hbWUsIHBBbGxvY2F0b3IpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEdldE5hbWVzcGFjZVVSSShtX1FTcGFjZU5hbWUsIG5hbWVTcGFjZSk7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENYTUxfRWxlbWVudDo6R2V0TmFtZXNwYWNlVVJJKEZYX0JTVFIgcU5hbWUpIGNvbnN0DQorew0KKyAgICBjb25zdCBDRlhfV2lkZVN0cmluZ0wqIHB3c1NwYWNlOw0KKyAgICBjb25zdCBDWE1MX0VsZW1lbnQgKnBFbGVtZW50ID0gdGhpczsNCisgICAgZG8gew0KKyAgICAgICAgaWYgKHFOYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIHB3c1NwYWNlID0gcEVsZW1lbnQtPm1fQXR0ck1hcC5Mb29rdXAoRlhfQlNUUkMoIiIpLCBGWF9CU1RSQygieG1sbnMiKSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHB3c1NwYWNlID0gcEVsZW1lbnQtPm1fQXR0ck1hcC5Mb29rdXAoRlhfQlNUUkMoInhtbG5zIiksIHFOYW1lKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwd3NTcGFjZSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEVsZW1lbnQgPSBwRWxlbWVudC0+R2V0UGFyZW50KCk7DQorICAgIH0gd2hpbGUocEVsZW1lbnQpOw0KKyAgICByZXR1cm4gcHdzU3BhY2UgPyBGWF9VVEY4RW5jb2RlKCpwd3NTcGFjZSkgOiBDRlhfQnl0ZVN0cmluZygpOw0KK30NCit2b2lkIENYTUxfRWxlbWVudDo6R2V0TmFtZXNwYWNlVVJJKEZYX0JTVFIgcU5hbWUsIENGWF9CeXRlU3RyaW5nTCAmdXJpKSBjb25zdA0KK3sNCisgICAgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IG1fQ2hpbGRyZW4ubV9wQWxsb2NhdG9yOw0KKyAgICBjb25zdCBDRlhfV2lkZVN0cmluZ0wqIHB3c1NwYWNlOw0KKyAgICBjb25zdCBDWE1MX0VsZW1lbnQgKnBFbGVtZW50ID0gdGhpczsNCisgICAgZG8gew0KKyAgICAgICAgaWYgKHFOYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIHB3c1NwYWNlID0gcEVsZW1lbnQtPm1fQXR0ck1hcC5Mb29rdXAoRlhfQlNUUkMoIiIpLCBGWF9CU1RSQygieG1sbnMiKSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHB3c1NwYWNlID0gcEVsZW1lbnQtPm1fQXR0ck1hcC5Mb29rdXAoRlhfQlNUUkMoInhtbG5zIiksIHFOYW1lKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwd3NTcGFjZSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcEVsZW1lbnQgPSBwRWxlbWVudC0+R2V0UGFyZW50KCk7DQorICAgIH0gd2hpbGUocEVsZW1lbnQpOw0KKyAgICBpZiAocHdzU3BhY2UpIHsNCisgICAgICAgIEZYX1VURjhFbmNvZGUocHdzU3BhY2UtPkdldFB0cigpLCBwd3NTcGFjZS0+R2V0TGVuZ3RoKCksIHVyaSwgcEFsbG9jYXRvcik7DQorICAgIH0NCit9DQordm9pZCBDWE1MX0VsZW1lbnQ6OkdldEF0dHJCeUluZGV4KGludCBpbmRleCwgQ0ZYX0J5dGVTdHJpbmcmIHNwYWNlLCBDRlhfQnl0ZVN0cmluZyYgbmFtZSwgQ0ZYX1dpZGVTdHJpbmcmIHZhbHVlKSBjb25zdA0KK3sNCisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBtX0F0dHJNYXAuR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ1hNTF9BdHRySXRlbSYgaXRlbSA9IG1fQXR0ck1hcC5HZXRBdChpbmRleCk7DQorICAgIHNwYWNlID0gaXRlbS5tX1FTcGFjZU5hbWU7DQorICAgIG5hbWUgPSBpdGVtLm1fQXR0ck5hbWU7DQorICAgIHZhbHVlID0gaXRlbS5tX1ZhbHVlOw0KK30NCit2b2lkIENYTUxfRWxlbWVudDo6R2V0QXR0ckJ5SW5kZXgoaW50IGluZGV4LCBDRlhfQnl0ZVN0cmluZ0wgJnNwYWNlLCBDRlhfQnl0ZVN0cmluZ0wgJm5hbWUsIENGWF9XaWRlU3RyaW5nTCAmdmFsdWUpIGNvbnN0DQorew0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG1fQXR0ck1hcC5HZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gbV9DaGlsZHJlbi5tX3BBbGxvY2F0b3I7DQorICAgIENYTUxfQXR0ckl0ZW0mIGl0ZW0gPSBtX0F0dHJNYXAuR2V0QXQoaW5kZXgpOw0KKyAgICBzcGFjZS5TZXQoaXRlbS5tX1FTcGFjZU5hbWUsIHBBbGxvY2F0b3IpOw0KKyAgICBuYW1lLlNldChpdGVtLm1fQXR0ck5hbWUsIHBBbGxvY2F0b3IpOw0KKyAgICB2YWx1ZS5TZXQoaXRlbS5tX1ZhbHVlLCBwQWxsb2NhdG9yKTsNCit9DQorRlhfQk9PTCBDWE1MX0VsZW1lbnQ6Okhhc0F0dHIoRlhfQlNUUiBuYW1lKSBjb25zdA0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmdDIGJzU3BhY2UsIGJzTmFtZTsNCisgICAgRlhfWE1MX1NwbGl0UXVhbGlmaWVkTmFtZShuYW1lLCBic1NwYWNlLCBic05hbWUpOw0KKyAgICByZXR1cm4gbV9BdHRyTWFwLkxvb2t1cChic1NwYWNlLCBic05hbWUpICE9IE5VTEw7DQorfQ0KK0ZYX0JPT0wgQ1hNTF9FbGVtZW50OjpHZXRBdHRyVmFsdWUoRlhfQlNUUiBuYW1lLCBDRlhfV2lkZVN0cmluZyYgYXR0cmlidXRlKSBjb25zdA0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmdDIGJzU3BhY2UsIGJzTmFtZTsNCisgICAgRlhfWE1MX1NwbGl0UXVhbGlmaWVkTmFtZShuYW1lLCBic1NwYWNlLCBic05hbWUpOw0KKyAgICBjb25zdCBDRlhfV2lkZVN0cmluZ0wqIHBWYWx1ZSA9IG1fQXR0ck1hcC5Mb29rdXAoYnNTcGFjZSwgYnNOYW1lKTsNCisgICAgaWYgKHBWYWx1ZSkgew0KKyAgICAgICAgYXR0cmlidXRlID0gQ0ZYX1dpZGVTdHJpbmcocFZhbHVlLT5HZXRQdHIoKSwgcFZhbHVlLT5HZXRMZW5ndGgoKSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK2NvbnN0IENGWF9XaWRlU3RyaW5nTCogQ1hNTF9FbGVtZW50OjpHZXRBdHRyVmFsdWVQdHIoRlhfQlNUUiBuYW1lKSBjb25zdA0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmdDIGJzU3BhY2UsIGJzTmFtZTsNCisgICAgRlhfWE1MX1NwbGl0UXVhbGlmaWVkTmFtZShuYW1lLCBic1NwYWNlLCBic05hbWUpOw0KKyAgICByZXR1cm4gbV9BdHRyTWFwLkxvb2t1cChic1NwYWNlLCBic05hbWUpOw0KK30NCitGWF9CT09MIENYTUxfRWxlbWVudDo6R2V0QXR0clZhbHVlKEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSwgQ0ZYX1dpZGVTdHJpbmcmIGF0dHJpYnV0ZSkgY29uc3QNCit7DQorICAgIGNvbnN0IENGWF9XaWRlU3RyaW5nTCogcFZhbHVlID0gbV9BdHRyTWFwLkxvb2t1cChzcGFjZSwgbmFtZSk7DQorICAgIGlmIChwVmFsdWUpIHsNCisgICAgICAgIGF0dHJpYnV0ZSA9IENGWF9XaWRlU3RyaW5nKHBWYWx1ZS0+R2V0UHRyKCksIHBWYWx1ZS0+R2V0TGVuZ3RoKCkpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitjb25zdCBDRlhfV2lkZVN0cmluZ0wqIENYTUxfRWxlbWVudDo6R2V0QXR0clZhbHVlUHRyKEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSkgY29uc3QNCit7DQorICAgIHJldHVybiBtX0F0dHJNYXAuTG9va3VwKHNwYWNlLCBuYW1lKTsNCit9DQorRlhfQk9PTCBDWE1MX0VsZW1lbnQ6OkdldEF0dHJJbnRlZ2VyKEZYX0JTVFIgbmFtZSwgaW50JiBhdHRyaWJ1dGUpIGNvbnN0DQorew0KKyAgICBDRlhfQnl0ZVN0cmluZ0MgYnNTcGFjZSwgYnNOYW1lOw0KKyAgICBGWF9YTUxfU3BsaXRRdWFsaWZpZWROYW1lKG5hbWUsIGJzU3BhY2UsIGJzTmFtZSk7DQorICAgIGNvbnN0IENGWF9XaWRlU3RyaW5nTCogcHdzVmFsdWUgPSBtX0F0dHJNYXAuTG9va3VwKGJzU3BhY2UsIGJzTmFtZSk7DQorICAgIGlmIChwd3NWYWx1ZSkgew0KKyAgICAgICAgYXR0cmlidXRlID0gcHdzVmFsdWUtPkdldEludGVnZXIoKTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTAlDWE1MX0VsZW1lbnQ6OkdldEF0dHJJbnRlZ2VyKEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSwgaW50JiBhdHRyaWJ1dGUpIGNvbnN0DQorew0KKyAgICBjb25zdCBDRlhfV2lkZVN0cmluZ0wqIHB3c1ZhbHVlID0gbV9BdHRyTWFwLkxvb2t1cChzcGFjZSwgbmFtZSk7DQorICAgIGlmIChwd3NWYWx1ZSkgew0KKyAgICAgICAgYXR0cmlidXRlID0gcHdzVmFsdWUtPkdldEludGVnZXIoKTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDWE1MX0VsZW1lbnQ6OkdldEF0dHJGbG9hdChGWF9CU1RSIG5hbWUsIEZYX0ZMT0FUJiBhdHRyaWJ1dGUpIGNvbnN0DQorew0KKyAgICBDRlhfQnl0ZVN0cmluZ0MgYnNTcGFjZSwgYnNOYW1lOw0KKyAgICBGWF9YTUxfU3BsaXRRdWFsaWZpZWROYW1lKG5hbWUsIGJzU3BhY2UsIGJzTmFtZSk7DQorICAgIHJldHVybiBHZXRBdHRyRmxvYXQoYnNTcGFjZSwgYnNOYW1lLCBhdHRyaWJ1dGUpOw0KK30NCitGWF9CT09MIENYTUxfRWxlbWVudDo6R2V0QXR0ckZsb2F0KEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSwgRlhfRkxPQVQmIGF0dHJpYnV0ZSkgY29uc3QNCit7DQorICAgIENGWF9XaWRlU3RyaW5nIHZhbHVlOw0KKyAgICBjb25zdCBDRlhfV2lkZVN0cmluZ0wqIHBWYWx1ZSA9IG1fQXR0ck1hcC5Mb29rdXAoc3BhY2UsIG5hbWUpOw0KKyAgICBpZiAocFZhbHVlKSB7DQorICAgICAgICBhdHRyaWJ1dGUgPSBwVmFsdWUtPkdldEZsb2F0KCk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0RXT1JEIENYTUxfRWxlbWVudDo6Q291bnRDaGlsZHJlbigpIGNvbnN0DQorew0KKyAgICByZXR1cm4gbV9DaGlsZHJlbi5HZXRTaXplKCkgLyAyOw0KK30NCitDWE1MX0VsZW1lbnQ6OkNoaWxkVHlwZSBDWE1MX0VsZW1lbnQ6OkdldENoaWxkVHlwZShGWF9EV09SRCBpbmRleCkgY29uc3QNCit7DQorICAgIGluZGV4IDw8PSAxOw0KKyAgICBpZiAoaW5kZXggPj0gKEZYX0RXT1JEKW1fQ2hpbGRyZW4uR2V0U2l6ZSgpKSB7DQorICAgICAgICByZXR1cm4gSW52YWxpZDsNCisgICAgfQ0KKyAgICByZXR1cm4gKENoaWxkVHlwZSkoRlhfVUlOVFBUUiltX0NoaWxkcmVuLkdldEF0KGluZGV4KTsNCit9DQorQ0ZYX1dpZGVTdHJpbmcgQ1hNTF9FbGVtZW50OjpHZXRDb250ZW50KEZYX0RXT1JEIGluZGV4KSBjb25zdA0KK3sNCisgICAgaW5kZXggPDw9IDE7DQorICAgIGlmIChpbmRleCA+PSAoRlhfRFdPUkQpbV9DaGlsZHJlbi5HZXRTaXplKCkgfHwNCisgICAgICAgICAgICAoQ2hpbGRUeXBlKShGWF9VSU5UUFRSKW1fQ2hpbGRyZW4uR2V0QXQoaW5kZXgpICE9IENvbnRlbnQpIHsNCisgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZygpOw0KKyAgICB9DQorICAgIENYTUxfQ29udGVudCogcENvbnRlbnQgPSAoQ1hNTF9Db250ZW50KiltX0NoaWxkcmVuLkdldEF0KGluZGV4ICsgMSk7DQorICAgIGlmIChwQ29udGVudCkgew0KKyAgICAgICAgcmV0dXJuIHBDb250ZW50LT5tX0NvbnRlbnQ7DQorICAgIH0NCisgICAgcmV0dXJuIENGWF9XaWRlU3RyaW5nKCk7DQorfQ0KK2NvbnN0IENGWF9XaWRlU3RyaW5nTCogQ1hNTF9FbGVtZW50OjpHZXRDb250ZW50UHRyKEZYX0RXT1JEIGluZGV4KSBjb25zdA0KK3sNCisgICAgaW5kZXggPDw9IDE7DQorICAgIGlmIChpbmRleCA+PSAoRlhfRFdPUkQpbV9DaGlsZHJlbi5HZXRTaXplKCkgfHwNCisgICAgICAgICAgICAoQ2hpbGRUeXBlKShGWF9VSU5UUFRSKW1fQ2hpbGRyZW4uR2V0QXQoaW5kZXgpICE9IENvbnRlbnQpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENYTUxfQ29udGVudCogcENvbnRlbnQgPSAoQ1hNTF9Db250ZW50KiltX0NoaWxkcmVuLkdldEF0KGluZGV4ICsgMSk7DQorICAgIGlmIChwQ29udGVudCkgew0KKyAgICAgICAgcmV0dXJuICZwQ29udGVudC0+bV9Db250ZW50Ow0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitDWE1MX0VsZW1lbnQqIENYTUxfRWxlbWVudDo6R2V0RWxlbWVudChGWF9EV09SRCBpbmRleCkgY29uc3QNCit7DQorICAgIGluZGV4IDw8PSAxOw0KKyAgICBpZiAoaW5kZXggPj0gKEZYX0RXT1JEKW1fQ2hpbGRyZW4uR2V0U2l6ZSgpIHx8DQorICAgICAgICAgICAgKENoaWxkVHlwZSkoRlhfVUlOVFBUUiltX0NoaWxkcmVuLkdldEF0KGluZGV4KSAhPSBFbGVtZW50KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gKENYTUxfRWxlbWVudCopbV9DaGlsZHJlbi5HZXRBdChpbmRleCArIDEpOw0KK30NCitGWF9EV09SRCBDWE1MX0VsZW1lbnQ6OkNvdW50RWxlbWVudHMoRlhfQlNUUiBzcGFjZSwgRlhfQlNUUiB0YWcpIGNvbnN0DQorew0KKyAgICBpbnQgY291bnQgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fQ2hpbGRyZW4uR2V0U2l6ZSgpOyBpICs9IDIpIHsNCisgICAgICAgIENoaWxkVHlwZSB0eXBlID0gKENoaWxkVHlwZSkoRlhfVUlOVFBUUiltX0NoaWxkcmVuLkdldEF0KGkpOw0KKyAgICAgICAgaWYgKHR5cGUgIT0gRWxlbWVudCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1hNTF9FbGVtZW50KiBwS2lkID0gKENYTUxfRWxlbWVudCopbV9DaGlsZHJlbi5HZXRBdChpICsgMSk7DQorICAgICAgICBpZiAoKHNwYWNlLklzRW1wdHkoKSB8fCBwS2lkLT5tX1FTcGFjZU5hbWUgPT0gc3BhY2UpICYmIHBLaWQtPm1fVGFnTmFtZSA9PSB0YWcpIHsNCisgICAgICAgICAgICBjb3VudCArKzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gY291bnQ7DQorfQ0KK0NYTUxfRWxlbWVudCogQ1hNTF9FbGVtZW50OjpHZXRFbGVtZW50KEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgdGFnLCBpbnQgaW5kZXgpIGNvbnN0DQorew0KKyAgICBpZiAoaW5kZXggPCAwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fQ2hpbGRyZW4uR2V0U2l6ZSgpOyBpICs9IDIpIHsNCisgICAgICAgIENoaWxkVHlwZSB0eXBlID0gKENoaWxkVHlwZSkoRlhfVUlOVFBUUiltX0NoaWxkcmVuLkdldEF0KGkpOw0KKyAgICAgICAgaWYgKHR5cGUgIT0gRWxlbWVudCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ1hNTF9FbGVtZW50KiBwS2lkID0gKENYTUxfRWxlbWVudCopbV9DaGlsZHJlbi5HZXRBdChpICsgMSk7DQorICAgICAgICBpZiAoKCFzcGFjZS5Jc0VtcHR5KCkgJiYgcEtpZC0+bV9RU3BhY2VOYW1lICE9IHNwYWNlKSB8fCBwS2lkLT5tX1RhZ05hbWUgIT0gdGFnKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoaW5kZXggLS0gPT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBwS2lkOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCitGWF9EV09SRCBDWE1MX0VsZW1lbnQ6OkZpbmRFbGVtZW50KENYTUxfRWxlbWVudCAqcENoaWxkKSBjb25zdA0KK3sNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX0NoaWxkcmVuLkdldFNpemUoKTsgaSArPSAyKSB7DQorICAgICAgICBpZiAoKENoaWxkVHlwZSkoRlhfVUlOVFBUUiltX0NoaWxkcmVuLkdldEF0KGkpID09IEVsZW1lbnQgJiYNCisgICAgICAgICAgICAgICAgKENYTUxfRWxlbWVudCopbV9DaGlsZHJlbi5HZXRBdChpICsgMSkgPT0gcENoaWxkKSB7DQorICAgICAgICAgICAgcmV0dXJuIChGWF9EV09SRCkoaSA+PiAxKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gKEZYX0RXT1JEKSAtIDE7DQorfQ0KK2NvbnN0IENGWF9XaWRlU3RyaW5nTCogQ1hNTF9BdHRyTWFwOjpMb29rdXAoRlhfQlNUUiBzcGFjZSwgRlhfQlNUUiBuYW1lKSBjb25zdA0KK3sNCisgICAgaWYgKG1fcE1hcCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fcE1hcC0+R2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDWE1MX0F0dHJJdGVtJiBpdGVtID0gR2V0QXQoaSk7DQorICAgICAgICBpZiAoKHNwYWNlLklzRW1wdHkoKSB8fCBpdGVtLm1fUVNwYWNlTmFtZSA9PSBzcGFjZSkgJiYgaXRlbS5tX0F0dHJOYW1lID09IG5hbWUpIHsNCisgICAgICAgICAgICByZXR1cm4gJml0ZW0ubV9WYWx1ZTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQordm9pZCBDWE1MX0F0dHJNYXA6OlNldEF0KEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSwgRlhfV1NUUiB2YWx1ZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDWE1MX0F0dHJJdGVtJiBpdGVtID0gR2V0QXQoaSk7DQorICAgICAgICBpZiAoKHNwYWNlLklzRW1wdHkoKSB8fCBpdGVtLm1fUVNwYWNlTmFtZSA9PSBzcGFjZSkgJiYgaXRlbS5tX0F0dHJOYW1lID09IG5hbWUpIHsNCisgICAgICAgICAgICBpdGVtLm1fVmFsdWUuU2V0KHZhbHVlLCBwQWxsb2NhdG9yKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCFtX3BNYXApIHsNCisgICAgICAgIGlmIChwQWxsb2NhdG9yKSB7DQorICAgICAgICAgICAgbV9wTWFwID0gRlhfTmV3QXRBbGxvY2F0b3IocEFsbG9jYXRvcilDRlhfT2JqZWN0QXJyYXk8Q1hNTF9BdHRySXRlbT4ocEFsbG9jYXRvcik7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fcE1hcCA9IEZYX05FVyBDRlhfT2JqZWN0QXJyYXk8Q1hNTF9BdHRySXRlbT47DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCFtX3BNYXApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDWE1MX0F0dHJJdGVtKiBwSXRlbSA9IChDWE1MX0F0dHJJdGVtKiltX3BNYXAtPkFkZFNwYWNlKCk7DQorICAgIGlmICghcEl0ZW0pIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBwSXRlbS0+bV9RU3BhY2VOYW1lLlNldChzcGFjZSwgcEFsbG9jYXRvcik7DQorICAgIHBJdGVtLT5tX0F0dHJOYW1lLlNldChuYW1lLCBwQWxsb2NhdG9yKTsNCisgICAgcEl0ZW0tPm1fVmFsdWUuU2V0KHZhbHVlLCBwQWxsb2NhdG9yKTsNCit9DQordm9pZCBDWE1MX0F0dHJNYXA6OlJlbW92ZUF0KEZYX0JTVFIgc3BhY2UsIEZYX0JTVFIgbmFtZSwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIGlmIChtX3BNYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9wTWFwLT5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENYTUxfQXR0ckl0ZW0mIGl0ZW0gPSBHZXRBdChpKTsNCisgICAgICAgIGlmICgoc3BhY2UuSXNFbXB0eSgpIHx8IGl0ZW0ubV9RU3BhY2VOYW1lID09IHNwYWNlKSAmJiBpdGVtLm1fQXR0ck5hbWUgPT0gbmFtZSkgew0KKyAgICAgICAgICAgIGl0ZW0uRW1wdHkocEFsbG9jYXRvcik7DQorICAgICAgICAgICAgbV9wTWFwLT5SZW1vdmVBdChpKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0NCit9DQoraW50IENYTUxfQXR0ck1hcDo6R2V0U2l6ZSgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gbV9wTWFwID09IE5VTEwgPyAwIDogbV9wTWFwLT5HZXRTaXplKCk7DQorfQ0KK0NYTUxfQXR0ckl0ZW0mIENYTUxfQXR0ck1hcDo6R2V0QXQoaW50IGluZGV4KSBjb25zdA0KK3sNCisgICAgQVNTRVJUKG1fcE1hcCAhPSBOVUxMKTsNCisgICAgcmV0dXJuICgqbV9wTWFwKVtpbmRleF07DQorfQ0KK3ZvaWQgQ1hNTF9BdHRyTWFwOjpSZW1vdmVBbGwoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIGlmICghbV9wTWFwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3BNYXAtPkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgQ1hNTF9BdHRySXRlbSYgaXRlbSA9ICgqbV9wTWFwKVtpXTsNCisgICAgICAgIGl0ZW0uRW1wdHkocEFsbG9jYXRvcik7DQorICAgIH0NCisgICAgbV9wTWFwLT5SZW1vdmVBbGwoKTsNCisgICAgaWYgKHBBbGxvY2F0b3IpIHsNCisgICAgICAgIEZYX0RlbGV0ZUF0QWxsb2NhdG9yKG1fcE1hcCwgcEFsbG9jYXRvciwgQ0ZYX09iamVjdEFycmF5PENYTUxfQXR0ckl0ZW0+KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGRlbGV0ZSBtX3BNYXA7DQorICAgIH0NCisgICAgbV9wTWFwID0gTlVMTDsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvZnhjcnRfcGxhdGZvcm1zLmNwcCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3BsYXRmb3Jtcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ3OWI3YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3BsYXRmb3Jtcy5jcHAKQEAgLTAsMCArMSwyMDMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2V4dC5oIg0KKyNpbmNsdWRlICJmeGNydF9wbGF0Zm9ybXMuaCINCisjaWYgKF9GWE1fUExBVEZPUk1fICE9IF9GWE1fUExBVEZPUk1fV0lORE9XU18gJiYgX0ZYTV9QTEFURk9STV8gIT0gX0ZYTV9QTEFURk9STV9MSU5VWF8gJiYgX0ZYTV9QTEFURk9STV8gIT0gX0ZYTV9QTEFURk9STV9BUFBMRV8gJiYgX0ZYTV9QTEFURk9STV8gIT0gX0ZYTV9QTEFURk9STV9BTkRST0lEXykNCitJRlhDUlRfRmlsZUFjY2VzcyogRlhDUlRfRmlsZUFjY2Vzc19DcmVhdGUoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIGlmIChwQWxsb2NhdG9yKSB7DQorICAgICAgICByZXR1cm4gRlhfTmV3QXRBbGxvY2F0b3IocEFsbG9jYXRvcikgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfQ1JUOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDRlhDUlRfRmlsZUFjY2Vzc19DUlQ7DQorICAgIH0NCit9DQordm9pZCBGWENSVF9HZXRGaWxlTW9kZVN0cmluZyhGWF9EV09SRCBkd01vZGVzLCBDRlhfQnl0ZVN0cmluZyAmYnNNb2RlKQ0KK3sNCisgICAgaWYgKGR3TW9kZXMgJiBGWF9GSUxFTU9ERV9SZWFkT25seSkgew0KKyAgICAgICAgYnNNb2RlID0gRlhfQlNUUkMoInJiIik7DQorICAgIH0gZWxzZSBpZiAoZHdNb2RlcyAmIEZYX0ZJTEVNT0RFX1RydW5jYXRlKSB7DQorICAgICAgICBic01vZGUgPSBGWF9CU1RSQygidytiIik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBic01vZGUgPSBGWF9CU1RSQygiYStiIik7DQorICAgIH0NCit9DQordm9pZCBGWENSVF9HZXRGaWxlTW9kZVN0cmluZyhGWF9EV09SRCBkd01vZGVzLCBDRlhfV2lkZVN0cmluZyAmd3NNb2RlKQ0KK3sNCisgICAgaWYgKGR3TW9kZXMgJiBGWF9GSUxFTU9ERV9SZWFkT25seSkgew0KKyAgICAgICAgd3NNb2RlID0gRlhfV1NUUkMoTCJyYiIpOw0KKyAgICB9IGVsc2UgaWYgKGR3TW9kZXMgJiBGWF9GSUxFTU9ERV9UcnVuY2F0ZSkgew0KKyAgICAgICAgd3NNb2RlID0gRlhfV1NUUkMoTCJ3K2IiKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHdzTW9kZSA9IEZYX1dTVFJDKEwiYStiIik7DQorICAgIH0NCit9DQorQ0ZYQ1JUX0ZpbGVBY2Nlc3NfQ1JUOjpDRlhDUlRfRmlsZUFjY2Vzc19DUlQoKQ0KKyAgICA6IG1faEZpbGUoTlVMTCkNCit7DQorfQ0KK0NGWENSVF9GaWxlQWNjZXNzX0NSVDo6fkNGWENSVF9GaWxlQWNjZXNzX0NSVCgpDQorew0KKyAgICBDbG9zZSgpOw0KK30NCitGWF9CT09MIENGWENSVF9GaWxlQWNjZXNzX0NSVDo6T3BlbihGWF9CU1RSIGZpbGVOYW1lLCBGWF9EV09SRCBkd01vZGUpDQorew0KKyAgICBpZiAobV9oRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIHN0ck1vZGU7DQorICAgIEZYQ1JUX0dldEZpbGVNb2RlU3RyaW5nKGR3TW9kZSwgc3RyTW9kZSk7DQorICAgIG1faEZpbGUgPSBGWFNZU19mb3BlbihmaWxlTmFtZS5HZXRDU3RyKCksIChGWF9MUENTVFIpc3RyTW9kZSk7DQorICAgIHJldHVybiBtX2hGaWxlICE9IE5VTEw7DQorfQ0KK0ZYX0JPT0wgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfQ1JUOjpPcGVuKEZYX1dTVFIgZmlsZU5hbWUsIEZYX0RXT1JEIGR3TW9kZSkNCit7DQorICAgIGlmIChtX2hGaWxlKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ0ZYX1dpZGVTdHJpbmcgc3RyTW9kZTsNCisgICAgRlhDUlRfR2V0RmlsZU1vZGVTdHJpbmcoZHdNb2RlLCBzdHJNb2RlKTsNCisgICAgbV9oRmlsZSA9IEZYU1lTX3dmb3BlbihmaWxlTmFtZS5HZXRQdHIoKSwgKEZYX0xQQ1dTVFIpc3RyTW9kZSk7DQorICAgIHJldHVybiBtX2hGaWxlICE9IE5VTEw7DQorfQ0KK3ZvaWQgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfQ1JUOjpDbG9zZSgpDQorew0KKyAgICBpZiAoIW1faEZpbGUpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWFNZU19mY2xvc2UobV9oRmlsZSk7DQorICAgIG1faEZpbGUgPSBOVUxMOw0KK30NCit2b2lkIENGWENSVF9GaWxlQWNjZXNzX0NSVDo6UmVsZWFzZShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgaWYgKHBBbGxvY2F0b3IpIHsNCisgICAgICAgIEZYX0RlbGV0ZUF0QWxsb2NhdG9yKHRoaXMsIHBBbGxvY2F0b3IsIENGWENSVF9GaWxlQWNjZXNzX0NSVCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBkZWxldGUgdGhpczsNCisgICAgfQ0KK30NCitGWF9GSUxFU0laRSBDRlhDUlRfRmlsZUFjY2Vzc19DUlQ6OkdldFNpemUoKSBjb25zdA0KK3sNCisgICAgaWYgKCFtX2hGaWxlKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBGWF9GSUxFU0laRSBwb3MgPSAoRlhfRklMRVNJWkUpRlhTWVNfZnRlbGwobV9oRmlsZSk7DQorICAgIEZYU1lTX2ZzZWVrKG1faEZpbGUsIDAsIEZYU1lTX1NFRUtfRU5EKTsNCisgICAgRlhfRklMRVNJWkUgc2l6ZSA9IChGWF9GSUxFU0laRSlGWFNZU19mdGVsbChtX2hGaWxlKTsNCisgICAgRlhTWVNfZnNlZWsobV9oRmlsZSwgcG9zLCBGWFNZU19TRUVLX1NFVCk7DQorICAgIHJldHVybiBzaXplOw0KK30NCitGWF9GSUxFU0laRSBDRlhDUlRfRmlsZUFjY2Vzc19DUlQ6OkdldFBvc2l0aW9uKCkgY29uc3QNCit7DQorICAgIGlmICghbV9oRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIChGWF9GSUxFU0laRSkgLSAxOw0KKyAgICB9DQorICAgIHJldHVybiAoRlhfRklMRVNJWkUpRlhTWVNfZnRlbGwobV9oRmlsZSk7DQorfQ0KK0ZYX0ZJTEVTSVpFIENGWENSVF9GaWxlQWNjZXNzX0NSVDo6U2V0UG9zaXRpb24oRlhfRklMRVNJWkUgcG9zKQ0KK3sNCisgICAgaWYgKCFtX2hGaWxlKSB7DQorICAgICAgICByZXR1cm4gKEZYX0ZJTEVTSVpFKSAtIDE7DQorICAgIH0NCisgICAgRlhTWVNfZnNlZWsobV9oRmlsZSwgcG9zLCBGWFNZU19TRUVLX1NFVCk7DQorICAgIHJldHVybiAoRlhfRklMRVNJWkUpRlhTWVNfZnRlbGwobV9oRmlsZSk7DQorfQ0KK3NpemVfdCBDRlhDUlRfRmlsZUFjY2Vzc19DUlQ6OlJlYWQodm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyKQ0KK3sNCisgICAgaWYgKCFtX2hGaWxlKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhTWVNfZnJlYWQocEJ1ZmZlciwgMSwgc3pCdWZmZXIsIG1faEZpbGUpOw0KK30NCitzaXplX3QgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfQ1JUOjpXcml0ZShjb25zdCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpDQorew0KKyAgICBpZiAoIW1faEZpbGUpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiBGWFNZU19md3JpdGUocEJ1ZmZlciwgMSwgc3pCdWZmZXIsIG1faEZpbGUpOw0KK30NCitzaXplX3QgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfQ1JUOjpSZWFkUG9zKHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlciwgRlhfRklMRVNJWkUgcG9zKQ0KK3sNCisgICAgaWYgKCFtX2hGaWxlKSB7DQorICAgICAgICByZXR1cm4gKEZYX0ZJTEVTSVpFKSAtIDE7DQorICAgIH0NCisgICAgRlhTWVNfZnNlZWsobV9oRmlsZSwgcG9zLCBGWFNZU19TRUVLX1NFVCk7DQorICAgIHJldHVybiBGWFNZU19mcmVhZChwQnVmZmVyLCAxLCBzekJ1ZmZlciwgbV9oRmlsZSk7DQorfQ0KK3NpemVfdCBDRlhDUlRfRmlsZUFjY2Vzc19DUlQ6OldyaXRlUG9zKGNvbnN0IHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlciwgRlhfRklMRVNJWkUgcG9zKQ0KK3sNCisgICAgaWYgKCFtX2hGaWxlKSB7DQorICAgICAgICByZXR1cm4gKEZYX0ZJTEVTSVpFKSAtIDE7DQorICAgIH0NCisgICAgRlhTWVNfZnNlZWsobV9oRmlsZSwgcG9zLCBGWFNZU19TRUVLX1NFVCk7DQorICAgIHJldHVybiBGWFNZU19md3JpdGUocEJ1ZmZlciwgMSwgc3pCdWZmZXIsIG1faEZpbGUpOw0KK30NCitGWF9CT09MIENGWENSVF9GaWxlQWNjZXNzX0NSVDo6Rmx1c2goKQ0KK3sNCisgICAgaWYgKCFtX2hGaWxlKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuICFGWFNZU19mZmx1c2gobV9oRmlsZSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfQ1JUOjpUcnVuY2F0ZShGWF9GSUxFU0laRSBzekZpbGUpDQorew0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9FeGlzdChGWF9CU1RSIGZpbGVOYW1lKQ0KK3sNCisgICAgcmV0dXJuIGFjY2VzcyhmaWxlTmFtZS5HZXRDU3RyKCksIEZfT0spID4gLTE7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9FeGlzdChGWF9XU1RSIGZpbGVOYW1lKQ0KK3sNCisgICAgcmV0dXJuIEZYX0ZpbGVfRXhpc3QoRlhfVVRGOEVuY29kZShmaWxlTmFtZSkpOw0KK30NCitGWF9CT09MIEZYX0ZpbGVfRGVsZXRlKEZYX0JTVFIgZmlsZU5hbWUpDQorew0KKyAgICByZXR1cm4gcmVtb3ZlKGZpbGVOYW1lLkdldENTdHIoKSkgPiAtMTsNCit9DQorRlhfQk9PTCBGWF9GaWxlX0RlbGV0ZShGWF9XU1RSIGZpbGVOYW1lKQ0KK3sNCisgICAgcmV0dXJuIEZYX0ZpbGVfRGVsZXRlKEZYX1VURjhFbmNvZGUoZmlsZU5hbWUpKTsNCit9DQorRlhfQk9PTCBGWF9GaWxlX0NvcHkoRlhfQlNUUiBmaWxlTmFtZVNyYywgRlhfQlNUUiBmaWxlTmFtZURzdCkNCit7DQorICAgIENGWENSVF9GaWxlQWNjZXNzX0NSVCBzcmMsIGRzdDsNCisgICAgaWYgKCFzcmMuT3BlbihmaWxlTmFtZVNyYywgRlhfRklMRU1PREVfUmVhZE9ubHkpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfRklMRVNJWkUgc2l6ZSA9IHNyYy5HZXRTaXplKCk7DQorICAgIGlmICghc2l6ZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICghZHN0Lk9wZW4oZmlsZU5hbWVEc3QsIEZYX0ZJTEVNT0RFX1RydW5jYXRlKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0ZJTEVTSVpFIG51bSA9IDA7DQorICAgIEZYX0xQQllURSBwQnVmZmVyID0gRlhfQWxsb2MoRlhfQllURSwgMzI3NjgpOw0KKyAgICBpZiAoIXBCdWZmZXIpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICB3aGlsZSAobnVtID0gc3JjLlJlYWQocEJ1ZmZlciwgMzI3NjgpKSB7DQorICAgICAgICBpZiAoZHN0LldyaXRlKHBCdWZmZXIsIG51bSkgIT0gbnVtKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfRnJlZShwQnVmZmVyKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9Db3B5KEZYX1dTVFIgZmlsZU5hbWVTcmMsIEZYX1dTVFIgZmlsZU5hbWVEc3QpDQorew0KKyAgICByZXR1cm4gRlhfRmlsZV9Db3B5KEZYX1VURjhFbmNvZGUoZmlsZU5hbWVTcmMpLCBGWF9VVEY4RW5jb2RlKGZpbGVOYW1lRHN0KSk7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9Nb3ZlKEZYX0JTVFIgZmlsZU5hbWVTcmMsIEZYX0JTVFIgZmlsZU5hbWVEc3QpDQorew0KKyAgICByZXR1cm4gcmVuYW1lKGZpbGVOYW1lU3JjLkdldENTdHIoKSwgZmlsZU5hbWVEc3QuR2V0Q1N0cigpKTsNCit9DQorRlhfQk9PTCBGWF9GaWxlX01vdmUoRlhfV1NUUiBmaWxlTmFtZVNyYywgRlhfV1NUUiBmaWxlTmFtZURzdCkNCit7DQorICAgIHJldHVybiBGWF9GaWxlX01vdmUoRlhfVVRGOEVuY29kZShmaWxlTmFtZVNyYyksIEZYX1VURjhFbmNvZGUoZmlsZU5hbWVEc3QpKTsNCit9DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvZnhjcnRfcGxhdGZvcm1zLmggYi9jb3JlL3NyYy9meGNydC9meGNydF9wbGF0Zm9ybXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzNiODg4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZnhjcnRfcGxhdGZvcm1zLmgKQEAgLTAsMCArMSwzNSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhDUlRfUExBVEZPUk1TXw0KKyNkZWZpbmUgX0ZYQ1JUX1BMQVRGT1JNU18NCisjaW5jbHVkZSAiZXh0ZW5zaW9uLmgiDQorI2lmIF9GWF9PU18gPT0gX0ZYX0FORFJPSURfDQordm9pZAlGWENSVF9HZXRGaWxlTW9kZVN0cmluZyhGWF9EV09SRCBkd01vZGVzLCBDRlhfQnl0ZVN0cmluZyAmYnNNb2RlKTsNCit2b2lkCUZYQ1JUX0dldEZpbGVNb2RlU3RyaW5nKEZYX0RXT1JEIGR3TW9kZXMsIENGWF9XaWRlU3RyaW5nICZ3c01vZGUpOw0KK2NsYXNzIENGWENSVF9GaWxlQWNjZXNzX0NSVCA6IHB1YmxpYyBJRlhDUlRfRmlsZUFjY2VzcywgcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhDUlRfRmlsZUFjY2Vzc19DUlQoKTsNCisgICAgdmlydHVhbCB+Q0ZYQ1JUX0ZpbGVBY2Nlc3NfQ1JUKCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJT3BlbihGWF9CU1RSIGZpbGVOYW1lLCBGWF9EV09SRCBkd01vZGUpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCU9wZW4oRlhfV1NUUiBmaWxlTmFtZSwgRlhfRFdPUkQgZHdNb2RlKTsNCisgICAgdmlydHVhbCB2b2lkCQlDbG9zZSgpOw0KKyAgICB2aXJ0dWFsIHZvaWQJCVJlbGVhc2UoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpOw0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCUdldFNpemUoKSBjb25zdDsNCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQlHZXRQb3NpdGlvbigpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCVNldFBvc2l0aW9uKEZYX0ZJTEVTSVpFIHBvcyk7DQorICAgIHZpcnR1YWwgc2l6ZV90CQlSZWFkKHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlcik7DQorICAgIHZpcnR1YWwgc2l6ZV90CQlXcml0ZShjb25zdCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpOw0KKyAgICB2aXJ0dWFsIHNpemVfdAkJUmVhZFBvcyh2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIsIEZYX0ZJTEVTSVpFIHBvcyk7DQorICAgIHZpcnR1YWwgc2l6ZV90CQlXcml0ZVBvcyhjb25zdCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIsIEZYX0ZJTEVTSVpFIHBvcyk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJRmx1c2goKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQlUcnVuY2F0ZShGWF9GSUxFU0laRSBzekZpbGUpOw0KK3Byb3RlY3RlZDoNCisgICAgRlhTWVNfRklMRSoJbV9oRmlsZTsNCit9Ow0KKyNlbmRpZg0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3Bvc2l4LmNwcCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3Bvc2l4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzUyZTBhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZnhjcnRfcG9zaXguY3BwCkBAIC0wLDAgKzEsMjAxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGNydC9meF9leHQuaCINCisjaW5jbHVkZSAiZnhjcnRfcG9zaXguaCINCisjaWYgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9MSU5VWF8gfHwgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8gfHwgX0ZYTV9QTEFURk9STV8gPT0gX0ZYTV9QTEFURk9STV9BTkRST0lEXw0KK0lGWENSVF9GaWxlQWNjZXNzKiBGWENSVF9GaWxlQWNjZXNzX0NyZWF0ZShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgaWYgKHBBbGxvY2F0b3IpIHsNCisgICAgICAgIHJldHVybiBGWF9OZXdBdEFsbG9jYXRvcihwQWxsb2NhdG9yKSBDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeCgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIEZYX05FVyBDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeDsNCisgICAgfQ0KK30NCit2b2lkIEZYQ1JUX1Bvc2l4X0dldEZpbGVNb2RlKEZYX0RXT1JEIGR3TW9kZXMsIEZYX0lOVDMyICZuRmxhZ3MsIEZYX0lOVDMyICZuTWFza3MpDQorew0KKyAgICBuRmxhZ3MgPSBPX0JJTkFSWSB8IE9fTEFSR0VGSUxFOw0KKyAgICBpZiAoZHdNb2RlcyAmIEZYX0ZJTEVNT0RFX1JlYWRPbmx5KSB7DQorICAgICAgICBuRmxhZ3MgfD0gT19SRE9OTFk7DQorICAgICAgICBuTWFza3MgPSAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbkZsYWdzIHw9IE9fUkRXUiB8IE9fQ1JFQVQ7DQorICAgICAgICBpZiAoZHdNb2RlcyAmIEZYX0ZJTEVNT0RFX1RydW5jYXRlKSB7DQorICAgICAgICAgICAgbkZsYWdzIHw9IE9fVFJVTkM7DQorICAgICAgICB9DQorICAgICAgICBuTWFza3MgPSBTX0lSVVNSIHwgU19JV1VTUiB8IFNfSVJHUlAgfCBTX0lST1RIOw0KKyAgICB9DQorfQ0KK0NGWENSVF9GaWxlQWNjZXNzX1Bvc2l4OjpDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeCgpDQorICAgIDogbV9uRkQoLTEpDQorew0KK30NCitDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeDo6fkNGWENSVF9GaWxlQWNjZXNzX1Bvc2l4KCkNCit7DQorICAgIENsb3NlKCk7DQorfQ0KK0ZYX0JPT0wgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXg6Ok9wZW4oRlhfQlNUUiBmaWxlTmFtZSwgRlhfRFdPUkQgZHdNb2RlKQ0KK3sNCisgICAgaWYgKG1fbkZEID4gLTEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9JTlQzMiBuRmxhZ3MsIG5NYXNrczsNCisgICAgRlhDUlRfUG9zaXhfR2V0RmlsZU1vZGUoZHdNb2RlLCBuRmxhZ3MsIG5NYXNrcyk7DQorICAgIG1fbkZEID0gb3BlbihmaWxlTmFtZS5HZXRDU3RyKCksIG5GbGFncywgbk1hc2tzKTsNCisgICAgcmV0dXJuIG1fbkZEID4gLTE7DQorfQ0KK0ZYX0JPT0wgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXg6Ok9wZW4oRlhfV1NUUiBmaWxlTmFtZSwgRlhfRFdPUkQgZHdNb2RlKQ0KK3sNCisgICAgcmV0dXJuIE9wZW4oRlhfVVRGOEVuY29kZShmaWxlTmFtZSksIGR3TW9kZSk7DQorfQ0KK3ZvaWQgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXg6OkNsb3NlKCkNCit7DQorICAgIGlmIChtX25GRCA8IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBjbG9zZShtX25GRCk7DQorICAgIG1fbkZEID0gLTE7DQorfQ0KK3ZvaWQgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXg6OlJlbGVhc2UoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvcikNCit7DQorICAgIGlmIChwQWxsb2NhdG9yKSB7DQorICAgICAgICBGWF9EZWxldGVBdEFsbG9jYXRvcih0aGlzLCBwQWxsb2NhdG9yLCBDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBkZWxldGUgdGhpczsNCisgICAgfQ0KK30NCitGWF9GSUxFU0laRSBDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeDo6R2V0U2l6ZSgpIGNvbnN0DQorew0KKyAgICBpZiAobV9uRkQgPCAwKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBzdHJ1Y3Qgc3RhdCBzOw0KKyAgICBGWFNZU19tZW1zZXQzMigmcywgMCwgc2l6ZW9mKHMpKTsNCisgICAgZnN0YXQobV9uRkQsICZzKTsNCisgICAgcmV0dXJuIHMuc3Rfc2l6ZTsNCit9DQorRlhfRklMRVNJWkUgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXg6OkdldFBvc2l0aW9uKCkgY29uc3QNCit7DQorICAgIGlmIChtX25GRCA8IDApIHsNCisgICAgICAgIHJldHVybiAoRlhfRklMRVNJWkUpIC0gMTsNCisgICAgfQ0KKyAgICByZXR1cm4gbHNlZWsobV9uRkQsIDAsIFNFRUtfQ1VSKTsNCit9DQorRlhfRklMRVNJWkUgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXg6OlNldFBvc2l0aW9uKEZYX0ZJTEVTSVpFIHBvcykNCit7DQorICAgIGlmIChtX25GRCA8IDApIHsNCisgICAgICAgIHJldHVybiAoRlhfRklMRVNJWkUpIC0gMTsNCisgICAgfQ0KKyAgICByZXR1cm4gbHNlZWsobV9uRkQsIHBvcywgU0VFS19TRVQpOw0KK30NCitzaXplX3QgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXg6OlJlYWQodm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyKQ0KK3sNCisgICAgaWYgKG1fbkZEIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIHJlYWQobV9uRkQsIHBCdWZmZXIsIHN6QnVmZmVyKTsNCit9DQorc2l6ZV90IENGWENSVF9GaWxlQWNjZXNzX1Bvc2l4OjpXcml0ZShjb25zdCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpDQorew0KKyAgICBpZiAobV9uRkQgPCAwKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gd3JpdGUobV9uRkQsIHBCdWZmZXIsIHN6QnVmZmVyKTsNCit9DQorc2l6ZV90IENGWENSVF9GaWxlQWNjZXNzX1Bvc2l4OjpSZWFkUG9zKHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlciwgRlhfRklMRVNJWkUgcG9zKQ0KK3sNCisgICAgaWYgKG1fbkZEIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKHBvcyA+PSBHZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChTZXRQb3NpdGlvbihwb3MpID09IChGWF9GSUxFU0laRSkgLSAxKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gUmVhZChwQnVmZmVyLCBzekJ1ZmZlcik7DQorfQ0KK3NpemVfdCBDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeDo6V3JpdGVQb3MoY29uc3Qgdm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyLCBGWF9GSUxFU0laRSBwb3MpDQorew0KKyAgICBpZiAobV9uRkQgPCAwKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAoU2V0UG9zaXRpb24ocG9zKSA9PSAoRlhfRklMRVNJWkUpIC0gMSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIFdyaXRlKHBCdWZmZXIsIHN6QnVmZmVyKTsNCit9DQorRlhfQk9PTCBDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeDo6Rmx1c2goKQ0KK3sNCisgICAgaWYgKG1fbkZEIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBmc3luYyhtX25GRCkgPiAtMTsNCit9DQorRlhfQk9PTCBDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeDo6VHJ1bmNhdGUoRlhfRklMRVNJWkUgc3pGaWxlKQ0KK3sNCisgICAgaWYgKG1fbkZEIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiAhZnRydW5jYXRlKG1fbkZELCBzekZpbGUpOw0KK30NCitGWF9CT09MIEZYX0ZpbGVfRXhpc3QoRlhfQlNUUiBmaWxlTmFtZSkNCit7DQorICAgIHJldHVybiBhY2Nlc3MoZmlsZU5hbWUuR2V0Q1N0cigpLCBGX09LKSA+IC0xOw0KK30NCitGWF9CT09MIEZYX0ZpbGVfRXhpc3QoRlhfV1NUUiBmaWxlTmFtZSkNCit7DQorICAgIHJldHVybiBGWF9GaWxlX0V4aXN0KEZYX1VURjhFbmNvZGUoZmlsZU5hbWUpKTsNCit9DQorRlhfQk9PTCBGWF9GaWxlX0RlbGV0ZShGWF9CU1RSIGZpbGVOYW1lKQ0KK3sNCisgICAgcmV0dXJuIHJlbW92ZShmaWxlTmFtZS5HZXRDU3RyKCkpID4gLTE7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9EZWxldGUoRlhfV1NUUiBmaWxlTmFtZSkNCit7DQorICAgIHJldHVybiBGWF9GaWxlX0RlbGV0ZShGWF9VVEY4RW5jb2RlKGZpbGVOYW1lKSk7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9Db3B5KEZYX0JTVFIgZmlsZU5hbWVTcmMsIEZYX0JTVFIgZmlsZU5hbWVEc3QpDQorew0KKyAgICBDRlhDUlRfRmlsZUFjY2Vzc19Qb3NpeCBzcmMsIGRzdDsNCisgICAgaWYgKCFzcmMuT3BlbihmaWxlTmFtZVNyYywgRlhfRklMRU1PREVfUmVhZE9ubHkpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfRklMRVNJWkUgc2l6ZSA9IHNyYy5HZXRTaXplKCk7DQorICAgIGlmICghc2l6ZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICghZHN0Lk9wZW4oZmlsZU5hbWVEc3QsIEZYX0ZJTEVNT0RFX1RydW5jYXRlKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHNpemVfdCBudW0gPSAwOw0KKyAgICBGWF9MUEJZVEUgcEJ1ZmZlciA9IEZYX0FsbG9jKEZYX0JZVEUsIDMyNzY4KTsNCisgICAgaWYgKCFwQnVmZmVyKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbnVtID0gc3JjLlJlYWQocEJ1ZmZlciwgMzI3NjgpOw0KKyAgICB3aGlsZSAobnVtKSB7DQorICAgICAgICBpZiAoZHN0LldyaXRlKHBCdWZmZXIsIG51bSkgIT0gbnVtKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBudW0gPSBzcmMuUmVhZChwQnVmZmVyLCAzMjc2OCk7DQorICAgIH0NCisgICAgRlhfRnJlZShwQnVmZmVyKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9Db3B5KEZYX1dTVFIgZmlsZU5hbWVTcmMsIEZYX1dTVFIgZmlsZU5hbWVEc3QpDQorew0KKyAgICByZXR1cm4gRlhfRmlsZV9Db3B5KEZYX1VURjhFbmNvZGUoZmlsZU5hbWVTcmMpLCBGWF9VVEY4RW5jb2RlKGZpbGVOYW1lRHN0KSk7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9Nb3ZlKEZYX0JTVFIgZmlsZU5hbWVTcmMsIEZYX0JTVFIgZmlsZU5hbWVEc3QpDQorew0KKyAgICByZXR1cm4gcmVuYW1lKGZpbGVOYW1lU3JjLkdldENTdHIoKSwgZmlsZU5hbWVEc3QuR2V0Q1N0cigpKTsNCit9DQorRlhfQk9PTCBGWF9GaWxlX01vdmUoRlhfV1NUUiBmaWxlTmFtZVNyYywgRlhfV1NUUiBmaWxlTmFtZURzdCkNCit7DQorICAgIHJldHVybiBGWF9GaWxlX01vdmUoRlhfVVRGOEVuY29kZShmaWxlTmFtZVNyYyksIEZYX1VURjhFbmNvZGUoZmlsZU5hbWVEc3QpKTsNCit9DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvZnhjcnRfcG9zaXguaCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3Bvc2l4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjljODRhZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3Bvc2l4LmgKQEAgLTAsMCArMSwzMyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2lmbmRlZiBfRlhDUlRfTElOVVhfDQorI2RlZmluZSBfRlhDUlRfTElOVVhfDQorI2luY2x1ZGUgImV4dGVuc2lvbi5oIg0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX0xJTlVYXyB8fCBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXyB8fCBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX0FORFJPSURfDQorY2xhc3MgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXggOiBwdWJsaWMgSUZYQ1JUX0ZpbGVBY2Nlc3MsIHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXgoKTsNCisgICAgdmlydHVhbCB+Q0ZYQ1JUX0ZpbGVBY2Nlc3NfUG9zaXgoKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQlPcGVuKEZYX0JTVFIgZmlsZU5hbWUsIEZYX0RXT1JEIGR3TW9kZSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJT3BlbihGWF9XU1RSIGZpbGVOYW1lLCBGWF9EV09SRCBkd01vZGUpOw0KKyAgICB2aXJ0dWFsIHZvaWQJCUNsb3NlKCk7DQorICAgIHZpcnR1YWwgdm9pZAkJUmVsZWFzZShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yID0gTlVMTCk7DQorICAgIHZpcnR1YWwgRlhfRklMRVNJWkUJR2V0U2l6ZSgpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCUdldFBvc2l0aW9uKCkgY29uc3Q7DQorICAgIHZpcnR1YWwgRlhfRklMRVNJWkUJU2V0UG9zaXRpb24oRlhfRklMRVNJWkUgcG9zKTsNCisgICAgdmlydHVhbCBzaXplX3QJCVJlYWQodm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyKTsNCisgICAgdmlydHVhbCBzaXplX3QJCVdyaXRlKGNvbnN0IHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlcik7DQorICAgIHZpcnR1YWwgc2l6ZV90CQlSZWFkUG9zKHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlciwgRlhfRklMRVNJWkUgcG9zKTsNCisgICAgdmlydHVhbCBzaXplX3QJCVdyaXRlUG9zKGNvbnN0IHZvaWQqIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlciwgRlhfRklMRVNJWkUgcG9zKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQlGbHVzaCgpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVRydW5jYXRlKEZYX0ZJTEVTSVpFIHN6RmlsZSk7DQorcHJvdGVjdGVkOg0KKyAgICBGWF9JTlQzMgltX25GRDsNCit9Ow0KKyNlbmRpZg0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3dpbmRvd3MuY3BwIGIvY29yZS9zcmMvZnhjcnQvZnhjcnRfd2luZG93cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAzYmZkYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3dpbmRvd3MuY3BwCkBAIC0wLDAgKzEsMjIyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9meGNydC9meF9leHQuaCINCisjaW5jbHVkZSAiZnhjcnRfd2luZG93cy5oIg0KKyNpZiBfRlhNX1BMQVRGT1JNXyA9PSBfRlhNX1BMQVRGT1JNX1dJTkRPV1NfDQorRlhfQk9PTCBGWF9GaWxlX0V4aXN0KEZYX0JTVFIgZmlsZU5hbWUpDQorew0KKyAgICBGWF9EV09SRCBkd0F0dHJpID0gOjpHZXRGaWxlQXR0cmlidXRlc0EoZmlsZU5hbWUuR2V0Q1N0cigpKTsNCisgICAgaWYgKGR3QXR0cmkgPT0gLTEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gKGR3QXR0cmkgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpID09IDA7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9FeGlzdChGWF9XU1RSIGZpbGVOYW1lKQ0KK3sNCisgICAgRlhfRFdPUkQgZHdBdHRyaSA9IDo6R2V0RmlsZUF0dHJpYnV0ZXNXKChMUENXU1RSKWZpbGVOYW1lLkdldFB0cigpKTsNCisgICAgaWYgKGR3QXR0cmkgPT0gLTEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gKGR3QXR0cmkgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpID09IDA7DQorfQ0KK0lGWENSVF9GaWxlQWNjZXNzKiBGWENSVF9GaWxlQWNjZXNzX0NyZWF0ZShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgaWYgKHBBbGxvY2F0b3IpIHsNCisgICAgICAgIHJldHVybiBGWF9OZXdBdEFsbG9jYXRvcihwQWxsb2NhdG9yKSBDRlhDUlRfRmlsZUFjY2Vzc19XaW42NDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiBGWF9ORVcgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfV2luNjQ7DQorICAgIH0NCit9DQordm9pZCBGWENSVF9XaW5kb3dzX0dldEZpbGVNb2RlKEZYX0RXT1JEIGR3TW9kZSwgRlhfRFdPUkQgJmR3QWNjZXNzLCBGWF9EV09SRCAmZHdTaGFyZSwgRlhfRFdPUkQgJmR3Q3JlYXRpb24pDQorew0KKyAgICBkd0FjY2VzcyA9IEdFTkVSSUNfUkVBRDsNCisgICAgZHdTaGFyZSA9IEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEU7DQorICAgIGlmICghKGR3TW9kZSAmIEZYX0ZJTEVNT0RFX1JlYWRPbmx5KSkgew0KKyAgICAgICAgZHdBY2Nlc3MgfD0gR0VORVJJQ19XUklURTsNCisgICAgICAgIGR3Q3JlYXRpb24gPSAoZHdNb2RlICYgRlhfRklMRU1PREVfVHJ1bmNhdGUpID8gQ1JFQVRFX0FMV0FZUyA6IE9QRU5fQUxXQVlTOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZHdDcmVhdGlvbiA9IE9QRU5fRVhJU1RJTkc7DQorICAgIH0NCit9DQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorV0lOQkFTRUFQSSBCT09MIFdJTkFQSSBHZXRGaWxlU2l6ZUV4KEhBTkRMRSBoRmlsZSwgUExBUkdFX0lOVEVHRVIgbHBGaWxlU2l6ZSk7DQorV0lOQkFTRUFQSSBCT09MIFdJTkFQSSBTZXRGaWxlUG9pbnRlckV4KEhBTkRMRSBoRmlsZSwgTEFSR0VfSU5URUdFUiBsaURpc3RhbmNlVG9Nb3ZlLCBQTEFSR0VfSU5URUdFUiBscE5ld0ZpbGVQb2ludGVyLCBEV09SRCBkd01vdmVNZXRob2QpOw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCitDRlhDUlRfRmlsZUFjY2Vzc19XaW42NDo6Q0ZYQ1JUX0ZpbGVBY2Nlc3NfV2luNjQoKQ0KKyAgICA6IG1faEZpbGUoTlVMTCkNCit7DQorfQ0KK0NGWENSVF9GaWxlQWNjZXNzX1dpbjY0Ojp+Q0ZYQ1JUX0ZpbGVBY2Nlc3NfV2luNjQoKQ0KK3sNCisgICAgQ2xvc2UoKTsNCit9DQorRlhfQk9PTCBDRlhDUlRfRmlsZUFjY2Vzc19XaW42NDo6T3BlbihGWF9CU1RSIGZpbGVOYW1lLCBGWF9EV09SRCBkd01vZGUpDQorew0KKyAgICBpZiAobV9oRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3QWNjZXNzLCBkd1NoYXJlLCBkd0NyZWF0aW9uOw0KKyAgICBGWENSVF9XaW5kb3dzX0dldEZpbGVNb2RlKGR3TW9kZSwgZHdBY2Nlc3MsIGR3U2hhcmUsIGR3Q3JlYXRpb24pOw0KKyAgICBtX2hGaWxlID0gOjpDcmVhdGVGaWxlQShmaWxlTmFtZS5HZXRDU3RyKCksIGR3QWNjZXNzLCBkd1NoYXJlLCBOVUxMLCBkd0NyZWF0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIE5VTEwpOw0KKyAgICBpZiAobV9oRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgew0KKyAgICAgICAgbV9oRmlsZSA9IE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIG1faEZpbGUgIT0gTlVMTDsNCit9DQorRlhfQk9PTCBDRlhDUlRfRmlsZUFjY2Vzc19XaW42NDo6T3BlbihGWF9XU1RSIGZpbGVOYW1lLCBGWF9EV09SRCBkd01vZGUpDQorew0KKyAgICBpZiAobV9oRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0RXT1JEIGR3QWNjZXNzLCBkd1NoYXJlLCBkd0NyZWF0aW9uOw0KKyAgICBGWENSVF9XaW5kb3dzX0dldEZpbGVNb2RlKGR3TW9kZSwgZHdBY2Nlc3MsIGR3U2hhcmUsIGR3Q3JlYXRpb24pOw0KKyAgICBtX2hGaWxlID0gOjpDcmVhdGVGaWxlVygoTFBDV1NUUilmaWxlTmFtZS5HZXRQdHIoKSwgZHdBY2Nlc3MsIGR3U2hhcmUsIE5VTEwsIGR3Q3JlYXRpb24sIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgTlVMTCk7DQorICAgIGlmIChtX2hGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7DQorICAgICAgICBtX2hGaWxlID0gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9oRmlsZSAhPSBOVUxMOw0KK30NCit2b2lkIENGWENSVF9GaWxlQWNjZXNzX1dpbjY0OjpDbG9zZSgpDQorew0KKyAgICBpZiAoIW1faEZpbGUpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICA6OkNsb3NlSGFuZGxlKG1faEZpbGUpOw0KKyAgICBtX2hGaWxlID0gTlVMTDsNCit9DQordm9pZCBDRlhDUlRfRmlsZUFjY2Vzc19XaW42NDo6UmVsZWFzZShJRlhfQWxsb2NhdG9yKiBwQWxsb2NhdG9yKQ0KK3sNCisgICAgaWYgKHBBbGxvY2F0b3IpIHsNCisgICAgICAgIEZYX0RlbGV0ZUF0QWxsb2NhdG9yKHRoaXMsIHBBbGxvY2F0b3IsIENGWENSVF9GaWxlQWNjZXNzX1dpbjY0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGRlbGV0ZSB0aGlzOw0KKyAgICB9DQorfQ0KK0ZYX0ZJTEVTSVpFIENGWENSVF9GaWxlQWNjZXNzX1dpbjY0OjpHZXRTaXplKCkgY29uc3QNCit7DQorICAgIGlmICghbV9oRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgTEFSR0VfSU5URUdFUiBzaXplID0gezAsIDB9Ow0KKyAgICBpZiAoITo6R2V0RmlsZVNpemVFeChtX2hGaWxlLCAmc2l6ZSkpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiAoRlhfRklMRVNJWkUpc2l6ZS5RdWFkUGFydDsNCit9DQorRlhfRklMRVNJWkUgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfV2luNjQ6OkdldFBvc2l0aW9uKCkgY29uc3QNCit7DQorICAgIGlmICghbV9oRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIChGWF9GSUxFU0laRSkgLSAxOw0KKyAgICB9DQorICAgIExBUkdFX0lOVEVHRVIgZGlzdCA9IHswLCAwfTsNCisgICAgTEFSR0VfSU5URUdFUiBuZXdQb3MgPSB7MCwgMH07DQorICAgIGlmICghOjpTZXRGaWxlUG9pbnRlckV4KG1faEZpbGUsIGRpc3QsICZuZXdQb3MsIEZJTEVfQ1VSUkVOVCkpIHsNCisgICAgICAgIHJldHVybiAoRlhfRklMRVNJWkUpIC0gMTsNCisgICAgfQ0KKyAgICByZXR1cm4gKEZYX0ZJTEVTSVpFKW5ld1Bvcy5RdWFkUGFydDsNCit9DQorRlhfRklMRVNJWkUgQ0ZYQ1JUX0ZpbGVBY2Nlc3NfV2luNjQ6OlNldFBvc2l0aW9uKEZYX0ZJTEVTSVpFIHBvcykNCit7DQorICAgIGlmICghbV9oRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIChGWF9GSUxFU0laRSkgLSAxOw0KKyAgICB9DQorICAgIExBUkdFX0lOVEVHRVIgZGlzdDsNCisgICAgZGlzdC5RdWFkUGFydCA9IHBvczsNCisgICAgTEFSR0VfSU5URUdFUiBuZXdQb3MgPSB7MCwgMH07DQorICAgIGlmICghOjpTZXRGaWxlUG9pbnRlckV4KG1faEZpbGUsIGRpc3QsICZuZXdQb3MsIEZJTEVfQkVHSU4pKSB7DQorICAgICAgICByZXR1cm4gKEZYX0ZJTEVTSVpFKSAtIDE7DQorICAgIH0NCisgICAgcmV0dXJuIChGWF9GSUxFU0laRSluZXdQb3MuUXVhZFBhcnQ7DQorfQ0KK3NpemVfdCBDRlhDUlRfRmlsZUFjY2Vzc19XaW42NDo6UmVhZCh2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpDQorew0KKyAgICBpZiAoIW1faEZpbGUpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHNpemVfdCBzelJlYWQgPSAwOw0KKyAgICBpZiAoITo6UmVhZEZpbGUobV9oRmlsZSwgcEJ1ZmZlciwgKERXT1JEKXN6QnVmZmVyLCAoTFBEV09SRCkmc3pSZWFkLCBOVUxMKSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIHN6UmVhZDsNCit9DQorc2l6ZV90IENGWENSVF9GaWxlQWNjZXNzX1dpbjY0OjpXcml0ZShjb25zdCB2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpDQorew0KKyAgICBpZiAoIW1faEZpbGUpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHNpemVfdCBzeldyaXRlID0gMDsNCisgICAgaWYgKCE6OldyaXRlRmlsZShtX2hGaWxlLCBwQnVmZmVyLCAoRFdPUkQpc3pCdWZmZXIsIChMUERXT1JEKSZzeldyaXRlLCBOVUxMKSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIHN6V3JpdGU7DQorfQ0KK3NpemVfdCBDRlhDUlRfRmlsZUFjY2Vzc19XaW42NDo6UmVhZFBvcyh2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIsIEZYX0ZJTEVTSVpFIHBvcykNCit7DQorICAgIGlmICghbV9oRmlsZSkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgaWYgKHBvcyA+PSBHZXRTaXplKCkpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChTZXRQb3NpdGlvbihwb3MpID09IChGWF9GSUxFU0laRSkgLSAxKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gUmVhZChwQnVmZmVyLCBzekJ1ZmZlcik7DQorfQ0KK3NpemVfdCBDRlhDUlRfRmlsZUFjY2Vzc19XaW42NDo6V3JpdGVQb3MoY29uc3Qgdm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyLCBGWF9GSUxFU0laRSBwb3MpDQorew0KKyAgICBpZiAoIW1faEZpbGUpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChTZXRQb3NpdGlvbihwb3MpID09IChGWF9GSUxFU0laRSkgLSAxKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gV3JpdGUocEJ1ZmZlciwgc3pCdWZmZXIpOw0KK30NCitGWF9CT09MIENGWENSVF9GaWxlQWNjZXNzX1dpbjY0OjpGbHVzaCgpDQorew0KKyAgICBpZiAoIW1faEZpbGUpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gOjpGbHVzaEZpbGVCdWZmZXJzKG1faEZpbGUpOw0KK30NCitGWF9CT09MIENGWENSVF9GaWxlQWNjZXNzX1dpbjY0OjpUcnVuY2F0ZShGWF9GSUxFU0laRSBzekZpbGUpDQorew0KKyAgICBpZiAoU2V0UG9zaXRpb24oc3pGaWxlKSA9PSAoRlhfRklMRVNJWkUpIC0gMSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiA6OlNldEVuZE9mRmlsZShtX2hGaWxlKTsNCit9DQorRlhfQk9PTCBGWF9GaWxlX0RlbGV0ZShGWF9CU1RSIGZpbGVOYW1lKQ0KK3sNCisgICAgcmV0dXJuIDo6RGVsZXRlRmlsZUEoZmlsZU5hbWUuR2V0Q1N0cigpKTsNCit9DQorRlhfQk9PTCBGWF9GaWxlX0RlbGV0ZShGWF9XU1RSIGZpbGVOYW1lKQ0KK3sNCisgICAgcmV0dXJuIDo6RGVsZXRlRmlsZVcoKExQQ1dTVFIpZmlsZU5hbWUuR2V0UHRyKCkpOw0KK30NCitGWF9CT09MIEZYX0ZpbGVfQ29weShGWF9CU1RSIGZpbGVOYW1lU3JjLCBGWF9CU1RSIGZpbGVOYW1lRHN0KQ0KK3sNCisgICAgcmV0dXJuIDo6Q29weUZpbGVBKGZpbGVOYW1lU3JjLkdldENTdHIoKSwgZmlsZU5hbWVEc3QuR2V0Q1N0cigpLCBGQUxTRSk7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9Db3B5KEZYX1dTVFIgZmlsZU5hbWVTcmMsIEZYX1dTVFIgZmlsZU5hbWVEc3QpDQorew0KKyAgICByZXR1cm4gOjpDb3B5RmlsZVcoKExQQ1dTVFIpZmlsZU5hbWVTcmMuR2V0UHRyKCksIChMUENXU1RSKWZpbGVOYW1lRHN0LkdldFB0cigpLCBGQUxTRSk7DQorfQ0KK0ZYX0JPT0wgRlhfRmlsZV9Nb3ZlKEZYX0JTVFIgZmlsZU5hbWVTcmMsIEZYX0JTVFIgZmlsZU5hbWVEc3QpDQorew0KKyAgICByZXR1cm4gOjpNb3ZlRmlsZUEoZmlsZU5hbWVTcmMuR2V0Q1N0cigpLCBmaWxlTmFtZURzdC5HZXRDU3RyKCkpOw0KK30NCitGWF9CT09MIEZYX0ZpbGVfTW92ZShGWF9XU1RSIGZpbGVOYW1lU3JjLCBGWF9XU1RSIGZpbGVOYW1lRHN0KQ0KK3sNCisgICAgcmV0dXJuIDo6TW92ZUZpbGVXKChMUENXU1RSKWZpbGVOYW1lU3JjLkdldFB0cigpLCAoTFBDV1NUUilmaWxlTmFtZURzdC5HZXRQdHIoKSk7DQorfQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3dpbmRvd3MuaCBiL2NvcmUvc3JjL2Z4Y3J0L2Z4Y3J0X3dpbmRvd3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWI2ODRkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhjcnQvZnhjcnRfd2luZG93cy5oCkBAIC0wLDAgKzEsMzMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYQ1JUX1dJTkRPV1NfDQorI2RlZmluZSBfRlhDUlRfV0lORE9XU18NCisjaW5jbHVkZSAiZXh0ZW5zaW9uLmgiDQorI2lmIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCitjbGFzcyBDRlhDUlRfRmlsZUFjY2Vzc19XaW42NCA6IHB1YmxpYyBJRlhDUlRfRmlsZUFjY2VzcywgcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhDUlRfRmlsZUFjY2Vzc19XaW42NCgpOw0KKyAgICB2aXJ0dWFsIH5DRlhDUlRfRmlsZUFjY2Vzc19XaW42NCgpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCU9wZW4oRlhfQlNUUiBmaWxlTmFtZSwgRlhfRFdPUkQgZHdNb2RlKTsNCisgICAgdmlydHVhbCBGWF9CT09MCQlPcGVuKEZYX1dTVFIgZmlsZU5hbWUsIEZYX0RXT1JEIGR3TW9kZSk7DQorICAgIHZpcnR1YWwgdm9pZAkJQ2xvc2UoKTsNCisgICAgdmlydHVhbCB2b2lkCQlSZWxlYXNlKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKTsNCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQlHZXRTaXplKCkgY29uc3Q7DQorICAgIHZpcnR1YWwgRlhfRklMRVNJWkUJR2V0UG9zaXRpb24oKSBjb25zdDsNCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQlTZXRQb3NpdGlvbihGWF9GSUxFU0laRSBwb3MpOw0KKyAgICB2aXJ0dWFsIHNpemVfdAkJUmVhZCh2b2lkKiBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIpOw0KKyAgICB2aXJ0dWFsIHNpemVfdAkJV3JpdGUoY29uc3Qgdm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyKTsNCisgICAgdmlydHVhbCBzaXplX3QJCVJlYWRQb3Modm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyLCBGWF9GSUxFU0laRSBwb3MpOw0KKyAgICB2aXJ0dWFsIHNpemVfdAkJV3JpdGVQb3MoY29uc3Qgdm9pZCogcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyLCBGWF9GSUxFU0laRSBwb3MpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUZsdXNoKCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJVHJ1bmNhdGUoRlhfRklMRVNJWkUgc3pGaWxlKTsNCitwcm90ZWN0ZWQ6DQorICAgIEZYX0xQVk9JRAltX2hGaWxlOw0KK307DQorI2VuZGlmDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvbWVtX2ludC5oIGIvY29yZS9zcmMvZnhjcnQvbWVtX2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNDMwMjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC9tZW1faW50LmgKQEAgLTAsMCArMSwyMzIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYTV9NRU1fSU5UX0hfDQorI2RlZmluZSBfRlhNX01FTV9JTlRfSF8NCitzdHJ1Y3QgRlhfRGVmQWxsb2NhdG9yIHsNCisgICAgSUZYX0FsbG9jYXRvcgkJCW1fQWxsb2NhdG9yOw0KKyAgICBzdHJ1Y3QgQ0ZYX01lbW9yeU1ncioJbV9wRm94aXRNZ3I7DQorfTsNCitzdHJ1Y3QgQ0ZYX01lbW9yeU1nciB7DQorcHVibGljOg0KKyAgICBGWE1FTV9TeXN0ZW1NZ3IqCW1fcFN5c3RlbU1ncjsNCisgICAgRlhfRGVmQWxsb2NhdG9yCQltX0RlZkFsbG9jYXRvcjsNCisgICAgRlhfTFBWT0lECQkJbV9wRXh0ZXJuYWxNZW1vcnk7DQorICAgIEZYX0JPT0wJCQkJbV9iUmVsZWFzZU1ncjsNCisgICAgdm9pZAkJCUluaXQoRlhNRU1fU3lzdGVtTWdyKiBwU3lzdGVtTWdyKTsNCisgICAgdm9pZCoJCQlBbGxvYyhzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKTsNCisgICAgdm9pZCoJCQlBbGxvY0RlYnVnKHNpemVfdCBzaXplLCBpbnQgZmxhZ3MsIEZYX0xQQ1NUUiBmaWxlLCBpbnQgbGluZSk7DQorICAgIHZvaWQqCQkJUmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKTsNCisgICAgdm9pZCoJCQlSZWFsbG9jRGVidWcodm9pZCogcCwgc2l6ZV90IHNpemUsIGludCBmbGFncywgRlhfTFBDU1RSIGZpbGUsIGludCBsaW5lKTsNCisgICAgdm9pZAkJCUZyZWUodm9pZCogcCwgaW50IGZsYWdzKTsNCisgICAgdm9pZAkJCVB1cmdlTWdyKCk7DQorfTsNCitleHRlcm4gQ0ZYX01lbW9yeU1nciogZ19wRGVmRm94aXRNZ3I7DQorI2RlZmluZSBGSVhFRE1FTV9QQUdFX0VYVFJBU1BBQ0UJCXNpemVvZihzaXplX3QpDQorI2RlZmluZSBGSVhFRE1FTV9CTE9DS05VTShicykJCQkoOCAqIChGWF9GSVhFRE1FTV9QQUdFU0laRSAtIEZJWEVETUVNX1BBR0VfRVhUUkFTUEFDRSkgLyAoOCAqIGJzICsgMSkpDQorI2RlZmluZSBGSVhFRE1FTV84QllURVNfQkxPQ0tOVU0JCUZJWEVETUVNX0JMT0NLTlVNKDgpDQorI2RlZmluZSBGSVhFRE1FTV8xNkJZVEVTX0JMT0NLTlVNCQlGSVhFRE1FTV9CTE9DS05VTSgxNikNCisjZGVmaW5lIEZJWEVETUVNXzMyQllURVNfQkxPQ0tOVU0JCUZJWEVETUVNX0JMT0NLTlVNKDMyKQ0KK2V4dGVybiBjb25zdCBGWF9CWVRFIFplcm9MZWFkUG9zWzI1Nl07DQorZXh0ZXJuIGNvbnN0IEZYX0JZVEUgT25lTGVhZFBvc1syNTZdOw0KK3RlbXBsYXRlIDxzaXplX3QgYmxvY2tOdW0sIHNpemVfdCBibG9ja1NpemU+DQorY2xhc3MgQ0ZYTUVNX0ZpeGVkUGFnZQ0KK3sNCitwdWJsaWM6DQorICAgIHZvaWQJCUluaXRpYWxpemUoKQ0KKyAgICB7DQorICAgICAgICBtX25BdmFpbENvdW50ID0gYmxvY2tOdW07DQorICAgICAgICBGWFNZU19tZW1zZXQzMihtX0J1c3lNYXAsIDAsIChibG9ja051bSArIDcpIC8gOCk7DQorICAgIH0NCisgICAgRlhfQk9PTAkJSGFzRnJlZUJsb2NrKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChGWF9CT09MKW1fbkF2YWlsQ291bnQ7DQorICAgIH0NCisgICAgRlhfTFBWT0lECUFsbG9jKHNpemVfdCBzaXplKQ0KKyAgICB7DQorICAgICAgICBGWFNZU19hc3NlcnQobV9uQXZhaWxDb3VudCk7DQorICAgICAgICBGWF9MUERXT1JEIHBGaW5kID0gKEZYX0xQRFdPUkQpbV9CdXN5TWFwOw0KKyAgICAgICAgc2l6ZV90IGkgPSAwOw0KKyAgICAgICAgd2hpbGUgKGkgPCAoYmxvY2tOdW0gKyA3KSAvIDggLyA0ICYmIHBGaW5kW2ldID09IDB4RkZGRkZGRkYpIHsNCisgICAgICAgICAgICBpICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaSAqPSA0Ow0KKyAgICAgICAgd2hpbGUgKG1fQnVzeU1hcFtpXSA9PSAweEZGKSB7DQorICAgICAgICAgICAgaSArKzsNCisgICAgICAgIH0NCisgICAgICAgIHNpemVfdCBwb3MgPSBaZXJvTGVhZFBvc1ttX0J1c3lNYXBbaV1dOw0KKyAgICAgICAgbV9CdXN5TWFwW2ldIHw9IDEgPDwgKDcgLSBwb3MpOw0KKyAgICAgICAgbV9uQXZhaWxDb3VudCAtLTsNCisgICAgICAgIHJldHVybiAoRlhfTFBCWVRFKSh0aGlzICsgMSkgKyAoaSAqIDggKyBwb3MpICogYmxvY2tTaXplOw0KKyAgICB9DQorICAgIHZvaWQJCUZyZWUoRlhfTFBWT0lEIHApDQorICAgIHsNCisgICAgICAgIEZYU1lTX2Fzc2VydChwID4gKEZYX0xQVk9JRCl0aGlzICYmIHAgPCAoRlhfTFBWT0lEKSgoRlhfTFBCWVRFKXRoaXMgKyBGWF9GSVhFRE1FTV9QQUdFU0laRSkpOw0KKyAgICAgICAgc2l6ZV90IHBvcyA9ICgoRlhfTFBCWVRFKXAgLSAoRlhfTFBCWVRFKSh0aGlzICsgMSkpIC8gYmxvY2tTaXplOw0KKyAgICAgICAgbV9CdXN5TWFwW3BvcyAvIDhdICY9IH4oMSA8PCAoNyAtIChwb3MgJSA4KSkpOw0KKyAgICAgICAgbV9uQXZhaWxDb3VudCArKzsNCisgICAgfQ0KKyAgICB2b2xhdGlsZSBzaXplX3QJbV9uQXZhaWxDb3VudDsNCisgICAgRlhfQllURQkJCW1fQnVzeU1hcFsoYmxvY2tOdW0gKyA3KSAvIDhdOw0KK307DQordHlwZWRlZiBDRlhNRU1fRml4ZWRQYWdlPEZJWEVETUVNXzhCWVRFU19CTE9DS05VTSwgOD4JQ0ZYTUVNXzhCeXRlc1BhZ2U7DQordHlwZWRlZiBDRlhNRU1fRml4ZWRQYWdlPEZJWEVETUVNXzE2QllURVNfQkxPQ0tOVU0sIDE2PglDRlhNRU1fMTZCeXRlc1BhZ2U7DQordHlwZWRlZiBDRlhNRU1fRml4ZWRQYWdlPEZJWEVETUVNXzMyQllURVNfQkxPQ0tOVU0sIDMyPglDRlhNRU1fMzJCeXRlc1BhZ2U7DQordGVtcGxhdGUgPHNpemVfdCBibG9ja051bSwgc2l6ZV90IGJsb2NrU2l6ZT4NCitjbGFzcyBDRlhNRU1fRml4ZWRQYWdlcw0KK3sNCitwdWJsaWM6DQorICAgIHR5cGVkZWYgQ0ZYTUVNX0ZpeGVkUGFnZTxibG9ja051bSwgYmxvY2tTaXplPiBUOw0KKyAgICBGWF9MUEJZVEUJCW1fcFN0YXJ0UGFnZTsNCisgICAgRlhfTFBCWVRFCQltX3BMaW1pdFBvczsNCisgICAgRlhfTFBCWVRFCQltX3BDdXJQYWdlOw0KKyAgICB2b2xhdGlsZSBzaXplX3QJbV9uQXZhaWxCbG9ja3M7DQorICAgIHZvaWQJCUluaXRpYWxpemUoRlhfTFBCWVRFIHBTdGFydCwgc2l6ZV90IHBhZ2VzKQ0KKyAgICB7DQorICAgICAgICBtX3BTdGFydFBhZ2UgPSBtX3BDdXJQYWdlID0gcFN0YXJ0Ow0KKyAgICAgICAgbV9uQXZhaWxCbG9ja3MgPSBwYWdlcyAqIGJsb2NrTnVtOw0KKyAgICAgICAgZm9yIChzaXplX3QgbiA9IDA7IG4gPCBwYWdlczsgbiArKykgew0KKyAgICAgICAgICAgICgoVCopcFN0YXJ0KS0+SW5pdGlhbGl6ZSgpOw0KKyAgICAgICAgICAgIHBTdGFydCArPSBGWF9GSVhFRE1FTV9QQUdFU0laRTsNCisgICAgICAgIH0NCisgICAgICAgIG1fcExpbWl0UG9zID0gcFN0YXJ0Ow0KKyAgICB9DQorICAgIEZYX0JPT0wJCUlzRW1wdHkoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uQXZhaWxCbG9ja3MgPT0gKG1fcExpbWl0UG9zIC0gbV9wU3RhcnRQYWdlKSAvIEZYX0ZJWEVETUVNX1BBR0VTSVpFICogYmxvY2tOdW07DQorICAgIH0NCisgICAgRlhfQk9PTAkJSGFzRnJlZUJsb2NrKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChGWF9CT09MKW1fbkF2YWlsQmxvY2tzOw0KKyAgICB9DQorICAgIEZYX0xQVk9JRAlBbGxvYyhzaXplX3Qgc2l6ZSkNCisgICAgew0KKyAgICAgICAgRlhTWVNfYXNzZXJ0KG1fbkF2YWlsQmxvY2tzKTsNCisgICAgICAgIGRvIHsNCisgICAgICAgICAgICBpZiAoKChUKiltX3BDdXJQYWdlKS0+SGFzRnJlZUJsb2NrKCkpIHsNCisgICAgICAgICAgICAgICAgbV9uQXZhaWxCbG9ja3MgLS07DQorICAgICAgICAgICAgICAgIHJldHVybiAoKFQqKW1fcEN1clBhZ2UpLT5BbGxvYyhzaXplKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wQ3VyUGFnZSArPSBGWF9GSVhFRE1FTV9QQUdFU0laRTsNCisgICAgICAgICAgICBpZiAobV9wQ3VyUGFnZSA9PSBtX3BMaW1pdFBvcykgew0KKyAgICAgICAgICAgICAgICBtX3BDdXJQYWdlID0gbV9wU3RhcnRQYWdlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gd2hpbGUgKFRSVUUpOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgdm9pZAkJRnJlZShGWF9MUFZPSUQgcCkNCisgICAgew0KKyAgICAgICAgRlhTWVNfYXNzZXJ0KHAgPiAoRlhfTFBWT0lEKW1fcFN0YXJ0UGFnZSAmJiBwIDwgKEZYX0xQVk9JRCltX3BMaW1pdFBvcyk7DQorICAgICAgICAoKFQqKShtX3BTdGFydFBhZ2UgKyAoKEZYX0xQQllURSlwIC0gbV9wU3RhcnRQYWdlKSAvIEZYX0ZJWEVETUVNX1BBR0VTSVpFICogRlhfRklYRURNRU1fUEFHRVNJWkUpKS0+RnJlZShwKTsNCisgICAgICAgIG1fbkF2YWlsQmxvY2tzICsrOw0KKyAgICB9DQorfTsNCit0eXBlZGVmIENGWE1FTV9GaXhlZFBhZ2VzPEZJWEVETUVNXzhCWVRFU19CTE9DS05VTSwgOD4JCUNGWE1FTV84Qnl0ZXNQYWdlczsNCit0eXBlZGVmIENGWE1FTV9GaXhlZFBhZ2VzPEZJWEVETUVNXzE2QllURVNfQkxPQ0tOVU0sIDE2PglDRlhNRU1fMTZCeXRlc1BhZ2VzOw0KK3R5cGVkZWYgQ0ZYTUVNX0ZpeGVkUGFnZXM8RklYRURNRU1fMzJCWVRFU19CTE9DS05VTSwgMzI+CUNGWE1FTV8zMkJ5dGVzUGFnZXM7DQorY2xhc3MgQ0ZYTUVNX0Jsb2NrDQorew0KK3B1YmxpYzoNCisgICAgc2l6ZV90CQkJbV9uQmxvY2tTaXplOw0KKyAgICBDRlhNRU1fQmxvY2sqCW1fcE5leHRCbG9jazsNCit9Ow0KK2NsYXNzIENGWE1FTV9QYWdlDQorew0KK3B1YmxpYzoNCisgICAgc2l6ZV90CQkJbV9uQXZhaWxTaXplOw0KKyAgICBDRlhNRU1fQmxvY2sqCW1fcExpbWl0UG9zOw0KKyAgICBDRlhNRU1fQmxvY2sJbV9BdmFpbEhlYWQ7DQorICAgIHZvaWQJCUluaXRpYWxpemUoc2l6ZV90IHNpemUpOw0KKyAgICBGWF9CT09MCQlJc0VtcHR5KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fQXZhaWxIZWFkLm1fcE5leHRCbG9jayAmJiBtX0F2YWlsSGVhZC5tX25CbG9ja1NpemUgPT0gbV9BdmFpbEhlYWQubV9wTmV4dEJsb2NrLT5tX25CbG9ja1NpemU7DQorICAgIH0NCisgICAgRlhfTFBWT0lECUFsbG9jKHNpemVfdCBzaXplKTsNCisgICAgRlhfTFBWT0lECVJlYWxsb2MoRlhfTFBWT0lEIHAsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7DQorICAgIHZvaWQJCUZyZWUoRlhfTFBWT0lEIHApOw0KK3Byb3RlY3RlZDoNCisgICAgRlhfTFBWT0lECUFsbG9jKENGWE1FTV9CbG9jayogcFByZXZCbG9jaywgQ0ZYTUVNX0Jsb2NrKiBwTmV4dEJsb2NrLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9sZHNpemUpOw0KK307DQorY2xhc3MgQ0ZYTUVNX1BhZ2VzDQorew0KK3B1YmxpYzoNCisgICAgQ0ZYTUVNX1BhZ2UqCW1fcFN0YXJ0UGFnZTsNCisgICAgQ0ZYTUVNX1BhZ2UqCW1fcExpbWl0UG9zOw0KKyAgICBDRlhNRU1fUGFnZSoJbV9wQ3VyUGFnZTsNCisgICAgc2l6ZV90CQkJbV9uUGFnZVNpemU7DQorICAgIHZvaWQJCUluaXRpYWxpemUoRlhfTFBCWVRFIHBTdGFydCwgc2l6ZV90IHBhZ2VTaXplLCBzaXplX3QgcGFnZXMpOw0KKyAgICBGWF9CT09MCQlJc0VtcHR5KCkgY29uc3Q7DQorICAgIEZYX0xQVk9JRAlBbGxvYyhzaXplX3Qgc2l6ZSk7DQorICAgIEZYX0xQVk9JRAlSZWFsbG9jKEZYX0xQVk9JRCBwLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOw0KKyAgICB2b2lkCQlGcmVlKEZYX0xQVk9JRCBwKTsNCit9Ow0KK2NsYXNzIENGWE1FTV9Qb29sDQorew0KK3B1YmxpYzoNCisgICAgQ0ZYTUVNX1Bvb2wqCQkJbV9wUHJldlBvb2w7DQorICAgIENGWE1FTV9Qb29sKgkJCW1fcE5leHRQb29sOw0KKyAgICBDRlhNRU1fOEJ5dGVzUGFnZXMJCW1fOEJ5dGVzUGFnZXM7DQorICAgIENGWE1FTV8xNkJ5dGVzUGFnZXMJCW1fMTZCeXRlc1BhZ2VzOw0KKyAgICBDRlhNRU1fMzJCeXRlc1BhZ2VzCQltXzMyQnl0ZXNQYWdlczsNCisgICAgQ0ZYTUVNX1BhZ2VzCQkJbV9NaWRQYWdlczsNCisgICAgRlhfQk9PTAkJCQkJbV9iQWxvbmU7DQorICAgIEZYX0RXT1JECQkJCW1fZHdSZXNlcnZlZFszXTsNCisgICAgRlhfTFBWT0lECQkJCW1fcExpbWl0UG9zOw0KKyAgICBDRlhNRU1fUGFnZSoJCQltX3BMYXJnZVBhZ2U7DQorICAgIHZvaWQJCUluaXRpYWxpemUoY29uc3QgRlhfTUVNQ09ORklHKiBwTWVtQ29uZmlnLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IHBhZ2VOdW04Qnl0ZXMsIHNpemVfdCBwYWdlTnVtMTZCeXRlcywgc2l6ZV90IHBhZ2VOdW0zMkJ5dGVzLCBzaXplX3QgcGFnZU51bU1pZCk7DQorICAgIEZYX0JPT0wJCUlzRW1wdHkoKSBjb25zdDsNCisgICAgc2l6ZV90CQlHZXRTaXplKEZYX0xQVk9JRCBwKSBjb25zdDsNCisgICAgRlhfTFBWT0lECVJlYWxsb2MoRlhfTFBWT0lEIHAsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7DQorICAgIHZvaWQJCUZyZWUoRlhfTFBWT0lEIHApOw0KK307DQorY2xhc3MgQ0ZYTUVNX0ZpeGVkTWdyDQorew0KK3B1YmxpYzoNCisgICAgdm9pZAkJCUluaXRpYWxpemUoc2l6ZV90IHNpemUpOw0KKyAgICBGWF9MUFZPSUQJCUFsbG9jKHNpemVfdCBzaXplKTsNCisgICAgRlhfTFBWT0lECQlSZWFsbG9jKEZYX0xQVk9JRCBwLCBzaXplX3QgbmV3U2l6ZSk7DQorICAgIHZvaWQJCQlGcmVlKEZYX0xQVk9JRCBwKTsNCisgICAgdm9pZAkJCUZyZWVBbGwoKTsNCisgICAgdm9pZAkJCVB1cmdlKCk7DQorICAgIENGWE1FTV9Qb29sKglHZXRGaXJzdFBvb2woKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gJm1fRmlyc3RQb29sOw0KKyAgICB9DQorICAgIHNpemVfdAkJCUdldFNpemUoRlhfTFBWT0lEIHApIGNvbnN0Ow0KKyAgICBGWE1FTV9TeXN0ZW1NZ3IJCW1fU3lzdGVtTWdyOw0KKyAgICBGWE1FTV9TeXN0ZW1NZ3IyKgltX3BFeHRlbmRlcjsNCisgICAgRlhfTFBWT0lECQkJbV9wUmVzZXJ2ZWQ7DQorICAgIEZYX01FTUNPTkZJRwkJbV9NZW1Db25maWc7DQorcHJvdGVjdGVkOg0KKyAgICBGWF9MUFZPSUQJCUFsbG9jMTYoQ0ZYTUVNX1Bvb2wgKipwcDMyUG9vbCA9IE5VTEwsIHNpemVfdCBzaXplID0gMCk7DQorICAgIEZYX0xQVk9JRAkJQWxsb2MzMihzaXplX3Qgc2l6ZSk7DQorICAgIEZYX0xQVk9JRAkJQWxsb2NTbWFsbChzaXplX3Qgc2l6ZSk7DQorICAgIEZYX0xQVk9JRAkJQWxsb2NNaWQoc2l6ZV90IHNpemUpOw0KKyAgICBGWF9MUFZPSUQJCUFsbG9jTGFyZ2Uoc2l6ZV90IHNpemUpOw0KKyAgICBGWF9MUFZPSUQJCVJlYWxsb2NTbWFsbChDRlhNRU1fUG9vbCogcFBvb2wsIEZYX0xQVk9JRCBwLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOw0KKyAgICB2b2lkCQkJRnJlZVBvb2woQ0ZYTUVNX1Bvb2wqIHBQb29sKTsNCisgICAgQ0ZYTUVNX1Bvb2wJCW1fRmlyc3RQb29sOw0KK307DQorI2RlZmluZSBGSVhFRE1FTV9QUk9YWVNJWkVfMAkoMTAyNCAqIDEwMjQgKiA4KQ0KKyNkZWZpbmUgRklYRURNRU1fUFJPWFlTSVpFXzEJKDEwMjQgKiAxMDI0ICogMTYpDQorI2RlZmluZSBGSVhFRE1FTV9QUk9YWVNJWkVfMgkoMTAyNCAqIDEwMjQgKiAzMikNCisjZGVmaW5lIEZJWEVETUVNX1BST1hZU0laRV8zCSgxMDI0ICogMTAyNCAqIDY0KQ0KKyNkZWZpbmUgRklYRURNRU1fUFJPWFlTSVpFXzQJKDEwMjQgKiAxMDI0ICogMTI4KQ0KKyNkZWZpbmUgRklYRURNRU1fUFJPWFlTSVpFXzUJKDEwMjQgKiAxMDI0ICogMjU2KQ0KK2NvbnN0IEZYX01FTUNPTkZJRyoJRml4ZWRNZ3JfR2V0Q29uZmlnKHNpemVfdCBuU2l6ZSk7DQorY2xhc3MgQ0ZpeGVkTWdyX1Byb3h5DQorew0KK3B1YmxpYzoNCisgICAgRlhNRU1fRm94aXRNZ3IqCUluaXRpYWxpemUoRlhfTFBWT0lEIHBCdWZmZXIsIHNpemVfdCBuU2l6ZSwgRlhfQk9PTCBiRXh0ZW5zaWJsZSk7DQorICAgIHN0YXRpYyBGWF9CT09MCUNvbW1vbl9Nb3JlKEZYTUVNX1N5c3RlbU1ncjIqIHBNZ3IsIHNpemVfdCBhbGxvY19zaXplLCB2b2lkKiogbmV3X21lbW9yeSwgc2l6ZV90KiBuZXdfc2l6ZSk7DQorICAgIHN0YXRpYyB2b2lkCQlDb21tb25fRnJlZShGWE1FTV9TeXN0ZW1NZ3IyKiBwTWdyLCB2b2lkKiBtZW1vcnkpOw0KKyAgICBGWE1FTV9TeXN0ZW1NZ3IyCW1fU3lzdGVtTWdyOw0KKyAgICBDRlhNRU1fUGFnZSoJCW1fcEZpeGVkUGFnZTsNCisgICAgRlhfTFBWT0lECQkJbV9wQnVmZmVyOw0KKyAgICBzaXplX3QJCQkJbV9uU2l6ZTsNCisgICAgRlhfQk9PTAkJCQltX2JFeHRlbnNpYmxlOw0KK307DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQvcGxleC5oIGIvY29yZS9zcmMvZnhjcnQvcGxleC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYTI3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC9wbGV4LmgKQEAgLTAsMCArMSwxNSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorc3RydWN0IENGWF9QbGV4IHsNCisgICAgQ0ZYX1BsZXgqIHBOZXh0Ow0KKyAgICB2b2lkKiBkYXRhKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHRoaXMgKyAxOw0KKyAgICB9DQorICAgIHN0YXRpYyBDRlhfUGxleCogQ3JlYXRlKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IsIENGWF9QbGV4KiYgaGVhZCwgRlhfRFdPUkQgbk1heCwgRlhfRFdPUkQgY2JFbGVtZW50KTsNCisgICAgdm9pZCBGcmVlRGF0YUNoYWluKElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IpOw0KK307DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhjcnQveG1sX2ludC5oIGIvY29yZS9zcmMvZnhjcnQveG1sX2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZDhlZjQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGNydC94bWxfaW50LmgKQEAgLTAsMCArMSwxNzggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0ZYQ1JUX1hNTF9JTlRfDQorI2RlZmluZSBfRlhDUlRfWE1MX0lOVF8NCitjbGFzcyBDWE1MX0RhdGFCdWZBY2MgOiBwdWJsaWMgSUZYX0J1ZmZlclJlYWQsIHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1hNTF9EYXRhQnVmQWNjKEZYX0xQQ0JZVEUgcEJ1ZmZlciwgc2l6ZV90IHNpemUsIElGWF9BbGxvY2F0b3IqIHBBbGxvY2F0b3IgPSBOVUxMKQ0KKyAgICAgICAgOiBtX3BBbGxvY2F0b3IocEFsbG9jYXRvcikNCisgICAgICAgICwgbV9wQnVmZmVyKHBCdWZmZXIpDQorICAgICAgICAsIG1fZHdTaXplKHNpemUpDQorICAgICAgICAsIG1fZHdDdXJQb3MoMCkNCisgICAgew0KKyAgICB9DQorICAgIHZpcnR1YWwgfkNYTUxfRGF0YUJ1ZkFjYygpIHt9DQorICAgIHZpcnR1YWwgdm9pZAkJCVJlbGVhc2UoKQ0KKyAgICB7DQorICAgICAgICBpZiAobV9wQWxsb2NhdG9yKSB7DQorICAgICAgICAgICAgRlhfRGVsZXRlQXRBbGxvY2F0b3IodGhpcywgbV9wQWxsb2NhdG9yLCBDWE1MX0RhdGFCdWZBY2MpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBkZWxldGUgdGhpczsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc0VPRigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2R3Q3VyUG9zID49IG1fZHdTaXplOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfRklMRVNJWkUJCUdldFBvc2l0aW9uKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChGWF9GSUxFU0laRSltX2R3Q3VyUG9zOw0KKyAgICB9DQorICAgIHZpcnR1YWwgc2l6ZV90CQkJUmVhZEJsb2NrKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IHNpemUpDQorICAgIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCVJlYWROZXh0QmxvY2soRlhfQk9PTCBiUmVzdGFydCA9IEZBTFNFKQ0KKyAgICB7DQorICAgICAgICBpZiAoYlJlc3RhcnQpIHsNCisgICAgICAgICAgICBtX2R3Q3VyUG9zID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX2R3Q3VyUG9zIDwgbV9kd1NpemUpIHsNCisgICAgICAgICAgICBtX2R3Q3VyUG9zID0gbV9kd1NpemU7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9MUENCWVRFCQlHZXRCbG9ja0J1ZmZlcigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX3BCdWZmZXI7DQorICAgIH0NCisgICAgdmlydHVhbCBzaXplX3QJCQlHZXRCbG9ja1NpemUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9kd1NpemU7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQkJR2V0QmxvY2tPZmZzZXQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisgICAgSUZYX0FsbG9jYXRvcioJbV9wQWxsb2NhdG9yOw0KKyAgICBGWF9MUENCWVRFCQltX3BCdWZmZXI7DQorICAgIHNpemVfdAkJCW1fZHdTaXplOw0KKyAgICBzaXplX3QJCQltX2R3Q3VyUG9zOw0KK307DQorI2RlZmluZSBGWF9YTUxEQVRBU1RSRUFNX0J1ZmZlclNpemUJCSgzMiAqIDEwMjQpDQorY2xhc3MgQ1hNTF9EYXRhU3RtQWNjIDogcHVibGljIElGWF9CdWZmZXJSZWFkLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENYTUxfRGF0YVN0bUFjYyhJRlhfRmlsZVJlYWQgKnBGaWxlUmVhZCwgSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpDQorICAgICAgICA6IG1fcEFsbG9jYXRvcihwQWxsb2NhdG9yKQ0KKyAgICAgICAgLCBtX3BGaWxlUmVhZChwRmlsZVJlYWQpDQorICAgICAgICAsIG1fcEJ1ZmZlcihOVUxMKQ0KKyAgICAgICAgLCBtX25TdGFydCgwKQ0KKyAgICAgICAgLCBtX2R3U2l6ZSgwKQ0KKyAgICB7DQorICAgICAgICBGWFNZU19hc3NlcnQobV9wRmlsZVJlYWQgIT0gTlVMTCk7DQorICAgIH0NCisgICAgdmlydHVhbCB+Q1hNTF9EYXRhU3RtQWNjKCkNCisgICAgew0KKyAgICAgICAgaWYgKG1fcEJ1ZmZlcikgew0KKyAgICAgICAgICAgIEZYX0FsbG9jYXRvcl9GcmVlKG1fcEFsbG9jYXRvciwgbV9wQnVmZmVyKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQJCQlSZWxlYXNlKCkNCisgICAgew0KKyAgICAgICAgaWYgKG1fcEFsbG9jYXRvcikgew0KKyAgICAgICAgICAgIEZYX0RlbGV0ZUF0QWxsb2NhdG9yKHRoaXMsIG1fcEFsbG9jYXRvciwgQ1hNTF9EYXRhU3RtQWNjKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZGVsZXRlIHRoaXM7DQorICAgICAgICB9DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9CT09MCQkJSXNFT0YoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9uU3RhcnQgKyAoRlhfRklMRVNJWkUpbV9kd1NpemUgPj0gbV9wRmlsZVJlYWQtPkdldFNpemUoKTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCQlHZXRQb3NpdGlvbigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25TdGFydCArIChGWF9GSUxFU0laRSltX2R3U2l6ZTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHNpemVfdAkJCVJlYWRCbG9jayh2b2lkKiBidWZmZXIsIHNpemVfdCBzaXplKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlSZWFkTmV4dEJsb2NrKEZYX0JPT0wgYlJlc3RhcnQgPSBGQUxTRSkNCisgICAgew0KKyAgICAgICAgaWYgKGJSZXN0YXJ0KSB7DQorICAgICAgICAgICAgbV9uU3RhcnQgPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRklMRVNJWkUgbkxlbmd0aCA9IG1fcEZpbGVSZWFkLT5HZXRTaXplKCk7DQorICAgICAgICBtX25TdGFydCArPSAoRlhfRklMRVNJWkUpbV9kd1NpemU7DQorICAgICAgICBpZiAobV9uU3RhcnQgPj0gbkxlbmd0aCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIG1fZHdTaXplID0gKHNpemVfdClGWF9NSU4oRlhfWE1MREFUQVNUUkVBTV9CdWZmZXJTaXplLCBuTGVuZ3RoIC0gbV9uU3RhcnQpOw0KKyAgICAgICAgaWYgKCFtX3BCdWZmZXIpIHsNCisgICAgICAgICAgICBtX3BCdWZmZXIgPSBGWF9BbGxvY2F0b3JfQWxsb2MobV9wQWxsb2NhdG9yLCBGWF9CWVRFLCBtX2R3U2l6ZSk7DQorICAgICAgICAgICAgaWYgKCFtX3BCdWZmZXIpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBtX3BGaWxlUmVhZC0+UmVhZEJsb2NrKG1fcEJ1ZmZlciwgbV9uU3RhcnQsIG1fZHdTaXplKTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0xQQ0JZVEUJCUdldEJsb2NrQnVmZmVyKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChGWF9MUENCWVRFKW1fcEJ1ZmZlcjsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHNpemVfdAkJCUdldEJsb2NrU2l6ZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2R3U2l6ZTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCQlHZXRCbG9ja09mZnNldCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBtX25TdGFydDsNCisgICAgfQ0KK3Byb3RlY3RlZDoNCisgICAgSUZYX0FsbG9jYXRvcioJbV9wQWxsb2NhdG9yOw0KKyAgICBJRlhfRmlsZVJlYWQJKm1fcEZpbGVSZWFkOw0KKyAgICBGWF9MUEJZVEUJCW1fcEJ1ZmZlcjsNCisgICAgRlhfRklMRVNJWkUJCW1fblN0YXJ0Ow0KKyAgICBzaXplX3QJCQltX2R3U2l6ZTsNCit9Ow0KK2NsYXNzIENYTUxfUGFyc2VyDQorew0KK3B1YmxpYzoNCisgICAgQ1hNTF9QYXJzZXIoSUZYX0FsbG9jYXRvciogcEFsbG9jYXRvciA9IE5VTEwpIDogbV9wQWxsb2NhdG9yKHBBbGxvY2F0b3IpIHt9DQorICAgIH5DWE1MX1BhcnNlcigpOw0KKyAgICBJRlhfQWxsb2NhdG9yKgltX3BBbGxvY2F0b3I7DQorICAgIElGWF9CdWZmZXJSZWFkKgltX3BEYXRhQWNjOw0KKyAgICBGWF9CT09MCQkJbV9iT3duZWRTdHJlYW07DQorICAgIEZYX0ZJTEVTSVpFCQltX25PZmZzZXQ7DQorICAgIEZYX0JPT0wJCQltX2JTYXZlU3BhY2VDaGFyczsNCisgICAgRlhfTFBDQllURQkJbV9wQnVmZmVyOw0KKyAgICBzaXplX3QJCQltX2R3QnVmZmVyU2l6ZTsNCisgICAgRlhfRklMRVNJWkUJCW1fbkJ1ZmZlck9mZnNldDsNCisgICAgc2l6ZV90CQkJbV9kd0luZGV4Ow0KKyAgICBGWF9CT09MCQkJSW5pdChGWF9MUEJZVEUgcEJ1ZmZlciwgc2l6ZV90IHNpemUpOw0KKyAgICBGWF9CT09MCQkJSW5pdChJRlhfRmlsZVJlYWQgKnBGaWxlUmVhZCk7DQorICAgIEZYX0JPT0wJCQlJbml0KElGWF9CdWZmZXJSZWFkICpwQnVmZmVyKTsNCisgICAgRlhfQk9PTAkJCUluaXQoRlhfQk9PTCBiT3duZGVkU3RyZWFtKTsNCisgICAgRlhfQk9PTAkJCVJlYWROZXh0QmxvY2soKTsNCisgICAgRlhfQk9PTAkJCUlzRU9GKCk7DQorICAgIEZYX0JPT0wJCQlIYXZlQXZhaWxEYXRhKCk7DQorICAgIHZvaWQJCQlTa2lwV2hpdGVTcGFjZXMoKTsNCisgICAgdm9pZAkJCUdldE5hbWUoQ0ZYX0J5dGVTdHJpbmdMICZzcGFjZSwgQ0ZYX0J5dGVTdHJpbmdMICZuYW1lKTsNCisgICAgdm9pZAkJCUdldEF0dHJWYWx1ZShDRlhfV2lkZVN0cmluZ0wgJnZhbHVlKTsNCisgICAgRlhfRFdPUkQJCUdldENoYXJSZWYoKTsNCisgICAgdm9pZAkJCUdldFRhZ05hbWUoQ0ZYX0J5dGVTdHJpbmdMICZzcGFjZSwgQ0ZYX0J5dGVTdHJpbmdMICZuYW1lLCBGWF9CT09MICZiRW5kVGFnLCBGWF9CT09MIGJTdGFydFRhZyA9IEZBTFNFKTsNCisgICAgdm9pZAkJCVNraXBMaXRlcmFscyhGWF9CU1RSIHN0cik7DQorICAgIENYTUxfRWxlbWVudCoJUGFyc2VFbGVtZW50KENYTUxfRWxlbWVudCogcFBhcmVudCwgRlhfQk9PTCBiU3RhcnRUYWcgPSBGQUxTRSk7DQorICAgIHZvaWQJCQlJbnNlcnRDb250ZW50U2VnbWVudChGWF9CT09MIGJDREFUQSwgRlhfV1NUUiBjb250ZW50LCBDWE1MX0VsZW1lbnQqIHBFbGVtZW50KTsNCisgICAgdm9pZAkJCUluc2VydENEQVRBU2VnbWVudChDRlhfVVRGOERlY29kZXImIGRlY29kZXIsIENYTUxfRWxlbWVudCogcEVsZW1lbnQpOw0KK307DQordm9pZCBGWF9YTUxfU3BsaXRRdWFsaWZpZWROYW1lKEZYX0JTVFIgYnNGdWxsTmFtZSwgQ0ZYX0J5dGVTdHJpbmdDICZic1NwYWNlLCBDRlhfQnl0ZVN0cmluZ0MgJmJzTmFtZSk7DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvRFdyaXRlLmggYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9EV3JpdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGY5OThhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvRFdyaXRlLmgKQEAgLTAsMCArMSw1MDA2IEBACisvLystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorLy8gIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLw0KKy8vICBBYnN0cmFjdDoNCisvLyAgICAgRGlyZWN0WCBUeXBvZ3JhcGh5IFNlcnZpY2VzIHB1YmxpYyBBUEkgZGVmaW5pdGlvbnMuDQorLy8NCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjaWZuZGVmIERXUklURV9IX0lOQ0xVREVEDQorI2RlZmluZSBEV1JJVEVfSF9JTkNMVURFRA0KKw0KKyNpZiBfTVNDX1ZFUiA+IDEwMDANCisjcHJhZ21hIG9uY2UNCisjZW5kaWYNCisNCisjaWZuZGVmIERXUklURV9OT19XSU5ET1dTX0gNCisNCisjaW5jbHVkZSAic3BlY3N0cmluZ3MuaCINCisjaW5jbHVkZSAidW5rbnduLmgiDQorDQorI2VuZGlmIC8vIERXUklURV9OT19XSU5ET1dTX0gNCisNCisjaW5jbHVkZSAiZGNvbW1vbi5oIg0KKw0KKyNpZiBfRlhfQ09NUElMRVJfID09IF9GWF9WQzZfDQordHlwZWRlZiBzaWduZWQgY2hhciAgICAgICAgIElOVDgsICpQSU5UODsNCit0eXBlZGVmIHNpZ25lZCBzaG9ydCAgICAgICAgSU5UMTYsICpQSU5UMTY7DQordHlwZWRlZiBzaWduZWQgaW50ICAgICAgICAgIElOVDMyLCAqUElOVDMyOw0KK3R5cGVkZWYgc2lnbmVkIF9faW50NjQgICAgICBJTlQ2NCwgKlBJTlQ2NDsNCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAgICAgVUlOVDgsICpQVUlOVDg7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICAgIFVJTlQxNiwgKlBVSU5UMTY7DQordHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgIFVJTlQzMiwgKlBVSU5UMzI7DQordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICAgIFVJTlQ2NCwgKlBVSU5UNjQ7DQorI2VuZGlmDQorDQorI2lmbmRlZiBEV1JJVEVfREVDTEFSRV9JTlRFUkZBQ0UNCisjZGVmaW5lIERXUklURV9ERUNMQVJFX0lOVEVSRkFDRShpaWQpIERFQ0xTUEVDX1VVSUQoaWlkKSBERUNMU1BFQ19OT1ZUQUJMRQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgRFdSSVRFX0VYUE9SVA0KKyNkZWZpbmUgRFdSSVRFX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGltcG9ydCkgV0lOQVBJDQorI2VuZGlmDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgdHlwZSBvZiBhIGZvbnQgcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgZm9udCBmaWxlLg0KKy8vLyBGb250IGZvcm1hdHMgdGhhdCBjb25zaXN0IG9mIG11bHRpcGxlIGZpbGVzLCBlLmcuIFR5cGUgMSAuUEZNIGFuZCAuUEZCLCBoYXZlDQorLy8vIHNlcGFyYXRlIGVudW0gdmFsdWVzIGZvciBlYWNoIG9mIHRoZSBmaWxlIHR5cGUuDQorLy8vIDwvc3VtbWFyeT4NCitlbnVtIERXUklURV9GT05UX0ZJTEVfVFlQRQ0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRm9udCB0eXBlIGlzIG5vdCByZWNvZ25pemVkIGJ5IHRoZSBEaXJlY3RXcml0ZSBmb250IHN5c3RlbS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfRklMRV9UWVBFX1VOS05PV04sDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9wZW5UeXBlIGZvbnQgd2l0aCBDRkYgb3V0bGluZXMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX0ZJTEVfVFlQRV9DRkYsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9wZW5UeXBlIGZvbnQgd2l0aCBUcnVlVHlwZSBvdXRsaW5lcy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfRklMRV9UWVBFX1RSVUVUWVBFLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBPcGVuVHlwZSBmb250IHRoYXQgY29udGFpbnMgYSBUcnVlVHlwZSBjb2xsZWN0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9GSUxFX1RZUEVfVFJVRVRZUEVfQ09MTEVDVElPTiwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVHlwZSAxIFBGTSBmb250Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9GSUxFX1RZUEVfVFlQRTFfUEZNLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUeXBlIDEgUEZCIGZvbnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX0ZJTEVfVFlQRV9UWVBFMV9QRkIsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFZlY3RvciAuRk9OIGZvbnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX0ZJTEVfVFlQRV9WRUNUT1IsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEJpdG1hcCAuRk9OIGZvbnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX0ZJTEVfVFlQRV9CSVRNQVANCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIGZpbGUgZm9ybWF0IG9mIGEgY29tcGxldGUgZm9udCBmYWNlLg0KKy8vLyBGb250IGZvcm1hdHMgdGhhdCBjb25zaXN0IG9mIG11bHRpcGxlIGZpbGVzLCBlLmcuIFR5cGUgMSAuUEZNIGFuZCAuUEZCLCBoYXZlDQorLy8vIGEgc2luZ2xlIGVudW0gZW50cnkuDQorLy8vIDwvc3VtbWFyeT4NCitlbnVtIERXUklURV9GT05UX0ZBQ0VfVFlQRQ0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gT3BlblR5cGUgZm9udCBmYWNlIHdpdGggQ0ZGIG91dGxpbmVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9GQUNFX1RZUEVfQ0ZGLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBPcGVuVHlwZSBmb250IGZhY2Ugd2l0aCBUcnVlVHlwZSBvdXRsaW5lcy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfRkFDRV9UWVBFX1RSVUVUWVBFLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBPcGVuVHlwZSBmb250IGZhY2UgdGhhdCBpcyBhIHBhcnQgb2YgYSBUcnVlVHlwZSBjb2xsZWN0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9GQUNFX1RZUEVfVFJVRVRZUEVfQ09MTEVDVElPTiwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQSBUeXBlIDEgZm9udCBmYWNlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9GQUNFX1RZUEVfVFlQRTEsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEEgdmVjdG9yIC5GT04gZm9ybWF0IGZvbnQgZmFjZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfRkFDRV9UWVBFX1ZFQ1RPUiwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQSBiaXRtYXAgLkZPTiBmb3JtYXQgZm9udCBmYWNlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9GQUNFX1RZUEVfQklUTUFQLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBGb250IGZhY2UgdHlwZSBpcyBub3QgcmVjb2duaXplZCBieSB0aGUgRGlyZWN0V3JpdGUgZm9udCBzeXN0ZW0uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX0ZBQ0VfVFlQRV9VTktOT1dODQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFNwZWNpZmllcyBhbGdvcml0aG1pYyBzdHlsZSBzaW11bGF0aW9ucyB0byBiZSBhcHBsaWVkIHRvIHRoZSBmb250IGZhY2UuDQorLy8vIEJvbGQgYW5kIG9ibGlxdWUgc2ltdWxhdGlvbnMgY2FuIGJlIGNvbWJpbmVkIHZpYSBiaXR3aXNlIE9SIG9wZXJhdGlvbi4NCisvLy8gPC9zdW1tYXJ5Pg0KK2VudW0gRFdSSVRFX0ZPTlRfU0lNVUxBVElPTlMNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE5vIHNpbXVsYXRpb25zIGFyZSBwZXJmb3JtZWQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1NJTVVMQVRJT05TX05PTkUgICAgPSAweDAwMDAsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEFsZ29yaXRobWljIGVtYm9sZGVuaW5nIGlzIHBlcmZvcm1lZC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfU0lNVUxBVElPTlNfQk9MRCAgICA9IDB4MDAwMSwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQWxnb3JpdGhtaWMgaXRhbGljaXphdGlvbiBpcyBwZXJmb3JtZWQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1NJTVVMQVRJT05TX09CTElRVUUgPSAweDAwMDINCit9Ow0KKw0KKyNpZmRlZiBERUZJTkVfRU5VTV9GTEFHX09QRVJBVE9SUw0KK0RFRklORV9FTlVNX0ZMQUdfT1BFUkFUT1JTKERXUklURV9GT05UX1NJTVVMQVRJT05TKTsNCisjZW5kaWYNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBmb250IHdlaWdodCBlbnVtZXJhdGlvbiBkZXNjcmliZXMgY29tbW9uIHZhbHVlcyBmb3IgZGVncmVlIG9mIGJsYWNrbmVzcyBvciB0aGlja25lc3Mgb2Ygc3Ryb2tlcyBvZiBjaGFyYWN0ZXJzIGluIGEgZm9udC4NCisvLy8gRm9udCB3ZWlnaHQgdmFsdWVzIGxlc3MgdGhhbiAxIG9yIGdyZWF0ZXIgdGhhbiA5OTkgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW52YWxpZCwgYW5kIHRoZXkgYXJlIHJlamVjdGVkIGJ5IGZvbnQgQVBJIGZ1bmN0aW9ucy4NCisvLy8gPC9zdW1tYXJ5Pg0KK2VudW0gRFdSSVRFX0ZPTlRfV0VJR0hUDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBQcmVkZWZpbmVkIGZvbnQgd2VpZ2h0IDogVGhpbiAoMTAwKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfV0VJR0hUX1RISU4gPSAxMDAsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFByZWRlZmluZWQgZm9udCB3ZWlnaHQgOiBFeHRyYS1saWdodCAoMjAwKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfV0VJR0hUX0VYVFJBX0xJR0hUID0gMjAwLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBQcmVkZWZpbmVkIGZvbnQgd2VpZ2h0IDogVWx0cmEtbGlnaHQgKDIwMCkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1dFSUdIVF9VTFRSQV9MSUdIVCA9IDIwMCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHdlaWdodCA6IExpZ2h0ICgzMDApLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9XRUlHSFRfTElHSFQgPSAzMDAsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFByZWRlZmluZWQgZm9udCB3ZWlnaHQgOiBOb3JtYWwgKDQwMCkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1dFSUdIVF9OT1JNQUwgPSA0MDAsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFByZWRlZmluZWQgZm9udCB3ZWlnaHQgOiBSZWd1bGFyICg0MDApLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9XRUlHSFRfUkVHVUxBUiA9IDQwMCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHdlaWdodCA6IE1lZGl1bSAoNTAwKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfV0VJR0hUX01FRElVTSA9IDUwMCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHdlaWdodCA6IERlbWktYm9sZCAoNjAwKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfV0VJR0hUX0RFTUlfQk9MRCA9IDYwMCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHdlaWdodCA6IFNlbWktYm9sZCAoNjAwKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfV0VJR0hUX1NFTUlfQk9MRCA9IDYwMCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHdlaWdodCA6IEJvbGQgKDcwMCkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1dFSUdIVF9CT0xEID0gNzAwLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBQcmVkZWZpbmVkIGZvbnQgd2VpZ2h0IDogRXh0cmEtYm9sZCAoODAwKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfV0VJR0hUX0VYVFJBX0JPTEQgPSA4MDAsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFByZWRlZmluZWQgZm9udCB3ZWlnaHQgOiBVbHRyYS1ib2xkICg4MDApLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9XRUlHSFRfVUxUUkFfQk9MRCA9IDgwMCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHdlaWdodCA6IEJsYWNrICg5MDApLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9XRUlHSFRfQkxBQ0sgPSA5MDAsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFByZWRlZmluZWQgZm9udCB3ZWlnaHQgOiBIZWF2eSAoOTAwKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfV0VJR0hUX0hFQVZZID0gOTAwLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBQcmVkZWZpbmVkIGZvbnQgd2VpZ2h0IDogRXh0cmEtYmxhY2sgKDk1MCkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1dFSUdIVF9FWFRSQV9CTEFDSyA9IDk1MCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHdlaWdodCA6IFVsdHJhLWJsYWNrICg5NTApLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9XRUlHSFRfVUxUUkFfQkxBQ0sgPSA5NTANCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIGZvbnQgc3RyZXRjaCBlbnVtZXJhdGlvbiBkZXNjcmliZXMgcmVsYXRpdmUgY2hhbmdlIGZyb20gdGhlIG5vcm1hbCBhc3BlY3QgcmF0aW8NCisvLy8gYXMgc3BlY2lmaWVkIGJ5IGEgZm9udCBkZXNpZ25lciBmb3IgdGhlIGdseXBocyBpbiBhIGZvbnQuDQorLy8vIFZhbHVlcyBsZXNzIHRoYW4gMSBvciBncmVhdGVyIHRoYW4gOSBhcmUgY29uc2lkZXJlZCB0byBiZSBpbnZhbGlkLCBhbmQgdGhleSBhcmUgcmVqZWN0ZWQgYnkgZm9udCBBUEkgZnVuY3Rpb25zLg0KKy8vLyA8L3N1bW1hcnk+DQorZW51bSBEV1JJVEVfRk9OVF9TVFJFVENIDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBQcmVkZWZpbmVkIGZvbnQgc3RyZXRjaCA6IE5vdCBrbm93biAoMCkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1NUUkVUQ0hfVU5ERUZJTkVEID0gMCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHN0cmV0Y2ggOiBVbHRyYS1jb25kZW5zZWQgKDEpLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9TVFJFVENIX1VMVFJBX0NPTkRFTlNFRCA9IDEsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFByZWRlZmluZWQgZm9udCBzdHJldGNoIDogRXh0cmEtY29uZGVuc2VkICgyKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfU1RSRVRDSF9FWFRSQV9DT05ERU5TRUQgPSAyLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBQcmVkZWZpbmVkIGZvbnQgc3RyZXRjaCA6IENvbmRlbnNlZCAoMykuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1NUUkVUQ0hfQ09OREVOU0VEID0gMywNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHN0cmV0Y2ggOiBTZW1pLWNvbmRlbnNlZCAoNCkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1NUUkVUQ0hfU0VNSV9DT05ERU5TRUQgPSA0LA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBQcmVkZWZpbmVkIGZvbnQgc3RyZXRjaCA6IE5vcm1hbCAoNSkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1NUUkVUQ0hfTk9STUFMID0gNSwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHN0cmV0Y2ggOiBNZWRpdW0gKDUpLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9TVFJFVENIX01FRElVTSA9IDUsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFByZWRlZmluZWQgZm9udCBzdHJldGNoIDogU2VtaS1leHBhbmRlZCAoNikuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1NUUkVUQ0hfU0VNSV9FWFBBTkRFRCA9IDYsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFByZWRlZmluZWQgZm9udCBzdHJldGNoIDogRXhwYW5kZWQgKDcpLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9TVFJFVENIX0VYUEFOREVEID0gNywNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUHJlZGVmaW5lZCBmb250IHN0cmV0Y2ggOiBFeHRyYS1leHBhbmRlZCAoOCkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GT05UX1NUUkVUQ0hfRVhUUkFfRVhQQU5ERUQgPSA4LA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBQcmVkZWZpbmVkIGZvbnQgc3RyZXRjaCA6IFVsdHJhLWV4cGFuZGVkICg5KS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfU1RSRVRDSF9VTFRSQV9FWFBBTkRFRCA9IDkNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIGZvbnQgc3R5bGUgZW51bWVyYXRpb24gZGVzY3JpYmVzIHRoZSBzbG9wZSBzdHlsZSBvZiBhIGZvbnQgZmFjZSwgc3VjaCBhcyBOb3JtYWwsIEl0YWxpYyBvciBPYmxpcXVlLg0KKy8vLyBWYWx1ZXMgb3RoZXIgdGhhbiB0aGUgb25lcyBkZWZpbmVkIGluIHRoZSBlbnVtZXJhdGlvbiBhcmUgY29uc2lkZXJlZCB0byBiZSBpbnZhbGlkLCBhbmQgdGhleSBhcmUgcmVqZWN0ZWQgYnkgZm9udCBBUEkgZnVuY3Rpb25zLg0KKy8vLyA8L3N1bW1hcnk+DQorZW51bSBEV1JJVEVfRk9OVF9TVFlMRQ0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRm9udCBzbG9wZSBzdHlsZSA6IE5vcm1hbC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfU1RZTEVfTk9STUFMLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBGb250IHNsb3BlIHN0eWxlIDogT2JsaXF1ZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfU1RZTEVfT0JMSVFVRSwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRm9udCBzbG9wZSBzdHlsZSA6IEl0YWxpYy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0ZPTlRfU1RZTEVfSVRBTElDDQorDQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBpbmZvcm1hdGlvbmFsIHN0cmluZyBlbnVtZXJhdGlvbiBpZGVudGlmaWVzIGEgc3RyaW5nIGluIGEgZm9udC4NCisvLy8gPC9zdW1tYXJ5Pg0KK2VudW0gRFdSSVRFX0lORk9STUFUSU9OQUxfU1RSSU5HX0lEDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBVbnNwZWNpZmllZCBuYW1lIElELg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfSU5GT1JNQVRJT05BTF9TVFJJTkdfTk9ORSwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQ29weXJpZ2h0IG5vdGljZSBwcm92aWRlZCBieSB0aGUgZm9udC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0lORk9STUFUSU9OQUxfU1RSSU5HX0NPUFlSSUdIVF9OT1RJQ0UsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFN0cmluZyBjb250YWluaW5nIGEgdmVyc2lvbiBudW1iZXIuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9JTkZPUk1BVElPTkFMX1NUUklOR19WRVJTSU9OX1NUUklOR1MsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRyYWRlbWFyayBpbmZvcm1hdGlvbiBwcm92aWRlZCBieSB0aGUgZm9udC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0lORk9STUFUSU9OQUxfU1RSSU5HX1RSQURFTUFSSywNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gTmFtZSBvZiB0aGUgZm9udCBtYW51ZmFjdHVyZXIuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9JTkZPUk1BVElPTkFMX1NUUklOR19NQU5VRkFDVFVSRVIsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE5hbWUgb2YgdGhlIGZvbnQgZGVzaWduZXIuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9JTkZPUk1BVElPTkFMX1NUUklOR19ERVNJR05FUiwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVVJMIG9mIGZvbnQgZGVzaWduZXIgKHdpdGggcHJvdG9jb2wsIGUuZy4sIGh0dHA6Ly8sIGZ0cDovLykuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9JTkZPUk1BVElPTkFMX1NUUklOR19ERVNJR05FUl9VUkwsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIERlc2NyaXB0aW9uIG9mIHRoZSBmb250LiBDYW4gY29udGFpbiByZXZpc2lvbiBpbmZvcm1hdGlvbiwgdXNhZ2UgcmVjb21tZW5kYXRpb25zLCBoaXN0b3J5LCBmZWF0dXJlcywgZXRjLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfSU5GT1JNQVRJT05BTF9TVFJJTkdfREVTQ1JJUFRJT04sDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFVSTCBvZiBmb250IHZlbmRvciAod2l0aCBwcm90b2NvbCwgZS5nLiwgaHR0cDovLywgZnRwOi8vKS4gSWYgYSB1bmlxdWUgc2VyaWFsIG51bWJlciBpcyBlbWJlZGRlZCBpbiB0aGUgVVJMLCBpdCBjYW4gYmUgdXNlZCB0byByZWdpc3RlciB0aGUgZm9udC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0lORk9STUFUSU9OQUxfU1RSSU5HX0ZPTlRfVkVORE9SX1VSTCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRGVzY3JpcHRpb24gb2YgaG93IHRoZSBmb250IG1heSBiZSBsZWdhbGx5IHVzZWQsIG9yIGRpZmZlcmVudCBleGFtcGxlIHNjZW5hcmlvcyBmb3IgbGljZW5zZWQgdXNlLiBUaGlzIGZpZWxkIHNob3VsZCBiZSB3cml0dGVuIGluIHBsYWluIGxhbmd1YWdlLCBub3QgbGVnYWxlc2UuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9JTkZPUk1BVElPTkFMX1NUUklOR19MSUNFTlNFX0RFU0NSSVBUSU9OLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBVUkwgd2hlcmUgYWRkaXRpb25hbCBsaWNlbnNpbmcgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfSU5GT1JNQVRJT05BTF9TVFJJTkdfTElDRU5TRV9JTkZPX1VSTCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR0RJLWNvbXBhdGlibGUgZmFtaWx5IG5hbWUuIEJlY2F1c2UgR0RJIGFsbG93cyBhIG1heGltdW0gb2YgZm91ciBmb250cyBwZXIgZmFtaWx5LCBmb250cyBpbiB0aGUgc2FtZSBmYW1pbHkgbWF5IGhhdmUgZGlmZmVyZW50IEdESS1jb21wYXRpYmxlIGZhbWlseSBuYW1lcw0KKyAgICAvLy8gKGUuZy4sICJBcmlhbCIsICJBcmlhbCBOYXJyb3ciLCAiQXJpYWwgQmxhY2siKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0lORk9STUFUSU9OQUxfU1RSSU5HX1dJTjMyX0ZBTUlMWV9OQU1FUywNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR0RJLWNvbXBhdGlibGUgc3ViZmFtaWx5IG5hbWUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9JTkZPUk1BVElPTkFMX1NUUklOR19XSU4zMl9TVUJGQU1JTFlfTkFNRVMsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEZhbWlseSBuYW1lIHByZWZlcnJlZCBieSB0aGUgZGVzaWduZXIuIFRoaXMgZW5hYmxlcyBmb250IGRlc2lnbmVycyB0byBncm91cCBtb3JlIHRoYW4gZm91ciBmb250cyBpbiBhIHNpbmdsZSBmYW1pbHkgd2l0aG91dCBsb3NpbmcgY29tcGF0aWJpbGl0eSB3aXRoDQorICAgIC8vLyBHREkuIFRoaXMgbmFtZSBpcyB0eXBpY2FsbHkgb25seSBwcmVzZW50IGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgR0RJLWNvbXBhdGlibGUgZmFtaWx5IG5hbWUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9JTkZPUk1BVElPTkFMX1NUUklOR19QUkVGRVJSRURfRkFNSUxZX05BTUVTLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTdWJmYW1pbHkgbmFtZSBwcmVmZXJyZWQgYnkgdGhlIGRlc2lnbmVyLiBUaGlzIG5hbWUgaXMgdHlwaWNhbGx5IG9ubHkgcHJlc2VudCBpZiBpdCBkaWZmZXJzIGZyb20gdGhlIEdESS1jb21wYXRpYmxlIHN1YmZhbWlseSBuYW1lLiANCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0lORk9STUFUSU9OQUxfU1RSSU5HX1BSRUZFUlJFRF9TVUJGQU1JTFlfTkFNRVMsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNhbXBsZSB0ZXh0LiBUaGlzIGNhbiBiZSB0aGUgZm9udCBuYW1lIG9yIGFueSBvdGhlciB0ZXh0IHRoYXQgdGhlIGRlc2lnbmVyIHRoaW5rcyBpcyB0aGUgYmVzdCBleGFtcGxlIHRvIGRpc3BsYXkgdGhlIGZvbnQgaW4uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9JTkZPUk1BVElPTkFMX1NUUklOR19TQU1QTEVfVEVYVA0KK307DQorDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgRFdSSVRFX0ZPTlRfTUVUUklDUyBzdHJ1Y3R1cmUgc3BlY2lmaWVzIHRoZSBtZXRyaWNzIG9mIGEgZm9udCBmYWNlIHRoYXQNCisvLy8gYXJlIGFwcGxpY2FibGUgdG8gYWxsIGdseXBocyB3aXRoaW4gdGhlIGZvbnQgZmFjZS4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfRk9OVF9NRVRSSUNTDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgbnVtYmVyIG9mIGZvbnQgZGVzaWduIHVuaXRzIHBlciBlbSB1bml0Lg0KKyAgICAvLy8gRm9udCBmaWxlcyB1c2UgdGhlaXIgb3duIGNvb3JkaW5hdGUgc3lzdGVtIG9mIGZvbnQgZGVzaWduIHVuaXRzLg0KKyAgICAvLy8gQSBmb250IGRlc2lnbiB1bml0IGlzIHRoZSBzbWFsbGVzdCBtZWFzdXJhYmxlIHVuaXQgaW4gdGhlIGVtIHNxdWFyZSwNCisgICAgLy8vIGFuIGltYWdpbmFyeSBzcXVhcmUgdGhhdCBpcyB1c2VkIHRvIHNpemUgYW5kIGFsaWduIGdseXBocy4NCisgICAgLy8vIFRoZSBjb25jZXB0IG9mIGVtIHNxdWFyZSBpcyB1c2VkIGFzIGEgcmVmZXJlbmNlIHNjYWxlIGZhY3RvciB3aGVuIGRlZmluaW5nIGZvbnQgc2l6ZSBhbmQgZGV2aWNlIHRyYW5zZm9ybWF0aW9uIHNlbWFudGljcy4NCisgICAgLy8vIFRoZSBzaXplIG9mIG9uZSBlbSBzcXVhcmUgaXMgYWxzbyBjb21tb25seSB1c2VkIHRvIGNvbXB1dGUgdGhlIHBhcmFncmFwaCBpZGVudGF0aW9uIHZhbHVlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMTYgZGVzaWduVW5pdHNQZXJFbTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQXNjZW50IHZhbHVlIG9mIHRoZSBmb250IGZhY2UgaW4gZm9udCBkZXNpZ24gdW5pdHMuDQorICAgIC8vLyBBc2NlbnQgaXMgdGhlIGRpc3RhbmNlIGZyb20gdGhlIHRvcCBvZiBmb250IGNoYXJhY3RlciBhbGlnbm1lbnQgYm94IHRvIEVuZ2xpc2ggYmFzZWxpbmUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQxNiBhc2NlbnQ7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIERlc2NlbnQgdmFsdWUgb2YgdGhlIGZvbnQgZmFjZSBpbiBmb250IGRlc2lnbiB1bml0cy4NCisgICAgLy8vIERlc2NlbnQgaXMgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGJvdHRvbSBvZiBmb250IGNoYXJhY3RlciBhbGlnbm1lbnQgYm94IHRvIEVuZ2xpc2ggYmFzZWxpbmUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQxNiBkZXNjZW50Ow0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBMaW5lIGdhcCBpbiBmb250IGRlc2lnbiB1bml0cy4NCisgICAgLy8vIFJlY29tbWVuZGVkIGFkZGl0aW9uYWwgd2hpdGUgc3BhY2UgdG8gYWRkIGJldHdlZW4gbGluZXMgdG8gaW1wcm92ZSBsZWdpYmlsaXR5LiBUaGUgcmVjb21tZW5kZWQgbGluZSBzcGFjaW5nIA0KKyAgICAvLy8gKGJhc2VsaW5lLXRvLWJhc2VsaW5lIGRpc3RhbmNlKSBpcyB0aHVzIHRoZSBzdW0gb2YgYXNjZW50LCBkZXNjZW50LCBhbmQgbGluZUdhcC4gVGhlIGxpbmUgZ2FwIGlzIHVzdWFsbHkgDQorICAgIC8vLyBwb3NpdGl2ZSBvciB6ZXJvIGJ1dCBjYW4gYmUgbmVnYXRpdmUsIGluIHdoaWNoIGNhc2UgdGhlIHJlY29tbWVuZGVkIGxpbmUgc3BhY2luZyBpcyBsZXNzIHRoYW4gdGhlIGhlaWdodA0KKyAgICAvLy8gb2YgdGhlIGNoYXJhY3RlciBhbGlnbm1lbnQgYm94Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBJTlQxNiBsaW5lR2FwOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDYXAgaGVpZ2h0IHZhbHVlIG9mIHRoZSBmb250IGZhY2UgaW4gZm9udCBkZXNpZ24gdW5pdHMuDQorICAgIC8vLyBDYXAgaGVpZ2h0IGlzIHRoZSBkaXN0YW5jZSBmcm9tIEVuZ2xpc2ggYmFzZWxpbmUgdG8gdGhlIHRvcCBvZiBhIHR5cGljYWwgRW5nbGlzaCBjYXBpdGFsLg0KKyAgICAvLy8gQ2FwaXRhbCAiSCIgaXMgb2Z0ZW4gdXNlZCBhcyBhIHJlZmVyZW5jZSBjaGFyYWN0ZXIgZm9yIHRoZSBwdXJwb3NlIG9mIGNhbGN1bGF0aW5nIHRoZSBjYXAgaGVpZ2h0IHZhbHVlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMTYgY2FwSGVpZ2h0Ow0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyB4LWhlaWdodCB2YWx1ZSBvZiB0aGUgZm9udCBmYWNlIGluIGZvbnQgZGVzaWduIHVuaXRzLg0KKyAgICAvLy8geC1oZWlnaHQgaXMgdGhlIGRpc3RhbmNlIGZyb20gRW5nbGlzaCBiYXNlbGluZSB0byB0aGUgdG9wIG9mIGxvd2VyY2FzZSBsZXR0ZXIgIngiLCBvciBhIHNpbWlsYXIgbG93ZXJjYXNlIGNoYXJhY3Rlci4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2IHhIZWlnaHQ7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSB1bmRlcmxpbmUgcG9zaXRpb24gdmFsdWUgb2YgdGhlIGZvbnQgZmFjZSBpbiBmb250IGRlc2lnbiB1bml0cy4NCisgICAgLy8vIFVuZGVybGluZSBwb3NpdGlvbiBpcyB0aGUgcG9zaXRpb24gb2YgdW5kZXJsaW5lIHJlbGF0aXZlIHRvIHRoZSBFbmdsaXNoIGJhc2VsaW5lLg0KKyAgICAvLy8gVGhlIHZhbHVlIGlzIHVzdWFsbHkgbWFkZSBuZWdhdGl2ZSBpbiBvcmRlciB0byBwbGFjZSB0aGUgdW5kZXJsaW5lIGJlbG93IHRoZSBiYXNlbGluZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgSU5UMTYgdW5kZXJsaW5lUG9zaXRpb247DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBzdWdnZXN0ZWQgdW5kZXJsaW5lIHRoaWNrbmVzcyB2YWx1ZSBvZiB0aGUgZm9udCBmYWNlIGluIGZvbnQgZGVzaWduIHVuaXRzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMTYgdW5kZXJsaW5lVGhpY2tuZXNzOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgc3RyaWtldGhyb3VnaCBwb3NpdGlvbiB2YWx1ZSBvZiB0aGUgZm9udCBmYWNlIGluIGZvbnQgZGVzaWduIHVuaXRzLg0KKyAgICAvLy8gU3RyaWtldGhyb3VnaCBwb3NpdGlvbiBpcyB0aGUgcG9zaXRpb24gb2Ygc3RyaWtldGhyb3VnaCByZWxhdGl2ZSB0byB0aGUgRW5nbGlzaCBiYXNlbGluZS4NCisgICAgLy8vIFRoZSB2YWx1ZSBpcyB1c3VhbGx5IG1hZGUgcG9zaXRpdmUgaW4gb3JkZXIgdG8gcGxhY2UgdGhlIHN0cmlrZXRocm91Z2ggYWJvdmUgdGhlIGJhc2VsaW5lLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBJTlQxNiBzdHJpa2V0aHJvdWdoUG9zaXRpb247DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBzdWdnZXN0ZWQgc3RyaWtldGhyb3VnaCB0aGlja25lc3MgdmFsdWUgb2YgdGhlIGZvbnQgZmFjZSBpbiBmb250IGRlc2lnbiB1bml0cy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2IHN0cmlrZXRocm91Z2hUaGlja25lc3M7DQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBEV1JJVEVfR0xZUEhfTUVUUklDUyBzdHJ1Y3R1cmUgc3BlY2lmaWVzIHRoZSBtZXRyaWNzIG9mIGFuIGluZGl2aWR1YWwgZ2x5cGguDQorLy8vIFRoZSB1bml0cyBkZXBlbmQgb24gaG93IHRoZSBtZXRyaWNzIGFyZSBvYnRhaW5lZC4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfR0xZUEhfTUVUUklDUw0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU3BlY2lmaWVzIHRoZSBYIG9mZnNldCBmcm9tIHRoZSBnbHlwaCBvcmlnaW4gdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgYmxhY2sgYm94Lg0KKyAgICAvLy8gVGhlIGdseXBoIG9yaWdpbiBpcyB0aGUgY3VycmVudCBob3Jpem9udGFsIHdyaXRpbmcgcG9zaXRpb24uDQorICAgIC8vLyBBIG5lZ2F0aXZlIHZhbHVlIG1lYW5zIHRoZSBibGFjayBib3ggZXh0ZW5kcyB0byB0aGUgbGVmdCBvZiB0aGUgb3JpZ2luIChvZnRlbiB0cnVlIGZvciBsb3dlcmNhc2UgaXRhbGljICdmJykuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIElOVDMyIGxlZnRTaWRlQmVhcmluZzsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU3BlY2lmaWVzIHRoZSBYIG9mZnNldCBmcm9tIHRoZSBvcmlnaW4gb2YgdGhlIGN1cnJlbnQgZ2x5cGggdG8gdGhlIG9yaWdpbiBvZiB0aGUgbmV4dCBnbHlwaCB3aGVuIHdyaXRpbmcgaG9yaXpvbnRhbGx5Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMzIgYWR2YW5jZVdpZHRoOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTcGVjaWZpZXMgdGhlIFggb2Zmc2V0IGZyb20gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGJsYWNrIGJveCB0byB0aGUgb3JpZ2luIG9mIHRoZSBuZXh0IGdseXBoIHdoZW4gd3JpdGluZyBob3Jpem9udGFsbHkuDQorICAgIC8vLyBUaGUgdmFsdWUgaXMgbmVnYXRpdmUgd2hlbiB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgYmxhY2sgYm94IG92ZXJoYW5ncyB0aGUgbGF5b3V0IGJveC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgSU5UMzIgcmlnaHRTaWRlQmVhcmluZzsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU3BlY2lmaWVzIHRoZSB2ZXJ0aWNhbCBvZmZzZXQgZnJvbSB0aGUgdmVydGljYWwgb3JpZ2luIHRvIHRoZSB0b3Agb2YgdGhlIGJsYWNrIGJveC4NCisgICAgLy8vIFRodXMsIGEgcG9zaXRpdmUgdmFsdWUgYWRkcyB3aGl0ZXNwYWNlIHdoZXJlYXMgYSBuZWdhdGl2ZSB2YWx1ZSBtZWFucyB0aGUgZ2x5cGggb3ZlcmhhbmdzIHRoZSB0b3Agb2YgdGhlIGxheW91dCBib3guDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIElOVDMyIHRvcFNpZGVCZWFyaW5nOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTcGVjaWZpZXMgdGhlIFkgb2Zmc2V0IGZyb20gdGhlIHZlcnRpY2FsIG9yaWdpbiBvZiB0aGUgY3VycmVudCBnbHlwaCB0byB0aGUgdmVydGljYWwgb3JpZ2luIG9mIHRoZSBuZXh0IGdseXBoIHdoZW4gd3JpdGluZyB2ZXJ0aWNhbGx5Lg0KKyAgICAvLy8gKE5vdGUgdGhhdCB0aGUgdGVybSAib3JpZ2luIiBieSBpdHNlbGYgZGVub3RlcyB0aGUgaG9yaXpvbnRhbCBvcmlnaW4uIFRoZSB2ZXJ0aWNhbCBvcmlnaW4gaXMgZGlmZmVyZW50Lg0KKyAgICAvLy8gSXRzIFkgY29vcmRpbmF0ZSBpcyBzcGVjaWZpZWQgYnkgdmVydGljYWxPcmlnaW5ZIHZhbHVlLA0KKyAgICAvLy8gYW5kIGl0cyBYIGNvb3JkaW5hdGUgaXMgaGFsZiB0aGUgYWR2YW5jZVdpZHRoIHRvIHRoZSByaWdodCBvZiB0aGUgaG9yaXpvbnRhbCBvcmlnaW4pLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMzIgYWR2YW5jZUhlaWdodDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU3BlY2lmaWVzIHRoZSB2ZXJ0aWNhbCBkaXN0YW5jZSBmcm9tIHRoZSBibGFjayBib3gncyBib3R0b20gZWRnZSB0byB0aGUgYWR2YW5jZSBoZWlnaHQuDQorICAgIC8vLyBQb3NpdGl2ZSB3aGVuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgYmxhY2sgYm94IGlzIHdpdGhpbiB0aGUgbGF5b3V0IGJveC4NCisgICAgLy8vIE5lZ2F0aXZlIHdoZW4gdGhlIGJvdHRvbSBlZGdlIG9mIGJsYWNrIGJveCBvdmVyaGFuZ3MgdGhlIGxheW91dCBib3guDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIElOVDMyIGJvdHRvbVNpZGVCZWFyaW5nOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTcGVjaWZpZXMgdGhlIFkgY29vcmRpbmF0ZSBvZiBhIGdseXBoJ3MgdmVydGljYWwgb3JpZ2luLCBpbiB0aGUgZm9udCdzIGRlc2lnbiBjb29yZGluYXRlIHN5c3RlbS4NCisgICAgLy8vIFRoZSB5IGNvb3JkaW5hdGUgb2YgYSBnbHlwaCdzIHZlcnRpY2FsIG9yaWdpbiBpcyB0aGUgc3VtIG9mIHRoZSBnbHlwaCdzIHRvcCBzaWRlIGJlYXJpbmcNCisgICAgLy8vIGFuZCB0aGUgdG9wIChpLmUuIHlNYXgpIG9mIHRoZSBnbHlwaCdzIGJvdW5kaW5nIGJveC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgSU5UMzIgdmVydGljYWxPcmlnaW5ZOw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBPcHRpb25hbCBhZGp1c3RtZW50IHRvIGEgZ2x5cGgncyBwb3NpdGlvbi4gQW4gZ2x5cGggb2Zmc2V0IGNoYW5nZXMgdGhlIHBvc2l0aW9uIG9mIGEgZ2x5cGggd2l0aG91dCBhZmZlY3RpbmcNCisvLy8gdGhlIHBlbiBwb3NpdGlvbi4gT2Zmc2V0cyBhcmUgaW4gbG9naWNhbCwgcHJlLXRyYW5zZm9ybSB1bml0cy4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfR0xZUEhfT0ZGU0VUDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBPZmZzZXQgaW4gdGhlIGFkdmFuY2UgZGlyZWN0aW9uIG9mIHRoZSBydW4uIEEgcG9zaXRpdmUgYWR2YW5jZSBvZmZzZXQgbW92ZXMgdGhlIGdseXBoIHRvIHRoZSByaWdodA0KKyAgICAvLy8gKGluIHByZS10cmFuc2Zvcm0gY29vcmRpbmF0ZXMpIGlmIHRoZSBydW4gaXMgbGVmdC10by1yaWdodCBvciB0byB0aGUgbGVmdCBpZiB0aGUgcnVuIGlzIHJpZ2h0LXRvLWxlZnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIGFkdmFuY2VPZmZzZXQ7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9mZnNldCBpbiB0aGUgYXNjZW50IGRpcmVjdGlvbiwgaS5lLiwgdGhlIGRpcmVjdGlvbiBhc2NlbmRlcnMgcG9pbnQuIEEgcG9zaXRpdmUgYXNjZW5kZXIgb2Zmc2V0IG1vdmVzDQorICAgIC8vLyB0aGUgZ2x5cGggdXAgKGluIHByZS10cmFuc2Zvcm0gY29vcmRpbmF0ZXMpLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBhc2NlbmRlck9mZnNldDsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gU3BlY2lmaWVzIHRoZSB0eXBlIG9mIERpcmVjdFdyaXRlIGZhY3Rvcnkgb2JqZWN0Lg0KKy8vLyBEaXJlY3RXcml0ZSBmYWN0b3J5IGNvbnRhaW5zIGludGVybmFsIHN0YXRlIHN1Y2ggYXMgZm9udCBsb2FkZXIgcmVnaXN0cmF0aW9uIGFuZCBjYWNoZWQgZm9udCBkYXRhLg0KKy8vLyBJbiBtb3N0IGNhc2VzIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgc2hhcmVkIGZhY3Rvcnkgb2JqZWN0LCBiZWNhdXNlIGl0IGFsbG93cyBtdWx0aXBsZSBjb21wb25lbnRzDQorLy8vIHRoYXQgdXNlIERpcmVjdFdyaXRlIHRvIHNoYXJlIGludGVybmFsIERpcmVjdFdyaXRlIHN0YXRlIGFuZCByZWR1Y2UgbWVtb3J5IHVzYWdlLg0KKy8vLyBIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8gcmVkdWNlIHRoZSBpbXBhY3Qgb2YgYSBjb21wb25lbnQsDQorLy8vIHN1Y2ggYXMgYSBwbHVnLWluIGZyb20gYW4gdW50cnVzdGVkIHNvdXJjZSwgb24gdGhlIHJlc3Qgb2YgdGhlIHByb2Nlc3MgYnkgc2FuZGJveGluZyBhbmQgaXNvbGF0aW5nIGl0DQorLy8vIGZyb20gdGhlIHJlc3Qgb2YgdGhlIHByb2Nlc3MgY29tcG9uZW50cy4gSW4gc3VjaCBjYXNlcywgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIGFuIGlzb2xhdGVkIGZhY3RvcnkgZm9yIHRoZSBzYW5kYm94ZWQNCisvLy8gY29tcG9uZW50Lg0KKy8vLyA8L3N1bW1hcnk+DQorZW51bSBEV1JJVEVfRkFDVE9SWV9UWVBFDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTaGFyZWQgZmFjdG9yeSBhbGxvdyBmb3IgcmUtdXNlIG9mIGNhY2hlZCBmb250IGRhdGEgYWNyb3NzIG11bHRpcGxlIGluIHByb2Nlc3MgY29tcG9uZW50cy4NCisgICAgLy8vIFN1Y2ggZmFjdG9yaWVzIGFsc28gdGFrZSBhZHZhbnRhZ2Ugb2YgY3Jvc3MgcHJvY2VzcyBmb250IGNhY2hpbmcgY29tcG9uZW50cyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRkFDVE9SWV9UWVBFX1NIQVJFRCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gT2JqZWN0cyBjcmVhdGVkIGZyb20gdGhlIGlzb2xhdGVkIGZhY3RvcnkgZG8gbm90IGludGVyYWN0IHdpdGggaW50ZXJuYWwgRGlyZWN0V3JpdGUgc3RhdGUgZnJvbSBvdGhlciBjb21wb25lbnRzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRkFDVE9SWV9UWVBFX0lTT0xBVEVEDQorfTsNCisNCisvLyBDcmVhdGVzIGFuIE9wZW5UeXBlIHRhZyBhcyBhIDMyYml0IGludGVnZXIgc3VjaCB0aGF0DQorLy8gdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgdGFnIGlzIHRoZSBsb3dlc3QgYnl0ZSwNCisvLyAobGVhc3Qgc2lnbmlmaWNhbnQgb24gbGl0dGxlIGVuZGlhbiBhcmNoaXRlY3R1cmVzKQ0KKy8vIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbXBhcmUgd2l0aCB0YWdzIGluIHRoZSBmb250IGZpbGUuDQorLy8gVGhpcyBtYWNybyBpcyBjb21wYXRpYmxlIHdpdGggRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUcuDQorLy8NCisvLyBFeGFtcGxlOiBEV1JJVEVfTUFLRV9PUEVOVFlQRV9UQUcoJ2MnLCdjJywnbScsJ3AnKQ0KKy8vIER3b3JkOiAgIDB4NzA2RDYzNjMNCisvLw0KKyNkZWZpbmUgRFdSSVRFX01BS0VfT1BFTlRZUEVfVEFHKGEsYixjLGQpICggXA0KKyAgICAoc3RhdGljX2Nhc3Q8VUlOVDMyPihzdGF0aWNfY2FzdDxVSU5UOD4oZCkpIDw8IDI0KSB8IFwNCisgICAgKHN0YXRpY19jYXN0PFVJTlQzMj4oc3RhdGljX2Nhc3Q8VUlOVDg+KGMpKSA8PCAxNikgfCBcDQorICAgIChzdGF0aWNfY2FzdDxVSU5UMzI+KHN0YXRpY19jYXN0PFVJTlQ4PihiKSkgPDwgOCkgIHwgXA0KKyAgICAgc3RhdGljX2Nhc3Q8VUlOVDMyPihzdGF0aWNfY2FzdDxVSU5UOD4oYSkpKQ0KKw0KK2ludGVyZmFjZSBJRFdyaXRlRm9udEZpbGVTdHJlYW07DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBGb250IGZpbGUgbG9hZGVyIGludGVyZmFjZSBoYW5kbGVzIGxvYWRpbmcgZm9udCBmaWxlIHJlc291cmNlcyBvZiBhIHBhcnRpY3VsYXIgdHlwZSBmcm9tIGEga2V5Lg0KKy8vLyBUaGUgZm9udCBmaWxlIGxvYWRlciBpbnRlcmZhY2UgaXMgcmVjb21tZW5kZWQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgYSBzaW5nbGV0b24gb2JqZWN0Lg0KKy8vLyBJTVBPUlRBTlQ6IGZvbnQgZmlsZSBsb2FkZXIgaW1wbGVtZW50YXRpb25zIG11c3Qgbm90IHJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCBEaXJlY3RXcml0ZSBmYWN0b3J5DQorLy8vIGluc2lkZSB0aGVpciBjb25zdHJ1Y3RvcnMgYW5kIG11c3Qgbm90IHVucmVnaXN0ZXIgdGhlbXNlbHZlcyBpbiB0aGVpciBkZXN0cnVjdG9ycywgYmVjYXVzZQ0KKy8vLyByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0b24gb3BlcmF0aW9ucyBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCB0aGUgb2JqZWN0IHJlZmVyZW5jZSBjb3VudCByZXNwZWN0aXZlbHkuDQorLy8vIEluc3RlYWQsIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24gb2YgZm9udCBmaWxlIGxvYWRlcnMgd2l0aCBEaXJlY3RXcml0ZSBmYWN0b3J5IHNob3VsZCBiZSBwZXJmb3JtZWQNCisvLy8gb3V0c2lkZSBvZiB0aGUgZm9udCBmaWxlIGxvYWRlciBpbXBsZW1lbnRhdGlvbiBhcyBhIHNlcGFyYXRlIHN0ZXAuDQorLy8vIDwvc3VtbWFyeT4NCitpbnRlcmZhY2UgRFdSSVRFX0RFQ0xBUkVfSU5URVJGQUNFKCI3MjdjYWQ0ZS1kNmFmLTRjOWUtOGEwOC1kNjk1YjExY2FhNDkiKSBJRFdyaXRlRm9udEZpbGVMb2FkZXIgOiBwdWJsaWMgSVVua25vd24NCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZXMgYSBmb250IGZpbGUgc3RyZWFtIG9iamVjdCB0aGF0IGVuY2Fwc3VsYXRlcyBhbiBvcGVuIGZpbGUgcmVzb3VyY2UuDQorICAgIC8vLyBUaGUgcmVzb3VyY2UgaXMgY2xvc2VkIHdoZW4gdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGZvbnRGaWxlU3RyZWFtIGlzIHJlbGVhc2VkLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlUmVmZXJlbmNlS2V5Ij5Gb250IGZpbGUgcmVmZXJlbmNlIGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGZvbnQgZmlsZSByZXNvdXJjZQ0KKyAgICAvLy8gd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgZm9udCBsb2FkZXIgYmVpbmcgdXNlZC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlUmVmZXJlbmNlS2V5U2l6ZSI+U2l6ZSBvZiBmb250IGZpbGUgcmVmZXJlbmNlIGtleSBpbiBieXRlcy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlU3RyZWFtIj5Qb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIGZvbnQgZmlsZSBzdHJlYW0uPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQ3JlYXRlU3RyZWFtRnJvbUtleSkoDQorICAgICAgICBfX2luX2Jjb3VudChmb250RmlsZVJlZmVyZW5jZUtleVNpemUpIHZvaWQgY29uc3QqIGZvbnRGaWxlUmVmZXJlbmNlS2V5LA0KKyAgICAgICAgVUlOVDMyIGZvbnRGaWxlUmVmZXJlbmNlS2V5U2l6ZSwNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250RmlsZVN0cmVhbSoqIGZvbnRGaWxlU3RyZWFtDQorICAgICAgICApIFBVUkU7DQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIEEgYnVpbHQtaW4gaW1wbGVtZW50YXRpb24gb2YgSURXcml0ZUZvbnRGaWxlTG9hZGVyIGludGVyZmFjZSB0aGF0IG9wZXJhdGVzIG9uIGxvY2FsIGZvbnQgZmlsZXMNCisvLy8gYW5kIGV4cG9zZXMgbG9jYWwgZm9udCBmaWxlIGluZm9ybWF0aW9uIGZyb20gdGhlIGZvbnQgZmlsZSByZWZlcmVuY2Uga2V5Lg0KKy8vLyBGb250IGZpbGUgcmVmZXJlbmNlcyBjcmVhdGVkIHVzaW5nIENyZWF0ZUZvbnRGaWxlUmVmZXJlbmNlIHVzZSB0aGlzIGZvbnQgZmlsZSBsb2FkZXIuDQorLy8vIDwvc3VtbWFyeT4NCitpbnRlcmZhY2UgRFdSSVRFX0RFQ0xBUkVfSU5URVJGQUNFKCJiMmQ5ZjNlYy1jOWZlLTRhMTEtYTJlYy1kODYyMDhmN2MwYTIiKSBJRFdyaXRlTG9jYWxGb250RmlsZUxvYWRlciA6IHB1YmxpYyBJRFdyaXRlRm9udEZpbGVMb2FkZXINCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9idGFpbnMgdGhlIGxlbmd0aCBvZiB0aGUgYWJzb2x1dGUgZmlsZSBwYXRoIGZyb20gdGhlIGZvbnQgZmlsZSByZWZlcmVuY2Uga2V5Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlUmVmZXJlbmNlS2V5Ij5Gb250IGZpbGUgcmVmZXJlbmNlIGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGxvY2FsIGZvbnQgZmlsZQ0KKyAgICAvLy8gd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgZm9udCBsb2FkZXIgYmVpbmcgdXNlZC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlUmVmZXJlbmNlS2V5U2l6ZSI+U2l6ZSBvZiBmb250IGZpbGUgcmVmZXJlbmNlIGtleSBpbiBieXRlcy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZpbGVQYXRoTGVuZ3RoIj5MZW5ndGggb2YgdGhlIGZpbGUgcGF0aCBzdHJpbmcgbm90IGluY2x1ZGluZyB0aGUgdGVybWluYXRlZCBOVUxMIGNoYXJhY3Rlci48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRGaWxlUGF0aExlbmd0aEZyb21LZXkpKA0KKyAgICAgICAgX19pbl9iY291bnQoZm9udEZpbGVSZWZlcmVuY2VLZXlTaXplKSB2b2lkIGNvbnN0KiBmb250RmlsZVJlZmVyZW5jZUtleSwNCisgICAgICAgIFVJTlQzMiBmb250RmlsZVJlZmVyZW5jZUtleVNpemUsDQorICAgICAgICBfX291dCBVSU5UMzIqIGZpbGVQYXRoTGVuZ3RoDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9idGFpbnMgdGhlIGFic29sdXRlIGZvbnQgZmlsZSBwYXRoIGZyb20gdGhlIGZvbnQgZmlsZSByZWZlcmVuY2Uga2V5Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlUmVmZXJlbmNlS2V5Ij5Gb250IGZpbGUgcmVmZXJlbmNlIGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGxvY2FsIGZvbnQgZmlsZQ0KKyAgICAvLy8gd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgZm9udCBsb2FkZXIgYmVpbmcgdXNlZC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlUmVmZXJlbmNlS2V5U2l6ZSI+U2l6ZSBvZiBmb250IGZpbGUgcmVmZXJlbmNlIGtleSBpbiBieXRlcy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZpbGVQYXRoIj5DaGFyYWN0ZXIgYXJyYXkgdGhhdCByZWNlaXZlcyB0aGUgbG9jYWwgZmlsZSBwYXRoLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZmlsZVBhdGhTaXplIj5TaXplIG9mIHRoZSBmaWxlUGF0aCBhcnJheSBpbiBjaGFyYWN0ZXIgY291bnQgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGVkIE5VTEwgY2hhcmFjdGVyLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldEZpbGVQYXRoRnJvbUtleSkoDQorICAgICAgICBfX2luX2Jjb3VudChmb250RmlsZVJlZmVyZW5jZUtleVNpemUpIHZvaWQgY29uc3QqIGZvbnRGaWxlUmVmZXJlbmNlS2V5LA0KKyAgICAgICAgVUlOVDMyIGZvbnRGaWxlUmVmZXJlbmNlS2V5U2l6ZSwNCisgICAgICAgIF9fb3V0X2Vjb3VudF96KGZpbGVQYXRoU2l6ZSkgV0NIQVIqIGZpbGVQYXRoLA0KKyAgICAgICAgVUlOVDMyIGZpbGVQYXRoU2l6ZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBPYnRhaW5zIHRoZSBsYXN0IHdyaXRlIHRpbWUgb2YgdGhlIGZpbGUgZnJvbSB0aGUgZm9udCBmaWxlIHJlZmVyZW5jZSBrZXkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZpbGVSZWZlcmVuY2VLZXkiPkZvbnQgZmlsZSByZWZlcmVuY2Uga2V5IHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgbG9jYWwgZm9udCBmaWxlDQorICAgIC8vLyB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBmb250IGxvYWRlciBiZWluZyB1c2VkLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZpbGVSZWZlcmVuY2VLZXlTaXplIj5TaXplIG9mIGZvbnQgZmlsZSByZWZlcmVuY2Uga2V5IGluIGJ5dGVzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibGFzdFdyaXRlVGltZSI+TGFzdCBtb2RpZmllZCB0aW1lIG9mIHRoZSBmb250IGZpbGUuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0TGFzdFdyaXRlVGltZUZyb21LZXkpKA0KKyAgICAgICAgX19pbl9iY291bnQoZm9udEZpbGVSZWZlcmVuY2VLZXlTaXplKSB2b2lkIGNvbnN0KiBmb250RmlsZVJlZmVyZW5jZUtleSwNCisgICAgICAgIFVJTlQzMiBmb250RmlsZVJlZmVyZW5jZUtleVNpemUsDQorICAgICAgICBfX291dCBGSUxFVElNRSogbGFzdFdyaXRlVGltZQ0KKyAgICAgICAgKSBQVVJFOw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgaW50ZXJmYWNlIGZvciBsb2FkaW5nIGZvbnQgZmlsZSBkYXRhLg0KKy8vLyA8L3N1bW1hcnk+DQoraW50ZXJmYWNlIERXUklURV9ERUNMQVJFX0lOVEVSRkFDRSgiNmQ0ODY1ZmUtMGFiOC00ZDkxLThmNjItNWRkNmJlMzRhM2UwIikgSURXcml0ZUZvbnRGaWxlU3RyZWFtIDogcHVibGljIElVbmtub3duDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBSZWFkcyBhIGZyYWdtZW50IGZyb20gYSBmaWxlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZyYWdtZW50U3RhcnQiPlJlY2VpdmVzIHRoZSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZm9udCBmaWxlIGZyYWdtZW50LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZmlsZU9mZnNldCI+T2Zmc2V0IG9mIHRoZSBmcmFnbWVudCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZvbnQgZmlsZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZyYWdtZW50U2l6ZSI+U2l6ZSBvZiB0aGUgZnJhZ21lbnQgaW4gYnl0ZXMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmcmFnbWVudENvbnRleHQiPlRoZSBjbGllbnQgZGVmaW5lZCBjb250ZXh0IHRvIGJlIHBhc3NlZCB0byB0aGUgUmVsZWFzZUZpbGVGcmFnbWVudC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIC8vLyA8cmVtYXJrcz4NCisgICAgLy8vIElNUE9SVEFOVDogUmVhZEZpbGVGcmFnbWVudCgpIGltcGxlbWVudGF0aW9ucyBtdXN0IGNoZWNrIHdoZXRoZXIgdGhlIHJlcXVlc3RlZCBmaWxlIGZyYWdtZW50DQorICAgIC8vLyBpcyB3aXRoaW4gdGhlIGZpbGUgYm91bmRzLiBPdGhlcndpc2UsIGFuIGVycm9yIHNob3VsZCBiZSByZXR1cm5lZCBmcm9tIFJlYWRGaWxlRnJhZ21lbnQuDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIFNURE1FVEhPRChSZWFkRmlsZUZyYWdtZW50KSgNCisgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudChmcmFnbWVudFNpemUpIHZvaWQgY29uc3QqKiBmcmFnbWVudFN0YXJ0LA0KKyAgICAgICAgVUlOVDY0IGZpbGVPZmZzZXQsDQorICAgICAgICBVSU5UNjQgZnJhZ21lbnRTaXplLA0KKyAgICAgICAgX19vdXQgdm9pZCoqIGZyYWdtZW50Q29udGV4dA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBSZWxlYXNlcyBhIGZyYWdtZW50IGZyb20gYSBmaWxlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZyYWdtZW50Q29udGV4dCI+VGhlIGNsaWVudCBkZWZpbmVkIGNvbnRleHQgb2YgYSBmb250IGZyYWdtZW50IHJldHVybmVkIGZyb20gUmVhZEZpbGVGcmFnbWVudC48L3BhcmFtPg0KKyAgICBTVERNRVRIT0RfKHZvaWQsIFJlbGVhc2VGaWxlRnJhZ21lbnQpKA0KKyAgICAgICAgdm9pZCogZnJhZ21lbnRDb250ZXh0DQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9idGFpbnMgdGhlIHRvdGFsIHNpemUgb2YgYSBmaWxlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZpbGVTaXplIj5SZWNlaXZlcyB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZmlsZS48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIC8vLyA8cmVtYXJrcz4NCisgICAgLy8vIEltcGxlbWVudGluZyBHZXRGaWxlU2l6ZSgpIGZvciBhc3luY2hyb25vdXNseSBsb2FkZWQgZm9udCBmaWxlcyBtYXkgcmVxdWlyZQ0KKyAgICAvLy8gZG93bmxvYWRpbmcgdGhlIGNvbXBsZXRlIGZpbGUgY29udGVudHMsIHRoZXJlZm9yZSB0aGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBvcGVyYXRpb25zIHRoYXQNCisgICAgLy8vIGVpdGhlciByZXF1aXJlIGNvbXBsZXRlIGZvbnQgZmlsZSB0byBiZSBsb2FkZWQgKGUuZy4sIGNvcHlpbmcgYSBmb250IGZpbGUpIG9yIG5lZWQgdG8gbWFrZQ0KKyAgICAvLy8gZGVjaXNpb25zIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgZmlsZSBzaXplIChlLmcuLCB2YWxpZGF0aW9uIGFnYWluc3QgYSBwZXJzaXN0ZWQgZmlsZSBzaXplKS4NCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgU1RETUVUSE9EKEdldEZpbGVTaXplKSgNCisgICAgICAgIF9fb3V0IFVJTlQ2NCogZmlsZVNpemUNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gT2J0YWlucyB0aGUgbGFzdCBtb2RpZmllZCB0aW1lIG9mIHRoZSBmaWxlLiBUaGUgbGFzdCBtb2RpZmllZCB0aW1lIGlzIHVzZWQgYnkgRGlyZWN0V3JpdGUgZm9udCBzZWxlY3Rpb24gYWxnb3JpdGhtcw0KKyAgICAvLy8gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb25lIGZvbnQgcmVzb3VyY2UgaXMgbW9yZSB1cCB0byBkYXRlIHRoYW4gYW5vdGhlciBvbmUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibGFzdFdyaXRlVGltZSI+UmVjZWl2ZXMgdGhlIGxhc3QgbW9kaWZlZCB0aW1lIG9mIHRoZSBmaWxlIGluIHRoZSBmb3JtYXQgdGhhdCByZXByZXNlbnRzDQorICAgIC8vLyB0aGUgbnVtYmVyIG9mIDEwMC1uYW5vc2Vjb25kIGludGVydmFscyBzaW5jZSBKYW51YXJ5IDEsIDE2MDEgKFVUQykuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLiBGb3IgcmVzb3VyY2VzIHRoYXQgZG9uJ3QgaGF2ZSBhIGNvbmNlcHQgb2YgdGhlIGxhc3QgbW9kaWZpZWQgdGltZSwgdGhlIGltcGxlbWVudGF0aW9uIG9mDQorICAgIC8vLyBHZXRMYXN0V3JpdGVUaW1lIHNob3VsZCByZXR1cm4gRV9OT1RJTVBMLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0TGFzdFdyaXRlVGltZSkoDQorICAgICAgICBfX291dCBVSU5UNjQqIGxhc3RXcml0ZVRpbWUNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIGludGVyZmFjZSB0aGF0IHJlcHJlc2VudHMgYSByZWZlcmVuY2UgdG8gYSBmb250IGZpbGUuDQorLy8vIDwvc3VtbWFyeT4NCitpbnRlcmZhY2UgRFdSSVRFX0RFQ0xBUkVfSU5URVJGQUNFKCI3MzlkODg2YS1jZWY1LTQ3ZGMtODc2OS0xYThiNDFiZWJiYjAiKSBJRFdyaXRlRm9udEZpbGUgOiBwdWJsaWMgSVVua25vd24NCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoaXMgbWV0aG9kIG9idGFpbnMgdGhlIHBvaW50ZXIgdG8gdGhlIHJlZmVyZW5jZSBrZXkgb2YgYSBmb250IGZpbGUuIFRoZSBwb2ludGVyIGlzIG9ubHkgdmFsaWQgdW50aWwgdGhlIG9iamVjdCB0aGF0IHJlZmVycyB0byBpdCBpcyByZWxlYXNlZC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmlsZVJlZmVyZW5jZUtleSI+UG9pbnRlciB0byB0aGUgZm9udCBmaWxlIHJlZmVyZW5jZSBrZXkuDQorICAgIC8vLyBJTVBPUlRBTlQ6IFRoZSBwb2ludGVyIHZhbHVlIGlzIHZhbGlkIHVudGlsIHRoZSBmb250IGZpbGUgcmVmZXJlbmNlIG9iamVjdCBpdCBpcyBvYnRhaW5lZCBmcm9tIGlzIHJlbGVhc2VkLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZpbGVSZWZlcmVuY2VLZXlTaXplIj5TaXplIG9mIGZvbnQgZmlsZSByZWZlcmVuY2Uga2V5IGluIGJ5dGVzLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldFJlZmVyZW5jZUtleSkoDQorICAgICAgICBfX2RlcmVmX291dF9iY291bnQoKmZvbnRGaWxlUmVmZXJlbmNlS2V5U2l6ZSkgdm9pZCBjb25zdCoqIGZvbnRGaWxlUmVmZXJlbmNlS2V5LA0KKyAgICAgICAgX19vdXQgVUlOVDMyKiBmb250RmlsZVJlZmVyZW5jZUtleVNpemUNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gT2J0YWlucyB0aGUgZmlsZSBsb2FkZXIgYXNzb2NpYXRlZCB3aXRoIGEgZm9udCBmaWxlIG9iamVjdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmlsZUxvYWRlciI+VGhlIGZvbnQgZmlsZSBsb2FkZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBmb250IGZpbGUgb2JqZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldExvYWRlcikoDQorICAgICAgICBfX291dCBJRFdyaXRlRm9udEZpbGVMb2FkZXIqKiBmb250RmlsZUxvYWRlcg0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBBbmFseXplcyBhIGZpbGUgYW5kIHJldHVybnMgd2hldGhlciBpdCByZXByZXNlbnRzIGEgZm9udCwgYW5kIHdoZXRoZXIgdGhlIGZvbnQgdHlwZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIGZvbnQgc3lzdGVtLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImlzU3VwcG9ydGVkRm9udFR5cGUiPlRSVUUgaWYgdGhlIGZvbnQgdHlwZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIGZvbnQgc3lzdGVtLCBGQUxTRSBvdGhlcndpc2UuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmlsZVR5cGUiPlRoZSB0eXBlIG9mIHRoZSBmb250IGZpbGUuIE5vdGUgdGhhdCBldmVuIGlmIGlzU3VwcG9ydGVkRm9udFR5cGUgaXMgRkFMU0UsDQorICAgIC8vLyB0aGUgZm9udEZpbGVUeXBlIHZhbHVlIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBEV1JJVEVfRk9OVF9GSUxFX1RZUEVfVU5LTk9XTi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGYWNlVHlwZSI+VGhlIHR5cGUgb2YgdGhlIGZvbnQgZmFjZSB0aGF0IGNhbiBiZSBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBmb250IGZpbGUuDQorICAgIC8vLyBOb3RlIHRoYXQgZXZlbiBpZiBpc1N1cHBvcnRlZEZvbnRUeXBlIGlzIEZBTFNFLCB0aGUgZm9udEZhY2VUeXBlIHZhbHVlIG1heSBiZSBkaWZmZXJlbnQgZnJvbQ0KKyAgICAvLy8gRFdSSVRFX0ZPTlRfRkFDRV9UWVBFX1VOS05PV04uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJudW1iZXJPZkZhY2VzIj5OdW1iZXIgb2YgZm9udCBmYWNlcyBjb250YWluZWQgaW4gdGhlIGZvbnQgZmlsZS48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUgaWYgdGhlcmUgd2FzIGEgcHJvY2Vzc2luZyBlcnJvciBkdXJpbmcgYW5hbHlzaXMuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIC8vLyA8cmVtYXJrcz4NCisgICAgLy8vIElNUE9SVEFOVDogY2VydGFpbiBmb250IGZpbGUgdHlwZXMgYXJlIHJlY29nbml6ZWQsIGJ1dCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBmb250IHN5c3RlbS4NCisgICAgLy8vIEZvciBleGFtcGxlLCB0aGUgZm9udCBzeXN0ZW0gd2lsbCByZWNvZ25pemUgYSBmaWxlIGFzIGEgVHlwZSAxIGZvbnQgZmlsZSwNCisgICAgLy8vIGJ1dCB3aWxsIG5vdCBiZSBhYmxlIHRvIGNvbnN0cnVjdCBhIGZvbnQgZmFjZSBvYmplY3QgZnJvbSBpdC4gSW4gc3VjaCBzaXR1YXRpb25zLCBBbmFseXplIHdpbGwgc2V0DQorICAgIC8vLyBpc1N1cHBvcnRlZEZvbnRUeXBlIG91dHB1dCBwYXJhbWV0ZXIgdG8gRkFMU0UuDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIFNURE1FVEhPRChBbmFseXplKSgNCisgICAgICAgIF9fb3V0IEJPT0wqIGlzU3VwcG9ydGVkRm9udFR5cGUsDQorICAgICAgICBfX291dCBEV1JJVEVfRk9OVF9GSUxFX1RZUEUqIGZvbnRGaWxlVHlwZSwNCisgICAgICAgIF9fb3V0X29wdCBEV1JJVEVfRk9OVF9GQUNFX1RZUEUqIGZvbnRGYWNlVHlwZSwNCisgICAgICAgIF9fb3V0IFVJTlQzMiogbnVtYmVyT2ZGYWNlcw0KKyAgICAgICAgKSBQVVJFOw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBSZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUgb2YgYSBkZXZpY2UgcGl4ZWwgKGkuZS4sIHRoZSBwaHlzaWNhbCBhcnJhbmdlbWVudCBvZiByZWQsDQorLy8vIGdyZWVuLCBhbmQgYmx1ZSBjb2xvciBjb21wb25lbnRzKSB0aGF0IGlzIGFzc3VtZWQgZm9yIHB1cnBvc2VzIG9mIHJlbmRlcmluZyB0ZXh0Lg0KKy8vLyA8L3N1bW1hcnk+DQorI2lmbmRlZiBEV1JJVEVfUElYRUxfR0VPTUVUUllfREVGSU5FRA0KK2VudW0gRFdSSVRFX1BJWEVMX0dFT01FVFJZDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29sb3IgY29tcG9uZW50cyBvZiBlYWNoIHBpeGVsIGFyZSBhc3N1bWVkIHRvIG9jY3VweSB0aGUgc2FtZSBwb2ludC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1BJWEVMX0dFT01FVFJZX0ZMQVQsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEVhY2ggcGl4ZWwgY29tcHJpc2VzIHRocmVlIHZlcnRpY2FsIHN0cmlwZXMsIHdpdGggcmVkIG9uIHRoZSBsZWZ0LCBncmVlbiBpbiB0aGUgY2VudGVyLCBhbmQgDQorICAgIC8vLyBibHVlIG9uIHRoZSByaWdodC4gVGhpcyBpcyB0aGUgbW9zdCBjb21tb24gcGl4ZWwgZ2VvbWV0cnkgZm9yIExDRCBtb25pdG9ycy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1BJWEVMX0dFT01FVFJZX1JHQiwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRWFjaCBwaXhlbCBjb21wcmlzZXMgdGhyZWUgdmVydGljYWwgc3RyaXBlcywgd2l0aCBibHVlIG9uIHRoZSBsZWZ0LCBncmVlbiBpbiB0aGUgY2VudGVyLCBhbmQgDQorICAgIC8vLyByZWQgb24gdGhlIHJpZ2h0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfUElYRUxfR0VPTUVUUllfQkdSDQorfTsNCisjZGVmaW5lIERXUklURV9QSVhFTF9HRU9NRVRSWV9ERUZJTkVEDQorI2VuZGlmDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBSZXByZXNlbnRzIGEgbWV0aG9kIG9mIHJlbmRlcmluZyBnbHlwaHMuDQorLy8vIDwvc3VtbWFyeT4NCitlbnVtIERXUklURV9SRU5ERVJJTkdfTU9ERQ0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU3BlY2lmaWVzIHRoYXQgdGhlIHJlbmRlcmluZyBtb2RlIGlzIGRldGVybWluZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgZm9udCBhbmQgc2l6ZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1JFTkRFUklOR19NT0RFX0RFRkFVTFQsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNwZWNpZmllcyB0aGF0IG5vIGFudGktYWxpYXNpbmcgaXMgcGVyZm9ybWVkLiBFYWNoIHBpeGVsIGlzIGVpdGhlciBzZXQgdG8gdGhlIGZvcmVncm91bmQgDQorICAgIC8vLyBjb2xvciBvZiB0aGUgdGV4dCBvciByZXRhaW5zIHRoZSBjb2xvciBvZiB0aGUgYmFja2dyb3VuZC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1JFTkRFUklOR19NT0RFX0FMSUFTRUQsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNwZWNpZmllcyBDbGVhclR5cGUgcmVuZGVyaW5nIHdpdGggdGhlIHNhbWUgbWV0cmljcyBhcyBhbGlhc2VkIHRleHQuIEdseXBocyBjYW4gb25seQ0KKyAgICAvLy8gYmUgcG9zaXRpb25lZCBvbiB3aG9sZS1waXhlbCBib3VuZGFyaWVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfUkVOREVSSU5HX01PREVfQ0xFQVJUWVBFX0dESV9DTEFTU0lDLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTcGVjaWZpZXMgQ2xlYXJUeXBlIHJlbmRlcmluZyB3aXRoIHRoZSBzYW1lIG1ldHJpY3MgYXMgdGV4dCByZW5kZXJpbmcgdXNpbmcgR0RJIHVzaW5nIGEgZm9udA0KKyAgICAvLy8gY3JlYXRlZCB3aXRoIENMRUFSVFlQRV9OQVRVUkFMX1FVQUxJVFkuIEdseXBoIG1ldHJpY3MgYXJlIGNsb3NlciB0byB0aGVpciBpZGVhbCB2YWx1ZXMgdGhhbiANCisgICAgLy8vIHdpdGggYWxpYXNlZCB0ZXh0LCBidXQgZ2x5cGhzIGFyZSBzdGlsbCBwb3NpdGlvbmVkIG9uIHdob2xlLXBpeGVsIGJvdW5kYXJpZXMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9SRU5ERVJJTkdfTU9ERV9DTEVBUlRZUEVfR0RJX05BVFVSQUwsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNwZWNpZmllcyBDbGVhclR5cGUgcmVuZGVyaW5nIHdpdGggYW50aS1hbGlhc2luZyBpbiB0aGUgaG9yaXpvbnRhbCBkaW1lbnNpb24gb25seS4gVGhpcyBpcyANCisgICAgLy8vIHR5cGljYWxseSB1c2VkIHdpdGggc21hbGwgdG8gbWVkaXVtIGZvbnQgc2l6ZXMgKHVwIHRvIDE2IHBwZW0pLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfUkVOREVSSU5HX01PREVfQ0xFQVJUWVBFX05BVFVSQUwsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNwZWNpZmllcyBDbGVhclR5cGUgcmVuZGVyaW5nIHdpdGggYW50aS1hbGlhc2luZyBpbiBib3RoIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGRpbWVuc2lvbnMuIA0KKyAgICAvLy8gVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBhdCBsYXJnZXIgc2l6ZXMgdG8gbWFrZXMgY3VydmVzIGFuZCBkaWFnb25hbCBsaW5lcyBsb29rIHNtb290aGVyLCBhdCANCisgICAgLy8vIHRoZSBleHBlbnNlIG9mIHNvbWUgc29mdG5lc3MuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9SRU5ERVJJTkdfTU9ERV9DTEVBUlRZUEVfTkFUVVJBTF9TWU1NRVRSSUMsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNwZWNpZmllcyB0aGF0IHJlbmRlcmluZyBzaG91bGQgYnlwYXNzIHRoZSByYXN0ZXJpemVyIGFuZCB1c2UgdGhlIG91dGxpbmVzIGRpcmVjdGx5LiBUaGlzIGlzIA0KKyAgICAvLy8gdHlwaWNhbGx5IHVzZWQgYXQgdmVyeSBsYXJnZSBzaXplcy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1JFTkRFUklOR19NT0RFX09VVExJTkUNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIERXUklURV9NQVRSSVggc3RydWN0dXJlIHNwZWNpZmllcyB0aGUgZ3JhcGhpY3MgdHJhbnNmb3JtIHRvIGJlIGFwcGxpZWQNCisvLy8gdG8gcmVuZGVyZWQgZ2x5cGhzLg0KKy8vLyA8L3N1bW1hcnk+DQorc3RydWN0IERXUklURV9NQVRSSVgNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEhvcml6b250YWwgc2NhbGluZyAvIGNvc2luZSBvZiByb3RhdGlvbg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBtMTE7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFZlcnRpY2FsIHNoZWFyIC8gc2luZSBvZiByb3RhdGlvbg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBtMTI7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEhvcml6b250YWwgc2hlYXIgLyBuZWdhdGl2ZSBzaW5lIG9mIHJvdGF0aW9uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIG0yMTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVmVydGljYWwgc2NhbGluZyAvIGNvc2luZSBvZiByb3RhdGlvbg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBtMjI7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEhvcml6b250YWwgc2hpZnQgKGFsd2F5cyBvcnRob2dvbmFsIHJlZ2FyZGxlc3Mgb2Ygcm90YXRpb24pDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIGR4Ow0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBWZXJ0aWNhbCBzaGlmdCAoYWx3YXlzIG9ydGhvZ29uYWwgcmVnYXJkbGVzcyBvZiByb3RhdGlvbikNCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRkxPQVQgZHk7DQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBpbnRlcmZhY2UgdGhhdCByZXByZXNlbnRzIHRleHQgcmVuZGVyaW5nIHNldHRpbmdzIGZvciBnbHlwaCByYXN0ZXJpemF0aW9uIGFuZCBmaWx0ZXJpbmcuDQorLy8vIDwvc3VtbWFyeT4NCitpbnRlcmZhY2UgRFdSSVRFX0RFQ0xBUkVfSU5URVJGQUNFKCIyZjBkYTUzYS0yYWRkLTQ3Y2QtODJlZS1kOWVjMzQ2ODhlNzUiKSBJRFdyaXRlUmVuZGVyaW5nUGFyYW1zIDogcHVibGljIElVbmtub3duDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXRzIHRoZSBnYW1tYSB2YWx1ZSB1c2VkIGZvciBnYW1tYSBjb3JyZWN0aW9uLiBWYWxpZCB2YWx1ZXMgbXVzdCBiZQ0KKyAgICAvLy8gZ3JlYXRlciB0aGFuIHplcm8gYW5kIGNhbm5vdCBleGNlZWQgMjU2Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKEZMT0FULCBHZXRHYW1tYSkoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXRzIHRoZSBhbW91bnQgb2YgY29udHJhc3QgZW5oYW5jZW1lbnQuIFZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuDQorICAgIC8vLyBvciBlcXVhbCB0byB6ZXJvLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKEZMT0FULCBHZXRFbmhhbmNlZENvbnRyYXN0KSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgdGhlIENsZWFyVHlwZSBsZXZlbC4gVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gMC4wZiAobm8gQ2xlYXJUeXBlKSANCisgICAgLy8vIHRvIDEuMGYgKGZ1bGwgQ2xlYXJUeXBlKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgU1RETUVUSE9EXyhGTE9BVCwgR2V0Q2xlYXJUeXBlTGV2ZWwpKCkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgcGl4ZWwgZ2VvbWV0cnkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oRFdSSVRFX1BJWEVMX0dFT01FVFJZLCBHZXRQaXhlbEdlb21ldHJ5KSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgdGhlIHJlbmRlcmluZyBtb2RlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKERXUklURV9SRU5ERVJJTkdfTU9ERSwgR2V0UmVuZGVyaW5nTW9kZSkoKSBQVVJFOw0KK307DQorDQorLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMgb2YgRDJEIHR5cGVzDQoraW50ZXJmYWNlIElEMkQxU2ltcGxpZmllZEdlb21ldHJ5U2luazsNCisNCit0eXBlZGVmIElEMkQxU2ltcGxpZmllZEdlb21ldHJ5U2luayBJRFdyaXRlR2VvbWV0cnlTaW5rOw0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIGludGVyZmFjZSB0aGF0IHJlcHJlc2VudHMgYW4gYWJzb2x1dGUgcmVmZXJlbmNlIHRvIGEgZm9udCBmYWNlLg0KKy8vLyBJdCBjb250YWlucyBmb250IGZhY2UgdHlwZSwgYXBwcm9wcmlhdGUgZmlsZSByZWZlcmVuY2VzIGFuZCBmYWNlIGlkZW50aWZpY2F0aW9uIGRhdGEuDQorLy8vIFZhcmlvdXMgZm9udCBkYXRhIHN1Y2ggYXMgbWV0cmljcywgbmFtZXMgYW5kIGdseXBoIG91dGxpbmVzIGlzIG9idGFpbmVkIGZyb20gSURXcml0ZUZvbnRGYWNlLg0KKy8vLyA8L3N1bW1hcnk+DQoraW50ZXJmYWNlIERXUklURV9ERUNMQVJFX0lOVEVSRkFDRSgiNWY0OTgwNGQtNzAyNC00ZDQzLWJmYTktZDI1OTg0ZjUzODQ5IikgSURXcml0ZUZvbnRGYWNlIDogcHVibGljIElVbmtub3duDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBPYnRhaW5zIHRoZSBmaWxlIGZvcm1hdCB0eXBlIG9mIGEgZm9udCBmYWNlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKERXUklURV9GT05UX0ZBQ0VfVFlQRSwgR2V0VHlwZSkoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBPYnRhaW5zIHRoZSBmb250IGZpbGVzIHJlcHJlc2VudGluZyBhIGZvbnQgZmFjZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJudW1iZXJPZkZpbGVzIj5UaGUgbnVtYmVyIG9mIGZpbGVzIHJlcHJlc2VudGluZyB0aGUgZm9udCBmYWNlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZpbGVzIj5Vc2VyIHByb3ZpZGVkIGFycmF5IHRoYXQgc3RvcmVzIHBvaW50ZXJzIHRvIGZvbnQgZmlsZXMgcmVwcmVzZW50aW5nIHRoZSBmb250IGZhY2UuDQorICAgIC8vLyBUaGlzIHBhcmFtZXRlciBjYW4gYmUgTlVMTCBpZiB0aGUgdXNlciBpcyBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIG51bWJlciBvZiBmaWxlcyByZXByZXNlbnRpbmcgdGhlIGZvbnQgZmFjZS4NCisgICAgLy8vIFRoaXMgQVBJIGluY3JlbWVudHMgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBmb250IGZpbGUgcG9pbnRlcnMgcmV0dXJuZWQgYWNjb3JkaW5nIHRvIENPTSBjb252ZW50aW9ucywgYW5kIHRoZSBjbGllbnQNCisgICAgLy8vIHNob3VsZCByZWxlYXNlIHRoZW0gd2hlbiBmaW5pc2hlZC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRGaWxlcykoDQorICAgICAgICBfX2lub3V0IFVJTlQzMiogbnVtYmVyT2ZGaWxlcywNCisgICAgICAgIF9fb3V0X2Vjb3VudF9vcHQoKm51bWJlck9mRmlsZXMpIElEV3JpdGVGb250RmlsZSoqIGZvbnRGaWxlcw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBPYnRhaW5zIHRoZSB6ZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBmb250IGZhY2UgaW4gaXRzIGZvbnQgZmlsZSBvciBmaWxlcy4gSWYgdGhlIGZvbnQgZmlsZXMgY29udGFpbiBhIHNpbmdsZSBmYWNlLA0KKyAgICAvLy8gdGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKFVJTlQzMiwgR2V0SW5kZXgpKCkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gT2J0YWlucyB0aGUgYWxnb3JpdGhtaWMgc3R5bGUgc2ltdWxhdGlvbiBmbGFncyBvZiBhIGZvbnQgZmFjZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgU1RETUVUSE9EXyhEV1JJVEVfRk9OVF9TSU1VTEFUSU9OUywgR2V0U2ltdWxhdGlvbnMpKCkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBmb250IGlzIGEgc3ltYm9sIGZvbnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oQk9PTCwgSXNTeW1ib2xGb250KSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9idGFpbnMgZGVzaWduIHVuaXRzIGFuZCBjb21tb24gbWV0cmljcyBmb3IgdGhlIGZvbnQgZmFjZS4NCisgICAgLy8vIFRoZXNlIG1ldHJpY3MgYXJlIGFwcGxpY2FibGUgdG8gYWxsIHRoZSBnbHlwaHMgd2l0aGluIGEgZm9udGZhY2UgYW5kIGFyZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucyBmb3IgbGF5b3V0IGNhbGN1bGF0aW9ucy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmFjZU1ldHJpY3MiPlBvaW50cyB0byBhIERXUklURV9GT05UX01FVFJJQ1Mgc3RydWN0dXJlIHRvIGZpbGwgaW4uDQorICAgIC8vLyBUaGUgbWV0cmljcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBpbiBmb250IGRlc2lnbiB1bml0cy48L3BhcmFtPg0KKyAgICBTVERNRVRIT0RfKHZvaWQsIEdldE1ldHJpY3MpKA0KKyAgICAgICAgX19vdXQgRFdSSVRFX0ZPTlRfTUVUUklDUyogZm9udEZhY2VNZXRyaWNzDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9idGFpbnMgdGhlIG51bWJlciBvZiBnbHlwaHMgaW4gdGhlIGZvbnQgZmFjZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgU1RETUVUSE9EXyhVSU5UMTYsIEdldEdseXBoQ291bnQpKCkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gT2J0YWlucyBpZGVhbCBnbHlwaCBtZXRyaWNzIGluIGZvbnQgZGVzaWduIHVuaXRzLiBEZXNpZ24gZ2x5cGhzIG1ldHJpY3MgYXJlIHVzZWQgZm9yIGdseXBoIHBvc2l0aW9uaW5nLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoSW5kaWNlcyI+QW4gYXJyYXkgb2YgZ2x5cGggaW5kaWNlcyB0byBjb21wdXRlIHRoZSBtZXRyaWNzIGZvci48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoQ291bnQiPlRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdseXBoSW5kaWNlcyBhcnJheS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoTWV0cmljcyI+QXJyYXkgb2YgRFdSSVRFX0dMWVBIX01FVFJJQ1Mgc3RydWN0dXJlcyBmaWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4NCisgICAgLy8vIFRoZSBtZXRyaWNzIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gYXJlIGluIGZvbnQgZGVzaWduIHVuaXRzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaXNTaWRld2F5cyI+SW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZvbnQgaXMgYmVpbmcgdXNlZCBpbiBhIHNpZGV3YXlzIHJ1bi4NCisgICAgLy8vIFRoaXMgY2FuIGFmZmVjdCB0aGUgZ2x5cGggbWV0cmljcyBpZiB0aGUgZm9udCBoYXMgb2JsaXF1ZSBzaW11bGF0aW9uDQorICAgIC8vLyBiZWNhdXNlIHNpZGV3YXlzIG9ibGlxdWUgc2ltdWxhdGlvbiBkaWZmZXJzIGZyb20gbm9uLXNpZGV3YXlzIG9ibGlxdWUgc2ltdWxhdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuIElmIGFueSBvZiB0aGUgaW5wdXQgZ2x5cGggaW5kaWNlcyBhcmUgb3V0c2lkZSBvZiB0aGUgdmFsaWQgZ2x5cGggaW5kZXggcmFuZ2UNCisgICAgLy8vIGZvciB0aGUgY3VycmVudCBmb250IGZhY2UsIEVfSU5WQUxJREFSRyB3aWxsIGJlIHJldHVybmVkLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0RGVzaWduR2x5cGhNZXRyaWNzKSgNCisgICAgICAgIF9faW5fZWNvdW50KGdseXBoQ291bnQpIFVJTlQxNiBjb25zdCogZ2x5cGhJbmRpY2VzLA0KKyAgICAgICAgVUlOVDMyIGdseXBoQ291bnQsDQorICAgICAgICBfX291dF9lY291bnQoZ2x5cGhDb3VudCkgRFdSSVRFX0dMWVBIX01FVFJJQ1MqIGdseXBoTWV0cmljcywNCisgICAgICAgIEJPT0wgaXNTaWRld2F5cyA9IEZBTFNFDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFJldHVybnMgdGhlIG5vbWluYWwgbWFwcGluZyBvZiBVQ1M0IFVuaWNvZGUgY29kZSBwb2ludHMgdG8gZ2x5cGggaW5kaWNlcyBhcyBkZWZpbmVkIGJ5IHRoZSBmb250ICdDTUFQJyB0YWJsZS4NCisgICAgLy8vIE5vdGUgdGhhdCB0aGlzIG1hcHBpbmcgaXMgcHJpbWFyaWx5IHByb3ZpZGVkIGZvciBsaW5lIGxheW91dCBlbmdpbmVzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgcGh5c2ljYWwgZm9udCBBUEkuDQorICAgIC8vLyBCZWNhdXNlIG9mIE9wZW5UeXBlIGdseXBoIHN1YnN0aXR1dGlvbiBhbmQgbGluZSBsYXlvdXQgY2hhcmFjdGVyIHN1YnN0aXR1dGlvbiwgdGhlIG5vbWluYWwgY29udmVyc2lvbiBkb2VzIG5vdCBhbHdheXMgY29ycmVzcG9uZA0KKyAgICAvLy8gdG8gaG93IGEgVW5pY29kZSBzdHJpbmcgd2lsbCBtYXAgdG8gZ2x5cGggaW5kaWNlcyB3aGVuIHJlbmRlcmluZyB1c2luZyBhIHBhcnRpY3VsYXIgZm9udCBmYWNlLg0KKyAgICAvLy8gQWxzbywgbm90ZSB0aGF0IFVuaWNvZGUgVmFyaWFudCBTZWxlY3RvcnMgcHJvdmlkZSBmb3IgYWx0ZXJuYXRlIG1hcHBpbmdzIGZvciBjaGFyYWN0ZXIgdG8gZ2x5cGguDQorICAgIC8vLyBUaGlzIGNhbGwgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBkZWZhdWx0IHZhcmlhbnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY29kZVBvaW50cyI+QW4gYXJyYXkgb2YgVVNDNCBjb2RlIHBvaW50cyB0byBvYnRhaW4gbm9taW5hbCBnbHlwaCBpbmRpY2VzIGZyb20uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjb2RlUG9pbnRDb3VudCI+VGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgY29kZVBvaW50cyBhcnJheS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoSW5kaWNlcyI+QXJyYXkgb2Ygbm9taW5hbCBnbHlwaCBpbmRpY2VzIGZpbGxlZCBieSB0aGlzIGZ1bmN0aW9uLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldEdseXBoSW5kaWNlcykoDQorICAgICAgICBfX2luX2Vjb3VudChjb2RlUG9pbnRDb3VudCkgVUlOVDMyIGNvbnN0KiBjb2RlUG9pbnRzLA0KKyAgICAgICAgVUlOVDMyIGNvZGVQb2ludENvdW50LA0KKyAgICAgICAgX19vdXRfZWNvdW50KGNvZGVQb2ludENvdW50KSBVSU5UMTYqIGdseXBoSW5kaWNlcw0KKyAgICAgICAgKSBQVVJFOw0KKyANCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRmluZHMgdGhlIHNwZWNpZmllZCBPcGVuVHlwZSBmb250IHRhYmxlIGlmIGl0IGV4aXN0cyBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gaXQuDQorICAgIC8vLyBUaGUgZnVuY3Rpb24gYWNjZXNzZXMgdGhlIHVuZGVybGluZyBmb250IGRhdGEgdmlhIHRoZSBJRFdyaXRlRm9udFN0cmVhbSBpbnRlcmZhY2UNCisgICAgLy8vIGltcGxlbWVudGVkIGJ5IHRoZSBmb250IGZpbGUgbG9hZGVyLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im9wZW5UeXBlVGFibGVUYWciPkZvdXIgY2hhcmFjdGVyIHRhZyBvZiB0YWJsZSB0byBmaW5kLg0KKyAgICAvLy8gICAgIFVzZSB0aGUgRFdSSVRFX01BS0VfT1BFTlRZUEVfVEFHKCkgbWFjcm8gdG8gY3JlYXRlIGl0Lg0KKyAgICAvLy8gICAgIFVubGlrZSBHREksIGl0IGRvZXMgbm90IHN1cHBvcnQgdGhlIHNwZWNpYWwgVFRDRiBhbmQgbnVsbCB0YWdzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZm9udC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRhYmxlRGF0YSI+DQorICAgIC8vLyAgICAgUG9pbnRlciB0byBiYXNlIG9mIHRhYmxlIGluIG1lbW9yeS4NCisgICAgLy8vICAgICBUaGUgcG9pbnRlciBpcyBvbmx5IHZhbGlkIHNvIGxvbmcgYXMgdGhlIEZvbnRGYWNlIHVzZWQgdG8gZ2V0IHRoZSBmb250IHRhYmxlIHN0aWxsIGV4aXN0cw0KKyAgICAvLy8gICAgIChub3QgYW55IG90aGVyIEZvbnRGYWNlLCBldmVuIGlmIGl0IGFjdHVhbGx5IHJlZmVycyB0byB0aGUgc2FtZSBwaHlzaWNhbCBmb250KS4NCisgICAgLy8vIDwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGFibGVTaXplIj5CeXRlIHNpemUgb2YgdGFibGUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0YWJsZUNvbnRleHQiPg0KKyAgICAvLy8gICAgIE9wYXF1ZSBjb250ZXh0IHdoaWNoIG11c3QgYmUgZnJlZWQgYnkgY2FsbGluZyBSZWxlYXNlRm9udFRhYmxlLg0KKyAgICAvLy8gICAgIFRoZSBjb250ZXh0IGFjdHVhbGx5IGNvbWVzIGZyb20gdGhlIGxvd2VyIGxldmVsIElEV3JpdGVGb250RmlsZVN0cmVhbSwNCisgICAgLy8vICAgICB3aGljaCBtYXkgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIG9yIERXcml0ZSBpdHNlbGYuDQorICAgIC8vLyAgICAgSXQgaXMgcG9zc2libGUgZm9yIGEgTlVMTCB0YWJsZUNvbnRleHQgdG8gYmUgcmV0dXJuZWQsIGVzcGVjaWFsbHkgaWYNCisgICAgLy8vICAgICB0aGUgaW1wbGVtZW50YXRpb24gZGlyZWN0bHkgbWVtb3J5IG1hcHMgdGhlIHdob2xlIGZpbGUuDQorICAgIC8vLyAgICAgTmV2ZXJ0aGVsZXNzLCBhbHdheXMgcmVsZWFzZSBpdCBsYXRlciwgYW5kIGRvIG5vdCB1c2UgaXQgYXMgYSB0ZXN0IGZvciBmdW5jdGlvbiBzdWNjZXNzLg0KKyAgICAvLy8gICAgIFRoZSBzYW1lIHRhYmxlIGNhbiBiZSBxdWVyaWVkIG11bHRpcGxlIHRpbWVzLA0KKyAgICAvLy8gICAgIGJ1dCBlYWNoIHJldHVybmVkIGNvbnRleHQgY2FuIGJlIGRpZmZlcmVudCwgc28gcmVsZWFzZSBlYWNoIHNlcGFyYXRlbHkuDQorICAgIC8vLyA8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImV4aXN0cyI+VHJ1ZSBpZiB0YWJsZSBleGlzdHMuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gSWYgYSB0YWJsZSBjYW4gbm90IGJlIGZvdW5kLCB0aGUgZnVuY3Rpb24gd2lsbCBub3QgcmV0dXJuIGFuIGVycm9yLCBidXQgdGhlIHNpemUgd2lsbCBiZSAwLCB0YWJsZSBOVUxMLCBhbmQgZXhpc3RzID0gRkFMU0UuDQorICAgIC8vLyBUaGUgY29udGV4dCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZyZWVkIGlmIHRoZSB0YWJsZSB3YXMgbm90IGZvdW5kLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBUaGUgY29udGV4dCBmb3IgdGhlIHNhbWUgdGFnIG1heSBiZSBkaWZmZXJlbnQgZm9yIGVhY2ggY2FsbCwNCisgICAgLy8vIHNvIGVhY2ggb25lIG11c3QgYmUgaGVsZCBhbmQgcmVsZWFzZWQgc2VwYXJhdGVseS4NCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgU1RETUVUSE9EKFRyeUdldEZvbnRUYWJsZSkoDQorICAgICAgICBfX2luIFVJTlQzMiBvcGVuVHlwZVRhYmxlVGFnLA0KKyAgICAgICAgX19kZXJlZl9vdXRfYmNvdW50KCp0YWJsZVNpemUpIGNvbnN0IHZvaWQqKiB0YWJsZURhdGEsDQorICAgICAgICBfX291dCBVSU5UMzIqIHRhYmxlU2l6ZSwNCisgICAgICAgIF9fb3V0IHZvaWQqKiB0YWJsZUNvbnRleHQsDQorICAgICAgICBfX291dCBCT09MKiBleGlzdHMNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUmVsZWFzZXMgdGhlIHRhYmxlIG9idGFpbmVkIGVhcmxpZXIgZnJvbSBUcnlHZXRGb250VGFibGUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGFibGVDb250ZXh0Ij5PcGFxdWUgY29udGV4dCBmcm9tIFRyeUdldEZvbnRUYWJsZS48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRF8odm9pZCwgUmVsZWFzZUZvbnRUYWJsZSkoDQorICAgICAgICBfX2luIHZvaWQqIHRhYmxlQ29udGV4dA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDb21wdXRlcyB0aGUgb3V0bGluZSBvZiBhIHJ1biBvZiBnbHlwaHMgYnkgY2FsbGluZyBiYWNrIHRvIHRoZSBvdXRsaW5lIHNpbmsgaW50ZXJmYWNlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImVtU2l6ZSI+TG9naWNhbCBzaXplIG9mIHRoZSBmb250IGluIERJUCB1bml0cy4gQSBESVAgKCJkZXZpY2UtaW5kZXBlbmRlbnQgcGl4ZWwiKSBlcXVhbHMgMS85NiBpbmNoLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZ2x5cGhJbmRpY2VzIj5BcnJheSBvZiBnbHlwaCBpbmRpY2VzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZ2x5cGhBZHZhbmNlcyI+T3B0aW9uYWwgYXJyYXkgb2YgZ2x5cGggYWR2YW5jZXMgaW4gRElQcy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoT2Zmc2V0cyI+T3B0aW9uYWwgYXJyYXkgb2YgZ2x5cGggb2Zmc2V0cy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoQ291bnQiPk51bWJlciBvZiBnbHlwaHMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpc1NpZGV3YXlzIj5JZiB0cnVlLCBzcGVjaWZpZXMgdGhhdCBnbHlwaHMgYXJlIHJvdGF0ZWQgOTAgZGVncmVlcyB0byB0aGUgbGVmdCBhbmQgdmVydGljYWwgbWV0cmljcyBhcmUgdXNlZC4NCisgICAgLy8vIEEgY2xpZW50IGNhbiByZW5kZXIgYSB2ZXJ0aWNhbCBydW4gYnkgc3BlY2lmeWluZyBpc1NpZGV3YXlzID0gdHJ1ZSBhbmQgcm90YXRpbmcgdGhlIHJlc3VsdGluZyBnZW9tZXRyeSA5MCBkZWdyZWVzIHRvIHRoZQ0KKyAgICAvLy8gcmlnaHQgdXNpbmcgYSB0cmFuc2Zvcm0uIFRoZSBpc1NpZGV3YXlzIGFuZCBpc1JpZ2h0VG9MZWZ0IHBhcmFtZXRlcnMgY2Fubm90IGJvdGggYmUgdHJ1ZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImlzUmlnaHRUb0xlZnQiPklmIHRydWUsIHNwZWNpZmllcyB0aGF0IHRoZSBhZHZhbmNlIGRpcmVjdGlvbiBpcyByaWdodCB0byBsZWZ0LiBCeSBkZWZhdWx0LCB0aGUgYWR2YW5jZSBkaXJlY3Rpb24NCisgICAgLy8vIGlzIGxlZnQgdG8gcmlnaHQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJnZW9tZXRyeVNpbmsiPkludGVyZmFjZSB0aGUgZnVuY3Rpb24gY2FsbHMgYmFjayB0byBkcmF3IGVhY2ggZWxlbWVudCBvZiB0aGUgZ2VvbWV0cnkuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0R2x5cGhSdW5PdXRsaW5lKSgNCisgICAgICAgIEZMT0FUIGVtU2l6ZSwNCisgICAgICAgIF9faW5fZWNvdW50KGdseXBoQ291bnQpIFVJTlQxNiBjb25zdCogZ2x5cGhJbmRpY2VzLA0KKyAgICAgICAgX19pbl9lY291bnRfb3B0KGdseXBoQ291bnQpIEZMT0FUIGNvbnN0KiBnbHlwaEFkdmFuY2VzLA0KKyAgICAgICAgX19pbl9lY291bnRfb3B0KGdseXBoQ291bnQpIERXUklURV9HTFlQSF9PRkZTRVQgY29uc3QqIGdseXBoT2Zmc2V0cywNCisgICAgICAgIFVJTlQzMiBnbHlwaENvdW50LA0KKyAgICAgICAgQk9PTCBpc1NpZGV3YXlzLA0KKyAgICAgICAgQk9PTCBpc1JpZ2h0VG9MZWZ0LA0KKyAgICAgICAgSURXcml0ZUdlb21ldHJ5U2luayogZ2VvbWV0cnlTaW5rDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIERldGVybWluZXMgdGhlIHJlY29tbWVuZGVkIHJlbmRlcmluZyBtb2RlIGZvciB0aGUgZm9udCBnaXZlbiB0aGUgc3BlY2lmaWVkIHNpemUgYW5kIHJlbmRlcmluZyBwYXJhbWV0ZXJzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImVtU2l6ZSI+TG9naWNhbCBzaXplIG9mIHRoZSBmb250IGluIERJUCB1bml0cy4gQSBESVAgKCJkZXZpY2UtaW5kZXBlbmRlbnQgcGl4ZWwiKSBlcXVhbHMgMS85NiBpbmNoLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0icGl4ZWxzUGVyRGlwIj5OdW1iZXIgb2YgcGh5c2ljYWwgcGl4ZWxzIHBlciBESVAuIEZvciBleGFtcGxlLCBpZiB0aGUgRFBJIG9mIHRoZSByZW5kZXJpbmcgc3VyZmFjZSBpcyA5NiB0aGlzIA0KKyAgICAvLy8gdmFsdWUgaXMgMS4wZi4gSWYgdGhlIERQSSBpcyAxMjAsIHRoaXMgdmFsdWUgaXMgMTIwLjBmLzk2LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibWVhc3VyaW5nTW9kZSI+U3BlY2lmaWVzIG1lYXN1cmluZyBtZXRob2QgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGdseXBocyBpbiB0aGUgZm9udC4NCisgICAgLy8vIFJlbmRlcmVyIGltcGxlbWVudGF0aW9ucyBtYXkgY2hvb3NlIGRpZmZlcmVudCByZW5kZXJpbmcgbW9kZXMgZm9yIGdpdmVuIG1lYXN1cmluZyBtZXRob2RzLCBidXQNCisgICAgLy8vIGJlc3QgcmVzdWx0cyBhcmUgc2VlbiB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIG1vZGVzIG1hdGNoOg0KKyAgICAvLy8gRFdSSVRFX1JFTkRFUklOR19NT0RFX0NMRUFSVFlQRV9OQVRVUkFMIGZvciBEV1JJVEVfTUVBU1VSSU5HX01PREVfTkFUVVJBTA0KKyAgICAvLy8gRFdSSVRFX1JFTkRFUklOR19NT0RFX0NMRUFSVFlQRV9HRElfQ0xBU1NJQyBmb3IgRFdSSVRFX01FQVNVUklOR19NT0RFX0dESV9DTEFTU0lDDQorICAgIC8vLyBEV1JJVEVfUkVOREVSSU5HX01PREVfQ0xFQVJUWVBFX0dESV9OQVRVUkFMIGZvciBEV1JJVEVfTUVBU1VSSU5HX01PREVfR0RJX05BVFVSQUwNCisgICAgLy8vIDwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0icmVuZGVyaW5nUGFyYW1zIj5SZW5kZXJpbmcgcGFyYW1ldGVycyBvYmplY3QuIFRoaXMgcGFyYW1ldGVyIGlzIG5lY2Vzc2FyeSBpbiBjYXNlIHRoZSByZW5kZXJpbmcgcGFyYW1ldGVycyANCisgICAgLy8vIG9iamVjdCBvdmVycmlkZXMgdGhlIHJlbmRlcmluZyBtb2RlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0icmVuZGVyaW5nTW9kZSI+UmVjZWl2ZXMgdGhlIHJlY29tbWVuZGVkIHJlbmRlcmluZyBtb2RlIHRvIHVzZS48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRSZWNvbW1lbmRlZFJlbmRlcmluZ01vZGUpKA0KKyAgICAgICAgRkxPQVQgZW1TaXplLA0KKyAgICAgICAgRkxPQVQgcGl4ZWxzUGVyRGlwLA0KKyAgICAgICAgRFdSSVRFX01FQVNVUklOR19NT0RFIG1lYXN1cmluZ01vZGUsDQorICAgICAgICBJRFdyaXRlUmVuZGVyaW5nUGFyYW1zKiByZW5kZXJpbmdQYXJhbXMsDQorICAgICAgICBfX291dCBEV1JJVEVfUkVOREVSSU5HX01PREUqIHJlbmRlcmluZ01vZGUNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gT2J0YWlucyBkZXNpZ24gdW5pdHMgYW5kIGNvbW1vbiBtZXRyaWNzIGZvciB0aGUgZm9udCBmYWNlLg0KKyAgICAvLy8gVGhlc2UgbWV0cmljcyBhcmUgYXBwbGljYWJsZSB0byBhbGwgdGhlIGdseXBocyB3aXRoaW4gYSBmb250ZmFjZSBhbmQgYXJlIHVzZWQgYnkgYXBwbGljYXRpb25zIGZvciBsYXlvdXQgY2FsY3VsYXRpb25zLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImVtU2l6ZSI+TG9naWNhbCBzaXplIG9mIHRoZSBmb250IGluIERJUCB1bml0cy4gQSBESVAgKCJkZXZpY2UtaW5kZXBlbmRlbnQgcGl4ZWwiKSBlcXVhbHMgMS85NiBpbmNoLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0icGl4ZWxzUGVyRGlwIj5OdW1iZXIgb2YgcGh5c2ljYWwgcGl4ZWxzIHBlciBESVAuIEZvciBleGFtcGxlLCBpZiB0aGUgRFBJIG9mIHRoZSByZW5kZXJpbmcgc3VyZmFjZSBpcyA5NiB0aGlzIA0KKyAgICAvLy8gdmFsdWUgaXMgMS4wZi4gSWYgdGhlIERQSSBpcyAxMjAsIHRoaXMgdmFsdWUgaXMgMTIwLjBmLzk2LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idHJhbnNmb3JtIj5PcHRpb25hbCB0cmFuc2Zvcm0gYXBwbGllZCB0byB0aGUgZ2x5cGhzIGFuZCB0aGVpciBwb3NpdGlvbnMuIFRoaXMgdHJhbnNmb3JtIGlzIGFwcGxpZWQgYWZ0ZXIgdGhlDQorICAgIC8vLyBzY2FsaW5nIHNwZWNpZmllZCBieSB0aGUgZm9udCBzaXplIGFuZCBwaXhlbHNQZXJEaXAuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmFjZU1ldHJpY3MiPlBvaW50cyB0byBhIERXUklURV9GT05UX01FVFJJQ1Mgc3RydWN0dXJlIHRvIGZpbGwgaW4uDQorICAgIC8vLyBUaGUgbWV0cmljcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBpbiBmb250IGRlc2lnbiB1bml0cy48L3BhcmFtPg0KKyAgICBTVERNRVRIT0QoR2V0R2RpQ29tcGF0aWJsZU1ldHJpY3MpKA0KKyAgICAgICAgRkxPQVQgZW1TaXplLA0KKyAgICAgICAgRkxPQVQgcGl4ZWxzUGVyRGlwLA0KKyAgICAgICAgX19pbl9vcHQgRFdSSVRFX01BVFJJWCBjb25zdCogdHJhbnNmb3JtLA0KKyAgICAgICAgX19vdXQgRFdSSVRFX0ZPTlRfTUVUUklDUyogZm9udEZhY2VNZXRyaWNzDQorICAgICAgICApIFBVUkU7DQorDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9idGFpbnMgZ2x5cGggbWV0cmljcyBpbiBmb250IGRlc2lnbiB1bml0cyB3aXRoIHRoZSByZXR1cm4gdmFsdWVzIGNvbXBhdGlibGUgd2l0aCB3aGF0IEdESSB3b3VsZCBwcm9kdWNlLg0KKyAgICAvLy8gR2x5cGhzIG1ldHJpY3MgYXJlIHVzZWQgZm9yIHBvc2l0aW9uaW5nIG9mIGluZGl2aWR1YWwgZ2x5cGhzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImVtU2l6ZSI+TG9naWNhbCBzaXplIG9mIHRoZSBmb250IGluIERJUCB1bml0cy4gQSBESVAgKCJkZXZpY2UtaW5kZXBlbmRlbnQgcGl4ZWwiKSBlcXVhbHMgMS85NiBpbmNoLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0icGl4ZWxzUGVyRGlwIj5OdW1iZXIgb2YgcGh5c2ljYWwgcGl4ZWxzIHBlciBESVAuIEZvciBleGFtcGxlLCBpZiB0aGUgRFBJIG9mIHRoZSByZW5kZXJpbmcgc3VyZmFjZSBpcyA5NiB0aGlzIA0KKyAgICAvLy8gdmFsdWUgaXMgMS4wZi4gSWYgdGhlIERQSSBpcyAxMjAsIHRoaXMgdmFsdWUgaXMgMTIwLjBmLzk2LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idHJhbnNmb3JtIj5PcHRpb25hbCB0cmFuc2Zvcm0gYXBwbGllZCB0byB0aGUgZ2x5cGhzIGFuZCB0aGVpciBwb3NpdGlvbnMuIFRoaXMgdHJhbnNmb3JtIGlzIGFwcGxpZWQgYWZ0ZXIgdGhlDQorICAgIC8vLyBzY2FsaW5nIHNwZWNpZmllZCBieSB0aGUgZm9udCBzaXplIGFuZCBwaXhlbHNQZXJEaXAuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VHZGlOYXR1cmFsIj4NCisgICAgLy8vIFdoZW4gc2V0IHRvIEZBTFNFLCB0aGUgbWV0cmljcyBhcmUgdGhlIHNhbWUgYXMgdGhlIG1ldHJpY3Mgb2YgR0RJIGFsaWFzZWQgdGV4dC4NCisgICAgLy8vIFdoZW4gc2V0IHRvIFRSVUUsIHRoZSBtZXRyaWNzIGFyZSB0aGUgc2FtZSBhcyB0aGUgbWV0cmljcyBvZiB0ZXh0IG1lYXN1cmVkIGJ5IEdESSB1c2luZyBhIGZvbnQNCisgICAgLy8vIGNyZWF0ZWQgd2l0aCBDTEVBUlRZUEVfTkFUVVJBTF9RVUFMSVRZLg0KKyAgICAvLy8gPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJnbHlwaEluZGljZXMiPkFuIGFycmF5IG9mIGdseXBoIGluZGljZXMgdG8gY29tcHV0ZSB0aGUgbWV0cmljcyBmb3IuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJnbHlwaENvdW50Ij5UaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBnbHlwaEluZGljZXMgYXJyYXkuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJnbHlwaE1ldHJpY3MiPkFycmF5IG9mIERXUklURV9HTFlQSF9NRVRSSUNTIHN0cnVjdHVyZXMgZmlsbGVkIGJ5IHRoaXMgZnVuY3Rpb24uDQorICAgIC8vLyBUaGUgbWV0cmljcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBpbiBmb250IGRlc2lnbiB1bml0cy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImlzU2lkZXdheXMiPkluZGljYXRlcyB3aGV0aGVyIHRoZSBmb250IGlzIGJlaW5nIHVzZWQgaW4gYSBzaWRld2F5cyBydW4uDQorICAgIC8vLyBUaGlzIGNhbiBhZmZlY3QgdGhlIGdseXBoIG1ldHJpY3MgaWYgdGhlIGZvbnQgaGFzIG9ibGlxdWUgc2ltdWxhdGlvbg0KKyAgICAvLy8gYmVjYXVzZSBzaWRld2F5cyBvYmxpcXVlIHNpbXVsYXRpb24gZGlmZmVycyBmcm9tIG5vbi1zaWRld2F5cyBvYmxpcXVlIHNpbXVsYXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLiBJZiBhbnkgb2YgdGhlIGlucHV0IGdseXBoIGluZGljZXMgYXJlIG91dHNpZGUgb2YgdGhlIHZhbGlkIGdseXBoIGluZGV4IHJhbmdlDQorICAgIC8vLyBmb3IgdGhlIGN1cnJlbnQgZm9udCBmYWNlLCBFX0lOVkFMSURBUkcgd2lsbCBiZSByZXR1cm5lZC4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldEdkaUNvbXBhdGlibGVHbHlwaE1ldHJpY3MpKA0KKyAgICAgICAgRkxPQVQgZW1TaXplLA0KKyAgICAgICAgRkxPQVQgcGl4ZWxzUGVyRGlwLA0KKyAgICAgICAgX19pbl9vcHQgRFdSSVRFX01BVFJJWCBjb25zdCogdHJhbnNmb3JtLA0KKyAgICAgICAgQk9PTCB1c2VHZGlOYXR1cmFsLA0KKyAgICAgICAgX19pbl9lY291bnQoZ2x5cGhDb3VudCkgVUlOVDE2IGNvbnN0KiBnbHlwaEluZGljZXMsDQorICAgICAgICBVSU5UMzIgZ2x5cGhDb3VudCwNCisgICAgICAgIF9fb3V0X2Vjb3VudChnbHlwaENvdW50KSBEV1JJVEVfR0xZUEhfTUVUUklDUyogZ2x5cGhNZXRyaWNzLA0KKyAgICAgICAgQk9PTCBpc1NpZGV3YXlzID0gRkFMU0UNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KK2ludGVyZmFjZSBJRFdyaXRlRmFjdG9yeTsNCitpbnRlcmZhY2UgSURXcml0ZUZvbnRGaWxlRW51bWVyYXRvcjsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBmb250IGNvbGxlY3Rpb24gbG9hZGVyIGludGVyZmFjZSBpcyB1c2VkIHRvIGNvbnN0cnVjdCBhIGNvbGxlY3Rpb24gb2YgZm9udHMgZ2l2ZW4gYSBwYXJ0aWN1bGFyIHR5cGUgb2Yga2V5Lg0KKy8vLyBUaGUgZm9udCBjb2xsZWN0aW9uIGxvYWRlciBpbnRlcmZhY2UgaXMgcmVjb21tZW5kZWQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgYSBzaW5nbGV0b24gb2JqZWN0Lg0KKy8vLyBJTVBPUlRBTlQ6IGZvbnQgY29sbGVjdGlvbiBsb2FkZXIgaW1wbGVtZW50YXRpb25zIG11c3Qgbm90IHJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCBhIERpcmVjdFdyaXRlIGZhY3RvcnkNCisvLy8gaW5zaWRlIHRoZWlyIGNvbnN0cnVjdG9ycyBhbmQgbXVzdCBub3QgdW5yZWdpc3RlciB0aGVtc2VsdmVzIGluIHRoZWlyIGRlc3RydWN0b3JzLCBiZWNhdXNlDQorLy8vIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRvbiBvcGVyYXRpb25zIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IHRoZSBvYmplY3QgcmVmZXJlbmNlIGNvdW50IHJlc3BlY3RpdmVseS4NCisvLy8gSW5zdGVhZCwgcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdGlvbiBvZiBmb250IGZpbGUgbG9hZGVycyB3aXRoIERpcmVjdFdyaXRlIGZhY3Rvcnkgc2hvdWxkIGJlIHBlcmZvcm1lZA0KKy8vLyBvdXRzaWRlIG9mIHRoZSBmb250IGZpbGUgbG9hZGVyIGltcGxlbWVudGF0aW9uIGFzIGEgc2VwYXJhdGUgc3RlcC4NCisvLy8gPC9zdW1tYXJ5Pg0KK2ludGVyZmFjZSBEV1JJVEVfREVDTEFSRV9JTlRFUkZBQ0UoImNjYTkyMGU0LTUyZjAtNDkyYi1iZmE4LTI5YzcyZWUwYTQ2OCIpIElEV3JpdGVGb250Q29sbGVjdGlvbkxvYWRlciA6IHB1YmxpYyBJVW5rbm93bg0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQ3JlYXRlcyBhIGZvbnQgZmlsZSBlbnVtZXJhdG9yIG9iamVjdCB0aGF0IGVuY2Fwc3VsYXRlcyBhIGNvbGxlY3Rpb24gb2YgZm9udCBmaWxlcy4NCisgICAgLy8vIFRoZSBmb250IHN5c3RlbSBjYWxscyBiYWNrIHRvIHRoaXMgaW50ZXJmYWNlIHRvIGNyZWF0ZSBhIGZvbnQgY29sbGVjdGlvbi4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmYWN0b3J5Ij5GYWN0b3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbG9hZGVyLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY29sbGVjdGlvbktleSI+Rm9udCBjb2xsZWN0aW9uIGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGNvbGxlY3Rpb24gb2YgZm9udCBmaWxlcyB3aXRoaW4NCisgICAgLy8vIHRoZSBzY29wZSBvZiB0aGUgZm9udCBjb2xsZWN0aW9uIGxvYWRlciBiZWluZyB1c2VkLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY29sbGVjdGlvbktleVNpemUiPlNpemUgb2YgdGhlIGZvbnQgY29sbGVjdGlvbiBrZXkgaW4gYnl0ZXMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmlsZUVudW1lcmF0b3IiPlBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZm9udCBmaWxlIGVudW1lcmF0b3IuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQ3JlYXRlRW51bWVyYXRvckZyb21LZXkpKA0KKyAgICAgICAgSURXcml0ZUZhY3RvcnkqIGZhY3RvcnksDQorICAgICAgICBfX2luX2Jjb3VudChjb2xsZWN0aW9uS2V5U2l6ZSkgdm9pZCBjb25zdCogY29sbGVjdGlvbktleSwNCisgICAgICAgIFVJTlQzMiBjb2xsZWN0aW9uS2V5U2l6ZSwNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250RmlsZUVudW1lcmF0b3IqKiBmb250RmlsZUVudW1lcmF0b3INCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIGZvbnQgZmlsZSBlbnVtZXJhdG9yIGludGVyZmFjZSBlbmNhcHN1bGF0ZXMgYSBjb2xsZWN0aW9uIG9mIGZvbnQgZmlsZXMuIFRoZSBmb250IHN5c3RlbSB1c2VzIHRoaXMgaW50ZXJmYWNlDQorLy8vIHRvIGVudW1lcmF0ZSBmb250IGZpbGVzIHdoZW4gYnVpbGRpbmcgYSBmb250IGNvbGxlY3Rpb24uDQorLy8vIDwvc3VtbWFyeT4NCitpbnRlcmZhY2UgRFdSSVRFX0RFQ0xBUkVfSU5URVJGQUNFKCI3Mjc1NTA0OS01ZmY3LTQzNWQtODM0OC00YmU5N2NmYTZjN2MiKSBJRFdyaXRlRm9udEZpbGVFbnVtZXJhdG9yIDogcHVibGljIElVbmtub3duDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBBZHZhbmNlcyB0byB0aGUgbmV4dCBmb250IGZpbGUgaW4gdGhlIGNvbGxlY3Rpb24uIFdoZW4gaXQgaXMgZmlyc3QgY3JlYXRlZCwgdGhlIGVudW1lcmF0b3IgaXMgcG9zaXRpb25lZA0KKyAgICAvLy8gYmVmb3JlIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBjb2xsZWN0aW9uIGFuZCB0aGUgZmlyc3QgY2FsbCB0byBNb3ZlTmV4dCBhZHZhbmNlcyB0byB0aGUgZmlyc3QgZmlsZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJoYXNDdXJyZW50RmlsZSI+UmVjZWl2ZXMgdGhlIHZhbHVlIFRSVUUgaWYgdGhlIGVudW1lcmF0b3IgYWR2YW5jZXMgdG8gYSBmaWxlLCBvciBGQUxTRSBpZg0KKyAgICAvLy8gdGhlIGVudW1lcmF0b3IgYWR2YW5jZWQgcGFzdCB0aGUgbGFzdCBmaWxlIGluIHRoZSBjb2xsZWN0aW9uLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKE1vdmVOZXh0KSgNCisgICAgICAgIF9fb3V0IEJPT0wqIGhhc0N1cnJlbnRGaWxlDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZm9udCBmaWxlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlIj5Qb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIGZvbnQgZmlsZSBvYmplY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0Q3VycmVudEZvbnRGaWxlKSgNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250RmlsZSoqIGZvbnRGaWxlDQorICAgICAgICApIFBVUkU7DQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIHN0cmluZ3MgaW5kZXhlZCBieSBsb2NhbGUgbmFtZS4NCisvLy8gPC9zdW1tYXJ5Pg0KK2ludGVyZmFjZSBEV1JJVEVfREVDTEFSRV9JTlRFUkZBQ0UoIjA4MjU2MjA5LTA5OWEtNGIzNC1iODZkLWMyMmIxMTBlNzc3MSIpIElEV3JpdGVMb2NhbGl6ZWRTdHJpbmdzIDogcHVibGljIElVbmtub3duDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXRzIHRoZSBudW1iZXIgb2YgbGFuZ3VhZ2Uvc3RyaW5nIHBhaXJzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKFVJTlQzMiwgR2V0Q291bnQpKCkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gd2l0aCB0aGUgc3BlY2lmaWVkIGxvY2FsZSBuYW1lLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImxvY2FsZU5hbWUiPkxvY2FsZSBuYW1lIHRvIGxvb2sgZm9yLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaW5kZXgiPlJlY2VpdmVzIHRoZSB6ZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBsb2NhbGUgbmFtZS9zdHJpbmcgcGFpci48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImV4aXN0cyI+UmVjZWl2ZXMgVFJVRSBpZiB0aGUgbG9jYWxlIG5hbWUgZXhpc3RzIG9yIEZBTFNFIGlmIG5vdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuIElmIHRoZSBzcGVjaWZpZWQgbG9jYWxlIG5hbWUgZG9lcyBub3QgZXhpc3QsIHRoZSByZXR1cm4gdmFsdWUgaXMgU19PSywgDQorICAgIC8vLyBidXQgKmluZGV4IGlzIFVJTlRfTUFYIGFuZCAqZXhpc3RzIGlzIEZBTFNFLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoRmluZExvY2FsZU5hbWUpKA0KKyAgICAgICAgX19pbl96IFdDSEFSIGNvbnN0KiBsb2NhbGVOYW1lLCANCisgICAgICAgIF9fb3V0IFVJTlQzMiogaW5kZXgsDQorICAgICAgICBfX291dCBCT09MKiBleGlzdHMNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgbGVuZ3RoIGluIGNoYXJhY3RlcnMgKG5vdCBpbmNsdWRpbmcgdGhlIG51bGwgdGVybWluYXRvcikgb2YgdGhlIGxvY2FsZSBuYW1lIHdpdGggdGhlIHNwZWNpZmllZCBpbmRleC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpbmRleCI+WmVyby1iYXNlZCBpbmRleCBvZiB0aGUgbG9jYWxlIG5hbWUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsZW5ndGgiPlJlY2VpdmVzIHRoZSBsZW5ndGggaW4gY2hhcmFjdGVycywgbm90IGluY2x1ZGluZyB0aGUgbnVsbCB0ZXJtaW5hdG9yLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldExvY2FsZU5hbWVMZW5ndGgpKA0KKyAgICAgICAgVUlOVDMyIGluZGV4LA0KKyAgICAgICAgX19vdXQgVUlOVDMyKiBsZW5ndGgNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQ29waWVzIHRoZSBsb2NhbGUgbmFtZSB3aXRoIHRoZSBzcGVjaWZpZWQgaW5kZXggdG8gdGhlIHNwZWNpZmllZCBhcnJheS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpbmRleCI+WmVyby1iYXNlZCBpbmRleCBvZiB0aGUgbG9jYWxlIG5hbWUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2NhbGVOYW1lIj5DaGFyYWN0ZXIgYXJyYXkgdGhhdCByZWNlaXZlcyB0aGUgbG9jYWxlIG5hbWUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJzaXplIj5TaXplIG9mIHRoZSBhcnJheSBpbiBjaGFyYWN0ZXJzLiBUaGUgc2l6ZSBtdXN0IGluY2x1ZGUgc3BhY2UgZm9yIHRoZSB0ZXJtaW5hdGluZw0KKyAgICAvLy8gbnVsbCBjaGFyYWN0ZXIuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0TG9jYWxlTmFtZSkoDQorICAgICAgICBVSU5UMzIgaW5kZXgsDQorICAgICAgICBfX291dF9lY291bnRfeihzaXplKSBXQ0hBUiogbG9jYWxlTmFtZSwNCisgICAgICAgIFVJTlQzMiBzaXplDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgdGhlIGxlbmd0aCBpbiBjaGFyYWN0ZXJzIChub3QgaW5jbHVkaW5nIHRoZSBudWxsIHRlcm1pbmF0b3IpIG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIGluZGV4Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImluZGV4Ij5aZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBzdHJpbmcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsZW5ndGgiPlJlY2VpdmVzIHRoZSBsZW5ndGggaW4gY2hhcmFjdGVycywgbm90IGluY2x1ZGluZyB0aGUgbnVsbCB0ZXJtaW5hdG9yLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldFN0cmluZ0xlbmd0aCkoDQorICAgICAgICBVSU5UMzIgaW5kZXgsDQorICAgICAgICBfX291dCBVSU5UMzIqIGxlbmd0aA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDb3BpZXMgdGhlIHN0cmluZyB3aXRoIHRoZSBzcGVjaWZpZWQgaW5kZXggdG8gdGhlIHNwZWNpZmllZCBhcnJheS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpbmRleCI+WmVyby1iYXNlZCBpbmRleCBvZiB0aGUgc3RyaW5nLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RyaW5nQnVmZmVyIj5DaGFyYWN0ZXIgYXJyYXkgdGhhdCByZWNlaXZlcyB0aGUgc3RyaW5nLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ic2l6ZSI+U2l6ZSBvZiB0aGUgYXJyYXkgaW4gY2hhcmFjdGVycy4gVGhlIHNpemUgbXVzdCBpbmNsdWRlIHNwYWNlIGZvciB0aGUgdGVybWluYXRpbmcNCisgICAgLy8vIG51bGwgY2hhcmFjdGVyLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldFN0cmluZykoDQorICAgICAgICBVSU5UMzIgaW5kZXgsDQorICAgICAgICBfX291dF9lY291bnRfeihzaXplKSBXQ0hBUiogc3RyaW5nQnVmZmVyLA0KKyAgICAgICAgVUlOVDMyIHNpemUNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KK2ludGVyZmFjZSBJRFdyaXRlRm9udEZhbWlseTsNCitpbnRlcmZhY2UgSURXcml0ZUZvbnQ7DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgSURXcml0ZUZvbnRDb2xsZWN0aW9uIGVuY2Fwc3VsYXRlcyBhIGNvbGxlY3Rpb24gb2YgZm9udHMuDQorLy8vIDwvc3VtbWFyeT4NCitpbnRlcmZhY2UgRFdSSVRFX0RFQ0xBUkVfSU5URVJGQUNFKCJhODRjZWUwMi0zZWVhLTRlZWUtYTgyNy04N2MxYTAyYTBmY2MiKSBJRFdyaXRlRm9udENvbGxlY3Rpb24gOiBwdWJsaWMgSVVua25vd24NCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgdGhlIG51bWJlciBvZiBmb250IGZhbWlsaWVzIGluIHRoZSBjb2xsZWN0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKFVJTlQzMiwgR2V0Rm9udEZhbWlseUNvdW50KSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZXMgYSBmb250IGZhbWlseSBvYmplY3QgZ2l2ZW4gYSB6ZXJvLWJhc2VkIGZvbnQgZmFtaWx5IGluZGV4Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImluZGV4Ij5aZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBmb250IGZhbWlseS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGYW1pbHkiPlJlY2VpdmVzIGEgcG9pbnRlciB0aGUgbmV3bHkgY3JlYXRlZCBmb250IGZhbWlseSBvYmplY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0Rm9udEZhbWlseSkoDQorICAgICAgICBVSU5UMzIgaW5kZXgsDQorICAgICAgICBfX291dCBJRFdyaXRlRm9udEZhbWlseSoqIGZvbnRGYW1pbHkNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRmluZHMgdGhlIGZvbnQgZmFtaWx5IHdpdGggdGhlIHNwZWNpZmllZCBmYW1pbHkgbmFtZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmYW1pbHlOYW1lIj5OYW1lIG9mIHRoZSBmb250IGZhbWlseS4gVGhlIG5hbWUgaXMgbm90IGNhc2Utc2Vuc2l0aXZlIGJ1dCBtdXN0IG90aGVyd2lzZSBleGFjdGx5IG1hdGNoIGEgZmFtaWx5IG5hbWUgaW4gdGhlIGNvbGxlY3Rpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpbmRleCI+UmVjZWl2ZXMgdGhlIHplcm8tYmFzZWQgaW5kZXggb2YgdGhlIG1hdGNoaW5nIGZvbnQgZmFtaWx5IGlmIHRoZSBmYW1pbHkgbmFtZSB3YXMgZm91bmQgb3IgVUlOVF9NQVggb3RoZXJ3aXNlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZXhpc3RzIj5SZWNlaXZlcyBUUlVFIGlmIHRoZSBmYW1pbHkgbmFtZSBleGlzdHMgb3IgRkFMU0Ugb3RoZXJ3aXNlLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4gSWYgdGhlIHNwZWNpZmllZCBmYW1pbHkgbmFtZSBkb2VzIG5vdCBleGlzdCwgdGhlIHJldHVybiB2YWx1ZSBpcyBTX09LLCBidXQgKmluZGV4IGlzIFVJTlRfTUFYIGFuZCAqZXhpc3RzIGlzIEZBTFNFLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoRmluZEZhbWlseU5hbWUpKA0KKyAgICAgICAgX19pbl96IFdDSEFSIGNvbnN0KiBmYW1pbHlOYW1lLA0KKyAgICAgICAgX19vdXQgVUlOVDMyKiBpbmRleCwNCisgICAgICAgIF9fb3V0IEJPT0wqIGV4aXN0cw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXRzIHRoZSBmb250IG9iamVjdCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBzYW1lIHBoeXNpY2FsIGZvbnQgYXMgdGhlIHNwZWNpZmllZCBmb250IGZhY2Ugb2JqZWN0LiBUaGUgc3BlY2lmaWVkIHBoeXNpY2FsIGZvbnQgbXVzdCBiZWxvbmcgDQorICAgIC8vLyB0byB0aGUgZm9udCBjb2xsZWN0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGYWNlIj5Gb250IGZhY2Ugb2JqZWN0IHRoYXQgc3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBmb250LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udCI+UmVjZWl2ZXMgYSBwb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIGZvbnQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwgb3IgTlVMTCBvdGhlcndpc2UuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLiBJZiB0aGUgc3BlY2lmaWVkIHBoeXNpY2FsIGZvbnQgaXMgbm90IHBhcnQgb2YgdGhlIGZvbnQgY29sbGVjdGlvbiB0aGUgcmV0dXJuIHZhbHVlIGlzIERXUklURV9FX05PRk9OVC4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldEZvbnRGcm9tRm9udEZhY2UpKA0KKyAgICAgICAgSURXcml0ZUZvbnRGYWNlKiBmb250RmFjZSwNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250KiogZm9udA0KKyAgICAgICAgKSBQVVJFOw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgSURXcml0ZUZvbnRMaXN0IGludGVyZmFjZSByZXByZXNlbnRzIGEgbGlzdCBvZiBmb250cy4NCisvLy8gPC9zdW1tYXJ5Pg0KK2ludGVyZmFjZSBEV1JJVEVfREVDTEFSRV9JTlRFUkZBQ0UoIjFhMGQ4NDM4LTFkOTctNGVjMS1hZWY5LWEyZmI4NmVkNmFjYiIpIElEV3JpdGVGb250TGlzdCA6IHB1YmxpYyBJVW5rbm93bg0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgZm9udCBjb2xsZWN0aW9uIHRoYXQgY29udGFpbnMgdGhlIGZvbnRzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRDb2xsZWN0aW9uIj5SZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlIGZvbnQgY29sbGVjdGlvbiBvYmplY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0Rm9udENvbGxlY3Rpb24pKA0KKyAgICAgICAgX19vdXQgSURXcml0ZUZvbnRDb2xsZWN0aW9uKiogZm9udENvbGxlY3Rpb24NCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZvbnRzIGluIHRoZSBmb250IGxpc3QuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oVUlOVDMyLCBHZXRGb250Q291bnQpKCkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyBhIGZvbnQgZ2l2ZW4gaXRzIHplcm8tYmFzZWQgaW5kZXguDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaW5kZXgiPlplcm8tYmFzZWQgaW5kZXggb2YgdGhlIGZvbnQgaW4gdGhlIGZvbnQgbGlzdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnQiPlJlY2VpdmVzIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgY3JlYXRlZCBmb250IG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRGb250KSgNCisgICAgICAgIFVJTlQzMiBpbmRleCwgDQorICAgICAgICBfX291dCBJRFdyaXRlRm9udCoqIGZvbnQNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIElEV3JpdGVGb250RmFtaWx5IGludGVyZmFjZSByZXByZXNlbnRzIGEgc2V0IG9mIGZvbnRzIHRoYXQgc2hhcmUgdGhlIHNhbWUgZGVzaWduIGJ1dCBhcmUgZGlmZmVyZW50aWF0ZWQNCisvLy8gYnkgd2VpZ2h0LCBzdHJldGNoLCBhbmQgc3R5bGUuDQorLy8vIDwvc3VtbWFyeT4NCitpbnRlcmZhY2UgRFdSSVRFX0RFQ0xBUkVfSU5URVJGQUNFKCJkYTIwZDhlZi04MTJhLTRjNDMtOTgwMi02MmVjNGFiZDdhZGQiKSBJRFdyaXRlRm9udEZhbWlseSA6IHB1YmxpYyBJRFdyaXRlRm9udExpc3QNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZXMgYW4gbG9jYWxpemVkIHN0cmluZ3Mgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGZhbWlseSBuYW1lcyBmb3IgdGhlIGZvbnQgZmFtaWx5LCBpbmRleGVkIGJ5IGxvY2FsZSBuYW1lLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im5hbWVzIj5SZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgbG9jYWxpemVkIHN0cmluZ3Mgb2JqZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldEZhbWlseU5hbWVzKSgNCisgICAgICAgIF9fb3V0IElEV3JpdGVMb2NhbGl6ZWRTdHJpbmdzKiogbmFtZXMNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgZm9udCB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHByb3BlcnRpZXMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0id2VpZ2h0Ij5SZXF1ZXN0ZWQgZm9udCB3ZWlnaHQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJzdHJldGNoIj5SZXF1ZXN0ZWQgZm9udCBzdHJldGNoLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ic3R5bGUiPlJlcXVlc3RlZCBmb250IHN0eWxlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibWF0Y2hpbmdGb250Ij5SZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZm9udCBvYmplY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0Rmlyc3RNYXRjaGluZ0ZvbnQpKA0KKyAgICAgICAgRFdSSVRFX0ZPTlRfV0VJR0hUICB3ZWlnaHQsDQorICAgICAgICBEV1JJVEVfRk9OVF9TVFJFVENIIHN0cmV0Y2gsDQorICAgICAgICBEV1JJVEVfRk9OVF9TVFlMRSAgIHN0eWxlLA0KKyAgICAgICAgX19vdXQgSURXcml0ZUZvbnQqKiBtYXRjaGluZ0ZvbnQNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyBhIGxpc3Qgb2YgZm9udHMgaW4gdGhlIGZvbnQgZmFtaWx5IHJhbmtlZCBpbiBvcmRlciBvZiBob3cgd2VsbCB0aGV5IG1hdGNoIHRoZSBzcGVjaWZpZWQgcHJvcGVydGllcy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ3ZWlnaHQiPlJlcXVlc3RlZCBmb250IHdlaWdodC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InN0cmV0Y2giPlJlcXVlc3RlZCBmb250IHN0cmV0Y2guPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJzdHlsZSI+UmVxdWVzdGVkIGZvbnQgc3R5bGUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJtYXRjaGluZ0ZvbnRzIj5SZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZm9udCBsaXN0IG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRNYXRjaGluZ0ZvbnRzKSgNCisgICAgICAgIERXUklURV9GT05UX1dFSUdIVCAgICAgIHdlaWdodCwNCisgICAgICAgIERXUklURV9GT05UX1NUUkVUQ0ggICAgIHN0cmV0Y2gsDQorICAgICAgICBEV1JJVEVfRk9OVF9TVFlMRSAgICAgICBzdHlsZSwNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250TGlzdCoqIG1hdGNoaW5nRm9udHMNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIElEV3JpdGVGb250IGludGVyZmFjZSByZXByZXNlbnRzIGEgcGh5c2ljYWwgZm9udCBpbiBhIGZvbnQgY29sbGVjdGlvbi4NCisvLy8gPC9zdW1tYXJ5Pg0KK2ludGVyZmFjZSBEV1JJVEVfREVDTEFSRV9JTlRFUkZBQ0UoImFjZDE2Njk2LThjMTQtNGY1ZC04NzdlLWZlM2ZjMWQzMjczNyIpIElEV3JpdGVGb250IDogcHVibGljIElVbmtub3duDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXRzIHRoZSBmb250IGZhbWlseSB0byB3aGljaCB0aGUgc3BlY2lmaWVkIGZvbnQgYmVsb25ncy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmFtaWx5Ij5SZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlIGZvbnQgZmFtaWx5IG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRGb250RmFtaWx5KSgNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250RmFtaWx5KiogZm9udEZhbWlseQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXRzIHRoZSB3ZWlnaHQgb2YgdGhlIHNwZWNpZmllZCBmb250Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKERXUklURV9GT05UX1dFSUdIVCwgR2V0V2VpZ2h0KSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgdGhlIHN0cmV0Y2ggKGFrYS4gd2lkdGgpIG9mIHRoZSBzcGVjaWZpZWQgZm9udC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgU1RETUVUSE9EXyhEV1JJVEVfRk9OVF9TVFJFVENILCBHZXRTdHJldGNoKSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgdGhlIHN0eWxlIChha2EuIHNsb3BlKSBvZiB0aGUgc3BlY2lmaWVkIGZvbnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oRFdSSVRFX0ZPTlRfU1RZTEUsIEdldFN0eWxlKSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFJldHVybnMgVFJVRSBpZiB0aGUgZm9udCBpcyBhIHN5bWJvbCBmb250IG9yIEZBTFNFIGlmIG5vdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgU1RETUVUSE9EXyhCT09MLCBJc1N5bWJvbEZvbnQpKCkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyBhIGxvY2FsaXplZCBzdHJpbmdzIGNvbGxlY3Rpb24gY29udGFpbmluZyB0aGUgZmFjZSBuYW1lcyBmb3IgdGhlIGZvbnQgKGUuZy4sIFJlZ3VsYXIgb3IgQm9sZCksIGluZGV4ZWQgYnkgbG9jYWxlIG5hbWUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibmFtZXMiPlJlY2VpdmVzIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgY3JlYXRlZCBsb2NhbGl6ZWQgc3RyaW5ncyBvYmplY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0RmFjZU5hbWVzKSgNCisgICAgICAgIF9fb3V0IElEV3JpdGVMb2NhbGl6ZWRTdHJpbmdzKiogbmFtZXMNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyBhIGxvY2FsaXplZCBzdHJpbmdzIGNvbGxlY3Rpb24gY29udGFpbmluZyB0aGUgc3BlY2lmaWVkIGluZm9ybWF0aW9uYWwgc3RyaW5ncywgaW5kZXhlZCBieSBsb2NhbGUgbmFtZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpbmZvcm1hdGlvbmFsU3RyaW5nSUQiPklkZW50aWZpZXMgdGhlIHN0cmluZyB0byBnZXQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpbmZvcm1hdGlvbmFsU3RyaW5ncyI+UmVjZWl2ZXMgYSBwb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIGxvY2FsaXplZCBzdHJpbmdzIG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImV4aXN0cyI+UmVjZWl2ZXMgdGhlIHZhbHVlIFRSVUUgaWYgdGhlIGZvbnQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdHJpbmcgSUQgb3IgRkFMU0UgaWYgbm90LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4gSWYgdGhlIGZvbnQgZG9lcyBub3QgY29udGFpbiB0aGUgc3BlY2lmaWVkIHN0cmluZywgdGhlIHJldHVybiB2YWx1ZSBpcyBTX09LIGJ1dCANCisgICAgLy8vIGluZm9ybWF0aW9uYWxTdHJpbmdzIHJlY2VpdmVzIGEgTlVMTCBwb2ludGVyIGFuZCBleGlzdHMgcmVjZWl2ZXMgdGhlIHZhbHVlIEZBTFNFLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0SW5mb3JtYXRpb25hbFN0cmluZ3MpKA0KKyAgICAgICAgRFdSSVRFX0lORk9STUFUSU9OQUxfU1RSSU5HX0lEIGluZm9ybWF0aW9uYWxTdHJpbmdJRCwNCisgICAgICAgIF9fb3V0IElEV3JpdGVMb2NhbGl6ZWRTdHJpbmdzKiogaW5mb3JtYXRpb25hbFN0cmluZ3MsDQorICAgICAgICBfX291dCBCT09MKiBleGlzdHMNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyBhIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoYXQgc2ltdWxhdGlvbiBhcmUgYXBwbGllZCB0byB0aGUgc3BlY2lmaWVkIGZvbnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oRFdSSVRFX0ZPTlRfU0lNVUxBVElPTlMsIEdldFNpbXVsYXRpb25zKSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgdGhlIG1ldHJpY3MgZm9yIHRoZSBmb250Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRNZXRyaWNzIj5SZWNlaXZlcyB0aGUgZm9udCBtZXRyaWNzLjwvcGFyYW0+DQorICAgIFNURE1FVEhPRF8odm9pZCwgR2V0TWV0cmljcykoDQorICAgICAgICBfX291dCBEV1JJVEVfRk9OVF9NRVRSSUNTKiBmb250TWV0cmljcw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZvbnQgc3VwcG9ydHMgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idW5pY29kZVZhbHVlIj5Vbmljb2RlIChVQ1MtNCkgY2hhcmFjdGVyIHZhbHVlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZXhpc3RzIj5SZWNlaXZlcyB0aGUgdmFsdWUgVFJVRSBpZiB0aGUgZm9udCBzdXBwb3J0cyB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBvciBGQUxTRSBpZiBub3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoSGFzQ2hhcmFjdGVyKSgNCisgICAgICAgIFVJTlQzMiB1bmljb2RlVmFsdWUsDQorICAgICAgICBfX291dCBCT09MKiBleGlzdHMNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQ3JlYXRlcyBhIGZvbnQgZmFjZSBvYmplY3QgZm9yIHRoZSBmb250Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGYWNlIj5SZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZm9udCBmYWNlIG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVGb250RmFjZSkoDQorICAgICAgICBfX291dCBJRFdyaXRlRm9udEZhY2UqKiBmb250RmFjZQ0KKyAgICAgICAgKSBQVVJFOw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBEaXJlY3Rpb24gZm9yIGhvdyByZWFkaW5nIHByb2dyZXNzZXMuDQorLy8vIDwvc3VtbWFyeT4NCitlbnVtIERXUklURV9SRUFESU5HX0RJUkVDVElPTg0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUmVhZGluZyBwcm9ncmVzc2VzIGZyb20gbGVmdCB0byByaWdodC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1JFQURJTkdfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFJlYWRpbmcgcHJvZ3Jlc3NlcyBmcm9tIHJpZ2h0IHRvIGxlZnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9SRUFESU5HX0RJUkVDVElPTl9SSUdIVF9UT19MRUZUDQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIERpcmVjdGlvbiBmb3IgaG93IGxpbmVzIG9mIHRleHQgYXJlIHBsYWNlZCByZWxhdGl2ZSB0byBvbmUgYW5vdGhlci4NCisvLy8gPC9zdW1tYXJ5Pg0KK2VudW0gRFdSSVRFX0ZMT1dfRElSRUNUSU9ODQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUZXh0IGxpbmVzIGFyZSBwbGFjZWQgZnJvbSB0b3AgdG8gYm90dG9tLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRkxPV19ESVJFQ1RJT05fVE9QX1RPX0JPVFRPTQ0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBBbGlnbm1lbnQgb2YgcGFyYWdyYXBoIHRleHQgYWxvbmcgdGhlIHJlYWRpbmcgZGlyZWN0aW9uIGF4aXMgcmVsYXRpdmUgdG8gDQorLy8vIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBlZGdlIG9mIHRoZSBsYXlvdXQgYm94Lg0KKy8vLyA8L3N1bW1hcnk+DQorZW51bSBEV1JJVEVfVEVYVF9BTElHTk1FTlQNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHBhcmFncmFwaCB0ZXh0IGlzIGFsaWduZWQgdG8gdGhlIGxheW91dCBib3gncyBsZWFkaW5nIGVkZ2UuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9URVhUX0FMSUdOTUVOVF9MRUFESU5HLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgcGFyYWdyYXBoIHRleHQgaXMgYWxpZ25lZCB0byB0aGUgbGF5b3V0IGJveCdzIHRyYWlsaW5nIGVkZ2UuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9URVhUX0FMSUdOTUVOVF9UUkFJTElORywNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIGNlbnRlciBvZiB0aGUgcGFyYWdyYXBoIHRleHQgaXMgYWxpZ25lZCB0byB0aGUgY2VudGVyIG9mIHRoZSBsYXlvdXQgYm94Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfVEVYVF9BTElHTk1FTlRfQ0VOVEVSDQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIEFsaWdubWVudCBvZiBwYXJhZ3JhcGggdGV4dCBhbG9uZyB0aGUgZmxvdyBkaXJlY3Rpb24gYXhpcyByZWxhdGl2ZSB0byB0aGUNCisvLy8gZmxvdydzIGJlZ2lubmluZyBhbmQgZW5kaW5nIGVkZ2Ugb2YgdGhlIGxheW91dCBib3guDQorLy8vIDwvc3VtbWFyeT4NCitlbnVtIERXUklURV9QQVJBR1JBUEhfQUxJR05NRU5UDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgZmlyc3QgbGluZSBvZiBwYXJhZ3JhcGggaXMgYWxpZ25lZCB0byB0aGUgZmxvdydzIGJlZ2lubmluZyBlZGdlIG9mIHRoZSBsYXlvdXQgYm94Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfUEFSQUdSQVBIX0FMSUdOTUVOVF9ORUFSLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgbGFzdCBsaW5lIG9mIHBhcmFncmFwaCBpcyBhbGlnbmVkIHRvIHRoZSBmbG93J3MgZW5kaW5nIGVkZ2Ugb2YgdGhlIGxheW91dCBib3guDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9QQVJBR1JBUEhfQUxJR05NRU5UX0ZBUiwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIGNlbnRlciBvZiB0aGUgcGFyYWdyYXBoIGlzIGFsaWduZWQgdG8gdGhlIGNlbnRlciBvZiB0aGUgZmxvdyBvZiB0aGUgbGF5b3V0IGJveC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1BBUkFHUkFQSF9BTElHTk1FTlRfQ0VOVEVSDQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFdvcmQgd3JhcHBpbmcgaW4gbXVsdGlsaW5lIHBhcmFncmFwaC4NCisvLy8gPC9zdW1tYXJ5Pg0KK2VudW0gRFdSSVRFX1dPUkRfV1JBUFBJTkcNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFdvcmRzIGFyZSBicm9rZW4gYWNyb3NzIGxpbmVzIHRvIGF2b2lkIHRleHQgb3ZlcmZsb3dpbmcgdGhlIGxheW91dCBib3guDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9XT1JEX1dSQVBQSU5HX1dSQVAsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFdvcmRzIGFyZSBrZXB0IHdpdGhpbiB0aGUgc2FtZSBsaW5lIGV2ZW4gd2hlbiBpdCBvdmVyZmxvd3MgdGhlIGxheW91dCBib3guDQorICAgIC8vLyBUaGlzIG9wdGlvbiBpcyBvZnRlbiB1c2VkIHdpdGggc2Nyb2xsaW5nIHRvIHJldmVhbCBvdmVyZmxvdyB0ZXh0LiANCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1dPUkRfV1JBUFBJTkdfTk9fV1JBUA0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgbWV0aG9kIHVzZWQgZm9yIGxpbmUgc3BhY2luZyBpbiBsYXlvdXQuDQorLy8vIDwvc3VtbWFyeT4NCitlbnVtIERXUklURV9MSU5FX1NQQUNJTkdfTUVUSE9EDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBMaW5lIHNwYWNpbmcgZGVwZW5kcyBzb2xlbHkgb24gdGhlIGNvbnRlbnQsIGdyb3dpbmcgdG8gYWNjb21vZGF0ZSB0aGUgc2l6ZSBvZiBmb250cyBhbmQgaW5saW5lIG9iamVjdHMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9MSU5FX1NQQUNJTkdfTUVUSE9EX0RFRkFVTFQsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIExpbmVzIGFyZSBleHBsaWNpdGx5IHNldCB0byB1bmlmb3JtIHNwYWNpbmcsIHJlZ2FyZGxlc3Mgb2YgY29udGFpbmVkIGZvbnQgc2l6ZXMuDQorICAgIC8vLyBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gYXZvaWQgdGhlIHVuZXZlbiBhcHBlYXJhbmNlIHRoYXQgY2FuIG9jY3VyIGZyb20gZm9udCBmYWxsYmFjay4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX0xJTkVfU1BBQ0lOR19NRVRIT0RfVU5JRk9STQ0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUZXh0IGdyYW51bGFyaXR5IHVzZWQgdG8gdHJpbSB0ZXh0IG92ZXJmbG93aW5nIHRoZSBsYXlvdXQgYm94Lg0KKy8vLyA8L3N1bW1hcnk+DQorZW51bSBEV1JJVEVfVFJJTU1JTkdfR1JBTlVMQVJJVFkNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE5vIHRyaW1taW5nIG9jY3Vycy4gVGV4dCBmbG93cyBiZXlvbmQgdGhlIGxheW91dCB3aWR0aC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1RSSU1NSU5HX0dSQU5VTEFSSVRZX05PTkUsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRyaW1taW5nIG9jY3VycyBhdCBjaGFyYWN0ZXIgY2x1c3RlciBib3VuZGFyeS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1RSSU1NSU5HX0dSQU5VTEFSSVRZX0NIQVJBQ1RFUiwNCisgICAgDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRyaW1taW5nIG9jY3VycyBhdCB3b3JkIGJvdW5kYXJ5Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfVFJJTU1JTkdfR1JBTlVMQVJJVFlfV09SRAkNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVHlwb2dyYXBoaWMgZmVhdHVyZSBvZiB0ZXh0IHN1cHBsaWVkIGJ5IHRoZSBmb250Lg0KKy8vLyA8L3N1bW1hcnk+DQorZW51bSBEV1JJVEVfRk9OVF9GRUFUVVJFX1RBRw0KK3sNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfQUxURVJOQVRJVkVfRlJBQ1RJT05TICAgICAgICAgICAgICAgPSAweDYzNzI2NjYxLCAvLyAnYWZyYycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfUEVUSVRFX0NBUElUQUxTX0ZST01fQ0FQSVRBTFMgICAgICAgPSAweDYzNzAzMjYzLCAvLyAnYzJwYycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU01BTExfQ0FQSVRBTFNfRlJPTV9DQVBJVEFMUyAgICAgICAgPSAweDYzNzMzMjYzLCAvLyAnYzJzYycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfQ09OVEVYVFVBTF9BTFRFUk5BVEVTICAgICAgICAgICAgICAgPSAweDc0NmM2MTYzLCAvLyAnY2FsdCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfQ0FTRV9TRU5TSVRJVkVfRk9STVMgICAgICAgICAgICAgICAgPSAweDY1NzM2MTYzLCAvLyAnY2FzZScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfR0xZUEhfQ09NUE9TSVRJT05fREVDT01QT1NJVElPTiAgICAgPSAweDcwNmQ2MzYzLCAvLyAnY2NtcCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfQ09OVEVYVFVBTF9MSUdBVFVSRVMgICAgICAgICAgICAgICAgPSAweDY3Njk2YzYzLCAvLyAnY2xpZycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfQ0FQSVRBTF9TUEFDSU5HICAgICAgICAgICAgICAgICAgICAgPSAweDcwNzM3MDYzLCAvLyAnY3BzcCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfQ09OVEVYVFVBTF9TV0FTSCAgICAgICAgICAgICAgICAgICAgPSAweDY4Nzc3MzYzLCAvLyAnY3N3aCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfQ1VSU0lWRV9QT1NJVElPTklORyAgICAgICAgICAgICAgICAgPSAweDczNzI3NTYzLCAvLyAnY3VycycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfREVGQVVMVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDc0NmM2NjY0LCAvLyAnZGZsdCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfRElTQ1JFVElPTkFSWV9MSUdBVFVSRVMgICAgICAgICAgICAgPSAweDY3Njk2YzY0LCAvLyAnZGxpZycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfRVhQRVJUX0ZPUk1TICAgICAgICAgICAgICAgICAgICAgICAgPSAweDc0NzA3ODY1LCAvLyAnZXhwdCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfRlJBQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDYzNjE3MjY2LCAvLyAnZnJhYycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfRlVMTF9XSURUSCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDY0Njk3NzY2LCAvLyAnZndpZCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSEFMRl9GT1JNUyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDY2NmM2MTY4LCAvLyAnaGFsZicNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSEFMQU5UX0ZPUk1TICAgICAgICAgICAgICAgICAgICAgICAgPSAweDZlNmM2MTY4LCAvLyAnaGFsbicNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfQUxURVJOQVRFX0hBTEZfV0lEVEggICAgICAgICAgICAgICAgPSAweDc0NmM2MTY4LCAvLyAnaGFsdCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSElTVE9SSUNBTF9GT1JNUyAgICAgICAgICAgICAgICAgICAgPSAweDc0NzM2OTY4LCAvLyAnaGlzdCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSE9SSVpPTlRBTF9LQU5BX0FMVEVSTkFURVMgICAgICAgICAgPSAweDYxNmU2YjY4LCAvLyAnaGtuYScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSElTVE9SSUNBTF9MSUdBVFVSRVMgICAgICAgICAgICAgICAgPSAweDY3Njk2YzY4LCAvLyAnaGxpZycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSEFMRl9XSURUSCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDY0Njk3NzY4LCAvLyAnaHdpZCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSE9KT19LQU5KSV9GT1JNUyAgICAgICAgICAgICAgICAgICAgPSAweDZmNmE2ZjY4LCAvLyAnaG9qbycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSklTMDRfRk9STVMgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDM0MzA3MDZhLCAvLyAnanAwNCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSklTNzhfRk9STVMgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDM4Mzc3MDZhLCAvLyAnanA3OCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSklTODNfRk9STVMgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDMzMzg3MDZhLCAvLyAnanA4MycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfSklTOTBfRk9STVMgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDMwMzk3MDZhLCAvLyAnanA5MCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfS0VSTklORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDZlNzI2NTZiLCAvLyAna2VybicNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RBTkRBUkRfTElHQVRVUkVTICAgICAgICAgICAgICAgICAgPSAweDYxNjc2OTZjLCAvLyAnbGlnYScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfTElOSU5HX0ZJR1VSRVMgICAgICAgICAgICAgICAgICAgICAgPSAweDZkNzU2ZTZjLCAvLyAnbG51bScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfTE9DQUxJWkVEX0ZPUk1TICAgICAgICAgICAgICAgICAgICAgPSAweDZjNjM2ZjZjLCAvLyAnbG9jbCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfTUFSS19QT1NJVElPTklORyAgICAgICAgICAgICAgICAgICAgPSAweDZiNzI2MTZkLCAvLyAnbWFyaycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfTUFUSEVNQVRJQ0FMX0dSRUVLICAgICAgICAgICAgICAgICAgPSAweDZiNzI2NzZkLCAvLyAnbWdyaycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfTUFSS19UT19NQVJLX1BPU0lUSU9OSU5HICAgICAgICAgICAgPSAweDZiNmQ2YjZkLCAvLyAnbWttaycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfQUxURVJOQVRFX0FOTk9UQVRJT05fRk9STVMgICAgICAgICAgPSAweDc0NmM2MTZlLCAvLyAnbmFsdCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfTkxDX0tBTkpJX0ZPUk1TICAgICAgICAgICAgICAgICAgICAgPSAweDZiNjM2YzZlLCAvLyAnbmxjaycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfT0xEX1NUWUxFX0ZJR1VSRVMgICAgICAgICAgICAgICAgICAgPSAweDZkNzU2ZTZmLCAvLyAnb251bScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfT1JESU5BTFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDZlNjQ3MjZmLCAvLyAnb3JkbicNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfUFJPUE9SVElPTkFMX0FMVEVSTkFURV9XSURUSCAgICAgICAgPSAweDc0NmM2MTcwLCAvLyAncGFsdCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfUEVUSVRFX0NBUElUQUxTICAgICAgICAgICAgICAgICAgICAgPSAweDcwNjE2MzcwLCAvLyAncGNhcCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfUFJPUE9SVElPTkFMX0ZJR1VSRVMgICAgICAgICAgICAgICAgPSAweDZkNzU2ZTcwLCAvLyAncG51bScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfUFJPUE9SVElPTkFMX1dJRFRIUyAgICAgICAgICAgICAgICAgPSAweDY0Njk3NzcwLCAvLyAncHdpZCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfUVVBUlRFUl9XSURUSFMgICAgICAgICAgICAgICAgICAgICAgPSAweDY0Njk3NzcxLCAvLyAncXdpZCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfUkVRVUlSRURfTElHQVRVUkVTICAgICAgICAgICAgICAgICAgPSAweDY3Njk2YzcyLCAvLyAncmxpZycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfUlVCWV9OT1RBVElPTl9GT1JNUyAgICAgICAgICAgICAgICAgPSAweDc5NjI3NTcyLCAvLyAncnVieScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX0FMVEVSTkFURVMgICAgICAgICAgICAgICAgPSAweDc0NmM2MTczLCAvLyAnc2FsdCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU0NJRU5USUZJQ19JTkZFUklPUlMgICAgICAgICAgICAgICAgPSAweDY2NmU2OTczLCAvLyAnc2luZicNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU01BTExfQ0FQSVRBTFMgICAgICAgICAgICAgICAgICAgICAgPSAweDcwNjM2ZDczLCAvLyAnc21jcCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU0lNUExJRklFRF9GT1JNUyAgICAgICAgICAgICAgICAgICAgPSAweDZjNzA2ZDczLCAvLyAnc21wbCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xICAgICAgICAgICAgICAgICAgICAgPSAweDMxMzA3MzczLCAvLyAnc3MwMScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8yICAgICAgICAgICAgICAgICAgICAgPSAweDMyMzA3MzczLCAvLyAnc3MwMicNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8zICAgICAgICAgICAgICAgICAgICAgPSAweDMzMzA3MzczLCAvLyAnc3MwMycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF80ICAgICAgICAgICAgICAgICAgICAgPSAweDM0MzA3MzczLCAvLyAnc3MwNCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF81ICAgICAgICAgICAgICAgICAgICAgPSAweDM1MzA3MzczLCAvLyAnc3MwNScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF82ICAgICAgICAgICAgICAgICAgICAgPSAweDM2MzA3MzczLCAvLyAnc3MwNicNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF83ICAgICAgICAgICAgICAgICAgICAgPSAweDM3MzA3MzczLCAvLyAnc3MwNycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF84ICAgICAgICAgICAgICAgICAgICAgPSAweDM4MzA3MzczLCAvLyAnc3MwOCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF85ICAgICAgICAgICAgICAgICAgICAgPSAweDM5MzA3MzczLCAvLyAnc3MwOScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xMCAgICAgICAgICAgICAgICAgICAgPSAweDMwMzE3MzczLCAvLyAnc3MxMCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xMSAgICAgICAgICAgICAgICAgICAgPSAweDMxMzE3MzczLCAvLyAnc3MxMScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xMiAgICAgICAgICAgICAgICAgICAgPSAweDMyMzE3MzczLCAvLyAnc3MxMicNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xMyAgICAgICAgICAgICAgICAgICAgPSAweDMzMzE3MzczLCAvLyAnc3MxMycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xNCAgICAgICAgICAgICAgICAgICAgPSAweDM0MzE3MzczLCAvLyAnc3MxNCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xNSAgICAgICAgICAgICAgICAgICAgPSAweDM1MzE3MzczLCAvLyAnc3MxNScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xNiAgICAgICAgICAgICAgICAgICAgPSAweDM2MzE3MzczLCAvLyAnc3MxNicNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xNyAgICAgICAgICAgICAgICAgICAgPSAweDM3MzE3MzczLCAvLyAnc3MxNycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xOCAgICAgICAgICAgICAgICAgICAgPSAweDM4MzE3MzczLCAvLyAnc3MxOCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8xOSAgICAgICAgICAgICAgICAgICAgPSAweDM5MzE3MzczLCAvLyAnc3MxOScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1RZTElTVElDX1NFVF8yMCAgICAgICAgICAgICAgICAgICAgPSAweDMwMzI3MzczLCAvLyAnc3MyMCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1VCU0NSSVBUICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDczNjI3NTczLCAvLyAnc3VicycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1VQRVJTQ1JJUFQgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDczNzA3NTczLCAvLyAnc3VwcycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU1dBU0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDY4NzM3NzczLCAvLyAnc3dzaCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfVElUTElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDZjNzQ2OTc0LCAvLyAndGl0bCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfVFJBRElUSU9OQUxfTkFNRV9GT1JNUyAgICAgICAgICAgICAgPSAweDZkNjE2ZTc0LCAvLyAndG5hbScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfVEFCVUxBUl9GSUdVUkVTICAgICAgICAgICAgICAgICAgICAgPSAweDZkNzU2ZTc0LCAvLyAndG51bScNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfVFJBRElUSU9OQUxfRk9STVMgICAgICAgICAgICAgICAgICAgPSAweDY0NjE3Mjc0LCAvLyAndHJhZCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfVEhJUkRfV0lEVEhTICAgICAgICAgICAgICAgICAgICAgICAgPSAweDY0Njk3Nzc0LCAvLyAndHdpZCcNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfVU5JQ0FTRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDYzNjk2ZTc1LCAvLyAndW5pYycNCisgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRV9UQUdfU0xBU0hFRF9aRVJPICAgICAgICAgICAgICAgICAgICAgICAgPSAweDZmNzI2NTdhLCAvLyAnemVybycNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIERXUklURV9URVhUX1JBTkdFIHN0cnVjdHVyZSBzcGVjaWZpZXMgYSByYW5nZSBvZiB0ZXh0IHBvc2l0aW9ucyB3aGVyZSBmb3JtYXQgaXMgYXBwbGllZC4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfVEVYVF9SQU5HRQ0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIHN0YXJ0IHRleHQgcG9zaXRpb24gb2YgdGhlIHJhbmdlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMzIgc3RhcnRQb3NpdGlvbjsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIG51bWJlciBvZiB0ZXh0IHBvc2l0aW9ucyBpbiB0aGUgcmFuZ2UuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQzMiBsZW5ndGg7DQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBEV1JJVEVfRk9OVF9GRUFUVVJFIHN0cnVjdHVyZSBzcGVjaWZpZXMgcHJvcGVydGllcyB1c2VkIHRvIGlkZW50aWZ5IGFuZCBleGVjdXRlIHR5cG9ncmFwaGljIGZlYXR1cmUgaW4gdGhlIGZvbnQuDQorLy8vIDwvc3VtbWFyeT4NCitzdHJ1Y3QgRFdSSVRFX0ZPTlRfRkVBVFVSRQ0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIGZlYXR1cmUgT3BlblR5cGUgbmFtZSBpZGVudGlmaWVyLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRk9OVF9GRUFUVVJFX1RBRyBuYW1lVGFnOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBFeGVjdXRpb24gcGFyYW1ldGVyIG9mIHRoZSBmZWF0dXJlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBub24temVybyB0byBlbmFibGUgdGhlIGZlYXR1cmUuICBPbmNlIGVuYWJsZWQsIGEgZmVhdHVyZSBjYW4ndCBiZSBkaXNhYmxlZCBhZ2FpbiB3aXRoaW4NCisgICAgLy8vIHRoZSBzYW1lIHJhbmdlLiAgRmVhdHVyZXMgcmVxdWlyaW5nIGEgc2VsZWN0b3IgdXNlIHRoaXMgdmFsdWUgdG8gaW5kaWNhdGUgdGhlIHNlbGVjdG9yIGluZGV4LiANCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgVUlOVDMyIHBhcmFtZXRlcjsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gRGVmaW5lcyBhIHNldCBvZiB0eXBvZ3JhcGhpYyBmZWF0dXJlcyB0byBiZSBhcHBsaWVkIGR1cmluZyBzaGFwaW5nLg0KKy8vLyBOb3RpY2UgdGhlIGNoYXJhY3RlciByYW5nZSB3aGljaCB0aGlzIGZlYXR1cmUgbGlzdCBzcGFucyBpcyBzcGVjaWZpZWQNCisvLy8gYXMgYSBzZXBhcmF0ZSBwYXJhbWV0ZXIgdG8gR2V0R2x5cGhzLg0KKy8vLyA8L3N1bW1hcnk+DQorc3RydWN0IERXUklURV9UWVBPR1JBUEhJQ19GRUFUVVJFUw0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQXJyYXkgb2YgZm9udCBmZWF0dXJlcy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgX19maWVsZF9lY291bnQoZmVhdHVyZUNvdW50KSBEV1JJVEVfRk9OVF9GRUFUVVJFKiBmZWF0dXJlczsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIG51bWJlciBvZiBmZWF0dXJlcy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDMyIGZlYXR1cmVDb3VudDsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIERXUklURV9UUklNTUlORyBzdHJ1Y3R1cmUgc3BlY2lmaWVzIHRoZSB0cmltbWluZyBvcHRpb24gZm9yIHRleHQgb3ZlcmZsb3dpbmcgdGhlIGxheW91dCBib3guDQorLy8vIDwvc3VtbWFyeT4NCitzdHJ1Y3QgRFdSSVRFX1RSSU1NSU5HDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUZXh0IGdyYW51bGFyaXR5IG9mIHdoaWNoIHRyaW1taW5nIGFwcGxpZXMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9UUklNTUlOR19HUkFOVUxBUklUWSBncmFudWxhcml0eTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQ2hhcmFjdGVyIGNvZGUgdXNlZCBhcyB0aGUgZGVsaW1pdGVyIHNpZ25hbGluZyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwb3J0aW9uIG9mIHRleHQgdG8gYmUgcHJlc2VydmVkLA0KKyAgICAvLy8gbW9zdCB1c2VmdWwgZm9yIHBhdGggZWxsaXBzaXMsIHdoZXJlIHRoZSBkZWxpbWV0ZXIgd291bGQgYmUgYSBzbGFzaC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDMyIGRlbGltaXRlcjsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gSG93IG1hbnkgb2NjdXJlbmNlcyBvZiB0aGUgZGVsaW1pdGVyIHRvIHN0ZXAgYmFjay4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDMyIGRlbGltaXRlckNvdW50Ow0KK307DQorDQorDQoraW50ZXJmYWNlIElEV3JpdGVUeXBvZ3JhcGh5Ow0KK2ludGVyZmFjZSBJRFdyaXRlSW5saW5lT2JqZWN0Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIGZvcm1hdCBvZiB0ZXh0IHVzZWQgZm9yIHRleHQgbGF5b3V0IHB1cnBvc2UuDQorLy8vIDwvc3VtbWFyeT4NCisvLy8gPHJlbWFya3M+DQorLy8vIFRoaXMgb2JqZWN0IG1heSBub3QgYmUgdGhyZWFkLXNhZmUgYW5kIGl0IG1heSBjYXJyeSB0aGUgc3RhdGUgb2YgdGV4dCBmb3JtYXQgY2hhbmdlLg0KKy8vLyA8L3JlbWFya3M+DQoraW50ZXJmYWNlIERXUklURV9ERUNMQVJFX0lOVEVSRkFDRSgiOWM5MDY4MTgtMzFkNy00ZmQzLWExNTEtN2M1ZTIyNWRiNTVhIikgSURXcml0ZVRleHRGb3JtYXQgOiBwdWJsaWMgSVVua25vd24NCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBhbGlnbm1lbnQgb3B0aW9uIG9mIHRleHQgcmVsYXRpdmUgdG8gbGF5b3V0IGJveCdzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGVkZ2UuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dEFsaWdubWVudCI+VGV4dCBhbGlnbm1lbnQgb3B0aW9uPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoU2V0VGV4dEFsaWdubWVudCkoDQorICAgICAgICBEV1JJVEVfVEVYVF9BTElHTk1FTlQgdGV4dEFsaWdubWVudA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXQgYWxpZ25tZW50IG9wdGlvbiBvZiBwYXJhZ3JhcGggcmVsYXRpdmUgdG8gbGF5b3V0IGJveCdzIHRvcCBhbmQgYm90dG9tIGVkZ2UuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0icGFyYWdyYXBoQWxpZ25tZW50Ij5QYXJhZ3JhcGggYWxpZ25tZW50IG9wdGlvbjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldFBhcmFncmFwaEFsaWdubWVudCkoDQorICAgICAgICBEV1JJVEVfUEFSQUdSQVBIX0FMSUdOTUVOVCBwYXJhZ3JhcGhBbGlnbm1lbnQNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU2V0IHdvcmQgd3JhcHBpbmcgb3B0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9IndvcmRXcmFwcGluZyI+V29yZCB3cmFwcGluZyBvcHRpb248L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChTZXRXb3JkV3JhcHBpbmcpKA0KKyAgICAgICAgRFdSSVRFX1dPUkRfV1JBUFBJTkcgd29yZFdyYXBwaW5nDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBwYXJhZ3JhcGggcmVhZGluZyBkaXJlY3Rpb24uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0icmVhZGluZ0RpcmVjdGlvbiI+VGV4dCByZWFkaW5nIGRpcmVjdGlvbjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldFJlYWRpbmdEaXJlY3Rpb24pKA0KKyAgICAgICAgRFdSSVRFX1JFQURJTkdfRElSRUNUSU9OIHJlYWRpbmdEaXJlY3Rpb24NCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU2V0IHBhcmFncmFwaCBmbG93IGRpcmVjdGlvbi4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmbG93RGlyZWN0aW9uIj5QYXJhZ3JhcGggZmxvdyBkaXJlY3Rpb248L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChTZXRGbG93RGlyZWN0aW9uKSgNCisgICAgICAgIERXUklURV9GTE9XX0RJUkVDVElPTiBmbG93RGlyZWN0aW9uDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBpbmNyZW1lbnRhbCB0YWIgc3RvcCBwb3NpdGlvbi4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpbmNyZW1lbnRhbFRhYlN0b3AiPlRoZSBpbmNyZW1lbnRhbCB0YWIgc3RvcCB2YWx1ZTwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldEluY3JlbWVudGFsVGFiU3RvcCkoDQorICAgICAgICBGTE9BVCBpbmNyZW1lbnRhbFRhYlN0b3ANCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU2V0IHRyaW1taW5nIG9wdGlvbnMgZm9yIGFueSB0cmFpbGluZyB0ZXh0IGV4Y2VlZGluZyB0aGUgbGF5b3V0IHdpZHRoDQorICAgIC8vLyBvciBmb3IgYW55IGZhciB0ZXh0IGV4Y2VlZGluZyB0aGUgbGF5b3V0IGhlaWdodC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0cmltbWluZ09wdGlvbnMiPlRleHQgdHJpbW1pbmcgb3B0aW9ucy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRyaW1taW5nU2lnbiI+QXBwbGljYXRpb24tZGVmaW5lZCBvbWlzc2lvbiBzaWduLiBUaGlzIHBhcmFtZXRlciBtYXkgYmUgTlVMTCBpZiBubyB0cmltbWluZyBzaWduIGlzIGRlc2lyZWQuPC9wYXJhbT4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gQW55IGlubGluZSBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIHRoZSB0cmltbWluZyBzaWduLCBidXQgQ3JlYXRlRWxsaXBzaXNUcmltbWluZ1NpZ24NCisgICAgLy8vIHByb3ZpZGVzIGEgdHlwaWNhbCBlbGxpcHNpcyBzeW1ib2wuIFRyaW1taW5nIGlzIGFsc28gdXNlZnVsIHZlcnRpY2FsbHkgZm9yIGhpZGluZw0KKyAgICAvLy8gcGFydGlhbCBsaW5lcy4NCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoU2V0VHJpbW1pbmcpKA0KKyAgICAgICAgX19pbiBEV1JJVEVfVFJJTU1JTkcgY29uc3QqIHRyaW1taW5nT3B0aW9ucywNCisgICAgICAgIElEV3JpdGVJbmxpbmVPYmplY3QqIHRyaW1taW5nU2lnbg0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXQgbGluZSBzcGFjaW5nLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImxpbmVTcGFjaW5nTWV0aG9kIj5Ib3cgdG8gZGV0ZXJtaW5lIGxpbmUgaGVpZ2h0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibGluZVNwYWNpbmciPlRoZSBsaW5lIGhlaWdodCwgb3IgcmF0aGVyIGRpc3RhbmNlIGJldHdlZW4gb25lIGJhc2VsaW5lIHRvIGFub3RoZXIuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJiYXNlbGluZSI+RGlzdGFuY2UgZnJvbSB0b3Agb2YgbGluZSB0byBiYXNlbGluZS4gQSByZWFzb25hYmxlIHJhdGlvIHRvIGxpbmVTcGFjaW5nIGlzIDgwJS48L3BhcmFtPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBGb3IgdGhlIGRlZmF1bHQgbWV0aG9kLCBzcGFjaW5nIGRlcGVuZHMgc29sZWx5IG9uIHRoZSBjb250ZW50Lg0KKyAgICAvLy8gRm9yIHVuaWZvcm0gc3BhY2luZywgdGhlIGdpdmVuIGxpbmUgaGVpZ2h0IHdpbGwgb3ZlcnJpZGUgdGhlIGNvbnRlbnQuDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldExpbmVTcGFjaW5nKSgNCisgICAgICAgIERXUklURV9MSU5FX1NQQUNJTkdfTUVUSE9EIGxpbmVTcGFjaW5nTWV0aG9kLA0KKyAgICAgICAgRkxPQVQgbGluZVNwYWNpbmcsDQorICAgICAgICBGTE9BVCBiYXNlbGluZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgYWxpZ25tZW50IG9wdGlvbiBvZiB0ZXh0IHJlbGF0aXZlIHRvIGxheW91dCBib3gncyBsZWFkaW5nIGFuZCB0cmFpbGluZyBlZGdlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKERXUklURV9URVhUX0FMSUdOTUVOVCwgR2V0VGV4dEFsaWdubWVudCkoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgYWxpZ25tZW50IG9wdGlvbiBvZiBwYXJhZ3JhcGggcmVsYXRpdmUgdG8gbGF5b3V0IGJveCdzIHRvcCBhbmQgYm90dG9tIGVkZ2UuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oRFdSSVRFX1BBUkFHUkFQSF9BTElHTk1FTlQsIEdldFBhcmFncmFwaEFsaWdubWVudCkoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgd29yZCB3cmFwcGluZyBvcHRpb24uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oRFdSSVRFX1dPUkRfV1JBUFBJTkcsIEdldFdvcmRXcmFwcGluZykoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgcGFyYWdyYXBoIHJlYWRpbmcgZGlyZWN0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKERXUklURV9SRUFESU5HX0RJUkVDVElPTiwgR2V0UmVhZGluZ0RpcmVjdGlvbikoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgcGFyYWdyYXBoIGZsb3cgZGlyZWN0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKERXUklURV9GTE9XX0RJUkVDVElPTiwgR2V0Rmxvd0RpcmVjdGlvbikoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgaW5jcmVtZW50YWwgdGFiIHN0b3AgcG9zaXRpb24uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oRkxPQVQsIEdldEluY3JlbWVudGFsVGFiU3RvcCkoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgdHJpbW1pbmcgb3B0aW9ucyBmb3IgdGV4dCBvdmVyZmxvd2luZyB0aGUgbGF5b3V0IHdpZHRoLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRyaW1taW5nT3B0aW9ucyI+VGV4dCB0cmltbWluZyBvcHRpb25zLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idHJpbW1pbmdTaWduIj5UcmltbWluZyBvbWlzc2lvbiBzaWduLiBUaGlzIHBhcmFtZXRlciBtYXkgYmUgTlVMTC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRUcmltbWluZykoDQorICAgICAgICBfX291dCBEV1JJVEVfVFJJTU1JTkcqIHRyaW1taW5nT3B0aW9ucywNCisgICAgICAgIF9fb3V0IElEV3JpdGVJbmxpbmVPYmplY3QqKiB0cmltbWluZ1NpZ24NCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0IGxpbmUgc3BhY2luZy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsaW5lU3BhY2luZ01ldGhvZCI+SG93IGxpbmUgaGVpZ2h0IGlzIGRldGVybWluZWQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsaW5lU3BhY2luZyI+VGhlIGxpbmUgaGVpZ2h0LCBvciByYXRoZXIgZGlzdGFuY2UgYmV0d2VlbiBvbmUgYmFzZWxpbmUgdG8gYW5vdGhlci48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImJhc2VsaW5lIj5EaXN0YW5jZSBmcm9tIHRvcCBvZiBsaW5lIHRvIGJhc2VsaW5lLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldExpbmVTcGFjaW5nKSgNCisgICAgICAgIF9fb3V0IERXUklURV9MSU5FX1NQQUNJTkdfTUVUSE9EKiBsaW5lU3BhY2luZ01ldGhvZCwNCisgICAgICAgIF9fb3V0IEZMT0FUKiBsaW5lU3BhY2luZywNCisgICAgICAgIF9fb3V0IEZMT0FUKiBiYXNlbGluZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgdGhlIGZvbnQgY29sbGVjdGlvbi4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250Q29sbGVjdGlvbiI+VGhlIGN1cnJlbnQgZm9udCBjb2xsZWN0aW9uLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldEZvbnRDb2xsZWN0aW9uKSgNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250Q29sbGVjdGlvbioqIGZvbnRDb2xsZWN0aW9uDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBmb250IGZhbWlseSBuYW1lLCBpbiBjaGFyYWN0ZXJzLCBub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBOVUxMIGNoYXJhY3Rlci4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgU1RETUVUSE9EXyhVSU5UMzIsIEdldEZvbnRGYW1pbHlOYW1lTGVuZ3RoKSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCBhIGNvcHkgb2YgdGhlIGZvbnQgZmFtaWx5IG5hbWUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZhbWlseU5hbWUiPkNoYXJhY3RlciBhcnJheSB0aGF0IHJlY2VpdmVzIHRoZSBjdXJyZW50IGZvbnQgZmFtaWx5IG5hbWU8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im5hbWVTaXplIj5TaXplIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgaW4gY2hhcmFjdGVyIGNvdW50IGluY2x1ZGluZyB0aGUgdGVybWluYXRlZCBOVUxMIGNoYXJhY3Rlci48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRGb250RmFtaWx5TmFtZSkoDQorICAgICAgICBfX291dF9lY291bnRfeihuYW1lU2l6ZSkgV0NIQVIqIGZvbnRGYW1pbHlOYW1lLA0KKyAgICAgICAgVUlOVDMyIG5hbWVTaXplDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgZm9udCB3ZWlnaHQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oRFdSSVRFX0ZPTlRfV0VJR0hULCBHZXRGb250V2VpZ2h0KSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgZm9udCBzdHlsZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgU1RETUVUSE9EXyhEV1JJVEVfRk9OVF9TVFlMRSwgR2V0Rm9udFN0eWxlKSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgZm9udCBzdHJldGNoLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKERXUklURV9GT05UX1NUUkVUQ0gsIEdldEZvbnRTdHJldGNoKSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgZm9udCBlbSBoZWlnaHQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oRkxPQVQsIEdldEZvbnRTaXplKSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBsb2NhbGUgbmFtZSwgaW4gY2hhcmFjdGVycywgbm90IGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcgTlVMTCBjaGFyYWN0ZXIuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oVUlOVDMyLCBHZXRMb2NhbGVOYW1lTGVuZ3RoKSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCBhIGNvcHkgb2YgdGhlIGxvY2FsZSBuYW1lLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImxvY2FsZU5hbWUiPkNoYXJhY3RlciBhcnJheSB0aGF0IHJlY2VpdmVzIHRoZSBjdXJyZW50IGxvY2FsZSBuYW1lPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJuYW1lU2l6ZSI+U2l6ZSBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGluIGNoYXJhY3RlciBjb3VudCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0ZWQgTlVMTCBjaGFyYWN0ZXIuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0TG9jYWxlTmFtZSkoDQorICAgICAgICBfX291dF9lY291bnRfeihuYW1lU2l6ZSkgV0NIQVIqIGxvY2FsZU5hbWUsDQorICAgICAgICBVSU5UMzIgbmFtZVNpemUNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gRm9udCB0eXBvZ3JhcGh5IHNldHRpbmcuDQorLy8vIDwvc3VtbWFyeT4NCitpbnRlcmZhY2UgRFdSSVRFX0RFQ0xBUkVfSU5URVJGQUNFKCI1NWYxMTEyYi0xZGMyLTRiM2MtOTU0MS1mNDY4OTRlZDg1YjYiKSBJRFdyaXRlVHlwb2dyYXBoeSA6IHB1YmxpYyBJVW5rbm93bg0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQWRkIGZvbnQgZmVhdHVyZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmVhdHVyZSI+VGhlIGZvbnQgZmVhdHVyZSB0byBhZGQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQWRkRm9udEZlYXR1cmUpKA0KKyAgICAgICAgRFdSSVRFX0ZPTlRfRkVBVFVSRSBmb250RmVhdHVyZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgdGhlIG51bWJlciBvZiBmb250IGZlYXR1cmVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBTVERNRVRIT0RfKFVJTlQzMiwgR2V0Rm9udEZlYXR1cmVDb3VudCkoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgdGhlIGZvbnQgZmVhdHVyZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGZWF0dXJlSW5kZXgiPlRoZSB6ZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBmb250IGZlYXR1cmUgdG8gZ2V0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZlYXR1cmUiPlRoZSBmb250IGZlYXR1cmUuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0Rm9udEZlYXR1cmUpKA0KKyAgICAgICAgVUlOVDMyIGZvbnRGZWF0dXJlSW5kZXgsDQorICAgICAgICBfX291dCBEV1JJVEVfRk9OVF9GRUFUVVJFKiBmb250RmVhdHVyZQ0KKyAgICAgICAgKSBQVVJFOw0KK307DQorDQorZW51bSBEV1JJVEVfU0NSSVBUX1NIQVBFUw0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gTm8gYWRkaXRpb25hbCBzaGFwaW5nIHJlcXVpcmVtZW50LiBUZXh0IGlzIHNoYXBlZCB3aXRoIHRoZSB3cml0aW5nIHN5c3RlbSBkZWZhdWx0IGJlaGF2aW9yLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfU0NSSVBUX1NIQVBFU19ERUZBVUxUID0gMCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGV4dCBzaG91bGQgbGVhdmUgbm8gdmlzdWFsIG9uIGRpc3BsYXkgaS5lLiBjb250cm9sIG9yIGZvcm1hdCBjb250cm9sIGNoYXJhY3RlcnMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9TQ1JJUFRfU0hBUEVTX05PX1ZJU1VBTCA9IDENCit9Ow0KKw0KKyNpZmRlZiBERUZJTkVfRU5VTV9GTEFHX09QRVJBVE9SUw0KK0RFRklORV9FTlVNX0ZMQUdfT1BFUkFUT1JTKERXUklURV9TQ1JJUFRfU0hBUEVTKTsNCisjZW5kaWYNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIEFzc29jaWF0aW9uIG9mIHRleHQgYW5kIGl0cyB3cml0aW5nIHN5c3RlbSBzY3JpcHQgYXMgd2VsbCBhcyBzb21lIGRpc3BsYXkgYXR0cmlidXRlcy4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfU0NSSVBUX0FOQUxZU0lTDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBaZXJvLWJhc2VkIGluZGV4IHJlcHJlc2VudGF0aW9uIG9mIHdyaXRpbmcgc3lzdGVtIHNjcmlwdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2IHNjcmlwdDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQWRkaXRpb25hbCBzaGFwaW5nIHJlcXVpcmVtZW50IG9mIHRleHQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9TQ1JJUFRfU0hBUEVTIHNoYXBlczsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gQ29uZGl0aW9uIGF0IHRoZSBlZGdlcyBvZiBpbmxpbmUgb2JqZWN0IG9yIHRleHQgdXNlZCB0byBkZXRlcm1pbmUNCisvLy8gbGluZS1icmVha2luZyBiZWhhdmlvci4NCisvLy8gPC9zdW1tYXJ5Pg0KK2VudW0gRFdSSVRFX0JSRUFLX0NPTkRJVElPTg0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gV2hldGhlciBhIGJyZWFrIGlzIGFsbG93ZWQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgY29uZGl0aW9uIG9mIHRoZQ0KKyAgICAvLy8gbmVpZ2hib3JpbmcgdGV4dCBzcGFuIG9yIGlubGluZSBvYmplY3QuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9CUkVBS19DT05ESVRJT05fTkVVVFJBTCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQSBicmVhayBpcyBhbGxvd2VkLCB1bmxlc3Mgb3ZlcnJ1bGVkIGJ5IHRoZSBjb25kaXRpb24gb2YgdGhlDQorICAgIC8vLyBuZWlnaGJvcmluZyB0ZXh0IHNwYW4gb3IgaW5saW5lIG9iamVjdCwgZWl0aGVyIHByb2hpYml0ZWQgYnkgYQ0KKyAgICAvLy8gTWF5IE5vdCBvciBmb3JjZWQgYnkgYSBNdXN0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfQlJFQUtfQ09ORElUSU9OX0NBTl9CUkVBSywNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlcmUgc2hvdWxkIGJlIG5vIGJyZWFrLCB1bmxlc3Mgb3ZlcnJ1bGVkIGJ5IGEgTXVzdCBjb25kaXRpb24gZnJvbQ0KKyAgICAvLy8gdGhlIG5laWdoYm9yaW5nIHRleHQgc3BhbiBvciBpbmxpbmUgb2JqZWN0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfQlJFQUtfQ09ORElUSU9OX01BWV9OT1RfQlJFQUssDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBicmVhayBtdXN0IGhhcHBlbiwgcmVnYXJkbGVzcyBvZiB0aGUgY29uZGl0aW9uIG9mIHRoZSBhZGphY2VudA0KKyAgICAvLy8gdGV4dCBzcGFuIG9yIGlubGluZSBvYmplY3QuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9CUkVBS19DT05ESVRJT05fTVVTVF9CUkVBSw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBMaW5lIGJyZWFrcG9pbnQgY2hhcmFjdGVyaXN0aWNzIG9mIGEgY2hhcmFjdGVyLg0KKy8vLyA8L3N1bW1hcnk+DQorc3RydWN0IERXUklURV9MSU5FX0JSRUFLUE9JTlQNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEJyZWFraW5nIGNvbmRpdGlvbiBiZWZvcmUgdGhlIGNoYXJhY3Rlci4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDggYnJlYWtDb25kaXRpb25CZWZvcmUgIDogMjsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQnJlYWtpbmcgY29uZGl0aW9uIGFmdGVyIHRoZSBjaGFyYWN0ZXIuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQ4IGJyZWFrQ29uZGl0aW9uQWZ0ZXIgICA6IDI7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBjaGFyYWN0ZXIgaXMgc29tZSBmb3JtIG9mIHdoaXRlc3BhY2UsIHdoaWNoIG1heSBiZSBtZWFuaW5nZnVsDQorICAgIC8vLyBmb3IganVzdGlmaWNhdGlvbi4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDggaXNXaGl0ZXNwYWNlICAgICAgICAgIDogMTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIGNoYXJhY3RlciBpcyBhIHNvZnQgaHlwaGVuLCBvZnRlbiB1c2VkIHRvIGluZGljYXRlIGh5cGhlbmF0aW9uDQorICAgIC8vLyBwb2ludHMgaW5zaWRlIHdvcmRzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UOCBpc1NvZnRIeXBoZW4gICAgICAgICAgOiAxOw0KKw0KKyAgICBVSU5UOCBwYWRkaW5nICAgICAgICAgICAgICAgOiAyOw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBIb3cgdG8gYXBwbHkgbnVtYmVyIHN1YnN0aXR1dGlvbiBvbiBkaWdpdHMgYW5kIHJlbGF0ZWQgcHVuY3R1YXRpb24uDQorLy8vIDwvc3VtbWFyeT4NCitlbnVtIERXUklURV9OVU1CRVJfU1VCU1RJVFVUSU9OX01FVEhPRA0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU3BlY2lmaWVzIHRoYXQgdGhlIHN1YnN0aXR1dGlvbiBtZXRob2Qgc2hvdWxkIGJlIGRldGVybWluZWQgYmFzZWQNCisgICAgLy8vIG9uIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gdmFsdWUgb2YgdGhlIHNwZWNpZmllZCB0ZXh0IGN1bHR1cmUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9OVU1CRVJfU1VCU1RJVFVUSU9OX01FVEhPRF9GUk9NX0NVTFRVUkUsDQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIElmIHRoZSBjdWx0dXJlIGlzIEFyYWJpYyBvciBGYXJzaSwgc3BlY2lmaWVzIHRoYXQgdGhlIG51bWJlciBzaGFwZQ0KKyAgICAvLy8gZGVwZW5kIG9uIHRoZSBjb250ZXh0LiBFaXRoZXIgdHJhZGl0aW9uYWwgb3Igbm9taW5hbCBudW1iZXIgc2hhcGUNCisgICAgLy8vIGFyZSB1c2VkIGRlcGVuZGluZyBvbiB0aGUgbmVhcmVzdCBwcmVjZWRpbmcgc3Ryb25nIGNoYXJhY3RlciBvciAoaWYNCisgICAgLy8vIHRoZXJlIGlzIG5vbmUpIHRoZSByZWFkaW5nIGRpcmVjdGlvbiBvZiB0aGUgcGFyYWdyYXBoLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfTlVNQkVSX1NVQlNUSVRVVElPTl9NRVRIT0RfQ09OVEVYVFVBTCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU3BlY2lmaWVzIHRoYXQgY29kZSBwb2ludHMgMHgzMC0weDM5IGFyZSBhbHdheXMgcmVuZGVyZWQgYXMgbm9taW5hbCBudW1lcmFsIA0KKyAgICAvLy8gc2hhcGVzIChvbmVzIG9mIHRoZSBFdXJvcGVhbiBudW1iZXIpLCBpLmUuLCBubyBzdWJzdGl0dXRpb24gaXMgcGVyZm9ybWVkLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfTlVNQkVSX1NVQlNUSVRVVElPTl9NRVRIT0RfTk9ORSwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU3BlY2lmaWVzIHRoYXQgbnVtYmVyIGFyZSByZW5kZXJlZCB1c2luZyB0aGUgbmF0aW9uYWwgbnVtYmVyIHNoYXBlIA0KKyAgICAvLy8gYXMgc3BlY2lmaWVkIGJ5IHRoZSBMT0NBTEVfU05BVElWRURJR0lUUyB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHRleHQgY3VsdHVyZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX05VTUJFUl9TVUJTVElUVVRJT05fTUVUSE9EX05BVElPTkFMLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTcGVjaWZpZXMgdGhhdCBudW1iZXIgYXJlIHJlbmRlcmVkIHVzaW5nIHRoZSB0cmFkaXRpb25hbCBzaGFwZQ0KKyAgICAvLy8gZm9yIHRoZSBzcGVjaWZpZWQgY3VsdHVyZS4gRm9yIG1vc3QgY3VsdHVyZXMsIHRoaXMgaXMgdGhlIHNhbWUgYXMNCisgICAgLy8vIE5hdGl2ZU5hdGlvbmFsLiBIb3dldmVyLCBOYXRpdmVOYXRpb25hbCByZXN1bHRzIGluIExhdGluIG51bWJlcg0KKyAgICAvLy8gZm9yIHNvbWUgQXJhYmljIGN1bHR1cmVzLCB3aGVyZWFzIHRoaXMgdmFsdWUgcmVzdWx0cyBpbiBBcmFiaWMNCisgICAgLy8vIG51bWJlciBmb3IgYWxsIEFyYWJpYyBjdWx0dXJlcy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX05VTUJFUl9TVUJTVElUVVRJT05fTUVUSE9EX1RSQURJVElPTkFMDQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIEhvbGRzIHRoZSBhcHByb3ByaWF0ZSBkaWdpdHMgYW5kIG51bWVyaWMgcHVuY3R1YXRpb24gZm9yIGEgZ2l2ZW4gbG9jYWxlLg0KKy8vLyA8L3N1bW1hcnk+DQoraW50ZXJmYWNlIERFQ0xTUEVDX1VVSUQoIjE0ODg1Q0M5LUJBQjAtNGY5MC1CNkVELTVDMzY2QTJDRDAzRCIpIERFQ0xTUEVDX05PVlRBQkxFIElEV3JpdGVOdW1iZXJTdWJzdGl0dXRpb24gOiBwdWJsaWMgSVVua25vd24NCit7DQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFNoYXBpbmcgb3V0cHV0IHByb3BlcnRpZXMgcGVyIGlucHV0IGNoYXJhY3Rlci4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfU0hBUElOR19URVhUX1BST1BFUlRJRVMNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoaXMgY2hhcmFjdGVyIGNhbiBiZSBzaGFwZWQgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBvdGhlcnMNCisgICAgLy8vICh1c3VhbGx5IHNldCBmb3IgdGhlIHNwYWNlIGNoYXJhY3RlcikuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQxNiAgaXNTaGFwZWRBbG9uZSAgICAgICA6IDE7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFJlc2VydmVkIGZvciB1c2UgYnkgc2hhcGluZyBlbmdpbmUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQxNiAgcmVzZXJ2ZWQgICAgICAgICAgICA6IDE1Ow0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBTaGFwaW5nIG91dHB1dCBwcm9wZXJ0aWVzIHBlciBvdXRwdXQgZ2x5cGguDQorLy8vIDwvc3VtbWFyeT4NCitzdHJ1Y3QgRFdSSVRFX1NIQVBJTkdfR0xZUEhfUFJPUEVSVElFUw0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gSnVzdGlmaWNhdGlvbiBjbGFzcywgd2hldGhlciB0byB1c2Ugc3BhY2luZywga2FzaGlkYXMsIG9yDQorICAgIC8vLyBhbm90aGVyIG1ldGhvZC4gVGhpcyBleGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5DQorICAgIC8vLyB3aXRoIFVuaXNjcmliZSdzIFNDUklQVF9KVVNUSUZZIGVudW0uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQxNiAganVzdGlmaWNhdGlvbiAgICAgICA6IDQ7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEluZGljYXRlcyBnbHlwaCBpcyB0aGUgZmlyc3Qgb2YgYSBjbHVzdGVyLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMTYgIGlzQ2x1c3RlclN0YXJ0ICAgICAgOiAxOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHbHlwaCBpcyBhIGRpYWNyaXRpYy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2ICBpc0RpYWNyaXRpYyAgICAgICAgIDogMTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2x5cGggaGFzIG5vIHdpZHRoLCBibGFuaywgWldKLCBaV05KIGV0Yy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2ICBpc1plcm9XaWR0aFNwYWNlICAgIDogMTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUmVzZXJ2ZWQgZm9yIHVzZSBieSBzaGFwaW5nIGVuZ2luZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2ICByZXNlcnZlZCAgICAgICAgICAgIDogOTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIGludGVyZmFjZSBpbXBsZW1lbnRlZCBieSB0aGUgdGV4dCBhbmFseXplcidzIGNsaWVudCB0byBwcm92aWRlIHRleHQgdG8NCisvLy8gdGhlIGFuYWx5emVyLiBJdCBhbGxvd3MgdGhlIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUgbG9naWNhbCB2aWV3IG9mIHRleHQgYXMNCisvLy8gYSBjb250aW51b3VzIHN0cmVhbSBvZiBjaGFyYWN0ZXJzIGlkZW50aWZpYWJsZSBieSB1bmlxdWUgdGV4dCBwb3NpdGlvbnMsDQorLy8vIGFuZCB0aGUgYWN0dWFsIG1lbW9yeSBsYXlvdXQgb2YgcG90ZW50aWFsbHkgZGlzY3JldGUgYmxvY2tzIG9mIHRleHQgaW4gdGhlDQorLy8vIGNsaWVudCdzIGJhY2tpbmcgc3RvcmUuDQorLy8vDQorLy8vIElmIGFueSBvZiB0aGVzZSBjYWxsYmFja3MgcmV0dXJucyBhbiBlcnJvciwgdGhlIGFuYWx5c2lzIGZ1bmN0aW9ucyB3aWxsDQorLy8vIHN0b3AgcHJlbWF0dXJlbHkgYW5kIHJldHVybiBhIGNhbGxiYWNrIGVycm9yLiBSYXRoZXIgdGhhbiByZXR1cm4gRV9OT1RJTVBMLA0KKy8vLyBhbiBhcHBsaWNhdGlvbiBzaG91bGQgc3R1YiB0aGUgbWV0aG9kIGFuZCByZXR1cm4gYSBjb25zdGFudC9udWxsIGFuZCBTX09LLg0KKy8vLyA8L3N1bW1hcnk+DQoraW50ZXJmYWNlIERFQ0xTUEVDX1VVSUQoIjY4OGUxYTU4LTUwOTQtNDdjOC1hZGM4LWZiY2VhNjBhZTkyYiIpIERFQ0xTUEVDX05PVlRBQkxFIElEV3JpdGVUZXh0QW5hbHlzaXNTb3VyY2UgOiBwdWJsaWMgSVVua25vd24NCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCBhIGJsb2NrIG9mIHRleHQgc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZCB0ZXh0IHBvc2l0aW9uLg0KKyAgICAvLy8gUmV0dXJuaW5nIE5VTEwgaW5kaWNhdGVzIHRoZSBlbmQgb2YgdGV4dCAtIHRoZSBwb3NpdGlvbiBpcyBhZnRlcg0KKyAgICAvLy8gdGhlIGxhc3QgY2hhcmFjdGVyLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpdGVyYXRpdmVseSBmb3INCisgICAgLy8vIGVhY2ggY29uc2VjdXRpdmUgYmxvY2ssIHR5aW5nIHRvZ2V0aGVyIHNldmVyYWwgZnJhZ21lbnRlZCBibG9ja3MNCisgICAgLy8vIGluIHRoZSBiYWNraW5nIHN0b3JlIGludG8gYSB2aXJ0dWFsIGNvbnRpZ3VvdXMgc3RyaW5nLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRQb3NpdGlvbiI+Rmlyc3QgcG9zaXRpb24gb2YgdGhlIHBpZWNlIHRvIG9idGFpbi4gQWxsDQorICAgIC8vLyAgICAgcG9zaXRpb25zIGFyZSBpbiBVVEYxNiBjb2RlLXVuaXRzLCBub3Qgd2hvbGUgY2hhcmFjdGVycywgd2hpY2gNCisgICAgLy8vICAgICBtYXR0ZXJzIHdoZW4gc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGFyZSB1c2VkLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFN0cmluZyI+QWRkcmVzcyB0aGF0IHJlY2VpdmVzIGEgcG9pbnRlciB0byB0aGUgdGV4dCBibG9jaw0KKyAgICAvLy8gICAgIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0TGVuZ3RoIj5OdW1iZXIgb2YgVVRGMTYgdW5pdHMgb2YgdGhlIHJldHJpZXZlZCBjaHVuay4NCisgICAgLy8vICAgICBUaGUgcmV0dXJuZWQgbGVuZ3RoIGlzIG5vdCB0aGUgbGVuZ3RoIG9mIHRoZSBibG9jaywgYnV0IHRoZSBsZW5ndGgNCisgICAgLy8vICAgICByZW1haW5pbmcgaW4gdGhlIGJsb2NrLCBmcm9tIHRoZSBnaXZlbiBwb3NpdGlvbiB1bnRpbCBpdHMgZW5kLg0KKyAgICAvLy8gICAgIFNvIHF1ZXJ5aW5nIGZvciBhIHBvc2l0aW9uIHRoYXQgaXMgNzUgcG9zaXRpb25zIGludG8gYSAxMDANCisgICAgLy8vICAgICBwb3N0aXRpb24gYmxvY2sgd291bGQgcmV0dXJuIDI1LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz5Qb2ludGVyIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYXQgdGhlIGdpdmVuIHRleHQgcG9zaXRpb24uDQorICAgIC8vLyBOVUxMIGluZGljYXRlcyBubyBjaHVuayBhdmFpbGFibGUgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiwgZWl0aGVyDQorICAgIC8vLyBiZWNhdXNlIHRleHRQb3NpdGlvbiA+PSB0aGUgZW50aXJlIHRleHQgY29udGVudCBsZW5ndGggb3IgYmVjYXVzZSB0aGUNCisgICAgLy8vIHF1ZXJpZWQgcG9zaXRpb24gaXMgbm90IG1hcHBlZCBpbnRvIHRoZSBhcHAncyBiYWNraW5nIHN0b3JlLjwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gQWx0aG91Z2ggYXBwcyBjYW4gaW1wbGVtZW50IHNwYXJzZSB0ZXh0dWFsIGNvbnRlbnQgdGhhdCBvbmx5IG1hcHMgcGFydCBvZg0KKyAgICAvLy8gdGhlIGJhY2tpbmcgc3RvcmUsIHRoZSBhcHAgbXVzdCBtYXAgYW55IHRleHQgdGhhdCBpcyBpbiB0aGUgcmFuZ2UgcGFzc2VkDQorICAgIC8vLyB0byBhbnkgYW5hbHlzaXMgZnVuY3Rpb25zLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoR2V0VGV4dEF0UG9zaXRpb24pKA0KKyAgICAgICAgVUlOVDMyIHRleHRQb3NpdGlvbiwNCisgICAgICAgIF9fb3V0IFdDSEFSIGNvbnN0KiogdGV4dFN0cmluZywNCisgICAgICAgIF9fb3V0IFVJTlQzMiogdGV4dExlbmd0aA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgYSBibG9jayBvZiB0ZXh0IGltbWVkaWF0ZWx5IHByZWNlZGluZyB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRQb3NpdGlvbiI+UG9zaXRpb24gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxhc3QgcG9zaXRpb24gb2YgdGhlIGNodW5rIHRvIG9idGFpbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRTdHJpbmciPkFkZHJlc3MgdGhhdCByZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlIHRleHQgYmxvY2sNCisgICAgLy8vICAgICBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dExlbmd0aCI+TnVtYmVyIG9mIFVURjE2IHVuaXRzIG9mIHRoZSByZXRyaWV2ZWQgYmxvY2suDQorICAgIC8vLyAgICAgVGhlIGxlbmd0aCByZXR1cm5lZCBpcyBmcm9tIHRoZSBnaXZlbiBwb3NpdGlvbiB0byB0aGUgZnJvbnQgb2YNCisgICAgLy8vICAgICB0aGUgYmxvY2suPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPlBvaW50ZXIgdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBhdCAodGV4dFBvc2l0aW9uIC0gdGV4dExlbmd0aCkuDQorICAgIC8vLyBOVUxMIGluZGljYXRlcyBubyBjaHVuayBhdmFpbGFibGUgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiwgZWl0aGVyDQorICAgIC8vLyBiZWNhdXNlIHRleHRQb3NpdGlvbiA9PSAwLHRoZSB0ZXh0UG9zaXRpb24gPiB0aGUgZW50aXJlIHRleHQgY29udGVudA0KKyAgICAvLy8gbGVuZ3RoLCBvciB0aGUgcXVlcmllZCBwb3NpdGlvbiBpcyBub3QgbWFwcGVkIGludG8gdGhlIGFwcCdzIGJhY2tpbmcNCisgICAgLy8vIHN0b3JlLjwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gQWx0aG91Z2ggYXBwcyBjYW4gaW1wbGVtZW50IHNwYXJzZSB0ZXh0dWFsIGNvbnRlbnQgdGhhdCBvbmx5IG1hcHMgcGFydCBvZg0KKyAgICAvLy8gdGhlIGJhY2tpbmcgc3RvcmUsIHRoZSBhcHAgbXVzdCBtYXAgYW55IHRleHQgdGhhdCBpcyBpbiB0aGUgcmFuZ2UgcGFzc2VkDQorICAgIC8vLyB0byBhbnkgYW5hbHlzaXMgZnVuY3Rpb25zLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoR2V0VGV4dEJlZm9yZVBvc2l0aW9uKSgNCisgICAgICAgIFVJTlQzMiB0ZXh0UG9zaXRpb24sDQorICAgICAgICBfX291dCBXQ0hBUiBjb25zdCoqIHRleHRTdHJpbmcsDQorICAgICAgICBfX291dCBVSU5UMzIqIHRleHRMZW5ndGgNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0IHBhcmFncmFwaCByZWFkaW5nIGRpcmVjdGlvbi4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgU1RETUVUSE9EXyhEV1JJVEVfUkVBRElOR19ESVJFQ1RJT04sIEdldFBhcmFncmFwaFJlYWRpbmdEaXJlY3Rpb24pKCkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0IGxvY2FsZSBuYW1lIG9uIHRoZSByYW5nZSBhZmZlY3RlZCBieSBpdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UG9zaXRpb24iPlBvc2l0aW9uIHRvIGdldCB0aGUgbG9jYWxlIG5hbWUgb2YuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0TGVuZ3RoIj5SZWNlaXZlcyB0aGUgbGVuZ3RoIGZyb20gdGhlIGdpdmVuIHBvc2l0aW9uIHVwIHRvIHRoZQ0KKyAgICAvLy8gICAgIG5leHQgZGlmZmVyaW5nIGxvY2FsZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImxvY2FsZU5hbWUiPkFkZHJlc3MgdGhhdCByZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlIGxvY2FsZQ0KKyAgICAvLy8gICAgIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gVGhlIGxvY2FsZU5hbWUgcG9pbnRlciBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjYWxsIG9yIHVudGlsDQorICAgIC8vLyB0aGUgYW5hbHlzaXMgcmV0dXJucy4NCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgU1RETUVUSE9EKEdldExvY2FsZU5hbWUpKA0KKyAgICAgICAgVUlOVDMyIHRleHRQb3NpdGlvbiwNCisgICAgICAgIF9fb3V0IFVJTlQzMiogdGV4dExlbmd0aCwNCisgICAgICAgIF9fb3V0X3ogV0NIQVIgY29uc3QqKiBsb2NhbGVOYW1lDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCBudW1iZXIgc3Vic3RpdHV0aW9uIG9uIHRoZSByYW5nZSBhZmZlY3RlZCBieSBpdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UG9zaXRpb24iPlBvc2l0aW9uIHRvIGdldCB0aGUgbnVtYmVyIHN1YnN0aXR1dGlvbiBvZi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRMZW5ndGgiPlJlY2VpdmVzIHRoZSBsZW5ndGggZnJvbSB0aGUgZ2l2ZW4gcG9zaXRpb24gdXAgdG8gdGhlDQorICAgIC8vLyAgICAgbmV4dCBkaWZmZXJpbmcgbnVtYmVyIHN1YnN0aXR1dGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im51bWJlclN1YnN0aXR1dGlvbiI+QWRkcmVzcyB0aGF0IHJlY2VpdmVzIGEgcG9pbnRlciB0byB0aGUgbnVtYmVyIHN1YnN0aXR1dGlvbg0KKyAgICAvLy8gICAgIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gQW55IGltcGxlbWVudGF0aW9uIHNob3VsZCByZXR1cm4gdGhlIG51bWJlciBzdWJzdGl0dXRpb24gd2l0aCBhbg0KKyAgICAvLy8gaW5jcmVtZW50ZWQgcmVmIGNvdW50LCBhbmQgdGhlIGFuYWx5c2lzIHdpbGwgcmVsZWFzZSB3aGVuIGZpbmlzaGVkDQorICAgIC8vLyB3aXRoIGl0IChlaXRoZXIgYmVmb3JlIHRoZSBuZXh0IGNhbGwgb3IgYmVmb3JlIGl0IHJldHVybnMpLiBIb3dldmVyLA0KKyAgICAvLy8gdGhlIHNpbmsgY2FsbGJhY2sgbWF5IGhvbGQgb250byBpdCBhZnRlciB0aGF0Lg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoR2V0TnVtYmVyU3Vic3RpdHV0aW9uKSgNCisgICAgICAgIFVJTlQzMiB0ZXh0UG9zaXRpb24sDQorICAgICAgICBfX291dCBVSU5UMzIqIHRleHRMZW5ndGgsDQorICAgICAgICBfX291dCBJRFdyaXRlTnVtYmVyU3Vic3RpdHV0aW9uKiogbnVtYmVyU3Vic3RpdHV0aW9uDQorICAgICAgICApIFBVUkU7DQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBpbnRlcmZhY2UgaW1wbGVtZW50ZWQgYnkgdGhlIHRleHQgYW5hbHl6ZXIncyBjbGllbnQgdG8gcmVjZWl2ZSB0aGUNCisvLy8gb3V0cHV0IG9mIGEgZ2l2ZW4gdGV4dCBhbmFseXNpcy4gVGhlIFRleHQgYW5hbHl6ZXIgZGlzcmVnYXJkcyBhbnkgY3VycmVudA0KKy8vLyBzdGF0ZSBvZiB0aGUgYW5hbHlzaXMgc2luaywgdGhlcmVmb3JlIGEgU2V0IG1ldGhvZCBjYWxsIG9uIGEgcmFuZ2UNCisvLy8gb3ZlcndyaXRlcyB0aGUgcHJldmlvdXNseSBzZXQgYW5hbHlzaXMgcmVzdWx0IG9mIHRoZSBzYW1lIHJhbmdlLiANCisvLy8gPC9zdW1tYXJ5Pg0KK2ludGVyZmFjZSBERUNMU1BFQ19VVUlEKCI1ODEwY2Q0NC0wY2EwLTQ3MDEtYjNmYS1iZWM1MTgyYWU0ZjYiKSBERUNMU1BFQ19OT1ZUQUJMRSBJRFdyaXRlVGV4dEFuYWx5c2lzU2luayA6IHB1YmxpYyBJVW5rbm93bg0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUmVwb3J0IHNjcmlwdCBhbmFseXNpcyBmb3IgdGhlIHRleHQgcmFuZ2UuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFBvc2l0aW9uIj5TdGFydGluZyBwb3NpdGlvbiB0byByZXBvcnQgZnJvbS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRMZW5ndGgiPk51bWJlciBvZiBVVEYxNiB1bml0cyBvZiB0aGUgcmVwb3J0ZWQgcmFuZ2UuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJzY3JpcHRBbmFseXNpcyI+U2NyaXB0IGFuYWx5c2lzIG9mIGNoYXJhY3RlcnMgaW4gcmFuZ2UuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gQSBzdWNjZXNzZnVsIGNvZGUgb3IgZXJyb3IgY29kZSB0byBhYm9ydCBhbmFseXNpcy4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldFNjcmlwdEFuYWx5c2lzKSgNCisgICAgICAgIFVJTlQzMiB0ZXh0UG9zaXRpb24sDQorICAgICAgICBVSU5UMzIgdGV4dExlbmd0aCwNCisgICAgICAgIF9faW4gRFdSSVRFX1NDUklQVF9BTkFMWVNJUyBjb25zdCogc2NyaXB0QW5hbHlzaXMNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUmVwcG9ydCBsaW5lLWJyZWFrIG9wcG9ydHVuaXRpZXMgZm9yIGVhY2ggY2hhcmFjdGVyLCBzdGFydGluZyBmcm9tDQorICAgIC8vLyB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRQb3NpdGlvbiI+U3RhcnRpbmcgcG9zaXRpb24gdG8gcmVwb3J0IGZyb20uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0TGVuZ3RoIj5OdW1iZXIgb2YgVVRGMTYgdW5pdHMgb2YgdGhlIHJlcG9ydGVkIHJhbmdlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibGluZUJyZWFrcG9pbnRzIj5CcmVha2luZyBjb25kaXRpb25zIGZvciBlYWNoIGNoYXJhY3Rlci48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBBIHN1Y2Nlc3NmdWwgY29kZSBvciBlcnJvciBjb2RlIHRvIGFib3J0IGFuYWx5c2lzLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoU2V0TGluZUJyZWFrcG9pbnRzKSgNCisgICAgICAgIFVJTlQzMiB0ZXh0UG9zaXRpb24sDQorICAgICAgICBVSU5UMzIgdGV4dExlbmd0aCwNCisgICAgICAgIF9faW5fZWNvdW50KHRleHRMZW5ndGgpIERXUklURV9MSU5FX0JSRUFLUE9JTlQgY29uc3QqIGxpbmVCcmVha3BvaW50cw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXQgYmlkaXJlY3Rpb25hbCBsZXZlbCBvbiB0aGUgcmFuZ2UsIGNhbGxlZCBvbmNlIHBlciBlYWNoDQorICAgIC8vLyBsZXZlbCBydW4gY2hhbmdlIChlaXRoZXIgZXhwbGljaXQgb3IgcmVzb2x2ZWQgaW1wbGljaXQpLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRQb3NpdGlvbiI+U3RhcnRpbmcgcG9zaXRpb24gdG8gcmVwb3J0IGZyb20uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0TGVuZ3RoIj5OdW1iZXIgb2YgVVRGMTYgdW5pdHMgb2YgdGhlIHJlcG9ydGVkIHJhbmdlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZXhwbGljaXRMZXZlbCI+RXhwbGljaXQgbGV2ZWwgZnJvbSBlbWJlZGRlZCBjb250cm9sIGNvZGVzDQorICAgIC8vLyAgICAgUkxFL1JMTy9MUkUvTFJPL1BERiwgZGV0ZXJtaW5lZCBiZWZvcmUgYW55IGFkZGl0aW9uYWwgcnVsZXMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJyZXNvbHZlZExldmVsIj5GaW5hbCBpbXBsaWNpdCBsZXZlbCBjb25zaWRlcmluZyB0aGUNCisgICAgLy8vICAgICBleHBsaWNpdCBsZXZlbCBhbmQgY2hhcmFjdGVycycgbmF0dXJhbCBkaXJlY3Rpb25hbGl0eSwgYWZ0ZXIgYWxsDQorICAgIC8vLyAgICAgQmlkaSBydWxlcyBoYXZlIGJlZW4gYXBwbGllZC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBBIHN1Y2Nlc3NmdWwgY29kZSBvciBlcnJvciBjb2RlIHRvIGFib3J0IGFuYWx5c2lzLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoU2V0QmlkaUxldmVsKSgNCisgICAgICAgIFVJTlQzMiB0ZXh0UG9zaXRpb24sDQorICAgICAgICBVSU5UMzIgdGV4dExlbmd0aCwNCisgICAgICAgIFVJTlQ4IGV4cGxpY2l0TGV2ZWwsDQorICAgICAgICBVSU5UOCByZXNvbHZlZExldmVsDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBudW1iZXIgc3Vic3RpdHV0aW9uIG9uIHRoZSByYW5nZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UG9zaXRpb24iPlN0YXJ0aW5nIHBvc2l0aW9uIHRvIHJlcG9ydCBmcm9tLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dExlbmd0aCI+TnVtYmVyIG9mIFVURjE2IHVuaXRzIG9mIHRoZSByZXBvcnRlZCByYW5nZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im51bWJlclN1YnN0aXR1dGlvbiI+VGhlIG51bWJlciBzdWJzdGl0dXRpb24gYXBwbGljYWJsZSB0bw0KKyAgICAvLy8gICAgIHRoZSByZXR1cm5lZCByYW5nZSBvZiB0ZXh0LiBUaGUgc2luayBjYWxsYmFjayBtYXkgaG9sZCBvbnRvIGl0IGJ5DQorICAgIC8vLyAgICAgaW5jcmVtZW50aW5nIGl0cyByZWYgY291bnQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gQSBzdWNjZXNzZnVsIGNvZGUgb3IgZXJyb3IgY29kZSB0byBhYm9ydCBhbmFseXNpcy4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcms+DQorICAgIC8vLyBVbmxpa2Ugc2NyaXB0IGFuZCBiaWRpIGFuYWx5c2lzLCB3aGVyZSBldmVyeSBjaGFyYWN0ZXIgcGFzc2VkIHRvIHRoZQ0KKyAgICAvLy8gYW5hbHl6ZXIgaGFzIGEgcmVzdWx0LCB0aGlzIHdpbGwgb25seSBiZSBjYWxsZWQgZm9yIHRob3NlIHJhbmdlcyB3aGVyZQ0KKyAgICAvLy8gc3Vic3RpdHV0aW9uIGlzIGFwcGxpY2FibGUuIEZvciBhbnkgb3RoZXIgcmFuZ2UsIHlvdSB3aWxsIHNpbXBseSBub3QNCisgICAgLy8vIGJlIGNhbGxlZC4NCisgICAgLy8vIDwvcmVtYXJrPg0KKyAgICBTVERNRVRIT0QoU2V0TnVtYmVyU3Vic3RpdHV0aW9uKSgNCisgICAgICAgIFVJTlQzMiB0ZXh0UG9zaXRpb24sDQorICAgICAgICBVSU5UMzIgdGV4dExlbmd0aCwNCisgICAgICAgIF9fbm90bnVsbCBJRFdyaXRlTnVtYmVyU3Vic3RpdHV0aW9uKiBudW1iZXJTdWJzdGl0dXRpb24NCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gQW5hbHl6ZXMgdmFyaW91cyB0ZXh0IHByb3BlcnRpZXMgZm9yIGNvbXBsZXggc2NyaXB0IHByb2Nlc3NpbmcuDQorLy8vIDwvc3VtbWFyeT4NCitpbnRlcmZhY2UgRFdSSVRFX0RFQ0xBUkVfSU5URVJGQUNFKCJiN2U2MTYzZS03ZjQ2LTQzYjQtODRiMy1lNGU2MjQ5YzM2NWQiKSBJRFdyaXRlVGV4dEFuYWx5emVyIDogcHVibGljIElVbmtub3duDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBBbmFseXplcyBhIHRleHQgcmFuZ2UgZm9yIHNjcmlwdCBib3VuZGFyaWVzLCByZWFkaW5nIHRleHQgYXR0cmlidXRlcw0KKyAgICAvLy8gZnJvbSB0aGUgc291cmNlIGFuZCByZXBvcnRpbmcgdGhlIFVuaWNvZGUgc2NyaXB0IElEIHRvIHRoZSBzaW5rIA0KKyAgICAvLy8gY2FsbGJhY2sgU2V0U2NyaXB0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImFuYWx5c2lzU291cmNlIj5Tb3VyY2Ugb2JqZWN0IHRvIGFuYWx5emUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UG9zaXRpb24iPlN0YXJ0aW5nIHBvc2l0aW9uIHdpdGhpbiB0aGUgc291cmNlIG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRMZW5ndGgiPkxlbmd0aCB0byBhbmFseXplLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iYW5hbHlzaXNTaW5rIj5DYWxsYmFjayBvYmplY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQW5hbHl6ZVNjcmlwdCkoDQorICAgICAgICBJRFdyaXRlVGV4dEFuYWx5c2lzU291cmNlKiBhbmFseXNpc1NvdXJjZSwNCisgICAgICAgIFVJTlQzMiB0ZXh0UG9zaXRpb24sDQorICAgICAgICBVSU5UMzIgdGV4dExlbmd0aCwNCisgICAgICAgIElEV3JpdGVUZXh0QW5hbHlzaXNTaW5rKiBhbmFseXNpc1NpbmsNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQW5hbHl6ZXMgYSB0ZXh0IHJhbmdlIGZvciBzY3JpcHQgZGlyZWN0aW9uYWxpdHksIHJlYWRpbmcgYXR0cmlidXRlcw0KKyAgICAvLy8gZnJvbSB0aGUgc291cmNlIGFuZCByZXBvcnRpbmcgbGV2ZWxzIHRvIHRoZSBzaW5rIGNhbGxiYWNrIFNldEJpZGlMZXZlbC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJhbmFseXNpc1NvdXJjZSI+U291cmNlIG9iamVjdCB0byBhbmFseXplLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFBvc2l0aW9uIj5TdGFydGluZyBwb3NpdGlvbiB3aXRoaW4gdGhlIHNvdXJjZSBvYmplY3QuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0TGVuZ3RoIj5MZW5ndGggdG8gYW5hbHl6ZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImFuYWx5c2lzU2luayI+Q2FsbGJhY2sgb2JqZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gV2hpbGUgdGhlIGZ1bmN0aW9uIGNhbiBoYW5kbGUgbXVsdGlwbGUgcGFyYWdyYXBocywgdGhlIHRleHQgcmFuZ2UNCisgICAgLy8vIHNob3VsZCBub3QgYXJiaXRyYXJpbHkgc3BsaXQgdGhlIG1pZGRsZSBvZiBwYXJhZ3JhcGhzLiBPdGhlcndpc2UgdGhlDQorICAgIC8vLyByZXR1cm5lZCBsZXZlbHMgbWF5IGJlIHdyb25nLCBzaW5jZSB0aGUgQmlkaSBhbGdvcml0aG0gaXMgbWVhbnQgdG8NCisgICAgLy8vIGFwcGx5IHRvIHRoZSBwYXJhZ3JhcGggYXMgYSB3aG9sZS4NCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gRW1iZWRkZWQgY29udHJvbCBjb2RlcyAoTFJFL0xSTy9STEUvUkxPL1BERikgYXJlIHRha2VuIGludG8gYWNjb3VudC4NCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgU1RETUVUSE9EKEFuYWx5emVCaWRpKSgNCisgICAgICAgIElEV3JpdGVUZXh0QW5hbHlzaXNTb3VyY2UqIGFuYWx5c2lzU291cmNlLA0KKyAgICAgICAgVUlOVDMyIHRleHRQb3NpdGlvbiwNCisgICAgICAgIFVJTlQzMiB0ZXh0TGVuZ3RoLA0KKyAgICAgICAgSURXcml0ZVRleHRBbmFseXNpc1NpbmsqIGFuYWx5c2lzU2luaw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBBbmFseXplcyBhIHRleHQgcmFuZ2UgZm9yIHNwYW5zIHdoZXJlIG51bWJlciBzdWJzdGl0dXRpb24gaXMgYXBwbGljYWJsZSwNCisgICAgLy8vIHJlYWRpbmcgYXR0cmlidXRlcyBmcm9tIHRoZSBzb3VyY2UgYW5kIHJlcG9ydGluZyBzdWJzdGl0dXRhYmxlIHJhbmdlcw0KKyAgICAvLy8gdG8gdGhlIHNpbmsgY2FsbGJhY2sgU2V0TnVtYmVyU3Vic3RpdHV0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImFuYWx5c2lzU291cmNlIj5Tb3VyY2Ugb2JqZWN0IHRvIGFuYWx5emUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UG9zaXRpb24iPlN0YXJ0aW5nIHBvc2l0aW9uIHdpdGhpbiB0aGUgc291cmNlIG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRMZW5ndGgiPkxlbmd0aCB0byBhbmFseXplLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iYW5hbHlzaXNTaW5rIj5DYWxsYmFjayBvYmplY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBXaGlsZSB0aGUgZnVuY3Rpb24gY2FuIGhhbmRsZSBtdWx0aXBsZSByYW5nZXMgb2YgZGlmZmVyaW5nIG51bWJlcg0KKyAgICAvLy8gc3Vic3RpdHV0aW9ucywgdGhlIHRleHQgcmFuZ2VzIHNob3VsZCBub3QgYXJiaXRyYXJpbHkgc3BsaXQgdGhlDQorICAgIC8vLyBtaWRkbGUgb2YgbnVtYmVycy4gT3RoZXJ3aXNlIGl0IHdpbGwgdHJlYXQgdGhlIG51bWJlcnMgc2VwYXJhdGVseQ0KKyAgICAvLy8gYW5kIHdpbGwgbm90IHRyYW5zbGF0ZSBhbnkgaW50ZXJ2ZW5pbmcgcHVuY3R1YXRpb24uDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIC8vLyA8cmVtYXJrcz4NCisgICAgLy8vIEVtYmVkZGVkIGNvbnRyb2wgY29kZXMgKExSRS9MUk8vUkxFL1JMTy9QREYpIGFyZSB0YWtlbiBpbnRvIGFjY291bnQuDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIFNURE1FVEhPRChBbmFseXplTnVtYmVyU3Vic3RpdHV0aW9uKSgNCisgICAgICAgIElEV3JpdGVUZXh0QW5hbHlzaXNTb3VyY2UqIGFuYWx5c2lzU291cmNlLA0KKyAgICAgICAgVUlOVDMyIHRleHRQb3NpdGlvbiwNCisgICAgICAgIFVJTlQzMiB0ZXh0TGVuZ3RoLA0KKyAgICAgICAgSURXcml0ZVRleHRBbmFseXNpc1NpbmsqIGFuYWx5c2lzU2luaw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBBbmFseXplcyBhIHRleHQgcmFuZ2UgZm9yIHBvdGVudGlhbCBicmVha3BvaW50IG9wcG9ydHVuaXRpZXMsIHJlYWRpbmcNCisgICAgLy8vIGF0dHJpYnV0ZXMgZnJvbSB0aGUgc291cmNlIGFuZCByZXBvcnRpbmcgYnJlYWtwb2ludCBvcHBvcnR1bml0aWVzIHRvDQorICAgIC8vLyB0aGUgc2luayBjYWxsYmFjayBTZXRMaW5lQnJlYWtwb2ludHMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iYW5hbHlzaXNTb3VyY2UiPlNvdXJjZSBvYmplY3QgdG8gYW5hbHl6ZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRQb3NpdGlvbiI+U3RhcnRpbmcgcG9zaXRpb24gd2l0aGluIHRoZSBzb3VyY2Ugb2JqZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dExlbmd0aCI+TGVuZ3RoIHRvIGFuYWx5emUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJhbmFseXNpc1NpbmsiPkNhbGxiYWNrIG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIC8vLyA8cmVtYXJrcz4NCisgICAgLy8vIFdoaWxlIHRoZSBmdW5jdGlvbiBjYW4gaGFuZGxlIG11bHRpcGxlIHBhcmFncmFwaHMsIHRoZSB0ZXh0IHJhbmdlDQorICAgIC8vLyBzaG91bGQgbm90IGFyYml0cmFyaWx5IHNwbGl0IHRoZSBtaWRkbGUgb2YgcGFyYWdyYXBocywgdW5sZXNzIHRoZQ0KKyAgICAvLy8gZ2l2ZW4gdGV4dCBzcGFuIGlzIGNvbnNpZGVyZWQgYSB3aG9sZSB1bml0LiBPdGhlcndpc2UgdGhlDQorICAgIC8vLyByZXR1cm5lZCBwcm9wZXJ0aWVzIGZvciB0aGUgZmlyc3QgYW5kIGxhc3QgY2hhcmFjdGVycyB3aWxsDQorICAgIC8vLyBpbmFwcHJvcHJpYXRlbHkgYWxsb3cgYnJlYWtzLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBTcGVjaWFsIGNhc2VzIGluY2x1ZGUgdGhlIGZpcnN0LCBsYXN0LCBhbmQgc3Vycm9nYXRlIGNoYXJhY3RlcnMuIEFueQ0KKyAgICAvLy8gdGV4dCBzcGFuIGlzIHRyZWF0ZWQgYXMgaWYgYWRqYWNlbnQgdG8gaW5saW5lIG9iamVjdHMgb24gZWl0aGVyIHNpZGUuDQorICAgIC8vLyBTbyB0aGUgcnVsZXMgd2l0aCBjb250aW5nZW50LWJyZWFrIG9wcG9ydHVuaXRpZXMgYXJlIHVzZWQsIHdoZXJlIHRoZSANCisgICAgLy8vIGVkZ2UgYmV0d2VlbiB0ZXh0IGFuZCBpbmxpbmUgb2JqZWN0cyBpcyBhbHdheXMgdHJlYXRlZCBhcyBhIHBvdGVudGlhbA0KKyAgICAvLy8gYnJlYWsgb3Bwb3J0dW5pdHksIGRlcGVuZGVudCBvbiBhbnkgb3ZlcnJpZGluZyBydWxlcyBvZiB0aGUgYWRqYWNlbnQNCisgICAgLy8vIG9iamVjdHMgdG8gcHJvaGliaXQgb3IgZm9yY2UgdGhlIGJyZWFrIChzZWUgVW5pY29kZSBUUiAjMTQpLg0KKyAgICAvLy8gU3Vycm9nYXRlIHBhaXJzIG5ldmVyIGJyZWFrIGJldHdlZW4uDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIFNURE1FVEhPRChBbmFseXplTGluZUJyZWFrcG9pbnRzKSgNCisgICAgICAgIElEV3JpdGVUZXh0QW5hbHlzaXNTb3VyY2UqIGFuYWx5c2lzU291cmNlLA0KKyAgICAgICAgVUlOVDMyIHRleHRQb3NpdGlvbiwNCisgICAgICAgIFVJTlQzMiB0ZXh0TGVuZ3RoLA0KKyAgICAgICAgSURXcml0ZVRleHRBbmFseXNpc1NpbmsqIGFuYWx5c2lzU2luaw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBQYXJzZXMgdGhlIGlucHV0IHRleHQgc3RyaW5nIGFuZCBtYXBzIGl0IHRvIHRoZSBzZXQgb2YgZ2x5cGhzIGFuZCBhc3NvY2lhdGVkIGdseXBoIGRhdGENCisgICAgLy8vIGFjY29yZGluZyB0byB0aGUgZm9udCBhbmQgdGhlIHdyaXRpbmcgc3lzdGVtJ3MgcmVuZGVyaW5nIHJ1bGVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRTdHJpbmciPlRoZSBzdHJpbmcgdG8gY29udmVydCB0byBnbHlwaHMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0TGVuZ3RoIj5UaGUgbGVuZ3RoIG9mIHRleHRTdHJpbmcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmFjZSI+VGhlIGZvbnQgZmFjZSB0byBnZXQgZ2x5cGhzIGZyb20uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpc1NpZGV3YXlzIj5TZXQgdG8gdHJ1ZSBpZiB0aGUgdGV4dCBpcyBpbnRlbmRlZCB0byBiZQ0KKyAgICAvLy8gZHJhd24gdmVydGljYWxseS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImlzUmlnaHRUb0xlZnQiPlNldCB0byBUUlVFIGZvciByaWdodC10by1sZWZ0IHRleHQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJzY3JpcHRBbmFseXNpcyI+U2NyaXB0IGFuYWx5c2lzIHJlc3VsdCBmcm9tIEFuYWx5emVTY3JpcHQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2NhbGVOYW1lIj5UaGUgbG9jYWxlIHRvIHVzZSB3aGVuIHNlbGVjdGluZyBnbHlwaHMuDQorICAgIC8vLyBlLmcuIHRoZSBzYW1lIGNoYXJhY3RlciBtYXkgbWFwIHRvIGRpZmZlcmVudCBnbHlwaHMgZm9yIGphLWpwIHZzIHpoLWNocy4NCisgICAgLy8vIElmIHRoaXMgaXMgTlVMTCB0aGVuIHRoZSBkZWZhdWx0IG1hcHBpbmcgYmFzZWQgb24gdGhlIHNjcmlwdCBpcyB1c2VkLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibnVtYmVyU3Vic3RpdHV0aW9uIj5PcHRpb25hbCBudW1iZXIgc3Vic3RpdHV0aW9uIHdoaWNoDQorICAgIC8vLyBzZWxlY3RzIHRoZSBhcHByb3ByaWF0ZSBnbHlwaHMgZm9yIGRpZ2l0cyBhbmQgcmVsYXRlZCBudW1lcmljIGNoYXJhY3RlcnMsDQorICAgIC8vLyBkZXBlbmRpbmcgb24gdGhlIHJlc3VsdHMgb2J0YWluZWQgZnJvbSBBbmFseXplTnVtYmVyU3Vic3RpdHV0aW9uLiBQYXNzaW5nDQorICAgIC8vLyBudWxsIGluZGljYXRlcyB0aGF0IG5vIHN1YnN0aXR1dGlvbiBpcyBuZWVkZWQgYW5kIHRoYXQgdGhlIGRpZ2l0cyBzaG91bGQNCisgICAgLy8vIHJlY2VpdmUgbm9taW5hbCBnbHlwaHMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmZWF0dXJlcyI+QW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHNldHMgb2YgdHlwb2dyYXBoaWMgDQorICAgIC8vLyBmZWF0dXJlcyB0byB1c2UgaW4gZWFjaCBmZWF0dXJlIHJhbmdlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZmVhdHVyZVJhbmdlTGVuZ3RocyI+VGhlIGxlbmd0aCBvZiBlYWNoIGZlYXR1cmUgcmFuZ2UsIGluIGNoYXJhY3RlcnMuICANCisgICAgLy8vIFRoZSBzdW0gb2YgYWxsIGxlbmd0aHMgc2hvdWxkIGJlIGVxdWFsIHRvIHRleHRMZW5ndGguPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmZWF0dXJlUmFuZ2VzIj5UaGUgbnVtYmVyIG9mIGZlYXR1cmUgcmFuZ2VzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibWF4R2x5cGhDb3VudCI+VGhlIG1heGltdW0gbnVtYmVyIG9mIGdseXBocyB0aGF0IGNhbiBiZQ0KKyAgICAvLy8gcmV0dXJuZWQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbHVzdGVyTWFwIj5UaGUgbWFwcGluZyBmcm9tIGNoYXJhY3RlciByYW5nZXMgdG8gZ2x5cGggDQorICAgIC8vLyByYW5nZXMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UHJvcHMiPlBlci1jaGFyYWN0ZXIgb3V0cHV0IHByb3BlcnRpZXMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJnbHlwaEluZGljZXMiPk91dHB1dCBnbHlwaCBpbmRpY2VzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZ2x5cGhQcm9wcyI+UGVyLWdseXBoIG91dHB1dCBwcm9wZXJ0aWVzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iYWN0dWFsR2x5cGhDb3VudCI+VGhlIGFjdHVhbCBudW1iZXIgb2YgZ2x5cGhzIHJldHVybmVkIGlmDQorICAgIC8vLyB0aGUgY2FsbCBzdWNjZWVkcy48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIC8vLyA8cmVtYXJrcz4NCisgICAgLy8vIE5vdGUgdGhhdCB0aGUgbWFwcGluZyBmcm9tIGNoYXJhY3RlcnMgdG8gZ2x5cGhzIGlzLCBpbiBnZW5lcmFsLCBtYW55LQ0KKyAgICAvLy8gdG8tbWFueS4gIFRoZSByZWNvbW1lbmRlZCBlc3RpbWF0ZSBmb3IgdGhlIHBlci1nbHlwaCBvdXRwdXQgYnVmZmVycyBpcw0KKyAgICAvLy8gKDMgKiB0ZXh0TGVuZ3RoIC8gMiArIDE2KS4gIFRoaXMgaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgc3VmZmljaWVudC4NCisgICAgLy8vDQorICAgIC8vLyBUaGUgdmFsdWUgb2YgdGhlIGFjdHVhbEdseXBoQ291bnQgcGFyYW1ldGVyIGlzIG9ubHkgdmFsaWQgaWYgdGhlIGNhbGwNCisgICAgLy8vIHN1Y2NlZWRzLiAgSW4gdGhlIGV2ZW50IHRoYXQgbWF4R2x5cGhDb3VudCBpcyBub3QgYmlnIGVub3VnaA0KKyAgICAvLy8gRV9OT1RfU1VGRklDSUVOVF9CVUZGRVIsIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gSFJFU1VMVF9GUk9NX1dJTjMyKEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIpLA0KKyAgICAvLy8gd2lsbCBiZSByZXR1cm5lZC4gIFRoZSBhcHBsaWNhdGlvbiBzaG91bGQgYWxsb2NhdGUgYSBsYXJnZXIgYnVmZmVyIGFuZCB0cnkgYWdhaW4uDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIFNURE1FVEhPRChHZXRHbHlwaHMpKA0KKyAgICAgICAgX19pbl9lY291bnQodGV4dExlbmd0aCkgV0NIQVIgY29uc3QqIHRleHRTdHJpbmcsDQorICAgICAgICBVSU5UMzIgdGV4dExlbmd0aCwNCisgICAgICAgIElEV3JpdGVGb250RmFjZSogZm9udEZhY2UsDQorICAgICAgICBCT09MIGlzU2lkZXdheXMsDQorICAgICAgICBCT09MIGlzUmlnaHRUb0xlZnQsDQorICAgICAgICBfX2luIERXUklURV9TQ1JJUFRfQU5BTFlTSVMgY29uc3QqIHNjcmlwdEFuYWx5c2lzLA0KKyAgICAgICAgX19pbl96X29wdCBXQ0hBUiBjb25zdCogbG9jYWxlTmFtZSwNCisgICAgICAgIF9fbWF5YmVudWxsIElEV3JpdGVOdW1iZXJTdWJzdGl0dXRpb24qIG51bWJlclN1YnN0aXR1dGlvbiwNCisgICAgICAgIF9faW5fZWNvdW50X29wdChmZWF0dXJlUmFuZ2VzKSBEV1JJVEVfVFlQT0dSQVBISUNfRkVBVFVSRVMgY29uc3QqKiBmZWF0dXJlcywNCisgICAgICAgIF9faW5fZWNvdW50X29wdChmZWF0dXJlUmFuZ2VzKSBVSU5UMzIgY29uc3QqIGZlYXR1cmVSYW5nZUxlbmd0aHMsDQorICAgICAgICBVSU5UMzIgZmVhdHVyZVJhbmdlcywNCisgICAgICAgIFVJTlQzMiBtYXhHbHlwaENvdW50LA0KKyAgICAgICAgX19vdXRfZWNvdW50KHRleHRMZW5ndGgpIFVJTlQxNiogY2x1c3Rlck1hcCwNCisgICAgICAgIF9fb3V0X2Vjb3VudCh0ZXh0TGVuZ3RoKSBEV1JJVEVfU0hBUElOR19URVhUX1BST1BFUlRJRVMqIHRleHRQcm9wcywNCisgICAgICAgIF9fb3V0X2Vjb3VudChtYXhHbHlwaENvdW50KSBVSU5UMTYqIGdseXBoSW5kaWNlcywNCisgICAgICAgIF9fb3V0X2Vjb3VudChtYXhHbHlwaENvdW50KSBEV1JJVEVfU0hBUElOR19HTFlQSF9QUk9QRVJUSUVTKiBnbHlwaFByb3BzLA0KKyAgICAgICAgX19vdXQgVUlOVDMyKiBhY3R1YWxHbHlwaENvdW50DQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFBsYWNlIGdseXBocyBvdXRwdXQgZnJvbSB0aGUgR2V0R2x5cGhzIG1ldGhvZCBhY2NvcmRpbmcgdG8gdGhlIGZvbnQgDQorICAgIC8vLyBhbmQgdGhlIHdyaXRpbmcgc3lzdGVtJ3MgcmVuZGVyaW5nIHJ1bGVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRTdHJpbmciPlRoZSBvcmlnaW5hbCBzdHJpbmcgdGhlIGdseXBocyBjYW1lIGZyb20uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbHVzdGVyTWFwIj5UaGUgbWFwcGluZyBmcm9tIGNoYXJhY3RlciByYW5nZXMgdG8gZ2x5cGggDQorICAgIC8vLyByYW5nZXMuIFJldHVybmVkIGJ5IEdldEdseXBocy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRQcm9wcyI+UGVyLWNoYXJhY3RlciBwcm9wZXJ0aWVzLiBSZXR1cm5lZCBieSANCisgICAgLy8vIEdldEdseXBocy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRMZW5ndGgiPlRoZSBsZW5ndGggb2YgdGV4dFN0cmluZy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoSW5kaWNlcyI+R2x5cGggaW5kaWNlcy4gU2VlIEdldEdseXBoczwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZ2x5cGhQcm9wcyI+UGVyLWdseXBoIHByb3BlcnRpZXMuIFNlZSBHZXRHbHlwaHM8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoQ291bnQiPlRoZSBudW1iZXIgb2YgZ2x5cGhzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZhY2UiPlRoZSBmb250IGZhY2UgdGhlIGdseXBocyBjYW1lIGZyb20uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RW1TaXplIj5Mb2dpY2FsIGZvbnQgc2l6ZSBpbiBESVAncy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImlzU2lkZXdheXMiPlNldCB0byB0cnVlIGlmIHRoZSB0ZXh0IGlzIGludGVuZGVkIHRvIGJlDQorICAgIC8vLyBkcmF3biB2ZXJ0aWNhbGx5LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaXNSaWdodFRvTGVmdCI+U2V0IHRvIFRSVUUgZm9yIHJpZ2h0LXRvLWxlZnQgdGV4dC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InNjcmlwdEFuYWx5c2lzIj5TY3JpcHQgYW5hbHlzaXMgcmVzdWx0IGZyb20gQW5hbHl6ZVNjcmlwdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImxvY2FsZU5hbWUiPlRoZSBsb2NhbGUgdG8gdXNlIHdoZW4gc2VsZWN0aW5nIGdseXBocy4NCisgICAgLy8vIGUuZy4gdGhlIHNhbWUgY2hhcmFjdGVyIG1heSBtYXAgdG8gZGlmZmVyZW50IGdseXBocyBmb3IgamEtanAgdnMgemgtY2hzLg0KKyAgICAvLy8gSWYgdGhpcyBpcyBOVUxMIHRoZW4gdGhlIGRlZmF1bHQgbWFwcGluZyBiYXNlZCBvbiB0aGUgc2NyaXB0IGlzIHVzZWQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmZWF0dXJlcyI+QW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHNldHMgb2YgdHlwb2dyYXBoaWMgDQorICAgIC8vLyBmZWF0dXJlcyB0byB1c2UgaW4gZWFjaCBmZWF0dXJlIHJhbmdlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZmVhdHVyZVJhbmdlTGVuZ3RocyI+VGhlIGxlbmd0aCBvZiBlYWNoIGZlYXR1cmUgcmFuZ2UsIGluIGNoYXJhY3RlcnMuICANCisgICAgLy8vIFRoZSBzdW0gb2YgYWxsIGxlbmd0aHMgc2hvdWxkIGJlIGVxdWFsIHRvIHRleHRMZW5ndGguPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmZWF0dXJlUmFuZ2VzIj5UaGUgbnVtYmVyIG9mIGZlYXR1cmUgcmFuZ2VzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZ2x5cGhBZHZhbmNlcyI+VGhlIGFkdmFuY2Ugd2lkdGggb2YgZWFjaCBnbHlwaC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoT2Zmc2V0cyI+VGhlIG9mZnNldCBvZiB0aGUgb3JpZ2luIG9mIGVhY2ggZ2x5cGguPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0R2x5cGhQbGFjZW1lbnRzKSgNCisgICAgICAgIF9faW5fZWNvdW50KHRleHRMZW5ndGgpIFdDSEFSIGNvbnN0KiB0ZXh0U3RyaW5nLA0KKyAgICAgICAgX19pbl9lY291bnQodGV4dExlbmd0aCkgVUlOVDE2IGNvbnN0KiBjbHVzdGVyTWFwLA0KKyAgICAgICAgX19pbl9lY291bnQodGV4dExlbmd0aCkgRFdSSVRFX1NIQVBJTkdfVEVYVF9QUk9QRVJUSUVTKiB0ZXh0UHJvcHMsDQorICAgICAgICBVSU5UMzIgdGV4dExlbmd0aCwNCisgICAgICAgIF9faW5fZWNvdW50KGdseXBoQ291bnQpIFVJTlQxNiBjb25zdCogZ2x5cGhJbmRpY2VzLA0KKyAgICAgICAgX19pbl9lY291bnQoZ2x5cGhDb3VudCkgRFdSSVRFX1NIQVBJTkdfR0xZUEhfUFJPUEVSVElFUyBjb25zdCogZ2x5cGhQcm9wcywNCisgICAgICAgIFVJTlQzMiBnbHlwaENvdW50LA0KKyAgICAgICAgSURXcml0ZUZvbnRGYWNlICogZm9udEZhY2UsDQorICAgICAgICBGTE9BVCBmb250RW1TaXplLA0KKyAgICAgICAgQk9PTCBpc1NpZGV3YXlzLA0KKyAgICAgICAgQk9PTCBpc1JpZ2h0VG9MZWZ0LA0KKyAgICAgICAgX19pbiBEV1JJVEVfU0NSSVBUX0FOQUxZU0lTIGNvbnN0KiBzY3JpcHRBbmFseXNpcywNCisgICAgICAgIF9faW5fel9vcHQgV0NIQVIgY29uc3QqIGxvY2FsZU5hbWUsDQorICAgICAgICBfX2luX2Vjb3VudF9vcHQoZmVhdHVyZVJhbmdlcykgRFdSSVRFX1RZUE9HUkFQSElDX0ZFQVRVUkVTIGNvbnN0KiogZmVhdHVyZXMsDQorICAgICAgICBfX2luX2Vjb3VudF9vcHQoZmVhdHVyZVJhbmdlcykgVUlOVDMyIGNvbnN0KiBmZWF0dXJlUmFuZ2VMZW5ndGhzLA0KKyAgICAgICAgVUlOVDMyIGZlYXR1cmVSYW5nZXMsDQorICAgICAgICBfX291dF9lY291bnQoZ2x5cGhDb3VudCkgRkxPQVQqIGdseXBoQWR2YW5jZXMsDQorICAgICAgICBfX291dF9lY291bnQoZ2x5cGhDb3VudCkgRFdSSVRFX0dMWVBIX09GRlNFVCogZ2x5cGhPZmZzZXRzDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFBsYWNlIGdseXBocyBvdXRwdXQgZnJvbSB0aGUgR2V0R2x5cGhzIG1ldGhvZCBhY2NvcmRpbmcgdG8gdGhlIGZvbnQgDQorICAgIC8vLyBhbmQgdGhlIHdyaXRpbmcgc3lzdGVtJ3MgcmVuZGVyaW5nIHJ1bGVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRTdHJpbmciPlRoZSBvcmlnaW5hbCBzdHJpbmcgdGhlIGdseXBocyBjYW1lIGZyb20uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbHVzdGVyTWFwIj5UaGUgbWFwcGluZyBmcm9tIGNoYXJhY3RlciByYW5nZXMgdG8gZ2x5cGggDQorICAgIC8vLyByYW5nZXMuIFJldHVybmVkIGJ5IEdldEdseXBocy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRQcm9wcyI+UGVyLWNoYXJhY3RlciBwcm9wZXJ0aWVzLiBSZXR1cm5lZCBieSANCisgICAgLy8vIEdldEdseXBocy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRMZW5ndGgiPlRoZSBsZW5ndGggb2YgdGV4dFN0cmluZy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoSW5kaWNlcyI+R2x5cGggaW5kaWNlcy4gU2VlIEdldEdseXBoczwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZ2x5cGhQcm9wcyI+UGVyLWdseXBoIHByb3BlcnRpZXMuIFNlZSBHZXRHbHlwaHM8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoQ291bnQiPlRoZSBudW1iZXIgb2YgZ2x5cGhzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZhY2UiPlRoZSBmb250IGZhY2UgdGhlIGdseXBocyBjYW1lIGZyb20uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RW1TaXplIj5Mb2dpY2FsIGZvbnQgc2l6ZSBpbiBESVAncy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InBpeGVsc1BlckRpcCI+TnVtYmVyIG9mIHBoeXNpY2FsIHBpeGVscyBwZXIgRElQLiBGb3IgZXhhbXBsZSwgaWYgdGhlIERQSSBvZiB0aGUgcmVuZGVyaW5nIHN1cmZhY2UgaXMgOTYgdGhpcyANCisgICAgLy8vIHZhbHVlIGlzIDEuMGYuIElmIHRoZSBEUEkgaXMgMTIwLCB0aGlzIHZhbHVlIGlzIDEyMC4wZi85Ni48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRyYW5zZm9ybSI+T3B0aW9uYWwgdHJhbnNmb3JtIGFwcGxpZWQgdG8gdGhlIGdseXBocyBhbmQgdGhlaXIgcG9zaXRpb25zLiBUaGlzIHRyYW5zZm9ybSBpcyBhcHBsaWVkIGFmdGVyIHRoZQ0KKyAgICAvLy8gc2NhbGluZyBzcGVjaWZpZWQgYnkgdGhlIGZvbnQgc2l6ZSBhbmQgcGl4ZWxzUGVyRGlwLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlR2RpTmF0dXJhbCI+DQorICAgIC8vLyBXaGVuIHNldCB0byBGQUxTRSwgdGhlIG1ldHJpY3MgYXJlIHRoZSBzYW1lIGFzIHRoZSBtZXRyaWNzIG9mIEdESSBhbGlhc2VkIHRleHQuDQorICAgIC8vLyBXaGVuIHNldCB0byBUUlVFLCB0aGUgbWV0cmljcyBhcmUgdGhlIHNhbWUgYXMgdGhlIG1ldHJpY3Mgb2YgdGV4dCBtZWFzdXJlZCBieSBHREkgdXNpbmcgYSBmb250DQorICAgIC8vLyBjcmVhdGVkIHdpdGggQ0xFQVJUWVBFX05BVFVSQUxfUVVBTElUWS4NCisgICAgLy8vIDwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaXNTaWRld2F5cyI+U2V0IHRvIHRydWUgaWYgdGhlIHRleHQgaXMgaW50ZW5kZWQgdG8gYmUNCisgICAgLy8vIGRyYXduIHZlcnRpY2FsbHkuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpc1JpZ2h0VG9MZWZ0Ij5TZXQgdG8gVFJVRSBmb3IgcmlnaHQtdG8tbGVmdCB0ZXh0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ic2NyaXB0QW5hbHlzaXMiPlNjcmlwdCBhbmFseXNpcyByZXN1bHQgZnJvbSBBbmFseXplU2NyaXB0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibG9jYWxlTmFtZSI+VGhlIGxvY2FsZSB0byB1c2Ugd2hlbiBzZWxlY3RpbmcgZ2x5cGhzLg0KKyAgICAvLy8gZS5nLiB0aGUgc2FtZSBjaGFyYWN0ZXIgbWF5IG1hcCB0byBkaWZmZXJlbnQgZ2x5cGhzIGZvciBqYS1qcCB2cyB6aC1jaHMuDQorICAgIC8vLyBJZiB0aGlzIGlzIE5VTEwgdGhlbiB0aGUgZGVmYXVsdCBtYXBwaW5nIGJhc2VkIG9uIHRoZSBzY3JpcHQgaXMgdXNlZC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZlYXR1cmVzIj5BbiBhcnJheSBvZiBwb2ludGVycyB0byB0aGUgc2V0cyBvZiB0eXBvZ3JhcGhpYyANCisgICAgLy8vIGZlYXR1cmVzIHRvIHVzZSBpbiBlYWNoIGZlYXR1cmUgcmFuZ2UuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmZWF0dXJlUmFuZ2VMZW5ndGhzIj5UaGUgbGVuZ3RoIG9mIGVhY2ggZmVhdHVyZSByYW5nZSwgaW4gY2hhcmFjdGVycy4gIA0KKyAgICAvLy8gVGhlIHN1bSBvZiBhbGwgbGVuZ3RocyBzaG91bGQgYmUgZXF1YWwgdG8gdGV4dExlbmd0aC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZlYXR1cmVSYW5nZXMiPlRoZSBudW1iZXIgb2YgZmVhdHVyZSByYW5nZXMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJnbHlwaEFkdmFuY2VzIj5UaGUgYWR2YW5jZSB3aWR0aCBvZiBlYWNoIGdseXBoLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZ2x5cGhPZmZzZXRzIj5UaGUgb2Zmc2V0IG9mIHRoZSBvcmlnaW4gb2YgZWFjaCBnbHlwaC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRHZGlDb21wYXRpYmxlR2x5cGhQbGFjZW1lbnRzKSgNCisgICAgICAgIF9faW5fZWNvdW50KHRleHRMZW5ndGgpIFdDSEFSIGNvbnN0KiB0ZXh0U3RyaW5nLA0KKyAgICAgICAgX19pbl9lY291bnQodGV4dExlbmd0aCkgVUlOVDE2IGNvbnN0KiBjbHVzdGVyTWFwLA0KKyAgICAgICAgX19pbl9lY291bnQodGV4dExlbmd0aCkgRFdSSVRFX1NIQVBJTkdfVEVYVF9QUk9QRVJUSUVTKiB0ZXh0UHJvcHMsDQorICAgICAgICBVSU5UMzIgdGV4dExlbmd0aCwNCisgICAgICAgIF9faW5fZWNvdW50KGdseXBoQ291bnQpIFVJTlQxNiBjb25zdCogZ2x5cGhJbmRpY2VzLA0KKyAgICAgICAgX19pbl9lY291bnQoZ2x5cGhDb3VudCkgRFdSSVRFX1NIQVBJTkdfR0xZUEhfUFJPUEVSVElFUyBjb25zdCogZ2x5cGhQcm9wcywNCisgICAgICAgIFVJTlQzMiBnbHlwaENvdW50LA0KKyAgICAgICAgSURXcml0ZUZvbnRGYWNlICogZm9udEZhY2UsDQorICAgICAgICBGTE9BVCBmb250RW1TaXplLA0KKyAgICAgICAgRkxPQVQgcGl4ZWxzUGVyRGlwLA0KKyAgICAgICAgX19pbl9vcHQgRFdSSVRFX01BVFJJWCBjb25zdCogdHJhbnNmb3JtLA0KKyAgICAgICAgQk9PTCB1c2VHZGlOYXR1cmFsLA0KKyAgICAgICAgQk9PTCBpc1NpZGV3YXlzLA0KKyAgICAgICAgQk9PTCBpc1JpZ2h0VG9MZWZ0LA0KKyAgICAgICAgX19pbiBEV1JJVEVfU0NSSVBUX0FOQUxZU0lTIGNvbnN0KiBzY3JpcHRBbmFseXNpcywNCisgICAgICAgIF9faW5fel9vcHQgV0NIQVIgY29uc3QqIGxvY2FsZU5hbWUsDQorICAgICAgICBfX2luX2Vjb3VudF9vcHQoZmVhdHVyZVJhbmdlcykgRFdSSVRFX1RZUE9HUkFQSElDX0ZFQVRVUkVTIGNvbnN0KiogZmVhdHVyZXMsDQorICAgICAgICBfX2luX2Vjb3VudF9vcHQoZmVhdHVyZVJhbmdlcykgVUlOVDMyIGNvbnN0KiBmZWF0dXJlUmFuZ2VMZW5ndGhzLA0KKyAgICAgICAgVUlOVDMyIGZlYXR1cmVSYW5nZXMsDQorICAgICAgICBfX291dF9lY291bnQoZ2x5cGhDb3VudCkgRkxPQVQqIGdseXBoQWR2YW5jZXMsDQorICAgICAgICBfX291dF9lY291bnQoZ2x5cGhDb3VudCkgRFdSSVRFX0dMWVBIX09GRlNFVCogZ2x5cGhPZmZzZXRzDQorICAgICAgICApIFBVUkU7DQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBEV1JJVEVfR0xZUEhfUlVOIHN0cnVjdHVyZSBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHJlbmRlcmVycw0KKy8vLyB0byBkcmF3IGdseXBoIHJ1bnMuIEFsbCBjb29yZGluYXRlcyBhcmUgaW4gZGV2aWNlIGluZGVwZW5kZW50IHBpeGVscyAoRElQcykuDQorLy8vIDwvc3VtbWFyeT4NCitzdHJ1Y3QgRFdSSVRFX0dMWVBIX1JVTg0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIHBoeXNpY2FsIGZvbnQgZmFjZSB0byBkcmF3IHdpdGguDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIF9fbm90bnVsbCBJRFdyaXRlRm9udEZhY2UqIGZvbnRGYWNlOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBMb2dpY2FsIHNpemUgb2YgdGhlIGZvbnQgaW4gRElQcywgbm90IHBvaW50cyAoZXF1YWxzIDEvOTYgaW5jaCkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIGZvbnRFbVNpemU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBudW1iZXIgb2YgZ2x5cGhzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMzIgZ2x5cGhDb3VudDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIGluZGljZXMgdG8gcmVuZGVyLg0KKyAgICAvLy8gPC9zdW1tYXJ5PiAgICANCisgICAgX19maWVsZF9lY291bnQoZ2x5cGhDb3VudCkgVUlOVDE2IGNvbnN0KiBnbHlwaEluZGljZXM7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdseXBoIGFkdmFuY2Ugd2lkdGhzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBfX2ZpZWxkX2Vjb3VudF9vcHQoZ2x5cGhDb3VudCkgRkxPQVQgY29uc3QqIGdseXBoQWR2YW5jZXM7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdseXBoIG9mZnNldHMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIF9fZmllbGRfZWNvdW50X29wdChnbHlwaENvdW50KSBEV1JJVEVfR0xZUEhfT0ZGU0VUIGNvbnN0KiBnbHlwaE9mZnNldHM7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIElmIHRydWUsIHNwZWNpZmllcyB0aGF0IGdseXBocyBhcmUgcm90YXRlZCA5MCBkZWdyZWVzIHRvIHRoZSBsZWZ0IGFuZA0KKyAgICAvLy8gdmVydGljYWwgbWV0cmljcyBhcmUgdXNlZC4gVmVydGljYWwgd3JpdGluZyBpcyBhY2hpZXZlZCBieSBzcGVjaWZ5aW5nDQorICAgIC8vLyBpc1NpZGV3YXlzID0gdHJ1ZSBhbmQgcm90YXRpbmcgdGhlIGVudGlyZSBydW4gOTAgZGVncmVlcyB0byB0aGUgcmlnaHQNCisgICAgLy8vIHZpYSBhIHJvdGF0ZSB0cmFuc2Zvcm0uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEJPT0wgaXNTaWRld2F5czsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIGltcGxpY2l0IHJlc29sdmVkIGJpZGkgbGV2ZWwgb2YgdGhlIHJ1bi4gT2RkIGxldmVscyBpbmRpY2F0ZQ0KKyAgICAvLy8gcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXMgbGlrZSBIZWJyZXcgYW5kIEFyYWJpYywgd2hpbGUgZXZlbiBsZXZlbHMNCisgICAgLy8vIGluZGljYXRlIGxlZnQtdG8tcmlnaHQgbGFuZ3VhZ2VzIGxpa2UgRW5nbGlzaCBhbmQgSmFwYW5lc2UgKHdoZW4NCisgICAgLy8vIHdyaXR0ZW4gaG9yaXpvbnRhbGx5KS4gRm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzLCB0aGUgdGV4dCBvcmlnaW4NCisgICAgLy8vIGlzIG9uIHRoZSByaWdodCwgYW5kIHRleHQgc2hvdWxkIGJlIGRyYXduIHRvIHRoZSBsZWZ0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMzIgYmlkaUxldmVsOw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgRFdSSVRFX0dMWVBIX1JVTl9ERVNDUklQVElPTiBzdHJ1Y3R1cmUgY29udGFpbnMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzDQorLy8vIHJlbGF0ZWQgdG8gdGhvc2UgaW4gRFdSSVRFX0dMWVBIX1JVTi4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfR0xZUEhfUlVOX0RFU0NSSVBUSU9ODQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgbG9jYWxlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcnVuLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBfX251bGx0ZXJtaW5hdGVkIFdDSEFSIGNvbnN0KiBsb2NhbGVOYW1lOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIGdseXBocy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgX19maWVsZF9lY291bnQoc3RyaW5nTGVuZ3RoKSBXQ0hBUiBjb25zdCogc3RyaW5nOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgKFVURjE2IGNvZGUtdW5pdHMpLg0KKyAgICAvLy8gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGRpZmZlcmVudCB0aGFuIHRoZSBudW1iZXIgb2YgZ2x5cGhzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMzIgc3RyaW5nTGVuZ3RoOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBBbiBhcnJheSBvZiBpbmRpY2VzIHRvIHRoZSBnbHlwaCBpbmRpY2VzIGFycmF5LCBvZiB0aGUgZmlyc3QgZ2x5cGhzIG9mDQorICAgIC8vLyBhbGwgdGhlIGdseXBoIGNsdXN0ZXJzIG9mIHRoZSBnbHlwaHMgdG8gcmVuZGVyLiANCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgX19maWVsZF9lY291bnQoc3RyaW5nTGVuZ3RoKSBVSU5UMTYgY29uc3QqIGNsdXN0ZXJNYXA7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENvcnJlc3BvbmRpbmcgdGV4dCBwb3NpdGlvbiBpbiB0aGUgb3JpZ2luYWwgc3RyaW5nDQorICAgIC8vLyB0aGlzIGdseXBoIHJ1biBjYW1lIGZyb20uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQzMiB0ZXh0UG9zaXRpb247DQorfTsNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBEV1JJVEVfVU5ERVJMSU5FIHN0cnVjdHVyZSBjb250YWlucyBhYm91dCB0aGUgc2l6ZSBhbmQgcGxhY2VtZW50IG9mIA0KKy8vLyB1bmRlcmxpbmVzLiBBbGwgY29vcmRpbmF0ZXMgYXJlIGluIGRldmljZSBpbmRlcGVuZGVudCBwaXhlbHMgKERJUHMpLg0KKy8vLyA8L3N1bW1hcnk+DQorc3RydWN0IERXUklURV9VTkRFUkxJTkUNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFdpZHRoIG9mIHRoZSB1bmRlcmxpbmUsIG1lYXN1cmVkIHBhcmFsbGVsIHRvIHRoZSBiYXNlbGluZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRkxPQVQgd2lkdGg7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoaWNrbmVzcyBvZiB0aGUgdW5kZXJsaW5lLCBtZWFzdXJlZCBwZXJwZW5kaWN1bGFyIHRvIHRoZQ0KKyAgICAvLy8gYmFzZWxpbmUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIHRoaWNrbmVzczsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gT2Zmc2V0IG9mIHRoZSB1bmRlcmxpbmUgZnJvbSB0aGUgYmFzZWxpbmUuDQorICAgIC8vLyBBIHBvc2l0aXZlIG9mZnNldCByZXByZXNlbnRzIGEgcG9zaXRpb24gYmVsb3cgdGhlIGJhc2VsaW5lIGFuZA0KKyAgICAvLy8gYSBuZWdhdGl2ZSBvZmZzZXQgaXMgYWJvdmUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIG9mZnNldDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gSGVpZ2h0IG9mIHRoZSB0YWxsZXN0IHJ1biB3aGVyZSB0aGUgdW5kZXJsaW5lIGFwcGxpZXMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIHJ1bkhlaWdodDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUmVhZGluZyBkaXJlY3Rpb24gb2YgdGhlIHRleHQgYXNzb2NpYXRlZCB3aXRoIHRoZSB1bmRlcmxpbmUuICBUaGlzIA0KKyAgICAvLy8gdmFsdWUgaXMgdXNlZCB0byBpbnRlcnByZXQgd2hldGhlciB0aGUgd2lkdGggdmFsdWUgcnVucyBob3Jpem9udGFsbHkgDQorICAgIC8vLyBvciB2ZXJ0aWNhbGx5Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfUkVBRElOR19ESVJFQ1RJT04gcmVhZGluZ0RpcmVjdGlvbjsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRmxvdyBkaXJlY3Rpb24gb2YgdGhlIHRleHQgYXNzb2NpYXRlZCB3aXRoIHRoZSB1bmRlcmxpbmUuICBUaGlzIHZhbHVlDQorICAgIC8vLyBpcyB1c2VkIHRvIGludGVycHJldCB3aGV0aGVyIHRoZSB0aGlja25lc3MgdmFsdWUgYWR2YW5jZXMgdG9wIHRvIA0KKyAgICAvLy8gYm90dG9tLCBsZWZ0IHRvIHJpZ2h0LCBvciByaWdodCB0byBsZWZ0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfRkxPV19ESVJFQ1RJT04gZmxvd0RpcmVjdGlvbjsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gTG9jYWxlIG9mIHRoZSB0ZXh0IHRoZSB1bmRlcmxpbmUgaXMgYmVpbmcgZHJhd24gdW5kZXIuIENhbiBiZQ0KKyAgICAvLy8gcGVydGluZW50IHdoZXJlIHRoZSBsb2NhbGUgYWZmZWN0cyBob3cgdGhlIHVuZGVybGluZSBpcyBkcmF3bi4NCisgICAgLy8vIEZvciBleGFtcGxlLCBpbiB2ZXJ0aWNhbCB0ZXh0LCB0aGUgdW5kZXJsaW5lIGJlbG9uZ3Mgb24gdGhlDQorICAgIC8vLyBsZWZ0IGZvciBDaGluZXNlIGJ1dCBvbiB0aGUgcmlnaHQgZm9yIEphcGFuZXNlLg0KKyAgICAvLy8gVGhpcyBjaG9pY2UgaXMgY29tcGxldGVseSBsZWZ0IHVwIHRvIGhpZ2hlciBsZXZlbHMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIF9fbnVsbHRlcm1pbmF0ZWQgV0NIQVIgY29uc3QqIGxvY2FsZU5hbWU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBtZWFzdXJpbmcgbW9kZSBjYW4gYmUgdXNlZnVsIHRvIHRoZSByZW5kZXJlciB0byBkZXRlcm1pbmUgaG93DQorICAgIC8vLyB1bmRlcmxpbmVzIGFyZSByZW5kZXJlZCwgZS5nLiByb3VuZGluZyB0aGUgdGhpY2tuZXNzIHRvIGEgd2hvbGUgcGl4ZWwNCisgICAgLy8vIGluIEdESS1jb21wYXRpYmxlIG1vZGVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfTUVBU1VSSU5HX01PREUgbWVhc3VyaW5nTW9kZTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIERXUklURV9TVFJJS0VUSFJPVUdIIHN0cnVjdHVyZSBjb250YWlucyBhYm91dCB0aGUgc2l6ZSBhbmQgcGxhY2VtZW50IG9mIA0KKy8vLyBzdHJpY2t0aHJvdWdocy4gQWxsIGNvb3JkaW5hdGVzIGFyZSBpbiBkZXZpY2UgaW5kZXBlbmRlbnQgcGl4ZWxzIChESVBzKS4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfU1RSSUtFVEhST1VHSA0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gV2lkdGggb2YgdGhlIHN0cmlrZXRocm91Z2gsIG1lYXN1cmVkIHBhcmFsbGVsIHRvIHRoZSBiYXNlbGluZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRkxPQVQgd2lkdGg7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoaWNrbmVzcyBvZiB0aGUgc3RyaWtldGhyb3VnaCwgbWVhc3VyZWQgcGVycGVuZGljdWxhciB0byB0aGUNCisgICAgLy8vIGJhc2VsaW5lLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCB0aGlja25lc3M7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIE9mZnNldCBvZiB0aGUgc3Rpa2V0aHJvdWdoIGZyb20gdGhlIGJhc2VsaW5lLg0KKyAgICAvLy8gQSBwb3NpdGl2ZSBvZmZzZXQgcmVwcmVzZW50cyBhIHBvc2l0aW9uIGJlbG93IHRoZSBiYXNlbGluZSBhbmQNCisgICAgLy8vIGEgbmVnYXRpdmUgb2Zmc2V0IGlzIGFib3ZlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBvZmZzZXQ7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFJlYWRpbmcgZGlyZWN0aW9uIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgc3RyaWtldGhyb3VnaC4gIFRoaXMNCisgICAgLy8vIHZhbHVlIGlzIHVzZWQgdG8gaW50ZXJwcmV0IHdoZXRoZXIgdGhlIHdpZHRoIHZhbHVlIHJ1bnMgaG9yaXpvbnRhbGx5IA0KKyAgICAvLy8gb3IgdmVydGljYWxseS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX1JFQURJTkdfRElSRUNUSU9OIHJlYWRpbmdEaXJlY3Rpb247DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEZsb3cgZGlyZWN0aW9uIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgc3RyaWtldGhyb3VnaC4gIFRoaXMgDQorICAgIC8vLyB2YWx1ZSBpcyB1c2VkIHRvIGludGVycHJldCB3aGV0aGVyIHRoZSB0aGlja25lc3MgdmFsdWUgYWR2YW5jZXMgdG9wIHRvDQorICAgIC8vLyBib3R0b20sIGxlZnQgdG8gcmlnaHQsIG9yIHJpZ2h0IHRvIGxlZnQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9GTE9XX0RJUkVDVElPTiBmbG93RGlyZWN0aW9uOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBMb2NhbGUgb2YgdGhlIHJhbmdlLiBDYW4gYmUgcGVydGluZW50IHdoZXJlIHRoZSBsb2NhbGUgYWZmZWN0cyB0aGUgc3R5bGUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIF9fbnVsbHRlcm1pbmF0ZWQgV0NIQVIgY29uc3QqIGxvY2FsZU5hbWU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBtZWFzdXJpbmcgbW9kZSBjYW4gYmUgdXNlZnVsIHRvIHRoZSByZW5kZXJlciB0byBkZXRlcm1pbmUgaG93DQorICAgIC8vLyB1bmRlcmxpbmVzIGFyZSByZW5kZXJlZCwgZS5nLiByb3VuZGluZyB0aGUgdGhpY2tuZXNzIHRvIGEgd2hvbGUgcGl4ZWwNCisgICAgLy8vIGluIEdESS1jb21wYXRpYmxlIG1vZGVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfTUVBU1VSSU5HX01PREUgbWVhc3VyaW5nTW9kZTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIERXUklURV9MSU5FX01FVFJJQ1Mgc3RydWN0dXJlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGEgZm9ybWF0dGVkDQorLy8vIGxpbmUgb2YgdGV4dC4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfTElORV9NRVRSSUNTDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgbnVtYmVyIG9mIHRvdGFsIHRleHQgcG9zaXRpb25zIGluIHRoZSBsaW5lLg0KKyAgICAvLy8gVGhpcyBpbmNsdWRlcyBhbnkgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgbmV3bGluZSBjaGFyYWN0ZXJzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMzIgbGVuZ3RoOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgbnVtYmVyIG9mIHdoaXRlc3BhY2UgcG9zaXRpb25zIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuICBOZXdsaW5lDQorICAgIC8vLyBzZXF1ZW5jZXMgYXJlIGNvbnNpZGVyZWQgd2hpdGVzcGFjZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDMyIHRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBuZXdsaW5lIHNlcXVlbmNlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuDQorICAgIC8vLyBJZiB0aGUgY291bnQgaXMgemVybywgdGhlbiB0aGUgbGluZSB3YXMgZWl0aGVyIHdyYXBwZWQgb3IgaXQgaXMgdGhlDQorICAgIC8vLyBlbmQgb2YgdGhlIHRleHQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQzMiBuZXdsaW5lTGVuZ3RoOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBIZWlnaHQgb2YgdGhlIGxpbmUgYXMgbWVhc3VyZWQgZnJvbSB0b3AgdG8gYm90dG9tLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBoZWlnaHQ7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIERpc3RhbmNlIGZyb20gdGhlIHRvcCBvZiB0aGUgbGluZSB0byBpdHMgYmFzZWxpbmUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIGJhc2VsaW5lOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgbGluZSBpcyB0cmltbWVkLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBCT09MIGlzVHJpbW1lZDsNCit9Ow0KKw0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIERXUklURV9DTFVTVEVSX01FVFJJQ1Mgc3RydWN0dXJlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGEgZ2x5cGggY2x1c3Rlci4NCisvLy8gPC9zdW1tYXJ5Pg0KK3N0cnVjdCBEV1JJVEVfQ0xVU1RFUl9NRVRSSUNTDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgdG90YWwgYWR2YW5jZSB3aWR0aCBvZiBhbGwgZ2x5cGhzIGluIHRoZSBjbHVzdGVyLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCB3aWR0aDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIG51bWJlciBvZiB0ZXh0IHBvc2l0aW9ucyBpbiB0aGUgY2x1c3Rlci4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2IGxlbmd0aDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gSW5kaWNhdGUgd2hldGhlciBsaW5lIGNhbiBiZSBicm9rZW4gcmlnaHQgYWZ0ZXIgdGhlIGNsdXN0ZXIuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQxNiBjYW5XcmFwTGluZUFmdGVyIDogMTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gSW5kaWNhdGUgd2hldGhlciB0aGUgY2x1c3RlciBjb3JyZXNwb25kcyB0byB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2IGlzV2hpdGVzcGFjZSA6IDE7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEluZGljYXRlIHdoZXRoZXIgdGhlIGNsdXN0ZXIgY29ycmVzcG9uZHMgdG8gYSBuZXdsaW5lIGNoYXJhY3Rlci4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2IGlzTmV3bGluZSA6IDE7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEluZGljYXRlIHdoZXRoZXIgdGhlIGNsdXN0ZXIgY29ycmVzcG9uZHMgdG8gc29mdCBoeXBoZW4gY2hhcmFjdGVyLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMTYgaXNTb2Z0SHlwaGVuIDogMTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gSW5kaWNhdGUgd2hldGhlciB0aGUgY2x1c3RlciBpcyByZWFkIGZyb20gcmlnaHQgdG8gbGVmdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDE2IGlzUmlnaHRUb0xlZnQgOiAxOw0KKw0KKyAgICBVSU5UMTYgcGFkZGluZyA6IDExOw0KK307DQorDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBPdmVyYWxsIG1ldHJpY3MgYXNzb2NpYXRlZCB3aXRoIHRleHQgYWZ0ZXIgbGF5b3V0Lg0KKy8vLyBBbGwgY29vcmRpbmF0ZXMgYXJlIGluIGRldmljZSBpbmRlcGVuZGVudCBwaXhlbHMgKERJUHMpLg0KKy8vLyA8L3N1bW1hcnk+DQorc3RydWN0IERXUklURV9URVhUX01FVFJJQ1MNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIExlZnQtbW9zdCBwb2ludCBvZiBmb3JtYXR0ZWQgdGV4dCByZWxhdGl2ZSB0byBsYXlvdXQgYm94DQorICAgIC8vLyAoZXhjbHVkaW5nIGFueSBnbHlwaCBvdmVyaGFuZykuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIGxlZnQ7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRvcC1tb3N0IHBvaW50IG9mIGZvcm1hdHRlZCB0ZXh0IHJlbGF0aXZlIHRvIGxheW91dCBib3gNCisgICAgLy8vIChleGNsdWRpbmcgYW55IGdseXBoIG92ZXJoYW5nKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRkxPQVQgdG9wOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgd2lkdGggb2YgdGhlIGZvcm1hdHRlZCB0ZXh0IGlnbm9yaW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UNCisgICAgLy8vIGF0IHRoZSBlbmQgb2YgZWFjaCBsaW5lLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCB3aWR0aDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIHdpZHRoIG9mIHRoZSBmb3JtYXR0ZWQgdGV4dCB0YWtpbmcgaW50byBhY2NvdW50IHRoZQ0KKyAgICAvLy8gdHJhaWxpbmcgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRkxPQVQgd2lkdGhJbmNsdWRpbmdUcmFpbGluZ1doaXRlc3BhY2U7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBoZWlnaHQgb2YgdGhlIGZvcm1hdHRlZCB0ZXh0LiBUaGUgaGVpZ2h0IG9mIGFuIGVtcHR5IHN0cmluZw0KKyAgICAvLy8gaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2l6ZSBvZiB0aGUgZGVmYXVsdCBmb250J3MgbGluZSBoZWlnaHQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIGhlaWdodDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gSW5pdGlhbCB3aWR0aCBnaXZlbiB0byB0aGUgbGF5b3V0LiBEZXBlbmRpbmcgb24gd2hldGhlciB0aGUgdGV4dA0KKyAgICAvLy8gd2FzIHdyYXBwZWQgb3Igbm90LCBpdCBjYW4gYmUgZWl0aGVyIGxhcmdlciBvciBzbWFsbGVyIHRoYW4gdGhlDQorICAgIC8vLyB0ZXh0IGNvbnRlbnQgd2lkdGguDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIGxheW91dFdpZHRoOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBJbml0aWFsIGhlaWdodCBnaXZlbiB0byB0aGUgbGF5b3V0LiBEZXBlbmRpbmcgb24gdGhlIGxlbmd0aCBvZiB0aGUNCisgICAgLy8vIHRleHQsIGl0IG1heSBiZSBsYXJnZXIgb3Igc21hbGxlciB0aGFuIHRoZSB0ZXh0IGNvbnRlbnQgaGVpZ2h0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBsYXlvdXRIZWlnaHQ7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBtYXhpbXVtIHJlb3JkZXJpbmcgY291bnQgb2YgYW55IGxpbmUgb2YgdGV4dCwgdXNlZA0KKyAgICAvLy8gdG8gY2FsY3VsYXRlIHRoZSBtb3N0IG51bWJlciBvZiBoaXQtdGVzdGluZyBib3hlcyBuZWVkZWQuDQorICAgIC8vLyBJZiB0aGUgbGF5b3V0IGhhcyBubyBiaWRpcmVjdGlvbmFsIHRleHQgb3Igbm8gdGV4dCBhdCBhbGwsDQorICAgIC8vLyB0aGUgbWluaW11bSBsZXZlbCBpcyAxLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMzIgbWF4QmlkaVJlb3JkZXJpbmdEZXB0aDsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVG90YWwgbnVtYmVyIG9mIGxpbmVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBVSU5UMzIgbGluZUNvdW50Ow0KK307DQorDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBQcm9wZXJ0aWVzIGRlc2NyaWJpbmcgdGhlIGdlb21ldHJpYyBtZWFzdXJlbWVudCBvZiBhbg0KKy8vLyBhcHBsaWNhdGlvbi1kZWZpbmVkIGlubGluZSBvYmplY3QuDQorLy8vIDwvc3VtbWFyeT4NCitzdHJ1Y3QgRFdSSVRFX0lOTElORV9PQkpFQ1RfTUVUUklDUw0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gV2lkdGggb2YgdGhlIGlubGluZSBvYmplY3QuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIHdpZHRoOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBIZWlnaHQgb2YgdGhlIGlubGluZSBvYmplY3QgYXMgbWVhc3VyZWQgZnJvbSB0b3AgdG8gYm90dG9tLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBoZWlnaHQ7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIERpc3RhbmNlIGZyb20gdGhlIHRvcCBvZiB0aGUgb2JqZWN0IHRvIHRoZSBiYXNlbGluZSB3aGVyZSBpdCBpcyBsaW5lZCB1cCB3aXRoIHRoZSBhZGphY2VudCB0ZXh0Lg0KKyAgICAvLy8gSWYgdGhlIGJhc2VsaW5lIGlzIGF0IHRoZSBib3R0b20sIGJhc2VsaW5lIHNpbXBseSBlcXVhbHMgaGVpZ2h0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBiYXNlbGluZTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG9iamVjdCBpcyB0byBiZSBwbGFjZWQgdXByaWdodCBvciBhbG9uZ3NpZGUgdGhlIHRleHQgYmFzZWxpbmUNCisgICAgLy8vIGZvciB2ZXJ0aWNhbCB0ZXh0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBCT09MICBzdXBwb3J0c1NpZGV3YXlzOw0KK307DQorDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgRFdSSVRFX09WRVJIQU5HX01FVFJJQ1Mgc3RydWN0dXJlIGhvbGRzIGhvdyBtdWNoIGFueSB2aXNpYmxlIHBpeGVscw0KKy8vLyAoaW4gRElQcykgb3ZlcnNob290IGVhY2ggc2lkZSBvZiB0aGUgbGF5b3V0IG9yIGlubGluZSBvYmplY3RzLg0KKy8vLyA8L3N1bW1hcnk+DQorLy8vIDxyZW1hcmtzPg0KKy8vLyBQb3NpdGl2ZSBvdmVyaGFuZ3MgaW5kaWNhdGUgdGhhdCB0aGUgdmlzaWJsZSBhcmVhIGV4dGVuZHMgb3V0c2lkZSB0aGUgbGF5b3V0DQorLy8vIGJveCBvciBpbmxpbmUgb2JqZWN0LCB3aGlsZSBuZWdhdGl2ZSB2YWx1ZXMgbWVhbiB0aGVyZSBpcyB3aGl0ZXNwYWNlIGluc2lkZS4NCisvLy8gVGhlIHJldHVybmVkIHZhbHVlcyBhcmUgdW5hZmZlY3RlZCBieSByZW5kZXJpbmcgdHJhbnNmb3JtcyBvciBwaXhlbCBzbmFwcGluZy4NCisvLy8gQWRkaXRpb25hbGx5LCB0aGV5IG1heSBub3QgZXhhY3RseSBtYXRjaCBmaW5hbCB0YXJnZXQncyBwaXhlbCBib3VuZHMgYWZ0ZXINCisvLy8gYXBwbHlpbmcgZ3JpZCBmaXR0aW5nIGFuZCBoaW50aW5nLg0KKy8vLyA8L3JlbWFya3M+DQorc3RydWN0IERXUklURV9PVkVSSEFOR19NRVRSSUNTDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgZGlzdGFuY2UgZnJvbSB0aGUgbGVmdC1tb3N0IHZpc2libGUgRElQIHRvIGl0cyBsZWZ0IGFsaWdubWVudCBlZGdlLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBsZWZ0Ow0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgZGlzdGFuY2UgZnJvbSB0aGUgdG9wLW1vc3QgdmlzaWJsZSBESVAgdG8gaXRzIHRvcCBhbGlnbm1lbnQgZWRnZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRkxPQVQgdG9wOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgZGlzdGFuY2UgZnJvbSB0aGUgcmlnaHQtbW9zdCB2aXNpYmxlIERJUCB0byBpdHMgcmlnaHQgYWxpZ25tZW50IGVkZ2UuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIHJpZ2h0Ow0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgZGlzdGFuY2UgZnJvbSB0aGUgYm90dG9tLW1vc3QgdmlzaWJsZSBESVAgdG8gaXRzIGJvdHRvbSBhbGlnbm1lbnQgZWRnZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRkxPQVQgYm90dG9tOw0KK307DQorDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBHZW9tZXRyeSBlbmNsb3Npbmcgb2YgdGV4dCBwb3NpdGlvbnMuDQorLy8vIDwvc3VtbWFyeT4NCitzdHJ1Y3QgRFdSSVRFX0hJVF9URVNUX01FVFJJQ1MNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEZpcnN0IHRleHQgcG9zaXRpb24gd2l0aGluIHRoZSBnZW9tZXRyeS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgVUlOVDMyIHRleHRQb3NpdGlvbjsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gTnVtYmVyIG9mIHRleHQgcG9zaXRpb25zIHdpdGhpbiB0aGUgZ2VvbWV0cnkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQzMiBsZW5ndGg7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIExlZnQgcG9zaXRpb24gb2YgdGhlIHRvcC1sZWZ0IGNvb3JkaW5hdGUgb2YgdGhlIGdlb21ldHJ5Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCBsZWZ0Ow0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUb3AgcG9zaXRpb24gb2YgdGhlIHRvcC1sZWZ0IGNvb3JkaW5hdGUgb2YgdGhlIGdlb21ldHJ5Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBGTE9BVCB0b3A7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdlb21ldHJ5J3Mgd2lkdGguDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEZMT0FUIHdpZHRoOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZW9tZXRyeSdzIGhlaWdodC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRkxPQVQgaGVpZ2h0Ow0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBCaWRpIGxldmVsIG9mIHRleHQgcG9zaXRpb25zIGVuY2xvc2VkIHdpdGhpbiB0aGUgZ2VvbWV0cnkuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFVJTlQzMiBiaWRpTGV2ZWw7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdlb21ldHJ5IGVuY2xvc2VzIHRleHQ/DQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIEJPT0wgaXNUZXh0Ow0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBSYW5nZSBpcyB0cmltbWVkLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBCT09MIGlzVHJpbW1lZDsNCit9Ow0KKw0KKw0KK2ludGVyZmFjZSBJRFdyaXRlVGV4dFJlbmRlcmVyOw0KKw0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIElEV3JpdGVJbmxpbmVPYmplY3QgaW50ZXJmYWNlIHdyYXBzIGFuIGFwcGxpY2F0aW9uIGRlZmluZWQgaW5saW5lIGdyYXBoaWMsDQorLy8vIGFsbG93aW5nIERXcml0ZSB0byBxdWVyeSBtZXRyaWNzIGFzIGlmIGl0IHdhcyBhIGdseXBoIGlubGluZSB3aXRoIHRoZSB0ZXh0Lg0KKy8vLyA8L3N1bW1hcnk+DQoraW50ZXJmYWNlIERXUklURV9ERUNMQVJFX0lOVEVSRkFDRSgiODMzOUZERTMtMTA2Ri00N2FiLTgzNzMtMUM2Mjk1RUIxMEIzIikgSURXcml0ZUlubGluZU9iamVjdCA6IHB1YmxpYyBJVW5rbm93bg0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGhlIGFwcGxpY2F0aW9uIGltcGxlbWVudGVkIHJlbmRlcmluZyBjYWxsYmFjayAoSURXcml0ZVRleHRSZW5kZXJlcjo6RHJhd0lubGluZU9iamVjdCkNCisgICAgLy8vIGNhbiB1c2UgdGhpcyB0byBkcmF3IHRoZSBpbmxpbmUgb2JqZWN0IHdpdGhvdXQgbmVlZGluZyB0byBjYXN0IG9yIHF1ZXJ5IHRoZSBvYmplY3QNCisgICAgLy8vIHR5cGUuIFRoZSB0ZXh0IGxheW91dCBkb2VzIG5vdCBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImNsaWVudERyYXdpbmdDb250ZXh0Ij5UaGUgY29udGV4dCBwYXNzZWQgdG8gSURXcml0ZVRleHRMYXlvdXQ6OkRyYXcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJyZW5kZXJlciI+VGhlIHJlbmRlcmVyIHBhc3NlZCB0byBJRFdyaXRlVGV4dExheW91dDo6RHJhdyBhcyB0aGUgb2JqZWN0J3MgY29udGFpbmluZyBwYXJlbnQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJvcmlnaW5YIj5YLWNvb3JkaW5hdGUgYXQgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgaW5saW5lIG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im9yaWdpblkiPlktY29vcmRpbmF0ZSBhdCB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSBpbmxpbmUgb2JqZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaXNTaWRld2F5cyI+VGhlIG9iamVjdCBzaG91bGQgYmUgZHJhd24gb24gaXRzIHNpZGUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpc1JpZ2h0VG9MZWZ0Ij5UaGUgb2JqZWN0IGlzIGluIGFuIHJpZ2h0LXRvLWxlZnQgY29udGV4dCBhbmQgc2hvdWxkIGJlIGRyYXduIGZsaXBwZWQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbGllbnREcmF3aW5nRWZmZWN0Ij5UaGUgZHJhd2luZyBlZmZlY3Qgc2V0IGluIElEV3JpdGVUZXh0TGF5b3V0OjpTZXREcmF3aW5nRWZmZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKERyYXcpKA0KKyAgICAgICAgX19tYXliZW51bGwgdm9pZCogY2xpZW50RHJhd2luZ0NvbnRleHQsDQorICAgICAgICBJRFdyaXRlVGV4dFJlbmRlcmVyKiByZW5kZXJlciwNCisgICAgICAgIEZMT0FUIG9yaWdpblgsDQorICAgICAgICBGTE9BVCBvcmlnaW5ZLA0KKyAgICAgICAgQk9PTCBpc1NpZGV3YXlzLA0KKyAgICAgICAgQk9PTCBpc1JpZ2h0VG9MZWZ0LA0KKyAgICAgICAgX19tYXliZW51bGwgSVVua25vd24qIGNsaWVudERyYXdpbmdFZmZlY3QNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGV4dExheW91dCBjYWxscyB0aGlzIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGdldCB0aGUgbWVhc3VyZW1lbnQgb2YgdGhlIGlubGluZSBvYmplY3QuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibWV0cmljcyI+UmV0dXJuZWQgbWV0cmljczwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldE1ldHJpY3MpKA0KKyAgICAgICAgX19vdXQgRFdSSVRFX0lOTElORV9PQkpFQ1RfTUVUUklDUyogbWV0cmljcw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUZXh0TGF5b3V0IGNhbGxzIHRoaXMgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZ2V0IHRoZSB2aXNpYmxlIGV4dGVudHMgKGluIERJUHMpIG9mIHRoZSBpbmxpbmUgb2JqZWN0Lg0KKyAgICAvLy8gSW4gdGhlIGNhc2Ugb2YgYSBzaW1wbGUgYml0bWFwLCB3aXRoIG5vIHBhZGRpbmcgYW5kIG5vIG92ZXJoYW5nLCBhbGwgdGhlIG92ZXJoYW5ncyB3aWxsDQorICAgIC8vLyBzaW1wbHkgYmUgemVyb2VzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im92ZXJoYW5ncyI+T3ZlcnNob290IG9mIHZpc2libGUgZXh0ZW50cyAoaW4gRElQcykgb3V0c2lkZSB0aGUgb2JqZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gVGhlIG92ZXJoYW5ncyBzaG91bGQgYmUgcmV0dXJuZWQgcmVsYXRpdmUgdG8gdGhlIHJlcG9ydGVkIHNpemUgb2YgdGhlIG9iamVjdA0KKyAgICAvLy8gKERXUklURV9JTkxJTkVfT0JKRUNUX01FVFJJQ1M6OndpZHRoL2hlaWdodCksIGFuZCBzaG91bGQgbm90IGJlIGJhc2VsaW5lDQorICAgIC8vLyBhZGp1c3RlZC4gSWYgeW91IGhhdmUgYW4gaW1hZ2UgdGhhdCBpcyBhY3R1YWxseSAxMDB4MTAwIERJUHMsIGJ1dCB5b3Ugd2FudCBpdA0KKyAgICAvLy8gc2xpZ2h0bHkgaW5zZXQgKHBlcmhhcHMgaXQgaGFzIGEgZ2xvdykgYnkgMjAgRElQcyBvbiBlYWNoIHNpZGUsIHlvdSB3b3VsZA0KKyAgICAvLy8gcmV0dXJuIGEgd2lkdGgvaGVpZ2h0IG9mIDYweDYwIGFuZCBmb3VyIG92ZXJoYW5ncyBvZiAyMCBESVBzLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoR2V0T3ZlcmhhbmdNZXRyaWNzKSgNCisgICAgICAgIF9fb3V0IERXUklURV9PVkVSSEFOR19NRVRSSUNTKiBvdmVyaGFuZ3MNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gTGF5b3V0IHVzZXMgdGhpcyB0byBkZXRlcm1pbmUgdGhlIGxpbmUgYnJlYWtpbmcgYmVoYXZpb3Igb2YgdGhlIGlubGluZSBvYmplY3QNCisgICAgLy8vIGFtaWRzdCB0aGUgdGV4dC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJicmVha0NvbmRpdGlvbkJlZm9yZSI+TGluZS1icmVha2luZyBjb25kaXRpb24gYmV0d2VlbiB0aGUgb2JqZWN0IGFuZCB0aGUgY29udGVudCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgaXQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJicmVha0NvbmRpdGlvbkFmdGVyIiA+TGluZS1icmVha2luZyBjb25kaXRpb24gYmV0d2VlbiB0aGUgb2JqZWN0IGFuZCB0aGUgY29udGVudCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgaXQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0QnJlYWtDb25kaXRpb25zKSgNCisgICAgICAgIF9fb3V0IERXUklURV9CUkVBS19DT05ESVRJT04qIGJyZWFrQ29uZGl0aW9uQmVmb3JlLA0KKyAgICAgICAgX19vdXQgRFdSSVRFX0JSRUFLX0NPTkRJVElPTiogYnJlYWtDb25kaXRpb25BZnRlcg0KKyAgICAgICAgKSBQVVJFOw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgSURXcml0ZVBpeGVsU25hcHBpbmcgaW50ZXJmYWNlIGRlZmluZXMgdGhlIHBpeGVsIHNuYXBwaW5nIHByb3BlcnRpZXMgb2YgYSB0ZXh0IHJlbmRlcmVyLg0KKy8vLyA8L3N1bW1hcnk+DQoraW50ZXJmYWNlIERXUklURV9ERUNMQVJFX0lOVEVSRkFDRSgiZWFmM2EyZGEtZWNmNC00ZDI0LWI2NDQtYjM0ZjY4NDIwMjRiIikgSURXcml0ZVBpeGVsU25hcHBpbmcgOiBwdWJsaWMgSVVua25vd24NCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIERldGVybWluZXMgd2hldGhlciBwaXhlbCBzbmFwcGluZyBpcyBkaXNhYmxlZC4gVGhlIHJlY29tbWVuZGVkIGRlZmF1bHQgaXMgRkFMU0UsDQorICAgIC8vLyB1bmxlc3MgZG9pbmcgYW5pbWF0aW9uIHRoYXQgcmVxdWlyZXMgc3VicGl4ZWwgdmVydGljYWwgcGxhY2VtZW50Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImNsaWVudERyYXdpbmdDb250ZXh0Ij5UaGUgY29udGV4dCBwYXNzZWQgdG8gSURXcml0ZVRleHRMYXlvdXQ6OkRyYXcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpc0Rpc2FibGVkIj5SZWNlaXZlcyBUUlVFIGlmIHBpeGVsIHNuYXBwaW5nIGlzIGRpc2FibGVkIG9yIEZBTFNFIGlmIGl0IG5vdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChJc1BpeGVsU25hcHBpbmdEaXNhYmxlZCkoDQorICAgICAgICBfX21heWJlbnVsbCB2b2lkKiBjbGllbnREcmF3aW5nQ29udGV4dCwNCisgICAgICAgIF9fb3V0IEJPT0wqIGlzRGlzYWJsZWQNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgY3VycmVudCB0cmFuc2Zvcm0gdGhhdCBtYXBzIGFic3RyYWN0IGNvb3JkaW5hdGVzIHRvIERJUHMsDQorICAgIC8vLyB3aGljaCBtYXkgZGlzYWJsZSBwaXhlbCBzbmFwcGluZyB1cG9uIGFueSByb3RhdGlvbiBvciBzaGVhci4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbGllbnREcmF3aW5nQ29udGV4dCI+VGhlIGNvbnRleHQgcGFzc2VkIHRvIElEV3JpdGVUZXh0TGF5b3V0OjpEcmF3LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idHJhbnNmb3JtIj5SZWNlaXZlcyB0aGUgdHJhbnNmb3JtLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldEN1cnJlbnRUcmFuc2Zvcm0pKA0KKyAgICAgICAgX19tYXliZW51bGwgdm9pZCogY2xpZW50RHJhd2luZ0NvbnRleHQsDQorICAgICAgICBfX291dCBEV1JJVEVfTUFUUklYKiB0cmFuc2Zvcm0NCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHBoeXNpY2FsIHBpeGVscyBwZXIgRElQLiBBIERJUCAoZGV2aWNlLWluZGVwZW5kZW50IHBpeGVsKSBpcyAxLzk2IGluY2gsDQorICAgIC8vLyBzbyB0aGUgcGl4ZWxzUGVyRGlwIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgbG9naWNhbCBwaXhlbHMgcGVyIGluY2ggZGl2aWRlZCBieSA5NiAoeWllbGRpbmcNCisgICAgLy8vIGEgdmFsdWUgb2YgMSBmb3IgOTYgRFBJIGFuZCAxLjI1IGZvciAxMjApLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImNsaWVudERyYXdpbmdDb250ZXh0Ij5UaGUgY29udGV4dCBwYXNzZWQgdG8gSURXcml0ZVRleHRMYXlvdXQ6OkRyYXcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJwaXhlbHNQZXJEaXAiPlJlY2VpdmVzIHRoZSBudW1iZXIgb2YgcGh5c2ljYWwgcGl4ZWxzIHBlciBESVAuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0UGl4ZWxzUGVyRGlwKSgNCisgICAgICAgIF9fbWF5YmVudWxsIHZvaWQqIGNsaWVudERyYXdpbmdDb250ZXh0LA0KKyAgICAgICAgX19vdXQgRkxPQVQqIHBpeGVsc1BlckRpcA0KKyAgICAgICAgKSBQVVJFOw0KK307DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBUaGUgSURXcml0ZVRleHRMYXlvdXQgaW50ZXJmYWNlIHJlcHJlc2VudHMgYSBzZXQgb2YgYXBwbGljYXRpb24tZGVmaW5lZA0KKy8vLyBjYWxsYmFja3MgdGhhdCBwZXJmb3JtIHJlbmRlcmluZyBvZiB0ZXh0LCBpbmxpbmUgb2JqZWN0cywgYW5kIGRlY29yYXRpb25zDQorLy8vIHN1Y2ggYXMgdW5kZXJsaW5lcy4NCisvLy8gPC9zdW1tYXJ5Pg0KK2ludGVyZmFjZSBEV1JJVEVfREVDTEFSRV9JTlRFUkZBQ0UoImVmOGE4MTM1LTVjYzYtNDVmZS04ODI1LWM1YTA3MjRlYjgxOSIpIElEV3JpdGVUZXh0UmVuZGVyZXIgOiBwdWJsaWMgSURXcml0ZVBpeGVsU25hcHBpbmcNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIElEV3JpdGVUZXh0TGF5b3V0OjpEcmF3IGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gaW5zdHJ1Y3QgdGhlIGNsaWVudCB0bw0KKyAgICAvLy8gcmVuZGVyIGEgcnVuIG9mIGdseXBocy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbGllbnREcmF3aW5nQ29udGV4dCI+VGhlIGNvbnRleHQgcGFzc2VkIHRvIA0KKyAgICAvLy8gSURXcml0ZVRleHRMYXlvdXQ6OkRyYXcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJiYXNlbGluZU9yaWdpblgiPlgtY29vcmRpbmF0ZSBvZiB0aGUgYmFzZWxpbmUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJiYXNlbGluZU9yaWdpblkiPlktY29vcmRpbmF0ZSBvZiB0aGUgYmFzZWxpbmUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJtZWFzdXJpbmdNb2RlIj5TcGVjaWZpZXMgbWVhc3VyaW5nIG1ldGhvZCBmb3IgZ2x5cGhzIGluIHRoZSBydW4uDQorICAgIC8vLyBSZW5kZXJlciBpbXBsZW1lbnRhdGlvbnMgbWF5IGNob29zZSBkaWZmZXJlbnQgcmVuZGVyaW5nIG1vZGVzIGZvciBnaXZlbiBtZWFzdXJpbmcgbWV0aG9kcywNCisgICAgLy8vIGJ1dCBiZXN0IHJlc3VsdHMgYXJlIHNlZW4gd2hlbiB0aGUgcmVuZGVyaW5nIG1vZGUgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBtZWFzdXJpbmcgbW9kZToNCisgICAgLy8vIERXUklURV9SRU5ERVJJTkdfTU9ERV9DTEVBUlRZUEVfTkFUVVJBTCBmb3IgRFdSSVRFX01FQVNVUklOR19NT0RFX05BVFVSQUwNCisgICAgLy8vIERXUklURV9SRU5ERVJJTkdfTU9ERV9DTEVBUlRZUEVfR0RJX0NMQVNTSUMgZm9yIERXUklURV9NRUFTVVJJTkdfTU9ERV9HRElfQ0xBU1NJQw0KKyAgICAvLy8gRFdSSVRFX1JFTkRFUklOR19NT0RFX0NMRUFSVFlQRV9HRElfTkFUVVJBTCBmb3IgRFdSSVRFX01FQVNVUklOR19NT0RFX0dESV9OQVRVUkFMDQorICAgIC8vLyA8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoUnVuIj5UaGUgZ2x5cGggcnVuIHRvIGRyYXcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJnbHlwaFJ1bkRlc2NyaXB0aW9uIj5Qcm9wZXJ0aWVzIG9mIHRoZSBjaGFyYWN0ZXJzIA0KKyAgICAvLy8gYXNzb2NpYXRlZCB3aXRoIHRoaXMgcnVuLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY2xpZW50RHJhd2luZ0VmZmVjdCI+VGhlIGRyYXdpbmcgZWZmZWN0IHNldCBpbg0KKyAgICAvLy8gSURXcml0ZVRleHRMYXlvdXQ6OlNldERyYXdpbmdFZmZlY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoRHJhd0dseXBoUnVuKSgNCisgICAgICAgIF9fbWF5YmVudWxsIHZvaWQqIGNsaWVudERyYXdpbmdDb250ZXh0LA0KKyAgICAgICAgRkxPQVQgYmFzZWxpbmVPcmlnaW5YLA0KKyAgICAgICAgRkxPQVQgYmFzZWxpbmVPcmlnaW5ZLA0KKyAgICAgICAgRFdSSVRFX01FQVNVUklOR19NT0RFIG1lYXN1cmluZ01vZGUsDQorICAgICAgICBfX2luIERXUklURV9HTFlQSF9SVU4gY29uc3QqIGdseXBoUnVuLA0KKyAgICAgICAgX19pbiBEV1JJVEVfR0xZUEhfUlVOX0RFU0NSSVBUSU9OIGNvbnN0KiBnbHlwaFJ1bkRlc2NyaXB0aW9uLA0KKyAgICAgICAgX19tYXliZW51bGwgSVVua25vd24qIGNsaWVudERyYXdpbmdFZmZlY3QNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gSURXcml0ZVRleHRMYXlvdXQ6OkRyYXcgY2FsbHMgdGhpcyBmdW5jdGlvbiB0byBpbnN0cnVjdCB0aGUgY2xpZW50IHRvIGRyYXcNCisgICAgLy8vIGFuIHVuZGVybGluZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbGllbnREcmF3aW5nQ29udGV4dCI+VGhlIGNvbnRleHQgcGFzc2VkIHRvIA0KKyAgICAvLy8gSURXcml0ZVRleHRMYXlvdXQ6OkRyYXcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJiYXNlbGluZU9yaWdpblgiPlgtY29vcmRpbmF0ZSBvZiB0aGUgYmFzZWxpbmUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJiYXNlbGluZU9yaWdpblkiPlktY29vcmRpbmF0ZSBvZiB0aGUgYmFzZWxpbmUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ1bmRlcmxpbmUiPlVuZGVybGluZSBsb2dpY2FsIGluZm9ybWF0aW9uLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY2xpZW50RHJhd2luZ0VmZmVjdCI+VGhlIGRyYXdpbmcgZWZmZWN0IHNldCBpbg0KKyAgICAvLy8gSURXcml0ZVRleHRMYXlvdXQ6OlNldERyYXdpbmdFZmZlY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBBIHNpbmdsZSB1bmRlcmxpbmUgY2FuIGJlIGJyb2tlbiBpbnRvIG11bHRpcGxlIGNhbGxzLCBkZXBlbmRpbmcgb24NCisgICAgLy8vIGhvdyB0aGUgZm9ybWF0dGluZyBjaGFuZ2VzIGF0dHJpYnV0ZXMuIElmIGZvbnQgc2l6ZXMvc3R5bGVzIGNoYW5nZQ0KKyAgICAvLy8gd2l0aGluIGFuIHVuZGVybGluZSwgdGhlIHRoaWNrbmVzcyBhbmQgb2Zmc2V0IHdpbGwgYmUgYXZlcmFnZWQNCisgICAgLy8vIHdlaWdodGVkIGFjY29yZGluZyB0byBjaGFyYWN0ZXJzLg0KKyAgICAvLy8gVG8gZ2V0IHRoZSBjb3JyZWN0IHRvcCBjb29yZGluYXRlIG9mIHRoZSB1bmRlcmxpbmUgcmVjdCwgYWRkIHVuZGVybGluZTo6b2Zmc2V0DQorICAgIC8vLyB0byB0aGUgYmFzZWxpbmUncyBZLiBPdGhlcndpc2UgdGhlIHVuZGVybGluZSB3aWxsIGJlIGltbWVkaWF0ZWx5IHVuZGVyIHRoZSB0ZXh0Lg0KKyAgICAvLy8gVGhlIHggY29vcmRpbmF0ZSB3aWxsIGFsd2F5cyBiZSBwYXNzZWQgYXMgdGhlIGxlZnQgc2lkZSwgcmVnYXJkbGVzcw0KKyAgICAvLy8gb2YgdGV4dCBkaXJlY3Rpb25hbGl0eS4gVGhpcyBzaW1wbGlmaWVzIGRyYXdpbmcgYW5kIHJlZHVjZXMgdGhlDQorICAgIC8vLyBwcm9ibGVtIG9mIHJvdW5kLW9mZiB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGNhdXNlIGdhcHMgb3IgYSBkb3VibGUNCisgICAgLy8vIHN0YW1wZWQgYWxwaGEgYmxlbmQuIFRvIGF2b2lkIGFscGhhIG92ZXJsYXAsIHJvdW5kIHRoZSBlbmQgcG9pbnRzDQorICAgIC8vLyB0byB0aGUgbmVhcmVzdCBkZXZpY2UgcGl4ZWwuDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIFNURE1FVEhPRChEcmF3VW5kZXJsaW5lKSgNCisgICAgICAgIF9fbWF5YmVudWxsIHZvaWQqIGNsaWVudERyYXdpbmdDb250ZXh0LA0KKyAgICAgICAgRkxPQVQgYmFzZWxpbmVPcmlnaW5YLA0KKyAgICAgICAgRkxPQVQgYmFzZWxpbmVPcmlnaW5ZLA0KKyAgICAgICAgX19pbiBEV1JJVEVfVU5ERVJMSU5FIGNvbnN0KiB1bmRlcmxpbmUsDQorICAgICAgICBfX21heWJlbnVsbCBJVW5rbm93biogY2xpZW50RHJhd2luZ0VmZmVjdA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBJRFdyaXRlVGV4dExheW91dDo6RHJhdyBjYWxscyB0aGlzIGZ1bmN0aW9uIHRvIGluc3RydWN0IHRoZSBjbGllbnQgdG8gZHJhdw0KKyAgICAvLy8gYSBzdHJpa2V0aHJvdWdoLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImNsaWVudERyYXdpbmdDb250ZXh0Ij5UaGUgY29udGV4dCBwYXNzZWQgdG8gDQorICAgIC8vLyBJRFdyaXRlVGV4dExheW91dDo6RHJhdy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImJhc2VsaW5lT3JpZ2luWCI+WC1jb29yZGluYXRlIG9mIHRoZSBiYXNlbGluZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImJhc2VsaW5lT3JpZ2luWSI+WS1jb29yZGluYXRlIG9mIHRoZSBiYXNlbGluZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InN0cmlrZXRocm91Z2giPlN0cmlrZXRocm91Z2ggbG9naWNhbCBpbmZvcm1hdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImNsaWVudERyYXdpbmdFZmZlY3QiPlRoZSBkcmF3aW5nIGVmZmVjdCBzZXQgaW4NCisgICAgLy8vIElEV3JpdGVUZXh0TGF5b3V0OjpTZXREcmF3aW5nRWZmZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gQSBzaW5nbGUgc3RyaWtldGhyb3VnaCBjYW4gYmUgYnJva2VuIGludG8gbXVsdGlwbGUgY2FsbHMsIGRlcGVuZGluZyBvbg0KKyAgICAvLy8gaG93IHRoZSBmb3JtYXR0aW5nIGNoYW5nZXMgYXR0cmlidXRlcy4gU3RyaWtldGhyb3VnaCBpcyBub3QgYXZlcmFnZWQNCisgICAgLy8vIGFjcm9zcyBmb250IHNpemVzL3N0eWxlcyBjaGFuZ2VzLg0KKyAgICAvLy8gVG8gZ2V0IHRoZSBjb3JyZWN0IHRvcCBjb29yZGluYXRlIG9mIHRoZSBzdHJpa2V0aHJvdWdoIHJlY3QsDQorICAgIC8vLyBhZGQgc3RyaWtldGhyb3VnaDo6b2Zmc2V0IHRvIHRoZSBiYXNlbGluZSdzIFkuDQorICAgIC8vLyBMaWtlIHVuZGVybGluZXMsIHRoZSB4IGNvb3JkaW5hdGUgd2lsbCBhbHdheXMgYmUgcGFzc2VkIGFzIHRoZSBsZWZ0IHNpZGUsDQorICAgIC8vLyByZWdhcmRsZXNzIG9mIHRleHQgZGlyZWN0aW9uYWxpdHkuDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIFNURE1FVEhPRChEcmF3U3RyaWtldGhyb3VnaCkoDQorICAgICAgICBfX21heWJlbnVsbCB2b2lkKiBjbGllbnREcmF3aW5nQ29udGV4dCwNCisgICAgICAgIEZMT0FUIGJhc2VsaW5lT3JpZ2luWCwNCisgICAgICAgIEZMT0FUIGJhc2VsaW5lT3JpZ2luWSwNCisgICAgICAgIF9faW4gRFdSSVRFX1NUUklLRVRIUk9VR0ggY29uc3QqIHN0cmlrZXRocm91Z2gsDQorICAgICAgICBfX21heWJlbnVsbCBJVW5rbm93biogY2xpZW50RHJhd2luZ0VmZmVjdA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBJRFdyaXRlVGV4dExheW91dDo6RHJhdyBjYWxscyB0aGlzIGFwcGxpY2F0aW9uIGNhbGxiYWNrIHdoZW4gaXQgbmVlZHMgdG8NCisgICAgLy8vIGRyYXcgYW4gaW5saW5lIG9iamVjdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbGllbnREcmF3aW5nQ29udGV4dCI+VGhlIGNvbnRleHQgcGFzc2VkIHRvIElEV3JpdGVUZXh0TGF5b3V0OjpEcmF3LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ib3JpZ2luWCI+WC1jb29yZGluYXRlIGF0IHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIGlubGluZSBvYmplY3QuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJvcmlnaW5ZIj5ZLWNvb3JkaW5hdGUgYXQgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgaW5saW5lIG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImlubGluZU9iamVjdCI+VGhlIG9iamVjdCBzZXQgdXNpbmcgSURXcml0ZVRleHRMYXlvdXQ6OlNldElubGluZU9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImlzU2lkZXdheXMiPlRoZSBvYmplY3Qgc2hvdWxkIGJlIGRyYXduIG9uIGl0cyBzaWRlLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaXNSaWdodFRvTGVmdCI+VGhlIG9iamVjdCBpcyBpbiBhbiByaWdodC10by1sZWZ0IGNvbnRleHQgYW5kIHNob3VsZCBiZSBkcmF3biBmbGlwcGVkLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY2xpZW50RHJhd2luZ0VmZmVjdCI+VGhlIGRyYXdpbmcgZWZmZWN0IHNldCBpbg0KKyAgICAvLy8gSURXcml0ZVRleHRMYXlvdXQ6OlNldERyYXdpbmdFZmZlY3QuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBUaGUgcmlnaHQtdG8tbGVmdCBmbGFnIGlzIGEgaGludCBmb3IgdGhvc2UgY2FzZXMgd2hlcmUgaXQgd291bGQgbG9vaw0KKyAgICAvLy8gc3RyYW5nZSBmb3IgdGhlIGltYWdlIHRvIGJlIHNob3duIG5vcm1hbGx5IChsaWtlIGFuIGFycm93IHBvaW50aW5nIHRvDQorICAgIC8vLyByaWdodCB0byBpbmRpY2F0ZSBhIHN1Ym1lbnUpLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoRHJhd0lubGluZU9iamVjdCkoDQorICAgICAgICBfX21heWJlbnVsbCB2b2lkKiBjbGllbnREcmF3aW5nQ29udGV4dCwNCisgICAgICAgIEZMT0FUIG9yaWdpblgsDQorICAgICAgICBGTE9BVCBvcmlnaW5ZLA0KKyAgICAgICAgSURXcml0ZUlubGluZU9iamVjdCogaW5saW5lT2JqZWN0LA0KKyAgICAgICAgQk9PTCBpc1NpZGV3YXlzLA0KKyAgICAgICAgQk9PTCBpc1JpZ2h0VG9MZWZ0LA0KKyAgICAgICAgX19tYXliZW51bGwgSVVua25vd24qIGNsaWVudERyYXdpbmdFZmZlY3QNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIElEV3JpdGVUZXh0TGF5b3V0IGludGVyZmFjZSByZXByZXNlbnRzIGEgYmxvY2sgb2YgdGV4dCBhZnRlciBpdCBoYXMNCisvLy8gYmVlbiBmdWxseSBhbmFseXplZCBhbmQgZm9ybWF0dGVkLg0KKy8vLw0KKy8vLyBBbGwgY29vcmRpbmF0ZXMgYXJlIGluIGRldmljZSBpbmRlcGVuZGVudCBwaXhlbHMgKERJUHMpLg0KKy8vLyA8L3N1bW1hcnk+DQoraW50ZXJmYWNlIERXUklURV9ERUNMQVJFX0lOVEVSRkFDRSgiNTM3MzcwMzctNmQxNC00MTBiLTliZmUtMGIxODJiYjcwOTYxIikgSURXcml0ZVRleHRMYXlvdXQgOiBwdWJsaWMgSURXcml0ZVRleHRGb3JtYXQNCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBsYXlvdXQgbWF4aW11bSB3aWR0aA0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im1heFdpZHRoIj5MYXlvdXQgbWF4aW11bSB3aWR0aDwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldE1heFdpZHRoKSgNCisgICAgICAgIEZMT0FUIG1heFdpZHRoDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBsYXlvdXQgbWF4aW11bSBoZWlnaHQNCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJtYXhIZWlnaHQiPkxheW91dCBtYXhpbXVtIGhlaWdodDwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldE1heEhlaWdodCkoDQorICAgICAgICBGTE9BVCBtYXhIZWlnaHQNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU2V0IHRoZSBmb250IGNvbGxlY3Rpb24uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udENvbGxlY3Rpb24iPlRoZSBmb250IGNvbGxlY3Rpb24gdG8gc2V0PC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRleHQgcmFuZ2UgdG8gd2hpY2ggdGhpcyBjaGFuZ2UgYXBwbGllcy48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChTZXRGb250Q29sbGVjdGlvbikoDQorICAgICAgICBJRFdyaXRlRm9udENvbGxlY3Rpb24qIGZvbnRDb2xsZWN0aW9uLA0KKyAgICAgICAgRFdSSVRFX1RFWFRfUkFOR0UgdGV4dFJhbmdlDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBudWxsLXRlcm1pbmF0ZWQgZm9udCBmYW1pbHkgbmFtZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmFtaWx5TmFtZSI+Rm9udCBmYW1pbHkgbmFtZTwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFJhbmdlIj5UZXh0IHJhbmdlIHRvIHdoaWNoIHRoaXMgY2hhbmdlIGFwcGxpZXMuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoU2V0Rm9udEZhbWlseU5hbWUpKA0KKyAgICAgICAgX19pbl96IFdDSEFSIGNvbnN0KiBmb250RmFtaWx5TmFtZSwNCisgICAgICAgIERXUklURV9URVhUX1JBTkdFIHRleHRSYW5nZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXQgZm9udCB3ZWlnaHQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udFdlaWdodCI+Rm9udCB3ZWlnaHQ8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGV4dCByYW5nZSB0byB3aGljaCB0aGlzIGNoYW5nZSBhcHBsaWVzLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldEZvbnRXZWlnaHQpKA0KKyAgICAgICAgRFdSSVRFX0ZPTlRfV0VJR0hUIGZvbnRXZWlnaHQsDQorICAgICAgICBEV1JJVEVfVEVYVF9SQU5HRSB0ZXh0UmFuZ2UNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU2V0IGZvbnQgc3R5bGUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udFN0eWxlIj5Gb250IHN0eWxlPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRleHQgcmFuZ2UgdG8gd2hpY2ggdGhpcyBjaGFuZ2UgYXBwbGllcy48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChTZXRGb250U3R5bGUpKA0KKyAgICAgICAgRFdSSVRFX0ZPTlRfU1RZTEUgZm9udFN0eWxlLA0KKyAgICAgICAgRFdSSVRFX1RFWFRfUkFOR0UgdGV4dFJhbmdlDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBmb250IHN0cmV0Y2guDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udFN0cmV0Y2giPmZvbnQgc3RyZXRjaDwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFJhbmdlIj5UZXh0IHJhbmdlIHRvIHdoaWNoIHRoaXMgY2hhbmdlIGFwcGxpZXMuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoU2V0Rm9udFN0cmV0Y2gpKA0KKyAgICAgICAgRFdSSVRFX0ZPTlRfU1RSRVRDSCBmb250U3RyZXRjaCwNCisgICAgICAgIERXUklURV9URVhUX1JBTkdFIHRleHRSYW5nZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXQgZm9udCBlbSBoZWlnaHQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udFNpemUiPkZvbnQgZW0gaGVpZ2h0PC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRleHQgcmFuZ2UgdG8gd2hpY2ggdGhpcyBjaGFuZ2UgYXBwbGllcy48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChTZXRGb250U2l6ZSkoDQorICAgICAgICBGTE9BVCBmb250U2l6ZSwNCisgICAgICAgIERXUklURV9URVhUX1JBTkdFIHRleHRSYW5nZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXQgdW5kZXJsaW5lLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Imhhc1VuZGVybGluZSI+VGhlIEJvb2xlYW4gZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB1bmRlcmxpbmUgdGFrZXMgcGxhY2U8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGV4dCByYW5nZSB0byB3aGljaCB0aGlzIGNoYW5nZSBhcHBsaWVzLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldFVuZGVybGluZSkoDQorICAgICAgICBCT09MIGhhc1VuZGVybGluZSwNCisgICAgICAgIERXUklURV9URVhUX1JBTkdFIHRleHRSYW5nZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXQgc3RyaWtldGhyb3VnaC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJoYXNTdHJpa2V0aHJvdWdoIj5UaGUgQm9vbGVhbiBmbGFnIGluZGljYXRlcyB3aGV0aGVyIHN0cmlrZXRocm91Z2ggdGFrZXMgcGxhY2U8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGV4dCByYW5nZSB0byB3aGljaCB0aGlzIGNoYW5nZSBhcHBsaWVzLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldFN0cmlrZXRocm91Z2gpKA0KKyAgICAgICAgQk9PTCBoYXNTdHJpa2V0aHJvdWdoLA0KKyAgICAgICAgRFdSSVRFX1RFWFRfUkFOR0UgdGV4dFJhbmdlDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBhcHBsaWNhdGlvbi1kZWZpbmVkIGRyYXdpbmcgZWZmZWN0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImRyYXdpbmdFZmZlY3QiPlBvaW50ZXIgdG8gYW4gYXBwbGljYXRpb24tZGVmaW5lZCBkcmF3aW5nIGVmZmVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGV4dCByYW5nZSB0byB3aGljaCB0aGlzIGNoYW5nZSBhcHBsaWVzLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gVGhpcyBkcmF3aW5nIGVmZmVjdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCByYW5nZSBhbmQgd2lsbCBiZSBwYXNzZWQgYmFjaw0KKyAgICAvLy8gdG8gdGhlIGFwcGxpY2F0aW9uIHZpYSB0aGUgY2FsbGJhY2sgd2hlbiB0aGUgcmFuZ2UgaXMgZHJhd24gYXQgZHJhd2luZyB0aW1lLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoU2V0RHJhd2luZ0VmZmVjdCkoDQorICAgICAgICBJVW5rbm93biogZHJhd2luZ0VmZmVjdCwNCisgICAgICAgIERXUklURV9URVhUX1JBTkdFIHRleHRSYW5nZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXQgaW5saW5lIG9iamVjdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpbmxpbmVPYmplY3QiPlBvaW50ZXIgdG8gYW4gYXBwbGljYXRpb24taW1wbGVtZW50ZWQgaW5saW5lIG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGV4dCByYW5nZSB0byB3aGljaCB0aGlzIGNoYW5nZSBhcHBsaWVzLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gVGhpcyBpbmxpbmUgb2JqZWN0IGFwcGxpZXMgdG8gdGhlIHNwZWNpZmllZCByYW5nZSBhbmQgd2lsbCBiZSBwYXNzZWQgYmFjaw0KKyAgICAvLy8gdG8gdGhlIGFwcGxpY2F0aW9uIHZpYSB0aGUgRHJhd0lubGluZU9iamVjdCBjYWxsYmFjayB3aGVuIHRoZSByYW5nZSBpcyBkcmF3bi4NCisgICAgLy8vIEFueSB0ZXh0IGluIHRoYXQgcmFuZ2Ugd2lsbCBiZSBzdXBwcmVzc2VkLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoU2V0SW5saW5lT2JqZWN0KSgNCisgICAgICAgIElEV3JpdGVJbmxpbmVPYmplY3QqIGlubGluZU9iamVjdCwNCisgICAgICAgIERXUklURV9URVhUX1JBTkdFIHRleHRSYW5nZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXQgZm9udCB0eXBvZ3JhcGh5IGZlYXR1cmVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InR5cG9ncmFwaHkiPlBvaW50ZXIgdG8gZm9udCB0eXBvZ3JhcGh5IHNldHRpbmcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRleHQgcmFuZ2UgdG8gd2hpY2ggdGhpcyBjaGFuZ2UgYXBwbGllcy48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChTZXRUeXBvZ3JhcGh5KSgNCisgICAgICAgIElEV3JpdGVUeXBvZ3JhcGh5KiB0eXBvZ3JhcGh5LA0KKyAgICAgICAgRFdSSVRFX1RFWFRfUkFOR0UgdGV4dFJhbmdlDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFNldCBsb2NhbGUgbmFtZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2NhbGVOYW1lIj5Mb2NhbGUgbmFtZTwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFJhbmdlIj5UZXh0IHJhbmdlIHRvIHdoaWNoIHRoaXMgY2hhbmdlIGFwcGxpZXMuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoU2V0TG9jYWxlTmFtZSkoDQorICAgICAgICBfX2luX3ogV0NIQVIgY29uc3QqIGxvY2FsZU5hbWUsDQorICAgICAgICBEV1JJVEVfVEVYVF9SQU5HRSB0ZXh0UmFuZ2UNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0IGxheW91dCBtYXhpbXVtIHdpZHRoDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIFNURE1FVEhPRF8oRkxPQVQsIEdldE1heFdpZHRoKSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCBsYXlvdXQgbWF4aW11bSBoZWlnaHQNCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgU1RETUVUSE9EXyhGTE9BVCwgR2V0TWF4SGVpZ2h0KSgpIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgZm9udCBjb2xsZWN0aW9uIHdoZXJlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGF0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImN1cnJlbnRQb3NpdGlvbiI+VGhlIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRDb2xsZWN0aW9uIj5UaGUgY3VycmVudCBmb250IGNvbGxlY3Rpb248L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGV4dCByYW5nZSB0byB3aGljaCB0aGlzIGNoYW5nZSBhcHBsaWVzLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldEZvbnRDb2xsZWN0aW9uKSgNCisgICAgICAgIFVJTlQzMiBjdXJyZW50UG9zaXRpb24sDQorICAgICAgICBfX291dCBJRFdyaXRlRm9udENvbGxlY3Rpb24qKiBmb250Q29sbGVjdGlvbiwNCisgICAgICAgIF9fb3V0X29wdCBEV1JJVEVfVEVYVF9SQU5HRSogdGV4dFJhbmdlID0gTlVMTA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgZm9udCBmYW1pbHkgbmFtZSB3aGVyZSB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjdXJyZW50UG9zaXRpb24iPlRoZSBjdXJyZW50IHRleHQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJuYW1lTGVuZ3RoIj5TaXplIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgaW4gY2hhcmFjdGVyIGNvdW50IG5vdCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0ZWQgTlVMTCBjaGFyYWN0ZXIuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRoZSBwb3NpdGlvbiByYW5nZSBvZiB0aGUgY3VycmVudCBmb3JtYXQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0Rm9udEZhbWlseU5hbWVMZW5ndGgpKA0KKyAgICAgICAgVUlOVDMyIGN1cnJlbnRQb3NpdGlvbiwNCisgICAgICAgIF9fb3V0IFVJTlQzMiogbmFtZUxlbmd0aCwNCisgICAgICAgIF9fb3V0X29wdCBEV1JJVEVfVEVYVF9SQU5HRSogdGV4dFJhbmdlID0gTlVMTA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDb3B5IHRoZSBmb250IGZhbWlseSBuYW1lIHdoZXJlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGF0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImN1cnJlbnRQb3NpdGlvbiI+VGhlIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGYW1pbHlOYW1lIj5DaGFyYWN0ZXIgYXJyYXkgdGhhdCByZWNlaXZlcyB0aGUgY3VycmVudCBmb250IGZhbWlseSBuYW1lPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJuYW1lU2l6ZSI+U2l6ZSBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGluIGNoYXJhY3RlciBjb3VudCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0ZWQgTlVMTCBjaGFyYWN0ZXIuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRoZSBwb3NpdGlvbiByYW5nZSBvZiB0aGUgY3VycmVudCBmb3JtYXQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0Rm9udEZhbWlseU5hbWUpKA0KKyAgICAgICAgVUlOVDMyIGN1cnJlbnRQb3NpdGlvbiwNCisgICAgICAgIF9fb3V0X2Vjb3VudF96KG5hbWVTaXplKSBXQ0hBUiogZm9udEZhbWlseU5hbWUsDQorICAgICAgICBVSU5UMzIgbmFtZVNpemUsDQorICAgICAgICBfX291dF9vcHQgRFdSSVRFX1RFWFRfUkFOR0UqIHRleHRSYW5nZSA9IE5VTEwNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0IHRoZSBmb250IHdlaWdodCB3aGVyZSB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjdXJyZW50UG9zaXRpb24iPlRoZSBjdXJyZW50IHRleHQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250V2VpZ2h0Ij5UaGUgY3VycmVudCBmb250IHdlaWdodDwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFJhbmdlIj5UaGUgcG9zaXRpb24gcmFuZ2Ugb2YgdGhlIGN1cnJlbnQgZm9ybWF0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldEZvbnRXZWlnaHQpKA0KKyAgICAgICAgVUlOVDMyIGN1cnJlbnRQb3NpdGlvbiwNCisgICAgICAgIF9fb3V0IERXUklURV9GT05UX1dFSUdIVCogZm9udFdlaWdodCwNCisgICAgICAgIF9fb3V0X29wdCBEV1JJVEVfVEVYVF9SQU5HRSogdGV4dFJhbmdlID0gTlVMTA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgdGhlIGZvbnQgc3R5bGUgd2hlcmUgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYXQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY3VycmVudFBvc2l0aW9uIj5UaGUgY3VycmVudCB0ZXh0IHBvc2l0aW9uLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udFN0eWxlIj5UaGUgY3VycmVudCBmb250IHN0eWxlPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRoZSBwb3NpdGlvbiByYW5nZSBvZiB0aGUgY3VycmVudCBmb3JtYXQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0Rm9udFN0eWxlKSgNCisgICAgICAgIFVJTlQzMiBjdXJyZW50UG9zaXRpb24sDQorICAgICAgICBfX291dCBEV1JJVEVfRk9OVF9TVFlMRSogZm9udFN0eWxlLA0KKyAgICAgICAgX19vdXRfb3B0IERXUklURV9URVhUX1JBTkdFKiB0ZXh0UmFuZ2UgPSBOVUxMDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgZm9udCBzdHJldGNoIHdoZXJlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGF0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImN1cnJlbnRQb3NpdGlvbiI+VGhlIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRTdHJldGNoIj5UaGUgY3VycmVudCBmb250IHN0cmV0Y2g8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGhlIHBvc2l0aW9uIHJhbmdlIG9mIHRoZSBjdXJyZW50IGZvcm1hdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRGb250U3RyZXRjaCkoDQorICAgICAgICBVSU5UMzIgY3VycmVudFBvc2l0aW9uLA0KKyAgICAgICAgX19vdXQgRFdSSVRFX0ZPTlRfU1RSRVRDSCogZm9udFN0cmV0Y2gsDQorICAgICAgICBfX291dF9vcHQgRFdSSVRFX1RFWFRfUkFOR0UqIHRleHRSYW5nZSA9IE5VTEwNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0IHRoZSBmb250IGVtIGhlaWdodCB3aGVyZSB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjdXJyZW50UG9zaXRpb24iPlRoZSBjdXJyZW50IHRleHQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250U2l6ZSI+VGhlIGN1cnJlbnQgZm9udCBlbSBoZWlnaHQ8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGhlIHBvc2l0aW9uIHJhbmdlIG9mIHRoZSBjdXJyZW50IGZvcm1hdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRGb250U2l6ZSkoDQorICAgICAgICBVSU5UMzIgY3VycmVudFBvc2l0aW9uLA0KKyAgICAgICAgX19vdXQgRkxPQVQqIGZvbnRTaXplLA0KKyAgICAgICAgX19vdXRfb3B0IERXUklURV9URVhUX1JBTkdFKiB0ZXh0UmFuZ2UgPSBOVUxMDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgdW5kZXJsaW5lIHByZXNlbmNlIHdoZXJlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGF0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImN1cnJlbnRQb3NpdGlvbiI+VGhlIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Imhhc1VuZGVybGluZSI+VGhlIEJvb2xlYW4gZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB0ZXh0IGlzIHVuZGVybGluZWQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRoZSBwb3NpdGlvbiByYW5nZSBvZiB0aGUgY3VycmVudCBmb3JtYXQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0VW5kZXJsaW5lKSgNCisgICAgICAgIFVJTlQzMiBjdXJyZW50UG9zaXRpb24sDQorICAgICAgICBfX291dCBCT09MKiBoYXNVbmRlcmxpbmUsDQorICAgICAgICBfX291dF9vcHQgRFdSSVRFX1RFWFRfUkFOR0UqIHRleHRSYW5nZSA9IE5VTEwNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0IHRoZSBzdHJpa2V0aHJvdWdoIHByZXNlbmNlIHdoZXJlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGF0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImN1cnJlbnRQb3NpdGlvbiI+VGhlIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Imhhc1N0cmlrZXRocm91Z2giPlRoZSBCb29sZWFuIGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGV4dCBoYXMgc3RyaWtldGhyb3VnaC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGhlIHBvc2l0aW9uIHJhbmdlIG9mIHRoZSBjdXJyZW50IGZvcm1hdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRTdHJpa2V0aHJvdWdoKSgNCisgICAgICAgIFVJTlQzMiBjdXJyZW50UG9zaXRpb24sDQorICAgICAgICBfX291dCBCT09MKiBoYXNTdHJpa2V0aHJvdWdoLA0KKyAgICAgICAgX19vdXRfb3B0IERXUklURV9URVhUX1JBTkdFKiB0ZXh0UmFuZ2UgPSBOVUxMDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgYXBwbGljYXRpb24tZGVmaW5lZCBkcmF3aW5nIGVmZmVjdCB3aGVyZSB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjdXJyZW50UG9zaXRpb24iPlRoZSBjdXJyZW50IHRleHQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJkcmF3aW5nRWZmZWN0Ij5UaGUgY3VycmVudCBhcHBsaWNhdGlvbi1kZWZpbmVkIGRyYXdpbmcgZWZmZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFJhbmdlIj5UaGUgcG9zaXRpb24gcmFuZ2Ugb2YgdGhlIGN1cnJlbnQgZm9ybWF0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldERyYXdpbmdFZmZlY3QpKA0KKyAgICAgICAgVUlOVDMyIGN1cnJlbnRQb3NpdGlvbiwNCisgICAgICAgIF9fb3V0IElVbmtub3duKiogZHJhd2luZ0VmZmVjdCwNCisgICAgICAgIF9fb3V0X29wdCBEV1JJVEVfVEVYVF9SQU5HRSogdGV4dFJhbmdlID0gTlVMTA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgdGhlIGlubGluZSBvYmplY3QgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImN1cnJlbnRQb3NpdGlvbiI+VGhlIGdpdmVuIHRleHQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpbmxpbmVPYmplY3QiPlRoZSBpbmxpbmUgb2JqZWN0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFJhbmdlIj5UaGUgcG9zaXRpb24gcmFuZ2Ugb2YgdGhlIGN1cnJlbnQgZm9ybWF0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKEdldElubGluZU9iamVjdCkoDQorICAgICAgICBVSU5UMzIgY3VycmVudFBvc2l0aW9uLA0KKyAgICAgICAgX19vdXQgSURXcml0ZUlubGluZU9iamVjdCoqIGlubGluZU9iamVjdCwNCisgICAgICAgIF9fb3V0X29wdCBEV1JJVEVfVEVYVF9SQU5HRSogdGV4dFJhbmdlID0gTlVMTA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXQgdGhlIHR5cG9ncmFwaHkgc2V0dGluZyB3aGVyZSB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjdXJyZW50UG9zaXRpb24iPlRoZSBjdXJyZW50IHRleHQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0eXBvZ3JhcGh5Ij5UaGUgY3VycmVudCB0eXBvZ3JhcGh5IHNldHRpbmcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRoZSBwb3NpdGlvbiByYW5nZSBvZiB0aGUgY3VycmVudCBmb3JtYXQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0VHlwb2dyYXBoeSkoDQorICAgICAgICBVSU5UMzIgY3VycmVudFBvc2l0aW9uLA0KKyAgICAgICAgX19vdXQgSURXcml0ZVR5cG9ncmFwaHkqKiB0eXBvZ3JhcGh5LA0KKyAgICAgICAgX19vdXRfb3B0IERXUklURV9URVhUX1JBTkdFKiB0ZXh0UmFuZ2UgPSBOVUxMDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBsb2NhbGUgbmFtZSB3aGVyZSB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjdXJyZW50UG9zaXRpb24iPlRoZSBjdXJyZW50IHRleHQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJuYW1lTGVuZ3RoIj5TaXplIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgaW4gY2hhcmFjdGVyIGNvdW50IG5vdCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0ZWQgTlVMTCBjaGFyYWN0ZXIuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UmFuZ2UiPlRoZSBwb3NpdGlvbiByYW5nZSBvZiB0aGUgY3VycmVudCBmb3JtYXQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0TG9jYWxlTmFtZUxlbmd0aCkoDQorICAgICAgICBVSU5UMzIgY3VycmVudFBvc2l0aW9uLA0KKyAgICAgICAgX19vdXQgVUlOVDMyKiBuYW1lTGVuZ3RoLA0KKyAgICAgICAgX19vdXRfb3B0IERXUklURV9URVhUX1JBTkdFKiB0ZXh0UmFuZ2UgPSBOVUxMDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldCB0aGUgbG9jYWxlIG5hbWUgd2hlcmUgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYXQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY3VycmVudFBvc2l0aW9uIj5UaGUgY3VycmVudCB0ZXh0IHBvc2l0aW9uLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibG9jYWxlTmFtZSI+Q2hhcmFjdGVyIGFycmF5IHRoYXQgcmVjZWl2ZXMgdGhlIGN1cnJlbnQgbG9jYWxlIG5hbWU8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im5hbWVTaXplIj5TaXplIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgaW4gY2hhcmFjdGVyIGNvdW50IGluY2x1ZGluZyB0aGUgdGVybWluYXRlZCBOVUxMIGNoYXJhY3Rlci48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRSYW5nZSI+VGhlIHBvc2l0aW9uIHJhbmdlIG9mIHRoZSBjdXJyZW50IGZvcm1hdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRMb2NhbGVOYW1lKSgNCisgICAgICAgIFVJTlQzMiBjdXJyZW50UG9zaXRpb24sDQorICAgICAgICBfX291dF9lY291bnRfeihuYW1lU2l6ZSkgV0NIQVIqIGxvY2FsZU5hbWUsDQorICAgICAgICBVSU5UMzIgbmFtZVNpemUsDQorICAgICAgICBfX291dF9vcHQgRFdSSVRFX1RFWFRfUkFOR0UqIHRleHRSYW5nZSA9IE5VTEwNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gSW5pdGlhdGUgZHJhd2luZyBvZiB0aGUgdGV4dC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbGllbnREcmF3aW5nQ29udGV4dCI+QW4gYXBwbGljYXRpb24gZGVmaW5lZCB2YWx1ZQ0KKyAgICAvLy8gaW5jbHVkZWQgaW4gcmVuZGVyaW5nIGNhbGxiYWNrcy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InJlbmRlcmVyIj5UaGUgc2V0IG9mIGFwcGxpY2F0aW9uLWRlZmluZWQgY2FsbGJhY2tzIHRoYXQgZG8NCisgICAgLy8vIHRoZSBhY3R1YWwgcmVuZGVyaW5nLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ib3JpZ2luWCI+WC1jb29yZGluYXRlIG9mIHRoZSBsYXlvdXQncyBsZWZ0IHNpZGUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJvcmlnaW5ZIj5ZLWNvb3JkaW5hdGUgb2YgdGhlIGxheW91dCdzIHRvcCBzaWRlLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKERyYXcpKA0KKyAgICAgICAgX19tYXliZW51bGwgdm9pZCogY2xpZW50RHJhd2luZ0NvbnRleHQsDQorICAgICAgICBJRFdyaXRlVGV4dFJlbmRlcmVyKiByZW5kZXJlciwNCisgICAgICAgIEZMT0FUIG9yaWdpblgsDQorICAgICAgICBGTE9BVCBvcmlnaW5ZDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldExpbmVNZXRyaWNzIHJldHVybnMgcHJvcGVydGllcyBvZiBlYWNoIGxpbmUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibGluZU1ldHJpY3MiPlRoZSBhcnJheSB0byBmaWxsIHdpdGggbGluZSBpbmZvcm1hdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im1heExpbmVDb3VudCI+VGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgbGluZU1ldHJpY3MgYXJyYXkuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJhY3R1YWxMaW5lQ291bnQiPlRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgbGluZU1ldHJpY3MNCisgICAgLy8vIGFycmF5IHRoYXQgaXMgbmVlZGVkLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gSWYgbWF4TGluZUNvdW50IGlzIG5vdCBsYXJnZSBlbm91Z2ggRV9OT1RfU1VGRklDSUVOVF9CVUZGRVIsIA0KKyAgICAvLy8gd2hpY2ggaXMgZXF1aXZhbGVudCB0byBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUiksDQorICAgIC8vLyBpcyByZXR1cm5lZCBhbmQgKmFjdHVhbExpbmVDb3VudCBpcyBzZXQgdG8gdGhlIG51bWJlciBvZiBsaW5lcw0KKyAgICAvLy8gbmVlZGVkLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoR2V0TGluZU1ldHJpY3MpKA0KKyAgICAgICAgX19vdXRfZWNvdW50X29wdChtYXhMaW5lQ291bnQpIERXUklURV9MSU5FX01FVFJJQ1MqIGxpbmVNZXRyaWNzLA0KKyAgICAgICAgVUlOVDMyIG1heExpbmVDb3VudCwNCisgICAgICAgIF9fb3V0IFVJTlQzMiogYWN0dWFsTGluZUNvdW50DQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldE1ldHJpY3MgcmV0cmlldmVzIG92ZXJhbGwgbWV0cmljcyBmb3IgdGhlIGZvcm1hdHRlZCBzdHJpbmcuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dE1ldHJpY3MiPlRoZSByZXR1cm5lZCBtZXRyaWNzLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gRHJhd2luZyBlZmZlY3RzIGxpa2UgdW5kZXJsaW5lIGFuZCBzdHJpa2V0aHJvdWdoIGRvIG5vdCBjb250cmlidXRlDQorICAgIC8vLyB0byB0aGUgdGV4dCBzaXplLCB3aGljaCBpcyBlc3NlbnRpYWxseSB0aGUgc3VtIG9mIGFkdmFuY2Ugd2lkdGhzIGFuZA0KKyAgICAvLy8gbGluZSBoZWlnaHRzLiBBZGRpdGlvbmFsbHksIHZpc2libGUgc3dhc2hlcyBhbmQgb3RoZXIgZ3JhcGhpYw0KKyAgICAvLy8gYWRvcm5tZW50cyBtYXkgZXh0ZW5kIG91dHNpZGUgdGhlIHJldHVybmVkIHdpZHRoIGFuZCBoZWlnaHQuDQorICAgIC8vLyA8L3JlbWFya3M+DQorICAgIFNURE1FVEhPRChHZXRNZXRyaWNzKSgNCisgICAgICAgIF9fb3V0IERXUklURV9URVhUX01FVFJJQ1MqIHRleHRNZXRyaWNzDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldE92ZXJoYW5nTWV0cmljcyByZXR1cm5zIHRoZSBvdmVyaGFuZ3MgKGluIERJUHMpIG9mIHRoZSBsYXlvdXQgYW5kIGFsbA0KKyAgICAvLy8gb2JqZWN0cyBjb250YWluZWQgaW4gaXQsIGluY2x1ZGluZyB0ZXh0IGdseXBocyBhbmQgaW5saW5lIG9iamVjdHMuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ib3ZlcmhhbmdzIj5PdmVyc2hvb3RzIG9mIHZpc2libGUgZXh0ZW50cyAoaW4gRElQcykgb3V0c2lkZSB0aGUgbGF5b3V0LjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gQW55IHVuZGVybGluZSBhbmQgc3RyaWtldGhyb3VnaCBkbyBub3QgY29udHJpYnV0ZSB0byB0aGUgYmxhY2sgYm94DQorICAgIC8vLyBkZXRlcm1pbmF0aW9uLCBzaW5jZSB0aGVzZSBhcmUgYWN0dWFsbHkgZHJhd24gYnkgdGhlIHJlbmRlcmVyLCB3aGljaA0KKyAgICAvLy8gaXMgYWxsb3dlZCB0byBkcmF3IHRoZW0gaW4gYW55IHZhcmlldHkgb2Ygc3R5bGVzLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoR2V0T3ZlcmhhbmdNZXRyaWNzKSgNCisgICAgICAgIF9fb3V0IERXUklURV9PVkVSSEFOR19NRVRSSUNTKiBvdmVyaGFuZ3MNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUmV0cmlldmUgbG9naWNhbCBwcm9wZXJ0aWVzIGFuZCBtZWFzdXJlbWVudCBvZiBlYWNoIGNsdXN0ZXIuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY2x1c3Rlck1ldHJpY3MiPlRoZSBhcnJheSB0byBmaWxsIHdpdGggY2x1c3RlciBpbmZvcm1hdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im1heENsdXN0ZXJDb3VudCI+VGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgY2x1c3Rlck1ldHJpY3MgYXJyYXkuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJhY3R1YWxDbHVzdGVyQ291bnQiPlRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgY2x1c3Rlck1ldHJpY3MgYXJyYXkgdGhhdCBpcyBuZWVkZWQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBJZiBtYXhDbHVzdGVyQ291bnQgaXMgbm90IGxhcmdlIGVub3VnaCBFX05PVF9TVUZGSUNJRU5UX0JVRkZFUiwgDQorICAgIC8vLyB3aGljaCBpcyBlcXVpdmFsZW50IHRvIEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKSwgDQorICAgIC8vLyBpcyByZXR1cm5lZCBhbmQgKmFjdHVhbENsdXN0ZXJDb3VudCBpcyBzZXQgdG8gdGhlIG51bWJlciBvZiBjbHVzdGVycw0KKyAgICAvLy8gbmVlZGVkLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoR2V0Q2x1c3Rlck1ldHJpY3MpKA0KKyAgICAgICAgX19vdXRfZWNvdW50X29wdChtYXhDbHVzdGVyQ291bnQpIERXUklURV9DTFVTVEVSX01FVFJJQ1MqIGNsdXN0ZXJNZXRyaWNzLA0KKyAgICAgICAgVUlOVDMyIG1heENsdXN0ZXJDb3VudCwNCisgICAgICAgIF9fb3V0IFVJTlQzMiogYWN0dWFsQ2x1c3RlckNvdW50DQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIERldGVybWluZXMgdGhlIG1pbmltdW0gcG9zc2libGUgd2lkdGggdGhlIGxheW91dCBjYW4gYmUgc2V0IHRvIHdpdGhvdXQNCisgICAgLy8vIGVtZXJnZW5jeSBicmVha2luZyBiZXR3ZWVuIHRoZSBjaGFyYWN0ZXJzIG9mIHdob2xlIHdvcmRzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im1pbldpZHRoIj5NaW5pbXVtIHdpZHRoLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKERldGVybWluZU1pbldpZHRoKSgNCisgICAgICAgIF9fb3V0IEZMT0FUKiBtaW5XaWR0aA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHaXZlbiBhIGNvb3JkaW5hdGUgKGluIERJUHMpIHJlbGF0aXZlIHRvIHRoZSB0b3AtbGVmdCBvZiB0aGUgbGF5b3V0IGJveCwNCisgICAgLy8vIHRoaXMgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBoaXQtdGVzdCBtZXRyaWNzIG9mIHRoZSB0ZXh0IHN0cmluZyB3aGVyZQ0KKyAgICAvLy8gdGhlIGhpdC10ZXN0IGhhcyBvY2N1cnJlZC4gVGhpcyBpcyB1c2VmdWwgZm9yIG1hcHBpbmcgbW91c2UgY2xpY2tzIHRvIGNhcmV0DQorICAgIC8vLyBwb3NpdGlvbnMuIFdoZW4gdGhlIGdpdmVuIGNvb3JkaW5hdGUgaXMgb3V0c2lkZSB0aGUgdGV4dCBzdHJpbmcsIHRoZSBmdW5jdGlvbg0KKyAgICAvLy8gc2V0cyB0aGUgb3V0cHV0IHZhbHVlICppc0luc2lkZSB0byBmYWxzZSBidXQgcmV0dXJucyB0aGUgbmVhcmVzdCBjaGFyYWN0ZXINCisgICAgLy8vIHBvc2l0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InBvaW50WCI+WCBjb29yZGluYXRlIHRvIGhpdC10ZXN0LCByZWxhdGl2ZSB0byB0aGUgdG9wLWxlZnQgbG9jYXRpb24gb2YgdGhlIGxheW91dCBib3guPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJwb2ludFkiPlkgY29vcmRpbmF0ZSB0byBoaXQtdGVzdCwgcmVsYXRpdmUgdG8gdGhlIHRvcC1sZWZ0IGxvY2F0aW9uIG9mIHRoZSBsYXlvdXQgYm94LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaXNUcmFpbGluZ0hpdCI+T3V0cHV0IGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBoaXQtdGVzdCBsb2NhdGlvbiBpcyBhdCB0aGUgbGVhZGluZyBvciB0aGUgdHJhaWxpbmcNCisgICAgLy8vICAgICBzaWRlIG9mIHRoZSBjaGFyYWN0ZXIuIFdoZW4gdGhlIG91dHB1dCAqaXNJbnNpZGUgdmFsdWUgaXMgc2V0IHRvIGZhbHNlLCB0aGlzIHZhbHVlIGlzIHNldCBhY2NvcmRpbmcgdG8gdGhlIG91dHB1dA0KKyAgICAvLy8gICAgICpwb3NpdGlvbiB2YWx1ZSB0byByZXByZXNlbnQgdGhlIGVkZ2UgY2xvc2VzdCB0byB0aGUgaGl0LXRlc3QgbG9jYXRpb24uIDwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaXNJbnNpZGUiPk91dHB1dCBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgaGl0LXRlc3QgbG9jYXRpb24gaXMgaW5zaWRlIHRoZSB0ZXh0IHN0cmluZy4NCisgICAgLy8vICAgICBXaGVuIGZhbHNlLCB0aGUgcG9zaXRpb24gbmVhcmVzdCB0aGUgdGV4dCdzIGVkZ2UgaXMgcmV0dXJuZWQuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJoaXRUZXN0TWV0cmljcyI+T3V0cHV0IGdlb21ldHJ5IGZ1bGx5IGVuY2xvc2luZyB0aGUgaGl0LXRlc3QgbG9jYXRpb24uIFdoZW4gdGhlIG91dHB1dCAqaXNJbnNpZGUgdmFsdWUNCisgICAgLy8vICAgICBpcyBzZXQgdG8gZmFsc2UsIHRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgdGhlIGdlb21ldHJ5IGVuY2xvc2luZyB0aGUgZWRnZSBjbG9zZXN0IHRvIHRoZSBoaXQtdGVzdCBsb2NhdGlvbi48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChIaXRUZXN0UG9pbnQpKA0KKyAgICAgICAgRkxPQVQgcG9pbnRYLA0KKyAgICAgICAgRkxPQVQgcG9pbnRZLA0KKyAgICAgICAgX19vdXQgQk9PTCogaXNUcmFpbGluZ0hpdCwNCisgICAgICAgIF9fb3V0IEJPT0wqIGlzSW5zaWRlLA0KKyAgICAgICAgX19vdXQgRFdSSVRFX0hJVF9URVNUX01FVFJJQ1MqIGhpdFRlc3RNZXRyaWNzDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdpdmVuIGEgdGV4dCBwb3NpdGlvbiBhbmQgd2hldGhlciB0aGUgY2FyZXQgaXMgb24gdGhlIGxlYWRpbmcgb3IgdHJhaWxpbmcNCisgICAgLy8vIGVkZ2Ugb2YgdGhhdCBwb3NpdGlvbiwgdGhpcyByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIGNvb3JkaW5hdGUgKGluIERJUHMpDQorICAgIC8vLyByZWxhdGl2ZSB0byB0aGUgdG9wLWxlZnQgb2YgdGhlIGxheW91dCBib3guIFRoaXMgaXMgbW9zdCB1c2VmdWwgZm9yIGRyYXdpbmcNCisgICAgLy8vIHRoZSBjYXJldCdzIGN1cnJlbnQgcG9zaXRpb24sIGJ1dCBpdCBjb3VsZCBhbHNvIGJlIHVzZWQgdG8gYW5jaG9yIGFuIElNRSB0byB0aGUNCisgICAgLy8vIHR5cGVkIHRleHQgb3IgYXR0YWNoIGEgZmxvYXRpbmcgbWVudSBuZWFyIHRoZSBwb2ludCBvZiBpbnRlcmVzdC4gSXQgbWF5IGFsc28gYmUNCisgICAgLy8vIHVzZWQgdG8gcHJvZ3JhbW1hdGljYWxseSBvYnRhaW4gdGhlIGdlb21ldHJ5IG9mIGEgcGFydGljdWxhciB0ZXh0IHBvc2l0aW9uDQorICAgIC8vLyBmb3IgVUkgYXV0b21hdGlvbi4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0UG9zaXRpb24iPlRleHQgcG9zaXRpb24gdG8gZ2V0IHRoZSBjb29yZGluYXRlIG9mLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaXNUcmFpbGluZ0hpdCI+RmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGxvY2F0aW9uIGlzIG9mIHRoZSBsZWFkaW5nIG9yIHRoZSB0cmFpbGluZyBzaWRlIG9mIHRoZSBzcGVjaWZpZWQgdGV4dCBwb3NpdGlvbi4gPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJwb2ludFgiPk91dHB1dCBjYXJldCBYLCByZWxhdGl2ZSB0byB0aGUgdG9wLWxlZnQgb2YgdGhlIGxheW91dCBib3guPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJwb2ludFkiPk91dHB1dCBjYXJldCBZLCByZWxhdGl2ZSB0byB0aGUgdG9wLWxlZnQgb2YgdGhlIGxheW91dCBib3guPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJoaXRUZXN0TWV0cmljcyI+T3V0cHV0IGdlb21ldHJ5IGZ1bGx5IGVuY2xvc2luZyB0aGUgc3BlY2lmaWVkIHRleHQgcG9zaXRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBXaGVuIGRyYXdpbmcgYSBjYXJldCBhdCB0aGUgcmV0dXJuZWQgWCxZLCBpdCBzaG91bGQgc2hvdWxkIGJlIGNlbnRlcmVkIG9uIFgNCisgICAgLy8vIGFuZCBkcmF3biBmcm9tIHRoZSBZIGNvb3JkaW5hdGUgZG93bi4gVGhlIGhlaWdodCB3aWxsIGJlIHRoZSBzaXplIG9mIHRoZQ0KKyAgICAvLy8gaGl0LXRlc3RlZCB0ZXh0ICh3aGljaCBjYW4gdmFyeSBpbiBzaXplIHdpdGhpbiBhIGxpbmUpLg0KKyAgICAvLy8gUmVhZGluZyBkaXJlY3Rpb24gYWxzbyBhZmZlY3RzIHdoaWNoIHNpZGUgb2YgdGhlIGNoYXJhY3RlciB0aGUgY2FyZXQgaXMgZHJhd24uDQorICAgIC8vLyBIb3dldmVyLCB0aGUgcmV0dXJuZWQgWCBjb29yZGluYXRlIHdpbGwgYmUgY29ycmVjdCBmb3IgZWl0aGVyIGNhc2UuDQorICAgIC8vLyBZb3UgY2FuIGdldCBhIHRleHQgbGVuZ3RoIGJhY2sgdGhhdCBpcyBsYXJnZXIgdGhhbiBhIHNpbmdsZSBjaGFyYWN0ZXIuDQorICAgIC8vLyBUaGlzIGhhcHBlbnMgZm9yIGNvbXBsZXggc2NyaXB0cyB3aGVuIG11bHRpcGxlIGNoYXJhY3RlcnMgZm9ybSBhIHNpbmdsZSBjbHVzdGVyLA0KKyAgICAvLy8gd2hlbiBkaWFjcml0aWNzIGpvaW4gdGhlaXIgYmFzZSBjaGFyYWN0ZXIsIG9yIHdoZW4geW91IHRlc3QgYSBzdXJyb2dhdGUgcGFpci4NCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgU1RETUVUSE9EKEhpdFRlc3RUZXh0UG9zaXRpb24pKA0KKyAgICAgICAgVUlOVDMyIHRleHRQb3NpdGlvbiwNCisgICAgICAgIEJPT0wgaXNUcmFpbGluZ0hpdCwNCisgICAgICAgIF9fb3V0IEZMT0FUKiBwb2ludFgsDQorICAgICAgICBfX291dCBGTE9BVCogcG9pbnRZLA0KKyAgICAgICAgX19vdXQgRFdSSVRFX0hJVF9URVNUX01FVFJJQ1MqIGhpdFRlc3RNZXRyaWNzDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFRoZSBhcHBsaWNhdGlvbiBjYWxscyB0aGlzIGZ1bmN0aW9uIHRvIGdldCBhIHNldCBvZiBoaXQtdGVzdCBtZXRyaWNzDQorICAgIC8vLyBjb3JyZXNwb25kaW5nIHRvIGEgcmFuZ2Ugb2YgdGV4dCBwb3NpdGlvbnMuIFRoZSBtYWluIHVzYWdlIGZvciB0aGlzDQorICAgIC8vLyBpcyB0byBkcmF3IGhpZ2hsaWdodGVkIHNlbGVjdGlvbiBvZiB0aGUgdGV4dCBzdHJpbmcuDQorICAgIC8vLw0KKyAgICAvLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgRV9OT1RfU1VGRklDSUVOVF9CVUZGRVIsIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gDQorICAgIC8vLyBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUiksIHdoZW4gdGhlIGJ1ZmZlciBzaXplIG9mDQorICAgIC8vLyBoaXRUZXN0TWV0cmljcyBpcyB0b28gc21hbGwgdG8gaG9sZCBhbGwgdGhlIHJlZ2lvbnMgY2FsY3VsYXRlZCBieSB0aGUNCisgICAgLy8vIGZ1bmN0aW9uLiBJbiBzdWNoIHNpdHVhdGlvbiwgdGhlIGZ1bmN0aW9uIHNldHMgdGhlIG91dHB1dCB2YWx1ZQ0KKyAgICAvLy8gKmFjdHVhbEhpdFRlc3RNZXRyaWNzQ291bnQgdG8gdGhlIG51bWJlciBvZiBnZW9tZXRyaWVzIGNhbGN1bGF0ZWQuDQorICAgIC8vLyBUaGUgYXBwbGljYXRpb24gaXMgcmVzcG9uc2libGUgdG8gYWxsb2NhdGUgYSBuZXcgYnVmZmVyIG9mIGdyZWF0ZXINCisgICAgLy8vIHNpemUgYW5kIGNhbGwgdGhlIGZ1bmN0aW9uIGFnYWluLg0KKyAgICAvLy8NCisgICAgLy8vIEEgZ29vZCB2YWx1ZSB0byB1c2UgYXMgYW4gaW5pdGlhbCB2YWx1ZSBmb3IgbWF4SGl0VGVzdE1ldHJpY3NDb3VudCBtYXkNCisgICAgLy8vIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGVxdWF0aW9uOg0KKyAgICAvLy8gICAgIG1heEhpdFRlc3RNZXRyaWNzQ291bnQgPSBsaW5lQ291bnQgKiBtYXhCaWRpUmVvcmRlcmluZ0RlcHRoDQorICAgIC8vLw0KKyAgICAvLy8gd2hlcmUgbGluZUNvdW50IGlzIG9idGFpbmVkIGZyb20gdGhlIHZhbHVlIG9mIHRoZSBvdXRwdXQgYXJndW1lbnQNCisgICAgLy8vICphY3R1YWxMaW5lQ291bnQgZnJvbSB0aGUgZnVuY3Rpb24gSURXcml0ZVRleHRMYXlvdXQ6OkdldExpbmVNZXRyaWNzLA0KKyAgICAvLy8gYW5kIHRoZSBtYXhCaWRpUmVvcmRlcmluZ0RlcHRoIHZhbHVlIGZyb20gdGhlIERXUklURV9URVhUX01FVFJJQ1MNCisgICAgLy8vIHN0cnVjdHVyZSBvZiB0aGUgb3V0cHV0IGFyZ3VtZW50ICp0ZXh0TWV0cmljcyBmcm9tIHRoZSBmdW5jdGlvbg0KKyAgICAvLy8gSURXcml0ZUZhY3Rvcnk6OkNyZWF0ZVRleHRMYXlvdXQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dFBvc2l0aW9uIj5GaXJzdCB0ZXh0IHBvc2l0aW9uIG9mIHRoZSBzcGVjaWZpZWQgcmFuZ2UuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0TGVuZ3RoIj5OdW1iZXIgb2YgcG9zaXRpb25zIG9mIHRoZSBzcGVjaWZpZWQgcmFuZ2UuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJvcmlnaW5YIj5PZmZzZXQgb2YgdGhlIFggb3JpZ2luIChsZWZ0IG9mIHRoZSBsYXlvdXQgYm94KSB3aGljaCBpcyBhZGRlZCB0byBlYWNoIG9mIHRoZSBoaXQtdGVzdCBtZXRyaWNzIHJldHVybmVkLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ib3JpZ2luWSI+T2Zmc2V0IG9mIHRoZSBZIG9yaWdpbiAodG9wIG9mIHRoZSBsYXlvdXQgYm94KSB3aGljaCBpcyBhZGRlZCB0byBlYWNoIG9mIHRoZSBoaXQtdGVzdCBtZXRyaWNzIHJldHVybmVkLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaGl0VGVzdE1ldHJpY3MiPlBvaW50ZXIgdG8gYSBidWZmZXIgb2YgdGhlIG91dHB1dCBnZW9tZXRyeSBmdWxseSBlbmNsb3NpbmcgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiByYW5nZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im1heEhpdFRlc3RNZXRyaWNzQ291bnQiPk1heGltdW0gbnVtYmVyIG9mIGRpc3RpbmN0IG1ldHJpY3MgaXQgY291bGQgaG9sZCBpbiBpdHMgYnVmZmVyIG1lbW9yeS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImFjdHVhbEhpdFRlc3RNZXRyaWNzQ291bnQiPkFjdHVhbCBudW1iZXIgb2YgbWV0cmljcyByZXR1cm5lZCBvciBuZWVkZWQuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBUaGVyZSBhcmUgbm8gZ2FwcyBpbiB0aGUgcmV0dXJuZWQgbWV0cmljcy4gV2hpbGUgdGhlcmUgY291bGQgYmUgdmlzdWFsIGdhcHMsDQorICAgIC8vLyBkZXBlbmRpbmcgb24gYmlkaSBvcmRlcmluZywgZWFjaCByYW5nZSBpcyBjb250aWd1b3VzIGFuZCByZXBvcnRzIGFsbCB0aGUgdGV4dCwNCisgICAgLy8vIGluY2x1ZGluZyBhbnkgaGlkZGVuIGNoYXJhY3RlcnMgYW5kIHRyaW1tZWQgdGV4dC4NCisgICAgLy8vIFRoZSBoZWlnaHQgb2YgZWFjaCByZXR1cm5lZCByYW5nZSB3aWxsIGJlIHRoZSBzYW1lIHdpdGhpbiBlYWNoIGxpbmUsIHJlZ2FyZGxlc3MNCisgICAgLy8vIG9mIGhvdyB0aGUgZm9udCBzaXplcyB2YXJ5Lg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoSGl0VGVzdFRleHRSYW5nZSkoDQorICAgICAgICBVSU5UMzIgdGV4dFBvc2l0aW9uLA0KKyAgICAgICAgVUlOVDMyIHRleHRMZW5ndGgsDQorICAgICAgICBGTE9BVCBvcmlnaW5YLA0KKyAgICAgICAgRkxPQVQgb3JpZ2luWSwNCisgICAgICAgIF9fb3V0X2Vjb3VudF9vcHQobWF4SGl0VGVzdE1ldHJpY3NDb3VudCkgRFdSSVRFX0hJVF9URVNUX01FVFJJQ1MqIGhpdFRlc3RNZXRyaWNzLA0KKyAgICAgICAgVUlOVDMyIG1heEhpdFRlc3RNZXRyaWNzQ291bnQsDQorICAgICAgICBfX291dCBVSU5UMzIqIGFjdHVhbEhpdFRlc3RNZXRyaWNzQ291bnQNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gRW5jYXBzdWxhdGVzIGEgMzItYml0IGRldmljZSBpbmRlcGVuZGVudCBiaXRtYXAgYW5kIGRldmljZSBjb250ZXh0LCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgcmVuZGVyaW5nIGdseXBocy4NCisvLy8gPC9zdW1tYXJ5Pg0KK2ludGVyZmFjZSBEV1JJVEVfREVDTEFSRV9JTlRFUkZBQ0UoIjVlNWEzMmEzLThkZmYtNDc3My05ZmY2LTA2OTZlYWI3NzI2NyIpIElEV3JpdGVCaXRtYXBSZW5kZXJUYXJnZXQgOiBwdWJsaWMgSVVua25vd24NCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIERyYXdzIGEgcnVuIG9mIGdseXBocyB0byB0aGUgYml0bWFwLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImJhc2VsaW5lT3JpZ2luWCI+SG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgYmFzZWxpbmUgb3JpZ2luLCBpbiBESVBzLCByZWxhdGl2ZSB0byB0aGUgdXBwZXItbGVmdCBjb3JuZXIgb2YgdGhlIERJQi48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImJhc2VsaW5lT3JpZ2luWSI+VmVydGljYWwgcG9zaXRpb24gb2YgdGhlIGJhc2VsaW5lIG9yaWdpbiwgaW4gRElQcywgcmVsYXRpdmUgdG8gdGhlIHVwcGVyLWxlZnQgY29ybmVyIG9mIHRoZSBESUIuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJtZWFzdXJpbmdNb2RlIj5TcGVjaWZpZXMgbWVhc3VyaW5nIG1ldGhvZCBmb3IgZ2x5cGhzIGluIHRoZSBydW4uDQorICAgIC8vLyBSZW5kZXJlciBpbXBsZW1lbnRhdGlvbnMgbWF5IGNob29zZSBkaWZmZXJlbnQgcmVuZGVyaW5nIG1vZGVzIGZvciBkaWZmZXJlbnQgbWVhc3VyaW5nIG1ldGhvZHMsIGZvciBleGFtcGxlDQorICAgIC8vLyBEV1JJVEVfUkVOREVSSU5HX01PREVfQ0xFQVJUWVBFX05BVFVSQUwgZm9yIERXUklURV9NRUFTVVJJTkdfTU9ERV9OQVRVUkFMLA0KKyAgICAvLy8gRFdSSVRFX1JFTkRFUklOR19NT0RFX0NMRUFSVFlQRV9HRElfQ0xBU1NJQyBmb3IgRFdSSVRFX01FQVNVUklOR19NT0RFX0dESV9DTEFTU0lDLCBhbmQNCisgICAgLy8vIERXUklURV9SRU5ERVJJTkdfTU9ERV9DTEVBUlRZUEVfR0RJX05BVFVSQUwgZm9yIERXUklURV9NRUFTVVJJTkdfTU9ERV9HRElfTkFUVVJBTC4NCisgICAgLy8vIDwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZ2x5cGhSdW4iPlN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBnbHlwaCBydW4uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJyZW5kZXJpbmdQYXJhbXMiPk9iamVjdCB0aGF0IGNvbnRyb2xzIHJlbmRlcmluZyBiZWhhdmlvci48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHRDb2xvciI+U3BlY2lmaWVzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIG9mIHRoZSB0ZXh0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iYmxhY2tCb3hSZWN0Ij5PcHRpb25hbCByZWN0YW5nbGUgdGhhdCByZWNlaXZlcyB0aGUgYm91bmRpbmcgYm94IChpbiBwaXhlbHMgbm90IERJUHMpIG9mIGFsbCB0aGUgcGl4ZWxzIGFmZmVjdGVkIGJ5IA0KKyAgICAvLy8gZHJhd2luZyB0aGUgZ2x5cGggcnVuLiBUaGUgYmxhY2sgYm94IHJlY3RhbmdsZSBtYXkgZXh0ZW5kIGJleW9uZCB0aGUgZGltZW5zaW9ucyBvZiB0aGUgYml0bWFwLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKERyYXdHbHlwaFJ1bikoDQorICAgICAgICBGTE9BVCBiYXNlbGluZU9yaWdpblgsDQorICAgICAgICBGTE9BVCBiYXNlbGluZU9yaWdpblksDQorICAgICAgICBEV1JJVEVfTUVBU1VSSU5HX01PREUgbWVhc3VyaW5nTW9kZSwNCisgICAgICAgIF9faW4gRFdSSVRFX0dMWVBIX1JVTiBjb25zdCogZ2x5cGhSdW4sDQorICAgICAgICBJRFdyaXRlUmVuZGVyaW5nUGFyYW1zKiByZW5kZXJpbmdQYXJhbXMsDQorICAgICAgICBDT0xPUlJFRiB0ZXh0Q29sb3IsDQorICAgICAgICBfX291dF9vcHQgUkVDVCogYmxhY2tCb3hSZWN0ID0gTlVMTA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXRzIGEgaGFuZGxlIHRvIHRoZSBtZW1vcnkgZGV2aWNlIGNvbnRleHQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFJldHVybnMgdGhlIGRldmljZSBjb250ZXh0IGhhbmRsZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgLy8vIDxyZW1hcmtzPg0KKyAgICAvLy8gQW4gYXBwbGljYXRpb24gY2FuIHVzZSB0aGUgZGV2aWNlIGNvbnRleHQgdG8gZHJhdyB1c2luZyBHREkgZnVuY3Rpb25zLiBBbiBhcHBsaWNhdGlvbiBjYW4gb2J0YWluIHRoZSBiaXRtYXAgaGFuZGxlDQorICAgIC8vLyAoSEJJVE1BUCkgYnkgY2FsbGluZyBHZXRDdXJyZW50T2JqZWN0LiBBbiBhcHBsaWNhdGlvbiB0aGF0IHdhbnRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1bmRlcmx5aW5nIGJpdG1hcCwgaW5jbHVkaW5nDQorICAgIC8vLyBhIHBvaW50ZXIgdG8gdGhlIHBpeGVsIGRhdGEsIGNhbiBjYWxsIEdldE9iamVjdCB0byBmaWxsIGluIGEgRElCU0VDVElPTiBzdHJ1Y3R1cmUuIFRoZSBiaXRtYXAgaXMgYWx3YXlzIGEgMzItYml0IA0KKyAgICAvLy8gdG9wLWRvd24gRElCLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0RfKEhEQywgR2V0TWVtb3J5REMpKCkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGJpdG1hcCBwaXhlbHMgcGVyIERJUC4gQSBESVAgKGRldmljZS1pbmRlcGVuZGVudCBwaXhlbCkgaXMgMS85NiBpbmNoIHNvIHRoaXMgdmFsdWUgaXMgdGhlIG51bWJlcg0KKyAgICAvLy8gaWYgcGl4ZWxzIHBlciBpbmNoIGRpdmlkZWQgYnkgOTYuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBiaXRtYXAgcGl4ZWxzIHBlciBESVAuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRF8oRkxPQVQsIEdldFBpeGVsc1BlckRpcCkoKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTZXRzIHRoZSBudW1iZXIgb2YgYml0bWFwIHBpeGVscyBwZXIgRElQLiBBIERJUCAoZGV2aWNlLWluZGVwZW5kZW50IHBpeGVsKSBpcyAxLzk2IGluY2ggc28gdGhpcyB2YWx1ZSBpcyB0aGUgbnVtYmVyDQorICAgIC8vLyBpZiBwaXhlbHMgcGVyIGluY2ggZGl2aWRlZCBieSA5Ni4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJwaXhlbHNQZXJEaXAiPlNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHBpeGVscyBwZXIgRElQLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldFBpeGVsc1BlckRpcCkoDQorICAgICAgICBGTE9BVCBwaXhlbHNQZXJEaXANCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gR2V0cyB0aGUgdHJhbnNmb3JtIHRoYXQgbWFwcyBhYnN0cmFjdCBjb29yZGluYXRlIHRvIERJUHMuIEJ5IGRlZmF1bHQgdGhpcyBpcyB0aGUgaWRlbnRpdHkgDQorICAgIC8vLyB0cmFuc2Zvcm0uIE5vdGUgdGhhdCB0aGlzIGlzIHVucmVsYXRlZCB0byB0aGUgd29ybGQgdHJhbnNmb3JtIG9mIHRoZSB1bmRlcmx5aW5nIGRldmljZQ0KKyAgICAvLy8gY29udGV4dC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0cmFuc2Zvcm0iPlJlY2VpdmVzIHRoZSB0cmFuc2Zvcm0uPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0Q3VycmVudFRyYW5zZm9ybSkoDQorICAgICAgICBfX291dCBEV1JJVEVfTUFUUklYKiB0cmFuc2Zvcm0NCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU2V0cyB0aGUgdHJhbnNmb3JtIHRoYXQgbWFwcyBhYnN0cmFjdCBjb29yZGluYXRlIHRvIERJUHMuIFRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSB3b3JsZA0KKyAgICAvLy8gdHJhbnNmb3JtIG9mIHRoZSB1bmRlcmx5aW5nIGRldmljZSBjb250ZXh0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRyYW5zZm9ybSI+U3BlY2lmaWVzIHRoZSBuZXcgdHJhbnNmb3JtLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgTlVMTCwgaW4gd2hpY2gNCisgICAgLy8vIGNhc2UgdGhlIGlkZW50aXR5IHRyYW5zZm9ybSBpcyBpbXBsaWVkLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKFNldEN1cnJlbnRUcmFuc2Zvcm0pKA0KKyAgICAgICAgX19pbl9vcHQgRFdSSVRFX01BVFJJWCBjb25zdCogdHJhbnNmb3JtDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGJpdG1hcC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJzaXplIj5SZWNlaXZlcyB0aGUgc2l6ZSBvZiB0aGUgYml0bWFwIGluIHBpeGVscy48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRTaXplKSgNCisgICAgICAgIF9fb3V0IFNJWkUqIHNpemUNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gUmVzaXplcyB0aGUgYml0bWFwLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9IndpZHRoIj5OZXcgYml0bWFwIHdpZHRoLCBpbiBwaXhlbHMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJoZWlnaHQiPk5ldyBiaXRtYXAgaGVpZ2h0LCBpbiBwaXhlbHMuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoUmVzaXplKSgNCisgICAgICAgIFVJTlQzMiB3aWR0aCwNCisgICAgICAgIFVJTlQzMiBoZWlnaHQNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIEdESSBpbnRlcm9wIGludGVyZmFjZSBwcm92aWRlcyBpbnRlcm9wZXJhYmlsaXR5IHdpdGggR0RJLg0KKy8vLyA8L3N1bW1hcnk+DQoraW50ZXJmYWNlIERXUklURV9ERUNMQVJFX0lOVEVSRkFDRSgiMWVkZDk0OTEtOTg1My00Mjk5LTg5OGYtNjQzMjk4M2I2ZjNhIikgSURXcml0ZUdkaUludGVyb3AgOiBwdWJsaWMgSVVua25vd24NCit7DQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZXMgYSBmb250IG9iamVjdCB0aGF0IG1hdGNoZXMgdGhlIHByb3BlcnRpZXMgc3BlY2lmaWVkIGJ5IHRoZSBMT0dGT05UIHN0cnVjdHVyZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2dGb250Ij5TdHJ1Y3R1cmUgY29udGFpbmluZyBhIEdESS1jb21wYXRpYmxlIGZvbnQgZGVzY3JpcHRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250Ij5SZWNlaXZlcyBhIG5ld2x5IGNyZWF0ZWQgZm9udCBvYmplY3QgaWYgc3VjY2Vzc2Z1bCwgb3IgTlVMTCBpbiBjYXNlIG9mIGVycm9yLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKENyZWF0ZUZvbnRGcm9tTE9HRk9OVCkoDQorICAgICAgICBfX2luIExPR0ZPTlRXIGNvbnN0KiBsb2dGb250LA0KKyAgICAgICAgX19vdXQgSURXcml0ZUZvbnQqKiBmb250DQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEluaXRpYWxpemVzIGEgTE9HRk9OVCBzdHJ1Y3R1cmUgYmFzZWQgb24gdGhlIEdESS1jb21wYXRpYmxlIHByb3BlcnRpZXMgb2YgdGhlIHNwZWNpZmllZCBmb250Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnQiPlNwZWNpZmllcyBhIGZvbnQgaW4gdGhlIHN5c3RlbSBmb250IGNvbGxlY3Rpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2dGb250Ij5TdHJ1Y3R1cmUgdGhhdCByZWNlaXZlcyBhIEdESS1jb21wYXRpYmxlIGZvbnQgZGVzY3JpcHRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJpc1N5c3RlbUZvbnQiPkNvbnRhaW5zIFRSVUUgaWYgdGhlIHNwZWNpZmllZCBmb250IG9iamVjdCBpcyBwYXJ0IG9mIHRoZSBzeXN0ZW0gZm9udCBjb2xsZWN0aW9uDQorICAgIC8vLyBvciBGQUxTRSBvdGhlcndpc2UuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQ29udmVydEZvbnRUb0xPR0ZPTlQpKA0KKyAgICAgICAgSURXcml0ZUZvbnQqIGZvbnQsDQorICAgICAgICBfX291dCBMT0dGT05UVyogbG9nRm9udCwNCisgICAgICAgIF9fb3V0IEJPT0wqIGlzU3lzdGVtRm9udA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBJbml0aWFsaXplcyBhIExPR0ZPTlQgc3RydWN0dXJlIGJhc2VkIG9uIHRoZSBHREktY29tcGF0aWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSBzcGVjaWZpZWQgZm9udC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250Ij5TcGVjaWZpZXMgYSBmb250IGZhY2UuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2dGb250Ij5TdHJ1Y3R1cmUgdGhhdCByZWNlaXZlcyBhIEdESS1jb21wYXRpYmxlIGZvbnQgZGVzY3JpcHRpb24uPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQ29udmVydEZvbnRGYWNlVG9MT0dGT05UKSgNCisgICAgICAgIElEV3JpdGVGb250RmFjZSogZm9udCwNCisgICAgICAgIF9fb3V0IExPR0ZPTlRXKiBsb2dGb250DQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZXMgYSBmb250IGZhY2Ugb2JqZWN0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBIRk9OVC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJoZGMiPkhhbmRsZSB0byBhIGRldmljZSBjb250ZXh0IGludG8gd2hpY2ggYSBmb250IGhhcyBiZWVuIHNlbGVjdGVkLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGNsaWVudA0KKyAgICAvLy8gaGFzIGFscmVhZHkgcGVyZm9ybWVkIGZvbnQgbWFwcGluZyBhbmQgdGhhdCB0aGUgZm9udCBzZWxlY3RlZCBpbnRvIHRoZSBEQyBpcyB0aGUgYWN0dWFsIGZvbnQgdGhhdCB3b3VsZCBiZSB1c2VkIA0KKyAgICAvLy8gZm9yIHJlbmRlcmluZyBnbHlwaHMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmFjZSI+Q29udGFpbnMgdGhlIG5ld2x5IGNyZWF0ZWQgZm9udCBmYWNlIG9iamVjdCwgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQ3JlYXRlRm9udEZhY2VGcm9tSGRjKSgNCisgICAgICAgIEhEQyBoZGMsDQorICAgICAgICBfX291dCBJRFdyaXRlRm9udEZhY2UqKiBmb250RmFjZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDcmVhdGVzIGFuIG9iamVjdCB0aGF0IGVuY2Fwc3VsYXRlcyBhIGJpdG1hcCBhbmQgbWVtb3J5IERDIHdoaWNoIGNhbiBiZSB1c2VkIGZvciByZW5kZXJpbmcgZ2x5cGhzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImhkYyI+T3B0aW9uYWwgZGV2aWNlIGNvbnRleHQgdXNlZCB0byBjcmVhdGUgYSBjb21wYXRpYmxlIG1lbW9yeSBEQy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9IndpZHRoIj5XaWR0aCBvZiB0aGUgYml0bWFwLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaGVpZ2h0Ij5IZWlnaHQgb2YgdGhlIGJpdG1hcC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InJlbmRlclRhcmdldCI+UmVjZWl2ZXMgYSBwb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJlbmRlciB0YXJnZXQuPC9wYXJhbT4NCisgICAgU1RETUVUSE9EKENyZWF0ZUJpdG1hcFJlbmRlclRhcmdldCkoDQorICAgICAgICBfX2luX29wdCBIREMgaGRjLA0KKyAgICAgICAgVUlOVDMyIHdpZHRoLA0KKyAgICAgICAgVUlOVDMyIGhlaWdodCwNCisgICAgICAgIF9fb3V0IElEV3JpdGVCaXRtYXBSZW5kZXJUYXJnZXQqKiByZW5kZXJUYXJnZXQNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIERXUklURV9URVhUVVJFX1RZUEUgZW51bWVyYXRpb24gaWRlbnRpZmllcyBhIHR5cGUgb2YgYWxwaGEgdGV4dHVyZS4gQW4gYWxwaGEgdGV4dHVyZSBpcyBhIGJpdG1hcCBvZiBhbHBoYSB2YWx1ZXMsIGVhY2gNCisvLy8gcmVwcmVzZW50aW5nIHRoZSBkYXJrbmVzcyAoaS5lLiwgb3BhY2l0eSkgb2YgYSBwaXhlbCBvciBzdWJwaXhlbC4NCisvLy8gPC9zdW1tYXJ5Pg0KK2VudW0gRFdSSVRFX1RFWFRVUkVfVFlQRQ0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gU3BlY2lmaWVzIGFuIGFscGhhIHRleHR1cmUgZm9yIGFsaWFzZWQgdGV4dCByZW5kZXJpbmcgKGkuZS4sIGJpLWxldmVsLCB3aGVyZSBlYWNoIHBpeGVsIGlzIGVpdGhlciBmdWxseSBvcGFxdWUgb3IgZnVsbHkgdHJhbnNwYXJlbnQpLA0KKyAgICAvLy8gd2l0aCBvbmUgYnl0ZSBwZXIgcGl4ZWwuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9URVhUVVJFX0FMSUFTRURfMXgxLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBTcGVjaWZpZXMgYW4gYWxwaGEgdGV4dHVyZSBmb3IgQ2xlYXJUeXBlIHRleHQgcmVuZGVyaW5nLCB3aXRoIHRocmVlIGJ5dGVzIHBlciBwaXhlbCBpbiB0aGUgaG9yaXpvbnRhbCBkaW1lbnNpb24gYW5kIA0KKyAgICAvLy8gb25lIGJ5dGUgcGVyIHBpeGVsIGluIHRoZSB2ZXJ0aWNhbCBkaW1lbnNpb24uDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIERXUklURV9URVhUVVJFX0NMRUFSVFlQRV8zeDENCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gTWF4aW11bSBhbHBoYSB2YWx1ZSBpbiBhIHRleHR1cmUgcmV0dXJuZWQgYnkgSURXcml0ZUdseXBoUnVuQW5hbHlzaXM6OkNyZWF0ZUFscGhhVGV4dHVyZS4NCisvLy8gPC9zdW1tYXJ5Pg0KKyNkZWZpbmUgRFdSSVRFX0FMUEhBX01BWCAyNTUNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIEludGVyZmFjZSB0aGF0IGVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiB1c2VkIHRvIHJlbmRlciBhIGdseXBoIHJ1bi4NCisvLy8gPC9zdW1tYXJ5Pg0KK2ludGVyZmFjZSBEV1JJVEVfREVDTEFSRV9JTlRFUkZBQ0UoIjdkOTdkYmY3LWUwODUtNDJkNC04MWUzLTZhODgzYmRlZDExOCIpIElEV3JpdGVHbHlwaFJ1bkFuYWx5c2lzIDogcHVibGljIElVbmtub3duDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXRzIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHBoeXNpY2FsIHBpeGVscyBhZmZlY3RlZCBieSB0aGUgZ2x5cGggcnVuLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHR1cmVUeXBlIj5TcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGV4dHVyZSByZXF1ZXN0ZWQuIElmIGEgYmktbGV2ZWwgdGV4dHVyZSBpcyByZXF1ZXN0ZWQsIHRoZQ0KKyAgICAvLy8gYm91bmRpbmcgcmVjdGFuZ2xlIGluY2x1ZGVzIG9ubHkgYmktbGV2ZWwgZ2x5cGhzLiBPdGhlcndpc2UsIHRoZSBib3VuZGluZyByZWN0YW5nbGUgaW5jbHVkZXMgb25seSBhbnRpLWFsaWFzZWQNCisgICAgLy8vIGdseXBocy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHR1cmVCb3VuZHMiPlJlY2VpdmVzIHRoZSBib3VuZGluZyByZWN0YW5nbGUsIG9yIGFuIGVtcHR5IHJlY3RhbmdsZSBpZiB0aGVyZSBhcmUgbm8gZ2x5cGhzDQorICAgIC8vLyBpZiB0aGUgc3BlY2lmaWVkIHR5cGUuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0QWxwaGFUZXh0dXJlQm91bmRzKSgNCisgICAgICAgIERXUklURV9URVhUVVJFX1RZUEUgdGV4dHVyZVR5cGUsDQorICAgICAgICBfX291dCBSRUNUKiB0ZXh0dXJlQm91bmRzDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZXMgYW4gYWxwaGEgdGV4dHVyZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dHVyZVR5cGUiPlNwZWNpZmllcyB0aGUgdHlwZSBvZiB0ZXh0dXJlIHJlcXVlc3RlZC4gSWYgYSBiaS1sZXZlbCB0ZXh0dXJlIGlzIHJlcXVlc3RlZCwgdGhlDQorICAgIC8vLyB0ZXh0dXJlIGNvbnRhaW5zIG9ubHkgYmktbGV2ZWwgZ2x5cGhzLiBPdGhlcndpc2UsIHRoZSB0ZXh0dXJlIGNvbnRhaW5zIG9ubHkgYW50aS1hbGlhc2VkIGdseXBocy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRleHR1cmVCb3VuZHMiPlNwZWNpZmllcyB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSB0ZXh0dXJlLCB3aGljaCBjYW4gYmUgZGlmZmVyZW50IHRoYW4NCisgICAgLy8vIHRoZSBib3VuZGluZyByZWN0YW5nbGUgcmV0dXJuZWQgYnkgR2V0QWxwaGFUZXh0dXJlQm91bmRzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iYWxwaGFWYWx1ZXMiPlJlY2VpdmVzIHRoZSBhcnJheSBvZiBhbHBoYSB2YWx1ZXMuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJidWZmZXJTaXplIj5TaXplIG9mIHRoZSBhbHBoYVZhbHVlcyBhcnJheS4gVGhlIG1pbmltdW0gc2l6ZSBkZXBlbmRzIG9uIHRoZSBkaW1lbnNpb25zIG9mIHRoZQ0KKyAgICAvLy8gcmVjdGFuZ2xlIGFuZCB0aGUgdHlwZSBvZiB0ZXh0dXJlIHJlcXVlc3RlZC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVBbHBoYVRleHR1cmUpKA0KKyAgICAgICAgRFdSSVRFX1RFWFRVUkVfVFlQRSB0ZXh0dXJlVHlwZSwNCisgICAgICAgIF9faW4gUkVDVCBjb25zdCogdGV4dHVyZUJvdW5kcywNCisgICAgICAgIF9fb3V0X2Jjb3VudChidWZmZXJTaXplKSBCWVRFKiBhbHBoYVZhbHVlcywNCisgICAgICAgIFVJTlQzMiBidWZmZXJTaXplDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIEdldHMgcHJvcGVydGllcyByZXF1aXJlZCBmb3IgQ2xlYXJUeXBlIGJsZW5kaW5nLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InJlbmRlcmluZ1BhcmFtcyI+UmVuZGVyaW5nIHBhcmFtZXRlcnMgb2JqZWN0LiBJbiBtb3N0IGNhc2VzLCB0aGUgdmFsdWVzIHJldHVybmVkIGluIHRoZSBvdXRwdXQNCisgICAgLy8vIHBhcmFtZXRlcnMgYXJlIGJhc2VkIG9uIHRoZSBwcm9wZXJ0aWVzIG9mIHRoaXMgb2JqZWN0LiBUaGUgZXhjZXB0aW9uIGlzIGlmIGEgR0RJLWNvbXBhdGlibGUgcmVuZGVyaW5nIG1vZGUNCisgICAgLy8vIGlzIHNwZWNpZmllZC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImJsZW5kR2FtbWEiPlJlY2VpdmVzIHRoZSBnYW1tYSB2YWx1ZSB0byB1c2UgZm9yIGdhbW1hIGNvcnJlY3Rpb24uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJibGVuZEVuaGFuY2VkQ29udHJhc3QiPlJlY2VpdmVzIHRoZSBlbmhhbmNlZCBjb250cmFzdCB2YWx1ZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImJsZW5kQ2xlYXJUeXBlTGV2ZWwiPlJlY2VpdmVzIHRoZSBDbGVhclR5cGUgbGV2ZWwuPC9wYXJhbT4NCisgICAgU1RETUVUSE9EKEdldEFscGhhQmxlbmRQYXJhbXMpKA0KKyAgICAgICAgSURXcml0ZVJlbmRlcmluZ1BhcmFtcyogcmVuZGVyaW5nUGFyYW1zLA0KKyAgICAgICAgX19vdXQgRkxPQVQqIGJsZW5kR2FtbWEsDQorICAgICAgICBfX291dCBGTE9BVCogYmxlbmRFbmhhbmNlZENvbnRyYXN0LA0KKyAgICAgICAgX19vdXQgRkxPQVQqIGJsZW5kQ2xlYXJUeXBlTGV2ZWwNCisgICAgICAgICkgUFVSRTsNCit9Ow0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIHJvb3QgZmFjdG9yeSBpbnRlcmZhY2UgZm9yIGFsbCBEV3JpdGUgb2JqZWN0cy4NCisvLy8gPC9zdW1tYXJ5Pg0KK2ludGVyZmFjZSBEV1JJVEVfREVDTEFSRV9JTlRFUkZBQ0UoImI4NTllZTVhLWQ4MzgtNGI1Yi1hMmU4LTFhZGM3ZDkzZGI0OCIpIElEV3JpdGVGYWN0b3J5IDogcHVibGljIElVbmtub3duDQorew0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBHZXRzIGEgZm9udCBjb2xsZWN0aW9uIHJlcHJlc2VudGluZyB0aGUgc2V0IG9mIGluc3RhbGxlZCBmb250cy4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250Q29sbGVjdGlvbiI+UmVjZWl2ZXMgYSBwb2ludGVyIHRvIHRoZSBzeXN0ZW0gZm9udCBjb2xsZWN0aW9uIG9iamVjdCwgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjaGVja0ZvclVwZGF0ZXMiPklmIHRoaXMgcGFyYW1ldGVyIGlzIG5vbnplcm8sIHRoZSBmdW5jdGlvbiBwZXJmb3JtcyBhbiBpbW1lZGlhdGUgY2hlY2sgZm9yIGNoYW5nZXMgdG8gdGhlIHNldCBvZg0KKyAgICAvLy8gaW5zdGFsbGVkIGZvbnRzLiBJZiB0aGlzIHBhcmFtZXRlciBpcyBGQUxTRSwgdGhlIGZ1bmN0aW9uIHdpbGwgc3RpbGwgZGV0ZWN0IGNoYW5nZXMgaWYgdGhlIGZvbnQgY2FjaGUgc2VydmljZSBpcyBydW5uaW5nLCBidXQNCisgICAgLy8vIHRoZXJlIG1heSBiZSBzb21lIGxhdGVuY3kuIEZvciBleGFtcGxlLCBhbiBhcHBsaWNhdGlvbiBtaWdodCBzcGVjaWZ5IFRSVUUgaWYgaXQgaGFzIGl0c2VsZiBqdXN0IGluc3RhbGxlZCBhIGZvbnQgYW5kIHdhbnRzIHRvIA0KKyAgICAvLy8gYmUgc3VyZSB0aGUgZm9udCBjb2xsZWN0aW9uIGNvbnRhaW5zIHRoYXQgZm9udC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChHZXRTeXN0ZW1Gb250Q29sbGVjdGlvbikoDQorICAgICAgICBfX291dCBJRFdyaXRlRm9udENvbGxlY3Rpb24qKiBmb250Q29sbGVjdGlvbiwNCisgICAgICAgIEJPT0wgY2hlY2tGb3JVcGRhdGVzID0gRkFMU0UNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQ3JlYXRlcyBhIGZvbnQgY29sbGVjdGlvbiB1c2luZyBhIGN1c3RvbSBmb250IGNvbGxlY3Rpb24gbG9hZGVyLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImNvbGxlY3Rpb25Mb2FkZXIiPkFwcGxpY2F0aW9uLWRlZmluZWQgZm9udCBjb2xsZWN0aW9uIGxvYWRlciwgd2hpY2ggbXVzdCBoYXZlIGJlZW4gcHJldmlvdXNseQ0KKyAgICAvLy8gcmVnaXN0ZXJlZCB1c2luZyBSZWdpc3RlckZvbnRDb2xsZWN0aW9uTG9hZGVyLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iY29sbGVjdGlvbktleSI+S2V5IHVzZWQgYnkgdGhlIGxvYWRlciB0byBpZGVudGlmeSBhIGNvbGxlY3Rpb24gb2YgZm9udCBmaWxlcy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImNvbGxlY3Rpb25LZXlTaXplIj5TaXplIGluIGJ5dGVzIG9mIHRoZSBjb2xsZWN0aW9uIGtleS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRDb2xsZWN0aW9uIj5SZWNlaXZlcyBhIHBvaW50ZXIgdG8gdGhlIHN5c3RlbSBmb250IGNvbGxlY3Rpb24gb2JqZWN0LCBvciBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZS48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVDdXN0b21Gb250Q29sbGVjdGlvbikoDQorICAgICAgICBJRFdyaXRlRm9udENvbGxlY3Rpb25Mb2FkZXIqIGNvbGxlY3Rpb25Mb2FkZXIsDQorICAgICAgICBfX2luX2Jjb3VudChjb2xsZWN0aW9uS2V5U2l6ZSkgdm9pZCBjb25zdCogY29sbGVjdGlvbktleSwNCisgICAgICAgIFVJTlQzMiBjb2xsZWN0aW9uS2V5U2l6ZSwNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250Q29sbGVjdGlvbioqIGZvbnRDb2xsZWN0aW9uDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFJlZ2lzdGVycyBhIGN1c3RvbSBmb250IGNvbGxlY3Rpb24gbG9hZGVyIHdpdGggdGhlIGZhY3Rvcnkgb2JqZWN0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRDb2xsZWN0aW9uTG9hZGVyIj5BcHBsaWNhdGlvbi1kZWZpbmVkIGZvbnQgY29sbGVjdGlvbiBsb2FkZXIuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoUmVnaXN0ZXJGb250Q29sbGVjdGlvbkxvYWRlcikoDQorICAgICAgICBJRFdyaXRlRm9udENvbGxlY3Rpb25Mb2FkZXIqIGZvbnRDb2xsZWN0aW9uTG9hZGVyDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFVucmVnaXN0ZXJzIGEgY3VzdG9tIGZvbnQgY29sbGVjdGlvbiBsb2FkZXIgdGhhdCB3YXMgcHJldmlvdXNseSByZWdpc3RlcmVkIHVzaW5nIFJlZ2lzdGVyRm9udENvbGxlY3Rpb25Mb2FkZXIuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udENvbGxlY3Rpb25Mb2FkZXIiPkFwcGxpY2F0aW9uLWRlZmluZWQgZm9udCBjb2xsZWN0aW9uIGxvYWRlci48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChVbnJlZ2lzdGVyRm9udENvbGxlY3Rpb25Mb2FkZXIpKA0KKyAgICAgICAgSURXcml0ZUZvbnRDb2xsZWN0aW9uTG9hZGVyKiBmb250Q29sbGVjdGlvbkxvYWRlcg0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDcmVhdGVGb250RmlsZVJlZmVyZW5jZSBjcmVhdGVzIGEgZm9udCBmaWxlIHJlZmVyZW5jZSBvYmplY3QgZnJvbSBhIGxvY2FsIGZvbnQgZmlsZS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmaWxlUGF0aCI+QWJzb2x1dGUgZmlsZSBwYXRoLiBTdWJzZXF1ZW50IG9wZXJhdGlvbnMgb24gdGhlIGNvbnN0cnVjdGVkIG9iamVjdCBtYXkgZmFpbA0KKyAgICAvLy8gaWYgdGhlIHVzZXIgcHJvdmlkZWQgZmlsZVBhdGggZG9lc24ndCBjb3JyZXNwb25kIHRvIGEgdmFsaWQgZmlsZSBvbiB0aGUgZGlzay48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Imxhc3RXcml0ZVRpbWUiPkxhc3QgbW9kaWZpZWQgdGltZSBvZiB0aGUgaW5wdXQgZmlsZSBwYXRoLiBJZiB0aGUgcGFyYW1ldGVyIGlzIG9taXR0ZWQsDQorICAgIC8vLyB0aGUgZnVuY3Rpb24gd2lsbCBhY2Nlc3MgdGhlIGZvbnQgZmlsZSB0byBvYnRhaW4gaXRzIGxhc3Qgd3JpdGUgdGltZSwgc28gdGhlIGNsaWVudHMgYXJlIGVuY291cmFnZWQgdG8gc3BlY2lmeSB0aGlzIHZhbHVlDQorICAgIC8vLyB0byBhdm9pZCBleHRyYSBkaXNrIGFjY2Vzcy4gU3Vic2VxdWVudCBvcGVyYXRpb25zIG9uIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QgbWF5IGZhaWwNCisgICAgLy8vIGlmIHRoZSB1c2VyIHByb3ZpZGVkIGxhc3RXcml0ZVRpbWUgZG9lc24ndCBtYXRjaCB0aGUgZmlsZSBvbiB0aGUgZGlzay48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlIj5Db250YWlucyBuZXdseSBjcmVhdGVkIGZvbnQgZmlsZSByZWZlcmVuY2Ugb2JqZWN0LCBvciBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZS48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVGb250RmlsZVJlZmVyZW5jZSkoDQorICAgICAgICBfX2luX3ogV0NIQVIgY29uc3QqIGZpbGVQYXRoLA0KKyAgICAgICAgX19pbl9vcHQgRklMRVRJTUUgY29uc3QqIGxhc3RXcml0ZVRpbWUsDQorICAgICAgICBfX291dCBJRFdyaXRlRm9udEZpbGUqKiBmb250RmlsZQ0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDcmVhdGVDdXN0b21Gb250RmlsZVJlZmVyZW5jZSBjcmVhdGVzIGEgcmVmZXJlbmNlIHRvIGFuIGFwcGxpY2F0aW9uIHNwZWNpZmljIGZvbnQgZmlsZSByZXNvdXJjZS4NCisgICAgLy8vIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyBhbiBhcHBsaWNhdGlvbiBvciBhIGRvY3VtZW50IHRvIHVzZSBhIGZvbnQgd2l0aG91dCBoYXZpbmcgdG8gaW5zdGFsbCBpdCBvbiB0aGUgc3lzdGVtLg0KKyAgICAvLy8gVGhlIGZvbnRGaWxlUmVmZXJlbmNlS2V5IGhhcyB0byBiZSB1bmlxdWUgb25seSBpbiB0aGUgc2NvcGUgb2YgdGhlIGZvbnRGaWxlTG9hZGVyIHVzZWQgaW4gdGhpcyBjYWxsLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlUmVmZXJlbmNlS2V5Ij5Gb250IGZpbGUgcmVmZXJlbmNlIGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGZvbnQgZmlsZSByZXNvdXJjZQ0KKyAgICAvLy8gZHVyaW5nIHRoZSBsaWZldGltZSBvZiBmb250RmlsZUxvYWRlci48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlUmVmZXJlbmNlS2V5U2l6ZSI+U2l6ZSBvZiBmb250IGZpbGUgcmVmZXJlbmNlIGtleSBpbiBieXRlcy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlTG9hZGVyIj5Gb250IGZpbGUgbG9hZGVyIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBmb250IHN5c3RlbSB0byBsb2FkIGRhdGEgZnJvbSB0aGUgZmlsZSBpZGVudGlmaWVkIGJ5DQorICAgIC8vLyBmb250RmlsZVJlZmVyZW5jZUtleS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlIj5Db250YWlucyB0aGUgbmV3bHkgY3JlYXRlZCBmb250IGZpbGUgb2JqZWN0LCBvciBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZS48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIC8vLyA8cmVtYXJrcz4NCisgICAgLy8vIFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGNhc2VzIHdoZW4gYW4gYXBwbGljYXRpb24gb3IgYSBkb2N1bWVudCBuZWVkcyB0byB1c2UgYSBmb250DQorICAgIC8vLyB3aXRob3V0IGhhdmluZyB0byBpbnN0YWxsIGl0IG9uIHRoZSBzeXN0ZW0uIGZvbnRGaWxlUmVmZXJlbmNlS2V5IGhhcyB0byBiZSB1bmlxdWUgb25seSBpbiB0aGUgc2NvcGUNCisgICAgLy8vIG9mIHRoZSBmb250RmlsZUxvYWRlciB1c2VkIGluIHRoaXMgY2FsbC4NCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgU1RETUVUSE9EKENyZWF0ZUN1c3RvbUZvbnRGaWxlUmVmZXJlbmNlKSgNCisgICAgICAgIF9faW5fYmNvdW50KGZvbnRGaWxlUmVmZXJlbmNlS2V5U2l6ZSkgdm9pZCBjb25zdCogZm9udEZpbGVSZWZlcmVuY2VLZXksDQorICAgICAgICBVSU5UMzIgZm9udEZpbGVSZWZlcmVuY2VLZXlTaXplLA0KKyAgICAgICAgSURXcml0ZUZvbnRGaWxlTG9hZGVyKiBmb250RmlsZUxvYWRlciwNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250RmlsZSoqIGZvbnRGaWxlDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZXMgYSBmb250IGZhY2Ugb2JqZWN0Lg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGYWNlVHlwZSI+VGhlIGZpbGUgZm9ybWF0IG9mIHRoZSBmb250IGZhY2UuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJudW1iZXJPZkZpbGVzIj5UaGUgbnVtYmVyIG9mIGZvbnQgZmlsZXMgcmVxdWlyZSB0byByZXByZXNlbnQgdGhlIGZvbnQgZmFjZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRGaWxlcyI+Rm9udCBmaWxlcyByZXByZXNlbnRpbmcgdGhlIGZvbnQgZmFjZS4gU2luY2UgSURXcml0ZUZvbnRGYWNlIG1haW50YWlucyBpdHMgb3duIHJlZmVyZW5jZXMNCisgICAgLy8vIHRvIHRoZSBpbnB1dCBmb250IGZpbGUgb2JqZWN0cywgaXQncyBPSyB0byByZWxlYXNlIHRoZW0gYWZ0ZXIgdGhpcyBjYWxsLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZmFjZUluZGV4Ij5UaGUgemVybyBiYXNlZCBpbmRleCBvZiBhIGZvbnQgZmFjZSBpbiBjYXNlcyB3aGVuIHRoZSBmb250IGZpbGVzIGNvbnRhaW4gYSBjb2xsZWN0aW9uIG9mIGZvbnQgZmFjZXMuDQorICAgIC8vLyBJZiB0aGUgZm9udCBmaWxlcyBjb250YWluIGEgc2luZ2xlIGZhY2UsIHRoaXMgdmFsdWUgc2hvdWxkIGJlIHplcm8uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmFjZVNpbXVsYXRpb25GbGFncyI+Rm9udCBmYWNlIHNpbXVsYXRpb24gZmxhZ3MgZm9yIGFsZ29yaXRobWljIGVtYm9sZGVuaW5nIGFuZCBpdGFsaWNpemF0aW9uLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZhY2UiPkNvbnRhaW5zIHRoZSBuZXdseSBjcmVhdGVkIGZvbnQgZmFjZSBvYmplY3QsIG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlLjwvcGFyYW0+DQorICAgIC8vLyA8cmV0dXJucz4NCisgICAgLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisgICAgLy8vIDwvcmV0dXJucz4NCisgICAgU1RETUVUSE9EKENyZWF0ZUZvbnRGYWNlKSgNCisgICAgICAgIERXUklURV9GT05UX0ZBQ0VfVFlQRSBmb250RmFjZVR5cGUsDQorICAgICAgICBVSU5UMzIgbnVtYmVyT2ZGaWxlcywNCisgICAgICAgIF9faW5fZWNvdW50KG51bWJlck9mRmlsZXMpIElEV3JpdGVGb250RmlsZSogY29uc3QqIGZvbnRGaWxlcywNCisgICAgICAgIFVJTlQzMiBmYWNlSW5kZXgsDQorICAgICAgICBEV1JJVEVfRk9OVF9TSU1VTEFUSU9OUyBmb250RmFjZVNpbXVsYXRpb25GbGFncywNCisgICAgICAgIF9fb3V0IElEV3JpdGVGb250RmFjZSoqIGZvbnRGYWNlDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZXMgYSByZW5kZXJpbmcgcGFyYW1ldGVycyBvYmplY3Qgd2l0aCBkZWZhdWx0IHNldHRpbmdzIGZvciB0aGUgcHJpbWFyeSBtb25pdG9yLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InJlbmRlcmluZ1BhcmFtcyI+SG9sZHMgdGhlIG5ld2x5IGNyZWF0ZWQgcmVuZGVyaW5nIHBhcmFtZXRlcnMgb2JqZWN0LCBvciBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZS48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVSZW5kZXJpbmdQYXJhbXMpKA0KKyAgICAgICAgX19vdXQgSURXcml0ZVJlbmRlcmluZ1BhcmFtcyoqIHJlbmRlcmluZ1BhcmFtcw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDcmVhdGVzIGEgcmVuZGVyaW5nIHBhcmFtZXRlcnMgb2JqZWN0IHdpdGggZGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIHNwZWNpZmllZCBtb25pdG9yLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im1vbml0b3IiPlRoZSBtb25pdG9yIHRvIHJlYWQgdGhlIGRlZmF1bHQgdmFsdWVzIGZyb20uPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJyZW5kZXJpbmdQYXJhbXMiPkhvbGRzIHRoZSBuZXdseSBjcmVhdGVkIHJlbmRlcmluZyBwYXJhbWV0ZXJzIG9iamVjdCwgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQ3JlYXRlTW9uaXRvclJlbmRlcmluZ1BhcmFtcykoDQorICAgICAgICBITU9OSVRPUiBtb25pdG9yLA0KKyAgICAgICAgX19vdXQgSURXcml0ZVJlbmRlcmluZ1BhcmFtcyoqIHJlbmRlcmluZ1BhcmFtcw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDcmVhdGVzIGEgcmVuZGVyaW5nIHBhcmFtZXRlcnMgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBwcm9wZXJ0aWVzLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdhbW1hIj5UaGUgZ2FtbWEgdmFsdWUgdXNlZCBmb3IgZ2FtbWEgY29ycmVjdGlvbiwgd2hpY2ggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgY2Fubm90IGV4Y2VlZCAyNTYuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJlbmhhbmNlZENvbnRyYXN0Ij5UaGUgYW1vdW50IG9mIGNvbnRyYXN0IGVuaGFuY2VtZW50LCB6ZXJvIG9yIGdyZWF0ZXIuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJjbGVhclR5cGVMZXZlbCI+VGhlIGRlZ3JlZSBvZiBDbGVhclR5cGUgbGV2ZWwsIGZyb20gMC4wZiAobm8gQ2xlYXJUeXBlKSB0byAxLjBmIChmdWxsIENsZWFyVHlwZSkuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJwaXhlbEdlb21ldHJ5Ij5UaGUgZ2VvbWV0cnkgb2YgYSBkZXZpY2UgcGl4ZWwuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJyZW5kZXJpbmdNb2RlIj5NZXRob2Qgb2YgcmVuZGVyaW5nIGdseXBocy4gSW4gbW9zdCBjYXNlcywgdGhpcyBzaG91bGQgYmUgRFdSSVRFX1JFTkRFUklOR19NT0RFX0RFRkFVTFQgdG8gYXV0b21hdGljYWxseSB1c2UgYW4gYXBwcm9wcmlhdGUgbW9kZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InJlbmRlcmluZ1BhcmFtcyI+SG9sZHMgdGhlIG5ld2x5IGNyZWF0ZWQgcmVuZGVyaW5nIHBhcmFtZXRlcnMgb2JqZWN0LCBvciBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZS48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVDdXN0b21SZW5kZXJpbmdQYXJhbXMpKA0KKyAgICAgICAgRkxPQVQgZ2FtbWEsDQorICAgICAgICBGTE9BVCBlbmhhbmNlZENvbnRyYXN0LA0KKyAgICAgICAgRkxPQVQgY2xlYXJUeXBlTGV2ZWwsDQorICAgICAgICBEV1JJVEVfUElYRUxfR0VPTUVUUlkgcGl4ZWxHZW9tZXRyeSwNCisgICAgICAgIERXUklURV9SRU5ERVJJTkdfTU9ERSByZW5kZXJpbmdNb2RlLA0KKyAgICAgICAgX19vdXQgSURXcml0ZVJlbmRlcmluZ1BhcmFtcyoqIHJlbmRlcmluZ1BhcmFtcw0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBSZWdpc3RlcnMgYSBmb250IGZpbGUgbG9hZGVyIHdpdGggRGlyZWN0V3JpdGUuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udEZpbGVMb2FkZXIiPlBvaW50ZXIgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBJRFdyaXRlRm9udEZpbGVMb2FkZXIgZm9yIGEgcGFydGljdWxhciBmaWxlIHJlc291cmNlIHR5cGUuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhIGZvbnQgZmlsZSBsb2FkZXIgd2l0aCBEaXJlY3RXcml0ZS4NCisgICAgLy8vIEZvbnQgZmlsZSBsb2FkZXIgaW50ZXJmYWNlIGhhbmRsZXMgbG9hZGluZyBmb250IGZpbGUgcmVzb3VyY2VzIG9mIGEgcGFydGljdWxhciB0eXBlIGZyb20gYSBrZXkuDQorICAgIC8vLyBUaGUgZm9udCBmaWxlIGxvYWRlciBpbnRlcmZhY2UgaXMgcmVjb21tZW5kZWQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgYSBzaW5nbGV0b24gb2JqZWN0Lg0KKyAgICAvLy8gQSBnaXZlbiBpbnN0YW5jZSBjYW4gb25seSBiZSByZWdpc3RlcmVkIG9uY2UuDQorICAgIC8vLyBTdWNjZWVkaW5nIGF0dGVtcHRzIHdpbGwgcmV0dXJuIGFuIGVycm9yIHRoYXQgaXQgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkLg0KKyAgICAvLy8gSU1QT1JUQU5UOiBmb250IGZpbGUgbG9hZGVyIGltcGxlbWVudGF0aW9ucyBtdXN0IG5vdCByZWdpc3RlciB0aGVtc2VsdmVzIHdpdGggRGlyZWN0V3JpdGUNCisgICAgLy8vIGluc2lkZSB0aGVpciBjb25zdHJ1Y3RvcnMgYW5kIG11c3Qgbm90IHVucmVnaXN0ZXIgdGhlbXNlbHZlcyBpbiB0aGVpciBkZXN0cnVjdG9ycywgYmVjYXVzZQ0KKyAgICAvLy8gcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdG9uIG9wZXJhdGlvbnMgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgdGhlIG9iamVjdCByZWZlcmVuY2UgY291bnQgcmVzcGVjdGl2ZWx5Lg0KKyAgICAvLy8gSW5zdGVhZCwgcmVnaXN0cmF0aW9uIGFuZCB1bnJlZ2lzdHJhdGlvbiBvZiBmb250IGZpbGUgbG9hZGVycyB3aXRoIERpcmVjdFdyaXRlIHNob3VsZCBiZSBwZXJmb3JtZWQNCisgICAgLy8vIG91dHNpZGUgb2YgdGhlIGZvbnQgZmlsZSBsb2FkZXIgaW1wbGVtZW50YXRpb24gYXMgYSBzZXBhcmF0ZSBzdGVwLg0KKyAgICAvLy8gPC9yZW1hcmtzPg0KKyAgICBTVERNRVRIT0QoUmVnaXN0ZXJGb250RmlsZUxvYWRlcikoDQorICAgICAgICBJRFdyaXRlRm9udEZpbGVMb2FkZXIqIGZvbnRGaWxlTG9hZGVyDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFVucmVnaXN0ZXJzIGEgZm9udCBmaWxlIGxvYWRlciB0aGF0IHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgd2l0aCB0aGUgRGlyZWN0V3JpdGUgZm9udCBzeXN0ZW0gdXNpbmcgUmVnaXN0ZXJGb250RmlsZUxvYWRlci4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmlsZUxvYWRlciI+UG9pbnRlciB0byB0aGUgZmlsZSBsb2FkZXIgdGhhdCB3YXMgcHJldmlvdXNseSByZWdpc3RlcmVkIHdpdGggdGhlIERpcmVjdFdyaXRlIGZvbnQgc3lzdGVtIHVzaW5nIFJlZ2lzdGVyRm9udEZpbGVMb2FkZXIuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gVGhpcyBmdW5jdGlvbiB3aWxsIHN1Y2NlZWQgaWYgdGhlIHVzZXIgbG9hZGVyIGlzIHJlcXVlc3RlZCB0byBiZSByZW1vdmVkLg0KKyAgICAvLy8gSXQgd2lsbCBmYWlsIGlmIHRoZSBwb2ludGVyIHRvIHRoZSBmaWxlIGxvYWRlciBpZGVudGlmaWVzIGEgc3RhbmRhcmQgRGlyZWN0V3JpdGUgbG9hZGVyLA0KKyAgICAvLy8gb3IgYSBsb2FkZXIgdGhhdCBpcyBuZXZlciByZWdpc3RlcmVkIG9yIGhhcyBhbHJlYWR5IGJlZW4gdW5yZWdpc3RlcmVkLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICAvLy8gPHJlbWFya3M+DQorICAgIC8vLyBUaGlzIGZ1bmN0aW9uIHVucmVnaXN0ZXJzIGZvbnQgZmlsZSBsb2FkZXIgY2FsbGJhY2tzIHdpdGggdGhlIERpcmVjdFdyaXRlIGZvbnQgc3lzdGVtLg0KKyAgICAvLy8gVGhlIGZvbnQgZmlsZSBsb2FkZXIgaW50ZXJmYWNlIGlzIHJlY29tbWVuZGVkIHRvIGJlIGltcGxlbWVudGVkIGJ5IGEgc2luZ2xldG9uIG9iamVjdC4NCisgICAgLy8vIElNUE9SVEFOVDogZm9udCBmaWxlIGxvYWRlciBpbXBsZW1lbnRhdGlvbnMgbXVzdCBub3QgcmVnaXN0ZXIgdGhlbXNlbHZlcyB3aXRoIERpcmVjdFdyaXRlDQorICAgIC8vLyBpbnNpZGUgdGhlaXIgY29uc3RydWN0b3JzIGFuZCBtdXN0IG5vdCB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgaW4gdGhlaXIgZGVzdHJ1Y3RvcnMsIGJlY2F1c2UNCisgICAgLy8vIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRvbiBvcGVyYXRpb25zIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IHRoZSBvYmplY3QgcmVmZXJlbmNlIGNvdW50IHJlc3BlY3RpdmVseS4NCisgICAgLy8vIEluc3RlYWQsIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24gb2YgZm9udCBmaWxlIGxvYWRlcnMgd2l0aCBEaXJlY3RXcml0ZSBzaG91bGQgYmUgcGVyZm9ybWVkDQorICAgIC8vLyBvdXRzaWRlIG9mIHRoZSBmb250IGZpbGUgbG9hZGVyIGltcGxlbWVudGF0aW9uIGFzIGEgc2VwYXJhdGUgc3RlcC4NCisgICAgLy8vIDwvcmVtYXJrcz4NCisgICAgU1RETUVUSE9EKFVucmVnaXN0ZXJGb250RmlsZUxvYWRlcikoDQorICAgICAgICBJRFdyaXRlRm9udEZpbGVMb2FkZXIqIGZvbnRGaWxlTG9hZGVyDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZSBhIHRleHQgZm9ybWF0IG9iamVjdCB1c2VkIGZvciB0ZXh0IGxheW91dC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJmb250RmFtaWx5TmFtZSI+TmFtZSBvZiB0aGUgZm9udCBmYW1pbHk8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRDb2xsZWN0aW9uIj5Gb250IGNvbGxlY3Rpb24uIE5VTEwgaW5kaWNhdGVzIHRoZSBzeXN0ZW0gZm9udCBjb2xsZWN0aW9uLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udFdlaWdodCI+Rm9udCB3ZWlnaHQ8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImZvbnRTdHlsZSI+Rm9udCBzdHlsZTwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udFN0cmV0Y2giPkZvbnQgc3RyZXRjaDwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9udFNpemUiPkxvZ2ljYWwgc2l6ZSBvZiB0aGUgZm9udCBpbiBESVAgdW5pdHMuIEEgRElQICgiZGV2aWNlLWluZGVwZW5kZW50IHBpeGVsIikgZXF1YWxzIDEvOTYgaW5jaC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImxvY2FsZU5hbWUiPkxvY2FsZSBuYW1lPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0Rm9ybWF0Ij5Db250YWlucyBuZXdseSBjcmVhdGVkIHRleHQgZm9ybWF0IG9iamVjdCwgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQ3JlYXRlVGV4dEZvcm1hdCkoDQorICAgICAgICBfX2luX3ogV0NIQVIgY29uc3QqIGZvbnRGYW1pbHlOYW1lLA0KKyAgICAgICAgX19tYXliZW51bGwgSURXcml0ZUZvbnRDb2xsZWN0aW9uKiBmb250Q29sbGVjdGlvbiwNCisgICAgICAgIERXUklURV9GT05UX1dFSUdIVCBmb250V2VpZ2h0LA0KKyAgICAgICAgRFdSSVRFX0ZPTlRfU1RZTEUgZm9udFN0eWxlLA0KKyAgICAgICAgRFdSSVRFX0ZPTlRfU1RSRVRDSCBmb250U3RyZXRjaCwNCisgICAgICAgIEZMT0FUIGZvbnRTaXplLA0KKyAgICAgICAgX19pbl96IFdDSEFSIGNvbnN0KiBsb2NhbGVOYW1lLA0KKyAgICAgICAgX19vdXQgSURXcml0ZVRleHRGb3JtYXQqKiB0ZXh0Rm9ybWF0DQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZSBhIHR5cG9ncmFwaHkgb2JqZWN0IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0ZXh0IGZvcm1hdCBmb3IgdGV4dCBsYXlvdXQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idHlwb2dyYXBoeSI+Q29udGFpbnMgbmV3bHkgY3JlYXRlZCB0eXBvZ3JhcGh5IG9iamVjdCwgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQ3JlYXRlVHlwb2dyYXBoeSkoDQorICAgICAgICBfX291dCBJRFdyaXRlVHlwb2dyYXBoeSoqIHR5cG9ncmFwaHkNCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQ3JlYXRlIGFuIG9iamVjdCB1c2VkIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggR0RJLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdkaUludGVyb3AiPlJlY2VpdmVzIHRoZSBHREkgaW50ZXJvcCBvYmplY3QgaWYgc3VjY2Vzc2Z1bCwgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUuPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoR2V0R2RpSW50ZXJvcCkoDQorICAgICAgICBfX291dCBJRFdyaXRlR2RpSW50ZXJvcCoqIGdkaUludGVyb3ANCisgICAgICAgICkgUFVSRTsNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gQ3JlYXRlVGV4dExheW91dCB0YWtlcyBhIHN0cmluZywgZm9ybWF0LCBhbmQgYXNzb2NpYXRlZCBjb25zdHJhaW50cw0KKyAgICAvLy8gYW5kIHByb2R1Y2VzIGFuZCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBmdWxseSBhbmFseXplZA0KKyAgICAvLy8gYW5kIGZvcm1hdHRlZCByZXN1bHQuDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RyaW5nIj5UaGUgc3RyaW5nIHRvIGxheW91dC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InN0cmluZ0xlbmd0aCI+VGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dEZvcm1hdCI+VGhlIGZvcm1hdCB0byBhcHBseSB0byB0aGUgc3RyaW5nLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibWF4V2lkdGgiPldpZHRoIG9mIHRoZSBsYXlvdXQgYm94LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ibWF4SGVpZ2h0Ij5IZWlnaHQgb2YgdGhlIGxheW91dCBib3guPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0TGF5b3V0Ij5UaGUgcmVzdWx0YW50IG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVUZXh0TGF5b3V0KSgNCisgICAgICAgIF9faW5fZWNvdW50KHN0cmluZ0xlbmd0aCkgV0NIQVIgY29uc3QqIHN0cmluZywNCisgICAgICAgIFVJTlQzMiBzdHJpbmdMZW5ndGgsDQorICAgICAgICBJRFdyaXRlVGV4dEZvcm1hdCogdGV4dEZvcm1hdCwNCisgICAgICAgIEZMT0FUIG1heFdpZHRoLA0KKyAgICAgICAgRkxPQVQgbWF4SGVpZ2h0LA0KKyAgICAgICAgX19vdXQgSURXcml0ZVRleHRMYXlvdXQqKiB0ZXh0TGF5b3V0DQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZUdkaUNvbXBhdGlibGVUZXh0TGF5b3V0IHRha2VzIGEgc3RyaW5nLCBmb3JtYXQsIGFuZCBhc3NvY2lhdGVkIGNvbnN0cmFpbnRzDQorICAgIC8vLyBhbmQgcHJvZHVjZXMgYW5kIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBmb3JtYXR0ZWQgZm9yIGEgcGFydGljdWxhciBkaXNwbGF5IHJlc29sdXRpb24NCisgICAgLy8vIGFuZCBtZWFzdXJpbmcgbWV0aG9kLiBUaGUgcmVzdWx0aW5nIHRleHQgbGF5b3V0IHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRoZSBpbnRlbmRlZCByZXNvbHV0aW9uLA0KKyAgICAvLy8gYW5kIGZvciBjYXNlcyB3aGVyZSB0ZXh0IHNjYWxhYmlsaXR5IGlzIGRlc2lyZWQsIENyZWF0ZVRleHRMYXlvdXQgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJzdHJpbmciPlRoZSBzdHJpbmcgdG8gbGF5b3V0LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RyaW5nTGVuZ3RoIj5UaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0Rm9ybWF0Ij5UaGUgZm9ybWF0IHRvIGFwcGx5IHRvIHRoZSBzdHJpbmcuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsYXlvdXRXaWR0aCI+V2lkdGggb2YgdGhlIGxheW91dCBib3guPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJsYXlvdXRIZWlnaHQiPkhlaWdodCBvZiB0aGUgbGF5b3V0IGJveC48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InBpeGVsc1BlckRpcCI+TnVtYmVyIG9mIHBoeXNpY2FsIHBpeGVscyBwZXIgRElQLiBGb3IgZXhhbXBsZSwgaWYgcmVuZGVyaW5nIG9udG8gYSA5NiBEUEkgZGV2aWNlIHRoZW4gcGl4ZWxzUGVyRGlwDQorICAgIC8vLyBpcyAxLiBJZiByZW5kZXJpbmcgb250byBhIDEyMCBEUEkgZGV2aWNlIHRoZW4gcGl4ZWxzUGVyRGlwIGlzIDEyMC85Ni48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9InRyYW5zZm9ybSI+T3B0aW9uYWwgdHJhbnNmb3JtIGFwcGxpZWQgdG8gdGhlIGdseXBocyBhbmQgdGhlaXIgcG9zaXRpb25zLiBUaGlzIHRyYW5zZm9ybSBpcyBhcHBsaWVkIGFmdGVyIHRoZQ0KKyAgICAvLy8gc2NhbGluZyBzcGVjaWZpZWQgdGhlIGZvbnQgc2l6ZSBhbmQgcGl4ZWxzUGVyRGlwLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlR2RpTmF0dXJhbCI+DQorICAgIC8vLyBXaGVuIHNldCB0byBGQUxTRSwgaW5zdHJ1Y3RzIHRoZSB0ZXh0IGxheW91dCB0byB1c2UgdGhlIHNhbWUgbWV0cmljcyBhcyBHREkgYWxpYXNlZCB0ZXh0Lg0KKyAgICAvLy8gV2hlbiBzZXQgdG8gVFJVRSwgaW5zdHJ1Y3RzIHRoZSB0ZXh0IGxheW91dCB0byB1c2UgdGhlIHNhbWUgbWV0cmljcyBhcyB0ZXh0IG1lYXN1cmVkIGJ5IEdESSB1c2luZyBhIGZvbnQNCisgICAgLy8vIGNyZWF0ZWQgd2l0aCBDTEVBUlRZUEVfTkFUVVJBTF9RVUFMSVRZLg0KKyAgICAvLy8gPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0TGF5b3V0Ij5UaGUgcmVzdWx0YW50IG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVHZGlDb21wYXRpYmxlVGV4dExheW91dCkoDQorICAgICAgICBfX2luX2Vjb3VudChzdHJpbmdMZW5ndGgpIFdDSEFSIGNvbnN0KiBzdHJpbmcsDQorICAgICAgICBVSU5UMzIgc3RyaW5nTGVuZ3RoLA0KKyAgICAgICAgSURXcml0ZVRleHRGb3JtYXQqIHRleHRGb3JtYXQsDQorICAgICAgICBGTE9BVCBsYXlvdXRXaWR0aCwNCisgICAgICAgIEZMT0FUIGxheW91dEhlaWdodCwNCisgICAgICAgIEZMT0FUIHBpeGVsc1BlckRpcCwNCisgICAgICAgIF9faW5fb3B0IERXUklURV9NQVRSSVggY29uc3QqIHRyYW5zZm9ybSwNCisgICAgICAgIEJPT0wgdXNlR2RpTmF0dXJhbCwNCisgICAgICAgIF9fb3V0IElEV3JpdGVUZXh0TGF5b3V0KiogdGV4dExheW91dA0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUaGUgYXBwbGljYXRpb24gbWF5IGNhbGwgdGhpcyBmdW5jdGlvbiB0byBjcmVhdGUgYW4gaW5saW5lIG9iamVjdCBmb3IgdHJpbW1pbmcsIHVzaW5nIGFuIGVsbGlwc2lzIGFzIHRoZSBvbWlzc2lvbiBzaWduLg0KKyAgICAvLy8gVGhlIGVsbGlwc2lzIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGUgY3VycmVudCBzZXR0aW5ncyBvZiB0aGUgZm9ybWF0LCBpbmNsdWRpbmcgYmFzZSBmb250LCBzdHlsZSwgYW5kIGFueSBlZmZlY3RzLg0KKyAgICAvLy8gQWx0ZXJuYXRlIG9taXNzaW9uIHNpZ25zIGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBieSBpbXBsZW1lbnRpbmcgSURXcml0ZUlubGluZU9iamVjdC4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJ0ZXh0Rm9ybWF0Ij5UZXh0IGZvcm1hdCB1c2VkIGFzIGEgdGVtcGxhdGUgZm9yIHRoZSBvbWlzc2lvbiBzaWduLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idHJpbW1pbmdTaWduIj5DcmVhdGVkIG9taXNzaW9uIHNpZ24uPC9wYXJhbT4NCisgICAgLy8vIDxyZXR1cm5zPg0KKyAgICAvLy8gU3RhbmRhcmQgSFJFU1VMVCBlcnJvciBjb2RlLg0KKyAgICAvLy8gPC9yZXR1cm5zPg0KKyAgICBTVERNRVRIT0QoQ3JlYXRlRWxsaXBzaXNUcmltbWluZ1NpZ24pKA0KKyAgICAgICAgSURXcml0ZVRleHRGb3JtYXQqIHRleHRGb3JtYXQsDQorICAgICAgICBfX291dCBJRFdyaXRlSW5saW5lT2JqZWN0KiogdHJpbW1pbmdTaWduDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIFJldHVybiBhbiBpbnRlcmZhY2UgdG8gcGVyZm9ybSB0ZXh0IGFuYWx5c2lzIHdpdGguDQorICAgIC8vLyA8L3N1bW1hcnk+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idGV4dEFuYWx5emVyIj5UaGUgcmVzdWx0YW50IG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVUZXh0QW5hbHl6ZXIpKA0KKyAgICAgICAgX19vdXQgSURXcml0ZVRleHRBbmFseXplcioqIHRleHRBbmFseXplcg0KKyAgICAgICAgKSBQVVJFOw0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBDcmVhdGVzIGEgbnVtYmVyIHN1YnN0aXR1dGlvbiBvYmplY3QgdXNpbmcgYSBsb2NhbGUgbmFtZSwNCisgICAgLy8vIHN1YnN0aXR1dGlvbiBtZXRob2QsIGFuZCB3aGV0aGVyIHRvIGlnbm9yZSB1c2VyIG92ZXJyaWRlcyAodXNlcyBOTFMNCisgICAgLy8vIGRlZmF1bHRzIGZvciB0aGUgZ2l2ZW4gY3VsdHVyZSBpbnN0ZWFkKS4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJzdWJzdGl0dXRpb25NZXRob2QiPk1ldGhvZCBvZiBudW1iZXIgc3Vic3RpdHV0aW9uIHRvIHVzZS48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImxvY2FsZU5hbWUiPldoaWNoIGxvY2FsZSB0byBvYnRhaW4gdGhlIGRpZ2l0cyBmcm9tLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iaWdub3JlVXNlck92ZXJyaWRlIj5JZ25vcmUgdGhlIHVzZXIncyBzZXR0aW5ncyBhbmQgdXNlIHRoZSBsb2NhbGUgZGVmYXVsdHM8L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9Im51bWJlclN1YnN0aXR1dGlvbiI+UmVjZWl2ZXMgYSBwb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIG9iamVjdC48L3BhcmFtPg0KKyAgICBTVERNRVRIT0QoQ3JlYXRlTnVtYmVyU3Vic3RpdHV0aW9uKSgNCisgICAgICAgIF9faW4gRFdSSVRFX05VTUJFUl9TVUJTVElUVVRJT05fTUVUSE9EIHN1YnN0aXR1dGlvbk1ldGhvZCwNCisgICAgICAgIF9faW5feiBXQ0hBUiBjb25zdCogbG9jYWxlTmFtZSwNCisgICAgICAgIF9faW4gQk9PTCBpZ25vcmVVc2VyT3ZlcnJpZGUsDQorICAgICAgICBfX291dCBJRFdyaXRlTnVtYmVyU3Vic3RpdHV0aW9uKiogbnVtYmVyU3Vic3RpdHV0aW9uDQorICAgICAgICApIFBVUkU7DQorDQorICAgIC8vLyA8c3VtbWFyeT4NCisgICAgLy8vIENyZWF0ZXMgYSBnbHlwaCBydW4gYW5hbHlzaXMgb2JqZWN0LCB3aGljaCBlbmNhcHN1bGF0ZXMgaW5mb3JtYXRpb24NCisgICAgLy8vIHVzZWQgdG8gcmVuZGVyIGEgZ2x5cGggcnVuLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImdseXBoUnVuIj5TdHJ1Y3R1cmUgc3BlY2lmeWluZyB0aGUgcHJvcGVydGllcyBvZiB0aGUgZ2x5cGggcnVuLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0icGl4ZWxzUGVyRGlwIj5OdW1iZXIgb2YgcGh5c2ljYWwgcGl4ZWxzIHBlciBESVAuIEZvciBleGFtcGxlLCBpZiByZW5kZXJpbmcgb250byBhIDk2IERQSSBiaXRtYXAgdGhlbiBwaXhlbHNQZXJEaXANCisgICAgLy8vIGlzIDEuIElmIHJlbmRlcmluZyBvbnRvIGEgMTIwIERQSSBiaXRtYXAgdGhlbiBwaXhlbHNQZXJEaXAgaXMgMTIwLzk2LjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0idHJhbnNmb3JtIj5PcHRpb25hbCB0cmFuc2Zvcm0gYXBwbGllZCB0byB0aGUgZ2x5cGhzIGFuZCB0aGVpciBwb3NpdGlvbnMuIFRoaXMgdHJhbnNmb3JtIGlzIGFwcGxpZWQgYWZ0ZXIgdGhlDQorICAgIC8vLyBzY2FsaW5nIHNwZWNpZmllZCB0aGUgZW1TaXplIGFuZCBwaXhlbHNQZXJEaXAuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJyZW5kZXJpbmdNb2RlIj5TcGVjaWZpZXMgdGhlIHJlbmRlcmluZyBtb2RlLCB3aGljaCBtdXN0IGJlIG9uZSBvZiB0aGUgcmFzdGVyIHJlbmRlcmluZyBtb2RlcyAoaS5lLiwgbm90IGRlZmF1bHQNCisgICAgLy8vIGFuZCBub3Qgb3V0bGluZSkuPC9wYXJhbT4NCisgICAgLy8vIDxwYXJhbSBuYW1lPSJtZWFzdXJpbmdNb2RlIj5TcGVjaWZpZXMgdGhlIG1ldGhvZCB0byBtZWFzdXJlIGdseXBocy48L3BhcmFtPg0KKyAgICAvLy8gPHBhcmFtIG5hbWU9ImJhc2VsaW5lT3JpZ2luWCI+SG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgYmFzZWxpbmUgb3JpZ2luLCBpbiBESVBzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iYmFzZWxpbmVPcmlnaW5ZIj5WZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgYmFzZWxpbmUgb3JpZ2luLCBpbiBESVBzLjwvcGFyYW0+DQorICAgIC8vLyA8cGFyYW0gbmFtZT0iZ2x5cGhSdW5BbmFseXNpcyI+UmVjZWl2ZXMgYSBwb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIG9iamVjdC48L3BhcmFtPg0KKyAgICAvLy8gPHJldHVybnM+DQorICAgIC8vLyBTdGFuZGFyZCBIUkVTVUxUIGVycm9yIGNvZGUuDQorICAgIC8vLyA8L3JldHVybnM+DQorICAgIFNURE1FVEhPRChDcmVhdGVHbHlwaFJ1bkFuYWx5c2lzKSgNCisgICAgICAgIF9faW4gRFdSSVRFX0dMWVBIX1JVTiBjb25zdCogZ2x5cGhSdW4sDQorICAgICAgICBGTE9BVCBwaXhlbHNQZXJEaXAsDQorICAgICAgICBfX2luX29wdCBEV1JJVEVfTUFUUklYIGNvbnN0KiB0cmFuc2Zvcm0sDQorICAgICAgICBEV1JJVEVfUkVOREVSSU5HX01PREUgcmVuZGVyaW5nTW9kZSwNCisgICAgICAgIERXUklURV9NRUFTVVJJTkdfTU9ERSBtZWFzdXJpbmdNb2RlLA0KKyAgICAgICAgRkxPQVQgYmFzZWxpbmVPcmlnaW5YLA0KKyAgICAgICAgRkxPQVQgYmFzZWxpbmVPcmlnaW5ZLA0KKyAgICAgICAgX19vdXQgSURXcml0ZUdseXBoUnVuQW5hbHlzaXMqKiBnbHlwaFJ1bkFuYWx5c2lzDQorICAgICAgICApIFBVUkU7DQorDQorfTsgLy8gaW50ZXJmYWNlIElEV3JpdGVGYWN0b3J5DQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBDcmVhdGVzIGEgRGlyZWN0V3JpdGUgZmFjdG9yeSBvYmplY3QgdGhhdCBpcyB1c2VkIGZvciBzdWJzZXF1ZW50IGNyZWF0aW9uIG9mIGluZGl2aWR1YWwgRGlyZWN0V3JpdGUgb2JqZWN0cy4NCisvLy8gPC9zdW1tYXJ5Pg0KKy8vLyA8cGFyYW0gbmFtZT0iZmFjdG9yeVR5cGUiPklkZW50aWZpZXMgd2hldGhlciB0aGUgZmFjdG9yeSBvYmplY3Qgd2lsbCBiZSBzaGFyZWQgb3IgaXNvbGF0ZWQuPC9wYXJhbT4NCisvLy8gPHBhcmFtIG5hbWU9ImlpZCI+SWRlbnRpZmllcyB0aGUgRGlyZWN0V3JpdGUgZmFjdG9yeSBpbnRlcmZhY2UsIHN1Y2ggYXMgX191dWlkb2YoSURXcml0ZUZhY3RvcnkpLjwvcGFyYW0+DQorLy8vIDxwYXJhbSBuYW1lPSJmYWN0b3J5Ij5SZWNlaXZlcyB0aGUgRGlyZWN0V3JpdGUgZmFjdG9yeSBvYmplY3QuPC9wYXJhbT4NCisvLy8gPHJldHVybnM+DQorLy8vIFN0YW5kYXJkIEhSRVNVTFQgZXJyb3IgY29kZS4NCisvLy8gPC9yZXR1cm5zPg0KKy8vLyA8cmVtYXJrcz4NCisvLy8gT2J0YWlucyBEaXJlY3RXcml0ZSBmYWN0b3J5IG9iamVjdCB0aGF0IGlzIHVzZWQgZm9yIHN1YnNlcXVlbnQgY3JlYXRpb24gb2YgaW5kaXZpZHVhbCBEaXJlY3RXcml0ZSBjbGFzc2VzLg0KKy8vLyBEaXJlY3RXcml0ZSBmYWN0b3J5IGNvbnRhaW5zIGludGVybmFsIHN0YXRlIHN1Y2ggYXMgZm9udCBsb2FkZXIgcmVnaXN0cmF0aW9uIGFuZCBjYWNoZWQgZm9udCBkYXRhLg0KKy8vLyBJbiBtb3N0IGNhc2VzIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgc2hhcmVkIGZhY3Rvcnkgb2JqZWN0LCBiZWNhdXNlIGl0IGFsbG93cyBtdWx0aXBsZSBjb21wb25lbnRzDQorLy8vIHRoYXQgdXNlIERpcmVjdFdyaXRlIHRvIHNoYXJlIGludGVybmFsIERpcmVjdFdyaXRlIHN0YXRlIGFuZCByZWR1Y2UgbWVtb3J5IHVzYWdlLg0KKy8vLyBIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8gcmVkdWNlIHRoZSBpbXBhY3Qgb2YgYSBjb21wb25lbnQsDQorLy8vIHN1Y2ggYXMgYSBwbHVnLWluIGZyb20gYW4gdW50cnVzdGVkIHNvdXJjZSwgb24gdGhlIHJlc3Qgb2YgdGhlIHByb2Nlc3MgYnkgc2FuZGJveGluZyBhbmQgaXNvbGF0aW5nIGl0DQorLy8vIGZyb20gdGhlIHJlc3Qgb2YgdGhlIHByb2Nlc3MgY29tcG9uZW50cy4gSW4gc3VjaCBjYXNlcywgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIGFuIGlzb2xhdGVkIGZhY3RvcnkgZm9yIHRoZSBzYW5kYm94ZWQNCisvLy8gY29tcG9uZW50Lg0KKy8vLyA8L3JlbWFya3M+DQorRVhURVJOX0MgSFJFU1VMVCBEV1JJVEVfRVhQT1JUIERXcml0ZUNyZWF0ZUZhY3RvcnkoDQorICAgIF9faW4gRFdSSVRFX0ZBQ1RPUllfVFlQRSBmYWN0b3J5VHlwZSwNCisgICAgX19pbiBSRUZJSUQgaWlkLA0KKyAgICBfX291dCBJVW5rbm93biAqKmZhY3RvcnkNCisgICAgKTsNCisNCisvLyBNYWNyb3MgdXNlZCB0byBkZWZpbmUgRGlyZWN0V3JpdGUgZXJyb3IgY29kZXMuDQorI2RlZmluZSBGQUNJTElUWV9EV1JJVEUgMHg4OTgNCisjZGVmaW5lIERXUklURV9FUlJfQkFTRSAweDUwMDANCisjZGVmaW5lIE1BS0VfRFdSSVRFX0hSKHNldmVyaXR5LCBjb2RlKSBNQUtFX0hSRVNVTFQoc2V2ZXJpdHksIEZBQ0lMSVRZX0RXUklURSwgKERXUklURV9FUlJfQkFTRSArIGNvZGUpKQ0KKyNkZWZpbmUgTUFLRV9EV1JJVEVfSFJfRVJSKGNvZGUpIE1BS0VfRFdSSVRFX0hSKFNFVkVSSVRZX0VSUk9SLCBjb2RlKQ0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gSW5kaWNhdGVzIGFuIGVycm9yIGluIGFuIGlucHV0IGZpbGUgc3VjaCBhcyBhIGZvbnQgZmlsZS4NCisvLy8gPC9zdW1tYXJ5Pg0KKyNkZWZpbmUgRFdSSVRFX0VfRklMRUZPUk1BVCAgICAgICAgICAgICBNQUtFX0RXUklURV9IUl9FUlIoMHgwMDApDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBJbmRpY2F0ZXMgYW4gZXJyb3Igb3JpZ2luYXRpbmcgaW4gRGlyZWN0V3JpdGUgY29kZSwgd2hpY2ggaXMgbm90IGV4cGVjdGVkIHRvIG9jY3VyIGJ1dCBpcyBzYWZlIHRvIHJlY292ZXIgZnJvbS4NCisvLy8gPC9zdW1tYXJ5Pg0KKyNkZWZpbmUgRFdSSVRFX0VfVU5FWFBFQ1RFRCAgICAgICAgICAgICBNQUtFX0RXUklURV9IUl9FUlIoMHgwMDEpDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBJbmRpY2F0ZXMgdGhlIHNwZWNpZmllZCBmb250IGRvZXMgbm90IGV4aXN0Lg0KKy8vLyA8L3N1bW1hcnk+DQorI2RlZmluZSBEV1JJVEVfRV9OT0ZPTlQgICAgICAgICAgICAgICAgIE1BS0VfRFdSSVRFX0hSX0VSUigweDAwMikNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIEEgZm9udCBmaWxlIGNvdWxkIG5vdCBiZSBvcGVuZWQgYmVjYXVzZSB0aGUgZmlsZSwgZGlyZWN0b3J5LCBuZXR3b3JrIGxvY2F0aW9uLCBkcml2ZSwgb3Igb3RoZXIgc3RvcmFnZQ0KKy8vLyBsb2NhdGlvbiBkb2VzIG5vdCBleGlzdCBvciBpcyB1bmF2YWlsYWJsZS4NCisvLy8gPC9zdW1tYXJ5Pg0KKyNkZWZpbmUgRFdSSVRFX0VfRklMRU5PVEZPVU5EICAgICAgICAgICBNQUtFX0RXUklURV9IUl9FUlIoMHgwMDMpDQorDQorLy8vIDxzdW1tYXJ5Pg0KKy8vLyBBIGZvbnQgZmlsZSBleGlzdHMgYnV0IGNvdWxkIG5vdCBiZSBvcGVuZWQgZHVlIHRvIGFjY2VzcyBkZW5pZWQsIHNoYXJpbmcgdmlvbGF0aW9uLCBvciBzaW1pbGFyIGVycm9yLg0KKy8vLyA8L3N1bW1hcnk+DQorI2RlZmluZSBEV1JJVEVfRV9GSUxFQUNDRVNTICAgICAgICAgICAgIE1BS0VfRFdSSVRFX0hSX0VSUigweDAwNCkNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIEEgZm9udCBjb2xsZWN0aW9uIGlzIG9ic29sZXRlIGR1ZSB0byBjaGFuZ2VzIGluIHRoZSBzeXN0ZW0uDQorLy8vIDwvc3VtbWFyeT4NCisjZGVmaW5lIERXUklURV9FX0ZPTlRDT0xMRUNUSU9OT0JTT0xFVEUgTUFLRV9EV1JJVEVfSFJfRVJSKDB4MDA1KQ0KKw0KKy8vLyA8c3VtbWFyeT4NCisvLy8gVGhlIGdpdmVuIGludGVyZmFjZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQorLy8vIDwvc3VtbWFyeT4NCisjZGVmaW5lIERXUklURV9FX0FMUkVBRFlSRUdJU1RFUkVEICAgICAgTUFLRV9EV1JJVEVfSFJfRVJSKDB4MDA2KQ0KKw0KKyNlbmRpZiAvKiBEV1JJVEVfSF9JTkNMVURFRCAqLw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0Rjb21tb24uaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0Rjb21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmM5MDFhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvRGNvbW1vbi5oCkBAIC0wLDAgKzEsNjUgQEAKKy8vKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCisvLyAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vDQorLy8gIEFic3RyYWN0Og0KKy8vICAgICBQdWJsaWMgQVBJIGRlZmluaXRpb25zIGZvciBEV3JpdGUgYW5kIEQyRA0KKy8vDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorI2lmbmRlZiBEQ09NTU9OX0hfSU5DTFVERUQNCisjZGVmaW5lIERDT01NT05fSF9JTkNMVURFRA0KKw0KKy8vDQorLy9UaGVzZSBtYWNyb3MgYXJlIGRlZmluZWQgaW4gdGhlIFdpbmRvd3MgNyBTREssIGhvd2V2ZXIgdG8gZW5hYmxlIGRldmVsb3BtZW50IHVzaW5nIHRoZSB0ZWNobmljYWwgcHJldmlldywNCisvL3RoZXkgYXJlIGluY2x1ZGVkIGhlcmUgdGVtcG9yYXJpbHkuDQorLy8NCisjaWZuZGVmIERFRklORV9FTlVNX0ZMQUdfT1BFUkFUT1JTIA0KKyNkZWZpbmUgREVGSU5FX0VOVU1fRkxBR19PUEVSQVRPUlMoRU5VTVRZUEUpIFwNCitleHRlcm4gIkMrKyIgeyBcDQoraW5saW5lIEVOVU1UWVBFIG9wZXJhdG9yIHwgKEVOVU1UWVBFIGEsIEVOVU1UWVBFIGIpIHsgcmV0dXJuIEVOVU1UWVBFKCgoaW50KWEpIHwgKChpbnQpYikpOyB9IFwNCitpbmxpbmUgRU5VTVRZUEUgJm9wZXJhdG9yIHw9IChFTlVNVFlQRSAmYSwgRU5VTVRZUEUgYikgeyByZXR1cm4gKEVOVU1UWVBFICYpKCgoaW50ICYpYSkgfD0gKChpbnQpYikpOyB9IFwNCitpbmxpbmUgRU5VTVRZUEUgb3BlcmF0b3IgJiAoRU5VTVRZUEUgYSwgRU5VTVRZUEUgYikgeyByZXR1cm4gRU5VTVRZUEUoKChpbnQpYSkgJiAoKGludCliKSk7IH0gXA0KK2lubGluZSBFTlVNVFlQRSAmb3BlcmF0b3IgJj0gKEVOVU1UWVBFICZhLCBFTlVNVFlQRSBiKSB7IHJldHVybiAoRU5VTVRZUEUgJikoKChpbnQgJilhKSAmPSAoKGludCliKSk7IH0gXA0KK2lubGluZSBFTlVNVFlQRSBvcGVyYXRvciB+IChFTlVNVFlQRSBhKSB7IHJldHVybiBFTlVNVFlQRSh+KChpbnQpYSkpOyB9IFwNCitpbmxpbmUgRU5VTVRZUEUgb3BlcmF0b3IgXiAoRU5VTVRZUEUgYSwgRU5VTVRZUEUgYikgeyByZXR1cm4gRU5VTVRZUEUoKChpbnQpYSkgXiAoKGludCliKSk7IH0gXA0KK2lubGluZSBFTlVNVFlQRSAmb3BlcmF0b3IgXj0gKEVOVU1UWVBFICZhLCBFTlVNVFlQRSBiKSB7IHJldHVybiAoRU5VTVRZUEUgJikoKChpbnQgJilhKSBePSAoKGludCliKSk7IH0gXA0KK30NCisjZW5kaWYNCisNCisjaWZuZGVmIF9fZmllbGRfZWNvdW50X29wdA0KKyNkZWZpbmUgX19maWVsZF9lY291bnRfb3B0KHgpDQorI2VuZGlmDQorDQorI2lmbmRlZiBfX3JhbmdlDQorI2RlZmluZSBfX3JhbmdlKHgseSkgDQorI2VuZGlmDQorDQorI2lmbmRlZiBfX2ZpZWxkX2Vjb3VudA0KKyNkZWZpbmUgX19maWVsZF9lY291bnQoeCkNCisjZW5kaWYNCisNCisvLy8gPHN1bW1hcnk+DQorLy8vIFRoZSBtZWFzdXJpbmcgbWV0aG9kIHVzZWQgZm9yIHRleHQgbGF5b3V0Lg0KKy8vLyA8L3N1bW1hcnk+DQordHlwZWRlZiBlbnVtIERXUklURV9NRUFTVVJJTkdfTU9ERQ0KK3sNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGV4dCBpcyBtZWFzdXJlZCB1c2luZyBnbHlwaCBpZGVhbCBtZXRyaWNzIHdob3NlIHZhbHVlcyBhcmUgaW5kZXBlbmRlbnQgdG8gdGhlIGN1cnJlbnQgZGlzcGxheSByZXNvbHV0aW9uLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfTUVBU1VSSU5HX01PREVfTkFUVVJBTCwNCisNCisgICAgLy8vIDxzdW1tYXJ5Pg0KKyAgICAvLy8gVGV4dCBpcyBtZWFzdXJlZCB1c2luZyBnbHlwaCBkaXNwbGF5IGNvbXBhdGlibGUgbWV0cmljcyB3aG9zZSB2YWx1ZXMgdHVuZWQgZm9yIHRoZSBjdXJyZW50IGRpc3BsYXkgcmVzb2x1dGlvbi4NCisgICAgLy8vIDwvc3VtbWFyeT4NCisgICAgRFdSSVRFX01FQVNVUklOR19NT0RFX0dESV9DTEFTU0lDLA0KKw0KKyAgICAvLy8gPHN1bW1hcnk+DQorICAgIC8vLyBUZXh0IGlzIG1lYXN1cmVkIHVzaW5nIHRoZSBzYW1lIGdseXBoIGRpc3BsYXkgbWV0cmljcyBhcyB0ZXh0IG1lYXN1cmVkIGJ5IEdESSB1c2luZyBhIGZvbnQNCisgICAgLy8vIGNyZWF0ZWQgd2l0aCBDTEVBUlRZUEVfTkFUVVJBTF9RVUFMSVRZLg0KKyAgICAvLy8gPC9zdW1tYXJ5Pg0KKyAgICBEV1JJVEVfTUVBU1VSSU5HX01PREVfR0RJX05BVFVSQUwNCisNCit9IERXUklURV9NRUFTVVJJTkdfTU9ERTsNCisNCisjZW5kaWYgLyogRENPTU1PTl9IX0lOQ0xVREVEICovDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1cy5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMzkzZTcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzLmgKQEAgLTAsMCArMSwxNTYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqDQorKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwgTWljcm9zb2Z0IENvcnAuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyoNCisqIE1vZHVsZSBOYW1lOg0KKyoNCisqICAgR2RpcGx1cy5oDQorKg0KKyogQWJzdHJhY3Q6DQorKg0KKyogICBHREkrIE5hdGl2ZSBDKysgcHVibGljIGhlYWRlciBmaWxlDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9HRElQTFVTX0gNCisjZGVmaW5lIF9HRElQTFVTX0gNCisNCitzdHJ1Y3QgSURpcmVjdERyYXdTdXJmYWNlNzsNCisNCit0eXBlZGVmIHNpZ25lZCAgIHNob3J0ICAgSU5UMTY7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgVUlOVDE2Ow0KKw0KKyNpZm5kZWYgRENSX1JFTU9WRV9JTlRFUk5BTA0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTA1NzYwDQorICNkZWZpbmUgRENSX1VTRV9ORVdfMTA1NzYwDQorI2VuZGlmDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xMjcwODQNCisgI2RlZmluZSBEQ1JfVVNFX05FV18xMjcwODQNCisjZW5kaWYNCisjaWZuZGVmIERDUl9VU0VfTkVXXzEzNTQyOQ0KKyAjZGVmaW5lIERDUl9VU0VfTkVXXzEzNTQyOQ0KKyNlbmRpZg0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTQwNzgyDQorICNkZWZpbmUgRENSX1VTRV9ORVdfMTQwNzgyDQorI2VuZGlmDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xNDA4NTUNCisgI2RlZmluZSBEQ1JfVVNFX05FV18xNDA4NTUNCisjZW5kaWYNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE0MDg1Nw0KKyAjZGVmaW5lIERDUl9VU0VfTkVXXzE0MDg1Nw0KKyNlbmRpZg0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTQwODYxDQorICNkZWZpbmUgRENSX1VTRV9ORVdfMTQwODYxDQorI2VuZGlmDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xNDUxMzUNCisgI2RlZmluZSBEQ1JfVVNFX05FV18xNDUxMzUNCisjZW5kaWYNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE0NTEzOA0KKyAjZGVmaW5lIERDUl9VU0VfTkVXXzE0NTEzOA0KKyNlbmRpZg0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTQ1MTM5DQorICNkZWZpbmUgRENSX1VTRV9ORVdfMTQ1MTM5DQorI2VuZGlmDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xNDU4MDQNCisgI2RlZmluZSBEQ1JfVVNFX05FV18xNDU4MDQNCisjZW5kaWYNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE0NjkzMw0KKyAjZGVmaW5lIERDUl9VU0VfTkVXXzE0NjkzMw0KKyNlbmRpZg0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTUyMTU0DQorICNkZWZpbmUgRENSX1VTRV9ORVdfMTUyMTU0DQorI2VuZGlmDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xNzU4NjYNCisgI2RlZmluZSBEQ1JfVVNFX05FV18xNzU4NjYNCisjZW5kaWYNCisNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE4ODkyMg0KKyAjZGVmaW5lIERDUl9VU0VfTkVXXzE4ODkyMg0KKyNlbmRpZg0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTM3MjUyDQorICNkZWZpbmUgRENSX1VTRV9ORVdfMTM3MjUyDQorI2VuZGlmDQorI2lmbmRlZiBEQ1JfVVNFX05FV18yMDI5MDMNCisgI2RlZmluZSBEQ1JfVVNFX05FV18yMDI5MDMNCisjZW5kaWYNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE5NzgxOQ0KKyAjZGVmaW5lIERDUl9VU0VfTkVXXzE5NzgxOQ0KKyNlbmRpZg0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTg2MDkxDQorICNkZWZpbmUgRENSX1VTRV9ORVdfMTg2MDkxDQorI2VuZGlmDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xMjU0NjcNCisgI2RlZmluZSBEQ1JfVVNFX05FV18xMjU0NjcNCisjZW5kaWYNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE2ODc3Mg0KKyAjZGVmaW5lIERDUl9VU0VfTkVXXzE2ODc3Mg0KKyNlbmRpZg0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTg2NzY0IA0KKyAjZGVmaW5lIERDUl9VU0VfTkVXXzE4Njc2NCANCisjZW5kaWYNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE3NDM0MA0KKyAjZGVmaW5lIERDUl9VU0VfTkVXXzE3NDM0MA0KKyNlbmRpZg0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTg2MTUxDQorICNkZWZpbmUgRENSX1VTRV9ORVdfMTg2MTUxDQorI2VuZGlmDQorDQorI2lmbmRlZiBEQ1JfVVNFX05FV18yMzUwNzINCisgI2RlZmluZSBEQ1JfVVNFX05FV18yMzUwNzINCisjZW5kaWYNCisNCisjZW5kaWYgLy8gRENSX1JFTU9WRV9JTlRFUk5BTA0KKw0KK25hbWVzcGFjZSBHZGlwbHVzDQorew0KKyAgICBuYW1lc3BhY2UgRGxsRXhwb3J0cw0KKyAgICB7DQorICAgICAgICAjaW5jbHVkZSAiR2RpcGx1c01lbS5oIg0KKyAgICB9Ow0KKw0KKyAgICAjaW5jbHVkZSAiR2RpcGx1c0Jhc2UuaCINCisNCisgICAgLy8gVGhlIGZvbGxvd2luZyBoZWFkZXJzIGFyZSB1c2VkIGludGVybmFsbHkgYXMgd2VsbA0KKyAgICAjaW5jbHVkZSAiR2RpcGx1c0VudW1zLmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzVHlwZXMuaCINCisgICAgI2luY2x1ZGUgIkdkaXBsdXNJbml0LmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzUGl4ZWxGb3JtYXRzLmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzQ29sb3IuaCINCisgICAgI2luY2x1ZGUgIkdkaXBsdXNNZXRhSGVhZGVyLmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzSW1hZ2luZy5oIg0KKyAgICAjaW5jbHVkZSAiR2RpcGx1c0NvbG9yTWF0cml4LmgiDQorDQorICAgIC8vIFRoZSByZXN0IG9mIHRoZXNlIGFyZSB1c2VkIG9ubHkgYnkgdGhlIGFwcGxpY2F0aW9uDQorDQorICAgICNpbmNsdWRlICJHZGlwbHVzR3BTdHVicy5oIg0KKyAgICAjaW5jbHVkZSAiR2RpcGx1c0hlYWRlcnMuaCINCisNCisgICAgbmFtZXNwYWNlIERsbEV4cG9ydHMNCisgICAgew0KKyAgICAgICAgI2luY2x1ZGUgIkdkaXBsdXNGbGF0LmgiDQorICAgIH07DQorDQorDQorICAgICNpbmNsdWRlICJHZGlwbHVzSW1hZ2VBdHRyaWJ1dGVzLmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzTWF0cml4LmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzQnJ1c2guaCINCisgICAgI2luY2x1ZGUgIkdkaXBsdXNQZW4uaCINCisgICAgI2luY2x1ZGUgIkdkaXBsdXNTdHJpbmdGb3JtYXQuaCINCisgICAgI2luY2x1ZGUgIkdkaXBsdXNQYXRoLmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzTGluZUNhcHMuaCINCisgICAgI2luY2x1ZGUgIkdkaXBsdXNNZXRhZmlsZS5oIg0KKyAgICAjaW5jbHVkZSAiR2RpcGx1c0dyYXBoaWNzLmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzQ2FjaGVkQml0bWFwLmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzUmVnaW9uLmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzRm9udENvbGxlY3Rpb24uaCINCisgICAgI2luY2x1ZGUgIkdkaXBsdXNGb250RmFtaWx5LmgiDQorICAgICNpbmNsdWRlICJHZGlwbHVzRm9udC5oIg0KKyAgICAjaW5jbHVkZSAiR2RpcGx1c0JpdG1hcC5oIg0KKyAgICAjaW5jbHVkZSAiR2RpcGx1c0ltYWdlQ29kZWMuaCINCisNCit9OyAvLyBuYW1lc3BhY2UgR2RpcGx1cw0KKw0KKw0KKw0KKyNlbmRpZiAvLyAhX0dESVBMVVNfSFBQDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0Jhc2UuaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBhOTc3ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNCYXNlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXA0KKyoNCisqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLCBNaWNyb3NvZnQgQ29ycC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzQmFzZS5oDQorKg0KKyogQWJzdHJhY3Q6DQorKg0KKyogICBSZXByZXNlbnRzIHRoZSBiYXNlIGNsYXNzIGZvciBHRElQbHVzIG1lbW9yeSBhbGxvY2F0aW9uLiANCisqDQorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0dESVBMVVNCQVNFX0gNCisjZGVmaW5lIF9HRElQTFVTQkFTRV9IDQorDQorY2xhc3MgR2RpcGx1c0Jhc2UNCit7DQorcHVibGljOg0KKyAgICB2b2lkIChvcGVyYXRvciBkZWxldGUpKHZvaWQqIGluX3BWb2lkKQ0KKyAgICB7DQorICAgICAgIERsbEV4cG9ydHM6OkdkaXBGcmVlKGluX3BWb2lkKTsNCisgICAgfQ0KKyAgICB2b2lkKiAob3BlcmF0b3IgbmV3KShzaXplX3QgaW5fc2l6ZSkNCisgICAgew0KKyAgICAgICByZXR1cm4gRGxsRXhwb3J0czo6R2RpcEFsbG9jKGluX3NpemUpOw0KKyAgICB9DQorICAgIHZvaWQgKG9wZXJhdG9yIGRlbGV0ZVtdKSh2b2lkKiBpbl9wVm9pZCkNCisgICAgew0KKyAgICAgICBEbGxFeHBvcnRzOjpHZGlwRnJlZShpbl9wVm9pZCk7DQorICAgIH0NCisgICAgdm9pZCogKG9wZXJhdG9yIG5ld1tdKShzaXplX3QgaW5fc2l6ZSkNCisgICAgew0KKyAgICAgICByZXR1cm4gRGxsRXhwb3J0czo6R2RpcEFsbG9jKGluX3NpemUpOw0KKyAgICB9DQorfTsNCisNCisjZW5kaWYgDQorDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0JpdG1hcC5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0JpdG1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZTAwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzQml0bWFwLmgKQEAgLTAsMCArMSwxMDA0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKg0KKyogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqDQorKiAgIEdkaXBsdXNCaXRtYXAuaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgQml0bWFwIHJlbGF0ZWQgZGVjbGFyYXRpb25zDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9HRElQTFVTQklUTUFQX0gNCisjZGVmaW5lIF9HRElQTFVTQklUTUFQX0gNCisNCisvLyBOT1RFOg0KKy8vICBPdXIgY3VycmVudCBjaG9pY2UgZm9yIHRoZSBwdWJsaWMgQVBJIGlzIHRvIHVzZSBjb25zdHJ1Y3RvcnMNCisvLyAgaW5zdGVhZCBvZiBzdGF0aWMgbG9hZCBmdW5jdGlvbnMgdG8gY3JlYXRlIGltYWdlIG9iamVjdHMuDQorLy8NCisvLyAgSSd2ZSBrZXB0IHRoZSBzdGF0aWMgbG9hZCBmdW5jdGlvbnMgaGVyZSBmb3Igbm93IHNvIHRoYXQNCisvLyAgZXhpc3RpbmcgdGVzdCBwcm9ncmFtcyBhcmUgbm90IGJyb2tlbi4gQnV0IHRoZXkgc2hvdWxkDQorLy8gIGV2ZW50dWFsbHkgYmUgdGFrZW4gb3V0Lg0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTQwNzgyDQorDQoraW5saW5lIA0KK0ltYWdlOjpJbWFnZSgNCisgICAgSU4gY29uc3QgV0NIQVIqIGZpbGVuYW1lDQorICAgICkNCit7DQorICAgIG5hdGl2ZUltYWdlID0gTlVMTDsNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBMb2FkSW1hZ2VGcm9tRmlsZShmaWxlbmFtZSwgJm5hdGl2ZUltYWdlKTsNCit9DQorDQoraW5saW5lIA0KK0ltYWdlOjpJbWFnZSgNCisgICAgSU4gSVN0cmVhbSogc3RyZWFtDQorICAgICkNCit7DQorICAgIG5hdGl2ZUltYWdlID0gTlVMTDsNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBMb2FkSW1hZ2VGcm9tU3RyZWFtKHN0cmVhbSwgJm5hdGl2ZUltYWdlKTsNCit9DQorDQoraW5saW5lIEltYWdlKiANCitJbWFnZTo6RnJvbUZpbGUoDQorICAgIElOIGNvbnN0IFdDSEFSKiBmaWxlbmFtZQ0KKyAgICApDQorew0KKyAgICByZXR1cm4gbmV3IEltYWdlKGZpbGVuYW1lKTsNCit9DQorDQoraW5saW5lIEltYWdlKg0KK0ltYWdlOjpGcm9tU3RyZWFtKA0KKyAgICBJTiBJU3RyZWFtKiBzdHJlYW0NCisgICAgKQ0KK3sNCisgICAgcmV0dXJuIG5ldyBJbWFnZShzdHJlYW0pOw0KK30NCisNCisjZWxzZQ0KKw0KK2lubGluZSANCitJbWFnZTo6SW1hZ2UoDQorICAgIElOIGNvbnN0IFdDSEFSKiBmaWxlbmFtZSwNCisgICAgSU4gQk9PTCB1c2VFbWJlZGRlZENvbG9yTWFuYWdlbWVudA0KKyAgICApDQorew0KKyAgICBuYXRpdmVJbWFnZSA9IE5VTEw7DQorICAgIGlmKHVzZUVtYmVkZGVkQ29sb3JNYW5hZ2VtZW50KQ0KKyAgICB7DQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcExvYWRJbWFnZUZyb21GaWxlSUNNKA0KKyAgICAgICAgICAgIGZpbGVuYW1lLCANCisgICAgICAgICAgICAmbmF0aXZlSW1hZ2UNCisgICAgICAgICk7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7ICAgICAgDQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcExvYWRJbWFnZUZyb21GaWxlKA0KKyAgICAgICAgICAgIGZpbGVuYW1lLCANCisgICAgICAgICAgICAmbmF0aXZlSW1hZ2UNCisgICAgICAgICk7DQorICAgIH0NCit9DQorDQoraW5saW5lIA0KK0ltYWdlOjpJbWFnZSgNCisgICAgSU4gSVN0cmVhbSogc3RyZWFtLA0KKyAgICBJTiBCT09MIHVzZUVtYmVkZGVkQ29sb3JNYW5hZ2VtZW50DQorICAgICkNCit7DQorICAgIG5hdGl2ZUltYWdlID0gTlVMTDsNCisgICAgaWYodXNlRW1iZWRkZWRDb2xvck1hbmFnZW1lbnQpDQorICAgIHsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwTG9hZEltYWdlRnJvbVN0cmVhbUlDTSgNCisgICAgICAgICAgICBzdHJlYW0sIA0KKyAgICAgICAgICAgICZuYXRpdmVJbWFnZQ0KKyAgICAgICAgKTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwTG9hZEltYWdlRnJvbVN0cmVhbSgNCisgICAgICAgICAgICBzdHJlYW0sIA0KKyAgICAgICAgICAgICZuYXRpdmVJbWFnZQ0KKyAgICAgICAgKTsNCisgICAgfQ0KK30NCisNCitpbmxpbmUgSW1hZ2UqIA0KK0ltYWdlOjpGcm9tRmlsZSgNCisgICAgSU4gY29uc3QgV0NIQVIqIGZpbGVuYW1lLA0KKyAgICBJTiBCT09MIHVzZUVtYmVkZGVkQ29sb3JNYW5hZ2VtZW50DQorICAgICkNCit7DQorICAgIHJldHVybiBuZXcgSW1hZ2UoDQorICAgICAgICBmaWxlbmFtZSwgDQorICAgICAgICB1c2VFbWJlZGRlZENvbG9yTWFuYWdlbWVudA0KKyAgICApOw0KK30NCisNCitpbmxpbmUgSW1hZ2UqDQorSW1hZ2U6OkZyb21TdHJlYW0oDQorICAgIElOIElTdHJlYW0qIHN0cmVhbSwNCisgICAgSU4gQk9PTCB1c2VFbWJlZGRlZENvbG9yTWFuYWdlbWVudA0KKyAgICApDQorew0KKyAgICByZXR1cm4gbmV3IEltYWdlKA0KKyAgICAgICAgc3RyZWFtLA0KKyAgICAgICAgdXNlRW1iZWRkZWRDb2xvck1hbmFnZW1lbnQNCisgICAgKTsNCit9DQorDQorI2VuZGlmDQorDQoraW5saW5lIA0KK0ltYWdlOjp+SW1hZ2UoKQ0KK3sNCisgICAgRGxsRXhwb3J0czo6R2RpcERpc3Bvc2VJbWFnZShuYXRpdmVJbWFnZSk7DQorfQ0KKw0KK2lubGluZSBJbWFnZSogDQorSW1hZ2U6OkNsb25lKCkgDQorew0KKyAgICBHcEltYWdlICpjbG9uZWltYWdlID0gTlVMTDsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDbG9uZUltYWdlKG5hdGl2ZUltYWdlLCAmY2xvbmVpbWFnZSkpOw0KKw0KKyAgICByZXR1cm4gbmV3IEltYWdlKGNsb25laW1hZ2UsIGxhc3RSZXN1bHQpOw0KK30NCisNCisvLyBFbmNvcmRlciBQYXJhbWV0ZXINCisNCitpbmxpbmUgVUlOVA0KK0ltYWdlOjpHZXRFbmNvZGVyUGFyYW1ldGVyTGlzdFNpemUoDQorICAgIElOIGNvbnN0IENMU0lEKiBjbHNpZEVuY29kZXINCisgICAgKSANCit7DQorICAgIFVJTlQgc2l6ZSA9IDA7DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0RW5jb2RlclBhcmFtZXRlckxpc3RTaXplKG5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHNpZEVuY29kZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplKSk7DQorICAgIHJldHVybiBzaXplOw0KK30NCisNCitpbmxpbmUgU3RhdHVzDQorSW1hZ2U6OkdldEVuY29kZXJQYXJhbWV0ZXJMaXN0KA0KKyAgICBJTiBjb25zdCBDTFNJRCogY2xzaWRFbmNvZGVyLA0KKyAgICBJTiBVSU5UIHNpemUsDQorICAgIE9VVCBFbmNvZGVyUGFyYW1ldGVycyogYnVmZmVyDQorICAgICkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEVuY29kZXJQYXJhbWV0ZXJMaXN0KG5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHNpZEVuY29kZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcikpOw0KK30NCisNCisvLyBTYXZlIGltYWdlcw0KKw0KK2lubGluZSBTdGF0dXMNCitJbWFnZTo6U2F2ZSgNCisgICAgSU4gY29uc3QgV0NIQVIqIGZpbGVuYW1lLA0KKyAgICBJTiBjb25zdCBDTFNJRCogY2xzaWRFbmNvZGVyLA0KKyAgICBJTiBjb25zdCBFbmNvZGVyUGFyYW1ldGVycyAqZW5jb2RlclBhcmFtcw0KKyAgICApDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTYXZlSW1hZ2VUb0ZpbGUobmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc2lkRW5jb2RlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJQYXJhbXMpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cw0KK0ltYWdlOjpTYXZlKA0KKyAgICBJTiBJU3RyZWFtKiBzdHJlYW0sDQorICAgIElOIGNvbnN0IENMU0lEKiBjbHNpZEVuY29kZXIsDQorICAgIElOIGNvbnN0IEVuY29kZXJQYXJhbWV0ZXJzICplbmNvZGVyUGFyYW1zDQorICAgICkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNhdmVJbWFnZVRvU3RyZWFtKG5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsc2lkRW5jb2RlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlclBhcmFtcykpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzDQorSW1hZ2U6OlNhdmVBZGQoDQorICAgIElOIGNvbnN0IEVuY29kZXJQYXJhbWV0ZXJzICplbmNvZGVyUGFyYW1zDQorICAgICkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNhdmVBZGQobmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlclBhcmFtcykpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzDQorSW1hZ2U6OlNhdmVBZGQoDQorICAgIElOIEltYWdlKiBuZXdJbWFnZSwNCisgICAgSU4gY29uc3QgRW5jb2RlclBhcmFtZXRlcnMgKmVuY29kZXJQYXJhbXMNCisgICAgKQ0KK3sNCisgICAgaWYgKCBuZXdJbWFnZSA9PSBOVUxMICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhJbnZhbGlkUGFyYW1ldGVyKTsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTYXZlQWRkSW1hZ2UobmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbWFnZS0+bmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyUGFyYW1zKSk7DQorfQ0KKw0KKy8vIEdldCBzaXplIGFuZCB0eXBlIGluZm9ybWF0aW9uDQoraW5saW5lIEltYWdlVHlwZSANCitJbWFnZTo6R2V0VHlwZSgpIGNvbnN0DQorew0KKyAgICBJbWFnZVR5cGUgdHlwZSA9IEltYWdlVHlwZVVua25vd247DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0SW1hZ2VUeXBlKG5hdGl2ZUltYWdlLCAmdHlwZSkpOw0KKw0KKyAgICByZXR1cm4gdHlwZTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitJbWFnZTo6R2V0UGh5c2ljYWxEaW1lbnNpb24oDQorICAgIE9VVCBTaXplRiogc2l6ZQ0KKyAgICApIA0KK3sNCisgICAgaWYgKHNpemUgPT0gTlVMTCkgDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorICAgIH0NCisgICAgDQorICAgIFJFQUwgd2lkdGgsIGhlaWdodDsNCisgICAgU3RhdHVzIHN0YXR1czsNCisNCisgICAgc3RhdHVzID0gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRJbWFnZURpbWVuc2lvbihuYXRpdmVJbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd2lkdGgsICZoZWlnaHQpKTsNCisNCisgICAgc2l6ZS0+V2lkdGggID0gd2lkdGg7DQorICAgIHNpemUtPkhlaWdodCA9IGhlaWdodDsNCisNCisgICAgcmV0dXJuIHN0YXR1czsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitJbWFnZTo6R2V0Qm91bmRzKA0KKyAgICBPVVQgUmVjdEYgKnNyY1JlY3QsIA0KKyAgICBPVVQgVW5pdCAqc3JjVW5pdA0KKyAgICApDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRJbWFnZUJvdW5kcyhuYXRpdmVJbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUmVjdCwgc3JjVW5pdCkpOw0KK30NCisNCitpbmxpbmUgVUlOVCANCitJbWFnZTo6R2V0V2lkdGgoKQ0KK3sNCisgICAgVUlOVCB3aWR0aCA9IDA7DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0SW1hZ2VXaWR0aChuYXRpdmVJbWFnZSwgJndpZHRoKSk7DQorDQorICAgIHJldHVybiB3aWR0aDsNCit9DQorDQoraW5saW5lIFVJTlQgDQorSW1hZ2U6OkdldEhlaWdodCgpDQorew0KKyAgICBVSU5UIGhlaWdodCA9IDA7DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0SW1hZ2VIZWlnaHQobmF0aXZlSW1hZ2UsICZoZWlnaHQpKTsNCisNCisgICAgcmV0dXJuIGhlaWdodDsNCit9DQorDQoraW5saW5lIFJFQUwgDQorSW1hZ2U6OkdldEhvcml6b250YWxSZXNvbHV0aW9uKCkNCit7DQorICAgIFJFQUwgcmVzb2x1dGlvbiA9IDAuMGY7DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0SW1hZ2VIb3Jpem9udGFsUmVzb2x1dGlvbihuYXRpdmVJbWFnZSwgJnJlc29sdXRpb24pKTsNCisNCisgICAgcmV0dXJuIHJlc29sdXRpb247DQorfQ0KKw0KK2lubGluZSBSRUFMIA0KK0ltYWdlOjpHZXRWZXJ0aWNhbFJlc29sdXRpb24oKQ0KK3sNCisgICAgUkVBTCByZXNvbHV0aW9uID0gMC4wZjsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRJbWFnZVZlcnRpY2FsUmVzb2x1dGlvbihuYXRpdmVJbWFnZSwgJnJlc29sdXRpb24pKTsNCisNCisgICAgcmV0dXJuIHJlc29sdXRpb247DQorfQ0KKw0KK2lubGluZSBVSU5UIA0KK0ltYWdlOjpHZXRGbGFncygpDQorew0KKyAgICBVSU5UIGZsYWdzID0gMDsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRJbWFnZUZsYWdzKG5hdGl2ZUltYWdlLCAmZmxhZ3MpKTsNCisNCisgICAgcmV0dXJuIGZsYWdzOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0ltYWdlOjpHZXRSYXdGb3JtYXQoT1VUIEdVSUQgKmZvcm1hdCkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEltYWdlUmF3Rm9ybWF0KG5hdGl2ZUltYWdlLCBmb3JtYXQpKTsNCit9DQorDQoraW5saW5lIFBpeGVsRm9ybWF0IA0KK0ltYWdlOjpHZXRQaXhlbEZvcm1hdCgpDQorew0KKyAgICBQaXhlbEZvcm1hdCBmb3JtYXQ7DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0SW1hZ2VQaXhlbEZvcm1hdChuYXRpdmVJbWFnZSwgJmZvcm1hdCkpOw0KKw0KKyAgICByZXR1cm4gZm9ybWF0Ow0KK30NCisNCitpbmxpbmUgSU5UIA0KK0ltYWdlOjpHZXRQYWxldHRlU2l6ZSgpDQorew0KKyAgICBJTlQgc2l6ZSA9IDA7DQorICAgIA0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEltYWdlUGFsZXR0ZVNpemUobmF0aXZlSW1hZ2UsICZzaXplKSk7DQorICAgIA0KKyAgICByZXR1cm4gc2l6ZTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitJbWFnZTo6R2V0UGFsZXR0ZSgNCisgICAgT1VUIENvbG9yUGFsZXR0ZSAqcGFsZXR0ZSwNCisgICAgSU4gSU5UIHNpemUNCispDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRJbWFnZVBhbGV0dGUobmF0aXZlSW1hZ2UsIHBhbGV0dGUsIHNpemUpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitJbWFnZTo6U2V0UGFsZXR0ZSgNCisgICAgSU4gY29uc3QgQ29sb3JQYWxldHRlICpwYWxldHRlDQorICAgICkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEltYWdlUGFsZXR0ZShuYXRpdmVJbWFnZSwgcGFsZXR0ZSkpOw0KK30NCisNCisvLyBUaHVtYm5haWwgc3VwcG9ydA0KKw0KK2lubGluZSBJbWFnZSogDQorSW1hZ2U6OkdldFRodW1ibmFpbEltYWdlKA0KKyAgICBJTiBVSU5UIHRodW1iV2lkdGgsDQorICAgIElOIFVJTlQgdGh1bWJIZWlnaHQsDQorICAgIElOIEdldFRodW1ibmFpbEltYWdlQWJvcnQgY2FsbGJhY2ssDQorICAgIElOIFZPSUQqIGNhbGxiYWNrRGF0YQ0KKyAgICApDQorew0KKyAgICBHcEltYWdlICp0aHVtYmltYWdlID0gTlVMTDsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRJbWFnZVRodW1ibmFpbChuYXRpdmVJbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHVtYldpZHRoLCB0aHVtYkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGh1bWJpbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywgY2FsbGJhY2tEYXRhKSk7DQorDQorICAgIEltYWdlICpuZXdJbWFnZSA9IG5ldyBJbWFnZSh0aHVtYmltYWdlLCBsYXN0UmVzdWx0KTsNCisNCisgICAgaWYgKG5ld0ltYWdlID09IE5VTEwpIA0KKyAgICB7DQorICAgICAgICBEbGxFeHBvcnRzOjpHZGlwRGlzcG9zZUltYWdlKHRodW1iaW1hZ2UpOw0KKyAgICB9DQorDQorICAgIHJldHVybiBuZXdJbWFnZTsNCit9DQorDQorLy8gTXVsdGktZnJhbWUgc3VwcG9ydA0KK2lubGluZSBVSU5UIA0KK0ltYWdlOjpHZXRGcmFtZURpbWVuc2lvbnNDb3VudCgpDQorew0KKyAgICBVSU5UIGNvdW50ID0gMDsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJbWFnZUdldEZyYW1lRGltZW5zaW9uc0NvdW50KG5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb3VudCkpOw0KKw0KKyAgICByZXR1cm4gY291bnQ7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorSW1hZ2U6OkdldEZyYW1lRGltZW5zaW9uc0xpc3QoDQorICAgIE9VVCBHVUlEKiBkaW1lbnNpb25JRHMsIA0KKyAgICBJTiBVSU5UIGNvdW50DQorICAgICkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEltYWdlR2V0RnJhbWVEaW1lbnNpb25zTGlzdChuYXRpdmVJbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbklEcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorfQ0KKw0KK2lubGluZSBVSU5UIA0KK0ltYWdlOjpHZXRGcmFtZUNvdW50KA0KKyAgICBJTiBjb25zdCBHVUlEKiBkaW1lbnNpb25JRA0KKyAgICApDQorew0KKyAgICBVSU5UIGNvdW50ID0gMDsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJbWFnZUdldEZyYW1lQ291bnQobmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25JRCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb3VudCkpOw0KKyAgICByZXR1cm4gY291bnQ7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorSW1hZ2U6OlNlbGVjdEFjdGl2ZUZyYW1lKA0KKyAgICBJTiBjb25zdCBHVUlEICpkaW1lbnNpb25JRCwgDQorICAgIElOIFVJTlQgZnJhbWVJbmRleA0KKyAgICApDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJbWFnZVNlbGVjdEFjdGl2ZUZyYW1lKG5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbklELA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSW5kZXgpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cw0KK0ltYWdlOjpSb3RhdGVGbGlwKA0KKyAgICBJTiBSb3RhdGVGbGlwVHlwZSByb3RhdGVGbGlwVHlwZQ0KKyAgICApDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJbWFnZVJvdGF0ZUZsaXAobmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGVGbGlwVHlwZSkpOw0KK30NCisNCisvLyBJbWFnZSBwcm9wZXJ0eSByZWxhdGVkIGZ1bmN0aW9ucw0KKw0KK2lubGluZSBVSU5UIA0KK0ltYWdlOjpHZXRQcm9wZXJ0eUNvdW50KCkNCit7DQorICAgIFVJTlQgbnVtUHJvcGVydHkgPSAwOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFByb3BlcnR5Q291bnQobmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbnVtUHJvcGVydHkpKTsNCisNCisgICAgcmV0dXJuIG51bVByb3BlcnR5Ow0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0ltYWdlOjpHZXRQcm9wZXJ0eUlkTGlzdCgNCisgICAgSU4gVUlOVCBudW1PZlByb3BlcnR5LCANCisgICAgT1VUIFBST1BJRCogbGlzdA0KKyAgICApDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQcm9wZXJ0eUlkTGlzdChuYXRpdmVJbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtT2ZQcm9wZXJ0eSwgbGlzdCkpOw0KK30NCisgICAgDQoraW5saW5lIFVJTlQgDQorSW1hZ2U6OkdldFByb3BlcnR5SXRlbVNpemUoDQorICAgIElOIFBST1BJRCBwcm9wSWQNCisgICAgKQ0KK3sNCisgICAgVUlOVCBzaXplID0gMDsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQcm9wZXJ0eUl0ZW1TaXplKG5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcElkLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemUpKTsNCisNCisgICAgcmV0dXJuIHNpemU7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorSW1hZ2U6OkdldFByb3BlcnR5SXRlbSgNCisgICAgSU4gUFJPUElEIHByb3BJZCwgDQorICAgIElOIFVJTlQgcHJvcFNpemUsDQorICAgIE9VVCBQcm9wZXJ0eUl0ZW0qIGJ1ZmZlcg0KKyAgICApDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQcm9wZXJ0eUl0ZW0obmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wSWQsIHByb3BTaXplLCBidWZmZXIpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitJbWFnZTo6R2V0UHJvcGVydHlTaXplKA0KKyAgICBPVVQgVUlOVCogdG90YWxCdWZmZXJTaXplLCANCisgICAgT1VUIFVJTlQqIG51bVByb3BlcnRpZXMNCisgICAgKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UHJvcGVydHlTaXplKG5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxCdWZmZXJTaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtUHJvcGVydGllcykpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0ltYWdlOjpHZXRBbGxQcm9wZXJ0eUl0ZW1zKA0KKyAgICBJTiBVSU5UIHRvdGFsQnVmZmVyU2l6ZSwNCisgICAgSU4gVUlOVCBudW1Qcm9wZXJ0aWVzLA0KKyAgICBPVVQgUHJvcGVydHlJdGVtKiBhbGxJdGVtcw0KKyAgICApDQorew0KKyAgICBpZiAoYWxsSXRlbXMgPT0gTlVMTCkgDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorICAgIH0NCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0QWxsUHJvcGVydHlJdGVtcyhuYXRpdmVJbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEJ1ZmZlclNpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtUHJvcGVydGllcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxJdGVtcykpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0ltYWdlOjpSZW1vdmVQcm9wZXJ0eUl0ZW0oDQorICAgIElOIFBST1BJRCBwcm9wSWQNCisgICAgKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUmVtb3ZlUHJvcGVydHlJdGVtKG5hdGl2ZUltYWdlLCBwcm9wSWQpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitJbWFnZTo6U2V0UHJvcGVydHlJdGVtKA0KKyAgICBJTiBjb25zdCBQcm9wZXJ0eUl0ZW0qIGl0ZW0NCisgICAgKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UHJvcGVydHlJdGVtKG5hdGl2ZUltYWdlLCBpdGVtKSk7DQorfQ0KKw0KKy8vIEdldC9TZXRMYXlvdXQNCisvLyBTdXBwb3J0IGZvciBNaWRkbGUgRWFzdCBsb2NhbGl6YXRpb24gKHJpZ2h0LXRvLWxlZnQgbWlycm9yaW5nKQ0KKw0KK2lubGluZSBJbWFnZUxheW91dA0KK0ltYWdlOjpHZXRMYXlvdXQoKSBjb25zdA0KK3sNCisgICAgSW1hZ2VMYXlvdXQgbGF5b3V0Ow0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEltYWdlTGF5b3V0KG5hdGl2ZUltYWdlLCAmbGF5b3V0KSk7DQorDQorICAgIHJldHVybiBsYXlvdXQ7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMNCitJbWFnZTo6U2V0TGF5b3V0KElOIGNvbnN0IEltYWdlTGF5b3V0IGxheW91dCkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoDQorICAgICAgICBEbGxFeHBvcnRzOjpHZGlwU2V0SW1hZ2VMYXlvdXQobmF0aXZlSW1hZ2UsIGxheW91dCkNCisgICAgKTsNCit9DQorDQoraW5saW5lIFN0YXR1cw0KK0ltYWdlOjpHZXRMYXN0U3RhdHVzKCkgY29uc3QNCit7DQorICAgIFN0YXR1cyBsYXN0U3RhdHVzID0gbGFzdFJlc3VsdDsNCisgICAgbGFzdFJlc3VsdCA9IE9rOw0KKw0KKyAgICByZXR1cm4gbGFzdFN0YXR1czsNCit9DQorDQoraW5saW5lIA0KK0ltYWdlOjpJbWFnZShHcEltYWdlICpuYXRpdmVJbWFnZSwgU3RhdHVzIHN0YXR1cykNCit7DQorICAgIFNldE5hdGl2ZUltYWdlKG5hdGl2ZUltYWdlKTsNCisgICAgbGFzdFJlc3VsdCA9IHN0YXR1czsNCit9DQorDQoraW5saW5lIFZPSUQgDQorSW1hZ2U6OlNldE5hdGl2ZUltYWdlKEdwSW1hZ2UgKm5hdGl2ZUltYWdlKQ0KK3sNCisgICAgdGhpcy0+bmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZTsNCit9DQorDQoraW5saW5lIA0KK0JpdG1hcDo6Qml0bWFwKA0KKyAgICBJTiBjb25zdCBXQ0hBUiAqZmlsZW5hbWUsIA0KKyAgICBJTiBCT09MIHVzZUVtYmVkZGVkQ29sb3JNYW5hZ2VtZW50DQorICAgICkNCit7DQorICAgIEdwQml0bWFwICpiaXRtYXAgPSBOVUxMOw0KKw0KKyAgICBpZih1c2VFbWJlZGRlZENvbG9yTWFuYWdlbWVudCkgDQorICAgIHsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlQml0bWFwRnJvbUZpbGVJQ00oZmlsZW5hbWUsICZiaXRtYXApOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVCaXRtYXBGcm9tRmlsZShmaWxlbmFtZSwgJmJpdG1hcCk7DQorICAgIH0NCisNCisgICAgU2V0TmF0aXZlSW1hZ2UoYml0bWFwKTsNCit9DQorDQoraW5saW5lIA0KK0JpdG1hcDo6Qml0bWFwKA0KKyAgICBJTiBJU3RyZWFtICpzdHJlYW0sIA0KKyAgICBJTiBCT09MIHVzZUVtYmVkZGVkQ29sb3JNYW5hZ2VtZW50DQorICAgICkNCit7DQorICAgIEdwQml0bWFwICpiaXRtYXAgPSBOVUxMOw0KKw0KKyAgICBpZih1c2VFbWJlZGRlZENvbG9yTWFuYWdlbWVudCkNCisgICAgew0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVCaXRtYXBGcm9tU3RyZWFtSUNNKHN0cmVhbSwgJmJpdG1hcCk7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUJpdG1hcEZyb21TdHJlYW0oc3RyZWFtLCAmYml0bWFwKTsNCisgICAgfQ0KKw0KKyAgICBTZXROYXRpdmVJbWFnZShiaXRtYXApOw0KK30NCisNCitpbmxpbmUNCitCaXRtYXA6OkJpdG1hcCgNCisgICAgSU4gSU5UIHdpZHRoLA0KKyAgICBJTiBJTlQgaGVpZ2h0LA0KKyAgICBJTiBJTlQgc3RyaWRlLA0KKyAgICBJTiBQaXhlbEZvcm1hdCBmb3JtYXQsDQorICAgIElOIEJZVEUgKnNjYW4wDQorICAgICkNCit7DQorICAgIEdwQml0bWFwICpiaXRtYXAgPSBOVUxMOw0KKw0KKyAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUJpdG1hcEZyb21TY2FuMCh3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbjAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiaXRtYXApOw0KKw0KKyAgICBTZXROYXRpdmVJbWFnZShiaXRtYXApOw0KK30NCisNCitpbmxpbmUgDQorQml0bWFwOjpCaXRtYXAoDQorICAgIElOIElOVCB3aWR0aCwNCisgICAgSU4gSU5UIGhlaWdodCwNCisgICAgSU4gUGl4ZWxGb3JtYXQgZm9ybWF0DQorICAgICkNCit7DQorICAgIEdwQml0bWFwICpiaXRtYXAgPSBOVUxMOw0KKw0KKyAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUJpdG1hcEZyb21TY2FuMCh3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiaXRtYXApOw0KKw0KKyAgICBTZXROYXRpdmVJbWFnZShiaXRtYXApOw0KK30NCisNCitpbmxpbmUNCitCaXRtYXA6OkJpdG1hcCgNCisgICAgSU4gSU5UIHdpZHRoLCANCisgICAgSU4gSU5UIGhlaWdodCwgDQorICAgIElOIEdyYXBoaWNzKiB0YXJnZXQpDQorew0KKyAgICBHcEJpdG1hcCAqYml0bWFwID0gTlVMTDsNCisNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVCaXRtYXBGcm9tR3JhcGhpY3Mod2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5uYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJpdG1hcCk7DQorDQorICAgIFNldE5hdGl2ZUltYWdlKGJpdG1hcCk7DQorfQ0KKw0KK2lubGluZSANCitCaXRtYXA6OkJpdG1hcCgNCisgICAgSU4gSURpcmVjdERyYXdTdXJmYWNlNyAqIHN1cmZhY2UNCisgICAgKQ0KK3sNCisgICAgR3BCaXRtYXAgKmJpdG1hcCA9IE5VTEw7DQorDQorICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlQml0bWFwRnJvbURpcmVjdERyYXdTdXJmYWNlKHN1cmZhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiaXRtYXApOw0KKw0KKyAgICBTZXROYXRpdmVJbWFnZShiaXRtYXApOw0KK30NCisNCitpbmxpbmUgDQorQml0bWFwOjpCaXRtYXAoDQorICAgIElOIGNvbnN0IEJJVE1BUElORk8qIGdkaUJpdG1hcEluZm8sIA0KKyAgICBJTiBWT0lEKiBnZGlCaXRtYXBEYXRhDQorICAgICkNCit7DQorICAgIEdwQml0bWFwICpiaXRtYXAgPSBOVUxMOw0KKw0KKyAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUJpdG1hcEZyb21HZGlEaWIoZ2RpQml0bWFwSW5mbywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkaUJpdG1hcERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYml0bWFwKTsNCisNCisgICAgU2V0TmF0aXZlSW1hZ2UoYml0bWFwKTsNCit9DQorDQoraW5saW5lIA0KK0JpdG1hcDo6Qml0bWFwKA0KKyAgICBJTiBIQklUTUFQIGhibSwgDQorICAgIElOIEhQQUxFVFRFIGhwYWwNCisgICAgKQ0KK3sNCisgICAgR3BCaXRtYXAgKmJpdG1hcCA9IE5VTEw7DQorDQorICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlQml0bWFwRnJvbUhCSVRNQVAoaGJtLCBocGFsLCAmYml0bWFwKTsNCisNCisgICAgU2V0TmF0aXZlSW1hZ2UoYml0bWFwKTsNCit9DQorDQoraW5saW5lIA0KK0JpdG1hcDo6Qml0bWFwKA0KKyAgICBJTiBISUNPTiBoaWNvbg0KKyAgICApDQorew0KKyAgICBHcEJpdG1hcCAqYml0bWFwID0gTlVMTDsNCisNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVCaXRtYXBGcm9tSElDT04oaGljb24sICZiaXRtYXApOw0KKw0KKyAgICBTZXROYXRpdmVJbWFnZShiaXRtYXApOw0KK30NCisNCitpbmxpbmUgDQorQml0bWFwOjpCaXRtYXAoDQorICAgIElOIEhJTlNUQU5DRSBoSW5zdGFuY2UsIA0KKyAgICBJTiBjb25zdCBXQ0hBUiAqYml0bWFwTmFtZQ0KKyAgICApDQorew0KKyAgICBHcEJpdG1hcCAqYml0bWFwID0gTlVMTDsNCisNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVCaXRtYXBGcm9tUmVzb3VyY2UoaEluc3RhbmNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXBOYW1lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYml0bWFwKTsNCisNCisgICAgU2V0TmF0aXZlSW1hZ2UoYml0bWFwKTsNCit9DQorDQorDQoraW5saW5lIEJpdG1hcCogDQorQml0bWFwOjpGcm9tRmlsZSgNCisgICAgSU4gY29uc3QgV0NIQVIgKmZpbGVuYW1lLA0KKyAgICBJTiBCT09MIHVzZUVtYmVkZGVkQ29sb3JNYW5hZ2VtZW50DQorICAgICkNCit7DQorICAgIHJldHVybiBuZXcgQml0bWFwKA0KKyAgICAgICAgZmlsZW5hbWUsIA0KKyAgICAgICAgdXNlRW1iZWRkZWRDb2xvck1hbmFnZW1lbnQNCisgICAgKTsNCit9DQorDQoraW5saW5lIEJpdG1hcCogDQorQml0bWFwOjpGcm9tU3RyZWFtKA0KKyAgICBJTiBJU3RyZWFtICpzdHJlYW0sDQorICAgIElOIEJPT0wgdXNlRW1iZWRkZWRDb2xvck1hbmFnZW1lbnQNCisgICAgKQ0KK3sNCisgICAgcmV0dXJuIG5ldyBCaXRtYXAoDQorICAgICAgICBzdHJlYW0sIA0KKyAgICAgICAgdXNlRW1iZWRkZWRDb2xvck1hbmFnZW1lbnQNCisgICAgKTsNCit9DQorDQoraW5saW5lIEJpdG1hcCogDQorQml0bWFwOjpGcm9tRGlyZWN0RHJhd1N1cmZhY2U3KA0KKyAgICBJTiBJRGlyZWN0RHJhd1N1cmZhY2U3KiBzdXJmYWNlDQorICAgICkNCit7DQorICAgIHJldHVybiBuZXcgQml0bWFwKHN1cmZhY2UpOw0KK30NCisNCitpbmxpbmUgQml0bWFwKiANCitCaXRtYXA6OkZyb21CSVRNQVBJTkZPKA0KKyAgICBJTiBjb25zdCBCSVRNQVBJTkZPKiBnZGlCaXRtYXBJbmZvLCANCisgICAgSU4gVk9JRCogZ2RpQml0bWFwRGF0YSkNCit7DQorICAgIHJldHVybiBuZXcgQml0bWFwKGdkaUJpdG1hcEluZm8sIGdkaUJpdG1hcERhdGEpOw0KK30NCisNCitpbmxpbmUgQml0bWFwKiANCitCaXRtYXA6OkZyb21IQklUTUFQKA0KKyAgICBJTiBIQklUTUFQIGhibSwgDQorICAgIElOIEhQQUxFVFRFIGhwYWwNCisgICAgKQ0KK3sNCisgICAgcmV0dXJuIG5ldyBCaXRtYXAoaGJtLCBocGFsKTsNCit9DQorDQoraW5saW5lIEJpdG1hcCogDQorQml0bWFwOjpGcm9tSElDT04oDQorICAgIElOIEhJQ09OIGhpY29uDQorICAgICkNCit7DQorICAgIHJldHVybiBuZXcgQml0bWFwKGhpY29uKTsNCit9DQorDQoraW5saW5lIEJpdG1hcCogDQorQml0bWFwOjpGcm9tUmVzb3VyY2UoDQorICAgIElOIEhJTlNUQU5DRSBoSW5zdGFuY2UsIA0KKyAgICBJTiBjb25zdCBXQ0hBUiAqYml0bWFwTmFtZSkNCit7DQorICAgIHJldHVybiBuZXcgQml0bWFwKGhJbnN0YW5jZSwgYml0bWFwTmFtZSk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorQml0bWFwOjpHZXRIQklUTUFQKA0KKyAgICBJTiBjb25zdCBDb2xvciYgY29sb3JCYWNrZ3JvdW5kLA0KKyAgICBPVVQgSEJJVE1BUCogaGJtUmV0dXJuDQorICAgICkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENyZWF0ZUhCSVRNQVBGcm9tQml0bWFwKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcEJpdG1hcCo+KG5hdGl2ZUltYWdlKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGJtUmV0dXJuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvckJhY2tncm91bmQuR2V0VmFsdWUoKSkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0JpdG1hcDo6R2V0SElDT04oDQorICAgIE9VVCBISUNPTiogaGljb25SZXR1cm4NCisgICAgKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlSElDT05Gcm9tQml0bWFwKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcEJpdG1hcCo+KG5hdGl2ZUltYWdlKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGljb25SZXR1cm4pKTsNCit9DQorDQoraW5saW5lIEJpdG1hcCogDQorQml0bWFwOjpDbG9uZSgNCisgICAgSU4gY29uc3QgUmVjdCYgcmVjdCwNCisgICAgSU4gUGl4ZWxGb3JtYXQgZm9ybWF0DQorICAgICkNCit7DQorICAgIHJldHVybiBDbG9uZShyZWN0LlgsIHJlY3QuWSwgcmVjdC5XaWR0aCwgcmVjdC5IZWlnaHQsIGZvcm1hdCk7DQorfQ0KKw0KK2lubGluZSBCaXRtYXAqIA0KK0JpdG1hcDo6Q2xvbmUoDQorICAgIElOIElOVCB4LA0KKyAgICBJTiBJTlQgeSwNCisgICAgSU4gSU5UIHdpZHRoLA0KKyAgICBJTiBJTlQgaGVpZ2h0LA0KKyAgICBJTiBQaXhlbEZvcm1hdCBmb3JtYXQNCisgICAgKQ0KK3sNCisgICBHcEJpdG1hcCogZ3Bkc3RCaXRtYXAgPSBOVUxMOw0KKyAgIEJpdG1hcCogYml0bWFwOw0KKw0KKyAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ2xvbmVCaXRtYXBBcmVhSSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BCaXRtYXAgKiluYXRpdmVJbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdwZHN0Qml0bWFwKTsNCisNCisgICBpZiAobGFzdFJlc3VsdCA9PSBPaykNCisgICB7DQorICAgICAgIGJpdG1hcCA9IG5ldyBCaXRtYXAoZ3Bkc3RCaXRtYXApOw0KKw0KKyAgICAgICBpZiAoYml0bWFwID09IE5VTEwpIA0KKyAgICAgICB7DQorICAgICAgICAgICBEbGxFeHBvcnRzOjpHZGlwRGlzcG9zZUltYWdlKGdwZHN0Qml0bWFwKTsNCisgICAgICAgfQ0KKw0KKyAgICAgICByZXR1cm4gYml0bWFwOw0KKyAgIH0NCisgICBlbHNlDQorICAgICAgIHJldHVybiBOVUxMOw0KK30NCisNCitpbmxpbmUgQml0bWFwKiANCitCaXRtYXA6OkNsb25lKA0KKyAgICBJTiBjb25zdCBSZWN0RiYgcmVjdCwNCisgICAgSU4gUGl4ZWxGb3JtYXQgZm9ybWF0DQorICAgICkNCit7DQorICAgIHJldHVybiBDbG9uZShyZWN0LlgsIHJlY3QuWSwgcmVjdC5XaWR0aCwgcmVjdC5IZWlnaHQsIGZvcm1hdCk7DQorfQ0KKw0KK2lubGluZSBCaXRtYXAqDQorQml0bWFwOjpDbG9uZSgNCisgICAgSU4gUkVBTCB4LA0KKyAgICBJTiBSRUFMIHksDQorICAgIElOIFJFQUwgd2lkdGgsDQorICAgIElOIFJFQUwgaGVpZ2h0LA0KKyAgICBJTiBQaXhlbEZvcm1hdCBmb3JtYXQNCisgICAgKQ0KK3sNCisgICBHcEJpdG1hcCogZ3Bkc3RCaXRtYXAgPSBOVUxMOw0KKyAgIEJpdG1hcCogYml0bWFwOw0KKw0KKyAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ2xvbmVCaXRtYXBBcmVhKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHcEJpdG1hcCAqKW5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ3Bkc3RCaXRtYXApKTsNCisNCisgICBpZiAobGFzdFJlc3VsdCA9PSBPaykNCisgICB7DQorICAgICAgIGJpdG1hcCA9IG5ldyBCaXRtYXAoZ3Bkc3RCaXRtYXApOw0KKw0KKyAgICAgICBpZiAoYml0bWFwID09IE5VTEwpIA0KKyAgICAgICB7DQorICAgICAgICAgICBEbGxFeHBvcnRzOjpHZGlwRGlzcG9zZUltYWdlKGdwZHN0Qml0bWFwKTsNCisgICAgICAgfQ0KKw0KKyAgICAgICByZXR1cm4gYml0bWFwOw0KKyAgIH0NCisgICBlbHNlDQorICAgICAgIHJldHVybiBOVUxMOw0KK30NCisNCitpbmxpbmUgQml0bWFwOjpCaXRtYXAoR3BCaXRtYXAgKm5hdGl2ZUJpdG1hcCkNCit7DQorICAgIGxhc3RSZXN1bHQgPSBPazsNCisNCisgICAgU2V0TmF0aXZlSW1hZ2UobmF0aXZlQml0bWFwKTsNCit9DQorDQoraW5saW5lIFN0YXR1cw0KK0JpdG1hcDo6TG9ja0JpdHMoDQorICAgIElOIGNvbnN0IFJlY3QmIHJlY3QsDQorICAgIElOIFVJTlQgZmxhZ3MsDQorICAgIElOIFBpeGVsRm9ybWF0IGZvcm1hdCwNCisgICAgT1VUIEJpdG1hcERhdGEqIGxvY2tlZEJpdG1hcERhdGENCispDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBCaXRtYXBMb2NrQml0cygNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcEJpdG1hcCo+KG5hdGl2ZUltYWdlKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VkQml0bWFwRGF0YSkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0JpdG1hcDo6VW5sb2NrQml0cygNCisgICAgSU4gQml0bWFwRGF0YSogbG9ja2VkQml0bWFwRGF0YQ0KKyAgICApDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBCaXRtYXBVbmxvY2tCaXRzKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdwQml0bWFwKj4obmF0aXZlSW1hZ2UpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlZEJpdG1hcERhdGEpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitCaXRtYXA6OkdldFBpeGVsKA0KKyAgICBJTiBJTlQgeCwgDQorICAgIElOIElOVCB5LCANCisgICAgT1VUIENvbG9yICpjb2xvcikgDQorew0KKyAgICBBUkdCIGFyZ2I7DQorDQorICAgIFN0YXR1cyBzdGF0dXMgPSBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEJpdG1hcEdldFBpeGVsKA0KKyAgICAgICAgc3RhdGljX2Nhc3Q8R3BCaXRtYXAgKj4obmF0aXZlSW1hZ2UpLA0KKyAgICAgICAgeCwgeSwgICAgICAgIA0KKyAgICAgICAgJmFyZ2IpKTsNCisNCisgICAgaWYgKHN0YXR1cyA9PSBPaykgDQorICAgIHsNCisgICAgICAgIGNvbG9yLT5TZXRWYWx1ZShhcmdiKTsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gIHN0YXR1czsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitCaXRtYXA6OlNldFBpeGVsKA0KKyAgICBJTiBJTlQgeCwgDQorICAgIElOIElOVCB5LCANCisgICAgSU4gY29uc3QgQ29sb3ImIGNvbG9yKSANCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEJpdG1hcFNldFBpeGVsKA0KKyAgICAgICAgc3RhdGljX2Nhc3Q8R3BCaXRtYXAgKj4obmF0aXZlSW1hZ2UpLA0KKyAgICAgICAgeCwgeSwNCisgICAgICAgIGNvbG9yLkdldFZhbHVlKCkpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitCaXRtYXA6OlNldFJlc29sdXRpb24oDQorICAgIElOIFJFQUwgeGRwaSwgDQorICAgIElOIFJFQUwgeWRwaSkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEJpdG1hcFNldFJlc29sdXRpb24oDQorICAgICAgICBzdGF0aWNfY2FzdDxHcEJpdG1hcCAqPihuYXRpdmVJbWFnZSksDQorICAgICAgICB4ZHBpLCB5ZHBpKSk7DQorfQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNCcnVzaC5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0JydXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUwNmY4NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNCcnVzaC5oCkBAIC0wLDAgKzEsOTUxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKiANCisqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLCBNaWNyb3NvZnQgQ29ycC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzQnJ1c2guaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgQnJ1c2ggQVBJIHJlbGF0ZWQgZGVjbGFyYXRpb25zDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9HRElQTFVTQlJVU0hfSA0KKyNkZWZpbmUgX0dESVBMVVNCUlVTSF9IDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHZhcmlvdXMgYnJ1c2ggdHlwZXMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorY2xhc3MgR3JhcGhpY3NQYXRoOw0KKw0KK2NsYXNzIEJydXNoIDogcHVibGljIEdkaXBsdXNCYXNlDQorew0KK3B1YmxpYzoNCisgICAgZnJpZW5kIGNsYXNzIFBlbjsNCisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzOw0KKw0KKyAgICB2aXJ0dWFsIH5CcnVzaCgpDQorICAgIHsNCisgICAgICAgIERsbEV4cG9ydHM6OkdkaXBEZWxldGVCcnVzaChuYXRpdmVCcnVzaCk7DQorICAgIH0NCisNCisgICAgdmlydHVhbCBCcnVzaCogQ2xvbmUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBHcEJydXNoICpicnVzaCA9IE5VTEw7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENsb25lQnJ1c2gobmF0aXZlQnJ1c2gsICZicnVzaCkpOw0KKw0KKyAgICAgICAgQnJ1c2ggKm5ld0JydXNoID0gbmV3IEJydXNoKGJydXNoLCBsYXN0UmVzdWx0KTsNCisgICAgICAgIA0KKyAgICAgICAgaWYgKG5ld0JydXNoID09IE5VTEwpIA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIERsbEV4cG9ydHM6OkdkaXBEZWxldGVCcnVzaChicnVzaCk7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4gbmV3QnJ1c2g7DQorICAgIH0NCisNCisgICAgQnJ1c2hUeXBlIEdldFR5cGUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBCcnVzaFR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PEJydXNoVHlwZT4oLTEpOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRCcnVzaFR5cGUobmF0aXZlQnJ1c2gsICZ0eXBlKSk7DQorDQorICAgICAgICByZXR1cm4gdHlwZTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0TGFzdFN0YXR1cygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIFN0YXR1cyBsYXN0U3RhdHVzID0gbGFzdFJlc3VsdDsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBPazsNCisNCisgICAgICAgIHJldHVybiBsYXN0U3RhdHVzOw0KKyAgICB9DQorDQorcHJvdGVjdGVkOg0KKw0KKyAgICBCcnVzaCgpDQorICAgIHsNCisgICAgICAgIFNldFN0YXR1cyhOb3RJbXBsZW1lbnRlZCk7DQorICAgIH0NCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMjUwOTMyDQorDQorcHJpdmF0ZToNCisgICAgQnJ1c2goY29uc3QgQnJ1c2gmIGJydXNoKTsNCisgICAgQnJ1c2gmIG9wZXJhdG9yPShjb25zdCBCcnVzaCYgYnJ1c2gpOw0KK3Byb3RlY3RlZDoNCisNCisjZWxzZQ0KKw0KKyAgICBCcnVzaChjb25zdCBCcnVzaCYgYnJ1c2gpDQorICAgIHsNCisgICAgICAgIGJydXNoOw0KKyAgICAgICAgU2V0U3RhdHVzKE5vdEltcGxlbWVudGVkKTsNCisgICAgfQ0KKw0KKyAgICBCcnVzaCYgb3BlcmF0b3I9KGNvbnN0IEJydXNoJiBicnVzaCkNCisgICAgew0KKyAgICAgICAgYnJ1c2g7DQorICAgICAgICBTZXRTdGF0dXMoTm90SW1wbGVtZW50ZWQpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorI2VuZGlmDQorDQorICAgIEJydXNoKEdwQnJ1c2gqIG5hdGl2ZUJydXNoLCBTdGF0dXMgc3RhdHVzKQ0KKyAgICB7DQorICAgICAgICBsYXN0UmVzdWx0ID0gc3RhdHVzOw0KKyAgICAgICAgU2V0TmF0aXZlQnJ1c2gobmF0aXZlQnJ1c2gpOw0KKyAgICB9DQorDQorICAgIFZPSUQgU2V0TmF0aXZlQnJ1c2goR3BCcnVzaCogbmF0aXZlQnJ1c2gpDQorICAgIHsNCisgICAgICAgIHRoaXMtPm5hdGl2ZUJydXNoID0gbmF0aXZlQnJ1c2g7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldFN0YXR1cyhTdGF0dXMgc3RhdHVzKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoc3RhdHVzICE9IE9rKQ0KKyAgICAgICAgICAgIHJldHVybiAobGFzdFJlc3VsdCA9IHN0YXR1cyk7DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KKyAgICBHcEJydXNoKiBuYXRpdmVCcnVzaDsNCisgICAgbXV0YWJsZSBTdGF0dXMgbGFzdFJlc3VsdDsNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBSZXByZXNlbnQgc29saWQgZmlsbCBicnVzaCBvYmplY3QNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorY2xhc3MgU29saWRCcnVzaCA6IHB1YmxpYyBCcnVzaA0KK3sNCitwdWJsaWM6DQorICAgIGZyaWVuZCBjbGFzcyBQZW47DQorDQorICAgIFNvbGlkQnJ1c2goSU4gY29uc3QgQ29sb3ImIGNvbG9yKQ0KKyAgICB7DQorICAgICAgICBHcFNvbGlkRmlsbCAqYnJ1c2ggPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVTb2xpZEZpbGwoY29sb3IuR2V0VmFsdWUoKSwgJmJydXNoKTsNCisNCisgICAgICAgIFNldE5hdGl2ZUJydXNoKGJydXNoKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0Q29sb3IoT1VUIENvbG9yKiBjb2xvcikgY29uc3QNCisgICAgew0KKyAgICAgICAgQVJHQiBhcmdiOw0KKw0KKyAgICAgICAgaWYgKGNvbG9yID09IE5VTEwpIA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorICAgICAgICB9DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFNvbGlkRmlsbENvbG9yKChHcFNvbGlkRmlsbCopbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmdiKSk7DQorDQorICAgICAgICAqY29sb3IgPSBDb2xvcihhcmdiKTsNCisNCisgICAgICAgIHJldHVybiBsYXN0UmVzdWx0Ow0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRDb2xvcihJTiBjb25zdCBDb2xvciYgY29sb3IpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFNvbGlkRmlsbENvbG9yKChHcFNvbGlkRmlsbCopbmF0aXZlQnJ1c2gsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuR2V0VmFsdWUoKSkpOw0KKyAgICB9DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzI1MDkzMg0KKw0KK3ByaXZhdGU6DQorICAgIFNvbGlkQnJ1c2goY29uc3QgU29saWRCcnVzaCAmKTsNCisgICAgU29saWRCcnVzaCYgb3BlcmF0b3I9KGNvbnN0IFNvbGlkQnJ1c2ggJik7DQorDQorI2VuZGlmDQorDQorcHJvdGVjdGVkOg0KKw0KKyAgICBTb2xpZEJydXNoKCkNCisgICAgew0KKyAgICB9DQorfTsNCisNCitjbGFzcyBUZXh0dXJlQnJ1c2ggOiBwdWJsaWMgQnJ1c2gNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgUGVuOw0KKw0KKyAgICBUZXh0dXJlQnJ1c2goSU4gSW1hZ2UqIGltYWdlLCANCisgICAgICAgICAgICAgICAgIElOIFdyYXBNb2RlIHdyYXBNb2RlID0gV3JhcE1vZGVUaWxlKQ0KKyAgICB7DQorICAgICAgICBHcFRleHR1cmUgKnRleHR1cmUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVUZXh0dXJlKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UtPm5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE1vZGUsICZ0ZXh0dXJlKTsNCisNCisgICAgICAgIFNldE5hdGl2ZUJydXNoKHRleHR1cmUpOw0KKyAgICB9DQorDQorICAgIC8vIFdoZW4gY3JlYXRpbmcgYSB0ZXh0dXJlIGJydXNoIGZyb20gYSBtZXRhZmlsZSBpbWFnZSwgdGhlIGRzdFJlY3QNCisgICAgLy8gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBzaXplIHRoYXQgdGhlIG1ldGFmaWxlIGltYWdlIHNob3VsZCBiZQ0KKyAgICAvLyByZW5kZXJlZCBhdCBpbiB0aGUgZGV2aWNlIHVuaXRzIG9mIHRoZSBkZXN0aW5hdGlvbiBncmFwaGljcy4NCisgICAgLy8gSXQgaXMgTk9UIHVzZWQgdG8gY3JvcCB0aGUgbWV0YWZpbGUgaW1hZ2UsIHNvIG9ubHkgdGhlIHdpZHRoIA0KKyAgICAvLyBhbmQgaGVpZ2h0IHZhbHVlcyBtYXR0ZXIgZm9yIG1ldGFmaWxlcy4NCisgICAgVGV4dHVyZUJydXNoKElOIEltYWdlKiBpbWFnZSwgDQorICAgICAgICAgICAgICAgICBJTiBXcmFwTW9kZSB3cmFwTW9kZSwNCisgICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3RGICZkc3RSZWN0KQ0KKyAgICB7DQorICAgICAgICBHcFRleHR1cmUgKnRleHR1cmUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVUZXh0dXJlMigNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS0+bmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE1vZGUsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFJlY3QuWCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0UmVjdC5ZLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RSZWN0LldpZHRoLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RSZWN0LkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGV4dHVyZSk7DQorDQorICAgICAgICBTZXROYXRpdmVCcnVzaCh0ZXh0dXJlKTsNCisgICAgfQ0KKyAgICANCisgICAgLy8gV2hlbiBjcmVhdGluZyBhIHRleHR1cmUgYnJ1c2ggZnJvbSBhIG1ldGFmaWxlIGltYWdlLCB0aGUgZHN0UmVjdA0KKyAgICAvLyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHNpemUgdGhhdCB0aGUgbWV0YWZpbGUgaW1hZ2Ugc2hvdWxkIGJlDQorICAgIC8vIHJlbmRlcmVkIGF0IGluIHRoZSBkZXZpY2UgdW5pdHMgb2YgdGhlIGRlc3RpbmF0aW9uIGdyYXBoaWNzLg0KKyAgICAvLyBJdCBpcyBOT1QgdXNlZCB0byBjcm9wIHRoZSBtZXRhZmlsZSBpbWFnZSwgc28gb25seSB0aGUgd2lkdGggDQorICAgIC8vIGFuZCBoZWlnaHQgdmFsdWVzIG1hdHRlciBmb3IgbWV0YWZpbGVzLg0KKw0KKyAgICBUZXh0dXJlQnJ1c2goSU4gSW1hZ2UgKmltYWdlLCANCisgICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3RGICZkc3RSZWN0LA0KKyAgICAgICAgICAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzICppbWFnZUF0dHJpYnV0ZXMgPSBOVUxMKQ0KKyAgICB7DQorICAgICAgICBHcFRleHR1cmUgKnRleHR1cmUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVUZXh0dXJlSUEoDQorICAgICAgICAgICAgaW1hZ2UtPm5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgIChpbWFnZUF0dHJpYnV0ZXMpP2ltYWdlQXR0cmlidXRlcy0+bmF0aXZlSW1hZ2VBdHRyOk5VTEwsDQorICAgICAgICAgICAgZHN0UmVjdC5YLCANCisgICAgICAgICAgICBkc3RSZWN0LlksIA0KKyAgICAgICAgICAgIGRzdFJlY3QuV2lkdGgsIA0KKyAgICAgICAgICAgIGRzdFJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICZ0ZXh0dXJlDQorICAgICAgICApOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlQnJ1c2godGV4dHVyZSk7DQorICAgIH0NCisgICAgDQorICAgICNpZmRlZiBEQ1JfVVNFX05FV18xNDUxMzgNCisgICAgVGV4dHVyZUJydXNoKElOIEltYWdlICppbWFnZSwgDQorICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0ICZkc3RSZWN0LA0KKyAgICAgICAgICAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzICppbWFnZUF0dHJpYnV0ZXMgPSBOVUxMKQ0KKyAgICB7DQorICAgICAgICBHcFRleHR1cmUgKnRleHR1cmUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVUZXh0dXJlSUFJKA0KKyAgICAgICAgICAgIGltYWdlLT5uYXRpdmVJbWFnZSwNCisgICAgICAgICAgICAoaW1hZ2VBdHRyaWJ1dGVzKT9pbWFnZUF0dHJpYnV0ZXMtPm5hdGl2ZUltYWdlQXR0cjpOVUxMLA0KKyAgICAgICAgICAgIGRzdFJlY3QuWCwgDQorICAgICAgICAgICAgZHN0UmVjdC5ZLCANCisgICAgICAgICAgICBkc3RSZWN0LldpZHRoLCANCisgICAgICAgICAgICBkc3RSZWN0LkhlaWdodCwNCisgICAgICAgICAgICAmdGV4dHVyZQ0KKyAgICAgICAgKTsNCisNCisgICAgICAgIFNldE5hdGl2ZUJydXNoKHRleHR1cmUpOw0KKyAgICB9DQorICAgICNlbmRpZg0KKw0KKyAgICAvLyBXaGVuIGNyZWF0aW5nIGEgdGV4dHVyZSBicnVzaCBmcm9tIGEgbWV0YWZpbGUgaW1hZ2UsIHRoZSBkc3RSZWN0DQorICAgIC8vIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgc2l6ZSB0aGF0IHRoZSBtZXRhZmlsZSBpbWFnZSBzaG91bGQgYmUNCisgICAgLy8gcmVuZGVyZWQgYXQgaW4gdGhlIGRldmljZSB1bml0cyBvZiB0aGUgZGVzdGluYXRpb24gZ3JhcGhpY3MuDQorICAgIC8vIEl0IGlzIE5PVCB1c2VkIHRvIGNyb3AgdGhlIG1ldGFmaWxlIGltYWdlLCBzbyBvbmx5IHRoZSB3aWR0aCANCisgICAgLy8gYW5kIGhlaWdodCB2YWx1ZXMgbWF0dGVyIGZvciBtZXRhZmlsZXMuDQorDQorICAgIFRleHR1cmVCcnVzaCgNCisgICAgICAgIElOIEltYWdlKiBpbWFnZSwNCisgICAgICAgIElOIFdyYXBNb2RlIHdyYXBNb2RlLA0KKyAgICAgICAgDQorICAgICAgICAjaWZkZWYgRENSX1VTRV9ORVdfMTQ1MTM4ICAgICAgIA0KKyAgICAgICAgY29uc3QgSU4gUmVjdCAmZHN0UmVjdA0KKyAgICAgICAgI2Vsc2UNCisgICAgICAgIElOIFJlY3QgJmRzdFJlY3QNCisgICAgICAgICNlbmRpZg0KKyAgICApDQorICAgIHsNCisgICAgICAgIEdwVGV4dHVyZSAqdGV4dHVyZSA9IE5VTEw7DQorDQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZVRleHR1cmUySSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UtPm5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwTW9kZSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFJlY3QuWCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFJlY3QuWSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFJlY3QuV2lkdGgsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RSZWN0LkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRleHR1cmUpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlQnJ1c2godGV4dHVyZSk7DQorICAgIH0NCisNCisgICAgLy8gV2hlbiBjcmVhdGluZyBhIHRleHR1cmUgYnJ1c2ggZnJvbSBhIG1ldGFmaWxlIGltYWdlLCB0aGUgZHN0UmVjdA0KKyAgICAvLyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHNpemUgdGhhdCB0aGUgbWV0YWZpbGUgaW1hZ2Ugc2hvdWxkIGJlDQorICAgIC8vIHJlbmRlcmVkIGF0IGluIHRoZSBkZXZpY2UgdW5pdHMgb2YgdGhlIGRlc3RpbmF0aW9uIGdyYXBoaWNzLg0KKyAgICAvLyBJdCBpcyBOT1QgdXNlZCB0byBjcm9wIHRoZSBtZXRhZmlsZSBpbWFnZSwgc28gb25seSB0aGUgd2lkdGggDQorICAgIC8vIGFuZCBoZWlnaHQgdmFsdWVzIG1hdHRlciBmb3IgbWV0YWZpbGVzLg0KKyAgICBUZXh0dXJlQnJ1c2goSU4gSW1hZ2UqIGltYWdlLCANCisgICAgICAgICAgICAgICAgIElOIFdyYXBNb2RlIHdyYXBNb2RlLCANCisgICAgICAgICAgICAgICAgIElOIFJFQUwgZHN0WCwgDQorICAgICAgICAgICAgICAgICBJTiBSRUFMIGRzdFksIA0KKyAgICAgICAgICAgICAgICAgSU4gUkVBTCBkc3RXaWR0aCwgDQorICAgICAgICAgICAgICAgICBJTiBSRUFMIGRzdEhlaWdodCkNCisgICAgew0KKyAgICAgICAgR3BUZXh0dXJlICp0ZXh0dXJlID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlVGV4dHVyZTIoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UtPm5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBNb2RlLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RYLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RZLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RXaWR0aCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0SGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZXh0dXJlKTsNCisNCisgICAgICAgIFNldE5hdGl2ZUJydXNoKHRleHR1cmUpOw0KKyAgICB9DQorDQorICAgIC8vIFdoZW4gY3JlYXRpbmcgYSB0ZXh0dXJlIGJydXNoIGZyb20gYSBtZXRhZmlsZSBpbWFnZSwgdGhlIGRzdFJlY3QNCisgICAgLy8gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBzaXplIHRoYXQgdGhlIG1ldGFmaWxlIGltYWdlIHNob3VsZCBiZQ0KKyAgICAvLyByZW5kZXJlZCBhdCBpbiB0aGUgZGV2aWNlIHVuaXRzIG9mIHRoZSBkZXN0aW5hdGlvbiBncmFwaGljcy4NCisgICAgLy8gSXQgaXMgTk9UIHVzZWQgdG8gY3JvcCB0aGUgbWV0YWZpbGUgaW1hZ2UsIHNvIG9ubHkgdGhlIHdpZHRoIA0KKyAgICAvLyBhbmQgaGVpZ2h0IHZhbHVlcyBtYXR0ZXIgZm9yIG1ldGFmaWxlcy4NCisgICAgVGV4dHVyZUJydXNoKElOIEltYWdlKiBpbWFnZSwgDQorICAgICAgICAgICAgICAgICBJTiBXcmFwTW9kZSB3cmFwTW9kZSwgDQorICAgICAgICAgICAgICAgICBJTiBJTlQgZHN0WCwgDQorICAgICAgICAgICAgICAgICBJTiBJTlQgZHN0WSwgDQorICAgICAgICAgICAgICAgICBJTiBJTlQgZHN0V2lkdGgsIA0KKyAgICAgICAgICAgICAgICAgSU4gSU5UIGRzdEhlaWdodCkNCisgICAgew0KKyAgICAgICAgR3BUZXh0dXJlICp0ZXh0dXJlID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlVGV4dHVyZTJJKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS0+bmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBNb2RlLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFksIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RXaWR0aCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdEhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRleHR1cmUpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlQnJ1c2godGV4dHVyZSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFNldC9nZXQgYnJ1c2ggdHJhbnNmb3JtDQorICAgICAqLw0KKyAgICBTdGF0dXMgU2V0VHJhbnNmb3JtKElOIGNvbnN0IE1hdHJpeCogbWF0cml4KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRUZXh0dXJlVHJhbnNmb3JtKChHcFRleHR1cmUqKW5hdGl2ZUJydXNoLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5uYXRpdmVNYXRyaXgpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0VHJhbnNmb3JtKE9VVCBNYXRyaXgqIG1hdHJpeCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0VGV4dHVyZVRyYW5zZm9ybSgoR3BUZXh0dXJlKiluYXRpdmVCcnVzaCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC0+bmF0aXZlTWF0cml4KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFJlc2V0VHJhbnNmb3JtKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUmVzZXRUZXh0dXJlVHJhbnNmb3JtKChHcFRleHR1cmUqKW5hdGl2ZUJydXNoKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIE11bHRpcGx5VHJhbnNmb3JtKElOIGNvbnN0IE1hdHJpeCogbWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gTWF0cml4T3JkZXIgb3JkZXIgPSBNYXRyaXhPcmRlclByZXBlbmQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcE11bHRpcGx5VGV4dHVyZVRyYW5zZm9ybSgoR3BUZXh0dXJlKiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5uYXRpdmVNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFRyYW5zbGF0ZVRyYW5zZm9ybShJTiBSRUFMIGR4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgZHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gTWF0cml4T3JkZXIgb3JkZXIgPSBNYXRyaXhPcmRlclByZXBlbmQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFRyYW5zbGF0ZVRleHR1cmVUcmFuc2Zvcm0oKEdwVGV4dHVyZSopbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHgsIGR5LCBvcmRlcikpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTY2FsZVRyYW5zZm9ybShJTiBSRUFMIHN4LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3ksDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBNYXRyaXhPcmRlciBvcmRlciA9IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2NhbGVUZXh0dXJlVHJhbnNmb3JtKChHcFRleHR1cmUqKW5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeCwgc3ksIG9yZGVyKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFJvdGF0ZVRyYW5zZm9ybShJTiBSRUFMIGFuZ2xlLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBNYXRyaXhPcmRlciBvcmRlciA9IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUm90YXRlVGV4dHVyZVRyYW5zZm9ybSgoR3BUZXh0dXJlKiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlLCBvcmRlcikpOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBTZXQvZ2V0IGJydXNoIHdyYXBwaW5nIG1vZGUNCisgICAgICovDQorICAgIFN0YXR1cyBTZXRXcmFwTW9kZShJTiBXcmFwTW9kZSB3cmFwTW9kZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0VGV4dHVyZVdyYXBNb2RlKChHcFRleHR1cmUqKW5hdGl2ZUJydXNoLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwTW9kZSkpOw0KKyAgICB9DQorDQorICAgIFdyYXBNb2RlIEdldFdyYXBNb2RlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgV3JhcE1vZGUgd3JhcE1vZGU7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFRleHR1cmVXcmFwTW9kZSgoR3BUZXh0dXJlKiluYXRpdmVCcnVzaCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JhcE1vZGUpKTsNCisgICAgICAgIHJldHVybiB3cmFwTW9kZTsNCisgICAgfQ0KKw0KKyAgICAvLyBHZXQgdGV4dHVyZSBicnVzaCBhdHRyaWJ1dGVzDQorDQorICAgIEltYWdlICpHZXRJbWFnZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEdwSW1hZ2UgKmltYWdlOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRUZXh0dXJlSW1hZ2UoKEdwVGV4dHVyZSAqKW5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltYWdlKSk7DQorDQorICAgICAgICBJbWFnZSAqcmV0aW1hZ2UgPSBuZXcgSW1hZ2UoaW1hZ2UsIGxhc3RSZXN1bHQpOw0KKw0KKyAgICAgICAgaWYgKHJldGltYWdlID09IE5VTEwpIA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIERsbEV4cG9ydHM6OkdkaXBEaXNwb3NlSW1hZ2UoaW1hZ2UpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgcmV0dXJuIHJldGltYWdlOw0KKyAgICB9DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzI1MDkzMg0KKw0KK3ByaXZhdGU6DQorICAgIFRleHR1cmVCcnVzaChjb25zdCBUZXh0dXJlQnJ1c2ggJik7DQorICAgIFRleHR1cmVCcnVzaCYgb3BlcmF0b3I9KGNvbnN0IFRleHR1cmVCcnVzaCAmKTsNCisNCisjZW5kaWYNCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIFRleHR1cmVCcnVzaCgpDQorICAgIHsNCisgICAgfQ0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFJlcHJlc2VudCBsaW5lIGdyYWRpZW50IGJydXNoIG9iamVjdA0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitjbGFzcyBMaW5lYXJHcmFkaWVudEJydXNoIDogcHVibGljIEJydXNoDQorew0KK3B1YmxpYzoNCisgICAgZnJpZW5kIGNsYXNzIFBlbjsNCisNCisgICAgTGluZWFyR3JhZGllbnRCcnVzaChJTiBjb25zdCBQb2ludEYmIHBvaW50MSwNCisgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludEYmIHBvaW50MiwNCisgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBDb2xvciYgY29sb3IxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IENvbG9yJiBjb2xvcjIpDQorICAgIHsNCisgICAgICAgIEdwTGluZUdyYWRpZW50ICpicnVzaCA9IE5VTEw7DQorDQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUxpbmVCcnVzaCgmcG9pbnQxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvaW50MiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yMS5HZXRWYWx1ZSgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IyLkdldFZhbHVlKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcmFwTW9kZVRpbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnJ1c2gpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlQnJ1c2goYnJ1c2gpOw0KKyAgICB9DQorDQorICAgIExpbmVhckdyYWRpZW50QnJ1c2goSU4gY29uc3QgUG9pbnQmIHBvaW50MSwNCisgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludCYgcG9pbnQyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IENvbG9yJiBjb2xvcjEsDQorICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgQ29sb3ImIGNvbG9yMikNCisgICAgew0KKyAgICAgICAgR3BMaW5lR3JhZGllbnQgKmJydXNoID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlTGluZUJydXNoSSgmcG9pbnQxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwb2ludDIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IxLkdldFZhbHVlKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IyLkdldFZhbHVlKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JhcE1vZGVUaWxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZicnVzaCk7DQorDQorICAgICAgICBTZXROYXRpdmVCcnVzaChicnVzaCk7DQorICAgIH0NCisNCisgICAgTGluZWFyR3JhZGllbnRCcnVzaChJTiBjb25zdCBSZWN0RiYgcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBDb2xvciYgY29sb3IxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IENvbG9yJiBjb2xvcjIsDQorICAgICAgICAgICAgICAgICAgICAgICAgSU4gTGluZWFyR3JhZGllbnRNb2RlIG1vZGUpDQorICAgIHsNCisgICAgICAgIEdwTGluZUdyYWRpZW50ICpicnVzaCA9IE5VTEw7DQorDQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUxpbmVCcnVzaEZyb21SZWN0KCZyZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjEuR2V0VmFsdWUoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IyLkdldFZhbHVlKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyYXBNb2RlVGlsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJydXNoKTsNCisNCisgICAgICAgIFNldE5hdGl2ZUJydXNoKGJydXNoKTsNCisgICAgfQ0KKw0KKyAgICBMaW5lYXJHcmFkaWVudEJydXNoKElOIGNvbnN0IFJlY3QmIHJlY3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgQ29sb3ImIGNvbG9yMSwNCisgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBDb2xvciYgY29sb3IyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIElOIExpbmVhckdyYWRpZW50TW9kZSBtb2RlKQ0KKyAgICB7DQorICAgICAgICBHcExpbmVHcmFkaWVudCAqYnJ1c2ggPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVMaW5lQnJ1c2hGcm9tUmVjdEkoJnJlY3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjEuR2V0VmFsdWUoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yMi5HZXRWYWx1ZSgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyYXBNb2RlVGlsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZicnVzaCk7DQorDQorICAgICAgICBTZXROYXRpdmVCcnVzaChicnVzaCk7DQorICAgIH0NCisNCisgICAgTGluZWFyR3JhZGllbnRCcnVzaChJTiBjb25zdCBSZWN0RiYgcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBDb2xvciYgY29sb3IxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IENvbG9yJiBjb2xvcjIsDQorICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBhbmdsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICBJTiBCT09MIGlzQW5nbGVTY2FsYWJsZSA9IEZBTFNFKQ0KKyAgICB7DQorICAgICAgICBHcExpbmVHcmFkaWVudCAqYnJ1c2ggPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVMaW5lQnJ1c2hGcm9tUmVjdFdpdGhBbmdsZSgmcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IxLkdldFZhbHVlKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yMi5HZXRWYWx1ZSgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBbmdsZVNjYWxhYmxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcmFwTW9kZVRpbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZicnVzaCk7DQorDQorICAgICAgICBTZXROYXRpdmVCcnVzaChicnVzaCk7DQorICAgIH0NCisNCisgICAgTGluZWFyR3JhZGllbnRCcnVzaChJTiBjb25zdCBSZWN0JiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IENvbG9yJiBjb2xvcjEsDQorICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgQ29sb3ImIGNvbG9yMiwNCisgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIGFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIElOIEJPT0wgaXNBbmdsZVNjYWxhYmxlID0gRkFMU0UpDQorICAgIHsNCisgICAgICAgIEdwTGluZUdyYWRpZW50ICpicnVzaCA9IE5VTEw7DQorDQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUxpbmVCcnVzaEZyb21SZWN0V2l0aEFuZ2xlSSgmcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yMS5HZXRWYWx1ZSgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IyLkdldFZhbHVlKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQW5nbGVTY2FsYWJsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyYXBNb2RlVGlsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZicnVzaCk7DQorDQorICAgICAgICBTZXROYXRpdmVCcnVzaChicnVzaCk7DQorICAgIH0NCisNCisgICAgLy8gR2V0L3NldCBwb2ludCBhdHRyaWJ1dGVzDQorDQorICAgIFN0YXR1cyBTZXRMaW5lYXJQb2ludHMoSU4gY29uc3QgUG9pbnRGJiBwb2ludDEsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiYgcG9pbnQyKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRMaW5lUG9pbnRzKChHcExpbmVHcmFkaWVudCopbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwb2ludDEsICZwb2ludDIpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0TGluZWFyUG9pbnRzKE9VVCBQb2ludEYqIHBvaW50cykgY29uc3QgDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldExpbmVQb2ludHMoKEdwTGluZUdyYWRpZW50KikgbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cykpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRMaW5lYXJQb2ludHMoSU4gY29uc3QgUG9pbnQmIHBvaW50MSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnQmIHBvaW50MikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0TGluZVBvaW50c0koKEdwTGluZUdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwb2ludDEsICZwb2ludDIpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0TGluZWFyUG9pbnRzKE9VVCBQb2ludCogcG9pbnRzKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRMaW5lUG9pbnRzSSgoR3BMaW5lR3JhZGllbnQqKSBuYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cykpOw0KKyAgICB9DQorICAgIC8vIEdldC9zZXQgY29sb3IgYXR0cmlidXRlcw0KKw0KKyAgICBTdGF0dXMgU2V0TGluZWFyQ29sb3JzKElOIGNvbnN0IENvbG9yJiBjb2xvcjEsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IENvbG9yJiBjb2xvcjIpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldExpbmVDb2xvcnMoKEdwTGluZUdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IxLkdldFZhbHVlKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yMi5HZXRWYWx1ZSgpKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldExpbmVhckNvbG9ycyhPVVQgQ29sb3IqIGNvbG9ycykgY29uc3QNCisgICAgew0KKyAgICAgICAgQVJHQiBhcmdiWzJdOw0KKw0KKyAgICAgICAgaWYgKGNvbG9ycyA9PSBOVUxMKSANCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm4gU2V0U3RhdHVzKEludmFsaWRQYXJhbWV0ZXIpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldExpbmVDb2xvcnMoKEdwTGluZUdyYWRpZW50KikgbmF0aXZlQnJ1c2gsIGFyZ2IpKTsNCisNCisgICAgICAgIGlmIChsYXN0UmVzdWx0ID09IE9rKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIC8vIHVzZSBiaXR3aXNlIGNvcHkgb3BlcmF0b3IgZm9yIENvbG9yIGNvcHkNCisgICAgICAgICAgICBjb2xvcnNbMF0gPSBDb2xvcihhcmdiWzBdKTsNCisgICAgICAgICAgICBjb2xvcnNbMV0gPSBDb2xvcihhcmdiWzFdKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIHJldHVybiBsYXN0UmVzdWx0Ow0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRSZWN0YW5nbGUoT1VUIFJlY3RGKiByZWN0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRMaW5lUmVjdCgoR3BMaW5lR3JhZGllbnQqKW5hdGl2ZUJydXNoLCByZWN0KSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBHZXRSZWN0YW5nbGUoT1VUIFJlY3QqIHJlY3QpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldExpbmVSZWN0SSgoR3BMaW5lR3JhZGllbnQqKW5hdGl2ZUJydXNoLCByZWN0KSk7DQorICAgIH0NCisNCisgICAgLy8gR2FtbWEgY29ycmVjdGlvbiBpbiBpbnRlcnBvcmxhdGlvbi4NCisNCisgICAgU3RhdHVzIFNldEdhbW1hQ29ycmVjdGlvbihJTiBCT09MIHVzZUdhbW1hQ29ycmVjdGlvbikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0TGluZUdhbW1hQ29ycmVjdGlvbigoR3BMaW5lR3JhZGllbnQqKW5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgdXNlR2FtbWFDb3JyZWN0aW9uKSk7DQorICAgIH0NCisgICAgDQorICAgIEJPT0wgR2V0R2FtbWFDb3JyZWN0aW9uKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgQk9PTCB1c2VHYW1tYUNvcnJlY3Rpb247DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldExpbmVHYW1tYUNvcnJlY3Rpb24oKEdwTGluZUdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICZ1c2VHYW1tYUNvcnJlY3Rpb24pKTsNCisNCisgICAgICAgIHJldHVybiB1c2VHYW1tYUNvcnJlY3Rpb247DQorICAgIH0NCisNCisgICAgSU5UIEdldEJsZW5kQ291bnQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBJTlQgY291bnQgPSAwOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRMaW5lQmxlbmRDb3VudCgoR3BMaW5lR3JhZGllbnQqKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvdW50KSk7DQorDQorICAgICAgICByZXR1cm4gY291bnQ7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldEJsZW5kKElOIGNvbnN0IFJFQUwqIGJsZW5kRmFjdG9ycywgDQorICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSRUFMKiBibGVuZFBvc2l0aW9ucywNCisgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0TGluZUJsZW5kKChHcExpbmVHcmFkaWVudCopDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRGYWN0b3JzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kUG9zaXRpb25zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldEJsZW5kKE9VVCBSRUFMKiBibGVuZEZhY3RvcnMsIA0KKyAgICAgICAgICAgICAgICAgICAgT1VUIFJFQUwqIGJsZW5kUG9zaXRpb25zLCANCisgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkgY29uc3QgDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldExpbmVCbGVuZCgoR3BMaW5lR3JhZGllbnQqKW5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kRmFjdG9ycywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZFBvc2l0aW9ucywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIElOVCBHZXRJbnRlcnBvbGF0aW9uQ29sb3JDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIElOVCBjb3VudCA9IDA7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldExpbmVQcmVzZXRCbGVuZENvdW50KChHcExpbmVHcmFkaWVudCopDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY291bnQpKTsNCisNCisgICAgICAgIHJldHVybiBjb3VudDsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0SW50ZXJwb2xhdGlvbkNvbG9ycyhJTiBjb25zdCBDb2xvciogcHJlc2V0Q29sb3JzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSRUFMKiBibGVuZFBvc2l0aW9ucywgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgaWYgKChjb3VudCA8PSAwKSB8fCAhcHJlc2V0Q29sb3JzKQ0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorICAgICAgICAgDQorICAgICAgICBBUkdCICphcmdicyA9IChBUkdCKikgbmV3IEJZVEVbY291bnQqc2l6ZW9mKEFSR0IpXTsNCisgICAgICAgIA0KKyAgICAgICAgaWYgKGFyZ2JzKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGZvciAoSU5UIGkgPSAwOyBpIDwgY291bnQ7IGkrKykNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGFyZ2JzW2ldID0gcHJlc2V0Q29sb3JzW2ldLkdldFZhbHVlKCk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIFN0YXR1cyBzdGF0dXMgPSBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldExpbmVQcmVzZXRCbGVuZCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BMaW5lR3JhZGllbnQqKSBuYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdicywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZFBvc2l0aW9ucywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICAgICAgICAgIGRlbGV0ZSBbXSBhcmdiczsNCisgICAgICAgICAgICByZXR1cm4gc3RhdHVzOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoT3V0T2ZNZW1vcnkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRJbnRlcnBvbGF0aW9uQ29sb3JzKE9VVCBDb2xvciogcHJlc2V0Q29sb3JzLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1VUIFJFQUwqIGJsZW5kUG9zaXRpb25zLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KSBjb25zdCANCisgICAgew0KKyAgICAgICAgaWYgKChjb3VudCA8PSAwKSB8fCAhcHJlc2V0Q29sb3JzKQ0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorDQorICAgICAgICBBUkdCKiBhcmdicyA9IChBUkdCKikgbmV3IEJZVEVbY291bnQqc2l6ZW9mKEFSR0IpXTsNCisgICAgICAgIA0KKyAgICAgICAgaWYgKCFhcmdicykNCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm4gU2V0U3RhdHVzKE91dE9mTWVtb3J5KTsNCisgICAgICAgIH0NCisNCisgICAgICAgIFN0YXR1cyBzdGF0dXMgPSBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldExpbmVQcmVzZXRCbGVuZCgoR3BMaW5lR3JhZGllbnQqKW5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2JzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kUG9zaXRpb25zLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgICAgICBpZiAoc3RhdHVzID09IE9rKSANCisgICAgICAgIHsNCisgICAgICAgICAgICBmb3IgKElOVCBpID0gMDsgaSA8IGNvdW50OyBpKyspDQorICAgICAgICAgICAgeyANCisgICAgICAgICAgICAgICAgcHJlc2V0Q29sb3JzW2ldID0gQ29sb3IoYXJnYnNbaV0pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgZGVsZXRlIFtdIGFyZ2JzOw0KKyAgICAgICAgDQorICAgICAgICByZXR1cm4gc3RhdHVzOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRCbGVuZEJlbGxTaGFwZShJTiBSRUFMIGZvY3VzLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc2NhbGUgPSAxLjApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldExpbmVTaWdtYUJsZW5kKChHcExpbmVHcmFkaWVudCopbmF0aXZlQnJ1c2gsIGZvY3VzLCBzY2FsZSkpOw0KKyAgICB9DQorDQorICAgICNpZmRlZiBEQ1JfVVNFX05FV18xNDUxMzUNCisgICAgU3RhdHVzIFNldEJsZW5kVHJpYW5ndWxhclNoYXBlKA0KKyAgICAgICAgSU4gUkVBTCBmb2N1cywNCisgICAgICAgIElOIFJFQUwgc2NhbGUgPSAxLjANCisgICAgKQ0KKyAgICAjZWxzZQ0KKyAgICBTdGF0dXMgU2V0QmxlbmRUcmlhbmdsYXJTaGFwZShJTiBSRUFMIGZvY3VzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHNjYWxlID0gMS4wKQ0KKyAgICAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0TGluZUxpbmVhckJsZW5kKChHcExpbmVHcmFkaWVudCopbmF0aXZlQnJ1c2gsIGZvY3VzLCBzY2FsZSkpOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBTZXQvZ2V0IGJydXNoIHRyYW5zZm9ybQ0KKyAgICAgKi8NCisgICAgU3RhdHVzIFNldFRyYW5zZm9ybShJTiBjb25zdCBNYXRyaXgqIG1hdHJpeCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0TGluZVRyYW5zZm9ybSgoR3BMaW5lR3JhZGllbnQqKW5hdGl2ZUJydXNoLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5uYXRpdmVNYXRyaXgpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0VHJhbnNmb3JtKE9VVCBNYXRyaXggKm1hdHJpeCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0TGluZVRyYW5zZm9ybSgoR3BMaW5lR3JhZGllbnQqKW5hdGl2ZUJydXNoLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5uYXRpdmVNYXRyaXgpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgUmVzZXRUcmFuc2Zvcm0oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBSZXNldExpbmVUcmFuc2Zvcm0oKEdwTGluZUdyYWRpZW50KiluYXRpdmVCcnVzaCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBNdWx0aXBseVRyYW5zZm9ybShJTiBjb25zdCBNYXRyaXgqIG1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIE1hdHJpeE9yZGVyIG9yZGVyID0gTWF0cml4T3JkZXJQcmVwZW5kKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBNdWx0aXBseUxpbmVUcmFuc2Zvcm0oKEdwTGluZUdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5uYXRpdmVNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFRyYW5zbGF0ZVRyYW5zZm9ybShJTiBSRUFMIGR4LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIGR5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIE1hdHJpeE9yZGVyIG9yZGVyID0gTWF0cml4T3JkZXJQcmVwZW5kKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBUcmFuc2xhdGVMaW5lVHJhbnNmb3JtKChHcExpbmVHcmFkaWVudCopbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHgsIGR5LCBvcmRlcikpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTY2FsZVRyYW5zZm9ybShJTiBSRUFMIHN4LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3ksDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBNYXRyaXhPcmRlciBvcmRlciA9IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2NhbGVMaW5lVHJhbnNmb3JtKChHcExpbmVHcmFkaWVudCopbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4LCBzeSwgb3JkZXIpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgUm90YXRlVHJhbnNmb3JtKElOIFJFQUwgYW5nbGUsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIE1hdHJpeE9yZGVyIG9yZGVyID0gTWF0cml4T3JkZXJQcmVwZW5kKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBSb3RhdGVMaW5lVHJhbnNmb3JtKChHcExpbmVHcmFkaWVudCopbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSwgb3JkZXIpKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogU2V0L2dldCBicnVzaCB3cmFwcGluZyBtb2RlDQorICAgICAqLw0KKyAgICBTdGF0dXMgU2V0V3JhcE1vZGUoSU4gV3JhcE1vZGUgd3JhcE1vZGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldExpbmVXcmFwTW9kZSgoR3BMaW5lR3JhZGllbnQqKW5hdGl2ZUJydXNoLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwTW9kZSkpOw0KKyAgICB9DQorDQorICAgIFdyYXBNb2RlIEdldFdyYXBNb2RlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgV3JhcE1vZGUgd3JhcE1vZGU7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldExpbmVXcmFwTW9kZSgoR3BMaW5lR3JhZGllbnQqKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlQnJ1c2gsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyYXBNb2RlKSk7DQorDQorICAgICAgICByZXR1cm4gd3JhcE1vZGU7DQorICAgIH0NCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMjUwOTMyDQorDQorcHJpdmF0ZToNCisgICAgTGluZWFyR3JhZGllbnRCcnVzaChjb25zdCBMaW5lYXJHcmFkaWVudEJydXNoICYpOw0KKyAgICBMaW5lYXJHcmFkaWVudEJydXNoJiBvcGVyYXRvcj0oY29uc3QgTGluZWFyR3JhZGllbnRCcnVzaCAmKTsNCisNCisjZW5kaWYNCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIExpbmVhckdyYWRpZW50QnJ1c2goKQ0KKyAgICB7DQorICAgIH0NCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBQYXRoR3JhZGllbnRCcnVzaCBvYmplY3QgaXMgZGVmaW5lZA0KKy8vIGluIGdkaXBsdXNwYXRoLmguDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBSZXByZXNlbnQgaGF0Y2ggYnJ1c2ggb2JqZWN0DQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsYXNzIEhhdGNoQnJ1c2ggOiBwdWJsaWMgQnJ1c2gNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgUGVuOw0KKw0KKyAgICAvLyBDb25zdHJ1Y3RvcnMNCisNCisgICAgSGF0Y2hCcnVzaChJTiBIYXRjaFN0eWxlIGhhdGNoU3R5bGUsIA0KKyAgICAgICAgICAgICAgIElOIGNvbnN0IENvbG9yJiBmb3JlQ29sb3IsDQorICAgICAgICAgICAgICAgSU4gY29uc3QgQ29sb3ImIGJhY2tDb2xvciA9IENvbG9yKCkpDQorICAgIHsNCisgICAgICAgIEdwSGF0Y2ggKmJydXNoID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlSGF0Y2hCcnVzaChoYXRjaFN0eWxlLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3IuR2V0VmFsdWUoKSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja0NvbG9yLkdldFZhbHVlKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJydXNoKTsNCisgICAgICAgIFNldE5hdGl2ZUJydXNoKGJydXNoKTsNCisgICAgfQ0KKw0KKyAgICBIYXRjaFN0eWxlIEdldEhhdGNoU3R5bGUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBIYXRjaFN0eWxlIGhhdGNoU3R5bGU7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEhhdGNoU3R5bGUoKEdwSGF0Y2gqKW5hdGl2ZUJydXNoLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGF0Y2hTdHlsZSkpOw0KKw0KKyAgICAgICAgcmV0dXJuIGhhdGNoU3R5bGU7DQorICAgIH0NCisgICAgDQorICAgIFN0YXR1cyBHZXRGb3JlZ3JvdW5kQ29sb3IoT1VUIENvbG9yKiBjb2xvcikgY29uc3QNCisgICAgew0KKyAgICAgICAgQVJHQiBhcmdiOw0KKw0KKyAgICAgICAgaWYgKGNvbG9yID09IE5VTEwpIA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorICAgICAgICB9DQorICAgICAgICANCisgICAgICAgIFN0YXR1cyBzdGF0dXMgPSBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEhhdGNoRm9yZWdyb3VuZENvbG9yKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwSGF0Y2gqKW5hdGl2ZUJydXNoLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmdiKSk7DQorDQorICAgICAgICBjb2xvci0+U2V0VmFsdWUoYXJnYik7DQorDQorICAgICAgICByZXR1cm4gc3RhdHVzOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRCYWNrZ3JvdW5kQ29sb3IoT1VUIENvbG9yICpjb2xvcikgY29uc3QNCisgICAgew0KKyAgICAgICAgQVJHQiBhcmdiOw0KKyAgICAgICAgDQorICAgICAgICBpZiAoY29sb3IgPT0gTlVMTCkgDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhJbnZhbGlkUGFyYW1ldGVyKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIFN0YXR1cyBzdGF0dXMgPSBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEhhdGNoQmFja2dyb3VuZENvbG9yKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwSGF0Y2gqKW5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ2IpKTsNCisNCisgICAgICAgIGNvbG9yLT5TZXRWYWx1ZShhcmdiKTsNCisgICAgICAgIA0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBIYXRjaEJydXNoKGNvbnN0IEhhdGNoQnJ1c2ggJik7DQorICAgIEhhdGNoQnJ1c2gmIG9wZXJhdG9yPShjb25zdCBIYXRjaEJydXNoICYpOw0KKw0KKyNlbmRpZg0KKw0KK3Byb3RlY3RlZDoNCisNCisgICAgSGF0Y2hCcnVzaCgpDQorICAgIHsNCisgICAgfQ0KK307DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0NhY2hlZEJpdG1hcC5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0NhY2hlZEJpdG1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZmQ4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzQ2FjaGVkQml0bWFwLmgKQEAgLTAsMCArMSw3MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogQ29weXJpZ2h0IChjKSAyMDAwIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbg0KKyoNCisqIE1vZHVsZSBOYW1lOg0KKyoNCisqICAgQ2FjaGVkQml0bWFwIGNsYXNzIGRlZmluaXRpb24NCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIENhY2hlZEJpdG1hcCBpcyBhIHJlcHJlc2VudGF0aW9uIG9mIGFuIGFjY2VsZXJhdGVkIGRyYXdpbmcNCisqICAgdGhhdCBoYXMgcmVzdHJpY3Rpb25zIG9uIHdoYXQgb3BlcmF0aW9ucyBhcmUgYWxsb3dlZCBpbiBvcmRlcg0KKyogICB0byBhY2NlbGVyYXRlIHRoZSBkcmF3aW5nIHRvIHRoZSBkZXN0aW5hdGlvbi4NCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfR0RJUExVU0NBQ0hFREJJVE1BUF9IDQorI2RlZmluZSBfR0RJUExVU0NBQ0hFREJJVE1BUF9IDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogQ2xhc3MgTmFtZToNCisqDQorKiAgIENhY2hlZEJpdG1hcA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgQW4gb2JqZWN0IHRvIHN0b3JlIGEgYml0bWFwIHByZXBhcmVkIGZvciByZW5kZXJpbmcgb24gYSBwYXJ0aWN1bGFyDQorKiAgIEdyYXBoaWNzIG9iamVjdC4gVGhlIG1lbW9yeSBzdG9yYWdlIGZvciB0aGUgQ2FjaGVkQml0bWFwIGlzIG9wYXF1ZQ0KKyogICB0byB0aGUgb3RoZXIgRW5naW5lIGNvZGUsIHNvIHRoZSBvbmx5IG9wZXJhdGlvbnMgc3VwcG9ydGVkIGFyZQ0KKyogICBpbml0aWFsaXppbmcgdGhlIGRhdGEgKHdpdGggYSBiaXRtYXApIGFuZCB1c2luZyB0aGUgZ3JhcGhpY3MgdG8NCisqICAgZHJhdyBpdCBvbiB0aGUgc2NyZWVuIHdpdGggYW4gaW50ZWdlciBvZmZzZXQuDQorKg0KKyogICBMb29rIGZvciB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpbiBHZGlwbHVzSGVhZGVycy5oDQorKg0KKyogQ3JlYXRlZDoNCisqDQorKiAgIDA0LzIzLzIwMDAgYXNlY2NoaWENCisqICAgICAgQ3JlYXRlZCBpdC4NCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoraW5saW5lIA0KK0NhY2hlZEJpdG1hcDo6Q2FjaGVkQml0bWFwKA0KKyAgICBJTiBCaXRtYXAgKmJpdG1hcCwgDQorICAgIElOIEdyYXBoaWNzICpncmFwaGljcykNCit7DQorICAgIG5hdGl2ZUNhY2hlZEJpdG1hcCA9IE5VTEw7ICAgIA0KKw0KKyAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUNhY2hlZEJpdG1hcCgNCisgICAgICAgIChHcEJpdG1hcCAqKWJpdG1hcC0+bmF0aXZlSW1hZ2UsDQorICAgICAgICBncmFwaGljcy0+bmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAmbmF0aXZlQ2FjaGVkQml0bWFwDQorICAgICk7DQorfQ0KKw0KK2lubGluZSANCitDYWNoZWRCaXRtYXA6On5DYWNoZWRCaXRtYXAoKQ0KK3sNCisgICAgRGxsRXhwb3J0czo6R2RpcERlbGV0ZUNhY2hlZEJpdG1hcChuYXRpdmVDYWNoZWRCaXRtYXApOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0NhY2hlZEJpdG1hcDo6R2V0TGFzdFN0YXR1cygpIGNvbnN0IA0KK3sNCisgICAgU3RhdHVzIGxhc3RTdGF0dXMgPSBsYXN0UmVzdWx0Ow0KKyAgICBsYXN0UmVzdWx0ID0gT2s7ICAgIA0KKyAgICByZXR1cm4gKGxhc3RTdGF0dXMpOw0KK30NCisNCisjZW5kaWYNCisNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzQ29sb3IuaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNDb2xvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyYzIxYzIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzQ29sb3IuaApAQCAtMCwwICsxLDIwOSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXA0KKyoNCisqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLCBNaWNyb3NvZnQgQ29ycC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzQ29sb3IuaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgUmVwcmVzZW50cyBhIEdESSsgY29sb3IuDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9HRElQTFVTQ09MT1JfSA0KKyNkZWZpbmUgX0dESVBMVVNDT0xPUl9IDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ29sb3IgbW9kZQ0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gQ29sb3JNb2RlDQorew0KKyAgICBDb2xvck1vZGVBUkdCMzIgPSAwLA0KKyAgICBDb2xvck1vZGVBUkdCNjQgPSAxDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDb2xvciBDaGFubmVsIGZsYWdzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBDb2xvckNoYW5uZWxGbGFncw0KK3sNCisgICAgQ29sb3JDaGFubmVsRmxhZ3NDID0gMCwNCisgICAgQ29sb3JDaGFubmVsRmxhZ3NNLA0KKyAgICBDb2xvckNoYW5uZWxGbGFnc1ksDQorICAgIENvbG9yQ2hhbm5lbEZsYWdzSywNCisgICAgQ29sb3JDaGFubmVsRmxhZ3NMYXN0DQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDb2xvcg0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsYXNzIENvbG9yDQorew0KK3B1YmxpYzoNCisNCisgICAgQ29sb3IoKQ0KKyAgICB7DQorICAgICAgICBBcmdiID0gKEFSR0IpQ29sb3I6OkJsYWNrOw0KKyAgICB9DQorDQorICAgIC8vIENvbnN0cnVjdCBhbiBvcGFxdWUgQ29sb3Igb2JqZWN0IHdpdGgNCisgICAgLy8gdGhlIHNwZWNpZmllZCBSLCBHLCBCIHZhbHVlcy4NCisNCisgICAgQ29sb3IoSU4gQllURSByLA0KKyAgICAgICAgICBJTiBCWVRFIGcsDQorICAgICAgICAgIElOIEJZVEUgYikNCisgICAgew0KKyAgICAgICAgQXJnYiA9IE1ha2VBUkdCKDI1NSwgciwgZywgYik7DQorICAgIH0NCisNCisgICAgLy8gQ29uc3RydWN0IGEgQ29sb3Igb2JqZWN0IHdpdGgNCisgICAgLy8gdGhlIHNwZWNpZmllZCBBLCBSLCBHLCBCIHZhbHVlcy4NCisgICAgLy8NCisgICAgLy8gTk9URTogUiwgRywgQiBjb2xvciB2YWx1ZXMgYXJlIG5vdCBwcmVtdWx0aXBsaWVkLg0KKw0KKyAgICBDb2xvcihJTiBCWVRFIGEsDQorICAgICAgICAgIElOIEJZVEUgciwNCisgICAgICAgICAgSU4gQllURSBnLA0KKyAgICAgICAgICBJTiBCWVRFIGIpDQorICAgIHsNCisgICAgICAgIEFyZ2IgPSBNYWtlQVJHQihhLCByLCBnLCBiKTsNCisgICAgfQ0KKw0KKyAgICAvLyBDb25zdHJ1Y3QgYSBDb2xvciBvYmplY3Qgd2l0aA0KKyAgICAvLyB0aGUgc3BlY2lmaWVkIEFSR0IgdmFsdWVzLg0KKyAgICAvLw0KKyAgICAvLyBOT1RFOiBSLCBHLCBCIGNvbG9yIGNvbXBvbmVudHMgYXJlIG5vdCBwcmVtdWx0aXBsaWVkLg0KKw0KKyAgICBDb2xvcihJTiBBUkdCIGFyZ2IpDQorICAgIHsNCisgICAgICAgIEFyZ2IgPSBhcmdiOw0KKyAgICB9DQorDQorICAgIC8vIEV4dHJhY3QgQSwgUiwgRywgQiBjb21wb25lbnRzDQorDQorICAgIEJZVEUgR2V0QWxwaGEoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKEJZVEUpIChBcmdiID4+IEFscGhhU2hpZnQpOw0KKyAgICB9DQorDQorICAgIEJZVEUgR2V0QSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRBbHBoYSgpOw0KKyAgICB9DQorDQorICAgIEJZVEUgR2V0UmVkKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChCWVRFKSAoQXJnYiA+PiBSZWRTaGlmdCk7DQorICAgIH0NCisNCisgICAgQllURSBHZXRSKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEdldFJlZCgpOw0KKyAgICB9DQorDQorICAgIEJZVEUgR2V0R3JlZW4oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKEJZVEUpIChBcmdiID4+IEdyZWVuU2hpZnQpOw0KKyAgICB9DQorDQorICAgIEJZVEUgR2V0RygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBHZXRHcmVlbigpOw0KKyAgICB9DQorDQorICAgIEJZVEUgR2V0Qmx1ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoQllURSkgKEFyZ2IgPj4gQmx1ZVNoaWZ0KTsNCisgICAgfQ0KKw0KKyAgICBCWVRFIEdldEIoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gR2V0Qmx1ZSgpOw0KKyAgICB9DQorDQorICAgIC8vIFJldHJpZXZlIEFSR0IgdmFsdWVzDQorDQorICAgIEFSR0IgR2V0VmFsdWUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gQXJnYjsNCisgICAgfQ0KKw0KKyAgICBWT0lEIFNldFZhbHVlKElOIEFSR0IgYXJnYikNCisgICAgew0KKyAgICAgICAgQXJnYiA9IGFyZ2I7DQorICAgIH0NCisNCisgICAgVk9JRCBTZXRGcm9tQ09MT1JSRUYoSU4gQ09MT1JSRUYgcmdiKQ0KKyAgICB7DQorICAgICAgICBBcmdiID0gTWFrZUFSR0IoMjU1LCBHZXRSVmFsdWUocmdiKSwgR2V0R1ZhbHVlKHJnYiksIEdldEJWYWx1ZShyZ2IpKTsNCisgICAgfQ0KKw0KKyAgICBDT0xPUlJFRiBUb0NPTE9SUkVGKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFJHQihHZXRSZWQoKSwgR2V0R3JlZW4oKSwgR2V0Qmx1ZSgpKTsNCisgICAgfQ0KKw0KK3B1YmxpYzoNCisNCisgICAgLy8gU3RhbmRhcmQgY29sb3IgY29uc3RhbnRzDQorICAgIGVudW0NCisgICAgew0KKyAgICAgICBCbGFjayA9IDB4ZmYwMDAwMDAsDQorICAgICAgIFNpbHZlciA9IDB4ZmZjMGMwYzAsDQorICAgICAgIEdyYXkgPSAweGZmODA4MDgwLA0KKyAgICAgICBXaGl0ZSA9IDB4ZmZmZmZmZmYsDQorICAgICAgIE1hcm9vbiA9IDB4ZmY4MDAwMDAsDQorICAgICAgIFJlZCA9IDB4ZmZmZjAwMDAsDQorICAgICAgIFB1cnBsZSA9IDB4ZmY4MDAwODAsDQorICAgICAgIEZ1Y2hzaWEgPSAweGZmZmYwMGZmLA0KKyAgICAgICBHcmVlbiA9IDB4ZmYwMDgwMDAsDQorICAgICAgIExpbWUgPSAweGZmMDBmZjAwLA0KKyAgICAgICBPbGl2ZSA9IDB4ZmY4MDgwMDAsDQorICAgICAgIFllbGxvdyA9IDB4ZmZmZmZmMDAsDQorICAgICAgIE5hdnkgPSAweGZmMDAwMDgwLA0KKyAgICAgICBCbHVlID0gMHhmZjAwMDBmZiwNCisgICAgICAgVGVhbCA9IDB4ZmYwMDgwODAsDQorICAgICAgIEFxdWEgPSAweGZmMDBmZmZmDQorICAgIH07DQorDQorICAgIC8vIFNoaWZ0IGNvdW50IGFuZCBiaXQgbWFzayBmb3IgQSwgUiwgRywgQiBjb21wb25lbnRzDQorICAgIGVudW0NCisgICAgew0KKyAgICAgICAgQWxwaGFTaGlmdCAgPSAyNCwNCisgICAgICAgIFJlZFNoaWZ0ICAgID0gMTYsDQorICAgICAgICBHcmVlblNoaWZ0ICA9IDgsDQorICAgICAgICBCbHVlU2hpZnQgICA9IDANCisgICAgfTsNCisNCisgICAgZW51bQ0KKyAgICB7DQorICAgICAgICBBbHBoYU1hc2sgICA9IDB4ZmYwMDAwMDAsDQorICAgICAgICBSZWRNYXNrICAgICA9IDB4MDBmZjAwMDAsDQorICAgICAgICBHcmVlbk1hc2sgICA9IDB4MDAwMGZmMDAsDQorICAgICAgICBCbHVlTWFzayAgICA9IDB4MDAwMDAwZmYNCisgICAgfTsNCisNCisgICAgLy8gQXNzZW1ibGUgQSwgUiwgRywgQiB2YWx1ZXMgaW50byBhIDMyLWJpdCBpbnRlZ2VyDQorICAgIHN0YXRpYyBBUkdCIE1ha2VBUkdCKElOIEJZVEUgYSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gQllURSByLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBCWVRFIGcsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOIEJZVEUgYikNCisgICAgew0KKyAgICAgICAgcmV0dXJuICgoKEFSR0IpIChiKSA8PCAgQmx1ZVNoaWZ0KSB8DQorICAgICAgICAgICAgICAgICgoQVJHQikgKGcpIDw8IEdyZWVuU2hpZnQpIHwNCisgICAgICAgICAgICAgICAgKChBUkdCKSAocikgPDwgICBSZWRTaGlmdCkgfA0KKyAgICAgICAgICAgICAgICAoKEFSR0IpIChhKSA8PCBBbHBoYVNoaWZ0KSk7DQorICAgIH0NCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIEFSR0IgQXJnYjsNCit9Ow0KKw0KKyNlbmRpZg0KKw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNDb2xvck1hdHJpeC5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0NvbG9yTWF0cml4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFkOWViYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNDb2xvck1hdHJpeC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqDQorKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwgTWljcm9zb2Z0IENvcnAuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyoNCisqIE1vZHVsZSBOYW1lOg0KKyoNCisqICAgR2RpcGx1c0NvbG9yTWF0cml4LmgNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIENsYXNzIGZvciBjb2xvciBhZGp1c3RtZW50IG9iamVjdCBwYXNzZWQgdG8gR3JhcGhpY3MuRHJhd0ltYWdlDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9HRElQTFVTQ09MT1JNQVRSSVhfSA0KKyNkZWZpbmUgX0dESVBMVVNDT0xPUk1BVFJJWF9IDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ29sb3IgbWF0cml4DQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorc3RydWN0IENvbG9yTWF0cml4DQorew0KKyAgICBSRUFMIG1bNV1bNV07DQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDb2xvciBNYXRyaXggZmxhZ3MNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIENvbG9yTWF0cml4RmxhZ3MNCit7DQorICAgIENvbG9yTWF0cml4RmxhZ3NEZWZhdWx0ICAgPSAwLA0KKyAgICBDb2xvck1hdHJpeEZsYWdzU2tpcEdyYXlzID0gMSwNCisgICAgQ29sb3JNYXRyaXhGbGFnc0FsdEdyYXkgICA9IDINCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENvbG9yIEFkanVzdCBUeXBlDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBDb2xvckFkanVzdFR5cGUNCit7DQorICAgIENvbG9yQWRqdXN0VHlwZURlZmF1bHQsDQorICAgIENvbG9yQWRqdXN0VHlwZUJpdG1hcCwNCisgICAgQ29sb3JBZGp1c3RUeXBlQnJ1c2gsDQorICAgIENvbG9yQWRqdXN0VHlwZVBlbiwNCisgICAgQ29sb3JBZGp1c3RUeXBlVGV4dCwNCisgICAgQ29sb3JBZGp1c3RUeXBlQ291bnQsICAgLy8gbXVzdCBiZSBpbW1lZGlhdGVseSBhZnRlciBhbGwgdGhlIGluZGl2aWR1YWwgb25lcw0KKyAgICBDb2xvckFkanVzdFR5cGVBbnkgICAgICAvLyBpbnRlcm5hbCB1c2U6IGZvciBxdWVyeWluZyBpZiBhbnkgdHlwZSBoYXMgcmVjb2xvcmluZw0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ29sb3IgTWFwDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorc3RydWN0IENvbG9yTWFwDQorew0KKyAgICBDb2xvciBvbGRDb2xvcjsNCisgICAgQ29sb3IgbmV3Q29sb3I7DQorfTsNCisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzRW51bXMuaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNFbnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYTI5YzcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzRW51bXMuaApAQCAtMCwwICsxLDEyNTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqDQorKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwgTWljcm9zb2Z0IENvcnAuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyoNCisqIE1vZHVsZSBOYW1lOg0KKyoNCisqICAgR2RpcGx1c0VudW1zLmgNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIFZhcmlvdXMgZW51bWVyYXRpb24gdHlwZXMNCisqDQorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0dESVBMVVNFTlVNU19IDQorI2RlZmluZSBfR0RJUExVU0VOVU1TX0gNCisNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gRGVmYXVsdCBiZXppZXIgZmxhdHRlbmluZyB0b2xlcmFuY2UgaW4gZGV2aWNlIHBpeGVscy4NCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorY29uc3QgZmxvYXQgRmxhdG5lc3NEZWZhdWx0ID0gMS4wZi80LjBmOw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBHcmFwaGljcyBhbmQgQ29udGFpbmVyIFN0YXRlIGNvb2tpZXMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQordHlwZWRlZiBVSU5UICAgICBHcmFwaGljc1N0YXRlOw0KK3R5cGVkZWYgVUlOVCAgICAgR3JhcGhpY3NDb250YWluZXI7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEZpbGwgbW9kZSBjb25zdGFudHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBGaWxsTW9kZQ0KK3sNCisgICAgRmlsbE1vZGVBbHRlcm5hdGUsICAgICAgICAvLyAwDQorICAgIEZpbGxNb2RlV2luZGluZyAgICAgICAgICAgLy8gMQ0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFF1YWxpdHkgbW9kZSBjb25zdGFudHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBRdWFsaXR5TW9kZQ0KK3sNCisgICAgUXVhbGl0eU1vZGVJbnZhbGlkICAgPSAtMSwNCisgICAgUXVhbGl0eU1vZGVEZWZhdWx0ICAgPSAwLA0KKyAgICBRdWFsaXR5TW9kZUxvdyAgICAgICA9IDEsIC8vIGZvciBhcHBzIHRoYXQgbmVlZCB0aGUgYmVzdCBwZXJmb3JtYW5jZQ0KKyAgICBRdWFsaXR5TW9kZUhpZ2ggICAgICA9IDIgIC8vIGZvciBhcHBzIHRoYXQgbmVlZCB0aGUgYmVzdCByZW5kZXJpbmcgcXVhbGl0eQ0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEFscGhhIGNvbXBvc2l0aW5nIG1vZGUgY29uc3RhbnRzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gQ29tcG9zaXRpbmdNb2RlDQorew0KKyAgICBDb21wb3NpdGluZ01vZGVTb3VyY2VPdmVyLCAgICAvLyAwDQorICAgIENvbXBvc2l0aW5nTW9kZVNvdXJjZUNvcHkgICAgIC8vIDENCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBBbHBoYSBjb21wb3NpdGluZyBxdWFsaXR5IGNvbnN0YW50cw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIENvbXBvc2l0aW5nUXVhbGl0eQ0KK3sNCisgICAgQ29tcG9zaXRpbmdRdWFsaXR5SW52YWxpZCAgICAgICAgICA9IFF1YWxpdHlNb2RlSW52YWxpZCwNCisgICAgQ29tcG9zaXRpbmdRdWFsaXR5RGVmYXVsdCAgICAgICAgICA9IFF1YWxpdHlNb2RlRGVmYXVsdCwNCisgICAgQ29tcG9zaXRpbmdRdWFsaXR5SGlnaFNwZWVkICAgICAgICA9IFF1YWxpdHlNb2RlTG93LA0KKyAgICBDb21wb3NpdGluZ1F1YWxpdHlIaWdoUXVhbGl0eSAgICAgID0gUXVhbGl0eU1vZGVIaWdoLA0KKyAgICBDb21wb3NpdGluZ1F1YWxpdHlHYW1tYUNvcnJlY3RlZCwNCisgICAgQ29tcG9zaXRpbmdRdWFsaXR5QXNzdW1lTGluZWFyDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVW5pdCBjb25zdGFudHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBVbml0DQorew0KKyAgICBVbml0V29ybGQsICAgICAgLy8gMCAtLSBXb3JsZCBjb29yZGluYXRlIChub24tcGh5c2ljYWwgdW5pdCkNCisgICAgVW5pdERpc3BsYXksICAgIC8vIDEgLS0gVmFyaWFibGUgLS0gZm9yIFBhZ2VUcmFuc2Zvcm0gb25seQ0KKyAgICBVbml0UGl4ZWwsICAgICAgLy8gMiAtLSBFYWNoIHVuaXQgaXMgb25lIGRldmljZSBwaXhlbC4NCisgICAgVW5pdFBvaW50LCAgICAgIC8vIDMgLS0gRWFjaCB1bml0IGlzIGEgcHJpbnRlcidzIHBvaW50LCBvciAxLzcyIGluY2guDQorICAgIFVuaXRJbmNoLCAgICAgICAvLyA0IC0tIEVhY2ggdW5pdCBpcyAxIGluY2guDQorICAgIFVuaXREb2N1bWVudCwgICAvLyA1IC0tIEVhY2ggdW5pdCBpcyAxLzMwMCBpbmNoLg0KKyAgICBVbml0TWlsbGltZXRlciAgLy8gNiAtLSBFYWNoIHVuaXQgaXMgMSBtaWxsaW1ldGVyLg0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIE1ldGFmaWxlRnJhbWVVbml0DQorLy8NCisvLyBUaGUgZnJhbWVSZWN0IGZvciBjcmVhdGluZyBhIG1ldGFmaWxlIGNhbiBiZSBzcGVjaWZpZWQgaW4gYW55IG9mIHRoZXNlDQorLy8gdW5pdHMuICBUaGVyZSBpcyBhbiBleHRyYSBmcmFtZSB1bml0IHZhbHVlIChNZXRhZmlsZUZyYW1lVW5pdEdkaSkgc28NCisvLyB0aGF0IHVuaXRzIGNhbiBiZSBzdXBwbGllZCBpbiB0aGUgc2FtZSB1bml0cyB0aGF0IEdESSBleHBlY3RzIGZvcg0KKy8vIGZyYW1lIHJlY3RzIC0tIHRoZXNlIHVuaXRzIGFyZSBpbiAuMDEgKDEvMTAwdGhzKSBtaWxsaW1ldGVyIHVuaXRzDQorLy8gYXMgZGVmaW5lZCBieSBHREkuDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK2VudW0gTWV0YWZpbGVGcmFtZVVuaXQNCit7DQorICAgIE1ldGFmaWxlRnJhbWVVbml0UGl4ZWwgICAgICA9IFVuaXRQaXhlbCwNCisgICAgTWV0YWZpbGVGcmFtZVVuaXRQb2ludCAgICAgID0gVW5pdFBvaW50LA0KKyAgICBNZXRhZmlsZUZyYW1lVW5pdEluY2ggICAgICAgPSBVbml0SW5jaCwNCisgICAgTWV0YWZpbGVGcmFtZVVuaXREb2N1bWVudCAgID0gVW5pdERvY3VtZW50LA0KKyAgICBNZXRhZmlsZUZyYW1lVW5pdE1pbGxpbWV0ZXIgPSBVbml0TWlsbGltZXRlciwNCisgICAgTWV0YWZpbGVGcmFtZVVuaXRHZGkgICAgICAgICAgICAgICAgICAgICAgICAvLyBHREkgY29tcGF0aWJsZSAuMDEgTU0gdW5pdHMNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDb29yZGluYXRlIHNwYWNlIGlkZW50aWZpZXJzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gQ29vcmRpbmF0ZVNwYWNlDQorew0KKyAgICBDb29yZGluYXRlU3BhY2VXb3JsZCwgICAgIC8vIDANCisgICAgQ29vcmRpbmF0ZVNwYWNlUGFnZSwgICAgICAvLyAxDQorICAgIENvb3JkaW5hdGVTcGFjZURldmljZSAgICAgLy8gMg0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFZhcmlvdXMgd3JhcCBtb2RlcyBmb3IgYnJ1c2hlcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIFdyYXBNb2RlDQorew0KKyAgICBXcmFwTW9kZVRpbGUsICAgICAgICAvLyAwDQorICAgIFdyYXBNb2RlVGlsZUZsaXBYLCAgIC8vIDENCisgICAgV3JhcE1vZGVUaWxlRmxpcFksICAgLy8gMg0KKyAgICBXcmFwTW9kZVRpbGVGbGlwWFksICAvLyAzDQorICAgIFdyYXBNb2RlQ2xhbXAgICAgICAgIC8vIDQNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBWYXJpb3VzIGhhdGNoIHN0eWxlcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIEhhdGNoU3R5bGUNCit7DQorICAgIEhhdGNoU3R5bGVIb3Jpem9udGFsLCAgICAgICAgICAgICAgICAgICAvLyAwDQorICAgIEhhdGNoU3R5bGVWZXJ0aWNhbCwgICAgICAgICAgICAgICAgICAgICAvLyAxDQorICAgIEhhdGNoU3R5bGVGb3J3YXJkRGlhZ29uYWwsICAgICAgICAgICAgICAvLyAyDQorICAgIEhhdGNoU3R5bGVCYWNrd2FyZERpYWdvbmFsLCAgICAgICAgICAgICAvLyAzDQorICAgIEhhdGNoU3R5bGVDcm9zcywgICAgICAgICAgICAgICAgICAgICAgICAvLyA0DQorICAgIEhhdGNoU3R5bGVEaWFnb25hbENyb3NzLCAgICAgICAgICAgICAgICAvLyA1DQorICAgIEhhdGNoU3R5bGUwNVBlcmNlbnQsICAgICAgICAgICAgICAgICAgICAvLyA2DQorICAgIEhhdGNoU3R5bGUxMFBlcmNlbnQsICAgICAgICAgICAgICAgICAgICAvLyA3DQorICAgIEhhdGNoU3R5bGUyMFBlcmNlbnQsICAgICAgICAgICAgICAgICAgICAvLyA4DQorICAgIEhhdGNoU3R5bGUyNVBlcmNlbnQsICAgICAgICAgICAgICAgICAgICAvLyA5DQorICAgIEhhdGNoU3R5bGUzMFBlcmNlbnQsICAgICAgICAgICAgICAgICAgICAvLyAxMA0KKyAgICBIYXRjaFN0eWxlNDBQZXJjZW50LCAgICAgICAgICAgICAgICAgICAgLy8gMTENCisgICAgSGF0Y2hTdHlsZTUwUGVyY2VudCwgICAgICAgICAgICAgICAgICAgIC8vIDEyDQorICAgIEhhdGNoU3R5bGU2MFBlcmNlbnQsICAgICAgICAgICAgICAgICAgICAvLyAxMw0KKyAgICBIYXRjaFN0eWxlNzBQZXJjZW50LCAgICAgICAgICAgICAgICAgICAgLy8gMTQNCisgICAgSGF0Y2hTdHlsZTc1UGVyY2VudCwgICAgICAgICAgICAgICAgICAgIC8vIDE1DQorICAgIEhhdGNoU3R5bGU4MFBlcmNlbnQsICAgICAgICAgICAgICAgICAgICAvLyAxNg0KKyAgICBIYXRjaFN0eWxlOTBQZXJjZW50LCAgICAgICAgICAgICAgICAgICAgLy8gMTcNCisgICAgSGF0Y2hTdHlsZUxpZ2h0RG93bndhcmREaWFnb25hbCwgICAgICAgIC8vIDE4DQorICAgIEhhdGNoU3R5bGVMaWdodFVwd2FyZERpYWdvbmFsLCAgICAgICAgICAvLyAxOQ0KKyAgICBIYXRjaFN0eWxlRGFya0Rvd253YXJkRGlhZ29uYWwsICAgICAgICAgLy8gMjANCisgICAgSGF0Y2hTdHlsZURhcmtVcHdhcmREaWFnb25hbCwgICAgICAgICAgIC8vIDIxDQorICAgIEhhdGNoU3R5bGVXaWRlRG93bndhcmREaWFnb25hbCwgICAgICAgICAvLyAyMg0KKyAgICBIYXRjaFN0eWxlV2lkZVVwd2FyZERpYWdvbmFsLCAgICAgICAgICAgLy8gMjMNCisgICAgSGF0Y2hTdHlsZUxpZ2h0VmVydGljYWwsICAgICAgICAgICAgICAgIC8vIDI0DQorICAgIEhhdGNoU3R5bGVMaWdodEhvcml6b250YWwsICAgICAgICAgICAgICAvLyAyNQ0KKyAgICBIYXRjaFN0eWxlTmFycm93VmVydGljYWwsICAgICAgICAgICAgICAgLy8gMjYNCisgICAgSGF0Y2hTdHlsZU5hcnJvd0hvcml6b250YWwsICAgICAgICAgICAgIC8vIDI3DQorICAgIEhhdGNoU3R5bGVEYXJrVmVydGljYWwsICAgICAgICAgICAgICAgICAvLyAyOA0KKyAgICBIYXRjaFN0eWxlRGFya0hvcml6b250YWwsICAgICAgICAgICAgICAgLy8gMjkNCisgICAgSGF0Y2hTdHlsZURhc2hlZERvd253YXJkRGlhZ29uYWwsICAgICAgIC8vIDMwDQorICAgIEhhdGNoU3R5bGVEYXNoZWRVcHdhcmREaWFnb25hbCwgICAgICAgICAvLyAzMQ0KKyAgICBIYXRjaFN0eWxlRGFzaGVkSG9yaXpvbnRhbCwgICAgICAgICAgICAgLy8gMzINCisgICAgSGF0Y2hTdHlsZURhc2hlZFZlcnRpY2FsLCAgICAgICAgICAgICAgIC8vIDMzDQorICAgIEhhdGNoU3R5bGVTbWFsbENvbmZldHRpLCAgICAgICAgICAgICAgICAvLyAzNA0KKyAgICBIYXRjaFN0eWxlTGFyZ2VDb25mZXR0aSwgICAgICAgICAgICAgICAgLy8gMzUNCisgICAgSGF0Y2hTdHlsZVppZ1phZywgICAgICAgICAgICAgICAgICAgICAgIC8vIDM2DQorICAgIEhhdGNoU3R5bGVXYXZlLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzNw0KKyAgICBIYXRjaFN0eWxlRGlhZ29uYWxCcmljaywgICAgICAgICAgICAgICAgLy8gMzgNCisgICAgSGF0Y2hTdHlsZUhvcml6b250YWxCcmljaywgICAgICAgICAgICAgIC8vIDM5DQorICAgIEhhdGNoU3R5bGVXZWF2ZSwgICAgICAgICAgICAgICAgICAgICAgICAvLyA0MA0KKyAgICBIYXRjaFN0eWxlUGxhaWQsICAgICAgICAgICAgICAgICAgICAgICAgLy8gNDENCisgICAgSGF0Y2hTdHlsZURpdm90LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDQyDQorICAgIEhhdGNoU3R5bGVEb3R0ZWRHcmlkLCAgICAgICAgICAgICAgICAgICAvLyA0Mw0KKyAgICBIYXRjaFN0eWxlRG90dGVkRGlhbW9uZCwgICAgICAgICAgICAgICAgLy8gNDQNCisgICAgSGF0Y2hTdHlsZVNoaW5nbGUsICAgICAgICAgICAgICAgICAgICAgIC8vIDQ1DQorICAgIEhhdGNoU3R5bGVUcmVsbGlzLCAgICAgICAgICAgICAgICAgICAgICAvLyA0Ng0KKyAgICBIYXRjaFN0eWxlU3BoZXJlLCAgICAgICAgICAgICAgICAgICAgICAgLy8gNDcNCisgICAgSGF0Y2hTdHlsZVNtYWxsR3JpZCwgICAgICAgICAgICAgICAgICAgIC8vIDQ4DQorICAgIEhhdGNoU3R5bGVTbWFsbENoZWNrZXJCb2FyZCwgICAgICAgICAgICAvLyA0OQ0KKyAgICBIYXRjaFN0eWxlTGFyZ2VDaGVja2VyQm9hcmQsICAgICAgICAgICAgLy8gNTANCisgICAgSGF0Y2hTdHlsZU91dGxpbmVkRGlhbW9uZCwgICAgICAgICAgICAgIC8vIDUxDQorICAgIEhhdGNoU3R5bGVTb2xpZERpYW1vbmQsICAgICAgICAgICAgICAgICAvLyA1Mg0KKw0KKyAgICBIYXRjaFN0eWxlVG90YWwsICAgIC8vIG11c3QgYmUgYWZ0ZXIgYWxsIHVuaXF1ZSBoYXRjaCBzdHlsZXMNCisNCisgICAgSGF0Y2hTdHlsZUxhcmdlR3JpZCA9IEhhdGNoU3R5bGVDcm9zcywgIC8vIDQgIGFuIGFsaWFzIGZvciB0aGUgY3Jvc3Mgc3R5bGUNCisNCisgICAgSGF0Y2hTdHlsZU1pbiAgICAgICA9IEhhdGNoU3R5bGVIb3Jpem9udGFsLA0KKyAgICBIYXRjaFN0eWxlTWF4ICAgICAgID0gSGF0Y2hTdHlsZVRvdGFsIC0gMSwNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBEYXNoIHN0eWxlIGNvbnN0YW50cw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIERhc2hTdHlsZQ0KK3sNCisgICAgRGFzaFN0eWxlU29saWQsICAgICAgICAgIC8vIDANCisgICAgRGFzaFN0eWxlRGFzaCwgICAgICAgICAgIC8vIDENCisgICAgRGFzaFN0eWxlRG90LCAgICAgICAgICAgIC8vIDINCisgICAgRGFzaFN0eWxlRGFzaERvdCwgICAgICAgIC8vIDMNCisgICAgRGFzaFN0eWxlRGFzaERvdERvdCwgICAgIC8vIDQNCisgICAgRGFzaFN0eWxlQ3VzdG9tICAgICAgICAgIC8vIDUNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBEYXNoIGNhcCBjb25zdGFudHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBEYXNoQ2FwDQorew0KKyAgICBEYXNoQ2FwRmxhdCAgICAgICAgICAgICA9IDAsDQorICAgIERhc2hDYXBSb3VuZCAgICAgICAgICAgID0gMiwNCisgICAgRGFzaENhcFRyaWFuZ2xlICAgICAgICAgPSAzDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gTGluZSBjYXAgY29uc3RhbnRzIChvbmx5IHRoZSBsb3dlc3QgOCBiaXRzIGFyZSB1c2VkKS4NCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBMaW5lQ2FwDQorew0KKyAgICBMaW5lQ2FwRmxhdCAgICAgICAgICAgICA9IDAsDQorICAgIExpbmVDYXBTcXVhcmUgICAgICAgICAgID0gMSwNCisgICAgTGluZUNhcFJvdW5kICAgICAgICAgICAgPSAyLA0KKyAgICBMaW5lQ2FwVHJpYW5nbGUgICAgICAgICA9IDMsDQorDQorICAgIExpbmVDYXBOb0FuY2hvciAgICAgICAgID0gMHgxMCwgLy8gY29ycmVzcG9uZHMgdG8gZmxhdCBjYXANCisgICAgTGluZUNhcFNxdWFyZUFuY2hvciAgICAgPSAweDExLCAvLyBjb3JyZXNwb25kcyB0byBzcXVhcmUgY2FwDQorICAgIExpbmVDYXBSb3VuZEFuY2hvciAgICAgID0gMHgxMiwgLy8gY29ycmVzcG9uZHMgdG8gcm91bmQgY2FwDQorICAgIExpbmVDYXBEaWFtb25kQW5jaG9yICAgID0gMHgxMywgLy8gY29ycmVzcG9uZHMgdG8gdHJpYW5nbGUgY2FwDQorICAgIExpbmVDYXBBcnJvd0FuY2hvciAgICAgID0gMHgxNCwgLy8gbm8gY29ycmVzcG9uZGVuY2UNCisNCisgICAgTGluZUNhcEN1c3RvbSAgICAgICAgICAgPSAweGZmLCAvLyBjdXN0b20gY2FwDQorDQorICAgIExpbmVDYXBBbmNob3JNYXNrICAgICAgID0gMHhmMCAgLy8gbWFzayB0byBjaGVjayBmb3IgYW5jaG9yIG9yIG5vdC4NCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDdXN0b20gTGluZSBjYXAgdHlwZSBjb25zdGFudHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBDdXN0b21MaW5lQ2FwVHlwZQ0KK3sNCisgICAgQ3VzdG9tTGluZUNhcFR5cGVEZWZhdWx0ICAgICAgICAgPSAwLA0KKyAgICBDdXN0b21MaW5lQ2FwVHlwZUFkanVzdGFibGVBcnJvdyA9IDENCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBMaW5lIGpvaW4gY29uc3RhbnRzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gTGluZUpvaW4NCit7DQorICAgIExpbmVKb2luTWl0ZXIgICAgICAgID0gMCwNCisgICAgTGluZUpvaW5CZXZlbCAgICAgICAgPSAxLA0KKyAgICBMaW5lSm9pblJvdW5kICAgICAgICA9IDIsDQorICAgIExpbmVKb2luTWl0ZXJDbGlwcGVkID0gMw0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFBhdGggcG9pbnQgdHlwZXMgKG9ubHkgdGhlIGxvd2VzdCA4IGJpdHMgYXJlIHVzZWQuKQ0KKy8vICBUaGUgbG93ZXN0IDMgYml0cyBhcmUgaW50ZXJwcmV0ZWQgYXMgcG9pbnQgdHlwZQ0KKy8vICBUaGUgaGlnaGVyIDUgYml0cyBhcmUgcmVzZXJ2ZWQgZm9yIGZsYWdzLg0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIFBhdGhQb2ludFR5cGUNCit7DQorICAgIFBhdGhQb2ludFR5cGVTdGFydCAgICAgICAgICAgPSAwLCAgICAvLyBtb3ZlDQorICAgIFBhdGhQb2ludFR5cGVMaW5lICAgICAgICAgICAgPSAxLCAgICAvLyBsaW5lDQorICAgIFBhdGhQb2ludFR5cGVCZXppZXIgICAgICAgICAgPSAzLCAgICAvLyBkZWZhdWx0IEJlaXplciAoPSBjdWJpYyBCZXppZXIpDQorICAgIFBhdGhQb2ludFR5cGVQYXRoVHlwZU1hc2sgICAgPSAweDA3LCAvLyB0eXBlIG1hc2sgKGxvd2VzdCAzIGJpdHMpLg0KKyAgICBQYXRoUG9pbnRUeXBlRGFzaE1vZGUgICAgICAgID0gMHgxMCwgLy8gY3VycmVudGx5IGluIGRhc2ggbW9kZS4NCisgICAgUGF0aFBvaW50VHlwZVBhdGhNYXJrZXIgICAgICA9IDB4MjAsIC8vIGEgbWFya2VyIGZvciB0aGUgcGF0aC4NCisgICAgUGF0aFBvaW50VHlwZUNsb3NlU3VicGF0aCAgICA9IDB4ODAsIC8vIGNsb3NlZCBmbGFnDQorDQorICAgIC8vIFBhdGggdHlwZXMgdXNlZCBmb3IgYWR2YW5jZWQgcGF0aC4NCisNCisgICAgUGF0aFBvaW50VHlwZUJlemllcjIgICAgPSAyLCAgICAvLyBxdWFkcmF0aWMgQmVpemVyDQorICAgIFBhdGhQb2ludFR5cGVCZXppZXIzICAgID0gMywgICAgLy8gY3ViaWMgQmV6aWVyDQorICAgIFBhdGhQb2ludFR5cGVCZXppZXI0ICAgID0gNCwgICAgLy8gcXVhcnRpYyAoNHRoIG9yZGVyKSBCZWl6ZXINCisgICAgUGF0aFBvaW50VHlwZUJlemllcjUgICAgPSA1LCAgICAvLyBxdWludGljICg1dGggb3JkZXIpIEJlemllcg0KKyAgICBQYXRoUG9pbnRUeXBlQmV6aWVyNiAgICA9IDYgICAgIC8vIGhleGFpYyAoNnRoIG9yZGVyKSBCZXppZXINCit9Ow0KKw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBXYXJwTW9kZSBjb25zdGFudHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBXYXJwTW9kZQ0KK3sNCisgICAgV2FycE1vZGVQZXJzcGVjdGl2ZSwgICAgLy8gMA0KKyAgICBXYXJwTW9kZUJpbGluZWFyICAgICAgICAvLyAxDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gTGluZUdyYWRpZW50IE1vZGUNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBMaW5lYXJHcmFkaWVudE1vZGUNCit7DQorICAgIExpbmVhckdyYWRpZW50TW9kZUhvcml6b250YWwsICAgICAgICAgLy8gMA0KKyAgICBMaW5lYXJHcmFkaWVudE1vZGVWZXJ0aWNhbCwgICAgICAgICAgIC8vIDENCisgICAgTGluZWFyR3JhZGllbnRNb2RlRm9yd2FyZERpYWdvbmFsLCAgICAvLyAyDQorICAgIExpbmVhckdyYWRpZW50TW9kZUJhY2t3YXJkRGlhZ29uYWwgICAgLy8gMw0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFJlZ2lvbiBDb21pbmUgTW9kZXMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBDb21iaW5lTW9kZQ0KK3sNCisgICAgQ29tYmluZU1vZGVSZXBsYWNlLCAgICAgLy8gMA0KKyAgICBDb21iaW5lTW9kZUludGVyc2VjdCwgICAvLyAxDQorICAgIENvbWJpbmVNb2RlVW5pb24sICAgICAgIC8vIDINCisgICAgQ29tYmluZU1vZGVYb3IsICAgICAgICAgLy8gMw0KKyAgICBDb21iaW5lTW9kZUV4Y2x1ZGUsICAgICAvLyA0DQorICAgIENvbWJpbmVNb2RlQ29tcGxlbWVudCAgIC8vIDUgKGRvZXMgZXhjbHVkZSBmcm9tKQ0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAvLyBJbWFnZSB0eXBlcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIEltYWdlVHlwZQ0KK3sNCisgICAgSW1hZ2VUeXBlVW5rbm93biwgICAvLyAwDQorICAgIEltYWdlVHlwZUJpdG1hcCwgICAgLy8gMQ0KKyAgICBJbWFnZVR5cGVNZXRhZmlsZSAgIC8vIDINCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBJbnRlcnBvbGF0aW9uIG1vZGVzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gSW50ZXJwb2xhdGlvbk1vZGUNCit7DQorICAgIEludGVycG9sYXRpb25Nb2RlSW52YWxpZCAgICAgICAgICA9IFF1YWxpdHlNb2RlSW52YWxpZCwNCisgICAgSW50ZXJwb2xhdGlvbk1vZGVEZWZhdWx0ICAgICAgICAgID0gUXVhbGl0eU1vZGVEZWZhdWx0LA0KKyAgICBJbnRlcnBvbGF0aW9uTW9kZUxvd1F1YWxpdHkgICAgICAgPSBRdWFsaXR5TW9kZUxvdywNCisgICAgSW50ZXJwb2xhdGlvbk1vZGVIaWdoUXVhbGl0eSAgICAgID0gUXVhbGl0eU1vZGVIaWdoLA0KKyAgICBJbnRlcnBvbGF0aW9uTW9kZUJpbGluZWFyLA0KKyAgICBJbnRlcnBvbGF0aW9uTW9kZUJpY3ViaWMsDQorICAgIEludGVycG9sYXRpb25Nb2RlTmVhcmVzdE5laWdoYm9yLA0KKyAgICBJbnRlcnBvbGF0aW9uTW9kZUhpZ2hRdWFsaXR5QmlsaW5lYXIsDQorICAgIEludGVycG9sYXRpb25Nb2RlSGlnaFF1YWxpdHlCaWN1YmljDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gUGVuIHR5cGVzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK2VudW0gUGVuQWxpZ25tZW50DQorew0KKyAgICBQZW5BbGlnbm1lbnRDZW50ZXIgICAgICAgPSAwLA0KKyAgICBQZW5BbGlnbm1lbnRJbnNldCAgICAgICAgPSAxLA0KKyAgICBQZW5BbGlnbm1lbnRPdXRzZXQgICAgICAgPSAyLA0KKyAgICBQZW5BbGlnbm1lbnRMZWZ0ICAgICAgICAgPSAzLA0KKyAgICBQZW5BbGlnbm1lbnRSaWdodCAgICAgICAgPSA0DQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQnJ1c2ggdHlwZXMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBCcnVzaFR5cGUNCit7DQorICAgQnJ1c2hUeXBlU29saWRDb2xvciAgICAgICA9IDAsDQorICAgQnJ1c2hUeXBlSGF0Y2hGaWxsICAgICAgICA9IDEsDQorICAgQnJ1c2hUeXBlVGV4dHVyZUZpbGwgICAgICA9IDIsDQorICAgQnJ1c2hUeXBlUGF0aEdyYWRpZW50ICAgICA9IDMsDQorICAgQnJ1c2hUeXBlTGluZWFyR3JhZGllbnQgICA9IDQNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBQZW4ncyBGaWxsIHR5cGVzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gUGVuVHlwZQ0KK3sNCisgICBQZW5UeXBlU29saWRDb2xvciAgICAgICA9IEJydXNoVHlwZVNvbGlkQ29sb3IsDQorICAgUGVuVHlwZUhhdGNoRmlsbCAgICAgICAgPSBCcnVzaFR5cGVIYXRjaEZpbGwsDQorICAgUGVuVHlwZVRleHR1cmVGaWxsICAgICAgPSBCcnVzaFR5cGVUZXh0dXJlRmlsbCwNCisgICBQZW5UeXBlUGF0aEdyYWRpZW50ICAgICA9IEJydXNoVHlwZVBhdGhHcmFkaWVudCwNCisgICBQZW5UeXBlTGluZWFyR3JhZGllbnQgICA9IEJydXNoVHlwZUxpbmVhckdyYWRpZW50LA0KKyAgIFBlblR5cGVVbmtub3duICAgICAgICAgID0gLTENCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBNYXRyaXggT3JkZXINCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBNYXRyaXhPcmRlcg0KK3sNCisgICAgTWF0cml4T3JkZXJQcmVwZW5kICAgID0gMCwNCisgICAgTWF0cml4T3JkZXJBcHBlbmQgICAgID0gMQ0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEdlbmVyaWMgZm9udCBmYW1pbGllcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIEdlbmVyaWNGb250RmFtaWx5DQorew0KKyAgICBHZW5lcmljRm9udEZhbWlseVNlcmlmLA0KKyAgICBHZW5lcmljRm9udEZhbWlseVNhbnNTZXJpZiwNCisgICAgR2VuZXJpY0ZvbnRGYW1pbHlNb25vc3BhY2UNCisNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBGb250U3R5bGU6IGZhY2UgdHlwZXMgYW5kIGNvbW1vbiBzdHlsZXMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorLy8gIFRoZXNlIHNob3VsZCBwcm9iYWJseSBiZSBmbGFncw0KKw0KKy8vICBNdXN0IGhhdmU6DQorLy8gICAgICBSZWd1bGFyID0gMA0KKy8vICAgICAgQm9sZCA9IDENCisvLyAgICAgIEl0YWxpYyA9IDINCisvLyAgICAgIEJvbGRJdGFsaWMgPSAzDQorDQorZW51bSBGb250U3R5bGUNCit7DQorICAgIEZvbnRTdHlsZVJlZ3VsYXIgICAgPSAwLA0KKyAgICBGb250U3R5bGVCb2xkICAgICAgID0gMSwNCisgICAgRm9udFN0eWxlSXRhbGljICAgICA9IDIsDQorICAgIEZvbnRTdHlsZUJvbGRJdGFsaWMgPSAzLA0KKyAgICBGb250U3R5bGVVbmRlcmxpbmUgID0gNCwNCisgICAgRm9udFN0eWxlU3RyaWtlb3V0ICA9IDgNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gU21vb3RoaW5nIE1vZGUNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gU21vb3RoaW5nTW9kZQ0KK3sNCisgICAgU21vb3RoaW5nTW9kZUludmFsaWQgICAgID0gUXVhbGl0eU1vZGVJbnZhbGlkLA0KKyAgICBTbW9vdGhpbmdNb2RlRGVmYXVsdCAgICAgPSBRdWFsaXR5TW9kZURlZmF1bHQsDQorICAgIFNtb290aGluZ01vZGVIaWdoU3BlZWQgICA9IFF1YWxpdHlNb2RlTG93LA0KKyAgICBTbW9vdGhpbmdNb2RlSGlnaFF1YWxpdHkgPSBRdWFsaXR5TW9kZUhpZ2gsDQorICAgIFNtb290aGluZ01vZGVOb25lLA0KKyAgICBTbW9vdGhpbmdNb2RlQW50aUFsaWFzDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFBpeGVsIEZvcm1hdCBNb2RlDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIFBpeGVsT2Zmc2V0TW9kZQ0KK3sNCisgICAgUGl4ZWxPZmZzZXRNb2RlSW52YWxpZCAgICAgPSBRdWFsaXR5TW9kZUludmFsaWQsDQorICAgIFBpeGVsT2Zmc2V0TW9kZURlZmF1bHQgICAgID0gUXVhbGl0eU1vZGVEZWZhdWx0LA0KKyAgICBQaXhlbE9mZnNldE1vZGVIaWdoU3BlZWQgICA9IFF1YWxpdHlNb2RlTG93LA0KKyAgICBQaXhlbE9mZnNldE1vZGVIaWdoUXVhbGl0eSA9IFF1YWxpdHlNb2RlSGlnaCwNCisgICAgUGl4ZWxPZmZzZXRNb2RlTm9uZSwgICAgLy8gbm8gcGl4ZWwgb2Zmc2V0DQorICAgIFBpeGVsT2Zmc2V0TW9kZUhhbGYgICAgIC8vIG9mZnNldCBieSAtMC41LCAtMC41IGZvciBmYXN0IGFudGktYWxpYXMgcGVyZg0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUZXh0IFJlbmRlcmluZyBIaW50DQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIFRleHRSZW5kZXJpbmdIaW50DQorew0KKyNpZmRlZiBEQ1JfVVNFX05FV18xODY3NjQNCisgICAgVGV4dFJlbmRlcmluZ0hpbnRTeXN0ZW1EZWZhdWx0ID0gMCwgICAgICAgICAgICAvLyBHbHlwaCB3aXRoIHN5c3RlbSBkZWZhdWx0IHJlbmRlcmluZyBoaW50DQorICAgIFRleHRSZW5kZXJpbmdIaW50U2luZ2xlQml0UGVyUGl4ZWxHcmlkRml0LCAgICAgLy8gR2x5cGggYml0bWFwIHdpdGggaGludGluZw0KKyNlbHNlDQorICAgIFRleHRSZW5kZXJpbmdIaW50U2luZ2xlQml0UGVyUGl4ZWxHcmlkRml0ID0gMCwgLy8gR2x5cGggYml0bWFwIHdpdGggaGludGluZw0KKyNlbmRpZiAvLyBEQ1JfVVNFX05FV18xODY3NjQNCisgICAgVGV4dFJlbmRlcmluZ0hpbnRTaW5nbGVCaXRQZXJQaXhlbCwgICAgICAgICAgICAvLyBHbHlwaCBiaXRtYXAgd2l0aG91dCBoaW50aW5nDQorICAgIFRleHRSZW5kZXJpbmdIaW50QW50aUFsaWFzR3JpZEZpdCwgICAgICAgICAgICAgLy8gR2x5cGggYW50aS1hbGlhcyBiaXRtYXAgd2l0aCBoaW50aW5nDQorICAgIFRleHRSZW5kZXJpbmdIaW50QW50aUFsaWFzLCAgICAgICAgICAgICAgICAgICAgLy8gR2x5cGggYW50aS1hbGlhcyBiaXRtYXAgd2l0aG91dCBoaW50aW5nDQorICAgIFRleHRSZW5kZXJpbmdIaW50Q2xlYXJUeXBlR3JpZEZpdCAgICAgICAgICAgICAgLy8gR2x5cGggQ1QgYml0bWFwIHdpdGggaGludGluZw0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBNZXRhZmlsZSBUeXBlcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorZW51bSBNZXRhZmlsZVR5cGUNCit7DQorICAgIE1ldGFmaWxlVHlwZUludmFsaWQsICAgICAgICAgICAgLy8gSW52YWxpZCBtZXRhZmlsZQ0KKyAgICBNZXRhZmlsZVR5cGVXbWYsICAgICAgICAgICAgICAgIC8vIFN0YW5kYXJkIFdNRg0KKyAgICBNZXRhZmlsZVR5cGVXbWZBbGR1cywgICAgICAgICAgIC8vIEFsZHVzIFBsYWNlYWJsZSBNZXRhZmlsZSBmb3JtYXQNCisgICAgTWV0YWZpbGVUeXBlRW1mLCAgICAgICAgICAgICAgICAvLyBFTUYgKG5vdCBFTUYrKQ0KKyAgICBNZXRhZmlsZVR5cGVFbWZQbHVzT25seSwgICAgICAgIC8vIEVNRisgd2l0aG91dCBkdWFsLCBkb3duLWxldmVsIHJlY29yZHMNCisgICAgTWV0YWZpbGVUeXBlRW1mUGx1c0R1YWwgICAgICAgICAvLyBFTUYrIHdpdGggZHVhbCwgZG93bi1sZXZlbCByZWNvcmRzDQorfTsNCisNCisvLyBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgRU1GIHRvIHJlY29yZA0KK2VudW0gRW1mVHlwZQ0KK3sNCisgICAgRW1mVHlwZUVtZk9ubHkgICAgID0gTWV0YWZpbGVUeXBlRW1mLCAgICAgICAgICAvLyBubyBFTUYrLCBvbmx5IEVNRg0KKyAgICBFbWZUeXBlRW1mUGx1c09ubHkgPSBNZXRhZmlsZVR5cGVFbWZQbHVzT25seSwgIC8vIG5vIEVNRiwgb25seSBFTUYrDQorICAgIEVtZlR5cGVFbWZQbHVzRHVhbCA9IE1ldGFmaWxlVHlwZUVtZlBsdXNEdWFsICAgLy8gYm90aCBFTUYrIGFuZCBFTUYNCit9Ow0KKw0KKy8vIEFsbCBwZXJzaXN0ZW50IG9iamVjdHMgbXVzdCBoYXZlIGEgdHlwZSBsaXN0ZWQgaGVyZQ0KK2VudW0gT2JqZWN0VHlwZQ0KK3sNCisgICAgT2JqZWN0VHlwZUludmFsaWQsDQorICAgIE9iamVjdFR5cGVCcnVzaCwNCisgICAgT2JqZWN0VHlwZVBlbiwNCisgICAgT2JqZWN0VHlwZVBhdGgsDQorICAgIE9iamVjdFR5cGVSZWdpb24sDQorICAgIE9iamVjdFR5cGVJbWFnZSwNCisgICAgT2JqZWN0VHlwZUZvbnQsDQorICAgIE9iamVjdFR5cGVTdHJpbmdGb3JtYXQsDQorICAgIE9iamVjdFR5cGVJbWFnZUF0dHJpYnV0ZXMsDQorICAgIE9iamVjdFR5cGVDdXN0b21MaW5lQ2FwLA0KKw0KKyAgICBPYmplY3RUeXBlTWF4ID0gT2JqZWN0VHlwZUN1c3RvbUxpbmVDYXAsDQorICAgIE9iamVjdFR5cGVNaW4gPSBPYmplY3RUeXBlQnJ1c2gNCit9Ow0KKw0KK2lubGluZSBCT09MDQorT2JqZWN0VHlwZUlzVmFsaWQoDQorICAgIE9iamVjdFR5cGUgICAgICB0eXBlDQorICAgICkNCit7DQorICAgIHJldHVybiAoKHR5cGUgPj0gT2JqZWN0VHlwZU1pbikgJiYgKHR5cGUgPD0gT2JqZWN0VHlwZU1heCkpOw0KK30NCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEVNRisgUmVjb3Jkcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorLy8gV2UgaGF2ZSB0byBjaGFuZ2UgdGhlIFdNRiByZWNvcmQgbnVtYmVycyBzbyB0aGF0IHRoZXkgZG9uJ3QgY29uZmxpY3Qgd2l0aA0KKy8vIHRoZSBFTUYgYW5kIEVNRisgcmVjb3JkIG51bWJlcnMuDQorZW51bSBFbWZQbHVzUmVjb3JkVHlwZTsNCisjZGVmaW5lIEdESVBfRU1GUExVU19SRUNPUkRfQkFTRSAgICAgICAgMHgwMDAwNDAwMA0KKyNkZWZpbmUgR0RJUF9XTUZfUkVDT1JEX0JBU0UgICAgICAgICAgICAweDAwMDEwMDAwDQorI2RlZmluZSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhuKSAgICgoRW1mUGx1c1JlY29yZFR5cGUpKChuKSB8IEdESVBfV01GX1JFQ09SRF9CQVNFKSkNCisjZGVmaW5lIEdESVBfRU1GUExVU19SRUNPUkRfVE9fV01GKG4pICAgKChuKSAmICh+R0RJUF9XTUZfUkVDT1JEX0JBU0UpKQ0KKyNkZWZpbmUgR0RJUF9JU19XTUZfUkVDT1JEVFlQRShuKSAgICAgICAoKChuKSAmIEdESVBfV01GX1JFQ09SRF9CQVNFKSAhPSAwKQ0KKw0KK2VudW0gRW1mUGx1c1JlY29yZFR5cGUNCit7DQorICAgLy8gU2luY2Ugd2UgaGF2ZSB0byBlbnVtZXJhdGUgR0RJIHJlY29yZHMgcmlnaHQgYWxvbmcgd2l0aCBHREkrIHJlY29yZHMsDQorICAgLy8gd2UgbGlzdCBhbGwgdGhlIEdESSByZWNvcmRzIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBiZSBwYXJ0IG9mIHRoZQ0KKyAgIC8vIHNhbWUgZW51bWVyYXRpb24gdHlwZSB3aGljaCBpcyB1c2VkIGluIHRoZSBlbnVtZXJhdGlvbiBjYWxsYmFjay4NCisNCisgICAgV21mUmVjb3JkVHlwZVNldEJrQ29sb3IgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9TRVRCS0NPTE9SKSwNCisgICAgV21mUmVjb3JkVHlwZVNldEJrTW9kZSAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9TRVRCS01PREUpLA0KKyAgICBXbWZSZWNvcmRUeXBlU2V0TWFwTW9kZSAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NFVE1BUE1PREUpLA0KKyAgICBXbWZSZWNvcmRUeXBlU2V0Uk9QMiAgICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NFVFJPUDIpLA0KKyAgICBXbWZSZWNvcmRUeXBlU2V0UmVsQWJzICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NFVFJFTEFCUyksDQorICAgIFdtZlJlY29yZFR5cGVTZXRQb2x5RmlsbE1vZGUgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfU0VUUE9MWUZJTExNT0RFKSwNCisgICAgV21mUmVjb3JkVHlwZVNldFN0cmV0Y2hCbHRNb2RlICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9TRVRTVFJFVENIQkxUTU9ERSksDQorICAgIFdtZlJlY29yZFR5cGVTZXRUZXh0Q2hhckV4dHJhICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfU0VUVEVYVENIQVJFWFRSQSksDQorICAgIFdtZlJlY29yZFR5cGVTZXRUZXh0Q29sb3IgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfU0VUVEVYVENPTE9SKSwNCisgICAgV21mUmVjb3JkVHlwZVNldFRleHRKdXN0aWZpY2F0aW9uICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9TRVRURVhUSlVTVElGSUNBVElPTiksDQorICAgIFdtZlJlY29yZFR5cGVTZXRXaW5kb3dPcmcgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfU0VUV0lORE9XT1JHKSwNCisgICAgV21mUmVjb3JkVHlwZVNldFdpbmRvd0V4dCAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9TRVRXSU5ET1dFWFQpLA0KKyAgICBXbWZSZWNvcmRUeXBlU2V0Vmlld3BvcnRPcmcgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NFVFZJRVdQT1JUT1JHKSwNCisgICAgV21mUmVjb3JkVHlwZVNldFZpZXdwb3J0RXh0ICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9TRVRWSUVXUE9SVEVYVCksDQorICAgIFdtZlJlY29yZFR5cGVPZmZzZXRXaW5kb3dPcmcgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfT0ZGU0VUV0lORE9XT1JHKSwNCisgICAgV21mUmVjb3JkVHlwZVNjYWxlV2luZG93RXh0ICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9TQ0FMRVdJTkRPV0VYVCksDQorICAgIFdtZlJlY29yZFR5cGVPZmZzZXRWaWV3cG9ydE9yZyAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfT0ZGU0VUVklFV1BPUlRPUkcpLA0KKyAgICBXbWZSZWNvcmRUeXBlU2NhbGVWaWV3cG9ydEV4dCAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NDQUxFVklFV1BPUlRFWFQpLA0KKyAgICBXbWZSZWNvcmRUeXBlTGluZVRvICAgICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0xJTkVUTyksDQorICAgIFdtZlJlY29yZFR5cGVNb3ZlVG8gICAgICAgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfTU9WRVRPKSwNCisgICAgV21mUmVjb3JkVHlwZUV4Y2x1ZGVDbGlwUmVjdCAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9FWENMVURFQ0xJUFJFQ1QpLA0KKyAgICBXbWZSZWNvcmRUeXBlSW50ZXJzZWN0Q2xpcFJlY3QgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0lOVEVSU0VDVENMSVBSRUNUKSwNCisgICAgV21mUmVjb3JkVHlwZUFyYyAgICAgICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9BUkMpLA0KKyAgICBXbWZSZWNvcmRUeXBlRWxsaXBzZSAgICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0VMTElQU0UpLA0KKyAgICBXbWZSZWNvcmRUeXBlRmxvb2RGaWxsICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0ZMT09ERklMTCksDQorICAgIFdtZlJlY29yZFR5cGVQaWUgICAgICAgICAgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfUElFKSwNCisgICAgV21mUmVjb3JkVHlwZVJlY3RhbmdsZSAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9SRUNUQU5HTEUpLA0KKyAgICBXbWZSZWNvcmRUeXBlUm91bmRSZWN0ICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1JPVU5EUkVDVCksDQorICAgIFdtZlJlY29yZFR5cGVQYXRCbHQgICAgICAgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfUEFUQkxUKSwNCisgICAgV21mUmVjb3JkVHlwZVNhdmVEQyAgICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9TQVZFREMpLA0KKyAgICBXbWZSZWNvcmRUeXBlU2V0UGl4ZWwgICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NFVFBJWEVMKSwNCisgICAgV21mUmVjb3JkVHlwZU9mZnNldENsaXBSZ24gICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9PRkZTRVRDTElQUkdOKSwNCisgICAgV21mUmVjb3JkVHlwZVRleHRPdXQgICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9URVhUT1VUKSwNCisgICAgV21mUmVjb3JkVHlwZUJpdEJsdCAgICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9CSVRCTFQpLA0KKyAgICBXbWZSZWNvcmRUeXBlU3RyZXRjaEJsdCAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NUUkVUQ0hCTFQpLA0KKyAgICBXbWZSZWNvcmRUeXBlUG9seWdvbiAgICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1BPTFlHT04pLA0KKyAgICBXbWZSZWNvcmRUeXBlUG9seWxpbmUgICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1BPTFlMSU5FKSwNCisgICAgV21mUmVjb3JkVHlwZUVzY2FwZSAgICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9FU0NBUEUpLA0KKyAgICBXbWZSZWNvcmRUeXBlUmVzdG9yZURDICAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1JFU1RPUkVEQyksDQorICAgIFdtZlJlY29yZFR5cGVGaWxsUmVnaW9uICAgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfRklMTFJFR0lPTiksDQorICAgIFdtZlJlY29yZFR5cGVGcmFtZVJlZ2lvbiAgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfRlJBTUVSRUdJT04pLA0KKyAgICBXbWZSZWNvcmRUeXBlSW52ZXJ0UmVnaW9uICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0lOVkVSVFJFR0lPTiksDQorICAgIFdtZlJlY29yZFR5cGVQYWludFJlZ2lvbiAgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfUEFJTlRSRUdJT04pLA0KKyAgICBXbWZSZWNvcmRUeXBlU2VsZWN0Q2xpcFJlZ2lvbiAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NFTEVDVENMSVBSRUdJT04pLA0KKyAgICBXbWZSZWNvcmRUeXBlU2VsZWN0T2JqZWN0ICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NFTEVDVE9CSkVDVCksDQorICAgIFdtZlJlY29yZFR5cGVTZXRUZXh0QWxpZ24gICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfU0VUVEVYVEFMSUdOKSwNCisgICAgV21mUmVjb3JkVHlwZURyYXdUZXh0ICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoMHgwNjJGKSwgIC8vIE1FVEFfRFJBV1RFWFQNCisgICAgV21mUmVjb3JkVHlwZUNob3JkICAgICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9DSE9SRCksDQorICAgIFdtZlJlY29yZFR5cGVTZXRNYXBwZXJGbGFncyAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfU0VUTUFQUEVSRkxBR1MpLA0KKyAgICBXbWZSZWNvcmRUeXBlRXh0VGV4dE91dCAgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0VYVFRFWFRPVVQpLA0KKyAgICBXbWZSZWNvcmRUeXBlU2V0RElCVG9EZXYgICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NFVERJQlRPREVWKSwNCisgICAgV21mUmVjb3JkVHlwZVNlbGVjdFBhbGV0dGUgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9TRUxFQ1RQQUxFVFRFKSwNCisgICAgV21mUmVjb3JkVHlwZVJlYWxpemVQYWxldHRlICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9SRUFMSVpFUEFMRVRURSksDQorICAgIFdtZlJlY29yZFR5cGVBbmltYXRlUGFsZXR0ZSAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfQU5JTUFURVBBTEVUVEUpLA0KKyAgICBXbWZSZWNvcmRUeXBlU2V0UGFsRW50cmllcyAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1NFVFBBTEVOVFJJRVMpLA0KKyAgICBXbWZSZWNvcmRUeXBlUG9seVBvbHlnb24gICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX1BPTFlQT0xZR09OKSwNCisgICAgV21mUmVjb3JkVHlwZVJlc2l6ZVBhbGV0dGUgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9SRVNJWkVQQUxFVFRFKSwNCisgICAgV21mUmVjb3JkVHlwZURJQkJpdEJsdCAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9ESUJCSVRCTFQpLA0KKyAgICBXbWZSZWNvcmRUeXBlRElCU3RyZXRjaEJsdCAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0RJQlNUUkVUQ0hCTFQpLA0KKyAgICBXbWZSZWNvcmRUeXBlRElCQ3JlYXRlUGF0dGVybkJydXNoICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0RJQkNSRUFURVBBVFRFUk5CUlVTSCksDQorICAgIFdtZlJlY29yZFR5cGVTdHJldGNoRElCICAgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfU1RSRVRDSERJQiksDQorICAgIFdtZlJlY29yZFR5cGVFeHRGbG9vZEZpbGwgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfRVhURkxPT0RGSUxMKSwNCisgICAgV21mUmVjb3JkVHlwZVNldExheW91dCAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoMHgwMTQ5KSwgIC8vIE1FVEFfU0VUTEFZT1VUDQorICAgIFdtZlJlY29yZFR5cGVSZXNldERDICAgICAgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKDB4MDE0QyksICAvLyBNRVRBX1JFU0VUREMNCisgICAgV21mUmVjb3JkVHlwZVN0YXJ0RG9jICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoMHgwMTREKSwgIC8vIE1FVEFfU1RBUlRET0MNCisgICAgV21mUmVjb3JkVHlwZVN0YXJ0UGFnZSAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoMHgwMDRGKSwgIC8vIE1FVEFfU1RBUlRQQUdFDQorICAgIFdtZlJlY29yZFR5cGVFbmRQYWdlICAgICAgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKDB4MDA1MCksICAvLyBNRVRBX0VORFBBR0UNCisgICAgV21mUmVjb3JkVHlwZUFib3J0RG9jICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoMHgwMDUyKSwgIC8vIE1FVEFfQUJPUlRET0MNCisgICAgV21mUmVjb3JkVHlwZUVuZERvYyAgICAgICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoMHgwMDVFKSwgIC8vIE1FVEFfRU5ERE9DDQorICAgIFdtZlJlY29yZFR5cGVEZWxldGVPYmplY3QgICAgICAgICAgICA9IEdESVBfV01GX1JFQ09SRF9UT19FTUZQTFVTKE1FVEFfREVMRVRFT0JKRUNUKSwNCisgICAgV21mUmVjb3JkVHlwZUNyZWF0ZVBhbGV0dGUgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9DUkVBVEVQQUxFVFRFKSwNCisgICAgV21mUmVjb3JkVHlwZUNyZWF0ZUJydXNoICAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoMHgwMEY4KSwgIC8vIE1FVEFfQ1JFQVRFQlJVU0gNCisgICAgV21mUmVjb3JkVHlwZUNyZWF0ZVBhdHRlcm5CcnVzaCAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9DUkVBVEVQQVRURVJOQlJVU0gpLA0KKyAgICBXbWZSZWNvcmRUeXBlQ3JlYXRlUGVuSW5kaXJlY3QgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0NSRUFURVBFTklORElSRUNUKSwNCisgICAgV21mUmVjb3JkVHlwZUNyZWF0ZUZvbnRJbmRpcmVjdCAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9DUkVBVEVGT05USU5ESVJFQ1QpLA0KKyAgICBXbWZSZWNvcmRUeXBlQ3JlYXRlQnJ1c2hJbmRpcmVjdCAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUyhNRVRBX0NSRUFURUJSVVNISU5ESVJFQ1QpLA0KKyAgICBXbWZSZWNvcmRUeXBlQ3JlYXRlQml0bWFwSW5kaXJlY3QgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUygweDAyRkQpLCAgLy8gTUVUQV9DUkVBVEVCSVRNQVBJTkRJUkVDVA0KKyAgICBXbWZSZWNvcmRUeXBlQ3JlYXRlQml0bWFwICAgICAgICAgICAgPSBHRElQX1dNRl9SRUNPUkRfVE9fRU1GUExVUygweDA2RkUpLCAgLy8gTUVUQV9DUkVBVEVCSVRNQVANCisgICAgV21mUmVjb3JkVHlwZUNyZWF0ZVJlZ2lvbiAgICAgICAgICAgID0gR0RJUF9XTUZfUkVDT1JEX1RPX0VNRlBMVVMoTUVUQV9DUkVBVEVSRUdJT04pLA0KKw0KKyAgICBFbWZSZWNvcmRUeXBlSGVhZGVyICAgICAgICAgICAgICAgICAgPSBFTVJfSEVBREVSLA0KKyAgICBFbWZSZWNvcmRUeXBlUG9seUJlemllciAgICAgICAgICAgICAgPSBFTVJfUE9MWUJFWklFUiwNCisgICAgRW1mUmVjb3JkVHlwZVBvbHlnb24gICAgICAgICAgICAgICAgID0gRU1SX1BPTFlHT04sDQorICAgIEVtZlJlY29yZFR5cGVQb2x5bGluZSAgICAgICAgICAgICAgICA9IEVNUl9QT0xZTElORSwNCisgICAgRW1mUmVjb3JkVHlwZVBvbHlCZXppZXJUbyAgICAgICAgICAgID0gRU1SX1BPTFlCRVpJRVJUTywNCisgICAgRW1mUmVjb3JkVHlwZVBvbHlMaW5lVG8gICAgICAgICAgICAgID0gRU1SX1BPTFlMSU5FVE8sDQorICAgIEVtZlJlY29yZFR5cGVQb2x5UG9seWxpbmUgICAgICAgICAgICA9IEVNUl9QT0xZUE9MWUxJTkUsDQorICAgIEVtZlJlY29yZFR5cGVQb2x5UG9seWdvbiAgICAgICAgICAgICA9IEVNUl9QT0xZUE9MWUdPTiwNCisgICAgRW1mUmVjb3JkVHlwZVNldFdpbmRvd0V4dEV4ICAgICAgICAgID0gRU1SX1NFVFdJTkRPV0VYVEVYLA0KKyAgICBFbWZSZWNvcmRUeXBlU2V0V2luZG93T3JnRXggICAgICAgICAgPSBFTVJfU0VUV0lORE9XT1JHRVgsDQorICAgIEVtZlJlY29yZFR5cGVTZXRWaWV3cG9ydEV4dEV4ICAgICAgICA9IEVNUl9TRVRWSUVXUE9SVEVYVEVYLA0KKyAgICBFbWZSZWNvcmRUeXBlU2V0Vmlld3BvcnRPcmdFeCAgICAgICAgPSBFTVJfU0VUVklFV1BPUlRPUkdFWCwNCisgICAgRW1mUmVjb3JkVHlwZVNldEJydXNoT3JnRXggICAgICAgICAgID0gRU1SX1NFVEJSVVNIT1JHRVgsDQorICAgIEVtZlJlY29yZFR5cGVFT0YgICAgICAgICAgICAgICAgICAgICA9IEVNUl9FT0YsDQorICAgIEVtZlJlY29yZFR5cGVTZXRQaXhlbFYgICAgICAgICAgICAgICA9IEVNUl9TRVRQSVhFTFYsDQorICAgIEVtZlJlY29yZFR5cGVTZXRNYXBwZXJGbGFncyAgICAgICAgICA9IEVNUl9TRVRNQVBQRVJGTEFHUywNCisgICAgRW1mUmVjb3JkVHlwZVNldE1hcE1vZGUgICAgICAgICAgICAgID0gRU1SX1NFVE1BUE1PREUsDQorICAgIEVtZlJlY29yZFR5cGVTZXRCa01vZGUgICAgICAgICAgICAgICA9IEVNUl9TRVRCS01PREUsDQorICAgIEVtZlJlY29yZFR5cGVTZXRQb2x5RmlsbE1vZGUgICAgICAgICA9IEVNUl9TRVRQT0xZRklMTE1PREUsDQorICAgIEVtZlJlY29yZFR5cGVTZXRST1AyICAgICAgICAgICAgICAgICA9IEVNUl9TRVRST1AyLA0KKyAgICBFbWZSZWNvcmRUeXBlU2V0U3RyZXRjaEJsdE1vZGUgICAgICAgPSBFTVJfU0VUU1RSRVRDSEJMVE1PREUsDQorICAgIEVtZlJlY29yZFR5cGVTZXRUZXh0QWxpZ24gICAgICAgICAgICA9IEVNUl9TRVRURVhUQUxJR04sDQorICAgIEVtZlJlY29yZFR5cGVTZXRDb2xvckFkanVzdG1lbnQgICAgICA9IEVNUl9TRVRDT0xPUkFESlVTVE1FTlQsDQorICAgIEVtZlJlY29yZFR5cGVTZXRUZXh0Q29sb3IgICAgICAgICAgICA9IEVNUl9TRVRURVhUQ09MT1IsDQorICAgIEVtZlJlY29yZFR5cGVTZXRCa0NvbG9yICAgICAgICAgICAgICA9IEVNUl9TRVRCS0NPTE9SLA0KKyAgICBFbWZSZWNvcmRUeXBlT2Zmc2V0Q2xpcFJnbiAgICAgICAgICAgPSBFTVJfT0ZGU0VUQ0xJUFJHTiwNCisgICAgRW1mUmVjb3JkVHlwZU1vdmVUb0V4ICAgICAgICAgICAgICAgID0gRU1SX01PVkVUT0VYLA0KKyAgICBFbWZSZWNvcmRUeXBlU2V0TWV0YVJnbiAgICAgICAgICAgICAgPSBFTVJfU0VUTUVUQVJHTiwNCisgICAgRW1mUmVjb3JkVHlwZUV4Y2x1ZGVDbGlwUmVjdCAgICAgICAgID0gRU1SX0VYQ0xVREVDTElQUkVDVCwNCisgICAgRW1mUmVjb3JkVHlwZUludGVyc2VjdENsaXBSZWN0ICAgICAgID0gRU1SX0lOVEVSU0VDVENMSVBSRUNULA0KKyAgICBFbWZSZWNvcmRUeXBlU2NhbGVWaWV3cG9ydEV4dEV4ICAgICAgPSBFTVJfU0NBTEVWSUVXUE9SVEVYVEVYLA0KKyAgICBFbWZSZWNvcmRUeXBlU2NhbGVXaW5kb3dFeHRFeCAgICAgICAgPSBFTVJfU0NBTEVXSU5ET1dFWFRFWCwNCisgICAgRW1mUmVjb3JkVHlwZVNhdmVEQyAgICAgICAgICAgICAgICAgID0gRU1SX1NBVkVEQywNCisgICAgRW1mUmVjb3JkVHlwZVJlc3RvcmVEQyAgICAgICAgICAgICAgID0gRU1SX1JFU1RPUkVEQywNCisgICAgRW1mUmVjb3JkVHlwZVNldFdvcmxkVHJhbnNmb3JtICAgICAgID0gRU1SX1NFVFdPUkxEVFJBTlNGT1JNLA0KKyAgICBFbWZSZWNvcmRUeXBlTW9kaWZ5V29ybGRUcmFuc2Zvcm0gICAgPSBFTVJfTU9ESUZZV09STERUUkFOU0ZPUk0sDQorICAgIEVtZlJlY29yZFR5cGVTZWxlY3RPYmplY3QgICAgICAgICAgICA9IEVNUl9TRUxFQ1RPQkpFQ1QsDQorICAgIEVtZlJlY29yZFR5cGVDcmVhdGVQZW4gICAgICAgICAgICAgICA9IEVNUl9DUkVBVEVQRU4sDQorICAgIEVtZlJlY29yZFR5cGVDcmVhdGVCcnVzaEluZGlyZWN0ICAgICA9IEVNUl9DUkVBVEVCUlVTSElORElSRUNULA0KKyAgICBFbWZSZWNvcmRUeXBlRGVsZXRlT2JqZWN0ICAgICAgICAgICAgPSBFTVJfREVMRVRFT0JKRUNULA0KKyAgICBFbWZSZWNvcmRUeXBlQW5nbGVBcmMgICAgICAgICAgICAgICAgPSBFTVJfQU5HTEVBUkMsDQorICAgIEVtZlJlY29yZFR5cGVFbGxpcHNlICAgICAgICAgICAgICAgICA9IEVNUl9FTExJUFNFLA0KKyAgICBFbWZSZWNvcmRUeXBlUmVjdGFuZ2xlICAgICAgICAgICAgICAgPSBFTVJfUkVDVEFOR0xFLA0KKyAgICBFbWZSZWNvcmRUeXBlUm91bmRSZWN0ICAgICAgICAgICAgICAgPSBFTVJfUk9VTkRSRUNULA0KKyAgICBFbWZSZWNvcmRUeXBlQXJjICAgICAgICAgICAgICAgICAgICAgPSBFTVJfQVJDLA0KKyAgICBFbWZSZWNvcmRUeXBlQ2hvcmQgICAgICAgICAgICAgICAgICAgPSBFTVJfQ0hPUkQsDQorICAgIEVtZlJlY29yZFR5cGVQaWUgICAgICAgICAgICAgICAgICAgICA9IEVNUl9QSUUsDQorICAgIEVtZlJlY29yZFR5cGVTZWxlY3RQYWxldHRlICAgICAgICAgICA9IEVNUl9TRUxFQ1RQQUxFVFRFLA0KKyAgICBFbWZSZWNvcmRUeXBlQ3JlYXRlUGFsZXR0ZSAgICAgICAgICAgPSBFTVJfQ1JFQVRFUEFMRVRURSwNCisgICAgRW1mUmVjb3JkVHlwZVNldFBhbGV0dGVFbnRyaWVzICAgICAgID0gRU1SX1NFVFBBTEVUVEVFTlRSSUVTLA0KKyAgICBFbWZSZWNvcmRUeXBlUmVzaXplUGFsZXR0ZSAgICAgICAgICAgPSBFTVJfUkVTSVpFUEFMRVRURSwNCisgICAgRW1mUmVjb3JkVHlwZVJlYWxpemVQYWxldHRlICAgICAgICAgID0gRU1SX1JFQUxJWkVQQUxFVFRFLA0KKyAgICBFbWZSZWNvcmRUeXBlRXh0Rmxvb2RGaWxsICAgICAgICAgICAgPSBFTVJfRVhURkxPT0RGSUxMLA0KKyAgICBFbWZSZWNvcmRUeXBlTGluZVRvICAgICAgICAgICAgICAgICAgPSBFTVJfTElORVRPLA0KKyAgICBFbWZSZWNvcmRUeXBlQXJjVG8gICAgICAgICAgICAgICAgICAgPSBFTVJfQVJDVE8sDQorICAgIEVtZlJlY29yZFR5cGVQb2x5RHJhdyAgICAgICAgICAgICAgICA9IEVNUl9QT0xZRFJBVywNCisgICAgRW1mUmVjb3JkVHlwZVNldEFyY0RpcmVjdGlvbiAgICAgICAgID0gRU1SX1NFVEFSQ0RJUkVDVElPTiwNCisgICAgRW1mUmVjb3JkVHlwZVNldE1pdGVyTGltaXQgICAgICAgICAgID0gRU1SX1NFVE1JVEVSTElNSVQsDQorICAgIEVtZlJlY29yZFR5cGVCZWdpblBhdGggICAgICAgICAgICAgICA9IEVNUl9CRUdJTlBBVEgsDQorICAgIEVtZlJlY29yZFR5cGVFbmRQYXRoICAgICAgICAgICAgICAgICA9IEVNUl9FTkRQQVRILA0KKyAgICBFbWZSZWNvcmRUeXBlQ2xvc2VGaWd1cmUgICAgICAgICAgICAgPSBFTVJfQ0xPU0VGSUdVUkUsDQorICAgIEVtZlJlY29yZFR5cGVGaWxsUGF0aCAgICAgICAgICAgICAgICA9IEVNUl9GSUxMUEFUSCwNCisgICAgRW1mUmVjb3JkVHlwZVN0cm9rZUFuZEZpbGxQYXRoICAgICAgID0gRU1SX1NUUk9LRUFOREZJTExQQVRILA0KKyAgICBFbWZSZWNvcmRUeXBlU3Ryb2tlUGF0aCAgICAgICAgICAgICAgPSBFTVJfU1RST0tFUEFUSCwNCisgICAgRW1mUmVjb3JkVHlwZUZsYXR0ZW5QYXRoICAgICAgICAgICAgID0gRU1SX0ZMQVRURU5QQVRILA0KKyAgICBFbWZSZWNvcmRUeXBlV2lkZW5QYXRoICAgICAgICAgICAgICAgPSBFTVJfV0lERU5QQVRILA0KKyAgICBFbWZSZWNvcmRUeXBlU2VsZWN0Q2xpcFBhdGggICAgICAgICAgPSBFTVJfU0VMRUNUQ0xJUFBBVEgsDQorICAgIEVtZlJlY29yZFR5cGVBYm9ydFBhdGggICAgICAgICAgICAgICA9IEVNUl9BQk9SVFBBVEgsDQorICAgIEVtZlJlY29yZFR5cGVSZXNlcnZlZF8wNjkgICAgICAgICAgICA9IDY5LCAgLy8gTm90IFVzZWQNCisgICAgRW1mUmVjb3JkVHlwZUdkaUNvbW1lbnQgICAgICAgICAgICAgID0gRU1SX0dESUNPTU1FTlQsDQorICAgIEVtZlJlY29yZFR5cGVGaWxsUmduICAgICAgICAgICAgICAgICA9IEVNUl9GSUxMUkdOLA0KKyAgICBFbWZSZWNvcmRUeXBlRnJhbWVSZ24gICAgICAgICAgICAgICAgPSBFTVJfRlJBTUVSR04sDQorICAgIEVtZlJlY29yZFR5cGVJbnZlcnRSZ24gICAgICAgICAgICAgICA9IEVNUl9JTlZFUlRSR04sDQorICAgIEVtZlJlY29yZFR5cGVQYWludFJnbiAgICAgICAgICAgICAgICA9IEVNUl9QQUlOVFJHTiwNCisgICAgRW1mUmVjb3JkVHlwZUV4dFNlbGVjdENsaXBSZ24gICAgICAgID0gRU1SX0VYVFNFTEVDVENMSVBSR04sDQorICAgIEVtZlJlY29yZFR5cGVCaXRCbHQgICAgICAgICAgICAgICAgICA9IEVNUl9CSVRCTFQsDQorICAgIEVtZlJlY29yZFR5cGVTdHJldGNoQmx0ICAgICAgICAgICAgICA9IEVNUl9TVFJFVENIQkxULA0KKyAgICBFbWZSZWNvcmRUeXBlTWFza0JsdCAgICAgICAgICAgICAgICAgPSBFTVJfTUFTS0JMVCwNCisgICAgRW1mUmVjb3JkVHlwZVBsZ0JsdCAgICAgICAgICAgICAgICAgID0gRU1SX1BMR0JMVCwNCisgICAgRW1mUmVjb3JkVHlwZVNldERJQml0c1RvRGV2aWNlICAgICAgID0gRU1SX1NFVERJQklUU1RPREVWSUNFLA0KKyAgICBFbWZSZWNvcmRUeXBlU3RyZXRjaERJQml0cyAgICAgICAgICAgPSBFTVJfU1RSRVRDSERJQklUUywNCisgICAgRW1mUmVjb3JkVHlwZUV4dENyZWF0ZUZvbnRJbmRpcmVjdCAgID0gRU1SX0VYVENSRUFURUZPTlRJTkRJUkVDVFcsDQorICAgIEVtZlJlY29yZFR5cGVFeHRUZXh0T3V0QSAgICAgICAgICAgICA9IEVNUl9FWFRURVhUT1VUQSwNCisgICAgRW1mUmVjb3JkVHlwZUV4dFRleHRPdXRXICAgICAgICAgICAgID0gRU1SX0VYVFRFWFRPVVRXLA0KKyAgICBFbWZSZWNvcmRUeXBlUG9seUJlemllcjE2ICAgICAgICAgICAgPSBFTVJfUE9MWUJFWklFUjE2LA0KKyAgICBFbWZSZWNvcmRUeXBlUG9seWdvbjE2ICAgICAgICAgICAgICAgPSBFTVJfUE9MWUdPTjE2LA0KKyAgICBFbWZSZWNvcmRUeXBlUG9seWxpbmUxNiAgICAgICAgICAgICAgPSBFTVJfUE9MWUxJTkUxNiwNCisgICAgRW1mUmVjb3JkVHlwZVBvbHlCZXppZXJUbzE2ICAgICAgICAgID0gRU1SX1BPTFlCRVpJRVJUTzE2LA0KKyAgICBFbWZSZWNvcmRUeXBlUG9seWxpbmVUbzE2ICAgICAgICAgICAgPSBFTVJfUE9MWUxJTkVUTzE2LA0KKyAgICBFbWZSZWNvcmRUeXBlUG9seVBvbHlsaW5lMTYgICAgICAgICAgPSBFTVJfUE9MWVBPTFlMSU5FMTYsDQorICAgIEVtZlJlY29yZFR5cGVQb2x5UG9seWdvbjE2ICAgICAgICAgICA9IEVNUl9QT0xZUE9MWUdPTjE2LA0KKyAgICBFbWZSZWNvcmRUeXBlUG9seURyYXcxNiAgICAgICAgICAgICAgPSBFTVJfUE9MWURSQVcxNiwNCisgICAgRW1mUmVjb3JkVHlwZUNyZWF0ZU1vbm9CcnVzaCAgICAgICAgID0gRU1SX0NSRUFURU1PTk9CUlVTSCwNCisgICAgRW1mUmVjb3JkVHlwZUNyZWF0ZURJQlBhdHRlcm5CcnVzaFB0ID0gRU1SX0NSRUFURURJQlBBVFRFUk5CUlVTSFBULA0KKyAgICBFbWZSZWNvcmRUeXBlRXh0Q3JlYXRlUGVuICAgICAgICAgICAgPSBFTVJfRVhUQ1JFQVRFUEVOLA0KKyAgICBFbWZSZWNvcmRUeXBlUG9seVRleHRPdXRBICAgICAgICAgICAgPSBFTVJfUE9MWVRFWFRPVVRBLA0KKyAgICBFbWZSZWNvcmRUeXBlUG9seVRleHRPdXRXICAgICAgICAgICAgPSBFTVJfUE9MWVRFWFRPVVRXLA0KKyAgICBFbWZSZWNvcmRUeXBlU2V0SUNNTW9kZSAgICAgICAgICAgICAgPSA5OCwgIC8vIEVNUl9TRVRJQ01NT0RFLA0KKyAgICBFbWZSZWNvcmRUeXBlQ3JlYXRlQ29sb3JTcGFjZSAgICAgICAgPSA5OSwgIC8vIEVNUl9DUkVBVEVDT0xPUlNQQUNFLA0KKyAgICBFbWZSZWNvcmRUeXBlU2V0Q29sb3JTcGFjZSAgICAgICAgICAgPSAxMDAsIC8vIEVNUl9TRVRDT0xPUlNQQUNFLA0KKyAgICBFbWZSZWNvcmRUeXBlRGVsZXRlQ29sb3JTcGFjZSAgICAgICAgPSAxMDEsIC8vIEVNUl9ERUxFVEVDT0xPUlNQQUNFLA0KKyAgICBFbWZSZWNvcmRUeXBlR0xTUmVjb3JkICAgICAgICAgICAgICAgPSAxMDIsIC8vIEVNUl9HTFNSRUNPUkQsDQorICAgIEVtZlJlY29yZFR5cGVHTFNCb3VuZGVkUmVjb3JkICAgICAgICA9IDEwMywgLy8gRU1SX0dMU0JPVU5ERURSRUNPUkQsDQorICAgIEVtZlJlY29yZFR5cGVQaXhlbEZvcm1hdCAgICAgICAgICAgICA9IDEwNCwgLy8gRU1SX1BJWEVMRk9STUFULA0KKyAgICBFbWZSZWNvcmRUeXBlRHJhd0VzY2FwZSAgICAgICAgICAgICAgPSAxMDUsIC8vIEVNUl9SRVNFUlZFRF8xMDUsDQorICAgIEVtZlJlY29yZFR5cGVFeHRFc2NhcGUgICAgICAgICAgICAgICA9IDEwNiwgLy8gRU1SX1JFU0VSVkVEXzEwNiwNCisgICAgRW1mUmVjb3JkVHlwZVN0YXJ0RG9jICAgICAgICAgICAgICAgID0gMTA3LCAvLyBFTVJfUkVTRVJWRURfMTA3LA0KKyAgICBFbWZSZWNvcmRUeXBlU21hbGxUZXh0T3V0ICAgICAgICAgICAgPSAxMDgsIC8vIEVNUl9SRVNFUlZFRF8xMDgsDQorICAgIEVtZlJlY29yZFR5cGVGb3JjZVVGSU1hcHBpbmcgICAgICAgICA9IDEwOSwgLy8gRU1SX1JFU0VSVkVEXzEwOSwNCisgICAgRW1mUmVjb3JkVHlwZU5hbWVkRXNjYXBlICAgICAgICAgICAgID0gMTEwLCAvLyBFTVJfUkVTRVJWRURfMTEwLA0KKyAgICBFbWZSZWNvcmRUeXBlQ29sb3JDb3JyZWN0UGFsZXR0ZSAgICAgPSAxMTEsIC8vIEVNUl9DT0xPUkNPUlJFQ1RQQUxFVFRFLA0KKyAgICBFbWZSZWNvcmRUeXBlU2V0SUNNUHJvZmlsZUEgICAgICAgICAgPSAxMTIsIC8vIEVNUl9TRVRJQ01QUk9GSUxFQSwNCisgICAgRW1mUmVjb3JkVHlwZVNldElDTVByb2ZpbGVXICAgICAgICAgID0gMTEzLCAvLyBFTVJfU0VUSUNNUFJPRklMRVcsDQorICAgIEVtZlJlY29yZFR5cGVBbHBoYUJsZW5kICAgICAgICAgICAgICA9IDExNCwgLy8gRU1SX0FMUEhBQkxFTkQsDQorICAgIEVtZlJlY29yZFR5cGVTZXRMYXlvdXQgICAgICAgICAgICAgICA9IDExNSwgLy8gRU1SX1NFVExBWU9VVCwNCisgICAgRW1mUmVjb3JkVHlwZVRyYW5zcGFyZW50Qmx0ICAgICAgICAgID0gMTE2LCAvLyBFTVJfVFJBTlNQQVJFTlRCTFQsDQorICAgIEVtZlJlY29yZFR5cGVSZXNlcnZlZF8xMTcgICAgICAgICAgICA9IDExNywgLy8gTm90IFVzZWQNCisgICAgRW1mUmVjb3JkVHlwZUdyYWRpZW50RmlsbCAgICAgICAgICAgID0gMTE4LCAvLyBFTVJfR1JBRElFTlRGSUxMLA0KKyAgICBFbWZSZWNvcmRUeXBlU2V0TGlua2VkVUZJcyAgICAgICAgICAgPSAxMTksIC8vIEVNUl9SRVNFUlZFRF8xMTksDQorICAgIEVtZlJlY29yZFR5cGVTZXRUZXh0SnVzdGlmaWNhdGlvbiAgICA9IDEyMCwgLy8gRU1SX1JFU0VSVkVEXzEyMCwNCisgICAgRW1mUmVjb3JkVHlwZUNvbG9yTWF0Y2hUb1RhcmdldFcgICAgID0gMTIxLCAvLyBFTVJfQ09MT1JNQVRDSFRPVEFSR0VUVywNCisgICAgRW1mUmVjb3JkVHlwZUNyZWF0ZUNvbG9yU3BhY2VXICAgICAgID0gMTIyLCAvLyBFTVJfQ1JFQVRFQ09MT1JTUEFDRVcsDQorICAgIEVtZlJlY29yZFR5cGVNYXggICAgICAgICAgICAgICAgICAgICA9IDEyMiwNCisgICAgRW1mUmVjb3JkVHlwZU1pbiAgICAgICAgICAgICAgICAgICAgID0gMSwNCisNCisgICAgLy8gVGhhdCBpcyB0aGUgRU5EIG9mIHRoZSBHREkgRU1GIHJlY29yZHMuDQorDQorICAgIC8vIE5vdyB3ZSBzdGFydCB0aGUgbGlzdCBvZiBFTUYrIHJlY29yZHMuICBXZSBsZWF2ZSBxdWl0ZQ0KKyAgICAvLyBhIGJpdCBvZiByb29tIGhlcmUgZm9yIHRoZSBhZGRpdGlvbiBvZiBhbnkgbmV3IEdESQ0KKyAgICAvLyByZWNvcmRzIHRoYXQgbWF5IGJlIGFkZGVkIGxhdGVyLg0KKw0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZUludmFsaWQgPSBHRElQX0VNRlBMVVNfUkVDT1JEX0JBU0UsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlSGVhZGVyLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZUVuZE9mRmlsZSwNCisNCisgICAgRW1mUGx1c1JlY29yZFR5cGVDb21tZW50LA0KKw0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZUdldERDLCAgICAvLyB0aGUgYXBwbGljYXRpb24gZ3JhYmJlZCB0aGUgbWV0YWZpbGUgZGMNCisNCisgICAgRW1mUGx1c1JlY29yZFR5cGVNdWx0aUZvcm1hdFN0YXJ0LA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZU11bHRpRm9ybWF0U2VjdGlvbiwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVNdWx0aUZvcm1hdEVuZCwNCisNCisgICAgLy8gRm9yIGFsbCBwZXJzaXN0ZW50IG9iamVjdHMNCisgICAgRW1mUGx1c1JlY29yZFR5cGVPYmplY3QsIC8vIGJydXNoLHBlbixwYXRoLHJlZ2lvbixpbWFnZSxmb250LHN0cmluZy1mb3JtYXQNCisNCisgICAgLy8gRHJhd2luZyBSZWNvcmRzDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlQ2xlYXIsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlRmlsbFJlY3RzLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZURyYXdSZWN0cywNCisgICAgRW1mUGx1c1JlY29yZFR5cGVGaWxsUG9seWdvbiwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVEcmF3TGluZXMsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlRmlsbEVsbGlwc2UsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlRHJhd0VsbGlwc2UsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlRmlsbFBpZSwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVEcmF3UGllLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZURyYXdBcmMsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlRmlsbFJlZ2lvbiwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVGaWxsUGF0aCwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVEcmF3UGF0aCwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVGaWxsQ2xvc2VkQ3VydmUsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlRHJhd0Nsb3NlZEN1cnZlLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZURyYXdDdXJ2ZSwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVEcmF3QmV6aWVycywNCisgICAgRW1mUGx1c1JlY29yZFR5cGVEcmF3SW1hZ2UsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlRHJhd0ltYWdlUG9pbnRzLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZURyYXdTdHJpbmcsDQorDQorICAgIC8vIEdyYXBoaWNzIFN0YXRlIFJlY29yZHMNCisgICAgRW1mUGx1c1JlY29yZFR5cGVTZXRSZW5kZXJpbmdPcmlnaW4sDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlU2V0QW50aUFsaWFzTW9kZSwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVTZXRUZXh0UmVuZGVyaW5nSGludCwNCisjaWZkZWYgRENSX1VTRV9ORVdfMTg4OTIyDQorICAgRW1mUGx1c1JlY29yZFR5cGVTZXRUZXh0Q29udHJhc3QsDQorI2Vsc2UNCisgICBFbWZQbHVzUmVjb3JkVHlwZVNldEdhbW1hVmFsdWUsDQorI2VuZGlmIC8vIERDUl9VU0VfTkVXXzE4ODkyMg0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZVNldEludGVycG9sYXRpb25Nb2RlLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZVNldFBpeGVsT2Zmc2V0TW9kZSwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVTZXRDb21wb3NpdGluZ01vZGUsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlU2V0Q29tcG9zaXRpbmdRdWFsaXR5LA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZVNhdmUsDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlUmVzdG9yZSwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVCZWdpbkNvbnRhaW5lciwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVCZWdpbkNvbnRhaW5lck5vUGFyYW1zLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZUVuZENvbnRhaW5lciwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVTZXRXb3JsZFRyYW5zZm9ybSwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVSZXNldFdvcmxkVHJhbnNmb3JtLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZU11bHRpcGx5V29ybGRUcmFuc2Zvcm0sDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlVHJhbnNsYXRlV29ybGRUcmFuc2Zvcm0sDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlU2NhbGVXb3JsZFRyYW5zZm9ybSwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVSb3RhdGVXb3JsZFRyYW5zZm9ybSwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVTZXRQYWdlVHJhbnNmb3JtLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZVJlc2V0Q2xpcCwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVTZXRDbGlwUmVjdCwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVTZXRDbGlwUGF0aCwNCisgICAgRW1mUGx1c1JlY29yZFR5cGVTZXRDbGlwUmVnaW9uLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZU9mZnNldENsaXAsDQorDQorICAgIC8vIE5ldyByZWNvcmQgdHlwZXMgbXVzdCBiZSBhZGRlZCBoZXJlIChhdCB0aGUgZW5kKSAtLSBkbyBub3QgYWRkIGFib3ZlLA0KKyAgICAvLyBzaW5jZSB0aGF0IHdpbGwgaW52YWxpZGF0ZSBwcmV2aW91cyBtZXRhZmlsZXMhDQorICAgIEVtZlBsdXNSZWNvcmRUeXBlRHJhd0RyaXZlclN0cmluZywNCisNCisgICAgLy8gSGF2ZSB0aGlzIGhlcmUgc28geW91IGRvbid0IG5lZWQgdG8ga2VlcCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YNCisgICAgLy8gRW1mUGx1c1JlY29yZFR5cGVNYXggZXZlcnkgdGltZSB5b3UgYWRkIGEgbmV3IHJlY29yZC4NCisNCisgICAgRW1mUGx1c1JlY29yZFRvdGFsLA0KKw0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZU1heCA9IEVtZlBsdXNSZWNvcmRUb3RhbC0xLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZU1pbiA9IEVtZlBsdXNSZWNvcmRUeXBlSGVhZGVyLA0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBTdHJpbmdGb3JtYXRGbGFncw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBTdHJpbmcgZm9ybWF0IGZsYWdzDQorLy8NCisvLyAgRGlyZWN0aW9uUmlnaHRUb0xlZnQgICAgICAgICAgLSBGb3IgaG9yaXpvbnRhbCB0ZXh0LCB0aGUgcmVhZGluZyBvcmRlciBpcw0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IHRvIGxlZnQuIFRoaXMgdmFsdWUgaXMgY2FsbGVkDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJhc2UgZW1iZWRkaW5nIGxldmVsIGJ5IHRoZSBVbmljb2RlDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlkaXJlY3Rpb25hbCBlbmdpbmUuDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHZlcnRpY2FsIHRleHQsIGNvbHVtbnMgYXJlIHJlYWQgZnJvbQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IHRvIGxlZnQuDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCB0ZXh0IGlzDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCBmcm9tIGxlZnQgdG8gcmlnaHQuDQorLy8NCisvLyAgRGlyZWN0aW9uVmVydGljYWwgICAgICAgICAgICAgLSBJbmRpdmlkdWFsIGxpbmVzIG9mIHRleHQgYXJlIHZlcnRpY2FsLiBJbg0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggbGluZSwgY2hhcmFjdGVycyBwcm9ncmVzcyBmcm9tIHRvcCB0bw0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbS4NCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBsaW5lcyBvZiB0ZXh0IGFyZSBob3Jpem9udGFsLA0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggbmV3IGxpbmUgYmVsb3cgdGhlIHByZXZpb3VzIGxpbmUuDQorLy8NCisvLyAgTm9GaXRCbGFja0JveCAgICAgICAgICAgICAgICAgLSBBbGxvd3MgcGFydHMgb2YgZ2x5cGhzIHRvIG92ZXJoYW5nIHRoZQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nIHJlY3RhbmdsZS4NCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0IGdseXBocyBhcmUgZmlyc3QgYWxpZ25lZA0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZSB0aGUgbWFyZ2luZXMsIHRoZW4gYW55IGdseXBocyB3aGljaA0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWxsIG92ZXJoYW5nIHRoZSBib3VuZGluZyBib3ggYXJlDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdGlvbmVkIHRvIGF2b2lkIGFueSBvdmVyaGFuZy4NCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSB3aGVuIGFuIGl0YWxpYw0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyIGNhc2UgbGV0dGVyIGYgaW4gYSBmb250IHN1Y2ggYXMNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYXJhbW9uZCBpcyBhbGlnbmVkIGF0IHRoZSBmYXIgbGVmdCBvZiBhDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlLCB0aGUgbG93ZXIgcGFydCBvZiB0aGUgZiB3aWxsDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhY2ggc2xpZ2h0bHkgZnVydGhlciBsZWZ0IHRoYW4gdGhlIGxlZnQNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGdlIG9mIHRoZSByZWN0YW5nbGUuIFNldHRpbmcgdGhpcyBmbGFnDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBlbnN1cmUgdGhlIGNoYXJhY3RlciBhbGlnbnMgdmlzdWFsbHkNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBsaW5lcyBhYm92ZSBhbmQgYmVsb3csIGJ1dCBtYXkNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZSBzb21lIHBpeGVscyBvdXRzaWRlIHRoZSBmb3JtYXR0aW5nDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlIHRvIGJlIGNsaXBwZWQgb3IgcGFpbnRlZC4NCisvLw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTM3MjUyDQorLy8gIE51bWJlckNvbnRleHRBcmFiaWMgICAgICAgICAgIC0gQ2F1c2VzIGFueSBpbml0aWFsIG51bWVyaWMgaW4gdGhlIHN0cmluZyB0bw0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGFuYWx5c2VkIGZvciBiaWRpcmVjdGlvbiBsYXlvdXQgYXMgaWYNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCB3YXMgcHJlY2VlZGVkIGJ5IEFyYWJpYyB0ZXh0Lg0KKy8vDQorLy8gIERpc2FibGVLYXNoaWRhSnVzdGlmaWNhdGlvbiAgIC0gQXJhYmljIHRleHQgd2lsbCBub3QgYmUganVzdGlmaWVkIGJ5IHRoZQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvbiBvZiBrYXNoaWRhcyAoaS5lLiBleHRlbmRpbmcgdGhlDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbmluZyBsaW5lIGJldHdlZW4gY2hhcmFjdGVycykuIEluc3RlYWQNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmFiaWMgc2NyaXB0IHdpbGwgYmUganVzdGlmaWVkIGJ5IHRoZQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGVuaW5nIG9mIHRoZSB3aGl0ZXNwYWNlIGJldHdlZW4gd29yZHMuDQorLy8NCisjZW5kaWYNCisvLyAgRGlzcGxheUZvcm1hdENvbnRyb2wgICAgICAgICAgLSBDYXVzZXMgY29udHJvbCBjaGFyYWN0ZXJzIHN1Y2ggYXMgdGhlDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC10by1yaWdodCBtYXJrIHRvIGJlIHNob3duIGluIHRoZQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCB3aXRoIGEgcmVwcmVzZW50YXRpdmUgZ2x5cGguDQorLy8NCisjaWZuZGVmIERDUl9VU0VfTkVXXzEzNzI1Mg0KKy8vICBEaXNhYmxlS2VybmluZyAgICAgICAgICAgICAgICAtIERpc2FibGVzIFRydWV0eXBlIGFuZCBPcGVuVHlwZSBrZXJuaW5nLg0KKy8vDQorLy8gIERpc2FibGVMaWdhdHVyZXMgICAgICAgICAgICAgIC0gRGlzYWJsZXMgVHJ1ZXR5cGUgYW5kIE9wZW5UeXBlIGxpZ2F0dXJlcy4NCisvLw0KKy8vICBMYXlvdXRMZWdhY3lCaWRpICAgICAgICAgICAgICAtIENhdXNlcyB0aGUgYmlkaXJlY3Rpb24gYWxnb3JpdGhtIHRvIHVzZQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWdodGx5IGRpZmZlcmVudCBjbGFzc2lmaWNhdGlvbnMgZm9yDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJysnLCAnLScgYW5kICcvJyB0aGF0IG1ha2UgdGhlaXIgbGF5b3V0DQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVjaCBjbG9zZXIgdG8gdGhhdCBleHBlY3RlZCBieSBmaWxlcw0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCBpbiBXaW5kb3dzIG9yIGJ5IFdpbmRvd3MNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMuDQorLy8NCisvLyAgTm9DaGFuZ2VzICAgICAgICAgICAgICAgICAgICAgLSBBIHRleHQgaW1hZ2VyIGNyZWF0ZWQgd2l0aCB0aGlzIGZsYWcgc2V0DQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lcyBub3Qgc3VwcG9ydCB0aG9zZSBBUElzIHRoYXQgY2hhbmdlDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQncyBjb250ZW50cyBvciBmb3JtYXR0aW5nLCBidXQgZm9yIG1vc3QNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGUgdGV4dCB3aWxsIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyIGluDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWluZyBtZWFzdXJlbWVudCBhbmQgZHJhd2luZw0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy4NCisvLw0KKyNlbmRpZg0KKy8vICBOb0ZvbnRGYWxsYmFjayAgICAgICAgICAgICAgICAtIERpc2FibGVzIGZhbGxiYWNrIHRvIGFsdGVybmF0ZSBmb250cyBmb3INCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHJlcXVlc3RlZA0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQuIEFueSBtaXNzaW5nIGNoYXJhY3RlcnMgd2lsbCBiZQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGRpc3BsYXllZCB3aXRoIHRoZSBmb250cyBtaXNzaW5nIGdseXBoLA0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzdWFsbHkgYW4gb3BlbiBzcXVhcmUuDQorLy8NCisvLyAgTm9XcmFwICAgICAgICAgICAgICAgICAgICAgICAgLSBEaXNhYmxlcyB3cmFwcGluZyBvZiB0ZXh0IGJldHdlZW4gbGluZXMNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGZvcm1hdHRpbmcgd2l0aGluIGEgcmVjdGFuZ2xlLg0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vV3JhcCBpcyBpbXBsaWVkIHdoZW4gYSBwb2ludCBpcyBwYXNzZWQNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIGEgcmVjdGFuZ2xlLCBvciB3aGVuIHRoZQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCByZWN0YW5nbGUgaGFzIGEgemVybyBsaW5lIGxlbmd0aC4NCisvLw0KKy8vICBOb0NsaXAgICAgICAgICAgICAgICAgICAgICAgICAtIEJ5IGRlZmF1bHQgdGV4dCBpcyBjbGlwcGVkIHRvIHRoZQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcgcmVjdGFuZ2xlLiBTZXR0aW5nIE5vQ2xpcA0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93cyBvdmVyaGFuZ2luZyBwaXhlbHMgdG8gYWZmZWN0IHRoZQ0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBvdXRzaWRlIHRoZSBmb3JtYXR0aW5nIHJlY3RhbmdsZS4NCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhlbHMgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBtYXkgYmUNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZmZlY3RlZCBpZiB0aGUgZ2x5cGhzIG92ZXJoYW5nIHRoZWlyDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbHMsIGFuZCBlaXRoZXIgdGhlIE5vRml0QmxhY2tCb3ggZmxhZw0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIHNldCwgb3IgdGhlIGdseXBoIGV4dGVuZHMgdG8gZmFyDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgZml0dGVkLg0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVscyBhYm92ZS9iZWZvcmUgdGhlIGZpcnN0IGxpbmUgb3INCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWxvdy9hZnRlciB0aGUgbGFzdCBsaW5lIG1heSBiZSBhZmZlY3RlZA0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSBnbHlwaHMgZXh0ZW5kIGJleW9uZCB0aGVpciBjZWxsDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNjZW50IC8gZGVzY2VudC4gVGhpcyBjYW4gb2NjdXIgcmFyZWx5DQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1bnVzdWFsIGRpYWNyaXRpYyBtYXJrIGNvbWJpbmF0aW9ucy4NCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gU3RyaW5nRm9ybWF0RmxhZ3MNCit7DQorICAgIFN0cmluZ0Zvcm1hdEZsYWdzRGlyZWN0aW9uUmlnaHRUb0xlZnQgICAgICAgID0gMHgwMDAwMDAwMSwNCisgICAgU3RyaW5nRm9ybWF0RmxhZ3NEaXJlY3Rpb25WZXJ0aWNhbCAgICAgICAgICAgPSAweDAwMDAwMDAyLA0KKyAgICBTdHJpbmdGb3JtYXRGbGFnc05vRml0QmxhY2tCb3ggICAgICAgICAgICAgICA9IDB4MDAwMDAwMDQsDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xMzcyNTINCisgICAgU3RyaW5nRm9ybWF0RmxhZ3NOdW1iZXJDb250ZXh0QXJhYmljICAgICAgICAgPSAweDAwMDAwMDA4LA0KKyAgICBTdHJpbmdGb3JtYXRGbGFnc0Rpc2FibGVLYXNoaWRhSnVzdGlmaWNhdGlvbiA9IDB4MDAwMDAwMTAsDQorI2VuZGlmDQorICAgIFN0cmluZ0Zvcm1hdEZsYWdzRGlzcGxheUZvcm1hdENvbnRyb2wgICAgICAgID0gMHgwMDAwMDAyMCwNCisjaWZuZGVmIERDUl9VU0VfTkVXXzEzNzI1Mg0KKyAgICBTdHJpbmdGb3JtYXRGbGFnc0Rpc2FibGVLZXJuaW5nICAgICAgICAgICAgICA9IDB4MDAwMDAwNDAsDQorICAgIFN0cmluZ0Zvcm1hdEZsYWdzRGlzYWJsZUxpZ2F0dXJlcyAgICAgICAgICAgID0gMHgwMDAwMDA4MCwNCisgICAgU3RyaW5nRm9ybWF0RmxhZ3NMYXlvdXRMZWdhY3lCaWRpICAgICAgICAgICAgPSAweDAwMDAwMTAwLA0KKyAgICBTdHJpbmdGb3JtYXRGbGFnc05vQ2hhbmdlcyAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAyMDAsDQorI2VuZGlmDQorICAgIFN0cmluZ0Zvcm1hdEZsYWdzTm9Gb250RmFsbGJhY2sgICAgICAgICAgICAgID0gMHgwMDAwMDQwMCwNCisgICAgU3RyaW5nRm9ybWF0RmxhZ3NNZWFzdXJlVHJhaWxpbmdTcGFjZXMgICAgICAgPSAweDAwMDAwODAwLA0KKyAgICBTdHJpbmdGb3JtYXRGbGFnc05vV3JhcCAgICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDEwMDAsDQorICAgIFN0cmluZ0Zvcm1hdEZsYWdzTGluZUxpbWl0ICAgICAgICAgICAgICAgICAgID0gMHgwMDAwMjAwMCwNCisNCisgICAgU3RyaW5nRm9ybWF0RmxhZ3NOb0NsaXAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDA0MDAwDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFN0cmluZ1RyaW1taW5nDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIFN0cmluZ1RyaW1taW5nIHsNCisgICAgU3RyaW5nVHJpbW1pbmdOb25lICAgICAgICAgICAgICA9IDAsDQorICAgIFN0cmluZ1RyaW1taW5nQ2hhcmFjdGVyICAgICAgICAgPSAxLA0KKyAgICBTdHJpbmdUcmltbWluZ1dvcmQgICAgICAgICAgICAgID0gMiwNCisgICAgU3RyaW5nVHJpbW1pbmdFbGxpcHNpc0NoYXJhY3RlciA9IDMsDQorICAgIFN0cmluZ1RyaW1taW5nRWxsaXBzaXNXb3JkICAgICAgPSA0LA0KKyAgICBTdHJpbmdUcmltbWluZ0VsbGlwc2lzUGF0aCAgICAgID0gNQ0KK307DQorDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xMzcyNTINCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFN0cmluZyB1bml0cw0KKy8vDQorLy8gU3RyaW5nIHVuaXRzIGFyZSBsaWtlIGxlbmd0aCB1bml0cyBpbiBDU1MsIHRoZXkgbWF5IGJlIGFic29sdXRlLCBvcg0KKy8vIHRoZXkgbWF5IGJlIHJlbGF0aXZlIHRvIGEgZm9udCBzaXplLg0KKy8vDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIFN0cmluZ1VuaXQgew0KKyAgICBTdHJpbmdVbml0V29ybGQgICAgICAgID0gVW5pdFdvcmxkLA0KKyAgICBTdHJpbmdVbml0RGlzcGxheSAgICAgID0gVW5pdERpc3BsYXksDQorICAgIFN0cmluZ1VuaXRQaXhlbCAgICAgICAgPSBVbml0UGl4ZWwsDQorICAgIFN0cmluZ1VuaXRQb2ludCAgICAgICAgPSBVbml0UG9pbnQsDQorICAgIFN0cmluZ1VuaXRJbmNoICAgICAgICAgPSBVbml0SW5jaCwNCisgICAgU3RyaW5nVW5pdERvY3VtZW50ICAgICA9IFVuaXREb2N1bWVudCwNCisgICAgU3RyaW5nVW5pdE1pbGxpbWV0ZXIgICA9IFVuaXRNaWxsaW1ldGVyLA0KKyAgICBTdHJpbmdVbml0RW0gICAgICAgICAgID0gMzINCit9Ow0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTUyMTU0DQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBMaW5lIHNwYWNpbmcgZmxhZ3MNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gTGluZVNwYWNpbmcgew0KKyAgICBMaW5lU3BhY2luZ1dvcmxkICAgICAgICAgICAgICAgID0gVW5pdFdvcmxkLA0KKyAgICBMaW5lU3BhY2luZ0Rpc3BsYXkgICAgICAgICAgICAgID0gVW5pdERpc3BsYXksDQorICAgIExpbmVTcGFjaW5nUGl4ZWwgICAgICAgICAgICAgICAgPSBVbml0UGl4ZWwsDQorICAgIExpbmVTcGFjaW5nUG9pbnQgICAgICAgICAgICAgICAgPSBVbml0UG9pbnQsDQorICAgIExpbmVTcGFjaW5nSW5jaCAgICAgICAgICAgICAgICAgPSBVbml0SW5jaCwNCisgICAgTGluZVNwYWNpbmdEb2N1bWVudCAgICAgICAgICAgICA9IFVuaXREb2N1bWVudCwNCisgICAgTGluZVNwYWNpbmdNaWxsaW1ldGVyICAgICAgICAgICA9IFVuaXRNaWxsaW1ldGVyLA0KKw0KKyAgICBMaW5lU3BhY2luZ1JlY29tbWVuZGVkICAgICAgICAgID0gMzIsDQorICAgIExpbmVTcGFjaW5nQXRMZWFzdCAgICAgICAgICAgICAgPSAzMywNCisgICAgTGluZVNwYWNpbmdBdExlYXN0TXVsdGlwbGUgICAgICA9IDM0LA0KKyAgICBMaW5lU3BhY2luZ0NlbGwgICAgICAgICAgICAgICAgID0gMzUsDQorICAgIExpbmVTcGFjaW5nQ2VsbEF0TGVhc3QgICAgICAgICAgPSAzNiwNCisgICAgTGluZVNwYWNpbmdDZWxsQXRMZWFzdE11bHRpcGxlICA9IDM3DQorfTsNCisNCisvLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIGxpbmVzcGFjaW5nIGFyZSByZWxhdGl2ZSB0byB0aGUgZm9udCBzaXplDQorLy8NCisvLyA9PT09PT09PT09PSBNZXRob2QgPT09PT09PT09PT0gID09PT09PT09PT09PT09PSBSZWxhdGl2ZSB0byA9PT09PT09PT09PT09PT0NCisvLw0KKy8vIExpbmVTcGFjaW5nUmVjb21tZW5kZWQgICAgICAgICAgcmVjb21tZW5kZWQgbGluZSBzcGFjaW5nIHNwZWNpZmllZCBieSBmb250DQorLy8gTGluZVNwYWNpbmdBdExlYXN0ICAgICAgICAgICAgICBtYXgocmVjb21tZW5kZWQsIHRhbGxlc3QgZ2x5cGggY2VsbCkNCisvLyBMaW5lU3BhY2luZ0F0TGVhc3RNdWx0aXBsZSAgICAgIHNtYWxsZXN0IG11bHRpcGxlIG9mIHJlY29tbWVuZGVkIGJpZyBlbm91Z2gNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbGwgZ2x5cGggY2VsbHMgb24gdGhlIGxpbmUNCisvLyBMaW5lU3BhY2luZ0NlbGwgICAgICAgICAgICAgICAgIGNlbGwgaGVpZ2h0DQorLy8gTGluZVNwYWNpbmdDZWxsQXRMZWFzdCAgICAgICAgICBtYXgoZm9udCBjZWxsIGhlaWdodCwgdGFsbGVzdCBnbHlwaCBjZWxsKQ0KKy8vIExpbmVTcGFjaW5nQ2VsbEF0TGVhc3RNdWx0aXBsZSAgc21hbGxlc3QgbXVsdGlwbGUgb2YgY2VsbCBoZWlnaHQgYmlnIGVub3VnaA0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFsbCBnbHlwaCBjZWxscyBvbiB0aGUgbGluZQ0KKyNlbmRpZg0KKw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gTmF0aW9uYWwgbGFuZ3VhZ2UgZGlnaXQgc3Vic3RpdHV0aW9uDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIFN0cmluZ0RpZ2l0U3Vic3RpdHV0ZQ0KK3sNCisgICAgU3RyaW5nRGlnaXRTdWJzdGl0dXRlVXNlciAgICAgICAgPSAwLCAgLy8gQXMgTkxTIHNldHRpbmcNCisgICAgU3RyaW5nRGlnaXRTdWJzdGl0dXRlTm9uZSAgICAgICAgPSAxLA0KKyAgICBTdHJpbmdEaWdpdFN1YnN0aXR1dGVOYXRpb25hbCAgICA9IDIsDQorICAgIFN0cmluZ0RpZ2l0U3Vic3RpdHV0ZVRyYWRpdGlvbmFsID0gMw0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBIb3RrZXkgcHJlZml4IGludGVycHJldGF0aW9uDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIEhvdGtleVByZWZpeA0KK3sNCisgICAgSG90a2V5UHJlZml4Tm9uZSAgICAgICAgPSAwLA0KKyAgICBIb3RrZXlQcmVmaXhTaG93ICAgICAgICA9IDEsDQorICAgIEhvdGtleVByZWZpeEhpZGUgICAgICAgID0gMg0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUZXh0IGFsaWdubWVudCBmbGFncw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBTdHJpbmdBbGlnbm1lbnQNCit7DQorICAgIC8vIExlZnQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LA0KKyAgICAvLyByaWdodCBmb3IgcmlnaHQtdG8tbGVmdCB0ZXh0LA0KKyAgICAvLyBhbmQgdG9wIGZvciB2ZXJ0aWNhbA0KKyAgICBTdHJpbmdBbGlnbm1lbnROZWFyICAgPSAwLA0KKyAgICBTdHJpbmdBbGlnbm1lbnRDZW50ZXIgPSAxLA0KKyAgICBTdHJpbmdBbGlnbm1lbnRGYXIgICAgPSAyDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIERyaXZlclN0cmluZ09wdGlvbnMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gRHJpdmVyU3RyaW5nT3B0aW9ucw0KK3sNCisgICAgRHJpdmVyU3RyaW5nT3B0aW9uc0NtYXBMb29rdXAgICAgICAgICAgICAgPSAxLA0KKyAgICBEcml2ZXJTdHJpbmdPcHRpb25zVmVydGljYWwgICAgICAgICAgICAgICA9IDIsDQorICAgIERyaXZlclN0cmluZ09wdGlvbnNSZWFsaXplZEFkdmFuY2UgICAgICAgID0gNCwNCisjaWZuZGVmIERDUl9VU0VfTkVXXzEzNzI1Mg0KKyAgICBEcml2ZXJTdHJpbmdPcHRpb25zQ29tcGVuc2F0ZVJlc29sdXRpb24gICA9IDgNCisjZW5kaWYNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gRmx1c2ggSW50ZW50aW9uIGZsYWdzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIEZsdXNoSW50ZW50aW9uDQorew0KKyAgICBGbHVzaEludGVudGlvbkZsdXNoID0gMCwgICAgICAgIC8vIEZsdXNoIGFsbCBiYXRjaGVkIHJlbmRlcmluZyBvcGVyYXRpb25zDQorICAgIEZsdXNoSW50ZW50aW9uU3luYyA9IDEgICAgICAgICAgLy8gRmx1c2ggYWxsIGJhdGNoZWQgcmVuZGVyaW5nIG9wZXJhdGlvbnMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2FpdCBmb3IgdGhlbSB0byBjb21wbGV0ZQ0KK307DQorDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xNzU4NjYNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFdpbmRvdyBDaGFuZ2UgTm90aWZpY2F0aW9uIHR5cGVzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIFdpbmRvd05vdGlmeUVudW0NCit7DQorICAgV2luZG93Tm90aWZ5RW51bUVuYWJsZSA9IDAsDQorICAgV2luZG93Tm90aWZ5RW51bURpc2FibGUsDQorICAgV2luZG93Tm90aWZ5RW51bVBhbGV0dGUsDQorICAgV2luZG93Tm90aWZ5RW51bURpc3BsYXksDQorICAgV2luZG93Tm90aWZ5RW51bVN5c0NvbG9yDQorfTsNCisNCisjZW5kaWYNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEltYWdlIGVuY29kZXIgcGFyYW1ldGVyIHJlbGF0ZWQgdHlwZXMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18xNDU4MDQNCitlbnVtIEVuY29kZXJQYXJhbWV0ZXJWYWx1ZVR5cGUNCit7DQorICAgIEVuY29kZXJQYXJhbWV0ZXJWYWx1ZVR5cGVCeXRlICAgICAgICAgICA9IDEsICAgIC8vIDgtYml0IHVuc2lnbmVkIGludA0KKyAgICBFbmNvZGVyUGFyYW1ldGVyVmFsdWVUeXBlQVNDSUkgICAgICAgICAgPSAyLCAgICAvLyA4LWJpdCBieXRlIGNvbnRhaW5pbmcgb25lIDctYml0IEFTQ0lJDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGUuIE5VTEwgdGVybWluYXRlZC4NCisgICAgRW5jb2RlclBhcmFtZXRlclZhbHVlVHlwZVNob3J0ICAgICAgICAgID0gMywgICAgLy8gMTYtYml0IHVuc2lnbmVkIGludA0KKyAgICBFbmNvZGVyUGFyYW1ldGVyVmFsdWVUeXBlTG9uZyAgICAgICAgICAgPSA0LCAgICAvLyAzMi1iaXQgdW5zaWduZWQgaW50DQorICAgIEVuY29kZXJQYXJhbWV0ZXJWYWx1ZVR5cGVSYXRpb25hbCAgICAgICA9IDUsICAgIC8vIFR3byBMb25ncy4gVGhlIGZpcnN0IExvbmcgaXMgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWVyYXRvciwgdGhlIHNlY29uZCBMb25nIGV4cHJlc3NlcyB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVub21pbnRvci4NCisgICAgRW5jb2RlclBhcmFtZXRlclZhbHVlVHlwZUxvbmdSYW5nZSAgICAgID0gNiwgICAgLy8gVHdvIGxvbmdzIHdoaWNoIHNwZWNpZnkgYSByYW5nZSBvZg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlZ2VyIHZhbHVlcy4gVGhlIGZpcnN0IExvbmcgc3BlY2lmaWVzDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBsb3dlciBlbmQgYW5kIHRoZSBzZWNvbmQgb25lDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmllcyB0aGUgaGlnaGVyIGVuZC4gQWxsIHZhbHVlcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgaW5jbHVzaXZlIGF0IGJvdGggZW5kcw0KKyAgICBFbmNvZGVyUGFyYW1ldGVyVmFsdWVUeXBlVW5kZWZpbmVkICAgICAgPSA3LCAgICAvLyA4LWJpdCBieXRlIHRoYXQgY2FuIHRha2UgYW55IHZhbHVlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlcGVuZGluZyBvbiBmaWVsZCBkZWZpbml0aW9uDQorICAgIEVuY29kZXJQYXJhbWV0ZXJWYWx1ZVR5cGVSYXRpb25hbFJhbmdlICA9IDggICAgIC8vIFR3byBSYXRpb25hbHMuIFRoZSBmaXJzdCBSYXRpb25hbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWZpZXMgdGhlIGxvd2VyIGVuZCBhbmQgdGhlIHNlY29uZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWZpZXMgdGhlIGhpZ2hlciBlbmQuIEFsbCB2YWx1ZXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGluY2x1c2l2ZSBhdCBib3RoIGVuZHMNCit9Ow0KKyNlbHNlDQorZW51bSBWYWx1ZVR5cGUNCit7DQorICAgIFZhbHVlVHlwZUJ5dGUgICAgICAgICAgID0gMSwgICAgLy8gOC1iaXQgdW5zaWduZWQgaW50DQorICAgIFZhbHVlVHlwZUFTQ0lJICAgICAgICAgID0gMiwgICAgLy8gOC1iaXQgYnl0ZSBjb250YWluaW5nIG9uZSA3LWJpdCBBU0NJSQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGUuIE5VTEwgdGVybWluYXRlZC4NCisgICAgVmFsdWVUeXBlU2hvcnQgICAgICAgICAgPSAzLCAgICAvLyAxNi1iaXQgdW5zaWduZWQgaW50DQorICAgIFZhbHVlVHlwZUxvbmcgICAgICAgICAgID0gNCwgICAgLy8gMzItYml0IHVuc2lnbmVkIGludA0KKyAgICBWYWx1ZVR5cGVSYXRpb25hbCAgICAgICA9IDUsICAgIC8vIFR3byBMb25ncy4gVGhlIGZpcnN0IExvbmcgaXMgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtZXJhdG9yLCB0aGUgc2Vjb25kIExvbmcgZXhwcmVzc2VzIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlbm9taW50b3IuDQorICAgIFZhbHVlVHlwZUxvbmdSYW5nZSAgICAgID0gNiwgICAgLy8gVHdvIGxvbmdzIHdoaWNoIHNwZWNpZnkgYSByYW5nZSBvZg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludGVnZXIgdmFsdWVzLiBUaGUgZmlyc3QgTG9uZyBzcGVjaWZpZXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbG93ZXIgZW5kIGFuZCB0aGUgc2Vjb25kIG9uZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmllcyB0aGUgaGlnaGVyIGVuZC4gQWxsIHZhbHVlcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBpbmNsdXNpdmUgYXQgYm90aCBlbmRzDQorICAgIFZhbHVlVHlwZVVuZGVmaW5lZCAgICAgID0gNywgICAgLy8gOC1iaXQgYnl0ZSB0aGF0IGNhbiB0YWtlIGFueSB2YWx1ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlcGVuZGluZyBvbiBmaWVsZCBkZWZpbml0aW9uDQorICAgIFZhbHVlVHlwZVJhdGlvbmFsUmFuZ2UgID0gOCAgICAgLy8gVHdvIFJhdGlvbmFscy4gVGhlIGZpcnN0IFJhdGlvbmFsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWVzIHRoZSBsb3dlciBlbmQgYW5kIHRoZSBzZWNvbmQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWZpZXMgdGhlIGhpZ2hlciBlbmQuIEFsbCB2YWx1ZXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgaW5jbHVzaXZlIGF0IGJvdGggZW5kcw0KK307DQorI2VuZGlmDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBJbWFnZSBlbmNvZGVyIHZhbHVlIHR5cGVzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIEVuY29kZXJWYWx1ZQ0KK3sNCisgICAgRW5jb2RlclZhbHVlQ29sb3JUeXBlQ01ZSywNCisgICAgRW5jb2RlclZhbHVlQ29sb3JUeXBlWUNDSywNCisgICAgRW5jb2RlclZhbHVlQ29tcHJlc3Npb25MWlcsDQorICAgIEVuY29kZXJWYWx1ZUNvbXByZXNzaW9uQ0NJVFQzLA0KKyAgICBFbmNvZGVyVmFsdWVDb21wcmVzc2lvbkNDSVRUNCwNCisgICAgRW5jb2RlclZhbHVlQ29tcHJlc3Npb25SbGUsDQorICAgIEVuY29kZXJWYWx1ZUNvbXByZXNzaW9uTm9uZSwNCisgICAgRW5jb2RlclZhbHVlU2Nhbk1ldGhvZEludGVybGFjZWQsDQorICAgIEVuY29kZXJWYWx1ZVNjYW5NZXRob2ROb25JbnRlcmxhY2VkLA0KKyAgICBFbmNvZGVyVmFsdWVWZXJzaW9uR2lmODcsDQorICAgIEVuY29kZXJWYWx1ZVZlcnNpb25HaWY4OSwNCisgICAgRW5jb2RlclZhbHVlUmVuZGVyUHJvZ3Jlc3NpdmUsDQorICAgIEVuY29kZXJWYWx1ZVJlbmRlck5vblByb2dyZXNzaXZlLA0KKyAgICBFbmNvZGVyVmFsdWVUcmFuc2Zvcm1Sb3RhdGU5MCwNCisgICAgRW5jb2RlclZhbHVlVHJhbnNmb3JtUm90YXRlMTgwLA0KKyAgICBFbmNvZGVyVmFsdWVUcmFuc2Zvcm1Sb3RhdGUyNzAsDQorICAgIEVuY29kZXJWYWx1ZVRyYW5zZm9ybUZsaXBIb3Jpem9udGFsLA0KKyAgICBFbmNvZGVyVmFsdWVUcmFuc2Zvcm1GbGlwVmVydGljYWwsDQorICAgICNpZmRlZiBEQ1JfVVNFX05FV18xNDA4NjENCisgICAgRW5jb2RlclZhbHVlTXVsdGlGcmFtZSwNCisgICAgI2Vsc2UNCisgICAgRW5jb2RlVmFsdWVNdWx0aUZyYW1lLA0KKyAgICAjZW5kaWYNCisgICAgRW5jb2RlclZhbHVlTGFzdEZyYW1lLA0KKyAgICBFbmNvZGVyVmFsdWVGbHVzaCwNCisgICAgI2lmZGVmIERDUl9VU0VfTkVXXzE0MDg2MQ0KKyAgICBFbmNvZGVyVmFsdWVGcmFtZURpbWVuc2lvblRpbWUsDQorICAgIEVuY29kZXJWYWx1ZUZyYW1lRGltZW5zaW9uUmVzb2x1dGlvbiwNCisgICAgRW5jb2RlclZhbHVlRnJhbWVEaW1lbnNpb25QYWdlDQorICAgICNlbHNlDQorICAgIEVuY29kZVZhbHVlRnJhbWVEaW1lbnNpb25UaW1lLA0KKyAgICBFbmNvZGVWYWx1ZUZyYW1lRGltZW5zaW9uUmVzb2x1dGlvbiwNCisgICAgRW5jb2RlVmFsdWVGcmFtZURpbWVuc2lvblBhZ2UNCisgICAgI2VuZGlmDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEdyYXBoaWNzIGxheW91dCB2YWx1ZXMgKHN1cHBvcnQgZm9yIE1pZGRsZSBFYXN0IGxvY2FsaXphdGlvbikNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gR3JhcGhpY3NMYXlvdXQNCit7DQorICAgIEdyYXBoaWNzTGF5b3V0Tm9ybWFsLA0KKyAgICBHcmFwaGljc0xheW91dE1pcnJvcmVkLA0KKyAgICBHcmFwaGljc0xheW91dE1pcnJvcmVkSWdub3JlSW1hZ2VzLA0KKyAgICBHcmFwaGljc0xheW91dE1pcnJvcmVkRm9yY2VJbWFnZXMNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gSW1hZ2UgbGF5b3V0IHZhbHVlcyAoc3VwcG9ydCBmb3IgTWlkZGxlIEVhc3QgbG9jYWxpemF0aW9uKQ0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBJbWFnZUxheW91dA0KK3sNCisgICAgSW1hZ2VMYXlvdXROb3JtYWwsDQorICAgIEltYWdlTGF5b3V0SWdub3JlTWlycm9yZWQNCit9Ow0KKw0KK2VudW0gRW1mVG9XbWZCaXRzRmxhZ3MNCit7DQorICAgIEVtZlRvV21mQml0c0ZsYWdzRGVmYXVsdCAgICA9IDB4MDAwMDAwMDAsDQorICAgIEVtZlRvV21mQml0c0ZsYWdzRW1iZWRFbWYgICA9IDB4MDAwMDAwMDEsDQorICAgIEVtZlRvV21mQml0c0ZsYWdzSW5jbHVkZUFQTSA9IDB4MDAwMDAwMDIsDQorICAgIEVtZlRvV21mQml0c0ZsYWdzTm9YT1JDbGlwICA9IDB4MDAwMDAwMDQNCit9Ow0KKw0KKyNlbmRpZiAvLyAhX0dESVBMVVNFTlVNU19IDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0ZsYXQuaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNGbGF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI1MzY5ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNGbGF0LmgKQEAgLTAsMCArMSwyNzQwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKg0KKyogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqDQorKiAgIEdkaXBsdXNGbGF0LmgNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIEZsYXQgR0RJKyBBUEkgd3JhcHBlcnMgLSBoZWFkZXIgZmlsZQ0KKyoNCitcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLy8gVE9ETzogdGhpcyBmaWxlIHN0eWxlIG5lZWRzIHRvIGJlIG1hZGUgaW50ZXJuYWxseSBjb25zaXN0ZW50IHdpdGggdGhlIHdheQ0KKy8vICAgICAgIGl0IGhhbmRsZXMgYnJlYWtpbmcgdGhlIGxvbmcgYXJndW1lbnQgbGlzdHMgYWNyb3NzIG11bHRpcGxlIGxpbmVzDQorDQorI2lmbmRlZiBfRkxBVEFQSV9IDQorI2RlZmluZSBfRkxBVEFQSV9IDQorDQorI2RlZmluZSBXSU5HRElQQVBJIF9fc3RkY2FsbA0KKw0KKy8vIGN1cnJlbnRseSwgb25seSBDKysgd3JhcHBlciBBUEkncyBmb3JjZSBjb25zdC4NCisNCisjZGVmaW5lIEdESVBDT05TVCBjb25zdA0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTc1ODY2DQorDQorVk9JRA0KK1dJTkdESVBBUEkNCitHZGlwRGlzcGxheVBhbGV0dGVXaW5kb3dOb3RpZnkoV2luZG93Tm90aWZ5RW51bSBub3RpZnkpOw0KKw0KKyNlbmRpZg0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEdyYXBoaWNzUGF0aCBtZXRob2RzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVQYXRoKEdwRmlsbE1vZGUgYnJ1c2hNb2RlLCBHcFBhdGggKipwYXRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZVBhdGgyKEdESVBDT05TVCBHcFBvaW50RiosIEdESVBDT05TVCBCWVRFKiwgSU5ULCBHcEZpbGxNb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwUGF0aCAqKnBhdGgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlUGF0aDJJKEdESVBDT05TVCBHcFBvaW50KiwgR0RJUENPTlNUIEJZVEUqLCBJTlQsIEdwRmlsbE1vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwUGF0aCAqKnBhdGgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ2xvbmVQYXRoKEdwUGF0aCogcGF0aCwgR3BQYXRoICoqY2xvbmVQYXRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERlbGV0ZVBhdGgoR3BQYXRoKiBwYXRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJlc2V0UGF0aChHcFBhdGgqIHBhdGgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UG9pbnRDb3VudChHcFBhdGgqIHBhdGgsIElOVCogY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aFR5cGVzKEdwUGF0aCogcGF0aCwgQllURSogdHlwZXMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYXRoUG9pbnRzKEdwUGF0aCosIEdwUG9pbnRGKiBwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYXRoUG9pbnRzSShHcFBhdGgqLCBHcFBvaW50KiBwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYXRoRmlsbE1vZGUoR3BQYXRoICpwYXRoLCBHcEZpbGxNb2RlICpmaWxsbW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQYXRoRmlsbE1vZGUoR3BQYXRoICpwYXRoLCBHcEZpbGxNb2RlIGZpbGxtb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBhdGhEYXRhKEdwUGF0aCAqcGF0aCwgR3BQYXRoRGF0YSogcGF0aERhdGEpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU3RhcnRQYXRoRmlndXJlKEdwUGF0aCAqcGF0aCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDbG9zZVBhdGhGaWd1cmUoR3BQYXRoICpwYXRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENsb3NlUGF0aEZpZ3VyZXMoR3BQYXRoICpwYXRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBhdGhNYXJrZXIoR3BQYXRoKiBwYXRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENsZWFyUGF0aE1hcmtlcnMoR3BQYXRoKiBwYXRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJldmVyc2VQYXRoKEdwUGF0aCogcGF0aCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYXRoTGFzdFBvaW50KEdwUGF0aCogcGF0aCwgR3BQb2ludEYqIGxhc3RQb2ludCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBBZGRQYXRoTGluZShHcFBhdGggKnBhdGgsIFJFQUwgeDEsIFJFQUwgeTEsIFJFQUwgeDIsIFJFQUwgeTIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQWRkUGF0aExpbmUyKEdwUGF0aCAqcGF0aCwgR0RJUENPTlNUIEdwUG9pbnRGICpwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBBZGRQYXRoQXJjKEdwUGF0aCAqcGF0aCwgUkVBTCB4LCBSRUFMIHksIFJFQUwgd2lkdGgsIFJFQUwgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgc3RhcnRBbmdsZSwgUkVBTCBzd2VlcEFuZ2xlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhCZXppZXIoR3BQYXRoICpwYXRoLCBSRUFMIHgxLCBSRUFMIHkxLCBSRUFMIHgyLCBSRUFMIHkyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgeDMsIFJFQUwgeTMsIFJFQUwgeDQsIFJFQUwgeTQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQWRkUGF0aEJlemllcnMoR3BQYXRoICpwYXRoLCBHRElQQ09OU1QgR3BQb2ludEYgKnBvaW50cywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhDdXJ2ZShHcFBhdGggKnBhdGgsIEdESVBDT05TVCBHcFBvaW50RiAqcG9pbnRzLCBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQWRkUGF0aEN1cnZlMihHcFBhdGggKnBhdGgsIEdESVBDT05TVCBHcFBvaW50RiAqcG9pbnRzLCBJTlQgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCB0ZW5zaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhDdXJ2ZTMoR3BQYXRoICpwYXRoLCBHRElQQ09OU1QgR3BQb2ludEYgKnBvaW50cywgSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCBvZmZzZXQsIElOVCBudW1iZXJPZlNlZ21lbnRzLCBSRUFMIHRlbnNpb24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQWRkUGF0aENsb3NlZEN1cnZlKEdwUGF0aCAqcGF0aCwgR0RJUENPTlNUIEdwUG9pbnRGICpwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBBZGRQYXRoQ2xvc2VkQ3VydmUyKEdwUGF0aCAqcGF0aCwgR0RJUENPTlNUIEdwUG9pbnRGICpwb2ludHMsIElOVCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFMIHRlbnNpb24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQWRkUGF0aFJlY3RhbmdsZShHcFBhdGggKnBhdGgsIFJFQUwgeCwgUkVBTCB5LCBSRUFMIHdpZHRoLCBSRUFMIGhlaWdodCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBBZGRQYXRoUmVjdGFuZ2xlcyhHcFBhdGggKnBhdGgsIEdESVBDT05TVCBHcFJlY3RGICpyZWN0cywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhFbGxpcHNlKEdwUGF0aCAqcGF0aCwgUkVBTCB4LCBSRUFMIHksIFJFQUwgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgaGVpZ2h0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhQaWUoR3BQYXRoICpwYXRoLCBSRUFMIHgsIFJFQUwgeSwgUkVBTCB3aWR0aCwgUkVBTCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCBzdGFydEFuZ2xlLCBSRUFMIHN3ZWVwQW5nbGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQWRkUGF0aFBvbHlnb24oR3BQYXRoICpwYXRoLCBHRElQQ09OU1QgR3BQb2ludEYgKnBvaW50cywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhQYXRoKEdwUGF0aCAqcGF0aCwgR0RJUENPTlNUIEdwUGF0aCogYWRkaW5nUGF0aCwgQk9PTCBjb25uZWN0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhTdHJpbmcoR3BQYXRoICpwYXRoLCBHRElQQ09OU1QgV0NIQVIgKnN0cmluZywNCisgICAgICAgICAgICAgICAgICAgICAgICBJTlQgbGVuZ3RoLCBHRElQQ09OU1QgR3BGb250RmFtaWx5ICpmYW1pbHksIElOVCBzdHlsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICBSRUFMIGVtU2l6ZSwgR0RJUENPTlNUIFJlY3RGICpsYXlvdXRSZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFN0cmluZ0Zvcm1hdCAqZm9ybWF0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhTdHJpbmdJKEdwUGF0aCAqcGF0aCwgR0RJUENPTlNUIFdDSEFSICpzdHJpbmcsDQorICAgICAgICAgICAgICAgICAgICAgICAgSU5UIGxlbmd0aCwgR0RJUENPTlNUIEdwRm9udEZhbWlseSAqZmFtaWx5LCBJTlQgc3R5bGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCBlbVNpemUsIEdESVBDT05TVCBSZWN0ICpsYXlvdXRSZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFN0cmluZ0Zvcm1hdCAqZm9ybWF0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhMaW5lSShHcFBhdGggKnBhdGgsIElOVCB4MSwgSU5UIHkxLCBJTlQgeDIsIElOVCB5Mik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBBZGRQYXRoTGluZTJJKEdwUGF0aCAqcGF0aCwgR0RJUENPTlNUIEdwUG9pbnQgKnBvaW50cywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhBcmNJKEdwUGF0aCAqcGF0aCwgSU5UIHgsIElOVCB5LCBJTlQgd2lkdGgsIElOVCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCBzdGFydEFuZ2xlLCBSRUFMIHN3ZWVwQW5nbGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQWRkUGF0aEJlemllckkoR3BQYXRoICpwYXRoLCBJTlQgeDEsIElOVCB5MSwgSU5UIHgyLCBJTlQgeTIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5UIHgzLCBJTlQgeTMsIElOVCB4NCwgSU5UIHk0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhCZXppZXJzSShHcFBhdGggKnBhdGgsIEdESVBDT05TVCBHcFBvaW50ICpwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBBZGRQYXRoQ3VydmVJKEdwUGF0aCAqcGF0aCwgR0RJUENPTlNUIEdwUG9pbnQgKnBvaW50cywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhDdXJ2ZTJJKEdwUGF0aCAqcGF0aCwgR0RJUENPTlNUIEdwUG9pbnQgKnBvaW50cywgSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgdGVuc2lvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBBZGRQYXRoQ3VydmUzSShHcFBhdGggKnBhdGgsIEdESVBDT05TVCBHcFBvaW50ICpwb2ludHMsIElOVCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgb2Zmc2V0LCBJTlQgbnVtYmVyT2ZTZWdtZW50cywgUkVBTCB0ZW5zaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhDbG9zZWRDdXJ2ZUkoR3BQYXRoICpwYXRoLCBHRElQQ09OU1QgR3BQb2ludCAqcG9pbnRzLCBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQWRkUGF0aENsb3NlZEN1cnZlMkkoR3BQYXRoICpwYXRoLCBHRElQQ09OU1QgR3BQb2ludCAqcG9pbnRzLCBJTlQgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCB0ZW5zaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhSZWN0YW5nbGVJKEdwUGF0aCAqcGF0aCwgSU5UIHgsIElOVCB5LCBJTlQgd2lkdGgsIElOVCBoZWlnaHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQWRkUGF0aFJlY3RhbmdsZXNJKEdwUGF0aCAqcGF0aCwgR0RJUENPTlNUIEdwUmVjdCAqcmVjdHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBBZGRQYXRoRWxsaXBzZUkoR3BQYXRoICpwYXRoLCBJTlQgeCwgSU5UIHksIElOVCB3aWR0aCwgSU5UIGhlaWdodCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBBZGRQYXRoUGllSShHcFBhdGggKnBhdGgsIElOVCB4LCBJTlQgeSwgSU5UIHdpZHRoLCBJTlQgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgc3RhcnRBbmdsZSwgUkVBTCBzd2VlcEFuZ2xlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZFBhdGhQb2x5Z29uSShHcFBhdGggKnBhdGgsIEdESVBDT05TVCBHcFBvaW50ICpwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBGbGF0dGVuUGF0aChHcFBhdGggKnBhdGgsIEdwTWF0cml4KiBtYXRyaXgsIFJFQUwgZmxhdG5lc3MpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwV2luZGluZ01vZGVPdXRsaW5lKA0KKyAgICBHcFBhdGggKnBhdGgsDQorICAgIEdwTWF0cml4ICptYXRyaXgsDQorICAgIFJFQUwgZmxhdG5lc3MNCispOw0KKw0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yMDI5MDMNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFdpZGVuUGF0aCgNCisgICAgR3BQYXRoICpuYXRpdmVQYXRoLA0KKyAgICBHcFBlbiAqcGVuLA0KKyAgICBHcE1hdHJpeCAqbWF0cml4LA0KKyAgICBSRUFMIGZsYXRuZXNzDQorKTsNCisNCisjZWxzZQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwV2lkZW5QYXRoV2l0aE1pbmltdW1SZXNvbHV0aW9ucyhHcFBhdGggKnBhdGgsIEdwUGVuICpwZW4sIFJFQUwgbWluWHJlcywNCisgICAgICAgICAgICBSRUFMIG1pbllyZXMsIEdwTWF0cml4ICptYXRyaXgsIEJPT0wgcmVtb3ZlU2VsZnRJbnRlcnNlY3RzKTsNCisNCisjZW5kaWYNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFdhcnBQYXRoKEdwUGF0aCAqcGF0aCwgR3BNYXRyaXgqIG1hdHJpeCwNCisgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludEYgKnBvaW50cywgSU5UIGNvdW50LA0KKyAgICAgICAgICAgIFJFQUwgc3JjeCwgUkVBTCBzcmN5LCBSRUFMIHNyY3dpZHRoLCBSRUFMIHNyY2hlaWdodCwNCisgICAgICAgICAgICBXYXJwTW9kZSB3YXJwTW9kZSwgUkVBTCBmbGF0bmVzcyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBUcmFuc2Zvcm1QYXRoKEdwUGF0aCogcGF0aCwgR3BNYXRyaXgqIG1hdHJpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYXRoV29ybGRCb3VuZHMoR3BQYXRoKiBwYXRoLCBHcFJlY3RGKiBib3VuZHMsIEdESVBDT05TVCBHcE1hdHJpeCAqbWF0cml4LA0KKyAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFBlbiAqcGVuKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBhdGhXb3JsZEJvdW5kc0koR3BQYXRoKiBwYXRoLCBHcFJlY3QqIGJvdW5kcywgR0RJUENPTlNUIEdwTWF0cml4ICptYXRyaXgsDQorICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFBlbiAqcGVuKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcElzVmlzaWJsZVBhdGhQb2ludChHcFBhdGgqIHBhdGgsIFJFQUwgeCwgUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEJPT0wgKnJlc3VsdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBJc1Zpc2libGVQYXRoUG9pbnRJKEdwUGF0aCogcGF0aCwgSU5UIHgsIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBCT09MICpyZXN1bHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwSXNPdXRsaW5lVmlzaWJsZVBhdGhQb2ludChHcFBhdGgqIHBhdGgsIFJFQUwgeCwgUkVBTCB5LCBHcFBlbiAqcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBCT09MICpyZXN1bHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwSXNPdXRsaW5lVmlzaWJsZVBhdGhQb2ludEkoR3BQYXRoKiBwYXRoLCBJTlQgeCwgSU5UIHksIEdwUGVuICpwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBCT09MICpyZXN1bHQpOw0KKw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFBhdGggRW51bWVyYXRpb24gbWV0aG9kcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlUGF0aEl0ZXIoR3BQYXRoSXRlcmF0b3IgKippdGVyYXRvciwgR3BQYXRoKiBwYXRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERlbGV0ZVBhdGhJdGVyKEdwUGF0aEl0ZXJhdG9yICppdGVyYXRvcik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBQYXRoSXRlck5leHRTdWJwYXRoKEdwUGF0aEl0ZXJhdG9yKiBpdGVyYXRvciwgSU5UICpyZXN1bHRDb3VudCwNCisgICAgICAgIElOVCogc3RhcnRJbmRleCwgSU5UKiBlbmRJbmRleCwgQk9PTCogaXNDbG9zZWQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUGF0aEl0ZXJOZXh0U3VicGF0aFBhdGgoR3BQYXRoSXRlcmF0b3IqIGl0ZXJhdG9yLCBJTlQqIHJlc3VsdENvdW50LA0KKyAgICAgICAgR3BQYXRoKiBwYXRoLCBCT09MKiBpc0Nsb3NlZCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBQYXRoSXRlck5leHRQYXRoVHlwZShHcFBhdGhJdGVyYXRvciogaXRlcmF0b3IsIElOVCogcmVzdWx0Q291bnQsDQorICAgICAgICBCWVRFKiBwYXRoVHlwZSwgSU5UKiBzdGFydEluZGV4LCBJTlQqIGVuZEluZGV4KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFBhdGhJdGVyTmV4dE1hcmtlcihHcFBhdGhJdGVyYXRvciogaXRlcmF0b3IsIElOVCAqcmVzdWx0Q291bnQsDQorICAgICAgICBJTlQqIHN0YXJ0SW5kZXgsIElOVCogZW5kSW5kZXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUGF0aEl0ZXJOZXh0TWFya2VyUGF0aChHcFBhdGhJdGVyYXRvciogaXRlcmF0b3IsIElOVCogcmVzdWx0Q291bnQsDQorICAgICAgICBHcFBhdGgqIHBhdGgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUGF0aEl0ZXJHZXRDb3VudChHcFBhdGhJdGVyYXRvciogaXRlcmF0b3IsIElOVCogY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUGF0aEl0ZXJHZXRTdWJwYXRoQ291bnQoR3BQYXRoSXRlcmF0b3IqIGl0ZXJhdG9yLCBJTlQqIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFBhdGhJdGVySXNWYWxpZChHcFBhdGhJdGVyYXRvciogaXRlcmF0b3IsIEJPT0wqIHZhbGlkKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFBhdGhJdGVySGFzQ3VydmUoR3BQYXRoSXRlcmF0b3IqIGl0ZXJhdG9yLCBCT09MKiBoYXNDdXJ2ZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBQYXRoSXRlclJld2luZChHcFBhdGhJdGVyYXRvciogaXRlcmF0b3IpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUGF0aEl0ZXJFbnVtZXJhdGUoR3BQYXRoSXRlcmF0b3IqIGl0ZXJhdG9yLCBJTlQqIHJlc3VsdENvdW50LA0KKyAgICBHcFBvaW50RiAqcG9pbnRzLCBCWVRFICp0eXBlcywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFBhdGhJdGVyQ29weURhdGEoR3BQYXRoSXRlcmF0b3IqIGl0ZXJhdG9yLCBJTlQqIHJlc3VsdENvdW50LA0KKyAgICBHcFBvaW50RiogcG9pbnRzLCBCWVRFKiB0eXBlcywgSU5UIHN0YXJ0SW5kZXgsIElOVCBlbmRJbmRleCk7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gTWF0cml4IG1ldGhvZHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZU1hdHJpeChHcE1hdHJpeCAqKm1hdHJpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVNYXRyaXgyKFJFQUwgbTExLCBSRUFMIG0xMiwgUkVBTCBtMjEsIFJFQUwgbTIyLCBSRUFMIGR4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCBkeSwgR3BNYXRyaXggKiptYXRyaXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlTWF0cml4MyhHRElQQ09OU1QgR3BSZWN0RiAqcmVjdCwgR0RJUENPTlNUIEdwUG9pbnRGICpkc3RwbGcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcE1hdHJpeCAqKm1hdHJpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVNYXRyaXgzSShHRElQQ09OU1QgR3BSZWN0ICpyZWN0LCBHRElQQ09OU1QgR3BQb2ludCAqZHN0cGxnLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWF0cml4ICoqbWF0cml4KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENsb25lTWF0cml4KEdwTWF0cml4ICptYXRyaXgsIEdwTWF0cml4ICoqY2xvbmVNYXRyaXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRGVsZXRlTWF0cml4KEdwTWF0cml4ICptYXRyaXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0TWF0cml4RWxlbWVudHMoR3BNYXRyaXggKm1hdHJpeCwgUkVBTCBtMTEsIFJFQUwgbTEyLCBSRUFMIG0yMSwgUkVBTCBtMjIsDQorICAgICAgICAgICAgICAgICAgICAgIFJFQUwgZHgsIFJFQUwgZHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwTXVsdGlwbHlNYXRyaXgoR3BNYXRyaXggKm1hdHJpeCwgR3BNYXRyaXgqIG1hdHJpeDIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwVHJhbnNsYXRlTWF0cml4KEdwTWF0cml4ICptYXRyaXgsIFJFQUwgb2Zmc2V0WCwgUkVBTCBvZmZzZXRZLA0KKyAgICAgICAgICAgICAgICAgICAgR3BNYXRyaXhPcmRlciBvcmRlcik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTY2FsZU1hdHJpeChHcE1hdHJpeCAqbWF0cml4LCBSRUFMIHNjYWxlWCwgUkVBTCBzY2FsZVksDQorICAgICAgICAgICAgICAgIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUm90YXRlTWF0cml4KEdwTWF0cml4ICptYXRyaXgsIFJFQUwgYW5nbGUsIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2hlYXJNYXRyaXgoR3BNYXRyaXggKm1hdHJpeCwgUkVBTCBzaGVhclgsIFJFQUwgc2hlYXJZLA0KKyAgICAgICAgICAgICAgICBHcE1hdHJpeE9yZGVyIG9yZGVyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEludmVydE1hdHJpeChHcE1hdHJpeCAqbWF0cml4KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFRyYW5zZm9ybU1hdHJpeFBvaW50cyhHcE1hdHJpeCAqbWF0cml4LCBHcFBvaW50RiAqcHRzLCBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwVHJhbnNmb3JtTWF0cml4UG9pbnRzSShHcE1hdHJpeCAqbWF0cml4LCBHcFBvaW50ICpwdHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBWZWN0b3JUcmFuc2Zvcm1NYXRyaXhQb2ludHMoR3BNYXRyaXggKm1hdHJpeCwgR3BQb2ludEYgKnB0cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBWZWN0b3JUcmFuc2Zvcm1NYXRyaXhQb2ludHNJKEdwTWF0cml4ICptYXRyaXgsIEdwUG9pbnQgKnB0cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRNYXRyaXhFbGVtZW50cyhHRElQQ09OU1QgR3BNYXRyaXggKm1hdHJpeCwgUkVBTCAqbWF0cml4T3V0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcElzTWF0cml4SW52ZXJ0aWJsZShHRElQQ09OU1QgR3BNYXRyaXggKm1hdHJpeCwgQk9PTCAqcmVzdWx0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcElzTWF0cml4SWRlbnRpdHkoR0RJUENPTlNUIEdwTWF0cml4ICptYXRyaXgsIEJPT0wgKnJlc3VsdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBJc01hdHJpeEVxdWFsKEdESVBDT05TVCBHcE1hdHJpeCAqbWF0cml4LCBHRElQQ09OU1QgR3BNYXRyaXggKm1hdHJpeDIsIEJPT0wgKnJlc3VsdCk7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gUmVnaW9uIG1ldGhvZHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZVJlZ2lvbihHcFJlZ2lvbiAqKnJlZ2lvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVSZWdpb25SZWN0KEdESVBDT05TVCBHcFJlY3RGICpyZWN0LCBHcFJlZ2lvbiAqKnJlZ2lvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVSZWdpb25SZWN0SShHRElQQ09OU1QgR3BSZWN0ICpyZWN0LCBHcFJlZ2lvbiAqKnJlZ2lvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVSZWdpb25QYXRoKEdwUGF0aCAqcGF0aCwgR3BSZWdpb24gKipyZWdpb24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlUmVnaW9uUmduRGF0YShHRElQQ09OU1QgQllURSAqcmVnaW9uRGF0YSwgSU5UIHNpemUsIEdwUmVnaW9uICoqcmVnaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZVJlZ2lvbkhyZ24oSFJHTiBoUmduLCBHcFJlZ2lvbiAqKnJlZ2lvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDbG9uZVJlZ2lvbihHcFJlZ2lvbiAqcmVnaW9uLCBHcFJlZ2lvbiAqKmNsb25lUmVnaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERlbGV0ZVJlZ2lvbihHcFJlZ2lvbiAqcmVnaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldEluZmluaXRlKEdwUmVnaW9uICpyZWdpb24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0RW1wdHkoR3BSZWdpb24gKnJlZ2lvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDb21iaW5lUmVnaW9uUmVjdChHcFJlZ2lvbiAqcmVnaW9uLCBHRElQQ09OU1QgR3BSZWN0RiAqcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZU1vZGUgY29tYmluZU1vZGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ29tYmluZVJlZ2lvblJlY3RJKEdwUmVnaW9uICpyZWdpb24sIEdESVBDT05TVCBHcFJlY3QgKnJlY3QsDQorICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lTW9kZSBjb21iaW5lTW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDb21iaW5lUmVnaW9uUGF0aChHcFJlZ2lvbiAqcmVnaW9uLCBHcFBhdGggKnBhdGgsIENvbWJpbmVNb2RlIGNvbWJpbmVNb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENvbWJpbmVSZWdpb25SZWdpb24oR3BSZWdpb24gKnJlZ2lvbiwgIEdwUmVnaW9uICpyZWdpb24yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmVNb2RlIGNvbWJpbmVNb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFRyYW5zbGF0ZVJlZ2lvbihHcFJlZ2lvbiAqcmVnaW9uLCBSRUFMIGR4LCBSRUFMIGR5KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFRyYW5zbGF0ZVJlZ2lvbkkoR3BSZWdpb24gKnJlZ2lvbiwgSU5UIGR4LCBJTlQgZHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwVHJhbnNmb3JtUmVnaW9uKEdwUmVnaW9uICpyZWdpb24sIEdwTWF0cml4ICptYXRyaXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UmVnaW9uQm91bmRzKEdwUmVnaW9uICpyZWdpb24sIEdwR3JhcGhpY3MgKmdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BSZWN0RiAqcmVjdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRSZWdpb25Cb3VuZHNJKEdwUmVnaW9uICpyZWdpb24sIEdwR3JhcGhpY3MgKmdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BSZWN0ICpyZWN0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFJlZ2lvbkhSZ24oR3BSZWdpb24gKnJlZ2lvbiwgR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEhSR04gKmhSZ24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwSXNFbXB0eVJlZ2lvbihHcFJlZ2lvbiAqcmVnaW9uLCBHcEdyYXBoaWNzICpncmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09MICpyZXN1bHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwSXNJbmZpbml0ZVJlZ2lvbihHcFJlZ2lvbiAqcmVnaW9uLCBHcEdyYXBoaWNzICpncmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09MICpyZXN1bHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwSXNFcXVhbFJlZ2lvbihHcFJlZ2lvbiAqcmVnaW9uLCBHcFJlZ2lvbiAqcmVnaW9uMiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcEdyYXBoaWNzICpncmFwaGljcywgQk9PTCAqcmVzdWx0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFJlZ2lvbkRhdGFTaXplKEdwUmVnaW9uICpyZWdpb24sIFVJTlQgKiBidWZmZXJTaXplKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFJlZ2lvbkRhdGEoR3BSZWdpb24gKnJlZ2lvbiwgQllURSAqIGJ1ZmZlciwgVUlOVCBidWZmZXJTaXplLCBVSU5UICogc2l6ZUZpbGxlZCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBJc1Zpc2libGVSZWdpb25Qb2ludChHcFJlZ2lvbiAqcmVnaW9uLCBSRUFMIHgsIFJFQUwgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEJPT0wgKnJlc3VsdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBJc1Zpc2libGVSZWdpb25Qb2ludEkoR3BSZWdpb24gKnJlZ2lvbiwgSU5UIHgsIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcEdyYXBoaWNzICpncmFwaGljcywgQk9PTCAqcmVzdWx0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcElzVmlzaWJsZVJlZ2lvblJlY3QoR3BSZWdpb24gKnJlZ2lvbiwgUkVBTCB4LCBSRUFMIHksIFJFQUwgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCBoZWlnaHQsIEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBCT09MICpyZXN1bHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwSXNWaXNpYmxlUmVnaW9uUmVjdEkoR3BSZWdpb24gKnJlZ2lvbiwgSU5UIHgsIElOVCB5LCBJTlQgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOVCBoZWlnaHQsIEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBCT09MICpyZXN1bHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UmVnaW9uU2NhbnNDb3VudChHcFJlZ2lvbiAqcmVnaW9uLCBVSU5UKiBjb3VudCwgR3BNYXRyaXgqIG1hdHJpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRSZWdpb25TY2FucyhHcFJlZ2lvbiAqcmVnaW9uLCBHcFJlY3RGKiByZWN0cywgSU5UKiBjb3VudCwgR3BNYXRyaXgqIG1hdHJpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRSZWdpb25TY2Fuc0koR3BSZWdpb24gKnJlZ2lvbiwgR3BSZWN0KiByZWN0cywgSU5UKiBjb3VudCwgR3BNYXRyaXgqIG1hdHJpeCk7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQnJ1c2ggbWV0aG9kcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ2xvbmVCcnVzaChHcEJydXNoICpicnVzaCwgR3BCcnVzaCAqKmNsb25lQnJ1c2gpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRGVsZXRlQnJ1c2goR3BCcnVzaCAqYnJ1c2gpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0QnJ1c2hUeXBlKEdwQnJ1c2ggKmJydXNoLCBHcEJydXNoVHlwZSAqdHlwZSk7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gSGF0Y2ggQnJ1c2ggbWV0aG9kcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlSGF0Y2hCcnVzaChHcEhhdGNoU3R5bGUgaGF0Y2hzdHlsZSwgQVJHQiBmb3JlY29sLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSR0IgYmFja2NvbCwgR3BIYXRjaCAqKmJydXNoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEhhdGNoU3R5bGUoR3BIYXRjaCAqYnJ1c2gsIEdwSGF0Y2hTdHlsZSAqaGF0Y2hzdHlsZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRIYXRjaEZvcmVncm91bmRDb2xvcihHcEhhdGNoICpicnVzaCwgQVJHQiogZm9yZWNvbCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRIYXRjaEJhY2tncm91bmRDb2xvcihHcEhhdGNoICpicnVzaCwgQVJHQiogYmFja2NvbCk7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gVGV4dHVyZSBCcnVzaCBtZXRob2RzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVUZXh0dXJlKEdwSW1hZ2UgKmltYWdlLCBHcFdyYXBNb2RlIHdyYXBtb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwVGV4dHVyZSAqKnRleHR1cmUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlVGV4dHVyZTIoR3BJbWFnZSAqaW1hZ2UsIEdwV3JhcE1vZGUgd3JhcG1vZGUsIFJFQUwgeCwNCisgICAgICAgICAgICAgICAgICAgUkVBTCB5LCBSRUFMIHdpZHRoLCBSRUFMIGhlaWdodCwgR3BUZXh0dXJlICoqdGV4dHVyZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVUZXh0dXJlSUEoR3BJbWFnZSAqaW1hZ2UsIEdESVBDT05TVCBHcEltYWdlQXR0cmlidXRlcyAqaW1hZ2VBdHRyaWJ1dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgUkVBTCB4LCBSRUFMIHksIFJFQUwgd2lkdGgsIFJFQUwgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgR3BUZXh0dXJlICoqdGV4dHVyZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVUZXh0dXJlMkkoR3BJbWFnZSAqaW1hZ2UsIEdwV3JhcE1vZGUgd3JhcG1vZGUsIElOVCB4LA0KKyAgICAgICAgICAgICAgICAgICAgSU5UIHksIElOVCB3aWR0aCwgSU5UIGhlaWdodCwgR3BUZXh0dXJlICoqdGV4dHVyZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVUZXh0dXJlSUFJKEdwSW1hZ2UgKmltYWdlLCBHRElQQ09OU1QgR3BJbWFnZUF0dHJpYnV0ZXMgKmltYWdlQXR0cmlidXRlcywNCisgICAgICAgICAgICAgICAgICAgICBJTlQgeCwgSU5UIHksIElOVCB3aWR0aCwgSU5UIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICBHcFRleHR1cmUgKip0ZXh0dXJlKTsNCisNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFRleHR1cmVUcmFuc2Zvcm0oR3BUZXh0dXJlICpicnVzaCwgR3BNYXRyaXggKm1hdHJpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRUZXh0dXJlVHJhbnNmb3JtKEdwVGV4dHVyZSAqYnJ1c2gsIEdESVBDT05TVCBHcE1hdHJpeCAqbWF0cml4KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJlc2V0VGV4dHVyZVRyYW5zZm9ybShHcFRleHR1cmUqIGJydXNoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcE11bHRpcGx5VGV4dHVyZVRyYW5zZm9ybShHcFRleHR1cmUqIGJydXNoLCBHRElQQ09OU1QgR3BNYXRyaXggKm1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BNYXRyaXhPcmRlciBvcmRlcik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBUcmFuc2xhdGVUZXh0dXJlVHJhbnNmb3JtKEdwVGV4dHVyZSogYnJ1c2gsIFJFQUwgZHgsIFJFQUwgZHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2NhbGVUZXh0dXJlVHJhbnNmb3JtKEdwVGV4dHVyZSogYnJ1c2gsIFJFQUwgc3gsIFJFQUwgc3ksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUm90YXRlVGV4dHVyZVRyYW5zZm9ybShHcFRleHR1cmUqIGJydXNoLCBSRUFMIGFuZ2xlLCBHcE1hdHJpeE9yZGVyIG9yZGVyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFRleHR1cmVXcmFwTW9kZShHcFRleHR1cmUgKmJydXNoLCBHcFdyYXBNb2RlIHdyYXBtb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFRleHR1cmVXcmFwTW9kZShHcFRleHR1cmUgKmJydXNoLCBHcFdyYXBNb2RlICp3cmFwbW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRUZXh0dXJlSW1hZ2UoR3BUZXh0dXJlICpicnVzaCwgR3BJbWFnZSAqKmltYWdlKTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBTb2xpZCBCcnVzaCBtZXRob2RzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVTb2xpZEZpbGwoQVJHQiBjb2xvciwgR3BTb2xpZEZpbGwgKipicnVzaCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRTb2xpZEZpbGxDb2xvcihHcFNvbGlkRmlsbCAqYnJ1c2gsIEFSR0IgY29sb3IpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0U29saWRGaWxsQ29sb3IoR3BTb2xpZEZpbGwgKmJydXNoLCBBUkdCICpjb2xvcik7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gTGluZUJydXNoIG1ldGhvZHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUxpbmVCcnVzaChHRElQQ09OU1QgR3BQb2ludEYqIHBvaW50MSwNCisgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFBvaW50RiogcG9pbnQyLA0KKyAgICAgICAgICAgICAgICAgICAgQVJHQiBjb2xvcjEsIEFSR0IgY29sb3IyLA0KKyAgICAgICAgICAgICAgICAgICAgR3BXcmFwTW9kZSB3cmFwTW9kZSwNCisgICAgICAgICAgICAgICAgICAgIEdwTGluZUdyYWRpZW50ICoqbGluZUdyYWRpZW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUxpbmVCcnVzaEkoR0RJUENPTlNUIEdwUG9pbnQqIHBvaW50MSwNCisgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludCogcG9pbnQyLA0KKyAgICAgICAgICAgICAgICAgICAgIEFSR0IgY29sb3IxLCBBUkdCIGNvbG9yMiwNCisgICAgICAgICAgICAgICAgICAgICBHcFdyYXBNb2RlIHdyYXBNb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgIEdwTGluZUdyYWRpZW50ICoqbGluZUdyYWRpZW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUxpbmVCcnVzaEZyb21SZWN0KEdESVBDT05TVCBHcFJlY3RGKiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUkdCIGNvbG9yMSwgQVJHQiBjb2xvcjIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVhckdyYWRpZW50TW9kZSBtb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcFdyYXBNb2RlIHdyYXBNb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcExpbmVHcmFkaWVudCAqKmxpbmVHcmFkaWVudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVMaW5lQnJ1c2hGcm9tUmVjdEkoR0RJUENPTlNUIEdwUmVjdCogcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSR0IgY29sb3IxLCBBUkdCIGNvbG9yMiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVhckdyYWRpZW50TW9kZSBtb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BXcmFwTW9kZSB3cmFwTW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTGluZUdyYWRpZW50ICoqbGluZUdyYWRpZW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUxpbmVCcnVzaEZyb21SZWN0V2l0aEFuZ2xlKEdESVBDT05TVCBHcFJlY3RGKiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUkdCIGNvbG9yMSwgQVJHQiBjb2xvcjIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgYW5nbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJPT0wgaXNBbmdsZVNjYWxhYmxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcFdyYXBNb2RlIHdyYXBNb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcExpbmVHcmFkaWVudCAqKmxpbmVHcmFkaWVudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVMaW5lQnJ1c2hGcm9tUmVjdFdpdGhBbmdsZUkoR0RJUENPTlNUIEdwUmVjdCogcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJHQiBjb2xvcjEsIEFSR0IgY29sb3IyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFMIGFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGlzQW5nbGVTY2FsYWJsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BXcmFwTW9kZSB3cmFwTW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BMaW5lR3JhZGllbnQgKipsaW5lR3JhZGllbnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0TGluZVBvaW50cyhHcExpbmVHcmFkaWVudCAqYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEdwUG9pbnRGKiBwb2ludDEsDQorICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEdwUG9pbnRGKiBwb2ludDIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0TGluZVBvaW50c0koR3BMaW5lR3JhZGllbnQgKmJydXNoLA0KKyAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludCogcG9pbnQxLA0KKyAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludCogcG9pbnQyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldExpbmVQb2ludHMoR3BMaW5lR3JhZGllbnQgKmJydXNoLCBHcFBvaW50RiogcG9pbnRzKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldExpbmVQb2ludHNJKEdwTGluZUdyYWRpZW50ICpicnVzaCwgR3BQb2ludCogcG9pbnRzKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldExpbmVDb2xvcnMoR3BMaW5lR3JhZGllbnQgKmJydXNoLCBBUkdCIGNvbG9yMSwgQVJHQiBjb2xvcjIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0TGluZUNvbG9ycyhHcExpbmVHcmFkaWVudCAqYnJ1c2gsIEFSR0IqIGNvbG9ycyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRMaW5lUmVjdChHcExpbmVHcmFkaWVudCAqYnJ1c2gsIEdwUmVjdEYgKnJlY3QpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0TGluZVJlY3RJKEdwTGluZUdyYWRpZW50ICpicnVzaCwgR3BSZWN0ICpyZWN0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldExpbmVHYW1tYUNvcnJlY3Rpb24oR3BMaW5lR3JhZGllbnQgKmJydXNoLCBCT09MIHVzZUdhbW1hQ29ycmVjdGlvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRMaW5lR2FtbWFDb3JyZWN0aW9uKEdwTGluZUdyYWRpZW50ICpicnVzaCwgQk9PTCAqdXNlR2FtbWFDb3JyZWN0aW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldExpbmVCbGVuZENvdW50KEdwTGluZUdyYWRpZW50ICpicnVzaCwgSU5UICpjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRMaW5lQmxlbmQoR3BMaW5lR3JhZGllbnQgKmJydXNoLCBSRUFMICpibGVuZCwgUkVBTCogcG9zaXRpb25zLA0KKyAgICAgICAgICAgICAgICAgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldExpbmVCbGVuZChHcExpbmVHcmFkaWVudCAqYnJ1c2gsIEdESVBDT05TVCBSRUFMICpibGVuZCwNCisgICAgICAgICAgICAgICAgIEdESVBDT05TVCBSRUFMKiBwb3NpdGlvbnMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRMaW5lUHJlc2V0QmxlbmRDb3VudChHcExpbmVHcmFkaWVudCAqYnJ1c2gsIElOVCAqY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0TGluZVByZXNldEJsZW5kKEdwTGluZUdyYWRpZW50ICpicnVzaCwgQVJHQiAqYmxlbmQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwqIHBvc2l0aW9ucywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldExpbmVQcmVzZXRCbGVuZChHcExpbmVHcmFkaWVudCAqYnJ1c2gsIEdESVBDT05TVCBBUkdCICpibGVuZCwNCisgICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBSRUFMKiBwb3NpdGlvbnMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRMaW5lU2lnbWFCbGVuZChHcExpbmVHcmFkaWVudCAqYnJ1c2gsIFJFQUwgZm9jdXMsIFJFQUwgc2NhbGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0TGluZUxpbmVhckJsZW5kKEdwTGluZUdyYWRpZW50ICpicnVzaCwgUkVBTCBmb2N1cywgUkVBTCBzY2FsZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRMaW5lV3JhcE1vZGUoR3BMaW5lR3JhZGllbnQgKmJydXNoLCBHcFdyYXBNb2RlIHdyYXBtb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldExpbmVXcmFwTW9kZShHcExpbmVHcmFkaWVudCAqYnJ1c2gsIEdwV3JhcE1vZGUgKndyYXBtb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldExpbmVUcmFuc2Zvcm0oR3BMaW5lR3JhZGllbnQgKmJydXNoLCBHcE1hdHJpeCAqbWF0cml4KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldExpbmVUcmFuc2Zvcm0oR3BMaW5lR3JhZGllbnQgKmJydXNoLCBHRElQQ09OU1QgR3BNYXRyaXggKm1hdHJpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBSZXNldExpbmVUcmFuc2Zvcm0oR3BMaW5lR3JhZGllbnQqIGJydXNoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcE11bHRpcGx5TGluZVRyYW5zZm9ybShHcExpbmVHcmFkaWVudCogYnJ1c2gsIEdESVBDT05TVCBHcE1hdHJpeCAqbWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcE1hdHJpeE9yZGVyIG9yZGVyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFRyYW5zbGF0ZUxpbmVUcmFuc2Zvcm0oR3BMaW5lR3JhZGllbnQqIGJydXNoLCBSRUFMIGR4LCBSRUFMIGR5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcE1hdHJpeE9yZGVyIG9yZGVyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNjYWxlTGluZVRyYW5zZm9ybShHcExpbmVHcmFkaWVudCogYnJ1c2gsIFJFQUwgc3gsIFJFQUwgc3ksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUm90YXRlTGluZVRyYW5zZm9ybShHcExpbmVHcmFkaWVudCogYnJ1c2gsIFJFQUwgYW5nbGUsIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFBhdGhHcmFkaWVudCBCcnVzaA0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlUGF0aEdyYWRpZW50KEdESVBDT05TVCBHcFBvaW50RiogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcFdyYXBNb2RlIHdyYXBNb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwUGF0aEdyYWRpZW50ICoqcG9seUdyYWRpZW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZVBhdGhHcmFkaWVudEkoR0RJUENPTlNUIEdwUG9pbnQqIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BXcmFwTW9kZSB3cmFwTW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcFBhdGhHcmFkaWVudCAqKnBvbHlHcmFkaWVudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVQYXRoR3JhZGllbnRGcm9tUGF0aChHRElQQ09OU1QgR3BQYXRoKiBwYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwUGF0aEdyYWRpZW50ICoqcG9seUdyYWRpZW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBhdGhHcmFkaWVudENlbnRlckNvbG9yKA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEdwUGF0aEdyYWRpZW50ICpicnVzaCwgQVJHQiogY29sb3JzKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBhdGhHcmFkaWVudENlbnRlckNvbG9yKA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEdwUGF0aEdyYWRpZW50ICpicnVzaCwgQVJHQiBjb2xvcnMpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aEdyYWRpZW50U3Vycm91bmRDb2xvcnNXaXRoQ291bnQoDQorICAgICAgICAgICAgICAgICAgICAgICAgR3BQYXRoR3JhZGllbnQgKmJydXNoLCBBUkdCKiBjb2xvciwgSU5UKiBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQYXRoR3JhZGllbnRTdXJyb3VuZENvbG9yc1dpdGhDb3VudCgNCisgICAgICAgICAgICAgICAgICAgICAgICBHcFBhdGhHcmFkaWVudCAqYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEFSR0IqIGNvbG9yLCBJTlQqIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBhdGhHcmFkaWVudFBhdGgoR3BQYXRoR3JhZGllbnQgKmJydXNoLCBHcFBhdGggKnBhdGgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0UGF0aEdyYWRpZW50UGF0aChHcFBhdGhHcmFkaWVudCAqYnJ1c2gsIEdESVBDT05TVCBHcFBhdGggKnBhdGgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aEdyYWRpZW50Q2VudGVyUG9pbnQoDQorICAgICAgICAgICAgICAgICAgICAgICAgR3BQYXRoR3JhZGllbnQgKmJydXNoLCBHcFBvaW50RiogcG9pbnRzKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBhdGhHcmFkaWVudENlbnRlclBvaW50SSgNCisgICAgICAgICAgICAgICAgICAgICAgICBHcFBhdGhHcmFkaWVudCAqYnJ1c2gsIEdwUG9pbnQqIHBvaW50cyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQYXRoR3JhZGllbnRDZW50ZXJQb2ludCgNCisgICAgICAgICAgICAgICAgICAgICAgICBHcFBhdGhHcmFkaWVudCAqYnJ1c2gsIEdESVBDT05TVCBHcFBvaW50RiogcG9pbnRzKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBhdGhHcmFkaWVudENlbnRlclBvaW50SSgNCisgICAgICAgICAgICAgICAgICAgICAgICBHcFBhdGhHcmFkaWVudCAqYnJ1c2gsIEdESVBDT05TVCBHcFBvaW50KiBwb2ludHMpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aEdyYWRpZW50UmVjdChHcFBhdGhHcmFkaWVudCAqYnJ1c2gsIEdwUmVjdEYgKnJlY3QpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aEdyYWRpZW50UmVjdEkoR3BQYXRoR3JhZGllbnQgKmJydXNoLCBHcFJlY3QgKnJlY3QpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aEdyYWRpZW50UG9pbnRDb3VudChHcFBhdGhHcmFkaWVudCAqYnJ1c2gsIElOVCogY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aEdyYWRpZW50U3Vycm91bmRDb2xvckNvdW50KEdwUGF0aEdyYWRpZW50ICpicnVzaCwgSU5UKiBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQYXRoR3JhZGllbnRHYW1tYUNvcnJlY3Rpb24oR3BQYXRoR3JhZGllbnQgKmJydXNoLCBCT09MIHVzZUdhbW1hQ29ycmVjdGlvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYXRoR3JhZGllbnRHYW1tYUNvcnJlY3Rpb24oR3BQYXRoR3JhZGllbnQgKmJydXNoLCBCT09MICp1c2VHYW1tYUNvcnJlY3Rpb24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aEdyYWRpZW50QmxlbmRDb3VudChHcFBhdGhHcmFkaWVudCAqYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5UICpjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYXRoR3JhZGllbnRCbGVuZChHcFBhdGhHcmFkaWVudCAqYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCAqYmxlbmQsIFJFQUwgKnBvc2l0aW9ucywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBhdGhHcmFkaWVudEJsZW5kKEdwUGF0aEdyYWRpZW50ICpicnVzaCwNCisgICAgICAgICAgICAgICAgR0RJUENPTlNUIFJFQUwgKmJsZW5kLCBHRElQQ09OU1QgUkVBTCAqcG9zaXRpb25zLCBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aEdyYWRpZW50UHJlc2V0QmxlbmRDb3VudChHcFBhdGhHcmFkaWVudCAqYnJ1c2gsIElOVCAqY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGF0aEdyYWRpZW50UHJlc2V0QmxlbmQoR3BQYXRoR3JhZGllbnQgKmJydXNoLCBBUkdCICpibGVuZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFMKiBwb3NpdGlvbnMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQYXRoR3JhZGllbnRQcmVzZXRCbGVuZChHcFBhdGhHcmFkaWVudCAqYnJ1c2gsIEdESVBDT05TVCBBUkdCICpibGVuZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIFJFQUwqIHBvc2l0aW9ucywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBhdGhHcmFkaWVudFNpZ21hQmxlbmQoR3BQYXRoR3JhZGllbnQgKmJydXNoLCBSRUFMIGZvY3VzLCBSRUFMIHNjYWxlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBhdGhHcmFkaWVudExpbmVhckJsZW5kKEdwUGF0aEdyYWRpZW50ICpicnVzaCwgUkVBTCBmb2N1cywgUkVBTCBzY2FsZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYXRoR3JhZGllbnRXcmFwTW9kZShHcFBhdGhHcmFkaWVudCAqYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcFdyYXBNb2RlICp3cmFwbW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQYXRoR3JhZGllbnRXcmFwTW9kZShHcFBhdGhHcmFkaWVudCAqYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcFdyYXBNb2RlIHdyYXBtb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBhdGhHcmFkaWVudFRyYW5zZm9ybShHcFBhdGhHcmFkaWVudCAqYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BNYXRyaXggKm1hdHJpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQYXRoR3JhZGllbnRUcmFuc2Zvcm0oR3BQYXRoR3JhZGllbnQgKmJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWF0cml4ICptYXRyaXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUmVzZXRQYXRoR3JhZGllbnRUcmFuc2Zvcm0oR3BQYXRoR3JhZGllbnQqIGJydXNoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcE11bHRpcGx5UGF0aEdyYWRpZW50VHJhbnNmb3JtKEdwUGF0aEdyYWRpZW50KiBicnVzaCwgR0RJUENPTlNUIEdwTWF0cml4ICptYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwVHJhbnNsYXRlUGF0aEdyYWRpZW50VHJhbnNmb3JtKEdwUGF0aEdyYWRpZW50KiBicnVzaCwgUkVBTCBkeCwgUkVBTCBkeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BNYXRyaXhPcmRlciBvcmRlcik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTY2FsZVBhdGhHcmFkaWVudFRyYW5zZm9ybShHcFBhdGhHcmFkaWVudCogYnJ1c2gsIFJFQUwgc3gsIFJFQUwgc3ksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUm90YXRlUGF0aEdyYWRpZW50VHJhbnNmb3JtKEdwUGF0aEdyYWRpZW50KiBicnVzaCwgUkVBTCBhbmdsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BNYXRyaXhPcmRlciBvcmRlcik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYXRoR3JhZGllbnRGb2N1c1NjYWxlcyhHcFBhdGhHcmFkaWVudCAqYnJ1c2gsIFJFQUwqIHhTY2FsZSwgUkVBTCogeVNjYWxlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBhdGhHcmFkaWVudEZvY3VzU2NhbGVzKEdwUGF0aEdyYWRpZW50ICpicnVzaCwgUkVBTCB4U2NhbGUsIFJFQUwgeVNjYWxlKTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBQZW4gbWV0aG9kcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlUGVuMShBUkdCIGNvbG9yLCBSRUFMIHdpZHRoLCBHcFVuaXQgdW5pdCwgR3BQZW4gKipwZW4pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlUGVuMihHcEJydXNoICpicnVzaCwgUkVBTCB3aWR0aCwgR3BVbml0IHVuaXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgR3BQZW4gKipwZW4pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ2xvbmVQZW4oR3BQZW4gKnBlbiwgR3BQZW4gKipjbG9uZXBlbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEZWxldGVQZW4oR3BQZW4gKnBlbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQZW5XaWR0aChHcFBlbiAqcGVuLCBSRUFMIHdpZHRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlbldpZHRoKEdwUGVuICpwZW4sIFJFQUwgKndpZHRoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBlblVuaXQoR3BQZW4gKnBlbiwgR3BVbml0IHVuaXQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGVuVW5pdChHcFBlbiAqcGVuLCBHcFVuaXQgKnVuaXQpOw0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18xOTc4MTkNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBlbkxpbmVDYXAxOTc4MTkoR3BQZW4gKnBlbiwgR3BMaW5lQ2FwIHN0YXJ0Q2FwLCBHcExpbmVDYXAgZW5kQ2FwLA0KKyAgICAgICAgICAgICAgICAgIEdwRGFzaENhcCBkYXNoQ2FwKTsNCisjZWxzZQ0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0UGVuTGluZUNhcChHcFBlbiAqcGVuLCBHcExpbmVDYXAgc3RhcnRDYXAsIEdwTGluZUNhcCBlbmRDYXAsDQorICAgICAgICAgICAgICAgICAgR3BMaW5lQ2FwIGRhc2hDYXApOw0KKyNlbmRpZiAvLyBEQ1JfVVNFX05FV18xOTc4MTkNCisNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBlblN0YXJ0Q2FwKEdwUGVuICpwZW4sIEdwTGluZUNhcCBzdGFydENhcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQZW5FbmRDYXAoR3BQZW4gKnBlbiwgR3BMaW5lQ2FwIGVuZENhcCk7DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzE5NzgxOQ0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0UGVuRGFzaENhcDE5NzgxOShHcFBlbiAqcGVuLCBHcERhc2hDYXAgZGFzaENhcCk7DQorI2Vsc2UNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBlbkRhc2hDYXAoR3BQZW4gKnBlbiwgR3BMaW5lQ2FwIGRhc2hDYXApOw0KKyNlbmRpZiAvLyBEQ1JfVVNFX05FV18xOTc4MTkNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlblN0YXJ0Q2FwKEdwUGVuICpwZW4sIEdwTGluZUNhcCAqc3RhcnRDYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGVuRW5kQ2FwKEdwUGVuICpwZW4sIEdwTGluZUNhcCAqZW5kQ2FwKTsNCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMTk3ODE5DQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQZW5EYXNoQ2FwMTk3ODE5KEdwUGVuICpwZW4sIEdwRGFzaENhcCAqZGFzaENhcCk7DQorI2Vsc2UNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlbkRhc2hDYXAoR3BQZW4gKnBlbiwgR3BMaW5lQ2FwICpkYXNoQ2FwKTsNCisjZW5kaWYgLy8gRENSX1VTRV9ORVdfMTk3ODE5DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQZW5MaW5lSm9pbihHcFBlbiAqcGVuLCBHcExpbmVKb2luIGxpbmVKb2luKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlbkxpbmVKb2luKEdwUGVuICpwZW4sIEdwTGluZUpvaW4gKmxpbmVKb2luKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBlbkN1c3RvbVN0YXJ0Q2FwKEdwUGVuICpwZW4sIEdwQ3VzdG9tTGluZUNhcCogY3VzdG9tQ2FwKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlbkN1c3RvbVN0YXJ0Q2FwKEdwUGVuICpwZW4sIEdwQ3VzdG9tTGluZUNhcCoqIGN1c3RvbUNhcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQZW5DdXN0b21FbmRDYXAoR3BQZW4gKnBlbiwgR3BDdXN0b21MaW5lQ2FwKiBjdXN0b21DYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGVuQ3VzdG9tRW5kQ2FwKEdwUGVuICpwZW4sIEdwQ3VzdG9tTGluZUNhcCoqIGN1c3RvbUNhcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQZW5NaXRlckxpbWl0KEdwUGVuICpwZW4sIFJFQUwgbWl0ZXJMaW1pdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQZW5NaXRlckxpbWl0KEdwUGVuICpwZW4sIFJFQUwgKm1pdGVyTGltaXQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0UGVuTW9kZShHcFBlbiAqcGVuLCBHcFBlbkFsaWdubWVudCBwZW5Nb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlbk1vZGUoR3BQZW4gKnBlbiwgR3BQZW5BbGlnbm1lbnQgKnBlbk1vZGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0UGVuVHJhbnNmb3JtKEdwUGVuICpwZW4sIEdwTWF0cml4ICptYXRyaXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGVuVHJhbnNmb3JtKEdwUGVuICpwZW4sIEdwTWF0cml4ICptYXRyaXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUmVzZXRQZW5UcmFuc2Zvcm0oR3BQZW4gKnBlbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBNdWx0aXBseVBlblRyYW5zZm9ybShHcFBlbiAqcGVuLCBHRElQQ09OU1QgR3BNYXRyaXggKm1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcE1hdHJpeE9yZGVyIG9yZGVyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFRyYW5zbGF0ZVBlblRyYW5zZm9ybShHcFBlbiAqcGVuLCBSRUFMIGR4LCBSRUFMIGR5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcE1hdHJpeE9yZGVyIG9yZGVyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNjYWxlUGVuVHJhbnNmb3JtKEdwUGVuICpwZW4sIFJFQUwgc3gsIFJFQUwgc3ksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUm90YXRlUGVuVHJhbnNmb3JtKEdwUGVuICpwZW4sIFJFQUwgYW5nbGUsIEdwTWF0cml4T3JkZXIgb3JkZXIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0UGVuQ29sb3IoR3BQZW4gKnBlbiwgQVJHQiBhcmdiKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlbkNvbG9yKEdwUGVuICpwZW4sIEFSR0IgKmFyZ2IpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0UGVuQnJ1c2hGaWxsKEdwUGVuICpwZW4sIEdwQnJ1c2ggKmJydXNoKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlbkJydXNoRmlsbChHcFBlbiAqcGVuLCBHcEJydXNoICoqYnJ1c2gpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGVuRmlsbFR5cGUoR3BQZW4gKnBlbiwgR3BQZW5UeXBlKiB0eXBlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlbkRhc2hTdHlsZShHcFBlbiAqcGVuLCBHcERhc2hTdHlsZSAqZGFzaHN0eWxlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBlbkRhc2hTdHlsZShHcFBlbiAqcGVuLCBHcERhc2hTdHlsZSBkYXNoc3R5bGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGVuRGFzaE9mZnNldChHcFBlbiAqcGVuLCBSRUFMICpvZmZzZXQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0UGVuRGFzaE9mZnNldChHcFBlbiAqcGVuLCBSRUFMIG9mZnNldCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQZW5EYXNoQ291bnQoR3BQZW4gKnBlbiwgSU5UICpjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQZW5EYXNoQXJyYXkoR3BQZW4gKnBlbiwgR0RJUENPTlNUIFJFQUwgKmRhc2gsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQZW5EYXNoQXJyYXkoR3BQZW4gKnBlbiwgUkVBTCAqZGFzaCwgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFBlbkNvbXBvdW5kQ291bnQoR3BQZW4gKnBlbiwgSU5UICpjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQZW5Db21wb3VuZEFycmF5KEdwUGVuICpwZW4sIEdESVBDT05TVCBSRUFMICpkYXNoLCBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGVuQ29tcG91bmRBcnJheShHcFBlbiAqcGVuLCBSRUFMICpkYXNoLCBJTlQgY291bnQpOw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEN1c3RvbUxpbmVDYXAgbWV0aG9kcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlQ3VzdG9tTGluZUNhcChHcFBhdGgqIGZpbGxQYXRoLCBHcFBhdGgqIHN0cm9rZVBhdGgsDQorICAgR3BMaW5lQ2FwIGJhc2VDYXAsIFJFQUwgYmFzZUluc2V0LCBHcEN1c3RvbUxpbmVDYXAgKipjdXN0b21DYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRGVsZXRlQ3VzdG9tTGluZUNhcChHcEN1c3RvbUxpbmVDYXAqIGN1c3RvbUNhcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDbG9uZUN1c3RvbUxpbmVDYXAoR3BDdXN0b21MaW5lQ2FwKiBjdXN0b21DYXAsDQorICAgICAgICAgICAgICAgICAgICAgICBHcEN1c3RvbUxpbmVDYXAqKiBjbG9uZWRDYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0Q3VzdG9tTGluZUNhcFR5cGUoR3BDdXN0b21MaW5lQ2FwKiBjdXN0b21DYXAsDQorICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21MaW5lQ2FwVHlwZSogY2FwVHlwZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRDdXN0b21MaW5lQ2FwU3Ryb2tlQ2FwcyhHcEN1c3RvbUxpbmVDYXAqIGN1c3RvbUNhcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BMaW5lQ2FwIHN0YXJ0Q2FwLCBHcExpbmVDYXAgZW5kQ2FwKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEN1c3RvbUxpbmVDYXBTdHJva2VDYXBzKEdwQ3VzdG9tTGluZUNhcCogY3VzdG9tQ2FwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcExpbmVDYXAqIHN0YXJ0Q2FwLCBHcExpbmVDYXAqIGVuZENhcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRDdXN0b21MaW5lQ2FwU3Ryb2tlSm9pbihHcEN1c3RvbUxpbmVDYXAqIGN1c3RvbUNhcCwgR3BMaW5lSm9pbiBsaW5lSm9pbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRDdXN0b21MaW5lQ2FwU3Ryb2tlSm9pbihHcEN1c3RvbUxpbmVDYXAqIGN1c3RvbUNhcCwgR3BMaW5lSm9pbiogbGluZUpvaW4pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0Q3VzdG9tTGluZUNhcEJhc2VDYXAoR3BDdXN0b21MaW5lQ2FwKiBjdXN0b21DYXAsIEdwTGluZUNhcCBiYXNlQ2FwKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEN1c3RvbUxpbmVDYXBCYXNlQ2FwKEdwQ3VzdG9tTGluZUNhcCogY3VzdG9tQ2FwLCBHcExpbmVDYXAqIGJhc2VDYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0Q3VzdG9tTGluZUNhcEJhc2VJbnNldChHcEN1c3RvbUxpbmVDYXAqIGN1c3RvbUNhcCwgUkVBTCBpbnNldCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRDdXN0b21MaW5lQ2FwQmFzZUluc2V0KEdwQ3VzdG9tTGluZUNhcCogY3VzdG9tQ2FwLCBSRUFMKiBpbnNldCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRDdXN0b21MaW5lQ2FwV2lkdGhTY2FsZShHcEN1c3RvbUxpbmVDYXAqIGN1c3RvbUNhcCwgUkVBTCB3aWR0aFNjYWxlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEN1c3RvbUxpbmVDYXBXaWR0aFNjYWxlKEdwQ3VzdG9tTGluZUNhcCogY3VzdG9tQ2FwLCBSRUFMKiB3aWR0aFNjYWxlKTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBBZGp1c3RhYmxlQXJyb3dDYXAgbWV0aG9kcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlQWRqdXN0YWJsZUFycm93Q2FwKFJFQUwgaGVpZ2h0LCBSRUFMIHdpZHRoLCBCT09MIGlzRmlsbGVkLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BBZGp1c3RhYmxlQXJyb3dDYXAgKipjYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0QWRqdXN0YWJsZUFycm93Q2FwSGVpZ2h0KEdwQWRqdXN0YWJsZUFycm93Q2FwKiBjYXAsIFJFQUwgaGVpZ2h0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEFkanVzdGFibGVBcnJvd0NhcEhlaWdodChHcEFkanVzdGFibGVBcnJvd0NhcCogY2FwLCBSRUFMKiBoZWlnaHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0QWRqdXN0YWJsZUFycm93Q2FwV2lkdGgoR3BBZGp1c3RhYmxlQXJyb3dDYXAqIGNhcCwgUkVBTCB3aWR0aCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRBZGp1c3RhYmxlQXJyb3dDYXBXaWR0aChHcEFkanVzdGFibGVBcnJvd0NhcCogY2FwLCBSRUFMKiB3aWR0aCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRBZGp1c3RhYmxlQXJyb3dDYXBNaWRkbGVJbnNldChHcEFkanVzdGFibGVBcnJvd0NhcCogY2FwLCBSRUFMIG1pZGRsZUluc2V0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEFkanVzdGFibGVBcnJvd0NhcE1pZGRsZUluc2V0KEdwQWRqdXN0YWJsZUFycm93Q2FwKiBjYXAsIFJFQUwqIG1pZGRsZUluc2V0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldEFkanVzdGFibGVBcnJvd0NhcEZpbGxTdGF0ZShHcEFkanVzdGFibGVBcnJvd0NhcCogY2FwLCBCT09MIGZpbGxTdGF0ZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRBZGp1c3RhYmxlQXJyb3dDYXBGaWxsU3RhdGUoR3BBZGp1c3RhYmxlQXJyb3dDYXAqIGNhcCwgQk9PTCogZmlsbFN0YXRlKTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBJbWFnZSBtZXRob2RzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBMb2FkSW1hZ2VGcm9tU3RyZWFtKElTdHJlYW0qIHN0cmVhbSwgR3BJbWFnZSAqKmltYWdlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcExvYWRJbWFnZUZyb21GaWxlKEdESVBDT05TVCBXQ0hBUiogZmlsZW5hbWUsIEdwSW1hZ2UgKippbWFnZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBMb2FkSW1hZ2VGcm9tU3RyZWFtSUNNKElTdHJlYW0qIHN0cmVhbSwgR3BJbWFnZSAqKmltYWdlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcExvYWRJbWFnZUZyb21GaWxlSUNNKEdESVBDT05TVCBXQ0hBUiogZmlsZW5hbWUsIEdwSW1hZ2UgKippbWFnZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDbG9uZUltYWdlKEdwSW1hZ2UgKmltYWdlLCBHcEltYWdlICoqY2xvbmVJbWFnZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEaXNwb3NlSW1hZ2UoR3BJbWFnZSAqaW1hZ2UpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2F2ZUltYWdlVG9GaWxlKEdwSW1hZ2UgKmltYWdlLCBHRElQQ09OU1QgV0NIQVIqIGZpbGVuYW1lLA0KKyAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIENMU0lEKiBjbHNpZEVuY29kZXIsIEdESVBDT05TVCBFbmNvZGVyUGFyYW1ldGVycyogZW5jb2RlclBhcmFtcyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTYXZlSW1hZ2VUb1N0cmVhbShHcEltYWdlICppbWFnZSwgSVN0cmVhbSogc3RyZWFtLA0KKyAgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgQ0xTSUQqIGNsc2lkRW5jb2RlciwgR0RJUENPTlNUIEVuY29kZXJQYXJhbWV0ZXJzKiBlbmNvZGVyUGFyYW1zKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNhdmVBZGQoR3BJbWFnZSAqaW1hZ2UsIEdESVBDT05TVCBFbmNvZGVyUGFyYW1ldGVycyogZW5jb2RlclBhcmFtcyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTYXZlQWRkSW1hZ2UoR3BJbWFnZSAqaW1hZ2UsIEdwSW1hZ2UqIG5ld0ltYWdlLA0KKyAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEVuY29kZXJQYXJhbWV0ZXJzKiBlbmNvZGVyUGFyYW1zKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEltYWdlR3JhcGhpY3NDb250ZXh0KEdwSW1hZ2UgKmltYWdlLCBHcEdyYXBoaWNzICoqZ3JhcGhpY3MpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0SW1hZ2VCb3VuZHMoR3BJbWFnZSAqaW1hZ2UsIEdwUmVjdEYgKnNyY1JlY3QsIEdwVW5pdCAqc3JjVW5pdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRJbWFnZURpbWVuc2lvbihHcEltYWdlICppbWFnZSwgUkVBTCAqd2lkdGgsIFJFQUwgKmhlaWdodCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRJbWFnZVR5cGUoR3BJbWFnZSAqaW1hZ2UsIEltYWdlVHlwZSAqdHlwZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRJbWFnZVdpZHRoKEdwSW1hZ2UgKmltYWdlLCBVSU5UICp3aWR0aCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRJbWFnZUhlaWdodChHcEltYWdlICppbWFnZSwgVUlOVCAqaGVpZ2h0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEltYWdlSG9yaXpvbnRhbFJlc29sdXRpb24oR3BJbWFnZSAqaW1hZ2UsIFJFQUwgKnJlc29sdXRpb24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0SW1hZ2VWZXJ0aWNhbFJlc29sdXRpb24oR3BJbWFnZSAqaW1hZ2UsIFJFQUwgKnJlc29sdXRpb24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0SW1hZ2VGbGFncyhHcEltYWdlICppbWFnZSwgVUlOVCAqZmxhZ3MpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0SW1hZ2VSYXdGb3JtYXQoR3BJbWFnZSAqaW1hZ2UsIEdVSUQgKmZvcm1hdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRJbWFnZVBpeGVsRm9ybWF0KEdwSW1hZ2UgKmltYWdlLCBQaXhlbEZvcm1hdCAqZm9ybWF0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEltYWdlVGh1bWJuYWlsKEdwSW1hZ2UgKmltYWdlLCBVSU5UIHRodW1iV2lkdGgsIFVJTlQgdGh1bWJIZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgIEdwSW1hZ2UgKip0aHVtYkltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICBHZXRUaHVtYm5haWxJbWFnZUFib3J0IGNhbGxiYWNrLCBWT0lEICogY2FsbGJhY2tEYXRhKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEVuY29kZXJQYXJhbWV0ZXJMaXN0U2l6ZShHcEltYWdlICppbWFnZSwgR0RJUENPTlNUIENMU0lEKiBjbHNpZEVuY29kZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UKiBzaXplKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEVuY29kZXJQYXJhbWV0ZXJMaXN0KEdwSW1hZ2UgKmltYWdlLCBHRElQQ09OU1QgQ0xTSUQqIGNsc2lkRW5jb2RlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBzaXplLCBFbmNvZGVyUGFyYW1ldGVycyogYnVmZmVyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEltYWdlR2V0RnJhbWVEaW1lbnNpb25zQ291bnQoR3BJbWFnZSogaW1hZ2UsIFVJTlQqIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEltYWdlR2V0RnJhbWVEaW1lbnNpb25zTGlzdChHcEltYWdlKiBpbWFnZSwgR1VJRCogZGltZW5zaW9uSURzLCBVSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEltYWdlR2V0RnJhbWVDb3VudChHcEltYWdlICppbWFnZSwgR0RJUENPTlNUIEdVSUQqIGRpbWVuc2lvbklELCBVSU5UKiBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBJbWFnZVNlbGVjdEFjdGl2ZUZyYW1lKEdwSW1hZ2UgKmltYWdlLCBHRElQQ09OU1QgR1VJRCogZGltZW5zaW9uSUQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBmcmFtZUluZGV4KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEltYWdlUm90YXRlRmxpcChHcEltYWdlICppbWFnZSwgUm90YXRlRmxpcFR5cGUgcmZUeXBlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEltYWdlUGFsZXR0ZShHcEltYWdlICppbWFnZSwgQ29sb3JQYWxldHRlICpwYWxldHRlLCBJTlQgc2l6ZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRJbWFnZVBhbGV0dGUoR3BJbWFnZSAqaW1hZ2UsIEdESVBDT05TVCBDb2xvclBhbGV0dGUgKnBhbGV0dGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0SW1hZ2VQYWxldHRlU2l6ZShHcEltYWdlICppbWFnZSwgSU5UICpzaXplKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFByb3BlcnR5Q291bnQoR3BJbWFnZSAqaW1hZ2UsIFVJTlQqIG51bU9mUHJvcGVydHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UHJvcGVydHlJZExpc3QoR3BJbWFnZSAqaW1hZ2UsIFVJTlQgbnVtT2ZQcm9wZXJ0eSwgUFJPUElEKiBsaXN0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFByb3BlcnR5SXRlbVNpemUoR3BJbWFnZSAqaW1hZ2UsIFBST1BJRCBwcm9wSWQsIFVJTlQqIHNpemUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UHJvcGVydHlJdGVtKEdwSW1hZ2UgKmltYWdlLCBQUk9QSUQgcHJvcElkLFVJTlQgcHJvcFNpemUsDQorICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eUl0ZW0qIGJ1ZmZlcik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQcm9wZXJ0eVNpemUoR3BJbWFnZSAqaW1hZ2UsIFVJTlQqIHRvdGFsQnVmZmVyU2l6ZSwgVUlOVCogbnVtUHJvcGVydGllcyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRBbGxQcm9wZXJ0eUl0ZW1zKEdwSW1hZ2UgKmltYWdlLCBVSU5UIHRvdGFsQnVmZmVyU2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIG51bVByb3BlcnRpZXMsIFByb3BlcnR5SXRlbSogYWxsSXRlbXMpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUmVtb3ZlUHJvcGVydHlJdGVtKEdwSW1hZ2UgKmltYWdlLCBQUk9QSUQgcHJvcElkKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFByb3BlcnR5SXRlbShHcEltYWdlICppbWFnZSwgR0RJUENPTlNUIFByb3BlcnR5SXRlbSogaXRlbSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBJbWFnZUZvcmNlVmFsaWRhdGlvbihHcEltYWdlICppbWFnZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRJbWFnZUxheW91dChHcEltYWdlICppbWFnZSwgSW1hZ2VMYXlvdXQqIGxheW91dCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRJbWFnZUxheW91dChHcEltYWdlICppbWFnZSwgR0RJUENPTlNUIEltYWdlTGF5b3V0IGxheW91dCk7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQml0bWFwIG1ldGhvZHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUJpdG1hcEZyb21TdHJlYW0oSVN0cmVhbSogc3RyZWFtLCBHcEJpdG1hcCAqKmJpdG1hcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVCaXRtYXBGcm9tRmlsZShHRElQQ09OU1QgV0NIQVIqIGZpbGVuYW1lLCBHcEJpdG1hcCAqKmJpdG1hcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVCaXRtYXBGcm9tU3RyZWFtSUNNKElTdHJlYW0qIHN0cmVhbSwgR3BCaXRtYXAgKipiaXRtYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlQml0bWFwRnJvbUZpbGVJQ00oR0RJUENPTlNUIFdDSEFSKiBmaWxlbmFtZSwgR3BCaXRtYXAgKipiaXRtYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlQml0bWFwRnJvbVNjYW4wKElOVCB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgc3RyaWRlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgUGl4ZWxGb3JtYXQgZm9ybWF0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgQllURSogc2NhbjAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBHcEJpdG1hcCoqIGJpdG1hcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVCaXRtYXBGcm9tR3JhcGhpY3MoSU5UIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5UIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwR3JhcGhpY3MqIHRhcmdldCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwQml0bWFwKiogYml0bWFwKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUJpdG1hcEZyb21EaXJlY3REcmF3U3VyZmFjZShJRGlyZWN0RHJhd1N1cmZhY2U3KiBzdXJmYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BCaXRtYXAqKiBiaXRtYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlQml0bWFwRnJvbUdkaURpYihHRElQQ09OU1QgQklUTUFQSU5GTyogZ2RpQml0bWFwSW5mbywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWT0lEKiBnZGlCaXRtYXBEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwQml0bWFwKiogYml0bWFwKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUJpdG1hcEZyb21IQklUTUFQKEhCSVRNQVAgaGJtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIUEFMRVRURSBocGFsLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcEJpdG1hcCoqIGJpdG1hcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVIQklUTUFQRnJvbUJpdG1hcChHcEJpdG1hcCogYml0bWFwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQklUTUFQKiBoYm1SZXR1cm4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSR0IgYmFja2dyb3VuZCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVCaXRtYXBGcm9tSElDT04oSElDT04gaGljb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICBHcEJpdG1hcCoqIGJpdG1hcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVISUNPTkZyb21CaXRtYXAoR3BCaXRtYXAqIGJpdG1hcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIEhJQ09OKiBoYm1SZXR1cm4pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlQml0bWFwRnJvbVJlc291cmNlKEhJTlNUQU5DRSBoSW5zdGFuY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgV0NIQVIqIGxwQml0bWFwTmFtZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwQml0bWFwKiogYml0bWFwKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENsb25lQml0bWFwQXJlYShSRUFMIHgsIFJFQUwgeSwgUkVBTCB3aWR0aCwgUkVBTCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0IGZvcm1hdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BCaXRtYXAgKnNyY0JpdG1hcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3BCaXRtYXAgKipkc3RCaXRtYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ2xvbmVCaXRtYXBBcmVhSShJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgICBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgICBJTlQgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgSU5UIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICBQaXhlbEZvcm1hdCBmb3JtYXQsDQorICAgICAgICAgICAgICAgICAgICAgR3BCaXRtYXAgKnNyY0JpdG1hcCwNCisgICAgICAgICAgICAgICAgICAgICBHcEJpdG1hcCAqKmRzdEJpdG1hcCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBCaXRtYXBMb2NrQml0cyhHcEJpdG1hcCogYml0bWFwLA0KKyAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BSZWN0KiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICBVSU5UIGZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICBQaXhlbEZvcm1hdCBmb3JtYXQsDQorICAgICAgICAgICAgICAgICAgIEJpdG1hcERhdGEqIGxvY2tlZEJpdG1hcERhdGEpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQml0bWFwVW5sb2NrQml0cyhHcEJpdG1hcCogYml0bWFwLA0KKyAgICAgICAgICAgICAgICAgICAgIEJpdG1hcERhdGEqIGxvY2tlZEJpdG1hcERhdGEpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQml0bWFwR2V0UGl4ZWwoR3BCaXRtYXAqIGJpdG1hcCwgSU5UIHgsIElOVCB5LCBBUkdCICpjb2xvcik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBCaXRtYXBTZXRQaXhlbChHcEJpdG1hcCogYml0bWFwLCBJTlQgeCwgSU5UIHksIEFSR0IgY29sb3IpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQml0bWFwU2V0UmVzb2x1dGlvbihHcEJpdG1hcCogYml0bWFwLCBSRUFMIHhkcGksIFJFQUwgeWRwaSk7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gSW1hZ2VBdHRyaWJ1dGVzIG1ldGhvZHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUltYWdlQXR0cmlidXRlcyhHcEltYWdlQXR0cmlidXRlcyAqKmltYWdlYXR0cik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDbG9uZUltYWdlQXR0cmlidXRlcyhHRElQQ09OU1QgR3BJbWFnZUF0dHJpYnV0ZXMgKmltYWdlYXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgR3BJbWFnZUF0dHJpYnV0ZXMgKipjbG9uZUltYWdlYXR0cik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEaXNwb3NlSW1hZ2VBdHRyaWJ1dGVzKEdwSW1hZ2VBdHRyaWJ1dGVzICppbWFnZWF0dHIpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzVG9JZGVudGl0eShHcEltYWdlQXR0cmlidXRlcyAqaW1hZ2VhdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yQWRqdXN0VHlwZSB0eXBlKTsNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJlc2V0SW1hZ2VBdHRyaWJ1dGVzKEdwSW1hZ2VBdHRyaWJ1dGVzICppbWFnZWF0dHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yQWRqdXN0VHlwZSB0eXBlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldEltYWdlQXR0cmlidXRlc0NvbG9yTWF0cml4KEdwSW1hZ2VBdHRyaWJ1dGVzICppbWFnZWF0dHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yQWRqdXN0VHlwZSB0eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGVuYWJsZUZsYWcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBDb2xvck1hdHJpeCogY29sb3JNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBDb2xvck1hdHJpeCogZ3JheU1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JNYXRyaXhGbGFncyBmbGFncyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRJbWFnZUF0dHJpYnV0ZXNUaHJlc2hvbGQoR3BJbWFnZUF0dHJpYnV0ZXMgKmltYWdlYXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yQWRqdXN0VHlwZSB0eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk9PTCBlbmFibGVGbGFnLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCB0aHJlc2hvbGQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzR2FtbWEoR3BJbWFnZUF0dHJpYnV0ZXMgKmltYWdlYXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JBZGp1c3RUeXBlIHR5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJPT0wgZW5hYmxlRmxhZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCBnYW1tYSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRJbWFnZUF0dHJpYnV0ZXNOb09wKEdwSW1hZ2VBdHRyaWJ1dGVzICppbWFnZWF0dHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JBZGp1c3RUeXBlIHR5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgQk9PTCBlbmFibGVGbGFnKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldEltYWdlQXR0cmlidXRlc0NvbG9yS2V5cyhHcEltYWdlQXR0cmlidXRlcyAqaW1hZ2VhdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JBZGp1c3RUeXBlIHR5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGVuYWJsZUZsYWcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUkdCIGNvbG9yTG93LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJHQiBjb2xvckhpZ2gpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzT3V0cHV0Q2hhbm5lbChHcEltYWdlQXR0cmlidXRlcyAqaW1hZ2VhdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yQWRqdXN0VHlwZSB0eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJPT0wgZW5hYmxlRmxhZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvckNoYW5uZWxGbGFncyBjaGFubmVsRmxhZ3MpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzT3V0cHV0Q2hhbm5lbENvbG9yUHJvZmlsZShHcEltYWdlQXR0cmlidXRlcyAqaW1hZ2VhdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yQWRqdXN0VHlwZSB0eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJPT0wgZW5hYmxlRmxhZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgV0NIQVIgKmNvbG9yUHJvZmlsZUZpbGVuYW1lKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldEltYWdlQXR0cmlidXRlc1JlbWFwVGFibGUoR3BJbWFnZUF0dHJpYnV0ZXMgKmltYWdlYXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvckFkanVzdFR5cGUgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGVuYWJsZUZsYWcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBtYXBTaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBDb2xvck1hcCAqbWFwKTsNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldEltYWdlQXR0cmlidXRlc1dyYXBNb2RlKA0KKyAgICBHcEltYWdlQXR0cmlidXRlcyAqaW1hZ2VBdHRyLA0KKyAgICBXcmFwTW9kZSB3cmFwLA0KKyAgICBBUkdCIGFyZ2IsDQorICAgIEJPT0wgY2xhbXANCispOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzSUNNTW9kZSgNCisgICAgR3BJbWFnZUF0dHJpYnV0ZXMgKmltYWdlQXR0ciwNCisgICAgQk9PTCBvbg0KKyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRJbWFnZUF0dHJpYnV0ZXNBZGp1c3RlZFBhbGV0dGUoDQorICAgIEdwSW1hZ2VBdHRyaWJ1dGVzICppbWFnZUF0dHIsDQorICAgIENvbG9yUGFsZXR0ZSAqIGNvbG9yUGFsZXR0ZSwNCisgICAgQ29sb3JBZGp1c3RUeXBlIGNvbG9yQWRqdXN0VHlwZQ0KKyk7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gR3JhcGhpY3MgbWV0aG9kcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRmx1c2goR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwRmx1c2hJbnRlbnRpb24gaW50ZW50aW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUZyb21IREMoSERDIGhkYywgR3BHcmFwaGljcyAqKmdyYXBoaWNzKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUZyb21IREMyKEhEQyBoZGMsIEhBTkRMRSBoRGV2aWNlLCBHcEdyYXBoaWNzICoqZ3JhcGhpY3MpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlRnJvbUhXTkQoSFdORCBod25kLCBHcEdyYXBoaWNzICoqZ3JhcGhpY3MpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlRnJvbUhXTkRJQ00oSFdORCBod25kLCBHcEdyYXBoaWNzICoqZ3JhcGhpY3MpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRGVsZXRlR3JhcGhpY3MoR3BHcmFwaGljcyAqZ3JhcGhpY3MpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0REMoR3BHcmFwaGljcyogZ3JhcGhpY3MsIEhEQyAqIGhkYyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBSZWxlYXNlREMoR3BHcmFwaGljcyogZ3JhcGhpY3MsIEhEQyBoZGMpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0Q29tcG9zaXRpbmdNb2RlKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBDb21wb3NpdGluZ01vZGUgY29tcG9zaXRpbmdNb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldENvbXBvc2l0aW5nTW9kZShHcEdyYXBoaWNzICpncmFwaGljcywgQ29tcG9zaXRpbmdNb2RlICpjb21wb3NpdGluZ01vZGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0UmVuZGVyaW5nT3JpZ2luKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBJTlQgeCwgSU5UIHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UmVuZGVyaW5nT3JpZ2luKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBJTlQgKngsIElOVCAqeSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRDb21wb3NpdGluZ1F1YWxpdHkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIENvbXBvc2l0aW5nUXVhbGl0eSBjb21wb3NpdGluZ1F1YWxpdHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0Q29tcG9zaXRpbmdRdWFsaXR5KEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBDb21wb3NpdGluZ1F1YWxpdHkgKmNvbXBvc2l0aW5nUXVhbGl0eSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRTbW9vdGhpbmdNb2RlKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0U21vb3RoaW5nTW9kZShHcEdyYXBoaWNzICpncmFwaGljcywgU21vb3RoaW5nTW9kZSAqc21vb3RoaW5nTW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQaXhlbE9mZnNldE1vZGUoR3BHcmFwaGljcyogZ3JhcGhpY3MsIFBpeGVsT2Zmc2V0TW9kZSBwaXhlbE9mZnNldE1vZGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGl4ZWxPZmZzZXRNb2RlKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBQaXhlbE9mZnNldE1vZGUgKnBpeGVsT2Zmc2V0TW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRUZXh0UmVuZGVyaW5nSGludChHcEdyYXBoaWNzICpncmFwaGljcywgVGV4dFJlbmRlcmluZ0hpbnQgbW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRUZXh0UmVuZGVyaW5nSGludChHcEdyYXBoaWNzICpncmFwaGljcywgVGV4dFJlbmRlcmluZ0hpbnQgKm1vZGUpOw0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18xODg5MjINCitHcFN0YXR1cyAgV0lOR0RJUEFQSQ0KK0dkaXBTZXRUZXh0Q29udHJhc3QoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIFVJTlQgY29udHJhc3QpOw0KKw0KK0dwU3RhdHVzICBXSU5HRElQQVBJDQorR2RpcEdldFRleHRDb250cmFzdChHcEdyYXBoaWNzICpncmFwaGljcywgVUlOVCAqIGNvbnRyYXN0KTsNCisjZWxzZQ0KK0dwU3RhdHVzICBXSU5HRElQQVBJDQorR2RpcFNldFRleHRHYW1tYVZhbHVlKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBVSU5UIGdhbW1hVmFsdWUpOw0KKw0KK0dwU3RhdHVzICBXSU5HRElQQVBJDQorR2RpcEdldFRleHRHYW1tYVZhbHVlKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBVSU5UICogZ2FtbWFWYWx1ZSk7DQorI2VuZGlmIC8vIERDUl9VU0VfTkVXXzE4ODkyMg0KKw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0SW50ZXJwb2xhdGlvbk1vZGUoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEludGVycG9sYXRpb25Nb2RlIGludGVycG9sYXRpb25Nb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEludGVycG9sYXRpb25Nb2RlKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBJbnRlcnBvbGF0aW9uTW9kZSAqaW50ZXJwb2xhdGlvbk1vZGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0V29ybGRUcmFuc2Zvcm0oR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwTWF0cml4ICptYXRyaXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUmVzZXRXb3JsZFRyYW5zZm9ybShHcEdyYXBoaWNzICpncmFwaGljcyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBNdWx0aXBseVdvcmxkVHJhbnNmb3JtKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHRElQQ09OU1QgR3BNYXRyaXggKm1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcE1hdHJpeE9yZGVyIG9yZGVyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFRyYW5zbGF0ZVdvcmxkVHJhbnNmb3JtKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBSRUFMIGR4LCBSRUFMIGR5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcE1hdHJpeE9yZGVyIG9yZGVyKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNjYWxlV29ybGRUcmFuc2Zvcm0oR3BHcmFwaGljcyAqZ3JhcGhpY3MsIFJFQUwgc3gsIFJFQUwgc3ksDQorICAgICAgICAgICAgICAgICAgICAgICAgR3BNYXRyaXhPcmRlciBvcmRlcik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBSb3RhdGVXb3JsZFRyYW5zZm9ybShHcEdyYXBoaWNzICpncmFwaGljcywgUkVBTCBhbmdsZSwgR3BNYXRyaXhPcmRlciBvcmRlcik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRXb3JsZFRyYW5zZm9ybShHcEdyYXBoaWNzICpncmFwaGljcywgR3BNYXRyaXggKm1hdHJpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBSZXNldFBhZ2VUcmFuc2Zvcm0oR3BHcmFwaGljcyAqZ3JhcGhpY3MpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0UGFnZVVuaXQoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwVW5pdCAqdW5pdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRQYWdlU2NhbGUoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIFJFQUwgKnNjYWxlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFBhZ2VVbml0KEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFVuaXQgdW5pdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRQYWdlU2NhbGUoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIFJFQUwgc2NhbGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0RHBpWChHcEdyYXBoaWNzICpncmFwaGljcywgUkVBTCogZHBpKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldERwaVkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIFJFQUwqIGRwaSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBUcmFuc2Zvcm1Qb2ludHMoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQ29vcmRpbmF0ZVNwYWNlIGRlc3RTcGFjZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwQ29vcmRpbmF0ZVNwYWNlIHNyY1NwYWNlLCBHcFBvaW50RiAqcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFRyYW5zZm9ybVBvaW50c0koR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQ29vcmRpbmF0ZVNwYWNlIGRlc3RTcGFjZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwQ29vcmRpbmF0ZVNwYWNlIHNyY1NwYWNlLCBHcFBvaW50ICpwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0TmVhcmVzdENvbG9yKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBBUkdCKiBhcmdiKTsNCisNCisvLyBDcmVhdGUgdGhlIFdpbjl4IEhhbGZ0b25lIFBhbGV0dGUgKGV2ZW4gb24gTlQpIHdpdGggY29ycmVjdCBEZXNrdG9wIGNvbG9ycw0KK0hQQUxFVFRFIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlSGFsZnRvbmVQYWxldHRlKCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3TGluZShHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwgUkVBTCB4MSwgUkVBTCB5MSwNCisgICAgICAgICAgICAgICAgICAgICAgUkVBTCB4MiwgUkVBTCB5Mik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3TGluZUkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIElOVCB4MSwgSU5UIHkxLA0KKyAgICAgICAgICAgICAgICAgICAgICBJTlQgeDIsIElOVCB5Mik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3TGluZXMoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIEdESVBDT05TVCBHcFBvaW50RiAqcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdMaW5lc0koR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIEdESVBDT05TVCBHcFBvaW50ICpwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0FyYyhHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwgUkVBTCB4LCBSRUFMIHksDQorICAgICAgICAgICAgUkVBTCB3aWR0aCwgUkVBTCBoZWlnaHQsIFJFQUwgc3RhcnRBbmdsZSwgUkVBTCBzd2VlcEFuZ2xlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdBcmNJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFBlbiAqcGVuLCBJTlQgeCwgSU5UIHksDQorICAgICAgICAgICAgICAgICAgICAgSU5UIHdpZHRoLCBJTlQgaGVpZ2h0LCBSRUFMIHN0YXJ0QW5nbGUsIFJFQUwgc3dlZXBBbmdsZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3QmV6aWVyKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFBlbiAqcGVuLCBSRUFMIHgxLCBSRUFMIHkxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgeDIsIFJFQUwgeTIsIFJFQUwgeDMsIFJFQUwgeTMsIFJFQUwgeDQsIFJFQUwgeTQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0JlemllckkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIElOVCB4MSwgSU5UIHkxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIElOVCB4MiwgSU5UIHkyLCBJTlQgeDMsIElOVCB5MywgSU5UIHg0LCBJTlQgeTQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0JlemllcnMoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIEdESVBDT05TVCBHcFBvaW50RiAqcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0JlemllcnNJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFBlbiAqcGVuLCBHRElQQ09OU1QgR3BQb2ludCAqcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd1JlY3RhbmdsZShHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwgUkVBTCB4LCBSRUFMIHksDQorICAgICAgICAgICAgICAgICAgICAgIFJFQUwgd2lkdGgsIFJFQUwgaGVpZ2h0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdSZWN0YW5nbGVJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFBlbiAqcGVuLCBJTlQgeCwgSU5UIHksDQorICAgICAgICAgICAgICAgICAgICAgIElOVCB3aWR0aCwgSU5UIGhlaWdodCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3UmVjdGFuZ2xlcyhHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwgR0RJUENPTlNUIEdwUmVjdEYgKnJlY3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdSZWN0YW5nbGVzSShHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwgR0RJUENPTlNUIEdwUmVjdCAqcmVjdHMsDQorICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0VsbGlwc2UoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIFJFQUwgeCwgUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBSRUFMIHdpZHRoLCBSRUFMIGhlaWdodCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3RWxsaXBzZUkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIElOVCB4LCBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU5UIHdpZHRoLCBJTlQgaGVpZ2h0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdQaWUoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIFJFQUwgeCwgUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgICAgIFJFQUwgd2lkdGgsIFJFQUwgaGVpZ2h0LCBSRUFMIHN0YXJ0QW5nbGUsIFJFQUwgc3dlZXBBbmdsZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3UGllSShHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwgSU5UIHgsIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgICAgIElOVCB3aWR0aCwgSU5UIGhlaWdodCwgUkVBTCBzdGFydEFuZ2xlLCBSRUFMIHN3ZWVwQW5nbGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd1BvbHlnb24oR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIEdESVBDT05TVCBHcFBvaW50RiAqcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd1BvbHlnb25JKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFBlbiAqcGVuLCBHRElQQ09OU1QgR3BQb2ludCAqcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd1BhdGgoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIEdwUGF0aCAqcGF0aCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3Q3VydmUoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIEdESVBDT05TVCBHcFBvaW50RiAqcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdDdXJ2ZUkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIEdESVBDT05TVCBHcFBvaW50ICpwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0N1cnZlMihHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwgR0RJUENPTlNUIEdwUG9pbnRGICpwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICBJTlQgY291bnQsIFJFQUwgdGVuc2lvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3Q3VydmUySShHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwgR0RJUENPTlNUIEdwUG9pbnQgKnBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgIElOVCBjb3VudCwgUkVBTCB0ZW5zaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdDdXJ2ZTMoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIEdESVBDT05TVCBHcFBvaW50RiAqcG9pbnRzLA0KKyAgICAgICAgICAgICAgIElOVCBjb3VudCwgSU5UIG9mZnNldCwgSU5UIG51bWJlck9mU2VnbWVudHMsIFJFQUwgdGVuc2lvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3Q3VydmUzSShHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwgR0RJUENPTlNUIEdwUG9pbnQgKnBvaW50cywNCisgICAgICAgICAgICAgICAgSU5UIGNvdW50LCBJTlQgb2Zmc2V0LCBJTlQgbnVtYmVyT2ZTZWdtZW50cywgUkVBTCB0ZW5zaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdDbG9zZWRDdXJ2ZShHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwNCisgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFBvaW50RiAqcG9pbnRzLCBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0Nsb3NlZEN1cnZlSShHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwNCisgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludCAqcG9pbnRzLCBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0Nsb3NlZEN1cnZlMihHcEdyYXBoaWNzICpncmFwaGljcywgR3BQZW4gKnBlbiwNCisgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludEYgKnBvaW50cywgSU5UIGNvdW50LCBSRUFMIHRlbnNpb24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0Nsb3NlZEN1cnZlMkkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sDQorICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFBvaW50ICpwb2ludHMsIElOVCBjb3VudCwgUkVBTCB0ZW5zaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdyYXBoaWNzQ2xlYXIoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEFSR0IgY29sb3IpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRmlsbFJlY3RhbmdsZShHcEdyYXBoaWNzICpncmFwaGljcywgR3BCcnVzaCAqYnJ1c2gsIFJFQUwgeCwgUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgIFJFQUwgd2lkdGgsIFJFQUwgaGVpZ2h0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEZpbGxSZWN0YW5nbGVJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEJydXNoICpicnVzaCwgSU5UIHgsIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgICBJTlQgd2lkdGgsIElOVCBoZWlnaHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRmlsbFJlY3RhbmdsZXMoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQnJ1c2ggKmJydXNoLA0KKyAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BSZWN0RiAqcmVjdHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBGaWxsUmVjdGFuZ2xlc0koR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQnJ1c2ggKmJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEdwUmVjdCAqcmVjdHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBGaWxsUG9seWdvbihHcEdyYXBoaWNzICpncmFwaGljcywgR3BCcnVzaCAqYnJ1c2gsDQorICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFBvaW50RiAqcG9pbnRzLCBJTlQgY291bnQsIEdwRmlsbE1vZGUgZmlsbE1vZGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRmlsbFBvbHlnb25JKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEJydXNoICpicnVzaCwNCisgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFBvaW50ICpwb2ludHMsIElOVCBjb3VudCwgR3BGaWxsTW9kZSBmaWxsTW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBGaWxsUG9seWdvbjIoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQnJ1c2ggKmJydXNoLA0KKyAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEdwUG9pbnRGICpwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBGaWxsUG9seWdvbjJJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEJydXNoICpicnVzaCwNCisgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludCAqcG9pbnRzLCBJTlQgY291bnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRmlsbEVsbGlwc2UoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQnJ1c2ggKmJydXNoLCBSRUFMIHgsIFJFQUwgeSwNCisgICAgICAgICAgICAgICAgUkVBTCB3aWR0aCwgUkVBTCBoZWlnaHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRmlsbEVsbGlwc2VJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEJydXNoICpicnVzaCwgSU5UIHgsIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgSU5UIHdpZHRoLCBJTlQgaGVpZ2h0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEZpbGxQaWUoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQnJ1c2ggKmJydXNoLCBSRUFMIHgsIFJFQUwgeSwNCisgICAgICAgICAgICBSRUFMIHdpZHRoLCBSRUFMIGhlaWdodCwgUkVBTCBzdGFydEFuZ2xlLCBSRUFMIHN3ZWVwQW5nbGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRmlsbFBpZUkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQnJ1c2ggKmJydXNoLCBJTlQgeCwgSU5UIHksDQorICAgICAgICAgICAgIElOVCB3aWR0aCwgSU5UIGhlaWdodCwgUkVBTCBzdGFydEFuZ2xlLCBSRUFMIHN3ZWVwQW5nbGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRmlsbFBhdGgoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQnJ1c2ggKmJydXNoLCBHcFBhdGggKnBhdGgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRmlsbENsb3NlZEN1cnZlKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEJydXNoICpicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludEYgKnBvaW50cywgSU5UIGNvdW50KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEZpbGxDbG9zZWRDdXJ2ZUkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQnJ1c2ggKmJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFBvaW50ICpwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBGaWxsQ2xvc2VkQ3VydmUyKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEJydXNoICpicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludEYgKnBvaW50cywgSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgdGVuc2lvbiwgR3BGaWxsTW9kZSBmaWxsTW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBGaWxsQ2xvc2VkQ3VydmUySShHcEdyYXBoaWNzICpncmFwaGljcywgR3BCcnVzaCAqYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEdwUG9pbnQgKnBvaW50cywgSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgdGVuc2lvbiwgR3BGaWxsTW9kZSBmaWxsTW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBGaWxsUmVnaW9uKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEJydXNoICpicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICBHcFJlZ2lvbiAqcmVnaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdJbWFnZShHcEdyYXBoaWNzICpncmFwaGljcywgR3BJbWFnZSAqaW1hZ2UsIFJFQUwgeCwgUkVBTCB5KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdJbWFnZUkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwSW1hZ2UgKmltYWdlLCBJTlQgeCwgSU5UIHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0ltYWdlUmVjdChHcEdyYXBoaWNzICpncmFwaGljcywgR3BJbWFnZSAqaW1hZ2UsIFJFQUwgeCwgUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgd2lkdGgsIFJFQUwgaGVpZ2h0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdJbWFnZVJlY3RJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEltYWdlICppbWFnZSwgSU5UIHgsIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCB3aWR0aCwgSU5UIGhlaWdodCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3SW1hZ2VQb2ludHMoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwSW1hZ2UgKmltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEdwUG9pbnRGICpkc3Rwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3SW1hZ2VQb2ludHNJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEltYWdlICppbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFBvaW50ICpkc3Rwb2ludHMsIElOVCBjb3VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3SW1hZ2VQb2ludFJlY3QoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwSW1hZ2UgKmltYWdlLCBSRUFMIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFMIHksIFJFQUwgc3JjeCwgUkVBTCBzcmN5LCBSRUFMIHNyY3dpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBTCBzcmNoZWlnaHQsIEdwVW5pdCBzcmNVbml0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdJbWFnZVBvaW50UmVjdEkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwSW1hZ2UgKmltYWdlLCBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCB5LCBJTlQgc3JjeCwgSU5UIHNyY3ksIElOVCBzcmN3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVCBzcmNoZWlnaHQsIEdwVW5pdCBzcmNVbml0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERyYXdJbWFnZVJlY3RSZWN0KEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEltYWdlICppbWFnZSwgUkVBTCBkc3R4LA0KKyAgICAgICAgICAgICAgICAgICAgICBSRUFMIGRzdHksIFJFQUwgZHN0d2lkdGgsIFJFQUwgZHN0aGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICBSRUFMIHNyY3gsIFJFQUwgc3JjeSwgUkVBTCBzcmN3aWR0aCwgUkVBTCBzcmNoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgIEdwVW5pdCBzcmNVbml0LA0KKyAgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BJbWFnZUF0dHJpYnV0ZXMqIGltYWdlQXR0cmlidXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgRHJhd0ltYWdlQWJvcnQgY2FsbGJhY2ssIFZPSUQgKiBjYWxsYmFja0RhdGEpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0ltYWdlUmVjdFJlY3RJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEltYWdlICppbWFnZSwgSU5UIGRzdHgsDQorICAgICAgICAgICAgICAgICAgICAgICBJTlQgZHN0eSwgSU5UIGRzdHdpZHRoLCBJTlQgZHN0aGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU5UIHNyY3gsIElOVCBzcmN5LCBJTlQgc3Jjd2lkdGgsIElOVCBzcmNoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICBHcFVuaXQgc3JjVW5pdCwNCisgICAgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcEltYWdlQXR0cmlidXRlcyogaW1hZ2VBdHRyaWJ1dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgRHJhd0ltYWdlQWJvcnQgY2FsbGJhY2ssIFZPSUQgKiBjYWxsYmFja0RhdGEpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0ltYWdlUG9pbnRzUmVjdChHcEdyYXBoaWNzICpncmFwaGljcywgR3BJbWFnZSAqaW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEdwUG9pbnRGICpwb2ludHMsIElOVCBjb3VudCwgUkVBTCBzcmN4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgc3JjeSwgUkVBTCBzcmN3aWR0aCwgUkVBTCBzcmNoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgR3BVbml0IHNyY1VuaXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEdwSW1hZ2VBdHRyaWJ1dGVzKiBpbWFnZUF0dHJpYnV0ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0ltYWdlQWJvcnQgY2FsbGJhY2ssIFZPSUQgKiBjYWxsYmFja0RhdGEpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0ltYWdlUG9pbnRzUmVjdEkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwSW1hZ2UgKmltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBHRElQQ09OU1QgR3BQb2ludCAqcG9pbnRzLCBJTlQgY291bnQsIElOVCBzcmN4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgc3JjeSwgSU5UIHNyY3dpZHRoLCBJTlQgc3JjaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBHcFVuaXQgc3JjVW5pdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEdwSW1hZ2VBdHRyaWJ1dGVzKiBpbWFnZUF0dHJpYnV0ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdJbWFnZUFib3J0IGNhbGxiYWNrLCBWT0lEICogY2FsbGJhY2tEYXRhKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEVudW1lcmF0ZU1ldGFmaWxlRGVzdFBvaW50KA0KKyAgICBHcEdyYXBoaWNzICogICAgICAgICAgICBncmFwaGljcywNCisgICAgR0RJUENPTlNUIEdwTWV0YWZpbGUgKiAgbWV0YWZpbGUsDQorICAgIEdESVBDT05TVCBQb2ludEYgJiAgICAgIGRlc3RQb2ludCwNCisgICAgRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgR0RJUENPTlNUIEdwSW1hZ2VBdHRyaWJ1dGVzICogICAgIGltYWdlQXR0cmlidXRlcw0KKyAgICApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRW51bWVyYXRlTWV0YWZpbGVEZXN0UG9pbnRJKA0KKyAgICBHcEdyYXBoaWNzICogICAgICAgICAgICBncmFwaGljcywNCisgICAgR0RJUENPTlNUIEdwTWV0YWZpbGUgKiAgbWV0YWZpbGUsDQorICAgIEdESVBDT05TVCBQb2ludCAmICAgICAgIGRlc3RQb2ludCwNCisgICAgRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgR0RJUENPTlNUIEdwSW1hZ2VBdHRyaWJ1dGVzICogICAgIGltYWdlQXR0cmlidXRlcw0KKyAgICApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRW51bWVyYXRlTWV0YWZpbGVEZXN0UmVjdCgNCisgICAgR3BHcmFwaGljcyAqICAgICAgICAgICAgZ3JhcGhpY3MsDQorICAgIEdESVBDT05TVCBHcE1ldGFmaWxlICogIG1ldGFmaWxlLA0KKyAgICBHRElQQ09OU1QgUmVjdEYgJiAgICAgICBkZXN0UmVjdCwNCisgICAgRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgR0RJUENPTlNUIEdwSW1hZ2VBdHRyaWJ1dGVzICogICAgIGltYWdlQXR0cmlidXRlcw0KKyAgICApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRW51bWVyYXRlTWV0YWZpbGVEZXN0UmVjdEkoDQorICAgIEdwR3JhcGhpY3MgKiAgICAgICAgICAgIGdyYXBoaWNzLA0KKyAgICBHRElQQ09OU1QgR3BNZXRhZmlsZSAqICBtZXRhZmlsZSwNCisgICAgR0RJUENPTlNUIFJlY3QgJiAgICAgICAgZGVzdFJlY3QsDQorICAgIEVudW1lcmF0ZU1ldGFmaWxlUHJvYyAgIGNhbGxiYWNrLA0KKyAgICBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEsDQorICAgIEdESVBDT05TVCBHcEltYWdlQXR0cmlidXRlcyAqICAgICBpbWFnZUF0dHJpYnV0ZXMNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEVudW1lcmF0ZU1ldGFmaWxlRGVzdFBvaW50cygNCisgICAgR3BHcmFwaGljcyAqICAgICAgICAgICAgZ3JhcGhpY3MsDQorICAgIEdESVBDT05TVCBHcE1ldGFmaWxlICogIG1ldGFmaWxlLA0KKyAgICBHRElQQ09OU1QgUG9pbnRGICogICAgICBkZXN0UG9pbnRzLA0KKyAgICBJTlQgICAgICAgICAgICAgICAgICAgICBjb3VudCwNCisgICAgRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgR0RJUENPTlNUIEdwSW1hZ2VBdHRyaWJ1dGVzICogICAgIGltYWdlQXR0cmlidXRlcw0KKyAgICApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRW51bWVyYXRlTWV0YWZpbGVEZXN0UG9pbnRzSSgNCisgICAgR3BHcmFwaGljcyAqICAgICAgICAgICAgZ3JhcGhpY3MsDQorICAgIEdESVBDT05TVCBHcE1ldGFmaWxlICogIG1ldGFmaWxlLA0KKyAgICBHRElQQ09OU1QgUG9pbnQgKiAgICAgICBkZXN0UG9pbnRzLA0KKyAgICBJTlQgICAgICAgICAgICAgICAgICAgICBjb3VudCwNCisgICAgRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgR0RJUENPTlNUIEdwSW1hZ2VBdHRyaWJ1dGVzICogICAgIGltYWdlQXR0cmlidXRlcw0KKyAgICApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRW51bWVyYXRlTWV0YWZpbGVTcmNSZWN0RGVzdFBvaW50KA0KKyAgICBHcEdyYXBoaWNzICogICAgICAgICAgICBncmFwaGljcywNCisgICAgR0RJUENPTlNUIEdwTWV0YWZpbGUgKiAgbWV0YWZpbGUsDQorICAgIEdESVBDT05TVCBQb2ludEYgJiAgICAgIGRlc3RQb2ludCwNCisgICAgR0RJUENPTlNUIFJlY3RGICYgICAgICAgc3JjUmVjdCwNCisgICAgVW5pdCAgICAgICAgICAgICAgICAgICAgc3JjVW5pdCwNCisgICAgRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgR0RJUENPTlNUIEdwSW1hZ2VBdHRyaWJ1dGVzICogICAgIGltYWdlQXR0cmlidXRlcw0KKyAgICApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRW51bWVyYXRlTWV0YWZpbGVTcmNSZWN0RGVzdFBvaW50SSgNCisgICAgR3BHcmFwaGljcyAqICAgICAgICAgICAgZ3JhcGhpY3MsDQorICAgIEdESVBDT05TVCBHcE1ldGFmaWxlICogIG1ldGFmaWxlLA0KKyAgICBHRElQQ09OU1QgUG9pbnQgJiAgICAgICBkZXN0UG9pbnQsDQorICAgIEdESVBDT05TVCBSZWN0ICYgICAgICAgIHNyY1JlY3QsDQorICAgIFVuaXQgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgIEVudW1lcmF0ZU1ldGFmaWxlUHJvYyAgIGNhbGxiYWNrLA0KKyAgICBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEsDQorICAgIEdESVBDT05TVCBHcEltYWdlQXR0cmlidXRlcyAqICAgICBpbWFnZUF0dHJpYnV0ZXMNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEVudW1lcmF0ZU1ldGFmaWxlU3JjUmVjdERlc3RSZWN0KA0KKyAgICBHcEdyYXBoaWNzICogICAgICAgICAgICBncmFwaGljcywNCisgICAgR0RJUENPTlNUIEdwTWV0YWZpbGUgKiAgbWV0YWZpbGUsDQorICAgIEdESVBDT05TVCBSZWN0RiAmICAgICAgIGRlc3RSZWN0LA0KKyAgICBHRElQQ09OU1QgUmVjdEYgJiAgICAgICBzcmNSZWN0LA0KKyAgICBVbml0ICAgICAgICAgICAgICAgICAgICBzcmNVbml0LA0KKyAgICBFbnVtZXJhdGVNZXRhZmlsZVByb2MgICBjYWxsYmFjaywNCisgICAgVk9JRCAqICAgICAgICAgICAgICAgICAgY2FsbGJhY2tEYXRhLA0KKyAgICBHRElQQ09OU1QgR3BJbWFnZUF0dHJpYnV0ZXMgKiAgICAgaW1hZ2VBdHRyaWJ1dGVzDQorICAgICk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBFbnVtZXJhdGVNZXRhZmlsZVNyY1JlY3REZXN0UmVjdEkoDQorICAgIEdwR3JhcGhpY3MgKiAgICAgICAgICAgIGdyYXBoaWNzLA0KKyAgICBHRElQQ09OU1QgR3BNZXRhZmlsZSAqICBtZXRhZmlsZSwNCisgICAgR0RJUENPTlNUIFJlY3QgJiAgICAgICAgZGVzdFJlY3QsDQorICAgIEdESVBDT05TVCBSZWN0ICYgICAgICAgIHNyY1JlY3QsDQorICAgIFVuaXQgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgIEVudW1lcmF0ZU1ldGFmaWxlUHJvYyAgIGNhbGxiYWNrLA0KKyAgICBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEsDQorICAgIEdESVBDT05TVCBHcEltYWdlQXR0cmlidXRlcyAqICAgICBpbWFnZUF0dHJpYnV0ZXMNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEVudW1lcmF0ZU1ldGFmaWxlU3JjUmVjdERlc3RQb2ludHMoDQorICAgIEdwR3JhcGhpY3MgKiAgICAgICAgICAgIGdyYXBoaWNzLA0KKyAgICBHRElQQ09OU1QgR3BNZXRhZmlsZSAqICBtZXRhZmlsZSwNCisgICAgR0RJUENPTlNUIFBvaW50RiAqICAgICAgZGVzdFBvaW50cywNCisgICAgSU5UICAgICAgICAgICAgICAgICAgICAgY291bnQsDQorICAgIEdESVBDT05TVCBSZWN0RiAmICAgICAgIHNyY1JlY3QsDQorICAgIFVuaXQgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgIEVudW1lcmF0ZU1ldGFmaWxlUHJvYyAgIGNhbGxiYWNrLA0KKyAgICBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEsDQorICAgIEdESVBDT05TVCBHcEltYWdlQXR0cmlidXRlcyAqICAgICBpbWFnZUF0dHJpYnV0ZXMNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEVudW1lcmF0ZU1ldGFmaWxlU3JjUmVjdERlc3RQb2ludHNJKA0KKyAgICBHcEdyYXBoaWNzICogICAgICAgICAgICBncmFwaGljcywNCisgICAgR0RJUENPTlNUIEdwTWV0YWZpbGUgKiAgbWV0YWZpbGUsDQorICAgIEdESVBDT05TVCBQb2ludCAqICAgICAgIGRlc3RQb2ludHMsDQorICAgIElOVCAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICBHRElQQ09OU1QgUmVjdCAmICAgICAgICBzcmNSZWN0LA0KKyAgICBVbml0ICAgICAgICAgICAgICAgICAgICBzcmNVbml0LA0KKyAgICBFbnVtZXJhdGVNZXRhZmlsZVByb2MgICBjYWxsYmFjaywNCisgICAgVk9JRCAqICAgICAgICAgICAgICAgICAgY2FsbGJhY2tEYXRhLA0KKyAgICBHRElQQ09OU1QgR3BJbWFnZUF0dHJpYnV0ZXMgKiAgICAgaW1hZ2VBdHRyaWJ1dGVzDQorICAgICk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBQbGF5TWV0YWZpbGVSZWNvcmQoDQorICAgIEdESVBDT05TVCBHcE1ldGFmaWxlICogIG1ldGFmaWxlLA0KKyAgICBFbWZQbHVzUmVjb3JkVHlwZSAgICAgICByZWNvcmRUeXBlLA0KKyAgICBVSU5UICAgICAgICAgICAgICAgICAgICBmbGFncywNCisgICAgVUlOVCAgICAgICAgICAgICAgICAgICAgZGF0YVNpemUsDQorICAgIEdESVBDT05TVCBCWVRFICogICAgICAgIGRhdGENCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldENsaXBHcmFwaGljcyhHcEdyYXBoaWNzICpncmFwaGljcywgR3BHcmFwaGljcyAqc3JjZ3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICBDb21iaW5lTW9kZSBjb21iaW5lTW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRDbGlwUmVjdChHcEdyYXBoaWNzICpncmFwaGljcywgUkVBTCB4LCBSRUFMIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgd2lkdGgsIFJFQUwgaGVpZ2h0LCBDb21iaW5lTW9kZSBjb21iaW5lTW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRDbGlwUmVjdEkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIElOVCB4LCBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU5UIHdpZHRoLCBJTlQgaGVpZ2h0LCBDb21iaW5lTW9kZSBjb21iaW5lTW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRDbGlwUGF0aChHcEdyYXBoaWNzICpncmFwaGljcywgR3BQYXRoICpwYXRoLCBDb21iaW5lTW9kZSBjb21iaW5lTW9kZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRDbGlwUmVnaW9uKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFJlZ2lvbiAqcmVnaW9uLA0KKyAgICAgICAgICAgICAgICAgIENvbWJpbmVNb2RlIGNvbWJpbmVNb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldENsaXBIcmduKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBIUkdOIGhSZ24sIENvbWJpbmVNb2RlIGNvbWJpbmVNb2RlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJlc2V0Q2xpcChHcEdyYXBoaWNzICpncmFwaGljcyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBUcmFuc2xhdGVDbGlwKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBSRUFMIGR4LCBSRUFMIGR5KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFRyYW5zbGF0ZUNsaXBJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBJTlQgZHgsIElOVCBkeSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRDbGlwKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFJlZ2lvbiAqcmVnaW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldENsaXBCb3VuZHMoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUmVjdEYgKnJlY3QpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0Q2xpcEJvdW5kc0koR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUmVjdCAqcmVjdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBJc0NsaXBFbXB0eShHcEdyYXBoaWNzICpncmFwaGljcywgQk9PTCAqcmVzdWx0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFZpc2libGVDbGlwQm91bmRzKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFJlY3RGICpyZWN0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldFZpc2libGVDbGlwQm91bmRzSShHcEdyYXBoaWNzICpncmFwaGljcywgR3BSZWN0ICpyZWN0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcElzVmlzaWJsZUNsaXBFbXB0eShHcEdyYXBoaWNzICpncmFwaGljcywgQk9PTCAqcmVzdWx0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcElzVmlzaWJsZVBvaW50KEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBSRUFMIHgsIFJFQUwgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09MICpyZXN1bHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwSXNWaXNpYmxlUG9pbnRJKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBJTlQgeCwgSU5UIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgQk9PTCAqcmVzdWx0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcElzVmlzaWJsZVJlY3QoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIFJFQUwgeCwgUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQUwgd2lkdGgsIFJFQUwgaGVpZ2h0LCBCT09MICpyZXN1bHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwSXNWaXNpYmxlUmVjdEkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIElOVCB4LCBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlQgd2lkdGgsIElOVCBoZWlnaHQsIEJPT0wgKnJlc3VsdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTYXZlR3JhcGhpY3MoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdyYXBoaWNzU3RhdGUgKnN0YXRlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJlc3RvcmVHcmFwaGljcyhHcEdyYXBoaWNzICpncmFwaGljcywgR3JhcGhpY3NTdGF0ZSBzdGF0ZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBCZWdpbkNvbnRhaW5lcihHcEdyYXBoaWNzICpncmFwaGljcywgR0RJUENPTlNUIEdwUmVjdEYqIGRzdHJlY3QsDQorICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFJlY3RGICpzcmNyZWN0LCBHcFVuaXQgdW5pdCwgR3JhcGhpY3NDb250YWluZXIgKnN0YXRlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEJlZ2luQ29udGFpbmVySShHcEdyYXBoaWNzICpncmFwaGljcywgR0RJUENPTlNUIEdwUmVjdCogZHN0cmVjdCwNCisgICAgICAgICAgICAgICAgICAgIEdESVBDT05TVCBHcFJlY3QgKnNyY3JlY3QsIEdwVW5pdCB1bml0LCBHcmFwaGljc0NvbnRhaW5lciAqc3RhdGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQmVnaW5Db250YWluZXIyKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcmFwaGljc0NvbnRhaW5lciogc3RhdGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRW5kQ29udGFpbmVyKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcmFwaGljc0NvbnRhaW5lciBzdGF0ZSk7DQorDQorR3BTdGF0dXMNCitHZGlwR2V0TWV0YWZpbGVIZWFkZXJGcm9tV21mKA0KKyAgICBITUVUQUZJTEUgICAgICAgICAgIGhXbWYsDQorICAgIEdESVBDT05TVCBBUE1GaWxlSGVhZGVyICogICAgIGFwbUZpbGVIZWFkZXIsDQorICAgIE1ldGFmaWxlSGVhZGVyICogICAgaGVhZGVyDQorICAgICk7DQorDQorR3BTdGF0dXMNCitXSU5HRElQQVBJDQorR2RpcEdldE1ldGFmaWxlSGVhZGVyRnJvbUVtZigNCisgICAgSEVOSE1FVEFGSUxFICAgICAgICBoRW1mLA0KKyAgICBNZXRhZmlsZUhlYWRlciAqICAgIGhlYWRlcg0KKyAgICApOw0KKw0KK0dwU3RhdHVzDQorV0lOR0RJUEFQSQ0KK0dkaXBHZXRNZXRhZmlsZUhlYWRlckZyb21GaWxlKA0KKyAgICBHRElQQ09OU1QgV0NIQVIqICAgICAgICBmaWxlbmFtZSwNCisgICAgTWV0YWZpbGVIZWFkZXIgKiAgICBoZWFkZXINCisgICAgKTsNCisNCitHcFN0YXR1cw0KK1dJTkdESVBBUEkNCitHZGlwR2V0TWV0YWZpbGVIZWFkZXJGcm9tU3RyZWFtKA0KKyAgICBJU3RyZWFtICogICAgICAgICAgIHN0cmVhbSwNCisgICAgTWV0YWZpbGVIZWFkZXIgKiAgICBoZWFkZXINCisgICAgKTsNCisNCitHcFN0YXR1cw0KK1dJTkdESVBBUEkNCitHZGlwR2V0TWV0YWZpbGVIZWFkZXJGcm9tTWV0YWZpbGUoDQorICAgIEdwTWV0YWZpbGUgKiAgICAgICAgbWV0YWZpbGUsDQorICAgIE1ldGFmaWxlSGVhZGVyICogICAgaGVhZGVyDQorICAgICk7DQorDQorR3BTdGF0dXMNCitXSU5HRElQQVBJDQorR2RpcEdldEhlbWZGcm9tTWV0YWZpbGUoDQorICAgIEdwTWV0YWZpbGUgKiAgICAgICAgbWV0YWZpbGUsDQorICAgIEhFTkhNRVRBRklMRSAqICAgICAgaEVtZg0KKyAgICApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlU3RyZWFtT25GaWxlKEdESVBDT05TVCBXQ0hBUiAqIGZpbGVuYW1lLCBVSU5UIGFjY2VzcywgSVN0cmVhbSAqKnN0cmVhbSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVNZXRhZmlsZUZyb21XbWYoSE1FVEFGSUxFIGhXbWYsIEJPT0wgZGVsZXRlV21mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0RJUENPTlNUIEFQTUZpbGVIZWFkZXIgKiBhcG1GaWxlSGVhZGVyLCBHcE1ldGFmaWxlICoqbWV0YWZpbGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlTWV0YWZpbGVGcm9tRW1mKEhFTkhNRVRBRklMRSBoRW1mLCBCT09MIGRlbGV0ZUVtZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdwTWV0YWZpbGUgKiptZXRhZmlsZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVNZXRhZmlsZUZyb21GaWxlKEdESVBDT05TVCBXQ0hBUiogZmlsZSwgR3BNZXRhZmlsZSAqKm1ldGFmaWxlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZU1ldGFmaWxlRnJvbVdtZkZpbGUoR0RJUENPTlNUIFdDSEFSKiBmaWxlLCBHRElQQ09OU1QgQVBNRmlsZUhlYWRlciAqIGFwbUZpbGVIZWFkZXIsIEdwTWV0YWZpbGUgKiptZXRhZmlsZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVNZXRhZmlsZUZyb21TdHJlYW0oSVN0cmVhbSAqIHN0cmVhbSwgR3BNZXRhZmlsZSAqKm1ldGFmaWxlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJlY29yZE1ldGFmaWxlKA0KKyAgICBIREMgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhkYywNCisgICAgRW1mVHlwZSAgICAgICAgICAgICB0eXBlLA0KKyAgICBHRElQQ09OU1QgR3BSZWN0RiAqIGZyYW1lUmVjdCwNCisgICAgTWV0YWZpbGVGcmFtZVVuaXQgICBmcmFtZVVuaXQsDQorICAgIEdESVBDT05TVCBXQ0hBUiAqICAgZGVzY3JpcHRpb24sDQorICAgIEdwTWV0YWZpbGUgKiogICAgICAgbWV0YWZpbGUNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJlY29yZE1ldGFmaWxlSSgNCisgICAgSERDICAgICAgICAgICAgICAgICByZWZlcmVuY2VIZGMsDQorICAgIEVtZlR5cGUgICAgICAgICAgICAgdHlwZSwNCisgICAgR0RJUENPTlNUIEdwUmVjdCAqICBmcmFtZVJlY3QsDQorICAgIE1ldGFmaWxlRnJhbWVVbml0ICAgZnJhbWVVbml0LA0KKyAgICBHRElQQ09OU1QgV0NIQVIgKiAgIGRlc2NyaXB0aW9uLA0KKyAgICBHcE1ldGFmaWxlICoqICAgICAgIG1ldGFmaWxlDQorICAgICk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBSZWNvcmRNZXRhZmlsZUZpbGVOYW1lKA0KKyAgICBHRElQQ09OU1QgV0NIQVIqICAgIGZpbGVOYW1lLA0KKyAgICBIREMgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhkYywNCisgICAgRW1mVHlwZSAgICAgICAgICAgICB0eXBlLA0KKyAgICBHRElQQ09OU1QgR3BSZWN0RiAqIGZyYW1lUmVjdCwNCisgICAgTWV0YWZpbGVGcmFtZVVuaXQgICBmcmFtZVVuaXQsDQorICAgIEdESVBDT05TVCBXQ0hBUiAqICAgZGVzY3JpcHRpb24sDQorICAgIEdwTWV0YWZpbGUgKiogICAgICAgbWV0YWZpbGUNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJlY29yZE1ldGFmaWxlRmlsZU5hbWVJKA0KKyAgICBHRElQQ09OU1QgV0NIQVIqICAgIGZpbGVOYW1lLA0KKyAgICBIREMgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhkYywNCisgICAgRW1mVHlwZSAgICAgICAgICAgICB0eXBlLA0KKyAgICBHRElQQ09OU1QgR3BSZWN0ICogIGZyYW1lUmVjdCwNCisgICAgTWV0YWZpbGVGcmFtZVVuaXQgICBmcmFtZVVuaXQsDQorICAgIEdESVBDT05TVCBXQ0hBUiAqICAgZGVzY3JpcHRpb24sDQorICAgIEdwTWV0YWZpbGUgKiogICAgICAgbWV0YWZpbGUNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFJlY29yZE1ldGFmaWxlU3RyZWFtKA0KKyAgICBJU3RyZWFtICogICAgICAgICAgIHN0cmVhbSwNCisgICAgSERDICAgICAgICAgICAgICAgICByZWZlcmVuY2VIZGMsDQorICAgIEVtZlR5cGUgICAgICAgICAgICAgdHlwZSwNCisgICAgR0RJUENPTlNUIEdwUmVjdEYgKiBmcmFtZVJlY3QsDQorICAgIE1ldGFmaWxlRnJhbWVVbml0ICAgZnJhbWVVbml0LA0KKyAgICBHRElQQ09OU1QgV0NIQVIgKiAgIGRlc2NyaXB0aW9uLA0KKyAgICBHcE1ldGFmaWxlICoqICAgICAgIG1ldGFmaWxlDQorICAgICk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBSZWNvcmRNZXRhZmlsZVN0cmVhbUkoDQorICAgIElTdHJlYW0gKiAgICAgICAgICAgc3RyZWFtLA0KKyAgICBIREMgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhkYywNCisgICAgRW1mVHlwZSAgICAgICAgICAgICB0eXBlLA0KKyAgICBHRElQQ09OU1QgR3BSZWN0ICogIGZyYW1lUmVjdCwNCisgICAgTWV0YWZpbGVGcmFtZVVuaXQgICBmcmFtZVVuaXQsDQorICAgIEdESVBDT05TVCBXQ0hBUiAqICAgZGVzY3JpcHRpb24sDQorICAgIEdwTWV0YWZpbGUgKiogICAgICAgbWV0YWZpbGUNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldE1ldGFmaWxlRG93bkxldmVsUmFzdGVyaXphdGlvbkxpbWl0KA0KKyAgICBHcE1ldGFmaWxlICogICAgICAgICAgICBtZXRhZmlsZSwNCisgICAgVUlOVCAgICAgICAgICAgICAgICAgICAgbWV0YWZpbGVSYXN0ZXJpemF0aW9uTGltaXREcGkNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldE1ldGFmaWxlRG93bkxldmVsUmFzdGVyaXphdGlvbkxpbWl0KA0KKyAgICBHRElQQ09OU1QgR3BNZXRhZmlsZSAqICBtZXRhZmlsZSwNCisgICAgVUlOVCAqICAgICAgICAgICAgICAgICAgbWV0YWZpbGVSYXN0ZXJpemF0aW9uTGltaXREcGkNCisgICAgKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEltYWdlRGVjb2RlcnNTaXplKFVJTlQgKm51bURlY29kZXJzLCBVSU5UICpzaXplKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEltYWdlRGVjb2RlcnMoVUlOVCBudW1EZWNvZGVycywNCisgICAgICAgICAgICAgICAgICAgICBVSU5UIHNpemUsDQorICAgICAgICAgICAgICAgICAgICAgSW1hZ2VDb2RlY0luZm8gKmRlY29kZXJzKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEltYWdlRW5jb2RlcnNTaXplKFVJTlQgKm51bUVuY29kZXJzLCBVSU5UICpzaXplKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEltYWdlRW5jb2RlcnMoVUlOVCBudW1FbmNvZGVycywNCisgICAgICAgICAgICAgICAgICAgICBVSU5UIHNpemUsDQorICAgICAgICAgICAgICAgICAgICAgSW1hZ2VDb2RlY0luZm8gKmVuY29kZXJzKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEFkZEltYWdlQ29kZWMoR0RJUENPTlNUIEltYWdlQ29kZWNJbmZvICpjb2RlYyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBSZW1vdmVJbWFnZUNvZGVjKEdESVBDT05TVCBJbWFnZUNvZGVjSW5mbyAqY29kZWMpOw0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTg2MDkxDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRHcmFwaGljc1BpeGVsKEdwR3JhcGhpY3MqIGdyYXBoaWNzLCBSRUFMIHgsIFJFQUwgeSwgQVJHQiogYXJnYik7DQorI2VuZGlmDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDb21tZW50KEdwR3JhcGhpY3MqIGdyYXBoaWNzLCBVSU5UIHNpemVEYXRhLCBHRElQQ09OU1QgQllURSAqIGRhdGEpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0R3JhcGhpY3NMYXlvdXQoR3BHcmFwaGljcyogZ3JhcGhpY3MsIEdyYXBoaWNzTGF5b3V0KiBsYXlvdXQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0R3JhcGhpY3NMYXlvdXQoR3BHcmFwaGljcyogZ3JhcGhpY3MsIEdESVBDT05TVCBHcmFwaGljc0xheW91dCBsYXlvdXQpOw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEZvbnRGYW1pbHkNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUZvbnRGYW1pbHlGcm9tTmFtZShHRElQQ09OU1QgV0NIQVIgKm5hbWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcEZvbnRDb2xsZWN0aW9uICpmb250Q29sbGVjdGlvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdwRm9udEZhbWlseSAqKkZvbnRGYW1pbHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRGVsZXRlRm9udEZhbWlseShHcEZvbnRGYW1pbHkgKkZvbnRGYW1pbHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ2xvbmVGb250RmFtaWx5KEdwRm9udEZhbWlseSAqRm9udEZhbWlseSwgR3BGb250RmFtaWx5ICoqY2xvbmVkRm9udEZhbWlseSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRHZW5lcmljRm9udEZhbWlseVNhbnNTZXJpZihHcEZvbnRGYW1pbHkgKipuYXRpdmVGYW1pbHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0R2VuZXJpY0ZvbnRGYW1pbHlTZXJpZihHcEZvbnRGYW1pbHkgKipuYXRpdmVGYW1pbHkpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0R2VuZXJpY0ZvbnRGYW1pbHlNb25vc3BhY2UoR3BGb250RmFtaWx5ICoqbmF0aXZlRmFtaWx5KTsNCisNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEZhbWlseU5hbWUoDQorICAgIEdESVBDT05TVCBHcEZvbnRGYW1pbHkgICpmYW1pbHksDQorICAgIFdDSEFSICAgICAgICAgICAgICAgIG5hbWVbTEZfRkFDRVNJWkVdLA0KKyAgICBMQU5HSUQgICAgICAgICAgICAgICBsYW5ndWFnZQ0KKyk7DQorDQorR3BTdGF0dXMgICBXSU5HRElQQVBJDQorR2RpcElzU3R5bGVBdmFpbGFibGUoR0RJUENPTlNUIEdwRm9udEZhbWlseSAqZmFtaWx5LCBJTlQgc3R5bGUsIEJPT0wgKiBJc1N0eWxlQXZhaWxhYmxlKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEZvbnRDb2xsZWN0aW9uRW51bWVyYWJsZSgNCisgICAgR3BGb250Q29sbGVjdGlvbiogZm9udENvbGxlY3Rpb24sDQorICAgIEdwR3JhcGhpY3MqIGdyYXBoaWNzLA0KKyAgICBJTlQgKiAgICAgICBudW1Gb3VuZA0KKyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSSBHZGlwRm9udENvbGxlY3Rpb25FbnVtZXJhdGUoDQorICAgIEdwRm9udENvbGxlY3Rpb24qIGZvbnRDb2xsZWN0aW9uLA0KKyAgICBJTlQgICAgICAgICAgICAgbnVtU291Z2h0LA0KKyAgICBHcEZvbnRGYW1pbHkqICAgZ3BmYW1pbGllc1tdLA0KKyAgICBJTlQqICAgICAgICAgICAgbnVtRm91bmQsDQorICAgIEdwR3JhcGhpY3MqICAgICBncmFwaGljcw0KKyk7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIE5ldyBBUEkNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRFbUhlaWdodChHRElQQ09OU1QgR3BGb250RmFtaWx5ICpmYW1pbHksIElOVCBzdHlsZSwgVUlOVDE2ICogRW1IZWlnaHQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0Q2VsbEFzY2VudChHRElQQ09OU1QgR3BGb250RmFtaWx5ICpmYW1pbHksIElOVCBzdHlsZSwgVUlOVDE2ICogQ2VsbEFzY2VudCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRDZWxsRGVzY2VudChHRElQQ09OU1QgR3BGb250RmFtaWx5ICpmYW1pbHksIElOVCBzdHlsZSwgVUlOVDE2ICogQ2VsbERlc2NlbnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0TGluZVNwYWNpbmcoR0RJUENPTlNUIEdwRm9udEZhbWlseSAqZmFtaWx5LCBJTlQgc3R5bGUsIFVJTlQxNiAqIExpbmVTcGFjaW5nKTsNCisNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBGb250DQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVGb250RnJvbURDKA0KKyAgICBIREMgICAgICAgIGhkYywNCisgICAgR3BGb250ICAgKipmb250DQorKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcENyZWF0ZUZvbnRGcm9tTG9nZm9udEEoDQorICAgIEhEQyAgICAgICAgaGRjLA0KKyAgICBHRElQQ09OU1QgTE9HRk9OVEEgICpsb2dmb250LA0KKyAgICBHcEZvbnQgICAqKmZvbnQNCispOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlRm9udEZyb21Mb2dmb250VygNCisgICAgSERDICAgICAgICBoZGMsDQorICAgIEdESVBDT05TVCBMT0dGT05UVyAgKmxvZ2ZvbnQsDQorICAgIEdwRm9udCAgICoqZm9udA0KKyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDcmVhdGVGb250KA0KKyAgICBHRElQQ09OU1QgR3BGb250RmFtaWx5ICAqZm9udEZhbWlseSwNCisgICAgUkVBTCAgICAgICAgICAgICAgICAgZW1TaXplLA0KKyAgICBJTlQgICAgICAgICAgICAgICAgICBzdHlsZSwNCisgICAgVW5pdCAgICAgICAgICAgICAgICAgdW5pdCwNCisgICAgR3BGb250ICAgICAgICAgICAgICoqZm9udA0KKyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDbG9uZUZvbnQoR3BGb250KiBmb250LCBHcEZvbnQqKiBjbG9uZUZvbnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRGVsZXRlRm9udChHcEZvbnQqIGZvbnQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0RmFtaWx5KEdwRm9udCAqZm9udCwgR3BGb250RmFtaWx5ICoqZmFtaWx5KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEZvbnRTdHlsZShHcEZvbnQgKmZvbnQsIElOVCAqc3R5bGUpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0Rm9udFNpemUoR3BGb250ICpmb250LCBSRUFMICpzaXplKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEZvbnRVbml0KEdwRm9udCAqZm9udCwgVW5pdCAqdW5pdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRGb250SGVpZ2h0KEdESVBDT05TVCBHcEZvbnQgKmZvbnQsIEdESVBDT05TVCBHcEdyYXBoaWNzICpncmFwaGljcywgUkVBTCAqaGVpZ2h0KTsNCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMTI1NDY3DQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRGb250SGVpZ2h0R2l2ZW5EUEkoR0RJUENPTlNUIEdwRm9udCAqZm9udCwgUkVBTCBkcGksIFJFQUwgKmhlaWdodCk7DQorI2VuZGlmDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRMb2dGb250QShHcEZvbnQgKiBmb250LCBHcEdyYXBoaWNzICpncmFwaGljcywgTE9HRk9OVEEgKiBsb2dmb250QSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRMb2dGb250VyhHcEZvbnQgKiBmb250LCBHcEdyYXBoaWNzICpncmFwaGljcywgTE9HRk9OVFcgKiBsb2dmb250Vyk7DQorDQorLy8gRm9udENvbGxlY3Rpb24NCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcE5ld0luc3RhbGxlZEZvbnRDb2xsZWN0aW9uKEdwRm9udENvbGxlY3Rpb24qKiBmb250Q29sbGVjdGlvbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBOZXdQcml2YXRlRm9udENvbGxlY3Rpb24oR3BGb250Q29sbGVjdGlvbioqIGZvbnRDb2xsZWN0aW9uKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcERlbGV0ZVByaXZhdGVGb250Q29sbGVjdGlvbihHcEZvbnRDb2xsZWN0aW9uKiogZm9udENvbGxlY3Rpb24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0Rm9udENvbGxlY3Rpb25GYW1pbHlDb3VudCgNCisgICAgR3BGb250Q29sbGVjdGlvbiogZm9udENvbGxlY3Rpb24sDQorICAgIElOVCAqICAgICAgIG51bUZvdW5kDQorKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEdldEZvbnRDb2xsZWN0aW9uRmFtaWx5TGlzdCgNCisgICAgR3BGb250Q29sbGVjdGlvbiogZm9udENvbGxlY3Rpb24sDQorICAgIElOVCAgICAgICAgICAgICBudW1Tb3VnaHQsDQorICAgIEdwRm9udEZhbWlseSogICBncGZhbWlsaWVzW10sDQorICAgIElOVCogICAgICAgICAgICBudW1Gb3VuZA0KKyk7DQorDQorI2lmbmRlZiBEQ1JfVVNFX05FV18yMzUwNzINCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcEluc3RhbGxGb250RmlsZSgNCisgICAgR3BGb250Q29sbGVjdGlvbiogZm9udENvbGxlY3Rpb24sDQorICAgIEdESVBDT05TVCBXQ0hBUiogZmlsZW5hbWUNCispOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwVW5pbnN0YWxsRm9udEZpbGUoDQorICAgIEdwRm9udENvbGxlY3Rpb24qIGZvbnRDb2xsZWN0aW9uLA0KKyAgICBHRElQQ09OU1QgV0NIQVIqIGZpbGVuYW1lDQorKTsNCisjZW5kaWYNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFByaXZhdGVBZGRGb250RmlsZSgNCisgICAgR3BGb250Q29sbGVjdGlvbiogZm9udENvbGxlY3Rpb24sDQorICAgIEdESVBDT05TVCBXQ0hBUiogZmlsZW5hbWUNCispOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwUHJpdmF0ZUFkZE1lbW9yeUZvbnQoDQorICAgIEdwRm9udENvbGxlY3Rpb24qIGZvbnRDb2xsZWN0aW9uLA0KKyAgICBHRElQQ09OU1Qgdm9pZCogbWVtb3J5LA0KKyAgICBJTlQgbGVuZ3RoDQorKTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBUZXh0DQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3U3RyaW5nKA0KKyAgICBHcEdyYXBoaWNzICAgICAgICAgICAgICAgKmdyYXBoaWNzLA0KKyAgICBHRElQQ09OU1QgV0NIQVIgICAgICAgICAgKnN0cmluZywNCisgICAgSU5UICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgIEdESVBDT05TVCBHcEZvbnQgICAgICAgICAqZm9udCwNCisgICAgR0RJUENPTlNUIFJlY3RGICAgICAgICAgICpsYXlvdXRSZWN0LA0KKyAgICBHRElQQ09OU1QgR3BTdHJpbmdGb3JtYXQgKnN0cmluZ0Zvcm1hdCwNCisgICAgR0RJUENPTlNUIEdwQnJ1c2ggICAgICAgICpicnVzaA0KKyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBNZWFzdXJlU3RyaW5nKA0KKyAgICBHcEdyYXBoaWNzICAgICAgICAgICAgICAgKmdyYXBoaWNzLA0KKyAgICBHRElQQ09OU1QgV0NIQVIgICAgICAgICAgKnN0cmluZywNCisgICAgSU5UICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgIEdESVBDT05TVCBHcEZvbnQgICAgICAgICAqZm9udCwNCisgICAgR0RJUENPTlNUIFJlY3RGICAgICAgICAgICpsYXlvdXRSZWN0LA0KKyAgICBHRElQQ09OU1QgR3BTdHJpbmdGb3JtYXQgKnN0cmluZ0Zvcm1hdCwNCisgICAgUmVjdEYgICAgICAgICAgICAgICAgICAgICpib3VuZGluZ0JveCwNCisgICAgSU5UICAgICAgICAgICAgICAgICAgICAgICpjb2RlcG9pbnRzRml0dGVkLA0KKyAgICBJTlQgICAgICAgICAgICAgICAgICAgICAgKmxpbmVzRmlsbGVkDQorKTsNCisNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE3NDM0MA0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwTWVhc3VyZVN0cmluZ1JlZ2lvbigNCisgICAgR3BHcmFwaGljcyAgICAgICAgICAgICAgICpncmFwaGljcywNCisgICAgR0RJUENPTlNUIFdDSEFSICAgICAgICAgICpzdHJpbmcsDQorICAgIElOVCAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLA0KKyAgICBHRElQQ09OU1QgR3BGb250ICAgICAgICAgKmZvbnQsDQorICAgIEdESVBDT05TVCBSZWN0RiAgICAgICAgICAmbGF5b3V0UmVjdCwNCisgICAgR0RJUENPTlNUIEdwU3RyaW5nRm9ybWF0ICpzdHJpbmdGb3JtYXQsDQorICAgIElOVCAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RDaGFyYWN0ZXJJbmRleCwNCisgICAgSU5UICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJDb3VudCwNCisgICAgR3BSZWdpb24gICAgICAgICAgICAgICAgICpyZWdpb24NCispOw0KKyNlbmRpZg0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18xNzQzNDANCitHcFN0YXR1cw0KK1dJTkdESVBBUEkNCitHZGlwTWVhc3VyZUNoYXJhY3RlclJhbmdlcygNCisgICAgR3BHcmFwaGljcyAgICAgICAgICAgICAgICpncmFwaGljcywNCisgICAgR0RJUENPTlNUIFdDSEFSICAgICAgICAgICpzdHJpbmcsDQorICAgIElOVCAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLA0KKyAgICBHRElQQ09OU1QgR3BGb250ICAgICAgICAgKmZvbnQsDQorICAgIEdESVBDT05TVCBSZWN0RiAgICAgICAgICAmbGF5b3V0UmVjdCwNCisgICAgR0RJUENPTlNUIEdwU3RyaW5nRm9ybWF0ICpzdHJpbmdGb3JtYXQsDQorICAgIElOVCAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uQ291bnQsDQorICAgIEdwUmVnaW9uICAgICAgICAgICAgICAgICoqcmVnaW9ucw0KKyk7DQorI2VuZGlmDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEcmF3RHJpdmVyU3RyaW5nKA0KKyAgICBHcEdyYXBoaWNzICpncmFwaGljcywNCisgICAgR0RJUENPTlNUIFVJTlQxNiAqdGV4dCwNCisgICAgSU5UIGxlbmd0aCwNCisgICAgR0RJUENPTlNUIEdwRm9udCAqZm9udCwNCisgICAgR0RJUENPTlNUIEdwQnJ1c2ggKmJydXNoLA0KKyAgICBHRElQQ09OU1QgUG9pbnRGICpwb3NpdGlvbnMsDQorICAgIElOVCBmbGFncywNCisgICAgR0RJUENPTlNUIEdwTWF0cml4ICptYXRyaXgNCispOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwTWVhc3VyZURyaXZlclN0cmluZygNCisgICAgR3BHcmFwaGljcyAqZ3JhcGhpY3MsDQorICAgIEdESVBDT05TVCBVSU5UMTYgKnRleHQsDQorICAgIElOVCBsZW5ndGgsDQorICAgIEdESVBDT05TVCBHcEZvbnQgKmZvbnQsDQorICAgIEdESVBDT05TVCBQb2ludEYgKnBvc2l0aW9ucywNCisgICAgSU5UIGZsYWdzLA0KKyAgICBHRElQQ09OU1QgR3BNYXRyaXggKm1hdHJpeCwNCisgICAgUmVjdEYgKmJvdW5kaW5nQm94DQorKTsNCisNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE2ODc3Mg0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJpdmVyU3RyaW5nUG9pbnRUb0NvZGVwb2ludCgNCisgICAgR3BHcmFwaGljcyAqZ3JhcGhpY3MsDQorICAgIEdESVBDT05TVCBVSU5UMTYgKnRleHQsDQorICAgIElOVCBsZW5ndGgsDQorICAgIEdESVBDT05TVCBHcEZvbnQgKmZvbnQsDQorICAgIEdESVBDT05TVCBQb2ludEYgKnBvc2l0aW9ucywNCisgICAgSU5UIGZsYWdzLA0KKyAgICBHcE1hdHJpeCAqbWF0cml4LA0KKyAgICBHRElQQ09OU1QgUG9pbnRGICpoaXQsDQorICAgIElOVCAqaW5kZXgsDQorICAgIEJPT0wgKnJpZ2h0RWRnZSwNCisgICAgUkVBTCAqZGlzdGFuY2UNCispOw0KKyNlbmRpZg0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFN0cmluZyBmb3JtYXQgQVBJcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlU3RyaW5nRm9ybWF0KA0KKyAgICBJTlQgICAgICAgICAgICAgICBmb3JtYXRBdHRyaWJ1dGVzLA0KKyAgICBMQU5HSUQgICAgICAgICAgICBsYW5ndWFnZSwNCisgICAgR3BTdHJpbmdGb3JtYXQgICoqZm9ybWF0DQorKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFN0cmluZ0Zvcm1hdEdldEdlbmVyaWNEZWZhdWx0KEdwU3RyaW5nRm9ybWF0ICoqZm9ybWF0KTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFN0cmluZ0Zvcm1hdEdldEdlbmVyaWNUeXBvZ3JhcGhpYyhHcFN0cmluZ0Zvcm1hdCAqKmZvcm1hdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBEZWxldGVTdHJpbmdGb3JtYXQoR3BTdHJpbmdGb3JtYXQgKmZvcm1hdCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBDbG9uZVN0cmluZ0Zvcm1hdChHRElQQ09OU1QgR3BTdHJpbmdGb3JtYXQgKmZvcm1hdCwgR3BTdHJpbmdGb3JtYXQgKipuZXdGb3JtYXQpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0U3RyaW5nRm9ybWF0RmxhZ3MoR3BTdHJpbmdGb3JtYXQgKmZvcm1hdCwgSU5UIGZsYWdzKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJIEdkaXBHZXRTdHJpbmdGb3JtYXRGbGFncyhHRElQQ09OU1QgR3BTdHJpbmdGb3JtYXQgKmZvcm1hdCwgSU5UICpmbGFncyk7DQorDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xNTIxNTQNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFN0cmluZ0Zvcm1hdExpbmVTcGFjaW5nKEdwU3RyaW5nRm9ybWF0ICpmb3JtYXQsIFJFQUwgYW1vdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lU3BhY2luZyBtZXRob2QpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0U3RyaW5nRm9ybWF0TGluZVNwYWNpbmdBbW91bnQoR0RJUENPTlNUIEdwU3RyaW5nRm9ybWF0ICpmb3JtYXQsIFJFQUwgKmFtb3VudCk7DQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRTdHJpbmdGb3JtYXRMaW5lU3BhY2luZ01ldGhvZChHRElQQ09OU1QgR3BTdHJpbmdGb3JtYXQgKmZvcm1hdCwgTGluZVNwYWNpbmcgKm1ldGhvZCk7DQorI2VuZGlmDQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRTdHJpbmdGb3JtYXRBbGlnbihHcFN0cmluZ0Zvcm1hdCAqZm9ybWF0LCBTdHJpbmdBbGlnbm1lbnQgYWxpZ24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0U3RyaW5nRm9ybWF0QWxpZ24oR0RJUENPTlNUIEdwU3RyaW5nRm9ybWF0ICpmb3JtYXQsIFN0cmluZ0FsaWdubWVudCAqYWxpZ24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0U3RyaW5nRm9ybWF0TGluZUFsaWduKEdwU3RyaW5nRm9ybWF0ICpmb3JtYXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdBbGlnbm1lbnQgYWxpZ24pOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0U3RyaW5nRm9ybWF0TGluZUFsaWduKEdESVBDT05TVCBHcFN0cmluZ0Zvcm1hdCAqZm9ybWF0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQWxpZ25tZW50ICphbGlnbik7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRTdHJpbmdGb3JtYXRUcmltbWluZygNCisgICAgR3BTdHJpbmdGb3JtYXQgICpmb3JtYXQsDQorICAgIFN0cmluZ1RyaW1taW5nICAgdHJpbW1pbmcNCispOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0U3RyaW5nRm9ybWF0VHJpbW1pbmcoDQorICAgIEdESVBDT05TVCBHcFN0cmluZ0Zvcm1hdCAqZm9ybWF0LA0KKyAgICBTdHJpbmdUcmltbWluZyAgICAgICAqdHJpbW1pbmcNCispOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0U3RyaW5nRm9ybWF0SG90a2V5UHJlZml4KEdwU3RyaW5nRm9ybWF0ICpmb3JtYXQsIElOVCBob3RrZXlQcmVmaXgpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0U3RyaW5nRm9ybWF0SG90a2V5UHJlZml4KEdESVBDT05TVCBHcFN0cmluZ0Zvcm1hdCAqZm9ybWF0LCBJTlQgKmhvdGtleVByZWZpeCk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBTZXRTdHJpbmdGb3JtYXRUYWJTdG9wcyhHcFN0cmluZ0Zvcm1hdCAqZm9ybWF0LCBSRUFMIGZpcnN0VGFiT2Zmc2V0LCBJTlQgY291bnQsIEdESVBDT05TVCBSRUFMICp0YWJTdG9wcyk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRTdHJpbmdGb3JtYXRUYWJTdG9wcyhHRElQQ09OU1QgR3BTdHJpbmdGb3JtYXQgKmZvcm1hdCwgSU5UIGNvdW50LCBSRUFMICpmaXJzdFRhYk9mZnNldCwgUkVBTCAqdGFiU3RvcHMpOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0U3RyaW5nRm9ybWF0VGFiU3RvcENvdW50KEdESVBDT05TVCBHcFN0cmluZ0Zvcm1hdCAqZm9ybWF0LCBJTlQgKiBjb3VudCk7DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzE0NjkzMw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwU2V0U3RyaW5nRm9ybWF0RGlnaXRTdWJzdGl0dXRpb24oR3BTdHJpbmdGb3JtYXQgKmZvcm1hdCwgTEFOR0lEIGxhbmd1YWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdEaWdpdFN1YnN0aXR1dGUgc3Vic3RpdHV0ZSk7DQorDQorR3BTdGF0dXMgV0lOR0RJUEFQSQ0KK0dkaXBHZXRTdHJpbmdGb3JtYXREaWdpdFN1YnN0aXR1dGlvbihHRElQQ09OU1QgR3BTdHJpbmdGb3JtYXQgKmZvcm1hdCwgTEFOR0lEICpsYW5ndWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nRGlnaXRTdWJzdGl0dXRlICpzdWJzdGl0dXRlKTsNCisjZW5kaWYgLy8gRENSX1VTRV9ORVdfMTQ2OTMzDQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzE3NDM0MA0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwR2V0U3RyaW5nRm9ybWF0TWVhc3VyYWJsZUNoYXJhY3RlclJhbmdlQ291bnQoDQorICAgIEdESVBDT05TVCBHcFN0cmluZ0Zvcm1hdCAgICAqZm9ybWF0LA0KKyAgICBJTlQgICAgICAgICAgICAgICAgICAgICAgICAgKmNvdW50DQorKTsNCisNCitHcFN0YXR1cyBXSU5HRElQQVBJDQorR2RpcFNldFN0cmluZ0Zvcm1hdE1lYXN1cmFibGVDaGFyYWN0ZXJSYW5nZXMoDQorICAgIEdwU3RyaW5nRm9ybWF0ICAgICAgICAgICAgICAqZm9ybWF0LA0KKyAgICBJTlQgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VDb3VudCwNCisgICAgR0RJUENPTlNUIENoYXJhY3RlclJhbmdlICAgICpyYW5nZXMNCispOw0KKyNlbmRpZg0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENhY2hlZCBCaXRtYXAgQVBJcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwQ3JlYXRlQ2FjaGVkQml0bWFwKA0KKyAgICBHcEJpdG1hcCAqYml0bWFwLA0KKyAgICBHcEdyYXBoaWNzICpncmFwaGljcywNCisgICAgR3BDYWNoZWRCaXRtYXAgKipjYWNoZWRCaXRtYXANCispOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRGVsZXRlQ2FjaGVkQml0bWFwKEdwQ2FjaGVkQml0bWFwICpjYWNoZWRCaXRtYXApOw0KKw0KK0dwU3RhdHVzIFdJTkdESVBBUEkNCitHZGlwRHJhd0NhY2hlZEJpdG1hcCgNCisgICAgR3BHcmFwaGljcyAqZ3JhcGhpY3MsDQorICAgIEdwQ2FjaGVkQml0bWFwICpjYWNoZWRCaXRtYXAsDQorICAgIElOVCB4LA0KKyAgICBJTlQgeQ0KKyk7DQorDQorVUlOVCBXSU5HRElQQVBJDQorR2RpcEVtZlRvV21mQml0cygNCisgICAgSEVOSE1FVEFGSUxFIGhlbWYsDQorICAgIFVJTlQgICAgICAgICBjYkRhdGExNiwNCisgICAgTFBCWVRFICAgICAgIHBEYXRhMTYsDQorICAgIElOVCAgICAgICAgICBpTWFwTW9kZSwNCisgICAgSU5UICAgICAgICAgIGVGbGFncw0KKyk7DQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKw0KKyNlbmRpZiAvLyAhX0ZMQVRBUElfSA0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNGb250LmggYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzRm9udC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZmYwNTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzRm9udC5oCkBAIC0wLDAgKzEsMjk5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKg0KKyogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqDQorKiAgIEdkaXBsdXNGb250LmgNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIEZvbnQgcmVsYXRlZCBkZWNsYXJhdGlvbnMNCisqDQorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0dESVBMVVNGT05UX0gNCisjZGVmaW5lIF9HRElQTFVTRk9OVF9IDQorDQoraW5saW5lDQorRm9udDo6Rm9udChJTiBIREMgaGRjKQ0KK3sNCisgICAgR3BGb250ICpmb250ID0gTlVMTDsNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVGb250RnJvbURDKGhkYywgJmZvbnQpOw0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTM1NDI5DQorICAgIGlmICgoSU5UKSBsYXN0UmVzdWx0ID49IDEwKQ0KKyAgICAgICAgbGFzdFJlc3VsdCA9IE5vdEZvdW5kOw0KKyNlbmRpZg0KKw0KKyAgICBTZXROYXRpdmVGb250KGZvbnQpOw0KK30NCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMTI3MDg0DQoraW5saW5lDQorRm9udDo6Rm9udChJTiBIREMgaGRjLA0KKyAgICAgICAgICAgSU4gY29uc3QgSEZPTlQgaGZvbnQpDQorew0KKyAgICBHcEZvbnQgKmZvbnQgPSBOVUxMOw0KKw0KKyAgICBpZiAoaGZvbnQpDQorICAgIHsNCisgICAgICAgIExPR0ZPTlRBIGxmOw0KKw0KKyAgICAgICAgaWYoR2V0T2JqZWN0QShoZm9udCwgc2l6ZW9mKExPR0ZPTlRBKSwgJmxmKSkNCisgICAgICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUZvbnRGcm9tTG9nZm9udEEoaGRjLCAmbGYsICZmb250KTsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUZvbnRGcm9tREMoaGRjLCAmZm9udCk7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUZvbnRGcm9tREMoaGRjLCAmZm9udCk7DQorICAgIH0NCisNCisjaWZuZGVmIERDUl9VU0VfTkVXXzEzNTQyOQ0KKyAgICBpZiAoKElOVCkgbGFzdFJlc3VsdCA+PSAxMCkNCisgICAgICAgIGxhc3RSZXN1bHQgPSBOb3RGb3VuZDsNCisjZW5kaWYNCisNCisgICAgU2V0TmF0aXZlRm9udChmb250KTsNCit9DQorI2VuZGlmDQorDQoraW5saW5lDQorRm9udDo6Rm9udChJTiBIREMgaGRjLA0KKyAgICAgICAgICAgSU4gY29uc3QgTE9HRk9OVFcqIGxvZ2ZvbnQpDQorew0KKyAgICBHcEZvbnQgKmZvbnQgPSBOVUxMOw0KKyAgICBpZiAobG9nZm9udCkNCisgICAgew0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVGb250RnJvbUxvZ2ZvbnRXKGhkYywgbG9nZm9udCwgJmZvbnQpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVGb250RnJvbURDKGhkYywgJmZvbnQpOw0KKyAgICB9DQorDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xMzU0MjkNCisgICAgaWYgKChJTlQpIGxhc3RSZXN1bHQgPj0gMTApDQorICAgICAgICBsYXN0UmVzdWx0ID0gTm90Rm91bmQ7DQorI2VuZGlmDQorDQorICAgIFNldE5hdGl2ZUZvbnQoZm9udCk7DQorfQ0KKw0KK2lubGluZQ0KK0ZvbnQ6OkZvbnQoSU4gSERDIGhkYywNCisgICAgICAgICAgIElOIGNvbnN0IExPR0ZPTlRBKiBsb2dmb250KQ0KK3sNCisgICAgR3BGb250ICpmb250ID0gTlVMTDsNCisNCisgICAgaWYgKGxvZ2ZvbnQpDQorICAgIHsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlRm9udEZyb21Mb2dmb250QShoZGMsIGxvZ2ZvbnQsICZmb250KTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlRm9udEZyb21EQyhoZGMsICZmb250KTsNCisgICAgfQ0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTM1NDI5DQorICAgIGlmICgoSU5UKSBsYXN0UmVzdWx0ID49IDEwKQ0KKyAgICAgICAgbGFzdFJlc3VsdCA9IE5vdEZvdW5kOw0KKyNlbmRpZg0KKw0KKyAgICBTZXROYXRpdmVGb250KGZvbnQpOw0KK30NCisNCitpbmxpbmUNCitGb250OjpGb250KA0KKyAgICAgSU4gY29uc3QgRm9udEZhbWlseSAqIGZhbWlseSwNCisgICAgIElOIFJFQUwgICAgICAgICBlbVNpemUsDQorICAgICBJTiBJTlQgICAgICAgICAgc3R5bGUsDQorICAgICBJTiBVbml0ICAgICAgICAgdW5pdA0KKykNCit7DQorICAgIEdwRm9udCAqZm9udCA9IE5VTEw7DQorDQorICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlRm9udChmYW1pbHkgPyBmYW1pbHktPm5hdGl2ZUZhbWlseSA6IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICBlbVNpemUsDQorICAgICAgICAgICAgICAgICAgICBzdHlsZSwNCisgICAgICAgICAgICAgICAgICAgIHVuaXQsDQorICAgICAgICAgICAgICAgICAgICAmZm9udCk7DQorDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xMzU0MjkNCisgICAgaWYgKChJTlQpIGxhc3RSZXN1bHQgPj0gMTApDQorICAgICAgICBsYXN0UmVzdWx0ID0gTm90Rm91bmQ7DQorI2VuZGlmDQorDQorICAgIFNldE5hdGl2ZUZvbnQoZm9udCk7DQorfQ0KKw0KK2lubGluZQ0KK0ZvbnQ6OkZvbnQoDQorICAgICBJTiBjb25zdCBXQ0hBUiAqICAgICAgICAgIGZhbWlseU5hbWUsDQorICAgICBJTiBSRUFMICAgICAgICAgICAgICAgICAgIGVtU2l6ZSwNCisgICAgIElOIElOVCAgICAgICAgICAgICAgICAgICAgc3R5bGUsDQorICAgICBJTiBVbml0ICAgICAgICAgICAgICAgICAgIHVuaXQsDQorICAgICBJTiBjb25zdCBGb250Q29sbGVjdGlvbiAqIGZvbnRDb2xsZWN0aW9uDQorKQ0KK3sNCisgICAgRm9udEZhbWlseSBmYW1pbHkoZmFtaWx5TmFtZSwgZm9udENvbGxlY3Rpb24pOw0KKw0KKyAgICBHcEZvbnQgKiBmb250ID0gTlVMTDsNCisNCisgICAgbGFzdFJlc3VsdCA9IGZhbWlseS5HZXRMYXN0U3RhdHVzKCk7DQorDQorICAgIGlmIChsYXN0UmVzdWx0ID09IE9rKQ0KKyAgICB7DQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUZvbnQoZmFtaWx5Lm5hdGl2ZUZhbWlseSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtU2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250KTsNCisgICAgfQ0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTM1NDI5DQorICAgIGlmICgoSU5UKSBsYXN0UmVzdWx0ID49IDEwKQ0KKyAgICAgICAgbGFzdFJlc3VsdCA9IE5vdEZvdW5kOw0KKyNlbmRpZg0KKw0KKyAgICBTZXROYXRpdmVGb250KGZvbnQpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzDQorRm9udDo6R2V0TG9nRm9udEEoSU4gY29uc3QgR3JhcGhpY3MgKmcsDQorICAgICAgICAgICAgICAgICAgT1VUIExPR0ZPTlRBICpsb2dmb250QSkgY29uc3QNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldExvZ0ZvbnRBKG5hdGl2ZUZvbnQsIGcgPyBnLT5uYXRpdmVHcmFwaGljcyA6IE5VTEwsIGxvZ2ZvbnRBKSk7DQorDQorfQ0KKw0KK2lubGluZSBTdGF0dXMNCitGb250OjpHZXRMb2dGb250VyhJTiBjb25zdCBHcmFwaGljcyAqZywNCisgICAgICAgICAgICAgICAgICBPVVQgTE9HRk9OVFcgKmxvZ2ZvbnRXKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0TG9nRm9udFcobmF0aXZlRm9udCwgZyA/IGctPm5hdGl2ZUdyYXBoaWNzIDogTlVMTCwgbG9nZm9udFcpKTsNCit9DQorDQorDQoraW5saW5lIEZvbnQqDQorRm9udDo6Q2xvbmUoKSBjb25zdA0KK3sNCisgICAgR3BGb250ICpjbG9uZUZvbnQgPSBOVUxMOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENsb25lRm9udChuYXRpdmVGb250LCAmY2xvbmVGb250KSk7DQorDQorICAgIHJldHVybiBuZXcgRm9udChjbG9uZUZvbnQsIGxhc3RSZXN1bHQpOw0KK30NCisNCitpbmxpbmUNCitGb250Ojp+Rm9udCgpDQorew0KKyAgICBEbGxFeHBvcnRzOjpHZGlwRGVsZXRlRm9udChuYXRpdmVGb250KTsNCit9DQorDQorLy8gT3BlcmF0aW9ucw0KKw0KK2lubGluZSBCT09MDQorRm9udDo6SXNBdmFpbGFibGUoKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIChuYXRpdmVGb250ID8gVFJVRSA6IEZBTFNFKTsNCit9DQorDQoraW5saW5lIFN0YXR1cw0KK0ZvbnQ6OkdldEZhbWlseShPVVQgRm9udEZhbWlseSAqZmFtaWx5KSBjb25zdA0KK3sNCisgICAgaWYgKGZhbWlseSA9PSBOVUxMKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKEludmFsaWRQYXJhbWV0ZXIpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBzdGF0dXMgPSBEbGxFeHBvcnRzOjpHZGlwR2V0RmFtaWx5KG5hdGl2ZUZvbnQsICYoZmFtaWx5LT5uYXRpdmVGYW1pbHkpKTsNCisgICAgZmFtaWx5LT5TZXRTdGF0dXMoc3RhdHVzKTsNCisNCisgICAgcmV0dXJuIFNldFN0YXR1cyhzdGF0dXMpOw0KK30NCisNCitpbmxpbmUgSU5UDQorRm9udDo6R2V0U3R5bGUoKSBjb25zdA0KK3sNCisgICAgSU5UIHN0eWxlOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEZvbnRTdHlsZShuYXRpdmVGb250LCAmc3R5bGUpKTsNCisNCisgICAgcmV0dXJuIHN0eWxlOw0KK30NCisNCitpbmxpbmUgUkVBTA0KK0ZvbnQ6OkdldFNpemUoKSBjb25zdA0KK3sNCisgICAgUkVBTCBzaXplOw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEZvbnRTaXplKG5hdGl2ZUZvbnQsICZzaXplKSk7DQorICAgIHJldHVybiBzaXplOw0KK30NCisNCitpbmxpbmUgVW5pdA0KK0ZvbnQ6OkdldFVuaXQoKSBjb25zdA0KK3sNCisgICAgVW5pdCB1bml0Ow0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEZvbnRVbml0KG5hdGl2ZUZvbnQsICZ1bml0KSk7DQorICAgIHJldHVybiB1bml0Ow0KK30NCisNCitpbmxpbmUgUkVBTA0KK0ZvbnQ6OkdldEhlaWdodChJTiBjb25zdCBHcmFwaGljcyAqZ3JhcGhpY3MpIGNvbnN0DQorew0KKyAgICBSRUFMIGhlaWdodDsNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRGb250SGVpZ2h0KA0KKyAgICAgICAgbmF0aXZlRm9udCwNCisgICAgICAgIGdyYXBoaWNzID8gZ3JhcGhpY3MtPm5hdGl2ZUdyYXBoaWNzIDogTlVMTCwNCisgICAgICAgICZoZWlnaHQNCisgICAgKSk7DQorICAgIHJldHVybiBoZWlnaHQ7DQorfQ0KKw0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18xMjU0NjcNCitpbmxpbmUgUkVBTA0KK0ZvbnQ6OkdldEhlaWdodChJTiBSRUFMIGRwaSA9IDApIGNvbnN0DQorew0KKyAgICBSRUFMIGhlaWdodDsNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRGb250SGVpZ2h0R2l2ZW5EUEkobmF0aXZlRm9udCwgZHBpLCAmaGVpZ2h0KSk7DQorICAgIHJldHVybiBoZWlnaHQ7DQorfQ0KKyNlbmRpZg0KKw0KKw0KKy8vIHByb3RlY3RlZCBtZXRob2QNCitpbmxpbmUNCitGb250OjpGb250KElOIEdwRm9udCogZm9udCwNCisgICAgICAgICAgIElOIFN0YXR1cyBzdGF0dXMpDQorew0KKyAgICBsYXN0UmVzdWx0ID0gc3RhdHVzOw0KKyAgICBTZXROYXRpdmVGb250KGZvbnQpOw0KK30NCisNCisvLyBwcm90ZWN0ZWQgbWV0aG9kDQoraW5saW5lIFZPSUQNCitGb250OjpTZXROYXRpdmVGb250KEdwRm9udCAqRm9udCkNCit7DQorICAgIG5hdGl2ZUZvbnQgPSBGb250Ow0KK30NCisNCitpbmxpbmUgU3RhdHVzDQorRm9udDo6R2V0TGFzdFN0YXR1cyh2b2lkKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIGxhc3RSZXN1bHQ7DQorfQ0KKw0KKy8vIHByb3RlY3RlZCBtZXRob2QNCitpbmxpbmUgU3RhdHVzDQorRm9udDo6U2V0U3RhdHVzKElOIFN0YXR1cyBzdGF0dXMpIGNvbnN0DQorew0KKyAgICBpZiAoc3RhdHVzICE9IE9rKQ0KKyAgICAgICAgcmV0dXJuIChsYXN0UmVzdWx0ID0gc3RhdHVzKTsNCisgICAgZWxzZQ0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsNCit9DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0ZvbnRDb2xsZWN0aW9uLmggYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzRm9udENvbGxlY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjI1N2JhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0ZvbnRDb2xsZWN0aW9uLmgKQEAgLTAsMCArMSwxNDkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqDQorKiBDb3B5cmlnaHQgKGMpIDIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqIA0KKyogICBHZGlwbHVzRm9udENvbGxlY3Rpb24uaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgRm9udCBjb2xsZWN0aW9ucyAoSW5zdGFsbGVkIGFuZCBQcml2YXRlKQ0KKyoNCitcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfR0RJUExVU0ZPTlRDT0xMX0gNCisjZGVmaW5lIF9HRElQTFVTRk9OVENPTExfSA0KKw0KK2lubGluZQ0KK0ZvbnRDb2xsZWN0aW9uOjpGb250Q29sbGVjdGlvbigpDQorew0KKyAgICBuYXRpdmVGb250Q29sbGVjdGlvbiA9IE5VTEw7DQorfQ0KKw0KK2lubGluZQ0KK0ZvbnRDb2xsZWN0aW9uOjp+Rm9udENvbGxlY3Rpb24oKQ0KK3sNCit9DQorDQoraW5saW5lIElOVA0KK0ZvbnRDb2xsZWN0aW9uOjpHZXRGYW1pbHlDb3VudCgpIGNvbnN0DQorew0KKyAgICBJTlQgbnVtRm91bmQgPSAwOw0KKw0KKyAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcEdldEZvbnRDb2xsZWN0aW9uRmFtaWx5Q291bnQoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVGb250Q29sbGVjdGlvbiwgJm51bUZvdW5kKTsNCisNCisNCisNCisgICAgcmV0dXJuIG51bUZvdW5kOw0KK30NCisNCitpbmxpbmUgU3RhdHVzDQorRm9udENvbGxlY3Rpb246OkdldEZhbWlsaWVzKA0KKyAgICBJTiBJTlQgICAgICAgICAgIG51bVNvdWdodCwNCisgICAgT1VUIEZvbnRGYW1pbHkgKiBncGZhbWlsaWVzLA0KKyAgICBPVVQgSU5UICogICAgICAgIG51bUZvdW5kDQorKSBjb25zdA0KK3sNCisgICAgaWYgKG51bVNvdWdodCA8PSAwIHx8IGdwZmFtaWxpZXMgPT0gTlVMTCB8fCBudW1Gb3VuZCA9PSBOVUxMKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKEludmFsaWRQYXJhbWV0ZXIpOw0KKyAgICB9DQorICAgICpudW1Gb3VuZCA9IDA7DQorICAgIEdwRm9udEZhbWlseSAqKm5hdGl2ZUZhbWlseUxpc3QgPSBuZXcgR3BGb250RmFtaWx5KltudW1Tb3VnaHRdOw0KKw0KKyAgICBpZiAobmF0aXZlRmFtaWx5TGlzdCA9PSBOVUxMKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKE91dE9mTWVtb3J5KTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgc3RhdHVzID0gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRGb250Q29sbGVjdGlvbkZhbWlseUxpc3QoDQorICAgICAgICBuYXRpdmVGb250Q29sbGVjdGlvbiwNCisgICAgICAgIG51bVNvdWdodCwNCisgICAgICAgIG5hdGl2ZUZhbWlseUxpc3QsDQorICAgICAgICBudW1Gb3VuZA0KKyAgICApKTsNCisgICAgaWYgKHN0YXR1cyA9PSBPaykNCisgICAgew0KKyAgICAgICAgZm9yIChJTlQgaSA9IDA7IGkgPCAqbnVtRm91bmQ7IGkrKykNCisgICAgICAgIHsNCisgICAgICAgICAgICBEbGxFeHBvcnRzOjpHZGlwQ2xvbmVGb250RmFtaWx5KG5hdGl2ZUZhbWlseUxpc3RbaV0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ3BmYW1pbGllc1tpXS5uYXRpdmVGYW1pbHkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIGRlbGV0ZSBbXSBuYXRpdmVGYW1pbHlMaXN0Ow0KKw0KKyAgICByZXR1cm4gc3RhdHVzOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIEZvbnRDb2xsZWN0aW9uOjpHZXRMYXN0U3RhdHVzICgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gbGFzdFJlc3VsdDsNCit9DQorDQorLy8gcHJvdGVjdGVkIG1ldGhvZA0KK2lubGluZSBTdGF0dXMNCitGb250Q29sbGVjdGlvbjo6U2V0U3RhdHVzKElOIFN0YXR1cyBzdGF0dXMpIGNvbnN0DQorew0KKyAgICBsYXN0UmVzdWx0ID0gc3RhdHVzOw0KKyAgICByZXR1cm4gbGFzdFJlc3VsdDsNCit9DQorDQoraW5saW5lDQorSW5zdGFsbGVkRm9udENvbGxlY3Rpb246Okluc3RhbGxlZEZvbnRDb2xsZWN0aW9uKCkNCit7DQorICAgIG5hdGl2ZUZvbnRDb2xsZWN0aW9uID0gTlVMTDsNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBOZXdJbnN0YWxsZWRGb250Q29sbGVjdGlvbigmbmF0aXZlRm9udENvbGxlY3Rpb24pOw0KK30NCisNCitpbmxpbmUNCitJbnN0YWxsZWRGb250Q29sbGVjdGlvbjo6fkluc3RhbGxlZEZvbnRDb2xsZWN0aW9uKCkNCit7DQorfQ0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMjM1MDcyDQoraW5saW5lIFN0YXR1cw0KK0luc3RhbGxlZEZvbnRDb2xsZWN0aW9uOjpJbnN0YWxsRm9udEZpbGUoSU4gY29uc3QgV0NIQVIqIGZpbGVuYW1lKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwSW5zdGFsbEZvbnRGaWxlKG5hdGl2ZUZvbnRDb2xsZWN0aW9uLCBmaWxlbmFtZSkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzDQorSW5zdGFsbGVkRm9udENvbGxlY3Rpb246OlVuaW5zdGFsbEZvbnRGaWxlKElOIGNvbnN0IFdDSEFSKiBmaWxlbmFtZSkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFVuaW5zdGFsbEZvbnRGaWxlKG5hdGl2ZUZvbnRDb2xsZWN0aW9uLCBmaWxlbmFtZSkpOw0KK30NCisjZW5kaWYNCisNCitpbmxpbmUNCitQcml2YXRlRm9udENvbGxlY3Rpb246OlByaXZhdGVGb250Q29sbGVjdGlvbigpDQorew0KKyAgICBuYXRpdmVGb250Q29sbGVjdGlvbiA9IE5VTEw7DQorICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwTmV3UHJpdmF0ZUZvbnRDb2xsZWN0aW9uKCZuYXRpdmVGb250Q29sbGVjdGlvbik7DQorfQ0KKw0KK2lubGluZQ0KK1ByaXZhdGVGb250Q29sbGVjdGlvbjo6flByaXZhdGVGb250Q29sbGVjdGlvbigpDQorew0KKyAgICBEbGxFeHBvcnRzOjpHZGlwRGVsZXRlUHJpdmF0ZUZvbnRDb2xsZWN0aW9uKCZuYXRpdmVGb250Q29sbGVjdGlvbik7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMNCitQcml2YXRlRm9udENvbGxlY3Rpb246OkFkZEZvbnRGaWxlKElOIGNvbnN0IFdDSEFSKiBmaWxlbmFtZSkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFByaXZhdGVBZGRGb250RmlsZShuYXRpdmVGb250Q29sbGVjdGlvbiwgZmlsZW5hbWUpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cw0KK1ByaXZhdGVGb250Q29sbGVjdGlvbjo6QWRkTWVtb3J5Rm9udChJTiBjb25zdCB2b2lkKiBtZW1vcnksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBsZW5ndGgpDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBQcml2YXRlQWRkTWVtb3J5Rm9udCgNCisgICAgICAgIG5hdGl2ZUZvbnRDb2xsZWN0aW9uLA0KKyAgICAgICAgbWVtb3J5LA0KKyAgICAgICAgbGVuZ3RoKSk7DQorfQ0KKw0KKyNlbmRpZiAvLyBfR0RJUExVU0ZPTlRDT0xMX0gNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzRm9udEZhbWlseS5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0ZvbnRGYW1pbHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjJmM2RkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0ZvbnRGYW1pbHkuaApAQCAtMCwwICsxLDI3MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXA0KKyoNCisqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLCBNaWNyb3NvZnQgQ29ycC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzRm9udEZhbWlseS5oDQorKg0KKyogQWJzdHJhY3Q6DQorKg0KKyogICBGb250IGZhbWlseSBBUEkgcmVsYXRlZCBkZWNsYXJhdGlvbnMNCisqDQorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0dESVBMVVNfRk9OVF9GQU1JTFlfSA0KKyNkZWZpbmUgX0dESVBMVVNfRk9OVF9GQU1JTFlfSA0KKw0KK2lubGluZSANCitGb250RmFtaWx5OjpGb250RmFtaWx5KCkgOg0KKyAgICBuYXRpdmVGYW1pbHkgKE5VTEwpLA0KKyAgICBsYXN0UmVzdWx0ICAgIChPaykNCit7DQorfQ0KKw0KK2lubGluZSANCitGb250RmFtaWx5OjpGb250RmFtaWx5KA0KKyAgICBJTiBjb25zdCBXQ0hBUiogICAgICAgICAgbmFtZSwNCisgICAgSU4gY29uc3QgRm9udENvbGxlY3Rpb24qIGZvbnRDb2xsZWN0aW9uDQorKQ0KK3sNCisgICAgbmF0aXZlRmFtaWx5ID0gTlVMTDsNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVGb250RmFtaWx5RnJvbU5hbWUoDQorICAgICAgICBuYW1lLA0KKyAgICAgICAgZm9udENvbGxlY3Rpb24gPyBmb250Q29sbGVjdGlvbi0+bmF0aXZlRm9udENvbGxlY3Rpb24gOiBOVUxMLA0KKyAgICAgICAgJm5hdGl2ZUZhbWlseQ0KKyAgICApOw0KKyAgICANCisjaWZuZGVmIERDUl9VU0VfTkVXXzEzNTQyOQ0KKyAgICBpZiAoKElOVCkgbGFzdFJlc3VsdCA+PSAxMCkNCisgICAgICAgIGxhc3RSZXN1bHQgPSBOb3RGb3VuZDsNCisjZW5kaWYNCit9DQorDQorLy8gcHJpdmF0ZSBtZXRob2QNCitpbmxpbmUNCitGb250RmFtaWx5OjpGb250RmFtaWx5KA0KKyAgICBJTiBHcEZvbnRGYW1pbHkgKm5hdGl2ZU9yaWcsDQorICAgIElOIFN0YXR1cyBzdGF0dXMNCispDQorew0KKyAgICBsYXN0UmVzdWx0ICAgID0gc3RhdHVzOw0KKyAgICBuYXRpdmVGYW1pbHkgPSBuYXRpdmVPcmlnOw0KK30NCisNCisvLyBHZW5lcmljIGZvbnQgZmFtaWx5IGFjY2Vzcw0KKw0KK2lubGluZSBjb25zdCBGb250RmFtaWx5ICoNCitGb250RmFtaWx5OjpHZW5lcmljU2Fuc1NlcmlmKCkgDQorew0KKyAgICBpZiAoR2VuZXJpY1NhbnNTZXJpZkZvbnRGYW1pbHkgIT0gTlVMTCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEdlbmVyaWNTYW5zU2VyaWZGb250RmFtaWx5Ow0KKyAgICB9DQorDQorICAgIEdlbmVyaWNTYW5zU2VyaWZGb250RmFtaWx5ID0NCisgICAgICAgIChGb250RmFtaWx5KikgR2VuZXJpY1NhbnNTZXJpZkZvbnRGYW1pbHlCdWZmZXI7DQorDQorICAgIEdlbmVyaWNTYW5zU2VyaWZGb250RmFtaWx5LT5sYXN0UmVzdWx0ID0NCisgICAgICAgIERsbEV4cG9ydHM6OkdkaXBHZXRHZW5lcmljRm9udEZhbWlseVNhbnNTZXJpZigNCisgICAgICAgICAgICAmKEdlbmVyaWNTYW5zU2VyaWZGb250RmFtaWx5LT5uYXRpdmVGYW1pbHkpDQorICAgICAgICApOw0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTM1NDI5DQorICAgIGlmICgoSU5UKSBHZW5lcmljU2Fuc1NlcmlmRm9udEZhbWlseS0+bGFzdFJlc3VsdCA+PSAxMCkNCisgICAgICAgIEdlbmVyaWNTYW5zU2VyaWZGb250RmFtaWx5LT5sYXN0UmVzdWx0ID0gTm90Rm91bmQ7DQorI2VuZGlmDQorDQorICAgIHJldHVybiBHZW5lcmljU2Fuc1NlcmlmRm9udEZhbWlseTsNCit9DQorDQoraW5saW5lIGNvbnN0IEZvbnRGYW1pbHkgKg0KK0ZvbnRGYW1pbHk6OkdlbmVyaWNTZXJpZigpIA0KK3sNCisgICAgaWYgKEdlbmVyaWNTZXJpZkZvbnRGYW1pbHkgIT0gTlVMTCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEdlbmVyaWNTZXJpZkZvbnRGYW1pbHk7DQorICAgIH0NCisNCisgICAgR2VuZXJpY1NlcmlmRm9udEZhbWlseSA9DQorICAgICAgICAoRm9udEZhbWlseSopIEdlbmVyaWNTZXJpZkZvbnRGYW1pbHlCdWZmZXI7DQorDQorICAgIEdlbmVyaWNTZXJpZkZvbnRGYW1pbHktPmxhc3RSZXN1bHQgPQ0KKyAgICAgICAgRGxsRXhwb3J0czo6R2RpcEdldEdlbmVyaWNGb250RmFtaWx5U2VyaWYoDQorICAgICAgICAgICAgJihHZW5lcmljU2VyaWZGb250RmFtaWx5LT5uYXRpdmVGYW1pbHkpDQorICAgICAgICApOw0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTM1NDI5DQorICAgIGlmICgoSU5UKSBHZW5lcmljU2VyaWZGb250RmFtaWx5LT5sYXN0UmVzdWx0ID49IDEwKQ0KKyAgICAgICAgR2VuZXJpY1NlcmlmRm9udEZhbWlseS0+bGFzdFJlc3VsdCA9IE5vdEZvdW5kOw0KKyNlbmRpZg0KKw0KKyAgICByZXR1cm4gR2VuZXJpY1NlcmlmRm9udEZhbWlseTsNCit9DQorDQoraW5saW5lIGNvbnN0IEZvbnRGYW1pbHkgKg0KK0ZvbnRGYW1pbHk6OkdlbmVyaWNNb25vc3BhY2UoKQ0KK3sNCisgICAgaWYgKEdlbmVyaWNNb25vc3BhY2VGb250RmFtaWx5ICE9IE5VTEwpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZW5lcmljTW9ub3NwYWNlRm9udEZhbWlseTsNCisgICAgfQ0KKw0KKyAgICBHZW5lcmljTW9ub3NwYWNlRm9udEZhbWlseSA9DQorICAgICAgICAoRm9udEZhbWlseSopIEdlbmVyaWNNb25vc3BhY2VGb250RmFtaWx5QnVmZmVyOw0KKw0KKyAgICBHZW5lcmljTW9ub3NwYWNlRm9udEZhbWlseS0+bGFzdFJlc3VsdCA9DQorICAgICAgICBEbGxFeHBvcnRzOjpHZGlwR2V0R2VuZXJpY0ZvbnRGYW1pbHlNb25vc3BhY2UoDQorICAgICAgICAgICAgJihHZW5lcmljTW9ub3NwYWNlRm9udEZhbWlseS0+bmF0aXZlRmFtaWx5KQ0KKyAgICAgICAgKTsNCisNCisjaWZuZGVmIERDUl9VU0VfTkVXXzEzNTQyOQ0KKyAgICBpZiAoKElOVCkgR2VuZXJpY01vbm9zcGFjZUZvbnRGYW1pbHktPmxhc3RSZXN1bHQgPj0gMTApDQorICAgICAgICBHZW5lcmljTW9ub3NwYWNlRm9udEZhbWlseS0+bGFzdFJlc3VsdCA9IE5vdEZvdW5kOw0KKyNlbmRpZg0KKw0KKyAgICByZXR1cm4gR2VuZXJpY01vbm9zcGFjZUZvbnRGYW1pbHk7DQorfQ0KKw0KK2lubGluZSBGb250RmFtaWx5Ojp+Rm9udEZhbWlseSgpDQorew0KKyAgICBEbGxFeHBvcnRzOjpHZGlwRGVsZXRlRm9udEZhbWlseSAobmF0aXZlRmFtaWx5KTsNCit9DQorDQoraW5saW5lIEZvbnRGYW1pbHkgKg0KK0ZvbnRGYW1pbHk6OkNsb25lKCkgY29uc3QNCit7DQorICAgIEdwRm9udEZhbWlseSAqIGNsb25lZEZhbWlseSA9IE5VTEw7DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ2xvbmVGb250RmFtaWx5IChuYXRpdmVGYW1pbHksICZjbG9uZWRGYW1pbHkpKTsNCisNCisgICAgcmV0dXJuIG5ldyBGb250RmFtaWx5KGNsb25lZEZhbWlseSwgbGFzdFJlc3VsdCk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorRm9udEZhbWlseTo6R2V0RmFtaWx5TmFtZSgNCisgICAgSU4gV0NIQVIgbmFtZVtMRl9GQUNFU0laRV0sDQorICAgIElOIExBTkdJRCBsYW5ndWFnZQ0KKykgY29uc3QNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEZhbWlseU5hbWUobmF0aXZlRmFtaWx5LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSkpOw0KK30NCisNCitpbmxpbmUgQk9PTCANCitGb250RmFtaWx5OjpJc1N0eWxlQXZhaWxhYmxlKElOIElOVCBzdHlsZSkgY29uc3QNCit7DQorICAgIEJPT0wgICAgU3R5bGVBdmFpbGFibGU7DQorICAgIFN0YXR1cyAgc3RhdHVzOw0KKw0KKyAgICBzdGF0dXMgPSBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzU3R5bGVBdmFpbGFibGUobmF0aXZlRmFtaWx5LCBzdHlsZSwgJlN0eWxlQXZhaWxhYmxlKSk7DQorDQorICAgIGlmIChzdGF0dXMgIT0gT2spDQorICAgICAgICBTdHlsZUF2YWlsYWJsZSA9IEZBTFNFOw0KKw0KKyAgICByZXR1cm4gU3R5bGVBdmFpbGFibGU7DQorfQ0KKw0KKw0KK2lubGluZSBVSU5UMTYgDQorRm9udEZhbWlseTo6R2V0RW1IZWlnaHQoSU4gSU5UIHN0eWxlKSBjb25zdA0KK3sNCisgICAgVUlOVDE2ICBFbUhlaWdodDsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRFbUhlaWdodChuYXRpdmVGYW1pbHksIHN0eWxlLCAmRW1IZWlnaHQpKTsNCisNCisgICAgcmV0dXJuIEVtSGVpZ2h0Ow0KK30NCisNCitpbmxpbmUgVUlOVDE2IA0KK0ZvbnRGYW1pbHk6OkdldENlbGxBc2NlbnQoSU4gSU5UIHN0eWxlKSBjb25zdA0KK3sNCisgICAgVUlOVDE2ICBDZWxsQXNjZW50Ow0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldENlbGxBc2NlbnQobmF0aXZlRmFtaWx5LCBzdHlsZSwgJkNlbGxBc2NlbnQpKTsNCisNCisgICAgcmV0dXJuIENlbGxBc2NlbnQ7DQorfQ0KKw0KK2lubGluZSBVSU5UMTYgDQorRm9udEZhbWlseTo6R2V0Q2VsbERlc2NlbnQoSU4gSU5UIHN0eWxlKSBjb25zdA0KK3sNCisgICAgVUlOVDE2ICBDZWxsRGVzY2VudDsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRDZWxsRGVzY2VudChuYXRpdmVGYW1pbHksIHN0eWxlLCAmQ2VsbERlc2NlbnQpKTsNCisNCisgICAgcmV0dXJuIENlbGxEZXNjZW50Ow0KK30NCisNCisNCitpbmxpbmUgVUlOVDE2IA0KK0ZvbnRGYW1pbHk6OkdldExpbmVTcGFjaW5nKElOIElOVCBzdHlsZSkgY29uc3QNCit7DQorICAgIFVJTlQxNiAgTGluZVNwYWNpbmc7DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0TGluZVNwYWNpbmcobmF0aXZlRmFtaWx5LCBzdHlsZSwgJkxpbmVTcGFjaW5nKSk7DQorDQorICAgIHJldHVybiBMaW5lU3BhY2luZzsNCisNCit9DQorDQorI2lmZGVmIFRFWFRWMg0KKw0KKy8vIFRoZSBmb2xsb3dpbmcgQVBJcyByZXR1cm4gZGF0YSBmcm9tIHRoZSBmb250IE9TLzIgdGFibGUNCisNCitpbmxpbmUgSU5UMTYgDQorRm9udEZhbWlseTo6R2V0VHlwb2dyYXBoaWNBc2NlbnQoSU4gSU5UIHN0eWxlKSBjb25zdA0KK3sNCisgICAgSU5UMTYgIFR5cG9ncmFwaGljQXNjZW50Ow0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFR5cG9ncmFwaGljQXNjZW50KG5hdGl2ZUZhbWlseSwgc3R5bGUsICZUeXBvZ3JhcGhpY0FzY2VudCkpOw0KKw0KKyAgICByZXR1cm4gVHlwb2dyYXBoaWNBc2NlbnQ7DQorfQ0KKw0KK2lubGluZSBJTlQxNiANCitGb250RmFtaWx5OjpHZXRUeXBvZ3JhcGhpY0Rlc2NlbnQoSU4gSU5UIHN0eWxlKSBjb25zdA0KK3sNCisgICAgSU5UMTYgICBUeXBvZ3JhcGhpY0Rlc2NlbnQ7DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0VHlwb2dyYXBoaWNEZXNjZW50KG5hdGl2ZUZhbWlseSwgc3R5bGUsICZUeXBvZ3JhcGhpY0Rlc2NlbnQpKTsNCisNCisgICAgcmV0dXJuIFR5cG9ncmFwaGljRGVzY2VudDsNCit9DQorDQoraW5saW5lIElOVDE2IA0KK0ZvbnRGYW1pbHk6OkdldFR5cG9ncmFwaGljTGluZUdhcChJTiBJTlQgc3R5bGUpIGNvbnN0DQorew0KKyAgICBJTlQxNiAgIFR5cG9ncmFwaGljTGluZUdhcDsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRUeXBvZ3JhcGhpY0xpbmVHYXAobmF0aXZlRmFtaWx5LCBzdHlsZSwgJlR5cG9ncmFwaGljTGluZUdhcCkpOw0KKw0KKyAgICByZXR1cm4gVHlwb2dyYXBoaWNMaW5lR2FwOw0KK30NCisNCisjZW5kaWYNCisNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KKw0KKy8vIEdldExhc3RTdGF0dXMgLSByZXR1cm4gbGFzdCBlcnJvciBjb2RlIGFuZCBjbGVhciBlcnJvciBjb2RlDQorDQoraW5saW5lIFN0YXR1cyANCitGb250RmFtaWx5OjpHZXRMYXN0U3RhdHVzKCkgY29uc3QNCit7DQorICAgIFN0YXR1cyBsYXN0U3RhdHVzID0gbGFzdFJlc3VsdDsNCisgICAgbGFzdFJlc3VsdCA9IE9rOw0KKw0KKyAgICByZXR1cm4gbGFzdFN0YXR1czsNCit9DQorDQorLy8gcHJvdGVjdGVkIG1ldGhvZA0KK2lubGluZSBTdGF0dXMNCitGb250RmFtaWx5OjpTZXRTdGF0dXMoU3RhdHVzIHN0YXR1cykgY29uc3QgDQorew0KKyAgICBpZiAoc3RhdHVzICE9IE9rKQ0KKyAgICAgICAgcmV0dXJuIChsYXN0UmVzdWx0ID0gc3RhdHVzKTsNCisgICAgZWxzZQ0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsNCit9DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0dwU3R1YnMuaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNHcFN0dWJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIxMjg4ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNHcFN0dWJzLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqDQorKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwgTWljcm9zb2Z0IENvcnAuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyoNCisqIE1vZHVsZSBOYW1lOg0KKyoNCisqICAgR2RpcGx1c0dwU3R1YnMuaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgR0RJKyBOYXRpdmUgQysrIHB1YmxpYyBoZWFkZXIgZmlsZQ0KKyoNCitcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfR0RJUExVU0dQU1RVQlNfSA0KKyNkZWZpbmUgX0dESVBMVVNHUFNUVUJTX0gNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEdESSsgY2xhc3NlcyBmb3IgZm9yd2FyZCByZWZlcmVuY2UNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsYXNzIEdyYXBoaWNzOw0KK2NsYXNzIFBlbjsNCitjbGFzcyBCcnVzaDsNCitjbGFzcyBNYXRyaXg7DQorY2xhc3MgQml0bWFwOw0KK2NsYXNzIE1ldGFmaWxlOw0KK2NsYXNzIEdyYXBoaWNzUGF0aDsNCitjbGFzcyBQYXRoSXRlcmF0b3I7DQorY2xhc3MgUmVnaW9uOw0KK2NsYXNzIEltYWdlOw0KK2NsYXNzIFRleHR1cmVCcnVzaDsNCitjbGFzcyBIYXRjaEJydXNoOw0KK2NsYXNzIFNvbGlkQnJ1c2g7DQorY2xhc3MgTGluZWFyR3JhZGllbnRCcnVzaDsNCitjbGFzcyBQYXRoR3JhZGllbnRCcnVzaDsNCitjbGFzcyBGb250Ow0KK2NsYXNzIEZvbnRGYW1pbHk7DQorY2xhc3MgRm9udENvbGxlY3Rpb247DQorY2xhc3MgSW5zdGFsbGVkRm9udENvbGxlY3Rpb247DQorY2xhc3MgUHJpdmF0ZUZvbnRDb2xsZWN0aW9uOw0KK2NsYXNzIEltYWdlQXR0cmlidXRlczsNCitjbGFzcyBDYWNoZWRCaXRtYXA7DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBJbnRlcm5hbCBHREkrIGNsYXNzZXMgZm9yIGludGVybmFsIHR5cGUgY2hlY2tpbmcNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK2NsYXNzIEdwR3JhcGhpY3Mge307DQorDQorY2xhc3MgR3BCcnVzaCB7fTsNCitjbGFzcyBHcFRleHR1cmUgOiBwdWJsaWMgR3BCcnVzaCB7fTsNCitjbGFzcyBHcFNvbGlkRmlsbCA6IHB1YmxpYyBHcEJydXNoIHt9Ow0KK2NsYXNzIEdwTGluZUdyYWRpZW50IDogcHVibGljIEdwQnJ1c2gge307DQorY2xhc3MgR3BQYXRoR3JhZGllbnQgOiBwdWJsaWMgR3BCcnVzaCB7fTsNCitjbGFzcyBHcEhhdGNoIDogcHVibGljIEdwQnJ1c2gge307DQorDQorY2xhc3MgR3BQZW4ge307DQorY2xhc3MgR3BDdXN0b21MaW5lQ2FwIHt9Ow0KK2NsYXNzIEdwQWRqdXN0YWJsZUFycm93Q2FwIDogcHVibGljIEdwQ3VzdG9tTGluZUNhcCB7fTsNCisNCitjbGFzcyBHcEltYWdlIHt9Ow0KK2NsYXNzIEdwQml0bWFwIDogcHVibGljIEdwSW1hZ2Uge307DQorY2xhc3MgR3BNZXRhZmlsZSA6IHB1YmxpYyBHcEltYWdlIHt9Ow0KK2NsYXNzIEdwSW1hZ2VBdHRyaWJ1dGVzIHt9Ow0KKw0KK2NsYXNzIEdwUGF0aCB7fTsNCitjbGFzcyBHcFJlZ2lvbiB7fTsNCitjbGFzcyBHcFBhdGhJdGVyYXRvciB7fTsNCisNCitjbGFzcyBHcEZvbnRGYW1pbHkge307DQorY2xhc3MgR3BGb250IHt9Ow0KK2NsYXNzIEdwU3RyaW5nRm9ybWF0IHt9Ow0KK2NsYXNzIEdwRm9udENvbGxlY3Rpb24ge307DQorY2xhc3MgR3BJbnN0YWxsZWRGb250Q29sbGVjdGlvbiA6IHB1YmxpYyBHcEZvbnRDb2xsZWN0aW9uIHt9Ow0KK2NsYXNzIEdwUHJpdmF0ZUZvbnRDb2xsZWN0aW9uIDogcHVibGljIEdwRm9udENvbGxlY3Rpb24ge307DQorDQorY2xhc3MgR3BDYWNoZWRCaXRtYXA7DQorDQordHlwZWRlZiBTdGF0dXMgR3BTdGF0dXM7DQordHlwZWRlZiBGaWxsTW9kZSBHcEZpbGxNb2RlOw0KK3R5cGVkZWYgV3JhcE1vZGUgR3BXcmFwTW9kZTsNCit0eXBlZGVmIFVuaXQgR3BVbml0Ow0KK3R5cGVkZWYgQ29vcmRpbmF0ZVNwYWNlIEdwQ29vcmRpbmF0ZVNwYWNlOw0KK3R5cGVkZWYgUG9pbnRGIEdwUG9pbnRGOw0KK3R5cGVkZWYgUG9pbnQgR3BQb2ludDsNCit0eXBlZGVmIFJlY3RGIEdwUmVjdEY7DQordHlwZWRlZiBSZWN0IEdwUmVjdDsNCit0eXBlZGVmIFNpemVGIEdwU2l6ZUY7DQordHlwZWRlZiBIYXRjaFN0eWxlIEdwSGF0Y2hTdHlsZTsNCit0eXBlZGVmIERhc2hTdHlsZSBHcERhc2hTdHlsZTsNCit0eXBlZGVmIExpbmVDYXAgR3BMaW5lQ2FwOw0KK3R5cGVkZWYgRGFzaENhcCBHcERhc2hDYXA7DQorDQorDQordHlwZWRlZiBQZW5BbGlnbm1lbnQgR3BQZW5BbGlnbm1lbnQ7DQorDQordHlwZWRlZiBMaW5lSm9pbiBHcExpbmVKb2luOw0KK3R5cGVkZWYgUGVuVHlwZSBHcFBlblR5cGU7DQorDQordHlwZWRlZiBNYXRyaXggR3BNYXRyaXg7DQordHlwZWRlZiBCcnVzaFR5cGUgR3BCcnVzaFR5cGU7DQordHlwZWRlZiBNYXRyaXhPcmRlciBHcE1hdHJpeE9yZGVyOw0KK3R5cGVkZWYgRmx1c2hJbnRlbnRpb24gR3BGbHVzaEludGVudGlvbjsNCit0eXBlZGVmIFBhdGhEYXRhIEdwUGF0aERhdGE7DQorDQorI2VuZGlmICAvLyAhX0dESVBMVVNHUFNUVUJTLkhQUA0KKw0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNHcmFwaGljcy5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0dyYXBoaWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IzOWE2ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNHcmFwaGljcy5oCkBAIC0wLDAgKzEsMjcyNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXA0KKyoNCisqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLCBNaWNyb3NvZnQgQ29ycC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzR3JhcGhpY3MuaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgRGVjbGFyYXRpb25zIGZvciBHcmFwaGljcyBjbGFzcw0KKyoNCitcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfR0RJUExVU0dSQVBISUNTX0gNCisjZGVmaW5lIF9HRElQTFVTR1JBUEhJQ1NfSA0KKw0KKy8qKg0KKyAqIFJlcHJlc2VudCBhIGdyYXBoaWNzIGNvbnRleHQNCisgKi8NCitjbGFzcyBHcmFwaGljcyA6IHB1YmxpYyBHZGlwbHVzQmFzZQ0KK3sNCitwdWJsaWM6DQorICAgIGZyaWVuZCBjbGFzcyBSZWdpb247DQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc1BhdGg7DQorICAgIGZyaWVuZCBjbGFzcyBJbWFnZTsNCisgICAgZnJpZW5kIGNsYXNzIEJpdG1hcDsNCisgICAgZnJpZW5kIGNsYXNzIE1ldGFmaWxlOw0KKyAgICBmcmllbmQgY2xhc3MgRm9udDsNCisgICAgZnJpZW5kIGNsYXNzIEZvbnRGYW1pbHk7DQorICAgIGZyaWVuZCBjbGFzcyBGb250Q29sbGVjdGlvbjsNCisgICAgZnJpZW5kIGNsYXNzIENhY2hlZEJpdG1hcDsNCisNCisgICAgLy8gR2V0IGEgZ3JhcGhpY3MgY29udGV4dCBmcm9tIGFuIGV4aXN0aW5nIFdpbjMyIEhEQyBvciBIV05EDQorICAgIHN0YXRpYyBHcmFwaGljcyogRnJvbUhEQyhJTiBIREMgaGRjKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbmV3IEdyYXBoaWNzKGhkYyk7DQorICAgIH0NCisNCisgICAgc3RhdGljIEdyYXBoaWNzKiBGcm9tSERDKElOIEhEQyBoZGMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBIQU5ETEUgaGRldmljZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG5ldyBHcmFwaGljcyhoZGMsIGhkZXZpY2UpOw0KKyAgICB9DQorDQorICAgIHN0YXRpYyBHcmFwaGljcyogRnJvbUhXTkQoSU4gSFdORCBod25kLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIEJPT0wgaWNtID0gRkFMU0UpDQorICAgIHsNCisgICAgICAgIHJldHVybiBuZXcgR3JhcGhpY3MoaHduZCwgaWNtKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgR3JhcGhpY3MqIEZyb21JbWFnZShJTiBJbWFnZSAqaW1hZ2UpDQorICAgIHsNCisgICAgICAgIHJldHVybiBuZXcgR3JhcGhpY3MoaW1hZ2UpOw0KKyAgICB9DQorDQorICAgIEdyYXBoaWNzKElOIEhEQyBoZGMpDQorICAgIHsNCisgICAgICAgIEdwR3JhcGhpY3MgKmdyYXBoaWNzID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlRnJvbUhEQyhoZGMsICZncmFwaGljcyk7DQorDQorICAgICAgICBTZXROYXRpdmVHcmFwaGljcyhncmFwaGljcyk7DQorICAgIH0NCisNCisgICAgR3JhcGhpY3MoSU4gSERDIGhkYywNCisgICAgICAgICAgICAgSU4gSEFORExFIGhkZXZpY2UpDQorICAgIHsNCisgICAgICAgIEdwR3JhcGhpY3MgKmdyYXBoaWNzID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlRnJvbUhEQzIoaGRjLCBoZGV2aWNlLCAmZ3JhcGhpY3MpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlR3JhcGhpY3MoZ3JhcGhpY3MpOw0KKyAgICB9DQorDQorICAgIEdyYXBoaWNzKElOIEhXTkQgaHduZCwNCisgICAgICAgICAgICAgSU4gQk9PTCBpY20gPSBGQUxTRSkNCisgICAgew0KKyAgICAgICAgR3BHcmFwaGljcyAqZ3JhcGhpY3MgPSBOVUxMOw0KKw0KKyAgICAgICAgaWYgKGljbSkNCisgICAgICAgIHsNCisgICAgICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUZyb21IV05ESUNNKGh3bmQsICZncmFwaGljcyk7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVGcm9tSFdORChod25kLCAmZ3JhcGhpY3MpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgU2V0TmF0aXZlR3JhcGhpY3MoZ3JhcGhpY3MpOw0KKyAgICB9DQorDQorICAgIEdyYXBoaWNzKElOIEltYWdlKiBpbWFnZSkNCisgICAgew0KKyAgICAgICAgR3BHcmFwaGljcyAqZ3JhcGhpY3MgPSBOVUxMOw0KKw0KKyAgICAgICAgaWYgKGltYWdlICE9IE5VTEwpDQorICAgICAgICB7DQorICAgICAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBHZXRJbWFnZUdyYXBoaWNzQ29udGV4dCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UtPm5hdGl2ZUltYWdlLCAmZ3JhcGhpY3MpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgU2V0TmF0aXZlR3JhcGhpY3MoZ3JhcGhpY3MpOw0KKyAgICB9DQorDQorICAgIH5HcmFwaGljcygpDQorICAgIHsNCisgICAgICAgIERsbEV4cG9ydHM6OkdkaXBEZWxldGVHcmFwaGljcyhuYXRpdmVHcmFwaGljcyk7DQorICAgIH0NCisNCisgICAgVk9JRCBGbHVzaChJTiBGbHVzaEludGVudGlvbiBpbnRlbnRpb24gPSBGbHVzaEludGVudGlvbkZsdXNoKQ0KKyAgICB7DQorICAgICAgICBEbGxFeHBvcnRzOjpHZGlwRmx1c2gobmF0aXZlR3JhcGhpY3MsIGludGVudGlvbik7DQorICAgIH0NCisNCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgICAgLy8gSW50ZXJvcCBtZXRob2RzDQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorICAgIC8vIExvY2tzIHRoZSBncmFwaGljcyB1bnRpbCBSZWxlYXNlREMgaXMgY2FsbGVkDQorICAgIEhEQyBHZXRIREMoKQ0KKyAgICB7DQorICAgICAgICBIREMgICAgIGhkYyA9IE5VTEw7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldERDKG5hdGl2ZUdyYXBoaWNzLCAmaGRjKSk7DQorDQorICAgICAgICByZXR1cm4gaGRjOw0KKyAgICB9DQorDQorICAgIFZPSUQgUmVsZWFzZUhEQyhJTiBIREMgaGRjKQ0KKyAgICB7DQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFJlbGVhc2VEQyhuYXRpdmVHcmFwaGljcywgaGRjKSk7DQorICAgIH0NCisNCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgICAgLy8gUmVuZGVyaW5nIG1vZGVzDQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorICAgIFN0YXR1cyBTZXRSZW5kZXJpbmdPcmlnaW4oSU4gSU5UIHgsIElOIElOVCB5KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKA0KKyAgICAgICAgICAgIERsbEV4cG9ydHM6OkdkaXBTZXRSZW5kZXJpbmdPcmlnaW4oDQorICAgICAgICAgICAgICAgIG5hdGl2ZUdyYXBoaWNzLCB4LCB5DQorICAgICAgICAgICAgKQ0KKyAgICAgICAgKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0UmVuZGVyaW5nT3JpZ2luKE9VVCBJTlQgKngsIE9VVCBJTlQgKnkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoDQorICAgICAgICAgICAgRGxsRXhwb3J0czo6R2RpcEdldFJlbmRlcmluZ09yaWdpbigNCisgICAgICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsIHgsIHkNCisgICAgICAgICAgICApDQorICAgICAgICApOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRDb21wb3NpdGluZ01vZGUoSU4gQ29tcG9zaXRpbmdNb2RlIGNvbXBvc2l0aW5nTW9kZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0Q29tcG9zaXRpbmdNb2RlKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nTW9kZSkpOw0KKyAgICB9DQorDQorICAgIENvbXBvc2l0aW5nTW9kZSBHZXRDb21wb3NpdGluZ01vZGUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBDb21wb3NpdGluZ01vZGUgbW9kZTsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0Q29tcG9zaXRpbmdNb2RlKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZGUpKTsNCisNCisgICAgICAgIHJldHVybiBtb2RlOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRDb21wb3NpdGluZ1F1YWxpdHkoSU4gQ29tcG9zaXRpbmdRdWFsaXR5IGNvbXBvc2l0aW5nUXVhbGl0eSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0Q29tcG9zaXRpbmdRdWFsaXR5KA0KKyAgICAgICAgICAgIG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgIGNvbXBvc2l0aW5nUXVhbGl0eSkpOw0KKyAgICB9DQorDQorICAgIENvbXBvc2l0aW5nUXVhbGl0eSBHZXRDb21wb3NpdGluZ1F1YWxpdHkoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBDb21wb3NpdGluZ1F1YWxpdHkgcXVhbGl0eTsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0Q29tcG9zaXRpbmdRdWFsaXR5KA0KKyAgICAgICAgICAgIG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICZxdWFsaXR5KSk7DQorDQorICAgICAgICByZXR1cm4gcXVhbGl0eTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0VGV4dFJlbmRlcmluZ0hpbnQoSU4gVGV4dFJlbmRlcmluZ0hpbnQgbmV3TW9kZSkNCisgICAgew0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTg2NzY0DQorCQkvKiB0ZW1wb3Jhcmx5IHNldCB0aGUgaGlnaCBiaXQgdG8gd2FybiB0aGF0IHdlIGFyZSB1c2luZyB0aGUgbmV3IGRlZmluaXRpb24gZm9yIHRoZSBmbGFnICovDQorCQluZXdNb2RlID0gKFRleHRSZW5kZXJpbmdIaW50KSAobmV3TW9kZSB8IDB4MGYwMDApOw0KKyNlbmRpZiAvLyBEQ1JfVVNFX05FV18xODY3NjQNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFRleHRSZW5kZXJpbmdIaW50KG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdNb2RlKSk7DQorICAgIH0NCisNCisgICAgVGV4dFJlbmRlcmluZ0hpbnQgR2V0VGV4dFJlbmRlcmluZ0hpbnQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBUZXh0UmVuZGVyaW5nSGludCBoaW50Ow0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRUZXh0UmVuZGVyaW5nSGludChuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGludCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIGhpbnQ7DQorICAgIH0NCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMTg4OTIyDQorICAgIFN0YXR1cyBTZXRUZXh0Q29udHJhc3QoSU4gVUlOVCBjb250cmFzdCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0VGV4dENvbnRyYXN0KG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cmFzdCkpOw0KKyAgICB9DQorDQorICAgIFVJTlQgR2V0VGV4dENvbnRyYXN0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgVUlOVCBjb250cmFzdDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0VGV4dENvbnRyYXN0KG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udHJhc3QpKTsNCisNCisgICAgICAgIHJldHVybiBjb250cmFzdDsNCisgICAgfQ0KKyNlbHNlDQorICAgIFN0YXR1cyBTZXRUZXh0R2FtbWFWYWx1ZShJTiBVSU5UIGdhbW1hVmFsdWUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFRleHRHYW1tYVZhbHVlKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYW1tYVZhbHVlKSk7DQorICAgIH0NCisNCisgICAgVUlOVCBHZXRUZXh0R2FtbWFWYWx1ZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIFVJTlQgZ2FtbWFWYWx1ZTsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0VGV4dEdhbW1hVmFsdWUobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnYW1tYVZhbHVlKSk7DQorDQorICAgICAgICByZXR1cm4gZ2FtbWFWYWx1ZTsNCisgICAgfQ0KKw0KKyNlbmRpZiAvLyBEQ1JfVVNFX05FV18xODg5MjINCisNCisNCisgICAgSW50ZXJwb2xhdGlvbk1vZGUgR2V0SW50ZXJwb2xhdGlvbk1vZGUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBJbnRlcnBvbGF0aW9uTW9kZSBtb2RlID0gSW50ZXJwb2xhdGlvbk1vZGVJbnZhbGlkOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRJbnRlcnBvbGF0aW9uTW9kZShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RlKSk7DQorDQorICAgICAgICByZXR1cm4gbW9kZTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0SW50ZXJwb2xhdGlvbk1vZGUoSU4gSW50ZXJwb2xhdGlvbk1vZGUgaW50ZXJwb2xhdGlvbk1vZGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEludGVycG9sYXRpb25Nb2RlKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbk1vZGUpKTsNCisgICAgfQ0KKw0KKyAgICBTbW9vdGhpbmdNb2RlIEdldFNtb290aGluZ01vZGUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUgPSBTbW9vdGhpbmdNb2RlSW52YWxpZDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0U21vb3RoaW5nTW9kZShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc21vb3RoaW5nTW9kZSkpOw0KKw0KKyAgICAgICAgcmV0dXJuIHNtb290aGluZ01vZGU7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldFNtb290aGluZ01vZGUoSU4gU21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRTbW9vdGhpbmdNb2RlKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmdNb2RlKSk7DQorICAgIH0NCisNCisgICAgUGl4ZWxPZmZzZXRNb2RlIEdldFBpeGVsT2Zmc2V0TW9kZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIFBpeGVsT2Zmc2V0TW9kZSBwaXhlbE9mZnNldE1vZGUgPSBQaXhlbE9mZnNldE1vZGVJbnZhbGlkOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQaXhlbE9mZnNldE1vZGUobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGl4ZWxPZmZzZXRNb2RlKSk7DQorDQorICAgICAgICByZXR1cm4gcGl4ZWxPZmZzZXRNb2RlOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRQaXhlbE9mZnNldE1vZGUoSU4gUGl4ZWxPZmZzZXRNb2RlIHBpeGVsT2Zmc2V0TW9kZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGl4ZWxPZmZzZXRNb2RlKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsT2Zmc2V0TW9kZSkpOw0KKyAgICB9DQorDQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAgIC8vIE1hbmlwdWxhdGUgdGhlIGN1cnJlbnQgd29ybGQgdHJhbnNmb3JtDQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorICAgIFN0YXR1cyBTZXRUcmFuc2Zvcm0oSU4gY29uc3QgTWF0cml4KiBtYXRyaXgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFdvcmxkVHJhbnNmb3JtKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5uYXRpdmVNYXRyaXgpKTsNCisgICAgfQ0KKyAgICBTdGF0dXMgUmVzZXRUcmFuc2Zvcm0oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBSZXNldFdvcmxkVHJhbnNmb3JtKG5hdGl2ZUdyYXBoaWNzKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIE11bHRpcGx5VHJhbnNmb3JtKElOIGNvbnN0IE1hdHJpeCogbWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gTWF0cml4T3JkZXIgb3JkZXIgPSBNYXRyaXhPcmRlclByZXBlbmQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcE11bHRpcGx5V29ybGRUcmFuc2Zvcm0obmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC0+bmF0aXZlTWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcikpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBUcmFuc2xhdGVUcmFuc2Zvcm0oSU4gUkVBTCBkeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIGR5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIE1hdHJpeE9yZGVyIG9yZGVyID0gTWF0cml4T3JkZXJQcmVwZW5kKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBUcmFuc2xhdGVXb3JsZFRyYW5zZm9ybShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeCwgZHksIG9yZGVyKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNjYWxlVHJhbnNmb3JtKElOIFJFQUwgc3gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gTWF0cml4T3JkZXIgb3JkZXIgPSBNYXRyaXhPcmRlclByZXBlbmQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNjYWxlV29ybGRUcmFuc2Zvcm0obmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4LCBzeSwgb3JkZXIpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgUm90YXRlVHJhbnNmb3JtKElOIFJFQUwgYW5nbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gTWF0cml4T3JkZXIgb3JkZXIgPSBNYXRyaXhPcmRlclByZXBlbmQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFJvdGF0ZVdvcmxkVHJhbnNmb3JtKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGUsIG9yZGVyKSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFJldHVybiB0aGUgY3VycmVudCB3b3JsZCB0cmFuc2Zvcm0NCisgICAgICovDQorDQorICAgIFN0YXR1cyBHZXRUcmFuc2Zvcm0oT1VUIE1hdHJpeCogbWF0cml4KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRXb3JsZFRyYW5zZm9ybShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC0+bmF0aXZlTWF0cml4KSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIE1hbmlwdWxhdGUgdGhlIGN1cnJlbnQgcGFnZSB0cmFuc2Zvcm0NCisgICAgICovDQorDQorICAgIFN0YXR1cyBTZXRQYWdlVW5pdChJTiBVbml0IHVuaXQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBhZ2VVbml0KG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRQYWdlU2NhbGUoSU4gUkVBTCBzY2FsZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGFnZVNjYWxlKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlKSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFJldHJpZXZlIHRoZSBjdXJyZW50IHBhZ2UgdHJhbnNmb3JtIGluZm9ybWF0aW9uDQorICAgICAqIG5vdGVzIEAgdGhlc2UgYXJlIGF0b21pYw0KKyAgICAgKi8NCisgICAgVW5pdCBHZXRQYWdlVW5pdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIFVuaXQgdW5pdDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGFnZVVuaXQobmF0aXZlR3JhcGhpY3MsICZ1bml0KSk7DQorDQorICAgICAgICByZXR1cm4gdW5pdDsNCisgICAgfQ0KKw0KKyAgICBSRUFMIEdldFBhZ2VTY2FsZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIFJFQUwgc2NhbGU7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhZ2VTY2FsZShuYXRpdmVHcmFwaGljcywgJnNjYWxlKSk7DQorDQorICAgICAgICByZXR1cm4gc2NhbGU7DQorICAgIH0NCisNCisgICAgUkVBTCBHZXREcGlYKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgUkVBTCBkcGk7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldERwaVgobmF0aXZlR3JhcGhpY3MsICZkcGkpKTsNCisNCisgICAgICAgIHJldHVybiBkcGk7DQorICAgIH0NCisNCisgICAgUkVBTCBHZXREcGlZKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgUkVBTCBkcGk7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldERwaVkobmF0aXZlR3JhcGhpY3MsICZkcGkpKTsNCisNCisgICAgICAgIHJldHVybiBkcGk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRyYW5zZm9ybSBwb2ludHMgaW4gdGhlIGN1cnJlbnQgZ3JhcGhpY3MgY29udGV4dA0KKyAgICAgKi8NCisgICAgLy8gZmxvYXQgdmVyc2lvbg0KKyAgICBTdGF0dXMgVHJhbnNmb3JtUG9pbnRzKElOIENvb3JkaW5hdGVTcGFjZSBkZXN0U3BhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gQ29vcmRpbmF0ZVNwYWNlIHNyY1NwYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIE9VVCBQb2ludEYqIHB0cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFRyYW5zZm9ybVBvaW50cyhuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0U3BhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjU3BhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBUcmFuc2Zvcm1Qb2ludHMoSU4gQ29vcmRpbmF0ZVNwYWNlIGRlc3RTcGFjZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBDb29yZGluYXRlU3BhY2Ugc3JjU3BhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gT1VUIFBvaW50KiBwdHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KSBjb25zdA0KKyAgICB7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBUcmFuc2Zvcm1Qb2ludHNJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0U3BhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NwYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgICAgLy8gR2V0TmVhcmVzdENvbG9yIChmb3IgPD0gOGJwcCBzdXJmYWNlcykNCisgICAgLy8gTm90ZTogYWxwaGEgaXMgaWdub3JlZA0KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAgICBTdGF0dXMgR2V0TmVhcmVzdENvbG9yKElOIE9VVCBDb2xvciogY29sb3IpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmIChjb2xvciA9PSBOVUxMKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorICAgICAgICB9DQorDQorICAgICAgICBBUkdCIGFyZ2IgPSBjb2xvci0+R2V0VmFsdWUoKTsNCisNCisgICAgICAgIFN0YXR1cyBzdGF0dXMgPSBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldE5lYXJlc3RDb2xvcihuYXRpdmVHcmFwaGljcywgJmFyZ2IpKTsNCisNCisgICAgICAgIGNvbG9yLT5TZXRWYWx1ZShhcmdiKTsNCisNCisgICAgICAgIHJldHVybiBzdGF0dXM7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFZlY3RvciBkcmF3aW5nIG1ldGhvZHMNCisgICAgICoNCisgICAgICogQG5vdGVzIERvIHdlIG5lZWQgYSBzZXQgb2YgbWV0aG9kcyB0aGF0IHRha2UNCisgICAgICogIGludGVnZXIgY29vcmRpbmF0ZSBwYXJhbWV0ZXJzPw0KKyAgICAgKi8NCisNCisgICAgLy8gZmxvYXQgdmVyc2lvbg0KKyAgICBTdGF0dXMgRHJhd0xpbmUoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHgxLA0KKyAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5MSwNCisgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeDIsDQorICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHkyKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3TGluZShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLCB4MSwgeTEsIHgyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTIpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0xpbmUoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludEYmIHB0MSwNCisgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiYgcHQyKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRHJhd0xpbmUocGVuLCBwdDEuWCwgcHQxLlksIHB0Mi5YLCBwdDIuWSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdMaW5lcyhJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludEYqIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdMaW5lcyhuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW4tPm5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8gaW50IHZlcnNpb24NCisgICAgU3RhdHVzIERyYXdMaW5lKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHgxLA0KKyAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHkxLA0KKyAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHgyLA0KKyAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHkyKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3TGluZUkobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTIpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0xpbmUoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludCYgcHQxLA0KKyAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnQmIHB0MikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIERyYXdMaW5lKHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICBwdDEuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICBwdDEuWSwNCisgICAgICAgICAgICAgICAgICAgICAgICBwdDIuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICBwdDIuWSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdMaW5lcyhJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludCogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0xpbmVzSShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBmbG9hdCB2ZXJzaW9uDQorICAgIFN0YXR1cyBEcmF3QXJjKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHgsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3RhcnRBbmdsZSwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzd2VlcEFuZ2xlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3QXJjKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW4tPm5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dlZXBBbmdsZSkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBEcmF3QXJjKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiYgcmVjdCwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzdGFydEFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN3ZWVwQW5nbGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBEcmF3QXJjKHBlbiwgcmVjdC5YLCByZWN0LlksIHJlY3QuV2lkdGgsIHJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZSwgc3dlZXBBbmdsZSk7DQorICAgIH0NCisNCisgICAgLy8gaW50IHZlcnNpb24NCisgICAgU3RhdHVzIERyYXdBcmMoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgIElOIElOVCB4LA0KKyAgICAgICAgICAgICAgICAgICBJTiBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgSU4gSU5UIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICBJTiBJTlQgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3dlZXBBbmdsZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0FyY0kobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW4tPm5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dlZXBBbmdsZSkpOw0KKyAgICB9DQorDQorDQorICAgIFN0YXR1cyBEcmF3QXJjKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0JiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3dlZXBBbmdsZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIERyYXdBcmMocGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5XaWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZSwNCisgICAgICAgICAgICAgICAgICAgICAgIHN3ZWVwQW5nbGUpOw0KKyAgICB9DQorDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIERyYXdCZXppZXIoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeDEsDQorICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeTEsDQorICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeDIsDQorICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeTIsDQorICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeDMsDQorICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeTMsDQorICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeDQsDQorICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeTQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdCZXppZXIobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLCB4MSwgeTEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0JlemllcihJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnRGJiBwdDEsDQorICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiYgcHQyLA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludEYmIHB0MywNCisgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnRGJiBwdDQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBEcmF3QmV6aWVyKHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB0MS5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHQxLlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICBwdDIuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB0Mi5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHQzLlgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBwdDMuWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB0NC5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHQ0LlkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBEcmF3QmV6aWVycyhJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3QmV6aWVycyhuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBpbnQgdmVyc2lvbg0KKyAgICBTdGF0dXMgRHJhd0JlemllcihJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHgxLA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeTEsDQorICAgICAgICAgICAgICAgICAgICAgIElOIElOVCB4MiwNCisgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHkyLA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeDMsDQorICAgICAgICAgICAgICAgICAgICAgIElOIElOVCB5MywNCisgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHg0LA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeTQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdCZXppZXJJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4NCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk0KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdCZXppZXIoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50JiBwdDEsDQorICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50JiBwdDIsDQorICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50JiBwdDMsDQorICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50JiBwdDQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBEcmF3QmV6aWVyKHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB0MS5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHQxLlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICBwdDIuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB0Mi5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHQzLlgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBwdDMuWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB0NC5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHQ0LlkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBEcmF3QmV6aWVycyhJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50KiBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdCZXppZXJzSShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW4tPm5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBmbG9hdCB2ZXJzaW9uDQorICAgIFN0YXR1cyBEcmF3UmVjdGFuZ2xlKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiYgcmVjdCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIERyYXdSZWN0YW5nbGUocGVuLCByZWN0LlgsIHJlY3QuWSwgcmVjdC5XaWR0aCwgcmVjdC5IZWlnaHQpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBEcmF3UmVjdGFuZ2xlKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBoZWlnaHQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdSZWN0YW5nbGUobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLCB4LCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdSZWN0YW5nbGVzKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdEYqIHJlY3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3UmVjdGFuZ2xlcyhuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdHMsIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBEcmF3UmVjdGFuZ2xlKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0JiByZWN0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRHJhd1JlY3RhbmdsZShwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LldpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5IZWlnaHQpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBEcmF3UmVjdGFuZ2xlKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGhlaWdodCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd1JlY3RhbmdsZUkobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW4tPm5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd1JlY3RhbmdsZXMoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0KiByZWN0cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd1JlY3RhbmdsZXNJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8gZmxvYXQgdmVyc2lvbg0KKyAgICBTdGF0dXMgRHJhd0VsbGlwc2UoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiYgcmVjdCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIERyYXdFbGxpcHNlKHBlbiwgcmVjdC5YLCByZWN0LlksIHJlY3QuV2lkdGgsIHJlY3QuSGVpZ2h0KTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0VsbGlwc2UoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHgsDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHksDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBoZWlnaHQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdFbGxpcHNlKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBEcmF3RWxsaXBzZShJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3QmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBEcmF3RWxsaXBzZShwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LldpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuSGVpZ2h0KTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0VsbGlwc2UoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGhlaWdodCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0VsbGlwc2VJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBmbG9hdGluZyBwb2ludCB2ZXJzaW9uDQorICAgIFN0YXR1cyBEcmF3UGllKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiYgcmVjdCwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzdGFydEFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN3ZWVwQW5nbGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBEcmF3UGllKHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWCwNCisgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWSwNCisgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICByZWN0LkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgICAgICBzd2VlcEFuZ2xlKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd1BpZShJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB4LA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHksDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3dlZXBBbmdsZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd1BpZShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3ZWVwQW5nbGUpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBpbnRlZ2VyIHBvaW50IHZlcnNpb24NCisgICAgU3RhdHVzIERyYXdQaWUoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3QmIHJlY3QsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3RhcnRBbmdsZSwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzd2VlcEFuZ2xlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRHJhd1BpZShwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICByZWN0LlgsDQorICAgICAgICAgICAgICAgICAgICAgICByZWN0LlksDQorICAgICAgICAgICAgICAgICAgICAgICByZWN0LldpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5IZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgc3dlZXBBbmdsZSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdQaWUoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgIElOIElOVCB4LA0KKyAgICAgICAgICAgICAgICAgICBJTiBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgSU4gSU5UIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICBJTiBJTlQgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3dlZXBBbmdsZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd1BpZUkobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW4tPm5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dlZXBBbmdsZSkpOw0KKyAgICB9DQorDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIERyYXdQb2x5Z29uKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnRGKiBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdQb2x5Z29uKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIC8vIGludGVnZXIgdmVyc2lvbg0KKyAgICBTdGF0dXMgRHJhd1BvbHlnb24oSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludCogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3UG9seWdvbkkobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8gZmxvYXQgdmVyc2lvbg0KKyAgICBTdGF0dXMgRHJhd1BhdGgoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljc1BhdGgqIHBhdGgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdQYXRoKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuID8gcGVuLT5uYXRpdmVQZW4gOiBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA/IHBhdGgtPm5hdGl2ZVBhdGggOiBOVUxMKSk7DQorICAgIH0NCisNCisgICAgLy8gZmxvYXQgdmVyc2lvbg0KKyAgICBTdGF0dXMgRHJhd0N1cnZlKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0N1cnZlKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLCBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0N1cnZlKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHRlbnNpb24pDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdDdXJ2ZTIobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLCBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0ZW5zaW9uKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdDdXJ2ZShJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludEYqIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIG9mZnNldCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgbnVtYmVyT2ZTZWdtZW50cywNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHRlbnNpb24gPSAwLjVmKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3Q3VydmUzKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW4tPm5hdGl2ZVBlbiwgcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgb2Zmc2V0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZlNlZ21lbnRzLCB0ZW5zaW9uKSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBEcmF3Q3VydmUoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnQqIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdDdXJ2ZUkobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdDdXJ2ZShJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludCogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHRlbnNpb24pDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdDdXJ2ZTJJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbnNpb24pKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0N1cnZlKElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50KiBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBvZmZzZXQsDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIG51bWJlck9mU2VnbWVudHMsDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB0ZW5zaW9uID0gMC41ZikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0N1cnZlM0kobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW4tPm5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZTZWdtZW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbnNpb24pKTsNCisgICAgfQ0KKw0KKyAgICAvLyBmbG9hdCB2ZXJzaW9uDQorICAgIFN0YXR1cyBEcmF3Q2xvc2VkQ3VydmUoSU4gY29uc3QgUGVuKiBwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnRGKiBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3Q2xvc2VkQ3VydmUobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLCBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBEcmF3Q2xvc2VkQ3VydmUoSU4gY29uc3QgUGVuICpwZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnRGKiBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgdGVuc2lvbikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0Nsb3NlZEN1cnZlMihuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbnNpb24pKTsNCisgICAgfQ0KKw0KKyAgICAvLyBpbnRlZ2VyIHZlcnNpb24NCisgICAgU3RhdHVzIERyYXdDbG9zZWRDdXJ2ZShJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludCogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0Nsb3NlZEN1cnZlSShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuLT5uYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0Nsb3NlZEN1cnZlKElOIGNvbnN0IFBlbiAqcGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50KiBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgdGVuc2lvbikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0Nsb3NlZEN1cnZlMkkobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW4tPm5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVuc2lvbikpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBDbGVhcihJTiBjb25zdCBDb2xvciAmY29sb3IpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdyYXBoaWNzQ2xlYXIoDQorICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgY29sb3IuR2V0VmFsdWUoKSkpOw0KKyAgICB9DQorDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIEZpbGxSZWN0YW5nbGUoSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiYgcmVjdCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZpbGxSZWN0YW5nbGUoYnJ1c2gsIHJlY3QuWCwgcmVjdC5ZLCByZWN0LldpZHRoLCByZWN0LkhlaWdodCk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEZpbGxSZWN0YW5nbGUoSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBoZWlnaHQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEZpbGxSZWN0YW5nbGUobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJydXNoLT5uYXRpdmVCcnVzaCwgeCwgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBGaWxsUmVjdGFuZ2xlcyhJTiBjb25zdCBCcnVzaCogYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiogcmVjdHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEZpbGxSZWN0YW5nbGVzKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJ1c2gtPm5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdHMsIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBGaWxsUmVjdGFuZ2xlKElOIGNvbnN0IEJydXNoKiBicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdCYgcmVjdCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZpbGxSZWN0YW5nbGUoYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LldpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5IZWlnaHQpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBGaWxsUmVjdGFuZ2xlKElOIGNvbnN0IEJydXNoKiBicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBoZWlnaHQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEZpbGxSZWN0YW5nbGVJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJ1c2gtPm5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBGaWxsUmVjdGFuZ2xlcyhJTiBjb25zdCBCcnVzaCogYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0KiByZWN0cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRmlsbFJlY3RhbmdsZXNJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJydXNoLT5uYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIEZpbGxQb2x5Z29uKElOIGNvbnN0IEJydXNoKiBicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRmlsbFBvbHlnb24oYnJ1c2gsIHBvaW50cywgY291bnQsIEZpbGxNb2RlQWx0ZXJuYXRlKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRmlsbFBvbHlnb24oSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnRGKiBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBGaWxsTW9kZSBmaWxsTW9kZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRmlsbFBvbHlnb24obmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicnVzaC0+bmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsIGNvdW50LCBmaWxsTW9kZSkpOw0KKyAgICB9DQorDQorICAgIC8vIGludGVnZXIgdmVyc2lvbg0KKyAgICBTdGF0dXMgRmlsbFBvbHlnb24oSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnQqIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZpbGxQb2x5Z29uKGJydXNoLCBwb2ludHMsIGNvdW50LCBGaWxsTW9kZUFsdGVybmF0ZSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEZpbGxQb2x5Z29uKElOIGNvbnN0IEJydXNoKiBicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50KiBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBGaWxsTW9kZSBmaWxsTW9kZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRmlsbFBvbHlnb25JKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJydXNoLT5uYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxNb2RlKSk7DQorICAgIH0NCisNCisgICAgLy8gZmxvYXQgdmVyc2lvbg0KKyAgICBTdGF0dXMgRmlsbEVsbGlwc2UoSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdEYmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGaWxsRWxsaXBzZShicnVzaCwgcmVjdC5YLCByZWN0LlksIHJlY3QuV2lkdGgsIHJlY3QuSGVpZ2h0KTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRmlsbEVsbGlwc2UoSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgaGVpZ2h0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBGaWxsRWxsaXBzZShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJydXNoLT5uYXRpdmVCcnVzaCwgeCwgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBpbnRlZ2VyIHZlcnNpb24NCisgICAgU3RhdHVzIEZpbGxFbGxpcHNlKElOIGNvbnN0IEJydXNoKiBicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3QmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGaWxsRWxsaXBzZShicnVzaCwgcmVjdC5YLCByZWN0LlksIHJlY3QuV2lkdGgsIHJlY3QuSGVpZ2h0KTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRmlsbEVsbGlwc2UoSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHgsDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBoZWlnaHQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEZpbGxFbGxpcHNlSShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicnVzaC0+bmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCkpOw0KKyAgICB9DQorDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIEZpbGxQaWUoSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiYgcmVjdCwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzdGFydEFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN3ZWVwQW5nbGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGaWxsUGllKGJydXNoLCByZWN0LlgsIHJlY3QuWSwgcmVjdC5XaWR0aCwgcmVjdC5IZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlLCBzd2VlcEFuZ2xlKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRmlsbFBpZShJTiBjb25zdCBCcnVzaCogYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeCwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzdGFydEFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN3ZWVwQW5nbGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEZpbGxQaWUobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJydXNoLT5uYXRpdmVCcnVzaCwgeCwgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgc3RhcnRBbmdsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dlZXBBbmdsZSkpOw0KKyAgICB9DQorDQorICAgIC8vIGludGVnZXIgdmVyc2lvbg0KKyAgICBTdGF0dXMgRmlsbFBpZShJTiBjb25zdCBCcnVzaCogYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3QmIHJlY3QsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3RhcnRBbmdsZSwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzd2VlcEFuZ2xlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRmlsbFBpZShicnVzaCwgcmVjdC5YLCByZWN0LlksIHJlY3QuV2lkdGgsIHJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZSwgc3dlZXBBbmdsZSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEZpbGxQaWUoSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICBJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgSU4gSU5UIHksDQorICAgICAgICAgICAgICAgICAgIElOIElOVCB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgSU4gSU5UIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzdGFydEFuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN3ZWVwQW5nbGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEZpbGxQaWVJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJ1c2gtPm5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2VlcEFuZ2xlKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEZpbGxQYXRoKElOIGNvbnN0IEJydXNoKiBicnVzaCwNCisgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzUGF0aCogcGF0aCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRmlsbFBhdGgobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicnVzaC0+bmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLT5uYXRpdmVQYXRoKSk7DQorICAgIH0NCisNCisgICAgLy8gZmxvYXQgdmVyc2lvbg0KKyAgICBTdGF0dXMgRmlsbENsb3NlZEN1cnZlKElOIGNvbnN0IEJydXNoKiBicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludEYqIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEZpbGxDbG9zZWRDdXJ2ZShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicnVzaC0+bmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLCBjb3VudCkpOw0KKw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBGaWxsQ2xvc2VkQ3VydmUoSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBGaWxsTW9kZSBmaWxsTW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHRlbnNpb24gPSAwLjVmKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBGaWxsQ2xvc2VkQ3VydmUyKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicnVzaC0+bmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbnNpb24sIGZpbGxNb2RlKSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBGaWxsQ2xvc2VkQ3VydmUoSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50KiBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBGaWxsQ2xvc2VkQ3VydmVJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicnVzaC0+bmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRmlsbENsb3NlZEN1cnZlKElOIGNvbnN0IEJydXNoKiBicnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludCogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBGaWxsTW9kZSBmaWxsTW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHRlbnNpb24gPSAwLjVmKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBGaWxsQ2xvc2VkQ3VydmUySShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJydXNoLT5uYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uLCBmaWxsTW9kZSkpOw0KKyAgICB9DQorDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIEZpbGxSZWdpb24oSU4gY29uc3QgQnJ1c2gqIGJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWdpb24qIHJlZ2lvbikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRmlsbFJlZ2lvbihuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJ1c2gtPm5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tPm5hdGl2ZVJlZ2lvbikpOw0KKyAgICB9DQorDQorICAgIC8vIERyYXdTdHJpbmcgYW5kIE1lYXN1cmVTdHJpbmcNCisgICAgU3RhdHVzDQorICAgIERyYXdTdHJpbmcoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAgICAgICAgKnN0cmluZywNCisgICAgICAgIElOIElOVCAgICAgICAgICAgICAgICAgbGVuZ3RoLA0KKyAgICAgICAgSU4gY29uc3QgRm9udCAgICAgICAgICpmb250LA0KKyAgICAgICAgSU4gY29uc3QgUmVjdEYgICAgICAgICZsYXlvdXRSZWN0LA0KKyAgICAgICAgSU4gY29uc3QgU3RyaW5nRm9ybWF0ICpzdHJpbmdGb3JtYXQsDQorICAgICAgICBJTiBjb25zdCBCcnVzaCAgICAgICAgKmJydXNoDQorICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd1N0cmluZygNCisgICAgICAgICAgICBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICBzdHJpbmcsDQorICAgICAgICAgICAgbGVuZ3RoLA0KKyAgICAgICAgICAgIGZvbnQgPyBmb250LT5uYXRpdmVGb250IDogTlVMTCwNCisgICAgICAgICAgICAmbGF5b3V0UmVjdCwNCisgICAgICAgICAgICBzdHJpbmdGb3JtYXQgPyBzdHJpbmdGb3JtYXQtPm5hdGl2ZUZvcm1hdCA6IE5VTEwsDQorICAgICAgICAgICAgYnJ1c2ggPyBicnVzaC0+bmF0aXZlQnJ1c2ggOiBOVUxMDQorICAgICAgICApKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMNCisgICAgRHJhd1N0cmluZygNCisgICAgICAgIGNvbnN0IFdDSEFSICAgICAgICAqc3RyaW5nLA0KKyAgICAgICAgSU5UICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBjb25zdCBGb250ICAgICAgICAgKmZvbnQsDQorICAgICAgICBjb25zdCBQb2ludEYgICAgICAgJm9yaWdpbiwNCisgICAgICAgIGNvbnN0IEJydXNoICAgICAgICAqYnJ1c2gNCisgICAgKQ0KKyAgICB7DQorICAgICAgICBSZWN0RiByZWN0KG9yaWdpbi5YLCBvcmlnaW4uWSwgMC4wZiwgMC4wZik7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3U3RyaW5nKA0KKyAgICAgICAgICAgIG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgIHN0cmluZywNCisgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICAgICAgZm9udCA/IGZvbnQtPm5hdGl2ZUZvbnQgOiBOVUxMLA0KKyAgICAgICAgICAgICZyZWN0LA0KKyAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAgYnJ1c2ggPyBicnVzaC0+bmF0aXZlQnJ1c2ggOiBOVUxMDQorICAgICAgICApKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMNCisgICAgRHJhd1N0cmluZygNCisgICAgICAgIGNvbnN0IFdDSEFSICAgICAgICAqc3RyaW5nLA0KKyAgICAgICAgSU5UICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBjb25zdCBGb250ICAgICAgICAgKmZvbnQsDQorICAgICAgICBjb25zdCBQb2ludEYgICAgICAgJm9yaWdpbiwNCisgICAgICAgIGNvbnN0IFN0cmluZ0Zvcm1hdCAqc3RyaW5nRm9ybWF0LA0KKyAgICAgICAgY29uc3QgQnJ1c2ggICAgICAgICpicnVzaA0KKyAgICApDQorICAgIHsNCisgICAgICAgIFJlY3RGIHJlY3Qob3JpZ2luLlgsIG9yaWdpbi5ZLCAwLjBmLCAwLjBmKTsNCisNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdTdHJpbmcoDQorICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgc3RyaW5nLA0KKyAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgICAgICBmb250ID8gZm9udC0+bmF0aXZlRm9udCA6IE5VTEwsDQorICAgICAgICAgICAgJnJlY3QsDQorICAgICAgICAgICAgc3RyaW5nRm9ybWF0ID8gc3RyaW5nRm9ybWF0LT5uYXRpdmVGb3JtYXQgOiBOVUxMLA0KKyAgICAgICAgICAgIGJydXNoID8gYnJ1c2gtPm5hdGl2ZUJydXNoIDogTlVMTA0KKyAgICAgICAgKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzDQorICAgIE1lYXN1cmVTdHJpbmcoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAgICAgICAgKnN0cmluZywNCisgICAgICAgIElOIElOVCAgICAgICAgICAgICAgICAgbGVuZ3RoLA0KKyAgICAgICAgSU4gY29uc3QgRm9udCAgICAgICAgICpmb250LA0KKyAgICAgICAgSU4gY29uc3QgUmVjdEYgICAgICAgICZsYXlvdXRSZWN0LA0KKyAgICAgICAgSU4gY29uc3QgU3RyaW5nRm9ybWF0ICpzdHJpbmdGb3JtYXQsDQorICAgICAgICBPVVQgUmVjdEYgICAgICAgICAgICAgKmJvdW5kaW5nQm94LA0KKyAgICAgICAgT1VUIElOVCAgICAgICAgICAgICAgICpjb2RlcG9pbnRzRml0dGVkID0gMCwNCisgICAgICAgIE9VVCBJTlQgICAgICAgICAgICAgICAqbGluZXNGaWxsZWQgICAgICA9IDANCisgICAgKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBNZWFzdXJlU3RyaW5nKA0KKyAgICAgICAgICAgIG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgIHN0cmluZywNCisgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICAgICAgZm9udCA/IGZvbnQtPm5hdGl2ZUZvbnQgOiBOVUxMLA0KKyAgICAgICAgICAgICZsYXlvdXRSZWN0LA0KKyAgICAgICAgICAgIHN0cmluZ0Zvcm1hdCA/IHN0cmluZ0Zvcm1hdC0+bmF0aXZlRm9ybWF0IDogTlVMTCwNCisgICAgICAgICAgICBib3VuZGluZ0JveCwNCisgICAgICAgICAgICBjb2RlcG9pbnRzRml0dGVkLA0KKyAgICAgICAgICAgIGxpbmVzRmlsbGVkDQorICAgICAgICApKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMNCisgICAgTWVhc3VyZVN0cmluZygNCisgICAgICAgIElOIGNvbnN0IFdDSEFSICAgICAgICAqc3RyaW5nLA0KKyAgICAgICAgSU4gSU5UICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBJTiBjb25zdCBGb250ICAgICAgICAgKmZvbnQsDQorICAgICAgICBJTiBjb25zdCBTaXplRiAgICAgICAgJmxheW91dFJlY3RTaXplLA0KKyAgICAgICAgSU4gY29uc3QgU3RyaW5nRm9ybWF0ICpzdHJpbmdGb3JtYXQsDQorICAgICAgICBPVVQgU2l6ZUYgICAgICAgICAgICAgKnNpemUsDQorICAgICAgICBPVVQgSU5UICAgICAgICAgICAgICAgKmNvZGVwb2ludHNGaXR0ZWQgPSAwLA0KKyAgICAgICAgT1VUIElOVCAgICAgICAgICAgICAgICpsaW5lc0ZpbGxlZCAgICAgID0gMA0KKyAgICApIGNvbnN0DQorICAgIHsNCisgICAgICAgIFJlY3RGICAgbGF5b3V0UmVjdCgwLCAwLCBsYXlvdXRSZWN0U2l6ZS5XaWR0aCwgbGF5b3V0UmVjdFNpemUuSGVpZ2h0KTsNCisgICAgICAgIFJlY3RGICAgYm91bmRpbmdCb3g7DQorICAgICAgICBTdGF0dXMgIHN0YXR1czsNCisNCisgICAgICAgIGlmIChzaXplID09IE5VTEwpDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhJbnZhbGlkUGFyYW1ldGVyKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIHN0YXR1cyA9IFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwTWVhc3VyZVN0cmluZygNCisgICAgICAgICAgICBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICBzdHJpbmcsDQorICAgICAgICAgICAgbGVuZ3RoLA0KKyAgICAgICAgICAgIGZvbnQgPyBmb250LT5uYXRpdmVGb250IDogTlVMTCwNCisgICAgICAgICAgICAmbGF5b3V0UmVjdCwNCisgICAgICAgICAgICBzdHJpbmdGb3JtYXQgPyBzdHJpbmdGb3JtYXQtPm5hdGl2ZUZvcm1hdCA6IE5VTEwsDQorICAgICAgICAgICAgc2l6ZSA/ICZib3VuZGluZ0JveCA6IE5VTEwsDQorICAgICAgICAgICAgY29kZXBvaW50c0ZpdHRlZCwNCisgICAgICAgICAgICBsaW5lc0ZpbGxlZA0KKyAgICAgICAgKSk7DQorDQorICAgICAgICBpZiAoc2l6ZSAmJiBzdGF0dXMgPT0gT2spDQorICAgICAgICB7DQorICAgICAgICAgICAgc2l6ZS0+V2lkdGggID0gYm91bmRpbmdCb3guV2lkdGg7DQorICAgICAgICAgICAgc2l6ZS0+SGVpZ2h0ID0gYm91bmRpbmdCb3guSGVpZ2h0Ow0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMNCisgICAgTWVhc3VyZVN0cmluZygNCisgICAgICAgIElOIGNvbnN0IFdDSEFSICAgICAgICAqc3RyaW5nLA0KKyAgICAgICAgSU4gSU5UICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBJTiBjb25zdCBGb250ICAgICAgICAgKmZvbnQsDQorICAgICAgICBJTiBjb25zdCBQb2ludEYgICAgICAgJm9yaWdpbiwNCisgICAgICAgIElOIGNvbnN0IFN0cmluZ0Zvcm1hdCAqc3RyaW5nRm9ybWF0LA0KKyAgICAgICAgT1VUIFJlY3RGICAgICAgICAgICAgICpib3VuZGluZ0JveA0KKyAgICApIGNvbnN0DQorICAgIHsNCisgICAgICAgIFJlY3RGIHJlY3Qob3JpZ2luLlgsIG9yaWdpbi5ZLCAwLjBmLCAwLjBmKTsNCisNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcE1lYXN1cmVTdHJpbmcoDQorICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgc3RyaW5nLA0KKyAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgICAgICBmb250ID8gZm9udC0+bmF0aXZlRm9udCA6IE5VTEwsDQorICAgICAgICAgICAgJnJlY3QsDQorICAgICAgICAgICAgc3RyaW5nRm9ybWF0ID8gc3RyaW5nRm9ybWF0LT5uYXRpdmVGb3JtYXQgOiBOVUxMLA0KKyAgICAgICAgICAgIGJvdW5kaW5nQm94LA0KKyAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAgTlVMTA0KKyAgICAgICAgKSk7DQorICAgIH0NCisNCisNCisgICAgU3RhdHVzDQorICAgIE1lYXN1cmVTdHJpbmcoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAgKnN0cmluZywNCisgICAgICAgIElOIElOVCAgICAgICAgICAgbGVuZ3RoLA0KKyAgICAgICAgSU4gY29uc3QgRm9udCAgICpmb250LA0KKyAgICAgICAgSU4gY29uc3QgUmVjdEYgICZsYXlvdXRSZWN0LA0KKyAgICAgICAgT1VUIFJlY3RGICAgICAgICpib3VuZGluZ0JveA0KKyAgICApIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcE1lYXN1cmVTdHJpbmcoDQorICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgc3RyaW5nLA0KKyAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgICAgICBmb250ID8gZm9udC0+bmF0aXZlRm9udCA6IE5VTEwsDQorICAgICAgICAgICAgJmxheW91dFJlY3QsDQorICAgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgICBib3VuZGluZ0JveCwNCisgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgIE5VTEwNCisgICAgICAgICkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cw0KKyAgICBNZWFzdXJlU3RyaW5nKA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIgICpzdHJpbmcsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgIElOIGNvbnN0IEZvbnQgICAqZm9udCwNCisgICAgICAgIElOIGNvbnN0IFBvaW50RiAmb3JpZ2luLA0KKyAgICAgICAgT1VUIFJlY3RGICAgICAgICpib3VuZGluZ0JveA0KKyAgICApIGNvbnN0DQorICAgIHsNCisgICAgICAgIFJlY3RGIHJlY3Qob3JpZ2luLlgsIG9yaWdpbi5ZLCAwLjBmLCAwLjBmKTsNCisNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcE1lYXN1cmVTdHJpbmcoDQorICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgc3RyaW5nLA0KKyAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgICAgICBmb250ID8gZm9udC0+bmF0aXZlRm9udCA6IE5VTEwsDQorICAgICAgICAgICAgJnJlY3QsDQorICAgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgICBib3VuZGluZ0JveCwNCisgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgIE5VTEwNCisgICAgICAgICkpOw0KKyAgICB9DQorDQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzE3NDM0MA0KKyAgICBTdGF0dXMNCisgICAgTWVhc3VyZUNoYXJhY3RlclJhbmdlcygNCisgICAgICAgIElOIGNvbnN0IFdDSEFSICAgICAgICAqc3RyaW5nLA0KKyAgICAgICAgSU4gSU5UICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBJTiBjb25zdCBGb250ICAgICAgICAgKmZvbnQsDQorICAgICAgICBJTiBjb25zdCBSZWN0RiAgICAgICAgJmxheW91dFJlY3QsDQorICAgICAgICBJTiBjb25zdCBTdHJpbmdGb3JtYXQgKnN0cmluZ0Zvcm1hdCwNCisgICAgICAgIElOIElOVCAgICAgICAgICAgICAgICAgcmVnaW9uQ291bnQsDQorICAgICAgICBPVVQgUmVnaW9uICAgICAgICAgICAgKnJlZ2lvbnMNCisgICAgKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoIXJlZ2lvbnMgfHwgcmVnaW9uQ291bnQgPD0gMCkNCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm4gSW52YWxpZFBhcmFtZXRlcjsNCisgICAgICAgIH0NCisNCisgICAgICAgIEdwUmVnaW9uICoqbmF0aXZlUmVnaW9ucyA9IG5ldyBHcFJlZ2lvbiogW3JlZ2lvbkNvdW50XTsNCisNCisgICAgICAgIGlmICghbmF0aXZlUmVnaW9ucykNCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm4gT3V0T2ZNZW1vcnk7DQorICAgICAgICB9DQorDQorICAgICAgICBmb3IgKElOVCBpID0gMDsgaSA8IHJlZ2lvbkNvdW50OyBpKyspDQorICAgICAgICB7DQorICAgICAgICAgICAgbmF0aXZlUmVnaW9uc1tpXSA9IHJlZ2lvbnNbaV0ubmF0aXZlUmVnaW9uOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgU3RhdHVzIHN0YXR1cyA9IFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwTWVhc3VyZUNoYXJhY3RlclJhbmdlcygNCisgICAgICAgICAgICBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICBzdHJpbmcsDQorICAgICAgICAgICAgbGVuZ3RoLA0KKyAgICAgICAgICAgIGZvbnQgPyBmb250LT5uYXRpdmVGb250IDogTlVMTCwNCisgICAgICAgICAgICBsYXlvdXRSZWN0LA0KKyAgICAgICAgICAgIHN0cmluZ0Zvcm1hdCA/IHN0cmluZ0Zvcm1hdC0+bmF0aXZlRm9ybWF0IDogTlVMTCwNCisgICAgICAgICAgICByZWdpb25Db3VudCwNCisgICAgICAgICAgICBuYXRpdmVSZWdpb25zDQorICAgICAgICApKTsNCisNCisgICAgICAgIGRlbGV0ZSBbXSBuYXRpdmVSZWdpb25zOw0KKw0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKyNlbmRpZg0KKw0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTc0MzQwDQorICAgIFN0YXR1cw0KKyAgICBNZWFzdXJlU3RyaW5nUmVnaW9uKA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIgICAgICAgICpzdHJpbmcsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgIElOIGNvbnN0IEZvbnQgICAgICAgICAqZm9udCwNCisgICAgICAgIElOIGNvbnN0IFJlY3RGICAgICAgICAmbGF5b3V0UmVjdCwNCisgICAgICAgIElOIGNvbnN0IFN0cmluZ0Zvcm1hdCAqc3RyaW5nRm9ybWF0LA0KKyAgICAgICAgSU4gSU5UICAgICAgICAgICAgICAgICBmaXJzdENoYXJhY3RlckluZGV4LA0KKyAgICAgICAgSU4gSU5UICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJDb3VudCwNCisgICAgICAgIE9VVCBSZWdpb24gICAgICAgICAgICAqcmVnaW9uDQorICAgICkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKHJlZ2lvbiA9PSBOVUxMKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4gKFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwTWVhc3VyZVN0cmluZ1JlZ2lvbigNCisgICAgICAgICAgICBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICBzdHJpbmcsDQorICAgICAgICAgICAgbGVuZ3RoLA0KKyAgICAgICAgICAgIGZvbnQgPyBmb250LT5uYXRpdmVGb250IDogTlVMTCwNCisgICAgICAgICAgICBsYXlvdXRSZWN0LA0KKyAgICAgICAgICAgIHN0cmluZ0Zvcm1hdCA/IHN0cmluZ0Zvcm1hdC0+bmF0aXZlRm9ybWF0IDogTlVMTCwNCisgICAgICAgICAgICBmaXJzdENoYXJhY3RlckluZGV4LA0KKyAgICAgICAgICAgIGNoYXJhY3RlckNvdW50LA0KKyAgICAgICAgICAgIHJlZ2lvbi0+bmF0aXZlUmVnaW9uKSkpOw0KKyAgICB9DQorI2VuZGlmDQorDQorICAgIFN0YXR1cyBEcmF3RHJpdmVyU3RyaW5nKA0KKyAgICAgICAgSU4gY29uc3QgVUlOVDE2ICAqdGV4dCwNCisgICAgICAgIElOIElOVCAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgIElOIGNvbnN0IEZvbnQgICAgKmZvbnQsDQorICAgICAgICBJTiBjb25zdCBCcnVzaCAgICpicnVzaCwNCisgICAgICAgIElOIGNvbnN0IFBvaW50RiAgKnBvc2l0aW9ucywNCisgICAgICAgIElOIElOVCAgICAgICAgICAgIGZsYWdzLA0KKyAgICAgICAgSU4gY29uc3QgTWF0cml4ICAgICAgICAqbWF0cml4DQorICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0RyaXZlclN0cmluZygNCisgICAgICAgICAgICBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICB0ZXh0LA0KKyAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgICAgICBmb250ID8gZm9udC0+bmF0aXZlRm9udCA6IE5VTEwsDQorICAgICAgICAgICAgYnJ1c2ggPyBicnVzaC0+bmF0aXZlQnJ1c2ggOiBOVUxMLA0KKyAgICAgICAgICAgIHBvc2l0aW9ucywNCisgICAgICAgICAgICBmbGFncywNCisgICAgICAgICAgICBtYXRyaXggPyBtYXRyaXgtPm5hdGl2ZU1hdHJpeCA6IE5VTEwNCisgICAgICAgICkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBNZWFzdXJlRHJpdmVyU3RyaW5nKA0KKyAgICAgICAgSU4gY29uc3QgVUlOVDE2ICAqdGV4dCwNCisgICAgICAgIElOIElOVCAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgIElOIGNvbnN0IEZvbnQgICAgKmZvbnQsDQorICAgICAgICBJTiBjb25zdCBQb2ludEYgICpwb3NpdGlvbnMsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICBmbGFncywNCisgICAgICAgIElOIGNvbnN0IE1hdHJpeCAgICAgICAgKm1hdHJpeCwNCisgICAgICAgIE9VVCBSZWN0RiAgICAgICAgKmJvdW5kaW5nQm94DQorICAgICkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwTWVhc3VyZURyaXZlclN0cmluZygNCisgICAgICAgICAgICBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICB0ZXh0LA0KKyAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgICAgICBmb250ID8gZm9udC0+bmF0aXZlRm9udCA6IE5VTEwsDQorICAgICAgICAgICAgcG9zaXRpb25zLA0KKyAgICAgICAgICAgIGZsYWdzLA0KKyAgICAgICAgICAgIG1hdHJpeCA/IG1hdHJpeC0+bmF0aXZlTWF0cml4IDogTlVMTCwNCisgICAgICAgICAgICBib3VuZGluZ0JveA0KKyAgICAgICAgKSk7DQorICAgIH0NCisNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE2ODc3Mg0KKyAgICBTdGF0dXMgRHJpdmVyU3RyaW5nUG9pbnRUb0NvZGVwb2ludCgNCisgICAgICAgIElOIGNvbnN0IFVJTlQxNiAgKnRleHQsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBJTiBjb25zdCBGb250ICAgICpmb250LA0KKyAgICAgICAgSU4gY29uc3QgUG9pbnRGICAqcG9zaXRpb25zLA0KKyAgICAgICAgSU4gSU5UICAgICAgICAgICAgZmxhZ3MsDQorICAgICAgICBJTiBjb25zdCBNYXRyaXggICptYXRyaXgsDQorICAgICAgICBJTiBjb25zdCBQb2ludEYgICZoaXQsDQorICAgICAgICBPVVQgSU5UICAgICAgICAgICppbmRleCwNCisgICAgICAgIE9VVCBCT09MICAgICAgICAgKnJpZ2h0RWRnZSwNCisgICAgICAgIE9VVCBSRUFMICAgICAgICAgKmRpc3RhbmNlDQorICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJpdmVyU3RyaW5nUG9pbnRUb0NvZGVwb2ludCgNCisgICAgICAgICAgICBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICB0ZXh0LA0KKyAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgICAgICBmb250ID8gZm9udC0+bmF0aXZlRm9udCA6IE5VTEwsDQorICAgICAgICAgICAgcG9zaXRpb25zLA0KKyAgICAgICAgICAgIGZsYWdzLA0KKyAgICAgICAgICAgIG1hdHJpeCA/IG1hdHJpeC0+bmF0aXZlTWF0cml4IDogTlVMTCwNCisgICAgICAgICAgICAmaGl0LA0KKyAgICAgICAgICAgIGluZGV4LA0KKyAgICAgICAgICAgIHJpZ2h0RWRnZSwNCisgICAgICAgICAgICBkaXN0YW5jZQ0KKyAgICAgICAgKSk7DQorICAgIH0NCisjZW5kaWYNCisNCisgICAgLy8gRHJhdyBhIGNhY2hlZCBiaXRtYXAgb24gdGhpcyBncmFwaGljcyBkZXN0aW5hdGlvbiBvZmZzZXQgYnkNCisgICAgLy8geCwgeS4gTm90ZSB0aGlzIHdpbGwgZmFpbCB3aXRoIFdyb25nU3RhdGUgaWYgdGhlIENhY2hlZEJpdG1hcA0KKyAgICAvLyBuYXRpdmUgZm9ybWF0IGRpZmZlcnMgZnJvbSB0aGlzIEdyYXBoaWNzLg0KKw0KKyAgICBTdGF0dXMgRHJhd0NhY2hlZEJpdG1hcChJTiBDYWNoZWRCaXRtYXAgKmNiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHkpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdDYWNoZWRCaXRtYXAoDQorICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgY2ItPm5hdGl2ZUNhY2hlZEJpdG1hcCwNCisgICAgICAgICAgICB4LCB5DQorICAgICAgICApKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogRHJhdyBpbWFnZXMgKGJvdGggYml0bWFwIGFuZCB2ZWN0b3IpDQorICAgICAqLw0KKyAgICAvLyBmbG9hdCB2ZXJzaW9uDQorICAgIFN0YXR1cyBEcmF3SW1hZ2UoSU4gSW1hZ2UqIGltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiYgcG9pbnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBEcmF3SW1hZ2UoaW1hZ2UsIHBvaW50LlgsIHBvaW50LlkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBEcmF3SW1hZ2UoSU4gSW1hZ2UqIGltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHkpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdJbWFnZShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0ltYWdlKElOIEltYWdlKiBpbWFnZSwgDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdEYmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBEcmF3SW1hZ2UoaW1hZ2UsIHJlY3QuWCwgcmVjdC5ZLCByZWN0LldpZHRoLCByZWN0LkhlaWdodCk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdJbWFnZShJTiBJbWFnZSogaW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB4LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgaGVpZ2h0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3SW1hZ2VSZWN0KG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBpbnRlZ2VyIHZlcnNpb24NCisgICAgU3RhdHVzIERyYXdJbWFnZShJTiBJbWFnZSogaW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnQmIHBvaW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRHJhd0ltYWdlKGltYWdlLCBwb2ludC5YLCBwb2ludC5ZKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0ltYWdlKElOIEltYWdlKiBpbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0ltYWdlSShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2UNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdJbWFnZShJTiBJbWFnZSogaW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdCYgcmVjdCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIERyYXdJbWFnZShpbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlksDQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuSGVpZ2h0KTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0ltYWdlKElOIEltYWdlKiBpbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGhlaWdodCkgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0ltYWdlUmVjdEkobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCkpOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBBZmZpbmUgb3IgcGVyc3BlY3RpdmUgYmx0DQorICAgICAqICBkZXN0UG9pbnRzLmxlbmd0aCA9IDM6IHJlY3QgPT4gcGFyYWxsZWxvZ3JhbQ0KKyAgICAgKiAgICAgIGRlc3RQb2ludHNbMF0gPD0+IHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgc291cmNlIHJlY3RhbmdsZQ0KKyAgICAgKiAgICAgIGRlc3RQb2ludHNbMV0gPD0+IHRvcC1yaWdodCBjb3JuZXINCisgICAgICogICAgICBkZXN0UG9pbnRzWzJdIDw9PiBib3R0b20tbGVmdCBjb3JuZXINCisgICAgICogIGRlc3RQb2ludHMubGVuZ3RoID0gNDogcmVjdCA9PiBxdWFkDQorICAgICAqICAgICAgZGVzdFBvaW50c1szXSA8PT4gYm90dG9tLXJpZ2h0IGNvcm5lcg0KKyAgICAgKg0KKyAgICAgKiAgQG5vdGVzIFBlcnNwZWN0aXZlIGJsdCBvbmx5IHdvcmtzIGZvciBiaXRtYXAgaW1hZ2VzLg0KKyAgICAgKi8NCisgICAgU3RhdHVzIERyYXdJbWFnZShJTiBJbWFnZSogaW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnRGKiBkZXN0UG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgaWYgKGNvdW50ICE9IDMgJiYgY291bnQgIT0gNCkNCisgICAgICAgICAgICByZXR1cm4gU2V0U3RhdHVzKEludmFsaWRQYXJhbWV0ZXIpOw0KKw0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRHJhd0ltYWdlUG9pbnRzKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQb2ludHMsIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIERyYXdJbWFnZShJTiBJbWFnZSogaW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnQqIGRlc3RQb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICBpZiAoY291bnQgIT0gMyAmJiBjb3VudCAhPSA0KQ0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3SW1hZ2VQb2ludHNJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFdlIG5lZWQgYW5vdGhlciBzZXQgb2YgbWV0aG9kcyBzaW1pbGFyIHRvIHRoZSBvbmVzIGFib3ZlDQorICAgICAqIHRoYXQgdGFrZSBhbiBhZGRpdGlvbmFsIFJlY3QgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlDQorICAgICAqIHBvcnRpb24gb2YgdGhlIHNvdXJjZSBpbWFnZSB0byBiZSBkcmF3bi4NCisgICAgICovDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIERyYXdJbWFnZShJTiBJbWFnZSogaW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB4LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHNyY3gsDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzcmN5LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3Jjd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzcmNoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgSU4gVW5pdCBzcmNVbml0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3SW1hZ2VQb2ludFJlY3QobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2UNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmN4LCBzcmN5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3dpZHRoLCBzcmNoZWlnaHQsIHNyY1VuaXQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0ltYWdlKElOIEltYWdlKiBpbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiYgZGVzdFJlY3QsDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzcmN4LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3JjeSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHNyY3dpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3JjaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFVuaXQgc3JjVW5pdCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBJbWFnZUF0dHJpYnV0ZXMqIGltYWdlQXR0cmlidXRlcyA9IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgSU4gRHJhd0ltYWdlQWJvcnQgY2FsbGJhY2sgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFZPSUQqIGNhbGxiYWNrRGF0YSA9IE5VTEwpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdJbWFnZVJlY3RSZWN0KG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2UNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LlgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVjdC5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJlY3QuV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVjdC5IZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmN4LCBzcmN5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jjd2lkdGgsIHNyY2hlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUF0dHJpYnV0ZXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlQXR0cmlidXRlcy0+bmF0aXZlSW1hZ2VBdHRyDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRHJhd0ltYWdlKElOIEltYWdlKiBpbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludEYqIGRlc3RQb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3JjeCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHNyY3ksDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzcmN3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHNyY2hlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBVbml0IHNyY1VuaXQsDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzKiBpbWFnZUF0dHJpYnV0ZXMgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIERyYXdJbWFnZUFib3J0IGNhbGxiYWNrID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBWT0lEKiBjYWxsYmFja0RhdGEgPSBOVUxMKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3SW1hZ2VQb2ludHNSZWN0KG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQb2ludHMsIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmN4LCBzcmN5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmN3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNVbml0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUF0dHJpYnV0ZXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VBdHRyaWJ1dGVzLT5uYXRpdmVJbWFnZUF0dHINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSkpOw0KKyAgICB9DQorDQorICAgIC8vIGludGVnZXIgdmVyc2lvbg0KKyAgICBTdGF0dXMgRHJhd0ltYWdlKElOIEltYWdlKiBpbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgc3JjeCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgc3JjeSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgc3Jjd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHNyY2hlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBVbml0IHNyY1VuaXQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdJbWFnZVBvaW50UmVjdEkobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jjd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2hlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjVW5pdCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBEcmF3SW1hZ2UoSU4gSW1hZ2UqIGltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3QmIGRlc3RSZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBzcmN4LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBzcmN5LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBzcmN3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgc3JjaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFVuaXQgc3JjVW5pdCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBJbWFnZUF0dHJpYnV0ZXMqIGltYWdlQXR0cmlidXRlcyA9IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgSU4gRHJhd0ltYWdlQWJvcnQgY2FsbGJhY2sgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIFZPSUQqIGNhbGxiYWNrRGF0YSA9IE5VTEwpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcERyYXdJbWFnZVJlY3RSZWN0SShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVjdC5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJlY3QuV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmN3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjVW5pdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUF0dHJpYnV0ZXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlQXR0cmlidXRlcy0+bmF0aXZlSW1hZ2VBdHRyDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBEcmF3SW1hZ2UoSU4gSW1hZ2UqIGltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50KiBkZXN0UG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgc3JjeCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgc3JjeSwNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgc3Jjd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHNyY2hlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBVbml0IHNyY1VuaXQsDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzKiBpbWFnZUF0dHJpYnV0ZXMgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIERyYXdJbWFnZUFib3J0IGNhbGxiYWNrID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICBJTiBWT0lEKiBjYWxsYmFja0RhdGEgPSBOVUxMKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBEcmF3SW1hZ2VQb2ludHNSZWN0SShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmN4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3dpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjVW5pdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlQXR0cmlidXRlcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VBdHRyaWJ1dGVzLT5uYXRpdmVJbWFnZUF0dHINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSkpOw0KKyAgICB9DQorDQorICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgZm9yIHBsYXlpbmcgYW4gRU1GKyB0byBhIGdyYXBoaWNzDQorICAgIC8vIHZpYSB0aGUgZW51bWVyYXRpb24gaW50ZXJmYWNlLiAgRWFjaCByZWNvcmQgb2YgdGhlIEVNRisgaXMNCisgICAgLy8gc2VudCB0byB0aGUgY2FsbGJhY2sgKGFsb25nIHdpdGggdGhlIGNhbGxiYWNrRGF0YSkuICBUaGVuDQorICAgIC8vIHRoZSBjYWxsYmFjayBjYW4gaW52b2tlIHRoZSBNZXRhZmlsZTo6UGxheVJlY29yZCBtZXRob2QNCisgICAgLy8gdG8gcGxheSB0aGUgcGFydGljdWxhciByZWNvcmQuDQorDQorICAgIFN0YXR1cw0KKyAgICBFbnVtZXJhdGVNZXRhZmlsZSgNCisgICAgICAgIElOIGNvbnN0IE1ldGFmaWxlICogICAgICAgIG1ldGFmaWxlLA0KKyAgICAgICAgSU4gY29uc3QgUG9pbnRGICYgICAgICAgICAgZGVzdFBvaW50LA0KKyAgICAgICAgSU4gRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgICAgICBJTiBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEgICAgPSBOVUxMLA0KKyAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzICogICAgICAgaW1hZ2VBdHRyaWJ1dGVzID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBFbnVtZXJhdGVNZXRhZmlsZURlc3RQb2ludCgNCisgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgKGNvbnN0IEdwTWV0YWZpbGUgKikobWV0YWZpbGUgPyBtZXRhZmlsZS0+bmF0aXZlSW1hZ2U6TlVMTCksDQorICAgICAgICAgICAgICAgICAgICBkZXN0UG9pbnQsDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywNCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgICAgICAgICAgICAgICAgIGltYWdlQXR0cmlidXRlcyA/IGltYWdlQXR0cmlidXRlcy0+bmF0aXZlSW1hZ2VBdHRyIDogTlVMTCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cw0KKyAgICBFbnVtZXJhdGVNZXRhZmlsZSgNCisgICAgICAgIElOIGNvbnN0IE1ldGFmaWxlICogICAgICAgIG1ldGFmaWxlLA0KKyAgICAgICAgSU4gY29uc3QgUG9pbnQgJiAgICAgICAgICAgZGVzdFBvaW50LA0KKyAgICAgICAgSU4gRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgICAgICBJTiBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEgICAgPSBOVUxMLA0KKyAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzICogICAgICAgaW1hZ2VBdHRyaWJ1dGVzID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBFbnVtZXJhdGVNZXRhZmlsZURlc3RQb2ludEkoDQorICAgICAgICAgICAgICAgICAgICBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgIChjb25zdCBHcE1ldGFmaWxlICopKG1ldGFmaWxlID8gbWV0YWZpbGUtPm5hdGl2ZUltYWdlOk5VTEwpLA0KKyAgICAgICAgICAgICAgICAgICAgZGVzdFBvaW50LA0KKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEsDQorICAgICAgICAgICAgICAgICAgICBpbWFnZUF0dHJpYnV0ZXMgPyBpbWFnZUF0dHJpYnV0ZXMtPm5hdGl2ZUltYWdlQXR0ciA6IE5VTEwpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMNCisgICAgRW51bWVyYXRlTWV0YWZpbGUoDQorICAgICAgICBJTiBjb25zdCBNZXRhZmlsZSAqICAgICAgICBtZXRhZmlsZSwNCisgICAgICAgIElOIGNvbnN0IFJlY3RGICYgICAgICAgICAgIGRlc3RSZWN0LA0KKyAgICAgICAgSU4gRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgICAgICBJTiBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEgICAgPSBOVUxMLA0KKyAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzICogICAgICAgaW1hZ2VBdHRyaWJ1dGVzID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBFbnVtZXJhdGVNZXRhZmlsZURlc3RSZWN0KA0KKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAoY29uc3QgR3BNZXRhZmlsZSAqKShtZXRhZmlsZSA/IG1ldGFmaWxlLT5uYXRpdmVJbWFnZTpOVUxMKSwNCisgICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEsDQorICAgICAgICAgICAgICAgICAgICBpbWFnZUF0dHJpYnV0ZXMgPyBpbWFnZUF0dHJpYnV0ZXMtPm5hdGl2ZUltYWdlQXR0ciA6IE5VTEwpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMNCisgICAgRW51bWVyYXRlTWV0YWZpbGUoDQorICAgICAgICBJTiBjb25zdCBNZXRhZmlsZSAqICAgICAgICBtZXRhZmlsZSwNCisgICAgICAgIElOIGNvbnN0IFJlY3QgJiAgICAgICAgICAgIGRlc3RSZWN0LA0KKyAgICAgICAgSU4gRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgICAgICBJTiBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEgICAgPSBOVUxMLA0KKyAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzICogICAgICAgaW1hZ2VBdHRyaWJ1dGVzID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBFbnVtZXJhdGVNZXRhZmlsZURlc3RSZWN0SSgNCisgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgKGNvbnN0IEdwTWV0YWZpbGUgKikobWV0YWZpbGUgPyBtZXRhZmlsZS0+bmF0aXZlSW1hZ2U6TlVMTCksDQorICAgICAgICAgICAgICAgICAgICBkZXN0UmVjdCwNCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLA0KKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VBdHRyaWJ1dGVzID8gaW1hZ2VBdHRyaWJ1dGVzLT5uYXRpdmVJbWFnZUF0dHIgOiBOVUxMKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzDQorICAgIEVudW1lcmF0ZU1ldGFmaWxlKA0KKyAgICAgICAgSU4gY29uc3QgTWV0YWZpbGUgKiAgICAgICAgbWV0YWZpbGUsDQorICAgICAgICBJTiBjb25zdCBQb2ludEYgKiAgICAgICAgICBkZXN0UG9pbnRzLA0KKyAgICAgICAgSU4gSU5UICAgICAgICAgICAgICAgICAgICAgY291bnQsDQorICAgICAgICBJTiBFbnVtZXJhdGVNZXRhZmlsZVByb2MgICBjYWxsYmFjaywNCisgICAgICAgIElOIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSAgICA9IE5VTEwsDQorICAgICAgICBJTiBjb25zdCBJbWFnZUF0dHJpYnV0ZXMgKiAgICAgICBpbWFnZUF0dHJpYnV0ZXMgPSBOVUxMDQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEVudW1lcmF0ZU1ldGFmaWxlRGVzdFBvaW50cygNCisgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgKGNvbnN0IEdwTWV0YWZpbGUgKikobWV0YWZpbGUgPyBtZXRhZmlsZS0+bmF0aXZlSW1hZ2U6TlVMTCksDQorICAgICAgICAgICAgICAgICAgICBkZXN0UG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgY291bnQsDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywNCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgICAgICAgICAgICAgICAgIGltYWdlQXR0cmlidXRlcyA/IGltYWdlQXR0cmlidXRlcy0+bmF0aXZlSW1hZ2VBdHRyIDogTlVMTCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cw0KKyAgICBFbnVtZXJhdGVNZXRhZmlsZSgNCisgICAgICAgIElOIGNvbnN0IE1ldGFmaWxlICogICAgICAgIG1ldGFmaWxlLA0KKyAgICAgICAgSU4gY29uc3QgUG9pbnQgKiAgICAgICAgICAgZGVzdFBvaW50cywNCisgICAgICAgIElOIElOVCAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgSU4gRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgICAgICBJTiBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEgICAgPSBOVUxMLA0KKyAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzICogICAgICAgaW1hZ2VBdHRyaWJ1dGVzID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBFbnVtZXJhdGVNZXRhZmlsZURlc3RQb2ludHNJKA0KKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAoY29uc3QgR3BNZXRhZmlsZSAqKShtZXRhZmlsZSA/IG1ldGFmaWxlLT5uYXRpdmVJbWFnZTpOVUxMKSwNCisgICAgICAgICAgICAgICAgICAgIGRlc3RQb2ludHMsDQorICAgICAgICAgICAgICAgICAgICBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLA0KKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VBdHRyaWJ1dGVzID8gaW1hZ2VBdHRyaWJ1dGVzLT5uYXRpdmVJbWFnZUF0dHIgOiBOVUxMKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzDQorICAgIEVudW1lcmF0ZU1ldGFmaWxlKA0KKyAgICAgICAgSU4gY29uc3QgTWV0YWZpbGUgKiAgICAgICAgbWV0YWZpbGUsDQorICAgICAgICBJTiBjb25zdCBQb2ludEYgJiAgICAgICAgICBkZXN0UG9pbnQsDQorICAgICAgICBJTiBjb25zdCBSZWN0RiAmICAgICAgICAgICBzcmNSZWN0LA0KKyAgICAgICAgSU4gVW5pdCAgICAgICAgICAgICAgICAgICAgc3JjVW5pdCwNCisgICAgICAgIElOIEVudW1lcmF0ZU1ldGFmaWxlUHJvYyAgIGNhbGxiYWNrLA0KKyAgICAgICAgSU4gVk9JRCAqICAgICAgICAgICAgICAgICAgY2FsbGJhY2tEYXRhICAgID0gTlVMTCwNCisgICAgICAgIElOIGNvbnN0IEltYWdlQXR0cmlidXRlcyAqICAgICAgIGltYWdlQXR0cmlidXRlcyA9IE5VTEwNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRW51bWVyYXRlTWV0YWZpbGVTcmNSZWN0RGVzdFBvaW50KA0KKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAoY29uc3QgR3BNZXRhZmlsZSAqKShtZXRhZmlsZSA/IG1ldGFmaWxlLT5uYXRpdmVJbWFnZTpOVUxMKSwNCisgICAgICAgICAgICAgICAgICAgIGRlc3RQb2ludCwNCisgICAgICAgICAgICAgICAgICAgIHNyY1JlY3QsDQorICAgICAgICAgICAgICAgICAgICBzcmNVbml0LA0KKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEsDQorICAgICAgICAgICAgICAgICAgICBpbWFnZUF0dHJpYnV0ZXMgPyBpbWFnZUF0dHJpYnV0ZXMtPm5hdGl2ZUltYWdlQXR0ciA6IE5VTEwpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMNCisgICAgRW51bWVyYXRlTWV0YWZpbGUoDQorICAgICAgICBJTiBjb25zdCBNZXRhZmlsZSAqICAgICAgICBtZXRhZmlsZSwNCisgICAgICAgIElOIGNvbnN0IFBvaW50ICYgICAgICAgICAgIGRlc3RQb2ludCwNCisgICAgICAgIElOIGNvbnN0IFJlY3QgJiAgICAgICAgICAgIHNyY1JlY3QsDQorICAgICAgICBJTiBVbml0ICAgICAgICAgICAgICAgICAgICBzcmNVbml0LA0KKyAgICAgICAgSU4gRW51bWVyYXRlTWV0YWZpbGVQcm9jICAgY2FsbGJhY2ssDQorICAgICAgICBJTiBWT0lEICogICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEgICAgPSBOVUxMLA0KKyAgICAgICAgSU4gY29uc3QgSW1hZ2VBdHRyaWJ1dGVzICogICAgICAgaW1hZ2VBdHRyaWJ1dGVzID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBFbnVtZXJhdGVNZXRhZmlsZVNyY1JlY3REZXN0UG9pbnRJKA0KKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAoY29uc3QgR3BNZXRhZmlsZSAqKShtZXRhZmlsZSA/IG1ldGFmaWxlLT5uYXRpdmVJbWFnZTpOVUxMKSwNCisgICAgICAgICAgICAgICAgICAgIGRlc3RQb2ludCwNCisgICAgICAgICAgICAgICAgICAgIHNyY1JlY3QsDQorICAgICAgICAgICAgICAgICAgICBzcmNVbml0LA0KKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEsDQorICAgICAgICAgICAgICAgICAgICBpbWFnZUF0dHJpYnV0ZXMgPyBpbWFnZUF0dHJpYnV0ZXMtPm5hdGl2ZUltYWdlQXR0ciA6IE5VTEwpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMNCisgICAgRW51bWVyYXRlTWV0YWZpbGUoDQorICAgICAgICBJTiBjb25zdCBNZXRhZmlsZSAqICAgICAgICBtZXRhZmlsZSwNCisgICAgICAgIElOIGNvbnN0IFJlY3RGICYgICAgICAgICAgIGRlc3RSZWN0LA0KKyAgICAgICAgSU4gY29uc3QgUmVjdEYgJiAgICAgICAgICAgc3JjUmVjdCwNCisgICAgICAgIElOIFVuaXQgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgICAgICBJTiBFbnVtZXJhdGVNZXRhZmlsZVByb2MgICBjYWxsYmFjaywNCisgICAgICAgIElOIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSAgICA9IE5VTEwsDQorICAgICAgICBJTiBjb25zdCBJbWFnZUF0dHJpYnV0ZXMgKiAgICAgICBpbWFnZUF0dHJpYnV0ZXMgPSBOVUxMDQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEVudW1lcmF0ZU1ldGFmaWxlU3JjUmVjdERlc3RSZWN0KA0KKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAoY29uc3QgR3BNZXRhZmlsZSAqKShtZXRhZmlsZSA/IG1ldGFmaWxlLT5uYXRpdmVJbWFnZTpOVUxMKSwNCisgICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgc3JjUmVjdCwNCisgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywNCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgICAgICAgICAgICAgICAgIGltYWdlQXR0cmlidXRlcyA/IGltYWdlQXR0cmlidXRlcy0+bmF0aXZlSW1hZ2VBdHRyIDogTlVMTCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cw0KKyAgICBFbnVtZXJhdGVNZXRhZmlsZSgNCisgICAgICAgIElOIGNvbnN0IE1ldGFmaWxlICogICAgICAgIG1ldGFmaWxlLA0KKyAgICAgICAgSU4gY29uc3QgUmVjdCAmICAgICAgICAgICAgZGVzdFJlY3QsDQorICAgICAgICBJTiBjb25zdCBSZWN0ICYgICAgICAgICAgICBzcmNSZWN0LA0KKyAgICAgICAgSU4gVW5pdCAgICAgICAgICAgICAgICAgICAgc3JjVW5pdCwNCisgICAgICAgIElOIEVudW1lcmF0ZU1ldGFmaWxlUHJvYyAgIGNhbGxiYWNrLA0KKyAgICAgICAgSU4gVk9JRCAqICAgICAgICAgICAgICAgICAgY2FsbGJhY2tEYXRhICAgID0gTlVMTCwNCisgICAgICAgIElOIGNvbnN0IEltYWdlQXR0cmlidXRlcyAqICAgICAgIGltYWdlQXR0cmlidXRlcyA9IE5VTEwNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRW51bWVyYXRlTWV0YWZpbGVTcmNSZWN0RGVzdFJlY3RJKA0KKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAoY29uc3QgR3BNZXRhZmlsZSAqKShtZXRhZmlsZSA/IG1ldGFmaWxlLT5uYXRpdmVJbWFnZTpOVUxMKSwNCisgICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgc3JjUmVjdCwNCisgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywNCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgICAgICAgICAgICAgICAgIGltYWdlQXR0cmlidXRlcyA/IGltYWdlQXR0cmlidXRlcy0+bmF0aXZlSW1hZ2VBdHRyIDogTlVMTCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cw0KKyAgICBFbnVtZXJhdGVNZXRhZmlsZSgNCisgICAgICAgIElOIGNvbnN0IE1ldGFmaWxlICogICAgICAgIG1ldGFmaWxlLA0KKyAgICAgICAgSU4gY29uc3QgUG9pbnRGICogICAgICAgICAgZGVzdFBvaW50cywNCisgICAgICAgIElOIElOVCAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgSU4gY29uc3QgUmVjdEYgJiAgICAgICAgICAgc3JjUmVjdCwNCisgICAgICAgIElOIFVuaXQgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgICAgICBJTiBFbnVtZXJhdGVNZXRhZmlsZVByb2MgICBjYWxsYmFjaywNCisgICAgICAgIElOIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSAgICA9IE5VTEwsDQorICAgICAgICBJTiBjb25zdCBJbWFnZUF0dHJpYnV0ZXMgKiAgICAgICBpbWFnZUF0dHJpYnV0ZXMgPSBOVUxMDQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEVudW1lcmF0ZU1ldGFmaWxlU3JjUmVjdERlc3RQb2ludHMoDQorICAgICAgICAgICAgICAgICAgICBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgIChjb25zdCBHcE1ldGFmaWxlICopKG1ldGFmaWxlID8gbWV0YWZpbGUtPm5hdGl2ZUltYWdlOk5VTEwpLA0KKyAgICAgICAgICAgICAgICAgICAgZGVzdFBvaW50cywNCisgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgc3JjUmVjdCwNCisgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywNCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSwNCisgICAgICAgICAgICAgICAgICAgIGltYWdlQXR0cmlidXRlcyA/IGltYWdlQXR0cmlidXRlcy0+bmF0aXZlSW1hZ2VBdHRyIDogTlVMTCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cw0KKyAgICBFbnVtZXJhdGVNZXRhZmlsZSgNCisgICAgICAgIElOIGNvbnN0IE1ldGFmaWxlICogICAgICAgIG1ldGFmaWxlLA0KKyAgICAgICAgSU4gY29uc3QgUG9pbnQgKiAgICAgICAgICAgZGVzdFBvaW50cywNCisgICAgICAgIElOIElOVCAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgSU4gY29uc3QgUmVjdCAmICAgICAgICAgICAgc3JjUmVjdCwNCisgICAgICAgIElOIFVuaXQgICAgICAgICAgICAgICAgICAgIHNyY1VuaXQsDQorICAgICAgICBJTiBFbnVtZXJhdGVNZXRhZmlsZVByb2MgICBjYWxsYmFjaywNCisgICAgICAgIElOIFZPSUQgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRGF0YSAgICA9IE5VTEwsDQorICAgICAgICBJTiBjb25zdCBJbWFnZUF0dHJpYnV0ZXMgKiAgICAgICBpbWFnZUF0dHJpYnV0ZXMgPSBOVUxMDQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEVudW1lcmF0ZU1ldGFmaWxlU3JjUmVjdERlc3RQb2ludHNJKA0KKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAoY29uc3QgR3BNZXRhZmlsZSAqKShtZXRhZmlsZSA/IG1ldGFmaWxlLT5uYXRpdmVJbWFnZTpOVUxMKSwNCisgICAgICAgICAgICAgICAgICAgIGRlc3RQb2ludHMsDQorICAgICAgICAgICAgICAgICAgICBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgIHNyY1JlY3QsDQorICAgICAgICAgICAgICAgICAgICBzcmNVbml0LA0KKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssDQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0RhdGEsDQorICAgICAgICAgICAgICAgICAgICBpbWFnZUF0dHJpYnV0ZXMgPyBpbWFnZUF0dHJpYnV0ZXMtPm5hdGl2ZUltYWdlQXR0ciA6IE5VTEwpKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICAqIENsaXBwaW5nIHJlZ2lvbiBvcGVyYXRpb25zDQorICAgICAgKg0KKyAgICAgICogQG5vdGVzIFNpbXBseSBpbmNyZWRpYmxlIHJlZHVuZGFuY3kgaGVyZS4NCisgICAgICAqLw0KKyAgICBTdGF0dXMgU2V0Q2xpcChJTiBjb25zdCBHcmFwaGljcyogZywNCisgICAgICAgICAgICAgICAgICAgSU4gQ29tYmluZU1vZGUgY29tYmluZU1vZGUgPSBDb21iaW5lTW9kZVJlcGxhY2UpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldENsaXBHcmFwaGljcyhuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLT5uYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lTW9kZSkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRDbGlwKElOIGNvbnN0IFJlY3RGJiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICBJTiBDb21iaW5lTW9kZSBjb21iaW5lTW9kZSA9IENvbWJpbmVNb2RlUmVwbGFjZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0Q2xpcFJlY3QobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlgsIHJlY3QuWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuV2lkdGgsIHJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZU1vZGUpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0Q2xpcChJTiBjb25zdCBSZWN0JiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICBJTiBDb21iaW5lTW9kZSBjb21iaW5lTW9kZSA9IENvbWJpbmVNb2RlUmVwbGFjZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0Q2xpcFJlY3RJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWCwgcmVjdC5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuV2lkdGgsIHJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVNb2RlKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldENsaXAoSU4gY29uc3QgR3JhcGhpY3NQYXRoKiBwYXRoLA0KKyAgICAgICAgICAgICAgICAgICBJTiBDb21iaW5lTW9kZSBjb21iaW5lTW9kZSA9IENvbWJpbmVNb2RlUmVwbGFjZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0Q2xpcFBhdGgobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLT5uYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZU1vZGUpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0Q2xpcChJTiBjb25zdCBSZWdpb24qIHJlZ2lvbiwNCisgICAgICAgICAgICAgICAgICAgSU4gQ29tYmluZU1vZGUgY29tYmluZU1vZGUgPSBDb21iaW5lTW9kZVJlcGxhY2UpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldENsaXBSZWdpb24obmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+bmF0aXZlUmVnaW9uLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lTW9kZSkpOw0KKyAgICB9DQorDQorICAgIC8vIFRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIG90aGVyIFNldENsaXAgbWV0aG9kcyBiZWNhdXNlIGl0IGFzc3VtZXMNCisgICAgLy8gdGhhdCB0aGUgSFJHTiBpcyBhbHJlYWR5IGluIGRldmljZSB1bml0cywgc28gaXQgZG9lc24ndCB0cmFuc2Zvcm0NCisgICAgLy8gdGhlIGNvb3JkaW5hdGVzIGluIHRoZSBIUkdOLg0KKyAgICBTdGF0dXMgU2V0Q2xpcChJTiBIUkdOIGhSZ24sDQorICAgICAgICAgICAgICAgICAgIElOIENvbWJpbmVNb2RlIGNvbWJpbmVNb2RlID0gQ29tYmluZU1vZGVSZXBsYWNlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRDbGlwSHJnbihuYXRpdmVHcmFwaGljcywgaFJnbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVNb2RlKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEludGVyc2VjdENsaXAoSU4gY29uc3QgUmVjdEYmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldENsaXBSZWN0KG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5YLCByZWN0LlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LldpZHRoLCByZWN0LkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmVNb2RlSW50ZXJzZWN0KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEludGVyc2VjdENsaXAoSU4gY29uc3QgUmVjdCYgcmVjdCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0Q2xpcFJlY3RJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWCwgcmVjdC5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuV2lkdGgsIHJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmVNb2RlSW50ZXJzZWN0KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEludGVyc2VjdENsaXAoSU4gY29uc3QgUmVnaW9uKiByZWdpb24pDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldENsaXBSZWdpb24obmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+bmF0aXZlUmVnaW9uLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lTW9kZUludGVyc2VjdCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBFeGNsdWRlQ2xpcChJTiBjb25zdCBSZWN0RiYgcmVjdCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0Q2xpcFJlY3QobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlgsIHJlY3QuWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuV2lkdGgsIHJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZU1vZGVFeGNsdWRlKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEV4Y2x1ZGVDbGlwKElOIGNvbnN0IFJlY3QmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldENsaXBSZWN0SShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlgsIHJlY3QuWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LldpZHRoLCByZWN0LkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lTW9kZUV4Y2x1ZGUpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRXhjbHVkZUNsaXAoSU4gY29uc3QgUmVnaW9uKiByZWdpb24pDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldENsaXBSZWdpb24obmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+bmF0aXZlUmVnaW9uLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lTW9kZUV4Y2x1ZGUpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgUmVzZXRDbGlwKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUmVzZXRDbGlwKG5hdGl2ZUdyYXBoaWNzKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFRyYW5zbGF0ZUNsaXAoSU4gUkVBTCBkeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBkeSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwVHJhbnNsYXRlQ2xpcChuYXRpdmVHcmFwaGljcywgZHgsIGR5KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFRyYW5zbGF0ZUNsaXAoSU4gSU5UIGR4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgZHkpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFRyYW5zbGF0ZUNsaXBJKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHgsIGR5KSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqICBHZXRDbGlwIHJlZ2lvbiBmcm9tIGdyYXBoaWNzIGNvbnRleHQNCisgICAgICovDQorICAgIFN0YXR1cyBHZXRDbGlwKE9VVCBSZWdpb24qIHJlZ2lvbikgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0Q2xpcChuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLT5uYXRpdmVSZWdpb24pKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogSGl0IHRlc3Rpbmcgb3BlcmF0aW9ucw0KKyAgICAgKi8NCisgICAgU3RhdHVzIEdldENsaXBCb3VuZHMoT1VUIFJlY3RGKiByZWN0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRDbGlwQm91bmRzKG5hdGl2ZUdyYXBoaWNzLCByZWN0KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldENsaXBCb3VuZHMoT1VUIFJlY3QqIHJlY3QpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldENsaXBCb3VuZHNJKG5hdGl2ZUdyYXBoaWNzLCByZWN0KSk7DQorICAgIH0NCisNCisgICAgQk9PTCBJc0NsaXBFbXB0eSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEJPT0wgYm9vbG4gPSBGQUxTRTsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwSXNDbGlwRW1wdHkobmF0aXZlR3JhcGhpY3MsICZib29sbikpOw0KKw0KKyAgICAgICAgcmV0dXJuIGJvb2xuOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRWaXNpYmxlQ2xpcEJvdW5kcyhPVVQgUmVjdEYgKnJlY3QpIGNvbnN0DQorICAgIHsNCisNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFZpc2libGVDbGlwQm91bmRzKG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRWaXNpYmxlQ2xpcEJvdW5kcyhPVVQgUmVjdCAqcmVjdCkgY29uc3QNCisgICAgew0KKyAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRWaXNpYmxlQ2xpcEJvdW5kc0kobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0KSk7DQorICAgIH0NCisNCisgICAgQk9PTCBJc1Zpc2libGVDbGlwRW1wdHkoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBCT09MIGJvb2xuID0gRkFMU0U7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzVmlzaWJsZUNsaXBFbXB0eShuYXRpdmVHcmFwaGljcywgJmJvb2xuKSk7DQorDQorICAgICAgICByZXR1cm4gYm9vbG47DQorICAgIH0NCisNCisgICAgQk9PTCBJc1Zpc2libGUoSU4gSU5UIHgsDQorICAgICAgICAgICAgICAgICAgIElOIElOVCB5KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gSXNWaXNpYmxlKFBvaW50KHgseSkpOw0KKyAgICB9DQorDQorICAgIEJPT0wgSXNWaXNpYmxlKElOIGNvbnN0IFBvaW50JiBwb2ludCkgY29uc3QNCisgICAgew0KKyAgICAgICAgQk9PTCBib29sbiA9IEZBTFNFOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJc1Zpc2libGVQb2ludEkobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludC5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQuWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZib29sbikpOw0KKw0KKyAgICAgICAgcmV0dXJuIGJvb2xuOw0KKyAgICB9DQorDQorICAgIEJPT0wgSXNWaXNpYmxlKElOIElOVCB4LA0KKyAgICAgICAgICAgICAgICAgICBJTiBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgSU4gSU5UIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICBJTiBJTlQgaGVpZ2h0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gSXNWaXNpYmxlKFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOw0KKyAgICB9DQorDQorICAgIEJPT0wgSXNWaXNpYmxlKElOIGNvbnN0IFJlY3QmIHJlY3QpIGNvbnN0DQorICAgIHsNCisNCisgICAgICAgIEJPT0wgYm9vbG4gPSBUUlVFOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJc1Zpc2libGVSZWN0SShuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuSGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYm9vbG4pKTsNCisgICAgICAgIHJldHVybiBib29sbjsNCisgICAgfQ0KKw0KKyAgICBCT09MIElzVmlzaWJsZShJTiBSRUFMIHgsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIElzVmlzaWJsZShQb2ludEYoeCwgeSkpOw0KKyAgICB9DQorDQorICAgIEJPT0wgSXNWaXNpYmxlKElOIGNvbnN0IFBvaW50RiYgcG9pbnQpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEJPT0wgYm9vbG4gPSBGQUxTRTsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwSXNWaXNpYmxlUG9pbnQobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LlgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZib29sbikpOw0KKw0KKyAgICAgICAgcmV0dXJuIGJvb2xuOw0KKyAgICB9DQorDQorICAgIEJPT0wgSXNWaXNpYmxlKElOIFJFQUwgeCwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIGhlaWdodCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIElzVmlzaWJsZShSZWN0Rih4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7DQorICAgIH0NCisNCisgICAgQk9PTCBJc1Zpc2libGUoSU4gY29uc3QgUmVjdEYmIHJlY3QpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEJPT0wgYm9vbG4gPSBUUlVFOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJc1Zpc2libGVSZWN0KG5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5XaWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYm9vbG4pKTsNCisgICAgICAgIHJldHVybiBib29sbjsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogU2F2ZS9yZXN0b3JlIGdyYXBoaWNzIHN0YXRlDQorICAgICAqLw0KKyAgICBHcmFwaGljc1N0YXRlIFNhdmUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBHcmFwaGljc1N0YXRlIGdzdGF0ZTsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2F2ZUdyYXBoaWNzKG5hdGl2ZUdyYXBoaWNzLCAmZ3N0YXRlKSk7DQorDQorICAgICAgICByZXR1cm4gZ3N0YXRlOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBSZXN0b3JlKElOIEdyYXBoaWNzU3RhdGUgZ3N0YXRlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBSZXN0b3JlR3JhcGhpY3MobmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N0YXRlKSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIEJlZ2luIGFuZCBlbmQgY29udGFpbmVyIGRyYXdpbmcNCisgICAgICovDQorICAgIEdyYXBoaWNzQ29udGFpbmVyIEJlZ2luQ29udGFpbmVyKElOIGNvbnN0IFJlY3RGICZkc3RyZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiAmc3JjcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gVW5pdCAgICAgICAgIHVuaXQpDQorICAgIHsNCisgICAgICAgIEdyYXBoaWNzQ29udGFpbmVyIHN0YXRlOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBCZWdpbkNvbnRhaW5lcihuYXRpdmVHcmFwaGljcywgJmRzdHJlY3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzcmNyZWN0LCB1bml0LCAmc3RhdGUpKTsNCisNCisgICAgICAgIHJldHVybiBzdGF0ZTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogQmVnaW4gYW5kIGVuZCBjb250YWluZXIgZHJhd2luZw0KKyAgICAgKi8NCisgICAgR3JhcGhpY3NDb250YWluZXIgQmVnaW5Db250YWluZXIoSU4gY29uc3QgUmVjdCAgICAmZHN0cmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdCAgICAmc3JjcmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gVW5pdCAgICAgICAgICAgdW5pdCkNCisgICAgew0KKyAgICAgICAgR3JhcGhpY3NDb250YWluZXIgc3RhdGU7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEJlZ2luQ29udGFpbmVySShuYXRpdmVHcmFwaGljcywgJmRzdHJlY3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3JjcmVjdCwgdW5pdCwgJnN0YXRlKSk7DQorDQorICAgICAgICByZXR1cm4gc3RhdGU7DQorICAgIH0NCisNCisgICAgR3JhcGhpY3NDb250YWluZXIgQmVnaW5Db250YWluZXIoKQ0KKyAgICB7DQorICAgICAgICBHcmFwaGljc0NvbnRhaW5lciBzdGF0ZTsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQmVnaW5Db250YWluZXIyKG5hdGl2ZUdyYXBoaWNzLCAmc3RhdGUpKTsNCisNCisgICAgICAgIHJldHVybiBzdGF0ZTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgRW5kQ29udGFpbmVyKElOIEdyYXBoaWNzQ29udGFpbmVyIHN0YXRlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBFbmRDb250YWluZXIobmF0aXZlR3JhcGhpY3MsIHN0YXRlKSk7DQorICAgIH0NCisNCisgICAgLy8gb25seSB2YWxpZCB3aGVuIHJlY29yZGluZyBtZXRhZmlsZXMNCisgICAgU3RhdHVzIEFkZE1ldGFmaWxlQ29tbWVudChJTiBjb25zdCBCWVRFICogZGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBVSU5UIHNpemVEYXRhKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDb21tZW50KG5hdGl2ZUdyYXBoaWNzLCBzaXplRGF0YSwgZGF0YSkpOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBHZXQvU2V0TGF5b3V0DQorICAgICAqIFN1cHBvcnQgZm9yIE1pZGRsZSBFYXN0IGxvY2FsaXphdGlvbiAocmlnaHQtdG8tbGVmdCBtaXJyb3JpbmcpDQorICAgICAqLw0KKyAgICBHcmFwaGljc0xheW91dCBHZXRMYXlvdXQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBHcmFwaGljc0xheW91dCBsYXlvdXQ7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEdyYXBoaWNzTGF5b3V0KG5hdGl2ZUdyYXBoaWNzLCAmbGF5b3V0KSk7DQorDQorICAgICAgICByZXR1cm4gbGF5b3V0Ow0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRMYXlvdXQoSU4gY29uc3QgR3JhcGhpY3NMYXlvdXQgbGF5b3V0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKA0KKyAgICAgICAgICAgIERsbEV4cG9ydHM6OkdkaXBTZXRHcmFwaGljc0xheW91dChuYXRpdmVHcmFwaGljcywgbGF5b3V0KQ0KKyAgICAgICAgKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgSFBBTEVUVEUgR2V0SGFsZnRvbmVQYWxldHRlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIERsbEV4cG9ydHM6OkdkaXBDcmVhdGVIYWxmdG9uZVBhbGV0dGUoKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0TGFzdFN0YXR1cygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIFN0YXR1cyBsYXN0U3RhdHVzID0gbGFzdFJlc3VsdDsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBPazsNCisNCisgICAgICAgIHJldHVybiBsYXN0U3RhdHVzOw0KKyAgICB9DQorDQorcHJvdGVjdGVkOg0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBHcmFwaGljcyhjb25zdCBHcmFwaGljcyAmKTsNCisgICAgR3JhcGhpY3MmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljcyAmKTsNCitwcm90ZWN0ZWQ6DQorDQorI2Vsc2UNCisNCisgICAgR3JhcGhpY3MoY29uc3QgR3JhcGhpY3MmIGdyYXBoaWNzKQ0KKyAgICB7DQorICAgICAgICBncmFwaGljczsNCisgICAgICAgIFNldFN0YXR1cyhOb3RJbXBsZW1lbnRlZCk7DQorICAgIH0NCisNCisgICAgR3JhcGhpY3MmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljcyYgZ3JhcGhpY3MpDQorICAgIHsNCisgICAgICAgIGdyYXBoaWNzOw0KKyAgICAgICAgU2V0U3RhdHVzKE5vdEltcGxlbWVudGVkKTsNCisgICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKw0KKyNlbmRpZg0KKw0KKyAgICBHcmFwaGljcyhHcEdyYXBoaWNzKiBncmFwaGljcykNCisgICAgew0KKyAgICAgICAgbGFzdFJlc3VsdCA9IE9rOw0KKyAgICAgICAgU2V0TmF0aXZlR3JhcGhpY3MoZ3JhcGhpY3MpOw0KKyAgICB9DQorDQorICAgIFZPSUQgU2V0TmF0aXZlR3JhcGhpY3MoR3BHcmFwaGljcyAqZ3JhcGhpY3MpDQorICAgIHsNCisgICAgICAgIHRoaXMtPm5hdGl2ZUdyYXBoaWNzID0gZ3JhcGhpY3M7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldFN0YXR1cyhTdGF0dXMgc3RhdHVzKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoc3RhdHVzICE9IE9rKQ0KKyAgICAgICAgICAgIHJldHVybiAobGFzdFJlc3VsdCA9IHN0YXR1cyk7DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KKyAgICAvLyBNZXRob2RzIG5lY2Vzc2FyeSB0byBzdWJjbGFzcyBHcmFwaGljcyBmb3IgZXh0ZW5zaW9uIHRlc3QuDQorDQorICAgIEdwR3JhcGhpY3MqIEdldE5hdGl2ZUdyYXBoaWNzKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHRoaXMtPm5hdGl2ZUdyYXBoaWNzOw0KKyAgICB9DQorDQorICAgIEdwUGVuKiBHZXROYXRpdmVQZW4oY29uc3QgUGVuKiBwZW4pDQorICAgIHsNCisgICAgICAgIHJldHVybiBwZW4tPm5hdGl2ZVBlbjsNCisgICAgfQ0KKw0KK3Byb3RlY3RlZDoNCisgICAgR3BHcmFwaGljcyogbmF0aXZlR3JhcGhpY3M7DQorICAgIG11dGFibGUgU3RhdHVzIGxhc3RSZXN1bHQ7DQorDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBFeHRyYSBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc1BhdGggbWV0aG9kcyB0aGF0IHVzZSBHcmFwaGljcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKy8qKg0KKyAqIEdldCB0aGUgYm91bmRzIG9mIHRoZSBwYXRoIG9iamVjdCB3aXRoIHRoZSBnaXZlbiB0cmFuc2Zvcm0uDQorICogVGhpcyBpcyBub3QgYWx3YXlzIHRoZSB0aWdodGVzdCBib3VuZHMuDQorICovDQorDQoraW5saW5lIFN0YXR1cw0KK0dyYXBoaWNzUGF0aDo6R2V0Qm91bmRzKA0KKyAgICBPVVQgUmVjdEYqIGJvdW5kcywNCisgICAgSU4gY29uc3QgTWF0cml4KiBtYXRyaXgsDQorICAgIElOIGNvbnN0IFBlbiogcGVuKSBjb25zdA0KK3sNCisgICAgR3BNYXRyaXgqIG5hdGl2ZU1hdHJpeCA9IE5VTEw7DQorICAgIEdwUGVuKiBuYXRpdmVQZW4gPSBOVUxMOw0KKw0KKyAgICBpZiAobWF0cml4KQ0KKyAgICAgICAgbmF0aXZlTWF0cml4ID0gbWF0cml4LT5uYXRpdmVNYXRyaXg7DQorDQorICAgIGlmIChwZW4pDQorICAgICAgICBuYXRpdmVQZW4gPSBwZW4tPm5hdGl2ZVBlbjsNCisNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGF0aFdvcmxkQm91bmRzKG5hdGl2ZVBhdGgsIGJvdW5kcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVNYXRyaXgsIG5hdGl2ZVBlbikpOw0KK30NCisNCisvLyBpbnRlZ2VyIHZlcnNpb24NCitpbmxpbmUgU3RhdHVzDQorR3JhcGhpY3NQYXRoOjpHZXRCb3VuZHMoDQorICAgIE9VVCBSZWN0KiBib3VuZHMsDQorICAgIElOIGNvbnN0IE1hdHJpeCogbWF0cml4LA0KKyAgICBJTiBjb25zdCBQZW4qIHBlbg0KKykgY29uc3QNCit7DQorICAgIEdwTWF0cml4KiBuYXRpdmVNYXRyaXggPSBOVUxMOw0KKyAgICBHcFBlbiogbmF0aXZlUGVuID0gTlVMTDsNCisNCisgICAgaWYgKG1hdHJpeCkNCisgICAgICAgIG5hdGl2ZU1hdHJpeCA9IG1hdHJpeC0+bmF0aXZlTWF0cml4Ow0KKw0KKyAgICBpZiAocGVuKQ0KKyAgICAgICAgbmF0aXZlUGVuID0gcGVuLT5uYXRpdmVQZW47DQorDQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhXb3JsZEJvdW5kc0kobmF0aXZlUGF0aCwgYm91bmRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVNYXRyaXgsIG5hdGl2ZVBlbikpOw0KK30NCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBIaXQgdGVzdGluZyBvcGVyYXRpb25zDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQoraW5saW5lIEJPT0wNCitHcmFwaGljc1BhdGg6OklzVmlzaWJsZSgNCisgICAgSU4gUkVBTCB4LA0KKyAgICBJTiBSRUFMIHksDQorICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnKSBjb25zdA0KK3sNCisgICBCT09MIGJvb2xuID0gRkFMU0U7DQorDQorICAgR3BHcmFwaGljcyogbmF0aXZlR3JhcGhpY3MgPSBOVUxMOw0KKw0KKyAgIGlmIChnKQ0KKyAgICAgICBuYXRpdmVHcmFwaGljcyA9IGctPm5hdGl2ZUdyYXBoaWNzOw0KKw0KKyAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwSXNWaXNpYmxlUGF0aFBvaW50KG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvb2xuKSk7DQorICAgcmV0dXJuIGJvb2xuOw0KK30NCisNCitpbmxpbmUgQk9PTA0KK0dyYXBoaWNzUGF0aDo6SXNWaXNpYmxlKA0KKyAgICBJTiBJTlQgeCwNCisgICAgSU4gSU5UIHksDQorICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnKSBjb25zdA0KK3sNCisgICBCT09MIGJvb2xuID0gRkFMU0U7DQorDQorICAgR3BHcmFwaGljcyogbmF0aXZlR3JhcGhpY3MgPSBOVUxMOw0KKw0KKyAgIGlmIChnKQ0KKyAgICAgICBuYXRpdmVHcmFwaGljcyA9IGctPm5hdGl2ZUdyYXBoaWNzOw0KKw0KKyAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwSXNWaXNpYmxlUGF0aFBvaW50SShuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LCB5LCBuYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvb2xuKSk7DQorICAgcmV0dXJuIGJvb2xuOw0KK30NCisNCitpbmxpbmUgQk9PTA0KK0dyYXBoaWNzUGF0aDo6SXNPdXRsaW5lVmlzaWJsZSgNCisgICAgSU4gUkVBTCB4LA0KKyAgICBJTiBSRUFMIHksDQorICAgIElOIGNvbnN0IFBlbiogcGVuLA0KKyAgICBJTiBjb25zdCBHcmFwaGljcyogZykgY29uc3QNCit7DQorICAgIEJPT0wgYm9vbG4gPSBGQUxTRTsNCisNCisgICAgR3BHcmFwaGljcyogbmF0aXZlR3JhcGhpY3MgPSBOVUxMOw0KKyAgICBHcFBlbiogbmF0aXZlUGVuID0gTlVMTDsNCisNCisgICAgaWYoZykNCisgICAgICAgIG5hdGl2ZUdyYXBoaWNzID0gZy0+bmF0aXZlR3JhcGhpY3M7DQorICAgIGlmKHBlbikNCisgICAgICAgIG5hdGl2ZVBlbiA9IHBlbi0+bmF0aXZlUGVuOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzT3V0bGluZVZpc2libGVQYXRoUG9pbnQobmF0aXZlUGF0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsIHksIG5hdGl2ZVBlbiwgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYm9vbG4pKTsNCisgICAgcmV0dXJuIGJvb2xuOw0KK30NCisNCitpbmxpbmUgQk9PTA0KK0dyYXBoaWNzUGF0aDo6SXNPdXRsaW5lVmlzaWJsZSgNCisgICAgSU4gSU5UIHgsDQorICAgIElOIElOVCB5LA0KKyAgICBJTiBjb25zdCBQZW4qIHBlbiwNCisgICAgSU4gY29uc3QgR3JhcGhpY3MqIGcpIGNvbnN0DQorew0KKyAgICBCT09MIGJvb2xuID0gRkFMU0U7DQorDQorICAgIEdwR3JhcGhpY3MqIG5hdGl2ZUdyYXBoaWNzID0gTlVMTDsNCisgICAgR3BQZW4qIG5hdGl2ZVBlbiA9IE5VTEw7DQorDQorICAgIGlmKGcpDQorICAgICAgICBuYXRpdmVHcmFwaGljcyA9IGctPm5hdGl2ZUdyYXBoaWNzOw0KKyAgICBpZihwZW4pDQorICAgICAgICBuYXRpdmVQZW4gPSBwZW4tPm5hdGl2ZVBlbjsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJc091dGxpbmVWaXNpYmxlUGF0aFBvaW50SShuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsIHksIG5hdGl2ZVBlbiwgbmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvb2xuKSk7DQorICAgIHJldHVybiBib29sbjsNCit9DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0hlYWRlcnMuaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNIZWFkZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1YzRkMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNIZWFkZXJzLmgKQEAgLTAsMCArMSw3OTMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqDQorKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwgTWljcm9zb2Z0IENvcnAuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyoNCisqIE1vZHVsZSBOYW1lOg0KKyoNCisqICAgR2RpcGx1c0hlYWRlcnMuaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgR0RJKyBOYXRpdmUgQysrIHB1YmxpYyBoZWFkZXIgZmlsZQ0KKyoNCitcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfR0RJUExVU0hFQURFUlNfSA0KKyNkZWZpbmUgX0dESVBMVVNIRUFERVJTX0gNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgcmVnaW9ucw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisvLyAgSW5jbHVkZSB0aGUgY2xhc3MgZGVjbGFyYXRpb25zIGhlcmUgYW5kIGhhdmUgaW5saW5lIGNsYXNzIGltcGxlbWVudGF0aW9uDQorLy8gIGluIHNlcGFyYXRlIGZpbGUgdG8gYXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlcy4NCisNCitjbGFzcyBSZWdpb24gOiBwdWJsaWMgR2RpcGx1c0Jhc2UNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3M7DQorDQorICAgIFJlZ2lvbigpOw0KKyAgICBSZWdpb24oSU4gY29uc3QgUmVjdEYmIHJlY3QpOw0KKyAgICBSZWdpb24oSU4gY29uc3QgUmVjdCYgcmVjdCk7DQorICAgIFJlZ2lvbihJTiBjb25zdCBHcmFwaGljc1BhdGgqIHBhdGgpOw0KKyAgICBSZWdpb24oSU4gY29uc3QgQllURSogcmVnaW9uRGF0YSwgSU4gSU5UIHNpemUpOw0KKyAgICBSZWdpb24oSU4gSFJHTiBoUmduKTsNCisgICAgc3RhdGljIFJlZ2lvbiogRnJvbUhSR04oSU4gSFJHTiBoUmduKTsNCisNCisgICAgflJlZ2lvbigpOw0KKyAgICBSZWdpb24qIENsb25lKCkgY29uc3Q7DQorDQorICAgIFN0YXR1cyBNYWtlSW5maW5pdGUoKTsNCisgICAgU3RhdHVzIE1ha2VFbXB0eSgpOw0KKw0KKyAgICAvLyBHZXQgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBuZWVkZWQgZm9yIHRoZSBHZXREYXRhIG1ldGhvZA0KKyAgICBVSU5UIEdldERhdGFTaXplKCkgY29uc3Q7DQorDQorICAgIC8vIGJ1ZmZlciAgICAgLSB3aGVyZSB0byBwdXQgdGhlIGRhdGENCisgICAgLy8gYnVmZmVyU2l6ZSAtIGhvdyBiaWcgdGhlIGJ1ZmZlciBpcyAoc2hvdWxkIGJlIGF0IGxlYXN0IGFzIGJpZyBhcyBHZXREYXRhU2l6ZSgpKQ0KKyAgICAvLyBzaXplRmlsbGVkIC0gaWYgbm90IE5VTEwsIHRoaXMgaXMgYW4gT1VUIHBhcmFtIHRoYXQgc2F5cyBob3cgbWFueSBieXRlcw0KKyAgICAvLyAgICAgICAgICAgICAgb2YgZGF0YSB3ZXJlIHdyaXR0ZW4gdG8gdGhlIGJ1ZmZlci4NCisgICAgU3RhdHVzIEdldERhdGEoT1VUIEJZVEUqIGJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgSU4gVUlOVCBidWZmZXJTaXplLA0KKyAgICAgICAgICAgICAgICAgICBPVVQgVUlOVCogc2l6ZUZpbGxlZCA9IE5VTEwpIGNvbnN0Ow0KKw0KKyAgICBTdGF0dXMgSW50ZXJzZWN0KElOIGNvbnN0IFJlY3QmIHJlY3QpOw0KKyAgICBTdGF0dXMgSW50ZXJzZWN0KElOIGNvbnN0IFJlY3RGJiByZWN0KTsNCisgICAgU3RhdHVzIEludGVyc2VjdChJTiBjb25zdCBHcmFwaGljc1BhdGgqIHBhdGgpOw0KKyAgICBTdGF0dXMgSW50ZXJzZWN0KElOIGNvbnN0IFJlZ2lvbiogcmVnaW9uKTsNCisgICAgU3RhdHVzIFVuaW9uKElOIGNvbnN0IFJlY3QmIHJlY3QpOw0KKyAgICBTdGF0dXMgVW5pb24oSU4gY29uc3QgUmVjdEYmIHJlY3QpOw0KKyAgICBTdGF0dXMgVW5pb24oSU4gY29uc3QgR3JhcGhpY3NQYXRoKiBwYXRoKTsNCisgICAgU3RhdHVzIFVuaW9uKElOIGNvbnN0IFJlZ2lvbiogcmVnaW9uKTsNCisgICAgU3RhdHVzIFhvcihJTiBjb25zdCBSZWN0JiByZWN0KTsNCisgICAgU3RhdHVzIFhvcihJTiBjb25zdCBSZWN0RiYgcmVjdCk7DQorICAgIFN0YXR1cyBYb3IoSU4gY29uc3QgR3JhcGhpY3NQYXRoKiBwYXRoKTsNCisgICAgU3RhdHVzIFhvcihJTiBjb25zdCBSZWdpb24qIHJlZ2lvbik7DQorICAgIFN0YXR1cyBFeGNsdWRlKElOIGNvbnN0IFJlY3QmIHJlY3QpOw0KKyAgICBTdGF0dXMgRXhjbHVkZShJTiBjb25zdCBSZWN0RiYgcmVjdCk7DQorICAgIFN0YXR1cyBFeGNsdWRlKElOIGNvbnN0IEdyYXBoaWNzUGF0aCogcGF0aCk7DQorICAgIFN0YXR1cyBFeGNsdWRlKElOIGNvbnN0IFJlZ2lvbiogcmVnaW9uKTsNCisgICAgU3RhdHVzIENvbXBsZW1lbnQoSU4gY29uc3QgUmVjdCYgcmVjdCk7DQorICAgIFN0YXR1cyBDb21wbGVtZW50KElOIGNvbnN0IFJlY3RGJiByZWN0KTsNCisgICAgU3RhdHVzIENvbXBsZW1lbnQoSU4gY29uc3QgR3JhcGhpY3NQYXRoKiBwYXRoKTsNCisgICAgU3RhdHVzIENvbXBsZW1lbnQoSU4gY29uc3QgUmVnaW9uKiByZWdpb24pOw0KKyAgICBTdGF0dXMgVHJhbnNsYXRlKElOIFJFQUwgZHgsDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBkeSk7DQorICAgIFN0YXR1cyBUcmFuc2xhdGUoSU4gSU5UIGR4LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCBkeSk7DQorICAgIFN0YXR1cyBUcmFuc2Zvcm0oSU4gY29uc3QgTWF0cml4KiBtYXRyaXgpOw0KKw0KKyAgICBTdGF0dXMgR2V0Qm91bmRzKE9VVCBSZWN0KiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnKSBjb25zdDsNCisNCisgICAgU3RhdHVzIEdldEJvdW5kcyhPVVQgUmVjdEYqIHJlY3QsDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgR3JhcGhpY3MqIGcpIGNvbnN0Ow0KKw0KKyAgICBIUkdOICAgR2V0SFJHTiAgKElOIGNvbnN0IEdyYXBoaWNzICogZykgY29uc3Q7DQorDQorICAgIEJPT0wgSXNFbXB0eShJTiBjb25zdCBHcmFwaGljcyAqZykgY29uc3Q7DQorICAgIEJPT0wgSXNJbmZpbml0ZShJTiBjb25zdCBHcmFwaGljcyAqZykgY29uc3Q7DQorDQorICAgIEJPT0wgSXNWaXNpYmxlKElOIElOVCB4LA0KKyAgICAgICAgICAgICAgICAgICBJTiBJTlQgeSwNCisgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgR3JhcGhpY3MqIGcgPSBOVUxMKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gSXNWaXNpYmxlKFBvaW50KHgsIHkpLCBnKTsNCisgICAgfQ0KKw0KKyAgICBCT09MIElzVmlzaWJsZShJTiBjb25zdCBQb2ludCYgcG9pbnQsDQorICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnID0gTlVMTCkgY29uc3Q7DQorDQorICAgIEJPT0wgSXNWaXNpYmxlKElOIFJFQUwgeCwNCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5LA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljcyogZyA9IE5VTEwpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBJc1Zpc2libGUoUG9pbnRGKHgsIHkpLCBnKTsNCisgICAgfQ0KKw0KKyAgICBCT09MIElzVmlzaWJsZShJTiBjb25zdCBQb2ludEYmIHBvaW50LA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljcyogZyA9IE5VTEwpIGNvbnN0Ow0KKw0KKyAgICBCT09MIElzVmlzaWJsZShJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgSU4gSU5UIHksDQorICAgICAgICAgICAgICAgICAgIElOIElOVCB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgSU4gSU5UIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgR3JhcGhpY3MqIGcpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBJc1Zpc2libGUoUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgZyk7DQorICAgIH0NCisNCisgICAgQk9PTCBJc1Zpc2libGUoSU4gY29uc3QgUmVjdCYgcmVjdCwNCisgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgR3JhcGhpY3MqIGcgPSBOVUxMKSBjb25zdDsNCisNCisgICAgQk9PTCBJc1Zpc2libGUoSU4gUkVBTCB4LA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHksDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljcyogZyA9IE5VTEwpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBJc1Zpc2libGUoUmVjdEYoeCwgeSwgd2lkdGgsIGhlaWdodCksIGcpOw0KKyAgICB9DQorDQorICAgIEJPT0wgSXNWaXNpYmxlKElOIGNvbnN0IFJlY3RGJiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljcyogZyA9IE5VTEwpIGNvbnN0Ow0KKw0KKyAgICBCT09MIEVxdWFscyhJTiBjb25zdCBSZWdpb24qIHJlZ2lvbiwNCisgICAgICAgICAgICAgICAgSU4gY29uc3QgR3JhcGhpY3MqIGcpIGNvbnN0Ow0KKw0KKyAgICBVSU5UIEdldFJlZ2lvblNjYW5zQ291bnQoSU4gY29uc3QgTWF0cml4KiBtYXRyaXgpIGNvbnN0Ow0KKyAgICBTdGF0dXMgR2V0UmVnaW9uU2NhbnMoSU4gY29uc3QgTWF0cml4KiBtYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBPVVQgUmVjdEYqIHJlY3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgT1VUIElOVCogY291bnQpIGNvbnN0Ow0KKyAgICBTdGF0dXMgR2V0UmVnaW9uU2NhbnMoSU4gY29uc3QgTWF0cml4KiBtYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBPVVQgUmVjdCogIHJlY3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgT1VUIElOVCogY291bnQpIGNvbnN0Ow0KKyAgICBTdGF0dXMgR2V0TGFzdFN0YXR1cygpIGNvbnN0Ow0KKw0KK3Byb3RlY3RlZDoNCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMjUwOTMyDQorDQorcHJpdmF0ZToNCisgICAgUmVnaW9uKGNvbnN0IFJlZ2lvbiAmcmVnaW9uKTsNCisgICAgUmVnaW9uJiBvcGVyYXRvcj0oY29uc3QgUmVnaW9uICZyZWdpb24pOw0KK3Byb3RlY3RlZDoNCisNCisjZWxzZQ0KKyAgICBSZWdpb24oY29uc3QgUmVnaW9uICZyZWdpb24pDQorICAgIHsNCisgICAgICAgIHJlZ2lvbjsgLy8gcmVmZXJlbmNlIHBhcmFtZXRlcg0KKyAgICAgICAgU2V0U3RhdHVzKE5vdEltcGxlbWVudGVkKTsNCisgICAgfQ0KKw0KKyAgICBSZWdpb24mIG9wZXJhdG9yPShjb25zdCBSZWdpb24gJnJlZ2lvbikNCisgICAgew0KKyAgICAgICByZWdpb247ICAvLyByZWZlcmVuY2UgcGFyYW1ldGVyDQorICAgICAgIFNldFN0YXR1cyhOb3RJbXBsZW1lbnRlZCk7DQorICAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0KKyNlbmRpZg0KKw0KKyAgICBTdGF0dXMgU2V0U3RhdHVzKFN0YXR1cyBzdGF0dXMpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmIChzdGF0dXMgIT0gT2spDQorICAgICAgICAgICAgcmV0dXJuIChsYXN0UmVzdWx0ID0gc3RhdHVzKTsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICByZXR1cm4gc3RhdHVzOw0KKyAgICB9DQorDQorICAgIFJlZ2lvbihHcFJlZ2lvbiogbmF0aXZlUmVnaW9uKTsNCisNCisgICAgVk9JRCBTZXROYXRpdmVSZWdpb24oR3BSZWdpb24qIG5hdGl2ZVJlZ2lvbik7DQorDQorcHJvdGVjdGVkOg0KKyAgICBHcFJlZ2lvbiogbmF0aXZlUmVnaW9uOw0KKyAgICBtdXRhYmxlIFN0YXR1cyBsYXN0UmVzdWx0Ow0KK307DQorDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIEZvbnRGYW1pbHkNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorY2xhc3MgRm9udEZhbWlseSA6IHB1YmxpYyBHZGlwbHVzQmFzZQ0KK3sNCitwdWJsaWM6DQorICAgIGZyaWVuZCBjbGFzcyBGb250Ow0KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3M7DQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc1BhdGg7DQorICAgIGZyaWVuZCBjbGFzcyBGb250Q29sbGVjdGlvbjsNCisNCisgICAgRm9udEZhbWlseSgpOw0KKw0KKyAgICBGb250RmFtaWx5KA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIgICAgICAgICAgKm5hbWUsDQorICAgICAgICBJTiBjb25zdCBGb250Q29sbGVjdGlvbiAqZm9udENvbGxlY3Rpb24gPSBOVUxMDQorICAgICk7DQorDQorICAgIH5Gb250RmFtaWx5KCk7DQorDQorICAgIHN0YXRpYyBjb25zdCBGb250RmFtaWx5ICpHZW5lcmljU2Fuc1NlcmlmKCk7DQorICAgIHN0YXRpYyBjb25zdCBGb250RmFtaWx5ICpHZW5lcmljU2VyaWYoKTsNCisgICAgc3RhdGljIGNvbnN0IEZvbnRGYW1pbHkgKkdlbmVyaWNNb25vc3BhY2UoKTsNCisNCisgICAgU3RhdHVzIEdldEZhbWlseU5hbWUoDQorICAgICAgICBPVVQgV0NIQVIgICAgICAgIG5hbWVbTEZfRkFDRVNJWkVdLA0KKyAgICAgICAgSU4gTEFOR0lEICAgICAgICBsYW5ndWFnZSA9IDANCisgICAgKSBjb25zdDsNCisNCisvLyAgQ29weSBvcGVyYXRvcg0KKyAgICBGb250RmFtaWx5ICogQ2xvbmUoKSBjb25zdDsNCisNCisgICAgQk9PTCAgICBJc0F2YWlsYWJsZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAobmF0aXZlRmFtaWx5ICE9IE5VTEwpOw0KKyAgICB9Ow0KKw0KKyAgICBCT09MICAgIElzU3R5bGVBdmFpbGFibGUoSU4gSU5UIHN0eWxlKSBjb25zdDsNCisNCisgICAgVUlOVDE2ICBHZXRFbUhlaWdodCAgICAgKElOIElOVCBzdHlsZSkgY29uc3Q7DQorICAgIFVJTlQxNiAgR2V0Q2VsbEFzY2VudCAgIChJTiBJTlQgc3R5bGUpIGNvbnN0Ow0KKyAgICBVSU5UMTYgIEdldENlbGxEZXNjZW50ICAoSU4gSU5UIHN0eWxlKSBjb25zdDsNCisgICAgVUlOVDE2ICBHZXRMaW5lU3BhY2luZyAgKElOIElOVCBzdHlsZSkgY29uc3Q7DQorDQorICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorDQorICAgIFN0YXR1cyBHZXRMYXN0U3RhdHVzKCkgY29uc3Q7DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzI1MDkzMg0KKw0KK3ByaXZhdGU6DQorICAgIEZvbnRGYW1pbHkoY29uc3QgRm9udEZhbWlseSAmKTsNCisgICAgRm9udEZhbWlseSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRGYW1pbHkgJik7DQorDQorI2VuZGlmDQorDQorcHJvdGVjdGVkOg0KKyAgICBTdGF0dXMgU2V0U3RhdHVzKFN0YXR1cyBzdGF0dXMpIGNvbnN0Ow0KKw0KKyAgICAvLyBwcml2YXRlIGNvbnN0cnVjdG9yIGZvciBjb3B5DQorICAgIEZvbnRGYW1pbHkoR3BGb250RmFtaWx5ICogbmF0aXZlRmFtaWx5LCBTdGF0dXMgc3RhdHVzKTsNCisNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisvLyAgRGF0YSBtZW1iZXJzDQorcHJvdGVjdGVkOg0KKw0KKyAgICBHcEZvbnRGYW1pbHkgICAgKm5hdGl2ZUZhbWlseTsNCisgICAgbXV0YWJsZSBTdGF0dXMgICBsYXN0UmVzdWx0Ow0KK307DQorDQorc3RhdGljIEZvbnRGYW1pbHkgKkdlbmVyaWNTYW5zU2VyaWZGb250RmFtaWx5ID0gTlVMTDsNCitzdGF0aWMgRm9udEZhbWlseSAqR2VuZXJpY1NlcmlmRm9udEZhbWlseSAgICAgPSBOVUxMOw0KK3N0YXRpYyBGb250RmFtaWx5ICpHZW5lcmljTW9ub3NwYWNlRm9udEZhbWlseSA9IE5VTEw7DQorDQorc3RhdGljIEJZVEUgR2VuZXJpY1NhbnNTZXJpZkZvbnRGYW1pbHlCdWZmZXJbc2l6ZW9mKEZvbnRGYW1pbHkpXSA9IHswfTsNCitzdGF0aWMgQllURSBHZW5lcmljU2VyaWZGb250RmFtaWx5QnVmZmVyICAgIFtzaXplb2YoRm9udEZhbWlseSldID0gezB9Ow0KK3N0YXRpYyBCWVRFIEdlbmVyaWNNb25vc3BhY2VGb250RmFtaWx5QnVmZmVyW3NpemVvZihGb250RmFtaWx5KV0gPSB7MH07DQorDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGZvbnRzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsYXNzIEZvbnQgOiBwdWJsaWMgR2RpcGx1c0Jhc2UNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3M7DQorDQorICAgIEZvbnQoSU4gSERDIGhkYyk7DQorICAgIEZvbnQoSU4gSERDIGhkYywNCisgICAgICAgICBJTiBjb25zdCBMT0dGT05UQSogbG9nZm9udCk7DQorICAgIEZvbnQoSU4gSERDIGhkYywNCisgICAgICAgICBJTiBjb25zdCBMT0dGT05UVyogbG9nZm9udCk7DQorI2lmZGVmIERDUl9VU0VfTkVXXzEyNzA4NA0KKyAgICBGb250KElOIEhEQyBoZGMsDQorICAgICAgICAgSU4gY29uc3QgSEZPTlQgaGZvbnQpOw0KKyNlbmRpZg0KKyAgICBGb250KA0KKyAgICAgICAgSU4gY29uc3QgRm9udEZhbWlseSAqIGZhbWlseSwNCisgICAgICAgIElOIFJFQUwgICAgICAgICBlbVNpemUsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgc3R5bGUgICA9IEZvbnRTdHlsZVJlZ3VsYXIsDQorICAgICAgICBJTiBVbml0ICAgICAgICAgdW5pdCAgICA9IFVuaXRQb2ludA0KKyAgICApOw0KKw0KKyAgICBGb250KA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIgKiAgICAgICAgICAgZmFtaWx5TmFtZSwNCisgICAgICAgIElOIFJFQUwgICAgICAgICAgICAgICAgICAgIGVtU2l6ZSwNCisgICAgICAgIElOIElOVCAgICAgICAgICAgICAgICAgICAgIHN0eWxlICAgPSBGb250U3R5bGVSZWd1bGFyLA0KKyAgICAgICAgSU4gVW5pdCAgICAgICAgICAgICAgICAgICAgdW5pdCAgICA9IFVuaXRQb2ludCwNCisgICAgICAgIElOIGNvbnN0IEZvbnRDb2xsZWN0aW9uICogIGZvbnRDb2xsZWN0aW9uID0gTlVMTA0KKyAgICApOw0KKw0KKyAgICBTdGF0dXMgR2V0TG9nRm9udEEoSU4gY29uc3QgR3JhcGhpY3MqIGcsDQorICAgICAgICAgICAgICAgICAgICAgICBPVVQgIExPR0ZPTlRBICogbG9nZm9udEEpIGNvbnN0Ow0KKyAgICBTdGF0dXMgR2V0TG9nRm9udFcoSU4gY29uc3QgR3JhcGhpY3MqIGcsDQorICAgICAgICAgICAgICAgICAgICAgICBPVVQgTE9HRk9OVFcgKiBsb2dmb250VykgY29uc3Q7DQorDQorICAgIEZvbnQqIENsb25lKCkgY29uc3Q7DQorICAgIH5Gb250KCk7DQorICAgIEJPT0wgICAgICAgIElzQXZhaWxhYmxlKCkgICBjb25zdDsNCisgICAgSU5UICAgICAgICAgR2V0U3R5bGUoKSAgICAgIGNvbnN0Ow0KKyAgICBSRUFMICAgICAgICBHZXRTaXplKCkgICAgICAgY29uc3Q7DQorICAgIFVuaXQgICAgICAgIEdldFVuaXQoKSAgICAgICBjb25zdDsNCisgICAgU3RhdHVzICAgICAgR2V0TGFzdFN0YXR1cygpIGNvbnN0Ow0KKyAgICBSRUFMICAgICAgICBHZXRIZWlnaHQoSU4gY29uc3QgR3JhcGhpY3MgKmdyYXBoaWNzID0gTlVMTCkgY29uc3Q7DQorI2lmZGVmIERDUl9VU0VfTkVXXzEyNTQ2Nw0KKyAgICBSRUFMICAgICAgICBHZXRIZWlnaHQoSU4gUkVBTCBkcGkpIGNvbnN0Ow0KKyNlbmRpZg0KKw0KKyAgICBTdGF0dXMgR2V0RmFtaWx5KE9VVCBGb250RmFtaWx5ICpmYW1pbHkpIGNvbnN0Ow0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBGb250KGNvbnN0IEZvbnQgJik7DQorICAgIEZvbnQmIG9wZXJhdG9yPShjb25zdCBGb250ICYpOw0KKw0KKyNlbmRpZg0KKw0KK3Byb3RlY3RlZDoNCisgICAgRm9udChHcEZvbnQqIGZvbnQsIFN0YXR1cyBzdGF0dXMpOw0KKyAgICBWT0lEIFNldE5hdGl2ZUZvbnQoR3BGb250ICpGb250KTsNCisgICAgU3RhdHVzIFNldFN0YXR1cyhTdGF0dXMgc3RhdHVzKSBjb25zdDsNCisNCitwcm90ZWN0ZWQ6DQorICAgIC8qDQorICAgICAqIGhhbmRsZSB0byBuYXRpdmUgbGluZSB0ZXh0dXJlIG9iamVjdA0KKyAgICAgKi8NCisNCisgICAgR3BGb250KiBuYXRpdmVGb250Ow0KKyAgICBtdXRhYmxlIFN0YXR1cyBsYXN0UmVzdWx0Ow0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEFic3RyYWN0IGJhc2UgY2xhc3NlcyBmb3IgZm9udCBjb2xsZWN0aW9ucw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitjbGFzcyBGb250Q29sbGVjdGlvbiA6IHB1YmxpYyBHZGlwbHVzQmFzZQ0KK3sNCitwdWJsaWM6DQorICAgIGZyaWVuZCBjbGFzcyBGb250RmFtaWx5Ow0KKw0KKyAgICBGb250Q29sbGVjdGlvbigpOw0KKyAgICB2aXJ0dWFsIH5Gb250Q29sbGVjdGlvbigpOw0KKw0KKyAgICBJTlQgR2V0RmFtaWx5Q291bnQoKSBjb25zdDsgICAgIC8vIG51bWJlciBvZiBlbnVtZXJhYmxlIGZhbWlsaWVzIGluIHRoZSBjb2xsZWN0aW9uDQorDQorICAgIFN0YXR1cyBHZXRGYW1pbGllcyggICAgICAgICAgICAgLy8gZW51bWVyYXRlIHRoZSBmb250cyBpbiBhIGNvbGxlY3Rpb24NCisgICAgICAgIElOIElOVCAgICAgICAgICAgbnVtU291Z2h0LA0KKyAgICAgICAgT1VUIEZvbnRGYW1pbHkgKiBncGZhbWlsaWVzLA0KKyAgICAgICAgT1VUIElOVCAgICAgICAgKiBudW1Gb3VuZA0KKyAgICApIGNvbnN0Ow0KKw0KKyAgICBTdGF0dXMgR2V0TGFzdFN0YXR1cygpIGNvbnN0Ow0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBGb250Q29sbGVjdGlvbihjb25zdCBGb250Q29sbGVjdGlvbiAmKTsNCisgICAgRm9udENvbGxlY3Rpb24mIG9wZXJhdG9yPShjb25zdCBGb250Q29sbGVjdGlvbiAmKTsNCisNCisjZW5kaWYNCisNCitwcm90ZWN0ZWQ6DQorICAgIFN0YXR1cyBTZXRTdGF0dXMoU3RhdHVzIHN0YXR1cykgY29uc3QgOw0KKw0KKyAgICBHcEZvbnRDb2xsZWN0aW9uICpuYXRpdmVGb250Q29sbGVjdGlvbjsNCisgICAgbXV0YWJsZSBTdGF0dXMgICAgbGFzdFJlc3VsdDsNCit9Ow0KKw0KKw0KK2NsYXNzIEluc3RhbGxlZEZvbnRDb2xsZWN0aW9uIDogcHVibGljIEZvbnRDb2xsZWN0aW9uDQorew0KK3B1YmxpYzoNCisgICAgSW5zdGFsbGVkRm9udENvbGxlY3Rpb24oKTsNCisgICAgfkluc3RhbGxlZEZvbnRDb2xsZWN0aW9uKCk7DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzI1MDkzMg0KKw0KK3ByaXZhdGU6DQorICAgIEluc3RhbGxlZEZvbnRDb2xsZWN0aW9uKGNvbnN0IEluc3RhbGxlZEZvbnRDb2xsZWN0aW9uICYpOw0KKyAgICBJbnN0YWxsZWRGb250Q29sbGVjdGlvbiYgb3BlcmF0b3I9KGNvbnN0IEluc3RhbGxlZEZvbnRDb2xsZWN0aW9uICYpOw0KKw0KKyNlbmRpZg0KKw0KK3Byb3RlY3RlZDoNCisjaWZuZGVmIERDUl9VU0VfTkVXXzIzNTA3Mg0KKyAgICBTdGF0dXMgSW5zdGFsbEZvbnRGaWxlKElOIGNvbnN0IFdDSEFSKiBmaWxlbmFtZSk7DQorICAgIFN0YXR1cyBVbmluc3RhbGxGb250RmlsZShJTiBjb25zdCBXQ0hBUiogZmlsZW5hbWUpOw0KKyNlbmRpZg0KKyAgICBTdGF0dXMgU2V0U3RhdHVzKFN0YXR1cyBzdGF0dXMpIGNvbnN0IDsNCit9Ow0KKw0KKw0KK2NsYXNzIFByaXZhdGVGb250Q29sbGVjdGlvbiA6IHB1YmxpYyBGb250Q29sbGVjdGlvbg0KK3sNCitwdWJsaWM6DQorICAgIFByaXZhdGVGb250Q29sbGVjdGlvbigpOw0KKyAgICB+UHJpdmF0ZUZvbnRDb2xsZWN0aW9uKCk7DQorDQorICAgIFN0YXR1cyBBZGRGb250RmlsZShJTiBjb25zdCBXQ0hBUiogZmlsZW5hbWUpOw0KKyAgICBTdGF0dXMgQWRkTWVtb3J5Rm9udChJTiBjb25zdCBWT0lEKiBtZW1vcnksDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBsZW5ndGgpOw0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBQcml2YXRlRm9udENvbGxlY3Rpb24oY29uc3QgUHJpdmF0ZUZvbnRDb2xsZWN0aW9uICYpOw0KKyAgICBQcml2YXRlRm9udENvbGxlY3Rpb24mIG9wZXJhdG9yPShjb25zdCBQcml2YXRlRm9udENvbGxlY3Rpb24gJik7DQorDQorI2VuZGlmDQorfTsNCisNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYml0bWFwIGltYWdlIGFuZCBtZXRhZmlsZQ0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisvLyAhISEgTm90ZToNCisvLyAgSW5jbHVkZSB0aGUgY2xhc3MgZGVjbGFyYXRpb25zIGhlcmUgYW5kIGhhdmUgdGhlIGlubGluZSBjbGFzcw0KKy8vICBpbXBsZW1lbnRhdGlvbiBpbiBhIHNlcGFyYXRlIGZpbGUuICBUaGlzIGlzIGRvbmUgdG8gcmVzb2x2ZSBhDQorLy8gIGNpcmN1bGFyIGRlcGVuZGVuY3kgc2luY2Ugb25lIG9mIHRoZSBCaXRtYXAgbWV0aG9kcyBuZWVkcyB0bw0KKy8vICBhY2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVyIG5hdGl2ZUdyYXBoaWNzIG9mIHRoZSBHcmFwaGljcyBvYmplY3QuDQorDQorY2xhc3MgSW1hZ2UgOiBwdWJsaWMgR2RpcGx1c0Jhc2UNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgQnJ1c2g7DQorICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJlQnJ1c2g7DQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljczsNCisNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE0MDc4Mg0KKyAgICBJbWFnZSgNCisgICAgICAgIElOIGNvbnN0IFdDSEFSKiBmaWxlbmFtZQ0KKyAgICApOw0KKw0KKyAgICBJbWFnZSgNCisgICAgICAgIElOIElTdHJlYW0qIHN0cmVhbQ0KKyAgICApOw0KKw0KKyAgICBzdGF0aWMgSW1hZ2UqIEZyb21GaWxlKA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIqIGZpbGVuYW1lDQorICAgICk7DQorDQorICAgIHN0YXRpYyBJbWFnZSogRnJvbVN0cmVhbSgNCisgICAgICAgIElOIElTdHJlYW0qIHN0cmVhbQ0KKyAgICApOw0KKyNlbHNlDQorICAgIEltYWdlKA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIqIGZpbGVuYW1lLA0KKyAgICAgICAgSU4gQk9PTCB1c2VFbWJlZGRlZENvbG9yTWFuYWdlbWVudCA9IEZBTFNFDQorICAgICk7DQorDQorICAgIEltYWdlKA0KKyAgICAgICAgSU4gSVN0cmVhbSogc3RyZWFtLA0KKyAgICAgICAgSU4gQk9PTCB1c2VFbWJlZGRlZENvbG9yTWFuYWdlbWVudCA9IEZBTFNFDQorICAgICk7DQorDQorICAgIHN0YXRpYyBJbWFnZSogRnJvbUZpbGUoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiogZmlsZW5hbWUsDQorICAgICAgICBJTiBCT09MIHVzZUVtYmVkZGVkQ29sb3JNYW5hZ2VtZW50ID0gRkFMU0UNCisgICAgKTsNCisNCisgICAgc3RhdGljIEltYWdlKiBGcm9tU3RyZWFtKA0KKyAgICAgICAgSU4gSVN0cmVhbSogc3RyZWFtLA0KKyAgICAgICAgSU4gQk9PTCB1c2VFbWJlZGRlZENvbG9yTWFuYWdlbWVudCA9IEZBTFNFDQorICAgICk7DQorI2VuZGlmDQorDQorICAgIHZpcnR1YWwgfkltYWdlKCk7DQorICAgIHZpcnR1YWwgSW1hZ2UqIENsb25lKCk7DQorDQorICAgIFN0YXR1cyBTYXZlKElOIGNvbnN0IFdDSEFSKiBmaWxlbmFtZSwNCisgICAgICAgICAgICAgICAgSU4gY29uc3QgQ0xTSUQqIGNsc2lkRW5jb2RlciwNCisgICAgICAgICAgICAgICAgSU4gY29uc3QgRW5jb2RlclBhcmFtZXRlcnMgKmVuY29kZXJQYXJhbXMgPSBOVUxMKTsNCisgICAgU3RhdHVzIFNhdmUoSU4gSVN0cmVhbSogc3RyZWFtLA0KKyAgICAgICAgICAgICAgICBJTiBjb25zdCBDTFNJRCogY2xzaWRFbmNvZGVyLA0KKyAgICAgICAgICAgICAgICBJTiBjb25zdCBFbmNvZGVyUGFyYW1ldGVycyAqZW5jb2RlclBhcmFtcyA9IE5VTEwpOw0KKyAgICBTdGF0dXMgU2F2ZUFkZChJTiBjb25zdCBFbmNvZGVyUGFyYW1ldGVycyogZW5jb2RlclBhcmFtcyk7DQorICAgIFN0YXR1cyBTYXZlQWRkKElOIEltYWdlKiBuZXdJbWFnZSwNCisgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgRW5jb2RlclBhcmFtZXRlcnMqIGVuY29kZXJQYXJhbXMpOw0KKw0KKyAgICBJbWFnZVR5cGUgR2V0VHlwZSgpIGNvbnN0Ow0KKyAgICBTdGF0dXMgR2V0UGh5c2ljYWxEaW1lbnNpb24oT1VUIFNpemVGKiBzaXplKTsNCisgICAgU3RhdHVzIEdldEJvdW5kcyhPVVQgUmVjdEYqIHNyY1JlY3QsDQorICAgICAgICAgICAgICAgICAgICAgT1VUIFVuaXQqIHNyY1VuaXQpOw0KKw0KKyAgICBVSU5UIEdldFdpZHRoKCk7DQorICAgIFVJTlQgR2V0SGVpZ2h0KCk7DQorICAgIFJFQUwgR2V0SG9yaXpvbnRhbFJlc29sdXRpb24oKTsNCisgICAgUkVBTCBHZXRWZXJ0aWNhbFJlc29sdXRpb24oKTsNCisgICAgVUlOVCBHZXRGbGFncygpOw0KKyAgICBTdGF0dXMgR2V0UmF3Rm9ybWF0KE9VVCBHVUlEICpmb3JtYXQpOw0KKyAgICBQaXhlbEZvcm1hdCBHZXRQaXhlbEZvcm1hdCgpOw0KKw0KKyAgICBJTlQgR2V0UGFsZXR0ZVNpemUoKTsNCisgICAgU3RhdHVzIEdldFBhbGV0dGUoT1VUIENvbG9yUGFsZXR0ZSogcGFsZXR0ZSwNCisgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHNpemUpOw0KKyAgICBTdGF0dXMgU2V0UGFsZXR0ZShJTiBjb25zdCBDb2xvclBhbGV0dGUqIHBhbGV0dGUpOw0KKw0KKyAgICBJbWFnZSogR2V0VGh1bWJuYWlsSW1hZ2UoSU4gVUlOVCB0aHVtYldpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gVUlOVCB0aHVtYkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIEdldFRodW1ibmFpbEltYWdlQWJvcnQgY2FsbGJhY2sgPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gVk9JRCogY2FsbGJhY2tEYXRhID0gTlVMTCk7DQorICAgIFVJTlQgR2V0RnJhbWVEaW1lbnNpb25zQ291bnQoKTsNCisgICAgU3RhdHVzIEdldEZyYW1lRGltZW5zaW9uc0xpc3QoT1VUIEdVSUQqIGRpbWVuc2lvbklEcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gVUlOVCBjb3VudCk7DQorICAgIFVJTlQgR2V0RnJhbWVDb3VudChJTiBjb25zdCBHVUlEKiBkaW1lbnNpb25JRCk7DQorICAgIFN0YXR1cyBTZWxlY3RBY3RpdmVGcmFtZShJTiBjb25zdCBHVUlEKiBkaW1lbnNpb25JRCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFVJTlQgZnJhbWVJbmRleCk7DQorICAgIFN0YXR1cyBSb3RhdGVGbGlwKElOIFJvdGF0ZUZsaXBUeXBlIHJvdGF0ZUZsaXBUeXBlKTsNCisgICAgVUlOVCBHZXRQcm9wZXJ0eUNvdW50KCk7DQorICAgIFN0YXR1cyBHZXRQcm9wZXJ0eUlkTGlzdChJTiBVSU5UIG51bU9mUHJvcGVydHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVVQgUFJPUElEKiBsaXN0KTsNCisgICAgVUlOVCBHZXRQcm9wZXJ0eUl0ZW1TaXplKElOIFBST1BJRCBwcm9wSWQpOw0KKyAgICBTdGF0dXMgR2V0UHJvcGVydHlJdGVtKElOIFBST1BJRCBwcm9wSWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gVUlOVCBwcm9wU2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPVVQgUHJvcGVydHlJdGVtKiBidWZmZXIpOw0KKyAgICBTdGF0dXMgR2V0UHJvcGVydHlTaXplKE9VVCBVSU5UKiB0b3RhbEJ1ZmZlclNpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT1VUIFVJTlQqIG51bVByb3BlcnRpZXMpOw0KKyAgICBTdGF0dXMgR2V0QWxsUHJvcGVydHlJdGVtcyhJTiBVSU5UIHRvdGFsQnVmZmVyU2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gVUlOVCBudW1Qcm9wZXJ0aWVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVVQgUHJvcGVydHlJdGVtKiBhbGxJdGVtcyk7DQorICAgIFN0YXR1cyBSZW1vdmVQcm9wZXJ0eUl0ZW0oSU4gUFJPUElEIHByb3BJZCk7DQorICAgIFN0YXR1cyBTZXRQcm9wZXJ0eUl0ZW0oSU4gY29uc3QgUHJvcGVydHlJdGVtKiBpdGVtKTsNCisNCisgICAgVUlOVCAgR2V0RW5jb2RlclBhcmFtZXRlckxpc3RTaXplKElOIGNvbnN0IENMU0lEKiBjbHNpZEVuY29kZXIpOw0KKyAgICBTdGF0dXMgR2V0RW5jb2RlclBhcmFtZXRlckxpc3QoSU4gY29uc3QgQ0xTSUQqIGNsc2lkRW5jb2RlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFVJTlQgc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9VVCBFbmNvZGVyUGFyYW1ldGVycyogYnVmZmVyKTsNCisNCisgICAgLy8gU3VwcG9ydCBmb3IgTWlkZGxlIEVhc3QgbG9jYWxpemF0aW9uIChyaWdodC10by1sZWZ0IG1pcnJvcmluZykNCisgICAgSW1hZ2VMYXlvdXQgR2V0TGF5b3V0KCkgY29uc3Q7DQorICAgIFN0YXR1cyBTZXRMYXlvdXQoSU4gY29uc3QgSW1hZ2VMYXlvdXQgbGF5b3V0KTsNCisNCisgICAgU3RhdHVzIEdldExhc3RTdGF0dXMoKSBjb25zdDsNCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIEltYWdlKCkge30NCisNCisgICAgSW1hZ2UoR3BJbWFnZSAqbmF0aXZlSW1hZ2UsIFN0YXR1cyBzdGF0dXMpOw0KKw0KKyAgICBWT0lEIFNldE5hdGl2ZUltYWdlKEdwSW1hZ2UqIG5hdGl2ZUltYWdlKTsNCisNCisgICAgU3RhdHVzIFNldFN0YXR1cyhTdGF0dXMgc3RhdHVzKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoc3RhdHVzICE9IE9rKQ0KKyAgICAgICAgICAgIHJldHVybiAobGFzdFJlc3VsdCA9IHN0YXR1cyk7DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KKyAgICBHcEltYWdlKiBuYXRpdmVJbWFnZTsNCisgICAgbXV0YWJsZSBTdGF0dXMgbGFzdFJlc3VsdDsNCisgICAgbXV0YWJsZSBTdGF0dXMgbG9hZFN0YXR1czsNCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMjUwOTMyDQorDQorcHJpdmF0ZToNCisNCisjZWxzZQ0KKw0KK3Byb3RlY3RlZDoNCisNCisjZW5kaWYNCisNCisgICAgLy8gRGlzYWJsZSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yDQorDQorICAgIEltYWdlKElOIGNvbnN0IEltYWdlJiBDKTsNCisgICAgSW1hZ2UmIG9wZXJhdG9yPShJTiBjb25zdCBJbWFnZSYgQyk7DQorfTsNCisNCitjbGFzcyBCaXRtYXAgOiBwdWJsaWMgSW1hZ2UNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgSW1hZ2U7DQorICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRCaXRtYXA7DQorDQorICAgIEJpdG1hcCgNCisgICAgICAgIElOIGNvbnN0IFdDSEFSICpmaWxlbmFtZSwNCisgICAgICAgIElOIEJPT0wgdXNlRW1iZWRkZWRDb2xvck1hbmFnZW1lbnQgPSBGQUxTRQ0KKyAgICApOw0KKw0KKyAgICBCaXRtYXAoDQorICAgICAgICBJTiBJU3RyZWFtICpzdHJlYW0sDQorICAgICAgICBJTiBCT09MIHVzZUVtYmVkZGVkQ29sb3JNYW5hZ2VtZW50ID0gRkFMU0UNCisgICAgKTsNCisNCisgICAgc3RhdGljIEJpdG1hcCogRnJvbUZpbGUoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAqZmlsZW5hbWUsDQorICAgICAgICBJTiBCT09MIHVzZUVtYmVkZGVkQ29sb3JNYW5hZ2VtZW50ID0gRkFMU0UNCisgICAgKTsNCisNCisgICAgc3RhdGljIEJpdG1hcCogRnJvbVN0cmVhbSgNCisgICAgICAgIElOIElTdHJlYW0gKnN0cmVhbSwNCisgICAgICAgIElOIEJPT0wgdXNlRW1iZWRkZWRDb2xvck1hbmFnZW1lbnQgPSBGQUxTRQ0KKyAgICApOw0KKw0KKyAgICBCaXRtYXAoSU4gSU5UIHdpZHRoLA0KKyAgICAgICAgICAgSU4gSU5UIGhlaWdodCwNCisgICAgICAgICAgIElOIElOVCBzdHJpZGUsIFBpeGVsRm9ybWF0IGZvcm1hdCwNCisgICAgICAgICAgIElOIEJZVEUqIHNjYW4wKTsNCisgICAgQml0bWFwKElOIElOVCB3aWR0aCwNCisgICAgICAgICAgIElOIElOVCBoZWlnaHQsDQorICAgICAgICAgICBJTiBQaXhlbEZvcm1hdCBmb3JtYXQgPSBQaXhlbEZvcm1hdDMyYnBwQVJHQik7DQorICAgIEJpdG1hcChJTiBJTlQgd2lkdGgsDQorICAgICAgICAgICBJTiBJTlQgaGVpZ2h0LA0KKyAgICAgICAgICAgSU4gIEdyYXBoaWNzKiB0YXJnZXQpOw0KKw0KKyAgICBCaXRtYXAqIENsb25lKElOIGNvbnN0IFJlY3QmIHJlY3QsDQorICAgICAgICAgICAgICAgICAgSU4gUGl4ZWxGb3JtYXQgZm9ybWF0KTsNCisgICAgQml0bWFwKiBDbG9uZShJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICBJTiBJTlQgeSwNCisgICAgICAgICAgICAgICAgICBJTiBJTlQgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgSU4gSU5UIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICBJTiBQaXhlbEZvcm1hdCBmb3JtYXQpOw0KKyAgICBCaXRtYXAqIENsb25lKElOIGNvbnN0IFJlY3RGJiByZWN0LA0KKyAgICAgICAgICAgICAgICAgIElOIFBpeGVsRm9ybWF0IGZvcm1hdCk7DQorICAgIEJpdG1hcCogQ2xvbmUoSU4gUkVBTCB4LA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSwNCisgICAgICAgICAgICAgICAgICBJTiBSRUFMIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgIElOIFBpeGVsRm9ybWF0IGZvcm1hdCk7DQorDQorICAgIFN0YXR1cyBMb2NrQml0cyhJTiBjb25zdCBSZWN0JiByZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgSU4gVUlOVCBmbGFncywNCisgICAgICAgICAgICAgICAgICAgIElOIFBpeGVsRm9ybWF0IGZvcm1hdCwNCisgICAgICAgICAgICAgICAgICAgIE9VVCBCaXRtYXBEYXRhKiBsb2NrZWRCaXRtYXBEYXRhKTsNCisgICAgU3RhdHVzIFVubG9ja0JpdHMoSU4gQml0bWFwRGF0YSogbG9ja2VkQml0bWFwRGF0YSk7DQorICAgIFN0YXR1cyBHZXRQaXhlbChJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgIElOIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgICAgT1VUIENvbG9yICpjb2xvcik7DQorICAgIFN0YXR1cyBTZXRQaXhlbChJTiBJTlQgeCwNCisgICAgICAgICAgICAgICAgICAgIElOIElOVCB5LA0KKyAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgQ29sb3IgJmNvbG9yKTsNCisgICAgU3RhdHVzIFNldFJlc29sdXRpb24oSU4gUkVBTCB4ZHBpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHlkcGkpOw0KKw0KKyAgICAvLyBHREkgaW50ZXJvcDoNCisNCisgICAgQml0bWFwKElOIElEaXJlY3REcmF3U3VyZmFjZTcqIHN1cmZhY2UpOw0KKyAgICBCaXRtYXAoSU4gY29uc3QgQklUTUFQSU5GTyogZ2RpQml0bWFwSW5mbywNCisgICAgICAgICAgIElOIFZPSUQqIGdkaUJpdG1hcERhdGEpOw0KKyAgICBCaXRtYXAoSU4gSEJJVE1BUCBoYm0sDQorICAgICAgICAgICBJTiBIUEFMRVRURSBocGFsKTsNCisgICAgQml0bWFwKElOIEhJQ09OIGhpY29uKTsNCisgICAgQml0bWFwKElOIEhJTlNUQU5DRSBoSW5zdGFuY2UsDQorICAgICAgICAgICBJTiBjb25zdCBXQ0hBUiAqIGJpdG1hcE5hbWUpOw0KKyAgICBzdGF0aWMgQml0bWFwKiBGcm9tRGlyZWN0RHJhd1N1cmZhY2U3KElOIElEaXJlY3REcmF3U3VyZmFjZTcqIHN1cmZhY2UpOw0KKyAgICBzdGF0aWMgQml0bWFwKiBGcm9tQklUTUFQSU5GTyhJTiBjb25zdCBCSVRNQVBJTkZPKiBnZGlCaXRtYXBJbmZvLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBWT0lEKiBnZGlCaXRtYXBEYXRhKTsNCisgICAgc3RhdGljIEJpdG1hcCogRnJvbUhCSVRNQVAoSU4gSEJJVE1BUCBoYm0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIEhQQUxFVFRFIGhwYWwpOw0KKyAgICBzdGF0aWMgQml0bWFwKiBGcm9tSElDT04oSU4gSElDT04gaGljb24pOw0KKyAgICBzdGF0aWMgQml0bWFwKiBGcm9tUmVzb3VyY2UoSU4gSElOU1RBTkNFIGhJbnN0YW5jZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFdDSEFSICogYml0bWFwTmFtZSk7DQorDQorICAgIFN0YXR1cyBHZXRIQklUTUFQKElOIGNvbnN0IENvbG9yJiBjb2xvckJhY2tncm91bmQsDQorICAgICAgICAgICAgICAgICAgICAgIE9VVCBIQklUTUFQICpoYm1SZXR1cm4pOw0KKyAgICBTdGF0dXMgR2V0SElDT04oSElDT04gKmhpY29uKTsNCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMjUwOTMyDQorcHJpdmF0ZToNCisgICAgQml0bWFwKGNvbnN0IEJpdG1hcCAmKTsNCisgICAgQml0bWFwJiBvcGVyYXRvcj0oY29uc3QgQml0bWFwICYpOw0KKyNlbmRpZg0KKw0KK3Byb3RlY3RlZDoNCisgICAgQml0bWFwKEdwQml0bWFwICpuYXRpdmVCaXRtYXApOw0KK307DQorDQorY2xhc3MgQ3VzdG9tTGluZUNhcCA6IHB1YmxpYyBHZGlwbHVzQmFzZQ0KK3sNCitwdWJsaWM6DQorICAgIGZyaWVuZCBjbGFzcyBQZW47DQorDQorICAgIEN1c3RvbUxpbmVDYXAoDQorICAgICAgICBJTiBjb25zdCBHcmFwaGljc1BhdGgqIGZpbGxQYXRoLA0KKyAgICAgICAgSU4gY29uc3QgR3JhcGhpY3NQYXRoKiBzdHJva2VQYXRoLA0KKyAgICAgICAgSU4gTGluZUNhcCBiYXNlQ2FwID0gTGluZUNhcEZsYXQsDQorICAgICAgICBJTiBSRUFMIGJhc2VJbnNldCA9IDANCisgICAgICAgICk7DQorICAgIHZpcnR1YWwgfkN1c3RvbUxpbmVDYXAoKTsNCisNCisgICAgQ3VzdG9tTGluZUNhcCogQ2xvbmUoKSBjb25zdDsNCisNCisgICAgU3RhdHVzIFNldFN0cm9rZUNhcChJTiBMaW5lQ2FwIHN0cm9rZUNhcCkNCisgICAgew0KKyAgICAgICAgLy8gVGhpcyBjaGFuZ2VzIGJvdGggc3RhcnQgYW5kIGFuZCBjYXBzLg0KKw0KKyAgICAgICAgcmV0dXJuIFNldFN0cm9rZUNhcHMoc3Ryb2tlQ2FwLCBzdHJva2VDYXApOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRTdHJva2VDYXBzKElOIExpbmVDYXAgc3RhcnRDYXAsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOIExpbmVDYXAgZW5kQ2FwKTsNCisgICAgU3RhdHVzIEdldFN0cm9rZUNhcHMoT1VUIExpbmVDYXAqIHN0YXJ0Q2FwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBPVVQgTGluZUNhcCogZW5kQ2FwKSBjb25zdDsNCisgICAgU3RhdHVzIFNldFN0cm9rZUpvaW4oSU4gTGluZUpvaW4gbGluZUpvaW4pOw0KKyAgICBMaW5lSm9pbiBHZXRTdHJva2VKb2luKCkgY29uc3Q7DQorICAgIFN0YXR1cyBTZXRCYXNlQ2FwKElOIExpbmVDYXAgYmFzZUNhcCk7DQorICAgIExpbmVDYXAgR2V0QmFzZUNhcCgpIGNvbnN0Ow0KKyAgICBTdGF0dXMgU2V0QmFzZUluc2V0KElOIFJFQUwgaW5zZXQpOw0KKyAgICBSRUFMIEdldEJhc2VJbnNldCgpIGNvbnN0Ow0KKyAgICBTdGF0dXMgU2V0V2lkdGhTY2FsZShJTiBSRUFMIHdpZHRoU2NhbGUpOw0KKyAgICBSRUFMIEdldFdpZHRoU2NhbGUoKSBjb25zdDsNCisNCitwcm90ZWN0ZWQ6DQorICAgIEN1c3RvbUxpbmVDYXAoKTsNCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMjUwOTMyDQorDQorcHJpdmF0ZToNCisgICAgQ3VzdG9tTGluZUNhcChjb25zdCBDdXN0b21MaW5lQ2FwICYpOw0KKyAgICBDdXN0b21MaW5lQ2FwJiBvcGVyYXRvcj0oY29uc3QgQ3VzdG9tTGluZUNhcCAmKTsNCitwcm90ZWN0ZWQ6DQorDQorI2Vsc2UNCisNCisgICAgQ3VzdG9tTGluZUNhcChjb25zdCBDdXN0b21MaW5lQ2FwJiBjdXN0b21MaW5lQ2FwKQ0KKyAgICB7DQorICAgICAgICBjdXN0b21MaW5lQ2FwOw0KKyAgICAgICAgU2V0U3RhdHVzKE5vdEltcGxlbWVudGVkKTsNCisgICAgfQ0KKw0KKyAgICBDdXN0b21MaW5lQ2FwJiBvcGVyYXRvcj0oY29uc3QgQ3VzdG9tTGluZUNhcCYgY3VzdG9tTGluZUNhcCkNCisgICAgew0KKyAgICAgICAgY3VzdG9tTGluZUNhcDsNCisgICAgICAgIFNldFN0YXR1cyhOb3RJbXBsZW1lbnRlZCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisjZW5kaWYNCisNCisgICAgQ3VzdG9tTGluZUNhcChHcEN1c3RvbUxpbmVDYXAqIG5hdGl2ZUNhcCwgU3RhdHVzIHN0YXR1cykNCisgICAgew0KKyAgICAgICAgbGFzdFJlc3VsdCA9IHN0YXR1czsNCisgICAgICAgIFNldE5hdGl2ZUNhcChuYXRpdmVDYXApOw0KKyAgICB9DQorDQorICAgIFZPSUQgU2V0TmF0aXZlQ2FwKEdwQ3VzdG9tTGluZUNhcCogbmF0aXZlQ2FwKQ0KKyAgICB7DQorICAgICAgICB0aGlzLT5uYXRpdmVDYXAgPSBuYXRpdmVDYXA7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldFN0YXR1cyhTdGF0dXMgc3RhdHVzKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoc3RhdHVzICE9IE9rKQ0KKyAgICAgICAgICAgIHJldHVybiAobGFzdFJlc3VsdCA9IHN0YXR1cyk7DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KK3Byb3RlY3RlZDoNCisgICAgR3BDdXN0b21MaW5lQ2FwKiBuYXRpdmVDYXA7DQorICAgIG11dGFibGUgU3RhdHVzIGxhc3RSZXN1bHQ7DQorfTsNCisNCitjbGFzcyBDYWNoZWRCaXRtYXAgOiBwdWJsaWMgR2RpcGx1c0Jhc2UNCit7DQorICAgIGZyaWVuZCBHcmFwaGljczsNCisNCitwdWJsaWM6DQorICAgIENhY2hlZEJpdG1hcChJTiBCaXRtYXAgKmJpdG1hcCwNCisgICAgICAgICAgICAgICAgIElOIEdyYXBoaWNzICpncmFwaGljcyk7DQorICAgIHZpcnR1YWwgfkNhY2hlZEJpdG1hcCgpOw0KKw0KKyAgICBTdGF0dXMgR2V0TGFzdFN0YXR1cygpIGNvbnN0Ow0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBDYWNoZWRCaXRtYXAoY29uc3QgQ2FjaGVkQml0bWFwICYpOw0KKyAgICBDYWNoZWRCaXRtYXAmIG9wZXJhdG9yPShjb25zdCBDYWNoZWRCaXRtYXAgJik7DQorDQorI2VuZGlmDQorDQorcHJvdGVjdGVkOg0KKyAgICBHcENhY2hlZEJpdG1hcCAqbmF0aXZlQ2FjaGVkQml0bWFwOw0KKyAgICBtdXRhYmxlIFN0YXR1cyBsYXN0UmVzdWx0Ow0KK307DQorDQorI2VuZGlmICAvLyAhX0dESVBMVVNIRUFERVJTLkhQUA0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNJbWFnZUNvZGVjLmggYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzSW1hZ2VDb2RlYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YzAyZGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzSW1hZ2VDb2RlYy5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqDQorKiBDb3B5cmlnaHQgKGMpIDIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqDQorKiAgIEdkaXBsdXNJbWFnZUNvZGVjLmgNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIEFQSXMgZm9yIGltYWdpbmcgY29kZWNzLg0KKyoNCitcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfR0RJUExVU0lNQUdFQ09ERUNfSA0KKyNkZWZpbmUgX0dESVBMVVNJTUFHRUNPREVDX0gNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ29kZWMgTWFuYWdlbWVudCBBUElzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2lubGluZSBTdGF0dXMgDQorR2V0SW1hZ2VEZWNvZGVyc1NpemUoDQorICAgIE9VVCBVSU5UICpudW1EZWNvZGVycywNCisgICAgT1VUIFVJTlQgKnNpemUpDQorew0KKyAgICByZXR1cm4gRGxsRXhwb3J0czo6R2RpcEdldEltYWdlRGVjb2RlcnNTaXplKG51bURlY29kZXJzLCBzaXplKTsNCit9DQorDQorDQoraW5saW5lIFN0YXR1cyANCitHZXRJbWFnZURlY29kZXJzKA0KKyAgICBJTiBVSU5UIG51bURlY29kZXJzLA0KKyAgICBJTiBVSU5UIHNpemUsDQorICAgIE9VVCBJbWFnZUNvZGVjSW5mbyAqZGVjb2RlcnMpDQorew0KKyAgICByZXR1cm4gRGxsRXhwb3J0czo6R2RpcEdldEltYWdlRGVjb2RlcnMobnVtRGVjb2RlcnMsIHNpemUsIGRlY29kZXJzKTsNCit9DQorDQorDQoraW5saW5lIFN0YXR1cyANCitHZXRJbWFnZUVuY29kZXJzU2l6ZSgNCisgICAgT1VUIFVJTlQgKm51bUVuY29kZXJzLCANCisgICAgT1VUIFVJTlQgKnNpemUpDQorew0KKyAgICByZXR1cm4gRGxsRXhwb3J0czo6R2RpcEdldEltYWdlRW5jb2RlcnNTaXplKG51bUVuY29kZXJzLCBzaXplKTsNCit9DQorDQorDQoraW5saW5lIFN0YXR1cyANCitHZXRJbWFnZUVuY29kZXJzKA0KKyAgICBJTiBVSU5UIG51bUVuY29kZXJzLA0KKyAgICBJTiBVSU5UIHNpemUsDQorICAgIE9VVCBJbWFnZUNvZGVjSW5mbyAqZW5jb2RlcnMpDQorew0KKyAgICByZXR1cm4gRGxsRXhwb3J0czo6R2RpcEdldEltYWdlRW5jb2RlcnMobnVtRW5jb2RlcnMsIHNpemUsIGVuY29kZXJzKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitBZGRJbWFnZUNvZGVjKA0KKyAgICBJTiBjb25zdCBJbWFnZUNvZGVjSW5mbyogY29kZWMpDQorew0KKyAgICByZXR1cm4gRGxsRXhwb3J0czo6R2RpcEFkZEltYWdlQ29kZWMoY29kZWMpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlbW92ZUltYWdlQ29kZWMoDQorICAgIElOIGNvbnN0IEltYWdlQ29kZWNJbmZvKiBjb2RlYykNCit7DQorICAgIHJldHVybiBEbGxFeHBvcnRzOjpHZGlwUmVtb3ZlSW1hZ2VDb2RlYyhjb2RlYyk7DQorfQ0KKw0KKyNlbmRpZiAgLy8gX0dESVBMVVNJTUFHRUNPREVDX0gNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzSW1hZ2luZy5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0ltYWdpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWRkNGQwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0ltYWdpbmcuaApAQCAtMCwwICsxLDU0MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXA0KKyogDQorKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMCAgTWljcm9zb2Z0IENvcnBvcmF0aW9uDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzSW1hZ2luZy5oDQorKg0KKyogQWJzdHJhY3Q6DQorKg0KKyogICBHVUlEcyBkZWZpbmVkIGFuZCB1c2VkIGJ5IHRoZSBpbWFnaW5nIGxpYnJhcnkNCisqDQorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpZm5kZWYgX0dESVBMVVNJTUFHSU5HX0gNCisjZGVmaW5lIF9HRElQTFVTSU1BR0lOR19IDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBJbWFnZSBmaWxlIGZvcm1hdCBpZGVudGlmaWVycw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorREVGSU5FX0dVSUQoSW1hZ2VGb3JtYXRVbmRlZmluZWQsIDB4Yjk2YjNjYTksMHgwNzI4LDB4MTFkMywweDlkLDB4N2IsMHgwMCwweDAwLDB4ZjgsMHgxZSwweGYzLDB4MmUpOw0KK0RFRklORV9HVUlEKEltYWdlRm9ybWF0TWVtb3J5Qk1QLCAweGI5NmIzY2FhLDB4MDcyOCwweDExZDMsMHg5ZCwweDdiLDB4MDAsMHgwMCwweGY4LDB4MWUsMHhmMywweDJlKTsNCitERUZJTkVfR1VJRChJbWFnZUZvcm1hdEJNUCwgMHhiOTZiM2NhYiwweDA3MjgsMHgxMWQzLDB4OWQsMHg3YiwweDAwLDB4MDAsMHhmOCwweDFlLDB4ZjMsMHgyZSk7DQorREVGSU5FX0dVSUQoSW1hZ2VGb3JtYXRFTUYsIDB4Yjk2YjNjYWMsMHgwNzI4LDB4MTFkMywweDlkLDB4N2IsMHgwMCwweDAwLDB4ZjgsMHgxZSwweGYzLDB4MmUpOw0KK0RFRklORV9HVUlEKEltYWdlRm9ybWF0V01GLCAweGI5NmIzY2FkLDB4MDcyOCwweDExZDMsMHg5ZCwweDdiLDB4MDAsMHgwMCwweGY4LDB4MWUsMHhmMywweDJlKTsNCitERUZJTkVfR1VJRChJbWFnZUZvcm1hdEpQRUcsIDB4Yjk2YjNjYWUsMHgwNzI4LDB4MTFkMywweDlkLDB4N2IsMHgwMCwweDAwLDB4ZjgsMHgxZSwweGYzLDB4MmUpOw0KK0RFRklORV9HVUlEKEltYWdlRm9ybWF0UE5HLCAweGI5NmIzY2FmLDB4MDcyOCwweDExZDMsMHg5ZCwweDdiLDB4MDAsMHgwMCwweGY4LDB4MWUsMHhmMywweDJlKTsNCitERUZJTkVfR1VJRChJbWFnZUZvcm1hdEdJRiwgMHhiOTZiM2NiMCwweDA3MjgsMHgxMWQzLDB4OWQsMHg3YiwweDAwLDB4MDAsMHhmOCwweDFlLDB4ZjMsMHgyZSk7DQorREVGSU5FX0dVSUQoSW1hZ2VGb3JtYXRUSUZGLCAweGI5NmIzY2IxLDB4MDcyOCwweDExZDMsMHg5ZCwweDdiLDB4MDAsMHgwMCwweGY4LDB4MWUsMHhmMywweDJlKTsNCitERUZJTkVfR1VJRChJbWFnZUZvcm1hdEVYSUYsIDB4Yjk2YjNjYjIsMHgwNzI4LDB4MTFkMywweDlkLDB4N2IsMHgwMCwweDAwLDB4ZjgsMHgxZSwweGYzLDB4MmUpOw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTQwODU1DQorREVGSU5FX0dVSUQoSW1hZ2VGb3JtYXRQaG90b0NELCAweGI5NmIzY2IzLDB4MDcyOCwweDExZDMsMHg5ZCwweDdiLDB4MDAsMHgwMCwweGY4LDB4MWUsMHhmMywweDJlKTsNCitERUZJTkVfR1VJRChJbWFnZUZvcm1hdEZsYXNoUElYLCAweGI5NmIzY2I0LDB4MDcyOCwweDExZDMsMHg5ZCwweDdiLDB4MDAsMHgwMCwweGY4LDB4MWUsMHhmMywweDJlKTsNCisjZW5kaWYNCitERUZJTkVfR1VJRChJbWFnZUZvcm1hdEljb24sIDB4Yjk2YjNjYjUsMHgwNzI4LDB4MTFkMywweDlkLDB4N2IsMHgwMCwweDAwLDB4ZjgsMHgxZSwweGYzLDB4MmUpOw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gUHJlZGVmaW5lZCBtdWx0aS1mcmFtZSBkaW1lbnNpb24gSURzDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitERUZJTkVfR1VJRChGcmFtZURpbWVuc2lvblRpbWUsIDB4NmFlZGJkNmQsMHgzZmI1LDB4NDE4YSwweDgzLDB4YTYsMHg3ZiwweDQ1LDB4MjIsMHg5ZCwweGM4LDB4NzIpOw0KK0RFRklORV9HVUlEKEZyYW1lRGltZW5zaW9uUmVzb2x1dGlvbiwgMHg4NDIzNmY3YiwweDNiZDMsMHg0MjhmLDB4OGQsMHhhYiwweDRlLDB4YTEsMHg0MywweDljLDB4YTMsMHgxNSk7DQorREVGSU5FX0dVSUQoRnJhbWVEaW1lbnNpb25QYWdlLCAweDc0NjJkYzg2LDB4NjE4MCwweDRjN2UsMHg4ZSwweDNmLDB4ZWUsMHg3MywweDMzLDB4YTcsMHhhNCwweDgzKTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFByb3BlcnR5IHNldHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0RFRklORV9HVUlEKEZvcm1hdElESW1hZ2VJbmZvcm1hdGlvbiwgMHhlNTgzNmNiZSwweDVlZWYsMHg0ZjFkLDB4YWMsMHhkZSwweGFlLDB4NGMsMHg0MywweGI2LDB4MDgsMHhjZSk7DQorREVGSU5FX0dVSUQoRm9ybWF0SURKcGVnQXBwSGVhZGVycywgMHgxYzRhZmRjZCwweDYxNzcsMHg0M2NmLDB4YWIsMHhjNywweDVmLDB4NTEsMHhhZiwweDM5LDB4ZWUsMHg4NSk7DQorDQorI2lmbmRlZiBEQ1JfVVNFX05FV18xNDA4NTUNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIERlY29kZXIgcGFyYW1ldGVyIHNldHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0RFRklORV9HVUlEKERlY29kZXJUcmFuc0NvbG9yLCAweGI3YTk4YzhmLDB4ZGNlNywweDQ1N2QsMHhiZiwweGE1LDB4Y2UsMHhhNywweDFiLDB4ZDEsMHg0ZCwweGQ2KTsNCitERUZJTkVfR1VJRChEZWNvZGVyVHJhbnNSYW5nZSwgMHhhYmVlZDE4OSwweGQ5ODgsMHg0ZDAzLDB4YjQsMHgyNSwweDU3LDB4MTAsMHg1NSwweGM3LDB4NmEsMHhkMSk7DQorREVGSU5FX0dVSUQoRGVjb2Rlck91dHB1dENoYW5uZWwsIDB4MmZmOGY1MWUsMHg3MjRkLDB4NDVmZSwweDg2LDB4Y2UsMHgxNywweDc3LDB4YTAsMHg1NiwweGRhLDB4NjApOw0KK0RFRklORV9HVUlEKERlY29kZXJJY29uUmVzLCAweDVjNjU2ZWVjLDB4ZTk0ZiwweDQ1YmEsMHhhNiwweGY2LDB4MTAsMHg2MiwweGU4LDB4NWYsMHg0YSwweDdmKTsNCisjZW5kaWYNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEVuY29kZXIgcGFyYW1ldGVyIHNldHMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0RFRklORV9HVUlEKEVuY29kZXJDb21wcmVzc2lvbiwgMHhlMDlkNzM5ZCwweGNjZDQsMHg0NGVlLDB4OGUsMHhiYSwweDNmLDB4YmYsMHg4YiwweGU0LDB4ZmMsMHg1OCk7DQorREVGSU5FX0dVSUQoRW5jb2RlckNvbG9yRGVwdGgsIDB4NjYwODcwNTUsMHhhZDY2LDB4NGM3YywweDlhLDB4MTgsMHgzOCwweGEyLDB4MzEsMHgwYiwweDgzLDB4MzcpOw0KK0RFRklORV9HVUlEKEVuY29kZXJTY2FuTWV0aG9kLCAweDNhNGUyNjYxLDB4MzEwOSwweDRlNTYsMHg4NSwweDM2LDB4NDIsMHhjMSwweDU2LDB4ZTcsMHhkYywweGZhKTsNCitERUZJTkVfR1VJRChFbmNvZGVyVmVyc2lvbiwgMHgyNGQxOGM3NiwweDgxNGEsMHg0MWE0LDB4YmYsMHg1MywweDFjLDB4MjEsMHg5YywweGNjLDB4ZjcsMHg5Nyk7DQorREVGSU5FX0dVSUQoRW5jb2RlclJlbmRlck1ldGhvZCwgMHg2ZDQyYzUzYSwweDIyOWEsMHg0ODI1LDB4OGIsMHhiNywweDVjLDB4OTksMHhlMiwweGI5LDB4YTgsMHhiOCk7DQorREVGSU5FX0dVSUQoRW5jb2RlclF1YWxpdHksIDB4MWQ1YmU0YjUsMHhmYTRhLDB4NDUyZCwweDljLDB4ZGQsMHg1ZCwweGIzLDB4NTEsMHgwNSwweGU3LDB4ZWIpOw0KK0RFRklORV9HVUlEKEVuY29kZXJUcmFuc2Zvcm1hdGlvbiwweDhkMGViMmQxLDB4YTU4ZSwweDRlYTgsMHhhYSwweDE0LDB4MTAsMHg4MCwweDc0LDB4YjcsMHhiNiwweGY5KTsNCitERUZJTkVfR1VJRChFbmNvZGVyTHVtaW5hbmNlVGFibGUsMHhlZGIzM2JjZSwweDAyNjYsMHg0YTc3LDB4YjksMHgwNCwweDI3LDB4MjEsMHg2MCwweDk5LDB4ZTcsMHgxNyk7DQorREVGSU5FX0dVSUQoRW5jb2RlckNocm9taW5hbmNlVGFibGUsMHhmMmU0NTVkYywweDA5YjMsMHg0MzE2LDB4ODIsMHg2MCwweDY3LDB4NmEsMHhkYSwweDMyLDB4NDgsMHgxYyk7DQorREVGSU5FX0dVSUQoRW5jb2RlclNhdmVGbGFnLDB4MjkyMjY2ZmMsMHhhYzQwLDB4NDdiZiwweDhjLCAweGZjLCAweGE4LCAweDViLCAweDg5LCAweGE2LCAweDU1LCAweGRlKTsNCisNCitERUZJTkVfR1VJRChDb2RlY0lJbWFnZUJ5dGVzLDB4MDI1ZDE4MjMsMHg2YzdkLDB4NDQ3YiwweGJiLCAweGRiLCAweGEzLCAweGNiLCAweGMzLCAweGRmLCAweGEyLCAweGZjKTsNCisNCitNSURMX0lOVEVSRkFDRSgiMDI1RDE4MjMtNkM3RC00NDdCLUJCREItQTNDQkMzREZBMkZDIikNCitJSW1hZ2VCeXRlcyA6IHB1YmxpYyBJVW5rbm93bg0KK3sNCitwdWJsaWM6DQorICAgIC8vIFJldHVybiB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIElTdHJlYW0NCisNCisgICAgU1RETUVUSE9EKENvdW50Qnl0ZXMpKA0KKyAgICAgICAgT1VUIFVJTlQgKnBjYg0KKyAgICAgICAgKSA9IDA7DQorICAgIA0KKyAgICAvLyBMb2NrcyAiY2IiIGJ5dGVzLCBzdGFydGluZyBmcm9tICJ1bE9mZnNldCIgaW4gdGhlIHN0cmVhbSwgYW5kIHJldHVybnMgdGhlDQorICAgIC8vIHBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbG9ja2VkIG1lbW9yeSBjaHVuayBpbiAicHB2Qnl0ZXMiDQorDQorICAgIFNURE1FVEhPRChMb2NrQnl0ZXMpKA0KKyAgICAgICAgSU4gVUlOVCBjYiwNCisgICAgICAgIElOIFVMT05HIHVsT2Zmc2V0LA0KKyAgICAgICAgT1VUIGNvbnN0IFZPSUQgKiogcHB2Qnl0ZXMNCisgICAgICAgICkgPSAwOw0KKw0KKyAgICAvLyBVbmxvY2tzICJjYiIgYnl0ZXMsIHBvaW50ZWQgYnkgInB2Qnl0ZXMiLCBzdGFydGluZyBmcm9tICJ1bE9mZnNldCIgaW4gdGhlDQorICAgIC8vIHN0cmVhbQ0KKw0KKyAgICBTVERNRVRIT0QoVW5sb2NrQnl0ZXMpKA0KKyAgICAgICAgSU4gY29uc3QgVk9JRCAqcHZCeXRlcywNCisgICAgICAgIElOIFVJTlQgY2IsDQorICAgICAgICBJTiBVTE9ORyB1bE9mZnNldA0KKyAgICAgICAgKSA9IDA7DQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gSW1hZ2VDb2RlY0luZm8gc3RydWN0dXJlDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsYXNzIEltYWdlQ29kZWNJbmZvDQorew0KK3B1YmxpYzogICAgICAgICAgDQorICAgIENMU0lEIENsc2lkOw0KKyAgICBHVUlEICBGb3JtYXRJRDsNCisgICAgY29uc3QgV0NIQVIqIENvZGVjTmFtZTsNCisgICAgY29uc3QgV0NIQVIqIERsbE5hbWU7DQorICAgIGNvbnN0IFdDSEFSKiBGb3JtYXREZXNjcmlwdGlvbjsNCisgICAgY29uc3QgV0NIQVIqIEZpbGVuYW1lRXh0ZW5zaW9uOw0KKyAgICBjb25zdCBXQ0hBUiogTWltZVR5cGU7DQorICAgIERXT1JEIEZsYWdzOw0KKyAgICBEV09SRCBWZXJzaW9uOw0KKyAgICBEV09SRCBTaWdDb3VudDsNCisgICAgRFdPUkQgU2lnU2l6ZTsNCisgICAgY29uc3QgQllURSogU2lnUGF0dGVybjsNCisgICAgY29uc3QgQllURSogU2lnTWFzazsNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBJbmZvcm1hdGlvbiBmbGFncyBhYm91dCBpbWFnZSBjb2RlY3MNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBJbWFnZUNvZGVjRmxhZ3MNCit7DQorICAgIEltYWdlQ29kZWNGbGFnc0VuY29kZXIgICAgICAgICAgICA9IDB4MDAwMDAwMDEsDQorICAgIEltYWdlQ29kZWNGbGFnc0RlY29kZXIgICAgICAgICAgICA9IDB4MDAwMDAwMDIsDQorICAgIEltYWdlQ29kZWNGbGFnc1N1cHBvcnRCaXRtYXAgICAgICA9IDB4MDAwMDAwMDQsDQorICAgIEltYWdlQ29kZWNGbGFnc1N1cHBvcnRWZWN0b3IgICAgICA9IDB4MDAwMDAwMDgsDQorICAgIEltYWdlQ29kZWNGbGFnc1NlZWthYmxlRW5jb2RlICAgICA9IDB4MDAwMDAwMTAsDQorICAgIEltYWdlQ29kZWNGbGFnc0Jsb2NraW5nRGVjb2RlICAgICA9IDB4MDAwMDAwMjAsDQorDQorICAgIEltYWdlQ29kZWNGbGFnc0J1aWx0aW4gICAgICAgICAgICA9IDB4MDAwMTAwMDAsDQorICAgIEltYWdlQ29kZWNGbGFnc1N5c3RlbSAgICAgICAgICAgICA9IDB4MDAwMjAwMDAsDQorICAgIEltYWdlQ29kZWNGbGFnc1VzZXIgICAgICAgICAgICAgICA9IDB4MDAwNDAwMDANCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQWNjZXNzIG1vZGVzIHVzZWQgd2hlbiBjYWxsaW5nIEltYWdlOjpMb2NrQml0cw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZW51bSBJbWFnZUxvY2tNb2RlDQorew0KKyAgICBJbWFnZUxvY2tNb2RlUmVhZCAgICAgICAgPSAweDAwMDEsDQorICAgIEltYWdlTG9ja01vZGVXcml0ZSAgICAgICA9IDB4MDAwMiwNCisgICAgSW1hZ2VMb2NrTW9kZVVzZXJJbnB1dEJ1Zj0gMHgwMDA0DQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEluZm9ybWF0aW9uIGFib3V0IGltYWdlIHBpeGVsIGRhdGENCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsYXNzIEJpdG1hcERhdGENCit7DQorcHVibGljOg0KKyAgICBVSU5UIFdpZHRoOw0KKyAgICBVSU5UIEhlaWdodDsNCisgICAgSU5UIFN0cmlkZTsNCisgICAgUGl4ZWxGb3JtYXQgUGl4ZWxGb3JtYXQ7DQorICAgIFZPSUQqIFNjYW4wOw0KKyAgICBVSU5UX1BUUiBSZXNlcnZlZDsNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gSW1hZ2UgZmxhZ3MNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2VudW0gSW1hZ2VGbGFncw0KK3sNCisgICAgSW1hZ2VGbGFnc05vbmUgICAgICAgICAgICAgICAgPSAwLA0KKw0KKyAgICAvLyBMb3ctd29yZDogc2hhcmVkIHdpdGggU0lOS0ZMQUdfeA0KKw0KKyAgICBJbWFnZUZsYWdzU2NhbGFibGUgICAgICAgICAgICA9IDB4MDAwMSwNCisgICAgSW1hZ2VGbGFnc0hhc0FscGhhICAgICAgICAgICAgPSAweDAwMDIsDQorICAgIEltYWdlRmxhZ3NIYXNUcmFuc2x1Y2VudCAgICAgID0gMHgwMDA0LA0KKyAgICBJbWFnZUZsYWdzUGFydGlhbGx5U2NhbGFibGUgICA9IDB4MDAwOCwNCisNCisgICAgLy8gTG93LXdvcmQ6IGNvbG9yIHNwYWNlIGRlZmluaXRpb24NCisNCisgICAgSW1hZ2VGbGFnc0NvbG9yU3BhY2VSR0IgICAgICAgPSAweDAwMTAsDQorICAgIEltYWdlRmxhZ3NDb2xvclNwYWNlQ01ZSyAgICAgID0gMHgwMDIwLA0KKyAgICBJbWFnZUZsYWdzQ29sb3JTcGFjZUdSQVkgICAgICA9IDB4MDA0MCwNCisgICAgSW1hZ2VGbGFnc0NvbG9yU3BhY2VZQ0JDUiAgICAgPSAweDAwODAsDQorICAgIEltYWdlRmxhZ3NDb2xvclNwYWNlWUNDSyAgICAgID0gMHgwMTAwLA0KKyANCisgICAgLy8gTG93LXdvcmQ6IGltYWdlIHNpemUgaW5mbw0KKw0KKyAgICBJbWFnZUZsYWdzSGFzUmVhbERQSSAgICAgICAgICA9IDB4MTAwMCwNCisgICAgSW1hZ2VGbGFnc0hhc1JlYWxQaXhlbFNpemUgICAgPSAweDIwMDAsDQorDQorICAgIC8vIEhpZ2gtd29yZA0KKw0KKyAgICBJbWFnZUZsYWdzUmVhZE9ubHkgICAgICAgICAgICA9IDB4MDAwMTAwMDAsDQorICAgIEltYWdlRmxhZ3NDYWNoaW5nICAgICAgICAgICAgID0gMHgwMDAyMDAwMA0KK307DQorDQorZW51bSBSb3RhdGVGbGlwVHlwZQ0KK3sNCisgICAgUm90YXRlTm9uZUZsaXBOb25lID0gMCwNCisgICAgUm90YXRlOTBGbGlwTm9uZSAgID0gMSwNCisgICAgUm90YXRlMTgwRmxpcE5vbmUgID0gMiwNCisgICAgUm90YXRlMjcwRmxpcE5vbmUgID0gMywNCisNCisgICAgUm90YXRlTm9uZUZsaXBYICAgID0gNCwNCisgICAgUm90YXRlOTBGbGlwWCAgICAgID0gNSwNCisgICAgUm90YXRlMTgwRmxpcFggICAgID0gNiwNCisgICAgUm90YXRlMjcwRmxpcFggICAgID0gNywNCisNCisgICAgUm90YXRlTm9uZUZsaXBZICAgID0gUm90YXRlMTgwRmxpcFgsDQorICAgIFJvdGF0ZTkwRmxpcFkgICAgICA9IFJvdGF0ZTI3MEZsaXBYLA0KKyAgICBSb3RhdGUxODBGbGlwWSAgICAgPSBSb3RhdGVOb25lRmxpcFgsDQorICAgIFJvdGF0ZTI3MEZsaXBZICAgICA9IFJvdGF0ZTkwRmxpcFgsDQorDQorICAgIFJvdGF0ZU5vbmVGbGlwWFkgICA9IFJvdGF0ZTE4MEZsaXBOb25lLA0KKyAgICBSb3RhdGU5MEZsaXBYWSAgICAgPSBSb3RhdGUyNzBGbGlwTm9uZSwNCisgICAgUm90YXRlMTgwRmxpcFhZICAgID0gUm90YXRlTm9uZUZsaXBOb25lLA0KKyAgICBSb3RhdGUyNzBGbGlwWFkgICAgPSBSb3RhdGU5MEZsaXBOb25lDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEVuY29kZXIgUGFyYW1ldGVyIHN0cnVjdHVyZQ0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorY2xhc3MgRW5jb2RlclBhcmFtZXRlcg0KK3sNCitwdWJsaWM6DQorICAgIEdVSUQgICAgR3VpZDsgICAgICAgICAgICAgICAvLyBHVUlEIG9mIHRoZSBwYXJhbWV0ZXINCisgICAgVUxPTkcgICBOdW1iZXJPZlZhbHVlczsgICAgIC8vIE51bWJlciBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlcw0KKyAgICBVTE9ORyAgIFR5cGU7ICAgICAgICAgICAgICAgLy8gVmFsdWUgdHlwZSwgbGlrZSBWYWx1ZVR5cGVMT05HICBldGMuDQorICAgIFZPSUQqICAgVmFsdWU7ICAgICAgICAgICAgICAvLyBBIHBvaW50ZXIgdG8gdGhlIHBhcmFtZXRlciB2YWx1ZXMNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gRW5jb2RlciBQYXJhbWV0ZXJzIHN0cnVjdHVyZQ0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorY2xhc3MgRW5jb2RlclBhcmFtZXRlcnMNCit7DQorcHVibGljOg0KKyAgICBVSU5UIENvdW50OyAgICAgICAgICAgICAgICAgICAgICAvLyBOdW1iZXIgb2YgcGFyYW1ldGVycyBpbiB0aGlzIHN0cnVjdHVyZQ0KKyAgICBFbmNvZGVyUGFyYW1ldGVyIFBhcmFtZXRlclsxXTsgICAvLyBQYXJhbWV0ZXIgdmFsdWVzDQorfTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFByb3BlcnR5IEl0ZW0NCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK2NsYXNzIFByb3BlcnR5SXRlbQ0KK3sNCitwdWJsaWM6DQorICAgIFBST1BJRCAgaWQ7ICAgICAgICAgICAgICAgICAvLyBJRCBvZiB0aGlzIHByb3BlcnR5DQorICAgIFVMT05HICAgbGVuZ3RoOyAgICAgICAgICAgICAvLyBMZW5ndGggb2YgdGhlIHByb3BlcnR5IHZhbHVlLCBpbiBieXRlcw0KKyAgICBXT1JEICAgIHR5cGU7ICAgICAgICAgICAgICAgLy8gVHlwZSBvZiB0aGUgdmFsdWUsIGFzIG9uZSBvZiBUQUdfVFlQRV9YWFgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmluZWQgYWJvdmUNCisgICAgVk9JRCogICB2YWx1ZTsgICAgICAgICAgICAgIC8vIHByb3BlcnR5IHZhbHVlDQorfTsNCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMTQwODU3DQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBJbWFnZSBwcm9wZXJ0eSB0eXBlcyANCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdUeXBlQnl0ZSAgICAgICAgMQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdUeXBlQVNDSUkgICAgICAgMg0KKyNkZWZpbmUgUHJvcGVydHlUYWdUeXBlU2hvcnQgICAgICAgMw0KKyNkZWZpbmUgUHJvcGVydHlUYWdUeXBlTG9uZyAgICAgICAgNA0KKyNkZWZpbmUgUHJvcGVydHlUYWdUeXBlUmF0aW9uYWwgICAgNQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdUeXBlVW5kZWZpbmVkICAgNw0KKyNkZWZpbmUgUHJvcGVydHlUYWdUeXBlU0xPTkcgICAgICAgOQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdUeXBlU1JhdGlvbmFsICAxMA0KKyNlbmRpZg0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gSW1hZ2UgcHJvcGVydHkgSUQgdGFncw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZJRkQgICAgICAgICAgICAgMHg4NzY5DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc0lGRCAgICAgICAgICAgICAgMHg4ODI1DQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ05ld1N1YmZpbGVUeXBlICAgICAgMHgwMEZFDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1N1YmZpbGVUeXBlICAgICAgICAgMHgwMEZGDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0ltYWdlV2lkdGggICAgICAgICAgMHgwMTAwDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0ltYWdlSGVpZ2h0ICAgICAgICAgMHgwMTAxDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0JpdHNQZXJTYW1wbGUgICAgICAgMHgwMTAyDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0NvbXByZXNzaW9uICAgICAgICAgMHgwMTAzDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1Bob3RvbWV0cmljSW50ZXJwICAgMHgwMTA2DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1RocmVzaEhvbGRpbmcgICAgICAgMHgwMTA3DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0NlbGxXaWR0aCAgICAgICAgICAgMHgwMTA4DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0NlbGxIZWlnaHQgICAgICAgICAgMHgwMTA5DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0ZpbGxPcmRlciAgICAgICAgICAgMHgwMTBBDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0RvY3VtZW50TmFtZSAgICAgICAgMHgwMTBEDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0ltYWdlRGVzY3JpcHRpb24gICAgMHgwMTBFDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0VxdWlwTWFrZSAgICAgICAgICAgMHgwMTBGDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0VxdWlwTW9kZWwgICAgICAgICAgMHgwMTEwDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1N0cmlwT2Zmc2V0cyAgICAgICAgMHgwMTExDQorI2RlZmluZSBQcm9wZXJ0eVRhZ09yaWVudGF0aW9uICAgICAgICAgMHgwMTEyDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1NhbXBsZXNQZXJQaXhlbCAgICAgMHgwMTE1DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1Jvd3NQZXJTdHJpcCAgICAgICAgMHgwMTE2DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1N0cmlwQnl0ZXNDb3VudCAgICAgMHgwMTE3DQorI2RlZmluZSBQcm9wZXJ0eVRhZ01pblNhbXBsZVZhbHVlICAgICAgMHgwMTE4DQorI2RlZmluZSBQcm9wZXJ0eVRhZ01heFNhbXBsZVZhbHVlICAgICAgMHgwMTE5DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1hSZXNvbHV0aW9uICAgICAgICAgMHgwMTFBICAgLy8gSW1hZ2UgcmVzb2x1dGlvbiBpbiB3aWR0aCBkaXJlY3Rpb24NCisjZGVmaW5lIFByb3BlcnR5VGFnWVJlc29sdXRpb24gICAgICAgICAweDAxMUIgICAvLyBJbWFnZSByZXNvbHV0aW9uIGluIGhlaWdodCBkaXJlY3Rpb24NCisjZGVmaW5lIFByb3BlcnR5VGFnUGxhbmFyQ29uZmlnICAgICAgICAweDAxMUMgICAvLyBJbWFnZSBkYXRhIGFycmFuZ2VtZW50DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1BhZ2VOYW1lICAgICAgICAgICAgMHgwMTFEDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1hQb3NpdGlvbiAgICAgICAgICAgMHgwMTFFDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1lQb3NpdGlvbiAgICAgICAgICAgMHgwMTFGDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0ZyZWVPZmZzZXQgICAgICAgICAgMHgwMTIwDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0ZyZWVCeXRlQ291bnRzICAgICAgMHgwMTIxDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dyYXlSZXNwb25zZVVuaXQgICAgMHgwMTIyDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dyYXlSZXNwb25zZUN1cnZlICAgMHgwMTIzDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1Q0T3B0aW9uICAgICAgICAgICAgMHgwMTI0DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1Q2T3B0aW9uICAgICAgICAgICAgMHgwMTI1DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1Jlc29sdXRpb25Vbml0ICAgICAgMHgwMTI4ICAgLy8gVW5pdCBvZiBYIGFuZCBZIHJlc29sdXRpb24NCisjZGVmaW5lIFByb3BlcnR5VGFnUGFnZU51bWJlciAgICAgICAgICAweDAxMjkNCisjZGVmaW5lIFByb3BlcnR5VGFnVHJhbnNmZXJGdW5jaXRpb24gICAweDAxMkQNCisjZGVmaW5lIFByb3BlcnR5VGFnU29mdHdhcmVVc2VkICAgICAgICAweDAxMzENCisjZGVmaW5lIFByb3BlcnR5VGFnRGF0ZVRpbWUgICAgICAgICAgICAweDAxMzINCisjZGVmaW5lIFByb3BlcnR5VGFnQXJ0aXN0ICAgICAgICAgICAgICAweDAxM0INCisjZGVmaW5lIFByb3BlcnR5VGFnSG9zdENvbXB1dGVyICAgICAgICAweDAxM0MNCisjZGVmaW5lIFByb3BlcnR5VGFnUHJlZGljdG9yICAgICAgICAgICAweDAxM0QNCisjZGVmaW5lIFByb3BlcnR5VGFnV2hpdGVQb2ludCAgICAgICAgICAweDAxM0UNCisjZGVmaW5lIFByb3BlcnR5VGFnUHJpbWFyeUNocm9tYXRpY2l0aWVzIDB4MDEzRg0KKyNkZWZpbmUgUHJvcGVydHlUYWdDb2xvck1hcCAgICAgICAgICAgIDB4MDE0MA0KKyNkZWZpbmUgUHJvcGVydHlUYWdIYWxmdG9uZUhpbnRzICAgICAgIDB4MDE0MQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaWxlV2lkdGggICAgICAgICAgIDB4MDE0Mg0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaWxlTGVuZ3RoICAgICAgICAgIDB4MDE0Mw0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaWxlT2Zmc2V0ICAgICAgICAgIDB4MDE0NA0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaWxlQnl0ZUNvdW50cyAgICAgIDB4MDE0NQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdJbmtTZXQgICAgICAgICAgICAgIDB4MDE0Qw0KKyNkZWZpbmUgUHJvcGVydHlUYWdJbmtOYW1lcyAgICAgICAgICAgIDB4MDE0RA0KKyNkZWZpbmUgUHJvcGVydHlUYWdOdW1iZXJPZklua3MgICAgICAgIDB4MDE0RQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdEb3RSYW5nZSAgICAgICAgICAgIDB4MDE1MA0KKyNkZWZpbmUgUHJvcGVydHlUYWdUYXJnZXRQcmludGVyICAgICAgIDB4MDE1MQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeHRyYVNhbXBsZXMgICAgICAgIDB4MDE1Mg0KKyNkZWZpbmUgUHJvcGVydHlUYWdTYW1wbGVGb3JtYXQgICAgICAgIDB4MDE1Mw0KKyNkZWZpbmUgUHJvcGVydHlUYWdTTWluU2FtcGxlVmFsdWUgICAgIDB4MDE1NA0KKyNkZWZpbmUgUHJvcGVydHlUYWdTTWF4U2FtcGxlVmFsdWUgICAgIDB4MDE1NQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdUcmFuc2ZlclJhbmdlICAgICAgIDB4MDE1Ng0KKw0KKyNkZWZpbmUgUHJvcGVydHlUYWdKUEVHUHJvYyAgICAgICAgICAgIDB4MDIwMA0KKyNkZWZpbmUgUHJvcGVydHlUYWdKUEVHSW50ZXJGb3JtYXQgICAgIDB4MDIwMQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdKUEVHSW50ZXJMZW5ndGggICAgIDB4MDIwMg0KKyNkZWZpbmUgUHJvcGVydHlUYWdKUEVHUmVzdGFydEludGVydmFsIDB4MDIwMw0KKyNkZWZpbmUgUHJvcGVydHlUYWdKUEVHTG9zc2xlc3NQcmVkaWN0b3JzICAweDAyMDUNCisjZGVmaW5lIFByb3BlcnR5VGFnSlBFR1BvaW50VHJhbnNmb3JtcyAgICAgMHgwMjA2DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0pQRUdRVGFibGVzICAgICAgICAgMHgwMjA3DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0pQRUdEQ1RhYmxlcyAgICAgICAgMHgwMjA4DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0pQRUdBQ1RhYmxlcyAgICAgICAgMHgwMjA5DQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1lDYkNyQ29lZmZpY2llbnRzICAgMHgwMjExDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1lDYkNyU3Vic2FtcGxpbmcgICAgMHgwMjEyDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1lDYkNyUG9zaXRpb25pbmcgICAgMHgwMjEzDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1JFRkJsYWNrV2hpdGUgICAgICAgMHgwMjE0DQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0lDQ1Byb2ZpbGUgICAgICAgICAgMHg4NzczICAgLy8gVGhpcyBUQUcgaXMgZGVmaW5lZCBieSBJQ0MNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZW1iZWRkZWQgSUNDIGluIFRJRkYNCisjZGVmaW5lIFByb3BlcnR5VGFnR2FtbWEgICAgICAgICAgICAgICAweDAzMDENCisjZGVmaW5lIFByb3BlcnR5VGFnSUNDUHJvZmlsZURlc2NyaXB0b3IgMHgwMzAyDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1NSR0JSZW5kZXJpbmdJbnRlbnQgMHgwMzAzDQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0ltYWdlVGl0bGUgICAgICAgICAgMHgwMzIwDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0NvcHlyaWdodCAgICAgICAgICAgMHg4Mjk4DQorDQorLy8gRXh0cmEgVEFHcyAoTGlrZSBBZG9iZSBJbWFnZSBJbmZvcm1hdGlvbiB0YWdzIGV0Yy4pDQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1Jlc29sdXRpb25YVW5pdCAgICAgICAgICAgMHg1MDAxDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1Jlc29sdXRpb25ZVW5pdCAgICAgICAgICAgMHg1MDAyDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1Jlc29sdXRpb25YTGVuZ3RoVW5pdCAgICAgMHg1MDAzDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1Jlc29sdXRpb25ZTGVuZ3RoVW5pdCAgICAgMHg1MDA0DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1ByaW50RmxhZ3MgICAgICAgICAgICAgICAgMHg1MDA1DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1ByaW50RmxhZ3NWZXJzaW9uICAgICAgICAgMHg1MDA2DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1ByaW50RmxhZ3NDcm9wICAgICAgICAgICAgMHg1MDA3DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1ByaW50RmxhZ3NCbGVlZFdpZHRoICAgICAgMHg1MDA4DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1ByaW50RmxhZ3NCbGVlZFdpZHRoU2NhbGUgMHg1MDA5DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0hhbGZ0b25lTFBJICAgICAgICAgICAgICAgMHg1MDBBDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0hhbGZ0b25lTFBJVW5pdCAgICAgICAgICAgMHg1MDBCDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0hhbGZ0b25lRGVncmVlICAgICAgICAgICAgMHg1MDBDDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0hhbGZ0b25lU2hhcGUgICAgICAgICAgICAgMHg1MDBEDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0hhbGZ0b25lTWlzYyAgICAgICAgICAgICAgMHg1MDBFDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0hhbGZ0b25lU2NyZWVuICAgICAgICAgICAgMHg1MDBGDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0pQRUdRdWFsaXR5ICAgICAgICAgICAgICAgMHg1MDEwDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dyaWRTaXplICAgICAgICAgICAgICAgICAgMHg1MDExDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1RodW1ibmFpbEZvcm1hdCAgICAgICAgICAgMHg1MDEyICAvLyAxID0gSlBFRywgMCA9IFJBVyBSR0INCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsV2lkdGggICAgICAgICAgICAweDUwMTMNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsSGVpZ2h0ICAgICAgICAgICAweDUwMTQNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsQ29sb3JEZXB0aCAgICAgICAweDUwMTUNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsUGxhbmVzICAgICAgICAgICAweDUwMTYNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsUmF3Qnl0ZXMgICAgICAgICAweDUwMTcNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsU2l6ZSAgICAgICAgICAgICAweDUwMTgNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsQ29tcHJlc3NlZFNpemUgICAweDUwMTkNCisjZGVmaW5lIFByb3BlcnR5VGFnQ29sb3JUcmFuc2ZlckZ1bmN0aW9uICAgICAweDUwMUENCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsRGF0YSAgICAgICAgICAgICAweDUwMUIvLyBSQVcgdGh1bWJuYWlsIGJpdHMgaW4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBKUEVHIGZvcm1hdCBvciBSR0IgZm9ybWF0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVwZW5kcyBvbg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb3BlcnR5VGFnVGh1bWJuYWlsRm9ybWF0DQorDQorLy8gVGh1bWJuYWlsIHJlbGF0ZWQgVEFHcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxJbWFnZVdpZHRoICAgICAgIDB4NTAyMCAgLy8gVGh1bWJuYWlsIHdpZHRoDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1RodW1ibmFpbEltYWdlSGVpZ2h0ICAgICAgMHg1MDIxICAvLyBUaHVtYm5haWwgaGVpZ2h0DQorI2RlZmluZSBQcm9wZXJ0eVRhZ1RodW1ibmFpbEJpdHNQZXJTYW1wbGUgICAgMHg1MDIyICAvLyBOdW1iZXIgb2YgYml0cyBwZXINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudA0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxDb21wcmVzc2lvbiAgICAgIDB4NTAyMyAgLy8gQ29tcHJlc3Npb24gU2NoZW1lDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1RodW1ibmFpbFBob3RvbWV0cmljSW50ZXJwIDB4NTAyNCAvLyBQaXhlbCBjb21wb3NpdGlvbg0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxJbWFnZURlc2NyaXB0aW9uIDB4NTAyNSAgLy8gSW1hZ2UgVGlsZQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxFcXVpcE1ha2UgICAgICAgIDB4NTAyNiAgLy8gTWFudWZhY3R1cmVyIG9mIEltYWdlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnB1dCBlcXVpcG1lbnQNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsRXF1aXBNb2RlbCAgICAgICAweDUwMjcgIC8vIE1vZGVsIG9mIEltYWdlIGlucHV0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlcXVpcG1lbnQNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsU3RyaXBPZmZzZXRzICAgICAweDUwMjggIC8vIEltYWdlIGRhdGEgbG9jYXRpb24NCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsT3JpZW50YXRpb24gICAgICAweDUwMjkgIC8vIE9yaWVudGF0aW9uIG9mIGltYWdlDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1RodW1ibmFpbFNhbXBsZXNQZXJQaXhlbCAgMHg1MDJBICAvLyBOdW1iZXIgb2YgY29tcG9uZW50cw0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxSb3dzUGVyU3RyaXAgICAgIDB4NTAyQiAgLy8gTnVtYmVyIG9mIHJvd3MgcGVyIHN0cmlwDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1RodW1ibmFpbFN0cmlwQnl0ZXNDb3VudCAgMHg1MDJDICAvLyBCeXRlcyBwZXIgY29tcHJlc3NlZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyaXANCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsUmVzb2x1dGlvblggICAgICAweDUwMkQgIC8vIFJlc29sdXRpb24gaW4gd2lkdGgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpcmVjdGlvbg0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxSZXNvbHV0aW9uWSAgICAgIDB4NTAyRSAgLy8gUmVzb2x1dGlvbiBpbiBoZWlnaHQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpcmVjdGlvbg0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxQbGFuYXJDb25maWcgICAgIDB4NTAyRiAgLy8gSW1hZ2UgZGF0YSBhcnJhbmdlbWVudA0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxSZXNvbHV0aW9uVW5pdCAgIDB4NTAzMCAgLy8gVW5pdCBvZiBYIGFuZCBZDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNvbHV0aW9uDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1RodW1ibmFpbFRyYW5zZmVyRnVuY3Rpb24gMHg1MDMxICAvLyBUcmFuc2ZlciBmdW5jdGlvbg0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxTb2Z0d2FyZVVzZWQgICAgIDB4NTAzMiAgLy8gU29mdHdhcmUgdXNlZA0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxEYXRlVGltZSAgICAgICAgIDB4NTAzMyAgLy8gRmlsZSBjaGFuZ2UgZGF0ZSBhbmQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpbWUNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsQXJ0aXN0ICAgICAgICAgICAweDUwMzQgIC8vIFBlcnNvbiB3aG8gY3JlYXRlZCB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltYWdlDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1RodW1ibmFpbFdoaXRlUG9pbnQgICAgICAgMHg1MDM1ICAvLyBXaGl0ZSBwb2ludCBjaHJvbWF0aWNpdHkNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsUHJpbWFyeUNocm9tYXRpY2l0aWVzIDB4NTAzNiANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENocm9tYXRpY2l0aWVzIG9mDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmltYXJpZXMNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsWUNiQ3JDb2VmZmljaWVudHMgMHg1MDM3IC8vIENvbG9yIHNwYWNlIHRyYW5zZm9ybWEtDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aW9uIGNvZWZmaWNpZW50cw0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxZQ2JDclN1YnNhbXBsaW5nIDB4NTAzOCAgLy8gU3Vic2FtcGxpbmcgcmF0aW8gb2YgWQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gQw0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxZQ2JDclBvc2l0aW9uaW5nIDB4NTAzOSAgLy8gWSBhbmQgQyBwb3NpdGlvbg0KKyNkZWZpbmUgUHJvcGVydHlUYWdUaHVtYm5haWxSZWZCbGFja1doaXRlICAgIDB4NTAzQSAgLy8gUGFpciBvZiBibGFjayBhbmQgd2hpdGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZmVyZW5jZSB2YWx1ZXMNCisjZGVmaW5lIFByb3BlcnR5VGFnVGh1bWJuYWlsQ29weVJpZ2h0ICAgICAgICAweDUwM0IgIC8vIENvcHlSaWdodCBob2xkZXINCisNCisjZGVmaW5lIFByb3BlcnR5VGFnTHVtaW5hbmNlVGFibGUgICAgICAgICAgICAweDUwOTANCisjZGVmaW5lIFByb3BlcnR5VGFnQ2hyb21pbmFuY2VUYWJsZSAgICAgICAgICAweDUwOTENCisNCisjZGVmaW5lIFByb3BlcnR5VGFnRnJhbWVEZWxheSAgICAgICAgICAgICAgICAweDUxMDANCisjZGVmaW5lIFByb3BlcnR5VGFnTG9vcENvdW50ICAgICAgICAgICAgICAgICAweDUxMDENCisNCisjZGVmaW5lIFByb3BlcnR5VGFnUGl4ZWxVbml0ICAgICAgICAgMHg1MTEwICAvLyBVbml0IHNwZWNpZmllciBmb3IgcGl4ZWwvdW5pdA0KKyNkZWZpbmUgUHJvcGVydHlUYWdQaXhlbFBlclVuaXRYICAgICAweDUxMTEgIC8vIFBpeGVscyBwZXIgdW5pdCBpbiBYDQorI2RlZmluZSBQcm9wZXJ0eVRhZ1BpeGVsUGVyVW5pdFkgICAgIDB4NTExMiAgLy8gUGl4ZWxzIHBlciB1bml0IGluIFkNCisjZGVmaW5lIFByb3BlcnR5VGFnUGFsZXR0ZUhpc3RvZ3JhbSAgMHg1MTEzICAvLyBQYWxldHRlIGhpc3RvZ3JhbQ0KKw0KKy8vIEVYSUYgc3BlY2lmaWMgdGFnDQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZFeHBvc3VyZVRpbWUgIDB4ODI5QQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmRk51bWJlciAgICAgICAweDgyOUQNCisNCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkV4cG9zdXJlUHJvZyAgMHg4ODIyDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZTcGVjdHJhbFNlbnNlIDB4ODgyNA0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmSVNPU3BlZWQgICAgICAweDg4MjcNCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZk9FQ0YgICAgICAgICAgMHg4ODI4DQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZWZXIgICAgICAgICAgICAweDkwMDANCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkRUT3JpZyAgICAgICAgIDB4OTAwMyAvLyBEYXRlICYgdGltZSBvZiBvcmlnaW5hbA0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmRFREaWdpdGl6ZWQgICAgMHg5MDA0IC8vIERhdGUgJiB0aW1lIG9mIGRpZ2l0YWwgZGF0YSBnZW5lcmF0aW9uDQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZDb21wQ29uZmlnICAgICAweDkxMDENCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkNvbXBCUFAgICAgICAgIDB4OTEwMg0KKw0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmU2h1dHRlclNwZWVkICAgMHg5MjAxDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZBcGVydHVyZSAgICAgICAweDkyMDINCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkJyaWdodG5lc3MgICAgIDB4OTIwMw0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmRXhwb3N1cmVCaWFzICAgMHg5MjA0DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZNYXhBcGVydHVyZSAgICAweDkyMDUNCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZlN1YmplY3REaXN0ICAgIDB4OTIwNg0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmTWV0ZXJpbmdNb2RlICAgMHg5MjA3DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZMaWdodFNvdXJjZSAgICAweDkyMDgNCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkZsYXNoICAgICAgICAgIDB4OTIwOQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmRm9jYWxMZW5ndGggICAgMHg5MjBBDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZNYWtlck5vdGUgICAgICAweDkyN0MNCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZlVzZXJDb21tZW50ICAgIDB4OTI4Ng0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmRFRTdWJzZWMgICAgICAgMHg5MjkwICAvLyBEYXRlICYgVGltZSBzdWJzZWNvbmRzDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZEVE9yaWdTUyAgICAgICAweDkyOTEgIC8vIERhdGUgJiBUaW1lIG9yaWdpbmFsIHN1YnNlY29uZHMNCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkRURGlnU1MgICAgICAgIDB4OTI5MiAgLy8gRGF0ZSAmIFRJbWUgZGlnaXRpemVkIHN1YnNlY29uZHMNCisNCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkZQWFZlciAgICAgICAgIDB4QTAwMA0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmQ29sb3JTcGFjZSAgICAgMHhBMDAxDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZQaXhYRGltICAgICAgICAweEEwMDINCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZlBpeFlEaW0gICAgICAgIDB4QTAwMw0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmUmVsYXRlZFdhdiAgICAgMHhBMDA0ICAvLyByZWxhdGVkIHNvdW5kIGZpbGUNCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkludGVyb3AgICAgICAgIDB4QTAwNQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmRmxhc2hFbmVyZ3kgICAgMHhBMjBCDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZTcGF0aWFsRlIgICAgICAweEEyMEMgIC8vIFNwYXRpYWwgRnJlcXVlbmN5IFJlc3BvbnNlDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZGb2NhbFhSZXMgICAgICAweEEyMEUgIC8vIEZvY2FsIFBsYW5lIFggUmVzb2x1dGlvbg0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmRm9jYWxZUmVzICAgICAgMHhBMjBGICAvLyBGb2NhbCBQbGFuZSBZIFJlc29sdXRpb24NCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkZvY2FsUmVzVW5pdCAgIDB4QTIxMCAgLy8gRm9jYWwgUGxhbmUgUmVzb2x1dGlvbiBVbml0DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZTdWJqZWN0TG9jICAgICAweEEyMTQNCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZkV4cG9zdXJlSW5kZXggIDB4QTIxNQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmU2Vuc2luZ01ldGhvZCAgMHhBMjE3DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0V4aWZGaWxlU291cmNlICAgICAweEEzMDANCisjZGVmaW5lIFByb3BlcnR5VGFnRXhpZlNjZW5lVHlwZSAgICAgIDB4QTMwMQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdFeGlmQ2ZhUGF0dGVybiAgICAgMHhBMzAyDQorDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc1ZlciAgICAgICAgICAgICAweDAwMDANCisjZGVmaW5lIFByb3BlcnR5VGFnR3BzTGF0aXR1ZGVSZWYgICAgIDB4MDAwMQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdHcHNMYXRpdHVkZSAgICAgICAgMHgwMDAyDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc0xvbmdpdHVkZVJlZiAgICAweDAwMDMNCisjZGVmaW5lIFByb3BlcnR5VGFnR3BzTG9uZ2l0dWRlICAgICAgIDB4MDAwNA0KKyNkZWZpbmUgUHJvcGVydHlUYWdHcHNBbHRpdHVkZVJlZiAgICAgMHgwMDA1DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc0FsdGl0dWRlICAgICAgICAweDAwMDYNCisjZGVmaW5lIFByb3BlcnR5VGFnR3BzR3BzVGltZSAgICAgICAgIDB4MDAwNw0KKyNkZWZpbmUgUHJvcGVydHlUYWdHcHNHcHNTYXRlbGxpdGVzICAgMHgwMDA4DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc0dwc1N0YXR1cyAgICAgICAweDAwMDkNCisjZGVmaW5lIFByb3BlcnR5VGFnR3BzR3BzTWVhc3VyZU1vZGUgIDB4MDBBDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc0dwc0RvcCAgICAgICAgICAweDAwMEIgIC8vIE1lYXN1cmVtZW50IHByZWNpc2lvbg0KKyNkZWZpbmUgUHJvcGVydHlUYWdHcHNTcGVlZFJlZiAgICAgICAgMHgwMDBDDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc1NwZWVkICAgICAgICAgICAweDAwMEQNCisjZGVmaW5lIFByb3BlcnR5VGFnR3BzVHJhY2tSZWYgICAgICAgIDB4MDAwRQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdHcHNUcmFjayAgICAgICAgICAgMHgwMDBGDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc0ltZ0RpclJlZiAgICAgICAweDAwMTANCisjZGVmaW5lIFByb3BlcnR5VGFnR3BzSW1nRGlyICAgICAgICAgIDB4MDAxMQ0KKyNkZWZpbmUgUHJvcGVydHlUYWdHcHNNYXBEYXR1bSAgICAgICAgMHgwMDEyDQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc0Rlc3RMYXRSZWYgICAgICAweDAwMTMNCisjZGVmaW5lIFByb3BlcnR5VGFnR3BzRGVzdExhdCAgICAgICAgIDB4MDAxNA0KKyNkZWZpbmUgUHJvcGVydHlUYWdHcHNEZXN0TG9uZ1JlZiAgICAgMHgwMDE1DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc0Rlc3RMb25nICAgICAgICAweDAwMTYNCisjZGVmaW5lIFByb3BlcnR5VGFnR3BzRGVzdEJlYXJSZWYgICAgIDB4MDAxNw0KKyNkZWZpbmUgUHJvcGVydHlUYWdHcHNEZXN0QmVhciAgICAgICAgMHgwMDE4DQorI2RlZmluZSBQcm9wZXJ0eVRhZ0dwc0Rlc3REaXN0UmVmICAgICAweDAwMTkNCisjZGVmaW5lIFByb3BlcnR5VGFnR3BzRGVzdERpc3QgICAgICAgIDB4MDAxQQ0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNMaW5lQ2Fwcy5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c0xpbmVDYXBzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThhMjk1MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNMaW5lQ2Fwcy5oCkBAIC0wLDAgKzEsMjUzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKiANCisqIENvcHlyaWdodCAoYykgMjAwMCwgTWljcm9zb2Z0IENvcnAuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyoNCisqIE1vZHVsZSBOYW1lOg0KKyogDQorKiAgICBHZGlwbHVzTGluZUNhcHMuaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgQVBJcyBmb3IgQ3VzdG9tIExpbmUgQ2Fwcw0KKyoNCitcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfR0RJUExVU0xJTkVDQVBTX0gNCisjZGVmaW5lIF9HRElQTFVTTElORUNBUFNfSA0KKw0KK2lubGluZSANCitDdXN0b21MaW5lQ2FwOjpDdXN0b21MaW5lQ2FwKA0KKyAgICBJTiBjb25zdCBHcmFwaGljc1BhdGgqIGZpbGxQYXRoLA0KKyAgICBJTiBjb25zdCBHcmFwaGljc1BhdGgqIHN0cm9rZVBhdGgsDQorICAgIElOIExpbmVDYXAgYmFzZUNhcCwNCisgICAgSU4gUkVBTCBiYXNlSW5zZXQNCisgICAgKQ0KK3sNCisgICAgbmF0aXZlQ2FwID0gTlVMTDsNCisgICAgR3BQYXRoKiBuYXRpdmVGaWxsUGF0aCA9IE5VTEw7DQorICAgIEdwUGF0aCogbmF0aXZlU3Ryb2tlUGF0aCA9IE5VTEw7DQorDQorICAgIGlmKGZpbGxQYXRoKQ0KKyAgICAgICAgbmF0aXZlRmlsbFBhdGggPSBmaWxsUGF0aC0+bmF0aXZlUGF0aDsNCisgICAgaWYoc3Ryb2tlUGF0aCkNCisgICAgICAgIG5hdGl2ZVN0cm9rZVBhdGggPSBzdHJva2VQYXRoLT5uYXRpdmVQYXRoOw0KKw0KKyAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZUN1c3RvbUxpbmVDYXAoDQorICAgICAgICAgICAgICAgICAgICBuYXRpdmVGaWxsUGF0aCwgbmF0aXZlU3Ryb2tlUGF0aCwNCisgICAgICAgICAgICAgICAgICAgIGJhc2VDYXAsIGJhc2VJbnNldCwgJm5hdGl2ZUNhcCk7DQorfQ0KKw0KK2lubGluZSANCitDdXN0b21MaW5lQ2FwOjpDdXN0b21MaW5lQ2FwKCkNCit7DQorICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3Igc3ViY2xhc3Nlcy4NCisgICAgLy8gU28gZG9uJ3QgY3JlYXRlIGEgbmF0aXZlQ2FwLg0KKw0KKyAgICBuYXRpdmVDYXAgPSBOVUxMOw0KKyAgICBsYXN0UmVzdWx0ID0gT2s7DQorfQ0KKw0KK2lubGluZSANCitDdXN0b21MaW5lQ2FwOjp+Q3VzdG9tTGluZUNhcCgpDQorew0KKyAgICBEbGxFeHBvcnRzOjpHZGlwRGVsZXRlQ3VzdG9tTGluZUNhcChuYXRpdmVDYXApOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0N1c3RvbUxpbmVDYXA6OlNldFN0cm9rZUNhcHMoDQorICAgIElOIExpbmVDYXAgc3RhcnRDYXAsIA0KKyAgICBJTiBMaW5lQ2FwIGVuZENhcCkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEN1c3RvbUxpbmVDYXBTdHJva2VDYXBzKG5hdGl2ZUNhcCwNCisgICAgICAgICAgICAgICAgc3RhcnRDYXAsIGVuZENhcCkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0N1c3RvbUxpbmVDYXA6OkdldFN0cm9rZUNhcHMoDQorICAgIE9VVCBMaW5lQ2FwKiBzdGFydENhcCwgDQorICAgIE9VVCBMaW5lQ2FwKiBlbmRDYXApIGNvbnN0DQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRDdXN0b21MaW5lQ2FwU3Ryb2tlQ2FwcyhuYXRpdmVDYXAsDQorICAgICAgICAgICAgICAgICBzdGFydENhcCwgZW5kQ2FwKSk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorQ3VzdG9tTGluZUNhcDo6U2V0U3Ryb2tlSm9pbigNCisgICAgSU4gTGluZUpvaW4gbGluZUpvaW4pDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRDdXN0b21MaW5lQ2FwU3Ryb2tlSm9pbihuYXRpdmVDYXAsIGxpbmVKb2luKSk7DQorfQ0KKw0KK2lubGluZSBMaW5lSm9pbiANCitDdXN0b21MaW5lQ2FwOjpHZXRTdHJva2VKb2luKCkgY29uc3QNCit7DQorICAgIExpbmVKb2luIGxpbmVKb2luOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEN1c3RvbUxpbmVDYXBTdHJva2VKb2luKG5hdGl2ZUNhcCwgJmxpbmVKb2luKSk7DQorDQorICAgIHJldHVybiBsaW5lSm9pbjsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitDdXN0b21MaW5lQ2FwOjpTZXRCYXNlQ2FwKElOIExpbmVDYXAgYmFzZUNhcCkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEN1c3RvbUxpbmVDYXBCYXNlQ2FwKG5hdGl2ZUNhcCwgYmFzZUNhcCkpOw0KK30NCisNCitpbmxpbmUgTGluZUNhcCANCitDdXN0b21MaW5lQ2FwOjpHZXRCYXNlQ2FwKCkgY29uc3QNCit7DQorICAgIExpbmVDYXAgYmFzZUNhcDsNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRDdXN0b21MaW5lQ2FwQmFzZUNhcChuYXRpdmVDYXAsICZiYXNlQ2FwKSk7DQorDQorICAgIHJldHVybiBiYXNlQ2FwOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK0N1c3RvbUxpbmVDYXA6OlNldEJhc2VJbnNldChJTiBSRUFMIGluc2V0KQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0Q3VzdG9tTGluZUNhcEJhc2VJbnNldChuYXRpdmVDYXAsIGluc2V0KSk7DQorfQ0KKw0KK2lubGluZSBSRUFMIA0KK0N1c3RvbUxpbmVDYXA6OkdldEJhc2VJbnNldCgpIGNvbnN0DQorew0KKyAgICBSRUFMIGluc2V0Ow0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEN1c3RvbUxpbmVDYXBCYXNlSW5zZXQobmF0aXZlQ2FwLCAmaW5zZXQpKTsNCisNCisgICAgcmV0dXJuIGluc2V0Ow0KK30NCisNCisNCitpbmxpbmUgU3RhdHVzIA0KK0N1c3RvbUxpbmVDYXA6OlNldFdpZHRoU2NhbGUoSU4gUkVBTCB3aWR0aFNjYWxlKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0Q3VzdG9tTGluZUNhcFdpZHRoU2NhbGUobmF0aXZlQ2FwLCB3aWR0aFNjYWxlKSk7DQorfQ0KKw0KK2lubGluZSBSRUFMIA0KK0N1c3RvbUxpbmVDYXA6OkdldFdpZHRoU2NhbGUoKSBjb25zdA0KK3sNCisgICAgUkVBTCB3aWR0aFNjYWxlOw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEN1c3RvbUxpbmVDYXBXaWR0aFNjYWxlKG5hdGl2ZUNhcCwgJndpZHRoU2NhbGUpKTsNCisNCisgICAgcmV0dXJuIHdpZHRoU2NhbGU7DQorfQ0KKw0KK2lubGluZSBDdXN0b21MaW5lQ2FwKiANCitDdXN0b21MaW5lQ2FwOjpDbG9uZSgpIGNvbnN0DQorew0KKyAgICBHcEN1c3RvbUxpbmVDYXAgKm5ld05hdGl2ZUxpbmVDYXAgPSBOVUxMOw0KKyAgICANCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDbG9uZUN1c3RvbUxpbmVDYXAobmF0aXZlQ2FwLCAmbmV3TmF0aXZlTGluZUNhcCkpOw0KKw0KKyAgICBpZiAobGFzdFJlc3VsdCA9PSBPaykgDQorICAgIHsNCisgICAgICAgIEN1c3RvbUxpbmVDYXAgKm5ld0xpbmVDYXAgPSBuZXcgQ3VzdG9tTGluZUNhcChuZXdOYXRpdmVMaW5lQ2FwLCBsYXN0UmVzdWx0KTsNCisgICAgICAgIGlmIChuZXdMaW5lQ2FwID09IE5VTEwpIA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwRGVsZXRlQ3VzdG9tTGluZUNhcChuZXdOYXRpdmVMaW5lQ2FwKSk7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4gbmV3TGluZUNhcDsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorDQorY2xhc3MgQWRqdXN0YWJsZUFycm93Q2FwIDogcHVibGljIEN1c3RvbUxpbmVDYXANCit7DQorcHVibGljOg0KKw0KKyAgICBBZGp1c3RhYmxlQXJyb3dDYXAoDQorICAgICAgICBJTiBSRUFMIGhlaWdodCwNCisgICAgICAgIElOIFJFQUwgd2lkdGgsDQorICAgICAgICBJTiBCT09MIGlzRmlsbGVkID0gVFJVRQ0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICBHcEFkanVzdGFibGVBcnJvd0NhcCogY2FwID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlQWRqdXN0YWJsZUFycm93Q2FwKA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgd2lkdGgsIGlzRmlsbGVkLCAmY2FwKTsNCisgICAgICAgIFNldE5hdGl2ZUNhcChjYXApOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRIZWlnaHQoSU4gUkVBTCBoZWlnaHQpDQorICAgIHsNCisgICAgICAgIEdwQWRqdXN0YWJsZUFycm93Q2FwKiBjYXAgPSAoR3BBZGp1c3RhYmxlQXJyb3dDYXAqKSBuYXRpdmVDYXA7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRBZGp1c3RhYmxlQXJyb3dDYXBIZWlnaHQoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcCwgaGVpZ2h0KSk7DQorICAgIH0NCisNCisgICAgUkVBTCBHZXRIZWlnaHQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBHcEFkanVzdGFibGVBcnJvd0NhcCogY2FwID0gKEdwQWRqdXN0YWJsZUFycm93Q2FwKikgbmF0aXZlQ2FwOw0KKyAgICAgICAgUkVBTCBoZWlnaHQ7DQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEFkanVzdGFibGVBcnJvd0NhcEhlaWdodCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwLCAmaGVpZ2h0KSk7DQorDQorICAgICAgICByZXR1cm4gaGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRXaWR0aChJTiBSRUFMIHdpZHRoKQ0KKyAgICB7DQorICAgICAgICBHcEFkanVzdGFibGVBcnJvd0NhcCogY2FwID0gKEdwQWRqdXN0YWJsZUFycm93Q2FwKikgbmF0aXZlQ2FwOw0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0QWRqdXN0YWJsZUFycm93Q2FwV2lkdGgoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcCwgd2lkdGgpKTsNCisgICAgfQ0KKw0KKyAgICBSRUFMIEdldFdpZHRoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgR3BBZGp1c3RhYmxlQXJyb3dDYXAqIGNhcCA9IChHcEFkanVzdGFibGVBcnJvd0NhcCopIG5hdGl2ZUNhcDsNCisgICAgICAgIFJFQUwgd2lkdGg7DQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEFkanVzdGFibGVBcnJvd0NhcFdpZHRoKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXAsICZ3aWR0aCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIHdpZHRoOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRNaWRkbGVJbnNldChJTiBSRUFMIG1pZGRsZUluc2V0KQ0KKyAgICB7DQorICAgICAgICBHcEFkanVzdGFibGVBcnJvd0NhcCogY2FwID0gKEdwQWRqdXN0YWJsZUFycm93Q2FwKikgbmF0aXZlQ2FwOw0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0QWRqdXN0YWJsZUFycm93Q2FwTWlkZGxlSW5zZXQoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcCwgbWlkZGxlSW5zZXQpKTsNCisgICAgfQ0KKw0KKyAgICBSRUFMIEdldE1pZGRsZUluc2V0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgR3BBZGp1c3RhYmxlQXJyb3dDYXAqIGNhcCA9IChHcEFkanVzdGFibGVBcnJvd0NhcCopIG5hdGl2ZUNhcDsNCisgICAgICAgIFJFQUwgbWlkZGxlSW5zZXQ7DQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEFkanVzdGFibGVBcnJvd0NhcE1pZGRsZUluc2V0KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXAsICZtaWRkbGVJbnNldCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIG1pZGRsZUluc2V0Ow0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRGaWxsU3RhdGUoSU4gQk9PTCBpc0ZpbGxlZCkNCisgICAgew0KKyAgICAgICAgR3BBZGp1c3RhYmxlQXJyb3dDYXAqIGNhcCA9IChHcEFkanVzdGFibGVBcnJvd0NhcCopIG5hdGl2ZUNhcDsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEFkanVzdGFibGVBcnJvd0NhcEZpbGxTdGF0ZSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwLCBpc0ZpbGxlZCkpOw0KKyAgICB9DQorDQorICAgIEJPT0wgSXNGaWxsZWQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBHcEFkanVzdGFibGVBcnJvd0NhcCogY2FwID0gKEdwQWRqdXN0YWJsZUFycm93Q2FwKikgbmF0aXZlQ2FwOw0KKyAgICAgICAgQk9PTCBpc0ZpbGxlZDsNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0QWRqdXN0YWJsZUFycm93Q2FwRmlsbFN0YXRlKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXAsICZpc0ZpbGxlZCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIGlzRmlsbGVkOw0KKyAgICB9DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzI1MDkzMg0KKw0KK3ByaXZhdGU6DQorICAgIEFkanVzdGFibGVBcnJvd0NhcChjb25zdCBBZGp1c3RhYmxlQXJyb3dDYXAgJik7DQorICAgIEFkanVzdGFibGVBcnJvd0NhcCYgb3BlcmF0b3I9KGNvbnN0IEFkanVzdGFibGVBcnJvd0NhcCAmKTsNCisNCisjZW5kaWYNCisNCit9Ow0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNNYXRyaXguaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNNYXRyaXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmEzZGY4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c01hdHJpeC5oCkBAIC0wLDAgKzEsMzA5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKiANCisqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLCBNaWNyb3NvZnQgQ29ycC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzTWF0cml4LmgNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIEdESSsgTWF0cml4IGNsYXNzDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitjbGFzcyBNYXRyaXggOiBwdWJsaWMgR2RpcGx1c0Jhc2UNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3M7DQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc1BhdGg7DQorICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJlQnJ1c2g7DQorICAgIGZyaWVuZCBjbGFzcyBMaW5lYXJHcmFkaWVudEJydXNoOw0KKyAgICBmcmllbmQgY2xhc3MgUGF0aEdyYWRpZW50QnJ1c2g7DQorICAgIGZyaWVuZCBjbGFzcyBQZW47DQorICAgIGZyaWVuZCBjbGFzcyBSZWdpb247DQorICAgIA0KKyAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yIC0gc2V0IHRvIGlkZW50aXR5IG1hdHJpeA0KKw0KKyAgICBNYXRyaXgoKQ0KKyAgICB7DQorICAgICAgICBHcE1hdHJpeCAqbWF0cml4ID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlTWF0cml4KCZtYXRyaXgpOw0KKyAgICANCisgICAgICAgIFNldE5hdGl2ZU1hdHJpeChtYXRyaXgpOw0KKyAgICB9DQorDQorICAgIE1hdHJpeChJTiBSRUFMIG0xMSwgDQorICAgICAgICAgICBJTiBSRUFMIG0xMiwNCisgICAgICAgICAgIElOIFJFQUwgbTIxLCANCisgICAgICAgICAgIElOIFJFQUwgbTIyLA0KKyAgICAgICAgICAgSU4gUkVBTCBkeCwgDQorICAgICAgICAgICBJTiBSRUFMIGR5KQ0KKyAgICB7DQorICAgICAgICBHcE1hdHJpeCAqbWF0cml4ID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlTWF0cml4MihtMTEsIG0xMiwgbTIxLCBtMjIsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR4LCBkeSwgJm1hdHJpeCk7DQorICAgIA0KKyAgICAgICAgU2V0TmF0aXZlTWF0cml4KG1hdHJpeCk7DQorICAgIH0NCisgICAgDQorICAgIE1hdHJpeChJTiBjb25zdCBSZWN0RiYgcmVjdCwgDQorICAgICAgICAgICBJTiBjb25zdCBQb2ludEYqIGRzdHBsZykNCisgICAgew0KKyAgICAgICAgR3BNYXRyaXggKm1hdHJpeCA9IE5VTEw7DQorDQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZU1hdHJpeDMoJnJlY3QsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdHBsZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF0cml4KTsNCisNCisgICAgICAgIFNldE5hdGl2ZU1hdHJpeChtYXRyaXgpOw0KKyAgICB9DQorDQorICAgIE1hdHJpeChJTiBjb25zdCBSZWN0JiByZWN0LCANCisgICAgICAgICAgIElOIGNvbnN0IFBvaW50KiBkc3RwbGcpDQorICAgIHsNCisgICAgICAgIEdwTWF0cml4ICptYXRyaXggPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVNYXRyaXgzSSgmcmVjdCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdHBsZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1hdHJpeCk7DQorDQorICAgICAgICBTZXROYXRpdmVNYXRyaXgobWF0cml4KTsNCisgICAgfQ0KKw0KKyAgICB+TWF0cml4KCkNCisgICAgew0KKyAgICAgICAgRGxsRXhwb3J0czo6R2RpcERlbGV0ZU1hdHJpeChuYXRpdmVNYXRyaXgpOw0KKyAgICB9DQorDQorICAgIE1hdHJpeCAqQ2xvbmUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBHcE1hdHJpeCAqY2xvbmVNYXRyaXggPSBOVUxMOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDbG9uZU1hdHJpeChuYXRpdmVNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xvbmVNYXRyaXgpKTsNCisNCisgICAgICAgIGlmIChsYXN0UmVzdWx0ICE9IE9rKQ0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKw0KKyAgICAgICAgcmV0dXJuIG5ldyBNYXRyaXgoY2xvbmVNYXRyaXgpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRFbGVtZW50cyhPVVQgUkVBTCAqbSkgY29uc3QgDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldE1hdHJpeEVsZW1lbnRzKG5hdGl2ZU1hdHJpeCwgbSkpOw0KKyAgICB9DQorICAgIA0KKyAgICBTdGF0dXMgU2V0RWxlbWVudHMoSU4gUkVBTCBtMTEsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBtMTIsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBtMjEsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBtMjIsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBkeCwgDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIGR5KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRNYXRyaXhFbGVtZW50cyhuYXRpdmVNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xMSwgbTEyLCBtMjEsIG0yMiwgZHgsIGR5KSk7DQorICAgIH0NCisNCisgICAgUkVBTCBPZmZzZXRYKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgUkVBTCBlbGVtZW50c1s2XTsNCisNCisgICAgICAgIGlmIChHZXRFbGVtZW50cygmZWxlbWVudHNbMF0pID09IE9rKQ0KKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50c1s0XTsNCisgICAgICAgIGVsc2UgDQorICAgICAgICAgICAgcmV0dXJuIDAuMGY7DQorICAgIH0NCisNCisgICAgUkVBTCBPZmZzZXRZKCkgY29uc3QNCisgICAgew0KKyAgICAgICBSRUFMIGVsZW1lbnRzWzZdOw0KKw0KKyAgICAgICBpZiAoR2V0RWxlbWVudHMoJmVsZW1lbnRzWzBdKSA9PSBPaykNCisgICAgICAgICAgIHJldHVybiBlbGVtZW50c1s1XTsNCisgICAgICAgZWxzZSANCisgICAgICAgICAgIHJldHVybiAwLjBmOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBSZXNldCgpDQorICAgIHsNCisgICAgICAgIC8vIHNldCBpZGVudGl0eSBtYXRyaXggZWxlbWVudHMgDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRNYXRyaXhFbGVtZW50cyhuYXRpdmVNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wLCAwLjAsIDAuMCwgMS4wLCAwLjAsIDAuMCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBNdWx0aXBseShJTiBjb25zdCBNYXRyaXggKm1hdHJpeCwgDQorICAgICAgICAgICAgICAgICAgICBJTiBNYXRyaXhPcmRlciBvcmRlciA9IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwTXVsdGlwbHlNYXRyaXgobmF0aXZlTWF0cml4LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXgtPm5hdGl2ZU1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcikpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBUcmFuc2xhdGUoSU4gUkVBTCBvZmZzZXRYLCANCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIG9mZnNldFksIA0KKyAgICAgICAgICAgICAgICAgICAgIElOIE1hdHJpeE9yZGVyIG9yZGVyID0gTWF0cml4T3JkZXJQcmVwZW5kKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBUcmFuc2xhdGVNYXRyaXgobmF0aXZlTWF0cml4LCBvZmZzZXRYLCBvZmZzZXRZLCBvcmRlcikpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTY2FsZShJTiBSRUFMIHNjYWxlWCwgDQorICAgICAgICAgICAgICAgICBJTiBSRUFMIHNjYWxlWSwgDQorICAgICAgICAgICAgICAgICBJTiBNYXRyaXhPcmRlciBvcmRlciA9IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2NhbGVNYXRyaXgobmF0aXZlTWF0cml4LCBzY2FsZVgsIHNjYWxlWSwgb3JkZXIpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgUm90YXRlKElOIFJFQUwgYW5nbGUsIA0KKyAgICAgICAgICAgICAgICAgIElOIE1hdHJpeE9yZGVyIG9yZGVyID0gTWF0cml4T3JkZXJQcmVwZW5kKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBSb3RhdGVNYXRyaXgobmF0aXZlTWF0cml4LCBhbmdsZSwgb3JkZXIpKTsNCisgICAgfQ0KKyAgICANCisgICAgU3RhdHVzIFJvdGF0ZUF0KElOIFJFQUwgYW5nbGUsIA0KKyAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnRGJiBjZW50ZXIsIA0KKyAgICAgICAgICAgICAgICAgICAgSU4gTWF0cml4T3JkZXIgb3JkZXIgPSBNYXRyaXhPcmRlclByZXBlbmQpDQorICAgIHsNCisgICAgICAgIGlmKG9yZGVyID09IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFRyYW5zbGF0ZU1hdHJpeChuYXRpdmVNYXRyaXgsIGNlbnRlci5YLCBjZW50ZXIuWSwgb3JkZXIpKTsNCisgICAgICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFJvdGF0ZU1hdHJpeChuYXRpdmVNYXRyaXgsIGFuZ2xlLCBvcmRlcikpOw0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFRyYW5zbGF0ZU1hdHJpeChuYXRpdmVNYXRyaXgsIC0gY2VudGVyLlgsIC0gY2VudGVyLlksIG9yZGVyKSk7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBUcmFuc2xhdGVNYXRyaXgobmF0aXZlTWF0cml4LCAtIGNlbnRlci5YLCAtIGNlbnRlci5ZLCBvcmRlcikpOw0KKyAgICAgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUm90YXRlTWF0cml4KG5hdGl2ZU1hdHJpeCwgYW5nbGUsIG9yZGVyKSk7DQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwVHJhbnNsYXRlTWF0cml4KG5hdGl2ZU1hdHJpeCwgY2VudGVyLlgsIGNlbnRlci5ZLCBvcmRlcikpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTaGVhcihJTiBSRUFMIHNoZWFyWCwgDQorICAgICAgICAgICAgICAgICBJTiBSRUFMIHNoZWFyWSwNCisgICAgICAgICAgICAgICAgIElOIE1hdHJpeE9yZGVyIG9yZGVyID0gTWF0cml4T3JkZXJQcmVwZW5kKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTaGVhck1hdHJpeChuYXRpdmVNYXRyaXgsIHNoZWFyWCwgc2hlYXJZLCBvcmRlcikpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBJbnZlcnQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJbnZlcnRNYXRyaXgobmF0aXZlTWF0cml4KSk7DQorICAgIH0NCisNCisgICAgLy8gZmxvYXQgdmVyc2lvbg0KKyAgICBTdGF0dXMgVHJhbnNmb3JtUG9pbnRzKElOIE9VVCBQb2ludEYqIHB0cywgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50ID0gMSkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwVHJhbnNmb3JtTWF0cml4UG9pbnRzKG5hdGl2ZU1hdHJpeCwgcHRzLCBjb3VudCkpOw0KKyAgICB9DQorICAgIA0KKyAgICBTdGF0dXMgVHJhbnNmb3JtUG9pbnRzKElOIE9VVCBQb2ludCogcHRzLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQgPSAxKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBUcmFuc2Zvcm1NYXRyaXhQb2ludHNJKG5hdGl2ZU1hdHJpeCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cywgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFRyYW5zZm9ybVZlY3RvcnMoSU4gT1VUIFBvaW50RiogcHRzLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50ID0gMSkgY29uc3QNCisgICAgeyANCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFZlY3RvclRyYW5zZm9ybU1hdHJpeFBvaW50cyhuYXRpdmVNYXRyaXgsIHB0cywgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgVHJhbnNmb3JtVmVjdG9ycyhJTiBPVVQgUG9pbnQqIHB0cywgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCA9IDEpIGNvbnN0DQorICAgIHsgDQorICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFZlY3RvclRyYW5zZm9ybU1hdHJpeFBvaW50c0kobmF0aXZlTWF0cml4LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cywgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICB9DQorICAgIA0KKyAgICBCT09MIElzSW52ZXJ0aWJsZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEJPT0wgcmVzdWx0ID0gRkFMU0U7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzTWF0cml4SW52ZXJ0aWJsZShuYXRpdmVNYXRyaXgsICZyZXN1bHQpKTsNCisgICAgDQorICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICB9DQorDQorICAgIEJPT0wgSXNJZGVudGl0eSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgQk9PTCByZXN1bHQgPSBGQUxTRTsNCisNCisgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJc01hdHJpeElkZW50aXR5KG5hdGl2ZU1hdHJpeCwgJnJlc3VsdCkpOw0KKyAgICANCisgICAgICAgcmV0dXJuIHJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICBCT09MIEVxdWFscyhJTiBjb25zdCBNYXRyaXggKm1hdHJpeCkgY29uc3QNCisgICAgew0KKyAgICAgICBCT09MIHJlc3VsdCA9IEZBTFNFOw0KKw0KKyAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzTWF0cml4RXF1YWwobmF0aXZlTWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXgtPm5hdGl2ZU1hdHJpeCwgJnJlc3VsdCkpOw0KKyAgIA0KKyAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICB9DQorICAgIA0KKyAgICBTdGF0dXMgR2V0TGFzdFN0YXR1cygpIGNvbnN0DQorICAgIHsNCisgICAgICAgIFN0YXR1cyBsYXN0U3RhdHVzID0gbGFzdFJlc3VsdDsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBPazsNCisgDQorICAgICAgICByZXR1cm4gbGFzdFN0YXR1czsNCisgICAgfQ0KKw0KK3Byb3RlY3RlZDoNCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMjUwOTMyDQorDQorcHJpdmF0ZToNCisgICAgTWF0cml4KGNvbnN0IE1hdHJpeCAmKTsNCisgICAgTWF0cml4JiBvcGVyYXRvcj0oY29uc3QgTWF0cml4ICYpOw0KK3Byb3RlY3RlZDoNCisNCisjZWxzZQ0KKw0KKyAgICBNYXRyaXgoY29uc3QgTWF0cml4JiBtYXRyaXgpDQorICAgIHsNCisgICAgICAgIG1hdHJpeDsNCisgICAgICAgIFNldFN0YXR1cyhOb3RJbXBsZW1lbnRlZCk7DQorICAgICAgICBTZXROYXRpdmVNYXRyaXgoTlVMTCk7DQorICAgIH0NCisNCisgICAgTWF0cml4JiBvcGVyYXRvcj0oY29uc3QgTWF0cml4JiBtYXRyaXgpDQorICAgIHsNCisgICAgICAgIG1hdHJpeDsNCisgICAgICAgIFNldFN0YXR1cyhOb3RJbXBsZW1lbnRlZCk7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisjZW5kaWYNCisNCisgICAgTWF0cml4KEdwTWF0cml4ICpuYXRpdmVNYXRyaXgpDQorICAgIHsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBPazsNCisgICAgICAgIFNldE5hdGl2ZU1hdHJpeChuYXRpdmVNYXRyaXgpOw0KKyAgICB9DQorICAgIA0KKyAgICBWT0lEIFNldE5hdGl2ZU1hdHJpeChHcE1hdHJpeCAqbmF0aXZlTWF0cml4KQ0KKyAgICB7DQorICAgICAgICB0aGlzLT5uYXRpdmVNYXRyaXggPSBuYXRpdmVNYXRyaXg7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldFN0YXR1cyhTdGF0dXMgc3RhdHVzKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoc3RhdHVzICE9IE9rKQ0KKyAgICAgICAgICAgIHJldHVybiAobGFzdFJlc3VsdCA9IHN0YXR1cyk7DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KK3Byb3RlY3RlZDoNCisgICAgR3BNYXRyaXggKm5hdGl2ZU1hdHJpeDsNCisgICAgbXV0YWJsZSBTdGF0dXMgbGFzdFJlc3VsdDsNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNNZW0uaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNNZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjkyYzFlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c01lbS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqDQorKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwgTWljcm9zb2Z0IENvcnAuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyoNCisqIE1vZHVsZSBOYW1lOg0KKyoNCisqICAgR2RpcGx1c01lbS5oDQorKg0KKyogQWJzdHJhY3Q6DQorKg0KKyogICBGbGF0IEdESSsgTWVtb3J5IEFsbG9jYXRvcnMgLSBoZWFkZXIgZmlsZQ0KKyoNCitcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLy8gVE9ETzogdGhpcyBmaWxlIHN0eWxlIG5lZWRzIHRvIGJlIG1hZGUgaW50ZXJuYWxseSBjb25zaXN0ZW50IHdpdGggdGhlIHdheQ0KKy8vICAgICAgIGl0IGhhbmRsZXMgYnJlYWtpbmcgdGhlIGxvbmcgYXJndW1lbnQgbGlzdHMgYWNyb3NzIG11bHRpcGxlIGxpbmVzDQorDQorI2lmbmRlZiBfR0RJUExVU01FTV9IDQorI2RlZmluZSBfR0RJUExVU01FTV9IDQorDQorI2RlZmluZSBXSU5HRElQQVBJIF9fc3RkY2FsbA0KKw0KKy8vIGN1cnJlbnRseSwgb25seSBDKysgd3JhcHBlciBBUEkncyBmb3JjZSBjb25zdC4NCisNCisjaWZkZWYgX0dESVBMVVNfSA0KKyNkZWZpbmUgR0RJUENPTlNUIGNvbnN0DQorI2Vsc2UNCisjZGVmaW5lIEdESVBDT05TVA0KKyNlbmRpZg0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIE1lbW9yeSBBbGxvY2F0aW9uIEFQSXMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCit2b2lkKiBXSU5HRElQQVBJDQorR2RpcEFsbG9jKHNpemVfdCBzaXplKTsNCisNCit2b2lkIFdJTkdESVBBUEkNCitHZGlwRnJlZSh2b2lkKiBwdHIpOw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCisjZW5kaWYgLy8gIV9HRElQTFVTTUVNX0gNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzTWV0YUZpbGUuaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNNZXRhRmlsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMDdkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzTWV0YUZpbGUuaApAQCAtMCwwICsxLDM3NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXA0KKyoNCisqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLCBNaWNyb3NvZnQgQ29ycC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzTWV0YWZpbGUuaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgTWV0YWZpbGUgcmVsYXRlZCBkZWNsYXJhdGlvbnMNCisqDQorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0dESVBMVVNNRVRBRklMRV9IDQorI2RlZmluZSBfR0RJUExVU01FVEFGSUxFX0gNCisNCitjbGFzcyBNZXRhZmlsZSA6IHB1YmxpYyBJbWFnZQ0KK3sNCitwdWJsaWM6DQorICAgIGZyaWVuZCBjbGFzcyBJbWFnZTsNCisNCisgICAgLy8gUmVhZCBhIG1ldGFmaWxlDQorICAgIE1ldGFmaWxlKCkNCisgICAgew0KKyAgICAgICAgU2V0TmF0aXZlSW1hZ2UoTlVMTCk7DQorICAgICAgICBsYXN0UmVzdWx0ID0gT2s7DQorICAgIH0NCisNCisgICAgLy8gUGxheWJhY2sgYSBtZXRhZmlsZSBmcm9tIGEgSE1FVEFGSUxFDQorICAgIC8vIElmIGRlbGV0ZVdtZiBpcyBUUlVFLCB0aGVuIHdoZW4gdGhlIG1ldGFmaWxlIGlzIGRlbGV0ZWQsDQorICAgIC8vIHRoZSBoV21mIHdpbGwgYWxzbyBiZSBkZWxldGVkLiAgT3RoZXJ3aXNlLCBpdCB3b24ndCBiZS4NCisgICAgTWV0YWZpbGUoSU4gSE1FVEFGSUxFIGhXbWYsDQorICAgICAgICAgICAgIElOIGNvbnN0IEFQTUZpbGVIZWFkZXIgKiBhcG1GaWxlSGVhZGVyLA0KKyAgICAgICAgICAgICBJTiBCT09MIGRlbGV0ZVdtZiA9IEZBTFNFKQ0KKyAgICB7DQorICAgICAgICBHcE1ldGFmaWxlICogICAgbWV0YWZpbGUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVNZXRhZmlsZUZyb21XbWYoaFdtZiwgZGVsZXRlV21mLCBhcG1GaWxlSGVhZGVyLCAmbWV0YWZpbGUpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlSW1hZ2UobWV0YWZpbGUpOw0KKyAgICB9DQorDQorICAgIC8vIFBsYXliYWNrIGEgbWV0YWZpbGUgZnJvbSBhIEhFTkhNRVRBRklMRQ0KKyAgICAvLyBJZiBkZWxldGVFbWYgaXMgVFJVRSwgdGhlbiB3aGVuIHRoZSBtZXRhZmlsZSBpcyBkZWxldGVkLA0KKyAgICAvLyB0aGUgaEVtZiB3aWxsIGFsc28gYmUgZGVsZXRlZC4gIE90aGVyd2lzZSwgaXQgd29uJ3QgYmUuDQorICAgIE1ldGFmaWxlKElOIEhFTkhNRVRBRklMRSBoRW1mLA0KKyAgICAgICAgICAgICBJTiBCT09MIGRlbGV0ZUVtZiA9IEZBTFNFKQ0KKyAgICB7DQorICAgICAgICBHcE1ldGFmaWxlICogICAgbWV0YWZpbGUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVNZXRhZmlsZUZyb21FbWYoaEVtZiwgZGVsZXRlRW1mLCAmbWV0YWZpbGUpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlSW1hZ2UobWV0YWZpbGUpOw0KKyAgICB9DQorDQorICAgIC8vIFBsYXliYWNrIGEgbWV0YWZpbGUgZnJvbSBhIGZpbGUNCisgICAgTWV0YWZpbGUoSU4gY29uc3QgV0NIQVIqIGZpbGVuYW1lKQ0KKyAgICB7DQorICAgICAgICBHcE1ldGFmaWxlICogICAgbWV0YWZpbGUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVNZXRhZmlsZUZyb21GaWxlKGZpbGVuYW1lLCAmbWV0YWZpbGUpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlSW1hZ2UobWV0YWZpbGUpOw0KKyAgICB9DQorDQorICAgIC8vIFBsYXliYWNrIGEgV01GIG1ldGFmaWxlIGZyb20gYSBmaWxlDQorICAgIE1ldGFmaWxlKElOIGNvbnN0IFdDSEFSKiBmaWxlbmFtZSwNCisgICAgICAgICAgICAgSU4gY29uc3QgQVBNRmlsZUhlYWRlciAqIGFwbUZpbGVIZWFkZXINCisgICAgICAgICAgICApDQorICAgIHsNCisgICAgICAgIEdwTWV0YWZpbGUgKiAgICBtZXRhZmlsZSA9IE5VTEw7DQorDQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZU1ldGFmaWxlRnJvbVdtZkZpbGUoZmlsZW5hbWUsIGFwbUZpbGVIZWFkZXIsICZtZXRhZmlsZSk7DQorDQorICAgICAgICBTZXROYXRpdmVJbWFnZShtZXRhZmlsZSk7DQorICAgIH0NCisNCisgICAgLy8gUGxheWJhY2sgYSBtZXRhZmlsZSBmcm9tIGEgc3RyZWFtDQorICAgIE1ldGFmaWxlKElOIElTdHJlYW0qIHN0cmVhbSkNCisgICAgew0KKyAgICAgICAgR3BNZXRhZmlsZSAqICAgIG1ldGFmaWxlID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlTWV0YWZpbGVGcm9tU3RyZWFtKHN0cmVhbSwgJm1ldGFmaWxlKTsNCisNCisgICAgICAgIFNldE5hdGl2ZUltYWdlKG1ldGFmaWxlKTsNCisgICAgfQ0KKw0KKyAgICAvLyBSZWNvcmQgYSBtZXRhZmlsZSB0byBtZW1vcnkNCisgICAgTWV0YWZpbGUoDQorICAgICAgICBJTiBIREMgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhkYywNCisgICAgICAgIElOIEVtZlR5cGUgICAgICAgICAgICAgdHlwZSAgICAgICAgPSBFbWZUeXBlRW1mUGx1c0R1YWwsDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAqICAgICAgIGRlc2NyaXB0aW9uID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICBHcE1ldGFmaWxlICogICAgbWV0YWZpbGUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBSZWNvcmRNZXRhZmlsZSgNCisgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VIZGMsIHR5cGUsIE5VTEwsIE1ldGFmaWxlRnJhbWVVbml0R2RpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLCAmbWV0YWZpbGUpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlSW1hZ2UobWV0YWZpbGUpOw0KKyAgICB9DQorDQorICAgIC8vIFJlY29yZCBhIG1ldGFmaWxlIHRvIG1lbW9yeQ0KKyAgICBNZXRhZmlsZSgNCisgICAgICAgIElOIEhEQyAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSGRjLA0KKyAgICAgICAgSU4gY29uc3QgUmVjdEYgJiAgICAgICBmcmFtZVJlY3QsDQorICAgICAgICBJTiBNZXRhZmlsZUZyYW1lVW5pdCAgIGZyYW1lVW5pdCAgID0gTWV0YWZpbGVGcmFtZVVuaXRHZGksDQorICAgICAgICBJTiBFbWZUeXBlICAgICAgICAgICAgIHR5cGUgICAgICAgID0gRW1mVHlwZUVtZlBsdXNEdWFsLA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIgKiAgICAgICBkZXNjcmlwdGlvbiA9IE5VTEwNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgR3BNZXRhZmlsZSAqICAgIG1ldGFmaWxlID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwUmVjb3JkTWV0YWZpbGUoDQorICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSGRjLCB0eXBlLCAmZnJhbWVSZWN0LCBmcmFtZVVuaXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sICZtZXRhZmlsZSk7DQorDQorICAgICAgICBTZXROYXRpdmVJbWFnZShtZXRhZmlsZSk7DQorICAgIH0NCisNCisgICAgLy8gUmVjb3JkIGEgbWV0YWZpbGUgdG8gbWVtb3J5DQorICAgIE1ldGFmaWxlKA0KKyAgICAgICAgSU4gSERDICAgICAgICAgICAgICAgICByZWZlcmVuY2VIZGMsDQorICAgICAgICBJTiBjb25zdCBSZWN0ICYgICAgICAgIGZyYW1lUmVjdCwNCisgICAgICAgIElOIE1ldGFmaWxlRnJhbWVVbml0ICAgZnJhbWVVbml0ICAgPSBNZXRhZmlsZUZyYW1lVW5pdEdkaSwNCisgICAgICAgIElOIEVtZlR5cGUgICAgICAgICAgICAgdHlwZSAgICAgICAgPSBFbWZUeXBlRW1mUGx1c0R1YWwsDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAqICAgICAgIGRlc2NyaXB0aW9uID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICBHcE1ldGFmaWxlICogICAgbWV0YWZpbGUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBSZWNvcmRNZXRhZmlsZUkoDQorICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSGRjLCB0eXBlLCAmZnJhbWVSZWN0LCBmcmFtZVVuaXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sICZtZXRhZmlsZSk7DQorDQorICAgICAgICBTZXROYXRpdmVJbWFnZShtZXRhZmlsZSk7DQorICAgIH0NCisNCisgICAgLy8gUmVjb3JkIGEgbWV0YWZpbGUgdG8gYSBmaWxlDQorICAgIE1ldGFmaWxlKA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIqICAgICAgICBmaWxlTmFtZSwNCisgICAgICAgIElOIEhEQyAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSGRjLA0KKyAgICAgICAgSU4gRW1mVHlwZSAgICAgICAgICAgICB0eXBlICAgICAgICA9IEVtZlR5cGVFbWZQbHVzRHVhbCwNCisgICAgICAgIElOIGNvbnN0IFdDSEFSICogICAgICAgZGVzY3JpcHRpb24gPSBOVUxMDQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIEdwTWV0YWZpbGUgKiAgICBtZXRhZmlsZSA9IE5VTEw7DQorDQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcFJlY29yZE1ldGFmaWxlRmlsZU5hbWUoZmlsZU5hbWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSGRjLCB0eXBlLCBOVUxMLCBNZXRhZmlsZUZyYW1lVW5pdEdkaSwNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgJm1ldGFmaWxlKTsNCisNCisgICAgICAgIFNldE5hdGl2ZUltYWdlKG1ldGFmaWxlKTsNCisgICAgfQ0KKw0KKyAgICAvLyBSZWNvcmQgYSBtZXRhZmlsZSB0byBhIGZpbGUNCisgICAgTWV0YWZpbGUoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiogICAgICAgIGZpbGVOYW1lLA0KKyAgICAgICAgSU4gSERDICAgICAgICAgICAgICAgICByZWZlcmVuY2VIZGMsDQorICAgICAgICBJTiBjb25zdCBSZWN0RiAmICAgICAgIGZyYW1lUmVjdCwNCisgICAgICAgIElOIE1ldGFmaWxlRnJhbWVVbml0ICAgZnJhbWVVbml0ICAgPSBNZXRhZmlsZUZyYW1lVW5pdEdkaSwNCisgICAgICAgIElOIEVtZlR5cGUgICAgICAgICAgICAgdHlwZSAgICAgICAgPSBFbWZUeXBlRW1mUGx1c0R1YWwsDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAqICAgICAgIGRlc2NyaXB0aW9uID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICBHcE1ldGFmaWxlICogICAgbWV0YWZpbGUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBSZWNvcmRNZXRhZmlsZUZpbGVOYW1lKGZpbGVOYW1lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhkYywgdHlwZSwgJmZyYW1lUmVjdCwgZnJhbWVVbml0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLCAmbWV0YWZpbGUpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlSW1hZ2UobWV0YWZpbGUpOw0KKyAgICB9DQorDQorICAgIC8vIFJlY29yZCBhIG1ldGFmaWxlIHRvIGEgZmlsZQ0KKyAgICBNZXRhZmlsZSgNCisgICAgICAgIElOIGNvbnN0IFdDSEFSKiAgICAgICAgZmlsZU5hbWUsDQorICAgICAgICBJTiBIREMgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhkYywNCisgICAgICAgIElOIGNvbnN0IFJlY3QgJiAgICAgICAgZnJhbWVSZWN0LA0KKyAgICAgICAgSU4gTWV0YWZpbGVGcmFtZVVuaXQgICBmcmFtZVVuaXQgICA9IE1ldGFmaWxlRnJhbWVVbml0R2RpLA0KKyAgICAgICAgSU4gRW1mVHlwZSAgICAgICAgICAgICB0eXBlICAgICAgICA9IEVtZlR5cGVFbWZQbHVzRHVhbCwNCisgICAgICAgIElOIGNvbnN0IFdDSEFSICogICAgICAgZGVzY3JpcHRpb24gPSBOVUxMDQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIEdwTWV0YWZpbGUgKiAgICBtZXRhZmlsZSA9IE5VTEw7DQorDQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcFJlY29yZE1ldGFmaWxlRmlsZU5hbWVJKGZpbGVOYW1lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhkYywgdHlwZSwgJmZyYW1lUmVjdCwgZnJhbWVVbml0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLCAmbWV0YWZpbGUpOw0KKw0KKyAgICAgICAgU2V0TmF0aXZlSW1hZ2UobWV0YWZpbGUpOw0KKyAgICB9DQorDQorICAgIC8vIFJlY29yZCBhIG1ldGFmaWxlIHRvIGEgc3RyZWFtDQorICAgIE1ldGFmaWxlKA0KKyAgICAgICAgSU4gSVN0cmVhbSAqICAgICAgICAgICBzdHJlYW0sDQorICAgICAgICBJTiBIREMgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhkYywNCisgICAgICAgIElOIEVtZlR5cGUgICAgICAgICAgICAgdHlwZSAgICAgICAgPSBFbWZUeXBlRW1mUGx1c0R1YWwsDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAqICAgICAgIGRlc2NyaXB0aW9uID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICBHcE1ldGFmaWxlICogICAgbWV0YWZpbGUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBSZWNvcmRNZXRhZmlsZVN0cmVhbShzdHJlYW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSGRjLCB0eXBlLCBOVUxMLCBNZXRhZmlsZUZyYW1lVW5pdEdkaSwNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgJm1ldGFmaWxlKTsNCisNCisgICAgICAgIFNldE5hdGl2ZUltYWdlKG1ldGFmaWxlKTsNCisgICAgfQ0KKw0KKyAgICAvLyBSZWNvcmQgYSBtZXRhZmlsZSB0byBhIHN0cmVhbQ0KKyAgICBNZXRhZmlsZSgNCisgICAgICAgIElOIElTdHJlYW0gKiAgICAgICAgICAgc3RyZWFtLA0KKyAgICAgICAgSU4gSERDICAgICAgICAgICAgICAgICByZWZlcmVuY2VIZGMsDQorICAgICAgICBJTiBjb25zdCBSZWN0RiAmICAgICAgIGZyYW1lUmVjdCwNCisgICAgICAgIElOIE1ldGFmaWxlRnJhbWVVbml0ICAgZnJhbWVVbml0ICAgPSBNZXRhZmlsZUZyYW1lVW5pdEdkaSwNCisgICAgICAgIElOIEVtZlR5cGUgICAgICAgICAgICAgdHlwZSAgICAgICAgPSBFbWZUeXBlRW1mUGx1c0R1YWwsDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAqICAgICAgIGRlc2NyaXB0aW9uID0gTlVMTA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICBHcE1ldGFmaWxlICogICAgbWV0YWZpbGUgPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBSZWNvcmRNZXRhZmlsZVN0cmVhbShzdHJlYW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSGRjLCB0eXBlLCAmZnJhbWVSZWN0LCBmcmFtZVVuaXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sICZtZXRhZmlsZSk7DQorDQorICAgICAgICBTZXROYXRpdmVJbWFnZShtZXRhZmlsZSk7DQorICAgIH0NCisNCisgICAgLy8gV3JpdGUgYSBtZXRhZmlsZSB0byBhIHN0cmVhbSB3aXRoIGRvd24tbGV2ZWwgR0RJIHJlY29yZHMNCisgICAgTWV0YWZpbGUoDQorICAgICAgICBJTiBJU3RyZWFtICogICAgICAgICAgIHN0cmVhbSwNCisgICAgICAgIElOIEhEQyAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSGRjLA0KKyAgICAgICAgSU4gY29uc3QgUmVjdCAmICAgICAgICBmcmFtZVJlY3QsDQorICAgICAgICBJTiBNZXRhZmlsZUZyYW1lVW5pdCAgIGZyYW1lVW5pdCAgID0gTWV0YWZpbGVGcmFtZVVuaXRHZGksDQorICAgICAgICBJTiBFbWZUeXBlICAgICAgICAgICAgIHR5cGUgICAgICAgID0gRW1mVHlwZUVtZlBsdXNEdWFsLA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIgKiAgICAgICBkZXNjcmlwdGlvbiA9IE5VTEwNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgR3BNZXRhZmlsZSAqICAgIG1ldGFmaWxlID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwUmVjb3JkTWV0YWZpbGVTdHJlYW1JKHN0cmVhbSwNCisgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VIZGMsIHR5cGUsICZmcmFtZVJlY3QsIGZyYW1lVW5pdCwNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgJm1ldGFmaWxlKTsNCisNCisgICAgICAgIFNldE5hdGl2ZUltYWdlKG1ldGFmaWxlKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgU3RhdHVzIEdldE1ldGFmaWxlSGVhZGVyKA0KKyAgICAgICAgSU4gSE1FVEFGSUxFICAgICAgICAgICBoV21mLA0KKyAgICAgICAgSU4gY29uc3QgQVBNRmlsZUhlYWRlciAqICAgICBhcG1GaWxlSGVhZGVyLA0KKyAgICAgICAgT1VUIE1ldGFmaWxlSGVhZGVyICogICBoZWFkZXINCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIERsbEV4cG9ydHM6OkdkaXBHZXRNZXRhZmlsZUhlYWRlckZyb21XbWYoaFdtZiwgYXBtRmlsZUhlYWRlciwgaGVhZGVyKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgU3RhdHVzIEdldE1ldGFmaWxlSGVhZGVyKA0KKyAgICAgICAgSU4gSEVOSE1FVEFGSUxFICAgICAgICBoRW1mLA0KKyAgICAgICAgT1VUIE1ldGFmaWxlSGVhZGVyICogICBoZWFkZXINCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIERsbEV4cG9ydHM6OkdkaXBHZXRNZXRhZmlsZUhlYWRlckZyb21FbWYoaEVtZiwgaGVhZGVyKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgU3RhdHVzIEdldE1ldGFmaWxlSGVhZGVyKA0KKyAgICAgICAgSU4gY29uc3QgV0NIQVIqICAgICAgICBmaWxlbmFtZSwNCisgICAgICAgIE9VVCBNZXRhZmlsZUhlYWRlciAqICAgaGVhZGVyDQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBEbGxFeHBvcnRzOjpHZGlwR2V0TWV0YWZpbGVIZWFkZXJGcm9tRmlsZShmaWxlbmFtZSwgaGVhZGVyKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgU3RhdHVzIEdldE1ldGFmaWxlSGVhZGVyKA0KKyAgICAgICAgSU4gSVN0cmVhbSAqICAgICAgICAgICBzdHJlYW0sDQorICAgICAgICBPVVQgTWV0YWZpbGVIZWFkZXIgKiAgIGhlYWRlcg0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRGxsRXhwb3J0czo6R2RpcEdldE1ldGFmaWxlSGVhZGVyRnJvbVN0cmVhbShzdHJlYW0sIGhlYWRlcik7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldE1ldGFmaWxlSGVhZGVyKA0KKyAgICAgICAgT1VUIE1ldGFmaWxlSGVhZGVyICogICAgaGVhZGVyDQorICAgICAgICApIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldE1ldGFmaWxlSGVhZGVyRnJvbU1ldGFmaWxlKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BNZXRhZmlsZSAqKW5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBPbmNlIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgdGhlIE1ldGFmaWxlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlDQorICAgIC8vIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQuICBJdCBpcyB0aGUgcmVzcG9uc2libGl0eSBvZiB0aGUgY2FsbGVyIHRvDQorICAgIC8vIGludm9rZSBEZWxldGVFbmhNZXRhRmlsZSB0byBkZWxldGUgdGhpcyBoRW1mLg0KKw0KKyAgICBIRU5ITUVUQUZJTEUgR2V0SEVOSE1FVEFGSUxFKCkNCisgICAgew0KKyAgICAgICAgSEVOSE1FVEFGSUxFIGhFbWY7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEhlbWZGcm9tTWV0YWZpbGUoKEdwTWV0YWZpbGUgKiluYXRpdmVJbWFnZSwgJmhFbWYpKTsNCisNCisgICAgICAgIHJldHVybiBoRW1mOw0KKyAgICB9DQorDQorICAgIC8vIFVzZWQgaW4gY29uanVjdGlvbiB3aXRoIEdyYXBoaWNzOjpFbnVtZXJhdGVNZXRhZmlsZSB0byBwbGF5IGFuIEVNRisNCisgICAgLy8gVGhlIGRhdGEgbXVzdCBiZSBEV09SRCBhbGlnbmVkIGlmIGl0J3MgYW4gRU1GIG9yIEVNRisuICBJdCBtdXN0IGJlDQorICAgIC8vIFdPUkQgYWxpZ25lZCBpZiBpdCdzIGEgV01GLg0KKyAgICBTdGF0dXMNCisgICAgUGxheVJlY29yZCgNCisgICAgICAgIElOIEVtZlBsdXNSZWNvcmRUeXBlICAgcmVjb3JkVHlwZSwNCisgICAgICAgIElOIFVJTlQgICAgICAgICAgICAgICAgZmxhZ3MsDQorICAgICAgICBJTiBVSU5UICAgICAgICAgICAgICAgIGRhdGFTaXplLA0KKyAgICAgICAgSU4gY29uc3QgQllURSAqICAgICAgICBkYXRhDQorICAgICAgICApIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFBsYXlNZXRhZmlsZVJlY29yZCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHcE1ldGFmaWxlICopbmF0aXZlSW1hZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRUeXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBJZiB5b3UncmUgdXNpbmcgYSBwcmludGVyIEhEQyBmb3IgdGhlIG1ldGFmaWxlLCBidXQgeW91IHdhbnQgdGhlDQorICAgIC8vIG1ldGFmaWxlIHJhc3Rlcml6ZWQgYXQgc2NyZWVuIHJlc29sdXRpb24sIHRoZW4gdXNlIHRoaXMgQVBJIHRvIHNldA0KKyAgICAvLyB0aGUgcmFzdGVyaXphdGlvbiBkcGkgb2YgdGhlIG1ldGFmaWxlIHRvIHRoZSBzY3JlZW4gcmVzb2x1dGlvbiwNCisgICAgLy8gZS5nLiA5NiBkcGkgb3IgMTIwIGRwaS4NCisgICAgU3RhdHVzIFNldERvd25MZXZlbFJhc3Rlcml6YXRpb25MaW1pdCgNCisgICAgICAgIElOIFVJTlQgICAgIG1ldGFmaWxlUmFzdGVyaXphdGlvbkxpbWl0RHBpDQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldE1ldGFmaWxlRG93bkxldmVsUmFzdGVyaXphdGlvbkxpbWl0KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwTWV0YWZpbGUgKiluYXRpdmVJbWFnZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFmaWxlUmFzdGVyaXphdGlvbkxpbWl0RHBpKSk7DQorICAgIH0NCisNCisgICAgVUlOVCBHZXREb3duTGV2ZWxSYXN0ZXJpemF0aW9uTGltaXQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBVSU5UICAgIG1ldGFmaWxlUmFzdGVyaXphdGlvbkxpbWl0RHBpID0gMDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0TWV0YWZpbGVEb3duTGV2ZWxSYXN0ZXJpemF0aW9uTGltaXQoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BNZXRhZmlsZSAqKW5hdGl2ZUltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1ldGFmaWxlUmFzdGVyaXphdGlvbkxpbWl0RHBpKSk7DQorDQorICAgICAgICByZXR1cm4gbWV0YWZpbGVSYXN0ZXJpemF0aW9uTGltaXREcGk7DQorICAgIH0NCisNCisgICAgc3RhdGljIFVJTlQgTWV0YWZpbGU6OkVtZlRvV21mQml0cygNCisgICAgICAgIElOIEhFTkhNRVRBRklMRSAgICAgICBoZW1mLA0KKyAgICAgICAgSU4gVUlOVCAgICAgICAgICAgICAgIGNiRGF0YTE2LA0KKyAgICAgICAgSU4gTFBCWVRFICAgICAgICAgICAgIHBEYXRhMTYsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgaU1hcE1vZGUgPSBNTV9BTklTT1RST1BJQywNCisgICAgICAgIElOIEVtZlRvV21mQml0c0ZsYWdzICBlRmxhZ3MgPSBFbWZUb1dtZkJpdHNGbGFnc0RlZmF1bHQNCisgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRGxsRXhwb3J0czo6R2RpcEVtZlRvV21mQml0cygNCisgICAgICAgICAgICBoZW1mLA0KKyAgICAgICAgICAgIGNiRGF0YTE2LA0KKyAgICAgICAgICAgIHBEYXRhMTYsDQorICAgICAgICAgICAgaU1hcE1vZGUsDQorICAgICAgICAgICAgZUZsYWdzKTsNCisgICAgfQ0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBNZXRhZmlsZShjb25zdCBNZXRhZmlsZSAmKTsNCisgICAgTWV0YWZpbGUmIG9wZXJhdG9yPShjb25zdCBNZXRhZmlsZSAmKTsNCisNCisjZW5kaWYNCit9Ow0KKw0KKyNlbmRpZiAvLyAhX01FVEFGSUxFX0gNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzTWV0YUhlYWRlci5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c01ldGFIZWFkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWI1YmM5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c01ldGFIZWFkZXIuaApAQCAtMCwwICsxLDIxMyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXA0KKyoNCisqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLCBNaWNyb3NvZnQgQ29ycC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBNZXRhZmlsZSBoZWFkZXJzDQorKg0KKyogQWJzdHJhY3Q6DQorKg0KKyogICBEZWNsYXJhdGlvbnMgZm9yIHZhcmlvdXMgbWV0YWZpbGUgaGVhZGVyIHN0cnVjdHVyZXMuDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9HRElQTFVTTUVUQUhFQURFUl9IDQorI2RlZmluZSBfR0RJUExVU01FVEFIRUFERVJfSA0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgICBEV09SRCAgIGlUeXBlOyAgICAgICAgICAgICAgLy8gUmVjb3JkIHR5cGUgRU1SX0hFQURFUg0KKyAgICBEV09SRCAgIG5TaXplOyAgICAgICAgICAgICAgLy8gUmVjb3JkIHNpemUgaW4gYnl0ZXMuICBUaGlzIG1heSBiZSBncmVhdGVyDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGFuIHRoZSBzaXplb2YoRU5ITUVUQUhFQURFUikuDQorICAgIFJFQ1RMICAgcmNsQm91bmRzOyAgICAgICAgICAvLyBJbmNsdXNpdmUtaW5jbHVzaXZlIGJvdW5kcyBpbiBkZXZpY2UgdW5pdHMNCisgICAgUkVDVEwgICByY2xGcmFtZTsgICAgICAgICAgIC8vIEluY2x1c2l2ZS1pbmNsdXNpdmUgUGljdHVyZSBGcmFtZSBvZiBtZXRhZmlsZSBpbiAuMDEgbW0gdW5pdHMNCisgICAgRFdPUkQgICBkU2lnbmF0dXJlOyAgICAgICAgIC8vIFNpZ25hdHVyZS4gIE11c3QgYmUgRU5ITUVUQV9TSUdOQVRVUkUuDQorICAgIERXT1JEICAgblZlcnNpb247ICAgICAgICAgICAvLyBWZXJzaW9uIG51bWJlcg0KKyAgICBEV09SRCAgIG5CeXRlczsgICAgICAgICAgICAgLy8gU2l6ZSBvZiB0aGUgbWV0YWZpbGUgaW4gYnl0ZXMNCisgICAgRFdPUkQgICBuUmVjb3JkczsgICAgICAgICAgIC8vIE51bWJlciBvZiByZWNvcmRzIGluIHRoZSBtZXRhZmlsZQ0KKyAgICBXT1JEICAgIG5IYW5kbGVzOyAgICAgICAgICAgLy8gTnVtYmVyIG9mIGhhbmRsZXMgaW4gdGhlIGhhbmRsZSB0YWJsZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGluZGV4IHplcm8gaXMgcmVzZXJ2ZWQuDQorICAgIFdPUkQgICAgc1Jlc2VydmVkOyAgICAgICAgICAvLyBSZXNlcnZlZC4gIE11c3QgYmUgemVyby4NCisgICAgRFdPUkQgICBuRGVzY3JpcHRpb247ICAgICAgIC8vIE51bWJlciBvZiBjaGFycyBpbiB0aGUgdW5pY29kZSBkZXNjcmlwdGlvbiBzdHJpbmcNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgMCBpZiB0aGVyZSBpcyBubyBkZXNjcmlwdGlvbiBzdHJpbmcNCisgICAgRFdPUkQgICBvZmZEZXNjcmlwdGlvbjsgICAgIC8vIE9mZnNldCB0byB0aGUgbWV0YWZpbGUgZGVzY3JpcHRpb24gcmVjb3JkLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyAwIGlmIHRoZXJlIGlzIG5vIGRlc2NyaXB0aW9uIHN0cmluZw0KKyAgICBEV09SRCAgIG5QYWxFbnRyaWVzOyAgICAgICAgLy8gTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIG1ldGFmaWxlIHBhbGV0dGUuDQorICAgIFNJWkVMICAgc3psRGV2aWNlOyAgICAgICAgICAvLyBTaXplIG9mIHRoZSByZWZlcmVuY2UgZGV2aWNlIGluIHBlbHMNCisgICAgU0laRUwgICBzemxNaWxsaW1ldGVyczsgICAgIC8vIFNpemUgb2YgdGhlIHJlZmVyZW5jZSBkZXZpY2UgaW4gbWlsbGltZXRlcnMNCit9IEVOSE1FVEFIRUFERVIzOw0KKw0KKy8vIEFsZHVzIFBsYWNlYWJsZSBNZXRhZmlsZXMNCisNCisvLyBQbGFjZWFibGUgTWV0YWZpbGVzIHdlcmUgY3JlYXRlZCBieSBBbGR1cyBDb3Jwb3JhdGlvbiBhcyBhIG5vbi1zdGFuZGFyZA0KKy8vIHdheSBvZiBzcGVjaWZ5aW5nIGhvdyBhIG1ldGFmaWxlIGlzIG1hcHBlZCBhbmQgc2NhbGVkIG9uIGFuIG91dHB1dCBkZXZpY2UuDQorLy8gUGxhY2VhYmxlIG1ldGFmaWxlcyBhcmUgcXVpdGUgd2lkZS1zcHJlYWQsIGJ1dCBub3QgZGlyZWN0bHkgc3VwcG9ydGVkIGJ5DQorLy8gdGhlIFdpbmRvd3MgQVBJLiBUbyBwbGF5YmFjayBhIHBsYWNlYWJsZSBtZXRhZmlsZSB1c2luZyB0aGUgV2luZG93cyBBUEksDQorLy8geW91IHdpbGwgZmlyc3QgbmVlZCB0byBzdHJpcCB0aGUgcGxhY2VhYmxlIG1ldGFmaWxlIGhlYWRlciBmcm9tIHRoZSBmaWxlLg0KKy8vIFRoaXMgaXMgdHlwaWNhbGx5IHBlcmZvcm1lZCBieSBjb3B5aW5nIHRoZSBtZXRhZmlsZSB0byBhIHRlbXBvcmFyeSBmaWxlDQorLy8gc3RhcnRpbmcgYXQgZmlsZSBvZmZzZXQgMjIgKDB4MTYpLiBUaGUgY29udGVudHMgb2YgdGhlIHRlbXBvcmFyeSBmaWxlIG1heQ0KKy8vIHRoZW4gYmUgdXNlZCBhcyBpbnB1dCB0byB0aGUgV2luZG93cyBHZXRNZXRhRmlsZSgpLCBQbGF5TWV0YUZpbGUoKSwNCisvLyBDb3B5TWV0YUZpbGUoKSwgZXRjLiBHREkgZnVuY3Rpb25zLg0KKw0KKy8vIEVhY2ggcGxhY2VhYmxlIG1ldGFmaWxlIGJlZ2lucyB3aXRoIGEgMjItYnl0ZSBoZWFkZXIsDQorLy8gIGZvbGxvd2VkIGJ5IGEgc3RhbmRhcmQgbWV0YWZpbGU6DQorDQorI2luY2x1ZGUgPHBzaHBhY2syLmg+ICAgLy8gc2V0IHN0cnVjdHVyZSBwYWNraW5nIHRvIDINCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgICAgSU5UMTYgICAgICAgICAgIExlZnQ7DQorICAgIElOVDE2ICAgICAgICAgICBUb3A7DQorICAgIElOVDE2ICAgICAgICAgICBSaWdodDsNCisgICAgSU5UMTYgICAgICAgICAgIEJvdHRvbTsNCit9IEFQTVJlY3QxNjsNCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgICAgVUlOVDMyICAgICAgICAgIEtleTsgICAgICAgICAgICAvLyBHRElQX1dNRl9BTERVU0tFWQ0KKyAgICBJTlQxNiAgICAgICAgICAgSG1mOyAgICAgICAgICAgIC8vIE1ldGFmaWxlIEhBTkRMRSBudW1iZXIgKGFsd2F5cyAwKQ0KKyAgICBBUE1SZWN0MTYgICAgICAgQm91bmRpbmdCb3g7ICAgIC8vIENvb3JkaW5hdGVzIGluIG1ldGFmaWxlIHVuaXRzDQorICAgIElOVDE2ICAgICAgICAgICBJbmNoOyAgICAgICAgICAgLy8gTnVtYmVyIG9mIG1ldGFmaWxlIHVuaXRzIHBlciBpbmNoDQorICAgIFVJTlQzMiAgICAgICAgICBSZXNlcnZlZDsgICAgICAgLy8gUmVzZXJ2ZWQgKGFsd2F5cyAwKQ0KKyAgICBJTlQxNiAgICAgICAgICAgQ2hlY2tzdW07ICAgICAgIC8vIENoZWNrc3VtIHZhbHVlIGZvciBwcmV2aW91cyAxMCBXT1JEcw0KK30gQVBNRmlsZUhlYWRlcjsNCisNCisjaW5jbHVkZSA8cG9wcGFjay5oPg0KKw0KKy8vIEtleSBjb250YWlucyBhIHNwZWNpYWwgaWRlbnRpZmljYXRpb24gdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhlIHByZXNlbmNlDQorLy8gb2YgYSBwbGFjZWFibGUgbWV0YWZpbGUgaGVhZGVyIGFuZCBpcyBhbHdheXMgMHg5QUM2Q0RENy4NCisNCisvLyBIYW5kbGUgaXMgdXNlZCB0byBzdG9yZWQgdGhlIGhhbmRsZSBvZiB0aGUgbWV0YWZpbGUgaW4gbWVtb3J5LiBXaGVuIHdyaXR0ZW4NCisvLyB0byBkaXNrLCB0aGlzIGZpZWxkIGlzIG5vdCB1c2VkIGFuZCB3aWxsIGFsd2F5cyBjb250YWlucyB0aGUgdmFsdWUgMC4NCisNCisvLyBMZWZ0LCBUb3AsIFJpZ2h0LCBhbmQgQm90dG9tIGNvbnRhaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1cHBlci1sZWZ0DQorLy8gYW5kIGxvd2VyLXJpZ2h0IGNvcm5lcnMgb2YgdGhlIGltYWdlIG9uIHRoZSBvdXRwdXQgZGV2aWNlLiBUaGVzZSBhcmUNCisvLyBtZWFzdXJlZCBpbiB0d2lwcy4NCisNCisvLyBBIHR3aXAgKG1lYW5pbmcgInR3ZW50aWV0aCBvZiBhIHBvaW50IikgaXMgdGhlIGxvZ2ljYWwgdW5pdCBvZiBtZWFzdXJlbWVudA0KKy8vIHVzZWQgaW4gV2luZG93cyBNZXRhZmlsZXMuIEEgdHdpcCBpcyBlcXVhbCB0byAxLzE0NDAgb2YgYW4gaW5jaC4gVGh1cyA3MjANCisvLyB0d2lwcyBlcXVhbCAxLzIgaW5jaCwgd2hpbGUgMzIsNzY4IHR3aXBzIGlzIDIyLjc1IGluY2hlcy4NCisNCisvLyBJbmNoIGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgdHdpcHMgcGVyIGluY2ggdXNlZCB0byByZXByZXNlbnQgdGhlIGltYWdlLg0KKy8vIE5vcm1hbGx5LCB0aGVyZSBhcmUgMTQ0MCB0d2lwcyBwZXIgaW5jaDsgaG93ZXZlciwgdGhpcyBudW1iZXIgbWF5IGJlDQorLy8gY2hhbmdlZCB0byBzY2FsZSB0aGUgaW1hZ2UuIEEgdmFsdWUgb2YgNzIwIGluZGljYXRlcyB0aGF0IHRoZSBpbWFnZSBpcw0KKy8vIGRvdWJsZSBpdHMgbm9ybWFsIHNpemUsIG9yIHNjYWxlZCB0byBhIGZhY3RvciBvZiAyOjEuIEEgdmFsdWUgb2YgMzYwDQorLy8gaW5kaWNhdGVzIGEgc2NhbGUgb2YgNDoxLCB3aGlsZSBhIHZhbHVlIG9mIDI4ODAgaW5kaWNhdGVzIHRoYXQgdGhlIGltYWdlDQorLy8gaXMgc2NhbGVkIGRvd24gaW4gc2l6ZSBieSBhIGZhY3RvciBvZiB0d28uIEEgdmFsdWUgb2YgMTQ0MCBpbmRpY2F0ZXMNCisvLyBhIDE6MSBzY2FsZSByYXRpby4NCisNCisvLyBSZXNlcnZlZCBpcyBub3QgdXNlZCBhbmQgaXMgYWx3YXlzIHNldCB0byAwLg0KKw0KKy8vIENoZWNrc3VtIGNvbnRhaW5zIGEgY2hlY2tzdW0gdmFsdWUgZm9yIHRoZSBwcmV2aW91cyAxMCBXT1JEcyBpbiB0aGUgaGVhZGVyLg0KKy8vIFRoaXMgdmFsdWUgY2FuIGJlIHVzZWQgaW4gYW4gYXR0ZW1wdCB0byBkZXRlY3QgaWYgdGhlIG1ldGFmaWxlIGhhcyBiZWNvbWUNCisvLyBjb3JydXB0ZWQuIFRoZSBjaGVja3N1bSBpcyBjYWxjdWxhdGVkIGJ5IFhPUmluZyBlYWNoIFdPUkQgdmFsdWUgdG8gYW4NCisvLyBpbml0aWFsIHZhbHVlIG9mIDAuDQorDQorLy8gSWYgdGhlIG1ldGFmaWxlIHdhcyByZWNvcmRlZCB3aXRoIGEgcmVmZXJlbmNlIEhkYyB0aGF0IHdhcyBhIGRpc3BsYXkuDQorI2RlZmluZSBHRElQX0VNRlBMVVNGTEFHU19ESVNQTEFZICAgICAgIDB4MDAwMDAwMDENCisNCitjbGFzcyBNZXRhZmlsZUhlYWRlcg0KK3sNCitwdWJsaWM6DQorICAgIE1ldGFmaWxlVHlwZSAgICAgICAgVHlwZTsNCisgICAgVUlOVCAgICAgICAgICAgICAgICBTaXplOyAgICAgICAgICAgICAgIC8vIFNpemUgb2YgdGhlIG1ldGFmaWxlIChpbiBieXRlcykNCisgICAgVUlOVCAgICAgICAgICAgICAgICBWZXJzaW9uOyAgICAgICAgICAgIC8vIEVNRissIEVNRiwgb3IgV01GIHZlcnNpb24NCisgICAgVUlOVCAgICAgICAgICAgICAgICBFbWZQbHVzRmxhZ3M7DQorICAgIFJFQUwgICAgICAgICAgICAgICAgRHBpWDsNCisgICAgUkVBTCAgICAgICAgICAgICAgICBEcGlZOw0KKyAgICBJTlQgICAgICAgICAgICAgICAgIFg7ICAgICAgICAgICAgICAgICAgLy8gQm91bmRzIGluIGRldmljZSB1bml0cw0KKyAgICBJTlQgICAgICAgICAgICAgICAgIFk7DQorICAgIElOVCAgICAgICAgICAgICAgICAgV2lkdGg7DQorICAgIElOVCAgICAgICAgICAgICAgICAgSGVpZ2h0Ow0KKyAgICB1bmlvbg0KKyAgICB7DQorICAgICAgICBNRVRBSEVBREVSICAgICAgV21mSGVhZGVyOw0KKyAgICAgICAgRU5ITUVUQUhFQURFUjMgIEVtZkhlYWRlcjsNCisgICAgfTsNCisgICAgSU5UICAgICAgICAgICAgICAgICBFbWZQbHVzSGVhZGVyU2l6ZTsgIC8vIHNpemUgb2YgdGhlIEVNRisgaGVhZGVyIGluIGZpbGUNCisgICAgSU5UICAgICAgICAgICAgICAgICBMb2dpY2FsRHBpWDsgICAgICAgIC8vIExvZ2ljYWwgRHBpIG9mIHJlZmVyZW5jZSBIZGMNCisgICAgSU5UICAgICAgICAgICAgICAgICBMb2dpY2FsRHBpWTsgICAgICAgIC8vIHVzdWFsbHkgdmFsaWQgb25seSBmb3IgRU1GKyBmaWxlcw0KKw0KK3B1YmxpYzoNCisgICAgLy8gR2V0IHRoZSBtZXRhZmlsZSB0eXBlDQorICAgIE1ldGFmaWxlVHlwZSBHZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTsgfQ0KKw0KKyAgICAvLyBHZXQgdGhlIHNpemUgb2YgdGhlIG1ldGFmaWxlIGluIEJZVEVzDQorICAgIFVJTlQgR2V0TWV0YWZpbGVTaXplKCkgY29uc3QgeyByZXR1cm4gU2l6ZTsgfQ0KKw0KKyAgICAvLyBJZiBJc0VtZlBsdXMsIHRoaXMgaXMgdGhlIEVNRisgdmVyc2lvbjsgZWxzZSBpdCBpcyB0aGUgV01GIG9yIEVNRiB2ZXJzaW9uDQorICAgIFVJTlQgR2V0VmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIFZlcnNpb247IH0NCisNCisgICAgLy8gR2V0IHRoZSBFTUYrIGZsYWdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWV0YWZpbGUNCisgICAgVUlOVCBHZXRFbWZQbHVzRmxhZ3MoKSBjb25zdCB7IHJldHVybiBFbWZQbHVzRmxhZ3M7IH0NCisNCisgICAgLy8gR2V0IHRoZSBYIERwaSBvZiB0aGUgbWV0YWZpbGUNCisgICAgUkVBTCBHZXREcGlYKCkgY29uc3QgeyByZXR1cm4gRHBpWDsgfQ0KKw0KKyAgICAvLyBHZXQgdGhlIFkgRHBpIG9mIHRoZSBtZXRhZmlsZQ0KKyAgICBSRUFMIEdldERwaVkoKSBjb25zdCB7IHJldHVybiBEcGlZOyB9DQorDQorICAgIC8vIEdldCB0aGUgYm91bmRzIG9mIHRoZSBtZXRhZmlsZSBpbiBkZXZpY2UgdW5pdHMNCisgICAgVk9JRCBHZXRCb3VuZHMgKE9VVCBSZWN0ICpyZWN0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZWN0LT5YID0gWDsNCisgICAgICAgIHJlY3QtPlkgPSBZOw0KKyAgICAgICAgcmVjdC0+V2lkdGggPSBXaWR0aDsNCisgICAgICAgIHJlY3QtPkhlaWdodCA9IEhlaWdodDsNCisgICAgfQ0KKyAgICANCisgICAgLy8gSXMgaXQgYW55IHR5cGUgb2YgV01GIChzdGFuZGFyZCBvciBBbGR1cyBQbGFjZWFibGUgTWV0YWZpbGUpPw0KKyAgICBCT09MIElzV21mKCkgY29uc3QNCisgICAgew0KKyAgICAgICByZXR1cm4gKChUeXBlID09IE1ldGFmaWxlVHlwZVdtZikgfHwgKFR5cGUgPT0gTWV0YWZpbGVUeXBlV21mQWxkdXMpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBJcyB0aGlzIGFuIEFsZHVzIFBsYWNlYWJsZSBNZXRhZmlsZT8NCisgICAgQk9PTCBJc1dtZkFsZHVzKCkgY29uc3QgeyByZXR1cm4gKFR5cGUgPT0gTWV0YWZpbGVUeXBlV21mKTsgfQ0KKw0KKyAgICAvLyBJcyB0aGlzIGFuIEVNRiAobm90IGFuIEVNRispPw0KKyAgICBCT09MIElzRW1mKCkgY29uc3QgeyByZXR1cm4gKFR5cGUgPT0gTWV0YWZpbGVUeXBlRW1mKTsgfQ0KKw0KKyAgICAvLyBJcyB0aGlzIGFuIEVNRiBvciBFTUYrIGZpbGU/DQorICAgIEJPT0wgSXNFbWZPckVtZlBsdXMoKSBjb25zdCB7IHJldHVybiAoVHlwZSA+PSBNZXRhZmlsZVR5cGVFbWYpOyB9DQorDQorICAgIC8vIElzIHRoaXMgYW4gRU1GKyBmaWxlPw0KKyAgICBCT09MIElzRW1mUGx1cygpIGNvbnN0IHsgcmV0dXJuIChUeXBlID49IE1ldGFmaWxlVHlwZUVtZlBsdXNPbmx5KTsgfQ0KKw0KKyAgICAvLyBJcyB0aGlzIGFuIEVNRisgZHVhbCAoaGFzIGR1YWwsIGRvd24tbGV2ZWwgcmVjb3JkcykgZmlsZT8NCisgICAgQk9PTCBJc0VtZlBsdXNEdWFsKCkgY29uc3QgeyByZXR1cm4gKFR5cGUgPT0gTWV0YWZpbGVUeXBlRW1mUGx1c0R1YWwpOyB9DQorDQorICAgIC8vIElzIHRoaXMgYW4gRU1GKyBvbmx5IChubyBkdWFsIHJlY29yZHMpIGZpbGU/DQorICAgIEJPT0wgSXNFbWZQbHVzT25seSgpIGNvbnN0IHsgcmV0dXJuIChUeXBlID09IE1ldGFmaWxlVHlwZUVtZlBsdXNPbmx5KTsgfQ0KKw0KKyAgICAvLyBJZiBpdCdzIGFuIEVNRisgZmlsZSwgd2FzIGl0IHJlY29yZGVkIGFnYWluc3QgYSBkaXNwbGF5IEhkYz8NCisgICAgQk9PTCBJc0Rpc3BsYXkoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKElzRW1mUGx1cygpICYmDQorICAgICAgICAgICAgICAgICgoRW1mUGx1c0ZsYWdzICYgR0RJUF9FTUZQTFVTRkxBR1NfRElTUExBWSkgIT0gMCkpOw0KKyAgICB9DQorDQorICAgIC8vIEdldCB0aGUgV01GIGhlYWRlciBvZiB0aGUgbWV0YWZpbGUgKGlmIGl0IGlzIGEgV01GKQ0KKyAgICBjb25zdCBNRVRBSEVBREVSICogR2V0V21mSGVhZGVyKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKElzV21mKCkpDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0dXJuICZXbWZIZWFkZXI7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKw0KKyAgICAvLyBHZXQgdGhlIEVNRiBoZWFkZXIgb2YgdGhlIG1ldGFmaWxlIChpZiBpdCBpcyBhbiBFTUYpDQorICAgIGNvbnN0IEVOSE1FVEFIRUFERVIzICogR2V0RW1mSGVhZGVyKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKElzRW1mT3JFbWZQbHVzKCkpDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0dXJuICZFbWZIZWFkZXI7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KK307DQorDQorI2VuZGlmDQorDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c1BhdGguaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNQYXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZmMGUxZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNQYXRoLmgKQEAgLTAsMCArMSwxNjg2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKg0KKyogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqDQorKiAgIEdkaXBsdXNQYXRoLmgNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIFBhdGggcmVsYXRlZCBkZWNsYXJhdGlvbnMNCisqDQorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0dESVBMVVNQQVRIX0gNCisjZGVmaW5lIF9HRElQTFVTUEFUSF9IDQorDQorY2xhc3MgR3JhcGhpY3NQYXRoIDogcHVibGljIEdkaXBsdXNCYXNlDQorew0KK3B1YmxpYzoNCisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzOw0KKyAgICBmcmllbmQgY2xhc3MgUmVnaW9uOw0KKyAgICBmcmllbmQgY2xhc3MgUGF0aEdyYWRpZW50QnJ1c2g7DQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc1BhdGhJdGVyYXRvcjsNCisgICAgZnJpZW5kIGNsYXNzIEN1c3RvbUxpbmVDYXA7DQorDQorICAgIC8vIFBhdGggY29uc3RydWN0b3JzDQorDQorICAgIEdyYXBoaWNzUGF0aChJTiBGaWxsTW9kZSBmaWxsTW9kZSA9IEZpbGxNb2RlQWx0ZXJuYXRlKQ0KKyAgICB7DQorICAgICAgICBuYXRpdmVQYXRoID0gTlVMTDsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlUGF0aChmaWxsTW9kZSwgJm5hdGl2ZVBhdGgpOw0KKyAgICB9DQorDQorICAgIEdyYXBoaWNzUGF0aChJTiBjb25zdCBQb2ludEYqIHBvaW50cywNCisgICAgICAgICAgICAgICAgIElOIGNvbnN0IEJZVEUqIHR5cGVzLA0KKyAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgSU4gRmlsbE1vZGUgZmlsbE1vZGUgPSBGaWxsTW9kZUFsdGVybmF0ZSkNCisgICAgew0KKyAgICAgICAgbmF0aXZlUGF0aCA9IE5VTEw7DQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZVBhdGgyKHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsTW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hdGl2ZVBhdGgpOw0KKyAgICB9DQorDQorICAgIEdyYXBoaWNzUGF0aChJTiBjb25zdCBQb2ludCogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgSU4gY29uc3QgQllURSogdHlwZXMsDQorICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQsDQorICAgICAgICAgICAgICAgICBJTiBGaWxsTW9kZSBmaWxsTW9kZSA9IEZpbGxNb2RlQWx0ZXJuYXRlKQ0KKyAgICB7DQorICAgICAgICBuYXRpdmVQYXRoID0gTlVMTDsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlUGF0aDJJKHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsTW9kZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYXRpdmVQYXRoKTsNCisgICAgfQ0KKw0KKyAgICB+R3JhcGhpY3NQYXRoKCkNCisgICAgew0KKyAgICAgICAgRGxsRXhwb3J0czo6R2RpcERlbGV0ZVBhdGgobmF0aXZlUGF0aCk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIE1ha2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHBhdGggb2JqZWN0DQorICAgICAqLw0KKyAgICBHcmFwaGljc1BhdGgqIENsb25lKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgR3BQYXRoICpjbG9uZXBhdGggPSBOVUxMOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDbG9uZVBhdGgobmF0aXZlUGF0aCwgJmNsb25lcGF0aCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIG5ldyBHcmFwaGljc1BhdGgoY2xvbmVwYXRoKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogUmVzZXQgdGhlIHBhdGggb2JqZWN0IHRvIGVtcHR5IChhbmQgZmlsbCBtb2RlIHRvIEZpbGxNb2RlQWx0ZXJuYXRlKQ0KKyAgICAgKi8NCisgICAgU3RhdHVzIFJlc2V0KCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUmVzZXRQYXRoKG5hdGl2ZVBhdGgpKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogR2V0IHBhdGggZmlsbCBtb2RlIGluZm9ybWF0aW9uDQorICAgICAqLw0KKyAgICBGaWxsTW9kZSBHZXRGaWxsTW9kZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEZpbGxNb2RlIGZpbGxtb2RlID0gRmlsbE1vZGVBbHRlcm5hdGU7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhGaWxsTW9kZShuYXRpdmVQYXRoLCAmZmlsbG1vZGUpKTsNCisNCisgICAgICAgIHJldHVybiBmaWxsbW9kZTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogU2V0IHBhdGggZmlsbCBtb2RlIGluZm9ybWF0aW9uDQorICAgICAqLw0KKyAgICBTdGF0dXMgU2V0RmlsbE1vZGUoSU4gRmlsbE1vZGUgZmlsbG1vZGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBhdGhGaWxsTW9kZShuYXRpdmVQYXRoLCBmaWxsbW9kZSkpOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBTZXQvZ2V0IHBhdGggZGF0YQ0KKyAgICAgKi8NCisgICAgU3RhdHVzIEdldFBhdGhEYXRhKE9VVCBQYXRoRGF0YSogcGF0aERhdGEpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmIChwYXRoRGF0YSA9PSBOVUxMKSANCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm4gU2V0U3RhdHVzKEludmFsaWRQYXJhbWV0ZXIpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgDQorICAgICAgICBJTlQgY291bnQgPSBHZXRQb2ludENvdW50KCk7DQorICAgICAgICANCisgICAgICAgIGlmICgoY291bnQgPD0gMCkgfHwgKHBhdGhEYXRhLT5Db3VudD4wICYmIHBhdGhEYXRhLT5Db3VudDxjb3VudCkpDQorICAgICAgICB7DQorICAgICAgICAgICAgcGF0aERhdGEtPkNvdW50ID0gMDsNCisgICAgICAgICAgICBpZiAocGF0aERhdGEtPlBvaW50cykNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXRoRGF0YS0+UG9pbnRzOw0KKyAgICAgICAgICAgICAgICBwYXRoRGF0YS0+UG9pbnRzID0gTlVMTDsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKHBhdGhEYXRhLT5UeXBlcykgDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgcGF0aERhdGEtPlR5cGVzOw0KKyAgICAgICAgICAgICAgICBwYXRoRGF0YS0+VHlwZXMgPSBOVUxMOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBpZiAoY291bnQgPD0gMCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHJldHVybiBsYXN0UmVzdWx0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisNCisgICAgICAgIGlmIChwYXRoRGF0YS0+Q291bnQgPT0gMCkgDQorICAgICAgICB7DQorICAgICAgICAgICAgcGF0aERhdGEtPlBvaW50cyA9IG5ldyBQb2ludEZbY291bnRdOw0KKyAgICAgICAgICAgIGlmIChwYXRoRGF0YS0+UG9pbnRzID09IE5VTEwpIA0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhPdXRPZk1lbW9yeSk7DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHBhdGhEYXRhLT5UeXBlcyA9IG5ldyBieXRlW2NvdW50XTsNCisgICAgICAgICAgICBpZiAocGF0aERhdGEtPlR5cGVzID09IE5VTEwpIA0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIHBhdGhEYXRhLT5Qb2ludHM7DQorICAgICAgICAgICAgICAgIHBhdGhEYXRhLT5Qb2ludHMgPSBOVUxMOw0KKw0KKyAgICAgICAgICAgICAgICByZXR1cm4gU2V0U3RhdHVzKE91dE9mTWVtb3J5KTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcGF0aERhdGEtPkNvdW50ID0gY291bnQ7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQYXRoRGF0YShuYXRpdmVQYXRoLCBwYXRoRGF0YSkpOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBTdGFydC9lbmQgYSBzdWJwYXRoDQorICAgICAqLw0KKyAgICBTdGF0dXMgU3RhcnRGaWd1cmUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTdGFydFBhdGhGaWd1cmUobmF0aXZlUGF0aCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBDbG9zZUZpZ3VyZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENsb3NlUGF0aEZpZ3VyZShuYXRpdmVQYXRoKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIENsb3NlQWxsRmlndXJlcygpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENsb3NlUGF0aEZpZ3VyZXMobmF0aXZlUGF0aCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRNYXJrZXIoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQYXRoTWFya2VyKG5hdGl2ZVBhdGgpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQ2xlYXJNYXJrZXJzKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ2xlYXJQYXRoTWFya2VycyhuYXRpdmVQYXRoKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFJldmVyc2UoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBSZXZlcnNlUGF0aChuYXRpdmVQYXRoKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldExhc3RQb2ludChPVVQgUG9pbnRGKiBsYXN0UG9pbnQpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhMYXN0UG9pbnQobmF0aXZlUGF0aCwgbGFzdFBvaW50KSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIEFkZCBsaW5lcyB0byB0aGUgcGF0aCBvYmplY3QNCisgICAgICovDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIEFkZExpbmUoSU4gY29uc3QgUG9pbnRGJiBwdDEsIA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludEYmIHB0MikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEFkZExpbmUocHQxLlgsIHB0MS5ZLCBwdDIuWCwgcHQyLlkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRMaW5lKElOIFJFQUwgeDEsDQorICAgICAgICAgICAgICAgICAgIElOIFJFQUwgeTEsIA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHgyLCANCisgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5MikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aExpbmUobmF0aXZlUGF0aCwgeDEsIHkxLCB4MiwgeTIpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQWRkTGluZXMoSU4gY29uc3QgUG9pbnRGKiBwb2ludHMsIA0KKyAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoTGluZTIobmF0aXZlUGF0aCwgcG9pbnRzLCBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIC8vIGludGVnZXIgdmVyc2lvbg0KKyAgICBTdGF0dXMgQWRkTGluZShJTiBjb25zdCBQb2ludCYgcHQxLCANCisgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnQmIHB0MikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEFkZExpbmUocHQxLlgsDQorICAgICAgICAgICAgICAgICAgICAgICBwdDEuWSwNCisgICAgICAgICAgICAgICAgICAgICAgIHB0Mi5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgcHQyLlkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRMaW5lKElOIElOVCB4MSwgDQorICAgICAgICAgICAgICAgICAgIElOIElOVCB5MSwgDQorICAgICAgICAgICAgICAgICAgIElOIElOVCB4MiwgDQorICAgICAgICAgICAgICAgICAgIElOIElOVCB5MikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aExpbmVJKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MikpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRMaW5lcyhJTiBjb25zdCBQb2ludCogcG9pbnRzLCANCisgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aExpbmUySShuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIEFkZCBhbiBhcmMgdG8gdGhlIHBhdGggb2JqZWN0DQorICAgICAqLw0KKyAgICAvLyBmbG9hdCB2ZXJzaW9uDQorICAgIFN0YXR1cyBBZGRBcmMoSU4gY29uc3QgUmVjdEYmIHJlY3QsIA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3RhcnRBbmdsZSwgDQorICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzd2VlcEFuZ2xlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gQWRkQXJjKHJlY3QuWCwgcmVjdC5ZLCByZWN0LldpZHRoLCByZWN0LkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZSwgc3dlZXBBbmdsZSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEFkZEFyYyhJTiBSRUFMIHgsIA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSwgDQorICAgICAgICAgICAgICAgICAgSU4gUkVBTCB3aWR0aCwgDQorICAgICAgICAgICAgICAgICAgSU4gUkVBTCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzdGFydEFuZ2xlLCANCisgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN3ZWVwQW5nbGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhBcmMobmF0aXZlUGF0aCwgeCwgeSwgd2lkdGgsIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGUsIHN3ZWVwQW5nbGUpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBpbnRlZ2VyIHZlcnNpb24NCisgICAgU3RhdHVzIEFkZEFyYyhJTiBjb25zdCBSZWN0JiByZWN0LCANCisgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN0YXJ0QW5nbGUsIA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3dlZXBBbmdsZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEFkZEFyYyhyZWN0LlgsIHJlY3QuWSwgcmVjdC5XaWR0aCwgcmVjdC5IZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGUsIHN3ZWVwQW5nbGUpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRBcmMoSU4gSU5UIHgsIA0KKyAgICAgICAgICAgICAgICAgIElOIElOVCB5LCANCisgICAgICAgICAgICAgICAgICBJTiBJTlQgd2lkdGgsIA0KKyAgICAgICAgICAgICAgICAgIElOIElOVCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzdGFydEFuZ2xlLCANCisgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN3ZWVwQW5nbGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhBcmNJKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3ZWVwQW5nbGUpKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogQWRkIEJlemllciBjdXJ2ZXMgdG8gdGhlIHBhdGggb2JqZWN0DQorICAgICAqLw0KKyAgICAvLyBmbG9hdCB2ZXJzaW9uDQorICAgIFN0YXR1cyBBZGRCZXppZXIoSU4gY29uc3QgUG9pbnRGJiBwdDEsIA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiYgcHQyLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBvaW50RiYgcHQzLCANCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludEYmIHB0NCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEFkZEJlemllcihwdDEuWCwgcHQxLlksIHB0Mi5YLCBwdDIuWSwgcHQzLlgsIHB0My5ZLCBwdDQuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgcHQ0LlkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRCZXppZXIoSU4gUkVBTCB4MSwgDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5MSwgDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB4MiwgDQorICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5MiwNCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHgzLCANCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHkzLCANCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHg0LCANCisgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHk0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoQmV6aWVyKG5hdGl2ZVBhdGgsIHgxLCB5MSwgeDIsIHkyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywgeTMsIHg0LCB5NCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRCZXppZXJzKElOIGNvbnN0IFBvaW50RiogcG9pbnRzLCANCisgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoQmV6aWVycyhuYXRpdmVQYXRoLCBwb2ludHMsIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBBZGRCZXppZXIoSU4gY29uc3QgUG9pbnQmIHB0MSwgDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUG9pbnQmIHB0MiwNCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludCYgcHQzLCANCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQb2ludCYgcHQ0KQ0KKyAgICB7DQorICAgICAgIHJldHVybiBBZGRCZXppZXIocHQxLlgsIHB0MS5ZLCBwdDIuWCwgcHQyLlksIHB0My5YLCBwdDMuWSwgcHQ0LlgsDQorICAgICAgICAgICAgICAgICAgICAgICAgcHQ0LlkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRCZXppZXIoSU4gSU5UIHgxLCANCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeTEsIA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCB4MiwgDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHkyLA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCB4MywNCisgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeTMsIA0KKyAgICAgICAgICAgICAgICAgICAgIElOIElOVCB4NCwgDQorICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHk0KQ0KKyAgICB7DQorICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhCZXppZXJJKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQWRkQmV6aWVycyhJTiBjb25zdCBQb2ludCogcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aEJlemllcnNJKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIEFkZEN1cnZlKElOIGNvbnN0IFBvaW50RiogcG9pbnRzLCANCisgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aEN1cnZlKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEFkZEN1cnZlKElOIGNvbnN0IFBvaW50RiogcG9pbnRzLCANCisgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgdGVuc2lvbikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aEN1cnZlMihuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEFkZEN1cnZlKElOIGNvbnN0IFBvaW50RiogcG9pbnRzLCANCisgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCwgDQorICAgICAgICAgICAgICAgICAgICBJTiBJTlQgb2Zmc2V0LA0KKyAgICAgICAgICAgICAgICAgICAgSU4gSU5UIG51bWJlck9mU2VnbWVudHMsIA0KKyAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB0ZW5zaW9uKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoQ3VydmUzKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZTZWdtZW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVuc2lvbikpOw0KKyAgICB9DQorDQorICAgIC8vIGludGVnZXIgdmVyc2lvbg0KKyAgICBTdGF0dXMgQWRkQ3VydmUoSU4gY29uc3QgUG9pbnQqIHBvaW50cywgDQorICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aEN1cnZlSShuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQWRkQ3VydmUoSU4gY29uc3QgUG9pbnQqIHBvaW50cywgDQorICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQsIA0KKyAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB0ZW5zaW9uKQ0KKyAgICB7DQorICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhDdXJ2ZTJJKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbnNpb24pKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQWRkQ3VydmUoSU4gY29uc3QgUG9pbnQqIHBvaW50cywgDQorICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQsIA0KKyAgICAgICAgICAgICAgICAgICAgSU4gSU5UIG9mZnNldCwNCisgICAgICAgICAgICAgICAgICAgIElOIElOVCBudW1iZXJPZlNlZ21lbnRzLCANCisgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgdGVuc2lvbikNCisgICAgew0KKyAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoQ3VydmUzSShuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZTZWdtZW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uKSk7DQorICAgIH0NCisNCisgICAgLy8gZmxvYXQgdmVyc2lvbg0KKyAgICBTdGF0dXMgQWRkQ2xvc2VkQ3VydmUoSU4gY29uc3QgUG9pbnRGKiBwb2ludHMsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoQ2xvc2VkQ3VydmUobmF0aXZlUGF0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQWRkQ2xvc2VkQ3VydmUoSU4gY29uc3QgUG9pbnRGKiBwb2ludHMsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgdGVuc2lvbikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aENsb3NlZEN1cnZlMihuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uKSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBBZGRDbG9zZWRDdXJ2ZShJTiBjb25zdCBQb2ludCogcG9pbnRzLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoQ2xvc2VkQ3VydmVJKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisNCisNCisgICAgU3RhdHVzIEFkZENsb3NlZEN1cnZlKElOIGNvbnN0IFBvaW50KiBwb2ludHMsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB0ZW5zaW9uKQ0KKyAgICB7DQorICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhDbG9zZWRDdXJ2ZTJJKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbnNpb24pKTsNCisgICAgfQ0KKw0KKw0KKyAgICAvKioNCisgICAgICogQWRkIGNsb3NlZCBzaGFwZXMgdG8gdGhlIHBhdGggb2JqZWN0DQorICAgICAqLw0KKw0KKyAgICAvLyBmbG9hdCB2ZXJzaW9uDQorICAgIFN0YXR1cyBBZGRSZWN0YW5nbGUoSU4gY29uc3QgUmVjdEYmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhSZWN0YW5nbGUobmF0aXZlUGF0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LlksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuSGVpZ2h0KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEFkZFJlY3RhbmdsZXMoSU4gY29uc3QgUmVjdEYqIHJlY3RzLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoUmVjdGFuZ2xlcyhuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIC8vIGludGVnZXIgdmVyc2lvbg0KKyAgICBTdGF0dXMgQWRkUmVjdGFuZ2xlKElOIGNvbnN0IFJlY3QmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhSZWN0YW5nbGVJKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LldpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LkhlaWdodCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRSZWN0YW5nbGVzKElOIGNvbnN0IFJlY3QqIHJlY3RzLCBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhSZWN0YW5nbGVzSShuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIC8vIGZsb2F0IHZlcnNpb24NCisgICAgU3RhdHVzIEFkZEVsbGlwc2UoSU4gY29uc3QgUmVjdEYmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBBZGRFbGxpcHNlKHJlY3QuWCwgcmVjdC5ZLCByZWN0LldpZHRoLCByZWN0LkhlaWdodCk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEFkZEVsbGlwc2UoSU4gUkVBTCB4LCANCisgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5LCANCisgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB3aWR0aCwgDQorICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgaGVpZ2h0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoRWxsaXBzZShuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCkpOw0KKyAgICB9DQorDQorICAgIC8vIGludGVnZXIgdmVyc2lvbg0KKyAgICBTdGF0dXMgQWRkRWxsaXBzZShJTiBjb25zdCBSZWN0JiByZWN0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gQWRkRWxsaXBzZShyZWN0LlgsIHJlY3QuWSwgcmVjdC5XaWR0aCwgcmVjdC5IZWlnaHQpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRFbGxpcHNlKElOIElOVCB4LCANCisgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIHksIA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgd2lkdGgsIA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgaGVpZ2h0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoRWxsaXBzZUkobmF0aXZlUGF0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBmbG9hdCB2ZXJzaW9uDQorICAgIFN0YXR1cyBBZGRQaWUoSU4gY29uc3QgUmVjdEYmIHJlY3QsIA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3RhcnRBbmdsZSwgDQorICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzd2VlcEFuZ2xlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gQWRkUGllKHJlY3QuWCwgcmVjdC5ZLCByZWN0LldpZHRoLCByZWN0LkhlaWdodCwgc3RhcnRBbmdsZSwNCisgICAgICAgICAgICAgICAgICAgICAgc3dlZXBBbmdsZSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEFkZFBpZShJTiBSRUFMIHgsIA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSwgDQorICAgICAgICAgICAgICAgICAgSU4gUkVBTCB3aWR0aCwgDQorICAgICAgICAgICAgICAgICAgSU4gUkVBTCBoZWlnaHQsIA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3RhcnRBbmdsZSwNCisgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN3ZWVwQW5nbGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhQaWUobmF0aXZlUGF0aCwgeCwgeSwgd2lkdGgsIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGUsIHN3ZWVwQW5nbGUpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBpbnRlZ2VyIHZlcnNpb24NCisgICAgU3RhdHVzIEFkZFBpZShJTiBjb25zdCBSZWN0JiByZWN0LCANCisgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN0YXJ0QW5nbGUsIA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3dlZXBBbmdsZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEFkZFBpZShyZWN0LlgsDQorICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWSwNCisgICAgICAgICAgICAgICAgICAgICAgcmVjdC5XaWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgcmVjdC5IZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgICAgIHN3ZWVwQW5nbGUpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRQaWUoSU4gSU5UIHgsIA0KKyAgICAgICAgICAgICAgICAgIElOIElOVCB5LCANCisgICAgICAgICAgICAgICAgICBJTiBJTlQgd2lkdGgsIA0KKyAgICAgICAgICAgICAgICAgIElOIElOVCBoZWlnaHQsIA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3RhcnRBbmdsZSwNCisgICAgICAgICAgICAgICAgICBJTiBSRUFMIHN3ZWVwQW5nbGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhQaWVJKG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3ZWVwQW5nbGUpKTsNCisgICAgfQ0KKw0KKyAgICAvLyBmbG9hdCB2ZXJzaW9uDQorICAgIFN0YXR1cyBBZGRQb2x5Z29uKElOIGNvbnN0IFBvaW50RiogcG9pbnRzLCANCisgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoUG9seWdvbihuYXRpdmVQYXRoLCBwb2ludHMsIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBBZGRQb2x5Z29uKElOIGNvbnN0IFBvaW50KiBwb2ludHMsIA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aFBvbHlnb25JKG5hdGl2ZVBhdGgsIHBvaW50cywgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQWRkUGF0aChJTiBjb25zdCBHcmFwaGljc1BhdGgqIGFkZGluZ1BhdGgsIA0KKyAgICAgICAgICAgICAgICAgICBJTiBCT09MIGNvbm5lY3QpDQorICAgIHsNCisgICAgICAgIEdwUGF0aCogbmF0aXZlUGF0aDIgPSBOVUxMOw0KKyAgICAgICAgaWYoYWRkaW5nUGF0aCkNCisgICAgICAgICAgICBuYXRpdmVQYXRoMiA9IGFkZGluZ1BhdGgtPm5hdGl2ZVBhdGg7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoUGF0aChuYXRpdmVQYXRoLCBuYXRpdmVQYXRoMiwgY29ubmVjdCkpOw0KKyAgICB9DQorDQorICAgIC8vIEFkZFN0cmluZyBwb2ludCB2ZXJzaW9uDQorDQorICAgIFN0YXR1cyBBZGRTdHJpbmcoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAgICAgICAgICpzdHJpbmcsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBJTiBjb25zdCBGb250RmFtaWx5ICAgICpmYW1pbHksDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgICBzdHlsZSwNCisgICAgICAgIElOIFJFQUwgICAgICAgICAgICAgICAgIGVtU2l6ZSwgIC8vIEluIHdvcmxkIHVuaXRzDQorICAgICAgICBJTiBjb25zdCBQb2ludEYgICAgICAgICZvcmlnaW4sDQorICAgICAgICBJTiBjb25zdCBTdHJpbmdGb3JtYXQgICpmb3JtYXQNCisgICAgKQ0KKyAgICB7DQorICAgICAgICBSZWN0RiByZWN0KG9yaWdpbi5YLCBvcmlnaW4uWSwgMC4wZiwgMC4wZik7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBBZGRQYXRoU3RyaW5nKA0KKyAgICAgICAgICAgIG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgc3RyaW5nLA0KKyAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgICAgICBmYW1pbHkgPyBmYW1pbHktPm5hdGl2ZUZhbWlseSA6IE5VTEwsDQorICAgICAgICAgICAgc3R5bGUsDQorICAgICAgICAgICAgZW1TaXplLA0KKyAgICAgICAgICAgICZyZWN0LA0KKyAgICAgICAgICAgIGZvcm1hdCA/IGZvcm1hdC0+bmF0aXZlRm9ybWF0IDogTlVMTA0KKyAgICAgICAgKSk7DQorICAgIH0NCisNCisgICAgLy8gQWRkU3RyaW5nIHJlY3RhbmdsZSB2ZXJzaW9uDQorDQorICAgIFN0YXR1cyBBZGRTdHJpbmcoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAgICAgICAgICpzdHJpbmcsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBJTiBjb25zdCBGb250RmFtaWx5ICAgICpmYW1pbHksDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgICBzdHlsZSwNCisgICAgICAgIElOIFJFQUwgICAgICAgICAgICAgICAgIGVtU2l6ZSwgIC8vIEluIHdvcmxkIHVuaXRzDQorICAgICAgICBJTiBjb25zdCBSZWN0RiAgICAgICAgICZsYXlvdXRSZWN0LA0KKyAgICAgICAgSU4gY29uc3QgU3RyaW5nRm9ybWF0ICAqZm9ybWF0DQorICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aFN0cmluZygNCisgICAgICAgICAgICBuYXRpdmVQYXRoLA0KKyAgICAgICAgICAgIHN0cmluZywNCisgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICAgICAgZmFtaWx5ID8gZmFtaWx5LT5uYXRpdmVGYW1pbHkgOiBOVUxMLA0KKyAgICAgICAgICAgIHN0eWxlLA0KKyAgICAgICAgICAgIGVtU2l6ZSwNCisgICAgICAgICAgICAmbGF5b3V0UmVjdCwNCisgICAgICAgICAgICBmb3JtYXQgPyBmb3JtYXQtPm5hdGl2ZUZvcm1hdCA6IE5VTEwNCisgICAgICAgICkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBBZGRTdHJpbmcoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAgICAgICAgICpzdHJpbmcsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBJTiBjb25zdCBGb250RmFtaWx5ICAgICpmYW1pbHksDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgICBzdHlsZSwNCisgICAgICAgIElOIFJFQUwgICAgICAgICAgICAgICAgIGVtU2l6ZSwgIC8vIEluIHdvcmxkIHVuaXRzDQorICAgICAgICBJTiBjb25zdCBQb2ludCAgICAgICAgICZvcmlnaW4sDQorICAgICAgICBJTiBjb25zdCBTdHJpbmdGb3JtYXQgICpmb3JtYXQNCisgICAgKQ0KKyAgICB7DQorICAgICAgICBSZWN0IHJlY3Qob3JpZ2luLlgsIG9yaWdpbi5ZLCAwLCAwKTsNCisNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEFkZFBhdGhTdHJpbmdJKA0KKyAgICAgICAgICAgIG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgc3RyaW5nLA0KKyAgICAgICAgICAgIGxlbmd0aCwNCisgICAgICAgICAgICBmYW1pbHkgPyBmYW1pbHktPm5hdGl2ZUZhbWlseSA6IE5VTEwsDQorICAgICAgICAgICAgc3R5bGUsDQorICAgICAgICAgICAgZW1TaXplLA0KKyAgICAgICAgICAgICZyZWN0LA0KKyAgICAgICAgICAgIGZvcm1hdCA/IGZvcm1hdC0+bmF0aXZlRm9ybWF0IDogTlVMTA0KKyAgICAgICAgKSk7DQorICAgIH0NCisNCisgICAgLy8gQWRkU3RyaW5nIHJlY3RhbmdsZSB2ZXJzaW9uDQorDQorICAgIFN0YXR1cyBBZGRTdHJpbmcoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAgICAgICAgICpzdHJpbmcsDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgICBsZW5ndGgsDQorICAgICAgICBJTiBjb25zdCBGb250RmFtaWx5ICAgICpmYW1pbHksDQorICAgICAgICBJTiBJTlQgICAgICAgICAgICAgICAgICBzdHlsZSwNCisgICAgICAgIElOIFJFQUwgICAgICAgICAgICAgICAgIGVtU2l6ZSwgIC8vIEluIHdvcmxkIHVuaXRzDQorICAgICAgICBJTiBjb25zdCBSZWN0ICAgICAgICAgICZsYXlvdXRSZWN0LA0KKyAgICAgICAgSU4gY29uc3QgU3RyaW5nRm9ybWF0ICAqZm9ybWF0DQorICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQWRkUGF0aFN0cmluZ0koDQorICAgICAgICAgICAgbmF0aXZlUGF0aCwNCisgICAgICAgICAgICBzdHJpbmcsDQorICAgICAgICAgICAgbGVuZ3RoLA0KKyAgICAgICAgICAgIGZhbWlseSA/IGZhbWlseS0+bmF0aXZlRmFtaWx5IDogTlVMTCwNCisgICAgICAgICAgICBzdHlsZSwNCisgICAgICAgICAgICBlbVNpemUsDQorICAgICAgICAgICAgJmxheW91dFJlY3QsDQorICAgICAgICAgICAgZm9ybWF0ID8gZm9ybWF0LT5uYXRpdmVGb3JtYXQgOiBOVUxMDQorICAgICAgICApKTsNCisgICAgfQ0KKyAgICANCisgICAgLyoqDQorICAgICAqIFRyYW5zZm9ybXMgdGhlIHBhdGggb2JqZWN0DQorICAgICAqLw0KKyAgICBTdGF0dXMgVHJhbnNmb3JtKElOIGNvbnN0IE1hdHJpeCogbWF0cml4KQ0KKyAgICB7DQorICAgICAgICBpZihtYXRyaXgpDQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwVHJhbnNmb3JtUGF0aChuYXRpdmVQYXRoLCBtYXRyaXgtPm5hdGl2ZU1hdHJpeCkpOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIHJldHVybiBPazsgIC8vIE5vIG5lZWQgdG8gdHJhbnNmb3JtLg0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBHZXQgdGhlIGJvdW5kcyBvZiB0aGUgcGF0aCBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNmb3JtLg0KKyAgICAgKiBUaGlzIGlzIG5vdCBhbHdheXMgdGhlIHRpZ2h0ZXN0IGJvdW5kcy4NCisgICAgICoNCisgICAgICogRGVmaW5lZCBpbiBHZGlwbHVzR3JhcGhpY3MuaC4NCisgICAgICovDQorICAgIFN0YXR1cyBHZXRCb3VuZHMoT1VUIFJlY3RGKiBib3VuZHMsIA0KKyAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IE1hdHJpeCogbWF0cml4ID0gTlVMTCwgDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUGVuKiBwZW4gPSBOVUxMKSBjb25zdDsNCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uIChkZWZpbmVkIGluIEdkaXBsdXNHcmFwaGljcy5oKQ0KKyAgICBTdGF0dXMgR2V0Qm91bmRzKE9VVCBSZWN0KiBib3VuZHMsDQorICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgTWF0cml4KiBtYXRyaXggPSBOVUxMLCANCisgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQZW4qIHBlbiA9IE5VTEwpIGNvbnN0Ow0KKw0KKyAgICAvKioNCisgICAgICogRmxhdHRlbiB0aGUgcGF0aCBvYmplY3QNCisgICAgICogT25jZSB0aGlzIGlzIGNhbGxlZCwgdGhlIHJlc3VsdGFudCBwYXRoIGlzIG1hZGUgb2YgbGluZSBzZWdtZW50cyBhbmQNCisgICAgICogdGhlIG9yaWdpbmFsIHBhdGggaW5mb3JtYXRpb24gaXMgbG9zdC4NCisgICAgICogV2hlbiBtYXRyaXggPSBOVUxMLCB0aGUgaWRlbnRpdHkgbWF0cml4IGlzIGFzc3VtZWQuDQorICAgICAqLw0KKyAgICBTdGF0dXMgRmxhdHRlbihJTiBjb25zdCBNYXRyaXgqIG1hdHJpeCA9IE5VTEwsIA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIGZsYXRuZXNzID0gRmxhdG5lc3NEZWZhdWx0KQ0KKyAgICB7DQorICAgICAgICBHcE1hdHJpeCogbmF0aXZlTWF0cml4ID0gTlVMTDsNCisgICAgICAgIGlmKG1hdHJpeCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBuYXRpdmVNYXRyaXggPSBtYXRyaXgtPm5hdGl2ZU1hdHJpeDsNCisgICAgICAgIH0NCisNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEZsYXR0ZW5QYXRoKA0KKyAgICAgICAgICAgIG5hdGl2ZVBhdGgsIA0KKyAgICAgICAgICAgIG5hdGl2ZU1hdHJpeCwgDQorICAgICAgICAgICAgZmxhdG5lc3MNCisgICAgICAgICkpOw0KKyAgICB9DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzIwMjkwMw0KKyAgICANCisgICAgU3RhdHVzIFdpZGVuKA0KKyAgICAgICAgSU4gY29uc3QgUGVuKiBwZW4sIA0KKyAgICAgICAgSU4gY29uc3QgTWF0cml4KiBtYXRyaXggPSBOVUxMLA0KKyAgICAgICAgSU4gUkVBTCBmbGF0bmVzcyA9IEZsYXRuZXNzRGVmYXVsdA0KKyAgICApDQorICAgIHsNCisgICAgICAgIEdwTWF0cml4KiBuYXRpdmVNYXRyaXggPSBOVUxMOw0KKyAgICAgICAgaWYobWF0cml4KQ0KKyAgICAgICAgICAgIG5hdGl2ZU1hdHJpeCA9IG1hdHJpeC0+bmF0aXZlTWF0cml4Ow0KKw0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwV2lkZW5QYXRoKA0KKyAgICAgICAgICAgIG5hdGl2ZVBhdGgsIA0KKyAgICAgICAgICAgIHBlbi0+bmF0aXZlUGVuLA0KKyAgICAgICAgICAgIG5hdGl2ZU1hdHJpeCwgDQorICAgICAgICAgICAgZmxhdG5lc3MNCisgICAgICAgICkpOw0KKyAgICB9DQorDQorI2Vsc2UNCisNCisgICAgLyoqDQorICAgICAqIFdpZGVuIHRoZSBwYXRoIG9iamVjdA0KKyAgICAgKiBXaGVuIHJlbW92ZVNlbGZJbnRlcnNlY3RzIGlzIFRSVUUsIHRoaXMgcmV0dXJucyB0aGUgd2lkZW5lZCBwYXRoDQorICAgICAqIHdpdGhvdXQgc2VsZiBpbnRlcnNlY3Rpb25zLg0KKyAgICAgKiBXaGVuIGl0IGlzIEZBTFNFLCBpdCByZXR1cm5zIHRoZSB3aWRlbmVkIHBhdGggd2l0aCBzZWxmaW50ZXJzZWN0aW9ucy4NCisgICAgICogVGhlIGxhdHRlciBpcyBmYXN0ZXIgYW5kIGlzIHVzdWFsbHkgc2FmZmljaWVudCBmb3IgZmlsbGluZy4NCisgICAgICovDQorICAgIFN0YXR1cyBXaWRlbihJTiBjb25zdCBQZW4qIHBlbiwgDQorICAgICAgICAgICAgICAgICBJTiBjb25zdCBNYXRyaXgqIG1hdHJpeCA9IE5VTEwsDQorICAgICAgICAgICAgICAgICBJTiBCT09MIHJlbW92ZVNlbGZJbnRlcnNlY3RzID0gVFJVRSkNCisgICAgew0KKyAgICAgICAgR3BNYXRyaXgqIG5hdGl2ZU1hdHJpeCA9IE5VTEw7DQorICAgICAgICBpZihtYXRyaXgpDQorICAgICAgICAgICAgbmF0aXZlTWF0cml4ID0gbWF0cml4LT5uYXRpdmVNYXRyaXg7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBXaWRlblBhdGhXaXRoTWluaW11bVJlc29sdXRpb25zKG5hdGl2ZVBhdGgsIHBlbi0+bmF0aXZlUGVuLA0KKyAgICAgICAgICAgIDAsIDAsIG5hdGl2ZU1hdHJpeCwgcmVtb3ZlU2VsZkludGVyc2VjdHMpKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogV2lkZW4gdGhlIHBhdGggb2JqZWN0DQorICAgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byBXaWRlbigpIG1ldGhvZCBleGNlcHQgdGhhdA0KKyAgICAgKiBUaGUgd2lkdGhzIG9mIHRoZSB3aWRlbmVkIHBhdGggYXJlIGxhcmdlciB0aGFuIHRoZSBnaXZlbg0KKyAgICAgKiBtaW5pbXVtIHJlc29sdXRpb25zIGluIHggYW5kIHkgY29vcmRpbmF0ZXMgYWZ0ZXIgdGhlIHRyYW5zZm9ybS4NCisgICAgICogVGhpcyBpcyB1c2VmdWxsIHdoZW4gd2lkZW5pbmcgYSBwYXRoIHdpdGggdGhlIGxpbWl0ZWQgZGV2aWNlIHJlc29sdXRpb25zLg0KKyAgICAgKi8NCisNCisgICAgU3RhdHVzIFdpZGVuKElOIGNvbnN0IFBlbiogcGVuLCANCisgICAgICAgICAgICAgICAgIElOIFJFQUwgbWluWHJlcywgDQorICAgICAgICAgICAgICAgICBJTiBSRUFMIG1pbllyZXMsIA0KKyAgICAgICAgICAgICAgICAgSU4gY29uc3QgTWF0cml4KiBtYXRyaXggPSBOVUxMLA0KKyAgICAgICAgICAgICAgICAgSU4gQk9PTCByZW1vdmVTZWxmSW50ZXJzZWN0cyA9IFRSVUUpDQorICAgIHsNCisgICAgICAgIEdwTWF0cml4KiBuYXRpdmVNYXRyaXggPSBOVUxMOw0KKyAgICAgICAgaWYobWF0cml4KQ0KKyAgICAgICAgICAgIG5hdGl2ZU1hdHJpeCA9IG1hdHJpeC0+bmF0aXZlTWF0cml4Ow0KKw0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwV2lkZW5QYXRoV2l0aE1pbmltdW1SZXNvbHV0aW9ucyhuYXRpdmVQYXRoLCBwZW4tPm5hdGl2ZVBlbiwNCisgICAgICAgICAgICBtaW5YcmVzLCBtaW5ZcmVzLCBuYXRpdmVNYXRyaXgsIHJlbW92ZVNlbGZJbnRlcnNlY3RzKSk7DQorICAgIH0NCisNCisjZW5kaWYgLy8gRENSX1VTRV9ORVdfMjAyOTAzDQorDQorICAgIFN0YXR1cyBPdXRsaW5lKA0KKyAgICAgICAgSU4gY29uc3QgTWF0cml4ICptYXRyaXggPSBOVUxMLA0KKyAgICAgICAgSU4gUkVBTCBmbGF0bmVzcyA9IEZsYXRuZXNzRGVmYXVsdA0KKyAgICApDQorICAgIHsNCisgICAgICAgIEdwTWF0cml4KiBuYXRpdmVNYXRyaXggPSBOVUxMOw0KKyAgICAgICAgaWYobWF0cml4KQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIG5hdGl2ZU1hdHJpeCA9IG1hdHJpeC0+bmF0aXZlTWF0cml4Ow0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwV2luZGluZ01vZGVPdXRsaW5lKA0KKyAgICAgICAgICAgIG5hdGl2ZVBhdGgsIG5hdGl2ZU1hdHJpeCwgZmxhdG5lc3MNCisgICAgICAgICkpOw0KKyAgICB9DQorICAgIA0KKyAgICAvKioNCisgICAgICogV2FycCB0aGUgcGF0aCBvYmplY3QNCisgICAgICogT25jZSB0aGlzIGlzIGNhbGxlZCwgdGhlIHJlc3VsdGFudCBwYXRoIGlzIG1hZGUgb2YgbGluZSBzZWdtZW50cyBhbmQNCisgICAgICogdGhlIG9yaWdpbmFsIHBhdGggaW5mb3JtYXRpb24gaXMgbG9zdC4NCisgICAgICogV2hlbiBtYXRyaXggPSBOVUxMLCB0aGUgaWRlbnRpdHkgbWF0cml4IGlzIGFzc3VtZWQuDQorICAgICAqLw0KKyAgICBTdGF0dXMgV2FycChJTiBjb25zdCBQb2ludEYqIGRlc3RQb2ludHMsIA0KKyAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQsDQorICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3RGJiBzcmNSZWN0LCANCisgICAgICAgICAgICAgICAgSU4gY29uc3QgTWF0cml4KiBtYXRyaXggPSBOVUxMLA0KKyAgICAgICAgICAgICAgICBJTiBXYXJwTW9kZSB3YXJwTW9kZSA9IFdhcnBNb2RlUGVyc3BlY3RpdmUsDQorICAgICAgICAgICAgICAgIElOIFJFQUwgZmxhdG5lc3MgPSBGbGF0bmVzc0RlZmF1bHQpDQorICAgIHsNCisgICAgICAgIEdwTWF0cml4KiBuYXRpdmVNYXRyaXggPSBOVUxMOw0KKyAgICAgICAgaWYobWF0cml4KQ0KKyAgICAgICAgICAgIG5hdGl2ZU1hdHJpeCA9IG1hdHJpeC0+bmF0aXZlTWF0cml4Ow0KKw0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwV2FycFBhdGgoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVBhdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZU1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFBvaW50cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1JlY3QuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUmVjdC5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNSZWN0LldpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNSZWN0LkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FycE1vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYXRuZXNzKSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBvaW50cyBpbiB0aGUgY3VycmVudCBwYXRoDQorICAgICAqLw0KKyAgICBJTlQgR2V0UG9pbnRDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIElOVCBjb3VudCA9IDA7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBvaW50Q291bnQobmF0aXZlUGF0aCwgJmNvdW50KSk7DQorDQorICAgICAgICByZXR1cm4gY291bnQ7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFJldHVybiB0aGUgcGF0aCBwb2ludCB0eXBlIGluZm9ybWF0aW9uDQorICAgICAqLw0KKyAgICBTdGF0dXMgR2V0UGF0aFR5cGVzKE9VVCBCWVRFKiB0eXBlcywgDQorICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQYXRoVHlwZXMobmF0aXZlUGF0aCwgdHlwZXMsIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFJldHVybiB0aGUgcGF0aCBwb2ludCBjb29yZGluYXRlIGluZm9ybWF0aW9uDQorICAgICAqIEBub3RlcyBTaG91bGQgdGhlcmUgYmUgUGF0aERhdGEgdGhhdCBjb250YWlucyB0eXBlc1tdIGFuZCBwb2ludHNbXQ0KKyAgICAgKiAgICAgICAgZm9yIGdldCAmIHNldCBwdXJwb3Nlcy4NCisgICAgICovDQorICAgIFN0YXR1cyBHZXRQYXRoUG9pbnRzKE9VVCBQb2ludEYqIHBvaW50cywgDQorICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGF0aFBvaW50cyhuYXRpdmVQYXRoLCBwb2ludHMsIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgLy8gaW50ZWdlciB2ZXJzaW9uDQorICAgIFN0YXR1cyBHZXRQYXRoUG9pbnRzKE9VVCBQb2ludCogcG9pbnRzLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQYXRoUG9pbnRzSShuYXRpdmVQYXRoLCBwb2ludHMsIGNvdW50KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldExhc3RTdGF0dXMoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBTdGF0dXMgbGFzdFN0YXR1cyA9IGxhc3RSZXN1bHQ7DQorICAgICAgICBsYXN0UmVzdWx0ID0gT2s7DQorDQorICAgICAgICByZXR1cm4gbGFzdFN0YXR1czsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogSGl0IHRlc3Rpbmcgb3BlcmF0aW9ucw0KKyAgICAgKg0KKyAgICAgKiBpbmxpbmUgaW1wbGVtZW50YXRpb24gaXMgaW4gZ2RpcGx1c2dyYXBoaWNzLmguDQorICAgICAqLw0KKw0KKyAgICBCT09MIElzVmlzaWJsZShJTiBjb25zdCBQb2ludEYmIHBvaW50LCANCisgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgR3JhcGhpY3MqIGcgPSBOVUxMKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gSXNWaXNpYmxlKHBvaW50LlgsIHBvaW50LlksIGcpOw0KKyAgICB9DQorICAgIA0KKyAgICBCT09MIElzVmlzaWJsZShJTiBSRUFMIHgsIA0KKyAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHksIA0KKyAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljcyogZyA9IE5VTEwpIGNvbnN0Ow0KKw0KKyAgICBCT09MIElzVmlzaWJsZShJTiBjb25zdCBQb2ludCYgcG9pbnQsDQorICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnID0gTlVMTCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIElzVmlzaWJsZShwb2ludC5YLCBwb2ludC5ZLCBnKTsNCisgICAgfQ0KKw0KKyAgICBCT09MIElzVmlzaWJsZShJTiBJTlQgeCwgDQorICAgICAgICAgICAgICAgICAgIElOIElOVCB5LCANCisgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgR3JhcGhpY3MqIGcgPSBOVUxMKSBjb25zdDsNCisgICAgDQorICAgIEJPT0wgSXNPdXRsaW5lVmlzaWJsZShJTiBjb25zdCBQb2ludEYmIHBvaW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUGVuKiBwZW4sIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgR3JhcGhpY3MqIGcgPSBOVUxMKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gSXNPdXRsaW5lVmlzaWJsZShwb2ludC5YLCBwb2ludC5ZLCBwZW4sIGcpOw0KKyAgICB9DQorDQorICAgIEJPT0wgSXNPdXRsaW5lVmlzaWJsZShJTiBSRUFMIHgsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCB5LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFBlbiogcGVuLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnID0gTlVMTCkgY29uc3Q7DQorDQorICAgIEJPT0wgSXNPdXRsaW5lVmlzaWJsZShJTiBjb25zdCBQb2ludCYgcG9pbnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQZW4qIHBlbiwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljcyogZyA9IE5VTEwpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBJc091dGxpbmVWaXNpYmxlKHBvaW50LlgsIHBvaW50LlksIHBlbiwgZyk7DQorICAgIH0NCisgICAgDQorICAgIEJPT0wgSXNPdXRsaW5lVmlzaWJsZShJTiBJTlQgeCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgeSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBQZW4qIHBlbiwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljcyogZyA9IE5VTEwpIGNvbnN0Ow0KKw0KK3Byb3RlY3RlZDoNCisNCisgICAgR3JhcGhpY3NQYXRoKGNvbnN0IEdyYXBoaWNzUGF0aCYgcGF0aCkNCisgICAgew0KKyAgICAgICAgR3BQYXRoICpjbG9uZXBhdGggPSBOVUxMOw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDbG9uZVBhdGgocGF0aC5uYXRpdmVQYXRoLCAmY2xvbmVwYXRoKSk7DQorICAgICAgICBTZXROYXRpdmVQYXRoKGNsb25lcGF0aCk7DQorICAgIH0NCisNCisjaWZkZWYgRENSX1VTRV9ORVdfMjUwOTMyDQorDQorcHJpdmF0ZToNCisgICAgR3JhcGhpY3NQYXRoJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NQYXRoICYpOw0KK3Byb3RlY3RlZDoNCisNCisjZWxzZQ0KKw0KKyAgICBHcmFwaGljc1BhdGgmIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc1BhdGgmIHBhdGgpDQorICAgIHsNCisgICAgICAgIHBhdGg7DQorICAgICAgICBTZXRTdGF0dXMoTm90SW1wbGVtZW50ZWQpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorI2VuZGlmDQorDQorICAgIEdyYXBoaWNzUGF0aChHcFBhdGgqIG5hdGl2ZVBhdGgpDQorICAgIHsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBPazsNCisgICAgICAgIFNldE5hdGl2ZVBhdGgobmF0aXZlUGF0aCk7DQorICAgIH0NCisNCisgICAgVk9JRCBTZXROYXRpdmVQYXRoKEdwUGF0aCAqbmF0aXZlUGF0aCkNCisgICAgew0KKyAgICAgICAgdGhpcy0+bmF0aXZlUGF0aCA9IG5hdGl2ZVBhdGg7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldFN0YXR1cyhTdGF0dXMgc3RhdHVzKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoc3RhdHVzICE9IE9rKQ0KKyAgICAgICAgICAgIHJldHVybiAobGFzdFJlc3VsdCA9IHN0YXR1cyk7DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KK3Byb3RlY3RlZDoNCisgICAgR3BQYXRoKiBuYXRpdmVQYXRoOw0KKyAgICBtdXRhYmxlIFN0YXR1cyBsYXN0UmVzdWx0Ow0KK307DQorDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEdyYXBoaXNQYXRoSXRlcmF0b3IgY2xhc3MNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorY2xhc3MgR3JhcGhpY3NQYXRoSXRlcmF0b3IgOiBwdWJsaWMgR2RpcGx1c0Jhc2UNCit7DQorcHVibGljOg0KKw0KKyAgICBHcmFwaGljc1BhdGhJdGVyYXRvcihJTiBjb25zdCBHcmFwaGljc1BhdGgqIHBhdGgpDQorICAgIHsNCisgICAgICAgIEdwUGF0aCogbmF0aXZlUGF0aCA9IE5VTEw7DQorICAgICAgICBpZihwYXRoKQ0KKyAgICAgICAgICAgIG5hdGl2ZVBhdGggPSBwYXRoLT5uYXRpdmVQYXRoOw0KKw0KKyAgICAgICAgR3BQYXRoSXRlcmF0b3IgKml0ZXIgPSBOVUxMOw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVQYXRoSXRlcigmaXRlciwgbmF0aXZlUGF0aCk7DQorICAgICAgICBTZXROYXRpdmVJdGVyYXRvcihpdGVyKTsNCisgICAgfQ0KKw0KKyAgICB+R3JhcGhpY3NQYXRoSXRlcmF0b3IoKQ0KKyAgICB7DQorICAgICAgICBEbGxFeHBvcnRzOjpHZGlwRGVsZXRlUGF0aEl0ZXIobmF0aXZlSXRlcmF0b3IpOw0KKyAgICB9DQorDQorDQorICAgIElOVCBOZXh0U3VicGF0aChPVVQgSU5UKiBzdGFydEluZGV4LA0KKyAgICAgICAgICAgICAgICAgICAgT1VUIElOVCogZW5kSW5kZXgsDQorICAgICAgICAgICAgICAgICAgICBPVVQgQk9PTCogaXNDbG9zZWQpDQorICAgIHsNCisgICAgICAgIElOVCByZXN1bHRDb3VudDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUGF0aEl0ZXJOZXh0U3VicGF0aChuYXRpdmVJdGVyYXRvciwNCisgICAgICAgICAgICAmcmVzdWx0Q291bnQsIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCBpc0Nsb3NlZCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIHJlc3VsdENvdW50Ow0KKyAgICB9DQorDQorDQorICAgIElOVCBOZXh0U3VicGF0aChJTiBjb25zdCBHcmFwaGljc1BhdGgqIHBhdGgsIA0KKyAgICAgICAgICAgICAgICAgICAgT1VUIEJPT0wqIGlzQ2xvc2VkKQ0KKyAgICB7DQorICAgICAgICBHcFBhdGgqIG5hdGl2ZVBhdGggPSBOVUxMOw0KKw0KKyAgICAgICAgSU5UIHJlc3VsdENvdW50Ow0KKw0KKyAgICAgICAgaWYocGF0aCkNCisgICAgICAgICAgICBuYXRpdmVQYXRoPSBwYXRoLT5uYXRpdmVQYXRoOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBQYXRoSXRlck5leHRTdWJwYXRoUGF0aChuYXRpdmVJdGVyYXRvciwNCisgICAgICAgICAgICAmcmVzdWx0Q291bnQsIG5hdGl2ZVBhdGgsIGlzQ2xvc2VkKSk7DQorDQorICAgICAgICByZXR1cm4gcmVzdWx0Q291bnQ7DQorICAgIH0NCisNCisgICAgSU5UIE5leHRQYXRoVHlwZShPVVQgQllURSogcGF0aFR5cGUsIA0KKyAgICAgICAgICAgICAgICAgICAgIE9VVCBJTlQqIHN0YXJ0SW5kZXgsIA0KKyAgICAgICAgICAgICAgICAgICAgIE9VVCBJTlQqIGVuZEluZGV4KQ0KKyAgICB7DQorICAgICAgICBJTlQgcmVzdWx0Q291bnQ7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFBhdGhJdGVyTmV4dFBhdGhUeXBlKG5hdGl2ZUl0ZXJhdG9yLA0KKyAgICAgICAgICAgICZyZXN1bHRDb3VudCwgcGF0aFR5cGUsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSk7DQorDQorICAgICAgICByZXR1cm4gcmVzdWx0Q291bnQ7DQorICAgIH0NCisNCisgICAgSU5UIE5leHRNYXJrZXIoT1VUIElOVCogc3RhcnRJbmRleCwgDQorICAgICAgICAgICAgICAgICAgIE9VVCBJTlQqIGVuZEluZGV4KQ0KKyAgICB7DQorICAgICAgICBJTlQgcmVzdWx0Q291bnQ7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFBhdGhJdGVyTmV4dE1hcmtlcihuYXRpdmVJdGVyYXRvciwNCisgICAgICAgICAgICAmcmVzdWx0Q291bnQsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSk7DQorDQorICAgICAgICByZXR1cm4gcmVzdWx0Q291bnQ7DQorICAgIH0NCisNCisNCisgICAgSU5UIE5leHRNYXJrZXIoSU4gY29uc3QgR3JhcGhpY3NQYXRoKiBwYXRoKQ0KKyAgICB7DQorICAgICAgICBHcFBhdGgqIG5hdGl2ZVBhdGggPSBOVUxMOw0KKw0KKyAgICAgICAgSU5UIHJlc3VsdENvdW50Ow0KKw0KKyAgICAgICAgaWYocGF0aCkNCisgICAgICAgICAgICBuYXRpdmVQYXRoPSBwYXRoLT5uYXRpdmVQYXRoOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBQYXRoSXRlck5leHRNYXJrZXJQYXRoKG5hdGl2ZUl0ZXJhdG9yLA0KKyAgICAgICAgICAgICZyZXN1bHRDb3VudCwgbmF0aXZlUGF0aCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIHJlc3VsdENvdW50Ow0KKyAgICB9DQorDQorICAgIElOVCBHZXRDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIElOVCByZXN1bHRDb3VudDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUGF0aEl0ZXJHZXRDb3VudChuYXRpdmVJdGVyYXRvciwgJnJlc3VsdENvdW50KSk7DQorDQorICAgICAgICByZXR1cm4gcmVzdWx0Q291bnQ7DQorICAgIH0NCisNCisgICAgSU5UIEdldFN1YnBhdGhDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIElOVCByZXN1bHRDb3VudDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUGF0aEl0ZXJHZXRTdWJwYXRoQ291bnQobmF0aXZlSXRlcmF0b3IsICZyZXN1bHRDb3VudCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIHJlc3VsdENvdW50Ow0KKyAgICB9DQorDQorICAgIEJPT0wgSGFzQ3VydmUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBCT09MIGhhc0N1cnZlOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBQYXRoSXRlckhhc0N1cnZlKG5hdGl2ZUl0ZXJhdG9yLCAmaGFzQ3VydmUpKTsNCisNCisgICAgICAgIHJldHVybiBoYXNDdXJ2ZTsNCisgICAgfQ0KKw0KKyAgICBWT0lEIFJld2luZCgpDQorICAgIHsNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUGF0aEl0ZXJSZXdpbmQobmF0aXZlSXRlcmF0b3IpKTsNCisgICAgfQ0KKw0KKyAgICBJTlQgRW51bWVyYXRlKE9VVCBQb2ludEYgKnBvaW50cywNCisgICAgICAgICAgICAgICAgICBPVVQgQllURSAqdHlwZXMsIA0KKyAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgSU5UIHJlc3VsdENvdW50Ow0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBQYXRoSXRlckVudW1lcmF0ZShuYXRpdmVJdGVyYXRvciwNCisgICAgICAgICAgICAmcmVzdWx0Q291bnQsIHBvaW50cywgdHlwZXMsIGNvdW50KSk7DQorDQorICAgICAgICByZXR1cm4gcmVzdWx0Q291bnQ7DQorICAgIH0NCisNCisgICAgSU5UIENvcHlEYXRhKE9VVCBQb2ludEYqIHBvaW50cywgDQorICAgICAgICAgICAgICAgICBPVVQgQllURSogdHlwZXMsDQorICAgICAgICAgICAgICAgICBJTiBJTlQgc3RhcnRJbmRleCwgDQorICAgICAgICAgICAgICAgICBJTiBJTlQgZW5kSW5kZXgpDQorICAgIHsNCisgICAgICAgIElOVCByZXN1bHRDb3VudDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUGF0aEl0ZXJDb3B5RGF0YShuYXRpdmVJdGVyYXRvciwNCisgICAgICAgICAgICAmcmVzdWx0Q291bnQsIHBvaW50cywgdHlwZXMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSk7DQorDQorICAgICAgICByZXR1cm4gcmVzdWx0Q291bnQ7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldExhc3RTdGF0dXMoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBTdGF0dXMgbGFzdFN0YXR1cyA9IGxhc3RSZXN1bHQ7DQorICAgICAgICBsYXN0UmVzdWx0ID0gT2s7DQorDQorICAgICAgICByZXR1cm4gbGFzdFN0YXR1czsNCisgICAgfQ0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBHcmFwaGljc1BhdGhJdGVyYXRvcihjb25zdCBHcmFwaGljc1BhdGhJdGVyYXRvciAmKTsNCisgICAgR3JhcGhpY3NQYXRoSXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBHcmFwaGljc1BhdGhJdGVyYXRvciAmKTsNCisNCisjZW5kaWYNCisNCitwcm90ZWN0ZWQ6DQorICAgIFZPSUQgU2V0TmF0aXZlSXRlcmF0b3IoR3BQYXRoSXRlcmF0b3IgKm5hdGl2ZUl0ZXJhdG9yKQ0KKyAgICB7DQorICAgICAgICB0aGlzLT5uYXRpdmVJdGVyYXRvciA9IG5hdGl2ZUl0ZXJhdG9yOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRTdGF0dXMoU3RhdHVzIHN0YXR1cykgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKHN0YXR1cyAhPSBPaykNCisgICAgICAgICAgICByZXR1cm4gKGxhc3RSZXN1bHQgPSBzdGF0dXMpOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIHJldHVybiBzdGF0dXM7DQorICAgIH0NCisNCitwcm90ZWN0ZWQ6DQorICAgIEdwUGF0aEl0ZXJhdG9yKiBuYXRpdmVJdGVyYXRvcjsNCisgICAgbXV0YWJsZSBTdGF0dXMgbGFzdFJlc3VsdDsNCit9Ow0KKw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBSZXByZXNlbnQgcG9seWdvbiBncmFkaWVudCBicnVzaCBvYmplY3QNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorY2xhc3MgUGF0aEdyYWRpZW50QnJ1c2ggOiBwdWJsaWMgQnJ1c2gNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgUGVuOw0KKw0KKyAgICBQYXRoR3JhZGllbnRCcnVzaCgNCisgICAgICAgIElOIGNvbnN0IFBvaW50RiogcG9pbnRzLA0KKyAgICAgICAgSU4gSU5UIGNvdW50LA0KKyAgICAgICAgSU4gV3JhcE1vZGUgd3JhcE1vZGUgPSBXcmFwTW9kZUNsYW1wKQ0KKyAgICB7DQorICAgICAgICBHcFBhdGhHcmFkaWVudCAqYnJ1c2ggPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVQYXRoR3JhZGllbnQoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cywgY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBNb2RlLCAmYnJ1c2gpOw0KKyAgICAgICAgU2V0TmF0aXZlQnJ1c2goYnJ1c2gpOw0KKyAgICB9DQorDQorICAgIFBhdGhHcmFkaWVudEJydXNoKA0KKyAgICAgICAgSU4gY29uc3QgUG9pbnQqIHBvaW50cywNCisgICAgICAgIElOIElOVCBjb3VudCwNCisgICAgICAgIElOIFdyYXBNb2RlIHdyYXBNb2RlID0gV3JhcE1vZGVDbGFtcCkNCisgICAgew0KKyAgICAgICAgR3BQYXRoR3JhZGllbnQgKmJydXNoID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlUGF0aEdyYWRpZW50SSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLCBjb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE1vZGUsICZicnVzaCk7DQorDQorICAgICAgICBTZXROYXRpdmVCcnVzaChicnVzaCk7DQorICAgIH0NCisNCisgICAgUGF0aEdyYWRpZW50QnJ1c2goDQorICAgICAgICBJTiBjb25zdCBHcmFwaGljc1BhdGgqIHBhdGgNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgR3BQYXRoR3JhZGllbnQgKmJydXNoID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlUGF0aEdyYWRpZW50RnJvbVBhdGgoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgtPm5hdGl2ZVBhdGgsICZicnVzaCk7DQorICAgICAgICBTZXROYXRpdmVCcnVzaChicnVzaCk7DQorICAgIH0NCisNCisgICAgLy8gR2V0L3NldCBjb2xvcnMNCisNCisgICAgU3RhdHVzIEdldENlbnRlckNvbG9yKE9VVCBDb2xvciogY29sb3IpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEFSR0IgYXJnYjsNCisgICAgICAgIA0KKyAgICAgICAgaWYgKGNvbG9yID09IE5VTEwpIA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorICAgICAgICB9DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhHcmFkaWVudENlbnRlckNvbG9yKA0KKyAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KikgbmF0aXZlQnJ1c2gsICZhcmdiKSk7DQorDQorICAgICAgICBjb2xvci0+U2V0VmFsdWUoYXJnYik7DQorDQorICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0Q2VudGVyQ29sb3IoSU4gY29uc3QgQ29sb3ImIGNvbG9yKQ0KKyAgICB7DQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBhdGhHcmFkaWVudENlbnRlckNvbG9yKA0KKyAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KikgbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5HZXRWYWx1ZSgpKSk7DQorDQorICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICBJTlQgR2V0UG9pbnRDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIElOVCBjb3VudDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGF0aEdyYWRpZW50UG9pbnRDb3VudCgNCisgICAgICAgICAgICAgICAgICAgICAgIChHcFBhdGhHcmFkaWVudCopIG5hdGl2ZUJydXNoLCAmY291bnQpKTsNCisNCisgICAgICAgIHJldHVybiBjb3VudDsNCisgICAgfQ0KKw0KKyAgICBJTlQgR2V0U3Vycm91bmRDb2xvckNvdW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgSU5UIGNvdW50Ow0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQYXRoR3JhZGllbnRTdXJyb3VuZENvbG9yQ291bnQoDQorICAgICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKSBuYXRpdmVCcnVzaCwgJmNvdW50KSk7DQorDQorICAgICAgICByZXR1cm4gY291bnQ7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldFN1cnJvdW5kQ29sb3JzKE9VVCBDb2xvciogY29sb3JzLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIE9VVCBJTlQqIGNvdW50KSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZihjb2xvcnMgPT0gTlVMTCB8fCBjb3VudCA9PSBOVUxMKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorICAgICAgICB9DQorDQorICAgICAgICBJTlQgY291bnQxOw0KKyAgICAgICAgDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhHcmFkaWVudFN1cnJvdW5kQ29sb3JDb3VudCgNCisgICAgICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKSBuYXRpdmVCcnVzaCwgJmNvdW50MSkpOw0KKw0KKyAgICAgICAgaWYobGFzdFJlc3VsdCAhPSBPaykNCisgICAgICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDsNCisNCisgICAgICAgIGlmKCgqY291bnQgPCBjb3VudDEpIHx8IChjb3VudDEgPD0gMCkpDQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhJbnN1ZmZpY2llbnRCdWZmZXIpOw0KKw0KKyAgICAgICAgQVJHQiogYXJnYnMgPSAoQVJHQiopIG5ldyBBUkdCW2NvdW50MV07DQorICAgICAgICBpZihhcmdicyA9PSBOVUxMKQ0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoT3V0T2ZNZW1vcnkpOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQYXRoR3JhZGllbnRTdXJyb3VuZENvbG9yc1dpdGhDb3VudCgNCisgICAgICAgICAgICAgICAgICAgIChHcFBhdGhHcmFkaWVudCopbmF0aXZlQnJ1c2gsIGFyZ2JzLCAmY291bnQxKSk7DQorDQorICAgICAgICBpZihsYXN0UmVzdWx0ID09IE9rKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGZvcihJTlQgaSA9IDA7IGkgPCBjb3VudDE7IGkrKykNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGNvbG9yc1tpXS5TZXRWYWx1ZShhcmdic1tpXSk7DQorICAgICAgICAgICAgfSAgICAgICAgDQorICAgICAgICAgICAgKmNvdW50ID0gY291bnQxOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgZGVsZXRlIFtdIGFyZ2JzOw0KKyAgICAgICAgcmV0dXJuIGxhc3RSZXN1bHQ7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldFN1cnJvdW5kQ29sb3JzKElOIGNvbnN0IENvbG9yKiBjb2xvcnMsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gT1VUIElOVCogY291bnQpDQorICAgIHsNCisgICAgICAgIGlmKGNvbG9ycyA9PSBOVUxMIHx8IGNvdW50ID09IE5VTEwpDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhJbnZhbGlkUGFyYW1ldGVyKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIElOVCBjb3VudDEgPSBHZXRQb2ludENvdW50KCk7DQorDQorICAgICAgICBpZigoKmNvdW50ID4gY291bnQxKSB8fCAoY291bnQxIDw9IDApKQ0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorDQorICAgICAgICBjb3VudDEgPSAqY291bnQ7DQorDQorICAgICAgICBBUkdCKiBhcmdicyA9IChBUkdCKikgbmV3IEFSR0JbY291bnQxXTsNCisgICAgICAgIGlmKGFyZ2JzID09IE5VTEwpDQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhPdXRPZk1lbW9yeSk7DQorDQorICAgICAgICBmb3IoSU5UIGkgPSAwOyBpIDwgY291bnQxOyBpKyspDQorICAgICAgICB7DQorICAgICAgICAgICAgYXJnYnNbaV0gPSBjb2xvcnNbaV0uR2V0VmFsdWUoKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGF0aEdyYWRpZW50U3Vycm91bmRDb2xvcnNXaXRoQ291bnQoDQorICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKW5hdGl2ZUJydXNoLCBhcmdicywgJmNvdW50MSkpOw0KKw0KKyAgICAgICAgaWYobGFzdFJlc3VsdCA9PSBPaykNCisgICAgICAgICAgICAqY291bnQgPSBjb3VudDE7DQorDQorICAgICAgICBkZWxldGUgW10gYXJnYnM7DQorDQorICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0R3JhcGhpY3NQYXRoKE9VVCBHcmFwaGljc1BhdGgqIHBhdGgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmKHBhdGggPT0gTlVMTCkNCisgICAgICAgICAgICByZXR1cm4gU2V0U3RhdHVzKEludmFsaWRQYXJhbWV0ZXIpOw0KKw0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGF0aEdyYWRpZW50UGF0aCgNCisgICAgICAgICAgICAgICAgICAgIChHcFBhdGhHcmFkaWVudCopbmF0aXZlQnJ1c2gsIHBhdGgtPm5hdGl2ZVBhdGgpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0R3JhcGhpY3NQYXRoKElOIGNvbnN0IEdyYXBoaWNzUGF0aCogcGF0aCkNCisgICAgew0KKyAgICAgICAgaWYocGF0aCA9PSBOVUxMKQ0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQYXRoR3JhZGllbnRQYXRoKA0KKyAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwgcGF0aC0+bmF0aXZlUGF0aCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRDZW50ZXJQb2ludChPVVQgUG9pbnRGKiBwb2ludCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGF0aEdyYWRpZW50Q2VudGVyUG9pbnQoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKW5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQpKTsNCisgICAgfQ0KKw0KKw0KKyAgICBTdGF0dXMgR2V0Q2VudGVyUG9pbnQoT1VUIFBvaW50KiBwb2ludCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGF0aEdyYWRpZW50Q2VudGVyUG9pbnRJKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldENlbnRlclBvaW50KElOIGNvbnN0IFBvaW50RiYgcG9pbnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBhdGhHcmFkaWVudENlbnRlclBvaW50KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwb2ludCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRDZW50ZXJQb2ludChJTiBjb25zdCBQb2ludCYgcG9pbnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBhdGhHcmFkaWVudENlbnRlclBvaW50SSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHcFBhdGhHcmFkaWVudCopbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcG9pbnQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0UmVjdGFuZ2xlKE9VVCBSZWN0RiogcmVjdCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGF0aEdyYWRpZW50UmVjdCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwgcmVjdCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRSZWN0YW5nbGUoT1VUIFJlY3QqIHJlY3QpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhHcmFkaWVudFJlY3RJKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKW5hdGl2ZUJydXNoLCByZWN0KSk7DQorICAgIH0NCisNCisgICAgLy8gR2FtbWEgY29ycmVjdGlvbi4NCisNCisgICAgU3RhdHVzIFNldEdhbW1hQ29ycmVjdGlvbihJTiBCT09MIHVzZUdhbW1hQ29ycmVjdGlvbikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGF0aEdyYWRpZW50R2FtbWFDb3JyZWN0aW9uKA0KKyAgICAgICAgICAgIChHcFBhdGhHcmFkaWVudCopbmF0aXZlQnJ1c2gsIHVzZUdhbW1hQ29ycmVjdGlvbikpOw0KKyAgICB9DQorDQorICAgIEJPT0wgR2V0R2FtbWFDb3JyZWN0aW9uKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgQk9PTCB1c2VHYW1tYUNvcnJlY3Rpb247DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhHcmFkaWVudEdhbW1hQ29ycmVjdGlvbigNCisgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKW5hdGl2ZUJydXNoLCAmdXNlR2FtbWFDb3JyZWN0aW9uKSk7DQorDQorICAgICAgICByZXR1cm4gdXNlR2FtbWFDb3JyZWN0aW9uOw0KKyAgICB9DQorDQorICAgIElOVCBHZXRCbGVuZENvdW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICBJTlQgY291bnQgPSAwOw0KKw0KKyAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhHcmFkaWVudEJsZW5kQ291bnQoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KikgbmF0aXZlQnJ1c2gsICZjb3VudCkpOw0KKw0KKyAgICAgICByZXR1cm4gY291bnQ7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldEJsZW5kKE9VVCBSRUFMKiBibGVuZEZhY3RvcnMsDQorICAgICAgICAgICAgICAgICAgICBPVVQgUkVBTCogYmxlbmRQb3NpdGlvbnMsDQorICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhHcmFkaWVudEJsZW5kKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKW5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZEZhY3RvcnMsIGJsZW5kUG9zaXRpb25zLCBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRCbGVuZChJTiBjb25zdCBSRUFMKiBibGVuZEZhY3RvcnMsIA0KKyAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUkVBTCogYmxlbmRQb3NpdGlvbnMsIA0KKyAgICAgICAgICAgICAgICAgICAgSU4gSU5UIGNvdW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQYXRoR3JhZGllbnRCbGVuZCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRGYWN0b3JzLCBibGVuZFBvc2l0aW9ucywgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBJTlQgR2V0SW50ZXJwb2xhdGlvbkNvbG9yQ291bnQoKSBjb25zdA0KKyAgICB7DQorICAgICAgIElOVCBjb3VudCA9IDA7DQorDQorICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGF0aEdyYWRpZW50UHJlc2V0QmxlbmRDb3VudCgNCisgICAgICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKSBuYXRpdmVCcnVzaCwgJmNvdW50KSk7DQorDQorICAgICAgIHJldHVybiBjb3VudDsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0SW50ZXJwb2xhdGlvbkNvbG9ycyhJTiBjb25zdCBDb2xvciogcHJlc2V0Q29sb3JzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSRUFMKiBibGVuZFBvc2l0aW9ucywgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkNCisgICAgew0KKyAgICAgICAgaWYgKChjb3VudCA8PSAwKSB8fCAhcHJlc2V0Q29sb3JzKSANCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm4gU2V0U3RhdHVzKEludmFsaWRQYXJhbWV0ZXIpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgQVJHQiogYXJnYnMgPSAoQVJHQiopIG5ldyBBUkdCW2NvdW50XTsNCisgICAgICAgIGlmKGFyZ2JzKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGZvcihJTlQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgYXJnYnNbaV0gPSBwcmVzZXRDb2xvcnNbaV0uR2V0VmFsdWUoKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgU3RhdHVzIHN0YXR1cyA9IFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGF0aEdyYWRpZW50UHJlc2V0QmxlbmQoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KikgbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnYnMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRQb3NpdGlvbnMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgICAgICAgICBkZWxldGVbXSBhcmdiczsNCisgICAgICAgICAgICByZXR1cm4gc3RhdHVzOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoT3V0T2ZNZW1vcnkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRJbnRlcnBvbGF0aW9uQ29sb3JzKE9VVCBDb2xvciogcHJlc2V0Q29sb3JzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVVQgUkVBTCogYmxlbmRQb3NpdGlvbnMsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmICgoY291bnQgPD0gMCkgfHwgIXByZXNldENvbG9ycykgDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhJbnZhbGlkUGFyYW1ldGVyKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIEFSR0IqIGFyZ2JzID0gKEFSR0IqKSBuZXcgQVJHQltjb3VudF07DQorICAgICAgICANCisgICAgICAgIGlmICghYXJnYnMpDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhPdXRPZk1lbW9yeSk7DQorICAgICAgICB9DQorDQorICAgICAgICBHcFN0YXR1cyBzdGF0dXMgPSBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhHcmFkaWVudFByZXNldEJsZW5kKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2JzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRQb3NpdGlvbnMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICAgICAgDQorICAgICAgICBmb3IoSU5UIGkgPSAwOyBpIDwgY291bnQ7IGkrKykNCisgICAgICAgIHsNCisgICAgICAgICAgICBwcmVzZXRDb2xvcnNbaV0gPSBDb2xvcihhcmdic1tpXSk7DQorICAgICAgICB9DQorICAgICAgICBkZWxldGUgW10gYXJnYnM7DQorICAgICAgICANCisgICAgICAgIHJldHVybiBzdGF0dXM7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldEJsZW5kQmVsbFNoYXBlKElOIFJFQUwgZm9jdXMsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzY2FsZSA9IDEuMCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGF0aEdyYWRpZW50U2lnbWFCbGVuZCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwgZm9jdXMsIHNjYWxlKSk7DQorICAgIH0NCisNCisgICAgI2lmZGVmIERDUl9VU0VfTkVXXzE0NTEzNQ0KKyAgICBTdGF0dXMgU2V0QmxlbmRUcmlhbmd1bGFyU2hhcGUoDQorICAgICAgICBJTiBSRUFMIGZvY3VzLA0KKyAgICAgICAgSU4gUkVBTCBzY2FsZSA9IDEuMA0KKyAgICApDQorICAgICNlbHNlDQorICAgIFN0YXR1cyBTZXRCbGVuZFRyaWFuZ2xhclNoYXBlKElOIFJFQUwgZm9jdXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc2NhbGUgPSAxLjApDQorICAgICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQYXRoR3JhZGllbnRMaW5lYXJCbGVuZCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwgZm9jdXMsIHNjYWxlKSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIEdldC9zZXQgYnJ1c2ggdHJhbnNmb3JtDQorICAgICAqLw0KKyAgICBTdGF0dXMgR2V0VHJhbnNmb3JtKE9VVCBNYXRyaXggKm1hdHJpeCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGF0aEdyYWRpZW50VHJhbnNmb3JtKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKSBuYXRpdmVCcnVzaCwgbWF0cml4LT5uYXRpdmVNYXRyaXgpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0VHJhbnNmb3JtKElOIGNvbnN0IE1hdHJpeCogbWF0cml4KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQYXRoR3JhZGllbnRUcmFuc2Zvcm0oDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHcFBhdGhHcmFkaWVudCopIG5hdGl2ZUJydXNoLCBtYXRyaXgtPm5hdGl2ZU1hdHJpeCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBSZXNldFRyYW5zZm9ybSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFJlc2V0UGF0aEdyYWRpZW50VHJhbnNmb3JtKChHcFBhdGhHcmFkaWVudCopbmF0aXZlQnJ1c2gpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgTXVsdGlwbHlUcmFuc2Zvcm0oSU4gY29uc3QgTWF0cml4KiBtYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBNYXRyaXhPcmRlciBvcmRlciA9IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwTXVsdGlwbHlQYXRoR3JhZGllbnRUcmFuc2Zvcm0oKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5uYXRpdmVNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFRyYW5zbGF0ZVRyYW5zZm9ybShJTiBSRUFMIGR4LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIGR5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIE1hdHJpeE9yZGVyIG9yZGVyID0gTWF0cml4T3JkZXJQcmVwZW5kKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBUcmFuc2xhdGVQYXRoR3JhZGllbnRUcmFuc2Zvcm0oKEdwUGF0aEdyYWRpZW50KiluYXRpdmVCcnVzaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeCwgZHksIG9yZGVyKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNjYWxlVHJhbnNmb3JtKElOIFJFQUwgc3gsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gUkVBTCBzeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIE1hdHJpeE9yZGVyIG9yZGVyID0gTWF0cml4T3JkZXJQcmVwZW5kKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTY2FsZVBhdGhHcmFkaWVudFRyYW5zZm9ybSgoR3BQYXRoR3JhZGllbnQqKW5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeCwgc3ksIG9yZGVyKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFJvdGF0ZVRyYW5zZm9ybShJTiBSRUFMIGFuZ2xlLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBNYXRyaXhPcmRlciBvcmRlciA9IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUm90YXRlUGF0aEdyYWRpZW50VHJhbnNmb3JtKChHcFBhdGhHcmFkaWVudCopbmF0aXZlQnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSwgb3JkZXIpKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogR2V0L3NldCBicnVzaCBmb2N1cyBzY2FsZXMNCisgICAgICovDQorICAgIFN0YXR1cyBHZXRGb2N1c1NjYWxlcyhPVVQgUkVBTCogeFNjYWxlLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgIE9VVCBSRUFMKiB5U2NhbGUpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhHcmFkaWVudEZvY3VzU2NhbGVzKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKSBuYXRpdmVCcnVzaCwgeFNjYWxlLCB5U2NhbGUpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0Rm9jdXNTY2FsZXMoSU4gUkVBTCB4U2NhbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBSRUFMIHlTY2FsZSkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGF0aEdyYWRpZW50Rm9jdXNTY2FsZXMoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHcFBhdGhHcmFkaWVudCopIG5hdGl2ZUJydXNoLCB4U2NhbGUsIHlTY2FsZSkpOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBHZXQvc2V0IGJydXNoIHdyYXBwaW5nIG1vZGUNCisgICAgICovDQorICAgIFdyYXBNb2RlIEdldFdyYXBNb2RlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgV3JhcE1vZGUgd3JhcE1vZGU7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBhdGhHcmFkaWVudFdyYXBNb2RlKA0KKyAgICAgICAgICAgICAgICAgICAgIChHcFBhdGhHcmFkaWVudCopIG5hdGl2ZUJydXNoLCAmd3JhcE1vZGUpKTsNCisNCisgICAgICAgIHJldHVybiB3cmFwTW9kZTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0V3JhcE1vZGUoSU4gV3JhcE1vZGUgd3JhcE1vZGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBhdGhHcmFkaWVudFdyYXBNb2RlKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3BQYXRoR3JhZGllbnQqKSBuYXRpdmVCcnVzaCwgd3JhcE1vZGUpKTsNCisgICAgfQ0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBQYXRoR3JhZGllbnRCcnVzaChjb25zdCBQYXRoR3JhZGllbnRCcnVzaCAmKTsNCisgICAgUGF0aEdyYWRpZW50QnJ1c2gmIG9wZXJhdG9yPShjb25zdCBQYXRoR3JhZGllbnRCcnVzaCAmKTsNCisNCisjZW5kaWYNCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIFBhdGhHcmFkaWVudEJydXNoKCkNCisgICAgew0KKyAgICB9DQorfTsNCisNCisNCisjZW5kaWYgLy8gIV9HUkFQSElDU1BBVEhfSFBQDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c1Blbi5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c1Blbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNjUzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzUGVuLmgKQEAgLTAsMCArMSw1MTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqIA0KKyogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqDQorKiAgIEdkaXBsdXNQZW4uaA0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgUGVuIEFQSSByZWxhdGVkIGRlY2xhcmF0aW9ucw0KKyoNCitcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2lmbmRlZiBfR0RJUExVU1BFTl9IDQorI2RlZmluZSBfR0RJUExVU1BFTl9IDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIGNsYXNzIGZvciB2YXJpb3VzIHBlbiB0eXBlcw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitjbGFzcyBQZW4gOiBwdWJsaWMgR2RpcGx1c0Jhc2UNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NQYXRoOw0KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3M7DQorDQorICAgIC8vIGFic3RyYWN0IENsb25lKCkgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgaGVyZSBiZWNhdXNlIGl0IGNhbid0DQorICAgIC8vIG5ldyBhbiBvYmplY3Qgd2l0aCBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zDQorDQorICAgIC8vIENvbnN0cnVjdG9ycw0KKw0KKyAgICBQZW4oSU4gY29uc3QgQ29sb3ImIGNvbG9yLCANCisgICAgICAgIElOIFJFQUwgd2lkdGggPSAxLjBmKQ0KKyAgICB7DQorICAgICAgICBVbml0IHVuaXQgPSBVbml0V29ybGQ7DQorICAgICAgICBuYXRpdmVQZW4gPSBOVUxMOw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVQZW4xKGNvbG9yLkdldFZhbHVlKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHVuaXQsICZuYXRpdmVQZW4pOw0KKyAgICB9DQorDQorICAgIFBlbihJTiBjb25zdCBCcnVzaCogYnJ1c2gsIA0KKyAgICAgICAgSU4gUkVBTCB3aWR0aCA9IDEuMGYpDQorICAgIHsNCisgICAgICAgIFVuaXQgdW5pdCA9IFVuaXRXb3JsZDsNCisgICAgICAgIG5hdGl2ZVBlbiA9IE5VTEw7DQorICAgICAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZVBlbjIoYnJ1c2gtPm5hdGl2ZUJydXNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCB1bml0LCAmbmF0aXZlUGVuKTsNCisgICAgfQ0KKw0KKyAgICB+UGVuKCkNCisgICAgew0KKyAgICAgICAgRGxsRXhwb3J0czo6R2RpcERlbGV0ZVBlbihuYXRpdmVQZW4pOw0KKyAgICB9DQorDQorICAgIFBlbiogQ2xvbmUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBHcFBlbiAqY2xvbmVQZW4gPSBOVUxMOw0KKw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDbG9uZVBlbihuYXRpdmVQZW4sICZjbG9uZVBlbik7DQorICAgDQorICAgICAgICByZXR1cm4gbmV3IFBlbihjbG9uZVBlbiwgbGFzdFJlc3VsdCk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldFdpZHRoKElOIFJFQUwgd2lkdGgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbldpZHRoKG5hdGl2ZVBlbiwgd2lkdGgpKTsNCisgICAgfQ0KKw0KKyAgICBSRUFMIEdldFdpZHRoKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgUkVBTCB3aWR0aDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGVuV2lkdGgobmF0aXZlUGVuLCAmd2lkdGgpKTsNCisgICAgICAgIA0KKyAgICAgICAgcmV0dXJuIHdpZHRoOw0KKyAgICB9DQorICAgIA0KKyAgICAvLyBTZXQvZ2V0IGxpbmUgY2Fwczogc3RhcnQsIGVuZCwgYW5kIGRhc2gNCisNCisgICAgLy8gTGluZSBjYXAgYW5kIGpvaW4gQVBJcyBieSB1c2luZyBMaW5lQ2FwIGFuZCBMaW5lSm9pbiBlbnVtcy4NCisNCisgICAgI2lmZGVmIERDUl9VU0VfTkVXXzE5NzgxOQ0KKyAgICBTdGF0dXMgU2V0TGluZUNhcChJTiBMaW5lQ2FwIHN0YXJ0Q2FwLCANCisgICAgICAgICAgICAgICAgICAgICAgSU4gTGluZUNhcCBlbmRDYXAsIA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBEYXNoQ2FwIGRhc2hDYXApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbkxpbmVDYXAxOTc4MTkobmF0aXZlUGVuLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FwLCBlbmRDYXAsIGRhc2hDYXApKTsNCisgICAgfQ0KKyAgICAjZWxzZQ0KKyAgICBTdGF0dXMgU2V0TGluZUNhcChJTiBMaW5lQ2FwIHN0YXJ0Q2FwLCANCisgICAgICAgICAgICAgICAgICAgICAgSU4gTGluZUNhcCBlbmRDYXAsIA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBMaW5lQ2FwIGRhc2hDYXApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbkxpbmVDYXAobmF0aXZlUGVuLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FwLCBlbmRDYXAsIGRhc2hDYXApKTsNCisgICAgfQ0KKyAgICAjZW5kaWYgLy8gRENSX1VTRV9ORVdfMTk3ODE5DQorDQorICAgIFN0YXR1cyBTZXRTdGFydENhcChJTiBMaW5lQ2FwIHN0YXJ0Q2FwKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQZW5TdGFydENhcChuYXRpdmVQZW4sIHN0YXJ0Q2FwKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldEVuZENhcChJTiBMaW5lQ2FwIGVuZENhcCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGVuRW5kQ2FwKG5hdGl2ZVBlbiwgZW5kQ2FwKSk7DQorICAgIH0NCisNCisgICAgI2lmZGVmIERDUl9VU0VfTkVXXzE5NzgxOQ0KKyAgICBTdGF0dXMgU2V0RGFzaENhcChJTiBEYXNoQ2FwIGRhc2hDYXApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbkRhc2hDYXAxOTc4MTkobmF0aXZlUGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaENhcCkpOw0KKyAgICB9DQorICAgICNlbHNlDQorICAgIFN0YXR1cyBTZXREYXNoQ2FwKElOIExpbmVDYXAgZGFzaENhcCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGVuRGFzaENhcChuYXRpdmVQZW4sIGRhc2hDYXApKTsNCisgICAgfQ0KKyAgICAjZW5kaWYgLy8gRENSX1VTRV9ORVdfMTk3ODE5DQorDQorICAgIExpbmVDYXAgR2V0U3RhcnRDYXAoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBMaW5lQ2FwIHN0YXJ0Q2FwOw0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQZW5TdGFydENhcChuYXRpdmVQZW4sICZzdGFydENhcCkpOw0KKyAgICAgICAgDQorICAgICAgICByZXR1cm4gc3RhcnRDYXA7DQorICAgIH0NCisNCisgICAgTGluZUNhcCBHZXRFbmRDYXAoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBMaW5lQ2FwIGVuZENhcDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGVuRW5kQ2FwKG5hdGl2ZVBlbiwgJmVuZENhcCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIGVuZENhcDsNCisgICAgfQ0KKw0KKyAgICAjaWZkZWYgRENSX1VTRV9ORVdfMTk3ODE5DQorICAgIERhc2hDYXAgR2V0RGFzaENhcCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIERhc2hDYXAgZGFzaENhcDsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGVuRGFzaENhcDE5NzgxOShuYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXNoQ2FwKSk7DQorDQorICAgICAgICByZXR1cm4gZGFzaENhcDsNCisgICAgfQ0KKyAgICAjZWxzZQ0KKyAgICBMaW5lQ2FwIEdldERhc2hDYXAoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBMaW5lQ2FwIGRhc2hDYXA7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBlbkRhc2hDYXAobmF0aXZlUGVuLCAmZGFzaENhcCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIGRhc2hDYXA7DQorICAgIH0NCisgICAgI2VuZGlmIC8vIERDUl9VU0VfTkVXXzE5NzgxOQ0KKw0KKw0KKyAgICAvLyBTZXQvZ2V0IGxpbmUgam9pbg0KKw0KKyAgICBTdGF0dXMgU2V0TGluZUpvaW4oSU4gTGluZUpvaW4gbGluZUpvaW4pDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbkxpbmVKb2luKG5hdGl2ZVBlbiwgbGluZUpvaW4pKTsNCisgICAgfQ0KKw0KKyAgICBMaW5lSm9pbiBHZXRMaW5lSm9pbigpIGNvbnN0DQorICAgIHsNCisgICAgICAgIExpbmVKb2luIGxpbmVKb2luOw0KKyAgICAgICAgDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBlbkxpbmVKb2luKG5hdGl2ZVBlbiwgJmxpbmVKb2luKSk7DQorICAgICAgICANCisgICAgICAgIHJldHVybiBsaW5lSm9pbjsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0Q3VzdG9tU3RhcnRDYXAoSU4gY29uc3QgQ3VzdG9tTGluZUNhcCogY3VzdG9tQ2FwKQ0KKyAgICB7DQorICAgICAgICBHcEN1c3RvbUxpbmVDYXAqIG5hdGl2ZUNhcCA9IE5VTEw7DQorICAgICAgICBpZihjdXN0b21DYXApDQorICAgICAgICAgICAgbmF0aXZlQ2FwID0gY3VzdG9tQ2FwLT5uYXRpdmVDYXA7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQZW5DdXN0b21TdGFydENhcChuYXRpdmVQZW4sIG5hdGl2ZUNhcCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRDdXN0b21TdGFydENhcChPVVQgQ3VzdG9tTGluZUNhcCogY3VzdG9tQ2FwKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZighY3VzdG9tQ2FwKQ0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQZW5DdXN0b21TdGFydENhcChuYXRpdmVQZW4sICYoY3VzdG9tQ2FwLT5uYXRpdmVDYXApKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldEN1c3RvbUVuZENhcChJTiBjb25zdCBDdXN0b21MaW5lQ2FwKiBjdXN0b21DYXApDQorICAgIHsNCisgICAgICAgIEdwQ3VzdG9tTGluZUNhcCogbmF0aXZlQ2FwID0gTlVMTDsNCisgICAgICAgIGlmKGN1c3RvbUNhcCkNCisgICAgICAgICAgICBuYXRpdmVDYXAgPSBjdXN0b21DYXAtPm5hdGl2ZUNhcDsNCisNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbkN1c3RvbUVuZENhcChuYXRpdmVQZW4sIG5hdGl2ZUNhcCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRDdXN0b21FbmRDYXAoT1VUIEN1c3RvbUxpbmVDYXAqIGN1c3RvbUNhcCkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYoIWN1c3RvbUNhcCkNCisgICAgICAgICAgICByZXR1cm4gU2V0U3RhdHVzKEludmFsaWRQYXJhbWV0ZXIpOw0KKw0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGVuQ3VzdG9tRW5kQ2FwKG5hdGl2ZVBlbiwgJihjdXN0b21DYXAtPm5hdGl2ZUNhcCkpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0TWl0ZXJMaW1pdChJTiBSRUFMIG1pdGVyTGltaXQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbk1pdGVyTGltaXQobmF0aXZlUGVuLCBtaXRlckxpbWl0KSk7DQorICAgIH0NCisNCisgICAgUkVBTCBHZXRNaXRlckxpbWl0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgUkVBTCBtaXRlckxpbWl0Ow0KKw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQZW5NaXRlckxpbWl0KG5hdGl2ZVBlbiwgJm1pdGVyTGltaXQpKTsNCisNCisgICAgICAgIHJldHVybiBtaXRlckxpbWl0Ow0KKyAgICB9DQorDQorICAgIC8vIFNldC9nZXQgcGVuIG1vZGUNCisgICAgU3RhdHVzIFNldEFsaWdubWVudChJTiBQZW5BbGlnbm1lbnQgcGVuQWxpZ25tZW50KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQZW5Nb2RlKG5hdGl2ZVBlbiwgcGVuQWxpZ25tZW50KSk7DQorICAgIH0NCisNCisgICAgUGVuQWxpZ25tZW50IEdldEFsaWdubWVudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIFBlbkFsaWdubWVudCBwZW5BbGlnbm1lbnQ7DQorICAgICAgICANCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGVuTW9kZShuYXRpdmVQZW4sICZwZW5BbGlnbm1lbnQpKTsNCisgICAgICAgIA0KKyAgICAgICAgcmV0dXJuIHBlbkFsaWdubWVudDsNCisgICAgfQ0KKyAgICANCisgICAgLy8gU2V0L2dldCBwZW4gdHJhbnNmb3JtDQorICAgIFN0YXR1cyBTZXRUcmFuc2Zvcm0oSU4gY29uc3QgTWF0cml4KiBtYXRyaXgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlblRyYW5zZm9ybShuYXRpdmVQZW4sIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC0+bmF0aXZlTWF0cml4KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldFRyYW5zZm9ybShPVVQgTWF0cml4KiBtYXRyaXgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBlblRyYW5zZm9ybShuYXRpdmVQZW4sIG1hdHJpeC0+bmF0aXZlTWF0cml4KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFJlc2V0VHJhbnNmb3JtKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUmVzZXRQZW5UcmFuc2Zvcm0obmF0aXZlUGVuKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIE11bHRpcGx5VHJhbnNmb3JtKElOIGNvbnN0IE1hdHJpeCogbWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gTWF0cml4T3JkZXIgb3JkZXIgPSBNYXRyaXhPcmRlclByZXBlbmQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcE11bHRpcGx5UGVuVHJhbnNmb3JtKG5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC0+bmF0aXZlTWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgVHJhbnNsYXRlVHJhbnNmb3JtKElOIFJFQUwgZHgsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgZHksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gTWF0cml4T3JkZXIgb3JkZXIgPSBNYXRyaXhPcmRlclByZXBlbmQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFRyYW5zbGF0ZVBlblRyYW5zZm9ybShuYXRpdmVQZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHgsIGR5LCBvcmRlcikpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTY2FsZVRyYW5zZm9ybShJTiBSRUFMIHN4LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFJFQUwgc3ksDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBNYXRyaXhPcmRlciBvcmRlciA9IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2NhbGVQZW5UcmFuc2Zvcm0obmF0aXZlUGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeCwgc3ksIG9yZGVyKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFJvdGF0ZVRyYW5zZm9ybShJTiBSRUFMIGFuZ2xlLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBNYXRyaXhPcmRlciBvcmRlciA9IE1hdHJpeE9yZGVyUHJlcGVuZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwUm90YXRlUGVuVHJhbnNmb3JtKG5hdGl2ZVBlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlLCBvcmRlcikpOw0KKyAgICB9DQorDQorICAgIFBlblR5cGUgR2V0UGVuVHlwZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgUGVuVHlwZSB0eXBlOw0KKyAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBlbkZpbGxUeXBlKG5hdGl2ZVBlbiwgJnR5cGUpKTsNCisNCisgICAgICAgcmV0dXJuIHR5cGU7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldENvbG9yKElOIGNvbnN0IENvbG9yJiBjb2xvcikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0UGVuQ29sb3IobmF0aXZlUGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuR2V0VmFsdWUoKSkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRCcnVzaChJTiBjb25zdCBCcnVzaCogYnJ1c2gpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbkJydXNoRmlsbChuYXRpdmVQZW4sIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJydXNoLT5uYXRpdmVCcnVzaCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRDb2xvcihPVVQgQ29sb3IqIGNvbG9yKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAoY29sb3IgPT0gTlVMTCkgDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhJbnZhbGlkUGFyYW1ldGVyKTsNCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgUGVuVHlwZSB0eXBlID0gR2V0UGVuVHlwZSgpOw0KKw0KKyAgICAgICAgaWYgKHR5cGUgIT0gUGVuVHlwZVNvbGlkQ29sb3IpIA0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBXcm9uZ1N0YXRlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgDQorICAgICAgICBBUkdCIGFyZ2I7DQorICAgICAgICANCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UGVuQ29sb3IobmF0aXZlUGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJnYikpOw0KKyAgICAgICAgaWYgKGxhc3RSZXN1bHQgPT0gT2spDQorICAgICAgICB7DQorICAgICAgICAgICAgY29sb3ItPlNldFZhbHVlKGFyZ2IpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgDQorICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDsNCisgICAgfQ0KKw0KKyAgICBCcnVzaCogR2V0QnJ1c2goKSBjb25zdA0KKyAgICB7DQorICAgICAgIFBlblR5cGUgdHlwZSA9IEdldFBlblR5cGUoKTsNCisNCisgICAgICAgQnJ1c2gqIGJydXNoID0gTlVMTDsNCisNCisgICAgICAgc3dpdGNoKHR5cGUpDQorICAgICAgIHsNCisgICAgICAgY2FzZSBQZW5UeXBlU29saWRDb2xvcjoNCisgICAgICAgICAgIGJydXNoID0gbmV3IFNvbGlkQnJ1c2goKTsNCisgICAgICAgICAgIGJyZWFrOw0KKw0KKyAgICAgICBjYXNlIFBlblR5cGVIYXRjaEZpbGw6DQorICAgICAgICAgICBicnVzaCA9IG5ldyBIYXRjaEJydXNoKCk7DQorICAgICAgICAgICBicmVhazsNCisNCisgICAgICAgY2FzZSBQZW5UeXBlVGV4dHVyZUZpbGw6DQorICAgICAgICAgICBicnVzaCA9IG5ldyBUZXh0dXJlQnJ1c2goKTsNCisgICAgICAgICAgIGJyZWFrOw0KKw0KKyAgICAgICBjYXNlIFBlblR5cGVQYXRoR3JhZGllbnQ6DQorICAgICAgICAgICBicnVzaCA9IG5ldyBCcnVzaCgpOw0KKyAgICAgICAgICAgYnJlYWs7DQorDQorICAgICAgIGNhc2UgUGVuVHlwZUxpbmVhckdyYWRpZW50Og0KKyAgICAgICAgICAgYnJ1c2ggPSBuZXcgTGluZWFyR3JhZGllbnRCcnVzaCgpOw0KKyAgICAgICAgICAgYnJlYWs7DQorDQorICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICBicmVhazsNCisgICAgICAgfQ0KKw0KKyAgICAgICBpZihicnVzaCkNCisgICAgICAgew0KKyAgICAgICAgICAgR3BCcnVzaCogbmF0aXZlQnJ1c2g7DQorDQorICAgICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBlbkJydXNoRmlsbChuYXRpdmVQZW4sICZuYXRpdmVCcnVzaCkpOw0KKyAgICAgICAgICAgYnJ1c2gtPlNldE5hdGl2ZUJydXNoKG5hdGl2ZUJydXNoKTsNCisgICAgICAgfQ0KKw0KKyAgICAgICByZXR1cm4gYnJ1c2g7DQorICAgIH0NCisNCisgICAgRGFzaFN0eWxlIEdldERhc2hTdHlsZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIERhc2hTdHlsZSBkYXNoU3R5bGU7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBlbkRhc2hTdHlsZShuYXRpdmVQZW4sICZkYXNoU3R5bGUpKTsNCisNCisgICAgICAgIHJldHVybiBkYXNoU3R5bGU7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldERhc2hTdHlsZShJTiBEYXNoU3R5bGUgZGFzaFN0eWxlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQZW5EYXNoU3R5bGUobmF0aXZlUGVuLCBkYXNoU3R5bGUpKTsNCisgICAgfQ0KKw0KKyAgICBSRUFMIEdldERhc2hPZmZzZXQoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBSRUFMIGRhc2hPZmZzZXQ7DQorDQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBlbkRhc2hPZmZzZXQobmF0aXZlUGVuLCAmZGFzaE9mZnNldCkpOw0KKw0KKyAgICAgICAgcmV0dXJuIGRhc2hPZmZzZXQ7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldERhc2hPZmZzZXQoSU4gUkVBTCBkYXNoT2Zmc2V0KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRQZW5EYXNoT2Zmc2V0KG5hdGl2ZVBlbiwgZGFzaE9mZnNldCkpOw0KKyAgICB9DQorICAgIA0KKyAgICBTdGF0dXMgU2V0RGFzaFBhdHRlcm4oSU4gY29uc3QgUkVBTCogZGFzaEFycmF5LCBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbkRhc2hBcnJheShuYXRpdmVQZW4sIGRhc2hBcnJheSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7DQorICAgIH0NCisgICAgDQorICAgIElOVCBHZXREYXNoUGF0dGVybkNvdW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgSU5UIGNvdW50ID0gMDsNCisgICAgICAgIA0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQZW5EYXNoQ291bnQobmF0aXZlUGVuLCAmY291bnQpKTsNCisgICAgICAgIA0KKyAgICAgICAgcmV0dXJuIGNvdW50Ow0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXREYXNoUGF0dGVybihPVVQgUkVBTCogZGFzaEFycmF5LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKGRhc2hBcnJheSA9PSBOVUxMIHx8IGNvdW50IDw9IDApDQorICAgICAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhJbnZhbGlkUGFyYW1ldGVyKTsgDQorICAgICAgICANCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFBlbkRhc2hBcnJheShuYXRpdmVQZW4sIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hBcnJheSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0Q29tcG91bmRBcnJheShJTiBjb25zdCBSRUFMKiBjb21wb3VuZEFycmF5LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBJTlQgY291bnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFBlbkNvbXBvdW5kQXJyYXkobmF0aXZlUGVuLCBjb21wb3VuZEFycmF5LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKTsNCisgICAgfQ0KKw0KKyAgICBJTlQgR2V0Q29tcG91bmRBcnJheUNvdW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgSU5UIGNvdW50ID0gMDsNCisgICAgICAgIA0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQZW5Db21wb3VuZENvdW50KG5hdGl2ZVBlbiwgJmNvdW50KSk7DQorICAgICAgICANCisgICAgICAgIHJldHVybiBjb3VudDsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgR2V0Q29tcG91bmRBcnJheShPVVQgUkVBTCogY29tcG91bmRBcnJheSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIElOVCBjb3VudCkgY29uc3QNCisgICAgew0KKyAgICAgICAgaWYgKGNvbXBvdW5kQXJyYXkgPT0gTlVMTCB8fCBjb3VudCA8PSAwKQ0KKyAgICAgICAgICAgIHJldHVybiBTZXRTdGF0dXMoSW52YWxpZFBhcmFtZXRlcik7IA0KKyAgICAgICAgDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRQZW5Db21wb3VuZEFycmF5KG5hdGl2ZVBlbiwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kQXJyYXksIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBHZXRMYXN0U3RhdHVzKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgU3RhdHVzIGxhc3RTdGF0dXMgPSBsYXN0UmVzdWx0Ow0KKyAgICAgICAgbGFzdFJlc3VsdCA9IE9rOw0KKw0KKyAgICAgICAgcmV0dXJuIGxhc3RTdGF0dXM7DQorICAgIH0NCisNCitwcm90ZWN0ZWQ6DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzI1MDkzMg0KKw0KK3ByaXZhdGU6DQorICAgIFBlbihjb25zdCBQZW4gJik7DQorICAgIFBlbiYgb3BlcmF0b3I9KGNvbnN0IFBlbiAmKTsNCitwcm90ZWN0ZWQ6DQorDQorI2Vsc2UNCisNCisgICAgUGVuKGNvbnN0IFBlbiYgcGVuKQ0KKyAgICB7DQorICAgICAgICBwZW47DQorICAgICAgICBTZXRTdGF0dXMoTm90SW1wbGVtZW50ZWQpOw0KKyAgICAgICAgU2V0TmF0aXZlUGVuKE5VTEwpOw0KKyAgICB9DQorDQorICAgIFBlbiYgb3BlcmF0b3I9KGNvbnN0IFBlbiYgcGVuKQ0KKyAgICB7DQorICAgICAgICBwZW47DQorICAgICAgICBTZXRTdGF0dXMoTm90SW1wbGVtZW50ZWQpOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorI2VuZGlmDQorDQorICAgIFBlbihHcFBlbiogbmF0aXZlUGVuLCBTdGF0dXMgc3RhdHVzKQ0KKyAgICB7DQorICAgICAgICBsYXN0UmVzdWx0ID0gc3RhdHVzOw0KKyAgICAgICAgU2V0TmF0aXZlUGVuKG5hdGl2ZVBlbik7DQorICAgIH0NCisNCisgICAgVk9JRCBTZXROYXRpdmVQZW4oR3BQZW4qIG5hdGl2ZVBlbikNCisgICAgew0KKyAgICAgICAgdGhpcy0+bmF0aXZlUGVuID0gbmF0aXZlUGVuOw0KKyAgICB9DQorICAgIA0KKyAgICBTdGF0dXMgU2V0U3RhdHVzKFN0YXR1cyBzdGF0dXMpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmIChzdGF0dXMgIT0gT2spDQorICAgICAgICAgICAgcmV0dXJuIChsYXN0UmVzdWx0ID0gc3RhdHVzKTsNCisgICAgICAgIGVsc2UgDQorICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KK3Byb3RlY3RlZDoNCisgICAgR3BQZW4qIG5hdGl2ZVBlbjsNCisgICAgbXV0YWJsZSBTdGF0dXMgbGFzdFJlc3VsdDsNCit9Ow0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNQaXhlbEZvcm1hdHMuaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNQaXhlbEZvcm1hdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWRjNTk5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c1BpeGVsRm9ybWF0cy5oCkBAIC0wLDAgKzEsMjAxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKg0KKyogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqDQorKiAgIEdkaXBsdXMgcGl4ZWwgZm9ybWF0cw0KKyoNCisqIEFic3RyYWN0Og0KKyoNCisqICAgRGVmaW5pdGlvbnMgZm9yIGNvbG9yIHR5cGVzLCBwYWxldHRlcywgcGl4ZWwgZm9ybWF0IElEcy4NCisqDQorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0dESVBMVVNQSVhFTEZPUk1BVFNfSA0KKyNkZWZpbmUgX0dESVBMVVNQSVhFTEZPUk1BVFNfSA0KKw0KKy8qDQorICogMzItYml0IGFuZCA2NC1iaXQgQVJHQiBwaXhlbCB2YWx1ZQ0KKyAqLw0KKw0KK3R5cGVkZWYgRFdPUkQgQVJHQjsNCit0eXBlZGVmIERXT1JETE9ORyBBUkdCNjQ7DQorDQorI2RlZmluZSBBTFBIQV9TSElGVCAyNA0KKyNkZWZpbmUgUkVEX1NISUZUICAgMTYNCisjZGVmaW5lIEdSRUVOX1NISUZUIDgNCisjZGVmaW5lIEJMVUVfU0hJRlQgIDANCisjZGVmaW5lIEFMUEhBX01BU0sgICgoQVJHQikgMHhmZiA8PCBBTFBIQV9TSElGVCkNCisNCisvKg0KKyAqIEluLW1lbW9yeSBwaXhlbCBkYXRhIGZvcm1hdHM6DQorICogYml0cyAwLTcgPSBmb3JtYXQgaW5kZXgNCisgKiBiaXRzIDgtMTUgPSBwaXhlbCBzaXplIChpbiBiaXRzKQ0KKyAqIGJpdHMgMTYtMjMgPSBmbGFncw0KKyAqIGJpdHMgMjQtMzEgPSByZXNlcnZlZA0KKyAqLw0KKw0KKyNpZm5kZWYgRENSX1VTRV9ORVdfMTA1NzYwDQorDQorZW51bSBQaXhlbEZvcm1hdA0KK3sNCisgICAgUGl4ZWxGb3JtYXRJbmRleGVkICAgICAgPSAweDAwMDEwMDAwLCAvLyBJbmRleGVzIGludG8gYSBwYWxldHRlDQorICAgIFBpeGVsRm9ybWF0R0RJICAgICAgICAgID0gMHgwMDAyMDAwMCwgLy8gSXMgYSBHREktc3VwcG9ydGVkIGZvcm1hdA0KKyAgICBQaXhlbEZvcm1hdEFscGhhICAgICAgICA9IDB4MDAwNDAwMDAsIC8vIEhhcyBhbiBhbHBoYSBjb21wb25lbnQNCisgICAgUGl4ZWxGb3JtYXRQQWxwaGEgICAgICAgPSAweDAwMDgwMDAwLCAvLyBVc2VzIHByZS1tdWx0aXBsaWVkIGFscGhhDQorICAgIFBpeGVsRm9ybWF0RXh0ZW5kZWQgICAgID0gMHgwMDEwMDAwMCwgLy8gVXNlcyBleHRlbmRlZCBjb2xvciAoMTYgYml0cyBwZXIgY2hhbm5lbCkNCisgICAgUGl4ZWxGb3JtYXRDYW5vbmljYWwgICAgPSAweDAwMjAwMDAwLCAvLyA/DQorDQorICAgIFBpeGVsRm9ybWF0VW5kZWZpbmVkICAgICAgID0gIDAsDQorICAgIFBpeGVsRm9ybWF0RG9udENhcmUgICAgICAgPSAgMCwNCisNCisgICAgUGl4ZWxGb3JtYXQxYnBwSW5kZXhlZCAgICAgPSAgMSB8ICggMSA8PCA4KSB8IFBpeGVsRm9ybWF0SW5kZXhlZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGl4ZWxGb3JtYXRHREksDQorICAgIFBpeGVsRm9ybWF0NGJwcEluZGV4ZWQgICAgID0gIDIgfCAoIDQgPDwgOCkgfCBQaXhlbEZvcm1hdEluZGV4ZWQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBpeGVsRm9ybWF0R0RJLA0KKyAgICBQaXhlbEZvcm1hdDhicHBJbmRleGVkICAgICA9ICAzIHwgKCA4IDw8IDgpIHwgUGl4ZWxGb3JtYXRJbmRleGVkDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQaXhlbEZvcm1hdEdESSwNCisgICAgUGl4ZWxGb3JtYXQxNmJwcEdyYXlTY2FsZSAgPSAgNCB8ICgxNiA8PCA4KSB8IFBpeGVsRm9ybWF0RXh0ZW5kZWQsDQorICAgIFBpeGVsRm9ybWF0MTZicHBSR0I1NTUgICAgID0gIDUgfCAoMTYgPDwgOCkgfCBQaXhlbEZvcm1hdEdESSwNCisgICAgUGl4ZWxGb3JtYXQxNmJwcFJHQjU2NSAgICAgPSAgNiB8ICgxNiA8PCA4KSB8IFBpeGVsRm9ybWF0R0RJLA0KKyAgICBQaXhlbEZvcm1hdDE2YnBwQVJHQjE1NTUgICA9ICA3IHwgKDE2IDw8IDgpIHwgUGl4ZWxGb3JtYXRBbHBoYQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGl4ZWxGb3JtYXRHREksDQorICAgIFBpeGVsRm9ybWF0MjRicHBSR0IgICAgICAgID0gIDggfCAoMjQgPDwgOCkgfCBQaXhlbEZvcm1hdEdESSwNCisgICAgUGl4ZWxGb3JtYXQzMmJwcFJHQiAgICAgICAgPSAgOSB8ICgzMiA8PCA4KSB8IFBpeGVsRm9ybWF0R0RJLA0KKyAgICBQaXhlbEZvcm1hdDMyYnBwQVJHQiAgICAgICA9IDEwIHwgKDMyIDw8IDgpIHwgUGl4ZWxGb3JtYXRBbHBoYQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGl4ZWxGb3JtYXRHREkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBpeGVsRm9ybWF0Q2Fub25pY2FsLA0KKyAgICBQaXhlbEZvcm1hdDMyYnBwUEFSR0IgICAgICA9IDExIHwgKDMyIDw8IDgpIHwgUGl4ZWxGb3JtYXRBbHBoYQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGl4ZWxGb3JtYXRQQWxwaGENCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBpeGVsRm9ybWF0R0RJLA0KKyAgICBQaXhlbEZvcm1hdDQ4YnBwUkdCICAgICAgICA9IDEyIHwgKDQ4IDw8IDgpIHwgUGl4ZWxGb3JtYXRFeHRlbmRlZCwNCisgICAgUGl4ZWxGb3JtYXQ2NGJwcEFSR0IgICAgICAgPSAxMyB8ICg2NCA8PCA4KSB8IFBpeGVsRm9ybWF0QWxwaGENCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBpeGVsRm9ybWF0Q2Fub25pY2FsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQaXhlbEZvcm1hdEV4dGVuZGVkLA0KKyAgICBQaXhlbEZvcm1hdDY0YnBwUEFSR0IgICAgICA9IDE0IHwgKDY0IDw8IDgpIHwgUGl4ZWxGb3JtYXRBbHBoYQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGl4ZWxGb3JtYXRQQWxwaGENCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBpeGVsRm9ybWF0RXh0ZW5kZWQsDQorICAgIFBpeGVsRm9ybWF0MjRicHBCR1IgICAgICAgID0gMTUgfCAoMjQgPDwgOCkgfCBQaXhlbEZvcm1hdEdESSwgDQorICAgIFBpeGVsRm9ybWF0TWF4ICAgICAgICAgICAgID0gMTYNCit9Ow0KKw0KKyNlbHNlDQorDQordHlwZWRlZiBJTlQgUGl4ZWxGb3JtYXQ7DQorDQorI2RlZmluZSAgICBQaXhlbEZvcm1hdEluZGV4ZWQgICAgICAweDAwMDEwMDAwIC8vIEluZGV4ZXMgaW50byBhIHBhbGV0dGUNCisjZGVmaW5lICAgIFBpeGVsRm9ybWF0R0RJICAgICAgICAgIDB4MDAwMjAwMDAgLy8gSXMgYSBHREktc3VwcG9ydGVkIGZvcm1hdA0KKyNkZWZpbmUgICAgUGl4ZWxGb3JtYXRBbHBoYSAgICAgICAgMHgwMDA0MDAwMCAvLyBIYXMgYW4gYWxwaGEgY29tcG9uZW50DQorI2RlZmluZSAgICBQaXhlbEZvcm1hdFBBbHBoYSAgICAgICAweDAwMDgwMDAwIC8vIFVzZXMgcHJlLW11bHRpcGxpZWQgYWxwaGENCisjZGVmaW5lICAgIFBpeGVsRm9ybWF0RXh0ZW5kZWQgICAgIDB4MDAxMDAwMDAgLy8gVXNlcyBleHRlbmRlZCBjb2xvciAoMTYgYml0cyBwZXIgY2hhbm5lbCkNCisjZGVmaW5lICAgIFBpeGVsRm9ybWF0Q2Fub25pY2FsICAgIDB4MDAyMDAwMDAgLy8gPw0KKw0KKyNkZWZpbmUgICAgUGl4ZWxGb3JtYXRVbmRlZmluZWQgICAgICAgMA0KKyNkZWZpbmUgICAgUGl4ZWxGb3JtYXREb250Q2FyZSAgICAgICAgMA0KKw0KKyNkZWZpbmUgICAgUGl4ZWxGb3JtYXQxYnBwSW5kZXhlZCAgICAgKDEgfCAoIDEgPDwgOCkgfCBQaXhlbEZvcm1hdEluZGV4ZWQgfCBQaXhlbEZvcm1hdEdESSkNCisjZGVmaW5lICAgIFBpeGVsRm9ybWF0NGJwcEluZGV4ZWQgICAgICgyIHwgKCA0IDw8IDgpIHwgUGl4ZWxGb3JtYXRJbmRleGVkIHwgUGl4ZWxGb3JtYXRHREkpDQorI2RlZmluZSAgICBQaXhlbEZvcm1hdDhicHBJbmRleGVkICAgICAoMyB8ICggOCA8PCA4KSB8IFBpeGVsRm9ybWF0SW5kZXhlZCB8IFBpeGVsRm9ybWF0R0RJKQ0KKyNkZWZpbmUgICAgUGl4ZWxGb3JtYXQxNmJwcEdyYXlTY2FsZSAgKDQgfCAoMTYgPDwgOCkgfCBQaXhlbEZvcm1hdEV4dGVuZGVkKQ0KKyNkZWZpbmUgICAgUGl4ZWxGb3JtYXQxNmJwcFJHQjU1NSAgICAgKDUgfCAoMTYgPDwgOCkgfCBQaXhlbEZvcm1hdEdESSkNCisjZGVmaW5lICAgIFBpeGVsRm9ybWF0MTZicHBSR0I1NjUgICAgICg2IHwgKDE2IDw8IDgpIHwgUGl4ZWxGb3JtYXRHREkpDQorI2RlZmluZSAgICBQaXhlbEZvcm1hdDE2YnBwQVJHQjE1NTUgICAoNyB8ICgxNiA8PCA4KSB8IFBpeGVsRm9ybWF0QWxwaGEgfCBQaXhlbEZvcm1hdEdESSkNCisjZGVmaW5lICAgIFBpeGVsRm9ybWF0MjRicHBSR0IgICAgICAgICg4IHwgKDI0IDw8IDgpIHwgUGl4ZWxGb3JtYXRHREkpDQorI2RlZmluZSAgICBQaXhlbEZvcm1hdDMyYnBwUkdCICAgICAgICAoOSB8ICgzMiA8PCA4KSB8IFBpeGVsRm9ybWF0R0RJKQ0KKyNkZWZpbmUgICAgUGl4ZWxGb3JtYXQzMmJwcEFSR0IgICAgICAgKDEwIHwgKDMyIDw8IDgpIHwgUGl4ZWxGb3JtYXRBbHBoYSB8IFBpeGVsRm9ybWF0R0RJIHwgUGl4ZWxGb3JtYXRDYW5vbmljYWwpDQorI2RlZmluZSAgICBQaXhlbEZvcm1hdDMyYnBwUEFSR0IgICAgICAoMTEgfCAoMzIgPDwgOCkgfCBQaXhlbEZvcm1hdEFscGhhIHwgUGl4ZWxGb3JtYXRQQWxwaGEgfCBQaXhlbEZvcm1hdEdESSkNCisjZGVmaW5lICAgIFBpeGVsRm9ybWF0NDhicHBSR0IgICAgICAgICgxMiB8ICg0OCA8PCA4KSB8IFBpeGVsRm9ybWF0RXh0ZW5kZWQpDQorI2RlZmluZSAgICBQaXhlbEZvcm1hdDY0YnBwQVJHQiAgICAgICAoMTMgfCAoNjQgPDwgOCkgfCBQaXhlbEZvcm1hdEFscGhhICB8IFBpeGVsRm9ybWF0Q2Fub25pY2FsIHwgUGl4ZWxGb3JtYXRFeHRlbmRlZCkNCisjZGVmaW5lICAgIFBpeGVsRm9ybWF0NjRicHBQQVJHQiAgICAgICgxNCB8ICg2NCA8PCA4KSB8IFBpeGVsRm9ybWF0QWxwaGEgIHwgUGl4ZWxGb3JtYXRQQWxwaGEgfCBQaXhlbEZvcm1hdEV4dGVuZGVkKQ0KKyNkZWZpbmUgICAgUGl4ZWxGb3JtYXRNYXggICAgICAgICAgICAgMTUNCisNCisjZW5kaWYNCisNCisNCisvKg0KKyAqIFJldHVybiB0aGUgcGl4ZWwgc2l6ZSBmb3IgdGhlIHNwZWNpZmllZCBmb3JtYXQgKGluIGJpdHMpDQorICovDQorDQoraW5saW5lIFVJTlQNCitHZXRQaXhlbEZvcm1hdFNpemUoDQorICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGZtdA0KKyAgICApDQorew0KKyAgICByZXR1cm4gKHBpeGZtdCA+PiA4KSAmIDB4ZmY7DQorfQ0KKw0KKy8qDQorICogRGV0ZXJtaW5lIGlmIHRoZSBzcGVjaWZpZWQgcGl4ZWwgZm9ybWF0IGlzIGFuIGluZGV4ZWQgY29sb3IgZm9ybWF0DQorICovDQorDQoraW5saW5lIEJPT0wNCitJc0luZGV4ZWRQaXhlbEZvcm1hdCgNCisgICAgICAgICAgICAgICAgICAgICBQaXhlbEZvcm1hdCBwaXhmbXQNCisgICAgKQ0KK3sNCisgICAgcmV0dXJuIChwaXhmbXQgJiBQaXhlbEZvcm1hdEluZGV4ZWQpICE9IDA7DQorfQ0KKw0KKy8qDQorICogRGV0ZXJtaW5lIGlmIHRoZSBwaXhlbCBmb3JtYXQgY2FuIGhhdmUgYWxwaGEgY2hhbm5lbA0KKyAqLw0KKw0KK2lubGluZSBCT09MDQorSXNBbHBoYVBpeGVsRm9ybWF0KA0KKyAgICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGZtdA0KKykNCit7DQorICAgcmV0dXJuIChwaXhmbXQgJiBQaXhlbEZvcm1hdEFscGhhKSAhPSAwOw0KK30NCisNCisvKg0KKyAqIERldGVybWluZSBpZiB0aGUgcGl4ZWwgZm9ybWF0IGlzIGFuIGV4dGVuZGVkIGZvcm1hdCwNCisgKiBpLmUuIHN1cHBvcnRzIDE2LWJpdCBwZXIgY2hhbm5lbA0KKyAqLw0KKw0KK2lubGluZSBCT09MDQorSXNFeHRlbmRlZFBpeGVsRm9ybWF0KA0KKyAgICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGZtdA0KKyAgICApDQorew0KKyAgIHJldHVybiAocGl4Zm10ICYgUGl4ZWxGb3JtYXRFeHRlbmRlZCkgIT0gMDsNCit9DQorDQorLyoNCisgKiBEZXRlcm1pbmUgaWYgdGhlIHBpeGVsIGZvcm1hdCBpcyBjYW5vbmljYWwgZm9ybWF0Og0KKyAqICAgUGl4ZWxGb3JtYXQzMmJwcEFSR0INCisgKiAgIFBpeGVsRm9ybWF0MzJicHBQQVJHQg0KKyAqICAgUGl4ZWxGb3JtYXQ2NGJwcEFSR0INCisgKiAgIFBpeGVsRm9ybWF0NjRicHBQQVJHQg0KKyAqLw0KKw0KK2lubGluZSBCT09MDQorSXNDYW5vbmljYWxQaXhlbEZvcm1hdCgNCisgICAgICAgICAgICAgICAgICAgICBQaXhlbEZvcm1hdCBwaXhmbXQNCisgICAgKQ0KK3sNCisgICByZXR1cm4gKHBpeGZtdCAmIFBpeGVsRm9ybWF0Q2Fub25pY2FsKSAhPSAwOw0KK30NCisNCisvKg0KKyAqIENvbG9yIHBhbGV0dGUNCisgKiBwYWxldHRlIGVudHJpZXMgYXJlIGxpbWl0ZWQgdG8gMzJicHAgQVJHQiBwaXhlbCBmb3JtYXQNCisgKi8gDQorDQorZW51bSBQYWxldHRlRmxhZ3MNCit7DQorICAgIFBhbGV0dGVGbGFnc0hhc0FscGhhICAgID0gMHgwMDAxLA0KKyAgICBQYWxldHRlRmxhZ3NHcmF5U2NhbGUgICA9IDB4MDAwMiwNCisgICAgUGFsZXR0ZUZsYWdzSGFsZnRvbmUgICAgPSAweDAwMDQNCit9Ow0KKw0KK3N0cnVjdCBDb2xvclBhbGV0dGUNCit7DQorcHVibGljOg0KKyAgICBVSU5UIEZsYWdzOyAgICAgICAgICAgICAvLyBwYWxldHRlIGZsYWdzDQorICAgIFVJTlQgQ291bnQ7ICAgICAgICAgICAgIC8vIG51bWJlciBvZiBjb2xvciBlbnRyaWVzDQorICAgIEFSR0IgRW50cmllc1sxXTsgICAgICAgIC8vIHBhbGV0dGUgY29sb3IgZW50cmllcw0KK307DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c1JlZ2lvbi5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c1JlZ2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMWQyMGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzUmVnaW9uLmgKQEAgLTAsMCArMSw0OTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqDQorKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCwgTWljcm9zb2Z0IENvcnAuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyoNCisqIE1vZHVsZSBOYW1lOg0KKyoNCisqICAgR2RpcGx1c1JlZ2lvbi5oDQorKg0KKyogQWJzdHJhY3Q6DQorKg0KKyogICBSZWdpb24gQVBJIHJlbGF0ZWQgZGVjbGFyYXRpb25zDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9HRElQTFVTUkVHSU9OX0gNCisjZGVmaW5lIF9HRElQTFVTUkVHSU9OX0gNCisNCisvKioNCisgKiBDb25zdHJ1Y3QgYSBuZXcgcmVnaW9uIG9iamVjdA0KKyAqLw0KKw0KK2lubGluZSANCitSZWdpb246OlJlZ2lvbigpDQorew0KKyAgICBHcFJlZ2lvbiAqcmVnaW9uID0gTlVMTDsNCisNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVSZWdpb24oJnJlZ2lvbik7DQorDQorICAgIFNldE5hdGl2ZVJlZ2lvbihyZWdpb24pOw0KK30NCisNCitpbmxpbmUgDQorUmVnaW9uOjpSZWdpb24oSU4gY29uc3QgUmVjdEYmIHJlY3QpDQorew0KKyAgICBHcFJlZ2lvbiAqcmVnaW9uID0gTlVMTDsNCisNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVSZWdpb25SZWN0KCZyZWN0LCAmcmVnaW9uKTsNCisNCisgICAgU2V0TmF0aXZlUmVnaW9uKHJlZ2lvbik7DQorfQ0KKw0KK2lubGluZSANCitSZWdpb246OlJlZ2lvbihJTiBjb25zdCBSZWN0JiByZWN0KQ0KK3sNCisgICAgR3BSZWdpb24gKnJlZ2lvbiA9IE5VTEw7DQorDQorICAgIGxhc3RSZXN1bHQgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlUmVnaW9uUmVjdEkoJnJlY3QsICZyZWdpb24pOw0KKw0KKyAgICBTZXROYXRpdmVSZWdpb24ocmVnaW9uKTsNCit9DQorDQoraW5saW5lIA0KK1JlZ2lvbjo6UmVnaW9uKElOIGNvbnN0IEdyYXBoaWNzUGF0aCogcGF0aCkNCit7DQorICAgIEdwUmVnaW9uICpyZWdpb24gPSBOVUxMOw0KKw0KKyAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZVJlZ2lvblBhdGgocGF0aC0+bmF0aXZlUGF0aCwgJnJlZ2lvbik7DQorDQorICAgIFNldE5hdGl2ZVJlZ2lvbihyZWdpb24pOw0KK30NCisNCitpbmxpbmUgDQorUmVnaW9uOjpSZWdpb24oSU4gY29uc3QgQllURSogcmVnaW9uRGF0YSwgSU4gSU5UIHNpemUpDQorew0KKyAgICBHcFJlZ2lvbiAqcmVnaW9uID0gTlVMTDsNCisNCisgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVSZWdpb25SZ25EYXRhKHJlZ2lvbkRhdGEsIHNpemUsICZyZWdpb24pOw0KKw0KKyAgICBTZXROYXRpdmVSZWdpb24ocmVnaW9uKTsNCit9DQorDQoraW5saW5lIA0KK1JlZ2lvbjo6UmVnaW9uKElOIEhSR04gaFJnbikNCit7DQorICAgIEdwUmVnaW9uICpyZWdpb24gPSBOVUxMOw0KKw0KKyAgICBsYXN0UmVzdWx0ID0gRGxsRXhwb3J0czo6R2RpcENyZWF0ZVJlZ2lvbkhyZ24oaFJnbiwgJnJlZ2lvbik7DQorDQorICAgIFNldE5hdGl2ZVJlZ2lvbihyZWdpb24pOw0KK30NCisNCitpbmxpbmUgDQorUmVnaW9uKiBSZWdpb246OkZyb21IUkdOKElOIEhSR04gaFJnbikNCit7DQorICAgIEdwUmVnaW9uICpyZWdpb24gPSBOVUxMOw0KKw0KKyAgICBpZiAoRGxsRXhwb3J0czo6R2RpcENyZWF0ZVJlZ2lvbkhyZ24oaFJnbiwgJnJlZ2lvbikgPT0gT2spDQorICAgIHsNCisgICAgICAgIFJlZ2lvbiogbmV3UmVnaW9uID0gbmV3IFJlZ2lvbihyZWdpb24pOw0KKw0KKyAgICAgICAgaWYgKG5ld1JlZ2lvbiA9PSBOVUxMKSANCisgICAgICAgIHsNCisgICAgICAgICAgICBEbGxFeHBvcnRzOjpHZGlwRGVsZXRlUmVnaW9uKHJlZ2lvbik7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4gbmV3UmVnaW9uOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgICAgIHJldHVybiBOVUxMOw0KK30NCisNCitpbmxpbmUgDQorUmVnaW9uOjp+UmVnaW9uKCkNCit7DQorICAgIERsbEV4cG9ydHM6OkdkaXBEZWxldGVSZWdpb24obmF0aXZlUmVnaW9uKTsNCit9DQorDQorLyoqDQorICogTWFrZSBhIGNvcHkgb2YgdGhlIHJlZ2lvbiBvYmplY3QNCisgKi8NCitpbmxpbmUgUmVnaW9uKiANCitSZWdpb246OkNsb25lKCkgY29uc3QNCit7DQorICAgIEdwUmVnaW9uICpyZWdpb24gPSBOVUxMOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENsb25lUmVnaW9uKG5hdGl2ZVJlZ2lvbiwgJnJlZ2lvbikpOw0KKw0KKyAgICByZXR1cm4gbmV3IFJlZ2lvbihyZWdpb24pOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6TWFrZUluZmluaXRlKCkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEluZmluaXRlKG5hdGl2ZVJlZ2lvbikpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6TWFrZUVtcHR5KCkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEVtcHR5KG5hdGl2ZVJlZ2lvbikpOw0KK30NCisNCisvKioNCisgKiBSZWdpb24gb3BlcmF0aW9ucw0KKyAqLw0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpJbnRlcnNlY3QoSU4gY29uc3QgUmVjdEYmIHJlY3QpDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDb21iaW5lUmVnaW9uUmVjdChuYXRpdmVSZWdpb24sICZyZWN0LCBDb21iaW5lTW9kZUludGVyc2VjdCkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6SW50ZXJzZWN0KElOIGNvbnN0IFJlY3QmIHJlY3QpDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDb21iaW5lUmVnaW9uUmVjdEkobmF0aXZlUmVnaW9uLCAmcmVjdCwgQ29tYmluZU1vZGVJbnRlcnNlY3QpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitSZWdpb246OkludGVyc2VjdChJTiBjb25zdCBHcmFwaGljc1BhdGgqIHBhdGgpDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDb21iaW5lUmVnaW9uUGF0aChuYXRpdmVSZWdpb24sIHBhdGgtPm5hdGl2ZVBhdGgsIENvbWJpbmVNb2RlSW50ZXJzZWN0KSk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpJbnRlcnNlY3QoSU4gY29uc3QgUmVnaW9uKiByZWdpb24pDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDb21iaW5lUmVnaW9uUmVnaW9uKG5hdGl2ZVJlZ2lvbiwgcmVnaW9uLT5uYXRpdmVSZWdpb24sIENvbWJpbmVNb2RlSW50ZXJzZWN0KSk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpVbmlvbihJTiBjb25zdCBSZWN0RiYgcmVjdCkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENvbWJpbmVSZWdpb25SZWN0KG5hdGl2ZVJlZ2lvbiwgJnJlY3QsIENvbWJpbmVNb2RlVW5pb24pKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitSZWdpb246OlVuaW9uKElOIGNvbnN0IFJlY3QmIHJlY3QpDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDb21iaW5lUmVnaW9uUmVjdEkobmF0aXZlUmVnaW9uLCAmcmVjdCwgQ29tYmluZU1vZGVVbmlvbikpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6VW5pb24oSU4gY29uc3QgR3JhcGhpY3NQYXRoKiBwYXRoKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ29tYmluZVJlZ2lvblBhdGgobmF0aXZlUmVnaW9uLCBwYXRoLT5uYXRpdmVQYXRoLCBDb21iaW5lTW9kZVVuaW9uKSk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpVbmlvbihJTiBjb25zdCBSZWdpb24qIHJlZ2lvbikNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENvbWJpbmVSZWdpb25SZWdpb24obmF0aXZlUmVnaW9uLCByZWdpb24tPm5hdGl2ZVJlZ2lvbiwgQ29tYmluZU1vZGVVbmlvbikpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6WG9yKElOIGNvbnN0IFJlY3RGJiByZWN0KQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ29tYmluZVJlZ2lvblJlY3QobmF0aXZlUmVnaW9uLCAmcmVjdCwgQ29tYmluZU1vZGVYb3IpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitSZWdpb246OlhvcihJTiBjb25zdCBSZWN0JiByZWN0KQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ29tYmluZVJlZ2lvblJlY3RJKG5hdGl2ZVJlZ2lvbiwgJnJlY3QsIENvbWJpbmVNb2RlWG9yKSk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpYb3IoSU4gY29uc3QgR3JhcGhpY3NQYXRoKiBwYXRoKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ29tYmluZVJlZ2lvblBhdGgobmF0aXZlUmVnaW9uLCBwYXRoLT5uYXRpdmVQYXRoLCBDb21iaW5lTW9kZVhvcikpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6WG9yKElOIGNvbnN0IFJlZ2lvbiogcmVnaW9uKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ29tYmluZVJlZ2lvblJlZ2lvbihuYXRpdmVSZWdpb24sIHJlZ2lvbi0+bmF0aXZlUmVnaW9uLCBDb21iaW5lTW9kZVhvcikpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6RXhjbHVkZShJTiBjb25zdCBSZWN0RiYgcmVjdCkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENvbWJpbmVSZWdpb25SZWN0KG5hdGl2ZVJlZ2lvbiwgJnJlY3QsIENvbWJpbmVNb2RlRXhjbHVkZSkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6RXhjbHVkZShJTiBjb25zdCBSZWN0JiByZWN0KQ0KK3sNCisgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENvbWJpbmVSZWdpb25SZWN0SShuYXRpdmVSZWdpb24sICZyZWN0LCBDb21iaW5lTW9kZUV4Y2x1ZGUpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cyANCitSZWdpb246OkV4Y2x1ZGUoSU4gY29uc3QgR3JhcGhpY3NQYXRoKiBwYXRoKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ29tYmluZVJlZ2lvblBhdGgobmF0aXZlUmVnaW9uLCBwYXRoLT5uYXRpdmVQYXRoLCBDb21iaW5lTW9kZUV4Y2x1ZGUpKTsNCit9DQorDQoraW5saW5lIFN0YXR1cw0KK1JlZ2lvbjo6RXhjbHVkZShJTiBjb25zdCBSZWdpb24qIHJlZ2lvbikNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENvbWJpbmVSZWdpb25SZWdpb24obmF0aXZlUmVnaW9uLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLT5uYXRpdmVSZWdpb24sIENvbWJpbmVNb2RlRXhjbHVkZSkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6Q29tcGxlbWVudChJTiBjb25zdCBSZWN0RiYgcmVjdCkNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcENvbWJpbmVSZWdpb25SZWN0KG5hdGl2ZVJlZ2lvbiwgJnJlY3QsIENvbWJpbmVNb2RlQ29tcGxlbWVudCkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6Q29tcGxlbWVudChJTiBjb25zdCBSZWN0JiByZWN0KQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ29tYmluZVJlZ2lvblJlY3RJKG5hdGl2ZVJlZ2lvbiwgJnJlY3QsIENvbWJpbmVNb2RlQ29tcGxlbWVudCkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6Q29tcGxlbWVudChJTiBjb25zdCBHcmFwaGljc1BhdGgqIHBhdGgpDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBDb21iaW5lUmVnaW9uUGF0aChuYXRpdmVSZWdpb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC0+bmF0aXZlUGF0aCwgQ29tYmluZU1vZGVDb21wbGVtZW50KSk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpDb21wbGVtZW50KElOIGNvbnN0IFJlZ2lvbiogcmVnaW9uKQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ29tYmluZVJlZ2lvblJlZ2lvbihuYXRpdmVSZWdpb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tPm5hdGl2ZVJlZ2lvbiwgQ29tYmluZU1vZGVDb21wbGVtZW50KSk7DQorfQ0KKw0KKy8qKg0KKyAqIFRyYW5zZm9ybSBvcGVyYXRpb25zDQorICovDQoraW5saW5lIFN0YXR1cyANCitSZWdpb246OlRyYW5zbGF0ZShJTiBSRUFMIGR4LCANCisgICAgICAgICAgICAgICAgICBJTiBSRUFMIGR5KQ0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwVHJhbnNsYXRlUmVnaW9uKG5hdGl2ZVJlZ2lvbiwgZHgsIGR5KSk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpUcmFuc2xhdGUoSU4gSU5UIGR4LCANCisgICAgICAgICAgICAgICAgICBJTiBJTlQgZHkpDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBUcmFuc2xhdGVSZWdpb25JKG5hdGl2ZVJlZ2lvbiwgZHgsIGR5KSk7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpUcmFuc2Zvcm0oSU4gY29uc3QgTWF0cml4KiBtYXRyaXgpDQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBUcmFuc2Zvcm1SZWdpb24obmF0aXZlUmVnaW9uLCBtYXRyaXgtPm5hdGl2ZU1hdHJpeCkpOw0KK30NCisNCisvKioNCisgKiBHZXQgcmVnaW9uIGF0dHJpYnV0ZXMNCisgKi8NCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6R2V0Qm91bmRzKE9VVCBSZWN0RiogcmVjdCwNCisgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljcyogZykgY29uc3QNCit7DQorICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFJlZ2lvbkJvdW5kcyhuYXRpdmVSZWdpb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy0+bmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdCkpOw0KK30NCisNCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6R2V0Qm91bmRzKE9VVCBSZWN0KiByZWN0LA0KKyAgICAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UmVnaW9uQm91bmRzSShuYXRpdmVSZWdpb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy0+bmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdCkpOw0KK30NCisNCitpbmxpbmUgSFJHTg0KK1JlZ2lvbjo6R2V0SFJHTihJTiBjb25zdCBHcmFwaGljcyogZykgY29uc3QNCit7DQorICAgIEhSR04gaHJnbjsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRSZWdpb25IUmduKG5hdGl2ZVJlZ2lvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGctPm5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhyZ24pKTsNCisNCisgICAgcmV0dXJuIGhyZ247DQorfQ0KKw0KK2lubGluZSBCT09MIA0KK1JlZ2lvbjo6SXNFbXB0eShJTiBjb25zdCBHcmFwaGljcyAqZykgY29uc3QNCit7DQorICAgIEJPT0wgYm9vbG4gPSBGQUxTRTsNCisgICANCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJc0VtcHR5UmVnaW9uKG5hdGl2ZVJlZ2lvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGctPm5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvb2xuKSk7DQorDQorICAgIHJldHVybiBib29sbjsNCit9DQorDQoraW5saW5lIEJPT0wgDQorUmVnaW9uOjpJc0luZmluaXRlKElOIGNvbnN0IEdyYXBoaWNzICpnKSBjb25zdA0KK3sNCisgICAgQk9PTCBib29sbiA9IEZBTFNFOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzSW5maW5pdGVSZWdpb24obmF0aXZlUmVnaW9uLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLT5uYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvb2xuKSk7DQorDQorICAgIHJldHVybiBib29sbjsNCit9DQorDQoraW5saW5lIEJPT0wgDQorUmVnaW9uOjpFcXVhbHMoSU4gY29uc3QgUmVnaW9uKiByZWdpb24sIA0KKyAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnKSBjb25zdA0KK3sNCisgICAgQk9PTCBib29sbiA9IEZBTFNFOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzRXF1YWxSZWdpb24obmF0aXZlUmVnaW9uLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tPm5hdGl2ZVJlZ2lvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy0+bmF0aXZlR3JhcGhpY3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZib29sbikpOw0KKyAgICByZXR1cm4gYm9vbG47DQorfQ0KKw0KKy8vIEdldCB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIG5lZWRlZCBmb3IgdGhlIEdldERhdGEgbWV0aG9kDQoraW5saW5lIFVJTlQgDQorUmVnaW9uOjpHZXREYXRhU2l6ZSgpIGNvbnN0DQorew0KKyAgICBVSU5UICAgICBidWZmZXJTaXplID0gMDsNCisgICAgDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UmVnaW9uRGF0YVNpemUobmF0aXZlUmVnaW9uLCAmYnVmZmVyU2l6ZSkpOw0KKyAgICANCisgICAgcmV0dXJuIGJ1ZmZlclNpemU7DQorfQ0KKw0KKy8vIGJ1ZmZlciAgICAgLSB3aGVyZSB0byBwdXQgdGhlIGRhdGENCisvLyBidWZmZXJTaXplIC0gaG93IGJpZyB0aGUgYnVmZmVyIGlzIChzaG91bGQgYmUgYXQgbGVhc3QgYXMgYmlnIGFzIEdldERhdGFTaXplKCkpDQorLy8gc2l6ZUZpbGxlZCAtIGlmIG5vdCBOVUxMLCB0aGlzIGlzIGFuIE9VVCBwYXJhbSB0aGF0IHNheXMgaG93IG1hbnkgYnl0ZXMNCisvLyAgICAgICAgICAgICAgb2YgZGF0YSB3ZXJlIHdyaXR0ZW4gdG8gdGhlIGJ1ZmZlci4NCitpbmxpbmUgU3RhdHVzIA0KK1JlZ2lvbjo6R2V0RGF0YShPVVQgQllURSogYnVmZmVyLCANCisgICAgICAgICAgICAgICAgSU4gVUlOVCBidWZmZXJTaXplLCANCisgICAgICAgICAgICAgICAgT1VUIFVJTlQqIHNpemVGaWxsZWQpIGNvbnN0DQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRSZWdpb25EYXRhKG5hdGl2ZVJlZ2lvbiwgYnVmZmVyLCBidWZmZXJTaXplLCBzaXplRmlsbGVkKSk7DQorfQ0KKw0KKy8qKg0KKyAqIEhpdCB0ZXN0aW5nIG9wZXJhdGlvbnMNCisgKi8NCitpbmxpbmUgQk9PTCANCitSZWdpb246OklzVmlzaWJsZShJTiBjb25zdCBQb2ludEYmIHBvaW50LCANCisgICAgICAgICAgICAgICAgICBJTiBjb25zdCBHcmFwaGljcyogZykgY29uc3QNCit7DQorICAgIEJPT0wgYm9vbG4gPSBGQUxTRTsNCisNCisgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBJc1Zpc2libGVSZWdpb25Qb2ludChuYXRpdmVSZWdpb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LlgsIHBvaW50LlksIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZyA9PSBOVUxMKSA/IE5VTEwgOiBnLT5uYXRpdmVHcmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvb2xuKSk7DQorICAgIHJldHVybiBib29sbjsNCit9DQorDQoraW5saW5lIEJPT0wgDQorUmVnaW9uOjpJc1Zpc2libGUoSU4gY29uc3QgUmVjdEYmIHJlY3QsIA0KKyAgICAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnKSBjb25zdA0KK3sNCisgICAgQk9PTCBib29sbiA9IEZBTFNFOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzVmlzaWJsZVJlZ2lvblJlY3QobmF0aXZlUmVnaW9uLCByZWN0LlgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWSwgcmVjdC5XaWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5IZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnID09IE5VTEwpID8gTlVMTCA6IGctPm5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYm9vbG4pKTsNCisgICAgcmV0dXJuIGJvb2xuOw0KK30NCisNCitpbmxpbmUgQk9PTCANCitSZWdpb246OklzVmlzaWJsZShJTiBjb25zdCBQb2ludCYgcG9pbnQsIA0KKyAgICAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnKSBjb25zdA0KK3sNCisgICAgQk9PTCBib29sbiA9IEZBTFNFOw0KKw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzVmlzaWJsZVJlZ2lvblBvaW50SShuYXRpdmVSZWdpb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludC5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnID09IE5VTEwpID8gTlVMTCA6IGctPm5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZib29sbikpOw0KKyAgICByZXR1cm4gYm9vbG47DQorfQ0KKw0KK2lubGluZSBCT09MIA0KK1JlZ2lvbjo6SXNWaXNpYmxlKElOIGNvbnN0IFJlY3QmIHJlY3QsIA0KKyAgICAgICAgICAgICAgICAgIElOIGNvbnN0IEdyYXBoaWNzKiBnKSBjb25zdA0KK3sNCisgICAgQk9PTCBib29sbiA9IEZBTFNFOw0KKw0KKyAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcElzVmlzaWJsZVJlZ2lvblJlY3RJKG5hdGl2ZVJlZ2lvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QuV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LkhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnID09IE5VTEwpID8gTlVMTCA6IGctPm5hdGl2ZUdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvb2xuKSk7DQorICAgIHJldHVybiBib29sbjsNCit9DQorDQoraW5saW5lIFVJTlQgDQorUmVnaW9uOjpHZXRSZWdpb25TY2Fuc0NvdW50KElOIGNvbnN0IE1hdHJpeCogbWF0cml4KSBjb25zdA0KK3sNCisgICAgVUlOVCBjb3VudCA9IDA7DQorDQorICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UmVnaW9uU2NhbnNDb3VudChuYXRpdmVSZWdpb24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXgtPm5hdGl2ZU1hdHJpeCkpOw0KKyAgICByZXR1cm4gY291bnQ7DQorfQ0KKw0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpHZXRSZWdpb25TY2FucygNCisgICAgSU4gY29uc3QgTWF0cml4KiBtYXRyaXgsDQorICAgIE9VVCBSZWN0RiogcmVjdHMsDQorICAgIElOIE9VVCBJTlQqIGNvdW50KSBjb25zdA0KK3sNCisgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0UmVnaW9uU2NhbnMobmF0aXZlUmVnaW9uLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC0+bmF0aXZlTWF0cml4KSk7DQorfQ0KKw0KKy8vIElmIHJlY3RzIGlzIE5VTEwsIHJldHVybiB0aGUgY291bnQgb2YgcmVjdHMgaW4gdGhlIHJlZ2lvbi4NCisvLyBPdGhlcndpc2UsIGFzc3VtZSByZWN0cyBpcyBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSByZWdpb24gcmVjdHMNCisvLyBhbmQgZmlsbCB0aGVtIGluIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiByZWN0cyBmaWxsZWQgaW4uDQorLy8gVGhlIHJlY3RzIGFyZSByZXR1cm5lZCBpbiB0aGUgdW5pdHMgc3BlY2lmaWVkIGJ5IHRoZSBtYXRyaXgNCisvLyAod2hpY2ggaXMgdHlwaWNhbGx5IGEgd29ybGQtdG8tZGV2aWNlIHRyYW5zZm9ybSkuDQorLy8gTm90ZSB0aGF0IHRoZSBudW1iZXIgb2YgcmVjdHMgcmV0dXJuZWQgY2FuIHZhcnksIGRlcGVuZGluZyBvbiB0aGUNCisvLyBtYXRyaXggdGhhdCBpcyB1c2VkLg0KK2lubGluZSBTdGF0dXMgDQorUmVnaW9uOjpHZXRSZWdpb25TY2FucygNCisgICAgSU4gY29uc3QgTWF0cml4KiBtYXRyaXgsDQorICAgIE9VVCBSZWN0KiByZWN0cywgICAgICAgLy8gTlVMTCB0byBqdXN0IGdldCB0aGUgY291bnQNCisgICAgSU4gT1VUIElOVCogY291bnQpIGNvbnN0DQorew0KKyAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRSZWdpb25TY2Fuc0kobmF0aXZlUmVnaW9uLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC0+bmF0aXZlTWF0cml4KSk7DQorfQ0KKw0KKy8vIHByb3RlY3RlZCBtZXRob2QNCitpbmxpbmUgUmVnaW9uOjpSZWdpb24oR3BSZWdpb24qIG5hdGl2ZVJlZ2lvbikNCit7DQorICAgIFNldE5hdGl2ZVJlZ2lvbihuYXRpdmVSZWdpb24pOw0KK30NCisNCisvLyBwcm90ZWN0ZWQgbWV0aG9kDQoraW5saW5lIFZPSUQgUmVnaW9uOjpTZXROYXRpdmVSZWdpb24oR3BSZWdpb24qIG5hdGl2ZVJlZ2lvbikNCit7DQorICAgIHRoaXMtPm5hdGl2ZVJlZ2lvbiA9IG5hdGl2ZVJlZ2lvbjsNCit9DQorDQoraW5saW5lIFN0YXR1cyBSZWdpb246OkdldExhc3RTdGF0dXMoKSBjb25zdA0KK3sNCisgICAgU3RhdHVzIGxhc3RTdGF0dXMgPSBsYXN0UmVzdWx0Ow0KKyAgICBsYXN0UmVzdWx0ID0gT2s7DQorDQorICAgIHJldHVybiBsYXN0U3RhdHVzOw0KK30NCisNCisjZW5kaWYgLy8gIV9HRElQTFVTUkVHSU9OX0gNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzU3RyaW5nRm9ybWF0LmggYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlQbHVzU3RyaW5nRm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM5ZGRiNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNTdHJpbmdGb3JtYXQuaApAQCAtMCwwICsxLDM4MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXA0KKyoNCisqIENvcHlyaWdodCAoYykgMTk5OC0yMDAwLCBNaWNyb3NvZnQgQ29ycC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzU3RyaW5nRm9ybWF0LmgNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIFN0cmluZyBmb3JtYXQgc3BlY2lmaWNhdGlvbiBmb3IgRHJhd1N0cmluZyBhbmQgdGV4dCBBUElzDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9HRElQTFVTU1RSSU5HRk9STUFUX0gNCisjZGVmaW5lIF9HRElQTFVTU1RSSU5HRk9STUFUX0gNCisNCisNCitjbGFzcyBTdHJpbmdGb3JtYXQgOiBwdWJsaWMgR2RpcGx1c0Jhc2UNCit7DQorcHVibGljOg0KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3M7DQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc1BhdGg7DQorDQorDQorICAgIFN0cmluZ0Zvcm1hdCgNCisgICAgICAgIElOIElOVCAgICAgZm9ybWF0RmxhZ3MgPSAwLA0KKyAgICAgICAgSU4gTEFOR0lEICBsYW5ndWFnZSA9IExBTkdfTkVVVFJBTA0KKyAgICApDQorICAgIHsNCisgICAgICAgIG5hdGl2ZUZvcm1hdCA9IE5VTEw7DQorICAgICAgICBsYXN0RXJyb3IgPSBEbGxFeHBvcnRzOjpHZGlwQ3JlYXRlU3RyaW5nRm9ybWF0KA0KKyAgICAgICAgICAgIGZvcm1hdEZsYWdzLA0KKyAgICAgICAgICAgIGxhbmd1YWdlLA0KKyAgICAgICAgICAgICZuYXRpdmVGb3JtYXQNCisgICAgICAgICk7DQorICAgIH0NCisNCisgICAgc3RhdGljIGNvbnN0IFN0cmluZ0Zvcm1hdCAqR2VuZXJpY0RlZmF1bHQoKTsNCisgICAgc3RhdGljIGNvbnN0IFN0cmluZ0Zvcm1hdCAqR2VuZXJpY1R5cG9ncmFwaGljKCk7DQorDQorICAgIC8vIENvbnN0cnVjdG9yIGJhc2VkIG9uIGV4aXN0aW5nIHN0cmluZyBmb3JtYXQNCisNCisgICAgU3RyaW5nRm9ybWF0KA0KKyAgICAgICAgSU4gY29uc3QgU3RyaW5nRm9ybWF0ICpmb3JtYXQNCisgICAgKQ0KKyAgICB7DQorICAgICAgICBuYXRpdmVGb3JtYXQgPSBOVUxMOw0KKyAgICAgICAgbGFzdEVycm9yID0gRGxsRXhwb3J0czo6R2RpcENsb25lU3RyaW5nRm9ybWF0KA0KKyAgICAgICAgICAgIGZvcm1hdCA/IGZvcm1hdC0+bmF0aXZlRm9ybWF0IDogTlVMTCwNCisgICAgICAgICAgICAmbmF0aXZlRm9ybWF0DQorICAgICAgICApOw0KKyAgICB9DQorDQorICAgIFN0cmluZ0Zvcm1hdCAqQ2xvbmUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBHcFN0cmluZ0Zvcm1hdCAqY2xvbmVkU3RyaW5nRm9ybWF0ID0gTlVMTDsNCisNCisgICAgICAgIGxhc3RFcnJvciA9IERsbEV4cG9ydHM6OkdkaXBDbG9uZVN0cmluZ0Zvcm1hdCgNCisgICAgICAgICAgICBuYXRpdmVGb3JtYXQsDQorICAgICAgICAgICAgJmNsb25lZFN0cmluZ0Zvcm1hdA0KKyAgICAgICAgKTsNCisNCisgICAgICAgIGlmIChsYXN0RXJyb3IgPT0gT2spDQorICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdGb3JtYXQoY2xvbmVkU3RyaW5nRm9ybWF0LCBsYXN0RXJyb3IpOw0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorDQorICAgIH5TdHJpbmdGb3JtYXQoKQ0KKyAgICB7DQorICAgICAgICBEbGxFeHBvcnRzOjpHZGlwRGVsZXRlU3RyaW5nRm9ybWF0KG5hdGl2ZUZvcm1hdCk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldEZvcm1hdEZsYWdzKElOIElOVCBmbGFncykNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0U3RyaW5nRm9ybWF0RmxhZ3MoDQorICAgICAgICAgICAgbmF0aXZlRm9ybWF0LA0KKyAgICAgICAgICAgIGZsYWdzDQorICAgICAgICApKTsNCisgICAgfQ0KKw0KKyAgICBJTlQgR2V0Rm9ybWF0RmxhZ3MoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBJTlQgZmxhZ3M7DQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFN0cmluZ0Zvcm1hdEZsYWdzKG5hdGl2ZUZvcm1hdCwgJmZsYWdzKSk7DQorICAgICAgICByZXR1cm4gZmxhZ3M7DQorICAgIH0NCisNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE1MjE1NA0KKyAgICBTdGF0dXMgU2V0TGluZVNwYWNpbmcoDQorICAgICAgICBJTiBSRUFMICAgICAgICBhbW91bnQgPSAxLjBmLA0KKyAgICAgICAgSU4gTGluZVNwYWNpbmcgbWV0aG9kID0gTGluZVNwYWNpbmdSZWNvbW1lbmRlZA0KKyAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFN0cmluZ0Zvcm1hdExpbmVTcGFjaW5nKA0KKyAgICAgICAgICAgIG5hdGl2ZUZvcm1hdCwNCisgICAgICAgICAgICBhbW91bnQsDQorICAgICAgICAgICAgbWV0aG9kDQorICAgICAgICApKTsNCisgICAgfQ0KKyNlbmRpZg0KKw0KKyAgICBTdGF0dXMgU2V0QWxpZ25tZW50KElOIFN0cmluZ0FsaWdubWVudCBhbGlnbikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0U3RyaW5nRm9ybWF0QWxpZ24oDQorICAgICAgICAgICAgbmF0aXZlRm9ybWF0LA0KKyAgICAgICAgICAgIGFsaWduDQorICAgICAgICApKTsNCisgICAgfQ0KKw0KKyAgICBTdHJpbmdBbGlnbm1lbnQgR2V0QWxpZ25tZW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgU3RyaW5nQWxpZ25tZW50IGFsaWdubWVudDsNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0U3RyaW5nRm9ybWF0QWxpZ24oDQorICAgICAgICAgICAgbmF0aXZlRm9ybWF0LA0KKyAgICAgICAgICAgICZhbGlnbm1lbnQNCisgICAgICAgICkpOw0KKyAgICAgICAgcmV0dXJuIGFsaWdubWVudDsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0TGluZUFsaWdubWVudChJTiBTdHJpbmdBbGlnbm1lbnQgYWxpZ24pDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFN0cmluZ0Zvcm1hdExpbmVBbGlnbigNCisgICAgICAgICAgICBuYXRpdmVGb3JtYXQsDQorICAgICAgICAgICAgYWxpZ24NCisgICAgICAgICkpOw0KKyAgICB9DQorDQorICAgIFN0cmluZ0FsaWdubWVudCBHZXRMaW5lQWxpZ25tZW50KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgU3RyaW5nQWxpZ25tZW50IGFsaWdubWVudDsNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0U3RyaW5nRm9ybWF0TGluZUFsaWduKA0KKyAgICAgICAgICAgIG5hdGl2ZUZvcm1hdCwNCisgICAgICAgICAgICAmYWxpZ25tZW50DQorICAgICAgICApKTsNCisgICAgICAgIHJldHVybiBhbGlnbm1lbnQ7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldEhvdGtleVByZWZpeChJTiBIb3RrZXlQcmVmaXggaG90a2V5UHJlZml4KQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRTdHJpbmdGb3JtYXRIb3RrZXlQcmVmaXgoDQorICAgICAgICAgICAgbmF0aXZlRm9ybWF0LA0KKyAgICAgICAgICAgIChJTlQpaG90a2V5UHJlZml4DQorICAgICAgICApKTsNCisgICAgfQ0KKw0KKyAgICBIb3RrZXlQcmVmaXggR2V0SG90a2V5UHJlZml4KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgSG90a2V5UHJlZml4IGhvdGtleVByZWZpeDsNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0U3RyaW5nRm9ybWF0SG90a2V5UHJlZml4KA0KKyAgICAgICAgICAgIG5hdGl2ZUZvcm1hdCwNCisgICAgICAgICAgICAoSU5UKikmaG90a2V5UHJlZml4DQorICAgICAgICApKTsNCisgICAgICAgIHJldHVybiBob3RrZXlQcmVmaXg7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldFRhYlN0b3BzKA0KKyAgICAgICAgSU4gUkVBTCAgICBmaXJzdFRhYk9mZnNldCwNCisgICAgICAgIElOIElOVCAgICAgY291bnQsDQorICAgICAgICBJTiBjb25zdCBSRUFMICAgICp0YWJTdG9wcw0KKyAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFN0cmluZ0Zvcm1hdFRhYlN0b3BzKA0KKyAgICAgICAgICAgIG5hdGl2ZUZvcm1hdCwNCisgICAgICAgICAgICBmaXJzdFRhYk9mZnNldCwNCisgICAgICAgICAgICBjb3VudCwNCisgICAgICAgICAgICB0YWJTdG9wcw0KKyAgICAgICAgKSk7DQorICAgIH0NCisNCisgICAgSU5UIEdldFRhYlN0b3BDb3VudCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIElOVCBjb3VudDsNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0U3RyaW5nRm9ybWF0VGFiU3RvcENvdW50KG5hdGl2ZUZvcm1hdCwgJmNvdW50KSk7DQorICAgICAgICByZXR1cm4gY291bnQ7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldFRhYlN0b3BzKA0KKyAgICAgICAgSU4gSU5UICAgICBjb3VudCwNCisgICAgICAgIE9VVCBSRUFMICAgKmZpcnN0VGFiT2Zmc2V0LA0KKyAgICAgICAgT1VUIFJFQUwgICAqdGFiU3RvcHMNCisgICAgKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRTdHJpbmdGb3JtYXRUYWJTdG9wcygNCisgICAgICAgICAgICBuYXRpdmVGb3JtYXQsDQorICAgICAgICAgICAgY291bnQsDQorICAgICAgICAgICAgZmlyc3RUYWJPZmZzZXQsDQorICAgICAgICAgICAgdGFiU3RvcHMNCisgICAgICAgICkpOw0KKyAgICB9DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzE0NjkzMw0KKyAgICBTdGF0dXMgU2V0RGlnaXRTdWJzdGl0dXRpb24oDQorICAgICAgICBJTiBMQU5HSUQgICAgICAgICAgICAgICAgbGFuZ3VhZ2UsDQorICAgICAgICBJTiBTdHJpbmdEaWdpdFN1YnN0aXR1dGUgc3Vic3RpdHV0ZQ0KKyAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldFN0cmluZ0Zvcm1hdERpZ2l0U3Vic3RpdHV0aW9uKA0KKyAgICAgICAgICAgIG5hdGl2ZUZvcm1hdCwNCisgICAgICAgICAgICBsYW5ndWFnZSwNCisgICAgICAgICAgICBzdWJzdGl0dXRlDQorICAgICAgICApKTsNCisgICAgfQ0KKw0KKyAgICBMQU5HSUQgR2V0RGlnaXRTdWJzdGl0dXRpb25MYW5ndWFnZSgNCisgICAgKSBjb25zdA0KKyAgICB7DQorICAgICAgICBMQU5HSUQgbGFuZ3VhZ2U7DQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFN0cmluZ0Zvcm1hdERpZ2l0U3Vic3RpdHV0aW9uKA0KKyAgICAgICAgICAgIG5hdGl2ZUZvcm1hdCwNCisgICAgICAgICAgICAmbGFuZ3VhZ2UsDQorICAgICAgICAgICAgTlVMTA0KKyAgICAgICAgKSk7DQorICAgICAgICByZXR1cm4gbGFuZ3VhZ2U7DQorICAgIH0NCisNCisgICAgU3RyaW5nRGlnaXRTdWJzdGl0dXRlIEdldERpZ2l0U3Vic3RpdHV0aW9uTWV0aG9kKA0KKyAgICApIGNvbnN0DQorICAgIHsNCisgICAgICAgIFN0cmluZ0RpZ2l0U3Vic3RpdHV0ZSBzdWJzdGl0dXRlOw0KKyAgICAgICAgU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBHZXRTdHJpbmdGb3JtYXREaWdpdFN1YnN0aXR1dGlvbigNCisgICAgICAgICAgICBuYXRpdmVGb3JtYXQsDQorICAgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgICAmc3Vic3RpdHV0ZQ0KKyAgICAgICAgKSk7DQorICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZTsNCisgICAgfQ0KKyNlbmRpZiAvLyBEQ1JfVVNFX05FV18xNDY5MzMNCisNCisgICAgLy8gU3RyaW5nIHRyaW1taW5nLiBIb3cgdG8gaGFuZGxlIG1vcmUgdGV4dCB0aGFuIGNhbiBiZSBkaXNwbGF5ZWQNCisgICAgLy8gaW4gdGhlIGxpbWl0cyBhdmFpbGFibGUuDQorDQorICAgIFN0YXR1cyBTZXRUcmltbWluZyhJTiBTdHJpbmdUcmltbWluZyB0cmltbWluZykNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0U3RyaW5nRm9ybWF0VHJpbW1pbmcoDQorICAgICAgICAgICAgbmF0aXZlRm9ybWF0LA0KKyAgICAgICAgICAgIHRyaW1taW5nDQorICAgICAgICApKTsNCisgICAgfQ0KKw0KKyAgICBTdHJpbmdUcmltbWluZyBTdHJpbmdGb3JtYXQ6OkdldFRyaW1taW5nKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgU3RyaW5nVHJpbW1pbmcgdHJpbW1pbmc7DQorICAgICAgICBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldFN0cmluZ0Zvcm1hdFRyaW1taW5nKA0KKyAgICAgICAgICAgIG5hdGl2ZUZvcm1hdCwNCisgICAgICAgICAgICAmdHJpbW1pbmcNCisgICAgICAgICkpOw0KKyAgICAgICAgcmV0dXJuIHRyaW1taW5nOw0KKyAgICB9DQorDQorI2lmZGVmIERDUl9VU0VfTkVXXzE3NDM0MA0KKyAgICBTdGF0dXMgU2V0TWVhc3VyYWJsZUNoYXJhY3RlclJhbmdlcygNCisgICAgICAgIElOIElOVCAgICAgICAgICAgICAgICAgIHJhbmdlQ291bnQsDQorICAgICAgICBJTiBjb25zdCBDaGFyYWN0ZXJSYW5nZSAqcmFuZ2VzDQorICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0U3RyaW5nRm9ybWF0TWVhc3VyYWJsZUNoYXJhY3RlclJhbmdlcygNCisgICAgICAgICAgICBuYXRpdmVGb3JtYXQsDQorICAgICAgICAgICAgcmFuZ2VDb3VudCwNCisgICAgICAgICAgICByYW5nZXMNCisgICAgICAgICkpOw0KKyAgICB9DQorDQorICAgIElOVCBHZXRNZWFzdXJhYmxlQ2hhcmFjdGVyUmFuZ2VDb3VudCgpDQorICAgIHsNCisgICAgICAgIElOVCBjb3VudDsNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwR2V0U3RyaW5nRm9ybWF0TWVhc3VyYWJsZUNoYXJhY3RlclJhbmdlQ291bnQoDQorICAgICAgICAgICAgbmF0aXZlRm9ybWF0LA0KKyAgICAgICAgICAgICZjb3VudA0KKyAgICAgICAgKSk7DQorICAgICAgICByZXR1cm4gY291bnQ7DQorICAgIH0NCisjZW5kaWYNCisNCisgICAgLy8gR2V0TGFzdFN0YXR1cyAtIHJldHVybiBsYXN0IGVycm9yIGNvZGUgYW5kIGNsZWFyIGVycm9yIGNvZGUNCisNCisgICAgU3RhdHVzIEdldExhc3RTdGF0dXMoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBTdGF0dXMgbGFzdFN0YXR1cyA9IGxhc3RFcnJvcjsNCisgICAgICAgIGxhc3RFcnJvciA9IE9rOw0KKw0KKyAgICAgICAgcmV0dXJuIGxhc3RTdGF0dXM7DQorICAgIH0NCisNCitwcm90ZWN0ZWQ6DQorDQorICAgIFN0YXR1cyBTZXRTdGF0dXMoR3BTdGF0dXMgbmV3U3RhdHVzKSBjb25zdA0KKyAgICB7DQorICAgICAgICBpZiAobmV3U3RhdHVzID09IE9rKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHJldHVybiBPazsNCisgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm4gbGFzdEVycm9yID0gbmV3U3RhdHVzOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorDQorLy8gTm90IGFsbG93ZWQgYW5kIG1vdmUgdG8gcHJpdmF0ZQ0KKyAgICBTdHJpbmdGb3JtYXQoY29uc3QgU3RyaW5nRm9ybWF0ICZzb3VyY2UpDQorICAgIHsNCisgICAgICAgIG5hdGl2ZUZvcm1hdCA9IE5VTEw7DQorICAgICAgICBsYXN0RXJyb3IgPSBEbGxFeHBvcnRzOjpHZGlwQ2xvbmVTdHJpbmdGb3JtYXQoDQorICAgICAgICAgICAgc291cmNlLm5hdGl2ZUZvcm1hdCwNCisgICAgICAgICAgICAmbmF0aXZlRm9ybWF0DQorICAgICAgICApOw0KKyAgICB9DQorDQorICAgIFN0cmluZ0Zvcm1hdCYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZ0Zvcm1hdCAmc291cmNlKQ0KKyAgICB7DQorICAgICAgICBEbGxFeHBvcnRzOjpHZGlwRGVsZXRlU3RyaW5nRm9ybWF0KG5hdGl2ZUZvcm1hdCk7DQorICAgICAgICBsYXN0RXJyb3IgPSBEbGxFeHBvcnRzOjpHZGlwQ2xvbmVTdHJpbmdGb3JtYXQoDQorICAgICAgICAgICAgc291cmNlLm5hdGl2ZUZvcm1hdCwNCisgICAgICAgICAgICAmbmF0aXZlRm9ybWF0DQorICAgICAgICApOw0KKyAgICAgICAgcmV0dXJuICp0aGlzOw0KKyAgICB9DQorDQorDQorICAgIC8vIHByaXZhdGUgY29uc3RydWN0b3IgZm9yIGNvcHkNCisgICAgU3RyaW5nRm9ybWF0KEdwU3RyaW5nRm9ybWF0ICogY2xvbmVkU3RyaW5nRm9ybWF0LCBTdGF0dXMgc3RhdHVzKQ0KKyAgICB7DQorICAgICAgICBsYXN0RXJyb3IgPSBzdGF0dXM7DQorICAgICAgICBuYXRpdmVGb3JtYXQgPSBjbG9uZWRTdHJpbmdGb3JtYXQ7DQorDQorICAgIH0NCisNCisgICAgR3BTdHJpbmdGb3JtYXQgKm5hdGl2ZUZvcm1hdDsNCisgICAgbXV0YWJsZSBTdGF0dXMgIGxhc3RFcnJvcjsNCit9Ow0KKw0KKy8vIEdlbmVyaWMgY29uc3RhbnQgc3RyaW5nIGZvcm1hdHMuDQorDQorc3RhdGljIEJZVEUgR2VuZXJpY1R5cG9ncmFwaGljU3RyaW5nRm9ybWF0QnVmZmVyW3NpemVvZihTdHJpbmdGb3JtYXQpXSA9IHswfTsNCitzdGF0aWMgQllURSBHZW5lcmljRGVmYXVsdFN0cmluZ0Zvcm1hdEJ1ZmZlcltzaXplb2YoU3RyaW5nRm9ybWF0KV0gPSB7MH07DQorDQorc3RhdGljIFN0cmluZ0Zvcm1hdCAqR2VuZXJpY1R5cG9ncmFwaGljU3RyaW5nRm9ybWF0ID0gTlVMTDsNCitzdGF0aWMgU3RyaW5nRm9ybWF0ICpHZW5lcmljRGVmYXVsdFN0cmluZ0Zvcm1hdCAgICAgPSBOVUxMOw0KKw0KKy8vIERlZmluZSB0aGUgZ2VuZXJpYyBzdHJpbmcgZm9ybWF0cw0KKw0KKw0KK2lubGluZSBjb25zdCBTdHJpbmdGb3JtYXQgKlN0cmluZ0Zvcm1hdDo6R2VuZXJpY0RlZmF1bHQoKQ0KK3sNCisgICAgaWYgKEdlbmVyaWNEZWZhdWx0U3RyaW5nRm9ybWF0ICE9IE5VTEwpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZW5lcmljRGVmYXVsdFN0cmluZ0Zvcm1hdDsNCisgICAgfQ0KKw0KKyAgICBHZW5lcmljRGVmYXVsdFN0cmluZ0Zvcm1hdCA9DQorICAgICAgICAoU3RyaW5nRm9ybWF0KilHZW5lcmljRGVmYXVsdFN0cmluZ0Zvcm1hdEJ1ZmZlcjsNCisNCisgICAgR2VuZXJpY0RlZmF1bHRTdHJpbmdGb3JtYXQtPmxhc3RFcnJvciA9DQorICAgICAgICBEbGxFeHBvcnRzOjpHZGlwU3RyaW5nRm9ybWF0R2V0R2VuZXJpY0RlZmF1bHQoDQorICAgICAgICAgICAgJihHZW5lcmljRGVmYXVsdFN0cmluZ0Zvcm1hdC0+bmF0aXZlRm9ybWF0KQ0KKyAgICAgICAgKTsNCisNCisgICAgcmV0dXJuIEdlbmVyaWNEZWZhdWx0U3RyaW5nRm9ybWF0Ow0KK30NCisNCitpbmxpbmUgY29uc3QgU3RyaW5nRm9ybWF0ICpTdHJpbmdGb3JtYXQ6OkdlbmVyaWNUeXBvZ3JhcGhpYygpDQorew0KKyAgICBpZiAoR2VuZXJpY1R5cG9ncmFwaGljU3RyaW5nRm9ybWF0ICE9IE5VTEwpDQorICAgIHsNCisgICAgICAgIHJldHVybiBHZW5lcmljVHlwb2dyYXBoaWNTdHJpbmdGb3JtYXQ7DQorICAgIH0NCisNCisgICAgR2VuZXJpY1R5cG9ncmFwaGljU3RyaW5nRm9ybWF0ID0NCisgICAgICAgIChTdHJpbmdGb3JtYXQqKUdlbmVyaWNUeXBvZ3JhcGhpY1N0cmluZ0Zvcm1hdEJ1ZmZlcjsNCisNCisgICAgR2VuZXJpY1R5cG9ncmFwaGljU3RyaW5nRm9ybWF0LT5sYXN0RXJyb3IgPQ0KKyAgICAgICAgRGxsRXhwb3J0czo6R2RpcFN0cmluZ0Zvcm1hdEdldEdlbmVyaWNUeXBvZ3JhcGhpYygNCisgICAgICAgICAgICAmR2VuZXJpY1R5cG9ncmFwaGljU3RyaW5nRm9ybWF0LT5uYXRpdmVGb3JtYXQNCisgICAgICAgICk7DQorDQorICAgIHJldHVybiBHZW5lcmljVHlwb2dyYXBoaWNTdHJpbmdGb3JtYXQ7DQorfQ0KKw0KKyNlbmRpZiAvLyAhX0dESVBMVVNTVFJJTkdGT1JNQVRfSA0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNUeXBlcy5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c1R5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThjNTg0ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNUeXBlcy5oCkBAIC0wLDAgKzEsODI2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKg0KKyogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqDQorKiAgIEdkaXBsdXNUeXBlcy5oDQorKg0KKyogQWJzdHJhY3Q6DQorKg0KKyogICBCYXNpYyB0eXBlcyB1c2VkIGJ5IEdESSsNCisqDQorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0dESVBMVVNUWVBFU19IDQorI2RlZmluZSBfR0RJUExVU1RZUEVTX0gNCisNCisjaWZuZGVmIERDUl9VU0VfTkVXXzE3NTg2Ng0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBMSUIgdmVyc2lvbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQordHlwZWRlZiBWT0lEIChfX2NkZWNsICpERUJVR0VWRU5URlVOQ1RJT04pKElOVCBsZXZlbCwgQ0hBUiAqbWVzc2FnZSk7DQorDQorZXh0ZXJuICJDIiBCT09MIF9fc3RkY2FsbCBJbml0aWFsaXplR2RpcGx1cyhERUJVR0VWRU5URlVOQ1RJT04pOw0KK2V4dGVybiAiQyIgVk9JRCBfX3N0ZGNhbGwgVW5pbml0aWFsaXplR2RpcGx1cygpOw0KKw0KKyNlbmRpZg0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDYWxsYmFjayBmdW5jdGlvbnMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZXh0ZXJuICJDIiB7DQordHlwZWRlZiBCT09MIChDQUxMQkFDSyAqIEltYWdlQWJvcnQpKFZPSUQgKik7DQordHlwZWRlZiBJbWFnZUFib3J0IERyYXdJbWFnZUFib3J0Ow0KK3R5cGVkZWYgSW1hZ2VBYm9ydCBHZXRUaHVtYm5haWxJbWFnZUFib3J0Ow0KK30NCisNCisvLyBDYWxsYmFjayBmb3IgRW51bWVyYXRlTWV0YWZpbGUgbWV0aG9kcy4gIFRoZSBwYXJhbWV0ZXJzIGFyZToNCisNCisvLyAgICAgIHJlY29yZFR5cGUgICAgICBXTUYsIEVNRiwgb3IgRU1GKyByZWNvcmQgdHlwZQ0KKy8vICAgICAgZmxhZ3MgICAgICAgICAgIChhbHdheXMgMCBmb3IgV01GL0VNRiByZWNvcmRzKQ0KKy8vICAgICAgZGF0YVNpemUgICAgICAgIHNpemUgb2YgdGhlIHJlY29yZCBkYXRhIChpbiBieXRlcyksIG9yIDAgaWYgbm8gZGF0YQ0KKy8vICAgICAgZGF0YSAgICAgICAgICAgIHBvaW50ZXIgdG8gdGhlIHJlY29yZCBkYXRhLCBvciBOVUxMIGlmIG5vIGRhdGENCisvLyAgICAgIGNhbGxiYWNrRGF0YSAgICBwb2ludGVyIHRvIGNhbGxiYWNrRGF0YSwgaWYgYW55DQorDQorLy8gVGhpcyBtZXRob2QgY2FuIHRoZW4gY2FsbCBNZXRhZmlsZTo6UGxheVJlY29yZCB0byBwbGF5IHRoZQ0KKy8vIHJlY29yZCB0aGF0IHdhcyBqdXN0IGVudW1lcmF0ZWQuICBJZiB0aGlzIG1ldGhvZCAgcmV0dXJucw0KKy8vIEZBTFNFLCB0aGUgZW51bWVyYXRpb24gcHJvY2VzcyBpcyBhYm9ydGVkLiAgT3RoZXJ3aXNlLCBpdCBjb250aW51ZXMuDQorDQorZXh0ZXJuICJDIiB7DQordHlwZWRlZiBCT09MIChDQUxMQkFDSyAqIEVudW1lcmF0ZU1ldGFmaWxlUHJvYykoRW1mUGx1c1JlY29yZFR5cGUsVUlOVCxVSU5ULGNvbnN0IEJZVEUqLFZPSUQqKTsNCit9DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFByaW1pdGl2ZSBkYXRhIHR5cGVzDQorLy8NCisvLyBOT1RFOg0KKy8vICBUeXBlcyBhbHJlYWR5IGRlZmluZWQgaW4gc3RhbmRhcmQgaGVhZGVyIGZpbGVzOg0KKy8vICAgICAgSU5UOA0KKy8vICAgICAgVUlOVDgNCisvLyAgICAgIElOVDE2DQorLy8gICAgICBVSU5UMTYNCisvLyAgICAgIElOVDMyDQorLy8gICAgICBVSU5UMzINCisvLyAgICAgIElOVDY0DQorLy8gICAgICBVSU5UNjQNCisvLw0KKy8vICBBdm9pZCB1c2luZyB0aGUgZm9sbG93aW5nIHR5cGVzOg0KKy8vICAgICAgTE9ORyAtIHVzZSBJTlQNCisvLyAgICAgIFVMT05HIC0gdXNlIFVJTlQNCisvLyAgICAgIERXT1JEIC0gdXNlIFVJTlQzMg0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCit0eXBlZGVmIGZsb2F0IFJFQUw7DQorDQorI2RlZmluZSBSRUFMX01BWCAgICAgICAgICAgIEZMVF9NQVgNCisjZGVmaW5lIFJFQUxfTUlOICAgICAgICAgICAgRkxUX01JTg0KKyNkZWZpbmUgUkVBTF9UT0xFUkFOQ0UgICAgIChGTFRfTUlOICogMTAwKQ0KKyNkZWZpbmUgUkVBTF9FUFNJTE9OICAgICAgICAxLjE5MjA5Mjg5NmUtMDdGICAgICAgICAvKiBGTFRfRVBTSUxPTiAqLw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiB2YXJpb3VzIGludGVybmFsIGNsYXNzZXMNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorY2xhc3MgU2l6ZTsNCitjbGFzcyBTaXplRjsNCitjbGFzcyBQb2ludDsNCitjbGFzcyBQb2ludEY7DQorY2xhc3MgUmVjdDsNCitjbGFzcyBSZWN0RjsNCitjbGFzcyBDaGFyYWN0ZXJSYW5nZTsNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gUmV0dXJuIHZhbHVlcyBmcm9tIGFueSBHREkrIEFQSQ0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitlbnVtIFN0YXR1cw0KK3sNCisgICAgT2sgPSAwLA0KKyAgICBHZW5lcmljRXJyb3IgPSAxLA0KKyAgICBJbnZhbGlkUGFyYW1ldGVyID0gMiwNCisgICAgT3V0T2ZNZW1vcnkgPSAzLA0KKyAgICBPYmplY3RCdXN5ID0gNCwNCisgICAgSW5zdWZmaWNpZW50QnVmZmVyID0gNSwNCisgICAgTm90SW1wbGVtZW50ZWQgPSA2LA0KKyAgICBXaW4zMkVycm9yID0gNywNCisgICAgV3JvbmdTdGF0ZSA9IDgsDQorICAgIEFib3J0ZWQgPSA5LA0KKyNpZmRlZiBEQ1JfVVNFX05FV18xMzU0MjkNCisgICAgRmlsZU5vdEZvdW5kID0gMTAsDQorICAgIFZhbHVlT3ZlcmZsb3cgPSAxMSwNCisgICAgQWNjZXNzRGVuaWVkID0gMTIsDQorICAgIFVua25vd25JbWFnZUZvcm1hdCA9IDEzLA0KKyAgICBGb250RmFtaWx5Tm90Rm91bmQgPSAxNCwNCisgICAgRm9udFN0eWxlTm90Rm91bmQgPSAxNSwNCisgICAgTm90VHJ1ZVR5cGVGb250ID0gMTYsDQorI2Vsc2UNCisgICAgTm90Rm91bmQgPSAxMCwNCisgICAgVmFsdWVPdmVyZmxvdyA9IDExLA0KKyNlbmRpZg0KKyAgICBVbnN1cHBvcnRlZEdkaXBsdXNWZXJzaW9uID0gMTcsDQorICAgIEdkaXBsdXNOb3RJbml0aWFsaXplZA0KKw0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFJlcHJlc2VudHMgYSBkaW1lbnNpb24gaW4gYSAyRCBjb29yZGluYXRlIHN5c3RlbQ0KKy8vICAoZmxvYXRpbmctcG9pbnQgY29vcmRpbmF0ZXMpDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsYXNzIFNpemVGDQorew0KK3B1YmxpYzoNCisNCisgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yDQorICAgIFNpemVGKCkNCisgICAgew0KKyAgICAgICAgV2lkdGggPSBIZWlnaHQgPSAwLjBmOw0KKyAgICB9DQorDQorICAgIFNpemVGKElOIGNvbnN0IFNpemVGJiBzaXplKQ0KKyAgICB7DQorICAgICAgICBXaWR0aCA9IHNpemUuV2lkdGg7DQorICAgICAgICBIZWlnaHQgPSBzaXplLkhlaWdodDsNCisgICAgfQ0KKw0KKyAgICBTaXplRihJTiBSRUFMIHdpZHRoLA0KKyAgICAgICAgICBJTiBSRUFMIGhlaWdodCkNCisgICAgew0KKyAgICAgICAgV2lkdGggPSB3aWR0aDsNCisgICAgICAgIEhlaWdodCA9IGhlaWdodDsNCisgICAgfQ0KKw0KKyAgICBTaXplRiBvcGVyYXRvcisoSU4gY29uc3QgU2l6ZUYmIHN6KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2l6ZUYoV2lkdGggKyBzei5XaWR0aCwNCisgICAgICAgICAgICAgICAgICAgICBIZWlnaHQgKyBzei5IZWlnaHQpOw0KKyAgICB9DQorDQorICAgIFNpemVGIG9wZXJhdG9yLShJTiBjb25zdCBTaXplRiYgc3opIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTaXplRihXaWR0aCAtIHN6LldpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgIEhlaWdodCAtIHN6LkhlaWdodCk7DQorICAgIH0NCisNCisgICAgQk9PTCBFcXVhbHMoSU4gY29uc3QgU2l6ZUYmIHN6KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKFdpZHRoID09IHN6LldpZHRoKSAmJiAoSGVpZ2h0ID09IHN6LkhlaWdodCk7DQorICAgIH0NCisNCisgICAgQk9PTCBFbXB0eSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoV2lkdGggPT0gMC4wZiAmJiBIZWlnaHQgPT0gMC4wZik7DQorICAgIH0NCisNCitwdWJsaWM6DQorDQorICAgIFJFQUwgV2lkdGg7DQorICAgIFJFQUwgSGVpZ2h0Ow0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFJlcHJlc2VudHMgYSBkaW1lbnNpb24gaW4gYSAyRCBjb29yZGluYXRlIHN5c3RlbQ0KKy8vICAoaW50ZWdlciBjb29yZGluYXRlcykNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorY2xhc3MgU2l6ZQ0KK3sNCitwdWJsaWM6DQorDQorICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3Rvcg0KKyAgICBTaXplKCkNCisgICAgew0KKyAgICAgICAgV2lkdGggPSBIZWlnaHQgPSAwOw0KKyAgICB9DQorDQorICAgIFNpemUoSU4gY29uc3QgU2l6ZSYgc2l6ZSkNCisgICAgew0KKyAgICAgICAgV2lkdGggPSBzaXplLldpZHRoOw0KKyAgICAgICAgSGVpZ2h0ID0gc2l6ZS5IZWlnaHQ7DQorICAgIH0NCisNCisgICAgU2l6ZShJTiBJTlQgd2lkdGgsDQorICAgICAgICAgSU4gSU5UIGhlaWdodCkNCisgICAgew0KKyAgICAgICAgV2lkdGggPSB3aWR0aDsNCisgICAgICAgIEhlaWdodCA9IGhlaWdodDsNCisgICAgfQ0KKw0KKyAgICBTaXplIG9wZXJhdG9yKyhJTiBjb25zdCBTaXplJiBzeikgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNpemUoV2lkdGggKyBzei5XaWR0aCwNCisgICAgICAgICAgICAgICAgICAgIEhlaWdodCArIHN6LkhlaWdodCk7DQorICAgIH0NCisNCisgICAgU2l6ZSBvcGVyYXRvci0oSU4gY29uc3QgU2l6ZSYgc3opIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBTaXplKFdpZHRoIC0gc3ouV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICBIZWlnaHQgLSBzei5IZWlnaHQpOw0KKyAgICB9DQorDQorICAgIEJPT0wgRXF1YWxzKElOIGNvbnN0IFNpemUmIHN6KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKFdpZHRoID09IHN6LldpZHRoKSAmJiAoSGVpZ2h0ID09IHN6LkhlaWdodCk7DQorICAgIH0NCisNCisgICAgQk9PTCBFbXB0eSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoV2lkdGggPT0gMCAmJiBIZWlnaHQgPT0gMCk7DQorICAgIH0NCisNCitwdWJsaWM6DQorDQorICAgIElOVCBXaWR0aDsNCisgICAgSU5UIEhlaWdodDsNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBSZXByZXNlbnRzIGEgbG9jYXRpb24gaW4gYSAyRCBjb29yZGluYXRlIHN5c3RlbQ0KKy8vICAoZmxvYXRpbmctcG9pbnQgY29vcmRpbmF0ZXMpDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsYXNzIFBvaW50Rg0KK3sNCitwdWJsaWM6DQorICAgUG9pbnRGKCkNCisgICB7DQorICAgICAgIFggPSBZID0gMC4wZjsNCisgICB9DQorDQorICAgUG9pbnRGKElOIGNvbnN0IFBvaW50RiAmcG9pbnQpDQorICAgew0KKyAgICAgICBYID0gcG9pbnQuWDsNCisgICAgICAgWSA9IHBvaW50Llk7DQorICAgfQ0KKw0KKyAgIFBvaW50RihJTiBjb25zdCBTaXplRiAmc2l6ZSkNCisgICB7DQorICAgICAgIFggPSBzaXplLldpZHRoOw0KKyAgICAgICBZID0gc2l6ZS5IZWlnaHQ7DQorICAgfQ0KKw0KKyAgIFBvaW50RihJTiBSRUFMIHgsDQorICAgICAgICAgIElOIFJFQUwgeSkNCisgICB7DQorICAgICAgIFggPSB4Ow0KKyAgICAgICBZID0geTsNCisgICB9DQorDQorICAgUG9pbnRGIG9wZXJhdG9yKyhJTiBjb25zdCBQb2ludEYmIHBvaW50KSBjb25zdA0KKyAgIHsNCisgICAgICAgcmV0dXJuIFBvaW50RihYICsgcG9pbnQuWCwNCisgICAgICAgICAgICAgICAgICAgICBZICsgcG9pbnQuWSk7DQorICAgfQ0KKw0KKyAgIFBvaW50RiBvcGVyYXRvci0oSU4gY29uc3QgUG9pbnRGJiBwb2ludCkgY29uc3QNCisgICB7DQorICAgICAgIHJldHVybiBQb2ludEYoWCAtIHBvaW50LlgsDQorICAgICAgICAgICAgICAgICAgICAgWSAtIHBvaW50LlkpOw0KKyAgIH0NCisNCisgICBCT09MIEVxdWFscyhJTiBjb25zdCBQb2ludEYmIHBvaW50KQ0KKyAgIHsNCisgICAgICAgcmV0dXJuIChYID09IHBvaW50LlgpICYmIChZID09IHBvaW50LlkpOw0KKyAgIH0NCisNCitwdWJsaWM6DQorDQorICAgIFJFQUwgWDsNCisgICAgUkVBTCBZOw0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFJlcHJlc2VudHMgYSBsb2NhdGlvbiBpbiBhIDJEIGNvb3JkaW5hdGUgc3lzdGVtDQorLy8gIChpbnRlZ2VyIGNvb3JkaW5hdGVzKQ0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitjbGFzcyBQb2ludA0KK3sNCitwdWJsaWM6DQorICAgUG9pbnQoKQ0KKyAgIHsNCisgICAgICAgWCA9IFkgPSAwOw0KKyAgIH0NCisNCisgICBQb2ludChJTiBjb25zdCBQb2ludCAmcG9pbnQpDQorICAgew0KKyAgICAgICBYID0gcG9pbnQuWDsNCisgICAgICAgWSA9IHBvaW50Llk7DQorICAgfQ0KKw0KKyAgIFBvaW50KElOIGNvbnN0IFNpemUgJnNpemUpDQorICAgew0KKyAgICAgICBYID0gc2l6ZS5XaWR0aDsNCisgICAgICAgWSA9IHNpemUuSGVpZ2h0Ow0KKyAgIH0NCisNCisgICBQb2ludChJTiBJTlQgeCwNCisgICAgICAgICBJTiBJTlQgeSkNCisgICB7DQorICAgICAgIFggPSB4Ow0KKyAgICAgICBZID0geTsNCisgICB9DQorDQorICAgUG9pbnQgb3BlcmF0b3IrKElOIGNvbnN0IFBvaW50JiBwb2ludCkgY29uc3QNCisgICB7DQorICAgICAgIHJldHVybiBQb2ludChYICsgcG9pbnQuWCwNCisgICAgICAgICAgICAgICAgICAgIFkgKyBwb2ludC5ZKTsNCisgICB9DQorDQorICAgUG9pbnQgb3BlcmF0b3ItKElOIGNvbnN0IFBvaW50JiBwb2ludCkgY29uc3QNCisgICB7DQorICAgICAgIHJldHVybiBQb2ludChYIC0gcG9pbnQuWCwNCisgICAgICAgICAgICAgICAgICAgIFkgLSBwb2ludC5ZKTsNCisgICB9DQorDQorICAgQk9PTCBFcXVhbHMoSU4gY29uc3QgUG9pbnQmIHBvaW50KQ0KKyAgIHsNCisgICAgICAgcmV0dXJuIChYID09IHBvaW50LlgpICYmIChZID09IHBvaW50LlkpOw0KKyAgIH0NCisNCitwdWJsaWM6DQorDQorICAgIElOVCBYOw0KKyAgICBJTlQgWTsNCit9Ow0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBSZXByZXNlbnRzIGEgcmVjdGFuZ2xlIGluIGEgMkQgY29vcmRpbmF0ZSBzeXN0ZW0NCisvLyAgKGZsb2F0aW5nLXBvaW50IGNvb3JkaW5hdGVzKQ0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitjbGFzcyBSZWN0Rg0KK3sNCitwdWJsaWM6DQorDQorICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3INCisNCisgICAgUmVjdEYoKQ0KKyAgICB7DQorICAgICAgICBYID0gWSA9IFdpZHRoID0gSGVpZ2h0ID0gMC4wZjsNCisgICAgfQ0KKw0KKyAgICBSZWN0RihJTiBSRUFMIHgsDQorICAgICAgICAgIElOIFJFQUwgeSwNCisgICAgICAgICAgSU4gUkVBTCB3aWR0aCwNCisgICAgICAgICAgSU4gUkVBTCBoZWlnaHQpDQorICAgIHsNCisgICAgICAgIFggPSB4Ow0KKyAgICAgICAgWSA9IHk7DQorICAgICAgICBXaWR0aCA9IHdpZHRoOw0KKyAgICAgICAgSGVpZ2h0ID0gaGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIFJlY3RGKElOIGNvbnN0IFBvaW50RiYgbG9jYXRpb24sDQorICAgICAgICAgIElOIGNvbnN0IFNpemVGJiBzaXplKQ0KKyAgICB7DQorICAgICAgICBYID0gbG9jYXRpb24uWDsNCisgICAgICAgIFkgPSBsb2NhdGlvbi5ZOw0KKyAgICAgICAgV2lkdGggPSBzaXplLldpZHRoOw0KKyAgICAgICAgSGVpZ2h0ID0gc2l6ZS5IZWlnaHQ7DQorICAgIH0NCisNCisgICAgUmVjdEYqIENsb25lKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG5ldyBSZWN0RihYLCBZLCBXaWR0aCwgSGVpZ2h0KTsNCisgICAgfQ0KKw0KKyAgICBWT0lEIEdldExvY2F0aW9uKE9VVCBQb2ludEYqIHBvaW50KSBjb25zdA0KKyAgICB7DQorICAgICAgICBwb2ludC0+WCA9IFg7DQorICAgICAgICBwb2ludC0+WSA9IFk7DQorICAgIH0NCisNCisgICAgVk9JRCBHZXRTaXplKE9VVCBTaXplRiogc2l6ZSkgY29uc3QNCisgICAgew0KKyAgICAgICAgc2l6ZS0+V2lkdGggPSBXaWR0aDsNCisgICAgICAgIHNpemUtPkhlaWdodCA9IEhlaWdodDsNCisgICAgfQ0KKw0KKyAgICBWT0lEIEdldEJvdW5kcyhPVVQgUmVjdEYqIHJlY3QpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJlY3QtPlggPSBYOw0KKyAgICAgICAgcmVjdC0+WSA9IFk7DQorICAgICAgICByZWN0LT5XaWR0aCA9IFdpZHRoOw0KKyAgICAgICAgcmVjdC0+SGVpZ2h0ID0gSGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIC8vIFJldHVybiB0aGUgbGVmdCwgdG9wLCByaWdodCwgYW5kIGJvdHRvbQ0KKyAgICAvLyBjb29yZGluYXRlcyBvZiB0aGUgcmVjdGFuZ2xlDQorDQorICAgIFJFQUwgR2V0TGVmdCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBYOw0KKyAgICB9DQorDQorICAgIFJFQUwgR2V0VG9wKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFk7DQorICAgIH0NCisNCisgICAgUkVBTCBHZXRSaWdodCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBYK1dpZHRoOw0KKyAgICB9DQorDQorICAgIFJFQUwgR2V0Qm90dG9tKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFkrSGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIC8vIERldGVybWluZSBpZiB0aGUgcmVjdGFuZ2xlIGlzIGVtcHR5DQorICAgIEJPT0wgSXNFbXB0eUFyZWEoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKFdpZHRoIDw9IFJFQUxfRVBTSUxPTikgfHwgKEhlaWdodCA8PSBSRUFMX0VQU0lMT04pOw0KKyAgICB9DQorDQorICAgIEJPT0wgRXF1YWxzKElOIGNvbnN0IFJlY3RGICYgcmVjdCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFggPT0gcmVjdC5YICYmDQorICAgICAgICAgICAgICAgWSA9PSByZWN0LlkgJiYNCisgICAgICAgICAgICAgICBXaWR0aCA9PSByZWN0LldpZHRoICYmDQorICAgICAgICAgICAgICAgSGVpZ2h0ID09IHJlY3QuSGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIEJPT0wgQ29udGFpbnMoSU4gUkVBTCB4LA0KKyAgICAgICAgICAgICAgICAgIElOIFJFQUwgeSkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHggPj0gWCAmJiB4IDwgWCtXaWR0aCAmJg0KKyAgICAgICAgICAgICAgIHkgPj0gWSAmJiB5IDwgWStIZWlnaHQ7DQorICAgIH0NCisNCisgICAgQk9PTCBDb250YWlucyhJTiBjb25zdCBQb2ludEYmIHB0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gQ29udGFpbnMocHQuWCwgcHQuWSk7DQorICAgIH0NCisNCisgICAgQk9PTCBDb250YWlucyhJTiBjb25zdCBSZWN0RiYgcmVjdCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChYIDw9IHJlY3QuWCkgJiYgKHJlY3QuR2V0UmlnaHQoKSA8PSBHZXRSaWdodCgpKSAmJg0KKyAgICAgICAgICAgICAgIChZIDw9IHJlY3QuWSkgJiYgKHJlY3QuR2V0Qm90dG9tKCkgPD0gR2V0Qm90dG9tKCkpOw0KKyAgICB9DQorDQorICAgIFZPSUQgSW5mbGF0ZShJTiBSRUFMIGR4LA0KKyAgICAgICAgICAgICAgICAgSU4gUkVBTCBkeSkNCisgICAgew0KKyAgICAgICAgWCAtPSBkeDsNCisgICAgICAgIFkgLT0gZHk7DQorICAgICAgICBXaWR0aCArPSAyKmR4Ow0KKyAgICAgICAgSGVpZ2h0ICs9IDIqZHk7DQorICAgIH0NCisNCisgICAgVk9JRCBJbmZsYXRlKElOIGNvbnN0IFBvaW50RiYgcG9pbnQpDQorICAgIHsNCisgICAgICAgIEluZmxhdGUocG9pbnQuWCwgcG9pbnQuWSk7DQorICAgIH0NCisNCisgICAgLy8gSW50ZXJzZWN0IHRoZSBjdXJyZW50IHJlY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIG9iamVjdA0KKw0KKyAgICBCT09MIEludGVyc2VjdChJTiBjb25zdCBSZWN0RiYgcmVjdCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEludGVyc2VjdCgqdGhpcywgKnRoaXMsIHJlY3QpOw0KKyAgICB9DQorDQorICAgIC8vIEludGVyc2VjdCByZWN0IGEgYW5kIGIgYW5kIHNhdmUgdGhlIHJlc3VsdCBpbnRvIGMNCisgICAgLy8gTm90aWNlIHRoYXQgYyBtYXkgYmUgdGhlIHNhbWUgb2JqZWN0IGFzIGEgb3IgYi4NCisNCisgICAgc3RhdGljIEJPT0wgSW50ZXJzZWN0KE9VVCBSZWN0RiYgYywNCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3RGJiBhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdEYmIGIpDQorICAgIHsNCisgICAgICAgIFJFQUwgcmlnaHQgPSBtaW4oYS5HZXRSaWdodCgpLCBiLkdldFJpZ2h0KCkpOw0KKyAgICAgICAgUkVBTCBib3R0b20gPSBtaW4oYS5HZXRCb3R0b20oKSwgYi5HZXRCb3R0b20oKSk7DQorICAgICAgICBSRUFMIGxlZnQgPSBtYXgoYS5HZXRMZWZ0KCksIGIuR2V0TGVmdCgpKTsNCisgICAgICAgIFJFQUwgdG9wID0gbWF4KGEuR2V0VG9wKCksIGIuR2V0VG9wKCkpOw0KKw0KKyAgICAgICAgYy5YID0gbGVmdDsNCisgICAgICAgIGMuWSA9IHRvcDsNCisgICAgICAgIGMuV2lkdGggPSByaWdodCAtIGxlZnQ7DQorICAgICAgICBjLkhlaWdodCA9IGJvdHRvbSAtIHRvcDsNCisgICAgICAgIHJldHVybiAhYy5Jc0VtcHR5QXJlYSgpOw0KKyAgICB9DQorDQorICAgIC8vIERldGVybWluZSBpZiB0aGUgc3BlY2lmaWVkIHJlY3QgaW50ZXJzZWN0cyB3aXRoIHRoZQ0KKyAgICAvLyBjdXJyZW50IHJlY3Qgb2JqZWN0Lg0KKw0KKyAgICBCT09MIEludGVyc2VjdHNXaXRoKElOIGNvbnN0IFJlY3RGJiByZWN0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKEdldExlZnQoKSA8IHJlY3QuR2V0UmlnaHQoKSAmJg0KKyAgICAgICAgICAgICAgICBHZXRUb3AoKSA8IHJlY3QuR2V0VG9wKCkgJiYNCisgICAgICAgICAgICAgICAgR2V0UmlnaHQoKSA+IHJlY3QuR2V0TGVmdCgpICYmDQorICAgICAgICAgICAgICAgIEdldEJvdHRvbSgpID4gcmVjdC5HZXRUb3AoKSk7DQorICAgIH0NCisNCisgICAgc3RhdGljIEJPT0wgVW5pb24oT1VUIFJlY3RGJiBjLA0KKyAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0RiYgYSwNCisgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdEYmIGIpDQorICAgIHsNCisgICAgICAgIFJFQUwgcmlnaHQgPSBtYXgoYS5HZXRSaWdodCgpLCBiLkdldFJpZ2h0KCkpOw0KKyAgICAgICAgUkVBTCBib3R0b20gPSBtYXgoYS5HZXRCb3R0b20oKSwgYi5HZXRCb3R0b20oKSk7DQorICAgICAgICBSRUFMIGxlZnQgPSBtaW4oYS5HZXRMZWZ0KCksIGIuR2V0TGVmdCgpKTsNCisgICAgICAgIFJFQUwgdG9wID0gbWluKGEuR2V0VG9wKCksIGIuR2V0VG9wKCkpOw0KKw0KKyAgICAgICAgYy5YID0gbGVmdDsNCisgICAgICAgIGMuWSA9IHRvcDsNCisgICAgICAgIGMuV2lkdGggPSByaWdodCAtIGxlZnQ7DQorICAgICAgICBjLkhlaWdodCA9IGJvdHRvbSAtIHRvcDsNCisgICAgICAgIHJldHVybiAhYy5Jc0VtcHR5QXJlYSgpOw0KKyAgICB9DQorDQorICAgIFZPSUQgT2Zmc2V0KElOIGNvbnN0IFBvaW50RiYgcG9pbnQpDQorICAgIHsNCisgICAgICAgIE9mZnNldChwb2ludC5YLCBwb2ludC5ZKTsNCisgICAgfQ0KKw0KKyAgICBWT0lEIE9mZnNldChJTiBSRUFMIGR4LA0KKyAgICAgICAgICAgICAgICBJTiBSRUFMIGR5KQ0KKyAgICB7DQorICAgICAgICBYICs9IGR4Ow0KKyAgICAgICAgWSArPSBkeTsNCisgICAgfQ0KKw0KK3B1YmxpYzoNCisNCisgICAgUkVBTCBYOw0KKyAgICBSRUFMIFk7DQorICAgIFJFQUwgV2lkdGg7DQorICAgIFJFQUwgSGVpZ2h0Ow0KK307DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFJlcHJlc2VudHMgYSByZWN0YW5nbGUgaW4gYSAyRCBjb29yZGluYXRlIHN5c3RlbQ0KKy8vICAoaW50ZWdlciBjb29yZGluYXRlcykNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorY2xhc3MgUmVjdA0KK3sNCitwdWJsaWM6DQorDQorICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3INCisNCisgICAgUmVjdCgpDQorICAgIHsNCisgICAgICAgIFggPSBZID0gV2lkdGggPSBIZWlnaHQgPSAwOw0KKyAgICB9DQorDQorICAgIFJlY3QoSU4gSU5UIHgsDQorICAgICAgICAgSU4gSU5UIHksDQorICAgICAgICAgSU4gSU5UIHdpZHRoLA0KKyAgICAgICAgIElOIElOVCBoZWlnaHQpDQorICAgIHsNCisgICAgICAgIFggPSB4Ow0KKyAgICAgICAgWSA9IHk7DQorICAgICAgICBXaWR0aCA9IHdpZHRoOw0KKyAgICAgICAgSGVpZ2h0ID0gaGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIFJlY3QoSU4gY29uc3QgUG9pbnQmIGxvY2F0aW9uLA0KKyAgICAgICAgIElOIGNvbnN0IFNpemUmIHNpemUpDQorICAgIHsNCisgICAgICAgIFggPSBsb2NhdGlvbi5YOw0KKyAgICAgICAgWSA9IGxvY2F0aW9uLlk7DQorICAgICAgICBXaWR0aCA9IHNpemUuV2lkdGg7DQorICAgICAgICBIZWlnaHQgPSBzaXplLkhlaWdodDsNCisgICAgfQ0KKw0KKyAgICBSZWN0KiBDbG9uZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBuZXcgUmVjdChYLCBZLCBXaWR0aCwgSGVpZ2h0KTsNCisgICAgfQ0KKw0KKyAgICBWT0lEIEdldExvY2F0aW9uKE9VVCBQb2ludCogcG9pbnQpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHBvaW50LT5YID0gWDsNCisgICAgICAgIHBvaW50LT5ZID0gWTsNCisgICAgfQ0KKw0KKyAgICBWT0lEIEdldFNpemUoT1VUIFNpemUqIHNpemUpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHNpemUtPldpZHRoID0gV2lkdGg7DQorICAgICAgICBzaXplLT5IZWlnaHQgPSBIZWlnaHQ7DQorICAgIH0NCisNCisgICAgVk9JRCBHZXRCb3VuZHMoT1VUIFJlY3QqIHJlY3QpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJlY3QtPlggPSBYOw0KKyAgICAgICAgcmVjdC0+WSA9IFk7DQorICAgICAgICByZWN0LT5XaWR0aCA9IFdpZHRoOw0KKyAgICAgICAgcmVjdC0+SGVpZ2h0ID0gSGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIC8vIFJldHVybiB0aGUgbGVmdCwgdG9wLCByaWdodCwgYW5kIGJvdHRvbQ0KKyAgICAvLyBjb29yZGluYXRlcyBvZiB0aGUgcmVjdGFuZ2xlDQorDQorICAgIElOVCBHZXRMZWZ0KCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFg7DQorICAgIH0NCisNCisgICAgSU5UIEdldFRvcCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBZOw0KKyAgICB9DQorDQorICAgIElOVCBHZXRSaWdodCgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBYK1dpZHRoOw0KKyAgICB9DQorDQorICAgIElOVCBHZXRCb3R0b20oKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gWStIZWlnaHQ7DQorICAgIH0NCisNCisgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSByZWN0YW5nbGUgaXMgZW1wdHkNCisgICAgQk9PTCBJc0VtcHR5QXJlYSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoV2lkdGggPD0gMCkgfHwgKEhlaWdodCA8PSAwKTsNCisgICAgfQ0KKw0KKyAgICBCT09MIEVxdWFscyhJTiBjb25zdCBSZWN0ICYgcmVjdCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFggPT0gcmVjdC5YICYmDQorICAgICAgICAgICAgICAgWSA9PSByZWN0LlkgJiYNCisgICAgICAgICAgICAgICBXaWR0aCA9PSByZWN0LldpZHRoICYmDQorICAgICAgICAgICAgICAgSGVpZ2h0ID09IHJlY3QuSGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIEJPT0wgQ29udGFpbnMoSU4gSU5UIHgsDQorICAgICAgICAgICAgICAgICAgSU4gSU5UIHkpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiB4ID49IFggJiYgeCA8IFgrV2lkdGggJiYNCisgICAgICAgICAgICAgICB5ID49IFkgJiYgeSA8IFkrSGVpZ2h0Ow0KKyAgICB9DQorDQorICAgIEJPT0wgQ29udGFpbnMoSU4gY29uc3QgUG9pbnQmIHB0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gQ29udGFpbnMocHQuWCwgcHQuWSk7DQorICAgIH0NCisNCisgICAgQk9PTCBDb250YWlucyhJTiBSZWN0JiByZWN0KSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gKFggPD0gcmVjdC5YKSAmJiAocmVjdC5HZXRSaWdodCgpIDw9IEdldFJpZ2h0KCkpICYmDQorICAgICAgICAgICAgICAgKFkgPD0gcmVjdC5ZKSAmJiAocmVjdC5HZXRCb3R0b20oKSA8PSBHZXRCb3R0b20oKSk7DQorICAgIH0NCisNCisgICAgVk9JRCBJbmZsYXRlKElOIElOVCBkeCwNCisgICAgICAgICAgICAgICAgIElOIElOVCBkeSkNCisgICAgew0KKyAgICAgICAgWCAtPSBkeDsNCisgICAgICAgIFkgLT0gZHk7DQorICAgICAgICBXaWR0aCArPSAyKmR4Ow0KKyAgICAgICAgSGVpZ2h0ICs9IDIqZHk7DQorICAgIH0NCisNCisgICAgVk9JRCBJbmZsYXRlKElOIGNvbnN0IFBvaW50JiBwb2ludCkNCisgICAgew0KKyAgICAgICAgSW5mbGF0ZShwb2ludC5YLCBwb2ludC5ZKTsNCisgICAgfQ0KKw0KKyAgICAvLyBJbnRlcnNlY3QgdGhlIGN1cnJlbnQgcmVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgb2JqZWN0DQorDQorICAgIEJPT0wgSW50ZXJzZWN0KElOIGNvbnN0IFJlY3QmIHJlY3QpDQorICAgIHsNCisgICAgICAgIHJldHVybiBJbnRlcnNlY3QoKnRoaXMsICp0aGlzLCByZWN0KTsNCisgICAgfQ0KKw0KKyAgICAvLyBJbnRlcnNlY3QgcmVjdCBhIGFuZCBiIGFuZCBzYXZlIHRoZSByZXN1bHQgaW50byBjDQorICAgIC8vIE5vdGljZSB0aGF0IGMgbWF5IGJlIHRoZSBzYW1lIG9iamVjdCBhcyBhIG9yIGIuDQorDQorICAgIHN0YXRpYyBCT09MIEludGVyc2VjdChPVVQgUmVjdCYgYywNCisgICAgICAgICAgICAgICAgICAgICAgICAgIElOIGNvbnN0IFJlY3QmIGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBSZWN0JiBiKQ0KKyAgICB7DQorICAgICAgICBJTlQgcmlnaHQgPSBtaW4oYS5HZXRSaWdodCgpLCBiLkdldFJpZ2h0KCkpOw0KKyAgICAgICAgSU5UIGJvdHRvbSA9IG1pbihhLkdldEJvdHRvbSgpLCBiLkdldEJvdHRvbSgpKTsNCisgICAgICAgIElOVCBsZWZ0ID0gbWF4KGEuR2V0TGVmdCgpLCBiLkdldExlZnQoKSk7DQorICAgICAgICBJTlQgdG9wID0gbWF4KGEuR2V0VG9wKCksIGIuR2V0VG9wKCkpOw0KKw0KKyAgICAgICAgYy5YID0gbGVmdDsNCisgICAgICAgIGMuWSA9IHRvcDsNCisgICAgICAgIGMuV2lkdGggPSByaWdodCAtIGxlZnQ7DQorICAgICAgICBjLkhlaWdodCA9IGJvdHRvbSAtIHRvcDsNCisgICAgICAgIHJldHVybiAhYy5Jc0VtcHR5QXJlYSgpOw0KKyAgICB9DQorDQorICAgIC8vIERldGVybWluZSBpZiB0aGUgc3BlY2lmaWVkIHJlY3QgaW50ZXJzZWN0cyB3aXRoIHRoZQ0KKyAgICAvLyBjdXJyZW50IHJlY3Qgb2JqZWN0Lg0KKw0KKyAgICBCT09MIEludGVyc2VjdHNXaXRoKElOIGNvbnN0IFJlY3QmIHJlY3QpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiAoR2V0TGVmdCgpIDwgcmVjdC5HZXRSaWdodCgpICYmDQorICAgICAgICAgICAgICAgIEdldFRvcCgpIDwgcmVjdC5HZXRUb3AoKSAmJg0KKyAgICAgICAgICAgICAgICBHZXRSaWdodCgpID4gcmVjdC5HZXRMZWZ0KCkgJiYNCisgICAgICAgICAgICAgICAgR2V0Qm90dG9tKCkgPiByZWN0LkdldFRvcCgpKTsNCisgICAgfQ0KKw0KKyAgICBzdGF0aWMgQk9PTCBVbmlvbihPVVQgUmVjdCYgYywNCisgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdCYgYSwNCisgICAgICAgICAgICAgICAgICAgICAgSU4gY29uc3QgUmVjdCYgYikNCisgICAgew0KKyAgICAgICAgSU5UIHJpZ2h0ID0gbWF4KGEuR2V0UmlnaHQoKSwgYi5HZXRSaWdodCgpKTsNCisgICAgICAgIElOVCBib3R0b20gPSBtYXgoYS5HZXRCb3R0b20oKSwgYi5HZXRCb3R0b20oKSk7DQorICAgICAgICBJTlQgbGVmdCA9IG1pbihhLkdldExlZnQoKSwgYi5HZXRMZWZ0KCkpOw0KKyAgICAgICAgSU5UIHRvcCA9IG1pbihhLkdldFRvcCgpLCBiLkdldFRvcCgpKTsNCisNCisgICAgICAgIGMuWCA9IGxlZnQ7DQorICAgICAgICBjLlkgPSB0b3A7DQorICAgICAgICBjLldpZHRoID0gcmlnaHQgLSBsZWZ0Ow0KKyAgICAgICAgYy5IZWlnaHQgPSBib3R0b20gLSB0b3A7DQorICAgICAgICByZXR1cm4gIWMuSXNFbXB0eUFyZWEoKTsNCisgICAgfQ0KKw0KKyAgICBWT0lEIE9mZnNldChJTiBjb25zdCBQb2ludCYgcG9pbnQpDQorICAgIHsNCisgICAgICAgIE9mZnNldChwb2ludC5YLCBwb2ludC5ZKTsNCisgICAgfQ0KKw0KKyAgICBWT0lEIE9mZnNldChJTiBJTlQgZHgsDQorICAgICAgICAgICAgICAgIElOIElOVCBkeSkNCisgICAgew0KKyAgICAgICAgWCArPSBkeDsNCisgICAgICAgIFkgKz0gZHk7DQorICAgIH0NCisNCitwdWJsaWM6DQorDQorICAgIElOVCBYOw0KKyAgICBJTlQgWTsNCisgICAgSU5UIFdpZHRoOw0KKyAgICBJTlQgSGVpZ2h0Ow0KK307DQorDQorLy8gQSB1c2VyIG11c3QgbWFuZ2UgbWVtb3J5IGZvciBQYXRoRGF0YS4NCisNCitjbGFzcyBQYXRoRGF0YQ0KK3sNCitwdWJsaWM6DQorICAgIFBhdGhEYXRhKCkNCisgICAgew0KKyAgICAgICAgQ291bnQgPSAwOw0KKyAgICAgICAgUG9pbnRzID0gTlVMTDsNCisgICAgICAgIFR5cGVzID0gTlVMTDsNCisgICAgfQ0KKw0KKyAgICB+UGF0aERhdGEoKQ0KKyAgICB7DQorICAgICAgICBpZiAoUG9pbnRzICE9IE5VTEwpDQorICAgICAgICB7DQorICAgICAgICAgICAgZGVsZXRlIFBvaW50czsNCisgICAgICAgIH0NCisNCisgICAgICAgIGlmIChUeXBlcyAhPSBOVUxMKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGRlbGV0ZSBUeXBlczsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyNpZmRlZiBEQ1JfVVNFX05FV18yNTA5MzINCisNCitwcml2YXRlOg0KKyAgICBQYXRoRGF0YShjb25zdCBQYXRoRGF0YSAmKTsNCisgICAgUGF0aERhdGEmIG9wZXJhdG9yPShjb25zdCBQYXRoRGF0YSAmKTsNCisNCisjZW5kaWYNCisNCitwdWJsaWM6DQorICAgIElOVCBDb3VudDsNCisgICAgUG9pbnRGKiBQb2ludHM7DQorICAgIEJZVEUqIFR5cGVzOw0KK307DQorDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIHRleHQgY2hhcmFjdGVyIHJhbmdlDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsYXNzIENoYXJhY3RlclJhbmdlDQorew0KK3B1YmxpYzoNCisgICAgQ2hhcmFjdGVyUmFuZ2UoDQorICAgICAgICBJTlQgZmlyc3QsDQorICAgICAgICBJTlQgbGVuZ3RoDQorICAgICkgOg0KKyAgICAgICAgRmlyc3QgICAoZmlyc3QpLA0KKyAgICAgICAgTGVuZ3RoICAobGVuZ3RoKQ0KKyAgICB7fQ0KKw0KKyAgICBDaGFyYWN0ZXJSYW5nZSgpIDogRmlyc3QoMCksIExlbmd0aCgwKQ0KKyAgICB7fQ0KKw0KKyAgICBDaGFyYWN0ZXJSYW5nZSAmIG9wZXJhdG9yID0gKGNvbnN0IENoYXJhY3RlclJhbmdlICZyaHMpDQorICAgIHsNCisgICAgICAgIEZpcnN0ICA9IHJocy5GaXJzdDsNCisgICAgICAgIExlbmd0aCA9IHJocy5MZW5ndGg7DQorICAgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisNCisgICAgSU5UIEZpcnN0Ow0KKyAgICBJTlQgTGVuZ3RoOw0KK307DQorDQorI2VuZGlmIC8vICFfR0RJUExVU1RZUEVTX0hQUA0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNpbWFnZUF0dHJpYnV0ZXMuaCBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaVBsdXNpbWFnZUF0dHJpYnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTUxNDc3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1c2ltYWdlQXR0cmlidXRlcy5oCkBAIC0wLDAgKzEsMzk3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcDQorKg0KKyogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAsIE1pY3Jvc29mdCBDb3JwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisqDQorKiBNb2R1bGUgTmFtZToNCisqDQorKiAgIEltYWdlIEF0dHJpYnV0ZXMNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIENsYXNzIGZvciBjb2xvciBhZGp1c3RtZW50IG9iamVjdCBwYXNzZWQgdG8gR3JhcGhpY3MuRHJhd0ltYWdlDQorKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9HRElQTFVTSU1BR0VBVFRSSUJVVEVTX0gNCisjZGVmaW5lIF9HRElQTFVTSU1BR0VBVFRSSUJVVEVTX0gNCisNCitjbGFzcyBHcEltYWdlQXR0cmlidXRlczsNCisNCisvLyBUaGVyZSBhcmUgNSBwb3NzaWJsZSBzZXRzIG9mIGNvbG9yIGFkanVzdG1lbnRzOg0KKy8vICAgICAgICAgIENvbG9yQWRqdXN0RGVmYXVsdCwNCisvLyAgICAgICAgICBDb2xvckFkanVzdEJpdG1hcCwNCisvLyAgICAgICAgICBDb2xvckFkanVzdEJydXNoLA0KKy8vICAgICAgICAgIENvbG9yQWRqdXN0UGVuLA0KKy8vICAgICAgICAgIENvbG9yQWRqdXN0VGV4dCwNCisNCisvLyBCaXRtYXBzLCBCcnVzaGVzLCBQZW5zLCBhbmQgVGV4dCB3aWxsIGFsbCB1c2UgYW55IGNvbG9yIGFkanVzdG1lbnRzDQorLy8gdGhhdCBoYXZlIGJlZW4gc2V0IGludG8gdGhlIGRlZmF1bHQgSW1hZ2VBdHRyaWJ1dGVzIHVudGlsIHRoZWlyIG93bg0KKy8vIGNvbG9yIGFkanVzdG1lbnRzIGhhdmUgYmVlbiBzZXQuICBTbyBhcyBzb29uIGFzIGFueSAiU2V0IiBtZXRob2QgaXMNCisvLyBjYWxsZWQgZm9yIEJpdG1hcHMsIEJydXNoZXMsIFBlbnMsIG9yIFRleHQsIHRoZW4gdGhleSBzdGFydCBmcm9tDQorLy8gc2NyYXRjaCB3aXRoIG9ubHkgdGhlIGNvbG9yIGFkanVzdG1lbnRzIHRoYXQgaGF2ZSBiZWVuIHNldCBmb3IgdGhlbS4NCisvLyBDYWxsaW5nIFJlc2V0IHJlbW92ZXMgYW55IGluZGl2aWR1YWwgY29sb3IgYWRqdXN0bWVudHMgZm9yIGEgdHlwZQ0KKy8vIGFuZCBtYWtlcyBpdCByZXZlcnQgYmFjayB0byB1c2luZyBhbGwgdGhlIGRlZmF1bHQgY29sb3IgYWRqdXN0bWVudHMNCisvLyAoaWYgYW55KS4gIFRoZSBTZXRUb0lkZW50aXR5IG1ldGhvZCBpcyBhIHdheSB0byBmb3JjZSBhIHR5cGUgdG8NCisvLyBoYXZlIG5vIGNvbG9yIGFkanVzdG1lbnRzIGF0IGFsbCwgcmVnYXJkbGVzcyBvZiB3aGF0IHByZXZpb3VzIGFkanVzdG1lbnRzDQorLy8gaGF2ZSBiZWVuIHNldCBmb3IgdGhlIGRlZmF1bHRzIG9yIGZvciB0aGF0IHR5cGUuDQorDQorY2xhc3MgSW1hZ2VBdHRyaWJ1dGVzIDogcHVibGljIEdkaXBsdXNCYXNlDQorew0KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3M7DQorICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJlQnJ1c2g7DQorDQorcHVibGljOg0KKw0KKyAgICBJbWFnZUF0dHJpYnV0ZXMoKQ0KKyAgICB7DQorICAgICAgICBuYXRpdmVJbWFnZUF0dHIgPSBOVUxMOw0KKyAgICAgICAgbGFzdFJlc3VsdCA9IERsbEV4cG9ydHM6OkdkaXBDcmVhdGVJbWFnZUF0dHJpYnV0ZXMoJm5hdGl2ZUltYWdlQXR0cik7DQorICAgIH0NCisNCisgICAgfkltYWdlQXR0cmlidXRlcygpDQorICAgIHsNCisgICAgICAgIERsbEV4cG9ydHM6OkdkaXBEaXNwb3NlSW1hZ2VBdHRyaWJ1dGVzKG5hdGl2ZUltYWdlQXR0cik7DQorICAgIH0NCisNCisgICAgSW1hZ2VBdHRyaWJ1dGVzKiBDbG9uZSgpIGNvbnN0DQorICAgIHsNCisgICAgICAgIEdwSW1hZ2VBdHRyaWJ1dGVzKiBjbG9uZTsNCisNCisgICAgICAgIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwQ2xvbmVJbWFnZUF0dHJpYnV0ZXMoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVJbWFnZUF0dHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xvbmUpKTsNCisNCisgICAgICAgIHJldHVybiBuZXcgSW1hZ2VBdHRyaWJ1dGVzKGNsb25lLCBsYXN0UmVzdWx0KTsNCisgICAgfQ0KKw0KKyAgICAvLyBTZXQgdG8gaWRlbnRpdHksIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgZGVmYXVsdCBjb2xvciBhZGp1c3RtZW50IGlzLg0KKyAgICBTdGF0dXMNCisgICAgU2V0VG9JZGVudGl0eSgNCisgICAgICAgIElOIENvbG9yQWRqdXN0VHlwZSB0eXBlID0gQ29sb3JBZGp1c3RUeXBlRGVmYXVsdA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRJbWFnZUF0dHJpYnV0ZXNUb0lkZW50aXR5KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkpOw0KKyAgICB9DQorDQorICAgIC8vIFJlbW92ZSBhbnkgaW5kaXZpZHVhbCBjb2xvciBhZGp1c3RtZW50cywgYW5kIGdvIGJhY2sgdG8gdXNpbmcgdGhlIGRlZmF1bHQNCisgICAgU3RhdHVzDQorICAgIFJlc2V0KA0KKyAgICAgICAgSU4gQ29sb3JBZGp1c3RUeXBlIHR5cGUgPSBDb2xvckFkanVzdFR5cGVEZWZhdWx0DQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFJlc2V0SW1hZ2VBdHRyaWJ1dGVzKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cw0KKyAgICBTZXRDb2xvck1hdHJpeCgNCisgICAgICAgIElOIGNvbnN0IENvbG9yTWF0cml4ICpjb2xvck1hdHJpeCwNCisgICAgICAgIElOIENvbG9yTWF0cml4RmxhZ3MgbW9kZSA9IENvbG9yTWF0cml4RmxhZ3NEZWZhdWx0LA0KKyAgICAgICAgSU4gQ29sb3JBZGp1c3RUeXBlIHR5cGUgPSBDb2xvckFkanVzdFR5cGVEZWZhdWx0DQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEltYWdlQXR0cmlidXRlc0NvbG9yTWF0cml4KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvck1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIENsZWFyQ29sb3JNYXRyaXgoDQorICAgICAgICBJTiBDb2xvckFkanVzdFR5cGUgdHlwZSA9IENvbG9yQWRqdXN0VHlwZURlZmF1bHQNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzQ29sb3JNYXRyaXgoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVJbWFnZUF0dHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yTWF0cml4RmxhZ3NEZWZhdWx0KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzDQorICAgIFNldENvbG9yTWF0cmljZXMoDQorICAgICAgICBJTiBjb25zdCBDb2xvck1hdHJpeCAqY29sb3JNYXRyaXgsDQorICAgICAgICBJTiBjb25zdCBDb2xvck1hdHJpeCAqZ3JheU1hdHJpeCwNCisgICAgICAgIElOIENvbG9yTWF0cml4RmxhZ3MgbW9kZSA9IENvbG9yTWF0cml4RmxhZ3NEZWZhdWx0LA0KKyAgICAgICAgSU4gQ29sb3JBZGp1c3RUeXBlIHR5cGUgPSBDb2xvckFkanVzdFR5cGVEZWZhdWx0DQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEltYWdlQXR0cmlidXRlc0NvbG9yTWF0cml4KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvck1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXlNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIENsZWFyQ29sb3JNYXRyaWNlcygNCisgICAgICAgIElOIENvbG9yQWRqdXN0VHlwZSB0eXBlID0gQ29sb3JBZGp1c3RUeXBlRGVmYXVsdA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRJbWFnZUF0dHJpYnV0ZXNDb2xvck1hdHJpeCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUltYWdlQXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JNYXRyaXhGbGFnc0RlZmF1bHQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0VGhyZXNob2xkKA0KKyAgICAgICAgSU4gUkVBTCB0aHJlc2hvbGQsDQorICAgICAgICBJTiBDb2xvckFkanVzdFR5cGUgdHlwZSA9IENvbG9yQWRqdXN0VHlwZURlZmF1bHQNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzVGhyZXNob2xkKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQ2xlYXJUaHJlc2hvbGQoDQorICAgICAgICBJTiBDb2xvckFkanVzdFR5cGUgdHlwZSA9IENvbG9yQWRqdXN0VHlwZURlZmF1bHQNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzVGhyZXNob2xkKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldEdhbW1hKA0KKyAgICAgICAgSU4gUkVBTCBnYW1tYSwNCisgICAgICAgIElOIENvbG9yQWRqdXN0VHlwZSB0eXBlID0gQ29sb3JBZGp1c3RUeXBlRGVmYXVsdA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRJbWFnZUF0dHJpYnV0ZXNHYW1tYSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUltYWdlQXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FtbWEpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQ2xlYXJHYW1tYSgNCisgICAgICAgIElOIENvbG9yQWRqdXN0VHlwZSB0eXBlID0gQ29sb3JBZGp1c3RUeXBlRGVmYXVsdA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRJbWFnZUF0dHJpYnV0ZXNHYW1tYSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUltYWdlQXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXROb09wKA0KKyAgICAgICAgSU4gQ29sb3JBZGp1c3RUeXBlIHR5cGUgPSBDb2xvckFkanVzdFR5cGVEZWZhdWx0DQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEltYWdlQXR0cmlidXRlc05vT3AoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVJbWFnZUF0dHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBDbGVhck5vT3AoDQorICAgICAgICBJTiBDb2xvckFkanVzdFR5cGUgdHlwZSA9IENvbG9yQWRqdXN0VHlwZURlZmF1bHQNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzTm9PcCgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUltYWdlQXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRDb2xvcktleSgNCisgICAgICAgIElOIGNvbnN0IENvbG9yJiBjb2xvckxvdywgDQorICAgICAgICBJTiBjb25zdCBDb2xvciYgY29sb3JIaWdoLA0KKyAgICAgICAgSU4gQ29sb3JBZGp1c3RUeXBlIHR5cGUgPSBDb2xvckFkanVzdFR5cGVEZWZhdWx0DQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEltYWdlQXR0cmlidXRlc0NvbG9yS2V5cygNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUltYWdlQXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb3cuR2V0VmFsdWUoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ySGlnaC5HZXRWYWx1ZSgpKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIENsZWFyQ29sb3JLZXkoDQorICAgICAgICBJTiBDb2xvckFkanVzdFR5cGUgdHlwZSA9IENvbG9yQWRqdXN0VHlwZURlZmF1bHQNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzQ29sb3JLZXlzKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0T3V0cHV0Q2hhbm5lbCgNCisgICAgICAgIElOIENvbG9yQ2hhbm5lbEZsYWdzIGNoYW5uZWxGbGFncywNCisgICAgICAgIElOIENvbG9yQWRqdXN0VHlwZSB0eXBlID0gQ29sb3JBZGp1c3RUeXBlRGVmYXVsdA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRJbWFnZUF0dHJpYnV0ZXNPdXRwdXRDaGFubmVsKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsRmxhZ3MpKTsNCisgICAgfQ0KKyAgICANCisgICAgU3RhdHVzIENsZWFyT3V0cHV0Q2hhbm5lbCgNCisgICAgICAgIElOIENvbG9yQWRqdXN0VHlwZSB0eXBlID0gQ29sb3JBZGp1c3RUeXBlRGVmYXVsdA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRJbWFnZUF0dHJpYnV0ZXNPdXRwdXRDaGFubmVsKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JDaGFubmVsRmxhZ3NMYXN0KSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIFNldE91dHB1dENoYW5uZWxDb2xvclByb2ZpbGUoDQorICAgICAgICBJTiBjb25zdCBXQ0hBUiAqY29sb3JQcm9maWxlRmlsZW5hbWUsDQorICAgICAgICBJTiBDb2xvckFkanVzdFR5cGUgdHlwZSA9IENvbG9yQWRqdXN0VHlwZURlZmF1bHQNCisgICAgICAgICkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFNldFN0YXR1cyhEbGxFeHBvcnRzOjpHZGlwU2V0SW1hZ2VBdHRyaWJ1dGVzT3V0cHV0Q2hhbm5lbENvbG9yUHJvZmlsZSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUltYWdlQXR0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JQcm9maWxlRmlsZW5hbWUpKTsNCisgICAgfQ0KKyAgICANCisgICAgU3RhdHVzIENsZWFyT3V0cHV0Q2hhbm5lbENvbG9yUHJvZmlsZSgNCisgICAgICAgIElOIENvbG9yQWRqdXN0VHlwZSB0eXBlID0gQ29sb3JBZGp1c3RUeXBlRGVmYXVsdA0KKyAgICAgICAgKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRJbWFnZUF0dHJpYnV0ZXNPdXRwdXRDaGFubmVsQ29sb3JQcm9maWxlKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW1hZ2VBdHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOw0KKyAgICB9DQorICAgIA0KKyAgICBTdGF0dXMgU2V0UmVtYXBUYWJsZSgNCisgICAgICAgIElOIFVJTlQgbWFwU2l6ZSwgDQorICAgICAgICBJTiBjb25zdCBDb2xvck1hcCAqbWFwLA0KKyAgICAgICAgSU4gQ29sb3JBZGp1c3RUeXBlIHR5cGUgPSBDb2xvckFkanVzdFR5cGVEZWZhdWx0DQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEltYWdlQXR0cmlidXRlc1JlbWFwVGFibGUoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVJbWFnZUF0dHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFNpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXApKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQ2xlYXJSZW1hcFRhYmxlKA0KKyAgICAgICAgSU4gQ29sb3JBZGp1c3RUeXBlIHR5cGUgPSBDb2xvckFkanVzdFR5cGVEZWZhdWx0DQorICAgICAgICApDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcFNldEltYWdlQXR0cmlidXRlc1JlbWFwVGFibGUoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVJbWFnZUF0dHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOw0KKyAgICB9DQorDQorICAgIFN0YXR1cyBTZXRCcnVzaFJlbWFwVGFibGUoSU4gVUlOVCBtYXBTaXplLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBDb2xvck1hcCAqbWFwKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gdGhpcy0+U2V0UmVtYXBUYWJsZShtYXBTaXplLCBtYXAsIENvbG9yQWRqdXN0VHlwZUJydXNoKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgQ2xlYXJCcnVzaFJlbWFwVGFibGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gdGhpcy0+Q2xlYXJSZW1hcFRhYmxlKENvbG9yQWRqdXN0VHlwZUJydXNoKTsNCisgICAgfQ0KKw0KKyAgICBTdGF0dXMgU2V0V3JhcE1vZGUoSU4gV3JhcE1vZGUgd3JhcCwgDQorICAgICAgICAgICAgICAgICAgICAgICBJTiBjb25zdCBDb2xvciYgY29sb3IgPSBDb2xvcigpLCANCisgICAgICAgICAgICAgICAgICAgICAgIElOIEJPT0wgY2xhbXAgPSBGQUxTRSkgDQorICAgIHsNCisgICAgICAgIEFSR0IgYXJnYiA9IGNvbG9yLkdldFZhbHVlKCk7DQorDQorICAgICAgICByZXR1cm4gU2V0U3RhdHVzKERsbEV4cG9ydHM6OkdkaXBTZXRJbWFnZUF0dHJpYnV0ZXNXcmFwTW9kZSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVJbWFnZUF0dHIsIHdyYXAsIGFyZ2IsIGNsYW1wKSk7DQorICAgIH0NCisNCisgICAgI2lmbmRlZiBEQ1JfVVNFX05FV18xNDUxMzkNCisgICAgU3RhdHVzIFNldElDTU1vZGUoSU4gQk9PTCBvbikNCisgICAgew0KKyAgICAgICAgb247DQorICAgICAgICAvLyBUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZC4NCisgICAgICAgIC8vIFRoZSBzdXBwb3J0ZWQgbWV0aG9kIGZvciBkb2luZyBJQ00gY29udmVyc2lvbiBmcm9tIHRoZSBlbWJlZGRlZCANCisgICAgICAgIC8vIElDQyBwcm9maWxlIGlzIHRvIHVzZSB0aGUgQml0bWFwIGNvbnN0cnVjdG9yIGZyb20gYSBmaWxlIG9yIHN0cmVhbQ0KKyAgICAgICAgLy8gYW5kIHNwZWNpZnkgVFJVRSBmb3IgdGhlIHVzZUljbSBwYXJhbWV0ZXIuIFRoaXMgd2lsbCBjYXVzZSB0aGUgDQorICAgICAgICAvLyBpbWFnZSB0byBiZSBJQ00gY29udmVydGVkIHdoZW4gaXQncyBsb2FkZWQgZnJvbSB0aGUgZmlsZS9zdHJlYW0NCisgICAgICAgIC8vIGlmIHRoZSBwcm9maWxlIGV4aXN0cy4NCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoTm90SW1wbGVtZW50ZWQpOw0KKy8vICAgICAgICAgIERsbEV4cG9ydHM6OkdkaXBTZXRJbWFnZUF0dHJpYnV0ZXNJQ01Nb2RlKG5hdGl2ZUltYWdlQXR0ciwgb24pDQorICAgIH0NCisgICAgI2VuZGlmDQorDQorICAgIC8vIFRoZSBmbGFncyBvZiB0aGUgcGFsZXR0ZSBhcmUgaWdub3JlZC4NCisgICAgU3RhdHVzIEdldEFkanVzdGVkUGFsZXR0ZShJTiBPVVQgQ29sb3JQYWxldHRlKiBjb2xvclBhbGV0dGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU4gQ29sb3JBZGp1c3RUeXBlIGNvbG9yQWRqdXN0VHlwZSkgY29uc3QgDQorICAgIHsNCisgICAgICAgIHJldHVybiBTZXRTdGF0dXMoRGxsRXhwb3J0czo6R2RpcEdldEltYWdlQXR0cmlidXRlc0FkanVzdGVkUGFsZXR0ZSgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVJbWFnZUF0dHIsIGNvbG9yUGFsZXR0ZSwgY29sb3JBZGp1c3RUeXBlKSk7DQorICAgIH0NCisNCisgICAgU3RhdHVzIEdldExhc3RTdGF0dXMoKSBjb25zdA0KKyAgICB7DQorICAgICAgICBTdGF0dXMgbGFzdFN0YXR1cyA9IGxhc3RSZXN1bHQ7DQorICAgICAgICBsYXN0UmVzdWx0ID0gT2s7DQorICAgIA0KKyAgICAgICAgcmV0dXJuIGxhc3RTdGF0dXM7DQorICAgIH0NCisgICAgDQorI2lmZGVmIERDUl9VU0VfTkVXXzI1MDkzMg0KKw0KK3ByaXZhdGU6DQorICAgIEltYWdlQXR0cmlidXRlcyhjb25zdCBJbWFnZUF0dHJpYnV0ZXMgJik7DQorICAgIEltYWdlQXR0cmlidXRlcyYgb3BlcmF0b3I9KGNvbnN0IEltYWdlQXR0cmlidXRlcyAmKTsNCisNCisjZW5kaWYNCisNCitwcm90ZWN0ZWQ6DQorICAgIEltYWdlQXR0cmlidXRlcyhHcEltYWdlQXR0cmlidXRlcyogaW1hZ2VBdHRyLCBTdGF0dXMgc3RhdHVzKQ0KKyAgICB7DQorICAgICAgICBTZXROYXRpdmVJbWFnZUF0dHIoaW1hZ2VBdHRyKTsNCisgICAgICAgIGxhc3RSZXN1bHQgPSBzdGF0dXM7DQorICAgIH0NCisNCisgICAgVk9JRCBTZXROYXRpdmVJbWFnZUF0dHIoR3BJbWFnZUF0dHJpYnV0ZXMqIG5hdGl2ZUltYWdlQXR0cikNCisgICAgew0KKyAgICAgICAgdGhpcy0+bmF0aXZlSW1hZ2VBdHRyID0gbmF0aXZlSW1hZ2VBdHRyOw0KKyAgICB9DQorICAgIA0KKyAgICBTdGF0dXMgU2V0U3RhdHVzKFN0YXR1cyBzdGF0dXMpIGNvbnN0DQorICAgIHsNCisgICAgICAgIGlmIChzdGF0dXMgIT0gT2spDQorICAgICAgICAgICAgcmV0dXJuIChsYXN0UmVzdWx0ID0gc3RhdHVzKTsNCisgICAgICAgIGVsc2UgDQorICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCisgICAgfQ0KKw0KK3Byb3RlY3RlZDoNCisgICAgR3BJbWFnZUF0dHJpYnV0ZXMqIG5hdGl2ZUltYWdlQXR0cjsNCisgICAgbXV0YWJsZSBTdGF0dXMgbGFzdFJlc3VsdDsNCit9Ow0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL0dkaXBsdXNJbml0LmggYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlwbHVzSW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMjBmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9HZGlwbHVzSW5pdC5oCkBAIC0wLDAgKzEsMTA0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiBDb3B5cmlnaHQgKGMpIDIwMDAgTWljcm9zb2Z0IENvcnBvcmF0aW9uDQorKg0KKyogTW9kdWxlIE5hbWU6DQorKg0KKyogICBHZGlwbHVzIGluaXQNCisqDQorKiBBYnN0cmFjdDoNCisqDQorKiAgIEdESSsgc3RhcnR1cC9zaHV0ZG93biBBUEkncw0KKyoNCisqIENyZWF0ZWQ6DQorKg0KKyogICAwOS8wMi8yMDAwIGFnb2RmcmV5DQorKiAgICAgIENyZWF0ZWQgaXQuDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0dESVBMVVNJTklUX0gNCisjZGVmaW5lIF9HRElQTFVTSU5JVF9IDQorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisjaWYgX0ZYX0NPTVBJTEVSXyA9PSBfRlhfVkM2Xw0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBVTE9OR19QVFIsICpQVUxPTkdfUFRSOyAgICAvL2pvaG5zb24gYWRkIGhlcmUuDQorI2VuZGlmDQorLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisNCisvLyBVc2VkIGZvciBkZWJ1ZyBldmVudCBub3RpZmljYXRpb24gKGRlYnVnIGJ1aWxkcyBvbmx5KQ0KKw0KK2VudW0gRGVidWdFdmVudExldmVsDQorew0KKyAgICBEZWJ1Z0V2ZW50TGV2ZWxGYXRhbCwNCisgICAgRGVidWdFdmVudExldmVsV2FybmluZw0KK307DQorDQorLy8gQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBHREkrIGNhbiBjYWxsLCBvbiBkZWJ1ZyBidWlsZHMsIGZvciBhc3NlcnRpb25zDQorLy8gYW5kIHdhcm5pbmdzLg0KKw0KK3R5cGVkZWYgVk9JRCAoV0lOQVBJICpEZWJ1Z0V2ZW50UHJvYykoRGVidWdFdmVudExldmVsIGxldmVsLCBDSEFSICptZXNzYWdlKTsNCisNCisvLyBOb3RpZmljYXRpb24gZnVuY3Rpb25zIHdoaWNoIHRoZSB1c2VyIG11c3QgY2FsbCBhcHByb3ByaWF0ZWx5IGlmDQorLy8gIlN1cHByZXNzQmFja2dyb3VuZFRocmVhZCIgKGJlbG93KSBpcyBzZXQuDQorDQordHlwZWRlZiBTdGF0dXMgKFdJTkFQSSAqTm90aWZpY2F0aW9uSG9va1Byb2MpKE9VVCBVTE9OR19QVFIgKnRva2VuKTsNCit0eXBlZGVmIFZPSUQgKFdJTkFQSSAqTm90aWZpY2F0aW9uVW5ob29rUHJvYykoVUxPTkdfUFRSIHRva2VuKTsNCisNCisvLyBJbnB1dCBzdHJ1Y3R1cmUgZm9yIEdkaXBsdXNTdGFydHVwKCkNCisNCitzdHJ1Y3QgR2RpcGx1c1N0YXJ0dXBJbnB1dA0KK3sNCisgICAgVUlOVDMyIEdkaXBsdXNWZXJzaW9uOyAgICAgICAgICAgICAvLyBNdXN0IGJlIDENCisgICAgRGVidWdFdmVudFByb2MgRGVidWdFdmVudENhbGxiYWNrOyAvLyBJZ25vcmVkIG9uIGZyZWUgYnVpbGRzDQorICAgIEJPT0wgU3VwcHJlc3NCYWNrZ3JvdW5kVGhyZWFkOyAgICAgLy8gRkFMU0UgdW5sZXNzIHlvdSdyZSBwcmVwYXJlZCB0byBjYWxsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBob29rL3VuaG9vayBmdW5jdGlvbnMgcHJvcGVybHkNCisgICAgQk9PTCBTdXBwcmVzc0V4dGVybmFsQ29kZWNzOyAgICAgICAvLyBGQUxTRSB1bmxlc3MgeW91IHdhbnQgR0RJKyBvbmx5IHRvIHVzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0cyBpbnRlcm5hbCBpbWFnZSBjb2RlY3MuDQorICAgIA0KKyAgICBHZGlwbHVzU3RhcnR1cElucHV0KA0KKyAgICAgICAgRGVidWdFdmVudFByb2MgZGVidWdFdmVudENhbGxiYWNrID0gTlVMTCwNCisgICAgICAgIEJPT0wgc3VwcHJlc3NCYWNrZ3JvdW5kVGhyZWFkID0gRkFMU0UsDQorICAgICAgICBCT09MIHN1cHByZXNzRXh0ZXJuYWxDb2RlY3MgPSBGQUxTRSkNCisgICAgew0KKyAgICAgICAgR2RpcGx1c1ZlcnNpb24gPSAxOw0KKyAgICAgICAgRGVidWdFdmVudENhbGxiYWNrID0gZGVidWdFdmVudENhbGxiYWNrOw0KKyAgICAgICAgU3VwcHJlc3NCYWNrZ3JvdW5kVGhyZWFkID0gc3VwcHJlc3NCYWNrZ3JvdW5kVGhyZWFkOw0KKyAgICAgICAgU3VwcHJlc3NFeHRlcm5hbENvZGVjcyA9IHN1cHByZXNzRXh0ZXJuYWxDb2RlY3M7DQorICAgIH0NCit9Ow0KKw0KKy8vIE91dHB1dCBzdHJ1Y3R1cmUgZm9yIEdkaXBsdXNTdGFydHVwKCkNCisNCitzdHJ1Y3QgR2RpcGx1c1N0YXJ0dXBPdXRwdXQNCit7DQorICAgIC8vIFRoZSBmb2xsb3dpbmcgMiBmaWVsZHMgYXJlIE5VTEwgaWYgU3VwcHJlc3NCYWNrZ3JvdW5kVGhyZWFkIGlzIEZBTFNFLg0KKyAgICAvLyBPdGhlcndpc2UsIHRoZXkgYXJlIGZ1bmN0aW9ucyB3aGljaCBtdXN0IGJlIGNhbGxlZCBhcHByb3ByaWF0ZWx5IHRvDQorICAgIC8vIHJlcGxhY2UgdGhlIGJhY2tncm91bmQgdGhyZWFkLg0KKyAgICAvLw0KKyAgICAvLyBUaGVzZSBzaG91bGQgYmUgY2FsbGVkIG9uIHRoZSBhcHBsaWNhdGlvbidzIG1haW4gbWVzc2FnZSBsb29wIC0gaS5lLg0KKyAgICAvLyBhIG1lc3NhZ2UgbG9vcCB3aGljaCBpcyBhY3RpdmUgZm9yIHRoZSBsaWZldGltZSBvZiBHREkrLg0KKyAgICAvLyAiTm90aWZpY2F0aW9uSG9vayIgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIGxvb3AsDQorICAgIC8vIGFuZCAiTm90aWZpY2F0aW9uVW5ob29rIiBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIHRoZSBsb29wIGVuZHMuDQorICAgIA0KKyAgICBOb3RpZmljYXRpb25Ib29rUHJvYyBOb3RpZmljYXRpb25Ib29rOw0KKyAgICBOb3RpZmljYXRpb25Vbmhvb2tQcm9jIE5vdGlmaWNhdGlvblVuaG9vazsNCit9Ow0KKw0KKy8vIEdESSsgaW5pdGlhbGl6YXRpb24uIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBHREkrIEFQSSdzIGFyZSB1c2VkLg0KKy8vDQorLy8gdG9rZW4gIC0gbWF5IG5vdCBiZSBOVUxMIC0gYWNjZXB0cyBhIHRva2VuIHRvIGJlIHBhc3NlZCBpbiB0aGUgY29ycmVzcG9uZGluZw0KKy8vICAgICAgICAgIEdkaXBsdXNTaHV0ZG93biBjYWxsLg0KKy8vIGlucHV0ICAtIG1heSBub3QgYmUgTlVMTA0KKy8vIG91dHB1dCAtIG1heSBiZSBOVUxMIG9ubHkgaWYgaW5wdXQtPlN1cHByZXNzQmFja2dyb3VuZFRocmVhZCBpcyBGQUxTRS4NCisNCitleHRlcm4gIkMiIFN0YXR1cyBXSU5BUEkgR2RpcGx1c1N0YXJ0dXAoDQorICAgIE9VVCBVTE9OR19QVFIgKnRva2VuLA0KKyAgICBjb25zdCBHZGlwbHVzU3RhcnR1cElucHV0ICppbnB1dCwNCisgICAgT1VUIEdkaXBsdXNTdGFydHVwT3V0cHV0ICpvdXRwdXQpOw0KKw0KKy8vIEdESSsgdGVybWluYXRpb24uIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBHREkrIGlzIHVubG9hZGVkLiBHREkrIEFQSSdzIG1heSBub3QNCisvLyBiZSBjYWxsZWQgYWZ0ZXIgdGhpcy4NCisNCitleHRlcm4gIkMiIFZPSUQgV0lOQVBJIEdkaXBsdXNTaHV0ZG93bihVTE9OR19QVFIgdG9rZW4pOw0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL3NhbC5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvc2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM2OTk2OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvTWljcm9zb2Z0IFNESy9pbmNsdWRlL3NhbC5oCkBAIC0wLDAgKzEsNzI5IEBACisvKioqDQorKnNhbC5oIC0gbWFya2VycyBmb3IgZG9jdW1lbnRpbmcgdGhlIHNlbWFudGljcyBvZiBBUElzDQorKg0KKyogICAgICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorKg0KKypQdXJwb3NlOg0KKyogICAgICAgc2FsLmggcHJvdmlkZXMgYSBzZXQgb2YgYW5ub3RhdGlvbnMgdG8gZGVzY3JpYmUgaG93IGEgZnVuY3Rpb24gdXNlcyBpdHMNCisqICAgICAgIHBhcmFtZXRlcnMgLSB0aGUgYXNzdW1wdGlvbnMgaXQgbWFrZXMgYWJvdXQgdGhlbSwgYW5kIHRoZSBndWFyYW50ZWVzIGl0IG1ha2VzDQorKiAgICAgICB1cG9uIGZpbmlzaGluZy4NCisqDQorKiAgICAgICBbUHVibGljXQ0KKyoNCisqKioqLw0KKw0KKy8qIA0KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIEludHJvZHVjdGlvbg0KKw0KKyBzYWwuaCBwcm92aWRlcyBhIHNldCBvZiBhbm5vdGF0aW9ucyB0byBkZXNjcmliZSBob3cgYSBmdW5jdGlvbiB1c2VzIGl0cw0KKyBwYXJhbWV0ZXJzIC0gdGhlIGFzc3VtcHRpb25zIGl0IG1ha2VzIGFib3V0IHRoZW0sIGFuZCB0aGUgZ3VhcmFudGVlcyBpdCBtYWtlcw0KKyB1cG9uIGZpbmlzaGluZy4NCisNCisgQW5ub3RhdGlvbnMgbWF5IGJlIHBsYWNlZCBiZWZvcmUgZWl0aGVyIGEgZnVuY3Rpb24gcGFyYW1ldGVyJ3MgdHlwZSBvciBpdHMgcmV0dXJuDQorIHR5cGUsIGFuZCBkZXNjcmliZSB0aGUgZnVuY3Rpb24ncyBiZWhhdmlvciByZWdhcmRpbmcgdGhlIHBhcmFtZXRlciBvciByZXR1cm4gdmFsdWUuDQorIFRoZXJlIGFyZSB0d28gY2xhc3NlcyBvZiBhbm5vdGF0aW9uczogYnVmZmVyIGFubm90YXRpb25zIGFuZCBhZHZhbmNlZCBhbm5vdGF0aW9ucy4NCisgQnVmZmVyIGFubm90YXRpb25zIGRlc2NyaWJlIGhvdyBmdW5jdGlvbnMgdXNlIHRoZWlyIHBvaW50ZXIgcGFyYW1ldGVycywgYW5kDQorIGFkdmFuY2VkIGFubm90YXRpb25zIGVpdGhlciBkZXNjcmliZSBjb21wbGV4L3VudXN1YWwgYnVmZmVyIGJlaGF2aW9yLCBvciBwcm92aWRlDQorIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJhbWV0ZXIgdGhhdCBpcyBub3Qgb3RoZXJ3aXNlIGV4cHJlc3NpYmxlLg0KKw0KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIEJ1ZmZlciBBbm5vdGF0aW9ucw0KKw0KKyBUaGUgbW9zdCBpbXBvcnRhbnQgYW5ub3RhdGlvbnMgaW4gc2FsLmggcHJvdmlkZSBhIGNvbnNpc3RlbnQgd2F5IHRvIGFubm90YXRlDQorIGJ1ZmZlciBwYXJhbWV0ZXJzIG9yIHJldHVybiB2YWx1ZXMgZm9yIGEgZnVuY3Rpb24uIEVhY2ggb2YgdGhlc2UgYW5ub3RhdGlvbnMgZGVzY3JpYmVzDQorIGEgc2luZ2xlIGJ1ZmZlciAod2hpY2ggY291bGQgYmUgYSBzdHJpbmcsIGEgZml4ZWQtbGVuZ3RoIG9yIHZhcmlhYmxlLWxlbmd0aCBhcnJheSwNCisgb3IganVzdCBhIHBvaW50ZXIpIHRoYXQgdGhlIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoOiB3aGVyZSBpdCBpcywgaG93IGxhcmdlIGl0IGlzLA0KKyBob3cgbXVjaCBpcyBpbml0aWFsaXplZCwgYW5kIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMgd2l0aCBpdC4NCisNCisgVGhlIGFwcHJvcHJpYXRlIG1hY3JvIGZvciBhIGdpdmVuIGJ1ZmZlciBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgdGhlIHRhYmxlIGJlbG93Lg0KKyBKdXN0IHBpY2sgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcyBmcm9tIGVhY2ggY2F0ZWdvcnksIGFuZCBjb21iaW5lIHRoZW0gdG9nZXRoZXINCisgd2l0aCBhIGxlYWRpbmcgdW5kZXJzY29yZS4gU29tZSBjb21iaW5hdGlvbnMgb2YgdmFsdWVzIGRvIG5vdCBtYWtlIHNlbnNlIGFzIGJ1ZmZlcg0KKyBhbm5vdGF0aW9ucy4gT25seSBtZWFuaW5nZnVsIGFubm90YXRpb25zIGNhbiBiZSBhZGRlZCB0byB5b3VyIGNvZGU7IGZvciBhIGxpc3Qgb2YNCisgdGhlc2UsIHNlZSB0aGUgYnVmZmVyIGFubm90YXRpb24gZGVmaW5pdGlvbnMgc2VjdGlvbi4NCisNCisgT25seSBhIHNpbmdsZSBidWZmZXIgYW5ub3RhdGlvbiBzaG91bGQgYmUgdXNlZCBmb3IgZWFjaCBwYXJhbWV0ZXIuDQorDQorIHwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tfA0KKyB8ICAgTGV2ZWwgICAgfCAgIFVzYWdlICAgIHwgIFNpemUgICB8IE91dHB1dCB8IE51bGxUZXJtIHwgT3B0aW9uYWwgfCAgUGFyYW1ldGVycyAgIHwNCisgfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18DQorIHwgPD4gICAgICAgICB8IDw+ICAgICAgICAgfCA8PiAgICAgIHwgPD4gICAgIHwgX3ogICAgICAgfCA8PiAgICAgICB8IDw+ICAgICAgICAgICAgfA0KKyB8IF9kZXJlZiAgICAgfCBfaW4gICAgICAgIHwgX2Vjb3VudCB8IF9mdWxsICB8IF9ueiAgICAgIHwgX29wdCAgICAgfCAoc2l6ZSkgICAgICAgIHwNCisgfCBfZGVyZWZfb3B0IHwgX291dCAgICAgICB8IF9iY291bnQgfCBfcGFydCAgfCAgICAgICAgICB8ICAgICAgICAgIHwgKHNpemUsbGVuZ3RoKSB8DQorIHwgICAgICAgICAgICB8IF9pbm91dCAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgIHwNCisgfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18DQorDQorIExldmVsOiBEZXNjcmliZXMgdGhlIGJ1ZmZlciBwb2ludGVyJ3MgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gZnJvbSB0aGUgcGFyYW1ldGVyIG9yDQorICAgICAgICAgIHJldHVybiB2YWx1ZSAncCcuDQorDQorIDw+ICAgICAgICAgOiBwIGlzIHRoZSBidWZmZXIgcG9pbnRlci4NCisgX2RlcmVmICAgICA6ICpwIGlzIHRoZSBidWZmZXIgcG9pbnRlci4gcCBtdXN0IG5vdCBiZSBOVUxMLg0KKyBfZGVyZWZfb3B0IDogKnAgbWF5IGJlIHRoZSBidWZmZXIgcG9pbnRlci4gcCBtYXkgYmUgTlVMTCwgaW4gd2hpY2ggY2FzZSB0aGUgcmVzdCBvZg0KKyAgICAgICAgICAgICAgICB0aGUgYW5ub3RhdGlvbiBpcyBpZ25vcmVkLg0KKw0KKyBVc2FnZTogRGVzY3JpYmVzIGhvdyB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYnVmZmVyLg0KKw0KKyA8PiAgICAgOiBUaGUgYnVmZmVyIGlzIG5vdCBhY2Nlc3NlZC4gSWYgdXNlZCBvbiB0aGUgcmV0dXJuIHZhbHVlIG9yIHdpdGggX2RlcmVmLCB0aGUNCisgICAgICAgICAgICBmdW5jdGlvbiB3aWxsIHByb3ZpZGUgdGhlIGJ1ZmZlciwgYW5kIGl0IHdpbGwgYmUgdW5pbml0aWFsaXplZCBhdCBleGl0Lg0KKyAgICAgICAgICAgIE90aGVyd2lzZSwgdGhlIGNhbGxlciBtdXN0IHByb3ZpZGUgdGhlIGJ1ZmZlci4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkDQorICAgICAgICAgICAgZm9yIGFsbG9jIGFuZCBmcmVlIGZ1bmN0aW9ucy4NCisgX2luICAgIDogVGhlIGZ1bmN0aW9uIHdpbGwgb25seSByZWFkIGZyb20gdGhlIGJ1ZmZlci4gVGhlIGNhbGxlciBtdXN0IHByb3ZpZGUgdGhlDQorICAgICAgICAgICAgYnVmZmVyIGFuZCBpbml0aWFsaXplIGl0LiBDYW5ub3QgYmUgdXNlZCB3aXRoIF9kZXJlZi4NCisgX291dCAgIDogVGhlIGZ1bmN0aW9uIHdpbGwgb25seSB3cml0ZSB0byB0aGUgYnVmZmVyLiBJZiB1c2VkIG9uIHRoZSByZXR1cm4gdmFsdWUgb3INCisgICAgICAgICAgICB3aXRoIF9kZXJlZiwgdGhlIGZ1bmN0aW9uIHdpbGwgcHJvdmlkZSB0aGUgYnVmZmVyIGFuZCBpbml0aWFsaXplIGl0Lg0KKyAgICAgICAgICAgIE90aGVyd2lzZSwgdGhlIGNhbGxlciBtdXN0IHByb3ZpZGUgdGhlIGJ1ZmZlciwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsDQorICAgICAgICAgICAgaW5pdGlhbGl6ZSBpdC4NCisgX2lub3V0IDogVGhlIGZ1bmN0aW9uIG1heSBmcmVlbHkgcmVhZCBmcm9tIGFuZCB3cml0ZSB0byB0aGUgYnVmZmVyLiBUaGUgY2FsbGVyIG11c3QNCisgICAgICAgICAgICBwcm92aWRlIHRoZSBidWZmZXIgYW5kIGluaXRpYWxpemUgaXQuIElmIHVzZWQgd2l0aCBfZGVyZWYsIHRoZSBidWZmZXIgbWF5DQorICAgICAgICAgICAgYmUgcmVhbGxvY2F0ZWQgYnkgdGhlIGZ1bmN0aW9uLg0KKw0KKyBTaXplOiBEZXNjcmliZXMgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGJ1ZmZlci4gVGhpcyBtYXkgYmUgbGVzcyB0aGFuIHRoZSBzcGFjZSBhY3R1YWxseQ0KKyAgICAgICAgIGFsbG9jYXRlZCBmb3IgdGhlIGJ1ZmZlciwgaW4gd2hpY2ggY2FzZSBpdCBkZXNjcmliZXMgdGhlIGFjY2Vzc2libGUgYW1vdW50Lg0KKw0KKyA8PiAgICAgIDogTm8gYnVmZmVyIHNpemUgaXMgZ2l2ZW4uIElmIHRoZSB0eXBlIHNwZWNpZmllcyB0aGUgYnVmZmVyIHNpemUgKHN1Y2ggYXMNCisgICAgICAgICAgICAgd2l0aCBMUFNUUiBhbmQgTFBXU1RSKSwgdGhhdCBhbW91bnQgaXMgdXNlZC4gT3RoZXJ3aXNlLCB0aGUgYnVmZmVyIGlzIG9uZQ0KKyAgICAgICAgICAgICBlbGVtZW50IGxvbmcuIE11c3QgYmUgdXNlZCB3aXRoIF9pbiwgX291dCwgb3IgX2lub3V0Lg0KKyBfZWNvdW50IDogVGhlIGJ1ZmZlciBzaXplIGlzIGFuIGV4cGxpY2l0IGVsZW1lbnQgY291bnQuDQorIF9iY291bnQgOiBUaGUgYnVmZmVyIHNpemUgaXMgYW4gZXhwbGljaXQgYnl0ZSBjb3VudC4NCisNCisgT3V0cHV0OiBEZXNjcmliZXMgaG93IG11Y2ggb2YgdGhlIGJ1ZmZlciB3aWxsIGJlIGluaXRpYWxpemVkIGJ5IHRoZSBmdW5jdGlvbi4gRm9yDQorICAgICAgICAgICBfaW5vdXQgYnVmZmVycywgdGhpcyBhbHNvIGRlc2NyaWJlcyBob3cgbXVjaCBpcyBpbml0aWFsaXplZCBhdCBlbnRyeS4gT21pdCB0aGlzDQorICAgICAgICAgICBjYXRlZ29yeSBmb3IgX2luIGJ1ZmZlcnM7IHRoZXkgbXVzdCBiZSBmdWxseSBpbml0aWFsaXplZCBieSB0aGUgY2FsbGVyLg0KKw0KKyA8PiAgICA6IFRoZSB0eXBlIHNwZWNpZmllcyBob3cgbXVjaCBpcyBpbml0aWFsaXplZC4gRm9yIGluc3RhbmNlLCBhIGZ1bmN0aW9uIGluaXRpYWxpemluZw0KKyAgICAgICAgICAgYW4gTFBXU1RSIG11c3QgTlVMTC10ZXJtaW5hdGUgdGhlIHN0cmluZy4NCisgX2Z1bGwgOiBUaGUgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIGVudGlyZSBidWZmZXIuDQorIF9wYXJ0IDogVGhlIGZ1bmN0aW9uIGluaXRpYWxpemVzIHBhcnQgb2YgdGhlIGJ1ZmZlciwgYW5kIGV4cGxpY2l0bHkgaW5kaWNhdGVzIGhvdyBtdWNoLg0KKw0KKyBOdWxsVGVybTogU3RhdGVzIGlmIHRoZSBwcmVzZW50IG9mIGEgJ1wwJyBtYXJrcyB0aGUgZW5kIG9mIHZhbGlkIGVsZW1lbnRzIGluIHRoZSBidWZmZXIuDQorIF96ICAgIDogQSAnXDAnIGluZGljYXRlZCB0aGUgZW5kIG9mIHRoZSBidWZmZXINCisgX256CSA6IFRoZSBidWZmZXIgbWF5IG5vdCBiZSBudWxsIHRlcm1pbmF0ZWQgYW5kIGEgJ1wwJyBkb2VzIG5vdCBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZQ0KKyAgICAgICAgICBidWZmZXIuDQorIE9wdGlvbmFsOiBEZXNjcmliZXMgaWYgdGhlIGJ1ZmZlciBpdHNlbGYgaXMgb3B0aW9uYWwuDQorDQorIDw+ICAgOiBUaGUgcG9pbnRlciB0byB0aGUgYnVmZmVyIG11c3Qgbm90IGJlIE5VTEwuDQorIF9vcHQgOiBUaGUgcG9pbnRlciB0byB0aGUgYnVmZmVyIG1pZ2h0IGJlIE5VTEwuIEl0IHdpbGwgYmUgY2hlY2tlZCBiZWZvcmUgYmVpbmcgZGVyZWZlcmVuY2VkLg0KKw0KKyBQYXJhbWV0ZXJzOiBHaXZlcyBleHBsaWNpdCBjb3VudHMgZm9yIHRoZSBzaXplIGFuZCBsZW5ndGggb2YgdGhlIGJ1ZmZlci4NCisNCisgPD4gICAgICAgICAgICA6IFRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvdW50LiBVc2Ugd2hlbiBuZWl0aGVyIF9lY291bnQgbm9yIF9iY291bnQgaXMgdXNlZC4NCisgKHNpemUpICAgICAgICA6IE9ubHkgdGhlIGJ1ZmZlcidzIHRvdGFsIHNpemUgaXMgZ2l2ZW4uIFVzZSB3aXRoIF9lY291bnQgb3IgX2Jjb3VudCBidXQgbm90IF9wYXJ0Lg0KKyAoc2l6ZSxsZW5ndGgpIDogVGhlIGJ1ZmZlcidzIHRvdGFsIHNpemUgYW5kIGluaXRpYWxpemVkIGxlbmd0aCBhcmUgZ2l2ZW4uIFVzZSB3aXRoIF9lY291bnRfcGFydA0KKyAgICAgICAgICAgICAgICAgICBhbmQgX2Jjb3VudF9wYXJ0Lg0KKw0KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIEJ1ZmZlciBBbm5vdGF0aW9uIEV4YW1wbGVzDQorDQorIExXU1REQVBJXyhCT09MKSBTdHJUb0ludEV4QSgNCisgICAgIExQQ1NUUiBwc3pTdHJpbmcsICAgICAgICAgICAgICAgICAgICAtLSBObyBhbm5vdGF0aW9uIHJlcXVpcmVkLCBjb25zdCBpbXBsaWVzIF9faW4uDQorICAgICBEV09SRCBkd0ZsYWdzLA0KKyAgICAgX19vdXQgaW50ICpwaVJldCAgICAgICAgICAgICAgICAgICAgIC0tIEEgcG9pbnRlciB3aG9zZSBkZXJlZmVyZW5jZSB3aWxsIGJlIGZpbGxlZCBpbi4NCisgKTsNCisNCisgdm9pZCBNeVBhaW50aW5nRnVuY3Rpb24oDQorICAgICBfX2luIEhXTkQgaHduZENvbnRyb2wsICAgICAgICAgICAgICAgLS0gQW4gaW5pdGlhbGl6ZWQgcmVhZC1vbmx5IHBhcmFtZXRlci4NCisgICAgIF9faW5fb3B0IEhEQyBoZGNPcHRpb25hbCwgICAgICAgICAgICAtLSBBbiBpbml0aWFsaXplZCByZWFkLW9ubHkgcGFyYW1ldGVyIHRoYXQgbWlnaHQgYmUgTlVMTC4NCisgICAgIF9faW5vdXQgSVByb3BlcnR5U3RvcmUgKnBwc1N0b3JlICAgICAtLSBBbiBpbml0aWFsaXplZCBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgZnJlZWx5IHVzZWQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSAgIGFuZCBtb2RpZmllZC4NCisgKTsNCisNCisgTFdTVERBUElfKEJPT0wpIFBhdGhDb21wYWN0UGF0aEV4QSgNCisgICAgIF9fb3V0X2Vjb3VudChjY2hNYXgpIExQU1RSIHBzek91dCwgICAtLSBBIHN0cmluZyBidWZmZXIgd2l0aCBjY2ggZWxlbWVudHMgdGhhdCB3aWxsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gICBiZSBOVUxMIHRlcm1pbmF0ZWQgb24gZXhpdC4NCisgICAgIExQQ1NUUiBwc3pTcmMsICAgICAgICAgICAgICAgICAgICAgICAtLSBObyBhbm5vdGF0aW9uIHJlcXVpcmVkLCBjb25zdCBpbXBsaWVzIF9faW4uDQorICAgICBVSU5UIGNjaE1heCwNCisgICAgIERXT1JEIGR3RmxhZ3MNCisgKTsNCisNCisgSFJFU1VMVCBTSExvY2FsQWxsb2NCeXRlcygNCisgICAgIHNpemVfdCBjYiwNCisgICAgIF9fZGVyZWZfYmNvdW50KGNiKSBUICoqcHB2ICAgICAgICAgICAtLSBBIHBvaW50ZXIgd2hvc2UgZGVyZWZlcmVuY2Ugd2lsbCBiZSBzZXQgdG8gYW4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSAgIHVuaW5pdGlhbGl6ZWQgYnVmZmVyIHdpdGggY2IgYnl0ZXMuDQorICk7DQorDQorIF9faW5vdXRfYmNvdW50X2Z1bGwoY2IpIDogQSBidWZmZXIgd2l0aCBjYiBlbGVtZW50cyB0aGF0IGlzIGZ1bGx5IGluaXRpYWxpemVkIGF0DQorICAgICBlbnRyeSBhbmQgZXhpdCwgYW5kIG1heSBiZSB3cml0dGVuIHRvIGJ5IHRoaXMgZnVuY3Rpb24uDQorDQorIF9fb3V0X2Vjb3VudF9wYXJ0KGNvdW50LCAqY291bnRPdXQpIDogQSBidWZmZXIgd2l0aCBjb3VudCBlbGVtZW50cyB0aGF0IHdpbGwgYmUNCisgICAgIHBhcnRpYWxseSBpbml0aWFsaXplZCBieSB0aGlzIGZ1bmN0aW9uLiBUaGUgZnVuY3Rpb24gaW5kaWNhdGVzIGhvdyBtdWNoIGl0DQorICAgICBpbml0aWFsaXplZCBieSBzZXR0aW5nICpjb3VudE91dC4NCisNCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyBBZHZhbmNlZCBBbm5vdGF0aW9ucw0KKw0KKyBBZHZhbmNlZCBhbm5vdGF0aW9ucyBkZXNjcmliZSBiZWhhdmlvciB0aGF0IGlzIG5vdCBleHByZXNzaWJsZSB3aXRoIHRoZSByZWd1bGFyDQorIGJ1ZmZlciBtYWNyb3MuIFRoZXNlIG1heSBiZSB1c2VkIGVpdGhlciB0byBhbm5vdGF0ZSBidWZmZXIgcGFyYW1ldGVycyB0aGF0IGludm9sdmUNCisgY29tcGxleCBvciBjb25kaXRpb25hbCBiZWhhdmlvciwgb3IgdG8gZW5yaWNoIGV4aXN0aW5nIGFubm90YXRpb25zIHdpdGggYWRkaXRpb25hbA0KKyBpbmZvcm1hdGlvbi4NCisNCisgX19zdWNjZXNzKGV4cHIpIGYgOg0KKyAgICAgPGV4cHI+IGluZGljYXRlcyB3aGV0aGVyIGZ1bmN0aW9uIGYgc3VjY2VlZGVkIG9yIG5vdC4gSWYgPGV4cHI+IGlzIHRydWUgYXQgZXhpdCwNCisgICAgIGFsbCB0aGUgZnVuY3Rpb24ncyBndWFyYW50ZWVzIChhcyBnaXZlbiBieSBvdGhlciBhbm5vdGF0aW9ucykgbXVzdCBob2xkLiBJZiA8ZXhwcj4NCisgICAgIGlzIGZhbHNlIGF0IGV4aXQsIHRoZSBjYWxsZXIgc2hvdWxkIG5vdCBleHBlY3QgYW55IG9mIHRoZSBmdW5jdGlvbidzIGd1YXJhbnRlZXMNCisgICAgIHRvIGhvbGQuIElmIG5vdCB1c2VkLCB0aGUgZnVuY3Rpb24gbXVzdCBhbHdheXMgc2F0aXNmeSBpdHMgZ3VhcmFudGVlcy4gQWRkZWQNCisgICAgIGF1dG9tYXRpY2FsbHkgdG8gZnVuY3Rpb25zIHRoYXQgaW5kaWNhdGUgc3VjY2VzcyBpbiBzdGFuZGFyZCB3YXlzLCBzdWNoIGFzIGJ5DQorICAgICByZXR1cm5pbmcgYW4gSFJFU1VMVC4NCisNCisgX19udWxsdGVybWluYXRlZCBwIDoNCisgICAgIFBvaW50ZXIgcCBpcyBhIGJ1ZmZlciB0aGF0IG1heSBiZSByZWFkIG9yIHdyaXR0ZW4gdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgZmlyc3QNCisgICAgIE5VTEwgY2hhcmFjdGVyIG9yIHBvaW50ZXIuIE1heSBiZSB1c2VkIG9uIHR5cGVkZWZzLCB3aGljaCBtYXJrcyB2YWxpZCAocHJvcGVybHkNCisgICAgIGluaXRpYWxpemVkKSBpbnN0YW5jZXMgb2YgdGhhdCB0eXBlIGFzIGJlaW5nIE5VTEwtdGVybWluYXRlZC4NCisNCisgX19udWxsbnVsbHRlcm1pbmF0ZWQgcCA6DQorICAgICBQb2ludGVyIHAgaXMgYSBidWZmZXIgdGhhdCBtYXkgYmUgcmVhZCBvciB3cml0dGVuIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGZpcnN0DQorICAgICBzZXF1ZW5jZSBvZiB0d28gTlVMTCBjaGFyYWN0ZXJzIG9yIHBvaW50ZXJzLiBNYXkgYmUgdXNlZCBvbiB0eXBlZGVmcywgd2hpY2ggbWFya3MNCisgICAgIHZhbGlkIGluc3RhbmNlcyBvZiB0aGF0IHR5cGUgYXMgYmVpbmcgZG91YmxlLU5VTEwgdGVybWluYXRlZC4NCisNCisgX19yZXNlcnZlZCB2IDoNCisgICAgIFZhbHVlIHYgbXVzdCBiZSAwL05VTEwsIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLg0KKw0KKyBfX2NoZWNrUmV0dXJuIHYgOg0KKyAgICAgUmV0dXJuIHZhbHVlIHYgbXVzdCBub3QgYmUgaWdub3JlZCBieSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24uDQorDQorIF9fdHlwZWZpeChjdHlwZSkgdiA6DQorICAgICBWYWx1ZSB2IHNob3VsZCBiZSB0cmVhdGVkIGFzIGFuIGluc3RhbmNlIG9mIGN0eXBlLCByYXRoZXIgdGhhbiBpdHMgZGVjbGFyZWQgdHlwZS4NCisNCisgX19vdmVycmlkZSBmIDoNCisgICAgIFNwZWNpZnkgQyMtc3R5bGUgJ292ZXJyaWRlJyBiZWhhdmlvdXIgZm9yIG92ZXJyaWRpbmcgdmlydHVhbCBtZXRob2RzLg0KKw0KKyBfX2NhbGxiYWNrIGYgOg0KKyAgICAgRnVuY3Rpb24gZiBjYW4gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuDQorDQorIF9fZm9ybWF0X3N0cmluZyBwIDoNCisgICAgIFBvaW50ZXIgcCBpcyBhIHN0cmluZyB0aGF0IGNvbnRhaW5zICUgbWFya2VycyBpbiB0aGUgc3R5bGUgb2YgcHJpbnRmLg0KKw0KKyBfX2Jsb2Nrc09uKHJlc291cmNlKSBmIDoNCisgICAgIEZ1bmN0aW9uIGYgYmxvY2tzIG9uIHRoZSByZXNvdXJjZSAncmVzb3VyY2UnLg0KKw0KKyBfX2ZhbGx0aHJvdWdoIDoNCisgICAgIEFubm90YXRlcyBzd2l0Y2ggc3RhdGVtZW50IGxhYmVscyB3aGVyZSBmYWxsLXRocm91Z2ggaXMgZGVzaXJlZCwgdG8gZGlzdGluZ3Vpc2gNCisgICAgIGZyb20gZm9yZ290dGVuIGJyZWFrIHN0YXRlbWVudHMuDQorDQorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgQWR2YW5jZWQgQW5ub3RhdGlvbiBFeGFtcGxlcw0KKw0KKyBfX3N1Y2Nlc3MocmV0dXJuID09IFRSVUUpIExXU1REQVBJXyhCT09MKSANCisgUGF0aENhbm9uaWNhbGl6ZUEoX19vdXRfZWNvdW50KE1BWF9QQVRIKSBMUFNUUiBwc3pCdWYsIExQQ1NUUiBwc3pQYXRoKSA6DQorICAgICBwc3pCdWYgaXMgb25seSBndWFyYW50ZWVkIHRvIGJlIE5VTEwtdGVybWluYXRlZCB3aGVuIFRSVUUgaXMgcmV0dXJuZWQuDQorDQorIHR5cGVkZWYgX19udWxsdGVybWluYXRlZCBXQ0hBUiogTFBXU1RSIDogSW5pdGlhbGl6ZWQgTFBXU1RScyBhcmUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZ3MuDQorDQorIF9fb3V0X2Vjb3VudChjY2gpIF9fdHlwZWZpeChMUFdTVFIpIHZvaWQgKnBzeiA6IHBzeiBpcyBhIGJ1ZmZlciBwYXJhbWV0ZXIgd2hpY2ggd2lsbCBiZQ0KKyAgICAgYSBOVUxMLXRlcm1pbmF0ZWQgV0NIQVIgc3RyaW5nIGF0IGV4aXQsIGFuZCB3aGljaCBpbml0aWFsbHkgY29udGFpbnMgY2NoIFdDSEFScy4NCisNCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyovDQorDQorI3ByYWdtYSBvbmNlDQorDQorI2RlZmluZSBfX3NwZWNzdHJpbmdzDQorDQorI2lmZGVmICBfX2NwbHVzcGx1cw0KKyNpZm5kZWYgX19ub3Rocm93DQorIyBkZWZpbmUgX19ub3Rocm93IF9fZGVjbHNwZWMobm90aHJvdykNCisjZW5kaWYNCitleHRlcm4gIkMiIHsNCisjZWxzZQ0KKyNpZm5kZWYgX19ub3Rocm93DQorIyBkZWZpbmUgX19ub3Rocm93DQorI2VuZGlmDQorI2VuZGlmICAvKiAjaWZkZWYgX19jcGx1c3BsdXMgKi8NCisNCisvKg0KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIEhlbHBlciBNYWNybyBEZWZpbml0aW9ucw0KKw0KKyBUaGVzZSBleHByZXNzIGJlaGF2aW9yIGNvbW1vbiB0byBtYW55IG9mIHRoZSBoaWdoLWxldmVsIGFubm90YXRpb25zLg0KKyBETyBOT1QgVVNFIFRIRVNFIElOIFlPVVIgQ09ERS4NCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyovDQorDQorLyoNCitUaGUgaGVscGVyIGFubm90YXRpb25zIGFyZSBvbmx5IHVuZGVyc3Rvb2QgYnkgdGhlIGNvbXBpbGVyIHZlcnNpb24gdXNlZCBieSB2YXJpb3VzDQorZGVmZWN0IGRldGVjdGlvbiB0b29scy4gV2hlbiB0aGUgcmVndWxhciBjb21waWxlciBpcyBydW5uaW5nLCB0aGV5IGFyZSBkZWZpbmVkIGludG8NCitub3RoaW5nLCBhbmQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQgY29kZS4NCisqLw0KKw0KKyNpZiAhZGVmaW5lZChfX21pZGwpICYmIGRlZmluZWQoX1BSRUZBU1RfKSANCisNCisgICAgLyoNCisgICAgIEluIHRoZSBwcmltaXRpdmUgX19kZWNsc3BlYygiU0FMXyoiKSBhbm5vdGF0aW9ucyAiU0FMIiBzdGFuZHMgZm9yIFN0YW5kYXJkDQorICAgICBBbm5vdGF0aW9uIExhbmd1YWdlLiAgVGhlc2UgX19kZWNsc3BlYygiU0FMXyoiKSBhbm5vdGF0aW9ucyBhcmUgdGhlDQorICAgICBwcmltaXRpdmVzIHRoZSBjb21waWxlciB1bmRlcnN0YW5kcyBhbmQgYWxsIGhpZ2gtbGV2ZWwgU3BlY1N0cmluZyBNQUNST3MNCisgICAgIHdpbGwgZGVjb21wb3NlIGludG8gdGhlc2UgcHJpbWl2YXRlcy4NCisgICAgKi8NCisNCisgICAgI2RlZmluZSBTUEVDU1RSSU5HSVpFKCB4ICkgI3gNCisNCisgICAgLyoNCisgICAgIF9fbnVsbCBwDQorICAgICBfX25vdG51bGwgcA0KKyAgICAgX19tYXliZW51bGwgcA0KKyAgICANCisgICAgIEFubm90YXRlcyBhIHBvaW50ZXIgcC4gU3RhdGVzIHRoYXQgcG9pbnRlciBwIGlzIG51bGwuIENvbW1vbmx5IHVzZWQNCisgICAgIGluIHRoZSBuZWdhdGVkIGZvcm0gX19ub3RudWxsIG9yIHRoZSBwb3NzaWJseSBudWxsIGZvcm0gX19tYXliZW51bGwuDQorICAgICovDQorDQorICAgICNkZWZpbmUgX19udWxsICAgICAgICAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX251bGwiKQ0KKyAgICAjZGVmaW5lIF9fbm90bnVsbCAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9ub3RudWxsIikNCisgICAgI2RlZmluZSBfX21heWJlbnVsbCAgICAgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfbWF5YmVudWxsIikNCisNCisgICAgLyoNCisgICAgIF9fcmVhZG9ubHkgbA0KKyAgICAgX19ub3RyZWFkb25seSBsDQorICAgICBfX21hYnllcmVhZG9ubHkgbA0KKyAgICANCisgICAgIEFubm90YXRlcyBhIGxvY2F0aW9uIGwuIFN0YXRlcyB0aGF0IGxvY2F0aW9uIGwgaXMgbm90IG1vZGlmaWVkIGFmdGVyDQorICAgICB0aGlzIHBvaW50LiAgSWYgdGhlIGFubm90YXRpb24gaXMgcGxhY2VkIG9uIHRoZSBwcmVjb25kaXRpb24gc3RhdGUgb2YNCisgICAgIGEgZnVuY3Rpb24sIHRoZSByZXN0cmljdGlvbiBvbmx5IGFwcGxpZXMgdW50aWwgdGhlIHBvc3Rjb25kaXRpb24gc3RhdGUNCisgICAgIG9mIHRoZSBmdW5jdGlvbi4gIF9fbWF5YmVyZWFkb25seSBzdGF0ZXMgdGhhdCB0aGUgYW5ub3RhdGVkIGxvY2F0aW9uDQorICAgICBtYXkgYmUgbW9kaWZpZWQsIHdoZXJlYXMgX19ub3RyZWFkb25seSBzdGF0ZXMgdGhhdCBhIGxvY2F0aW9uIG11c3QgYmUNCisgICAgIG1vZGlmaWVkLg0KKyAgICAqLw0KKw0KKyAgICAjZGVmaW5lIF9fcmVhZG9ubHkgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9yZWFkb25seSIpDQorICAgICNkZWZpbmUgX19ub3RyZWFkb25seSAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX25vdHJlYWRvbmx5IikNCisgICAgI2RlZmluZSBfX21heWJlcmVhZG9ubHkgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfbWF5YmVyZWFkb25seSIpDQorDQorICAgIC8qDQorICAgICBfX3ZhbGlkIHYNCisgICAgIF9fbm90dmFsaWQgdg0KKyAgICAgX19tYXliZXZhbGlkIHYNCisgICAgDQorICAgICBBbm5vdGF0ZXMgYW55IHZhbHVlIHYuIFN0YXRlcyB0aGF0IHRoZSB2YWx1ZSBzYXRpc2ZpZXMgYWxsIHByb3BlcnRpZXMgb2YNCisgICAgIHZhbGlkIHZhbHVlcyBvZiBpdHMgdHlwZS4gRm9yIGV4YW1wbGUsIGZvciBhIHN0cmluZyBidWZmZXIsIHZhbGlkIG1lYW5zDQorICAgICB0aGF0IHRoZSBidWZmZXIgcG9pbnRlciBpcyBlaXRoZXIgTlVMTCBvciBwb2ludHMgdG8gYSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLg0KKyAgICAqLw0KKw0KKyAgICAjZGVmaW5lIF9fdmFsaWQgICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF92YWxpZCIpDQorICAgICNkZWZpbmUgX19ub3R2YWxpZCAgICAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX25vdHZhbGlkIikNCisgICAgI2RlZmluZSBfX21heWJldmFsaWQgICAgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfbWF5YmV2YWxpZCIpDQorDQorICAgIC8qDQorICAgICBfX3JlYWRhYmxlVG8oZXh0ZW50KSBwDQorICAgIA0KKyAgICAgQW5ub3RhdGVzIGEgYnVmZmVyIHBvaW50ZXIgcC4gIElmIHRoZSBidWZmZXIgY2FuIGJlIHJlYWQsIGV4dGVudCBkZXNjcmliZXMNCisgICAgIGhvdyBtdWNoIG9mIHRoZSBidWZmZXIgaXMgcmVhZGFibGUuIEZvciBhIHJlYWRlciBvZiB0aGUgYnVmZmVyLCB0aGlzIGlzDQorICAgICBhbiBleHBsaWNpdCBwZXJtaXNzaW9uIHRvIHJlYWQgdXAgdG8gdGhhdCBhbW91bnQsIHJhdGhlciB0aGFuIGEgcmVzdHJpY3Rpb24gdG8NCisgICAgIHJlYWQgb25seSB1cCB0byBpdC4NCisgICAgKi8NCisNCisgICAgI2RlZmluZSBfX3JlYWRhYmxlVG8oZXh0ZW50KSAgICBfX2RlY2xzcGVjKCJTQUxfcmVhZGFibGVUbygiU1BFQ1NUUklOR0laRShleHRlbnQpIikiKQ0KKw0KKyAgICAvKg0KKyAgICANCisgICAgIF9fZWxlbV9yZWFkYWJsZVRvKHNpemUpDQorICAgIA0KKyAgICAgQW5ub3RhdGVzIGEgYnVmZmVyIHBvaW50ZXIgcCBhcyBiZWluZyByZWFkYWJsZSB0byBzaXplIGVsZW1lbnRzLg0KKyAgICAqLw0KKw0KKyAgICAjZGVmaW5lIF9fZWxlbV9yZWFkYWJsZVRvKHNpemUpICAgX19kZWNsc3BlYygiU0FMX3JlYWRhYmxlVG8oZWxlbWVudENvdW50KCJTUEVDU1RSSU5HSVpFKHNpemUpIikpIikNCisgICAgDQorICAgIC8qDQorICAgICBfX2J5dGVfcmVhZGFibGVUbyhzaXplKQ0KKyAgICANCisgICAgIEFubm90YXRlcyBhIGJ1ZmZlciBwb2ludGVyIHAgYXMgYmVpbmcgcmVhZGFibGUgdG8gc2l6ZSBieXRlcy4NCisgICAgKi8NCisgICAgI2RlZmluZSBfX2J5dGVfcmVhZGFibGVUbyhzaXplKSAgIF9fZGVjbHNwZWMoIlNBTF9yZWFkYWJsZVRvKGJ5dGVDb3VudCgiU1BFQ1NUUklOR0laRShzaXplKSIpKSIpDQorICAgIA0KKyAgICAvKg0KKyAgICAgX193cml0YWJsZVRvKGV4dGVudCkgcA0KKyAgICANCisgICAgIEFubm90YXRlcyBhIGJ1ZmZlciBwb2ludGVyIHAuIElmIHRoZSBidWZmZXIgY2FuIGJlIG1vZGlmaWVkLCBleHRlbnQNCisgICAgIGRlc2NyaWJlcyBob3cgbXVjaCBvZiB0aGUgYnVmZmVyIGlzIHdyaXRhYmxlICh1c3VhbGx5IHRoZSBhbGxvY2F0aW9uDQorICAgICBzaXplKS4gRm9yIGEgd3JpdGVyIG9mIHRoZSBidWZmZXIsIHRoaXMgaXMgYW4gZXhwbGljaXQgcGVybWlzc2lvbiB0bw0KKyAgICAgd3JpdGUgdXAgdG8gdGhhdCBhbW91bnQsIHJhdGhlciB0aGFuIGEgcmVzdHJpY3Rpb24gdG8gd3JpdGUgb25seSB1cCB0byBpdC4NCisgICAgKi8NCisgICAgI2RlZmluZSBfX3dyaXRhYmxlVG8oc2l6ZSkgICBfX2RlY2xzcGVjKCJTQUxfd3JpdGFibGVUbygiU1BFQ1NUUklOR0laRShzaXplKSIpIikNCisNCisgICAgLyoNCisgICAgIF9fZWxlbV93cml0YWJsZVRvKHNpemUpDQorICAgIA0KKyAgICAgQW5ub3RhdGVzIGEgYnVmZmVyIHBvaW50ZXIgcCBhcyBiZWluZyB3cml0YWJsZSB0byBzaXplIGVsZW1lbnRzLg0KKyAgICAqLw0KKyAgICAjZGVmaW5lIF9fZWxlbV93cml0YWJsZVRvKHNpemUpICAgX19kZWNsc3BlYygiU0FMX3dyaXRhYmxlVG8oZWxlbWVudENvdW50KCJTUEVDU1RSSU5HSVpFKHNpemUpIikpIikNCisgICAgDQorICAgIC8qDQorICAgICBfX2J5dGVfd3JpdGFibGVUbyhzaXplKQ0KKyAgICANCisgICAgIEFubm90YXRlcyBhIGJ1ZmZlciBwb2ludGVyIHAgYXMgYmVpbmcgd3JpdGFibGUgdG8gc2l6ZSBieXRlcy4NCisgICAgKi8NCisgICAgI2RlZmluZSBfX2J5dGVfd3JpdGFibGVUbyhzaXplKSAgIF9fZGVjbHNwZWMoIlNBTF93cml0YWJsZVRvKGJ5dGVDb3VudCgiU1BFQ1NUUklOR0laRShzaXplKSIpKSIpDQorDQorICAgIC8qDQorICAgICBfX2RlcmVmIHANCisgICAgDQorICAgICBBbm5vdGF0ZXMgYSBwb2ludGVyIHAuIFRoZSBuZXh0IGFubm90YXRpb24gYXBwbGllcyBvbmUgZGVyZWZlcmVuY2UgZG93bg0KKyAgICAgaW4gdGhlIHR5cGUuIElmIHJlYWRhYmxlVG8ocCwgc2l6ZSkgdGhlbiB0aGUgbmV4dCBhbm5vdGF0aW9uIGFwcGxpZXMgdG8NCisgICAgIGFsbCBlbGVtZW50cyAqKHAraSkgZm9yIHdoaWNoIGkgc2F0aXNmaWVzIHRoZSBzaXplLiBJZiBwIGlzIGEgcG9pbnRlcg0KKyAgICAgdG8gYSBzdHJ1Y3QsIHRoZSBuZXh0IGFubm90YXRpb24gYXBwbGllcyB0byBhbGwgZmllbGRzIG9mIHRoZSBzdHJ1Y3QuDQorICAgICovDQorICAgICNkZWZpbmUgX19kZXJlZiAgICAgICAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX2RlcmVmIikNCisgICAgDQorICAgIC8qDQorICAgICBfX3ByZSBfX25leHRfYW5ub3RhdGlvbg0KKyAgICANCisgICAgIFRoZSBuZXh0IGFubm90YXRpb24gYXBwbGllcyBpbiB0aGUgcHJlY29uZGl0aW9uIHN0YXRlDQorICAgICovDQorICAgICNkZWZpbmUgX19wcmUgICAgICAgICAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX3ByZSIpDQorICAgIA0KKyAgICAvKg0KKyAgICAgX19wb3N0IF9fbmV4dF9hbm5vdGF0aW9uDQorICAgIA0KKyAgICAgVGhlIG5leHQgYW5ub3RhdGlvbiBhcHBsaWVzIGluIHRoZSBwb3N0Y29uZGl0aW9uIHN0YXRlDQorICAgICovDQorICAgICNkZWZpbmUgX19wb3N0ICAgICAgICAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX3Bvc3QiKQ0KKyAgICANCisgICAgLyoNCisgICAgIF9fcHJlY29uZCg8ZXhwcj4pDQorICAgIA0KKyAgICAgV2hlbiA8ZXhwcj4gaXMgdHJ1ZSwgdGhlIG5leHQgYW5ub3RhdGlvbiBhcHBsaWVzIGluIHRoZSBwcmVjb25kaXRpb24gc3RhdGUNCisgICAgIChjdXJyZW50bHkgbm90IGVuYWJsZWQpDQorICAgICovDQorICAgICNkZWZpbmUgX19wcmVjb25kKGV4cHIpICAgICAgICAgX19wcmUNCisNCisgICAgLyoNCisgICAgIF9fcG9zdGNvbmQoPGV4cHI+KQ0KKyAgICANCisgICAgIFdoZW4gPGV4cHI+IGlzIHRydWUsIHRoZSBuZXh0IGFubm90YXRpb24gYXBwbGllcyBpbiB0aGUgcG9zdGNvbmRpdGlvbiBzdGF0ZQ0KKyAgICAgKGN1cnJlbnRseSBub3QgZW5hYmxlZCkNCisgICAgKi8NCisgICAgI2RlZmluZSBfX3Bvc3Rjb25kKGV4cHIpICAgICAgICBfX3Bvc3QNCisNCisgICAgLyoNCisgICAgIF9fZXhjZXB0dGhhdA0KKyAgICANCisgICAgIEdpdmVuIGEgc2V0IG9mIGFubm90YXRpb25zIFEgY29udGFpbmluZyBfX2V4Y2VwdHRoYXQgbWF5YmVQLCB0aGUgZWZmZWN0IG9mDQorICAgICB0aGUgZXhjZXB0IGNsYXVzZSBpcyB0byBlcmFzZSBhbnkgUCBvciBub3RQIGFubm90YXRpb25zIChleHBsaWNpdCBvcg0KKyAgICAgaW1wbGllZCkgd2l0aGluIFEgYXQgdGhlIHNhbWUgbGV2ZWwgb2YgZGVyZWZlcmVuY2luZyB0aGF0IHRoZSBleGNlcHQNCisgICAgIGNsYXVzZSBhcHBlYXJzLCBhbmQgdG8gcmVwbGFjZSBpdCB3aXRoIG1heWJlUC4NCisgICAgDQorICAgICAgRXhhbXBsZSAxOiBfX3ZhbGlkIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbCBvbiBhIHBvaW50ZXIgcCBtZWFucyB0aGF0IHRoZQ0KKyAgICAgICAgICAgICAgICAgcG9pbnRlciBtYXkgYmUgbnVsbCwgYW5kIGlzIG90aGVyd2lzZSB2YWxpZCwgdGh1cyBvdmVycmlkaW5nDQorICAgICAgICAgICAgICAgICB0aGUgaW1wbGljaXQgbm90bnVsbCBhbm5vdGF0aW9uIGltcGxpZWQgYnkgX192YWxpZCBvbg0KKyAgICAgICAgICAgICAgICAgcG9pbnRlcnMuDQorICAgIA0KKyAgICAgIEV4YW1wbGUgMjogX192YWxpZCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbCBvbiBhbiBpbnQgKipwIG1lYW5zDQorICAgICAgICAgICAgICAgICB0aGF0IHAgaXMgbm90IG51bGwgKGltcGxpZWQgYnkgdmFsaWQpLCBidXQgdGhlIGVsZW1lbnRzDQorICAgICAgICAgICAgICAgICBwb2ludGVkIHRvIGJ5IHAgY291bGQgYmUgbnVsbCwgYW5kIGFyZSBvdGhlcndpc2UgdmFsaWQuIA0KKyAgICAqLw0KKyAgICAjZGVmaW5lIF9fZXhjZXB0dGhhdCAgICAgICAgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfZXhjZXB0IikNCisgICAgI2RlZmluZSBfX2V4ZWNlcHR0aGF0ICAgICAgICAgICAgICAgX19leGNlcHR0aGF0DQorIA0KKyAgICAvKg0KKyAgICAgX3JlZnBhcmFtDQorICAgIA0KKyAgICAgQWRkZWQgdG8gYWxsIG91dCBwYXJhbWV0ZXIgbWFjcm9zIHRvIGluZGljYXRlIHRoYXQgdGhleSBhcmUgYWxsIHJlZmVyZW5jZQ0KKyAgICAgcGFyYW1ldGVycy4NCisgICAgKi8NCisgICAgI2RlZmluZSBfX3JlZnBhcmFtICAgICAgICAgICAgICAgICAgX19kZXJlZiBfX25vdHJlYWRvbmx5DQorDQorICAgIC8qDQorICAgICBfX2lubmVyXyoNCisgICAgDQorICAgICBIZWxwZXIgbWFjcm9zIHRoYXQgZGlyZWN0bHkgY29ycmVzcG9uZCB0byBjZXJ0YWluIGhpZ2gtbGV2ZWwgYW5ub3RhdGlvbnMuDQorICAgIA0KKyAgICAqLw0KKw0KKyAgICAvKg0KKyAgICAgTWFjcm9zIHRvIGNsYXNzaWZ5IHRoZSBlbnRyeXBvaW50cyBhbmQgaW5kaWNhdGUgdGhlaXIgY2F0ZWdvcnkuDQorICAgIA0KKyAgICAgUHJlLWRlZmluZWQgY29udHJvbCBwb2ludCBjYXRlZ29yaWVzIGluY2x1ZGU6IFJQQywgTFBDLCBEZXZpY2VEcml2ZXIsIFVzZXJUb0tlcm5lbCwgSVNBUEksIENPTS4NCisgICAgDQorICAgICovDQorICAgICNkZWZpbmUgX19pbm5lcl9jb250cm9sX2VudHJ5cG9pbnQoY2F0ZWdvcnkpIF9fZGVjbHNwZWMoIlNBTF9lbnRyeXBvaW50KGNvbnRyb2xFbnRyeSwgIlNQRUNTVFJJTkdJWkUoY2F0ZWdvcnkpIikiKQ0KKw0KKyAgICAvKg0KKyAgICAgUHJlLWRlZmluZWQgZGF0YSBlbnRyeSBwb2ludCBjYXRlZ29yaWVzIGluY2x1ZGU6IFJlZ2lzdHJ5LCBGaWxlLCBOZXR3b3JrLg0KKyAgICAqLw0KKyAgICAjZGVmaW5lIF9faW5uZXJfZGF0YV9lbnRyeXBvaW50KGNhdGVnb3J5KSAgICBfX2RlY2xzcGVjKCJTQUxfZW50cnlwb2ludChkYXRhRW50cnksICJTUEVDU1RSSU5HSVpFKGNhdGVnb3J5KSIpIikNCisNCisgICAgI2RlZmluZSBfX2lubmVyX3N1Y2Nlc3MoZXhwcikgICAgICAgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfc3VjY2VzcygiU1BFQ1NUUklOR0laRShleHByKSIpIikNCisgICAgI2RlZmluZSBfX2lubmVyX2NoZWNrUmV0dXJuICAgICAgICAgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfY2hlY2tSZXR1cm4iKQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfdHlwZWZpeChjdHlwZSkgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF90eXBlZml4KCJTUEVDU1RSSU5HSVpFKGN0eXBlKSIpIikNCisgICAgI2RlZmluZSBfX2lubmVyX292ZXJyaWRlICAgICAgICAgICAgICAgICAgICBfX2RlY2xzcGVjKCJfX292ZXJyaWRlIikNCisgICAgI2RlZmluZSBfX2lubmVyX2NhbGxiYWNrICAgICAgICAgICAgICAgICAgICBfX2RlY2xzcGVjKCJfX2NhbGxiYWNrIikNCisgICAgI2RlZmluZSBfX2lubmVyX2Jsb2Nrc09uKHJlc291cmNlKSAgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfYmxvY2tzT24oIlNQRUNTVFJJTkdJWkUocmVzb3VyY2UpIikiKQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfZmFsbHRocm91Z2hfZGVjICAgICAgICAgICAgIF9faW5saW5lIF9fbm90aHJvdyB2b2lkIF9fRmFsbFRocm91Z2goKSB7fQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfZmFsbHRocm91Z2ggICAgICAgICAgICAgICAgIF9fRmFsbFRocm91Z2goKTsNCisNCisjZWxzZQ0KKyAgICAjZGVmaW5lIF9fbnVsbA0KKyAgICAjZGVmaW5lIF9fbm90bnVsbA0KKyAgICAjZGVmaW5lIF9fbWF5YmVudWxsDQorICAgICNkZWZpbmUgX19yZWFkb25seQ0KKyAgICAjZGVmaW5lIF9fbm90cmVhZG9ubHkNCisgICAgI2RlZmluZSBfX21heWJlcmVhZG9ubHkNCisgICAgI2RlZmluZSBfX3ZhbGlkDQorICAgICNkZWZpbmUgX19ub3R2YWxpZA0KKyAgICAjZGVmaW5lIF9fbWF5YmV2YWxpZA0KKyAgICAjZGVmaW5lIF9fcmVhZGFibGVUbyhleHRlbnQpDQorICAgICNkZWZpbmUgX19lbGVtX3JlYWRhYmxlVG8oc2l6ZSkNCisgICAgI2RlZmluZSBfX2J5dGVfcmVhZGFibGVUbyhzaXplKQ0KKyAgICAjZGVmaW5lIF9fd3JpdGFibGVUbyhzaXplKQ0KKyAgICAjZGVmaW5lIF9fZWxlbV93cml0YWJsZVRvKHNpemUpDQorICAgICNkZWZpbmUgX19ieXRlX3dyaXRhYmxlVG8oc2l6ZSkNCisgICAgI2RlZmluZSBfX2RlcmVmDQorICAgICNkZWZpbmUgX19wcmUNCisgICAgI2RlZmluZSBfX3Bvc3QNCisgICAgI2RlZmluZSBfX3ByZWNvbmQoZXhwcikNCisgICAgI2RlZmluZSBfX3Bvc3Rjb25kKGV4cHIpDQorICAgICNkZWZpbmUgX19leGNlcHR0aGF0DQorICAgICNkZWZpbmUgX19leGVjZXB0dGhhdA0KKyAgICAjZGVmaW5lIF9faW5uZXJfc3VjY2VzcyhleHByKQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfY2hlY2tSZXR1cm4NCisgICAgI2RlZmluZSBfX2lubmVyX3R5cGVmaXgoY3R5cGUpDQorICAgICNkZWZpbmUgX19pbm5lcl9vdmVycmlkZQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfY2FsbGJhY2sNCisgICAgI2RlZmluZSBfX2lubmVyX2Jsb2Nrc09uKHJlc291cmNlKQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfZmFsbHRocm91Z2hfZGVjDQorICAgICNkZWZpbmUgX19pbm5lcl9mYWxsdGhyb3VnaA0KKyAgICAjZGVmaW5lIF9fcmVmcGFyYW0NCisgICAgI2RlZmluZSBfX2lubmVyX2NvbnRyb2xfZW50cnlwb2ludChjYXRlZ29yeSkNCisgICAgI2RlZmluZSBfX2lubmVyX2RhdGFfZW50cnlwb2ludChjYXRlZ29yeSkNCisjZW5kaWYgLyogI2lmICFkZWZpbmVkKF9fbWlkbCkgJiYgZGVmaW5lZChfUFJFRkFTVF8pICovDQorDQorLyogDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0J1ZmZlciBBbm5vdGF0aW9uIERlZmluaXRpb25zDQorDQorQW55IG9mIHRoZXNlIG1heSBiZSB1c2VkIHRvIGRpcmVjdGx5IGFubm90YXRlIGZ1bmN0aW9ucywgYnV0IG9ubHkgb25lIHNob3VsZA0KK2JlIHVzZWQgZm9yIGVhY2ggcGFyYW1ldGVyLiBUbyBkZXRlcm1pbmUgd2hpY2ggYW5ub3RhdGlvbiB0byB1c2UgZm9yIGEgZ2l2ZW4NCitidWZmZXIsIHVzZSB0aGUgdGFibGUgaW4gdGhlIGJ1ZmZlciBhbm5vdGF0aW9ucyBzZWN0aW9uLg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisqLw0KKw0KKyNkZWZpbmUgX19lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25vdG51bGwgX19lbGVtX3dyaXRhYmxlVG8oc2l6ZSkNCisjZGVmaW5lIF9fYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ub3RudWxsIF9fYnl0ZV93cml0YWJsZVRvKHNpemUpDQorI2RlZmluZSBfX2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJlIF9fdmFsaWQgX19wcmUgX19kZXJlZiBfX3JlYWRvbmx5DQorI2RlZmluZSBfX2luX2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW4gX19wcmUgX19lbGVtX3JlYWRhYmxlVG8oc2l6ZSkNCisjZGVmaW5lIF9faW5fYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbiBfX3ByZSBfX2J5dGVfcmVhZGFibGVUbyhzaXplKQ0KKyNkZWZpbmUgX19pbl96ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luIF9fcHJlIF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9faW5fZWNvdW50X3ooc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbl9lY291bnQoc2l6ZSkgX19wcmUgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19pbl9iY291bnRfeihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luX2Jjb3VudChzaXplKSBfX3ByZSBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX2luX256ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW4NCisjZGVmaW5lIF9faW5fZWNvdW50X256KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbl9lY291bnQoc2l6ZSkNCisjZGVmaW5lIF9faW5fYmNvdW50X256KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbl9iY291bnQoc2l6ZSkNCisjZGVmaW5lIF9fb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19lY291bnQoMSkgX19wb3N0IF9fdmFsaWQgX19yZWZwYXJhbQ0KKyNkZWZpbmUgX19vdXRfZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Vjb3VudChzaXplKSBfX3Bvc3QgX192YWxpZCBfX3JlZnBhcmFtDQorI2RlZmluZSBfX291dF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYmNvdW50KHNpemUpIF9fcG9zdCBfX3ZhbGlkIF9fcmVmcGFyYW0NCisjZGVmaW5lIF9fb3V0X2Vjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgICAgX19vdXRfZWNvdW50KHNpemUpIF9fcG9zdCBfX2VsZW1fcmVhZGFibGVUbyhsZW5ndGgpDQorI2RlZmluZSBfX291dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Jjb3VudChzaXplKSBfX3Bvc3QgX19ieXRlX3JlYWRhYmxlVG8obGVuZ3RoKQ0KKyNkZWZpbmUgX19vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnRfcGFydChzaXplLHNpemUpDQorI2RlZmluZSBfX291dF9iY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Jjb3VudF9wYXJ0KHNpemUsc2l6ZSkNCisjZGVmaW5lIF9fb3V0X3ogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wb3N0IF9fdmFsaWQgX19yZWZwYXJhbSBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19vdXRfel9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX192YWxpZCBfX3JlZnBhcmFtIF9fcG9zdCBfX251bGx0ZXJtaW5hdGVkIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19vdXRfZWNvdW50X3ooc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Vjb3VudChzaXplKSBfX3Bvc3QgX192YWxpZCBfX3JlZnBhcmFtIF9fcG9zdCBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX291dF9iY291bnRfeihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYmNvdW50KHNpemUpIF9fcG9zdCBfX3ZhbGlkIF9fcmVmcGFyYW0gX19wb3N0IF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fb3V0X2Vjb3VudF9wYXJ0X3ooc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICAgICAgICAgICAgX19vdXRfZWNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpIF9fcG9zdCBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX291dF9iY291bnRfcGFydF96KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Jjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19vdXRfZWNvdW50X2Z1bGxfeihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnRfZnVsbChzaXplKSBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19vdXRfYmNvdW50X2Z1bGxfeihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9iY291bnRfZnVsbChzaXplKSBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19vdXRfbnogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX192YWxpZCBfX3JlZnBhcmFtIF9fcG9zdA0KKyNkZWZpbmUgX19vdXRfbnpfb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX192YWxpZCBfX3JlZnBhcmFtIF9fcG9zdCBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9fb3V0X2Vjb3VudF9ueihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19lY291bnQoc2l6ZSkgX19wb3N0IF9fdmFsaWQgX19yZWZwYXJhbQ0KKyNkZWZpbmUgX19vdXRfYmNvdW50X256KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Jjb3VudChzaXplKSBfX3Bvc3QgX192YWxpZCBfX3JlZnBhcmFtDQorI2RlZmluZSBfX2lub3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJlIF9fdmFsaWQgX19wb3N0IF9fdmFsaWQgX19yZWZwYXJhbQ0KKyNkZWZpbmUgX19pbm91dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnQoc2l6ZSkgX19wcmUgX192YWxpZA0KKyNkZWZpbmUgX19pbm91dF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9iY291bnQoc2l6ZSkgX19wcmUgX192YWxpZA0KKyNkZWZpbmUgX19pbm91dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgX19wcmUgX192YWxpZCBfX3ByZSBfX2VsZW1fcmVhZGFibGVUbyhsZW5ndGgpDQorI2RlZmluZSBfX2lub3V0X2Jjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Jjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSBfX3ByZSBfX3ZhbGlkIF9fcHJlIF9fYnl0ZV9yZWFkYWJsZVRvKGxlbmd0aCkNCisjZGVmaW5lIF9faW5vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9lY291bnRfcGFydChzaXplLHNpemUpDQorI2RlZmluZSBfX2lub3V0X2Jjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5vdXRfYmNvdW50X3BhcnQoc2l6ZSxzaXplKQ0KKyNkZWZpbmUgX19pbm91dF96ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lub3V0IF9fcHJlIF9fbnVsbHRlcm1pbmF0ZWQgX19wb3N0IF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9faW5vdXRfZWNvdW50X3ooc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9lY291bnQoc2l6ZSkgX19wcmUgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19pbm91dF9iY291bnRfeihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lub3V0X2Jjb3VudChzaXplKSBfX3ByZSBfX251bGx0ZXJtaW5hdGVkIF9fcG9zdCBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX2lub3V0X256ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5vdXQNCisjZGVmaW5lIF9faW5vdXRfZWNvdW50X256KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9lY291bnQoc2l6ZSkgDQorI2RlZmluZSBfX2lub3V0X2Jjb3VudF9ueihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5vdXRfYmNvdW50KHNpemUpIA0KKyNkZWZpbmUgX19lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19pbl9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19pbl9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luX2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19pbl9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luX2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19pbl96X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luX29wdCBfX3ByZSBfX251bGx0ZXJtaW5hdGVkIA0KKyNkZWZpbmUgX19pbl9lY291bnRfel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luX2Vjb3VudF9vcHQoc2l6ZSkgX19wcmUgX19udWxsdGVybWluYXRlZCANCisjZGVmaW5lIF9faW5fYmNvdW50X3pfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbl9iY291bnRfb3B0KHNpemUpIF9fcHJlIF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9faW5fbnpfb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbl9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorI2RlZmluZSBfX2luX2Vjb3VudF9uel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5fZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICANCisjZGVmaW5lIF9faW5fYmNvdW50X256X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbl9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyNkZWZpbmUgX19vdXRfb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19vdXRfZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19vdXRfYmNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19vdXRfZWNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19vdXRfYmNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICBfX291dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19vdXRfZWNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19vdXRfYmNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9iY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19vdXRfZWNvdW50X3pfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnRfb3B0KHNpemUpIF9fcG9zdCBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX291dF9iY291bnRfel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Jjb3VudF9vcHQoc2l6ZSkgX19wb3N0IF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fb3V0X2Vjb3VudF9wYXJ0X3pfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgX19vdXRfZWNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19vdXRfYmNvdW50X3BhcnRfel9vcHQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICAgICAgICBfX291dF9iY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpIF9fcG9zdCBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX291dF9lY291bnRfZnVsbF96X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Vjb3VudF9mdWxsX29wdChzaXplKSBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19vdXRfYmNvdW50X2Z1bGxfel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9iY291bnRfZnVsbF9vcHQoc2l6ZSkgX19wb3N0IF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fb3V0X2Vjb3VudF9uel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19vdXRfZWNvdW50X29wdChzaXplKSBfX3Bvc3QgX19udWxsdGVybWluYXRlZCAgICAgICAgICAgICAgICAgICAgICAgDQorI2RlZmluZSBfX291dF9iY291bnRfbnpfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Jjb3VudF9vcHQoc2l6ZSkgX19wb3N0IF9fbnVsbHRlcm1pbmF0ZWQgICAgICAgICAgICAgICAgICAgICAgICANCisjZGVmaW5lIF9faW5vdXRfb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9faW5vdXRfZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9faW5vdXRfYmNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9faW5vdXRfZWNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgX19pbm91dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9faW5vdXRfYmNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgX19pbm91dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9faW5vdXRfZWNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9lY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9faW5vdXRfYmNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9iY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9faW5vdXRfel9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9vcHQgX19wcmUgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19pbm91dF9lY291bnRfel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lub3V0X2Vjb3VudF9vcHQoc2l6ZSkgX19wcmUgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19pbm91dF9lY291bnRfel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lub3V0X2Vjb3VudF9vcHQoc2l6ZSkgX19wcmUgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19pbm91dF9iY291bnRfel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lub3V0X2Jjb3VudF9vcHQoc2l6ZSkgDQorI2RlZmluZSBfX2lub3V0X256X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5vdXRfb3B0DQorI2RlZmluZSBfX2lub3V0X2Vjb3VudF9uel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5vdXRfZWNvdW50X29wdChzaXplKQ0KKyNkZWZpbmUgX19pbm91dF9iY291bnRfbnpfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lub3V0X2Jjb3VudF9vcHQoc2l6ZSkNCisjZGVmaW5lIF9fZGVyZWZfZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19lY291bnQoMSkgX19wb3N0IF9fZWxlbV9yZWFkYWJsZVRvKDEpIF9fcG9zdCBfX2RlcmVmIF9fbm90bnVsbCBfX3Bvc3QgX19kZXJlZiBfX2VsZW1fd3JpdGFibGVUbyhzaXplKQ0KKyNkZWZpbmUgX19kZXJlZl9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Vjb3VudCgxKSBfX3Bvc3QgX19lbGVtX3JlYWRhYmxlVG8oMSkgX19wb3N0IF9fZGVyZWYgX19ub3RudWxsIF9fcG9zdCBfX2RlcmVmIF9fYnl0ZV93cml0YWJsZVRvKHNpemUpDQorI2RlZmluZSBfX2RlcmVmX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfZWNvdW50KDEpIF9fcG9zdCBfX2RlcmVmIF9fdmFsaWQgX19yZWZwYXJhbQ0KKyNkZWZpbmUgX19kZXJlZl9vdXRfZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2Vjb3VudChzaXplKSBfX3Bvc3QgX19kZXJlZiBfX3ZhbGlkIF9fcmVmcGFyYW0NCisjZGVmaW5lIF9fZGVyZWZfb3V0X2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9iY291bnQoc2l6ZSkgX19wb3N0IF9fZGVyZWYgX192YWxpZCBfX3JlZnBhcmFtDQorI2RlZmluZSBfX2RlcmVmX291dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudChzaXplKSBfX3Bvc3QgX19kZXJlZiBfX2VsZW1fcmVhZGFibGVUbyhsZW5ndGgpDQorI2RlZmluZSBfX2RlcmVmX291dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudChzaXplKSBfX3Bvc3QgX19kZXJlZiBfX2J5dGVfcmVhZGFibGVUbyhsZW5ndGgpDQorI2RlZmluZSBfX2RlcmVmX291dF9lY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudF9wYXJ0KHNpemUsc2l6ZSkNCisjZGVmaW5lIF9fZGVyZWZfb3V0X2Jjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfYmNvdW50X3BhcnQoc2l6ZSxzaXplKQ0KKyNkZWZpbmUgX19kZXJlZl9vdXRfeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX19kZXJlZiBfX3ZhbGlkIF9fcmVmcGFyYW0gX19wb3N0IF9fZGVyZWYgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfZWNvdW50X3ooc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9lY291bnQoc2l6ZSkgX19wb3N0IF9fZGVyZWYgX19udWxsdGVybWluYXRlZCAgDQorI2RlZmluZSBfX2RlcmVmX291dF9iY291bnRfeihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudChzaXplKSBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkICANCisjZGVmaW5lIF9fZGVyZWZfb3V0X256ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXQNCisjZGVmaW5lIF9fZGVyZWZfb3V0X2Vjb3VudF9ueihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfZWNvdW50KHNpemUpICAgDQorI2RlZmluZSBfX2RlcmVmX291dF9iY291bnRfbnooc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudChzaXplKSAgIA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25vdG51bGwgX19lbGVtX3JlYWRhYmxlVG8oMSkgX19wcmUgX19kZXJlZiBfX3ZhbGlkIF9fcG9zdCBfX2RlcmVmIF9fdmFsaWQgX19yZWZwYXJhbQ0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF96ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0IF9fcHJlIF9fZGVyZWYgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX2RlcmVmX2lub3V0X2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXQgX19wcmUgX19kZXJlZiBfX2VsZW1fd3JpdGFibGVUbyhzaXplKSBfX3Bvc3QgX19kZXJlZiBfX2VsZW1fd3JpdGFibGVUbyhzaXplKQ0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0IF9fcHJlIF9fZGVyZWYgX19ieXRlX3dyaXRhYmxlVG8oc2l6ZSkgX19wb3N0IF9fZGVyZWYgX19ieXRlX3dyaXRhYmxlVG8oc2l6ZSkNCisjZGVmaW5lIF9fZGVyZWZfaW5vdXRfZWNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9lY291bnQoc2l6ZSkgX19wcmUgX19kZXJlZiBfX2VsZW1fcmVhZGFibGVUbyhsZW5ndGgpIF9fcG9zdCBfX2RlcmVmIF9fZWxlbV9yZWFkYWJsZVRvKGxlbmd0aCkNCisjZGVmaW5lIF9fZGVyZWZfaW5vdXRfYmNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnQoc2l6ZSkgX19wcmUgX19kZXJlZiBfX2J5dGVfcmVhZGFibGVUbyhsZW5ndGgpIF9fcG9zdCBfX2RlcmVmIF9fYnl0ZV9yZWFkYWJsZVRvKGxlbmd0aCkNCisjZGVmaW5lIF9fZGVyZWZfaW5vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9lY291bnRfcGFydChzaXplLHNpemUpDQorI2RlZmluZSBfX2RlcmVmX2lub3V0X2Jjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfYmNvdW50X3BhcnQoc2l6ZSxzaXplKQ0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF96ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0IF9fcHJlIF9fZGVyZWYgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX2RlcmVmX2lub3V0X2Vjb3VudF96KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfZWNvdW50KHNpemUpIF9fcHJlIF9fZGVyZWYgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkICAgDQorI2RlZmluZSBfX2RlcmVmX2lub3V0X2Jjb3VudF96KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfZWNvdW50KHNpemUpIF9fcHJlIF9fZGVyZWYgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkICANCisjZGVmaW5lIF9fZGVyZWZfaW5vdXRfbnogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfbnooc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudChzaXplKSAgIA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9iY291bnRfbnooc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudChzaXplKSAgIA0KKyNkZWZpbmUgX19kZXJlZl9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfYmNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfZWNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfYmNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfZWNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9lY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfYmNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfel9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX19kZXJlZiBfX3ZhbGlkIF9fcmVmcGFyYW0gX19leGVjZXB0dGhhdCBfX21heWJlbnVsbCBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX2RlcmVmX291dF9lY291bnRfel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudF9vcHQoc2l6ZSkgX19wb3N0IF9fZGVyZWYgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfYmNvdW50X3pfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnRfb3B0KHNpemUpIF9fcG9zdCBfX2RlcmVmIF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fZGVyZWZfb3V0X256X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfb3B0DQorI2RlZmluZSBfX2RlcmVmX291dF9lY291bnRfbnpfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudF9vcHQoc2l6ZSkNCisjZGVmaW5lIF9fZGVyZWZfb3V0X2Jjb3VudF9uel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfYmNvdW50X29wdChzaXplKQ0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9iY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Jjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9iY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Jjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF96X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X29wdCBfX3ByZSBfX2RlcmVmIF9fbnVsbHRlcm1pbmF0ZWQgX19wb3N0IF9fZGVyZWYgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudF9vcHQoc2l6ZSkgX19wcmUgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkIF9fcG9zdCBfX2RlcmVmIF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fZGVyZWZfaW5vdXRfYmNvdW50X3pfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnRfb3B0KHNpemUpIF9fcHJlIF9fZGVyZWYgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX2RlcmVmX2lub3V0X256X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfb3B0IA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfbnpfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudF9vcHQoc2l6ZSkNCisjZGVmaW5lIF9fZGVyZWZfaW5vdXRfYmNvdW50X256X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnRfb3B0KHNpemUpDQorI2RlZmluZSBfX2RlcmVmX29wdF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3B0X291dCBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfZWNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfYmNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfYmNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfZWNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfYmNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9lY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9iY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfYmNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF96ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3B0X2lub3V0IF9fcHJlIF9fZGVyZWYgX19udWxsdGVybWluYXRlZCBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9lY291bnRfeihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudChzaXplKSBfX3ByZSBfX2RlcmVmIF9fbnVsbHRlcm1pbmF0ZWQgX19wb3N0IF9fZGVyZWYgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5vdXRfYmNvdW50X3ooc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX29wdF9pbm91dF9iY291bnQoc2l6ZSkgX19wcmUgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkIF9fcG9zdCBfX2RlcmVmIF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X256ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vcHRfaW5vdXQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9ueihzaXplKSAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vcHRfaW5vdXRfZWNvdW50KHNpemUpDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9iY291bnRfbnooc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudChzaXplKQ0KKyNkZWZpbmUgX19kZXJlZl9vcHRfZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2Vjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfYmNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2Jjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X2Vjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X2Jjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X2Vjb3VudF9wYXJ0X29wdChzaXplLGxlbmd0aCkgICAgICAgICAgICBfX2RlcmVmX291dF9lY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X2Jjb3VudF9wYXJ0X29wdChzaXplLGxlbmd0aCkgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X2Vjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9lY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X2Jjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X3pfb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX19kZXJlZiBfX3ZhbGlkIF9fcmVmcGFyYW0gX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbCBfX3Bvc3QgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfZWNvdW50X3pfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3B0X291dF9lY291bnRfb3B0KHNpemUpIF9fcG9zdCBfX2RlcmVmIF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X291dF9iY291bnRfel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vcHRfb3V0X2Jjb3VudF9vcHQoc2l6ZSkgX19wb3N0IF9fZGVyZWYgX19udWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X256X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX29wdF9vdXRfb3B0DQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfZWNvdW50X256X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3B0X291dF9lY291bnRfb3B0KHNpemUpICAgIA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X2Jjb3VudF9uel9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX29wdF9vdXRfYmNvdW50X29wdChzaXplKSAgICANCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9wYXJ0X29wdChzaXplLGxlbmd0aCkgICAgICAgICAgX19kZXJlZl9pbm91dF9lY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudF9wYXJ0X29wdChzaXplLGxlbmd0aCkgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9lY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X3pfb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vcHRfaW5vdXRfb3B0ICBfX3ByZSBfX2RlcmVmIF9fbnVsbHRlcm1pbmF0ZWQgX19wb3N0IF9fZGVyZWYgX19udWxsdGVybWluYXRlZCAgICAgICAgICAgICANCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF96X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vcHRfaW5vdXRfZWNvdW50X29wdChzaXplKSAgX19wcmUgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkIF9fcG9zdCBfX2RlcmVmIF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudF96X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vcHRfaW5vdXRfYmNvdW50X29wdChzaXplKSAgX19wcmUgX19kZXJlZiBfX251bGx0ZXJtaW5hdGVkIF9fcG9zdCBfX2RlcmVmIF9fbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X256X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vcHRfaW5vdXRfb3B0ICAgICAgICAgICAgICAgDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9lY291bnRfbnpfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9vcHQoc2l6ZSkgIA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5vdXRfYmNvdW50X256X29wdChzaXplKSAgICAgICAgICAgICAgICAgICBfX2RlcmVmX29wdF9pbm91dF9iY291bnRfb3B0KHNpemUpICANCisNCisvKg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitBZHZhbmNlZCBBbm5vdGF0aW9uIERlZmluaXRpb25zDQorDQorQW55IG9mIHRoZXNlIG1heSBiZSB1c2VkIHRvIGRpcmVjdGx5IGFubm90YXRlIGZ1bmN0aW9ucywgYW5kIG1heSBiZSB1c2VkIGluDQorY29tYmluYXRpb24gd2l0aCBlYWNoIG90aGVyIG9yIHdpdGggcmVndWxhciBidWZmZXIgbWFjcm9zLiBGb3IgYW4gZXhwbGFuYXRpb24NCitvZiBlYWNoIGFubm90YXRpb24sIHNlZSB0aGUgYWR2YW5jZWQgYW5ub3RhdGlvbnMgc2VjdGlvbi4NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorKi8NCisNCisjZGVmaW5lIF9fc3VjY2VzcyhleHByKSAgICAgICAgICAgICAgICAgICAgIF9faW5uZXJfc3VjY2VzcyhleHByKQ0KKyNkZWZpbmUgX19udWxsdGVybWluYXRlZCAgICAgICAgICAgICAgICAgICAgX19yZWFkYWJsZVRvKHNlbnRpbmVsKDApKQ0KKyNkZWZpbmUgX19udWxsbnVsbHRlcm1pbmF0ZWQNCisjZGVmaW5lIF9fcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJlIF9fbnVsbA0KKyNkZWZpbmUgX19jaGVja1JldHVybiAgICAgICAgICAgICAgICAgICAgICAgX19pbm5lcl9jaGVja1JldHVybg0KKyNkZWZpbmUgX190eXBlZml4KGN0eXBlKSAgICAgICAgICAgICAgICAgICAgX19pbm5lcl90eXBlZml4KGN0eXBlKQ0KKyNkZWZpbmUgX19vdmVycmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm5lcl9vdmVycmlkZQ0KKyNkZWZpbmUgX19jYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm5lcl9jYWxsYmFjaw0KKyNkZWZpbmUgX19mb3JtYXRfc3RyaW5nDQorI2RlZmluZSBfX2Jsb2Nrc09uKHJlc291cmNlKSAgICAgICAgICAgICAgICBfX2lubmVyX2Jsb2Nrc09uKHJlc291cmNlKQ0KKyNkZWZpbmUgX19jb250cm9sX2VudHJ5cG9pbnQoY2F0ZWdvcnkpICAgICAgX19pbm5lcl9jb250cm9sX2VudHJ5cG9pbnQoY2F0ZWdvcnkpDQorI2RlZmluZSBfX2RhdGFfZW50cnlwb2ludChjYXRlZ29yeSkgICAgICAgICBfX2lubmVyX2RhdGFfZW50cnlwb2ludChjYXRlZ29yeSkNCisNCisjaWZuZGVmIF9fZmFsbHRocm91Z2gNCisgICAgX19pbm5lcl9mYWxsdGhyb3VnaF9kZWMNCisgICAgI2RlZmluZSBfX2ZhbGx0aHJvdWdoIF9faW5uZXJfZmFsbHRocm91Z2gNCisjZW5kaWYNCisNCisjaWZuZGVmIF9fYW5hbHlzaXNfYXNzdW1lDQorI2lmZGVmIF9QUkVGQVNUXw0KKyNkZWZpbmUgX19hbmFseXNpc19hc3N1bWUoZXhwcikgX19hc3N1bWUoZXhwcikNCisjZWxzZQ0KKyNkZWZpbmUgX19hbmFseXNpc19hc3N1bWUoZXhwcikgDQorI2VuZGlmDQorI2VuZGlmDQorDQorI2lmZGVmICBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCisNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL01pY3Jvc29mdCBTREsvaW5jbHVkZS9zcGVjc3RyaW5ncy5oIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvc3BlY3N0cmluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGNkZDMzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvc3BlY3N0cmluZ3MuaApAQCAtMCwwICsxLDk3OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogU3BlY1N0cmluZ3MuaCAtIG1hcmtlcnMgZm9yIGRvY3VtZW50aW5nIHRoZSBzZW1hbnRpY3Mgb2YgQVBJcyAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIFZlcnNpb24gMS4wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLy8gQEBCRUdJTl9EREtTUExJVA0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBJbnRyb2R1Y3Rpb24NCisvLw0KKy8vIFNwZWNTdHJpbmdzLmggcHJvdmlkZXMgYSBzZXQgb2YgYW5ub3RhdGlvbnMgdG8gZGVzY3JpYmUgaG93IGEgZnVuY3Rpb24gdXNlcyBpdHMNCisvLyBwYXJhbWV0ZXJzIC0gdGhlIGFzc3VtcHRpb25zIGl0IG1ha2VzIGFib3V0IHRoZW0sIGFuZCB0aGUgZ3VhcmFudGVlcyBpdCBtYWtlcw0KKy8vIHVwb24gZmluaXNoaW5nLg0KKy8vDQorLy8gQW5ub3RhdGlvbnMgbWF5IGJlIHBsYWNlZCBiZWZvcmUgZWl0aGVyIGEgZnVuY3Rpb24gcGFyYW1ldGVyJ3MgdHlwZSBvciBpdHMgcmV0dXJuDQorLy8gdHlwZSwgYW5kIGRlc2NyaWJlIHRoZSBmdW5jdGlvbidzIGJlaGF2aW9yIHJlZ2FyZGluZyB0aGUgcGFyYW1ldGVyIG9yIHJldHVybiB2YWx1ZS4NCisvLyBUaGVyZSBhcmUgdHdvIGNsYXNzZXMgb2YgYW5ub3RhdGlvbnM6IGJ1ZmZlciBhbm5vdGF0aW9ucyBhbmQgYWR2YW5jZWQgYW5ub3RhdGlvbnMuDQorLy8gQnVmZmVyIGFubm90YXRpb25zIGRlc2NyaWJlIGhvdyBmdW5jdGlvbnMgdXNlIHRoZWlyIHBvaW50ZXIgcGFyYW1ldGVycywgYW5kDQorLy8gYWR2YW5jZWQgYW5ub3RhdGlvbnMgZWl0aGVyIGRlc2NyaWJlIGNvbXBsZXgvdW51c3VhbCBidWZmZXIgYmVoYXZpb3IsIG9yIHByb3ZpZGUNCisvLyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgcGFyYW1ldGVyIHRoYXQgaXMgbm90IG90aGVyd2lzZSBleHByZXNzaWJsZS4NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBCdWZmZXIgQW5ub3RhdGlvbnMNCisvLw0KKy8vIFRoZSBtb3N0IGltcG9ydGFudCBhbm5vdGF0aW9ucyBpbiBTcGVjU3RyaW5ncy5oIHByb3ZpZGUgYSBjb25zaXN0ZW50IHdheSB0byBhbm5vdGF0ZQ0KKy8vIGJ1ZmZlciBwYXJhbWV0ZXJzIG9yIHJldHVybiB2YWx1ZXMgZm9yIGEgZnVuY3Rpb24uIEVhY2ggb2YgdGhlc2UgYW5ub3RhdGlvbnMgZGVzY3JpYmVzDQorLy8gYSBzaW5nbGUgYnVmZmVyICh3aGljaCBjb3VsZCBiZSBhIHN0cmluZywgYSBmaXhlZC1sZW5ndGggb3IgdmFyaWFibGUtbGVuZ3RoIGFycmF5LA0KKy8vIG9yIGp1c3QgYSBwb2ludGVyKSB0aGF0IHRoZSBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aDogd2hlcmUgaXQgaXMsIGhvdyBsYXJnZSBpdCBpcywNCisvLyBob3cgbXVjaCBpcyBpbml0aWFsaXplZCwgYW5kIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMgd2l0aCBpdC4NCisvLw0KKy8vIFRoZSBhcHByb3ByaWF0ZSBtYWNybyBmb3IgYSBnaXZlbiBidWZmZXIgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHRoZSB0YWJsZSBiZWxvdy4NCisvLyBKdXN0IHBpY2sgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcyBmcm9tIGVhY2ggY2F0ZWdvcnksIGFuZCBjb21iaW5lIHRoZW0gdG9nZXRoZXINCisvLyB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlLiBTb21lIGNvbWJpbmF0aW9ucyBvZiB2YWx1ZXMgZG8gbm90IG1ha2Ugc2Vuc2UgYXMgYnVmZmVyDQorLy8gYW5ub3RhdGlvbnMuIE9ubHkgbWVhbmluZ2Z1bCBhbm5vdGF0aW9ucyBjYW4gYmUgYWRkZWQgdG8geW91ciBjb2RlOyBmb3IgYSBsaXN0IG9mDQorLy8gdGhlc2UsIHNlZSB0aGUgYnVmZmVyIGFubm90YXRpb24gZGVmaW5pdGlvbnMgc2VjdGlvbi4NCisvLw0KKy8vIE9ubHkgYSBzaW5nbGUgYnVmZmVyIGFubm90YXRpb24gc2hvdWxkIGJlIHVzZWQgZm9yIGVhY2ggcGFyYW1ldGVyLg0KKy8vDQorLy8gfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tfA0KKy8vIHwgICBMZXZlbCAgICB8ICAgVXNhZ2UgICAgfCAgU2l6ZSAgIHwgT3V0cHV0IHwgT3B0aW9uYWwgfCAgUGFyYW1ldGVycyAgIHwNCisvLyB8LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18DQorLy8gfCA8PiAgICAgICAgIHwgPD4gICAgICAgICB8IDw+ICAgICAgfCA8PiAgICAgfCA8PiAgICAgICB8IDw+ICAgICAgICAgICAgfA0KKy8vIHwgX2RlcmVmICAgICB8IF9pbiAgICAgICAgfCBfZWNvdW50IHwgX2Z1bGwgIHwgX29wdCAgICAgfCAoc2l6ZSkgICAgICAgIHwNCisvLyB8IF9kZXJlZl9vcHQgfCBfb3V0ICAgICAgIHwgX2Jjb3VudCB8IF9wYXJ0ICB8ICAgICAgICAgIHwgKHNpemUsbGVuZ3RoKSB8DQorLy8gfCAgICAgICAgICAgIHwgX2lub3V0ICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgfA0KKy8vIHwgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgIHwNCisvLyB8LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18DQorLy8NCisvLyBMZXZlbDogRGVzY3JpYmVzIHRoZSBidWZmZXIgcG9pbnRlcidzIGxldmVsIG9mIGluZGlyZWN0aW9uIGZyb20gdGhlIHBhcmFtZXRlciBvcg0KKy8vICAgICAgICAgIHJldHVybiB2YWx1ZSAncCcuDQorLy8NCisvLyA8PiAgICAgICAgIDogcCBpcyB0aGUgYnVmZmVyIHBvaW50ZXIuDQorLy8gX2RlcmVmICAgICA6ICpwIGlzIHRoZSBidWZmZXIgcG9pbnRlci4gcCBtdXN0IG5vdCBiZSBOVUxMLg0KKy8vIF9kZXJlZl9vcHQgOiAqcCBtYXkgYmUgdGhlIGJ1ZmZlciBwb2ludGVyLiBwIG1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIHRoZSByZXN0IG9mDQorLy8gICAgICAgICAgICAgICAgdGhlIGFubm90YXRpb24gaXMgaWdub3JlZC4NCisvLw0KKy8vIFVzYWdlOiBEZXNjcmliZXMgaG93IHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBidWZmZXIuDQorLy8NCisvLyA8PiAgICAgOiBUaGUgYnVmZmVyIGlzIG5vdCBhY2Nlc3NlZC4gSWYgdXNlZCBvbiB0aGUgcmV0dXJuIHZhbHVlIG9yIHdpdGggX2RlcmVmLCB0aGUNCisvLyAgICAgICAgICAgIGZ1bmN0aW9uIHdpbGwgcHJvdmlkZSB0aGUgYnVmZmVyLCBhbmQgaXQgd2lsbCBiZSB1bmluaXRpYWxpemVkIGF0IGV4aXQuDQorLy8gICAgICAgICAgICBPdGhlcndpc2UsIHRoZSBjYWxsZXIgbXVzdCBwcm92aWRlIHRoZSBidWZmZXIuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZA0KKy8vICAgICAgICAgICAgZm9yIGFsbG9jIGFuZCBmcmVlIGZ1bmN0aW9ucy4NCisvLyBfaW4gICAgOiBUaGUgZnVuY3Rpb24gd2lsbCBvbmx5IHJlYWQgZnJvbSB0aGUgYnVmZmVyLiBUaGUgY2FsbGVyIG11c3QgcHJvdmlkZSB0aGUNCisvLyAgICAgICAgICAgIGJ1ZmZlciBhbmQgaW5pdGlhbGl6ZSBpdC4NCisvLyBfb3V0ICAgOiBUaGUgZnVuY3Rpb24gd2lsbCBvbmx5IHdyaXRlIHRvIHRoZSBidWZmZXIuIElmIHVzZWQgb24gdGhlIHJldHVybiB2YWx1ZSBvcg0KKy8vICAgICAgICAgICAgd2l0aCBfZGVyZWYsIHRoZSBmdW5jdGlvbiB3aWxsIHByb3ZpZGUgdGhlIGJ1ZmZlciBhbmQgaW5pdGlhbGl6ZSBpdC4NCisvLyAgICAgICAgICAgIE90aGVyd2lzZSwgdGhlIGNhbGxlciBtdXN0IHByb3ZpZGUgdGhlIGJ1ZmZlciwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsDQorLy8gICAgICAgICAgICBpbml0aWFsaXplIGl0Lg0KKy8vIF9pbm91dCA6IFRoZSBmdW5jdGlvbiBtYXkgZnJlZWx5IHJlYWQgZnJvbSBhbmQgd3JpdGUgdG8gdGhlIGJ1ZmZlci4gVGhlIGNhbGxlciBtdXN0DQorLy8gICAgICAgICAgICBwcm92aWRlIHRoZSBidWZmZXIgYW5kIGluaXRpYWxpemUgaXQuIElmIHVzZWQgd2l0aCBfZGVyZWYsIHRoZSBidWZmZXIgbWF5DQorLy8gICAgICAgICAgICBiZSByZWFsbG9jYXRlZCBieSB0aGUgZnVuY3Rpb24uDQorLy8NCisvLyBTaXplOiBEZXNjcmliZXMgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGJ1ZmZlci4gVGhpcyBtYXkgYmUgbGVzcyB0aGFuIHRoZSBzcGFjZSBhY3R1YWxseQ0KKy8vICAgICAgICAgYWxsb2NhdGVkIGZvciB0aGUgYnVmZmVyLCBpbiB3aGljaCBjYXNlIGl0IGRlc2NyaWJlcyB0aGUgYWNjZXNzaWJsZSBhbW91bnQuDQorLy8NCisvLyA8PiAgICAgIDogTm8gYnVmZmVyIHNpemUgaXMgZ2l2ZW4uIElmIHRoZSB0eXBlIHNwZWNpZmllcyB0aGUgYnVmZmVyIHNpemUgKHN1Y2ggYXMNCisvLyAgICAgICAgICAgICB3aXRoIExQU1RSIGFuZCBMUFdTVFIpLCB0aGF0IGFtb3VudCBpcyB1c2VkLiBPdGhlcndpc2UsIHRoZSBidWZmZXIgaXMgb25lDQorLy8gICAgICAgICAgICAgZWxlbWVudCBsb25nLiBNdXN0IGJlIHVzZWQgd2l0aCBfaW4sIF9vdXQsIG9yIF9pbm91dC4NCisvLyBfZWNvdW50IDogVGhlIGJ1ZmZlciBzaXplIGlzIGFuIGV4cGxpY2l0IGVsZW1lbnQgY291bnQuDQorLy8gX2Jjb3VudCA6IFRoZSBidWZmZXIgc2l6ZSBpcyBhbiBleHBsaWNpdCBieXRlIGNvdW50Lg0KKy8vDQorLy8gT3V0cHV0OiBEZXNjcmliZXMgaG93IG11Y2ggb2YgdGhlIGJ1ZmZlciB3aWxsIGJlIGluaXRpYWxpemVkIGJ5IHRoZSBmdW5jdGlvbi4gRm9yDQorLy8gICAgICAgICAgIF9pbm91dCBidWZmZXJzLCB0aGlzIGFsc28gZGVzY3JpYmVzIGhvdyBtdWNoIGlzIGluaXRpYWxpemVkIGF0IGVudHJ5LiBPbWl0IHRoaXMNCisvLyAgICAgICAgICAgY2F0ZWdvcnkgZm9yIF9pbiBidWZmZXJzOyB0aGV5IG11c3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQgYnkgdGhlIGNhbGxlci4NCisvLw0KKy8vIDw+ICAgIDogVGhlIHR5cGUgc3BlY2lmaWVzIGhvdyBtdWNoIGlzIGluaXRpYWxpemVkLiBGb3IgaW5zdGFuY2UsIGEgZnVuY3Rpb24gaW5pdGlhbGl6aW5nDQorLy8gICAgICAgICAgIGFuIExQV1NUUiBtdXN0IE5VTEwtdGVybWluYXRlIHRoZSBzdHJpbmcuDQorLy8gX2Z1bGwgOiBUaGUgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIGVudGlyZSBidWZmZXIuDQorLy8gX3BhcnQgOiBUaGUgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgcGFydCBvZiB0aGUgYnVmZmVyLCBhbmQgZXhwbGljaXRseSBpbmRpY2F0ZXMgaG93IG11Y2guDQorLy8NCisvLyBPcHRpb25hbDogRGVzY3JpYmVzIGlmIHRoZSBidWZmZXIgaXRzZWxmIGlzIG9wdGlvbmFsLg0KKy8vDQorLy8gPD4gICA6IFRoZSBwb2ludGVyIHRvIHRoZSBidWZmZXIgbXVzdCBub3QgYmUgTlVMTC4NCisvLyBfb3B0IDogVGhlIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBtaWdodCBiZSBOVUxMLiBJdCB3aWxsIGJlIGNoZWNrZWQgYmVmb3JlIGJlaW5nIGRlcmVmZXJlbmNlZC4NCisvLw0KKy8vIFBhcmFtZXRlcnM6IEdpdmVzIGV4cGxpY2l0IGNvdW50cyBmb3IgdGhlIHNpemUgYW5kIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KKy8vDQorLy8gPD4gICAgICAgICAgICA6IFRoZXJlIGlzIG5vIGV4cGxpY2l0IGNvdW50LiBVc2Ugd2hlbiBuZWl0aGVyIF9lY291bnQgbm9yIF9iY291bnQgaXMgdXNlZC4NCisvLyAoc2l6ZSkgICAgICAgIDogT25seSB0aGUgYnVmZmVyJ3MgdG90YWwgc2l6ZSBpcyBnaXZlbi4gVXNlIHdpdGggX2Vjb3VudCBvciBfYmNvdW50IGJ1dCBub3QgX3BhcnQuDQorLy8gKHNpemUsbGVuZ3RoKSA6IFRoZSBidWZmZXIncyB0b3RhbCBzaXplIGFuZCBpbml0aWFsaXplZCBsZW5ndGggYXJlIGdpdmVuLiBVc2Ugd2l0aCBfZWNvdW50X3BhcnQNCisvLyAgICAgICAgICAgICAgICAgICBhbmQgX2Jjb3VudF9wYXJ0Lg0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEJ1ZmZlciBBbm5vdGF0aW9uIEV4YW1wbGVzDQorLy8NCisvLyBMV1NUREFQSV8oQk9PTCkgU3RyVG9JbnRFeEEoDQorLy8gICAgIExQQ1NUUiBwc3pTdHJpbmcsICAgICAgICAgICAgICAgICAgICAvLyBObyBhbm5vdGF0aW9uIHJlcXVpcmVkLCBjb25zdCBpbXBsaWVzIF9faW4uDQorLy8gICAgIERXT1JEIGR3RmxhZ3MsDQorLy8gICAgIF9fb3V0IGludCAqcGlSZXQgICAgICAgICAgICAgICAgICAgICAvLyBBIHBvaW50ZXIgd2hvc2UgZGVyZWZlcmVuY2Ugd2lsbCBiZSBmaWxsZWQgaW4uDQorLy8gKTsNCisvLw0KKy8vIHZvaWQgTXlQYWludGluZ0Z1bmN0aW9uKA0KKy8vICAgICBfX2luIEhXTkQgaHduZENvbnRyb2wsICAgICAgICAgICAgICAgLy8gQW4gaW5pdGlhbGl6ZWQgcmVhZC1vbmx5IHBhcmFtZXRlci4NCisvLyAgICAgX19pbl9vcHQgSERDIGhkY09wdGlvbmFsLCAgICAgICAgICAgIC8vIEFuIGluaXRpYWxpemVkIHJlYWQtb25seSBwYXJhbWV0ZXIgdGhhdCBtaWdodCBiZSBOVUxMLg0KKy8vICAgICBfX2lub3V0IElQcm9wZXJ0eVN0b3JlICpwcHNTdG9yZSAgICAgLy8gQW4gaW5pdGlhbGl6ZWQgcGFyYW1ldGVyIHRoYXQgbWF5IGJlIGZyZWVseSB1c2VkDQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGFuZCBtb2RpZmllZC4NCisvLyApOw0KKy8vDQorLy8gTFdTVERBUElfKEJPT0wpIFBhdGhDb21wYWN0UGF0aEV4QSgNCisvLyAgICAgX19vdXRfZWNvdW50KGNjaE1heCkgTFBTVFIgcHN6T3V0LCAgIC8vIEEgc3RyaW5nIGJ1ZmZlciB3aXRoIGNjaCBlbGVtZW50cyB0aGF0IHdpbGwNCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgYmUgTlVMTCB0ZXJtaW5hdGVkIG9uIGV4aXQuDQorLy8gICAgIExQQ1NUUiBwc3pTcmMsICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBhbm5vdGF0aW9uIHJlcXVpcmVkLCBjb25zdCBpbXBsaWVzIF9faW4uDQorLy8gICAgIFVJTlQgY2NoTWF4LA0KKy8vICAgICBEV09SRCBkd0ZsYWdzDQorLy8gKTsNCisvLw0KKy8vIEhSRVNVTFQgU0hMb2NhbEFsbG9jQnl0ZXMoDQorLy8gICAgIHNpemVfdCBjYiwNCisvLyAgICAgX19kZXJlZl9iY291bnQoY2IpIFQgKipwcHYgICAgICAgICAgIC8vIEEgcG9pbnRlciB3aG9zZSBkZXJlZmVyZW5jZSB3aWxsIGJlIHNldCB0byBhbg0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICB1bmluaXRpYWxpemVkIGJ1ZmZlciB3aXRoIGNiIGJ5dGVzLg0KKy8vICk7DQorLy8NCisvLyBfX2lub3V0X2Jjb3VudF9mdWxsKGNiKSA6IEEgYnVmZmVyIHdpdGggY2IgZWxlbWVudHMgdGhhdCBpcyBmdWxseSBpbml0aWFsaXplZCBhdA0KKy8vICAgICBlbnRyeSBhbmQgZXhpdCwgYW5kIG1heSBiZSB3cml0dGVuIHRvIGJ5IHRoaXMgZnVuY3Rpb24uDQorLy8NCisvLyBfX291dF9lY291bnRfcGFydChjb3VudCwgKmNvdW50T3V0KSA6IEEgYnVmZmVyIHdpdGggY291bnQgZWxlbWVudHMgdGhhdCB3aWxsIGJlDQorLy8gICAgIHBhcnRpYWxseSBpbml0aWFsaXplZCBieSB0aGlzIGZ1bmN0aW9uLiBUaGUgZnVuY3Rpb24gaW5kaWNhdGVzIGhvdyBtdWNoIGl0DQorLy8gICAgIGluaXRpYWxpemVkIGJ5IHNldHRpbmcgKmNvdW50T3V0Lg0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEFkdmFuY2VkIEFubm90YXRpb25zDQorLy8NCisvLyBBZHZhbmNlZCBhbm5vdGF0aW9ucyBkZXNjcmliZSBiZWhhdmlvciB0aGF0IGlzIG5vdCBleHByZXNzaWJsZSB3aXRoIHRoZSByZWd1bGFyDQorLy8gYnVmZmVyIG1hY3Jvcy4gVGhlc2UgbWF5IGJlIHVzZWQgZWl0aGVyIHRvIGFubm90YXRlIGJ1ZmZlciBwYXJhbWV0ZXJzIHRoYXQgaW52b2x2ZQ0KKy8vIGNvbXBsZXggb3IgY29uZGl0aW9uYWwgYmVoYXZpb3IsIG9yIHRvIGVucmljaCBleGlzdGluZyBhbm5vdGF0aW9ucyB3aXRoIGFkZGl0aW9uYWwNCisvLyBpbmZvcm1hdGlvbi4NCisvLw0KKy8vIF9fc3VjY2VzcyhleHByKSBmIDoNCisvLyAgICAgPGV4cHI+IGluZGljYXRlcyB3aGV0aGVyIGZ1bmN0aW9uIGYgc3VjY2VlZGVkIG9yIG5vdC4gSWYgPGV4cHI+IGlzIHRydWUgYXQgZXhpdCwNCisvLyAgICAgYWxsIHRoZSBmdW5jdGlvbidzIGd1YXJhbnRlZXMgKGFzIGdpdmVuIGJ5IG90aGVyIGFubm90YXRpb25zKSBtdXN0IGhvbGQuIElmIDxleHByPg0KKy8vICAgICBpcyBmYWxzZSBhdCBleGl0LCB0aGUgY2FsbGVyIHNob3VsZCBub3QgZXhwZWN0IGFueSBvZiB0aGUgZnVuY3Rpb24ncyBndWFyYW50ZWVzDQorLy8gICAgIHRvIGhvbGQuIElmIG5vdCB1c2VkLCB0aGUgZnVuY3Rpb24gbXVzdCBhbHdheXMgc2F0aXNmeSBpdHMgZ3VhcmFudGVlcy4gQWRkZWQNCisvLyAgICAgYXV0b21hdGljYWxseSB0byBmdW5jdGlvbnMgdGhhdCBpbmRpY2F0ZSBzdWNjZXNzIGluIHN0YW5kYXJkIHdheXMsIHN1Y2ggYXMgYnkNCisvLyAgICAgcmV0dXJuaW5nIGFuIEhSRVNVTFQuDQorLy8NCisvLyBfX291dF9hd2NvdW50KGV4cHIsIHNpemUpIHAgOg0KKy8vICAgICBQb2ludGVyIHAgaXMgYSBidWZmZXIgd2hvc2Ugc2l6ZSBtYXkgYmUgZ2l2ZW4gaW4gZWl0aGVyIGJ5dGVzIG9yIGVsZW1lbnRzLiBJZg0KKy8vICAgICA8ZXhwcj4gaXMgdHJ1ZSwgdGhpcyBhY3RzIGxpa2UgX19vdXRfYmNvdW50LiBJZiA8ZXhwcj4gaXMgZmFsc2UsIHRoaXMgYWN0cw0KKy8vICAgICBsaWtlIF9fb3V0X2Vjb3VudC4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIGFubm90YXRlIG9sZCBBUElzLg0KKy8vDQorLy8gX19pbl9hd2NvdW50KGV4cHIsIHNpemUpIHAgOg0KKy8vICAgICBQb2ludGVyIHAgaXMgYSBidWZmZXIgd2hvc2Ugc2l6ZSBtYXkgYmUgZ2l2ZW4gaW4gZWl0aGVyIGJ5dGVzIG9yIGVsZW1lbnRzLiBJZg0KKy8vICAgICA8ZXhwcj4gaXMgdHJ1ZSwgdGhpcyBhY3RzIGxpa2UgX19pbl9iY291bnQuIElmIDxleHByPiBpcyBmYWxzZSwgdGhpcyBhY3RzDQorLy8gICAgIGxpa2UgX19pbl9lY291bnQuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBhbm5vdGF0ZSBvbGQgQVBJcy4NCisvLw0KKy8vIF9fbnVsbHRlcm1pbmF0ZWQgcCA6DQorLy8gICAgIFBvaW50ZXIgcCBpcyBhIGJ1ZmZlciB0aGF0IG1heSBiZSByZWFkIG9yIHdyaXR0ZW4gdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgZmlyc3QNCisvLyAgICAgTlVMTCBjaGFyYWN0ZXIgb3IgcG9pbnRlci4gTWF5IGJlIHVzZWQgb24gdHlwZWRlZnMsIHdoaWNoIG1hcmtzIHZhbGlkIChwcm9wZXJseQ0KKy8vICAgICBpbml0aWFsaXplZCkgaW5zdGFuY2VzIG9mIHRoYXQgdHlwZSBhcyBiZWluZyBOVUxMLXRlcm1pbmF0ZWQuDQorLy8NCisvLyBfX251bGxudWxsdGVybWluYXRlZCBwIDoNCisvLyAgICAgUG9pbnRlciBwIGlzIGEgYnVmZmVyIHRoYXQgbWF5IGJlIHJlYWQgb3Igd3JpdHRlbiB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBmaXJzdA0KKy8vICAgICBzZXF1ZW5jZSBvZiB0d28gTlVMTCBjaGFyYWN0ZXJzIG9yIHBvaW50ZXJzLiBNYXkgYmUgdXNlZCBvbiB0eXBlZGVmcywgd2hpY2ggbWFya3MNCisvLyAgICAgdmFsaWQgaW5zdGFuY2VzIG9mIHRoYXQgdHlwZSBhcyBiZWluZyBkb3VibGUtTlVMTCB0ZXJtaW5hdGVkLg0KKy8vDQorLy8gX19yZXNlcnZlZCB2IDoNCisvLyAgICAgVmFsdWUgdiBtdXN0IGJlIDAvTlVMTCwgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuDQorLy8NCisvLyBfX2NoZWNrUmV0dXJuIHYgOg0KKy8vICAgICBSZXR1cm4gdmFsdWUgdiBtdXN0IG5vdCBiZSBpZ25vcmVkIGJ5IGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbi4NCisvLw0KKy8vIF9fdHlwZWZpeChjdHlwZSkgdiA6DQorLy8gICAgIFZhbHVlIHYgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gaW5zdGFuY2Ugb2YgY3R5cGUsIHJhdGhlciB0aGFuIGl0cyBkZWNsYXJlZCB0eXBlLg0KKy8vDQorLy8gX19vdmVycmlkZSBmIDoNCisvLyAgICAgU3BlY2lmeSBDIy1zdHlsZSAnb3ZlcnJpZGUnIGJlaGF2aW91ciBmb3Igb3ZlcnJpZGluZyB2aXJ0dWFsIG1ldGhvZHMuDQorLy8NCisvLyBfX2NhbGxiYWNrIGYgOg0KKy8vICAgICBGdW5jdGlvbiBmIGNhbiBiZSB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4NCisvLw0KKy8vIF9fZm9ybWF0X3N0cmluZyBwIDoNCisvLyAgICAgUG9pbnRlciBwIGlzIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgJSBtYXJrZXJzIGluIHRoZSBzdHlsZSBvZiBwcmludGYuDQorLy8NCisvLyBfX2Jsb2Nrc09uKHJlc291cmNlKSBmIDoNCisvLyAgICAgRnVuY3Rpb24gZiBibG9ja3Mgb24gdGhlIHJlc291cmNlICdyZXNvdXJjZScuDQorLy8NCisvLyBfX2ZhbGx0aHJvdWdoIDoNCisvLyAgICAgQW5ub3RhdGVzIHN3aXRjaCBzdGF0ZW1lbnQgbGFiZWxzIHdoZXJlIGZhbGwtdGhyb3VnaCBpcyBkZXNpcmVkLCB0byBkaXN0aW5ndWlzaA0KKy8vICAgICBmcm9tIGZvcmdvdHRlbiBicmVhayBzdGF0ZW1lbnRzLg0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEFkdmFuY2VkIEFubm90YXRpb24gRXhhbXBsZXMNCisvLw0KKy8vIF9fc3VjY2VzcyhyZXR1cm4gPT0gVFJVRSkgTFdTVERBUElfKEJPT0wpIA0KKy8vIFBhdGhDYW5vbmljYWxpemVBKF9fb3V0X2Vjb3VudChNQVhfUEFUSCkgTFBTVFIgcHN6QnVmLCBMUENTVFIgcHN6UGF0aCkgOg0KKy8vICAgICBwc3pCdWYgaXMgb25seSBndWFyYW50ZWVkIHRvIGJlIE5VTEwtdGVybWluYXRlZCB3aGVuIFRSVUUgaXMgcmV0dXJuZWQuDQorLy8NCisvLyB0eXBlZGVmIF9fbnVsbHRlcm1pbmF0ZWQgV0NIQVIqIExQV1NUUiA6IEluaXRpYWxpemVkIExQV1NUUnMgYXJlIE5VTEwtdGVybWluYXRlZCBzdHJpbmdzLg0KKy8vDQorLy8gX19vdXRfZWNvdW50KGNjaCkgX190eXBlZml4KExQV1NUUikgdm9pZCAqcHN6IDogcHN6IGlzIGEgYnVmZmVyIHBhcmFtZXRlciB3aGljaCB3aWxsIGJlDQorLy8gICAgIGEgTlVMTC10ZXJtaW5hdGVkIFdDSEFSIHN0cmluZyBhdCBleGl0LCBhbmQgd2hpY2ggaW5pdGlhbGx5IGNvbnRhaW5zIGNjaCBXQ0hBUnMuDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorLy8gQEBFTkRfRERLU1BMSVQNCisNCisjaWYgX01TQ19WRVIgPiAxMDAwDQorI3ByYWdtYSBvbmNlDQorI2VuZGlmICAvLyAjaWYgX01TQ19WRVIgPiAxMDAwDQorDQorI2RlZmluZSBfX3NwZWNzdHJpbmdzDQorDQorI2lmZGVmICBfX2NwbHVzcGx1cw0KKyNpZm5kZWYgX19ub3Rocm93DQorIyBkZWZpbmUgX19ub3Rocm93IF9fZGVjbHNwZWMobm90aHJvdykNCisjZW5kaWYNCitleHRlcm4gIkMiIHsNCisjZWxzZQ0KKyNpZm5kZWYgX19ub3Rocm93DQorIyBkZWZpbmUgX19ub3Rocm93DQorI2VuZGlmDQorI2VuZGlmICAvLyAjaWZkZWYgX19jcGx1c3BsdXMNCisNCisvLyBAQEJFR0lOX0RES1NQTElUDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEhlbHBlciBNYWNybyBEZWZpbml0aW9ucw0KKy8vDQorLy8gVGhlc2UgZXhwcmVzcyBiZWhhdmlvciBjb21tb24gdG8gbWFueSBvZiB0aGUgaGlnaC1sZXZlbCBhbm5vdGF0aW9ucy4NCisvLyBETyBOT1QgVVNFIFRIRVNFIElOIFlPVVIgQ09ERS4NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorLy8gVGhlIGhlbHBlciBhbm5vdGF0aW9ucyBhcmUgb25seSB1bmRlcnN0b29kIGJ5IHRoZSBjb21waWxlciB2ZXJzaW9uIHVzZWQgYnkgdmFyaW91cw0KKy8vIGRlZmVjdCBkZXRlY3Rpb24gdG9vbHMuIFdoZW4gdGhlIHJlZ3VsYXIgY29tcGlsZXIgaXMgcnVubmluZywgdGhleSBhcmUgZGVmaW5lZCBpbnRvDQorLy8gbm90aGluZywgYW5kIGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGNvZGUuDQorI2lmIChfTVNDX1ZFUiA+PSAxMDAwKSAmJiAhZGVmaW5lZChNSURMX1BBU1MpICYmIGRlZmluZWQoX1BSRUZBU1RfKQ0KKw0KKyAgICAvLyBJbiB0aGUgcHJpbWl0aXZlIF9fZGVjbHNwZWMoIlNBTF8qIikgYW5ub3RhdGlvbnMgIlNBTCIgc3RhbmRzIGZvciBTdGFuZGFyZA0KKyAgICAvLyBBbm5vdGF0aW9uIExhbmd1YWdlLiAgVGhlc2UgX19kZWNsc3BlYygiU0FMXyoiKSBhbm5vdGF0aW9ucyBhcmUgdGhlDQorICAgIC8vIHByaW1pdGl2ZXMgdGhlIGNvbXBpbGVyIHVuZGVyc3RhbmRzIGFuZCBhbGwgaGlnaC1sZXZlbCBTcGVjU3RyaW5nIE1BQ1JPcw0KKyAgICAvLyB3aWxsIGRlY29tcG9zZSBpbnRvIHRoZXNlIHByaW1pdmF0ZXMuDQorDQorICAgICNkZWZpbmUgU1BFQ1NUUklOR0laRSggeCApICN4DQorDQorICAgIC8vDQorICAgIC8vIF9fbnVsbCBwDQorICAgIC8vIF9fbm90bnVsbCBwDQorICAgIC8vIF9fbWF5YmVudWxsIHANCisgICAgLy8NCisgICAgLy8gQW5ub3RhdGVzIGEgcG9pbnRlciBwLiBTdGF0ZXMgdGhhdCBwb2ludGVyIHAgaXMgbnVsbC4gQ29tbW9ubHkgdXNlZA0KKyAgICAvLyBpbiB0aGUgbmVnYXRlZCBmb3JtIF9fbm90bnVsbCBvciB0aGUgcG9zc2libHkgbnVsbCBmb3JtIF9fbWF5YmVudWxsLg0KKyAgICAvLw0KKyAgICAjZGVmaW5lIF9fbnVsbCAgICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9udWxsIikNCisgICAgI2RlZmluZSBfX25vdG51bGwgICAgICAgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfbm90bnVsbCIpDQorICAgICNkZWZpbmUgX19tYXliZW51bGwgICAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX21heWJlbnVsbCIpDQorDQorICAgIC8vDQorICAgIC8vIF9fcmVhZG9ubHkgbA0KKyAgICAvLyBfX25vdHJlYWRvbmx5IGwNCisgICAgLy8gX19tYWJ5ZXJlYWRvbmx5IGwNCisgICAgLy8NCisgICAgLy8gQW5ub3RhdGVzIGEgbG9jYXRpb24gbC4gU3RhdGVzIHRoYXQgbG9jYXRpb24gbCBpcyBub3QgbW9kaWZpZWQgYWZ0ZXINCisgICAgLy8gdGhpcyBwb2ludC4gIElmIHRoZSBhbm5vdGF0aW9uIGlzIHBsYWNlZCBvbiB0aGUgcHJlY29uZGl0aW9uIHN0YXRlIG9mDQorICAgIC8vIGEgZnVuY3Rpb24sIHRoZSByZXN0cmljdGlvbiBvbmx5IGFwcGxpZXMgdW50aWwgdGhlIHBvc3Rjb25kaXRpb24gc3RhdGUNCisgICAgLy8gb2YgdGhlIGZ1bmN0aW9uLiAgX19tYXliZXJlYWRvbmx5IHN0YXRlcyB0aGF0IHRoZSBhbm5vdGF0ZWQgbG9jYXRpb24NCisgICAgLy8gbWF5IGJlIG1vZGlmaWVkLCB3aGVyZWFzIF9fbm90cmVhZG9ubHkgc3RhdGVzIHRoYXQgYSBsb2NhdGlvbiBtdXN0IGJlDQorICAgIC8vIG1vZGlmaWVkLg0KKyAgICAvLw0KKyAgICAjZGVmaW5lIF9fcmVhZG9ubHkgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9yZWFkb25seSIpDQorICAgICNkZWZpbmUgX19ub3RyZWFkb25seSAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX25vdHJlYWRvbmx5IikNCisgICAgI2RlZmluZSBfX21heWJlcmVhZG9ubHkgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfbWF5YmVyZWFkb25seSIpDQorDQorICAgIC8vDQorICAgIC8vIF9fdmFsaWQgdg0KKyAgICAvLyBfX25vdHZhbGlkIHYNCisgICAgLy8gX19tYXliZXZhbGlkIHYNCisgICAgLy8NCisgICAgLy8gQW5ub3RhdGVzIGFueSB2YWx1ZSB2LiBTdGF0ZXMgdGhhdCB0aGUgdmFsdWUgc2F0aXNmaWVzIGFsbCBwcm9wZXJ0aWVzIG9mDQorICAgIC8vIHZhbGlkIHZhbHVlcyBvZiBpdHMgdHlwZS4gRm9yIGV4YW1wbGUsIGZvciBhIHN0cmluZyBidWZmZXIsIHZhbGlkIG1lYW5zDQorICAgIC8vIHRoYXQgdGhlIGJ1ZmZlciBwb2ludGVyIGlzIGVpdGhlciBOVUxMIG9yIHBvaW50cyB0byBhIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuDQorICAgIC8vDQorICAgICNkZWZpbmUgX192YWxpZCAgICAgICAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX3ZhbGlkIikNCisgICAgI2RlZmluZSBfX25vdHZhbGlkICAgICAgICAgICAgICBfX2RlY2xzcGVjKCJTQUxfbm90dmFsaWQiKQ0KKyAgICAjZGVmaW5lIF9fbWF5YmV2YWxpZCAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9tYXliZXZhbGlkIikNCisNCisgICAgLy8NCisgICAgLy8gX19yZWFkYWJsZVRvKGV4dGVudCkgcA0KKyAgICAvLw0KKyAgICAvLyBBbm5vdGF0ZXMgYSBidWZmZXIgcG9pbnRlciBwLiAgSWYgdGhlIGJ1ZmZlciBjYW4gYmUgcmVhZCwgZXh0ZW50IGRlc2NyaWJlcw0KKyAgICAvLyBob3cgbXVjaCBvZiB0aGUgYnVmZmVyIGlzIHJlYWRhYmxlLiBGb3IgYSByZWFkZXIgb2YgdGhlIGJ1ZmZlciwgdGhpcyBpcw0KKyAgICAvLyBhbiBleHBsaWNpdCBwZXJtaXNzaW9uIHRvIHJlYWQgdXAgdG8gdGhhdCBhbW91bnQsIHJhdGhlciB0aGFuIGEgcmVzdHJpY3Rpb24gdG8NCisgICAgLy8gcmVhZCBvbmx5IHVwIHRvIGl0Lg0KKyAgICAvLw0KKyAgICAjZGVmaW5lIF9fcmVhZGFibGVUbyhleHRlbnQpICAgIF9fZGVjbHNwZWMoIlNBTF9yZWFkYWJsZVRvKCJTUEVDU1RSSU5HSVpFKGV4dGVudCkiKSIpDQorDQorICAgIC8vDQorICAgIC8vIF9fZWxlbV9yZWFkYWJsZVRvKHNpemUpDQorICAgIC8vDQorICAgIC8vIEFubm90YXRlcyBhIGJ1ZmZlciBwb2ludGVyIHAgYXMgYmVpbmcgcmVhZGFibGUgdG8gc2l6ZSBlbGVtZW50cy4NCisgICAgLy8NCisgICAgI2RlZmluZSBfX2VsZW1fcmVhZGFibGVUbyhzaXplKSAgIF9fZGVjbHNwZWMoIlNBTF9yZWFkYWJsZVRvKGVsZW1lbnRDb3VudCgiU1BFQ1NUUklOR0laRShzaXplKSIpKSIpDQorICAgIA0KKyAgICAvLw0KKyAgICAvLyBfX2J5dGVfcmVhZGFibGVUbyhzaXplKQ0KKyAgICAvLw0KKyAgICAvLyBBbm5vdGF0ZXMgYSBidWZmZXIgcG9pbnRlciBwIGFzIGJlaW5nIHJlYWRhYmxlIHRvIHNpemUgYnl0ZXMuDQorICAgIC8vDQorICAgICNkZWZpbmUgX19ieXRlX3JlYWRhYmxlVG8oc2l6ZSkgICBfX2RlY2xzcGVjKCJTQUxfcmVhZGFibGVUbyhieXRlQ291bnQoIlNQRUNTVFJJTkdJWkUoc2l6ZSkiKSkiKQ0KKyAgICANCisgICAgLy8NCisgICAgLy8gX193cml0YWJsZVRvKGV4dGVudCkgcA0KKyAgICAvLw0KKyAgICAvLyBBbm5vdGF0ZXMgYSBidWZmZXIgcG9pbnRlciBwLiBJZiB0aGUgYnVmZmVyIGNhbiBiZSBtb2RpZmllZCwgZXh0ZW50DQorICAgIC8vIGRlc2NyaWJlcyBob3cgbXVjaCBvZiB0aGUgYnVmZmVyIGlzIHdyaXRhYmxlICh1c3VhbGx5IHRoZSBhbGxvY2F0aW9uDQorICAgIC8vIHNpemUpLiBGb3IgYSB3cml0ZXIgb2YgdGhlIGJ1ZmZlciwgdGhpcyBpcyBhbiBleHBsaWNpdCBwZXJtaXNzaW9uIHRvDQorICAgIC8vIHdyaXRlIHVwIHRvIHRoYXQgYW1vdW50LCByYXRoZXIgdGhhbiBhIHJlc3RyaWN0aW9uIHRvIHdyaXRlIG9ubHkgdXAgdG8gaXQuDQorICAgIC8vDQorICAgICNkZWZpbmUgX193cml0YWJsZVRvKHNpemUpICAgX19kZWNsc3BlYygiU0FMX3dyaXRhYmxlVG8oIlNQRUNTVFJJTkdJWkUoc2l6ZSkiKSIpDQorDQorICAgIC8vDQorICAgIC8vIF9fZWxlbV93cml0YWJsZVRvKHNpemUpDQorICAgIC8vDQorICAgIC8vIEFubm90YXRlcyBhIGJ1ZmZlciBwb2ludGVyIHAgYXMgYmVpbmcgd3JpdGFibGUgdG8gc2l6ZSBlbGVtZW50cy4NCisgICAgLy8NCisgICAgI2RlZmluZSBfX2VsZW1fd3JpdGFibGVUbyhzaXplKSAgIF9fZGVjbHNwZWMoIlNBTF93cml0YWJsZVRvKGVsZW1lbnRDb3VudCgiU1BFQ1NUUklOR0laRShzaXplKSIpKSIpDQorICAgIA0KKyAgICAvLw0KKyAgICAvLyBfX2J5dGVfd3JpdGFibGVUbyhzaXplKQ0KKyAgICAvLw0KKyAgICAvLyBBbm5vdGF0ZXMgYSBidWZmZXIgcG9pbnRlciBwIGFzIGJlaW5nIHdyaXRhYmxlIHRvIHNpemUgYnl0ZXMuDQorICAgIC8vDQorICAgICNkZWZpbmUgX19ieXRlX3dyaXRhYmxlVG8oc2l6ZSkgICBfX2RlY2xzcGVjKCJTQUxfd3JpdGFibGVUbyhieXRlQ291bnQoIlNQRUNTVFJJTkdJWkUoc2l6ZSkiKSkiKQ0KKw0KKyAgICAvLw0KKyAgICAvLyBfX2RlcmVmIHANCisgICAgLy8NCisgICAgLy8gQW5ub3RhdGVzIGEgcG9pbnRlciBwLiBUaGUgbmV4dCBhbm5vdGF0aW9uIGFwcGxpZXMgb25lIGRlcmVmZXJlbmNlIGRvd24NCisgICAgLy8gaW4gdGhlIHR5cGUuIElmIHJlYWRhYmxlVG8ocCwgc2l6ZSkgdGhlbiB0aGUgbmV4dCBhbm5vdGF0aW9uIGFwcGxpZXMgdG8NCisgICAgLy8gYWxsIGVsZW1lbnRzICoocCtpKSBmb3Igd2hpY2ggaSBzYXRpc2ZpZXMgdGhlIHNpemUuIElmIHAgaXMgYSBwb2ludGVyDQorICAgIC8vIHRvIGEgc3RydWN0LCB0aGUgbmV4dCBhbm5vdGF0aW9uIGFwcGxpZXMgdG8gYWxsIGZpZWxkcyBvZiB0aGUgc3RydWN0Lg0KKyAgICAvLw0KKyAgICAjZGVmaW5lIF9fZGVyZWYgICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9kZXJlZiIpDQorICAgIA0KKyAgICAvLw0KKyAgICAvLyBfX3ByZSBfX25leHRfYW5ub3RhdGlvbg0KKyAgICAvLw0KKyAgICAvLyBUaGUgbmV4dCBhbm5vdGF0aW9uIGFwcGxpZXMgaW4gdGhlIHByZWNvbmRpdGlvbiBzdGF0ZQ0KKyAgICAvLw0KKyAgICAjZGVmaW5lIF9fcHJlICAgICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9wcmUiKQ0KKyAgICANCisgICAgLy8NCisgICAgLy8gX19wb3N0IF9fbmV4dF9hbm5vdGF0aW9uDQorICAgIC8vDQorICAgIC8vIFRoZSBuZXh0IGFubm90YXRpb24gYXBwbGllcyBpbiB0aGUgcG9zdGNvbmRpdGlvbiBzdGF0ZQ0KKyAgICAvLw0KKyAgICAjZGVmaW5lIF9fcG9zdCAgICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9wb3N0IikNCisgICAgDQorICAgIC8vDQorICAgIC8vIF9fcHJlY29uZCg8ZXhwcj4pDQorICAgIC8vDQorICAgIC8vIFdoZW4gPGV4cHI+IGlzIHRydWUsIHRoZSBuZXh0IGFubm90YXRpb24gYXBwbGllcyBpbiB0aGUgcHJlY29uZGl0aW9uIHN0YXRlDQorICAgIC8vIChjdXJyZW50bHkgbm90IGVuYWJsZWQpDQorICAgIC8vDQorICAgICNkZWZpbmUgX19wcmVjb25kKGV4cHIpICAgICAgICAgX19wcmUNCisNCisgICAgLy8NCisgICAgLy8gX19wb3N0Y29uZCg8ZXhwcj4pDQorICAgIC8vDQorICAgIC8vIFdoZW4gPGV4cHI+IGlzIHRydWUsIHRoZSBuZXh0IGFubm90YXRpb24gYXBwbGllcyBpbiB0aGUgcG9zdGNvbmRpdGlvbiBzdGF0ZQ0KKyAgICAvLyAoY3VycmVudGx5IG5vdCBlbmFibGVkKQ0KKyAgICAvLw0KKyAgICAjZGVmaW5lIF9fcG9zdGNvbmQoZXhwcikgICAgICAgIF9fcG9zdA0KKw0KKyAgICAvLw0KKyAgICAvLyBfX2V4Y2VwdHRoYXQNCisgICAgLy8NCisgICAgLy8gR2l2ZW4gYSBzZXQgb2YgYW5ub3RhdGlvbnMgUSBjb250YWluaW5nIF9fZXhjZXB0dGhhdCBtYXliZVAsIHRoZSBlZmZlY3Qgb2YNCisgICAgLy8gdGhlIGV4Y2VwdCBjbGF1c2UgaXMgdG8gZXJhc2UgYW55IFAgb3Igbm90UCBhbm5vdGF0aW9ucyAoZXhwbGljaXQgb3INCisgICAgLy8gaW1wbGllZCkgd2l0aGluIFEgYXQgdGhlIHNhbWUgbGV2ZWwgb2YgZGVyZWZlcmVuY2luZyB0aGF0IHRoZSBleGNlcHQNCisgICAgLy8gY2xhdXNlIGFwcGVhcnMsIGFuZCB0byByZXBsYWNlIGl0IHdpdGggbWF5YmVQLg0KKyAgICAvLw0KKyAgICAvLyAgRXhhbXBsZSAxOiBfX3ZhbGlkIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbCBvbiBhIHBvaW50ZXIgcCBtZWFucyB0aGF0IHRoZQ0KKyAgICAvLyAgICAgICAgICAgICBwb2ludGVyIG1heSBiZSBudWxsLCBhbmQgaXMgb3RoZXJ3aXNlIHZhbGlkLCB0aHVzIG92ZXJyaWRpbmcNCisgICAgLy8gICAgICAgICAgICAgdGhlIGltcGxpY2l0IG5vdG51bGwgYW5ub3RhdGlvbiBpbXBsaWVkIGJ5IF9fdmFsaWQgb24NCisgICAgLy8gICAgICAgICAgICAgcG9pbnRlcnMuDQorICAgIC8vDQorICAgIC8vICBFeGFtcGxlIDI6IF9fdmFsaWQgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwgb24gYW4gaW50ICoqcCBtZWFucw0KKyAgICAvLyAgICAgICAgICAgICB0aGF0IHAgaXMgbm90IG51bGwgKGltcGxpZWQgYnkgdmFsaWQpLCBidXQgdGhlIGVsZW1lbnRzDQorICAgIC8vICAgICAgICAgICAgIHBvaW50ZWQgdG8gYnkgcCBjb3VsZCBiZSBudWxsLCBhbmQgYXJlIG90aGVyd2lzZSB2YWxpZC4gDQorICAgIC8vDQorICAgICNkZWZpbmUgX19leGNlcHR0aGF0ICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9leGNlcHQiKQ0KKw0KKyAgICAvLw0KKyAgICAvLyBfcmVmcGFyYW0NCisgICAgLy8NCisgICAgLy8gQWRkZWQgdG8gYWxsIG91dCBwYXJhbWV0ZXIgbWFjcm9zIHRvIGluZGljYXRlIHRoYXQgdGhleSBhcmUgYWxsIHJlZmVyZW5jZQ0KKyAgICAvLyBwYXJhbWV0ZXJzLg0KKyAgICAvLw0KKyAgICAjZGVmaW5lIF9fcmVmcGFyYW0gICAgICAgICAgICAgICAgICBfX2RlcmVmIF9fbm90cmVhZG9ubHkNCisNCisgICAgLy8NCisgICAgLy8gX19pbm5lcl8qDQorICAgIC8vDQorICAgIC8vIEhlbHBlciBtYWNyb3MgdGhhdCBkaXJlY3RseSBjb3JyZXNwb25kIHRvIGNlcnRhaW4gaGlnaC1sZXZlbCBhbm5vdGF0aW9ucy4NCisgICAgLy8NCisgICAgLy8NCisNCisgICAgLy8gTWFjcm9zIHRvIGNsYXNzaWZ5IHRoZSBlbnRyeXBvaW50cyBhbmQgaW5kaWNhdGUgdGhlaXIgY2F0ZWdvcnkuDQorICAgIC8vDQorICAgIC8vDQorICAgIC8vIFByZS1kZWZpbmVkIGNvbnRyb2wgcG9pbnQgY2F0ZWdvcmllcyBpbmNsdWRlOiBSUEMsIExQQywgRGV2aWNlRHJpdmVyLCBVc2VyVG9LZXJuZWwsIElTQVBJLCBDT00uDQorICAgIC8vDQorICAgICNkZWZpbmUgX19pbm5lcl9jb250cm9sX2VudHJ5cG9pbnQoY2F0ZWdvcnkpIF9fZGVjbHNwZWMoIlNBTF9lbnRyeXBvaW50KGNvbnRyb2xFbnRyeSwgIlNQRUNTVFJJTkdJWkUoY2F0ZWdvcnkpIikiKQ0KKw0KKyAgICAvLw0KKyAgICAvLyBQcmUtZGVmaW5lZCBkYXRhIGVudHJ5IHBvaW50IGNhdGVnb3JpZXMgaW5jbHVkZTogUmVnaXN0cnksIEZpbGUsIE5ldHdvcmsuDQorICAgIC8vDQorICAgICNkZWZpbmUgX19pbm5lcl9kYXRhX2VudHJ5cG9pbnQoY2F0ZWdvcnkpICAgIF9fZGVjbHNwZWMoIlNBTF9lbnRyeXBvaW50KGRhdGFFbnRyeSwgIlNQRUNTVFJJTkdJWkUoY2F0ZWdvcnkpIikiKQ0KKw0KKyAgICAjZGVmaW5lIF9faW5uZXJfc3VjY2VzcyhleHByKSAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9zdWNjZXNzKCJTUEVDU1RSSU5HSVpFKGV4cHIpIikiKQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfY2hlY2tSZXR1cm4gICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9jaGVja1JldHVybiIpDQorICAgICNkZWZpbmUgX19pbm5lcl90eXBlZml4KGN0eXBlKSAgICAgICAgICAgICAgX19kZWNsc3BlYygiU0FMX3R5cGVmaXgoIlNQRUNTVFJJTkdJWkUoY3R5cGUpIikiKQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfb3ZlcnJpZGUgICAgICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIl9fb3ZlcnJpZGUiKQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfY2FsbGJhY2sgICAgICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoIl9fY2FsbGJhY2siKQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfYmxvY2tzT24ocmVzb3VyY2UpICAgICAgICAgIF9fZGVjbHNwZWMoIlNBTF9ibG9ja3NPbigiU1BFQ1NUUklOR0laRShyZXNvdXJjZSkiKSIpDQorICAgICNkZWZpbmUgX19pbm5lcl9mYWxsdGhyb3VnaF9kZWMgICAgICAgICAgICAgX19pbmxpbmUgX19ub3Rocm93IHZvaWQgX19GYWxsVGhyb3VnaCgpIHt9DQorICAgICNkZWZpbmUgX19pbm5lcl9mYWxsdGhyb3VnaCAgICAgICAgICAgICAgICAgX19GYWxsVGhyb3VnaCgpOw0KKw0KKyNlbHNlDQorDQorLy8gQEBFTkRfRERLU1BMSVQNCisNCisjaWZuZGVmIF9fbnVsbA0KKyAgICAjZGVmaW5lIF9fbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19ub3RudWxsDQorICAgICNkZWZpbmUgX19ub3RudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX21heWJlbnVsbA0KKyAgICAjZGVmaW5lIF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX3JlYWRvbmx5DQorICAgICNkZWZpbmUgX19yZWFkb25seQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19ub3RyZWFkb25seQ0KKyAgICAjZGVmaW5lIF9fbm90cmVhZG9ubHkNCisjZW5kaWYNCisjaWZuZGVmIF9fbWF5YmVyZWFkb25seQ0KKyAgICAjZGVmaW5lIF9fbWF5YmVyZWFkb25seQ0KKyNlbmRpZg0KKyNpZm5kZWYgX192YWxpZA0KKyAgICAjZGVmaW5lIF9fdmFsaWQNCisjZW5kaWYNCisjaWZuZGVmIF9fbm90dmFsaWQNCisgICAgI2RlZmluZSBfX25vdHZhbGlkDQorI2VuZGlmDQorI2lmbmRlZiBfX21heWJldmFsaWQNCisgICAgI2RlZmluZSBfX21heWJldmFsaWQNCisjZW5kaWYNCisjaWZuZGVmIF9fcmVhZGFibGVUbw0KKyAgICAjZGVmaW5lIF9fcmVhZGFibGVUbyhleHRlbnQpDQorI2VuZGlmDQorI2lmbmRlZiBfX2VsZW1fcmVhZGFibGVUbw0KKyAgICAjZGVmaW5lIF9fZWxlbV9yZWFkYWJsZVRvKHNpemUpDQorI2VuZGlmDQorI2lmbmRlZiBfX2J5dGVfcmVhZGFibGVUbw0KKyAgICAjZGVmaW5lIF9fYnl0ZV9yZWFkYWJsZVRvKHNpemUpDQorI2VuZGlmDQorI2lmbmRlZiBfX3dyaXRhYmxlVG8NCisgICAgI2RlZmluZSBfX3dyaXRhYmxlVG8oc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fZWxlbV93cml0YWJsZVRvDQorICAgICNkZWZpbmUgX19lbGVtX3dyaXRhYmxlVG8oc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fYnl0ZV93cml0YWJsZVRvDQorICAgICNkZWZpbmUgX19ieXRlX3dyaXRhYmxlVG8oc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWYNCisgICAgI2RlZmluZSBfX2RlcmVmDQorI2VuZGlmDQorI2lmbmRlZiBfX3ByZQ0KKyAgICAjZGVmaW5lIF9fcHJlDQorI2VuZGlmDQorI2lmbmRlZiBfX3Bvc3QNCisgICAgI2RlZmluZSBfX3Bvc3QNCisjZW5kaWYNCisjaWZuZGVmIF9fcHJlY29uZA0KKyAgICAjZGVmaW5lIF9fcHJlY29uZChleHByKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19wb3N0Y29uZA0KKyAgICAjZGVmaW5lIF9fcG9zdGNvbmQoZXhwcikNCisjZW5kaWYNCisjaWZuZGVmIF9fZXhjZXB0dGhhdA0KKyAgICAjZGVmaW5lIF9fZXhjZXB0dGhhdA0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbm5lcl9zdWNjZXNzDQorICAgICNkZWZpbmUgX19pbm5lcl9zdWNjZXNzKGV4cHIpDQorI2VuZGlmDQorI2lmbmRlZiBfX2lubmVyX2NoZWNrUmV0dXJuDQorICAgICNkZWZpbmUgX19pbm5lcl9jaGVja1JldHVybg0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbm5lcl90eXBlZml4DQorICAgICNkZWZpbmUgX19pbm5lcl90eXBlZml4KGN0eXBlKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbm5lcl9vdmVycmlkZQ0KKyAgICAjZGVmaW5lIF9faW5uZXJfb3ZlcnJpZGUNCisjZW5kaWYNCisjaWZuZGVmIF9faW5uZXJfY2FsbGJhY2sNCisgICAgI2RlZmluZSBfX2lubmVyX2NhbGxiYWNrDQorI2VuZGlmDQorI2lmbmRlZiBfX2lubmVyX2Jsb2Nrc09uDQorICAgICNkZWZpbmUgX19pbm5lcl9ibG9ja3NPbihyZXNvdXJjZSkNCisjZW5kaWYNCisjaWZuZGVmIF9faW5uZXJfZmFsbHRocm91Z2hfZGVjDQorICAgICNkZWZpbmUgX19pbm5lcl9mYWxsdGhyb3VnaF9kZWMNCisjZW5kaWYNCisjaWZuZGVmIF9faW5uZXJfZmFsbHRocm91Z2gNCisgICAgI2RlZmluZSBfX2lubmVyX2ZhbGx0aHJvdWdoDQorI2VuZGlmDQorI2lmbmRlZiBfX3JlZnBhcmFtDQorICAgICNkZWZpbmUgX19yZWZwYXJhbQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbm5lcl9jb250cm9sX2VudHJ5cG9pbnQNCisgICAgI2RlZmluZSBfX2lubmVyX2NvbnRyb2xfZW50cnlwb2ludChjYXRlZ29yeSkNCisjZW5kaWYNCisjaWZuZGVmIF9faW5uZXJfZGF0YV9lbnRyeXBvaW50DQorICAgICNkZWZpbmUgX19pbm5lcl9kYXRhX2VudHJ5cG9pbnQoY2F0ZWdvcnkpDQorI2VuZGlmDQorLy8gQEBCRUdJTl9EREtTUExJVA0KKyNlbmRpZiAvLyAjaWYgKF9NU0NfVkVSID49IDEwMDApICYmICFkZWZpbmVkKE1JRExfUEFTUykgJiYgZGVmaW5lZChfUFJFRkFTVF8pDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEJ1ZmZlciBBbm5vdGF0aW9uIERlZmluaXRpb25zDQorLy8NCisvLyBBbnkgb2YgdGhlc2UgbWF5IGJlIHVzZWQgdG8gZGlyZWN0bHkgYW5ub3RhdGUgZnVuY3Rpb25zLCBidXQgb25seSBvbmUgc2hvdWxkDQorLy8gYmUgdXNlZCBmb3IgZWFjaCBwYXJhbWV0ZXIuIFRvIGRldGVybWluZSB3aGljaCBhbm5vdGF0aW9uIHRvIHVzZSBmb3IgYSBnaXZlbg0KKy8vIGJ1ZmZlciwgdXNlIHRoZSB0YWJsZSBpbiB0aGUgYnVmZmVyIGFubm90YXRpb25zIHNlY3Rpb24uDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEBARU5EX0RES1NQTElUDQorDQorI2lmbmRlZiBfX2Vjb3VudA0KKyNkZWZpbmUgX19lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25vdG51bGwgX19lbGVtX3dyaXRhYmxlVG8oc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fYmNvdW50DQorI2RlZmluZSBfX2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbm90bnVsbCBfX2J5dGVfd3JpdGFibGVUbyhzaXplKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbg0KKyNkZWZpbmUgX19pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ByZSBfX3ZhbGlkIF9fcHJlIF9fZGVyZWYgX19yZWFkb25seQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbl9lY291bnQNCisjZGVmaW5lIF9faW5fZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbiBfX3ByZSBfX2VsZW1fcmVhZGFibGVUbyhzaXplKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbl9iY291bnQNCisjZGVmaW5lIF9faW5fYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbiBfX3ByZSBfX2J5dGVfcmVhZGFibGVUbyhzaXplKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19vdXQNCisjZGVmaW5lIF9fb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19lY291bnQoMSkgX19wb3N0IF9fdmFsaWQgX19yZWZwYXJhbQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19vdXRfZWNvdW50DQorI2RlZmluZSBfX291dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZWNvdW50KHNpemUpIF9fcG9zdCBfX3ZhbGlkIF9fcmVmcGFyYW0NCisjZW5kaWYNCisjaWZuZGVmIF9fb3V0X2Jjb3VudA0KKyNkZWZpbmUgX19vdXRfYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Jjb3VudChzaXplKSBfX3Bvc3QgX192YWxpZCBfX3JlZnBhcmFtDQorI2VuZGlmDQorI2lmbmRlZiBfX291dF9lY291bnRfcGFydA0KKyNkZWZpbmUgX19vdXRfZWNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnQoc2l6ZSkgX19wb3N0IF9fZWxlbV9yZWFkYWJsZVRvKGxlbmd0aCkNCisjZW5kaWYNCisjaWZuZGVmIF9fb3V0X2Jjb3VudF9wYXJ0DQorI2RlZmluZSBfX291dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Jjb3VudChzaXplKSBfX3Bvc3QgX19ieXRlX3JlYWRhYmxlVG8obGVuZ3RoKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19vdXRfZWNvdW50X2Z1bGwNCisjZGVmaW5lIF9fb3V0X2Vjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19vdXRfZWNvdW50X3BhcnQoc2l6ZSxzaXplKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19vdXRfYmNvdW50X2Z1bGwNCisjZGVmaW5lIF9fb3V0X2Jjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19vdXRfYmNvdW50X3BhcnQoc2l6ZSxzaXplKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbm91dA0KKyNkZWZpbmUgX19pbm91dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ByZSBfX3ZhbGlkIF9fcG9zdCBfX3ZhbGlkIF9fcmVmcGFyYW0NCisjZW5kaWYNCisjaWZuZGVmIF9faW5vdXRfZWNvdW50DQorI2RlZmluZSBfX2lub3V0X2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Vjb3VudChzaXplKSBfX3ByZSBfX3ZhbGlkDQorI2VuZGlmDQorI2lmbmRlZiBfX2lub3V0X2Jjb3VudA0KKyNkZWZpbmUgX19pbm91dF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9iY291bnQoc2l6ZSkgX19wcmUgX192YWxpZA0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbm91dF9lY291bnRfcGFydA0KKyNkZWZpbmUgX19pbm91dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgX19wcmUgX192YWxpZCBfX3ByZSBfX2VsZW1fcmVhZGFibGVUbyhsZW5ndGgpDQorI2VuZGlmDQorI2lmbmRlZiBfX2lub3V0X2Jjb3VudF9wYXJ0DQorI2RlZmluZSBfX2lub3V0X2Jjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Jjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSBfX3ByZSBfX3ZhbGlkIF9fcHJlIF9fYnl0ZV9yZWFkYWJsZVRvKGxlbmd0aCkNCisjZW5kaWYNCisjaWZuZGVmIF9faW5vdXRfZWNvdW50X2Z1bGwNCisjZGVmaW5lIF9faW5vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9lY291bnRfcGFydChzaXplLHNpemUpDQorI2VuZGlmDQorI2lmbmRlZiBfX2lub3V0X2Jjb3VudF9mdWxsDQorI2RlZmluZSBfX2lub3V0X2Jjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5vdXRfYmNvdW50X3BhcnQoc2l6ZSxzaXplKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgX19lY291bnRfb3B0DQorI2RlZmluZSBfX2Vjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2Jjb3VudF9vcHQNCisjZGVmaW5lIF9fYmNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9faW5fb3B0DQorI2RlZmluZSBfX2luX29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2luX2Vjb3VudF9vcHQNCisjZGVmaW5lIF9faW5fZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbl9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9faW5fYmNvdW50X29wdA0KKyNkZWZpbmUgX19pbl9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2luX2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19vdXRfb3B0DQorI2RlZmluZSBfX291dF9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX291dF9lY291bnRfb3B0DQorI2RlZmluZSBfX291dF9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX291dF9iY291bnRfb3B0DQorI2RlZmluZSBfX291dF9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX291dF9lY291bnRfcGFydF9vcHQNCisjZGVmaW5lIF9fb3V0X2Vjb3VudF9wYXJ0X29wdChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICAgICAgX19vdXRfZWNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fb3V0X2Jjb3VudF9wYXJ0X29wdA0KKyNkZWZpbmUgX19vdXRfYmNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICBfX291dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19vdXRfZWNvdW50X2Z1bGxfb3B0DQorI2RlZmluZSBfX291dF9lY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2Vjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX291dF9iY291bnRfZnVsbF9vcHQNCisjZGVmaW5lIF9fb3V0X2Jjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19vdXRfYmNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9faW5vdXRfb3B0DQorI2RlZmluZSBfX2lub3V0X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2lub3V0X2Vjb3VudF9vcHQNCisjZGVmaW5lIF9faW5vdXRfZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9faW5vdXRfYmNvdW50X29wdA0KKyNkZWZpbmUgX19pbm91dF9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lub3V0X2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbm91dF9lY291bnRfcGFydF9vcHQNCisjZGVmaW5lIF9faW5vdXRfZWNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgX19pbm91dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9faW5vdXRfYmNvdW50X3BhcnRfb3B0DQorI2RlZmluZSBfX2lub3V0X2Jjb3VudF9wYXJ0X29wdChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICAgIF9faW5vdXRfYmNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2lub3V0X2Vjb3VudF9mdWxsX29wdA0KKyNkZWZpbmUgX19pbm91dF9lY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lub3V0X2Vjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19pbm91dF9iY291bnRfZnVsbF9vcHQNCisjZGVmaW5lIF9faW5vdXRfYmNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbm91dF9iY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisNCisjaWZuZGVmIF9fZGVyZWZfZWNvdW50DQorI2RlZmluZSBfX2RlcmVmX2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZWNvdW50KDEpIF9fcG9zdCBfX2VsZW1fcmVhZGFibGVUbygxKSBfX3Bvc3QgX19kZXJlZiBfX25vdG51bGwgX19wb3N0IF9fZGVyZWYgX19lbGVtX3dyaXRhYmxlVG8oc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfYmNvdW50DQorI2RlZmluZSBfX2RlcmVmX2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZWNvdW50KDEpIF9fcG9zdCBfX2VsZW1fcmVhZGFibGVUbygxKSBfX3Bvc3QgX19kZXJlZiBfX25vdG51bGwgX19wb3N0IF9fZGVyZWYgX19ieXRlX3dyaXRhYmxlVG8oc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfaW4NCisjZGVmaW5lIF9fZGVyZWZfaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbiBfX3ByZSBfX2RlcmVmIF9fZGVyZWYgX19yZWFkb25seQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9pbl9lY291bnQNCisjZGVmaW5lIF9fZGVyZWZfaW5fZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbiBfX3ByZSBfX2RlcmVmIF9fZWxlbV9yZWFkYWJsZVRvKHNpemUpDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX2luX2Jjb3VudA0KKyNkZWZpbmUgX19kZXJlZl9pbl9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2luIF9fcHJlIF9fZGVyZWYgX19ieXRlX3JlYWRhYmxlVG8oc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3V0DQorI2RlZmluZSBfX2RlcmVmX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfZWNvdW50KDEpIF9fcG9zdCBfX2RlcmVmIF9fdmFsaWQgX19yZWZwYXJhbQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vdXRfZWNvdW50DQorI2RlZmluZSBfX2RlcmVmX291dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfZWNvdW50KHNpemUpIF9fcG9zdCBfX2RlcmVmIF9fdmFsaWQgX19yZWZwYXJhbQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vdXRfYmNvdW50DQorI2RlZmluZSBfX2RlcmVmX291dF9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfYmNvdW50KHNpemUpIF9fcG9zdCBfX2RlcmVmIF9fdmFsaWQgX19yZWZwYXJhbQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vdXRfZWNvdW50X3BhcnQNCisjZGVmaW5lIF9fZGVyZWZfb3V0X2Vjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfZWNvdW50KHNpemUpIF9fcG9zdCBfX2RlcmVmIF9fZWxlbV9yZWFkYWJsZVRvKGxlbmd0aCkNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3V0X2Jjb3VudF9wYXJ0DQorI2RlZmluZSBfX2RlcmVmX291dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudChzaXplKSBfX3Bvc3QgX19kZXJlZiBfX2J5dGVfcmVhZGFibGVUbyhsZW5ndGgpDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX291dF9lY291bnRfZnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9lY291bnRfcGFydChzaXplLHNpemUpDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX291dF9iY291bnRfZnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfYmNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnRfcGFydChzaXplLHNpemUpDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX2lub3V0DQorI2RlZmluZSBfX2RlcmVmX2lub3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbm90bnVsbCBfX2VsZW1fcmVhZGFibGVUbygxKSBfX3ByZSBfX2RlcmVmIF9fdmFsaWQgX19wb3N0IF9fZGVyZWYgX192YWxpZCBfX3JlZnBhcmFtDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX2lub3V0X2Vjb3VudA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0IF9fcHJlIF9fZGVyZWYgX19lbGVtX3dyaXRhYmxlVG8oc2l6ZSkgX19wb3N0IF9fZGVyZWYgX19lbGVtX3dyaXRhYmxlVG8oc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfaW5vdXRfYmNvdW50DQorI2RlZmluZSBfX2RlcmVmX2lub3V0X2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXQgX19wcmUgX19kZXJlZiBfX2J5dGVfd3JpdGFibGVUbyhzaXplKSBfX3Bvc3QgX19kZXJlZiBfX2J5dGVfd3JpdGFibGVUbyhzaXplKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9pbm91dF9lY291bnRfcGFydA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudChzaXplKSBfX3ByZSBfX2RlcmVmIF9fZWxlbV9yZWFkYWJsZVRvKGxlbmd0aCkgX19wb3N0IF9fZGVyZWYgX19lbGVtX3JlYWRhYmxlVG8obGVuZ3RoKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9pbm91dF9iY291bnRfcGFydA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Jjb3VudChzaXplKSBfX3ByZSBfX2RlcmVmIF9fYnl0ZV9yZWFkYWJsZVRvKGxlbmd0aCkgX19wb3N0IF9fZGVyZWYgX19ieXRlX3JlYWRhYmxlVG8obGVuZ3RoKQ0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9pbm91dF9lY291bnRfZnVsbA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudF9wYXJ0KHNpemUsc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfaW5vdXRfYmNvdW50X2Z1bGwNCisjZGVmaW5lIF9fZGVyZWZfaW5vdXRfYmNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnRfcGFydChzaXplLHNpemUpDQorI2VuZGlmDQorDQorI2lmbmRlZiBfX2RlcmVmX2Vjb3VudF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfYmNvdW50X29wdA0KKyNkZWZpbmUgX19kZXJlZl9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9pbl9vcHQNCisjZGVmaW5lIF9fZGVyZWZfaW5fb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ByZSBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9pbl9lY291bnRfb3B0DQorI2RlZmluZSBfX2RlcmVmX2luX2Vjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5fZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgX19wcmUgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfaW5fYmNvdW50X29wdA0KKyNkZWZpbmUgX19kZXJlZl9pbl9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2luX2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX291dF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3V0X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3V0X2Vjb3VudF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3V0X2Vjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3V0X2Jjb3VudF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3V0X2Jjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3V0X2Vjb3VudF9wYXJ0X29wdA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfZWNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vdXRfYmNvdW50X3BhcnRfb3B0DQorI2RlZmluZSBfX2RlcmVmX291dF9iY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgICAgX19wb3N0IF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX291dF9lY291bnRfZnVsbF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3V0X2Vjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICBfX3Bvc3QgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3V0X2Jjb3VudF9mdWxsX29wdA0KKyNkZWZpbmUgX19kZXJlZl9vdXRfYmNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9pbm91dF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfaW5vdXRfb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ByZSBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbCBfX3Bvc3QgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfaW5vdXRfZWNvdW50X29wdA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9pbm91dF9iY291bnRfb3B0DQorI2RlZmluZSBfX2RlcmVmX2lub3V0X2Jjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgX19wcmUgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwgX19wb3N0IF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX2lub3V0X2Vjb3VudF9wYXJ0X29wdA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9lY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9pbm91dF9iY291bnRfcGFydF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfaW5vdXRfYmNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICBfX3ByZSBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbCBfX3Bvc3QgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfaW5vdXRfZWNvdW50X2Z1bGxfb3B0DQorI2RlZmluZSBfX2RlcmVmX2lub3V0X2Vjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgX19wcmUgX19kZXJlZiBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwgX19wb3N0IF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX2lub3V0X2Jjb3VudF9mdWxsX29wdA0KKyNkZWZpbmUgX19kZXJlZl9pbm91dF9iY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Jjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgIF9fcHJlIF9fZGVyZWYgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsIF9fcG9zdCBfX2RlcmVmIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgX19kZXJlZl9vcHRfZWNvdW50DQorI2RlZmluZSBfX2RlcmVmX29wdF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9iY291bnQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9iY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2luDQorI2RlZmluZSBfX2RlcmVmX29wdF9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9pbl9lY291bnQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2luX2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbl9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2luX2Jjb3VudA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5fYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2luX2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vcHRfb3V0DQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9vdXRfZWNvdW50DQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfZWNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9vdXRfYmNvdW50DQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9vdXRfZWNvdW50X3BhcnQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X291dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfZWNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X291dF9iY291bnRfcGFydA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X2Jjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vcHRfb3V0X2Vjb3VudF9mdWxsDQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9vdXRfYmNvdW50X2Z1bGwNCisjZGVmaW5lIF9fZGVyZWZfb3B0X291dF9iY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfYmNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2lub3V0DQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9pbm91dF9lY291bnQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9lY291bnQoc2l6ZSkgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5vdXRfYmNvdW50KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Jjb3VudChzaXplKSAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vcHRfaW5vdXRfZWNvdW50X3BhcnQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9wYXJ0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9lY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudF9wYXJ0DQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9iY291bnRfcGFydChzaXplLGxlbmd0aCkgICAgICAgICAgICAgIF9fZGVyZWZfaW5vdXRfYmNvdW50X3BhcnQoc2l6ZSxsZW5ndGgpICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9pbm91dF9lY291bnRfZnVsbA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5vdXRfZWNvdW50X2Z1bGwoc2l6ZSkgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vcHRfaW5vdXRfYmNvdW50X2Z1bGwNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudF9mdWxsKHNpemUpICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnRfZnVsbChzaXplKSAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2Vjb3VudF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2Vjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2Jjb3VudF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2Jjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2luX29wdA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5fb3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2luX29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vcHRfaW5fZWNvdW50X29wdA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5fZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2luX2Vjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vcHRfaW5fYmNvdW50X29wdA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5fYmNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX2luX2Jjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vcHRfb3V0X29wdA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfb3V0X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2RlcmVmX291dF9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vcHRfb3V0X2Vjb3VudF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X291dF9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9vdXRfZWNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X291dF9iY291bnRfb3B0DQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfYmNvdW50X29wdChzaXplKSAgICAgICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9vdXRfZWNvdW50X3BhcnRfb3B0DQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfZWNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudF9wYXJ0X29wdChzaXplLGxlbmd0aCkgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9vdXRfYmNvdW50X3BhcnRfb3B0DQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfYmNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudF9wYXJ0X29wdChzaXplLGxlbmd0aCkgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9vdXRfZWNvdW50X2Z1bGxfb3B0DQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfZWNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Vjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9vdXRfYmNvdW50X2Z1bGxfb3B0DQorI2RlZmluZSBfX2RlcmVmX29wdF9vdXRfYmNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICAgIF9fZGVyZWZfb3V0X2Jjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9pbm91dF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X29wdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9lY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudF9vcHQoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9iY291bnRfb3B0KHNpemUpICAgICAgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9wYXJ0X29wdA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5vdXRfZWNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgICAgICAgICBfX2RlcmVmX2lub3V0X2Vjb3VudF9wYXJ0X29wdChzaXplLGxlbmd0aCkgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19kZXJlZl9vcHRfaW5vdXRfYmNvdW50X3BhcnRfb3B0DQorI2RlZmluZSBfX2RlcmVmX29wdF9pbm91dF9iY291bnRfcGFydF9vcHQoc2l6ZSxsZW5ndGgpICAgICAgICAgIF9fZGVyZWZfaW5vdXRfYmNvdW50X3BhcnRfb3B0KHNpemUsbGVuZ3RoKSAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorI2VuZGlmDQorI2lmbmRlZiBfX2RlcmVmX29wdF9pbm91dF9lY291bnRfZnVsbF9vcHQNCisjZGVmaW5lIF9fZGVyZWZfb3B0X2lub3V0X2Vjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgICAgICAgICAgX19kZXJlZl9pbm91dF9lY291bnRfZnVsbF9vcHQoc2l6ZSkgICAgICAgICBfX2V4Y2VwdHRoYXQgX19tYXliZW51bGwNCisjZW5kaWYNCisjaWZuZGVmIF9fZGVyZWZfb3B0X2lub3V0X2Jjb3VudF9mdWxsX29wdA0KKyNkZWZpbmUgX19kZXJlZl9vcHRfaW5vdXRfYmNvdW50X2Z1bGxfb3B0KHNpemUpICAgICAgICAgICAgICAgICBfX2RlcmVmX2lub3V0X2Jjb3VudF9mdWxsX29wdChzaXplKSAgICAgICAgIF9fZXhjZXB0dGhhdCBfX21heWJlbnVsbA0KKyNlbmRpZg0KKw0KKy8vIEBAQkVHSU5fRERLU1BMSVQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQWR2YW5jZWQgQW5ub3RhdGlvbiBEZWZpbml0aW9ucw0KKy8vDQorLy8gQW55IG9mIHRoZXNlIG1heSBiZSB1c2VkIHRvIGRpcmVjdGx5IGFubm90YXRlIGZ1bmN0aW9ucywgYW5kIG1heSBiZSB1c2VkIGluDQorLy8gY29tYmluYXRpb24gd2l0aCBlYWNoIG90aGVyIG9yIHdpdGggcmVndWxhciBidWZmZXIgbWFjcm9zLiBGb3IgYW4gZXhwbGFuYXRpb24NCisvLyBvZiBlYWNoIGFubm90YXRpb24sIHNlZSB0aGUgYWR2YW5jZWQgYW5ub3RhdGlvbnMgc2VjdGlvbi4NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQEBFTkRfRERLU1BMSVQNCisNCisjaWZuZGVmIF9fb3V0X2F3Y291bnQNCisjZGVmaW5lIF9fb3V0X2F3Y291bnQoZXhwcixzaXplKSAgICAgICAgICAgIF9fcHJlIF9fbm90bnVsbCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ByZWNvbmQoZXhwcikgX19ieXRlX3dyaXRhYmxlVG8oc2l6ZSkgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcmVjb25kKCEoZXhwcikpIF9fYnl0ZV93cml0YWJsZVRvKChzaXplKSoyKSBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bvc3QgX192YWxpZCBfX3JlZnBhcmFtDQorI2VuZGlmDQorI2lmbmRlZiBfX2luX2F3Y291bnQNCisjZGVmaW5lIF9faW5fYXdjb3VudChleHByLHNpemUpICAgICAgICAgICAgIF9fcHJlIF9fdmFsaWQgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wcmUgX19kZXJlZiBfX3JlYWRvbmx5IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJlY29uZChleHByKSBfX2J5dGVfcmVhZGFibGVUbyhzaXplKSBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ByZWNvbmQoIShleHByKSkgX19lbGVtX3JlYWRhYmxlVG8oc2l6ZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fc3VjY2Vzcw0KKyNkZWZpbmUgX19zdWNjZXNzKGV4cHIpICAgICAgICAgICAgICAgICAgICAgX19pbm5lcl9zdWNjZXNzKGV4cHIpDQorI2VuZGlmDQorI2lmbmRlZiBfX251bGx0ZXJtaW5hdGVkDQorI2RlZmluZSBfX251bGx0ZXJtaW5hdGVkICAgICAgICAgICAgICAgICAgICBfX3JlYWRhYmxlVG8oc2VudGluZWwoMCkpDQorI2VuZGlmDQorI2lmbmRlZiBfX251bGxudWxsdGVybWluYXRlZA0KKyNkZWZpbmUgX19udWxsbnVsbHRlcm1pbmF0ZWQNCisjZW5kaWYNCisjaWZuZGVmIF9fcmVzZXJ2ZWQNCisjZGVmaW5lIF9fcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJlIF9fbnVsbA0KKyNlbmRpZg0KKyNpZm5kZWYgX19jaGVja1JldHVybg0KKyNkZWZpbmUgX19jaGVja1JldHVybiAgICAgICAgICAgICAgICAgICAgICAgX19pbm5lcl9jaGVja1JldHVybg0KKyNlbmRpZg0KKyNpZm5kZWYgX190eXBlZml4DQorI2RlZmluZSBfX3R5cGVmaXgoY3R5cGUpICAgICAgICAgICAgICAgICAgICBfX2lubmVyX3R5cGVmaXgoY3R5cGUpDQorI2VuZGlmDQorI2lmbmRlZiBfX292ZXJyaWRlDQorI2RlZmluZSBfX292ZXJyaWRlICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lubmVyX292ZXJyaWRlDQorI2VuZGlmDQorI2lmbmRlZiBfX2NhbGxiYWNrDQorI2RlZmluZSBfX2NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lubmVyX2NhbGxiYWNrDQorI2VuZGlmDQorI2lmbmRlZiBfX2Zvcm1hdF9zdHJpbmcNCisjZGVmaW5lIF9fZm9ybWF0X3N0cmluZw0KKyNlbmRpZg0KKyNpZm5kZWYgX19ibG9ja3NPbg0KKyNkZWZpbmUgX19ibG9ja3NPbihyZXNvdXJjZSkgICAgICAgICAgICAgICAgX19pbm5lcl9ibG9ja3NPbihyZXNvdXJjZSkNCisjZW5kaWYNCisjaWZuZGVmIF9fY29udHJvbF9lbnRyeXBvaW50DQorI2RlZmluZSBfX2NvbnRyb2xfZW50cnlwb2ludChjYXRlZ29yeSkgICAgICBfX2lubmVyX2NvbnRyb2xfZW50cnlwb2ludChjYXRlZ29yeSkNCisjZW5kaWYNCisjaWZuZGVmIF9fZGF0YV9lbnRyeXBvaW50DQorI2RlZmluZSBfX2RhdGFfZW50cnlwb2ludChjYXRlZ29yeSkgICAgICAgICBfX2lubmVyX2RhdGFfZW50cnlwb2ludChjYXRlZ29yeSkNCisjZW5kaWYNCisNCisjaWZuZGVmIF9fZmFsbHRocm91Z2gNCisgICAgX19pbm5lcl9mYWxsdGhyb3VnaF9kZWMNCisgICAgI2RlZmluZSBfX2ZhbGx0aHJvdWdoIF9faW5uZXJfZmFsbHRocm91Z2gNCisjZW5kaWYNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gRGVwcmVjYXRlZCBBbm5vdGF0aW9uIERlZmluaXRpb25zDQorLy8NCisvLyBUaGVzZSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIGV4aXN0aW5nIGNvZGUuDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKy8vICNkZWZpbmUgX19vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19leGNlcHR0aGF0IF9fbWF5YmVudWxsDQorDQorI2lmZGVmICBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfYXJyYXkuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19hcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NjgwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfYXJyYXkuaApAQCAtMCwwICsxLDUxMCBAQAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFudGktR3JhaW4gR2VvbWV0cnkgLSBWZXJzaW9uIDIuMworLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUgTWF4aW0gU2hlbWFuYXJldiAoaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tKQorLy8KKy8vIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorLy8gaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgorLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisvLyB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmbmRlZiBBR0dfQVJSQVlfSU5DTFVERUQKKyNkZWZpbmUgQUdHX0FSUkFZX0lOQ0xVREVECisjaW5jbHVkZSAiYWdnX2Jhc2ljcy5oIgorbmFtZXNwYWNlIGFnZworewordGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgcG9kX2FycmF5IDogcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKyAgICB+cG9kX2FycmF5KCkKKyAgICB7CisgICAgICAgIEZYX0ZyZWUobV9hcnJheSk7CisgICAgfQorICAgIHBvZF9hcnJheSgpIDogbV9zaXplKDApLCBtX2NhcGFjaXR5KDApLCBtX2FycmF5KDApIHt9CisgICAgcG9kX2FycmF5KHVuc2lnbmVkIGNhcCwgdW5zaWduZWQgZXh0cmFfdGFpbCA9IDApOworICAgIHBvZF9hcnJheShjb25zdCBwb2RfYXJyYXk8VD4mKTsKKyAgICBjb25zdCBwb2RfYXJyYXk8VD4mIG9wZXJhdG9yID0gKGNvbnN0IHBvZF9hcnJheTxUPiYpOworICAgIHZvaWQgY2FwYWNpdHkodW5zaWduZWQgY2FwLCB1bnNpZ25lZCBleHRyYV90YWlsID0gMCk7CisgICAgdW5zaWduZWQgY2FwYWNpdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2FwYWNpdHk7CisgICAgfQorICAgIHZvaWQgYWxsb2NhdGUodW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgZXh0cmFfdGFpbCA9IDApOworICAgIHZvaWQgcmVzaXplKHVuc2lnbmVkIG5ld19zaXplKTsKKyAgICB2b2lkIHplcm8oKQorICAgIHsKKyAgICAgICAgRlhTWVNfbWVtc2V0KG1fYXJyYXksIDAsIHNpemVvZihUKSAqIG1fc2l6ZSk7CisgICAgfQorICAgIHZvaWQgYWRkKGNvbnN0IFQmIHYpCisgICAgeworICAgICAgICBtX2FycmF5W21fc2l6ZSsrXSA9IHY7CisgICAgfQorICAgIHZvaWQgaW5jX3NpemUodW5zaWduZWQgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fc2l6ZSArPSBzaXplOworICAgIH0KKyAgICB1bnNpZ25lZCBzaXplKCkgICAgICBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2l6ZTsKKyAgICB9CisgICAgdW5zaWduZWQgYnl0ZV9zaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NpemUgKiBzaXplb2YoVCk7CisgICAgfQorICAgIGNvbnN0IFQmIG9wZXJhdG9yIFtdICh1bnNpZ25lZCBpKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJyYXlbaV07CisgICAgfQorICAgIFQmIG9wZXJhdG9yIFtdICh1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJyYXlbaV07CisgICAgfQorICAgIGNvbnN0IFQmIGF0KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcnJheVtpXTsKKyAgICB9CisgICAgVCYgYXQodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FycmF5W2ldOworICAgIH0KKyAgICBUICB2YWx1ZV9hdCh1bnNpZ25lZCBpKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJyYXlbaV07CisgICAgfQorICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJyYXk7CisgICAgfQorICAgIFQqIGRhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJyYXk7CisgICAgfQorICAgIHZvaWQgcmVtb3ZlX2FsbCgpCisgICAgeworICAgICAgICBtX3NpemUgPSAwOworICAgIH0KKyAgICB2b2lkIGN1dF9hdCh1bnNpZ25lZCBudW0pCisgICAgeworICAgICAgICBpZihudW0gPCBtX3NpemUpIHsKKyAgICAgICAgICAgIG1fc2l6ZSA9IG51bTsKKyAgICAgICAgfQorICAgIH0KK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9zaXplOworICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CisgICAgVCogICAgICAgbV9hcnJheTsKK307Cit0ZW1wbGF0ZTxjbGFzcyBUPgordm9pZCBwb2RfYXJyYXk8VD46OmNhcGFjaXR5KHVuc2lnbmVkIGNhcCwgdW5zaWduZWQgZXh0cmFfdGFpbCkKK3sKKyAgICBtX3NpemUgPSAwOworICAgIHVuc2lnbmVkIGZ1bGxfY2FwID0gY2FwICsgZXh0cmFfdGFpbDsKKyAgICBpZihmdWxsX2NhcCA8IGNhcCkgeworICAgICAgICBGWF9GcmVlKG1fYXJyYXkpOworICAgICAgICBtX2FycmF5ID0gMDsKKyAgICAgICAgbV9jYXBhY2l0eSA9IDA7CisgICAgfSBlbHNlIGlmKGZ1bGxfY2FwID4gbV9jYXBhY2l0eSkgeworICAgICAgICBGWF9GcmVlKG1fYXJyYXkpOworICAgICAgICBtX2FycmF5ID0gMDsKKyAgICAgICAgbV9jYXBhY2l0eSA9IDA7CisgICAgICAgIG1fYXJyYXkgPSBGWF9BbGxvYyhULCBmdWxsX2NhcCk7CisgICAgICAgIGlmIChtX2FycmF5KSB7CisgICAgICAgICAgICBtX2NhcGFjaXR5ID0gZnVsbF9jYXA7CisgICAgICAgIH0KKyAgICB9Cit9Cit0ZW1wbGF0ZTxjbGFzcyBUPgordm9pZCBwb2RfYXJyYXk8VD46OmFsbG9jYXRlKHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGV4dHJhX3RhaWwpCit7CisgICAgY2FwYWNpdHkoc2l6ZSwgZXh0cmFfdGFpbCk7CisgICAgbV9zaXplID0gc2l6ZTsKK30KK3RlbXBsYXRlPGNsYXNzIFQ+Cit2b2lkIHBvZF9hcnJheTxUPjo6cmVzaXplKHVuc2lnbmVkIG5ld19zaXplKQoreworICAgIGlmKG5ld19zaXplID4gbV9zaXplKSB7CisgICAgICAgIGlmKG5ld19zaXplID4gbV9jYXBhY2l0eSkgeworICAgICAgICAgICAgVCogZGF0YSA9IEZYX0FsbG9jKFQsIG5ld19zaXplKTsKKyAgICAgICAgICAgIEZYU1lTX21lbWNweShkYXRhLCBtX2FycmF5LCBtX3NpemUgKiBzaXplb2YoVCkpOworICAgICAgICAgICAgRlhfRnJlZShtX2FycmF5KTsKKyAgICAgICAgICAgIG1fYXJyYXkgPSBkYXRhOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zaXplID0gbmV3X3NpemU7CisgICAgfQorfQordGVtcGxhdGU8Y2xhc3MgVD4gcG9kX2FycmF5PFQ+Ojpwb2RfYXJyYXkodW5zaWduZWQgY2FwLCB1bnNpZ25lZCBleHRyYV90YWlsKSA6CisgICAgbV9zaXplKDApLCBtX2NhcGFjaXR5KGNhcCArIGV4dHJhX3RhaWwpLCBtX2FycmF5KEZYX0FsbG9jKFQsIG1fY2FwYWNpdHkpKSB7fQordGVtcGxhdGU8Y2xhc3MgVD4gcG9kX2FycmF5PFQ+Ojpwb2RfYXJyYXkoY29uc3QgcG9kX2FycmF5PFQ+JiB2KSA6CisgICAgbV9zaXplKHYubV9zaXplKSwKKyAgICBtX2NhcGFjaXR5KHYubV9jYXBhY2l0eSksCisgICAgbV9hcnJheSh2Lm1fY2FwYWNpdHkgPyBGWF9BbGxvYyhULCB2Lm1fY2FwYWNpdHkpIDogMCkKK3sKKyAgICBGWFNZU19tZW1jcHkobV9hcnJheSwgdi5tX2FycmF5LCBzaXplb2YoVCkgKiB2Lm1fc2l6ZSk7Cit9Cit0ZW1wbGF0ZTxjbGFzcyBUPiBjb25zdCBwb2RfYXJyYXk8VD4mCitwb2RfYXJyYXk8VD46Om9wZXJhdG9yID0gKGNvbnN0IHBvZF9hcnJheTxUPiZ2KQoreworICAgIGFsbG9jYXRlKHYubV9zaXplKTsKKyAgICBpZih2Lm1fc2l6ZSkgeworICAgICAgICBGWFNZU19tZW1jcHkobV9hcnJheSwgdi5tX2FycmF5LCBzaXplb2YoVCkgKiB2Lm1fc2l6ZSk7CisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30KK3RlbXBsYXRlPGNsYXNzIFQsIHVuc2lnbmVkIFMgPSA2PiBjbGFzcyBwb2RfZGVxdWUgOiBwdWJsaWMgQ0ZYX09iamVjdAoreworcHVibGljOgorICAgIGVudW0gYmxvY2tfc2NhbGVfZSB7CisgICAgICAgIGJsb2NrX3NoaWZ0ID0gUywKKyAgICAgICAgYmxvY2tfc2l6ZSAgPSAxIDw8IGJsb2NrX3NoaWZ0LAorICAgICAgICBibG9ja19tYXNrICA9IGJsb2NrX3NpemUgLSAxCisgICAgfTsKKyAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKyAgICB+cG9kX2RlcXVlKCk7CisgICAgcG9kX2RlcXVlKCk7CisgICAgcG9kX2RlcXVlKHVuc2lnbmVkIGJsb2NrX3B0cl9pbmMpOworICAgIHBvZF9kZXF1ZShjb25zdCBwb2RfZGVxdWU8VCwgUz4mIHYpOworICAgIGNvbnN0IHBvZF9kZXF1ZTxULCBTPiYgb3BlcmF0b3IgPSAoY29uc3QgcG9kX2RlcXVlPFQsIFM+JiB2KTsKKyAgICB2b2lkIHJlbW92ZV9hbGwoKQorICAgIHsKKyAgICAgICAgbV9zaXplID0gMDsKKyAgICB9CisgICAgdm9pZCBmcmVlX2FsbCgpCisgICAgeworICAgICAgICBmcmVlX3RhaWwoMCk7CisgICAgfQorICAgIHZvaWQgZnJlZV90YWlsKHVuc2lnbmVkIHNpemUpOworICAgIHZvaWQgYWRkKGNvbnN0IFQmIHZhbCk7CisgICAgdm9pZCBtb2RpZnlfbGFzdChjb25zdCBUJiB2YWwpOworICAgIHZvaWQgcmVtb3ZlX2xhc3QoKTsKKyAgICBpbnQgYWxsb2NhdGVfY29udGludW91c19ibG9jayh1bnNpZ25lZCBudW1fZWxlbWVudHMpOworICAgIHZvaWQgYWRkX2FycmF5KGNvbnN0IFQqIHB0ciwgdW5zaWduZWQgbnVtX2VsZW0pCisgICAgeworICAgICAgICB3aGlsZShudW1fZWxlbS0tKSB7CisgICAgICAgICAgICBhZGQoKnB0cisrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBEYXRhQWNjZXNzb3I+IHZvaWQgYWRkX2RhdGEoRGF0YUFjY2Vzc29yJiBkYXRhKQorICAgIHsKKyAgICAgICAgd2hpbGUoZGF0YS5zaXplKCkpIHsKKyAgICAgICAgICAgIGFkZCgqZGF0YSk7CisgICAgICAgICAgICArK2RhdGE7CisgICAgICAgIH0KKyAgICB9CisgICAgdm9pZCBjdXRfYXQodW5zaWduZWQgc2l6ZSkKKyAgICB7CisgICAgICAgIGlmKHNpemUgPCBtX3NpemUpIHsKKyAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CisgICAgICAgIH0KKyAgICB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zaXplOworICAgIH0KKyAgICBjb25zdCBUJiBvcGVyYXRvciBbXSAodW5zaWduZWQgaSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jsb2Nrc1tpID4+IGJsb2NrX3NoaWZ0XVtpICYgYmxvY2tfbWFza107CisgICAgfQorICAgIFQmIG9wZXJhdG9yIFtdICh1bnNpZ25lZCBpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmxvY2tzW2kgPj4gYmxvY2tfc2hpZnRdW2kgJiBibG9ja19tYXNrXTsKKyAgICB9CisgICAgY29uc3QgVCYgYXQodW5zaWduZWQgaSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jsb2Nrc1tpID4+IGJsb2NrX3NoaWZ0XVtpICYgYmxvY2tfbWFza107CisgICAgfQorICAgIFQmIGF0KHVuc2lnbmVkIGkpCisgICAgeworICAgICAgICByZXR1cm4gbV9ibG9ja3NbaSA+PiBibG9ja19zaGlmdF1baSAmIGJsb2NrX21hc2tdOworICAgIH0KKyAgICBUIHZhbHVlX2F0KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ibG9ja3NbaSA+PiBibG9ja19zaGlmdF1baSAmIGJsb2NrX21hc2tdOworICAgIH0KKyAgICBjb25zdCBUJiBjdXJyKHVuc2lnbmVkIGlkeCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoKnRoaXMpW2lkeF07CisgICAgfQorICAgIFQmIGN1cnIodW5zaWduZWQgaWR4KQorICAgIHsKKyAgICAgICAgcmV0dXJuICgqdGhpcylbaWR4XTsKKyAgICB9CisgICAgY29uc3QgVCYgcHJldih1bnNpZ25lZCBpZHgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKCp0aGlzKVsoaWR4ICsgbV9zaXplIC0gMSkgJSBtX3NpemVdOworICAgIH0KKyAgICBUJiBwcmV2KHVuc2lnbmVkIGlkeCkKKyAgICB7CisgICAgICAgIHJldHVybiAoKnRoaXMpWyhpZHggKyBtX3NpemUgLSAxKSAlIG1fc2l6ZV07CisgICAgfQorICAgIGNvbnN0IFQmIG5leHQodW5zaWduZWQgaWR4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqdGhpcylbKGlkeCArIDEpICUgbV9zaXplXTsKKyAgICB9CisgICAgVCYgbmV4dCh1bnNpZ25lZCBpZHgpCisgICAgeworICAgICAgICByZXR1cm4gKCp0aGlzKVsoaWR4ICsgMSkgJSBtX3NpemVdOworICAgIH0KKyAgICBjb25zdCBUJiBsYXN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoKnRoaXMpW21fc2l6ZSAtIDFdOworICAgIH0KKyAgICBUJiBsYXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiAoKnRoaXMpW21fc2l6ZSAtIDFdOworICAgIH0KKyAgICB1bnNpZ25lZCBieXRlX3NpemUoKSBjb25zdDsKKyAgICBjb25zdCBUKiBibG9jayh1bnNpZ25lZCBuYikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jsb2Nrc1tuYl07CisgICAgfQorcHVibGljOgorICAgIHZvaWQgYWxsb2NhdGVfYmxvY2sodW5zaWduZWQgbmIpOworICAgIFQqICAgZGF0YV9wdHIoKTsKKyAgICB1bnNpZ25lZCAgICAgICAgbV9zaXplOworICAgIHVuc2lnbmVkICAgICAgICBtX251bV9ibG9ja3M7CisgICAgdW5zaWduZWQgICAgICAgIG1fbWF4X2Jsb2NrczsKKyAgICBUKiogICAgICAgICAgICAgbV9ibG9ja3M7CisgICAgdW5zaWduZWQgICAgICAgIG1fYmxvY2tfcHRyX2luYzsKK307Cit0ZW1wbGF0ZTxjbGFzcyBULCB1bnNpZ25lZCBTPiBwb2RfZGVxdWU8VCwgUz46On5wb2RfZGVxdWUoKQoreworICAgIGlmKG1fbnVtX2Jsb2NrcykgeworICAgICAgICBUKiogYmxrID0gbV9ibG9ja3MgKyBtX251bV9ibG9ja3MgLSAxOworICAgICAgICB3aGlsZShtX251bV9ibG9ja3MtLSkgeworICAgICAgICAgICAgRlhfRnJlZSgqYmxrKTsKKyAgICAgICAgICAgIC0tYmxrOworICAgICAgICB9CisgICAgICAgIEZYX0ZyZWUobV9ibG9ja3MpOworICAgIH0KK30KK3RlbXBsYXRlPGNsYXNzIFQsIHVuc2lnbmVkIFM+Cit2b2lkIHBvZF9kZXF1ZTxULCBTPjo6ZnJlZV90YWlsKHVuc2lnbmVkIHNpemUpCit7CisgICAgaWYoc2l6ZSA8IG1fc2l6ZSkgeworICAgICAgICB1bnNpZ25lZCBuYiA9IChzaXplICsgYmxvY2tfbWFzaykgPj4gYmxvY2tfc2hpZnQ7CisgICAgICAgIHdoaWxlKG1fbnVtX2Jsb2NrcyA+IG5iKSB7CisgICAgICAgICAgICBGWF9GcmVlKG1fYmxvY2tzWy0tbV9udW1fYmxvY2tzXSk7CisgICAgICAgIH0KKyAgICAgICAgbV9zaXplID0gc2l6ZTsKKyAgICB9Cit9Cit0ZW1wbGF0ZTxjbGFzcyBULCB1bnNpZ25lZCBTPiBwb2RfZGVxdWU8VCwgUz46OnBvZF9kZXF1ZSgpIDoKKyAgICBtX3NpemUoMCksCisgICAgbV9udW1fYmxvY2tzKDApLAorICAgIG1fbWF4X2Jsb2NrcygwKSwKKyAgICBtX2Jsb2NrcygwKSwKKyAgICBtX2Jsb2NrX3B0cl9pbmMoYmxvY2tfc2l6ZSkKK3sKK30KK3RlbXBsYXRlPGNsYXNzIFQsIHVuc2lnbmVkIFM+Citwb2RfZGVxdWU8VCwgUz46OnBvZF9kZXF1ZSh1bnNpZ25lZCBibG9ja19wdHJfaW5jKSA6CisgICAgbV9zaXplKDApLAorICAgIG1fbnVtX2Jsb2NrcygwKSwKKyAgICBtX21heF9ibG9ja3MoMCksCisgICAgbV9ibG9ja3MoMCksCisgICAgbV9ibG9ja19wdHJfaW5jKGJsb2NrX3B0cl9pbmMpCit7Cit9Cit0ZW1wbGF0ZTxjbGFzcyBULCB1bnNpZ25lZCBTPgorcG9kX2RlcXVlPFQsIFM+Ojpwb2RfZGVxdWUoY29uc3QgcG9kX2RlcXVlPFQsIFM+JiB2KSA6CisgICAgbV9zaXplKHYubV9zaXplKSwKKyAgICBtX251bV9ibG9ja3Modi5tX251bV9ibG9ja3MpLAorICAgIG1fbWF4X2Jsb2Nrcyh2Lm1fbWF4X2Jsb2NrcyksCisgICAgbV9ibG9ja3Modi5tX21heF9ibG9ja3MgPyBGWF9BbGxvYyhUKiwgdi5tX21heF9ibG9ja3MpIDogMCksCisgICAgbV9ibG9ja19wdHJfaW5jKHYubV9ibG9ja19wdHJfaW5jKQoreworICAgIHVuc2lnbmVkIGk7CisgICAgZm9yKGkgPSAwOyBpIDwgdi5tX251bV9ibG9ja3M7ICsraSkgeworICAgICAgICBtX2Jsb2Nrc1tpXSA9IEZYX0FsbG9jKFQsIGJsb2NrX3NpemUpOworICAgICAgICBGWFNZU19tZW1jcHkobV9ibG9ja3NbaV0sIHYubV9ibG9ja3NbaV0sIGJsb2NrX3NpemUgKiBzaXplb2YoVCkpOworICAgIH0KK30KK3RlbXBsYXRlPGNsYXNzIFQsIHVuc2lnbmVkIFM+Citjb25zdCBwb2RfZGVxdWU8VCwgUz4mIHBvZF9kZXF1ZTxULCBTPjo6b3BlcmF0b3IgPSAoY29uc3QgcG9kX2RlcXVlPFQsIFM+JiB2KQoreworICAgIHVuc2lnbmVkIGk7CisgICAgZm9yKGkgPSBtX251bV9ibG9ja3M7IGkgPCB2Lm1fbnVtX2Jsb2NrczsgKytpKSB7CisgICAgICAgIGFsbG9jYXRlX2Jsb2NrKGkpOworICAgIH0KKyAgICBmb3IoaSA9IDA7IGkgPCB2Lm1fbnVtX2Jsb2NrczsgKytpKSB7CisgICAgICAgIEZYU1lTX21lbWNweShtX2Jsb2Nrc1tpXSwgdi5tX2Jsb2Nrc1tpXSwgYmxvY2tfc2l6ZSAqIHNpemVvZihUKSk7CisgICAgfQorICAgIG1fc2l6ZSA9IHYubV9zaXplOworICAgIHJldHVybiAqdGhpczsKK30KK3RlbXBsYXRlPGNsYXNzIFQsIHVuc2lnbmVkIFM+Cit2b2lkIHBvZF9kZXF1ZTxULCBTPjo6YWxsb2NhdGVfYmxvY2sodW5zaWduZWQgbmIpCit7CisgICAgaWYobmIgPj0gbV9tYXhfYmxvY2tzKSB7CisgICAgICAgIFQqKiBuZXdfYmxvY2tzID0gRlhfQWxsb2MoVCosIG1fbWF4X2Jsb2NrcyArIG1fYmxvY2tfcHRyX2luYyk7CisgICAgICAgIGlmKG1fYmxvY2tzKSB7CisgICAgICAgICAgICBGWFNZU19tZW1jcHkobmV3X2Jsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtX251bV9ibG9ja3MgKiBzaXplb2YoVCopKTsKKyAgICAgICAgICAgIEZYX0ZyZWUobV9ibG9ja3MpOworICAgICAgICB9CisgICAgICAgIG1fYmxvY2tzID0gbmV3X2Jsb2NrczsKKyAgICAgICAgbV9tYXhfYmxvY2tzICs9IG1fYmxvY2tfcHRyX2luYzsKKyAgICB9CisgICAgbV9ibG9ja3NbbmJdID0gRlhfQWxsb2MoVCwgYmxvY2tfc2l6ZSk7CisgICAgbV9udW1fYmxvY2tzKys7Cit9Cit0ZW1wbGF0ZTxjbGFzcyBULCB1bnNpZ25lZCBTPgoraW5saW5lIFQqIHBvZF9kZXF1ZTxULCBTPjo6ZGF0YV9wdHIoKQoreworICAgIHVuc2lnbmVkIG5iID0gbV9zaXplID4+IGJsb2NrX3NoaWZ0OworICAgIGlmKG5iID49IG1fbnVtX2Jsb2NrcykgeworICAgICAgICBhbGxvY2F0ZV9ibG9jayhuYik7CisgICAgfQorICAgIHJldHVybiBtX2Jsb2Nrc1tuYl0gKyAobV9zaXplICYgYmxvY2tfbWFzayk7Cit9Cit0ZW1wbGF0ZTxjbGFzcyBULCB1bnNpZ25lZCBTPgoraW5saW5lIHZvaWQgcG9kX2RlcXVlPFQsIFM+OjphZGQoY29uc3QgVCYgdmFsKQoreworICAgICpkYXRhX3B0cigpID0gdmFsOworICAgICsrbV9zaXplOworfQordGVtcGxhdGU8Y2xhc3MgVCwgdW5zaWduZWQgUz4KK2lubGluZSB2b2lkIHBvZF9kZXF1ZTxULCBTPjo6cmVtb3ZlX2xhc3QoKQoreworICAgIGlmKG1fc2l6ZSkgeworICAgICAgICAtLW1fc2l6ZTsKKyAgICB9Cit9Cit0ZW1wbGF0ZTxjbGFzcyBULCB1bnNpZ25lZCBTPgordm9pZCBwb2RfZGVxdWU8VCwgUz46Om1vZGlmeV9sYXN0KGNvbnN0IFQmIHZhbCkKK3sKKyAgICByZW1vdmVfbGFzdCgpOworICAgIGFkZCh2YWwpOworfQordGVtcGxhdGU8Y2xhc3MgVCwgdW5zaWduZWQgUz4KK2ludCBwb2RfZGVxdWU8VCwgUz46OmFsbG9jYXRlX2NvbnRpbnVvdXNfYmxvY2sodW5zaWduZWQgbnVtX2VsZW1lbnRzKQoreworICAgIGlmKG51bV9lbGVtZW50cyA8IGJsb2NrX3NpemUpIHsKKyAgICAgICAgZGF0YV9wdHIoKTsKKyAgICAgICAgdW5zaWduZWQgcmVzdCA9IGJsb2NrX3NpemUgLSAobV9zaXplICYgYmxvY2tfbWFzayk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4OworICAgICAgICBpZihudW1fZWxlbWVudHMgPD0gcmVzdCkgeworICAgICAgICAgICAgaW5kZXggPSBtX3NpemU7CisgICAgICAgICAgICBtX3NpemUgKz0gbnVtX2VsZW1lbnRzOworICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICB9CisgICAgICAgIG1fc2l6ZSArPSByZXN0OworICAgICAgICBkYXRhX3B0cigpOworICAgICAgICBpbmRleCA9IG1fc2l6ZTsKKyAgICAgICAgbV9zaXplICs9IG51bV9lbGVtZW50czsKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9Cit0ZW1wbGF0ZTxjbGFzcyBULCB1bnNpZ25lZCBTPgordW5zaWduZWQgcG9kX2RlcXVlPFQsIFM+OjpieXRlX3NpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemUgKiBzaXplb2YoVCk7Cit9CitjbGFzcyBwb2RfYWxsb2NhdG9yIDogcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICB2b2lkIHJlbW92ZV9hbGwoKQorICAgIHsKKyAgICAgICAgaWYobV9udW1fYmxvY2tzKSB7CisgICAgICAgICAgICBpbnQ4dSoqIGJsayA9IG1fYmxvY2tzICsgbV9udW1fYmxvY2tzIC0gMTsKKyAgICAgICAgICAgIHdoaWxlKG1fbnVtX2Jsb2Nrcy0tKSB7CisgICAgICAgICAgICAgICAgRlhfRnJlZSgqYmxrKTsKKyAgICAgICAgICAgICAgICAtLWJsazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEZYX0ZyZWUobV9ibG9ja3MpOworICAgICAgICB9CisgICAgICAgIG1fbnVtX2Jsb2NrcyA9IDA7CisgICAgICAgIG1fbWF4X2Jsb2NrcyA9IDA7CisgICAgICAgIG1fYmxvY2tzID0gMDsKKyAgICAgICAgbV9idWZfcHRyID0gMDsKKyAgICAgICAgbV9yZXN0ID0gMDsKKyAgICB9CisgICAgfnBvZF9hbGxvY2F0b3IoKQorICAgIHsKKyAgICAgICAgcmVtb3ZlX2FsbCgpOworICAgIH0KKyAgICBwb2RfYWxsb2NhdG9yKHVuc2lnbmVkIGJsb2NrX3NpemUsIHVuc2lnbmVkIGJsb2NrX3B0cl9pbmMgPSAyNTYgLSA4KSA6CisgICAgICAgIG1fYmxvY2tfc2l6ZShibG9ja19zaXplKSwKKyAgICAgICAgbV9ibG9ja19wdHJfaW5jKGJsb2NrX3B0cl9pbmMpLAorICAgICAgICBtX251bV9ibG9ja3MoMCksCisgICAgICAgIG1fbWF4X2Jsb2NrcygwKSwKKyAgICAgICAgbV9ibG9ja3MoMCksCisgICAgICAgIG1fYnVmX3B0cigwKSwKKyAgICAgICAgbV9yZXN0KDApCisgICAgeworICAgIH0KKyAgICBpbnQ4dSogYWxsb2NhdGUodW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgYWxpZ25tZW50ID0gMSkKKyAgICB7CisgICAgICAgIGlmKHNpemUgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYoc2l6ZSA8PSBtX3Jlc3QpIHsKKyAgICAgICAgICAgIGludDh1KiBwdHIgPSBtX2J1Zl9wdHI7CisgICAgICAgICAgICBpZihhbGlnbm1lbnQgPiAxKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgYWxpZ24gPSAoYWxpZ25tZW50IC0gdW5zaWduZWQoKHNpemVfdClwdHIpICUgYWxpZ25tZW50KSAlIGFsaWdubWVudDsKKyAgICAgICAgICAgICAgICBzaXplICs9IGFsaWduOworICAgICAgICAgICAgICAgIHB0ciArPSBhbGlnbjsKKyAgICAgICAgICAgICAgICBpZihzaXplIDw9IG1fcmVzdCkgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc3QgLT0gc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9idWZfcHRyICs9IHNpemU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdHI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFsbG9jYXRlX2Jsb2NrKHNpemUpOworICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZShzaXplIC0gYWxpZ24sIGFsaWdubWVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3Jlc3QgLT0gc2l6ZTsKKyAgICAgICAgICAgIG1fYnVmX3B0ciArPSBzaXplOworICAgICAgICAgICAgcmV0dXJuIHB0cjsKKyAgICAgICAgfQorICAgICAgICBhbGxvY2F0ZV9ibG9jayhzaXplICsgYWxpZ25tZW50IC0gMSk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZShzaXplLCBhbGlnbm1lbnQpOworICAgIH0KK3ByaXZhdGU6CisgICAgdm9pZCBhbGxvY2F0ZV9ibG9jayh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAgICAgaWYoc2l6ZSA8IG1fYmxvY2tfc2l6ZSkgeworICAgICAgICAgICAgc2l6ZSA9IG1fYmxvY2tfc2l6ZTsKKyAgICAgICAgfQorICAgICAgICBpZihtX251bV9ibG9ja3MgPj0gbV9tYXhfYmxvY2tzKSB7CisgICAgICAgICAgICBpbnQ4dSoqIG5ld19ibG9ja3MgPSBGWF9BbGxvYyhpbnQ4dSosIG1fbWF4X2Jsb2NrcyArIG1fYmxvY2tfcHRyX2luYyk7CisgICAgICAgICAgICBpZihtX2Jsb2NrcykgeworICAgICAgICAgICAgICAgIEZYU1lTX21lbWNweShuZXdfYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9udW1fYmxvY2tzICogc2l6ZW9mKGludDh1KikpOworICAgICAgICAgICAgICAgIEZYX0ZyZWUobV9ibG9ja3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9ibG9ja3MgPSBuZXdfYmxvY2tzOworICAgICAgICAgICAgbV9tYXhfYmxvY2tzICs9IG1fYmxvY2tfcHRyX2luYzsKKyAgICAgICAgfQorICAgICAgICBtX2Jsb2Nrc1ttX251bV9ibG9ja3NdID0gbV9idWZfcHRyID0gRlhfQWxsb2MoaW50OHUsIHNpemUpOworICAgICAgICBtX251bV9ibG9ja3MrKzsKKyAgICAgICAgbV9yZXN0ID0gc2l6ZTsKKyAgICB9CisgICAgdW5zaWduZWQgbV9ibG9ja19zaXplOworICAgIHVuc2lnbmVkIG1fYmxvY2tfcHRyX2luYzsKKyAgICB1bnNpZ25lZCBtX251bV9ibG9ja3M7CisgICAgdW5zaWduZWQgbV9tYXhfYmxvY2tzOworICAgIGludDh1KiogIG1fYmxvY2tzOworICAgIGludDh1KiAgIG1fYnVmX3B0cjsKKyAgICB1bnNpZ25lZCBtX3Jlc3Q7Cit9OworZW51bSBxdWlja19zb3J0X3RocmVzaG9sZF9lIHsKKyAgICBxdWlja19zb3J0X3RocmVzaG9sZCA9IDkKK307Cit0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwX2VsZW1lbnRzKFQmIGEsIFQmIGIpCit7CisgICAgVCB0ZW1wID0gYTsKKyAgICBhID0gYjsKKyAgICBiID0gdGVtcDsKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2Jhc2ljcy5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2Jhc2ljcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OGZlZDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfYmFzaWNzLmgKQEAgLTAsMCArMSwyODIgQEAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBbnRpLUdyYWluIEdlb21ldHJ5IC0gVmVyc2lvbiAyLjMKKy8vIENvcHlyaWdodCAoQykgMjAwMi0yMDA1IE1heGltIFNoZW1hbmFyZXYgKGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbSkKKy8vCisvLyBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKKy8vIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KKy8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorLy8gd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb250YWN0OiBtY3NlZW1AYW50aWdyYWluLmNvbQorLy8gICAgICAgICAgbWNzZWVtYWdnQHlhaG9vLmNvbQorLy8gICAgICAgICAgaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNpZm5kZWYgQUdHX0JBU0lDU19JTkNMVURFRAorI2RlZmluZSBBR0dfQkFTSUNTX0lOQ0xVREVECisjaWZuZGVmIEFHR19JTlQ4CisjZGVmaW5lIEFHR19JTlQ4IHNpZ25lZCBjaGFyCisjZW5kaWYKKyNpZm5kZWYgQUdHX0lOVDhVCisjZGVmaW5lIEFHR19JTlQ4VSB1bnNpZ25lZCBjaGFyCisjZW5kaWYKKyNpZm5kZWYgQUdHX0lOVDE2CisjZGVmaW5lIEFHR19JTlQxNiBzaG9ydAorI2VuZGlmCisjaWZuZGVmIEFHR19JTlQxNlUKKyNkZWZpbmUgQUdHX0lOVDE2VSB1bnNpZ25lZCBzaG9ydAorI2VuZGlmCisjaWZuZGVmIEFHR19JTlQzMgorI2RlZmluZSBBR0dfSU5UMzIgaW50CisjZW5kaWYKKyNpZm5kZWYgQUdHX0lOVDMyVQorI2RlZmluZSBBR0dfSU5UMzJVIHVuc2lnbmVkCisjZW5kaWYKKyNpZm5kZWYgQUdHX0lOVDY0CisjZGVmaW5lIEFHR19JTlQ2NCBzaWduZWQgbG9uZyBsb25nCisjZW5kaWYKKyNpZm5kZWYgQUdHX0lOVDY0VQorI2RlZmluZSBBR0dfSU5UNjRVIHVuc2lnbmVkIGxvbmcgbG9uZworI2VuZGlmCisjZGVmaW5lIEFHR19JTkxJTkUgaW5saW5lCituYW1lc3BhY2UgYWdnCit7Cit0eXBlZGVmIEFHR19JTlQ4ICAgaW50ODsKK3R5cGVkZWYgQUdHX0lOVDhVICBpbnQ4dTsKK3R5cGVkZWYgQUdHX0lOVDE2ICBpbnQxNjsKK3R5cGVkZWYgQUdHX0lOVDE2VSBpbnQxNnU7Cit0eXBlZGVmIEFHR19JTlQzMiAgaW50MzI7Cit0eXBlZGVmIEFHR19JTlQzMlUgaW50MzJ1OwordHlwZWRlZiBBR0dfSU5UNjQgIGludDY0OwordHlwZWRlZiBBR0dfSU5UNjRVIGludDY0dTsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBjb3Zlcl90eXBlOworZW51bSBjb3Zlcl9zY2FsZV9lIHsKKyAgICBjb3Zlcl9zaGlmdCA9IDgsCisgICAgY292ZXJfc2l6ZSAgPSAxIDw8IGNvdmVyX3NoaWZ0LAorICAgIGNvdmVyX21hc2sgID0gY292ZXJfc2l6ZSAtIDEsCisgICAgY292ZXJfbm9uZSAgPSAwLAorICAgIGNvdmVyX2Z1bGwgID0gY292ZXJfbWFzaworfTsKK3RlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCByZWN0X2Jhc2UgOiBwdWJsaWMgQ0ZYX09iamVjdCB7CisgICAgdHlwZWRlZiByZWN0X2Jhc2U8VD4gc2VsZl90eXBlOworICAgIFQgeDE7CisgICAgVCB5MTsKKyAgICBUIHgyOworICAgIFQgeTI7CisgICAgcmVjdF9iYXNlKCkge30KKyAgICByZWN0X2Jhc2UoVCB4MV8sIFQgeTFfLCBUIHgyXywgVCB5Ml8pIDoKKyAgICAgICAgeDEoeDFfKSwgeTEoeTFfKSwgeDIoeDJfKSwgeTIoeTJfKSB7fQorICAgIGNvbnN0IHNlbGZfdHlwZSYgbm9ybWFsaXplKCkKKyAgICB7CisgICAgICAgIFQgdDsKKyAgICAgICAgaWYoeDEgPiB4MikgeworICAgICAgICAgICAgdCA9IHgxOworICAgICAgICAgICAgeDEgPSB4MjsKKyAgICAgICAgICAgIHgyID0gdDsKKyAgICAgICAgfQorICAgICAgICBpZih5MSA+IHkyKSB7CisgICAgICAgICAgICB0ID0geTE7CisgICAgICAgICAgICB5MSA9IHkyOworICAgICAgICAgICAgeTIgPSB0OworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgYm9vbCBjbGlwKGNvbnN0IHNlbGZfdHlwZSYgcikKKyAgICB7CisgICAgICAgIGlmKHgyID4gci54MikgeworICAgICAgICAgICAgeDIgPSByLngyOworICAgICAgICB9CisgICAgICAgIGlmKHkyID4gci55MikgeworICAgICAgICAgICAgeTIgPSByLnkyOworICAgICAgICB9CisgICAgICAgIGlmKHgxIDwgci54MSkgeworICAgICAgICAgICAgeDEgPSByLngxOworICAgICAgICB9CisgICAgICAgIGlmKHkxIDwgci55MSkgeworICAgICAgICAgICAgeTEgPSByLnkxOworICAgICAgICB9CisgICAgICAgIHJldHVybiB4MSA8PSB4MiAmJiB5MSA8PSB5MjsKKyAgICB9CisgICAgYm9vbCBpc192YWxpZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4geDEgPD0geDIgJiYgeTEgPD0geTI7CisgICAgfQorfTsKK3RlbXBsYXRlPGNsYXNzIFJlY3Q+CitpbmxpbmUgUmVjdCBpbnRlcnNlY3RfcmVjdGFuZ2xlcyhjb25zdCBSZWN0JiByMSwgY29uc3QgUmVjdCYgcjIpCit7CisgICAgUmVjdCByID0gcjE7CisgICAgaWYoci54MiA+IHIyLngyKSB7CisgICAgICAgIHIueDIgPSByMi54MjsKKyAgICB9CisgICAgaWYoci55MiA+IHIyLnkyKSB7CisgICAgICAgIHIueTIgPSByMi55MjsKKyAgICB9CisgICAgaWYoci54MSA8IHIyLngxKSB7CisgICAgICAgIHIueDEgPSByMi54MTsKKyAgICB9CisgICAgaWYoci55MSA8IHIyLnkxKSB7CisgICAgICAgIHIueTEgPSByMi55MTsKKyAgICB9CisgICAgcmV0dXJuIHI7Cit9Cit0ZW1wbGF0ZTxjbGFzcyBSZWN0PgoraW5saW5lIFJlY3QgdW5pdGVfcmVjdGFuZ2xlcyhjb25zdCBSZWN0JiByMSwgY29uc3QgUmVjdCYgcjIpCit7CisgICAgUmVjdCByID0gcjE7CisgICAgaWYoci54MiA8IHIyLngyKSB7CisgICAgICAgIHIueDIgPSByMi54MjsKKyAgICB9CisgICAgaWYoci55MiA8IHIyLnkyKSB7CisgICAgICAgIHIueTIgPSByMi55MjsKKyAgICB9CisgICAgaWYoci54MSA+IHIyLngxKSB7CisgICAgICAgIHIueDEgPSByMi54MTsKKyAgICB9CisgICAgaWYoci55MSA+IHIyLnkxKSB7CisgICAgICAgIHIueTEgPSByMi55MTsKKyAgICB9CisgICAgcmV0dXJuIHI7Cit9Cit0eXBlZGVmIHJlY3RfYmFzZTxpbnQ+ICAgIHJlY3Q7Cit0eXBlZGVmIHJlY3RfYmFzZTxGWF9GTE9BVD4gcmVjdF9kOworZW51bSBwYXRoX2NvbW1hbmRzX2UgeworICAgIHBhdGhfY21kX3N0b3AgICAgID0gMCwKKyAgICBwYXRoX2NtZF9tb3ZlX3RvICA9IDEsCisgICAgcGF0aF9jbWRfbGluZV90byAgPSAyLAorICAgIHBhdGhfY21kX2N1cnZlMyAgID0gMywKKyAgICBwYXRoX2NtZF9jdXJ2ZTQgICA9IDQsCisgICAgcGF0aF9jbWRfY3VydmVOICAgPSA1LAorICAgIHBhdGhfY21kX2NhdHJvbSAgID0gNiwKKyAgICBwYXRoX2NtZF91YnNwbGluZSA9IDcsCisgICAgcGF0aF9jbWRfZW5kX3BvbHkgPSAweDBGLAorICAgIHBhdGhfY21kX21hc2sgICAgID0gMHgwRgorfTsKK2VudW0gcGF0aF9mbGFnc19lIHsKKyAgICBwYXRoX2ZsYWdzX25vbmUgID0gMCwKKyAgICBwYXRoX2ZsYWdzX2NjdyAgID0gMHgxMCwKKyAgICBwYXRoX2ZsYWdzX2N3ICAgID0gMHgyMCwKKyAgICBwYXRoX2ZsYWdzX2Nsb3NlID0gMHg0MCwKKyAgICBwYXRoX2ZsYWdzX2pyCSA9IDB4ODAsCisgICAgcGF0aF9mbGFnc19tYXNrICA9IDB4RjAKK307CitpbmxpbmUgYm9vbCBpc192ZXJ0ZXgodW5zaWduZWQgYykKK3sKKyAgICBjICY9IH5wYXRoX2ZsYWdzX2pyOworICAgIHJldHVybiBjID49IHBhdGhfY21kX21vdmVfdG8gJiYgYyA8IHBhdGhfY21kX2VuZF9wb2x5OworfQoraW5saW5lIGJvb2wgaXNfZHJhd2luZyh1bnNpZ25lZCBjKQoreworICAgIGMgJj0gfnBhdGhfZmxhZ3NfanI7CisgICAgcmV0dXJuIGMgPj0gcGF0aF9jbWRfbGluZV90byAmJiBjIDwgcGF0aF9jbWRfZW5kX3BvbHk7Cit9CitpbmxpbmUgYm9vbCBpc19zdG9wKHVuc2lnbmVkIGMpCit7CisgICAgYyAmPSB+cGF0aF9mbGFnc19qcjsKKyAgICByZXR1cm4gYyA9PSBwYXRoX2NtZF9zdG9wOworfQoraW5saW5lIGJvb2wgaXNfbW92ZV90byh1bnNpZ25lZCBjKQoreworICAgIGMgJj0gfnBhdGhfZmxhZ3NfanI7CisgICAgcmV0dXJuIGMgPT0gcGF0aF9jbWRfbW92ZV90bzsKK30KK2lubGluZSBib29sIGlzX2xpbmVfdG8odW5zaWduZWQgYykKK3sKKyAgICBjICY9IH5wYXRoX2ZsYWdzX2pyOworICAgIHJldHVybiBjID09IHBhdGhfY21kX2xpbmVfdG87Cit9CitpbmxpbmUgYm9vbCBpc19jdXJ2ZSh1bnNpZ25lZCBjKQoreworICAgIGMgJj0gfnBhdGhfZmxhZ3NfanI7CisgICAgcmV0dXJuIGMgPT0gcGF0aF9jbWRfY3VydmUzIHx8IGMgPT0gcGF0aF9jbWRfY3VydmU0OworfQoraW5saW5lIGJvb2wgaXNfY3VydmUzKHVuc2lnbmVkIGMpCit7CisgICAgYyAmPSB+cGF0aF9mbGFnc19qcjsKKyAgICByZXR1cm4gYyA9PSBwYXRoX2NtZF9jdXJ2ZTM7Cit9CitpbmxpbmUgYm9vbCBpc19jdXJ2ZTQodW5zaWduZWQgYykKK3sKKyAgICBjICY9IH5wYXRoX2ZsYWdzX2pyOworICAgIHJldHVybiBjID09IHBhdGhfY21kX2N1cnZlNDsKK30KK2lubGluZSBib29sIGlzX2VuZF9wb2x5KHVuc2lnbmVkIGMpCit7CisgICAgYyAmPSB+cGF0aF9mbGFnc19qcjsKKyAgICByZXR1cm4gKGMgJiBwYXRoX2NtZF9tYXNrKSA9PSBwYXRoX2NtZF9lbmRfcG9seTsKK30KK2lubGluZSBib29sIGlzX2Nsb3NlKHVuc2lnbmVkIGMpCit7CisgICAgYyAmPSB+cGF0aF9mbGFnc19qcjsKKyAgICByZXR1cm4gKGMgJiB+KHBhdGhfZmxhZ3NfY3cgfCBwYXRoX2ZsYWdzX2NjdykpID09CisgICAgICAgICAgIChwYXRoX2NtZF9lbmRfcG9seSB8IHBhdGhfZmxhZ3NfY2xvc2UpOworfQoraW5saW5lIGJvb2wgaXNfbmV4dF9wb2x5KHVuc2lnbmVkIGMpCit7CisgICAgYyAmPSB+cGF0aF9mbGFnc19qcjsKKyAgICByZXR1cm4gaXNfc3RvcChjKSB8fCBpc19tb3ZlX3RvKGMpIHx8IGlzX2VuZF9wb2x5KGMpOworfQoraW5saW5lIGJvb2wgaXNfY3codW5zaWduZWQgYykKK3sKKyAgICBjICY9IH5wYXRoX2ZsYWdzX2pyOworICAgIHJldHVybiAoYyAmIHBhdGhfZmxhZ3NfY3cpICE9IDA7Cit9CitpbmxpbmUgYm9vbCBpc19jY3codW5zaWduZWQgYykKK3sKKyAgICBjICY9IH5wYXRoX2ZsYWdzX2pyOworICAgIHJldHVybiAoYyAmIHBhdGhfZmxhZ3NfY2N3KSAhPSAwOworfQoraW5saW5lIGJvb2wgaXNfb3JpZW50ZWQodW5zaWduZWQgYykKK3sKKyAgICBjICY9IH5wYXRoX2ZsYWdzX2pyOworICAgIHJldHVybiAoYyAmIChwYXRoX2ZsYWdzX2N3IHwgcGF0aF9mbGFnc19jY3cpKSAhPSAwOworfQoraW5saW5lIGJvb2wgaXNfY2xvc2VkKHVuc2lnbmVkIGMpCit7CisgICAgYyAmPSB+cGF0aF9mbGFnc19qcjsKKyAgICByZXR1cm4gKGMgJiBwYXRoX2ZsYWdzX2Nsb3NlKSAhPSAwOworfQoraW5saW5lIHVuc2lnbmVkIGdldF9jbG9zZV9mbGFnKHVuc2lnbmVkIGMpCit7CisgICAgYyAmPSB+cGF0aF9mbGFnc19qcjsKKyAgICByZXR1cm4gYyAmIHBhdGhfZmxhZ3NfY2xvc2U7Cit9CitpbmxpbmUgdW5zaWduZWQgY2xlYXJfb3JpZW50YXRpb24odW5zaWduZWQgYykKK3sKKyAgICBjICY9IH5wYXRoX2ZsYWdzX2pyOworICAgIHJldHVybiBjICYgfihwYXRoX2ZsYWdzX2N3IHwgcGF0aF9mbGFnc19jY3cpOworfQoraW5saW5lIHVuc2lnbmVkIGdldF9vcmllbnRhdGlvbih1bnNpZ25lZCBjKQoreworICAgIGMgJj0gfnBhdGhfZmxhZ3NfanI7CisgICAgcmV0dXJuIGMgJiAocGF0aF9mbGFnc19jdyB8IHBhdGhfZmxhZ3NfY2N3KTsKK30KK2lubGluZSB1bnNpZ25lZCBzZXRfb3JpZW50YXRpb24odW5zaWduZWQgYywgdW5zaWduZWQgbykKK3sKKyAgICBjICY9IH5wYXRoX2ZsYWdzX2pyOworICAgIHJldHVybiBjbGVhcl9vcmllbnRhdGlvbihjKSB8IG87Cit9CitzdHJ1Y3QgcG9pbnRfdHlwZSA6IHB1YmxpYyBDRlhfT2JqZWN0IHsKKyAgICBGWF9GTE9BVCB4LCB5OworICAgIHVuc2lnbmVkIGZsYWc7CisgICAgcG9pbnRfdHlwZSgpIHt9CisgICAgcG9pbnRfdHlwZShGWF9GTE9BVCB4XywgRlhfRkxPQVQgeV8sIHVuc2lnbmVkIGZsYWdfID0gMCkgOiB4KHhfKSwgeSh5XyksIGZsYWcoZmxhZ18pIHt9Cit9Oworc3RydWN0IHBvaW50X3R5cGVfZmxhZyA6IHB1YmxpYyBwb2ludF90eXBlIHsKKyAgICB1bnNpZ25lZCBmbGFnOworICAgIHBvaW50X3R5cGVfZmxhZygpCisgICAgeworICAgICAgICBmbGFnID0gMDsKKyAgICB9CisgICAgcG9pbnRfdHlwZV9mbGFnKEZYX0ZMT0FUIHhfLCBGWF9GTE9BVCB5XywgdW5zaWduZWQgZmxhZ18gPSAwKSA6IHBvaW50X3R5cGUoeF8sIHlfKSwgZmxhZyhmbGFnXykge30KK307CitzdHJ1Y3QgdmVydGV4X3R5cGUgOiBwdWJsaWMgQ0ZYX09iamVjdCB7CisgICAgRlhfRkxPQVQgICB4LCB5OworICAgIHVuc2lnbmVkIGNtZDsKKyAgICB2ZXJ0ZXhfdHlwZSgpIHt9CisgICAgdmVydGV4X3R5cGUoRlhfRkxPQVQgeF8sIEZYX0ZMT0FUIHlfLCB1bnNpZ25lZCBjbWRfKSA6CisgICAgICAgIHgoeF8pLCB5KHlfKSwgY21kKGNtZF8pIHt9Cit9OworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfY2xpcF9saWFuZ19iYXJza3kuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19jbGlwX2xpYW5nX2JhcnNreS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYzRjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfY2xpcF9saWFuZ19iYXJza3kuaApAQCAtMCwwICsxLDEyNSBAQAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFudGktR3JhaW4gR2VvbWV0cnkgLSBWZXJzaW9uIDIuMworLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUgTWF4aW0gU2hlbWFuYXJldiAoaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tKQorLy8KKy8vIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorLy8gaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgorLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisvLyB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIExpYW5nLUJhcnNreSBjbGlwcGluZworLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmbmRlZiBBR0dfQ0xJUF9MSUFOR19CQVJTS1lfSU5DTFVERUQKKyNkZWZpbmUgQUdHX0NMSVBfTElBTkdfQkFSU0tZX0lOQ0xVREVECisjaW5jbHVkZSAiYWdnX2Jhc2ljcy5oIgorbmFtZXNwYWNlIGFnZworewordGVtcGxhdGU8Y2xhc3MgVD4KK2lubGluZSB1bnNpZ25lZCBjbGlwcGluZ19mbGFncyhUIHgsIFQgeSwgY29uc3QgcmVjdF9iYXNlPFQ+JiBjbGlwX2JveCkKK3sKKyAgICByZXR1cm4gICh4ID4gY2xpcF9ib3gueDIpIHwKKyAgICAgICAgICAgICgoeSA+IGNsaXBfYm94LnkyKSA8PCAxKSB8CisgICAgICAgICAgICAoKHggPCBjbGlwX2JveC54MSkgPDwgMikgfAorICAgICAgICAgICAgKCh5IDwgY2xpcF9ib3gueTEpIDw8IDMpOworfQordGVtcGxhdGU8Y2xhc3MgVD4KK2lubGluZSB1bnNpZ25lZCBjbGlwX2xpYW5nX2JhcnNreShUIHgxLCBUIHkxLCBUIHgyLCBUIHkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY3RfYmFzZTxUPiYgY2xpcF9ib3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCogeCwgVCogeSkKK3sKKyAgICBjb25zdCBGWF9GTE9BVCBuZWFyemVybyA9IDFlLTMwZjsKKyAgICBGWF9GTE9BVCBkZWx0YXggPSAoRlhfRkxPQVQpKHgyIC0geDEpOworICAgIEZYX0ZMT0FUIGRlbHRheSA9IChGWF9GTE9BVCkoeTIgLSB5MSk7CisgICAgdW5zaWduZWQgbnAgPSAwOworICAgIGlmKGRlbHRheCA9PSAwKSB7CisgICAgICAgIGRlbHRheCA9ICh4MSA+IGNsaXBfYm94LngxKSA/IC1uZWFyemVybyA6IG5lYXJ6ZXJvOworICAgIH0KKyAgICBGWF9GTE9BVCB4aW4sIHhvdXQ7CisgICAgaWYoZGVsdGF4ID4gMCkgeworICAgICAgICB4aW4gID0gKEZYX0ZMT0FUKWNsaXBfYm94LngxOworICAgICAgICB4b3V0ID0gKEZYX0ZMT0FUKWNsaXBfYm94LngyOworICAgIH0gZWxzZSB7CisgICAgICAgIHhpbiAgPSAoRlhfRkxPQVQpY2xpcF9ib3gueDI7CisgICAgICAgIHhvdXQgPSAoRlhfRkxPQVQpY2xpcF9ib3gueDE7CisgICAgfQorICAgIEZYX0ZMT0FUIHRpbnggPSBGWFNZU19EaXYoeGluIC0geDEsIGRlbHRheCk7CisgICAgaWYoZGVsdGF5ID09IDApIHsKKyAgICAgICAgZGVsdGF5ID0gKHkxID4gY2xpcF9ib3gueTEpID8gLW5lYXJ6ZXJvIDogbmVhcnplcm87CisgICAgfQorICAgIEZYX0ZMT0FUIHlpbiwgeW91dDsKKyAgICBpZihkZWx0YXkgPiAwKSB7CisgICAgICAgIHlpbiAgPSAoRlhfRkxPQVQpY2xpcF9ib3gueTE7CisgICAgICAgIHlvdXQgPSAoRlhfRkxPQVQpY2xpcF9ib3gueTI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgeWluICA9IChGWF9GTE9BVCljbGlwX2JveC55MjsKKyAgICAgICAgeW91dCA9IChGWF9GTE9BVCljbGlwX2JveC55MTsKKyAgICB9CisgICAgRlhfRkxPQVQgdGlueSA9IEZYU1lTX0Rpdih5aW4gLSB5MSwgZGVsdGF5KTsKKyAgICBGWF9GTE9BVCB0aW4xLCB0aW4yOworICAgIGlmICh0aW54IDwgdGlueSkgeworICAgICAgICB0aW4xID0gdGlueDsKKyAgICAgICAgdGluMiA9IHRpbnk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGluMSA9IHRpbnk7CisgICAgICAgIHRpbjIgPSB0aW54OworICAgIH0KKyAgICBpZih0aW4xIDw9IDEuMGYpIHsKKyAgICAgICAgaWYoMCA8IHRpbjEpIHsKKyAgICAgICAgICAgICp4KysgPSAoVCl4aW47CisgICAgICAgICAgICAqeSsrID0gKFQpeWluOworICAgICAgICAgICAgKytucDsKKyAgICAgICAgfQorICAgICAgICBpZih0aW4yIDw9IDEuMGYpIHsKKyAgICAgICAgICAgIEZYX0ZMT0FUIHRvdXR4ID0gRlhTWVNfRGl2KHhvdXQgLSB4MSwgZGVsdGF4KTsKKyAgICAgICAgICAgIEZYX0ZMT0FUIHRvdXR5ID0gRlhTWVNfRGl2KHlvdXQgLSB5MSwgZGVsdGF5KTsKKyAgICAgICAgICAgIEZYX0ZMT0FUIHRvdXQxID0gKHRvdXR4IDwgdG91dHkpID8gdG91dHggOiB0b3V0eTsKKyAgICAgICAgICAgIGlmKHRpbjIgPiAwIHx8IHRvdXQxID4gMCkgeworICAgICAgICAgICAgICAgIGlmKHRpbjIgPD0gdG91dDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYodGluMiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRpbnggPiB0aW55KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKngrKyA9IChUKXhpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqeSsrID0gKFQpKHkxICsgRlhTWVNfTXVsKGRlbHRheSwgdGlueCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqeCsrID0gKFQpKHgxICsgRlhTWVNfTXVsKGRlbHRheCwgdGlueSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICp5KysgPSAoVCl5aW47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICArK25wOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmKHRvdXQxIDwgMS4wZikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYodG91dHggPCB0b3V0eSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICp4KysgPSAoVCl4b3V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICp5KysgPSAoVCkoeTEgKyBGWFNZU19NdWwoZGVsdGF5LCB0b3V0eCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqeCsrID0gKFQpKHgxICsgRlhTWVNfTXVsKGRlbHRheCwgdG91dHkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqeSsrID0gKFQpeW91dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICp4KysgPSB4MjsKKyAgICAgICAgICAgICAgICAgICAgICAgICp5KysgPSB5MjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK25wOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmKHRpbnggPiB0aW55KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqeCsrID0gKFQpeGluOworICAgICAgICAgICAgICAgICAgICAgICAgKnkrKyA9IChUKXlvdXQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqeCsrID0gKFQpeG91dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICp5KysgPSAoVCl5aW47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKytucDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG5wOworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfY29sb3JfZ3JheS5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2NvbG9yX2dyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGI3YmNhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2NvbG9yX2dyYXkuaApAQCAtMCwwICsxLDUwIEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29udGFjdDogbWNzZWVtQGFudGlncmFpbi5jb20KKy8vICAgICAgICAgIG1jc2VlbWFnZ0B5YWhvby5jb20KKy8vICAgICAgICAgIGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gQWRhcHRhdGlvbiBmb3IgaGlnaCBwcmVjaXNpb24gY29sb3JzIGhhcyBiZWVuIHNwb25zb3JlZCBieQorLy8gTGliZXJ0eSBUZWNobm9sb2d5IFN5c3RlbXMsIEluYy4sIHZpc2l0IGh0dHA6Ly9saWItc3lzLmNvbQorLy8KKy8vIExpYmVydHkgVGVjaG5vbG9neSBTeXN0ZW1zLCBJbmMuIGlzIHRoZSBwcm92aWRlciBvZgorLy8gUG9zdFNjcmlwdCBhbmQgUERGIHRlY2hub2xvZ3kgZm9yIHNvZnR3YXJlIGRldmVsb3BlcnMuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gY29sb3IgdHlwZXMgZ3JheTgsIGdyYXkxNgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmbmRlZiBBR0dfQ09MT1JfR1JBWV9JTkNMVURFRAorI2RlZmluZSBBR0dfQ09MT1JfR1JBWV9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19iYXNpY3MuaCIKK25hbWVzcGFjZSBhZ2cKK3sKK3N0cnVjdCBncmF5OCB7CisgICAgdHlwZWRlZiBpbnQ4dSAgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIGludDMydSBjYWxjX3R5cGU7CisgICAgdHlwZWRlZiBpbnQzMiAgbG9uZ190eXBlOworICAgIGVudW0gYmFzZV9zY2FsZV9lIHsKKyAgICAgICAgYmFzZV9zaGlmdCA9IDgsCisgICAgICAgIGJhc2Vfc2l6ZSAgPSAxIDw8IGJhc2Vfc2hpZnQsCisgICAgICAgIGJhc2VfbWFzayAgPSBiYXNlX3NpemUgLSAxCisgICAgfTsKKyAgICB0eXBlZGVmIGdyYXk4IHNlbGZfdHlwZTsKKyAgICB2YWx1ZV90eXBlIHY7CisgICAgdmFsdWVfdHlwZSBhOworICAgIGdyYXk4KCkge30KKyAgICBncmF5OCh1bnNpZ25lZCB2XywgdW5zaWduZWQgYV8gPSBiYXNlX21hc2spIDoKKyAgICAgICAgdihpbnQ4dSh2XykpLCBhKGludDh1KGFfKSkge30KK307Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19jb252X2FkYXB0b3JfdmNnZW4uaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19jb252X2FkYXB0b3JfdmNnZW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2Y4MTdhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2NvbnZfYWRhcHRvcl92Y2dlbi5oCkBAIC0wLDAgKzEsMTM4IEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29udGFjdDogbWNzZWVtQGFudGlncmFpbi5jb20KKy8vICAgICAgICAgIG1jc2VlbWFnZ0B5YWhvby5jb20KKy8vICAgICAgICAgIGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaWZuZGVmIEFHR19DT05WX0FEQVBUT1JfVkNHRU5fSU5DTFVERUQKKyNkZWZpbmUgQUdHX0NPTlZfQURBUFRPUl9WQ0dFTl9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19iYXNpY3MuaCIKK25hbWVzcGFjZSBhZ2cKK3sKK3N0cnVjdCBudWxsX21hcmtlcnMgOiBwdWJsaWMgQ0ZYX09iamVjdCB7CisgICAgdm9pZCByZW1vdmVfYWxsKCkge30KKyAgICB2b2lkIGFkZF92ZXJ0ZXgoRlhfRkxPQVQsIEZYX0ZMT0FULCB1bnNpZ25lZCkge30KKyAgICB2b2lkIHByZXBhcmVfc3JjKCkge30KKyAgICB2b2lkIHJld2luZCh1bnNpZ25lZCkge30KKyAgICB1bnNpZ25lZCB2ZXJ0ZXgoRlhfRkxPQVQqLCBGWF9GTE9BVCopCisgICAgeworICAgICAgICByZXR1cm4gcGF0aF9jbWRfc3RvcDsKKyAgICB9Cit9OwordGVtcGxhdGU8Y2xhc3MgVmVydGV4U291cmNlLAorICAgICAgICAgY2xhc3MgR2VuZXJhdG9yLAorICAgICAgICAgY2xhc3MgTWFya2VycyA9IG51bGxfbWFya2Vycz4gY2xhc3MgY29udl9hZGFwdG9yX3ZjZ2VuIDogcHVibGljIENGWF9PYmplY3QKK3sKKyAgICBlbnVtIHN0YXR1cyB7CisgICAgICAgIGluaXRpYWwsCisgICAgICAgIGFjY3VtdWxhdGUsCisgICAgICAgIGdlbmVyYXRlCisgICAgfTsKK3B1YmxpYzoKKyAgICBjb252X2FkYXB0b3JfdmNnZW4oVmVydGV4U291cmNlJiBzb3VyY2UpIDoKKyAgICAgICAgbV9zb3VyY2UoJnNvdXJjZSksCisgICAgICAgIG1fc3RhdHVzKGluaXRpYWwpCisgICAge30KKyAgICB2b2lkIHNldF9zb3VyY2UoVmVydGV4U291cmNlJiBzb3VyY2UpCisgICAgeworICAgICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CisgICAgfQorICAgIEdlbmVyYXRvciYgZ2VuZXJhdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dlbmVyYXRvcjsKKyAgICB9CisgICAgY29uc3QgR2VuZXJhdG9yJiBnZW5lcmF0b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdG9yOworICAgIH0KKyAgICBNYXJrZXJzJiBtYXJrZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hcmtlcnM7CisgICAgfQorICAgIGNvbnN0IE1hcmtlcnMmIG1hcmtlcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWFya2VyczsKKyAgICB9CisgICAgdm9pZCByZXdpbmQodW5zaWduZWQgcGF0aF9pZCkKKyAgICB7CisgICAgICAgIG1fc291cmNlLT5yZXdpbmQocGF0aF9pZCk7CisgICAgICAgIG1fc3RhdHVzID0gaW5pdGlhbDsKKyAgICB9CisgICAgdW5zaWduZWQgdmVydGV4KEZYX0ZMT0FUKiB4LCBGWF9GTE9BVCogeSk7Citwcml2YXRlOgorICAgIGNvbnZfYWRhcHRvcl92Y2dlbihjb25zdCBjb252X2FkYXB0b3JfdmNnZW48VmVydGV4U291cmNlLCBHZW5lcmF0b3IsIE1hcmtlcnM+Jik7CisgICAgY29uc3QgY29udl9hZGFwdG9yX3ZjZ2VuPFZlcnRleFNvdXJjZSwgR2VuZXJhdG9yLCBNYXJrZXJzPiYKKyAgICBvcGVyYXRvciA9IChjb25zdCBjb252X2FkYXB0b3JfdmNnZW48VmVydGV4U291cmNlLCBHZW5lcmF0b3IsIE1hcmtlcnM+Jik7CisgICAgVmVydGV4U291cmNlKiBtX3NvdXJjZTsKKyAgICBHZW5lcmF0b3IgICAgIG1fZ2VuZXJhdG9yOworICAgIE1hcmtlcnMgICAgICAgbV9tYXJrZXJzOworICAgIHN0YXR1cyAgICAgICAgbV9zdGF0dXM7CisgICAgdW5zaWduZWQgICAgICBtX2xhc3RfY21kOworICAgIEZYX0ZMT0FUICAgICAgICBtX3N0YXJ0X3g7CisgICAgRlhfRkxPQVQgICAgICAgIG1fc3RhcnRfeTsKK307Cit0ZW1wbGF0ZTxjbGFzcyBWZXJ0ZXhTb3VyY2UsIGNsYXNzIEdlbmVyYXRvciwgY2xhc3MgTWFya2Vycz4KK3Vuc2lnbmVkIGNvbnZfYWRhcHRvcl92Y2dlbjxWZXJ0ZXhTb3VyY2UsIEdlbmVyYXRvciwgTWFya2Vycz46OnZlcnRleChGWF9GTE9BVCogeCwgRlhfRkxPQVQqIHkpCit7CisgICAgdW5zaWduZWQgY21kID0gcGF0aF9jbWRfc3RvcDsKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICB3aGlsZSghZG9uZSkgeworICAgICAgICBzd2l0Y2gobV9zdGF0dXMpIHsKKyAgICAgICAgICAgIGNhc2UgaW5pdGlhbDoKKyAgICAgICAgICAgICAgICBtX21hcmtlcnMucmVtb3ZlX2FsbCgpOworICAgICAgICAgICAgICAgIG1fbGFzdF9jbWQgPSBtX3NvdXJjZS0+dmVydGV4KCZtX3N0YXJ0X3gsICZtX3N0YXJ0X3kpOworICAgICAgICAgICAgICAgIG1fc3RhdHVzID0gYWNjdW11bGF0ZTsKKyAgICAgICAgICAgIGNhc2UgYWNjdW11bGF0ZToKKyAgICAgICAgICAgICAgICBpZihpc19zdG9wKG1fbGFzdF9jbWQpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXRoX2NtZF9zdG9wOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX2dlbmVyYXRvci5yZW1vdmVfYWxsKCk7CisgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3IuYWRkX3ZlcnRleChtX3N0YXJ0X3gsIG1fc3RhcnRfeSwgcGF0aF9jbWRfbW92ZV90byk7CisgICAgICAgICAgICAgICAgbV9tYXJrZXJzLmFkZF92ZXJ0ZXgobV9zdGFydF94LCBtX3N0YXJ0X3ksIHBhdGhfY21kX21vdmVfdG8pOworICAgICAgICAgICAgICAgIGZvcig7OykgeworICAgICAgICAgICAgICAgICAgICBjbWQgPSBtX3NvdXJjZS0+dmVydGV4KHgsIHkpOworICAgICAgICAgICAgICAgICAgICBpZihpc192ZXJ0ZXgoY21kKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0X2NtZCA9IGNtZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzX21vdmVfdG8oY21kKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhcnRfeCA9ICp4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhcnRfeSA9ICp5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3IuYWRkX3ZlcnRleCgqeCwgKnksIGNtZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX21hcmtlcnMuYWRkX3ZlcnRleCgqeCwgKnksIHBhdGhfY21kX2xpbmVfdG8pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfc3RvcChjbWQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0X2NtZCA9IHBhdGhfY21kX3N0b3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZihpc19lbmRfcG9seShjbWQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3IuYWRkX3ZlcnRleCgqeCwgKnksIGNtZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3IucmV3aW5kKDApOworICAgICAgICAgICAgICAgIG1fc3RhdHVzID0gZ2VuZXJhdGU7CisgICAgICAgICAgICBjYXNlIGdlbmVyYXRlOgorICAgICAgICAgICAgICAgIGNtZCA9IG1fZ2VuZXJhdG9yLnZlcnRleCh4LCB5KTsKKyAgICAgICAgICAgICAgICBpZihpc19zdG9wKGNtZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBhY2N1bXVsYXRlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNtZDsKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2NvbnZfZGFzaC5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2NvbnZfZGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYjIwMTkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfY29udl9kYXNoLmgKQEAgLTAsMCArMSw2MSBAQAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFudGktR3JhaW4gR2VvbWV0cnkgLSBWZXJzaW9uIDIuMworLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUgTWF4aW0gU2hlbWFuYXJldiAoaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tKQorLy8KKy8vIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorLy8gaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgorLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisvLyB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIGNvbnZfZGFzaAorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmbmRlZiBBR0dfQ09OVl9EQVNIX0lOQ0xVREVECisjZGVmaW5lIEFHR19DT05WX0RBU0hfSU5DTFVERUQKKyNpbmNsdWRlICJhZ2dfYmFzaWNzLmgiCisjaW5jbHVkZSAiYWdnX3ZjZ2VuX2Rhc2guaCIKKyNpbmNsdWRlICJhZ2dfY29udl9hZGFwdG9yX3ZjZ2VuLmgiCituYW1lc3BhY2UgYWdnCit7Cit0ZW1wbGF0ZTxjbGFzcyBWZXJ0ZXhTb3VyY2UsIGNsYXNzIE1hcmtlcnMgPSBudWxsX21hcmtlcnM+CitzdHJ1Y3QgY29udl9kYXNoIDogcHVibGljIGNvbnZfYWRhcHRvcl92Y2dlbjxWZXJ0ZXhTb3VyY2UsIHZjZ2VuX2Rhc2gsIE1hcmtlcnM+IHsKKyAgICB0eXBlZGVmIE1hcmtlcnMgbWFya2VyX3R5cGU7CisgICAgdHlwZWRlZiBjb252X2FkYXB0b3JfdmNnZW48VmVydGV4U291cmNlLCB2Y2dlbl9kYXNoLCBNYXJrZXJzPiBiYXNlX3R5cGU7CisgICAgY29udl9kYXNoKFZlcnRleFNvdXJjZSYgdnMpIDoKKyAgICAgICAgY29udl9hZGFwdG9yX3ZjZ2VuPFZlcnRleFNvdXJjZSwgdmNnZW5fZGFzaCwgTWFya2Vycz4odnMpCisgICAgeworICAgIH0KKyAgICB2b2lkIHJlbW92ZV9hbGxfZGFzaGVzKCkKKyAgICB7CisgICAgICAgIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkucmVtb3ZlX2FsbF9kYXNoZXMoKTsKKyAgICB9CisgICAgdm9pZCBhZGRfZGFzaChGWF9GTE9BVCBkYXNoX2xlbiwgRlhfRkxPQVQgZ2FwX2xlbikKKyAgICB7CisgICAgICAgIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkuYWRkX2Rhc2goZGFzaF9sZW4sIGdhcF9sZW4pOworICAgIH0KKyAgICB2b2lkIGRhc2hfc3RhcnQoRlhfRkxPQVQgZHMpCisgICAgeworICAgICAgICBiYXNlX3R5cGU6OmdlbmVyYXRvcigpLmRhc2hfc3RhcnQoZHMpOworICAgIH0KKyAgICB2b2lkIHNob3J0ZW4oRlhfRkxPQVQgcykKKyAgICB7CisgICAgICAgIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkuc2hvcnRlbihzKTsKKyAgICB9CisgICAgZG91YmxlIHNob3J0ZW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkuc2hvcnRlbigpOworICAgIH0KK3ByaXZhdGU6CisgICAgY29udl9kYXNoKGNvbnN0IGNvbnZfZGFzaDxWZXJ0ZXhTb3VyY2UsIE1hcmtlcnM+Jik7CisgICAgY29uc3QgY29udl9kYXNoPFZlcnRleFNvdXJjZSwgTWFya2Vycz4mCisgICAgb3BlcmF0b3IgPSAoY29uc3QgY29udl9kYXNoPFZlcnRleFNvdXJjZSwgTWFya2Vycz4mKTsKK307Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19jb252X3N0cm9rZS5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2NvbnZfc3Ryb2tlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEzNmJkNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19jb252X3N0cm9rZS5oCkBAIC0wLDAgKzEsMTEwIEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29udGFjdDogbWNzZWVtQGFudGlncmFpbi5jb20KKy8vICAgICAgICAgIG1jc2VlbWFnZ0B5YWhvby5jb20KKy8vICAgICAgICAgIGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gY29udl9zdHJva2UKKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNpZm5kZWYgQUdHX0NPTlZfU1RST0tFX0lOQ0xVREVECisjZGVmaW5lIEFHR19DT05WX1NUUk9LRV9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19iYXNpY3MuaCIKKyNpbmNsdWRlICJhZ2dfdmNnZW5fc3Ryb2tlLmgiCisjaW5jbHVkZSAiYWdnX2NvbnZfYWRhcHRvcl92Y2dlbi5oIgorbmFtZXNwYWNlIGFnZworewordGVtcGxhdGU8Y2xhc3MgVmVydGV4U291cmNlLCBjbGFzcyBNYXJrZXJzID0gbnVsbF9tYXJrZXJzPgorc3RydWN0IGNvbnZfc3Ryb2tlIDoKKyAgICAgICAgcHVibGljIGNvbnZfYWRhcHRvcl92Y2dlbjxWZXJ0ZXhTb3VyY2UsIHZjZ2VuX3N0cm9rZSwgTWFya2Vycz4geworICAgIHR5cGVkZWYgTWFya2VycyBtYXJrZXJfdHlwZTsKKyAgICB0eXBlZGVmIGNvbnZfYWRhcHRvcl92Y2dlbjxWZXJ0ZXhTb3VyY2UsIHZjZ2VuX3N0cm9rZSwgTWFya2Vycz4gYmFzZV90eXBlOworICAgIGNvbnZfc3Ryb2tlKFZlcnRleFNvdXJjZSYgdnMpIDoKKyAgICAgICAgY29udl9hZGFwdG9yX3ZjZ2VuPFZlcnRleFNvdXJjZSwgdmNnZW5fc3Ryb2tlLCBNYXJrZXJzPih2cykKKyAgICB7CisgICAgfQorICAgIHZvaWQgbGluZV9jYXAobGluZV9jYXBfZSBsYykKKyAgICB7CisgICAgICAgIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkubGluZV9jYXAobGMpOworICAgIH0KKyAgICB2b2lkIGxpbmVfam9pbihsaW5lX2pvaW5fZSBsaikKKyAgICB7CisgICAgICAgIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkubGluZV9qb2luKGxqKTsKKyAgICB9CisgICAgdm9pZCBpbm5lcl9qb2luKGlubmVyX2pvaW5fZSBpaikKKyAgICB7CisgICAgICAgIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkuaW5uZXJfam9pbihpaik7CisgICAgfQorICAgIGxpbmVfY2FwX2UgICBsaW5lX2NhcCgpICAgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiYXNlX3R5cGU6OmdlbmVyYXRvcigpLmxpbmVfY2FwKCk7CisgICAgfQorICAgIGxpbmVfam9pbl9lICBsaW5lX2pvaW4oKSAgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiYXNlX3R5cGU6OmdlbmVyYXRvcigpLmxpbmVfam9pbigpOworICAgIH0KKyAgICBpbm5lcl9qb2luX2UgaW5uZXJfam9pbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYmFzZV90eXBlOjpnZW5lcmF0b3IoKS5pbm5lcl9qb2luKCk7CisgICAgfQorICAgIHZvaWQgd2lkdGgoRlhfRkxPQVQgdykKKyAgICB7CisgICAgICAgIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkud2lkdGgodyk7CisgICAgfQorICAgIHZvaWQgbWl0ZXJfbGltaXQoRlhfRkxPQVQgbWwpCisgICAgeworICAgICAgICBiYXNlX3R5cGU6OmdlbmVyYXRvcigpLm1pdGVyX2xpbWl0KG1sKTsKKyAgICB9CisgICAgdm9pZCBtaXRlcl9saW1pdF90aGV0YShGWF9GTE9BVCB0KQorICAgIHsKKyAgICAgICAgYmFzZV90eXBlOjpnZW5lcmF0b3IoKS5taXRlcl9saW1pdF90aGV0YSh0KTsKKyAgICB9CisgICAgdm9pZCBpbm5lcl9taXRlcl9saW1pdChGWF9GTE9BVCBtbCkKKyAgICB7CisgICAgICAgIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkuaW5uZXJfbWl0ZXJfbGltaXQobWwpOworICAgIH0KKyAgICB2b2lkIGFwcHJveGltYXRpb25fc2NhbGUoRlhfRkxPQVQgYXMpCisgICAgeworICAgICAgICBiYXNlX3R5cGU6OmdlbmVyYXRvcigpLmFwcHJveGltYXRpb25fc2NhbGUoYXMpOworICAgIH0KKyAgICBGWF9GTE9BVCB3aWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYmFzZV90eXBlOjpnZW5lcmF0b3IoKS53aWR0aCgpOworICAgIH0KKyAgICBGWF9GTE9BVCBtaXRlcl9saW1pdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYmFzZV90eXBlOjpnZW5lcmF0b3IoKS5taXRlcl9saW1pdCgpOworICAgIH0KKyAgICBGWF9GTE9BVCBpbm5lcl9taXRlcl9saW1pdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYmFzZV90eXBlOjpnZW5lcmF0b3IoKS5pbm5lcl9taXRlcl9saW1pdCgpOworICAgIH0KKyAgICBGWF9GTE9BVCBhcHByb3hpbWF0aW9uX3NjYWxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiYXNlX3R5cGU6OmdlbmVyYXRvcigpLmFwcHJveGltYXRpb25fc2NhbGUoKTsKKyAgICB9CisgICAgdm9pZCBzaG9ydGVuKEZYX0ZMT0FUIHMpCisgICAgeworICAgICAgICBiYXNlX3R5cGU6OmdlbmVyYXRvcigpLnNob3J0ZW4ocyk7CisgICAgfQorICAgIEZYX0ZMT0FUIHNob3J0ZW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJhc2VfdHlwZTo6Z2VuZXJhdG9yKCkuc2hvcnRlbigpOworICAgIH0KK3ByaXZhdGU6CisgICAgY29udl9zdHJva2UoY29uc3QgY29udl9zdHJva2U8VmVydGV4U291cmNlLCBNYXJrZXJzPiYpOworICAgIGNvbnN0IGNvbnZfc3Ryb2tlPFZlcnRleFNvdXJjZSwgTWFya2Vycz4mCisgICAgb3BlcmF0b3IgPSAoY29uc3QgY29udl9zdHJva2U8VmVydGV4U291cmNlLCBNYXJrZXJzPiYpOworfTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2N1cnZlcy5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX2N1cnZlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MTljYmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfY3VydmVzLmgKQEAgLTAsMCArMSwxOTEgQEAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBbnRpLUdyYWluIEdlb21ldHJ5IC0gVmVyc2lvbiAyLjMKKy8vIENvcHlyaWdodCAoQykgMjAwMi0yMDA1IE1heGltIFNoZW1hbmFyZXYgKGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbSkKKy8vIENvcHlyaWdodCAoQykgMjAwNSBUb255IEp1cmljaWMgKHRvbnlnZWVrQHlhaG9vLmNvbSkKKy8vCisvLyBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKKy8vIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KKy8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorLy8gd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb250YWN0OiBtY3NlZW1AYW50aWdyYWluLmNvbQorLy8gICAgICAgICAgbWNzZWVtYWdnQHlhaG9vLmNvbQorLy8gICAgICAgICAgaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNpZm5kZWYgQUdHX0NVUlZFU19JTkNMVURFRAorI2RlZmluZSBBR0dfQ1VSVkVTX0lOQ0xVREVECisjaW5jbHVkZSAiYWdnX2FycmF5LmgiCituYW1lc3BhY2UgYWdnCit7CitzdHJ1Y3QgY3VydmU0X3BvaW50cyA6IHB1YmxpYyBDRlhfT2JqZWN0IHsKKyAgICBGWF9GTE9BVCBjcFs4XTsKKyAgICBjdXJ2ZTRfcG9pbnRzKCkge30KKyAgICBjdXJ2ZTRfcG9pbnRzKEZYX0ZMT0FUIHgxLCBGWF9GTE9BVCB5MSwKKyAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwKKyAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgzLCBGWF9GTE9BVCB5MywKKyAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHg0LCBGWF9GTE9BVCB5NCkKKyAgICB7CisgICAgICAgIGNwWzBdID0geDE7CisgICAgICAgIGNwWzFdID0geTE7CisgICAgICAgIGNwWzJdID0geDI7CisgICAgICAgIGNwWzNdID0geTI7CisgICAgICAgIGNwWzRdID0geDM7CisgICAgICAgIGNwWzVdID0geTM7CisgICAgICAgIGNwWzZdID0geDQ7CisgICAgICAgIGNwWzddID0geTQ7CisgICAgfQorICAgIHZvaWQgaW5pdChGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsCisgICAgICAgICAgICAgIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwKKyAgICAgICAgICAgICAgRlhfRkxPQVQgeDMsIEZYX0ZMT0FUIHkzLAorICAgICAgICAgICAgICBGWF9GTE9BVCB4NCwgRlhfRkxPQVQgeTQpCisgICAgeworICAgICAgICBjcFswXSA9IHgxOworICAgICAgICBjcFsxXSA9IHkxOworICAgICAgICBjcFsyXSA9IHgyOworICAgICAgICBjcFszXSA9IHkyOworICAgICAgICBjcFs0XSA9IHgzOworICAgICAgICBjcFs1XSA9IHkzOworICAgICAgICBjcFs2XSA9IHg0OworICAgICAgICBjcFs3XSA9IHk0OworICAgIH0KKyAgICBGWF9GTE9BVCAgb3BlcmF0b3IgW10gKHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY3BbaV07CisgICAgfQorICAgIEZYX0ZMT0FUJiBvcGVyYXRvciBbXSAodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcFtpXTsKKyAgICB9Cit9OworY2xhc3MgY3VydmU0X2RpdiA6IHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgY3VydmU0X2RpdigpIDoKKyAgICAgICAgbV9jdXNwX2xpbWl0KDApLAorICAgICAgICBtX2NvdW50KDApCisgICAge30KKyAgICBjdXJ2ZTRfZGl2KEZYX0ZMT0FUIHgxLCBGWF9GTE9BVCB5MSwKKyAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwKKyAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgzLCBGWF9GTE9BVCB5MywKKyAgICAgICAgICAgICAgIEZYX0ZMT0FUIHg0LCBGWF9GTE9BVCB5NCkgOgorICAgICAgICBtX2N1c3BfbGltaXQoMCksCisgICAgICAgIG1fY291bnQoMCkKKyAgICB7CisgICAgICAgIGluaXQoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0KTsKKyAgICB9CisgICAgY3VydmU0X2Rpdihjb25zdCBjdXJ2ZTRfcG9pbnRzJiBjcCkgOgorICAgICAgICBtX2NvdW50KDApCisgICAgeworICAgICAgICBpbml0KGNwWzBdLCBjcFsxXSwgY3BbMl0sIGNwWzNdLCBjcFs0XSwgY3BbNV0sIGNwWzZdLCBjcFs3XSk7CisgICAgfQorICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgbV9wb2ludHMucmVtb3ZlX2FsbCgpOworICAgICAgICBtX2NvdW50ID0gMDsKKyAgICB9CisgICAgdm9pZCBpbml0KEZYX0ZMT0FUIHgxLCBGWF9GTE9BVCB5MSwKKyAgICAgICAgICAgICAgRlhfRkxPQVQgeDIsIEZYX0ZMT0FUIHkyLAorICAgICAgICAgICAgICBGWF9GTE9BVCB4MywgRlhfRkxPQVQgeTMsCisgICAgICAgICAgICAgIEZYX0ZMT0FUIHg0LCBGWF9GTE9BVCB5NCk7CisgICAgdm9pZCBpbml0KGNvbnN0IGN1cnZlNF9wb2ludHMmIGNwKQorICAgIHsKKyAgICAgICAgaW5pdChjcFswXSwgY3BbMV0sIGNwWzJdLCBjcFszXSwgY3BbNF0sIGNwWzVdLCBjcFs2XSwgY3BbN10pOworICAgIH0KKyAgICB2b2lkIHJld2luZCh1bnNpZ25lZCkKKyAgICB7CisgICAgICAgIG1fY291bnQgPSAwOworICAgIH0KKyAgICB1bnNpZ25lZCB2ZXJ0ZXgoRlhfRkxPQVQqIHgsIEZYX0ZMT0FUKiB5KQorICAgIHsKKyAgICAgICAgaWYobV9jb3VudCA+PSBtX3BvaW50cy5zaXplKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBwYXRoX2NtZF9zdG9wOworICAgICAgICB9CisgICAgICAgIGNvbnN0IHBvaW50X3R5cGUmIHAgPSBtX3BvaW50c1ttX2NvdW50KytdOworICAgICAgICAqeCA9IHAueDsKKyAgICAgICAgKnkgPSBwLnk7CisgICAgICAgIHJldHVybiAobV9jb3VudCA9PSAxKSA/IHBhdGhfY21kX21vdmVfdG8gOiBwYXRoX2NtZF9saW5lX3RvOworICAgIH0KKyAgICB1bnNpZ25lZCB2ZXJ0ZXhfZmxhZyhGWF9GTE9BVCogeCwgRlhfRkxPQVQqIHksIGludCYgZmxhZykKKyAgICB7CisgICAgICAgIGlmKG1fY291bnQgPj0gbV9wb2ludHMuc2l6ZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gcGF0aF9jbWRfc3RvcDsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBwb2ludF90eXBlJiBwID0gbV9wb2ludHNbbV9jb3VudCsrXTsKKyAgICAgICAgKnggPSBwLng7CisgICAgICAgICp5ID0gcC55OworICAgICAgICBmbGFnID0gcC5mbGFnOworICAgICAgICByZXR1cm4gKG1fY291bnQgPT0gMSkgPyBwYXRoX2NtZF9tb3ZlX3RvIDogcGF0aF9jbWRfbGluZV90bzsKKyAgICB9CisgICAgaW50IGNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BvaW50cy5zaXplKCk7CisgICAgfQorcHJpdmF0ZToKKyAgICB2b2lkIGJlemllcihGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgeDIsIEZYX0ZMT0FUIHkyLAorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgzLCBGWF9GTE9BVCB5MywKKyAgICAgICAgICAgICAgICBGWF9GTE9BVCB4NCwgRlhfRkxPQVQgeTQpOworICAgIHZvaWQgcmVjdXJzaXZlX2JlemllcihGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgeDMsIEZYX0ZMT0FUIHkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCB4NCwgRlhfRkxPQVQgeTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxldmVsKTsKKyAgICBGWF9GTE9BVCAgICBtX2Rpc3RhbmNlX3RvbGVyYW5jZV9zcXVhcmU7CisgICAgRlhfRkxPQVQgICAgbV9kaXN0YW5jZV90b2xlcmFuY2VfbWFuaGF0dGFuOworICAgIEZYX0ZMT0FUICAgIG1fY3VzcF9saW1pdDsKKyAgICB1bnNpZ25lZCAgICAgICAgICAgICAgbV9jb3VudDsKKyAgICBwb2RfZGVxdWU8cG9pbnRfdHlwZT4gbV9wb2ludHM7Cit9OworY2xhc3MgY3VydmU0IDogcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICBjdXJ2ZTQoKSB7fQorICAgIGN1cnZlNChGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsCisgICAgICAgICAgIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwKKyAgICAgICAgICAgRlhfRkxPQVQgeDMsIEZYX0ZMT0FUIHkzLAorICAgICAgICAgICBGWF9GTE9BVCB4NCwgRlhfRkxPQVQgeTQpCisgICAgeworICAgICAgICBpbml0KHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCk7CisgICAgfQorICAgIGN1cnZlNChjb25zdCBjdXJ2ZTRfcG9pbnRzJiBjcCkKKyAgICB7CisgICAgICAgIGluaXQoY3BbMF0sIGNwWzFdLCBjcFsyXSwgY3BbM10sIGNwWzRdLCBjcFs1XSwgY3BbNl0sIGNwWzddKTsKKyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBtX2N1cnZlX2Rpdi5yZXNldCgpOworICAgIH0KKyAgICB2b2lkIGluaXQoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLAorICAgICAgICAgICAgICBGWF9GTE9BVCB4MiwgRlhfRkxPQVQgeTIsCisgICAgICAgICAgICAgIEZYX0ZMT0FUIHgzLCBGWF9GTE9BVCB5MywKKyAgICAgICAgICAgICAgRlhfRkxPQVQgeDQsIEZYX0ZMT0FUIHk0KQorICAgIHsKKyAgICAgICAgbV9jdXJ2ZV9kaXYuaW5pdCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQpOworICAgIH0KKyAgICB2b2lkIGluaXQoY29uc3QgY3VydmU0X3BvaW50cyYgY3ApCisgICAgeworICAgICAgICBpbml0KGNwWzBdLCBjcFsxXSwgY3BbMl0sIGNwWzNdLCBjcFs0XSwgY3BbNV0sIGNwWzZdLCBjcFs3XSk7CisgICAgfQorICAgIHZvaWQgcmV3aW5kKHVuc2lnbmVkIHBhdGhfaWQpCisgICAgeworICAgICAgICBtX2N1cnZlX2Rpdi5yZXdpbmQocGF0aF9pZCk7CisgICAgfQorICAgIHVuc2lnbmVkIHZlcnRleChGWF9GTE9BVCogeCwgRlhfRkxPQVQqIHkpCisgICAgeworICAgICAgICByZXR1cm4gbV9jdXJ2ZV9kaXYudmVydGV4KHgsIHkpOworICAgIH0KKyAgICB1bnNpZ25lZCB2ZXJ0ZXhfY3VydmVfZmxhZyhGWF9GTE9BVCogeCwgRlhfRkxPQVQqIHksIGludCYgZmxhZykKKyAgICB7CisgICAgICAgIHJldHVybiBtX2N1cnZlX2Rpdi52ZXJ0ZXhfZmxhZyh4LCB5LCBmbGFnKTsKKyAgICB9CisgICAgaW50IGNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2N1cnZlX2Rpdi5jb3VudCgpOworICAgIH0KK3ByaXZhdGU6CisgICAgY3VydmU0X2RpdiBtX2N1cnZlX2RpdjsKK307Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19tYXRoLmggYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfbWF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZTBkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfbWF0aC5oCkBAIC0wLDAgKzEsNjMgQEAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBbnRpLUdyYWluIEdlb21ldHJ5IC0gVmVyc2lvbiAyLjMKKy8vIENvcHlyaWdodCAoQykgMjAwMi0yMDA1IE1heGltIFNoZW1hbmFyZXYgKGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbSkKKy8vCisvLyBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKKy8vIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KKy8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorLy8gd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb250YWN0OiBtY3NlZW1AYW50aWdyYWluLmNvbQorLy8gICAgICAgICAgbWNzZWVtYWdnQHlhaG9vLmNvbQorLy8gICAgICAgICAgaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEJlc3NlbCBmdW5jdGlvbiAoYmVzaikgd2FzIGFkYXB0ZWQgZm9yIHVzZSBpbiBBR0cgbGlicmFyeSBieSBBbmR5IFdpbGsKKy8vIENvbnRhY3Q6IGNhc3Rvci52dWxnYXJpc0BnbWFpbC5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmbmRlZiBBR0dfTUFUSF9JTkNMVURFRAorI2RlZmluZSBBR0dfTUFUSF9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19iYXNpY3MuaCIKK25hbWVzcGFjZSBhZ2cKK3sKK2NvbnN0IEZYX0ZMT0FUIGludGVyc2VjdGlvbl9lcHNpbG9uID0gMS4wZS0zMGY7CitBR0dfSU5MSU5FIEZYX0ZMT0FUIGNhbGNfcG9pbnRfbG9jYXRpb24oRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCB4LCAgRlhfRkxPQVQgeSkKK3sKKyAgICByZXR1cm4gRlhTWVNfTXVsKHggLSB4MiwgeTIgLSB5MSkgLSBGWFNZU19NdWwoeSAtIHkyLCB4MiAtIHgxKTsKK30KK0FHR19JTkxJTkUgRlhfRkxPQVQgY2FsY19kaXN0YW5jZShGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MikKK3sKKyAgICBGWF9GTE9BVCBkeCA9IHgyIC0geDE7CisgICAgRlhfRkxPQVQgZHkgPSB5MiAtIHkxOworICAgIHJldHVybiBGWFNZU19zcXJ0MihkeCwgZHkpOworfQorQUdHX0lOTElORSBGWF9GTE9BVCBjYWxjX2xpbmVfcG9pbnRfZGlzdGFuY2UoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLAorICAgICAgICBGWF9GTE9BVCB4MiwgRlhfRkxPQVQgeTIsCisgICAgICAgIEZYX0ZMT0FUIHgsICBGWF9GTE9BVCB5KQoreworICAgIEZYX0ZMT0FUIGR4ID0geDIgLSB4MTsKKyAgICBGWF9GTE9BVCBkeSA9IHkyIC0geTE7CisgICAgRlhfRkxPQVQgZCA9IEZYU1lTX3NxcnQyKGR4LCBkeSk7CisgICAgaWYoZCA8IGludGVyc2VjdGlvbl9lcHNpbG9uKSB7CisgICAgICAgIHJldHVybiBjYWxjX2Rpc3RhbmNlKHgxLCB5MSwgeCwgeSk7CisgICAgfQorICAgIHJldHVybiBGWFNZU19NdWxEaXYoeCAtIHgyLCBkeSwgZCkgLSBGWFNZU19NdWxEaXYoeSAtIHkyLCBkeCwgZCk7Cit9CitBR0dfSU5MSU5FIGJvb2wgY2FsY19pbnRlcnNlY3Rpb24oRlhfRkxPQVQgYXgsIEZYX0ZMT0FUIGF5LCBGWF9GTE9BVCBieCwgRlhfRkxPQVQgYnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgY3gsIEZYX0ZMT0FUIGN5LCBGWF9GTE9BVCBkeCwgRlhfRkxPQVQgZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQqIHgsIEZYX0ZMT0FUKiB5KQoreworICAgIEZYX0ZMT0FUIG51bSA9IEZYU1lTX011bChheSAtIGN5LCBkeCAtIGN4KSAtIEZYU1lTX011bChheCAtIGN4LCBkeSAtIGN5KTsKKyAgICBGWF9GTE9BVCBkZW4gPSBGWFNZU19NdWwoYnggLSBheCwgZHkgLSBjeSkgLSBGWFNZU19NdWwoYnkgLSBheSwgZHggLSBjeCk7CisgICAgaWYgKEZYU1lTX2ZhYnMoZGVuKSA8IGludGVyc2VjdGlvbl9lcHNpbG9uKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgKnggPSBheCArIEZYU1lTX011bERpdihieCAtIGF4LCBudW0sIGRlbik7CisgICAgKnkgPSBheSArIEZYU1lTX011bERpdihieSAtIGF5LCBudW0sIGRlbik7CisgICAgcmV0dXJuIHRydWU7Cit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19tYXRoX3N0cm9rZS5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX21hdGhfc3Ryb2tlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIwZDY3NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19tYXRoX3N0cm9rZS5oCkBAIC0wLDAgKzEsMjcyIEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29udGFjdDogbWNzZWVtQGFudGlncmFpbi5jb20KKy8vICAgICAgICAgIG1jc2VlbWFnZ0B5YWhvby5jb20KKy8vICAgICAgICAgIGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gU3Ryb2tlIG1hdGgKKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNpZm5kZWYgQUdHX1NUUk9LRV9NQVRIX0lOQ0xVREVECisjZGVmaW5lIEFHR19TVFJPS0VfTUFUSF9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19tYXRoLmgiCisjaW5jbHVkZSAiYWdnX3ZlcnRleF9zZXF1ZW5jZS5oIgorbmFtZXNwYWNlIGFnZworeworZW51bSBsaW5lX2NhcF9lIHsKKyAgICBidXR0X2NhcCwKKyAgICBzcXVhcmVfY2FwLAorICAgIHJvdW5kX2NhcAorfTsKK2VudW0gbGluZV9qb2luX2UgeworICAgIG1pdGVyX2pvaW4gICAgICAgICA9IDAsCisgICAgbWl0ZXJfam9pbl9yZXZlcnQgID0gMSwKKyAgICBtaXRlcl9qb2luX3JvdW5kICAgPSA0LAorICAgIHJvdW5kX2pvaW4gICAgICAgICA9IDIsCisgICAgYmV2ZWxfam9pbiAgICAgICAgID0gMworfTsKK2VudW0gaW5uZXJfam9pbl9lIHsKKyAgICBpbm5lcl9iZXZlbCwKKyAgICBpbm5lcl9taXRlciwKKyAgICBpbm5lcl9qYWcsCisgICAgaW5uZXJfcm91bmQKK307Citjb25zdCBGWF9GTE9BVCBzdHJva2VfdGhldGEgPSAxLjBmIC8gMTAwMC4wZjsKK3RlbXBsYXRlPGNsYXNzIFZlcnRleENvbnN1bWVyPgordm9pZCBzdHJva2VfY2FsY19hcmMoVmVydGV4Q29uc3VtZXImIG91dF92ZXJ0aWNlcywKKyAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgsICAgRlhfRkxPQVQgeSwKKyAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGR4MSwgRlhfRkxPQVQgZHkxLAorICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgZHgyLCBGWF9GTE9BVCBkeTIsCisgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGFwcHJveGltYXRpb25fc2NhbGUpCit7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBWZXJ0ZXhDb25zdW1lcjo6dmFsdWVfdHlwZSBjb29yZF90eXBlOworICAgIEZYX0ZMT0FUIGExID0gRlhTWVNfYXRhbjIoZHkxLCBkeDEpOworICAgIEZYX0ZMT0FUIGEyID0gRlhTWVNfYXRhbjIoZHkyLCBkeDIpOworICAgIEZYX0ZMT0FUIGRhID0gYTEgLSBhMjsKKyAgICBib29sIGNjdyA9IGRhID4gMCAmJiBkYSA8IEZYX1BJOworICAgIGlmKHdpZHRoIDwgMCkgeworICAgICAgICB3aWR0aCA9IC13aWR0aDsKKyAgICB9CisgICAgZGEgPSBGWFNZU19hY29zKEZYU1lTX0Rpdih3aWR0aCwgd2lkdGggKyBGWFNZU19EaXYoMS4wZiAvIDgsIGFwcHJveGltYXRpb25fc2NhbGUpKSkgKiAyOworICAgIG91dF92ZXJ0aWNlcy5hZGQoY29vcmRfdHlwZSh4ICsgZHgxLCB5ICsgZHkxKSk7CisgICAgaWYoIWNjdykgeworICAgICAgICBpZihhMSA+IGEyKSB7CisgICAgICAgICAgICBhMiArPSAyICogRlhfUEk7CisgICAgICAgIH0KKyAgICAgICAgYTIgLT0gZGEgLyA0OworICAgICAgICBhMSArPSBkYTsKKyAgICAgICAgd2hpbGUoYTEgPCBhMikgeworICAgICAgICAgICAgb3V0X3ZlcnRpY2VzLmFkZChjb29yZF90eXBlKHggKyBGWFNZU19NdWwod2lkdGgsIEZYU1lTX2NvcyhhMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgKyBGWFNZU19NdWwod2lkdGgsIEZYU1lTX3NpbihhMSkpKSk7CisgICAgICAgICAgICBhMSArPSBkYTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmKGExIDwgYTIpIHsKKyAgICAgICAgICAgIGEyIC09IDIgKiBGWF9QSTsKKyAgICAgICAgfQorICAgICAgICBhMiArPSBkYSAvIDQ7CisgICAgICAgIGExIC09IGRhOworICAgICAgICB3aGlsZShhMSA+IGEyKSB7CisgICAgICAgICAgICBvdXRfdmVydGljZXMuYWRkKGNvb3JkX3R5cGUoeCArIEZYU1lTX011bCh3aWR0aCwgRlhTWVNfY29zKGExKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSArIEZYU1lTX011bCh3aWR0aCwgRlhTWVNfc2luKGExKSkpKTsKKyAgICAgICAgICAgIGExIC09IGRhOworICAgICAgICB9CisgICAgfQorICAgIG91dF92ZXJ0aWNlcy5hZGQoY29vcmRfdHlwZSh4ICsgZHgyLCB5ICsgZHkyKSk7Cit9Cit0ZW1wbGF0ZTxjbGFzcyBWZXJ0ZXhDb25zdW1lcj4KK3ZvaWQgc3Ryb2tlX2NhbGNfbWl0ZXIoVmVydGV4Q29uc3VtZXImIG91dF92ZXJ0aWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVydGV4X2Rpc3QmIHYwLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJ0ZXhfZGlzdCYgdjEsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnRleF9kaXN0JiB2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgZHgxLCBGWF9GTE9BVCBkeTEsCisgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGR4MiwgRlhfRkxPQVQgZHkyLAorICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgbGluZV9qb2luX2UgbGluZV9qb2luLAorICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBtaXRlcl9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgYXBwcm94aW1hdGlvbl9zY2FsZSkKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFZlcnRleENvbnN1bWVyOjp2YWx1ZV90eXBlIGNvb3JkX3R5cGU7CisgICAgRlhfRkxPQVQgeGkgPSB2MS54OworICAgIEZYX0ZMT0FUIHlpID0gdjEueTsKKyAgICBib29sIG1pdGVyX2xpbWl0X2V4Y2VlZGVkID0gdHJ1ZTsKKyAgICBpZihjYWxjX2ludGVyc2VjdGlvbih2MC54ICsgZHgxLCB2MC55IC0gZHkxLAorICAgICAgICAgICAgICAgICAgICAgICAgIHYxLnggKyBkeDEsIHYxLnkgLSBkeTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgdjEueCArIGR4MiwgdjEueSAtIGR5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2Mi54ICsgZHgyLCB2Mi55IC0gZHkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICZ4aSwgJnlpKSkgeworICAgICAgICBGWF9GTE9BVCBkMSA9IGNhbGNfZGlzdGFuY2UodjEueCwgdjEueSwgeGksIHlpKTsKKyAgICAgICAgRlhfRkxPQVQgbGltID0gRlhTWVNfTXVsKHdpZHRoLCBtaXRlcl9saW1pdCk7CisgICAgICAgIGlmKGQxIDw9IGxpbSkgeworICAgICAgICAgICAgb3V0X3ZlcnRpY2VzLmFkZChjb29yZF90eXBlKHhpLCB5aSkpOworICAgICAgICAgICAgbWl0ZXJfbGltaXRfZXhjZWVkZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIEZYX0ZMT0FUIHgyID0gdjEueCArIGR4MTsKKyAgICAgICAgRlhfRkxPQVQgeTIgPSB2MS55IC0gZHkxOworICAgICAgICBpZigoRlhTWVNfTXVsKHgyIC0gdjAueCwgZHkxKSAtIEZYU1lTX011bCh2MC55IC0geTIsIGR4MSkgPCAwKSAhPQorICAgICAgICAgICAgICAgIChGWFNZU19NdWwoeDIgLSB2Mi54LCBkeTEpIC0gRlhTWVNfTXVsKHYyLnkgLSB5MiwgZHgxKSA8IDApKSB7CisgICAgICAgICAgICBvdXRfdmVydGljZXMuYWRkKGNvb3JkX3R5cGUodjEueCArIGR4MSwgdjEueSAtIGR5MSkpOworICAgICAgICAgICAgbWl0ZXJfbGltaXRfZXhjZWVkZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZihtaXRlcl9saW1pdF9leGNlZWRlZCkgeworICAgICAgICBzd2l0Y2gobGluZV9qb2luKSB7CisgICAgICAgICAgICBjYXNlIG1pdGVyX2pvaW5fcmV2ZXJ0OgorICAgICAgICAgICAgICAgIG91dF92ZXJ0aWNlcy5hZGQoY29vcmRfdHlwZSh2MS54ICsgZHgxLCB2MS55IC0gZHkxKSk7CisgICAgICAgICAgICAgICAgb3V0X3ZlcnRpY2VzLmFkZChjb29yZF90eXBlKHYxLnggKyBkeDIsIHYxLnkgLSBkeTIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgbWl0ZXJfam9pbl9yb3VuZDoKKyAgICAgICAgICAgICAgICBzdHJva2VfY2FsY19hcmMob3V0X3ZlcnRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MS54LCB2MS55LCBkeDEsIC1keTEsIGR4MiwgLWR5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGFwcHJveGltYXRpb25fc2NhbGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBvdXRfdmVydGljZXMuYWRkKGNvb3JkX3R5cGUodjEueCArIGR4MSArIEZYU1lTX011bChkeTEsIG1pdGVyX2xpbWl0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEueSAtIGR5MSArIEZYU1lTX011bChkeDEsIG1pdGVyX2xpbWl0KSkpOworICAgICAgICAgICAgICAgIG91dF92ZXJ0aWNlcy5hZGQoY29vcmRfdHlwZSh2MS54ICsgZHgyIC0gRlhTWVNfTXVsKGR5MiwgbWl0ZXJfbGltaXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MS55IC0gZHkyIC0gRlhTWVNfTXVsKGR4MiwgbWl0ZXJfbGltaXQpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9Cit0ZW1wbGF0ZTxjbGFzcyBWZXJ0ZXhDb25zdW1lcj4KK3ZvaWQgc3Ryb2tlX2NhbGNfY2FwKFZlcnRleENvbnN1bWVyJiBvdXRfdmVydGljZXMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJ0ZXhfZGlzdCYgdjAsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJ0ZXhfZGlzdCYgdjEsCisgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBsZW4sCisgICAgICAgICAgICAgICAgICAgICBsaW5lX2NhcF9lIGxpbmVfY2FwLAorICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBhcHByb3hpbWF0aW9uX3NjYWxlKQoreworICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVydGV4Q29uc3VtZXI6OnZhbHVlX3R5cGUgY29vcmRfdHlwZTsKKyAgICBvdXRfdmVydGljZXMucmVtb3ZlX2FsbCgpOworICAgIEZYX0ZMT0FUIGR4MSA9IEZYU1lTX0Rpdih2MS55IC0gdjAueSwgbGVuKTsKKyAgICBGWF9GTE9BVCBkeTEgPSBGWFNZU19EaXYodjEueCAtIHYwLngsIGxlbik7CisgICAgRlhfRkxPQVQgZHgyID0gMDsKKyAgICBGWF9GTE9BVCBkeTIgPSAwOworICAgIGR4MSA9IEZYU1lTX011bChkeDEsIHdpZHRoKTsKKyAgICBkeTEgPSBGWFNZU19NdWwoZHkxLCB3aWR0aCk7CisgICAgaWYobGluZV9jYXAgIT0gcm91bmRfY2FwKSB7CisgICAgICAgIGlmKGxpbmVfY2FwID09IHNxdWFyZV9jYXApIHsKKyAgICAgICAgICAgIGR4MiA9IGR5MTsKKyAgICAgICAgICAgIGR5MiA9IGR4MTsKKyAgICAgICAgfQorICAgICAgICBvdXRfdmVydGljZXMuYWRkKGNvb3JkX3R5cGUodjAueCAtIGR4MSAtIGR4MiwgdjAueSArIGR5MSAtIGR5MikpOworICAgICAgICBvdXRfdmVydGljZXMuYWRkKGNvb3JkX3R5cGUodjAueCArIGR4MSAtIGR4MiwgdjAueSAtIGR5MSAtIGR5MikpOworICAgIH0gZWxzZSB7CisgICAgICAgIEZYX0ZMT0FUIGExID0gRlhTWVNfYXRhbjIoZHkxLCAtZHgxKTsKKyAgICAgICAgRlhfRkxPQVQgYTIgPSBhMSArIEZYX1BJOworICAgICAgICBGWF9GTE9BVCBkYSA9IEZYU1lTX2Fjb3MoRlhTWVNfRGl2KHdpZHRoLCB3aWR0aCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfRGl2KDEuMGYgLyA4LCBhcHByb3hpbWF0aW9uX3NjYWxlKSkpICogMjsKKyAgICAgICAgb3V0X3ZlcnRpY2VzLmFkZChjb29yZF90eXBlKHYwLnggLSBkeDEsIHYwLnkgKyBkeTEpKTsKKyAgICAgICAgYTEgKz0gZGE7CisgICAgICAgIGEyIC09IGRhIC8gNDsKKyAgICAgICAgd2hpbGUoYTEgPCBhMikgeworICAgICAgICAgICAgb3V0X3ZlcnRpY2VzLmFkZChjb29yZF90eXBlKHYwLnggKyBGWFNZU19NdWwod2lkdGgsIEZYU1lTX2NvcyhhMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYwLnkgKyBGWFNZU19NdWwod2lkdGgsIEZYU1lTX3NpbihhMSkpKSk7CisgICAgICAgICAgICBhMSArPSBkYTsKKyAgICAgICAgfQorICAgICAgICBvdXRfdmVydGljZXMuYWRkKGNvb3JkX3R5cGUodjAueCArIGR4MSwgdjAueSAtIGR5MSkpOworICAgIH0KK30KK3RlbXBsYXRlPGNsYXNzIFZlcnRleENvbnN1bWVyPgordm9pZCBzdHJva2VfY2FsY19qb2luKFZlcnRleENvbnN1bWVyJiBvdXRfdmVydGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVydGV4X2Rpc3QmIHYwLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnRleF9kaXN0JiB2MSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJ0ZXhfZGlzdCYgdjIsCisgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgbGVuMSwKKyAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBsZW4yLAorICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgIGxpbmVfam9pbl9lIGxpbmVfam9pbiwKKyAgICAgICAgICAgICAgICAgICAgICBpbm5lcl9qb2luX2UgaW5uZXJfam9pbiwKKyAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBtaXRlcl9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBpbm5lcl9taXRlcl9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBhcHByb3hpbWF0aW9uX3NjYWxlKQoreworICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVydGV4Q29uc3VtZXI6OnZhbHVlX3R5cGUgY29vcmRfdHlwZTsKKyAgICBGWF9GTE9BVCBkeDEsIGR5MSwgZHgyLCBkeTI7CisgICAgZHgxID0gRlhTWVNfTXVsRGl2KHdpZHRoLCB2MS55IC0gdjAueSwgbGVuMSk7CisgICAgZHkxID0gRlhTWVNfTXVsRGl2KHdpZHRoLCB2MS54IC0gdjAueCwgbGVuMSk7CisgICAgZHgyID0gRlhTWVNfTXVsRGl2KHdpZHRoLCB2Mi55IC0gdjEueSwgbGVuMik7CisgICAgZHkyID0gRlhTWVNfTXVsRGl2KHdpZHRoLCB2Mi54IC0gdjEueCwgbGVuMik7CisgICAgb3V0X3ZlcnRpY2VzLnJlbW92ZV9hbGwoKTsKKyAgICBpZihjYWxjX3BvaW50X2xvY2F0aW9uKHYwLngsIHYwLnksIHYxLngsIHYxLnksIHYyLngsIHYyLnkpID4gMCkgeworICAgICAgICBzd2l0Y2goaW5uZXJfam9pbikgeworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBvdXRfdmVydGljZXMuYWRkKGNvb3JkX3R5cGUodjEueCArIGR4MSwgdjEueSAtIGR5MSkpOworICAgICAgICAgICAgICAgIG91dF92ZXJ0aWNlcy5hZGQoY29vcmRfdHlwZSh2MS54ICsgZHgyLCB2MS55IC0gZHkyKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGlubmVyX21pdGVyOgorICAgICAgICAgICAgICAgIHN0cm9rZV9jYWxjX21pdGVyKG91dF92ZXJ0aWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MCwgdjEsIHYyLCBkeDEsIGR5MSwgZHgyLCBkeTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl0ZXJfam9pbl9yZXZlcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfbWl0ZXJfbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wZik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGlubmVyX2phZzoKKyAgICAgICAgICAgIGNhc2UgaW5uZXJfcm91bmQ6IHsKKyAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgZCA9IChkeDEgLSBkeDIpICogKGR4MSAtIGR4MikgKyAoZHkxIC0gZHkyKSAqIChkeTEgLSBkeTIpOworICAgICAgICAgICAgICAgICAgICBpZihkIDwgbGVuMSAqIGxlbjEgJiYgZCA8IGxlbjIgKiBsZW4yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VfY2FsY19taXRlcihvdXRfdmVydGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MCwgdjEsIHYyLCBkeDEsIGR5MSwgZHgyLCBkeTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pdGVyX2pvaW5fcmV2ZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfbWl0ZXJfbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjBmKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlubmVyX2pvaW4gPT0gaW5uZXJfamFnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3ZlcnRpY2VzLmFkZChjb29yZF90eXBlKHYxLnggKyBkeDEsIHYxLnkgLSBkeTEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfdmVydGljZXMuYWRkKGNvb3JkX3R5cGUodjEueCwgICAgICAgdjEueSAgICAgICkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF92ZXJ0aWNlcy5hZGQoY29vcmRfdHlwZSh2MS54ICsgZHgyLCB2MS55IC0gZHkyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF92ZXJ0aWNlcy5hZGQoY29vcmRfdHlwZSh2MS54ICsgZHgxLCB2MS55IC0gZHkxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3ZlcnRpY2VzLmFkZChjb29yZF90eXBlKHYxLngsICAgICAgIHYxLnkgICAgICApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VfY2FsY19hcmMob3V0X3ZlcnRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MS54LCB2MS55LCBkeDIsIC1keTIsIGR4MSwgLWR5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGFwcHJveGltYXRpb25fc2NhbGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF92ZXJ0aWNlcy5hZGQoY29vcmRfdHlwZSh2MS54LCAgICAgICB2MS55ICAgICAgKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3ZlcnRpY2VzLmFkZChjb29yZF90eXBlKHYxLnggKyBkeDIsIHYxLnkgLSBkeTIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaChsaW5lX2pvaW4pIHsKKyAgICAgICAgICAgIGNhc2UgbWl0ZXJfam9pbjoKKyAgICAgICAgICAgIGNhc2UgbWl0ZXJfam9pbl9yZXZlcnQ6CisgICAgICAgICAgICBjYXNlIG1pdGVyX2pvaW5fcm91bmQ6CisgICAgICAgICAgICAgICAgc3Ryb2tlX2NhbGNfbWl0ZXIob3V0X3ZlcnRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYwLCB2MSwgdjIsIGR4MSwgZHkxLCBkeDIsIGR5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2pvaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl0ZXJfbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm94aW1hdGlvbl9zY2FsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHJvdW5kX2pvaW46CisgICAgICAgICAgICAgICAgc3Ryb2tlX2NhbGNfYXJjKG91dF92ZXJ0aWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEueCwgdjEueSwgZHgxLCAtZHkxLCBkeDIsIC1keTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBhcHByb3hpbWF0aW9uX3NjYWxlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgb3V0X3ZlcnRpY2VzLmFkZChjb29yZF90eXBlKHYxLnggKyBkeDEsIHYxLnkgLSBkeTEpKTsKKyAgICAgICAgICAgICAgICBvdXRfdmVydGljZXMuYWRkKGNvb3JkX3R5cGUodjEueCArIGR4MiwgdjEueSAtIGR5MikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfcGF0aF9zdG9yYWdlLmggYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfcGF0aF9zdG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRlYTBiNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19wYXRoX3N0b3JhZ2UuaApAQCAtMCwwICsxLDE3MiBAQAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFudGktR3JhaW4gR2VvbWV0cnkgLSBWZXJzaW9uIDIuMworLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUgTWF4aW0gU2hlbWFuYXJldiAoaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tKQorLy8KKy8vIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorLy8gaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgorLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisvLyB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmbmRlZiBBR0dfUEFUSF9TVE9SQUdFX0lOQ0xVREVECisjZGVmaW5lIEFHR19QQVRIX1NUT1JBR0VfSU5DTFVERUQKKyNpbmNsdWRlICJhZ2dfYmFzaWNzLmgiCituYW1lc3BhY2UgYWdnCit7CitjbGFzcyBwYXRoX3N0b3JhZ2UgOiBwdWJsaWMgQ0ZYX09iamVjdAoreworICAgIGVudW0gYmxvY2tfc2NhbGVfZSB7CisgICAgICAgIGJsb2NrX3NoaWZ0ID0gOCwKKyAgICAgICAgYmxvY2tfc2l6ZSAgPSAxIDw8IGJsb2NrX3NoaWZ0LAorICAgICAgICBibG9ja19tYXNrICA9IGJsb2NrX3NpemUgLSAxLAorICAgICAgICBibG9ja19wb29sICA9IDI1NgorICAgIH07CitwdWJsaWM6CisgICAgY2xhc3MgdmVydGV4X3NvdXJjZSA6IHB1YmxpYyBDRlhfT2JqZWN0CisgICAgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmVydGV4X3NvdXJjZSgpIHt9CisgICAgICAgIHZlcnRleF9zb3VyY2UoY29uc3QgcGF0aF9zdG9yYWdlJiBwKSA6IG1fcGF0aCgmcCksIG1fdmVydGV4X2lkeCgwKSB7fQorICAgICAgICB2b2lkIHJld2luZCh1bnNpZ25lZCBwYXRoX2lkKQorICAgICAgICB7CisgICAgICAgICAgICBtX3ZlcnRleF9pZHggPSBwYXRoX2lkOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIHZlcnRleChGWF9GTE9BVCogeCwgRlhfRkxPQVQqIHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAobV92ZXJ0ZXhfaWR4IDwgbV9wYXRoLT50b3RhbF92ZXJ0aWNlcygpKSA/CisgICAgICAgICAgICAgICAgICAgbV9wYXRoLT52ZXJ0ZXgobV92ZXJ0ZXhfaWR4KyssIHgsIHkpIDoKKyAgICAgICAgICAgICAgICAgICBwYXRoX2NtZF9zdG9wOworICAgICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3QgcGF0aF9zdG9yYWdlKiBtX3BhdGg7CisgICAgICAgIHVuc2lnbmVkICAgICAgICAgICAgbV92ZXJ0ZXhfaWR4OworICAgIH07CisgICAgfnBhdGhfc3RvcmFnZSgpOworICAgIHBhdGhfc3RvcmFnZSgpOworICAgIHVuc2lnbmVkIGxhc3RfdmVydGV4KEZYX0ZMT0FUKiB4LCBGWF9GTE9BVCogeSkgY29uc3Q7CisgICAgdW5zaWduZWQgcHJldl92ZXJ0ZXgoRlhfRkxPQVQqIHgsIEZYX0ZMT0FUKiB5KSBjb25zdDsKKyAgICB2b2lkIG1vdmVfdG8oRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSk7CisgICAgdm9pZCBsaW5lX3RvKEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHkpOworICAgIHZvaWQgY3VydmU0KEZYX0ZMT0FUIHhfY3RybDEsIEZYX0ZMT0FUIHlfY3RybDEsCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgeF9jdHJsMiwgRlhfRkxPQVQgeV9jdHJsMiwKKyAgICAgICAgICAgICAgICBGWF9GTE9BVCB4X3RvLCAgICBGWF9GTE9BVCB5X3RvKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBWZXJ0ZXhTb3VyY2U+CisgICAgdm9pZCBhZGRfcGF0aChWZXJ0ZXhTb3VyY2UmIHZzLAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGF0aF9pZCA9IDAsCisgICAgICAgICAgICAgICAgICBib29sIHNvbGlkX3BhdGggPSB0cnVlKQorICAgIHsKKyAgICAgICAgRlhfRkxPQVQgeCwgeTsKKyAgICAgICAgdW5zaWduZWQgY21kOworICAgICAgICB2cy5yZXdpbmQocGF0aF9pZCk7CisgICAgICAgIHdoaWxlKCFpc19zdG9wKGNtZCA9IHZzLnZlcnRleCgmeCwgJnkpKSkgeworICAgICAgICAgICAgaWYoaXNfbW92ZV90byhjbWQpICYmIHNvbGlkX3BhdGggJiYgbV90b3RhbF92ZXJ0aWNlcykgeworICAgICAgICAgICAgICAgIGNtZCA9IHBhdGhfY21kX2xpbmVfdG87CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhZGRfdmVydGV4KHgsIHksIGNtZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVmVydGV4U291cmNlPgorICAgIHZvaWQgYWRkX3BhdGhfY3VydmUoVmVydGV4U291cmNlJiB2cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhdGhfaWQgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzb2xpZF9wYXRoID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIEZYX0ZMT0FUIHgsIHk7CisgICAgICAgIHVuc2lnbmVkIGNtZDsKKyAgICAgICAgaW50IGZsYWc7CisgICAgICAgIHZzLnJld2luZChwYXRoX2lkKTsKKyAgICAgICAgd2hpbGUoIWlzX3N0b3AoY21kID0gdnMudmVydGV4X2N1cnZlX2ZsYWcoJngsICZ5LCBmbGFnKSkpIHsKKyAgICAgICAgICAgIGlmKGlzX21vdmVfdG8oY21kKSAmJiBzb2xpZF9wYXRoICYmIG1fdG90YWxfdmVydGljZXMpIHsKKyAgICAgICAgICAgICAgICBjbWQgPSBwYXRoX2NtZF9saW5lX3RvIHwgZmxhZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkZF92ZXJ0ZXgoeCwgeSwgY21kIHwgZmxhZyk7CisgICAgICAgIH0KKyAgICB9CisgICAgdW5zaWduZWQgdG90YWxfdmVydGljZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdG90YWxfdmVydGljZXM7CisgICAgfQorICAgIHVuc2lnbmVkIHZlcnRleCh1bnNpZ25lZCBpZHgsIEZYX0ZMT0FUKiB4LCBGWF9GTE9BVCogeSkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG5iID0gaWR4ID4+IGJsb2NrX3NoaWZ0OworICAgICAgICBjb25zdCBGWF9GTE9BVCogcHYgPSBtX2Nvb3JkX2Jsb2Nrc1tuYl0gKyAoKGlkeCAmIGJsb2NrX21hc2spIDw8IDEpOworICAgICAgICAqeCA9ICpwdisrOworICAgICAgICAqeSA9ICpwdjsKKyAgICAgICAgcmV0dXJuIG1fY21kX2Jsb2Nrc1tuYl1baWR4ICYgYmxvY2tfbWFza107CisgICAgfQorICAgIHVuc2lnbmVkIGNvbW1hbmQodW5zaWduZWQgaWR4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY21kX2Jsb2Nrc1tpZHggPj4gYmxvY2tfc2hpZnRdW2lkeCAmIGJsb2NrX21hc2tdOworICAgIH0KKyAgICB1bnNpZ25lZCBnZXRmbGFnKHVuc2lnbmVkIGlkeCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NtZF9ibG9ja3NbaWR4ID4+IGJsb2NrX3NoaWZ0XVtpZHggJiBibG9ja19tYXNrXSAmIHBhdGhfZmxhZ3NfanI7CisgICAgfQorICAgIHZvaWQgICAgIHJld2luZCh1bnNpZ25lZCBwYXRoX2lkKTsKKyAgICB1bnNpZ25lZCB2ZXJ0ZXgoRlhfRkxPQVQqIHgsIEZYX0ZMT0FUKiB5KTsKKyAgICB2b2lkIGFkZF92ZXJ0ZXgoRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSwgdW5zaWduZWQgY21kKTsKKyAgICB2b2lkIGVuZF9wb2x5KCk7Citwcml2YXRlOgorICAgIHZvaWQgYWxsb2NhdGVfYmxvY2sodW5zaWduZWQgbmIpOworICAgIHVuc2lnbmVkIGNoYXIqIHN0b3JhZ2VfcHRycyhGWF9GTE9BVCoqIHh5X3B0cik7Citwcml2YXRlOgorICAgIHVuc2lnbmVkICAgICAgICBtX3RvdGFsX3ZlcnRpY2VzOworICAgIHVuc2lnbmVkICAgICAgICBtX3RvdGFsX2Jsb2NrczsKKyAgICB1bnNpZ25lZCAgICAgICAgbV9tYXhfYmxvY2tzOworICAgIEZYX0ZMT0FUKiogICBtX2Nvb3JkX2Jsb2NrczsKKyAgICB1bnNpZ25lZCBjaGFyKiogbV9jbWRfYmxvY2tzOworICAgIHVuc2lnbmVkICAgICAgICBtX2l0ZXJhdG9yOworfTsKK2lubGluZSB1bnNpZ25lZCBwYXRoX3N0b3JhZ2U6OnZlcnRleChGWF9GTE9BVCogeCwgRlhfRkxPQVQqIHkpCit7CisgICAgaWYobV9pdGVyYXRvciA+PSBtX3RvdGFsX3ZlcnRpY2VzKSB7CisgICAgICAgIHJldHVybiBwYXRoX2NtZF9zdG9wOworICAgIH0KKyAgICByZXR1cm4gdmVydGV4KG1faXRlcmF0b3IrKywgeCwgeSk7Cit9CitpbmxpbmUgdW5zaWduZWQgcGF0aF9zdG9yYWdlOjpwcmV2X3ZlcnRleChGWF9GTE9BVCogeCwgRlhfRkxPQVQqIHkpIGNvbnN0Cit7CisgICAgaWYobV90b3RhbF92ZXJ0aWNlcyA+IDEpIHsKKyAgICAgICAgcmV0dXJuIHZlcnRleChtX3RvdGFsX3ZlcnRpY2VzIC0gMiwgeCwgeSk7CisgICAgfQorICAgIHJldHVybiBwYXRoX2NtZF9zdG9wOworfQoraW5saW5lIHVuc2lnbmVkIHBhdGhfc3RvcmFnZTo6bGFzdF92ZXJ0ZXgoRlhfRkxPQVQqIHgsIEZYX0ZMT0FUKiB5KSBjb25zdAoreworICAgIGlmKG1fdG90YWxfdmVydGljZXMpIHsKKyAgICAgICAgcmV0dXJuIHZlcnRleChtX3RvdGFsX3ZlcnRpY2VzIC0gMSwgeCwgeSk7CisgICAgfQorICAgIHJldHVybiBwYXRoX2NtZF9zdG9wOworfQoraW5saW5lIHVuc2lnbmVkIGNoYXIqIHBhdGhfc3RvcmFnZTo6c3RvcmFnZV9wdHJzKEZYX0ZMT0FUKiogeHlfcHRyKQoreworICAgIHVuc2lnbmVkIG5iID0gbV90b3RhbF92ZXJ0aWNlcyA+PiBibG9ja19zaGlmdDsKKyAgICBpZihuYiA+PSBtX3RvdGFsX2Jsb2NrcykgeworICAgICAgICBhbGxvY2F0ZV9ibG9jayhuYik7CisgICAgfQorICAgICp4eV9wdHIgPSBtX2Nvb3JkX2Jsb2Nrc1tuYl0gKyAoKG1fdG90YWxfdmVydGljZXMgJiBibG9ja19tYXNrKSA8PCAxKTsKKyAgICByZXR1cm4gbV9jbWRfYmxvY2tzW25iXSArIChtX3RvdGFsX3ZlcnRpY2VzICYgYmxvY2tfbWFzayk7Cit9CitpbmxpbmUgdm9pZCBwYXRoX3N0b3JhZ2U6OmFkZF92ZXJ0ZXgoRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSwgdW5zaWduZWQgY21kKQoreworICAgIEZYX0ZMT0FUKiBjb29yZF9wdHIgPSAwOworICAgIHVuc2lnbmVkIGNoYXIqIGNtZF9wdHIgPSBzdG9yYWdlX3B0cnMoJmNvb3JkX3B0cik7CisgICAgKmNtZF9wdHIgPSAodW5zaWduZWQgY2hhciljbWQ7CisgICAgKmNvb3JkX3B0cisrID0geDsKKyAgICAqY29vcmRfcHRyICAgPSB5OworICAgIG1fdG90YWxfdmVydGljZXMrKzsKK30KK2lubGluZSB2b2lkIHBhdGhfc3RvcmFnZTo6bW92ZV90byhGWF9GTE9BVCB4LCBGWF9GTE9BVCB5KQoreworICAgIGFkZF92ZXJ0ZXgoeCwgeSwgcGF0aF9jbWRfbW92ZV90byk7Cit9CitpbmxpbmUgdm9pZCBwYXRoX3N0b3JhZ2U6OmxpbmVfdG8oRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSkKK3sKKyAgICBhZGRfdmVydGV4KHgsIHksIHBhdGhfY21kX2xpbmVfdG8pOworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfcGl4Zm10X2dyYXkuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19waXhmbXRfZ3JheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MmEyZTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfcGl4Zm10X2dyYXkuaApAQCAtMCwwICsxLDE3NyBAQAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFudGktR3JhaW4gR2VvbWV0cnkgLSBWZXJzaW9uIDIuMworLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUgTWF4aW0gU2hlbWFuYXJldiAoaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tKQorLy8KKy8vIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorLy8gaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgorLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisvLyB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEFkYXB0YXRpb24gZm9yIGhpZ2ggcHJlY2lzaW9uIGNvbG9ycyBoYXMgYmVlbiBzcG9uc29yZWQgYnkKKy8vIExpYmVydHkgVGVjaG5vbG9neSBTeXN0ZW1zLCBJbmMuLCB2aXNpdCBodHRwOi8vbGliLXN5cy5jb20KKy8vCisvLyBMaWJlcnR5IFRlY2hub2xvZ3kgU3lzdGVtcywgSW5jLiBpcyB0aGUgcHJvdmlkZXIgb2YKKy8vIFBvc3RTY3JpcHQgYW5kIFBERiB0ZWNobm9sb2d5IGZvciBzb2Z0d2FyZSBkZXZlbG9wZXJzLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmbmRlZiBBR0dfUElYRk1UX0dSQVlfSU5DTFVERUQKKyNkZWZpbmUgQUdHX1BJWEZNVF9HUkFZX0lOQ0xVREVECisjaW5jbHVkZSAiYWdnX2Jhc2ljcy5oIgorI2luY2x1ZGUgImFnZ19jb2xvcl9ncmF5LmgiCisjaW5jbHVkZSAiYWdnX3JlbmRlcmluZ19idWZmZXIuaCIKK25hbWVzcGFjZSBhZ2cKK3sKK3RlbXBsYXRlPGNsYXNzIENvbG9yVD4gc3RydWN0IGJsZW5kZXJfZ3JheSA6IHB1YmxpYyBDRlhfT2JqZWN0IHsKKyAgICB0eXBlZGVmIENvbG9yVCBjb2xvcl90eXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgY29sb3JfdHlwZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgY29sb3JfdHlwZTo6Y2FsY190eXBlIGNhbGNfdHlwZTsKKyAgICBlbnVtIGJhc2Vfc2NhbGVfZSB7IGJhc2Vfc2hpZnQgPSBjb2xvcl90eXBlOjpiYXNlX3NoaWZ0IH07CisgICAgc3RhdGljIEFHR19JTkxJTkUgdm9pZCBibGVuZF9waXgodmFsdWVfdHlwZSogcCwgdW5zaWduZWQgY3YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEsIHVuc2lnbmVkIGNvdmVyID0gMCkKKyAgICB7CisgICAgICAgICpwID0gKHZhbHVlX3R5cGUpKCgoKGN2IC0gY2FsY190eXBlKCpwKSkgKiBhbHBoYSkgKyAoY2FsY190eXBlKCpwKSA8PCBiYXNlX3NoaWZ0KSkgPj4gYmFzZV9zaGlmdCk7CisgICAgfQorfTsKK3RlbXBsYXRlPGNsYXNzIEJsZW5kZXIsIHVuc2lnbmVkIFN0ZXAgPSAxLCB1bnNpZ25lZCBPZmZzZXQgPSAwPgorY2xhc3MgcGl4ZWxfZm9ybWF0c19ncmF5IDogcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHJlbmRlcmluZ19idWZmZXI6OnJvd19kYXRhIHJvd19kYXRhOworICAgIHR5cGVkZWYgcmVuZGVyaW5nX2J1ZmZlcjo6c3Bhbl9kYXRhIHNwYW5fZGF0YTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEJsZW5kZXI6OmNvbG9yX3R5cGUgY29sb3JfdHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGNvbG9yX3R5cGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGNvbG9yX3R5cGU6OmNhbGNfdHlwZSBjYWxjX3R5cGU7CisgICAgZW51bSBiYXNlX3NjYWxlX2UgeworICAgICAgICBiYXNlX3NoaWZ0ID0gY29sb3JfdHlwZTo6YmFzZV9zaGlmdCwKKyAgICAgICAgYmFzZV9zaXplICA9IGNvbG9yX3R5cGU6OmJhc2Vfc2l6ZSwKKyAgICAgICAgYmFzZV9tYXNrICA9IGNvbG9yX3R5cGU6OmJhc2VfbWFzaworICAgIH07Citwcml2YXRlOgorICAgIHN0YXRpYyBBR0dfSU5MSU5FIHZvaWQgY29weV9vcl9ibGVuZF9waXgodmFsdWVfdHlwZSogcCwKKyAgICAgICAgICAgIGNvbnN0IGNvbG9yX3R5cGUmIGMsCisgICAgICAgICAgICB1bnNpZ25lZCBjb3ZlcikKKyAgICB7CisgICAgICAgIGlmIChjLmEpIHsKKyAgICAgICAgICAgIGNhbGNfdHlwZSBhbHBoYSA9IChjYWxjX3R5cGUoYy5hKSAqIChjb3ZlciArIDEpKSA+PiA4OworICAgICAgICAgICAgaWYoYWxwaGEgPT0gYmFzZV9tYXNrKSB7CisgICAgICAgICAgICAgICAgKnAgPSBjLnY7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEJsZW5kZXI6OmJsZW5kX3BpeChwLCBjLnYsIGFscGhhLCBjb3Zlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgc3RhdGljIEFHR19JTkxJTkUgdm9pZCBjb3B5X29yX2JsZW5kX3BpeCh2YWx1ZV90eXBlKiBwLAorICAgICAgICAgICAgY29uc3QgY29sb3JfdHlwZSYgYykKKyAgICB7CisgICAgICAgIGlmIChjLmEpIHsKKyAgICAgICAgICAgIGlmKGMuYSA9PSBiYXNlX21hc2spIHsKKyAgICAgICAgICAgICAgICAqcCA9IGMudjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQmxlbmRlcjo6YmxlbmRfcGl4KHAsIGMudiwgYy5hKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK3B1YmxpYzoKKyAgICBwaXhlbF9mb3JtYXRzX2dyYXkocmVuZGVyaW5nX2J1ZmZlciYgcmIpIDoKKyAgICAgICAgbV9yYnVmKCZyYikKKyAgICB7fQorICAgIEFHR19JTkxJTkUgdW5zaWduZWQgd2lkdGgoKSAgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3JidWYtPndpZHRoKCk7CisgICAgfQorICAgIEFHR19JTkxJTkUgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3JidWYtPmhlaWdodCgpOworICAgIH0KKyAgICBBR0dfSU5MSU5FIGNvbG9yX3R5cGUgcGl4ZWwoaW50IHgsIGludCB5KSBjb25zdAorICAgIHsKKyAgICAgICAgdmFsdWVfdHlwZSogcCA9ICh2YWx1ZV90eXBlKiltX3JidWYtPnJvdyh5KSArIHggKiBTdGVwICsgT2Zmc2V0OworICAgICAgICByZXR1cm4gY29sb3JfdHlwZSgqcCk7CisgICAgfQorICAgIHJvd19kYXRhIHJvdyhpbnQgeCwgaW50IHkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcm93X2RhdGEoeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9yYnVmLT5yb3coeSkgKworICAgICAgICAgICAgICAgICAgICAgICAgeCAqIFN0ZXAgKiBzaXplb2YodmFsdWVfdHlwZSkgKworICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICogc2l6ZW9mKHZhbHVlX3R5cGUpKTsKKyAgICB9CisgICAgc3Bhbl9kYXRhIHNwYW4oaW50IHgsIGludCB5LCB1bnNpZ25lZCBsZW4pCisgICAgeworICAgICAgICByZXR1cm4gc3Bhbl9kYXRhKHgsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtX3JidWYtPnJvdyh5KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgeCAqIFN0ZXAgKiBzaXplb2YodmFsdWVfdHlwZSkgKworICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAqIHNpemVvZih2YWx1ZV90eXBlKSk7CisgICAgfQorICAgIEFHR19JTkxJTkUgdm9pZCBjb3B5X3BpeGVsKGludCB4LCBpbnQgeSwgY29uc3QgY29sb3JfdHlwZSYgYykKKyAgICB7CisgICAgICAgICooKHZhbHVlX3R5cGUqKW1fcmJ1Zi0+cm93KHkpICsgeCAqIFN0ZXAgKyBPZmZzZXQpID0gYy52OworICAgIH0KKyAgICBBR0dfSU5MSU5FIHZvaWQgYmxlbmRfcGl4ZWwoaW50IHgsIGludCB5LCBjb25zdCBjb2xvcl90eXBlJiBjLCBpbnQ4dSBjb3ZlcikKKyAgICB7CisgICAgICAgIGNvcHlfb3JfYmxlbmRfcGl4KCh2YWx1ZV90eXBlKiltX3JidWYtPnJvdyh5KSArIHggKiBTdGVwICsgT2Zmc2V0LCBjLCBjb3Zlcik7CisgICAgfQorICAgIEFHR19JTkxJTkUgdm9pZCBjb3B5X2hsaW5lKGludCB4LCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3JfdHlwZSYgYykKKyAgICB7CisgICAgICAgIHZhbHVlX3R5cGUqIHAgPSAodmFsdWVfdHlwZSopbV9yYnVmLT5yb3coeSkgKyB4ICogU3RlcCArIE9mZnNldDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgKnAgPSBjLnY7CisgICAgICAgICAgICBwICs9IFN0ZXA7CisgICAgICAgIH0gd2hpbGUoLS1sZW4pOworICAgIH0KKyAgICB2b2lkIGJsZW5kX2hsaW5lKGludCB4LCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yX3R5cGUmIGMsCisgICAgICAgICAgICAgICAgICAgICBpbnQ4dSBjb3ZlcikKKyAgICB7CisgICAgICAgIGlmIChjLmEpIHsKKyAgICAgICAgICAgIHZhbHVlX3R5cGUqIHAgPSAodmFsdWVfdHlwZSopbV9yYnVmLT5yb3coeSkgKyB4ICogU3RlcCArIE9mZnNldDsKKyAgICAgICAgICAgIGNhbGNfdHlwZSBhbHBoYSA9IChjYWxjX3R5cGUoYy5hKSAqIChjb3ZlciArIDEpKSA+PiA4OworICAgICAgICAgICAgaWYoYWxwaGEgPT0gYmFzZV9tYXNrKSB7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAqcCA9IGMudjsKKyAgICAgICAgICAgICAgICAgICAgcCArPSBTdGVwOworICAgICAgICAgICAgICAgIH0gd2hpbGUoLS1sZW4pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIEJsZW5kZXI6OmJsZW5kX3BpeChwLCBjLnYsIGFscGhhLCBjb3Zlcik7CisgICAgICAgICAgICAgICAgICAgIHAgKz0gU3RlcDsKKyAgICAgICAgICAgICAgICB9IHdoaWxlKC0tbGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGJsZW5kX3NvbGlkX2hzcGFuKGludCB4LCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yX3R5cGUmIGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ4dSogY292ZXJzKQorICAgIHsKKyAgICAgICAgaWYgKGMuYSkgeworICAgICAgICAgICAgdmFsdWVfdHlwZSogcCA9ICh2YWx1ZV90eXBlKiltX3JidWYtPnJvdyh5KSArIHggKiBTdGVwICsgT2Zmc2V0OworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGNhbGNfdHlwZSBhbHBoYSA9IChjYWxjX3R5cGUoYy5hKSAqIChjYWxjX3R5cGUoKmNvdmVycykgKyAxKSkgPj4gODsKKyAgICAgICAgICAgICAgICBpZihhbHBoYSA9PSBiYXNlX21hc2spIHsKKyAgICAgICAgICAgICAgICAgICAgKnAgPSBjLnY7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQmxlbmRlcjo6YmxlbmRfcGl4KHAsIGMudiwgYWxwaGEsICpjb3ZlcnMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwICs9IFN0ZXA7CisgICAgICAgICAgICAgICAgKytjb3ZlcnM7CisgICAgICAgICAgICB9IHdoaWxlKC0tbGVuKTsKKyAgICAgICAgfQorICAgIH0KK3ByaXZhdGU6CisgICAgcmVuZGVyaW5nX2J1ZmZlciogbV9yYnVmOworfTsKK3R5cGVkZWYgYmxlbmRlcl9ncmF5PGdyYXk4PiAgICAgIGJsZW5kZXJfZ3JheTg7Cit0eXBlZGVmIHBpeGVsX2Zvcm1hdHNfZ3JheTxibGVuZGVyX2dyYXk4LCAxLCAwPiBwaXhmbXRfZ3JheTg7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19yYXN0ZXJpemVyX3NjYW5saW5lX2FhLmggYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfcmFzdGVyaXplcl9zY2FubGluZV9hYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZjBkZWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfcmFzdGVyaXplcl9zY2FubGluZV9hYS5oCkBAIC0wLDAgKzEsNDcyIEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFRoZSBhdXRob3IgZ3JhdGVmdWxseSBhY2tub3dsZWdlcyB0aGUgc3VwcG9ydCBvZiBEYXZpZCBUdXJuZXIsCisvLyBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnIC0gdGhlIGF1dGhvcnMgb2YgdGhlIEZyZWVUeXBlCisvLyBsaWJyYXkgLSBpbiBwcm9kdWNpbmcgdGhpcyB3b3JrLiBTZWUgaHR0cDovL3d3dy5mcmVldHlwZS5vcmcgZm9yIGRldGFpbHMuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb250YWN0OiBtY3NlZW1AYW50aWdyYWluLmNvbQorLy8gICAgICAgICAgbWNzZWVtYWdnQHlhaG9vLmNvbQorLy8gICAgICAgICAgaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBBZGFwdGF0aW9uIGZvciAzMi1iaXQgc2NyZWVuIGNvb3JkaW5hdGVzIGhhcyBiZWVuIHNwb25zb3JlZCBieQorLy8gTGliZXJ0eSBUZWNobm9sb2d5IFN5c3RlbXMsIEluYy4sIHZpc2l0IGh0dHA6Ly9saWItc3lzLmNvbQorLy8KKy8vIExpYmVydHkgVGVjaG5vbG9neSBTeXN0ZW1zLCBJbmMuIGlzIHRoZSBwcm92aWRlciBvZgorLy8gUG9zdFNjcmlwdCBhbmQgUERGIHRlY2hub2xvZ3kgZm9yIHNvZnR3YXJlIGRldmVsb3BlcnMuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaWZuZGVmIEFHR19SQVNURVJJWkVSX1NDQU5MSU5FX0FBX0lOQ0xVREVECisjZGVmaW5lIEFHR19SQVNURVJJWkVSX1NDQU5MSU5FX0FBX0lOQ0xVREVECisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2dlLmgiCisjaW5jbHVkZSAiYWdnX2Jhc2ljcy5oIgorI2luY2x1ZGUgImFnZ19tYXRoLmgiCisjaW5jbHVkZSAiYWdnX2FycmF5LmgiCisjaW5jbHVkZSAiYWdnX2NsaXBfbGlhbmdfYmFyc2t5LmgiCisjaW5jbHVkZSAiYWdnX3JlbmRlcl9zY2FubGluZXMuaCIKK25hbWVzcGFjZSBhZ2cKK3sKK2VudW0gcG9seV9iYXNlX3NjYWxlX2UgeworICAgIHBvbHlfYmFzZV9zaGlmdCA9IDgsCisgICAgcG9seV9iYXNlX3NpemUgID0gMSA8PCBwb2x5X2Jhc2Vfc2hpZnQsCisgICAgcG9seV9iYXNlX21hc2sgID0gcG9seV9iYXNlX3NpemUgLSAxCit9OworaW5saW5lIGludCBwb2x5X2Nvb3JkKEZYX0ZMT0FUIGMpCit7CisgICAgcmV0dXJuIGludChjICogcG9seV9iYXNlX3NpemUpOworfQorc3RydWN0IGNlbGxfYWEgOiBwdWJsaWMgQ0ZYX09iamVjdCB7CisgICAgaW50IHg7CisgICAgaW50IHk7CisgICAgaW50IGNvdmVyOworICAgIGludCBhcmVhOworICAgIHZvaWQgc2V0KGludCB4LCBpbnQgeSwgaW50IGMsIGludCBhKTsKKyAgICB2b2lkIHNldF9jb29yZChpbnQgeCwgaW50IHkpOworICAgIHZvaWQgc2V0X2NvdmVyKGludCBjLCBpbnQgYSk7CisgICAgdm9pZCBhZGRfY292ZXIoaW50IGMsIGludCBhKTsKK307CitjbGFzcyBvdXRsaW5lX2FhIDogcHVibGljIENGWF9PYmplY3QKK3sKKyAgICBlbnVtIGNlbGxfYmxvY2tfc2NhbGVfZSB7CisgICAgICAgIGNlbGxfYmxvY2tfc2hpZnQgPSAxMiwKKyAgICAgICAgY2VsbF9ibG9ja19zaXplICA9IDEgPDwgY2VsbF9ibG9ja19zaGlmdCwKKyAgICAgICAgY2VsbF9ibG9ja19tYXNrICA9IGNlbGxfYmxvY2tfc2l6ZSAtIDEsCisgICAgICAgIGNlbGxfYmxvY2tfcG9vbCAgPSAyNTYsCisgICAgICAgIGNlbGxfYmxvY2tfbGltaXQgPSAxMDI0CisgICAgfTsKKyAgICBzdHJ1Y3Qgc29ydGVkX3kgOiBwdWJsaWMgQ0ZYX09iamVjdCB7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0OworICAgICAgICB1bnNpZ25lZCBudW07CisgICAgfTsKK3B1YmxpYzoKKyAgICB+b3V0bGluZV9hYSgpOworICAgIG91dGxpbmVfYWEoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBtb3ZlX3RvKGludCB4LCBpbnQgeSk7CisgICAgdm9pZCBsaW5lX3RvKGludCB4LCBpbnQgeSk7CisgICAgaW50IG1pbl94KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21pbl94OworICAgIH0KKyAgICBpbnQgbWluX3koKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWluX3k7CisgICAgfQorICAgIGludCBtYXhfeCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9tYXhfeDsKKyAgICB9CisgICAgaW50IG1heF95KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21heF95OworICAgIH0KKyAgICB2b2lkIHNvcnRfY2VsbHMoKTsKKyAgICB1bnNpZ25lZCB0b3RhbF9jZWxscygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9udW1fY2VsbHM7CisgICAgfQorICAgIHVuc2lnbmVkIHNjYW5saW5lX251bV9jZWxscyh1bnNpZ25lZCB5KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc29ydGVkX3lbeSAtIG1fbWluX3ldLm51bTsKKyAgICB9CisgICAgY29uc3QgY2VsbF9hYSogY29uc3QqIHNjYW5saW5lX2NlbGxzKHVuc2lnbmVkIHkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zb3J0ZWRfY2VsbHMuZGF0YSgpICsgbV9zb3J0ZWRfeVt5IC0gbV9taW5feV0uc3RhcnQ7CisgICAgfQorICAgIGJvb2wgc29ydGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NvcnRlZDsKKyAgICB9Citwcml2YXRlOgorICAgIG91dGxpbmVfYWEoY29uc3Qgb3V0bGluZV9hYSYpOworICAgIGNvbnN0IG91dGxpbmVfYWEmIG9wZXJhdG9yID0gKGNvbnN0IG91dGxpbmVfYWEmKTsKKyAgICB2b2lkIHNldF9jdXJfY2VsbChpbnQgeCwgaW50IHkpOworICAgIHZvaWQgYWRkX2N1cl9jZWxsKCk7CisgICAgdm9pZCByZW5kZXJfaGxpbmUoaW50IGV5LCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIpOworICAgIHZvaWQgcmVuZGVyX2xpbmUoaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKTsKKyAgICB2b2lkIGFsbG9jYXRlX2Jsb2NrKCk7Citwcml2YXRlOgorICAgIHVuc2lnbmVkICBtX251bV9ibG9ja3M7CisgICAgdW5zaWduZWQgIG1fbWF4X2Jsb2NrczsKKyAgICB1bnNpZ25lZCAgbV9jdXJfYmxvY2s7CisgICAgdW5zaWduZWQgIG1fbnVtX2NlbGxzOworICAgIGNlbGxfYWEqKiBtX2NlbGxzOworICAgIGNlbGxfYWEqICBtX2N1cl9jZWxsX3B0cjsKKyAgICBwb2RfYXJyYXk8Y2VsbF9hYSo+IG1fc29ydGVkX2NlbGxzOworICAgIHBvZF9hcnJheTxzb3J0ZWRfeT4gbV9zb3J0ZWRfeTsKKyAgICBjZWxsX2FhICAgbV9jdXJfY2VsbDsKKyAgICBpbnQgICAgICAgbV9jdXJfeDsKKyAgICBpbnQgICAgICAgbV9jdXJfeTsKKyAgICBpbnQgICAgICAgbV9taW5feDsKKyAgICBpbnQgICAgICAgbV9taW5feTsKKyAgICBpbnQgICAgICAgbV9tYXhfeDsKKyAgICBpbnQgICAgICAgbV9tYXhfeTsKKyAgICBib29sICAgICAgbV9zb3J0ZWQ7Cit9OworY2xhc3Mgc2NhbmxpbmVfaGl0X3Rlc3QgOiBwdWJsaWMgQ0ZYX09iamVjdAoreworcHVibGljOgorICAgIHNjYW5saW5lX2hpdF90ZXN0KGludCB4KSA6IG1feCh4KSwgbV9oaXQoZmFsc2UpIHt9CisgICAgdm9pZCByZXNldF9zcGFucygpIHt9CisgICAgdm9pZCBmaW5hbGl6ZShpbnQpIHt9CisgICAgdm9pZCBhZGRfY2VsbChpbnQgeCwgaW50KQorICAgIHsKKyAgICAgICAgaWYobV94ID09IHgpIHsKKyAgICAgICAgICAgIG1faGl0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGFkZF9zcGFuKGludCB4LCBpbnQgbGVuLCBpbnQpCisgICAgeworICAgICAgICBpZihtX3ggPj0geCAmJiBtX3ggPCB4ICsgbGVuKSB7CisgICAgICAgICAgICBtX2hpdCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgdW5zaWduZWQgbnVtX3NwYW5zKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBib29sIGhpdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9oaXQ7CisgICAgfQorcHJpdmF0ZToKKyAgICBpbnQgIG1feDsKKyAgICBib29sIG1faGl0OworfTsKK2VudW0gZmlsbGluZ19ydWxlX2UgeworICAgIGZpbGxfbm9uX3plcm8sCisgICAgZmlsbF9ldmVuX29kZAorfTsKK2NsYXNzIHJhc3Rlcml6ZXJfc2NhbmxpbmVfYWEgOiBwdWJsaWMgQ0ZYX09iamVjdAoreworICAgIGVudW0gc3RhdHVzIHsKKyAgICAgICAgc3RhdHVzX2luaXRpYWwsCisgICAgICAgIHN0YXR1c19saW5lX3RvLAorICAgICAgICBzdGF0dXNfY2xvc2VkCisgICAgfTsKK3B1YmxpYzoKKyAgICBlbnVtIGFhX3NjYWxlX2UgeworICAgICAgICBhYV9udW0gICA9IDEgPDwgOCwKKyAgICAgICAgYWFfbWFzayAgPSBhYV9udW0gLSAxLAorICAgICAgICBhYV8ybnVtICA9IGFhX251bSAqIDIsCisgICAgICAgIGFhXzJtYXNrID0gYWFfMm51bSAtIDEKKyAgICB9OworICAgIHJhc3Rlcml6ZXJfc2NhbmxpbmVfYWEoKSA6CisgICAgICAgIG1fZmlsbGluZ19ydWxlKGZpbGxfbm9uX3plcm8pLAorICAgICAgICBtX2NsaXBwZWRfc3RhcnRfeCgwKSwKKyAgICAgICAgbV9jbGlwcGVkX3N0YXJ0X3koMCksCisgICAgICAgIG1fc3RhdHVzKHN0YXR1c19pbml0aWFsKSwKKyAgICAgICAgbV9jbGlwcGluZyhmYWxzZSkKKyAgICB7CisgICAgfQorICAgIH5yYXN0ZXJpemVyX3NjYW5saW5lX2FhKCkge30KKyAgICB2b2lkIGZpbGxpbmdfcnVsZShmaWxsaW5nX3J1bGVfZSBmaWxsaW5nX3J1bGUpCisgICAgeworICAgICAgICBtX2ZpbGxpbmdfcnVsZSA9IGZpbGxpbmdfcnVsZTsKKyAgICB9CisgICAgaW50IG1pbl94KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dGxpbmUubWluX3goKTsKKyAgICB9CisgICAgaW50IG1pbl95KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dGxpbmUubWluX3koKTsKKyAgICB9CisgICAgaW50IG1heF94KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dGxpbmUubWF4X3goKTsKKyAgICB9CisgICAgaW50IG1heF95KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dGxpbmUubWF4X3koKTsKKyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBtX291dGxpbmUucmVzZXQoKTsKKyAgICAgICAgbV9zdGF0dXMgPSBzdGF0dXNfaW5pdGlhbDsKKyAgICB9CisgICAgdm9pZCBjbGlwX2JveChGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MikKKyAgICB7CisgICAgICAgIG1fY2xpcF9ib3ggPSByZWN0KHBvbHlfY29vcmQoeDEpLCBwb2x5X2Nvb3JkKHkxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcG9seV9jb29yZCh4MiksIHBvbHlfY29vcmQoeTIpKTsKKyAgICAgICAgbV9jbGlwX2JveC5ub3JtYWxpemUoKTsKKyAgICAgICAgbV9jbGlwcGluZyA9IHRydWU7CisgICAgfQorICAgIHZvaWQgYWRkX3ZlcnRleChGWF9GTE9BVCB4LCBGWF9GTE9BVCB5LCB1bnNpZ25lZCBjbWQpCisgICAgeworICAgICAgICBpZihpc19jbG9zZShjbWQpKSB7CisgICAgICAgICAgICBjbG9zZV9wb2x5Z29uKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZihpc19tb3ZlX3RvKGNtZCkpIHsKKyAgICAgICAgICAgICAgICBtb3ZlX3RvKHBvbHlfY29vcmQoeCksIHBvbHlfY29vcmQoeSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZihpc192ZXJ0ZXgoY21kKSkgeworICAgICAgICAgICAgICAgICAgICBsaW5lX3RvKHBvbHlfY29vcmQoeCksIHBvbHlfY29vcmQoeSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIG1vdmVfdG8oaW50IHgsIGludCB5KQorICAgIHsKKyAgICAgICAgaWYobV9jbGlwcGluZykgeworICAgICAgICAgICAgaWYobV9vdXRsaW5lLnNvcnRlZCgpKSB7CisgICAgICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKG1fc3RhdHVzID09IHN0YXR1c19saW5lX3RvKSB7CisgICAgICAgICAgICAgICAgY2xvc2VfcG9seWdvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9wcmV2X3ggPSBtX3N0YXJ0X3ggPSB4OworICAgICAgICAgICAgbV9wcmV2X3kgPSBtX3N0YXJ0X3kgPSB5OworICAgICAgICAgICAgbV9zdGF0dXMgPSBzdGF0dXNfaW5pdGlhbDsKKyAgICAgICAgICAgIG1fcHJldl9mbGFncyA9IGNsaXBwaW5nX2ZsYWdzKHgsIHksIG1fY2xpcF9ib3gpOworICAgICAgICAgICAgaWYobV9wcmV2X2ZsYWdzID09IDApIHsKKyAgICAgICAgICAgICAgICBtb3ZlX3RvX25vX2NsaXAoeCwgeSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb3ZlX3RvX25vX2NsaXAoeCwgeSk7CisgICAgICAgIH0KKyAgICB9CisgICAgdm9pZCBsaW5lX3RvKGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAgIGlmKG1fY2xpcHBpbmcpIHsKKyAgICAgICAgICAgIGNsaXBfc2VnbWVudCh4LCB5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxpbmVfdG9fbm9fY2xpcCh4LCB5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGNsb3NlX3BvbHlnb24oKQorICAgIHsKKyAgICAgICAgaWYgKG1fc3RhdHVzICE9IHN0YXR1c19saW5lX3RvKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYobV9jbGlwcGluZykgeworICAgICAgICAgICAgY2xpcF9zZWdtZW50KG1fc3RhcnRfeCwgbV9zdGFydF95KTsKKyAgICAgICAgfQorICAgICAgICBjbG9zZV9wb2x5Z29uX25vX2NsaXAoKTsKKyAgICB9CisgICAgQUdHX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVfYWxwaGEoaW50IGFyZWEsIGJvb2wgbm9fc21vb3RoKSBjb25zdAorICAgIHsKKyAgICAgICAgaW50IGNvdmVyID0gYXJlYSA+PiAocG9seV9iYXNlX3NoaWZ0ICogMiArIDEgLSA4KTsKKyAgICAgICAgaWYoY292ZXIgPCAwKSB7CisgICAgICAgICAgICBjb3ZlciA9IC1jb3ZlcjsKKyAgICAgICAgfQorICAgICAgICBpZihtX2ZpbGxpbmdfcnVsZSA9PSBmaWxsX2V2ZW5fb2RkKSB7CisgICAgICAgICAgICBjb3ZlciAmPSBhYV8ybWFzazsKKyAgICAgICAgICAgIGlmKGNvdmVyID4gYWFfbnVtKSB7CisgICAgICAgICAgICAgICAgY292ZXIgPSBhYV8ybnVtIC0gY292ZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vX3Ntb290aCkgeworICAgICAgICAgICAgY292ZXIgPSBjb3ZlciA+IGFhX21hc2sgLyAyID8gYWFfbWFzayA6IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYoY292ZXIgPiBhYV9tYXNrKSB7CisgICAgICAgICAgICBjb3ZlciA9IGFhX21hc2s7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvdmVyOworICAgIH0KKyAgICBBR0dfSU5MSU5FIHZvaWQgc29ydCgpCisgICAgeworICAgICAgICBtX291dGxpbmUuc29ydF9jZWxscygpOworICAgIH0KKyAgICBBR0dfSU5MSU5FIGJvb2wgcmV3aW5kX3NjYW5saW5lcygpCisgICAgeworICAgICAgICBjbG9zZV9wb2x5Z29uKCk7CisgICAgICAgIG1fb3V0bGluZS5zb3J0X2NlbGxzKCk7CisgICAgICAgIGlmKG1fb3V0bGluZS50b3RhbF9jZWxscygpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtX2N1cl95ID0gbV9vdXRsaW5lLm1pbl95KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBBR0dfSU5MSU5FIGJvb2wgbmF2aWdhdGVfc2NhbmxpbmUoaW50IHkpCisgICAgeworICAgICAgICBjbG9zZV9wb2x5Z29uKCk7CisgICAgICAgIG1fb3V0bGluZS5zb3J0X2NlbGxzKCk7CisgICAgICAgIGlmKG1fb3V0bGluZS50b3RhbF9jZWxscygpID09IDAgfHwKKyAgICAgICAgICAgICAgICB5IDwgbV9vdXRsaW5lLm1pbl95KCkgfHwKKyAgICAgICAgICAgICAgICB5ID4gbV9vdXRsaW5lLm1heF95KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtX2N1cl95ID0geTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIFNjYW5saW5lPiBib29sIHN3ZWVwX3NjYW5saW5lKFNjYW5saW5lJiBzbCwgYm9vbCBub19zbW9vdGgpCisgICAgeworICAgICAgICBmb3IoOzspIHsKKyAgICAgICAgICAgIGlmKG1fY3VyX3kgPiBtX291dGxpbmUubWF4X3koKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNsLnJlc2V0X3NwYW5zKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1fY2VsbHMgPSBtX291dGxpbmUuc2NhbmxpbmVfbnVtX2NlbGxzKG1fY3VyX3kpOworICAgICAgICAgICAgY29uc3QgY2VsbF9hYSogY29uc3QqIGNlbGxzID0gbV9vdXRsaW5lLnNjYW5saW5lX2NlbGxzKG1fY3VyX3kpOworICAgICAgICAgICAgaW50IGNvdmVyID0gMDsKKyAgICAgICAgICAgIHdoaWxlKG51bV9jZWxscykgeworICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxfYWEqIGN1cl9jZWxsID0gKmNlbGxzOworICAgICAgICAgICAgICAgIGludCB4ICAgID0gY3VyX2NlbGwtPng7CisgICAgICAgICAgICAgICAgaW50IGFyZWEgPSBjdXJfY2VsbC0+YXJlYTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYTsKKyAgICAgICAgICAgICAgICBjb3ZlciArPSBjdXJfY2VsbC0+Y292ZXI7CisgICAgICAgICAgICAgICAgd2hpbGUoLS1udW1fY2VsbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY3VyX2NlbGwgPSAqKytjZWxsczsKKyAgICAgICAgICAgICAgICAgICAgaWYoY3VyX2NlbGwtPnggIT0geCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYXJlYSAgKz0gY3VyX2NlbGwtPmFyZWE7CisgICAgICAgICAgICAgICAgICAgIGNvdmVyICs9IGN1cl9jZWxsLT5jb3ZlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYoYXJlYSkgeworICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IGNhbGN1bGF0ZV9hbHBoYSgoY292ZXIgPDwgKHBvbHlfYmFzZV9zaGlmdCArIDEpKSAtIGFyZWEsIG5vX3Ntb290aCk7CisgICAgICAgICAgICAgICAgICAgIGlmKGFscGhhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbC5hZGRfY2VsbCh4LCBhbHBoYSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgeCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZihudW1fY2VsbHMgJiYgY3VyX2NlbGwtPnggPiB4KSB7CisgICAgICAgICAgICAgICAgICAgIGFscGhhID0gY2FsY3VsYXRlX2FscGhhKGNvdmVyIDw8IChwb2x5X2Jhc2Vfc2hpZnQgKyAxKSwgbm9fc21vb3RoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYoYWxwaGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsLmFkZF9zcGFuKHgsIGN1cl9jZWxsLT54IC0geCwgYWxwaGEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoc2wubnVtX3NwYW5zKCkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrbV9jdXJfeTsKKyAgICAgICAgfQorICAgICAgICBzbC5maW5hbGl6ZShtX2N1cl95KTsKKyAgICAgICAgKyttX2N1cl95OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVmVydGV4U291cmNlPgorICAgIHZvaWQgYWRkX3BhdGgoVmVydGV4U291cmNlJiB2cywgdW5zaWduZWQgcGF0aF9pZCA9IDApCisgICAgeworICAgICAgICBGWF9GTE9BVCB4OworICAgICAgICBGWF9GTE9BVCB5OworICAgICAgICB1bnNpZ25lZCBjbWQ7CisgICAgICAgIHZzLnJld2luZChwYXRoX2lkKTsKKyAgICAgICAgd2hpbGUoIWlzX3N0b3AoY21kID0gdnMudmVydGV4KCZ4LCAmeSkpKSB7CisgICAgICAgICAgICBhZGRfdmVydGV4KHgsIHksIGNtZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVmVydGV4U291cmNlPgorICAgIHZvaWQgYWRkX3BhdGhfdHJhbnNmb3JtZWQoVmVydGV4U291cmNlJiB2cywgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgdW5zaWduZWQgcGF0aF9pZCA9IDApCisgICAgeworICAgICAgICBGWF9GTE9BVCB4OworICAgICAgICBGWF9GTE9BVCB5OworICAgICAgICB1bnNpZ25lZCBjbWQ7CisgICAgICAgIHZzLnJld2luZChwYXRoX2lkKTsKKyAgICAgICAgd2hpbGUoIWlzX3N0b3AoY21kID0gdnMudmVydGV4KCZ4LCAmeSkpKSB7CisgICAgICAgICAgICBpZiAocE1hdHJpeCkgeworICAgICAgICAgICAgICAgIHBNYXRyaXgtPlRyYW5zZm9ybSh4LCB5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkZF92ZXJ0ZXgoeCwgeSwgY21kKTsKKyAgICAgICAgfQorICAgIH0KK3ByaXZhdGU6CisgICAgcmFzdGVyaXplcl9zY2FubGluZV9hYShjb25zdCByYXN0ZXJpemVyX3NjYW5saW5lX2FhJik7CisgICAgY29uc3QgcmFzdGVyaXplcl9zY2FubGluZV9hYSYKKyAgICBvcGVyYXRvciA9IChjb25zdCByYXN0ZXJpemVyX3NjYW5saW5lX2FhJik7CisgICAgdm9pZCBtb3ZlX3RvX25vX2NsaXAoaW50IHgsIGludCB5KQorICAgIHsKKyAgICAgICAgaWYobV9zdGF0dXMgPT0gc3RhdHVzX2xpbmVfdG8pIHsKKyAgICAgICAgICAgIGNsb3NlX3BvbHlnb25fbm9fY2xpcCgpOworICAgICAgICB9CisgICAgICAgIG1fb3V0bGluZS5tb3ZlX3RvKHggKiAxLCB5KTsKKyAgICAgICAgbV9jbGlwcGVkX3N0YXJ0X3ggPSB4OworICAgICAgICBtX2NsaXBwZWRfc3RhcnRfeSA9IHk7CisgICAgICAgIG1fc3RhdHVzID0gc3RhdHVzX2xpbmVfdG87CisgICAgfQorICAgIHZvaWQgbGluZV90b19ub19jbGlwKGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAgIGlmKG1fc3RhdHVzICE9IHN0YXR1c19pbml0aWFsKSB7CisgICAgICAgICAgICBtX291dGxpbmUubGluZV90byh4ICogMSwgeSk7CisgICAgICAgICAgICBtX3N0YXR1cyA9IHN0YXR1c19saW5lX3RvOworICAgICAgICB9CisgICAgfQorICAgIHZvaWQgY2xvc2VfcG9seWdvbl9ub19jbGlwKCkKKyAgICB7CisgICAgICAgIGlmKG1fc3RhdHVzID09IHN0YXR1c19saW5lX3RvKSB7CisgICAgICAgICAgICBtX291dGxpbmUubGluZV90byhtX2NsaXBwZWRfc3RhcnRfeCAqIDEsIG1fY2xpcHBlZF9zdGFydF95KTsKKyAgICAgICAgICAgIG1fc3RhdHVzID0gc3RhdHVzX2Nsb3NlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGNsaXBfc2VnbWVudChpbnQgeCwgaW50IHkpCisgICAgeworICAgICAgICB1bnNpZ25lZCBmbGFncyA9IGNsaXBwaW5nX2ZsYWdzKHgsIHksIG1fY2xpcF9ib3gpOworICAgICAgICBpZihtX3ByZXZfZmxhZ3MgPT0gZmxhZ3MpIHsKKyAgICAgICAgICAgIGlmKGZsYWdzID09IDApIHsKKyAgICAgICAgICAgICAgICBpZihtX3N0YXR1cyA9PSBzdGF0dXNfaW5pdGlhbCkgeworICAgICAgICAgICAgICAgICAgICBtb3ZlX3RvX25vX2NsaXAoeCwgeSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbGluZV90b19ub19jbGlwKHgsIHkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBjeFs0XTsKKyAgICAgICAgICAgIGludCBjeVs0XTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG4gPSBjbGlwX2xpYW5nX2JhcnNreShtX3ByZXZfeCwgbV9wcmV2X3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NsaXBfYm94LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4LCBjeSk7CisgICAgICAgICAgICBjb25zdCBpbnQqIHB4ID0gY3g7CisgICAgICAgICAgICBjb25zdCBpbnQqIHB5ID0gY3k7CisgICAgICAgICAgICB3aGlsZShuLS0pIHsKKyAgICAgICAgICAgICAgICBpZihtX3N0YXR1cyA9PSBzdGF0dXNfaW5pdGlhbCkgeworICAgICAgICAgICAgICAgICAgICBtb3ZlX3RvX25vX2NsaXAoKnB4KyssICpweSsrKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBsaW5lX3RvX25vX2NsaXAoKnB4KyssICpweSsrKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9wcmV2X2ZsYWdzID0gZmxhZ3M7CisgICAgICAgIG1fcHJldl94ID0geDsKKyAgICAgICAgbV9wcmV2X3kgPSB5OworICAgIH0KK3ByaXZhdGU6CisgICAgb3V0bGluZV9hYSAgICAgbV9vdXRsaW5lOworICAgIGZpbGxpbmdfcnVsZV9lIG1fZmlsbGluZ19ydWxlOworICAgIGludCAgICAgICAgICAgIG1fY2xpcHBlZF9zdGFydF94OworICAgIGludCAgICAgICAgICAgIG1fY2xpcHBlZF9zdGFydF95OworICAgIGludCAgICAgICAgICAgIG1fc3RhcnRfeDsKKyAgICBpbnQgICAgICAgICAgICBtX3N0YXJ0X3k7CisgICAgaW50ICAgICAgICAgICAgbV9wcmV2X3g7CisgICAgaW50ICAgICAgICAgICAgbV9wcmV2X3k7CisgICAgdW5zaWduZWQgICAgICAgbV9wcmV2X2ZsYWdzOworICAgIHVuc2lnbmVkICAgICAgIG1fc3RhdHVzOworICAgIHJlY3QgICAgICAgICAgIG1fY2xpcF9ib3g7CisgICAgYm9vbCAgICAgICAgICAgbV9jbGlwcGluZzsKKyAgICBpbnQgICAgICAgICAgICBtX2N1cl95OworfTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX3JlbmRlcl9zY2FubGluZXMuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19yZW5kZXJfc2NhbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRmZDZkMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19yZW5kZXJfc2NhbmxpbmVzLmgKQEAgLTAsMCArMSw1MCBAQAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFudGktR3JhaW4gR2VvbWV0cnkgLSBWZXJzaW9uIDIuMworLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUgTWF4aW0gU2hlbWFuYXJldiAoaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tKQorLy8KKy8vIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorLy8gaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgorLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisvLyB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmbmRlZiBBR0dfUkVOREVSX1NDQU5MSU5FU19JTkNMVURFRAorI2RlZmluZSBBR0dfUkVOREVSX1NDQU5MSU5FU19JTkNMVURFRAorI2luY2x1ZGUgImFnZ19iYXNpY3MuaCIKK25hbWVzcGFjZSBhZ2cKK3sKK3RlbXBsYXRlPGNsYXNzIFJhc3Rlcml6ZXIsIGNsYXNzIFNjYW5saW5lLCBjbGFzcyBSZW5kZXJlcj4KK3ZvaWQgcmVuZGVyX3NjYW5saW5lcyhSYXN0ZXJpemVyJiByYXMsIFNjYW5saW5lJiBzbCwgUmVuZGVyZXImIHJlbiwgYm9vbCBub19zbW9vdGgpCit7CisgICAgaWYocmFzLnJld2luZF9zY2FubGluZXMoKSkgeworICAgICAgICBzbC5yZXNldChyYXMubWluX3goKSwgcmFzLm1heF94KCkpOworICAgICAgICByZW4ucHJlcGFyZSh1bnNpZ25lZChyYXMubWF4X3goKSAtIHJhcy5taW5feCgpICsgMikpOworICAgICAgICB3aGlsZShyYXMuc3dlZXBfc2NhbmxpbmUoc2wsIG5vX3Ntb290aCkpIHsKKyAgICAgICAgICAgIHJlbi5yZW5kZXIoc2wpOworICAgICAgICB9CisgICAgfQorfQordGVtcGxhdGU8Y2xhc3MgUmFzdGVyaXplciwgY2xhc3MgU2NhbmxpbmUsIGNsYXNzIFJlbmRlcmVyLAorICAgICAgICAgY2xhc3MgVmVydGV4U291cmNlLCBjbGFzcyBDb2xvclN0b3JhZ2UsIGNsYXNzIFBhdGhJZD4KK3ZvaWQgcmVuZGVyX2FsbF9wYXRocyhSYXN0ZXJpemVyJiByYXMsCisgICAgICAgICAgICAgICAgICAgICAgU2NhbmxpbmUmIHNsLAorICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyJiByLAorICAgICAgICAgICAgICAgICAgICAgIFZlcnRleFNvdXJjZSYgdnMsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3JTdG9yYWdlJiBhcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXRoSWQmIHBhdGhfaWQsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtX3BhdGhzKQoreworICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IG51bV9wYXRoczsgaSsrKSB7CisgICAgICAgIHJhcy5yZXNldCgpOworICAgICAgICByYXMuYWRkX3BhdGgodnMsIHBhdGhfaWRbaV0pOworICAgICAgICByLmNvbG9yKGFzW2ldKTsKKyAgICAgICAgcmVuZGVyX3NjYW5saW5lcyhyYXMsIHNsLCByKTsKKyAgICB9Cit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19yZW5kZXJlcl9iYXNlLmggYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfcmVuZGVyZXJfYmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMjBhNmQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfcmVuZGVyZXJfYmFzZS5oCkBAIC0wLDAgKzEsMTYzIEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29udGFjdDogbWNzZWVtQGFudGlncmFpbi5jb20KKy8vICAgICAgICAgIG1jc2VlbWFnZ0B5YWhvby5jb20KKy8vICAgICAgICAgIGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gY2xhc3MgcmVuZGVyZXJfYmFzZQorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmbmRlZiBBR0dfUkVOREVSRVJfQkFTRV9JTkNMVURFRAorI2RlZmluZSBBR0dfUkVOREVSRVJfQkFTRV9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19iYXNpY3MuaCIKKyNpbmNsdWRlICJhZ2dfcmVuZGVyaW5nX2J1ZmZlci5oIgorbmFtZXNwYWNlIGFnZworewordGVtcGxhdGU8Y2xhc3MgUGl4ZWxGb3JtYXQ+IGNsYXNzIHJlbmRlcmVyX2Jhc2UgOiBwdWJsaWMgQ0ZYX09iamVjdAoreworcHVibGljOgorICAgIHR5cGVkZWYgUGl4ZWxGb3JtYXQgcGl4Zm10X3R5cGU7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBwaXhmbXRfdHlwZTo6Y29sb3JfdHlwZSBjb2xvcl90eXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgcGl4Zm10X3R5cGU6OnJvd19kYXRhIHJvd19kYXRhOworICAgIHR5cGVkZWYgdHlwZW5hbWUgcGl4Zm10X3R5cGU6OnNwYW5fZGF0YSBzcGFuX2RhdGE7CisgICAgcmVuZGVyZXJfYmFzZSgpIDogbV9yZW4oMCksIG1fY2xpcF9ib3goMSwgMSwgMCwgMCkge30KKyAgICByZW5kZXJlcl9iYXNlKHBpeGZtdF90eXBlJiByZW4pIDoKKyAgICAgICAgbV9yZW4oJnJlbiksCisgICAgICAgIG1fY2xpcF9ib3goMCwgMCwgcmVuLndpZHRoKCkgLSAxLCByZW4uaGVpZ2h0KCkgLSAxKQorICAgIHt9CisgICAgdm9pZCBhdHRhY2gocGl4Zm10X3R5cGUmIHJlbikKKyAgICB7CisgICAgICAgIG1fcmVuID0gJnJlbjsKKyAgICAgICAgbV9jbGlwX2JveCA9IHJlY3QoMCwgMCwgcmVuLndpZHRoKCkgLSAxLCByZW4uaGVpZ2h0KCkgLSAxKTsKKyAgICB9CisgICAgY29uc3QgcGl4Zm10X3R5cGUmIHJlbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKm1fcmVuOworICAgIH0KKyAgICBwaXhmbXRfdHlwZSYgcmVuKCkKKyAgICB7CisgICAgICAgIHJldHVybiAqbV9yZW47CisgICAgfQorICAgIHVuc2lnbmVkIHdpZHRoKCkgIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9yZW4tPndpZHRoKCk7CisgICAgfQorICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9yZW4tPmhlaWdodCgpOworICAgIH0KKyAgICB2b2lkIGZpcnN0X2NsaXBfYm94KCkge30KKyAgICBib29sIG5leHRfY2xpcF9ib3goKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBjb25zdCByZWN0JiBjbGlwX2JveCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jbGlwX2JveDsKKyAgICB9CisgICAgaW50ICAgICAgICAgeG1pbigpICAgICBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2xpcF9ib3gueDE7CisgICAgfQorICAgIGludCAgICAgICAgIHltaW4oKSAgICAgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NsaXBfYm94LnkxOworICAgIH0KKyAgICBpbnQgICAgICAgICB4bWF4KCkgICAgIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jbGlwX2JveC54MjsKKyAgICB9CisgICAgaW50ICAgICAgICAgeW1heCgpICAgICBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2xpcF9ib3gueTI7CisgICAgfQorICAgIGNvbnN0IHJlY3QmIGJvdW5kaW5nX2NsaXBfYm94KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NsaXBfYm94OworICAgIH0KKyAgICBpbnQgICAgICAgICBib3VuZGluZ194bWluKCkgICAgIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jbGlwX2JveC54MTsKKyAgICB9CisgICAgaW50ICAgICAgICAgYm91bmRpbmdfeW1pbigpICAgICBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2xpcF9ib3gueTE7CisgICAgfQorICAgIGludCAgICAgICAgIGJvdW5kaW5nX3htYXgoKSAgICAgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NsaXBfYm94LngyOworICAgIH0KKyAgICBpbnQgICAgICAgICBib3VuZGluZ195bWF4KCkgICAgIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jbGlwX2JveC55MjsKKyAgICB9CisgICAgdm9pZCBibGVuZF9obGluZShpbnQgeDEsIGludCB5LCBpbnQgeDIsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvcl90eXBlJiBjLCBjb3Zlcl90eXBlIGNvdmVyKQorICAgIHsKKyAgICAgICAgaWYoeDEgPiB4MikgeworICAgICAgICAgICAgaW50IHQgPSB4MjsKKyAgICAgICAgICAgIHgyID0geDE7CisgICAgICAgICAgICB4MSA9IHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYoeSAgPiB5bWF4KCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZih5ICA8IHltaW4oKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmKHgxID4geG1heCgpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYoeDIgPCB4bWluKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZih4MSA8IHhtaW4oKSkgeworICAgICAgICAgICAgeDEgPSB4bWluKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYoeDIgPiB4bWF4KCkpIHsKKyAgICAgICAgICAgIHgyID0geG1heCgpOworICAgICAgICB9CisgICAgICAgIG1fcmVuLT5ibGVuZF9obGluZSh4MSwgeSwgeDIgLSB4MSArIDEsIGMsIGNvdmVyKTsKKyAgICB9CisgICAgdm9pZCBibGVuZF9zb2xpZF9oc3BhbihpbnQgeCwgaW50IHksIGludCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvcl90eXBlJiBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY292ZXJfdHlwZSogY292ZXJzKQorICAgIHsKKyAgICAgICAgaWYoeSA+IHltYXgoKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmKHkgPCB5bWluKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZih4IDwgeG1pbigpKSB7CisgICAgICAgICAgICBsZW4gLT0geG1pbigpIC0geDsKKyAgICAgICAgICAgIGlmKGxlbiA8PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY292ZXJzICs9IHhtaW4oKSAtIHg7CisgICAgICAgICAgICB4ID0geG1pbigpOworICAgICAgICB9CisgICAgICAgIGlmKHggKyBsZW4gPiB4bWF4KCkpIHsKKyAgICAgICAgICAgIGxlbiA9IHhtYXgoKSAtIHggKyAxOworICAgICAgICAgICAgaWYobGVuIDw9IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9yZW4tPmJsZW5kX3NvbGlkX2hzcGFuKHgsIHksIGxlbiwgYywgY292ZXJzKTsKKyAgICB9Citwcml2YXRlOgorICAgIHBpeGZtdF90eXBlKiBtX3JlbjsKKyAgICByZWN0ICAgICAgICAgbV9jbGlwX2JveDsKK307Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19yZW5kZXJlcl9zY2FubGluZS5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX3JlbmRlcmVyX3NjYW5saW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAyYjZiNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19yZW5kZXJlcl9zY2FubGluZS5oCkBAIC0wLDAgKzEsOTMgQEAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBbnRpLUdyYWluIEdlb21ldHJ5IC0gVmVyc2lvbiAyLjMKKy8vIENvcHlyaWdodCAoQykgMjAwMi0yMDA1IE1heGltIFNoZW1hbmFyZXYgKGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbSkKKy8vCisvLyBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKKy8vIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KKy8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorLy8gd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb250YWN0OiBtY3NlZW1AYW50aWdyYWluLmNvbQorLy8gICAgICAgICAgbWNzZWVtYWdnQHlhaG9vLmNvbQorLy8gICAgICAgICAgaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNpZm5kZWYgQUdHX1JFTkRFUkVSX1NDQU5MSU5FX0lOQ0xVREVECisjZGVmaW5lIEFHR19SRU5ERVJFUl9TQ0FOTElORV9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19iYXNpY3MuaCIKKyNpbmNsdWRlICJhZ2dfcmVuZGVyZXJfYmFzZS5oIgorI2luY2x1ZGUgImFnZ19yZW5kZXJfc2NhbmxpbmVzLmgiCituYW1lc3BhY2UgYWdnCit7Cit0ZW1wbGF0ZTxjbGFzcyBCYXNlUmVuZGVyZXIsIGNsYXNzIFNwYW5HZW5lcmF0b3I+IGNsYXNzIHJlbmRlcmVyX3NjYW5saW5lX2FhIDogcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEJhc2VSZW5kZXJlciAgYmFzZV9yZW5fdHlwZTsKKyAgICB0eXBlZGVmIFNwYW5HZW5lcmF0b3Igc3Bhbl9nZW5fdHlwZTsKKyAgICByZW5kZXJlcl9zY2FubGluZV9hYSgpIDogbV9yZW4oMCksIG1fc3Bhbl9nZW4oMCkge30KKyAgICByZW5kZXJlcl9zY2FubGluZV9hYShiYXNlX3Jlbl90eXBlJiByZW4sIHNwYW5fZ2VuX3R5cGUmIHNwYW5fZ2VuKSA6CisgICAgICAgIG1fcmVuKCZyZW4pLAorICAgICAgICBtX3NwYW5fZ2VuKCZzcGFuX2dlbikKKyAgICB7fQorICAgIHZvaWQgYXR0YWNoKGJhc2VfcmVuX3R5cGUmIHJlbiwgc3Bhbl9nZW5fdHlwZSYgc3Bhbl9nZW4pCisgICAgeworICAgICAgICBtX3JlbiA9ICZyZW47CisgICAgICAgIG1fc3Bhbl9nZW4gPSAmc3Bhbl9nZW47CisgICAgfQorICAgIHZvaWQgcHJlcGFyZSh1bnNpZ25lZCBtYXhfc3Bhbl9sZW4pCisgICAgeworICAgICAgICBtX3NwYW5fZ2VuLT5wcmVwYXJlKG1heF9zcGFuX2xlbik7CisgICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIFNjYW5saW5lPiB2b2lkIHJlbmRlcihjb25zdCBTY2FubGluZSYgc2wpCisgICAgeworICAgICAgICBpbnQgeSA9IHNsLnkoKTsKKyAgICAgICAgbV9yZW4tPmZpcnN0X2NsaXBfYm94KCk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGludCB4bWluID0gbV9yZW4tPnhtaW4oKTsKKyAgICAgICAgICAgIGludCB4bWF4ID0gbV9yZW4tPnhtYXgoKTsKKyAgICAgICAgICAgIGlmKHkgPj0gbV9yZW4tPnltaW4oKSAmJiB5IDw9IG1fcmVuLT55bWF4KCkpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1fc3BhbnMgPSBzbC5udW1fc3BhbnMoKTsKKyAgICAgICAgICAgICAgICB0eXBlbmFtZSBTY2FubGluZTo6Y29uc3RfaXRlcmF0b3Igc3BhbiA9IHNsLmJlZ2luKCk7CisgICAgICAgICAgICAgICAgZm9yKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIGludCB4ID0gc3Bhbi0+eDsKKyAgICAgICAgICAgICAgICAgICAgaW50IGxlbiA9IHNwYW4tPmxlbjsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBzb2xpZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBTY2FubGluZTo6Y292ZXJfdHlwZSogY292ZXJzID0gc3Bhbi0+Y292ZXJzOworICAgICAgICAgICAgICAgICAgICBpZihsZW4gPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzb2xpZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAtbGVuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmKHggPCB4bWluKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0geG1pbiAtIHg7CisgICAgICAgICAgICAgICAgICAgICAgICBpZighc29saWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3ZlcnMgKz0geG1pbiAtIHg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0geG1pbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZihsZW4gPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih4ICsgbGVuID4geG1heCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHhtYXggLSB4ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxlbiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Jlbi0+YmxlbmRfY29sb3JfaHNwYW5fbm9fY2xpcCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NwYW5fZ2VuLT5nZW5lcmF0ZSh4LCB5LCBsZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2xpZCA/IDAgOiBjb3ZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb3ZlcnMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmKC0tbnVtX3NwYW5zID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICsrc3BhbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUobV9yZW4tPm5leHRfY2xpcF9ib3goKSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBiYXNlX3Jlbl90eXBlKiBtX3JlbjsKKyAgICBTcGFuR2VuZXJhdG9yKiBtX3NwYW5fZ2VuOworfTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX3JlbmRlcmluZ19idWZmZXIuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19yZW5kZXJpbmdfYnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE4NjgxYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19yZW5kZXJpbmdfYnVmZmVyLmgKQEAgLTAsMCArMSwxNDUgQEAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBbnRpLUdyYWluIEdlb21ldHJ5IC0gVmVyc2lvbiAyLjMKKy8vIENvcHlyaWdodCAoQykgMjAwMi0yMDA1IE1heGltIFNoZW1hbmFyZXYgKGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbSkKKy8vCisvLyBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKKy8vIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KKy8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorLy8gd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb250YWN0OiBtY3NlZW1AYW50aWdyYWluLmNvbQorLy8gICAgICAgICAgbWNzZWVtYWdnQHlhaG9vLmNvbQorLy8gICAgICAgICAgaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBjbGFzcyByZW5kZXJpbmdfYnVmZmVyCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaWZuZGVmIEFHR19SRU5ERVJJTkdfQlVGRkVSX0lOQ0xVREVECisjZGVmaW5lIEFHR19SRU5ERVJJTkdfQlVGRkVSX0lOQ0xVREVECisjaW5jbHVkZSAiYWdnX2Jhc2ljcy5oIgorbmFtZXNwYWNlIGFnZworeworY2xhc3MgcmVuZGVyaW5nX2J1ZmZlciA6IHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgc3RydWN0IHJvd19kYXRhIDogcHVibGljIENGWF9PYmplY3QgeworICAgICAgICBpbnQgeDEsIHgyOworICAgICAgICBjb25zdCBpbnQ4dSogcHRyOworICAgICAgICByb3dfZGF0YSgpIHt9CisgICAgICAgIHJvd19kYXRhKGludCB4MV8sIGludCB4Ml8sIGNvbnN0IGludDh1KiBwdHJfKSA6CisgICAgICAgICAgICB4MSh4MV8pLCB4Mih4Ml8pLCBwdHIocHRyXykge30KKyAgICB9OworICAgIHN0cnVjdCBzcGFuX2RhdGEgOiBwdWJsaWMgQ0ZYX09iamVjdCB7CisgICAgICAgIGludCB4OworICAgICAgICB1bnNpZ25lZCBsZW47CisgICAgICAgIGludDh1KiBwdHI7CisgICAgICAgIHNwYW5fZGF0YSgpIHt9CisgICAgICAgIHNwYW5fZGF0YShpbnQpIDogeCgwKSwgbGVuKDApLCBwdHIoMCkge30KKyAgICAgICAgc3Bhbl9kYXRhKGludCB4XywgdW5zaWduZWQgbGVuXywgaW50OHUqIHB0cl8pIDoKKyAgICAgICAgICAgIHgoeF8pLCBsZW4obGVuXyksIHB0cihwdHJfKSB7fQorICAgIH07CisgICAgfnJlbmRlcmluZ19idWZmZXIoKQorICAgIHsKKyAgICAgICAgRlhfRnJlZShtX3Jvd3MpOworICAgIH0KKyAgICByZW5kZXJpbmdfYnVmZmVyKCkgOgorICAgICAgICBtX2J1ZigwKSwKKyAgICAgICAgbV9yb3dzKDApLAorICAgICAgICBtX3dpZHRoKDApLAorICAgICAgICBtX2hlaWdodCgwKSwKKyAgICAgICAgbV9zdHJpZGUoMCksCisgICAgICAgIG1fbWF4X2hlaWdodCgwKQorICAgIHsKKyAgICB9CisgICAgcmVuZGVyaW5nX2J1ZmZlcihpbnQ4dSogYnVmLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBpbnQgc3RyaWRlKSA6CisgICAgICAgIG1fYnVmKDApLAorICAgICAgICBtX3Jvd3MoMCksCisgICAgICAgIG1fd2lkdGgoMCksCisgICAgICAgIG1faGVpZ2h0KDApLAorICAgICAgICBtX3N0cmlkZSgwKSwKKyAgICAgICAgbV9tYXhfaGVpZ2h0KDApCisgICAgeworICAgICAgICBhdHRhY2goYnVmLCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUpOworICAgIH0KKyAgICB2b2lkIGF0dGFjaChpbnQ4dSogYnVmLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBpbnQgc3RyaWRlKQorICAgIHsKKyAgICAgICAgbV9idWYgPSBidWY7CisgICAgICAgIG1fd2lkdGggPSB3aWR0aDsKKyAgICAgICAgbV9oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1fc3RyaWRlID0gc3RyaWRlOworICAgICAgICBpZihoZWlnaHQgPiBtX21heF9oZWlnaHQpIHsKKyAgICAgICAgICAgIEZYX0ZyZWUobV9yb3dzKTsKKyAgICAgICAgICAgIG1fcm93cyA9IEZYX0FsbG9jKGludDh1KiwgbV9tYXhfaGVpZ2h0ID0gaGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAgICBpbnQ4dSogcm93X3B0ciA9IG1fYnVmOworICAgICAgICBpZihzdHJpZGUgPCAwKSB7CisgICAgICAgICAgICByb3dfcHRyID0gbV9idWYgLSBpbnQoaGVpZ2h0IC0gMSkgKiBzdHJpZGU7CisgICAgICAgIH0KKyAgICAgICAgaW50OHUqKiByb3dzID0gbV9yb3dzOworICAgICAgICB3aGlsZShoZWlnaHQtLSkgeworICAgICAgICAgICAgKnJvd3MrKyA9IHJvd19wdHI7CisgICAgICAgICAgICByb3dfcHRyICs9IHN0cmlkZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpbnQ4dSogYnVmKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2J1ZjsKKyAgICB9CisgICAgY29uc3QgaW50OHUqIGJ1ZigpICAgIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9idWY7CisgICAgfQorICAgIHVuc2lnbmVkIHdpZHRoKCkgIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV93aWR0aDsKKyAgICB9CisgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hlaWdodDsKKyAgICB9CisgICAgaW50ICAgICAgc3RyaWRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0cmlkZTsKKyAgICB9CisgICAgdW5zaWduZWQgc3RyaWRlX2FicygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKG1fc3RyaWRlIDwgMCkgPworICAgICAgICAgICAgICAgdW5zaWduZWQoLW1fc3RyaWRlKSA6CisgICAgICAgICAgICAgICB1bnNpZ25lZChtX3N0cmlkZSk7CisgICAgfQorICAgIGludDh1KiByb3codW5zaWduZWQgeSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Jvd3NbeV07CisgICAgfQorICAgIGNvbnN0IGludDh1KiByb3codW5zaWduZWQgeSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Jvd3NbeV07CisgICAgfQorICAgIGludDh1KiBuZXh0X3Jvdyh2b2lkKiBwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChpbnQ4dSopcCArIG1fc3RyaWRlOworICAgIH0KKyAgICBjb25zdCBpbnQ4dSogbmV4dF9yb3coY29uc3Qgdm9pZCogcCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoaW50OHUqKXAgKyBtX3N0cmlkZTsKKyAgICB9CisgICAgaW50OHUgY29uc3QqIGNvbnN0KiByb3dzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Jvd3M7CisgICAgfQorcHJpdmF0ZToKKyAgICByZW5kZXJpbmdfYnVmZmVyKGNvbnN0IHJlbmRlcmluZ19idWZmZXImKTsKKyAgICBjb25zdCByZW5kZXJpbmdfYnVmZmVyJiBvcGVyYXRvciA9IChjb25zdCByZW5kZXJpbmdfYnVmZmVyJik7Citwcml2YXRlOgorICAgIGludDh1KiAgICAgICBtX2J1ZjsKKyAgICBpbnQ4dSoqICAgICAgbV9yb3dzOworICAgIHVuc2lnbmVkIG1fd2lkdGg7CisgICAgdW5zaWduZWQgbV9oZWlnaHQ7CisgICAgaW50ICAgICAgbV9zdHJpZGU7CisgICAgdW5zaWduZWQgbV9tYXhfaGVpZ2h0OworfTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX3NjYW5saW5lX3UuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19zY2FubGluZV91LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk5ZmVlZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19zY2FubGluZV91LmgKQEAgLTAsMCArMSwxNTAgQEAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBbnRpLUdyYWluIEdlb21ldHJ5IC0gVmVyc2lvbiAyLjMKKy8vIENvcHlyaWdodCAoQykgMjAwMi0yMDA1IE1heGltIFNoZW1hbmFyZXYgKGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbSkKKy8vCisvLyBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKKy8vIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KKy8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorLy8gd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb250YWN0OiBtY3NlZW1AYW50aWdyYWluLmNvbQorLy8gICAgICAgICAgbWNzZWVtYWdnQHlhaG9vLmNvbQorLy8gICAgICAgICAgaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBBZGFwdGF0aW9uIGZvciAzMi1iaXQgc2NyZWVuIGNvb3JkaW5hdGVzIChzY2FubGluZTMyX3UpIGhhcyBiZWVuIHNwb25zb3JlZCBieQorLy8gTGliZXJ0eSBUZWNobm9sb2d5IFN5c3RlbXMsIEluYy4sIHZpc2l0IGh0dHA6Ly9saWItc3lzLmNvbQorLy8KKy8vIExpYmVydHkgVGVjaG5vbG9neSBTeXN0ZW1zLCBJbmMuIGlzIHRoZSBwcm92aWRlciBvZgorLy8gUG9zdFNjcmlwdCBhbmQgUERGIHRlY2hub2xvZ3kgZm9yIHNvZnR3YXJlIGRldmVsb3BlcnMuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaWZuZGVmIEFHR19TQ0FOTElORV9VX0lOQ0xVREVECisjZGVmaW5lIEFHR19TQ0FOTElORV9VX0lOQ0xVREVECisjaW5jbHVkZSAiYWdnX2FycmF5LmgiCituYW1lc3BhY2UgYWdnCit7Cit0ZW1wbGF0ZTxjbGFzcyBDb3ZlclQ+IGNsYXNzIHNjYW5saW5lX3UgOiBwdWJsaWMgQ0ZYX09iamVjdAoreworcHVibGljOgorICAgIHR5cGVkZWYgc2NhbmxpbmVfdTxDb3ZlclQ+IHNlbGZfdHlwZTsKKyAgICB0eXBlZGVmIENvdmVyVCBjb3Zlcl90eXBlOworICAgIHR5cGVkZWYgaW50MTYgIGNvb3JkX3R5cGU7CisgICAgc3RydWN0IHNwYW4gOiBwdWJsaWMgQ0ZYX09iamVjdCB7CisgICAgICAgIGNvb3JkX3R5cGUgIHg7CisgICAgICAgIGNvb3JkX3R5cGUgIGxlbjsKKyAgICAgICAgY292ZXJfdHlwZSogY292ZXJzOworICAgIH07CisgICAgdHlwZWRlZiBzcGFuKiBpdGVyYXRvcjsKKyAgICB0eXBlZGVmIGNvbnN0IHNwYW4qIGNvbnN0X2l0ZXJhdG9yOworICAgIH5zY2FubGluZV91KCkKKyAgICB7CisgICAgICAgIEZYX0ZyZWUobV9zcGFucyk7CisgICAgICAgIEZYX0ZyZWUobV9jb3ZlcnMpOworICAgIH0KKyAgICBzY2FubGluZV91KCkgOgorICAgICAgICBtX21pbl94KDApLAorICAgICAgICBtX21heF9sZW4oMCksCisgICAgICAgIG1fbGFzdF94KDB4N0ZGRkZGRjApLAorICAgICAgICBtX2NvdmVycygwKSwKKyAgICAgICAgbV9zcGFucygwKSwKKyAgICAgICAgbV9jdXJfc3BhbigwKQorICAgIHt9CisgICAgdm9pZCByZXNldChpbnQgbWluX3gsIGludCBtYXhfeCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG1heF9sZW4gPSBtYXhfeCAtIG1pbl94ICsgMjsKKyAgICAgICAgaWYobWF4X2xlbiA+IG1fbWF4X2xlbikgeworICAgICAgICAgICAgRlhfRnJlZShtX3NwYW5zKTsKKyAgICAgICAgICAgIEZYX0ZyZWUobV9jb3ZlcnMpOworICAgICAgICAgICAgbV9jb3ZlcnMgID0gRlhfQWxsb2MoIGNvdmVyX3R5cGUgLCBtYXhfbGVuKTsKKyAgICAgICAgICAgIG1fc3BhbnMgICA9IEZYX0FsbG9jKCBzcGFuICAgICAgICwgbWF4X2xlbik7CisgICAgICAgICAgICBtX21heF9sZW4gPSBtYXhfbGVuOworICAgICAgICB9CisgICAgICAgIG1fbGFzdF94ICAgICAgICA9IDB4N0ZGRkZGRjA7CisgICAgICAgIG1fbWluX3ggICAgICAgICA9IG1pbl94OworICAgICAgICBtX2N1cl9zcGFuICAgICAgPSBtX3NwYW5zOworICAgIH0KKyAgICB2b2lkIGFkZF9jZWxsKGludCB4LCB1bnNpZ25lZCBjb3ZlcikKKyAgICB7CisgICAgICAgIHggLT0gbV9taW5feDsKKyAgICAgICAgbV9jb3ZlcnNbeF0gPSAoY292ZXJfdHlwZSljb3ZlcjsKKyAgICAgICAgaWYoeCA9PSBtX2xhc3RfeCArIDEpIHsKKyAgICAgICAgICAgIG1fY3VyX3NwYW4tPmxlbisrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9jdXJfc3BhbisrOworICAgICAgICAgICAgbV9jdXJfc3Bhbi0+eCAgICAgID0gKGNvb3JkX3R5cGUpKHggKyBtX21pbl94KTsKKyAgICAgICAgICAgIG1fY3VyX3NwYW4tPmxlbiAgICA9IDE7CisgICAgICAgICAgICBtX2N1cl9zcGFuLT5jb3ZlcnMgPSBtX2NvdmVycyArIHg7CisgICAgICAgIH0KKyAgICAgICAgbV9sYXN0X3ggPSB4OworICAgIH0KKyAgICB2b2lkIGFkZF9jZWxscyhpbnQgeCwgdW5zaWduZWQgbGVuLCBjb25zdCBDb3ZlclQqIGNvdmVycykKKyAgICB7CisgICAgICAgIHggLT0gbV9taW5feDsKKyAgICAgICAgRlhTWVNfbWVtY3B5KG1fY292ZXJzICsgeCwgY292ZXJzLCBsZW4gKiBzaXplb2YoQ292ZXJUKSk7CisgICAgICAgIGlmKHggPT0gbV9sYXN0X3ggKyAxKSB7CisgICAgICAgICAgICBtX2N1cl9zcGFuLT5sZW4gKz0gKGNvb3JkX3R5cGUpbGVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9jdXJfc3BhbisrOworICAgICAgICAgICAgbV9jdXJfc3Bhbi0+eCAgICAgID0gKGNvb3JkX3R5cGUpKHggKyBtX21pbl94KTsKKyAgICAgICAgICAgIG1fY3VyX3NwYW4tPmxlbiAgICA9IChjb29yZF90eXBlKWxlbjsKKyAgICAgICAgICAgIG1fY3VyX3NwYW4tPmNvdmVycyA9IG1fY292ZXJzICsgeDsKKyAgICAgICAgfQorICAgICAgICBtX2xhc3RfeCA9IHggKyBsZW4gLSAxOworICAgIH0KKyAgICB2b2lkIGFkZF9zcGFuKGludCB4LCB1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGNvdmVyKQorICAgIHsKKyAgICAgICAgeCAtPSBtX21pbl94OworICAgICAgICBGWFNZU19tZW1zZXQ4KG1fY292ZXJzICsgeCwgY292ZXIsIGxlbik7CisgICAgICAgIGlmKHggPT0gbV9sYXN0X3ggKyAxKSB7CisgICAgICAgICAgICBtX2N1cl9zcGFuLT5sZW4gKz0gKGNvb3JkX3R5cGUpbGVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9jdXJfc3BhbisrOworICAgICAgICAgICAgbV9jdXJfc3Bhbi0+eCAgICAgID0gKGNvb3JkX3R5cGUpKHggKyBtX21pbl94KTsKKyAgICAgICAgICAgIG1fY3VyX3NwYW4tPmxlbiAgICA9IChjb29yZF90eXBlKWxlbjsKKyAgICAgICAgICAgIG1fY3VyX3NwYW4tPmNvdmVycyA9IG1fY292ZXJzICsgeDsKKyAgICAgICAgfQorICAgICAgICBtX2xhc3RfeCA9IHggKyBsZW4gLSAxOworICAgIH0KKyAgICB2b2lkIGZpbmFsaXplKGludCB5KQorICAgIHsKKyAgICAgICAgbV95ID0geTsKKyAgICB9CisgICAgdm9pZCByZXNldF9zcGFucygpCisgICAgeworICAgICAgICBtX2xhc3RfeCAgICA9IDB4N0ZGRkZGRjA7CisgICAgICAgIG1fY3VyX3NwYW4gID0gbV9zcGFuczsKKyAgICB9CisgICAgaW50ICAgICAgeSgpICAgICAgICAgICBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feTsKKyAgICB9CisgICAgdW5zaWduZWQgbnVtX3NwYW5zKCkgICBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHVuc2lnbmVkKG1fY3VyX3NwYW4gLSBtX3NwYW5zKTsKKyAgICB9CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3BhbnMgKyAxOworICAgIH0KKyAgICBpdGVyYXRvciAgICAgICBiZWdpbigpCisgICAgeworICAgICAgICByZXR1cm4gbV9zcGFucyArIDE7CisgICAgfQorcHJpdmF0ZToKKyAgICBzY2FubGluZV91KGNvbnN0IHNlbGZfdHlwZSYpOworICAgIGNvbnN0IHNlbGZfdHlwZSYgb3BlcmF0b3IgPSAoY29uc3Qgc2VsZl90eXBlJik7Citwcml2YXRlOgorICAgIGludCAgICAgICAgICAgbV9taW5feDsKKyAgICB1bnNpZ25lZCAgICAgIG1fbWF4X2xlbjsKKyAgICBpbnQgICAgICAgICAgIG1fbGFzdF94OworICAgIGludCAgICAgICAgICAgbV95OworICAgIGNvdmVyX3R5cGUqICAgbV9jb3ZlcnM7CisgICAgc3BhbiogICAgICAgICBtX3NwYW5zOworICAgIHNwYW4qICAgICAgICAgbV9jdXJfc3BhbjsKK307Cit0eXBlZGVmIHNjYW5saW5lX3U8aW50OHU+IHNjYW5saW5lX3U4OworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfc2hvcnRlbl9wYXRoLmggYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9hZ2dfc2hvcnRlbl9wYXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdlYjRiZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ19zaG9ydGVuX3BhdGguaApAQCAtMCwwICsxLDU3IEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29udGFjdDogbWNzZWVtQGFudGlncmFpbi5jb20KKy8vICAgICAgICAgIG1jc2VlbWFnZ0B5YWhvby5jb20KKy8vICAgICAgICAgIGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaWZuZGVmIEFHR19TSE9SVEVOX1BBVEhfSU5DTFVERUQKKyNkZWZpbmUgQUdHX1NIT1JURU5fUEFUSF9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19iYXNpY3MuaCIKKyNpbmNsdWRlICJhZ2dfdmVydGV4X3NlcXVlbmNlLmgiCituYW1lc3BhY2UgYWdnCit7Cit0ZW1wbGF0ZTxjbGFzcyBWZXJ0ZXhTZXF1ZW5jZT4KK3ZvaWQgc2hvcnRlbl9wYXRoKFZlcnRleFNlcXVlbmNlJiB2cywgRlhfRkxPQVQgcywgdW5zaWduZWQgY2xvc2VkID0gMCkKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFZlcnRleFNlcXVlbmNlOjp2YWx1ZV90eXBlIHZlcnRleF90eXBlOworICAgIGlmKHMgPiAwICYmIHZzLnNpemUoKSA+IDEpIHsKKyAgICAgICAgRlhfRkxPQVQgZDsKKyAgICAgICAgaW50IG4gPSBpbnQodnMuc2l6ZSgpIC0gMik7CisgICAgICAgIHdoaWxlKG4pIHsKKyAgICAgICAgICAgIGQgPSB2c1tuXS5kaXN0OworICAgICAgICAgICAgaWYoZCA+IHMpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZzLnJlbW92ZV9sYXN0KCk7CisgICAgICAgICAgICBzIC09IGQ7CisgICAgICAgICAgICAtLW47CisgICAgICAgIH0KKyAgICAgICAgaWYodnMuc2l6ZSgpIDwgMikgeworICAgICAgICAgICAgdnMucmVtb3ZlX2FsbCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbiA9IHZzLnNpemUoKSAtIDE7CisgICAgICAgICAgICB2ZXJ0ZXhfdHlwZSYgcHJldiA9IHZzW24gLSAxXTsKKyAgICAgICAgICAgIHZlcnRleF90eXBlJiBsYXN0ID0gdnNbbl07CisgICAgICAgICAgICBkID0gKHByZXYuZGlzdCAtIHMpIC8gcHJldi5kaXN0OworICAgICAgICAgICAgRlhfRkxPQVQgeCA9IHByZXYueCArIChsYXN0LnggLSBwcmV2LngpICogZDsKKyAgICAgICAgICAgIEZYX0ZMT0FUIHkgPSBwcmV2LnkgKyAobGFzdC55IC0gcHJldi55KSAqIGQ7CisgICAgICAgICAgICBsYXN0LnggPSB4OworICAgICAgICAgICAgbGFzdC55ID0geTsKKyAgICAgICAgICAgIGlmKCFwcmV2KGxhc3QpKSB7CisgICAgICAgICAgICAgICAgdnMucmVtb3ZlX2xhc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZzLmNsb3NlKGNsb3NlZCAhPSAwKTsKKyAgICAgICAgfQorICAgIH0KK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX3ZjZ2VuX2Rhc2guaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ192Y2dlbl9kYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYxZGEyZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ192Y2dlbl9kYXNoLmgKQEAgLTAsMCArMSw3NSBAQAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFudGktR3JhaW4gR2VvbWV0cnkgLSBWZXJzaW9uIDIuMworLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUgTWF4aW0gU2hlbWFuYXJldiAoaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tKQorLy8KKy8vIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorLy8gaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgorLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisvLyB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIExpbmUgZGFzaCBnZW5lcmF0b3IKKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNpZm5kZWYgQUdHX1ZDR0VOX0RBU0hfSU5DTFVERUQKKyNkZWZpbmUgQUdHX1ZDR0VOX0RBU0hfSU5DTFVERUQKKyNpbmNsdWRlICJhZ2dfYmFzaWNzLmgiCisjaW5jbHVkZSAiYWdnX3ZlcnRleF9zZXF1ZW5jZS5oIgorbmFtZXNwYWNlIGFnZworeworY2xhc3MgdmNnZW5fZGFzaCA6IHB1YmxpYyBDRlhfT2JqZWN0Cit7CisgICAgZW51bSBtYXhfZGFzaGVzX2UgeworICAgICAgICBtYXhfZGFzaGVzID0gMzIKKyAgICB9OworICAgIGVudW0gc3RhdHVzX2UgeworICAgICAgICBpbml0aWFsLAorICAgICAgICByZWFkeSwKKyAgICAgICAgcG9seWxpbmUsCisgICAgICAgIHN0b3AKKyAgICB9OworcHVibGljOgorICAgIHR5cGVkZWYgdmVydGV4X3NlcXVlbmNlPHZlcnRleF9kaXN0LCA2PiB2ZXJ0ZXhfc3RvcmFnZTsKKyAgICB2Y2dlbl9kYXNoKCk7CisgICAgdm9pZCByZW1vdmVfYWxsX2Rhc2hlcygpOworICAgIHZvaWQgYWRkX2Rhc2goRlhfRkxPQVQgZGFzaF9sZW4sIEZYX0ZMT0FUIGdhcF9sZW4pOworICAgIHZvaWQgZGFzaF9zdGFydChGWF9GTE9BVCBkcyk7CisgICAgdm9pZCBzaG9ydGVuKEZYX0ZMT0FUIHMpCisgICAgeworICAgICAgICBtX3Nob3J0ZW4gPSBzOworICAgIH0KKyAgICBkb3VibGUgc2hvcnRlbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zaG9ydGVuOworICAgIH0KKyAgICB2b2lkIHJlbW92ZV9hbGwoKTsKKyAgICB2b2lkIGFkZF92ZXJ0ZXgoRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSwgdW5zaWduZWQgY21kKTsKKyAgICB2b2lkICAgICByZXdpbmQodW5zaWduZWQgcGF0aF9pZCk7CisgICAgdW5zaWduZWQgdmVydGV4KEZYX0ZMT0FUKiB4LCBGWF9GTE9BVCogeSk7Citwcml2YXRlOgorICAgIHZjZ2VuX2Rhc2goY29uc3QgdmNnZW5fZGFzaCYpOworICAgIGNvbnN0IHZjZ2VuX2Rhc2gmIG9wZXJhdG9yID0gKGNvbnN0IHZjZ2VuX2Rhc2gmKTsKKyAgICB2b2lkIGNhbGNfZGFzaF9zdGFydChGWF9GTE9BVCBkcyk7CisgICAgRlhfRkxPQVQgICAgIG1fZGFzaGVzW21heF9kYXNoZXNdOworICAgIEZYX0ZMT0FUCQltX3RvdGFsX2Rhc2hfbGVuOworICAgIHVuc2lnbmVkICAgICAgICBtX251bV9kYXNoZXM7CisgICAgRlhfRkxPQVQgICAgIG1fZGFzaF9zdGFydDsKKyAgICBGWF9GTE9BVCAgICAgbV9zaG9ydGVuOworICAgIEZYX0ZMT0FUICAgICBtX2N1cnJfZGFzaF9zdGFydDsKKyAgICB1bnNpZ25lZCAgICAgICAgbV9jdXJyX2Rhc2g7CisgICAgRlhfRkxPQVQgICAgIG1fY3Vycl9yZXN0OworICAgIGNvbnN0IHZlcnRleF9kaXN0KiBtX3YxOworICAgIGNvbnN0IHZlcnRleF9kaXN0KiBtX3YyOworICAgIHZlcnRleF9zdG9yYWdlIG1fc3JjX3ZlcnRpY2VzOworICAgIHVuc2lnbmVkICAgICAgIG1fY2xvc2VkOworICAgIHN0YXR1c19lICAgICAgIG1fc3RhdHVzOworICAgIHVuc2lnbmVkICAgICAgIG1fc3JjX3ZlcnRleDsKK307Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ192Y2dlbl9zdHJva2UuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ192Y2dlbl9zdHJva2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGZlMWZjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX3ZjZ2VuX3N0cm9rZS5oCkBAIC0wLDAgKzEsMTIwIEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29udGFjdDogbWNzZWVtQGFudGlncmFpbi5jb20KKy8vICAgICAgICAgIG1jc2VlbWFnZ0B5YWhvby5jb20KKy8vICAgICAgICAgIGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaWZuZGVmIEFHR19WQ0dFTl9TVFJPS0VfSU5DTFVERUQKKyNkZWZpbmUgQUdHX1ZDR0VOX1NUUk9LRV9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19tYXRoX3N0cm9rZS5oIgorbmFtZXNwYWNlIGFnZworeworY2xhc3MgdmNnZW5fc3Ryb2tlIDogcHVibGljIENGWF9PYmplY3QKK3sKKyAgICBlbnVtIHN0YXR1c19lIHsKKyAgICAgICAgaW5pdGlhbCwKKyAgICAgICAgcmVhZHksCisgICAgICAgIGNhcDEsCisgICAgICAgIGNhcDIsCisgICAgICAgIG91dGxpbmUxLAorICAgICAgICBjbG9zZV9maXJzdCwKKyAgICAgICAgb3V0bGluZTIsCisgICAgICAgIG91dF92ZXJ0aWNlcywKKyAgICAgICAgZW5kX3BvbHkxLAorICAgICAgICBlbmRfcG9seTIsCisgICAgICAgIHN0b3AKKyAgICB9OworcHVibGljOgorICAgIHR5cGVkZWYgdmVydGV4X3NlcXVlbmNlPHZlcnRleF9kaXN0X2NtZCwgNj4gdmVydGV4X3N0b3JhZ2U7CisgICAgdHlwZWRlZiBwb2RfZGVxdWU8cG9pbnRfdHlwZSwgNj4gICAgICAgIGNvb3JkX3N0b3JhZ2U7CisgICAgdmNnZW5fc3Ryb2tlKCk7CisgICAgdm9pZCBsaW5lX2NhcChsaW5lX2NhcF9lIGxjKQorICAgIHsKKyAgICAgICAgbV9saW5lX2NhcCA9IGxjOworICAgIH0KKyAgICB2b2lkIGxpbmVfam9pbihsaW5lX2pvaW5fZSBsaikKKyAgICB7CisgICAgICAgIG1fbGluZV9qb2luID0gbGo7CisgICAgfQorICAgIHZvaWQgaW5uZXJfam9pbihpbm5lcl9qb2luX2UgaWopCisgICAgeworICAgICAgICBtX2lubmVyX2pvaW4gPSBpajsKKyAgICB9CisgICAgbGluZV9jYXBfZSAgIGxpbmVfY2FwKCkgICBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGluZV9jYXA7CisgICAgfQorICAgIGxpbmVfam9pbl9lICBsaW5lX2pvaW4oKSAgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xpbmVfam9pbjsKKyAgICB9CisgICAgaW5uZXJfam9pbl9lIGlubmVyX2pvaW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5uZXJfam9pbjsKKyAgICB9CisgICAgdm9pZCB3aWR0aChGWF9GTE9BVCB3KQorICAgIHsKKyAgICAgICAgbV93aWR0aCA9IHcgLyAyOworICAgIH0KKyAgICB2b2lkIG1pdGVyX2xpbWl0KEZYX0ZMT0FUIG1sKQorICAgIHsKKyAgICAgICAgbV9taXRlcl9saW1pdCA9IG1sOworICAgIH0KKyAgICB2b2lkIG1pdGVyX2xpbWl0X3RoZXRhKEZYX0ZMT0FUIHQpOworICAgIHZvaWQgaW5uZXJfbWl0ZXJfbGltaXQoRlhfRkxPQVQgbWwpCisgICAgeworICAgICAgICBtX2lubmVyX21pdGVyX2xpbWl0ID0gbWw7CisgICAgfQorICAgIHZvaWQgYXBwcm94aW1hdGlvbl9zY2FsZShGWF9GTE9BVCBhcykKKyAgICB7CisgICAgICAgIG1fYXBwcm94X3NjYWxlID0gYXM7CisgICAgfQorICAgIEZYX0ZMT0FUIHdpZHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3dpZHRoICogMjsKKyAgICB9CisgICAgRlhfRkxPQVQgbWl0ZXJfbGltaXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWl0ZXJfbGltaXQ7CisgICAgfQorICAgIEZYX0ZMT0FUIGlubmVyX21pdGVyX2xpbWl0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lubmVyX21pdGVyX2xpbWl0OworICAgIH0KKyAgICBGWF9GTE9BVCBhcHByb3hpbWF0aW9uX3NjYWxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FwcHJveF9zY2FsZTsKKyAgICB9CisgICAgdm9pZCByZW1vdmVfYWxsKCk7CisgICAgdm9pZCBhZGRfdmVydGV4KEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHksIHVuc2lnbmVkIGNtZCk7CisgICAgdm9pZCAgICAgcmV3aW5kKHVuc2lnbmVkIHBhdGhfaWQpOworICAgIHVuc2lnbmVkIHZlcnRleChGWF9GTE9BVCogeCwgRlhfRkxPQVQqIHkpOworcHJpdmF0ZToKKyAgICB2Y2dlbl9zdHJva2UoY29uc3QgdmNnZW5fc3Ryb2tlJik7CisgICAgY29uc3QgdmNnZW5fc3Ryb2tlJiBvcGVyYXRvciA9IChjb25zdCB2Y2dlbl9zdHJva2UmKTsKKyAgICB2ZXJ0ZXhfc3RvcmFnZSBtX3NyY192ZXJ0aWNlczsKKyAgICBjb29yZF9zdG9yYWdlICBtX291dF92ZXJ0aWNlczsKKyAgICBGWF9GTE9BVCAgICAgICAgIG1fd2lkdGg7CisgICAgRlhfRkxPQVQgICAgICAgICBtX21pdGVyX2xpbWl0OworICAgIEZYX0ZMT0FUICAgICAgICAgbV9pbm5lcl9taXRlcl9saW1pdDsKKyAgICBGWF9GTE9BVCAgICAgICAgIG1fYXBwcm94X3NjYWxlOworICAgIGxpbmVfY2FwX2UgICAgIG1fbGluZV9jYXA7CisgICAgbGluZV9qb2luX2UgICAgbV9saW5lX2pvaW47CisgICAgaW5uZXJfam9pbl9lICAgbV9pbm5lcl9qb2luOworICAgIHVuc2lnbmVkICAgICAgIG1fY2xvc2VkOworICAgIHN0YXR1c19lICAgICAgIG1fc3RhdHVzOworICAgIHN0YXR1c19lICAgICAgIG1fcHJldl9zdGF0dXM7CisgICAgdW5zaWduZWQgICAgICAgbV9zcmNfdmVydGV4OworICAgIHVuc2lnbmVkICAgICAgIG1fb3V0X3ZlcnRleDsKK307Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ192ZXJ0ZXhfc2VxdWVuY2UuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2FnZ192ZXJ0ZXhfc2VxdWVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTQ4NmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvYWdnX3ZlcnRleF9zZXF1ZW5jZS5oCkBAIC0wLDAgKzEsMTAwIEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29udGFjdDogbWNzZWVtQGFudGlncmFpbi5jb20KKy8vICAgICAgICAgIG1jc2VlbWFnZ0B5YWhvby5jb20KKy8vICAgICAgICAgIGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gdmVydGV4X3NlcXVlbmNlIGNvbnRhaW5lciBhbmQgdmVydGV4X2Rpc3Qgc3RydWN0CisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaWZuZGVmIEFHR19WRVJURVhfU0VRVUVOQ0VfSU5DTFVERUQKKyNkZWZpbmUgQUdHX1ZFUlRFWF9TRVFVRU5DRV9JTkNMVURFRAorI2luY2x1ZGUgImFnZ19iYXNpY3MuaCIKKyNpbmNsdWRlICJhZ2dfYXJyYXkuaCIKKyNpbmNsdWRlICJhZ2dfbWF0aC5oIgorbmFtZXNwYWNlIGFnZworewordGVtcGxhdGU8Y2xhc3MgVCwgdW5zaWduZWQgUyA9IDY+CitjbGFzcyB2ZXJ0ZXhfc2VxdWVuY2UgOiBwdWJsaWMgcG9kX2RlcXVlPFQsIFM+Cit7CitwdWJsaWM6CisgICAgdHlwZWRlZiBwb2RfZGVxdWU8VCwgUz4gYmFzZV90eXBlOworICAgIHZvaWQgYWRkKGNvbnN0IFQmIHZhbCk7CisgICAgdm9pZCBtb2RpZnlfbGFzdChjb25zdCBUJiB2YWwpOworICAgIHZvaWQgY2xvc2UoYm9vbCByZW1vdmVfZmxhZyk7Cit9OwordGVtcGxhdGU8Y2xhc3MgVCwgdW5zaWduZWQgUz4KK3ZvaWQgdmVydGV4X3NlcXVlbmNlPFQsIFM+OjphZGQoY29uc3QgVCYgdmFsKQoreworICAgIGlmKGJhc2VfdHlwZTo6c2l6ZSgpID4gMSkgeworICAgICAgICBpZighKCp0aGlzKVtiYXNlX3R5cGU6OnNpemUoKSAtIDJdKCgqdGhpcylbYmFzZV90eXBlOjpzaXplKCkgLSAxXSkpIHsKKyAgICAgICAgICAgIGJhc2VfdHlwZTo6cmVtb3ZlX2xhc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBiYXNlX3R5cGU6OmFkZCh2YWwpOworfQordGVtcGxhdGU8Y2xhc3MgVCwgdW5zaWduZWQgUz4KK3ZvaWQgdmVydGV4X3NlcXVlbmNlPFQsIFM+Ojptb2RpZnlfbGFzdChjb25zdCBUJiB2YWwpCit7CisgICAgYmFzZV90eXBlOjpyZW1vdmVfbGFzdCgpOworICAgIGFkZCh2YWwpOworfQordGVtcGxhdGU8Y2xhc3MgVCwgdW5zaWduZWQgUz4KK3ZvaWQgdmVydGV4X3NlcXVlbmNlPFQsIFM+OjpjbG9zZShib29sIGNsb3NlZCkKK3sKKyAgICB3aGlsZShiYXNlX3R5cGU6OnNpemUoKSA+IDEpIHsKKyAgICAgICAgaWYoKCp0aGlzKVtiYXNlX3R5cGU6OnNpemUoKSAtIDJdKCgqdGhpcylbYmFzZV90eXBlOjpzaXplKCkgLSAxXSkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFQgdCA9ICgqdGhpcylbYmFzZV90eXBlOjpzaXplKCkgLSAxXTsKKyAgICAgICAgYmFzZV90eXBlOjpyZW1vdmVfbGFzdCgpOworICAgICAgICBtb2RpZnlfbGFzdCh0KTsKKyAgICB9CisgICAgaWYoY2xvc2VkKSB7CisgICAgICAgIHdoaWxlKGJhc2VfdHlwZTo6c2l6ZSgpID4gMSkgeworICAgICAgICAgICAgaWYoKCp0aGlzKVtiYXNlX3R5cGU6OnNpemUoKSAtIDFdKCgqdGhpcylbMF0pKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBiYXNlX3R5cGU6OnJlbW92ZV9sYXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9Citjb25zdCBGWF9GTE9BVCB2ZXJ0ZXhfZGlzdF9lcHNpbG9uID0gMWUtMTRmOworc3RydWN0IHZlcnRleF9kaXN0IDogcHVibGljIENGWF9PYmplY3QgeworICAgIEZYX0ZMT0FUICAgeDsKKyAgICBGWF9GTE9BVCAgIHk7CisgICAgRlhfRkxPQVQgICBkaXN0OworICAgIHZlcnRleF9kaXN0KCkge30KKyAgICB2ZXJ0ZXhfZGlzdChGWF9GTE9BVCB4XywgRlhfRkxPQVQgeV8pIDoKKyAgICAgICAgeCh4XyksCisgICAgICAgIHkoeV8pLAorICAgICAgICBkaXN0KDApCisgICAgeworICAgIH0KKyAgICBib29sIG9wZXJhdG9yICgpIChjb25zdCB2ZXJ0ZXhfZGlzdCYgdmFsKQorICAgIHsKKyAgICAgICAgYm9vbCByZXQgPSAoZGlzdCA9IGNhbGNfZGlzdGFuY2UoeCwgeSwgdmFsLngsIHZhbC55KSkgPiB2ZXJ0ZXhfZGlzdF9lcHNpbG9uOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KK307CitzdHJ1Y3QgdmVydGV4X2Rpc3RfY21kIDogcHVibGljIHZlcnRleF9kaXN0IHsKKyAgICB1bnNpZ25lZCBjbWQ7CisgICAgdmVydGV4X2Rpc3RfY21kKCkge30KKyAgICB2ZXJ0ZXhfZGlzdF9jbWQoRlhfRkxPQVQgeF8sIEZYX0ZMT0FUIHlfLCB1bnNpZ25lZCBjbWRfKSA6CisgICAgICAgIHZlcnRleF9kaXN0KHhfLCB5XyksCisgICAgICAgIGNtZChjbWRfKQorICAgIHsKKyAgICB9Cit9OworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9meF9hZ2dfY3VydmVzLmNwcCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2Z4X2FnZ19jdXJ2ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTMyMGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9meF9hZ2dfY3VydmVzLmNwcApAQCAtMCwwICsxLDEwOSBAQAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFhZUTogMjAwNi0wMS0yMiBDb3BpZWQgZnJvbSBBR0cgcHJvamVjdC4KKy8vIFRPRE86IFRoaXMgZmlsZSB1c2VzIGludGVuc2l2ZSBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zLCBzbyBpdCdzIE5PVCBzdWl0YWJsZQorLy8gZm9yIHBsYXRmb3JtcyBsaWtlIFN5bWJpYW4gT1MuIFdlIG5lZWQgdG8gY2hhbmdlIHRvIEZJWCBmb3JtYXQuCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQW50aS1HcmFpbiBHZW9tZXRyeSAtIFZlcnNpb24gMi4zCisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNSBNYXhpbSBTaGVtYW5hcmV2IChodHRwOi8vd3d3LmFudGlncmFpbi5jb20pCisvLworLy8gUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisvLyBpcyBncmFudGVkIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCisvLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKKy8vIHdhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29udGFjdDogbWNzZWVtQGFudGlncmFpbi5jb20KKy8vICAgICAgICAgIG1jc2VlbWFnZ0B5YWhvby5jb20KKy8vICAgICAgICAgIGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9meGNydC9meF9iYXNpYy5oIgorI2luY2x1ZGUgImFnZ19jdXJ2ZXMuaCIKKyNpbmNsdWRlICJhZ2dfbWF0aC5oIgorbmFtZXNwYWNlIGFnZworeworY29uc3QgRlhfRkxPQVQgY3VydmVfY29sbGluZWFyaXR5X2Vwc2lsb24gICAgICAgICAgICAgID0gMWUtMzBmOworZW51bSBjdXJ2ZV9yZWN1cnNpb25fbGltaXRfZSB7IGN1cnZlX3JlY3Vyc2lvbl9saW1pdCA9IDE2IH07Cit2b2lkIGN1cnZlNF9kaXY6OmluaXQoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLAorICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwKKyAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCB4MywgRlhfRkxPQVQgeTMsCisgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgeDQsIEZYX0ZMT0FUIHk0KQoreworICAgIG1fcG9pbnRzLnJlbW92ZV9hbGwoKTsKKyAgICBtX2Rpc3RhbmNlX3RvbGVyYW5jZV9zcXVhcmUgPSAxLjBmIC8gNDsKKyAgICBtX2Rpc3RhbmNlX3RvbGVyYW5jZV9tYW5oYXR0YW4gPSAxLjBmICogNDsKKyAgICBiZXppZXIoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0KTsKKyAgICBtX2NvdW50ID0gMDsKK30KK3ZvaWQgY3VydmU0X2Rpdjo6cmVjdXJzaXZlX2JlemllcihGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgeDIsIEZYX0ZMT0FUIHkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgzLCBGWF9GTE9BVCB5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCB4NCwgRlhfRkxPQVQgeTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGV2ZWwpCit7CisgICAgaWYobGV2ZWwgPiBjdXJ2ZV9yZWN1cnNpb25fbGltaXQpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBGWF9GTE9BVCB4MTIgICA9ICh4MSArIHgyKSAvIDI7CisgICAgRlhfRkxPQVQgeTEyICAgPSAoeTEgKyB5MikgLyAyOworICAgIEZYX0ZMT0FUIHgyMyAgID0gKHgyICsgeDMpIC8gMjsKKyAgICBGWF9GTE9BVCB5MjMgICA9ICh5MiArIHkzKSAvIDI7CisgICAgRlhfRkxPQVQgeDM0ICAgPSAoeDMgKyB4NCkgLyAyOworICAgIEZYX0ZMT0FUIHkzNCAgID0gKHkzICsgeTQpIC8gMjsKKyAgICBGWF9GTE9BVCB4MTIzICA9ICh4MTIgKyB4MjMpIC8gMjsKKyAgICBGWF9GTE9BVCB5MTIzICA9ICh5MTIgKyB5MjMpIC8gMjsKKyAgICBGWF9GTE9BVCB4MjM0ICA9ICh4MjMgKyB4MzQpIC8gMjsKKyAgICBGWF9GTE9BVCB5MjM0ICA9ICh5MjMgKyB5MzQpIC8gMjsKKyAgICBGWF9GTE9BVCB4MTIzNCA9ICh4MTIzICsgeDIzNCkgLyAyOworICAgIEZYX0ZMT0FUIHkxMjM0ID0gKHkxMjMgKyB5MjM0KSAvIDI7CisgICAgRlhfRkxPQVQgZHggPSB4NCAtIHgxOworICAgIEZYX0ZMT0FUIGR5ID0geTQgLSB5MTsKKyAgICBGWF9GTE9BVCBkMiA9IEZYU1lTX2ZhYnMoRlhTWVNfTXVsKHgyIC0geDQsIGR5KSAtIEZYU1lTX011bCh5MiAtIHk0LCBkeCkpOworICAgIEZYX0ZMT0FUIGQzID0gRlhTWVNfZmFicyhGWFNZU19NdWwoeDMgLSB4NCwgZHkpIC0gRlhTWVNfTXVsKHkzIC0geTQsIGR4KSk7CisgICAgc3dpdGNoKChpbnQoZDIgPiBjdXJ2ZV9jb2xsaW5lYXJpdHlfZXBzaWxvbikgPDwgMSkgKworICAgICAgICAgICAgaW50KGQzID4gY3VydmVfY29sbGluZWFyaXR5X2Vwc2lsb24pKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIGlmKEZYU1lTX2ZhYnMoeDEgKyB4MyAtIHgyIC0geDIpICsKKyAgICAgICAgICAgICAgICAgICAgRlhTWVNfZmFicyh5MSArIHkzIC0geTIgLSB5MikgKworICAgICAgICAgICAgICAgICAgICBGWFNZU19mYWJzKHgyICsgeDQgLSB4MyAtIHgzKSArCisgICAgICAgICAgICAgICAgICAgIEZYU1lTX2ZhYnMoeTIgKyB5NCAtIHkzIC0geTMpIDw9IG1fZGlzdGFuY2VfdG9sZXJhbmNlX21hbmhhdHRhbikgeworICAgICAgICAgICAgICAgIG1fcG9pbnRzLmFkZChwb2ludF90eXBlKHgxMjM0LCB5MTIzNCwgcGF0aF9mbGFnc19qcikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBpZihGWFNZU19NdWwoZDMsIGQzKSA8PSBGWFNZU19NdWwobV9kaXN0YW5jZV90b2xlcmFuY2Vfc3F1YXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX011bChkeCwgZHgpICsgRlhTWVNfTXVsKGR5LCBkeSkpKSB7CisgICAgICAgICAgICAgICAgbV9wb2ludHMuYWRkKHBvaW50X3R5cGUoeDIzLCB5MjMsIHBhdGhfZmxhZ3NfanIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgaWYoRlhTWVNfTXVsKGQyLCBkMikgPD0gRlhTWVNfTXVsKG1fZGlzdGFuY2VfdG9sZXJhbmNlX3NxdWFyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWFNZU19NdWwoZHgsIGR4KSArIEZYU1lTX011bChkeSwgZHkpKSkgeworICAgICAgICAgICAgICAgIG1fcG9pbnRzLmFkZChwb2ludF90eXBlKHgyMywgeTIzLCBwYXRoX2ZsYWdzX2pyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGlmKEZYU1lTX011bChkMiArIGQzLCBkMiArIGQzKSA8PSBGWFNZU19NdWwobV9kaXN0YW5jZV90b2xlcmFuY2Vfc3F1YXJlLAorICAgICAgICAgICAgICAgICAgICBGWFNZU19NdWwoZHgsIGR4KSArIEZYU1lTX011bChkeSwgZHkpKSkgeworICAgICAgICAgICAgICAgIG1fcG9pbnRzLmFkZChwb2ludF90eXBlKHgyMywgeTIzLCBwYXRoX2ZsYWdzX2pyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJlY3Vyc2l2ZV9iZXppZXIoeDEsIHkxLCB4MTIsIHkxMiwgeDEyMywgeTEyMywgeDEyMzQsIHkxMjM0LCBsZXZlbCArIDEpOworICAgIHJlY3Vyc2l2ZV9iZXppZXIoeDEyMzQsIHkxMjM0LCB4MjM0LCB5MjM0LCB4MzQsIHkzNCwgeDQsIHk0LCBsZXZlbCArIDEpOworfQordm9pZCBjdXJ2ZTRfZGl2OjpiZXppZXIoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLAorICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgeDIsIEZYX0ZMT0FUIHkyLAorICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgeDMsIEZYX0ZMT0FUIHkzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgeDQsIEZYX0ZMT0FUIHk0KQoreworICAgIG1fcG9pbnRzLmFkZChwb2ludF90eXBlKHgxLCB5MSkpOworICAgIHJlY3Vyc2l2ZV9iZXppZXIoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCAwKTsKKyAgICBtX3BvaW50cy5hZGQocG9pbnRfdHlwZSh4NCwgeTQpKTsKK30KK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2Z4X2FnZ19kcml2ZXIuY3BwIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvZnhfYWdnX2RyaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU3ZjEzNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2Z4X2FnZ19kcml2ZXIuY3BwCkBAIC0wLDAgKzEsMTYzNiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uLy4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIgorI2luY2x1ZGUgIi4uLy4uL2RpYi9kaWJfaW50LmgiCisjaW5jbHVkZSAiLi4vLi4vZ2UvdGV4dF9pbnQuaCIKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWMuaCIKKyNpbmNsdWRlICJhZ2dfcGl4Zm10X2dyYXkuaCIKKyNpbmNsdWRlICJhZ2dfcGF0aF9zdG9yYWdlLmgiCisjaW5jbHVkZSAiYWdnX3NjYW5saW5lX3UuaCIKKyNpbmNsdWRlICJhZ2dfcmFzdGVyaXplcl9zY2FubGluZV9hYS5oIgorI2luY2x1ZGUgImFnZ19yZW5kZXJlcl9zY2FubGluZS5oIgorI2luY2x1ZGUgImFnZ19jdXJ2ZXMuaCIKKyNpbmNsdWRlICJhZ2dfY29udl9zdHJva2UuaCIKKyNpbmNsdWRlICJhZ2dfY29udl9kYXNoLmgiCit1c2luZyBuYW1lc3BhY2UgYWdnOworI2luY2x1ZGUgIi4uL2luY2x1ZGUvZnhfYWdnX2RyaXZlci5oIgordm9pZCBfSGFyZENsaXAoRlhfRkxPQVQmIHgsIEZYX0ZMT0FUJiB5KQoreworICAgIGlmICh4ID4gNTAwMDApIHsKKyAgICAgICAgeCA9IDUwMDAwOworICAgIH0KKyAgICBpZiAoeCA8IC01MDAwMCkgeworICAgICAgICB4ID0gLTUwMDAwOworICAgIH0KKyAgICBpZiAoeSA+IDUwMDAwKSB7CisgICAgICAgIHkgPSA1MDAwMDsKKyAgICB9CisgICAgaWYgKHkgPCAtNTAwMDApIHsKKyAgICAgICAgeSA9IC01MDAwMDsKKyAgICB9Cit9Cit2b2lkIENBZ2dfUGF0aERhdGE6OkJ1aWxkUGF0aChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UpCit7CisgICAgaW50IG5Qb2ludHMgPSBwUGF0aERhdGEtPkdldFBvaW50Q291bnQoKTsKKyAgICBGWF9QQVRIUE9JTlQqIHBQb2ludHMgPSBwUGF0aERhdGEtPkdldFBvaW50cygpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgblBvaW50czsgaSArKykgeworICAgICAgICBGWF9GTE9BVCB4ID0gcFBvaW50c1tpXS5tX1BvaW50WCwgeSA9IHBQb2ludHNbaV0ubV9Qb2ludFk7CisgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSkgeworICAgICAgICAgICAgcE9iamVjdDJEZXZpY2UtPlRyYW5zZm9ybSh4LCB5KTsKKyAgICAgICAgfQorICAgICAgICBfSGFyZENsaXAoeCwgeSk7CisgICAgICAgIGludCBwb2ludF90eXBlID0gcFBvaW50c1tpXS5tX0ZsYWcgJiBGWFBUX1RZUEU7CisgICAgICAgIGlmIChwb2ludF90eXBlID09IEZYUFRfTU9WRVRPKSB7CisgICAgICAgICAgICBtX1BhdGhEYXRhLm1vdmVfdG8oeCwgeSk7CisgICAgICAgIH0gZWxzZSBpZiAocG9pbnRfdHlwZSA9PSBGWFBUX0xJTkVUTykgeworICAgICAgICAgICAgaWYgKHBQb2ludHNbaSAtIDFdLm1fRmxhZyA9PSBGWFBUX01PVkVUTyAmJiAoaSA9PSBuUG9pbnRzIC0gMSB8fCBwUG9pbnRzW2kgKyAxXS5tX0ZsYWcgPT0gRlhQVF9NT1ZFVE8pICYmCisgICAgICAgICAgICAgICAgICAgIHBQb2ludHNbaV0ubV9Qb2ludFggPT0gcFBvaW50c1tpIC0gMV0ubV9Qb2ludFggJiYgcFBvaW50c1tpXS5tX1BvaW50WSA9PSBwUG9pbnRzW2kgLSAxXS5tX1BvaW50WSkgeworICAgICAgICAgICAgICAgIHggKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fUGF0aERhdGEubGluZV90byh4LCB5KTsKKyAgICAgICAgfSBlbHNlIGlmIChwb2ludF90eXBlID09IEZYUFRfQkVaSUVSVE8pIHsKKyAgICAgICAgICAgIEZYX0ZMT0FUIHgwID0gcFBvaW50c1tpIC0gMV0ubV9Qb2ludFgsIHkwID0gcFBvaW50c1tpIC0gMV0ubV9Qb2ludFk7CisgICAgICAgICAgICBGWF9GTE9BVCB4MiA9IHBQb2ludHNbaSArIDFdLm1fUG9pbnRYLCB5MiA9IHBQb2ludHNbaSArIDFdLm1fUG9pbnRZOworICAgICAgICAgICAgRlhfRkxPQVQgeDMgPSBwUG9pbnRzW2kgKyAyXS5tX1BvaW50WCwgeTMgPSBwUG9pbnRzW2kgKyAyXS5tX1BvaW50WTsKKyAgICAgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSkgeworICAgICAgICAgICAgICAgIHBPYmplY3QyRGV2aWNlLT5UcmFuc2Zvcm0oeDAsIHkwKTsKKyAgICAgICAgICAgICAgICBwT2JqZWN0MkRldmljZS0+VHJhbnNmb3JtKHgyLCB5Mik7CisgICAgICAgICAgICAgICAgcE9iamVjdDJEZXZpY2UtPlRyYW5zZm9ybSh4MywgeTMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VydmU0IGN1cnZlKHgwLCB5MCwgeCwgeSwgeDIsIHkyLCB4MywgeTMpOworICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgbV9QYXRoRGF0YS5hZGRfcGF0aF9jdXJ2ZShjdXJ2ZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBQb2ludHNbaV0ubV9GbGFnICYgRlhQVF9DTE9TRUZJR1VSRSkgeworICAgICAgICAgICAgbV9QYXRoRGF0YS5lbmRfcG9seSgpOworICAgICAgICB9CisgICAgfQorfQorbmFtZXNwYWNlIGFnZworewordGVtcGxhdGU8Y2xhc3MgQmFzZVJlbmRlcmVyPiBjbGFzcyByZW5kZXJlcl9zY2FubGluZV9hYV9vZmZzZXQKK3sKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEJhc2VSZW5kZXJlciBiYXNlX3Jlbl90eXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9yZW5fdHlwZTo6Y29sb3JfdHlwZSBjb2xvcl90eXBlOworICAgIHJlbmRlcmVyX3NjYW5saW5lX2FhX29mZnNldChiYXNlX3Jlbl90eXBlJiByZW4sIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHRvcCkgOgorICAgICAgICBtX3JlbigmcmVuKSwgbV9sZWZ0KGxlZnQpLCBtX3RvcCh0b3ApCisgICAge30KKyAgICB2b2lkIGNvbG9yKGNvbnN0IGNvbG9yX3R5cGUmIGMpCisgICAgeworICAgICAgICBtX2NvbG9yID0gYzsKKyAgICB9CisgICAgY29uc3QgY29sb3JfdHlwZSYgY29sb3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29sb3I7CisgICAgfQorICAgIHZvaWQgcHJlcGFyZSh1bnNpZ25lZCkge30KKyAgICB0ZW1wbGF0ZTxjbGFzcyBTY2FubGluZT4gdm9pZCByZW5kZXIoY29uc3QgU2NhbmxpbmUmIHNsKQorICAgIHsKKyAgICAgICAgaW50IHkgPSBzbC55KCk7CisgICAgICAgIHVuc2lnbmVkIG51bV9zcGFucyA9IHNsLm51bV9zcGFucygpOworICAgICAgICB0eXBlbmFtZSBTY2FubGluZTo6Y29uc3RfaXRlcmF0b3Igc3BhbiA9IHNsLmJlZ2luKCk7CisgICAgICAgIGZvcig7OykgeworICAgICAgICAgICAgaW50IHggPSBzcGFuLT54OworICAgICAgICAgICAgaWYoc3Bhbi0+bGVuID4gMCkgeworICAgICAgICAgICAgICAgIG1fcmVuLT5ibGVuZF9zb2xpZF9oc3Bhbih4IC0gbV9sZWZ0LCB5IC0gbV90b3AsICh1bnNpZ25lZClzcGFuLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4tPmNvdmVycyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fcmVuLT5ibGVuZF9obGluZSh4IC0gbV9sZWZ0LCB5IC0gbV90b3AsICh1bnNpZ25lZCkoeCAtIHNwYW4tPmxlbiAtIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHNwYW4tPmNvdmVycykpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoLS1udW1fc3BhbnMgPT0gMCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytzcGFuOworICAgICAgICB9CisgICAgfQorcHJpdmF0ZToKKyAgICBiYXNlX3Jlbl90eXBlKiBtX3JlbjsKKyAgICBjb2xvcl90eXBlIG1fY29sb3I7CisgICAgdW5zaWduZWQgbV9sZWZ0LCBtX3RvcDsKK307Cit9CitzdGF0aWMgdm9pZCBSYXN0ZXJpemVTdHJva2UocmFzdGVyaXplcl9zY2FubGluZV9hYSYgcmFzdGVyaXplciwgcGF0aF9zdG9yYWdlJiBwYXRoX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZSwgRlhfRkxPQVQgc2NhbGUgPSAxLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JPT0wgYlN0cm9rZUFkanVzdCA9IEZBTFNFLCBGWF9CT09MIGJUZXh0TW9kZSA9IEZBTFNFKQoreworICAgIGxpbmVfY2FwX2UgY2FwOworICAgIHN3aXRjaCAocEdyYXBoU3RhdGUtPm1fTGluZUNhcCkgeworICAgICAgICBjYXNlIENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUNhcFJvdW5kOgorICAgICAgICAgICAgY2FwID0gcm91bmRfY2FwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0ZYX0dyYXBoU3RhdGVEYXRhOjpMaW5lQ2FwU3F1YXJlOgorICAgICAgICAgICAgY2FwID0gc3F1YXJlX2NhcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY2FwID0gYnV0dF9jYXA7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgbGluZV9qb2luX2Ugam9pbjsKKyAgICBzd2l0Y2ggKHBHcmFwaFN0YXRlLT5tX0xpbmVKb2luKSB7CisgICAgICAgIGNhc2UgQ0ZYX0dyYXBoU3RhdGVEYXRhOjpMaW5lSm9pblJvdW5kOgorICAgICAgICAgICAgam9pbiA9IHJvdW5kX2pvaW47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDRlhfR3JhcGhTdGF0ZURhdGE6OkxpbmVKb2luQmV2ZWw6CisgICAgICAgICAgICBqb2luID0gYmV2ZWxfam9pbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgam9pbiA9IG1pdGVyX2pvaW5fcmV2ZXJ0OworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIEZYX0ZMT0FUIHdpZHRoID0gcEdyYXBoU3RhdGUtPm1fTGluZVdpZHRoICogc2NhbGU7CisgICAgRlhfRkxPQVQgdW5pdCA9IDEuZjsKKyAgICBpZiAocE9iamVjdDJEZXZpY2UpIHsKKyAgICAgICAgdW5pdCA9IEZYU1lTX0RpdigxLjBmLCAocE9iamVjdDJEZXZpY2UtPkdldFhVbml0KCkgKyBwT2JqZWN0MkRldmljZS0+R2V0WVVuaXQoKSkgLyAyKTsKKyAgICB9CisgICAgaWYgKHdpZHRoIDwgdW5pdCkgeworICAgICAgICB3aWR0aCA9IHVuaXQ7CisgICAgfQorICAgIGlmIChwR3JhcGhTdGF0ZS0+bV9EYXNoQXJyYXkgPT0gTlVMTCkgeworICAgICAgICBjb252X3N0cm9rZTxwYXRoX3N0b3JhZ2U+IHN0cm9rZShwYXRoX2RhdGEpOworICAgICAgICBzdHJva2UubGluZV9qb2luKGpvaW4pOworICAgICAgICBzdHJva2UubGluZV9jYXAoY2FwKTsKKyAgICAgICAgc3Ryb2tlLm1pdGVyX2xpbWl0KHBHcmFwaFN0YXRlLT5tX01pdGVyTGltaXQpOworICAgICAgICBzdHJva2Uud2lkdGgod2lkdGgpOworICAgICAgICByYXN0ZXJpemVyLmFkZF9wYXRoX3RyYW5zZm9ybWVkKHN0cm9rZSwgcE9iamVjdDJEZXZpY2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHR5cGVkZWYgY29udl9kYXNoPHBhdGhfc3RvcmFnZT4gZGFzaF9jb252ZXJ0ZXI7CisgICAgICAgIGRhc2hfY29udmVydGVyIGRhc2gocGF0aF9kYXRhKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAocEdyYXBoU3RhdGUtPm1fRGFzaENvdW50ICsgMSkgLyAyOyBpICsrKSB7CisgICAgICAgICAgICBGWF9GTE9BVCBvbiA9IHBHcmFwaFN0YXRlLT5tX0Rhc2hBcnJheVtpICogMl07CisgICAgICAgICAgICBpZiAob24gPD0gMC4wMDAwMDFmKSB7CisgICAgICAgICAgICAgICAgb24gPSAxLjBmIC8gMTA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGWF9GTE9BVCBvZmYgPSBpICogMiArIDEgPT0gcEdyYXBoU3RhdGUtPm1fRGFzaENvdW50ID8gb24gOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgcEdyYXBoU3RhdGUtPm1fRGFzaEFycmF5W2kgKiAyICsgMV07CisgICAgICAgICAgICBpZiAob2ZmIDwgMCkgeworICAgICAgICAgICAgICAgIG9mZiA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXNoLmFkZF9kYXNoKG9uICogc2NhbGUsIG9mZiAqIHNjYWxlKTsKKyAgICAgICAgfQorICAgICAgICBkYXNoLmRhc2hfc3RhcnQocEdyYXBoU3RhdGUtPm1fRGFzaFBoYXNlICogc2NhbGUpOworICAgICAgICB0eXBlZGVmIGNvbnZfc3Ryb2tlPGRhc2hfY29udmVydGVyPiBkYXNoX3N0cm9rZTsKKyAgICAgICAgZGFzaF9zdHJva2Ugc3Ryb2tlKGRhc2gpOworICAgICAgICBzdHJva2UubGluZV9qb2luKGpvaW4pOworICAgICAgICBzdHJva2UubGluZV9jYXAoY2FwKTsKKyAgICAgICAgc3Ryb2tlLm1pdGVyX2xpbWl0KHBHcmFwaFN0YXRlLT5tX01pdGVyTGltaXQpOworICAgICAgICBzdHJva2Uud2lkdGgod2lkdGgpOworICAgICAgICByYXN0ZXJpemVyLmFkZF9wYXRoX3RyYW5zZm9ybWVkKHN0cm9rZSwgcE9iamVjdDJEZXZpY2UpOworICAgIH0KK30KK0lGWF9SZW5kZXJEZXZpY2VEcml2ZXIqIElGWF9SZW5kZXJEZXZpY2VEcml2ZXI6OkNyZWF0ZUZ4Z2VEcml2ZXIoQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBGWF9CT09MIGJSZ2JCeXRlT3JkZXIsIENGWF9ESUJpdG1hcCogcE9yaURldmljZSwgRlhfQk9PTCBiR3JvdXBLbm9ja291dCkKK3sKKyAgICByZXR1cm4gRlhfTkVXIENGWF9BZ2dEZXZpY2VEcml2ZXIocEJpdG1hcCwgMCwgYlJnYkJ5dGVPcmRlciwgcE9yaURldmljZSwgYkdyb3VwS25vY2tvdXQpOworfQorQ0ZYX0FnZ0RldmljZURyaXZlcjo6Q0ZYX0FnZ0RldmljZURyaXZlcihDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBkaXRoZXJfYml0cywgRlhfQk9PTCBiUmdiQnl0ZU9yZGVyLCBDRlhfRElCaXRtYXAqIHBPcmlEZXZpY2UsIEZYX0JPT0wgYkdyb3VwS25vY2tvdXQpCit7CisgICAgbV9wQml0bWFwID0gcEJpdG1hcDsKKyAgICBtX0RpdGhlckJpdHMgPSBkaXRoZXJfYml0czsKKyAgICBtX3BDbGlwUmduID0gTlVMTDsKKyAgICBtX3BQbGF0Zm9ybUJpdG1hcCA9IE5VTEw7CisgICAgbV9wUGxhdGZvcm1HcmFwaGljcyA9IE5VTEw7CisgICAgbV9wRHdSZW5kZXJUYXJ0Z2V0ID0gTlVMTDsKKyAgICBtX2JSZ2JCeXRlT3JkZXIgPSBiUmdiQnl0ZU9yZGVyOworICAgIG1fcE9yaURldmljZSA9IHBPcmlEZXZpY2U7CisgICAgbV9iR3JvdXBLbm9ja291dCA9IGJHcm91cEtub2Nrb3V0OworICAgIG1fRmlsbEZsYWdzID0gMDsKKyAgICBJbml0UGxhdGZvcm0oKTsKK30KK0NGWF9BZ2dEZXZpY2VEcml2ZXI6On5DRlhfQWdnRGV2aWNlRHJpdmVyKCkKK3sKKyAgICBpZiAobV9wQ2xpcFJnbikgeworICAgICAgICBkZWxldGUgbV9wQ2xpcFJnbjsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX1N0YXRlU3RhY2suR2V0U2l6ZSgpOyBpICsrKQorICAgICAgICBpZiAobV9TdGF0ZVN0YWNrW2ldKSB7CisgICAgICAgICAgICBkZWxldGUgKENGWF9DbGlwUmduKiltX1N0YXRlU3RhY2tbaV07CisgICAgICAgIH0KKyAgICBEZXN0cm95UGxhdGZvcm0oKTsKK30KKyNpZiAoKF9GWE1fUExBVEZPUk1fICAhPSBfRlhNX1BMQVRGT1JNX0FQUExFXyl8fCBkZWZpbmVkKF9GUERGQVBJX01JTklfKSkKK3ZvaWQgQ0ZYX0FnZ0RldmljZURyaXZlcjo6SW5pdFBsYXRmb3JtKCkKK3sKK30KK3ZvaWQgQ0ZYX0FnZ0RldmljZURyaXZlcjo6RGVzdHJveVBsYXRmb3JtKCkKK3sKK30KK0ZYX0JPT0wgQ0ZYX0FnZ0RldmljZURyaXZlcjo6RHJhd0RldmljZVRleHQoaW50IG5DaGFycywgY29uc3QgRlhURVhUX0NIQVJQT1MqIHBDaGFyUG9zLCBDRlhfRm9udCogcEZvbnQsCisgICAgICAgIENGWF9Gb250Q2FjaGUqIHBDYWNoZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsIEZYX0ZMT0FUIGZvbnRfc2l6ZSwgRlhfRFdPUkQgY29sb3IsCisgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQoreworICAgIHJldHVybiBGQUxTRTsKK30KKyNlbmRpZgoraW50IENGWF9BZ2dEZXZpY2VEcml2ZXI6OkdldERldmljZUNhcHMoaW50IGNhcHNfaWQpCit7CisgICAgc3dpdGNoIChjYXBzX2lkKSB7CisgICAgICAgIGNhc2UgRlhEQ19ERVZJQ0VfQ0xBU1M6CisgICAgICAgICAgICByZXR1cm4gRlhEQ19ESVNQTEFZOworICAgICAgICBjYXNlIEZYRENfUElYRUxfV0lEVEg6CisgICAgICAgICAgICByZXR1cm4gbV9wQml0bWFwLT5HZXRXaWR0aCgpOworICAgICAgICBjYXNlIEZYRENfUElYRUxfSEVJR0hUOgorICAgICAgICAgICAgcmV0dXJuIG1fcEJpdG1hcC0+R2V0SGVpZ2h0KCk7CisgICAgICAgIGNhc2UgRlhEQ19CSVRTX1BJWEVMOgorICAgICAgICAgICAgcmV0dXJuIG1fcEJpdG1hcC0+R2V0QlBQKCk7CisgICAgICAgIGNhc2UgRlhEQ19IT1JaX1NJWkU6CisgICAgICAgIGNhc2UgRlhEQ19WRVJUX1NJWkU6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBGWERDX1JFTkRFUl9DQVBTOiB7CisgICAgICAgICAgICAgICAgaW50IGZsYWdzID0gRlhSQ19HRVRfQklUUyB8IEZYUkNfQUxQSEFfUEFUSCB8IEZYUkNfQUxQSEFfSU1BR0UgfCBGWFJDX0JMRU5EX01PREUgfCBGWFJDX1NPRlRfQ0xJUDsKKyAgICAgICAgICAgICAgICBpZiAobV9wQml0bWFwLT5IYXNBbHBoYSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZYUkNfQUxQSEFfT1VUUFVUOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wQml0bWFwLT5Jc0FscGhhTWFzaygpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3BCaXRtYXAtPkdldEJQUCgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZYUkNfQklUTUFTS19PVVRQVVQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBGWFJDX0JZVEVNQVNLX09VVFBVVDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9wQml0bWFwLT5Jc0NteWtJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZYUkNfQ01ZS19PVVRQVVQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmbGFnczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBGWERDX0RJVEhFUl9CSVRTOgorICAgICAgICAgICAgcmV0dXJuIG1fRGl0aGVyQml0czsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9Cit2b2lkIENGWF9BZ2dEZXZpY2VEcml2ZXI6OlNhdmVTdGF0ZSgpCit7CisgICAgdm9pZCogcENsaXAgPSBOVUxMOworICAgIGlmIChtX3BDbGlwUmduKSB7CisgICAgICAgIHBDbGlwID0gRlhfTkVXIENGWF9DbGlwUmduKCptX3BDbGlwUmduKTsKKyAgICAgICAgaWYgKCFwQ2xpcCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIG1fU3RhdGVTdGFjay5BZGQocENsaXApOworfQordm9pZCBDRlhfQWdnRGV2aWNlRHJpdmVyOjpSZXN0b3JlU3RhdGUoRlhfQk9PTCBiS2VlcFNhdmVkKQoreworICAgIGlmIChtX1N0YXRlU3RhY2suR2V0U2l6ZSgpID09IDApIHsKKyAgICAgICAgaWYgKG1fcENsaXBSZ24pIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtX3BDbGlwUmduOworICAgICAgICAgICAgbV9wQ2xpcFJnbiA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDRlhfQ2xpcFJnbiogcFNhdmVkQ2xpcCA9IChDRlhfQ2xpcFJnbiopbV9TdGF0ZVN0YWNrW21fU3RhdGVTdGFjay5HZXRTaXplKCkgLSAxXTsKKyAgICBpZiAobV9wQ2xpcFJnbikgeworICAgICAgICBkZWxldGUgbV9wQ2xpcFJnbjsKKyAgICAgICAgbV9wQ2xpcFJnbiA9IE5VTEw7CisgICAgfQorICAgIGlmIChiS2VlcFNhdmVkKSB7CisgICAgICAgIGlmIChwU2F2ZWRDbGlwKSB7CisgICAgICAgICAgICBtX3BDbGlwUmduID0gRlhfTkVXIENGWF9DbGlwUmduKCpwU2F2ZWRDbGlwKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fU3RhdGVTdGFjay5SZW1vdmVBdChtX1N0YXRlU3RhY2suR2V0U2l6ZSgpIC0gMSk7CisgICAgICAgIG1fcENsaXBSZ24gPSBwU2F2ZWRDbGlwOworICAgIH0KK30KK3ZvaWQgQ0ZYX0FnZ0RldmljZURyaXZlcjo6U2V0Q2xpcE1hc2socmFzdGVyaXplcl9zY2FubGluZV9hYSYgcmFzdGVyaXplcikKK3sKKyAgICBGWF9SRUNUIHBhdGhfcmVjdChyYXN0ZXJpemVyLm1pbl94KCksIHJhc3Rlcml6ZXIubWluX3koKSwKKyAgICAgICAgICAgICAgICAgICAgICByYXN0ZXJpemVyLm1heF94KCkgKyAxLCByYXN0ZXJpemVyLm1heF95KCkgKyAxKTsKKyAgICBwYXRoX3JlY3QuSW50ZXJzZWN0KG1fcENsaXBSZ24tPkdldEJveCgpKTsKKyAgICBDRlhfRElCaXRtYXBSZWYgbWFzazsKKyAgICBDRlhfRElCaXRtYXAqIHBUaGlzTGF5ZXIgPSBtYXNrLk5ldygpOworICAgIGlmICghcFRoaXNMYXllcikgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHBUaGlzTGF5ZXItPkNyZWF0ZShwYXRoX3JlY3QuV2lkdGgoKSwgcGF0aF9yZWN0LkhlaWdodCgpLCBGWERJQl84YnBwTWFzayk7CisgICAgcFRoaXNMYXllci0+Q2xlYXIoMCk7CisgICAgcmVuZGVyaW5nX2J1ZmZlciByYXdfYnVmKHBUaGlzTGF5ZXItPkdldEJ1ZmZlcigpLCBwVGhpc0xheWVyLT5HZXRXaWR0aCgpLCBwVGhpc0xheWVyLT5HZXRIZWlnaHQoKSwgcFRoaXNMYXllci0+R2V0UGl0Y2goKSk7CisgICAgcGl4Zm10X2dyYXk4IHBpeGVsX2J1ZihyYXdfYnVmKTsKKyAgICByZW5kZXJlcl9iYXNlPHBpeGZtdF9ncmF5OD4gYmFzZV9idWYocGl4ZWxfYnVmKTsKKyAgICByZW5kZXJlcl9zY2FubGluZV9hYV9vZmZzZXQ8cmVuZGVyZXJfYmFzZTxwaXhmbXRfZ3JheTg+ID4gZmluYWxfcmVuZGVyKGJhc2VfYnVmLCBwYXRoX3JlY3QubGVmdCwgcGF0aF9yZWN0LnRvcCk7CisgICAgZmluYWxfcmVuZGVyLmNvbG9yKGdyYXk4KDI1NSkpOworICAgIHNjYW5saW5lX3U4IHNjYW5saW5lOworICAgIHJlbmRlcl9zY2FubGluZXMocmFzdGVyaXplciwgc2NhbmxpbmUsIGZpbmFsX3JlbmRlciwgKG1fRmlsbEZsYWdzICYgRlhGSUxMX05PUEFUSFNNT09USCkgIT0gMCk7CisgICAgbV9wQ2xpcFJnbi0+SW50ZXJzZWN0TWFza0YocGF0aF9yZWN0LmxlZnQsIHBhdGhfcmVjdC50b3AsIG1hc2spOworfQorRlhfQk9PTCBDRlhfQWdnRGV2aWNlRHJpdmVyOjpTZXRDbGlwX1BhdGhGaWxsKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLAorICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwKKyAgICAgICAgaW50IGZpbGxfbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgIG1fRmlsbEZsYWdzID0gZmlsbF9tb2RlOworICAgIGlmIChtX3BDbGlwUmduID09IE5VTEwpIHsKKyAgICAgICAgbV9wQ2xpcFJnbiA9IEZYX05FVyBDRlhfQ2xpcFJnbihHZXREZXZpY2VDYXBzKEZYRENfUElYRUxfV0lEVEgpLCBHZXREZXZpY2VDYXBzKEZYRENfUElYRUxfSEVJR0hUKSk7CisgICAgICAgIGlmICghbV9wQ2xpcFJnbikgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfQorICAgIGlmIChwUGF0aERhdGEtPkdldFBvaW50Q291bnQoKSA9PSA1IHx8IHBQYXRoRGF0YS0+R2V0UG9pbnRDb3VudCgpID09IDQpIHsKKyAgICAgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0ZjsKKyAgICAgICAgaWYgKHBQYXRoRGF0YS0+SXNSZWN0KHBPYmplY3QyRGV2aWNlLCAmcmVjdGYpKSB7CisgICAgICAgICAgICByZWN0Zi5JbnRlcnNlY3QoQ0ZYX0Zsb2F0UmVjdCgwLCAwLCAoRlhfRkxPQVQpR2V0RGV2aWNlQ2FwcyhGWERDX1BJWEVMX1dJRFRIKSwgKEZYX0ZMT0FUKUdldERldmljZUNhcHMoRlhEQ19QSVhFTF9IRUlHSFQpKSk7CisgICAgICAgICAgICBGWF9SRUNUIHJlY3QgPSByZWN0Zi5HZXRPdXR0ZXJSZWN0KCk7CisgICAgICAgICAgICBtX3BDbGlwUmduLT5JbnRlcnNlY3RSZWN0KHJlY3QpOworICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKyAgICB9CisgICAgQ0FnZ19QYXRoRGF0YSBwYXRoX2RhdGE7CisgICAgcGF0aF9kYXRhLkJ1aWxkUGF0aChwUGF0aERhdGEsIHBPYmplY3QyRGV2aWNlKTsKKyAgICBwYXRoX2RhdGEubV9QYXRoRGF0YS5lbmRfcG9seSgpOworICAgIHJhc3Rlcml6ZXJfc2NhbmxpbmVfYWEgcmFzdGVyaXplcjsKKyAgICByYXN0ZXJpemVyLmNsaXBfYm94KDAuMGYsIDAuMGYsIChGWF9GTE9BVCkoR2V0RGV2aWNlQ2FwcyhGWERDX1BJWEVMX1dJRFRIKSksIChGWF9GTE9BVCkoR2V0RGV2aWNlQ2FwcyhGWERDX1BJWEVMX0hFSUdIVCkpKTsKKyAgICByYXN0ZXJpemVyLmFkZF9wYXRoKHBhdGhfZGF0YS5tX1BhdGhEYXRhKTsKKyAgICByYXN0ZXJpemVyLmZpbGxpbmdfcnVsZSgoZmlsbF9tb2RlICYgMykgPT0gRlhGSUxMX1dJTkRJTkcgPyBmaWxsX25vbl96ZXJvIDogZmlsbF9ldmVuX29kZCk7CisgICAgU2V0Q2xpcE1hc2socmFzdGVyaXplcik7CisgICAgcmV0dXJuIFRSVUU7Cit9CitGWF9CT09MIENGWF9BZ2dEZXZpY2VEcml2ZXI6OlNldENsaXBfUGF0aFN0cm9rZShjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwKKyAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsCisgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgIGlmIChtX3BDbGlwUmduID09IE5VTEwpIHsKKyAgICAgICAgbV9wQ2xpcFJnbiA9IEZYX05FVyBDRlhfQ2xpcFJnbihHZXREZXZpY2VDYXBzKEZYRENfUElYRUxfV0lEVEgpLCBHZXREZXZpY2VDYXBzKEZYRENfUElYRUxfSEVJR0hUKSk7CisgICAgICAgIGlmICghbV9wQ2xpcFJnbikgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfQorICAgIENBZ2dfUGF0aERhdGEgcGF0aF9kYXRhOworICAgIHBhdGhfZGF0YS5CdWlsZFBhdGgocFBhdGhEYXRhLCBOVUxMKTsKKyAgICByYXN0ZXJpemVyX3NjYW5saW5lX2FhIHJhc3Rlcml6ZXI7CisgICAgcmFzdGVyaXplci5jbGlwX2JveCgwLjBmLCAwLjBmLCAoRlhfRkxPQVQpKEdldERldmljZUNhcHMoRlhEQ19QSVhFTF9XSURUSCkpLCAoRlhfRkxPQVQpKEdldERldmljZUNhcHMoRlhEQ19QSVhFTF9IRUlHSFQpKSk7CisgICAgUmFzdGVyaXplU3Ryb2tlKHJhc3Rlcml6ZXIsIHBhdGhfZGF0YS5tX1BhdGhEYXRhLCBwT2JqZWN0MkRldmljZSwgcEdyYXBoU3RhdGUpOworICAgIHJhc3Rlcml6ZXIuZmlsbGluZ19ydWxlKGZpbGxfbm9uX3plcm8pOworICAgIFNldENsaXBNYXNrKHJhc3Rlcml6ZXIpOworICAgIHJldHVybiBUUlVFOworfQorY2xhc3MgQ0ZYX1JlbmRlcmVyIDogcHVibGljIENGWF9PYmplY3QKK3sKK3ByaXZhdGU6CisgICAgaW50CQkJbV9BbHBoYSwKKyAgICAgICAgICAgICAgICBtX1JlZCwKKyAgICAgICAgICAgICAgICBtX0dyZWVuLAorICAgICAgICAgICAgICAgIG1fQmx1ZSwKKyAgICAgICAgICAgICAgICBtX0dyYXk7CisgICAgRlhfRFdPUkQJbV9Db2xvcjsKKyAgICBGWF9CT09MCQltX2JGdWxsQ292ZXI7CisgICAgRlhfQk9PTCAgICAgbV9iUmdiQnl0ZU9yZGVyOworICAgIENGWF9ESUJpdG1hcCogbV9wT3JpRGV2aWNlOworICAgIEZYX1JFQ1QJCW1fQ2xpcEJveDsKKyAgICBjb25zdCBDRlhfRElCaXRtYXAqCW1fcENsaXBNYXNrOworICAgIENGWF9ESUJpdG1hcCoJbV9wRGV2aWNlOworICAgIGNvbnN0IENGWF9DbGlwUmduKiBtX3BDbGlwUmduOworICAgIHZvaWQgKENGWF9SZW5kZXJlcjo6KmNvbXBvc2l0ZV9zcGFuKShGWF9MUEJZVEUsIGludCwgaW50LCBpbnQsIEZYX0xQQllURSwgaW50LCBpbnQsIEZYX0xQQllURSwgRlhfTFBCWVRFKTsKK3B1YmxpYzoKKyAgICB2b2lkIHByZXBhcmUodW5zaWduZWQpIHt9CisgICAgdm9pZCBDb21wb3NpdGVTcGFuKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQllURSBvcmlfc2NhbiwgaW50IEJwcCwgRlhfQk9PTCBiRGVzdEFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Bhbl9sZWZ0LCBpbnQgc3Bhbl9sZW4sIEZYX0xQQllURSBjb3Zlcl9zY2FuLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpcF9sZWZ0LCBpbnQgY2xpcF9yaWdodCwgRlhfTFBCWVRFIGNsaXBfc2NhbikKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9wRGV2aWNlLT5Jc0NteWtJbWFnZSgpKTsKKyAgICAgICAgaW50IGNvbF9zdGFydCA9IHNwYW5fbGVmdCA8IGNsaXBfbGVmdCA/IGNsaXBfbGVmdCAtIHNwYW5fbGVmdCA6IDA7CisgICAgICAgIGludCBjb2xfZW5kID0gKHNwYW5fbGVmdCArIHNwYW5fbGVuKSA8IGNsaXBfcmlnaHQgPyBzcGFuX2xlbiA6IChjbGlwX3JpZ2h0IC0gc3Bhbl9sZWZ0KTsKKyAgICAgICAgaWYgKEJwcCkgeworICAgICAgICAgICAgZGVzdF9zY2FuICs9IGNvbF9zdGFydCAqIEJwcDsKKyAgICAgICAgICAgIG9yaV9zY2FuICs9IGNvbF9zdGFydCAqIEJwcDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBjb2xfc3RhcnQgLyA4OworICAgICAgICAgICAgb3JpX3NjYW4gKz0gY29sX3N0YXJ0IC8gODsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9iUmdiQnl0ZU9yZGVyKSB7CisgICAgICAgICAgICBpZiAoQnBwID09IDQgJiYgYkRlc3RBbHBoYSkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IGNvbF9zdGFydDsgY29sIDwgY29sX2VuZDsgY29sICsrKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGE7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjbGlwX3NjYW5bY29sXSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gb3JpX3NjYW5bM10gKyBzcmNfYWxwaGEgLSBvcmlfc2NhblszXSAqIHNyY19hbHBoYSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gZGVzdF9hbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fYkZ1bGxDb3ZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuKyssIG1fUmVkLCBhbHBoYV9yYXRpbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBGWERJQl9BTFBIQV9NRVJHRSgqb3JpX3NjYW4rKywgbV9HcmVlbiwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuKyssIG1fQmx1ZSwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuKys7CisgICAgICAgICAgICAgICAgICAgICAgICBvcmlfc2NhbisrOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHIgPSBGWERJQl9BTFBIQV9NRVJHRSgqb3JpX3NjYW4rKywgbV9SZWQsIGFscGhhX3JhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBnID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuKyssIG1fR3JlZW4sIGFscGhhX3JhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBiID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuKyssIG1fQmx1ZSwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgICAgICAgICAgb3JpX3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoICpkZXN0X3NjYW4sIHIsIGNvdmVyX3NjYW5bY29sXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgZywgY292ZXJfc2Nhbltjb2xdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBiLCBjb3Zlcl9zY2FuW2NvbF0pOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBlbHNlIGlmIChCcHAgPT0gMyB8fCBCcHAgPT0gNCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IGNvbF9zdGFydDsgY29sIDwgY29sX2VuZDsgY29sICsrKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGE7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjbGlwX3NjYW5bY29sXSAvIDI1NSA7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGludCByID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuKyssIG1fUmVkLCBzcmNfYWxwaGEpOworICAgICAgICAgICAgICAgICAgICBpbnQgZyA9IEZYRElCX0FMUEhBX01FUkdFKCpvcmlfc2NhbisrLCBtX0dyZWVuLCBzcmNfYWxwaGEpOworICAgICAgICAgICAgICAgICAgICBpbnQgYiA9IEZYRElCX0FMUEhBX01FUkdFKCpvcmlfc2NhbiwgbV9CbHVlLCBzcmNfYWxwaGEpOworICAgICAgICAgICAgICAgICAgICBvcmlfc2NhbiArPSBCcHAgLSAyOworICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoICpkZXN0X3NjYW4sIHIsIGNvdmVyX3NjYW5bY29sXSk7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGcsIGNvdmVyX3NjYW5bY29sXSk7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGIsIGNvdmVyX3NjYW5bY29sXSk7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHAgLSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoQnBwID09IDQgJiYgYkRlc3RBbHBoYSkgeworICAgICAgICAgICAgZm9yIChpbnQgY29sID0gY29sX3N0YXJ0OyBjb2wgPCBjb2xfZW5kOyBjb2wgKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhOworICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGFfY292ZXJlZCA9IHNyY19hbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAvIDI1NTsKKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhX2NvdmVyZWQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb3Zlcl9zY2FuW2NvbF0gPT0gMjU1KSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IHNyY19hbHBoYV9jb3ZlcmVkOworICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gbV9CbHVlOworICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gbV9HcmVlbjsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IG1fUmVkOworICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlc3Rfc2NhblszXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSBzcmNfYWxwaGFfY292ZXJlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gKysgPSBtX0JsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gbV9HcmVlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBtX1JlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSBjb3ZlciA9IGNvdmVyX3NjYW5bY29sXTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzNdLCBzcmNfYWxwaGEsIGNvdmVyKTsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fQmx1ZSwgY292ZXIpOworICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX0dyZWVuLCBjb3Zlcik7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fUmVkLCBjb3Zlcik7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIGlmIChCcHAgPT0gMyB8fCBCcHAgPT0gNCkgeworICAgICAgICAgICAgZm9yIChpbnQgY29sID0gY29sX3N0YXJ0OyBjb2wgPCBjb2xfZW5kOyBjb2wgKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhOworICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX2JGdWxsQ292ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuKyssIG1fQmx1ZSwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuKyssIG1fR3JlZW4sIHNyY19hbHBoYSk7CisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqb3JpX3NjYW4sIG1fUmVkLCBzcmNfYWxwaGEpOworICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gQnBwIC0gMjsKKyAgICAgICAgICAgICAgICAgICAgb3JpX3NjYW4gKz0gQnBwIC0gMjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludCBiID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuKyssIG1fQmx1ZSwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICBpbnQgZyA9IEZYRElCX0FMUEhBX01FUkdFKCpvcmlfc2NhbisrLCBtX0dyZWVuLCBzcmNfYWxwaGEpOworICAgICAgICAgICAgICAgIGludCByID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuLCBtX1JlZCwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICBvcmlfc2NhbiArPSBCcHAgLSAyOworICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSggKmRlc3Rfc2NhbiwgYiwgY292ZXJfc2Nhbltjb2xdKTsKKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGcsIGNvdmVyX3NjYW5bY29sXSk7CisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOworICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCByLCBjb3Zlcl9zY2FuW2NvbF0pOworICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHAgLSAyOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgaWYgKEJwcCA9PSAxKSB7CisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBjb2xfc3RhcnQ7IGNvbCA8IGNvbF9lbmQ7IGNvbCArKykgeworICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGE7CisgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbikgeworICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhICogY2xpcF9zY2FuW2NvbF0gLyAyNTU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1fYkZ1bGxDb3ZlcikgeworICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKm9yaV9zY2FuKyssIG1fR3JheSwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpbnQgZ3JheSA9IEZYRElCX0FMUEhBX01FUkdFKCpvcmlfc2NhbisrLCBtX0dyYXksIHNyY19hbHBoYSk7CisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBjb3Zlcl9zY2FuW2NvbF0pOworICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4rKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAwOworICAgICAgICAgICAgaWYgKG1fcERldmljZS0+R2V0UGFsZXR0ZSgpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpbmRleCA9ICgoRlhfQllURSltX0NvbG9yID09IDB4ZmYpID8gMSA6IDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSArKykKKyAgICAgICAgICAgICAgICAgICAgaWYgKEZYQVJHQl9UT0RJQihtX3BEZXZpY2UtPkdldFBhbGV0dGUoKVtpXSkgPT0gbV9Db2xvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuMSA9IGRlc3Rfc2NhbjsKKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IGNvbF9zdGFydDsgY29sIDwgY29sX2VuZDsgY29sICsrKSB7CisgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYTsKKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7CisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjb3Zlcl9zY2FuW2NvbF0gKiBjbGlwX3NjYW5bY29sXSAvIDI1NSAvIDI1NTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhICogY292ZXJfc2Nhbltjb2xdIC8gMjU1OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4xICY9IH4oMSA8PCAoNyAtIChjb2wgKyBzcGFuX2xlZnQpICUgOCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbjEgfD0gMSA8PCAoNyAtIChjb2wgKyBzcGFuX2xlZnQpICUgOCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzdF9zY2FuMSA9IGRlc3Rfc2NhbiArIChzcGFuX2xlZnQgJSA4ICsgY29sIC0gY29sX3N0YXJ0ICsgMSkgLyA4OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHZvaWQgQ29tcG9zaXRlU3BhbjFicHAoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgaW50IEJwcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcGFuX2xlZnQsIGludCBzcGFuX2xlbiwgRlhfTFBCWVRFIGNvdmVyX3NjYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpcF9sZWZ0LCBpbnQgY2xpcF9yaWdodCwgRlhfTFBCWVRFIGNsaXBfc2NhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X2V4dHJhX2FscGhhX3NjYW4pCisgICAgeworICAgICAgICBBU1NFUlQoIW1fYlJnYkJ5dGVPcmRlcik7CisgICAgICAgIEFTU0VSVCghbV9wRGV2aWNlLT5Jc0NteWtJbWFnZSgpKTsKKyAgICAgICAgaW50IGNvbF9zdGFydCA9IHNwYW5fbGVmdCA8IGNsaXBfbGVmdCA/IGNsaXBfbGVmdCAtIHNwYW5fbGVmdCA6IDA7CisgICAgICAgIGludCBjb2xfZW5kID0gKHNwYW5fbGVmdCArIHNwYW5fbGVuKSA8IGNsaXBfcmlnaHQgPyBzcGFuX2xlbiA6IChjbGlwX3JpZ2h0IC0gc3Bhbl9sZWZ0KTsKKyAgICAgICAgZGVzdF9zY2FuICs9IGNvbF9zdGFydCAvIDg7CisgICAgICAgIGludCBpbmRleCA9IDA7CisgICAgICAgIGlmIChtX3BEZXZpY2UtPkdldFBhbGV0dGUoKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpbmRleCA9ICgoRlhfQllURSltX0NvbG9yID09IDB4ZmYpID8gMSA6IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkgKyspCisgICAgICAgICAgICAgICAgaWYgKEZYQVJHQl9UT0RJQihtX3BEZXZpY2UtPkdldFBhbGV0dGUoKVtpXSkgPT0gbV9Db2xvcikgeworICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4xID0gZGVzdF9zY2FuOworICAgICAgICBmb3IgKGludCBjb2wgPSBjb2xfc3RhcnQ7IGNvbCA8IGNvbF9lbmQ7IGNvbCArKykgeworICAgICAgICAgICAgaW50IHNyY19hbHBoYTsKKyAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsKKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhICogY292ZXJfc2Nhbltjb2xdICogY2xpcF9zY2FuW2NvbF0gLyAyNTUgLyAyNTU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjb3Zlcl9zY2FuW2NvbF0gLyAyNTU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpbmRleCkgeworICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuMSAmPSB+KDEgPDwgKDcgLSAoY29sICsgc3Bhbl9sZWZ0KSAlIDgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuMSB8PSAxIDw8ICg3IC0gKGNvbCArIHNwYW5fbGVmdCkgJSA4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXN0X3NjYW4xID0gZGVzdF9zY2FuICsgKHNwYW5fbGVmdCAlIDggKyBjb2wgLSBjb2xfc3RhcnQgKyAxKSAvIDg7CisgICAgICAgIH0KKyAgICB9CisgICAgdm9pZCBDb21wb3NpdGVTcGFuR3JheShGWF9MUEJZVEUgZGVzdF9zY2FuLCBpbnQgQnBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNwYW5fbGVmdCwgaW50IHNwYW5fbGVuLCBGWF9MUEJZVEUgY292ZXJfc2NhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGlwX2xlZnQsIGludCBjbGlwX3JpZ2h0LCBGWF9MUEJZVEUgY2xpcF9zY2FuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3RfZXh0cmFfYWxwaGFfc2NhbikKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9iUmdiQnl0ZU9yZGVyKTsKKyAgICAgICAgaW50IGNvbF9zdGFydCA9IHNwYW5fbGVmdCA8IGNsaXBfbGVmdCA/IGNsaXBfbGVmdCAtIHNwYW5fbGVmdCA6IDA7CisgICAgICAgIGludCBjb2xfZW5kID0gKHNwYW5fbGVmdCArIHNwYW5fbGVuKSA8IGNsaXBfcmlnaHQgPyBzcGFuX2xlbiA6IChjbGlwX3JpZ2h0IC0gc3Bhbl9sZWZ0KTsKKyAgICAgICAgZGVzdF9zY2FuICs9IGNvbF9zdGFydDsKKyAgICAgICAgQnBwOworICAgICAgICBpZiAoZGVzdF9leHRyYV9hbHBoYV9zY2FuKSB7CisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBjb2xfc3RhcnQ7IGNvbCA8IGNvbF9lbmQ7IGNvbCArKykgeworICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGE7CisgICAgICAgICAgICAgICAgaWYgKG1fYkZ1bGxDb3ZlcikgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhICogY2xpcF9zY2FuW2NvbF0gLyAyNTU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1IC8gMjU1OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMjU1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gbV9HcmF5OworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfZXh0cmFfYWxwaGFfc2NhbiA9IG1fQWxwaGE7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSAoKmRlc3RfZXh0cmFfYWxwaGFfc2NhbikgKyBzcmNfYWxwaGEgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpkZXN0X2V4dHJhX2FscGhhX3NjYW4pICogc3JjX2FscGhhIC8gMjU1OworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfZXh0cmFfYWxwaGFfc2NhbisrID0gZGVzdF9hbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgbV9HcmF5LCBhbHBoYV9yYXRpbyk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZXN0X2V4dHJhX2FscGhhX3NjYW4gKys7CisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgY29sID0gY29sX3N0YXJ0OyBjb2wgPCBjb2xfZW5kOyBjb2wgKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhOworICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1IC8gMjU1OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjb3Zlcl9zY2FuW2NvbF0gLyAyNTU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAyNTUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBtX0dyYXk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgbV9HcmF5LCBzcmNfYWxwaGEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIENvbXBvc2l0ZVNwYW5BUkdCKEZYX0xQQllURSBkZXN0X3NjYW4sIGludCBCcHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Bhbl9sZWZ0LCBpbnQgc3Bhbl9sZW4sIEZYX0xQQllURSBjb3Zlcl9zY2FuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsaXBfbGVmdCwgaW50IGNsaXBfcmlnaHQsIEZYX0xQQllURSBjbGlwX3NjYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9leHRyYV9hbHBoYV9zY2FuKQorICAgIHsKKyAgICAgICAgaW50IGNvbF9zdGFydCA9IHNwYW5fbGVmdCA8IGNsaXBfbGVmdCA/IGNsaXBfbGVmdCAtIHNwYW5fbGVmdCA6IDA7CisgICAgICAgIGludCBjb2xfZW5kID0gKHNwYW5fbGVmdCArIHNwYW5fbGVuKSA8IGNsaXBfcmlnaHQgPyBzcGFuX2xlbiA6IChjbGlwX3JpZ2h0IC0gc3Bhbl9sZWZ0KTsKKyAgICAgICAgZGVzdF9zY2FuICs9IGNvbF9zdGFydCAqIEJwcDsKKyAgICAgICAgaWYgKG1fYlJnYkJ5dGVPcmRlcikgeworICAgICAgICAgICAgZm9yIChpbnQgY29sID0gY29sX3N0YXJ0OyBjb2wgPCBjb2xfZW5kOyBjb2wgKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhOworICAgICAgICAgICAgICAgIGlmIChtX2JGdWxsQ292ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjb3Zlcl9zY2FuW2NvbF0gKiBjbGlwX3NjYW5bY29sXSAvIDI1NSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjb3Zlcl9zY2FuW2NvbF0gLyAyNTU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhID09IDI1NSkgeworICAgICAgICAgICAgICAgICAgICAgICAgKihGWF9EV09SRCopZGVzdF9zY2FuID0gbV9Db2xvcjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGRlc3Rfc2NhblszXSArIHNyY19hbHBoYSAtIGRlc3Rfc2NhblszXSAqIHNyY19hbHBoYSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IGRlc3RfYWxwaGE7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fUmVkLCBhbHBoYV9yYXRpbyk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgbV9HcmVlbiwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fQmx1ZSwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDI7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBjb2wgPSBjb2xfc3RhcnQ7IGNvbCA8IGNvbF9lbmQ7IGNvbCArKykgeworICAgICAgICAgICAgaW50IHNyY19hbHBoYTsKKyAgICAgICAgICAgIGlmIChtX2JGdWxsQ292ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7CisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjbGlwX3NjYW5bY29sXSAvIDI1NTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbikgeworICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhICogY292ZXJfc2Nhbltjb2xdICogY2xpcF9zY2FuW2NvbF0gLyAyNTUgLyAyNTU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAvIDI1NTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7CisgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAyNTUpIHsKKyAgICAgICAgICAgICAgICAgICAgKihGWF9EV09SRCopZGVzdF9zY2FuID0gbV9Db2xvcjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoZGVzdF9zY2FuWzNdID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IHNyY19hbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IG1fQmx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IG1fR3JlZW47CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gbV9SZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGRlc3Rfc2NhblszXSArIHNyY19hbHBoYSAtIGRlc3Rfc2NhblszXSAqIHNyY19hbHBoYSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gZGVzdF9hbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fQmx1ZSwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX0dyZWVuLCBhbHBoYV9yYXRpbyk7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fUmVkLCBhbHBoYV9yYXRpbyk7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAyOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gQnBwOworICAgICAgICB9CisgICAgfQorICAgIHZvaWQgQ29tcG9zaXRlU3BhblJHQihGWF9MUEJZVEUgZGVzdF9zY2FuLCBpbnQgQnBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Bhbl9sZWZ0LCBpbnQgc3Bhbl9sZW4sIEZYX0xQQllURSBjb3Zlcl9zY2FuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpcF9sZWZ0LCBpbnQgY2xpcF9yaWdodCwgRlhfTFBCWVRFIGNsaXBfc2NhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3RfZXh0cmFfYWxwaGFfc2NhbikKKyAgICB7CisgICAgICAgIGludCBjb2xfc3RhcnQgPSBzcGFuX2xlZnQgPCBjbGlwX2xlZnQgPyBjbGlwX2xlZnQgLSBzcGFuX2xlZnQgOiAwOworICAgICAgICBpbnQgY29sX2VuZCA9IChzcGFuX2xlZnQgKyBzcGFuX2xlbikgPCBjbGlwX3JpZ2h0ID8gc3Bhbl9sZW4gOiAoY2xpcF9yaWdodCAtIHNwYW5fbGVmdCk7CisgICAgICAgIGRlc3Rfc2NhbiArPSBjb2xfc3RhcnQgKiBCcHA7CisgICAgICAgIGlmIChtX2JSZ2JCeXRlT3JkZXIpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IGNvbF9zdGFydDsgY29sIDwgY29sX2VuZDsgY29sICsrKSB7CisgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYTsKKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7CisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjb3Zlcl9zY2FuW2NvbF0gKiBjbGlwX3NjYW5bY29sXSAvIDI1NSAvIDI1NTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhICogY292ZXJfc2Nhbltjb2xdIC8gMjU1OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMjU1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQnBwID09IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKEZYX0RXT1JEKilkZXN0X3NjYW4gPSBtX0NvbG9yOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChCcHAgPT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IG1fUmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IG1fR3JlZW47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gbV9CbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fUmVkLCBzcmNfYWxwaGEpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuKys7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgbV9HcmVlbiwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbisrOworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fQmx1ZSwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHAgLSAyOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoQnBwID09IDMgJiYgZGVzdF9leHRyYV9hbHBoYV9zY2FuKSB7CisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBjb2xfc3RhcnQ7IGNvbCA8IGNvbF9lbmQ7IGNvbCArKykgeworICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGE7CisgICAgICAgICAgICAgICAgaWYgKG1fYkZ1bGxDb3ZlcikgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhICogY2xpcF9zY2FuW2NvbF0gLyAyNTU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1IC8gMjU1OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMjU1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAoRlhfQllURSltX0JsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAoRlhfQllURSltX0dyZWVuOworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKEZYX0JZVEUpbV9SZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9leHRyYV9hbHBoYV9zY2FuKysgPSAoRlhfQllURSltX0FscGhhOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSAoKmRlc3RfZXh0cmFfYWxwaGFfc2NhbikgKyBzcmNfYWxwaGEgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpkZXN0X2V4dHJhX2FscGhhX3NjYW4pICogc3JjX2FscGhhIC8gMjU1OworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfZXh0cmFfYWxwaGFfc2NhbisrID0gZGVzdF9hbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgbV9CbHVlLCBhbHBoYV9yYXRpbyk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgbV9HcmVlbiwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fUmVkLCBhbHBoYV9yYXRpbyk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZXN0X2V4dHJhX2FscGhhX3NjYW4rKzsKKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gQnBwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgY29sID0gY29sX3N0YXJ0OyBjb2wgPCBjb2xfZW5kOyBjb2wgKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhOworICAgICAgICAgICAgICAgIGlmIChtX2JGdWxsQ292ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjb3Zlcl9zY2FuW2NvbF0gKiBjbGlwX3NjYW5bY29sXSAvIDI1NSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjb3Zlcl9zY2FuW2NvbF0gLyAyNTU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhID09IDI1NSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJwcCA9PSA0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihGWF9EV09SRCopZGVzdF9zY2FuID0gbV9Db2xvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQnBwID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBtX0JsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gbV9HcmVlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBtX1JlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX0JsdWUsIHNyY19hbHBoYSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgbV9HcmVlbiwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX1JlZCwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHAgLSAyOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIENvbXBvc2l0ZVNwYW5DTVlLKEZYX0xQQllURSBkZXN0X3NjYW4sIGludCBCcHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Bhbl9sZWZ0LCBpbnQgc3Bhbl9sZW4sIEZYX0xQQllURSBjb3Zlcl9zY2FuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsaXBfbGVmdCwgaW50IGNsaXBfcmlnaHQsIEZYX0xQQllURSBjbGlwX3NjYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9leHRyYV9hbHBoYV9zY2FuKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2JSZ2JCeXRlT3JkZXIpOworICAgICAgICBpbnQgY29sX3N0YXJ0ID0gc3Bhbl9sZWZ0IDwgY2xpcF9sZWZ0ID8gY2xpcF9sZWZ0IC0gc3Bhbl9sZWZ0IDogMDsKKyAgICAgICAgaW50IGNvbF9lbmQgPSAoc3Bhbl9sZWZ0ICsgc3Bhbl9sZW4pIDwgY2xpcF9yaWdodCA/IHNwYW5fbGVuIDogKGNsaXBfcmlnaHQgLSBzcGFuX2xlZnQpOworICAgICAgICBkZXN0X3NjYW4gKz0gY29sX3N0YXJ0ICogNDsKKyAgICAgICAgQnBwOworICAgICAgICBpZiAoZGVzdF9leHRyYV9hbHBoYV9zY2FuKSB7CisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBjb2xfc3RhcnQ7IGNvbCA8IGNvbF9lbmQ7IGNvbCArKykgeworICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGE7CisgICAgICAgICAgICAgICAgaWYgKG1fYkZ1bGxDb3ZlcikgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhICogY2xpcF9zY2FuW2NvbF0gLyAyNTU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBtX0FscGhhOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1IC8gMjU1OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAvIDI1NTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMjU1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqKEZYX0NNWUsqKWRlc3Rfc2NhbiA9IG1fQ29sb3I7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9leHRyYV9hbHBoYV9zY2FuID0gKEZYX0JZVEUpbV9BbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9ICgqZGVzdF9leHRyYV9hbHBoYV9zY2FuKSArIHNyY19hbHBoYSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKmRlc3RfZXh0cmFfYWxwaGFfc2NhbikgKiBzcmNfYWxwaGEgLyAyNTU7CisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9leHRyYV9hbHBoYV9zY2FuKysgPSBkZXN0X2FscGhhOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX1JlZCwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fR3JlZW4sIGFscGhhX3JhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX0JsdWUsIGFscGhhX3JhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX0dyYXksIGFscGhhX3JhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlc3RfZXh0cmFfYWxwaGFfc2NhbisrOworICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgY29sID0gY29sX3N0YXJ0OyBjb2wgPCBjb2xfZW5kOyBjb2wgKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhOworICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gbV9BbHBoYSAqIGNvdmVyX3NjYW5bY29sXSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1IC8gMjU1OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IG1fQWxwaGEgKiBjb3Zlcl9zY2FuW2NvbF0gLyAyNTU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAyNTUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICooRlhfQ01ZSyopZGVzdF9zY2FuID0gbV9Db2xvcjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX1JlZCwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX0dyZWVuLCBzcmNfYWxwaGEpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOworICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIG1fQmx1ZSwgc3JjX2FscGhhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBtX0dyYXksIHNyY19hbHBoYSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBTY2FubGluZT4gdm9pZCByZW5kZXIoY29uc3QgU2NhbmxpbmUmIHNsKQorICAgIHsKKyAgICAgICAgaWYgKG1fcE9yaURldmljZSA9PSBOVUxMICYmIGNvbXBvc2l0ZV9zcGFuID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnQgeSA9IHNsLnkoKTsKKyAgICAgICAgaWYgKHkgPCBtX0NsaXBCb3gudG9wIHx8IHkgPj0gbV9DbGlwQm94LmJvdHRvbSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBtX3BEZXZpY2UtPkdldEJ1ZmZlcigpICsgbV9wRGV2aWNlLT5HZXRQaXRjaCgpICogeTsKKyAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2Nhbl9leHRyYV9hbHBoYSA9IE5VTEw7CisgICAgICAgIENGWF9ESUJpdG1hcCogcEFscGhhTWFzayA9IG1fcERldmljZS0+bV9wQWxwaGFNYXNrOworICAgICAgICBpZiAocEFscGhhTWFzaykgeworICAgICAgICAgICAgZGVzdF9zY2FuX2V4dHJhX2FscGhhID0gcEFscGhhTWFzay0+R2V0QnVmZmVyKCkgKyBwQWxwaGFNYXNrLT5HZXRQaXRjaCgpICogeTsKKyAgICAgICAgfQorICAgICAgICBGWF9MUEJZVEUgb3JpX3NjYW4gPSBOVUxMOworICAgICAgICBpZiAobV9wT3JpRGV2aWNlKSB7CisgICAgICAgICAgICBvcmlfc2NhbiA9IG1fcE9yaURldmljZS0+R2V0QnVmZmVyKCkgKyBtX3BPcmlEZXZpY2UtPkdldFBpdGNoKCkgKiB5OworICAgICAgICB9CisgICAgICAgIGludCBCcHAgPSBtX3BEZXZpY2UtPkdldEJQUCgpIC8gODsKKyAgICAgICAgRlhfQk9PTCBiRGVzdEFscGhhID0gbV9wRGV2aWNlLT5IYXNBbHBoYSgpIHx8IG1fcERldmljZS0+SXNBbHBoYU1hc2soKTsKKyAgICAgICAgdW5zaWduZWQgbnVtX3NwYW5zID0gc2wubnVtX3NwYW5zKCk7CisgICAgICAgIHR5cGVuYW1lIFNjYW5saW5lOjpjb25zdF9pdGVyYXRvciBzcGFuID0gc2wuYmVnaW4oKTsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIGludCB4ID0gc3Bhbi0+eDsKKyAgICAgICAgICAgIEFTU0VSVChzcGFuLT5sZW4gPiAwKTsKKyAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3BvcyA9IE5VTEw7CisgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9leHRyYV9hbHBoYV9wb3MgPSBOVUxMOworICAgICAgICAgICAgRlhfTFBCWVRFIG9yaV9wb3MgPSBOVUxMOworICAgICAgICAgICAgaWYgKEJwcCkgeworICAgICAgICAgICAgICAgIG9yaV9wb3MgPSBvcmlfc2NhbiA/IG9yaV9zY2FuICsgeCAqIEJwcCA6IE5VTEw7CisgICAgICAgICAgICAgICAgZGVzdF9wb3MgPSBkZXN0X3NjYW4gKyB4ICogQnBwOworICAgICAgICAgICAgICAgIGRlc3RfZXh0cmFfYWxwaGFfcG9zID0gZGVzdF9zY2FuX2V4dHJhX2FscGhhID8gZGVzdF9zY2FuX2V4dHJhX2FscGhhICsgeCA6IE5VTEw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRlc3RfcG9zID0gZGVzdF9zY2FuICsgeCAvIDg7CisgICAgICAgICAgICAgICAgb3JpX3BvcyA9IG9yaV9zY2FuID8gb3JpX3NjYW4gKyB4IC8gOCA6IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGWF9MUEJZVEUgY2xpcF9wb3MgPSBOVUxMOworICAgICAgICAgICAgaWYgKG1fcENsaXBNYXNrKSB7CisgICAgICAgICAgICAgICAgY2xpcF9wb3MgPSBtX3BDbGlwTWFzay0+R2V0QnVmZmVyKCkgKyAoeSAtIG1fQ2xpcEJveC50b3ApICogbV9wQ2xpcE1hc2stPkdldFBpdGNoKCkgKyB4IC0gbV9DbGlwQm94LmxlZnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob3JpX3BvcykgeworICAgICAgICAgICAgICAgIENvbXBvc2l0ZVNwYW4oZGVzdF9wb3MsIG9yaV9wb3MsIEJwcCwgYkRlc3RBbHBoYSwgeCwgc3Bhbi0+bGVuLCBzcGFuLT5jb3ZlcnMsIG1fQ2xpcEJveC5sZWZ0LCBtX0NsaXBCb3gucmlnaHQsIGNsaXBfcG9zKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKHRoaXMtPipjb21wb3NpdGVfc3BhbikoZGVzdF9wb3MsIEJwcCwgeCwgc3Bhbi0+bGVuLCBzcGFuLT5jb3ZlcnMsIG1fQ2xpcEJveC5sZWZ0LCBtX0NsaXBCb3gucmlnaHQsIGNsaXBfcG9zLCBkZXN0X2V4dHJhX2FscGhhX3Bvcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZigtLW51bV9zcGFucyA9PSAwKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK3NwYW47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGWF9CT09MIEluaXQoQ0ZYX0RJQml0bWFwKiBwRGV2aWNlLCBDRlhfRElCaXRtYXAqIHBPcmlEZXZpY2UsIGNvbnN0IENGWF9DbGlwUmduKiBwQ2xpcFJnbiwgRlhfRFdPUkQgY29sb3IsIEZYX0JPT0wgYkZ1bGxDb3ZlciwgRlhfQk9PTCBiUmdiQnl0ZU9yZGVyLAorICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZyA9IDAsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMKQorICAgIHsKKyAgICAgICAgbV9wRGV2aWNlID0gcERldmljZTsKKyAgICAgICAgbV9wQ2xpcFJnbiA9IHBDbGlwUmduOworICAgICAgICBjb21wb3NpdGVfc3BhbiA9IE5VTEw7CisgICAgICAgIG1fYlJnYkJ5dGVPcmRlciA9IGJSZ2JCeXRlT3JkZXI7CisgICAgICAgIG1fcE9yaURldmljZSA9IHBPcmlEZXZpY2U7CisgICAgICAgIGlmIChtX3BDbGlwUmduKSB7CisgICAgICAgICAgICBtX0NsaXBCb3ggPSBtX3BDbGlwUmduLT5HZXRCb3goKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fQ2xpcEJveC5sZWZ0ID0gbV9DbGlwQm94LnRvcCA9IDA7CisgICAgICAgICAgICBtX0NsaXBCb3gucmlnaHQgPSBtX3BEZXZpY2UtPkdldFdpZHRoKCk7CisgICAgICAgICAgICBtX0NsaXBCb3guYm90dG9tID0gbV9wRGV2aWNlLT5HZXRIZWlnaHQoKTsKKyAgICAgICAgfQorICAgICAgICBtX3BDbGlwTWFzayA9IE5VTEw7CisgICAgICAgIGlmIChtX3BDbGlwUmduICYmIG1fcENsaXBSZ24tPkdldFR5cGUoKSA9PSBDRlhfQ2xpcFJnbjo6TWFza0YpIHsKKyAgICAgICAgICAgIG1fcENsaXBNYXNrID0gbV9wQ2xpcFJnbi0+R2V0TWFzaygpOworICAgICAgICB9CisgICAgICAgIG1fYkZ1bGxDb3ZlciA9IGJGdWxsQ292ZXI7CisgICAgICAgIEZYX0JPT0wgYk9iamVjdENNWUsgPSBGWEdFVEZMQUdfQ09MT1JUWVBFKGFscGhhX2ZsYWcpOworICAgICAgICBGWF9CT09MIGJEZXZpY2VDTVlLID0gcERldmljZS0+SXNDbXlrSW1hZ2UoKTsKKyAgICAgICAgbV9BbHBoYSA9IGJPYmplY3RDTVlLID8gRlhHRVRGTEFHX0FMUEhBX0ZJTEwoYWxwaGFfZmxhZykgOiBGWEFSR0JfQShjb2xvcik7CisgICAgICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBOVUxMOworICAgICAgICBpZiAoIUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCkgfHwgIUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpKSB7CisgICAgICAgICAgICBwSWNjVHJhbnNmb3JtID0gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9wRGV2aWNlLT5HZXRCUFAoKSA9PSA4KSB7CisgICAgICAgICAgICBBU1NFUlQoIW1fYlJnYkJ5dGVPcmRlcik7CisgICAgICAgICAgICBjb21wb3NpdGVfc3BhbiA9ICZDRlhfUmVuZGVyZXI6OkNvbXBvc2l0ZVNwYW5HcmF5OworICAgICAgICAgICAgaWYgKG1fcERldmljZS0+SXNBbHBoYU1hc2soKSkgeworICAgICAgICAgICAgICAgIG1fR3JheSA9IDI1NTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSBncmF5OworICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGJPYmplY3RDTVlLID8gRlhDTVlLX1RPRElCKGNvbG9yKSA6IEZYQVJHQl9UT0RJQihjb2xvcik7CisgICAgICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sICZncmF5LCAoRlhfTFBDQllURSkmY29sb3IsIDEpOworICAgICAgICAgICAgICAgICAgICBtX0dyYXkgPSBncmF5OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChiT2JqZWN0Q01ZSykgeworICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSByLCBnLCBiOworICAgICAgICAgICAgICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IxKEZYU1lTX0dldENWYWx1ZShjb2xvciksIEZYU1lTX0dldE1WYWx1ZShjb2xvciksIEZYU1lTX0dldFlWYWx1ZShjb2xvciksIEZYU1lTX0dldEtWYWx1ZShjb2xvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciwgZywgYik7CisgICAgICAgICAgICAgICAgICAgICAgICBtX0dyYXkgPSBGWFJHQjJHUkFZKHIsIGcsIGIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9HcmF5ID0gRlhSR0IyR1JBWShGWEFSR0JfUihjb2xvciksIEZYQVJHQl9HKGNvbG9yKSwgRlhBUkdCX0IoY29sb3IpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICAgIGlmIChiRGV2aWNlQ01ZSykgeworICAgICAgICAgICAgQVNTRVJUKCFtX2JSZ2JCeXRlT3JkZXIpOworICAgICAgICAgICAgY29tcG9zaXRlX3NwYW4gPSAmQ0ZYX1JlbmRlcmVyOjpDb21wb3NpdGVTcGFuQ01ZSzsKKyAgICAgICAgICAgIGlmIChiT2JqZWN0Q01ZSykgeworICAgICAgICAgICAgICAgIG1fQ29sb3IgPSBGWENNWUtfVE9ESUIoY29sb3IpOworICAgICAgICAgICAgICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7CisgICAgICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIChGWF9MUEJZVEUpJm1fQ29sb3IsIChGWF9MUENCWVRFKSZtX0NvbG9yLCAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghcEljY1RyYW5zZm9ybSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbG9yID0gRlhBUkdCX1RPRElCKGNvbG9yKTsKKyAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCAoRlhfTFBCWVRFKSZtX0NvbG9yLCAoRlhfTFBDQllURSkmY29sb3IsIDEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9SZWQgPSAoKEZYX0xQQllURSkmbV9Db2xvcilbMF07CisgICAgICAgICAgICBtX0dyZWVuID0gKChGWF9MUEJZVEUpJm1fQ29sb3IpWzFdOworICAgICAgICAgICAgbV9CbHVlID0gKChGWF9MUEJZVEUpJm1fQ29sb3IpWzJdOworICAgICAgICAgICAgbV9HcmF5ID0gKChGWF9MUEJZVEUpJm1fQ29sb3IpWzNdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29tcG9zaXRlX3NwYW4gPSAocERldmljZS0+R2V0Rm9ybWF0KCkgPT0gRlhESUJfQXJnYikgPyAmQ0ZYX1JlbmRlcmVyOjpDb21wb3NpdGVTcGFuQVJHQiA6ICZDRlhfUmVuZGVyZXI6OkNvbXBvc2l0ZVNwYW5SR0I7CisgICAgICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgeworICAgICAgICAgICAgICAgIGNvbG9yID0gYk9iamVjdENNWUsgPyBGWENNWUtfVE9ESUIoY29sb3IpIDogRlhBUkdCX1RPRElCKGNvbG9yKTsKKyAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCAoRlhfTFBCWVRFKSZtX0NvbG9yLCAoRlhfTFBDQllURSkmY29sb3IsIDEpOworICAgICAgICAgICAgICAgICgoRlhfTFBCWVRFKSZtX0NvbG9yKVszXSA9IG1fQWxwaGE7CisgICAgICAgICAgICAgICAgbV9SZWQgPSAoKEZYX0xQQllURSkmbV9Db2xvcilbMl07CisgICAgICAgICAgICAgICAgbV9HcmVlbiA9ICgoRlhfTFBCWVRFKSZtX0NvbG9yKVsxXTsKKyAgICAgICAgICAgICAgICBtX0JsdWUgPSAoKEZYX0xQQllURSkmbV9Db2xvcilbMF07CisgICAgICAgICAgICAgICAgaWYgKG1fYlJnYkJ5dGVPcmRlcikgeworICAgICAgICAgICAgICAgICAgICBtX0NvbG9yID0gRlhBUkdCX1RPRElCKG1fQ29sb3IpOworICAgICAgICAgICAgICAgICAgICBtX0NvbG9yID0gRlhBUkdCX1RPQkdST1JERVJESUIobV9Db2xvcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoYk9iamVjdENNWUspIHsKKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSByLCBnLCBiOworICAgICAgICAgICAgICAgICAgICBBZG9iZUNNWUtfdG9fc1JHQjEoRlhTWVNfR2V0Q1ZhbHVlKGNvbG9yKSwgRlhTWVNfR2V0TVZhbHVlKGNvbG9yKSwgRlhTWVNfR2V0WVZhbHVlKGNvbG9yKSwgRlhTWVNfR2V0S1ZhbHVlKGNvbG9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIsIGcsIGIpOworICAgICAgICAgICAgICAgICAgICBtX0NvbG9yID0gRlhBUkdCX01BS0UobV9BbHBoYSwgciwgZywgYik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2JSZ2JCeXRlT3JkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fQ29sb3IgPSBGWEFSR0JfVE9CR1JPUkRFUkRJQihtX0NvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fQ29sb3IgPSBGWEFSR0JfVE9ESUIobV9Db2xvcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9SZWQgPSByOworICAgICAgICAgICAgICAgICAgICBtX0dyZWVuID0gZzsKKyAgICAgICAgICAgICAgICAgICAgbV9CbHVlID0gYjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9iUmdiQnl0ZU9yZGVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX0NvbG9yID0gRlhBUkdCX1RPQkdST1JERVJESUIoY29sb3IpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9Db2xvciA9IEZYQVJHQl9UT0RJQihjb2xvcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgQXJnYkRlY29kZShjb2xvciwgbV9BbHBoYSwgbV9SZWQsIG1fR3JlZW4sIG1fQmx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChtX3BEZXZpY2UtPkdldEJQUCgpID09IDEpIHsKKyAgICAgICAgICAgIGNvbXBvc2l0ZV9zcGFuID0gJkNGWF9SZW5kZXJlcjo6Q29tcG9zaXRlU3BhbjFicHA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorfTsKK0ZYX0JPT0wgQ0ZYX0FnZ0RldmljZURyaXZlcjo6UmVuZGVyUmFzdGVyaXplcihyYXN0ZXJpemVyX3NjYW5saW5lX2FhJiByYXN0ZXJpemVyLCBGWF9EV09SRCBjb2xvciwgRlhfQk9PTCBiRnVsbENvdmVyLCBGWF9CT09MIGJHcm91cEtub2Nrb3V0LAorICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkKK3sKKyAgICBDRlhfRElCaXRtYXAqIHB0ID0gYkdyb3VwS25vY2tvdXQgPyBtX3BPcmlEZXZpY2UgOiBOVUxMOworICAgIENGWF9SZW5kZXJlciByZW5kZXI7CisgICAgaWYgKCFyZW5kZXIuSW5pdChtX3BCaXRtYXAsIHB0LCBtX3BDbGlwUmduLCBjb2xvciwgYkZ1bGxDb3ZlciwgbV9iUmdiQnl0ZU9yZGVyLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKSkgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIHNjYW5saW5lX3U4IHNjYW5saW5lOworICAgIHJlbmRlcl9zY2FubGluZXMocmFzdGVyaXplciwgc2NhbmxpbmUsIHJlbmRlciwgKG1fRmlsbEZsYWdzICYgRlhGSUxMX05PUEFUSFNNT09USCkgIT0gMCk7CisgICAgcmV0dXJuIFRSVUU7Cit9CitGWF9CT09MCUNGWF9BZ2dEZXZpY2VEcml2ZXI6OkRyYXdQYXRoKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZmlsbF9jb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgc3Ryb2tlX2NvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmlsbF9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogcEljY1RyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsZW5kX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgaWYgKGJsZW5kX3R5cGUgIT0gRlhESUJfQkxFTkRfTk9STUFMKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgaWYgKEdldEJ1ZmZlcigpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICAgIG1fRmlsbEZsYWdzID0gZmlsbF9tb2RlOworICAgIGlmICgoZmlsbF9tb2RlICYgMykgJiYgZmlsbF9jb2xvcikgeworICAgICAgICBDQWdnX1BhdGhEYXRhIHBhdGhfZGF0YTsKKyAgICAgICAgcGF0aF9kYXRhLkJ1aWxkUGF0aChwUGF0aERhdGEsIHBPYmplY3QyRGV2aWNlKTsKKyAgICAgICAgcmFzdGVyaXplcl9zY2FubGluZV9hYSByYXN0ZXJpemVyOworICAgICAgICByYXN0ZXJpemVyLmNsaXBfYm94KDAuMGYsIDAuMGYsIChGWF9GTE9BVCkoR2V0RGV2aWNlQ2FwcyhGWERDX1BJWEVMX1dJRFRIKSksIChGWF9GTE9BVCkoR2V0RGV2aWNlQ2FwcyhGWERDX1BJWEVMX0hFSUdIVCkpKTsKKyAgICAgICAgcmFzdGVyaXplci5hZGRfcGF0aChwYXRoX2RhdGEubV9QYXRoRGF0YSk7CisgICAgICAgIHJhc3Rlcml6ZXIuZmlsbGluZ19ydWxlKChmaWxsX21vZGUgJiAzKSA9PSBGWEZJTExfV0lORElORyA/IGZpbGxfbm9uX3plcm8gOiBmaWxsX2V2ZW5fb2RkKTsKKyAgICAgICAgaWYgKCFSZW5kZXJSYXN0ZXJpemVyKHJhc3Rlcml6ZXIsIGZpbGxfY29sb3IsIGZpbGxfbW9kZSAmIEZYRklMTF9GVUxMQ09WRVIsIEZBTFNFLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKSkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfQorICAgIGludCBzdHJva2VfYWxwaGEgPSBGWEdFVEZMQUdfQ09MT1JUWVBFKGFscGhhX2ZsYWcpID8gRlhHRVRGTEFHX0FMUEhBX1NUUk9LRShhbHBoYV9mbGFnKSA6IEZYQVJHQl9BKHN0cm9rZV9jb2xvcik7CisgICAgaWYgKHBHcmFwaFN0YXRlICYmIHN0cm9rZV9hbHBoYSkgeworICAgICAgICBpZiAoZmlsbF9tb2RlICYgRlhfWkVST0FSRUFfRklMTCkgeworICAgICAgICAgICAgQ0FnZ19QYXRoRGF0YSBwYXRoX2RhdGE7CisgICAgICAgICAgICBwYXRoX2RhdGEuQnVpbGRQYXRoKHBQYXRoRGF0YSwgcE9iamVjdDJEZXZpY2UpOworICAgICAgICAgICAgcmFzdGVyaXplcl9zY2FubGluZV9hYSByYXN0ZXJpemVyOworICAgICAgICAgICAgcmFzdGVyaXplci5jbGlwX2JveCgwLjBmLCAwLjBmLCAoRlhfRkxPQVQpKEdldERldmljZUNhcHMoRlhEQ19QSVhFTF9XSURUSCkpLCAoRlhfRkxPQVQpKEdldERldmljZUNhcHMoRlhEQ19QSVhFTF9IRUlHSFQpKSk7CisgICAgICAgICAgICBSYXN0ZXJpemVTdHJva2UocmFzdGVyaXplciwgcGF0aF9kYXRhLm1fUGF0aERhdGEsIE5VTEwsIHBHcmFwaFN0YXRlLCAxLCBGQUxTRSwgZmlsbF9tb2RlICYgRlhfU1RST0tFX1RFWFRfTU9ERSk7CisgICAgICAgICAgICBpbnQgZmlsbF9mbGFnID0gRlhHRVRGTEFHX0NPTE9SVFlQRShhbHBoYV9mbGFnKSA8PCA4IHwgRlhHRVRGTEFHX0FMUEhBX1NUUk9LRShhbHBoYV9mbGFnKTsKKyAgICAgICAgICAgIGlmICghUmVuZGVyUmFzdGVyaXplcihyYXN0ZXJpemVyLCBzdHJva2VfY29sb3IsIGZpbGxfbW9kZSAmIEZYRklMTF9GVUxMQ09WRVIsIG1fYkdyb3VwS25vY2tvdXQsIGZpbGxfZmxhZywgcEljY1RyYW5zZm9ybSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDEsIG1hdHJpeDI7CisgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSkgeworICAgICAgICAgICAgbWF0cml4MS5hID0gRlhfTUFYKEZYU1lTX2ZhYnMocE9iamVjdDJEZXZpY2UtPmEpLCBGWFNZU19mYWJzKHBPYmplY3QyRGV2aWNlLT5iKSk7CisgICAgICAgICAgICBtYXRyaXgxLmQgPSBtYXRyaXgxLmE7CisgICAgICAgICAgICBtYXRyaXgyLlNldChwT2JqZWN0MkRldmljZS0+YSAvIG1hdHJpeDEuYSwgcE9iamVjdDJEZXZpY2UtPmIgLyBtYXRyaXgxLmEsCisgICAgICAgICAgICAgICAgICAgICAgICBwT2JqZWN0MkRldmljZS0+YyAvIG1hdHJpeDEuZCwgcE9iamVjdDJEZXZpY2UtPmQgLyBtYXRyaXgxLmQsCisgICAgICAgICAgICAgICAgICAgICAgICAwLCAwKTsKKyAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbXRSZXJ2ZXNlOworICAgICAgICAgICAgbXRSZXJ2ZXNlLlNldFJldmVyc2UobWF0cml4Mik7CisgICAgICAgICAgICBtYXRyaXgxID0gKnBPYmplY3QyRGV2aWNlOworICAgICAgICAgICAgbWF0cml4MS5Db25jYXQobXRSZXJ2ZXNlKTsKKyAgICAgICAgfQorICAgICAgICBDQWdnX1BhdGhEYXRhIHBhdGhfZGF0YTsKKyAgICAgICAgcGF0aF9kYXRhLkJ1aWxkUGF0aChwUGF0aERhdGEsICZtYXRyaXgxKTsKKyAgICAgICAgcmFzdGVyaXplcl9zY2FubGluZV9hYSByYXN0ZXJpemVyOworICAgICAgICByYXN0ZXJpemVyLmNsaXBfYm94KDAuMGYsIDAuMGYsIChGWF9GTE9BVCkoR2V0RGV2aWNlQ2FwcyhGWERDX1BJWEVMX1dJRFRIKSksIChGWF9GTE9BVCkoR2V0RGV2aWNlQ2FwcyhGWERDX1BJWEVMX0hFSUdIVCkpKTsKKyAgICAgICAgUmFzdGVyaXplU3Ryb2tlKHJhc3Rlcml6ZXIsIHBhdGhfZGF0YS5tX1BhdGhEYXRhLCAmbWF0cml4MiwgcEdyYXBoU3RhdGUsIG1hdHJpeDEuYSwgRkFMU0UsIGZpbGxfbW9kZSAmIEZYX1NUUk9LRV9URVhUX01PREUpOworICAgICAgICBpbnQgZmlsbF9mbGFnID0gRlhHRVRGTEFHX0NPTE9SVFlQRShhbHBoYV9mbGFnKSA8PCA4IHwgRlhHRVRGTEFHX0FMUEhBX1NUUk9LRShhbHBoYV9mbGFnKTsKKyAgICAgICAgaWYgKCFSZW5kZXJSYXN0ZXJpemVyKHJhc3Rlcml6ZXIsIHN0cm9rZV9jb2xvciwgZmlsbF9tb2RlICYgRlhGSUxMX0ZVTExDT1ZFUiwgbV9iR3JvdXBLbm9ja291dCwgZmlsbF9mbGFnLCBwSWNjVHJhbnNmb3JtKSkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQordm9pZCBSZ2JCeXRlT3JkZXJTZXRQaXhlbChDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCB4LCBpbnQgeSwgRlhfRFdPUkQgYXJnYikKK3sKKyAgICBpZiAoeCA8IDAgfHwgeCA+PSBwQml0bWFwLT5HZXRXaWR0aCgpIHx8IHkgPCAwIHx8IHkgPj0gcEJpdG1hcC0+R2V0SGVpZ2h0KCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBGWF9MUEJZVEUgcG9zID0gKEZYX0JZVEUqKXBCaXRtYXAtPkdldEJ1ZmZlcigpICsgeSAqIHBCaXRtYXAtPkdldFBpdGNoKCkgKyB4ICogcEJpdG1hcC0+R2V0QlBQKCkgLyA4OworICAgIGlmIChwQml0bWFwLT5HZXRGb3JtYXQoKSA9PSBGWERJQl9BcmdiKSB7CisgICAgICAgIEZYQVJHQl9TRVRSR0JPUkRFUkRJQihwb3MsIEFyZ2JHYW1tYShhcmdiKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGFscGhhID0gRlhBUkdCX0EoYXJnYik7CisgICAgICAgIHBvc1swXSA9IChGWEFSR0JfUihhcmdiKSAqIGFscGhhICsgcG9zWzBdICogKDI1NSAtIGFscGhhKSkgLyAyNTU7CisgICAgICAgIHBvc1sxXSA9IChGWEFSR0JfRyhhcmdiKSAqIGFscGhhICsgcG9zWzFdICogKDI1NSAtIGFscGhhKSkgLyAyNTU7CisgICAgICAgIHBvc1syXSA9IChGWEFSR0JfQihhcmdiKSAqIGFscGhhICsgcG9zWzJdICogKDI1NSAtIGFscGhhKSkgLyAyNTU7CisgICAgfQorfQordm9pZCBSZ2JCeXRlT3JkZXJDb21wb3NpdGVSZWN0KENGWF9ESUJpdG1hcCogcEJpdG1hcCwgaW50IGxlZnQsIGludCB0b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCwgRlhfQVJHQiBhcmdiKQoreworICAgIGludCBzcmNfYWxwaGEgPSBGWEFSR0JfQShhcmdiKTsKKyAgICBpZiAoc3JjX2FscGhhID09IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBGWF9SRUNUIHJlY3QobGVmdCwgdG9wLCBsZWZ0ICsgd2lkdGgsIHRvcCArIGhlaWdodCk7CisgICAgcmVjdC5JbnRlcnNlY3QoMCwgMCwgcEJpdG1hcC0+R2V0V2lkdGgoKSwgcEJpdG1hcC0+R2V0SGVpZ2h0KCkpOworICAgIHdpZHRoID0gcmVjdC5XaWR0aCgpOworICAgIGludCBzcmNfciA9IEZYQVJHQl9SKGFyZ2IpLCBzcmNfZyA9IEZYQVJHQl9HKGFyZ2IpLCBzcmNfYiA9IEZYQVJHQl9CKGFyZ2IpOworICAgIGludCBCcHAgPSBwQml0bWFwLT5HZXRCUFAoKSAvIDg7CisgICAgRlhfQk9PTCBiQWxwaGEgPSBwQml0bWFwLT5IYXNBbHBoYSgpOworICAgIGludCBkaWJfYXJnYiA9IEZYQVJHQl9UT0JHUk9SREVSRElCKGFyZ2IpOworICAgIEZYX0JZVEUqIHBCdWZmZXIgPSBwQml0bWFwLT5HZXRCdWZmZXIoKTsKKyAgICBpZiAoc3JjX2FscGhhID09IDI1NSkgeworICAgICAgICBmb3IgKGludCByb3cgPSByZWN0LnRvcDsgcm93IDwgcmVjdC5ib3R0b207IHJvdyArKykgeworICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IHBCdWZmZXIgKyByb3cgKiBwQml0bWFwLT5HZXRQaXRjaCgpICsgcmVjdC5sZWZ0ICogQnBwOworICAgICAgICAgICAgaWYgKEJwcCA9PSA0KSB7CisgICAgICAgICAgICAgICAgRlhfRFdPUkQqIHNjYW4gPSAoRlhfRFdPUkQqKWRlc3Rfc2NhbjsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7CisgICAgICAgICAgICAgICAgICAgICpzY2FuICsrID0gZGliX2FyZ2I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7CisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gKysgPSBzcmNfcjsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiArKyA9IHNyY19nOworICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gc3JjX2I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3JjX3IgPSBGWF9HQU1NQShzcmNfcik7CisgICAgc3JjX2cgPSBGWF9HQU1NQShzcmNfZyk7CisgICAgc3JjX2IgPSBGWF9HQU1NQShzcmNfYik7CisgICAgZm9yIChpbnQgcm93ID0gcmVjdC50b3A7IHJvdyA8IHJlY3QuYm90dG9tOyByb3cgKyspIHsKKyAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IHBCdWZmZXIgKyByb3cgKiBwQml0bWFwLT5HZXRQaXRjaCgpICsgcmVjdC5sZWZ0ICogQnBwOworICAgICAgICBpZiAoYkFscGhhKSB7CisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7CisgICAgICAgICAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gZGVzdF9zY2FuWzNdOworICAgICAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgRlhBUkdCX1NFVFJHQk9SREVSRElCKGRlc3Rfc2NhbiwgRlhBUkdCX01BS0Uoc3JjX2FscGhhLCBzcmNfciwgc3JjX2csIHNyY19iKSk7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7CisgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gZGVzdF9hbHBoYTsKKyAgICAgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOworICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfciwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgIGRlc3Rfc2NhbisrOworICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfZywgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgIGRlc3Rfc2NhbisrOworICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfYiwgYWxwaGFfcmF0aW8pOworICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgeworICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKCpkZXN0X3NjYW4pLCBzcmNfciwgc3JjX2FscGhhKSk7CisgICAgICAgICAgICAgICAgZGVzdF9zY2FuKys7CisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoKmRlc3Rfc2NhbiksIHNyY19nLCBzcmNfYWxwaGEpKTsKKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4rKzsKKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQSgqZGVzdF9zY2FuKSwgc3JjX2IsIHNyY19hbHBoYSkpOworICAgICAgICAgICAgICAgIGRlc3Rfc2NhbisrOworICAgICAgICAgICAgICAgIGlmIChCcHAgPT0gNCkgeworICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4rKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9Cit2b2lkIFJnYkJ5dGVPcmRlclRyYW5zZmVyQml0bWFwKENGWF9ESUJpdG1hcCogcEJpdG1hcCwgaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmNCaXRtYXAsIGludCBzcmNfbGVmdCwgaW50IHNyY190b3ApCit7CisgICAgaWYgKHBCaXRtYXAgPT0gTlVMTCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHBCaXRtYXAtPkdldE92ZXJsYXBSZWN0KGRlc3RfbGVmdCwgZGVzdF90b3AsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAtPkdldFdpZHRoKCksIHBTcmNCaXRtYXAtPkdldEhlaWdodCgpLCBzcmNfbGVmdCwgc3JjX3RvcCwgTlVMTCk7CisgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgQnBwID0gcEJpdG1hcC0+R2V0QlBQKCkgLyA4OworICAgIEZYRElCX0Zvcm1hdCBkZXN0X2Zvcm1hdCA9IHBCaXRtYXAtPkdldEZvcm1hdCgpOworICAgIEZYRElCX0Zvcm1hdCBzcmNfZm9ybWF0ID0gcFNyY0JpdG1hcC0+R2V0Rm9ybWF0KCk7CisgICAgaW50IHBpdGNoID0gcEJpdG1hcC0+R2V0UGl0Y2goKTsKKyAgICBGWF9CWVRFKiBidWZmZXIgPSBwQml0bWFwLT5HZXRCdWZmZXIoKTsKKyAgICBpZiAoZGVzdF9mb3JtYXQgPT0gc3JjX2Zvcm1hdCkgeworICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgeworICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGJ1ZmZlciArIChkZXN0X3RvcCArIHJvdykgKiBwaXRjaCArIGRlc3RfbGVmdCAqIEJwcDsKKyAgICAgICAgICAgIEZYX0xQQllURSBzcmNfc2NhbiA9IChGWF9MUEJZVEUpcFNyY0JpdG1hcC0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdykgKyBzcmNfbGVmdCAqIEJwcDsKKyAgICAgICAgICAgIGlmIChCcHAgPT0gNCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsKKyAgICAgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKHNyY19zY2FuWzNdLCBzcmNfc2NhblswXSwgc3JjX3NjYW5bMV0sIHNyY19zY2FuWzJdKSk7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0OworICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSA0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgeworICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBzcmNfc2NhblsyXTsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX3NjYW5bMV07CisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IHNyY19zY2FuWzBdOworICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBzcmNfcGl0Y2ggPSBwU3JjQml0bWFwLT5HZXRQaXRjaCgpOworICAgIEZYX0FSR0IqIHNyY19wYWwgPSBwU3JjQml0bWFwLT5HZXRQYWxldHRlKCk7CisgICAgRlhfTFBCWVRFIGRlc3RfYnVmID0gYnVmZmVyICsgZGVzdF90b3AgKiBwaXRjaCArIGRlc3RfbGVmdCAqIEJwcDsKKyAgICBpZiAoZGVzdF9mb3JtYXQgPT0gRlhESUJfUmdiKSB7CisgICAgICAgIGlmIChzcmNfZm9ybWF0ID09IEZYRElCX1JnYjMyKSB7CisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgeworICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIHBpdGNoOworICAgICAgICAgICAgICAgIEZYX0xQQllURSBzcmNfc2NhbiA9IChGWF9CWVRFKilwU3JjQml0bWFwLT5HZXRTY2FubGluZShzcmNfdG9wICsgcm93KSArIHNyY19sZWZ0ICogNDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7CisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IHNyY19zY2FuWzJdOworICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBzcmNfc2NhblsxXTsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX3NjYW5bMF07CisgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKEZBTFNFKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGVzdF9mb3JtYXQgPT0gRlhESUJfQXJnYiB8fCBkZXN0X2Zvcm1hdCA9PSBGWERJQl9SZ2IzMikgeworICAgICAgICBpZiAoc3JjX2Zvcm1hdCA9PSBGWERJQl9SZ2IpIHsKKyAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7CisgICAgICAgICAgICAgICAgRlhfQllURSogZGVzdF9zY2FuID0gKEZYX0JZVEUqKShkZXN0X2J1ZiArIHJvdyAqIHBpdGNoKTsKKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgc3JjX3NjYW4gPSAoRlhfQllURSopcFNyY0JpdG1hcC0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdykgKyBzcmNfbGVmdCAqIDM7CisgICAgICAgICAgICAgICAgaWYgKHNyY19mb3JtYXQgPT0gRlhESUJfQXJnYikgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBGWEFSR0JfU0VURElCKGRlc3Rfc2NhbiwgRlhBUkdCX01BS0UoMHhmZiwgRlhfR0FNTUEoc3JjX3NjYW5bMF0pLCBGWF9HQU1NQShzcmNfc2NhblsxXSksIEZYX0dBTU1BKHNyY19zY2FuWzJdKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgeworICAgICAgICAgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKDB4ZmYsIHNyY19zY2FuWzBdLCBzcmNfc2NhblsxXSwgc3JjX3NjYW5bMl0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0OworICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzcmNfZm9ybWF0ID09IEZYRElCX1JnYjMyKSB7CisgICAgICAgICAgICBBU1NFUlQoZGVzdF9mb3JtYXQgPT0gRlhESUJfQXJnYik7CisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgeworICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIHBpdGNoOworICAgICAgICAgICAgICAgIEZYX0xQQllURSBzcmNfc2NhbiA9IChGWF9MUEJZVEUpKHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQgKiA0KTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sKyspIHsKKyAgICAgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKDB4ZmYsIHNyY19zY2FuWzBdLCBzcmNfc2NhblsxXSwgc3JjX3NjYW5bMl0pKTsKKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gICs9IDQ7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChGQUxTRSk7CisgICAgfQorfQorRlhfQVJHQiBfRGVmYXVsdENNWUsyQVJHQihGWF9DTVlLIGNteWssIEZYX0JZVEUgYWxwaGEpCit7CisgICAgRlhfQllURSByLCBnLCBiOworICAgIEFkb2JlQ01ZS190b19zUkdCMShGWFNZU19HZXRDVmFsdWUoY215ayksIEZYU1lTX0dldE1WYWx1ZShjbXlrKSwgRlhTWVNfR2V0WVZhbHVlKGNteWspLCBGWFNZU19HZXRLVmFsdWUoY215ayksCisgICAgICAgICAgICAgICAgICAgICAgIHIsIGcsIGIpOworICAgIHJldHVybiBBcmdiRW5jb2RlKGFscGhhLCByLCBnLCBiKTsKK30KK0ZYX0JPT0wgX0RpYlNldFBpeGVsKENGWF9ESUJpdG1hcCogcERldmljZSwgaW50IHgsIGludCB5LCBGWF9EV09SRCBjb2xvciwgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pCit7CisgICAgRlhfQk9PTCBiT2JqQ01ZSyA9IEZYR0VURkxBR19DT0xPUlRZUEUoYWxwaGFfZmxhZyk7CisgICAgaW50IGFscGhhID0gYk9iakNNWUsgPyBGWEdFVEZMQUdfQUxQSEFfRklMTChhbHBoYV9mbGFnKSA6IEZYQVJHQl9BKGNvbG9yKTsKKyAgICBpZiAocEljY1RyYW5zZm9ybSkgeworICAgICAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7CisgICAgICAgIGNvbG9yID0gYk9iakNNWUsgPyBGWENNWUtfVE9ESUIoY29sb3IpIDogRlhBUkdCX1RPRElCKGNvbG9yKTsKKyAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgKEZYX0xQQllURSkmY29sb3IsIChGWF9MUEJZVEUpJmNvbG9yLCAxKTsKKyAgICAgICAgY29sb3IgPSBiT2JqQ01ZSyA/IEZYQ01ZS19UT0RJQihjb2xvcikgOiBGWEFSR0JfVE9ESUIoY29sb3IpOworICAgICAgICBpZiAoIXBEZXZpY2UtPklzQ215a0ltYWdlKCkpIHsKKyAgICAgICAgICAgIGNvbG9yID0gKGNvbG9yICYgMHhmZmZmZmYpIHwgKGFscGhhIDw8IDI0KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChwRGV2aWNlLT5Jc0NteWtJbWFnZSgpKSB7CisgICAgICAgICAgICBpZiAoIWJPYmpDTVlLKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGJPYmpDTVlLKSB7CisgICAgICAgICAgICAgICAgY29sb3IgPSBfRGVmYXVsdENNWUsyQVJHQihjb2xvciwgYWxwaGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHBEZXZpY2UtPlNldFBpeGVsKHgsIHksIGNvbG9yKTsKKyAgICBpZiAocERldmljZS0+bV9wQWxwaGFNYXNrKSB7CisgICAgICAgIHBEZXZpY2UtPm1fcEFscGhhTWFzay0+U2V0UGl4ZWwoeCwgeSwgYWxwaGEgPDwgMjQpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KK0ZYX0JPT0wgQ0ZYX0FnZ0RldmljZURyaXZlcjo6U2V0UGl4ZWwoaW50IHgsIGludCB5LCBGWF9EV09SRCBjb2xvciwgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pCit7CisgICAgaWYgKG1fcEJpdG1hcC0+R2V0QnVmZmVyKCkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisgICAgaWYgKCFDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpIHx8ICFDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKSkgeworICAgICAgICBwSWNjVHJhbnNmb3JtID0gTlVMTDsKKyAgICB9CisgICAgaWYgKG1fcENsaXBSZ24gPT0gTlVMTCkgeworICAgICAgICBpZiAobV9iUmdiQnl0ZU9yZGVyKSB7CisgICAgICAgICAgICBSZ2JCeXRlT3JkZXJTZXRQaXhlbChtX3BCaXRtYXAsIHgsIHksIGNvbG9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBfRGliU2V0UGl4ZWwobV9wQml0bWFwLCB4LCB5LCBjb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fcENsaXBSZ24tPkdldEJveCgpLkNvbnRhaW5zKHgsIHkpKSB7CisgICAgICAgIGlmIChtX3BDbGlwUmduLT5HZXRUeXBlKCkgPT0gQ0ZYX0NsaXBSZ246OlJlY3RJKSB7CisgICAgICAgICAgICBpZiAobV9iUmdiQnl0ZU9yZGVyKSB7CisgICAgICAgICAgICAgICAgUmdiQnl0ZU9yZGVyU2V0UGl4ZWwobV9wQml0bWFwLCB4LCB5LCBjb2xvcik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBfRGliU2V0UGl4ZWwobV9wQml0bWFwLCB4LCB5LCBjb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobV9wQ2xpcFJnbi0+R2V0VHlwZSgpID09IENGWF9DbGlwUmduOjpNYXNrRikgeworICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQml0bWFwKiBwTWFzayA9IG1fcENsaXBSZ24tPkdldE1hc2soKTsKKyAgICAgICAgICAgIEZYX0JPT0wgYkNNWUsgPSBGWEdFVEZMQUdfQ09MT1JUWVBFKGFscGhhX2ZsYWcpOworICAgICAgICAgICAgaW50IG5ld19hbHBoYSA9IGJDTVlLID8gRlhHRVRGTEFHX0FMUEhBX0ZJTEwoYWxwaGFfZmxhZykgOiBGWEFSR0JfQShjb2xvcik7CisgICAgICAgICAgICBuZXdfYWxwaGEgPSBuZXdfYWxwaGEgKiBwTWFzay0+R2V0U2NhbmxpbmUoeSlbeF0gLyAyNTU7CisgICAgICAgICAgICBpZiAobV9iUmdiQnl0ZU9yZGVyKSB7CisgICAgICAgICAgICAgICAgUmdiQnl0ZU9yZGVyU2V0UGl4ZWwobV9wQml0bWFwLCB4LCB5LCAoY29sb3IgJiAweGZmZmZmZikgfCAobmV3X2FscGhhIDw8IDI0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYkNNWUspIHsKKyAgICAgICAgICAgICAgICBGWFNFVEZMQUdfQUxQSEFfRklMTChhbHBoYV9mbGFnLCBuZXdfYWxwaGEpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb2xvciA9IChjb2xvciAmIDB4ZmZmZmZmKSB8IChuZXdfYWxwaGEgPDwgMjQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIF9EaWJTZXRQaXhlbChtX3BCaXRtYXAsIHgsIHksIGNvbG9yLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KK0ZYX0JPT0wgQ0ZYX0FnZ0RldmljZURyaXZlcjo6RmlsbFJlY3QoY29uc3QgRlhfUkVDVCogcFJlY3QsIEZYX0RXT1JEIGZpbGxfY29sb3IsIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBpbnQgYmxlbmRfdHlwZSkKK3sKKyAgICBpZiAoYmxlbmRfdHlwZSAhPSBGWERJQl9CTEVORF9OT1JNQUwpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBpZiAobV9wQml0bWFwLT5HZXRCdWZmZXIoKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgICBGWF9SRUNUIGNsaXBfcmVjdDsKKyAgICBHZXRDbGlwQm94KCZjbGlwX3JlY3QpOworICAgIEZYX1JFQ1QgZHJhd19yZWN0ID0gY2xpcF9yZWN0OworICAgIGlmIChwUmVjdCkgeworICAgICAgICBkcmF3X3JlY3QuSW50ZXJzZWN0KCpwUmVjdCk7CisgICAgfQorICAgIGlmIChkcmF3X3JlY3QuSXNFbXB0eSgpKSB7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgICBpZiAobV9wQ2xpcFJnbiA9PSBOVUxMIHx8IG1fcENsaXBSZ24tPkdldFR5cGUoKSA9PSBDRlhfQ2xpcFJnbjo6UmVjdEkpIHsKKyAgICAgICAgaWYgKG1fYlJnYkJ5dGVPcmRlcikgeworICAgICAgICAgICAgUmdiQnl0ZU9yZGVyQ29tcG9zaXRlUmVjdChtX3BCaXRtYXAsIGRyYXdfcmVjdC5sZWZ0LCBkcmF3X3JlY3QudG9wLCBkcmF3X3JlY3QuV2lkdGgoKSwgZHJhd19yZWN0LkhlaWdodCgpLCBmaWxsX2NvbG9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fcEJpdG1hcC0+Q29tcG9zaXRlUmVjdChkcmF3X3JlY3QubGVmdCwgZHJhd19yZWN0LnRvcCwgZHJhd19yZWN0LldpZHRoKCksIGRyYXdfcmVjdC5IZWlnaHQoKSwgZmlsbF9jb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICAgIG1fcEJpdG1hcC0+Q29tcG9zaXRlTWFzayhkcmF3X3JlY3QubGVmdCwgZHJhd19yZWN0LnRvcCwgZHJhd19yZWN0LldpZHRoKCksIGRyYXdfcmVjdC5IZWlnaHQoKSwgKGNvbnN0IENGWF9ESUJpdG1hcCopbV9wQ2xpcFJnbi0+R2V0TWFzaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsX2NvbG9yLCBkcmF3X3JlY3QubGVmdCAtIGNsaXBfcmVjdC5sZWZ0LCBkcmF3X3JlY3QudG9wIC0gY2xpcF9yZWN0LnRvcCwgRlhESUJfQkxFTkRfTk9STUFMLCBOVUxMLCBtX2JSZ2JCeXRlT3JkZXIsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pOworICAgIHJldHVybiBUUlVFOworfQorRlhfQk9PTCBDRlhfQWdnRGV2aWNlRHJpdmVyOjpHZXRDbGlwQm94KEZYX1JFQ1QqIHBSZWN0KQoreworICAgIGlmIChtX3BDbGlwUmduID09IE5VTEwpIHsKKyAgICAgICAgcFJlY3QtPmxlZnQgPSBwUmVjdC0+dG9wID0gMDsKKyAgICAgICAgcFJlY3QtPnJpZ2h0ID0gR2V0RGV2aWNlQ2FwcyhGWERDX1BJWEVMX1dJRFRIKTsKKyAgICAgICAgcFJlY3QtPmJvdHRvbSA9IEdldERldmljZUNhcHMoRlhEQ19QSVhFTF9IRUlHSFQpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisgICAgKnBSZWN0ID0gbV9wQ2xpcFJnbi0+R2V0Qm94KCk7CisgICAgcmV0dXJuIFRSVUU7Cit9CitGWF9CT09MCUNGWF9BZ2dEZXZpY2VEcml2ZXI6OkdldERJQml0cyhDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBsZWZ0LCBpbnQgdG9wLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBGWF9CT09MIGJERWRnZSkKK3sKKyAgICBpZiAobV9wQml0bWFwLT5HZXRCdWZmZXIoKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgICBpZiAoYkRFZGdlKSB7CisgICAgICAgIGlmIChtX2JSZ2JCeXRlT3JkZXIpIHsKKyAgICAgICAgICAgIFJnYkJ5dGVPcmRlclRyYW5zZmVyQml0bWFwKHBCaXRtYXAsIDAsIDAsIHBCaXRtYXAtPkdldFdpZHRoKCksIHBCaXRtYXAtPkdldEhlaWdodCgpLCBtX3BCaXRtYXAsIGxlZnQsIHRvcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcEJpdG1hcC0+VHJhbnNmZXJCaXRtYXAoMCwgMCwgcEJpdG1hcC0+R2V0V2lkdGgoKSwgcEJpdG1hcC0+R2V0SGVpZ2h0KCksIG1fcEJpdG1hcCwgbGVmdCwgdG9wLCBwSWNjVHJhbnNmb3JtKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisgICAgRlhfUkVDVCByZWN0KGxlZnQsIHRvcCwgbGVmdCArIHBCaXRtYXAtPkdldFdpZHRoKCksIHRvcCArIHBCaXRtYXAtPkdldEhlaWdodCgpKTsKKyAgICBDRlhfRElCaXRtYXAgKnBCYWNrID0gTlVMTDsKKyAgICBpZiAobV9wT3JpRGV2aWNlKSB7CisgICAgICAgIHBCYWNrID0gbV9wT3JpRGV2aWNlLT5DbG9uZSgmcmVjdCk7CisgICAgICAgIGlmICghcEJhY2spIHsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICAgIHBCYWNrLT5Db21wb3NpdGVCaXRtYXAoMCwgMCwgcEJhY2stPkdldFdpZHRoKCksIHBCYWNrLT5HZXRIZWlnaHQoKSwgbV9wQml0bWFwLCAwLCAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwQmFjayA9IG1fcEJpdG1hcC0+Q2xvbmUoJnJlY3QpOworICAgIH0KKyAgICBpZiAoIXBCYWNrKSB7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgICBGWF9CT09MIGJSZXQgPSBUUlVFOworICAgIGxlZnQgPSBsZWZ0ID49IDAgPyAwIDogbGVmdDsKKyAgICB0b3AgPSB0b3AgPj0gMCA/IDAgOiB0b3A7CisgICAgaWYgKG1fYlJnYkJ5dGVPcmRlcikgeworICAgICAgICBSZ2JCeXRlT3JkZXJUcmFuc2ZlckJpdG1hcChwQml0bWFwLCAwLCAwLCByZWN0LldpZHRoKCksIHJlY3QuSGVpZ2h0KCksIHBCYWNrLCBsZWZ0LCB0b3ApOworICAgIH0gZWxzZSB7CisgICAgICAgIGJSZXQgPSBwQml0bWFwLT5UcmFuc2ZlckJpdG1hcCgwLCAwLCByZWN0LldpZHRoKCksIHJlY3QuSGVpZ2h0KCksIHBCYWNrLCBsZWZ0LCB0b3AsIHBJY2NUcmFuc2Zvcm0pOworICAgIH0KKyAgICBkZWxldGUgcEJhY2s7CisgICAgcmV0dXJuIGJSZXQ7Cit9CitGWF9CT09MCUNGWF9BZ2dEZXZpY2VEcml2ZXI6OlNldERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBGWF9EV09SRCBhcmdiLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCwgaW50IGxlZnQsIGludCB0b3AsIGludCBibGVuZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pCit7CisgICAgaWYgKG1fcEJpdG1hcC0+R2V0QnVmZmVyKCkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisgICAgaWYgKHBCaXRtYXAtPklzQWxwaGFNYXNrKCkpCisgICAgICAgIHJldHVybiBtX3BCaXRtYXAtPkNvbXBvc2l0ZU1hc2sobGVmdCwgdG9wLCBwU3JjUmVjdC0+V2lkdGgoKSwgcFNyY1JlY3QtPkhlaWdodCgpLCBwQml0bWFwLCBhcmdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTcmNSZWN0LT5sZWZ0LCBwU3JjUmVjdC0+dG9wLCBibGVuZF90eXBlLCBtX3BDbGlwUmduLCBtX2JSZ2JCeXRlT3JkZXIsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pOworICAgIHJldHVybiBtX3BCaXRtYXAtPkNvbXBvc2l0ZUJpdG1hcChsZWZ0LCB0b3AsIHBTcmNSZWN0LT5XaWR0aCgpLCBwU3JjUmVjdC0+SGVpZ2h0KCksIHBCaXRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTcmNSZWN0LT5sZWZ0LCBwU3JjUmVjdC0+dG9wLCBibGVuZF90eXBlLCBtX3BDbGlwUmduLCBtX2JSZ2JCeXRlT3JkZXIsIHBJY2NUcmFuc2Zvcm0pOworfQorRlhfQk9PTAlDRlhfQWdnRGV2aWNlRHJpdmVyOjpTdHJldGNoRElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIEZYX0RXT1JEIGFyZ2IsIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwKKyAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgY29uc3QgRlhfUkVDVCogcENsaXBSZWN0LCBGWF9EV09SRCBmbGFncywKKyAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKQoreworICAgIGlmIChtX3BCaXRtYXAtPkdldEJ1ZmZlcigpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICAgIGlmIChkZXN0X3dpZHRoID09IHBTb3VyY2UtPkdldFdpZHRoKCkgJiYgZGVzdF9oZWlnaHQgPT0gcFNvdXJjZS0+R2V0SGVpZ2h0KCkpIHsKKyAgICAgICAgRlhfUkVDVCByZWN0KDAsIDAsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIFNldERJQml0cyhwU291cmNlLCBhcmdiLCAmcmVjdCwgZGVzdF9sZWZ0LCBkZXN0X3RvcCwgYmxlbmRfdHlwZSwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7CisgICAgfQorICAgIEZYX1JFQ1QgZGVzdF9yZWN0KGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3RfbGVmdCArIGRlc3Rfd2lkdGgsIGRlc3RfdG9wICsgZGVzdF9oZWlnaHQpOworICAgIGRlc3RfcmVjdC5Ob3JtYWxpemUoKTsKKyAgICBGWF9SRUNUIGRlc3RfY2xpcCA9IGRlc3RfcmVjdDsKKyAgICBkZXN0X2NsaXAuSW50ZXJzZWN0KCpwQ2xpcFJlY3QpOworICAgIENGWF9CaXRtYXBDb21wb3NlciBjb21wb3NlcjsKKyAgICBjb21wb3Nlci5Db21wb3NlKG1fcEJpdG1hcCwgbV9wQ2xpcFJnbiwgMjU1LCBhcmdiLCBkZXN0X2NsaXAsIEZBTFNFLCBGQUxTRSwgRkFMU0UsIG1fYlJnYkJ5dGVPcmRlciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSwgYmxlbmRfdHlwZSk7CisgICAgZGVzdF9jbGlwLk9mZnNldCgtZGVzdF9yZWN0LmxlZnQsIC1kZXN0X3JlY3QudG9wKTsKKyAgICBDRlhfSW1hZ2VTdHJldGNoZXIgc3RyZXRjaGVyOworICAgIGlmIChzdHJldGNoZXIuU3RhcnQoJmNvbXBvc2VyLCBwU291cmNlLCBkZXN0X3dpZHRoLCBkZXN0X2hlaWdodCwgZGVzdF9jbGlwLCBmbGFncykpIHsKKyAgICAgICAgc3RyZXRjaGVyLkNvbnRpbnVlKE5VTEwpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KK0ZYX0JPT0wJQ0ZYX0FnZ0RldmljZURyaXZlcjo6U3RhcnRESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNvdXJjZSwgaW50IGJpdG1hcF9hbHBoYSwgRlhfRFdPUkQgYXJnYiwKKyAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgcmVuZGVyX2ZsYWdzLCBGWF9MUFZPSUQmIGhhbmRsZSwKKyAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKQoreworICAgIGlmIChtX3BCaXRtYXAtPkdldEJ1ZmZlcigpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICAgIENGWF9JbWFnZVJlbmRlcmVyKiBwUmVuZGVyZXIgPSBGWF9ORVcgQ0ZYX0ltYWdlUmVuZGVyZXI7CisgICAgaWYgKCFwUmVuZGVyZXIpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBwUmVuZGVyZXItPlN0YXJ0KG1fcEJpdG1hcCwgbV9wQ2xpcFJnbiwgcFNvdXJjZSwgYml0bWFwX2FscGhhLCBhcmdiLCBwTWF0cml4LCByZW5kZXJfZmxhZ3MsIG1fYlJnYkJ5dGVPcmRlciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7CisgICAgaGFuZGxlID0gcFJlbmRlcmVyOworICAgIHJldHVybiBUUlVFOworfQorRlhfQk9PTAlDRlhfQWdnRGV2aWNlRHJpdmVyOjpDb250aW51ZURJQml0cyhGWF9MUFZPSUQgcEhhbmRsZSwgSUZYX1BhdXNlKiBwUGF1c2UpCit7CisgICAgaWYgKG1fcEJpdG1hcC0+R2V0QnVmZmVyKCkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisgICAgcmV0dXJuICgoQ0ZYX0ltYWdlUmVuZGVyZXIqKXBIYW5kbGUpLT5Db250aW51ZShwUGF1c2UpOworfQordm9pZCBDRlhfQWdnRGV2aWNlRHJpdmVyOjpDYW5jZWxESUJpdHMoRlhfTFBWT0lEIHBIYW5kbGUpCit7CisgICAgaWYgKG1fcEJpdG1hcC0+R2V0QnVmZmVyKCkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRlbGV0ZSAoQ0ZYX0ltYWdlUmVuZGVyZXIqKXBIYW5kbGU7Cit9CitDRlhfRnhnZURldmljZTo6Q0ZYX0Z4Z2VEZXZpY2UoKQoreworICAgIG1fYk93bmVkQml0bWFwID0gRkFMU0U7Cit9CitGWF9CT09MIENGWF9GeGdlRGV2aWNlOjpBdHRhY2goQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBpbnQgZGl0aGVyX2JpdHMsIEZYX0JPT0wgYlJnYkJ5dGVPcmRlciwgQ0ZYX0RJQml0bWFwKiBwT3JpRGV2aWNlLCBGWF9CT09MIGJHcm91cEtub2Nrb3V0KQoreworICAgIGlmIChwQml0bWFwID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBTZXRCaXRtYXAocEJpdG1hcCk7CisgICAgSUZYX1JlbmRlckRldmljZURyaXZlciogcERyaXZlciA9IEZYX05FVyBDRlhfQWdnRGV2aWNlRHJpdmVyKHBCaXRtYXAsIGRpdGhlcl9iaXRzLCBiUmdiQnl0ZU9yZGVyLCBwT3JpRGV2aWNlLCBiR3JvdXBLbm9ja291dCk7CisgICAgaWYgKCFwRHJpdmVyKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgU2V0RGV2aWNlRHJpdmVyKHBEcml2ZXIpOworICAgIHJldHVybiBUUlVFOworfQorRlhfQk9PTCBDRlhfRnhnZURldmljZTo6Q3JlYXRlKGludCB3aWR0aCwgaW50IGhlaWdodCwgRlhESUJfRm9ybWF0IGZvcm1hdCwgaW50IGRpdGhlcl9iaXRzLCBDRlhfRElCaXRtYXAqIHBPcmlEZXZpY2UpCit7CisgICAgbV9iT3duZWRCaXRtYXAgPSBUUlVFOworICAgIENGWF9ESUJpdG1hcCogcEJpdG1hcCA9IEZYX05FVyBDRlhfRElCaXRtYXA7CisgICAgaWYgKCFwQml0bWFwKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgaWYgKCFwQml0bWFwLT5DcmVhdGUod2lkdGgsIGhlaWdodCwgZm9ybWF0KSkgeworICAgICAgICBkZWxldGUgcEJpdG1hcDsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBTZXRCaXRtYXAocEJpdG1hcCk7CisgICAgSUZYX1JlbmRlckRldmljZURyaXZlciogcERyaXZlciA9IEZYX05FVyBDRlhfQWdnRGV2aWNlRHJpdmVyKHBCaXRtYXAsIGRpdGhlcl9iaXRzLCBGQUxTRSwgcE9yaURldmljZSwgRkFMU0UpOworICAgIGlmICghcERyaXZlcikgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIFNldERldmljZURyaXZlcihwRHJpdmVyKTsKKyAgICByZXR1cm4gVFJVRTsKK30KK0NGWF9GeGdlRGV2aWNlOjp+Q0ZYX0Z4Z2VEZXZpY2UoKQoreworICAgIGlmIChtX2JPd25lZEJpdG1hcCAmJiBHZXRCaXRtYXAoKSkgeworICAgICAgICBkZWxldGUgR2V0Qml0bWFwKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvZnhfYWdnX3BhdGhfc3RvcmFnZS5jcHAgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9meF9hZ2dfcGF0aF9zdG9yYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzRiNzAxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvZnhfYWdnX3BhdGhfc3RvcmFnZS5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBYWVE6IDIwMDYtMDEtMjIgQ29waWVkIGZyb20gQUdHIHByb2plY3QuCisvLyBUT0RPOiBUaGlzIGZpbGUgdXNlcyBpbnRlbnNpdmUgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucywgc28gaXQncyBOT1Qgc3VpdGFibGUKKy8vIGZvciBwbGF0Zm9ybXMgbGlrZSBTeW1iaWFuIE9TLiBXZSBuZWVkIHRvIGNoYW5nZSB0byBGSVggZm9ybWF0LgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFudGktR3JhaW4gR2VvbWV0cnkgLSBWZXJzaW9uIDIuMworLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUgTWF4aW0gU2hlbWFuYXJldiAoaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tKQorLy8KKy8vIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorLy8gaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgorLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisvLyB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIENsYXNzIHBhdGhfc3RvcmFnZQorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2luY2x1ZGUgIi4uLy4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfYmFzaWMuaCIKKyNpbmNsdWRlICJhZ2dfcGF0aF9zdG9yYWdlLmgiCisjaW5jbHVkZSAiYWdnX21hdGguaCIKK25hbWVzcGFjZSBhZ2cKK3sKK3BhdGhfc3RvcmFnZTo6fnBhdGhfc3RvcmFnZSgpCit7CisgICAgaWYobV90b3RhbF9ibG9ja3MpIHsKKyAgICAgICAgRlhfRkxPQVQqKiBjb29yZF9ibGsgPSBtX2Nvb3JkX2Jsb2NrcyArIG1fdG90YWxfYmxvY2tzIC0gMTsKKyAgICAgICAgd2hpbGUobV90b3RhbF9ibG9ja3MtLSkgeworICAgICAgICAgICAgRlhfRnJlZSgqY29vcmRfYmxrKTsKKyAgICAgICAgICAgIC0tY29vcmRfYmxrOworICAgICAgICB9CisgICAgICAgIEZYX0ZyZWUobV9jb29yZF9ibG9ja3MpOworICAgIH0KK30KK3BhdGhfc3RvcmFnZTo6cGF0aF9zdG9yYWdlKCkgOgorICAgIG1fdG90YWxfdmVydGljZXMoMCksCisgICAgbV90b3RhbF9ibG9ja3MoMCksCisgICAgbV9tYXhfYmxvY2tzKDApLAorICAgIG1fY29vcmRfYmxvY2tzKDApLAorICAgIG1fY21kX2Jsb2NrcygwKSwKKyAgICBtX2l0ZXJhdG9yKDApCit7Cit9Cit2b2lkIHBhdGhfc3RvcmFnZTo6YWxsb2NhdGVfYmxvY2sodW5zaWduZWQgbmIpCit7CisgICAgaWYobmIgPj0gbV9tYXhfYmxvY2tzKSB7CisgICAgICAgIEZYX0ZMT0FUKiogbmV3X2Nvb3JkcyA9CisgICAgICAgICAgICBGWF9BbGxvYyggRlhfRkxPQVQqLCAobV9tYXhfYmxvY2tzICsgYmxvY2tfcG9vbCkgKiAyKTsKKyAgICAgICAgaWYgKCFuZXdfY29vcmRzKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgY2hhcioqIG5ld19jbWRzID0KKyAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKiopKG5ld19jb29yZHMgKyBtX21heF9ibG9ja3MgKyBibG9ja19wb29sKTsKKyAgICAgICAgaWYobV9jb29yZF9ibG9ja3MpIHsKKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG5ld19jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Nvb3JkX2Jsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF4X2Jsb2NrcyAqIHNpemVvZihGWF9GTE9BVCopKTsKKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG5ld19jbWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jbWRfYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tYXhfYmxvY2tzICogc2l6ZW9mKHVuc2lnbmVkIGNoYXIqKSk7CisgICAgICAgICAgICBGWF9GcmVlKG1fY29vcmRfYmxvY2tzKTsKKyAgICAgICAgfQorICAgICAgICBtX2Nvb3JkX2Jsb2NrcyA9IG5ld19jb29yZHM7CisgICAgICAgIG1fY21kX2Jsb2NrcyA9IG5ld19jbWRzOworICAgICAgICBtX21heF9ibG9ja3MgKz0gYmxvY2tfcG9vbDsKKyAgICB9CisgICAgbV9jb29yZF9ibG9ja3NbbmJdID0KKyAgICAgICAgRlhfQWxsb2MoIEZYX0ZMT0FULCBibG9ja19zaXplICogMiArCisgICAgICAgICAgICAgICAgICBibG9ja19zaXplIC8KKyAgICAgICAgICAgICAgICAgIChzaXplb2YoRlhfRkxPQVQpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKSk7CisgICAgaWYgKCFtX2Nvb3JkX2Jsb2Nrc1tuYl0pIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2NtZF9ibG9ja3NbbmJdICA9CisgICAgICAgICh1bnNpZ25lZCBjaGFyKikobV9jb29yZF9ibG9ja3NbbmJdICsgYmxvY2tfc2l6ZSAqIDIpOworICAgIG1fdG90YWxfYmxvY2tzKys7Cit9Cit2b2lkIHBhdGhfc3RvcmFnZTo6cmV3aW5kKHVuc2lnbmVkIHBhdGhfaWQpCit7CisgICAgbV9pdGVyYXRvciA9IHBhdGhfaWQ7Cit9Cit2b2lkIHBhdGhfc3RvcmFnZTo6Y3VydmU0KEZYX0ZMT0FUIHhfY3RybDEsIEZYX0ZMT0FUIHlfY3RybDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHhfY3RybDIsIEZYX0ZMT0FUIHlfY3RybDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHhfdG8sICAgIEZYX0ZMT0FUIHlfdG8pCit7CisgICAgYWRkX3ZlcnRleCh4X2N0cmwxLCB5X2N0cmwxLCBwYXRoX2NtZF9jdXJ2ZTQpOworICAgIGFkZF92ZXJ0ZXgoeF9jdHJsMiwgeV9jdHJsMiwgcGF0aF9jbWRfY3VydmU0KTsKKyAgICBhZGRfdmVydGV4KHhfdG8sICAgIHlfdG8sICAgIHBhdGhfY21kX2N1cnZlNCk7Cit9Cit2b2lkIHBhdGhfc3RvcmFnZTo6ZW5kX3BvbHkoKQoreworICAgIGlmKG1fdG90YWxfdmVydGljZXMpIHsKKyAgICAgICAgaWYoaXNfdmVydGV4KGNvbW1hbmQobV90b3RhbF92ZXJ0aWNlcyAtIDEpKSkgeworICAgICAgICAgICAgYWRkX3ZlcnRleCgwLCAwLCBwYXRoX2NtZF9lbmRfcG9seSB8IHBhdGhfZmxhZ3NfY2xvc2UpOworICAgICAgICB9CisgICAgfQorfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvZnhfYWdnX3Jhc3Rlcml6ZXJfc2NhbmxpbmVfYWEuY3BwIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvZnhfYWdnX3Jhc3Rlcml6ZXJfc2NhbmxpbmVfYWEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNGQxMGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9meF9hZ2dfcmFzdGVyaXplcl9zY2FubGluZV9hYS5jcHAKQEAgLTAsMCArMSw0OTUgQEAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBYWVE6IDIwMDYtMDEtMjIgQ29waWVkIGZyb20gQUdHIHByb2plY3QuCisvLyBUaGlzIGZpbGUgdXNlcyBvbmx5IGludGVnZXIgZGF0YSwgc28gaXQncyBzdWl0YWJsZSBmb3IgYWxsIHBsYXRmb3Jtcy4KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBbnRpLUdyYWluIEdlb21ldHJ5IC0gVmVyc2lvbiAyLjMKKy8vIENvcHlyaWdodCAoQykgMjAwMi0yMDA1IE1heGltIFNoZW1hbmFyZXYgKGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbSkKKy8vCisvLyBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKKy8vIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KKy8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorLy8gd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gVGhlIGF1dGhvciBncmF0ZWZ1bGx5IGFja25vd2xlZ2VzIHRoZSBzdXBwb3J0IG9mIERhdmlkIFR1cm5lciwKKy8vIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcgLSB0aGUgYXV0aG9ycyBvZiB0aGUgRnJlZVR5cGUKKy8vIGxpYnJheSAtIGluIHByb2R1Y2luZyB0aGlzIHdvcmsuIFNlZSBodHRwOi8vd3d3LmZyZWV0eXBlLm9yZyBmb3IgZGV0YWlscy4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEFkYXB0YXRpb24gZm9yIDMyLWJpdCBzY3JlZW4gY29vcmRpbmF0ZXMgaGFzIGJlZW4gc3BvbnNvcmVkIGJ5CisvLyBMaWJlcnR5IFRlY2hub2xvZ3kgU3lzdGVtcywgSW5jLiwgdmlzaXQgaHR0cDovL2xpYi1zeXMuY29tCisvLworLy8gTGliZXJ0eSBUZWNobm9sb2d5IFN5c3RlbXMsIEluYy4gaXMgdGhlIHByb3ZpZGVyIG9mCisvLyBQb3N0U2NyaXB0IGFuZCBQREYgdGVjaG5vbG9neSBmb3Igc29mdHdhcmUgZGV2ZWxvcGVycy4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBDbGFzcyBvdXRsaW5lX2FhIC0gaW1wbGVtZW50YXRpb24uCisvLworLy8gSW5pdGlhbGx5IHRoZSByZW5kZXJpbmcgYWxnb3JpdGhtIHdhcyBkZXNpZ25lZCBieSBEYXZpZCBUdXJuZXIgYW5kIHRoZQorLy8gb3RoZXIgYXV0aG9ycyBvZiB0aGUgRnJlZVR5cGUgbGlicmFyeSAtIHNlZSB0aGUgYWJvdmUgbm90aWNlLiBJIG5lYXJseQorLy8gY3JlYXRlZCBhIHNpbWlsYXIgcmVuZGVyZXIsIGJ1dCBzdGlsbCBJIHdhcyBmYXIgZnJvbSBEYXZpZCdzIHdvcmsuCisvLyBJIGNvbXBsZXRlbHkgcmVkZXNpZ25lZCB0aGUgb3JpZ2luYWwgY29kZSBhbmQgYWRhcHRlZCBpdCBmb3IgQW50aS1HcmFpbgorLy8gaWRlYXMuIFR3byBmdW5jdGlvbnMgLSByZW5kZXJfbGluZSBhbmQgcmVuZGVyX2hsaW5lIGFyZSB0aGUgY29yZSBvZgorLy8gdGhlIGFsZ29yaXRobSAtIHRoZXkgY2FsY3VsYXRlIHRoZSBleGFjdCBjb3ZlcmFnZSBvZiBlYWNoIHBpeGVsIGNlbGwKKy8vIG9mIHRoZSBwb2x5Z29uLiBJIGxlZnQgdGhlc2UgZnVuY3Rpb25zIGFsbW9zdCBhcyBpcywgYmVjYXVzZSB0aGVyZSdzCisvLyBubyB3YXkgdG8gaW1wcm92ZSB0aGUgcGVyZmVjdGlvbiAtIGhhdHMgb2ZmIHRvIERhdmlkIGFuZCBoaXMgZ3JvdXAhCisvLworLy8gQWxsIG90aGVyIGNvZGUgaXMgdmVyeSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9meGNydC9meF9leHQuaCIKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlICJhZ2dfcmFzdGVyaXplcl9zY2FubGluZV9hYS5oIgorbmFtZXNwYWNlIGFnZworeworQUdHX0lOTElORSB2b2lkIGNlbGxfYWE6OnNldF9jb3ZlcihpbnQgYywgaW50IGEpCit7CisgICAgY292ZXIgPSBjOworICAgIGFyZWEgPSBhOworfQorQUdHX0lOTElORSB2b2lkIGNlbGxfYWE6OmFkZF9jb3ZlcihpbnQgYywgaW50IGEpCit7CisgICAgY292ZXIgKz0gYzsKKyAgICBhcmVhICs9IGE7Cit9CitBR0dfSU5MSU5FIHZvaWQgY2VsbF9hYTo6c2V0X2Nvb3JkKGludCBjeCwgaW50IGN5KQoreworICAgIHggPSBjeDsKKyAgICB5ID0gY3k7Cit9CitBR0dfSU5MSU5FIHZvaWQgY2VsbF9hYTo6c2V0KGludCBjeCwgaW50IGN5LCBpbnQgYywgaW50IGEpCit7CisgICAgeCA9IGN4OworICAgIHkgPSBjeTsKKyAgICBjb3ZlciA9IGM7CisgICAgYXJlYSA9IGE7Cit9CitvdXRsaW5lX2FhOjp+b3V0bGluZV9hYSgpCit7CisgICAgaWYobV9udW1fYmxvY2tzKSB7CisgICAgICAgIGNlbGxfYWEqKiBwdHIgPSBtX2NlbGxzICsgbV9udW1fYmxvY2tzIC0gMTsKKyAgICAgICAgd2hpbGUobV9udW1fYmxvY2tzLS0pIHsKKyAgICAgICAgICAgIEZYX0ZyZWUoKnB0cik7CisgICAgICAgICAgICBwdHItLTsKKyAgICAgICAgfQorICAgICAgICBGWF9GcmVlKG1fY2VsbHMpOworICAgIH0KK30KK291dGxpbmVfYWE6Om91dGxpbmVfYWEoKSA6CisgICAgbV9udW1fYmxvY2tzKDApLAorICAgIG1fbWF4X2Jsb2NrcygwKSwKKyAgICBtX2N1cl9ibG9jaygwKSwKKyAgICBtX251bV9jZWxscygwKSwKKyAgICBtX2NlbGxzKDApLAorICAgIG1fY3VyX2NlbGxfcHRyKDApLAorICAgIG1fY3VyX3goMCksCisgICAgbV9jdXJfeSgwKSwKKyAgICBtX21pbl94KDB4N0ZGRkZGRkYpLAorICAgIG1fbWluX3koMHg3RkZGRkZGRiksCisgICAgbV9tYXhfeCgtMHg3RkZGRkZGRiksCisgICAgbV9tYXhfeSgtMHg3RkZGRkZGRiksCisgICAgbV9zb3J0ZWQoZmFsc2UpCit7CisgICAgbV9jdXJfY2VsbC5zZXQoMHg3RkZGLCAweDdGRkYsIDAsIDApOworfQordm9pZCBvdXRsaW5lX2FhOjpyZXNldCgpCit7CisgICAgbV9udW1fY2VsbHMgPSAwOworICAgIG1fY3VyX2Jsb2NrID0gMDsKKyAgICBtX2N1cl9jZWxsLnNldCgweDdGRkYsIDB4N0ZGRiwgMCwgMCk7CisgICAgbV9zb3J0ZWQgPSBmYWxzZTsKKyAgICBtX21pbl94ID0gIDB4N0ZGRkZGRkY7CisgICAgbV9taW5feSA9ICAweDdGRkZGRkZGOworICAgIG1fbWF4X3ggPSAtMHg3RkZGRkZGRjsKKyAgICBtX21heF95ID0gLTB4N0ZGRkZGRkY7Cit9Cit2b2lkIG91dGxpbmVfYWE6OmFsbG9jYXRlX2Jsb2NrKCkKK3sKKyAgICBpZihtX2N1cl9ibG9jayA+PSBtX251bV9ibG9ja3MpIHsKKyAgICAgICAgaWYobV9udW1fYmxvY2tzID49IG1fbWF4X2Jsb2NrcykgeworICAgICAgICAgICAgY2VsbF9hYSoqIG5ld19jZWxscyA9IEZYX0FsbG9jKCBjZWxsX2FhKiwgbV9tYXhfYmxvY2tzICsgY2VsbF9ibG9ja19wb29sKTsKKyAgICAgICAgICAgIGlmICghbmV3X2NlbGxzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYobV9jZWxscykgeworICAgICAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG5ld19jZWxscywgbV9jZWxscywgbV9tYXhfYmxvY2tzICogc2l6ZW9mKGNlbGxfYWEqKSk7CisgICAgICAgICAgICAgICAgRlhfRnJlZShtX2NlbGxzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fY2VsbHMgPSBuZXdfY2VsbHM7CisgICAgICAgICAgICBtX21heF9ibG9ja3MgKz0gY2VsbF9ibG9ja19wb29sOworICAgICAgICB9CisgICAgICAgIG1fY2VsbHNbbV9udW1fYmxvY2tzKytdID0gRlhfQWxsb2MoY2VsbF9hYSwgY2VsbF9ibG9ja19zaXplKTsKKyAgICAgICAgaWYgKCFtX2NlbGxzW21fbnVtX2Jsb2NrcyAtIDFdKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgbV9jdXJfY2VsbF9wdHIgPSBtX2NlbGxzW21fY3VyX2Jsb2NrKytdOworfQorQUdHX0lOTElORSB2b2lkIG91dGxpbmVfYWE6OmFkZF9jdXJfY2VsbCgpCit7CisgICAgaWYobV9jdXJfY2VsbC5hcmVhIHwgbV9jdXJfY2VsbC5jb3ZlcikgeworICAgICAgICBpZigobV9udW1fY2VsbHMgJiBjZWxsX2Jsb2NrX21hc2spID09IDApIHsKKyAgICAgICAgICAgIGlmKG1fbnVtX2Jsb2NrcyA+PSBjZWxsX2Jsb2NrX2xpbWl0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWxsb2NhdGVfYmxvY2soKTsKKyAgICAgICAgfQorICAgICAgICAqbV9jdXJfY2VsbF9wdHIrKyA9IG1fY3VyX2NlbGw7CisgICAgICAgICsrbV9udW1fY2VsbHM7CisgICAgfQorfQorQUdHX0lOTElORSB2b2lkIG91dGxpbmVfYWE6OnNldF9jdXJfY2VsbChpbnQgeCwgaW50IHkpCit7CisgICAgaWYobV9jdXJfY2VsbC54ICE9IHggfHwgbV9jdXJfY2VsbC55ICE9IHkpIHsKKyAgICAgICAgYWRkX2N1cl9jZWxsKCk7CisgICAgICAgIG1fY3VyX2NlbGwuc2V0KHgsIHksIDAsIDApOworICAgICAgICBpZih4IDwgbV9taW5feCkgeworICAgICAgICAgICAgbV9taW5feCA9IHg7CisgICAgICAgIH0KKyAgICAgICAgaWYoeCA+IG1fbWF4X3gpIHsKKyAgICAgICAgICAgIG1fbWF4X3ggPSB4OworICAgICAgICB9CisgICAgICAgIGlmKHkgPCBtX21pbl95KSB7CisgICAgICAgICAgICBtX21pbl95ID0geTsKKyAgICAgICAgfQorICAgICAgICBpZih5ID4gbV9tYXhfeSkgeworICAgICAgICAgICAgbV9tYXhfeSA9IHk7CisgICAgICAgIH0KKyAgICB9Cit9CitBR0dfSU5MSU5FIHZvaWQgb3V0bGluZV9hYTo6cmVuZGVyX2hsaW5lKGludCBleSwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKQoreworICAgIGludCBleDEgPSB4MSA+PiBwb2x5X2Jhc2Vfc2hpZnQ7CisgICAgaW50IGV4MiA9IHgyID4+IHBvbHlfYmFzZV9zaGlmdDsKKyAgICBpbnQgZngxID0geDEgJiBwb2x5X2Jhc2VfbWFzazsKKyAgICBpbnQgZngyID0geDIgJiBwb2x5X2Jhc2VfbWFzazsKKyAgICBpbnQgZGVsdGEsIHAsIGZpcnN0LCBkeDsKKyAgICBpbnQgaW5jciwgbGlmdCwgbW9kLCByZW07CisgICAgaWYoeTEgPT0geTIpIHsKKyAgICAgICAgc2V0X2N1cl9jZWxsKGV4MiwgZXkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmKGV4MSA9PSBleDIpIHsKKyAgICAgICAgZGVsdGEgPSB5MiAtIHkxOworICAgICAgICBtX2N1cl9jZWxsLmFkZF9jb3ZlcihkZWx0YSwgKGZ4MSArIGZ4MikgKiBkZWx0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcCAgICAgPSAocG9seV9iYXNlX3NpemUgLSBmeDEpICogKHkyIC0geTEpOworICAgIGZpcnN0ID0gcG9seV9iYXNlX3NpemU7CisgICAgaW5jciAgPSAxOworICAgIGR4ID0geDIgLSB4MTsKKyAgICBpZihkeCA8IDApIHsKKyAgICAgICAgcCAgICAgPSBmeDEgKiAoeTIgLSB5MSk7CisgICAgICAgIGZpcnN0ID0gMDsKKyAgICAgICAgaW5jciAgPSAtMTsKKyAgICAgICAgZHggICAgPSAtZHg7CisgICAgfQorICAgIGRlbHRhID0gcCAvIGR4OworICAgIG1vZCAgID0gcCAlIGR4OworICAgIGlmKG1vZCA8IDApIHsKKyAgICAgICAgZGVsdGEtLTsKKyAgICAgICAgbW9kICs9IGR4OworICAgIH0KKyAgICBtX2N1cl9jZWxsLmFkZF9jb3ZlcihkZWx0YSwgKGZ4MSArIGZpcnN0KSAqIGRlbHRhKTsKKyAgICBleDEgKz0gaW5jcjsKKyAgICBzZXRfY3VyX2NlbGwoZXgxLCBleSk7CisgICAgeTEgICs9IGRlbHRhOworICAgIGlmKGV4MSAhPSBleDIpIHsKKyAgICAgICAgcCAgICAgPSBwb2x5X2Jhc2Vfc2l6ZSAqICh5MiAtIHkxICsgZGVsdGEpOworICAgICAgICBsaWZ0ICA9IHAgLyBkeDsKKyAgICAgICAgcmVtICAgPSBwICUgZHg7CisgICAgICAgIGlmIChyZW0gPCAwKSB7CisgICAgICAgICAgICBsaWZ0LS07CisgICAgICAgICAgICByZW0gKz0gZHg7CisgICAgICAgIH0KKyAgICAgICAgbW9kIC09IGR4OworICAgICAgICB3aGlsZSAoZXgxICE9IGV4MikgeworICAgICAgICAgICAgZGVsdGEgPSBsaWZ0OworICAgICAgICAgICAgbW9kICArPSByZW07CisgICAgICAgICAgICBpZihtb2QgPj0gMCkgeworICAgICAgICAgICAgICAgIG1vZCAtPSBkeDsKKyAgICAgICAgICAgICAgICBkZWx0YSsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9jdXJfY2VsbC5hZGRfY292ZXIoZGVsdGEsIChwb2x5X2Jhc2Vfc2l6ZSkgKiBkZWx0YSk7CisgICAgICAgICAgICB5MSAgKz0gZGVsdGE7CisgICAgICAgICAgICBleDEgKz0gaW5jcjsKKyAgICAgICAgICAgIHNldF9jdXJfY2VsbChleDEsIGV5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkZWx0YSA9IHkyIC0geTE7CisgICAgbV9jdXJfY2VsbC5hZGRfY292ZXIoZGVsdGEsIChmeDIgKyBwb2x5X2Jhc2Vfc2l6ZSAtIGZpcnN0KSAqIGRlbHRhKTsKK30KK3ZvaWQgb3V0bGluZV9hYTo6cmVuZGVyX2xpbmUoaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKQoreworICAgIGVudW0gZHhfbGltaXRfZSB7IGR4X2xpbWl0ID0gMTYzODQgPDwgcG9seV9iYXNlX3NoaWZ0IH07CisgICAgaW50IGR4ID0geDIgLSB4MTsKKyAgICBpZihkeCA+PSBkeF9saW1pdCB8fCBkeCA8PSAtZHhfbGltaXQpIHsKKyAgICAgICAgaW50IGN4ID0gKHgxICsgeDIpID4+IDE7CisgICAgICAgIGludCBjeSA9ICh5MSArIHkyKSA+PiAxOworICAgICAgICByZW5kZXJfbGluZSh4MSwgeTEsIGN4LCBjeSk7CisgICAgICAgIHJlbmRlcl9saW5lKGN4LCBjeSwgeDIsIHkyKTsKKyAgICB9CisgICAgaW50IGR5ID0geTIgLSB5MTsKKyAgICBpbnQgZXkxID0geTEgPj4gcG9seV9iYXNlX3NoaWZ0OworICAgIGludCBleTIgPSB5MiA+PiBwb2x5X2Jhc2Vfc2hpZnQ7CisgICAgaW50IGZ5MSA9IHkxICYgcG9seV9iYXNlX21hc2s7CisgICAgaW50IGZ5MiA9IHkyICYgcG9seV9iYXNlX21hc2s7CisgICAgaW50IHhfZnJvbSwgeF90bzsKKyAgICBpbnQgcCwgcmVtLCBtb2QsIGxpZnQsIGRlbHRhLCBmaXJzdCwgaW5jcjsKKyAgICBpZihleTEgPT0gZXkyKSB7CisgICAgICAgIHJlbmRlcl9obGluZShleTEsIHgxLCBmeTEsIHgyLCBmeTIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGluY3IgID0gMTsKKyAgICBpZihkeCA9PSAwKSB7CisgICAgICAgIGludCBleCA9IHgxID4+IHBvbHlfYmFzZV9zaGlmdDsKKyAgICAgICAgaW50IHR3b19meCA9ICh4MSAtIChleCA8PCBwb2x5X2Jhc2Vfc2hpZnQpKSA8PCAxOworICAgICAgICBpbnQgYXJlYTsKKyAgICAgICAgZmlyc3QgPSBwb2x5X2Jhc2Vfc2l6ZTsKKyAgICAgICAgaWYoZHkgPCAwKSB7CisgICAgICAgICAgICBmaXJzdCA9IDA7CisgICAgICAgICAgICBpbmNyICA9IC0xOworICAgICAgICB9CisgICAgICAgIHhfZnJvbSA9IHgxOworICAgICAgICBkZWx0YSA9IGZpcnN0IC0gZnkxOworICAgICAgICBtX2N1cl9jZWxsLmFkZF9jb3ZlcihkZWx0YSwgdHdvX2Z4ICogZGVsdGEpOworICAgICAgICBleTEgKz0gaW5jcjsKKyAgICAgICAgc2V0X2N1cl9jZWxsKGV4LCBleTEpOworICAgICAgICBkZWx0YSA9IGZpcnN0ICsgZmlyc3QgLSBwb2x5X2Jhc2Vfc2l6ZTsKKyAgICAgICAgYXJlYSA9IHR3b19meCAqIGRlbHRhOworICAgICAgICB3aGlsZShleTEgIT0gZXkyKSB7CisgICAgICAgICAgICBtX2N1cl9jZWxsLnNldF9jb3ZlcihkZWx0YSwgYXJlYSk7CisgICAgICAgICAgICBleTEgKz0gaW5jcjsKKyAgICAgICAgICAgIHNldF9jdXJfY2VsbChleCwgZXkxKTsKKyAgICAgICAgfQorICAgICAgICBkZWx0YSA9IGZ5MiAtIHBvbHlfYmFzZV9zaXplICsgZmlyc3Q7CisgICAgICAgIG1fY3VyX2NlbGwuYWRkX2NvdmVyKGRlbHRhLCB0d29fZnggKiBkZWx0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcCAgICAgPSAocG9seV9iYXNlX3NpemUgLSBmeTEpICogZHg7CisgICAgZmlyc3QgPSBwb2x5X2Jhc2Vfc2l6ZTsKKyAgICBpZihkeSA8IDApIHsKKyAgICAgICAgcCAgICAgPSBmeTEgKiBkeDsKKyAgICAgICAgZmlyc3QgPSAwOworICAgICAgICBpbmNyICA9IC0xOworICAgICAgICBkeSAgICA9IC1keTsKKyAgICB9CisgICAgZGVsdGEgPSBwIC8gZHk7CisgICAgbW9kICAgPSBwICUgZHk7CisgICAgaWYobW9kIDwgMCkgeworICAgICAgICBkZWx0YS0tOworICAgICAgICBtb2QgKz0gZHk7CisgICAgfQorICAgIHhfZnJvbSA9IHgxICsgZGVsdGE7CisgICAgcmVuZGVyX2hsaW5lKGV5MSwgeDEsIGZ5MSwgeF9mcm9tLCBmaXJzdCk7CisgICAgZXkxICs9IGluY3I7CisgICAgc2V0X2N1cl9jZWxsKHhfZnJvbSA+PiBwb2x5X2Jhc2Vfc2hpZnQsIGV5MSk7CisgICAgaWYoZXkxICE9IGV5MikgeworICAgICAgICBwICAgICA9IHBvbHlfYmFzZV9zaXplICogZHg7CisgICAgICAgIGxpZnQgID0gcCAvIGR5OworICAgICAgICByZW0gICA9IHAgJSBkeTsKKyAgICAgICAgaWYocmVtIDwgMCkgeworICAgICAgICAgICAgbGlmdC0tOworICAgICAgICAgICAgcmVtICs9IGR5OworICAgICAgICB9CisgICAgICAgIG1vZCAtPSBkeTsKKyAgICAgICAgd2hpbGUoZXkxICE9IGV5MikgeworICAgICAgICAgICAgZGVsdGEgPSBsaWZ0OworICAgICAgICAgICAgbW9kICArPSByZW07CisgICAgICAgICAgICBpZiAobW9kID49IDApIHsKKyAgICAgICAgICAgICAgICBtb2QgLT0gZHk7CisgICAgICAgICAgICAgICAgZGVsdGErKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHhfdG8gPSB4X2Zyb20gKyBkZWx0YTsKKyAgICAgICAgICAgIHJlbmRlcl9obGluZShleTEsIHhfZnJvbSwgcG9seV9iYXNlX3NpemUgLSBmaXJzdCwgeF90bywgZmlyc3QpOworICAgICAgICAgICAgeF9mcm9tID0geF90bzsKKyAgICAgICAgICAgIGV5MSArPSBpbmNyOworICAgICAgICAgICAgc2V0X2N1cl9jZWxsKHhfZnJvbSA+PiBwb2x5X2Jhc2Vfc2hpZnQsIGV5MSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVuZGVyX2hsaW5lKGV5MSwgeF9mcm9tLCBwb2x5X2Jhc2Vfc2l6ZSAtIGZpcnN0LCB4MiwgZnkyKTsKK30KK3ZvaWQgb3V0bGluZV9hYTo6bW92ZV90byhpbnQgeCwgaW50IHkpCit7CisgICAgaWYobV9zb3J0ZWQpIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisgICAgc2V0X2N1cl9jZWxsKHggPj4gcG9seV9iYXNlX3NoaWZ0LCB5ID4+IHBvbHlfYmFzZV9zaGlmdCk7CisgICAgbV9jdXJfeCA9IHg7CisgICAgbV9jdXJfeSA9IHk7Cit9Cit2b2lkIG91dGxpbmVfYWE6OmxpbmVfdG8oaW50IHgsIGludCB5KQoreworICAgIHJlbmRlcl9saW5lKG1fY3VyX3gsIG1fY3VyX3ksIHgsIHkpOworICAgIG1fY3VyX3ggPSB4OworICAgIG1fY3VyX3kgPSB5OworICAgIG1fc29ydGVkID0gZmFsc2U7Cit9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RhdGljIEFHR19JTkxJTkUgdm9pZCBzd2FwX2NlbGxzKFQqIGEsIFQqIGIpCit7CisgICAgVCB0ZW1wID0gKmE7CisgICAgKmEgPSAqYjsKKyAgICAqYiA9IHRlbXA7Cit9CitlbnVtIHsKKyAgICBxc29ydF90aHJlc2hvbGQgPSA5Cit9Oworc3RhdGljIHZvaWQgcXNvcnRfY2VsbHMoY2VsbF9hYSoqIHN0YXJ0LCB1bnNpZ25lZCBudW0pCit7CisgICAgY2VsbF9hYSoqICBzdGFja1s4MF07CisgICAgY2VsbF9hYSoqKiB0b3A7CisgICAgY2VsbF9hYSoqICBsaW1pdDsKKyAgICBjZWxsX2FhKiogIGJhc2U7CisgICAgbGltaXQgPSBzdGFydCArIG51bTsKKyAgICBiYXNlICA9IHN0YXJ0OworICAgIHRvcCAgID0gc3RhY2s7CisgICAgZm9yICg7OykgeworICAgICAgICBpbnQgbGVuID0gaW50KGxpbWl0IC0gYmFzZSk7CisgICAgICAgIGNlbGxfYWEqKiBpOworICAgICAgICBjZWxsX2FhKiogajsKKyAgICAgICAgY2VsbF9hYSoqIHBpdm90OworICAgICAgICBpZihsZW4gPiBxc29ydF90aHJlc2hvbGQpIHsKKyAgICAgICAgICAgIHBpdm90ID0gYmFzZSArIGxlbiAvIDI7CisgICAgICAgICAgICBzd2FwX2NlbGxzKGJhc2UsIHBpdm90KTsKKyAgICAgICAgICAgIGkgPSBiYXNlICsgMTsKKyAgICAgICAgICAgIGogPSBsaW1pdCAtIDE7CisgICAgICAgICAgICBpZigoKmopLT54IDwgKCppKS0+eCkgeworICAgICAgICAgICAgICAgIHN3YXBfY2VsbHMoaSwgaik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZigoKmJhc2UpLT54IDwgKCppKS0+eCkgeworICAgICAgICAgICAgICAgIHN3YXBfY2VsbHMoYmFzZSwgaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZigoKmopLT54IDwgKCpiYXNlKS0+eCkgeworICAgICAgICAgICAgICAgIHN3YXBfY2VsbHMoYmFzZSwgaik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IoOzspIHsKKyAgICAgICAgICAgICAgICBpbnQgeCA9ICgqYmFzZSktPng7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgfSB3aGlsZSggKCppKS0+eCA8IHggKTsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIGotLTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlKCB4IDwgKCpqKS0+eCApOworICAgICAgICAgICAgICAgIGlmKGkgPiBqKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzd2FwX2NlbGxzKGksIGopOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3dhcF9jZWxscyhiYXNlLCBqKTsKKyAgICAgICAgICAgIGlmKGogLSBiYXNlID4gbGltaXQgLSBpKSB7CisgICAgICAgICAgICAgICAgdG9wWzBdID0gYmFzZTsKKyAgICAgICAgICAgICAgICB0b3BbMV0gPSBqOworICAgICAgICAgICAgICAgIGJhc2UgICA9IGk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRvcFswXSA9IGk7CisgICAgICAgICAgICAgICAgdG9wWzFdID0gbGltaXQ7CisgICAgICAgICAgICAgICAgbGltaXQgID0gajsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRvcCArPSAyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaiA9IGJhc2U7CisgICAgICAgICAgICBpID0gaiArIDE7CisgICAgICAgICAgICBmb3IoOyBpIDwgbGltaXQ7IGogPSBpLCBpKyspIHsKKyAgICAgICAgICAgICAgICBmb3IoOyBqWzFdLT54IDwgKCpqKS0+eDsgai0tKSB7CisgICAgICAgICAgICAgICAgICAgIHN3YXBfY2VsbHMoaiArIDEsIGopOworICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSBiYXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKHRvcCA+IHN0YWNrKSB7CisgICAgICAgICAgICAgICAgdG9wICAtPSAyOworICAgICAgICAgICAgICAgIGJhc2UgID0gdG9wWzBdOworICAgICAgICAgICAgICAgIGxpbWl0ID0gdG9wWzFdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KK3ZvaWQgb3V0bGluZV9hYTo6c29ydF9jZWxscygpCit7CisgICAgaWYobV9zb3J0ZWQpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhZGRfY3VyX2NlbGwoKTsKKyAgICBpZihtX251bV9jZWxscyA9PSAwKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9zb3J0ZWRfY2VsbHMuYWxsb2NhdGUobV9udW1fY2VsbHMsIDE2KTsKKyAgICBpZiAobV9tYXhfeSA+IDAgJiYgbV9taW5feSA8IDAgJiYgLW1fbWluX3kgPiBJTlRfTUFYIC0gbV9tYXhfeSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHVuc2lnbmVkIHNpemUgPSBtX21heF95IC0gbV9taW5feTsKKyAgICBpZiAoc2l6ZSArIDEgPCBzaXplKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2l6ZSsrOworICAgIG1fc29ydGVkX3kuYWxsb2NhdGUoc2l6ZSwgMTYpOworICAgIG1fc29ydGVkX3kuemVybygpOworICAgIGNlbGxfYWEqKiBibG9ja19wdHIgPSBtX2NlbGxzOworICAgIGNlbGxfYWEqICBjZWxsX3B0ciA9IE5VTEw7CisgICAgdW5zaWduZWQgbmIgPSBtX251bV9jZWxscyA+PiBjZWxsX2Jsb2NrX3NoaWZ0OworICAgIHVuc2lnbmVkIGk7CisgICAgd2hpbGUobmItLSkgeworICAgICAgICBjZWxsX3B0ciA9ICpibG9ja19wdHIrKzsKKyAgICAgICAgaSA9IGNlbGxfYmxvY2tfc2l6ZTsKKyAgICAgICAgd2hpbGUoaS0tKSB7CisgICAgICAgICAgICBtX3NvcnRlZF95W2NlbGxfcHRyLT55IC0gbV9taW5feV0uc3RhcnQrKzsKKyAgICAgICAgICAgICsrY2VsbF9wdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgaSA9IG1fbnVtX2NlbGxzICYgY2VsbF9ibG9ja19tYXNrOworICAgIGlmIChpKSB7CisgICAgICAgIGNlbGxfcHRyID0gKmJsb2NrX3B0cisrOworICAgIH0KKyAgICB3aGlsZShpLS0pIHsKKyAgICAgICAgbV9zb3J0ZWRfeVtjZWxsX3B0ci0+eSAtIG1fbWluX3ldLnN0YXJ0Kys7CisgICAgICAgICsrY2VsbF9wdHI7CisgICAgfQorICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKKyAgICBmb3IoaSA9IDA7IGkgPCBtX3NvcnRlZF95LnNpemUoKTsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIHYgPSBtX3NvcnRlZF95W2ldLnN0YXJ0OworICAgICAgICBtX3NvcnRlZF95W2ldLnN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIHN0YXJ0ICs9IHY7CisgICAgfQorICAgIGJsb2NrX3B0ciA9IG1fY2VsbHM7CisgICAgbmIgPSBtX251bV9jZWxscyA+PiBjZWxsX2Jsb2NrX3NoaWZ0OworICAgIHdoaWxlKG5iLS0pIHsKKyAgICAgICAgY2VsbF9wdHIgPSAqYmxvY2tfcHRyKys7CisgICAgICAgIGkgPSBjZWxsX2Jsb2NrX3NpemU7CisgICAgICAgIHdoaWxlKGktLSkgeworICAgICAgICAgICAgc29ydGVkX3kmIGN1cl95ID0gbV9zb3J0ZWRfeVtjZWxsX3B0ci0+eSAtIG1fbWluX3ldOworICAgICAgICAgICAgbV9zb3J0ZWRfY2VsbHNbY3VyX3kuc3RhcnQgKyBjdXJfeS5udW1dID0gY2VsbF9wdHI7CisgICAgICAgICAgICArK2N1cl95Lm51bTsKKyAgICAgICAgICAgICsrY2VsbF9wdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgaSA9IG1fbnVtX2NlbGxzICYgY2VsbF9ibG9ja19tYXNrOworICAgIGlmIChpKSB7CisgICAgICAgIGNlbGxfcHRyID0gKmJsb2NrX3B0cisrOworICAgIH0KKyAgICB3aGlsZShpLS0pIHsKKyAgICAgICAgc29ydGVkX3kmIGN1cl95ID0gbV9zb3J0ZWRfeVtjZWxsX3B0ci0+eSAtIG1fbWluX3ldOworICAgICAgICBtX3NvcnRlZF9jZWxsc1tjdXJfeS5zdGFydCArIGN1cl95Lm51bV0gPSBjZWxsX3B0cjsKKyAgICAgICAgKytjdXJfeS5udW07CisgICAgICAgICsrY2VsbF9wdHI7CisgICAgfQorICAgIGZvcihpID0gMDsgaSA8IG1fc29ydGVkX3kuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgY29uc3Qgc29ydGVkX3kmIGN1cl95ID0gbV9zb3J0ZWRfeVtpXTsKKyAgICAgICAgaWYoY3VyX3kubnVtKSB7CisgICAgICAgICAgICBxc29ydF9jZWxscyhtX3NvcnRlZF9jZWxscy5kYXRhKCkgKyBjdXJfeS5zdGFydCwgY3VyX3kubnVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX3NvcnRlZCA9IHRydWU7Cit9Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9meF9hZ2dfdmNnZW5fZGFzaC5jcHAgYi9jb3JlL3NyYy9meGdlL2FnZy9hZ2cyMy9meF9hZ2dfdmNnZW5fZGFzaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI2YzI5MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2Z4X2FnZ192Y2dlbl9kYXNoLmNwcApAQCAtMCwwICsxLDE3NiBAQAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFudGktR3JhaW4gR2VvbWV0cnkgLSBWZXJzaW9uIDIuMworLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUgTWF4aW0gU2hlbWFuYXJldiAoaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tKQorLy8KKy8vIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorLy8gaXMgZ3JhbnRlZCBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLgorLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisvLyB3YXJyYW50eSwgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbnRhY3Q6IG1jc2VlbUBhbnRpZ3JhaW4uY29tCisvLyAgICAgICAgICBtY3NlZW1hZ2dAeWFob28uY29tCisvLyAgICAgICAgICBodHRwOi8vd3d3LmFudGlncmFpbi5jb20KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIExpbmUgZGFzaCBnZW5lcmF0b3IKKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2Jhc2ljLmgiCisjaW5jbHVkZSAiYWdnX3ZjZ2VuX2Rhc2guaCIKKyNpbmNsdWRlICJhZ2dfc2hvcnRlbl9wYXRoLmgiCituYW1lc3BhY2UgYWdnCit7Cit2Y2dlbl9kYXNoOjp2Y2dlbl9kYXNoKCkgOgorICAgIG1fdG90YWxfZGFzaF9sZW4oMCksCisgICAgbV9udW1fZGFzaGVzKDApLAorICAgIG1fZGFzaF9zdGFydCgwKSwKKyAgICBtX3Nob3J0ZW4oMCksCisgICAgbV9jdXJyX2Rhc2hfc3RhcnQoMCksCisgICAgbV9jdXJyX2Rhc2goMCksCisgICAgbV9zcmNfdmVydGljZXMoKSwKKyAgICBtX2Nsb3NlZCgwKSwKKyAgICBtX3N0YXR1cyhpbml0aWFsKSwKKyAgICBtX3NyY192ZXJ0ZXgoMCkKK3sKK30KK3ZvaWQgdmNnZW5fZGFzaDo6cmVtb3ZlX2FsbF9kYXNoZXMoKQoreworICAgIG1fdG90YWxfZGFzaF9sZW4gPSAwOworICAgIG1fbnVtX2Rhc2hlcyA9IDA7CisgICAgbV9jdXJyX2Rhc2hfc3RhcnQgPSAwOworICAgIG1fY3Vycl9kYXNoID0gMDsKK30KK3ZvaWQgdmNnZW5fZGFzaDo6YWRkX2Rhc2goRlhfRkxPQVQgZGFzaF9sZW4sIEZYX0ZMT0FUIGdhcF9sZW4pCit7CisgICAgaWYobV9udW1fZGFzaGVzIDwgbWF4X2Rhc2hlcykgeworICAgICAgICBtX3RvdGFsX2Rhc2hfbGVuICs9IGRhc2hfbGVuICsgZ2FwX2xlbjsKKyAgICAgICAgbV9kYXNoZXNbbV9udW1fZGFzaGVzKytdID0gZGFzaF9sZW47CisgICAgICAgIG1fZGFzaGVzW21fbnVtX2Rhc2hlcysrXSA9IGdhcF9sZW47CisgICAgfQorfQordm9pZCB2Y2dlbl9kYXNoOjpkYXNoX3N0YXJ0KEZYX0ZMT0FUIGRzKQoreworICAgIG1fZGFzaF9zdGFydCA9IGRzOworICAgIGNhbGNfZGFzaF9zdGFydChGWFNZU19mYWJzKGRzKSk7Cit9Cit2b2lkIHZjZ2VuX2Rhc2g6OmNhbGNfZGFzaF9zdGFydChGWF9GTE9BVCBkcykKK3sKKyAgICBtX2N1cnJfZGFzaCA9IDA7CisgICAgbV9jdXJyX2Rhc2hfc3RhcnQgPSAwOworICAgIHdoaWxlKGRzID4gMCkgeworICAgICAgICBpZihkcyA+IG1fZGFzaGVzW21fY3Vycl9kYXNoXSkgeworICAgICAgICAgICAgZHMgLT0gbV9kYXNoZXNbbV9jdXJyX2Rhc2hdOworICAgICAgICAgICAgKyttX2N1cnJfZGFzaDsKKyAgICAgICAgICAgIG1fY3Vycl9kYXNoX3N0YXJ0ID0gMDsKKyAgICAgICAgICAgIGlmKG1fY3Vycl9kYXNoID49IG1fbnVtX2Rhc2hlcykgeworICAgICAgICAgICAgICAgIG1fY3Vycl9kYXNoID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fY3Vycl9kYXNoX3N0YXJ0ID0gZHM7CisgICAgICAgICAgICBkcyA9IDA7CisgICAgICAgIH0KKyAgICB9Cit9Cit2b2lkIHZjZ2VuX2Rhc2g6OnJlbW92ZV9hbGwoKQoreworICAgIG1fc3RhdHVzID0gaW5pdGlhbDsKKyAgICBtX3NyY192ZXJ0aWNlcy5yZW1vdmVfYWxsKCk7CisgICAgbV9jbG9zZWQgPSAwOworfQordm9pZCB2Y2dlbl9kYXNoOjphZGRfdmVydGV4KEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHksIHVuc2lnbmVkIGNtZCkKK3sKKyAgICBtX3N0YXR1cyA9IGluaXRpYWw7CisgICAgaWYoaXNfbW92ZV90byhjbWQpKSB7CisgICAgICAgIG1fc3JjX3ZlcnRpY2VzLm1vZGlmeV9sYXN0KHZlcnRleF9kaXN0KHgsIHkpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZihpc192ZXJ0ZXgoY21kKSkgeworICAgICAgICAgICAgbV9zcmNfdmVydGljZXMuYWRkKHZlcnRleF9kaXN0KHgsIHkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fY2xvc2VkID0gZ2V0X2Nsb3NlX2ZsYWcoY21kKTsKKyAgICAgICAgfQorICAgIH0KK30KK3ZvaWQgdmNnZW5fZGFzaDo6cmV3aW5kKHVuc2lnbmVkKQoreworICAgIGlmKG1fc3RhdHVzID09IGluaXRpYWwpIHsKKyAgICAgICAgbV9zcmNfdmVydGljZXMuY2xvc2UobV9jbG9zZWQgIT0gMCk7CisgICAgICAgIHNob3J0ZW5fcGF0aChtX3NyY192ZXJ0aWNlcywgbV9zaG9ydGVuLCBtX2Nsb3NlZCk7CisgICAgfQorICAgIG1fc3RhdHVzID0gcmVhZHk7CisgICAgbV9zcmNfdmVydGV4ID0gMDsKK30KK3Vuc2lnbmVkIHZjZ2VuX2Rhc2g6OnZlcnRleChGWF9GTE9BVCogeCwgRlhfRkxPQVQqIHkpCit7CisgICAgdW5zaWduZWQgY21kID0gcGF0aF9jbWRfbW92ZV90bzsKKyAgICB3aGlsZSghaXNfc3RvcChjbWQpKSB7CisgICAgICAgIHN3aXRjaChtX3N0YXR1cykgeworICAgICAgICAgICAgY2FzZSBpbml0aWFsOgorICAgICAgICAgICAgICAgIHJld2luZCgwKTsKKyAgICAgICAgICAgIGNhc2UgcmVhZHk6CisgICAgICAgICAgICAgICAgaWYobV9udW1fZGFzaGVzIDwgMiB8fCBtX3NyY192ZXJ0aWNlcy5zaXplKCkgPCAyKSB7CisgICAgICAgICAgICAgICAgICAgIGNtZCA9IHBhdGhfY21kX3N0b3A7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3N0YXR1cyA9IHBvbHlsaW5lOworICAgICAgICAgICAgICAgIG1fc3JjX3ZlcnRleCA9IDE7CisgICAgICAgICAgICAgICAgbV92MSA9ICZtX3NyY192ZXJ0aWNlc1swXTsKKyAgICAgICAgICAgICAgICBtX3YyID0gJm1fc3JjX3ZlcnRpY2VzWzFdOworICAgICAgICAgICAgICAgIG1fY3Vycl9yZXN0ID0gbV92MS0+ZGlzdDsKKyAgICAgICAgICAgICAgICAqeCA9IG1fdjEtPng7CisgICAgICAgICAgICAgICAgKnkgPSBtX3YxLT55OworICAgICAgICAgICAgICAgIGlmKG1fZGFzaF9zdGFydCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGNfZGFzaF9zdGFydChtX2Rhc2hfc3RhcnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcGF0aF9jbWRfbW92ZV90bzsKKyAgICAgICAgICAgIGNhc2UgcG9seWxpbmU6IHsKKyAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgZGFzaF9yZXN0ID0gbV9kYXNoZXNbbV9jdXJyX2Rhc2hdIC0gbV9jdXJyX2Rhc2hfc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNtZCA9IChtX2N1cnJfZGFzaCAmIDEpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jbWRfbW92ZV90byA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY21kX2xpbmVfdG87CisgICAgICAgICAgICAgICAgICAgIGlmKG1fY3Vycl9yZXN0ID4gZGFzaF9yZXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJfcmVzdCAtPSBkYXNoX3Jlc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICArK21fY3Vycl9kYXNoOworICAgICAgICAgICAgICAgICAgICAgICAgaWYobV9jdXJyX2Rhc2ggPj0gbV9udW1fZGFzaGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyX2Rhc2ggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyX2Rhc2hfc3RhcnQgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgKnggPSBtX3YyLT54IC0gKG1fdjItPnggLSBtX3YxLT54KSAqIG1fY3Vycl9yZXN0IC8gbV92MS0+ZGlzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICp5ID0gbV92Mi0+eSAtIChtX3YyLT55IC0gbV92MS0+eSkgKiBtX2N1cnJfcmVzdCAvIG1fdjEtPmRpc3Q7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJfZGFzaF9zdGFydCArPSBtX2N1cnJfcmVzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICp4ID0gbV92Mi0+eDsKKyAgICAgICAgICAgICAgICAgICAgICAgICp5ID0gbV92Mi0+eTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbV9zcmNfdmVydGV4OworICAgICAgICAgICAgICAgICAgICAgICAgbV92MSA9IG1fdjI7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJfcmVzdCA9IG1fdjEtPmRpc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihtX2Nsb3NlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1fc3JjX3ZlcnRleCA+IG1fc3JjX3ZlcnRpY2VzLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXR1cyA9IHN0b3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92MiA9ICZtX3NyY192ZXJ0aWNlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtX3NyY192ZXJ0ZXggPj0gbV9zcmNfdmVydGljZXMuc2l6ZSgpKSA/IDAgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3JjX3ZlcnRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1fc3JjX3ZlcnRleCA+PSBtX3NyY192ZXJ0aWNlcy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBzdG9wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdjIgPSAmbV9zcmNfdmVydGljZXNbbV9zcmNfdmVydGV4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNtZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIHN0b3A6CisgICAgICAgICAgICAgICAgY21kID0gcGF0aF9jbWRfc3RvcDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcGF0aF9jbWRfc3RvcDsKK30KK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2Z4X2FnZ192Y2dlbl9zdHJva2UuY3BwIGIvY29yZS9zcmMvZnhnZS9hZ2cvYWdnMjMvZnhfYWdnX3ZjZ2VuX3N0cm9rZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI1YWM0NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2FnZzIzL2Z4X2FnZ192Y2dlbl9zdHJva2UuY3BwCkBAIC0wLDAgKzEsMjE0IEBACisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gWFlROiAyMDA2LTAxLTIyIENvcGllZCBmcm9tIEFHRyBwcm9qZWN0LgorLy8gVE9ETzogVGhpcyBmaWxlIHVzZXMgaW50ZW5zaXZlIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbnMsIHNvIGl0J3MgTk9UIHN1aXRhYmxlCisvLyBmb3IgcGxhdGZvcm1zIGxpa2UgU3ltYmlhbiBPUy4gV2UgbmVlZCB0byBjaGFuZ2UgdG8gRklYIGZvcm1hdC4KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBBbnRpLUdyYWluIEdlb21ldHJ5IC0gVmVyc2lvbiAyLjMKKy8vIENvcHlyaWdodCAoQykgMjAwMi0yMDA1IE1heGltIFNoZW1hbmFyZXYgKGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbSkKKy8vCisvLyBQZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKKy8vIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KKy8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAorLy8gd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDb250YWN0OiBtY3NlZW1AYW50aWdyYWluLmNvbQorLy8gICAgICAgICAgbWNzZWVtYWdnQHlhaG9vLmNvbQorLy8gICAgICAgICAgaHR0cDovL3d3dy5hbnRpZ3JhaW4uY29tCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBTdHJva2UgZ2VuZXJhdG9yCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9meGNydC9meF9iYXNpYy5oIgorI2luY2x1ZGUgImFnZ192Y2dlbl9zdHJva2UuaCIKK25hbWVzcGFjZSBhZ2cKK3sKKwordmNnZW5fc3Ryb2tlOjp2Y2dlbl9zdHJva2UoKSA6CisgICAgbV9zcmNfdmVydGljZXMoKSwKKyAgICBtX291dF92ZXJ0aWNlcygpLAorICAgIG1fd2lkdGgoMC41ZiksCisgICAgbV9taXRlcl9saW1pdCg0ICogMS4wZiksCisgICAgbV9pbm5lcl9taXRlcl9saW1pdCgxLjBmICsgMS4wZiAvIDEwMCksCisgICAgbV9hcHByb3hfc2NhbGUoMS4wZiksCisgICAgbV9saW5lX2NhcChidXR0X2NhcCksCisgICAgbV9saW5lX2pvaW4obWl0ZXJfam9pbiksCisgICAgbV9pbm5lcl9qb2luKGlubmVyX21pdGVyKSwKKyAgICBtX2Nsb3NlZCgwKSwKKyAgICBtX3N0YXR1cyhpbml0aWFsKSwKKyAgICBtX3NyY192ZXJ0ZXgoMCksCisgICAgbV9vdXRfdmVydGV4KDApCit7Cit9Cit2b2lkIHZjZ2VuX3N0cm9rZTo6cmVtb3ZlX2FsbCgpCit7CisgICAgbV9zcmNfdmVydGljZXMucmVtb3ZlX2FsbCgpOworICAgIG1fY2xvc2VkID0gMDsKKyAgICBtX3N0YXR1cyA9IGluaXRpYWw7Cit9Cit2b2lkIHZjZ2VuX3N0cm9rZTo6YWRkX3ZlcnRleChGWF9GTE9BVCB4LCBGWF9GTE9BVCB5LCB1bnNpZ25lZCBjbWQpCit7CisgICAgbV9zdGF0dXMgPSBpbml0aWFsOworICAgIGlmKGlzX21vdmVfdG8oY21kKSkgeworICAgICAgICBtX3NyY192ZXJ0aWNlcy5tb2RpZnlfbGFzdCh2ZXJ0ZXhfZGlzdF9jbWQoeCwgeSwgY21kKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYoaXNfdmVydGV4KGNtZCkpIHsKKyAgICAgICAgICAgIG1fc3JjX3ZlcnRpY2VzLmFkZCh2ZXJ0ZXhfZGlzdF9jbWQoeCwgeSwgY21kKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2Nsb3NlZCA9IGdldF9jbG9zZV9mbGFnKGNtZCk7CisgICAgICAgIH0KKyAgICB9Cit9CitzdGF0aWMgaW5saW5lIHZvaWQgY2FsY19idXR0X2NhcChGWF9GTE9BVCogY2FwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVydGV4X2Rpc3QmIHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVydGV4X2Rpc3QmIHYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgd2lkdGgpCit7CisgICAgRlhfRkxPQVQgZHggPSBGWFNZU19NdWxEaXYodjEueSAtIHYwLnksIHdpZHRoLCBsZW4pOworICAgIEZYX0ZMT0FUIGR5ID0gRlhTWVNfTXVsRGl2KHYxLnggLSB2MC54LCB3aWR0aCwgbGVuKTsKKyAgICBjYXBbMF0gPSB2MC54IC0gZHg7CisgICAgY2FwWzFdID0gdjAueSArIGR5OworICAgIGNhcFsyXSA9IHYwLnggKyBkeDsKKyAgICBjYXBbM10gPSB2MC55IC0gZHk7Cit9Cit2b2lkIHZjZ2VuX3N0cm9rZTo6cmV3aW5kKHVuc2lnbmVkKQoreworICAgIGlmKG1fc3RhdHVzID09IGluaXRpYWwpIHsKKyAgICAgICAgbV9zcmNfdmVydGljZXMuY2xvc2UobV9jbG9zZWQgIT0gMCk7CisgICAgICAgIGlmKG1fc3JjX3ZlcnRpY2VzLnNpemUoKSA8IDMpIHsKKyAgICAgICAgICAgIG1fY2xvc2VkID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX3N0YXR1cyA9IHJlYWR5OworICAgIG1fc3JjX3ZlcnRleCA9IDA7CisgICAgbV9vdXRfdmVydGV4ID0gMDsKK30KK3Vuc2lnbmVkIHZjZ2VuX3N0cm9rZTo6dmVydGV4KEZYX0ZMT0FUKiB4LCBGWF9GTE9BVCogeSkKK3sKKyAgICB1bnNpZ25lZCBjbWQgPSBwYXRoX2NtZF9saW5lX3RvOworICAgIGxpbmVfam9pbl9lIGN1cmo7CisgICAgd2hpbGUoIWlzX3N0b3AoY21kKSkgeworICAgICAgICBzd2l0Y2gobV9zdGF0dXMpIHsKKyAgICAgICAgICAgIGNhc2UgaW5pdGlhbDoKKyAgICAgICAgICAgICAgICByZXdpbmQoMCk7CisgICAgICAgICAgICBjYXNlIHJlYWR5OgorICAgICAgICAgICAgICAgIGlmKG1fc3JjX3ZlcnRpY2VzLnNpemUoKSA8IDIgKyB1bnNpZ25lZChtX2Nsb3NlZCAhPSAwKSkgeworICAgICAgICAgICAgICAgICAgICBjbWQgPSBwYXRoX2NtZF9zdG9wOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBtX2Nsb3NlZCA/IG91dGxpbmUxIDogY2FwMTsKKyAgICAgICAgICAgICAgICBjbWQgPSBwYXRoX2NtZF9tb3ZlX3RvOworICAgICAgICAgICAgICAgIG1fc3JjX3ZlcnRleCA9IDA7CisgICAgICAgICAgICAgICAgbV9vdXRfdmVydGV4ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgY2FwMToKKyAgICAgICAgICAgICAgICBzdHJva2VfY2FsY19jYXAobV9vdXRfdmVydGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3JjX3ZlcnRpY2VzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NyY192ZXJ0aWNlc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zcmNfdmVydGljZXNbMF0uZGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9saW5lX2NhcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9hcHByb3hfc2NhbGUpOworICAgICAgICAgICAgICAgIG1fc3JjX3ZlcnRleCA9IDE7CisgICAgICAgICAgICAgICAgbV9wcmV2X3N0YXR1cyA9IG91dGxpbmUxOworICAgICAgICAgICAgICAgIG1fc3RhdHVzID0gb3V0X3ZlcnRpY2VzOworICAgICAgICAgICAgICAgIG1fb3V0X3ZlcnRleCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGNhcDI6CisgICAgICAgICAgICAgICAgc3Ryb2tlX2NhbGNfY2FwKG1fb3V0X3ZlcnRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NyY192ZXJ0aWNlc1ttX3NyY192ZXJ0aWNlcy5zaXplKCkgLSAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zcmNfdmVydGljZXNbbV9zcmNfdmVydGljZXMuc2l6ZSgpIC0gMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3JjX3ZlcnRpY2VzW21fc3JjX3ZlcnRpY2VzLnNpemUoKSAtIDJdLmRpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGluZV9jYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXBwcm94X3NjYWxlKTsKKyAgICAgICAgICAgICAgICBtX3ByZXZfc3RhdHVzID0gb3V0bGluZTI7CisgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBvdXRfdmVydGljZXM7CisgICAgICAgICAgICAgICAgbV9vdXRfdmVydGV4ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3V0bGluZTE6CisgICAgICAgICAgICAgICAgaWYobV9jbG9zZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYobV9zcmNfdmVydGV4ID49IG1fc3JjX3ZlcnRpY2VzLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9wcmV2X3N0YXR1cyA9IGNsb3NlX2ZpcnN0OworICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBlbmRfcG9seTE7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmKG1fc3JjX3ZlcnRleCA+PSBtX3NyY192ZXJ0aWNlcy5zaXplKCkgLSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXR1cyA9IGNhcDI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjdXJqID0gbV9zcmNfdmVydGljZXNbbV9zcmNfdmVydGV4XS5jbWQgJiBwYXRoX2ZsYWdzX2pyID8gbWl0ZXJfam9pbl9yb3VuZCA6IG1fbGluZV9qb2luOworICAgICAgICAgICAgICAgIHN0cm9rZV9jYWxjX2pvaW4obV9vdXRfdmVydGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NyY192ZXJ0aWNlcy5wcmV2KG1fc3JjX3ZlcnRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NyY192ZXJ0aWNlcy5jdXJyKG1fc3JjX3ZlcnRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NyY192ZXJ0aWNlcy5uZXh0KG1fc3JjX3ZlcnRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NyY192ZXJ0aWNlcy5wcmV2KG1fc3JjX3ZlcnRleCkuZGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3JjX3ZlcnRpY2VzLmN1cnIobV9zcmNfdmVydGV4KS5kaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2lubmVyX2pvaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21pdGVyX2xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbm5lcl9taXRlcl9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXBwcm94X3NjYWxlKTsKKyAgICAgICAgICAgICAgICArK21fc3JjX3ZlcnRleDsKKyAgICAgICAgICAgICAgICBtX3ByZXZfc3RhdHVzID0gbV9zdGF0dXM7CisgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBvdXRfdmVydGljZXM7CisgICAgICAgICAgICAgICAgbV9vdXRfdmVydGV4ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgY2xvc2VfZmlyc3Q6CisgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBvdXRsaW5lMjsKKyAgICAgICAgICAgICAgICBjbWQgPSBwYXRoX2NtZF9tb3ZlX3RvOworICAgICAgICAgICAgY2FzZSBvdXRsaW5lMjoKKyAgICAgICAgICAgICAgICBpZihtX3NyY192ZXJ0ZXggPD0gdW5zaWduZWQobV9jbG9zZWQgPT0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBlbmRfcG9seTI7CisgICAgICAgICAgICAgICAgICAgIG1fcHJldl9zdGF0dXMgPSBzdG9wOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLS1tX3NyY192ZXJ0ZXg7CisgICAgICAgICAgICAgICAgY3VyaiA9IG1fc3JjX3ZlcnRpY2VzW21fc3JjX3ZlcnRleF0uY21kICYgcGF0aF9mbGFnc19qciA/IG1pdGVyX2pvaW5fcm91bmQgOiBtX2xpbmVfam9pbjsKKyAgICAgICAgICAgICAgICBzdHJva2VfY2FsY19qb2luKG1fb3V0X3ZlcnRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zcmNfdmVydGljZXMubmV4dChtX3NyY192ZXJ0ZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zcmNfdmVydGljZXMuY3VycihtX3NyY192ZXJ0ZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zcmNfdmVydGljZXMucHJldihtX3NyY192ZXJ0ZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zcmNfdmVydGljZXMuY3VycihtX3NyY192ZXJ0ZXgpLmRpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NyY192ZXJ0aWNlcy5wcmV2KG1fc3JjX3ZlcnRleCkuZGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbm5lcl9qb2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9taXRlcl9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5uZXJfbWl0ZXJfbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2FwcHJveF9zY2FsZSk7CisgICAgICAgICAgICAgICAgbV9wcmV2X3N0YXR1cyA9IG1fc3RhdHVzOworICAgICAgICAgICAgICAgIG1fc3RhdHVzID0gb3V0X3ZlcnRpY2VzOworICAgICAgICAgICAgICAgIG1fb3V0X3ZlcnRleCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG91dF92ZXJ0aWNlczoKKyAgICAgICAgICAgICAgICBpZihtX291dF92ZXJ0ZXggPj0gbV9vdXRfdmVydGljZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhdHVzID0gbV9wcmV2X3N0YXR1czsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2ludF90eXBlJiBjID0gbV9vdXRfdmVydGljZXNbbV9vdXRfdmVydGV4KytdOworICAgICAgICAgICAgICAgICAgICAqeCA9IGMueDsKKyAgICAgICAgICAgICAgICAgICAgKnkgPSBjLnk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbWQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBlbmRfcG9seTE6CisgICAgICAgICAgICAgICAgbV9zdGF0dXMgPSBtX3ByZXZfc3RhdHVzOworICAgICAgICAgICAgICAgIHJldHVybiBwYXRoX2NtZF9lbmRfcG9seSB8IHBhdGhfZmxhZ3NfY2xvc2UgfCBwYXRoX2ZsYWdzX2NjdzsKKyAgICAgICAgICAgIGNhc2UgZW5kX3BvbHkyOgorICAgICAgICAgICAgICAgIG1fc3RhdHVzID0gbV9wcmV2X3N0YXR1czsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGF0aF9jbWRfZW5kX3BvbHkgfCBwYXRoX2ZsYWdzX2Nsb3NlIHwgcGF0aF9mbGFnc19jdzsKKyAgICAgICAgICAgIGNhc2Ugc3RvcDoKKyAgICAgICAgICAgICAgICBjbWQgPSBwYXRoX2NtZF9zdG9wOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjbWQ7Cit9Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4X2FnZ19kcml2ZXIuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhfYWdnX2RyaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNDExOTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4X2FnZ19kcml2ZXIuaApAQCAtMCwwICsxLDEyMSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhfQUdHX0RFVklDRV9EUklWRVJfCisjZGVmaW5lIF9GWF9BR0dfREVWSUNFX0RSSVZFUl8KKyNpbmNsdWRlICJmeGZ4X2FnZ19wYXRoX3N0b3JhZ2UuaCIKKyNpbmNsdWRlICJmeGZ4X2FnZ19yYXN0ZXJpemVyX3NjYW5saW5lX2FhLmgiCitjbGFzcyBDQWdnX1BhdGhEYXRhIDogcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICBDQWdnX1BhdGhEYXRhKCkge30KKyAgICB+Q0FnZ19QYXRoRGF0YSgpIHt9CisgICAgRlhfTkFNRVNQQUNFX0RFQ0xBUkUoYWdnLCBwYXRoX3N0b3JhZ2UpCW1fUGF0aERhdGE7CisgICAgdm9pZAkJCUJ1aWxkUGF0aChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UpOworfTsKK2NsYXNzIENGWF9BZ2dEZXZpY2VEcml2ZXIgOiBwdWJsaWMgSUZYX1JlbmRlckRldmljZURyaXZlcgoreworcHVibGljOgorICAgIENGWF9BZ2dEZXZpY2VEcml2ZXIoQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBpbnQgZGl0aGVyX2JpdHMsIEZYX0JPT0wgYlJnYkJ5dGVPcmRlciwgQ0ZYX0RJQml0bWFwKiBwT3JpRGV2aWNlLCBGWF9CT09MIGJHcm91cEtub2Nrb3V0KTsKKyAgICB2aXJ0dWFsIH5DRlhfQWdnRGV2aWNlRHJpdmVyKCk7CisgICAgdm9pZAkJCQlJbml0UGxhdGZvcm0oKTsKKyAgICB2b2lkCQkJCURlc3Ryb3lQbGF0Zm9ybSgpOworCisKKyAgICB2aXJ0dWFsIGludAkJCUdldERldmljZUNhcHMoaW50IGNhcHNfaWQpOworCisKKyAgICB2aXJ0dWFsIHZvaWQJCVNhdmVTdGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZAkJUmVzdG9yZVN0YXRlKEZYX0JPT0wgYktlZXBTYXZlZCk7CisKKworICAgIHZpcnR1YWwgRlhfQk9PTAkJU2V0Q2xpcF9QYXRoRmlsbChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVNldENsaXBfUGF0aFN0cm9rZShjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCURyYXdQYXRoKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZmlsbF9jb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIHN0cm9rZV9jb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBJY2NUcmFuc2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxlbmRfdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAgdmlydHVhbCBGWF9CT09MCQlTZXRQaXhlbChpbnQgeCwgaW50IHksIEZYX0RXT1JEIGNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pOworCisgICAgdmlydHVhbCBGWF9CT09MCQlGaWxsUmVjdChjb25zdCBGWF9SRUNUKiBwUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGZpbGxfY29sb3IsIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBpbnQgYmxlbmRfdHlwZSk7CisKKworICAgIHZpcnR1YWwgRlhfQk9PTAkJRHJhd0Nvc21ldGljTGluZShGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwgRlhfRFdPUkQgY29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBpbnQgYmxlbmRfdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUdldENsaXBCb3goRlhfUkVDVCogcFJlY3QpOworCisKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUdldERJQml0cyhDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBsZWZ0LCBpbnQgdG9wLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwgRlhfQk9PTCBiREVkZ2UgPSBGQUxTRSk7CisgICAgdmlydHVhbCBDRlhfRElCaXRtYXAqICAgR2V0QmFja0Ryb3AoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcE9yaURldmljZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVNldERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBGWF9EV09SRCBjb2xvciwgY29uc3QgRlhfUkVDVCogcFNyY1JlY3QsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgYmxlbmRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSk7CisgICAgdmlydHVhbCBGWF9CT09MCQlTdHJldGNoRElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIEZYX0RXT1JEIGNvbG9yLCBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsIGNvbnN0IEZYX1JFQ1QqIHBDbGlwUmVjdCwgRlhfRFdPUkQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBpbnQgYmxlbmRfdHlwZSk7CisKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCVN0YXJ0RElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIGludCBiaXRtYXBfYWxwaGEsIEZYX0RXT1JEIGNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgZmxhZ3MsIEZYX0xQVk9JRCYgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKTsKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUNvbnRpbnVlRElCaXRzKEZYX0xQVk9JRCBoYW5kbGUsIElGWF9QYXVzZSogcFBhdXNlKTsKKyAgICB2aXJ0dWFsIHZvaWQJCUNhbmNlbERJQml0cyhGWF9MUFZPSUQgaGFuZGxlKTsKKworICAgIHZpcnR1YWwgRlhfQk9PTCAgICAgRHJhd0RldmljZVRleHQoaW50IG5DaGFycywgY29uc3QgRlhURVhUX0NIQVJQT1MqIHBDaGFyUG9zLCBDRlhfRm9udCogcEZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfRm9udENhY2hlKiBwQ2FjaGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLCBGWF9GTE9BVCBmb250X3NpemUsIEZYX0RXT1JEIGNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pOworICAgIHZpcnR1YWwgRlhfQk9PTAkJUmVuZGVyUmFzdGVyaXplcihGWF9OQU1FU1BBQ0VfREVDTEFSRShhZ2csIHJhc3Rlcml6ZXJfc2NhbmxpbmVfYWEpJiByYXN0ZXJpemVyLCBGWF9EV09SRCBjb2xvciwgRlhfQk9PTCBiRnVsbENvdmVyLCBGWF9CT09MIGJHcm91cEtub2Nrb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSk7CisKKyAgICB2b2lkCQkJCVNldENsaXBNYXNrKEZYX05BTUVTUEFDRV9ERUNMQVJFKGFnZywgcmFzdGVyaXplcl9zY2FubGluZV9hYSkmIHJhc3Rlcml6ZXIpOworCisgICAgdmlydHVhbAlGWF9MUEJZVEUJR2V0QnVmZmVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BCaXRtYXAtPkdldEJ1ZmZlcigpOworICAgIH0KKyAgICB2aXJ0dWFsIGludAkJCUdldERyaXZlclR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgQ0ZYX0RJQml0bWFwKgkJbV9wQml0bWFwOworICAgIENGWF9DbGlwUmduKgkJbV9wQ2xpcFJnbjsKKyAgICBDRlhfUHRyQXJyYXkJCW1fU3RhdGVTdGFjazsKKyAgICB2b2lkKgkJCQltX3BQbGF0Zm9ybUdyYXBoaWNzOworICAgIHZvaWQqCQkJCW1fcFBsYXRmb3JtQml0bWFwOworICAgIHZvaWQqCQkJCW1fcER3UmVuZGVyVGFydGdldDsKKyAgICBpbnQJCQkJCW1fRmlsbEZsYWdzOworICAgIGludAkJCQkJbV9EaXRoZXJCaXRzOworICAgIEZYX0JPT0wJCQkJbV9iUmdiQnl0ZU9yZGVyOworICAgIENGWF9ESUJpdG1hcCogICAgICAgbV9wT3JpRGV2aWNlOworICAgIEZYX0JPT0wgICAgICAgICAgICAgbV9iR3JvdXBLbm9ja291dDsKK307CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfYmFzaWNzLmggYi9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4ZnhfYWdnX2Jhc2ljcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZmJkMmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4ZnhfYWdnX2Jhc2ljcy5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZYRlhfQUdHX0JBU0lDU19IXworI2RlZmluZSBfRlhGWF9BR0dfQkFTSUNTX0hfCisjaW5jbHVkZSAiLi4vYWdnMjMvYWdnX2Jhc2ljcy5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4ZnhfYWdnX2NsaXBfbGlhbmdfYmFyc2t5LmggYi9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4ZnhfYWdnX2NsaXBfbGlhbmdfYmFyc2t5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ4YjYxOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfY2xpcF9saWFuZ19iYXJza3kuaApAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWEZYX0FHR19DTElQX0xJQU5HX0JBUlNLWV9IXworI2RlZmluZSBfRlhGWF9BR0dfQ0xJUF9MSUFOR19CQVJTS1lfSF8KKyNpbmNsdWRlICIuLi9hZ2cyMy9hZ2dfY2xpcF9saWFuZ19iYXJza3kuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19jb252X2Rhc2guaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfY29udl9kYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY4MGEwNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfY29udl9kYXNoLmgKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhGWF9BR0dfQ09OVl9EQVNIX0hfCisjZGVmaW5lIF9GWEZYX0FHR19DT05WX0RBU0hfSF8KKyNpbmNsdWRlICIuLi9hZ2cyMy9hZ2dfY29udl9kYXNoLmgiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfY29udl9zdHJva2UuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfY29udl9zdHJva2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTM4Mzg2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19jb252X3N0cm9rZS5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZYRlhfQUdHX0NPTlZfU1RST0tFX0hfCisjZGVmaW5lIF9GWEZYX0FHR19DT05WX1NUUk9LRV9IXworI2luY2x1ZGUgIi4uL2FnZzIzL2FnZ19jb252X3N0cm9rZS5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4ZnhfYWdnX2N1cnZlcy5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19jdXJ2ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGVmYWEyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19jdXJ2ZXMuaApAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWEZYX0FHR19DVVJWRVJTX0hfCisjZGVmaW5lIF9GWEZYX0FHR19DVVJWRVJTX0hfCisjaW5jbHVkZSAiLi4vYWdnMjMvYWdnX2N1cnZlcy5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4ZnhfYWdnX3BhdGhfc3RvcmFnZS5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19wYXRoX3N0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTY4ZWIyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19wYXRoX3N0b3JhZ2UuaApAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWEZYX0FHR19QQVRIX1NUT1JBR0VfSF8KKyNkZWZpbmUgX0ZYRlhfQUdHX1BBVEhfU1RPUkFHRV9IXworI2luY2x1ZGUgIi4uL2FnZzIzL2FnZ19wYXRoX3N0b3JhZ2UuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19yYXN0ZXJpemVyX3NjYW5saW5lX2FhLmggYi9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4ZnhfYWdnX3Jhc3Rlcml6ZXJfc2NhbmxpbmVfYWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjYxY2VjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19yYXN0ZXJpemVyX3NjYW5saW5lX2FhLmgKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhGWF9BR0dfUkFTVEVSSVpFUl9TQ0FOTElORV9BQV9IXworI2RlZmluZSBfRlhGWF9BR0dfUkFTVEVSSVpFUl9TQ0FOTElORV9BQV9IXworI2luY2x1ZGUgIi4uL2FnZzIzL2FnZ19yYXN0ZXJpemVyX3NjYW5saW5lX2FhLmgiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfcmVuZGVyZXJfc2NhbmxpbmUuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfcmVuZGVyZXJfc2NhbmxpbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWQ4Y2JiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19yZW5kZXJlcl9zY2FubGluZS5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZYRlhfQUdHX1JFTkRFUl9TQ0FOTElORV9IXworI2RlZmluZSBfRlhGWF9BR0dfUkVOREVSX1NDQU5MSU5FX0hfCisjaW5jbHVkZSAiLi4vYWdnMjMvYWdnX3JlbmRlcmVyX3NjYW5saW5lLmgiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfcmVuZGVyaW5nX2J1ZmZlci5oIGIvY29yZS9zcmMvZnhnZS9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19yZW5kZXJpbmdfYnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2ODg2ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfcmVuZGVyaW5nX2J1ZmZlci5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZYRlhfQUdHX1JFTkRFUklOR19CVUZGRVJfSF8KKyNkZWZpbmUgX0ZYRlhfQUdHX1JFTkRFUklOR19CVUZGRVJfSF8KKyNpbmNsdWRlICIuLi9hZ2cyMy9hZ2dfcmVuZGVyaW5nX2J1ZmZlci5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4ZnhfYWdnX3NjYW5saW5lX3UuaCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL2luY2x1ZGUvZnhmeF9hZ2dfc2NhbmxpbmVfdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjN2QyZTcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9pbmNsdWRlL2Z4ZnhfYWdnX3NjYW5saW5lX3UuaApAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWEZYX0FHR19TQ0FOTElORV9VX0hfCisjZGVmaW5lIF9GWEZYX0FHR19TQ0FOTElORV9VX0hfCisjaW5jbHVkZSAiLi4vYWdnMjMvYWdnX3NjYW5saW5lX3UuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvc3JjL2Z4ZnhfYWdnX2N1cnZlcy5jcHAgYi9jb3JlL3NyYy9meGdlL2FnZy9zcmMvZnhmeF9hZ2dfY3VydmVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzgxN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvc3JjL2Z4ZnhfYWdnX2N1cnZlcy5jcHAKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vYWdnMjMvZnhfYWdnX2N1cnZlcy5jcHAiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FnZy9zcmMvZnhmeF9hZ2dfZHJpdmVyLmNwcCBiL2NvcmUvc3JjL2Z4Z2UvYWdnL3NyYy9meGZ4X2FnZ19kcml2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZTZhMzAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9zcmMvZnhmeF9hZ2dfZHJpdmVyLmNwcApAQCAtMCwwICsxLDcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICIuLi9hZ2cyMy9meF9hZ2dfZHJpdmVyLmNwcCIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYWdnL3NyYy9meGZ4X2FnZ19wYXRoX3N0b3JhZ2UuY3BwIGIvY29yZS9zcmMvZnhnZS9hZ2cvc3JjL2Z4ZnhfYWdnX3BhdGhfc3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFiYzUyNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYWdnL3NyYy9meGZ4X2FnZ19wYXRoX3N0b3JhZ2UuY3BwCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2FnZzIzL2Z4X2FnZ19wYXRoX3N0b3JhZ2UuY3BwIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvc3JjL2Z4ZnhfYWdnX3Jhc3Rlcml6ZXJfc2NhbmxpbmVfYWEuY3BwIGIvY29yZS9zcmMvZnhnZS9hZ2cvc3JjL2Z4ZnhfYWdnX3Jhc3Rlcml6ZXJfc2NhbmxpbmVfYWEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyOWUzYmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9zcmMvZnhmeF9hZ2dfcmFzdGVyaXplcl9zY2FubGluZV9hYS5jcHAKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vYWdnMjMvZnhfYWdnX3Jhc3Rlcml6ZXJfc2NhbmxpbmVfYWEuY3BwIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvc3JjL2Z4ZnhfYWdnX3ZjZ2VuX2Rhc2guY3BwIGIvY29yZS9zcmMvZnhnZS9hZ2cvc3JjL2Z4ZnhfYWdnX3ZjZ2VuX2Rhc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMjU5YzAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FnZy9zcmMvZnhmeF9hZ2dfdmNnZW5fZGFzaC5jcHAKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vYWdnMjMvZnhfYWdnX3ZjZ2VuX2Rhc2guY3BwIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hZ2cvc3JjL2Z4ZnhfYWdnX3ZjZ2VuX3N0cm9rZS5jcHAgYi9jb3JlL3NyYy9meGdlL2FnZy9zcmMvZnhmeF9hZ2dfdmNnZW5fc3Ryb2tlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzExZTFhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hZ2cvc3JjL2Z4ZnhfYWdnX3ZjZ2VuX3N0cm9rZS5jcHAKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vYWdnMjMvZnhfYWdnX3ZjZ2VuX3N0cm9rZS5jcHAiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnBmX3NraWFmb250LmNwcCBiL2NvcmUvc3JjL2Z4Z2UvYW5kcm9pZC9mcGZfc2tpYWZvbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZWViMmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnBmX3NraWFmb250LmNwcApAQCAtMCwwICsxLDIwMyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgImZ4X2ZwZi5oIgorI2lmIF9GWF9PU18gPT0gX0ZYX0FORFJPSURfCisjaW5jbHVkZSAiZnBmX3NraWFmb250LmgiCisjaW5jbHVkZSAiZnBmX3NraWFmb250bWdyLmgiCisjZGVmaW5lIEZQRl9FTV9BREpVU1QoZW0sIGEpIChlbSA9PSAwID8gKGEpIDogKGEpICogMTAwMCAvIGVtKQorQ0ZQRl9Ta2lhRm9udDo6Q0ZQRl9Ta2lhRm9udCgpCisgICAgOiBtX3BGb250TWdyKE5VTEwpCisgICAgLCBtX3BGb250RGVzKE5VTEwpCisgICAgLCBtX0ZhY2UoTlVMTCkKKyAgICAsIG1fZHdTdHlsZSgwKQorICAgICwgbV91Q2hhcnNldCgwKQorICAgICwgbV9kd1JlZkNvdW50KDApCit7Cit9CitDRlBGX1NraWFGb250Ojp+Q0ZQRl9Ta2lhRm9udCgpCit7CisgICAgaWYgKG1fRmFjZSkgeworICAgICAgICBGWEZUX0RvbmVfRmFjZShtX0ZhY2UpOworICAgIH0KK30KK3ZvaWQgQ0ZQRl9Ta2lhRm9udDo6UmVsZWFzZSgpCit7CisgICAgaWYgKC0tbV9kd1JlZkNvdW50ID09IDApIHsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorfQorSUZQRl9Gb250KiBDRlBGX1NraWFGb250OjpSZXRhaW4oKQoreworICAgIG1fZHdSZWZDb3VudCsrOworICAgIHJldHVybiAoSUZQRl9Gb250Kil0aGlzOworfQorRlBGX0hGT05UIENGUEZfU2tpYUZvbnQ6OkdldEhhbmRsZSgpCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CitDRlhfQnl0ZVN0cmluZyBDRlBGX1NraWFGb250OjpHZXRGYW1pbHlOYW1lKCkKK3sKKyAgICBpZiAoIW1fRmFjZSkgeworICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsKKyAgICB9CisgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKEZYRlRfR2V0X0ZhY2VfRmFtaWx5X05hbWUobV9GYWNlKSk7Cit9CitDRlhfV2lkZVN0cmluZyBDRlBGX1NraWFGb250OjpHZXRQc05hbWUoKQoreworICAgIGlmICghbV9GYWNlKSB7CisgICAgICAgIHJldHVybiBDRlhfV2lkZVN0cmluZygpOworICAgIH0KKyAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbChGWEZUX0dldF9Qb3N0c2NyaXB0X05hbWUobV9GYWNlKSk7Cit9CitGWF9JTlQzMiBDRlBGX1NraWFGb250OjpHZXRHbHlwaEluZGV4KEZYX1dDSEFSIHdVbmljb2RlKQoreworICAgIGlmICghbV9GYWNlKSB7CisgICAgICAgIHJldHVybiB3VW5pY29kZTsKKyAgICB9CisgICAgaWYgKEZYRlRfU2VsZWN0X0NoYXJtYXAobV9GYWNlLCBGWEZUX0VOQ09ESU5HX1VOSUNPREUpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gRlhGVF9HZXRfQ2hhcl9JbmRleChtX0ZhY2UsIHdVbmljb2RlKTsKK30KK0ZYX0lOVDMyIENGUEZfU2tpYUZvbnQ6OkdldEdseXBoV2lkdGgoRlhfSU5UMzIgaUdseXBoSW5kZXgpCit7CisgICAgaWYgKCFtX0ZhY2UpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChGWEZUX0xvYWRfR2x5cGgobV9GYWNlLCBpR2x5cGhJbmRleCwgRlhGVF9MT0FEX05PX1NDQUxFIHwgRlhGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBGUEZfRU1fQURKVVNUKEZYRlRfR2V0X0ZhY2VfVW5pdHNQZXJFTShtX0ZhY2UpLCBGWEZUX0dldF9HbHlwaF9Ib3JpQWR2YW5jZShtX0ZhY2UpKTsKK30KK0ZYX0lOVDMyIENGUEZfU2tpYUZvbnQ6OkdldEFzY2VudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX0ZhY2UpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBGUEZfRU1fQURKVVNUKEZYRlRfR2V0X0ZhY2VfVW5pdHNQZXJFTShtX0ZhY2UpLCBGWEZUX0dldF9GYWNlX0FzY2VuZGVyKG1fRmFjZSkpOworfQorRlhfSU5UMzIgQ0ZQRl9Ta2lhRm9udDo6R2V0RGVzY2VudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX0ZhY2UpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBGUEZfRU1fQURKVVNUKEZYRlRfR2V0X0ZhY2VfVW5pdHNQZXJFTShtX0ZhY2UpLCBGWEZUX0dldF9GYWNlX0Rlc2NlbmRlcihtX0ZhY2UpKTsKK30KK0ZYX0JPT0wgQ0ZQRl9Ta2lhRm9udDo6R2V0R2x5cGhCQm94KEZYX0lOVDMyIGlHbHlwaEluZGV4LCBGWF9SRUNUICZydEJCb3gpCit7CisgICAgaWYgKCFtX0ZhY2UpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBpZiAoRlhGVF9Jc19GYWNlX1RyaWNreShtX0ZhY2UpKSB7CisgICAgICAgIGlmIChGWEZUX1NldF9DaGFyX1NpemUobV9GYWNlLCAwLCAxMDAwICogNjQsIDcyLCA3MikpIHsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgICAgICBpZiAoRlhGVF9Mb2FkX0dseXBoKG1fRmFjZSwgaUdseXBoSW5kZXgsIEZYRlRfTE9BRF9JR05PUkVfR0xPQkFMX0FEVkFOQ0VfV0lEVEgpKSB7CisgICAgICAgICAgICBGWEZUX1NldF9QaXhlbF9TaXplcyhtX0ZhY2UsIDAsIDY0KTsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgICAgICBGWEZUX0dseXBoIGdseXBoOworICAgICAgICBpZiAoRlhGVF9HZXRfR2x5cGgobV9GYWNlLT5nbHlwaCwgJmdseXBoKSkgeworICAgICAgICAgICAgRlhGVF9TZXRfUGl4ZWxfU2l6ZXMobV9GYWNlLCAwLCA2NCk7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgRlhGVF9CQm94IGNib3g7CisgICAgICAgIEZYRlRfR2x5cGhfR2V0X0NCb3goZ2x5cGgsIEZYRlRfR0xZUEhfQkJPWF9QSVhFTFMsICZjYm94KTsKKyAgICAgICAgRlhfSU5UMzIgeF9wcGVtID0gbV9GYWNlLT5zaXplLT5tZXRyaWNzLnhfcHBlbTsKKyAgICAgICAgRlhfSU5UMzIgeV9wcGVtID0gbV9GYWNlLT5zaXplLT5tZXRyaWNzLnlfcHBlbTsKKyAgICAgICAgcnRCQm94LmxlZnQgPSBGUEZfRU1fQURKVVNUKHhfcHBlbSwgY2JveC54TWluKTsKKyAgICAgICAgcnRCQm94LnJpZ2h0ID0gRlBGX0VNX0FESlVTVCh4X3BwZW0sIGNib3gueE1heCk7CisgICAgICAgIHJ0QkJveC50b3AgPSBGUEZfRU1fQURKVVNUKHlfcHBlbSwgY2JveC55TWF4KTsKKyAgICAgICAgcnRCQm94LmJvdHRvbSA9IEZQRl9FTV9BREpVU1QoeV9wcGVtLCBjYm94LnlNaW4pOworICAgICAgICBydEJCb3gudG9wID0gRlhfTUlOKHJ0QkJveC50b3AsIEdldEFzY2VudCgpKTsKKyAgICAgICAgcnRCQm94LmJvdHRvbSA9IEZYX01BWChydEJCb3guYm90dG9tLCBHZXREZXNjZW50KCkpOworICAgICAgICBGWEZUX0RvbmVfR2x5cGgoZ2x5cGgpOworICAgICAgICByZXR1cm4gRlhGVF9TZXRfUGl4ZWxfU2l6ZXMobV9GYWNlLCAwLCA2NCkgPT0gMDsKKyAgICB9CisgICAgaWYgKEZYRlRfTG9hZF9HbHlwaChtX0ZhY2UsIGlHbHlwaEluZGV4LCBGWEZUX0xPQURfTk9fU0NBTEUgfCBGWEZUX0xPQURfSUdOT1JFX0dMT0JBTF9BRFZBTkNFX1dJRFRIKSkgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIHJ0QkJveC5sZWZ0ID0gRlBGX0VNX0FESlVTVChGWEZUX0dldF9GYWNlX1VuaXRzUGVyRU0obV9GYWNlKSwgRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdYKG1fRmFjZSkpOworICAgIHJ0QkJveC5ib3R0b20gPSBGUEZfRU1fQURKVVNUKEZYRlRfR2V0X0ZhY2VfVW5pdHNQZXJFTShtX0ZhY2UpLCBGWEZUX0dldF9HbHlwaF9Ib3JpQmVhcmluZ1kobV9GYWNlKSk7CisgICAgcnRCQm94LnJpZ2h0ID0gRlBGX0VNX0FESlVTVChGWEZUX0dldF9GYWNlX1VuaXRzUGVyRU0obV9GYWNlKSwgRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdYKG1fRmFjZSkgKyBGWEZUX0dldF9HbHlwaF9XaWR0aChtX0ZhY2UpKTsKKyAgICBydEJCb3gudG9wID0gRlBGX0VNX0FESlVTVChGWEZUX0dldF9GYWNlX1VuaXRzUGVyRU0obV9GYWNlKSwgRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdZKG1fRmFjZSkgLSBGWEZUX0dldF9HbHlwaF9IZWlnaHQobV9GYWNlKSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CitGWF9CT09MIENGUEZfU2tpYUZvbnQ6OkdldEJCb3goRlhfUkVDVCAmcnRCQm94KQoreworICAgIGlmICghbV9GYWNlKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgcnRCQm94LmxlZnQgPSBGUEZfRU1fQURKVVNUKEZYRlRfR2V0X0ZhY2VfVW5pdHNQZXJFTShtX0ZhY2UpLCBGWEZUX0dldF9GYWNlX3hNaW4obV9GYWNlKSk7CisgICAgcnRCQm94LnRvcCA9IEZQRl9FTV9BREpVU1QoRlhGVF9HZXRfRmFjZV9Vbml0c1BlckVNKG1fRmFjZSksIEZYRlRfR2V0X0ZhY2VfeU1pbihtX0ZhY2UpKTsKKyAgICBydEJCb3gucmlnaHQgPSBGUEZfRU1fQURKVVNUKEZYRlRfR2V0X0ZhY2VfVW5pdHNQZXJFTShtX0ZhY2UpLCBGWEZUX0dldF9GYWNlX3hNYXgobV9GYWNlKSk7CisgICAgcnRCQm94LmJvdHRvbSA9IEZQRl9FTV9BREpVU1QoRlhGVF9HZXRfRmFjZV9Vbml0c1BlckVNKG1fRmFjZSksIEZYRlRfR2V0X0ZhY2VfeU1heChtX0ZhY2UpKTsKKyAgICByZXR1cm4gVFJVRTsKK30KK0ZYX0lOVDMyIENGUEZfU2tpYUZvbnQ6OkdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX0ZhY2UpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybglGUEZfRU1fQURKVVNUKEZYRlRfR2V0X0ZhY2VfVW5pdHNQZXJFTShtX0ZhY2UpLCBGWEZUX0dldF9GYWNlX0hlaWdodChtX0ZhY2UpKTsKK30KK0ZYX0lOVDMyIENGUEZfU2tpYUZvbnQ6OkdldEl0YWxpY0FuZ2xlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fRmFjZSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgVFRfUG9zdHNjcmlwdCAqdHRJbmZvID0gKFRUX1Bvc3RzY3JpcHQqKUZUX0dldF9TZm50X1RhYmxlKG1fRmFjZSwgZnRfc2ZudF9wb3N0KTsKKyAgICBpZiAodHRJbmZvKSB7CisgICAgICAgIHJldHVybiB0dEluZm8tPml0YWxpY0FuZ2xlOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KK0ZYX0RXT1JEIENGUEZfU2tpYUZvbnQ6OkdldEZvbnREYXRhKEZYX0RXT1JEIGR3VGFibGUsIEZYX0xQQllURSBwQnVmZmVyLCBGWF9EV09SRCBkd1NpemUpCit7CisgICAgaWYgKCFtX0ZhY2UpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBpZiAoRlhGVF9Mb2FkX1NmbnRfVGFibGUobV9GYWNlLCBkd1RhYmxlLCAwLCBwQnVmZmVyLCAodW5zaWduZWQgbG9uZyopJmR3U2l6ZSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBkd1NpemU7Cit9CitGWF9CT09MIENGUEZfU2tpYUZvbnQ6OkluaXRGb250KENGUEZfU2tpYUZvbnRNZ3IgKnBGb250TWdyLCBDRlBGX1NraWFGb250RGVzY3JpcHRvciAqcEZvbnREZXMsIEZYX0JTVFIgYnNGYW1pbHksIEZYX0RXT1JEIGR3U3R5bGUsIEZYX0JZVEUgdUNoYXJzZXQpCit7CisgICAgaWYgKCFwRm9udE1nciB8fCAhcEZvbnREZXMpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBzd2l0Y2ggKHBGb250RGVzLT5HZXRUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBGUEZfU0tJQUZPTlRUWVBFX1BhdGg6IHsKKyAgICAgICAgICAgICAgICBDRlBGX1NraWFQYXRoRm9udCAqcEZvbnQgPSAoQ0ZQRl9Ta2lhUGF0aEZvbnQqKXBGb250RGVzOworICAgICAgICAgICAgICAgIG1fRmFjZSA9IHBGb250TWdyLT5HZXRGb250RmFjZShwRm9udC0+bV9wUGF0aCwgcEZvbnQtPm1faUZhY2VJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGUEZfU0tJQUZPTlRUWVBFX0ZpbGU6IHsKKyAgICAgICAgICAgICAgICBDRlBGX1NraWFGaWxlRm9udCAqcEZvbnQgPSAoQ0ZQRl9Ta2lhRmlsZUZvbnQqKXBGb250RGVzOworICAgICAgICAgICAgICAgIG1fRmFjZSA9IHBGb250TWdyLT5HZXRGb250RmFjZShwRm9udC0+bV9wRmlsZSwgcEZvbnQtPm1faUZhY2VJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGUEZfU0tJQUZPTlRUWVBFX0J1ZmZlcjogeworICAgICAgICAgICAgICAgIENGUEZfU2tpYUJ1ZmZlckZvbnQgKnBGb250ID0gKENGUEZfU2tpYUJ1ZmZlckZvbnQqKXBGb250RGVzOworICAgICAgICAgICAgICAgIG1fRmFjZSA9IHBGb250TWdyLT5HZXRGb250RmFjZSgoRlhfTFBDQllURSlwRm9udC0+bV9wQnVmZmVyLCBwRm9udC0+bV9zekJ1ZmZlciwgcEZvbnQtPm1faUZhY2VJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgaWYgKCFtX0ZhY2UpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBtX2R3U3R5bGUgPSBkd1N0eWxlOworICAgIG1fdUNoYXJzZXQgPSB1Q2hhcnNldDsKKyAgICBtX3BGb250TWdyID0gcEZvbnRNZ3I7CisgICAgbV9wRm9udERlcyA9IHBGb250RGVzOworICAgIG1fZHdSZWZDb3VudCA9IDE7CisgICAgcmV0dXJuIFRSVUU7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYW5kcm9pZC9mcGZfc2tpYWZvbnQuaCBiL2NvcmUvc3JjL2Z4Z2UvYW5kcm9pZC9mcGZfc2tpYWZvbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDEwNzNjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2ZwZl9za2lhZm9udC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZQRl9TS0lBX0ZPTlRfSF8KKyNkZWZpbmUgX0ZQRl9TS0lBX0ZPTlRfSF8KKyNpZiBfRlhfT1NfID09IF9GWF9BTkRST0lEXworY2xhc3MgQ0ZQRl9Ta2lhRm9udERlc2NyaXB0b3I7CitjbGFzcyBDRlBGX1NraWFGb250TWdyOworY2xhc3MgU2tUeXBlZmFjZTsKK2NsYXNzIENGUEZfU2tpYUZvbnQgOiBwdWJsaWMgSUZQRl9Gb250LCBwdWJsaWMgQ0ZYX09iamVjdAoreworcHVibGljOgorICAgIENGUEZfU2tpYUZvbnQoKTsKKyAgICB2aXJ0dWFsIH5DRlBGX1NraWFGb250KCk7CisgICAgdmlydHVhbCB2b2lkCQkJUmVsZWFzZSgpOworICAgIHZpcnR1YWwgSUZQRl9Gb250KgkJUmV0YWluKCk7CisKKyAgICB2aXJ0dWFsIEZQRl9IRk9OVAkJR2V0SGFuZGxlKCk7CisKKyAgICB2aXJ0dWFsIENGWF9CeXRlU3RyaW5nCUdldEZhbWlseU5hbWUoKTsKKyAgICB2aXJ0dWFsIENGWF9XaWRlU3RyaW5nCUdldFBzTmFtZSgpOworCisgICAgdmlydHVhbCBGWF9EV09SRAkJR2V0Rm9udFN0eWxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2R3U3R5bGU7CisgICAgfQorICAgIHZpcnR1YWwgRlhfQllURQkJCUdldENoYXJzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdUNoYXJzZXQ7CisgICAgfQorCisgICAgdmlydHVhbCBGWF9JTlQzMgkJR2V0R2x5cGhJbmRleChGWF9XQ0hBUiB3VW5pY29kZSk7CisgICAgdmlydHVhbCBGWF9JTlQzMgkJR2V0R2x5cGhXaWR0aChGWF9JTlQzMiBpR2x5cGhJbmRleCk7CisKKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQlHZXRBc2NlbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZYX0lOVDMyCQlHZXREZXNjZW50KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlHZXRHbHlwaEJCb3goRlhfSU5UMzIgaUdseXBoSW5kZXgsIEZYX1JFQ1QgJnJ0QkJveCk7CisgICAgdmlydHVhbCBGWF9CT09MCQkJR2V0QkJveChGWF9SRUNUICZydEJCb3gpOworCisgICAgdmlydHVhbCBGWF9JTlQzMgkJR2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBGWF9JTlQzMgkJR2V0SXRhbGljQW5nbGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZYX0RXT1JECQlHZXRGb250RGF0YShGWF9EV09SRCBkd1RhYmxlLCBGWF9MUEJZVEUgcEJ1ZmZlciwgRlhfRFdPUkQgZHdTaXplKTsKKyAgICBGWF9CT09MCQkJCQlJbml0Rm9udChDRlBGX1NraWFGb250TWdyICpwRm9udE1nciwgQ0ZQRl9Ta2lhRm9udERlc2NyaXB0b3IgKnBGb250RGVzLCBGWF9CU1RSIGJzRmFtaWx5LCBGWF9EV09SRCBkd1N0eWxlLCBGWF9CWVRFIHVDaGFyc2V0KTsKK3Byb3RlY3RlZDoKKyAgICBDRlBGX1NraWFGb250TWdyCQkqbV9wRm9udE1ncjsKKyAgICBDRlBGX1NraWFGb250RGVzY3JpcHRvcgkqbV9wRm9udERlczsKKyAgICBGWEZUX0ZhY2UJCQkJbV9GYWNlOworICAgIEZYX0RXT1JECQkJCW1fZHdTdHlsZTsKKyAgICBGWF9CWVRFCQkJCQltX3VDaGFyc2V0OworICAgIEZYX0RXT1JECQkJCW1fZHdSZWZDb3VudDsKK307CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2ZwZl9za2lhZm9udG1nci5jcHAgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnBmX3NraWFmb250bWdyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjkzZTViCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2ZwZl9za2lhZm9udG1nci5jcHAKQEAgLTAsMCArMSw1NjEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICJmeF9mcGYuaCIKKyNpZiBfRlhfT1NfID09IF9GWF9BTkRST0lEXworI2RlZmluZSBGUEZfU0tJQU1BVENIV0VJR0hUX05BTUUxCTYyCisjZGVmaW5lIEZQRl9TS0lBTUFUQ0hXRUlHSFRfTkFNRTIJNjAKKyNkZWZpbmUgRlBGX1NLSUFNQVRDSFdFSUdIVF8xCQkxNgorI2RlZmluZSBGUEZfU0tJQU1BVENIV0VJR0hUXzIJCTgKKyNpbmNsdWRlICJmcGZfc2tpYWZvbnRtZ3IuaCIKKyNpbmNsdWRlICJmcGZfc2tpYWZvbnQuaCIKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKK3N0YXRpYyB1bnNpZ25lZCBsb25nIEZQRl9Ta2lhU3RyZWFtX1JlYWQoRlhGVF9TdHJlYW0gc3RyZWFtLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsb25nIGNvdW50KQoreworICAgIElGWF9GaWxlUmVhZCAqcEZpbGVSZWFkID0gKElGWF9GaWxlUmVhZCopc3RyZWFtLT5kZXNjcmlwdG9yLnBvaW50ZXI7CisgICAgaWYgKCFwRmlsZVJlYWQpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgaWYgKHBGaWxlUmVhZC0+UmVhZEJsb2NrKGJ1ZmZlciwgKEZYX0ZJTEVTSVpFKW9mZnNldCwgKHNpemVfdCljb3VudCkgIT0gY291bnQpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjb3VudDsKK30KK3N0YXRpYyB2b2lkIEZQRl9Ta2lhU3RyZWFtX0Nsb3NlKEZYRlRfU3RyZWFtIHN0cmVhbSkKK3sKK30KKyNpZmRlZiBfX2NwbHVzcGx1cworfTsKKyNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgX0ZQRl9TS0lBRk9OVE1BUCB7CisgICAgRlhfRFdPUkQJZHdGYW1pbHk7CisgICAgRlhfRFdPUkQJZHdTdWJTdDsKK30gRlBGX1NLSUFGT05UTUFQLCAqRlBGX0xQU0tJQUZPTlRNQVA7Cit0eXBlZGVmIEZQRl9TS0lBRk9OVE1BUCBjb25zdCAqIEZQRl9MUENTS0lBRk9OVE1BUDsKK3N0YXRpYyBjb25zdCBGUEZfU0tJQUZPTlRNQVAgZ19Ta2lhRm9udG1hcFtdID0geworICAgIHsweDU4YzUwODMsCQkweGM4ZDJlMzQ1fSwKKyAgICB7MHg1ZGZhZGUyLAkJMHhlMTYzMzA4MX0sCisgICAgezB4Njg0MzE3ZCwJCTB4ZTE2MzMwODF9LAorICAgIHsweDE0ZWUyZDEzLAkweGM4ZDJlMzQ1fSwKKyAgICB7MHgzOTE4ZmUyZCwJMHhiYmVlZWM3Mn0sCisgICAgezB4M2I5OGIzMWMsCTB4ZTE2MzMwODF9LAorICAgIHsweDNkNDlmNDBlLAkweGUxNjMzMDgxfSwKKyAgICB7MHg0MzJjNDFjNSwJMHhlMTYzMzA4MX0sCisgICAgezB4NDkxYjZhZDAsCTB4ZTE2MzMwODF9LAorICAgIHsweDU2MTJjYWIxLAkweDU5YjlmOGYxfSwKKyAgICB7MHg3NzljZTE5ZCwJMHhjOGQyZTM0NX0sCisgICAgezB4N2NjOTUxMGIsCTB4NTliOWY4ZjF9LAorICAgIHsweDgzNzQ2MDUzLAkweGJiZWVlYzcyfSwKKyAgICB7MHhhYWE2MGMwMywJMHhiYmVlZWM3Mn0sCisgICAgezB4YmY4NWZmMjYsCTB4ZTE2MzMwODF9LAorICAgIHsweGMwNGZlNjAxLAkweGJiZWVlYzcyfSwKKyAgICB7MHhjYTM4MTJkNSwJMHg1OWI5ZjhmMX0sCisgICAgezB4Y2EzODNlMTUsCTB4NTliOWY4ZjF9LAorICAgIHsweGNhZDVlYWY2LAkweDU5YjlmOGYxfSwKKyAgICB7MHhjYjdhMDRjOCwJMHhjOGQyZTM0NX0sCisgICAgezB4ZmI0Y2UwZGUsCTB4ZTE2MzMwODF9LAorfTsKK0ZYX0RXT1JEIEZQRl9Ta2lhR2V0U3Vic3RGb250KEZYX0RXT1JEIGR3SGFzaCkKK3sKKyAgICBGWF9JTlQzMiBpU3RhcnQgPSAwOworICAgIEZYX0lOVDMyIGlFbmQgPSBzaXplb2YoZ19Ta2lhRm9udG1hcCkgLyBzaXplb2YoRlBGX1NLSUFGT05UTUFQKTsKKyAgICB3aGlsZSAoaVN0YXJ0IDw9IGlFbmQpIHsKKyAgICAgICAgRlhfSU5UMzIgaU1pZCA9IChpU3RhcnQgKyBpRW5kKSAvIDI7CisgICAgICAgIEZQRl9MUENTS0lBRk9OVE1BUCBwSXRlbSA9ICZnX1NraWFGb250bWFwW2lNaWRdOworICAgICAgICBpZiAoZHdIYXNoIDwgcEl0ZW0tPmR3RmFtaWx5KSB7CisgICAgICAgICAgICBpRW5kID0gaU1pZCAtIDE7CisgICAgICAgIH0gZWxzZSBpZiAoZHdIYXNoID4gcEl0ZW0tPmR3RmFtaWx5KSB7CisgICAgICAgICAgICBpU3RhcnQgPSBpTWlkICsgMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBwSXRlbS0+ZHdTdWJTdDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KK3N0YXRpYyBjb25zdCBGUEZfU0tJQUZPTlRNQVAgZ19Ta2lhU2Fuc0ZvbnRNYXBbXSA9IHsKKyAgICB7MHg1OGM1MDgzLAkJMHhkNWI4ZDEwZn0sCisgICAgezB4MTRlZTJkMTMsCTB4ZDViOGQxMGZ9LAorICAgIHsweDc3OWNlMTlkLAkweGQ1YjhkMTBmfSwKKyAgICB7MHhjYjdhMDRjOCwJMHhkNWI4ZDEwZn0sCisgICAgezB4ZmI0Y2UwZGUsCTB4ZDViOGQxMGZ9LAorfTsKK0ZYX0RXT1JEIEZQRl9Ta2lhR2V0U2Fuc0ZvbnQoRlhfRFdPUkQgZHdIYXNoKQoreworICAgIEZYX0lOVDMyIGlTdGFydCA9IDA7CisgICAgRlhfSU5UMzIgaUVuZCA9IHNpemVvZihnX1NraWFTYW5zRm9udE1hcCkgLyBzaXplb2YoRlBGX1NLSUFGT05UTUFQKTsKKyAgICB3aGlsZSAoaVN0YXJ0IDw9IGlFbmQpIHsKKyAgICAgICAgRlhfSU5UMzIgaU1pZCA9IChpU3RhcnQgKyBpRW5kKSAvIDI7CisgICAgICAgIEZQRl9MUENTS0lBRk9OVE1BUCBwSXRlbSA9ICZnX1NraWFTYW5zRm9udE1hcFtpTWlkXTsKKyAgICAgICAgaWYgKGR3SGFzaCA8IHBJdGVtLT5kd0ZhbWlseSkgeworICAgICAgICAgICAgaUVuZCA9IGlNaWQgLSAxOworICAgICAgICB9IGVsc2UgaWYgKGR3SGFzaCA+IHBJdGVtLT5kd0ZhbWlseSkgeworICAgICAgICAgICAgaVN0YXJ0ID0gaU1pZCArIDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcEl0ZW0tPmR3U3ViU3Q7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CitzdGF0aWMgRlhfVUlOVDMyIEZQRl9HZXRIYXNoQ29kZV9TdHJpbmdBKEZYX0xQQ1NUUiBwU3RyLCBGWF9JTlQzMiBpTGVuZ3RoLCBGWF9CT09MIGJJZ25vcmVDYXNlID0gRkFMU0UpCit7CisgICAgaWYgKCFwU3RyKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoaUxlbmd0aCA8IDApIHsKKyAgICAgICAgaUxlbmd0aCA9IEZYU1lTX3N0cmxlbihwU3RyKTsKKyAgICB9CisgICAgRlhfTFBDU1RSIHBTdHJFbmQgPSBwU3RyICsgaUxlbmd0aDsKKyAgICBGWF9VSU5UMzIgdUhhc2hDb2RlID0gMDsKKyAgICBpZiAoYklnbm9yZUNhc2UpIHsKKyAgICAgICAgd2hpbGUgKHBTdHIgPCBwU3RyRW5kKSB7CisgICAgICAgICAgICB1SGFzaENvZGUgPSAzMSAqIHVIYXNoQ29kZSArIEZYU1lTX3RvbG93ZXIoKnBTdHIrKyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3aGlsZSAocFN0ciA8IHBTdHJFbmQpIHsKKyAgICAgICAgICAgIHVIYXNoQ29kZSA9IDMxICogdUhhc2hDb2RlICsgKnBTdHIgKys7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHVIYXNoQ29kZTsKK30KK2VudW0gRlBGX1NLSUFDSEFSU0VUIHsKKyAgICBGUEZfU0tJQUNIQVJTRVRfQW5zaQkJCT0gMSA8PCAwLAorICAgIEZQRl9TS0lBQ0hBUlNFVF9EZWZhdWx0CQkJPSAxIDw8IDEsCisgICAgRlBGX1NLSUFDSEFSU0VUX1N5bWJvbAkJCT0gMSA8PCAyLAorICAgIEZQRl9TS0lBQ0hBUlNFVF9TaGlmdEpJUwkJPSAxIDw8IDMsCisgICAgRlBGX1NLSUFDSEFSU0VUX0tvcmVhbgkJCT0gMSA8PCA0LAorICAgIEZQRl9TS0lBQ0hBUlNFVF9Kb2hhYgkJCT0gMSA8PCA1LAorICAgIEZQRl9TS0lBQ0hBUlNFVF9HQjIzMTIJCQk9IDEgPDwgNiwKKyAgICBGUEZfU0tJQUNIQVJTRVRfQklHNQkJCT0gMSA8PCA3LAorICAgIEZQRl9TS0lBQ0hBUlNFVF9HcmVlawkJCT0gMSA8PCA4LAorICAgIEZQRl9TS0lBQ0hBUlNFVF9UdXJraXNoCQkJPSAxIDw8IDksCisgICAgRlBGX1NLSUFDSEFSU0VUX1ZpZXRuYW1lc2UJCT0gMSA8PCAxMCwKKyAgICBGUEZfU0tJQUNIQVJTRVRfSGVicmV3CQkJPSAxIDw8IDExLAorICAgIEZQRl9TS0lBQ0hBUlNFVF9BcmFiaWMJCQk9IDEgPDwgMTIsCisgICAgRlBGX1NLSUFDSEFSU0VUX0JhbHRpYwkJCT0gMSA8PCAxMywKKyAgICBGUEZfU0tJQUNIQVJTRVRfQ3lyaWxsaWMJCT0gMSA8PCAxNCwKKyAgICBGUEZfU0tJQUNIQVJTRVRfVGhhaQkJCT0gMSA8PCAxNSwKKyAgICBGUEZfU0tJQUNIQVJTRVRfRWVhc3Rlcm5FdXJvcGVhbiA9IDEgPDwgMTYsCisgICAgRlBGX1NLSUFDSEFSU0VUX1BDCQkJCT0gMSA8PCAxNywKKyAgICBGUEZfU0tJQUNIQVJTRVRfT0VNCQkJCT0gMSA8PCAxOCwKK307CitzdGF0aWMgRlhfRFdPUkQgRlBGX1NraWFHZXRDaGFyc2V0KEZYX0JZVEUgdUNoYXJzZXQpCit7CisgICAgc3dpdGNoICh1Q2hhcnNldCkgeworICAgICAgICBjYXNlIEZYRk9OVF9BTlNJX0NIQVJTRVQ6CisgICAgICAgICAgICByZXR1cm4gRlBGX1NLSUFDSEFSU0VUX0Fuc2k7CisgICAgICAgIGNhc2UgRlhGT05UX0RFRkFVTFRfQ0hBUlNFVDoKKyAgICAgICAgICAgIHJldHVybiBGUEZfU0tJQUNIQVJTRVRfRGVmYXVsdDsKKyAgICAgICAgY2FzZSBGWEZPTlRfU1lNQk9MX0NIQVJTRVQ6CisgICAgICAgICAgICByZXR1cm4gRlBGX1NLSUFDSEFSU0VUX1N5bWJvbDsKKyAgICAgICAgY2FzZSBGWEZPTlRfU0hJRlRKSVNfQ0hBUlNFVDoKKyAgICAgICAgICAgIHJldHVybiBGUEZfU0tJQUNIQVJTRVRfU2hpZnRKSVM7CisgICAgICAgIGNhc2UgRlhGT05UX0hBTkdFVUxfQ0hBUlNFVDoKKyAgICAgICAgICAgIHJldHVybiBGUEZfU0tJQUNIQVJTRVRfS29yZWFuOworICAgICAgICBjYXNlIEZYRk9OVF9HQjIzMTJfQ0hBUlNFVDoKKyAgICAgICAgICAgIHJldHVybiBGUEZfU0tJQUNIQVJTRVRfR0IyMzEyOworICAgICAgICBjYXNlIEZYRk9OVF9DSElORVNFQklHNV9DSEFSU0VUOgorICAgICAgICAgICAgcmV0dXJuIEZQRl9TS0lBQ0hBUlNFVF9CSUc1OworICAgICAgICBjYXNlIEZYRk9OVF9HUkVFS19DSEFSU0VUOgorICAgICAgICAgICAgcmV0dXJuIEZQRl9TS0lBQ0hBUlNFVF9HcmVlazsKKyAgICAgICAgY2FzZSBGWEZPTlRfVFVSS0lTSF9DSEFSU0VUOgorICAgICAgICAgICAgcmV0dXJuIEZQRl9TS0lBQ0hBUlNFVF9UdXJraXNoOworICAgICAgICBjYXNlIEZYRk9OVF9IRUJSRVdfQ0hBUlNFVDoKKyAgICAgICAgICAgIHJldHVybiBGUEZfU0tJQUNIQVJTRVRfSGVicmV3OworICAgICAgICBjYXNlIEZYRk9OVF9BUkFCSUNfQ0hBUlNFVDoKKyAgICAgICAgICAgIHJldHVybiBGUEZfU0tJQUNIQVJTRVRfQXJhYmljOworICAgICAgICBjYXNlIEZYRk9OVF9CQUxUSUNfQ0hBUlNFVDoKKyAgICAgICAgICAgIHJldHVybiBGUEZfU0tJQUNIQVJTRVRfQmFsdGljOworICAgICAgICBjYXNlIEZYRk9OVF9SVVNTSUFOX0NIQVJTRVQ6CisgICAgICAgICAgICByZXR1cm4gRlBGX1NLSUFDSEFSU0VUX0N5cmlsbGljOworICAgICAgICBjYXNlIEZYRk9OVF9USEFJX0NIQVJTRVQ6CisgICAgICAgICAgICByZXR1cm4gRlBGX1NLSUFDSEFSU0VUX1RoYWk7CisgICAgICAgIGNhc2UgRlhGT05UX0VBU1RFVVJPUEVfQ0hBUlNFVDoKKyAgICAgICAgICAgIHJldHVybiBGUEZfU0tJQUNIQVJTRVRfRWVhc3Rlcm5FdXJvcGVhbjsKKyAgICB9CisgICAgcmV0dXJuIEZQRl9TS0lBQ0hBUlNFVF9EZWZhdWx0OworfQorc3RhdGljIEZYX0RXT1JEIEZQRl9TS0lBTm9ybWFsaXplRm9udE5hbWUoRlhfQlNUUiBic2ZhbWlseSkKK3sKKyAgICBGWF9EV09SRCBkd0hhc2ggPSAwOworICAgIEZYX0lOVDMyIGlMZW5ndGggPSBic2ZhbWlseS5HZXRMZW5ndGgoKTsKKyAgICBGWF9MUENTVFIgcEJ1ZmZlciA9IGJzZmFtaWx5LkdldENTdHIoKTsKKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgaUxlbmd0aDsgaSsrKSB7CisgICAgICAgIEZYX0NIQVIgY2ggPSBwQnVmZmVyW2ldOworICAgICAgICBpZiAoY2ggPT0gJyAnIHx8IGNoID09ICctJyB8fCBjaCA9PSAnLCcpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGR3SGFzaCA9IDMxICogZHdIYXNoICsgRlhTWVNfdG9sb3dlcihjaCk7CisgICAgfQorICAgIHJldHVybiBkd0hhc2g7Cit9CitzdGF0aWMgRlhfRFdPUkQJRlBGX1NLSUFHZXRGYW1pbHlIYXNoKEZYX0JTVFIgYnNGYW1pbHksIEZYX0RXT1JEIGR3U3R5bGUsIEZYX0JZVEUgdUNoYXJzZXQpCit7CisgICAgQ0ZYX0J5dGVTdHJpbmcgYnNGb250KGJzRmFtaWx5KTsKKyAgICBpZiAoZHdTdHlsZSAmIEZYRk9OVF9CT0xEKSB7CisgICAgICAgIGJzRm9udCArPSAiQm9sZCI7CisgICAgfQorICAgIGlmIChkd1N0eWxlICYgRlhGT05UX0lUQUxJQykgeworICAgICAgICBic0ZvbnQgKz0gIkl0YWxpYyI7CisgICAgfQorICAgIGlmIChkd1N0eWxlICYgRlhGT05UX1NFUklGKQl7CisgICAgICAgIGJzRm9udCArPSAiU2VyaWYiOworICAgIH0KKyAgICBic0ZvbnQgKz0gdUNoYXJzZXQ7CisgICAgcmV0dXJuIEZQRl9HZXRIYXNoQ29kZV9TdHJpbmdBKChGWF9MUENTVFIpYnNGb250LCBic0ZvbnQuR2V0TGVuZ3RoKCksIFRSVUUpOworfQorc3RhdGljIEZYX0JPT0wgRlBGX1NraWFJc0NKSyhGWF9CWVRFIHVDaGFyc2V0KQoreworICAgIHJldHVybiAodUNoYXJzZXQgPT0gRlhGT05UX0dCMjMxMl9DSEFSU0VUKSB8fCAodUNoYXJzZXQgPT0gRlhGT05UX0NISU5FU0VCSUc1X0NIQVJTRVQpCisgICAgICAgICAgIHx8ICh1Q2hhcnNldCA9PSBGWEZPTlRfSEFOR0VVTF9DSEFSU0VUKSB8fCAodUNoYXJzZXQgPT0gRlhGT05UX1NISUZUSklTX0NIQVJTRVQpOworfQorc3RhdGljIEZYX0JPT0wgRlBGX1NraWFNYXliZVN5bWJvbChGWF9CU1RSIGJzRmFjZW5hbWUpCit7CisgICAgQ0ZYX0J5dGVTdHJpbmcgYnNOYW1lID0gYnNGYWNlbmFtZTsKKyAgICBic05hbWUuTWFrZUxvd2VyKCk7CisgICAgcmV0dXJuIGJzTmFtZS5GaW5kKCJzeW1ib2wiKSA+IC0xOworfQorc3RhdGljIEZYX0JPT0wgRlBGX1NraWFNYXliZUFyYWJpYyhGWF9CU1RSIGJzRmFjZW5hbWUpCit7CisgICAgQ0ZYX0J5dGVTdHJpbmcgYnNOYW1lID0gYnNGYWNlbmFtZTsKKyAgICBic05hbWUuTWFrZUxvd2VyKCk7CisgICAgcmV0dXJuIGJzTmFtZS5GaW5kKCJhcmFiaWMiKSA+IC0xOworfQorQ0ZQRl9Ta2lhRm9udE1ncjo6Q0ZQRl9Ta2lhRm9udE1ncigpCisgICAgOiBtX2JMb2FkZWQoRkFMU0UpLCBtX0ZUTGlicmFyeShOVUxMKQoreworfQorQ0ZQRl9Ta2lhRm9udE1ncjo6fkNGUEZfU2tpYUZvbnRNZ3IoKQoreworICAgIHZvaWQgKnBrZXkgPSBOVUxMOworICAgIENGUEZfU2tpYUZvbnQgKnBWYWx1ZSA9IE5VTEw7CisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9GYW1pbHlGb250cy5HZXRTdGFydFBvc2l0aW9uKCk7CisgICAgd2hpbGUgKHBvcykgeworICAgICAgICBtX0ZhbWlseUZvbnRzLkdldE5leHRBc3NvYyhwb3MsIHBrZXksICh2b2lkKiYpcFZhbHVlKTsKKyAgICAgICAgaWYgKHBWYWx1ZSkgeworICAgICAgICAgICAgcFZhbHVlLT5SZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9GYW1pbHlGb250cy5SZW1vdmVBbGwoKTsKKyAgICBmb3IgKEZYX0lOVDMyIGkgPSBtX0ZvbnRGYWNlcy5HZXRVcHBlckJvdW5kKCk7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIENGUEZfU2tpYUZvbnREZXNjcmlwdG9yICpwRm9udCA9IChDRlBGX1NraWFGb250RGVzY3JpcHRvciopbV9Gb250RmFjZXMuRWxlbWVudEF0KGkpOworICAgICAgICBpZiAocEZvbnQpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBwRm9udDsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX0ZvbnRGYWNlcy5SZW1vdmVBbGwoKTsKKyAgICBpZiAobV9GVExpYnJhcnkpIHsKKyAgICAgICAgRlhGVF9Eb25lX0ZyZWVUeXBlKG1fRlRMaWJyYXJ5KTsKKyAgICB9Cit9CitGWF9CT09MIENGUEZfU2tpYUZvbnRNZ3I6OkluaXRGVExpYnJhcnkoKQoreworICAgIGlmIChtX0ZUTGlicmFyeSA9PSBOVUxMKSB7CisgICAgICAgIEZYRlRfSW5pdF9GcmVlVHlwZSgmbV9GVExpYnJhcnkpOworICAgIH0KKyAgICByZXR1cm4gbV9GVExpYnJhcnkgIT0gTlVMTDsKK30KK3ZvaWQgQ0ZQRl9Ta2lhRm9udE1ncjo6TG9hZFN5c3RlbUZvbnRzKCkKK3sKKyAgICBpZiAobV9iTG9hZGVkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgU2NhblBhdGgoRlhfQlNUUkMoIi9zeXN0ZW0vZm9udHMiKSk7CisgICAgT3V0cHV0U3lzdGVtRm9udHMoKTsKKyAgICBtX2JMb2FkZWQgPSBUUlVFOworfQordm9pZCBDRlBGX1NraWFGb250TWdyOjpMb2FkUHJpdmF0ZUZvbnQoSUZYX0ZpbGVSZWFkKiBwRm9udEZpbGUpCit7Cit9Cit2b2lkIENGUEZfU2tpYUZvbnRNZ3I6OkxvYWRQcml2YXRlRm9udChGWF9CU1RSIGJzRmlsZU5hbWUpCit7Cit9Cit2b2lkIENGUEZfU2tpYUZvbnRNZ3I6OkxvYWRQcml2YXRlRm9udChGWF9MUFZPSUQgcEJ1ZmZlciwgc2l6ZV90IHN6QnVmZmVyKQoreworfQorSUZQRl9Gb250KiBDRlBGX1NraWFGb250TWdyOjpDcmVhdGVGb250KEZYX0JTVFIgYnNGYW1pbHluYW1lLCBGWF9CWVRFIHVDaGFyc2V0LCBGWF9EV09SRCBkd1N0eWxlLCBGWF9EV09SRCBkd01hdGNoKQoreworICAgIEZYX0RXT1JEIGR3SGFzaCA9IEZQRl9TS0lBR2V0RmFtaWx5SGFzaChic0ZhbWlseW5hbWUsIGR3U3R5bGUsIHVDaGFyc2V0KTsKKyAgICBJRlBGX0ZvbnQgKnBGb250ID0gTlVMTDsKKyAgICBpZiAobV9GYW1pbHlGb250cy5Mb29rdXAoKHZvaWQqKWR3SGFzaCwgKHZvaWQqJilwRm9udCkpIHsKKyAgICAgICAgaWYgKHBGb250KSB7CisgICAgICAgICAgICByZXR1cm4gcEZvbnQtPlJldGFpbigpOworICAgICAgICB9CisgICAgfQorICAgIEZYX0RXT1JEIGR3RmFjZU5hbWUgPSBGUEZfU0tJQU5vcm1hbGl6ZUZvbnROYW1lKGJzRmFtaWx5bmFtZSk7CisgICAgRlhfRFdPUkQgZHdTdWJzdCA9IEZQRl9Ta2lhR2V0U3Vic3RGb250KGR3RmFjZU5hbWUpOworICAgIEZYX0RXT1JEIGR3U3Vic3RTYW5zID0gRlBGX1NraWFHZXRTYW5zRm9udChkd0ZhY2VOYW1lKTsKKyAgICBGWF9CT09MIGJNYXliZVN5bWJvbCA9IEZQRl9Ta2lhTWF5YmVTeW1ib2woYnNGYW1pbHluYW1lKTsKKyAgICBpZiAodUNoYXJzZXQgIT0gRlhGT05UX0FSQUJJQ19DSEFSU0VUICYmIEZQRl9Ta2lhTWF5YmVBcmFiaWMoYnNGYW1pbHluYW1lKSkgeworICAgICAgICB1Q2hhcnNldCA9IEZYRk9OVF9BUkFCSUNfQ0hBUlNFVDsKKyAgICB9IGVsc2UgaWYgKHVDaGFyc2V0ID09IEZYRk9OVF9BTlNJX0NIQVJTRVQgJiYgKGR3TWF0Y2ggJiBGUEZfTUFUQ0hGT05UX1JFUExBQ0VBTlNJKSkgeworICAgICAgICB1Q2hhcnNldCA9IEZYRk9OVF9ERUZBVUxUX0NIQVJTRVQ7CisgICAgfQorICAgIEZYX0lOVDMyIG5FeHBlY3RWYWwgPSBGUEZfU0tJQU1BVENIV0VJR0hUX05BTUUxICsgRlBGX1NLSUFNQVRDSFdFSUdIVF8xICogMyArIEZQRl9TS0lBTUFUQ0hXRUlHSFRfMiAqIDI7CisgICAgRlhfSU5UMzIgbkl0ZW0gPSAtMTsKKyAgICBGWF9JTlQzMiBuTWF4ID0gLTE7CisgICAgRlhfSU5UMzIgbkdseXBoTnVtID0gMDsKKyAgICBmb3IgKEZYX0lOVDMyIGkgPSBtX0ZvbnRGYWNlcy5HZXRVcHBlckJvdW5kKCk7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIENGUEZfU2tpYVBhdGhGb250ICpwRm9udERlcyA9IChDRlBGX1NraWFQYXRoRm9udCopbV9Gb250RmFjZXMuRWxlbWVudEF0KGkpOworICAgICAgICBpZighKHBGb250RGVzLT5tX2R3Q2hhcnNldHMgJiBGUEZfU2tpYUdldENoYXJzZXQodUNoYXJzZXQpKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgRlhfSU5UMzIgbkZpbmQgPSAwOworICAgICAgICBGWF9EV09SRCBkd1N5c0ZvbnROYW1lID0gRlBGX1NLSUFOb3JtYWxpemVGb250TmFtZShwRm9udERlcy0+bV9wRmFtaWx5KTsKKyAgICAgICAgaWYgKGR3RmFjZU5hbWUgPT0gZHdTeXNGb250TmFtZSkgeworICAgICAgICAgICAgbkZpbmQgKz0gRlBGX1NLSUFNQVRDSFdFSUdIVF9OQU1FMTsKKyAgICAgICAgfQorICAgICAgICBGWF9CT09MIGJNYXRjaGVkTmFtZSA9IChuRmluZCA9PSBGUEZfU0tJQU1BVENIV0VJR0hUX05BTUUxKTsKKyAgICAgICAgaWYgKChkd1N0eWxlICYgRlhGT05UX0JPTEQpID09IChwRm9udERlcy0+bV9kd1N0eWxlICYgRlhGT05UX0JPTEQpKSB7CisgICAgICAgICAgICBuRmluZCArPSBGUEZfU0tJQU1BVENIV0VJR0hUXzE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChkd1N0eWxlICYgRlhGT05UX0lUQUxJQykgPT0gKHBGb250RGVzLT5tX2R3U3R5bGUgJiBGWEZPTlRfSVRBTElDKSkgeworICAgICAgICAgICAgbkZpbmQgKz0gRlBGX1NLSUFNQVRDSFdFSUdIVF8xOworICAgICAgICB9CisgICAgICAgIGlmICgoZHdTdHlsZSAmIEZYRk9OVF9GSVhFRF9QSVRDSCkgPT0gKHBGb250RGVzLT5tX2R3U3R5bGUgJiBGWEZPTlRfRklYRURfUElUQ0gpKSB7CisgICAgICAgICAgICBuRmluZCArPSBGUEZfU0tJQU1BVENIV0VJR0hUXzI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChkd1N0eWxlICYgRlhGT05UX1NFUklGKSA9PSAocEZvbnREZXMtPm1fZHdTdHlsZSAmIEZYRk9OVF9TRVJJRikpIHsKKyAgICAgICAgICAgIG5GaW5kICs9IEZQRl9TS0lBTUFUQ0hXRUlHSFRfMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGR3U3R5bGUgJiBGWEZPTlRfU0NSSVBUKSA9PSAocEZvbnREZXMtPm1fZHdTdHlsZSAmIEZYRk9OVF9TQ1JJUFQpKSB7CisgICAgICAgICAgICBuRmluZCArPSBGUEZfU0tJQU1BVENIV0VJR0hUXzI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGR3U3Vic3QgPT0gZHdTeXNGb250TmFtZSB8fCBkd1N1YnN0U2FucyA9PSBkd1N5c0ZvbnROYW1lKSB7CisgICAgICAgICAgICBuRmluZCArPSBGUEZfU0tJQU1BVENIV0VJR0hUX05BTUUyOworICAgICAgICAgICAgYk1hdGNoZWROYW1lID0gVFJVRTsKKyAgICAgICAgfQorICAgICAgICBpZiAodUNoYXJzZXQgPT0gRlhGT05UX0RFRkFVTFRfQ0hBUlNFVCB8fCBiTWF5YmVTeW1ib2wpIHsKKyAgICAgICAgICAgIGlmIChuRmluZCA+IG5NYXggJiYgYk1hdGNoZWROYW1lKSB7CisgICAgICAgICAgICAgICAgbk1heCA9IG5GaW5kOworICAgICAgICAgICAgICAgIG5JdGVtID0gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChGUEZfU2tpYUlzQ0pLKHVDaGFyc2V0KSkgeworICAgICAgICAgICAgaWYgKGJNYXRjaGVkTmFtZSB8fCBwRm9udERlcy0+bV9pR2x5cGhOdW0gPiBuR2x5cGhOdW0pIHsKKyAgICAgICAgICAgICAgICBuSXRlbSA9IGk7CisgICAgICAgICAgICAgICAgbkdseXBoTnVtID0gcEZvbnREZXMtPm1faUdseXBoTnVtOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG5GaW5kID4gbk1heCkgeworICAgICAgICAgICAgbk1heCA9IG5GaW5kOworICAgICAgICAgICAgbkl0ZW0gPSBpOworICAgICAgICB9CisgICAgICAgIGlmIChuRXhwZWN0VmFsIDw9IG5GaW5kKSB7CisgICAgICAgICAgICBuSXRlbSA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobkl0ZW0gPiAtMSkgeworICAgICAgICBDRlBGX1NraWFGb250RGVzY3JpcHRvciAqcEZvbnREZXMgPSAoQ0ZQRl9Ta2lhRm9udERlc2NyaXB0b3IqKW1fRm9udEZhY2VzLkVsZW1lbnRBdChuSXRlbSk7CisgICAgICAgIENGUEZfU2tpYUZvbnQgKnBGb250ID0gRlhfTkVXIENGUEZfU2tpYUZvbnQ7CisgICAgICAgIGlmIChwRm9udCkgeworICAgICAgICAgICAgaWYgKHBGb250LT5Jbml0Rm9udCh0aGlzLCBwRm9udERlcywgYnNGYW1pbHluYW1lLCBkd1N0eWxlLCB1Q2hhcnNldCkpIHsKKyAgICAgICAgICAgICAgICBtX0ZhbWlseUZvbnRzLlNldEF0KCh2b2lkKilkd0hhc2gsICh2b2lkKilwRm9udCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBGb250LT5SZXRhaW4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBGb250LT5SZWxlYXNlKCk7CisgICAgICAgICAgICBwRm9udCA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBGb250OworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KK0ZYRlRfRmFjZSBDRlBGX1NraWFGb250TWdyOjpHZXRGb250RmFjZShJRlhfRmlsZVJlYWQgKnBGaWxlUmVhZCwgRlhfSU5UMzIgaUZhY2VJbmRleCkKK3sKKyAgICBpZiAoIXBGaWxlUmVhZCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHBGaWxlUmVhZC0+R2V0U2l6ZSgpID09IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChpRmFjZUluZGV4IDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgRlhGVF9TdHJlYW1SZWMgc3RyZWFtUmVjOworICAgIEZYU1lTX21lbXNldDMyKCZzdHJlYW1SZWMsIDAsIHNpemVvZihGWEZUX1N0cmVhbVJlYykpOworICAgIHN0cmVhbVJlYy5zaXplID0gcEZpbGVSZWFkLT5HZXRTaXplKCk7CisgICAgc3RyZWFtUmVjLmRlc2NyaXB0b3IucG9pbnRlciA9IHBGaWxlUmVhZDsKKyAgICBzdHJlYW1SZWMucmVhZCA9IEZQRl9Ta2lhU3RyZWFtX1JlYWQ7CisgICAgc3RyZWFtUmVjLmNsb3NlID0gRlBGX1NraWFTdHJlYW1fQ2xvc2U7CisgICAgRlhGVF9PcGVuX0FyZ3MgYXJnczsKKyAgICBhcmdzLmZsYWdzID0gRlRfT1BFTl9TVFJFQU07CisgICAgYXJncy5zdHJlYW0gPSAmc3RyZWFtUmVjOworICAgIEZYRlRfRmFjZSBmYWNlOworICAgIGlmIChGWEZUX09wZW5fRmFjZShtX0ZUTGlicmFyeSwgJmFyZ3MsIGlGYWNlSW5kZXgsICZmYWNlKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgRlhGVF9TZXRfUGl4ZWxfU2l6ZXMoZmFjZSwgMCwgNjQpOworICAgIHJldHVybiBmYWNlOworfQorRlhGVF9GYWNlIENGUEZfU2tpYUZvbnRNZ3I6OkdldEZvbnRGYWNlKEZYX0JTVFIgYnNGaWxlLCBGWF9JTlQzMiBpRmFjZUluZGV4ICkKK3sKKyAgICBpZiAoYnNGaWxlLklzRW1wdHkoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGlGYWNlSW5kZXggPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBGWEZUX09wZW5fQXJncyBhcmdzOworICAgIGFyZ3MuZmxhZ3MgPSBGVF9PUEVOX1BBVEhOQU1FOworICAgIGFyZ3MucGF0aG5hbWUgPSAoRlRfU3RyaW5nKilic0ZpbGUuR2V0Q1N0cigpOworICAgIEZYRlRfRmFjZSBmYWNlOworICAgIGlmIChGWEZUX09wZW5fRmFjZShtX0ZUTGlicmFyeSwgJmFyZ3MsIGlGYWNlSW5kZXgsICZmYWNlKSkgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIEZYRlRfU2V0X1BpeGVsX1NpemVzKGZhY2UsIDAsIDY0KTsKKyAgICByZXR1cm4gZmFjZTsKK30KK0ZYRlRfRmFjZSBDRlBGX1NraWFGb250TWdyOjpHZXRGb250RmFjZShGWF9MUENCWVRFIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlciwgRlhfSU5UMzIgaUZhY2VJbmRleCApCit7CisgICAgaWYgKCFwQnVmZmVyIHx8IHN6QnVmZmVyIDwgMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGlGYWNlSW5kZXggPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBGWEZUX09wZW5fQXJncyBhcmdzOworICAgIGFyZ3MuZmxhZ3MgPSBGVF9PUEVOX01FTU9SWTsKKyAgICBhcmdzLm1lbW9yeV9iYXNlID0gcEJ1ZmZlcjsKKyAgICBhcmdzLm1lbW9yeV9zaXplID0gc3pCdWZmZXI7CisgICAgRlhGVF9GYWNlIGZhY2U7CisgICAgaWYgKEZYRlRfT3Blbl9GYWNlKG1fRlRMaWJyYXJ5LCAmYXJncywgaUZhY2VJbmRleCwgJmZhY2UpKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgRlhGVF9TZXRfUGl4ZWxfU2l6ZXMoZmFjZSwgMCwgNjQpOworICAgIHJldHVybiBmYWNlOworfQordm9pZCBDRlBGX1NraWFGb250TWdyOjpTY2FuUGF0aChGWF9CU1RSIHBhdGgpCit7CisgICAgdm9pZCAqaGFuZGxlID0gRlhfT3BlbkZvbGRlcihwYXRoLkdldENTdHIoKSk7CisgICAgaWYgKCFoYW5kbGUpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDRlhfQnl0ZVN0cmluZyBmaWxlbmFtZTsKKyAgICBGWF9CT09MCWJGb2xkZXIgPSBGQUxTRTsKKyAgICB3aGlsZSAoRlhfR2V0TmV4dEZpbGUoaGFuZGxlLCBmaWxlbmFtZSwgYkZvbGRlcikpIHsKKyAgICAgICAgaWYgKGJGb2xkZXIpIHsKKyAgICAgICAgICAgIGlmIChmaWxlbmFtZSA9PSBGWF9CU1RSQygiLiIpIHx8IGZpbGVuYW1lID09IEZYX0JTVFJDKCIuLiIpKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBleHQgPSBmaWxlbmFtZS5SaWdodCg0KTsKKyAgICAgICAgICAgIGV4dC5NYWtlTG93ZXIoKTsKKyAgICAgICAgICAgIGlmIChleHQgIT0gRlhfQlNUUkMoIi50dGYiKSAmJiBleHQgIT0gRlhfQlNUUkMoIi50dGMiKSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIENGWF9CeXRlU3RyaW5nIGZ1bGxwYXRoID0gcGF0aDsKKyAgICAgICAgZnVsbHBhdGggKz0gIi8iOworICAgICAgICBmdWxscGF0aCArPSBmaWxlbmFtZTsKKyAgICAgICAgaWYgKGJGb2xkZXIpIHsKKyAgICAgICAgICAgIFNjYW5QYXRoKGZ1bGxwYXRoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFNjYW5GaWxlKGZ1bGxwYXRoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBGWF9DbG9zZUZvbGRlcihoYW5kbGUpOworfQordm9pZCBDRlBGX1NraWFGb250TWdyOjpTY2FuRmlsZShGWF9CU1RSIGZpbGUpCit7CisgICAgRlhGVF9GYWNlIGZhY2UgPSBHZXRGb250RmFjZShmaWxlKTsKKyAgICBpZiAoZmFjZSkgeworICAgICAgICBDRlBGX1NraWFQYXRoRm9udCAqcEZvbnREZXNjID0gRlhfTkVXIENGUEZfU2tpYVBhdGhGb250OworICAgICAgICBpZiAoIXBGb250RGVzYykgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHBGb250RGVzYy0+U2V0UGF0aChmaWxlLkdldENTdHIoKSk7CisgICAgICAgIFJlcG9ydEZhY2UoZmFjZSwgcEZvbnREZXNjKTsKKyAgICAgICAgbV9Gb250RmFjZXMuQWRkKHBGb250RGVzYyk7CisgICAgICAgIEZYRlRfRG9uZV9GYWNlKGZhY2UpOworICAgIH0KK30KK3N0YXRpYyBjb25zdCBGWF9EV09SRCBnX0ZQRlNraWFGb250Q2hhcnNldHMgW10gPSB7CisgICAgRlBGX1NLSUFDSEFSU0VUX0Fuc2ksCisgICAgRlBGX1NLSUFDSEFSU0VUX0VlYXN0ZXJuRXVyb3BlYW4sCisgICAgRlBGX1NLSUFDSEFSU0VUX0N5cmlsbGljLAorICAgIEZQRl9TS0lBQ0hBUlNFVF9HcmVlaywKKyAgICBGUEZfU0tJQUNIQVJTRVRfVHVya2lzaCwKKyAgICBGUEZfU0tJQUNIQVJTRVRfSGVicmV3LAorICAgIEZQRl9TS0lBQ0hBUlNFVF9BcmFiaWMsCisgICAgRlBGX1NLSUFDSEFSU0VUX0JhbHRpYywKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgRlBGX1NLSUFDSEFSU0VUX1RoYWksCisgICAgRlBGX1NLSUFDSEFSU0VUX1NoaWZ0SklTLAorICAgIEZQRl9TS0lBQ0hBUlNFVF9HQjIzMTIsCisgICAgRlBGX1NLSUFDSEFSU0VUX0tvcmVhbiwKKyAgICBGUEZfU0tJQUNIQVJTRVRfQklHNSwKKyAgICBGUEZfU0tJQUNIQVJTRVRfSm9oYWIsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIEZQRl9TS0lBQ0hBUlNFVF9PRU0sCisgICAgRlBGX1NLSUFDSEFSU0VUX1N5bWJvbCwKK307CitzdGF0aWMgRlhfRFdPUkQgRlBGX1NraWFHZXRGYWNlQ2hhcnNldChUVF9PUzIgKnBPUzIpCit7CisgICAgRlhfRFdPUkQgZHdDaGFyc2V0ID0gMDsKKyAgICBpZiAocE9TMikgeworICAgICAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgMzI7IGkrKykgeworICAgICAgICAgICAgaWYgKHBPUzItPnVsQ29kZVBhZ2VSYW5nZTEgJiAoMSA8PCBpKSkgeworICAgICAgICAgICAgICAgIGR3Q2hhcnNldCB8PSBnX0ZQRlNraWFGb250Q2hhcnNldHNbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZHdDaGFyc2V0IHw9IEZQRl9TS0lBQ0hBUlNFVF9EZWZhdWx0OworICAgIHJldHVybiBkd0NoYXJzZXQ7Cit9Cit2b2lkIENGUEZfU2tpYUZvbnRNZ3I6OlJlcG9ydEZhY2UoRlhGVF9GYWNlIGZhY2UsIENGUEZfU2tpYUZvbnREZXNjcmlwdG9yICpwRm9udERlc2MpCit7CisgICAgaWYgKCFmYWNlIHx8ICFwRm9udERlc2MpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwRm9udERlc2MtPlNldEZhbWlseShGWEZUX0dldF9GYWNlX0ZhbWlseV9OYW1lKGZhY2UpKTsKKyAgICBpZiAoRlhGVF9Jc19GYWNlX0JvbGQoZmFjZSkpCXsKKyAgICAgICAgcEZvbnREZXNjLT5tX2R3U3R5bGUgfD0gRlhGT05UX0JPTEQ7CisgICAgfQorICAgIGlmIChGWEZUX0lzX0ZhY2VfSXRhbGljKGZhY2UpKQl7CisgICAgICAgIHBGb250RGVzYy0+bV9kd1N0eWxlIHw9IEZYRk9OVF9JVEFMSUM7CisgICAgfQorICAgIGlmIChGVF9JU19GSVhFRF9XSURUSChmYWNlKSkJeworICAgICAgICBwRm9udERlc2MtPm1fZHdTdHlsZSB8PSBGWEZPTlRfRklYRURfUElUQ0g7CisgICAgfQorICAgIFRUX09TMiAqcE9TMiA9IChUVF9PUzIqKUZUX0dldF9TZm50X1RhYmxlKGZhY2UsIGZ0X3NmbnRfb3MyKTsKKyAgICBpZiAocE9TMikgeworICAgICAgICBpZiAocE9TMi0+dWxDb2RlUGFnZVJhbmdlMSAmICgxIDw8IDMxKSkgeworICAgICAgICAgICAgcEZvbnREZXNjLT5tX2R3U3R5bGUgfD0gRlhGT05UX1NZTUJPTElDOworICAgICAgICB9CisgICAgICAgIGlmIChwT1MyLT5wYW5vc2VbMF0gPT0gMikgeworICAgICAgICAgICAgRlhfQllURSB1U2VyaWYgPSBwT1MyLT5wYW5vc2VbMV07CisgICAgICAgICAgICBpZiAoKHVTZXJpZiA+IDEgJiYgdVNlcmlmIDwgMTApIHx8IHVTZXJpZiA+IDEzKSB7CisgICAgICAgICAgICAgICAgcEZvbnREZXNjLT5tX2R3U3R5bGUgfD0gRlhGT05UX1NFUklGOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmIChwT1MyICYmIChwT1MyLT51bENvZGVQYWdlUmFuZ2UxICYgKDEgPDwgMzEpKSkgeworICAgICAgICBwRm9udERlc2MtPm1fZHdTdHlsZSB8PSBGWEZPTlRfU1lNQk9MSUM7CisgICAgfQorICAgIHBGb250RGVzYy0+bV9kd0NoYXJzZXRzID0gRlBGX1NraWFHZXRGYWNlQ2hhcnNldChwT1MyKTsKKyAgICBwRm9udERlc2MtPm1faUZhY2VJbmRleCA9IGZhY2UtPmZhY2VfaW5kZXg7CisgICAgcEZvbnREZXNjLT5tX2lHbHlwaE51bSA9IGZhY2UtPm51bV9nbHlwaHM7Cit9Cit2b2lkIENGUEZfU2tpYUZvbnRNZ3I6Ok91dHB1dFN5c3RlbUZvbnRzKCkKK3sKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2ZwZl9za2lhZm9udG1nci5oIGIvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2ZwZl9za2lhZm9udG1nci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MmZiYmQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnBmX3NraWFmb250bWdyLmgKQEAgLTAsMCArMSwxMTcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZQRl9TS0lBX0ZPTlRNR1JfSF8KKyNkZWZpbmUgX0ZQRl9TS0lBX0ZPTlRNR1JfSF8KKyNpZiBfRlhfT1NfID09IF9GWF9BTkRST0lEXworI2RlZmluZSBGUEZfU0tJQUZPTlRUWVBFX1Vua25vd24JMAorI2RlZmluZQlGUEZfU0tJQUZPTlRUWVBFX1BhdGgJCTEKKyNkZWZpbmUgRlBGX1NLSUFGT05UVFlQRV9GaWxlCQkyCisjZGVmaW5lIEZQRl9TS0lBRk9OVFRZUEVfQnVmZmVyCQkzCitjbGFzcyBDRlBGX1NraWFGb250RGVzY3JpcHRvciA6IHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgQ0ZQRl9Ta2lhRm9udERlc2NyaXB0b3IoKSA6IG1fcEZhbWlseShOVUxMKSwgbV9kd1N0eWxlKDApLCBtX2lGYWNlSW5kZXgoMCksIG1fZHdDaGFyc2V0cygwKSwgbV9pR2x5cGhOdW0oMCkge30KKyAgICB2aXJ0dWFsIH5DRlBGX1NraWFGb250RGVzY3JpcHRvcigpCisgICAgeworICAgICAgICBpZiAobV9wRmFtaWx5KSB7CisgICAgICAgICAgICBGWF9GcmVlKG1fcEZhbWlseSk7CisgICAgICAgIH0KKyAgICB9CisgICAgdmlydHVhbAlGWF9JTlQzMglHZXRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBGUEZfU0tJQUZPTlRUWVBFX1Vua25vd247CisgICAgfQorICAgIHZvaWQJCQkJU2V0RmFtaWx5KEZYX0xQQ1NUUiBwRmFtaWx5KQorICAgIHsKKyAgICAgICAgaWYgKG1fcEZhbWlseSkgeworICAgICAgICAgICAgRlhfRnJlZShtX3BGYW1pbHkpOworICAgICAgICB9CisgICAgICAgIEZYX0lOVDMyIGlTaXplID0gRlhTWVNfc3RybGVuKHBGYW1pbHkpOworICAgICAgICBtX3BGYW1pbHkgPSBGWF9BbGxvYyhGWF9DSEFSLCBpU2l6ZSArIDEpOworICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BGYW1pbHksIHBGYW1pbHksIGlTaXplICogc2l6ZW9mKEZYX0NIQVIpKTsKKyAgICAgICAgbV9wRmFtaWx5W2lTaXplXSA9IDA7CisgICAgfQorICAgIEZYX0xQU1RSCQltX3BGYW1pbHk7CisgICAgRlhfRFdPUkQJCW1fZHdTdHlsZTsKKyAgICBGWF9JTlQzMgkJbV9pRmFjZUluZGV4OworICAgIEZYX0RXT1JECQltX2R3Q2hhcnNldHM7CisgICAgRlhfSU5UMzIJCW1faUdseXBoTnVtOworfTsKK2NsYXNzIENGUEZfU2tpYVBhdGhGb250IDogcHVibGljIENGUEZfU2tpYUZvbnREZXNjcmlwdG9yCit7CitwdWJsaWM6CisgICAgQ0ZQRl9Ta2lhUGF0aEZvbnQoKSA6IG1fcFBhdGgoTlVMTCkge30KKyAgICB2aXJ0dWFsIH5DRlBGX1NraWFQYXRoRm9udCgpCisgICAgeworICAgICAgICBpZiAobV9wUGF0aCkgeworICAgICAgICAgICAgRlhfRnJlZShtX3BQYXRoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2aXJ0dWFsCUZYX0lOVDMyCUdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEZQRl9TS0lBRk9OVFRZUEVfUGF0aDsKKyAgICB9CisgICAgdm9pZAkJCQlTZXRQYXRoKEZYX0xQQ1NUUiBwUGF0aCkKKyAgICB7CisgICAgICAgIGlmIChtX3BQYXRoKSB7CisgICAgICAgICAgICBGWF9GcmVlKG1fcFBhdGgpOworICAgICAgICB9CisgICAgICAgIEZYX0lOVDMyIGlTaXplID0gRlhTWVNfc3RybGVuKHBQYXRoKTsKKyAgICAgICAgbV9wUGF0aCA9IEZYX0FsbG9jKEZYX0NIQVIsIGlTaXplICsgMSk7CisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcFBhdGgsIHBQYXRoLCBpU2l6ZSAqIHNpemVvZihGWF9DSEFSKSk7CisgICAgICAgIG1fcFBhdGhbaVNpemVdID0gMDsKKyAgICB9CisgICAgRlhfTFBTVFIJCW1fcFBhdGg7Cit9OworY2xhc3MgQ0ZQRl9Ta2lhRmlsZUZvbnQgOiBwdWJsaWMgQ0ZQRl9Ta2lhRm9udERlc2NyaXB0b3IKK3sKK3B1YmxpYzoKKyAgICBDRlBGX1NraWFGaWxlRm9udCgpIDogbV9wRmlsZShOVUxMKSB7fQorICAgIHZpcnR1YWwgRlhfSU5UMzIJR2V0VHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gRlBGX1NLSUFGT05UVFlQRV9GaWxlOworICAgIH0KKyAgICBJRlhfRmlsZVJlYWQJCSptX3BGaWxlOworfTsKK2NsYXNzIENGUEZfU2tpYUJ1ZmZlckZvbnQgOiBwdWJsaWMgQ0ZQRl9Ta2lhRm9udERlc2NyaXB0b3IKK3sKK3B1YmxpYzoKKyAgICBDRlBGX1NraWFCdWZmZXJGb250KCkgOiBtX3BCdWZmZXIoTlVMTCksIG1fc3pCdWZmZXIoMCkge30KKyAgICB2aXJ0dWFsIEZYX0lOVDMyCUdldFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEZQRl9TS0lBRk9OVFRZUEVfQnVmZmVyOworICAgIH0KKyAgICBGWF9MUFZPSUQJCQltX3BCdWZmZXI7CisgICAgc2l6ZV90CQkJCW1fc3pCdWZmZXI7Cit9OworY2xhc3MgQ0ZQRl9Ta2lhRm9udE1nciA6IHB1YmxpYyBJRlBGX0ZvbnRNZ3IsIHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgQ0ZQRl9Ta2lhRm9udE1ncigpOworICAgIHZpcnR1YWwgfkNGUEZfU2tpYUZvbnRNZ3IoKTsKKyAgICBGWF9CT09MCQkJCQlJbml0RlRMaWJyYXJ5KCk7CisgICAgdmlydHVhbCB2b2lkCQkJTG9hZFN5c3RlbUZvbnRzKCk7CisgICAgdmlydHVhbCB2b2lkCQkJTG9hZFByaXZhdGVGb250KElGWF9GaWxlUmVhZCogcEZvbnRGaWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQJCQlMb2FkUHJpdmF0ZUZvbnQoRlhfQlNUUiBic0ZpbGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQJCQlMb2FkUHJpdmF0ZUZvbnQoRlhfTFBWT0lEIHBCdWZmZXIsIHNpemVfdCBzekJ1ZmZlcik7CisKKyAgICB2aXJ0dWFsIElGUEZfRm9udCoJCUNyZWF0ZUZvbnQoRlhfQlNUUiBic0ZhbWlseW5hbWUsIEZYX0JZVEUgdUNoYXJzZXQsIEZYX0RXT1JEIGR3U3R5bGUsIEZYX0RXT1JEIGR3TWF0Y2ggPSAwKTsKKyAgICBGWEZUX0ZhY2UJCQkJR2V0Rm9udEZhY2UoSUZYX0ZpbGVSZWFkICpwRmlsZVJlYWQsIEZYX0lOVDMyIGlGYWNlSW5kZXggPSAwKTsKKyAgICBGWEZUX0ZhY2UJCQkJR2V0Rm9udEZhY2UoRlhfQlNUUiBic0ZpbGUsIEZYX0lOVDMyIGlGYWNlSW5kZXggPSAwKTsKKyAgICBGWEZUX0ZhY2UJCQkJR2V0Rm9udEZhY2UoRlhfTFBDQllURSBwQnVmZmVyLCBzaXplX3Qgc3pCdWZmZXIsIEZYX0lOVDMyIGlGYWNlSW5kZXggPSAwKTsKK3Byb3RlY3RlZDoKKyAgICB2b2lkCQkJCVNjYW5QYXRoKEZYX0JTVFIgcGF0aCk7CisgICAgdm9pZAkJCQlTY2FuRmlsZShGWF9CU1RSIGZpbGUpOworICAgIHZvaWQJCQkJUmVwb3J0RmFjZShGWEZUX0ZhY2UgZmFjZSwgQ0ZQRl9Ta2lhRm9udERlc2NyaXB0b3IgKnBGb250RGVzYyk7CisgICAgdm9pZAkJCQlPdXRwdXRTeXN0ZW1Gb250cygpOworICAgIEZYX0JPT0wJCQkJbV9iTG9hZGVkOworICAgIENGWF9QdHJBcnJheQkJbV9Gb250RmFjZXM7CisgICAgRlhGVF9MaWJyYXJ5CQltX0ZUTGlicmFyeTsKKyAgICBDRlhfTWFwUHRyVG9QdHIJCW1fRmFtaWx5Rm9udHM7Cit9OworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYW5kcm9pZC9mcGZfc2tpYW1vZHVsZS5jcHAgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnBmX3NraWFtb2R1bGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZTY4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnBmX3NraWFtb2R1bGUuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICJmeF9mcGYuaCIKKyNpZiBfRlhfT1NfID09IF9GWF9BTkRST0lEXworI2luY2x1ZGUgImZwZl9za2lhbW9kdWxlLmgiCisjaW5jbHVkZSAiZnBmX3NraWFmb250bWdyLmgiCitzdGF0aWMgSUZQRl9EZXZpY2VNb2R1bGUgKmdzX3BQRk1vZHVsZSA9IE5VTEw7CitJRlBGX0RldmljZU1vZHVsZSogRlBGX0dldERldmljZU1vZHVsZSgpCit7CisgICAgaWYgKCFnc19wUEZNb2R1bGUpIHsKKyAgICAgICAgZ3NfcFBGTW9kdWxlID0gRlhfTkVXIENGUEZfU2tpYURldmljZU1vZHVsZTsKKyAgICB9CisgICAgcmV0dXJuIGdzX3BQRk1vZHVsZTsKK30KK0NGUEZfU2tpYURldmljZU1vZHVsZTo6fkNGUEZfU2tpYURldmljZU1vZHVsZSgpCit7CisgICAgaWYgKG1fcEZvbnRNZ3IpIHsKKyAgICAgICAgZGVsZXRlIG1fcEZvbnRNZ3I7CisgICAgfQorfQordm9pZCBDRlBGX1NraWFEZXZpY2VNb2R1bGU6OkRlc3Ryb3koKQoreworICAgIGlmIChnc19wUEZNb2R1bGUpIHsKKyAgICAgICAgZGVsZXRlIChDRlBGX1NraWFEZXZpY2VNb2R1bGUqKWdzX3BQRk1vZHVsZTsKKyAgICAgICAgZ3NfcFBGTW9kdWxlID0gTlVMTDsKKyAgICB9Cit9CitJRlBGX0ZvbnRNZ3IqIENGUEZfU2tpYURldmljZU1vZHVsZTo6R2V0Rm9udE1ncigpCit7CisgICAgaWYgKCFtX3BGb250TWdyKSB7CisgICAgICAgIG1fcEZvbnRNZ3IgPSBGWF9ORVcgQ0ZQRl9Ta2lhRm9udE1ncjsKKyAgICAgICAgaWYgKCFtX3BGb250TWdyKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1fcEZvbnRNZ3ItPkluaXRGVExpYnJhcnkoKSkgeworICAgICAgICAgICAgZGVsZXRlIG1fcEZvbnRNZ3I7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gKElGUEZfRm9udE1nciopbV9wRm9udE1ncjsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2ZwZl9za2lhbW9kdWxlLmggYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnBmX3NraWFtb2R1bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2E3OGJmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2ZwZl9za2lhbW9kdWxlLmgKQEAgLTAsMCArMSwyMiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlBGX01PRFVMRV9IXworI2RlZmluZSBfRlBGX01PRFVMRV9IXworI2lmIF9GWF9PU18gPT0gX0ZYX0FORFJPSURfCitjbGFzcyBDRlBGX1NraWFGb250TWdyOworY2xhc3MgQ0ZQRl9Ta2lhRGV2aWNlTW9kdWxlIDogcHVibGljIElGUEZfRGV2aWNlTW9kdWxlLCBwdWJsaWMgQ0ZYX09iamVjdAoreworcHVibGljOgorICAgIENGUEZfU2tpYURldmljZU1vZHVsZSgpIDogbV9wRm9udE1ncihOVUxMKSB7fQorICAgIHZpcnR1YWwgfkNGUEZfU2tpYURldmljZU1vZHVsZSgpOworICAgIHZpcnR1YWwgdm9pZAkJCQlEZXN0cm95KCk7CisgICAgdmlydHVhbCBJRlBGX0ZvbnRNZ3IqCQlHZXRGb250TWdyKCk7Citwcm90ZWN0ZWQ6CisgICAgQ0ZQRl9Ta2lhRm9udE1ncgkqbV9wRm9udE1ncjsKK307CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2Z4X2FuZHJvaWRfZm9udC5jcHAgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnhfYW5kcm9pZF9mb250LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjhhYWZjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2Z4X2FuZHJvaWRfZm9udC5jcHAKQEAgLTAsMCArMSw4NyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgImZ4X2ZwZi5oIgorI2lmIF9GWF9PU18gPT0gX0ZYX0FORFJPSURfCitDRlhfQW5kcm9pZEZvbnRJbmZvOjpDRlhfQW5kcm9pZEZvbnRJbmZvKCkKKyAgICA6IG1fcEZvbnRNZ3IoTlVMTCkKK3sKK30KK0ZYX0JPT0wgQ0ZYX0FuZHJvaWRGb250SW5mbzo6SW5pdChJRlBGX0ZvbnRNZ3IgKnBGb250TWdyKQoreworICAgIGlmICghcEZvbnRNZ3IpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBwRm9udE1nci0+TG9hZFN5c3RlbUZvbnRzKCk7CisgICAgbV9wRm9udE1nciA9IHBGb250TWdyOworICAgIHJldHVybiBUUlVFOworfQorRlhfQk9PTCBDRlhfQW5kcm9pZEZvbnRJbmZvOjpFbnVtRm9udExpc3QoQ0ZYX0ZvbnRNYXBwZXIqIHBNYXBwZXIpCit7CisgICAgcmV0dXJuIEZBTFNFOworfQordm9pZCogQ0ZYX0FuZHJvaWRGb250SW5mbzo6TWFwRm9udChpbnQgd2VpZ2h0LCBGWF9CT09MIGJJdGFsaWMsIGludCBjaGFyc2V0LCBpbnQgcGl0Y2hfZmFtaWx5LCBGWF9MUENTVFIgZmFjZSwgRlhfQk9PTCYgYkV4YWN0KQoreworICAgIGlmICghbV9wRm9udE1ncikgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgRlhfRFdPUkQgZHdTdHlsZSA9IDA7CisgICAgaWYgKHdlaWdodCA+PSA3MDApIHsKKyAgICAgICAgZHdTdHlsZSB8PSBGWEZPTlRfQk9MRDsKKyAgICB9CisgICAgaWYgKGJJdGFsaWMpIHsKKyAgICAgICAgZHdTdHlsZSB8PSBGWEZPTlRfSVRBTElDOworICAgIH0KKyAgICBpZiAocGl0Y2hfZmFtaWx5ICYgRlhGT05UX0ZGX0ZJWEVEUElUQ0gpIHsKKyAgICAgICAgZHdTdHlsZSB8PSBGWEZPTlRfRklYRURfUElUQ0g7CisgICAgfQorICAgIGlmIChwaXRjaF9mYW1pbHkgJiBGWEZPTlRfRkZfU0NSSVBUKSB7CisgICAgICAgIGR3U3R5bGUgfD0gRlhGT05UX1NDUklQVDsKKyAgICB9CisgICAgaWYgKHBpdGNoX2ZhbWlseSAmIEZYRk9OVF9GRl9ST01BTikgeworICAgICAgICBkd1N0eWxlIHw9IEZYRk9OVF9TRVJJRjsKKyAgICB9CisgICAgcmV0dXJuIG1fcEZvbnRNZ3ItPkNyZWF0ZUZvbnQoZmFjZSwgY2hhcnNldCwgZHdTdHlsZSwgRlBGX01BVENIRk9OVF9SRVBMQUNFQU5TSSk7Cit9Cit2b2lkKiBDRlhfQW5kcm9pZEZvbnRJbmZvOjpHZXRGb250KEZYX0xQQ1NUUiBmYWNlKQoreworICAgIHJldHVybiBOVUxMOworfQorRlhfRFdPUkQgQ0ZYX0FuZHJvaWRGb250SW5mbzo6R2V0Rm9udERhdGEodm9pZCogaEZvbnQsIEZYX0RXT1JEIHRhYmxlLCBGWF9MUEJZVEUgYnVmZmVyLCBGWF9EV09SRCBzaXplKQoreworICAgIGlmICghaEZvbnQpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAoKElGUEZfRm9udCopaEZvbnQpLT5HZXRGb250RGF0YSh0YWJsZSwgYnVmZmVyLCBzaXplKTsKK30KK0ZYX0JPT0wgQ0ZYX0FuZHJvaWRGb250SW5mbzo6R2V0RmFjZU5hbWUodm9pZCogaEZvbnQsIENGWF9CeXRlU3RyaW5nJiBuYW1lKQoreworICAgIGlmICghaEZvbnQpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBuYW1lID0gKChJRlBGX0ZvbnQqKWhGb250KS0+R2V0RmFtaWx5TmFtZSgpOworICAgIHJldHVybiBUUlVFOworfQorRlhfQk9PTCBDRlhfQW5kcm9pZEZvbnRJbmZvOjpHZXRGb250Q2hhcnNldCh2b2lkKiBoRm9udCwgaW50JiBjaGFyc2V0KQoreworICAgIGlmICghaEZvbnQpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBjaGFyc2V0ID0gKChJRlBGX0ZvbnQqKWhGb250KS0+R2V0Q2hhcnNldCgpOworICAgIHJldHVybiBGQUxTRTsKK30KK3ZvaWQgQ0ZYX0FuZHJvaWRGb250SW5mbzo6RGVsZXRlRm9udCh2b2lkKiBoRm9udCkKK3sKKyAgICBpZiAoIWhGb250KSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKChJRlBGX0ZvbnQqKWhGb250KS0+UmVsZWFzZSgpOworfQordm9pZCogQ0ZYX0FuZHJvaWRGb250SW5mbzo6UmV0YWluRm9udCh2b2lkKiBoRm9udCkKK3sKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2Z4X2FuZHJvaWRfZm9udC5oIGIvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2Z4X2FuZHJvaWRfZm9udC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YmZkZjkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnhfYW5kcm9pZF9mb250LmgKQEAgLTAsMCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhfQU5EUk9JRF9GT05UX0hfCisjZGVmaW5lIF9GWF9BTkRST0lEX0ZPTlRfSF8KKyNpZiBfRlhfT1NfID09IF9GWF9BTkRST0lEXworY2xhc3MgSUZQRl9Gb250TWdyOworY2xhc3MgQ0ZYX0FuZHJvaWRGb250SW5mbyA6IHB1YmxpYyBJRlhfU3lzdGVtRm9udEluZm8KK3sKK3B1YmxpYzoKKyAgICBDRlhfQW5kcm9pZEZvbnRJbmZvKCk7CisgICAgdmlydHVhbCB2b2lkCQlSZWxlYXNlKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0KKworICAgIHZpcnR1YWwJRlhfQk9PTAkJRW51bUZvbnRMaXN0KENGWF9Gb250TWFwcGVyKiBwTWFwcGVyKTsKKworICAgIHZpcnR1YWwgdm9pZCoJCU1hcEZvbnQoaW50IHdlaWdodCwgRlhfQk9PTCBiSXRhbGljLCBpbnQgY2hhcnNldCwgaW50IHBpdGNoX2ZhbWlseSwgRlhfTFBDU1RSIGZhY2UsIEZYX0JPT0wmIGJFeGFjdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQqCQlHZXRGb250KEZYX0xQQ1NUUiBmYWNlKTsKKyAgICB2aXJ0dWFsIEZYX0RXT1JECUdldEZvbnREYXRhKHZvaWQqIGhGb250LCBGWF9EV09SRCB0YWJsZSwgRlhfTFBCWVRFIGJ1ZmZlciwgRlhfRFdPUkQgc2l6ZSk7CisgICAgdmlydHVhbCBGWF9CT09MCQlHZXRGYWNlTmFtZSh2b2lkKiBoRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpOworICAgIHZpcnR1YWwgRlhfQk9PTAkJR2V0Rm9udENoYXJzZXQodm9pZCogaEZvbnQsIGludCYgY2hhcnNldCk7CisKKyAgICB2aXJ0dWFsIHZvaWQJCURlbGV0ZUZvbnQodm9pZCogaEZvbnQpOworICAgIHZpcnR1YWwgdm9pZCogICAgICAgUmV0YWluRm9udCh2b2lkKiBoRm9udCk7CisgICAgRlhfQk9PTAkJCQlJbml0KElGUEZfRm9udE1nciAqcEZvbnRNZ3IpOworcHJvdGVjdGVkOgorICAgIElGUEZfRm9udE1ncgkJKm1fcEZvbnRNZ3I7Cit9OworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYW5kcm9pZC9meF9hbmRyb2lkX2ltcC5jcHAgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnhfYW5kcm9pZF9pbXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODg3N2UKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnhfYW5kcm9pZF9pbXAuY3BwCkBAIC0wLDAgKzEsMzIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICJmeF9mcGYuaCIKKyNpZiBfRlhfT1NfID09IF9GWF9BTkRST0lEXwordm9pZCBDRlhfR0VNb2R1bGU6OkluaXRQbGF0Zm9ybSgpCit7CisgICAgSUZQRl9EZXZpY2VNb2R1bGUgKnBEZXZpY2VNb2R1bGUgPSBGUEZfR2V0RGV2aWNlTW9kdWxlKCk7CisgICAgaWYgKCFwRGV2aWNlTW9kdWxlKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgSUZQRl9Gb250TWdyICpwRm9udE1nciA9IHBEZXZpY2VNb2R1bGUtPkdldEZvbnRNZ3IoKTsKKyAgICBpZiAocEZvbnRNZ3IpIHsKKyAgICAgICAgQ0ZYX0FuZHJvaWRGb250SW5mbyAqcEZvbnRJbmZvID0gRlhfTkVXIENGWF9BbmRyb2lkRm9udEluZm87CisgICAgICAgIGlmICghcEZvbnRJbmZvKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcEZvbnRJbmZvLT5Jbml0KHBGb250TWdyKTsKKyAgICAgICAgbV9wRm9udE1nci0+U2V0U3lzdGVtRm9udEluZm8ocEZvbnRJbmZvKTsKKyAgICB9CisgICAgbV9wUGxhdGZvcm1EYXRhID0gcERldmljZU1vZHVsZTsKK30KK3ZvaWQgQ0ZYX0dFTW9kdWxlOjpEZXN0cm95UGxhdGZvcm0oKQoreworICAgIGlmIChtX3BQbGF0Zm9ybURhdGEpIHsKKyAgICAgICAgKChJRlBGX0RldmljZU1vZHVsZSopbV9wUGxhdGZvcm1EYXRhKS0+RGVzdHJveSgpOworICAgIH0KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2Z4X2ZwZi5oIGIvY29yZS9zcmMvZnhnZS9hbmRyb2lkL2Z4X2ZwZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMDhmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FuZHJvaWQvZnhfZnBmLmgKQEAgLTAsMCArMSwxNCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhfRlBGX0hfCisjZGVmaW5lIF9GWF9GUEZfSF8KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2V4dC5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9mcmVldHlwZS5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9mcGYuaCIKKyNpbmNsdWRlICJmeF9hbmRyb2lkX2ZvbnQuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hcHBsZS9hcHBsZV9pbnQuaCBiL2NvcmUvc3JjL2Z4Z2UvYXBwbGUvYXBwbGVfaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM0MmYxYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYXBwbGUvYXBwbGVfaW50LmgKQEAgLTAsMCArMSwyNDYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpZm5kZWYgX0FQUExFX0lOVF9IXw0KKyNkZWZpbmUgX0FQUExFX0lOVF9IXw0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisjaWYgX0ZYX09TXyA9PSBfRlhfTUFDT1NYXw0KKyNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+DQorI2VuZGlmDQordHlwZWRlZiBlbnVtIGVGWElPU0ZPTlRDSEFSU0VUIHsNCisgICAgZUZYRm9udENoYXJzZXRERUZBVUxUICAgICAgID0gICAwLA0KKyAgICBlRlhGb250Q2hhcnNldEFOU0kgICAgICAgICAgPSAgIDEsDQorICAgIGVGWEZvbnRDaGFyc2V0U1lNQk9MICAgICAgICA9ICAgMSA8PCAxLA0KKyAgICBlRlhGb250Q2hhcnNldFNISUZUSklTICAgICAgPSAgIDEgPDwgMiwNCisgICAgZUZYRm9udENoYXJzZXRIQU5HRVVMICAgICAgID0gICAxIDw8IDMsDQorICAgIGVGWEZvbnRDaGFyc2V0R0IyMzEyICAgICAgICA9ICAgMSA8PCA0LA0KKyAgICBlRlhGb250Q2hhcnNldENISU5FU0VCSUc1ICAgPSAgIDEgPDwgNSwNCisgICAgZUZYRm9udENoYXJzZXRUSEFJICAgICAgICAgID0gICAxIDw8IDYsDQorICAgIGVGWEZvbnRDaGFyc2V0RUFTVEVVUk9QRSAgICA9ICAgMSA8PCA3LA0KKyAgICBlRlhGb250Q2hhcnNldFJVU1NJQU4gICAgICAgPSAgIDEgPDwgOCwNCisgICAgZUZYRm9udENoYXJzZXRHUkVFSyAgICAgICAgID0gICAxIDw8IDksDQorICAgIGVGWEZvbnRDaGFyc2V0VFVSS0lTSCAgICAgICA9ICAgMSA8PCAxMCwNCisgICAgZUZYRm9udENoYXJzZXRIRUJSRVcgICAgICAgID0gICAxIDw8IDExLA0KKyAgICBlRlhGb250Q2hhcnNldEFSQUJJQyAgICAgICAgPSAgIDEgPDwgMTIsDQorICAgIGVGWEZvbnRDaGFyc2V0QkFMVElDICAgICAgICA9ICAgMSA8PCAxMywNCit9IEZYX0lPU0NIQVJTRVQ7DQorRlhfSU9TQ0hBUlNFVCBGWF9HZXRpT1NDaGFyc2V0KGludCBjaGFyc2V0KTsNCit0eXBlZGVmIGVudW0gZUZYSU9TRk9OVEZMQUcgew0KKyAgICBlRlhGb250RmxhZ0JvbGQgICAgICAgICA9ICAxLA0KKyAgICBlRlhGb250RmxhZ0l0YWxpYyAgICAgICA9ICAxIDw8IDEsDQorICAgIGVGWEZvbnRGbGFnRml4ZWRQaXRjaCAgID0gIDEgPDwgMiwNCisgICAgZUZYRm9udEZsYWdTZXJpZiAgICAgICAgPSAgMSA8PCAzLA0KKyAgICBlRlhGb250RmxhZ1NjcmlwdCAgICAgICA9ICAxIDw8IDQsDQorfSBGWF9JT1NGT05URkxBRzsNCit0eXBlZGVmIHN0cnVjdCBfSU9TX0ZPTlREQVRBIHsNCisgICAgRlhfRFdPUkQgICAgICAgIG5IYXNoQ29kZTsNCisgICAgY29uc3QgY2hhciogICAgICAgcHNOYW1lOw0KKyAgICBGWF9EV09SRCAgICAgICAgY2hhcnNldHM7DQorICAgIEZYX0RXT1JEICAgICAgICBzdHlsZXM7DQorfSBJT1NfRk9OVERBVEE7DQorY2xhc3MgQ1F1YXJ0ejJEDQorew0KK3B1YmxpYzoNCisgICAgdm9pZCoJY3JlYXRlR3JhcGhpY3MoQ0ZYX0RJQml0bWFwKiBiaXRtYXApOw0KKyAgICB2b2lkCWRlc3Ryb3lHcmFwaGljcyh2b2lkKiBncmFwaGljcyk7DQorDQorICAgIHZvaWQqCUNyZWF0ZUZvbnQoRlhfTFBDQllURSBwRm9udERhdGEsIEZYX0RXT1JEIGR3Rm9udFNpemUpOw0KKyAgICB2b2lkCURlc3Ryb3lGb250KHZvaWQqIHBGb250KTsNCisgICAgdm9pZAlzZXRHcmFwaGljc1RleHRNYXRyaXgodm9pZCogZ3JhcGhpY3MsIENGWF9BZmZpbmVNYXRyaXgqIG1hdHJpeCk7DQorICAgIEZYX0JPT0wJZHJhd0dyYXBoaWNzU3RyaW5nKHZvaWQqICAgICAgICAgICAgICAgIGdyYXBoaWNzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICAgICBmb250LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCAgICAgICAgICAgICBmb250U2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfV09SRCogICAgICAgICAgICAgZ2x5cGhJbmRpY2VzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR1BvaW50KiAgICAgICAgICBnbHlwaFBvc2l0aW9ucywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfSU5UMzIgICAgICAgICAgICAgY2hhcnMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0FSR0IgICAgICAgICAgICAgIGFyZ2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXgqICAgIG1hdHJpeCA9IE5VTEwpOw0KKyAgICB2b2lkIHNhdmVHcmFwaGljc1N0YXRlKHZvaWQqIGdyYXBoaWNzKTsNCisgICAgdm9pZCByZXN0b3JlR3JhcGhpY3NTdGF0ZSh2b2lkKiBncmFwaGljcyk7DQorfTsNCitjbGFzcyBDQXBwbGVQbGF0Zm9ybSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ0FwcGxlUGxhdGZvcm0oKQ0KKyAgICB7DQorICAgICAgICBtX3BGb250TWFwcGVyID0gTlVMTDsNCisgICAgfQ0KKyAgICB+Q0FwcGxlUGxhdGZvcm0oKQ0KKyAgICB7DQorICAgICAgICBpZiAobV9wRm9udE1hcHBlcikgew0KKyAgICAgICAgICAgIGRlbGV0ZSBtX3BGb250TWFwcGVyOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENRdWFydHoyRAlfcXVhcnR6MmQ7DQorICAgIElGWF9Gb250TWFwcGVyKiBtX3BGb250TWFwcGVyOw0KK307DQorY2xhc3MgQ0ZYX1F1YXJ0ekRldmljZURyaXZlciA6IHB1YmxpYyBJRlhfUmVuZGVyRGV2aWNlRHJpdmVyDQorew0KK3B1YmxpYzoNCisgICAgQ0ZYX1F1YXJ0ekRldmljZURyaXZlcihDR0NvbnRleHRSZWYgY29udGV4dCwgRlhfSU5UMzIgZGV2aWNlQ2xhc3MpOw0KKyAgICB2aXJ0dWFsIH5DRlhfUXVhcnR6RGV2aWNlRHJpdmVyKCk7DQorDQorICAgIHZpcnR1YWwgaW50CQlHZXREZXZpY2VDYXBzKGludCBjYXBzX2lkKTsNCisgICAgdmlydHVhbCBDRlhfTWF0cml4CUdldENUTSgpIGNvbnN0Ow0KKyAgICB2aXJ0dWFsIENGWF9ESUJpdG1hcCogICBHZXRCYWNrRHJvcCgpDQorICAgIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHZpcnR1YWwgdm9pZCoJR2V0UGxhdGZvcm1TdXJmYWNlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9CT09MIElzUFNQcmludERyaXZlcigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJU3RhcnRSZW5kZXJpbmcoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIHZvaWQJRW5kUmVuZGVyaW5nKCkge30NCisgICAgdmlydHVhbCB2b2lkCVNhdmVTdGF0ZSgpOw0KKyAgICB2aXJ0dWFsIHZvaWQJUmVzdG9yZVN0YXRlKEZYX0JPT0wgYktlZXBTYXZlZCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlTZXRDbGlwX1BhdGhGaWxsKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbGxfbW9kZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlTZXRDbGlwX1BhdGhTdHJva2UoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgdmlydHVhbCBGWF9CT09MCURyYXdQYXRoKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZmlsbF9jb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIHN0cm9rZV9jb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZyA9IDAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlTZXRQaXhlbChpbnQgeCwgaW50IHksIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTCBGaWxsUmVjdChjb25zdCBGWF9SRUNUKiBwUmVjdCwgRlhfRFdPUkQgZmlsbF9jb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwsIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMKTsNCisgICAgdmlydHVhbCBGWF9CT09MCURyYXdDb3NtZXRpY0xpbmUoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLCBGWF9GTE9BVCB4MiwgRlhfRkxPQVQgeTIsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZyA9IDAsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMLCBpbnQgYmxlbmRfdHlwZSA9IEZYRElCX0JMRU5EX05PUk1BTCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTCBHZXRDbGlwQm94KEZYX1JFQ1QqIHBSZWN0KTsNCisgICAgdmlydHVhbCBGWF9CT09MCUdldERJQml0cyhDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBsZWZ0LCBpbnQgdG9wLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwgRlhfQk9PTCBiREVkZ2UgPSBGQUxTRSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlTZXRESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgRlhfRFdPUkQgY29sb3IsIGNvbnN0IEZYX1JFQ1QqIHBTcmNSZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwgaW50IGJsZW5kX3R5cGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlTdHJldGNoRElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIEZYX0RXT1JEIGNvbG9yLCBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsIGNvbnN0IEZYX1JFQ1QqIHBDbGlwUmVjdCwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwsIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMKTsNCisgICAgdmlydHVhbCBGWF9CT09MCVN0YXJ0RElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIGludCBiaXRtYXBfYWxwaGEsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgZmxhZ3MsIEZYX0xQVk9JRCYgaGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9CT09MCUNvbnRpbnVlRElCaXRzKEZYX0xQVk9JRCBoYW5kbGUsIElGWF9QYXVzZSogcFBhdXNlKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgdmlydHVhbCB2b2lkCUNhbmNlbERJQml0cyhGWF9MUFZPSUQgaGFuZGxlKSB7fQ0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgRHJhd0RldmljZVRleHQoaW50IG5DaGFycywgY29uc3QgRlhURVhUX0NIQVJQT1MqIHBDaGFyUG9zLCBDRlhfRm9udCogcEZvbnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfRm9udENhY2hlKiBwQ2FjaGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLCBGWF9GTE9BVCBmb250X3NpemUsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcgPSAwLCB2b2lkKiBwSWNjVHJhbnNmb3JtID0gTlVMTCk7DQorICAgIHZpcnR1YWwgdm9pZCAgICBDbGVhckRyaXZlcigpOw0KK3Byb3RlY3RlZDoNCisgICAgdm9pZCBzZXRTdHJva2VJbmZvKGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSAqIGdyYXBoU3RhdGUsIEZYX0FSR0IgYXJnYiwgRlhfRkxPQVQgbGluZVdpZHRoKTsNCisgICAgdm9pZCBzZXRGaWxsSW5mbyhGWF9BUkdCIGFyZ2IpOw0KKyAgICB2b2lkIHNldFBhdGhUb0NvbnRleHQoY29uc3QgQ0ZYX1BhdGhEYXRhICogcGF0aERhdGEpOw0KKyAgICBGWF9GTE9BVCBnZXRMaW5lV2lkdGgoY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhICogZ3JhcGhTdGF0ZSwgQ0dBZmZpbmVUcmFuc2Zvcm0gY3RtKTsNCisgICAgRlhfQk9PTCBDR19EcmF3R2x5cFJ1bihpbnQgICAgICAgICAgICAgICAgICAgICAgICBuQ2hhcnMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlhURVhUX0NIQVJQT1MqICAgICAgcENoYXJQb3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0ZvbnQqICAgICAgICAgICAgICAgICAgcEZvbnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0ZvbnRDYWNoZSogICAgICAgICAgICAgcENhY2hlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqICAgIHBHbHlwaE1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiAgICBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCAgICAgICAgICAgICAgICAgICBmb250X3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgICAgICAgICAgICAgICAgICAgYXJnYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV9mbGFnLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICB2b2lkICAgIENHX1NldEltYWdlVHJhbnNmb3JtKGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgQ0dSZWN0KiByZWN0ID0gTlVMTCk7DQorcHJvdGVjdGVkOg0KKyAgICBDR0NvbnRleHRSZWYJX2NvbnRleHQ7DQorICAgIENHQWZmaW5lVHJhbnNmb3JtIF9mb3hpdERldmljZTJVc2VyOw0KKyAgICBDR0FmZmluZVRyYW5zZm9ybSBfdXNlcjJGb3hpdERldmljZTsNCisgICAgRlhfSU5UMzIgICAgICAgIG1fc2F2ZUNvdW50Ow0KKw0KKyAgICBGWF9JTlQzMgkJX3dpZHRoOw0KKyAgICBGWF9JTlQzMgkJX2hlaWdodDsNCisgICAgRlhfSU5UMzIJCV9iaXRzUGVyUGl4ZWw7DQorICAgIEZYX0lOVDMyCQlfZGV2aWNlQ2xhc3M7DQorICAgIEZYX0lOVDMyCQlfcmVuZGVyQ2FwczsNCisgICAgRlhfSU5UMzIJX2hvcnpTaXplOw0KKyAgICBGWF9JTlQzMglfdmVydFNpemU7DQorfTsNCitjbGFzcyBDRlhfRm9udFByb3ZpZGVyIDogcHVibGljIElGWF9GaWxlUmVhZA0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgdm9pZAkJCVJlbGVhc2UoKQ0KKyAgICB7DQorICAgICAgICBkZWxldGUgdGhpczsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0ZJTEVTSVpFCQlHZXRTaXplKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChGWF9GSUxFU0laRSlfdG90YWxTaXplOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCVJlYWRCbG9jayh2b2lkKiBidWZmZXIsIEZYX0ZJTEVTSVpFIG9mZnNldCwgc2l6ZV90IHNpemUpOw0KKw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlJc0VPRigpDQorICAgIHsNCisgICAgICAgIHJldHVybiBfb2ZmU2V0ID09IF90b3RhbFNpemU7DQorICAgIH0NCisgICAgdmlydHVhbCBGWF9GSUxFU0laRQkJR2V0UG9zaXRpb24oKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKEZYX0ZJTEVTSVpFKV9vZmZTZXQ7DQorICAgIH0NCisgICAgdmlydHVhbCBzaXplX3QJCQlSZWFkQmxvY2sodm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSk7DQorcHVibGljOg0KKyAgICBDRlhfRm9udFByb3ZpZGVyKENHRm9udFJlZiBjZ0ZvbnQpOw0KKyAgICB+Q0ZYX0ZvbnRQcm92aWRlcigpOw0KKyAgICB2b2lkICAgICAgICAgICAgSW5pdFRhYmxlT2Zmc2V0KCk7DQorICAgIHVuc2lnbmVkIGxvbmcgICBSZWFkKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIHVuc2lnbmVkIGxvbmcgY291bnQpOw0KK3Byb3RlY3RlZDoNCisgICAgdWludDMyX3QgQ2FsY1RhYmxlQ2hlY2tTdW0oY29uc3QgdWludDMyX3QgKnRhYmxlLCB1aW50MzJfdCBudW1iZXJPZkJ5dGVzSW5UYWJsZSk7DQorICAgIHVpbnQzMl90IENhbGNUYWJsZURhdGFSZWZDaGVja1N1bShDRkRhdGFSZWYgZGF0YVJlZik7DQorcHJpdmF0ZToNCisgICAgQ0dGb250UmVmICAgbV9jZ0ZvbnQ7DQorICAgIFVJbnQzMiAgICAgIG1faVRhYmxlU2l6ZTsNCisgICAgc2l6ZV90ICAgICAgX29mZlNldDsNCisgICAgdHlwZWRlZiBzdHJ1Y3QgRm9udEhlYWRlciB7DQorICAgICAgICBpbnQzMl90IGZWZXJzaW9uOw0KKyAgICAgICAgdWludDE2X3QgZk51bVRhYmxlczsNCisgICAgICAgIHVpbnQxNl90IGZTZWFyY2hSYW5nZTsNCisgICAgICAgIHVpbnQxNl90IGZFbnRyeVNlbGVjdG9yOw0KKyAgICAgICAgdWludDE2X3QgZlJhbmdlU2hpZnQ7DQorICAgIH0gRm9udEhlYWRlcjsNCisgICAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVFbnRyeSB7DQorICAgICAgICB1aW50MzJfdCBmVGFnOw0KKyAgICAgICAgdWludDMyX3QgZkNoZWNrU3VtOw0KKyAgICAgICAgdWludDMyX3QgZk9mZnNldDsNCisgICAgICAgIHVpbnQzMl90IGZMZW5ndGg7DQorICAgIH0gVGFibGVFbnRyeTsNCisgICAgRm9udEhlYWRlciBfZm9udEhlYWRlcjsNCisgICAgdW5zaWduZWQgY2hhciAqIF90YWJsZUVudHJpZXM7DQorICAgIHNpemVfdCAqIF90YWJsZU9mZnNldHM7DQorICAgIGludCBfdGFibGVDb3VudDsNCisgICAgaW50IF90b3RhbFNpemU7DQorfTsNCitGWF9VSU5UMzIgRlhfR2V0SGFzaENvZGUoIEZYX0xQQ1NUUiBwU3RyKTsNCitGWF9EV09SRCAgRlhfSU9TR2V0TWF0Y2hGYW1pbHlOYW1lSGFzaGNvZGUoRlhfTFBDU1RSIHBGb250TmFtZSk7DQorRlhfVUlOVDMyIEZYX0lPU0dldEZhbWlseU5hbWVzQ291bnQoKTsNCitGWF9MUENTVFIgRlhfSU9TR2V0RmFtaWx5TmFtZSggRlhfVUlOVDMyIHVJbmRleCk7DQorI2VuZGlmDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hcHBsZS9meF9hcHBsZV9wbGF0Zm9ybS5jcHAgYi9jb3JlL3NyYy9meGdlL2FwcGxlL2Z4X2FwcGxlX3BsYXRmb3JtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjlkMTc4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9hcHBsZS9meF9hcHBsZV9wbGF0Zm9ybS5jcHAKQEAgLTAsMCArMSwxNzMgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2V4dC5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorI2luY2x1ZGUgImFwcGxlX2ludC5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2VfYXBwbGUuaCINCisjaW5jbHVkZSAiLi4vYWdnL2luY2x1ZGUvZnhmeF9hZ2dfY2xpcF9saWFuZ19iYXJza3kuaCINCisjaW5jbHVkZSAiLi4vZ2UvdGV4dF9pbnQuaCINCisjaW5jbHVkZSAiLi4vZGliL2RpYl9pbnQuaCINCisjaW5jbHVkZSAiLi4vYWdnL2luY2x1ZGUvZnhfYWdnX2RyaXZlci5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZnJlZXR5cGUuaCINCisjaWYgKF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXyAmJiAoIWRlZmluZWQoX0ZQREZBUElfTUlOSV8pKSkNCit2b2lkIENGWF9BZ2dEZXZpY2VEcml2ZXI6OkluaXRQbGF0Zm9ybSgpDQorew0KKyAgICBDUXVhcnR6MkQgJiBxdWFydHoyZCA9ICgoQ0FwcGxlUGxhdGZvcm0gKikgQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5fcXVhcnR6MmQ7DQorICAgIG1fcFBsYXRmb3JtR3JhcGhpY3MgPSBxdWFydHoyZC5jcmVhdGVHcmFwaGljcyhtX3BCaXRtYXApOw0KK30NCit2b2lkIENGWF9BZ2dEZXZpY2VEcml2ZXI6OkRlc3Ryb3lQbGF0Zm9ybSgpDQorew0KKyAgICBDUXVhcnR6MkQgJiBxdWFydHoyZCA9ICgoQ0FwcGxlUGxhdGZvcm0gKikgQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5fcXVhcnR6MmQ7DQorICAgIGlmIChtX3BQbGF0Zm9ybUdyYXBoaWNzKSB7DQorICAgICAgICBxdWFydHoyZC5kZXN0cm95R3JhcGhpY3MobV9wUGxhdGZvcm1HcmFwaGljcyk7DQorICAgICAgICBtX3BQbGF0Zm9ybUdyYXBoaWNzID0gTlVMTDsNCisgICAgfQ0KK30NCit2b2lkIENGWF9GYWNlQ2FjaGU6OkluaXRQbGF0Zm9ybSgpIHt9DQordm9pZCBDRlhfRmFjZUNhY2hlOjpEZXN0cm95UGxhdGZvcm0oKSB7fQ0KK0NGWF9HbHlwaEJpdG1hcCogQ0ZYX0ZhY2VDYWNoZTo6UmVuZGVyR2x5cGhfTmF0aXZldGV4dChDRlhfRm9udCAqCQkJCXBGb250LA0KKyAgICAgICAgRlhfRFdPUkQJCQkJCWdseXBoX2luZGV4LA0KKyAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCAqCXBNYXRyaXgsDQorICAgICAgICBpbnQJCQkJCQlkZXN0X3dpZHRoLA0KKyAgICAgICAgaW50CQkJCQkJYW50aV9hbGlhcykNCit7DQorICAgIHJldHVybiBOVUxMOw0KK30NCitzdGF0aWMgRlhfQk9PTCBfQ0dEcmF3R2x5cGhSdW4oQ0dDb250ZXh0UmVmICAgICAgICAgICAgICAgcENvbnRleHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgIG5DaGFycywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlhURVhUX0NIQVJQT1MqICAgICAgcENoYXJQb3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9Gb250KiAgICAgICAgICAgICAgICAgIHBGb250LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfRm9udENhY2hlKiAgICAgICAgICAgICBwQ2FjaGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqICAgIHBPYmplY3QyRGV2aWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCAgICAgICAgICAgICAgICAgICBmb250X3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEICAgICAgICAgICAgICAgICAgIGFyZ2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX2ZsYWcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBpZiAobkNoYXJzID09IDApIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIENGWF9BZmZpbmVNYXRyaXggbmV3X21hdHJpeDsNCisgICAgRlhfQk9PTCBiTmVnU2l6ZSA9IGZvbnRfc2l6ZSA8IDA7DQorICAgIGlmIChiTmVnU2l6ZSkgew0KKyAgICAgICAgZm9udF9zaXplID0gLWZvbnRfc2l6ZTsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBvcmlfeCA9IHBDaGFyUG9zWzBdLm1fT3JpZ2luWCwgb3JpX3kgPSBwQ2hhclBvc1swXS5tX09yaWdpblk7DQorICAgIG5ld19tYXRyaXguVHJhbnNmb3JtKG9yaV94LCBvcmlfeSk7DQorICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgbmV3X21hdHJpeC5Db25jYXQoKnBPYmplY3QyRGV2aWNlKTsNCisgICAgfQ0KKyAgICBDUXVhcnR6MkQmIHF1YXJ0ejJkID0gKChDQXBwbGVQbGF0Zm9ybSAqKSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKSktPl9xdWFydHoyZDsNCisgICAgaWYgKCFwRm9udC0+bV9wUGxhdGZvcm1Gb250KSB7DQorICAgICAgICBpZiAocEZvbnQtPkdldFBzTmFtZSgpID09IENGWF9XaWRlU3RyaW5nOjpGcm9tTG9jYWwoIkRGSGVpU3RkLVc1IikpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBwRm9udC0+bV9wUGxhdGZvcm1Gb250ID0gcXVhcnR6MmQuQ3JlYXRlRm9udChwRm9udC0+bV9wRm9udERhdGEsIHBGb250LT5tX2R3U2l6ZSk7DQorICAgICAgICBpZiAoTlVMTCA9PSBwRm9udC0+bV9wUGxhdGZvcm1Gb250KSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENGWF9GaXhlZEJ1Zkdyb3c8RlhfV09SRCwgMzI+IGdseXBoX2luZGljZXMobkNoYXJzKTsNCisgICAgQ0ZYX0ZpeGVkQnVmR3JvdzxDR1BvaW50LCAzMj4gZ2x5cGhfcG9zaXRpb25zKG5DaGFycyk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkNoYXJzOyBpKysgKSB7DQorICAgICAgICBnbHlwaF9pbmRpY2VzW2ldID0gcENoYXJQb3NbaV0ubV9FeHRHSUQ7DQorICAgICAgICBpZiAoYk5lZ1NpemUpIHsNCisgICAgICAgICAgICBnbHlwaF9wb3NpdGlvbnNbaV0ueCA9IC1wQ2hhclBvc1tpXS5tX09yaWdpblg7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGdseXBoX3Bvc2l0aW9uc1tpXS54ID0gcENoYXJQb3NbaV0ubV9PcmlnaW5YOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZ2x5cGhfcG9zaXRpb25zW2ldLnkgPSBwQ2hhclBvc1tpXS5tX09yaWdpblk7DQorICAgIH0NCisgICAgaWYgKGJOZWdTaXplKSB7DQorICAgICAgICBuZXdfbWF0cml4LmEgPSAtbmV3X21hdHJpeC5hOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbmV3X21hdHJpeC5iID0gLW5ld19tYXRyaXguYjsNCisgICAgICAgIG5ld19tYXRyaXguZCA9IC1uZXdfbWF0cml4LmQ7DQorICAgIH0NCisgICAgcXVhcnR6MmQuc2V0R3JhcGhpY3NUZXh0TWF0cml4KHBDb250ZXh0LCAmbmV3X21hdHJpeCk7DQorICAgIHJldHVybiBxdWFydHoyZC5kcmF3R3JhcGhpY3NTdHJpbmcocENvbnRleHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEZvbnQtPm1fcFBsYXRmb3JtRm9udCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250X3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kaWNlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9wb3NpdGlvbnMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkNoYXJzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQorfQ0KK3N0YXRpYyB2b2lkIF9Eb05vdGhpbmcodm9pZCAqaW5mbywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpIHt9DQorRlhfQk9PTCBDRlhfQWdnRGV2aWNlRHJpdmVyOjpEcmF3RGV2aWNlVGV4dChpbnQJCQkJCQkgbkNoYXJzLA0KKyAgICAgICAgY29uc3QgRlhURVhUX0NIQVJQT1MgKgkgcENoYXJQb3MsDQorICAgICAgICBDRlhfRm9udCAqCQkJCSBwRm9udCwNCisgICAgICAgIENGWF9Gb250Q2FjaGUgKgkJCSBwQ2FjaGUsDQorICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4ICogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICBGWF9GTE9BVAkJCQkgZm9udF9zaXplLA0KKyAgICAgICAgRlhfRFdPUkQJCQkJIGFyZ2IsDQorICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIGlmICghcEZvbnQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJCb2xkID0gcEZvbnQtPklzQm9sZCgpOw0KKyAgICBpZiAoIWJCb2xkICYmIHBGb250LT5HZXRTdWJzdEZvbnQoKSAmJg0KKyAgICAgICAgICAgIHBGb250LT5HZXRTdWJzdEZvbnQoKS0+bV9XZWlnaHQgPj0gNTAwICYmDQorICAgICAgICAgICAgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX1dlaWdodCA8PSA2MDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5DaGFyczsgaSArKykgew0KKyAgICAgICAgaWYgKHBDaGFyUG9zW2ldLm1fYkdseXBoQWRqdXN0KSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENHQ29udGV4dFJlZiBjdHggPSBDR0NvbnRleHRSZWYobV9wUGxhdGZvcm1HcmFwaGljcyk7DQorICAgIGlmIChOVUxMID09IGN0eCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY3R4KTsNCisgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGN0eCwga0NHVGV4dEZpbGxDbGlwKTsNCisgICAgQ0dSZWN0IHJlY3RfY2c7DQorICAgIENHSW1hZ2VSZWYgcEltYWdlQ0cgPSBOVUxMOw0KKyAgICBpZiAobV9wQ2xpcFJnbikgew0KKyAgICAgICAgcmVjdF9jZyA9IENHUmVjdE1ha2UobV9wQ2xpcFJnbi0+R2V0Qm94KCkubGVmdCwgbV9wQ2xpcFJnbi0+R2V0Qm94KCkudG9wLCBtX3BDbGlwUmduLT5HZXRCb3goKS5XaWR0aCgpLCBtX3BDbGlwUmduLT5HZXRCb3goKS5IZWlnaHQoKSk7DQorICAgICAgICBjb25zdCBDRlhfRElCaXRtYXAqCXBDbGlwTWFzayA9IG1fcENsaXBSZ24tPkdldE1hc2soKTsNCisgICAgICAgIGlmIChwQ2xpcE1hc2spIHsNCisgICAgICAgICAgICBDR0RhdGFQcm92aWRlclJlZiBwQ2xpcE1hc2tEYXRhUHJvdmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKE5VTEwsDQorICAgICAgICAgICAgICAgICAgICBwQ2xpcE1hc2stPkdldEJ1ZmZlcigpLA0KKyAgICAgICAgICAgICAgICAgICAgcENsaXBNYXNrLT5HZXRQaXRjaCgpICogcENsaXBNYXNrLT5HZXRIZWlnaHQoKSwNCisgICAgICAgICAgICAgICAgICAgIF9Eb05vdGhpbmcpOw0KKyAgICAgICAgICAgIENHRmxvYXQgZGVjb2RlX2ZbMl0gPSB7MjU1LmYsIDAuZn07DQorICAgICAgICAgICAgcEltYWdlQ0cgPSBDR0ltYWdlTWFza0NyZWF0ZShwQ2xpcE1hc2stPkdldFdpZHRoKCksIHBDbGlwTWFzay0+R2V0SGVpZ2h0KCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCBwQ2xpcE1hc2stPkdldFBpdGNoKCksIHBDbGlwTWFza0RhdGFQcm92aWRlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9mLCBGQUxTRSk7DQorICAgICAgICAgICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKHBDbGlwTWFza0RhdGFQcm92aWRlcik7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZWN0X2NnID0gQ0dSZWN0TWFrZSgwLCAwLCBtX3BCaXRtYXAtPkdldFdpZHRoKCksIG1fcEJpdG1hcC0+R2V0SGVpZ2h0KCkpOw0KKyAgICB9DQorICAgIHJlY3RfY2cgPSBDR0NvbnRleHRDb252ZXJ0UmVjdFRvRGV2aWNlU3BhY2UoY3R4LCByZWN0X2NnKTsNCisgICAgaWYgKHBJbWFnZUNHKSB7DQorICAgICAgICBDR0NvbnRleHRDbGlwVG9NYXNrKGN0eCwgcmVjdF9jZywgcEltYWdlQ0cpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjdHgsIHJlY3RfY2cpOw0KKyAgICB9DQorICAgIEZYX0JPT0wgcmV0ID0gX0NHRHJhd0dseXBoUnVuKGN0eCwgbkNoYXJzLCBwQ2hhclBvcywgcEZvbnQsIHBDYWNoZSwgcE9iamVjdDJEZXZpY2UsIGZvbnRfc2l6ZSwgYXJnYiwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorICAgIGlmIChwSW1hZ2VDRykgew0KKyAgICAgICAgQ0dJbWFnZVJlbGVhc2UocEltYWdlQ0cpOw0KKyAgICB9DQorICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY3R4KTsNCisgICAgcmV0dXJuIHJldDsNCit9DQordm9pZCBDRlhfRm9udDo6UmVsZWFzZVBsYXRmb3JtUmVzb3VyY2UoKQ0KK3sNCisgICAgaWYgKG1fcFBsYXRmb3JtRm9udCkgew0KKyAgICAgICAgQ1F1YXJ0ejJEICYgcXVhcnR6MmQgPSAoKENBcHBsZVBsYXRmb3JtICopIENGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpKS0+X3F1YXJ0ejJkOw0KKyAgICAgICAgcXVhcnR6MmQuRGVzdHJveUZvbnQobV9wUGxhdGZvcm1Gb250KTsNCisgICAgICAgIG1fcFBsYXRmb3JtRm9udCA9IE5VTEw7DQorICAgIH0NCit9DQorI2VuZGlmDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9hcHBsZS9meF9tYWNfaW1wLmNwcCBiL2NvcmUvc3JjL2Z4Z2UvYXBwbGUvZnhfbWFjX2ltcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWExMjE4YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvYXBwbGUvZnhfbWFjX2ltcC5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaW5jbHVkZSAiYXBwbGVfaW50LmgiDQorI2lmIF9GWF9PU18gPT0gX0ZYX01BQ09TWF8NCitzdGF0aWMgY29uc3Qgc3RydWN0IHsNCisgICAgRlhfTFBDU1RSCW1fcE5hbWU7DQorICAgIEZYX0xQQ1NUUgltX3BTdWJzdE5hbWU7DQorfQ0KK0Jhc2UxNFN1YnN0c1tdID0gew0KKyAgICB7IkNvdXJpZXIiLCAiQ291cmllciBOZXcifSwNCisgICAgeyJDb3VyaWVyLUJvbGQiLCAiQ291cmllciBOZXcgQm9sZCJ9LA0KKyAgICB7IkNvdXJpZXItQm9sZE9ibGlxdWUiLCAiQ291cmllciBOZXcgQm9sZCBJdGFsaWMifSwNCisgICAgeyJDb3VyaWVyLU9ibGlxdWUiLCAiQ291cmllciBOZXcgSXRhbGljIn0sDQorICAgIHsiSGVsdmV0aWNhIiwgIkFyaWFsIn0sDQorICAgIHsiSGVsdmV0aWNhLUJvbGQiLCAiQXJpYWwgQm9sZCJ9LA0KKyAgICB7IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIsICJBcmlhbCBCb2xkIEl0YWxpYyJ9LA0KKyAgICB7IkhlbHZldGljYS1PYmxpcXVlIiwgIkFyaWFsIEl0YWxpYyJ9LA0KKyAgICB7IlRpbWVzLVJvbWFuIiwgIlRpbWVzIE5ldyBSb21hbiJ9LA0KKyAgICB7IlRpbWVzLUJvbGQiLCAiVGltZXMgTmV3IFJvbWFuIEJvbGQifSwNCisgICAgeyJUaW1lcy1Cb2xkSXRhbGljIiwgIlRpbWVzIE5ldyBSb21hbiBCb2xkIEl0YWxpYyJ9LA0KKyAgICB7IlRpbWVzLUl0YWxpYyIsICJUaW1lcyBOZXcgUm9tYW4gSXRhbGljIn0sDQorfTsNCisjaWYgIWRlZmluZWQoX0ZQREZBUElfTUlOSV8pDQorY2xhc3MgQ0ZYX01hY0ZvbnRJbmZvIDogcHVibGljIENGWF9Gb2xkZXJGb250SW5mbw0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgdm9pZCoJCU1hcEZvbnQoaW50IHdlaWdodCwgRlhfQk9PTCBiSXRhbGljLCBpbnQgY2hhcnNldCwgaW50IHBpdGNoX2ZhbWlseSwgRlhfTFBDU1RSIGZhbWlseSwgRlhfQk9PTCYgYkV4YWN0KTsNCit9Ow0KKyNkZWZpbmUgSkFQQU5fR09USElDICJIaXJhZ2lubyBLYWt1IEdvdGhpYyBQcm8gVzYiDQorI2RlZmluZSBKQVBBTl9NSU5DSE8gIkhpcmFnaW5vIE1pbmNobyBQcm8gVzYiDQorc3RhdGljIHZvaWQgR2V0SmFwYW5lc2VQcmVmZXJlbmNlKENGWF9CeXRlU3RyaW5nJiBmYWNlLCBpbnQgd2VpZ2h0LCBpbnQgcGljdGhfZmFtaWx5KQ0KK3sNCisgICAgaWYgKGZhY2UuRmluZCgiR290aGljIikgPj0gMCkgew0KKyAgICAgICAgZmFjZSA9IEpBUEFOX0dPVEhJQzsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoIShwaWN0aF9mYW1pbHkgJiBGWEZPTlRfRkZfUk9NQU4pICYmIHdlaWdodCA+IDQwMCkgew0KKyAgICAgICAgZmFjZSA9IEpBUEFOX0dPVEhJQzsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZhY2UgPSBKQVBBTl9NSU5DSE87DQorICAgIH0NCit9DQordm9pZCogQ0ZYX01hY0ZvbnRJbmZvOjpNYXBGb250KGludCB3ZWlnaHQsIEZYX0JPT0wgYkl0YWxpYywgaW50IGNoYXJzZXQsIGludCBwaXRjaF9mYW1pbHksIEZYX0xQQ1NUUiBjc3RyX2ZhY2UsIEZYX0JPT0wmIGJFeGFjdCkNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIGZhY2UgPSBjc3RyX2ZhY2U7DQorICAgIGludCBpQmFzZUZvbnQ7DQorICAgIGZvciAoaUJhc2VGb250ID0gMDsgaUJhc2VGb250IDwgMTI7IGlCYXNlRm9udCArKykNCisgICAgICAgIGlmIChmYWNlID09IENGWF9CeXRlU3RyaW5nQyhCYXNlMTRTdWJzdHNbaUJhc2VGb250XS5tX3BOYW1lKSkgew0KKyAgICAgICAgICAgIGZhY2UgPSBCYXNlMTRTdWJzdHNbaUJhc2VGb250XS5tX3BTdWJzdE5hbWU7DQorICAgICAgICAgICAgYkV4YWN0ID0gVFJVRTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgaWYgKGlCYXNlRm9udCA8IDEyKSB7DQorICAgICAgICByZXR1cm4gR2V0Rm9udChmYWNlKTsNCisgICAgfQ0KKyAgICBGWF9MUFZPSUQgcDsNCisgICAgaWYgKG1fRm9udExpc3QuTG9va3VwKGZhY2UsIHApKSB7DQorICAgICAgICByZXR1cm4gcDsNCisgICAgfQ0KKyAgICBpZiAoY2hhcnNldCA9PSBGWEZPTlRfQU5TSV9DSEFSU0VUICYmIChwaXRjaF9mYW1pbHkgJiBGWEZPTlRfRkZfRklYRURQSVRDSCkpIHsNCisgICAgICAgIHJldHVybiBHZXRGb250KCJDb3VyaWVyIE5ldyIpOw0KKyAgICB9DQorICAgIGlmIChjaGFyc2V0ID09IEZYRk9OVF9BTlNJX0NIQVJTRVQgfHwgY2hhcnNldCA9PSBGWEZPTlRfU1lNQk9MX0NIQVJTRVQpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHN3aXRjaCAoY2hhcnNldCkgew0KKyAgICAgICAgY2FzZSBGWEZPTlRfU0hJRlRKSVNfQ0hBUlNFVDoNCisgICAgICAgICAgICBHZXRKYXBhbmVzZVByZWZlcmVuY2UoZmFjZSwgd2VpZ2h0LCBwaXRjaF9mYW1pbHkpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWEZPTlRfR0IyMzEyX0NIQVJTRVQ6DQorICAgICAgICAgICAgZmFjZSA9ICJTVFNvbmciOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWEZPTlRfSEFOR0VVTF9DSEFSU0VUOg0KKyAgICAgICAgICAgIGZhY2UgPSAiQXBwbGVNeXVuZ2pvIjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhGT05UX0NISU5FU0VCSUc1X0NIQVJTRVQ6DQorICAgICAgICAgICAgZmFjZSA9ICJMaVNvbmcgUHJvIExpZ2h0IjsNCisgICAgfQ0KKyAgICBpZiAobV9Gb250TGlzdC5Mb29rdXAoZmFjZSwgcCkpIHsNCisgICAgICAgIHJldHVybiBwOw0KKyAgICB9DQorICAgIHJldHVybiBOVUxMOw0KK30NCisjZW5kaWYNCitJRlhfU3lzdGVtRm9udEluZm8qIElGWF9TeXN0ZW1Gb250SW5mbzo6Q3JlYXRlRGVmYXVsdCgpDQorew0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykNCisgICAgQ0ZYX01hY0ZvbnRJbmZvKiBwSW5mbyA9IEZYX05FVyBDRlhfTWFjRm9udEluZm87DQorICAgIGlmICghcEluZm8pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBJbmZvLT5BZGRQYXRoKCJ+L0xpYnJhcnkvRm9udHMiKTsNCisgICAgcEluZm8tPkFkZFBhdGgoIi9MaWJyYXJ5L0ZvbnRzIik7DQorICAgIHBJbmZvLT5BZGRQYXRoKCIvU3lzdGVtL0xpYnJhcnkvRm9udHMiKTsNCisgICAgcmV0dXJuIHBJbmZvOw0KKyNlbHNlDQorICAgIHJldHVybiBOVUxMOw0KKyNlbmRpZg0KK30NCit2b2lkIENGWF9HRU1vZHVsZTo6SW5pdFBsYXRmb3JtKCkNCit7DQorICAgIG1fcFBsYXRmb3JtRGF0YSA9IEZYX05FVyBDQXBwbGVQbGF0Zm9ybTsNCisgICAgbV9wRm9udE1nci0+U2V0U3lzdGVtRm9udEluZm8oSUZYX1N5c3RlbUZvbnRJbmZvOjpDcmVhdGVEZWZhdWx0KCkpOw0KK30NCit2b2lkIENGWF9HRU1vZHVsZTo6RGVzdHJveVBsYXRmb3JtKCkNCit7DQorICAgIGlmIChtX3BQbGF0Zm9ybURhdGEpIHsNCisgICAgICAgIGRlbGV0ZSAoQ0FwcGxlUGxhdGZvcm0gKikgbV9wUGxhdGZvcm1EYXRhOw0KKyAgICB9DQorICAgIG1fcFBsYXRmb3JtRGF0YSA9IE5VTEw7DQorfQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvYXBwbGUvZnhfcXVhcnR6X2RldmljZS5jcHAgYi9jb3JlL3NyYy9meGdlL2FwcGxlL2Z4X3F1YXJ0el9kZXZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZjQ1MTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2FwcGxlL2Z4X3F1YXJ0el9kZXZpY2UuY3BwCkBAIC0wLDAgKzEsMTEzOCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfZXh0LmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpbmNsdWRlICIuLi9hZ2cvaW5jbHVkZS9meGZ4X2FnZ19jbGlwX2xpYW5nX2JhcnNreS5oIg0KKyNpbmNsdWRlICIuLi9nZS90ZXh0X2ludC5oIg0KKyNpbmNsdWRlICIuLi9kaWIvZGliX2ludC5oIg0KKyNpbmNsdWRlICIuLi9hZ2cvaW5jbHVkZS9meF9hZ2dfZHJpdmVyLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9mcmVldHlwZS5oIg0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisjaW5jbHVkZSAiYXBwbGVfaW50LmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZV9hcHBsZS5oIg0KKyNpZm5kZWYgQ0dGTE9BVF9JU19ET1VCTEUNCisjZXJyb3IgRXhwZWN0ZWQgQ0dGTE9BVF9JU19ET1VCTEUgdG8gYmUgZGVmaW5lZCBieSBDb3JlR3JhcGhpY3MgaGVhZGVycw0KKyNlbmRpZg0KK3ZvaWQqIENRdWFydHoyRDo6Y3JlYXRlR3JhcGhpY3MoQ0ZYX0RJQml0bWFwKiBwQml0bWFwKQ0KK3sNCisgICAgaWYgKCFwQml0bWFwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDR0JpdG1hcEluZm8gYm1wSW5mbyA9IGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlOw0KKyAgICBzd2l0Y2ggKHBCaXRtYXAtPkdldEZvcm1hdCgpKSB7DQorICAgICAgICBjYXNlIEZYRElCX1JnYjMyOg0KKyAgICAgICAgICAgIGJtcEluZm8gfD0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3Q7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCX0FyZ2I6DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7DQorICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBCaXRtYXAtPkdldEJ1ZmZlcigpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCaXRtYXAtPkdldFdpZHRoKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJpdG1hcC0+R2V0SGVpZ2h0KCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwQml0bWFwLT5HZXRQaXRjaCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU3BhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm1wSW5mbyk7DQorICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7DQorICAgIHJldHVybiBjb250ZXh0Ow0KK30NCit2b2lkIENRdWFydHoyRDo6ZGVzdHJveUdyYXBoaWNzKHZvaWQqIGdyYXBoaWNzKQ0KK3sNCisgICAgaWYgKGdyYXBoaWNzKSB7DQorICAgICAgICBDR0NvbnRleHRSZWxlYXNlKChDR0NvbnRleHRSZWYpIGdyYXBoaWNzKTsNCisgICAgfQ0KK30NCit2b2lkKiBDUXVhcnR6MkQ6OkNyZWF0ZUZvbnQoRlhfTFBDQllURSBwRm9udERhdGEsIEZYX0RXT1JEIGR3Rm9udFNpemUpDQorew0KKyAgICBDR0RhdGFQcm92aWRlclJlZiBwRGF0YVByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShOVUxMLCBwRm9udERhdGEsIChzaXplX3QpZHdGb250U2l6ZSwgTlVMTCk7DQorICAgIGlmIChOVUxMID09IHBEYXRhUHJvdmlkZXIpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENHRm9udFJlZiBwQ0dGb250ID0gQ0dGb250Q3JlYXRlV2l0aERhdGFQcm92aWRlcihwRGF0YVByb3ZpZGVyKTsNCisgICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKHBEYXRhUHJvdmlkZXIpOw0KKyAgICByZXR1cm4gcENHRm9udDsNCit9DQordm9pZCBDUXVhcnR6MkQ6OkRlc3Ryb3lGb250KHZvaWQqIHBGb250KQ0KK3sNCisgICAgQ0dGb250UmVsZWFzZSgoQ0dGb250UmVmKXBGb250KTsNCit9DQordm9pZCBDUXVhcnR6MkQ6OnNldEdyYXBoaWNzVGV4dE1hdHJpeCh2b2lkKiBncmFwaGljcywgQ0ZYX0FmZmluZU1hdHJpeCogbWF0cml4KQ0KK3sNCisgICAgaWYgKCFncmFwaGljcyB8fCAhbWF0cml4KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSAoQ0dDb250ZXh0UmVmKSBncmFwaGljczsNCisgICAgQ0dGbG9hdCB0eSA9IENHQml0bWFwQ29udGV4dEdldEhlaWdodChjb250ZXh0KSAtIG1hdHJpeC0+ZjsNCisgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LCBDR0FmZmluZVRyYW5zZm9ybU1ha2UobWF0cml4LT5hLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC0+YiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXgtPmMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5kLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC0+ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSkpOw0KK30NCitGWF9CT09MIENRdWFydHoyRDo6ZHJhd0dyYXBoaWNzU3RyaW5nKHZvaWQqICAgICAgICAgICAgICAgICBncmFwaGljcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICBmb250LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgICAgICAgICAgICAgIGZvbnRTaXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfV09SRCogICAgICAgICAgICAgIGdseXBoSW5kaWNlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENHUG9pbnQqICAgICAgICAgICBnbHlwaFBvc2l0aW9ucywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0lOVDMyICAgICAgICAgICAgICBjaGFyc0NvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQVJHQiAgICAgICAgICAgICAgIGFyZ2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4KiAgICAgbWF0cml4ICkNCit7DQorICAgIGlmICghZ3JhcGhpY3MpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IChDR0NvbnRleHRSZWYpIGdyYXBoaWNzOw0KKyAgICBDR0NvbnRleHRTZXRGb250KGNvbnRleHQsIChDR0ZvbnRSZWYpZm9udCk7DQorICAgIENHQ29udGV4dFNldEZvbnRTaXplKGNvbnRleHQsIGZvbnRTaXplKTsNCisgICAgaWYgKG1hdHJpeCkgew0KKyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbSA9IENHQ29udGV4dEdldFRleHRNYXRyaXgoY29udGV4dCk7DQorICAgICAgICBtID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQobSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0FmZmluZVRyYW5zZm9ybU1ha2UobWF0cml4LT5hLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5iLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5jLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5kLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LT5mKSk7DQorICAgICAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNvbnRleHQsIG0pOw0KKyAgICB9DQorICAgIEZYX0lOVDMyIGEsIHIsIGcsIGI7DQorICAgIEFyZ2JEZWNvZGUoYXJnYiwgYSwgciwgZywgYik7DQorICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAvIDI1NS5mKTsNCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsNCisjaWYgQ0dGTE9BVF9JU19ET1VCTEUNCisgICAgQ0dQb2ludCogZ2x5cGhQb3NpdGlvbnNDRyA9IG5ldyBDR1BvaW50W2NoYXJzQ291bnRdOw0KKyAgICBpZiAoIWdseXBoUG9zaXRpb25zQ0cpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgY2hhcnNDb3VudDsgKytpbmRleCkgew0KKyAgICAgICAgZ2x5cGhQb3NpdGlvbnNDR1tpbmRleF0ueCA9IGdseXBoUG9zaXRpb25zW2luZGV4XS54Ow0KKyAgICAgICAgZ2x5cGhQb3NpdGlvbnNDR1tpbmRleF0ueSA9IGdseXBoUG9zaXRpb25zW2luZGV4XS55Ow0KKyAgICB9DQorI2Vsc2UNCisgICAgQ0dQb2ludCogZ2x5cGhQb3NpdGlvbnNDRyA9IChDR1BvaW50KilnbHlwaFBvc2l0aW9uczsNCisjZW5kaWYNCisgICAgQ0dDb250ZXh0U2hvd0dseXBoc0F0UG9zaXRpb25zKGNvbnRleHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0dHbHlwaCAqKSBnbHlwaEluZGljZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaFBvc2l0aW9uc0NHLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNDb3VudCk7DQorI2lmIENHRkxPQVRfSVNfRE9VQkxFDQorICAgIGRlbGV0ZVtdIGdseXBoUG9zaXRpb25zQ0c7DQorI2VuZGlmDQorICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENRdWFydHoyRDo6c2F2ZUdyYXBoaWNzU3RhdGUodm9pZCAqIGdyYXBoaWNzKQ0KK3sNCisgICAgaWYgKGdyYXBoaWNzKSB7DQorICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKChDR0NvbnRleHRSZWYpIGdyYXBoaWNzKTsNCisgICAgfQ0KK30NCit2b2lkIENRdWFydHoyRDo6cmVzdG9yZUdyYXBoaWNzU3RhdGUodm9pZCAqIGdyYXBoaWNzKQ0KK3sNCisgICAgaWYgKGdyYXBoaWNzKSB7DQorICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKChDR0NvbnRleHRSZWYpIGdyYXBoaWNzKTsNCisgICAgfQ0KK30NCitzdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRXaXRoQml0bWFwKENGWF9ESUJpdG1hcCogcEJpdG1hcCkNCit7DQorICAgIGlmICghcEJpdG1hcCB8fCBwQml0bWFwLT5Jc0NteWtJbWFnZSgpIHx8IHBCaXRtYXAtPkdldEJQUCgpIDwgMzIpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGU7DQorICAgIGlmIChwQml0bWFwLT5IYXNBbHBoYSgpKSB7DQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0Ow0KKyAgICB9DQorICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7DQorICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBCaXRtYXAtPkdldEJ1ZmZlcigpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCaXRtYXAtPkdldFdpZHRoKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJpdG1hcC0+R2V0SGVpZ2h0KCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwQml0bWFwLT5HZXRQaXRjaCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU3BhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwSW5mbyk7DQorICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7DQorICAgIHJldHVybiBjb250ZXh0Ow0KK30NCitDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpDRlhfUXVhcnR6RGV2aWNlRHJpdmVyKENHQ29udGV4dFJlZiBjb250ZXh0LCBGWF9JTlQzMiBkZXZpY2VDbGFzcykNCit7DQorICAgIG1fc2F2ZUNvdW50ID0gMDsNCisgICAgX2NvbnRleHQJCT0gY29udGV4dDsNCisgICAgX2RldmljZUNsYXNzCT0gZGV2aWNlQ2xhc3M7DQorICAgIENHQ29udGV4dFJldGFpbihfY29udGV4dCk7DQorICAgIENHUmVjdCByID0gQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOw0KKyAgICBfd2lkdGgJPSBGWFNZU19yb3VuZChyLnNpemUud2lkdGgpOw0KKyAgICBfaGVpZ2h0CT0gRlhTWVNfcm91bmQoci5zaXplLmhlaWdodCk7DQorICAgIF9yZW5kZXJDYXBzID0gRlhSQ19TT0ZUX0NMSVAgfCBGWFJDX0JMRU5EX01PREUgfA0KKyAgICAgICAgICAgICAgICAgIEZYUkNfQUxQSEFfUEFUSCB8IEZYUkNfQUxQSEFfSU1BR0UgfA0KKyAgICAgICAgICAgICAgICAgIEZYUkNfQklUX01BU0sgfCBGWFJDX0FMUEhBX01BU0s7DQorICAgIGlmIChfZGV2aWNlQ2xhc3MgIT0gRlhEQ19ESVNQTEFZKSB7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoX2NvbnRleHQpOw0KKyAgICAgICAgaWYgKGltYWdlKSB7DQorICAgICAgICAgICAgX3JlbmRlckNhcHMgfD0gRlhSQ19HRVRfQklUUzsNCisgICAgICAgICAgICBfd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpOw0KKyAgICAgICAgICAgIF9oZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsNCisgICAgICAgICAgICBDR0ltYWdlQWxwaGFJbmZvIGFscGhhSW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2UpOw0KKyAgICAgICAgICAgIGlmIChrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0ID09IGFscGhhSW5mbyB8fA0KKyAgICAgICAgICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0ID09IGFscGhhSW5mbyB8fA0KKyAgICAgICAgICAgICAgICAgICAga0NHSW1hZ2VBbHBoYU9ubHkgPT0gYWxwaGFJbmZvKSB7DQorICAgICAgICAgICAgICAgIF9yZW5kZXJDYXBzIHw9IEZYUkNfQUxQSEFfT1VUUFVUOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsNCisgICAgfQ0KKyAgICBDR0FmZmluZVRyYW5zZm9ybSBjdG0gPSBDR0NvbnRleHRHZXRDVE0oX2NvbnRleHQpOw0KKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKF9jb250ZXh0KTsNCisgICAgbV9zYXZlQ291bnQrKzsNCisgICAgaWYgKGN0bS5kID49IDApIHsNCisgICAgICAgIENHRmxvYXQgb2Zmc2V0X3gsIG9mZnNldF95Ow0KKyAgICAgICAgb2Zmc2V0X3ggPSBjdG0udHg7DQorICAgICAgICBvZmZzZXRfeSA9IGN0bS50eTsNCisgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShfY29udGV4dCwgLW9mZnNldF94LCAtb2Zmc2V0X3kpOw0KKyAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKF9jb250ZXh0LCBDR0FmZmluZVRyYW5zZm9ybU1ha2UoMSwgMCwgMCwgLTEsIG9mZnNldF94LCBfaGVpZ2h0ICsgb2Zmc2V0X3kpKTsNCisgICAgfQ0KKyAgICBfZm94aXREZXZpY2UyVXNlciA9IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7DQorICAgIF91c2VyMkZveGl0RGV2aWNlID0gQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoX2ZveGl0RGV2aWNlMlVzZXIpOw0KK30NCitDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjp+Q0ZYX1F1YXJ0ekRldmljZURyaXZlcigpDQorew0KKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKF9jb250ZXh0KTsNCisgICAgbV9zYXZlQ291bnQtLTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3NhdmVDb3VudDsgKytpKSB7DQorICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKF9jb250ZXh0KTsNCisgICAgfQ0KKyAgICBpZiAoX2NvbnRleHQpIHsNCisgICAgICAgIENHQ29udGV4dFJlbGVhc2UoX2NvbnRleHQpOw0KKyAgICB9DQorfQ0KK2ludCBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpHZXREZXZpY2VDYXBzKGludCBjYXBzSUQpDQorew0KKyAgICBzd2l0Y2ggKGNhcHNJRCkgew0KKyAgICAgICAgY2FzZSBGWERDX0RFVklDRV9DTEFTUzogew0KKyAgICAgICAgICAgICAgICByZXR1cm4gX2RldmljZUNsYXNzOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhEQ19QSVhFTF9XSURUSDogew0KKyAgICAgICAgICAgICAgICByZXR1cm4gX3dpZHRoOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhEQ19QSVhFTF9IRUlHSFQ6IHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIF9oZWlnaHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGWERDX0JJVFNfUElYRUw6IHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDMyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhEQ19SRU5ERVJfQ0FQUzogew0KKyAgICAgICAgICAgICAgICByZXR1cm4gX3JlbmRlckNhcHM7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgZGVmYXVsdDogew0KKyAgICAgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgICAgICB9DQorICAgIH0NCit9DQorQ0ZYX01hdHJpeCBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpHZXRDVE0oKSBjb25zdA0KK3sNCisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gY3RtID0gQ0dDb250ZXh0R2V0Q1RNKF9jb250ZXh0KTsNCisgICAgcmV0dXJuIENGWF9NYXRyaXgoY3RtLmEsIGN0bS5iLCBjdG0uYywgY3RtLmQsIGN0bS50eCwgY3RtLnR5KTsNCit9DQordm9pZCBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpTYXZlU3RhdGUoKQ0KK3sNCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShfY29udGV4dCk7DQorICAgIG1fc2F2ZUNvdW50Kys7DQorfQ0KK3ZvaWQgQ0ZYX1F1YXJ0ekRldmljZURyaXZlcjo6UmVzdG9yZVN0YXRlKEZYX0JPT0wgaXNLZWVwU2F2ZWQgKQ0KK3sNCisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShfY29udGV4dCk7DQorICAgIGlmIChpc0tlZXBTYXZlZCkgew0KKyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShfY29udGV4dCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX3NhdmVDb3VudC0tOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ0ZYX1F1YXJ0ekRldmljZURyaXZlcjo6U2V0Q2xpcF9QYXRoRmlsbChjb25zdCBDRlhfUGF0aERhdGEqICAgIHBhdGhEYXRhLA0KKyAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogICBtYXRyaXgsDQorICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgIGZpbGxNb2RlICkNCit7DQorICAgIFNhdmVTdGF0ZSgpOw0KKyAgICBDR0FmZmluZVRyYW5zZm9ybSBtID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsNCisgICAgaWYgKG1hdHJpeCkgew0KKyAgICAgICAgbSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZShtYXRyaXgtPkdldEEoKSwgbWF0cml4LT5HZXRCKCksIG1hdHJpeC0+R2V0QygpLCBtYXRyaXgtPkdldEQoKSwgbWF0cml4LT5HZXRFKCksIG1hdHJpeC0+R2V0RigpKTsNCisgICAgfQ0KKyAgICBtID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQobSwgX2ZveGl0RGV2aWNlMlVzZXIpOw0KKyAgICBDR0NvbnRleHRDb25jYXRDVE0oX2NvbnRleHQsIG0pOw0KKyAgICBzZXRQYXRoVG9Db250ZXh0KHBhdGhEYXRhKTsNCisgICAgUmVzdG9yZVN0YXRlKEZBTFNFKTsNCisgICAgaWYgKChmaWxsTW9kZSAmIDMpID09IEZYRklMTF9XSU5ESU5HKSB7DQorICAgICAgICBDR0NvbnRleHRDbGlwKF9jb250ZXh0KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIENHQ29udGV4dEVPQ2xpcChfY29udGV4dCk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0ZMT0FUIENGWF9RdWFydHpEZXZpY2VEcml2ZXI6OmdldExpbmVXaWR0aChjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEgKiBncmFwaFN0YXRlLCBDR0FmZmluZVRyYW5zZm9ybSBjdG0pDQorew0KKyAgICBGWF9GTE9BVCBsaW5lV2lkdGggPSBncmFwaFN0YXRlLT5tX0xpbmVXaWR0aDsNCisgICAgaWYgKGdyYXBoU3RhdGUtPm1fTGluZVdpZHRoIDw9IDAuZikgew0KKyAgICAgICAgQ0dTaXplIHNpemU7DQorICAgICAgICBzaXplLndpZHRoID0gMTsNCisgICAgICAgIHNpemUuaGVpZ2h0ID0gMTsNCisgICAgICAgIENHU2l6ZSB0ZW1wID0gQ0dTaXplQXBwbHlBZmZpbmVUcmFuc2Zvcm0oc2l6ZSwgY3RtKTsNCisgICAgICAgIENHRmxvYXQgeCA9IDEgLyB0ZW1wLndpZHRoOw0KKyAgICAgICAgQ0dGbG9hdCB5ID0gMSAvIHRlbXAuaGVpZ2h0Ow0KKyAgICAgICAgbGluZVdpZHRoID0geCA+IHkgPyB4IDogeTsNCisgICAgfQ0KKyAgICByZXR1cm4gbGluZVdpZHRoOw0KK30NCitGWF9CT09MIENGWF9RdWFydHpEZXZpY2VEcml2ZXI6OlNldENsaXBfUGF0aFN0cm9rZShjb25zdCBDRlhfUGF0aERhdGEqICAgICAgcGF0aERhdGEsDQorICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiAgICAgbWF0cml4LA0KKyAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiAgIGdyYXBoU3RhdGUgKQ0KK3sNCisgICAgU2F2ZVN0YXRlKCk7DQorICAgIENHQWZmaW5lVHJhbnNmb3JtIG0gPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5Ow0KKyAgICBpZiAobWF0cml4KSB7DQorICAgICAgICBtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKG1hdHJpeC0+R2V0QSgpLCBtYXRyaXgtPkdldEIoKSwgbWF0cml4LT5HZXRDKCksIG1hdHJpeC0+R2V0RCgpLCBtYXRyaXgtPkdldEUoKSwgbWF0cml4LT5HZXRGKCkpOw0KKyAgICB9DQorICAgIG0gPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChtLCBfZm94aXREZXZpY2UyVXNlcik7DQorICAgIENHQ29udGV4dENvbmNhdENUTShfY29udGV4dCwgbSk7DQorICAgIEZYX0ZMT0FUIGxpbmVXaWR0aCA9IGdldExpbmVXaWR0aChncmFwaFN0YXRlLCBtKTsNCisgICAgc2V0U3Ryb2tlSW5mbyhncmFwaFN0YXRlLCAweEZGMDAwMDAwLCBsaW5lV2lkdGgpOw0KKyAgICBzZXRQYXRoVG9Db250ZXh0KHBhdGhEYXRhKTsNCisgICAgQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGgoX2NvbnRleHQpOw0KKyAgICBSZXN0b3JlU3RhdGUoRkFMU0UpOw0KKyAgICBDR0NvbnRleHRDbGlwKF9jb250ZXh0KTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3N0YXRpYyBDR0JsZW5kTW9kZSBHZXRDR0JsZW5kTW9kZShpbnQgYmxlbmRfdHlwZSkNCit7DQorICAgIENHQmxlbmRNb2RlIG1vZGUgPSBrQ0dCbGVuZE1vZGVOb3JtYWw7DQorICAgIHN3aXRjaCAoYmxlbmRfdHlwZSkgew0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9OT1JNQUw6DQorICAgICAgICAgICAgbW9kZSA9IGtDR0JsZW5kTW9kZU5vcm1hbDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfTVVMVElQTFk6DQorICAgICAgICAgICAgbW9kZSA9IGtDR0JsZW5kTW9kZU11bHRpcGx5Ow0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9TQ1JFRU46DQorICAgICAgICAgICAgbW9kZSA9IGtDR0JsZW5kTW9kZVNjcmVlbjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfT1ZFUkxBWToNCisgICAgICAgICAgICBtb2RlID0ga0NHQmxlbmRNb2RlT3ZlcmxheTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfREFSS0VOOg0KKyAgICAgICAgICAgIG1vZGUgPSBrQ0dCbGVuZE1vZGVEYXJrZW47DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCX0JMRU5EX0xJR0hURU46DQorICAgICAgICAgICAgbW9kZSA9IGtDR0JsZW5kTW9kZUxpZ2h0ZW47DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCX0JMRU5EX0NPTE9SRE9ER0U6DQorICAgICAgICAgICAgbW9kZSA9IGtDR0JsZW5kTW9kZUNvbG9yRG9kZ2U7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCX0JMRU5EX0NPTE9SQlVSTjoNCisgICAgICAgICAgICBtb2RlID0ga0NHQmxlbmRNb2RlQ29sb3JCdXJuOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9IQVJETElHSFQ6DQorICAgICAgICAgICAgbW9kZSA9IGtDR0JsZW5kTW9kZUhhcmRMaWdodDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfU09GVExJR0hUOg0KKyAgICAgICAgICAgIG1vZGUgPSBrQ0dCbGVuZE1vZGVTb2Z0TGlnaHQ7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCX0JMRU5EX0RJRkZFUkVOQ0U6DQorICAgICAgICAgICAgbW9kZSA9IGtDR0JsZW5kTW9kZURpZmZlcmVuY2U7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCX0JMRU5EX0VYQ0xVU0lPTjoNCisgICAgICAgICAgICBtb2RlID0ga0NHQmxlbmRNb2RlRXhjbHVzaW9uOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9IVUU6DQorICAgICAgICAgICAgbW9kZSA9IGtDR0JsZW5kTW9kZUh1ZTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfU0FUVVJBVElPTjoNCisgICAgICAgICAgICBtb2RlID0ga0NHQmxlbmRNb2RlU2F0dXJhdGlvbjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfQ09MT1I6DQorICAgICAgICAgICAgbW9kZSA9IGtDR0JsZW5kTW9kZUNvbG9yOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9MVU1JTk9TSVRZOg0KKyAgICAgICAgICAgIG1vZGUgPSBrQ0dCbGVuZE1vZGVMdW1pbm9zaXR5Ow0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBtb2RlID0ga0NHQmxlbmRNb2RlTm9ybWFsOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIHJldHVybiBtb2RlOw0KK30NCitGWF9CT09MIENGWF9RdWFydHpEZXZpY2VEcml2ZXI6OkRyYXdQYXRoKGNvbnN0IENGWF9QYXRoRGF0YSogICAgICAgIHBhdGhEYXRhLA0KKyAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogICAgICAgbWF0cml4LA0KKyAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiAgICAgZ3JhcGhTdGF0ZSwNCisgICAgICAgIEZYX0RXT1JEICAgICAgICAgICAgICAgICAgICAgIGZpbGxBcmdiLA0KKyAgICAgICAgRlhfRFdPUkQgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlQXJnYiwNCisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxNb2RlLA0KKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfZmxhZywNCisgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgIHBJY2NUcmFuc2Zvcm0sDQorICAgICAgICBpbnQJCQkJCQkJYmxlbmRfdHlwZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQorew0KKyAgICBTYXZlU3RhdGUoKTsNCisgICAgQ0dCbGVuZE1vZGUgbW9kZSA9IEdldENHQmxlbmRNb2RlKGJsZW5kX3R5cGUpOw0KKyAgICBpZiAobW9kZSAhPSBrQ0dCbGVuZE1vZGVOb3JtYWwpIHsNCisgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShfY29udGV4dCwgbW9kZSk7DQorICAgIH0NCisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbSA9IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7DQorICAgIGlmIChtYXRyaXgpIHsNCisgICAgICAgIG0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2UobWF0cml4LT5HZXRBKCksIG1hdHJpeC0+R2V0QigpLCBtYXRyaXgtPkdldEMoKSwgbWF0cml4LT5HZXREKCksIG1hdHJpeC0+R2V0RSgpLCBtYXRyaXgtPkdldEYoKSk7DQorICAgIH0NCisgICAgbSA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KG0sIF9mb3hpdERldmljZTJVc2VyKTsNCisgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKF9jb250ZXh0LCBtKTsNCisgICAgaW50IHBhdGhNb2RlID0gMDsNCisgICAgaWYgKGdyYXBoU3RhdGUgJiYgc3Ryb2tlQXJnYikgew0KKyAgICAgICAgQ0dDb250ZXh0U2V0TWl0ZXJMaW1pdChfY29udGV4dCwgZ3JhcGhTdGF0ZS0+bV9NaXRlckxpbWl0KTsNCisgICAgICAgIEZYX0ZMT0FUIGxpbmVXaWR0aCA9IGdldExpbmVXaWR0aChncmFwaFN0YXRlLCBtKTsNCisgICAgICAgIHNldFN0cm9rZUluZm8oZ3JhcGhTdGF0ZSwgc3Ryb2tlQXJnYiwgbGluZVdpZHRoKTsNCisgICAgICAgIHBhdGhNb2RlIHw9IDQ7DQorICAgIH0NCisgICAgaWYgKGZpbGxNb2RlICYmIGZpbGxBcmdiKSB7DQorICAgICAgICBzZXRGaWxsSW5mbyhmaWxsQXJnYik7DQorICAgICAgICBpZiAoKGZpbGxNb2RlICYgMykgPT0gRlhGSUxMX1dJTkRJTkcpIHsNCisgICAgICAgICAgICBwYXRoTW9kZSB8PSAxOw0KKyAgICAgICAgfSBlbHNlIGlmICgoZmlsbE1vZGUgJiAzKSA9PSBGWEZJTExfQUxURVJOQVRFKSB7DQorICAgICAgICAgICAgcGF0aE1vZGUgfD0gMjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBzZXRQYXRoVG9Db250ZXh0KHBhdGhEYXRhKTsNCisgICAgaWYgKGZpbGxNb2RlICYgRlhGSUxMX0ZVTExDT1ZFUikgew0KKyAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKF9jb250ZXh0LCBmYWxzZSk7DQorICAgIH0NCisgICAgaWYgKHBhdGhNb2RlID09IDQpIHsNCisgICAgICAgIENHQ29udGV4dFN0cm9rZVBhdGgoX2NvbnRleHQpOw0KKyAgICB9IGVsc2UgaWYgKHBhdGhNb2RlID09IDEpIHsNCisgICAgICAgIENHQ29udGV4dEZpbGxQYXRoKF9jb250ZXh0KTsNCisgICAgfSBlbHNlIGlmIChwYXRoTW9kZSA9PSAyKSB7DQorICAgICAgICBDR0NvbnRleHRFT0ZpbGxQYXRoKF9jb250ZXh0KTsNCisgICAgfSBlbHNlIGlmIChwYXRoTW9kZSA9PSA1KSB7DQorICAgICAgICBDR0NvbnRleHREcmF3UGF0aChfY29udGV4dCwga0NHUGF0aEZpbGxTdHJva2UpOw0KKyAgICB9IGVsc2UgaWYgKHBhdGhNb2RlID09IDYpIHsNCisgICAgICAgIENHQ29udGV4dERyYXdQYXRoKF9jb250ZXh0LCBrQ0dQYXRoRU9GaWxsU3Ryb2tlKTsNCisgICAgfQ0KKyAgICBSZXN0b3JlU3RhdGUoRkFMU0UpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpGaWxsUmVjdChjb25zdCBGWF9SRUNUKiAgICAgICAgIHJlY3QsDQorICAgICAgICBGWF9BUkdCICAgICAgICAgICAgICAgICAgIGZpbGxBcmdiLA0KKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICBhbHBoYUZsYWcJICAgLA0KKyAgICAgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICBpY2NUcmFuc2Zvcm0gLA0KKyAgICAgICAgaW50CQkJCQkJYmxlbmRfdHlwZSApDQorew0KKyAgICBDR0JsZW5kTW9kZSBtb2RlID0gR2V0Q0dCbGVuZE1vZGUoYmxlbmRfdHlwZSk7DQorICAgIGlmIChtb2RlICE9IGtDR0JsZW5kTW9kZU5vcm1hbCkgew0KKyAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKF9jb250ZXh0LCBtb2RlKTsNCisgICAgfQ0KKyAgICBDR1JlY3QgcmVjdF9meCA9IENHUmVjdE1ha2UocmVjdC0+bGVmdCwgcmVjdC0+dG9wLCByZWN0LT5XaWR0aCgpLCByZWN0LT5IZWlnaHQoKSk7DQorICAgIENHUmVjdCByZWN0X3VzciA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKHJlY3RfZngsIF9mb3hpdERldmljZTJVc2VyKTsNCisgICAgRlhfSU5UMzIgYSwgciwgZywgYjsNCisgICAgQXJnYkRlY29kZShmaWxsQXJnYiwgYSwgciwgZywgYik7DQorICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihfY29udGV4dCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgLyAyNTUuZik7DQorICAgIENHQ29udGV4dEZpbGxSZWN0KF9jb250ZXh0LCByZWN0X3Vzcik7DQorICAgIGlmIChtb2RlICE9IGtDR0JsZW5kTW9kZU5vcm1hbCkgew0KKyAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKF9jb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9RdWFydHpEZXZpY2VEcml2ZXI6OkRyYXdDb3NtZXRpY0xpbmUoRlhfRkxPQVQgICAgICAgICAgIHgxLA0KKyAgICAgICAgRlhfRkxPQVQgICAgICAgICAgICAgIHkxLA0KKyAgICAgICAgRlhfRkxPQVQgICAgICAgICAgICAgIHgyLA0KKyAgICAgICAgRlhfRkxPQVQgICAgICAgICAgICAgIHkyLA0KKyAgICAgICAgRlhfRFdPUkQgICAgICAgICAgICAgIGFyZ2IsDQorICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgYWxwaGFGbGFnICAgICAgICwNCisgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICBpY2NUcmFuc2Zvcm0gICAgLA0KKyAgICAgICAgaW50CQkJCQlibGVuZF90eXBlICkNCit7DQorICAgIENHQmxlbmRNb2RlIG1vZGUgPSBHZXRDR0JsZW5kTW9kZShibGVuZF90eXBlKTsNCisgICAgaWYgKG1vZGUgIT0ga0NHQmxlbmRNb2RlTm9ybWFsKSB7DQorICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoX2NvbnRleHQsIG1vZGUpOw0KKyAgICB9DQorICAgIENHUG9pbnQgcHQgPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0oQ0dQb2ludE1ha2UoeDEsIHkxKSwgX2ZveGl0RGV2aWNlMlVzZXIpOw0KKyAgICB4MSA9IHB0Lng7DQorICAgIHkxID0gcHQueTsNCisgICAgcHQgPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0oQ0dQb2ludE1ha2UoeDIsIHkyKSwgX2ZveGl0RGV2aWNlMlVzZXIpOw0KKyAgICB4MiA9IHB0Lng7DQorICAgIHkyID0gcHQueTsNCisgICAgRlhfSU5UMzIgYSwgciwgZywgYjsNCisgICAgQXJnYkRlY29kZShhcmdiLCBhLCByLCBnLCBiKTsNCisgICAgQ0dDb250ZXh0U2V0UkdCU3Ryb2tlQ29sb3IoX2NvbnRleHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIC8gMjU1LmYsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgLyAyNTUuZik7DQorICAgIENHQ29udGV4dE1vdmVUb1BvaW50KF9jb250ZXh0LCB4MSwgeTEpOw0KKyAgICBDR0NvbnRleHRBZGRMaW5lVG9Qb2ludChfY29udGV4dCwgeDIsIHkyKTsNCisgICAgQ0dDb250ZXh0U3Ryb2tlUGF0aChfY29udGV4dCk7DQorICAgIGlmIChtb2RlICE9IGtDR0JsZW5kTW9kZU5vcm1hbCkgew0KKyAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKF9jb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9RdWFydHpEZXZpY2VEcml2ZXI6OkdldENsaXBCb3goRlhfUkVDVCogcmVjdCkNCit7DQorICAgIENHUmVjdCByID0gQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KF9jb250ZXh0KTsNCisgICAgciA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKHIsIF91c2VyMkZveGl0RGV2aWNlKTsNCisgICAgcmVjdC0+bGVmdAkJPSBGWFNZU19mbG9vcihyLm9yaWdpbi54KTsNCisgICAgcmVjdC0+dG9wCQk9IEZYU1lTX2Zsb29yKHIub3JpZ2luLnkpOw0KKyAgICByZWN0LT5yaWdodAkJPSBGWFNZU19jZWlsKHIub3JpZ2luLnggKyByLnNpemUud2lkdGgpOw0KKyAgICByZWN0LT5ib3R0b20JPSBGWFNZU19jZWlsKHIub3JpZ2luLnkgKyByLnNpemUuaGVpZ2h0KTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1F1YXJ0ekRldmljZURyaXZlcjo6R2V0RElCaXRzKENGWF9ESUJpdG1hcCogICAgIGJpdG1hcCwNCisgICAgICAgIEZYX0lOVDMyICAgICAgICAgICAgbGVmdCwNCisgICAgICAgIEZYX0lOVDMyICAgICAgICAgICAgdG9wLA0KKyAgICAgICAgdm9pZCogcEljY1RyYW5zZm9ybSwNCisgICAgICAgIEZYX0JPT0wgYkRFZGdlKQ0KK3sNCisgICAgaWYgKEZYRENfUFJJTlRFUiA9PSBfZGV2aWNlQ2xhc3MpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoYml0bWFwLT5HZXRCUFAoKSA8IDMyKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKCEoX3JlbmRlckNhcHMgfCBGWFJDX0dFVF9CSVRTKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENHUG9pbnQgcHQgPSBDR1BvaW50TWFrZShsZWZ0LCB0b3ApOw0KKyAgICBwdCA9IENHUG9pbnRBcHBseUFmZmluZVRyYW5zZm9ybShwdCwgX2ZveGl0RGV2aWNlMlVzZXIpOw0KKyAgICBDR0FmZmluZVRyYW5zZm9ybSBjdG0gPSBDR0NvbnRleHRHZXRDVE0oX2NvbnRleHQpOw0KKyAgICBwdC54ICo9IEZYU1lTX2ZhYnMoY3RtLmEpOw0KKyAgICBwdC55ICo9IEZYU1lTX2ZhYnMoY3RtLmQpOw0KKyAgICBDR0ltYWdlUmVmIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoX2NvbnRleHQpOw0KKyAgICBpZiAoTlVMTCA9PSBpbWFnZSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENHRmxvYXQgd2lkdGgJPSAoQ0dGbG9hdCkgYml0bWFwLT5HZXRXaWR0aCgpOw0KKyAgICBDR0Zsb2F0IGhlaWdodAk9IChDR0Zsb2F0KSBiaXRtYXAtPkdldEhlaWdodCgpOw0KKyAgICBpZiAod2lkdGggKyBwdC54ID4gX3dpZHRoKSB7DQorICAgICAgICB3aWR0aCAtPSAod2lkdGggKyBwdC54IC0gX3dpZHRoKTsNCisgICAgfQ0KKyAgICBpZiAoaGVpZ2h0ICsgcHQueSA+IF9oZWlnaHQpIHsNCisgICAgICAgIGhlaWdodCAtPSAoaGVpZ2h0ICsgcHQueSAtIF9oZWlnaHQpOw0KKyAgICB9DQorICAgIENHSW1hZ2VSZWYgc3ViSW1hZ2UgPSBDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dSZWN0TWFrZShwdC54LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdC55LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KSk7DQorICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gY3JlYXRlQ29udGV4dFdpdGhCaXRtYXAoYml0bWFwKTsNCisgICAgQ0dSZWN0IHJlY3QgPSBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7DQorICAgIENHQ29udGV4dENsZWFyUmVjdChjb250ZXh0LCByZWN0KTsNCisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIHJlY3QsIHN1YkltYWdlKTsNCisgICAgQ0dDb250ZXh0UmVsZWFzZShjb250ZXh0KTsNCisgICAgQ0dJbWFnZVJlbGVhc2Uoc3ViSW1hZ2UpOw0KKyAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7DQorICAgIGlmIChiaXRtYXAtPkhhc0FscGhhKCkpIHsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGJpdG1hcC0+R2V0SGVpZ2h0KCk7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBwU2NhbmxpbmUgPSAoRlhfTFBCWVRFKWJpdG1hcC0+R2V0U2NhbmxpbmUocm93KTsNCisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBiaXRtYXAtPkdldFdpZHRoKCk7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBpZiAocFNjYW5saW5lWzNdID4gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgcFNjYW5saW5lWzBdID0gKHBTY2FubGluZVswXSAqIDI1NS5mIC8gcFNjYW5saW5lWzNdICsgLjVmKTsNCisgICAgICAgICAgICAgICAgICAgIHBTY2FubGluZVsxXSA9IChwU2NhbmxpbmVbMV0gKiAyNTUuZiAvIHBTY2FubGluZVszXSArIC41Zik7DQorICAgICAgICAgICAgICAgICAgICBwU2NhbmxpbmVbMl0gPSAocFNjYW5saW5lWzJdICogMjU1LmYgLyBwU2NhbmxpbmVbM10gKyAuNWYpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBTY2FubGluZSArPSA0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpTZXRESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogICAgICBwQml0bWFwLA0KKyAgICAgICAgRlhfQVJHQiAgICAgICAgICAgICAgICAgICAgIGFyZ2IsDQorICAgICAgICBjb25zdCBGWF9SRUNUKiAgICAgICAgICAgICAgc3JjUmVjdCwNCisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2xlZnQsDQorICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF90b3AsDQorICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRUeXBlLA0KKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhRmxhZyAgICAgICAsDQorICAgICAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgaWNjVHJhbnNmb3JtICAgICkNCit7DQorICAgIFNhdmVTdGF0ZSgpOw0KKyAgICBDR0Zsb2F0IHNyY19sZWZ0LCBzcmNfdG9wLCBzcmNfd2lkdGgsIHNyY19oZWlnaHQ7DQorICAgIGlmIChzcmNSZWN0KSB7DQorICAgICAgICBzcmNfbGVmdCA9IHNyY1JlY3QtPmxlZnQ7DQorICAgICAgICBzcmNfdG9wID0gc3JjUmVjdC0+dG9wOw0KKyAgICAgICAgc3JjX3dpZHRoID0gc3JjUmVjdC0+V2lkdGgoKTsNCisgICAgICAgIHNyY19oZWlnaHQgPSBzcmNSZWN0LT5IZWlnaHQoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHNyY19sZWZ0ID0gc3JjX3RvcCA9IDA7DQorICAgICAgICBzcmNfd2lkdGggPSBwQml0bWFwLT5HZXRXaWR0aCgpOw0KKyAgICAgICAgc3JjX2hlaWdodCA9IHBCaXRtYXAtPkdldEhlaWdodCgpOw0KKyAgICB9DQorICAgIENHQWZmaW5lVHJhbnNmb3JtIGN0bSA9IENHQ29udGV4dEdldENUTShfY29udGV4dCk7DQorICAgIENHRmxvYXQgc2NhbGVfeCA9IEZYU1lTX2ZhYnMoY3RtLmEpOw0KKyAgICBDR0Zsb2F0IHNjYWxlX3kgPSBGWFNZU19mYWJzKGN0bS5kKTsNCisgICAgc3JjX2xlZnQgLz0gc2NhbGVfeDsNCisgICAgc3JjX3RvcCAvPSBzY2FsZV95Ow0KKyAgICBzcmNfd2lkdGggLz0gc2NhbGVfeDsNCisgICAgc3JjX2hlaWdodCAvPSBzY2FsZV95Ow0KKyAgICBDR1JlY3QgcmVjdF9meCA9IENHUmVjdE1ha2UoZGVzdF9sZWZ0LCBkZXN0X3RvcCwgc3JjX3dpZHRoLCBzcmNfaGVpZ2h0KTsNCisgICAgQ0dSZWN0IHJlY3RfdXNyID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0ocmVjdF9meCwgX2ZveGl0RGV2aWNlMlVzZXIpOw0KKyAgICBDR0NvbnRleHRCZWdpblBhdGgoX2NvbnRleHQpOw0KKyAgICBDR0NvbnRleHRBZGRSZWN0KF9jb250ZXh0LCByZWN0X3Vzcik7DQorICAgIENHQ29udGV4dENsaXAoX2NvbnRleHQpOw0KKyAgICByZWN0X3Vzci5zaXplID0gQ0dTaXplTWFrZShwQml0bWFwLT5HZXRXaWR0aCgpIC8gc2NhbGVfeCwgcEJpdG1hcC0+R2V0SGVpZ2h0KCkgLyBzY2FsZV95KTsNCisgICAgcmVjdF91c3IgPSBDR1JlY3RPZmZzZXQocmVjdF91c3IsIC1zcmNfbGVmdCwgLXNyY190b3ApOw0KKyAgICBDR19TZXRJbWFnZVRyYW5zZm9ybShkZXN0X2xlZnQsIGRlc3RfdG9wLCBzcmNfd2lkdGgsIHNyY19oZWlnaHQsICZyZWN0X3Vzcik7DQorICAgIENGWF9ESUJpdG1hcCogcEJpdG1hcDEgPSBOVUxMOw0KKyAgICBpZiAocEJpdG1hcC0+SXNBbHBoYU1hc2soKSkgew0KKyAgICAgICAgaWYgKHBCaXRtYXAtPkdldEJ1ZmZlcigpKSB7DQorICAgICAgICAgICAgcEJpdG1hcDEgPSAoQ0ZYX0RJQml0bWFwKilwQml0bWFwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwQml0bWFwMSA9IHBCaXRtYXAtPkNsb25lKCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoTlVMTCA9PSBwQml0bWFwMSkgew0KKyAgICAgICAgICAgIFJlc3RvcmVTdGF0ZShGQUxTRSk7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0dEYXRhUHJvdmlkZXJSZWYgcEJpdG1hcFByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShOVUxMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJpdG1hcDEtPkdldEJ1ZmZlcigpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJpdG1hcDEtPkdldFBpdGNoKCkgKiBwQml0bWFwMS0+R2V0SGVpZ2h0KCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCisgICAgICAgIENHQ29sb3JTcGFjZVJlZiBwQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKTsNCisgICAgICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYU5vbmUgfCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0Ow0KKyAgICAgICAgQ0dJbWFnZVJlZiBwSW1hZ2UgPSBDR0ltYWdlQ3JlYXRlKHBCaXRtYXAxLT5HZXRXaWR0aCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCaXRtYXAxLT5HZXRIZWlnaHQoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQml0bWFwMS0+R2V0QlBQKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJpdG1hcDEtPkdldEJQUCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCaXRtYXAxLT5HZXRQaXRjaCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDb2xvclNwYWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcEluZm8sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJpdG1hcFByb3ZpZGVyLCBOVUxMLCB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOw0KKyAgICAgICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhfY29udGV4dCwgcmVjdF91c3IsIHBJbWFnZSk7DQorICAgICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoX2NvbnRleHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhBUkdCX1IoYXJnYikgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWEFSR0JfRyhhcmdiKSAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYQVJHQl9CKGFyZ2IpIC8gMjU1LmYsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhBUkdCX0EoYXJnYikgLyAyNTUuZik7DQorICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChfY29udGV4dCwgcmVjdF91c3IpOw0KKyAgICAgICAgQ0dJbWFnZVJlbGVhc2UocEltYWdlKTsNCisgICAgICAgIENHQ29sb3JTcGFjZVJlbGVhc2UocENvbG9yU3BhY2UpOw0KKyAgICAgICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKHBCaXRtYXBQcm92aWRlcik7DQorICAgICAgICBpZiAocEJpdG1hcDEgIT0gcEJpdG1hcCkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwQml0bWFwMTsNCisgICAgICAgIH0NCisgICAgICAgIFJlc3RvcmVTdGF0ZShGQUxTRSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAocEJpdG1hcC0+R2V0QlBQKCkgPCAzMikgew0KKyAgICAgICAgcEJpdG1hcDEgPSBwQml0bWFwLT5DbG9uZUNvbnZlcnQoRlhESUJfUmdiMzIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKHBCaXRtYXAtPkdldEJ1ZmZlcigpKSB7DQorICAgICAgICAgICAgcEJpdG1hcDEgPSAoQ0ZYX0RJQml0bWFwKilwQml0bWFwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwQml0bWFwMSA9IHBCaXRtYXAtPkNsb25lKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKE5VTEwgPT0gcEJpdG1hcDEpIHsNCisgICAgICAgIFJlc3RvcmVTdGF0ZShGQUxTRSk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHBCaXRtYXAxLT5IYXNBbHBoYSgpKSB7DQorICAgICAgICBpZiAocEJpdG1hcDEgPT0gcEJpdG1hcCkgew0KKyAgICAgICAgICAgIHBCaXRtYXAxID0gcEJpdG1hcC0+Q2xvbmUoKTsNCisgICAgICAgICAgICBpZiAoIXBCaXRtYXAxKSB7DQorICAgICAgICAgICAgICAgIFJlc3RvcmVTdGF0ZShGQUxTRSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBwQml0bWFwMS0+R2V0SGVpZ2h0KCk7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBwU2NhbmxpbmUgPSAoRlhfTFBCWVRFKXBCaXRtYXAxLT5HZXRTY2FubGluZShyb3cpOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBCaXRtYXAxLT5HZXRXaWR0aCgpOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgcFNjYW5saW5lWzBdID0gKEZYX0JZVEUpKHBTY2FubGluZVswXSAqIHBTY2FubGluZVszXSAvIDI1NS5mICsgLjVmKTsNCisgICAgICAgICAgICAgICAgcFNjYW5saW5lWzFdID0gKEZYX0JZVEUpKHBTY2FubGluZVsxXSAqIHBTY2FubGluZVszXSAvIDI1NS5mICsgLjVmKTsNCisgICAgICAgICAgICAgICAgcFNjYW5saW5lWzJdID0gKEZYX0JZVEUpKHBTY2FubGluZVsyXSAqIHBTY2FubGluZVszXSAvIDI1NS5mICsgLjVmKTsNCisgICAgICAgICAgICAgICAgcFNjYW5saW5lICs9IDQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENHQ29udGV4dFJlZiBjdHggPSBjcmVhdGVDb250ZXh0V2l0aEJpdG1hcChwQml0bWFwMSk7DQorICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjdHgpOw0KKyAgICBpbnQgYmxlbmRfbW9kZSA9IGJsZW5kVHlwZTsNCisgICAgaWYgKEZYRElCX0JMRU5EX0hBUkRMSUdIVCA9PSBibGVuZFR5cGUpIHsNCisgICAgICAgIGJsZW5kX21vZGUgPSBrQ0dCbGVuZE1vZGVTb2Z0TGlnaHQ7DQorICAgIH0gZWxzZSBpZiAoRlhESUJfQkxFTkRfU09GVExJR0hUID09IGJsZW5kVHlwZSkgew0KKyAgICAgICAgYmxlbmRfbW9kZSA9IGtDR0JsZW5kTW9kZUhhcmRMaWdodDsNCisgICAgfSBlbHNlIGlmIChibGVuZFR5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFICYmIGJsZW5kVHlwZSA8PSBGWERJQl9CTEVORF9MVU1JTk9TSVRZKSB7DQorICAgICAgICBibGVuZF9tb2RlID0gYmxlbmRUeXBlIC0gOTsNCisgICAgfSBlbHNlIGlmIChibGVuZFR5cGUgPiBGWERJQl9CTEVORF9MVU1JTk9TSVRZIHx8IGJsZW5kVHlwZSA8IDApIHsNCisgICAgICAgIGJsZW5kX21vZGUgPSBrQ0dCbGVuZE1vZGVOb3JtYWw7DQorICAgIH0NCisgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKF9jb250ZXh0LCAoQ0dCbGVuZE1vZGUpYmxlbmRfbW9kZSk7DQorICAgIENHQ29udGV4dERyYXdJbWFnZShfY29udGV4dCwgcmVjdF91c3IsIGltYWdlKTsNCisgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOw0KKyAgICBDR0NvbnRleHRSZWxlYXNlKGN0eCk7DQorICAgIGlmIChwQml0bWFwMSAhPSBwQml0bWFwKSB7DQorICAgICAgICBkZWxldGUgcEJpdG1hcDE7DQorICAgIH0NCisgICAgUmVzdG9yZVN0YXRlKEZBTFNFKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1F1YXJ0ekRldmljZURyaXZlcjo6U3RyZXRjaERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiAgICAgIHBCaXRtYXAsDQorICAgICAgICBGWF9BUkdCICAgICAgICAgICAgICAgICAgICAgYXJnYiwNCisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2xlZnQsDQorICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF90b3AsDQorICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF93aWR0aCwNCisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2hlaWdodCwNCisgICAgICAgIGNvbnN0IEZYX1JFQ1QqICAgICAgICAgICAgICBjbGlwUmVjdCwNCisgICAgICAgIEZYX0RXT1JEICAgICAgICAgICAgICAgICAgICBmbGFncywNCisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYUZsYWcJICAgLA0KKyAgICAgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgIGljY1RyYW5zZm9ybSAsDQorICAgICAgICBpbnQJCQkJCQkJYmxlbmRfdHlwZSkNCit7DQorICAgIFNhdmVTdGF0ZSgpOw0KKyAgICBpZiAoY2xpcFJlY3QpIHsNCisgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChfY29udGV4dCk7DQorICAgICAgICBDR1JlY3QgcmVjdF9jbGlwID0gQ0dSZWN0TWFrZShjbGlwUmVjdC0+bGVmdCwgY2xpcFJlY3QtPnRvcCwgY2xpcFJlY3QtPldpZHRoKCksIGNsaXBSZWN0LT5IZWlnaHQoKSk7DQorICAgICAgICByZWN0X2NsaXAgPSBDR1JlY3RBcHBseUFmZmluZVRyYW5zZm9ybShyZWN0X2NsaXAsIF9mb3hpdERldmljZTJVc2VyKTsNCisgICAgICAgIENHQ29udGV4dEFkZFJlY3QoX2NvbnRleHQsIHJlY3RfY2xpcCk7DQorICAgICAgICBDR0NvbnRleHRDbGlwKF9jb250ZXh0KTsNCisgICAgfQ0KKyAgICBDR1JlY3QgcmVjdCA9IENHUmVjdE1ha2UoZGVzdF9sZWZ0LCBkZXN0X3RvcCwgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQpOw0KKyAgICByZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0ocmVjdCwgX2ZveGl0RGV2aWNlMlVzZXIpOw0KKyAgICBpZiAoRlhESUJfQklDVUJJQ19JTlRFUlBPTCA9PSBmbGFncykgew0KKyAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoX2NvbnRleHQsIGtDR0ludGVycG9sYXRpb25IaWdoKTsNCisgICAgfSBlbHNlIGlmIChGWERJQl9ET1dOU0FNUExFID09IGZsYWdzKSB7DQorICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShfY29udGV4dCwga0NHSW50ZXJwb2xhdGlvbk5vbmUpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoX2NvbnRleHQsIGtDR0ludGVycG9sYXRpb25NZWRpdW0pOw0KKyAgICB9DQorICAgIENHX1NldEltYWdlVHJhbnNmb3JtKGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0KTsNCisgICAgQ0ZYX0RJQml0bWFwKiBwQml0bWFwMSA9IE5VTEw7DQorICAgIGlmIChwQml0bWFwLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICBpZiAocEJpdG1hcC0+R2V0QnVmZmVyKCkpIHsNCisgICAgICAgICAgICBwQml0bWFwMSA9IChDRlhfRElCaXRtYXAqKXBCaXRtYXA7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBCaXRtYXAxID0gcEJpdG1hcC0+Q2xvbmUoKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChOVUxMID09IHBCaXRtYXAxKSB7DQorICAgICAgICAgICAgUmVzdG9yZVN0YXRlKEZBTFNFKTsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBDR0RhdGFQcm92aWRlclJlZiBwQml0bWFwUHJvdmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKE5VTEwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQml0bWFwMS0+R2V0QnVmZmVyKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQml0bWFwMS0+R2V0UGl0Y2goKSAqIHBCaXRtYXAxLT5HZXRIZWlnaHQoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KKyAgICAgICAgQ0dDb2xvclNwYWNlUmVmIHBDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOw0KKyAgICAgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dJbWFnZUFscGhhTm9uZSB8IGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQ7DQorICAgICAgICBDR0ltYWdlUmVmIHBJbWFnZSA9IENHSW1hZ2VDcmVhdGUocEJpdG1hcDEtPkdldFdpZHRoKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJpdG1hcDEtPkdldEhlaWdodCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCaXRtYXAxLT5HZXRCUFAoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQml0bWFwMS0+R2V0QlBQKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJpdG1hcDEtPkdldFBpdGNoKCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcENvbG9yU3BhY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwSW5mbywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQml0bWFwUHJvdmlkZXIsIE5VTEwsIHRydWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7DQorICAgICAgICBDR0NvbnRleHRDbGlwVG9NYXNrKF9jb250ZXh0LCByZWN0LCBwSW1hZ2UpOw0KKyAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKF9jb250ZXh0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYQVJHQl9SKGFyZ2IpIC8gMjU1LmYsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhBUkdCX0coYXJnYikgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWEFSR0JfQihhcmdiKSAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYQVJHQl9BKGFyZ2IpIC8gMjU1LmYpOw0KKyAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoX2NvbnRleHQsIHJlY3QpOw0KKyAgICAgICAgQ0dJbWFnZVJlbGVhc2UocEltYWdlKTsNCisgICAgICAgIENHQ29sb3JTcGFjZVJlbGVhc2UocENvbG9yU3BhY2UpOw0KKyAgICAgICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKHBCaXRtYXBQcm92aWRlcik7DQorICAgICAgICBpZiAocEJpdG1hcDEgIT0gcEJpdG1hcCkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwQml0bWFwMTsNCisgICAgICAgIH0NCisgICAgICAgIFJlc3RvcmVTdGF0ZShGQUxTRSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAocEJpdG1hcC0+R2V0QlBQKCkgPCAzMikgew0KKyAgICAgICAgcEJpdG1hcDEgPSBwQml0bWFwLT5DbG9uZUNvbnZlcnQoRlhESUJfUmdiMzIpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKHBCaXRtYXAtPkdldEJ1ZmZlcigpKSB7DQorICAgICAgICAgICAgcEJpdG1hcDEgPSAoQ0ZYX0RJQml0bWFwKilwQml0bWFwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwQml0bWFwMSA9IHBCaXRtYXAtPkNsb25lKCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKE5VTEwgPT0gcEJpdG1hcDEpIHsNCisgICAgICAgIFJlc3RvcmVTdGF0ZShGQUxTRSk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHBCaXRtYXAxLT5IYXNBbHBoYSgpKSB7DQorICAgICAgICBpZiAocEJpdG1hcDEgPT0gcEJpdG1hcCkgew0KKyAgICAgICAgICAgIHBCaXRtYXAxID0gcEJpdG1hcC0+Q2xvbmUoKTsNCisgICAgICAgICAgICBpZiAoIXBCaXRtYXAxKSB7DQorICAgICAgICAgICAgICAgIFJlc3RvcmVTdGF0ZShGQUxTRSk7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBwQml0bWFwMS0+R2V0SGVpZ2h0KCk7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBwU2NhbmxpbmUgPSAoRlhfTFBCWVRFKXBCaXRtYXAxLT5HZXRTY2FubGluZShyb3cpOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBCaXRtYXAxLT5HZXRXaWR0aCgpOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgcFNjYW5saW5lWzBdID0gKEZYX0JZVEUpKHBTY2FubGluZVswXSAqIHBTY2FubGluZVszXSAvIDI1NS5mICsgLjVmKTsNCisgICAgICAgICAgICAgICAgcFNjYW5saW5lWzFdID0gKEZYX0JZVEUpKHBTY2FubGluZVsxXSAqIHBTY2FubGluZVszXSAvIDI1NS5mICsgLjVmKTsNCisgICAgICAgICAgICAgICAgcFNjYW5saW5lWzJdID0gKEZYX0JZVEUpKHBTY2FubGluZVsyXSAqIHBTY2FubGluZVszXSAvIDI1NS5mICsgLjVmKTsNCisgICAgICAgICAgICAgICAgcFNjYW5saW5lICs9IDQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENHQ29udGV4dFJlZiBjdHggPSBjcmVhdGVDb250ZXh0V2l0aEJpdG1hcChwQml0bWFwMSk7DQorICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjdHgpOw0KKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoX2NvbnRleHQsIHJlY3QsIGltYWdlKTsNCisgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOw0KKyAgICBDR0NvbnRleHRSZWxlYXNlKGN0eCk7DQorICAgIGlmIChwQml0bWFwMSAhPSBwQml0bWFwKSB7DQorICAgICAgICBkZWxldGUgcEJpdG1hcDE7DQorICAgIH0NCisgICAgUmVzdG9yZVN0YXRlKEZBTFNFKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1F1YXJ0ekRldmljZURyaXZlcjo6Q0dfRHJhd0dseXBSdW4oaW50ICAgICAgICAgICAgICAgICAgICAgICAgbkNoYXJzLA0KKyAgICAgICAgY29uc3QgRlhURVhUX0NIQVJQT1MqICAgICAgcENoYXJQb3MsDQorICAgICAgICBDRlhfRm9udCogICAgICAgICAgICAgICAgICBwRm9udCwNCisgICAgICAgIENGWF9Gb250Q2FjaGUqICAgICAgICAgICAgIHBDYWNoZSwNCisgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqICAgIHBHbHlwaE1hdHJpeCwNCisgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqICAgIHBPYmplY3QyRGV2aWNlLA0KKyAgICAgICAgRlhfRkxPQVQgICAgICAgICAgICAgICAgICAgZm9udF9zaXplLA0KKyAgICAgICAgRlhfRFdPUkQgICAgICAgICAgICAgICAgICAgYXJnYiwNCisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX2ZsYWcsDQorICAgICAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgaWYgKG5DaGFycyA9PSAwKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBDUXVhcnR6MkQmIHF1YXJ0ejJkID0gKChDQXBwbGVQbGF0Zm9ybSAqKSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKSktPl9xdWFydHoyZDsNCisgICAgaWYgKCFwRm9udC0+bV9wUGxhdGZvcm1Gb250KSB7DQorICAgICAgICBpZiAocEZvbnQtPkdldFBzTmFtZSgpID09IENGWF9XaWRlU3RyaW5nOjpGcm9tTG9jYWwoIkRGSGVpU3RkLVc1IikpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBwRm9udC0+bV9wUGxhdGZvcm1Gb250ID0gcXVhcnR6MmQuQ3JlYXRlRm9udChwRm9udC0+bV9wRm9udERhdGEsIHBGb250LT5tX2R3U2l6ZSk7DQorICAgICAgICBpZiAoTlVMTCA9PSBwRm9udC0+bV9wUGxhdGZvcm1Gb250KSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENGWF9GaXhlZEJ1Zkdyb3c8RlhfV09SRCwgMzI+IGdseXBoX2luZGljZXMobkNoYXJzKTsNCisgICAgQ0ZYX0ZpeGVkQnVmR3JvdzxDR1BvaW50LCAzMj4gZ2x5cGhfcG9zaXRpb25zKG5DaGFycyk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkNoYXJzOyBpKysgKSB7DQorICAgICAgICBnbHlwaF9pbmRpY2VzW2ldID0gcENoYXJQb3NbaV0ubV9FeHRHSUQ7DQorICAgICAgICBnbHlwaF9wb3NpdGlvbnNbaV0ueCA9IHBDaGFyUG9zW2ldLm1fT3JpZ2luWDsNCisgICAgICAgIGdseXBoX3Bvc2l0aW9uc1tpXS55ID0gcENoYXJQb3NbaV0ubV9PcmlnaW5ZOw0KKyAgICB9DQorICAgIENGWF9BZmZpbmVNYXRyaXggdGV4dF9tYXRyaXg7DQorICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgdGV4dF9tYXRyaXguQ29uY2F0KCpwT2JqZWN0MkRldmljZSk7DQorICAgIH0NCisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbWF0cml4X2NnID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKHRleHRfbWF0cml4LmEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfbWF0cml4LmIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfbWF0cml4LmMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfbWF0cml4LmQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfbWF0cml4LmUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfbWF0cml4LmYpOw0KKyAgICBtYXRyaXhfY2cgPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChtYXRyaXhfY2csIF9mb3hpdERldmljZTJVc2VyKTsNCisgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChfY29udGV4dCwgbWF0cml4X2NnKTsNCisgICAgQ0dDb250ZXh0U2V0Rm9udChfY29udGV4dCwgKENHRm9udFJlZilwRm9udC0+bV9wUGxhdGZvcm1Gb250KTsNCisgICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoX2NvbnRleHQsIEZYU1lTX2ZhYnMoZm9udF9zaXplKSk7DQorICAgIEZYX0lOVDMyIGEsIHIsIGcsIGI7DQorICAgIEFyZ2JEZWNvZGUoYXJnYiwgYSwgciwgZywgYik7DQorICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihfY29udGV4dCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgLyAyNTUuZik7DQorICAgIFNhdmVTdGF0ZSgpOw0KKyAgICBpZiAocEdseXBoTWF0cml4KSB7DQorICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBjdG0gPSBDR0NvbnRleHRHZXRDVE0oX2NvbnRleHQpOw0KKyAgICAgICAgQ0dQb2ludCBvcmlnaW4gPSBDR1BvaW50TWFrZSggZ2x5cGhfcG9zaXRpb25zWzBdLngsICBnbHlwaF9wb3NpdGlvbnNbMF0ueSk7DQorICAgICAgICBvcmlnaW4gPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0ob3JpZ2luLCBtYXRyaXhfY2cpOw0KKyAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKF9jb250ZXh0LCBvcmlnaW4ueCwgb3JpZ2luLnkpOw0KKyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2x5cGhfbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKHBHbHlwaE1hdHJpeC0+YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBHbHlwaE1hdHJpeC0+YiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBHbHlwaE1hdHJpeC0+YywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBHbHlwaE1hdHJpeC0+ZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBHbHlwaE1hdHJpeC0+ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBHbHlwaE1hdHJpeC0+Zik7DQorICAgICAgICBpZiAoX2ZveGl0RGV2aWNlMlVzZXIuZCA8IDApIHsNCisgICAgICAgICAgICBnbHlwaF9tYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUludmVydChnbHlwaF9tYXRyaXgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKF9jb250ZXh0LCBnbHlwaF9tYXRyaXgpOw0KKyAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKF9jb250ZXh0LCAtb3JpZ2luLngsIC1vcmlnaW4ueSk7DQorICAgIH0NCisgICAgQ0dDb250ZXh0U2hvd0dseXBoc0F0UG9zaXRpb25zKF9jb250ZXh0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENHR2x5cGgqKWdseXBoX2luZGljZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9wb3NpdGlvbnMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuQ2hhcnMpOw0KKyAgICBSZXN0b3JlU3RhdGUoRkFMU0UpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpEcmF3RGV2aWNlVGV4dChpbnQgICAgICAgICAgICAgICAgICAgICAgbkNoYXJzLA0KKyAgICAgICAgY29uc3QgRlhURVhUX0NIQVJQT1MqICAgIHBDaGFyUG9zLA0KKyAgICAgICAgQ0ZYX0ZvbnQqICAgICAgICAgICAgICAgIHBGb250LA0KKyAgICAgICAgQ0ZYX0ZvbnRDYWNoZSogICAgICAgICAgIHBDYWNoZSwNCisgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqICBwT2JqZWN0MkRldmljZSwNCisgICAgICAgIEZYX0ZMT0FUICAgICAgICAgICAgICAgICBmb250X3NpemUsDQorICAgICAgICBGWF9EV09SRCAgICAgICAgICAgICAgICAgY29sb3IsDQorICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfZmxhZyAgICAgICAsDQorICAgICAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgcEljY1RyYW5zZm9ybSkNCit7DQorICAgIGlmIChOVUxMID09IHBGb250IHx8IE5VTEwgPT0gX2NvbnRleHQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJCb2xkID0gcEZvbnQtPklzQm9sZCgpOw0KKyAgICBpZiAoIWJCb2xkICYmIHBGb250LT5HZXRTdWJzdEZvbnQoKSAmJg0KKyAgICAgICAgICAgIHBGb250LT5HZXRTdWJzdEZvbnQoKS0+bV9XZWlnaHQgPj0gNTAwICYmDQorICAgICAgICAgICAgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX1dlaWdodCA8PSA2MDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBTYXZlU3RhdGUoKTsNCisgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKF9jb250ZXh0LCBrQ0dUZXh0RmlsbENsaXApOw0KKyAgICBGWF9CT09MIHJldCA9IEZBTFNFOw0KKyAgICBGWF9JTlQzMiBpID0gMDsNCisgICAgd2hpbGUgKGkgPCBuQ2hhcnMpIHsNCisgICAgICAgIGlmIChwQ2hhclBvc1tpXS5tX2JHbHlwaEFkanVzdCB8fCBmb250X3NpemUgPCAwKSB7DQorICAgICAgICAgICAgaWYgKGkgPiAwKSB7DQorICAgICAgICAgICAgICAgIHJldCA9IENHX0RyYXdHbHlwUnVuKGksIHBDaGFyUG9zLCBwRm9udCwgcENhY2hlLCBOVUxMLCBwT2JqZWN0MkRldmljZSwgZm9udF9zaXplLCBjb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIGlmICghcmV0KSB7DQorICAgICAgICAgICAgICAgICAgICBSZXN0b3JlU3RhdGUoRkFMU0UpOw0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjb25zdCBGWFRFWFRfQ0hBUlBPUyogY2hhcl9wb3MgPSBwQ2hhclBvcyArIGk7DQorICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBnbHBoeV9tYXRyaXg7DQorICAgICAgICAgICAgaWYgKGZvbnRfc2l6ZSA8IDApIHsNCisgICAgICAgICAgICAgICAgZ2xwaHlfbWF0cml4LkNvbmNhdCgtMSwgMCwgMCwgLTEsIDAsIDApOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoY2hhcl9wb3MtPm1fYkdseXBoQWRqdXN0KSB7DQorICAgICAgICAgICAgICAgIGdscGh5X21hdHJpeC5Db25jYXQoY2hhcl9wb3MtPm1fQWRqdXN0TWF0cml4WzBdLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfcG9zLT5tX0FkanVzdE1hdHJpeFsxXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3Bvcy0+bV9BZGp1c3RNYXRyaXhbMl0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl9wb3MtPm1fQWRqdXN0TWF0cml4WzNdLCAwLCAwKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0ID0gQ0dfRHJhd0dseXBSdW4oMSwgY2hhcl9wb3MsIHBGb250LCBwQ2FjaGUsICZnbHBoeV9tYXRyaXgsIHBPYmplY3QyRGV2aWNlLCBmb250X3NpemUsIGNvbG9yLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICBpZiAoIXJldCkgew0KKyAgICAgICAgICAgICAgICBSZXN0b3JlU3RhdGUoRkFMU0UpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpICsrOw0KKyAgICAgICAgICAgIHBDaGFyUG9zICs9IGk7DQorICAgICAgICAgICAgbkNoYXJzIC09IGk7DQorICAgICAgICAgICAgaSA9IDA7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGkgKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGkgPiAwKSB7DQorICAgICAgICByZXQgPSBDR19EcmF3R2x5cFJ1bihpLCBwQ2hhclBvcywgcEZvbnQsIHBDYWNoZSwgTlVMTCwgcE9iamVjdDJEZXZpY2UsIGZvbnRfc2l6ZSwgY29sb3IsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICB9DQorICAgIFJlc3RvcmVTdGF0ZShGQUxTRSk7DQorICAgIHJldHVybiByZXQ7DQorfQ0KK3ZvaWQgQ0ZYX1F1YXJ0ekRldmljZURyaXZlcjo6c2V0U3Ryb2tlSW5mbyhjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIGdyYXBoU3RhdGUsIEZYX0FSR0IgYXJnYiwgRlhfRkxPQVQgbGluZVdpZHRoKQ0KK3sNCisgICAgaWYgKE5VTEwgPT0gZ3JhcGhTdGF0ZSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENHQ29udGV4dFNldExpbmVXaWR0aChfY29udGV4dCwgbGluZVdpZHRoKTsNCisgICAgQ0dMaW5lQ2FwIGNhcDsNCisgICAgc3dpdGNoIChncmFwaFN0YXRlLT5tX0xpbmVDYXApIHsNCisgICAgICAgIGNhc2UgQ0ZYX0dyYXBoU3RhdGVEYXRhOjpMaW5lQ2FwUm91bmQ6IHsNCisgICAgICAgICAgICAgICAgY2FwID0ga0NHTGluZUNhcFJvdW5kOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUNhcFNxdWFyZTogew0KKyAgICAgICAgICAgICAgICBjYXAgPSBrQ0dMaW5lQ2FwU3F1YXJlOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUNhcEJ1dHQ6DQorICAgICAgICBkZWZhdWx0OiB7DQorICAgICAgICAgICAgICAgIGNhcCA9IGtDR0xpbmVDYXBCdXR0Ow0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICBDR0NvbnRleHRTZXRMaW5lQ2FwKF9jb250ZXh0LCBjYXApOw0KKyAgICBDR0xpbmVKb2luIGpvaW47DQorICAgIHN3aXRjaCAoZ3JhcGhTdGF0ZS0+bV9MaW5lSm9pbikgew0KKyAgICAgICAgY2FzZSBDRlhfR3JhcGhTdGF0ZURhdGE6OkxpbmVKb2luUm91bmQ6IHsNCisgICAgICAgICAgICAgICAgam9pbiA9IGtDR0xpbmVKb2luUm91bmQ7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgQ0ZYX0dyYXBoU3RhdGVEYXRhOjpMaW5lSm9pbkJldmVsOiB7DQorICAgICAgICAgICAgICAgIGpvaW4gPSBrQ0dMaW5lSm9pbkJldmVsOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUpvaW5NaXRlcjoNCisgICAgICAgIGRlZmF1bHQ6IHsNCisgICAgICAgICAgICAgICAgam9pbiA9IGtDR0xpbmVKb2luTWl0ZXI7DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorICAgIENHQ29udGV4dFNldExpbmVKb2luKF9jb250ZXh0LCBqb2luKTsNCisgICAgaWYgKGdyYXBoU3RhdGUtPm1fRGFzaENvdW50KSB7DQorI2lmIENHRkxPQVRfSVNfRE9VQkxFDQorICAgICAgICBDR0Zsb2F0KiBkYXNoQXJyYXkgPSBuZXcgQ0dGbG9hdFtncmFwaFN0YXRlLT5tX0Rhc2hDb3VudF07DQorICAgICAgICBpZiAoIWRhc2hBcnJheSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBncmFwaFN0YXRlLT5tX0Rhc2hDb3VudDsgKytpbmRleCkgew0KKyAgICAgICAgICAgIGRhc2hBcnJheVtpbmRleF0gPSBncmFwaFN0YXRlLT5tX0Rhc2hBcnJheVtpbmRleF07DQorICAgICAgICB9DQorI2Vsc2UNCisgICAgICAgIENHRmxvYXQqIGRhc2hBcnJheSA9IChDR0Zsb2F0KilncmFwaFN0YXRlLT5tX0Rhc2hBcnJheTsNCisjZW5kaWYNCisgICAgICAgIENHQ29udGV4dFNldExpbmVEYXNoKF9jb250ZXh0LCBncmFwaFN0YXRlLT5tX0Rhc2hQaGFzZSwgZGFzaEFycmF5LCBncmFwaFN0YXRlLT5tX0Rhc2hDb3VudCk7DQorI2lmIENHRkxPQVRfSVNfRE9VQkxFDQorICAgICAgICBkZWxldGVbXSBkYXNoQXJyYXk7DQorI2VuZGlmDQorICAgIH0NCisgICAgRlhfSU5UMzIgYSwgciwgZywgYjsNCisgICAgQXJnYkRlY29kZShhcmdiLCBhLCByLCBnLCBiKTsNCisgICAgQ0dDb250ZXh0U2V0UkdCU3Ryb2tlQ29sb3IoX2NvbnRleHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgLyAyNTUuZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIC8gMjU1LmYsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgLyAyNTUuZik7DQorfQ0KK3ZvaWQgQ0ZYX1F1YXJ0ekRldmljZURyaXZlcjo6c2V0RmlsbEluZm8oRlhfQVJHQiBhcmdiKQ0KK3sNCisgICAgRlhfSU5UMzIgYSwgciwgZywgYjsNCisgICAgQXJnYkRlY29kZShhcmdiLCBhLCByLCBnLCBiKTsNCisgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKF9jb250ZXh0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiAvIDI1NS5mLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAvIDI1NS5mKTsNCit9DQordm9pZCBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpzZXRQYXRoVG9Db250ZXh0KGNvbnN0IENGWF9QYXRoRGF0YSogcGF0aERhdGEpDQorew0KKyAgICBGWF9JTlQzMiBjb3VudCA9IHBhdGhEYXRhLT5HZXRQb2ludENvdW50KCk7DQorICAgIEZYX1BBVEhQT0lOVCogcG9pbnRzID0gcGF0aERhdGEtPkdldFBvaW50cygpOw0KKyAgICBDR0NvbnRleHRCZWdpblBhdGgoX2NvbnRleHQpOw0KKyAgICBmb3IgKEZYX0lOVDMyIGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsNCisgICAgICAgIHN3aXRjaCAocG9pbnRzW2ldLm1fRmxhZyAmIEZYUFRfVFlQRSkgew0KKyAgICAgICAgICAgIGNhc2UgRlhQVF9NT1ZFVE86DQorICAgICAgICAgICAgICAgIENHQ29udGV4dE1vdmVUb1BvaW50KF9jb250ZXh0LCBwb2ludHNbaV0ubV9Qb2ludFgsIHBvaW50c1tpXS5tX1BvaW50WSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhQVF9MSU5FVE86DQorICAgICAgICAgICAgICAgIENHQ29udGV4dEFkZExpbmVUb1BvaW50KF9jb250ZXh0LCBwb2ludHNbaV0ubV9Qb2ludFgsIHBvaW50c1tpXS5tX1BvaW50WSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgRlhQVF9CRVpJRVJUTzogew0KKyAgICAgICAgICAgICAgICAgICAgQ0dDb250ZXh0QWRkQ3VydmVUb1BvaW50KF9jb250ZXh0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1tpXS5tX1BvaW50WCwgcG9pbnRzW2ldLm1fUG9pbnRZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1tpICsgMV0ubV9Qb2ludFgsIHBvaW50c1tpICsgMV0ubV9Qb2ludFksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzW2kgKyAyXS5tX1BvaW50WCwgcG9pbnRzW2kgKyAyXS5tX1BvaW50WSk7DQorICAgICAgICAgICAgICAgICAgICBpICs9IDI7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChwb2ludHNbaV0ubV9GbGFnICYgRlhQVF9DTE9TRUZJR1VSRSkgew0KKyAgICAgICAgICAgIENHQ29udGV4dENsb3NlUGF0aChfY29udGV4dCk7DQorICAgICAgICB9DQorICAgIH0NCit9DQordm9pZCBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpDR19TZXRJbWFnZVRyYW5zZm9ybShpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsDQorICAgICAgICBDR1JlY3QqIHJlY3QgKQ0KK3sNCisgICAgaW50IGZsaXBfeSA9IF9mb3hpdERldmljZTJVc2VyLmQgKiBkZXN0X2hlaWdodCA8IDAgPyAxIDogLTE7DQorICAgIGludCBmbGlwX3ggPSBfZm94aXREZXZpY2UyVXNlci5hICogZGVzdF93aWR0aCA+IDAgPyAxIDogLTE7DQorICAgIGlmIChmbGlwX3kgPCAwIHx8IGZsaXBfeCA8IDApIHsNCisgICAgICAgIGlmIChkZXN0X2hlaWdodCA8IDApIHsNCisgICAgICAgICAgICBkZXN0X2hlaWdodCA9IC1kZXN0X2hlaWdodDsNCisgICAgICAgICAgICBkZXN0X3RvcCAtPSBkZXN0X2hlaWdodDsNCisgICAgICAgIH0NCisgICAgICAgIENHUmVjdCBydCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKENHUmVjdE1ha2UoZGVzdF9sZWZ0LCBkZXN0X3RvcCwgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQpLCBfZm94aXREZXZpY2UyVXNlcik7DQorICAgICAgICBDR0Zsb2F0IG9mZnNldF94ID0gKHJ0Lm9yaWdpbi54KSArIHJ0LnNpemUud2lkdGggLyAyLmYsDQorICAgICAgICAgICAgICAgIG9mZnNldF95ID0gKHJ0Lm9yaWdpbi55KSArIHJ0LnNpemUuaGVpZ2h0IC8gMi5mOw0KKyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsNCisgICAgICAgIHRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KHRyYW5zZm9ybSwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKDEsIDAsIDAsIDEsIC1vZmZzZXRfeCwgLW9mZnNldF95KSk7DQorICAgICAgICB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdCh0cmFuc2Zvcm0sIENHQWZmaW5lVHJhbnNmb3JtTWFrZShmbGlwX3gsIDAsIDAsIGZsaXBfeSwgMCwgMCkpOw0KKyAgICAgICAgdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQodHJhbnNmb3JtLCBDR0FmZmluZVRyYW5zZm9ybU1ha2UoMSwgMCwgMCwgMSwgb2Zmc2V0X3gsIG9mZnNldF95KSk7DQorICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oX2NvbnRleHQsIHRyYW5zZm9ybSk7DQorICAgICAgICBpZiAocmVjdCkgew0KKyAgICAgICAgICAgICpyZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oKnJlY3QsIHRyYW5zZm9ybSk7DQorICAgICAgICB9DQorICAgIH0NCit9DQordm9pZCBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyOjpDbGVhckRyaXZlcigpDQorew0KKyAgICBpZiAoTlVMTCA9PSBfY29udGV4dCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zYXZlQ291bnQ7ICsraSkgew0KKyAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShfY29udGV4dCk7DQorICAgIH0NCisgICAgbV9zYXZlQ291bnQgPSAwOw0KKyAgICBpZiAoX2NvbnRleHQpIHsNCisgICAgICAgIENHQ29udGV4dFJlbGVhc2UoX2NvbnRleHQpOw0KKyAgICB9DQorfQ0KK0NGWF9RdWFydHpEZXZpY2U6OkNGWF9RdWFydHpEZXZpY2UoKQ0KK3sNCisgICAgbV9iT3duZWRCaXRtYXAgPSBGQUxTRTsNCisgICAgbV9wQ29udGV4dCA9IE5VTEw7DQorfQ0KK0NGWF9RdWFydHpEZXZpY2U6On5DRlhfUXVhcnR6RGV2aWNlKCkNCit7DQorICAgIGlmIChtX3BDb250ZXh0KSB7DQorICAgICAgICBDR0NvbnRleHRSZWxlYXNlKG1fcENvbnRleHQpOw0KKyAgICB9DQorICAgIGlmIChHZXRCaXRtYXAoKSAmJiBtX2JPd25lZEJpdG1hcCkgew0KKyAgICAgICAgZGVsZXRlIEdldEJpdG1hcCgpOw0KKyAgICB9DQorfQ0KK0NHQ29udGV4dFJlZiBDRlhfUXVhcnR6RGV2aWNlOjpHZXRDb250ZXh0KCkNCit7DQorICAgIHJldHVybiBtX3BDb250ZXh0Ow0KK30NCitGWF9CT09MIENGWF9RdWFydHpEZXZpY2U6OkF0dGFjaChDR0NvbnRleHRSZWYgY29udGV4dCwgRlhfSU5UMzIgbkRldmljZUNsYXNzKQ0KK3sNCisgICAgaWYgKG1fcENvbnRleHQpIHsNCisgICAgICAgIENHQ29udGV4dFJlbGVhc2UobV9wQ29udGV4dCk7DQorICAgIH0NCisgICAgbV9wQ29udGV4dCA9IGNvbnRleHQ7DQorICAgIENHQ29udGV4dFJldGFpbihtX3BDb250ZXh0KTsNCisgICAgSUZYX1JlbmRlckRldmljZURyaXZlciogcERyaXZlciA9IEZYX05FVyBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyKG1fcENvbnRleHQsIG5EZXZpY2VDbGFzcyk7DQorICAgIGlmICghcERyaXZlcikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIFNldERldmljZURyaXZlcihwRHJpdmVyKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1F1YXJ0ekRldmljZTo6QXR0YWNoKENGWF9ESUJpdG1hcCogcEJpdG1hcCkNCit7DQorICAgIFNldEJpdG1hcChwQml0bWFwKTsNCisgICAgbV9wQ29udGV4dCA9IGNyZWF0ZUNvbnRleHRXaXRoQml0bWFwKHBCaXRtYXApOw0KKyAgICBpZiAoTlVMTCA9PSBtX3BDb250ZXh0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgSUZYX1JlbmRlckRldmljZURyaXZlciogcERyaXZlciA9IEZYX05FVyBDRlhfUXVhcnR6RGV2aWNlRHJpdmVyKG1fcENvbnRleHQsIEZYRENfRElTUExBWSk7DQorICAgIGlmICghcERyaXZlcikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIFNldERldmljZURyaXZlcihwRHJpdmVyKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1F1YXJ0ekRldmljZTo6Q3JlYXRlKEZYX0lOVDMyIHdpZHRoLCBGWF9JTlQzMiBoZWlnaHQsIEZYRElCX0Zvcm1hdCBmb3JtYXQpDQorew0KKyAgICBpZiAoKEZYX0JZVEUpZm9ybWF0IDwgMzIpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDRlhfRElCaXRtYXAqIHBCaXRtYXAgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBpZiAoIXBCaXRtYXApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoIXBCaXRtYXAtPkNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpKSB7DQorICAgICAgICBkZWxldGUgcEJpdG1hcDsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX2JPd25lZEJpdG1hcCA9IFRSVUU7DQorICAgIHJldHVybiBBdHRhY2gocEJpdG1hcCk7DQorfQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZGliL2RpYl9pbnQuaCBiL2NvcmUvc3JjL2Z4Z2UvZGliL2RpYl9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWQwYjAyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9kaWIvZGliX2ludC5oCkBAIC0wLDAgKzEsODggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK2NsYXNzIENQREZfRml4ZWRNYXRyaXggOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQREZfRml4ZWRNYXRyaXgoY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCYgc3JjLCBpbnQgYml0cykNCisgICAgew0KKyAgICAgICAgYmFzZSA9IDEgPDwgYml0czsNCisgICAgICAgIGEgPSBGWFNZU19yb3VuZChzcmMuYSAqIGJhc2UpOw0KKyAgICAgICAgYiA9IEZYU1lTX3JvdW5kKHNyYy5iICogYmFzZSk7DQorICAgICAgICBjID0gRlhTWVNfcm91bmQoc3JjLmMgKiBiYXNlKTsNCisgICAgICAgIGQgPSBGWFNZU19yb3VuZChzcmMuZCAqIGJhc2UpOw0KKyAgICAgICAgZSA9IEZYU1lTX3JvdW5kKHNyYy5lICogYmFzZSk7DQorICAgICAgICBmID0gRlhTWVNfcm91bmQoc3JjLmYgKiBiYXNlKTsNCisgICAgfQ0KKyAgICBpbmxpbmUgdm9pZAlUcmFuc2Zvcm0oaW50IHgsIGludCB5LCBpbnQmIHgxLCBpbnQmIHkxKQ0KKyAgICB7DQorICAgICAgICB4MSA9IChhICogeCArIGMgKiB5ICsgZSArIGJhc2UgLyAyKSAvIGJhc2U7DQorICAgICAgICB5MSA9IChiICogeCArIGQgKiB5ICsgZiArIGJhc2UgLyAyKSAvIGJhc2U7DQorICAgIH0NCisgICAgaW50CQlhLCBiLCBjLCBkLCBlLCBmOw0KKyAgICBpbnQJCWJhc2U7DQorfTsNCisjZGVmaW5lIEZQREZfSFVHRV9JTUFHRV9TSVpFCTYwMDAwMDAwDQorc3RydWN0IFBpeGVsV2VpZ2h0IHsNCisgICAgaW50CQltX1NyY1N0YXJ0Ow0KKyAgICBpbnQJCW1fU3JjRW5kOw0KKyAgICBpbnQJCW1fV2VpZ2h0c1sxXTsNCit9Ow0KK2NsYXNzIENXZWlnaHRUYWJsZSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgQ1dlaWdodFRhYmxlKCkNCisgICAgew0KKyAgICAgICAgbV9wV2VpZ2h0VGFibGVzID0gTlVMTDsNCisgICAgfQ0KKyAgICB+Q1dlaWdodFRhYmxlKCkNCisgICAgew0KKyAgICAgICAgaWYobV9wV2VpZ2h0VGFibGVzKSB7DQorICAgICAgICAgICAgRlhfRnJlZShtX3BXZWlnaHRUYWJsZXMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wV2VpZ2h0VGFibGVzID0gTlVMTDsNCisgICAgfQ0KKyAgICB2b2lkCQkJQ2FsYyhpbnQgZGVzdF9sZW4sIGludCBkZXN0X21pbiwgaW50IGRlc3RfbWF4LCBpbnQgc3JjX2xlbiwgaW50IHNyY19taW4sIGludCBzcmNfbWF4LCBpbnQgZmxhZ3MpOw0KKyAgICBQaXhlbFdlaWdodCoJR2V0UGl4ZWxXZWlnaHQoaW50IHBpeGVsKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gKFBpeGVsV2VpZ2h0KikobV9wV2VpZ2h0VGFibGVzICsgKHBpeGVsIC0gbV9EZXN0TWluKSAqIG1fSXRlbVNpemUpOw0KKyAgICB9DQorICAgIGludAkJCQltX0Rlc3RNaW4sIG1fSXRlbVNpemU7DQorICAgIEZYX0xQQllURQkJbV9wV2VpZ2h0VGFibGVzOw0KK307DQorY2xhc3MgQ1N0cmV0Y2hFbmdpbmUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENTdHJldGNoRW5naW5lKElGWF9TY2FubGluZUNvbXBvc2VyKiBwRGVzdEJpdG1hcCwgRlhESUJfRm9ybWF0IGRlc3RfZm9ybWF0LA0KKyAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0LCBjb25zdCBGWF9SRUNUJiBjbGlwX3JlY3QsDQorICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmNCaXRtYXAsIGludCBmbGFncyk7DQorICAgIH5DU3RyZXRjaEVuZ2luZSgpOw0KKyAgICBGWF9CT09MCQlDb250aW51ZShJRlhfUGF1c2UqIHBQYXVzZSk7DQorcHVibGljOg0KKyAgICBGWERJQl9Gb3JtYXQgbV9EZXN0Rm9ybWF0Ow0KKyAgICBpbnQJCW1fRGVzdEJwcCwgbV9TcmNCcHAsIG1fYkhhc0FscGhhOw0KKyAgICBJRlhfU2NhbmxpbmVDb21wb3NlcioJbV9wRGVzdEJpdG1hcDsNCisgICAgaW50CQltX0Rlc3RXaWR0aCwgbV9EZXN0SGVpZ2h0Ow0KKyAgICBGWF9SRUNUCW1fRGVzdENsaXA7DQorICAgIEZYX0xQQllURQltX3BEZXN0U2NhbmxpbmU7DQorICAgIEZYX0xQQllURSAgIG1fcERlc3RNYXNrU2NhbmxpbmU7DQorICAgIEZYX1JFQ1QJbV9TcmNDbGlwOw0KKyAgICBjb25zdCBDRlhfRElCU291cmNlKgltX3BTb3VyY2U7DQorICAgIEZYX0RXT1JEKgltX3BTcmNQYWxldHRlOw0KKyAgICBpbnQJCW1fU3JjV2lkdGgsIG1fU3JjSGVpZ2h0Ow0KKyAgICBpbnQJCW1fU3JjUGl0Y2gsIG1fSW50ZXJQaXRjaDsNCisgICAgaW50IG1fRXh0cmFNYXNrUGl0Y2g7DQorICAgIHVuc2lnbmVkIGNoYXIqCW1fcEludGVyQnVmOw0KKyAgICB1bnNpZ25lZCBjaGFyKgltX3BFeHRyYUFscGhhQnVmOw0KKyAgICBpbnQJCW1fVHJhbnNNZXRob2Q7DQorICAgIGludCAJbV9GbGFnczsNCisgICAgQ1dlaWdodFRhYmxlCW1fV2VpZ2h0VGFibGU7DQorICAgIGludAkJbV9DdXJSb3c7DQorICAgIEZYX0JPT0wJU3RhcnRTdHJldGNoSG9yeigpOw0KKyAgICBGWF9CT09MCUNvbnRpbnVlU3RyZXRjaEhvcnooSUZYX1BhdXNlKiBwUGF1c2UpOw0KKyAgICB2b2lkCVN0cmV0Y2hWZXJ0KCk7DQorICAgIGludAkJbV9TdGF0ZTsNCit9Ow0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZGliL2Z4X2RpYl9jb21wb3NpdGUuY3BwIGIvY29yZS9zcmMvZnhnZS9kaWIvZnhfZGliX2NvbXBvc2l0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU5YjQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZGliL2Z4X2RpYl9jb21wb3NpdGUuY3BwCkBAIC0wLDAgKzEsNDYwMiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWMuaCINCisjaW5jbHVkZSAiZGliX2ludC5oIg0KK2NvbnN0IEZYX0JZVEUgZ19HYW1tYVJhbXBbMjU2XSA9IHsNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDEsICAgMSwgICAxLCAgIDEsICAgMSwgICAxLCAgIDEsICAgMSwNCisgICAgMSwgICAxLCAgIDIsICAgMiwgICAyLCAgIDIsICAgMiwgICAyLCAgIDIsICAgMiwgICAzLCAgIDMsICAgMywgICAzLCAgIDMsICAgMywNCisgICAgNCwgICA0LCAgIDQsICAgNCwgICA0LCAgIDUsICAgNSwgICA1LCAgIDUsICAgNiwgICA2LCAgIDYsICAgNiwgICA3LCAgIDcsICAgNywNCisgICAgOCwgICA4LCAgIDgsICAgOCwgICA5LCAgIDksICAgOSwgIDEwLCAgMTAsICAxMCwgIDExLCAgMTEsICAxMiwgIDEyLCAgMTIsICAxMywNCisgICAgMTMsICAxMywgIDE0LCAgMTQsICAxNSwgIDE1LCAgMTYsICAxNiwgIDE3LCAgMTcsICAxNywgIDE4LCAgMTgsICAxOSwgIDE5LCAgMjAsDQorICAgIDIwLCAgMjEsICAyMiwgIDIyLCAgMjMsICAyMywgIDI0LCAgMjQsICAyNSwgIDI1LCAgMjYsICAyNywgIDI3LCAgMjgsICAyOSwgIDI5LA0KKyAgICAzMCwgIDMwLCAgMzEsICAzMiwgIDMyLCAgMzMsICAzNCwgIDM1LCAgMzUsICAzNiwgIDM3LCAgMzcsICAzOCwgIDM5LCAgNDAsICA0MSwNCisgICAgNDEsICA0MiwgIDQzLCAgNDQsICA0NSwgIDQ1LCAgNDYsICA0NywgIDQ4LCAgNDksICA1MCwgIDUxLCAgNTEsICA1MiwgIDUzLCAgNTQsDQorICAgIDU1LCAgNTYsICA1NywgIDU4LCAgNTksICA2MCwgIDYxLCAgNjIsICA2MywgIDY0LCAgNjUsICA2NiwgIDY3LCAgNjgsICA2OSwgIDcwLA0KKyAgICA3MSwgIDcyLCAgNzMsICA3NCwgIDc2LCAgNzcsICA3OCwgIDc5LCAgODAsICA4MSwgIDgyLCAgODQsICA4NSwgIDg2LCAgODcsICA4OCwNCisgICAgOTAsICA5MSwgIDkyLCAgOTMsICA5NSwgIDk2LCAgOTcsICA5OSwgMTAwLCAxMDEsIDEwMywgMTA0LCAxMDUsIDEwNywgMTA4LCAxMDksDQorICAgIDExMSwgMTEyLCAxMTQsIDExNSwgMTE2LCAxMTgsIDExOSwgMTIxLCAxMjIsIDEyNCwgMTI1LCAxMjcsIDEyOCwgMTMwLCAxMzEsIDEzMywNCisgICAgMTM0LCAxMzYsIDEzOCwgMTM5LCAxNDEsIDE0MiwgMTQ0LCAxNDYsIDE0NywgMTQ5LCAxNTEsIDE1MiwgMTU0LCAxNTYsIDE1NywgMTU5LA0KKyAgICAxNjEsIDE2MywgMTY0LCAxNjYsIDE2OCwgMTcwLCAxNzEsIDE3MywgMTc1LCAxNzcsIDE3OSwgMTgxLCAxODMsIDE4NCwgMTg2LCAxODgsDQorICAgIDE5MCwgMTkyLCAxOTQsIDE5NiwgMTk4LCAyMDAsIDIwMiwgMjA0LCAyMDYsIDIwOCwgMjEwLCAyMTIsIDIxNCwgMjE2LCAyMTgsIDIyMCwNCisgICAgMjIyLCAyMjQsIDIyNiwgMjI5LCAyMzEsIDIzMywgMjM1LCAyMzcsIDIzOSwgMjQyLCAyNDQsIDI0NiwgMjQ4LCAyNTAsIDI1MywgMjU1LA0KK307DQorY29uc3QgRlhfQllURSBnX0dhbW1hSW52ZXJzZVsyNTZdID0gew0KKyAgICAwLCAgMTMsICAyMiwgIDI4LCAgMzQsICAzOCwgIDQyLCAgNDYsICA1MCwgIDUzLCAgNTYsICA1OSwgIDYxLCAgNjQsICA2NiwgIDY5LA0KKyAgICA3MSwgIDczLCAgNzUsICA3NywgIDc5LCAgODEsICA4MywgIDg1LCAgODYsICA4OCwgIDkwLCAgOTIsICA5MywgIDk1LCAgOTYsICA5OCwNCisgICAgOTksIDEwMSwgMTAyLCAxMDQsIDEwNSwgMTA2LCAxMDgsIDEwOSwgMTEwLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNywgMTE4LCAxMTksDQorICAgIDEyMCwgMTIxLCAxMjIsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwNCisgICAgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ4LCAxNDksIDE1MCwgMTUxLA0KKyAgICAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTYzLCAxNjQsDQorICAgIDE2NSwgMTY2LCAxNjcsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzMsIDE3NCwgMTc1LCAxNzUsIDE3NiwNCisgICAgMTc3LCAxNzgsIDE3OCwgMTc5LCAxODAsIDE4MCwgMTgxLCAxODIsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg1LCAxODYsIDE4NywgMTg3LA0KKyAgICAxODgsIDE4OSwgMTg5LCAxOTAsIDE5MCwgMTkxLCAxOTIsIDE5MiwgMTkzLCAxOTQsIDE5NCwgMTk1LCAxOTYsIDE5NiwgMTk3LCAxOTcsDQorICAgIDE5OCwgMTk5LCAxOTksIDIwMCwgMjAwLCAyMDEsIDIwMiwgMjAyLCAyMDMsIDIwMywgMjA0LCAyMDUsIDIwNSwgMjA2LCAyMDYsIDIwNywNCisgICAgMjA4LCAyMDgsIDIwOSwgMjA5LCAyMTAsIDIxMCwgMjExLCAyMTIsIDIxMiwgMjEzLCAyMTMsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LA0KKyAgICAyMTYsIDIxNywgMjE4LCAyMTgsIDIxOSwgMjE5LCAyMjAsIDIyMCwgMjIxLCAyMjEsIDIyMiwgMjIyLCAyMjMsIDIyMywgMjI0LCAyMjQsDQorICAgIDIyNSwgMjI2LCAyMjYsIDIyNywgMjI3LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIzMCwgMjMwLCAyMzEsIDIzMSwgMjMyLCAyMzIsIDIzMywNCisgICAgMjMzLCAyMzQsIDIzNCwgMjM1LCAyMzUsIDIzNiwgMjM2LCAyMzcsIDIzNywgMjM4LCAyMzgsIDIzOCwgMjM5LCAyMzksIDI0MCwgMjQwLA0KKyAgICAyNDEsIDI0MSwgMjQyLCAyNDIsIDI0MywgMjQzLCAyNDQsIDI0NCwgMjQ1LCAyNDUsIDI0NiwgMjQ2LCAyNDYsIDI0NywgMjQ3LCAyNDgsDQorICAgIDI0OCwgMjQ5LCAyNDksIDI1MCwgMjUwLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgMjUzLCAyNTMsIDI1NCwgMjU0LCAyNTUsIDI1NSwNCit9Ow0KK2NvbnN0IEZYX0JZVEUgX2NvbG9yX3NxcnRbMjU2XSA9IHsNCisgICAgMHgwMCwgMHgwMywgMHgwNywgMHgwQiwgMHgwRiwgMHgxMiwgMHgxNiwgMHgxOSwgMHgxRCwgMHgyMCwgMHgyMywgMHgyNiwgMHgyOSwgMHgyQywgMHgyRiwgMHgzMiwNCisgICAgMHgzNSwgMHgzNywgMHgzQSwgMHgzQywgMHgzRiwgMHg0MSwgMHg0MywgMHg0NiwgMHg0OCwgMHg0QSwgMHg0QywgMHg0RSwgMHg1MCwgMHg1MiwgMHg1NCwgMHg1NiwNCisgICAgMHg1NywgMHg1OSwgMHg1QiwgMHg1QywgMHg1RSwgMHg2MCwgMHg2MSwgMHg2MywgMHg2NCwgMHg2NSwgMHg2NywgMHg2OCwgMHg2OSwgMHg2QiwgMHg2QywgMHg2RCwNCisgICAgMHg2RSwgMHg3MCwgMHg3MSwgMHg3MiwgMHg3MywgMHg3NCwgMHg3NSwgMHg3NiwgMHg3NywgMHg3OCwgMHg3OSwgMHg3QSwgMHg3QiwgMHg3QywgMHg3RCwgMHg3RSwNCisgICAgMHg4MCwgMHg4MSwgMHg4MiwgMHg4MywgMHg4NCwgMHg4NSwgMHg4NiwgMHg4NywgMHg4NywgMHg4OCwgMHg4OSwgMHg4QSwgMHg4QiwgMHg4QywgMHg4RCwgMHg4RSwNCisgICAgMHg4RiwgMHg5MCwgMHg5MSwgMHg5MSwgMHg5MiwgMHg5MywgMHg5NCwgMHg5NSwgMHg5NiwgMHg5NywgMHg5NywgMHg5OCwgMHg5OSwgMHg5QSwgMHg5QiwgMHg5QywNCisgICAgMHg5QywgMHg5RCwgMHg5RSwgMHg5RiwgMHhBMCwgMHhBMCwgMHhBMSwgMHhBMiwgMHhBMywgMHhBNCwgMHhBNCwgMHhBNSwgMHhBNiwgMHhBNywgMHhBNywgMHhBOCwNCisgICAgMHhBOSwgMHhBQSwgMHhBQSwgMHhBQiwgMHhBQywgMHhBRCwgMHhBRCwgMHhBRSwgMHhBRiwgMHhCMCwgMHhCMCwgMHhCMSwgMHhCMiwgMHhCMywgMHhCMywgMHhCNCwNCisgICAgMHhCNSwgMHhCNSwgMHhCNiwgMHhCNywgMHhCNywgMHhCOCwgMHhCOSwgMHhCQSwgMHhCQSwgMHhCQiwgMHhCQywgMHhCQywgMHhCRCwgMHhCRSwgMHhCRSwgMHhCRiwNCisgICAgMHhDMCwgMHhDMCwgMHhDMSwgMHhDMiwgMHhDMiwgMHhDMywgMHhDNCwgMHhDNCwgMHhDNSwgMHhDNiwgMHhDNiwgMHhDNywgMHhDNywgMHhDOCwgMHhDOSwgMHhDOSwNCisgICAgMHhDQSwgMHhDQiwgMHhDQiwgMHhDQywgMHhDQywgMHhDRCwgMHhDRSwgMHhDRSwgMHhDRiwgMHhEMCwgMHhEMCwgMHhEMSwgMHhEMSwgMHhEMiwgMHhEMywgMHhEMywNCisgICAgMHhENCwgMHhENCwgMHhENSwgMHhENiwgMHhENiwgMHhENywgMHhENywgMHhEOCwgMHhEOSwgMHhEOSwgMHhEQSwgMHhEQSwgMHhEQiwgMHhEQywgMHhEQywgMHhERCwNCisgICAgMHhERCwgMHhERSwgMHhERSwgMHhERiwgMHhFMCwgMHhFMCwgMHhFMSwgMHhFMSwgMHhFMiwgMHhFMiwgMHhFMywgMHhFNCwgMHhFNCwgMHhFNSwgMHhFNSwgMHhFNiwNCisgICAgMHhFNiwgMHhFNywgMHhFNywgMHhFOCwgMHhFOSwgMHhFOSwgMHhFQSwgMHhFQSwgMHhFQiwgMHhFQiwgMHhFQywgMHhFQywgMHhFRCwgMHhFRCwgMHhFRSwgMHhFRSwNCisgICAgMHhFRiwgMHhGMCwgMHhGMCwgMHhGMSwgMHhGMSwgMHhGMiwgMHhGMiwgMHhGMywgMHhGMywgMHhGNCwgMHhGNCwgMHhGNSwgMHhGNSwgMHhGNiwgMHhGNiwgMHhGNywNCisgICAgMHhGNywgMHhGOCwgMHhGOCwgMHhGOSwgMHhGOSwgMHhGQSwgMHhGQSwgMHhGQiwgMHhGQiwgMHhGQywgMHhGQywgMHhGRCwgMHhGRCwgMHhGRSwgMHhGRSwgMHhGRg0KK307DQoraW50IF9CTEVORChpbnQgYmxlbmRfbW9kZSwgaW50IGJhY2tfY29sb3IsIGludCBzcmNfY29sb3IpDQorew0KKyAgICBzd2l0Y2ggKGJsZW5kX21vZGUpIHsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfTk9STUFMOg0KKyAgICAgICAgICAgIHJldHVybiBzcmNfY29sb3I7DQorICAgICAgICBjYXNlIEZYRElCX0JMRU5EX01VTFRJUExZOg0KKyAgICAgICAgICAgIHJldHVybiBzcmNfY29sb3IgKiBiYWNrX2NvbG9yIC8gMjU1Ow0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9TQ1JFRU46DQorICAgICAgICAgICAgcmV0dXJuIHNyY19jb2xvciArIGJhY2tfY29sb3IgLSBzcmNfY29sb3IgKiBiYWNrX2NvbG9yIC8gMjU1Ow0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9PVkVSTEFZOg0KKyAgICAgICAgICAgIHJldHVybiBfQkxFTkQoRlhESUJfQkxFTkRfSEFSRExJR0hULCBzcmNfY29sb3IsIGJhY2tfY29sb3IpOw0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9EQVJLRU46DQorICAgICAgICAgICAgcmV0dXJuIHNyY19jb2xvciA8IGJhY2tfY29sb3IgPyBzcmNfY29sb3IgOiBiYWNrX2NvbG9yOw0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9MSUdIVEVOOg0KKyAgICAgICAgICAgIHJldHVybiBzcmNfY29sb3IgPiBiYWNrX2NvbG9yID8gc3JjX2NvbG9yIDogYmFja19jb2xvcjsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfQ09MT1JET0RHRTogew0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2NvbG9yID09IDI1NSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNyY19jb2xvcjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gYmFja19jb2xvciAqIDI1NSAvICgyNTUgLSBzcmNfY29sb3IpOw0KKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID4gMjU1KSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjU1Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9DT0xPUkJVUk46IHsNCisgICAgICAgICAgICAgICAgaWYgKHNyY19jb2xvciA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3JjX2NvbG9yOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSAoMjU1IC0gYmFja19jb2xvcikgKiAyNTUgLyBzcmNfY29sb3I7DQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPiAyNTUpIHsNCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gMjU1IC0gcmVzdWx0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfSEFSRExJR0hUOg0KKyAgICAgICAgICAgIGlmIChzcmNfY29sb3IgPCAxMjgpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIChzcmNfY29sb3IgKiBiYWNrX2NvbG9yICogMikgLyAyNTU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBfQkxFTkQoRlhESUJfQkxFTkRfU0NSRUVOLCBiYWNrX2NvbG9yLCAyICogc3JjX2NvbG9yIC0gMjU1KTsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfU09GVExJR0hUOiB7DQorICAgICAgICAgICAgICAgIGlmIChzcmNfY29sb3IgPCAxMjgpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBiYWNrX2NvbG9yIC0gKDI1NSAtIDIgKiBzcmNfY29sb3IpICogYmFja19jb2xvciAqICgyNTUgLSBiYWNrX2NvbG9yKSAvIDI1NSAvIDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gYmFja19jb2xvciArICgyICogc3JjX2NvbG9yIC0gMjU1KSAqIChfY29sb3Jfc3FydFtiYWNrX2NvbG9yXSAtIGJhY2tfY29sb3IpIC8gMjU1Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfRElGRkVSRU5DRToNCisgICAgICAgICAgICByZXR1cm4gYmFja19jb2xvciA8IHNyY19jb2xvciA/IHNyY19jb2xvciAtIGJhY2tfY29sb3IgOiBiYWNrX2NvbG9yIC0gc3JjX2NvbG9yOw0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9FWENMVVNJT046DQorICAgICAgICAgICAgcmV0dXJuIGJhY2tfY29sb3IgKyBzcmNfY29sb3IgLSAyICogYmFja19jb2xvciAqIHNyY19jb2xvciAvIDI1NTsNCisgICAgfQ0KKyAgICByZXR1cm4gc3JjX2NvbG9yOw0KK30NCitzdHJ1Y3QgX1JHQiB7DQorICAgIGludCByZWQ7DQorICAgIGludCBncmVlbjsNCisgICAgaW50IGJsdWU7DQorfTsNCitzdGF0aWMgaW5saW5lIGludCBfTHVtKF9SR0IgY29sb3IpDQorew0KKyAgICByZXR1cm4gKGNvbG9yLnJlZCAqIDMwICsgY29sb3IuZ3JlZW4gKiA1OSArIGNvbG9yLmJsdWUgKiAxMSkgLyAxMDA7DQorfQ0KK3N0YXRpYyBfUkdCIF9DbGlwQ29sb3IoX1JHQiBjb2xvcikNCit7DQorICAgIGludCBsID0gX0x1bShjb2xvcik7DQorICAgIGludCBuID0gY29sb3IucmVkOw0KKyAgICBpZiAoY29sb3IuZ3JlZW4gPCBuKSB7DQorICAgICAgICBuID0gY29sb3IuZ3JlZW47DQorICAgIH0NCisgICAgaWYgKGNvbG9yLmJsdWUgPCBuKSB7DQorICAgICAgICBuID0gY29sb3IuYmx1ZTsNCisgICAgfQ0KKyAgICBpbnQgeCA9IGNvbG9yLnJlZDsNCisgICAgaWYgKGNvbG9yLmdyZWVuID4geCkgew0KKyAgICAgICAgeCA9IGNvbG9yLmdyZWVuOw0KKyAgICB9DQorICAgIGlmIChjb2xvci5ibHVlID4geCkgew0KKyAgICAgICAgeCA9IGNvbG9yLmJsdWU7DQorICAgIH0NCisgICAgaWYgKG4gPCAwKSB7DQorICAgICAgICBjb2xvci5yZWQgPSBsICsgKChjb2xvci5yZWQgLSBsKSAqIGwgLyAobCAtIG4pKTsNCisgICAgICAgIGNvbG9yLmdyZWVuID0gbCArICgoY29sb3IuZ3JlZW4gLSBsKSAqIGwgLyAobCAtIG4pKTsNCisgICAgICAgIGNvbG9yLmJsdWUgPSBsICsgKChjb2xvci5ibHVlIC0gbCkgKiBsIC8gKGwgLSBuKSk7DQorICAgIH0NCisgICAgaWYgKHggPiAyNTUpIHsNCisgICAgICAgIGNvbG9yLnJlZCA9IGwgKyAoKGNvbG9yLnJlZCAtIGwpICogKDI1NSAtIGwpIC8gKHggLSBsKSk7DQorICAgICAgICBjb2xvci5ncmVlbiA9IGwgKyAoKGNvbG9yLmdyZWVuIC0gbCkgKiAoMjU1IC0gbCkgLyAoeCAtIGwpKTsNCisgICAgICAgIGNvbG9yLmJsdWUgPSBsICsgKChjb2xvci5ibHVlIC0gbCkgKiAoMjU1IC0gbCkgLyAoeCAtIGwpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gY29sb3I7DQorfQ0KK3N0YXRpYyBfUkdCIF9TZXRMdW0oX1JHQiBjb2xvciwgaW50IGwpDQorew0KKyAgICBpbnQgZCA9IGwgLSBfTHVtKGNvbG9yKTsNCisgICAgY29sb3IucmVkICs9IGQ7DQorICAgIGNvbG9yLmdyZWVuICs9IGQ7DQorICAgIGNvbG9yLmJsdWUgKz0gZDsNCisgICAgcmV0dXJuIF9DbGlwQ29sb3IoY29sb3IpOw0KK30NCitzdGF0aWMgaW50IF9TYXQoX1JHQiBjb2xvcikNCit7DQorICAgIGludCBuID0gY29sb3IucmVkOw0KKyAgICBpZiAoY29sb3IuZ3JlZW4gPCBuKSB7DQorICAgICAgICBuID0gY29sb3IuZ3JlZW47DQorICAgIH0NCisgICAgaWYgKGNvbG9yLmJsdWUgPCBuKSB7DQorICAgICAgICBuID0gY29sb3IuYmx1ZTsNCisgICAgfQ0KKyAgICBpbnQgeCA9IGNvbG9yLnJlZDsNCisgICAgaWYgKGNvbG9yLmdyZWVuID4geCkgew0KKyAgICAgICAgeCA9IGNvbG9yLmdyZWVuOw0KKyAgICB9DQorICAgIGlmIChjb2xvci5ibHVlID4geCkgew0KKyAgICAgICAgeCA9IGNvbG9yLmJsdWU7DQorICAgIH0NCisgICAgcmV0dXJuIHggLSBuOw0KK30NCitzdGF0aWMgX1JHQiBfU2V0U2F0KF9SR0IgY29sb3IsIGludCBzKQ0KK3sNCisgICAgaW50KiBtYXggPSAmY29sb3IucmVkOw0KKyAgICBpbnQqIG1pZCA9ICZjb2xvci5yZWQ7DQorICAgIGludCogbWluID0gJmNvbG9yLnJlZDsNCisgICAgaWYgKGNvbG9yLmdyZWVuID4gKm1heCkgew0KKyAgICAgICAgbWF4ID0gJmNvbG9yLmdyZWVuOw0KKyAgICB9DQorICAgIGlmIChjb2xvci5ibHVlID4gKm1heCkgew0KKyAgICAgICAgbWF4ID0gJmNvbG9yLmJsdWU7DQorICAgIH0NCisgICAgaWYgKGNvbG9yLmdyZWVuIDwgKm1pbikgew0KKyAgICAgICAgbWluID0gJmNvbG9yLmdyZWVuOw0KKyAgICB9DQorICAgIGlmIChjb2xvci5ibHVlIDwgKm1pbikgew0KKyAgICAgICAgbWluID0gJmNvbG9yLmJsdWU7DQorICAgIH0NCisgICAgaWYgKCptYXggPT0gKm1pbikgew0KKyAgICAgICAgY29sb3IucmVkID0gMDsNCisgICAgICAgIGNvbG9yLmdyZWVuID0gMDsNCisgICAgICAgIGNvbG9yLmJsdWUgPSAwOw0KKyAgICAgICAgcmV0dXJuIGNvbG9yOw0KKyAgICB9DQorICAgIGlmIChtYXggPT0gJmNvbG9yLnJlZCkgew0KKyAgICAgICAgaWYgKG1pbiA9PSAmY29sb3IuZ3JlZW4pIHsNCisgICAgICAgICAgICBtaWQgPSAmY29sb3IuYmx1ZTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbWlkID0gJmNvbG9yLmdyZWVuOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKG1heCA9PSAmY29sb3IuZ3JlZW4pIHsNCisgICAgICAgIGlmIChtaW4gPT0gJmNvbG9yLnJlZCkgew0KKyAgICAgICAgICAgIG1pZCA9ICZjb2xvci5ibHVlOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtaWQgPSAmY29sb3IucmVkOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKG1pbiA9PSAmY29sb3IuZ3JlZW4pIHsNCisgICAgICAgICAgICBtaWQgPSAmY29sb3IucmVkOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtaWQgPSAmY29sb3IuZ3JlZW47DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCptYXggPiAqbWluKSB7DQorICAgICAgICAqbWlkID0gKCptaWQgLSAqbWluKSAqIHMgLyAoKm1heCAtICptaW4pOw0KKyAgICAgICAgKm1heCA9IHM7DQorICAgICAgICAqbWluID0gMDsNCisgICAgfQ0KKyAgICByZXR1cm4gY29sb3I7DQorfQ0KK3ZvaWQgX1JHQl9CbGVuZChpbnQgYmxlbmRfbW9kZSwgRlhfTFBDQllURSBzcmNfc2NhbiwgRlhfQllURSogZGVzdF9zY2FuLCBpbnQgcmVzdWx0c1szXSkNCit7DQorICAgIF9SR0Igc3JjLCBiYWNrLCByZXN1bHQ7DQorICAgIHNyYy5yZWQgPSBzcmNfc2NhblsyXTsNCisgICAgc3JjLmdyZWVuID0gc3JjX3NjYW5bMV07DQorICAgIHNyYy5ibHVlID0gc3JjX3NjYW5bMF07DQorICAgIGJhY2sucmVkID0gZGVzdF9zY2FuWzJdOw0KKyAgICBiYWNrLmdyZWVuID0gZGVzdF9zY2FuWzFdOw0KKyAgICBiYWNrLmJsdWUgPSBkZXN0X3NjYW5bMF07DQorICAgIHN3aXRjaCAoYmxlbmRfbW9kZSkgew0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9IVUU6DQorICAgICAgICAgICAgcmVzdWx0ID0gX1NldEx1bShfU2V0U2F0KHNyYywgX1NhdChiYWNrKSksIF9MdW0oYmFjaykpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9TQVRVUkFUSU9OOg0KKyAgICAgICAgICAgIHJlc3VsdCA9IF9TZXRMdW0oX1NldFNhdChiYWNrLCBfU2F0KHNyYykpLCBfTHVtKGJhY2spKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfQkxFTkRfQ09MT1I6DQorICAgICAgICAgICAgcmVzdWx0ID0gX1NldEx1bShzcmMsIF9MdW0oYmFjaykpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWERJQl9CTEVORF9MVU1JTk9TSVRZOg0KKyAgICAgICAgICAgIHJlc3VsdCA9IF9TZXRMdW0oYmFjaywgX0x1bShzcmMpKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICByZXN1bHRzWzBdID0gcmVzdWx0LmJsdWU7DQorICAgIHJlc3VsdHNbMV0gPSByZXN1bHQuZ3JlZW47DQorICAgIHJlc3VsdHNbMl0gPSByZXN1bHQucmVkOw0KK30NCitpbmxpbmUgdm9pZCBfQ29tcG9zaXRlUm93X0FyZ2IyTWFzayhGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgcGl4ZWxfY291bnQsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19hbHBoYSA9ICpzcmNfc2NhbjsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9ICpkZXN0X3NjYW47DQorICAgICAgICBpZiAoIWJhY2tfYWxwaGEpIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gc3JjX2FscGhhOw0KKyAgICAgICAgfSBlbHNlIGlmIChzcmNfYWxwaGEpIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICB9DQorfQ0KK3ZvaWQgX0NvbXBvc2l0ZVJvd19SZ2JhMk1hc2soRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfYWxwaGFfc2NhbiwgaW50IHBpeGVsX2NvdW50LCBGWF9MUENCWVRFIGNsaXBfc2NhbikNCit7DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgIGludCBzcmNfYWxwaGEgPSAqc3JjX2FscGhhX3NjYW4rKzsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9ICpkZXN0X3NjYW47DQorICAgICAgICBpZiAoIWJhY2tfYWxwaGEpIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gc3JjX2FscGhhOw0KKyAgICAgICAgfSBlbHNlIGlmIChzcmNfYWxwaGEpIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgIH0NCit9DQordm9pZCBfQ29tcG9zaXRlUm93X1JnYjJNYXNrKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgRlhfTFBDQllURSBjbGlwX3NjYW4pDQorew0KKyAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX1VOSU9OKCpkZXN0X3NjYW4sICpjbGlwX3NjYW4pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBjbGlwX3NjYW4gKys7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWFNZU19tZW1zZXQ4KGRlc3Rfc2NhbiwgMHhmZiwgd2lkdGgpOw0KKyAgICB9DQorfQ0KK3ZvaWQgX0NvbXBvc2l0ZVJvd19BcmdiMkdyYXlhKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBwaXhlbF9jb3VudCwgaW50IGJsZW5kX3R5cGUsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX2FscGhhX3NjYW4sIEZYX0xQQllURSBkc3RfYWxwaGFfc2Nhbiwgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBOVUxMOw0KKyAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICB9DQorICAgIGlmIChibGVuZF90eXBlKSB7DQorICAgICAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICAgICAgaW50IGJsZW5kZWRfY29sb3I7DQorICAgICAgICBpZiAoc3JjX2FscGhhX3NjYW4pIHsNCisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9ICpkc3RfYWxwaGFfc2NhbjsNCisgICAgICAgICAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9ICpzcmNfYWxwaGFfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSAgRlhSR0IyR1JBWShzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkc3RfYWxwaGFfc2NhbiA9IHNyY19hbHBoYTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIGRzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgc3JjX2FscGhhID0gKnNyY19hbHBoYV9zY2FuKys7DQorICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgZHN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgKmRzdF9hbHBoYV9zY2FuID0gRlhESUJfQUxQSEFfVU5JT04oYmFja19hbHBoYSwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gKCpkc3RfYWxwaGFfc2Nhbik7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgZ3JheTsNCisgICAgICAgICAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sICZncmF5LCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBncmF5ID0gRlhSR0IyR1JBWShzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGJOb25zZXBhcmFibGVCbGVuZCkgew0KKyAgICAgICAgICAgICAgICAgICAgYmxlbmRlZF9jb2xvciA9IGJsZW5kX3R5cGUgPT0gRlhESUJfQkxFTkRfTFVNSU5PU0lUWSA/IGdyYXkgOiAqZGVzdF9zY2FuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGdyYXkgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yIDogX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIGdyYXkpOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgZ3JheSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIGRzdF9hbHBoYV9zY2FuKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGJhY2tfYWxwaGEgPSAqZHN0X2FscGhhX3NjYW47DQorICAgICAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblszXTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBkZXN0X3NjYW4sIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gIEZYUkdCMkdSQVkoc3JjX3NjYW5bMl0sIHNyY19zY2FuWzFdLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAqZHN0X2FscGhhX3NjYW4gPSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBkc3RfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIHNyY19hbHBoYSA9IHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIGRzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICpkc3RfYWxwaGFfc2NhbiA9IEZYRElCX0FMUEhBX1VOSU9OKGJhY2tfYWxwaGEsIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvICgqZHN0X2FscGhhX3NjYW4pOw0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGdyYXk7DQorICAgICAgICAgICAgICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCAmZ3JheSwgc3JjX3NjYW4sIDEpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgZ3JheSA9IEZYUkdCMkdSQVkoc3JjX3NjYW5bMl0sIHNyY19zY2FuWzFdLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgZHN0X2FscGhhX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHNyY19hbHBoYV9zY2FuKSB7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gKmRzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9ICpzcmNfYWxwaGFfc2NhbisrOw0KKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gIEZYUkdCMkdSQVkoc3JjX3NjYW5bMl0sIHNyY19zY2FuWzFdLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgKmRzdF9hbHBoYV9zY2FuID0gc3JjX2FscGhhOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgZHN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9CWVRFIHNyY19hbHBoYSA9ICpzcmNfYWxwaGFfc2NhbisrOw0KKyAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF0gKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIGRzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgKmRzdF9hbHBoYV9zY2FuID0gRlhESUJfQUxQSEFfVU5JT04oYmFja19hbHBoYSwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyAoKmRzdF9hbHBoYV9zY2FuKTsNCisgICAgICAgICAgICBGWF9CWVRFIGdyYXk7DQorICAgICAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgJmdyYXksIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBncmF5ID0gRlhSR0IyR1JBWShzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIGRzdF9hbHBoYV9zY2FuKys7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgIH0NCisgICAgfSBlbHNlDQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gKmRzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gIEZYUkdCMkdSQVkoc3JjX3NjYW5bMl0sIHNyY19zY2FuWzFdLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgKmRzdF9hbHBoYV9zY2FuID0gc3JjX2FscGhhOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgZHN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9CWVRFIHNyY19hbHBoYSA9IHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF0gKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIGRzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgKmRzdF9hbHBoYV9zY2FuID0gRlhESUJfQUxQSEFfVU5JT04oYmFja19hbHBoYSwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyAoKmRzdF9hbHBoYV9zY2FuKTsNCisgICAgICAgICAgICBGWF9CWVRFIGdyYXk7DQorICAgICAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgJmdyYXksIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBncmF5ID0gRlhSR0IyR1JBWShzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIGRzdF9hbHBoYV9zY2FuKys7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19BcmdiMkdyYXkoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHBpeGVsX2NvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibGVuZF90eXBlLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19hbHBoYV9zY2FuLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IE5VTEw7DQorICAgIEZYX0JZVEUgZ3JheTsNCisgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsNCisgICAgfQ0KKyAgICBpZiAoYmxlbmRfdHlwZSkgew0KKyAgICAgICAgRlhfQk9PTCBiTm9uc2VwYXJhYmxlQmxlbmQgPSBibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRTsNCisgICAgICAgIGludCBibGVuZGVkX2NvbG9yOw0KKyAgICAgICAgaWYgKHNyY19hbHBoYV9zY2FuKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gKnNyY19hbHBoYV9zY2FuKys7DQorICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgJmdyYXksIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZ3JheSA9IEZYUkdCMkdSQVkoc3JjX3NjYW5bMl0sIHNyY19zY2FuWzFdLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJOb25zZXBhcmFibGVCbGVuZCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kZWRfY29sb3IgPSBibGVuZF90eXBlID09IEZYRElCX0JMRU5EX0xVTUlOT1NJVFkgPyBncmF5IDogKmRlc3Rfc2NhbjsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGdyYXkgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yIDogX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIGdyYXkpOw0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGdyYXksIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sICZncmF5LCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXkgPSBGWFJHQjJHUkFZKHNyY19zY2FuWzJdLCBzcmNfc2NhblsxXSwgKnNyY19zY2FuKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBibGVuZGVkX2NvbG9yID0gYmxlbmRfdHlwZSA9PSBGWERJQl9CTEVORF9MVU1JTk9TSVRZID8gZ3JheSA6ICpkZXN0X3NjYW47DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBncmF5ID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvciA6IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBncmF5KTsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKHNyY19hbHBoYV9zY2FuKSB7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9ICpzcmNfYWxwaGFfc2NhbisrOw0KKyAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF0gKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEpIHsNCisgICAgICAgICAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sICZncmF5LCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBncmF5ID0gRlhSR0IyR1JBWShzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGdyYXksIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gc3JjX3NjYW5bM107DQorICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSkgew0KKyAgICAgICAgICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgJmdyYXksIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGdyYXkgPSBGWFJHQjJHUkFZKHNyY19zY2FuWzJdLCBzcmNfc2NhblsxXSwgKnNyY19zY2FuKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgZ3JheSwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfUmdiMkdyYXkoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHNyY19CcHAsIGludCBwaXhlbF9jb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibGVuZF90eXBlLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gTlVMTDsNCisgICAgRlhfQllURSBncmF5Ow0KKyAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICB9DQorICAgIGlmIChibGVuZF90eXBlKSB7DQorICAgICAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICAgICAgaW50IGJsZW5kZWRfY29sb3I7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgJmdyYXksIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBncmF5ID0gRlhSR0IyR1JBWShzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICAgICAgYmxlbmRlZF9jb2xvciA9IGJsZW5kX3R5cGUgPT0gRlhESUJfQkxFTkRfTFVNSU5PU0lUWSA/IGdyYXkgOiAqZGVzdF9zY2FuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBncmF5ID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvciA6IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBncmF5KTsNCisgICAgICAgICAgICBpZiAoY2xpcF9zY2FuICYmIGNsaXBfc2Nhbltjb2xdIDwgMjU1KSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBjbGlwX3NjYW5bY29sXSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IGdyYXk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfQnBwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgJmdyYXksIHNyY19zY2FuLCAxKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZ3JheSA9IEZYUkdCMkdSQVkoc3JjX3NjYW5bMl0sIHNyY19zY2FuWzFdLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNsaXBfc2NhbiAmJiBjbGlwX3NjYW5bY29sXSA8IDI1NSkgew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBjbGlwX3NjYW5bY29sXSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBncmF5Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfUmdiMkdyYXlhKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBzcmNfQnBwLCBpbnQgcGl4ZWxfY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxlbmRfdHlwZSwgRlhfTFBDQllURSBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9hbHBoYV9zY2FuLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IE5VTEw7DQorICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgIH0NCisgICAgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgIGludCBibGVuZGVkX2NvbG9yOw0KKyAgICAgICAgRlhfQk9PTCBiTm9uc2VwYXJhYmxlQmxlbmQgPSBibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRTsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICBpbnQgYmFja19hbHBoYSA9ICpkZXN0X2FscGhhX3NjYW47DQorICAgICAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZGVzdF9zY2FuLCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhSR0IyR1JBWShzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSAyNTU7DQorICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfQnBwOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbisrID0gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgIEZYX0JZVEUgZ3JheTsNCisgICAgICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCAmZ3JheSwgc3JjX3NjYW4sIDEpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGdyYXkgPSBGWFJHQjJHUkFZKHNyY19zY2FuWzJdLCBzcmNfc2NhblsxXSwgKnNyY19zY2FuKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGJOb25zZXBhcmFibGVCbGVuZCkgew0KKyAgICAgICAgICAgICAgICBibGVuZGVkX2NvbG9yID0gYmxlbmRfdHlwZSA9PSBGWERJQl9CTEVORF9MVU1JTk9TSVRZID8gZ3JheSA6ICpkZXN0X3NjYW47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGdyYXkgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yIDogX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIGdyYXkpOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19CcHA7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19hbHBoYSA9IDI1NTsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMjU1KSB7DQorICAgICAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZGVzdF9zY2FuLCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYUkdCMkdSQVkoc3JjX3NjYW5bMl0sIHNyY19zY2FuWzFdLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbisrID0gMjU1Ow0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19CcHA7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19CcHA7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpbnQgYmFja19hbHBoYSA9ICpkZXN0X2FscGhhX3NjYW47DQorICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICpkZXN0X2FscGhhX3NjYW4rKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgRlhfQllURSBncmF5Ow0KKyAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCAmZ3JheSwgc3JjX3NjYW4sIDEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBncmF5ID0gRlhSR0IyR1JBWShzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sICpzcmNfc2Nhbik7DQorICAgICAgICB9DQorICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgZ3JheSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfQXJnYjJBcmdiKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBwaXhlbF9jb3VudCwgaW50IGJsZW5kX3R5cGUsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3RfYWxwaGFfc2NhbiwgRlhfTFBDQllURSBzcmNfYWxwaGFfc2NhbikNCit7DQorICAgIGludCBibGVuZGVkX2NvbG9yc1szXTsNCisgICAgRlhfQk9PTCBiTm9uc2VwYXJhYmxlQmxlbmQgPSBibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRTsNCisgICAgaWYgKGRlc3RfYWxwaGFfc2NhbiA9PSBOVUxMKSB7DQorICAgICAgICBpZiAoc3JjX2FscGhhX3NjYW4gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IDA7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBiYWNrX2FscGhhID0gZGVzdF9zY2FuWzNdOw0KKyAgICAgICAgICAgICAgICBpZiAoYmFja19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogc3JjX3NjYW5bM10gLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIChGWEFSR0JfR0VURElCKHNyY19zY2FuKSAmIDB4ZmZmZmZmKSB8IChzcmNfYWxwaGEgPDwgMjQpKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhBUkdCX0NPUFkoZGVzdF9zY2FuLCBzcmNfc2Nhbik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIHNyY19hbHBoYTsNCisgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblszXTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogc3JjX3NjYW5bM10gLyAyNTU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAgICAgaWYgKGJOb25zZXBhcmFibGVCbGVuZCkgew0KKyAgICAgICAgICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfc2NhbiwgZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYmxlbmRfdHlwZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBibGVuZGVkID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvcnNbY29sb3JdIDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kZWQgPSBGWERJQl9BTFBIQV9NRVJHRSgqc3JjX3NjYW4sIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCAqc3JjX3NjYW4sIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgICAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqICgqc3JjX2FscGhhX3NjYW4pIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYQVJHQl9TRVRESUIoZGVzdF9zY2FuLCBGWEFSR0JfTUFLRSgoc3JjX2FscGhhIDw8IDI0KSwgc3JjX3NjYW5bMl0sIHNyY19zY2FuWzFdLCAqc3JjX3NjYW4pKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKCgqc3JjX2FscGhhX3NjYW4gPDwgMjQpLCBzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sICpzcmNfc2NhbikpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIHNyY19hbHBoYTsNCisgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSAqc3JjX2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqICgqc3JjX2FscGhhX3NjYW4gKyspIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbG9yID0gMDsgY29sb3IgPCAzOyBjb2xvciArKykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IGJOb25zZXBhcmFibGVCbGVuZCA/IGJsZW5kZWRfY29sb3JzW2NvbG9yXSA6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2NhbiwgKnNyY19zY2FuKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0UoKnNyY19zY2FuLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZCwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgKnNyY19zY2FuLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKHNyY19hbHBoYV9zY2FuKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGJhY2tfYWxwaGEgPSAqZGVzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgICAgICAgICBpZiAoYmFja19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogKCpzcmNfYWxwaGFfc2NhbikgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiA9IHNyY19hbHBoYTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiA9ICpzcmNfYWxwaGFfc2NhbjsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfQllURSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4gPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gKnNyY19hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF0gKiAoKnNyY19hbHBoYV9zY2FuICsrKSAvIDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuICsrID0gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAgICAgaWYgKGJOb25zZXBhcmFibGVCbGVuZCkgew0KKyAgICAgICAgICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfc2NhbiwgZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoYmxlbmRfdHlwZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBibGVuZGVkID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvcnNbY29sb3JdIDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kZWQgPSBGWERJQl9BTFBIQV9NRVJHRSgqc3JjX3NjYW4sIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCAqc3JjX3NjYW4sIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9ICpkZXN0X2FscGhhX3NjYW47DQorICAgICAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF0gKiBzcmNfc2NhblszXSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuID0gc3JjX2FscGhhOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuID0gc3JjX3NjYW5bM107DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgc3JjX2FscGhhOw0KKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF0gKiBzcmNfc2NhblszXSAvIDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuKysgPSBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgICAgICAgICBfUkdCX0JsZW5kKGJsZW5kX3R5cGUsIHNyY19zY2FuLCBkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChibGVuZF90eXBlKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsZW5kZWQgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yc1tjb2xvcl0gOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRlZCA9IEZYRElCX0FMUEhBX01FUkdFKCpzcmNfc2NhbiwgYmxlbmRlZCwgYmFja19hbHBoYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sICpzcmNfc2NhbiwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9CbGVuZF9Ob0NsaXAoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBpbnQgYmxlbmRfdHlwZSwgaW50IHNyY19CcHAsDQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9hbHBoYV9zY2FuKQ0KK3sNCisgICAgaW50IGJsZW5kZWRfY29sb3JzWzNdOw0KKyAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICBpbnQgc3JjX2dhcCA9IHNyY19CcHAgLSAzOw0KKyAgICBpZiAoZGVzdF9hbHBoYV9zY2FuID09IE5VTEwpIHsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICBGWF9CWVRFIGJhY2tfYWxwaGEgPSBkZXN0X3NjYW5bM107DQorICAgICAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX0JwcCA9PSA0KSB7DQorICAgICAgICAgICAgICAgICAgICBGWEFSR0JfU0VURElCKGRlc3Rfc2NhbiwgMHhmZjAwMDAwMCB8IEZYQVJHQl9HRVRESUIoc3JjX3NjYW4pKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIEZYQVJHQl9TRVRESUIoZGVzdF9zY2FuLCBGWEFSR0JfTUFLRSgweGZmLCBzcmNfc2NhblsyXSwgc3JjX3NjYW5bMV0sIHNyY19zY2FuWzBdKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19CcHA7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSAweGZmOw0KKyAgICAgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfc2NhbiwgZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbG9yID0gMDsgY29sb3IgPCAzOyBjb2xvciArKykgew0KKyAgICAgICAgICAgICAgICBpbnQgc3JjX2NvbG9yID0gKnNyY19zY2FuOw0KKyAgICAgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IGJOb25zZXBhcmFibGVCbGVuZCA/IGJsZW5kZWRfY29sb3JzW2NvbG9yXSA6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIHNyY19jb2xvcik7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRShzcmNfY29sb3IsIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX2dhcDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICBGWF9CWVRFIGJhY2tfYWxwaGEgPSAqZGVzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbisrID0gMHhmZjsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX2dhcDsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4rKyA9IDB4ZmY7DQorICAgICAgICAgICAgaWYgKGJOb25zZXBhcmFibGVCbGVuZCkgew0KKyAgICAgICAgICAgICAgICBfUkdCX0JsZW5kKGJsZW5kX3R5cGUsIHNyY19zY2FuLCBkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgICAgIGludCBzcmNfY29sb3IgPSAqc3JjX3NjYW47DQorICAgICAgICAgICAgICAgIGludCBibGVuZGVkID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvcnNbY29sb3JdIDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2Nhbiwgc3JjX2NvbG9yKTsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKHNyY19jb2xvciwgYmxlbmRlZCwgYmFja19hbHBoYSk7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19nYXA7DQorICAgICAgICB9DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9CbGVuZF9DbGlwKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGJsZW5kX3R5cGUsIGludCBzcmNfQnBwLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgIEZYX0xQQllURSBkZXN0X2FscGhhX3NjYW4pDQorew0KKyAgICBpbnQgYmxlbmRlZF9jb2xvcnNbM107DQorICAgIEZYX0JPT0wgYk5vbnNlcGFyYWJsZUJsZW5kID0gYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEU7DQorICAgIGludCBzcmNfZ2FwID0gc3JjX0JwcCAtIDM7DQorICAgIGlmIChkZXN0X2FscGhhX3NjYW4gPT0gTlVMTCkgew0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSAqY2xpcF9zY2FuICsrOw0KKyAgICAgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgICAgICBpZiAoYmFja19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19nYXA7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICAgICAgaW50IHNyY19jb2xvciA9ICpzcmNfc2NhbjsNCisgICAgICAgICAgICAgICAgaW50IGJsZW5kZWQgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yc1tjb2xvcl0gOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfY29sb3IpOw0KKyAgICAgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0Uoc3JjX2NvbG9yLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19nYXA7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9ICpjbGlwX3NjYW4gKys7DQorICAgICAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gKmRlc3RfYWxwaGFfc2NhbjsNCisgICAgICAgICAgICBpZiAoYmFja19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19nYXA7DQorICAgICAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbisrOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4rKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICAgICAgaW50IHNyY19jb2xvciA9ICpzcmNfc2NhbjsNCisgICAgICAgICAgICAgICAgaW50IGJsZW5kZWQgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yc1tjb2xvcl0gOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfY29sb3IpOw0KKyAgICAgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0Uoc3JjX2NvbG9yLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX2dhcDsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitpbmxpbmUgdm9pZCBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX05vQmxlbmRfQ2xpcChGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsIGludCBzcmNfQnBwLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgIEZYX0xQQllURSBkZXN0X2FscGhhX3NjYW4pDQorew0KKyAgICBpbnQgc3JjX2dhcCA9IHNyY19CcHAgLSAzOw0KKyAgICBpZiAoZGVzdF9hbHBoYV9zY2FuID09IE5VTEwpIHsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF07DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAyNTUpIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gMjU1Ow0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfZ2FwOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfQnBwOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaW50IGJhY2tfYWxwaGEgPSBkZXN0X3NjYW5bM107DQorICAgICAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbG9yID0gMDsgY29sb3IgPCAzOyBjb2xvciArKykgew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgKnNyY19zY2FuLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfZ2FwOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXTsNCisgICAgICAgICAgICBpZiAoc3JjX2FscGhhID09IDI1NSkgew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuKysgPSAyNTU7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19nYXA7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGludCBiYWNrX2FscGhhID0gKmRlc3RfYWxwaGFfc2NhbjsNCisgICAgICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuICsrID0gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbG9yID0gMDsgY29sb3IgPCAzOyBjb2xvciArKykgew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgKnNyY19zY2FuLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19nYXA7DQorICAgICAgICB9DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9Ob0JsZW5kX05vQ2xpcChGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsIGludCBzcmNfQnBwLA0KKyAgICAgICAgRlhfTFBCWVRFIGRlc3RfYWxwaGFfc2NhbikNCit7DQorICAgIGlmIChkZXN0X2FscGhhX3NjYW4gPT0gTlVMTCkgew0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIGlmIChzcmNfQnBwID09IDQpIHsNCisgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIDB4ZmYwMDAwMDAgfCBGWEFSR0JfR0VURElCKHNyY19zY2FuKSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKDB4ZmYsIHNyY19zY2FuWzJdLCBzcmNfc2NhblsxXSwgc3JjX3NjYW5bMF0pKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCBzcmNfZ2FwID0gc3JjX0JwcCAtIDM7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbisrID0gMHhmZjsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfZ2FwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfQXJnYjJSZ2JfQmxlbmQoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBpbnQgYmxlbmRfdHlwZSwgaW50IGRlc3RfQnBwLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX2FscGhhX3NjYW4pDQorew0KKyAgICBpbnQgYmxlbmRlZF9jb2xvcnNbM107DQorICAgIEZYX0JPT0wgYk5vbnNlcGFyYWJsZUJsZW5kID0gYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEU7DQorICAgIGludCBkZXN0X2dhcCA9IGRlc3RfQnBwIC0gMzsNCisgICAgaWYgKHNyY19hbHBoYV9zY2FuID09IE5VTEwpIHsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICBGWF9CWVRFIHNyY19hbHBoYTsNCisgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzNdICogKCpjbGlwX3NjYW4rKykgLyAyNTU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bM107DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9CcHA7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICAgICAgaW50IGJhY2tfY29sb3IgPSAqZGVzdF9zY2FuOw0KKyAgICAgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IGJOb25zZXBhcmFibGVCbGVuZCA/IGJsZW5kZWRfY29sb3JzW2NvbG9yXSA6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JMRU5EKGJsZW5kX3R5cGUsIGJhY2tfY29sb3IsICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRShiYWNrX2NvbG9yLCBibGVuZGVkLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9nYXA7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgRlhfQllURSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSAoKnNyY19hbHBoYV9zY2FuKyspICogKCpjbGlwX3NjYW4rKykgLyAyNTU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gKnNyY19hbHBoYV9zY2FuKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9CcHA7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICAgICAgaW50IGJhY2tfY29sb3IgPSAqZGVzdF9zY2FuOw0KKyAgICAgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IGJOb25zZXBhcmFibGVCbGVuZCA/IGJsZW5kZWRfY29sb3JzW2NvbG9yXSA6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JMRU5EKGJsZW5kX3R5cGUsIGJhY2tfY29sb3IsICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRShiYWNrX2NvbG9yLCBibGVuZGVkLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9nYXA7DQorICAgICAgICB9DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19BcmdiMlJnYl9Ob0JsZW5kKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGRlc3RfQnBwLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX2FscGhhX3NjYW4pDQorew0KKyAgICBpbnQgZGVzdF9nYXAgPSBkZXN0X0JwcCAtIDM7DQorICAgIGlmIChzcmNfYWxwaGFfc2NhbiA9PSBOVUxMKSB7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgRlhfQllURSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblszXSAqICgqY2xpcF9zY2FuKyspIC8gMjU1Ow0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoc3JjX2FscGhhID09IDI1NSkgew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9nYXA7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X0JwcDsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbG9yID0gMDsgY29sb3IgPCAzOyBjb2xvciArKykgew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgKnNyY19zY2FuLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9nYXA7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgRlhfQllURSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSAoKnNyY19hbHBoYV9zY2FuKyspICogKCpjbGlwX3NjYW4rKykgLyAyNTU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gKnNyY19hbHBoYV9zY2FuKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMjU1KSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X2dhcDsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9CcHA7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sICpzcmNfc2Nhbiwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IGRlc3RfZ2FwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9CbGVuZF9Ob0NsaXAoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBpbnQgYmxlbmRfdHlwZSwgaW50IGRlc3RfQnBwLCBpbnQgc3JjX0JwcCkNCit7DQorICAgIGludCBibGVuZGVkX2NvbG9yc1szXTsNCisgICAgRlhfQk9PTCBiTm9uc2VwYXJhYmxlQmxlbmQgPSBibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRTsNCisgICAgaW50IGRlc3RfZ2FwID0gZGVzdF9CcHAgLSAzOw0KKyAgICBpbnQgc3JjX2dhcCA9IHNyY19CcHAgLSAzOw0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfc2NhbiwgZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICBpbnQgYmFja19jb2xvciA9ICpkZXN0X3NjYW47DQorICAgICAgICAgICAgaW50IHNyY19jb2xvciA9ICpzcmNfc2NhbjsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IGJOb25zZXBhcmFibGVCbGVuZCA/IGJsZW5kZWRfY29sb3JzW2NvbG9yXSA6DQorICAgICAgICAgICAgICAgICAgICAgICAgICBfQkxFTkQoYmxlbmRfdHlwZSwgYmFja19jb2xvciwgc3JjX2NvbG9yKTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gYmxlbmRlZDsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9nYXA7DQorICAgICAgICBzcmNfc2NhbiArPSBzcmNfZ2FwOw0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9CbGVuZF9DbGlwKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGJsZW5kX3R5cGUsIGludCBkZXN0X0JwcCwgaW50IHNyY19CcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgaW50IGJsZW5kZWRfY29sb3JzWzNdOw0KKyAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICBpbnQgZGVzdF9nYXAgPSBkZXN0X0JwcCAtIDM7DQorICAgIGludCBzcmNfZ2FwID0gc3JjX0JwcCAtIDM7DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgIEZYX0JZVEUgc3JjX2FscGhhID0gKmNsaXBfc2NhbiArKzsNCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X0JwcDsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfQnBwOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGJOb25zZXBhcmFibGVCbGVuZCkgew0KKyAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgaW50IHNyY19jb2xvciA9ICpzcmNfc2NhbjsNCisgICAgICAgICAgICBpbnQgYmFja19jb2xvciA9ICpkZXN0X3NjYW47DQorICAgICAgICAgICAgaW50IGJsZW5kZWQgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yc1tjb2xvcl0gOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgX0JMRU5EKGJsZW5kX3R5cGUsIGJhY2tfY29sb3IsIHNyY19jb2xvcik7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKGJhY2tfY29sb3IsIGJsZW5kZWQsIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICs9IGRlc3RfZ2FwOw0KKyAgICAgICAgc3JjX3NjYW4gKz0gc3JjX2dhcDsNCisgICAgfQ0KK30NCitpbmxpbmUgdm9pZCBfQ29tcG9zaXRlUm93X1JnYjJSZ2JfTm9CbGVuZF9Ob0NsaXAoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBpbnQgZGVzdF9CcHAsIGludCBzcmNfQnBwKQ0KK3sNCisgICAgaWYgKGRlc3RfQnBwID09IHNyY19CcHApIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoICogZGVzdF9CcHApOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgIGRlc3Rfc2NhblswXSA9IHNyY19zY2FuWzBdOw0KKyAgICAgICAgZGVzdF9zY2FuWzFdID0gc3JjX3NjYW5bMV07DQorICAgICAgICBkZXN0X3NjYW5bMl0gPSBzcmNfc2NhblsyXTsNCisgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X0JwcDsNCisgICAgICAgIHNyY19zY2FuICs9IHNyY19CcHA7DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX05vQmxlbmRfQ2xpcChGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsIGludCBkZXN0X0JwcCwgaW50IHNyY19CcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdOw0KKyAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAyNTUpIHsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBzcmNfc2NhblsxXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBzcmNfc2NhblsyXTsNCisgICAgICAgIH0gZWxzZSBpZiAoc3JjX2FscGhhKSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sICpzcmNfc2Nhbiwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sICpzcmNfc2Nhbiwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sICpzcmNfc2Nhbiwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9CcHAgLSAyOw0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IHNyY19CcHAgLSAyOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICs9IGRlc3RfQnBwOw0KKyAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfQXJnYjJBcmdiX1RyYW5zZm9ybShGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgcGl4ZWxfY291bnQsIGludCBibGVuZF90eXBlLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9hbHBoYV9zY2FuLCBGWF9MUENCWVRFIHNyY19hbHBoYV9zY2FuLCBGWF9MUEJZVEUgc3JjX2NhY2hlX3NjYW4sIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBGWF9MUEJZVEUgZHAgPSBzcmNfY2FjaGVfc2NhbjsNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICBpZiAoc3JjX2FscGhhX3NjYW4pIHsNCisgICAgICAgIGlmIChkZXN0X2FscGhhX3NjYW4gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZHAsIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICAgICAgZHBbM10gPSAqc3JjX2FscGhhX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgZHAgKz0gNDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3JjX2FscGhhX3NjYW4gPSBOVUxMOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBkcCwgc3JjX3NjYW4sIHBpeGVsX2NvdW50KTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChkZXN0X2FscGhhX3NjYW4gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZHAsIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICAgICAgZHBbM10gPSBzcmNfc2NhblszXTsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgZHAgKz0gNDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGludCBibGVuZGVkX2NvbG9yc1szXTsNCisgICAgICAgICAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgc3JjX2NhY2hlX3NjYW4sIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gKmRlc3RfYWxwaGFfc2NhbjsNCisgICAgICAgICAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19zY2FuWzNdIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4gPSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19jYWNoZV9zY2FuKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19jYWNoZV9zY2FuKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19jYWNoZV9zY2FuKys7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4gPSBzcmNfc2NhblszXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX2NhY2hlX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX2NhY2hlX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX2NhY2hlX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIHNyY19hbHBoYTsNCisgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblszXTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogc3JjX3NjYW5bM10gLyAyNTU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgIHNyY19jYWNoZV9zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiArKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX2NhY2hlX3NjYW4sIGRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbG9yID0gMDsgY29sb3IgPCAzOyBjb2xvciArKykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IGJOb25zZXBhcmFibGVCbGVuZCA/IGJsZW5kZWRfY29sb3JzW2NvbG9yXSA6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2NhbiwgKnNyY19jYWNoZV9zY2FuKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0UoKnNyY19jYWNoZV9zY2FuLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZCwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgKnNyY19jYWNoZV9zY2FuLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBzcmNfY2FjaGVfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgIH0NCisgICAgX0NvbXBvc2l0ZVJvd19BcmdiMkFyZ2IoZGVzdF9zY2FuLCBzcmNfY2FjaGVfc2NhbiwgcGl4ZWxfY291bnQsIGJsZW5kX3R5cGUsIGNsaXBfc2NhbiwgZGVzdF9hbHBoYV9zY2FuLCBzcmNfYWxwaGFfc2Nhbik7DQorfQ0KK3ZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9CbGVuZF9Ob0NsaXBfVHJhbnNmb3JtKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGJsZW5kX3R5cGUsIGludCBzcmNfQnBwLA0KKyAgICAgICAgRlhfTFBCWVRFIGRlc3RfYWxwaGFfc2NhbiwgRlhfTFBCWVRFIHNyY19jYWNoZV9zY2FuLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICBpZiAoc3JjX0JwcCA9PSAzKSB7DQorICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBzcmNfY2FjaGVfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX0xQQllURSBkcCA9IHNyY19jYWNoZV9zY2FuOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIGRwLCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICBkcCArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIF9Db21wb3NpdGVSb3dfUmdiMkFyZ2JfQmxlbmRfTm9DbGlwKGRlc3Rfc2Nhbiwgc3JjX2NhY2hlX3NjYW4sIHdpZHRoLCBibGVuZF90eXBlLCAzLCBkZXN0X2FscGhhX3NjYW4pOw0KK30NCitpbmxpbmUgdm9pZCBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX0JsZW5kX0NsaXBfVHJhbnNmb3JtKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGJsZW5kX3R5cGUsIGludCBzcmNfQnBwLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgIEZYX0xQQllURSBkZXN0X2FscGhhX3NjYW4sIEZYX0xQQllURSBzcmNfY2FjaGVfc2Nhbiwgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsNCisgICAgaWYgKHNyY19CcHAgPT0gMykgew0KKyAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgc3JjX2NhY2hlX3NjYW4sIHNyY19zY2FuLCB3aWR0aCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWF9MUEJZVEUgZHAgPSBzcmNfY2FjaGVfc2NhbjsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBkcCwgc3JjX3NjYW4sIDEpOw0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgZHAgKz0gMzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX0JsZW5kX0NsaXAoZGVzdF9zY2FuLCBzcmNfY2FjaGVfc2Nhbiwgd2lkdGgsIGJsZW5kX3R5cGUsIDMsIGNsaXBfc2NhbiwgZGVzdF9hbHBoYV9zY2FuKTsNCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9Ob0JsZW5kX0NsaXBfVHJhbnNmb3JtKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IHNyY19CcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgRlhfTFBCWVRFIGRlc3RfYWxwaGFfc2NhbiwgRlhfTFBCWVRFIHNyY19jYWNoZV9zY2FuLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICBpZiAoc3JjX0JwcCA9PSAzKSB7DQorICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBzcmNfY2FjaGVfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX0xQQllURSBkcCA9IHNyY19jYWNoZV9zY2FuOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIGRwLCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICBkcCArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIF9Db21wb3NpdGVSb3dfUmdiMkFyZ2JfTm9CbGVuZF9DbGlwKGRlc3Rfc2Nhbiwgc3JjX2NhY2hlX3NjYW4sIHdpZHRoLCAzLCBjbGlwX3NjYW4sIGRlc3RfYWxwaGFfc2Nhbik7DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfUmdiMkFyZ2JfTm9CbGVuZF9Ob0NsaXBfVHJhbnNmb3JtKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IHNyY19CcHAsDQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9hbHBoYV9zY2FuLCBGWF9MUEJZVEUgc3JjX2NhY2hlX3NjYW4sIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgIGlmIChzcmNfQnBwID09IDMpIHsNCisgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIHNyY19jYWNoZV9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfTFBCWVRFIGRwID0gc3JjX2NhY2hlX3NjYW47DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZHAsIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGRwICs9IDM7DQorICAgICAgICB9DQorICAgIH0NCisgICAgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9Ob0JsZW5kX05vQ2xpcChkZXN0X3NjYW4sIHNyY19jYWNoZV9zY2FuLCB3aWR0aCwgMywgZGVzdF9hbHBoYV9zY2FuKTsNCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19BcmdiMlJnYl9CbGVuZF9UcmFuc2Zvcm0oRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBpbnQgYmxlbmRfdHlwZSwgaW50IGRlc3RfQnBwLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX2FscGhhX3NjYW4sIEZYX0xQQllURSBzcmNfY2FjaGVfc2Nhbiwgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsNCisgICAgaWYgKHNyY19hbHBoYV9zY2FuKSB7DQorICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBzcmNfY2FjaGVfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGludCBibGVuZGVkX2NvbG9yc1szXTsNCisgICAgICAgIEZYX0JPT0wgYk5vbnNlcGFyYWJsZUJsZW5kID0gYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEU7DQorICAgICAgICBpbnQgZGVzdF9nYXAgPSBkZXN0X0JwcCAtIDM7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgc3JjX2NhY2hlX3NjYW4sIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICBGWF9CWVRFIHNyY19hbHBoYTsNCisgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzNdICogKCpjbGlwX3NjYW4rKykgLyAyNTU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bM107DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X0JwcDsNCisgICAgICAgICAgICAgICAgc3JjX2NhY2hlX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfY2FjaGVfc2NhbiwgZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbG9yID0gMDsgY29sb3IgPCAzOyBjb2xvciArKykgew0KKyAgICAgICAgICAgICAgICBpbnQgYmFja19jb2xvciA9ICpkZXN0X3NjYW47DQorICAgICAgICAgICAgICAgIGludCBibGVuZGVkID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvcnNbY29sb3JdIDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQkxFTkQoYmxlbmRfdHlwZSwgYmFja19jb2xvciwgKnNyY19jYWNoZV9zY2FuKTsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKGJhY2tfY29sb3IsIGJsZW5kZWQsIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgc3JjX2NhY2hlX3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X2dhcDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBfQ29tcG9zaXRlUm93X0FyZ2IyUmdiX0JsZW5kKGRlc3Rfc2Nhbiwgc3JjX2NhY2hlX3NjYW4sIHdpZHRoLCBibGVuZF90eXBlLCBkZXN0X0JwcCwgY2xpcF9zY2FuLCBzcmNfYWxwaGFfc2Nhbik7DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfQXJnYjJSZ2JfTm9CbGVuZF9UcmFuc2Zvcm0oRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBpbnQgZGVzdF9CcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfYWxwaGFfc2NhbiwgRlhfTFBCWVRFIHNyY19jYWNoZV9zY2FuLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICBpZiAoc3JjX2FscGhhX3NjYW4pIHsNCisgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIHNyY19jYWNoZV9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaW50IGRlc3RfZ2FwID0gZGVzdF9CcHAgLSAzOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIHNyY19jYWNoZV9zY2FuLCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgRlhfQllURSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblszXSAqICgqY2xpcF9zY2FuKyspIC8gMjU1Ow0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMjU1KSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfY2FjaGVfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX2NhY2hlX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19jYWNoZV9zY2FuKys7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X2dhcDsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9CcHA7DQorICAgICAgICAgICAgICAgIHNyY19jYWNoZV9zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sICpzcmNfY2FjaGVfc2Nhbiwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBzcmNfY2FjaGVfc2NhbiArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IGRlc3RfZ2FwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIF9Db21wb3NpdGVSb3dfQXJnYjJSZ2JfTm9CbGVuZChkZXN0X3NjYW4sIHNyY19jYWNoZV9zY2FuLCB3aWR0aCwgZGVzdF9CcHAsIGNsaXBfc2Nhbiwgc3JjX2FscGhhX3NjYW4pOw0KK30NCitpbmxpbmUgdm9pZCBfQ29tcG9zaXRlUm93X1JnYjJSZ2JfQmxlbmRfTm9DbGlwX1RyYW5zZm9ybShGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsIGludCBibGVuZF90eXBlLCBpbnQgZGVzdF9CcHAsIGludCBzcmNfQnBwLA0KKyAgICAgICAgRlhfTFBCWVRFIHNyY19jYWNoZV9zY2FuLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICBpZiAoc3JjX0JwcCA9PSAzKSB7DQorICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBzcmNfY2FjaGVfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX0xQQllURSBkcCA9IHNyY19jYWNoZV9zY2FuOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIGRwLCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICBkcCArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9CbGVuZF9Ob0NsaXAoZGVzdF9zY2FuLCBzcmNfY2FjaGVfc2Nhbiwgd2lkdGgsIGJsZW5kX3R5cGUsIGRlc3RfQnBwLCAzKTsNCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX0JsZW5kX0NsaXBfVHJhbnNmb3JtKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGJsZW5kX3R5cGUsIGludCBkZXN0X0JwcCwgaW50IHNyY19CcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgRlhfTFBCWVRFIHNyY19jYWNoZV9zY2FuLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICBpZiAoc3JjX0JwcCA9PSAzKSB7DQorICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBzcmNfY2FjaGVfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX0xQQllURSBkcCA9IHNyY19jYWNoZV9zY2FuOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIGRwLCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICBkcCArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9CbGVuZF9DbGlwKGRlc3Rfc2Nhbiwgc3JjX2NhY2hlX3NjYW4sIHdpZHRoLCBibGVuZF90eXBlLCBkZXN0X0JwcCwgMywgY2xpcF9zY2FuKTsNCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX05vQmxlbmRfTm9DbGlwX1RyYW5zZm9ybShGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsIGludCBkZXN0X0JwcCwgaW50IHNyY19CcHAsDQorICAgICAgICBGWF9MUEJZVEUgc3JjX2NhY2hlX3NjYW4sIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgIGlmIChzcmNfQnBwID09IDMpIHsNCisgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIHNyY19jYWNoZV9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfTFBCWVRFIGRwID0gc3JjX2NhY2hlX3NjYW47DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZHAsIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGRwICs9IDM7DQorICAgICAgICB9DQorICAgIH0NCisgICAgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX05vQmxlbmRfTm9DbGlwKGRlc3Rfc2Nhbiwgc3JjX2NhY2hlX3NjYW4sIHdpZHRoLCBkZXN0X0JwcCwgMyk7DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9Ob0JsZW5kX0NsaXBfVHJhbnNmb3JtKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGRlc3RfQnBwLCBpbnQgc3JjX0JwcCwgRlhfTFBDQllURSBjbGlwX3NjYW4sDQorICAgICAgICBGWF9MUEJZVEUgc3JjX2NhY2hlX3NjYW4sIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgIGlmIChzcmNfQnBwID09IDMpIHsNCisgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIHNyY19jYWNoZV9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfTFBCWVRFIGRwID0gc3JjX2NhY2hlX3NjYW47DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZHAsIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGRwICs9IDM7DQorICAgICAgICB9DQorICAgIH0NCisgICAgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX05vQmxlbmRfQ2xpcChkZXN0X3NjYW4sIHNyY19jYWNoZV9zY2FuLCB3aWR0aCwgZGVzdF9CcHAsIDMsIGNsaXBfc2Nhbik7DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfOGJwcFBhbDJHcmF5KEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIEZYX0xQQ0JZVEUgcFBhbGV0dGUsIGludCBwaXhlbF9jb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxlbmRfdHlwZSwgRlhfTFBDQllURSBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfYWxwaGFfc2NhbikNCit7DQorICAgIGlmIChzcmNfYWxwaGFfc2Nhbikgew0KKyAgICAgICAgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICAgICAgICAgIGludCBibGVuZGVkX2NvbG9yOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfQllURSBncmF5ID0gcFBhbGV0dGVbKnNyY19zY2FuXTsNCisgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9ICpzcmNfYWxwaGFfc2NhbisrOw0KKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgICAgICAgICBibGVuZGVkX2NvbG9yID0gYmxlbmRfdHlwZSA9PSBGWERJQl9CTEVORF9MVU1JTk9TSVRZID8gZ3JheSA6ICpkZXN0X3NjYW47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZ3JheSA9IGJOb25zZXBhcmFibGVCbGVuZCA/IGJsZW5kZWRfY29sb3IgOiBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2NhbiwgZ3JheSk7DQorICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEpIHsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IGdyYXk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgIEZYX0JZVEUgZ3JheSA9IHBQYWxldHRlWypzcmNfc2Nhbl07DQorICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9ICpzcmNfYWxwaGFfc2NhbisrOw0KKyAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF0gKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEpIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGdyYXksIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IGdyYXk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChibGVuZF90eXBlKSB7DQorICAgICAgICAgICAgRlhfQk9PTCBiTm9uc2VwYXJhYmxlQmxlbmQgPSBibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRTsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZF9jb2xvcjsNCisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgZ3JheSA9IHBQYWxldHRlWypzcmNfc2Nhbl07DQorICAgICAgICAgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIGJsZW5kZWRfY29sb3IgPSBibGVuZF90eXBlID09IEZYRElCX0JMRU5EX0xVTUlOT1NJVFkgPyBncmF5IDogKmRlc3Rfc2NhbjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBncmF5ID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvciA6IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBncmF5KTsNCisgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2NhbiAmJiBjbGlwX3NjYW5bY29sXSA8IDI1NSkgew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGdyYXksIGNsaXBfc2Nhbltjb2xdKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBncmF5Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICBGWF9CWVRFIGdyYXkgPSBwUGFsZXR0ZVsqc3JjX3NjYW5dOw0KKyAgICAgICAgICAgIGlmIChjbGlwX3NjYW4gJiYgY2xpcF9zY2FuW2NvbF0gPCAyNTUpIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGdyYXksIGNsaXBfc2Nhbltjb2xdKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gZ3JheTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfOGJwcFBhbDJHcmF5YShGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBGWF9MUENCWVRFIHBQYWxldHRlLCBpbnQgcGl4ZWxfY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibGVuZF90eXBlLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3RfYWxwaGFfc2NhbiwgRlhfTFBDQllURSBzcmNfYWxwaGFfc2NhbikNCit7DQorICAgIGlmIChzcmNfYWxwaGFfc2Nhbikgew0KKyAgICAgICAgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICAgICAgICAgIGludCBibGVuZGVkX2NvbG9yOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfQllURSBncmF5ID0gcFBhbGV0dGVbKnNyY19zY2FuXTsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9ICpkZXN0X2FscGhhX3NjYW47DQorICAgICAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSAqc3JjX2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF0gKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IGdyYXk7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiA9IHNyY19hbHBoYTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgc3JjX2FscGhhID0gKnNyY19hbHBoYV9zY2FuKys7DQorICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyAoKmRlc3RfYWxwaGFfc2Nhbik7DQorICAgICAgICAgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIGJsZW5kZWRfY29sb3IgPSBibGVuZF90eXBlID09IEZYRElCX0JMRU5EX0xVTUlOT1NJVFkgPyBncmF5IDogKmRlc3Rfc2NhbjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBncmF5ID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvciA6IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBncmF5KTsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGdyYXksIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICBGWF9CWVRFIGdyYXkgPSBwUGFsZXR0ZVsqc3JjX3NjYW5dOw0KKyAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9ICpkZXN0X2FscGhhX3NjYW47DQorICAgICAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gKnNyY19hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhKSB7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gZ3JheTsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4gPSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9CWVRFIHNyY19hbHBoYSA9ICpzcmNfYWxwaGFfc2NhbisrOw0KKyAgICAgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF0gKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4gPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyAoKmRlc3RfYWxwaGFfc2Nhbik7DQorICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICAgICAgICAgIGludCBibGVuZGVkX2NvbG9yOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfQllURSBncmF5ID0gcFBhbGV0dGVbKnNyY19zY2FuXTsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIGlmIChjbGlwX3NjYW4gPT0gTlVMTCB8fCBjbGlwX3NjYW5bY29sXSA9PSAyNTUpIHsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IGdyYXk7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuKysgPSAyNTU7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF07DQorICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW50IGJhY2tfYWxwaGEgPSAqZGVzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiArKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIGJsZW5kZWRfY29sb3IgPSBibGVuZF90eXBlID09IEZYRElCX0JMRU5EX0xVTUlOT1NJVFkgPyBncmF5IDogKmRlc3Rfc2NhbjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBncmF5ID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvciA6IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBncmF5KTsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGdyYXksIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgRlhfQllURSBncmF5ID0gcFBhbGV0dGVbKnNyY19zY2FuXTsNCisgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICBpZiAoY2xpcF9zY2FuID09IE5VTEwgfHwgY2xpcF9zY2FuW2NvbF0gPT0gMjU1KSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IGdyYXk7DQorICAgICAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4rKyA9IDI1NTsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXTsNCisgICAgICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgYmFja19hbHBoYSA9ICpkZXN0X2FscGhhX3NjYW47DQorICAgICAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiArKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgZ3JheSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitpbmxpbmUgdm9pZCBfQ29tcG9zaXRlUm93XzFicHBQYWwyR3JheShGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgc3JjX2xlZnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBwUGFsZXR0ZSwgaW50IHBpeGVsX2NvdW50LCBpbnQgYmxlbmRfdHlwZSwgRlhfTFBDQllURSBjbGlwX3NjYW4pDQorew0KKyAgICBpbnQgcmVzZXRfZ3JheSA9IHBQYWxldHRlWzBdOw0KKyAgICBpbnQgc2V0X2dyYXkgPSBwUGFsZXR0ZVsxXTsNCisgICAgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgIEZYX0JPT0wgYk5vbnNlcGFyYWJsZUJsZW5kID0gYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEU7DQorICAgICAgICBpbnQgYmxlbmRlZF9jb2xvcjsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICBGWF9CWVRFIGdyYXkgPSAoc3JjX3NjYW5bKGNvbCArIHNyY19sZWZ0KSAvIDhdICYgKDEgPDwgKDcgLSAoY29sICsgc3JjX2xlZnQpICUgOCkpKSA/IHNldF9ncmF5IDogcmVzZXRfZ3JheTsNCisgICAgICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgICAgIGJsZW5kZWRfY29sb3IgPSBibGVuZF90eXBlID09IEZYRElCX0JMRU5EX0xVTUlOT1NJVFkgPyBncmF5IDogKmRlc3Rfc2NhbjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZ3JheSA9IGJOb25zZXBhcmFibGVCbGVuZCA/IGJsZW5kZWRfY29sb3IgOiBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2NhbiwgZ3JheSk7DQorICAgICAgICAgICAgaWYgKGNsaXBfc2NhbiAmJiBjbGlwX3NjYW5bY29sXSA8IDI1NSkgew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgZ3JheSwgY2xpcF9zY2FuW2NvbF0pOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBncmF5Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgRlhfQllURSBncmF5ID0gKHNyY19zY2FuWyhjb2wgKyBzcmNfbGVmdCkgLyA4XSAmICgxIDw8ICg3IC0gKGNvbCArIHNyY19sZWZ0KSAlIDgpKSkgPyBzZXRfZ3JheSA6IHJlc2V0X2dyYXk7DQorICAgICAgICBpZiAoY2xpcF9zY2FuICYmIGNsaXBfc2Nhbltjb2xdIDwgMjU1KSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGdyYXksIGNsaXBfc2Nhbltjb2xdKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IGdyYXk7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd18xYnBwUGFsMkdyYXlhKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBzcmNfbGVmdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBwUGFsZXR0ZSwgaW50IHBpeGVsX2NvdW50LCBpbnQgYmxlbmRfdHlwZSwgRlhfTFBDQllURSBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X2FscGhhX3NjYW4pDQorew0KKyAgICBpbnQgcmVzZXRfZ3JheSA9IHBQYWxldHRlWzBdOw0KKyAgICBpbnQgc2V0X2dyYXkgPSBwUGFsZXR0ZVsxXTsNCisgICAgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgIEZYX0JPT0wgYk5vbnNlcGFyYWJsZUJsZW5kID0gYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEU7DQorICAgICAgICBpbnQgYmxlbmRlZF9jb2xvcjsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICBGWF9CWVRFIGdyYXkgPSAoc3JjX3NjYW5bKGNvbCArIHNyY19sZWZ0KSAvIDhdICYgKDEgPDwgKDcgLSAoY29sICsgc3JjX2xlZnQpICUgOCkpKSA/IHNldF9ncmF5IDogcmVzZXRfZ3JheTsNCisgICAgICAgICAgICBpZiAoY2xpcF9zY2FuID09IE5VTEwgfHwgY2xpcF9zY2FuW2NvbF0gPT0gMjU1KSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IGdyYXk7DQorICAgICAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4gKysgPSAyNTU7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF07DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaW50IGJhY2tfYWxwaGEgPSAqZGVzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4gKysgPSBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgaWYgKGJOb25zZXBhcmFibGVCbGVuZCkgew0KKyAgICAgICAgICAgICAgICBibGVuZGVkX2NvbG9yID0gYmxlbmRfdHlwZSA9PSBGWERJQl9CTEVORF9MVU1JTk9TSVRZID8gZ3JheSA6ICpkZXN0X3NjYW47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGdyYXkgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yIDogX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIGdyYXkpOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgIEZYX0JZVEUgZ3JheSA9IChzcmNfc2NhblsoY29sICsgc3JjX2xlZnQpIC8gOF0gJiAoMSA8PCAoNyAtIChjb2wgKyBzcmNfbGVmdCkgJSA4KSkpID8gc2V0X2dyYXkgOiByZXNldF9ncmF5Ow0KKyAgICAgICAgaWYgKGNsaXBfc2NhbiA9PSBOVUxMIHx8IGNsaXBfc2Nhbltjb2xdID09IDI1NSkgew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IGdyYXk7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiArKyA9IDI1NTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXTsNCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpbnQgYmFja19hbHBoYSA9ICpkZXN0X2FscGhhX3NjYW47DQorICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICpkZXN0X2FscGhhX3NjYW4gKysgPSBkZXN0X2FscGhhOw0KKyAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBncmF5LCBhbHBoYV9yYXRpbyk7DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd184YnBwUmdiMlJnYl9Ob0JsZW5kKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIEZYX0RXT1JEKiBwUGFsZXR0ZSwgaW50IHBpeGVsX2NvdW50LA0KKyAgICAgICAgaW50IERlc3RCcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfYWxwaGFfc2NhbikNCit7DQorICAgIGlmIChzcmNfYWxwaGFfc2Nhbikgew0KKyAgICAgICAgaW50IGRlc3RfZ2FwID0gRGVzdEJwcCAtIDM7DQorICAgICAgICBGWF9BUkdCIGFyZ2IgPSAwOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgIGFyZ2IgPSBwUGFsZXR0ZVsqc3JjX3NjYW5dOw0KKyAgICAgICAgICAgIGludCBzcmNfciA9IEZYQVJHQl9SKGFyZ2IpOw0KKyAgICAgICAgICAgIGludCBzcmNfZyA9IEZYQVJHQl9HKGFyZ2IpOw0KKyAgICAgICAgICAgIGludCBzcmNfYiA9IEZYQVJHQl9CKGFyZ2IpOw0KKyAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgIEZYX0JZVEUgc3JjX2FscGhhID0gMDsNCisgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9ICgqc3JjX2FscGhhX3NjYW4rKykgKiAoKmNsaXBfc2NhbisrKSAvIDI1NTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSAqc3JjX2FscGhhX3NjYW4rKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAyNTUpIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX2I7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IHNyY19nOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBzcmNfcjsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IGRlc3RfZ2FwOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBEZXN0QnBwOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19iLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX2csIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfciwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IGRlc3RfZ2FwOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfQVJHQiBhcmdiID0gMDsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgICAgICBhcmdiID0gcFBhbGV0dGVbKnNyY19zY2FuXTsNCisgICAgICAgICAgICBpbnQgc3JjX3IgPSBGWEFSR0JfUihhcmdiKTsNCisgICAgICAgICAgICBpbnQgc3JjX2cgPSBGWEFSR0JfRyhhcmdiKTsNCisgICAgICAgICAgICBpbnQgc3JjX2IgPSBGWEFSR0JfQihhcmdiKTsNCisgICAgICAgICAgICBpZiAoY2xpcF9zY2FuICYmIGNsaXBfc2Nhbltjb2xdIDwgMjU1KSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfYiwgY2xpcF9zY2FuW2NvbF0pOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfZywgY2xpcF9zY2FuW2NvbF0pOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfciwgY2xpcF9zY2FuW2NvbF0pOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX2I7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IHNyY19nOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBzcmNfcjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKERlc3RCcHAgPT0gNCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4rKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICB9DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd18xYnBwUmdiMlJnYl9Ob0JsZW5kKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBzcmNfbGVmdCwNCisgICAgICAgIEZYX0RXT1JEKiBwUGFsZXR0ZSwgaW50IHBpeGVsX2NvdW50LCBpbnQgRGVzdEJwcCwgRlhfTFBDQllURSBjbGlwX3NjYW4pDQorew0KKyAgICBpbnQgcmVzZXRfciwgcmVzZXRfZywgcmVzZXRfYjsNCisgICAgaW50IHNldF9yLCBzZXRfZywgc2V0X2I7DQorICAgIHJlc2V0X3IgPSBGWEFSR0JfUihwUGFsZXR0ZVswXSk7DQorICAgIHJlc2V0X2cgPSBGWEFSR0JfRyhwUGFsZXR0ZVswXSk7DQorICAgIHJlc2V0X2IgPSBGWEFSR0JfQihwUGFsZXR0ZVswXSk7DQorICAgIHNldF9yID0gRlhBUkdCX1IocFBhbGV0dGVbMV0pOw0KKyAgICBzZXRfZyA9IEZYQVJHQl9HKHBQYWxldHRlWzFdKTsNCisgICAgc2V0X2IgPSBGWEFSR0JfQihwUGFsZXR0ZVsxXSk7DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgIGludCBzcmNfciwgc3JjX2csIHNyY19iOw0KKyAgICAgICAgaWYgKHNyY19zY2FuWyhjb2wgKyBzcmNfbGVmdCkgLyA4XSAmICgxIDw8ICg3IC0gKGNvbCArIHNyY19sZWZ0KSAlIDgpKSkgew0KKyAgICAgICAgICAgIHNyY19yID0gc2V0X3I7DQorICAgICAgICAgICAgc3JjX2cgPSBzZXRfZzsNCisgICAgICAgICAgICBzcmNfYiA9IHNldF9iOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfciA9IHJlc2V0X3I7DQorICAgICAgICAgICAgc3JjX2cgPSByZXNldF9nOw0KKyAgICAgICAgICAgIHNyY19iID0gcmVzZXRfYjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjbGlwX3NjYW4gJiYgY2xpcF9zY2FuW2NvbF0gPCAyNTUpIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX2IsIGNsaXBfc2Nhbltjb2xdKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19nLCBjbGlwX3NjYW5bY29sXSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfciwgY2xpcF9zY2FuW2NvbF0pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX2I7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX2c7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX3I7DQorICAgICAgICB9DQorICAgICAgICBpZiAoRGVzdEJwcCA9PSA0KSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuKys7DQorICAgICAgICB9DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd184YnBwUmdiMkFyZ2JfTm9CbGVuZChGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsDQorICAgICAgICBGWF9EV09SRCogcFBhbGV0dGUsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfYWxwaGFfc2NhbikNCit7DQorICAgIGlmIChzcmNfYWxwaGFfc2Nhbikgew0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIEZYX0FSR0IgYXJnYiA9IHBQYWxldHRlWypzcmNfc2Nhbl07DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgaW50IHNyY19yID0gRlhBUkdCX1IoYXJnYik7DQorICAgICAgICAgICAgaW50IHNyY19nID0gRlhBUkdCX0coYXJnYik7DQorICAgICAgICAgICAgaW50IHNyY19iID0gRlhBUkdCX0IoYXJnYik7DQorICAgICAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gZGVzdF9zY2FuWzNdOw0KKyAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogKCpzcmNfYWxwaGFfc2NhbikgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICBGWEFSR0JfU0VURElCKGRlc3Rfc2NhbiwgRlhBUkdCX01BS0Uoc3JjX2FscGhhLCBzcmNfciwgc3JjX2csIHNyY19iKSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBGWEFSR0JfU0VURElCKGRlc3Rfc2NhbiwgRlhBUkdCX01BS0UoKnNyY19hbHBoYV9zY2FuLCBzcmNfciwgc3JjX2csIHNyY19iKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgIHNyY19hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfQllURSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgaWYgKGNsaXBfc2NhbiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9ICpzcmNfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqICgqc3JjX2FscGhhX3NjYW4rKykgLyAyNTU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX2IsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19nLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfciwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICB9DQorICAgIH0gZWxzZQ0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIEZYX0FSR0IgYXJnYiA9IHBQYWxldHRlWypzcmNfc2Nhbl07DQorICAgICAgICAgICAgaW50IHNyY19yID0gRlhBUkdCX1IoYXJnYik7DQorICAgICAgICAgICAgaW50IHNyY19nID0gRlhBUkdCX0coYXJnYik7DQorICAgICAgICAgICAgaW50IHNyY19iID0gRlhBUkdCX0IoYXJnYik7DQorICAgICAgICAgICAgaWYgKGNsaXBfc2NhbiA9PSBOVUxMIHx8IGNsaXBfc2Nhbltjb2xdID09IDI1NSkgew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBzcmNfYjsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX2c7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IHNyY19yOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAyNTU7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdOw0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19iLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfZywgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX3IsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfOGJwcFJnYjJSZ2JhX05vQmxlbmQoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCogcFBhbGV0dGUsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9hbHBoYV9zY2FuLCBGWF9MUENCWVRFIHNyY19hbHBoYV9zY2FuKQ0KK3sNCisgICAgaWYgKHNyY19hbHBoYV9zY2FuKSB7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgRlhfQVJHQiBhcmdiID0gcFBhbGV0dGVbKnNyY19zY2FuXTsNCisgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICBpbnQgc3JjX3IgPSBGWEFSR0JfUihhcmdiKTsNCisgICAgICAgICAgICBpbnQgc3JjX2cgPSBGWEFSR0JfRyhhcmdiKTsNCisgICAgICAgICAgICBpbnQgc3JjX2IgPSBGWEFSR0JfQihhcmdiKTsNCisgICAgICAgICAgICBGWF9CWVRFIGJhY2tfYWxwaGEgPSAqZGVzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogKCpzcmNfYWxwaGFfc2NhbikgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuICsrID0gc3JjX2FscGhhOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiArKyA9ICpzcmNfYWxwaGFfc2NhbjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gc3JjX2I7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gKysgPSBzcmNfZzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiArKyA9IHNyY19yOw0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0JZVEUgc3JjX2FscGhhOw0KKyAgICAgICAgICAgIGlmIChjbGlwX3NjYW4gPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSAqc3JjX2FscGhhX3NjYW4rKzsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqICgqc3JjX2FscGhhX3NjYW4rKykgLyAyNTU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiArKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX2IsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19nLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfciwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgIH0NCisgICAgfSBlbHNlDQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgRlhfQVJHQiBhcmdiID0gcFBhbGV0dGVbKnNyY19zY2FuXTsNCisgICAgICAgICAgICBpbnQgc3JjX3IgPSBGWEFSR0JfUihhcmdiKTsNCisgICAgICAgICAgICBpbnQgc3JjX2cgPSBGWEFSR0JfRyhhcmdiKTsNCisgICAgICAgICAgICBpbnQgc3JjX2IgPSBGWEFSR0JfQihhcmdiKTsNCisgICAgICAgICAgICBpZiAoY2xpcF9zY2FuID09IE5VTEwgfHwgY2xpcF9zY2FuW2NvbF0gPT0gMjU1KSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IHNyY19iOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBzcmNfZzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX3I7DQorICAgICAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4rKyA9IDI1NTsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF07DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaW50IGJhY2tfYWxwaGEgPSAqZGVzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICpkZXN0X2FscGhhX3NjYW4gKysgPSBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19iLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfZywgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX3IsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfMWJwcFJnYjJBcmdiX05vQmxlbmQoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHNyY19sZWZ0LCBpbnQgd2lkdGgsDQorICAgICAgICBGWF9EV09SRCogcFBhbGV0dGUsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgaW50IHJlc2V0X3IsIHJlc2V0X2csIHJlc2V0X2I7DQorICAgIGludCBzZXRfciwgc2V0X2csIHNldF9iOw0KKyAgICByZXNldF9yID0gRlhBUkdCX1IocFBhbGV0dGVbMF0pOw0KKyAgICByZXNldF9nID0gRlhBUkdCX0cocFBhbGV0dGVbMF0pOw0KKyAgICByZXNldF9iID0gRlhBUkdCX0IocFBhbGV0dGVbMF0pOw0KKyAgICBzZXRfciA9IEZYQVJHQl9SKHBQYWxldHRlWzFdKTsNCisgICAgc2V0X2cgPSBGWEFSR0JfRyhwUGFsZXR0ZVsxXSk7DQorICAgIHNldF9iID0gRlhBUkdCX0IocFBhbGV0dGVbMV0pOw0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICBpbnQgc3JjX3IsIHNyY19nLCBzcmNfYjsNCisgICAgICAgIGlmIChzcmNfc2NhblsoY29sICsgc3JjX2xlZnQpIC8gOF0gJiAoMSA8PCAoNyAtIChjb2wgKyBzcmNfbGVmdCkgJSA4KSkpIHsNCisgICAgICAgICAgICBzcmNfciA9IHNldF9yOw0KKyAgICAgICAgICAgIHNyY19nID0gc2V0X2c7DQorICAgICAgICAgICAgc3JjX2IgPSBzZXRfYjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc3JjX3IgPSByZXNldF9yOw0KKyAgICAgICAgICAgIHNyY19nID0gcmVzZXRfZzsNCisgICAgICAgICAgICBzcmNfYiA9IHJlc2V0X2I7DQorICAgICAgICB9DQorICAgICAgICBpZiAoY2xpcF9zY2FuID09IE5VTEwgfHwgY2xpcF9zY2FuW2NvbF0gPT0gMjU1KSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX2I7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX2c7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX3I7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gMjU1Ow0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdOw0KKyAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpbnQgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgZGVzdF9zY2FuWzNdID0gZGVzdF9hbHBoYTsNCisgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX2IsIGFscGhhX3JhdGlvKTsNCisgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfZywgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19yLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgIH0NCit9DQordm9pZCBfQ29tcG9zaXRlUm93XzFicHBSZ2IyUmdiYV9Ob0JsZW5kKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBzcmNfbGVmdCwgaW50IHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCogcFBhbGV0dGUsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9hbHBoYV9zY2FuKQ0KK3sNCisgICAgaW50IHJlc2V0X3IsIHJlc2V0X2csIHJlc2V0X2I7DQorICAgIGludCBzZXRfciwgc2V0X2csIHNldF9iOw0KKyAgICByZXNldF9yID0gRlhBUkdCX1IocFBhbGV0dGVbMF0pOw0KKyAgICByZXNldF9nID0gRlhBUkdCX0cocFBhbGV0dGVbMF0pOw0KKyAgICByZXNldF9iID0gRlhBUkdCX0IocFBhbGV0dGVbMF0pOw0KKyAgICBzZXRfciA9IEZYQVJHQl9SKHBQYWxldHRlWzFdKTsNCisgICAgc2V0X2cgPSBGWEFSR0JfRyhwUGFsZXR0ZVsxXSk7DQorICAgIHNldF9iID0gRlhBUkdCX0IocFBhbGV0dGVbMV0pOw0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICBpbnQgc3JjX3IsIHNyY19nLCBzcmNfYjsNCisgICAgICAgIGlmIChzcmNfc2NhblsoY29sICsgc3JjX2xlZnQpIC8gOF0gJiAoMSA8PCAoNyAtIChjb2wgKyBzcmNfbGVmdCkgJSA4KSkpIHsNCisgICAgICAgICAgICBzcmNfciA9IHNldF9yOw0KKyAgICAgICAgICAgIHNyY19nID0gc2V0X2c7DQorICAgICAgICAgICAgc3JjX2IgPSBzZXRfYjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc3JjX3IgPSByZXNldF9yOw0KKyAgICAgICAgICAgIHNyY19nID0gcmVzZXRfZzsNCisgICAgICAgICAgICBzcmNfYiA9IHJlc2V0X2I7DQorICAgICAgICB9DQorICAgICAgICBpZiAoY2xpcF9zY2FuID09IE5VTEwgfHwgY2xpcF9zY2FuW2NvbF0gPT0gMjU1KSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX2I7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX2c7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX3I7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbisrID0gMjU1Ow0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdOw0KKyAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDM7DQorICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IGJhY2tfYWxwaGEgPSAqZGVzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAqZGVzdF9hbHBoYV9zY2FuICsrID0gZGVzdF9hbHBoYTsNCisgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX2IsIGFscGhhX3JhdGlvKTsNCisgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfZywgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19yLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgIH0NCit9DQordm9pZCBfQ29tcG9zaXRlUm93X0J5dGVNYXNrMkFyZ2IoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IG1hc2tfYWxwaGEsIGludCBzcmNfciwgaW50IHNyY19nLCBpbnQgc3JjX2IsIGludCBwaXhlbF9jb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxlbmRfdHlwZSwgRlhfTFBDQllURSBjbGlwX3NjYW4pDQorew0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICBpbnQgc3JjX2FscGhhOw0KKyAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IG1hc2tfYWxwaGEgKiBjbGlwX3NjYW5bY29sXSAqIHNyY19zY2FuW2NvbF0gLyAyNTUgLyAyNTU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IG1hc2tfYWxwaGEgKiBzcmNfc2Nhbltjb2xdIC8gMjU1Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gZGVzdF9zY2FuWzNdOw0KKyAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIEZYQVJHQl9TRVRESUIoZGVzdF9zY2FuLCBGWEFSR0JfTUFLRShzcmNfYWxwaGEsIHNyY19yLCBzcmNfZywgc3JjX2IpKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICBkZXN0X3NjYW5bM10gPSBkZXN0X2FscGhhOw0KKyAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgIGlmIChibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRSkgew0KKyAgICAgICAgICAgIGludCBibGVuZGVkX2NvbG9yc1szXTsNCisgICAgICAgICAgICBGWF9CWVRFIHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzBdID0gc3JjX2I7DQorICAgICAgICAgICAgc3JjX3NjYW5bMV0gPSBzcmNfZzsNCisgICAgICAgICAgICBzcmNfc2NhblsyXSA9IHNyY19yOw0KKyAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9yc1swXSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnNbMV0sIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzWzJdLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICB9IGVsc2UgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfYik7DQorICAgICAgICAgICAgYmxlbmRlZCA9IEZYRElCX0FMUEhBX01FUkdFKHNyY19iLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZCwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBibGVuZGVkID0gX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIHNyY19nKTsNCisgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0Uoc3JjX2csIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2Nhbiwgc3JjX3IpOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBGWERJQl9BTFBIQV9NRVJHRShzcmNfciwgYmxlbmRlZCwgYmFja19hbHBoYSk7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19iLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfZywgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX3IsIGFscGhhX3JhdGlvKTsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3Rfc2NhbiArPSAyOw0KKyAgICB9DQorfQ0KK3ZvaWQgX0NvbXBvc2l0ZVJvd19CeXRlTWFzazJSZ2JhKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBtYXNrX2FscGhhLCBpbnQgc3JjX3IsIGludCBzcmNfZywgaW50IHNyY19iLCBpbnQgcGl4ZWxfY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsZW5kX3R5cGUsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X2FscGhhX3NjYW4pDQorew0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICBpbnQgc3JjX2FscGhhOw0KKyAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IG1hc2tfYWxwaGEgKiBjbGlwX3NjYW5bY29sXSAqIHNyY19zY2FuW2NvbF0gLyAyNTUgLyAyNTU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IG1hc2tfYWxwaGEgKiBzcmNfc2Nhbltjb2xdIC8gMjU1Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gKmRlc3RfYWxwaGFfc2NhbjsNCisgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gc3JjX2I7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiArKyA9IHNyY19nOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gKysgPSBzcmNfcjsNCisgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuICsrID0gc3JjX2FscGhhOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDM7DQorICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICAqZGVzdF9hbHBoYV9zY2FuICsrID0gZGVzdF9hbHBoYTsNCisgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICBpZiAoYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEUpIHsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZF9jb2xvcnNbM107DQorICAgICAgICAgICAgRlhfQllURSBzcmNfc2NhblszXTsNCisgICAgICAgICAgICBzcmNfc2NhblswXSA9IHNyY19iOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzFdID0gc3JjX2c7DQorICAgICAgICAgICAgc3JjX3NjYW5bMl0gPSBzcmNfcjsNCisgICAgICAgICAgICBfUkdCX0JsZW5kKGJsZW5kX3R5cGUsIHNyY19zY2FuLCBkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzKTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnNbMF0sIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzWzFdLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9yc1syXSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgIH0gZWxzZSBpZiAoYmxlbmRfdHlwZSkgew0KKyAgICAgICAgICAgIGludCBibGVuZGVkID0gX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIHNyY19iKTsNCisgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0Uoc3JjX2IsIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2Nhbiwgc3JjX2cpOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBGWERJQl9BTFBIQV9NRVJHRShzcmNfZywgYmxlbmRlZCwgYmFja19hbHBoYSk7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfcik7DQorICAgICAgICAgICAgYmxlbmRlZCA9IEZYRElCX0FMUEhBX01FUkdFKHNyY19yLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZCwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19iLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfZywgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX3IsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICB9DQorICAgIH0NCit9DQordm9pZCBfQ29tcG9zaXRlUm93X0J5dGVNYXNrMlJnYihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgbWFza19hbHBoYSwgaW50IHNyY19yLCBpbnQgc3JjX2csIGludCBzcmNfYiwgaW50IHBpeGVsX2NvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsZW5kX3R5cGUsIGludCBCcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19hbHBoYTsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogY2xpcF9zY2FuW2NvbF0gKiBzcmNfc2Nhbltjb2xdIC8gMjU1IC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogc3JjX3NjYW5bY29sXSAvIDI1NTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHA7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEUpIHsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZF9jb2xvcnNbM107DQorICAgICAgICAgICAgRlhfQllURSBzcmNfc2NhblszXTsNCisgICAgICAgICAgICBzcmNfc2NhblswXSA9IHNyY19iOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzFdID0gc3JjX2c7DQorICAgICAgICAgICAgc3JjX3NjYW5bMl0gPSBzcmNfcjsNCisgICAgICAgICAgICBfUkdCX0JsZW5kKGJsZW5kX3R5cGUsIHNyY19zY2FuLCBkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzKTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnNbMF0sIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9yc1sxXSwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzWzJdLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgfSBlbHNlIGlmIChibGVuZF90eXBlKSB7DQorICAgICAgICAgICAgaW50IGJsZW5kZWQgPSBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2Nhbiwgc3JjX2IpOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBibGVuZGVkID0gX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIHNyY19nKTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZCwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfcik7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIHNyY19hbHBoYSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfYiwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19nLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX3IsIHNyY19hbHBoYSk7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gQnBwIC0gMjsNCisgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfQnl0ZU1hc2syTWFzayhGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgbWFza19hbHBoYSwgaW50IHBpeGVsX2NvdW50LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19hbHBoYTsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogY2xpcF9zY2FuW2NvbF0gKiBzcmNfc2Nhbltjb2xdIC8gMjU1IC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogc3JjX3NjYW5bY29sXSAvIDI1NTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9ICpkZXN0X3NjYW47DQorICAgICAgICBpZiAoIWJhY2tfYWxwaGEpIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gc3JjX2FscGhhOw0KKyAgICAgICAgfSBlbHNlIGlmIChzcmNfYWxwaGEpIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgIH0NCit9DQordm9pZCBfQ29tcG9zaXRlUm93X0J5dGVNYXNrMkdyYXkoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IG1hc2tfYWxwaGEsIGludCBzcmNfZ3JheSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxfY291bnQsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19hbHBoYTsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogY2xpcF9zY2FuW2NvbF0gKiBzcmNfc2Nhbltjb2xdIC8gMjU1IC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogc3JjX3NjYW5bY29sXSAvIDI1NTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfYWxwaGEpIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX2dyYXksIHNyY19hbHBoYSk7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgIH0NCit9DQordm9pZCBfQ29tcG9zaXRlUm93X0J5dGVNYXNrMkdyYXlhKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBtYXNrX2FscGhhLCBpbnQgc3JjX2dyYXksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwaXhlbF9jb3VudCwgRlhfTFBDQllURSBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X2FscGhhX3NjYW4pDQorew0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICBpbnQgc3JjX2FscGhhOw0KKyAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IG1hc2tfYWxwaGEgKiBjbGlwX3NjYW5bY29sXSAqIHNyY19zY2FuW2NvbF0gLyAyNTUgLyAyNTU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IG1hc2tfYWxwaGEgKiBzcmNfc2Nhbltjb2xdIC8gMjU1Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gKmRlc3RfYWxwaGFfc2NhbjsNCisgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gc3JjX2dyYXk7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiArKyA9IHNyY19hbHBoYTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICpkZXN0X2FscGhhX3NjYW4rKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19ncmF5LCBhbHBoYV9yYXRpbyk7DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgIH0NCit9DQordm9pZCBfQ29tcG9zaXRlUm93X0JpdE1hc2syQXJnYihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgbWFza19hbHBoYSwgaW50IHNyY19yLCBpbnQgc3JjX2csIGludCBzcmNfYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfbGVmdCwgaW50IHBpeGVsX2NvdW50LCBpbnQgYmxlbmRfdHlwZSwgRlhfTFBDQllURSBjbGlwX3NjYW4pDQorew0KKyAgICBpZiAoYmxlbmRfdHlwZSA9PSBGWERJQl9CTEVORF9OT1JNQUwgJiYgY2xpcF9zY2FuID09IE5VTEwgJiYgbWFza19hbHBoYSA9PSAyNTUpIHsNCisgICAgICAgIEZYX0FSR0IgYXJnYiA9IEZYQVJHQl9NQUtFKDB4ZmYsIHNyY19yLCBzcmNfZywgc3JjX2IpOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgIGlmIChzcmNfc2Nhblsoc3JjX2xlZnQgKyBjb2wpIC8gOF0gJiAoMSA8PCAoNyAtIChzcmNfbGVmdCArIGNvbCkgJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIGFyZ2IpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICBpZiAoIShzcmNfc2Nhblsoc3JjX2xlZnQgKyBjb2wpIC8gOF0gJiAoMSA8PCAoNyAtIChzcmNfbGVmdCArIGNvbCkgJSA4KSkpKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpbnQgc3JjX2FscGhhOw0KKyAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IG1hc2tfYWxwaGEgKiBjbGlwX3NjYW5bY29sXSAvIDI1NTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gbWFza19hbHBoYTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICBGWEFSR0JfU0VURElCKGRlc3Rfc2NhbiwgRlhBUkdCX01BS0Uoc3JjX2FscGhhLCBzcmNfciwgc3JjX2csIHNyY19iKSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgIGRlc3Rfc2NhblszXSA9IGRlc3RfYWxwaGE7DQorICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgaWYgKGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFKSB7DQorICAgICAgICAgICAgaW50IGJsZW5kZWRfY29sb3JzWzNdOw0KKyAgICAgICAgICAgIEZYX0JZVEUgc3JjX3NjYW5bM107DQorICAgICAgICAgICAgc3JjX3NjYW5bMF0gPSBzcmNfYjsNCisgICAgICAgICAgICBzcmNfc2NhblsxXSA9IHNyY19nOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzJdID0gc3JjX3I7DQorICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfc2NhbiwgZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzWzBdLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9yc1sxXSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnNbMl0sIGFscGhhX3JhdGlvKTsNCisgICAgICAgIH0gZWxzZSBpZiAoYmxlbmRfdHlwZSkgew0KKyAgICAgICAgICAgIGludCBibGVuZGVkID0gX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIHNyY19iKTsNCisgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0Uoc3JjX2IsIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2Nhbiwgc3JjX2cpOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBGWERJQl9BTFBIQV9NRVJHRShzcmNfZywgYmxlbmRlZCwgYmFja19hbHBoYSk7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfcik7DQorICAgICAgICAgICAgYmxlbmRlZCA9IEZYRElCX0FMUEhBX01FUkdFKHNyY19yLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZCwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX2IsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19nLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfciwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICs9IDI7DQorICAgIH0NCit9DQordm9pZCBfQ29tcG9zaXRlUm93X0JpdE1hc2syUmdiYShGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgbWFza19hbHBoYSwgaW50IHNyY19yLCBpbnQgc3JjX2csIGludCBzcmNfYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfbGVmdCwgaW50IHBpeGVsX2NvdW50LCBpbnQgYmxlbmRfdHlwZSwgRlhfTFBDQllURSBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9hbHBoYV9zY2FuKQ0KK3sNCisgICAgaWYgKGJsZW5kX3R5cGUgPT0gRlhESUJfQkxFTkRfTk9STUFMICYmIGNsaXBfc2NhbiA9PSBOVUxMICYmIG1hc2tfYWxwaGEgPT0gMjU1KSB7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICAgICAgaWYgKHNyY19zY2FuWyhzcmNfbGVmdCArIGNvbCkgLyA4XSAmICgxIDw8ICg3IC0gKHNyY19sZWZ0ICsgY29sKSAlIDgpKSkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBzcmNfYjsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gc3JjX2c7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IHNyY19yOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuID0gbWFza19hbHBoYTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDM7DQorICAgICAgICAgICAgZGVzdF9hbHBoYV9zY2FuICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgIGlmICghKHNyY19zY2FuWyhzcmNfbGVmdCArIGNvbCkgLyA4XSAmICgxIDw8ICg3IC0gKHNyY19sZWZ0ICsgY29sKSAlIDgpKSkpIHsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gMzsNCisgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpbnQgc3JjX2FscGhhOw0KKyAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IG1hc2tfYWxwaGEgKiBjbGlwX3NjYW5bY29sXSAvIDI1NTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gbWFza19hbHBoYTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gc3JjX2I7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiArKyA9IHNyY19nOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gKysgPSBzcmNfcjsNCisgICAgICAgICAgICAqZGVzdF9hbHBoYV9zY2FuICsrID0gbWFza19hbHBoYTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiArKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgaWYgKGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFKSB7DQorICAgICAgICAgICAgaW50IGJsZW5kZWRfY29sb3JzWzNdOw0KKyAgICAgICAgICAgIEZYX0JZVEUgc3JjX3NjYW5bM107DQorICAgICAgICAgICAgc3JjX3NjYW5bMF0gPSBzcmNfYjsNCisgICAgICAgICAgICBzcmNfc2NhblsxXSA9IHNyY19nOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzJdID0gc3JjX3I7DQorICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfc2NhbiwgZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzWzBdLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9yc1sxXSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnNbMl0sIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICB9IGVsc2UgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfYik7DQorICAgICAgICAgICAgYmxlbmRlZCA9IEZYRElCX0FMUEhBX01FUkdFKHNyY19iLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZCwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBibGVuZGVkID0gX0JMRU5EKGJsZW5kX3R5cGUsICpkZXN0X3NjYW4sIHNyY19nKTsNCisgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0Uoc3JjX2csIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBfQkxFTkQoYmxlbmRfdHlwZSwgKmRlc3Rfc2Nhbiwgc3JjX3IpOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBGWERJQl9BTFBIQV9NRVJHRShzcmNfciwgYmxlbmRlZCwgYmFja19hbHBoYSk7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfYiwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX2csIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19yLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgX0NvbXBvc2l0ZVJvd19CaXRNYXNrMlJnYihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgbWFza19hbHBoYSwgaW50IHNyY19yLCBpbnQgc3JjX2csIGludCBzcmNfYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19sZWZ0LCBpbnQgcGl4ZWxfY291bnQsIGludCBibGVuZF90eXBlLCBpbnQgQnBwLCBGWF9MUENCWVRFIGNsaXBfc2NhbikNCit7DQorICAgIGlmIChibGVuZF90eXBlID09IEZYRElCX0JMRU5EX05PUk1BTCAmJiBjbGlwX3NjYW4gPT0gTlVMTCAmJiBtYXNrX2FscGhhID09IDI1NSkgew0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgIGlmIChzcmNfc2Nhblsoc3JjX2xlZnQgKyBjb2wpIC8gOF0gJiAoMSA8PCAoNyAtIChzcmNfbGVmdCArIGNvbCkgJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gc3JjX3I7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IHNyY19nOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBzcmNfYjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICBpZiAoIShzcmNfc2Nhblsoc3JjX2xlZnQgKyBjb2wpIC8gOF0gJiAoMSA8PCAoNyAtIChzcmNfbGVmdCArIGNvbCkgJSA4KSkpKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBzcmNfYWxwaGE7DQorICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gbWFza19hbHBoYSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRSkgew0KKyAgICAgICAgICAgIGludCBibGVuZGVkX2NvbG9yc1szXTsNCisgICAgICAgICAgICBGWF9CWVRFIHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzBdID0gc3JjX2I7DQorICAgICAgICAgICAgc3JjX3NjYW5bMV0gPSBzcmNfZzsNCisgICAgICAgICAgICBzcmNfc2NhblsyXSA9IHNyY19yOw0KKyAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBibGVuZGVkX2NvbG9yc1swXSwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWRfY29sb3JzWzFdLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgYmxlbmRlZF9jb2xvcnNbMl0sIHNyY19hbHBoYSk7DQorICAgICAgICB9IGVsc2UgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfYik7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuKys7DQorICAgICAgICAgICAgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfZyk7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuKys7DQorICAgICAgICAgICAgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCAqZGVzdF9zY2FuLCBzcmNfcik7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGJsZW5kZWQsIHNyY19hbHBoYSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBzcmNfYiwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19nLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2Nhbiwgc3JjX3IsIHNyY19hbHBoYSk7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gQnBwIC0gMjsNCisgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfQml0TWFzazJNYXNrKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBtYXNrX2FscGhhLCBpbnQgc3JjX2xlZnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxfY291bnQsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgaWYgKCEoc3JjX3NjYW5bKHNyY19sZWZ0ICsgY29sKSAvIDhdICYgKDEgPDwgKDcgLSAoc3JjX2xlZnQgKyBjb2wpICUgOCkpKSkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBzcmNfYWxwaGE7DQorICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gbWFza19hbHBoYSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gKmRlc3Rfc2NhbjsNCisgICAgICAgIGlmICghYmFja19hbHBoYSkgew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBzcmNfYWxwaGE7DQorICAgICAgICB9IGVsc2UgaWYgKHNyY19hbHBoYSkgew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfQml0TWFzazJHcmF5KEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBtYXNrX2FscGhhLCBpbnQgc3JjX2dyYXksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2xlZnQsIGludCBwaXhlbF9jb3VudCwgRlhfTFBDQllURSBjbGlwX3NjYW4pDQorew0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICBpZiAoIShzcmNfc2Nhblsoc3JjX2xlZnQgKyBjb2wpIC8gOF0gJiAoMSA8PCAoNyAtIChzcmNfbGVmdCArIGNvbCkgJSA4KSkpKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IHNyY19hbHBoYTsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogY2xpcF9zY2FuW2NvbF0gLyAyNTU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IG1hc2tfYWxwaGE7DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3JjX2FscGhhKSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19ncmF5LCBzcmNfYWxwaGEpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICB9DQorfQ0KK3ZvaWQgX0NvbXBvc2l0ZVJvd19CaXRNYXNrMkdyYXlhKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBtYXNrX2FscGhhLCBpbnQgc3JjX2dyYXksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19sZWZ0LCBpbnQgcGl4ZWxfY291bnQsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X2FscGhhX3NjYW4pDQorew0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICBpZiAoIShzcmNfc2Nhblsoc3JjX2xlZnQgKyBjb2wpIC8gOF0gJiAoMSA8PCAoNyAtIChzcmNfbGVmdCArIGNvbCkgJSA4KSkpKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArKzsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBzcmNfYWxwaGE7DQorICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gbWFza19hbHBoYSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gKmRlc3RfYWxwaGFfc2NhbjsNCisgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gc3JjX2dyYXk7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiArKyA9IHNyY19hbHBoYTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICBkZXN0X2FscGhhX3NjYW4gKys7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICpkZXN0X2FscGhhX3NjYW4rKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIHNyY19ncmF5LCBhbHBoYV9yYXRpbyk7DQorICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgIH0NCit9DQordm9pZCBfQ29tcG9zaXRlUm93X0FyZ2IyQXJnYl9SZ2JCeXRlT3JkZXIoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHBpeGVsX2NvdW50LCBpbnQgYmxlbmRfdHlwZSwgRlhfTFBDQllURSBjbGlwX3NjYW4pDQorew0KKyAgICBpbnQgYmxlbmRlZF9jb2xvcnNbM107DQorICAgIEZYX0JPT0wgYk5vbnNlcGFyYWJsZUJsZW5kID0gYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEU7DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXSAqIHNyY19zY2FuWzNdIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSBzcmNfYWxwaGE7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IHNyY19zY2FuWzJdOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBzcmNfc2NhblsxXTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gc3JjX3NjYW5bMF07DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgRlhBUkdCX1JHQk9SREVSQ09QWShkZXN0X3NjYW4sIHNyY19zY2FuKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgc3JjX2FscGhhOw0KKyAgICAgICAgaWYgKGNsaXBfc2NhbiA9PSBOVUxMKSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bM107DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdICogc3JjX3NjYW5bM10gLyAyNTU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICBkZXN0X3NjYW5bM10gPSBkZXN0X2FscGhhOw0KKyAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICBGWF9CWVRFIGRlc3Rfc2Nhbl9vWzNdOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9vWzBdID0gZGVzdF9zY2FuWzJdOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9vWzFdID0gZGVzdF9zY2FuWzFdOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9vWzJdID0gZGVzdF9zY2FuWzBdOw0KKyAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2Nhbl9vLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICBpbnQgaW5kZXggPSAyIC0gY29sb3I7DQorICAgICAgICAgICAgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICAgICAgaW50IGJsZW5kZWQgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yc1tjb2xvcl0gOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CTEVORChibGVuZF90eXBlLCBkZXN0X3NjYW5baW5kZXhdLCAqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0UoKnNyY19zY2FuLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2luZGV4XSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhbltpbmRleF0sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5baW5kZXhdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuW2luZGV4XSwgKnNyY19zY2FuLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICBzcmNfc2NhbisrOw0KKyAgICB9DQorfQ0KK3ZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9CbGVuZF9Ob0NsaXBfUmdiQnl0ZU9yZGVyKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGJsZW5kX3R5cGUsIGludCBzcmNfQnBwKQ0KK3sNCisgICAgaW50IGJsZW5kZWRfY29sb3JzWzNdOw0KKyAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICBpbnQgc3JjX2dhcCA9IHNyY19CcHAgLSAzOw0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICBGWF9CWVRFIGJhY2tfYWxwaGEgPSBkZXN0X3NjYW5bM107DQorICAgICAgICBpZiAoYmFja19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgaWYgKHNyY19CcHAgPT0gNCkgew0KKyAgICAgICAgICAgICAgICBGWEFSR0JfU0VUUkdCT1JERVJESUIoZGVzdF9zY2FuLCAweGZmMDAwMDAwIHwgRlhBUkdCX0dFVERJQihzcmNfc2NhbikpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIEZYQVJHQl9TRVRSR0JPUkRFUkRJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKDB4ZmYsIHNyY19zY2FuWzJdLCBzcmNfc2NhblsxXSwgc3JjX3NjYW5bMF0pKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3Rfc2NhblszXSA9IDB4ZmY7DQorICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKQl7DQorICAgICAgICAgICAgRlhfQllURSBkZXN0X3NjYW5fb1szXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1swXSA9IGRlc3Rfc2NhblsyXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1sxXSA9IGRlc3Rfc2NhblsxXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1syXSA9IGRlc3Rfc2NhblswXTsNCisgICAgICAgICAgICBfUkdCX0JsZW5kKGJsZW5kX3R5cGUsIHNyY19zY2FuLCBkZXN0X3NjYW5fbywgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgaW50IGluZGV4ID0gMiAtIGNvbG9yOw0KKyAgICAgICAgICAgIGludCBzcmNfY29sb3IgPSBGWF9HQU1NQSgqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgIGludCBibGVuZGVkID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvcnNbY29sb3JdIDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9CTEVORChibGVuZF90eXBlLCBkZXN0X3NjYW5baW5kZXhdLCBzcmNfY29sb3IpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbltpbmRleF0gPSBGWERJQl9BTFBIQV9NRVJHRShzcmNfY29sb3IsIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICBzcmNfc2NhbiArPSBzcmNfZ2FwOw0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfQXJnYjJSZ2JfQmxlbmRfUmdiQnl0ZU9yZGVyKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGJsZW5kX3R5cGUsIGludCBkZXN0X0JwcCwgRlhfTFBDQllURSBjbGlwX3NjYW4pDQorew0KKyAgICBpbnQgYmxlbmRlZF9jb2xvcnNbM107DQorICAgIEZYX0JPT0wgYk5vbnNlcGFyYWJsZUJsZW5kID0gYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEU7DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgIEZYX0JZVEUgc3JjX2FscGhhOw0KKyAgICAgICAgaWYgKGNsaXBfc2Nhbikgew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzNdICogKCpjbGlwX3NjYW4rKykgLyAyNTU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzNdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IGRlc3RfQnBwOw0KKyAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgRlhfQllURSBkZXN0X3NjYW5fb1szXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1swXSA9IGRlc3Rfc2NhblsyXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1sxXSA9IGRlc3Rfc2NhblsxXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1syXSA9IGRlc3Rfc2NhblswXTsNCisgICAgICAgICAgICBfUkdCX0JsZW5kKGJsZW5kX3R5cGUsIHNyY19zY2FuLCBkZXN0X3NjYW5fbywgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgaW50IGluZGV4ID0gMiAtIGNvbG9yOw0KKyAgICAgICAgICAgIGludCBiYWNrX2NvbG9yID0gRlhfR0FNTUEoZGVzdF9zY2FuW2luZGV4XSk7DQorICAgICAgICAgICAgaW50IGJsZW5kZWQgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yc1tjb2xvcl0gOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgX0JMRU5EKGJsZW5kX3R5cGUsIGJhY2tfY29sb3IsICpzcmNfc2Nhbik7DQorICAgICAgICAgICAgZGVzdF9zY2FuW2luZGV4XSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoYmFja19jb2xvciwgYmxlbmRlZCwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9CcHA7DQorICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgfQ0KK30NCitpbmxpbmUgdm9pZCBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX05vQmxlbmRfTm9DbGlwX1JnYkJ5dGVPcmRlcihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsIGludCBzcmNfQnBwKQ0KK3sNCisgICAgaW50IHNyY19nYXAgPSBzcmNfQnBwIC0gMzsNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgaWYgKHNyY19CcHAgPT0gNCkgew0KKyAgICAgICAgICAgIEZYQVJHQl9TRVRSR0JPUkRFUkRJQihkZXN0X3NjYW4sIDB4ZmYwMDAwMDAgfCBGWEFSR0JfR0VURElCKHNyY19zY2FuKSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEZYQVJHQl9TRVRSR0JPUkRFUkRJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKDB4ZmYsIHNyY19zY2FuWzJdLCBzcmNfc2NhblsxXSwgc3JjX3NjYW5bMF0pKTsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgfQ0KK30NCitpbmxpbmUgdm9pZCBfQ29tcG9zaXRlUm93X1JnYjJSZ2JfQmxlbmRfTm9DbGlwX1JnYkJ5dGVPcmRlcihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsIGludCBibGVuZF90eXBlLCBpbnQgZGVzdF9CcHAsIGludCBzcmNfQnBwKQ0KK3sNCisgICAgaW50IGJsZW5kZWRfY29sb3JzWzNdOw0KKyAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICBpbnQgc3JjX2dhcCA9IHNyY19CcHAgLSAzOw0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgRlhfQllURSBkZXN0X3NjYW5fb1szXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1swXSA9IGRlc3Rfc2NhblsyXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1sxXSA9IGRlc3Rfc2NhblsxXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1syXSA9IGRlc3Rfc2NhblswXTsNCisgICAgICAgICAgICBfUkdCX0JsZW5kKGJsZW5kX3R5cGUsIHNyY19zY2FuLCBkZXN0X3NjYW5fbywgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgaW50IGluZGV4ID0gMiAtIGNvbG9yOw0KKyAgICAgICAgICAgIGludCBiYWNrX2NvbG9yID0gRlhfR0FNTUEoZGVzdF9zY2FuW2luZGV4XSk7DQorICAgICAgICAgICAgaW50IHNyY19jb2xvciA9IEZYX0dBTU1BKCpzcmNfc2Nhbik7DQorICAgICAgICAgICAgaW50IGJsZW5kZWQgPSBiTm9uc2VwYXJhYmxlQmxlbmQgPyBibGVuZGVkX2NvbG9yc1tjb2xvcl0gOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgX0JMRU5EKGJsZW5kX3R5cGUsIGJhY2tfY29sb3IsIHNyY19jb2xvcik7DQorICAgICAgICAgICAgZGVzdF9zY2FuW2luZGV4XSA9IEZYX0dBTU1BX0lOVkVSU0UoYmxlbmRlZCk7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9CcHA7DQorICAgICAgICBzcmNfc2NhbiArPSBzcmNfZ2FwOw0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfQXJnYjJSZ2JfTm9CbGVuZF9SZ2JCeXRlT3JkZXIoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBpbnQgZGVzdF9CcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgRlhfQllURSBzcmNfYWxwaGE7DQorICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bM10gKiAoKmNsaXBfc2NhbisrKSAvIDI1NTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bM107DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3JjX2FscGhhID09IDI1NSkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoKnNyY19zY2FuKyspOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYX0dBTU1BX0lOVkVSU0UoKnNyY19zY2FuKyspOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoKnNyY19zY2FuKyspOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X0JwcDsNCisgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X0JwcDsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgaW50IGluZGV4ID0gMiAtIGNvbG9yOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbltpbmRleF0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhbltpbmRleF0pLCAqc3JjX3NjYW4sIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICs9IGRlc3RfQnBwOw0KKyAgICAgICAgc3JjX3NjYW4gKys7DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX05vQmxlbmRfTm9DbGlwX1JnYkJ5dGVPcmRlcihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsIGludCBkZXN0X0JwcCwgaW50IHNyY19CcHApDQorew0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICBkZXN0X3NjYW5bMl0gPSBzcmNfc2NhblswXTsNCisgICAgICAgIGRlc3Rfc2NhblsxXSA9IHNyY19zY2FuWzFdOw0KKyAgICAgICAgZGVzdF9zY2FuWzBdID0gc3JjX3NjYW5bMl07DQorICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9CcHA7DQorICAgICAgICBzcmNfc2NhbiArPSBzcmNfQnBwOw0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfUmdiMkFyZ2JfQmxlbmRfQ2xpcF9SZ2JCeXRlT3JkZXIoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBpbnQgYmxlbmRfdHlwZSwgaW50IHNyY19CcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgaW50IGJsZW5kZWRfY29sb3JzWzNdOw0KKyAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICBpbnQgc3JjX2dhcCA9IHNyY19CcHAgLSAzOw0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICBpbnQgc3JjX2FscGhhID0gKmNsaXBfc2NhbiArKzsNCisgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQSgqc3JjX3NjYW4rKyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUEoKnNyY19zY2FuKyspOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BKCpzcmNfc2NhbisrKTsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfZ2FwOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgZGVzdF9zY2FuWzNdID0gZGVzdF9hbHBoYTsNCisgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICBpZiAoYk5vbnNlcGFyYWJsZUJsZW5kKSB7DQorICAgICAgICAgICAgRlhfQllURSBkZXN0X3NjYW5fb1szXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1swXSA9IGRlc3Rfc2NhblsyXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1sxXSA9IGRlc3Rfc2NhblsxXTsNCisgICAgICAgICAgICBkZXN0X3NjYW5fb1syXSA9IGRlc3Rfc2NhblswXTsNCisgICAgICAgICAgICBfUkdCX0JsZW5kKGJsZW5kX3R5cGUsIHNyY19zY2FuLCBkZXN0X3NjYW5fbywgYmxlbmRlZF9jb2xvcnMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgaW50IGluZGV4ID0gMiAtIGNvbG9yOw0KKyAgICAgICAgICAgIGludCBzcmNfY29sb3IgPSBGWF9HQU1NQSgqc3JjX3NjYW4pOw0KKyAgICAgICAgICAgIGludCBibGVuZGVkID0gYk5vbnNlcGFyYWJsZUJsZW5kID8gYmxlbmRlZF9jb2xvcnNbY29sb3JdIDoNCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9CTEVORChibGVuZF90eXBlLCBkZXN0X3NjYW5baW5kZXhdLCBzcmNfY29sb3IpOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBGWERJQl9BTFBIQV9NRVJHRShzcmNfY29sb3IsIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbltpbmRleF0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5baW5kZXhdLCBibGVuZGVkLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgIHNyY19zY2FuICs9IHNyY19nYXA7DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX0JsZW5kX0NsaXBfUmdiQnl0ZU9yZGVyKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IGJsZW5kX3R5cGUsIGludCBkZXN0X0JwcCwgaW50IHNyY19CcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgaW50IGJsZW5kZWRfY29sb3JzWzNdOw0KKyAgICBGWF9CT09MIGJOb25zZXBhcmFibGVCbGVuZCA9IGJsZW5kX3R5cGUgPj0gRlhESUJfQkxFTkRfTk9OU0VQQVJBQkxFOw0KKyAgICBpbnQgc3JjX2dhcCA9IHNyY19CcHAgLSAzOw0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICBGWF9CWVRFIHNyY19hbHBoYSA9ICpjbGlwX3NjYW4gKys7DQorICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9CcHA7DQorICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX0JwcDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChiTm9uc2VwYXJhYmxlQmxlbmQpIHsNCisgICAgICAgICAgICBGWF9CWVRFIGRlc3Rfc2Nhbl9vWzNdOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9vWzBdID0gZGVzdF9zY2FuWzJdOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9vWzFdID0gZGVzdF9zY2FuWzFdOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9vWzJdID0gZGVzdF9zY2FuWzBdOw0KKyAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2Nhbl9vLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCBjb2xvciA9IDA7IGNvbG9yIDwgMzsgY29sb3IgKyspIHsNCisgICAgICAgICAgICBpbnQgaW5kZXggPSAyIC0gY29sb3I7DQorICAgICAgICAgICAgaW50IHNyY19jb2xvciA9IEZYX0dBTU1BKCpzcmNfc2Nhbik7DQorICAgICAgICAgICAgaW50IGJhY2tfY29sb3IgPSBGWF9HQU1NQShkZXN0X3NjYW5baW5kZXhdKTsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IGJOb25zZXBhcmFibGVCbGVuZCA/IGJsZW5kZWRfY29sb3JzW2NvbG9yXSA6DQorICAgICAgICAgICAgICAgICAgICAgICAgICBfQkxFTkQoYmxlbmRfdHlwZSwgYmFja19jb2xvciwgc3JjX2NvbG9yKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5baW5kZXhdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShiYWNrX2NvbG9yLCBibGVuZGVkLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X0JwcDsNCisgICAgICAgIHNyY19zY2FuICs9IHNyY19nYXA7DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9Ob0JsZW5kX0NsaXBfUmdiQnl0ZU9yZGVyKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgaW50IHNyY19CcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgaW50IHNyY19nYXAgPSBzcmNfQnBwIC0gMzsNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19hbHBoYSA9IGNsaXBfc2Nhbltjb2xdOw0KKyAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAyNTUpIHsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQSgqc3JjX3NjYW4rKyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUEoKnNyY19zY2FuKyspOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BKCpzcmNfc2NhbisrKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSAyNTU7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgc3JjX3NjYW4gICs9IHNyY19nYXA7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfQnBwOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IGJhY2tfYWxwaGEgPSBkZXN0X3NjYW5bM107DQorICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgIGRlc3Rfc2NhblszXSA9IGRlc3RfYWxwaGE7DQorICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgZm9yIChpbnQgY29sb3IgPSAwOyBjb2xvciA8IDM7IGNvbG9yICsrKSB7DQorICAgICAgICAgICAgaW50IGluZGV4ID0gMiAtIGNvbG9yOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbltpbmRleF0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5baW5kZXhdLCBGWF9HQU1NQSgqc3JjX3NjYW4pLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgIHNyY19zY2FuICs9IHNyY19nYXA7DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX05vQmxlbmRfQ2xpcF9SZ2JCeXRlT3JkZXIoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHdpZHRoLCBpbnQgZGVzdF9CcHAsIGludCBzcmNfQnBwLCBGWF9MUENCWVRFIGNsaXBfc2NhbikNCit7DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgIGludCBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXTsNCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMjU1KSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gc3JjX3NjYW5bMF07DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gc3JjX3NjYW5bMV07DQorICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gc3JjX3NjYW5bMl07DQorICAgICAgICB9IGVsc2UgaWYgKHNyY19hbHBoYSkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzJdKSwgRlhfR0FNTUEoKnNyY19zY2FuKSwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBGWF9HQU1NQSgqc3JjX3NjYW4pLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblswXSksIEZYX0dBTU1BKCpzcmNfc2NhbiksIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X0JwcDsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfQnBwIC0gMjsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X0JwcDsNCisgICAgICAgIHNyY19zY2FuICs9IHNyY19CcHA7DQorICAgIH0NCit9DQoraW5saW5lIHZvaWQgX0NvbXBvc2l0ZVJvd184YnBwUmdiMlJnYl9Ob0JsZW5kX1JnYkJ5dGVPcmRlcihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBGWF9BUkdCKiBwUGFsZXR0ZSwgaW50IHBpeGVsX2NvdW50LA0KKyAgICAgICAgaW50IERlc3RCcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgRlhfQVJHQiBhcmdiID0gcFBhbGV0dGUgPyBwUGFsZXR0ZVsqc3JjX3NjYW5dIDogKCpzcmNfc2NhbikgKiAweDAxMDEwMTsNCisgICAgICAgIGludCBzcmNfciA9IEZYQVJHQl9SKGFyZ2IpOw0KKyAgICAgICAgaW50IHNyY19nID0gRlhBUkdCX0coYXJnYik7DQorICAgICAgICBpbnQgc3JjX2IgPSBGWEFSR0JfQihhcmdiKTsNCisgICAgICAgIGlmIChjbGlwX3NjYW4gJiYgY2xpcF9zY2FuW2NvbF0gPCAyNTUpIHsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMl0sIHNyY19iLCBjbGlwX3NjYW5bY29sXSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzFdLCBzcmNfZywgY2xpcF9zY2FuW2NvbF0pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblswXSwgc3JjX3IsIGNsaXBfc2Nhbltjb2xdKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gc3JjX2I7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gc3JjX2c7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gc3JjX3I7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gRGVzdEJwcDsNCisgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfMWJwcFJnYjJSZ2JfTm9CbGVuZF9SZ2JCeXRlT3JkZXIoRlhfTFBCWVRFIGRlc3Rfc2NhbiwgRlhfTFBDQllURSBzcmNfc2NhbiwgaW50IHNyY19sZWZ0LA0KKyAgICAgICAgRlhfQVJHQiogcFBhbGV0dGUsIGludCBwaXhlbF9jb3VudCwgaW50IERlc3RCcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgaW50IHJlc2V0X3IsIHJlc2V0X2csIHJlc2V0X2I7DQorICAgIGludCBzZXRfciwgc2V0X2csIHNldF9iOw0KKyAgICBpZiAocFBhbGV0dGUpIHsNCisgICAgICAgIHJlc2V0X3IgPSBGWEFSR0JfUihwUGFsZXR0ZVswXSk7DQorICAgICAgICByZXNldF9nID0gRlhBUkdCX0cocFBhbGV0dGVbMF0pOw0KKyAgICAgICAgcmVzZXRfYiA9IEZYQVJHQl9CKHBQYWxldHRlWzBdKTsNCisgICAgICAgIHNldF9yID0gRlhBUkdCX1IocFBhbGV0dGVbMV0pOw0KKyAgICAgICAgc2V0X2cgPSBGWEFSR0JfRyhwUGFsZXR0ZVsxXSk7DQorICAgICAgICBzZXRfYiA9IEZYQVJHQl9CKHBQYWxldHRlWzFdKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJlc2V0X3IgPSByZXNldF9nID0gcmVzZXRfYiA9IDA7DQorICAgICAgICBzZXRfciA9IHNldF9nID0gc2V0X2IgPSAyNTU7DQorICAgIH0NCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19yLCBzcmNfZywgc3JjX2I7DQorICAgICAgICBpZiAoc3JjX3NjYW5bKGNvbCArIHNyY19sZWZ0KSAvIDhdICYgKDEgPDwgKDcgLSAoY29sICsgc3JjX2xlZnQpICUgOCkpKSB7DQorICAgICAgICAgICAgc3JjX3IgPSBzZXRfcjsNCisgICAgICAgICAgICBzcmNfZyA9IHNldF9nOw0KKyAgICAgICAgICAgIHNyY19iID0gc2V0X2I7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNyY19yID0gcmVzZXRfcjsNCisgICAgICAgICAgICBzcmNfZyA9IHJlc2V0X2c7DQorICAgICAgICAgICAgc3JjX2IgPSByZXNldF9iOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNsaXBfc2NhbiAmJiBjbGlwX3NjYW5bY29sXSA8IDI1NSkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblsyXSwgc3JjX2IsIGNsaXBfc2Nhbltjb2xdKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMV0sIHNyY19nLCBjbGlwX3NjYW5bY29sXSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzBdLCBzcmNfciwgY2xpcF9zY2FuW2NvbF0pOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBzcmNfYjsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBzcmNfZzsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBzcmNfcjsNCisgICAgICAgIH0NCisgICAgICAgIGRlc3Rfc2NhbiArPSBEZXN0QnBwOw0KKyAgICB9DQorfQ0KK2lubGluZSB2b2lkIF9Db21wb3NpdGVSb3dfOGJwcFJnYjJBcmdiX05vQmxlbmRfUmdiQnl0ZU9yZGVyKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwNCisgICAgICAgIEZYX0FSR0IqIHBQYWxldHRlLCBGWF9MUENCWVRFIGNsaXBfc2NhbikNCit7DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgIGludCBzcmNfciwgc3JjX2csIHNyY19iOw0KKyAgICAgICAgaWYgKHBQYWxldHRlKSB7DQorICAgICAgICAgICAgRlhfQVJHQiBhcmdiID0gcFBhbGV0dGVbKnNyY19zY2FuXTsNCisgICAgICAgICAgICBzcmNfciA9IEZYQVJHQl9SKGFyZ2IpOw0KKyAgICAgICAgICAgIHNyY19nID0gRlhBUkdCX0coYXJnYik7DQorICAgICAgICAgICAgc3JjX2IgPSBGWEFSR0JfQihhcmdiKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc3JjX3IgPSBzcmNfZyA9IHNyY19iID0gKnNyY19zY2FuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGNsaXBfc2NhbiA9PSBOVUxMIHx8IGNsaXBfc2Nhbltjb2xdID09IDI1NSkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BKHNyY19iKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQShzcmNfZyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUEoc3JjX3IpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IDI1NTsNCisgICAgICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBzcmNfYWxwaGEgPSBjbGlwX3NjYW5bY29sXTsNCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IGJhY2tfYWxwaGEgPSBkZXN0X3NjYW5bM107DQorICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgIGRlc3Rfc2NhblszXSA9IGRlc3RfYWxwaGE7DQorICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzJdLCBGWF9HQU1NQShzcmNfYiksIGFscGhhX3JhdGlvKTsNCisgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblsxXSwgRlhfR0FNTUEoc3JjX2cpLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMF0sIEZYX0dBTU1BKHNyY19yKSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICBzcmNfc2NhbiArKzsNCisgICAgfQ0KK30NCitpbmxpbmUgdm9pZCBfQ29tcG9zaXRlUm93XzFicHBSZ2IyQXJnYl9Ob0JsZW5kX1JnYkJ5dGVPcmRlcihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgc3JjX2xlZnQsIGludCB3aWR0aCwNCisgICAgICAgIEZYX0FSR0IqIHBQYWxldHRlLCBGWF9MUENCWVRFIGNsaXBfc2NhbikNCit7DQorICAgIGludCByZXNldF9yLCByZXNldF9nLCByZXNldF9iOw0KKyAgICBpbnQgc2V0X3IsIHNldF9nLCBzZXRfYjsNCisgICAgaWYgKHBQYWxldHRlKSB7DQorICAgICAgICByZXNldF9yID0gRlhBUkdCX1IocFBhbGV0dGVbMF0pOw0KKyAgICAgICAgcmVzZXRfZyA9IEZYQVJHQl9HKHBQYWxldHRlWzBdKTsNCisgICAgICAgIHJlc2V0X2IgPSBGWEFSR0JfQihwUGFsZXR0ZVswXSk7DQorICAgICAgICBzZXRfciA9IEZYQVJHQl9SKHBQYWxldHRlWzFdKTsNCisgICAgICAgIHNldF9nID0gRlhBUkdCX0cocFBhbGV0dGVbMV0pOw0KKyAgICAgICAgc2V0X2IgPSBGWEFSR0JfQihwUGFsZXR0ZVsxXSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXNldF9yID0gcmVzZXRfZyA9IHJlc2V0X2IgPSAwOw0KKyAgICAgICAgc2V0X3IgPSBzZXRfZyA9IHNldF9iID0gMjU1Ow0KKyAgICB9DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgIGludCBzcmNfciwgc3JjX2csIHNyY19iOw0KKyAgICAgICAgaWYgKHNyY19zY2FuWyhjb2wgKyBzcmNfbGVmdCkgLyA4XSAmICgxIDw8ICg3IC0gKGNvbCArIHNyY19sZWZ0KSAlIDgpKSkgew0KKyAgICAgICAgICAgIHNyY19yID0gc2V0X3I7DQorICAgICAgICAgICAgc3JjX2cgPSBzZXRfZzsNCisgICAgICAgICAgICBzcmNfYiA9IHNldF9iOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfciA9IHJlc2V0X3I7DQorICAgICAgICAgICAgc3JjX2cgPSByZXNldF9nOw0KKyAgICAgICAgICAgIHNyY19iID0gcmVzZXRfYjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjbGlwX3NjYW4gPT0gTlVMTCB8fCBjbGlwX3NjYW5bY29sXSA9PSAyNTUpIHsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQShzcmNfYik7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUEoc3JjX2cpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BKHNyY19yKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSAyNTU7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpbnQgc3JjX2FscGhhID0gY2xpcF9zY2FuW2NvbF07DQorICAgICAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBiYWNrX2FscGhhID0gZGVzdF9zY2FuWzNdOw0KKyAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICBkZXN0X3NjYW5bM10gPSBkZXN0X2FscGhhOw0KKyAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblsyXSwgRlhfR0FNTUEoc3JjX2IpLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMV0sIEZYX0dBTU1BKHNyY19nKSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzBdLCBGWF9HQU1NQShzcmNfciksIGFscGhhX3JhdGlvKTsNCisgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICB9DQorfQ0KK3ZvaWQgX0NvbXBvc2l0ZVJvd19CeXRlTWFzazJBcmdiX1JnYkJ5dGVPcmRlcihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgbWFza19hbHBoYSwgaW50IHNyY19yLCBpbnQgc3JjX2csIGludCBzcmNfYiwgaW50IHBpeGVsX2NvdW50LA0KKyAgICAgICAgaW50IGJsZW5kX3R5cGUsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19hbHBoYTsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogY2xpcF9zY2FuW2NvbF0gKiBzcmNfc2Nhbltjb2xdIC8gMjU1IC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogc3JjX3NjYW5bY29sXSAvIDI1NTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICBGWEFSR0JfU0VUUkdCT1JERVJESUIoZGVzdF9zY2FuLCBGWEFSR0JfTUFLRShzcmNfYWxwaGEsIHNyY19yLCBzcmNfZywgc3JjX2IpKTsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICBkZXN0X3NjYW5bM10gPSBkZXN0X2FscGhhOw0KKyAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgIGlmIChibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRSkgew0KKyAgICAgICAgICAgIGludCBibGVuZGVkX2NvbG9yc1szXTsNCisgICAgICAgICAgICBGWF9CWVRFIHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9zY2FuX29bM107DQorICAgICAgICAgICAgc3JjX3NjYW5bMF0gPSBzcmNfYjsNCisgICAgICAgICAgICBzcmNfc2NhblsxXSA9IHNyY19nOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzJdID0gc3JjX3I7DQorICAgICAgICAgICAgZGVzdF9zY2FuX29bMF0gPSBkZXN0X3NjYW5bMl07DQorICAgICAgICAgICAgZGVzdF9zY2FuX29bMV0gPSBkZXN0X3NjYW5bMV07DQorICAgICAgICAgICAgZGVzdF9zY2FuX29bMl0gPSBkZXN0X3NjYW5bMF07DQorICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfc2NhbiwgZGVzdF9zY2FuX28sIGJsZW5kZWRfY29sb3JzKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMl0sIGJsZW5kZWRfY29sb3JzWzBdLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzFdLCBibGVuZGVkX2NvbG9yc1sxXSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblswXSwgYmxlbmRlZF9jb2xvcnNbMl0sIGFscGhhX3JhdGlvKTsNCisgICAgICAgIH0gZWxzZSBpZiAoYmxlbmRfdHlwZSkgew0KKyAgICAgICAgICAgIGludCBibGVuZGVkID0gX0JMRU5EKGJsZW5kX3R5cGUsIGRlc3Rfc2NhblsyXSwgc3JjX2IpOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBGWERJQl9BTFBIQV9NRVJHRShzcmNfYiwgYmxlbmRlZCwgYmFja19hbHBoYSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzJdLCBibGVuZGVkLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCBkZXN0X3NjYW5bMV0sIHNyY19nKTsNCisgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0Uoc3JjX2csIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblsxXSwgYmxlbmRlZCwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBfQkxFTkQoYmxlbmRfdHlwZSwgZGVzdF9zY2FuWzBdLCBzcmNfcik7DQorICAgICAgICAgICAgYmxlbmRlZCA9IEZYRElCX0FMUEhBX01FUkdFKHNyY19yLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMF0sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzJdLCBzcmNfYiwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblsxXSwgc3JjX2csIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMF0sIHNyY19yLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfQnl0ZU1hc2syUmdiX1JnYkJ5dGVPcmRlcihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgbWFza19hbHBoYSwgaW50IHNyY19yLCBpbnQgc3JjX2csIGludCBzcmNfYiwgaW50IHBpeGVsX2NvdW50LA0KKyAgICAgICAgaW50IGJsZW5kX3R5cGUsIGludCBCcHAsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuKQ0KK3sNCisgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgaW50IHNyY19hbHBoYTsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogY2xpcF9zY2FuW2NvbF0gKiBzcmNfc2Nhbltjb2xdIC8gMjU1IC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhICogc3JjX3NjYW5bY29sXSAvIDI1NTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzcmNfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHA7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYmxlbmRfdHlwZSA+PSBGWERJQl9CTEVORF9OT05TRVBBUkFCTEUpIHsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZF9jb2xvcnNbM107DQorICAgICAgICAgICAgRlhfQllURSBzcmNfc2NhblszXTsNCisgICAgICAgICAgICBGWF9CWVRFIGRlc3Rfc2Nhbl9vWzNdOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzBdID0gc3JjX2I7DQorICAgICAgICAgICAgc3JjX3NjYW5bMV0gPSBzcmNfZzsNCisgICAgICAgICAgICBzcmNfc2NhblsyXSA9IHNyY19yOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9vWzBdID0gZGVzdF9zY2FuWzJdOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9vWzFdID0gZGVzdF9zY2FuWzFdOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9vWzJdID0gZGVzdF9zY2FuWzBdOw0KKyAgICAgICAgICAgIF9SR0JfQmxlbmQoYmxlbmRfdHlwZSwgc3JjX3NjYW4sIGRlc3Rfc2Nhbl9vLCBibGVuZGVkX2NvbG9ycyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzJdLCBibGVuZGVkX2NvbG9yc1swXSwgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMV0sIGJsZW5kZWRfY29sb3JzWzFdLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblswXSwgYmxlbmRlZF9jb2xvcnNbMl0sIHNyY19hbHBoYSk7DQorICAgICAgICB9IGVsc2UgaWYgKGJsZW5kX3R5cGUpIHsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCBkZXN0X3NjYW5bMl0sIHNyY19iKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMl0sIGJsZW5kZWQsIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCBkZXN0X3NjYW5bMV0sIHNyY19nKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMV0sIGJsZW5kZWQsIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCBkZXN0X3NjYW5bMF0sIHNyY19yKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMF0sIGJsZW5kZWQsIHNyY19hbHBoYSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblsyXSwgc3JjX2IsIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzFdLCBzcmNfZywgc3JjX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMF0sIHNyY19yLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfQml0TWFzazJBcmdiX1JnYkJ5dGVPcmRlcihGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgbWFza19hbHBoYSwgaW50IHNyY19yLCBpbnQgc3JjX2csIGludCBzcmNfYiwNCisgICAgICAgIGludCBzcmNfbGVmdCwgaW50IHBpeGVsX2NvdW50LCBpbnQgYmxlbmRfdHlwZSwgRlhfTFBDQllURSBjbGlwX3NjYW4pDQorew0KKyAgICBpZiAoYmxlbmRfdHlwZSA9PSBGWERJQl9CTEVORF9OT1JNQUwgJiYgY2xpcF9zY2FuID09IE5VTEwgJiYgbWFza19hbHBoYSA9PSAyNTUpIHsNCisgICAgICAgIEZYX0FSR0IgYXJnYiA9IEZYQVJHQl9NQUtFKDB4ZmYsIHNyY19yLCBzcmNfZywgc3JjX2IpOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgIGlmIChzcmNfc2Nhblsoc3JjX2xlZnQgKyBjb2wpIC8gOF0gJiAoMSA8PCAoNyAtIChzcmNfbGVmdCArIGNvbCkgJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgRlhBUkdCX1NFVFJHQk9SREVSRElCKGRlc3Rfc2NhbiwgYXJnYik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHBpeGVsX2NvdW50OyBjb2wgKyspIHsNCisgICAgICAgIGlmICghKHNyY19zY2FuWyhzcmNfbGVmdCArIGNvbCkgLyA4XSAmICgxIDw8ICg3IC0gKHNyY19sZWZ0ICsgY29sKSAlIDgpKSkpIHsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBzcmNfYWxwaGE7DQorICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gbWFza19hbHBoYSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gZGVzdF9zY2FuWzNdOw0KKyAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgIEZYQVJHQl9TRVRSR0JPUkRFUkRJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKHNyY19hbHBoYSwgc3JjX3IsIHNyY19nLCBzcmNfYikpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGEgLyAyNTU7DQorICAgICAgICBkZXN0X3NjYW5bM10gPSBkZXN0X2FscGhhOw0KKyAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgIGlmIChibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRSkgew0KKyAgICAgICAgICAgIGludCBibGVuZGVkX2NvbG9yc1szXTsNCisgICAgICAgICAgICBGWF9CWVRFIHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9zY2FuX29bM107DQorICAgICAgICAgICAgc3JjX3NjYW5bMF0gPSBzcmNfYjsNCisgICAgICAgICAgICBzcmNfc2NhblsxXSA9IHNyY19nOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzJdID0gc3JjX3I7DQorICAgICAgICAgICAgZGVzdF9zY2FuX29bMF0gPSBkZXN0X3NjYW5bMl07DQorICAgICAgICAgICAgZGVzdF9zY2FuX29bMV0gPSBkZXN0X3NjYW5bMV07DQorICAgICAgICAgICAgZGVzdF9zY2FuX29bMl0gPSBkZXN0X3NjYW5bMF07DQorICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfc2NhbiwgZGVzdF9zY2FuX28sIGJsZW5kZWRfY29sb3JzKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMl0sIGJsZW5kZWRfY29sb3JzWzBdLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzFdLCBibGVuZGVkX2NvbG9yc1sxXSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblswXSwgYmxlbmRlZF9jb2xvcnNbMl0sIGFscGhhX3JhdGlvKTsNCisgICAgICAgIH0gZWxzZSBpZiAoYmxlbmRfdHlwZSkgew0KKyAgICAgICAgICAgIGludCBibGVuZGVkID0gX0JMRU5EKGJsZW5kX3R5cGUsIGRlc3Rfc2NhblsyXSwgc3JjX2IpOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBGWERJQl9BTFBIQV9NRVJHRShzcmNfYiwgYmxlbmRlZCwgYmFja19hbHBoYSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzJdLCBibGVuZGVkLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCBkZXN0X3NjYW5bMV0sIHNyY19nKTsNCisgICAgICAgICAgICBibGVuZGVkID0gRlhESUJfQUxQSEFfTUVSR0Uoc3JjX2csIGJsZW5kZWQsIGJhY2tfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblsxXSwgYmxlbmRlZCwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBfQkxFTkQoYmxlbmRfdHlwZSwgZGVzdF9zY2FuWzBdLCBzcmNfcik7DQorICAgICAgICAgICAgYmxlbmRlZCA9IEZYRElCX0FMUEhBX01FUkdFKHNyY19yLCBibGVuZGVkLCBiYWNrX2FscGhhKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMF0sIGJsZW5kZWQsIGFscGhhX3JhdGlvKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzJdLCBzcmNfYiwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblsxXSwgc3JjX2csIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMF0sIHNyY19yLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgfQ0KK30NCit2b2lkIF9Db21wb3NpdGVSb3dfQml0TWFzazJSZ2JfUmdiQnl0ZU9yZGVyKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBtYXNrX2FscGhhLCBpbnQgc3JjX3IsIGludCBzcmNfZywgaW50IHNyY19iLA0KKyAgICAgICAgaW50IHNyY19sZWZ0LCBpbnQgcGl4ZWxfY291bnQsIGludCBibGVuZF90eXBlLCBpbnQgQnBwLCBGWF9MUENCWVRFIGNsaXBfc2NhbikNCit7DQorICAgIGlmIChibGVuZF90eXBlID09IEZYRElCX0JMRU5EX05PUk1BTCAmJiBjbGlwX3NjYW4gPT0gTlVMTCAmJiBtYXNrX2FscGhhID09IDI1NSkgew0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcGl4ZWxfY291bnQ7IGNvbCArKykgew0KKyAgICAgICAgICAgIGlmIChzcmNfc2Nhblsoc3JjX2xlZnQgKyBjb2wpIC8gOF0gJiAoMSA8PCAoNyAtIChzcmNfbGVmdCArIGNvbCkgJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gc3JjX2I7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IHNyY19nOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBzcmNfcjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBwaXhlbF9jb3VudDsgY29sICsrKSB7DQorICAgICAgICBpZiAoIShzcmNfc2Nhblsoc3JjX2xlZnQgKyBjb2wpIC8gOF0gJiAoMSA8PCAoNyAtIChzcmNfbGVmdCArIGNvbCkgJSA4KSkpKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBzcmNfYWxwaGE7DQorICAgICAgICBpZiAoY2xpcF9zY2FuKSB7DQorICAgICAgICAgICAgc3JjX2FscGhhID0gbWFza19hbHBoYSAqIGNsaXBfc2Nhbltjb2xdIC8gMjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzcmNfYWxwaGEgPSBtYXNrX2FscGhhOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChibGVuZF90eXBlID49IEZYRElCX0JMRU5EX05PTlNFUEFSQUJMRSkgew0KKyAgICAgICAgICAgIGludCBibGVuZGVkX2NvbG9yc1szXTsNCisgICAgICAgICAgICBGWF9CWVRFIHNyY19zY2FuWzNdOw0KKyAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9zY2FuX29bM107DQorICAgICAgICAgICAgc3JjX3NjYW5bMF0gPSBzcmNfYjsNCisgICAgICAgICAgICBzcmNfc2NhblsxXSA9IHNyY19nOw0KKyAgICAgICAgICAgIHNyY19zY2FuWzJdID0gc3JjX3I7DQorICAgICAgICAgICAgZGVzdF9zY2FuX29bMF0gPSBkZXN0X3NjYW5bMl07DQorICAgICAgICAgICAgZGVzdF9zY2FuX29bMV0gPSBkZXN0X3NjYW5bMV07DQorICAgICAgICAgICAgZGVzdF9zY2FuX29bMl0gPSBkZXN0X3NjYW5bMF07DQorICAgICAgICAgICAgX1JHQl9CbGVuZChibGVuZF90eXBlLCBzcmNfc2NhbiwgZGVzdF9zY2FuX28sIGJsZW5kZWRfY29sb3JzKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWERJQl9BTFBIQV9NRVJHRShkZXN0X3NjYW5bMl0sIGJsZW5kZWRfY29sb3JzWzBdLCBzcmNfYWxwaGEpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYRElCX0FMUEhBX01FUkdFKGRlc3Rfc2NhblsxXSwgYmxlbmRlZF9jb2xvcnNbMV0sIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhESUJfQUxQSEFfTUVSR0UoZGVzdF9zY2FuWzBdLCBibGVuZGVkX2NvbG9yc1syXSwgc3JjX2FscGhhKTsNCisgICAgICAgIH0gZWxzZSBpZiAoYmxlbmRfdHlwZSkgew0KKyAgICAgICAgICAgIGludCBiYWNrX2NvbG9yID0gRlhfR0FNTUEoZGVzdF9zY2FuWzJdKTsNCisgICAgICAgICAgICBpbnQgYmxlbmRlZCA9IF9CTEVORChibGVuZF90eXBlLCBiYWNrX2NvbG9yLCBzcmNfYik7DQorICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShiYWNrX2NvbG9yLCBibGVuZGVkLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICBiYWNrX2NvbG9yID0gRlhfR0FNTUEoZGVzdF9zY2FuWzFdKTsNCisgICAgICAgICAgICBibGVuZGVkID0gX0JMRU5EKGJsZW5kX3R5cGUsIGJhY2tfY29sb3IsIHNyY19nKTsNCisgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKGJhY2tfY29sb3IsIGJsZW5kZWQsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgIGJhY2tfY29sb3IgPSBGWF9HQU1NQShkZXN0X3NjYW5bMF0pOw0KKyAgICAgICAgICAgIGJsZW5kZWQgPSBfQkxFTkQoYmxlbmRfdHlwZSwgYmFja19jb2xvciwgc3JjX3IpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoYmFja19jb2xvciwgYmxlbmRlZCwgc3JjX2FscGhhKSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzJdKSwgc3JjX2IsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzFdKSwgc3JjX2csIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgc3JjX3IsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgfQ0KK30NCitpbmxpbmUgRlhfQk9PTCBfU2NhbmxpbmVDb21wb3NpdG9yX0luaXRTb3VyY2VNYXNrKEZYRElCX0Zvcm1hdCBkZXN0X2Zvcm1hdCwgaW50IGFscGhhX2ZsYWcsIEZYX0RXT1JEIG1hc2tfY29sb3IsIGludCYgbWFza19hbHBoYSwNCisgICAgICAgIGludCYgbWFza19yZWQsIGludCYgbWFza19ncmVlbiwgaW50JiBtYXNrX2JsdWUsIGludCYgbWFza19ibGFjaywNCisgICAgICAgIHZvaWQqIGljY19tb2R1bGUsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gKElDb2RlY19JY2NNb2R1bGUqKWljY19tb2R1bGU7DQorICAgIGlmIChhbHBoYV9mbGFnID4+IDgpIHsNCisgICAgICAgIG1hc2tfYWxwaGEgPSBhbHBoYV9mbGFnICYgMHhmZjsNCisgICAgICAgIG1hc2tfcmVkID0gRlhTWVNfR2V0Q1ZhbHVlKG1hc2tfY29sb3IpOw0KKyAgICAgICAgbWFza19ncmVlbiA9IEZYU1lTX0dldE1WYWx1ZShtYXNrX2NvbG9yKTsNCisgICAgICAgIG1hc2tfYmx1ZSA9IEZYU1lTX0dldFlWYWx1ZShtYXNrX2NvbG9yKTsNCisgICAgICAgIG1hc2tfYmxhY2sgPSBGWFNZU19HZXRLVmFsdWUobWFza19jb2xvcik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtYXNrX2FscGhhID0gRlhBUkdCX0EobWFza19jb2xvcik7DQorICAgICAgICBtYXNrX3JlZCA9IEZYQVJHQl9SKG1hc2tfY29sb3IpOw0KKyAgICAgICAgbWFza19ncmVlbiA9IEZYQVJHQl9HKG1hc2tfY29sb3IpOw0KKyAgICAgICAgbWFza19ibHVlID0gRlhBUkdCX0IobWFza19jb2xvcik7DQorICAgIH0NCisgICAgaWYgKGRlc3RfZm9ybWF0ID09IEZYRElCXzhicHBNYXNrKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAoKGRlc3RfZm9ybWF0ICYgMHhmZikgPT0gOCkgew0KKyAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgICAgICBtYXNrX2NvbG9yID0gKGFscGhhX2ZsYWcgPj4gOCkgPyBGWENNWUtfVE9ESUIobWFza19jb2xvcikgOiBGWEFSR0JfVE9ESUIobWFza19jb2xvcik7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGdyYXlfcCA9IChGWF9MUEJZVEUpJm1hc2tfY29sb3I7DQorICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZ3JheV9wLCBncmF5X3AsIDEpOw0KKyAgICAgICAgICAgIG1hc2tfcmVkID0gZGVzdF9mb3JtYXQgJiAweDA0MDAgPyBGWF9DQ09MT1IoZ3JheV9wWzBdKSA6IGdyYXlfcFswXTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKGFscGhhX2ZsYWcgPj4gOCkgew0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIHIsIGcsIGI7DQorICAgICAgICAgICAgICAgIEFkb2JlQ01ZS190b19zUkdCMShtYXNrX3JlZCwgbWFza19ncmVlbiwgbWFza19ibHVlLCBtYXNrX2JsYWNrLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciwgZywgYik7DQorICAgICAgICAgICAgICAgIG1hc2tfcmVkID0gRlhSR0IyR1JBWShyLCBnLCBiKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBtYXNrX3JlZCA9IEZYUkdCMkdSQVkobWFza19yZWQsIG1hc2tfZ3JlZW4sIG1hc2tfYmx1ZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChkZXN0X2Zvcm1hdCAmIDB4MDQwMCkgew0KKyAgICAgICAgICAgICAgICBtYXNrX3JlZCA9IEZYX0NDT0xPUihtYXNrX3JlZCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfTFBCWVRFIG1hc2tfY29sb3JfcCA9IChGWF9MUEJZVEUpJm1hc2tfY29sb3I7DQorICAgICAgICBtYXNrX2NvbG9yID0gKGFscGhhX2ZsYWcgPj4gOCkgPyBGWENNWUtfVE9ESUIobWFza19jb2xvcikgOiBGWEFSR0JfVE9ESUIobWFza19jb2xvcik7DQorICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIG1hc2tfY29sb3JfcCwgbWFza19jb2xvcl9wLCAxKTsNCisgICAgICAgICAgICBtYXNrX3JlZCA9IG1hc2tfY29sb3JfcFsyXTsNCisgICAgICAgICAgICBtYXNrX2dyZWVuID0gbWFza19jb2xvcl9wWzFdOw0KKyAgICAgICAgICAgIG1hc2tfYmx1ZSA9IG1hc2tfY29sb3JfcFswXTsNCisgICAgICAgIH0gZWxzZSBpZiAoYWxwaGFfZmxhZyA+PiA4KSB7DQorICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IxKG1hc2tfY29sb3JfcFswXSwgbWFza19jb2xvcl9wWzFdLCBtYXNrX2NvbG9yX3BbMl0sIG1hc2tfY29sb3JfcFszXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFza19jb2xvcl9wWzJdLCBtYXNrX2NvbG9yX3BbMV0sIG1hc2tfY29sb3JfcFswXSk7DQorICAgICAgICAgICAgbWFza19yZWQgPSBtYXNrX2NvbG9yX3BbMl07DQorICAgICAgICAgICAgbWFza19ncmVlbiA9IG1hc2tfY29sb3JfcFsxXTsNCisgICAgICAgICAgICBtYXNrX2JsdWUgPSBtYXNrX2NvbG9yX3BbMF07DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2lubGluZSB2b2lkIF9TY2FubGluZUNvbXBvc2l0b3JfSW5pdFNvdXJjZVBhbGV0dGUoRlhESUJfRm9ybWF0IHNyY19mb3JtYXQsIEZYRElCX0Zvcm1hdCBkZXN0X2Zvcm1hdCwNCisgICAgICAgIEZYX0RXT1JEKiYgcERlc3RQYWxldHRlLCBGWF9EV09SRCogcFNyY1BhbGV0dGUsDQorICAgICAgICB2b2lkKiBpY2NfbW9kdWxlLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IChJQ29kZWNfSWNjTW9kdWxlKilpY2NfbW9kdWxlOw0KKyAgICBGWF9CT09MIGlzU3JjQ215ayA9IHNyY19mb3JtYXQgJiAweDA0MDAgPyBUUlVFIDogRkFMU0U7DQorICAgIEZYX0JPT0wgaXNEc3RDbXlrID0gZGVzdF9mb3JtYXQgJiAweDA0MDAgPyBUUlVFIDogRkFMU0U7DQorICAgIHBEZXN0UGFsZXR0ZSA9IE5VTEw7DQorICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICBpZiAocFNyY1BhbGV0dGUpIHsNCisgICAgICAgICAgICBpZiAoKGRlc3RfZm9ybWF0ICYgMHhmZikgPT0gOCkgew0KKyAgICAgICAgICAgICAgICBpbnQgcGFsX2NvdW50ID0gMSA8PCAoc3JjX2Zvcm1hdCAmIDB4ZmYpOw0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZ3JheV9wYWwgPSBGWF9BbGxvYyhGWF9CWVRFLCBwYWxfY291bnQpOw0KKyAgICAgICAgICAgICAgICBpZiAoIWdyYXlfcGFsKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcERlc3RQYWxldHRlID0gKEZYX0RXT1JEKilncmF5X3BhbDsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYWxfY291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGNvbG9yID0gaXNTcmNDbXlrID8gRlhDTVlLX1RPRElCKHBTcmNQYWxldHRlW2ldKSA6IEZYQVJHQl9UT0RJQihwU3JjUGFsZXR0ZVtpXSk7DQorICAgICAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBncmF5X3BhbCwgKEZYX0xQQ0JZVEUpJmNvbG9yLCAxKTsNCisgICAgICAgICAgICAgICAgICAgIGdyYXlfcGFsICsrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaW50IHBhbHNpemUgPSAxIDw8IChzcmNfZm9ybWF0ICYgMHhmZik7DQorICAgICAgICAgICAgICAgIHBEZXN0UGFsZXR0ZSA9IEZYX0FsbG9jKEZYX0RXT1JELCBwYWxzaXplKTsNCisgICAgICAgICAgICAgICAgaWYgKCFwRGVzdFBhbGV0dGUpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhbHNpemU7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGNvbG9yID0gaXNTcmNDbXlrID8gRlhDTVlLX1RPRElCKHBTcmNQYWxldHRlW2ldKSA6IEZYQVJHQl9UT0RJQihwU3JjUGFsZXR0ZVtpXSk7DQorICAgICAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCAoRlhfTFBCWVRFKSZjb2xvciwgKEZYX0xQQ0JZVEUpJmNvbG9yLCAxKTsNCisgICAgICAgICAgICAgICAgICAgIHBEZXN0UGFsZXR0ZVtpXSA9IGlzRHN0Q215ayA/IEZYQ01ZS19UT0RJQihjb2xvcikgOiBGWEFSR0JfVE9ESUIoY29sb3IpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpbnQgcGFsX2NvdW50ID0gMSA8PCAoc3JjX2Zvcm1hdCAmIDB4ZmYpOw0KKyAgICAgICAgICAgIEZYX0xQQllURSBncmF5X3BhbCA9IEZYX0FsbG9jKEZYX0JZVEUsIHBhbF9jb3VudCk7DQorICAgICAgICAgICAgaWYgKCFncmF5X3BhbCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChwYWxfY291bnQgPT0gMikgew0KKyAgICAgICAgICAgICAgICBncmF5X3BhbFswXSA9IDA7DQorICAgICAgICAgICAgICAgIGdyYXlfcGFsWzFdID0gMjU1Ow0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFsX2NvdW50OyBpKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGdyYXlfcGFsW2ldID0gaTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoKGRlc3RfZm9ybWF0ICYgMHhmZikgPT0gOCkgew0KKyAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBncmF5X3BhbCwgZ3JheV9wYWwsIHBhbF9jb3VudCk7DQorICAgICAgICAgICAgICAgIHBEZXN0UGFsZXR0ZSA9IChGWF9EV09SRCopZ3JheV9wYWw7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcERlc3RQYWxldHRlID0gRlhfQWxsb2MoRlhfRFdPUkQsIHBhbF9jb3VudCk7DQorICAgICAgICAgICAgICAgIGlmICghcERlc3RQYWxldHRlKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9GcmVlKGdyYXlfcGFsKTsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhbF9jb3VudDsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgKEZYX0xQQllURSkmcERlc3RQYWxldHRlW2ldLCAmZ3JheV9wYWxbaV0sIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgcERlc3RQYWxldHRlW2ldID0gaXNEc3RDbXlrID8gRlhDTVlLX1RPRElCKHBEZXN0UGFsZXR0ZVtpXSkgOiBGWEFSR0JfVE9ESUIocERlc3RQYWxldHRlW2ldKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9GcmVlKGdyYXlfcGFsKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAocFNyY1BhbGV0dGUpIHsNCisgICAgICAgICAgICBpZiAoKGRlc3RfZm9ybWF0ICYgMHhmZikgPT0gOCkgew0KKyAgICAgICAgICAgICAgICBpbnQgcGFsX2NvdW50ID0gMSA8PCAoc3JjX2Zvcm1hdCAmIDB4ZmYpOw0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZ3JheV9wYWwgPSBGWF9BbGxvYyhGWF9CWVRFLCBwYWxfY291bnQpOw0KKyAgICAgICAgICAgICAgICBpZiAoIWdyYXlfcGFsKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcERlc3RQYWxldHRlID0gKEZYX0RXT1JEKilncmF5X3BhbDsNCisgICAgICAgICAgICAgICAgaWYgKGlzU3JjQ215aykgew0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYWxfY291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9DTVlLIGNteWsgPSBwU3JjUGFsZXR0ZVtpXTsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIHIsIGcsIGI7DQorICAgICAgICAgICAgICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IxKEZYU1lTX0dldENWYWx1ZShjbXlrKSwgRlhTWVNfR2V0TVZhbHVlKGNteWspLCBGWFNZU19HZXRZVmFsdWUoY215ayksIEZYU1lTX0dldEtWYWx1ZShjbXlrKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciwgZywgYik7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmdyYXlfcGFsICsrID0gRlhSR0IyR1JBWShyLCBnLCBiKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhbF9jb3VudDsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0FSR0IgYXJnYiA9IHBTcmNQYWxldHRlW2ldOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpncmF5X3BhbCArKyA9IEZYUkdCMkdSQVkoRlhBUkdCX1IoYXJnYiksIEZYQVJHQl9HKGFyZ2IpLCBGWEFSR0JfQihhcmdiKSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaW50IHBhbHNpemUgPSAxIDw8IChzcmNfZm9ybWF0ICYgMHhmZik7DQorICAgICAgICAgICAgICAgIHBEZXN0UGFsZXR0ZSA9IEZYX0FsbG9jKEZYX0RXT1JELCBwYWxzaXplKTsNCisgICAgICAgICAgICAgICAgaWYgKCFwRGVzdFBhbGV0dGUpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoaXNEc3RDbXlrID09IGlzU3JjQ215aykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIocERlc3RQYWxldHRlLCBwU3JjUGFsZXR0ZSwgcGFsc2l6ZSAqIHNpemVvZihGWF9EV09SRCkpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYWxzaXplOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfQ01ZSyBjbXlrID0gcFNyY1BhbGV0dGVbaV07DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSByLCBnLCBiOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFkb2JlQ01ZS190b19zUkdCMShGWFNZU19HZXRDVmFsdWUoY215ayksIEZYU1lTX0dldE1WYWx1ZShjbXlrKSwgRlhTWVNfR2V0WVZhbHVlKGNteWspLCBGWFNZU19HZXRLVmFsdWUoY215ayksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIsIGcsIGIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBEZXN0UGFsZXR0ZVtpXSA9IEZYQVJHQl9NQUtFKDB4ZmYsIHIsIGcsIGIpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAoKGRlc3RfZm9ybWF0ICYgMHhmZikgPT0gOCkgew0KKyAgICAgICAgICAgICAgICBpbnQgcGFsX2NvdW50ID0gMSA8PCAoc3JjX2Zvcm1hdCAmIDB4ZmYpOw0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZ3JheV9wYWwgPSBGWF9BbGxvYyhGWF9CWVRFLCBwYWxfY291bnQpOw0KKyAgICAgICAgICAgICAgICBpZiAoIWdyYXlfcGFsKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKHBhbF9jb3VudCA9PSAyKSB7DQorICAgICAgICAgICAgICAgICAgICBncmF5X3BhbFswXSA9IDA7DQorICAgICAgICAgICAgICAgICAgICBncmF5X3BhbFsxXSA9IDI1NTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFsX2NvdW50OyBpKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBncmF5X3BhbFtpXSA9IGk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcERlc3RQYWxldHRlID0gKEZYX0RXT1JEKilncmF5X3BhbDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpbnQgcGFsc2l6ZSA9IDEgPDwgKHNyY19mb3JtYXQgJiAweGZmKTsNCisgICAgICAgICAgICAgICAgcERlc3RQYWxldHRlID0gRlhfQWxsb2MoRlhfRFdPUkQsIHBhbHNpemUpOw0KKyAgICAgICAgICAgICAgICBpZiAoIXBEZXN0UGFsZXR0ZSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmIChwYWxzaXplID09IDIpIHsNCisgICAgICAgICAgICAgICAgICAgIHBEZXN0UGFsZXR0ZVswXSA9IGlzU3JjQ215ayA/IDI1NSA6IDB4ZmYwMDAwMDA7DQorICAgICAgICAgICAgICAgICAgICBwRGVzdFBhbGV0dGVbMV0gPSBpc1NyY0NteWsgPyAwIDogMHhmZmZmZmZmZjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFsc2l6ZTsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcERlc3RQYWxldHRlW2ldID0gaXNTcmNDbXlrID8gRlhfQ0NPTE9SKGkpIDogKGkgKiAweDEwMTAxKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoaXNTcmNDbXlrICE9IGlzRHN0Q215aykgew0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYWxzaXplOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgRlhfQ01ZSyBjbXlrID0gcERlc3RQYWxldHRlW2ldOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgciwgZywgYjsNCisgICAgICAgICAgICAgICAgICAgICAgICBBZG9iZUNNWUtfdG9fc1JHQjEoRlhTWVNfR2V0Q1ZhbHVlKGNteWspLCBGWFNZU19HZXRNVmFsdWUoY215ayksIEZYU1lTX0dldFlWYWx1ZShjbXlrKSwgRlhTWVNfR2V0S1ZhbHVlKGNteWspLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLCBnLCBiKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBwRGVzdFBhbGV0dGVbaV0gPSBGWEFSR0JfTUFLRSgweGZmLCByLCBnLCBiKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDRlhfU2NhbmxpbmVDb21wb3NpdG9yOjpDRlhfU2NhbmxpbmVDb21wb3NpdG9yKCkNCit7DQorICAgIG1fcFNyY1BhbGV0dGUgPSBOVUxMOw0KKyAgICBtX3BDYWNoZVNjYW5saW5lID0gTlVMTDsNCisgICAgbV9DYWNoZVNpemUgPSAwOw0KKyAgICBtX2JSZ2JCeXRlT3JkZXIgPSBGQUxTRTsNCisgICAgbV9CbGVuZFR5cGUgPSBGWERJQl9CTEVORF9OT1JNQUw7DQorfQ0KK0NGWF9TY2FubGluZUNvbXBvc2l0b3I6On5DRlhfU2NhbmxpbmVDb21wb3NpdG9yKCkNCit7DQorICAgIGlmIChtX3BTcmNQYWxldHRlKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFNyY1BhbGV0dGUpOw0KKyAgICB9DQorICAgIGlmIChtX3BDYWNoZVNjYW5saW5lKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENhY2hlU2NhbmxpbmUpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ0ZYX1NjYW5saW5lQ29tcG9zaXRvcjo6SW5pdChGWERJQl9Gb3JtYXQgZGVzdF9mb3JtYXQsIEZYRElCX0Zvcm1hdCBzcmNfZm9ybWF0LCBGWF9JTlQzMiB3aWR0aCwgRlhfRFdPUkQqIHBTcmNQYWxldHRlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBtYXNrX2NvbG9yLCBpbnQgYmxlbmRfdHlwZSwgRlhfQk9PTCBiQ2xpcCwgRlhfQk9PTCBiUmdiQnl0ZU9yZGVyLCBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIG1fU3JjRm9ybWF0ID0gc3JjX2Zvcm1hdDsNCisgICAgbV9EZXN0Rm9ybWF0ID0gZGVzdF9mb3JtYXQ7DQorICAgIG1fQmxlbmRUeXBlID0gYmxlbmRfdHlwZTsNCisgICAgbV9iUmdiQnl0ZU9yZGVyID0gYlJnYkJ5dGVPcmRlcjsNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IE5VTEw7DQorICAgIGlmIChDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpKSB7DQorICAgICAgICBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgIH0NCisgICAgaWYgKHBJY2NNb2R1bGUgPT0gTlVMTCkgew0KKyAgICAgICAgcEljY1RyYW5zZm9ybSA9IE5VTEw7DQorICAgIH0NCisgICAgbV9wSWNjVHJhbnNmb3JtID0gcEljY1RyYW5zZm9ybTsNCisgICAgaWYgKChkZXN0X2Zvcm1hdCAmIDB4ZmYpID09IDEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9TcmNGb3JtYXQgPT0gRlhESUJfMWJwcE1hc2sgfHwgbV9TcmNGb3JtYXQgPT0gRlhESUJfOGJwcE1hc2spIHsNCisgICAgICAgIHJldHVybiBfU2NhbmxpbmVDb21wb3NpdG9yX0luaXRTb3VyY2VNYXNrKGRlc3RfZm9ybWF0LCBhbHBoYV9mbGFnLCBtYXNrX2NvbG9yLA0KKyAgICAgICAgICAgICAgICBtX01hc2tBbHBoYSwgbV9NYXNrUmVkLCBtX01hc2tHcmVlbiwgbV9NYXNrQmx1ZSwgbV9NYXNrQmxhY2ssDQorICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICB9DQorICAgIGlmIChwSWNjVHJhbnNmb3JtID09IE5VTEwgJiYgKH5zcmNfZm9ybWF0ICYgMHgwNDAwKSAmJiAoZGVzdF9mb3JtYXQgJiAweDA0MDApKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKChtX1NyY0Zvcm1hdCAmIDB4ZmYpIDw9IDgpIHsNCisgICAgICAgIGlmIChkZXN0X2Zvcm1hdCA9PSBGWERJQl84YnBwTWFzaykgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgX1NjYW5saW5lQ29tcG9zaXRvcl9Jbml0U291cmNlUGFsZXR0ZShzcmNfZm9ybWF0LCBkZXN0X2Zvcm1hdCwgbV9wU3JjUGFsZXR0ZSwgcFNyY1BhbGV0dGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJY2NNb2R1bGUsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgbV9UcmFuc3BhcmVuY3kgPSAoZGVzdF9mb3JtYXQgPT0gRlhESUJfQXJnYiA/IDEgOiAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICArIChkZXN0X2Zvcm1hdCAmIDB4MDIwMCA/IDIgOiAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICArIChkZXN0X2Zvcm1hdCAmIDB4MDQwMCA/IDQgOiAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICArICgoc3JjX2Zvcm1hdCAmIDB4ZmYpID09IDEgPyA4IDogMCk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBtX1RyYW5zcGFyZW5jeSA9IChzcmNfZm9ybWF0ICYgMHgwMjAwID8gMCA6IDEpDQorICAgICAgICAgICAgICAgICAgICAgKyAoZGVzdF9mb3JtYXQgJiAweDAyMDAgPyAwIDogMikNCisgICAgICAgICAgICAgICAgICAgICArIChibGVuZF90eXBlID09IEZYRElCX0JMRU5EX05PUk1BTCA/IDQgOiAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICsgKGJDbGlwID8gOCA6IDApDQorICAgICAgICAgICAgICAgICAgICAgKyAoc3JjX2Zvcm1hdCAmIDB4MDQwMCA/IDE2IDogMCkNCisgICAgICAgICAgICAgICAgICAgICArIChkZXN0X2Zvcm1hdCAmIDB4MDQwMCA/IDMyIDogMCkNCisgICAgICAgICAgICAgICAgICAgICArIChwSWNjVHJhbnNmb3JtID8gNjQgOiAwKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ0ZYX1NjYW5saW5lQ29tcG9zaXRvcjo6Q29tcG9zaXRlUmdiQml0bWFwTGluZShGWF9MUEJZVEUgZGVzdF9zY2FuLCBGWF9MUENCWVRFIHNyY19zY2FuLCBpbnQgd2lkdGgsIEZYX0xQQ0JZVEUgY2xpcF9zY2FuLA0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfZXh0cmFfYWxwaGEsIEZYX0xQQllURSBkc3RfZXh0cmFfYWxwaGEpDQorew0KKyAgICBpbnQgc3JjX0JwcCA9IChtX1NyY0Zvcm1hdCAmIDB4ZmYpID4+IDM7DQorICAgIGludCBkZXN0X0JwcCA9IChtX0Rlc3RGb3JtYXQgJiAweGZmKSA+PiAzOw0KKyAgICBpbnQgZGVzdF9TaXplID0gd2lkdGggKiBkZXN0X0JwcCArIDQ7DQorICAgIGlmIChtX2JSZ2JCeXRlT3JkZXIpIHsNCisgICAgICAgIHN3aXRjaCAobV9UcmFuc3BhcmVuY3kpIHsNCisgICAgICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgY2FzZSA0Og0KKyAgICAgICAgICAgIGNhc2UgODoNCisgICAgICAgICAgICBjYXNlIDEyOg0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X0FyZ2IyQXJnYl9SZ2JCeXRlT3JkZXIoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIG1fQmxlbmRUeXBlLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfUmdiMkFyZ2JfQmxlbmRfTm9DbGlwX1JnYkJ5dGVPcmRlcihkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9CbGVuZFR5cGUsIHNyY19CcHApOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDI6DQorICAgICAgICAgICAgY2FzZSAxMDoNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19BcmdiMlJnYl9CbGVuZF9SZ2JCeXRlT3JkZXIoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIG1fQmxlbmRUeXBlLCBkZXN0X0JwcCwgY2xpcF9zY2FuKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAzOg0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJSZ2JfQmxlbmRfTm9DbGlwX1JnYkJ5dGVPcmRlcihkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9CbGVuZFR5cGUsIGRlc3RfQnBwLCBzcmNfQnBwKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSA1Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX05vQmxlbmRfTm9DbGlwX1JnYkJ5dGVPcmRlcihkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgc3JjX0JwcCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgNjoNCisgICAgICAgICAgICBjYXNlIDE0Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X0FyZ2IyUmdiX05vQmxlbmRfUmdiQnl0ZU9yZGVyKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBkZXN0X0JwcCwgY2xpcF9zY2FuKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSA3Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJSZ2JfTm9CbGVuZF9Ob0NsaXBfUmdiQnl0ZU9yZGVyKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBkZXN0X0JwcCwgc3JjX0JwcCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgOToNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9CbGVuZF9DbGlwX1JnYkJ5dGVPcmRlcihkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9CbGVuZFR5cGUsIHNyY19CcHAsIGNsaXBfc2Nhbik7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMTE6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9CbGVuZF9DbGlwX1JnYkJ5dGVPcmRlcihkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9CbGVuZFR5cGUsIGRlc3RfQnBwLCBzcmNfQnBwLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDEzOg0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX05vQmxlbmRfQ2xpcF9SZ2JCeXRlT3JkZXIoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIHNyY19CcHAsIGNsaXBfc2Nhbik7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMTU6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9Ob0JsZW5kX0NsaXBfUmdiQnl0ZU9yZGVyKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBkZXN0X0JwcCwgc3JjX0JwcCwgY2xpcF9zY2FuKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl84YnBwTWFzaykgew0KKyAgICAgICAgaWYgKG1fU3JjRm9ybWF0ICYgMHgwMjAwKSB7DQorICAgICAgICAgICAgaWYgKG1fU3JjRm9ybWF0ID09IEZYRElCX0FyZ2IpIHsNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19BcmdiMk1hc2soZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIGNsaXBfc2Nhbik7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19SZ2JhMk1hc2soZGVzdF9zY2FuLCBzcmNfZXh0cmFfYWxwaGEsIHdpZHRoLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19SZ2IyTWFzayhkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgY2xpcF9zY2FuKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmICgobV9EZXN0Rm9ybWF0ICYgMHhmZikgPT0gOCkgew0KKyAgICAgICAgaWYgKG1fRGVzdEZvcm1hdCAmIDB4MDQwMCkgew0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd2lkdGg7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IH4qZGVzdF9zY2FuOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4rKzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9TcmNGb3JtYXQgJiAweDAyMDApIHsNCisgICAgICAgICAgICBpZiAobV9EZXN0Rm9ybWF0ICYgMHgwMjAwKSB7DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfQXJnYjJHcmF5YShkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9CbGVuZFR5cGUsIGNsaXBfc2Nhbiwgc3JjX2V4dHJhX2FscGhhLCBkc3RfZXh0cmFfYWxwaGEsIG1fcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19BcmdiMkdyYXkoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIG1fQmxlbmRUeXBlLCBjbGlwX3NjYW4sIHNyY19leHRyYV9hbHBoYSwgbV9wSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChtX0Rlc3RGb3JtYXQgJiAweDAyMDApIHsNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19SZ2IyR3JheWEoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgc3JjX0JwcCwgd2lkdGgsIG1fQmxlbmRUeXBlLCBjbGlwX3NjYW4sIGRzdF9leHRyYV9hbHBoYSwgbV9wSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJHcmF5KGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHNyY19CcHAsIHdpZHRoLCBtX0JsZW5kVHlwZSwgY2xpcF9zY2FuLCBtX3BJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX0Rlc3RGb3JtYXQgJiAweDA0MDApIHsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSB+KmRlc3Rfc2NhbjsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKGRlc3RfU2l6ZSA+IG1fQ2FjaGVTaXplKSB7DQorICAgICAgICAgICAgbV9wQ2FjaGVTY2FubGluZSA9IEZYX1JlYWxsb2MoRlhfQllURSwgbV9wQ2FjaGVTY2FubGluZSwgZGVzdF9TaXplKTsNCisgICAgICAgICAgICBpZiAoIW1fcENhY2hlU2NhbmxpbmUpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX0NhY2hlU2l6ZSA9IGRlc3RfU2l6ZTsNCisgICAgICAgIH0NCisgICAgICAgIHN3aXRjaCAobV9UcmFuc3BhcmVuY3kpIHsNCisgICAgICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgY2FzZSA0Og0KKyAgICAgICAgICAgIGNhc2UgODoNCisgICAgICAgICAgICBjYXNlIDQrODogew0KKyAgICAgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19BcmdiMkFyZ2IoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIG1fQmxlbmRUeXBlLCBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RfZXh0cmFfYWxwaGEsIHNyY19leHRyYV9hbHBoYSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSA2NDoNCisgICAgICAgICAgICBjYXNlIDQrNjQ6DQorICAgICAgICAgICAgY2FzZSA4KzY0Og0KKyAgICAgICAgICAgIGNhc2UgNCs4KzY0OiB7DQorICAgICAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X0FyZ2IyQXJnYl9UcmFuc2Zvcm0oZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIG1fQmxlbmRUeXBlLCBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X2V4dHJhX2FscGhhLCBzcmNfZXh0cmFfYWxwaGEsIG1fcENhY2hlU2NhbmxpbmUsIG1fcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAxOg0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX0JsZW5kX05vQ2xpcChkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9CbGVuZFR5cGUsIHNyY19CcHAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9leHRyYV9hbHBoYSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSs2NDoNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9CbGVuZF9Ob0NsaXBfVHJhbnNmb3JtKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBtX0JsZW5kVHlwZSwgc3JjX0JwcCwNCisgICAgICAgICAgICAgICAgICAgICAgICBkc3RfZXh0cmFfYWxwaGEsIG1fcENhY2hlU2NhbmxpbmUsIG1fcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSs4Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX0JsZW5kX0NsaXAoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIG1fQmxlbmRUeXBlLCBzcmNfQnBwLCBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RfZXh0cmFfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDErOCs2NDoNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19SZ2IyQXJnYl9CbGVuZF9DbGlwX1RyYW5zZm9ybShkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9CbGVuZFR5cGUsIHNyY19CcHAsIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICBkc3RfZXh0cmFfYWxwaGEsIG1fcENhY2hlU2NhbmxpbmUsIG1fcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSs0Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX05vQmxlbmRfTm9DbGlwKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBzcmNfQnBwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9leHRyYV9hbHBoYSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSs0KzY0Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJBcmdiX05vQmxlbmRfTm9DbGlwX1RyYW5zZm9ybShkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgc3JjX0JwcCwNCisgICAgICAgICAgICAgICAgICAgICAgICBkc3RfZXh0cmFfYWxwaGEsIG1fcENhY2hlU2NhbmxpbmUsIG1fcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSs0Kzg6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfUmdiMkFyZ2JfTm9CbGVuZF9DbGlwKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBzcmNfQnBwLCBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9leHRyYV9hbHBoYSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSs0KzgrNjQ6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfUmdiMkFyZ2JfTm9CbGVuZF9DbGlwX1RyYW5zZm9ybShkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgc3JjX0JwcCwgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9leHRyYV9hbHBoYSwgbV9wQ2FjaGVTY2FubGluZSwgbV9wSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIGNhc2UgMis4Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X0FyZ2IyUmdiX0JsZW5kKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBtX0JsZW5kVHlwZSwgZGVzdF9CcHAsIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfZXh0cmFfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDIrNjQ6DQorICAgICAgICAgICAgY2FzZSAyKzgrNjQ6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfQXJnYjJSZ2JfQmxlbmRfVHJhbnNmb3JtKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBtX0JsZW5kVHlwZSwgZGVzdF9CcHAsIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2V4dHJhX2FscGhhLCBtX3BDYWNoZVNjYW5saW5lLCBtX3BJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDIrNDoNCisgICAgICAgICAgICBjYXNlIDIrNCs4Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X0FyZ2IyUmdiX05vQmxlbmQoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIGRlc3RfQnBwLCBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfZXh0cmFfYWxwaGEpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDIrNCs2NDoNCisgICAgICAgICAgICBjYXNlIDIrNCs4KzY0Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X0FyZ2IyUmdiX05vQmxlbmRfVHJhbnNmb3JtKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBkZXN0X0JwcCwgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19leHRyYV9hbHBoYSwgbV9wQ2FjaGVTY2FubGluZSwgbV9wSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAxKzI6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9CbGVuZF9Ob0NsaXAoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIG1fQmxlbmRUeXBlLCBkZXN0X0JwcCwgc3JjX0JwcCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSsyKzY0Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJSZ2JfQmxlbmRfTm9DbGlwX1RyYW5zZm9ybShkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9CbGVuZFR5cGUsIGRlc3RfQnBwLCBzcmNfQnBwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcENhY2hlU2NhbmxpbmUsIG1fcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSsyKzg6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9CbGVuZF9DbGlwKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBtX0JsZW5kVHlwZSwgZGVzdF9CcHAsIHNyY19CcHAsIGNsaXBfc2Nhbik7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSsyKzgrNjQ6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9CbGVuZF9DbGlwX1RyYW5zZm9ybShkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9CbGVuZFR5cGUsIGRlc3RfQnBwLCBzcmNfQnBwLCBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wQ2FjaGVTY2FubGluZSwgbV9wSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAxKzIrNDoNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX05vQmxlbmRfTm9DbGlwKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBkZXN0X0JwcCwgc3JjX0JwcCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSsyKzQrNjQ6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfUmdiMlJnYl9Ob0JsZW5kX05vQ2xpcF9UcmFuc2Zvcm0oZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIGRlc3RfQnBwLCBzcmNfQnBwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcENhY2hlU2NhbmxpbmUsIG1fcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSsyKzQrODoNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX05vQmxlbmRfQ2xpcChkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgZGVzdF9CcHAsIHNyY19CcHAsIGNsaXBfc2Nhbik7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSsyKzQrOCs2NDoNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19SZ2IyUmdiX05vQmxlbmRfQ2xpcF9UcmFuc2Zvcm0oZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgsIGRlc3RfQnBwLCBzcmNfQnBwLCBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wQ2FjaGVTY2FubGluZSwgbV9wSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCit9DQordm9pZCBDRlhfU2NhbmxpbmVDb21wb3NpdG9yOjpDb21wb3NpdGVQYWxCaXRtYXBMaW5lKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBzcmNfbGVmdCwgaW50IHdpZHRoLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX2V4dHJhX2FscGhhLCBGWF9MUEJZVEUgZHN0X2V4dHJhX2FscGhhKQ0KK3sNCisgICAgaWYgKG1fYlJnYkJ5dGVPcmRlcikgew0KKyAgICAgICAgaWYgKG1fU3JjRm9ybWF0ID09IEZYRElCXzFicHBSZ2IpIHsNCisgICAgICAgICAgICBpZiAobV9EZXN0Rm9ybWF0ID09IEZYRElCXzhicHBSZ2IpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZihtX0Rlc3RGb3JtYXQgPT0gRlhESUJfQXJnYikgew0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93XzFicHBSZ2IyQXJnYl9Ob0JsZW5kX1JnYkJ5dGVPcmRlcihkZXN0X3NjYW4sIHNyY19zY2FuLCBzcmNfbGVmdCwgd2lkdGgsIG1fcFNyY1BhbGV0dGUsIGNsaXBfc2Nhbik7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd18xYnBwUmdiMlJnYl9Ob0JsZW5kX1JnYkJ5dGVPcmRlcihkZXN0X3NjYW4sIHNyY19zY2FuLCBzcmNfbGVmdCwgbV9wU3JjUGFsZXR0ZSwgd2lkdGgsIChtX0Rlc3RGb3JtYXQgJiAweGZmKSA+PiAzLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl84YnBwUmdiKSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl9BcmdiKSB7DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfOGJwcFJnYjJBcmdiX05vQmxlbmRfUmdiQnl0ZU9yZGVyKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBtX3BTcmNQYWxldHRlLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfOGJwcFJnYjJSZ2JfTm9CbGVuZF9SZ2JCeXRlT3JkZXIoZGVzdF9zY2FuLCBzcmNfc2NhbiwgbV9wU3JjUGFsZXR0ZSwgd2lkdGgsIChtX0Rlc3RGb3JtYXQgJiAweGZmKSA+PiAzLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9EZXN0Rm9ybWF0ID09IEZYRElCXzhicHBNYXNrKSB7DQorICAgICAgICBfQ29tcG9zaXRlUm93X1JnYjJNYXNrKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9IGVsc2UgaWYgKChtX0Rlc3RGb3JtYXQgJiAweGZmKSA9PSA4KSB7DQorICAgICAgICBpZiAobV9UcmFuc3BhcmVuY3kgJiA4KSB7DQorICAgICAgICAgICAgaWYgKG1fRGVzdEZvcm1hdCAmIDB4MDIwMCkgew0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93XzFicHBQYWwyR3JheWEoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgc3JjX2xlZnQsIChGWF9MUENCWVRFKW1fcFNyY1BhbGV0dGUsIHdpZHRoLCBtX0JsZW5kVHlwZSwgY2xpcF9zY2FuLCBkc3RfZXh0cmFfYWxwaGEpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfMWJwcFBhbDJHcmF5KGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHNyY19sZWZ0LCAoRlhfTFBDQllURSltX3BTcmNQYWxldHRlLCB3aWR0aCwgbV9CbGVuZFR5cGUsIGNsaXBfc2Nhbik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAobV9EZXN0Rm9ybWF0ICYgMHgwMjAwKQ0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93XzhicHBQYWwyR3JheWEoZGVzdF9zY2FuLCBzcmNfc2NhbiwgKEZYX0xQQ0JZVEUpbV9wU3JjUGFsZXR0ZSwgd2lkdGgsIG1fQmxlbmRUeXBlLCBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RfZXh0cmFfYWxwaGEsIHNyY19leHRyYV9hbHBoYSk7DQorICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93XzhicHBQYWwyR3JheShkZXN0X3NjYW4sIHNyY19zY2FuLCAoRlhfTFBDQllURSltX3BTcmNQYWxldHRlLCB3aWR0aCwgbV9CbGVuZFR5cGUsIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2V4dHJhX2FscGhhKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIHN3aXRjaCAobV9UcmFuc3BhcmVuY3kpIHsNCisgICAgICAgICAgICBjYXNlIDErMjoNCisgICAgICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd184YnBwUmdiMkFyZ2JfTm9CbGVuZChkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgbV9wU3JjUGFsZXR0ZSwgY2xpcF9zY2FuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19leHRyYV9hbHBoYSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMSsyKzg6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfMWJwcFJnYjJBcmdiX05vQmxlbmQoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgc3JjX2xlZnQsIHdpZHRoLCBtX3BTcmNQYWxldHRlLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfOGJwcFJnYjJSZ2JfTm9CbGVuZChkZXN0X3NjYW4sIHNyY19zY2FuLCBtX3BTcmNQYWxldHRlLCB3aWR0aCwgKG1fRGVzdEZvcm1hdCAmIDB4ZmYpID4+IDMsIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19leHRyYV9hbHBoYSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMCs4Og0KKyAgICAgICAgICAgICAgICBfQ29tcG9zaXRlUm93XzFicHBSZ2IyUmdiX05vQmxlbmQoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgc3JjX2xlZnQsIG1fcFNyY1BhbGV0dGUsIHdpZHRoLCAobV9EZXN0Rm9ybWF0ICYgMHhmZikgPj4gMywgY2xpcF9zY2FuKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAwKzI6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfOGJwcFJnYjJSZ2JfTm9CbGVuZChkZXN0X3NjYW4sIHNyY19zY2FuLCBtX3BTcmNQYWxldHRlLCB3aWR0aCwgKG1fRGVzdEZvcm1hdCAmIDB4ZmYpID4+IDMsIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19leHRyYV9hbHBoYSk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgMCsyKzg6DQorICAgICAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfMWJwcFJnYjJSZ2JhX05vQmxlbmQoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgc3JjX2xlZnQsIHdpZHRoLCBtX3BTcmNQYWxldHRlLCBjbGlwX3NjYW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X2V4dHJhX2FscGhhKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX1NjYW5saW5lQ29tcG9zaXRvcjo6Q29tcG9zaXRlQnl0ZU1hc2tMaW5lKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCB3aWR0aCwgRlhfTFBDQllURSBjbGlwX3NjYW4sDQorICAgICAgICBGWF9MUEJZVEUgZHN0X2V4dHJhX2FscGhhKQ0KK3sNCisgICAgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl84YnBwTWFzaykgew0KKyAgICAgICAgX0NvbXBvc2l0ZVJvd19CeXRlTWFzazJNYXNrKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIG1fTWFza0FscGhhLCB3aWR0aCwgY2xpcF9zY2FuKTsNCisgICAgfSBlbHNlIGlmICgobV9EZXN0Rm9ybWF0ICYgMHhmZikgPT0gOCkgew0KKyAgICAgICAgaWYgKG1fRGVzdEZvcm1hdCAmIDB4MDIwMCkgew0KKyAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfQnl0ZU1hc2syR3JheWEoZGVzdF9zY2FuLCBzcmNfc2NhbiwgbV9NYXNrQWxwaGEsIG1fTWFza1JlZCwgd2lkdGgsIGNsaXBfc2NhbiwgZHN0X2V4dHJhX2FscGhhKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19CeXRlTWFzazJHcmF5KGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIG1fTWFza0FscGhhLCBtX01hc2tSZWQsIHdpZHRoLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKG1fYlJnYkJ5dGVPcmRlcikgew0KKyAgICAgICAgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl9BcmdiKQ0KKyAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfQnl0ZU1hc2syQXJnYl9SZ2JCeXRlT3JkZXIoZGVzdF9zY2FuLCBzcmNfc2NhbiwgbV9NYXNrQWxwaGEsIG1fTWFza1JlZCwgbV9NYXNrR3JlZW4sIG1fTWFza0JsdWUsDQorICAgICAgICAgICAgICAgICAgICB3aWR0aCwgbV9CbGVuZFR5cGUsIGNsaXBfc2Nhbik7DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19CeXRlTWFzazJSZ2JfUmdiQnl0ZU9yZGVyKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIG1fTWFza0FscGhhLCBtX01hc2tSZWQsIG1fTWFza0dyZWVuLCBtX01hc2tCbHVlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgbV9CbGVuZFR5cGUsIChtX0Rlc3RGb3JtYXQgJiAweGZmKSA+PiAzLCBjbGlwX3NjYW4pOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9IGVsc2UgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl9BcmdiKQ0KKyAgICAgICAgX0NvbXBvc2l0ZVJvd19CeXRlTWFzazJBcmdiKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIG1fTWFza0FscGhhLCBtX01hc2tSZWQsIG1fTWFza0dyZWVuLCBtX01hc2tCbHVlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBtX0JsZW5kVHlwZSwgY2xpcF9zY2FuKTsNCisgICAgZWxzZSBpZiAobV9EZXN0Rm9ybWF0ID09IEZYRElCX1JnYiB8fCBtX0Rlc3RGb3JtYXQgPT0gRlhESUJfUmdiMzIpDQorICAgICAgICBfQ29tcG9zaXRlUm93X0J5dGVNYXNrMlJnYihkZXN0X3NjYW4sIHNyY19zY2FuLCBtX01hc2tBbHBoYSwgbV9NYXNrUmVkLCBtX01hc2tHcmVlbiwgbV9NYXNrQmx1ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBtX0JsZW5kVHlwZSwgKG1fRGVzdEZvcm1hdCAmIDB4ZmYpID4+IDMsIGNsaXBfc2Nhbik7DQorICAgIGVsc2UgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl9SZ2JhKQ0KKyAgICAgICAgX0NvbXBvc2l0ZVJvd19CeXRlTWFzazJSZ2JhKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIG1fTWFza0FscGhhLCBtX01hc2tSZWQsIG1fTWFza0dyZWVuLCBtX01hc2tCbHVlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBtX0JsZW5kVHlwZSwgY2xpcF9zY2FuLCBkc3RfZXh0cmFfYWxwaGEpOw0KK30NCit2b2lkIENGWF9TY2FubGluZUNvbXBvc2l0b3I6OkNvbXBvc2l0ZUJpdE1hc2tMaW5lKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBzcmNfbGVmdCwgaW50IHdpZHRoLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgIEZYX0xQQllURSBkc3RfZXh0cmFfYWxwaGEpDQorew0KKyAgICBpZiAobV9EZXN0Rm9ybWF0ID09IEZYRElCXzhicHBNYXNrKSB7DQorICAgICAgICBfQ29tcG9zaXRlUm93X0JpdE1hc2syTWFzayhkZXN0X3NjYW4sIHNyY19zY2FuLCBtX01hc2tBbHBoYSwgc3JjX2xlZnQsIHdpZHRoLCBjbGlwX3NjYW4pOw0KKyAgICB9IGVsc2UgaWYgKChtX0Rlc3RGb3JtYXQgJiAweGZmKSA9PSA4KSB7DQorICAgICAgICBpZiAobV9EZXN0Rm9ybWF0ICYgMHgwMjAwKQ0KKyAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfQml0TWFzazJHcmF5YShkZXN0X3NjYW4sIHNyY19zY2FuLCBtX01hc2tBbHBoYSwgbV9NYXNrUmVkLCBzcmNfbGVmdCwgd2lkdGgsIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X2V4dHJhX2FscGhhKTsNCisgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgIF9Db21wb3NpdGVSb3dfQml0TWFzazJHcmF5KGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIG1fTWFza0FscGhhLCBtX01hc2tSZWQsIHNyY19sZWZ0LCB3aWR0aCwgY2xpcF9zY2FuKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChtX2JSZ2JCeXRlT3JkZXIpIHsNCisgICAgICAgIGlmIChtX0Rlc3RGb3JtYXQgPT0gRlhESUJfQXJnYikNCisgICAgICAgICAgICBfQ29tcG9zaXRlUm93X0JpdE1hc2syQXJnYl9SZ2JCeXRlT3JkZXIoZGVzdF9zY2FuLCBzcmNfc2NhbiwgbV9NYXNrQWxwaGEsIG1fTWFza1JlZCwgbV9NYXNrR3JlZW4sIG1fTWFza0JsdWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19sZWZ0LCB3aWR0aCwgbV9CbGVuZFR5cGUsIGNsaXBfc2Nhbik7DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgX0NvbXBvc2l0ZVJvd19CaXRNYXNrMlJnYl9SZ2JCeXRlT3JkZXIoZGVzdF9zY2FuLCBzcmNfc2NhbiwgbV9NYXNrQWxwaGEsIG1fTWFza1JlZCwgbV9NYXNrR3JlZW4sIG1fTWFza0JsdWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2xlZnQsIHdpZHRoLCBtX0JsZW5kVHlwZSwgKG1fRGVzdEZvcm1hdCAmIDB4ZmYpID4+IDMsIGNsaXBfc2Nhbik7DQorICAgICAgICByZXR1cm47DQorICAgIH0gZWxzZSBpZiAobV9EZXN0Rm9ybWF0ID09IEZYRElCX0FyZ2IpDQorICAgICAgICBfQ29tcG9zaXRlUm93X0JpdE1hc2syQXJnYihkZXN0X3NjYW4sIHNyY19zY2FuLCBtX01hc2tBbHBoYSwgbV9NYXNrUmVkLCBtX01hc2tHcmVlbiwgbV9NYXNrQmx1ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19sZWZ0LCB3aWR0aCwgbV9CbGVuZFR5cGUsIGNsaXBfc2Nhbik7DQorICAgIGVsc2UgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl9SZ2IgfHwgbV9EZXN0Rm9ybWF0ID09IEZYRElCX1JnYjMyKQ0KKyAgICAgICAgX0NvbXBvc2l0ZVJvd19CaXRNYXNrMlJnYihkZXN0X3NjYW4sIHNyY19zY2FuLCBtX01hc2tBbHBoYSwgbV9NYXNrUmVkLCBtX01hc2tHcmVlbiwgbV9NYXNrQmx1ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2xlZnQsIHdpZHRoLCBtX0JsZW5kVHlwZSwgKG1fRGVzdEZvcm1hdCAmIDB4ZmYpID4+IDMsIGNsaXBfc2Nhbik7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0RJQml0bWFwOjpDb21wb3NpdGVCaXRtYXAoaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwU3JjQml0bWFwLCBpbnQgc3JjX2xlZnQsIGludCBzcmNfdG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsZW5kX3R5cGUsIGNvbnN0IENGWF9DbGlwUmduKiBwQ2xpcFJnbiwgRlhfQk9PTCBiUmdiQnl0ZU9yZGVyLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgaWYgKG1fcEJ1ZmZlciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQVNTRVJUKCFwU3JjQml0bWFwLT5Jc0FscGhhTWFzaygpKTsNCisgICAgQVNTRVJUKG1fYnBwID49IDgpOw0KKyAgICBpZiAocFNyY0JpdG1hcC0+SXNBbHBoYU1hc2soKSB8fCBtX2JwcCA8IDgpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBHZXRPdmVybGFwUmVjdChkZXN0X2xlZnQsIGRlc3RfdG9wLCB3aWR0aCwgaGVpZ2h0LCBwU3JjQml0bWFwLT5HZXRXaWR0aCgpLCBwU3JjQml0bWFwLT5HZXRIZWlnaHQoKSwNCisgICAgICAgICAgICAgICAgICAgc3JjX2xlZnQsIHNyY190b3AsIHBDbGlwUmduKTsNCisgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGNvbnN0IENGWF9ESUJpdG1hcCogcENsaXBNYXNrID0gTlVMTDsNCisgICAgRlhfUkVDVCBjbGlwX2JveDsNCisgICAgaWYgKHBDbGlwUmduICYmIHBDbGlwUmduLT5HZXRUeXBlKCkgIT0gQ0ZYX0NsaXBSZ246OlJlY3RJKSB7DQorICAgICAgICBBU1NFUlQocENsaXBSZ24tPkdldFR5cGUoKSA9PSBDRlhfQ2xpcFJnbjo6TWFza0YpOw0KKyAgICAgICAgcENsaXBNYXNrID0gcENsaXBSZ24tPkdldE1hc2soKTsNCisgICAgICAgIGNsaXBfYm94ID0gcENsaXBSZ24tPkdldEJveCgpOw0KKyAgICB9DQorICAgIENGWF9TY2FubGluZUNvbXBvc2l0b3IgY29tcG9zaXRvcjsNCisgICAgaWYgKCFjb21wb3NpdG9yLkluaXQoR2V0Rm9ybWF0KCksIHBTcmNCaXRtYXAtPkdldEZvcm1hdCgpLCB3aWR0aCwgcFNyY0JpdG1hcC0+R2V0UGFsZXR0ZSgpLCAwLCBibGVuZF90eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBwQ2xpcE1hc2sgIT0gTlVMTCwgYlJnYkJ5dGVPcmRlciwgMCwgcEljY1RyYW5zZm9ybSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpbnQgZGVzdF9CcHAgPSBtX2JwcCAvIDg7DQorICAgIGludCBzcmNfQnBwID0gcFNyY0JpdG1hcC0+R2V0QlBQKCkgLyA4Ow0KKyAgICBGWF9CT09MIGJSZ2IgPSBGQUxTRTsNCisgICAgRlhfQk9PTCBiQ215ayA9IEZBTFNFOw0KKyAgICBpZiAoc3JjX0JwcCA+IDEpIHsNCisgICAgICAgIGlmIChwU3JjQml0bWFwLT5Jc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgYkNteWsgPSBUUlVFOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBiUmdiID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDRlhfRElCaXRtYXAqIHBTcmNBbHBoYU1hc2sgPSBwU3JjQml0bWFwLT5tX3BBbHBoYU1hc2s7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gbV9wQnVmZmVyICsgKGRlc3RfdG9wICsgcm93KSAqIG1fUGl0Y2ggKyBkZXN0X2xlZnQgKiBkZXN0X0JwcDsNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwU3JjQml0bWFwLT5HZXRTY2FubGluZShzcmNfdG9wICsgcm93KSArIHNyY19sZWZ0ICogc3JjX0JwcDsNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW5fZXh0cmFfYWxwaGEgPSBwU3JjQWxwaGFNYXNrID8gcFNyY0FscGhhTWFzay0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdykgKyBzcmNfbGVmdCA6IE5VTEw7DQorICAgICAgICBGWF9MUEJZVEUgZHN0X3NjYW5fZXh0cmFfYWxwaGEgPSBtX3BBbHBoYU1hc2sgPyAoRlhfTFBCWVRFKW1fcEFscGhhTWFzay0+R2V0U2NhbmxpbmUoZGVzdF90b3AgKyByb3cpICsgZGVzdF9sZWZ0IDogTlVMTDsNCisgICAgICAgIEZYX0xQQ0JZVEUgY2xpcF9zY2FuID0gTlVMTDsNCisgICAgICAgIGlmIChwQ2xpcE1hc2spIHsNCisgICAgICAgICAgICBjbGlwX3NjYW4gPSBwQ2xpcE1hc2stPm1fcEJ1ZmZlciArIChkZXN0X3RvcCArIHJvdyAtIGNsaXBfYm94LnRvcCkgKiBwQ2xpcE1hc2stPm1fUGl0Y2ggKyAoZGVzdF9sZWZ0IC0gY2xpcF9ib3gubGVmdCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYlJnYikgew0KKyAgICAgICAgICAgIGNvbXBvc2l0b3IuQ29tcG9zaXRlUmdiQml0bWFwTGluZShkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCwgY2xpcF9zY2FuLCBzcmNfc2Nhbl9leHRyYV9hbHBoYSwgZHN0X3NjYW5fZXh0cmFfYWxwaGEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBjb21wb3NpdG9yLkNvbXBvc2l0ZVBhbEJpdG1hcExpbmUoZGVzdF9zY2FuLCBzcmNfc2Nhbiwgc3JjX2xlZnQsIHdpZHRoLCBjbGlwX3NjYW4sIHNyY19zY2FuX2V4dHJhX2FscGhhLCBkc3Rfc2Nhbl9leHRyYV9hbHBoYSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0RJQml0bWFwOjpDb21wb3NpdGVNYXNrKGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBNYXNrLCBGWF9EV09SRCBjb2xvciwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxlbmRfdHlwZSwgY29uc3QgQ0ZYX0NsaXBSZ24qIHBDbGlwUmduLCBGWF9CT09MIGJSZ2JCeXRlT3JkZXIsIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgaWYgKG1fcEJ1ZmZlciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQVNTRVJUKHBNYXNrLT5Jc0FscGhhTWFzaygpKTsNCisgICAgQVNTRVJUKG1fYnBwID49IDgpOw0KKyAgICBpZiAoIXBNYXNrLT5Jc0FscGhhTWFzaygpIHx8IG1fYnBwIDwgOCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEdldE92ZXJsYXBSZWN0KGRlc3RfbGVmdCwgZGVzdF90b3AsIHdpZHRoLCBoZWlnaHQsIHBNYXNrLT5HZXRXaWR0aCgpLCBwTWFzay0+R2V0SGVpZ2h0KCksIHNyY19sZWZ0LCBzcmNfdG9wLCBwQ2xpcFJnbik7DQorICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpbnQgc3JjX2FscGhhID0gKEZYX0JZVEUpKGFscGhhX2ZsYWcgPj4gOCkgPyAoYWxwaGFfZmxhZyAmIDB4ZmYpIDogRlhBUkdCX0EoY29sb3IpOw0KKyAgICBpZiAoc3JjX2FscGhhID09IDApIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGNvbnN0IENGWF9ESUJpdG1hcCogcENsaXBNYXNrID0gTlVMTDsNCisgICAgRlhfUkVDVCBjbGlwX2JveDsNCisgICAgaWYgKHBDbGlwUmduICYmIHBDbGlwUmduLT5HZXRUeXBlKCkgIT0gQ0ZYX0NsaXBSZ246OlJlY3RJKSB7DQorICAgICAgICBBU1NFUlQocENsaXBSZ24tPkdldFR5cGUoKSA9PSBDRlhfQ2xpcFJnbjo6TWFza0YpOw0KKyAgICAgICAgcENsaXBNYXNrID0gcENsaXBSZ24tPkdldE1hc2soKTsNCisgICAgICAgIGNsaXBfYm94ID0gcENsaXBSZ24tPkdldEJveCgpOw0KKyAgICB9DQorICAgIGludCBzcmNfYnBwID0gcE1hc2stPkdldEJQUCgpOw0KKyAgICBpbnQgQnBwID0gR2V0QlBQKCkgLyA4Ow0KKyAgICBDRlhfU2NhbmxpbmVDb21wb3NpdG9yIGNvbXBvc2l0b3I7DQorICAgIGlmICghY29tcG9zaXRvci5Jbml0KEdldEZvcm1hdCgpLCBwTWFzay0+R2V0Rm9ybWF0KCksIHdpZHRoLCBOVUxMLCBjb2xvciwgYmxlbmRfdHlwZSwgcENsaXBNYXNrICE9IE5VTEwsIGJSZ2JCeXRlT3JkZXIsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBtX3BCdWZmZXIgKyAoZGVzdF90b3AgKyByb3cpICogbV9QaXRjaCArIGRlc3RfbGVmdCAqIEJwcDsNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwTWFzay0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdyk7DQorICAgICAgICBGWF9MUEJZVEUgZHN0X3NjYW5fZXh0cmFfYWxwaGEgPSBtX3BBbHBoYU1hc2sgPyAoRlhfTFBCWVRFKW1fcEFscGhhTWFzay0+R2V0U2NhbmxpbmUoZGVzdF90b3AgKyByb3cpICsgZGVzdF9sZWZ0IDogTlVMTDsNCisgICAgICAgIEZYX0xQQ0JZVEUgY2xpcF9zY2FuID0gTlVMTDsNCisgICAgICAgIGlmIChwQ2xpcE1hc2spIHsNCisgICAgICAgICAgICBjbGlwX3NjYW4gPSBwQ2xpcE1hc2stPm1fcEJ1ZmZlciArIChkZXN0X3RvcCArIHJvdyAtIGNsaXBfYm94LnRvcCkgKiBwQ2xpcE1hc2stPm1fUGl0Y2ggKyAoZGVzdF9sZWZ0IC0gY2xpcF9ib3gubGVmdCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3JjX2JwcCA9PSAxKSB7DQorICAgICAgICAgICAgY29tcG9zaXRvci5Db21wb3NpdGVCaXRNYXNrTGluZShkZXN0X3NjYW4sIHNyY19zY2FuLCBzcmNfbGVmdCwgd2lkdGgsIGNsaXBfc2NhbiwgZHN0X3NjYW5fZXh0cmFfYWxwaGEpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBjb21wb3NpdG9yLkNvbXBvc2l0ZUJ5dGVNYXNrTGluZShkZXN0X3NjYW4sIHNyY19zY2FuICsgc3JjX2xlZnQsIHdpZHRoLCBjbGlwX3NjYW4sIGRzdF9zY2FuX2V4dHJhX2FscGhhKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDRlhfRElCaXRtYXA6OkNvbXBvc2l0ZVJlY3QoaW50IGxlZnQsIGludCB0b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCwgRlhfRFdPUkQgY29sb3IsIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgaWYgKG1fcEJ1ZmZlciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IHNyY19hbHBoYSA9IChhbHBoYV9mbGFnID4+IDgpID8gKGFscGhhX2ZsYWcgJiAweGZmKSA6IEZYQVJHQl9BKGNvbG9yKTsNCisgICAgaWYgKHNyY19hbHBoYSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBGWF9SRUNUIHJlY3QobGVmdCwgdG9wLCBsZWZ0ICsgd2lkdGgsIHRvcCArIGhlaWdodCk7DQorICAgIHJlY3QuSW50ZXJzZWN0KDAsIDAsIG1fV2lkdGgsIG1fSGVpZ2h0KTsNCisgICAgaWYgKHJlY3QuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICB3aWR0aCA9IHJlY3QuV2lkdGgoKTsNCisgICAgRlhfRFdPUkQgZHN0X2NvbG9yOw0KKyAgICBpZiAoYWxwaGFfZmxhZyA+PiA4KSB7DQorICAgICAgICBkc3RfY29sb3IgPSBGWENNWUtfVE9ESUIoY29sb3IpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZHN0X2NvbG9yID0gRlhBUkdCX1RPRElCKGNvbG9yKTsNCisgICAgfQ0KKyAgICBGWF9MUEJZVEUgY29sb3JfcCA9IChGWF9MUEJZVEUpJmRzdF9jb2xvcjsNCisgICAgaWYgKG1fYnBwID09IDgpIHsNCisgICAgICAgIEZYX0JZVEUgZ3JheSA9IDI1NTsNCisgICAgICAgIGlmICghSXNBbHBoYU1hc2soKSkgew0KKyAgICAgICAgICAgIGlmIChwSWNjVHJhbnNmb3JtICYmIENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCkgJiYgQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCkpIHsNCisgICAgICAgICAgICAgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCAmZ3JheSwgY29sb3JfcCwgMSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYgKGFscGhhX2ZsYWcgPj4gOCkgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSByLCBnLCBiOw0KKyAgICAgICAgICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IxKGNvbG9yX3BbMF0sIGNvbG9yX3BbMV0sIGNvbG9yX3BbMl0sIGNvbG9yX3BbM10sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciwgZywgYik7DQorICAgICAgICAgICAgICAgICAgICBncmF5ID0gRlhSR0IyR1JBWShyLCBnLCBiKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGdyYXkgPSAoRlhfQllURSlGWFJHQjJHUkFZKChpbnQpY29sb3JfcFsyXSwgY29sb3JfcFsxXSwgY29sb3JfcFswXSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKElzQ215a0ltYWdlKCkpIHsNCisgICAgICAgICAgICAgICAgZ3JheSA9IH5ncmF5Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IHJvdyA9IHJlY3QudG9wOyByb3cgPCByZWN0LmJvdHRvbTsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IG1fcEJ1ZmZlciArIHJvdyAqIG1fUGl0Y2ggKyByZWN0LmxlZnQ7DQorICAgICAgICAgICAgaWYgKHNyY19hbHBoYSA9PSAyNTUpIHsNCisgICAgICAgICAgICAgICAgRlhTWVNfbWVtc2V0OChkZXN0X3NjYW4sIGdyYXksIHdpZHRoKTsNCisgICAgICAgICAgICB9IGVsc2UNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGdyYXksIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9IGVsc2UgaWYgKG1fYnBwID09IDEpIHsNCisgICAgICAgIEFTU0VSVCghSXNDbXlrSW1hZ2UoKSAmJiAoRlhfQllURSkoYWxwaGFfZmxhZyA+PiA4KSA9PSAwKTsNCisgICAgICAgIGludCBsZWZ0X3NoaWZ0ID0gcmVjdC5sZWZ0ICUgODsNCisgICAgICAgIGludCByaWdodF9zaGlmdCA9IHJlY3QucmlnaHQgJSA4Ow0KKyAgICAgICAgaW50IHdpZHRoID0gcmVjdC5yaWdodCAvIDggLSByZWN0LmxlZnQgLyA4Ow0KKyAgICAgICAgaW50IGluZGV4ID0gMDsNCisgICAgICAgIGlmIChtX3BQYWxldHRlID09IE5VTEwpIHsNCisgICAgICAgICAgICBpbmRleCA9ICgoRlhfQllURSljb2xvciA9PSAweGZmKSA/IDEgOiAwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkgKyspDQorICAgICAgICAgICAgICAgIGlmIChtX3BQYWxldHRlW2ldID09IGNvbG9yKSB7DQorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IHJvdyA9IHJlY3QudG9wOyByb3cgPCByZWN0LmJvdHRvbTsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfQllURSogZGVzdF9zY2FuX3RvcCA9IChGWF9CWVRFKilHZXRTY2FubGluZShyb3cpICsgcmVjdC5sZWZ0IC8gODsNCisgICAgICAgICAgICBGWF9CWVRFKiBkZXN0X3NjYW5fdG9wX3IgPSAoRlhfQllURSopR2V0U2NhbmxpbmUocm93KSArIHJlY3QucmlnaHQgLyA4Ow0KKyAgICAgICAgICAgIEZYX0JZVEUgbGVmdF9mbGFnID0gICpkZXN0X3NjYW5fdG9wICYgKDI1NSA8PCAoOCAtIGxlZnRfc2hpZnQpKTsNCisgICAgICAgICAgICBGWF9CWVRFIHJpZ2h0X2ZsYWcgPSAqZGVzdF9zY2FuX3RvcF9yICYgKDI1NSA+PiByaWdodF9zaGlmdCk7DQorICAgICAgICAgICAgaWYgKHdpZHRoKSB7DQorICAgICAgICAgICAgICAgIEZYU1lTX21lbXNldDgoZGVzdF9zY2FuX3RvcCArIDEsIGluZGV4ID8gMjU1IDogMCwgd2lkdGggLSAxKTsNCisgICAgICAgICAgICAgICAgaWYgKCFpbmRleCkgew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2Nhbl90b3AgJj0gbGVmdF9mbGFnOw0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2Nhbl90b3BfciAmPSByaWdodF9mbGFnOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2Nhbl90b3AgfD0gfmxlZnRfZmxhZzsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW5fdG9wX3IgfD0gfnJpZ2h0X2ZsYWc7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAoIWluZGV4KSB7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuX3RvcCAmPSBsZWZ0X2ZsYWcgfCByaWdodF9mbGFnOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2Nhbl90b3AgfD0gfihsZWZ0X2ZsYWcgfCByaWdodF9mbGFnKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEFTU0VSVChtX2JwcCA+PSAyNCk7DQorICAgIGlmIChtX2JwcCA8IDI0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHBJY2NUcmFuc2Zvcm0gJiYgQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKSkgew0KKyAgICAgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgY29sb3JfcCwgY29sb3JfcCwgMSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAoYWxwaGFfZmxhZyA+PiA4ICYmICFJc0NteWtJbWFnZSgpKQ0KKyAgICAgICAgICAgIEFkb2JlQ01ZS190b19zUkdCMShGWFNZU19HZXRDVmFsdWUoY29sb3IpLCBGWFNZU19HZXRNVmFsdWUoY29sb3IpLCBGWFNZU19HZXRZVmFsdWUoY29sb3IpLCBGWFNZU19HZXRLVmFsdWUoY29sb3IpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcl9wWzJdLCBjb2xvcl9wWzFdLCBjb2xvcl9wWzBdKTsNCisgICAgICAgIGVsc2UgaWYgKCEoYWxwaGFfZmxhZyA+PiA4KSAmJiBJc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmKCFJc0NteWtJbWFnZSgpKSB7DQorICAgICAgICBjb2xvcl9wWzNdID0gKEZYX0JZVEUpc3JjX2FscGhhOw0KKyAgICB9DQorICAgIGludCBCcHAgPSBtX2JwcCAvIDg7DQorICAgIEZYX0JPT0wgYkFscGhhID0gSGFzQWxwaGEoKTsNCisgICAgRlhfQk9PTCBiQXJnYiA9IEdldEZvcm1hdCgpID09IEZYRElCX0FyZ2IgPyBUUlVFIDogRkFMU0U7DQorICAgIGlmIChzcmNfYWxwaGEgPT0gMjU1KSB7DQorICAgICAgICBmb3IgKGludCByb3cgPSByZWN0LnRvcDsgcm93IDwgcmVjdC5ib3R0b207IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBtX3BCdWZmZXIgKyByb3cgKiBtX1BpdGNoICsgcmVjdC5sZWZ0ICogQnBwOw0KKyAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW5fYWxwaGEgPSBtX3BBbHBoYU1hc2sgPyAoRlhfTFBCWVRFKW1fcEFscGhhTWFzay0+R2V0U2NhbmxpbmUocm93KSArIHJlY3QubGVmdCA6IE5VTEw7DQorICAgICAgICAgICAgaWYgKGRlc3Rfc2Nhbl9hbHBoYSkgew0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1zZXQ4KGRlc3Rfc2Nhbl9hbHBoYSwgMHhmZiwgd2lkdGgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoQnBwID09IDQpIHsNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQqIHNjYW4gPSAoRlhfRFdPUkQqKWRlc3Rfc2NhbjsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgKnNjYW4gKysgPSBkc3RfY29sb3I7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuICsrID0gY29sb3JfcFswXTsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gKysgPSBjb2xvcl9wWzFdOw0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiArKyA9IGNvbG9yX3BbMl07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBmb3IgKGludCByb3cgPSByZWN0LnRvcDsgcm93IDwgcmVjdC5ib3R0b207IHJvdyArKykgew0KKyAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IG1fcEJ1ZmZlciArIHJvdyAqIG1fUGl0Y2ggKyByZWN0LmxlZnQgKiBCcHA7DQorICAgICAgICBpZiAoYkFscGhhKSB7DQorICAgICAgICAgICAgaWYgKGJBcmdiKSB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWEFSR0JfU0VURElCKGRlc3Rfc2NhbiwgRlhBUkdCX01BS0Uoc3JjX2FscGhhLCBjb2xvcl9wWzJdLCBjb2xvcl9wWzFdLCBjb2xvcl9wWzBdKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgY29sb3JfcFswXSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IEZYRElCX0FMUEhBX01FUkdFKCpkZXN0X3NjYW4sIGNvbG9yX3BbMV0sIGFscGhhX3JhdGlvKTsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBjb2xvcl9wWzJdLCBhbHBoYV9yYXRpbyk7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2Nhbl9hbHBoYSA9IChGWF9MUEJZVEUpbV9wQWxwaGFNYXNrLT5HZXRTY2FubGluZShyb3cpICsgcmVjdC5sZWZ0Ow0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGJhY2tfYWxwaGEgPSAqZGVzdF9zY2FuX2FscGhhOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW5fYWxwaGErKyA9IHNyY19hbHBoYTsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X3NjYW4sIGNvbG9yX3AsIEJwcCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2Nhbl9hbHBoYSArKyA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yKGludCBjb21wcyA9IDA7IGNvbXBzIDwgQnBwOyBjb21wcyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBGWERJQl9BTFBIQV9NRVJHRSgqZGVzdF9zY2FuLCBjb2xvcl9wW2NvbXBzXSwgYWxwaGFfcmF0aW8pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBmb3IoaW50IGNvbXBzID0gMDsgY29tcHMgPCBCcHA7IGNvbXBzICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoY29tcHMgPT0gMykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gKysgPSAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gRlhESUJfQUxQSEFfTUVSR0UoKmRlc3Rfc2NhbiwgY29sb3JfcFtjb21wc10sIHNyY19hbHBoYSk7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0NGWF9CaXRtYXBDb21wb3Nlcjo6Q0ZYX0JpdG1hcENvbXBvc2VyKCkNCit7DQorICAgIG1fcFNjYW5saW5lViA9IE5VTEw7DQorICAgIG1fcFNjYW5saW5lQWxwaGFWID0gTlVMTDsNCisgICAgbV9wQ2xpcFNjYW5WID0gTlVMTDsNCisgICAgbV9wQWRkQ2xpcFNjYW4gPSBOVUxMOw0KKyAgICBtX2JSZ2JCeXRlT3JkZXIgPSBGQUxTRTsNCisgICAgbV9CbGVuZFR5cGUgPSBGWERJQl9CTEVORF9OT1JNQUw7DQorfQ0KK0NGWF9CaXRtYXBDb21wb3Nlcjo6fkNGWF9CaXRtYXBDb21wb3NlcigpDQorew0KKyAgICBpZiAobV9wU2NhbmxpbmVWKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFNjYW5saW5lVik7DQorICAgIH0NCisgICAgaWYgKG1fcFNjYW5saW5lQWxwaGFWKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFNjYW5saW5lQWxwaGFWKTsNCisgICAgfQ0KKyAgICBpZiAobV9wQ2xpcFNjYW5WKSB7DQorICAgICAgICBGWF9GcmVlKG1fcENsaXBTY2FuVik7DQorICAgIH0NCisgICAgaWYgKG1fcEFkZENsaXBTY2FuKSB7DQorICAgICAgICBGWF9GcmVlKG1fcEFkZENsaXBTY2FuKTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9CaXRtYXBDb21wb3Nlcjo6Q29tcG9zZShDRlhfRElCaXRtYXAqIHBEZXN0LCBjb25zdCBDRlhfQ2xpcFJnbiogcENsaXBSZ24sIGludCBiaXRtYXBfYWxwaGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgbWFza19jb2xvciwgRlhfUkVDVCYgZGVzdF9yZWN0LCBGWF9CT09MIGJWZXJ0aWNhbCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CT09MIGJGbGlwWCwgRlhfQk9PTCBiRmxpcFksIEZYX0JPT0wgYlJnYkJ5dGVPcmRlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpDQorew0KKyAgICBtX3BCaXRtYXAgPSBwRGVzdDsNCisgICAgbV9wQ2xpcFJnbiA9IHBDbGlwUmduOw0KKyAgICBtX0Rlc3RMZWZ0ID0gZGVzdF9yZWN0LmxlZnQ7DQorICAgIG1fRGVzdFRvcCA9IGRlc3RfcmVjdC50b3A7DQorICAgIG1fRGVzdFdpZHRoID0gZGVzdF9yZWN0LldpZHRoKCk7DQorICAgIG1fRGVzdEhlaWdodCA9IGRlc3RfcmVjdC5IZWlnaHQoKTsNCisgICAgbV9CaXRtYXBBbHBoYSA9IGJpdG1hcF9hbHBoYTsNCisgICAgbV9NYXNrQ29sb3IgPSBtYXNrX2NvbG9yOw0KKyAgICBtX3BDbGlwTWFzayA9IE5VTEw7DQorICAgIGlmIChwQ2xpcFJnbiAmJiBwQ2xpcFJnbi0+R2V0VHlwZSgpICE9IENGWF9DbGlwUmduOjpSZWN0SSkgew0KKyAgICAgICAgbV9wQ2xpcE1hc2sgPSBwQ2xpcFJnbi0+R2V0TWFzaygpOw0KKyAgICB9DQorICAgIG1fYlZlcnRpY2FsID0gYlZlcnRpY2FsOw0KKyAgICBtX2JGbGlwWCA9IGJGbGlwWDsNCisgICAgbV9iRmxpcFkgPSBiRmxpcFk7DQorICAgIG1fQWxwaGFGbGFnID0gYWxwaGFfZmxhZzsNCisgICAgbV9wSWNjVHJhbnNmb3JtID0gcEljY1RyYW5zZm9ybTsNCisgICAgbV9iUmdiQnl0ZU9yZGVyID0gYlJnYkJ5dGVPcmRlcjsNCisgICAgbV9CbGVuZFR5cGUgPSBibGVuZF90eXBlOw0KK30NCitGWF9CT09MIENGWF9CaXRtYXBDb21wb3Nlcjo6U2V0SW5mbyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIEZYRElCX0Zvcm1hdCBzcmNfZm9ybWF0LCBGWF9EV09SRCogcFNyY1BhbGV0dGUpDQorew0KKyAgICBtX1NyY0Zvcm1hdCA9IHNyY19mb3JtYXQ7DQorICAgIGlmICghbV9Db21wb3NpdG9yLkluaXQobV9wQml0bWFwLT5HZXRGb3JtYXQoKSwgc3JjX2Zvcm1hdCwgd2lkdGgsIHBTcmNQYWxldHRlLCBtX01hc2tDb2xvciwgRlhESUJfQkxFTkRfTk9STUFMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcENsaXBNYXNrICE9IE5VTEwgfHwgKG1fQml0bWFwQWxwaGEgPCAyNTUpLCBtX2JSZ2JCeXRlT3JkZXIsIG1fQWxwaGFGbGFnLCBtX3BJY2NUcmFuc2Zvcm0pKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fYlZlcnRpY2FsKSB7DQorICAgICAgICBtX3BTY2FubGluZVYgPSBGWF9BbGxvYyhGWF9CWVRFLCBtX3BCaXRtYXAtPkdldEJQUCgpIC8gOCAqIHdpZHRoICsgNCk7DQorICAgICAgICBpZiAoIW1fcFNjYW5saW5lVikgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIG1fcENsaXBTY2FuViA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fcEJpdG1hcC0+R2V0SGVpZ2h0KCkpOw0KKyAgICAgICAgaWYgKCFtX3BDbGlwU2NhblYpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9wQml0bWFwLT5tX3BBbHBoYU1hc2spIHsNCisgICAgICAgICAgICBtX3BTY2FubGluZUFscGhhViA9IEZYX0FsbG9jKEZYX0JZVEUsIHdpZHRoICsgNCk7DQorICAgICAgICAgICAgaWYgKCFtX3BTY2FubGluZUFscGhhVikgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChtX0JpdG1hcEFscGhhIDwgMjU1KSB7DQorICAgICAgICBtX3BBZGRDbGlwU2NhbiA9IEZYX0FsbG9jKEZYX0JZVEUsIG1fYlZlcnRpY2FsID8gbV9wQml0bWFwLT5HZXRIZWlnaHQoKSA6IG1fcEJpdG1hcC0+R2V0V2lkdGgoKSk7DQorICAgICAgICBpZiAoIW1fcEFkZENsaXBTY2FuKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENGWF9CaXRtYXBDb21wb3Nlcjo6RG9Db21wb3NlKEZYX0xQQllURSBkZXN0X3NjYW4sIEZYX0xQQ0JZVEUgc3JjX3NjYW4sIGludCBkZXN0X3dpZHRoLCBGWF9MUENCWVRFIGNsaXBfc2NhbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX2V4dHJhX2FscGhhLCBGWF9MUEJZVEUgZHN0X2V4dHJhX2FscGhhKQ0KK3sNCisgICAgaWYgKG1fQml0bWFwQWxwaGEgPCAyNTUpIHsNCisgICAgICAgIGlmIChjbGlwX3NjYW4pIHsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlc3Rfd2lkdGg7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgbV9wQWRkQ2xpcFNjYW5baV0gPSBjbGlwX3NjYW5baV0gKiBtX0JpdG1hcEFscGhhIC8gMjU1Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtc2V0OChtX3BBZGRDbGlwU2NhbiwgbV9CaXRtYXBBbHBoYSwgZGVzdF93aWR0aCk7DQorICAgICAgICB9DQorICAgICAgICBjbGlwX3NjYW4gPSBtX3BBZGRDbGlwU2NhbjsNCisgICAgfQ0KKyAgICBpZiAobV9TcmNGb3JtYXQgPT0gRlhESUJfOGJwcE1hc2spIHsNCisgICAgICAgIG1fQ29tcG9zaXRvci5Db21wb3NpdGVCeXRlTWFza0xpbmUoZGVzdF9zY2FuLCBzcmNfc2NhbiwgZGVzdF93aWR0aCwgY2xpcF9zY2FuLCBkc3RfZXh0cmFfYWxwaGEpOw0KKyAgICB9IGVsc2UgaWYgKChtX1NyY0Zvcm1hdCAmIDB4ZmYpID09IDgpIHsNCisgICAgICAgIG1fQ29tcG9zaXRvci5Db21wb3NpdGVQYWxCaXRtYXBMaW5lKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIDAsIGRlc3Rfd2lkdGgsIGNsaXBfc2Nhbiwgc3JjX2V4dHJhX2FscGhhLCBkc3RfZXh0cmFfYWxwaGEpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9Db21wb3NpdG9yLkNvbXBvc2l0ZVJnYkJpdG1hcExpbmUoZGVzdF9zY2FuLCBzcmNfc2NhbiwgZGVzdF93aWR0aCwgY2xpcF9zY2FuLCBzcmNfZXh0cmFfYWxwaGEsIGRzdF9leHRyYV9hbHBoYSk7DQorICAgIH0NCit9DQordm9pZCBDRlhfQml0bWFwQ29tcG9zZXI6OkNvbXBvc2VTY2FubGluZShpbnQgbGluZSwgRlhfTFBDQllURSBzY2FubGluZSwgRlhfTFBDQllURSBzY2FuX2V4dHJhX2FscGhhKQ0KK3sNCisgICAgaWYgKG1fYlZlcnRpY2FsKSB7DQorICAgICAgICBDb21wb3NlU2NhbmxpbmVWKGxpbmUsIHNjYW5saW5lLCBzY2FuX2V4dHJhX2FscGhhKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9MUENCWVRFIGNsaXBfc2NhbiA9IE5VTEw7DQorICAgIGlmIChtX3BDbGlwTWFzaykNCisgICAgICAgIGNsaXBfc2NhbiA9IG1fcENsaXBNYXNrLT5HZXRCdWZmZXIoKSArIChtX0Rlc3RUb3AgKyBsaW5lIC0gbV9wQ2xpcFJnbi0+R2V0Qm94KCkudG9wKSAqDQorICAgICAgICAgICAgICAgICAgICBtX3BDbGlwTWFzay0+R2V0UGl0Y2goKSArIChtX0Rlc3RMZWZ0IC0gbV9wQ2xpcFJnbi0+R2V0Qm94KCkubGVmdCk7DQorICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSAoRlhfTFBCWVRFKW1fcEJpdG1hcC0+R2V0U2NhbmxpbmUobGluZSArIG1fRGVzdFRvcCkgKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgbV9EZXN0TGVmdCAqIG1fcEJpdG1hcC0+R2V0QlBQKCkgLyA4Ow0KKyAgICBGWF9MUEJZVEUgZGVzdF9hbHBoYV9zY2FuID0gbV9wQml0bWFwLT5tX3BBbHBoYU1hc2sgPw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZYX0xQQllURSltX3BCaXRtYXAtPm1fcEFscGhhTWFzay0+R2V0U2NhbmxpbmUobGluZSArIG1fRGVzdFRvcCkgKyBtX0Rlc3RMZWZ0IDogTlVMTDsNCisgICAgRG9Db21wb3NlKGRlc3Rfc2Nhbiwgc2NhbmxpbmUsIG1fRGVzdFdpZHRoLCBjbGlwX3NjYW4sIHNjYW5fZXh0cmFfYWxwaGEsIGRlc3RfYWxwaGFfc2Nhbik7DQorfQ0KK3ZvaWQgQ0ZYX0JpdG1hcENvbXBvc2VyOjpDb21wb3NlU2NhbmxpbmVWKGludCBsaW5lLCBGWF9MUENCWVRFIHNjYW5saW5lLCBGWF9MUENCWVRFIHNjYW5fZXh0cmFfYWxwaGEpDQorew0KKyAgICBpbnQgaTsNCisgICAgaW50IEJwcCA9IG1fcEJpdG1hcC0+R2V0QlBQKCkgLyA4Ow0KKyAgICBpbnQgZGVzdF9waXRjaCA9IG1fcEJpdG1hcC0+R2V0UGl0Y2goKTsNCisgICAgaW50IGRlc3RfYWxwaGFfcGl0Y2ggPSBtX3BCaXRtYXAtPm1fcEFscGhhTWFzayA/IG1fcEJpdG1hcC0+bV9wQWxwaGFNYXNrLT5HZXRQaXRjaCgpIDogMDsNCisgICAgaW50IGRlc3RfeCA9IG1fRGVzdExlZnQgKyAobV9iRmxpcFggPyAobV9EZXN0V2lkdGggLSBsaW5lIC0gMSkgOiBsaW5lKTsNCisgICAgRlhfTFBCWVRFIGRlc3RfYnVmID0gbV9wQml0bWFwLT5HZXRCdWZmZXIoKSArIGRlc3RfeCAqIEJwcCArIG1fRGVzdFRvcCAqIGRlc3RfcGl0Y2g7DQorICAgIEZYX0xQQllURSBkZXN0X2FscGhhX2J1ZiA9IG1fcEJpdG1hcC0+bV9wQWxwaGFNYXNrID8NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wQml0bWFwLT5tX3BBbHBoYU1hc2stPkdldEJ1ZmZlcigpICsgZGVzdF94ICsgbV9EZXN0VG9wICogZGVzdF9hbHBoYV9waXRjaCA6IE5VTEw7DQorICAgIGlmIChtX2JGbGlwWSkgew0KKyAgICAgICAgZGVzdF9idWYgKz0gZGVzdF9waXRjaCAqIChtX0Rlc3RIZWlnaHQgLSAxKTsNCisgICAgICAgIGRlc3RfYWxwaGFfYnVmICs9IGRlc3RfYWxwaGFfcGl0Y2ggKiAobV9EZXN0SGVpZ2h0IC0gMSk7DQorICAgIH0NCisgICAgaW50IHlfc3RlcCA9IGRlc3RfcGl0Y2g7DQorICAgIGludCB5X2FscGhhX3N0ZXAgPSBkZXN0X2FscGhhX3BpdGNoOw0KKyAgICBpZiAobV9iRmxpcFkpIHsNCisgICAgICAgIHlfc3RlcCA9IC15X3N0ZXA7DQorICAgICAgICB5X2FscGhhX3N0ZXAgPSAteV9hbHBoYV9zdGVwOw0KKyAgICB9DQorICAgIEZYX0xQQllURSBzcmNfc2NhbiA9IG1fcFNjYW5saW5lVjsNCisgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9EZXN0SGVpZ2h0OyBpICsrKSB7DQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IEJwcDsgaiArKykgew0KKyAgICAgICAgICAgICpzcmNfc2NhbisrID0gZGVzdF9zY2FuW2pdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdF9zY2FuICs9IHlfc3RlcDsNCisgICAgfQ0KKyAgICBGWF9MUEJZVEUgc3JjX2FscGhhX3NjYW4gPSBtX3BTY2FubGluZUFscGhhVjsNCisgICAgRlhfTFBCWVRFIGRlc3RfYWxwaGFfc2NhbiA9IGRlc3RfYWxwaGFfYnVmOw0KKyAgICBpZiAoZGVzdF9hbHBoYV9zY2FuKSB7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbV9EZXN0SGVpZ2h0OyBpICsrKSB7DQorICAgICAgICAgICAgKnNyY19hbHBoYV9zY2FuKysgPSAqZGVzdF9hbHBoYV9zY2FuOw0KKyAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArPSB5X2FscGhhX3N0ZXA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRlhfTFBCWVRFIGNsaXBfc2NhbiA9IE5VTEw7DQorICAgIGlmIChtX3BDbGlwTWFzaykgew0KKyAgICAgICAgY2xpcF9zY2FuID0gbV9wQ2xpcFNjYW5WOw0KKyAgICAgICAgaW50IGNsaXBfcGl0Y2ggPSBtX3BDbGlwTWFzay0+R2V0UGl0Y2goKTsNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX2NsaXAgPSBtX3BDbGlwTWFzay0+R2V0QnVmZmVyKCkgKyAobV9EZXN0VG9wIC0gbV9wQ2xpcFJnbi0+R2V0Qm94KCkudG9wKSAqDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcF9waXRjaCArIChkZXN0X3ggLSBtX3BDbGlwUmduLT5HZXRCb3goKS5sZWZ0KTsNCisgICAgICAgIGlmIChtX2JGbGlwWSkgew0KKyAgICAgICAgICAgIHNyY19jbGlwICs9IGNsaXBfcGl0Y2ggKiAobV9EZXN0SGVpZ2h0IC0gMSk7DQorICAgICAgICAgICAgY2xpcF9waXRjaCA9IC1jbGlwX3BpdGNoOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fRGVzdEhlaWdodDsgaSArKykgew0KKyAgICAgICAgICAgIGNsaXBfc2NhbltpXSA9ICpzcmNfY2xpcDsNCisgICAgICAgICAgICBzcmNfY2xpcCArPSBjbGlwX3BpdGNoOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIERvQ29tcG9zZShtX3BTY2FubGluZVYsIHNjYW5saW5lLCBtX0Rlc3RIZWlnaHQsIGNsaXBfc2Nhbiwgc2Nhbl9leHRyYV9hbHBoYSwgbV9wU2NhbmxpbmVBbHBoYVYpOw0KKyAgICBzcmNfc2NhbiA9IG1fcFNjYW5saW5lVjsNCisgICAgZGVzdF9zY2FuID0gZGVzdF9idWY7DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX0Rlc3RIZWlnaHQ7IGkgKyspIHsNCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgQnBwOyBqICsrKSB7DQorICAgICAgICAgICAgZGVzdF9zY2FuW2pdID0gKnNyY19zY2FuKys7DQorICAgICAgICB9DQorICAgICAgICBkZXN0X3NjYW4gKz0geV9zdGVwOw0KKyAgICB9DQorICAgIHNyY19hbHBoYV9zY2FuID0gbV9wU2NhbmxpbmVBbHBoYVY7DQorICAgIGRlc3RfYWxwaGFfc2NhbiA9IGRlc3RfYWxwaGFfYnVmOw0KKyAgICBpZiAoZGVzdF9hbHBoYV9zY2FuKSB7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbV9EZXN0SGVpZ2h0OyBpICsrKSB7DQorICAgICAgICAgICAgKmRlc3RfYWxwaGFfc2NhbiA9ICpzcmNfYWxwaGFfc2NhbisrOw0KKyAgICAgICAgICAgIGRlc3RfYWxwaGFfc2NhbiArPSB5X2FscGhhX3N0ZXA7DQorICAgICAgICB9DQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9kaWIvZnhfZGliX2NvbnZlcnQuY3BwIGIvY29yZS9zcmMvZnhnZS9kaWIvZnhfZGliX2NvbnZlcnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNGE3YmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2RpYi9meF9kaWJfY29udmVydC5jcHAKQEAgLTAsMCArMSwxMDkwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2RpYi5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorY29uc3QgRlhfRFdPUkQgZ19kd1dpblBhbGV0dGVbMjU2XSA9IHsNCisgICAgMHhmZjAwMDAwMCwgMHhmZjgwMDAwMCwgMHhmZjAwODAwMCwgMHhmZjgwODAwMCwgMHhmZjAwMDA4MCwgMHhmZjgwMDA4MCwNCisgICAgMHhmZjAwODA4MCwgMHhmZjgwODA4MCwgMHhmZkMwRENDMCwgMHhmZkE2Q0FGMCwgMHhmZjJBM0ZBQSwgMHhmZjJBM0ZGRiwNCisgICAgMHhmZjJBNUYwMCwgMHhmZjJBNUY1NSwgMHhmZjJBNUZBQSwgMHhmZjJBNUZGRiwgMHhmZjJBN0YwMCwgMHhmZjJBN0Y1NSwNCisgICAgMHhmZjJBN0ZBQSwgMHhmZjJBN0ZGRiwgMHhmZjJBOUYwMCwgMHhmZjJBOUY1NSwgMHhmZjJBOUZBQSwgMHhmZjJBOUZGRiwNCisgICAgMHhmZjJBQkYwMCwgMHhmZjJBQkY1NSwgMHhmZjJBQkZBQSwgMHhmZjJBQkZGRiwgMHhmZjJBREYwMCwgMHhmZjJBREY1NSwNCisgICAgMHhmZjJBREZBQSwgMHhmZjJBREZGRiwgMHhmZjJBRkYwMCwgMHhmZjJBRkY1NSwgMHhmZjJBRkZBQSwgMHhmZjJBRkZGRiwNCisgICAgMHhmZjU1MDAwMCwgMHhmZjU1MDA1NSwgMHhmZjU1MDBBQSwgMHhmZjU1MDBGRiwgMHhmZjU1MUYwMCwgMHhmZjU1MUY1NSwNCisgICAgMHhmZjU1MUZBQSwgMHhmZjU1MUZGRiwgMHhmZjU1M0YwMCwgMHhmZjU1M0Y1NSwgMHhmZjU1M0ZBQSwgMHhmZjU1M0ZGRiwNCisgICAgMHhmZjU1NUYwMCwgMHhmZjU1NUY1NSwgMHhmZjU1NUZBQSwgMHhmZjU1NUZGRiwgMHhmZjU1N0YwMCwgMHhmZjU1N0Y1NSwNCisgICAgMHhmZjU1N0ZBQSwgMHhmZjU1N0ZGRiwgMHhmZjU1OUYwMCwgMHhmZjU1OUY1NSwgMHhmZjU1OUZBQSwgMHhmZjU1OUZGRiwNCisgICAgMHhmZjU1QkYwMCwgMHhmZjU1QkY1NSwgMHhmZjU1QkZBQSwgMHhmZjU1QkZGRiwgMHhmZjU1REYwMCwgMHhmZjU1REY1NSwNCisgICAgMHhmZjU1REZBQSwgMHhmZjU1REZGRiwgMHhmZjU1RkYwMCwgMHhmZjU1RkY1NSwgMHhmZjU1RkZBQSwgMHhmZjU1RkZGRiwNCisgICAgMHhmZjdGMDAwMCwgMHhmZjdGMDA1NSwgMHhmZjdGMDBBQSwgMHhmZjdGMDBGRiwgMHhmZjdGMUYwMCwgMHhmZjdGMUY1NSwNCisgICAgMHhmZjdGMUZBQSwgMHhmZjdGMUZGRiwgMHhmZjdGM0YwMCwgMHhmZjdGM0Y1NSwgMHhmZjdGM0ZBQSwgMHhmZjdGM0ZGRiwNCisgICAgMHhmZjdGNUYwMCwgMHhmZjdGNUY1NSwgMHhmZjdGNUZBQSwgMHhmZjdGNUZGRiwgMHhmZjdGN0YwMCwgMHhmZjdGN0Y1NSwNCisgICAgMHhmZjdGN0ZBQSwgMHhmZjdGN0ZGRiwgMHhmZjdGOUYwMCwgMHhmZjdGOUY1NSwgMHhmZjdGOUZBQSwgMHhmZjdGOUZGRiwNCisgICAgMHhmZjdGQkYwMCwgMHhmZjdGQkY1NSwgMHhmZjdGQkZBQSwgMHhmZjdGQkZGRiwgMHhmZjdGREYwMCwgMHhmZjdGREY1NSwNCisgICAgMHhmZjdGREZBQSwgMHhmZjdGREZGRiwgMHhmZjAwRkY3RiwgMHhmZjdGRkY1NSwgMHhmZjdGRkZBQSwgMHhmZjdGRkZGRiwNCisgICAgMHhmZkFBMDAwMCwgMHhmZkFBMDA1NSwgMHhmZkFBMDBBQSwgMHhmZkFBMDBGRiwgMHhmZkFBMUYwMCwgMHhmZkFBMUY1NSwNCisgICAgMHhmZkFBMUZBQSwgMHhmZkFBMUZGRiwgMHhmZkFBM0YwMCwgMHhmZkFBM0Y1NSwgMHhmZkFBM0ZBQSwgMHhmZkFBM0ZGRiwNCisgICAgMHhmZkFBNUYwMCwgMHhmZkFBNUY1NSwgMHhmZkFBNUZBQSwgMHhmZkFBNUZGRiwgMHhmZkFBN0YwMCwgMHhmZkFBN0Y1NSwNCisgICAgMHhmZkFBN0ZBQSwgMHhmZkFBN0ZGRiwgMHhmZkFBOUYwMCwgMHhmZkFBOUY1NSwgMHhmZkFBOUZBQSwgMHhmZkFBOUZGRiwNCisgICAgMHhmZkFBQkYwMCwgMHhmZkFBQkY1NSwgMHhmZkFBQkZBQSwgMHhmZkFBQkZGRiwgMHhmZkFBREYwMCwgMHhmZkFBREY1NSwNCisgICAgMHhmZkFBREZBQSwgMHhmZkFBREZGRiwgMHhmZkFBRkYwMCwgMHhmZkFBRkY1NSwgMHhmZkFBRkZBQSwgMHhmZkFBRkZGRiwNCisgICAgMHhmZkQ0MDAwMCwgMHhmZkQ0MDA1NSwgMHhmZkQ0MDBBQSwgMHhmZkQ0MDBGRiwgMHhmZkQ0MUYwMCwgMHhmZkQ0MUY1NSwNCisgICAgMHhmZkQ0MUZBQSwgMHhmZkQ0MUZGRiwgMHhmZkQ0M0YwMCwgMHhmZkQ0M0Y1NSwgMHhmZkQ0M0ZBQSwgMHhmZkQ0M0ZGRiwNCisgICAgMHhmZkQ0NUYwMCwgMHhmZkQ0NUY1NSwgMHhmZkQ0NUZBQSwgMHhmZkQ0NUZGRiwgMHhmZkQ0N0YwMCwgMHhmZkQ0N0Y1NSwNCisgICAgMHhmZkQ0N0ZBQSwgMHhmZkQ0RjdGRiwgMHhmZkQ0OUYwMCwgMHhmZkQ0OUY1NSwgMHhmZkQ0OUZBQSwgMHhmZkQ0OUZGRiwNCisgICAgMHhmZkQ0QkYwMCwgMHhmZkQ0QkY1NSwgMHhmZkQ0QkZBQSwgMHhmZkQ0QkZGRiwgMHhmZkQ0REYwMCwgMHhmZkQ0REY1NSwNCisgICAgMHhmZkQ0REZBQSwgMHhmZkQ0REZGRiwgMHhmZkQ0RkYwMCwgMHhmZkQ0RkY1NSwgMHhmZkQ0RkZBQSwgMHhmZkQ0RkZGRiwNCisgICAgMHhmZkZGMDA1NSwgMHhmZkZGMDBBQSwgMHhmZkZGMUYwMCwgMHhmZkZGMUY1NSwgMHhmZkZGMUZBQSwgMHhmZkZGMUZGRiwNCisgICAgMHhmZkZGM0YwMCwgMHhmZkZGM0Y1NSwgMHhmZkZGM0ZBQSwgMHhmZkZGM0ZGRiwgMHhmZkZGNUYwMCwgMHhmZkZGNUY1NSwNCisgICAgMHhmZkZGNUZBQSwgMHhmZkZGNUZGRiwgMHhmZkZGN0YwMCwgMHhmZkZGN0Y1NSwgMHhmZkZGN0ZBQSwgMHhmZkZGN0ZGRiwNCisgICAgMHhmZkZGOUYwMCwgMHhmZkZGOUY1NSwgMHhmZkZGOUZBQSwgMHhmZkZGOUZGRiwgMHhmZkZGQkYwMCwgMHhmZkZGQkY1NSwNCisgICAgMHhmZkZGQkZBQSwgMHhmZkZGQkZGRiwgMHhmZkZGREYwMCwgMHhmZkZGREY1NSwgMHhmZkZGREZBQSwgMHhmZkZGREZGRiwNCisgICAgMHhmZkZGRkY1NSwgMHhmZkZGRkZBQSwgMHhmZkNDQ0NGRiwgMHhmZkZGQ0NGRiwgMHhmZjMzRkZGRiwgMHhmZjY2RkZGRiwNCisgICAgMHhmZjk5RkZGRiwgMHhmZkNDRkZGRiwgMHhmZjAwN0YwMCwgMHhmZjAwN0Y1NSwgMHhmZjAwN0ZBQSwgMHhmZjAwN0ZGRiwNCisgICAgMHhmZjAwOUYwMCwgMHhmZjAwOUY1NSwgMHhmZjAwOUZBQSwgMHhmZjAwOUZGRiwgMHhmZjAwQkYwMCwgMHhmZjAwQkY1NSwNCisgICAgMHhmZjAwQkZBQSwgMHhmZjAwQkZGRiwgMHhmZjAwREYwMCwgMHhmZjAwREY1NSwgMHhmZjAwREZBQSwgMHhmZjAwREZGRiwNCisgICAgMHhmZjAwRkY1NSwgMHhmZjAwRkZBQSwgMHhmZjJBMDAwMCwgMHhmZjJBMDA1NSwgMHhmZjJBMDBBQSwgMHhmZjJBMDBGRiwNCisgICAgMHhmZjJBMUYwMCwgMHhmZjJBMUY1NSwgMHhmZjJBMUZBQSwgMHhmZjJBMUZGRiwgMHhmZjJBM0YwMCwgMHhmZjJBM0Y1NSwNCisgICAgMHhmZkZGRkJGMCwgMHhmZkEwQTBBNCwgMHhmZjgwODA4MCwgMHhmZkZGMDAwMCwgMHhmZjAwRkYwMCwgMHhmZkZGMDAwMCwNCisgICAgMHhmZjAwMDBGRiwgMHhmZkZGMDBGRiwgMHhmZjAwRkZGRiwgMHhmZkZGRkZGRg0KK307DQorY29uc3QgRlhfRFdPUkQgZ19kd01hY1BhbGV0dGVbMjU2XSA9IHsNCisgICAgMHhmZkZGRkZGRiwgMHhmZkZGRkZDQywgMHhmZkZGRkY5OSwgMHhmZkZGRkY2NiwgMHhmZkZGRkYzMywgMHhmZkZGRkYwMCwNCisgICAgMHhmZkZGQ0NGRiwgMHhmZkZGQ0NDQywgMHhmZkZGQ0M5OSwgMHhmZkZGQ0M2NiwgMHhmZkZGQ0MzMywgMHhmZkZGQ0MwMCwNCisgICAgMHhmZkZGOTlGRiwgMHhmZkZGOTlDQywgMHhmZkZGOTk5OSwgMHhmZkZGOTk2NiwgMHhmZkZGOTkzMywgMHhmZkZGOTkwMCwNCisgICAgMHhmZkZGNjZGRiwgMHhmZkZGNjZDQywgMHhmZkZGNjY5OSwgMHhmZkZGNjY2NiwgMHhmZkZGNjYzMywgMHhmZkZGNjYwMCwNCisgICAgMHhmZkZGMzNGRiwgMHhmZkZGMzNDQywgMHhmZkZGMzM5OSwgMHhmZkZGMzM2NiwgMHhmZkZGMzMzMywgMHhmZkZGMzMwMCwNCisgICAgMHhmZkZGMDBGRiwgMHhmZkZGMDBDQywgMHhmZkZGMDA5OSwgMHhmZkZGMDA2NiwgMHhmZkZGMDAzMywgMHhmZkZGMDAwMCwNCisgICAgMHhmZkNDRkZGRiwgMHhmZkNDRkZDQywgMHhmZkNDRkY5OSwgMHhmZkNDRkY2NiwgMHhmZkNDRkYzMywgMHhmZkNDRkYwMCwNCisgICAgMHhmZkNDQ0NGRiwgMHhmZkNDQ0NDQywgMHhmZkNDQ0M5OSwgMHhmZkNDQ0M2NiwgMHhmZkNDQ0MzMywgMHhmZkNDQ0MwMCwNCisgICAgMHhmZkNDOTlGRiwgMHhmZkNDOTlDQywgMHhmZkNDOTk5OSwgMHhmZkNDOTk2NiwgMHhmZkNDOTkzMywgMHhmZkNDOTkwMCwNCisgICAgMHhmZkNDNjZGRiwgMHhmZkNDNjZDQywgMHhmZkNDNjY5OSwgMHhmZkNDNjY2NiwgMHhmZkNDNjYzMywgMHhmZkNDNjYwMCwNCisgICAgMHhmZkNDMzNGRiwgMHhmZkNDMzNDQywgMHhmZkNDMzM5OSwgMHhmZkNDMzM2NiwgMHhmZkNDMzMzMywgMHhmZkNDMzMwMCwNCisgICAgMHhmZkNDMDBGRiwgMHhmZkNDMDBDQywgMHhmZkNDMDA5OSwgMHhmZkNDMDA2NiwgMHhmZkNDMDAzMywgMHhmZkNDMDAwMCwNCisgICAgMHhmZjk5RkZGRiwgMHhmZjk5RkZDQywgMHhmZjk5RkY5OSwgMHhmZjk5RkY2NiwgMHhmZjk5RkYzMywgMHhmZjk5RkYwMCwNCisgICAgMHhmZjk5Q0NGRiwgMHhmZjk5Q0NDQywgMHhmZjk5Q0M5OSwgMHhmZjk5Q0M2NiwgMHhmZjk5Q0MzMywgMHhmZjk5Q0MwMCwNCisgICAgMHhmZjk5OTlGRiwgMHhmZjk5OTlDQywgMHhmZjk5OTk5OSwgMHhmZjk5OTk2NiwgMHhmZjk5OTkzMywgMHhmZjk5OTkwMCwNCisgICAgMHhmZjk5NjZGRiwgMHhmZjk5NjZDQywgMHhmZjk5NjY5OSwgMHhmZjk5NjY2NiwgMHhmZjk5NjYzMywgMHhmZjk5NjYwMCwNCisgICAgMHhmZjk5MzNGRiwgMHhmZjk5MzNDQywgMHhmZjk5MzM5OSwgMHhmZjk5MzM2NiwgMHhmZjk5MzMzMywgMHhmZjk5MzMwMCwNCisgICAgMHhmZjk5MDBGRiwgMHhmZjk5MDBDQywgMHhmZjk5MDA5OSwgMHhmZjk5MDA2NiwgMHhmZjk5MDAzMywgMHhmZjk5MDAwMCwNCisgICAgMHhmZjY2RkZGRiwgMHhmZjY2RkZDQywgMHhmZjY2RkY5OSwgMHhmZjY2RkY2NiwgMHhmZjY2RkYzMywgMHhmZjY2RkYwMCwNCisgICAgMHhmZjY2Q0NGRiwgMHhmZjY2Q0NDQywgMHhmZjY2Q0M5OSwgMHhmZjY2Q0M2NiwgMHhmZjY2Q0MzMywgMHhmZjY2Q0MwMCwNCisgICAgMHhmZjY2OTlGRiwgMHhmZjY2OTlDQywgMHhmZjY2OTk5OSwgMHhmZjY2OTk2NiwgMHhmZjY2OTkzMywgMHhmZjY2OTkwMCwNCisgICAgMHhmZjY2NjZGRiwgMHhmZjY2NjZDQywgMHhmZjY2NjY5OSwgMHhmZjY2NjY2NiwgMHhmZjY2NjYzMywgMHhmZjY2NjYwMCwNCisgICAgMHhmZjY2MzNGRiwgMHhmZjY2MzNDQywgMHhmZjY2MzM5OSwgMHhmZjY2MzM2NiwgMHhmZjY2MzMzMywgMHhmZjY2MzMwMCwNCisgICAgMHhmZjY2MDBGRiwgMHhmZjY2MDBDQywgMHhmZjY2MDA5OSwgMHhmZjY2MDA2NiwgMHhmZjY2MDAzMywgMHhmZjY2MDAwMCwNCisgICAgMHhmZjMzRkZGRiwgMHhmZjMzRkZDQywgMHhmZjMzRkY5OSwgMHhmZjMzRkY2NiwgMHhmZjMzRkYzMywgMHhmZjMzRkYwMCwNCisgICAgMHhmZjMzQ0NGRiwgMHhmZjMzQ0NDQywgMHhmZjMzQ0M5OSwgMHhmZjMzQ0M2NiwgMHhmZjMzQ0MzMywgMHhmZjMzQ0MwMCwNCisgICAgMHhmZjMzOTlGRiwgMHhmZjMzOTlDQywgMHhmZjMzOTk5OSwgMHhmZjMzOTk2NiwgMHhmZjMzOTkzMywgMHhmZjMzOTkwMCwNCisgICAgMHhmZjMzNjZGRiwgMHhmZjMzNjZDQywgMHhmZjMzNjY5OSwgMHhmZjMzNjY2NiwgMHhmZjMzNjYzMywgMHhmZjMzNjYwMCwNCisgICAgMHhmZjMzMzNGRiwgMHhmZjMzMzNDQywgMHhmZjMzMzM5OSwgMHhmZjMzMzM2NiwgMHhmZjMzMzMzMywgMHhmZjMzMzMwMCwNCisgICAgMHhmZjMzMDBGRiwgMHhmZjMzMDBDQywgMHhmZjMzMDA5OSwgMHhmZjMzMDA2NiwgMHhmZjMzMDAzMywgMHhmZjMzMDAwMCwNCisgICAgMHhmZjAwRkZGRiwgMHhmZjAwRkZDQywgMHhmZjAwRkY5OSwgMHhmZjAwRkY2NiwgMHhmZjAwRkYzMywgMHhmZjAwRkYwMCwNCisgICAgMHhmZjAwQ0NGRiwgMHhmZjAwQ0NDQywgMHhmZjAwQ0M5OSwgMHhmZjAwQ0M2NiwgMHhmZjAwQ0MzMywgMHhmZjAwQ0MwMCwNCisgICAgMHhmZjAwOTlGRiwgMHhmZjAwOTlDQywgMHhmZjAwOTk5OSwgMHhmZjAwOTk2NiwgMHhmZjAwOTkzMywgMHhmZjAwOTkwMCwNCisgICAgMHhmZjAwNjZGRiwgMHhmZjAwNjZDQywgMHhmZjAwNjY5OSwgMHhmZjAwNjY2NiwgMHhmZjAwNjYzMywgMHhmZjAwNjYwMCwNCisgICAgMHhmZjAwMzNGRiwgMHhmZjAwMzNDQywgMHhmZjAwMzM5OSwgMHhmZjAwMzM2NiwgMHhmZjAwMzMzMywgMHhmZjAwMzMwMCwNCisgICAgMHhmZjAwMDBGRiwgMHhmZjAwMDBDQywgMHhmZjAwMDA5OSwgMHhmZjAwMDA2NiwgMHhmZjAwMDAzMywNCisgICAgMHhmZkVFMDAwMCwgMHhmZkREMDAwMCwgMHhmZkJCMDAwMCwgMHhmZkFBMDAwMCwgMHhmZjg4MDAwMCwgMHhmZjc3MDAwMCwNCisgICAgMHhmZjU1MDAwMCwgMHhmZjQ0MDAwMCwgMHhmZjIyMDAwMCwgMHhmZjExMDAwMCwgMHhmZjAwRUUwMCwgMHhmZjAwREQwMCwNCisgICAgMHhmZjAwQkIwMCwgMHhmZjAwQUEwMCwgMHhmZjAwODgwMCwgMHhmZjAwNzcwMCwgMHhmZjAwNTUwMCwgMHhmZjAwNDQwMCwNCisgICAgMHhmZjAwMjIwMCwgMHhmZjAwMTEwMCwgMHhmZjAwMDBFRSwgMHhmZjAwMDBERCwgMHhmZjAwMDBCQiwgMHhmZjAwMDBBQSwNCisgICAgMHhmZjAwMDA4OCwgMHhmZjAwMDA3NywgMHhmZjAwMDA1NSwgMHhmZjAwMDA0NCwgMHhmZjAwMDAyMiwgMHhmZjAwMDAxMSwNCisgICAgMHhmZkVFRUVFRSwgMHhmZkRERERERCwgMHhmZkJCQkJCQiwgMHhmZkFBQUFBQSwgMHhmZjg4ODg4OCwgMHhmZjc3Nzc3NywNCisgICAgMHhmZjU1NTU1NSwgMHhmZjQ0NDQ0NCwgMHhmZjIyMjIyMiwgMHhmZjExMTExMSwgMHhmZjAwMDAwMA0KK307DQorY2xhc3MgQ0ZYX1BhbGV0dGUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENGWF9QYWxldHRlKCk7DQorICAgIH5DRlhfUGFsZXR0ZSgpOw0KK3B1YmxpYzoNCisgICAgRlhfQk9PTCAgICAgIEJ1aWxkUGFsZXR0ZShjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBpbnQgZHdQYWxldHRlVHlwZSk7DQorICAgIEZYX0RXT1JEKiAgICBHZXRQYWxldHRlKCkgY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fcFBhbGV0dGU7DQorICAgIH0NCisNCisgICAgRlhfRFdPUkQqICAgIEdldENvbG9yTHV0KCljb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9jTHV0Ow0KKyAgICB9DQorICAgIEZYX0RXT1JEKiAgICBHZXRBbW91bnRMdXQoKWNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBtX2FMdXQ7DQorICAgIH0NCisgICAgRlhfSU5UMzIgICAgIEdldGx1dCgpY29uc3QNCisgICAgew0KKyAgICAgICAgcmV0dXJuIG1fbHV0Ow0KKyAgICB9DQorcHJvdGVjdGVkOg0KKyAgICBGWF9EV09SRCogICAgbV9wUGFsZXR0ZTsNCisgICAgRlhfRFdPUkQqICAgIG1fY0x1dDsNCisgICAgRlhfRFdPUkQqICAgIG1fYUx1dDsNCisgICAgaW50ICAgICAgICAgIG1fbHV0Ow0KK307DQoraW50IF9QYXJ0aXRpb24oRlhfRFdPUkQqIGFsdXQsIEZYX0RXT1JEKiBjbHV0LCBpbnQgbCwgaW50IHIpDQorew0KKyAgICBGWF9EV09SRCBwX2EgPSBhbHV0W2xdOw0KKyAgICBGWF9EV09SRCBwX2MgPSBjbHV0W2xdOw0KKyAgICB3aGlsZShsIDwgcikgew0KKyAgICAgICAgd2hpbGUobCA8IHIgJiYgYWx1dFtyXSA+PSBwX2EpIHsNCisgICAgICAgICAgICByLS07DQorICAgICAgICB9DQorICAgICAgICBpZiAobCA8IHIpIHsNCisgICAgICAgICAgICBhbHV0W2xdID0gYWx1dFtyXTsNCisgICAgICAgICAgICBjbHV0W2wrK10gPSBjbHV0W3JdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgd2hpbGUobCA8IHIgJiYgYWx1dFtsXSA8PSBwX2EpIHsNCisgICAgICAgICAgICBsKys7DQorICAgICAgICB9DQorICAgICAgICBpZiAobCA8IHIpIHsNCisgICAgICAgICAgICBhbHV0W3JdID0gYWx1dFtsXTsNCisgICAgICAgICAgICBjbHV0W3ItLV0gPSBjbHV0W2xdOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGFsdXRbbF0gPSBwX2E7DQorICAgIGNsdXRbbF0gPSBwX2M7DQorICAgIHJldHVybiBsOw0KK30NCit2b2lkIF9Rc29ydChGWF9EV09SRCogYWx1dCwgRlhfRFdPUkQqIGNsdXQsIGludCBsLCBpbnQgcikNCit7DQorICAgIGlmKGwgPCByKSB7DQorICAgICAgICBpbnQgcEkgPSBfUGFydGl0aW9uKGFsdXQsIGNsdXQsIGwsIHIpOw0KKyAgICAgICAgX1Fzb3J0KGFsdXQsIGNsdXQsIGwsIHBJIC0gMSk7DQorICAgICAgICBfUXNvcnQoYWx1dCwgY2x1dCwgcEkgKyAxLCByKTsNCisgICAgfQ0KK30NCit2b2lkIF9Db2xvckRlY29kZShGWF9EV09SRCBwYWxfdiwgRlhfQllURSYgciwgRlhfQllURSYgZywgRlhfQllURSYgYikNCit7DQorICAgIHIgPSAoRlhfQllURSkoKHBhbF92ICYgMHhmMDApID4+IDQpOw0KKyAgICBnID0gKEZYX0JZVEUpKHBhbF92ICYgMHgwZjApOw0KKyAgICBiID0gKEZYX0JZVEUpKChwYWxfdiAmIDB4MDBmKSA8PCA0KTsNCit9DQordm9pZCBfT2J0YWluX1BhbChGWF9EV09SRCogYUx1dCwgRlhfRFdPUkQqY0x1dCwgRlhfRFdPUkQqIGRlc3RfcGFsLCBpbnQgcGFsX3R5cGUsIEZYX0RXT1JEKiB3aW5fbWFjX3BhbCwgRlhfRFdPUkQgbHV0KQ0KK3sNCisgICAgaW50IHJvdywgY29sOw0KKyAgICBGWF9EV09SRCBsdXRfMSA9IGx1dCAtIDE7DQorICAgIGlmIChwYWxfdHlwZSA9PSBGWERJQl9QQUxFVFRFX0xPQykgew0KKyAgICAgICAgZm9yIChyb3cgPSAwOyByb3cgPCAyNTY7IHJvdysrKSB7DQorICAgICAgICAgICAgaW50IGx1dF9vZmZzZXQgPSBsdXRfMSAtIHJvdzsNCisgICAgICAgICAgICBpZiAobHV0X29mZnNldCA8IDApIHsNCisgICAgICAgICAgICAgICAgbHV0X29mZnNldCArPSAyNTY7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0RXT1JEIGNvbG9yID0gY0x1dFtsdXRfb2Zmc2V0XTsNCisgICAgICAgICAgICBGWF9CWVRFIHIsIGcsIGI7DQorICAgICAgICAgICAgX0NvbG9yRGVjb2RlKGNvbG9yLCByLCBnLCBiKTsNCisgICAgICAgICAgICBkZXN0X3BhbFtyb3ddID0gKChGWF9EV09SRClyIDw8IDE2KSB8ICgoRlhfRFdPUkQpZyA8PCA4KSB8IGIgfCAweGZmMDAwMDAwOw0KKyAgICAgICAgICAgIGFMdXRbbHV0X29mZnNldF0gPSByb3c7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IDI1Njsgcm93KyspIHsNCisgICAgICAgICAgICBpbnQgbHV0X29mZnNldCA9IGx1dF8xIC0gcm93Ow0KKyAgICAgICAgICAgIGlmIChsdXRfb2Zmc2V0IDwgMCkgew0KKyAgICAgICAgICAgICAgICBsdXRfb2Zmc2V0ICs9IDI1NjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfQllURSByLCBnLCBiOw0KKyAgICAgICAgICAgIF9Db2xvckRlY29kZShjTHV0W2x1dF9vZmZzZXRdLCByLCBnLCBiKTsNCisgICAgICAgICAgICBpbnQgZXJyb3IsIG1pbl9lcnJvciA9IDEwMDAwMDA7DQorICAgICAgICAgICAgaW50IGNfaW5kZXggPSAwOw0KKyAgICAgICAgICAgIGZvciAoY29sID0gMDsgY29sIDwgMjU2OyBjb2wrKykgew0KKyAgICAgICAgICAgICAgICBGWF9EV09SRCBwX2NvbG9yID0gd2luX21hY19wYWxbY29sXTsNCisgICAgICAgICAgICAgICAgaW50IGRfciA9IHIgLSAoRlhfQllURSkocF9jb2xvciA+PiAxNik7DQorICAgICAgICAgICAgICAgIGludCBkX2cgPSBnIC0gKEZYX0JZVEUpKHBfY29sb3IgPj4gOCk7DQorICAgICAgICAgICAgICAgIGludCBkX2IgPSBiIC0gKEZYX0JZVEUpcF9jb2xvcjsNCisgICAgICAgICAgICAgICAgZXJyb3IgPSBkX3IgKiBkX3IgKyBkX2cgKiBkX2cgKyBkX2IgKiBkX2I7DQorICAgICAgICAgICAgICAgIGlmIChlcnJvciA8IG1pbl9lcnJvcikgew0KKyAgICAgICAgICAgICAgICAgICAgbWluX2Vycm9yID0gZXJyb3I7DQorICAgICAgICAgICAgICAgICAgICBjX2luZGV4ID0gY29sOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3RfcGFsW3Jvd10gPSAgd2luX21hY19wYWxbY19pbmRleF07DQorICAgICAgICAgICAgYUx1dFtsdXRfb2Zmc2V0XSA9IHJvdzsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitDRlhfUGFsZXR0ZTo6Q0ZYX1BhbGV0dGUoKQ0KK3sNCisgICAgbV9wUGFsZXR0ZSA9IE5VTEw7DQorICAgIG1fY0x1dCA9IE5VTEw7DQorICAgIG1fYUx1dCA9IE5VTEw7DQorICAgIG1fbHV0ID0gMDsNCit9DQorQ0ZYX1BhbGV0dGU6On5DRlhfUGFsZXR0ZSgpDQorew0KKyAgICBpZiAobV9wUGFsZXR0ZSkgew0KKyAgICAgICAgRlhfRnJlZShtX3BQYWxldHRlKTsNCisgICAgfQ0KKyAgICBpZiAobV9jTHV0KSB7DQorICAgICAgICBGWF9GcmVlKG1fY0x1dCk7DQorICAgIH0NCisgICAgaWYgKG1fYUx1dCkgew0KKyAgICAgICAgRlhfRnJlZShtX2FMdXQpOw0KKyAgICB9DQorICAgIG1fbHV0ID0gMDsNCit9DQorRlhfQk9PTCBDRlhfUGFsZXR0ZTo6QnVpbGRQYWxldHRlKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIGludCBwYWxfdHlwZSkNCit7DQorICAgIGlmIChwQml0bWFwID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9wUGFsZXR0ZSAhPSBOVUxMKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFBhbGV0dGUpOw0KKyAgICB9DQorICAgIG1fcFBhbGV0dGUgPSBGWF9BbGxvYyhGWF9EV09SRCwgMjU2KTsNCisgICAgaWYgKCFtX3BQYWxldHRlKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhTWVNfbWVtc2V0MzIobV9wUGFsZXR0ZSwgMCwgc2l6ZW9mKEZYX0RXT1JEKSAqIDI1Nik7DQorICAgIGludCBicHAgICAgPSBwQml0bWFwLT5HZXRCUFAoKSAvIDg7DQorICAgIGludCB3aWR0aCAgPSBwQml0bWFwLT5HZXRXaWR0aCgpOw0KKyAgICBpbnQgaGVpZ2h0ID0gcEJpdG1hcC0+R2V0SGVpZ2h0KCk7DQorICAgIGlmIChtX2NMdXQpIHsNCisgICAgICAgIEZYX0ZyZWUobV9jTHV0KTsNCisgICAgICAgIG1fY0x1dCA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKG1fYUx1dCkgew0KKyAgICAgICAgRlhfRnJlZShtX2FMdXQpOw0KKyAgICAgICAgbV9hTHV0ID0gTlVMTDsNCisgICAgfQ0KKyAgICBtX2NMdXQgPSBGWF9BbGxvYyhGWF9EV09SRCwgNDA5Nik7DQorICAgIGlmICghbV9jTHV0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9hTHV0ID0gRlhfQWxsb2MoRlhfRFdPUkQsIDQwOTYpOw0KKyAgICBpZiAoIW1fYUx1dCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYU1lTX21lbXNldDMyKG1fYUx1dCwgMCwgc2l6ZW9mKEZYX0RXT1JEKSAqIDQwOTYpOw0KKyAgICBGWFNZU19tZW1zZXQzMihtX2NMdXQsIDAsIHNpemVvZihGWF9EV09SRCkgKiA0MDk2KTsNCisgICAgaW50IHJvdywgY29sOw0KKyAgICBtX2x1dCA9IDA7DQorICAgIGZvciAocm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3crKykgew0KKyAgICAgICAgRlhfQllURSogc2Nhbl9saW5lID0gKEZYX0JZVEUqKXBCaXRtYXAtPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wrKykgew0KKyAgICAgICAgICAgIEZYX0JZVEUqIHNyY19wb3J0ID0gc2Nhbl9saW5lICsgY29sICogYnBwOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIGIgPSBzcmNfcG9ydFswXSAmIDB4ZjA7DQorICAgICAgICAgICAgRlhfRFdPUkQgZyA9IHNyY19wb3J0WzFdICYgMHhmMDsNCisgICAgICAgICAgICBGWF9EV09SRCByID0gc3JjX3BvcnRbMl0gJiAweGYwOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIGluZGV4ID0gKHIgPDwgNCkgKyBnICsgKGIgPj4gNCk7DQorICAgICAgICAgICAgbV9hTHV0W2luZGV4XSsrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGZvciAocm93ID0gMDsgcm93IDwgNDA5Njsgcm93KyspIHsNCisgICAgICAgIGlmIChtX2FMdXRbcm93XSAhPSAwKSB7DQorICAgICAgICAgICAgbV9hTHV0W21fbHV0XSA9IG1fYUx1dFtyb3ddOw0KKyAgICAgICAgICAgIG1fY0x1dFttX2x1dF0gPSByb3c7DQorICAgICAgICAgICAgbV9sdXQrKzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBfUXNvcnQobV9hTHV0LCBtX2NMdXQsIDAsIG1fbHV0IC0gMSk7DQorICAgIEZYX0RXT1JEKiB3aW5fbWFjX3BhbCA9IE5VTEw7DQorICAgIGlmIChwYWxfdHlwZSA9PSBGWERJQl9QQUxFVFRFX1dJTikgew0KKyAgICAgICAgd2luX21hY19wYWwgPSAoRlhfRFdPUkQqKWdfZHdXaW5QYWxldHRlOw0KKyAgICB9IGVsc2UgaWYgKHBhbF90eXBlID09IEZYRElCX1BBTEVUVEVfTUFDKSB7DQorICAgICAgICB3aW5fbWFjX3BhbCA9IChGWF9EV09SRCopZ19kd01hY1BhbGV0dGU7DQorICAgIH0NCisgICAgX09idGFpbl9QYWwobV9hTHV0LCBtX2NMdXQsIG1fcFBhbGV0dGUsIHBhbF90eXBlLCB3aW5fbWFjX3BhbCwgbV9sdXQpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBfQ29udmVydEJ1ZmZlcl8xYnBwTWFzazJHcmF5KEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IGRlc3RfcGl0Y2gsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCkNCit7DQorICAgIEZYX0JZVEUgc2V0X2dyYXksIHJlc2V0X2dyYXk7DQorICAgIHNldF9ncmF5ID0gMHhmZjsNCisgICAgcmVzZXRfZ3JheSA9IDB4MDA7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gZGVzdF9idWYgKyByb3cgKiBkZXN0X3BpdGNoOw0KKyAgICAgICAgRlhTWVNfbWVtc2V0OChkZXN0X3NjYW4sIHJlc2V0X2dyYXksIHdpZHRoKTsNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwU3JjQml0bWFwLT5HZXRTY2FubGluZShzcmNfdG9wICsgcm93KTsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IHNyY19sZWZ0OyBjb2wgPCBzcmNfbGVmdCArIHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICBpZiAoc3JjX3NjYW5bY29sIC8gOF0gJiAoMSA8PCAoNyAtIGNvbCAlIDgpKSkgew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gc2V0X2dyYXk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArKzsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBfQ29udmVydEJ1ZmZlcl84YnBwTWFzazJHcmF5KEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IGRlc3RfcGl0Y2gsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCkNCit7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gZGVzdF9idWYgKyByb3cgKiBkZXN0X3BpdGNoOw0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQ7DQorICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgX0NvbnZlcnRCdWZmZXJfMWJwcFBsdDJHcmF5KEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IGRlc3RfcGl0Y2gsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwU3JjQml0bWFwLCBpbnQgc3JjX2xlZnQsIGludCBzcmNfdG9wLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgRlhfRFdPUkQqIHNyY19wbHQgPSBwU3JjQml0bWFwLT5HZXRQYWxldHRlKCk7DQorICAgIEZYX0JZVEUgZ3JheVsyXTsNCisgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgIEZYX0RXT1JEIHBsdFsyXTsNCisgICAgICAgIGlmIChwU3JjQml0bWFwLT5Jc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgcGx0WzBdID0gRlhDTVlLX1RPRElCKHNyY19wbHRbMF0pOw0KKyAgICAgICAgICAgIHBsdFsxXSA9IEZYQ01ZS19UT0RJQihzcmNfcGx0WzFdKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGJncl9wdHIgPSAoRlhfTFBCWVRFKXBsdDsNCisgICAgICAgICAgICBiZ3JfcHRyWzBdID0gRlhBUkdCX0Ioc3JjX3BsdFswXSk7DQorICAgICAgICAgICAgYmdyX3B0clsxXSA9IEZYQVJHQl9HKHNyY19wbHRbMF0pOw0KKyAgICAgICAgICAgIGJncl9wdHJbMl0gPSBGWEFSR0JfUihzcmNfcGx0WzBdKTsNCisgICAgICAgICAgICBiZ3JfcHRyWzNdID0gRlhBUkdCX0Ioc3JjX3BsdFsxXSk7DQorICAgICAgICAgICAgYmdyX3B0cls0XSA9IEZYQVJHQl9HKHNyY19wbHRbMV0pOw0KKyAgICAgICAgICAgIGJncl9wdHJbNV0gPSBGWEFSR0JfUihzcmNfcGx0WzFdKTsNCisgICAgICAgIH0NCisgICAgICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsNCisgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIGdyYXksIChGWF9MUENCWVRFKXBsdCwgMik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBGWF9CWVRFIHJlc2V0X3IsIHJlc2V0X2csIHJlc2V0X2IsDQorICAgICAgICAgICAgICAgIHNldF9yLCBzZXRfZywgc2V0X2I7DQorICAgICAgICBpZiAocFNyY0JpdG1hcC0+SXNDbXlrSW1hZ2UoKSkgew0KKyAgICAgICAgICAgIEFkb2JlQ01ZS190b19zUkdCMShGWFNZU19HZXRDVmFsdWUoc3JjX3BsdFswXSksIEZYU1lTX0dldE1WYWx1ZShzcmNfcGx0WzBdKSwgRlhTWVNfR2V0WVZhbHVlKHNyY19wbHRbMF0pLCBGWFNZU19HZXRLVmFsdWUoc3JjX3BsdFswXSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X3IsIHJlc2V0X2csIHJlc2V0X2IpOw0KKyAgICAgICAgICAgIEFkb2JlQ01ZS190b19zUkdCMShGWFNZU19HZXRDVmFsdWUoc3JjX3BsdFsxXSksIEZYU1lTX0dldE1WYWx1ZShzcmNfcGx0WzFdKSwgRlhTWVNfR2V0WVZhbHVlKHNyY19wbHRbMV0pLCBGWFNZU19HZXRLVmFsdWUoc3JjX3BsdFsxXSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9yLCBzZXRfZywgc2V0X2IpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXNldF9yID0gRlhBUkdCX1Ioc3JjX3BsdFswXSk7DQorICAgICAgICAgICAgcmVzZXRfZyA9IEZYQVJHQl9HKHNyY19wbHRbMF0pOw0KKyAgICAgICAgICAgIHJlc2V0X2IgPSBGWEFSR0JfQihzcmNfcGx0WzBdKTsNCisgICAgICAgICAgICBzZXRfciA9IEZYQVJHQl9SKHNyY19wbHRbMV0pOw0KKyAgICAgICAgICAgIHNldF9nID0gRlhBUkdCX0coc3JjX3BsdFsxXSk7DQorICAgICAgICAgICAgc2V0X2IgPSBGWEFSR0JfQihzcmNfcGx0WzFdKTsNCisgICAgICAgIH0NCisgICAgICAgIGdyYXlbMF0gPSBGWFJHQjJHUkFZKHJlc2V0X3IsIHJlc2V0X2csIHJlc2V0X2IpOw0KKyAgICAgICAgZ3JheVsxXSA9IEZYUkdCMkdSQVkoc2V0X3IsIHNldF9nLCBzZXRfYik7DQorICAgIH0NCisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIGRlc3RfcGl0Y2g7DQorICAgICAgICBGWFNZU19tZW1zZXQ4KGRlc3Rfc2NhbiwgZ3JheVswXSwgd2lkdGgpOw0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gc3JjX2xlZnQ7IGNvbCA8IHNyY19sZWZ0ICsgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgIGlmIChzcmNfc2Nhbltjb2wgLyA4XSAmICgxIDw8ICg3IC0gY29sICUgOCkpKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSBncmF5WzFdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgX0NvbnZlcnRCdWZmZXJfOGJwcFBsdDJHcmF5KEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IGRlc3RfcGl0Y2gsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwU3JjQml0bWFwLCBpbnQgc3JjX2xlZnQsIGludCBzcmNfdG9wLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgRlhfRFdPUkQqIHNyY19wbHQgPSBwU3JjQml0bWFwLT5HZXRQYWxldHRlKCk7DQorICAgIEZYX0JZVEUgZ3JheVsyNTZdOw0KKyAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgRlhfRFdPUkQgcGx0WzI1Nl07DQorICAgICAgICBpZiAocFNyY0JpdG1hcC0+SXNDbXlrSW1hZ2UoKSkgew0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgICAgIHBsdFtpXSA9IEZYQ01ZS19UT0RJQihzcmNfcGx0W2ldKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIEZYX0xQQllURSBiZ3JfcHRyID0gKEZYX0xQQllURSlwbHQ7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgKmJncl9wdHIrKyA9IEZYQVJHQl9CKHNyY19wbHRbaV0pOw0KKyAgICAgICAgICAgICAgICAqYmdyX3B0cisrID0gRlhBUkdCX0coc3JjX3BsdFtpXSk7DQorICAgICAgICAgICAgICAgICpiZ3JfcHRyKysgPSBGWEFSR0JfUihzcmNfcGx0W2ldKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBncmF5LCAoRlhfTFBDQllURSlwbHQsIDI1Nik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAocFNyY0JpdG1hcC0+SXNDbXlrSW1hZ2UoKSkgew0KKyAgICAgICAgICAgIEZYX0JZVEUgciwgZywgYjsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSArKykgew0KKyAgICAgICAgICAgICAgICBBZG9iZUNNWUtfdG9fc1JHQjEoRlhTWVNfR2V0Q1ZhbHVlKHNyY19wbHRbaV0pLCBGWFNZU19HZXRNVmFsdWUoc3JjX3BsdFtpXSksIEZYU1lTX0dldFlWYWx1ZShzcmNfcGx0W2ldKSwgRlhTWVNfR2V0S1ZhbHVlKHNyY19wbHRbaV0pLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciwgZywgYik7DQorICAgICAgICAgICAgICAgIGdyYXlbaV0gPSBGWFJHQjJHUkFZKHIsIGcsIGIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgICAgIGdyYXlbaV0gPSBGWFJHQjJHUkFZKEZYQVJHQl9SKHNyY19wbHRbaV0pLCBGWEFSR0JfRyhzcmNfcGx0W2ldKSwgRlhBUkdCX0Ioc3JjX3BsdFtpXSkpOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaDsNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwU3JjQml0bWFwLT5HZXRTY2FubGluZShzcmNfdG9wICsgcm93KSArIHNyY19sZWZ0Ow0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IGdyYXlbKnNyY19zY2FuKytdOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIF9Db252ZXJ0QnVmZmVyX1JnYk9yQ215azJHcmF5KEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IGRlc3RfcGl0Y2gsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmNCaXRtYXAsIGludCBzcmNfbGVmdCwgaW50IHNyY190b3AsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBpbnQgQnBwID0gcFNyY0JpdG1hcC0+R2V0QlBQKCkgLyA4Ow0KKyAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICAgICAgaWYgKEJwcCA9PSAzIHx8IHBTcmNCaXRtYXAtPklzQ215a0ltYWdlKCkpIHsNCisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gZGVzdF9idWYgKyByb3cgKiBkZXN0X3BpdGNoOw0KKyAgICAgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gcFNyY0JpdG1hcC0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdykgKyBzcmNfbGVmdCAqIEJwcDsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZGVzdF9zY2FuLCBzcmNfc2Nhbiwgd2lkdGgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQgKiA0Ow0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBkZXN0X3NjYW4sIHNyY19zY2FuLCAxKTsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChwU3JjQml0bWFwLT5Jc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQgKiA0Ow0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIHIsIGcsIGI7DQorICAgICAgICAgICAgICAgICAgICBBZG9iZUNNWUtfdG9fc1JHQjEoRlhTWVNfR2V0Q1ZhbHVlKChGWF9EV09SRClzcmNfc2NhblswXSksIEZYU1lTX0dldE1WYWx1ZSgoRlhfRFdPUkQpc3JjX3NjYW5bMV0pLCBGWFNZU19HZXRZVmFsdWUoKEZYX0RXT1JEKXNyY19zY2FuWzJdKSwgRlhTWVNfR2V0S1ZhbHVlKChGWF9EV09SRClzcmNfc2NhblszXSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciwgZywgYik7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBGWFJHQjJHUkFZKHIsIGcsIGIpOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIGRlc3RfcGl0Y2g7DQorICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwU3JjQml0bWFwLT5HZXRTY2FubGluZShzcmNfdG9wICsgcm93KSArIHNyY19sZWZ0ICogQnBwOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBGWFJHQjJHUkFZKHNyY19zY2FuWzJdLCBzcmNfc2NhblsxXSwgc3JjX3NjYW5bMF0pOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gQnBwOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitpbmxpbmUgdm9pZCBfQ29udmVydEJ1ZmZlcl9JbmRleENvcHkoRlhfTFBCWVRFIGRlc3RfYnVmLCBpbnQgZGVzdF9waXRjaCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwU3JjQml0bWFwLCBpbnQgc3JjX2xlZnQsIGludCBzcmNfdG9wKQ0KK3sNCisgICAgaWYgKHBTcmNCaXRtYXAtPkdldEJQUCgpID09IDEpIHsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICBGWFNZU19tZW1zZXQzMihkZXN0X3NjYW4sIDAsIHdpZHRoKTsNCisgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gcFNyY0JpdG1hcC0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdyk7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gc3JjX2xlZnQ7IGNvbCA8IHNyY19sZWZ0ICsgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBpZiAoc3JjX3NjYW5bY29sIC8gOF0gJiAoMSA8PCAoNyAtIGNvbCAlIDgpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IDE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gcFNyY0JpdG1hcC0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdykgKyBzcmNfbGVmdDsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCk7DQorICAgICAgICB9DQorICAgIH0NCit9DQorRlhfQk9PTCBfQ29udmVydEJ1ZmZlcl9QbHQyUGx0UmdiOChGWF9MUEJZVEUgZGVzdF9idWYsIGludCBkZXN0X3BpdGNoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwU3JjQml0bWFwLCBpbnQgc3JjX2xlZnQsIGludCBzcmNfdG9wLCBGWF9EV09SRCogZHN0X3BsdCwgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIF9Db252ZXJ0QnVmZmVyX0luZGV4Q29weShkZXN0X2J1ZiwgZGVzdF9waXRjaCwgd2lkdGgsIGhlaWdodCwgcFNyY0JpdG1hcCwgc3JjX2xlZnQsIHNyY190b3ApOw0KKyAgICBGWF9EV09SRCogc3JjX3BsdCA9IHBTcmNCaXRtYXAtPkdldFBhbGV0dGUoKTsNCisgICAgaW50IHBsdF9zaXplID0gcFNyY0JpdG1hcC0+R2V0UGFsZXR0ZVNpemUoKTsNCisgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgIEZYX0RXT1JEIHBsdFsyNTZdOw0KKyAgICAgICAgRlhfTFBCWVRFIGJncl9wdHIgPSAoRlhfTFBCWVRFKXBsdDsNCisgICAgICAgIGlmIChwU3JjQml0bWFwLT5Jc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwbHRfc2l6ZTsgaSArKykgew0KKyAgICAgICAgICAgICAgICBwbHRbaV0gPSBGWENNWUtfVE9ESUIoc3JjX3BsdFtpXSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBsdF9zaXplOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICpiZ3JfcHRyKysgPSBGWEFSR0JfQihzcmNfcGx0W2ldKTsNCisgICAgICAgICAgICAgICAgKmJncl9wdHIrKyA9IEZYQVJHQl9HKHNyY19wbHRbaV0pOw0KKyAgICAgICAgICAgICAgICAqYmdyX3B0cisrID0gRlhBUkdCX1Ioc3JjX3BsdFtpXSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGJncl9wdHIgPSAoRlhfTFBCWVRFKXBsdDsNCisgICAgICAgIH0NCisgICAgICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsNCisgICAgICAgIHBJY2NNb2R1bGUtPlRyYW5zbGF0ZVNjYW5saW5lKHBJY2NUcmFuc2Zvcm0sIChGWF9MUEJZVEUpcGx0LCAoRlhfTFBDQllURSlwbHQsIHBsdF9zaXplKTsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGx0X3NpemU7IGkgKyspIHsNCisgICAgICAgICAgICBkc3RfcGx0W2ldID0gRlhBUkdCX01BS0UoMHhmZiwgYmdyX3B0clsyXSwgYmdyX3B0clsxXSwgYmdyX3B0clswXSk7DQorICAgICAgICAgICAgYmdyX3B0ciArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKHBTcmNCaXRtYXAtPklzQ215a0ltYWdlKCkpIHsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBsdF9zaXplOyBpICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgciwgZywgYjsNCisgICAgICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IxKEZYU1lTX0dldENWYWx1ZShzcmNfcGx0W2ldKSwgRlhTWVNfR2V0TVZhbHVlKHNyY19wbHRbaV0pLCBGWFNZU19HZXRZVmFsdWUoc3JjX3BsdFtpXSksIEZYU1lTX0dldEtWYWx1ZShzcmNfcGx0W2ldKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIsIGcsIGIpOw0KKyAgICAgICAgICAgICAgICBkc3RfcGx0W2ldID0gRlhBUkdCX01BS0UoMHhmZiwgciwgZywgYik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihkc3RfcGx0LCBzcmNfcGx0LCBwbHRfc2l6ZSAqIDQpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitpbmxpbmUgRlhfQk9PTCBfQ29udmVydEJ1ZmZlcl9SZ2IyUGx0UmdiOF9Ob1RyYW5zZm9ybShGWF9MUEJZVEUgZGVzdF9idWYsIGludCBkZXN0X3BpdGNoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwU3JjQml0bWFwLCBpbnQgc3JjX2xlZnQsIGludCBzcmNfdG9wLCBGWF9EV09SRCogZHN0X3BsdCkNCit7DQorICAgIGludCBicHAgPSBwU3JjQml0bWFwLT5HZXRCUFAoKSAvIDg7DQorICAgIGludCByb3csIGNvbDsNCisgICAgQ0ZYX1BhbGV0dGUgcGFsZXR0ZTsNCisgICAgcGFsZXR0ZS5CdWlsZFBhbGV0dGUocFNyY0JpdG1hcCwgRlhESUJfUEFMRVRURV9MT0MpOw0KKyAgICBGWF9EV09SRCogY0x1dCA9IHBhbGV0dGUuR2V0Q29sb3JMdXQoKTsNCisgICAgRlhfRFdPUkQqIGFMdXQgPSBwYWxldHRlLkdldEFtb3VudEx1dCgpOw0KKyAgICBpZiAoY0x1dCA9PSBOVUxMIHx8IGFMdXQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGludCBsdXQgPSBwYWxldHRlLkdldGx1dCgpOw0KKyAgICBGWF9EV09SRCogcFBhbGV0dGUgPSBwYWxldHRlLkdldFBhbGV0dGUoKTsNCisgICAgaWYgKGx1dCA+IDI1Nikgew0KKyAgICAgICAgaW50IGVyciwgbWluX2VycjsNCisgICAgICAgIGludCBsdXRfMjU2ID0gbHV0IC0gMjU2Ow0KKyAgICAgICAgZm9yIChyb3cgPSAwOyByb3cgPCBsdXRfMjU2OyByb3crKykgew0KKyAgICAgICAgICAgIG1pbl9lcnIgPSAxMDAwMDAwOw0KKyAgICAgICAgICAgIEZYX0JZVEUgciwgZywgYjsNCisgICAgICAgICAgICBfQ29sb3JEZWNvZGUoY0x1dFtyb3ddLCByLCBnLCBiKTsNCisgICAgICAgICAgICBpbnQgY2xyaW5kZXggPSAwOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IDI1NjsgY29sKyspIHsNCisgICAgICAgICAgICAgICAgRlhfRFdPUkQgcF9jb2xvciA9ICoocFBhbGV0dGUgKyBjb2wpOw0KKyAgICAgICAgICAgICAgICBpbnQgZF9yID0gciAtIChGWF9CWVRFKShwX2NvbG9yID4+IDE2KTsNCisgICAgICAgICAgICAgICAgaW50IGRfZyA9IGcgLSAoRlhfQllURSkocF9jb2xvciA+PiA4KTsNCisgICAgICAgICAgICAgICAgaW50IGRfYiA9IGIgLSAoRlhfQllURSkocF9jb2xvcik7DQorICAgICAgICAgICAgICAgIGVyciA9IGRfciAqIGRfciArIGRfZyAqIGRfZyArIGRfYiAqIGRfYjsNCisgICAgICAgICAgICAgICAgaWYgKGVyciA8IG1pbl9lcnIpIHsNCisgICAgICAgICAgICAgICAgICAgIG1pbl9lcnIgPSBlcnI7DQorICAgICAgICAgICAgICAgICAgICBjbHJpbmRleCA9IGNvbDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBhTHV0W3Jvd10gPSBjbHJpbmRleDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9JTlQzMiBsdXRfMSA9IGx1dCAtIDE7DQorICAgIGZvciAocm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgIEZYX0JZVEUqIHNyY19zY2FuID0gKEZYX0JZVEUqKXBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQ7DQorICAgICAgICBGWF9CWVRFKiBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIGRlc3RfcGl0Y2g7DQorICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wrKykgew0KKyAgICAgICAgICAgIEZYX0JZVEUqIHNyY19wb3J0ID0gc3JjX3NjYW4gKyBjb2wgKiBicHA7DQorICAgICAgICAgICAgaW50IHIgPSBzcmNfcG9ydFsyXSAmIDB4ZjA7DQorICAgICAgICAgICAgaW50IGcgPSBzcmNfcG9ydFsxXSAmIDB4ZjA7DQorICAgICAgICAgICAgaW50IGIgPSBzcmNfcG9ydFswXSAmIDB4ZjA7DQorICAgICAgICAgICAgRlhfRFdPUkQgY2xyaW5kZXggPSAociA8PCA0KSArIGcgKyAoYiA+PiA0KTsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gbHV0XzE7IGkgPj0gMDsgaS0tKQ0KKyAgICAgICAgICAgICAgICBpZiAoY2xyaW5kZXggPT0gY0x1dFtpXSkgew0KKyAgICAgICAgICAgICAgICAgICAgKihkZXN0X3NjYW4gKyBjb2wpID0gKEZYX0JZVEUpKGFMdXRbaV0pOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWFNZU19tZW1jcHkzMihkc3RfcGx0LCBwUGFsZXR0ZSwgc2l6ZW9mKEZYX0RXT1JEKSAqIDI1Nik7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIF9Db252ZXJ0QnVmZmVyX1JnYjJQbHRSZ2I4KEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IGRlc3RfcGl0Y2gsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmNCaXRtYXAsIGludCBzcmNfbGVmdCwgaW50IHNyY190b3AsIEZYX0RXT1JEKiBkc3RfcGx0LCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IE5VTEw7DQorICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgIH0NCisgICAgRlhfQk9PTCByZXQgPSBfQ29udmVydEJ1ZmZlcl9SZ2IyUGx0UmdiOF9Ob1RyYW5zZm9ybShkZXN0X2J1ZiwgZGVzdF9waXRjaCwgd2lkdGgsIGhlaWdodCwgcFNyY0JpdG1hcCwgc3JjX2xlZnQsIHNyY190b3AsIGRzdF9wbHQpOw0KKyAgICBpZiAocmV0ICYmIHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpKyspIHsNCisgICAgICAgICAgICBGWF9BUkdCKiBwbHQgPSBkc3RfcGx0ICsgaTsNCisgICAgICAgICAgICBGWF9BUkdCIHBsdF9lbnRyeSA9IEZYQVJHQl9UT0RJQigqcGx0KTsNCisgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCAoRlhfTFBCWVRFKSZwbHRfZW50cnksIChGWF9MUENCWVRFKSZwbHRfZW50cnksIDEpOw0KKyAgICAgICAgICAgICpwbHQgPSBGWEFSR0JfVE9ESUIocGx0X2VudHJ5KTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcmV0Ow0KK30NCitGWF9CT09MIF9Db252ZXJ0QnVmZmVyXzFicHBNYXNrMlJnYihGWERJQl9Gb3JtYXQgZHN0X2Zvcm1hdCwgRlhfTFBCWVRFIGRlc3RfYnVmLCBpbnQgZGVzdF9waXRjaCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmNCaXRtYXAsIGludCBzcmNfbGVmdCwgaW50IHNyY190b3ApDQorew0KKyAgICBpbnQgY29tcHMgPSAoZHN0X2Zvcm1hdCAmIDB4ZmYpIC8gODsNCisgICAgRlhfQllURSBzZXRfZ3JheSwgcmVzZXRfZ3JheTsNCisgICAgc2V0X2dyYXkgPSAweGZmOw0KKyAgICByZXNldF9ncmF5ID0gMHgwMDsNCisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIGRlc3RfcGl0Y2g7DQorICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gcFNyY0JpdG1hcC0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdyk7DQorICAgICAgICBmb3IgKGludCBjb2wgPSBzcmNfbGVmdDsgY29sIDwgc3JjX2xlZnQgKyB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgaWYgKHNyY19zY2FuW2NvbCAvIDhdICYgKDEgPDwgKDcgLSBjb2wgJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gc2V0X2dyYXk7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IHNldF9ncmF5Ow0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBzZXRfZ3JheTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSByZXNldF9ncmF5Ow0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSByZXNldF9ncmF5Ow0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSByZXNldF9ncmF5Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gY29tcHM7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgX0NvbnZlcnRCdWZmZXJfOGJwcE1hc2syUmdiKEZYRElCX0Zvcm1hdCBkc3RfZm9ybWF0LCBGWF9MUEJZVEUgZGVzdF9idWYsIGludCBkZXN0X3BpdGNoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCkNCit7DQorICAgIGludCBjb21wcyA9IChkc3RfZm9ybWF0ICYgMHhmZikgLyA4Ow0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaDsNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwU3JjQml0bWFwLT5HZXRTY2FubGluZShzcmNfdG9wICsgcm93KSArIHNyY19sZWZ0Ow0KKyAgICAgICAgRlhfQllURSBzcmNfcGl4ZWw7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgc3JjX3BpeGVsID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gc3JjX3BpeGVsOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IHNyY19waXhlbDsNCisgICAgICAgICAgICAqZGVzdF9zY2FuICAgPSBzcmNfcGl4ZWw7DQorICAgICAgICAgICAgZGVzdF9zY2FuICs9IGNvbXBzIC0gMjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBfQ29udmVydEJ1ZmZlcl8xYnBwUGx0MlJnYihGWERJQl9Gb3JtYXQgZHN0X2Zvcm1hdCwgRlhfTFBCWVRFIGRlc3RfYnVmLCBpbnQgZGVzdF9waXRjaCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCwgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIGludCBjb21wcyA9IChkc3RfZm9ybWF0ICYgMHhmZikgLyA4Ow0KKyAgICBGWF9EV09SRCogc3JjX3BsdCA9IHBTcmNCaXRtYXAtPkdldFBhbGV0dGUoKTsNCisgICAgRlhfRFdPUkQgcGx0WzJdOw0KKyAgICBGWF9MUEJZVEUgYmdyX3B0ciA9IChGWF9MUEJZVEUpcGx0Ow0KKyAgICBpZiAocFNyY0JpdG1hcC0+SXNDbXlrSW1hZ2UoKSkgew0KKyAgICAgICAgcGx0WzBdID0gRlhDTVlLX1RPRElCKHNyY19wbHRbMF0pOw0KKyAgICAgICAgcGx0WzFdID0gRlhDTVlLX1RPRElCKHNyY19wbHRbMV0pOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgYmdyX3B0clswXSA9IEZYQVJHQl9CKHNyY19wbHRbMF0pOw0KKyAgICAgICAgYmdyX3B0clsxXSA9IEZYQVJHQl9HKHNyY19wbHRbMF0pOw0KKyAgICAgICAgYmdyX3B0clsyXSA9IEZYQVJHQl9SKHNyY19wbHRbMF0pOw0KKyAgICAgICAgYmdyX3B0clszXSA9IEZYQVJHQl9CKHNyY19wbHRbMV0pOw0KKyAgICAgICAgYmdyX3B0cls0XSA9IEZYQVJHQl9HKHNyY19wbHRbMV0pOw0KKyAgICAgICAgYmdyX3B0cls1XSA9IEZYQVJHQl9SKHNyY19wbHRbMV0pOw0KKyAgICB9DQorICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCAoRlhfTFBCWVRFKXBsdCwgKEZYX0xQQ0JZVEUpcGx0LCAyKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChwU3JjQml0bWFwLT5Jc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IxKEZYU1lTX0dldENWYWx1ZShzcmNfcGx0WzBdKSwgRlhTWVNfR2V0TVZhbHVlKHNyY19wbHRbMF0pLCBGWFNZU19HZXRZVmFsdWUoc3JjX3BsdFswXSksIEZYU1lTX0dldEtWYWx1ZShzcmNfcGx0WzBdKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdyX3B0clsyXSwgYmdyX3B0clsxXSwgYmdyX3B0clswXSk7DQorICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IxKEZYU1lTX0dldENWYWx1ZShzcmNfcGx0WzFdKSwgRlhTWVNfR2V0TVZhbHVlKHNyY19wbHRbMV0pLCBGWFNZU19HZXRZVmFsdWUoc3JjX3BsdFsxXSksIEZYU1lTX0dldEtWYWx1ZShzcmNfcGx0WzFdKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdyX3B0cls1XSwgYmdyX3B0cls0XSwgYmdyX3B0clszXSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIGRlc3RfcGl0Y2g7DQorICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gcFNyY0JpdG1hcC0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdyk7DQorICAgICAgICBmb3IgKGludCBjb2wgPSBzcmNfbGVmdDsgY29sIDwgc3JjX2xlZnQgKyB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgaWYgKHNyY19zY2FuW2NvbCAvIDhdICYgKDEgPDwgKDcgLSBjb2wgJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gYmdyX3B0clszXTsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gYmdyX3B0cls0XTsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiAgID0gYmdyX3B0cls1XTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBiZ3JfcHRyWzBdOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBiZ3JfcHRyWzFdOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuICAgPSBiZ3JfcHRyWzJdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gY29tcHMgLSAyOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIF9Db252ZXJ0QnVmZmVyXzhicHBQbHQyUmdiKEZYRElCX0Zvcm1hdCBkc3RfZm9ybWF0LCBGWF9MUEJZVEUgZGVzdF9idWYsIGludCBkZXN0X3BpdGNoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwU3JjQml0bWFwLCBpbnQgc3JjX2xlZnQsIGludCBzcmNfdG9wLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgaW50IGNvbXBzID0gKGRzdF9mb3JtYXQgJiAweGZmKSAvIDg7DQorICAgIEZYX0RXT1JEKiBzcmNfcGx0ID0gcFNyY0JpdG1hcC0+R2V0UGFsZXR0ZSgpOw0KKyAgICBGWF9EV09SRCBwbHRbMjU2XTsNCisgICAgRlhfTFBCWVRFIGJncl9wdHIgPSAoRlhfTFBCWVRFKXBsdDsNCisgICAgaWYgKCFwU3JjQml0bWFwLT5Jc0NteWtJbWFnZSgpKSB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7DQorICAgICAgICAgICAgKmJncl9wdHIrKyA9IEZYQVJHQl9CKHNyY19wbHRbaV0pOw0KKyAgICAgICAgICAgICpiZ3JfcHRyKysgPSBGWEFSR0JfRyhzcmNfcGx0W2ldKTsNCisgICAgICAgICAgICAqYmdyX3B0cisrID0gRlhBUkdCX1Ioc3JjX3BsdFtpXSk7DQorICAgICAgICB9DQorICAgICAgICBiZ3JfcHRyID0gKEZYX0xQQllURSlwbHQ7DQorICAgIH0NCisgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgIGlmIChwU3JjQml0bWFwLT5Jc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkrKykgew0KKyAgICAgICAgICAgICAgICBwbHRbaV0gPSBGWENNWUtfVE9ESUIoc3JjX3BsdFtpXSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgKEZYX0xQQllURSlwbHQsIChGWF9MUENCWVRFKXBsdCwgMjU2KTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChwU3JjQml0bWFwLT5Jc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkrKykgew0KKyAgICAgICAgICAgICAgICBBZG9iZUNNWUtfdG9fc1JHQjEoRlhTWVNfR2V0Q1ZhbHVlKHNyY19wbHRbaV0pLCBGWFNZU19HZXRNVmFsdWUoc3JjX3BsdFtpXSksIEZYU1lTX0dldFlWYWx1ZShzcmNfcGx0W2ldKSwgRlhTWVNfR2V0S1ZhbHVlKHNyY19wbHRbaV0pLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdyX3B0clsyXSwgYmdyX3B0clsxXSwgYmdyX3B0clswXSk7DQorICAgICAgICAgICAgICAgIGJncl9wdHIgKz0gMzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYmdyX3B0ciA9IChGWF9MUEJZVEUpcGx0Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gZGVzdF9idWYgKyByb3cgKiBkZXN0X3BpdGNoOw0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQ7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIHNyY19waXhlbCA9IGJncl9wdHIgKyAzICogKCpzcmNfc2NhbisrKTsNCisgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3BpeGVsKys7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19waXhlbCsrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4gICA9ICpzcmNfcGl4ZWwrKzsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gY29tcHMgLSAyOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIF9Db252ZXJ0QnVmZmVyXzI0YnBwUmdiMlJnYjI0KEZYX0xQQllURSBkZXN0X2J1ZiwgaW50IGRlc3RfcGl0Y2gsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmNCaXRtYXAsIGludCBzcmNfbGVmdCwgaW50IHNyY190b3AsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gZGVzdF9idWYgKyByb3cgKiBkZXN0X3BpdGNoOw0KKyAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwU3JjQml0bWFwLT5HZXRTY2FubGluZShzcmNfdG9wICsgcm93KSArIHNyY19sZWZ0ICogMzsNCisgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIGRlc3RfcGl0Y2g7DQorICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQgKiAzOw0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHdpZHRoICogMyk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgX0NvbnZlcnRCdWZmZXJfMzJicHBSZ2IyUmdiMjQoRlhfTFBCWVRFIGRlc3RfYnVmLCBpbnQgZGVzdF9waXRjaCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCwgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gZGVzdF9idWYgKyByb3cgKiBkZXN0X3BpdGNoOw0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQgKiA0Ow0KKyAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgIHNyY19zY2FuKys7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBkZXN0X3NjYW4sIGRlc3Rfc2Nhbiwgd2lkdGgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIF9Db252ZXJ0QnVmZmVyX1JnYjJSZ2IzMihGWF9MUEJZVEUgZGVzdF9idWYsIGludCBkZXN0X3BpdGNoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCwgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIGludCBjb21wcyA9IHBTcmNCaXRtYXAtPkdldEJQUCgpIC8gODsNCisgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gcFNyY0JpdG1hcC0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdykgKyBzcmNfbGVmdCAqIGNvbXBzOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZGVzdF9zY2FuLCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSBjb21wczsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIGRlc3RfcGl0Y2g7DQorICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQgKiBjb21wczsNCisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKnNyY19zY2FuKys7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbisrOw0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSBjb21wcyAtIDM7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIF9Db252ZXJ0QnVmZmVyXzMyYnBwQ215azJSZ2IzMihGWF9MUEJZVEUgZGVzdF9idWYsIGludCBkZXN0X3BpdGNoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCwgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIGlmIChwSWNjVHJhbnNmb3JtKSB7DQorICAgICAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIHJvdyAqIGRlc3RfcGl0Y2g7DQorICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBTcmNCaXRtYXAtPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpICsgc3JjX2xlZnQgKiA0Ow0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgZGVzdF9zY2FuLCBzcmNfc2NhbiwgMSk7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gcFNyY0JpdG1hcC0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdykgKyBzcmNfbGVmdCAqIDQ7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBBZG9iZUNNWUtfdG9fc1JHQjEoc3JjX3NjYW5bMF0sIHNyY19zY2FuWzFdLCBzcmNfc2NhblsyXSwgc3JjX3NjYW5bM10sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0sIGRlc3Rfc2NhblsxXSwgZGVzdF9zY2FuWzBdKTsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENvbnZlcnRCdWZmZXIoRlhESUJfRm9ybWF0IGRlc3RfZm9ybWF0LCBGWF9MUEJZVEUgZGVzdF9idWYsIGludCBkZXN0X3BpdGNoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmNCaXRtYXAsIGludCBzcmNfbGVmdCwgaW50IHNyY190b3AsIEZYX0RXT1JEKiYgZF9wYWwsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBGWERJQl9Gb3JtYXQgc3JjX2Zvcm1hdCA9IHBTcmNCaXRtYXAtPkdldEZvcm1hdCgpOw0KKyAgICBpZiAoIUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCkgfHwgIUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpKSB7DQorICAgICAgICBwSWNjVHJhbnNmb3JtID0gTlVMTDsNCisgICAgfQ0KKyAgICBzd2l0Y2ggKGRlc3RfZm9ybWF0KSB7DQorICAgICAgICBjYXNlIEZYRElCX0ludmFsaWQ6DQorICAgICAgICBjYXNlIEZYRElCXzFicHBDbXlrOg0KKyAgICAgICAgY2FzZSBGWERJQl8xYnBwTWFzazoNCisgICAgICAgIGNhc2UgRlhESUJfMWJwcFJnYjoNCisgICAgICAgICAgICBBU1NFUlQoRkFMU0UpOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIGNhc2UgRlhESUJfOGJwcE1hc2s6IHsNCisgICAgICAgICAgICAgICAgaWYgKChzcmNfZm9ybWF0ICYgMHhmZikgPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBTcmNCaXRtYXAtPkdldFBhbGV0dGUoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfQ29udmVydEJ1ZmZlcl8xYnBwUGx0MkdyYXkoZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfQ29udmVydEJ1ZmZlcl8xYnBwTWFzazJHcmF5KGRlc3RfYnVmLCBkZXN0X3BpdGNoLCB3aWR0aCwgaGVpZ2h0LCBwU3JjQml0bWFwLCBzcmNfbGVmdCwgc3JjX3RvcCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHNyY19mb3JtYXQgJiAweGZmKSA9PSA4KSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocFNyY0JpdG1hcC0+R2V0UGFsZXR0ZSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9Db252ZXJ0QnVmZmVyXzhicHBQbHQyR3JheShkZXN0X2J1ZiwgZGVzdF9waXRjaCwgd2lkdGgsIGhlaWdodCwgcFNyY0JpdG1hcCwgc3JjX2xlZnQsIHNyY190b3AsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9Db252ZXJ0QnVmZmVyXzhicHBNYXNrMkdyYXkoZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoc3JjX2Zvcm1hdCAmIDB4ZmYpID49IDI0KSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX0NvbnZlcnRCdWZmZXJfUmdiT3JDbXlrMkdyYXkoZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGWERJQl84YnBwUmdiOg0KKyAgICAgICAgY2FzZSBGWERJQl84YnBwUmdiYTogew0KKyAgICAgICAgICAgICAgICBpZiAoKHNyY19mb3JtYXQgJiAweGZmKSA9PSA4ICYmIHBTcmNCaXRtYXAtPkdldFBhbGV0dGUoKSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29udmVydEJ1ZmZlcihGWERJQl84YnBwTWFzaywgZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wLCBkX3BhbCwgcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZF9wYWwgPSBGWF9BbGxvYyhGWF9EV09SRCwgMjU2KTsNCisgICAgICAgICAgICAgICAgaWYgKCFkX3BhbCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYU1lTX21lbXNldDMyKGRfcGFsLCAwLCBzaXplb2YoRlhfRFdPUkQpICogMjU2KTsNCisgICAgICAgICAgICAgICAgaWYgKCgoc3JjX2Zvcm1hdCAmIDB4ZmYpID09IDEgfHwgKHNyY19mb3JtYXQgJiAweGZmKSA9PSA4KSAmJiBwU3JjQml0bWFwLT5HZXRQYWxldHRlKCkpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfQ29udmVydEJ1ZmZlcl9QbHQyUGx0UmdiOChkZXN0X2J1ZiwgZGVzdF9waXRjaCwgd2lkdGgsIGhlaWdodCwgcFNyY0JpdG1hcCwgc3JjX2xlZnQsIHNyY190b3AsIGRfcGFsLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoc3JjX2Zvcm1hdCAmIDB4ZmYpID49IDI0KSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX0NvbnZlcnRCdWZmZXJfUmdiMlBsdFJnYjgoZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wLCBkX3BhbCwgcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfUmdiOg0KKyAgICAgICAgY2FzZSBGWERJQl9SZ2JhOiB7DQorICAgICAgICAgICAgICAgIGlmICgoc3JjX2Zvcm1hdCAmIDB4ZmYpID09IDEpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwU3JjQml0bWFwLT5HZXRQYWxldHRlKCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX0NvbnZlcnRCdWZmZXJfMWJwcFBsdDJSZ2IoZGVzdF9mb3JtYXQsIGRlc3RfYnVmLCBkZXN0X3BpdGNoLCB3aWR0aCwgaGVpZ2h0LCBwU3JjQml0bWFwLCBzcmNfbGVmdCwgc3JjX3RvcCwgcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX0NvbnZlcnRCdWZmZXJfMWJwcE1hc2syUmdiKGRlc3RfZm9ybWF0LCBkZXN0X2J1ZiwgZGVzdF9waXRjaCwgd2lkdGgsIGhlaWdodCwgcFNyY0JpdG1hcCwgc3JjX2xlZnQsIHNyY190b3ApOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChzcmNfZm9ybWF0ICYgMHhmZikgPT0gOCkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBTcmNCaXRtYXAtPkdldFBhbGV0dGUoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfQ29udmVydEJ1ZmZlcl84YnBwUGx0MlJnYihkZXN0X2Zvcm1hdCwgZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfQ29udmVydEJ1ZmZlcl84YnBwTWFzazJSZ2IoZGVzdF9mb3JtYXQsIGRlc3RfYnVmLCBkZXN0X3BpdGNoLCB3aWR0aCwgaGVpZ2h0LCBwU3JjQml0bWFwLCBzcmNfbGVmdCwgc3JjX3RvcCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHNyY19mb3JtYXQgJiAweGZmKSA9PSAyNCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9Db252ZXJ0QnVmZmVyXzI0YnBwUmdiMlJnYjI0KGRlc3RfYnVmLCBkZXN0X3BpdGNoLCB3aWR0aCwgaGVpZ2h0LCBwU3JjQml0bWFwLCBzcmNfbGVmdCwgc3JjX3RvcCwgcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHNyY19mb3JtYXQgJiAweGZmKSA9PSAzMikgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9Db252ZXJ0QnVmZmVyXzMyYnBwUmdiMlJnYjI0KGRlc3RfYnVmLCBkZXN0X3BpdGNoLCB3aWR0aCwgaGVpZ2h0LCBwU3JjQml0bWFwLCBzcmNfbGVmdCwgc3JjX3RvcCwgcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfQXJnYjoNCisgICAgICAgIGNhc2UgRlhESUJfUmdiMzI6IHsNCisgICAgICAgICAgICAgICAgaWYgKChzcmNfZm9ybWF0ICYgMHhmZikgPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBTcmNCaXRtYXAtPkdldFBhbGV0dGUoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfQ29udmVydEJ1ZmZlcl8xYnBwUGx0MlJnYihkZXN0X2Zvcm1hdCwgZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfQ29udmVydEJ1ZmZlcl8xYnBwTWFzazJSZ2IoZGVzdF9mb3JtYXQsIGRlc3RfYnVmLCBkZXN0X3BpdGNoLCB3aWR0aCwgaGVpZ2h0LCBwU3JjQml0bWFwLCBzcmNfbGVmdCwgc3JjX3RvcCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHNyY19mb3JtYXQgJiAweGZmKSA9PSA4KSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocFNyY0JpdG1hcC0+R2V0UGFsZXR0ZSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9Db252ZXJ0QnVmZmVyXzhicHBQbHQyUmdiKGRlc3RfZm9ybWF0LCBkZXN0X2J1ZiwgZGVzdF9waXRjaCwgd2lkdGgsIGhlaWdodCwgcFNyY0JpdG1hcCwgc3JjX2xlZnQsIHNyY190b3AsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9Db252ZXJ0QnVmZmVyXzhicHBNYXNrMlJnYihkZXN0X2Zvcm1hdCwgZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoc3JjX2Zvcm1hdCAmIDB4ZmYpID49IDI0KSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2Zvcm1hdCAmIDB4MDQwMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfQ29udmVydEJ1ZmZlcl8zMmJwcENteWsyUmdiMzIoZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfQ29udmVydEJ1ZmZlcl9SZ2IyUmdiMzIoZGVzdF9idWYsIGRlc3RfcGl0Y2gsIHdpZHRoLCBoZWlnaHQsIHBTcmNCaXRtYXAsIHNyY19sZWZ0LCBzcmNfdG9wLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitDRlhfRElCaXRtYXAqIENGWF9ESUJTb3VyY2U6OkNsb25lQ29udmVydChGWERJQl9Gb3JtYXQgZGVzdF9mb3JtYXQsIGNvbnN0IEZYX1JFQ1QqIHBDbGlwLCB2b2lkKiBwSWNjVHJhbnNmb3JtKSBjb25zdA0KK3sNCisgICAgaWYoZGVzdF9mb3JtYXQgPT0gR2V0Rm9ybWF0KCkgJiYgcEljY1RyYW5zZm9ybSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gQ2xvbmUocENsaXApOw0KKyAgICB9DQorICAgIGlmIChwQ2xpcCkgew0KKyAgICAgICAgQ0ZYX0RJQml0bWFwKiBwQ2xvbmUgPSBDbG9uZShwQ2xpcCk7DQorICAgICAgICBpZiAocENsb25lID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIGlmKCFwQ2xvbmUtPkNvbnZlcnRGb3JtYXQoZGVzdF9mb3JtYXQsIHBJY2NUcmFuc2Zvcm0pKSB7DQorICAgICAgICAgICAgZGVsZXRlIHBDbG9uZTsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBwQ2xvbmU7DQorICAgIH0NCisgICAgQ0ZYX0RJQml0bWFwKiBwQ2xvbmUgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBpZiAoIXBDbG9uZSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYoIXBDbG9uZS0+Q3JlYXRlKG1fV2lkdGgsIG1fSGVpZ2h0LCBkZXN0X2Zvcm1hdCkpIHsNCisgICAgICAgIGRlbGV0ZSBwQ2xvbmU7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWF9CT09MIHJldCA9IFRSVUU7DQorICAgIENGWF9ESUJpdG1hcCogcFNyY0FscGhhID0gTlVMTDsNCisgICAgaWYgKG1fQWxwaGFGbGFnICYgMikgew0KKyAgICAgICAgcFNyY0FscGhhID0gKEdldEZvcm1hdCgpID09IEZYRElCX0FyZ2IpID8gR2V0QWxwaGFNYXNrKCkgOiBtX3BBbHBoYU1hc2s7DQorICAgICAgICBpZiAocFNyY0FscGhhID09IE5VTEwpIHsNCisgICAgICAgICAgICBkZWxldGUgcENsb25lOw0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChkZXN0X2Zvcm1hdCAmIDB4MDIwMCkgew0KKyAgICAgICAgaWYgKGRlc3RfZm9ybWF0ID09IEZYRElCX0FyZ2IpDQorICAgICAgICAgICAgcmV0ID0gcFNyY0FscGhhID8NCisgICAgICAgICAgICAgICAgICBwQ2xvbmUtPkxvYWRDaGFubmVsKEZYRElCX0FscGhhLCBwU3JjQWxwaGEsIEZYRElCX0FscGhhKSA6DQorICAgICAgICAgICAgICAgICAgcENsb25lLT5Mb2FkQ2hhbm5lbChGWERJQl9BbHBoYSwgMHhmZik7DQorICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICByZXQgPSBwQ2xvbmUtPkNvcHlBbHBoYU1hc2socFNyY0FscGhhKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAocFNyY0FscGhhICYmIHBTcmNBbHBoYSAhPSBtX3BBbHBoYU1hc2spIHsNCisgICAgICAgIGRlbGV0ZSBwU3JjQWxwaGE7DQorICAgICAgICBwU3JjQWxwaGEgPSBOVUxMOw0KKyAgICB9DQorICAgIGlmICghcmV0KSB7DQorICAgICAgICBkZWxldGUgcENsb25lOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgRlhfRFdPUkQqIHBhbF84YnBwID0gTlVMTDsNCisgICAgcmV0ID0gQ29udmVydEJ1ZmZlcihkZXN0X2Zvcm1hdCwgcENsb25lLT5HZXRCdWZmZXIoKSwgcENsb25lLT5HZXRQaXRjaCgpLCBtX1dpZHRoLCBtX0hlaWdodCwgdGhpcywgMCwgMCwgcGFsXzhicHAsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICBpZiAoIXJldCkgew0KKyAgICAgICAgaWYgKHBhbF84YnBwKSB7DQorICAgICAgICAgICAgRlhfRnJlZShwYWxfOGJwcCk7DQorICAgICAgICB9DQorICAgICAgICBkZWxldGUgcENsb25lOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBhbF84YnBwKSB7DQorICAgICAgICBwQ2xvbmUtPkNvcHlQYWxldHRlKHBhbF84YnBwKTsNCisgICAgICAgIEZYX0ZyZWUocGFsXzhicHApOw0KKyAgICAgICAgcGFsXzhicHAgPSBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBwQ2xvbmU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0RJQml0bWFwOjpDb252ZXJ0Rm9ybWF0KEZYRElCX0Zvcm1hdCBkZXN0X2Zvcm1hdCwgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIEZYRElCX0Zvcm1hdCBzcmNfZm9ybWF0ID0gR2V0Rm9ybWF0KCk7DQorICAgIGlmIChkZXN0X2Zvcm1hdCA9PSBzcmNfZm9ybWF0ICYmIHBJY2NUcmFuc2Zvcm0gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKGRlc3RfZm9ybWF0ID09IEZYRElCXzhicHBNYXNrICYmIHNyY19mb3JtYXQgPT0gRlhESUJfOGJwcFJnYiAmJiBtX3BQYWxldHRlID09IE5VTEwpIHsNCisgICAgICAgIG1fQWxwaGFGbGFnID0gMTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmIChkZXN0X2Zvcm1hdCA9PSBGWERJQl9BcmdiICYmIHNyY19mb3JtYXQgPT0gRlhESUJfUmdiMzIgJiYgcEljY1RyYW5zZm9ybSA9PSBOVUxMKSB7DQorICAgICAgICBtX0FscGhhRmxhZyA9IDI7DQorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX0hlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIHNjYW5saW5lID0gbV9wQnVmZmVyICsgcm93ICogbV9QaXRjaCArIDM7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9XaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICpzY2FubGluZSA9IDB4ZmY7DQorICAgICAgICAgICAgICAgIHNjYW5saW5lICs9IDQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaW50IGRlc3RfYnBwID0gZGVzdF9mb3JtYXQgJiAweGZmOw0KKyAgICBpbnQgZGVzdF9waXRjaCA9IChkZXN0X2JwcCAqIG1fV2lkdGggKyAzMSkgLyAzMiAqIDQ7DQorICAgIEZYX0xQQllURSBkZXN0X2J1ZiA9IEZYX0FsbG9jTkwoRlhfQllURSwgZGVzdF9waXRjaCAqIG1fSGVpZ2h0ICsgNCk7DQorICAgIGlmIChkZXN0X2J1ZiA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ0ZYX0RJQml0bWFwKiBwQWxwaGFNYXNrID0gTlVMTDsNCisgICAgaWYgKGRlc3RfZm9ybWF0ID09IEZYRElCX0FyZ2IpIHsNCisgICAgICAgIEZYU1lTX21lbXNldDgoZGVzdF9idWYsIDB4ZmYsIGRlc3RfcGl0Y2ggKiBtX0hlaWdodCArIDQpOw0KKyAgICAgICAgaWYgKG1fcEFscGhhTWFzaykgew0KKyAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fSGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIHBEc3RTY2FubGluZSA9IGRlc3RfYnVmICsgcm93ICogZGVzdF9waXRjaCArIDM7DQorICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgcFNyY1NjYW5saW5lID0gbV9wQWxwaGFNYXNrLT5HZXRTY2FubGluZShyb3cpOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1dpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICpwRHN0U2NhbmxpbmUgPSAqcFNyY1NjYW5saW5lKys7DQorICAgICAgICAgICAgICAgICAgICBwRHN0U2NhbmxpbmUgKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChkZXN0X2Zvcm1hdCAmIDB4MDIwMCkgew0KKyAgICAgICAgaWYgKHNyY19mb3JtYXQgPT0gRlhESUJfQXJnYikgew0KKyAgICAgICAgICAgIHBBbHBoYU1hc2sgPSBHZXRBbHBoYU1hc2soKTsNCisgICAgICAgICAgICBpZiAocEFscGhhTWFzayA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIEZYX0ZyZWUoZGVzdF9idWYpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAobV9wQWxwaGFNYXNrID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgaWYgKCFCdWlsZEFscGhhTWFzaygpKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9GcmVlKGRlc3RfYnVmKTsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBwQWxwaGFNYXNrID0gbV9wQWxwaGFNYXNrOw0KKyAgICAgICAgICAgICAgICBtX3BBbHBoYU1hc2sgPSBOVUxMOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBBbHBoYU1hc2sgPSBtX3BBbHBoYU1hc2s7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX0JPT0wgcmV0ID0gRkFMU0U7DQorICAgIEZYX0RXT1JEKiBwYWxfOGJwcCA9IE5VTEw7DQorICAgIHJldCA9IENvbnZlcnRCdWZmZXIoZGVzdF9mb3JtYXQsIGRlc3RfYnVmLCBkZXN0X3BpdGNoLCBtX1dpZHRoLCBtX0hlaWdodCwgdGhpcywgMCwgMCwgcGFsXzhicHAsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICBpZiAoIXJldCkgew0KKyAgICAgICAgaWYgKHBhbF84YnBwKSB7DQorICAgICAgICAgICAgRlhfRnJlZShwYWxfOGJwcCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEFscGhhTWFzayAhPSBtX3BBbHBoYU1hc2spIHsNCisgICAgICAgICAgICBkZWxldGUgcEFscGhhTWFzazsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChkZXN0X2J1Zikgew0KKyAgICAgICAgICAgIEZYX0ZyZWUoZGVzdF9idWYpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX3BBbHBoYU1hc2sgJiYgcEFscGhhTWFzayAhPSBtX3BBbHBoYU1hc2spIHsNCisgICAgICAgIGRlbGV0ZSBtX3BBbHBoYU1hc2s7DQorICAgIH0NCisgICAgbV9wQWxwaGFNYXNrID0gcEFscGhhTWFzazsNCisgICAgaWYgKG1fcFBhbGV0dGUpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wUGFsZXR0ZSk7DQorICAgIH0NCisgICAgbV9wUGFsZXR0ZSA9IHBhbF84YnBwOw0KKyAgICBpZiAoIW1fYkV4dEJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BCdWZmZXIpOw0KKyAgICB9DQorICAgIG1fYkV4dEJ1ZiA9IEZBTFNFOw0KKyAgICBtX3BCdWZmZXIgPSBkZXN0X2J1ZjsNCisgICAgbV9icHAgPSAoRlhfQllURSlkZXN0X2Zvcm1hdDsNCisgICAgbV9BbHBoYUZsYWcgPSAoRlhfQllURSkoZGVzdF9mb3JtYXQgPj4gOCk7DQorICAgIG1fUGl0Y2ggPSBkZXN0X3BpdGNoOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9kaWIvZnhfZGliX2VuZ2luZS5jcHAgYi9jb3JlL3NyYy9meGdlL2RpYi9meF9kaWJfZW5naW5lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGRiZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9kaWIvZnhfZGliX2VuZ2luZS5jcHAKQEAgLTAsMCArMSw4NjcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZGliLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpbmNsdWRlICJkaWJfaW50LmgiDQorI2luY2x1ZGUgPGxpbWl0cy5oPg0KK2V4dGVybiBpbnQgU0RQX1RhYmxlWzUxM107DQordm9pZCBDV2VpZ2h0VGFibGU6OkNhbGMoaW50IGRlc3RfbGVuLCBpbnQgZGVzdF9taW4sIGludCBkZXN0X21heCwgaW50IHNyY19sZW4sIGludCBzcmNfbWluLCBpbnQgc3JjX21heCwgaW50IGZsYWdzKQ0KK3sNCisgICAgaWYgKG1fcFdlaWdodFRhYmxlcykgew0KKyAgICAgICAgRlhfRnJlZShtX3BXZWlnaHRUYWJsZXMpOw0KKyAgICAgICAgbV9wV2VpZ2h0VGFibGVzID0gTlVMTDsNCisgICAgfQ0KKyAgICBkb3VibGUgc2NhbGUsIGJhc2U7DQorICAgIHNjYWxlID0gRlhTWVNfRGl2KChGWF9GTE9BVCkoc3JjX2xlbiksIChGWF9GTE9BVCkoZGVzdF9sZW4pKTsNCisgICAgaWYgKGRlc3RfbGVuIDwgMCkgew0KKyAgICAgICAgYmFzZSA9IChGWF9GTE9BVCkoc3JjX2xlbik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBiYXNlID0gMDsNCisgICAgfQ0KKyAgICBpbnQgZXh0X3NpemUgPSBmbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0wgPyAzIDogMTsNCisgICAgbV9JdGVtU2l6ZSA9IHNpemVvZihpbnQpICogMiArIChpbnQpKHNpemVvZihpbnQpICogKEZYU1lTX2NlaWwoRlhTWVNfZmFicygoRlhfRkxPQVQpc2NhbGUpKSArIGV4dF9zaXplKSk7DQorICAgIG1fRGVzdE1pbiA9IGRlc3RfbWluOw0KKyAgICBpZiAoKGRlc3RfbWF4IC0gZGVzdF9taW4pID4gKGludCkoKDFVIDw8IDMwKSAtIDQpIC8gbV9JdGVtU2l6ZSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcFdlaWdodFRhYmxlcyA9IEZYX0FsbG9jTkwoRlhfQllURSwgKGRlc3RfbWF4IC0gZGVzdF9taW4pICogbV9JdGVtU2l6ZSArIDQpOw0KKyAgICBpZiAobV9wV2VpZ2h0VGFibGVzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1zZXQzMihtX3BXZWlnaHRUYWJsZXMsIDAsIHNpemVvZihGWF9CWVRFKSAqICgoZGVzdF9tYXggLSBkZXN0X21pbikqbV9JdGVtU2l6ZSArIDQpKTsNCisgICAgaWYgKChmbGFncyAmIEZYRElCX05PU01PT1RIKSAhPSAwIHx8IEZYU1lTX2ZhYnMoKEZYX0ZMT0FUKXNjYWxlKSA8IDEuMGYpIHsNCisgICAgICAgIGZvciAoaW50IGRlc3RfcGl4ZWwgPSBkZXN0X21pbjsgZGVzdF9waXhlbCA8IGRlc3RfbWF4OyBkZXN0X3BpeGVsICsrKSB7DQorICAgICAgICAgICAgUGl4ZWxXZWlnaHQmIHBpeGVsX3dlaWdodHMgPSAqR2V0UGl4ZWxXZWlnaHQoZGVzdF9waXhlbCk7DQorICAgICAgICAgICAgZG91YmxlIHNyY19wb3MgPSBkZXN0X3BpeGVsICogc2NhbGUgKyBzY2FsZSAvIDIgKyBiYXNlOw0KKyAgICAgICAgICAgIGlmIChmbGFncyAmIEZYRElCX0lOVEVSUE9MKSB7DQorICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9TcmNTdGFydCA9IChpbnQpRlhTWVNfZmxvb3IoKEZYX0ZMT0FUKXNyY19wb3MgLSAxLjBmIC8gMik7DQorICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9TcmNFbmQgPSAoaW50KUZYU1lTX2Zsb29yKChGWF9GTE9BVClzcmNfcG9zICsgMS4wZiAvIDIpOw0KKyAgICAgICAgICAgICAgICBpZiAocGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0IDwgc3JjX21pbikgew0KKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0ID0gc3JjX21pbjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAocGl4ZWxfd2VpZ2h0cy5tX1NyY0VuZCA+PSBzcmNfbWF4KSB7DQorICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kID0gc3JjX21heCAtIDE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKHBpeGVsX3dlaWdodHMubV9TcmNTdGFydCA9PSBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kKSB7DQorICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fV2VpZ2h0c1swXSA9IDY1NTM2Ow0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1dlaWdodHNbMV0gPSBGWFNZU19yb3VuZCgoRlhfRkxPQVQpKHNyY19wb3MgLSBwaXhlbF93ZWlnaHRzLm1fU3JjU3RhcnQgLSAxLjBmIC8gMikgKiA2NTUzNik7DQorICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fV2VpZ2h0c1swXSA9IDY1NTM2IC0gcGl4ZWxfd2VpZ2h0cy5tX1dlaWdodHNbMV07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2UgaWYgKGZsYWdzICYgRlhESUJfQklDVUJJQ19JTlRFUlBPTCkgew0KKyAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjU3RhcnQgPSAoaW50KUZYU1lTX2Zsb29yKChGWF9GTE9BVClzcmNfcG9zIC0gMS4wZiAvIDIpOw0KKyAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kID0gKGludClGWFNZU19mbG9vcigoRlhfRkxPQVQpc3JjX3BvcyArIDEuMGYgLyAyKTsNCisgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0IC0gMTsNCisgICAgICAgICAgICAgICAgaW50IGVuZCA9IHBpeGVsX3dlaWdodHMubV9TcmNFbmQgKyAxOw0KKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPCBzcmNfbWluKSB7DQorICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHNyY19taW47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGVuZCA+PSBzcmNfbWF4KSB7DQorICAgICAgICAgICAgICAgICAgICBlbmQgPSBzcmNfbWF4IC0gMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAocGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0IDwgc3JjX21pbikgew0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3BvcyArPSBzcmNfbWluIC0gcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0Ow0KKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0ID0gc3JjX21pbjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAocGl4ZWxfd2VpZ2h0cy5tX1NyY0VuZCA+PSBzcmNfbWF4KSB7DQorICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kID0gc3JjX21heCAtIDE7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW50IHdlaWdodDsNCisgICAgICAgICAgICAgICAgd2VpZ2h0ID0gRlhTWVNfcm91bmQoKEZYX0ZMT0FUKShzcmNfcG9zIC0gcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0IC0gMS4wZiAvIDIpICogMjU2KTsNCisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09IGVuZCkgew0KKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1dlaWdodHNbMF0gPSAoU0RQX1RhYmxlWzI1NiArIHdlaWdodF0gKyBTRFBfVGFibGVbd2VpZ2h0XSArIFNEUF9UYWJsZVsyNTYgLSB3ZWlnaHRdICsgU0RQX1RhYmxlWzUxMiAtIHdlaWdodF0pIDw8IDg7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHN0YXJ0ID09IHBpeGVsX3dlaWdodHMubV9TcmNTdGFydCAmJiAocGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0ID09IHBpeGVsX3dlaWdodHMubV9TcmNFbmQgfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kID09IHBpeGVsX3dlaWdodHMubV9TcmNFbmQpICYmIHN0YXJ0IDwgZW5kKSB8fCAoc3RhcnQgPCBwaXhlbF93ZWlnaHRzLm1fU3JjU3RhcnQgJiYgcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0ID09IHBpeGVsX3dlaWdodHMubV9TcmNFbmQgJiYgZW5kID09IHBpeGVsX3dlaWdodHMubV9TcmNFbmQpKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPCBwaXhlbF93ZWlnaHRzLm1fU3JjU3RhcnQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fV2VpZ2h0c1swXSA9IFNEUF9UYWJsZVsyNTYgKyB3ZWlnaHRdIDw8IDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1dlaWdodHNbMV0gPSAoU0RQX1RhYmxlW3dlaWdodF0gKyBTRFBfVGFibGVbMjU2IC0gd2VpZ2h0XSArIFNEUF9UYWJsZVs1MTIgLSB3ZWlnaHRdKSA8PCA4Ow0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0ID09IHBpeGVsX3dlaWdodHMubV9TcmNFbmQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1dlaWdodHNbMF0gPSAoU0RQX1RhYmxlWzI1NiArIHdlaWdodF0gKyBTRFBfVGFibGVbd2VpZ2h0XSArIFNEUF9UYWJsZVsyNTYgLSB3ZWlnaHRdKSA8PCA4Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fV2VpZ2h0c1sxXSA9IFNEUF9UYWJsZVs1MTIgLSB3ZWlnaHRdIDw8IDg7DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1dlaWdodHNbMF0gPSAoU0RQX1RhYmxlWzI1NiArIHdlaWdodF0gKyBTRFBfVGFibGVbd2VpZ2h0XSkgPDwgODsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1dlaWdodHNbMV0gPSAoU0RQX1RhYmxlWzI1NiAtIHdlaWdodF0gKyBTRFBfVGFibGVbNTEyIC0gd2VpZ2h0XSkgPDwgODsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpZiAocGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0ID09IHBpeGVsX3dlaWdodHMubV9TcmNFbmQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kID0gZW5kOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDwgcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0ID0gc3RhcnQ7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPT0gcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0ICYmDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPCBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kICYmDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1NyY0VuZCA8IGVuZCkgew0KKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1dlaWdodHNbMF0gPSAoU0RQX1RhYmxlWzI1NiArIHdlaWdodF0gKyBTRFBfVGFibGVbd2VpZ2h0XSkgPDwgODsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzFdID0gU0RQX1RhYmxlWzI1NiAtIHdlaWdodF0gPDwgODsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzJdID0gU0RQX1RhYmxlWzUxMiAtIHdlaWdodF0gPDwgODsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9TcmNFbmQgPSBlbmQ7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPCBwaXhlbF93ZWlnaHRzLm1fU3JjU3RhcnQgJiYNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjU3RhcnQgPCBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kICYmDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1NyY0VuZCA9PSBlbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzBdID0gU0RQX1RhYmxlWzI1NiArIHdlaWdodF0gPDwgODsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzFdID0gU0RQX1RhYmxlW3dlaWdodF0gPDwgODsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzJdID0gKFNEUF9UYWJsZVsyNTYgLSB3ZWlnaHRdICsgU0RQX1RhYmxlWzUxMiAtIHdlaWdodF0pIDw8IDg7DQorICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjU3RhcnQgPSBzdGFydDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzBdID0gU0RQX1RhYmxlWzI1NiArIHdlaWdodF0gPDwgODsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzFdID0gU0RQX1RhYmxlW3dlaWdodF0gPDwgODsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzJdID0gU0RQX1RhYmxlWzI1NiAtIHdlaWdodF0gPDwgODsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzNdID0gU0RQX1RhYmxlWzUxMiAtIHdlaWdodF0gPDwgODsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9TcmNTdGFydCA9IHN0YXJ0Ow0KKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1NyY0VuZCA9IGVuZDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9TcmNTdGFydCA9IHBpeGVsX3dlaWdodHMubV9TcmNFbmQgPSAoaW50KUZYU1lTX2Zsb29yKChGWF9GTE9BVClzcmNfcG9zKTsNCisgICAgICAgICAgICAgICAgaWYgKHBpeGVsX3dlaWdodHMubV9TcmNTdGFydCA8IHNyY19taW4pIHsNCisgICAgICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9TcmNTdGFydCA9IHNyY19taW47DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKHBpeGVsX3dlaWdodHMubV9TcmNFbmQgPj0gc3JjX21heCkgew0KKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1NyY0VuZCA9IHNyY19tYXggLSAxOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHBpeGVsX3dlaWdodHMubV9XZWlnaHRzWzBdID0gNjU1MzY7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGZvciAoaW50IGRlc3RfcGl4ZWwgPSBkZXN0X21pbjsgZGVzdF9waXhlbCA8IGRlc3RfbWF4OyBkZXN0X3BpeGVsICsrKSB7DQorICAgICAgICBQaXhlbFdlaWdodCYgcGl4ZWxfd2VpZ2h0cyA9ICpHZXRQaXhlbFdlaWdodChkZXN0X3BpeGVsKTsNCisgICAgICAgIGRvdWJsZSBzcmNfc3RhcnQgPSBkZXN0X3BpeGVsICogc2NhbGUgKyBiYXNlOw0KKyAgICAgICAgZG91YmxlIHNyY19lbmQgPSBzcmNfc3RhcnQgKyBzY2FsZTsNCisgICAgICAgIGludCBzdGFydF9pLCBlbmRfaTsNCisgICAgICAgIGlmIChzcmNfc3RhcnQgPCBzcmNfZW5kKSB7DQorICAgICAgICAgICAgc3RhcnRfaSA9IChpbnQpRlhTWVNfZmxvb3IoKEZYX0ZMT0FUKXNyY19zdGFydCk7DQorICAgICAgICAgICAgZW5kX2kgPSAoaW50KUZYU1lTX2NlaWwoKEZYX0ZMT0FUKXNyY19lbmQpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzdGFydF9pID0gKGludClGWFNZU19mbG9vcigoRlhfRkxPQVQpc3JjX2VuZCk7DQorICAgICAgICAgICAgZW5kX2kgPSAoaW50KUZYU1lTX2NlaWwoKEZYX0ZMT0FUKXNyY19zdGFydCk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3RhcnRfaSA8IHNyY19taW4pIHsNCisgICAgICAgICAgICBzdGFydF9pID0gc3JjX21pbjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChlbmRfaSA+PSBzcmNfbWF4KSB7DQorICAgICAgICAgICAgZW5kX2kgPSBzcmNfbWF4IC0gMTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzdGFydF9pID4gZW5kX2kpIHsNCisgICAgICAgICAgICBpZiAoc3RhcnRfaSA+PSBzcmNfbWF4KSB7DQorICAgICAgICAgICAgICAgIHN0YXJ0X2kgPSBzcmNfbWF4IC0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1NyY1N0YXJ0ID0gc3RhcnRfaTsNCisgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kID0gc3RhcnRfaTsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIHBpeGVsX3dlaWdodHMubV9TcmNTdGFydCA9IHN0YXJ0X2k7DQorICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kID0gZW5kX2k7DQorICAgICAgICBmb3IgKGludCBqID0gc3RhcnRfaTsgaiA8PSBlbmRfaTsgaiArKykgew0KKyAgICAgICAgICAgIGRvdWJsZSBkZXN0X3N0YXJ0ID0gRlhTWVNfRGl2KChGWF9GTE9BVCkoaikgLSBiYXNlLCBzY2FsZSk7DQorICAgICAgICAgICAgZG91YmxlIGRlc3RfZW5kID0gRlhTWVNfRGl2KChGWF9GTE9BVCkoaiArIDEpIC0gYmFzZSwgc2NhbGUpOw0KKyAgICAgICAgICAgIGlmIChkZXN0X3N0YXJ0ID4gZGVzdF9lbmQpIHsNCisgICAgICAgICAgICAgICAgZG91YmxlIHRlbXAgPSBkZXN0X3N0YXJ0Ow0KKyAgICAgICAgICAgICAgICBkZXN0X3N0YXJ0ID0gZGVzdF9lbmQ7DQorICAgICAgICAgICAgICAgIGRlc3RfZW5kID0gdGVtcDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZG91YmxlIGFyZWFfc3RhcnQgPSBkZXN0X3N0YXJ0ID4gKEZYX0ZMT0FUKShkZXN0X3BpeGVsKSA/IGRlc3Rfc3RhcnQgOiAoRlhfRkxPQVQpKGRlc3RfcGl4ZWwpOw0KKyAgICAgICAgICAgIGRvdWJsZSBhcmVhX2VuZCA9IGRlc3RfZW5kID4gKEZYX0ZMT0FUKShkZXN0X3BpeGVsICsgMSkgPyAoRlhfRkxPQVQpKGRlc3RfcGl4ZWwgKyAxKSA6IGRlc3RfZW5kOw0KKyAgICAgICAgICAgIGRvdWJsZSB3ZWlnaHQgPSBhcmVhX3N0YXJ0ID49IGFyZWFfZW5kID8gMC4wZiA6IGFyZWFfZW5kIC0gYXJlYV9zdGFydDsNCisgICAgICAgICAgICBpZiAod2VpZ2h0ID09IDAgJiYgaiA9PSBlbmRfaSkgew0KKyAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHRzLm1fU3JjRW5kIC0tOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0cy5tX1dlaWdodHNbaiAtIHN0YXJ0X2ldID0gRlhTWVNfcm91bmQoKEZYX0ZMT0FUKSh3ZWlnaHQgKiA2NTUzNikpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NTdHJldGNoRW5naW5lOjpDU3RyZXRjaEVuZ2luZShJRlhfU2NhbmxpbmVDb21wb3NlciogcERlc3RCaXRtYXAsIEZYRElCX0Zvcm1hdCBkZXN0X2Zvcm1hdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgY29uc3QgRlhfUkVDVCYgY2xpcF9yZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfRElCU291cmNlKiBwU3JjQml0bWFwLCBpbnQgZmxhZ3MpDQorew0KKyAgICBtX1N0YXRlID0gMDsNCisgICAgbV9EZXN0Rm9ybWF0ID0gZGVzdF9mb3JtYXQ7DQorICAgIG1fRGVzdEJwcCA9IGRlc3RfZm9ybWF0ICYgMHhmZjsNCisgICAgbV9TcmNCcHAgPSBwU3JjQml0bWFwLT5HZXRGb3JtYXQoKSAmIDB4ZmY7DQorICAgIG1fYkhhc0FscGhhID0gcFNyY0JpdG1hcC0+R2V0Rm9ybWF0KCkgJiAweDIwMDsNCisgICAgbV9wU3JjUGFsZXR0ZSA9IHBTcmNCaXRtYXAtPkdldFBhbGV0dGUoKTsNCisgICAgbV9wRGVzdEJpdG1hcCA9IHBEZXN0Qml0bWFwOw0KKyAgICBtX0Rlc3RXaWR0aCA9IGRlc3Rfd2lkdGg7DQorICAgIG1fRGVzdEhlaWdodCA9IGRlc3RfaGVpZ2h0Ow0KKyAgICBtX3BJbnRlckJ1ZiA9IE5VTEw7DQorICAgIG1fcEV4dHJhQWxwaGFCdWYgPSBOVUxMOw0KKyAgICBtX3BEZXN0TWFza1NjYW5saW5lID0gTlVMTDsNCisgICAgbV9EZXN0Q2xpcCA9IGNsaXBfcmVjdDsNCisgICAgRlhfRFdPUkQgc2l6ZSA9IGNsaXBfcmVjdC5XaWR0aCgpOw0KKyAgICBpZiAoc2l6ZSAmJiBtX0Rlc3RCcHAgPiAoaW50KShJTlRfTUFYIC8gc2l6ZSkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBzaXplICo9IG1fRGVzdEJwcDsNCisgICAgaWYgKHNpemUgPiBJTlRfTUFYIC0gMzEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBzaXplICs9IDMxOw0KKyAgICBzaXplID0gc2l6ZSAvIDMyICogNDsNCisgICAgbV9wRGVzdFNjYW5saW5lID0gRlhfQWxsb2NOTChGWF9CWVRFLCBzaXplKTsNCisgICAgaWYgKG1fcERlc3RTY2FubGluZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhTWVNfbWVtc2V0MzIobV9wRGVzdFNjYW5saW5lLCAwLCBzaXplb2YoRlhfQllURSkgKiBzaXplKTsNCisgICAgaWYgKGRlc3RfZm9ybWF0ID09IEZYRElCX1JnYjMyKSB7DQorICAgICAgICBGWFNZU19tZW1zZXQ4KG1fcERlc3RTY2FubGluZSwgMjU1LCBzaXplKTsNCisgICAgfQ0KKyAgICBtX0ludGVyUGl0Y2ggPSAobV9EZXN0Q2xpcC5XaWR0aCgpICogbV9EZXN0QnBwICsgMzEpIC8gMzIgKiA0Ow0KKyAgICBtX0V4dHJhTWFza1BpdGNoID0gKG1fRGVzdENsaXAuV2lkdGgoKSAqIDggKyAzMSkgLyAzMiAqIDQ7DQorICAgIG1fcEludGVyQnVmID0gTlVMTDsNCisgICAgbV9wU291cmNlID0gcFNyY0JpdG1hcDsNCisgICAgbV9TcmNXaWR0aCA9IHBTcmNCaXRtYXAtPkdldFdpZHRoKCk7DQorICAgIG1fU3JjSGVpZ2h0ID0gcFNyY0JpdG1hcC0+R2V0SGVpZ2h0KCk7DQorICAgIG1fU3JjUGl0Y2ggPSAobV9TcmNXaWR0aCAqIG1fU3JjQnBwICsgMzEpIC8gMzIgKiA0Ow0KKyAgICBpZiAoKGZsYWdzICYgRlhESUJfTk9TTU9PVEgpID09IDApIHsNCisgICAgICAgIEZYX0JPT0wgYkludGVycG9sID0gZmxhZ3MgJiBGWERJQl9JTlRFUlBPTCB8fCBmbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0w7DQorICAgICAgICBpZiAoIWJJbnRlcnBvbCAmJiBGWFNZU19hYnMoZGVzdF93aWR0aCkgIT0gMCAmJiBGWFNZU19hYnMoZGVzdF9oZWlnaHQpIDwgbV9TcmNXaWR0aCAqIG1fU3JjSGVpZ2h0ICogOCAvIEZYU1lTX2FicyhkZXN0X3dpZHRoKSkgew0KKyAgICAgICAgICAgIGZsYWdzID0gRlhESUJfSU5URVJQT0w7DQorICAgICAgICB9DQorICAgICAgICBtX0ZsYWdzID0gZmxhZ3M7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX0ZsYWdzID0gRlhESUJfTk9TTU9PVEg7DQorICAgICAgICBpZiAoZmxhZ3MgJiBGWERJQl9ET1dOU0FNUExFKSB7DQorICAgICAgICAgICAgbV9GbGFncyB8PSBGWERJQl9ET1dOU0FNUExFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGRvdWJsZSBzY2FsZV94ID0gRlhTWVNfRGl2KChGWF9GTE9BVCkobV9TcmNXaWR0aCksIChGWF9GTE9BVCkobV9EZXN0V2lkdGgpKTsNCisgICAgZG91YmxlIHNjYWxlX3kgPSBGWFNZU19EaXYoKEZYX0ZMT0FUKShtX1NyY0hlaWdodCksIChGWF9GTE9BVCkobV9EZXN0SGVpZ2h0KSk7DQorICAgIGRvdWJsZSBiYXNlX3ggPSBtX0Rlc3RXaWR0aCA+IDAgPyAwLjBmIDogKEZYX0ZMT0FUKShtX0Rlc3RXaWR0aCk7DQorICAgIGRvdWJsZSBiYXNlX3kgPSBtX0Rlc3RIZWlnaHQgPiAwID8gMC4wZiA6IChGWF9GTE9BVCkobV9EZXN0SGVpZ2h0KTsNCisgICAgZG91YmxlIHNyY19sZWZ0ID0gRlhTWVNfTXVsKHNjYWxlX3gsIChGWF9GTE9BVCkoY2xpcF9yZWN0LmxlZnQpICsgYmFzZV94KTsNCisgICAgZG91YmxlIHNyY19yaWdodCA9IEZYU1lTX011bChzY2FsZV94LCAoRlhfRkxPQVQpKGNsaXBfcmVjdC5yaWdodCkgKyBiYXNlX3gpOw0KKyAgICBkb3VibGUgc3JjX3RvcCA9IEZYU1lTX011bChzY2FsZV95LCAoRlhfRkxPQVQpKGNsaXBfcmVjdC50b3ApICsgYmFzZV95KTsNCisgICAgZG91YmxlIHNyY19ib3R0b20gPSBGWFNZU19NdWwoc2NhbGVfeSwgKEZYX0ZMT0FUKShjbGlwX3JlY3QuYm90dG9tKSArIGJhc2VfeSk7DQorICAgIGlmIChzcmNfbGVmdCA+IHNyY19yaWdodCkgew0KKyAgICAgICAgZG91YmxlIHRlbXAgPSBzcmNfbGVmdDsNCisgICAgICAgIHNyY19sZWZ0ID0gc3JjX3JpZ2h0Ow0KKyAgICAgICAgc3JjX3JpZ2h0ID0gdGVtcDsNCisgICAgfQ0KKyAgICBpZiAoc3JjX3RvcCA+IHNyY19ib3R0b20pIHsNCisgICAgICAgIGRvdWJsZSB0ZW1wID0gc3JjX3RvcDsNCisgICAgICAgIHNyY190b3AgPSBzcmNfYm90dG9tOw0KKyAgICAgICAgc3JjX2JvdHRvbSA9IHRlbXA7DQorICAgIH0NCisgICAgbV9TcmNDbGlwLmxlZnQgPSAoaW50KUZYU1lTX2Zsb29yKChGWF9GTE9BVClzcmNfbGVmdCk7DQorICAgIG1fU3JjQ2xpcC5yaWdodCA9IChpbnQpRlhTWVNfY2VpbCgoRlhfRkxPQVQpc3JjX3JpZ2h0KTsNCisgICAgbV9TcmNDbGlwLnRvcCA9IChpbnQpRlhTWVNfZmxvb3IoKEZYX0ZMT0FUKXNyY190b3ApOw0KKyAgICBtX1NyY0NsaXAuYm90dG9tID0gKGludClGWFNZU19jZWlsKChGWF9GTE9BVClzcmNfYm90dG9tKTsNCisgICAgRlhfUkVDVCBzcmNfcmVjdCgwLCAwLCBtX1NyY1dpZHRoLCBtX1NyY0hlaWdodCk7DQorICAgIG1fU3JjQ2xpcC5JbnRlcnNlY3Qoc3JjX3JlY3QpOw0KKyAgICBpZiAobV9TcmNCcHAgPT0gMSkgew0KKyAgICAgICAgaWYgKG1fRGVzdEJwcCA9PSA4KSB7DQorICAgICAgICAgICAgbV9UcmFuc01ldGhvZCA9IDE7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG1fVHJhbnNNZXRob2QgPSAyOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKG1fU3JjQnBwID09IDgpIHsNCisgICAgICAgIGlmIChtX0Rlc3RCcHAgPT0gOCkgew0KKyAgICAgICAgICAgIGlmICghbV9iSGFzQWxwaGEpIHsNCisgICAgICAgICAgICAgICAgbV9UcmFuc01ldGhvZCA9IDM7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgbV9UcmFuc01ldGhvZCA9IDQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAoIW1fYkhhc0FscGhhKSB7DQorICAgICAgICAgICAgICAgIG1fVHJhbnNNZXRob2QgPSA1Ow0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG1fVHJhbnNNZXRob2QgPSA2Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmICghbV9iSGFzQWxwaGEpIHsNCisgICAgICAgICAgICBtX1RyYW5zTWV0aG9kID0gNzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9UcmFuc01ldGhvZCA9IDg7DQorICAgICAgICB9DQorICAgIH0NCit9DQorRlhfQk9PTCBDU3RyZXRjaEVuZ2luZTo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICB3aGlsZSAobV9TdGF0ZSA9PSAxKSB7DQorICAgICAgICBpZiAoQ29udGludWVTdHJldGNoSG9yeihwUGF1c2UpKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICBtX1N0YXRlID0gMjsNCisgICAgICAgIFN0cmV0Y2hWZXJ0KCk7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitDU3RyZXRjaEVuZ2luZTo6fkNTdHJldGNoRW5naW5lKCkNCit7DQorICAgIGlmIChtX3BEZXN0U2NhbmxpbmUpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wRGVzdFNjYW5saW5lKTsNCisgICAgfQ0KKyAgICBpZiAobV9wSW50ZXJCdWYpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wSW50ZXJCdWYpOw0KKyAgICB9DQorICAgIGlmIChtX3BFeHRyYUFscGhhQnVmKSB7DQorICAgICAgICBGWF9GcmVlKG1fcEV4dHJhQWxwaGFCdWYpOw0KKyAgICB9DQorICAgIGlmIChtX3BEZXN0TWFza1NjYW5saW5lKSB7DQorICAgICAgICBGWF9GcmVlKG1fcERlc3RNYXNrU2NhbmxpbmUpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1N0cmV0Y2hFbmdpbmU6OlN0YXJ0U3RyZXRjaEhvcnooKQ0KK3sNCisgICAgaWYgKG1fRGVzdFdpZHRoID09IDAgfHwgbV9wRGVzdFNjYW5saW5lID09IE5VTEwgfHwgbV9TcmNDbGlwLkhlaWdodCgpID4gKGludCkoKDFVIDw8IDI5KSAvIG1fSW50ZXJQaXRjaCkgfHwgbV9TcmNDbGlwLkhlaWdodCgpID09IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgbV9wSW50ZXJCdWYgPSBGWF9BbGxvY05MKHVuc2lnbmVkIGNoYXIsIG1fU3JjQ2xpcC5IZWlnaHQoKSAqIG1fSW50ZXJQaXRjaCk7DQorI2Vsc2UNCisgICAgbV9wSW50ZXJCdWYgPSBGWF9BbGxvYyh1bnNpZ25lZCBjaGFyLCBtX1NyY0NsaXAuSGVpZ2h0KCkgKiBtX0ludGVyUGl0Y2gpOw0KKyNlbmRpZg0KKyAgICBpZiAobV9wSW50ZXJCdWYgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX3BTb3VyY2UgJiYgbV9iSGFzQWxwaGEgJiYgbV9wU291cmNlLT5tX3BBbHBoYU1hc2spIHsNCisgICAgICAgIG1fcEV4dHJhQWxwaGFCdWYgPSBGWF9BbGxvYyh1bnNpZ25lZCBjaGFyLCBtX1NyY0NsaXAuSGVpZ2h0KCkgKiBtX0V4dHJhTWFza1BpdGNoKTsNCisgICAgICAgIGlmICghbV9wRXh0cmFBbHBoYUJ1Zikgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0RXT1JEIHNpemUgPSAobV9EZXN0Q2xpcC5XaWR0aCgpICogOCArIDMxKSAvIDMyICogNDsNCisgICAgICAgIG1fcERlc3RNYXNrU2NhbmxpbmUgPSBGWF9BbGxvY05MKHVuc2lnbmVkIGNoYXIsIHNpemUpOw0KKyAgICAgICAgaWYgKCFtX3BEZXN0TWFza1NjYW5saW5lKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fV2VpZ2h0VGFibGUuQ2FsYyhtX0Rlc3RXaWR0aCwgbV9EZXN0Q2xpcC5sZWZ0LCBtX0Rlc3RDbGlwLnJpZ2h0LCBtX1NyY1dpZHRoLCBtX1NyY0NsaXAubGVmdCwgbV9TcmNDbGlwLnJpZ2h0LCBtX0ZsYWdzKTsNCisgICAgaWYgKG1fV2VpZ2h0VGFibGUubV9wV2VpZ2h0VGFibGVzID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX0N1clJvdyA9IG1fU3JjQ2xpcC50b3A7DQorICAgIG1fU3RhdGUgPSAxOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorI2RlZmluZSBGWF9TVFJFQ0hfUEFVU0VfUk9XUwkxMA0KK0ZYX0JPT0wgQ1N0cmV0Y2hFbmdpbmU6OkNvbnRpbnVlU3RyZXRjaEhvcnooSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZiAoIW1fRGVzdFdpZHRoKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpZiAobV9wU291cmNlLT5Ta2lwVG9TY2FubGluZShtX0N1clJvdywgcFBhdXNlKSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaW50IEJwcCA9IG1fRGVzdEJwcCAvIDg7DQorICAgIGludCByb3dzX3RvX2dvID0gRlhfU1RSRUNIX1BBVVNFX1JPV1M7DQorICAgIGZvciAoOyBtX0N1clJvdyA8IG1fU3JjQ2xpcC5ib3R0b207IG1fQ3VyUm93ICsrKSB7DQorICAgICAgICBpZiAocm93c190b19nbyA9PSAwKSB7DQorICAgICAgICAgICAgaWYgKHBQYXVzZSAmJiBwUGF1c2UtPk5lZWRUb1BhdXNlTm93KCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcm93c190b19nbyA9IEZYX1NUUkVDSF9QQVVTRV9ST1dTOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBtX3BTb3VyY2UtPkdldFNjYW5saW5lKG1fQ3VyUm93KTsNCisgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBtX3BJbnRlckJ1ZiArIChtX0N1clJvdyAtIG1fU3JjQ2xpcC50b3ApICogbV9JbnRlclBpdGNoOw0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfc2Nhbl9tYXNrID0gTlVMTDsNCisgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW5fbWFzayA9IE5VTEw7DQorICAgICAgICBpZiAobV9wRXh0cmFBbHBoYUJ1Zikgew0KKyAgICAgICAgICAgIHNyY19zY2FuX21hc2sgPSBtX3BTb3VyY2UtPm1fcEFscGhhTWFzay0+R2V0U2NhbmxpbmUobV9DdXJSb3cpOw0KKyAgICAgICAgICAgIGRlc3Rfc2Nhbl9tYXNrID0gbV9wRXh0cmFBbHBoYUJ1ZiArIChtX0N1clJvdyAtIG1fU3JjQ2xpcC50b3ApICogbV9FeHRyYU1hc2tQaXRjaDsNCisgICAgICAgIH0NCisgICAgICAgIHN3aXRjaCAobV9UcmFuc01ldGhvZCkgew0KKyAgICAgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICBjYXNlIDI6IHsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IG1fRGVzdENsaXAubGVmdDsgY29sIDwgbV9EZXN0Q2xpcC5yaWdodDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgUGl4ZWxXZWlnaHQqIHBQaXhlbFdlaWdodHMgPSBtX1dlaWdodFRhYmxlLkdldFBpeGVsV2VpZ2h0KGNvbCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3RfYSA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IHBQaXhlbFdlaWdodHMtPm1fU3JjU3RhcnQ7IGogPD0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNFbmQ7IGogKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpeGVsX3dlaWdodCA9IHBQaXhlbFdlaWdodHMtPm1fV2VpZ2h0c1tqIC0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNTdGFydF07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfc2NhbltqIC8gOF0gJiAoMSA8PCAoNyAtIGogJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfYSArPSBwaXhlbF93ZWlnaHQgKiAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fRmxhZ3MgJiBGWERJQl9CSUNVQklDX0lOVEVSUE9MKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfYSA9IGRlc3RfYSA8IDAgPyAwIDogZGVzdF9hID4gMTY3MTE2ODAgPyAxNjcxMTY4MCA6IGRlc3RfYTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKEZYX0JZVEUpKGRlc3RfYSA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgMzogew0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gbV9EZXN0Q2xpcC5sZWZ0OyBjb2wgPCBtX0Rlc3RDbGlwLnJpZ2h0OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBQaXhlbFdlaWdodCogcFBpeGVsV2VpZ2h0cyA9IG1fV2VpZ2h0VGFibGUuR2V0UGl4ZWxXZWlnaHQoY29sKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF9hID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNTdGFydDsgaiA8PSBwUGl4ZWxXZWlnaHRzLT5tX1NyY0VuZDsgaiArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxfd2VpZ2h0ID0gcFBpeGVsV2VpZ2h0cy0+bV9XZWlnaHRzW2ogLSBwUGl4ZWxXZWlnaHRzLT5tX1NyY1N0YXJ0XTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9hICs9IHBpeGVsX3dlaWdodCAqIHNyY19zY2FuW2pdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9GbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0wpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9hID0gZGVzdF9hIDwgMCA/IDAgOiBkZXN0X2EgPiAxNjcxMTY4MCA/IDE2NzExNjgwIDogZGVzdF9hOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAoRlhfQllURSkoZGVzdF9hID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2FzZSA0OiB7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBtX0Rlc3RDbGlwLmxlZnQ7IGNvbCA8IG1fRGVzdENsaXAucmlnaHQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsV2VpZ2h0KiBwUGl4ZWxXZWlnaHRzID0gbV9XZWlnaHRUYWJsZS5HZXRQaXhlbFdlaWdodChjb2wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X2EgPSAwLCBkZXN0X3IgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBwUGl4ZWxXZWlnaHRzLT5tX1NyY1N0YXJ0OyBqIDw9IHBQaXhlbFdlaWdodHMtPm1fU3JjRW5kOyBqICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwaXhlbF93ZWlnaHQgPSBwUGl4ZWxXZWlnaHRzLT5tX1dlaWdodHNbaiAtIHBQaXhlbFdlaWdodHMtPm1fU3JjU3RhcnRdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHQgPSBwaXhlbF93ZWlnaHQgKiBzcmNfc2Nhbl9tYXNrW2pdIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3IgKz0gcGl4ZWxfd2VpZ2h0ICogc3JjX3NjYW5bal07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfYSArPSBwaXhlbF93ZWlnaHQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZsYWdzICYgRlhESUJfQklDVUJJQ19JTlRFUlBPTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3IgPSBkZXN0X3IgPCAwID8gMCA6IGRlc3RfciA+IDE2NzExNjgwID8gMTY3MTE2ODAgOiBkZXN0X3I7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfYSA9IGRlc3RfYSA8IDAgPyAwIDogZGVzdF9hID4gNjU1MzYgPyA2NTUzNiA6IGRlc3RfYTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKEZYX0JZVEUpKGRlc3RfciA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2Nhbl9tYXNrKysgPSAoRlhfQllURSkoKGRlc3RfYSAqIDI1NSkgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjYXNlIDU6IHsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IG1fRGVzdENsaXAubGVmdDsgY29sIDwgbV9EZXN0Q2xpcC5yaWdodDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgUGl4ZWxXZWlnaHQqIHBQaXhlbFdlaWdodHMgPSBtX1dlaWdodFRhYmxlLkdldFBpeGVsV2VpZ2h0KGNvbCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfcl95ID0gMCwgZGVzdF9nX20gPSAwLCBkZXN0X2JfYyA9IDAsIGRlc3RfayA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IHBQaXhlbFdlaWdodHMtPm1fU3JjU3RhcnQ7IGogPD0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNFbmQ7IGogKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpeGVsX3dlaWdodCA9IHBQaXhlbFdlaWdodHMtPm1fV2VpZ2h0c1tqIC0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNTdGFydF07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnYl9jbXlrID0gbV9wU3JjUGFsZXR0ZVtzcmNfc2NhbltqXV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0Rlc3RGb3JtYXQgPT0gRlhESUJfUmdiKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3JfeSArPSBwaXhlbF93ZWlnaHQgKiAoRlhfQllURSkoYXJnYl9jbXlrID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfZ19tICs9IHBpeGVsX3dlaWdodCAqIChGWF9CWVRFKShhcmdiX2NteWsgPj4gOCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2JfYyArPSBwaXhlbF93ZWlnaHQgKiAoRlhfQllURSlhcmdiX2NteWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2JfYyArPSBwaXhlbF93ZWlnaHQgKiAoRlhfQllURSkoYXJnYl9jbXlrID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfZ19tICs9IHBpeGVsX3dlaWdodCAqIChGWF9CWVRFKShhcmdiX2NteWsgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9yX3kgKz0gcGl4ZWxfd2VpZ2h0ICogKEZYX0JZVEUpKGFyZ2JfY215ayA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9GbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0wpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9yX3kgPSBkZXN0X3JfeSA8IDAgPyAwIDogZGVzdF9yX3kgPiAxNjcxMTY4MCA/IDE2NzExNjgwIDogZGVzdF9yX3k7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfZ19tID0gZGVzdF9nX20gPCAwID8gMCA6IGRlc3RfZ19tID4gMTY3MTE2ODAgPyAxNjcxMTY4MCA6IGRlc3RfZ19tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2JfYyA9IGRlc3RfYl9jIDwgMCA/IDAgOiBkZXN0X2JfYyA+IDE2NzExNjgwID8gMTY3MTE2ODAgOiBkZXN0X2JfYzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKEZYX0JZVEUpKGRlc3RfYl9jID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAoRlhfQllURSkoZGVzdF9nX20gPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IChGWF9CWVRFKShkZXN0X3JfeSA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgNjogew0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gbV9EZXN0Q2xpcC5sZWZ0OyBjb2wgPCBtX0Rlc3RDbGlwLnJpZ2h0OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBQaXhlbFdlaWdodCogcFBpeGVsV2VpZ2h0cyA9IG1fV2VpZ2h0VGFibGUuR2V0UGl4ZWxXZWlnaHQoY29sKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF9hID0gMCwgZGVzdF9yX3kgPSAwLCBkZXN0X2dfbSA9IDAsIGRlc3RfYl9jID0gMCwgZGVzdF9rID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNTdGFydDsgaiA8PSBwUGl4ZWxXZWlnaHRzLT5tX1NyY0VuZDsgaiArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxfd2VpZ2h0ID0gcFBpeGVsV2VpZ2h0cy0+bV9XZWlnaHRzW2ogLSBwUGl4ZWxXZWlnaHRzLT5tX1NyY1N0YXJ0XTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfd2VpZ2h0ID0gcGl4ZWxfd2VpZ2h0ICogc3JjX3NjYW5fbWFza1tqXSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhcmdiX2NteWsgPSBtX3BTcmNQYWxldHRlW3NyY19zY2FuW2pdXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl9SZ2JhKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3JfeSArPSBwaXhlbF93ZWlnaHQgKiAoRlhfQllURSkoYXJnYl9jbXlrID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfZ19tICs9IHBpeGVsX3dlaWdodCAqIChGWF9CWVRFKShhcmdiX2NteWsgPj4gOCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2JfYyArPSBwaXhlbF93ZWlnaHQgKiAoRlhfQllURSlhcmdiX2NteWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2JfYyArPSBwaXhlbF93ZWlnaHQgKiAoRlhfQllURSkoYXJnYl9jbXlrID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfZ19tICs9IHBpeGVsX3dlaWdodCAqIChGWF9CWVRFKShhcmdiX2NteWsgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9yX3kgKz0gcGl4ZWxfd2VpZ2h0ICogKEZYX0JZVEUpKGFyZ2JfY215ayA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2EgKz0gcGl4ZWxfd2VpZ2h0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9GbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0wpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9rID0gZGVzdF9rIDwgMCA/IDAgOiBkZXN0X2sgPiAxNjcxMTY4MCA/IDE2NzExNjgwIDogZGVzdF9rOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2JfYyA9IGRlc3RfYl9jIDwgMCA/IDAgOiBkZXN0X2JfYyA+IDE2NzExNjgwID8gMTY3MTE2ODAgOiBkZXN0X2JfYzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9nX20gPSBkZXN0X2dfbSA8IDAgPyAwIDogZGVzdF9nX20gPiAxNjcxMTY4MCA/IDE2NzExNjgwIDogZGVzdF9nX207DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfcl95ID0gZGVzdF9yX3kgPCAwID8gMCA6IGRlc3Rfcl95ID4gMTY3MTE2ODAgPyAxNjcxMTY4MCA6IGRlc3Rfcl95Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2EgPSBkZXN0X2EgPCAwID8gMCA6IGRlc3RfYSA+IDY1NTM2ID8gNjU1MzYgOiBkZXN0X2E7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IChGWF9CWVRFKShkZXN0X2JfYyA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKEZYX0JZVEUpKGRlc3RfZ19tID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAoRlhfQllURSkoZGVzdF9yX3kgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW5fbWFzaysrID0gKEZYX0JZVEUpKChkZXN0X2EgKiAyNTUpID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2FzZSA3OiB7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBtX0Rlc3RDbGlwLmxlZnQ7IGNvbCA8IG1fRGVzdENsaXAucmlnaHQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsV2VpZ2h0KiBwUGl4ZWxXZWlnaHRzID0gbV9XZWlnaHRUYWJsZS5HZXRQaXhlbFdlaWdodChjb2wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3JfeSA9IDAsIGRlc3RfZ19tID0gMCwgZGVzdF9iX2MgPSAwLCBkZXN0X2sgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBwUGl4ZWxXZWlnaHRzLT5tX1NyY1N0YXJ0OyBqIDw9IHBQaXhlbFdlaWdodHMtPm1fU3JjRW5kOyBqICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwaXhlbF93ZWlnaHQgPSBwUGl4ZWxXZWlnaHRzLT5tX1dlaWdodHNbaiAtIHBQaXhlbFdlaWdodHMtPm1fU3JjU3RhcnRdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19waXhlbCA9IHNyY19zY2FuICsgaiAqIEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9iX2MgKz0gcGl4ZWxfd2VpZ2h0ICogKCpzcmNfcGl4ZWwrKyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfZ19tICs9IHBpeGVsX3dlaWdodCAqICgqc3JjX3BpeGVsKyspOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3JfeSArPSBwaXhlbF93ZWlnaHQgKiAoKnNyY19waXhlbCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZsYWdzICYgRlhESUJfQklDVUJJQ19JTlRFUlBPTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2JfYyA9IGRlc3RfYl9jIDwgMCA/IDAgOiBkZXN0X2JfYyA+IDE2NzExNjgwID8gMTY3MTE2ODAgOiBkZXN0X2JfYzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9nX20gPSBkZXN0X2dfbSA8IDAgPyAwIDogZGVzdF9nX20gPiAxNjcxMTY4MCA/IDE2NzExNjgwIDogZGVzdF9nX207DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfcl95ID0gZGVzdF9yX3kgPCAwID8gMCA6IGRlc3Rfcl95ID4gMTY3MTE2ODAgPyAxNjcxMTY4MCA6IGRlc3Rfcl95Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAoRlhfQllURSkoKGRlc3RfYl9jKSA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKEZYX0JZVEUpKChkZXN0X2dfbSkgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IChGWF9CWVRFKSgoZGVzdF9yX3kpID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gQnBwIC0gMzsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2FzZSA4OiB7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBtX0Rlc3RDbGlwLmxlZnQ7IGNvbCA8IG1fRGVzdENsaXAucmlnaHQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsV2VpZ2h0KiBwUGl4ZWxXZWlnaHRzID0gbV9XZWlnaHRUYWJsZS5HZXRQaXhlbFdlaWdodChjb2wpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X2EgPSAwLCBkZXN0X3JfeSA9IDAsIGRlc3RfZ19tID0gMCwgZGVzdF9iX2MgPSAwLCBkZXN0X2sgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBwUGl4ZWxXZWlnaHRzLT5tX1NyY1N0YXJ0OyBqIDw9IHBQaXhlbFdlaWdodHMtPm1fU3JjRW5kOyBqICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwaXhlbF93ZWlnaHQgPSBwUGl4ZWxXZWlnaHRzLT5tX1dlaWdodHNbaiAtIHBQaXhlbFdlaWdodHMtPm1fU3JjU3RhcnRdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19waXhlbCA9IHNyY19zY2FuICsgaiAqIEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fRGVzdEZvcm1hdCA9PSBGWERJQl9BcmdiKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHQgPSBwaXhlbF93ZWlnaHQgKiBzcmNfcGl4ZWxbM10gLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF93ZWlnaHQgPSBwaXhlbF93ZWlnaHQgKiBzcmNfc2Nhbl9tYXNrW2pdIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfYl9jICs9IHBpeGVsX3dlaWdodCAqICgqc3JjX3BpeGVsKyspOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2dfbSArPSBwaXhlbF93ZWlnaHQgKiAoKnNyY19waXhlbCsrKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9yX3kgKz0gcGl4ZWxfd2VpZ2h0ICogKCpzcmNfcGl4ZWwpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2EgKz0gcGl4ZWxfd2VpZ2h0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9GbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0wpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9yX3kgPSBkZXN0X3JfeSA8IDAgPyAwIDogZGVzdF9yX3kgPiAxNjcxMTY4MCA/IDE2NzExNjgwIDogZGVzdF9yX3k7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfZ19tID0gZGVzdF9nX20gPCAwID8gMCA6IGRlc3RfZ19tID4gMTY3MTE2ODAgPyAxNjcxMTY4MCA6IGRlc3RfZ19tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2JfYyA9IGRlc3RfYl9jIDwgMCA/IDAgOiBkZXN0X2JfYyA+IDE2NzExNjgwID8gMTY3MTE2ODAgOiBkZXN0X2JfYzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9hID0gZGVzdF9hIDwgMCA/IDAgOiBkZXN0X2EgPiA2NTUzNiA/IDY1NTM2IDogZGVzdF9hOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAoRlhfQllURSkoKGRlc3RfYl9jKSA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbisrID0gKEZYX0JZVEUpKChkZXN0X2dfbSkgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9IChGWF9CWVRFKSgoZGVzdF9yX3kpID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9EZXN0Rm9ybWF0ID09IEZYRElCX0FyZ2IpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IChGWF9CWVRFKSgoZGVzdF9hICogMjU1KSA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXN0X3NjYW5fbWFzaykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuX21hc2srKyA9IChGWF9CWVRFKSgoZGVzdF9hICogMjU1KSA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHAgLSAzOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJvd3NfdG9fZ28gLS07DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCit2b2lkIENTdHJldGNoRW5naW5lOjpTdHJldGNoVmVydCgpDQorew0KKyAgICBpZiAobV9EZXN0SGVpZ2h0ID09IDApIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDV2VpZ2h0VGFibGUgdGFibGU7DQorICAgIHRhYmxlLkNhbGMobV9EZXN0SGVpZ2h0LCBtX0Rlc3RDbGlwLnRvcCwgbV9EZXN0Q2xpcC5ib3R0b20sIG1fU3JjSGVpZ2h0LCBtX1NyY0NsaXAudG9wLCBtX1NyY0NsaXAuYm90dG9tLCBtX0ZsYWdzKTsNCisgICAgaWYgKHRhYmxlLm1fcFdlaWdodFRhYmxlcyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IERlc3RCcHAgPSBtX0Rlc3RCcHAgLyA4Ow0KKyAgICBmb3IgKGludCByb3cgPSBtX0Rlc3RDbGlwLnRvcDsgcm93IDwgbV9EZXN0Q2xpcC5ib3R0b207IHJvdyArKykgew0KKyAgICAgICAgdW5zaWduZWQgY2hhciogZGVzdF9zY2FuID0gbV9wRGVzdFNjYW5saW5lOw0KKyAgICAgICAgdW5zaWduZWQgY2hhciogZGVzdF9zYWNuX21hc2sgPSBtX3BEZXN0TWFza1NjYW5saW5lOw0KKyAgICAgICAgUGl4ZWxXZWlnaHQqIHBQaXhlbFdlaWdodHMgPSB0YWJsZS5HZXRQaXhlbFdlaWdodChyb3cpOw0KKyAgICAgICAgc3dpdGNoKG1fVHJhbnNNZXRob2QpIHsNCisgICAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIGNhc2UgMzogew0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gbV9EZXN0Q2xpcC5sZWZ0OyBjb2wgPCBtX0Rlc3RDbGlwLnJpZ2h0OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBzcmNfc2NhbiA9IG1fcEludGVyQnVmICsgKGNvbCAtIG1fRGVzdENsaXAubGVmdCkgKiBEZXN0QnBwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X2EgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBwUGl4ZWxXZWlnaHRzLT5tX1NyY1N0YXJ0OyBqIDw9IHBQaXhlbFdlaWdodHMtPm1fU3JjRW5kOyBqICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwaXhlbF93ZWlnaHQgPSBwUGl4ZWxXZWlnaHRzLT5tX1dlaWdodHNbaiAtIHBQaXhlbFdlaWdodHMtPm1fU3JjU3RhcnRdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2EgKz0gcGl4ZWxfd2VpZ2h0ICogc3JjX3NjYW5bKGogLSBtX1NyY0NsaXAudG9wKSAqIG1fSW50ZXJQaXRjaF07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZsYWdzICYgRlhESUJfQklDVUJJQ19JTlRFUlBPTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2EgPSBkZXN0X2EgPCAwID8gMCA6IGRlc3RfYSA+IDE2NzExNjgwID8gMTY3MTE2ODAgOiBkZXN0X2E7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSAoRlhfQllURSkoZGVzdF9hID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gRGVzdEJwcDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2FzZSA0OiB7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBtX0Rlc3RDbGlwLmxlZnQ7IGNvbCA8IG1fRGVzdENsaXAucmlnaHQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHNyY19zY2FuID0gbV9wSW50ZXJCdWYgKyAoY29sIC0gbV9EZXN0Q2xpcC5sZWZ0KSAqIERlc3RCcHA7DQorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc3JjX3NjYW5fbWFzayA9IG1fcEV4dHJhQWxwaGFCdWYgKyAoY29sIC0gbV9EZXN0Q2xpcC5sZWZ0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF9hID0gMCwgZGVzdF9rID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNTdGFydDsgaiA8PSBwUGl4ZWxXZWlnaHRzLT5tX1NyY0VuZDsgaiArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxfd2VpZ2h0ID0gcFBpeGVsV2VpZ2h0cy0+bV9XZWlnaHRzW2ogLSBwUGl4ZWxXZWlnaHRzLT5tX1NyY1N0YXJ0XTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9rICs9IHBpeGVsX3dlaWdodCAqIHNyY19zY2FuWyhqIC0gbV9TcmNDbGlwLnRvcCkgKiBtX0ludGVyUGl0Y2hdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2EgKz0gcGl4ZWxfd2VpZ2h0ICogc3JjX3NjYW5fbWFza1soaiAtIG1fU3JjQ2xpcC50b3ApICogbV9FeHRyYU1hc2tQaXRjaF07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZsYWdzICYgRlhESUJfQklDVUJJQ19JTlRFUlBPTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2sgPSBkZXN0X2sgPCAwID8gMCA6IGRlc3RfayA+IDE2NzExNjgwID8gMTY3MTE2ODAgOiBkZXN0X2s7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfYSA9IGRlc3RfYSA8IDAgPyAwIDogZGVzdF9hID4gMTY3MTE2ODAgPyAxNjcxMTY4MCA6IGRlc3RfYTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9IChGWF9CWVRFKShkZXN0X2sgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBEZXN0QnBwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NhY25fbWFzaysrID0gKEZYX0JZVEUpKGRlc3RfYSA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgNToNCisgICAgICAgICAgICBjYXNlIDc6IHsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IG1fRGVzdENsaXAubGVmdDsgY29sIDwgbV9EZXN0Q2xpcC5yaWdodDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc3JjX3NjYW4gPSBtX3BJbnRlckJ1ZiArIChjb2wgLSBtX0Rlc3RDbGlwLmxlZnQpICogRGVzdEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF9yX3kgPSAwLCBkZXN0X2dfbSA9IDAsIGRlc3RfYl9jID0gMCwgZGVzdF9rID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNTdGFydDsgaiA8PSBwUGl4ZWxXZWlnaHRzLT5tX1NyY0VuZDsgaiArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxfd2VpZ2h0ID0gcFBpeGVsV2VpZ2h0cy0+bV9XZWlnaHRzW2ogLSBwUGl4ZWxXZWlnaHRzLT5tX1NyY1N0YXJ0XTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfcGl4ZWwgPSBzcmNfc2NhbiArIChqIC0gbV9TcmNDbGlwLnRvcCkgKiBtX0ludGVyUGl0Y2g7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfYl9jICs9IHBpeGVsX3dlaWdodCAqICgqc3JjX3BpeGVsKyspOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2dfbSArPSBwaXhlbF93ZWlnaHQgKiAoKnNyY19waXhlbCsrKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9yX3kgKz0gcGl4ZWxfd2VpZ2h0ICogKCpzcmNfcGl4ZWwpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9GbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0wpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9yX3kgPSBkZXN0X3JfeSA8IDAgPyAwIDogZGVzdF9yX3kgPiAxNjcxMTY4MCA/IDE2NzExNjgwIDogZGVzdF9yX3k7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfZ19tID0gZGVzdF9nX20gPCAwID8gMCA6IGRlc3RfZ19tID4gMTY3MTE2ODAgPyAxNjcxMTY4MCA6IGRlc3RfZ19tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2JfYyA9IGRlc3RfYl9jIDwgMCA/IDAgOiBkZXN0X2JfYyA+IDE2NzExNjgwID8gMTY3MTE2ODAgOiBkZXN0X2JfYzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gKEZYX0JZVEUpKChkZXN0X2JfYykgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IChGWF9CWVRFKSgoZGVzdF9nX20pID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSAoRlhfQllURSkoKGRlc3Rfcl95KSA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IERlc3RCcHA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgNjoNCisgICAgICAgICAgICBjYXNlIDg6IHsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IG1fRGVzdENsaXAubGVmdDsgY29sIDwgbV9EZXN0Q2xpcC5yaWdodDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc3JjX3NjYW4gPSBtX3BJbnRlckJ1ZiArIChjb2wgLSBtX0Rlc3RDbGlwLmxlZnQpICogRGVzdEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBzcmNfc2Nhbl9tYXNrID0gTlVMTDsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9EZXN0Rm9ybWF0ICE9IEZYRElCX0FyZ2IpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW5fbWFzayA9IG1fcEV4dHJhQWxwaGFCdWYgKyAoY29sIC0gbV9EZXN0Q2xpcC5sZWZ0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3RfYSA9IDAsIGRlc3RfayA9IDAsIGRlc3Rfcl95ID0gMCwgZGVzdF9nX20gPSAwLCBkZXN0X2JfYyA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IHBQaXhlbFdlaWdodHMtPm1fU3JjU3RhcnQ7IGogPD0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNFbmQ7IGogKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpeGVsX3dlaWdodCA9IHBQaXhlbFdlaWdodHMtPm1fV2VpZ2h0c1tqIC0gcFBpeGVsV2VpZ2h0cy0+bV9TcmNTdGFydF07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3BpeGVsID0gc3JjX3NjYW4gKyAoaiAtIG1fU3JjQ2xpcC50b3ApICogbV9JbnRlclBpdGNoOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWFza192ID0gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX3NjYW5fbWFzaykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFza192ID0gc3JjX3NjYW5fbWFza1soaiAtIG1fU3JjQ2xpcC50b3ApICogbV9FeHRyYU1hc2tQaXRjaF07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9iX2MgKz0gcGl4ZWxfd2VpZ2h0ICogKCpzcmNfcGl4ZWwrKyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfZ19tICs9IHBpeGVsX3dlaWdodCAqICgqc3JjX3BpeGVsKyspOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3JfeSArPSBwaXhlbF93ZWlnaHQgKiAoKnNyY19waXhlbCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX0Rlc3RGb3JtYXQgPT0gRlhESUJfQXJnYikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9hICs9IHBpeGVsX3dlaWdodCAqICgqKHNyY19waXhlbCArIDEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfYSArPSBwaXhlbF93ZWlnaHQgKiBtYXNrX3Y7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fRmxhZ3MgJiBGWERJQl9CSUNVQklDX0lOVEVSUE9MKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfcl95ID0gZGVzdF9yX3kgPCAwID8gMCA6IGRlc3Rfcl95ID4gMTY3MTE2ODAgPyAxNjcxMTY4MCA6IGRlc3Rfcl95Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2dfbSA9IGRlc3RfZ19tIDwgMCA/IDAgOiBkZXN0X2dfbSA+IDE2NzExNjgwID8gMTY3MTE2ODAgOiBkZXN0X2dfbTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9iX2MgPSBkZXN0X2JfYyA8IDAgPyAwIDogZGVzdF9iX2MgPiAxNjcxMTY4MCA/IDE2NzExNjgwIDogZGVzdF9iX2M7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfYSA9IGRlc3RfYSA8IDAgPyAwIDogZGVzdF9hID4gMTY3MTE2ODAgPyAxNjcxMTY4MCA6IGRlc3RfYTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlc3RfYSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgciA9ICgoRlhfRFdPUkQpZGVzdF9yX3kpICogMjU1IC8gZGVzdF9hOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZyA9ICgoRlhfRFdPUkQpZGVzdF9nX20pICogMjU1IC8gZGVzdF9hOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYiA9ICgoRlhfRFdPUkQpZGVzdF9iX2MpICogMjU1IC8gZGVzdF9hOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBiID4gMjU1ID8gMjU1IDogYiA8IDAgPyAwIDogYjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gZyA+IDI1NSA/IDI1NSA6IGcgPCAwID8gMCA6IGc7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IHIgPiAyNTUgPyAyNTUgOiByIDwgMCA/IDAgOiByOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9EZXN0Rm9ybWF0ID09IEZYRElCX0FyZ2IpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gKEZYX0JZVEUpKChkZXN0X2EpID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zYWNuX21hc2sgPSAoRlhfQllURSkoKGRlc3RfYSkgPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gRGVzdEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzdF9zYWNuX21hc2spIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zYWNuX21hc2srKzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wRGVzdEJpdG1hcC0+Q29tcG9zZVNjYW5saW5lKHJvdyAtIG1fRGVzdENsaXAudG9wLCBtX3BEZXN0U2NhbmxpbmUsIG1fcERlc3RNYXNrU2NhbmxpbmUpOw0KKyAgICB9DQorfQ0KK0NGWF9JbWFnZVN0cmV0Y2hlcjo6Q0ZYX0ltYWdlU3RyZXRjaGVyKCkNCit7DQorICAgIG1fcFNjYW5saW5lID0gTlVMTDsNCisgICAgbV9wU3RyZXRjaEVuZ2luZSA9IE5VTEw7DQorICAgIG1fcE1hc2tTY2FubGluZSA9IE5VTEw7DQorfQ0KK0NGWF9JbWFnZVN0cmV0Y2hlcjo6fkNGWF9JbWFnZVN0cmV0Y2hlcigpDQorew0KKyAgICBpZiAobV9wU2NhbmxpbmUpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wU2NhbmxpbmUpOw0KKyAgICB9DQorICAgIGlmIChtX3BTdHJldGNoRW5naW5lKSB7DQorICAgICAgICBkZWxldGUgbV9wU3RyZXRjaEVuZ2luZTsNCisgICAgfQ0KKyAgICBpZiAobV9wTWFza1NjYW5saW5lKSB7DQorICAgICAgICBGWF9GcmVlKG1fcE1hc2tTY2FubGluZSk7DQorICAgIH0NCit9DQorRlhESUJfRm9ybWF0IF9HZXRTdHJldGNoZWRGb3JtYXQoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyYykNCit7DQorICAgIEZYRElCX0Zvcm1hdCBmb3JtYXQgPSBwU3JjLT5HZXRGb3JtYXQoKTsNCisgICAgaWYgKGZvcm1hdCA9PSBGWERJQl8xYnBwTWFzaykgew0KKyAgICAgICAgZm9ybWF0ID0gRlhESUJfOGJwcE1hc2s7DQorICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IEZYRElCXzFicHBSZ2IpIHsNCisgICAgICAgIGZvcm1hdCA9IEZYRElCXzhicHBSZ2I7DQorICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IEZYRElCXzhicHBSZ2IpIHsNCisgICAgICAgIGlmIChwU3JjLT5HZXRQYWxldHRlKCkpIHsNCisgICAgICAgICAgICBmb3JtYXQgPSBGWERJQl9SZ2I7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGZvcm1hdDsNCit9DQorRlhfQk9PTCBDRlhfSW1hZ2VTdHJldGNoZXI6OlN0YXJ0KElGWF9TY2FubGluZUNvbXBvc2VyKiBwRGVzdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNvdXJjZSwgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlhfUkVDVCYgcmVjdCwgRlhfRFdPUkQgZmxhZ3MpDQorew0KKyAgICBtX0Rlc3RGb3JtYXQgPSBfR2V0U3RyZXRjaGVkRm9ybWF0KHBTb3VyY2UpOw0KKyAgICBtX0Rlc3RCUFAgPSBtX0Rlc3RGb3JtYXQgJiAweGZmOw0KKyAgICBtX3BEZXN0ID0gcERlc3Q7DQorICAgIG1fcFNvdXJjZSA9IHBTb3VyY2U7DQorICAgIG1fRGVzdFdpZHRoID0gZGVzdF93aWR0aDsNCisgICAgbV9EZXN0SGVpZ2h0ID0gZGVzdF9oZWlnaHQ7DQorICAgIG1fQ2xpcFJlY3QgPSByZWN0Ow0KKyAgICBtX0ZsYWdzID0gZmxhZ3M7DQorICAgIGlmIChwU291cmNlLT5HZXRGb3JtYXQoKSA9PSBGWERJQl8xYnBwUmdiICYmIHBTb3VyY2UtPkdldFBhbGV0dGUoKSkgew0KKyAgICAgICAgRlhfQVJHQiBwYWxbMjU2XTsNCisgICAgICAgIGludCBhMCwgcjAsIGcwLCBiMCwgYTEsIHIxLCBnMSwgYjE7DQorICAgICAgICBBcmdiRGVjb2RlKHBTb3VyY2UtPkdldFBhbGV0dGVFbnRyeSgwKSwgYTAsIHIwLCBnMCwgYjApOw0KKyAgICAgICAgQXJnYkRlY29kZShwU291cmNlLT5HZXRQYWxldHRlRW50cnkoMSksIGExLCByMSwgZzEsIGIxKTsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgaW50IGEgPSBhMCArIChhMSAtIGEwKSAqIGkgLyAyNTU7DQorICAgICAgICAgICAgaW50IHIgPSByMCArIChyMSAtIHIwKSAqIGkgLyAyNTU7DQorICAgICAgICAgICAgaW50IGcgPSBnMCArIChnMSAtIGcwKSAqIGkgLyAyNTU7DQorICAgICAgICAgICAgaW50IGIgPSBiMCArIChiMSAtIGIwKSAqIGkgLyAyNTU7DQorICAgICAgICAgICAgcGFsW2ldID0gQXJnYkVuY29kZShhLCByLCBnLCBiKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghcERlc3QtPlNldEluZm8ocmVjdC5XaWR0aCgpLCByZWN0LkhlaWdodCgpLCBtX0Rlc3RGb3JtYXQsIHBhbCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAocFNvdXJjZS0+R2V0Rm9ybWF0KCkgPT0gRlhESUJfMWJwcENteWsgJiYgcFNvdXJjZS0+R2V0UGFsZXR0ZSgpKSB7DQorICAgICAgICBGWF9DTVlLIHBhbFsyNTZdOw0KKyAgICAgICAgaW50IGMwLCBtMCwgeTAsIGswLCBjMSwgbTEsIHkxLCBrMTsNCisgICAgICAgIENteWtEZWNvZGUocFNvdXJjZS0+R2V0UGFsZXR0ZUVudHJ5KDApLCBjMCwgbTAsIHkwLCBrMCk7DQorICAgICAgICBDbXlrRGVjb2RlKHBTb3VyY2UtPkdldFBhbGV0dGVFbnRyeSgxKSwgYzEsIG0xLCB5MSwgazEpOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICBpbnQgYyA9IGMwICsgKGMxIC0gYzApICogaSAvIDI1NTsNCisgICAgICAgICAgICBpbnQgbSA9IG0wICsgKG0xIC0gbTApICogaSAvIDI1NTsNCisgICAgICAgICAgICBpbnQgeSA9IHkwICsgKHkxIC0geTApICogaSAvIDI1NTsNCisgICAgICAgICAgICBpbnQgayA9IGswICsgKGsxIC0gazApICogaSAvIDI1NTsNCisgICAgICAgICAgICBwYWxbaV0gPSBDbXlrRW5jb2RlKGMsIG0sIHksIGspOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFwRGVzdC0+U2V0SW5mbyhyZWN0LldpZHRoKCksIHJlY3QuSGVpZ2h0KCksIG1fRGVzdEZvcm1hdCwgcGFsKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmICghcERlc3QtPlNldEluZm8ocmVjdC5XaWR0aCgpLCByZWN0LkhlaWdodCgpLCBtX0Rlc3RGb3JtYXQsIE5VTEwpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKGZsYWdzICYgRlhESUJfRE9XTlNBTVBMRSkgew0KKyAgICAgICAgcmV0dXJuIFN0YXJ0UXVpY2tTdHJldGNoKCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gU3RhcnRTdHJldGNoKCk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDRlhfSW1hZ2VTdHJldGNoZXI6OkNvbnRpbnVlKElGWF9QYXVzZSogcFBhdXNlKQ0KK3sNCisgICAgaWYgKG1fRmxhZ3MgJiBGWERJQl9ET1dOU0FNUExFKSB7DQorICAgICAgICByZXR1cm4gQ29udGludWVRdWlja1N0cmV0Y2gocFBhdXNlKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJldHVybiBDb250aW51ZVN0cmV0Y2gocFBhdXNlKTsNCisgICAgfQ0KK30NCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorI2RlZmluZSBNQVhfUFJPR1JFU1NJVkVfU1RSRVRDSF9QSVhFTFMJMTAwMDAwMA0KKyNlbHNlDQorI2RlZmluZSBNQVhfUFJPR1JFU1NJVkVfU1RSRVRDSF9QSVhFTFMJMTAwMDAwDQorI2VuZGlmDQorRlhfQk9PTCBDRlhfSW1hZ2VTdHJldGNoZXI6OlN0YXJ0U3RyZXRjaCgpDQorew0KKyAgICBtX3BTdHJldGNoRW5naW5lID0gRlhfTkVXIENTdHJldGNoRW5naW5lKG1fcERlc3QsIG1fRGVzdEZvcm1hdCwgbV9EZXN0V2lkdGgsIG1fRGVzdEhlaWdodCwgbV9DbGlwUmVjdCwgbV9wU291cmNlLCBtX0ZsYWdzKTsNCisgICAgaWYgKCFtX3BTdHJldGNoRW5naW5lKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9wU3RyZXRjaEVuZ2luZS0+U3RhcnRTdHJldGNoSG9yeigpOw0KKyAgICBpZiAobV9wU291cmNlLT5HZXRXaWR0aCgpICogbV9wU291cmNlLT5HZXRIZWlnaHQoKSA8IE1BWF9QUk9HUkVTU0lWRV9TVFJFVENIX1BJWEVMUykgew0KKyAgICAgICAgbV9wU3RyZXRjaEVuZ2luZS0+Q29udGludWUoTlVMTCk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ltYWdlU3RyZXRjaGVyOjpDb250aW51ZVN0cmV0Y2goSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZiAobV9wU3RyZXRjaEVuZ2luZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcFN0cmV0Y2hFbmdpbmUtPkNvbnRpbnVlKHBQYXVzZSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ltYWdlU3RyZXRjaGVyOjpTdGFydFF1aWNrU3RyZXRjaCgpDQorew0KKyNpZmRlZiBfRlBERkFQSV9NSU5JXw0KKyAgICBtX3BTb3VyY2UtPlNldERvd25TYW1wbGVTaXplKG1fRGVzdFdpZHRoLCBtX0Rlc3RIZWlnaHQpOw0KKyNlbmRpZg0KKyAgICBtX2JGbGlwWCA9IEZBTFNFOw0KKyAgICBtX2JGbGlwWSA9IEZBTFNFOw0KKyAgICBpZiAobV9EZXN0V2lkdGggPCAwKSB7DQorICAgICAgICBtX2JGbGlwWCA9IFRSVUU7DQorICAgICAgICBtX0Rlc3RXaWR0aCA9IC1tX0Rlc3RXaWR0aDsNCisgICAgfQ0KKyAgICBpZiAobV9EZXN0SGVpZ2h0IDwgMCkgew0KKyAgICAgICAgbV9iRmxpcFkgPSBUUlVFOw0KKyAgICAgICAgbV9EZXN0SGVpZ2h0ID0gLW1fRGVzdEhlaWdodDsNCisgICAgfQ0KKyAgICBtX0xpbmVJbmRleCA9IDA7DQorICAgIEZYX0RXT1JEIHNpemUgPSBtX0NsaXBSZWN0LldpZHRoKCk7DQorICAgIGlmIChzaXplICYmIG1fRGVzdEJQUCA+IChpbnQpKElOVF9NQVggLyBzaXplKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHNpemUgKj0gbV9EZXN0QlBQOw0KKyAgICBtX3BTY2FubGluZSA9IEZYX0FsbG9jKEZYX0JZVEUsIChzaXplIC8gOCArIDMpIC8gNCAqIDQpOw0KKyAgICBpZiAoIW1fcFNjYW5saW5lKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fcFNvdXJjZS0+bV9wQWxwaGFNYXNrKSB7DQorICAgICAgICBtX3BNYXNrU2NhbmxpbmUgPSBGWF9BbGxvYyhGWF9CWVRFLCAobV9DbGlwUmVjdC5XaWR0aCgpICsgMykgLyA0ICogNCk7DQorICAgICAgICBpZiAoIW1fcE1hc2tTY2FubGluZSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wU291cmNlLT5HZXRXaWR0aCgpICogbV9wU291cmNlLT5HZXRIZWlnaHQoKSA8IE1BWF9QUk9HUkVTU0lWRV9TVFJFVENIX1BJWEVMUykgew0KKyAgICAgICAgQ29udGludWVRdWlja1N0cmV0Y2goTlVMTCk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ltYWdlU3RyZXRjaGVyOjpDb250aW51ZVF1aWNrU3RyZXRjaChJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIGlmIChtX3BTY2FubGluZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IHJlc3VsdF93aWR0aCA9IG1fQ2xpcFJlY3QuV2lkdGgoKSwgcmVzdWx0X2hlaWdodCA9IG1fQ2xpcFJlY3QuSGVpZ2h0KCk7DQorICAgIGludCBzcmNfd2lkdGggPSBtX3BTb3VyY2UtPkdldFdpZHRoKCksIHNyY19oZWlnaHQgPSBtX3BTb3VyY2UtPkdldEhlaWdodCgpOw0KKyAgICBmb3IgKDsgbV9MaW5lSW5kZXggPCByZXN1bHRfaGVpZ2h0OyBtX0xpbmVJbmRleCArKykgew0KKyAgICAgICAgaW50IGRlc3RfeSwgc3JjX3k7DQorICAgICAgICBpZiAobV9iRmxpcFkpIHsNCisgICAgICAgICAgICBkZXN0X3kgPSByZXN1bHRfaGVpZ2h0IC0gbV9MaW5lSW5kZXggLSAxOw0KKyAgICAgICAgICAgIHNyY195ID0gKG1fRGVzdEhlaWdodCAtIChkZXN0X3kgKyBtX0NsaXBSZWN0LnRvcCkgLSAxKSAqIHNyY19oZWlnaHQgLyBtX0Rlc3RIZWlnaHQ7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGRlc3RfeSA9IG1fTGluZUluZGV4Ow0KKyAgICAgICAgICAgIHNyY195ID0gKGRlc3RfeSArIG1fQ2xpcFJlY3QudG9wKSAqIHNyY19oZWlnaHQgLyBtX0Rlc3RIZWlnaHQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3JjX3kgPj0gc3JjX2hlaWdodCkgew0KKyAgICAgICAgICAgIHNyY195ID0gc3JjX2hlaWdodCAtIDE7DQorICAgICAgICB9DQorICAgICAgICBpZiAoc3JjX3kgPCAwKSB7DQorICAgICAgICAgICAgc3JjX3kgPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fcFNvdXJjZS0+U2tpcFRvU2NhbmxpbmUoc3JjX3ksIHBQYXVzZSkpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFNvdXJjZS0+RG93blNhbXBsZVNjYW5saW5lKHNyY195LCBtX3BTY2FubGluZSwgbV9EZXN0QlBQLCBtX0Rlc3RXaWR0aCwgbV9iRmxpcFgsIG1fQ2xpcFJlY3QubGVmdCwgcmVzdWx0X3dpZHRoKTsNCisgICAgICAgIEZYX0xQQllURSBzY2FuX2V4dHJhX2FscGhhID0gTlVMTDsNCisgICAgICAgIGlmIChtX3BNYXNrU2NhbmxpbmUpIHsNCisgICAgICAgICAgICBtX3BTb3VyY2UtPm1fcEFscGhhTWFzay0+RG93blNhbXBsZVNjYW5saW5lKHNyY195LCBtX3BNYXNrU2NhbmxpbmUsIDEsIG1fRGVzdFdpZHRoLCBtX2JGbGlwWCwgbV9DbGlwUmVjdC5sZWZ0LCByZXN1bHRfd2lkdGgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wRGVzdC0+Q29tcG9zZVNjYW5saW5lKGRlc3RfeSwgbV9wU2NhbmxpbmUsIG1fcE1hc2tTY2FubGluZSk7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2RpYi9meF9kaWJfbWFpbi5jcHAgYi9jb3JlL3NyYy9meGdlL2RpYi9meF9kaWJfbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk1M2YyZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZGliL2Z4X2RpYl9tYWluLmNwcApAQCAtMCwwICsxLDE3MzQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZGliLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y29kZWMvZnhfY29kZWMuaCINCisjaW5jbHVkZSAiZGliX2ludC5oIg0KKyNpbmNsdWRlIDxsaW1pdHMuaD4NCitGWF9CT09MIENvbnZlcnRCdWZmZXIoRlhESUJfRm9ybWF0IGRlc3RfZm9ybWF0LCBGWF9MUEJZVEUgZGVzdF9idWYsIGludCBkZXN0X3BpdGNoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmNCaXRtYXAsIGludCBzcmNfbGVmdCwgaW50IHNyY190b3AsIEZYX0RXT1JEKiYgcGFsLCB2b2lkKiBwSWNjVHJhbnNmb3JtKTsNCit2b2lkIENteWtEZWNvZGUoRlhfRFdPUkQgY215aywgaW50JiBjLCBpbnQmIG0sIGludCYgeSwgaW50JiBrKQ0KK3sNCisgICAgYyA9IEZYU1lTX0dldENWYWx1ZShjbXlrKTsNCisgICAgbSA9IEZYU1lTX0dldE1WYWx1ZShjbXlrKTsNCisgICAgeSA9IEZYU1lTX0dldFlWYWx1ZShjbXlrKTsNCisgICAgayA9IEZYU1lTX0dldEtWYWx1ZShjbXlrKTsNCit9DQordm9pZCBBcmdiRGVjb2RlKEZYX0RXT1JEIGFyZ2IsIGludCYgYSwgaW50JiByLCBpbnQmIGcsIGludCYgYikNCit7DQorICAgIGEgPSBGWEFSR0JfQShhcmdiKTsNCisgICAgciA9IEZYQVJHQl9SKGFyZ2IpOw0KKyAgICBnID0gRlhBUkdCX0coYXJnYik7DQorICAgIGIgPSBGWEFSR0JfQihhcmdiKTsNCit9DQordm9pZCBBcmdiRGVjb2RlKEZYX0RXT1JEIGFyZ2IsIGludCYgYSwgRlhfQ09MT1JSRUYmIHJnYikNCit7DQorICAgIGEgPSBGWEFSR0JfQShhcmdiKTsNCisgICAgcmdiID0gRlhTWVNfUkdCKEZYQVJHQl9SKGFyZ2IpLCBGWEFSR0JfRyhhcmdiKSwgRlhBUkdCX0IoYXJnYikpOw0KK30NCitGWF9EV09SRCBBcmdiRW5jb2RlKGludCBhLCBGWF9DT0xPUlJFRiByZ2IpDQorew0KKyAgICByZXR1cm4gRlhBUkdCX01BS0UoYSwgRlhTWVNfR2V0UlZhbHVlKHJnYiksIEZYU1lTX0dldEdWYWx1ZShyZ2IpLCBGWFNZU19HZXRCVmFsdWUocmdiKSk7DQorfQ0KK0NGWF9ESUJTb3VyY2U6OkNGWF9ESUJTb3VyY2UoKQ0KK3sNCisgICAgbV9icHAgPSAwOw0KKyAgICBtX0FscGhhRmxhZyA9IDA7DQorICAgIG1fV2lkdGggPSBtX0hlaWdodCA9IDA7DQorICAgIG1fUGl0Y2ggPSAwOw0KKyAgICBtX3BQYWxldHRlID0gTlVMTDsNCisgICAgbV9wQWxwaGFNYXNrID0gTlVMTDsNCit9DQorQ0ZYX0RJQlNvdXJjZTo6fkNGWF9ESUJTb3VyY2UoKQ0KK3sNCisgICAgaWYgKG1fcFBhbGV0dGUpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wUGFsZXR0ZSk7DQorICAgIH0NCisgICAgaWYgKG1fcEFscGhhTWFzaykgew0KKyAgICAgICAgZGVsZXRlIG1fcEFscGhhTWFzazsNCisgICAgfQ0KK30NCitDRlhfRElCaXRtYXA6OkNGWF9ESUJpdG1hcCgpDQorew0KKyAgICBtX2JFeHRCdWYgPSBGQUxTRTsNCisgICAgbV9wQnVmZmVyID0gTlVMTDsNCisgICAgbV9wUGFsZXR0ZSA9IE5VTEw7DQorfQ0KKyNkZWZpbmUgX01BWF9PT01fTElNSVRfCTEyMDAwMDAwDQorRlhfQk9PTCBDRlhfRElCaXRtYXA6OkNyZWF0ZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIEZYRElCX0Zvcm1hdCBmb3JtYXQsIEZYX0xQQllURSBwQnVmZmVyLCBpbnQgcGl0Y2gpDQorew0KKyAgICBtX3BCdWZmZXIgPSBOVUxMOw0KKyAgICBtX2JwcCA9IChGWF9CWVRFKWZvcm1hdDsNCisgICAgbV9BbHBoYUZsYWcgPSAoRlhfQllURSkoZm9ybWF0ID4+IDgpOw0KKyAgICBtX1dpZHRoID0gbV9IZWlnaHQgPSBtX1BpdGNoID0gMDsNCisgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDAgfHwgcGl0Y2ggPCAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKChJTlRfTUFYIC0gMzEpIC8gd2lkdGggPCAoZm9ybWF0ICYgMHhmZikpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoIXBpdGNoKSB7DQorICAgICAgICBwaXRjaCA9ICh3aWR0aCAqIChmb3JtYXQgJiAweGZmKSArIDMxKSAvIDMyICogNDsNCisgICAgfQ0KKyAgICBpZiAoKDEgPDwgMzApIC8gcGl0Y2ggPCBoZWlnaHQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocEJ1ZmZlcikgew0KKyAgICAgICAgbV9wQnVmZmVyID0gcEJ1ZmZlcjsNCisgICAgICAgIG1fYkV4dEJ1ZiA9IFRSVUU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpbnQgc2l6ZSA9IHBpdGNoICogaGVpZ2h0ICsgNDsNCisgICAgICAgIGludCBvb21saW1pdCA9IF9NQVhfT09NX0xJTUlUXzsNCisgICAgICAgIGlmIChvb21saW1pdCA+PSAwICYmIHNpemUgPj0gb29tbGltaXQpIHsNCisgICAgICAgICAgICBtX3BCdWZmZXIgPSBGWF9BbGxvY05MKEZYX0JZVEUsIHNpemUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX3BCdWZmZXIgPSBGWF9BbGxvYyhGWF9CWVRFLCBzaXplKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BCdWZmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIEZYU1lTX21lbXNldDMyKG1fcEJ1ZmZlciwgMCwgc2l6ZW9mIChGWF9CWVRFKSAqIHNpemUpOw0KKyAgICB9DQorICAgIG1fV2lkdGggPSB3aWR0aDsNCisgICAgbV9IZWlnaHQgPSBoZWlnaHQ7DQorICAgIG1fUGl0Y2ggPSBwaXRjaDsNCisgICAgaWYgKEhhc0FscGhhKCkgJiYgZm9ybWF0ICE9IEZYRElCX0FyZ2IpIHsNCisgICAgICAgIEZYX0JPT0wgcmV0ID0gVFJVRTsNCisgICAgICAgIHJldCA9IEJ1aWxkQWxwaGFNYXNrKCk7DQorICAgICAgICBpZiAoIXJldCkgew0KKyAgICAgICAgICAgIGlmICghbV9iRXh0QnVmICYmIG1fcEJ1ZmZlcikgew0KKyAgICAgICAgICAgICAgICBGWF9GcmVlKG1fcEJ1ZmZlcik7DQorICAgICAgICAgICAgICAgIG1fcEJ1ZmZlciA9IE5VTEw7DQorICAgICAgICAgICAgICAgIG1fV2lkdGggPSBtX0hlaWdodCA9IG1fUGl0Y2ggPSAwOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9ESUJpdG1hcDo6Q29weShjb25zdCBDRlhfRElCU291cmNlKiBwU3JjKQ0KK3sNCisgICAgaWYgKG1fcEJ1ZmZlcikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICghQ3JlYXRlKHBTcmMtPkdldFdpZHRoKCksIHBTcmMtPkdldEhlaWdodCgpLCBwU3JjLT5HZXRGb3JtYXQoKSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDb3B5UGFsZXR0ZShwU3JjLT5HZXRQYWxldHRlKCkpOw0KKyAgICBDb3B5QWxwaGFNYXNrKHBTcmMtPm1fcEFscGhhTWFzayk7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHBTcmMtPkdldEhlaWdodCgpOyByb3cgKyspIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcEJ1ZmZlciArIHJvdyAqIG1fUGl0Y2gsIHBTcmMtPkdldFNjYW5saW5lKHJvdyksIG1fUGl0Y2gpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDRlhfRElCaXRtYXA6On5DRlhfRElCaXRtYXAoKQ0KK3sNCisgICAgaWYgKG1fcEJ1ZmZlciAmJiAhbV9iRXh0QnVmKSB7DQorICAgICAgICBGWF9GcmVlKG1fcEJ1ZmZlcik7DQorICAgIH0NCisgICAgbV9wQnVmZmVyID0gTlVMTDsNCit9DQordm9pZCBDRlhfRElCaXRtYXA6OlRha2VPdmVyKENGWF9ESUJpdG1hcCogcFNyY0JpdG1hcCkNCit7DQorICAgIGlmIChtX3BCdWZmZXIgJiYgIW1fYkV4dEJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BCdWZmZXIpOw0KKyAgICB9DQorICAgIGlmIChtX3BQYWxldHRlKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFBhbGV0dGUpOw0KKyAgICB9DQorICAgIGlmIChtX3BBbHBoYU1hc2spIHsNCisgICAgICAgIGRlbGV0ZSBtX3BBbHBoYU1hc2s7DQorICAgIH0NCisgICAgbV9wQnVmZmVyID0gcFNyY0JpdG1hcC0+bV9wQnVmZmVyOw0KKyAgICBtX3BQYWxldHRlID0gcFNyY0JpdG1hcC0+bV9wUGFsZXR0ZTsNCisgICAgbV9wQWxwaGFNYXNrID0gcFNyY0JpdG1hcC0+bV9wQWxwaGFNYXNrOw0KKyAgICBwU3JjQml0bWFwLT5tX3BCdWZmZXIgPSBOVUxMOw0KKyAgICBwU3JjQml0bWFwLT5tX3BQYWxldHRlID0gTlVMTDsNCisgICAgcFNyY0JpdG1hcC0+bV9wQWxwaGFNYXNrID0gTlVMTDsNCisgICAgbV9icHAgPSBwU3JjQml0bWFwLT5tX2JwcDsNCisgICAgbV9iRXh0QnVmID0gcFNyY0JpdG1hcC0+bV9iRXh0QnVmOw0KKyAgICBtX0FscGhhRmxhZyA9IHBTcmNCaXRtYXAtPm1fQWxwaGFGbGFnOw0KKyAgICBtX1dpZHRoID0gcFNyY0JpdG1hcC0+bV9XaWR0aDsNCisgICAgbV9IZWlnaHQgPSBwU3JjQml0bWFwLT5tX0hlaWdodDsNCisgICAgbV9QaXRjaCA9IHBTcmNCaXRtYXAtPm1fUGl0Y2g7DQorfQ0KK0NGWF9ESUJpdG1hcCogQ0ZYX0RJQlNvdXJjZTo6Q2xvbmUoY29uc3QgRlhfUkVDVCogcENsaXApIGNvbnN0DQorew0KKyAgICBGWF9SRUNUIHJlY3QoMCwgMCwgbV9XaWR0aCwgbV9IZWlnaHQpOw0KKyAgICBpZiAocENsaXApIHsNCisgICAgICAgIHJlY3QuSW50ZXJzZWN0KCpwQ2xpcCk7DQorICAgICAgICBpZiAocmVjdC5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBDRlhfRElCaXRtYXAqIHBOZXdCaXRtYXAgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBpZiAoIXBOZXdCaXRtYXApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmICghcE5ld0JpdG1hcC0+Q3JlYXRlKHJlY3QuV2lkdGgoKSwgcmVjdC5IZWlnaHQoKSwgR2V0Rm9ybWF0KCkpKSB7DQorICAgICAgICBkZWxldGUgcE5ld0JpdG1hcDsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBOZXdCaXRtYXAtPkNvcHlQYWxldHRlKG1fcFBhbGV0dGUpOw0KKyAgICBwTmV3Qml0bWFwLT5Db3B5QWxwaGFNYXNrKG1fcEFscGhhTWFzaywgcENsaXApOw0KKyAgICBpZiAoR2V0QlBQKCkgPT0gMSAmJiByZWN0LmxlZnQgJSA4ICE9IDApIHsNCisgICAgICAgIGludCBsZWZ0X3NoaWZ0ID0gcmVjdC5sZWZ0ICUgMzI7DQorICAgICAgICBpbnQgcmlnaHRfc2hpZnQgPSAzMiAtIGxlZnRfc2hpZnQ7DQorICAgICAgICBpbnQgZHdvcmRfY291bnQgPSBwTmV3Qml0bWFwLT5tX1BpdGNoIC8gNDsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IHJlY3QudG9wOyByb3cgPCByZWN0LmJvdHRvbTsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfRFdPUkQqIHNyY19zY2FuID0gKEZYX0RXT1JEKilHZXRTY2FubGluZShyb3cpICsgcmVjdC5sZWZ0IC8gMzI7DQorICAgICAgICAgICAgRlhfRFdPUkQqIGRlc3Rfc2NhbiA9IChGWF9EV09SRCopcE5ld0JpdG1hcC0+R2V0U2NhbmxpbmUocm93IC0gcmVjdC50b3ApOw0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZHdvcmRfY291bnQ7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2ldID0gKHNyY19zY2FuW2ldIDw8IGxlZnRfc2hpZnQpIHwgKHNyY19zY2FuW2kgKyAxXSA+PiByaWdodF9zaGlmdCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaW50IGNvcHlfbGVuID0gKHBOZXdCaXRtYXAtPkdldFdpZHRoKCkgKiBwTmV3Qml0bWFwLT5HZXRCUFAoKSArIDcpIC8gODsNCisgICAgICAgIGlmIChtX1BpdGNoIDwgKEZYX0RXT1JEKWNvcHlfbGVuKSB7DQorICAgICAgICAgICAgY29weV9sZW4gPSBtX1BpdGNoOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgcm93ID0gcmVjdC50b3A7IHJvdyA8IHJlY3QuYm90dG9tOyByb3cgKyspIHsNCisgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gR2V0U2NhbmxpbmUocm93KSArIHJlY3QubGVmdCAqIG1fYnBwIC8gODsNCisgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gKEZYX0xQQllURSlwTmV3Qml0bWFwLT5HZXRTY2FubGluZShyb3cgLSByZWN0LnRvcCk7DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIoZGVzdF9zY2FuLCBzcmNfc2NhbiwgY29weV9sZW4pOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBwTmV3Qml0bWFwOw0KK30NCit2b2lkIENGWF9ESUJTb3VyY2U6OkJ1aWxkUGFsZXR0ZSgpDQorew0KKyAgICBpZiAobV9wUGFsZXR0ZSkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChHZXRCUFAoKSA9PSAxKSB7DQorICAgICAgICBtX3BQYWxldHRlID0gRlhfQWxsb2MoRlhfRFdPUkQsIDIpOw0KKyAgICAgICAgaWYgKCFtX3BQYWxldHRlKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoSXNDbXlrSW1hZ2UoKSkgew0KKyAgICAgICAgICAgIG1fcFBhbGV0dGVbMF0gPSAweGZmOw0KKyAgICAgICAgICAgIG1fcFBhbGV0dGVbMV0gPSAwOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBtX3BQYWxldHRlWzBdID0gMHhmZjAwMDAwMDsNCisgICAgICAgICAgICBtX3BQYWxldHRlWzFdID0gMHhmZmZmZmZmZjsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChHZXRCUFAoKSA9PSA4KSB7DQorICAgICAgICBtX3BQYWxldHRlID0gRlhfQWxsb2MoRlhfRFdPUkQsIDI1Nik7DQorICAgICAgICBpZiAoIW1fcFBhbGV0dGUpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBpZihJc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgbV9wUGFsZXR0ZVtpXSA9IDB4ZmYgLSBpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgbV9wUGFsZXR0ZVtpXSA9IDB4ZmYwMDAwMDAgfCAoaSAqIDB4MTAxMDEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KK30NCitGWF9CT09MIENGWF9ESUJTb3VyY2U6OkJ1aWxkQWxwaGFNYXNrKCkNCit7DQorICAgIGlmIChtX3BBbHBoYU1hc2spIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIG1fcEFscGhhTWFzayA9IEZYX05FVyBDRlhfRElCaXRtYXA7DQorICAgIGlmICghbV9wQWxwaGFNYXNrKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKCFtX3BBbHBoYU1hc2stPkNyZWF0ZShtX1dpZHRoLCBtX0hlaWdodCwgRlhESUJfOGJwcE1hc2spKSB7DQorICAgICAgICBkZWxldGUgbV9wQWxwaGFNYXNrOw0KKyAgICAgICAgbV9wQWxwaGFNYXNrID0gTlVMTDsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1zZXQ4KG1fcEFscGhhTWFzay0+R2V0QnVmZmVyKCksIDB4ZmYsIG1fcEFscGhhTWFzay0+R2V0SGVpZ2h0KCkqbV9wQWxwaGFNYXNrLT5HZXRQaXRjaCgpKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0RXT1JEIENGWF9ESUJTb3VyY2U6OkdldFBhbGV0dGVFbnRyeShpbnQgaW5kZXgpIGNvbnN0DQorew0KKyAgICBBU1NFUlQoKEdldEJQUCgpID09IDEgfHwgR2V0QlBQKCkgPT0gOCkgJiYgIUlzQWxwaGFNYXNrKCkpOw0KKyAgICBpZiAobV9wUGFsZXR0ZSkgew0KKyAgICAgICAgcmV0dXJuIG1fcFBhbGV0dGVbaW5kZXhdOw0KKyAgICB9DQorICAgIGlmIChJc0NteWtJbWFnZSgpKSB7DQorICAgICAgICBpZiAoR2V0QlBQKCkgPT0gMSkgew0KKyAgICAgICAgICAgIHJldHVybiBpbmRleCA/IDAgOiAweGZmOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIDB4ZmYgLSBpbmRleDsNCisgICAgfQ0KKyAgICBpZiAoR2V0QlBQKCkgPT0gMSkgew0KKyAgICAgICAgcmV0dXJuIGluZGV4ID8gMHhmZmZmZmZmZiA6IDB4ZmYwMDAwMDA7DQorICAgIH0NCisgICAgcmV0dXJuIGluZGV4ICogMHgxMDEwMSB8IDB4ZmYwMDAwMDA7DQorfQ0KK3ZvaWQgQ0ZYX0RJQlNvdXJjZTo6U2V0UGFsZXR0ZUVudHJ5KGludCBpbmRleCwgRlhfRFdPUkQgY29sb3IpDQorew0KKyAgICBBU1NFUlQoKEdldEJQUCgpID09IDEgfHwgR2V0QlBQKCkgPT0gOCkgJiYgIUlzQWxwaGFNYXNrKCkpOw0KKyAgICBpZiAobV9wUGFsZXR0ZSA9PSBOVUxMKSB7DQorICAgICAgICBCdWlsZFBhbGV0dGUoKTsNCisgICAgfQ0KKyAgICBtX3BQYWxldHRlW2luZGV4XSA9IGNvbG9yOw0KK30NCitpbnQgQ0ZYX0RJQlNvdXJjZTo6RmluZFBhbGV0dGUoRlhfRFdPUkQgY29sb3IpIGNvbnN0DQorew0KKyAgICBBU1NFUlQoKEdldEJQUCgpID09IDEgfHwgR2V0QlBQKCkgPT0gOCkgJiYgIUlzQWxwaGFNYXNrKCkpOw0KKyAgICBpZiAobV9wUGFsZXR0ZSA9PSBOVUxMKSB7DQorICAgICAgICBpZiAoSXNDbXlrSW1hZ2UoKSkgew0KKyAgICAgICAgICAgIGlmIChHZXRCUFAoKSA9PSAxKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiAoKEZYX0JZVEUpY29sb3IgPT0gMHhmZikgPyAwIDogMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIDB4ZmYgLSAoRlhfQllURSljb2xvcjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChHZXRCUFAoKSA9PSAxKSB7DQorICAgICAgICAgICAgcmV0dXJuICgoRlhfQllURSljb2xvciA9PSAweGZmKSA/IDEgOiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIChGWF9CWVRFKWNvbG9yOw0KKyAgICB9DQorICAgIGludCBwYWxzaXplID0gKDEgPDwgR2V0QlBQKCkpOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhbHNpemU7IGkgKyspDQorICAgICAgICBpZiAobV9wUGFsZXR0ZVtpXSA9PSBjb2xvcikgew0KKyAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfQ0KKyAgICByZXR1cm4gLTE7DQorfQ0KK3ZvaWQgQ0ZYX0RJQml0bWFwOjpDbGVhcihGWF9EV09SRCBjb2xvcikNCit7DQorICAgIGlmIChtX3BCdWZmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHN3aXRjaCAoR2V0Rm9ybWF0KCkpIHsNCisgICAgICAgIGNhc2UgRlhESUJfMWJwcE1hc2s6DQorICAgICAgICAgICAgRlhTWVNfbWVtc2V0OChtX3BCdWZmZXIsIChjb2xvciAmIDB4ZmYwMDAwMDApID8gMHhmZiA6IDAsIG1fUGl0Y2ggKiBtX0hlaWdodCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCXzFicHBSZ2I6IHsNCisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gRmluZFBhbGV0dGUoY29sb3IpOw0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1zZXQ4KG1fcEJ1ZmZlciwgaW5kZXggPyAweGZmIDogMCwgbV9QaXRjaCAqIG1fSGVpZ2h0KTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGWERJQl84YnBwTWFzazoNCisgICAgICAgICAgICBGWFNZU19tZW1zZXQ4KG1fcEJ1ZmZlciwgY29sb3IgPj4gMjQsIG1fUGl0Y2ggKiBtX0hlaWdodCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCXzhicHBSZ2I6IHsNCisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gRmluZFBhbGV0dGUoY29sb3IpOw0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1zZXQ4KG1fcEJ1ZmZlciwgaW5kZXgsIG1fUGl0Y2ggKiBtX0hlaWdodCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfUmdiOg0KKyAgICAgICAgY2FzZSBGWERJQl9SZ2JhOiB7DQorICAgICAgICAgICAgICAgIGludCBhLCByLCBnLCBiOw0KKyAgICAgICAgICAgICAgICBBcmdiRGVjb2RlKGNvbG9yLCBhLCByLCBnLCBiKTsNCisgICAgICAgICAgICAgICAgaWYgKHIgPT0gZyAmJiBnID09IGIpIHsNCisgICAgICAgICAgICAgICAgICAgIEZYU1lTX21lbXNldDgobV9wQnVmZmVyLCByLCBtX1BpdGNoICogbV9IZWlnaHQpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGVfcG9zID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcEJ1ZmZlcltieXRlX3BvcysrXSA9IGI7DQorICAgICAgICAgICAgICAgICAgICAgICAgbV9wQnVmZmVyW2J5dGVfcG9zKytdID0gZzsNCisgICAgICAgICAgICAgICAgICAgICAgICBtX3BCdWZmZXJbYnl0ZV9wb3MrK10gPSByOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMTsgcm93IDwgbV9IZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKG1fcEJ1ZmZlciArIHJvdyAqIG1fUGl0Y2gsIG1fcEJ1ZmZlciwgbV9QaXRjaCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGWERJQl9SZ2IzMjoNCisgICAgICAgIGNhc2UgRlhESUJfQXJnYjogew0KKyAgICAgICAgICAgICAgICBjb2xvciA9IElzQ215a0ltYWdlKCkgPyBGWENNWUtfVE9ESUIoY29sb3IpIDogRlhBUkdCX1RPRElCKGNvbG9yKTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX1dpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAoKEZYX0RXT1JEKiltX3BCdWZmZXIpW2ldID0gY29sb3I7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMTsgcm93IDwgbV9IZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9wQnVmZmVyICsgcm93ICogbV9QaXRjaCwgbV9wQnVmZmVyLCBtX1BpdGNoKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0RJQlNvdXJjZTo6R2V0T3ZlcmxhcFJlY3QoaW50JiBkZXN0X2xlZnQsIGludCYgZGVzdF90b3AsIGludCYgd2lkdGgsIGludCYgaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY193aWR0aCwgaW50IHNyY19oZWlnaHQsIGludCYgc3JjX2xlZnQsIGludCYgc3JjX3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9DbGlwUmduKiBwQ2xpcFJnbikNCit7DQorICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQVNTRVJUKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKTsNCisgICAgaWYgKGRlc3RfbGVmdCA+IG1fV2lkdGggfHwgZGVzdF90b3AgPiBtX0hlaWdodCkgew0KKyAgICAgICAgd2lkdGggPSAwOw0KKyAgICAgICAgaGVpZ2h0ID0gMDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgeF9vZmZzZXQgPSBkZXN0X2xlZnQgLSBzcmNfbGVmdDsNCisgICAgaW50IHlfb2Zmc2V0ID0gZGVzdF90b3AgLSBzcmNfdG9wOw0KKyAgICBGWF9SRUNUIHNyY19yZWN0KHNyY19sZWZ0LCBzcmNfdG9wLCBzcmNfbGVmdCArIHdpZHRoLCBzcmNfdG9wICsgaGVpZ2h0KTsNCisgICAgRlhfUkVDVCBzcmNfYm91bmQoMCwgMCwgc3JjX3dpZHRoLCBzcmNfaGVpZ2h0KTsNCisgICAgc3JjX3JlY3QuSW50ZXJzZWN0KHNyY19ib3VuZCk7DQorICAgIEZYX1JFQ1QgZGVzdF9yZWN0KHNyY19yZWN0LmxlZnQgKyB4X29mZnNldCwgc3JjX3JlY3QudG9wICsgeV9vZmZzZXQsDQorICAgICAgICAgICAgICAgICAgICAgIHNyY19yZWN0LnJpZ2h0ICsgeF9vZmZzZXQsIHNyY19yZWN0LmJvdHRvbSArIHlfb2Zmc2V0KTsNCisgICAgRlhfUkVDVCBkZXN0X2JvdW5kKDAsIDAsIG1fV2lkdGgsIG1fSGVpZ2h0KTsNCisgICAgZGVzdF9yZWN0LkludGVyc2VjdChkZXN0X2JvdW5kKTsNCisgICAgaWYgKHBDbGlwUmduKSB7DQorICAgICAgICBkZXN0X3JlY3QuSW50ZXJzZWN0KHBDbGlwUmduLT5HZXRCb3goKSk7DQorICAgIH0NCisgICAgZGVzdF9sZWZ0ID0gZGVzdF9yZWN0LmxlZnQ7DQorICAgIGRlc3RfdG9wID0gZGVzdF9yZWN0LnRvcDsNCisgICAgc3JjX2xlZnQgPSBkZXN0X2xlZnQgLSB4X29mZnNldDsNCisgICAgc3JjX3RvcCA9IGRlc3RfdG9wIC0geV9vZmZzZXQ7DQorICAgIHdpZHRoID0gZGVzdF9yZWN0LnJpZ2h0IC0gZGVzdF9yZWN0LmxlZnQ7DQorICAgIGhlaWdodCA9IGRlc3RfcmVjdC5ib3R0b20gLSBkZXN0X3JlY3QudG9wOw0KK30NCitGWF9CT09MIENGWF9ESUJpdG1hcDo6VHJhbnNmZXJCaXRtYXAoaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTcmNCaXRtYXAsIGludCBzcmNfbGVmdCwgaW50IHNyY190b3AsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBpZiAobV9wQnVmZmVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBHZXRPdmVybGFwUmVjdChkZXN0X2xlZnQsIGRlc3RfdG9wLCB3aWR0aCwgaGVpZ2h0LCBwU3JjQml0bWFwLT5HZXRXaWR0aCgpLCBwU3JjQml0bWFwLT5HZXRIZWlnaHQoKSwgc3JjX2xlZnQsIHNyY190b3AsIE5VTEwpOw0KKyAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgRlhESUJfRm9ybWF0IGRlc3RfZm9ybWF0ID0gR2V0Rm9ybWF0KCk7DQorICAgIEZYRElCX0Zvcm1hdCBzcmNfZm9ybWF0ID0gcFNyY0JpdG1hcC0+R2V0Rm9ybWF0KCk7DQorICAgIGlmIChkZXN0X2Zvcm1hdCA9PSBzcmNfZm9ybWF0ICYmIHBJY2NUcmFuc2Zvcm0gPT0gTlVMTCkgew0KKyAgICAgICAgaWYgKEdldEJQUCgpID09IDEpIHsNCisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gbV9wQnVmZmVyICsgKGRlc3RfdG9wICsgcm93KSAqIG1fUGl0Y2g7DQorICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwU3JjQml0bWFwLT5HZXRTY2FubGluZShzcmNfdG9wICsgcm93KTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19zY2FuWyhzcmNfbGVmdCArIGNvbCkgLyA4XSAmICgxIDw8ICg3IC0gKHNyY19sZWZ0ICsgY29sKSAlIDgpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsoZGVzdF9sZWZ0ICsgY29sKSAvIDhdIHw9IDEgPDwgKDcgLSAoZGVzdF9sZWZ0ICsgY29sKSAlIDgpOw0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bKGRlc3RfbGVmdCArIGNvbCkgLyA4XSAmPSB+KDEgPDwgKDcgLSAoZGVzdF9sZWZ0ICsgY29sKSAlIDgpKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaW50IEJwcCA9IEdldEJQUCgpIC8gODsNCisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gbV9wQnVmZmVyICsgKGRlc3RfdG9wICsgcm93KSAqIG1fUGl0Y2ggKyBkZXN0X2xlZnQgKiBCcHA7DQorICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwU3JjQml0bWFwLT5HZXRTY2FubGluZShzcmNfdG9wICsgcm93KSArIHNyY19sZWZ0ICogQnBwOw0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X3NjYW4sIHNyY19zY2FuLCB3aWR0aCAqIEJwcCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKG1fcFBhbGV0dGUpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9icHAgPT0gOCkgew0KKyAgICAgICAgICAgIGRlc3RfZm9ybWF0ID0gRlhESUJfOGJwcE1hc2s7DQorICAgICAgICB9DQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9idWYgPSBtX3BCdWZmZXIgKyBkZXN0X3RvcCAqIG1fUGl0Y2ggKyBkZXN0X2xlZnQgKiBHZXRCUFAoKSAvIDg7DQorICAgICAgICBGWF9EV09SRCogZF9wbHQgPSBOVUxMOw0KKyAgICAgICAgaWYoIUNvbnZlcnRCdWZmZXIoZGVzdF9mb3JtYXQsIGRlc3RfYnVmLCBtX1BpdGNoLCB3aWR0aCwgaGVpZ2h0LCBwU3JjQml0bWFwLCBzcmNfbGVmdCwgc3JjX3RvcCwgZF9wbHQsIHBJY2NUcmFuc2Zvcm0pKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCisjaWZuZGVmIF9GUERGQVBJX01JTklfDQorRlhfQk9PTCBDRlhfRElCaXRtYXA6OlRyYW5zZmVyTWFzayhpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJTb3VyY2UqIHBNYXNrLCBGWF9EV09SRCBjb2xvciwgaW50IHNyY19sZWZ0LCBpbnQgc3JjX3RvcCwgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBpZiAobV9wQnVmZmVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBBU1NFUlQoSGFzQWxwaGEoKSAmJiAobV9icHAgPj0gMjQpKTsNCisgICAgQVNTRVJUKHBNYXNrLT5Jc0FscGhhTWFzaygpKTsNCisgICAgaWYgKCFIYXNBbHBoYSgpIHx8ICFwTWFzay0+SXNBbHBoYU1hc2soKSB8fCBtX2JwcCA8IDI0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgR2V0T3ZlcmxhcFJlY3QoZGVzdF9sZWZ0LCBkZXN0X3RvcCwgd2lkdGgsIGhlaWdodCwgcE1hc2stPkdldFdpZHRoKCksIHBNYXNrLT5HZXRIZWlnaHQoKSwgc3JjX2xlZnQsIHNyY190b3AsIE5VTEwpOw0KKyAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaW50IHNyY19waXRjaCA9IHBNYXNrLT5HZXRQaXRjaCgpOw0KKyAgICBpbnQgc3JjX2JwcCA9IHBNYXNrLT5HZXRCUFAoKTsNCisgICAgaW50IGFscGhhOw0KKyAgICBGWF9EV09SRCBkc3RfY29sb3I7DQorICAgIGlmIChhbHBoYV9mbGFnID4+IDgpIHsNCisgICAgICAgIGFscGhhID0gYWxwaGFfZmxhZyAmIDB4ZmY7DQorICAgICAgICBkc3RfY29sb3IgPSBGWENNWUtfVE9ESUIoY29sb3IpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgYWxwaGEgPSBGWEFSR0JfQShjb2xvcik7DQorICAgICAgICBkc3RfY29sb3IgPSBGWEFSR0JfVE9ESUIoY29sb3IpOw0KKyAgICB9DQorICAgIEZYX0xQQllURSBjb2xvcl9wID0gKEZYX0xQQllURSkmZHN0X2NvbG9yOw0KKyAgICBpZiAocEljY1RyYW5zZm9ybSAmJiBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpICYmIENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpKSB7DQorICAgICAgICBJQ29kZWNfSWNjTW9kdWxlKiBwSWNjTW9kdWxlID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCk7DQorICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBjb2xvcl9wLCBjb2xvcl9wLCAxKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChhbHBoYV9mbGFnID4+IDggJiYgIUlzQ215a0ltYWdlKCkpDQorICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IxKEZYU1lTX0dldENWYWx1ZShjb2xvciksIEZYU1lTX0dldE1WYWx1ZShjb2xvciksIEZYU1lTX0dldFlWYWx1ZShjb2xvciksIEZYU1lTX0dldEtWYWx1ZShjb2xvciksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yX3BbMl0sIGNvbG9yX3BbMV0sIGNvbG9yX3BbMF0pOw0KKyAgICAgICAgZWxzZSBpZiAoIShhbHBoYV9mbGFnID4+IDgpICYmIElzQ215a0ltYWdlKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoIUlzQ215a0ltYWdlKCkpIHsNCisgICAgICAgIGNvbG9yX3BbM10gPSAoRlhfQllURSlhbHBoYTsNCisgICAgfQ0KKyAgICBpZiAoR2V0Rm9ybWF0KCkgPT0gRlhESUJfQXJnYikgew0KKyAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICBGWF9EV09SRCogZGVzdF9wb3MgPSAoRlhfRFdPUkQqKShtX3BCdWZmZXIgKyAoZGVzdF90b3AgKyByb3cpICogbV9QaXRjaCArIGRlc3RfbGVmdCAqIDQpOw0KKyAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwTWFzay0+R2V0U2NhbmxpbmUoc3JjX3RvcCArIHJvdyk7DQorICAgICAgICAgICAgaWYgKHNyY19icHAgPT0gMSkgew0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2JpdHBvcyA9IHNyY19sZWZ0ICsgY29sOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19zY2FuW3NyY19iaXRwb3MgLyA4XSAmICgxIDw8ICg3IC0gc3JjX2JpdHBvcyAlIDgpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3BvcyA9IGRzdF9jb2xvcjsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfcG9zID0gMDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zICsrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gc3JjX2xlZnQ7DQorICAgICAgICAgICAgICAgIGRzdF9jb2xvciA9IEZYQVJHQl9UT0RJQihkc3RfY29sb3IpOw0KKyAgICAgICAgICAgICAgICBkc3RfY29sb3IgJj0gMHhmZmZmZmY7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYQVJHQl9TRVRESUIoZGVzdF9wb3MrKywgZHN0X2NvbG9yIHwgKChhbHBoYSAqICgqc3JjX3NjYW4rKykgLyAyNTUpIDw8IDI0KSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpbnQgY29tcHMgPSBtX2JwcCAvIDg7DQorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X2NvbG9yX3BvcyA9IG1fcEJ1ZmZlciArIChkZXN0X3RvcCArIHJvdykgKiBtX1BpdGNoICsgZGVzdF9sZWZ0ICogY29tcHM7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3RfYWxwaGFfcG9zID0gKEZYX0xQQllURSltX3BBbHBoYU1hc2stPkdldFNjYW5saW5lKGRlc3RfdG9wICsgcm93KSArIGRlc3RfbGVmdDsNCisgICAgICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gcE1hc2stPkdldFNjYW5saW5lKHNyY190b3AgKyByb3cpOw0KKyAgICAgICAgICAgIGlmIChzcmNfYnBwID09IDEpIHsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IHNyY19iaXRwb3MgPSBzcmNfbGVmdCArIGNvbDsNCisgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfc2NhbltzcmNfYml0cG9zIC8gOF0gJiAoMSA8PCAoNyAtIHNyY19iaXRwb3MgJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X2NvbG9yX3BvcywgY29sb3JfcCwgY29tcHMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X2FscGhhX3BvcyA9IDB4ZmY7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX21lbXNldDMyKGRlc3RfY29sb3JfcG9zLCAwLCBjb21wcyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfcG9zID0gMDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3RfY29sb3JfcG9zICs9IGNvbXBzOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9hbHBoYV9wb3MgKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSBzcmNfbGVmdDsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgd2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIoZGVzdF9jb2xvcl9wb3MsIGNvbG9yX3AsIGNvbXBzKTsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfY29sb3JfcG9zICs9IGNvbXBzOw0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3RfYWxwaGFfcG9zKysgPSAoYWxwaGEgKiAoKnNyY19zY2FuKyspIC8gMjU1KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorI2VuZGlmDQordm9pZCBDRlhfRElCU291cmNlOjpDb3B5UGFsZXR0ZShjb25zdCBGWF9EV09SRCogcFNyYywgRlhfRFdPUkQgc2l6ZSkNCit7DQorICAgIGlmIChwU3JjID09IE5VTEwgfHwgR2V0QlBQKCkgPiA4KSB7DQorICAgICAgICBpZiAobV9wUGFsZXR0ZSkgew0KKyAgICAgICAgICAgIEZYX0ZyZWUobV9wUGFsZXR0ZSk7DQorICAgICAgICB9DQorICAgICAgICBtX3BQYWxldHRlID0gTlVMTDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX0RXT1JEIHBhbF9zaXplID0gMSA8PCBHZXRCUFAoKTsNCisgICAgICAgIGlmIChtX3BQYWxldHRlID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX3BQYWxldHRlID0gRlhfQWxsb2MoRlhfRFdPUkQsIHBhbF9zaXplKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghbV9wUGFsZXR0ZSkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwYWxfc2l6ZSA+IHNpemUpIHsNCisgICAgICAgICAgICBwYWxfc2l6ZSA9IHNpemU7DQorICAgICAgICB9DQorICAgICAgICBGWFNZU19tZW1jcHkzMihtX3BQYWxldHRlLCBwU3JjLCBwYWxfc2l6ZSAqIHNpemVvZihGWF9EV09SRCkpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0RJQlNvdXJjZTo6R2V0UGFsZXR0ZShGWF9EV09SRCogcGFsLCBpbnQgYWxwaGEpIGNvbnN0DQorew0KKyAgICBBU1NFUlQoR2V0QlBQKCkgPD0gOCAmJiAhSXNDbXlrSW1hZ2UoKSk7DQorICAgIGlmIChHZXRCUFAoKSA9PSAxKSB7DQorICAgICAgICBwYWxbMF0gPSAoKG1fcFBhbGV0dGUgPyBtX3BQYWxldHRlWzBdIDogMHhmZjAwMDAwMCkgJiAweGZmZmZmZikgfCAoYWxwaGEgPDwgMjQpOw0KKyAgICAgICAgcGFsWzFdID0gKChtX3BQYWxldHRlID8gbV9wUGFsZXR0ZVsxXSA6IDB4ZmZmZmZmZmYpICYgMHhmZmZmZmYpIHwgKGFscGhhIDw8IDI0KTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wUGFsZXR0ZSkgew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICBwYWxbaV0gPSAobV9wUGFsZXR0ZVtpXSAmIDB4MDBmZmZmZmYpIHwgKGFscGhhIDw8IDI0KTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgcGFsW2ldID0gKGkgKiAweDEwMTAxKSB8IChhbHBoYSA8PCAyNCk7DQorICAgICAgICB9DQorICAgIH0NCit9DQorQ0ZYX0RJQml0bWFwKiBDRlhfRElCU291cmNlOjpHZXRBbHBoYU1hc2soY29uc3QgRlhfUkVDVCogcENsaXApIGNvbnN0DQorew0KKyAgICBBU1NFUlQoR2V0Rm9ybWF0KCkgPT0gRlhESUJfQXJnYik7DQorICAgIEZYX1JFQ1QgcmVjdCgwLCAwLCBtX1dpZHRoLCBtX0hlaWdodCk7DQorICAgIGlmIChwQ2xpcCkgew0KKyAgICAgICAgcmVjdC5JbnRlcnNlY3QoKnBDbGlwKTsNCisgICAgICAgIGlmIChyZWN0LklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIENGWF9ESUJpdG1hcCogcE1hc2sgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBpZiAoIXBNYXNrKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoIXBNYXNrLT5DcmVhdGUocmVjdC5XaWR0aCgpLCByZWN0LkhlaWdodCgpLCBGWERJQl84YnBwTWFzaykpIHsNCisgICAgICAgIGRlbGV0ZSBwTWFzazsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGZvciAoaW50IHJvdyA9IHJlY3QudG9wOyByb3cgPCByZWN0LmJvdHRvbTsgcm93ICsrKSB7DQorICAgICAgICBGWF9MUENCWVRFIHNyY19zY2FuID0gR2V0U2NhbmxpbmUocm93KSArIHJlY3QubGVmdCAqIDQgKyAzOw0KKyAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IChGWF9MUEJZVEUpcE1hc2stPkdldFNjYW5saW5lKHJvdyAtIHJlY3QudG9wKTsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IHJlY3QubGVmdDsgY29sIDwgcmVjdC5yaWdodDsgY29sICsrKSB7DQorICAgICAgICAgICAgKmRlc3Rfc2NhbiArKyA9ICpzcmNfc2NhbjsNCisgICAgICAgICAgICBzcmNfc2NhbiArPSA0Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBwTWFzazsNCit9DQorRlhfQk9PTCBDRlhfRElCU291cmNlOjpDb3B5QWxwaGFNYXNrKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBBbHBoYU1hc2ssIGNvbnN0IEZYX1JFQ1QqIHBDbGlwKQ0KK3sNCisgICAgaWYgKCFIYXNBbHBoYSgpIHx8IEdldEZvcm1hdCgpID09IEZYRElCX0FyZ2IpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocEFscGhhTWFzaykgew0KKyAgICAgICAgRlhfUkVDVCByZWN0KDAsIDAsIHBBbHBoYU1hc2stPm1fV2lkdGgsIHBBbHBoYU1hc2stPm1fSGVpZ2h0KTsNCisgICAgICAgIGlmIChwQ2xpcCkgew0KKyAgICAgICAgICAgIHJlY3QuSW50ZXJzZWN0KCpwQ2xpcCk7DQorICAgICAgICAgICAgaWYgKHJlY3QuSXNFbXB0eSgpIHx8IHJlY3QuV2lkdGgoKSAhPSBtX1dpZHRoIHx8IHJlY3QuSGVpZ2h0KCkgIT0gbV9IZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKHBBbHBoYU1hc2stPm1fV2lkdGggIT0gbV9XaWR0aCB8fCBwQWxwaGFNYXNrLT5tX0hlaWdodCAhPSBtX0hlaWdodCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9IZWlnaHQ7IHJvdyArKykNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMigodm9pZCopbV9wQWxwaGFNYXNrLT5HZXRTY2FubGluZShyb3cpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBbHBoYU1hc2stPkdldFNjYW5saW5lKHJvdyArIHJlY3QudG9wKSArIHJlY3QubGVmdCwgbV9wQWxwaGFNYXNrLT5tX1BpdGNoKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcEFscGhhTWFzay0+Q2xlYXIoMHhmZjAwMDAwMCk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2NvbnN0IGludCBnX0NoYW5uZWxPZmZzZXRbXSA9IHswLCAyLCAxLCAwLCAwLCAxLCAyLCAzLCAzfTsNCitGWF9CT09MIENGWF9ESUJpdG1hcDo6TG9hZENoYW5uZWwoRlhESUJfQ2hhbm5lbCBkZXN0Q2hhbm5lbCwgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCwgRlhESUJfQ2hhbm5lbCBzcmNDaGFubmVsKQ0KK3sNCisgICAgaWYgKG1fcEJ1ZmZlciA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ0ZYX0RJQlNvdXJjZSogcFNyY0Nsb25lID0gKENGWF9ESUJTb3VyY2UqKXBTcmNCaXRtYXA7DQorICAgIENGWF9ESUJpdG1hcCogcERzdCA9IHRoaXM7DQorICAgIGludCBkZXN0T2Zmc2V0LCBzcmNPZmZzZXQ7DQorICAgIGlmIChzcmNDaGFubmVsID09IEZYRElCX0FscGhhKSB7DQorICAgICAgICBpZiAoIXBTcmNCaXRtYXAtPkhhc0FscGhhKCkgJiYgIXBTcmNCaXRtYXAtPklzQWxwaGFNYXNrKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFNyY0JpdG1hcC0+R2V0QlBQKCkgPT0gMSkgew0KKyAgICAgICAgICAgIHBTcmNDbG9uZSA9IHBTcmNCaXRtYXAtPkNsb25lQ29udmVydChGWERJQl84YnBwTWFzayk7DQorICAgICAgICAgICAgaWYgKHBTcmNDbG9uZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZihwU3JjQml0bWFwLT5HZXRGb3JtYXQoKSA9PSBGWERJQl9BcmdiKSB7DQorICAgICAgICAgICAgc3JjT2Zmc2V0ID0gMzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgc3JjT2Zmc2V0ID0gMDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChwU3JjQml0bWFwLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBTcmNCaXRtYXAtPkdldEJQUCgpIDwgMjQpIHsNCisgICAgICAgICAgICBpZiAocFNyY0JpdG1hcC0+SXNDbXlrSW1hZ2UoKSkgew0KKyAgICAgICAgICAgICAgICBwU3JjQ2xvbmUgPSBwU3JjQml0bWFwLT5DbG9uZUNvbnZlcnQoKEZYRElCX0Zvcm1hdCkoKHBTcmNCaXRtYXAtPkdldEZvcm1hdCgpICYgMHhmZjAwKSB8IDB4MjApKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwU3JjQ2xvbmUgPSBwU3JjQml0bWFwLT5DbG9uZUNvbnZlcnQoKEZYRElCX0Zvcm1hdCkoKHBTcmNCaXRtYXAtPkdldEZvcm1hdCgpICYgMHhmZjAwKSB8IDB4MTgpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKHBTcmNDbG9uZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBzcmNPZmZzZXQgPSBnX0NoYW5uZWxPZmZzZXRbc3JjQ2hhbm5lbF07DQorICAgIH0NCisgICAgaWYgKGRlc3RDaGFubmVsID09IEZYRElCX0FscGhhKSB7DQorICAgICAgICBpZiAoSXNBbHBoYU1hc2soKSkgew0KKyAgICAgICAgICAgIGlmKCFDb252ZXJ0Rm9ybWF0KEZYRElCXzhicHBNYXNrKSkgew0KKyAgICAgICAgICAgICAgICBpZiAocFNyY0Nsb25lICE9IHBTcmNCaXRtYXApIHsNCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwU3JjQ2xvbmU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBkZXN0T2Zmc2V0ID0gMDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZGVzdE9mZnNldCA9IDA7DQorICAgICAgICAgICAgaWYoIUNvbnZlcnRGb3JtYXQoSXNDbXlrSW1hZ2UoKSA/IEZYRElCX0NteWthIDogRlhESUJfQXJnYikpIHsNCisgICAgICAgICAgICAgICAgaWYgKHBTcmNDbG9uZSAhPSBwU3JjQml0bWFwKSB7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgcFNyY0Nsb25lOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKEdldEZvcm1hdCgpID09IEZYRElCX0FyZ2IpIHsNCisgICAgICAgICAgICAgICAgZGVzdE9mZnNldCA9IDM7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKElzQWxwaGFNYXNrKCkpIHsNCisgICAgICAgICAgICBpZiAocFNyY0Nsb25lICE9IHBTcmNCaXRtYXApIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIHBTcmNDbG9uZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKEdldEJQUCgpIDwgMjQpIHsNCisgICAgICAgICAgICBpZiAoSGFzQWxwaGEoKSkgew0KKyAgICAgICAgICAgICAgICBpZiAoIUNvbnZlcnRGb3JtYXQoSXNDbXlrSW1hZ2UoKSA/IEZYRElCX0NteWthIDogRlhESUJfQXJnYikpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwU3JjQ2xvbmUgIT0gcFNyY0JpdG1hcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwU3JjQ2xvbmU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2UNCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fQVBQTEVfDQorICAgICAgICAgICAgICAgIGlmICghQ29udmVydEZvcm1hdChJc0NteWtJbWFnZSgpID8gRlhESUJfQ215ayA6IEZYRElCX1JnYjMyKSkgew0KKyNlbHNlDQorICAgICAgICAgICAgICAgIGlmICghQ29udmVydEZvcm1hdChJc0NteWtJbWFnZSgpID8gRlhESUJfQ215ayA6IEZYRElCX1JnYikpIHsNCisjZW5kaWYNCisgICAgICAgICAgICAgICAgICAgIGlmIChwU3JjQ2xvbmUgIT0gcFNyY0JpdG1hcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwU3JjQ2xvbmU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGRlc3RPZmZzZXQgPSBnX0NoYW5uZWxPZmZzZXRbZGVzdENoYW5uZWxdOw0KKyAgICB9DQorICAgIGlmIChzcmNDaGFubmVsID09IEZYRElCX0FscGhhICYmIHBTcmNDbG9uZS0+bV9wQWxwaGFNYXNrKSB7DQorICAgICAgICBDRlhfRElCaXRtYXAqIHBBbHBoYU1hc2sgPSBwU3JjQ2xvbmUtPm1fcEFscGhhTWFzazsNCisgICAgICAgIGlmIChwU3JjQ2xvbmUtPkdldFdpZHRoKCkgIT0gbV9XaWR0aCB8fCBwU3JjQ2xvbmUtPkdldEhlaWdodCgpICE9IG1fSGVpZ2h0KSB7DQorICAgICAgICAgICAgaWYgKHBBbHBoYU1hc2spIHsNCisgICAgICAgICAgICAgICAgcEFscGhhTWFzayA9IHBBbHBoYU1hc2stPlN0cmV0Y2hUbyhtX1dpZHRoLCBtX0hlaWdodCk7DQorICAgICAgICAgICAgICAgIGlmIChwQWxwaGFNYXNrID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwU3JjQ2xvbmUgIT0gcFNyY0JpdG1hcCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwU3JjQ2xvbmU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAocFNyY0Nsb25lICE9IHBTcmNCaXRtYXApIHsNCisgICAgICAgICAgICBwU3JjQ2xvbmUtPm1fcEFscGhhTWFzayA9IE5VTEw7DQorICAgICAgICAgICAgZGVsZXRlIHBTcmNDbG9uZTsNCisgICAgICAgIH0NCisgICAgICAgIHBTcmNDbG9uZSA9IHBBbHBoYU1hc2s7DQorICAgICAgICBzcmNPZmZzZXQgPSAwOw0KKyAgICB9IGVsc2UgaWYgKHBTcmNDbG9uZS0+R2V0V2lkdGgoKSAhPSBtX1dpZHRoIHx8IHBTcmNDbG9uZS0+R2V0SGVpZ2h0KCkgIT0gbV9IZWlnaHQpIHsNCisgICAgICAgIENGWF9ESUJpdG1hcCogcFNyY01hdGNoZWQgPSBwU3JjQ2xvbmUtPlN0cmV0Y2hUbyhtX1dpZHRoLCBtX0hlaWdodCk7DQorICAgICAgICBpZiAocFNyY0Nsb25lICE9IHBTcmNCaXRtYXApIHsNCisgICAgICAgICAgICBkZWxldGUgcFNyY0Nsb25lOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBTcmNNYXRjaGVkID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBwU3JjQ2xvbmUgPSBwU3JjTWF0Y2hlZDsNCisgICAgfQ0KKyAgICBpZiAoZGVzdENoYW5uZWwgPT0gRlhESUJfQWxwaGEgJiYgbV9wQWxwaGFNYXNrKSB7DQorICAgICAgICBwRHN0ID0gbV9wQWxwaGFNYXNrOw0KKyAgICAgICAgZGVzdE9mZnNldCA9IDA7DQorICAgIH0NCisgICAgaW50IHNyY0J5dGVzID0gcFNyY0Nsb25lLT5HZXRCUFAoKSAvIDg7DQorICAgIGludCBkZXN0Qnl0ZXMgPSBwRHN0LT5HZXRCUFAoKSAvIDg7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fSGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgIEZYX0xQQllURSBkZXN0X3BvcyA9IChGWF9MUEJZVEUpcERzdC0+R2V0U2NhbmxpbmUocm93KSArIGRlc3RPZmZzZXQ7DQorICAgICAgICBGWF9MUENCWVRFIHNyY19wb3MgPSBwU3JjQ2xvbmUtPkdldFNjYW5saW5lKHJvdykgKyBzcmNPZmZzZXQ7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1dpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAqZGVzdF9wb3MgPSAqc3JjX3BvczsNCisgICAgICAgICAgICBkZXN0X3BvcyArPSBkZXN0Qnl0ZXM7DQorICAgICAgICAgICAgc3JjX3BvcyArPSBzcmNCeXRlczsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAocFNyY0Nsb25lICE9IHBTcmNCaXRtYXAgJiYgcFNyY0Nsb25lICE9IHBTcmNCaXRtYXAtPm1fcEFscGhhTWFzaykgew0KKyAgICAgICAgZGVsZXRlIHBTcmNDbG9uZTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDRlhfRElCaXRtYXA6OkxvYWRDaGFubmVsKEZYRElCX0NoYW5uZWwgZGVzdENoYW5uZWwsIGludCB2YWx1ZSkNCit7DQorICAgIGlmIChtX3BCdWZmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGludCBkZXN0T2Zmc2V0Ow0KKyAgICBpZiAoZGVzdENoYW5uZWwgPT0gRlhESUJfQWxwaGEpIHsNCisgICAgICAgIGlmIChJc0FscGhhTWFzaygpKSB7DQorICAgICAgICAgICAgaWYoIUNvbnZlcnRGb3JtYXQoRlhESUJfOGJwcE1hc2spKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGVzdE9mZnNldCA9IDA7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGRlc3RPZmZzZXQgPSAwOw0KKyAgICAgICAgICAgIGlmKCFDb252ZXJ0Rm9ybWF0KElzQ215a0ltYWdlKCkgPyBGWERJQl9DbXlrYSA6IEZYRElCX0FyZ2IpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKEdldEZvcm1hdCgpID09IEZYRElCX0FyZ2IpIHsNCisgICAgICAgICAgICAgICAgZGVzdE9mZnNldCA9IDM7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKElzQWxwaGFNYXNrKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAoR2V0QlBQKCkgPCAyNCkgew0KKyAgICAgICAgICAgIGlmIChIYXNBbHBoYSgpKSB7DQorICAgICAgICAgICAgICAgIGlmICghQ29udmVydEZvcm1hdChJc0NteWtJbWFnZSgpID8gRlhESUJfQ215a2EgOiBGWERJQl9BcmdiKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlDQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXw0KKyAgICAgICAgICAgICAgICBpZiAoIUNvbnZlcnRGb3JtYXQoSXNDbXlrSW1hZ2UoKSA/IEZYRElCX0NteWsgOiBGWERJQl9SZ2IpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisjZWxzZQ0KKyAgICAgICAgICAgICAgICBpZiAoIUNvbnZlcnRGb3JtYXQoSXNDbXlrSW1hZ2UoKSA/IEZYRElCX0NteWsgOiBGWERJQl9SZ2IzMikpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVzdE9mZnNldCA9IGdfQ2hhbm5lbE9mZnNldFtkZXN0Q2hhbm5lbF07DQorICAgIH0NCisgICAgaW50IEJwcCA9IEdldEJQUCgpIC8gODsNCisgICAgaWYgKEJwcCA9PSAxKSB7DQorICAgICAgICBGWFNZU19tZW1zZXQ4KG1fcEJ1ZmZlciwgdmFsdWUsIG1fSGVpZ2h0ICogbV9QaXRjaCk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAoZGVzdENoYW5uZWwgPT0gRlhESUJfQWxwaGEgJiYgbV9wQWxwaGFNYXNrKSB7DQorICAgICAgICBGWFNZU19tZW1zZXQ4KG1fcEFscGhhTWFzay0+R2V0QnVmZmVyKCksIHZhbHVlLCBtX3BBbHBoYU1hc2stPkdldEhlaWdodCgpKm1fcEFscGhhTWFzay0+R2V0UGl0Y2goKSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX0hlaWdodDsgcm93ICsrKSB7DQorICAgICAgICBGWF9MUEJZVEUgc2Nhbl9saW5lID0gbV9wQnVmZmVyICsgcm93ICogbV9QaXRjaCArIGRlc3RPZmZzZXQ7DQorICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1dpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAqc2Nhbl9saW5lID0gdmFsdWU7DQorICAgICAgICAgICAgc2Nhbl9saW5lICs9IEJwcDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDRlhfRElCaXRtYXA6Ok11bHRpcGx5QWxwaGEoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyY0JpdG1hcCkNCit7DQorICAgIGlmIChtX3BCdWZmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEFTU0VSVChwU3JjQml0bWFwLT5Jc0FscGhhTWFzaygpKTsNCisgICAgaWYgKCFwU3JjQml0bWFwLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKCFJc0FscGhhTWFzaygpICYmICFIYXNBbHBoYSgpKSB7DQorICAgICAgICByZXR1cm4gTG9hZENoYW5uZWwoRlhESUJfQWxwaGEsIHBTcmNCaXRtYXAsIEZYRElCX0FscGhhKTsNCisgICAgfQ0KKyAgICBDRlhfRElCaXRtYXAqIHBTcmNDbG9uZSA9IChDRlhfRElCaXRtYXAqKXBTcmNCaXRtYXA7DQorICAgIGlmIChwU3JjQml0bWFwLT5HZXRXaWR0aCgpICE9IG1fV2lkdGggfHwgcFNyY0JpdG1hcC0+R2V0SGVpZ2h0KCkgIT0gbV9IZWlnaHQpIHsNCisgICAgICAgIHBTcmNDbG9uZSA9IHBTcmNCaXRtYXAtPlN0cmV0Y2hUbyhtX1dpZHRoLCBtX0hlaWdodCk7DQorICAgICAgICBBU1NFUlQocFNyY0Nsb25lICE9IE5VTEwpOw0KKyAgICAgICAgaWYgKHBTcmNDbG9uZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChJc0FscGhhTWFzaygpKSB7DQorICAgICAgICBpZighQ29udmVydEZvcm1hdChGWERJQl84YnBwTWFzaykpIHsNCisgICAgICAgICAgICBpZiAocFNyY0Nsb25lICE9IHBTcmNCaXRtYXApIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIHBTcmNDbG9uZTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9IZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBtX3BCdWZmZXIgKyBtX1BpdGNoICogcm93Ow0KKyAgICAgICAgICAgIEZYX0xQQllURSBzcmNfc2NhbiA9IHBTcmNDbG9uZS0+bV9wQnVmZmVyICsgcFNyY0Nsb25lLT5tX1BpdGNoICogcm93Ow0KKyAgICAgICAgICAgIGlmIChwU3JjQ2xvbmUtPkdldEJQUCgpID09IDEpIHsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9XaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoISgoMSA8PCAoNyAtIGNvbCAlIDgpKSAmIHNyY19zY2FuW2NvbCAvIDhdKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2Nhbltjb2xdID0gMDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9ICgqZGVzdF9zY2FuKSAqIHNyY19zY2FuW2NvbF0gLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZihHZXRGb3JtYXQoKSA9PSBGWERJQl9BcmdiKSB7DQorICAgICAgICAgICAgaWYgKHBTcmNDbG9uZS0+R2V0QlBQKCkgPT0gMSkgew0KKyAgICAgICAgICAgICAgICBpZiAocFNyY0Nsb25lICE9IHBTcmNCaXRtYXApIHsNCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwU3JjQ2xvbmU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX0hlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBtX3BCdWZmZXIgKyBtX1BpdGNoICogcm93ICsgMzsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIHNyY19zY2FuID0gcFNyY0Nsb25lLT5tX3BCdWZmZXIgKyBwU3JjQ2xvbmUtPm1fUGl0Y2ggKiByb3c7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9ICgqZGVzdF9zY2FuKSAqIHNyY19zY2FuW2NvbF0gLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbV9wQWxwaGFNYXNrLT5NdWx0aXBseUFscGhhKHBTcmNDbG9uZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBTcmNDbG9uZSAhPSBwU3JjQml0bWFwKSB7DQorICAgICAgICBkZWxldGUgcFNyY0Nsb25lOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9ESUJpdG1hcDo6R2V0R3JheURhdGEodm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIGlmIChtX3BCdWZmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHN3aXRjaCAoR2V0Rm9ybWF0KCkpIHsNCisgICAgICAgIGNhc2UgRlhESUJfMWJwcFJnYjogew0KKyAgICAgICAgICAgICAgICBpZiAobV9wUGFsZXR0ZSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfQllURSBncmF5WzJdOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGludCByID0gKEZYX0JZVEUpKG1fcFBhbGV0dGVbaV0gPj4gMTYpOw0KKyAgICAgICAgICAgICAgICAgICAgaW50IGcgPSAoRlhfQllURSkobV9wUGFsZXR0ZVtpXSA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgIGludCBiID0gKEZYX0JZVEUpbV9wUGFsZXR0ZVtpXTsNCisgICAgICAgICAgICAgICAgICAgIGdyYXlbaV0gPSAoRlhfQllURSlGWFJHQjJHUkFZKHIsIGcsIGIpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENGWF9ESUJpdG1hcCogcE1hc2sgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICAgICAgICAgICAgICBpZiAoIXBNYXNrKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKCFwTWFzay0+Q3JlYXRlKG1fV2lkdGgsIG1fSGVpZ2h0LCBGWERJQl84YnBwTWFzaykpIHsNCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwTWFzazsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1zZXQ4KHBNYXNrLT5HZXRCdWZmZXIoKSwgZ3JheVswXSwgcE1hc2stPkdldFBpdGNoKCkgKiBtX0hlaWdodCk7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fSGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSBzcmNfcG9zID0gbV9wQnVmZmVyICsgcm93ICogbV9QaXRjaDsNCisgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3BvcyA9IChGWF9MUEJZVEUpcE1hc2stPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1dpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX3Bvc1tjb2wgLyA4XSAmICgxIDw8ICg3IC0gY29sICUgOCkpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3BvcyA9IGdyYXlbMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zICsrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIFRha2VPdmVyKHBNYXNrKTsNCisgICAgICAgICAgICAgICAgZGVsZXRlIHBNYXNrOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIEZYRElCXzhicHBSZ2I6IHsNCisgICAgICAgICAgICAgICAgaWYgKG1fcFBhbGV0dGUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgZ3JheVsyNTZdOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IHIgPSAoRlhfQllURSkobV9wUGFsZXR0ZVtpXSA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICBpbnQgZyA9IChGWF9CWVRFKShtX3BQYWxldHRlW2ldID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgaW50IGIgPSAoRlhfQllURSltX3BQYWxldHRlW2ldOw0KKyAgICAgICAgICAgICAgICAgICAgZ3JheVtpXSA9IChGWF9CWVRFKUZYUkdCMkdSQVkociwgZywgYik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgQ0ZYX0RJQml0bWFwKiBwTWFzayA9IEZYX05FVyBDRlhfRElCaXRtYXA7DQorICAgICAgICAgICAgICAgIGlmICghcE1hc2spIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoIXBNYXNrLT5DcmVhdGUobV9XaWR0aCwgbV9IZWlnaHQsIEZYRElCXzhicHBNYXNrKSkgew0KKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBNYXNrOw0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fSGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3BvcyA9IHBNYXNrLT5HZXRCdWZmZXIoKSArIHJvdyAqIHBNYXNrLT5HZXRQaXRjaCgpOw0KKyAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIHNyY19wb3MgPSBtX3BCdWZmZXIgKyByb3cgKiBtX1BpdGNoOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9XaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3RfcG9zICsrID0gZ3JheVsqc3JjX3BvcyArK107DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgVGFrZU92ZXIocE1hc2spOw0KKyAgICAgICAgICAgICAgICBkZWxldGUgcE1hc2s7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfUmdiOiB7DQorICAgICAgICAgICAgICAgIENGWF9ESUJpdG1hcCogcE1hc2sgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICAgICAgICAgICAgICBpZiAoIXBNYXNrKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKCFwTWFzay0+Q3JlYXRlKG1fV2lkdGgsIG1fSGVpZ2h0LCBGWERJQl84YnBwTWFzaykpIHsNCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwTWFzazsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX0hlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgc3JjX3BvcyA9IG1fcEJ1ZmZlciArIHJvdyAqIG1fUGl0Y2g7DQorICAgICAgICAgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9wb3MgPSBwTWFzay0+R2V0QnVmZmVyKCkgKyByb3cgKiBwTWFzay0+R2V0UGl0Y2goKTsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3BvcyArKyA9IEZYUkdCMkdSQVkoc3JjX3Bvc1syXSwgc3JjX3Bvc1sxXSwgKnNyY19wb3MpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19wb3MgKz0gMzsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBUYWtlT3ZlcihwTWFzayk7DQorICAgICAgICAgICAgICAgIGRlbGV0ZSBwTWFzazsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGWERJQl9SZ2IzMjogew0KKyAgICAgICAgICAgICAgICBDRlhfRElCaXRtYXAqIHBNYXNrID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgICAgICAgICAgICAgaWYgKCFwTWFzaykgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGlmICghcE1hc2stPkNyZWF0ZShtX1dpZHRoLCBtX0hlaWdodCwgRlhESUJfOGJwcE1hc2spKSB7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgcE1hc2s7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9IZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIHNyY19wb3MgPSBtX3BCdWZmZXIgKyByb3cgKiBtX1BpdGNoOw0KKyAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3RfcG9zID0gcE1hc2stPkdldEJ1ZmZlcigpICsgcm93ICogcE1hc2stPkdldFBpdGNoKCk7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1dpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9wb3MgKysgPSBGWFJHQjJHUkFZKHNyY19wb3NbMl0sIHNyY19wb3NbMV0sICpzcmNfcG9zKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfcG9zICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgVGFrZU92ZXIocE1hc2spOw0KKyAgICAgICAgICAgICAgICBkZWxldGUgcE1hc2s7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9ESUJpdG1hcDo6TXVsdGlwbHlBbHBoYShpbnQgYWxwaGEpDQorew0KKyAgICBpZiAobV9wQnVmZmVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBzd2l0Y2ggKEdldEZvcm1hdCgpKSB7DQorICAgICAgICBjYXNlIEZYRElCXzFicHBNYXNrOg0KKyAgICAgICAgICAgIGlmICghQ29udmVydEZvcm1hdChGWERJQl84YnBwTWFzaykpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBNdWx0aXBseUFscGhhKGFscGhhKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfOGJwcE1hc2s6IHsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9IZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIHNjYW5fbGluZSA9IG1fcEJ1ZmZlciArIHJvdyAqIG1fUGl0Y2g7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1dpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzY2FuX2xpbmVbY29sXSA9IHNjYW5fbGluZVtjb2xdICogYWxwaGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGWERJQl9BcmdiOiB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fSGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0xQQllURSBzY2FuX2xpbmUgPSBtX3BCdWZmZXIgKyByb3cgKiBtX1BpdGNoICsgMzsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpzY2FuX2xpbmUgPSAoKnNjYW5fbGluZSkgKiBhbHBoYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzY2FuX2xpbmUgKz0gNDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGlmIChIYXNBbHBoYSgpKSB7DQorICAgICAgICAgICAgICAgIG1fcEFscGhhTWFzay0+TXVsdGlwbHlBbHBoYShhbHBoYSk7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChJc0NteWtJbWFnZSgpKSB7DQorICAgICAgICAgICAgICAgIGlmICghQ29udmVydEZvcm1hdCgoRlhESUJfRm9ybWF0KShHZXRGb3JtYXQoKSB8IDB4MDIwMCkpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9wQWxwaGFNYXNrLT5NdWx0aXBseUFscGhhKGFscGhhKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAoIUNvbnZlcnRGb3JtYXQoRlhESUJfQXJnYikpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBNdWx0aXBseUFscGhhKGFscGhhKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykgfHwgZGVmaW5lZChfRlhDT1JFX0ZFQVRVUkVfQUxMXykNCitGWF9EV09SRCBDRlhfRElCaXRtYXA6OkdldFBpeGVsKGludCB4LCBpbnQgeSkgY29uc3QNCit7DQorICAgIGlmIChtX3BCdWZmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfTFBCWVRFIHBvcyA9IG1fcEJ1ZmZlciArIHkgKiBtX1BpdGNoICsgeCAqIEdldEJQUCgpIC8gODsNCisgICAgc3dpdGNoIChHZXRGb3JtYXQoKSkgew0KKyAgICAgICAgY2FzZSBGWERJQl8xYnBwTWFzazogew0KKyAgICAgICAgICAgICAgICBpZiAoKCpwb3MpICYgKDEgPDwgKDcgLSB4ICUgOCkpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMHhmZjAwMDAwMDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIEZYRElCXzFicHBSZ2I6IHsNCisgICAgICAgICAgICAgICAgaWYgKCgqcG9zKSAmICgxIDw8ICg3IC0geCAlIDgpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fcFBhbGV0dGUgPyBtX3BQYWxldHRlWzFdIDogMHhmZmZmZmZmZjsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX3BQYWxldHRlID8gbV9wUGFsZXR0ZVswXSA6IDB4ZmYwMDAwMDA7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGWERJQl84YnBwTWFzazoNCisgICAgICAgICAgICByZXR1cm4gKCpwb3MpIDw8IDI0Ow0KKyAgICAgICAgY2FzZSBGWERJQl84YnBwUmdiOg0KKyAgICAgICAgICAgIHJldHVybiBtX3BQYWxldHRlID8gbV9wUGFsZXR0ZVsqcG9zXSA6ICgweGZmMDAwMDAwIHwgKCgqcG9zKSAqIDB4MTAxMDEpKTsNCisgICAgICAgIGNhc2UgRlhESUJfUmdiOg0KKyAgICAgICAgY2FzZSBGWERJQl9SZ2JhOg0KKyAgICAgICAgY2FzZSBGWERJQl9SZ2IzMjoNCisgICAgICAgICAgICByZXR1cm4gRlhBUkdCX0dFVERJQihwb3MpIHwgMHhmZjAwMDAwMDsNCisgICAgICAgIGNhc2UgRlhESUJfQXJnYjoNCisgICAgICAgICAgICByZXR1cm4gRlhBUkdCX0dFVERJQihwb3MpOw0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorI2VuZGlmDQordm9pZCBDRlhfRElCaXRtYXA6OlNldFBpeGVsKGludCB4LCBpbnQgeSwgRlhfRFdPUkQgY29sb3IpDQorew0KKyAgICBpZiAobV9wQnVmZmVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoeCA8IDAgfHwgeCA+PSBtX1dpZHRoIHx8IHkgPCAwIHx8IHkgPj0gbV9IZWlnaHQpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9MUEJZVEUgcG9zID0gbV9wQnVmZmVyICsgeSAqIG1fUGl0Y2ggKyB4ICogR2V0QlBQKCkgLyA4Ow0KKyAgICBzd2l0Y2ggKEdldEZvcm1hdCgpKSB7DQorICAgICAgICBjYXNlIEZYRElCXzFicHBNYXNrOg0KKyAgICAgICAgICAgIGlmIChjb2xvciA+PiAyNCkgew0KKyAgICAgICAgICAgICAgICAqcG9zIHw9IDEgPDwgKDcgLSB4ICUgOCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgKnBvcyAmPSB+KDEgPDwgKDcgLSB4ICUgOCkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfMWJwcFJnYjoNCisgICAgICAgICAgICBpZiAobV9wUGFsZXR0ZSkgew0KKyAgICAgICAgICAgICAgICBpZiAoY29sb3IgPT0gbV9wUGFsZXR0ZVsxXSkgew0KKyAgICAgICAgICAgICAgICAgICAgKnBvcyB8PSAxIDw8ICg3IC0geCAlIDgpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgKnBvcyAmPSB+KDEgPDwgKDcgLSB4ICUgOCkpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYgKGNvbG9yID09IDB4ZmZmZmZmZmYpIHsNCisgICAgICAgICAgICAgICAgICAgICpwb3MgfD0gMSA8PCAoNyAtIHggJSA4KTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICpwb3MgJj0gfigxIDw8ICg3IC0geCAlIDgpKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfOGJwcE1hc2s6DQorICAgICAgICAgICAgKnBvcyA9IChGWF9CWVRFKShjb2xvciA+PiAyNCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCXzhicHBSZ2I6IHsNCisgICAgICAgICAgICAgICAgaWYgKG1fcFBhbGV0dGUpIHsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcFBhbGV0dGVbaV0gPT0gY29sb3IpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBvcyA9IChGWF9CWVRFKWk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAqcG9zID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICpwb3MgPSBGWFJHQjJHUkFZKEZYQVJHQl9SKGNvbG9yKSwgRlhBUkdCX0coY29sb3IpLCBGWEFSR0JfQihjb2xvcikpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfUmdiOg0KKyAgICAgICAgY2FzZSBGWERJQl9SZ2IzMjogew0KKyAgICAgICAgICAgICAgICBpbnQgYWxwaGEgPSBGWEFSR0JfQShjb2xvcik7DQorICAgICAgICAgICAgICAgIHBvc1swXSA9IChGWEFSR0JfQihjb2xvcikgKiBhbHBoYSArIHBvc1swXSAqICgyNTUgLSBhbHBoYSkpIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICBwb3NbMV0gPSAoRlhBUkdCX0coY29sb3IpICogYWxwaGEgKyBwb3NbMV0gKiAoMjU1IC0gYWxwaGEpKSAvIDI1NTsNCisgICAgICAgICAgICAgICAgcG9zWzJdID0gKEZYQVJHQl9SKGNvbG9yKSAqIGFscGhhICsgcG9zWzJdICogKDI1NSAtIGFscGhhKSkgLyAyNTU7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgRlhESUJfUmdiYTogew0KKyAgICAgICAgICAgICAgICBwb3NbMF0gPSBGWEFSR0JfQihjb2xvcik7DQorICAgICAgICAgICAgICAgIHBvc1sxXSA9IEZYQVJHQl9HKGNvbG9yKTsNCisgICAgICAgICAgICAgICAgcG9zWzJdID0gRlhBUkdCX1IoY29sb3IpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNlIEZYRElCX0FyZ2I6DQorICAgICAgICAgICAgRlhBUkdCX1NFVERJQihwb3MsIGNvbG9yKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCit9DQordm9pZCBDRlhfRElCaXRtYXA6OkRvd25TYW1wbGVTY2FubGluZShpbnQgbGluZSwgRlhfTFBCWVRFIGRlc3Rfc2NhbiwgaW50IGRlc3RfYnBwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIEZYX0JPT0wgYkZsaXBYLCBpbnQgY2xpcF9sZWZ0LCBpbnQgY2xpcF93aWR0aCkgY29uc3QNCit7DQorICAgIGlmIChtX3BCdWZmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGludCBzcmNfQnBwID0gbV9icHAgLyA4Ow0KKyAgICBGWF9MUEJZVEUgc2NhbmxpbmUgPSBtX3BCdWZmZXIgKyBsaW5lICogbV9QaXRjaDsNCisgICAgaWYgKHNyY19CcHAgPT0gMCkgew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjbGlwX3dpZHRoOyBpICsrKSB7DQorICAgICAgICAgICAgRlhfRFdPUkQgZGVzdF94ID0gY2xpcF9sZWZ0ICsgaTsNCisgICAgICAgICAgICBGWF9EV09SRCBzcmNfeCA9IGRlc3RfeCAqIG1fV2lkdGggLyBkZXN0X3dpZHRoOw0KKyAgICAgICAgICAgIGlmIChiRmxpcFgpIHsNCisgICAgICAgICAgICAgICAgc3JjX3ggPSBtX1dpZHRoIC0gc3JjX3ggLSAxOw0KKyAgICAgICAgICAgIH0NCisjaWZkZWYgRk9YSVRfQ0hST01FX0JVSUxEDQorICAgICAgICAgICAgc3JjX3ggJT0gbV9XaWR0aDsNCisjZW5kaWYNCisgICAgICAgICAgICBkZXN0X3NjYW5baV0gPSAoc2NhbmxpbmVbc3JjX3ggLyA4XSAmICgxIDw8ICg3IC0gc3JjX3ggJSA4KSkpID8gMjU1IDogMDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChzcmNfQnBwID09IDEpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2xpcF93aWR0aDsgaSArKykgew0KKyAgICAgICAgICAgIEZYX0RXT1JEIGRlc3RfeCA9IGNsaXBfbGVmdCArIGk7DQorICAgICAgICAgICAgRlhfRFdPUkQgc3JjX3ggPSBkZXN0X3ggKiBtX1dpZHRoIC8gZGVzdF93aWR0aDsNCisgICAgICAgICAgICBpZiAoYkZsaXBYKSB7DQorICAgICAgICAgICAgICAgIHNyY194ID0gbV9XaWR0aCAtIHNyY194IC0gMTsNCisgICAgICAgICAgICB9DQorI2lmZGVmIEZPWElUX0NIUk9NRV9CVUlMRA0KKyAgICAgICAgICAgIHNyY194ICU9IG1fV2lkdGg7DQorI2VuZGlmDQorICAgICAgICAgICAgaW50IGRlc3RfcG9zID0gaTsNCisgICAgICAgICAgICBpZiAobV9wUGFsZXR0ZSkgew0KKyAgICAgICAgICAgICAgICBpZiAoIUlzQ215a0ltYWdlKCkpIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zICo9IDM7DQorICAgICAgICAgICAgICAgICAgICBGWF9BUkdCIGFyZ2IgPSBtX3BQYWxldHRlW3NjYW5saW5lW3NyY194XV07DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3NdID0gRlhBUkdCX0IoYXJnYik7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3MgKyAxXSA9IEZYQVJHQl9HKGFyZ2IpOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfcG9zICsgMl0gPSBGWEFSR0JfUihhcmdiKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zICo9IDQ7DQorICAgICAgICAgICAgICAgICAgICBGWF9DTVlLIGNteWsgPSBtX3BQYWxldHRlW3NjYW5saW5lW3NyY194XV07DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3NdID0gRlhTWVNfR2V0Q1ZhbHVlKGNteWspOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfcG9zICsgMV0gPSBGWFNZU19HZXRNVmFsdWUoY215ayk7DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bZGVzdF9wb3MgKyAyXSA9IEZYU1lTX0dldFlWYWx1ZShjbXlrKTsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbltkZXN0X3BvcyArIDNdID0gRlhTWVNfR2V0S1ZhbHVlKGNteWspOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfcG9zXSA9IHNjYW5saW5lW3NyY194XTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNsaXBfd2lkdGg7IGkgKyspIHsNCisgICAgICAgICAgICBGWF9EV09SRCBkZXN0X3ggPSBjbGlwX2xlZnQgKyBpOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIHNyY194ID0gYkZsaXBYID8gKG1fV2lkdGggLSBkZXN0X3ggKiBtX1dpZHRoIC8gZGVzdF93aWR0aCAtIDEpICogc3JjX0JwcCA6IChkZXN0X3ggKiBtX1dpZHRoIC8gZGVzdF93aWR0aCkgKiBzcmNfQnBwOw0KKyNpZmRlZiBGT1hJVF9DSFJPTUVfQlVJTEQNCisgICAgICAgICAgICBzcmNfeCAlPSBtX1dpZHRoICogc3JjX0JwcDsNCisjZW5kaWYNCisgICAgICAgICAgICBpbnQgZGVzdF9wb3MgPSBpICogc3JjX0JwcDsNCisgICAgICAgICAgICBmb3IgKGludCBiID0gMDsgYiA8IHNyY19CcHA7IGIgKyspIHsNCisgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfcG9zICsgYl0gPSBzY2FubGluZVtzcmNfeCArIGJdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KK30NCitGWF9CT09MIENGWF9ESUJpdG1hcDo6Q29udmVydENvbG9yU2NhbGUoRlhfRFdPUkQgZm9yZWNvbG9yLCBGWF9EV09SRCBiYWNrY29sb3IpDQorew0KKyAgICBBU1NFUlQoIUlzQWxwaGFNYXNrKCkpOw0KKyAgICBpZiAobV9wQnVmZmVyID09IE5VTEwgfHwgSXNBbHBoYU1hc2soKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGludCBmYywgZm0sIGZ5LCBmaywgYmMsIGJtLCBieSwgYms7DQorICAgIGludCBmciwgZmcsIGZiLCBiciwgYmcsIGJiOw0KKyAgICBGWF9CT09MIGlzQ215a0ltYWdlID0gSXNDbXlrSW1hZ2UoKTsNCisgICAgaWYgKGlzQ215a0ltYWdlKSB7DQorICAgICAgICBmYyA9IEZYU1lTX0dldENWYWx1ZShmb3JlY29sb3IpOw0KKyAgICAgICAgZm0gPSBGWFNZU19HZXRNVmFsdWUoZm9yZWNvbG9yKTsNCisgICAgICAgIGZ5ID0gRlhTWVNfR2V0WVZhbHVlKGZvcmVjb2xvcik7DQorICAgICAgICBmayA9IEZYU1lTX0dldEtWYWx1ZShmb3JlY29sb3IpOw0KKyAgICAgICAgYmMgPSBGWFNZU19HZXRDVmFsdWUoYmFja2NvbG9yKTsNCisgICAgICAgIGJtID0gRlhTWVNfR2V0TVZhbHVlKGJhY2tjb2xvcik7DQorICAgICAgICBieSA9IEZYU1lTX0dldFlWYWx1ZShiYWNrY29sb3IpOw0KKyAgICAgICAgYmsgPSBGWFNZU19HZXRLVmFsdWUoYmFja2NvbG9yKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZyID0gRlhTWVNfR2V0UlZhbHVlKGZvcmVjb2xvcik7DQorICAgICAgICBmZyA9IEZYU1lTX0dldEdWYWx1ZShmb3JlY29sb3IpOw0KKyAgICAgICAgZmIgPSBGWFNZU19HZXRCVmFsdWUoZm9yZWNvbG9yKTsNCisgICAgICAgIGJyID0gRlhTWVNfR2V0UlZhbHVlKGJhY2tjb2xvcik7DQorICAgICAgICBiZyA9IEZYU1lTX0dldEdWYWx1ZShiYWNrY29sb3IpOw0KKyAgICAgICAgYmIgPSBGWFNZU19HZXRCVmFsdWUoYmFja2NvbG9yKTsNCisgICAgfQ0KKyAgICBpZiAobV9icHAgPD0gOCkgew0KKyAgICAgICAgaWYgKGlzQ215a0ltYWdlKSB7DQorICAgICAgICAgICAgaWYgKGZvcmVjb2xvciA9PSAweGZmICYmIGJhY2tjb2xvciA9PSAwICYmIG1fcFBhbGV0dGUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKGZvcmVjb2xvciA9PSAwICYmIGJhY2tjb2xvciA9PSAweGZmZmZmZiAmJiBtX3BQYWxldHRlID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BQYWxldHRlID09IE5VTEwpIHsNCisgICAgICAgICAgICBCdWlsZFBhbGV0dGUoKTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBzaXplID0gMSA8PCBtX2JwcDsNCisgICAgICAgIGlmIChpc0NteWtJbWFnZSkgew0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgew0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGIsIGcsIHI7DQorICAgICAgICAgICAgICAgIEFkb2JlQ01ZS190b19zUkdCMShGWFNZU19HZXRDVmFsdWUobV9wUGFsZXR0ZVtpXSksIEZYU1lTX0dldE1WYWx1ZShtX3BQYWxldHRlW2ldKSwgRlhTWVNfR2V0WVZhbHVlKG1fcFBhbGV0dGVbaV0pLCBGWFNZU19HZXRLVmFsdWUobV9wUGFsZXR0ZVtpXSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLCBnLCBiKTsNCisgICAgICAgICAgICAgICAgaW50IGdyYXkgPSAyNTUgLSBGWFJHQjJHUkFZKHIsIGcsIGIpOw0KKyAgICAgICAgICAgICAgICBtX3BQYWxldHRlW2ldID0gQ215a0VuY29kZShiYyArIChmYyAtIGJjKSAqIGdyYXkgLyAyNTUsIGJtICsgKGZtIC0gYm0pICogZ3JheSAvIDI1NSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgKyAoZnkgLSBieSkgKiBncmF5IC8gMjU1LCBiayArIChmayAtIGJrKSAqIGdyYXkgLyAyNTUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgew0KKyAgICAgICAgICAgICAgICBpbnQgZ3JheSA9IEZYUkdCMkdSQVkoRlhBUkdCX1IobV9wUGFsZXR0ZVtpXSksIEZYQVJHQl9HKG1fcFBhbGV0dGVbaV0pLCBGWEFSR0JfQihtX3BQYWxldHRlW2ldKSk7DQorICAgICAgICAgICAgICAgIG1fcFBhbGV0dGVbaV0gPSBGWEFSR0JfTUFLRSgweGZmLCBiciArIChmciAtIGJyKSAqIGdyYXkgLyAyNTUsIGJnICsgKGZnIC0gYmcpICogZ3JheSAvIDI1NSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiICsgKGZiIC0gYmIpICogZ3JheSAvIDI1NSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKGlzQ215a0ltYWdlKSB7DQorICAgICAgICBpZiAoZm9yZWNvbG9yID09IDB4ZmYgJiYgYmFja2NvbG9yID09IDB4MDApIHsNCisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX0hlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0xQQllURSBzY2FubGluZSA9IG1fcEJ1ZmZlciArIHJvdyAqIG1fUGl0Y2g7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSBiLCBnLCByOw0KKyAgICAgICAgICAgICAgICAgICAgQWRvYmVDTVlLX3RvX3NSR0IxKHNjYW5saW5lWzBdLCBzY2FubGluZVsxXSwgc2NhbmxpbmVbMl0sIHNjYW5saW5lWzNdLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIsIGcsIGIpOw0KKyAgICAgICAgICAgICAgICAgICAgKnNjYW5saW5lICsrID0gMDsNCisgICAgICAgICAgICAgICAgICAgICpzY2FubGluZSArKyA9IDA7DQorICAgICAgICAgICAgICAgICAgICAqc2NhbmxpbmUgKysgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgKnNjYW5saW5lICsrID0gMjU1IC0gRlhSR0IyR1JBWShyLCBnLCBiKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChmb3JlY29sb3IgPT0gMCAmJiBiYWNrY29sb3IgPT0gMHhmZmZmZmYpIHsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fSGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICBGWF9MUEJZVEUgc2NhbmxpbmUgPSBtX3BCdWZmZXIgKyByb3cgKiBtX1BpdGNoOw0KKyAgICAgICAgICAgIGludCBnYXAgPSBtX2JwcCAvIDggLSAyOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBpbnQgZ3JheSA9IEZYUkdCMkdSQVkoc2NhbmxpbmVbMl0sIHNjYW5saW5lWzFdLCBzY2FubGluZVswXSk7DQorICAgICAgICAgICAgICAgICpzY2FubGluZSArKyA9IGdyYXk7DQorICAgICAgICAgICAgICAgICpzY2FubGluZSArKyA9IGdyYXk7DQorICAgICAgICAgICAgICAgICpzY2FubGluZSAgICA9IGdyYXk7DQorICAgICAgICAgICAgICAgIHNjYW5saW5lICs9IGdhcDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAoaXNDbXlrSW1hZ2UpIHsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fSGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICBGWF9MUEJZVEUgc2NhbmxpbmUgPSBtX3BCdWZmZXIgKyByb3cgKiBtX1BpdGNoOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICBGWF9CWVRFIGIsIGcsIHI7DQorICAgICAgICAgICAgICAgIEFkb2JlQ01ZS190b19zUkdCMShzY2FubGluZVswXSwgc2NhbmxpbmVbMV0sIHNjYW5saW5lWzJdLCBzY2FubGluZVszXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIsIGcsIGIpOw0KKyAgICAgICAgICAgICAgICBpbnQgZ3JheSA9IDI1NSAtIEZYUkdCMkdSQVkociwgZywgYik7DQorICAgICAgICAgICAgICAgICpzY2FubGluZSArKyA9IGJjICsgKGZjIC0gYmMpICogZ3JheSAvIDI1NTsNCisgICAgICAgICAgICAgICAgKnNjYW5saW5lICsrID0gYm0gKyAoZm0gLSBibSkgKiBncmF5IC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAqc2NhbmxpbmUgKysgPSBieSArIChmeSAtIGJ5KSAqIGdyYXkgLyAyNTU7DQorICAgICAgICAgICAgICAgICpzY2FubGluZSArKyA9IGJrICsgKGZrIC0gYmspICogZ3JheSAvIDI1NTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZQ0KKyAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9IZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBzY2FubGluZSA9IG1fcEJ1ZmZlciArIHJvdyAqIG1fUGl0Y2g7DQorICAgICAgICAgICAgaW50IGdhcCA9IG1fYnBwIC8gOCAtIDI7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9XaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgIGludCBncmF5ID0gRlhSR0IyR1JBWShzY2FubGluZVsyXSwgc2NhbmxpbmVbMV0sIHNjYW5saW5lWzBdKTsNCisgICAgICAgICAgICAgICAgKnNjYW5saW5lICsrID0gYmIgKyAoZmIgLSBiYikgKiBncmF5IC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAqc2NhbmxpbmUgKysgPSBiZyArIChmZyAtIGJnKSAqIGdyYXkgLyAyNTU7DQorICAgICAgICAgICAgICAgICpzY2FubGluZSAgICA9IGJyICsgKGZyIC0gYnIpICogZ3JheSAvIDI1NTsNCisgICAgICAgICAgICAgICAgc2NhbmxpbmUgKz0gZ2FwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0RJQml0bWFwOjpEaXRoZXJGUyhjb25zdCBGWF9EV09SRCogcFBhbGV0dGUsIGludCBwYWxfc2l6ZSwgY29uc3QgRlhfUkVDVCogcFJlY3QpDQorew0KKyAgICBpZiAobV9wQnVmZmVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9icHAgIT0gOCAmJiBtX3BQYWxldHRlICE9IE5VTEwgJiYgbV9BbHBoYUZsYWcgIT0gMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX1dpZHRoIDwgNCAmJiBtX0hlaWdodCA8IDQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9SRUNUIHJlY3QoMCwgMCwgbV9XaWR0aCwgbV9IZWlnaHQpOw0KKyAgICBpZiAocFJlY3QpIHsNCisgICAgICAgIHJlY3QuSW50ZXJzZWN0KCpwUmVjdCk7DQorICAgIH0NCisgICAgRlhfQllURSB0cmFuc2xhdGVbMjU2XTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgIGludCBlcnIyID0gNjU1MzY7DQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHBhbF9zaXplOyBqICsrKSB7DQorICAgICAgICAgICAgRlhfQllURSBlbnRyeSA9IChGWF9CWVRFKXBQYWxldHRlW2pdOw0KKyAgICAgICAgICAgIGludCBlcnIgPSAoaW50KWVudHJ5IC0gaTsNCisgICAgICAgICAgICBpZiAoZXJyICogZXJyIDwgZXJyMikgew0KKyAgICAgICAgICAgICAgICBlcnIyID0gZXJyICogZXJyOw0KKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVbaV0gPSBlbnRyeTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgZm9yIChpbnQgcm93ID0gcmVjdC50b3A7IHJvdyA8IHJlY3QuYm90dG9tOyByb3cgKyspIHsNCisgICAgICAgIEZYX0xQQllURSBzY2FuID0gbV9wQnVmZmVyICsgcm93ICogbV9QaXRjaDsNCisgICAgICAgIEZYX0xQQllURSBuZXh0X3NjYW4gPSBtX3BCdWZmZXIgKyAocm93ICsgMSkgKiBtX1BpdGNoOw0KKyAgICAgICAgZm9yIChpbnQgY29sID0gcmVjdC5sZWZ0OyBjb2wgPCByZWN0LnJpZ2h0OyBjb2wgKyspIHsNCisgICAgICAgICAgICBpbnQgc3JjX3BpeGVsID0gc2Nhbltjb2xdOw0KKyAgICAgICAgICAgIGludCBkZXN0X3BpeGVsID0gdHJhbnNsYXRlW3NyY19waXhlbF07DQorICAgICAgICAgICAgc2Nhbltjb2xdID0gKEZYX0JZVEUpZGVzdF9waXhlbDsNCisgICAgICAgICAgICBpbnQgZXJyb3IgPSAtZGVzdF9waXhlbCArIHNyY19waXhlbDsNCisgICAgICAgICAgICBpZiAoY29sIDwgcmVjdC5yaWdodCAtIDEpIHsNCisgICAgICAgICAgICAgICAgaW50IHNyYyA9IHNjYW5bY29sICsgMV07DQorICAgICAgICAgICAgICAgIHNyYyArPSBlcnJvciAqIDcgLyAxNjsNCisgICAgICAgICAgICAgICAgaWYgKHNyYyA+IDI1NSkgew0KKyAgICAgICAgICAgICAgICAgICAgc2Nhbltjb2wgKyAxXSA9IDI1NTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzcmMgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICBzY2FuW2NvbCArIDFdID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHNjYW5bY29sICsgMV0gPSBzcmM7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGNvbCA8IHJlY3QucmlnaHQgLSAxICYmIHJvdyA8IHJlY3QuYm90dG9tIC0gMSkgew0KKyAgICAgICAgICAgICAgICBpbnQgc3JjID0gbmV4dF9zY2FuW2NvbCArIDFdOw0KKyAgICAgICAgICAgICAgICBzcmMgKz0gZXJyb3IgKiAxIC8gMTY7DQorICAgICAgICAgICAgICAgIGlmIChzcmMgPiAyNTUpIHsNCisgICAgICAgICAgICAgICAgICAgIG5leHRfc2Nhbltjb2wgKyAxXSA9IDI1NTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzcmMgPCAwKSB7DQorICAgICAgICAgICAgICAgICAgICBuZXh0X3NjYW5bY29sICsgMV0gPSAwOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbmV4dF9zY2FuW2NvbCArIDFdID0gc3JjOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChyb3cgPCByZWN0LmJvdHRvbSAtIDEpIHsNCisgICAgICAgICAgICAgICAgaW50IHNyYyA9IG5leHRfc2Nhbltjb2xdOw0KKyAgICAgICAgICAgICAgICBzcmMgKz0gZXJyb3IgKiA1IC8gMTY7DQorICAgICAgICAgICAgICAgIGlmIChzcmMgPiAyNTUpIHsNCisgICAgICAgICAgICAgICAgICAgIG5leHRfc2Nhbltjb2xdID0gMjU1Ow0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNyYyA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIG5leHRfc2Nhbltjb2xdID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG5leHRfc2Nhbltjb2xdID0gc3JjOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChjb2wgPiByZWN0LmxlZnQgJiYgcm93IDwgcmVjdC5ib3R0b20gLSAxKSB7DQorICAgICAgICAgICAgICAgIGludCBzcmMgPSBuZXh0X3NjYW5bY29sIC0gMV07DQorICAgICAgICAgICAgICAgIHNyYyArPSBlcnJvciAqIDMgLyAxNjsNCisgICAgICAgICAgICAgICAgaWYgKHNyYyA+IDI1NSkgew0KKyAgICAgICAgICAgICAgICAgICAgbmV4dF9zY2FuW2NvbCAtIDFdID0gMjU1Ow0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNyYyA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIG5leHRfc2Nhbltjb2wgLSAxXSA9IDA7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBuZXh0X3NjYW5bY29sIC0gMV0gPSBzcmM7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0NGWF9ESUJpdG1hcCogQ0ZYX0RJQlNvdXJjZTo6RmxpcEltYWdlKEZYX0JPT0wgYlhGbGlwLCBGWF9CT09MIGJZRmxpcCkgY29uc3QNCit7DQorICAgIENGWF9ESUJpdG1hcCogcEZsaXBwZWQgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBpZiAoIXBGbGlwcGVkKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoIXBGbGlwcGVkLT5DcmVhdGUobV9XaWR0aCwgbV9IZWlnaHQsIEdldEZvcm1hdCgpKSkgew0KKyAgICAgICAgZGVsZXRlIHBGbGlwcGVkOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcEZsaXBwZWQtPkNvcHlQYWxldHRlKG1fcFBhbGV0dGUpOw0KKyAgICBGWF9MUEJZVEUgcERlc3RCdWZmZXIgPSBwRmxpcHBlZC0+R2V0QnVmZmVyKCk7DQorICAgIGludCBCcHAgPSBtX2JwcCAvIDg7DQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fSGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBHZXRTY2FubGluZShyb3cpOw0KKyAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IHBEZXN0QnVmZmVyICsgbV9QaXRjaCAqIChiWUZsaXAgPyAobV9IZWlnaHQgLSByb3cgLSAxKSA6IHJvdyk7DQorICAgICAgICBpZiAoIWJYRmxpcCkgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIG1fUGl0Y2gpOw0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fYnBwID09IDEpIHsNCisgICAgICAgICAgICBGWFNZU19tZW1zZXQzMihkZXN0X3NjYW4sIDAsIG1fUGl0Y2gpOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykNCisgICAgICAgICAgICAgICAgaWYgKHNyY19zY2FuW2NvbCAvIDhdICYgKDEgPDwgKDcgLSBjb2wgJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X2NvbCA9IG1fV2lkdGggLSBjb2wgLSAxOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuW2Rlc3RfY29sIC8gOF0gfD0gKDEgPDwgKDcgLSBkZXN0X2NvbCAlIDgpKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBkZXN0X3NjYW4gKz0gKG1fV2lkdGggLSAxKSAqIEJwcDsNCisgICAgICAgICAgICBpZiAoQnBwID09IDEpIHsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9XaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gKnNyY19zY2FuOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuIC0tOw0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2UgaWYgKEJwcCA9PSAzKSB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gc3JjX3NjYW5bMF07DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBzcmNfc2NhblsxXTsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IHNyY19zY2FuWzJdOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuIC09IDM7DQorICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgQVNTRVJUKEJwcCA9PSA0KTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9XaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAqKEZYX0RXT1JEKilkZXN0X3NjYW4gPSAqKEZYX0RXT1JEKilzcmNfc2NhbjsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiAtPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wQWxwaGFNYXNrKSB7DQorICAgICAgICBwRGVzdEJ1ZmZlciA9IHBGbGlwcGVkLT5tX3BBbHBoYU1hc2stPkdldEJ1ZmZlcigpOw0KKyAgICAgICAgRlhfRFdPUkQgZGVzdF9waXRjaCA9IHBGbGlwcGVkLT5tX3BBbHBoYU1hc2stPkdldFBpdGNoKCk7DQorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX0hlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IG1fcEFscGhhTWFzay0+R2V0U2NhbmxpbmUocm93KTsNCisgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gcERlc3RCdWZmZXIgKyBkZXN0X3BpdGNoICogKGJZRmxpcCA/IChtX0hlaWdodCAtIHJvdyAtIDEpIDogcm93KTsNCisgICAgICAgICAgICBpZiAoIWJYRmxpcCkgew0KKyAgICAgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihkZXN0X3NjYW4sIHNyY19zY2FuLCBkZXN0X3BpdGNoKTsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAobV9XaWR0aCAtIDEpOw0KKyAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fV2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gKnNyY19zY2FuOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gLS07DQorICAgICAgICAgICAgICAgIHNyY19zY2FuICsrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcEZsaXBwZWQ7DQorfQ0KK0NGWF9ESUJFeHRyYWN0b3I6OkNGWF9ESUJFeHRyYWN0b3IoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNyYykNCit7DQorICAgIG1fcEJpdG1hcCA9IE5VTEw7DQorICAgIGlmIChwU3JjLT5HZXRCdWZmZXIoKSA9PSBOVUxMKSB7DQorICAgICAgICBtX3BCaXRtYXAgPSBwU3JjLT5DbG9uZSgpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgbV9wQml0bWFwID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgICAgIGlmICghbV9wQml0bWFwKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFtX3BCaXRtYXAtPkNyZWF0ZShwU3JjLT5HZXRXaWR0aCgpLCBwU3JjLT5HZXRIZWlnaHQoKSwgcFNyYy0+R2V0Rm9ybWF0KCksIHBTcmMtPkdldEJ1ZmZlcigpKSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBtX3BCaXRtYXA7DQorICAgICAgICAgICAgbV9wQml0bWFwID0gTlVMTDsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBtX3BCaXRtYXAtPkNvcHlQYWxldHRlKHBTcmMtPkdldFBhbGV0dGUoKSk7DQorICAgICAgICBtX3BCaXRtYXAtPkNvcHlBbHBoYU1hc2socFNyYy0+bV9wQWxwaGFNYXNrKTsNCisgICAgfQ0KK30NCitDRlhfRElCRXh0cmFjdG9yOjp+Q0ZYX0RJQkV4dHJhY3RvcigpDQorew0KKyAgICBpZiAobV9wQml0bWFwKSB7DQorICAgICAgICBkZWxldGUgbV9wQml0bWFwOw0KKyAgICB9DQorfQ0KK0NGWF9GaWx0ZXJlZERJQjo6Q0ZYX0ZpbHRlcmVkRElCKCkNCit7DQorICAgIG1fcFNjYW5saW5lID0gTlVMTDsNCisgICAgbV9wU3JjID0gTlVMTDsNCit9DQorQ0ZYX0ZpbHRlcmVkRElCOjp+Q0ZYX0ZpbHRlcmVkRElCKCkNCit7DQorICAgIGlmIChtX3BTcmMgJiYgbV9iQXV0b0Ryb3BTcmMpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BTcmM7DQorICAgIH0NCisgICAgaWYgKG1fcFNjYW5saW5lKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFNjYW5saW5lKTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9GaWx0ZXJlZERJQjo6TG9hZFNyYyhjb25zdCBDRlhfRElCU291cmNlKiBwU3JjLCBGWF9CT09MIGJBdXRvRHJvcFNyYykNCit7DQorICAgIG1fcFNyYyA9IHBTcmM7DQorICAgIG1fYkF1dG9Ecm9wU3JjID0gYkF1dG9Ecm9wU3JjOw0KKyAgICBtX1dpZHRoID0gcFNyYy0+R2V0V2lkdGgoKTsNCisgICAgbV9IZWlnaHQgPSBwU3JjLT5HZXRIZWlnaHQoKTsNCisgICAgRlhESUJfRm9ybWF0IGZvcm1hdCA9IEdldERlc3RGb3JtYXQoKTsNCisgICAgbV9icHAgPSAoRlhfQllURSlmb3JtYXQ7DQorICAgIG1fQWxwaGFGbGFnID0gKEZYX0JZVEUpKGZvcm1hdCA+PiA4KTsNCisgICAgbV9QaXRjaCA9IChtX1dpZHRoICogKGZvcm1hdCAmIDB4ZmYpICsgMzEpIC8gMzIgKiA0Ow0KKyAgICBtX3BQYWxldHRlID0gR2V0RGVzdFBhbGV0dGUoKTsNCisgICAgbV9wU2NhbmxpbmUgPSBGWF9BbGxvYyhGWF9CWVRFLCBtX1BpdGNoKTsNCit9DQorRlhfTFBDQllURSBDRlhfRmlsdGVyZWRESUI6OkdldFNjYW5saW5lKGludCBsaW5lKSBjb25zdA0KK3sNCisgICAgVHJhbnNsYXRlU2NhbmxpbmUobV9wU2NhbmxpbmUsIG1fcFNyYy0+R2V0U2NhbmxpbmUobGluZSkpOw0KKyAgICByZXR1cm4gbV9wU2NhbmxpbmU7DQorfQ0KK3ZvaWQgQ0ZYX0ZpbHRlcmVkRElCOjpEb3duU2FtcGxlU2NhbmxpbmUoaW50IGxpbmUsIEZYX0xQQllURSBkZXN0X3NjYW4sIGludCBkZXN0X2JwcCwNCisgICAgICAgIGludCBkZXN0X3dpZHRoLCBGWF9CT09MIGJGbGlwWCwgaW50IGNsaXBfbGVmdCwgaW50IGNsaXBfd2lkdGgpIGNvbnN0DQorew0KKyAgICBtX3BTcmMtPkRvd25TYW1wbGVTY2FubGluZShsaW5lLCBkZXN0X3NjYW4sIGRlc3RfYnBwLCBkZXN0X3dpZHRoLCBiRmxpcFgsIGNsaXBfbGVmdCwgY2xpcF93aWR0aCk7DQorICAgIFRyYW5zbGF0ZURvd25TYW1wbGVzKGRlc3Rfc2NhbiwgZGVzdF9zY2FuLCBjbGlwX3dpZHRoLCBkZXN0X2JwcCk7DQorfQ0KK0NGWF9JbWFnZVJlbmRlcmVyOjpDRlhfSW1hZ2VSZW5kZXJlcigpDQorew0KKyAgICBtX1N0YXR1cyA9IDA7DQorICAgIG1fcFRyYW5zZm9ybWVyID0gTlVMTDsNCisgICAgbV9iUmdiQnl0ZU9yZGVyID0gRkFMU0U7DQorICAgIG1fQmxlbmRUeXBlID0gRlhESUJfQkxFTkRfTk9STUFMOw0KK30NCitDRlhfSW1hZ2VSZW5kZXJlcjo6fkNGWF9JbWFnZVJlbmRlcmVyKCkNCit7DQorICAgIGlmIChtX3BUcmFuc2Zvcm1lcikgew0KKyAgICAgICAgZGVsZXRlIG1fcFRyYW5zZm9ybWVyOw0KKyAgICB9DQorfQ0KK2V4dGVybiBGWF9SRUNUIF9GWERJQl9Td2FwQ2xpcEJveChGWF9SRUNUJiBjbGlwLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIEZYX0JPT0wgYkZsaXBYLCBGWF9CT09MIGJGbGlwWSk7DQorRlhfQk9PTCBDRlhfSW1hZ2VSZW5kZXJlcjo6U3RhcnQoQ0ZYX0RJQml0bWFwKiBwRGV2aWNlLCBjb25zdCBDRlhfQ2xpcFJnbiogcENsaXBSZ24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNvdXJjZSwgaW50IGJpdG1hcF9hbHBoYSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBtYXNrX2NvbG9yLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGRpYl9mbGFncywgRlhfQk9PTCBiUmdiQnl0ZU9yZGVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBpbnQgYmxlbmRfdHlwZSkNCit7DQorICAgIG1fTWF0cml4ID0gKnBNYXRyaXg7DQorICAgIENGWF9GbG9hdFJlY3QgaW1hZ2VfcmVjdF9mID0gbV9NYXRyaXguR2V0VW5pdFJlY3QoKTsNCisgICAgRlhfUkVDVCBpbWFnZV9yZWN0ID0gaW1hZ2VfcmVjdF9mLkdldE91dHRlclJlY3QoKTsNCisgICAgbV9DbGlwQm94ID0gcENsaXBSZ24gPyBwQ2xpcFJnbi0+R2V0Qm94KCkgOiBGWF9SRUNUKDAsIDAsIHBEZXZpY2UtPkdldFdpZHRoKCksIHBEZXZpY2UtPkdldEhlaWdodCgpKTsNCisgICAgbV9DbGlwQm94LkludGVyc2VjdChpbWFnZV9yZWN0KTsNCisgICAgaWYgKG1fQ2xpcEJveC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX3BEZXZpY2UgPSBwRGV2aWNlOw0KKyAgICBtX3BDbGlwUmduID0gcENsaXBSZ247DQorICAgIG1fTWFza0NvbG9yID0gbWFza19jb2xvcjsNCisgICAgbV9CaXRtYXBBbHBoYSA9IGJpdG1hcF9hbHBoYTsNCisgICAgbV9NYXRyaXggPSAqcE1hdHJpeDsNCisgICAgbV9GbGFncyA9IGRpYl9mbGFnczsNCisgICAgbV9BbHBoYUZsYWcgPSBhbHBoYV9mbGFnOw0KKyAgICBtX3BJY2NUcmFuc2Zvcm0gPSBwSWNjVHJhbnNmb3JtOw0KKyAgICBtX2JSZ2JCeXRlT3JkZXIgPSBiUmdiQnl0ZU9yZGVyOw0KKyAgICBtX0JsZW5kVHlwZSA9IGJsZW5kX3R5cGU7DQorICAgIEZYX0JPT0wgcmV0ID0gVFJVRTsNCisgICAgaWYgKChGWFNZU19mYWJzKG1fTWF0cml4LmIpID49IDAuNWYgfHwgbV9NYXRyaXguYSA9PSAwKSB8fA0KKyAgICAgICAgICAgIChGWFNZU19mYWJzKG1fTWF0cml4LmMpID49IDAuNWYgfHwgbV9NYXRyaXguZCA9PSAwKSApIHsNCisgICAgICAgIGlmIChGWFNZU19mYWJzKG1fTWF0cml4LmEpIDwgRlhTWVNfZmFicyhtX01hdHJpeC5iKSAvIDIwICYmIEZYU1lTX2ZhYnMobV9NYXRyaXguZCkgPCBGWFNZU19mYWJzKG1fTWF0cml4LmMpIC8gMjAgJiYNCisgICAgICAgICAgICAgICAgRlhTWVNfZmFicyhtX01hdHJpeC5hKSA8IDAuNWYgJiYgRlhTWVNfZmFicyhtX01hdHJpeC5kKSA8IDAuNWYpIHsNCisgICAgICAgICAgICBpbnQgZGVzdF93aWR0aCA9IGltYWdlX3JlY3QuV2lkdGgoKTsNCisgICAgICAgICAgICBpbnQgZGVzdF9oZWlnaHQgPSBpbWFnZV9yZWN0LkhlaWdodCgpOw0KKyAgICAgICAgICAgIEZYX1JFQ1QgYml0bWFwX2NsaXAgPSBtX0NsaXBCb3g7DQorICAgICAgICAgICAgYml0bWFwX2NsaXAuT2Zmc2V0KC1pbWFnZV9yZWN0LmxlZnQsIC1pbWFnZV9yZWN0LnRvcCk7DQorICAgICAgICAgICAgYml0bWFwX2NsaXAgPSBfRlhESUJfU3dhcENsaXBCb3goYml0bWFwX2NsaXAsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBtX01hdHJpeC5jID4gMCwgbV9NYXRyaXguYiA8IDApOw0KKyAgICAgICAgICAgIG1fQ29tcG9zZXIuQ29tcG9zZShwRGV2aWNlLCBwQ2xpcFJnbiwgYml0bWFwX2FscGhhLCBtYXNrX2NvbG9yLCBtX0NsaXBCb3gsIFRSVUUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fTWF0cml4LmMgPiAwLCBtX01hdHJpeC5iIDwgMCwgbV9iUmdiQnl0ZU9yZGVyLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtLCBtX0JsZW5kVHlwZSk7DQorICAgICAgICAgICAgaWYgKCFtX1N0cmV0Y2hlci5TdGFydCgmbV9Db21wb3NlciwgcFNvdXJjZSwgZGVzdF9oZWlnaHQsIGRlc3Rfd2lkdGgsIGJpdG1hcF9jbGlwLCBkaWJfZmxhZ3MpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9TdGF0dXMgPSAxOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9TdGF0dXMgPSAyOw0KKyAgICAgICAgbV9wVHJhbnNmb3JtZXIgPSBGWF9ORVcgQ0ZYX0ltYWdlVHJhbnNmb3JtZXI7DQorICAgICAgICBpZiAoIW1fcFRyYW5zZm9ybWVyKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wVHJhbnNmb3JtZXItPlN0YXJ0KHBTb3VyY2UsICZtX01hdHJpeCwgZGliX2ZsYWdzLCAmbV9DbGlwQm94KTsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGludCBkZXN0X3dpZHRoID0gaW1hZ2VfcmVjdC5XaWR0aCgpOw0KKyAgICBpZiAobV9NYXRyaXguYSA8IDApIHsNCisgICAgICAgIGRlc3Rfd2lkdGggPSAtZGVzdF93aWR0aDsNCisgICAgfQ0KKyAgICBpbnQgZGVzdF9oZWlnaHQgPSBpbWFnZV9yZWN0LkhlaWdodCgpOw0KKyAgICBpZiAobV9NYXRyaXguZCA+IDApIHsNCisgICAgICAgIGRlc3RfaGVpZ2h0ID0gLWRlc3RfaGVpZ2h0Ow0KKyAgICB9DQorICAgIGlmIChkZXN0X3dpZHRoID09IDAgfHwgZGVzdF9oZWlnaHQgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX1JFQ1QgYml0bWFwX2NsaXAgPSBtX0NsaXBCb3g7DQorICAgIGJpdG1hcF9jbGlwLk9mZnNldCgtaW1hZ2VfcmVjdC5sZWZ0LCAtaW1hZ2VfcmVjdC50b3ApOw0KKyAgICBtX0NvbXBvc2VyLkNvbXBvc2UocERldmljZSwgcENsaXBSZ24sIGJpdG1hcF9hbHBoYSwgbWFza19jb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgIG1fQ2xpcEJveCwgRkFMU0UsIEZBTFNFLCBGQUxTRSwgbV9iUmdiQnl0ZU9yZGVyLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtLCBtX0JsZW5kVHlwZSk7DQorICAgIG1fU3RhdHVzID0gMTsNCisgICAgcmV0ID0gbV9TdHJldGNoZXIuU3RhcnQoJm1fQ29tcG9zZXIsIHBTb3VyY2UsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBiaXRtYXBfY2xpcCwgZGliX2ZsYWdzKTsNCisgICAgcmV0dXJuIHJldDsNCit9DQorRlhfQk9PTCBDRlhfSW1hZ2VSZW5kZXJlcjo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZiAobV9TdGF0dXMgPT0gMSkgew0KKyAgICAgICAgcmV0dXJuIG1fU3RyZXRjaGVyLkNvbnRpbnVlKHBQYXVzZSk7DQorICAgIH0gZWxzZSBpZiAobV9TdGF0dXMgPT0gMikgew0KKyAgICAgICAgaWYgKG1fcFRyYW5zZm9ybWVyLT5Db250aW51ZShwUGF1c2UpKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICBDRlhfRElCaXRtYXAqIHBCaXRtYXAgPSBtX3BUcmFuc2Zvcm1lci0+bV9TdG9yZXIuRGV0YWNoKCk7DQorICAgICAgICBpZiAocEJpdG1hcCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBCaXRtYXAtPkdldEJ1ZmZlcigpID09IE5VTEwpIHsNCisgICAgICAgICAgICBkZWxldGUgcEJpdG1hcDsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAocEJpdG1hcC0+SXNBbHBoYU1hc2soKSkgew0KKyAgICAgICAgICAgIGlmIChtX0JpdG1hcEFscGhhICE9IDI1NSkgew0KKyAgICAgICAgICAgICAgICBpZiAobV9BbHBoYUZsYWcgPj4gOCkgew0KKyAgICAgICAgICAgICAgICAgICAgbV9BbHBoYUZsYWcgPSAoKChGWF9CWVRFKSgobV9BbHBoYUZsYWcgJiAweGZmKSAqIG1fQml0bWFwQWxwaGEgLyAyNTUpKSB8ICgobV9BbHBoYUZsYWcgPj4gOCkgPDwgOCkpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgbV9NYXNrQ29sb3IgPSBGWEFSR0JfTVVMX0FMUEhBKG1fTWFza0NvbG9yLCBtX0JpdG1hcEFscGhhKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtX3BEZXZpY2UtPkNvbXBvc2l0ZU1hc2sobV9wVHJhbnNmb3JtZXItPm1fUmVzdWx0TGVmdCwgbV9wVHJhbnNmb3JtZXItPm1fUmVzdWx0VG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQml0bWFwLT5HZXRXaWR0aCgpLCBwQml0bWFwLT5HZXRIZWlnaHQoKSwgcEJpdG1hcCwgbV9NYXNrQ29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIG1fQmxlbmRUeXBlLCBtX3BDbGlwUmduLCBtX2JSZ2JCeXRlT3JkZXIsIG1fQWxwaGFGbGFnLCBtX3BJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAobV9CaXRtYXBBbHBoYSAhPSAyNTUpIHsNCisgICAgICAgICAgICAgICAgcEJpdG1hcC0+TXVsdGlwbHlBbHBoYShtX0JpdG1hcEFscGhhKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbV9wRGV2aWNlLT5Db21wb3NpdGVCaXRtYXAobV9wVHJhbnNmb3JtZXItPm1fUmVzdWx0TGVmdCwgbV9wVHJhbnNmb3JtZXItPm1fUmVzdWx0VG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCaXRtYXAtPkdldFdpZHRoKCksIHBCaXRtYXAtPkdldEhlaWdodCgpLCBwQml0bWFwLCAwLCAwLCBtX0JsZW5kVHlwZSwgbV9wQ2xpcFJnbiwgbV9iUmdiQnl0ZU9yZGVyLCBtX3BJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZGVsZXRlIHBCaXRtYXA7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCitDRlhfQml0bWFwU3RvcmVyOjpDRlhfQml0bWFwU3RvcmVyKCkNCit7DQorICAgIG1fcEJpdG1hcCA9IE5VTEw7DQorfQ0KK0NGWF9CaXRtYXBTdG9yZXI6On5DRlhfQml0bWFwU3RvcmVyKCkNCit7DQorICAgIGlmIChtX3BCaXRtYXApIHsNCisgICAgICAgIGRlbGV0ZSBtX3BCaXRtYXA7DQorICAgIH0NCit9DQorQ0ZYX0RJQml0bWFwKiBDRlhfQml0bWFwU3RvcmVyOjpEZXRhY2goKQ0KK3sNCisgICAgQ0ZYX0RJQml0bWFwKiBwQml0bWFwID0gbV9wQml0bWFwOw0KKyAgICBtX3BCaXRtYXAgPSBOVUxMOw0KKyAgICByZXR1cm4gcEJpdG1hcDsNCit9DQordm9pZCBDRlhfQml0bWFwU3RvcmVyOjpSZXBsYWNlKENGWF9ESUJpdG1hcCogcEJpdG1hcCkNCit7DQorICAgIGlmIChtX3BCaXRtYXApIHsNCisgICAgICAgIGRlbGV0ZSBtX3BCaXRtYXA7DQorICAgIH0NCisgICAgbV9wQml0bWFwID0gcEJpdG1hcDsNCit9DQordm9pZCBDRlhfQml0bWFwU3RvcmVyOjpDb21wb3NlU2NhbmxpbmUoaW50IGxpbmUsIEZYX0xQQ0JZVEUgc2NhbmxpbmUsIEZYX0xQQ0JZVEUgc2Nhbl9leHRyYV9hbHBoYSkNCit7DQorICAgIEZYX0xQQllURSBkZXN0X2J1ZiA9IChGWF9MUEJZVEUpbV9wQml0bWFwLT5HZXRTY2FubGluZShsaW5lKTsNCisgICAgRlhfTFBCWVRFIGRlc3RfYWxwaGFfYnVmID0gbV9wQml0bWFwLT5tX3BBbHBoYU1hc2sgPw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlhfTFBCWVRFKW1fcEJpdG1hcC0+bV9wQWxwaGFNYXNrLT5HZXRTY2FubGluZShsaW5lKSA6IE5VTEw7DQorICAgIGlmIChkZXN0X2J1Zikgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoZGVzdF9idWYsIHNjYW5saW5lLCBtX3BCaXRtYXAtPkdldFBpdGNoKCkpOw0KKyAgICB9DQorICAgIGlmIChkZXN0X2FscGhhX2J1Zikgew0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoZGVzdF9hbHBoYV9idWYsIHNjYW5fZXh0cmFfYWxwaGEsIG1fcEJpdG1hcC0+bV9wQWxwaGFNYXNrLT5HZXRQaXRjaCgpKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENGWF9CaXRtYXBTdG9yZXI6OlNldEluZm8oaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBGWERJQl9Gb3JtYXQgc3JjX2Zvcm1hdCwgRlhfRFdPUkQqIHBTcmNQYWxldHRlKQ0KK3sNCisgICAgbV9wQml0bWFwID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgaWYgKCFtX3BCaXRtYXApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoIW1fcEJpdG1hcC0+Q3JlYXRlKHdpZHRoLCBoZWlnaHQsIHNyY19mb3JtYXQpKSB7DQorICAgICAgICBkZWxldGUgbV9wQml0bWFwOw0KKyAgICAgICAgbV9wQml0bWFwID0gTlVMTDsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAocFNyY1BhbGV0dGUpIHsNCisgICAgICAgIG1fcEJpdG1hcC0+Q29weVBhbGV0dGUocFNyY1BhbGV0dGUpOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2RpYi9meF9kaWJfdHJhbnNmb3JtLmNwcCBiL2NvcmUvc3JjL2Z4Z2UvZGliL2Z4X2RpYl90cmFuc2Zvcm0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkODMwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2RpYi9meF9kaWJfdHJhbnNmb3JtLmNwcApAQCAtMCwwICsxLDc5NyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9kaWIuaCINCisjaW5jbHVkZSAiZGliX2ludC5oIg0KK2ludCBTRFBfVGFibGVbNTEzXSA9IHsNCisgICAgMjU2LCAyNTYsIDI1NiwgMjU2LCAyNTYsIDI1NiwgMjU2LCAyNTYsIDI1NiwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU0LCAyNTQsIDI1NCwgMjU0LA0KKyAgICAyNTMsIDI1MywgMjUzLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTAsIDI1MCwgMjQ5LCAyNDksIDI0OSwgMjQ4LCAyNDgsIDI0NywgMjQ3LCAyNDYsDQorICAgIDI0NiwgMjQ1LCAyNDQsIDI0NCwgMjQzLCAyNDMsIDI0MiwgMjQyLCAyNDEsIDI0MCwgMjQwLCAyMzksIDIzOCwgMjM4LCAyMzcsIDIzNiwgMjM2LCAyMzUsIDIzNCwNCisgICAgMjMzLCAyMzMsIDIzMiwgMjMxLCAyMzAsIDIzMCwgMjI5LCAyMjgsIDIyNywgMjI2LCAyMjYsIDIyNSwgMjI0LCAyMjMsIDIyMiwgMjIxLCAyMjAsIDIxOSwgMjE4LA0KKyAgICAyMTgsIDIxNywgMjE2LCAyMTUsIDIxNCwgMjEzLCAyMTIsIDIxMSwgMjEwLCAyMDksIDIwOCwgMjA3LCAyMDYsIDIwNSwgMjA0LCAyMDMsIDIwMiwgMjAxLCAyMDAsDQorICAgIDE5OSwgMTk4LCAxOTYsIDE5NSwgMTk0LCAxOTMsIDE5MiwgMTkxLCAxOTAsIDE4OSwgMTg4LCAxODYsIDE4NSwgMTg0LCAxODMsIDE4MiwgMTgxLCAxNzksIDE3OCwNCisgICAgMTc3LCAxNzYsIDE3NSwgMTczLCAxNzIsIDE3MSwgMTcwLCAxNjksIDE2NywgMTY2LCAxNjUsIDE2NCwgMTYyLCAxNjEsIDE2MCwgMTU5LCAxNTcsIDE1NiwgMTU1LA0KKyAgICAxNTQsIDE1MiwgMTUxLCAxNTAsIDE0OSwgMTQ3LCAxNDYsIDE0NSwgMTQzLCAxNDIsIDE0MSwgMTQwLCAxMzgsIDEzNywgMTM2LCAxMzQsIDEzMywgMTMyLCAxMzAsDQorICAgIDEyOSwgMTI4LCAxMjYsIDEyNSwgMTI0LCAxMjIsIDEyMSwgMTIwLCAxMTksIDExNywgMTE2LCAxMTUsIDExMywgMTEyLCAxMTEsIDEwOSwgMTA4LCAxMDcsIDEwNSwNCisgICAgMTA0LCAxMDMsIDEwMSwgMTAwLCA5OSwgOTcsIDk2LCA5NSwgOTMsIDkyLCA5MSwgODksIDg4LCA4NywgODUsIDg0LCA4MywgODEsIDgwLCA3OSwgNzcsIDc2LCA3NSwNCisgICAgNzMsIDcyLCA3MSwgNjksIDY4LCA2NywgNjYsIDY0LCA2MywgNjIsIDYwLCA1OSwgNTgsIDU3LCA1NSwgNTQsIDUzLCA1MiwgNTAsIDQ5LCA0OCwgNDcsIDQ1LCA0NCwNCisgICAgNDMsIDQyLCA0MCwgMzksIDM4LCAzNywgMzYsIDM0LCAzMywgMzIsIDMxLCAzMCwgMjgsIDI3LCAyNiwgMjUsIDI0LCAyMywgMjEsIDIwLCAxOSwgMTgsIDE3LCAxNiwNCisgICAgMTUsIDE0LCAxMywgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwLCAwLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTcsIC04LCAtOSwgLTEwLA0KKyAgICAtMTEsIC0xMiwgLTEyLCAtMTMsIC0xNCwgLTE1LCAtMTUsIC0xNiwgLTE3LCAtMTcsIC0xOCwgLTE5LCAtMTksIC0yMCwgLTIxLCAtMjEsIC0yMiwgLTIyLCAtMjMsIC0yNCwNCisgICAgLTI0LCAtMjUsIC0yNSwgLTI2LCAtMjYsIC0yNywgLTI3LCAtMjcsIC0yOCwgLTI4LCAtMjksIC0yOSwgLTMwLCAtMzAsIC0zMCwgLTMxLCAtMzEsIC0zMSwgLTMyLCAtMzIsDQorICAgIC0zMiwgLTMzLCAtMzMsIC0zMywgLTMzLCAtMzQsIC0zNCwgLTM0LCAtMzQsIC0zNSwgLTM1LCAtMzUsIC0zNSwgLTM1LCAtMzYsIC0zNiwgLTM2LCAtMzYsIC0zNiwgLTM2LA0KKyAgICAtMzYsIC0zNiwgLTM2LCAtMzcsIC0zNywgLTM3LCAtMzcsIC0zNywgLTM3LCAtMzcsIC0zNywgLTM3LCAtMzcsIC0zNywgLTM3LCAtMzcsIC0zNywgLTM3LCAtMzcsIC0zNywNCisgICAgLTM3LCAtMzcsIC0zNywgLTM3LCAtMzYsIC0zNiwgLTM2LCAtMzYsIC0zNiwgLTM2LCAtMzYsIC0zNiwgLTM2LCAtMzUsIC0zNSwgLTM1LCAtMzUsIC0zNSwgLTM1LCAtMzQsDQorICAgIC0zNCwgLTM0LCAtMzQsIC0zNCwgLTMzLCAtMzMsIC0zMywgLTMzLCAtMzMsIC0zMiwgLTMyLCAtMzIsIC0zMiwgLTMxLCAtMzEsIC0zMSwgLTMxLCAtMzAsIC0zMCwgLTMwLA0KKyAgICAtMzAsIC0yOSwgLTI5LCAtMjksIC0yOSwgLTI4LCAtMjgsIC0yOCwgLTI3LCAtMjcsIC0yNywgLTI3LCAtMjYsIC0yNiwgLTI2LCAtMjUsIC0yNSwgLTI1LCAtMjQsIC0yNCwNCisgICAgLTI0LCAtMjMsIC0yMywgLTIzLCAtMjIsIC0yMiwgLTIyLCAtMjIsIC0yMSwgLTIxLCAtMjEsIC0yMCwgLTIwLCAtMjAsIC0xOSwgLTE5LCAtMTksIC0xOCwgLTE4LCAtMTgsDQorICAgIC0xNywgLTE3LCAtMTcsIC0xNiwgLTE2LCAtMTYsIC0xNSwgLTE1LCAtMTUsIC0xNCwgLTE0LCAtMTQsIC0xMywgLTEzLCAtMTMsIC0xMiwgLTEyLCAtMTIsIC0xMSwgLTExLA0KKyAgICAtMTEsIC0xMCwgLTEwLCAtMTAsIC05LCAtOSwgLTksIC05LCAtOCwgLTgsIC04LCAtNywgLTcsIC03LCAtNywgLTYsIC02LCAtNiwgLTYsIC01LCAtNSwgLTUsIC01LCAtNCwNCisgICAgLTQsIC00LCAtNCwgLTMsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsDQorfTsNCitjbGFzcyBDRlhfQmlsaW5lYXJNYXRyaXggOiBwdWJsaWMgQ1BERl9GaXhlZE1hdHJpeA0KK3sNCitwdWJsaWM6DQorICAgIENGWF9CaWxpbmVhck1hdHJpeChjb25zdCBDRlhfQWZmaW5lTWF0cml4JiBzcmMsIGludCBiaXRzKTogQ1BERl9GaXhlZE1hdHJpeChzcmMsIGJpdHMpDQorICAgIHt9DQorICAgIGlubGluZSB2b2lkCVRyYW5zZm9ybShpbnQgeCwgaW50IHksIGludCYgeDEsIGludCYgeTEsIGludCZyZXNfeCwgaW50JnJlc195KQ0KKyAgICB7DQorICAgICAgICB4MSA9IGEgKiB4ICsgYyAqIHkgKyBlICsgYmFzZSAvIDI7DQorICAgICAgICB5MSA9IGIgKiB4ICsgZCAqIHkgKyBmICsgYmFzZSAvIDI7DQorICAgICAgICByZXNfeCA9IHgxICUgYmFzZTsNCisgICAgICAgIHJlc195ID0geTEgJSBiYXNlOw0KKyAgICAgICAgaWYgKHJlc194IDwgMCAmJiByZXNfeCA+IC1iYXNlKSB7DQorICAgICAgICAgICAgcmVzX3ggPSBiYXNlICsgcmVzX3g7DQorICAgICAgICB9DQorICAgICAgICBpZiAocmVzX3kgPCAwICYmIHJlc194ID4gLWJhc2UpIHsNCisgICAgICAgICAgICByZXNfeSA9IGJhc2UgKyByZXNfeTsNCisgICAgICAgIH0NCisgICAgICAgIHgxIC89IGJhc2U7DQorICAgICAgICB5MSAvPSBiYXNlOw0KKyAgICB9DQorfTsNCitDRlhfRElCaXRtYXAqIENGWF9ESUJTb3VyY2U6OlN3YXBYWShGWF9CT09MIGJYRmxpcCwgRlhfQk9PTCBiWUZsaXAsIGNvbnN0IEZYX1JFQ1QqIHBEZXN0Q2xpcCkgY29uc3QNCit7DQorICAgIEZYX1JFQ1QgZGVzdF9jbGlwKDAsIDAsIG1fSGVpZ2h0LCBtX1dpZHRoKTsNCisgICAgaWYgKHBEZXN0Q2xpcCkgew0KKyAgICAgICAgZGVzdF9jbGlwLkludGVyc2VjdCgqcERlc3RDbGlwKTsNCisgICAgfQ0KKyAgICBpZiAoZGVzdF9jbGlwLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0ZYX0RJQml0bWFwKiBwVHJhbnNCaXRtYXAgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBpZiAoIXBUcmFuc0JpdG1hcCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaW50IHJlc3VsdF9oZWlnaHQgPSBkZXN0X2NsaXAuSGVpZ2h0KCksIHJlc3VsdF93aWR0aCA9IGRlc3RfY2xpcC5XaWR0aCgpOw0KKyAgICBpZiAoIXBUcmFuc0JpdG1hcC0+Q3JlYXRlKHJlc3VsdF93aWR0aCwgcmVzdWx0X2hlaWdodCwgR2V0Rm9ybWF0KCkpKSB7DQorICAgICAgICBkZWxldGUgcFRyYW5zQml0bWFwOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcFRyYW5zQml0bWFwLT5Db3B5UGFsZXR0ZShtX3BQYWxldHRlKTsNCisgICAgaW50IHNyY19waXRjaCA9IG1fUGl0Y2g7DQorICAgIGludCBkZXN0X3BpdGNoID0gcFRyYW5zQml0bWFwLT5HZXRQaXRjaCgpOw0KKyAgICBGWF9MUEJZVEUgZGVzdF9idWYgPSBwVHJhbnNCaXRtYXAtPkdldEJ1ZmZlcigpOw0KKyAgICBpbnQgcm93X3N0YXJ0ID0gYlhGbGlwID8gbV9IZWlnaHQgLSBkZXN0X2NsaXAucmlnaHQgOiBkZXN0X2NsaXAubGVmdDsNCisgICAgaW50IHJvd19lbmQgPSBiWEZsaXAgPyBtX0hlaWdodCAtIGRlc3RfY2xpcC5sZWZ0IDogZGVzdF9jbGlwLnJpZ2h0Ow0KKyAgICBpbnQgY29sX3N0YXJ0ID0gYllGbGlwID8gbV9XaWR0aCAtIGRlc3RfY2xpcC5ib3R0b20gOiBkZXN0X2NsaXAudG9wOw0KKyAgICBpbnQgY29sX2VuZCA9IGJZRmxpcCA/IG1fV2lkdGggLSBkZXN0X2NsaXAudG9wIDogZGVzdF9jbGlwLmJvdHRvbTsNCisgICAgaWYgKEdldEJQUCgpID09IDEpIHsNCisgICAgICAgIEZYU1lTX21lbXNldDgoZGVzdF9idWYsIDB4ZmYsIGRlc3RfcGl0Y2ggKiByZXN1bHRfaGVpZ2h0KTsNCisgICAgICAgIGZvciAoaW50IHJvdyA9IHJvd19zdGFydDsgcm93IDwgcm93X2VuZDsgcm93ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IEdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICAgICAgaW50IGRlc3RfY29sID0gKGJYRmxpcCA/IGRlc3RfY2xpcC5yaWdodCAtIChyb3cgLSByb3dfc3RhcnQpIC0gMSA6IHJvdykgLSBkZXN0X2NsaXAubGVmdDsNCisgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gZGVzdF9idWY7DQorICAgICAgICAgICAgaWYgKGJZRmxpcCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gKHJlc3VsdF9oZWlnaHQgLSAxKSAqIGRlc3RfcGl0Y2g7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGludCBkZXN0X3N0ZXAgPSBiWUZsaXAgPyAtZGVzdF9waXRjaCA6IGRlc3RfcGl0Y2g7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gY29sX3N0YXJ0OyBjb2wgPCBjb2xfZW5kOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgaWYgKCEoc3JjX3NjYW5bY29sIC8gOF0gJiAoMSA8PCAoNyAtIGNvbCAlIDgpKSkpIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbltkZXN0X2NvbCAvIDhdICY9IH4oMSA8PCAoNyAtIGRlc3RfY29sICUgOCkpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBkZXN0X3N0ZXA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaW50IG5CeXRlcyA9IEdldEJQUCgpIC8gODsNCisgICAgICAgIGludCBkZXN0X3N0ZXAgPSBiWUZsaXAgPyAtZGVzdF9waXRjaCA6IGRlc3RfcGl0Y2g7DQorICAgICAgICBpZiAobkJ5dGVzID09IDMpIHsNCisgICAgICAgICAgICBkZXN0X3N0ZXAgLT0gMjsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IHJvdyA9IHJvd19zdGFydDsgcm93IDwgcm93X2VuZDsgcm93ICsrKSB7DQorICAgICAgICAgICAgaW50IGRlc3RfY29sID0gKGJYRmxpcCA/IGRlc3RfY2xpcC5yaWdodCAtIChyb3cgLSByb3dfc3RhcnQpIC0gMSA6IHJvdykgLSBkZXN0X2NsaXAubGVmdDsNCisgICAgICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gZGVzdF9idWYgKyBkZXN0X2NvbCAqIG5CeXRlczsNCisgICAgICAgICAgICBpZiAoYllGbGlwKSB7DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSAocmVzdWx0X2hlaWdodCAtIDEpICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKG5CeXRlcyA9PSA0KSB7DQorICAgICAgICAgICAgICAgIEZYX0RXT1JEKiBzcmNfc2NhbiA9IChGWF9EV09SRCopR2V0U2NhbmxpbmUocm93KSArIGNvbF9zdGFydDsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gY29sX3N0YXJ0OyBjb2wgPCBjb2xfZW5kOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICooRlhfRFdPUkQqKWRlc3Rfc2NhbiA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IGRlc3Rfc3RlcDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBHZXRTY2FubGluZShyb3cpICsgY29sX3N0YXJ0ICogbkJ5dGVzOw0KKyAgICAgICAgICAgICAgICBpZiAobkJ5dGVzID09IDEpDQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBjb2xfc3RhcnQ7IGNvbCA8IGNvbF9lbmQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9zdGVwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBjb2xfc3RhcnQ7IGNvbCA8IGNvbF9lbmQ7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4rKyA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3NjYW4gPSAqc3JjX3NjYW4rKzsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9zdGVwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wQWxwaGFNYXNrKSB7DQorICAgICAgICBzcmNfcGl0Y2ggPSBtX3BBbHBoYU1hc2stPm1fUGl0Y2g7DQorICAgICAgICBkZXN0X3BpdGNoID0gcFRyYW5zQml0bWFwLT5tX3BBbHBoYU1hc2stPkdldFBpdGNoKCk7DQorICAgICAgICBkZXN0X2J1ZiA9IHBUcmFuc0JpdG1hcC0+bV9wQWxwaGFNYXNrLT5HZXRCdWZmZXIoKTsNCisgICAgICAgIGludCBkZXN0X3N0ZXAgPSBiWUZsaXAgPyAtZGVzdF9waXRjaCA6IGRlc3RfcGl0Y2g7DQorICAgICAgICBmb3IgKGludCByb3cgPSByb3dfc3RhcnQ7IHJvdyA8IHJvd19lbmQ7IHJvdyArKykgew0KKyAgICAgICAgICAgIGludCBkZXN0X2NvbCA9IChiWEZsaXAgPyBkZXN0X2NsaXAucmlnaHQgLSAocm93IC0gcm93X3N0YXJ0KSAtIDEgOiByb3cpIC0gZGVzdF9jbGlwLmxlZnQ7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgZGVzdF9jb2w7DQorICAgICAgICAgICAgaWYgKGJZRmxpcCkgew0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gKHJlc3VsdF9oZWlnaHQgLSAxKSAqIGRlc3RfcGl0Y2g7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBtX3BBbHBoYU1hc2stPkdldFNjYW5saW5lKHJvdykgKyBjb2xfc3RhcnQ7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gY29sX3N0YXJ0OyBjb2wgPCBjb2xfZW5kOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9ICpzcmNfc2NhbisrOw0KKyAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gZGVzdF9zdGVwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcFRyYW5zQml0bWFwOw0KK30NCisjZGVmaW5lIEZJWDE2XzAwNSAwLjA1Zg0KK0ZYX1JFQ1QgX0ZYRElCX1N3YXBDbGlwQm94KEZYX1JFQ1QmIGNsaXAsIGludCB3aWR0aCwgaW50IGhlaWdodCwgRlhfQk9PTCBiRmxpcFgsIEZYX0JPT0wgYkZsaXBZKQ0KK3sNCisgICAgRlhfUkVDVCByZWN0Ow0KKyAgICBpZiAoYkZsaXBZKSB7DQorICAgICAgICByZWN0LmxlZnQgPSBoZWlnaHQgLSBjbGlwLnRvcDsNCisgICAgICAgIHJlY3QucmlnaHQgPSBoZWlnaHQgLSBjbGlwLmJvdHRvbTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJlY3QubGVmdCA9IGNsaXAudG9wOw0KKyAgICAgICAgcmVjdC5yaWdodCA9IGNsaXAuYm90dG9tOw0KKyAgICB9DQorICAgIGlmIChiRmxpcFgpIHsNCisgICAgICAgIHJlY3QudG9wID0gd2lkdGggLSBjbGlwLmxlZnQ7DQorICAgICAgICByZWN0LmJvdHRvbSA9IHdpZHRoIC0gY2xpcC5yaWdodDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHJlY3QudG9wID0gY2xpcC5sZWZ0Ow0KKyAgICAgICAgcmVjdC5ib3R0b20gPSBjbGlwLnJpZ2h0Ow0KKyAgICB9DQorICAgIHJlY3QuTm9ybWFsaXplKCk7DQorICAgIHJldHVybiByZWN0Ow0KK30NCitDRlhfRElCaXRtYXAqIENGWF9ESUJTb3VyY2U6OlRyYW5zZm9ybVRvKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBEZXN0TWF0cml4LCBpbnQmIHJlc3VsdF9sZWZ0LCBpbnQmIHJlc3VsdF90b3AsDQorICAgICAgICBGWF9EV09SRCBmbGFncywgY29uc3QgRlhfUkVDVCogcERlc3RDbGlwKSBjb25zdA0KK3sNCisgICAgQ0ZYX0ltYWdlVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXI7DQorICAgIHRyYW5zZm9ybWVyLlN0YXJ0KHRoaXMsIHBEZXN0TWF0cml4LCBmbGFncywgcERlc3RDbGlwKTsNCisgICAgdHJhbnNmb3JtZXIuQ29udGludWUoTlVMTCk7DQorICAgIHJlc3VsdF9sZWZ0ID0gdHJhbnNmb3JtZXIubV9SZXN1bHRMZWZ0Ow0KKyAgICByZXN1bHRfdG9wID0gdHJhbnNmb3JtZXIubV9SZXN1bHRUb3A7DQorICAgIENGWF9ESUJpdG1hcCogcFRyYW5zZm9ybWVkID0gdHJhbnNmb3JtZXIubV9TdG9yZXIuRGV0YWNoKCk7DQorICAgIHJldHVybiBwVHJhbnNmb3JtZWQ7DQorfQ0KK0NGWF9ESUJpdG1hcCogQ0ZYX0RJQlNvdXJjZTo6U3RyZXRjaFRvKGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsIEZYX0RXT1JEIGZsYWdzLCBjb25zdCBGWF9SRUNUKiBwQ2xpcCkgY29uc3QNCit7DQorICAgIEZYX1JFQ1QgY2xpcF9yZWN0KDAsIDAsIEZYU1lTX2FicyhkZXN0X3dpZHRoKSwgRlhTWVNfYWJzKGRlc3RfaGVpZ2h0KSk7DQorICAgIGlmIChwQ2xpcCkgew0KKyAgICAgICAgY2xpcF9yZWN0LkludGVyc2VjdCgqcENsaXApOw0KKyAgICB9DQorICAgIGlmIChjbGlwX3JlY3QuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoZGVzdF93aWR0aCA9PSBtX1dpZHRoICYmIGRlc3RfaGVpZ2h0ID09IG1fSGVpZ2h0KSB7DQorICAgICAgICByZXR1cm4gQ2xvbmUoJmNsaXBfcmVjdCk7DQorICAgIH0NCisgICAgQ0ZYX0ltYWdlU3RyZXRjaGVyIHN0cmV0Y2hlcjsNCisgICAgQ0ZYX0JpdG1hcFN0b3JlciBzdG9yZXI7DQorICAgIGlmIChzdHJldGNoZXIuU3RhcnQoJnN0b3JlciwgdGhpcywgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQsIGNsaXBfcmVjdCwgZmxhZ3MpKSB7DQorICAgICAgICBzdHJldGNoZXIuQ29udGludWUoTlVMTCk7DQorICAgIH0NCisgICAgcmV0dXJuIHN0b3Jlci5EZXRhY2goKTsNCit9DQorQ0ZYX0ltYWdlVHJhbnNmb3JtZXI6OkNGWF9JbWFnZVRyYW5zZm9ybWVyKCkNCit7DQorICAgIG1fU3RhdHVzID0gMDsNCisgICAgbV9wTWF0cml4ID0gTlVMTDsNCit9DQorQ0ZYX0ltYWdlVHJhbnNmb3JtZXI6On5DRlhfSW1hZ2VUcmFuc2Zvcm1lcigpDQorew0KK30NCitGWF9CT09MIENGWF9JbWFnZVRyYW5zZm9ybWVyOjpTdGFydChjb25zdCBDRlhfRElCU291cmNlKiBwU3JjLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwRGVzdE1hdHJpeCwgaW50IGZsYWdzLCBjb25zdCBGWF9SRUNUKiBwRGVzdENsaXApDQorew0KKyAgICBtX3BNYXRyaXggPSAoQ0ZYX0FmZmluZU1hdHJpeCopcERlc3RNYXRyaXg7DQorICAgIENGWF9GbG9hdFJlY3QgdW5pdF9yZWN0ID0gcERlc3RNYXRyaXgtPkdldFVuaXRSZWN0KCk7DQorICAgIEZYX1JFQ1QgcmVzdWx0X3JlY3QgPSB1bml0X3JlY3QuR2V0Q2xvc2VzdFJlY3QoKTsNCisgICAgRlhfUkVDVCByZXN1bHRfY2xpcCA9IHJlc3VsdF9yZWN0Ow0KKyAgICBpZiAocERlc3RDbGlwKSB7DQorICAgICAgICByZXN1bHRfY2xpcC5JbnRlcnNlY3QoKnBEZXN0Q2xpcCk7DQorICAgIH0NCisgICAgaWYgKHJlc3VsdF9jbGlwLklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIG1fUmVzdWx0TGVmdCA9IHJlc3VsdF9jbGlwLmxlZnQ7DQorICAgIG1fUmVzdWx0VG9wID0gcmVzdWx0X2NsaXAudG9wOw0KKyAgICBtX1Jlc3VsdFdpZHRoID0gcmVzdWx0X2NsaXAuV2lkdGgoKTsNCisgICAgbV9SZXN1bHRIZWlnaHQgPSByZXN1bHRfY2xpcC5IZWlnaHQoKTsNCisgICAgbV9GbGFncyA9IGZsYWdzOw0KKyAgICBpZiAoRlhTWVNfZmFicyhwRGVzdE1hdHJpeC0+YSkgPCBGWFNZU19mYWJzKHBEZXN0TWF0cml4LT5iKSAvIDIwICYmDQorICAgICAgICAgICAgRlhTWVNfZmFicyhwRGVzdE1hdHJpeC0+ZCkgPCBGWFNZU19mYWJzKHBEZXN0TWF0cml4LT5jKSAvIDIwICYmDQorICAgICAgICAgICAgRlhTWVNfZmFicyhwRGVzdE1hdHJpeC0+YSkgPCAwLjVmICYmIEZYU1lTX2ZhYnMocERlc3RNYXRyaXgtPmQpIDwgMC41Zikgew0KKyAgICAgICAgaW50IGRlc3Rfd2lkdGggPSByZXN1bHRfcmVjdC5XaWR0aCgpOw0KKyAgICAgICAgaW50IGRlc3RfaGVpZ2h0ID0gcmVzdWx0X3JlY3QuSGVpZ2h0KCk7DQorICAgICAgICByZXN1bHRfY2xpcC5PZmZzZXQoLXJlc3VsdF9yZWN0LmxlZnQsIC1yZXN1bHRfcmVjdC50b3ApOw0KKyAgICAgICAgcmVzdWx0X2NsaXAgPSBfRlhESUJfU3dhcENsaXBCb3gocmVzdWx0X2NsaXAsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBwRGVzdE1hdHJpeC0+YyA+IDAsIHBEZXN0TWF0cml4LT5iIDwgMCk7DQorICAgICAgICBtX1N0cmV0Y2hlci5TdGFydCgmbV9TdG9yZXIsIHBTcmMsIGRlc3RfaGVpZ2h0LCBkZXN0X3dpZHRoLCByZXN1bHRfY2xpcCwgZmxhZ3MpOw0KKyAgICAgICAgbV9TdGF0dXMgPSAxOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKEZYU1lTX2ZhYnMocERlc3RNYXRyaXgtPmIpIDwgRklYMTZfMDA1ICYmIEZYU1lTX2ZhYnMocERlc3RNYXRyaXgtPmMpIDwgRklYMTZfMDA1KSB7DQorICAgICAgICBpbnQgZGVzdF93aWR0aCA9IHBEZXN0TWF0cml4LT5hID4gMCA/IChpbnQpRlhTWVNfY2VpbChwRGVzdE1hdHJpeC0+YSkgOiAoaW50KUZYU1lTX2Zsb29yKHBEZXN0TWF0cml4LT5hKTsNCisgICAgICAgIGludCBkZXN0X2hlaWdodCA9IHBEZXN0TWF0cml4LT5kID4gMCA/IChpbnQpIC0gRlhTWVNfY2VpbChwRGVzdE1hdHJpeC0+ZCkgOiAoaW50KSAtIEZYU1lTX2Zsb29yKHBEZXN0TWF0cml4LT5kKTsNCisgICAgICAgIHJlc3VsdF9jbGlwLk9mZnNldCgtcmVzdWx0X3JlY3QubGVmdCwgLXJlc3VsdF9yZWN0LnRvcCk7DQorICAgICAgICBtX1N0cmV0Y2hlci5TdGFydCgmbV9TdG9yZXIsIHBTcmMsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCByZXN1bHRfY2xpcCwgZmxhZ3MpOw0KKyAgICAgICAgbV9TdGF0dXMgPSAyOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaW50IHN0cmV0Y2hfd2lkdGggPSAoaW50KUZYU1lTX2NlaWwoRlhTWVNfc3FydDIocERlc3RNYXRyaXgtPmEsIHBEZXN0TWF0cml4LT5iKSk7DQorICAgIGludCBzdHJldGNoX2hlaWdodCA9IChpbnQpRlhTWVNfY2VpbChGWFNZU19zcXJ0MihwRGVzdE1hdHJpeC0+YywgcERlc3RNYXRyaXgtPmQpKTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBzdHJldGNoMmRlc3QoMS4wZiwgMC4wZiwgMC4wZiwgLTEuMGYsIDAuMGYsIChGWF9GTE9BVCkoc3RyZXRjaF9oZWlnaHQpKTsNCisgICAgc3RyZXRjaDJkZXN0LkNvbmNhdChwRGVzdE1hdHJpeC0+YSAvIHN0cmV0Y2hfd2lkdGgsIHBEZXN0TWF0cml4LT5iIC8gc3RyZXRjaF93aWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICBwRGVzdE1hdHJpeC0+YyAvIHN0cmV0Y2hfaGVpZ2h0LCBwRGVzdE1hdHJpeC0+ZCAvIHN0cmV0Y2hfaGVpZ2h0LCBwRGVzdE1hdHJpeC0+ZSwgcERlc3RNYXRyaXgtPmYpOw0KKyAgICBtX2Rlc3Qyc3RyZXRjaC5TZXRSZXZlcnNlKHN0cmV0Y2gyZGVzdCk7DQorICAgIENGWF9GbG9hdFJlY3QgY2xpcF9yZWN0X2YocmVzdWx0X2NsaXApOw0KKyAgICBjbGlwX3JlY3RfZi5UcmFuc2Zvcm0oJm1fZGVzdDJzdHJldGNoKTsNCisgICAgbV9TdHJldGNoQ2xpcCA9IGNsaXBfcmVjdF9mLkdldE91dHRlclJlY3QoKTsNCisgICAgbV9TdHJldGNoQ2xpcC5JbnRlcnNlY3QoMCwgMCwgc3RyZXRjaF93aWR0aCwgc3RyZXRjaF9oZWlnaHQpOw0KKyAgICBtX1N0cmV0Y2hlci5TdGFydCgmbV9TdG9yZXIsIHBTcmMsIHN0cmV0Y2hfd2lkdGgsIHN0cmV0Y2hfaGVpZ2h0LCBtX1N0cmV0Y2hDbGlwLCBmbGFncyk7DQorICAgIG1fU3RhdHVzID0gMzsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JZVEUgX2JpbGluZWFyX2ludGVycG9sKEZYX0xQQ0JZVEUgYnVmLCBpbnQgcm93X29mZnNldF9sLCBpbnQgcm93X29mZnNldF9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfY29sX2wsIGludCBzcmNfY29sX3IsIGludCByZXNfeCwgaW50IHJlc195LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBicHAsIGludCBjX29mZnNldCkNCit7DQorICAgIGludCBpX3Jlc3ggPSAyNTUgLSByZXNfeDsNCisgICAgaW50IGNvbF9icHBfbCA9IHNyY19jb2xfbCAqIGJwcDsNCisgICAgaW50IGNvbF9icHBfciA9IHNyY19jb2xfciAqIGJwcDsNCisgICAgRlhfTFBDQllURSBidWZfdSA9IGJ1ZiArIHJvd19vZmZzZXRfbCArIGNfb2Zmc2V0Ow0KKyAgICBGWF9MUENCWVRFIGJ1Zl9kID0gYnVmICsgcm93X29mZnNldF9yICsgY19vZmZzZXQ7DQorICAgIEZYX0xQQ0JZVEUgc3JjX3BvczAgPSBidWZfdSArIGNvbF9icHBfbDsNCisgICAgRlhfTFBDQllURSBzcmNfcG9zMSA9IGJ1Zl91ICsgY29sX2JwcF9yOw0KKyAgICBGWF9MUENCWVRFIHNyY19wb3MyID0gYnVmX2QgKyBjb2xfYnBwX2w7DQorICAgIEZYX0xQQ0JZVEUgc3JjX3BvczMgPSBidWZfZCArIGNvbF9icHBfcjsNCisgICAgRlhfQllURSByX3Bvc18wID0gKCpzcmNfcG9zMCAqIGlfcmVzeCArICpzcmNfcG9zMSAqIHJlc194KSA+PiA4Ow0KKyAgICBGWF9CWVRFIHJfcG9zXzEgPSAoKnNyY19wb3MyICogaV9yZXN4ICsgKnNyY19wb3MzICogcmVzX3gpID4+IDg7DQorICAgIHJldHVybiAocl9wb3NfMCAqICgyNTUgLSByZXNfeSkgKyByX3Bvc18xICogcmVzX3kpID4+IDg7DQorfQ0KK0ZYX0JZVEUgX2JpY3ViaWNfaW50ZXJwb2woRlhfTFBDQllURSBidWYsIGludCBwaXRjaCwgaW50IHBvc19waXhlbFtdLCBpbnQgdV93W10sIGludCB2X3dbXSwgaW50IHJlc194LCBpbnQgcmVzX3ksDQorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnBwLCBpbnQgY19vZmZzZXQpDQorew0KKyAgICBpbnQgc19yZXN1bHQgPSAwOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkgKyspIHsNCisgICAgICAgIGludCBhX3Jlc3VsdCA9IDA7DQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGogKyspIHsNCisgICAgICAgICAgICBhX3Jlc3VsdCArPSB1X3dbal0gKiAoKihGWF9CWVRFKikoYnVmICsgcG9zX3BpeGVsW2kgKyA0XSAqIHBpdGNoICsgcG9zX3BpeGVsW2pdICogYnBwICsgY19vZmZzZXQpKTsNCisgICAgICAgIH0NCisgICAgICAgIHNfcmVzdWx0ICs9IGFfcmVzdWx0ICogdl93W2ldOw0KKyAgICB9DQorICAgIHNfcmVzdWx0ID4+PSAxNjsNCisgICAgcmV0dXJuIChGWF9CWVRFKShzX3Jlc3VsdCA8IDAgPyAwIDogc19yZXN1bHQgPiAyNTUgPyAyNTUgOiBzX3Jlc3VsdCk7DQorfQ0KK3ZvaWQgX2JpY3ViaWNfZ2V0X3Bvc193ZWlnaHQoaW50IHBvc19waXhlbFtdLCBpbnQgdV93W10sIGludCB2X3dbXSwgaW50IHNyY19jb2xfbCwgaW50IHNyY19yb3dfbCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXNfeCwgaW50IHJlc195LCBpbnQgc3RyZXRjaF93aWR0aCwgaW50IHN0cmV0Y2hfaGVpZ2h0KQ0KK3sNCisgICAgcG9zX3BpeGVsWzBdID0gc3JjX2NvbF9sIC0gMTsNCisgICAgcG9zX3BpeGVsWzFdID0gc3JjX2NvbF9sOw0KKyAgICBwb3NfcGl4ZWxbMl0gPSBzcmNfY29sX2wgKyAxOw0KKyAgICBwb3NfcGl4ZWxbM10gPSBzcmNfY29sX2wgKyAyOw0KKyAgICBwb3NfcGl4ZWxbNF0gPSBzcmNfcm93X2wgLSAxOw0KKyAgICBwb3NfcGl4ZWxbNV0gPSBzcmNfcm93X2w7DQorICAgIHBvc19waXhlbFs2XSA9IHNyY19yb3dfbCArIDE7DQorICAgIHBvc19waXhlbFs3XSA9IHNyY19yb3dfbCArIDI7DQorICAgIGZvciAoaW50IGkgPSAwIDsgaSA8IDQ7IGkgKyspIHsNCisgICAgICAgIGlmIChwb3NfcGl4ZWxbaV0gPCAwKSB7DQorICAgICAgICAgICAgcG9zX3BpeGVsW2ldID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwb3NfcGl4ZWxbaV0gPj0gc3RyZXRjaF93aWR0aCkgew0KKyAgICAgICAgICAgIHBvc19waXhlbFtpXSA9IHN0cmV0Y2hfd2lkdGggLSAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBvc19waXhlbFtpICsgNF0gPCAwKSB7DQorICAgICAgICAgICAgcG9zX3BpeGVsW2kgKyA0XSA9IDA7DQorICAgICAgICB9DQorICAgICAgICBpZiAocG9zX3BpeGVsW2kgKyA0XSA+PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgIHBvc19waXhlbFtpICsgNF0gPSBzdHJldGNoX2hlaWdodCAtIDE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgdV93WzBdID0gU0RQX1RhYmxlWzI1NiArIHJlc194XTsNCisgICAgdV93WzFdID0gU0RQX1RhYmxlW3Jlc194XTsNCisgICAgdV93WzJdID0gU0RQX1RhYmxlWzI1NiAtIHJlc194XTsNCisgICAgdV93WzNdID0gU0RQX1RhYmxlWzUxMiAtIHJlc194XTsNCisgICAgdl93WzBdID0gU0RQX1RhYmxlWzI1NiArIHJlc195XTsNCisgICAgdl93WzFdID0gU0RQX1RhYmxlW3Jlc195XTsNCisgICAgdl93WzJdID0gU0RQX1RhYmxlWzI1NiAtIHJlc195XTsNCisgICAgdl93WzNdID0gU0RQX1RhYmxlWzUxMiAtIHJlc195XTsNCit9DQorRlhESUJfRm9ybWF0IF9HZXRUcmFuc2Zvcm1lZEZvcm1hdChjb25zdCBDRlhfRElCU291cmNlKiBwRHJjKQ0KK3sNCisgICAgRlhESUJfRm9ybWF0IGZvcm1hdCA9IHBEcmMtPkdldEZvcm1hdCgpOw0KKyAgICBpZiAocERyYy0+SXNBbHBoYU1hc2soKSkgew0KKyAgICAgICAgZm9ybWF0ID0gRlhESUJfOGJwcE1hc2s7DQorICAgIH0gZWxzZSBpZiAoZm9ybWF0ID49IDEwMjUpIHsNCisgICAgICAgIGZvcm1hdCA9IEZYRElCX0NteWthOw0KKyAgICB9IGVsc2UgaWYgKGZvcm1hdCA8PSAzMiB8fCBmb3JtYXQgPT0gRlhESUJfQXJnYikgew0KKyAgICAgICAgZm9ybWF0ID0gRlhESUJfQXJnYjsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZvcm1hdCA9IEZYRElCX1JnYmE7DQorICAgIH0NCisgICAgcmV0dXJuIGZvcm1hdDsNCit9DQorRlhfQk9PTCBDRlhfSW1hZ2VUcmFuc2Zvcm1lcjo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpDQorew0KKyAgICBpZiAobV9TdGF0dXMgPT0gMSkgew0KKyAgICAgICAgaWYgKG1fU3RyZXRjaGVyLkNvbnRpbnVlKHBQYXVzZSkpIHsNCisgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX1N0b3Jlci5HZXRCaXRtYXAoKSkgew0KKyAgICAgICAgICAgIG1fU3RvcmVyLlJlcGxhY2UobV9TdG9yZXIuR2V0Qml0bWFwKCktPlN3YXBYWShtX3BNYXRyaXgtPmMgPiAwLCBtX3BNYXRyaXgtPmIgPCAwKSk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0gZWxzZSBpZiAobV9TdGF0dXMgPT0gMikgew0KKyAgICAgICAgcmV0dXJuIG1fU3RyZXRjaGVyLkNvbnRpbnVlKHBQYXVzZSk7DQorICAgIH0gZWxzZSBpZiAobV9TdGF0dXMgIT0gMykgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChtX1N0cmV0Y2hlci5Db250aW51ZShwUGF1c2UpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpbnQgc3RyZXRjaF93aWR0aCA9IG1fU3RyZXRjaENsaXAuV2lkdGgoKTsNCisgICAgaW50IHN0cmV0Y2hfaGVpZ2h0ID0gbV9TdHJldGNoQ2xpcC5IZWlnaHQoKTsNCisgICAgaWYgKG1fU3RvcmVyLkdldEJpdG1hcCgpID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9MUENCWVRFIHN0cmV0Y2hfYnVmID0gbV9TdG9yZXIuR2V0Qml0bWFwKCktPkdldEJ1ZmZlcigpOw0KKyAgICBGWF9MUENCWVRFIHN0cmV0Y2hfYnVmX21hc2sgPSBOVUxMOw0KKyAgICBpZiAobV9TdG9yZXIuR2V0Qml0bWFwKCktPm1fcEFscGhhTWFzaykgew0KKyAgICAgICAgc3RyZXRjaF9idWZfbWFzayA9IG1fU3RvcmVyLkdldEJpdG1hcCgpLT5tX3BBbHBoYU1hc2stPkdldEJ1ZmZlcigpOw0KKyAgICB9DQorICAgIGludCBzdHJldGNoX3BpdGNoID0gbV9TdG9yZXIuR2V0Qml0bWFwKCktPkdldFBpdGNoKCk7DQorICAgIENGWF9ESUJpdG1hcCogcFRyYW5zZm9ybWVkID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgaWYgKCFwVHJhbnNmb3JtZWQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWERJQl9Gb3JtYXQgdHJhbnNmb3JtRiA9IF9HZXRUcmFuc2Zvcm1lZEZvcm1hdChtX1N0cmV0Y2hlci5tX3BTb3VyY2UpOw0KKyAgICBpZiAoIXBUcmFuc2Zvcm1lZC0+Q3JlYXRlKG1fUmVzdWx0V2lkdGgsIG1fUmVzdWx0SGVpZ2h0LCB0cmFuc2Zvcm1GKSkgew0KKyAgICAgICAgZGVsZXRlIHBUcmFuc2Zvcm1lZDsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBwVHJhbnNmb3JtZWQtPkNsZWFyKDApOw0KKyAgICBpZiAocFRyYW5zZm9ybWVkLT5tX3BBbHBoYU1hc2spIHsNCisgICAgICAgIHBUcmFuc2Zvcm1lZC0+bV9wQWxwaGFNYXNrLT5DbGVhcigwKTsNCisgICAgfQ0KKyAgICBDRlhfQWZmaW5lTWF0cml4IHJlc3VsdDJzdHJldGNoKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIChGWF9GTE9BVCkobV9SZXN1bHRMZWZ0KSwgKEZYX0ZMT0FUKShtX1Jlc3VsdFRvcCkpOw0KKyAgICByZXN1bHQyc3RyZXRjaC5Db25jYXQobV9kZXN0MnN0cmV0Y2gpOw0KKyAgICByZXN1bHQyc3RyZXRjaC5UcmFuc2xhdGVJKC1tX1N0cmV0Y2hDbGlwLmxlZnQsIC1tX1N0cmV0Y2hDbGlwLnRvcCk7DQorICAgIGlmIChzdHJldGNoX2J1Zl9tYXNrID09IE5VTEwgJiYgcFRyYW5zZm9ybWVkLT5tX3BBbHBoYU1hc2spIHsNCisgICAgICAgIHBUcmFuc2Zvcm1lZC0+bV9wQWxwaGFNYXNrLT5DbGVhcigweGZmMDAwMDAwKTsNCisgICAgfSBlbHNlIGlmIChwVHJhbnNmb3JtZWQtPm1fcEFscGhhTWFzaykgew0KKyAgICAgICAgaW50IHN0cmV0Y2hfcGl0Y2hfbWFzayA9IG1fU3RvcmVyLkdldEJpdG1hcCgpLT5tX3BBbHBoYU1hc2stPkdldFBpdGNoKCk7DQorICAgICAgICBpZiAoIShtX0ZsYWdzICYgRlhESUJfRE9XTlNBTVBMRSkgJiYgIShtX0ZsYWdzICYgRlhESUJfQklDVUJJQ19JTlRFUlBPTCkpIHsNCisgICAgICAgICAgICBDRlhfQmlsaW5lYXJNYXRyaXggcmVzdWx0MnN0cmV0Y2hfZml4KHJlc3VsdDJzdHJldGNoLCA4KTsNCisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX1Jlc3VsdEhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUqIGRlc3RfcG9zX21hc2sgPSAoRlhfQllURSopcFRyYW5zZm9ybWVkLT5tX3BBbHBoYU1hc2stPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fUmVzdWx0V2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IHNyY19jb2xfbCwgc3JjX3Jvd19sLCByZXNfeCwgcmVzX3k7DQorICAgICAgICAgICAgICAgICAgICByZXN1bHQyc3RyZXRjaF9maXguVHJhbnNmb3JtKGNvbCwgcm93LCBzcmNfY29sX2wsIHNyY19yb3dfbCwgcmVzX3gsIHJlc195KTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfY29sX2wgPj0gMCAmJiBzcmNfY29sX2wgPD0gc3RyZXRjaF93aWR0aCAmJiBzcmNfcm93X2wgPj0gMCAmJiBzcmNfcm93X2wgPD0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2NvbF9sID09IHN0cmV0Y2hfd2lkdGgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbF9sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfcm93X2wgPT0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3Jvd19sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfY29sX3IgPSBzcmNfY29sX2wgKyAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfcm93X3IgPSBzcmNfcm93X2wgKyAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfY29sX3IgPT0gc3RyZXRjaF93aWR0aCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfY29sX3ItLTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19yb3dfciA9PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfcm93X3ItLTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJvd19vZmZzZXRfbCA9IHNyY19yb3dfbCAqIHN0cmV0Y2hfcGl0Y2hfbWFzazsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm93X29mZnNldF9yID0gc3JjX3Jvd19yICogc3RyZXRjaF9waXRjaF9tYXNrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3Bvc19tYXNrID0gX2JpbGluZWFyX2ludGVycG9sKHN0cmV0Y2hfYnVmX21hc2ssIHJvd19vZmZzZXRfbCwgcm93X29mZnNldF9yLCBzcmNfY29sX2wsIHNyY19jb2xfciwgcmVzX3gsIHJlc195LCAxLCAwKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zX21hc2srKzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAobV9GbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0wpIHsNCisgICAgICAgICAgICBDRlhfQmlsaW5lYXJNYXRyaXggcmVzdWx0MnN0cmV0Y2hfZml4KHJlc3VsdDJzdHJldGNoLCA4KTsNCisgICAgICAgICAgICBpbnQgcG9zX3BpeGVsWzhdOw0KKyAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fUmVzdWx0SGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfQllURSogZGVzdF9wb3NfbWFzayA9IChGWF9CWVRFKilwVHJhbnNmb3JtZWQtPm1fcEFscGhhTWFzay0+R2V0U2NhbmxpbmUocm93KTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9SZXN1bHRXaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2NvbF9sLCBzcmNfcm93X2wsIHJlc194LCByZXNfeTsNCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdDJzdHJldGNoX2ZpeC5UcmFuc2Zvcm0oY29sLCByb3csIHNyY19jb2xfbCwgc3JjX3Jvd19sLCByZXNfeCwgcmVzX3kpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2xfbCA+PSAwICYmIHNyY19jb2xfbCA8PSBzdHJldGNoX3dpZHRoICYmIHNyY19yb3dfbCA+PSAwICYmIHNyY19yb3dfbCA8PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB1X3dbNF0sIHZfd1s0XTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2NvbF9sID09IHN0cmV0Y2hfd2lkdGgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbF9sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfcm93X2wgPT0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3Jvd19sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIF9iaWN1YmljX2dldF9wb3Nfd2VpZ2h0KHBvc19waXhlbCwgdV93LCB2X3csIHNyY19jb2xfbCwgc3JjX3Jvd19sLCByZXNfeCwgcmVzX3ksIHN0cmV0Y2hfd2lkdGgsIHN0cmV0Y2hfaGVpZ2h0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9wb3NfbWFzayA9IF9iaWN1YmljX2ludGVycG9sKHN0cmV0Y2hfYnVmX21hc2ssIHN0cmV0Y2hfcGl0Y2hfbWFzaywgcG9zX3BpeGVsLCB1X3csIHZfdywgcmVzX3gsIHJlc195LCAxLCAwKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zX21hc2srKzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgQ1BERl9GaXhlZE1hdHJpeCByZXN1bHQyc3RyZXRjaF9maXgocmVzdWx0MnN0cmV0Y2gsIDgpOw0KKyAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fUmVzdWx0SGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfQllURSogZGVzdF9wb3NfbWFzayA9IChGWF9CWVRFKilwVHJhbnNmb3JtZWQtPm1fcEFscGhhTWFzay0+R2V0U2NhbmxpbmUocm93KTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9SZXN1bHRXaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2NvbCwgc3JjX3JvdzsNCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdDJzdHJldGNoX2ZpeC5UcmFuc2Zvcm0oY29sLCByb3csIHNyY19jb2wsIHNyY19yb3cpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2wgPj0gMCAmJiBzcmNfY29sIDw9IHN0cmV0Y2hfd2lkdGggJiYgc3JjX3JvdyA+PSAwICYmIHNyY19yb3cgPD0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2NvbCA9PSBzdHJldGNoX3dpZHRoKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19jb2wgLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfcm93ID09IHN0cmV0Y2hfaGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19yb3cgLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0X3Bvc19tYXNrID0gc3RyZXRjaF9idWZfbWFza1tzcmNfcm93ICogc3RyZXRjaF9waXRjaF9tYXNrICsgc3JjX2NvbF07DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3Bvc19tYXNrKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKG1fU3RvcmVyLkdldEJpdG1hcCgpLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICBpZiAoIShtX0ZsYWdzICYgRlhESUJfRE9XTlNBTVBMRSkgJiYgIShtX0ZsYWdzICYgRlhESUJfQklDVUJJQ19JTlRFUlBPTCkpIHsNCisgICAgICAgICAgICBDRlhfQmlsaW5lYXJNYXRyaXggcmVzdWx0MnN0cmV0Y2hfZml4KHJlc3VsdDJzdHJldGNoLCA4KTsNCisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX1Jlc3VsdEhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSAoRlhfTFBCWVRFKXBUcmFuc2Zvcm1lZC0+R2V0U2NhbmxpbmUocm93KTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9SZXN1bHRXaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2NvbF9sLCBzcmNfcm93X2wsIHJlc194LCByZXNfeTsNCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdDJzdHJldGNoX2ZpeC5UcmFuc2Zvcm0oY29sLCByb3csIHNyY19jb2xfbCwgc3JjX3Jvd19sLCByZXNfeCwgcmVzX3kpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2xfbCA+PSAwICYmIHNyY19jb2xfbCA8PSBzdHJldGNoX3dpZHRoICYmIHNyY19yb3dfbCA+PSAwICYmIHNyY19yb3dfbCA8PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfY29sX2wgPT0gc3RyZXRjaF93aWR0aCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfY29sX2wtLTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19yb3dfbCA9PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfcm93X2wtLTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19jb2xfciA9IHNyY19jb2xfbCArIDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19yb3dfciA9IHNyY19yb3dfbCArIDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2xfciA9PSBzdHJldGNoX3dpZHRoKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19jb2xfci0tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX3Jvd19yID09IHN0cmV0Y2hfaGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19yb3dfci0tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm93X29mZnNldF9sID0gc3JjX3Jvd19sICogc3RyZXRjaF9waXRjaDsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm93X29mZnNldF9yID0gc3JjX3Jvd19yICogc3RyZXRjaF9waXRjaDsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gX2JpbGluZWFyX2ludGVycG9sKHN0cmV0Y2hfYnVmLCByb3dfb2Zmc2V0X2wsIHJvd19vZmZzZXRfciwgc3JjX2NvbF9sLCBzcmNfY29sX3IsIHJlc194LCByZXNfeSwgMSwgMCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKG1fRmxhZ3MgJiBGWERJQl9CSUNVQklDX0lOVEVSUE9MKSB7DQorICAgICAgICAgICAgQ0ZYX0JpbGluZWFyTWF0cml4IHJlc3VsdDJzdHJldGNoX2ZpeChyZXN1bHQyc3RyZXRjaCwgOCk7DQorICAgICAgICAgICAgaW50IHBvc19waXhlbFs4XTsNCisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX1Jlc3VsdEhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSAoRlhfTFBCWVRFKXBUcmFuc2Zvcm1lZC0+R2V0U2NhbmxpbmUocm93KTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9SZXN1bHRXaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2NvbF9sLCBzcmNfcm93X2wsIHJlc194LCByZXNfeTsNCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdDJzdHJldGNoX2ZpeC5UcmFuc2Zvcm0oY29sLCByb3csIHNyY19jb2xfbCwgc3JjX3Jvd19sLCByZXNfeCwgcmVzX3kpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2xfbCA+PSAwICYmIHNyY19jb2xfbCA8PSBzdHJldGNoX3dpZHRoICYmIHNyY19yb3dfbCA+PSAwICYmIHNyY19yb3dfbCA8PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB1X3dbNF0sIHZfd1s0XTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2NvbF9sID09IHN0cmV0Y2hfd2lkdGgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbF9sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfcm93X2wgPT0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3Jvd19sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIF9iaWN1YmljX2dldF9wb3Nfd2VpZ2h0KHBvc19waXhlbCwgdV93LCB2X3csIHNyY19jb2xfbCwgc3JjX3Jvd19sLCByZXNfeCwgcmVzX3ksIHN0cmV0Y2hfd2lkdGgsIHN0cmV0Y2hfaGVpZ2h0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuID0gX2JpY3ViaWNfaW50ZXJwb2woc3RyZXRjaF9idWYsIHN0cmV0Y2hfcGl0Y2gsIHBvc19waXhlbCwgdV93LCB2X3csIHJlc194LCByZXNfeSwgMSwgMCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIENQREZfRml4ZWRNYXRyaXggcmVzdWx0MnN0cmV0Y2hfZml4KHJlc3VsdDJzdHJldGNoLCA4KTsNCisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX1Jlc3VsdEhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSAoRlhfTFBCWVRFKXBUcmFuc2Zvcm1lZC0+R2V0U2NhbmxpbmUocm93KTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9SZXN1bHRXaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2NvbCwgc3JjX3JvdzsNCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdDJzdHJldGNoX2ZpeC5UcmFuc2Zvcm0oY29sLCByb3csIHNyY19jb2wsIHNyY19yb3cpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2wgPj0gMCAmJiBzcmNfY29sIDw9IHN0cmV0Y2hfd2lkdGggJiYgc3JjX3JvdyA+PSAwICYmIHNyY19yb3cgPD0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2NvbCA9PSBzdHJldGNoX3dpZHRoKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19jb2wgLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfcm93ID09IHN0cmV0Y2hfaGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19yb3cgLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3BpeGVsID0gc3RyZXRjaF9idWYgKyBzdHJldGNoX3BpdGNoICogc3JjX3JvdyArIHNyY19jb2w7DQorICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3Rfc2NhbiA9ICpzcmNfcGl4ZWw7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpbnQgQnBwID0gbV9TdG9yZXIuR2V0Qml0bWFwKCktPkdldEJQUCgpIC8gODsNCisgICAgICAgIGludCBkZXN0QnBwID0gcFRyYW5zZm9ybWVkLT5HZXRCUFAoKSAvIDg7DQorICAgICAgICBpZiAoQnBwID09IDEpIHsNCisgICAgICAgICAgICBGWF9CT09MIGJIYXNBbHBoYSA9IG1fU3RvcmVyLkdldEJpdG1hcCgpLT5IYXNBbHBoYSgpOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIGFyZ2JbMjU2XTsNCisgICAgICAgICAgICBGWF9BUkdCKiBwUGFsID0gbV9TdG9yZXIuR2V0Qml0bWFwKCktPkdldFBhbGV0dGUoKTsNCisgICAgICAgICAgICBpZiAocFBhbCkgew0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgYXJnYltpXSA9IHBQYWxbaV07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAobV9TdG9yZXIuR2V0Qml0bWFwKCktPklzQ215a0ltYWdlKCkpDQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2JbaV0gPSAyNTUgLSBpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2JbaV0gPSAweGZmMDAwMDAwIHwgKGkgKiAweDAxMDEwMSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICghKG1fRmxhZ3MgJiBGWERJQl9ET1dOU0FNUExFKSAmJiAhKG1fRmxhZ3MgJiBGWERJQl9CSUNVQklDX0lOVEVSUE9MKSkgew0KKyAgICAgICAgICAgICAgICBDRlhfQmlsaW5lYXJNYXRyaXggcmVzdWx0MnN0cmV0Y2hfZml4KHJlc3VsdDJzdHJldGNoLCA4KTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9SZXN1bHRIZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSogZGVzdF9wb3MgPSAoRlhfQllURSopcFRyYW5zZm9ybWVkLT5HZXRTY2FubGluZShyb3cpOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9SZXN1bHRXaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19jb2xfbCwgc3JjX3Jvd19sLCByZXNfeCwgcmVzX3k7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0MnN0cmV0Y2hfZml4LlRyYW5zZm9ybShjb2wsIHJvdywgc3JjX2NvbF9sLCBzcmNfcm93X2wsIHJlc194LCByZXNfeSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2xfbCA+PSAwICYmIHNyY19jb2xfbCA8PSBzdHJldGNoX3dpZHRoICYmIHNyY19yb3dfbCA+PSAwICYmIHNyY19yb3dfbCA8PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2NvbF9sID09IHN0cmV0Y2hfd2lkdGgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19jb2xfbC0tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfcm93X2wgPT0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19yb3dfbC0tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfY29sX3IgPSBzcmNfY29sX2wgKyAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX3Jvd19yID0gc3JjX3Jvd19sICsgMTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2xfciA9PSBzdHJldGNoX3dpZHRoKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfY29sX3ItLTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX3Jvd19yID09IHN0cmV0Y2hfaGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfcm93X3ItLTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm93X29mZnNldF9sID0gc3JjX3Jvd19sICogc3RyZXRjaF9waXRjaDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJvd19vZmZzZXRfciA9IHNyY19yb3dfciAqIHN0cmV0Y2hfcGl0Y2g7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIHJfYmdyYV9jbXlrID0gYXJnYltfYmlsaW5lYXJfaW50ZXJwb2woc3RyZXRjaF9idWYsIHJvd19vZmZzZXRfbCwgcm93X29mZnNldF9yLCBzcmNfY29sX2wsIHNyY19jb2xfciwgcmVzX3gsIHJlc195LCAxLCAwKV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1GID09IEZYRElCX1JnYmEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zWzBdID0gKEZYX0JZVEUpKHJfYmdyYV9jbXlrID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zWzFdID0gKEZYX0JZVEUpKHJfYmdyYV9jbXlrID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zWzJdID0gKEZYX0JZVEUpKHJfYmdyYV9jbXlrID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihGWF9EV09SRCopZGVzdF9wb3MgPSByX2JncmFfY215azsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3BvcyArPSBkZXN0QnBwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX0ZsYWdzICYgRlhESUJfQklDVUJJQ19JTlRFUlBPTCkgew0KKyAgICAgICAgICAgICAgICBDRlhfQmlsaW5lYXJNYXRyaXggcmVzdWx0MnN0cmV0Y2hfZml4KHJlc3VsdDJzdHJldGNoLCA4KTsNCisgICAgICAgICAgICAgICAgaW50IHBvc19waXhlbFs4XTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9SZXN1bHRIZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSogZGVzdF9wb3MgPSAoRlhfQllURSopcFRyYW5zZm9ybWVkLT5HZXRTY2FubGluZShyb3cpOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9SZXN1bHRXaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19jb2xfbCwgc3JjX3Jvd19sLCByZXNfeCwgcmVzX3k7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0MnN0cmV0Y2hfZml4LlRyYW5zZm9ybShjb2wsIHJvdywgc3JjX2NvbF9sLCBzcmNfcm93X2wsIHJlc194LCByZXNfeSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2xfbCA+PSAwICYmIHNyY19jb2xfbCA8PSBzdHJldGNoX3dpZHRoICYmIHNyY19yb3dfbCA+PSAwICYmIHNyY19yb3dfbCA8PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdV93WzRdLCB2X3dbNF07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfY29sX2wgPT0gc3RyZXRjaF93aWR0aCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbF9sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19yb3dfbCA9PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3Jvd19sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2JpY3ViaWNfZ2V0X3Bvc193ZWlnaHQocG9zX3BpeGVsLCB1X3csIHZfdywgc3JjX2NvbF9sLCBzcmNfcm93X2wsIHJlc194LCByZXNfeSwgc3RyZXRjaF93aWR0aCwgc3RyZXRjaF9oZWlnaHQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCByX2JncmFfY215ayA9IGFyZ2JbX2JpY3ViaWNfaW50ZXJwb2woc3RyZXRjaF9idWYsIHN0cmV0Y2hfcGl0Y2gsIHBvc19waXhlbCwgdV93LCB2X3csIHJlc194LCByZXNfeSwgMSwgMCldOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtRiA9PSBGWERJQl9SZ2JhKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3Bvc1swXSA9IChGWF9CWVRFKShyX2JncmFfY215ayA+PiAyNCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3Bvc1sxXSA9IChGWF9CWVRFKShyX2JncmFfY215ayA+PiAxNik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3Bvc1syXSA9IChGWF9CWVRFKShyX2JncmFfY215ayA+PiA4KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooRlhfRFdPUkQqKWRlc3RfcG9zID0gcl9iZ3JhX2NteWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9wb3MgKz0gZGVzdEJwcDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIENQREZfRml4ZWRNYXRyaXggcmVzdWx0MnN0cmV0Y2hfZml4KHJlc3VsdDJzdHJldGNoLCA4KTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9SZXN1bHRIZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSogZGVzdF9wb3MgPSAoRlhfQllURSopcFRyYW5zZm9ybWVkLT5HZXRTY2FubGluZShyb3cpOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9SZXN1bHRXaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19jb2wsIHNyY19yb3c7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0MnN0cmV0Y2hfZml4LlRyYW5zZm9ybShjb2wsIHJvdywgc3JjX2NvbCwgc3JjX3Jvdyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2wgPj0gMCAmJiBzcmNfY29sIDw9IHN0cmV0Y2hfd2lkdGggJiYgc3JjX3JvdyA+PSAwICYmIHNyY19yb3cgPD0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2wgPT0gc3RyZXRjaF93aWR0aCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbCAtLTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX3JvdyA9PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3JvdyAtLTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCByX2JncmFfY215ayA9IGFyZ2Jbc3RyZXRjaF9idWZbc3JjX3JvdyAqIHN0cmV0Y2hfcGl0Y2ggKyBzcmNfY29sXV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1GID09IEZYRElCX1JnYmEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zWzBdID0gKEZYX0JZVEUpKHJfYmdyYV9jbXlrID4+IDI0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zWzFdID0gKEZYX0JZVEUpKHJfYmdyYV9jbXlrID4+IDE2KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zWzJdID0gKEZYX0JZVEUpKHJfYmdyYV9jbXlrID4+IDgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihGWF9EV09SRCopZGVzdF9wb3MgPSByX2JncmFfY215azsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3BvcyArPSBkZXN0QnBwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBGWF9CT09MIGJIYXNBbHBoYSA9IG1fU3RvcmVyLkdldEJpdG1hcCgpLT5IYXNBbHBoYSgpOw0KKyAgICAgICAgICAgIGludCBkZXN0QnBwID0gcFRyYW5zZm9ybWVkLT5HZXRCUFAoKSAvIDg7DQorICAgICAgICAgICAgaWYgKCEobV9GbGFncyAmIEZYRElCX0RPV05TQU1QTEUpICYmICEobV9GbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0wpKSB7DQorICAgICAgICAgICAgICAgIENGWF9CaWxpbmVhck1hdHJpeCByZXN1bHQyc3RyZXRjaF9maXgocmVzdWx0MnN0cmV0Y2gsIDgpOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX1Jlc3VsdEhlaWdodDsgcm93ICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBGWF9CWVRFKiBkZXN0X3BvcyA9IChGWF9CWVRFKilwVHJhbnNmb3JtZWQtPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtX1Jlc3VsdFdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2NvbF9sLCBzcmNfcm93X2wsIHJlc194LCByZXNfeSwgcl9wb3Nfa19yID0gMDsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQyc3RyZXRjaF9maXguVHJhbnNmb3JtKGNvbCwgcm93LCBzcmNfY29sX2wsIHNyY19yb3dfbCwgcmVzX3gsIHJlc195KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2NvbF9sID49IDAgJiYgc3JjX2NvbF9sIDw9IHN0cmV0Y2hfd2lkdGggJiYgc3JjX3Jvd19sID49IDAgJiYgc3JjX3Jvd19sIDw9IHN0cmV0Y2hfaGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfY29sX2wgPT0gc3RyZXRjaF93aWR0aCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbF9sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19yb3dfbCA9PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3Jvd19sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19jb2xfciA9IHNyY19jb2xfbCArIDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfcm93X3IgPSBzcmNfcm93X2wgKyAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2NvbF9yID09IHN0cmV0Y2hfd2lkdGgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19jb2xfci0tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfcm93X3IgPT0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19yb3dfci0tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByb3dfb2Zmc2V0X2wgPSBzcmNfcm93X2wgKiBzdHJldGNoX3BpdGNoOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm93X29mZnNldF9yID0gc3JjX3Jvd19yICogc3RyZXRjaF9waXRjaDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSByX3Bvc19yZWRfeV9yICAgPSBfYmlsaW5lYXJfaW50ZXJwb2woc3RyZXRjaF9idWYsIHJvd19vZmZzZXRfbCwgcm93X29mZnNldF9yLCBzcmNfY29sX2wsIHNyY19jb2xfciwgcmVzX3gsIHJlc195LCBCcHAsIDIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIHJfcG9zX2dyZWVuX21fciA9IF9iaWxpbmVhcl9pbnRlcnBvbChzdHJldGNoX2J1Ziwgcm93X29mZnNldF9sLCByb3dfb2Zmc2V0X3IsIHNyY19jb2xfbCwgc3JjX2NvbF9yLCByZXNfeCwgcmVzX3ksIEJwcCwgMSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgcl9wb3NfYmx1ZV9jX3IgID0gX2JpbGluZWFyX2ludGVycG9sKHN0cmV0Y2hfYnVmLCByb3dfb2Zmc2V0X2wsIHJvd19vZmZzZXRfciwgc3JjX2NvbF9sLCBzcmNfY29sX3IsIHJlc194LCByZXNfeSwgQnBwLCAwKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJIYXNBbHBoYSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybUYgIT0gRlhESUJfQXJnYikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1GID09IEZYRElCX1JnYmEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9wb3NbMF0gPSByX3Bvc19ibHVlX2NfcjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9wb3NbMV0gPSByX3Bvc19ncmVlbl9tX3I7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zWzJdID0gcl9wb3NfcmVkX3lfcjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByX3Bvc19rX3IgPSBfYmlsaW5lYXJfaW50ZXJwb2woc3RyZXRjaF9idWYsIHJvd19vZmZzZXRfbCwgcm93X29mZnNldF9yLCBzcmNfY29sX2wsIHNyY19jb2xfciwgcmVzX3gsIHJlc195LCBCcHAsIDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKEZYX0RXT1JEKilkZXN0X3BvcyA9IEZYQ01ZS19UT0RJQihDbXlrRW5jb2RlKHJfcG9zX2JsdWVfY19yLCByX3Bvc19ncmVlbl9tX3IsIHJfcG9zX3JlZF95X3IsIHJfcG9zX2tfcikpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSByX3Bvc19hX3IgPSBfYmlsaW5lYXJfaW50ZXJwb2woc3RyZXRjaF9idWYsIHJvd19vZmZzZXRfbCwgcm93X29mZnNldF9yLCBzcmNfY29sX2wsIHNyY19jb2xfciwgcmVzX3gsIHJlc195LCBCcHAsIDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooRlhfRFdPUkQqKWRlc3RfcG9zID0gRlhBUkdCX1RPRElCKEZYQVJHQl9NQUtFKHJfcG9zX2Ffciwgcl9wb3NfcmVkX3lfciwgcl9wb3NfZ3JlZW5fbV9yLCByX3Bvc19ibHVlX2NfcikpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcl9wb3Nfa19yID0gMHhmZjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1GID09IEZYRElCX0NteWthKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcl9wb3Nfa19yID0gX2JpbGluZWFyX2ludGVycG9sKHN0cmV0Y2hfYnVmLCByb3dfb2Zmc2V0X2wsIHJvd19vZmZzZXRfciwgc3JjX2NvbF9sLCBzcmNfY29sX3IsIHJlc194LCByZXNfeSwgQnBwLCAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKEZYX0RXT1JEKilkZXN0X3BvcyA9IEZYQ01ZS19UT0RJQihDbXlrRW5jb2RlKHJfcG9zX2JsdWVfY19yLCByX3Bvc19ncmVlbl9tX3IsIHJfcG9zX3JlZF95X3IsIHJfcG9zX2tfcikpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKEZYX0RXT1JEKilkZXN0X3BvcyA9IEZYQVJHQl9UT0RJQihGWEFSR0JfTUFLRShyX3Bvc19rX3IsIHJfcG9zX3JlZF95X3IsIHJfcG9zX2dyZWVuX21fciwgcl9wb3NfYmx1ZV9jX3IpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3BvcyArPSBkZXN0QnBwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX0ZsYWdzICYgRlhESUJfQklDVUJJQ19JTlRFUlBPTCkgew0KKyAgICAgICAgICAgICAgICBDRlhfQmlsaW5lYXJNYXRyaXggcmVzdWx0MnN0cmV0Y2hfZml4KHJlc3VsdDJzdHJldGNoLCA4KTsNCisgICAgICAgICAgICAgICAgaW50IHBvc19waXhlbFs4XTsNCisgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9SZXN1bHRIZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICAgICAgRlhfQllURSogZGVzdF9wb3MgPSAoRlhfQllURSopcFRyYW5zZm9ybWVkLT5HZXRTY2FubGluZShyb3cpOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbV9SZXN1bHRXaWR0aDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19jb2xfbCwgc3JjX3Jvd19sLCByZXNfeCwgcmVzX3ksIHJfcG9zX2tfciA9IDA7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0MnN0cmV0Y2hfZml4LlRyYW5zZm9ybShjb2wsIHJvdywgc3JjX2NvbF9sLCBzcmNfcm93X2wsIHJlc194LCByZXNfeSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19jb2xfbCA+PSAwICYmIHNyY19jb2xfbCA8PSBzdHJldGNoX3dpZHRoICYmIHNyY19yb3dfbCA+PSAwICYmIHNyY19yb3dfbCA8PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdV93WzRdLCB2X3dbNF07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfY29sX2wgPT0gc3RyZXRjaF93aWR0aCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbF9sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19yb3dfbCA9PSBzdHJldGNoX2hlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3Jvd19sLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2JpY3ViaWNfZ2V0X3Bvc193ZWlnaHQocG9zX3BpeGVsLCB1X3csIHZfdywgc3JjX2NvbF9sLCBzcmNfcm93X2wsIHJlc194LCByZXNfeSwgc3RyZXRjaF93aWR0aCwgc3RyZXRjaF9oZWlnaHQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIHJfcG9zX3JlZF95X3IgICA9IF9iaWN1YmljX2ludGVycG9sKHN0cmV0Y2hfYnVmLCBzdHJldGNoX3BpdGNoLCBwb3NfcGl4ZWwsIHVfdywgdl93LCByZXNfeCwgcmVzX3ksIEJwcCwgMik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgcl9wb3NfZ3JlZW5fbV9yID0gX2JpY3ViaWNfaW50ZXJwb2woc3RyZXRjaF9idWYsIHN0cmV0Y2hfcGl0Y2gsIHBvc19waXhlbCwgdV93LCB2X3csIHJlc194LCByZXNfeSwgQnBwLCAxKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSByX3Bvc19ibHVlX2NfciAgPSBfYmljdWJpY19pbnRlcnBvbChzdHJldGNoX2J1Ziwgc3RyZXRjaF9waXRjaCwgcG9zX3BpeGVsLCB1X3csIHZfdywgcmVzX3gsIHJlc195LCBCcHAsIDApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYkhhc0FscGhhKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtRiAhPSBGWERJQl9BcmdiKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybUYgPT0gRlhESUJfUmdiYSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3Bvc1swXSA9IHJfcG9zX2JsdWVfY19yOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3Bvc1sxXSA9IHJfcG9zX2dyZWVuX21fcjsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9wb3NbMl0gPSByX3Bvc19yZWRfeV9yOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJfcG9zX2tfciA9IF9iaWN1YmljX2ludGVycG9sKHN0cmV0Y2hfYnVmLCBzdHJldGNoX3BpdGNoLCBwb3NfcGl4ZWwsIHVfdywgdl93LCByZXNfeCwgcmVzX3ksIEJwcCwgMyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooRlhfRFdPUkQqKWRlc3RfcG9zID0gRlhDTVlLX1RPRElCKENteWtFbmNvZGUocl9wb3NfYmx1ZV9jX3IsIHJfcG9zX2dyZWVuX21fciwgcl9wb3NfcmVkX3lfciwgcl9wb3Nfa19yKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIHJfcG9zX2FfciA9IF9iaWN1YmljX2ludGVycG9sKHN0cmV0Y2hfYnVmLCBzdHJldGNoX3BpdGNoLCBwb3NfcGl4ZWwsIHVfdywgdl93LCByZXNfeCwgcmVzX3ksIEJwcCwgMyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihGWF9EV09SRCopZGVzdF9wb3MgPSBGWEFSR0JfVE9ESUIoRlhBUkdCX01BS0Uocl9wb3NfYV9yLCByX3Bvc19yZWRfeV9yLCByX3Bvc19ncmVlbl9tX3IsIHJfcG9zX2JsdWVfY19yKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByX3Bvc19rX3IgPSAweGZmOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybUYgPT0gRlhESUJfQ215a2EpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByX3Bvc19rX3IgPSBfYmljdWJpY19pbnRlcnBvbChzdHJldGNoX2J1Ziwgc3RyZXRjaF9waXRjaCwgcG9zX3BpeGVsLCB1X3csIHZfdywgcmVzX3gsIHJlc195LCBCcHAsIDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooRlhfRFdPUkQqKWRlc3RfcG9zID0gRlhDTVlLX1RPRElCKENteWtFbmNvZGUocl9wb3NfYmx1ZV9jX3IsIHJfcG9zX2dyZWVuX21fciwgcl9wb3NfcmVkX3lfciwgcl9wb3Nfa19yKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooRlhfRFdPUkQqKWRlc3RfcG9zID0gRlhBUkdCX1RPRElCKEZYQVJHQl9NQUtFKHJfcG9zX2tfciwgcl9wb3NfcmVkX3lfciwgcl9wb3NfZ3JlZW5fbV9yLCByX3Bvc19ibHVlX2NfcikpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zICs9IGRlc3RCcHA7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBDUERGX0ZpeGVkTWF0cml4IHJlc3VsdDJzdHJldGNoX2ZpeChyZXN1bHQyc3RyZXRjaCwgOCk7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG1fUmVzdWx0SGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUqIGRlc3RfcG9zID0gKEZYX0JZVEUqKXBUcmFuc2Zvcm1lZC0+R2V0U2NhbmxpbmUocm93KTsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1fUmVzdWx0V2lkdGg7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfY29sLCBzcmNfcm93Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDJzdHJldGNoX2ZpeC5UcmFuc2Zvcm0oY29sLCByb3csIHNyY19jb2wsIHNyY19yb3cpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfY29sID49IDAgJiYgc3JjX2NvbCA8PSBzdHJldGNoX3dpZHRoICYmIHNyY19yb3cgPj0gMCAmJiBzcmNfcm93IDw9IHN0cmV0Y2hfaGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfY29sID09IHN0cmV0Y2hfd2lkdGgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19jb2wgLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19yb3cgPT0gc3RyZXRjaF9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19yb3cgLS07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfcG9zID0gc3RyZXRjaF9idWYgKyBzcmNfcm93ICogc3RyZXRjaF9waXRjaCArIHNyY19jb2wgKiBCcHA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiSGFzQWxwaGEpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1GICE9IEZYRElCX0FyZ2IpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtRiA9PSBGWERJQl9SZ2JhKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcG9zWzBdID0gc3JjX3Bvc1swXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9wb3NbMV0gPSBzcmNfcG9zWzFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3Bvc1syXSA9IHNyY19wb3NbMl07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihGWF9EV09SRCopZGVzdF9wb3MgPSBGWENNWUtfVE9ESUIoQ215a0VuY29kZShzcmNfcG9zWzBdLCBzcmNfcG9zWzFdLCBzcmNfcG9zWzJdLCBzcmNfcG9zWzNdKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKEZYX0RXT1JEKilkZXN0X3BvcyA9IEZYQVJHQl9UT0RJQihGWEFSR0JfTUFLRShzcmNfcG9zWzNdLCBzcmNfcG9zWzJdLCBzcmNfcG9zWzFdLCBzcmNfcG9zWzBdKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtRiA9PSBGWERJQl9DbXlrYSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooRlhfRFdPUkQqKWRlc3RfcG9zID0gRlhDTVlLX1RPRElCKENteWtFbmNvZGUoc3JjX3Bvc1swXSwgc3JjX3Bvc1sxXSwgc3JjX3Bvc1syXSwgc3JjX3Bvc1szXSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKEZYX0RXT1JEKilkZXN0X3BvcyA9IEZYQVJHQl9UT0RJQihGWEFSR0JfTUFLRSgweGZmLCBzcmNfcG9zWzJdLCBzcmNfcG9zWzFdLCBzcmNfcG9zWzBdKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9wb3MgKz0gZGVzdEJwcDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX1N0b3Jlci5SZXBsYWNlKHBUcmFuc2Zvcm1lZCk7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdERpbmdiYXRzLmMgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0RGluZ2JhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGMyYWMxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdERpbmdiYXRzLmMKQEAgLTAsMCArMSwzNjk3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXREaW5nYmF0c0ZvbnREYXRhIFsyOTUxM10gPSB7MHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0LCAweDIsIDB4MCwgMHgxLCAweDEsIDB4MSwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDQ0LCAweDY5LCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NjIsIDB4NjEsIDB4NzQsIDB4NzMsIDB4NGYsIDB4NTQsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDEsIDB4MSwgMHgxLCAweDI1LCAweGY4LCAweDEwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhlNCwgMHgxLCAweGY4LCAweGU1LCAweDIsIDB4ZjgsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY4LCAweGU2LCAweDQsIDB4OGEsIDB4ZmIsIDB4MzgsIDB4ZmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHhmOSwgMHhjZSwgMHg1LCAweDFjLCAweDQsIDB4ZGMsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDQsIDB4ZTMsIDB4MTEsIDB4YTcsIDB4MWMsIDB4NmUsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgwLCAweGNjLCAweDIsIDB4MCwgMHgxLCAweDAsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NiwgMHgwLCAweGEsIDB4MCwgMHhlLCAweDAsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDE2LCAweDAsIDB4MWEsIDB4MCwgMHgxZSwgMHgwLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgyNiwgMHgwLCAweDJhLCAweDAsIDB4MmUsIDB4MCwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MzUsIDB4MCwgMHgzOSwgMHgwLCAweDNkLCAweDAsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDQ1LCAweDAsIDB4NDksIDB4MCwgMHg0YywgMHgwLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg1NCwgMHgwLCAweDU4LCAweDAsIDB4NWMsIDB4MCwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NjQsIDB4MCwgMHg2OCwgMHgwLCAweDZjLCAweDAsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc0LCAweDAsIDB4NzcsIDB4MCwgMHg3YiwgMHgwLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4MywgMHgwLCAweDg3LCAweDAsIDB4OGIsIDB4MCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OTMsIDB4MCwgMHg5NywgMHgwLCAweDliLCAweDAsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGEyLCAweDAsIDB4YTYsIDB4MCwgMHhhYSwgMHgwLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhiMiwgMHgwLCAweGI2LCAweDAsIDB4YmEsIDB4MCwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzIsIDB4MCwgMHhjNiwgMHgwLCAweGNhLCAweDAsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGQxLCAweDAsIDB4ZDUsIDB4MCwgMHhkOSwgMHgwLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhlMSwgMHgwLCAweGU1LCAweDAsIDB4ZTksIDB4MCwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZjEsIDB4MCwgMHhmNSwgMHgwLCAweGY4LCAweDAsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDAsIDB4MSwgMHg0LCAweDEsIDB4OCwgMHgxLCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDEwLCAweDEsIDB4MTQsIDB4MSwgMHgxOCwgMHgxLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgyMCwgMHgxLCAweDIzLCAweDEsIDB4MjcsIDB4MSwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MmYsIDB4MSwgMHgzMywgMHgxLCAweDM3LCAweDEsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDNmLCAweDEsIDB4NDMsIDB4MSwgMHg0NywgMHgxLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg0ZSwgMHgxLCAweDUyLCAweDEsIDB4NTYsIDB4MSwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4NWUsIDB4MSwgMHg2MiwgMHgxLCAweDY2LCAweDEsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDZlLCAweDEsIDB4NzIsIDB4MSwgMHg3NiwgMHgxLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg3ZCwgMHgxLCAweDgxLCAweDEsIDB4ODUsIDB4MSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4OGQsIDB4MSwgMHg5MSwgMHgxLCAweDk1LCAweDEsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDlkLCAweDEsIDB4YTEsIDB4MSwgMHhhMywgMHgxLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhYSwgMHgxLCAweGFlLCAweDEsIDB4YjIsIDB4MSwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YmEsIDB4MSwgMHhiZSwgMHgxLCAweGMyLCAweDEsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGM4LCAweDEsIDB4Y2IsIDB4MSwgMHhjZSwgMHgxLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhkNCwgMHgxLCAweGQ3LCAweDEsIDB4ZGEsIDB4MSwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZGYsIDB4MSwgMHhlMiwgMHgxLCAweGU1LCAweDEsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGViLCAweDEsIDB4ZWUsIDB4MSwgMHhmMSwgMHgxLCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHgxLCAweGZhLCAweDEsIDB4ZmQsIDB4MSwgMHhmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MiwgMHgyLCAweDUsIDB4MiwgMHg4LCAweDIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4ZSwgMHgyLCAweDExLCAweDIsIDB4MTQsIDB4MiwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MWEsIDB4MiwgMHgxZCwgMHgyLCAweDFmLCAweDIsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDI1LCAweDIsIDB4MjgsIDB4MiwgMHgyYiwgMHgyLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgzMSwgMHgyLCAweDM0LCAweDIsIDB4MzcsIDB4MiwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4M2QsIDB4MiwgMHgzZiwgMHgyLCAweDQyLCAweDIsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDQ4LCAweDIsIDB4NGIsIDB4MiwgMHg0ZSwgMHgyLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg1NCwgMHgyLCAweDU3LCAweDIsIDB4NWEsIDB4MiwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4NWYsIDB4MiwgMHg2MiwgMHgyLCAweDY1LCAweDIsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDZiLCAweDIsIDB4NmUsIDB4MiwgMHg3MSwgMHgyLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg3NywgMHgyLCAweDdhLCAweDIsIDB4N2QsIDB4MiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4ODIsIDB4MiwgMHg4NSwgMHgyLCAweDg4LCAweDIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDhlLCAweDIsIDB4OTEsIDB4MiwgMHg5NCwgMHgyLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg5YSwgMHgyLCAweDljLCAweDIsIDB4OWYsIDB4MiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4YTUsIDB4MiwgMHhhOCwgMHgyLCAweGFiLCAweDIsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGIxLCAweDIsIDB4YjQsIDB4MiwgMHhiNywgMHgyLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhlNCwgMHgyLCAweGY2LCAweDIsIDB4ZmMsIDB4NjEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgzMSwgMHgzMCwgMHg2MSwgMHgzMSwgMHgzMCwgMHgzMCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDMwLCAweDMxLCAweDYxLCAweDMxLCAweDMwLCAweDMyLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MzAsIDB4MzMsIDB4NjEsIDB4MzEsIDB4MzAsIDB4MzQsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgzMCwgMHgzNSwgMHg2MSwgMHgzMSwgMHgzMCwgMHgzNiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDMwLCAweDM3LCAweDYxLCAweDMxLCAweDMwLCAweDM4LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MzAsIDB4MzksIDB4NjEsIDB4MzEsIDB4MzEsIDB4NjEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgzMCwgMHg2MSwgMHgzMSwgMHgzMSwgMHgzMSwgMHg2MSwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDMyLCAweDYxLCAweDMxLCAweDMxLCAweDM3LCAweDYxLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MzgsIDB4NjEsIDB4MzEsIDB4MzEsIDB4MzksIDB4NjEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHg2MSwgMHgzMSwgMHgzMiwgMHgzMCwgMHg2MSwgMHgzMSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDYxLCAweDMxLCAweDMyLCAweDMyLCAweDYxLCAweDMxLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NjEsIDB4MzEsIDB4MzIsIDB4MzQsIDB4NjEsIDB4MzEsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHg2MSwgMHgzMSwgMHgzMiwgMHgzNiwgMHg2MSwgMHgzMSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDYxLCAweDMxLCAweDMyLCAweDM4LCAweDYxLCAweDMxLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4NjEsIDB4MzEsIDB4MzMsIDB4NjEsIDB4MzEsIDB4MzMsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgzMSwgMHgzMywgMHgzMSwgMHg2MSwgMHgzMSwgMHgzMywgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDMxLCAweDMzLCAweDMzLCAweDYxLCAweDMxLCAweDMzLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4MzEsIDB4MzMsIDB4MzUsIDB4NjEsIDB4MzEsIDB4MzMsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgzMSwgMHgzMywgMHgzNywgMHg2MSwgMHgzMSwgMHgzMywgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDMxLCAweDMzLCAweDM5LCAweDYxLCAweDMxLCAweDM0LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MzQsIDB4MzAsIDB4NjEsIDB4MzEsIDB4MzQsIDB4MzEsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgzNCwgMHgzMiwgMHg2MSwgMHgzMSwgMHgzNCwgMHgzMywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDM0LCAweDM0LCAweDYxLCAweDMxLCAweDM0LCAweDM1LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MzQsIDB4MzYsIDB4NjEsIDB4MzEsIDB4MzQsIDB4MzcsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgzNCwgMHgzOCwgMHg2MSwgMHgzMSwgMHgzNCwgMHgzOSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDM1LCAweDYxLCAweDMxLCAweDM1LCAweDMwLCAweDYxLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4MzEsIDB4NjEsIDB4MzEsIDB4MzUsIDB4MzIsIDB4NjEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHgzMywgMHg2MSwgMHgzMSwgMHgzNSwgMHgzNCwgMHg2MSwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDM1LCAweDYxLCAweDMxLCAweDM1LCAweDM2LCAweDYxLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4MzcsIDB4NjEsIDB4MzEsIDB4MzUsIDB4MzgsIDB4NjEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHgzOSwgMHg2MSwgMHgzMSwgMHgzNiwgMHg2MSwgMHgzMSwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDYxLCAweDMxLCAweDM2LCAweDMxLCAweDYxLCAweDMxLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NjEsIDB4MzEsIDB4MzYsIDB4MzMsIDB4NjEsIDB4MzEsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHg2MSwgMHgzMSwgMHgzNiwgMHgzNSwgMHg2MSwgMHgzMSwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDYxLCAweDMxLCAweDM2LCAweDM3LCAweDYxLCAweDMxLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NjEsIDB4MzEsIDB4MzYsIDB4MzksIDB4NjEsIDB4MzEsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgzMSwgMHgzNywgMHgzMCwgMHg2MSwgMHgzMSwgMHgzNywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDMxLCAweDM3LCAweDMyLCAweDYxLCAweDMxLCAweDM3LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4MzEsIDB4MzcsIDB4MzQsIDB4NjEsIDB4MzEsIDB4MzcsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgzMSwgMHgzNywgMHgzNiwgMHg2MSwgMHgzMSwgMHgzNywgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDMxLCAweDM3LCAweDM4LCAweDYxLCAweDMxLCAweDM3LCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4MzEsIDB4MzgsIDB4NjEsIDB4MzEsIDB4MzgsIDB4MzAsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgzOCwgMHgzMSwgMHg2MSwgMHgzMSwgMHgzOCwgMHgzMiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDM4LCAweDMzLCAweDYxLCAweDMxLCAweDM4LCAweDM0LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MzgsIDB4MzUsIDB4NjEsIDB4MzEsIDB4MzgsIDB4MzYsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgzOCwgMHgzNywgMHg2MSwgMHgzMSwgMHgzOCwgMHgzOCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDM4LCAweDM5LCAweDYxLCAweDMxLCAweDM5LCAweDYxLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MzAsIDB4NjEsIDB4MzEsIDB4MzksIDB4MzEsIDB4NjEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHgzMiwgMHg2MSwgMHgzMSwgMHgzOSwgMHgzMywgMHg2MSwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDM0LCAweDYxLCAweDMxLCAweDM5LCAweDM1LCAweDYxLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MzYsIDB4NjEsIDB4MzEsIDB4MzksIDB4MzcsIDB4NjEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHgzOCwgMHg2MSwgMHgzMSwgMHgzOSwgMHgzOSwgMHg2MSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDMyLCAweDMwLCAweDYxLCAweDMyLCAweDMwLCAweDMwLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4MzAsIDB4MzEsIDB4NjEsIDB4MzIsIDB4MzAsIDB4MzIsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHgzMCwgMHgzMywgMHg2MSwgMHgzMiwgMHgzMCwgMHgzNCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweDMwLCAweDM1LCAweDYxLCAweDMyLCAweDMwLCAweDM2LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4MzEsIDB4NjEsIDB4MzIsIDB4MzIsIDB4NjEsIDB4MzIsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgzMiwgMHgzNCwgMHg2MSwgMHgzMiwgMHgzNSwgMHg2MSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDYxLCAweDMyLCAweDM3LCAweDYxLCAweDMyLCAweDM4LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4MzksIDB4NjEsIDB4MzMsIDB4NjEsIDB4MzMsIDB4MzAsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHgzMSwgMHg2MSwgMHgzMywgMHgzMiwgMHg2MSwgMHgzMywgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDMzLCAweDM0LCAweDYxLCAweDMzLCAweDM1LCAweDYxLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NjEsIDB4MzMsIDB4MzcsIDB4NjEsIDB4MzMsIDB4MzgsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHgzOSwgMHg2MSwgMHgzNCwgMHg2MSwgMHgzNCwgMHgzMCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDMxLCAweDYxLCAweDM0LCAweDMyLCAweDYxLCAweDM0LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4MzQsIDB4MzQsIDB4NjEsIDB4MzQsIDB4MzUsIDB4NjEsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHg2MSwgMHgzNCwgMHgzNywgMHg2MSwgMHgzNCwgMHgzOCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDM5LCAweDYxLCAweDM1LCAweDYxLCAweDM1LCAweDMwLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4MzEsIDB4NjEsIDB4MzUsIDB4MzIsIDB4NjEsIDB4MzUsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgzNSwgMHgzNCwgMHg2MSwgMHgzNSwgMHgzNSwgMHg2MSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDYxLCAweDM1LCAweDM3LCAweDYxLCAweDM1LCAweDM4LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4MzksIDB4NjEsIDB4MzYsIDB4NjEsIDB4MzYsIDB4MzAsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHgzMSwgMHg2MSwgMHgzNiwgMHgzMiwgMHg2MSwgMHgzNiwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDM2LCAweDM0LCAweDYxLCAweDM2LCAweDM1LCAweDYxLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NjEsIDB4MzYsIDB4MzcsIDB4NjEsIDB4MzYsIDB4MzgsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHgzOSwgMHg2MSwgMHgzNywgMHg2MSwgMHgzNywgMHgzMCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDMxLCAweDYxLCAweDM3LCAweDMyLCAweDYxLCAweDM3LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4MzcsIDB4MzQsIDB4NjEsIDB4MzcsIDB4MzUsIDB4NjEsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHg2MSwgMHgzNywgMHgzNywgMHg2MSwgMHgzNywgMHgzOCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDM5LCAweDYxLCAweDM4LCAweDYxLCAweDM4LCAweDMxLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4MzIsIDB4NjEsIDB4MzgsIDB4MzMsIDB4NjEsIDB4MzgsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgzOCwgMHgzNSwgMHg2MSwgMHgzOCwgMHgzNiwgMHg2MSwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDYxLCAweDM4LCAweDM4LCAweDYxLCAweDM4LCAweDM5LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4NjEsIDB4MzksIDB4MzAsIDB4NjEsIDB4MzksIDB4MzEsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHgzMiwgMHg2MSwgMHgzOSwgMHgzMywgMHg2MSwgMHgzOSwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDM5LCAweDM1LCAweDYxLCAweDM5LCAweDM2LCAweDYxLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4NjEsIDB4MzksIDB4MzgsIDB4NjEsIDB4MzksIDB4MzksIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4NDMsIDB4NjgsIDB4NzIsIDB4NmYsIDB4NmQsIDB4MjAsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2ZSwgMHg2NywgMHg2MiwgMHg2MSwgMHg3NCwgMHg3MywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDU0LCAweDQ2LCAweDRlLCAweDZmLCAweDcyLCAweDZkLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4MCwgMHgwLCAweDEsIDB4MSwgMHg4NywgMHhjOCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgwLCAweDAsIDB4Y2IsIDB4MiwgMHgwLCAweDEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MSwgMHgzLCAweDEsIDB4OGQsIDB4MSwgMHhmYSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4MiwgMHg5NSwgMHgyLCAweGUzLCAweDMsIDB4MjUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDMsIDB4YzksIDB4NCwgMHhlMCwgMHg2LCAweDJmLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg3LCAweGNjLCAweDgsIDB4OSwgMHg4LCAweDRlLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHg5LCAweDVkLCAweGIsIDB4MWQsIDB4YywgMHhmOCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4ZSwgMHg3NCwgMHhlLCAweGU3LCAweGYsIDB4NTUsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDEwLCAweDM2LCAweDEwLCAweDkwLCAweDEwLCAweGRlLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4MTIsIDB4MjIsIDB4MTIsIDB4YWEsIDB4MTQsIDB4MjEsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHgxNCwgMHhjYSwgMHgxNSwgMHg2ZiwgMHgxNSwgMHhjZSwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDE2LCAweGU5LCAweDE3LCAweDJkLCAweDE3LCAweGEyLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4MTgsIDB4YWEsIDB4MWEsIDB4MWYsIDB4MWEsIDB4NDUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHgxYSwgMHhmZSwgMHgxYiwgMHgzNCwgMHgxYiwgMHg5MSwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MWMsIDB4M2UsIDB4MWMsIDB4YmYsIDB4MWQsIDB4MzUsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHgxZCwgMHhlMywgMHgxZSwgMHgxLCAweDFlLCAweDU2LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4MWUsIDB4ZmEsIDB4MWYsIDB4NDUsIDB4MWYsIDB4YTMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHgyMCwgMHg0MiwgMHgyMCwgMHhhOSwgMHgyMSwgMHgxNCwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDIxLCAweDg3LCAweDIxLCAweGI3LCAweDIxLCAweGNjLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MjIsIDB4NWYsIDB4MjIsIDB4OGYsIDB4MjMsIDB4MTUsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgyMywgMHg4ZiwgMHgyMywgMHhiNiwgMHgyNCwgMHg1ZiwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDI0LCAweGY3LCAweDI1LCAweDE4LCAweDI1LCAweDJiLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4MjUsIDB4NzIsIDB4MjUsIDB4YTIsIDB4MjUsIDB4YzQsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHgyNiwgMHgzOCwgMHgyNiwgMHhhNywgMHgyNiwgMHhmYywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDI3LCAweDgyLCAweDI3LCAweGM4LCAweDI4LCAweDIyLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4MjgsIDB4Y2EsIDB4MjksIDB4M2YsIDB4MjksIDB4YTUsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHgyYSwgMHgyOCwgMHgyYSwgMHg0ZCwgMHgyYSwgMHg4MSwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDJhLCAweGYzLCAweDJiLCAweDRlLCAweDJiLCAweGJjLCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4MmMsIDB4NDcsIDB4MmMsIDB4YjUsIDB4MmQsIDB4YywgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweDJlLCAweDM3LCAweDJlLCAweDc4LCAweDJlLCAweGJmLCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MmYsIDB4YjgsIDB4MmYsIDB4ZGYsIDB4MzAsIDB4MTAsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHgzMCwgMHhhZiwgMHgzMSwgMHgzNCwgMHgzMSwgMHhmMiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweDMzLCAweDFhLCAweDMzLCAweDQ2LCAweDMzLCAweDdlLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4MzYsIDB4OCwgMHgzNiwgMHhmMiwgMHgzOCwgMHg1MiwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDNiLCAweDk3LCAweDNjLCAweDFhLCAweDNjLCAweDgyLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4M2QsIDB4NiwgMHgzZCwgMHg2MCwgMHgzZCwgMHhiMCwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDQwLCAweDRiLCAweDQwLCAweDc2LCAweDQwLCAweGIxLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NDEsIDB4ODEsIDB4NDEsIDB4YmYsIDB4NDIsIDB4MWIsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg0MywgMHgyLCAweDQ1LCAweGFmLCAweDQ1LCAweGU1LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg0NywgMHhiOCwgMHg0NywgMHhmYywgMHg0OCwgMHg1NSwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDRhLCAweGRhLCAweDRiLCAweGVlLCAweDRjLCAweGIxLCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NGYsIDB4MzYsIDB4NTEsIDB4NDksIDB4NTEsIDB4NmYsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHg1NSwgMHg1ZSwgMHg1OCwgMHhkOSwgMHg1OSwgMHhjNywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDViLCAweGE1LCAweDVjLCAweGIxLCAweDVkLCAweGI5LCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4NjAsIDB4ZWYsIDB4NjEsIDB4NDUsIDB4NjIsIDB4ZCwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDYyLCAweDhiLCAweDYyLCAweDlhLCAweDYyLCAweGNiLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4NjMsIDB4OSwgMHg2MywgMHgyMCwgMHg2MywgMHgzNiwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDYzLCAweGY3LCAweDY0LCAweDE3LCAweDY0LCAweDI0LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NjQsIDB4NDIsIDB4NjQsIDB4NzIsIDB4NjQsIDB4OGMsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHg2NCwgMHhjYSwgMHg2NSwgMHgyLCAweDY1LCAweDc0LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4NjUsIDB4YzUsIDB4NjUsIDB4ZGIsIDB4NjYsIDB4YiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweDY2LCAweDhmLCAweDY2LCAweGU1LCAweDY3LCAweDI5LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NjcsIDB4YmYsIDB4NjcsIDB4YzIsIDB4ZmMsIDB4YzUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFiLCAweGY3LCAweDE4LCAweDlmLCAweDlkLCAweGFlLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4ODgsIDB4YTYsIDB4NzEsIDB4YTYsIDB4ZjcsIDB4NmEsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhiMywgMHgxMiwgMHhmOCwgMHhmYSwgMHhhYywgMHhhMiwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweGY3LCAweDE1LCAweGZiLCAweDEzLCAweGY3LCAweDEyLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NjIsIDB4YjUsIDB4YmUsIDB4YmIsIDB4NWMsIDB4YmIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHgzNCwgMHhmOSwgMHgzMywgMHhmNywgMHg5NSwgMHgxNSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDljLCAweDgzLCAweGFlLCAweDZhLCAweDgsIDB4NzMsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg3NywgMHhhZiwgMHgxYiwgMHgxMywgMHhlNSwgMHgzMiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGIxLCAweGJjLCAweDFmLCAweDEzLCAweGNkLCAweDM0LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4YTMsIDB4NjAsIDB4NTYsIDB4NTIsIDB4NzgsIDB4ODcsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg2NCwgMHg4OCwgMHg1LCAweDEzLCAweGU1LCAweDM0LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4ZmIsIDB4M2UsIDB4MTUsIDB4ZjgsIDB4NDIsIDB4OWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHg2LCAweGY3LCAweDNkLCAweGY1LCAweDhmLCAweGMyLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4YjIsIDB4YWYsIDB4YmMsIDB4YTEsIDB4YjUsIDB4YWIsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlNSwgMHgyYywgMHhhMSwgMHg5YywgMHg5ZCwgMHhhMywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDEzLCAweGUzLCAweDM0LCAweGI2LCAweDY1LCAweGE3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4ZTUsIDB4OTQsIDB4NDUsIDB4NjcsIDB4NGYsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxZiwgMHg4NSwgMHg1MCwgMHg2ZiwgMHg3MSwgMHg2MCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDc2LCAweGZiLCAweDUwLCAweDE4LCAweGZiLCAweDMxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2MCwgMHhjYiwgMHgxNSwgMHhmOCwgMHg0NSwgMHg5ZCwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDUsIDB4OGMsIDB4NywgMHhmYywgMHhiMCwgMHgyYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NTUsIDB4ZjcsIDB4OTUsIDB4MTUsIDB4MTMsIDB4ZTMsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhiMCwgMHhhNywgMHhhOCwgMHgxZSwgMHgxMywgMHhlNSwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDlmLCAweDc2LCAweDcyLCAweDZjLCAweDY4LCAweDcxLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4ZTUsIDB4OTQsIDB4NzMsIDB4NzQsIDB4OWUsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhjZCwgMHg1NCwgMHhlNiwgMHhmYiwgMHg4MCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGFjLCAweDlmLCAweGE5LCAweDFlLCAweDEzLCAweGU1LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4YTMsIDB4N2EsIDB4NmUsIDB4NmEsIDB4NmMsIDB4N2EsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhkNSwgMHg1NCwgMHg3MSwgMHg3MCwgMHg5OCwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZiLCAweDZkLCAweGFmLCAweDE1LCAweDkzLCAweDkwLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4OTQsIDB4OTQsIDB4ODQsIDB4ODIsIDB4ODMsIDB4ODIsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg4MiwgMHg4NSwgMHg5MSwgMHg5NCwgMHgxZSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4OTIsIDB4NzYsIDB4ZjcsIDB4NGIsIDB4YWUsIDB4ZjcsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhmNywgMHg0OSwgMHg1NCwgMHhhLCAweGY3LCAweDNkLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjEsIDB4NiwgMHhmNSwgMHhmYiwgMHg0YiwgMHhmNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDUsIDB4ZjcsIDB4NjEsIDB4NiwgMHgyNSwgMHhmNywgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweGY3LCAweDQ2LCAweDUsIDB4ZmIsIDB4NjEsIDB4NiwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ5LCAweDIxLCAweGZiLCAweDQ5LCAweDUsIDB4ZmIsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGYwLCAweGZiLCAweDQ2LCAweDUsIDB4ZjgsIDB4MjMsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg0YywgMHhmMiwgMHg1LCAweGY3LCAweGUsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ZmIsIDB4YjAsIDB4MTUsIDB4YzgsIDB4ZjMsIDB4YzUsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZjLCAweDg2LCAweDE2LCAweGNhLCAweGYzLCAweGM5LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0ZCwgMHhmNywgMHg0OSwgMHgxNSwgMHg0ZiwgMHhmMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZCwgMHg2LCAweGI2LCAweGZiLCAweGIwLCAweDE1LCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjIsIDB4ZGQsIDB4ZjcsIDB4MjIsIDB4NSwgMHhmNywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZGQsIDB4ZmIsIDB4MjIsIDB4MzksIDB4ZmIsIDB4MjIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI5LCAweGY3LCAweGQ0LCAweDE1LCAweGNiLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhmYiwgMHgzLCAweDUsIDB4ZmIsIDB4ZCwgMHhmYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDEwLCAweDYsIDB4NDksIDB4ZmIsIDB4MCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHgzZiwgMHg3MywgMHhhLCAweGY4LCAweGVlLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4ZWIsIDB4ZjcsIDB4NjUsIDB4ZWEsIDB4MTMsIDB4YjAsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3OCwgMHgxNSwgMHhmNywgMHhjLCAweDY4LCAweGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhjMCwgMHgzMSwgMHg1NCwgMHg0MiwgMHg0NCwgMHg1MywgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDlmLCAweDdmLCAweDFmLCAweDk2LCAweDg1LCAweDlhLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4OTAsIDB4OCwgMHg5MCwgMHg5YywgMHg5NSwgMHg5MCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDEzLCAweGIwLCAweGIxLCAweGEzLCAweDc2LCAweDYxLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4NGEsIDB4ZmIsIDB4MTYsIDB4NmIsIDB4MWYsIDB4OGYsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweGM1LCAweDE2LCAweGY3LCAweGIsIDB4NjgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDU0LCAweDQyLCAweDQ0LCAweDUzLCAweGE0LCAweDZhLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4MWUsIDB4OTYsIDB4ODUsIDB4OTksIDB4ODcsIDB4OWMsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDkwLCAweDlkLCAweDk0LCAweDkwLCAweGE1LCAweDFiLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NzYsIDB4NjEsIDB4NTksIDB4NjksIDB4NGEsIDB4ZmIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHgxZiwgMHg5MCwgMHg3NiwgMHg1LCAweGUsIDB4MjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhkNiwgMHhmOSwgMHhhYSwgMHg3NywgMHhmNywgMHgyNSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjgsIDB4OGMsIDB4YTcsIDB4MywgMHhmNywgMHg5NCwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDY1LCAweDlkLCAweGFiLCAweDY5LCAweGI2LCAweDFiLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHhiYiwgMHhmNywgMHg4ZCwgMHgxZiwgMHhmOCwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YjcsIDB4ZjcsIDB4MTEsIDB4NDAsIDB4N2QsIDB4ODYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDUsIDB4NzIsIDB4NiwgMHhmYiwgMHg0MSwgMHhmYiwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweGZiLCAweDQyLCAweGZiLCAweDRkLCAweGY3LCAweDNhLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4OTEsIDB4OTUsIDB4OGUsIDB4OTksIDB4YjAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg3LCAweGZiLCAweDU4LCAweDM0LCAweDYxLCAweDMyLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4OTAsIDB4OTEsIDB4N2QsIDB4MWUsIDB4ZSwgMHhmYiwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDc2LCAweGY5LCAweDY0LCAweDc3LCAweDEsIDB4ZjcsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNCwgMHgxNSwgMHg5ZiwgMHhkMiwgMHhhYSwgMHg5NiwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDgsIDB4ZDMsIDB4YTksIDB4YTcsIDB4YzUsIDB4ZGMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNywgMHhmYiwgMHgxLCAweDkyLCAweGZiLCAweDUsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgwLCAweDc4LCAweGZiLCAweDE1LCAweDM3LCAweGE0LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4NmEsIDB4MWUsIDB4Y2QsIDB4NmUsIDB4YTksIDB4ODAsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg4LCAweGZiLCAweDEwLCAweGZiLCAweDM1LCAweDE1LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4NTIsIDB4Y2YsIDB4ZDEsIDB4YzIsIDB4YzQsIDB4Y2YsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhjMiwgMHg0NSwgMHg0NywgMHg1MiwgMHg1NCwgMHg0NSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4YmIsIDB4M2EsIDB4YSwgMHhmNywgMHhhMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDE1LCAweGE0LCAweGNkLCAweGJlLCAweGE4LCAweGM4LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhjZCwgMHhhOCwgMHhhZCwgMHhkOCwgMHhkNiwgMHgxYSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGM0LCAweDNmLCAweDRhLCAweDYzLCAweDU1LCAweDUyLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YzQsIDB4N2YsIDB4NWYsIDB4YzEsIDB4NGMsIDB4MWIsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg0ZSwgMHg0MiwgMHg0NSwgMHhiNCwgMHgzZCwgMHhjNywgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGM4LCAweDcwLCAweGJlLCAweDZmLCAweGEzLCAweDQ5LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMiwgMHhmYiwgMHgzOCwgMHgxNSwgMHg0NiwgMHhjMywgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGQxLCAweGMzLCAweGM0LCAweGQwLCAweGQyLCAweDUzLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4NDYsIDB4NTIsIDB4NTQsIDB4NDQsIDB4MWUsIDB4ZSwgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDc2LCAweGY4LCAweGY3LCAweDc3LCAweDEsIDB4ZjgsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHgxNSwgMHhiMCwgMHhlMiwgMHhlMywgMHhiZSwgMHhlMCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZjcsIDB4MmQsIDB4YzMsIDB4YzQsIDB4ZGMsIDB4ZWMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiLCAweDM5LCAweGUzLCAweGZiLCAweGQsIDB4ZmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDJjLCAweDI1LCAweDZjLCAweDFlLCAweGYxLCAweDZmLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4ZmIsIDB4MSwgMHgxYiwgMHhmYiwgMHhkLCAweDNhLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YiwgMHgyZSwgMHhjNiwgMHgzNSwgMHhlMiwgMHg2YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI5LCAweDU0LCAweGUzLCAweDU5LCAweGIwLCAweDMzLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGQzLCAweDYxLCAweDc2LCAweGNjLCAweDc2LCAweGY4LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ZTYsIDB4NzcsIDB4MSwgMHhmOCwgMHhkZSwgMHg5NiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4YzAsIDB4MTUsIDB4YTAsIDB4NzUsIDB4ZjgsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzOSwgMHg4YywgMHg2ZiwgMHhmYywgMHgyYywgMHhmYywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDgxLCAweGY4LCAweDJhLCAweGY4LCAweDJhLCAweGFmLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MzUsIDB4ZmMsIDB4MzUsIDB4YmIsIDB4NWEsIDB4ZjgsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0MywgMHhmMiwgMHhmNywgMHg3MiwgMHg4MCwgMHg5NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGZiLCAweDEwLCAweDUsIDB4YjAsIDB4NWMsIDB4MTUsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhmNywgMHgxNywgMHhkOCwgMHg5NSwgMHg4MiwgMHgzNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDgwLCAweGEwLCAweDUsIDB4ZSwgMHhmYiwgMHg0MCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweGVhLCAweGFmLCAweGY3LCAweGU5LCAweDU0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhlYSwgMHgzLCAweGY3LCAweDU5LCAweGY3LCAweGU2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4N2IsIDB4M2UsIDB4NDQsIDB4MzIsIDB4MWEsIDB4MmIsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhlYywgMHhiMywgMHhhZiwgMHg5NiwgMHhhMywgMHhhYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGM2LCAweDg4LCAweGY3LCAweDQsIDB4ZDIsIDB4Y2YsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGFlLCAweGJjLCAweGFlLCAweGJjLCAweDFiLCAweGFmLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiMywgMHg3LCAweDY3LCAweDg5LCAweDYzLCAweDhlLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4NjksIDB4YTQsIDB4MTksIDB4M2EsIDB4YzYsIDB4OGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDRhLCAweGNmLCAweDgsIDB4YWIsIDB4NmIsIDB4NjAsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHgxYiwgMHgyOCwgMHgzOSwgMHg0MCwgMHgyNywgMHgzMywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweGUwLCAweDdjLCAweDFmLCAweGUsIDB4M2MsIDB4ODEsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhhNCwgMHg5MCwgMHhkZSwgMHhmNywgMHg0YSwgMHg5NCwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZjcsIDB4MCwgMHhhMiwgMHgxMiwgMHg5ZCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJiLCAweGY3LCAweDEwLCAweDYwLCAweDlkLCAweGY3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4N2UsIDB4ZjcsIDB4MzYsIDB4ZDIsIDB4YjUsIDB4MTMsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhmNywgMHhjZSwgMHhmNywgMHgzNCwgMHgxNSwgMHg4ZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4OTIsIDB4OTQsIDB4ODksIDB4OTgsIDB4MWIsIDB4OWMsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhjNiwgMHhkNywgMHgxZiwgMHhjMiwgMHhiNiwgMHhiZSwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDFhLCAweGIyLCAweDcyLCAweGI3LCAweDU2LCAweDYwLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NmIsIDB4NzEsIDB4MWUsIDB4ODcsIDB4OGQsIDB4NSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDk5LCAweGE1LCAweGI1LCAweDFhLCAweGI4LCAweDcxLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OSwgMHhmYiwgMHg1MCwgMHhmYiwgMHgxNywgMHhmYiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ0LCAweGZiLCAweDJkLCAweGUyLCAweGZiLCAweDJjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ZjcsIDB4NzEsIDB4ZjcsIDB4NWQsIDB4ZjcsIDB4NWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhmNywgMHhhLCAweDQ4LCAweGQ3LCAweDU5LCAweDdmLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4N2UsIDB4ODQsIDB4MWUsIDB4OTAsIDB4ODgsIDB4OTcsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg4NCwgMHg4LCAweGI3LCAweDZjLCAweGFkLCAweDQ5LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZmIsIDB4NWYsIDB4ZmIsIDB4MjcsIDB4ZmIsIDB4MzYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhmYiwgMHg0NSwgMHgyMSwgMHhmNywgMHgxZCwgMHhmNywgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGY2LCAweGIwLCAweGY3LCAweDIyLCAweGUzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4ZjcsIDB4MzEsIDB4ZjMsIDB4YWEsIDB4MzgsIDB4NWIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg3NSwgMHg4NywgMHg3MiwgMHg4NSwgMHg3YSwgMHg4LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiMCwgMHg4MiwgMHg3NiwgMHhiZCwgMHg0YSwgMHgxYiwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDQyLCAweDQ1LCAweDY0LCAweDk1LCAweDc4LCAweGEzLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YjEsIDB4NTcsIDB4OTcsIDB4NzksIDB4ODgsIDB4NjYsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDg4LCAweDZkLCAweDg0LCAweDg0LCAweDFiLCAweDY3LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4YTMsIDB4OGQsIDB4MWYsIDB4OGMsIDB4OTYsIDB4ODcsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg4MSwgMHg4LCAweDgxLCAweDdmLCAweDg3LCAweDdmLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NjksIDB4YTQsIDB4NzQsIDB4YWYsIDB4YjQsIDB4YTQsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg5OCwgMHgxZSwgMHgxMywgMHhmNywgMHg1MCwgMHhhNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDE1LCAweGMxLCAweGE5LCAweGMxLCAweGM2LCAweDkwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OGMsIDB4OGIsIDB4ODksIDB4OTAsIDB4ODUsIDB4OCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMwLCAweDk4LCAweDdjLCAweDk1LCAweDc0LCAweDZmLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4NjcsIDB4NWIsIDB4NTksIDB4ODAsIDB4MWUsIDB4N2YsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg4YywgMHg4NCwgMHg5MywgMHg4LCAweDdmLCAweDk5LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4YTcsIDB4MWEsIDB4ZSwgMHgzYywgMHhjZiwgMHhmNywgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM3LCAweGY3LCAweDM4LCAweDRiLCAweGNhLCAweGY3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NCwgMHhjYSwgMHg3NywgMHgxMiwgMHg5NiwgMHhlMCwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweGM3LCAweGEwLCAweDhiLCAweGRmLCAweDllLCAweGFjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4YjMsIDB4MTMsIDB4OWIsIDB4ZTAsIDB4ZjcsIDB4Y2IsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHgxNSwgMHg4NSwgMHg4NiwgMHg3NSwgMHg3YywgMHg4MCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4N2QsIDB4NzgsIDB4ODYsIDB4NzcsIDB4N2IsIDB4MWEsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg2NSwgMHhiMywgMHg2NywgMHgxZSwgMHg2YSwgMHhiMCwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGExLCAweDFiLCAweGJhLCAweGJmLCAweGE2LCAweGIxLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YmIsIDB4YzUsIDB4OWEsIDB4OTQsIDB4YjgsIDB4OTYsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHhhOCwgMHg5ZCwgMHg5ZCwgMHg5OSwgMHg4LCAweDlhLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4YTAsIDB4OTgsIDB4MWEsIDB4YTIsIDB4N2YsIDB4OWMsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg4MSwgMHg3YywgMHg4MywgMHg4NywgMHgxZSwgMHg4OCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDg1LCAweDhmLCAweDhhLCAweDgsIDB4OTMsIDB4ODgsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg3ZiwgMHgxYSwgMHg3OSwgMHg3ZCwgMHg3ZSwgMHg3NywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDhlLCAweGYyLCAweDY0LCAweDFlLCAweDg1LCAweDliLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4ODUsIDB4OTksIDB4OCwgMHhkNSwgMHg2ZCwgMHg2ZCwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweDFiLCAweDZmLCAweDZhLCAweDdlLCAweDczLCAweDc1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NzUsIDB4N2YsIDB4NmQsIDB4NmQsIDB4MWEsIDB4NmUsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg4ZiwgMHg4NSwgMHgxZSwgMHg4ZSwgMHg4NSwgMHg4YiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDg4LCAweDg1LCAweDhhLCAweDg0LCAweDhjLCAweDg1LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4OGMsIDB4NmEsIDB4OTUsIDB4NmIsIDB4YTEsIDB4OCwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDljLCAweDgzLCAweDk3LCAweDFlLCAweDgzLCAweDk2LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4NzMsIDB4ODUsIDB4OCwgMHg3OCwgMHg5OSwgMHg3ZiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDFhLCAweGFhLCAweDkxLCAweDk5LCAweDkxLCAweDlhLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OTUsIDB4OGUsIDB4OTAsIDB4ODIsIDB4OTYsIDB4OCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDdlLCAweDk1LCAweDgyLCAweDFiLCAweDcwLCAweDc3LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4ODIsIDB4OGYsIDB4NzgsIDB4YWIsIDB4NjAsIDB4MWYsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHhhZCwgMHg2YiwgMHhhOSwgMHg3NCwgMHg4ZCwgMHg3MywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDdhLCAweDZkLCAweDgsIDB4NzQsIDB4N2UsIDB4NzcsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHgxYiwgMHgxMywgMHgzZCwgMHhlMCwgMHg3MiwgMHg4NCwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDk0LCAweDhiLCAweDg5LCAweDg5LCAweDhlLCAweDFmLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4ODEsIDB4OTEsIDB4N2UsIDB4MWIsIDB4NmYsIDB4NzIsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg2OCwgMHhhYiwgMHg3MSwgMHhiMCwgMHhhMCwgMHhhMCwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGE0LCAweDFmLCAweGI3LCAweGFiLCAweGFiLCAweGNiLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4OWQsIDB4ODEsIDB4YmIsIDB4NzcsIDB4OTUsIDB4ODgsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg4NywgMHg4NCwgMHg4ZiwgMHg4NywgMHg4LCAweGJkLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ODcsIDB4OTYsIDB4OGIsIDB4OGQsIDB4OTEsIDB4OTIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDliLCAweDlmLCAweDlkLCAweGI0LCAweDFiLCAweGJjLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NjcsIDB4OTcsIDB4MWYsIDB4OGUsIDB4ODMsIDB4OGEsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg4NywgMHg4LCAweDEzLCAweDVkLCAweGUwLCAweDdkLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4ODEsIDB4NmIsIDB4MWIsIDB4NTgsIDB4NmUsIDB4YjAsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHgxZiwgMHhlLCAweGZiLCAweDY5LCAweGEwLCAweDc2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4NzcsIDB4MSwgMHhmNywgMHhiYSwgMHhiMSwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4MTYsIDB4ZWEsIDB4NiwgMHhlYSwgMHg5NiwgMHg2LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4NzAsIDB4ZjUsIDB4ODYsIDB4ZjcsIDB4MjAsIDB4OCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OGYsIDB4NzUsIDB4NSwgMHg0YiwgMHg5NywgMHhiZCwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDFiLCAweGJiLCAweGNkLCAweGE4LCAweGU3LCAweGI0LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NmYsIDB4YTcsIDB4MWYsIDB4NmQsIDB4YTksIDB4NjgsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhhMCwgMHg2MSwgMHhiYSwgMHg1NywgMHhkOCwgMHg3OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ODIsIDB4OGQsIDB4MTgsIDB4ODIsIDB4ODksIDB4NzksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDU3LCAweDNlLCAweDYxLCAweDVjLCAweDE5LCAweDc4LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NzIsIDB4NmQsIDB4NmIsIDB4OCwgMHg3MSwgMHg2ZiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDYzLCAweDFhLCAweDJmLCAweGNkLCAweDZlLCAweGJiLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YjIsIDB4Y2IsIDB4OTcsIDB4MWUsIDB4OGYsIDB4YTEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDYsIDB4ODYsIDB4ZmIsIDB4MjAsIDB4NzAsIDB4MjEsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg4LCAweGUsIDB4ZjcsIDB4ZCwgMHhmNywgMHgyZSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI3LCAweGRhLCAweDQzLCAweGQzLCAweGE5LCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4ZjgsIDB4MjUsIDB4ZjcsIDB4ZDcsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg0MiwgMHhiNSwgMHg5MSwgMHhiMCwgMHhjMSwgMHg1LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg1MiwgMHhkNCwgMHhiOSwgMHg4ZCwgMHhiOSwgMHg4ZCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDE5LCAweDEzLCAweGIwLCAweGFmLCAweDhkLCAweGFmLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4OGQsIDB4OCwgMHhhMiwgMHg4ZCwgMHg5ZSwgMHg5NSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGE1LCAweDc2LCAweDk1LCAweDczLCAweDFlLCAweGZjLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhkMiwgMHgzZiwgMHg1LCAweDhlLCAweDg4LCAweDhkLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4MWEsIDB4ODMsIDB4ODksIDB4ODEsIDB4ODUsIDB4ODUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHg2ZiwgMHg4OSwgMHg4MSwgMHgzYiwgMHg5MywgMHg3YiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDhhLCAweDdjLCAweDhlLCAweDE5LCAweDc0LCAweDhmLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NzMsIDB4OTEsIDB4OCwgMHg3NCwgMHg4OCwgMHg4MSwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDFhLCAweDg3LCAweDhiLCAweDg3LCAweDhjLCAweDg3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4MzMsIDB4MTUsIDB4ZjcsIDB4MjIsIDB4NTUsIDB4OWQsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhjNSwgMHhmYiwgMHg1YywgMHhjZSwgMHg1LCAweDgxLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODIsIDB4ODAsIDB4MWEsIDB4N2EsIDB4OTksIDB4NzgsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHgxZSwgMHhmYiwgMHhmNCwgMHg2NywgMHgxNSwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDllLCAweDgyLCAweGQ2LCAweDY3LCAweDlhLCAweDg3LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4ODksIDB4ZDYsIDB4ODQsIDB4OTYsIDB4OGEsIDB4OCwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDdjLCAweDlkLCAweDlkLCAweDFhLCAweDk4LCAweDkzLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OTEsIDB4MWUsIDB4N2YsIDB4OWIsIDB4N2YsIDB4OWYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg5MiwgMHg4ZCwgMHg5MiwgMHg4ZSwgMHg5MSwgMHgxZSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDZjLCAweDg0LCAweDZjLCAweDFiLCAweDdiLCAweDdjLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4N2MsIDB4MWYsIDB4OGUsIDB4OWIsIDB4NSwgMHg4OCwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDhhLCAweDliLCAweDFiLCAweGIxLCAweGFkLCAweDk1LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4MWYsIDB4YWIsIDB4OWYsIDB4YTIsIDB4YWIsIDB4OGYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHg3NSwgMHgzNCwgMHhjOCwgMHg0ZSwgMHg3OSwgMHg4NywgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDljLCAweDk1LCAweGI1LCAweDliLCAweDg2LCAweDgxLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4NGQsIDB4NSwgMHg4OSwgMHg4ZCwgMHg5YSwgMHg4YSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDlkLCAweDk3LCAweDhlLCAweDllLCAweDFmLCAweDkwLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OTAsIDB4MWEsIDB4MjAsIDB4ZjcsIDB4MSwgMHhmYiwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGZiLCAweDE3LCAweGZiLCAweGYsIDB4ZmIsIDB4MTcsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDc4LCAweDZlLCAweDgyLCAweDY4LCAweDY4LCAweDFhLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4NjMsIDB4YTAsIDB4NjgsIDB4MWUsIDB4ZjgsIDB4NCwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGJkLCAweDdjLCAweGE5LCAweDliLCAweGEwLCAweGEzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhiYSwgMHg1LCAweDgzLCAweDg4LCAweDg2LCAweDg0LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NzgsIDB4OWYsIDB4NzUsIDB4OTksIDB4N2YsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI1LCAweDkyLCAweDc2LCAweGY5LCAweDRkLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlZiwgMHg3ZCwgMHgxNSwgMHhhOCwgMHhmMywgMHhmMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGQ4LCAweGVjLCAweDgsIDB4YzIsIDB4ZDAsIDB4YmIsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHgxYSwgMHhlMCwgMHg0OSwgMHhjOSwgMHgzNiwgMHgzYSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDNmLCAweDdhLCAweDFlLCAweGRhLCAweDc2LCAweDUyLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4MWIsIDB4M2EsIDB4NGEsIDB4NDksIDB4MzksIDB4MzMsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhjMCwgMHg0YSwgMHgxZiwgMHhlMCwgMHgyMywgMHhlOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGEzLCAweDIzLCAweDgsIDB4ZSwgMHhmYiwgMHg4OCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDg2LCAweDc3LCAweDEsIDB4Y2IsIDB4ZjgsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweGI0LCAweDgxLCAweDE1LCAweDk0LCAweDg5LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4YTUsIDB4ZjcsIDB4MzksIDB4ZjEsIDB4ZjcsIDB4MjIsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHgxOSwgMHg4ZCwgMHg5NCwgMHg4OSwgMHg5NCwgMHgyZCwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGY3LCAweDIyLCAweDcxLCAweGY3LCAweDM5LCAweDE5LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4ODIsIDB4ODksIDB4NzEsIDB4ZmIsIDB4MzksIDB4MjUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHgyZCwgMHg1MCwgMHgxOSwgMHg4OSwgMHg4MiwgMHg4ZCwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDUwLCAweGYxLCAweGZiLCAweDIyLCAweGE1LCAweGZiLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZSwgMHg0YywgMHhhMCwgMHg3NiwgMHhmNywgMHhkMCwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGYyLCAweDc3LCAweDEyLCAweGY4LCAweDUsIDB4YjEsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHgxMywgMHhmMCwgMHhmNywgMHhiOSwgMHgxNiwgMHhlYSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4OTYsIDB4NiwgMHg1ZiwgMHhjYiwgMHg3MSwgMHhmMywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFkLCAweDgsIDB4OWEsIDB4NiwgMHg0OCwgMHg5MywgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweGQwLCAweDFiLCAweGQ2LCAweGM3LCAweGM3LCAweGQ2LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4YzcsIDB4NDAsIDB4NDYsIDB4NTIsIDB4NTgsIDB4NDgsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhlOCwgMHg3YiwgMHg2LCAweDk0LCAweDhiLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4MWEsIDB4YzEsIDB4NywgMHhjZCwgMHg5NCwgMHhiZSwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweDFhLCAweGQ2LCAweDRmLCAweGM3LCAweDQwLCAweDQwLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NDAsIDB4NDcsIDB4YmUsIDB4NTIsIDB4Y2QsIDB4ODIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg3LCAweDgyLCAweDhiLCAweDgyLCAweDgyLCAweDFhLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjZSwgMHg4MywgMHg1MiwgMHhiZSwgMHg0NiwgMHgxYiwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDRmLCAweDQwLCAweDQwLCAweGM3LCAweDRmLCAweGQ2LCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4YmUsIDB4Y2UsIDB4OTMsIDB4MWYsIDB4MTMsIDB4ZjAsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDg1LCAweGZiLCAweDFkLCAweDcxLCAweDIzLCAweDVmLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhlLCAweGZiLCAweDI5LCAweGY3LCAweDMzLCAweDc2LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTQsIDB4ZmIsIDB4OGYsIDB4ZjcsIDB4MzksIDB4ZjcsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhjMSwgMHhmOCwgMHhhLCAweGZiLCAweDM3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZmIsIDB4Y2MsIDB4ZjcsIDB4Y2MsIDB4MTMsIDB4YjIsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZSwgMHgxNSwgMHhmOSwgMHgwLCAweGY4LCAweDMzLCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2LCAweDEzLCAweGQ4LCAweGY4LCAweDFkLCAweGZiLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YTIsIDB4NywgMHhmNywgMHg2NCwgMHhmNywgMHgzMCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZTQsIDB4NywgMHhmYywgMHhkYSwgMHg3NiwgMHgxNSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGY3LCAweDY3LCAweGY3LCAweDM0LCAweDUsIDB4NjgsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg3OCwgMHhiMSwgMHgxYiwgMHhhZiwgMHhhNywgMHhhMSwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDFmLCAweGY3LCAweDY2LCAweGZiLCAweDM0LCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHgxMywgMHhiNCwgMHhmYywgMHg1LCAweGY3LCAweDZlLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjgsIDB4ZmIsIDB4NjcsIDB4ZjcsIDB4MzYsIDB4NSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDYsIDB4ZmIsIDB4NjksIDB4ZmIsIDB4MzYsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGFkLCAweDdlLCAweDZkLCAweDllLCAweDY2LCAweDFiLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4NmEsIDB4NjksIDB4NzUsIDB4NmMsIDB4ODAsIDB4MWYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHhmYiwgMHg2NywgMHhmYiwgMHg1OSwgMHgxNSwgMHhmNywgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjcsIDB4NjMsIDB4ZmIsIDB4MzAsIDB4NSwgMHg3NCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1YiwgMHhmNywgMHgyMywgMHg5ZiwgMHhjMywgMHg5ZiwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDhhLCAweDlmLCAweGE3LCAweDlmLCAweDk1LCAweDlmLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4ZWQsIDB4YTMsIDB4ZjMsIDB4NzcsIDB4MTIsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg4MCwgMHg5ZiwgMHhmNywgMHg1ZiwgMHg5OSwgMHhhYiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGE5LCAweGRhLCAweDlmLCAweDkzLCAweGE1LCAweDEzLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4OGQsIDB4ZjgsIDB4MTIsIDB4MTUsIDB4Y2UsIDB4NzIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDhjLCAweDk1LCAweDc5LCAweGExLCAweDFiLCAweDk5LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OTEsIDB4OTIsIDB4MWYsIDB4OTEsIDB4OGEsIDB4NSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDdiLCAweGEyLCAweDk2LCAweDk0LCAweDhlLCAweDkwLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OGMsIDB4OGEsIDB4NzcsIDB4N2QsIDB4N2YsIDB4N2EsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHgxOSwgMHgxMywgMHhkZiwgMHhiZiwgMHg4MSwgMHg3ZSwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDc2LCAweDFhLCAweDY3LCAweGE2LCAweDc5LCAweGE0LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4OWUsIDB4YTUsIDB4YWIsIDB4MWUsIDB4ZDgsIDB4Y2IsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg1LCAweDc1LCAweDhlLCAweDlhLCAweDc5LCAweGE3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YWYsIDB4ZGYsIDB4YTAsIDB4OWQsIDB4OTksIDB4OTgsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhOSwgMHhhYSwgMHg5NywgMHg4ZCwgMHg1LCAweDEzLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NzYsIDB4OGYsIDB4OWUsIDB4N2UsIDB4OWUsIDB4MWIsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhhYSwgMHg5ZiwgMHg5ZCwgMHgxZiwgMHhhZiwgMHg5MSwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDUsIDB4OTksIDB4NywgMHhmYiwgMHg3OSwgMHg4NCwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDk0LCAweDlhLCAweDk0LCAweDk5LCAweDkyLCAweDliLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4YTYsIDB4YmMsIDB4YmMsIDB4OGEsIDB4OGYsIDB4MjksIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhmNSwgMHg4NywgMHg4ZCwgMHgzZCwgMHg2MCwgMHg2NiwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDk0LCAweDU5LCAweDc0LCAweDUsIDB4ODgsIDB4NywgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDc4LCAweDc0LCAweDZlLCAweDdjLCAweDcyLCAweDdiLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YTEsIDB4YmUsIDB4NTMsIDB4NmIsIDB4NSwgMHg4NiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDg2LCAweDFhLCAweGY4LCAweGQzLCAweDMxLCAweDE1LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NSwgMHg3ZiwgMHg4ZiwgMHg4NSwgMHg5NCwgMHg5MywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDk3LCAweDFlLCAweGIzLCAweDkwLCAweDUsIDB4N2IsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg3NiwgMHg3YiwgMHgxYiwgMHg3YSwgMHg4NCwgMHg5NywgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDFmLCAweGZiLCAweDU0LCAweDc4LCAweDE1LCAweDg2LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4YTIsIDB4YjIsIDB4YTcsIDB4ZjcsIDB4NCwgMHg4NSwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRiLCAweDkxLCAweDVjLCAweDZkLCAweGZiLCAweDlhLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ODksIDB4NzcsIDB4ODYsIDB4N2EsIDB4ODcsIDB4MTksIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHgxNSwgMHg2MSwgMHhhMSwgMHg5NCwgMHg4ZiwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDUsIDB4OTMsIDB4ZmIsIDB4NTIsIDB4MTUsIDB4OTYsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDdmLCAweDg5LCAweDhmLCAweDgwLCAweDk2LCAweDFiLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OTYsIDB4OWIsIDB4OGEsIDB4MWYsIDB4YmIsIDB4OTIsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg1LCAweDgxLCAweDgxLCAweDdlLCAweDgwLCAweDdjLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4ODYsIDB4OWQsIDB4OWIsIDB4OGQsIDB4MWYsIDB4ZmIsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHgxNSwgMHg4NiwgMHg5MiwgMHg5NiwgMHg4NywgMHg5ZCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDg0LCAweDk0LCAweGE0LCAweDZkLCAweDgxLCAweDcxLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4OGUsIDB4MTksIDB4OTcsIDB4YTgsIDB4YTYsIDB4OTcsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhlYiwgMHhjNywgMHgxOCwgMHg5ZCwgMHg5NiwgMHg5YywgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDk5LCAweGEwLCAweGEwLCAweDk1LCAweGEzLCAweDlhLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4YzMsIDB4MTgsIDB4YWUsIDB4OWUsIDB4NmYsIDB4MmYsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg4MCwgMHg4MCwgMHg0MywgMHg2ZiwgMHg4MCwgMHg3MCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDdiLCAweDczLCAweDE5LCAweDYzLCAweDcwLCAweDY2LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4NmUsIDB4M2IsIDB4NDksIDB4MTgsIDB4NzgsIDB4NzQsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg2YSwgMHgxYiwgMHgxMywgMHhhZiwgMHhkZiwgMHg3YSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGEwLCAweDllLCAweDk2LCAweDk5LCAweDk1LCAweDk2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4ZDYsIDB4MTUsIDB4ZmIsIDB4NmEsIDB4ZDcsIDB4YTcsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MywgMHg1YiwgMHg1LCAweGZiLCAweDMxLCAweDczLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4N2MsIDB4NSwgMHg4NiwgMHg4NCwgMHg4MywgMHg4OCwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDdkLCAweDg1LCAweDk2LCAweDk3LCAweDhkLCAweDFmLCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MTUsIDB4YWEsIDB4ODAsIDB4NSwgMHg4NywgMHg4NiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDgzLCAweDFiLCAweDgxLCAweDg4LCAweDkzLCAweDk0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1YSwgMHhhZiwgMHg5ZiwgMHhiZCwgMHhjNSwgMHhjMCwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGY3LCAweDMsIDB4NjEsIDB4ZTcsIDB4OWQsIDB4ZWEsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg5MywgMHhjZCwgMHg4NCwgMHhjYSwgMHgxMiwgMHhjOSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGI2LCAweDc2LCAweGEwLCAweGY4LCAweGQxLCAweDlmLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZDgsIDB4Y2MsIDB4ZjgsIDB4YTEsIDB4MTUsIDB4YWYsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhiNiwgMHhlYiwgMHgxYiwgMHhjMSwgMHhjZCwgMHg3YywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDFmLCAweDEzLCAweGU3LCAweDU4LCAweDdjLCAweGNlLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YmMsIDB4MWIsIDB4YzgsIDB4YmUsIDB4YTQsIDB4YTEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3OCwgMHhkMywgMHg1LCAweDcxLCAweDZkLCAweDYxLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4MWIsIDB4NTQsIDB4NGYsIDB4OTgsIDB4OTksIDB4NGUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlNiwgMHhkOCwgMHg5OSwgMHg0YywgMHg0YiwgMHg5YSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDcsIDB4NWMsIDB4NTAsIDB4NTMsIDB4ODIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg4ZCwgMHg4MiwgMHgxZiwgMHhiNiwgMHhmYiwgMHg4MywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDdiLCAweDg2LCAweDgwLCAweDcwLCAweDFhLCAweDJmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgyMywgMHhmNywgMHg1OCwgMHhmNywgMHgzZiwgMHhmNywgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGY3LCAweDksIDB4YTIsIDB4ODYsIDB4OTYsIDB4ODUsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4YiwgMHg5NiwgMHhhYSwgMHhhMiwgMHgxYSwgMHhmNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTgsIDB4ZTMsIDB4ZmIsIDB4NDQsIDB4MjIsIDB4M2EsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg1YywgMHgxZSwgMHg2OSwgMHg5NSwgMHg2MiwgMHhhMiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDgsIDB4MTMsIDB4ZTcsIDB4MjgsIDB4ODUsIDB4ODYsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4MCwgMHgxYSwgMHg1ZSwgMHg5ZSwgMHg3MywgMHhhOCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGU3LCAweDU4LCAweDdhLCAweDcxLCAweDgyLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4MWEsIDB4NzIsIDB4OGUsIDB4N2YsIDB4OTMsIDB4N2EsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhjMSwgMHgxNSwgMHhlZCwgMHhmNywgMHgxMywgMHhkYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGY3LCAweDMyLCAweGY3LCAweDE2LCAweDNjLCAweDI5LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTYsIDB4M2MsIDB4ZmIsIDB4MzIsIDB4ZmIsIDB4MzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkYSwgMHhlYywgMHgxZSwgMHg5MywgMHg0OCwgMHgxNSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGE0LCAweDcxLCAweDllLCAweDdlLCAweDgsIDB4NzksIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4YSwgMHg4MywgMHgxYSwgMHg2ZSwgMHhkMSwgMHg0YywgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDk0LCAweDkyLCAweDk2LCAweDk2LCAweDFlLCAweDgzLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4N2UsIDB4YzIsIDB4MWIsIDB4YzAsIDB4YzEsIDB4OWQsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHgxZiwgMHg5MiwgMHg4NSwgMHg5ZSwgMHg3NywgMHg5OSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDk2LCAweDljLCAweDk5LCAweDlhLCAweDlmLCAweDgsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg5MywgMHg5YywgMHg5OCwgMHgxYSwgMHg5MCwgMHg4NSwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDkwLCAweDFlLCAweDk4LCAweDk1LCAweDljLCAweDlmLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4OCwgMHg5MCwgMHg4MywgMHg4ZSwgMHg3ZCwgMHg3OCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGZiLCAweDEzLCAweDNiLCAweGZiLCAweDM1LCAweGZiLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTEsIDB4ZGMsIDB4ZTgsIDB4OWUsIDB4OGYsIDB4OWIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHgxZSwgMHhmNywgMHg4MiwgMHhmNywgMHgxYywgMHgxNSwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDk0LCAweDhhLCAweDkxLCAweDhkLCAweDk2LCAweDhkLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OWIsIDB4ODcsIDB4OTcsIDB4ODgsIDB4OGYsIDB4OGUsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhiZiwgMHhjZiwgMHgxOCwgMHg5MCwgMHg5MiwgMHg4NSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDhkLCAweDU1LCAweDk3LCAweDY2LCAweDhmLCAweDQ0LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4OGEsIDB4ODUsIDB4ODUsIDB4OGUsIDB4ODcsIDB4OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGZiLCAweDVhLCAweDE1LCAweGRjLCAweDU0LCAweDk0LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OGQsIDB4OTIsIDB4OTAsIDB4MTksIDB4YjEsIDB4YTUsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg5OCwgMHhiNywgMHg4LCAweDkxLCAweDhkLCAweDg2LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4MWIsIDB4MTMsIDB4ZDcsIDB4NTgsIDB4ZmIsIDB4MTAsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDgxLCAweDg3LCAweDg3LCAweDg3LCAweDFmLCAweDhhLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4N2QsIDB4N2UsIDB4ODIsIDB4ODIsIDB4ODYsIDB4OGUsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg4NywgMHg4LCAweGZiLCAweDMxLCAweGMzLCAweDE1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4NTgsIDB4NzIsIDB4YWQsIDB4NzYsIDB4YjQsIDB4YjQsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhhNCwgMHhhNCwgMHg2OSwgMHhhMCwgMHg2MiwgMHg2MiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDcyLCAweDFlLCAweDJmLCAweGZiLCAweGMsIDB4MTUsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg5NSwgMHg4YiwgMHg4ZiwgMHg4ZiwgMHhkNiwgMHhjOCwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDkwLCAweDg3LCAweDhmLCAweDg1LCAweDhlLCAweDgyLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4OTgsIDB4ODcsIDB4OTUsIDB4ODgsIDB4OTMsIDB4ODUsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg4YSwgMHhmYiwgMHhjLCAweDdmLCAweDE4LCAweDdlLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4MzEsIDB4OGQsIDB4ODUsIDB4OWEsIDB4NjksIDB4NDYsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg2ZCwgMHg4LCAweGUsIDB4ZWYsIDB4ZjcsIDB4MmMsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhhNSwgMHhmNywgMHgzZCwgMHhhNSwgMHg3OCwgMHhhNCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDkwLCAweGE0LCAweDhmLCAweDc3LCAweDEyLCAweDlmLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZWQsIDB4YzIsIDB4ZjcsIDB4NTcsIDB4MTUsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhmMSwgMHg1YywgMHhkZSwgMHg4NCwgMHhkYSwgMHg3NCwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDllLCAweGE0LCAweGI2LCAweDk2LCAweGFiLCAweGM1LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4YjIsIDB4YzYsIDB4NSwgMHhiMywgMHg3LCAweDVkLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHg4ZiwgMHhmNywgMHg1LCAweDkxLCAweDUsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg5ZiwgMHg5ZiwgMHhhMiwgMHgxYSwgMHhhMywgMHg3NCwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDhjLCAweDFlLCAweGZiLCAweGY3LCAweDkxLCAweDczLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgxMywgMHhlYiwgMHhmYiwgMHg0NiwgMHg5MiwgMHhmYiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YSwgMHhmYiwgMHgxMywgMHg5MCwgMHg1LCAweDc1LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NjYsIDB4NjUsIDB4MWEsIDB4OGMsIDB4NjIsIDB4OTcsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg2NywgMHg4LCAweGY3LCAweGU1LCAweGY3LCAweDE2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4YTEsIDB4OTAsIDB4YTMsIDB4YTgsIDB4OTAsIDB4ZGIsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhmNywgMHg1LCAweDdmLCAweDhkLCAweDk1LCAweDU3LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OTUsIDB4ODksIDB4YTIsIDB4ODYsIDB4OTUsIDB4MTksIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhmNywgMHhlNSwgMHg4OCwgMHg1LCAweGEyLCAweDk3LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4N2YsIDB4ODMsIDB4ODEsIDB4NzUsIDB4OGEsIDB4MWYsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHhmYiwgMHgzMiwgMHg4NCwgMHhjYiwgMHgzYiwgMHg1LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg2ZSwgMHg1ZiwgMHg0ZiwgMHg4MywgMHg1LCAweGZiLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MTUsIDB4NzgsIDB4YTIsIDB4NzgsIDB4YWIsIDB4YTksIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NSwgMHg1MSwgMHgxOCwgMHg3MiwgMHg1YSwgMHg2ZSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmMsIDB4NGMsIDB4YTMsIDB4MTUsIDB4N2IsIDB4YTgsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhhYSwgMHgxYSwgMHhhYSwgMHg5MSwgMHhhOSwgMHg5OCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweDEwLCAweDg1LCAweGY3LCAweGUsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM1LCAweDgzLCAweGRmLCAweDMyLCAweDkwLCAweDgzLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ODcsIDB4ODksIDB4MTksIDB4N2YsIDB4ODEsIDB4N2QsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg4ZiwgMHgzNywgMHhjNSwgMHgxOCwgMHg5NSwgMHhhZiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDgyLCAweDYzLCAweDU1LCAweDdjLCAweDhmLCAweDdjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkZCwgMHhjNCwgMHg5ZCwgMHhkZCwgMHg1MCwgMHgzZiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDg4LCAweDc3LCAweDczLCAweDhjLCAweDZmLCAweDE5LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NWUsIDB4ODQsIDB4NTcsIDB4OTUsIDB4ODksIDB4N2MsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHg4MywgMHhiNywgMHg4ZSwgMHhiMywgMHg5ZiwgMHg4MSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDZmLCAweGEwLCAweDcyLCAweDcyLCAweDdiLCAweDkwLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NzgsIDB4NDYsIDB4OTEsIDB4MTgsIDB4MjMsIDB4YmEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU5LCAweDUxLCAweDE1LCAweDdkLCAweDk5LCAweDdhLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OTYsIDB4ZjEsIDB4NjMsIDB4MTgsIDB4N2EsIDB4NzcsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg1LCAweGUsIDB4N2QsIDB4YWUsIDB4ZTUsIDB4YWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHg5YywgMHhmNywgMHg0MywgMHg0YywgMHhhLCAweGY3LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4ZjcsIDB4YTMsIDB4YWUsIDB4MTcsIDB4YWUsIDB4ZjcsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhhLCAweDEzLCAweDZjLCAweDMzLCAweGEsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg2YiwgMHhhLCAweGY3LCAweDljLCAweGE5LCAweDYsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg1LCAweDY1LCAweDhlLCAweDhkLCAweDk3LCAweGE3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MWQsIDB4NTYsIDB4NywgMHg2NywgMHg1YSwgMHg2NCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDgyLCAweDgsIDB4N2EsIDB4YzUsIDB4NywgMHhiNSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDYxLCAweDFmLCAweGZiLCAweDhhLCAweDcsIDB4NzQsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg3MiwgMHg4OSwgMHgxZSwgMHg1YSwgMHg4NywgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhhZSwgMHg2OCwgMHhmNywgMHgxMSwgMHhmOCwgMHg3MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NjgsIDB4NGMsIDB4YSwgMHg2OCwgMHhmNywgMHg1MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGY3LCAweDVjLCAweGZiLCAweDUxLCAweGY3LCAweDUxLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MTMsIDB4OTgsIDB4ODAsIDB4MjIsIDB4YSwgMHgxMywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZjcsIDB4MzAsIDB4NmIsIDB4YSwgMHhhMiwgMHg3LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YzEsIDB4YzIsIDB4YjQsIDB4MWUsIDB4YzEsIDB4YjMsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhkNiwgMHgxYSwgMHhiMywgMHg3YywgMHhiOCwgMHg1YywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDdiLCAweDc4LCAweDFlLCAweDdmLCAweDkxLCAweDgxLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NzEsIDB4NzYsIDB4NzcsIDB4NzEsIDB4NmMsIDB4NzgsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhhNywgMHg5OSwgMHhhMSwgMHhhMCwgMHg5YywgMHgxZSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGIyLCAweDkxLCAweGIxLCAweDFiLCAweGQ4LCAweGUyLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZmIsIDB4MmUsIDB4ZmIsIDB4NmQsIDB4OWEsIDB4NTgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweDFmLCAweGY3LCAweDYwLCAweDYsIDB4YmEsIDB4OGUsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg5NiwgMHgxZiwgMHgxMywgMHg2NSwgMHgwLCAweDk5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NiwgMHhlLCAweDdkLCAweGFlLCAweGY5LCAweDFhLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgyMiwgMHhhLCAweGY3LCAweDhmLCAweDkxLCAweDE1LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4OGIsIDB4OWMsIDB4YzcsIDB4YWUsIDB4NjgsIDB4NGYsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg0NiwgMHg0ZiwgMHg3OCwgMHg2ZCwgMHg5ZCwgMHhhMywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDkxLCAweDk2LCAweDk2LCAweDFhLCAweGE3LCAweDc5LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NjgsIDB4NzcsIDB4NzcsIDB4NjgsIDB4NjgsIDB4YTUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg3YiwgMHgxZSwgMHg3YSwgMHhhYSwgMHhiMCwgMHg4NCwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGU2LCAweGYzLCAweGI5LCAweGY0LCAweGY3LCAweDIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHg5MiwgMHg4OCwgMHg5MSwgMHgxZiwgMHg4OSwgMHg4ZiwgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweGNkLCAweDFhLCAweGRjLCAweDNjLCAweGEwLCAweDQ4LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4NzksIDB4NDUsIDB4NmYsIDB4OWYsIDB4NzksIDB4YTYsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhhMywgMHhhMywgMHg5MiwgMHg4YSwgMHg5MiwgMHg4NywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGEyLCAweGE4LCAweDlkLCAweDlkLCAweGJiLCAweGEwLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4NTAsIDB4NWIsIDB4NmEsIDB4NTQsIDB4MWUsIDB4NzUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2QsIDB4YWUsIDB4ZTUsIDB4ZjcsIDB4M2QsIDB4NWEsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxYSwgMHg0YywgMHhhLCAweGY3LCAweGMyLCAweGU0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4YWUsIDB4MTMsIDB4YmUsIDB4MjIsIDB4YSwgMHhmNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NywgMHgxNSwgMHhmNywgMHg1NSwgMHg3OCwgMHg2LCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4OGIsIDB4NmUsIDB4ODgsIDB4MWUsIDB4NzcsIDB4ODksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRlLCAweDZlLCAweGY3LCAweDcxLCAweGE4LCAweDcsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg1LCAweDU0LCAweDk0LCAweDkxLCAweDg5LCAweGM5LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmUsIDB4OWUsIDB4ZWUsIDB4YmMsIDB4MjgsIDB4ZjcsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHg3LCAweGZiLCAweDU2LCAweGZiLCAweGQ0LCAweDUsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHgxNSwgMHhmNywgMHgxMiwgMHhmNywgMHg2MywgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NywgMHhlLCAweDdlLCAweGFlLCAweGRkLCAweGFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4YjUsIDB4ZGYsIDB4ZTEsIDB4ZjEsIDB4NGMsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweGI0LCAweGY3LCAweDMzLCAweGY3LCAweDYsIDB4ZjcsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgxNywgMHgyMywgMHhhLCAweGFlLCAweDE2LCAweDQwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhhLCAweDFlLCAweDEzLCAweGYzLCAweDgwLCAweDI4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNCwgMHhmYiwgMHg0OCwgMHgxZiwgMHgxMywgMHg3NywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDcsIDB4ZmIsIDB4MjUsIDB4ZjcsIDB4MjQsIDB4ZjcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHg0MywgMHg3NiwgMHgxNSwgMHhiNCwgMHg3YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OWQsIDB4YTcsIDB4YTIsIDB4YWIsIDB4MWIsIDB4YzMsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg1YSwgMHg1NywgMHg2YSwgMHg0ZCwgMHg1MCwgMHg3OSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweGEyLCAweDFmLCAweDk4LCAweDk1LCAweDk0LCAweDliLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NzEsIDB4OWEsIDB4NmYsIDB4NmIsIDB4NzksIDB4NzIsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHhlZiwgMHg3MywgMHhjNCwgMHhlOCwgMHhlZiwgMHhjNCwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDNiLCAweGJhLCAweDNiLCAweDY2LCAweDVkLCAweDgxLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MWUsIDB4ZjcsIDB4ZCwgMHg3LCAweGU5LCAweDg4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhjYSwgMHg4NiwgMHhhNCwgMHhhYiwgMHgxZiwgMHg5ZCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGI3LCAweDkwLCAweGEzLCAweDgsIDB4N2YsIDB4NjUsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg2NCwgMHgxYiwgMHg1MSwgMHg0NCwgMHg5MiwgMHg5OCwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4N2QsIDB4YWUsIDB4ZjksIDB4MWQsIDB4YWUsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGEsIDB4ZjcsIDB4NzUsIDB4NzgsIDB4MTUsIDB4YjcsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhhOSwgMHhjMCwgMHgxYiwgMHhkYSwgMHhjNywgMHg1NiwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDM4LCAweDRjLCAweDJjLCAweGZiLCAweDFkLCAweDRlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHgxMSwgMHhmNywgMHgxMSwgMHhjZSwgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFjLCAweGMxLCAweGU2LCAweDc0LCAweDQ3LCAweDZlLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NmMsIDB4NzEsIDB4NzcsIDB4OWUsIDB4YTUsIDB4MWYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg5OCwgMHg5NSwgMHgxYSwgMHhhMywgMHg2NSwgMHg5NiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDgwLCAweGZiLCAweDksIDB4NDEsIDB4MWUsIDB4OTEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDE1LCAweDU1LCAweGIxLCAweDU4LCAweGM2LCAweGM2LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4YmYsIDB4YmEsIDB4NzYsIDB4YzcsIDB4NTIsIDB4NGMsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg1MCwgMHgxZSwgMHhlLCAweDdkLCAweGFlLCAweGY4LCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4ZTQsIDB4NGMsIDB4YSwgMHhmNywgMHg3MiwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NCwgMHhmNywgMHhjLCAweGY3LCAweGM3LCAweGFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4MjIsIDB4YSwgMHhmNywgMHgyNywgMHhjZCwgMHgxNSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjgsIDB4OWYsIDB4OGQsIDB4YWUsIDB4YjIsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg2LCAweDIwLCAweGZiLCAweDI0LCAweDUsIDB4NjcsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg0NiwgMHg0ZCwgMHgxYSwgMHg2NSwgMHhhMSwgMHg2ZiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGEyLCAweGEyLCAweGFmLCAweDFlLCAweDEzLCAweGZhLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4YTIsIDB4YTIsIDB4MWEsIDB4Y2UsIDB4YmIsIDB4ZDAsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgxZSwgMHhlNywgMHhmNywgMHgzMiwgMHg1LCAweGZiLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweDdkLCAweGFlLCAweGRlLCAweGIxLCAweGY4LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4ZGQsIDB4NGMsIDB4YSwgMHhmNywgMHgyZSwgMHhjNSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGY3LCAweDFkLCAweGJkLCAweDYwLCAweGUzLCAweGY3LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MTMsIDB4ZmMsIDB4YzAsIDB4ZjcsIDB4ZDcsIDB4ZjcsIDB4ZmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1NSwgMHg2YywgMHg1ZSwgMHg2YSwgMHg0NiwgMHgxYSwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweDZhLCAweGQ5LCAweGUzLCAweGU4LCAweGMwLCAweGViLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4YWYsIDB4NGUsIDB4YTksIDB4MWUsIDB4MTMsIDB4YmIsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhhNCwgMHhhNCwgMHhhNCwgMHhiZCwgMHgxYSwgMHhkMSwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDUxLCAweDFlLCAweDQyLCAweDQ3LCAweDVkLCAweDNjLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4NmUsIDB4YjEsIDB4NzQsIDB4MWYsIDB4ZjAsIDB4YmIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHhhNCwgMHg2MSwgMHg5ZCwgMHhiNCwgMHgxYSwgMHhhZSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGFkLCAweDFlLCAweDEzLCAweDk5LCAweDQwLCAweGI0LCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NjAsIDB4NjksIDB4NzksIDB4NmYsIDB4NmUsIDB4N2IsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg0OCwgMHgxNSwgMHgxMywgMHhkYywgMHhjMCwgMHhhMCwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDgxLCAweDlhLCAweDgxLCAweDgsIDB4YjgsIDB4NmYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg2YSwgMHgxYSwgMHg1NCwgMHg2MiwgMHg2YiwgMHg1NywgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGI2LCAweGMyLCAweGI0LCAweGIyLCAweGI1LCAweGFmLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4ZDYsIDB4OGUsIDB4MzcsIDB4YSwgMHgxMywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgzMywgMHhhLCAweDFmLCAweGUsIDB4N2QsIDB4YWUsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg2YSwgMHhmNywgMHgyNiwgMHhiNCwgMHhiYSwgMHg5OCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcyLCAweGFlLCAweGRkLCAweDRjLCAweGEsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHg0YywgMHhlOCwgMHhmNywgMHgyNCwgMHhmNywgMHgxLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4MjUsIDB4ZjEsIDB4ZjcsIDB4MTgsIDB4YWUsIDB4MTMsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHgyZSwgMHhhLCAweGY3LCAweDViLCAweGY3LCAweDVhLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg1YSwgMHhmYiwgMHg1YiwgMHgyYSwgMHhhLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4NDAsIDB4YSwgMHhmNywgMHgyNSwgMHhmNywgMHg0OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweDJmLCAweGEsIDB4ZmIsIDB4NDcsIDB4ZmIsIDB4NDgsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDFlLCAweGY4LCAweDMxLCAweDkwLCAweDE1LCAweDEzLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4OGQsIDB4NiwgMHgyMiwgMHg4ZSwgMHg3YSwgMHhmYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4MWIsIDB4NzcsIDB4NjksIDB4OTUsIDB4YTMsIDB4MWYsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg5NiwgMHg5OCwgMHgxYSwgMHgxMywgMHhiNywgMHg1NCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGEwLCAweDcyLCAweDZkLCAweDc4LCAweDcyLCAweDZlLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4NzIsIDB4YzEsIDB4Y2QsIDB4YmQsIDB4OWIsIDB4YzQsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhZSwgMHhiZiwgMHg5YSwgMHhjZSwgMHhjOSwgMHgxYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NDksIDB4ZjcsIDB4NCwgMHhmYiwgMHgxNiwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGE0LCAweDJhLCAweDQ0LCAweDRmLCAweDIzLCAweDM5LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4ZGIsIDB4MWYsIDB4MTMsIDB4Y2YsIDB4OTQsIDB4YmYsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhiNiwgMHhhOSwgMHgxZiwgMHhmYiwgMHg0NywgMHhlNiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGEzLCAweGMzLCAweGNhLCAweDFlLCAweDEzLCAweGQ3LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4YWMsIDB4NTcsIDB4NWEsIDB4NTMsIDB4NzAsIDB4NTEsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg3MiwgMHhjMCwgMHhiZSwgMHgxZiwgMHhlLCAweDdkLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4YWYsIDB4ZjcsIDB4ZWUsIDB4OWIsIDB4YjAsIDB4YWQsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhhLCAweGY3LCAweDQyLCAweGRmLCAweGJhLCAweGViLCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4YmMsIDB4YWUsIDB4MTcsIDB4ZjgsIDB4YiwgMHhmNywgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweGZmLCAweGMwLCAweDIyLCAweDlkLCAweGZiLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4ZjcsIDB4MTYsIDB4OWQsIDB4ZjcsIDB4MTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGU5LCAweDdhLCAweGY3LCAweDIzLCAweGZiLCAweDExLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NzksIDB4ZmIsIDB4MTYsIDB4MjAsIDB4MWUsIDB4ZWIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg4YSwgMHhmNywgMHgzNywgMHhjMCwgMHhjMSwgMHg4OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDY0LCAweDY2LCAweDhjLCAweGZiLCAweDMzLCAweDU3LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4ZjcsIDB4MzIsIDB4YjEsIDB4MWUsIDB4ZmMsIDB4NDgsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhhLCAweGY3LCAweDgsIDB4NmIsIDB4YSwgMHhmNywgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDYsIDB4ODAsIDB4OGMsIDB4NSwgMHg1YSwgMHg4ZiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDlkLCAweDFhLCAweGY4LCAweDJiLCAweDU0LCAweDcsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg2OSwgMHg3NSwgMHg1OCwgMHg4OCwgMHg4LCAweDdiLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxMywgMHgyLCAweDAsIDB4YWIsIDB4YTUsIDB4OGYsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHhhZiwgMHg3LCAweDc2LCAweDgzLCAweDg2LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MWUsIDB4NmMsIDB4ODksIDB4NSwgMHhlLCAweGZiLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4YTMsIDB4YjgsIDB4NzYsIDB4ZjcsIDB4N2MsIDB4OWEsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhmNywgMHhhLCAweDlhLCAweGI2LCAweGEzLCAweGY3LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ODYsIDB4YTMsIDB4MTIsIDB4ZjcsIDB4MWUsIDB4YTQsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhhZSwgMHg5YSwgMHg4YiwgMHg5YiwgMHhhMSwgMHg5YiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGFjLCAweGE0LCAweDgwLCAweGEzLCAweDEzLCAweGZkLCAweGZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4ODgsIDB4MTUsIDB4NmEsIDB4YTQsIDB4YWUsIDB4N2MsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhhYiwgMHhhYiwgMHg5NSwgMHg5ZSwgMHhhNiwgMHgxZiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFlLCAweGIxLCAweGIxLCAweGI3LCAweGQ0LCAweGJiLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4YjIsIDB4NzUsIDB4YjYsIDB4OGYsIDB4YjMsIDB4OTAsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhhYSwgMHg2YywgMHg4ZiwgMHg3NCwgMHg3ZiwgMHhhMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDUsIDB4YWIsIDB4OGYsIDB4NzYsIDB4OWQsIDB4NzQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg3NiwgMHg3ZiwgMHg3MCwgMHg4NCwgMHgxZiwgMHg1YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDcxLCAweGU2LCAweDc5LCAweGRiLCAweDUsIDB4MTMsIDB4ZmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHhhNCwgMHg4NSwgMHg4MiwgMHg5ZCwgMHg2ZCwgMHgxYiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDZhLCAweDdhLCAweDhjLCAweDFmLCAweDk4LCAweGZiLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4ODgsIDB4NzIsIDB4NzQsIDB4NzgsIDB4ZmIsIDB4MjEsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3LCAweDUsIDB4ZjcsIDB4NjgsIDB4ZjcsIDB4MjksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhhYSwgMHg3NSwgMHg3ZCwgMHhhOSwgMHg5ZSwgMHhhNCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDk0LCAweDlhLCAweDlhLCAweDZlLCAweDg4LCAweDc4LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4NjUsIDB4N2UsIDB4NWIsIDB4NzYsIDB4ODYsIDB4YTUsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2YiwgMHhmYiwgMHg5MiwgMHgxNSwgMHhhOSwgMHhmNiwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgsIDB4OWMsIDB4ZjcsIDB4MTIsIDB4OTksIDB4OTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhMCwgMHg5OCwgMHg4OSwgMHg5MywgMHg3ZCwgMHg4MSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDc5LCAweDcyLCAweDYxLCAweDdiLCAweDZlLCAweDgwLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4MTgsIDB4ODUsIDB4N2QsIDB4YjMsIDB4NzcsIDB4YTIsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg2YywgMHg5MSwgMHg2MSwgMHgxOSwgMHg5OSwgMHg4ZSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDg1LCAweGE4LCAweDc3LCAweGE1LCAweDE5LCAweGFhLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4OWIsIDB4OWUsIDB4YTUsIDB4OCwgMHg5MSwgMHg5MywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDkzLCAweDFhLCAweDlhLCAweDgwLCAweDk4LCAweDc3LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MjksIDB4N2MsIDB4N2UsIDB4ZjcsIDB4OTIsIDB4NSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDkxLCAweDkwLCAweDkwLCAweDFiLCAweDk3LCAweDhmLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4OGYsIDB4MWYsIDB4OWQsIDB4M2IsIDB4YjEsIDB4ZmIsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGE2LCAweDYsIDB4YzYsIDB4ZjcsIDB4ODAsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweGZlLCAweDk4LCAweDhlLCAweDk0LCAweDkyLCAweDk0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OTQsIDB4ODMsIDB4N2MsIDB4ODksIDB4MWYsIDB4NzAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhjNSwgMHhhYSwgMHg5OSwgMHg4OSwgMHg5YiwgMHg3OSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDg2LCAweDYxLCAweDdlLCAweDc2LCAweGZiLCAweDAsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg4YywgMHg4NSwgMHg4ZSwgMHg4OSwgMHg5MSwgMHgxOSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGI1LCAweGEyLCAweDljLCAweDk4LCAweGIwLCAweGNiLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4OTEsIDB4NTYsIDB4NWMsIDB4OWIsIDB4N2MsIDB4NSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDVjLCAweDcxLCAweDcyLCAweDFhLCAweDg4LCAweDhiLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4ODgsIDB4MWUsIDB4ODAsIDB4OGYsIDB4OTksIDB4ODIsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhhMSwgMHg5MywgMHg1LCAweDc2LCAweDhjLCAweDk4LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4MWIsIDB4OTUsIDB4OTcsIDB4OGQsIDB4OGYsIDB4OTgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg0OSwgMHg2MywgMHg2NSwgMHg1YywgMHhmYiwgMHgxZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NzgsIDB4NzEsIDB4ODMsIDB4NzIsIDB4MWIsIDB4NzAsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg5ZiwgMHg3YSwgMHgxZiwgMHhlLCAweDdkLCAweGVmLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4ZWUsIDB4MSwgMHhmNywgMHhmNCwgMHhmMCwgMHgyNiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzQsIDB4ZmIsIDB4OTgsIDB4MTUsIDB4YWMsIDB4NywgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweGFkLCAweDhkLCAweDkxLCAweGFkLCAweDhhLCAweGE2LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTgsIDB4NywgMHhiNywgMHg4YywgMHg4ZSwgMHg1ZSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDlmLCAweDYsIDB4ZDAsIDB4OTUsIDB4YTQsIDB4YTgsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHg4LCAweGQ4LCAweGZjLCAweDM5LCAweDYsIDB4NGEsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhjOSwgMHg4NiwgMHgxZSwgMHg5ZiwgMHg4YSwgMHg1LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweDdkLCAweGVmLCAweGY4LCAweGEzLCAweGU3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZjcsIDB4NDMsIDB4ZmIsIDB4NDMsIDB4ZjcsIDB4NTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhmNywgMHg0YiwgMHhmYiwgMHgzZiwgMHhmNywgMHgzZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDIzLCAweGEsIDB4ZjcsIDB4NDMsIDB4ZmIsIDB4OTgsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhmNiwgMHhjMiwgMHhjNiwgMHhjOCwgMHhiOCwgMHg4LCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZDEsIDB4YzAsIDB4ZGUsIDB4MWEsIDB4YjcsIDB4N2MsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg3YiwgMHg2NSwgMHg3OSwgMHg3NywgMHgxZSwgMHg3ZSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDdkLCAweDFhLCAweDZlLCAweDczLCAweDc0LCAweDZlLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDgsIDB4NjksIDB4NzYsIDB4YTYsIDB4YWMsIDB4ZDksIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhjYywgMHhlMiwgMHhlZiwgMHg2NywgMHgyNSwgMHgyZiwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDQyLCAweDY4LCAweDFmLCAweDU0LCAweDcyLCAweDQyLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NTEsIDB4OCwgMHhmNywgMHg3NSwgMHg2LCAweDliLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4OGIsIDB4OTIsIDB4OWMsIDB4YTQsIDB4ZTAsIDB4MTgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHg5ZCwgMHhmYiwgMHg1YywgMHg2LCAweGUsIDB4N2QsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhOSwgMHg3NywgMHhiYSwgMHhkZSwgMHgzOCwgMHhmNywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGU3LCAweDEyLCAweGFlLCAweGY3LCAweDNjLCAweGZiLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTMsIDB4ZTcsIDB4ZjcsIDB4MmUsIDB4ZmIsIDB4MjQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGYyLCAweGY3LCAweDVjLCAweGZiLCAweDM3LCAweGY3LCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZGMsIDB4YzAsIDB4MjMsIDB4YSwgMHhmNywgMHhhYSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGE1LCAweGEzLCAweDcsIDB4YzksIDB4YmYsIDB4YjQsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg3NCwgMHhiMiwgMHg1NSwgMHg2OSwgMHg3YSwgMHg3NiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDgzLCAweDkwLCAweDhhLCAweDc4LCAweDFhLCAweDEzLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4NzAsIDB4NzQsIDB4NzIsIDB4NzAsIDB4NmMsIDB4NzYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhkOCwgMHhmNiwgMHhhMCwgMHhjNiwgMHhkNSwgMHhlMywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDRhLCAweDYxLCAweDZkLCAweDUzLCAweDdhLCAweDFlLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4N2UsIDB4ODksIDB4ODcsIDB4MWEsIDB4ODUsIDB4OTMsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5OSwgMHhiNSwgMHg3ZSwgMHg4NSwgMHg5NywgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDIwLCAweGI4LCAweDc2LCAweGE1LCAweDYyLCAweDVhLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NSwgMHhmYiwgMHg1LCAweDU1LCAweDI4LCAweDY1LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OWMsIDB4NjksIDB4MWUsIDB4NmEsIDB4OWMsIDB4NmIsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHgxYSwgMHhiMSwgMHhhMCwgMHhhMSwgMHhiMywgMHhhYywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDZiLCAweDFlLCAweDdlLCAweDg0LCAweDgwLCAweDdlLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4YWMsIDB4ODIsIDB4YTAsIDB4Y2QsIDB4YjQsIDB4Y2QsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHg2NSwgMHhiMiwgMHg0OCwgMHg3OSwgMHg3OSwgMHg5MCwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDFlLCAweGUsIDB4N2QsIDB4ZWYsIDB4OGIsIDB4ZDMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhlZSwgMHgxMiwgMHhhZSwgMHhmOCwgMHhiMywgMHhmYiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjIsIDB4MTMsIDB4ZjAsIDB4MjksIDB4YSwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDI0LCAweGEsIDB4MWYsIDB4MTMsIDB4ZjAsIDB4MjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweGQsIDB4ZmIsIDB4MTMsIDB4MTUsIDB4YWMsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZkLCAweGY3LCAweGY2LCAweDUsIDB4MTMsIDB4ZTgsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlMSwgMHg2LCAweDEzLCAweGYwLCAweGY3LCAweDIsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGU4LCAweGZiLCAweDIsIDB4NGMsIDB4NiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDg0LCAweDliLCAweDg4LCAweDFlLCAweGJlLCAweDgyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhmYiwgMHhhMCwgMHhhYiwgMHg3LCAweGQyLCAweDk0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg4ZSwgMHg4ZSwgMHhhMCwgMHg5MiwgMHgxYSwgMHhjOCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmIsIDB4YzEsIDB4MTUsIDB4ZjcsIDB4MmIsIDB4ZjcsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4N2IsIDB4ZTcsIDB4MzEsIDB4ZTcsIDB4ZjcsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhjZSwgMHhlOCwgMHhlOSwgMHhmNywgMHg2LCAweDEyLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmUsIDB4ZmIsIDB4MmUsIDB4ZjcsIDB4NTcsIDB4ZDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhmNywgMHgxMiwgMHhmNywgMHg0NiwgMHgxMywgMHhiZCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGEsIDB4MTMsIDB4N2QsIDB4ODAsIDB4MmMsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDgwLCAweGY3LCAweDU3LCAweDc0LCAweDE1LCAweDhjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4NSwgMHg3ZCwgMHhjYywgMHhkYSwgMHg4MiwgMHhjOCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGI5LCAweDhlLCAweDk5LCAweGI2LCAweDFmLCAweDg1LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NTgsIDB4NzgsIDB4N2QsIDB4OCwgMHg2ZiwgMHg2NiwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDVmLCAweDFiLCAweDIzLCAweDhmLCAweDUsIDB4ZmIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGE3LCAweGFjLCAweGJmLCAweDk2LCAweGI0LCAweDFiLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4ODIsIDB4NzIsIDB4YWMsIDB4MWYsIDB4YjAsIDB4NzEsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg1ZCwgMHgxYSwgMHgxMywgMHg3ZCwgMHg4MCwgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MiwgMHg0YywgMHgyMywgMHg0ZCwgMHhmYiwgMHgzLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4YWMsIDB4OWYsIDB4YTcsIDB4YWYsIDB4YWEsIDB4YTcsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgxZSwgMHg3OCwgMHg4MSwgMHg4MSwgMHg3ZSwgMHgxYSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDgyLCAweDlmLCAweGNjLCAweGFmLCAweGQwLCAweGM0LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4YzYsIDB4NGQsIDB4NjcsIDB4NmQsIDB4NzEsIDB4NzAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDdkLCAweGU3LCAweGY3LCAweGE5LCAweDc3LCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NWQsIDB4ZjcsIDB4M2YsIDB4YWUsIDB4ZTcsIDB4MTIsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyOSwgMHhmNywgMHg3LCAweGY3LCAweDU1LCAweDZhLCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZjcsIDB4NTQsIDB4ZmIsIDB4M2EsIDB4ZjcsIDB4M2EsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg0MCwgMHgyMywgMHhhLCAweGY3LCAweDk3LCAweDc2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4YWEsIDB4YzMsIDB4YWMsIDB4YzUsIDB4MWIsIDB4ZTMsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHgzMSwgMHhmYiwgMHgzLCAweDM0LCAweDRkLCAweDIyLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4YTAsIDB4YzAsIDB4NjMsIDB4MWYsIDB4NjUsIDB4YmUsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhjYSwgMHgxYSwgMHhjYiwgMHg5MywgMHhjZiwgMHhhZCwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGNmLCAweGI1LCAweGM0LCAweGE2LCAweGRhLCAweDFiLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ODAsIDB4YzcsIDB4ZWQsIDB4NzIsIDB4NDAsIDB4NmIsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2OCwgMHg2ZSwgMHg3NSwgMHg5ZiwgMHhhOCwgMHgxZiwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDk5LCAweDk2LCAweDFhLCAweDEzLCAweGRlLCAweDQwLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4OTcsIDB4NzYsIDB4NTYsIDB4N2MsIDB4NmQsIDB4NWUsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3YywgMHg1YSwgMHg4YiwgMHg0NSwgMHg4MywgMHg1MCwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MzMsIDB4MTUsIDB4NGUsIDB4YTYsIDB4NGYsIDB4ZDEsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhjYiwgMHhjNSwgMHhiZiwgMHg3MiwgMHhjYywgMHg0ZSwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDU1LCAweDRiLCAweDFlLCAweGUsIDB4N2QsIDB4ZTgsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhlZCwgMHgxLCAweGFlLCAweGY3LCAweDM4LCAweDI2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzOCwgMHhkNSwgMHgxNSwgMHg4YywgMHhmNywgMHg0ZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MWUsIDB4NiwgMHgyNSwgMHhmYiwgMHg0NCwgMHg1LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4NTYsIDB4M2YsIDB4NDIsIDB4NzEsIDB4OTQsIDB4NmMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2NCwgMHg3MiwgMHg3MSwgMHg2NCwgMHg1ZiwgMHg3MywgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGNmLCAweGMyLCAweGQ3LCAweGI0LCAweGJmLCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgzNCwgMHg1LCAweGZiLCAweDZiLCAweDYsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg4NCwgMHg3MSwgMHg4NCwgMHgxZiwgMHg3OSwgMHg1NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3ZCwgMHhlNywgMHhmOCwgMHhhYiwgMHhlNywgMHgxMiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNmLCAweGQ3LCAweGY3LCAweDYxLCAweGZiLCAweDM0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZjQsIDB4ZjcsIDB4M2UsIDB4MTMsIDB4ZWMsIDB4MjMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFkLCAweDlkLCAweDE1LCAweDYwLCAweGE1LCAweDc1LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MWEsIDB4ZTEsIDB4Y2QsIDB4YmQsIDB4ZGIsIDB4Y2IsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHgzZSwgMHg1MywgMHg2ZiwgMHg3MywgMHg2MSwgMHg3MCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweDZhLCAweGJmLCAweDYzLCAweDNhLCAweDFhLCAweDIwLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4MmEsIDB4MzUsIDB4MmEsIDB4YjAsIDB4ZjEsIDB4ZDcsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhjOCwgMHhhZCwgMHgxZSwgMHhmNywgMHg0LCAweGJmLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4OWUsIDB4OWYsIDB4YWEsIDB4YjAsIDB4MWEsIDB4YmIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg1ZSwgMHg2NiwgMHg2YSwgMHg2NiwgMHg2NSwgMHg1ZiwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGFjLCAweDdhLCAweDFlLCAweDU4LCAweDM0LCAweDE1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4NjEsIDB4NzUsIDB4NmUsIDB4NWQsIDB4NWIsIDB4MWEsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHg1YywgMHhjNywgMHhjNCwgMHhiOSwgMHhhZiwgMHhjNywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGE1LCAweDY2LCAweGEwLCAweDFlLCAweGUsIDB4N2QsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhmNywgMHgzZSwgMHg1ZSwgMHhiOCwgMHhmNywgMHhkYywgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGFlLCAweGY3LCAweDM2LCAweGZiLCAweDM2LCAweGY3LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4ZjcsIDB4NTUsIDB4ZjcsIDB4NiwgMHhmNywgMHgyZCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDIzLCAweGEsIDB4ZjgsIDB4NWUsIDB4OTAsIDB4MTUsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg1NCwgMHg3NiwgMHg1NCwgMHgxYiwgMHgzMCwgMHg0ZCwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweDAsIDB4ZTQsIDB4YzEsIDB4ZjMsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhmYiwgMHhmLCAweGZiLCAweDFjLCAweDQ3LCAweDgyLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NTIsIDB4MWYsIDB4NDksIDB4NjEsIDB4NTEsIDB4NzcsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgxMywgMHhiNywgMHg0ZiwgMHgyZCwgMHhhNywgMHhkNSwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGE3LCAweGFkLCAweGE2LCAweGEwLCAweDczLCAweDcwLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ODUsIDB4N2YsIDB4ODEsIDB4MWEsIDB4MTMsIDB4ZGIsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg4MCwgMHhhMCwgMHhlZSwgMHg5ZiwgMHhmNywgMHgxYiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDViLCAweGY3LCAweDEzLCAweDE1LCAweDUyLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4Y2IsIDB4ZDEsIDB4YWEsIDB4Y2IsIDB4YzgsIDB4YzIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHg0ZiwgMHg0NSwgMHg3MSwgMHg0ZSwgMHg0ZSwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ZTcsIDB4MmYsIDB4ZWYsIDB4ZjgsIDB4NGMsIDB4ZjcsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHhlZSwgMHgyZiwgMHhlNywgMHgxMiwgMHhhZSwgMHhmNywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGM0LCAweGYxLCAweGY3LCAweDUsIDB4ZWIsIDB4Y2MsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg4MCwgMHgyMywgMHhhLCAweGY3LCAweDE1LCAweGZiLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YjAsIDB4NywgMHhhZCwgMHg4ZSwgMHg1LCAweGIwLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4YTEsIDB4YTksIDB4MWEsIDB4ZjcsIDB4YjUsIDB4NywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDg3LCAweDY3LCAweDFlLCAweDZiLCAweDllLCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg4MCwgMHhjNCwgMHg4ZSwgMHg5YiwgMHhhMywgMHhhYSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZGQsIDB4ZmMsIDB4M2UsIDB4NiwgMHg1NiwgMHg4OCwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDg2LCAweDFlLCAweDk4LCAweDg5LCAweDUsIDB4NjYsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweGY3LCAweDkzLCAweDE1LCAweDEzLCAweDhmLCAweDgwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg5MywgMHhmNywgMHgyZSwgMHhmNywgMHgyYSwgMHhmNywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGZiLCAweDNjLCAweDIzLCAweGZiLCAweDAsIDB4N2UsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhmYiwgMHgxZiwgMHhmYiwgMHgyOSwgMHg4MSwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQsIDB4MWUsIDB4ZjEsIDB4MTYsIDB4NjAsIDB4ODksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhjNiwgMHhjNCwgMHg4YSwgMHhmNywgMHg0YiwgMHhiMywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ1LCAweDgwLCAweDgxLCAweGM0LCAweDY3LCAweDFiLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ZmIsIDB4NTcsIDB4NjQsIDB4MWYsIDB4ZSwgMHg5YiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGMzLCAweGE0LCAweDg2LCAweGE1LCAweGFiLCAweDlhLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4OTYsIDB4OWQsIDB4ZjcsIDB4NiwgMHhmNywgMHgzZCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDc5LCAweGE4LCAweDcwLCAweGY3LCAweDMyLCAweDEyLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ZjgsIDB4M2IsIDB4OWEsIDB4ZjcsIDB4N2IsIDB4OWIsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHgxMywgMHhiYywgMHhiYywgMHhjZiwgMHhiNSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGMyLCAweDUsIDB4MTMsIDB4ZGMsIDB4YmMsIDB4ODAsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg3YiwgMHhhYywgMHgxYiwgMHhiNSwgMHhiNSwgMHg5ZCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDFmLCAweGQwLCAweDcwLCAweGM5LCAweGFkLCAweGM0LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NjcsIDB4YWUsIDB4NzgsIDB4YjYsIDB4YTksIDB4MTksIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4ZSwgMHg4NiwgMHhkYywgMHgzMiwgMHg5NCwgMHg5MSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4NzMsIDB4YjUsIDB4OWEsIDB4OGUsIDB4OTgsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg5YywgMHgxOSwgMHg4NiwgMHhmNywgMHgyNCwgMHhmYiwgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTgsIDB4NTQsIDB4OWYsIDB4NjEsIDB4OGUsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDdjLCAweDNhLCAweGY3LCAweDIwLCAweDUsIDB4NDAsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGZiLCAweDFiLCAweDI1LCAweDkxLCAweDU4LCAweDdhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ZmIsIDB4MzQsIDB4NTgsIDB4ODAsIDB4NSwgMHg3MywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDUzLCAweDVmLCAweDFhLCAweDVjLCAweDlmLCAweDRiLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4MWUsIDB4MTMsIDB4YmUsIDB4M2MsIDB4ZjgsIDB4ZWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHgxNSwgMHgzZCwgMHhmNywgMHgxYiwgMHhhMCwgMHg4YSwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGY3LCAweDIsIDB4ZmIsIDB4YywgMHg4ZSwgMHhmYiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDgyLCAweDgzLCAweDhhLCAweDgzLCAweDhjLCAweDE5LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4NSwgMHg5NCwgMHg5NSwgMHg4ZiwgMHg5OCwgMHg5NywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDc4LCAweDlmLCAweDczLCAweDhmLCAweDFlLCAweDU5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4MTUsIDB4NzgsIDB4ZDMsIDB4YjIsIDB4OTMsIDB4YzMsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg3YSwgMHg2YiwgMHg3OSwgMHg3NCwgMHhhYSwgMHg3YiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGZiLCAweDIwLCAweDhjLCAweDE1LCAweDgxLCAweDkzLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4OTIsIDB4MWEsIDB4OTksIDB4OTYsIDB4OTcsIDB4OWUsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4YiwgMHhjNywgMHg5MSwgMHhhOSwgMHg5MCwgMHgxZSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDU0LCAweDdmLCAweDUsIDB4ZmMsIDB4N2EsIDB4NDQsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhhZiwgMHg3ZCwgMHhiMCwgMHhiNywgMHgxYSwgMHhiOCwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDllLCAweGFjLCAweDFlLCAweGI5LCAweDk1LCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgzYywgMHhmNywgMHg4NywgMHhmNywgMHgzNiwgMHhiOCwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4ODUsIDB4ZDUsIDB4ZmIsIDB4MTQsIDB4NWEsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhhZCwgMHg5MiwgMHhhYywgMHg3OSwgMHg4ZSwgMHg3YiwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI0LCAweDdkLCAweDhjLCAweDdjLCAweGY3LCAweDZhLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGMsIDB4NzAsIDB4NSwgMHg5ZSwgMHg4OCwgMHg5NSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDFhLCAweDgxLCAweDg4LCAweDgxLCAweDgyLCAweDg0LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NDIsIDB4MmEsIDB4N2QsIDB4NGYsIDB4MWIsIDB4NmQsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg1OSwgMHg0MywgMHg2OSwgMHg0YSwgMHg4OSwgMHgzZSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDg4LCAweDdjLCAweGQ3LCAweDc5LCAweGNhLCAweDhkLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4MTksIDB4YTYsIDB4NjMsIDB4NSwgMHgxMywgMHhkYywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDZhLCAweDYzLCAweDc4LCAweDY1LCAweDFiLCAweDZjLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OTUsIDB4NmUsIDB4MWYsIDB4ZjcsIDB4N2IsIDB4OTksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhiNCwgMHg4ZSwgMHg4ZCwgMHhhMCwgMHhhNiwgMHhiZSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODIsIDB4ODMsIDB4ODIsIDB4ODEsIDB4N2IsIDB4MWEsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg3ZiwgMHg5OCwgMHg4MiwgMHgxZSwgMHhiZiwgMHg4MSwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDUsIDB4ZSwgMHg3ZCwgMHhhZSwgMHhmOCwgMHg1MiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRhLCAweDc0LCAweGEsIDB4ZjcsIDB4YmUsIDB4YzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhhZSwgMHgzLCAweDIyLCAweGEsIDB4ZjcsIDB4YmUsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGM5LCAweGY4LCAweDZhLCAweDUxLCAweDYsIDB4N2UsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg3MCwgMHg0ZCwgMHg4YSwgMHg4LCAweDc2LCAweGVjLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdkLCAweGFlLCAweGU1LCAweGJlLCAweGY4LCAweGIsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHg3NCwgMHhhLCAweGY3LCAweDNmLCAweGM3LCAweGY3LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4ZjcsIDB4NDIsIDB4YWUsIDB4MywgMHgyMiwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4NmIsIDB4YSwgMHhmNywgMHhiZSwgMHhiZSwgMHhmYiwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OWEsIDB4YWUsIDB4YWUsIDB4YTAsIDB4YTksIDB4OWYsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGJlLCAweGQ4LCAweGJiLCAweGYyLCAweDFhLCAweGU0LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4MzUsIDB4MzgsIDB4NGEsIDB4NGQsIDB4ZmIsIDB4MSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGM3LCAweDg2LCAweDUsIDB4ZDUsIDB4YTMsIDB4YmYsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhhZCwgMHg1ZSwgMHg1MiwgMHgzZCwgMHg1MCwgMHg2NiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDFlLCAweDU0LCAweDY4LCAweDRlLCAweDU4LCAweDQ1LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3ZCwgMHhhZSwgMHhkZSwgMHhiZiwgMHhmOCwgMHgxNSwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDRjLCAweGEsIDB4ZjgsIDB4MjUsIDB4YzksIDB4NWIsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MSwgMHhhZSwgMHgxMywgMHhmYiwgMHgyMiwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4MzAsIDB4MTUsIDB4ZmIsIDB4MywgMHg4YSwgMHhjZiwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDFiLCAweGRiLCAweGQ1LCAweGMwLCAweGRmLCAweGMyLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NTQsIDB4OTksIDB4MWYsIDB4OGQsIDB4NywgMHgxMywgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDlkLCAweGEwLCAweGE4LCAweGJlLCAweDFhLCAweGRiLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NDAsIDB4NDAsIDB4NTAsIDB4NWMsIDB4M2YsIDB4OGQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg4NSwgMHg1LCAweGJjLCAweDg5LCAweGE1LCAweGFjLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YzEsIDB4YTcsIDB4NmIsIDB4NTYsIDB4NTMsIDB4NWUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHgxZiwgMHg3MiwgMHg4YywgMHg1LCAweDYzLCAweDcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjOCwgMHg5MiwgMHhkNSwgMHg2ZiwgMHg0MiwgMHgxYSwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDZmLCAweDUzLCAweDU2LCAweDY0LCAweGI3LCAweGMyLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHg3ZCwgMHhhZSwgMHhmNywgMHg2NCwgMHhjMCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDc0LCAweGEsIDB4ZjcsIDB4ZTYsIDB4YzIsIDB4ZjcsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgzLCAweDIyLCAweGEsIDB4ZjcsIDB4MTYsIDB4ZmIsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDY0LCAweGZiLCAweGEsIDB4YzIsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGMwLCAweDNjLCAweGY3LCAweGM1LCAweDYsIDB4NTgsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2OCwgMHhmYiwgMHhjNiwgMHg1LCAweGMzLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZjcsIDB4NzUsIDB4NSwgMHhmYiwgMHg3NSwgMHg3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhhZSwgMHhkZSwgMHhiZCwgMHhmNywgMHg3MCwgMHhjMiwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGU0LCAweDRjLCAweGEsIDB4ZjcsIDB4NTQsIDB4YmYsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhmNywgMHg0MSwgMHhjYSwgMHhmNywgMHgzNywgMHhhZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZlLCAweGMwLCAweDIyLCAweGEsIDB4ZjcsIDB4NTQsIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDQyLCAweDhmLCAweGM1LCAweDVjLCAweGQzLCAweDFiLCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4ZDQsIDB4ZWMsIDB4ZGMsIDB4NTUsIDB4ZDUsIDB4MzUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmZCwgMHhjMCwgMHg2NiwgMHg2MywgMHg4MiwgMHg2OSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDIyLCAweGY3LCAweDc2LCAweGMwLCAweGZiLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YWIsIDB4NywgMHgxMywgMHhmZSwgMHhjMCwgMHhiOCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4OTMsIDB4YTksIDB4YTUsIDB4YmQsIDB4MWIsIDB4YzksIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg1NCwgMHg0OCwgMHg3NywgMHg1NCwgMHgzZCwgMHg1ZiwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGI4LCAweDhkLCAweDFmLCAweGUsIDB4N2QsIDB4YWUsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhmNywgMHg2NywgMHhiZiwgMHhmNywgMHgxMCwgMHhiZSwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGEsIDB4ZjcsIDB4MzcsIDB4YzMsIDB4NTMsIDB4Y2QsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhjMywgMHhmNywgMHg0ZiwgMHhhZSwgMHgxMywgMHhmZSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGEsIDB4ZjcsIDB4NmYsIDB4OGEsIDB4MTUsIDB4ZTYsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHhlMSwgMHhiYywgMHg5YiwgMHg3MCwgMHg2MSwgMHg5NCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDk4LCAweDUsIDB4Y2YsIDB4ODEsIDB4NWYsIDB4YjIsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg1MywgMHg1MywgMHg2NSwgMHg1OCwgMHg3MywgMHgxZiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDg2LCAweDU0LCAweDU3LCAweDFhLCAweDU5LCAweDhmLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NWUsIDB4MWUsIDB4NTgsIDB4YTMsIDB4YmQsIDB4NmMsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhlNCwgMHhjMCwgMHhkYSwgMHhkZSwgMHhkOSwgMHg1YSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDczLCAweDc0LCAweDg2LCAweDdmLCAweDc4LCAweDFmLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4N2MsIDB4N2EsIDB4ODEsIDB4NzQsIDB4OCwgMHgxMywgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDk1LCAweDNiLCAweDE1LCAweGJmLCAweGFjLCAweGI3LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4YTQsIDB4NWQsIDB4NTMsIDB4NTYsIDB4NzYsIDB4NTMsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHg2ZCwgMHhjMywgMHhjNiwgMHgxZSwgMHhlLCAweDdkLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OGUsIDB4YzEsIDB4ZTQsIDB4NzQsIDB4YSwgMHhmNywgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGNjLCAweGY3LCAweDNlLCAweGFlLCAweDMsIDB4MjIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcyLCAweDZiLCAweGEsIDB4Y2UsIDB4NiwgMHhhNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweGQ3LCAweGY3LCAweDFmLCAweGU0LCAweGY3LCAweDEzLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHhmYiwgMHhjYywgMHg1NSwgMHhmNywgMHg4OSwgMHg3LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YiwgMHg0OCwgMHhmYiwgMHgyMywgMHg3MiwgMHhmYiwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZSwgMHg3ZCwgMHhhZSwgMHhlOCwgMHhiZiwgMHhmNywgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweDMyLCAweGJhLCAweGRkLCAweDRjLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhjMywgMHg2NCwgMHhjMywgMHhmNywgMHgzNSwgMHhiZiwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGY3LCAweDQ0LCAweGFlLCAweDEzLCAweGZlLCAweDYwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4ZjcsIDB4ZmIsIDB4MTUsIDB4NTUsIDB4N2MsIDB4NjgsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHgxYSwgMHgzOSwgMHhjOSwgMHg1OSwgMHhkYywgMHhkYywgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGUxLCAweGM0LCAweDZkLCAweGI2LCAweDU0LCAweDliLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NywgMHgxMywgMHhmZCwgMHhhMCwgMHhiYywgMHg5YSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGMwLCAweDFhLCAweGQ1LCAweDUwLCAweGJkLCAweDQzLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NWIsIDB4M2UsIDB4NWMsIDB4YTcsIDB4NjMsIDB4YjcsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3YiwgMHhmMiwgMHgxNSwgMHhiYSwgMHhhYiwgMHhhOSwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGFiLCAweDZmLCAweDVhLCAweDU4LCAweDZiLCAweDZkLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4NzIsIDB4YWEsIDB4YmQsIDB4MWUsIDB4MTMsIDB4ZmUsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHhmYiwgMHg3NCwgMHgxNSwgMHhiZSwgMHhhZCwgMHhiMSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGI0LCAweDc0LCAweDRmLCAweDUyLCAweDY5LCAweDc0LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4NjMsIDB4YTAsIDB4YzAsIDB4MWUsIDB4ZmIsIDB4OWYsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhhLCAweGUsIDB4N2QsIDB4YWUsIDB4ZGUsIDB4YmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiZiwgMHhmNywgMHg2NywgMHhiNywgMHhkZCwgMHg0YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDIsIDB4YzMsIDB4NjcsIDB4YmMsIDB4ZjcsIDB4MzksIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhjMywgMHhmNywgMHg0MywgMHhhZSwgMHgxMywgMHhmZCwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGEsIDB4ZjcsIDB4NTYsIDB4ZmIsIDB4MjAsIDB4MTUsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHhiNiwgMHg2NiwgMHhjZSwgMHgxYiwgMHhjOSwgMHhjMSwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGEyLCAweDFmLCAweDljLCAweGIzLCAweDkxLCAweGQxLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjEsIDB4NzEsIDB4ZjcsIDB4MTcsIDB4ZmIsIDB4MTQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmZSwgMHg2MCwgMHgzMiwgMHg1MiwgMHg0MSwgMHgzNiwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDQ3LCAweGUwLCAweGJkLCAweGI2LCAweGExLCAweGI5LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NDMsIDB4ODMsIDB4ZmIsIDB4ZiwgMHgyOSwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweGEwLCAweDY3LCAweDcwLCAweGE3LCAweGFkLCAweDg1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4ZjcsIDB4OSwgMHgxNSwgMHgxMywgMHhmZSwgMHhhMCwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGIzLCAweGMzLCAweGM4LCAweGEwLCAweGMxLCAweGQxLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4NTMsIDB4NTgsIDB4NTIsIDB4NzAsIDB4NWMsIDB4NGQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdkLCAweGFlLCAweGRkLCAweGI4LCAweGY4LCAweDFlLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4NzQsIDB4YSwgMHhmNywgMHgzYSwgMHhjOCwgMHhiYywgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ0LCAweGMzLCAweGUwLCAweGFlLCAweDMsIDB4ZjgsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHhhLCAweGM0LCAweDkzLCAweGY3LCAweDFmLCAweGRkLCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ZmIsIDB4MWIsIDB4NGUsIDB4NTMsIDB4ODUsIDB4ZmIsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHgzNSwgMHg4NywgMHhmNywgMHgxZCwgMHhjOCwgMHgxZSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDM0LCAweGFiLCAweGZiLCAweDMwLCAweGY3LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHg5NiwgMHhmNywgMHgyMywgMHhlZiwgMHhlYiwgMHg3OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGZiLCAweDEwLCAweGZiLCAweDE4LCAweDdkLCAweGZiLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4MWUsIDB4ZmIsIDB4Y2IsIDB4MTYsIDB4MjAsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDZiLCAweGEsIDB4YzgsIDB4ZjgsIDB4NmEsIDB4NTgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDU2LCAweDY1LCAweDY5LCAweDViLCAweDhjLCAweDgsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHg3LCAweGUsIDB4ZDMsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhmOCwgMHg1MSwgMHg3NywgMHgxLCAweGYzLCAweGY5LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmOCwgMHhhYSwgMHhmMiwgMHgxNSwgMHhmNywgMHg3MywgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDk2LCAweGZiLCAweDEwLCAweGY3LCAweDc0LCAweGZjLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzcsIDB4NzUsIDB4NzUsIDB4ZjgsIDB4MzksIDB4ZmMsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg4OSwgMHhmYywgMHgyYywgMHhmOCwgMHgyYywgMHg4MCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDJiLCAweGZjLCAweDJiLCAweDdkLCAweDY4LCAweGZjLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzUsIDB4NWIsIDB4NWEsIDB4NSwgMHhmOCwgMHg1YywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDE1LCAweGEwLCAweDk3LCAweDlhLCAweGIyLCAweGFjLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZmIsIDB4MTcsIDB4ODIsIDB4ODIsIDB4NSwgMHhlLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YSwgMHgxLCAweGY3LCAweGY2LCAweGU1LCAweDI2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkMywgMHg2YiwgMHhhLCAweGY3LCAweGY4LCAweDJhLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhkMiwgMHg4YywgMHhhOCwgMHhhMSwgMHg5NywgMHhkMSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4ZmMsIDB4NzgsIDB4NiwgMHhlLCAweDdkLCAweGY3LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4N2UsIDB4ZjMsIDB4MTIsIDB4YWUsIDB4ZjcsIDB4NTQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhmNywgMHg1YywgMHhkYiwgMHhmNywgMHgyYywgMHhlNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDEzLCAweGVjLCAweDIzLCAweGEsIDB4MTMsIDB4ZGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg2YiwgMHhhLCAweDg5LCAweGVjLCAweGNlLCAweGJmLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4OCwgMHhjMiwgMHhhZSwgMHhjMSwgMHhhZiwgMHhkNCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDcyLCAweGIxLCAweDU0LCAweDU0LCAweDc5LCAweDVlLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4MWUsIDB4MTMsIDB4ZWMsIDB4MzMsIDB4OTMsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZDUsIDB4YzksIDB4ZTMsIDB4ZTYsIDB4ZGEsIDB4NGEsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHgzNywgMHg1YywgMHgzZCwgMHg1NywgMHgxZSwgMHg3NCwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDc3LCAweDgwLCAweDcxLCAweDgsIDB4ZjcsIDB4N2EsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4N2QsIDB4ZjcsIDB4YSwgMHhjZCwgMHhmNywgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGY3LCAweDI1LCAweGQwLCAweGYyLCAweDEsIDB4ZjcsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYiwgMHhlMywgMHhmNywgMHg1NywgMHgyNiwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4NDAsIDB4MTUsIDB4ZGMsIDB4OGMsIDB4NSwgMHg0ZSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGNmLCAweDhjLCAweDFlLCAweGJmLCAweDhjLCAweGE2LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4MWEsIDB4YzMsIDB4NjYsIDB4YTIsIDB4NTgsIDB4MWUsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg1LCAweGM5LCAweDcsIDB4YjIsIDB4ODgsIDB4NSwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGE0LCAweGJmLCAweGIzLCAweDc5LCAweGE3LCAweDVmLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4NmIsIDB4NTksIDB4OGQsIDB4MWYsIDB4MzksIDB4OTQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDg5LCAweGNlLCAweGJjLCAweGUzLCAweDFiLCAweGQ3LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4M2EsIDB4NWMsIDB4NzksIDB4NjgsIDB4NjAsIDB4NzUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHg3MSwgMHhhMywgMHg2ZSwgMHg0ZiwgMHgxYSwgMHgzMCwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDM2LCAweDNmLCAweDM5LCAweGI0LCAweGUxLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhmNywgMHgxMSwgMHhmOCwgMHg4MCwgMHhmMSwgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGY3LCAweGI3LCAweGZiLCAweDVlLCAweGY3LCAweGIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHgyMywgMHhhLCAweDEzLCAweGUwLCAweGY3LCAweDJiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHgxNSwgMHhjNywgMHg3LCAweGY3LCAweDVmLCAweGY3LCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlMywgMHhmYiwgMHhjNywgMHhkZiwgMHg0OCwgMHgzNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NiwgMHgxMywgMHhkMCwgMHgzOCwgMHhmNywgMHhhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlMCwgMHgxMywgMHhkMCwgMHhmYiwgMHhiLCAweGNlLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YiwgMHhmNywgMHg1NiwgMHg2LCAweGUsIDB4N2QsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweGYxLCAweGQ2LCAweGNlLCAweGY3LCAweDIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGNlLCAweGY3LCAweDRjLCAweDI2LCAweGEsIDB4ZjcsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyLCAweDE1LCAweGRhLCAweDlkLCAweDUsIDB4NjEsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg2NiwgMHhiOSwgMHgxYiwgMHhkMCwgMHg5YiwgMHhjOCwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDc0LCAweGI0LCAweDU0LCAweDVhLCAweDc3LCAweDZlLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MWYsIDB4NDQsIDB4ZjcsIDB4YWYsIDB4ZjcsIDB4YmYsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3MCwgMHgyZCwgMHg2LCAweDk3LCAweGE0LCAweGEyLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4MWIsIDB4ZWYsIDB4YzcsIDB4NDQsIDB4MmEsIDB4MjcsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHgyNiwgMHgzYywgMHg0OSwgMHhiZCwgMHhkZCwgMHg4OCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2QsIDB4ZjcsIDB4YSwgMHhkMSwgMHhmNywgMHg0ZSwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweGQwLCAweGYyLCAweDEsIDB4YWUsIDB4ZjcsIDB4NGMsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZSwgMHgyNiwgMHhhLCAweGY3LCAweGEwLCAweGI5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4YTksIDB4YTcsIDB4OTUsIDB4YjIsIDB4MWIsIDB4ZTQsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHgzNCwgMHgzMSwgMHg0ZCwgMHgzZCwgMHgyZCwgMHhmYiwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGY3LCAweDFhLCAweGY3LCAweDUsIDB4ZjcsIDB4NCwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFmLCAweGY3LCAweDFlLCAweGQ3LCAweGJmLCAweDYxLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MWYsIDB4M2YsIDB4NzYsIDB4NSwgMHhiMCwgMHg4MSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDVhLCAweDFiLCAweDQ1LCAweDc4LCAweDM2LCAweDUzLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OTEsIDB4ZmIsIDB4YywgMHgxNSwgMHg1OCwgMHhhNSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweGMyLCAweDlhLCAweGI5LCAweGI4LCAweGJiLCAweDc5LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NTksIDB4NmYsIDB4NWYsIDB4NWYsIDB4MWUsIDB4ZSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweGEsIDB4MSwgMHhmNywgMHg3MywgMHhmNywgMHhlOCwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4OWEsIDB4NmIsIDB4YSwgMHhhMiwgMHhmNywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweDIxLCAweGVkLCAweGY3LCAweGYsIDB4OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGNmLCAweGY3LCAweGU4LCAweDRkLCAweDYsIDB4MzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHgzZCwgMHhmYiwgMHgxOCwgMHg3MywgMHhmYiwgMHgzMywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3ZCwgMHhmNywgMHhhLCAweGQwLCAweGY3LCAweDJhLCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTYsIDB4ZDAsIDB4ZjMsIDB4MTIsIDB4YWUsIDB4ZjcsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHhmNywgMHgzMywgMHhmYiwgMHgyNCwgMHhmNywgMHgxYywgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU5LCAweDEzLCAweGZiLCAweDIzLCAweGEsIDB4ZjcsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHgxNSwgMHg2NCwgMHg5YywgMHg3MiwgMHhiNSwgMHhiNCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGQ0LCAweGJkLCAweGQ5LCAweGQ3LCAweGQwLCAweDU2LCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4NzYsIDB4NmEsIDB4NWUsIDB4NzgsIDB4MWUsIDB4YmUsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg2ZCwgMHg0ZCwgMHgxYSwgMHgzNCwgMHgzZCwgMHg1MywgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDNmLCAweGJjLCAweGU5LCAweGMxLCAweGFhLCAweGJiLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4MWUsIDB4OWIsIDB4ZWYsIDB4MTUsIDB4NjIsIDB4YTIsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhiOSwgMHhhMiwgMHhhMSwgMHhiNiwgMHhiNSwgMHg3NSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDViLCAweDc2LCAweDc1LCAweDYwLCAweDFlLCAweDEzLCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ZmIsIDB4NzAsIDB4MTUsIDB4NWMsIDB4YWEsIDB4NzAsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhhNSwgMHhhNCwgMHhiYywgMHhiYiwgMHg2ZiwgMHhhNywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDZlLCAweDcyLCAweDU4LCAweDFlLCAweGUsIDB4N2QsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGQxLCAweGY2LCAweGNmLCAweGY3LCAweDRkLCAweGNlLCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhZSwgMHhmNywgMHg1NywgMHhkZiwgMHhmNywgMHgzMiwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU5LCAweDI2LCAweGEsIDB4ZjcsIDB4NmEsIDB4ZmIsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhkNywgMHg5OSwgMHg1LCAweDZjLCAweDkwLCAweDliLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4MWIsIDB4ZDQsIDB4OTksIDB4ZTAsIDB4YzIsIDB4OGUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3MiwgMHg2NywgMHg4MiwgMHg2OCwgMHgxYiwgMHgzMCwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGUzLCAweGU3LCAweGNjLCAweGQ0LCAweGVhLCAweGY3LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZmIsIDB4ZSwgMHhmYiwgMHgzLCAweDU4LCAweDg2LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NWUsIDB4MWYsIDB4NTIsIDB4NmMsIDB4NTQsIDB4NmMsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0NSwgMHg1NywgMHhiNywgMHhkMSwgMHg4NSwgMHgxZiwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY4LCAweDE1LCAweDVjLCAweGEzLCAweDY5LCAweGJlLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4YjQsIDB4YmMsIDB4YmMsIDB4NzEsIDB4YjksIDB4NTMsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg1MSwgMHg1ZCwgMHgxZSwgMHhlLCAweDdkLCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5LCAweDcyLCAweGEsIDB4MjMsIDB4ZjMsIDB4MTIsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZiwgMHhmNywgMHg1MywgMHhmNywgMHgyOSwgMHhkZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MTMsIDB4NmUsIDB4ZjcsIDB4NzIsIDB4ZjcsIDB4MywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGY2LCAweDM5LCAweGFkLCAweDcsIDB4YzEsIDB4OGEsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg5MCwgMHhjNywgMHg4LCAweGQ5LCAweGZjLCAweDc4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhOCwgMHhmNywgMHg3ZiwgMHgxNSwgMHgyYywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4OTcsIDB4MTUsIDB4MTMsIDB4OWUsIDB4ZjcsIDB4MiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE5LCAweGY3LCAweDIxLCAweGY3LCAweDFhLCAweGEyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MjEsIDB4ZmIsIDB4MiwgMHg3YSwgMHhmYiwgMHgyNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGZiLCAweGUsIDB4NjYsIDB4ZjcsIDB4MzMsIDB4ZWIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHgxNiwgMHg1OSwgMHg4ZSwgMHhmYiwgMHgyNiwgMHhkNCwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGY3LCAweDJhLCAweGI5LCAweGJmLCAweDhjLCAweGY3LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4NDYsIDB4ODQsIDB4ZmIsIDB4MWYsIDB4NWEsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweDg5LCAweGQwLCAweDQ5LCAweGY3LCAweGIsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHg3YywgMHhhYSwgMHgxLCAweGEyLCAweGY3LCAweDhjLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZjUsIDB4NiwgMHhmNywgMHg3YSwgMHhlMCwgMHg1LCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHg4YSwgMHhkMiwgMHg1LCAweGZjLCAweGU1LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZTgsIDB4NiwgMHg3OCwgMHg3NiwgMHg1LCAweGZjLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ZjgsIDB4ZDMsIDB4NiwgMHg5YSwgMHg2OCwgMHg1LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4NiwgMHhmOCwgMHhlOCwgMHg3NywgMHgxNSwgMHg5MiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweGIyLCAweGEwLCAweGE0LCAweGY3LCAweDI3LCAweDY1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg3LCAweGUsIDB4YzIsIDB4YTMsIDB4NzYsIDB4ZjcsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHhmNywgMHhiYSwgMHg3NywgMHgxLCAweGMxLCAweGY5LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjMSwgMHhmNywgMHhiNSwgMHgxNSwgMHhmNywgMHhjNCwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4YzAsIDB4NywgMHg4ZCwgMHg4YSwgMHhmOCwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGU0LCAweDc1LCAweGEsIDB4ZmMsIDB4ODcsIDB4ZjcsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4YSwgMHg1LCAweGZiLCAweGMwLCAweDcsIDB4ZmIsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg1LCAweGUsIDB4OGEsIDB4ZjcsIDB4NDEsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhhMiwgMHhmNywgMHg0YSwgMHg1NCwgMHhhLCAweGY3LCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjgsIDB4YmUsIDB4NiwgMHg2MSwgMHg1NywgMHg2NSwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDQ2LCAweGNhLCAweGUyLCAweGY3LCAweDEyLCAweGQxLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4MjUsIDB4YjAsIDB4ZmIsIDB4MTAsIDB4ZDEsIDB4NGEsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg0YywgMHhhYiwgMHgzZSwgMHhiOSwgMHg2MSwgMHg4LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4NiwgMHhlLCAweDQ5LCAweGEsIDB4ZjcsIDB4YmEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg1LCAweGZiLCAweDRiLCAweGZiLCAweDQ0LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZjcsIDB4NDQsIDB4NSwgMHhmOCwgMHgzOSwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NSwgMHhmNywgMHg0MSwgMHg3NiwgMHhmNywgMHg0YiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRhLCAweDc3LCAweDEsIDB4YWQsIDB4NGQsIDB4YSwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweGVkLCAweDQ1LCAweGNjLCAweDM1LCAweDhjLCAweGNhLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4NWQsIDB4YjgsIDB4OCwgMHhmOCwgMHhjZSwgMHg2LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4NjQsIDB4NGQsIDB4OGYsIDB4NDYsIDB4Y2EsIDB4ZTIsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmMCwgMHhiMCwgMHgyNSwgMHhhZiwgMHgyOSwgMHhkMiwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDhhLCAweDRjLCAweGFhLCAweDNkLCAweGJhLCAweDYyLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhjZSwgMHg2LCAweGI1LCAweGJkLCAweGIxLCAweGM5LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4NGMsIDB4MzMsIDB4MjYsIDB4NDUsIDB4MjUsIDB4NjcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmMsIDB4MTEsIDB4MjMsIDB4NzYsIDB4ZmEsIDB4NDUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDZkLCAweGEyLCAweDMsIDB4YWUsIDB4ZjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlMiwgMHg0YywgMHhkMSwgMHgyOCwgMHhiMCwgMHgyNiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweGQyLCAweGViLCAweGUxLCAweGNjLCAweDRkLCAweDhjLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NjEsIDB4NWMsIDB4OCwgMHhmOCwgMHhjZSwgMHg3LCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4YzksIDB4NjUsIDB4ZDAsIDB4OGUsIDB4MzQsIDB4Y2EsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHg2NywgMHhmMSwgMHg2NSwgMHgyNCwgMHg0NSwgMHgyOSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGNhLCAweDhhLCAweGQ2LCAweGFiLCAweGI3LCAweGI5LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhjZSwgMHg3LCAweDU4LCAweGI1LCAweDRkLCAweGIyLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4OCwgMHhlLCAweGUwLCAweGNiLCAweDc2LCAweGY3LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZjcsIDB4OTgsIDB4NzcsIDB4MSwgMHhjMywgMHhmOSwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YzMsIDB4ZjcsIDB4YmMsIDB4MTUsIDB4ZjgsIDB4MTIsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDlkLCAweDcsIDB4OGMsIDB4OGEsIDB4ZjgsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiYywgMHg3NSwgMHhhLCAweGZjLCAweDRkLCAweGY3LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4OGEsIDB4NSwgMHhmYiwgMHg5ZCwgMHg3LCAweGZjLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NSwgMHhlLCAweGRhLCAweGY3LCAweGRiLCAweGE1LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4N2YsIDB4OTQsIDB4MTIsIDB4OWYsIDB4ZmEsIDB4MywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweGMzLCAweGY3LCAweGQ5LCAweDE1LCAweGY5LCAweDFjLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4N2EsIDB4ZmIsIDB4MCwgMHg1NywgMHg3NSwgMHg1OCwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDg1LCAweDhjLCAweDgyLCAweDhmLCAweDFiLCAweDhkLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4OGUsIDB4OGQsIDB4MWYsIDB4Y2EsIDB4ZTAsIDB4ZjcsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhmMywgMHg5YSwgMHg4LCAweDhkLCAweDhjLCAweDhjLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4MWYsIDB4MTMsIDB4MzAsIDB4OGUsIDB4OGQsIDB4OGUsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHgxYiwgMHg5MiwgMHg4YywgMHg5NCwgMHg4ZSwgMHg4ZSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDg4LCAweDhjLCAweDg4LCAweDFlLCAweGZiLCAweDE5LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmYsIDB4YjEsIDB4NDYsIDB4ZTYsIDB4OCwgMHg4ZCwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDhlLCAweDhhLCAweDFiLCAweDg5LCAweDhkLCAweDgxLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4MWYsIDB4YTIsIDB4NTMsIDB4ZGQsIDB4NjcsIDB4ZDcsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDEzLCAweDUwLCAweGZjLCAweGY3LCAweDhkLCAweDUsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg5NCwgMHg4ZCwgMHg3OCwgMHgxZiwgMHg4OCwgMHg4YywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDg4LCAweDFhLCAweDg4LCAweDhlLCAweDg4LCAweDkwLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OTAsIDB4ODYsIDB4OTUsIDB4N2UsIDB4OWEsIDB4ODQsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZTMsIDB4YzAsIDB4NzYsIDB4ZjcsIDB4N2MsIDB4ZjcsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3YywgMHg3NywgMHgxMiwgMHhhZSwgMHhmOSwgMHhlZCwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGRhLCAweGY3LCAweDljLCAweDE1LCAweDRkLCAweDRkLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg3NCwgMHg3ZCwgMHg3NCwgMHg2YSwgMHgxYSwgMHg1NywgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGJlLCAweGFmLCAweGE0LCAweGEzLCAweGE0LCAweGEwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4MzAsIDB4ZjcsIDB4N2UsIDB4ZjcsIDB4OWQsIDB4ZmIsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhMSwgMHg1LCAweGEzLCAweDc3LCAweDcyLCAweGEwLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MTMsIDB4NTAsIDB4NTYsIDB4NjQsIDB4NjEsIDB4NTYsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg3MCwgMHg5ZSwgMHg3OCwgMHgxZiwgMHhjMywgMHg0YywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NDgsIDB4NiwgMHg1MSwgMHg1NiwgMHg3YSwgMHg0YSwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDdkLCAweGM2LCAweDFmLCAweGUsIDB4ZTQsIDB4ZjcsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHg1YywgMHhhYywgMHhmNywgMHg1YywgMHg1NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4ZWMsIDB4MywgMHhhZSwgMHhmNywgMHhkZCwgMHgxNSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmLCAweGZiLCAweDVjLCAweDYsIDB4ZjcsIDB4ODEsIDB4ZjcsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4MSwgMHhmNywgMHg2YywgMHg1LCAweGZiLCAweDVjLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYsIDB4NywgMHhlLCAweGU0LCAweGY3LCAweDI5LCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4ZjcsIDB4OCwgMHhmNywgMHgzMywgMHg1NCwgMHhhLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4MywgMHhhZSwgMHhmNywgMHhiNCwgMHgxNSwgMHhmOCwgMHhmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM0LCAweDYsIDB4ZjcsIDB4ODMsIDB4ZjcsIDB4NmUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHhmNywgMHg2ZCwgMHg1LCAweGZiLCAweDMzLCAweGZjLCAweGZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweGY1LCAweDQzLCAweDc2LCAweGY5LCAweGQ2LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgzNCwgMHhhLCAweGZjLCAweDdkLCAweGZjLCAweGMzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NjQsIDB4ZjcsIDB4YywgMHhkNiwgMHhmNywgMHgyNSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFmLCAweDk5LCAweDE5LCAweGJjLCAweGY3LCAweDU4LCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4ZjcsIDB4MTEsIDB4ZjcsIDB4MmUsIDB4OCwgMHg4ZSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDkzLCAweDk0LCAweDFhLCAweGI2LCAweDYxLCAweGI4LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4N2IsIDB4ODYsIDB4N2UsIDB4N2IsIDB4MWUsIDB4ZmIsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZSwgMHgyMSwgMHgzNiwgMHhmYiwgMHgzMiwgMHhmYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MzEsIDB4NGQsIDB4ZmIsIDB4NywgMHg0ZSwgMHg0MSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4OTUsIDB4MTUsIDB4YTMsIDB4YTksIDB4YTcsIDB4YjMsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhhNywgMHhiZCwgMHhhNCwgMHhiZSwgMHg5ZSwgMHhiZiwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweGRlLCAweGM4LCAweGQ4LCAweGNlLCAweGJlLCAweGI3LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4YmEsIDB4YmIsIDB4OCwgMHg5NSwgMHg5NSwgMHg4ZiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDFiLCAweGE5LCAweGFkLCAweDZkLCAweDZkLCAweDgxLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODYsIDB4ODQsIDB4MWYsIDB4NzIsIDB4NmIsIDB4NzAsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2YSwgMHgzZCwgMHgyNCwgMHg2MSwgMHgzOCwgMHg2YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweGZiLCAweDAsIDB4N2YsIDB4ZmIsIDB4YSwgMHg2ZSwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDdiLCAweDg0LCAweDc4LCAweDgwLCAweDgxLCAweDg0LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4MTgsIDB4ZjcsIDB4MjEsIDB4ZjcsIDB4MmEsIDB4NSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGFlLCAweGE3LCAweDkyLCAweDg0LCAweDkzLCAweDgzLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjgsIDB4NmQsIDB4OTAsIDB4MWYsIDB4ZmIsIDB4MWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg1LCAweGUsIDB4ODYsIDB4ZjcsIDB4NDQsIDB4NzYsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NCwgMHhmMiwgMHg1NCwgMHhhLCAweGE0LCAweGNiLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4ZDksIDB4MywgMHhmNywgMHhjYSwgMHhmNywgMHg5NiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk5LCAweDI0LCAweDYsIDB4ZjcsIDB4NzgsIDB4ZjcsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3OCwgMHhmNywgMHg1MywgMHg1LCAweDI0LCAweGZiLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgyNCwgMHhmYiwgMHg0NCwgMHgxNSwgMHhkOSwgMHhmNywgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDYsIDB4MzgsIDB4ZmIsIDB4NDQsIDB4MTUsIDB4YmEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg1YywgMHg2LCAweDMyLCAweGZiLCAweDQ0LCAweDE1LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDQsIDB4NzIsIDB4NiwgMHhlLCAweGFkLCAweGY3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOCwgMHg4ZSwgMHg1NCwgMHhhLCAweGEyLCAweGQzLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4YmUsIDB4YjEsIDB4ZDUsIDB4MywgMHhmOCwgMHgyYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDE1LCAweGY3LCAweDNhLCAweDIxLCAweDkyLCAweDYsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiLCAweGY0LCAweGUzLCAweGY3LCAweDAsIDB4YjksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGJhLCAweGZiLCAweDAsIDB4ZTYsIDB4NjQsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ODQsIDB4MjEsIDB4ZmIsIDB4M2EsIDB4NiwgMHgyOSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDE1LCAweGQ1LCAweGY3LCAweGJhLCAweDQxLCAweDYsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiYSwgMHgxNSwgMHhiZSwgMHhmNywgMHhiYSwgMHg1OCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4ZmIsIDB4YmEsIDB4MTUsIDB4YWIsIDB4ZjcsIDB4YmEsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDJjLCAweGZiLCAweGJhLCAweDE1LCAweGEyLCAweGY3LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NiwgMHhlLCAweDgwLCAweGY3LCAweDExLCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NTQsIDB4YSwgMHhmOSwgMHg4OCwgMHgzLCAweGFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4MTUsIDB4ZjgsIDB4OGIsIDB4MmEsIDB4NiwgMHhmNywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg2LCAweGZiLCAweDkxLCAweGY3LCAweDg2LCAweDUsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4YiwgMHg3LCAweGUsIDB4NDksIDB4YSwgMHhmNywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDhjLCAweDUsIDB4YjgsIDB4MTYsIDB4ZmIsIDB4NzAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmOSwgMHgxMywgMHhmYiwgMHg0NCwgMHg1LCAweGUsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhhLCAweGY5LCAweGUzLCAweDdhLCAweGEsIDB4ZjksIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlZSwgMHhmZCwgMHhlMywgMHhmNywgMHhlZSwgMHhmNywgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGVlLCAweDUsIDB4ZSwgMHhlNiwgMHhmNCwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGQ4LCAweGY3LCAweDM4LCAweDU0LCAweGEsIDB4YjMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGI1LCAweGRmLCAweDE1LCAweDc2LCAweGEsIDB4MjMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHg3LCAweDI1LCAweDhhLCAweDUyLCAweGE4LCAweGY3LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NjMsIDB4ZmIsIDB4ODUsIDB4NiwgMHg4YywgMHg0ZSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGI4LCAweDVjLCAweDgsIDB4NjIsIDB4YjEsIDB4YjksIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHgxYiwgMHhmNywgMHhkYiwgMHg2LCAweGUsIDB4ZTcsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHgzNywgMHhmNywgMHg5NywgMHhmMSwgMHg1NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MywgMHhhZSwgMHhkZiwgMHgxNSwgMHhiMywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4YzUsIDB4YTcsIDB4ZjEsIDB4OGEsIDB4MWUsIDB4ZjcsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg2LCAweDc2LCAweGEsIDB4MjUsIDB4ZmIsIDB4ZGIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDVlLCAweDg2LCAweDYyLCAweDY0LCAweDFmLCAweDVmLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4NmUsIDB4OGEsIDB4NGYsIDB4OCwgMHhlLCAweGZjLCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg3NiwgMHhmYSwgMHhlLCAweDU0LCAweGEsIDB4ZjgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGFlLCAweGMyLCAweDE1LCAweGY3LCAweDE0LCAweGZiLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg5ZSwgMHhmOCwgMHg1MSwgMHhmYiwgMHg5ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDUsIDB4ZmIsIDB4MmUsIDB4ZmIsIDB4MTQsIDB4NywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4ZTcsIDB4NzYsIDB4ZjgsIDB4YmMsIDB4NzcsIDB4MSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDk2LCAweDMsIDB4YWUsIDB4ZjcsIDB4MzgsIDB4MTUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgyZSwgMHg5NiwgMHg2LCAweGFlLCAweGQyLCAweGY3LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzEsIDB4ZjcsIDB4MWUsIDB4NzcsIDB4OCwgMHg5NCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2QsIDB4OWYsIDB4ZmIsIDB4MjksIDB4ZjYsIDB4MzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg4LCAweDgwLCAweDJkLCAweGZjLCAweDFmLCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGI3LCAweGEwLCAweDc2LCAweDZjLCAweGEsIDB4NzYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhhZSwgMHhhNSwgMHhmNywgMHhlNCwgMHhhNSwgMHgxMywgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGY3LCAweDVkLCAweDE1LCAweGY3LCAweGZlLCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhmYiwgMHgzMSwgMHhmNywgMHgyOCwgMHg3LCAweGY3LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzIsIDB4ZmIsIDB4OTUsIDB4ZjcsIDB4YzIsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDYsIDB4MTMsIDB4YjcsIDB4ZmIsIDB4MzEsIDB4ZmIsIDB4ZmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGE1LCAweGZiLCAweDlkLCAweDE1LCAweGY3LCAweDg0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmUsIDB4ZjcsIDB4MzUsIDB4NywgMHhmNywgMHg4ZSwgMHhmYiwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDhlLCAweDdkLCAweGEsIDB4ZjcsIDB4MWIsIDB4NTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1NywgMHhmNywgMHg0NywgMHg4YiwgMHhiMywgMHg4YiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweDc3LCAweDEsIDB4YzYsIDB4ZjksIDB4ZGUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGEsIDB4ZmMsIDB4NmYsIDB4ZmMsIDB4YzEsIDB4MTUsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHhmNywgMHgyYiwgMHhmNywgMHgzYiwgMHg1LCAweGE5LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4YWUsIDB4YTgsIDB4MWIsIDB4OTMsIDB4OTIsIDB4ODMsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2YiwgMHg2OCwgMHg2ZSwgMHgxZiwgMHhmYiwgMHgzMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDkzLCAweDgzLCAweGY3LCAweDYsIDB4ZDIsIDB4ZjcsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhmNywgMHgxNSwgMHg5OSwgMHgxOSwgMHhiOCwgMHhmNywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGRkLCAweGY3LCAweDksIDB4ZjcsIDB4MjQsIDB4OCwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YmQsIDB4OTEsIDB4NmYsIDB4YmQsIDB4NTIsIDB4MWIsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg4OSwgMHg4YSwgMHg4MywgMHgxZiwgMHg2YiwgMHg2OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZmIsIDB4NSwgMHhmYiwgMHgxMCwgMHgyZSwgMHhmYiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDE5LCAweDZmLCAweDNlLCAweDRjLCAweGZiLCAweGYsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg4LCAweGUsIDB4YTcsIDB4OTAsIDB4ZjksIDB4NGUsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweGY5LCAweDczLCAweDMsIDB4ZjMsIDB4ZjcsIDB4YmUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhmNywgMHg0NCwgMHhmNywgMHg4ZiwgMHg2NCwgMHg1LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4ZjcsIDB4NTEsIDB4ODgsIDB4MWEsIDB4ODgsIDB4OGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhmYiwgMHg4NiwgMHg4YiwgMHgxYSwgMHg4OCwgMHg3LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MjgsIDB4ZmIsIDB4NzUsIDB4OGIsIDB4MWUsIDB4OGEsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0OCwgMHg4YiwgMHgxZSwgMHhmYiwgMHhkNSwgMHhmYiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDkyLCAweGI0LCAweDZiLCAweGZiLCAweDE2LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MCwgMHhmOCwgMHg5OCwgMHhmNywgMHhhZCwgMHg1LCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHhlZSwgMHhmNywgMHhjYiwgMHg0NCwgMHhmYiwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDkxLCAweGIyLCAweDRkLCAweGZiLCAweDc2LCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIzLCAweGNjLCAweDc2LCAweGU0LCAweGU0LCAweGY3LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4ZjQsIDB4NTQsIDB4YSwgMHhhNywgMHhmNywgMHg3OCwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4ZCwgMHhmNywgMHgxOSwgMHgxNSwgMHhmNywgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDYsIDB4ZDcsIDB4NGMsIDB4ZjcsIDB4YmEsIDB4ZjcsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg2LCAweGY3LCAweGQ0LCAweDUsIDB4MjIsIDB4ZmIsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlNiwgMHg3LCAweGE3LCAweDljLCAweDE1LCAweGY3LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTIsIDB4ZDYsIDB4NywgMHhmNywgMHg5NiwgMHhmYiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDk2LCAweGZiLCAweDg4LCAweDUsIDB4ZWUsIDB4NywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZWQsIDB4NzYsIDB4ZWIsIDB4Y2YsIDB4ZjcsIDB4OTksIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHg3NywgMHgxLCAweGY4LCAweGI2LCAweGEzLCAweDMsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MSwgMHgxNSwgMHhmOCwgMHg0ZSwgMHg2NiwgMHg2LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZjcsIDB4N2MsIDB4ZjcsIDB4OGEsIDB4ZmIsIDB4YmEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHg1LCAweDMwLCAweGZjLCAweDkxLCAweDcsIDB4ZDgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgzYywgMHhmYiwgMHgxNiwgMHg1LCAweGE3LCAweDE2LCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTYsIDB4NGIsIDB4ZjcsIDB4MTcsIDB4NSwgMHhmOCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweDYsIDB4ZjcsIDB4NGUsIDB4ZmIsIDB4NTMsIDB4ZmIsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0YiwgMHg1LCAweGMwLCAweDcsIDB4ZSwgMHgzYywgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDQzLCAweDc3LCAweDEsIDB4YjYsIDB4ZjcsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGI2LCAweGY3LCAweGU4LCAweDE1LCAweGZiLCAweDUyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4ZmIsIDB4MmUsIDB4ZjcsIDB4NGUsIDB4ZjcsIDB4NGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmNywgMHgyZSwgMHhmNywgMHg1MiwgMHhmNywgMHg1MiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGY3LCAweDJkLCAweGZiLCAweDRlLCAweGZiLCAweDRlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4ZmIsIDB4MmQsIDB4ZmIsIDB4NTIsIDB4MWUsIDB4ZjcsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiNCwgMHgxNSwgMHhmOCwgMHhkNCwgMHg3LCAweDhjLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODcsIDB4ZmIsIDB4YjQsIDB4ODAsIDB4YSwgMHhmYywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGI0LCAweDUsIDB4ZSwgMHhmNiwgMHhmNywgMHhiLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZCwgMHhhZCwgMHhkMiwgMHhhYiwgMHhkMiwgMHhhZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4NzcsIDB4MSwgMHhmOSwgMHgzYSwgMHhhYywgMHgzLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmYsIDB4MTUsIDB4ZjcsIDB4ZWQsIDB4NiwgMHhlYywgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4NTksIDB4ZmIsIDB4NzYsIDB4NiwgMHhmNywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg2LCAweGZiLCAweDdkLCAweGY3LCAweDg2LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmYiwgMHg1OSwgMHg3LCAweDJhLCAweGY0LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHg2LCAweGY3LCAweDYsIDB4ZmIsIDB4ZCwgMHg1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZmIsIDB4M2IsIDB4MTUsIDB4ZjcsIDB4ZTIsIDB4NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGZiLCAweDNiLCAweDUsIDB4ZmQsIDB4OGIsIDB4MzQsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhlMiwgMHgzNywgMHhlMiwgMHg1LCAweGY3LCAweDlmLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHgzNCwgMHgzYywgMHgzNCwgMHg1LCAweGUsIDB4YTUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhmNywgMHhkYSwgMHgxNSwgMHhmNywgMHgyZCwgMHg2LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4OGIsIDB4NWMsIDB4YWEsIDB4NmEsIDB4YjMsIDB4YzcsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhjZCwgMHhiMiwgMHg0OCwgMHhhNiwgMHg0OSwgMHhiMywgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDY5LCAweDZlLCAweDhlLCAweDU0LCAweGE1LCAweDZkLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZCwgMHg2LCAweGZjLCAweDY0LCAweGZiLCAweDMzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTgsIDB4NiwgMHhmNywgMHhiLCAweGY3LCAweGIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGU2LCAweDYsIDB4YjMsIDB4NCwgMHhmNywgMHhlNiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZmIsIDB4MTEsIDB4ZjcsIDB4NywgMHg4YiwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweDYsIDB4ZSwgMHhmNywgMHgxNCwgMHhmNywgMHgyNSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYxLCAweGFkLCAweGY3LCAweDYxLCAweDc3LCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhmOCwgMHg3MywgMHgzLCAweGFlLCAweGY3LCAweDIzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTYsIDB4NiwgMHg5MSwgMHhjMCwgMHhhMCwgMHhkMiwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDgsIDB4YTksIDB4YjUsIDB4ZDgsIDB4OGMsIDB4YmQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHg2LCAweDU2LCAweDUzLCAweDg4LCAweDMxLCAweDk4LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZTYsIDB4ZTIsIDB4ZTIsIDB4ZjcsIDB4MiwgMHhiNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4YjksIDB4MzAsIDB4ZGQsIDB4NDUsIDB4ZTksIDB4N2UsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhmYiwgMHg3LCAweGJlLCAweDU4LCAweDgsIDB4MmYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDRlLCAweDhiLCAweGI1LCAweDViLCAweDFmLCAweDY1LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4YzgsIDB4ODYsIDB4YmUsIDB4OCwgMHhmYiwgMHhlNiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MzAsIDB4YmIsIDB4M2QsIDB4ZTIsIDB4NjksIDB4MzUsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHgzNywgMHg4MywgMHgzMywgMHg4LCAweGUsIDB4ODMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDc2LCAweGY3LCAweDY0LCAweGQzLCAweDViLCAweGExLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NzcsIDB4MTIsIDB4YTMsIDB4ZjksIDB4YTMsIDB4MTMsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg3ZSwgMHhmNywgMHhkZSwgMHgxNSwgMHg2MCwgMHg3MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NDUsIDB4NDUsIDB4NjIsIDB4OCwgMHg2MywgMHg3NCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDc1LCAweDFhLCAweDcyLCAweGEzLCAweDgyLCAweDk1LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4OTQsIDB4YTcsIDB4YTUsIDB4MWUsIDB4Y2QsIDB4ZDEsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHhkOSwgMHhiNiwgMHg4LCAweDg5LCAweDcsIDB4OGQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGI2LCAweDIzLCAweGU2LCAweDQ5LCAweGQyLCAweDgsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg4MiwgMHg5NCwgMHg3OCwgMHgxYiwgMHg4MSwgMHg3NSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDc1LCAweDk0LCAweDdiLCAweGIzLCAweDc0LCAweDFmLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4ZjcsIDB4NywgMHg0NCwgMHhiNCwgMHg3MSwgMHg4LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZmIsIDB4YWYsIDB4ZmIsIDB4YjUsIDB4YTUsIDB4MmYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg3OCwgMHg3ZCwgMHg3NCwgMHg3MiwgMHhhMCwgMHg4MSwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGI4LCAweGVhLCAweGY3LCAweGJjLCAweGEzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4MWIsIDB4ZSwgMHhhZCwgMHhkYywgMHg3NiwgMHhmNywgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGY3LCAweGE1LCAweDc3LCAweDEsIDB4ZjksIDB4YWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHgxNSwgMHg1ZSwgMHg3MSwgMHhmYiwgMHg3LCAweDU1LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4OCwgMHg0ZCwgMHg3OCwgMHg4ZSwgMHg1OCwgMHg2NiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGMxLCAweDdlLCAweGI0LCAweDljLCAweGE5LCAweGExLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4MWUsIDB4YzksIDB4ZTAsIDB4YzYsIDB4ZjcsIDB4MywgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDM4LCAweGI4LCAweDQyLCAweGY3LCAweGYsIDB4NGMsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDljLCAweDdmLCAweDZmLCAweDk4LCAweDdhLCAweDFiLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NzAsIDB4NjIsIDB4NjMsIDB4YTQsIDB4NjEsIDB4YjYsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhkZSwgMHg2YywgMHhmNywgMHhhLCAweDVhLCAweGI3LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmYiwgMHhiYiwgMHhmYiwgMHg5NiwgMHhlNywgMHgyYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDUyLCAweDQxLCAweDZkLCAweDY0LCAweGMzLCAweDRiLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZWUsIDB4ZjcsIDB4OWYsIDB4ZTYsIDB4ZjcsIDB4YWYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGUzLCAweGY3LCAweDVmLCAweGY3LCAweGE2LCAweDEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHhmOCwgMHgzLCAweGE5LCAweGY3LCAweDVmLCAweDE1LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4NiwgMHhmNywgMHg3MywgMHhmNywgMHgxYywgMHg3NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NzMsIDB4ZjcsIDB4MWMsIDB4NSwgMHhmZCwgMHgxOSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTgsIDB4ZmIsIDB4MWMsIDB4ODAsIDB4YSwgMHhlLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4NzYsIDB4ZjksIDB4NjIsIDB4NzcsIDB4MSwgMHhhZCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDMsIDB4ZjgsIDB4NjYsIDB4ZjgsIDB4YjYsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhmYiwgMHg3ZiwgMHg3YiwgMHg3NCwgMHg4MSwgMHgxYiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweGE3LCAweDkzLCAweDg4LCAweDFmLCAweGNhLCAweDcxLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4NzcsIDB4MWIsIDB4NzEsIDB4NmQsIDB4N2EsIDB4N2MsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3ZSwgMHg4MiwgMHg4MSwgMHg4MywgMHg3YSwgMHgxYSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDI3LCAweGExLCAweDVkLCAweDFlLCAweDkyLCAweDdkLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4OTUsIDB4ODQsIDB4OCwgMHg4NiwgMHg5MiwgMHg5YSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDFiLCAweDk5LCAweGE3LCAweDhjLCAweDkwLCAweDkyLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4OTEsIDB4ZjcsIDB4ZjMsIDB4ZjgsIDB4ZDAsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4YTEsIDB4YTAsIDB4MTgsIDB4NTUsIDB4MzMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg2NywgMHgxZiwgMHhlLCAweGY3LCAweDE3LCAweGQ0LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4MSwgMHhhOSwgMHhmOSwgMHhmOCwgMHgzLCAweGE5LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjksIDB4MTksIDB4NiwgMHhmNywgMHg3MywgMHhmNywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGEsIDB4ZmIsIDB4NzMsIDB4ZjcsIDB4OWUsIDB4NSwgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDYsIDB4ZjcsIDB4MTgsIDB4ZmIsIDB4OWUsIDB4ODAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZGEsIDB4OTEsIDB4ZjksIDB4MzAsIDB4MSwgMHhlNCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDMsIDB4ZTQsIDB4OTEsIDB4MTUsIDB4ZjksIDB4YTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHg3NSwgMHhhLCAweGZkLCAweGEyLCAweGY3LCAweGUxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHg3LCAweGY4LCAweGU3LCAweGZiLCAweDhlLCAweDgwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhlNywgMHhmYiwgMHg4ZSwgMHg1LCAweDk1LCAweGY3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4ZTEsIDB4ZjcsIDB4YywgMHg3NSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4ZjcsIDB4YywgMHg1LCAweGUsIDB4MzAsIDB4YmIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg4NywgMHg3NywgMHgxLCAweGQ0LCAweGY4LCAweGVmLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMiwgMHhkZCwgMHgxNSwgMHhmNywgMHg2MywgMHhmNywgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJmLCAweGZiLCAweDZlLCAweDhjLCAweDhhLCAweGY3LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODcsIDB4NSwgMHg4YSwgMHg2LCAweGZjLCAweGE5LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OGEsIDB4ZjcsIDB4MmQsIDB4ZmIsIDB4NmUsIDB4ZmIsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZiwgMHg1LCAweGUsIDB4ODgsIDB4YjcsIDB4NmMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGFlLCAweGY3LCAweDQsIDB4ZjcsIDB4ODEsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDZjLCAweGFlLCAweGY3LCAweDVkLCAweDE1LCAweGY3LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHg5YywgMHhmYiwgMHgzMSwgMHhmNywgMHgxYSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjAsIDB4ZjcsIDB4YzIsIDB4ZmIsIDB4YjAsIDB4ZjcsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDFhLCAweDYsIDB4MTMsIDB4YWMsIDB4ZmIsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmMSwgMHg3LCAweGY3LCAweDQsIDB4ZmIsIDB4OWQsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4NCwgMHhmNywgMHhmOCwgMHhmNywgMHgzNSwgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4ZmIsIDB4YWQsIDB4ZmIsIDB4OWMsIDB4N2QsIDB4YSwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDc2LCAweGY4LCAweDkxLCAweGVhLCAweDk5LCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZWUsIDB4ZTAsIDB4MTMsIDB4YjAsIDB4ZjgsIDB4N2UsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHgxNSwgMHhmNywgMHg0LCAweGU3LCAweDhmLCAweDYzLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4YjMsIDB4ODAsIDB4MTksIDB4ODgsIDB4ZTUsIDB4YWEsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhjOCwgMHg4LCAweDEzLCAweGQwLCAweDQ1LCAweDc3LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NDQsIDB4YTAsIDB4OGMsIDB4NjYsIDB4YTcsIDB4NTYsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHhmYiwgMHg0LCAweDJmLCAweDE4LCAweGZjLCAweDQ0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4MTUsIDB4ZjcsIDB4M2QsIDB4N2UsIDB4ZjcsIDB4OTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhmYiwgMHgzYiwgMHg5OSwgMHg1LCAweDM2LCAweGZjLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4OTgsIDB4ZjcsIDB4NmUsIDB4NSwgMHhjZCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDk0LCAweGJjLCAweDFlLCAweGZiLCAweDk4LCAweGZiLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweGJjLCAweDhkLCAweDc2LCAweGY3LCAweGYxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4ZjcsIDB4NmQsIDB4NzcsIDB4MTIsIDB4ZjksIDB4NDYsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiMCwgMHhhZCwgMHhmNywgMHhiOCwgMHgxNSwgMHg1ZSwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweDZlLCAweGNkLCAweDFiLCAweGEzLCAweGEzLCAweDhmLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4MWYsIDB4NzgsIDB4NjgsIDB4ODMsIDB4NjgsIDB4NjQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg5ZCwgMHg1OSwgMHhhNSwgMHg2MSwgMHgxZSwgMHhmNywgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZkLCAweDUsIDB4MTMsIDB4ZDAsIDB4NzIsIDB4YjIsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhiOSwgMHgxYSwgMHhkNywgMHhjMCwgMHhiNywgMHhiZiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGQxLCAweGM0LCAweDhhLCAweDNhLCAweGJjLCAweDQ5LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4MTksIDB4ZjcsIDB4MjgsIDB4OWIsIDB4ZWUsIDB4YmQsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHg2LCAweDY4LCAweGZiLCAweGQsIDB4OTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGEwLCAweGFhLCAweDRmLCAweGM0LCAweDRlLCAweGQ5LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NTEsIDB4MTgsIDB4NjgsIDB4NjIsIDB4NTcsIDB4NjMsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg1OCwgMHg0YSwgMHhhOCwgMHhhZSwgMHg2NSwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4ZWQsIDB4NzYsIDB4ZjgsIDB4NGQsIDB4NzcsIDB4ZDksIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGNlLCAweGY4LCAweGYxLCAweDMsIDB4ZjcsIDB4MjAsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmOCwgMHhhOCwgMHg4NSwgMHg3NSwgMHhhLCAweGZiLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODUsIDB4ODAsIDB4YSwgMHhmYiwgMHgyYywgMHhmYiwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY0LCAweGY3LCAweDM2LCAweDU2LCAweDQwLCAweGY3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWYsIDB4ZmIsIDB4MmMsIDB4ZmIsIDB4NzAsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4YzUsIDB4NzYsIDB4YTMsIDB4ZGMsIDB4ZjgsIDB4OTUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY4LCAweGU5LCAweGU1LCAweDMsIDB4ZjgsIDB4NjYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHgxNSwgMHhmNiwgMHgyYiwgMHg2OSwgMHg4NiwgMHg3NCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDY2LCAweDE5LCAweDkzLCAweGE0LCAweGE3LCAweDhkLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YmIsIDB4YmQsIDB4ODAsIDB4N2UsIDB4YjYsIDB4MWYsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHg2YywgMHhjZiwgMHg4ZSwgMHhlNSwgMHg2MywgMHg4MCwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDg3LCAweDYzLCAweDIwLCAweGViLCAweDE4LCAweGZiLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4MTUsIDB4ZjcsIDB4M2IsIDB4OTksIDB4ZmIsIDB4OTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhmYiwgMHgzZCwgMHg3ZSwgMHg1LCAweGY3LCAweDU0LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4OTgsIDB4ZmIsIDB4NmUsIDB4NSwgMHg4ZiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGY3LCAweDNlLCAweDhiLCAweDFhLCAweGZiLCAweDk4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NSwgMHhlLCAweGJjLCAweDhkLCAweDc2LCAweGEyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmOCwgMHhlNSwgMHg3NywgMHgxLCAweGY5LCAweDNmLCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHhiOSwgMHhmNywgMHg0YywgMHgxNSwgMHhhZSwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweGE4LCAweGJlLCAweDFiLCAweGMzLCAweGJmLCAweDYzLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4MWYsIDB4Y2MsIDB4NTUsIDB4M2QsIDB4ODIsIDB4NTcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg1MSwgMHgxOSwgMHg5NiwgMHhjNiwgMHhjOSwgMHg5MywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGM1LCAweGMzLCAweDg1LCAweDdhLCAweGMzLCAweDFmLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4N2IsIDB4ZWUsIDB4ZjcsIDB4MjgsIDB4MWEsIDB4NWYsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHg0MywgMHg4YywgMHgzYSwgMHg0YywgMHhjMCwgMHgxOCwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDU2LCAweGI3LCAweGQ3LCAweDFhLCAweGI5LCAweDk5LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4YjIsIDB4MWUsIDB4ZmIsIDB4OTcsIDB4ZjcsIDB4NmQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDYxLCAweDc5LCAweDU5LCAweDVhLCAweDFhLCAweDY0LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4OWUsIDB4NjgsIDB4MWUsIDB4OTQsIDB4NzQsIDB4NzMsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHgxYiwgMHg0OSwgMHg0ZiwgMHg2ZSwgMHg1ZSwgMHg1YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YTcsIDB4YTQsIDB4NzYsIDB4ZjgsIDB4ODksIDB4NzcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg3NywgMHgxLCAweGJiLCAweGY5LCAweDliLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhmNywgMHg3ZCwgMHgxNSwgMHg2MywgMHhmNywgMHg0NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDY5LCAweDUsIDB4OGIsIDB4NWQsIDB4ZjcsIDB4NDgsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmOCwgMHgxZCwgMHhmYiwgMHg3NSwgMHg4ZSwgMHgxYSwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4OGIsIDB4ZmIsIDB4YWEsIDB4ZmIsIDB4ODYsIDB4OGUsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4OCwgMHg1ZiwgMHhmNywgMHg1MSwgMHg4YiwgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDMyLCAweDE1LCAweGY3LCAweGE0LCAweGIyLCAweGMwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4ZjcsIDB4ZjQsIDB4ZjcsIDB4Y2IsIDB4YmEsIDB4ZWMsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHhmNywgMHhiNiwgMHg0ZCwgMHhmYiwgMHgwLCAweGFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZmIsIDB4NWQsIDB4YjQsIDB4NGQsIDB4MmIsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZSwgMHhlZSwgMHhiMywgMHhmMCwgMHhmNywgMHg1MCwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGY3LCAweDU1LCAweGIzLCAweDEyLCAweGY5LCAweDk2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg4YiwgMHhiYiwgMHgxMywgMHhkYywgMHhmOSwgMHgzOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDE1LCAweGI3LCAweDllLCAweGJjLCAweGEwLCAweGMxLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4OWYsIDB4MTksIDB4YWMsIDB4OTgsIDB4YTgsIDB4YTQsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhiYywgMHg1ZCwgMHhhYSwgMHg1ZCwgMHg1MSwgMHg2OCwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDc4LCAweDFlLCAweDdhLCAweDVkLCAweDgwLCAweDdiLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4OCwgMHhmZCwgMHgxZSwgMHhmNywgMHgxZCwgMHgxNSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweGZiLCAweDg1LCAweGMxLCAweDc1LCAweGIxLCAweDdhLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4MTksIDB4NTgsIDB4YTEsIDB4YjEsIDB4NjQsIDB4YzUsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhiNywgMHhhYSwgMHhiYywgMHhiMiwgMHg2YywgMHhhNiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDFmLCAweDU3LCAweDllLCAweDU0LCAweDkyLCAweDU5LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4YTMsIDB4MTgsIDB4NzUsIDB4YzEsIDB4ZmQsIDB4OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDUsIDB4OTMsIDB4ZmMsIDB4MzQsIDB4MTUsIDB4ZjgsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMSwgMHg1LCAweDhjLCAweDcsIDB4ZmIsIDB4NiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDQ3LCAweGZiLCAweDU0LCAweDUsIDB4ZjksIDB4ODQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHgxNSwgMHhhYiwgMHhhZSwgMHhhMiwgMHhhOSwgMHhhNSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDZlLCAweDZhLCAweDZhLCAweDc0LCAweDZjLCAweDcwLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YTgsIDB4MWUsIDB4OGQsIDB4ZmIsIDB4YWYsIDB4MTUsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg5ZCwgMHhhNywgMHhhOSwgMHhhZiwgMHg3OCwgMHg2YSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDc3LCAweDZlLCAweDZlLCAweDYzLCAweDlmLCAweGFjLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTAsIDB4ZjcsIDB4MjgsIDB4MTUsIDB4MTMsIDB4YmMsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg5MywgMHg5NCwgMHg5NCwgMHg5MywgMHg4MywgMHg4MiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDgzLCAweDgyLCAweDgyLCAweDgzLCAweDkzLCAweDk0LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg5MiwgMHgzYSwgMHhhLCAweGFmLCAweGY5LCAweDliLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmMywgMHgxNSwgMHg4NywgMHg2OSwgMHhhOSwgMHg3NCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDgsIDB4ODEsIDB4OTgsIDB4YjQsIDB4NmIsIDB4YjAsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhlYSwgMHhlMywgMHhhMiwgMHhhNCwgMHgxZiwgMHhmOCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDVkLCAweDUsIDB4YTEsIDB4YTEsIDB4OTAsIDB4OGIsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhjYywgMHg3LCAweGE4LCAweDhiLCAweDkxLCAweDZiLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODcsIDB4ODEsIDB4N2UsIDB4MWUsIDB4ZmIsIDB4NzEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg1LCAweGZiLCAweDcxLCAweGZiLCAweDc2LCAweDgzLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4MWIsIDB4NmIsIDB4ODcsIDB4YWMsIDB4YTMsIDB4ODcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHhjMSwgMHg1LCAweDg4LCAweDlmLCAweDg0LCAweGFkLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YmUsIDB4NGQsIDB4ODUsIDB4NjksIDB4N2YsIDB4MWUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg3OCwgMHg3MiwgMHg3ZSwgMHg3YiwgMHg4LCAweDZhLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4OTIsIDB4NTcsIDB4MWEsIDB4NWYsIDB4OGIsIDB4NmEsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHgxZSwgMHhlLCAweGZiLCAweDIzLCAweGNjLCAweDc2LCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4ZjcsIDB4YjgsIDB4ZTQsIDB4ZTQsIDB4NTQsIDB4YSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDc4LCAweGE1LCAweDMsIDB4YWUsIDB4ZjcsIDB4MjksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5NCwgMHgyMiwgMHg2LCAweGY4LCAweDYsIDB4ZjcsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiOSwgMHhmNywgMHhhYiwgMHgzZSwgMHg0YywgMHg1LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2UsIDB4NywgMHgzNSwgMHg0MywgMHg1LCAweGE3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4MTUsIDB4ZjcsIDB4YjgsIDB4ZjcsIDB4OTIsIDB4ZWUsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk2LCAweGZiLCAweDg4LCAweGZiLCAweDk2LCAweGZiLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkNiwgMHg3LCAweGUsIDB4YWUsIDB4ZTksIDB4NzYsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhmNywgMHg5OSwgMHhjZiwgMHhlYiwgMHg3NywgMHgxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4YTMsIDB4MywgMHhiMCwgMHhmNywgMHgzOCwgMHgxNSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDMwLCAweDYsIDB4ZjcsIDB4YjgsIDB4ZjcsIDB4YmEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhmNywgMHg4YywgMHg0ZiwgMHg1NiwgMHg1LCAweDYwLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4NywgMHg0NiwgMHg0NywgMHhkMCwgMHhmYiwgMHgxNiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4ZmIsIDB4MTcsIDB4MTUsIDB4YzEsIDB4ZjcsIDB4MTcsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNiwgMHg1LCAweGY4LCAweDkxLCAweGMwLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHhmYiwgMHg0YiwgMHhmYiwgMHg0ZSwgMHhmYiwgMHg1MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4NywgMHhlLCAweGY3LCAweDFiLCAweGVjLCAweGIzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4YTYsIDB4ZWIsIDB4YWUsIDB4YjEsIDB4NzcsIDB4MTIsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhiMSwgMHg2NSwgMHhmNywgMHgxNSwgMHg5ZiwgMHhiNSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDEzLCAweGY3LCAweGY5LCAweDM2LCAweGY4LCAweGUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHg4OCwgMHg1LCAweDg3LCAweGMyLCAweGM0LCAweDc4LCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YjYsIDB4YjMsIDB4YTMsIDB4YmEsIDB4YmMsIDB4NTksIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg2NywgMHg2YSwgMHg3NywgMHg3MywgMHg3MiwgMHgxZiwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDdhLCAweDgzLCAweDViLCAweDg5LCAweDgsIDB4ZmMsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHgxNSwgMHhmNywgMHgzMSwgMHg2LCAweGY3LCAweDc2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4YjYsIDB4NjcsIDB4YTcsIDB4NzEsIDB4OTEsIDB4NTAsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg5MSwgMHhhZiwgMHg0ZiwgMHhkMSwgMHgxYiwgMHhiNCwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGI2LCAweGE4LCAweDc5LCAweGEzLCAweDc1LCAweDljLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4YWIsIDB4NWEsIDB4YTEsIDB4NjQsIDB4YWYsIDB4NjEsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg4NywgMHhjMiwgMHhmYiwgMHgzZCwgMHhmNSwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4OWYsIDB4ZmMsIDB4NDIsIDB4NiwgMHhmYiwgMHg2MywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweGIwLCAweDJjLCAweDUsIDB4OGMsIDB4NywgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweGZjLCAweDQ1LCAweDlkLCAweDUsIDB4ZjksIDB4YWQsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhhOSwgMHhhNiwgMHg5OCwgMHhhNSwgMHhhOSwgMHhhYSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDZlLCAweDczLCAweDdhLCAweDcwLCAweDZkLCAweDZhLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4MWUsIDB4ZmIsIDB4NmUsIDB4NjcsIDB4MTUsIDB4OTQsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg5NCwgMHg5MywgMHg5NCwgMHg4NCwgMHg4MywgMHg4MiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDgyLCAweDgyLCAweDg1LCAweDkzLCAweDkzLCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZjcsIDB4MTMsIDB4ZmIsIDB4NWMsIDB4MTUsIDB4YTQsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhhMywgMHhhOCwgMHhhZSwgMHg3MSwgMHg2YywgMHg3MiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDcyLCAweDZlLCAweDY2LCAweGE3LCAweGFhLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHg4YiwgMHhhOSwgMHhmOCwgMHhhYiwgMHhhNywgMHg2ZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDEyLCAweGFlLCAweGE4LCAweGY4LCAweGE5LCAweGE3LCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTYsIDB4MTMsIDB4ZDgsIDB4YWUsIDB4MTYsIDB4ZjgsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHg2LCAweDEzLCAweGI0LCAweGYxLCAweGY4LCAweGRlLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4NiwgMHgxMywgMHhkOCwgMHgyOCwgMHhmYiwgMHgxLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhmYywgMHhjNywgMHgxNSwgMHhmOCwgMHhhYiwgMHhmOCwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGFiLCAweDcsIDB4ZSwgMHgzYiwgMHg4YiwgMHhhYiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGY3LCAweGYsIDB4MSwgMHhhZSwgMHhhYSwgMHhmOCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweDdhLCAweGEsIDB4ZjgsIDB4Y2QsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4ZjcsIDB4YiwgMHg1LCAweGY4LCAweGQxLCAweGZjLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHgxNCwgMHhmYiwgMHg3LCAweDUsIDB4YWEsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHg2ZCwgMHhhLCAweDY2LCAweGEsIDB4YWYsIDB4ZjcsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlNiwgMHg1NCwgMHhmNywgMHgzZiwgMHhmYiwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGZiLCAweDViLCAweDlhLCAweDk2LCAweDE4LCAweDVmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgzMywgMHhmNywgMHgzZCwgMHg0NywgMHhlOSwgMHhjYSwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGY3LCAweDY1LCAweGFkLCAweGRlLCAweDgwLCAweDk4LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzgsIDB4ZmIsIDB4NTYsIDB4ZmIsIDB4NDIsIDB4ZmIsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg1YiwgMHg4LCAweGUsIDB4ZmMsIDB4NDEsIDB4MzgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFiLCAweDhiLCAweDMsIDB4ZjcsIDB4MWIsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg2LCAweDI3LCAweGY3LCAweGVlLCAweGVmLCAweGY3LCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg4NCwgMHg2LCAweDI3LCAweGZiLCAweGVlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDNlLCAweDhmLCAweGY5LCAweDNmLCAweDEsIDB4YWIsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHgzLCAweGIxLCAweDkzLCAweDE1LCAweGE0LCAweDkwLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4OWQsIDB4OTUsIDB4YTMsIDB4OTcsIDB4ZDQsIDB4ZDAsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHg5MSwgMHg5MSwgMHg5ZCwgMHg4OSwgMHg5MCwgMHg4NSwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweGRhLCAweDQwLCAweGEzLCAweDczLCAweDgsIDB4NjQsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg3ZSwgMHhhMywgMHgxYiwgMHg5NCwgMHhjYiwgMHg5NSwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDFmLCAweDhlLCAweDk3LCAweDY5LCAweGE1LCAweGZiLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDUsIDB4NDAsIDB4ZTcsIDB4MTksIDB4ZjcsIDB4M2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhkOCwgMHhmNywgMHgzLCAweDlmLCAweGIxLCAweDg0LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4NWIsIDB4ODUsIDB4MzgsIDB4N2QsIDB4ODcsIDB4ODMsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHgzZiwgMHgyNiwgMHgzYywgMHgzOSwgMHg1OSwgMHhiMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGY3LCAweDUwLCAweDZmLCAweGM0LCAweDgsIDB4ODAsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDgyLCAweDY4LCAweDVlLCAweDgxLCAweDc4LCAweDg0LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ODMsIDB4YTAsIDB4NjUsIDB4OWQsIDB4NmMsIDB4ZDksIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhmYiwgMHgyLCAweDkwLCAweDg0LCAweDhiLCAweDgwLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4NjcsIDB4NWUsIDB4ZmIsIDB4NGQsIDB4ZmIsIDB4NWMsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg4LCAweGUsIDB4M2QsIDB4YTUsIDB4NzYsIDB4ZjksIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhhNSwgMHg3NywgMHgxLCAweGE4LCAweGY5LCAweDUzLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg5NCwgMHgxNSwgMHhhNywgMHg4ZSwgMHhlYSwgMHg5YSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDlmLCAweDk3LCAweGIyLCAweGE2LCAweGUwLCAweGY2LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OWMsIDB4ODksIDB4OTQsIDB4ODIsIDB4YmEsIDB4NTgsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHhhNCwgMHg3NCwgMHg4LCAweDY0LCAweGI2LCAweGE5LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MWIsIDB4OTcsIDB4ZjcsIDB4OCwgMHg5NCwgMHg5MCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDhkLCAweDlhLCAweDY2LCAweGFkLCAweGZiLCAweDMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NDksIDB4ZTUsIDB4MTksIDB4ZTAsIDB4ZTIsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZCwgMHg5YiwgMHhiNCwgMHg4MiwgMHg5OSwgMHgxOCwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGZiLCAweDEzLCAweDdhLCAweDg3LCAweDg0LCAweDZjLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4MmEsIDB4NTUsIDB4NTUsIDB4NDYsIDB4ZDAsIDB4MmUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHg2ZSwgMHhjMywgMHg4LCAweDdkLCAweDYsIDB4NzMsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHgzOCwgMHg4MywgMHg3OSwgMHg4NCwgMHg3OSwgMHg4ZCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDY2LCAweDlkLCAweDZiLCAweGMzLCAweDQ3LCAweGU2LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ODUsIDB4ODksIDB4N2MsIDB4ODYsIDB4ODYsIDB4NjcsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMiwgMHhmYiwgMHg1MCwgMHg2ZCwgMHg3MCwgMHg4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhMCwgMHg1YywgMHg3NiwgMHhmOSwgMHg2ZCwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTAsIDB4ZjcsIDB4OTgsIDB4MywgMHhmNywgMHhiNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDE1LCAweGZiLCAweDM0LCAweGVlLCAweDlmLCAweDY3LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4OTcsIDB4OWUsIDB4OTgsIDB4OTcsIDB4OGQsIDB4MWYsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg4OCwgMHg5MSwgMHg4ZiwgMHgxYSwgMHg5MSwgMHg5YiwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDhmLCAweDFlLCAweDkzLCAweDcsIDB4OTIsIDB4OGUsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg4ZSwgMHg5MiwgMHhmYiwgMHgxLCAweGY3LCAweDc5LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4ZjcsIDB4MTMsIDB4ZTMsIDB4ZjMsIDB4OTYsIDB4OTUsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDhmLCAweDkyLCAweDkxLCAweDkxLCAweDFhLCAweDkyLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4ODcsIDB4OTUsIDB4MWUsIDB4OGQsIDB4OGEsIDB4ODksIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxYiwgMHg4OCwgMHg4NSwgMHg4NCwgMHg4OCwgMHg4OSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDgxLCAweDUsIDB4OTAsIDB4ODUsIDB4NjcsIDB4ODYsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgzMSwgMHhmYiwgMHg0MSwgMHgzZiwgMHhmNywgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OTMsIDB4ODcsIDB4ODgsIDB4OTUsIDB4ODAsIDB4MWIsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg3YiwgMHg4MSwgMHg4MiwgMHg4OSwgMHg4LCAweDhmLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4OTAsIDB4ODQsIDB4MWIsIDB4NzksIDB4N2QsIDB4ODIsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHgxYSwgMHg4MiwgMHg5MywgMHg3YSwgMHg4ZSwgMHg4MywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGZiLCAweDU0LCAweDQ5LCAweDNjLCAweDNkLCAweDI1LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4MTksIDB4NmMsIDB4NTYsIDB4N2EsIDB4NzMsIDB4N2UsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4ZSwgMHg4OSwgMHg4ZCwgMHg4OSwgMHgxZSwgMHg5MiwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDg1LCAweDg5LCAweDgzLCAweDgsIDB4ODksIDB4ODUsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg4NSwgMHgxYSwgMHg4MCwgMHg5NCwgMHg4MCwgMHg5MSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDgxLCAweDkxLCAweDhkLCAweDgxLCAweDk4LCAweDFiLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4OGUsIDB4OTQsIDB4OTcsIDB4MWYsIDB4ZSwgMHhmYiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDc2LCAweGY5LCAweDYyLCAweDc3LCAweDEsIDB4ZjcsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NCwgMHgzLCAweGYzLCAweDkzLCAweDE1LCAweDllLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5OCwgMHg2LCAweDkyLCAweDk0LCAweGY3LCAweDI2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4YjEsIDB4NWEsIDB4YTksIDB4NTMsIDB4YjcsIDB4NWUsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4ZSwgMHg4OSwgMHg4ZCwgMHg5YiwgMHhhMCwgMHhhZCwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDhlLCAweDkzLCAweDgzLCAweDhhLCAweDhkLCAweDFmLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OTEsIDB4ODUsIDB4OTAsIDB4MWIsIDB4OTAsIDB4OTMsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4ZSwgMHgxZiwgMHg5MiwgMHg5MSwgMHg5NCwgMHg4ZSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDgsIDB4OTEsIDB4ODksIDB4OTYsIDB4OTksIDB4OGQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg2LCAweDk0LCAweDk3LCAweGE0LCAweDkxLCAweDhlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OTcsIDB4OGIsIDB4OGEsIDB4OGQsIDB4OTgsIDB4ZmIsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0YiwgMHgxOCwgMHhmNywgMHg0YiwgMHhmNywgMHg3MCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweGI1LCAweDFhLCAweDdjLCAweGFlLCAweDg2LCAweDkyLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4ODQsIDB4ODksIDB4MTksIDB4N2YsIDB4ODgsIDB4ODcsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgxYSwgMHg4ZSwgMHg4ZCwgMHg4ZCwgMHg4ZCwgMHg4ZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDkyLCAweDU5LCAweDkyLCAweDg5LCAweDFiLCAweDdmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4ZmIsIDB4NjUsIDB4NzAsIDB4NzQsIDB4MWYsIDB4ZmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ1LCAweDUsIDB4OTIsIDB4ODcsIDB4ODMsIDB4OTYsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3ZSwgMHg3ZCwgMHg4MCwgMHg3ZSwgMHg4YywgMHgxZiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDgxLCAweDgwLCAweDg4LCAweDdkLCAweDlkLCAweDhjLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4N2QsIDB4N2UsIDB4N2UsIDB4N2QsIDB4ODIsIDB4N2EsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhiNywgMHgzNSwgMHhiOCwgMHgzNywgMHhmYiwgMHgzYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDE4LCAweDdlLCAweDliLCAweDdiLCAweDgxLCAweDdlLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODQsIDB4MWEsIDB4ODcsIDB4OTMsIDB4ODIsIDB4OGQsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg5MiwgMHg3ZiwgMHg5MywgMHg3YSwgMHg5OCwgMHg4NSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4OTMsIDB4OTIsIDB4OTAsIDB4OTQsIDB4MWIsIDB4OGQsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4OCwgMHgxZiwgMHg4NywgMHg4OCwgMHg4NSwgMHg4NywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4M2YsIDB4ODYsIDB4YjAsIDB4ZjcsIDB4N2EsIDB4YWYsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhmNywgMHg3NywgMHhiMCwgMHgxLCAweGJjLCAweGIwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4YWUsIDB4ZTMsIDB4YjAsIDB4ZjcsIDB4NmIsIDB4YjAsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGY3LCAweDlhLCAweDE1LCAweGY3LCAweDkxLCAweGZiLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzQsIDB4ZjcsIDB4OWYsIDB4ZjcsIDB4OTAsIDB4ZjcsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5MSwgMHg2LCAweDhjLCAweGY3LCAweDljLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhmYiwgMHg5YywgMHhmYiwgMHg5MCwgMHg2LCAweGIwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxNSwgMHhkYywgMHhmNywgMHg5MCwgMHhmNywgMHg5YywgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDljLCAweGY3LCAweDkwLCAweDNhLCAweGZiLCAweDkwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4MzMsIDB4ZjcsIDB4OWUsIDB4NywgMHhlLCAweDNjLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4N2MsIDB4ZjcsIDB4N2EsIDB4ZjcsIDB4N2EsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDliLCAweGY3LCAweDdjLCAweDMsIDB4YWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgxNSwgMHhmNywgMHg3OCwgMHhmYiwgMHg3YywgMHhmNywgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdjLCAweGY3LCAweDdiLCAweGY3LCAweDdhLCAweGZiLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2EsIDB4ZmIsIDB4N2MsIDB4ZmIsIDB4N2EsIDB4ZmIsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4M2IsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4YjIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGY3LCAweGIyLCAweDc3LCAweDEsIDB4ZjcsIDB4ZDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDMsIDB4YWUsIDB4ZjcsIDB4YTgsIDB4MTUsIDB4ZjcsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhOCwgMHhmNywgMHgxZCwgMHhmNywgMHhhOCwgMHhmNywgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweGZiLCAweGE5LCAweGY3LCAweGE4LCAweGZiLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YTgsIDB4ZmIsIDB4YTgsIDB4NiwgMHhmNywgMHhhOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDE1LCAweGY3LCAweDIwLCAweGY3LCAweDFkLCAweGZiLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweDM2LCAweGEwLCAweDc2LCAweGY3LCAweDdmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4ZjcsIDB4ODQsIDB4NzcsIDB4MSwgMHhmNywgMHg5ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDMsIDB4YWUsIDB4ZjcsIDB4N2YsIDB4MTUsIDB4ZjcsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3ZiwgMHhmNywgMHg3MSwgMHhmNywgMHg3ZiwgMHhmNywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZkLCAweGZiLCAweDdkLCAweGY3LCAweDg0LCAweGZiLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODQsIDB4ZmIsIDB4N2IsIDB4NiwgMHhmNywgMHg3YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDE1LCAweGY3LCAweDZkLCAweGY3LCAweDcwLCAweGZiLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweDU2LCAweDdiLCAweDc2LCAweGY3LCAweGI5LCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4YWQsIDB4YWYsIDB4YTksIDB4YWYsIDB4YWUsIDB4ZjcsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhmNywgMHhjYiwgMHhhZCwgMHhhMiwgMHhhOSwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDY5LCAweGFkLCAweDEzLCAweGRmLCAweDgwLCAweGY4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjMywgMHgxNSwgMHg4NiwgMHg1MywgMHg3YiwgMHg2MywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDgsIDB4N2EsIDB4NjUsIDB4N2EsIDB4NmMsIDB4NjQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg5OCwgMHg3OCwgMHhhNSwgMHg3OSwgMHgxZSwgMHg5OCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDgxLCAweDkxLCAweDg1LCAweDgsIDB4ODksIDB4OGQsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg4ZiwgMHgxYiwgMHg4ZiwgMHg4ZiwgMHg5MywgMHg4ZCwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDkxLCAweDkxLCAweDlkLCAweDk1LCAweDk4LCAweDkzLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg5ZCwgMHg5OCwgMHg5ZSwgMHhhYSwgMHgxYSwgMHhiNywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDc5LCAweGIyLCAweDFlLCAweDdjLCAweGFjLCAweDdjLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4YmYsIDB4OTUsIDB4OTAsIDB4OTMsIDB4OTMsIDB4OTAsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHg4NiwgMHhiMSwgMHg3ZCwgMHhhYiwgMHg3YywgMHg4LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4YWIsIDB4NzcsIDB4YjUsIDB4MWIsIDB4YWEsIDB4OWUsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg5ZCwgMHgxZiwgMHg5MywgMHg5OCwgMHg5NSwgMHg5ZCwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDgsIDB4OGQsIDB4OGQsIDB4OTMsIDB4OGYsIDB4OGYsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg4MywgMHg4ZiwgMHg4OSwgMHg4ZCwgMHgxZSwgMHg4NSwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDlkLCAweDgzLCAweDk4LCAweDgsIDB4YTUsIDB4NzksIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg2YywgMHgxYiwgMHg1YSwgMHg2YSwgMHg3NCwgMHg3NywgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDZlLCAweDdlLCAweDY5LCAweDgwLCAweDVlLCAweDg3LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4ODMsIDB4OTMsIDB4ODIsIDB4OGUsIDB4OGYsIDB4YmQsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg5OSwgMHhhYSwgMHg4LCAweDllLCAweGI3LCAweGEwLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4MWEsIDB4YWEsIDB4N2UsIDB4OWUsIDB4NzEsIDB4OWQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg5MywgMHg3OSwgMHg5NSwgMHg4NSwgMHg5MSwgMHg4LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ODcsIDB4OTMsIDB4ODcsIDB4MWIsIDB4ODcsIDB4ODcsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4OSwgMHgxZiwgMHg4NSwgMHg4NSwgMHg3OSwgMHg4MSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDgsIDB4NzEsIDB4NzksIDB4N2UsIDB4NzgsIDB4NmMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg5ZSwgMHg2YSwgMHg5ZSwgMHg2MiwgMHgxZSwgMHg5OSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDY2LCAweDhmLCAweDU4LCAweDgxLCAweDg3LCAweDg0LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ODIsIDB4NTMsIDB4OTAsIDB4NjQsIDB4OWIsIDB4NjksIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDlkLCAweDY0LCAweDZjLCAweDljLCAweDYzLCAweDFiLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4N2QsIDB4NzEsIDB4NzksIDB4MWYsIDB4ODMsIDB4N2UsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg4NSwgMHg4NSwgMHg4LCAweDg5LCAweDg5LCAweDgzLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4MWEsIDB4ODcsIDB4OTMsIDB4ODcsIDB4OGQsIDB4ODksIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg4NSwgMHg5NSwgMHg3OSwgMHg5MywgMHg3ZSwgMHg4LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWYsIDB4ODAsIDB4YTksIDB4MWIsIDB4YjUsIDB4YWIsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhiMCwgMHgxZiwgMHhhZCwgMHg5YSwgMHhiMSwgMHg5YywgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDhmLCAweDgxLCAweDkzLCAweDgzLCAweDk1LCAweDg2LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhmNywgMHg3ZiwgMHgxNSwgMHg4OSwgMHhhMCwgMHg3ZiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDk0LCAweDgsIDB4N2YsIDB4OTUsIDB4ODAsIDB4OTMsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg5YywgMHg5NCwgMHg5NiwgMHg5YiwgMHg5NiwgMHgxZSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDk2LCAweDkyLCAweDhmLCAweDhmLCAweDgsIDB4OGIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg4YywgMHgxZSwgMHg4ZCwgMHg4OSwgMHg4ZiwgMHg4NywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDhlLCAweDg3LCAweDk2LCAweDg0LCAweDkxLCAweDg2LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg4MCwgMHg5MiwgMHg4MiwgMHg3YSwgMHgxYSwgMHg3NywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDdkLCAweDdkLCAweDFlLCAweDgyLCAweDgyLCAweDgzLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4N2EsIDB4OCwgMHhmNywgMHg1OSwgMHhmYiwgMHg1OSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDhmLCAweDllLCAweDhlLCAweDk2LCAweDk0LCAweDk0LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4OTgsIDB4OTcsIDB4OTMsIDB4OTgsIDB4OWMsIDB4MWIsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg4MywgMHg3YiwgMHg5NiwgMHgxZiwgMHg4ZSwgMHg4NCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDhmLCAweDg3LCAweDhjLCAweDhhLCAweDhmLCAweDg3LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OCwgMHg4YSwgMHg4NSwgMHg4OCwgMHg4OSwgMHg4YSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDg3LCAweDg1LCAweDdmLCAweDg2LCAweDg1LCAweDgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHg0MCwgMHg3YiwgMHg4MCwgMHg4MywgMHg4NCwgMHg3OSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDgzLCAweDk5LCAweDk4LCAweDgwLCAweDFmLCAweDgyLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4OTUsIDB4NzcsIDB4OGQsIDB4OCwgMHhmYywgMHgxZiwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDc5LCAweDg4LCAweDgxLCAweDgzLCAweDgyLCAweDgyLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg3ZiwgMHg4MywgMHg3ZCwgMHg3OSwgMHgxYiwgMHg3OCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDliLCAweDgwLCAweDFmLCAweDg3LCAweDkyLCAweDg0LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4OGYsIDB4OCwgMHg4YiwgMHg4NSwgMHg4ZSwgMHg4YywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDhhLCAweDhkLCAweDkxLCAweDhlLCAweDhiLCAweDFhLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OTIsIDB4OTUsIDB4OGYsIDB4OTIsIDB4OCwgMHgxMywgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDliLCAweDk2LCAweDk0LCAweDkyLCAweDljLCAweDFiLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4N2UsIDB4N2YsIDB4OTYsIDB4MWYsIDB4OTUsIDB4ODAsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhhMCwgMHg4OCwgMHg4LCAweGY3LCAweDU5LCAweGZiLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OGYsIDB4OGQsIDB4OGUsIDB4NzksIDB4OTMsIDB4ODAsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHgxOSwgMHg5OCwgMHg3ZSwgMHg5YSwgMHg4MiwgMHg4YSwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NzksIDB4ODMsIDB4ODEsIDB4N2IsIDB4ODAsIDB4MWUsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4MCwgMHg4MiwgMHg4OCwgMHg4OCwgMHg4LCAweDg5LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4ODcsIDB4OGEsIDB4MWIsIDB4OGEsIDB4ODYsIDB4OTEsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4NiwgMHg4ZiwgMHg4MiwgMHg5MywgMHg4MywgMHg5MCwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4OTUsIDB4ODMsIDB4OTMsIDB4OWMsIDB4MWEsIDB4OWQsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg5OCwgMHg5NywgMHgxZSwgMHg5NiwgMHg5NCwgMHg5NSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDllLCAweDgsIDB4ZSwgMHhmNywgMHgyMSwgMHhlZSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweGY3LCAweDUyLCAweDQyLCAweDc3LCAweGY3LCAweDU4LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjksIDB4OWIsIDB4ZjcsIDB4YSwgMHg4YiwgMHhiYywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGY5LCAweDNjLCAweGY3LCAweGVmLCAweDE1LCAweGI3LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YTEsIDB4YzIsIDB4OTAsIDB4YmQsIDB4YTAsIDB4MTksIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhhOSwgMHhhNSwgMHhiMiwgMHgxYSwgMHhiYywgMHg1YywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDUxLCAweDY3LCAweDVmLCAweDU5LCAweDc4LCAweDFlLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4N2YsIDB4N2EsIDB4NWYsIDB4NzQsIDB4OCwgMHhmZCwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweDE1LCAweGY4LCAweGYxLCAweGZiLCAweDhiLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4YWYsIDB4N2EsIDB4YTQsIDB4NTIsIDB4MTksIDB4NTgsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg2NSwgMHhjNiwgMHgxYiwgMHhiOSwgMHhiOCwgMHhhYSwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDZhLCAweGE2LCAweDZhLCAweDk3LCAweDFmLCAweDU3LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4OTMsIDB4NTksIDB4YTEsIDB4NTUsIDB4YTMsIDB4MTgsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmZCwgMHg4LCAweGY3LCAweDM2LCAweDUsIDB4OTIsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHgxNSwgMHhmOCwgMHhiOCwgMHhmNywgMHgzMywgMHg4YSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4YjcsIDB4ZmMsIDB4NGIsIDB4ZmIsIDB4NTUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDg0LCAweGY3LCAweGViLCAweDE1LCAweGFiLCAweGFlLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4YTUsIDB4YTYsIDB4N2EsIDB4NmUsIDB4NjksIDB4NmMsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg3MSwgMHg2ZiwgMHg5ZCwgMHhhOCwgMHgxZSwgMHg4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDE1LCAweGE5LCAweGE0LCAweDlkLCAweGE3LCAweGE5LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NmEsIDB4NmUsIDB4NzcsIDB4NzgsIDB4NmUsIDB4NmUsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHhhZCwgMHgxZSwgMHhmYywgMHhmMiwgMHhmNywgMHhiYywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDVhLCAweGZiLCAweDEwLCAweDlkLCAweDViLCAweGMxLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4N2YsIDB4N2EsIDB4OTUsIDB4NzksIDB4OTMsIDB4NzksIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhmYywgMHg1ZCwgMHhmNywgMHg0OSwgMHg1LCAweDkwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MTUsIDB4ZjcsIDB4YjMsIDB4ZjcsIDB4ZSwgMHhiZCwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGU0LCAweDI2LCAweDUsIDB4ZjgsIDB4MzEsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg4MiwgMHg5MiwgMHg4NCwgMHg5NCwgMHg5NCwgMHg5MiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDFlLCAweDEzLCAweGJjLCAweDk0LCAweDg0LCAweDkyLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4ODQsIDB4ODQsIDB4ODIsIDB4MWUsIDB4ZSwgMHg5ZSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGMyLCAweDU4LCAweGY3LCAweGEsIDB4ZWMsIDB4ZjcsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweGMyLCAweDU0LCAweGMzLCAweGU5LCAweGMyLCAweDEyLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4NTYsIDB4YzAsIDB4ZWIsIDB4YzIsIDB4NTgsIDB4ZjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY3LCAweDgsIDB4NWEsIDB4YzMsIDB4NTQsIDB4YzIsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgxMywgMHhkMywgMHg1MiwgMHhmNywgMHg3ZSwgMHhmNywgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDk1LCAweDdhLCAweDc4LCAweDkxLCAweDc3LCAweDFiLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4NWQsIDB4NTIsIDB4NTIsIDB4YjksIDB4NWUsIDB4YzQsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhiOSwgMHhjNCwgMHg5ZiwgMHg4NiwgMHg5ZSwgMHg4MCwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGQ5LCAweGQ4LCAweDk0LCAweDg2LCAweDk0LCAweDg3LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4MTksIDB4MTMsIDB4YjIsIDB4Y2EsIDB4OTgsIDB4NDUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDYsIDB4OTgsIDB4ZDEsIDB4OTYsIDB4OGQsIDB4OTUsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg5MSwgMHgxOSwgMHhkOSwgMHgzZCwgMHg1LCAweDgwLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4NzgsIDB4NzcsIDB4MWEsIDB4NTMsIDB4YjgsIDB4NWQsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhiOSwgMHhiOSwgMHhjNCwgMHgxZSwgMHgxMywgMHhjYSwgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDVkLCAweGI5LCAweDUzLCAweDc4LCAweDc4LCAweDg1LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4MWUsIDB4M2QsIDB4ZDksIDB4OTEsIDB4OTQsIDB4OGUsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg5NSwgMHgxOSwgMHhjZCwgMHg5NywgMHg1LCAweDlkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHg5NywgMHg4OSwgMHg5NiwgMHg4NywgMHg5NiwgMHg4NSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGQ2LCAweGQ3LCAweDUsIDB4ODEsIDB4OWMsIDB4OWUsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHgxYiwgMHhjNCwgMHhiOSwgMHhiOSwgMHhjNCwgMHhjNCwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDUyLCAweDFmLCAweDEzLCAweGQyLCAweGM2LCAweDUzLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4NTIsIDB4NzgsIDB4OTEsIDB4NzgsIDB4OTUsIDB4N2EsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHg0MCwgMHg4MSwgMHg5MiwgMHg4MSwgMHg5MCwgMHg3ZiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDdmLCAweGM5LCAweDUsIDB4NzksIDB4NiwgMHg3ZiwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDg4LCAweDgxLCAweDg3LCAweDgxLCAweDg1LCAweDE5LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4NSwgMHg5NSwgMHg5YiwgMHg5MCwgMHg5ZSwgMHg5ZSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDVkLCAweGI5LCAweDUyLCAweDUyLCAweDVlLCAweDVlLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4YzYsIDB4YTYsIDB4NTIsIDB4YjgsIDB4NWQsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg5ZiwgMHg5MSwgMHg5NSwgMHg5YiwgMHgxZSwgMHhkNiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDgxLCAweDg3LCAweDgwLCAweDg5LCAweDgwLCAweDE5LCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NSwgMHg3OSwgMHg3LCAweGQwLCAweDdlLCAweDhlLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4ODIsIDB4OTEsIDB4ODIsIDB4MTksIDB4ZjcsIDB4OGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHgxNSwgMHhhNiwgMHg5ZiwgMHg5ZiwgMHhhNiwgMHhhNiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDcwLCAweDcwLCAweDc3LCAweDc3LCAweDcwLCAweDcwLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YTYsIDB4MWUsIDB4ZmIsIDB4NmUsIDB4ZmIsIDB4NjgsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiMiwgMHhiMiwgMHhhNSwgMHhhMCwgMHhhMSwgMHhhNSwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDc1LCAweDcxLCAweDcxLCAweDc1LCAweDc0LCAweDcxLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YTMsIDB4YTQsIDB4MWUsIDB4ZjcsIDB4NmQsIDB4ZmIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxMywgMHhjYSwgMHhkMiwgMHhhNSwgMHhhMSwgMHhhMSwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGEwLCAweDc1LCAweDcxLCAweDcxLCAweDc2LCAweDc2LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NzUsIDB4YTAsIDB4YTUsIDB4MWUsIDB4ZmMsIDB4NDMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHgxNSwgMHhhNSwgMHhhMSwgMHhhMCwgMHg2OSwgMHhhLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4MWUsIDB4ZmMsIDB4NDMsIDB4NCwgMHhhNSwgMHhhMSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGEsIDB4YTAsIDB4YTUsIDB4MWUsIDB4ZSwgMHg5ZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGZiLCAweDQsIDB4NzYsIDB4ZjcsIDB4NzcsIDB4YzgsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNSwgMHg2OSwgMHhkMCwgMHg0OCwgMHhjZSwgMHhlYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweGZiLCAweDEwLCAweGY3LCAweDExLCAweDEyLCAweGQ1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZmIsIDB4MTIsIDB4ZjcsIDB4MTIsIDB4ZWEsIDB4Y2QsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHg2YSwgMHhmNywgMHgxNCwgMHg2YiwgMHhjYiwgMHg0ZCwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY3LCAweDE1LCAweGZiLCAweDE1LCAweGY3LCAweDE2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YTIsIDB4ODAsIDB4ZjcsIDB4YzQsIDB4ZjcsIDB4YWEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg3MiwgMHg2ZCwgMHg5NSwgMHg2YywgMHgxYiwgMHgzYywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDNjLCAweDNjLCAweGNjLCAweDRhLCAweGRhLCAweGRhLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4ZGIsIDB4YWEsIDB4ODAsIDB4YWEsIDB4NzksIDB4YTQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg1MSwgMHg1NSwgMHgwLCAweDlmLCAweDlhLCAweGExLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MWIsIDB4YTYsIDB4OWMsIDB4ODMsIDB4NzgsIDB4OWQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3MiwgMHg4MCwgMHg2YywgMHg2YywgMHgxYSwgMHgzYywgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGQ5LCAweGRhLCAweGNiLCAweGNiLCAweGRhLCAweGRhLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4M2MsIDB4NmQsIDB4NmQsIDB4ODEsIDB4NzksIDB4NzMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhhYSwgMHg0OCwgMHg4MCwgMHg3NiwgMHg5ZSwgMHg4NCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDFhLCAweGE0LCAweDk0LCAweDlkLCAweDlkLCAweDlkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4YTQsIDB4YWEsIDB4ODAsIDB4YWEsIDB4MWIsIDB4ZGEsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhkOSwgMHhkYSwgMHg0YiwgMHhjYiwgMHgzYywgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDUyLCAweDgwLCAweDNjLCAweDRhLCAweDQ5LCAweDNjLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4NmQsIDB4OWQsIDB4NzMsIDB4MWYsIDB4NzgsIDB4NzksIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg3MSwgMHgxYiwgMHg3MywgMHg3NywgMHg5MSwgMHg5ZSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDlkLCAweGE0LCAweDk2LCAweGE5LCAweGFhLCAweDFhLCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4Y2MsIDB4M2MsIDB4M2MsIDB4NGEsIDB4NGIsIDB4M2MsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhhNSwgMHg0OCwgMHg4MCwgMHgzYywgMHhjZCwgMHg0YSwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGE5LCAweDk1LCAweDlkLCAweGEzLCAweDFlLCAweDlkLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4N2IsIDB4NzEsIDB4MWEsIDB4NmYsIDB4ODUsIDB4N2MsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxZSwgMHgxMywgMHhhNSwgMHg1MiwgMHg4MCwgMHhmNywgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY1LCAweDQyLCAweGEsIDB4ZmIsIDB4YjUsIDB4ZjcsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhhLCAweGUsIDB4NWEsIDB4OGIsIDB4ZjcsIDB4YywgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDIyLCAweGE3LCAweGJmLCAweDkzLCAweDgzLCAweDk1LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4MzAsIDB4ZTksIDB4NjYsIDB4ZjcsIDB4YiwgMHgzOSwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweGE0LCAweDcyLCAweGY3LCAweDE3LCAweDJmLCAweGFjLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4YTMsIDB4YTcsIDB4NmYsIDB4ZjYsIDB4MzEsIDB4OTYsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhlNywgMHg3NywgMHgxMiwgMHhmNywgMHgyNCwgMHhhYiwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDcxLCAweDk1LCAweGI0LCAweGU4LCAweDMwLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4YWUsIDB4NjgsIDB4ZjcsIDB4YiwgMHgzNSwgMHhiZCwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI2LCAweGZiLCAweDE4LCAweGE0LCAweDk3LCAweGU3LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4MmYsIDB4OTgsIDB4YmUsIDB4YTksIDB4N2UsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweGY4LCAweDE0LCAweDc5LCAweGEsIDB4OTMsIDB4OWMsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg4NiwgMHg5MiwgMHg3OCwgMHg4MSwgMHg3YywgMHg3YiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDgzLCAweDdhLCAweDkwLCAweDg2LCAweDgsIDB4OWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHg3OCwgMHhhLCAweDgzLCAweDljLCAweDdiLCAweDljLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NzgsIDB4OTQsIDB4ODYsIDB4ODYsIDB4ODYsIDB4ODUsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg5YiwgMHg3YiwgMHg4LCAweGZiLCAweDI4LCAweGY3LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4YSwgMHg4MiwgMHg5YywgMHg3YiwgMHg5YywgMHg3YywgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDk1LCAweDg2LCAweDg0LCAweDg2LCAweDg2LCAweDk0LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4N2IsIDB4OCwgMHhkMiwgMHhmYiwgMHg3NCwgMHgxNSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDU0LCAweGVhLCAweGIsIDB4OTQsIDB4N2YsIDB4NzgsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHgxYiwgMHg2YSwgMHg3MSwgMHg3NCwgMHg2YywgMHg3MCwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGFiLCAweDFmLCAweDEzLCAweDM0LCAweDU0LCAweGU4LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OTEsIDB4OGMsIDB4OGMsIDB4OTAsIDB4MWYsIDB4OGMsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4YywgMHgxYiwgMHg4NywgMHg4NSwgMHg4MCwgMHg4MCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDEzLCAweDk0LCAweDU0LCAweGU4LCAweDgzLCAweDZkLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YWIsIDB4YWMsIDB4YTYsIDB4YTQsIDB4YTksIDB4YTAsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg4NywgMHg5MywgMHgxZSwgMHg5MywgMHg4OSwgMHg1LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4OTIsIDB4OGIsIDB4OTIsIDB4MWIsIDB4MTMsIDB4NDQsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHgyMywgMHhhNywgMHg5OSwgMHhhNywgMHhhOCwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDU0LCAweGU4LCAweDgzLCAweGFhLCAweDcwLCAweGExLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4OGEsIDB4MjQsIDB4ZWMsIDB4MWMsIDB4N2QsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg4MiwgMHg4MSwgMHgxZiwgMHg4YywgMHhiNSwgMHg4OSwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGExLCAweGE0LCAweGE0LCAweGM0LCAweDhiLCAweGI3LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg4MSwgMHg4MSwgMHg4NCwgMHg3NiwgMHg3ZCwgMHgxYSwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDcxLCAweGFhLCAweGE0LCAweGE1LCAweGEwLCAweGE4LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4OTEsIDB4OGEsIDB4OTEsIDB4MWUsIDB4OGMsIDB4OGIsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgxYSwgMHgxMywgMHg5MSwgMHg0LCAweGVjLCAweDFiLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4OTUsIDB4N2YsIDB4OWQsIDB4MWIsIDB4YWEsIDB4YTQsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhhYywgMHg3MiwgMHhhNSwgMHg2YywgMHg3NywgMHg4NiwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDgzLCAweDFmLCAweDhjLCAweDk0LCAweDUsIDB4OGMsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg5MCwgMHg5MCwgMHgxYSwgMHgxMywgMHg5NCwgMHgyNCwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGFjLCAweDczLCAweDk5LCAweDZhLCAweDZkLCAweDc1LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MWUsIDB4MTMsIDB4OTQsIDB4NTEsIDB4ZWMsIDB4MWIsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg3NywgMHg5NCwgMHg3ZiwgMHgxZSwgMHg1NCwgMHg4YSwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDc0LCAweGEyLCAweDcxLCAweGE1LCAweDkxLCAweGM4LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4OCwgMHgxMywgMHg5NCwgMHg1MiwgMHg2YywgMHgxYiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGEwLCAweDgzLCAweDk4LCAweDFiLCAweGFjLCAweGE2LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YTYsIDB4NzYsIDB4YTUsIDB4NmMsIDB4MWYsIDB4MTMsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhlOSwgMHgxYiwgMHg4NiwgMHg4NiwgMHg4YSwgMHg4YSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDg4LCAweDhhLCAweDhiLCAweDhhLCAweDFiLCAweDhmLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OTYsIDB4OWUsIDB4MWEsIDB4YTksIDB4NzEsIDB4YTQsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg3MCwgMHg3MiwgMHg2ZCwgMHg3NiwgMHg5MiwgMHg4NCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDFlLCAweDgzLCAweDhkLCAweDUsIDB4OGQsIDB4ODQsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4NiwgMHgxYiwgMHg3ZSwgMHhhLCAweDZkLCAweDdkLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NmMsIDB4YTQsIDB4NzUsIDB4YWMsIDB4OWIsIDB4OWYsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg5NywgMHgxZiwgMHg4YSwgMHg2OSwgMHg5MiwgMHg0ZSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDdhLCAweDdhLCAweDQ1LCAweDg1LCAweDY1LCAweDhjLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg5MSwgMHg0LCAweGQ0LCAweDFiLCAweDk0LCAweDk3LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OTksIDB4MWEsIDB4YWMsIDB4NzQsIDB4YTUsIDB4NmQsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg3OSwgMHg2ZiwgMHg4NCwgMHg4YSwgMHg4NCwgMHg4ZCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDhhLCAweDhiLCAweDhhLCAweDg4LCAweDFhLCAweDhmLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4OTcsIDB4NzcsIDB4MWIsIDB4NmMsIDB4NzIsIDB4NzAsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhhNCwgMHg3MSwgMHhhYSwgMHhhMCwgMHg5MSwgMHg5MywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDFmLCAweDdlLCAweGEsIDB4OGEsIDB4ODIsIDB4NSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDhiLCAweDg3LCAweDg3LCAweDFhLCAweDY5LCAweGEyLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4MWUsIDB4MTMsIDB4OTIsIDB4NTQsIDB4ZDQsIDB4MWIsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhhNCwgMHhhYywgMHg5YiwgMHg4NiwgMHg5ZiwgMHg4MiwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGIzLCAweDhlLCAweGM0LCAweDhkLCAweGE1LCAweDcxLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg3MiwgMHg4OCwgMHg0OSwgMHg2OCwgMHgxYSwgMHgzMCwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGEsIDB4OTQsIDB4OWMsIDB4ODYsIDB4OTEsIDB4ODYsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg4MiwgMHg3YywgMHg3YiwgMHg3YiwgMHg3YSwgMHg4MiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDg2LCAweDgsIDB4ZjcsIDB4YTUsIDB4ZjUsIDB4NTAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweDk0LCAweDhjLCAweGU4LCAweDRiLCAweDUxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1OCwgMHhmNywgMHg1NiwgMHg0NCwgMHhhLCAweGZiLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTgsIDB4NDQsIDB4YSwgMHhmNywgMHg1OSwgMHhmYiwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweGEsIDB4ZSwgMHg1ZCwgMHg5YiwgMHg3NiwgMHhmNywgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGY3LCAweGQxLCAweDc3LCAweDEsIDB4ZjgsIDB4NiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4OTQsIDB4ZjcsIDB4NTcsIDB4MTUsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1YywgMHhmNywgMHgyMCwgMHhmNywgMHg1YywgMHhmNywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweGZiLCAweDZmLCAweGY3LCAweDI1LCAweGZiLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWMsIDB4ZmIsIDB4MjAsIDB4ZmIsIDB4NWMsIDB4ZmIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNSwgMHg1LCAweGY4LCAweDE1LCAweGFkLCAweDE1LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4YzgsIDB4YTQsIDB4OTAsIDB4OGYsIDB4ODgsIDB4ODYsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg1MSwgMHg3MywgMHg4NywgMHg4YSwgMHg4ZCwgMHg4ZiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDg1LCAweDE1LCAweDczLCAweDRmLCAweGM1LCAweGE0LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OGUsIDB4OTAsIDB4YTQsIDB4YzIsIDB4NGUsIDB4NzMsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg4OSwgMHg4NywgMHgxZiwgMHhjNCwgMHg0ZCwgMHgxNSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDhkLCAweDhmLCAweGEzLCAweGM3LCAweDUxLCAweDcyLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ODgsIDB4ODYsIDB4NzIsIDB4NTQsIDB4YzgsIDB4YTMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMSwgMHgzZSwgMHgxNSwgMHhhNCwgMHhjNywgMHhjNSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDhjLCAweDg5LCAweDg3LCAweDczLCAweDU0LCAweDRlLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4ODcsIDB4OGUsIDB4OTAsIDB4MWUsIDB4ZSwgMHg1ZSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDU0LCAweDEsIDB4YjEsIDB4ZjksIDB4NjIsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGY3LCAweDU4LCAweDE1LCAweGY3LCAweDFjLCAweGZiLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4NzMsIDB4ZjcsIDB4NjgsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2ZSwgMHhmNywgMHgyMiwgMHhmYiwgMHgyMSwgMHhmNywgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFlLCAweGZiLCAweDVmLCAweGZiLCAweDcxLCAweGZiLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg3ZSwgMHhmYiwgMHgxYSwgMHgxNSwgMHg5ZSwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM2LCAweGJjLCAweDkyLCAweDlkLCAweDgzLCAweDlkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4YzcsIDB4NzksIDB4YzYsIDB4YzQsIDB4NzgsIDB4YmMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhhMSwgMHg3ZSwgMHhhMCwgMHg5OSwgMHhiZiwgMHhmYiwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDlhLCAweDc5LCAweDUyLCAweGY3LCAweDM1LCAweDU1LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4OTUsIDB4N2EsIDB4ZmIsIDB4MzMsIDB4NTUsIDB4OWUsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHhhMSwgMHg0ZiwgMHhmYiwgMHgzNywgMHg3NywgMHg5MywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDVjLCAweGY3LCAweDMyLCAweDUsIDB4ZSwgMHg3NCwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4ZDYsIDB4ZjcsIDB4NzgsIDB4MywgMHhmNywgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDE1LCAweGY3LCAweDdiLCAweGY3LCAweDNkLCAweGY3LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2QsIDB4MzEsIDB4ZjcsIDB4YTksIDB4ZjcsIDB4N2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHg1LCAweGZiLCAweGI1LCAweDYsIDB4MzYsIDB4ZjcsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhmYiwgMHhhMSwgMHg1LCAweGZiLCAweGIzLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhmYiwgMHg0MSwgMHg1LCAweGUsIDB4N2IsIDB4OTIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0YywgMHhhNiwgMHhmNywgMHg5MCwgMHg1NCwgMHhhLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MywgMHhmNywgMHg0NiwgMHg3ZCwgMHgxNSwgMHhmNywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJkLCAweGY3LCAweDdkLCAweGZiLCAweDJkLCAweDQ1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4ZjcsIDB4NjksIDB4ZjcsIDB4NGYsIDB4ZmIsIDB4YTgsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmNywgMHg4NiwgMHgyNywgMHhmYiwgMHg4NiwgMHhmYiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGY3LCAweDYwLCAweGZiLCAweDRmLCAweDUsIDB4NjMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHgxNSwgMHhlNiwgMHhmNywgMHg4ZSwgMHhmYiwgMHg3MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGY3LCAweGExLCAweDgwLCAweGQ0LCAweGY3LCAweDkwLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OTAsIDB4ZjcsIDB4YTEsIDB4OTYsIDB4ZmIsIDB4NzgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhlYywgMHhmYiwgMHg4ZSwgMHhmYiwgMHg2NywgMHhmNywgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHg1OSwgMHg5MiwgMHg3NiwgMHhmOSwgMHg0NSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDU0LCAweGEsIDB4YjksIDB4ZjksIDB4ZCwgMHhiMywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZjcsIDB4ZWMsIDB4MTUsIDB4ZmIsIDB4NWIsIDB4ZjcsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMywgMHhmNywgMHg1OSwgMHhmNywgMHg1YiwgMHhmNywgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM2LCAweGY3LCAweDVhLCAweGY3LCAweDVhLCAweGZiLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzUsIDB4ZmIsIDB4NWEsIDB4ZmIsIDB4NWQsIDB4ZmIsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNSwgMHhmYiwgMHg1YywgMHgxZSwgMHhmNywgMHgzMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDE1LCAweGRhLCAweGY3LCAweDdlLCAweGZiLCAweDUzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4NSwgMHhmNywgMHg4NCwgMHg2LCAweGQ2LCAweGY3LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4ZmIsIDB4NzQsIDB4NSwgMHhmNywgMHg4NiwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4ZmIsIDB4MjQsIDB4ZDQsIDB4ZmIsIDB4N2UsIDB4ZmIsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNSwgMHg1LCAweGUsIDB4OGQsIDB4OTIsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhhZCwgMHg4YiwgMHhmNywgMHg0ZiwgMHhmNywgMHhjNywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4YjEsIDB4YWMsIDB4OGIsIDB4ZjcsIDB4NTAsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHgzLCAweGY3LCAweDQ5LCAweDdkLCAweDE1LCAweGY3LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTMsIDB4ZjcsIDB4ODQsIDB4ZmIsIDB4NTMsIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIwLCAweGY3LCAweDlkLCAweGY3LCAweDI2LCAweGZiLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4MzYsIDB4ZjcsIDB4YjcsIDB4M2IsIDB4ZmIsIDB4YjcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg4ZCwgMHhmNywgMHg4ZSwgMHhmYiwgMHgyNiwgMHg1LCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MTUsIDB4YmYsIDB4YjYsIDB4YWYsIDB4YmYsIDB4YmQsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg1OCwgMHg1OSwgMHg2MywgMHg1YSwgMHg1NiwgMHg1OCwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweGMwLCAweDFlLCAweGUsIDB4N2IsIDB4YjIsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHhmNywgMHg0YSwgMHg4NiwgMHhiMCwgMHhmNywgMHhhNywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY3LCAweGQ0LCAweGY3LCAweDRhLCAweDEzLCAweGI4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4MzUsIDB4YSwgMHhlYywgMHgxNSwgMHgxMywgMHhkOCwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDYyLCAweGJkLCAweGJkLCAweGI0LCAweGI0LCAweGJkLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4YjQsIDB4NTksIDB4NTksIDB4NjIsIDB4NjIsIDB4NTksIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweGMsIDB4YzYsIDB4YTgsIDB4ZjcsIDB4NWMsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhlMSwgMHhiMywgMHhhZiwgMHg3NSwgMHg3NywgMHhmNywgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweGY4LCAweGFlLCAweGEyLCAweGNlLCAweGE1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4ZjgsIDB4YWUsIDB4ZjgsIDB4NmEsIDB4MTUsIDB4OTAsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg5MCwgMHg4ZSwgMHg4ZiwgMHg4ZiwgMHg5YSwgMHg4YiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDljLCAweDdiLCAweDdiLCAweDczLCAweDgyLCAweDdlLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg4YiwgMHg5ZiwgMHg3MSwgMHg5NSwgMHg4MCwgMHgxZSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4OTcsIDB4MTUsIDB4OTcsIDB4OTYsIDB4ZDAsIDB4YjUsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhiYiwgMHhhMSwgMHhjNywgMHhhMiwgMHhhNiwgMHg5NCwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4OTEsIDB4OTQsIDB4OGQsIDB4OTAsIDB4MWEsIDB4OTQsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg3ZSwgMHg3ZSwgMHg0ZCwgMHg3MywgMHg2OCwgMHgzYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweDY4LCAweDM0LCAweDVmLCAweDdmLCAweDFhLCAweDgwLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4OTksIDB4ODUsIDB4MWUsIDB4OTksIDB4ODUsIDB4OTIsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg5NCwgMHg4LCAweGZiLCAweGUsIDB4NGMsIDB4MTUsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhhZiwgMHg2ZCwgMHhhZiwgMHgxYiwgMHhhZiwgMHhiZCwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDkzLCAweDFmLCAweDkxLCAweDk4LCAweDk1LCAweGEyLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4OWUsIDB4OTgsIDB4YjIsIDB4YTEsIDB4YWIsIDB4OWIsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhiMywgMHg5ZiwgMHhiMSwgMHg4YywgMHg5YywgMHg4YywgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDljLCAweDc4LCAweGEyLCAweDkxLCAweGIwLCAweDljLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OCwgMHhhMywgMHg4YSwgMHg2ZiwgMHhiZCwgMHg3ZSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDI2LCAweDY2LCAweDZhLCAweDQyLCAweDFmLCAweDQyLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NWMsIDB4ODMsIDB4ODYsIDB4OCwgMHg4NiwgMHg4MywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDgxLCAweDFiLCAweDgxLCAweDc5LCAweDk0LCAweDkwLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODMsIDB4OGUsIDB4NzksIDB4OTcsIDB4ODMsIDB4OTUsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4MSwgMHg3ZCwgMHg4MCwgMHg1YywgMHg4LCAweGY3LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOSwgMHgxNSwgMHg4YiwgMHhmNywgMHg3YywgMHhmYiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDgxLCAweDFlLCAweDgxLCAweDk3LCAweDlhLCAweDg1LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4OTIsIDB4OTAsIDB4OGUsIDB4OTIsIDB4OTYsIDB4MWYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhmNywgMHgyYywgMHhmNCwgMHg5NiwgMHg5NCwgMHg4LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4OGYsIDB4OWQsIDB4OTgsIDB4OTgsIDB4OGMsIDB4OTQsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg5ZCwgMHg4NiwgMHg5YiwgMHg3YSwgMHhhMywgMHgxZSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDI5LCAweGY3LCAweDksIDB4ODAsIDB4OTgsIDB4ODMsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHhhMCwgMHg3YSwgMHg5NCwgMHg4LCAweDEzLCAweGY3LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ODIsIDB4OGYsIDB4N2QsIDB4OGEsIDB4NzcsIDB4OGEsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg2ZCwgMHg3YiwgMHg3OCwgMHg4MSwgMHg2MSwgMHg3NywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDc3LCAweDdiLCAweDg0LCAweDcyLCAweDg4LCAweDc0LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4ODcsIDB4NzksIDB4ODQsIDB4ODMsIDB4ODAsIDB4N2UsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg3OCwgMHg4NywgMHg4LCAweGZiLCAweDE1LCAweGY3LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OGMsIDB4N2EsIDB4OGQsIDB4NmIsIDB4OTAsIDB4NzUsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDk3LCAweGIzLCAweDc3LCAweGE5LCAweDFiLCAweGE5LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4OWUsIDB4OWUsIDB4MWYsIDB4OTIsIDB4YTEsIDB4OGYsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhhMiwgMHg4LCAweDgwLCAweDgxLCAweDY3LCAweDZiLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NWQsIDB4NmMsIDB4YWYsIDB4OWEsIDB4N2UsIDB4MWYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg4ZSwgMHgxNSwgMHg3NiwgMHhhMiwgMHhhZSwgMHhhMCwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDUsIDB4ODcsIDB4NTQsIDB4MTUsIDB4NzksIDB4YTAsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg5YywgMHg3NiwgMHg1LCAweDg4LCAweDU1LCAweDE1LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YWEsIDB4YTEsIDB4OWQsIDB4NzcsIDB4NSwgMHg1MywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YTIsIDB4YTksIDB4YTAsIDB4OWYsIDB4NzcsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGI5LCAweDE1LCAweDc1LCAweGEyLCAweGFmLCAweGEzLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NSwgMHg4NiwgMHg1MSwgMHgxNSwgMHg3NywgMHhhMCwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGEwLCAweDc1LCAweDUsIDB4ODYsIDB4NTAsIDB4MTUsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhhZiwgMHhhNCwgMHg5ZCwgMHg3OCwgMHg1LCAweDg2LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzYsIDB4YTMsIDB4YWQsIDB4YTQsIDB4YTAsIDB4NzMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDkxLCAweGYxLCAweDE1LCAweDk3LCAweDkzLCAweGY3LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4OTQsIDB4OTAsIDB4OCwgMHg5MCwgMHg5NCwgMHg5NCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDFiLCAweDkyLCAweDhjLCAweDg4LCAweDg2LCAweDg2LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4N2UsIDB4ODMsIDB4MWYsIDB4NmUsIDB4N2EsIDB4MjIsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg4NSwgMHg4LCAweDg0LCAweDgwLCAweDdlLCAweDdlLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ODUsIDB4ODgsIDB4OGIsIDB4OTEsIDB4OTMsIDB4OTAsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg5NywgMHgxZiwgMHhkNywgMHg1OCwgMHgxNSwgMHg3OCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDlmLCAweDlmLCAweDc0LCAweDUsIDB4OGUsIDB4NTEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhhMiwgMHhhOCwgMHhhMCwgMHhhMSwgMHg3NCwgMHg1LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4MTUsIDB4NzksIDB4YTAsIDB4YTgsIDB4OWUsIDB4OWQsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDhhLCAweDU0LCAweDE1LCAweDc3LCAweGEyLCAweGE5LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NzIsIDB4NSwgMHg0MiwgMHg0OCwgMHgxNSwgMHg4MywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGY0LCAweDdjLCAweDljLCAweDdjLCAweDljLCAweDhjLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OGUsIDB4OTAsIDB4OGYsIDB4OWMsIDB4N2MsIDB4OTMsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg4MCwgMHhlNiwgMHgyMCwgMHg5MiwgMHg4NCwgMHg4LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OTMsIDB4ODcsIDB4OGYsIDB4MWIsIDB4OGYsIDB4OTUsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg5MiwgMHgxZiwgMHg5MiwgMHg5MCwgMHhmNywgMHg2LCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OTAsIDB4OCwgMHg5MCwgMHg5MiwgMHg5NCwgMHg5MiwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDhmLCAweDkxLCAweDg4LCAweDg2LCAweDg2LCAweDgyLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4ODYsIDB4MWYsIDB4ODIsIDB4ODYsIDB4ZmIsIDB4MTYsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg4NiwgMHg4NCwgMHg4NiwgMHg4OSwgMHg4OSwgMHg4OSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDg1LCAweDhjLCAweDcwLCAweDhhLCAweDgyLCAweDgsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4YiwgMHg3OSwgMHg4NiwgMHgxYiwgMHg4NiwgMHg4OCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDkzLCAweDg4LCAweDllLCAweDhhLCAweDlkLCAweDFmLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4ODYsIDB4OTQsIDB4ODMsIDB4OTUsIDB4OCwgMHhlLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4NzYsIDB4ZjgsIDB4MiwgMHhiNSwgMHg4YiwgMHhiMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDc3LCAweDEsIDB4ZjcsIDB4NGEsIDB4MzUsIDB4YSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGU2LCAweGQ3LCAweGU2LCAweDNmLCAweDVmLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHhjYSwgMHhmYiwgMHhiLCAweDgzLCAweDZlLCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhmYiwgMHg3LCAweGZiLCAweGIsIDB4OTMsIDB4ZjAsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4NzQsIDB4YjIsIDB4NzYsIDB4ZjcsIDB4NzUsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHhhNSwgMHg4NSwgMHhiMCwgMHhmNywgMHhhNywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweGU4LCAweGY3LCAweDQyLCAweDRmLCAweGEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGQ4LCAweDMyLCAweGEsIDB4ZmIsIDB4MTAsIDB4NDIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMCwgMHhmMiwgMHhmNywgMHgxMCwgMHgyNCwgMHg0ZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGY3LCAweDFjLCAweGUxLCAweGZiLCAweDM0LCAweDgxLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzAsIDB4NjMsIDB4ZmIsIDB4MzAsIDB4ZmIsIDB4MzQsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYywgMHgzNSwgMHg1LCAweGUsIDB4ODMsIDB4OTIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzZiwgMHhhMCwgMHhmNywgMHhhMywgMHg3NywgMHgxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4ZDksIDB4MywgMHhmNywgMHgzZiwgMHg3ZCwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGY3LCAweDQ0LCAweGY3LCAweDk1LCAweGZiLCAweDQ0LCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWUsIDB4ZjcsIDB4NzEsIDB4ZjcsIDB4M2EsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDYsIDB4MmMsIDB4ZjcsIDB4YTMsIDB4MmEsIDB4ZmIsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweGI0LCAweDYsIDB4ZjcsIDB4N2QsIDB4ZmIsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDJjLCAweGJhLCAweDE1LCAweDM4LCAweGVkLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGQsIDB4NSwgMHhmYiwgMHhlZiwgMHg0LCAweGQ5LCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg5MiwgMHg2LCAweGZjLCAweDYxLCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZmIsIDB4NjksIDB4ZjcsIDB4MjQsIDB4ZjcsIDB4ZWEsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDhiLCAweDQsIDB4ZjcsIDB4MTksIDB4NjIsIDB4ZjIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg1LCAweGZjLCAweDYxLCAweDk1LCAweDE1LCAweGY3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmQsIDB4NSwgMHhmYiwgMHgxNiwgMHg3LCAweGUsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg3NiwgMHhmOCwgMHg0NywgMHhhMCwgMHhmNywgMHg5YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4ZDMsIDB4ZjcsIDB4ZWQsIDB4MywgMHhmNywgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDE1LCAweGY3LCAweGQsIDB4NzYsIDB4ZjcsIDB4NDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmNywgMHgzNSwgMHhmYiwgMHgxMiwgMHhmNywgMHhmLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZjcsIDB4YTksIDB4ZjcsIDB4NzQsIDB4ZjcsIDB4MzIsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg1LCAweGZiLCAweDczLCAweDYsIDB4MzcsIDB4ZjcsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0LCAweDlkLCAweDMyLCAweGZiLCAweDliLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg2LCAweGY3LCAweDc2LCAweGZiLCAweDQxLCAweDUsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3YywgMHgxNSwgMHhkYiwgMHhmNywgMHg4NiwgMHhmYiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIyLCAweDUsIDB4ZjcsIDB4ODQsIDB4NiwgMHhkYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGRkLCAweGZiLCAweDhiLCAweDUsIDB4ZjcsIDB4OGMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVmLCAweGZiLCAweDIyLCAweGRhLCAweGZiLCAweDkxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4ZjcsIDB4MzgsIDB4NSwgMHhlLCAweDJjLCAweDlkLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NGIsIDB4NzcsIDB4MSwgMHhiZiwgMHhmOSwgMHgxNCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4ZjcsIDB4MywgMHgxNSwgMHhmNywgMHg4MiwgMHhmNywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmQsIDB4ZmIsIDB4N2IsIDB4YTAsIDB4OTgsIDB4NjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhmNywgMHg4OCwgMHhkNiwgMHg1LCAweGEzLCAweDcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHhiMywgMHhhMiwgMHhmNywgMHg5ZSwgMHg3MCwgMHg5NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDg2LCAweGZiLCAweDdmLCAweGY3LCAweDE0LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4MzgsIDB4ZmIsIDB4NzEsIDB4ZmIsIDB4MzYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg1LCAweGUsIDB4ZmIsIDB4OCwgMHg5YSwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGY3LCAweDNmLCAweGY3LCAweDliLCAweDc3LCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg5NiwgMHg4YiwgMHhmNywgMHgzYywgMHgzLCAweGM0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgxNSwgMHhmNywgMHg5MSwgMHhmNywgMHgyMCwgMHhmNywgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDk1LCAweDllLCAweDk5LCAweDRmLCAweGY3LCAweGFjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YzksIDB4NSwgMHhhNywgMHg3LCAweGZiLCAweGEyLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZjcsIDB4YWIsIDB4NmYsIDB4OTgsIDB4ZmIsIDB4MTYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhmYiwgMHg4ZiwgMHhmNywgMHgyZSwgMHg3YSwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGZiLCAweDcxLCAweGZiLCAweDVhLCAweGZiLCAweDVjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NSwgMHhmNywgMHg2NCwgMHgxNSwgMHhiOSwgMHhiMCwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGJhLCAweGFmLCAweDY0LCAweDVkLCAweDVjLCAweDY3LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4NWIsIDB4NjYsIDB4YjIsIDB4YmEsIDB4MWUsIDB4ZSwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDc2LCAweGY5LCAweDMwLCAweDc3LCAweDEsIDB4YjMsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgzLCAweGY3LCAweDQsIDB4ZjcsIDB4MTAsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHhmNywgMHg0NSwgMHhmYiwgMHg1LCAweGZiLCAweGE4LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4YTQsIDB4ODUsIDB4YjEsIDB4NzksIDB4MTksIDB4YjQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhmNywgMHg5LCAweGZiLCAweGE1LCAweGE3LCAweGE1LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YjEsIDB4OTUsIDB4MTksIDB4ZmIsIDB4NDgsIDB4ZjcsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhOSwgMHhmYiwgMHgzLCAweDg4LCAweGFhLCAweDk5LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4YTgsIDB4MTksIDB4ZmIsIDB4YjksIDB4YjUsIDB4ZjcsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5LCAweDc0LCAweGEzLCAweDc2LCAweGIwLCAweDgyLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZmIsIDB4ODIsIDB4ZmIsIDB4NDUsIDB4ZjcsIDB4NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDZjLCAweDhjLCAweDYyLCAweDk2LCAweDZmLCAweDk4LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4ZmIsIDB4YjgsIDB4ZmIsIDB4OCwgMHhmNywgMHhhNSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDY4LCAweDc2LCAweDZhLCAweDdlLCAweDE5LCAweDhjLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NSwgMHhmYiwgMHg4MiwgMHhmYiwgMHhhOCwgMHhmNywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2NCwgMHg4MCwgMHg3MCwgMHg3YywgMHg2YSwgMHgxZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDYwLCAweGZiLCAweGE1LCAweGZiLCAweDgsIDB4YTQsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg3NCwgMHg5OSwgMHg2NiwgMHgxOSwgMHhlLCAweDVhLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4OGYsIDB4NzcsIDB4YWUsIDB4NzcsIDB4ZjcsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhjMiwgMHhmOSwgMHgzYywgMHgxMywgMHhkOCwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweDE1LCAweGY3LCAweDhiLCAweGY3LCAweDYsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhMSwgMHg5ZCwgMHg4OCwgMHhlNywgMHhmNywgMHg5MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGZiLCAweDczLCAweDk5LCAweDk0LCAweGZiLCAweDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmNywgMHhhMiwgMHg1YywgMHg4ZSwgMHg5YiwgMHhmYiwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweDczLCAweGY3LCAweDMwLCAweDUsIDB4MTMsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg5YSwgMHhmYiwgMHg4OSwgMHhmYiwgMHg2LCAweGJhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NzksIDB4OGUsIDB4MmQsIDB4ZmIsIDB4OTMsIDB4ZmIsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MywgMHg3YywgMHg4MiwgMHhmNywgMHg4LCAweGZiLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YTIsIDB4YmEsIDB4ODgsIDB4N2IsIDB4ZjcsIDB4OTMsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3MywgMHhmYiwgMHgzMCwgMHg1LCAweGUsIDB4NWMsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHhhLCAweDhlLCAweGJlLCAweDdlLCAweDY3LCAweGEsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhiOCwgMHhjZiwgMHg0OCwgMHhjZiwgMHhkNywgMHhhNywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweGIwLCAweDYwLCAweGEsIDB4OTUsIDB4YmUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHhhLCAweGFlLCAweGNmLCAweDQ4LCAweGNmLCAweGQ3LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZWMsIDB4NTIsIDB4YjQsIDB4NTUsIDB4NDAsIDB4ZjcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgxNSwgMHg3MywgMHhhNiwgMHg3ZiwgMHhiOSwgMHhhZSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDlkLCAweGI1LCAweGFiLCAweGFiLCAweDFlLCAweDhkLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg4MSwgMHg3YSwgMHg4NSwgMHg3NiwgMHg3OCwgMHgxYSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDZjLCAweGI0LCAweDgyLCAweDFlLCAweDQ5LCAweDk3LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4ZDIsIDB4MWIsIDB4YTUsIDB4YTMsIDB4OTUsIDB4OWQsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3OSwgMHg4YywgMHg3OSwgMHg5MiwgMHg3YiwgMHg5MywgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDY1LCAweGMzLCAweDhhLCAweGNmLCAweDhlLCAweDhjLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4OTQsIDB4YWYsIDB4NjQsIDB4YjYsIDB4MWIsIDB4OWIsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg5MywgMHg5OCwgMHgxZiwgMHg3OCwgMHhhNywgMHhhZCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDFiLCAweGM5LCAweGMwLCAweGIyLCAweGNjLCAweDhlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NzAsIDB4NWQsIDB4N2YsIDB4NjgsIDB4MWIsIDB4NWUsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHhhYiwgMHg2YiwgMHg3ZiwgMHhhLCAweDEzLCAweGQxLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MjEsIDB4NDAsIDB4ODEsIDB4OWMsIDB4YTAsIDB4ODUsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiNSwgMHhhYSwgMHhhMywgMHhiNCwgMHg5NCwgMHgxZiwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGM4LCAweGJmLCAweGQyLCAweDFhLCAweGE1LCAweDgxLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4OWUsIDB4MWUsIDB4OGEsIDB4NzksIDB4ODQsIDB4NzksIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg2ZCwgMHg0ZiwgMHg1MywgMHg2NSwgMHg0NywgMHg4YSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDE4LCAweGIyLCAweDk0LCAweGIyLCAweGFmLCAweGI2LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4ODUsIDB4OWIsIDB4ODMsIDB4OTgsIDB4MWUsIDB4MTMsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHhiOSwgMHg1NCwgMHhjMCwgMHg5ZSwgMHhhNywgMHg5NiwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDFhLCAweDEzLCAweGU1LCAweDUyLCAweGI5LCAweDIxLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4NjQsIDB4YzAsIDB4NGEsIDB4OGUsIDB4MWUsIDB4MTMsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHhiOSwgMHg1NCwgMHhjMCwgMHhhMywgMHg3MCwgMHg5NywgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDFhLCAweDVlLCAweDc5LCAweDYxLCAweDZiLCAweDZiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OGQsIDB4NSwgMHgxMywgMHhlNCwgMHg4MiwgMHhiOSwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDk1LCAweDljLCAweDkxLCAweGEwLCAweDllLCAweDFhLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4YWEsIDB4NjIsIDB4OTQsIDB4MWUsIDB4MTMsIDB4ZTUsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg0OSwgMHg0MCwgMHhjZCwgMHg3ZiwgMHg1NywgMHhjOCwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDcxLCAweDczLCAweDgxLCAweDc5LCAweDc4LCAweDFmLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4OWQsIDB4ODQsIDB4OWIsIDB4ODMsIDB4YzcsIDB4NmQsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg4YywgMHg0NywgMHg4OCwgMHg4YSwgMHgxOCwgMHhiMiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGIyLCAweDYwLCAweDFiLCAweDdiLCAweDdiLCAweDg1LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4MWYsIDB4MTMsIDB4ZTUsIDB4NTEsIDB4YjksIDB4NTUsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg2ZiwgMHg2OSwgMHg5NiwgMHg2OSwgMHgxYiwgMHg2ZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NTYsIDB4NjQsIDB4NGEsIDB4ODgsIDB4MWYsIDB4MTMsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhiOSwgMHg1NSwgMHg0MCwgMHhhMywgMHhhNiwgMHhiOSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDFiLCAweGI4LCAweGI1LCAweDc5LCAweDZiLCAweGFiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ODksIDB4NSwgMHgxMywgMHhlOCwgMHgyMiwgMHhiOSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDk1LCAweDdhLCAweDc2LCAweDkxLCAweDc4LCAweDFiLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NzMsIDB4NjIsIDB4ODIsIDB4MWYsIDB4NDksIDB4N2YsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg0NCwgMHgxYSwgMHg3MSwgMHg5NSwgMHg3MywgMHg5ZCwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDhjLCAweDlkLCAweDkyLCAweDlkLCAweDkzLCAweDliLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4YzMsIDB4YjEsIDB4Y2YsIDB4OGMsIDB4OGMsIDB4ODgsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg4MiwgMHg2NCwgMHg2NywgMHg2MCwgMHgxYSwgMHg3YiwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDkzLCAweDdlLCAweDFlLCAweDc4LCAweDZmLCAweDgwLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4MWEsIDB4NGQsIDB4YjIsIDB4NTYsIDB4Y2MsIDB4ODgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhmNywgMHg2LCAweDE1LCAweDgxLCAweDliLCAweDg3LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4MWEsIDB4MTMsIDB4ZTMsIDB4NTIsIDB4YjksIDB4NTUsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhhMSwgMHhiYywgMHhiNCwgMHg5ZCwgMHgxZSwgMHg4YSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OGUsIDB4N2YsIDB4N2UsIDB4OGQsIDB4N2YsIDB4MWIsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHg3OSwgMHg2ZSwgMHg3MCwgMHgxZiwgMHg2ZSwgMHhhLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YzIsIDB4YjEsIDB4YmQsIDB4MWIsIDB4OTYsIDB4OTYsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg5NSwgMHgxZiwgMHg4YywgMHg4ZCwgMHg3MywgMHhiNiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDU5LCAweDhhLCAweDE5LCAweDEzLCAweGU1LCAweDRhLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NDAsIDB4OTUsIDB4OWIsIDB4OWUsIDB4OGYsIDB4OWUsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlNSwgMHg1MiwgMHhiOCwgMHhkNSwgMHg0MCwgMHhiNiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDYyLCAweDlkLCAweDFmLCAweDhkLCAweDhjLCAweDUsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg4ZCwgMHg5OCwgMHg5NywgMHgxYSwgMHhiMSwgMHg3OSwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGE2LCAweDFlLCAweDEzLCAweGU1LCAweDUyLCAweGI5LCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4YmQsIDB4N2UsIDB4YjEsIDB4NTQsIDB4NTksIDB4MWEsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4MCwgMHg4NywgMHg4MSwgMHgxZSwgMHg4ZCwgMHg4YSwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGI4LCAweGQ0LCAweDhhLCAweGJkLCAweDE5LCAweDEzLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4YjksIDB4NTMsIDB4NDAsIDB4OTUsIDB4N2IsIDB4OGYsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHgxYSwgMHg2MCwgMHg3NSwgMHg1YSwgMHg2MiwgMHg3OSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDg5LCAweDUsIDB4ODgsIDB4OTcsIDB4OTgsIDB4ODksIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiMSwgMHhjYSwgMHg5ZCwgMHhhOCwgMHhhNiwgMHgxZiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDU0LCAweDY1LCAweDU5LCAweDFiLCAweDgwLCAweDgwLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ODEsIDB4MWYsIDB4OGEsIDB4ODksIDB4NSwgMHgxMywgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGI5LCAweDU1LCAweDQwLCAweGEzLCAweDYwLCAweGQ0LCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4OGMsIDB4OCwgMHgxMywgMHhlNSwgMHg1MiwgMHhiMiwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDgxLCAweDdiLCAweDc4LCAweDg3LCAweDc4LCAweDFiLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4YTEsIDB4YjQsIDB4NzksIDB4MWYsIDB4ODksIDB4OGEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDdmLCAweDg5LCAweDdlLCAweDdmLCAweDFhLCAweDY1LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4YTgsIDB4NzAsIDB4MWUsIDB4NTksIDB4OTgsIDB4NjUsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgxYSwgMHg5NiwgMHg4ZCwgMHg5NiwgMHg4ZiwgMHg5NSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDhjLCAweDUsIDB4MTMsIDB4ZTUsIDB4NTIsIDB4YjksIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg2MCwgMHg3MywgMHg1ZSwgMHg0MiwgMHg4YywgMHg1OSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4ZjcsIDB4MzksIDB4MTUsIDB4YTQsIDB4OTcsIDB4YTYsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhhNiwgMHg5OCwgMHhhNCwgMHg3MCwgMHg4ZiwgMHg3OCwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDczLCAweDUsIDB4NmUsIDB4YSwgMHg3MiwgMHg3ZiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDUsIDB4ZSwgMHhmYiwgMHgyNCwgMHg5MiwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDc3LCAweDEsIDB4YjIsIDB4ZjgsIDB4ZmQsIDB4MywgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNlLCAweDE1LCAweGY3LCAweDhkLCAweGQ3LCAweGM2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YzcsIDB4ZjcsIDB4OTgsIDB4ZjcsIDB4OGQsIDB4M2UsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHhmNywgMHg0NCwgMHhmNywgMHg1ZiwgMHhmNywgMHg0NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDNjLCAweDUxLCAweGY3LCAweDljLCAweDRlLCAweGZiLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OTEsIDB4ZGEsIDB4ZjcsIDB4NWUsIDB4ZmIsIDB4NDQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NTksIDB4NGMsIDB4YTIsIDB4ZjcsIDB4NmEsIDB4YTgsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg3NywgMHgxLCAweGY3LCAweDUxLCAweGNkLCAweDE1LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ODcsIDB4NzksIDB4NzksIDB4MWEsIDB4NWIsIDB4YTQsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhhNywgMHhhOCwgMHg5NSwgMHg5NywgMHhhNSwgMHgxZSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGJhLCAweGIxLCAweGI1LCAweGIzLCAweDgsIDB4YjQsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhkMiwgMHhjYSwgMHgxYiwgMHhhMiwgMHg5ZSwgMHg4MiwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDFmLCAweDhmLCAweDljLCAweDlkLCAweDhlLCAweDUsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg3MiwgMHg5NywgMHg2ZSwgMHgxYiwgMHg0YywgMHg0NiwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDVmLCAweDFmLCAweDVhLCAweDU4LCAweGZiLCAweDIsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHgxYiwgMHg2ZSwgMHg2ZCwgMHhhMSwgMHhhYSwgMHg5NywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDkwLCAweDk2LCAweDFmLCAweDg0LCAweDkyLCAweDk5LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MWIsIDB4OTAsIDB4OGUsIDB4OGQsIDB4OGYsIDB4OGUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhmNywgMHgxMywgMHg1LCAweDhmLCAweDkxLCAweDhjLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4MWEsIDB4OTQsIDB4ODksIDB4OWYsIDB4ODQsIDB4OTEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg5NCwgMHg3NywgMHg5YiwgMHg5YSwgMHgxYSwgMHhhZCwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDlmLCAweGE3LCAweDFlLCAweGE1LCAweDllLCAweGI3LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4YWMsIDB4YTUsIDB4NzEsIDB4OTUsIDB4MWIsIDB4OTAsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg4ZiwgMHg4ZSwgMHgxZiwgMHhlNywgMHhmNywgMHgxMywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OTAsIDB4OGIsIDB4OTcsIDB4OTEsIDB4MWEsIDB4OTMsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg4NCwgMHg5MSwgMHgxZSwgMHhhMCwgMHg3MywgMHg1NCwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDFiLCAweDdjLCAweDdkLCAweDg4LCAweDgzLCAweDdmLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4NjAsIDB4MzIsIDB4ZmIsIDB4NSwgMHg1YywgMHg0YSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDQxLCAweGZiLCAweDAsIDB4NzIsIDB4MzksIDB4OCwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDg5LCAweDdlLCAweDdmLCAweDFhLCAweDY1LCAweDlkLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4NmUsIDB4MWUsIDB4YTgsIDB4YjMsIDB4MTUsIDB4NzIsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhiMSwgMHhhYSwgMHgxYSwgMHhiYiwgMHhmNywgMHg4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4YWEsIDB4YjYsIDB4MWUsIDB4YmEsIDB4Y2MsIDB4ZDksIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhiOCwgMHg4LCAweDkyLCAweDk1LCAweDk3LCAweDhkLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YTQsIDB4YWQsIDB4ODAsIDB4N2MsIDB4OWYsIDB4MWYsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4ZiwgMHg4OCwgMHg4NiwgMHgxYSwgMHg4MywgMHg0ZCwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDdmLCAweDFlLCAweDg4LCAweDg5LCAweDg3LCAweDg3LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4NzksIDB4OWQsIDB4NzksIDB4MWIsIDB4N2IsIDB4N2UsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg3ZSwgMHgxZiwgMHg1NCwgMHg2NiwgMHgzNywgMHhmYiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDRjLCAweDgsIDB4ODcsIDB4ODIsIDB4N2QsIDB4NmUsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhiMCwgMHg3MywgMHg4MywgMHgxYSwgMHg4MSwgMHg0YSwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDdlLCAweDFlLCAweDg4LCAweDg5LCAweDg4LCAweDg5LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ODcsIDB4ODgsIDB4OGQsIDB4OGQsIDB4ODgsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDlhLCAweDc2LCAweGY5LCAweDU1LCAweDU0LCAweGEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHgzLCAweGY3LCAweGFkLCAweGY3LCAweDg2LCAweDE1LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4N2QsIDB4NSwgMHg3ZSwgMHg4OSwgMHg4YywgMHg4OSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDkxLCAweDkyLCAweDk1LCAweDhmLCAweDhlLCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4NGMsIDB4ZjcsIDB4MWIsIDB4ZmIsIDB4NTMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDkwLCAweDhjLCAweDhhLCAweDhkLCAweDFiLCAweDhmLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4OTMsIDB4ODksIDB4MWYsIDB4NWUsIDB4ZjcsIDB4ODIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg1ZiwgMHg1LCAweDlkLCAweDg4LCAweDhlLCAweDhjLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4OTAsIDB4N2YsIDB4OTMsIDB4ODksIDB4OGMsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhmNywgMHgxYiwgMHhmNywgMHg1MSwgMHhmNywgMHgxNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4OTEsIDB4OTIsIDB4OTMsIDB4OGYsIDB4MWEsIDB4OTAsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4MSwgMHg4OCwgMHgxZSwgMHhmYiwgMHg3NywgMHg2MiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZlLCAweDUsIDB4OWYsIDB4OGYsIDB4OGIsIDB4OGYsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg4MSwgMHg4MiwgMHg3YiwgMHg4YSwgMHg4YSwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGZiLCAweDQ5LCAweGZiLCAweDE2LCAweGY3LCAweDRjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg4YSwgMHg4NCwgMHg5NywgMHg4NywgMHgxYiwgMHg4MSwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDg3LCAweDFmLCAweGI0LCAweGZiLCAweDcxLCAweGZiLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4NSwgMHg4NiwgMHg4YywgMHg3YSwgMHg5MCwgMHg4MiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDk3LCAweDg1LCAweDhkLCAweDg5LCAweDFlLCAweGY3LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWEsIDB4ZmIsIDB4NGYsIDB4ZmIsIDB4MTIsIDB4NSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDgwLCAweDg0LCAweDg3LCAweDFhLCAweDg0LCAweDljLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OGMsIDB4MWUsIDB4ZSwgMHg0NCwgMHg5OSwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDU0LCAweGEsIDB4ZjksIDB4NGYsIDB4MywgMHhhZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDE1LCAweGY3LCAweDZjLCAweGE4LCAweDcwLCAweGZiLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzIsIDB4ZjcsIDB4M2QsIDB4ZjcsIDB4MzIsIDB4ZmIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhmNywgMHg3YywgMHhmNywgMHg2ZiwgMHg2ZSwgMHhmYiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweGY3LCAweDM5LCAweGY3LCAweDMxLCAweGZiLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4YTQsIDB4ZjcsIDB4NmUsIDB4ZmIsIDB4MzIsIDB4ZmIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMiwgMHhmNywgMHgzZCwgMHhhNiwgMHhmYiwgMHg2ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGE4LCAweGY3LCAweDNjLCAweGZiLCAweDMxLCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDNhLCAweGEsIDB4ZGYsIDB4ZjksIDB4NywgMHgzLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzUsIDB4MTUsIDB4ZjcsIDB4NDgsIDB4YmIsIDB4NWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhmNywgMHgxOCwgMHhmNywgMHgxNiwgMHhjNywgMHhmYiwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGY3LCAweDQxLCAweGY3LCAweDE0LCAweGZiLCAweGYsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZiwgMHhmNywgMHg0OSwgMHg2MywgMHhmYiwgMHgxNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGY3LCAweDQyLCAweGI5LCAweGZiLCAweDQxLCAweGJhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZjcsIDB4MTAsIDB4ZmIsIDB4NTAsIDB4NjIsIDB4YjksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhmYiwgMHgxMiwgMHhmYiwgMHgxNCwgMHg1YiwgMHhmNywgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweGZiLCAweDQzLCAweGZiLCAweDE1LCAweGY3LCAweDEyLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDksIDB4ZmIsIDB4NGEsIDB4YmEsIDB4ZjcsIDB4MTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhmYiwgMHg0YSwgMHg1NiwgMHhmNywgMHg0NCwgMHg1YywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgzYiwgMHg5YywgMHg3NiwgMHhhMywgMHg3NiwgMHhmNywgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGEsIDB4ZTYsIDB4NzcsIDB4YTAsIDB4NzcsIDB4ZjcsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhmNywgMHhjYiwgMHg3YywgMHhhLCAweDEzLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZjcsIDB4NywgMHhmNywgMHhiLCAweDE1LCAweDk5LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NzYsIDB4OTQsIDB4N2QsIDB4ZjcsIDB4NDksIDB4ZjcsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg4YywgMHg4YSwgMHhmYiwgMHhlLCAweGZiLCAweDhiLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4YTYsIDB4ODEsIDB4OTksIDB4ODAsIDB4MTksIDB4ZTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg1LCAweDhkLCAweDYsIDB4MTMsIDB4YWUsIDB4ZDgsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhNywgMHg5YywgMHg4ZiwgMHhhNywgMHg4YiwgMHg5YywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDc5LCAweGY3LCAweGE3LCAweDUsIDB4OGMsIDB4NiwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDk5LCAweDk5LCAweDk2LCAweGE1LCAweDk1LCAweDljLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZmIsIDB4ZSwgMHhmNywgMHg4YiwgMHg4ZCwgMHg4YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGZiLCAweDYzLCAweDk0LCAweDk5LCAweGEwLCAweGEwLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4MTksIDB4ZmIsIDB4NjMsIDB4ZjcsIDB4NDksIDB4OGMsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YiwgMHhmYiwgMHhlLCAweDhlLCAweDljLCAweDk1LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OTksIDB4MTksIDB4ZmIsIDB4OTksIDB4ZTMsIDB4NzUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE3LCAweDc5LCAweDg3LCAweDljLCAweDhiLCAweGE3LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4MTksIDB4ZmIsIDB4YTcsIDB4NzksIDB4NSwgMHg4YywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTksIDB4ZTQsIDB4ODAsIDB4OTksIDB4ODEsIDB4YTUsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHgxOSwgMHhmYiwgMHg4YiwgMHhmYiwgMHhlLCAweDhhLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjMsIDB4ZjcsIDB4NDksIDB4N2QsIDB4OTQsIDB4NzYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg5OSwgMHgxOSwgMHhmYiwgMHg0OSwgMHhmYiwgMHg2MywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGY3LCAweGUsIDB4ZjcsIDB4OGIsIDB4N2EsIDB4OGUsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg3ZCwgMHg5NiwgMHgxOSwgMHgzMywgMHhmYiwgMHg5OSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NiwgMHg5ZCwgMHhmNywgMHhhNywgMHg3YSwgMHg4NywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDdhLCAweDhmLCAweDE5LCAweDlkLCAweGZiLCAweGE3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg2LCAweDMyLCAweGY3LCAweDk5LCAweDUsIDB4N2QsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg4MSwgMHg3OSwgMHgxYiwgMHhmNywgMHhlLCAweGZiLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OGEsIDB4ZmIsIDB4NDksIDB4ZjcsIDB4NjMsIDB4ODIsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg3NiwgMHg3ZCwgMHg4MiwgMHgxOSwgMHhmNywgMHg2MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDhhLCAweDhhLCAweDUsIDB4MTMsIDB4NzUsIDB4ZTgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmNywgMHhlLCAweDg4LCAweDdhLCAweDgxLCAweDcwLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4MTksIDB4ZjcsIDB4OTksIDB4MzMsIDB4ODAsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDlkLCAweDhmLCAweDdhLCAweDhiLCAweDZmLCAweDg3LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZjcsIDB4YTcsIDB4OWQsIDB4NSwgMHg4YSwgMHg3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4MzIsIDB4OTYsIDB4N2QsIDB4OTUsIDB4NzEsIDB4OGUsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhmNywgMHg4YiwgMHhmNywgMHhlLCAweDhjLCAweDg5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhiMywgMHgxNSwgMHhhOSwgMHhhNCwgMHhhNCwgMHhhOSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDcyLCAweDZkLCAweDZkLCAweDcyLCAweDcyLCAweDZkLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YTQsIDB4YTksIDB4MWUsIDB4ZSwgMHhmYiwgMHgxOCwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweGM4LCAweGEwLCAweDg5LCAweGEwLCAweGY3LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4ZjcsIDB4ZTEsIDB4YTAsIDB4ODksIDB4YTAsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhhNCwgMHhmNywgMHg5OSwgMHgxNSwgMHg0NywgMHhmNywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YWEsIDB4OTksIDB4MWUsIDB4YTMsIDB4OTYsIDB4YTQsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg5OSwgMHhhNCwgMHg5OSwgMHhhNSwgMHg5OSwgMHhhMCwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4OGQsIDB4OGYsIDB4OGUsIDB4OGMsIDB4OGQsIDB4MWIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg4OSwgMHg4NywgMHg4OSwgMHg4YSwgMHg4OCwgMHg4OSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDdmLCAweDc0LCAweDdjLCAweDcxLCAweDdjLCAweDcwLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg1ZSwgMHg2ZCwgMHg1YSwgMHg1NywgMHgxYSwgMHg2ZSwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGFkLCAweGFlLCAweGE2LCAweGJlLCAweGE3LCAweDkyLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4YWMsIDB4OGQsIDB4YjksIDB4YjksIDB4YTgsIDB4OGMsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHgxYSwgMHg5MywgMHg4ZSwgMHg5MCwgMHg4ZiwgMHg4ZSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDg2LCAweDhlLCAweDFlLCAweDk5LCAweDc1LCAweDlhLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NzAsIDB4YTIsIDB4NjUsIDB4YTMsIDB4NjQsIDB4YTEsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg3MiwgMHhjMSwgMHg2ZCwgMHhhNiwgMHhhNiwgMHhhNiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGMxLCAweDcyLCAweGE0LCAweDczLCAweGEzLCAweDY0LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4YTIsIDB4NzIsIDB4OWEsIDB4NzIsIDB4OWEsIDB4NzYsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDg2LCAweDhlLCAweDg4LCAweDhmLCAweDhlLCAweDFhLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OGUsIDB4OTMsIDB4MWUsIDB4OGMsIDB4YTUsIDB4YTksIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHgxYiwgMHhiOCwgMHg4YywgMHhiNywgMHg4ZCwgMHhhYSwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4YTksIDB4OTMsIDB4YmMsIDB4YTQsIDB4YWYsIDB4MWEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg5OSwgMHg4MywgMHg5NSwgMHg3ZiwgMHg5MiwgMHgxZSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDU3LCAweDdlLCAweDY3LCAweDdiLCAweDczLCAweDgwLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NzEsIDB4N2MsIDB4NzIsIDB4N2QsIDB4NzIsIDB4N2QsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4LCAweDg5LCAweDg3LCAweDg4LCAweDhhLCAweDg5LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ODksIDB4OGQsIDB4OGYsIDB4OGQsIDB4OGMsIDB4OGUsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHgxZiwgMHg5NywgMHhhMiwgMHg5YSwgMHhhNSwgMHg5YSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGE1LCAweDk5LCAweGE2LCAweDk1LCAweGEzLCAweDgsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhhNCwgMHhmNywgMHgxLCAweDRiLCAweDFiLCAweDY2LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NmQsIDB4ODIsIDB4MWYsIDB4ODIsIDB4NmEsIDB4ODksIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg2ZSwgMHg4YSwgMHg2ZiwgMHg3MiwgMHgxYSwgMHg4MywgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDg3LCAweDg4LCAweDg3LCAweDhlLCAweDkwLCAweDg4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4YTEsIDB4N2MsIDB4YTUsIDB4N2IsIDB4YTYsIDB4NzQsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhiMiwgMHg3NSwgMHhhMSwgMHg3MiwgMHhhNCwgMHg1NSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDcwLCAweDcwLCAweDcwLCAweGE5LCAweDU1LCAweGE0LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NzMsIDB4YjIsIDB4NzIsIDB4YjMsIDB4NzQsIDB4YTQsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg3YywgMHhhMCwgMHg3ZiwgMHg4LCAweDkwLCAweDg4LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ODgsIDB4MWEsIDB4ODcsIDB4ODYsIDB4ODgsIDB4ODMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg3MSwgMHg2ZCwgMHg4YiwgMHg2YywgMHgxYiwgMHg1ZSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDg5LCAweDZjLCAweDgzLCAweDgsIDB4MTMsIDB4ZDgsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg1YiwgMHg3MSwgMHg2OCwgMHgxYSwgMHhlLCAweGZiLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NzYsIDB4ZjcsIDB4NjQsIDB4ZjcsIDB4OCwgMHg2MywgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGY3LCAweGEsIDB4ZjcsIDB4NjMsIDB4NzcsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhmNywgMHhhLCAweDlkLCAweGY3LCAweGMsIDB4MTMsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhmNywgMHg5YSwgMHgxNSwgMHg2YiwgMHhiZSwgMHg4MywgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGJlLCAweGRhLCAweGMyLCAweGQ3LCAweGI2LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWEsIDB4N2QsIDB4NzksIDB4MWYsIDB4NmUsIDB4M2YsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHgxYSwgMHg3MywgMHg5MiwgMHg1OSwgMHhhYywgMHhhZCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGE3LCAweDkzLCAweDFlLCAweDkxLCAweDlmLCAweDhkLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4YTIsIDB4ODgsIDB4YTAsIDB4YTIsIDB4MWEsIDB4YTIsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhhYSwgMHg5NywgMHg5MywgMHg4NiwgMHg4MSwgMHg5MiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDYxLCAweDk1LCAweDYxLCAweGIzLCAweDYzLCAweDgsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhhYywgMHg3OSwgMHhhNywgMHgxYiwgMHhhMSwgMHg5OSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGE3LCAweDc3LCAweGFkLCAweDc4LCAweDllLCAweDFmLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4NjIsIDB4OTYsIDB4NWYsIDB4YTcsIDB4OCwgMHg4MSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDk0LCAweDk4LCAweDFhLCAweGE0LCAweGExLCAweDkxLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YTIsIDB4YTIsIDB4ODksIDB4YTIsIDB4MWIsIDB4YTIsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg5MSwgMHhhMSwgMHgxZiwgMHhhNywgMHg5MywgMHhiZCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDFhLCAweGFjLCAweDU5LCAweDk0LCAweDcyLCAweDFlLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4M2MsIDB4NmMsIDB4MWIsIDB4N2EsIDB4N2QsIDB4OWEsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhOSwgMHhkOSwgMHhkNiwgMHhkNiwgMHgxYSwgMHhhMywgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDZiLCAweDY5LCAweDZkLCAweDU5LCAweDZmLCAweDg0LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4NzEsIDB4OGEsIDB4NzEsIDB4NzAsIDB4NzQsIDB4OGQsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHgxYSwgMHg3OSwgMHg4MSwgMHg3OSwgMHg3NywgMHg3ZSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDk1LCAweDg0LCAweDFlLCAweDg1LCAweDk1LCAweDg1LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4OTYsIDB4N2EsIDB4YWMsIDB4NzksIDB4YWMsIDB4NzEsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDllLCAweDc4LCAweDZiLCAweDllLCAweDZmLCAweDFiLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4N2QsIDB4NzQsIDB4NmYsIDB4OWUsIDB4NmIsIDB4OWUsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiMCwgMHg2NiwgMHhiOCwgMHg3YiwgMHhiNiwgMHg3MSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4ODUsIDB4OTQsIDB4ODEsIDB4N2UsIDB4MWEsIDB4NzYsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3OSwgMHgxZSwgMHg3MiwgMHg3MywgMHg4ZCwgMHg3MiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDc0LCAweDhhLCAweDg1LCAweDc2LCAweDFmLCAweDZmLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4NmUsIDB4NjksIDB4MWEsIDB4ZjcsIDB4YTUsIDB4ZGEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhhNCwgMHhhNCwgMHhhYSwgMHhhYSwgMHhhNCwgMHg3MiwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDcyLCAweDcyLCAweDZjLCAweDZjLCAweDcyLCAweGE0LCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHhmYiwgMHgzMSwgMHgzZiwgMHhhLCAweDEyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ZjcsIDB4MmYsIDB4MmYsIDB4YTMsIDB4MTMsIDB4ZDAsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0OSwgMHgxNSwgMHhjMiwgMHg1MiwgMHhkNiwgMHg5NiwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDgsIDB4MTMsIDB4ZTAsIDB4YWUsIDB4YmIsIDB4YjAsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhhOSwgMHg4LCAweDU2LCAweDdiLCAweDVkLCAweDdiLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NzMsIDB4NGQsIDB4ODQsIDB4NzYsIDB4NzMsIDB4MWEsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg2YiwgMHhiNiwgMHg3ZiwgMHgxZSwgMHgxMywgMHhkMCwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGFjLCAweGFjLCAweGJlLCAweDFhLCAweDY3LCAweGY1LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NzksIDB4YmMsIDB4OGMsIDB4YmYsIDB4MTksIDB4YmUsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg1NywgMHhhZCwgMHg1ZCwgMHhhNywgMHg0YSwgMHhlYywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGMyLCAweDgsIDB4ZDMsIDB4NmQsIDB4YjEsIDB4NDgsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgyMCwgMHg5YSwgMHg2MCwgMHg5OCwgMHg2NCwgMHg5ZiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGM5LCAweDkyLCAweGM3LCAweDk0LCAweDgsIDB4ZDUsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhiMCwgMHhlMSwgMHgxYSwgMHg0YSwgMHhiNCwgMHg0YiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDUzLCAweDNiLCAweDJiLCAweDZmLCAweDcyLCAweDdlLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4Y2IsIDB4OTgsIDB4YTgsIDB4YTMsIDB4YzQsIDB4OCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGEyLCAweGM0LCAweGEyLCAweDFhLCAweGI1LCAweDYzLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4OTcsIDB4MWUsIDB4NWYsIDB4N2YsIDB4NjYsIDB4NmMsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2YywgMHg5ZCwgMHg2NywgMHg5NiwgMHg3MCwgMHgxZSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGExLCAweDUzLCAweDUwLCAweDFhLCAweDVlLCAweGEwLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4NmYsIDB4YjMsIDB4NjEsIDB4YzcsIDB4NTAsIDB4YWYsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg4LCAweGZiLCAweGMsIDB4ZDAsIDB4ODQsIDB4Y2MsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiZSwgMHg4NCwgMHhiZiwgMHg4MSwgMHhiYSwgMHg3MCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDVlLCAweDdmLCAweDJhLCAweDdkLCAweDgsIDB4NDUsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg3OSwgMHgzMSwgMHgxYSwgMHhlLCAweGZiLCAweDFlLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ODcsIDB4YjQsIDB4ZWYsIDB4YTcsIDB4N2MsIDB4Y2MsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhhMCwgMHg5NiwgMHg4OSwgMHg5NiwgMHg5MSwgMHg3NywgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDU3LCAweGNkLCAweDdjLCAweGE2LCAweGE1LCAweDc3LCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ODcsIDB4YzMsIDB4MTIsIDB4OTAsIDB4Y2MsIDB4YjAsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhhNCwgMHhlNiwgMHhkMSwgMHg2NiwgMHhiNSwgMHg2NSwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGNmLCAweGU4LCAweGEyLCAweGIxLCAweGFjLCAweGIxLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YTQsIDB4OWIsIDB4YTcsIDB4ZjcsIDB4OCwgMHg1YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4ODYsIDB4OTksIDB4ZmIsIDB4MTIsIDB4NTgsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDliLCAweDhmLCAweDU5LCAweGEsIDB4YWQsIDB4ODEsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHhhYiwgMHg3ZiwgMHhhLCAweDEzLCAweDhjLCAweDM3LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4YSwgMHg3MSwgMHhhLCAweDE5LCAweDRlLCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg5YiwgMHhjNywgMHg1NywgMHhhLCAweDY5LCAweDk1LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4YSwgMHhmNywgMHhhOSwgMHhmNywgMHhiZiwgMHgxNSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDhkLCAweDk3LCAweDk3LCAweDFhLCAweDllLCAweDg2LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg5NywgMHgxYSwgMHgxMywgMHg4YywgMHgzNywgMHhjNywgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDlhLCAweGExLCAweGIwLCAweGI1LCAweDZjLCAweDY0LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4OTAsIDB4NzUsIDB4ODAsIDB4MWUsIDB4NzUsIDB4ODAsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg4MywgMHg3NCwgMHg4LCAweGNmLCAweDMwLCAweDE1LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhiOCwgMHg5NCwgMHg5ZCwgMHhhNiwgMHg5OCwgMHhhMSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4OTUsIDB4OTMsIDB4OTksIDB4OWIsIDB4MWIsIDB4YWUsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YywgMHg3MiwgMHg3YSwgMHg2MCwgMHg2ZCwgMHg3OSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDk0LCAweDdiLCAweDFmLCAweDEzLCAweGExLCAweDliLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4NzksIDB4NzYsIDB4OTAsIDB4NzcsIDB4MWIsIDB4ODYsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4YSwgMHg4NiwgMHgxZiwgMHg5NiwgMHhlNSwgMHgxNSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDc2LCAweDVmLCAweDYyLCAweDdlLCAweDgsIDB4MTMsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhhNywgMHg4YSwgMHg4OCwgMHg4NywgMHg4YSwgMHg4NywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweGEsIDB4NDcsIDB4YSwgMHgxMywgMHg1MiwgMHg1YiwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGEsIDB4ZmIsIDB4NzgsIDB4ZjcsIDB4MjMsIDB4MTUsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg2ZSwgMHg5OSwgMHg2ZCwgMHgxYiwgMHg3ZSwgMHg3ZiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDgxLCAweDFmLCAweDdlLCAweDhlLCAweDgyLCAweDk0LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YjYsIDB4YjMsIDB4YWMsIDB4YjQsIDB4OWUsIDB4YTQsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHgxZSwgMHg3ZCwgMHg4MywgMHg3ZSwgMHg3YywgMHgxYSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDcwLCAweDliLCAweDc4LCAweDFlLCAweGY3LCAweDFkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4MTUsIDB4OTEsIDB4OGYsIDB4NSwgMHg3NCwgMHg5ZiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGE5LCAweDFiLCAweGE5LCAweGE2LCAweDhlLCAweDYzLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NmEsIDB4NjIsIDB4NzgsIDB4NzIsIDB4OTUsIDB4YTIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg5MywgMHg5OCwgMHg5YSwgMHgxYSwgMHhhNCwgMHg4MiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDllLCAweDFlLCAweGZiLCAweDcxLCAweGY3LCAweDI2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4OWEsIDB4OWIsIDB4OGQsIDB4OWEsIDB4MWIsIDB4MTMsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhhNywgMHhhMiwgMHhjOCwgMHg3ZCwgMHg2ZSwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDliLCAweDk3LCAweDc3LCAweGEsIDB4MWUsIDB4NDgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweGFmLCAweGEwLCAweGI3LCAweGI0LCAweDk4LCAweDgsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4ZiwgMHg4YywgMHg4ZiwgMHgxYiwgMHg1ZCwgMHhhLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4MTUsIDB4NjYsIDB4ODQsIDB4NzksIDB4NzgsIDB4N2UsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDc1LCAweDdjLCAweDg0LCAweDc2LCAweDc3LCAweDFiLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4YjYsIDB4YWEsIDB4YTQsIDB4OWMsIDB4YjUsIDB4YTksIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg3ZSwgMHg3ZSwgMHg5YywgMHgxZiwgMHg4MCwgMHg5OSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweGFhLCAweDFiLCAweDkxLCAweDkwLCAweDhiLCAweDhjLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZDAsIDB4MmYsIDB4MTUsIDB4OTEsIDB4ODgsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDliLCAweDhmLCAweDg3LCAweDdmLCAweDg5LCAweDdlLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NzUsIDB4OTIsIDB4N2MsIDB4OTIsIDB4N2UsIDB4MWUsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg5NCwgMHg4MCwgMHg4MCwgMHgxYSwgMHg3MSwgMHg2OSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDY2LCAweDYxLCAweGFhLCAweGIyLCAweGFlLCAweGFjLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4OTcsIDB4MWUsIDB4YTAsIDB4OTYsIDB4OWYsIDB4YTIsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg4LCAweGUsIDB4N2UsIDB4YWEsIDB4NzYsIDB4ZjcsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhiYywgMHg5NiwgMHg4OSwgMHg5NiwgMHhiYywgMHhiZiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGY3LCAweDRmLCAweDc3LCAweDEyLCAweGY4LCAweDFhLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4YjUsIDB4ODMsIDB4ZjcsIDB4MzEsIDB4ZmIsIDB4MTIsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlZiwgMHgyMCwgMHhmNywgMHg0NywgMHg1YiwgMHhhLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4OGIsIDB4ODMsIDB4ODMsIDB4MWEsIDB4NjUsIDB4OWEsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhiNywgMHhjMSwgMHhiZSwgMHhhYywgMHhhNCwgMHgxZSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4OGYsIDB4OWMsIDB4OGQsIDB4OWUsIDB4NjMsIDB4YSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGI3LCAweDFiLCAweGI2LCAweDk1LCAweGFhLCAweGIwLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4YWYsIDB4N2YsIDB4YWEsIDB4N2YsIDB4YSwgMHg1YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4OTksIDB4NzcsIDB4MzksIDB4YSwgMHg1LCAweDEzLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4NzEsIDB4YSwgMHg4LCAweGIzLCAweDhmLCAweDdmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NjIsIDB4YSwgMHgxMywgMHhkZSwgMHhhMCwgMHg1MiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4N2EsIDB4ODksIDB4NzgsIDB4NjQsIDB4YSwgMHg1NCwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDFiLCAweDYwLCAweDgxLCAweDZjLCAweDY2LCAweDY5LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4OTcsIDB4NmMsIDB4NGEsIDB4YSwgMHg5ZiwgMHg3ZCwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDgsIDB4NjUsIDB4N2EsIDB4M2IsIDB4NDUsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZlLCAweGY3LCAweGJiLCAweDE1LCAweDdhLCAweDY1LCAweDc4LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4N2MsIDB4OCwgMHg4YSwgMHg4NywgMHg4OCwgMHg4YSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDEzLCAweGVmLCAweDIwLCAweDU1LCAweGEsIDB4MTMsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg0NywgMHhhLCAweDEzLCAweGRlLCAweGEwLCAweDYxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjNiwgMHhmNywgMHgyLCAweDE1LCAweDhkLCAweDlhLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4OWEsIDB4MWIsIDB4MTMsIDB4ZWYsIDB4MjAsIDB4YTIsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg2ZSwgMHg3NywgMHhhLCAweDFmLCAweDQ4LCAweGEsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHg5ZSwgMHhiMywgMHhiNSwgMHg5YSwgMHg4LCAweDhjLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4OGMsIDB4OGYsIDB4MWIsIDB4MTMsIDB4ZWUsIDB4YTAsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4NzMsIDB4OTUsIDB4YjMsIDB4OTcsIDB4YTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGFhLCAweDdhLCAweDljLCAweGMxLCAweGRiLCAweDc1LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4OWMsIDB4N2EsIDB4YWEsIDB4YjEsIDB4NzcsIDB4ZjQsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhiMywgMHgxMiwgMHhjYSwgMHhiNSwgMHhjNywgMHhhNywgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGJmLCAweGIwLCAweDhmLCAweDljLCAweDg2LCAweDlkLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4N2QsIDB4OWQsIDB4ODYsIDB4OWMsIDB4OGYsIDB4YjAsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0YiwgMHgyZCwgMHhhMiwgMHhiNiwgMHhhNywgMHhjNywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRhLCAweGZmLCAweDE0LCAweDgwLCAweGY3LCAweDQyLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2MywgMHg4NiwgMHg5OSwgMHhmYiwgMHgxMywgMHg1OCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4YSwgMHhhZSwgMHg4MSwgMHhhZCwgMHg3ZiwgMHhhYiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NDMsIDB4YSwgMHg1LCAweDEzLCAweGQ2LCAweGZmLCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NzEsIDB4YSwgMHg4LCAweDRlLCAweGEsIDB4NTcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDk1LCAweDY5LCAweDNjLCAweGEsIDB4ZjcsIDB4YTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHgxNSwgMHg4ZiwgMHg5NiwgMHg4ZCwgMHg5NiwgMHg5NywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDg3LCAweDdiLCAweGEsIDB4OTYsIDB4MWEsIDB4YWIsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhhNywgMHhiMSwgMHg5ZSwgMHg1ZSwgMHg2YSwgMHg3MSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDczLCAweDg2LCAweDFlLCAweDZiLCAweDg0LCAweDZmLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NmQsIDB4OCwgMHhkMywgMHgyZiwgMHgxNSwgMHg4YSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDkwLCAweGE1LCAweGExLCAweDlhLCAweGE5LCAweDE5LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4OTAsIDB4OTUsIDB4OWIsIDB4OGUsIDB4OCwgMHg4YywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDhiLCAweDhlLCAweDFiLCAweGFiLCAweGI4LCAweDZjLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NjYsIDB4NWYsIDB4NmQsIDB4N2YsIDB4ODIsIDB4OTgsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgxZiwgMHg5NywgMHg3ZCwgMHg3OCwgMHg5NiwgMHg2YSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDg1LCAweDhhLCAweDhhLCAweDg1LCAweDFmLCAweGZiLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4MTUsIDB4MTMsIDB4ZTksIDB4ZmYsIDB4MmIsIDB4ODAsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2YywgMHg5OCwgMHg2YywgMHg4NSwgMHg4NiwgMHg4YiwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDZiLCAweDgzLCAweGE3LCAweGE2LCAweGIwLCAweDliLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4YTIsIDB4YjksIDB4N2YsIDB4NmUsIDB4MWYsIDB4N2MsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3YiwgMHgxYSwgMHg3MywgMHg5NCwgMHg3MSwgMHg5YiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDEzLCAweGZiLCAweDkwLCAweDE1LCAweGFhLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YzEsIDB4Y2YsIDB4YWEsIDB4OGEsIDB4OGQsIDB4MTgsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg1ZCwgMHhiNiwgMHg1YiwgMHhiZCwgMHg4LCAweDhjLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OGMsIDB4OWQsIDB4MWIsIDB4YmUsIDB4YjcsIDB4ODIsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHgxZiwgMHg4YywgMHg4ZCwgMHg1LCAweDgwLCAweGE0LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YTcsIDB4MWEsIDB4YjIsIDB4OTUsIDB4YjAsIDB4OTYsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhZCwgMHg1OCwgMHhhYSwgMHg1YSwgMHg0YiwgMHgxYSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDg0LCAweDhhLCAweDg0LCAweDFlLCAweDhkLCAweDYsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhjOCwgMHg5ZSwgMHhjZSwgMHg5YiwgMHg2YywgMHg0YywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDQ3LCAweDZjLCAweDhjLCAweDg5LCAweDE4LCAweGQzLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NjAsIDB4YmIsIDB4NTksIDB4OCwgMHg4YSwgMHg3OSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDc5LCAweDFiLCAweDU4LCAweDVmLCAweDk0LCAweGE5LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGEsIDB4ODksIDB4NSwgMHg5NiwgMHg3MiwgMHg4ZiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDFhLCAweDEzLCAweGVhLCAweGZlLCAweDliLCAweDgwLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NjYsIDB4ODAsIDB4NjUsIDB4MWUsIDB4NjksIDB4YmUsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhjYiwgMHgxYSwgMHg5MiwgMHg4YiwgMHg5MiwgMHg4YywgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDg5LCAweDYsIDB4NWYsIDB4NTEsIDB4NGUsIDB4NzgsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg4LCAweGY3LCAweGEzLCAweGNmLCAweDE1LCAweDkwLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg3MywgMHg5ZSwgMHhhYSwgMHg3ZSwgMHhhYSwgMHg5MSwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDkxLCAweDFiLCAweGFiLCAweDkzLCAweDZmLCAweDcwLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NmMsIDB4NjIsIDB4NzQsIDB4NWQsIDB4OTcsIDB4YTgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg5MywgMHg5YSwgMHg5YiwgMHgxYSwgMHhhMywgMHg4MiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDllLCAweDFlLCAweGZiLCAweDRmLCAweGQwLCAweDE1LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4NzEsIDB4NzUsIDB4N2MsIDB4NmQsIDB4ODQsIDB4N2QsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3YiwgMHg4OCwgMHg4LCAweDZhLCAweDgwLCAweDU3LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MWEsIDB4YTgsIDB4YjAsIDB4YjcsIDB4YTksIDB4OTQsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg4MiwgMHg5NCwgMHgxZSwgMHg3ZCwgMHg5YSwgMHhhMCwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDFiLCAweDkxLCAweDkxLCAweDhjLCAweDhjLCAweDkxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4MmYsIDB4MTUsIDB4MTMsIDB4ZGEsIDB4ZmUsIDB4YWIsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg4OCwgMHg1LCAweDg3LCAweDgwLCAweDg5LCAweDgwLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NzUsIDB4OTIsIDB4N2IsIDB4OTIsIDB4N2QsIDB4MWUsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg5MywgMHg4MCwgMHg4MiwgMHgxYSwgMHg2YiwgMHg1OSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDY1LCAweDc4LCAweGI4LCAweGFjLCAweGE1LCAweDk1LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4OTAsIDB4MWUsIDB4YWIsIDB4OTIsIDB4YTcsIDB4YTgsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg4LCAweDEzLCAweGRhLCAweGZlLCAweDRiLCAweDgwLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHgxNSwgMHg3NSwgMHg5ZCwgMHg3OSwgMHhhMSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDlkLCAweGExLCAweGExLCAweDc5LCAweDlkLCAweDc1LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NzksIDB4NzUsIDB4MWUsIDB4ZSwgMHhmYiwgMHhlZCwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY4LCAweDM2LCAweGVhLCAweGY3LCAweDQ3LCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YywgMHhlYiwgMHgzLCAweGY3LCAweDVjLCAweDE2LCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzYsIDB4ZjcsIDB4MzgsIDB4ZWEsIDB4ZmIsIDB4MzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHgyYiwgMHhmYiwgMHg0NywgMHhmYiwgMHgzOSwgMHgyYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDYsIDB4ZSwgMHg1OSwgMHg4MywgMHg1NiwgMHhhLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YjQsIDB4NWUsIDB4YSwgMHgxMiwgMHhiOSwgMHg1NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4NWUsIDB4YSwgMHgxMywgMHhiMiwgMHg5YSwgMHg5NiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGI5LCAweGY4LCAweDE5LCAweDE1LCAweDU3LCAweGIyLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4YTMsIDB4YTMsIDB4OTIsIDB4OTAsIDB4YTIsIDB4MWUsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhhNywgMHg4ZiwgMHhhNiwgMHgxYiwgMHg5MiwgMHhhMSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDFmLCAweDEzLCAweDc0LCAweDlhLCAweDk1LCAweGEsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg3YSwgMHg4MiwgMHg4NSwgMHg4OSwgMHgxZSwgMHg3NCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDgzLCAweDcyLCAweDg0LCAweDgsIDB4NTYsIDB4N2QsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg0MywgMHgxYSwgMHg2MSwgMHhhZiwgMHg2OSwgMHhiNSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGJlLCAweGIwLCAweGE0LCAweDFlLCAweDk4LCAweDlmLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWIsIDB4OWQsIDB4OCwgMHg5MiwgMHg5MSwgMHg5OSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDFiLCAweDEzLCAweGI0LCAweDlhLCAweDk2LCAweDU2LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OGYsIDB4ODgsIDB4ODYsIDB4ODUsIDB4ODcsIDB4ODEsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxZiwgMHg4MiwgMHg3MywgMHg4MCwgMHg3NCwgMHg3ZSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NzgsIDB4NmEsIDB4NzEsIDB4NmEsIDB4NjMsIDB4MWEsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg2YSwgMHhiNSwgMHhiZiwgMHhhNiwgMHhiMiwgMHhiYiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGEzLCAweDg2LCAweGEyLCAweDFlLCAweDg2LCAweGE2LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YTYsIDB4MWEsIDB4MTMsIDB4YjIsIDB4OWEsIDB4OTYsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg5MiwgMHg4YiwgMHhhMSwgMHg5NSwgMHgxZSwgMHgxMywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDk2LCAweDU2LCAweGEwLCAweDkyLCAweDk0LCAweDdhLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4MWYsIDB4OTUsIDB4NzQsIDB4OTMsIDB4NzMsIDB4OTIsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDY1LCAweGEsIDB4NTYsIDB4OTksIDB4OTYsIDB4M2YsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3MCwgMHhhLCAweGI1LCAweGFkLCAweGFmLCAweGI1LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4YTUsIDB4NjYsIDB4YTQsIDB4MWYsIDB4NzcsIDB4OTgsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg3OSwgMHg5YiwgMHg4LCAweDEzLCAweGIyLCAweDlhLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4OTAsIDB4ODYsIDB4OTAsIDB4NzksIDB4OWIsIDB4OTMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiMiwgMHg5OSwgMHg5NiwgMHg1NiwgMHhhMCwgMHg4ZiwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDhmLCAweDkxLCAweDk1LCAweDg3LCAweDg5LCAweDkxLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4ODIsIDB4YTIsIDB4ODAsIDB4YTEsIDB4N2UsIDB4OCwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGFjLCAweDcxLCAweGIzLCAweDFiLCAweGI1LCAweGFjLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4YmYsIDB4NjQsIDB4YTYsIDB4NWIsIDB4MWYsIDB4NzAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDczLCAweDg0LCAweDg2LCAweDc0LCAweDFmLCAweDg2LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4ODcsIDB4NzAsIDB4MWIsIDB4MTMsIDB4YjIsIDB4OWEsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhhMCwgMHg4NCwgMHg3NSwgMHg4YiwgMHg5NSwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDlhLCAweDk2LCAweDYwLCAweGEwLCAweDkyLCAweDljLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OGQsIDB4MWUsIDB4YTIsIDB4OTUsIDB4YTMsIDB4OTMsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg4LCAweGMwLCAweDk5LCAweGQ3LCAweDk2LCAweGQzLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4YSwgMHhiNSwgMHg2NywgMHhhZCwgMHg2MSwgMHg1NywgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDY2LCAweDcyLCAweDFlLCAweDdlLCAweDc3LCAweDdjLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NzksIDB4OCwgMHgxMywgMHhiMiwgMHg5YSwgMHg1NiwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDg0LCAweDg1LCAweDdkLCAweDdiLCAweDgxLCAweDFiLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4OGUsIDB4OTAsIDB4OTEsIDB4OGYsIDB4OTUsIDB4OGQsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg5NCwgMHhhMywgMHg5NiwgMHhhMiwgMHg5OCwgMHhhMSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YWMsIDB4YTUsIDB4YWMsIDB4YjMsIDB4MWEsIDB4YjUsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg2MSwgMHg1NywgMHg3MCwgMHg2NCwgMHg1YiwgMHgxZSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NzMsIDB4OTIsIDB4NzMsIDB4OTAsIDB4NzQsIDB4MWUsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg4ZiwgMHg2ZiwgMHg3MCwgMHgxYSwgMHg4NCwgMHg4YiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDFlLCAweDEzLCAweGIzLCAweDIsIDB4OGUsIDB4OTYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg4MiwgMHg5YywgMHg5MSwgMHg4OSwgMHgxZiwgMHg4MSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweGEzLCAweDg0LCAweGE0LCAweDgsIDB4YzAsIDB4N2QsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHg0MywgMHgxYiwgMHg2MSwgMHg2OSwgMHg2NywgMHg2MSwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDcxLCAweGIwLCAweDcyLCAweDFmLCAweDlmLCAweDdlLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4OWQsIDB4N2IsIDB4OCwgMHg5MSwgMHg4NSwgMHg5YywgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDFhLCAweDg2LCAweDg3LCAweDg4LCAweDg3LCAweDg1LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OGQsIDB4ODUsIDB4MWUsIDB4NzMsIDB4OTQsIDB4NzQsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg5OCwgMHg4LCAweDllLCAweDZhLCAweDZhLCAweGE1LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NjEsIDB4NmEsIDB4NmEsIDB4NjEsIDB4MWYsIDB4ZjgsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgxNSwgMHhhMywgMHhhMCwgMHhhMiwgMHhhMCwgMHg5ZSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4MTMsIDB4YjIsIDB4OTksIDB4OTYsIDB4NTYsIDB4YTAsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhhNCwgMHhiMiwgMHhhZiwgMHgxYiwgMHgxMywgMHhiMiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDU2LCAweDkwLCAweDllLCAweDljLCAweDdhLCAweDc4LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4N2EsIDB4NmUsIDB4ODEsIDB4MWYsIDB4NmMsIDB4ODEsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg2ZiwgMHg3YywgMHg4LCAweDRmLCAweGIwLCAweDE1LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4OGMsIDB4YWIsIDB4ODcsIDB4YWEsIDB4OCwgMHg4OSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDljLCAweDliLCAweDFhLCAweDEzLCAweGIyLCAweDlhLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4YTAsIDB4YTUsIDB4OTQsIDB4YWYsIDB4YWIsIDB4MWUsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGE0LCAweDk3LCAweDdiLCAweDczLCAweDZkLCAweDdlLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4NzEsIDB4MWYsIDB4N2QsIDB4NmUsIDB4N2YsIDB4NmQsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg4LCAweGM1LCAweDJkLCAweDE1LCAweDhkLCAweDk2LCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4YWIsIDB4OGEsIDB4YWEsIDB4OGYsIDB4MTksIDB4OGQsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg4ZSwgMHg5YiwgMHgxYiwgMHgxMywgMHhiNCwgMHg5YSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDg4LCAweGE1LCAweGFmLCAweDgyLCAweDZiLCAweDcyLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NzMsIDB4NmQsIDB4NzYsIDB4OTgsIDB4OTgsIDB4NzEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg5OSwgMHg2ZCwgMHg5NywgMHg2YywgMHg5NCwgMHg4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZDksIDB4MTUsIDB4NzYsIDB4YTMsIDB4NzYsIDB4YTIsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg4LCAweDcyLCAweDllLCAweDY0LCAweGE0LCAweGFmLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjIsIDB4OWEsIDB4NTYsIDB4NTYsIDB4YTAsIDB4OWUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg5ZSwgMHhiMSwgMHg5YywgMHg1MSwgMHg2ZSwgMHg5NSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDZjLCAweDk5LCAweDZlLCAweDlhLCAweDZmLCAweDgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHgyLCAweDk2LCAweDU2LCAweGEwLCAweDg5LCAweDJhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4YTAsIDB4NSwgMHg2NSwgMHhhLCAweDdmLCAweDlkLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NSwgMHgxMywgMHhiMiwgMHg5YSwgMHg5NiwgMHg2MCwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweGEwLCAweGEwLCAweDg4LCAweDlkLCAweDk3LCAweDk4LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgxMywgMHhhOCwgMHgyYSwgMHg5NiwgMHg1NiwgMHhhMCwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDUsIDB4NjUsIDB4YSwgMHg4OCwgMHg3NiwgMHg5NywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDdlLCAweDUsIDB4MTMsIDB4YjIsIDB4OWEsIDB4OTUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDg2LCAweDc2LCAweDc2LCAweDhlLCAweDc5LCAweDdmLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4NSwgMHgxMywgMHhiMywgMHgyLCAweDk2LCAweDU2LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4NmIsIDB4MTUsIDB4OTQsIDB4OTIsIDB4YTAsIDB4NzMsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhhNCwgMHg3OCwgMHgxOSwgMHgxMywgMHg3MiwgMHg5YSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDYwLCAweGE0LCAweDc4LCAweGIyLCAweDcyLCAweDY3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4N2EsIDB4N2EsIDB4NzgsIDB4NjUsIDB4N2EsIDB4YzUsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxZSwgMHg4MSwgMHhhYSwgMHg3ZCwgMHhhOCwgMHg3YywgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZmIsIDB4YiwgMHhkNSwgMHgxNSwgMHg2NSwgMHhhLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4N2IsIDB4OGMsIDB4N2IsIDB4MWIsIDB4N2MsIDB4N2IsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3YywgMHgxZiwgMHg4OSwgMHg3YiwgMHg3YSwgMHg4OCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDcxLCAweDY3LCAweDk0LCAweGFiLCAweDFmLCAweDZmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg5YiwgMHg5NywgMHhhMywgMHhhOSwgMHhhMCwgMHg3ZSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDFlLCAweGE4LCAweDdkLCAweGE5LCAweDdmLCAweGFhLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhjNSwgMHgyZCwgMHgxNSwgMHg5NiwgMHg4OSwgMHg4OSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDZiLCAweDhmLCAweDZjLCAweDE5LCAweDhkLCAweDdiLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4N2IsIDB4MWEsIDB4MTMsIDB4YjIsIDB4OWEsIDB4OGUsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3MSwgMHg4MiwgMHg2NywgMHg2YiwgMHg3MiwgMHg3ZiwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGE5LCAweDk4LCAweGEwLCAweDk4LCAweGE1LCAweDFlLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4OTcsIDB4YTksIDB4OTQsIDB4YWEsIDB4OCwgMHg1YSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDkyLCAweDgyLCAweDczLCAweDc2LCAweDc0LCAweDc2LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4MTksIDB4NzIsIDB4NzgsIDB4NzIsIDB4NjQsIDB4NjcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3YSwgMHg5YywgMHg5ZSwgMHhiMSwgMHhjNSwgMHg5YywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDFmLCAweGFhLCAweDk1LCAweGE4LCAweDk5LCAweGE3LCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhlLCAweDU5LCAweDk0LCAweDc2LCAweGE5LCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4OWUsIDB4ZjcsIDB4NjksIDB4OWUsIDB4ZjcsIDB4N2EsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHhhMywgMHg5YiwgMHhmNywgMHg2YiwgMHg5YywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGY3LCAweDJjLCAweGRmLCAweDE1LCAweGY3LCAweDU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4YjgsIDB4ZmIsIDB4NzYsIDB4NSwgMHgxMywgMHg3ZSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDUsIDB4ODcsIDB4YjksIDB4ZjcsIDB4NmUsIDB4OGIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1MCwgMHhmYiwgMHgxMSwgMHg5OCwgMHg5MSwgMHhmYiwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU0LCAweGY3LCAweDc1LCAweGI5LCAweDkxLCAweDk4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4YjcsIDB4ZjcsIDB4MTEsIDB4ZjcsIDB4NGYsIDB4ODYsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1NiwgMHhmYiwgMHgxNiwgMHg1ZCwgMHhmNywgMHg3YSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDVlLCAweGZiLCAweDc1LCAweGZiLCAweDRlLCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ODUsIDB4ZjcsIDB4MTcsIDB4ZmIsIDB4NTQsIDB4ZmIsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg4MCwgMHg3ZCwgMHhmNywgMHg3YywgMHg1ZSwgMHhmYiwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRiLCAweDUsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4ODAsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhiYywgMHhiYSwgMHhjNiwgMHhjNiwgMHhiYiwgMHg1YywgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDVhLCAweDViLCAweDUwLCAweDUwLCAweDViLCAweGJiLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHhmYiwgMHgxOCwgMHg5NywgMHhjMywgMHg5MiwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGFjLCAweDZhLCAweGU2LCAweDc3LCAweDlmLCAweDk3LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4OWYsIDB4OWEsIDB4YzEsIDB4NjgsIDB4OWYsIDB4YTYsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhlNiwgMHg2YSwgMHhhYywgMHg5NCwgMHg3NywgMHhiMCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweGQ2LCAweDkyLCAweGMzLCAweDEyLCAweGEwLCAweGQxLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4YzgsIDB4YTEsIDB4ODUsIDB4Y2QsIDB4NzMsIDB4OWYsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHg2NSwgMHhhNSwgMHg4MCwgMHhhYSwgMHg5OSwgMHhhYSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDZkLCAweGE1LCAweGEyLCAweGNkLCAweDRkLCAweDlmLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4YzgsIDB4YjQsIDB4OGQsIDB4ZDEsIDB4MTMsIDB4ZWMsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHgzMywgMHhmOCwgMHg4LCAweGY4LCAweDMwLCAweDE1LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OTIsIDB4OGQsIDB4OGMsIDB4MWYsIDB4OTUsIDB4OWMsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg5YSwgMHg5OCwgMHg5OCwgMHg5NywgMHg5YSwgMHg5NCwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDgsIDB4OGQsIDB4OGMsIDB4OTAsIDB4OGUsIDB4OGUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlYSwgMHhjYiwgMHhlYSwgMHg1MywgMHg4ZSwgMHg4NSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDYzLCAweDU2LCAweDY3LCAweDYwLCAweDg5LCAweDhiLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4MWUsIDB4YzAsIDB4NTgsIDB4MTUsIDB4ODcsIDB4OTUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg5ZiwgMHg5ZSwgMHg4NywgMHg4NSwgMHg5ZSwgMHgxZSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDlhLCAweDgzLCAweDk5LCAweDgxLCAweDgsIDB4ODksIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4YSwgMHg4ZSwgMHgxYiwgMHg4ZCwgMHg4YywgMHg4YiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDg5LCAweDhmLCAweDg5LCAweDhkLCAweDFmLCAweGE1LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4OWYsIDB4NmMsIDB4MWIsIDB4ODMsIDB4NmIsIDB4ODUsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHgxMywgMHhhOSwgMHgxNSwgMHg4ZCwgMHg4YiwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDFmLCAweDEzLCAweGVjLCAweGQ3LCAweGVjLCAweDkzLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OGYsIDB4ODksIDB4OGUsIDB4MWUsIDB4ODEsIDB4OWMsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg4NywgMHg5ZSwgMHg4LCAweDg5LCAweDk2LCAweDhhLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OTIsIDB4OGMsIDB4OTEsIDB4OTIsIDB4MWEsIDB4OGQsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg4OCwgMHg4MCwgMHg4NCwgMHg1ZSwgMHg4MiwgMHg3MCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGEzLCAweDdjLCAweDFlLCAweDg5LCAweDhlLCAweDkwLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4MWIsIDB4MTMsIDB4ZWMsIDB4ZDcsIDB4ZDQsIDB4MzMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhmYiwgMHg0LCAweDE1LCAweDRjLCAweGNmLCAweDZjLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4YzIsIDB4YjAsIDB4YjcsIDB4YjYsIDB4MWUsIDB4OTMsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg5MiwgMHg5NywgMHgxYiwgMHg5YiwgMHg5NCwgMHg3ZSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGViLCAweDU3LCAweGVjLCAweDhmLCAweDczLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4N2MsIDB4NzksIDB4MWUsIDB4NzgsIDB4NzQsIDB4NzIsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg4NywgMHg4LCAweDY5LCAweDg2LCAweDdiLCAweDcxLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NjMsIDB4YTksIDB4NzMsIDB4YjIsIDB4Y2EsIDB4YmMsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHg5NSwgMHgxZSwgMHg4ZSwgMHg5YSwgMHg4YywgMHg5YSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGE3LCAweDg1LCAweGE1LCAweDg0LCAweGE2LCAweDFlLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OGEsIDB4OTEsIDB4OTEsIDB4MWEsIDB4OWIsIDB4OTQsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHgxZSwgMHgxMywgMHhlYiwgMHgyNywgMHhlOSwgMHg1MywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDhhLCAweDg4LCAweDkwLCAweDFmLCAweGFjLCAweDc2LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NjMsIDB4NmYsIDB4N2QsIDB4NzgsIDB4NzcsIDB4MWEsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg2ZCwgMHhhYiwgMHhiNywgMHhhNCwgMHhiYiwgMHhiMiwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGI4LCAweDY5LCAweGE3LCAweDFlLCAweDY3LCAweGFhLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NWUsIDB4OTcsIDB4OCwgMHg3ZCwgMHg4ZiwgMHg3YSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDFhLCAweGE5LCAweGJlLCAweDk0LCAweGEyLCAweDFlLCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4NDksIDB4YmIsIDB4MWIsIDB4YWUsIDB4YWYsIDB4YTUsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHg0NywgMHhhYSwgMHg1NSwgMHg0YiwgMHg1NCwgMHg2NiwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDFmLCAweDEzLCAweGVjLCAweGQ3LCAweGVhLCAweDkzLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODEsIDB4ODQsIDB4N2YsIDB4MWIsIDB4N2IsIDB4ODIsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHgxZiwgMHgxMywgMHhlYywgMHhkNywgMHhlOSwgMHg5MywgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGFhLCAweDlhLCAweDlkLCAweDFlLCAweDllLCAweGEyLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YTgsIDB4OGYsIDB4OCwgMHhhZCwgMHg5MCwgMHg5YiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDFhLCAweGIzLCAweDZkLCAweGEzLCAweDY0LCAweDRjLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4NTIsIDB4ODEsIDB4MWUsIDB4ODgsIDB4N2MsIDB4OGEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHgxYSwgMHg2ZiwgMHg5MSwgMHg3MSwgMHg5MiwgMHg3MCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDg2LCAweDhjLCAweDg1LCAweDg1LCAweDFhLCAweDdiLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4N2EsIDB4MWUsIDB4MTMsIDB4ZDQsIDB4ZDcsIDB4ZDQsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg4NywgMHg4YywgMHg4ZSwgMHg4NiwgMHgxZiwgMHg2YSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGIwLCAweGIzLCAweGE3LCAweDk5LCAweDllLCAweDlmLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4NjYsIDB4YTksIDB4NmIsIDB4NWYsIDB4NzIsIDB4NWIsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHhhMiwgMHg1ZSwgMHhhZCwgMHg2ZiwgMHgxZSwgMHhhZiwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDdlLCAweGI4LCAweDdmLCAweDgsIDB4OTksIDB4ODcsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg3YSwgMHgxYSwgMHg2ZCwgMHg1OCwgMHg4MiwgMHg3NCwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGE5LCAweDlmLCAweDc2LCAweDFlLCAweDk0LCAweDgxLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4N2IsIDB4MWIsIDB4NjgsIDB4NjcsIDB4NzEsIDB4NjYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlYywgMHhkNywgMHhlYywgMHgzMywgMHhmOCwgMHgxNSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweGVjLCAweGQ3LCAweGVjLCAweDRmLCAweDg4LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4OGQsIDB4ODgsIDB4MWUsIDB4OTUsIDB4N2EsIDB4OTEsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg3OCwgMHg4LCAweDhkLCAweDgwLCAweDhjLCAweDgwLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4OGEsIDB4ODUsIDB4ODQsIDB4MWEsIDB4ODksIDB4OGIsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg5NiwgMHg5MiwgMHhiOCwgMHg5NCwgMHhhNiwgMHg4MSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDlhLCAweDFlLCAweDhkLCAweDg4LCAweDg2LCAweDhlLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MTMsIDB4ZWEsIDB4ZDcsIDB4ZDQsIDB4MzMsIDB4ODksIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg4OSwgMHgxZiwgMHhmYiwgMHg4YywgMHhjYSwgMHgxNSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGFlLCAweDc3LCAweGFhLCAweDFiLCAweDkzLCAweGFiLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OGYsIDB4ODEsIDB4OGIsIDB4ODksIDB4NzcsIDB4NzgsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg3OCwgMHgxZiwgMHg3YSwgMHg5MSwgMHg3YywgMHg5MywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDgsIDB4OGQsIDB4ODksIDB4ODgsIDB4OGMsIDB4ODgsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4YSwgMHg4YiwgMHg4OSwgMHg4OCwgMHg4ZCwgMHg4NywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDFmLCAweGRhLCAweGZiLCAweDNlLCAweDE1LCAweDg4LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4OGQsIDB4YjMsIDB4YzAsIDB4YWYsIDB4YjYsIDB4OGQsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg4NywgMHgxZSwgMHgxMywgMHhlYiwgMHg1NywgMHhlYSwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDg3LCAweDg0LCAweDg5LCAweDhhLCAweDFmLCAweDgxLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4N2MsIDB4N2MsIDB4N2UsIDB4N2UsIDB4N2YsIDB4N2MsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg4NCwgMHg4LCAweDg5LCAweDhhLCAweDg2LCAweDg4LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4NjgsIDB4ZjcsIDB4ODgsIDB4MTUsIDB4YTYsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg5NywgMHhiMiwgMHgxYiwgMHhhMywgMHhhZCwgMHg4MSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDdmLCAweDdmLCAweDc5LCAweDgyLCAweDg0LCAweDhlLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MWYsIDB4NmQsIDB4YTMsIDB4NWUsIDB4OTEsIDB4NjcsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGZiLCAweGUsIDB4YmEsIDB4MTUsIDB4ODksIDB4OTUsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg5NSwgMHgxYSwgMHhiMCwgMHhhMywgMHhkYywgMHhiOSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDdlLCAweDdhLCAweDdlLCAweDdmLCAweDdlLCAweDgwLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NmEsIDB4N2UsIDB4NjksIDB4NjUsIDB4ODYsIDB4NjcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFmLCAweGZiLCAweDNhLCAweDE1LCAweGI0LCAweDdlLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4NWMsIDB4MWEsIDB4NzcsIDB4N2YsIDB4N2EsIDB4NzYsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg5YywgMHg5YywgMHgxZSwgMHgxMywgMHhlYywgMHhkNywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDkxLCAweDhkLCAweDkxLCAweDkxLCAweDFhLCAweGFhLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NzIsIDB4OWUsIDB4MWUsIDB4ZmIsIDB4ODEsIDB4ZTMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg5OCwgMHg1MSwgMHhiZSwgMHhiYSwgMHgxYSwgMHg5ZiwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGEwLCAweDlkLCAweDk3LCAweDdhLCAweDdhLCAweDFlLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ODUsIDB4ODUsIDB4MWEsIDB4NmMsIDB4OWIsIDB4NjEsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHgxZSwgMHhmNywgMHgyMSwgMHhmYiwgMHgzZiwgMHgxNSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDhjLCAweDgyLCAweDgxLCAweDFhLCAweDY2LCAweDczLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4MWUsIDB4MTMsIDB4ZWMsIDB4ZDcsIDB4ZDIsIDB4OTMsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg5OCwgMHg5YywgMHg5OCwgMHg5NywgMHg5OCwgMHg5NiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGFjLCAweDk4LCAweGFkLCAweGIxLCAweDkwLCAweGFmLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3LCAweGI0LCAweDE1LCAweDcwLCAweDZlLCAweDYzLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4MWIsIDB4NzMsIDB4NjksIDB4OTUsIDB4YTksIDB4OWQsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg5ZCwgMHg5NCwgMHg5MiwgMHg4OCwgMHg4NiwgMHg5MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweGEwLCAweGE3LCAweDg0LCAweGE2LCAweDFiLCAweDk3LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OTAsIDB4OTYsIDB4MWYsIDB4ZSwgMHhmYiwgMHgyYywgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDRhLCAweDc3LCAweDEsIDB4ZjcsIDB4ZGEsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGQxLCAweGY3LCAweGQsIDB4MTUsIDB4YWUsIDB4ODEsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhjMywgMHhhYiwgMHg3MCwgMHgyYiwgMHhhZSwgMHg4MSwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE4LCAweGRjLCAweGJhLCAweDlhLCAweDgyLCAweDUsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDJiLCAweDI5LCAweGE1LCAweDcxLCAweGQxLCAweGQzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg3LCAweDRlLCAweDRjLCAweGE1LCAweDcyLCAweGMwLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4NTUsIDB4YTUsIDB4YTQsIDB4NGUsIDB4Y2EsIDB4NSwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZDEsIDB4NDMsIDB4YTUsIDB4YTUsIDB4MmIsIDB4ZWQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDcsIDB4OWEsIDB4OTQsIDB4ZGMsIDB4NWMsIDB4YjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhhZSwgMHg5NSwgMHg3MCwgMHhlYiwgMHhjMywgMHg2YiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGFlLCAweDk1LCAweDc3LCAweGQ0LCAweGQ0LCAweDlkLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MzYsIDB4NzYsIDB4NTMsIDB4YWMsIDB4ZWMsIDB4YTMsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhmYiwgMHgxOSwgMHg2OSwgMHgzYSwgMHhiOSwgMHg1LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhkYywgMHhiOSwgMHhmNywgMHgxOSwgMHg2OSwgMHg5NCwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGEzLCAweGMzLCAweGFjLCAweGUwLCAweDc2LCAweDk0LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4OWUsIDB4OWYsIDB4ZDMsIDB4NjgsIDB4OTUsIDB4NzMsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg2YiwgMHhhNiwgMHhlYiwgMHg2OCwgMHg5NSwgMHg2NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDNhLCAweDVjLCAweDdjLCAweDk0LCAweDUsIDB4ZTgsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweGVkLCAweDcxLCAweGE1LCAweDQ1LCAweDQzLCAweDUsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGM4LCAweGNhLCAweDcxLCAweGE0LCAweDU2LCAweDU1LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4NzEsIDB4NzIsIDB4YzgsIDB4NGMsIDB4NSwgMHg0YSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4ZDMsIDB4NzEsIDB4NzEsIDB4ZWIsIDB4MjksIDB4NSwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4N2MsIDB4ODIsIDB4M2EsIDB4YmEsIDB4NjYsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg4MSwgMHhhNiwgMHgyYiwgMHg1MywgMHhhYiwgMHg3MywgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDgxLCAweDlmLCAweDQzLCAweDQyLCAweDc4LCAweDk0LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4YTAsIDB4YzMsIDB4NmEsIDB4MmEsIDB4NzMsIDB4OTQsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHhhZCwgMHhkYywgMHg1ZCwgMHg1LCAweDc5LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHg1ZCwgMHhmYiwgMHgxOSwgMHhhZCwgMHg4MiwgMHg2NywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDUzLCAweDZhLCAweDM2LCAweGEwLCAweDgyLCAweDY4LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NSwgMHhlLCAweGZiLCAweDIzLCAweDllLCAweDc2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4NzcsIDB4MTIsIDB4ZjcsIDB4NzEsIDB4YjAsIDB4ZDAsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhiMywgMHhjZiwgMHhiMCwgMHg2NywgMHhiMCwgMHgxMywgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweGY3LCAweGMsIDB4MTUsIDB4YjEsIDB4N2YsIDB4YTMsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHhiYSwgMHg4NiwgMHgyNywgMHhhNCwgMHg3ZCwgMHg1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4ZGYsIDB4YzEsIDB4NSwgMHgyZCwgMHg3LCAweDQ5LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4NzAsIDB4YzQsIDB4YzQsIDB4YzQsIDB4NTIsIDB4YTgsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHhjZCwgMHg1LCAweGU5LCAweDcsIDB4ZGYsIDB4NTUsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg4NiwgMHhlZiwgMHhkZCwgMHg1YywgMHhhMywgMHgzMSwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDc2LCAweGQ5LCAweGQ5LCAweDlmLCAweDgyLCAweGIyLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MzksIDB4YmEsIDB4ZTQsIDB4YjksIDB4NSwgMHhhNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4YjksIDB4ZGQsIDB4YmEsIDB4ZTUsIDB4NzMsIDB4OTQsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhhMCwgMHhhMCwgMHhkOCwgMHg2NSwgMHg5NywgMHg3MywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDVjLCAweDkwLCAweGVmLCAweDcyLCAweDk5LCAweDM3LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlOSwgMHg3LCAweGNkLCAweGNkLCAweDZlLCAweGE2LCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4NTIsIDB4YzQsIDB4NmUsIDB4NzAsIDB4Y2QsIDB4NDksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDcsIDB4MzcsIDB4YzEsIDB4NzIsIDB4N2QsIDB4OTAsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhiYSwgMHg3MywgMHhlNSwgMHg2NSwgMHg3ZiwgMHhhMCwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDc2LCAweDk0LCAweDY0LCAweGU1LCAweGEzLCAweGRkLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NWQsIDB4NSwgMHg2ZiwgMHg3LCAweGU0LCAweDVkLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4MzEsIDB4YTMsIDB4ODIsIDB4NjQsIDB4ZDksIDB4NzYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDlmLCAweGY3LCAweDQ2LCAweDE1LCAweGQ5LCAweDcsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHg1LCAweDEzLCAweGY0LCAweDg4LCAweDM4LCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHg1YiwgMHg0MSwgMHgxNSwgMHhjZiwgMHhiMiwgMHhkNSwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDY0LCAweDUsIDB4ZmIsIDB4MTQsIDB4ZDUsIDB4MTUsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHg4OCwgMHhkZSwgMHhkMiwgMHg1ZiwgMHg1LCAweGIzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4MTUsIDB4ZDksIDB4NywgMHgxMywgMHhmNCwgMHhjZiwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDM4LCAweDUsIDB4MTMsIDB4ZWEsIDB4ZmIsIDB4NWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDE1LCAweDQxLCAweGIyLCAweGQ1LCAweGIyLCAweGNmLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1OCwgMHhmYiwgMHgzMSwgMHgxNSwgMHg4ZSwgMHhkZSwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDUsIDB4M2QsIDB4NywgMHhlLCAweGZiLCAweDJhLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjksIDB4NDYsIDB4NzcsIDB4MSwgMHhmNywgMHhkMiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZDMsIDB4ZjcsIDB4ZSwgMHgxNSwgMHhiZCwgMHg3ZCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweGFjLCAweDllLCAweDc0LCAweDM1LCAweGJjLCAweDdlLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4ZDQsIDB4YjUsIDB4OGUsIDB4OGEsIDB4NSwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4MjgsIDB4MjcsIDB4YWYsIDB4NjcsIDB4Y2EsIDB4Y2EsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDcsIDB4NGIsIDB4NGIsIDB4YjAsIDB4NjYsIDB4YzAsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg1NywgMHhiMCwgMHhiMCwgMHg0YiwgMHhjYiwgMHg1LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhjYSwgMHg0YywgMHhhZiwgMHhhZiwgMHgyOCwgMHhlZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4NywgMHg4ZSwgMHg4YywgMHhkNCwgMHg2MSwgMHhiMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGJjLCAweDk4LCAweDc0LCAweGUxLCAweGFjLCAweDc4LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4YmQsIDB4OTksIDB4NzksIDB4ZDMsIDB4ZDIsIDB4OWUsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHgzMywgMHg3NCwgMHg2YSwgMHg5ZSwgMHhlMSwgMHhhMiwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGZiLCAweDFjLCAweDY3LCAweDQyLCAweGI2LCAweDc1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHhiNiwgMHhmNywgMHgxYywgMHg2NywgMHg5OCwgMHhiYywgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGFjLCAweDllLCAweGUzLCAweDc0LCAweDk4LCAweGJlLCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4OWQsIDB4ZDIsIDB4NTksIDB4OTksIDB4NzMsIDB4MzQsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhhMiwgMHhlMSwgMHg1YSwgMHg5OCwgMHg2NiwgMHhmYiwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDYxLCAweDg4LCAweDhjLCAweDUsIDB4ZTAsIDB4NywgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweDY3LCAweGFmLCAweDRjLCAweDRjLCAweDUsIDB4YjEsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGNiLCAweDY2LCAweGIwLCAweDU2LCAweDU3LCAweDU2LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NjYsIDB4Y2IsIDB4NGIsIDB4NSwgMHg2NSwgMHg3LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4NjcsIDB4NjcsIDB4ZWUsIDB4MjcsIDB4NSwgMHgzNiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4OGEsIDB4NDIsIDB4YjUsIDB4NjYsIDB4ZjcsIDB4MWMsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhhMiwgMHgzNSwgMHg2YSwgMHg5ZSwgMHg3MywgMHhlMiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDlkLCAweDQ0LCAweDQ0LCAweDc3LCAweDk4LCAweDU4LCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YWMsIDB4NzgsIDB4MzUsIDB4NzQsIDB4OTgsIDB4NWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhhZiwgMHhkNCwgMHg2MCwgMHg4MCwgMHhhLCAweDQyLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWMsIDB4YWYsIDB4N2UsIDB4NWEsIDB4ZTEsIDB4NzQsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHgzMywgMHhhMiwgMHg3ZSwgMHg1OCwgMHhkMiwgMHg3NywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1NiwgMHg5NywgMHg3NiwgMHhhNSwgMHg3NiwgMHhmNywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGY3LCAweGUyLCAweDc3LCAweDEyLCAweGY4LCAweGQsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiOCwgMHhmOCwgMHgzMCwgMHhmOCwgMHgxMywgMHgxNSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweGY3LCAweDNkLCAweGY3LCAweDhmLCAweDc2LCAweDhmLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4N2QsIDB4OWIsIDB4MTksIDB4ZmIsIDB4MSwgMHhmYiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweGE0LCAweGY3LCAweDE5LCAweDdiLCAweDk5LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4ODcsIDB4YTAsIDB4MTksIDB4ZmIsIDB4OGYsIDB4ZmIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDYwLCAweDllLCAweDE1LCAweDk1LCAweDYsIDB4YTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHg1LCAweDg4LCAweDgyLCAweDgzLCAweDg5LCAweDgzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODMsIDB4OGMsIDB4OGYsIDB4ODAsIDB4MWYsIDB4ZDQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHgxNSwgMHhmNywgMHhjMiwgMHg3NiwgMHg1LCAweDg3LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4OTMsIDB4OTMsIDB4MWEsIDB4OTMsIDB4OGMsIDB4OTMsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHgxZSwgMHhmYiwgMHhjMiwgMHg3NiwgMHg1LCAweDQwLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OTQsIDB4OTAsIDB4ZmIsIDB4MTksIDB4ZjcsIDB4YTQsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg4MSwgMHg4NSwgMHg3NiwgMHg4NywgMHgxOSwgMHhmNywgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQxLCAweDE1LCAweGY3LCAweDhmLCAweGZiLCAweDNkLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4OTEsIDB4OTUsIDB4OWIsIDB4OTksIDB4MTksIDB4ZmIsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHg1LCAweDM1LCAweGIxLCAweDE1LCAweDkwLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OGYsIDB4ZjcsIDB4M2QsIDB4ODcsIDB4NzYsIDB4ODUsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg3ZCwgMHgxOSwgMHhmNywgMHhlMiwgMHhmYiwgMHg1NywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE5LCAweGZiLCAweGE0LCAweDk5LCAweDliLCAweDk1LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4OGYsIDB4MTksIDB4ZmIsIDB4M2QsIDB4ZjcsIDB4OGYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGQsIDB4OTcsIDB4MTUsIDB4ZjcsIDB4YzIsIDB4YTAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDcsIDB4ZmIsIDB4YzIsIDB4YTAsIDB4NSwgMHg4ZiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDg0LCAweDgyLCAweDFhLCAweDgzLCAweDg5LCAweDgzLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4MWUsIDB4ZjcsIDB4ZDcsIDB4ZmIsIDB4ZDcsIDB4MTUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg4ZSwgMHg5NSwgMHg5MywgMHg4ZCwgMHg5MywgMHgxYiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDkzLCAweDkzLCAweDg5LCAweDg4LCAweDk1LCAweDFmLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzIsIDB4NSwgMHg4MSwgMHg2LCAweGZiLCAweGIwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4MTUsIDB4ZjcsIDB4OGYsIDB4ZjcsIDB4M2QsIDB4ODYsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhNCwgMHhmYiwgMHgxOSwgMHg5YiwgMHg3ZCwgMHg5MSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDc2LCAweDE5LCAweGU3LCAweDJmLCAweDE1LCAweGEwLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4ODUsIDB4OTksIDB4N2IsIDB4ZjcsIDB4MTksIDB4ZjcsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg4MiwgMHg5MCwgMHg1LCAweGUsIDB4NTcsIDB4OTcsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg3NiwgMHhmOSwgMHg0OSwgMHg3NywgMHgxMiwgMHhiNywgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDEzLCAweGIwLCAweGY4LCAweDM1LCAweGY4LCAweDcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NSwgMHhmNywgMHg4YiwgMHg3OCwgMHg4ZSwgMHg1NSwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDlhLCAweDE5LCAweGZiLCAweDksIDB4ZmIsIDB4YjcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDc2LCAweDE1LCAweGY3LCAweGI3LCAweGY3LCAweDksIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg2YywgMHhjMSwgMHg4OCwgMHg5ZSwgMHgxOSwgMHhmYiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDU1LCAweDUsIDB4NjcsIDB4OWEsIDB4MTUsIDB4OTUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGY3LCAweGNhLCAweDUsIDB4ODcsIDB4ODIsIDB4NzcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxYiwgMHg3NywgMHg3NywgMHg4YywgMHg4ZiwgMHg4MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGZiLCAweGY2LCAweDE1LCAweGY3LCAweGNhLCAweDVmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg5NCwgMHg4YSwgMHhhMCwgMHg5ZiwgMHgxYSwgMHg5ZiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDhlLCAweDk0LCAweDFlLCAweGZiLCAweGNhLCAweDVmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhhNSwgMHgxNSwgMHg5NCwgMHg5MCwgMHhmYiwgMHg5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4N2YsIDB4N2MsIDB4NTUsIDB4NmMsIDB4NzgsIDB4ODgsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YywgMHhmYiwgMHhjMiwgMHgxNSwgMHhmNywgMHg4YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDhlLCAweDllLCAweGFhLCAweGMxLCAweDlhLCAweDk3LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjcsIDB4ZjcsIDB4OSwgMHg1LCAweDQzLCAweGE5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OTQsIDB4ZmIsIDB4OGIsIDB4ZjcsIDB4NTUsIDB4ODgsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg1NSwgMHg3YywgMHg3ZiwgMHgxOSwgMHhmOCwgMHg1ZiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDE1LCAweDk3LCAweDlhLCAweGMxLCAweGFhLCAweDllLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTUsIDB4ZjcsIDB4OGIsIDB4MTgsIDB4ODIsIDB4ODYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDAsIDB4N2UsIDB4MTUsIDB4ZjcsIDB4Y2EsIDB4YjcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDcsIDB4ZmIsIDB4Y2EsIDB4YjcsIDB4NSwgMHg4ZiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDc2LCAweDc3LCAweDFhLCAweDc3LCAweDg5LCAweDc4LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4MWUsIDB4ZjcsIDB4YzAsIDB4ZmIsIDB4YzAsIDB4MTUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg4ZSwgMHg5NCwgMHg5ZSwgMHg4ZCwgMHg5ZiwgMHgxYiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDlmLCAweGEwLCAweDhhLCAweDg3LCAweDk0LCAweDFmLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4Y2EsIDB4NSwgMHg4MSwgMHg2LCAweGZiLCAweGE1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4MTUsIDB4ZjcsIDB4OGIsIDB4ZjcsIDB4NTUsIDB4ODYsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiNywgMHhmYiwgMHg5LCAweDlhLCAweDdmLCAweGFhLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4NzgsIDB4MTksIDB4YzgsIDB4NGUsIDB4MTUsIDB4OWUsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg2YywgMHg5NywgMHg3YywgMHhmNywgMHg5LCAweGY3LCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ODIsIDB4OTAsIDB4NSwgMHhlLCAweGZiLCAweDEyLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4NDMsIDB4ZTYsIDB4ZjcsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNSwgMHg3NywgMHgxMiwgMHhhZSwgMHhmNywgMHg0NSwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQyLCAweDIyLCAweGFlLCAweGY3LCAweDE0LCAweGY3LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZmIsIDB4ZjcsIDB4ZTcsIDB4ZjcsIDB4MzUsIDB4MTUsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg2YiwgMHg2YiwgMHg2MSwgMHgxYSwgMHg1OSwgMHhhZiwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGJkLCAweGIwLCAweGIzLCAweGJjLCAweGI2LCAweDZiLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4OTcsIDB4MWUsIDB4ZjcsIDB4MzAsIDB4NywgMHhmNywgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDUsIDB4ODksIDB4ODMsIDB4ODksIDB4ODMsIDB4ODIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHhiMywgMHg2MiwgMHhiYywgMHgxZSwgMHgxMywgMHhmZCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGIxLCAweGJjLCAweGJhLCAweDY1LCAweGI0LCAweDVhLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4N2YsIDB4NzgsIDB4NzcsIDB4MWYsIDB4MTMsIDB4ZmIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhkNywgMHhmNywgMHgxNiwgMHhkNywgMHg1LCAweDc2LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4ODIsIDB4YTksIDB4MWIsIDB4YmMsIDB4YWYsIDB4YjYsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg2MiwgMHhhZCwgMHg1YiwgMHg1ZSwgMHg2MSwgMHg2MywgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDhjLCAweDgwLCAweDhlLCAweDgzLCAweDFmLCAweGZiLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4NSwgMHhmNywgMHgzMSwgMHg3LCAweGIxLCAweDk2LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4YjUsIDB4MWEsIDB4YmQsIDB4NjYsIDB4YjMsIDB4NTksIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg2MywgMHg1OSwgMHg2MSwgMHhhYSwgMHg2YiwgMHhiMSwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDMxLCAweDcsIDB4ZmIsIDB4MTgsIDB4ZDksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDkyLCAweDhkLCAweDkzLCAweDk1LCAweDFhLCAweGJjLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4NWEsIDB4MWUsIDB4MTMsIDB4ZmQsIDB4NTksIDB4NjUsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg1YywgMHhiMiwgMHg2MiwgMHhiYiwgMHhhOCwgMHhhMCwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDlmLCAweDFmLCAweDEzLCAweGZiLCAweGY3LCAweDE2LCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTYsIDB4M2YsIDB4NSwgMHhhMSwgMHg3NiwgMHg3NywgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDFiLCAweDVhLCAweDY3LCAweDVmLCAweDVjLCAweDU5LCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4YmIsIDB4YjcsIDB4YjYsIDB4YjMsIDB4YjgsIDB4OTYsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg5MywgMHg5MCwgMHgxZiwgMHhmNywgMHgxOCwgMHhkOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1YiwgMHg5NywgMHg3NiwgMHhmNywgMHg4MywgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4ZjcsIDB4ZiwgMHhmNywgMHg4MywgMHg3NywgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGY3LCAweGYsIDB4NzEsIDB4ZjcsIDB4ZiwgMHgxMywgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDM5LCAweGY3LCAweGYxLCAweDE1LCAweGJmLCAweGFmLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YzcsIDB4OWIsIDB4YTgsIDB4OTMsIDB4YTksIDB4OTIsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg5YSwgMHg5NSwgMHg4YiwgMHg5ZSwgMHg4YywgMHg5ZSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDhiLCAweDk2LCAweDhmLCAweDk0LCAweDgsIDB4OGMsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4ZCwgMHg4ZCwgMHgxYSwgMHg5MywgMHg4NCwgMHg4YywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDgxLCAweDhlLCAweDhlLCAweDgyLCAweDFlLCAweDhlLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4OGYsIDB4ODEsIDB4MWIsIDB4NmYsIDB4NjcsIDB4NTYsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgxZiwgMHg2ZiwgMHg2MywgMHg2ZSwgMHg2OCwgMHg2NSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDg0LCAweDgyLCAweDg1LCAweDgyLCAweDg1LCAweDgsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHgxNSwgMHg5OCwgMHg4OCwgMHg5NiwgMHhjOSwgMHhhMCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGMxLCAweDE5LCAweDk4LCAweGEyLCAweGEyLCAweGIzLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4OTgsIDB4ODMsIDB4OTMsIDB4ODMsIDB4OTQsIDB4MWUsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg4MywgMHg5NCwgMHg4NCwgMHg5OCwgMHg4LCAweDhlLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4OTAsIDB4ODcsIDB4MWIsIDB4ODYsIDB4OGIsIDB4ODksIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHgxZiwgMHg3ZiwgMHg4MCwgMHg4MCwgMHg4NywgMHg4MiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NzcsIDB4ODEsIDB4N2UsIDB4ODUsIDB4NjEsIDB4MWEsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg3NiwgMHg4ZiwgMHg3NiwgMHgxZSwgMHg5MSwgMHg2YiwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDZhLCAweDFhLCAweDcxLCAweDg5LCAweDcxLCAweDg2LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YTUsIDB4NjUsIDB4MTUsIDB4YzksIDB4ODAsIDB4YmIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg2YywgMHg4LCAweDdlLCAweGEyLCAweGIzLCAweDc0LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4OTgsIDB4OTQsIDB4OTMsIDB4OTMsIDB4OTMsIDB4MWYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg5NCwgMHg5MywgMHg5OCwgMHg5MiwgMHg4LCAweDhlLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OGUsIDB4OGYsIDB4MWEsIDB4OTAsIDB4ODksIDB4OGIsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHgxZSwgMHg4MiwgMHg5NiwgMHg4NSwgMHg5NCwgMHg4NywgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4YTEsIDB4ODAsIDB4ODcsIDB4OTksIDB4NWYsIDB4MWIsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg4NywgMHg4NywgMHg3NiwgMHgxZiwgMHg4NSwgMHg2YiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDZhLCAweDFiLCAweDcxLCAweDcxLCAweDhkLCAweDkwLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NWIsIDB4OWEsIDB4MTUsIDB4OTcsIDB4OTMsIDB4NjcsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhiYiwgMHg3YiwgMHhjNywgMHgxOSwgMHg4MywgMHhhOCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDc5LCAweGE0LCAweDgyLCAweDk4LCAweDdjLCAweDhkLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4N2UsIDB4OGMsIDB4N2UsIDB4OGIsIDB4N2YsIDB4OGYsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDg5LCAweDg5LCAweDhiLCAweDg5LCAweDFiLCAweDgzLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4ODQsIDB4ODAsIDB4ODgsIDB4ODAsIDB4ODcsIDB4ODEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4MiwgMHg4OCwgMHg4MiwgMHg4MiwgMHgxYSwgMHg2ZiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGEwLCAweDdjLCAweDFlLCAweGIzLCAweDZmLCAweGFlLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NjUsIDB4OTIsIDB4ODIsIDB4OTEsIDB4ODIsIDB4OTEsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGE5LCAweDYxLCAweDE1LCAweGFmLCAweDU3LCAweDlmLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NGYsIDB4OTMsIDB4NmUsIDB4OTIsIDB4NmQsIDB4OWQsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg3ZCwgMHg5YywgMHg4YSwgMHg5YywgMHg4YSwgMHg5NywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDhiLCAweDk2LCAweDg3LCAweDgsIDB4OGEsIDB4OGQsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4ZCwgMHgxYiwgMHg5MywgMHg4YywgMHg5MiwgMHg5MiwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDkzLCAweDhlLCAweDk0LCAweDFmLCAweDhmLCAweDk2LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OTYsIDB4MWEsIDB4YTcsIDB4NTYsIDB4YWYsIDB4NzYsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg2MywgMHhhNywgMHg2OCwgMHhhOCwgMHg2YywgMHhiMSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDg1LCAweDk0LCAweDg1LCAweDk0LCAweDgsIDB4NWIsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg4ZSwgMHg5OCwgMHg0ZCwgMHg5NiwgMHg1YiwgMHhhMCwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDE5LCAweDEzLCAweGI4LCAweDk4LCAweDc0LCAweDYzLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4MWIsIDB4N2UsIDB4ODIsIDB4ODMsIDB4ODMsIDB4ODMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg4MSwgMHg4MiwgMHg4MywgMHg3ZSwgMHg4NCwgMHg4LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ODYsIDB4ODgsIDB4ODcsIDB4MWEsIDB4ODYsIDB4OGQsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4NywgMHgxZSwgMHg5NSwgMHg4MCwgMHg5MSwgMHg4MCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDgsIDB4NzYsIDB4OTUsIDB4OTAsIDB4N2UsIDB4YjYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhhMCwgMHg4ZiwgMHg4ZiwgMHhhMCwgMHgxZiwgMHg5MSwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDhmLCAweGFjLCAweDFiLCAweGE1LCAweGE1LCAweDg5LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4MWYsIDB4OWIsIDB4NzUsIDB4MTUsIDB4ODAsIDB4NGQsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg2YywgMHg1NSwgMHg4LCAweDdlLCAweDc0LCAweDc0LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4MWEsIDB4N2UsIDB4OTMsIDB4ODIsIDB4OTMsIDB4ODMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg4MCwgMHg5MywgMHg4MiwgMHg5MiwgMHg3ZSwgMHg4LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OGUsIDB4ODYsIDB4OGYsIDB4MWIsIDB4OTAsIDB4OGIsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4ZiwgMHgxZiwgMHg5NCwgMHg5MywgMHg5MywgMHg5MCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDgsIDB4YTMsIDB4OTcsIDB4OWIsIDB4OGQsIDB4YmEsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg4NywgMHhhMCwgMHg4NywgMHhhMCwgMHgxZSwgMHg4NSwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweGFiLCAweGFjLCAweDFhLCAweGE1LCAweDhkLCAweGE1LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4MWUsIDB4NzgsIDB4OTEsIDB4MTUsIDB4ODMsIDB4OTcsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg1YiwgMHg3NywgMHg0ZiwgMHg3YiwgMHgxOSwgMHg2ZSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDg0LCAweDcyLCAweDc5LCAweDdlLCAweDgyLCAweDg5LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4N2EsIDB4OGEsIDB4N2YsIDB4OGIsIDB4N2UsIDB4ODcsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDhhLCAweDg5LCAweDhiLCAweDg5LCAweDg5LCAweDFhLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OGEsIDB4OTIsIDB4OTUsIDB4OTUsIDB4ODgsIDB4ODgsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4OCwgMHg5NSwgMHg5NCwgMHg4NywgMHg5NSwgMHgxYiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGMwLCAweGEwLCAweDlhLCAweDFmLCAweGE3LCAweGIzLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4YjEsIDB4YWEsIDB4OTQsIDB4OTIsIDB4OTQsIDB4OTEsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg4LCAweGUsIDB4ZmIsIDB4YjMsIDB4OGIsIDB4Y2QsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhkMSwgMHhlNywgMHhhNCwgMHhmNywgMHhmLCAweGE1LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhhNCwgMHhmNywgMHhmLCAweGE2LCAweGU4LCAweGQzLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4MywgMHhmNywgMHg0YiwgMHhjOCwgMHgxNSwgMHhlNCwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjIsIDB4ZjcsIDB4ZjgsIDB4ZjcsIDB4MjIsIDB4ZjcsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NGIsIDB4ZDEsIDB4NSwgMHgzZCwgMHhkNywgMHg2LCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4NSwgMHhmYiwgMHhmLCAweGZiLCAweDI5LCAweGZiLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZCwgMHg2LCAweGU2LCAweDQ5LCAweDUsIDB4YzQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGZiLCAweGI2LCAweDE1LCAweGY3LCAweGZjLCAweGZiLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4ZjcsIDB4MmEsIDB4ZjcsIDB4MjgsIDB4ZTgsIDB4ZmIsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNSwgMHgyZiwgMHhmYiwgMHgyNSwgMHhmYiwgMHhmYywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1NSwgMHgzYSwgMHhhLCAweGY3LCAweGRmLCAweGY3LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZmIsIDB4MzMsIDB4ZmIsIDB4MywgMHg3MiwgMHg3YSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDg2LCAweDczLCAweDE5LCAweDY5LCAweDg0LCAweGE2LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4MWIsIDB4YTMsIDB4OWEsIDB4YTIsIDB4YWEsIDB4YTQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweGY3LCAweDJlLCAweDllLCAweDgzLCAweDY0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NSwgMHg2NSwgMHg4NCwgMHhhMSwgMHg2MSwgMHhiNiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDliLCAweGI0LCAweGIyLCAweDgzLCAweDFmLCAweDY1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4OWQsIDB4OTMsIDB4ZjcsIDB4NCwgMHhmYiwgMHgzMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4OWYsIDB4OTgsIDB4NzQsIDB4YjEsIDB4MWIsIDB4YWMsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhhYSwgMHhhNCwgMHg3ZCwgMHg5OSwgMHg3NywgMHg5OCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ2LCAweGY3LCAweGMsIDB4OTMsIDB4OWYsIDB4ZjcsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg1LCAweGI0LCAweDg1LCAweGM1LCAweDg2LCAweGM1LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4NTEsIDB4ODksIDB4NjAsIDB4ODQsIDB4MWUsIDB4ZmIsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg4MywgMHg5ZiwgMHhmNywgMHg0NCwgMHhmNywgMHhkLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhhYiwgMHhhNywgMHhhNCwgMHgxYSwgMHhhOSwgMHg3MiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDZjLCAweDdlLCAweDdjLCAweDc0LCAweDdiLCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg0MCwgMHg3OSwgMHg5NCwgMHhhYiwgMHhmNywgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YjUsIDB4OTIsIDB4OGEsIDB4YzgsIDB4NTAsIDB4MWIsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2OSwgMHg0NiwgMHg5NywgMHgxZiwgMHhiMSwgMHhmYiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDgyLCAweGZiLCAweDIsIDB4ZjcsIDB4MjksIDB4NSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDc5LCAweGFiLCAweDZjLCAweDFiLCAweDZhLCAweDZmLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NjUsIDB4YTcsIDB4N2UsIDB4YTYsIDB4NzgsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHgyNiwgMHg4MywgMHg3OCwgMHhmYiwgMHg0ZSwgMHhhZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4OTMsIDB4NTEsIDB4OGEsIDB4NGUsIDB4MWEsIDB4NGUsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhiNCwgMHg5MSwgMHgxZSwgMHhmNywgMHg0ZiwgMHhhNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1YiwgMHgzYSwgMHhhLCAweGFlLCAweGY5LCAweDY2LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhhLCAweGZiLCAweDVjLCAweGY3LCAweDM3LCAweGZiLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWIsIDB4ZjcsIDB4NWEsIDB4ZjcsIDB4MzYsIDB4ZjcsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YSwgMHhmNywgMHg1YSwgMHhmYiwgMHgzNiwgMHhmNywgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVhLCAweGZiLCAweDViLCAweGZiLCAweDM3LCAweGZiLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWMsIDB4MWUsIDB4ZSwgMHhhZCwgMHg3ZCwgMHhhZSwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGFmLCAweDEsIDB4YWUsIDB4OWYsIDB4ZjksIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHgzLCAweGFlLCAweGY3LCAweGVjLCAweDE1LCAweGZiLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDksIDB4ZmIsIDB4MTksIDB4ZjcsIDB4NmEsIDB4ZjcsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NSwgMHhmNywgMHgxMywgMHhmNywgMHg3YiwgMHhmNywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUyLCAweGY3LCAweDFhLCAweGZiLCAweDY5LCAweGZiLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGYsIDB4ZmIsIDB4MWIsIDB4ZmIsIDB4NzYsIDB4MWUsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHg0OCwgMHhmNywgMHgyOCwgMHg0MSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4ZjcsIDB4MjUsIDB4ZmIsIDB4MjcsIDB4ZmIsIDB4NDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHhmYiwgMHgyNSwgMHgzZSwgMHhhLCAweGZiLCAweDQ5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4NDgsIDB4MWUsIDB4ZSwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGEsIDB4ZjksIDB4NDcsIDB4N2EsIDB4YSwgMHhmOSwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDQ4LCAweGZkLCAweDQ3LCAweDYsIDB4ZSwgMHgzZSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEyLCAweDZlLCAweGE4LCAweGY4LCAweGFjLCAweGE5LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4YTgsIDB4ZjgsIDB4YTksIDB4YTgsIDB4MTMsIDB4NzgsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHgxNSwgMHhmNywgMHgwLCAweDYsIDB4MTMsIDB4YjgsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhkYywgMHhmOCwgMHhkZSwgMHgyNiwgMHhmNSwgMHhmYywgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4MTMsIDB4NzgsIDB4YTgsIDB4ZmMsIDB4Y2EsIDB4MTUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhmOCwgMHhhOSwgMHhmYywgMHhhYywgMHg3LCAweGUsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmNywgMHhmLCAweGY4LCAweGFkLCAweGFiLCAweDEsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhmOCwgMHhhOCwgMHhmNywgMHgxMywgMHgzLCAweGFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxNSwgMHhmNywgMHhhLCAweGZiLCAweDcsIDB4NSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGY4LCAweGM3LCAweDYsIDB4ZmIsIDB4ZCwgMHhmNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmMsIDB4Y2QsIDB4NiwgMHhhYSwgMHhmYywgMHhjZCwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YzAsIDB4YTAsIDB4NzYsIDB4ZjksIDB4NTUsIDB4NTQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGNiLCAweDdhLCAweGEsIDB4ZjksIDB4Y2IsIDB4NiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGY5LCAweDU1LCAweDUsIDB4ZSwgMHhjMCwgMHg5MiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDU2LCAweDU0LCAweGEsIDB4ZjksIDB4Y2IsIDB4MywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDdkLCAweDE1LCAweGY4LCAweDMwLCAweGY5LCAweDU2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHhjYiwgMHg2LCAweGUsIDB4M2EsIDB4YSwgMHhhMywgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDMsIDB4M2IsIDB4YSwgMHhmNywgMHhmYiwgMHhmYiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGZjLCAweGY3LCAweGZjLCAweGZiLCAweGZjLCAweGY3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweDU0LCAweDNmLCAweGEsIDB4MTIsIDB4YWYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhmYywgMHg4ZSwgMHhmNywgMHhjNiwgMHgxMywgMHhkMCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGY4LCAweDIxLCAweDE1LCAweGY3LCAweDJkLCAweGY3LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmQsIDB4ZjcsIDB4MmYsIDB4ZmIsIDB4MmQsIDB4ZmIsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDVmLCAweGZiLCAweDVmLCAweDE1LCAweGY3LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmMsIDB4NSwgMHgxMywgMHhlMCwgMHhmNywgMHgyZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGZiLCAweDJkLCAweGY3LCAweDM1LCAweDUsIDB4ZmIsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmYiwgMHgxNSwgMHhmNywgMHgyZCwgMHhmYiwgMHgzMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGY3LCAweDMxLCAweGZiLCAweDMwLCAweGY3LCAweDJmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1ZiwgMHgyNSwgMHgxNSwgMHhmNywgMHgyZCwgMHhmNywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJmLCAweGY3LCAweDJlLCAweGZiLCAweDJiLCAweGZiLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweGZiLCAweGMyLCAweDhiLCAweGE0LCAweGY3LCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YWEsIDB4ZGEsIDB4YWEsIDB4YTQsIDB4ZjcsIDB4MTIsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGFlLCAweGEzLCAweGY3LCAweDYsIDB4YTQsIDB4YWEsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhhMywgMHhmNywgMHg2LCAweGE0LCAweDMsIDB4ZjcsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHg1MywgMHhmNywgMHhmNCwgMHhmNywgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGZiLCAweDFmLCAweGY3LCAweDJiLCAweGZiLCAweDUzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4ZmIsIDB4MWUsIDB4ZmIsIDB4NTEsIDB4ZjcsIDB4MWUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGZiLCAweGRiLCAweDE1LCAweGY3LCAweGYyLCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjEsIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4MmIsIDB4ZjcsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYiwgMHhmNywgMHgxZSwgMHhmYiwgMHgyMSwgMHhmYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGYyLCAweDcsIDB4ZmIsIDB4MywgMHhhOSwgMHgxNSwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGYzLCAweGY3LCAweDFkLCAweGRhLCAweGZiLCAweDFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4M2EsIDB4ZmIsIDB4MmEsIDB4ZmIsIDB4MWYsIDB4M2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg2LCAweGUsIDB4ZmMsIDB4MjUsIDB4M2EsIDB4YSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDQsIDB4MywgMHhhZSwgMHg3ZCwgMHgxNSwgMHhmNywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMyLCAweGY3LCAweDM1LCAweGY3LCAweDVjLCAweGY3LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzcsIDB4ZjcsIDB4MzIsIDB4ZmIsIDB4NjEsIDB4MWYsIDB4ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg3LCAweGUsIDB4ZmQsIDB4NTEsIDB4M2QsIDB4YSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweGEsIDB4ZDAsIDB4ZjksIDB4NDgsIDB4NDYsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4YzYsIDB4NWEsIDB4YSwgMHhhZSwgMHgxNiwgMHhmNywgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDQ4LCAweGZiLCAweDYzLCAweDYsIDB4ZSwgMHhmYywgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGEsIDB4ZjcsIDB4ZWQsIDB4N2EsIDB4YSwgMHhmNywgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDQ4LCAweGZiLCAweGVkLCAweDYsIDB4ZSwgMHg2NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NjQsIDB4MTUsIDB4OTYsIDB4N2UsIDB4ZjcsIDB4MzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhmNywgMHg0MiwgMHhmNywgMHgyNywgMHhkOSwgMHhiYiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGMyLCAweGZiLCAweDNmLCAweGY3LCAweDFmLCAweGZiLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWIsIDB4N2MsIDB4ODAsIDB4MTgsIDB4YjcsIDB4ZmIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGZiLCAweDNkLCAweGNmLCAweDJkLCAweDRjLCAweDM3LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjUsIDB4NjksIDB4MzgsIDB4OCwgMHhlLCAweGZjLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4YSwgMHhmNywgMHhlOCwgMHg3YSwgMHhhLCAweGY3LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlZiwgMHhmNywgMHhlZSwgMHgyNywgMHhmNywgMHhlZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODQsIDB4NiwgMHhlZiwgMHhmYiwgMHhlZSwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhmMSwgMHgzYSwgMHhhLCAweGFlLCAweGM3LCAweDMsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHgxNSwgMHhmNywgMHgyMiwgMHgzNSwgMHhhMSwgMHhhMCwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweDUsIDB4ZjgsIDB4YWYsIDB4NywgMHhmMywgMHhjZiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGZiLCAweDIyLCAweDMzLCAweDUsIDB4ZSwgMHhmYywgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweGEsIDB4ZjcsIDB4MWUsIDB4YzgsIDB4MywgMHhhZSwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGEwLCAweDc1LCAweGY3LCAweDIzLCAweGUxLCAweDUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHg3LCAweGZiLCAweDIzLCAweGUzLCAweDc2LCAweDc3LCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NSwgMHhmYywgMHhhZSwgMHg3LCAweGUsIDB4ZmMsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhhLCAweGFlLCAweGY3LCAweDEwLCAweDMsIDB4ZjcsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHgxNSwgMHg5MSwgMHg5NiwgMHg1LCAweGZiLCAweDI1LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4ZjcsIDB4MzIsIDB4ZjcsIDB4MjEsIDB4MWEsIDB4ZjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhmNywgMHgzOCwgMHhmNywgMHgyMSwgMHhiYSwgMHgxZSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDUsIDB4ZmIsIDB4NTIsIDB4NTQsIDB4ZmIsIDB4ZiwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVhLCAweDFhLCAweGZiLCAweDViLCAweGY3LCAweDFhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhmNywgMHg0OSwgMHg1OSwgMHgxZSwgMHhlLCAweGZiLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4YTIsIDB4ZjcsIDB4NTUsIDB4YjMsIDB4ZjcsIDB4NjksIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGFlLCAweGEyLCAweGY3LCAweDY2LCAweGI0LCAweGY3LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4MTQsIDB4MWMsIDB4ZjQsIDB4ZjMsIDB4MTUsIDB4ZjgsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODEsIDB4YTIsIDB4NSwgMHgyMSwgMHg1YiwgMHhlMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MWYsIDB4ZjcsIDB4YSwgMHhlNywgMHg1YywgMHgyMCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDgxLCAweDUsIDB4ZjgsIDB4NCwgMHg3LCAweDc0LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4ZmIsIDB4NSwgMHhmYiwgMHgwLCAweDY1LCAweDIyLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZjIsIDB4YjYsIDB4ZjcsIDB4MiwgMHhmNywgMHgzLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OTUsIDB4YTIsIDB4NSwgMHhmYywgMHg0LCAweDYsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg1LCAweGY2LCAweDg4LCAweGI5LCAweDMxLCAweGZiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmYiwgMHgyLCAweDIyLCAweGJiLCAweGY1LCAweDkwLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4OTUsIDB4NSwgMHhmYywgMHg0LCAweDcsIDB4YTIsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHhmNiwgMHhmNywgMHgwLCAweGM0LCAweGYwLCAweDgxLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4NjMsIDB4MjksIDB4ZmIsIDB4NSwgMHg4ZiwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NTUsIDB4M2EsIDB4YSwgMHhmNywgMHg3YywgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhhZSwgMHg4OCwgMHgxNSwgMHg5MiwgMHg4MCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4YmYsIDB4ZjcsIDB4MTEsIDB4ZjcsIDB4MCwgMHhmNywgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDU5LCAweGZiLCAweGYsIDB4ZjcsIDB4MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGMyLCAweDFlLCAweDg0LCAweDgwLCAweDUsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHhjNCwgMHhmYiwgMHgzNywgMHhmYiwgMHgxZSwgMHgxYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDU2LCAweGZiLCAweDMyLCAweGZiLCAweDI0LCAweDVhLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYywgMHhjNywgMHg1YSwgMHhhLCAweGY3LCAweDE5LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHg2LCAweDI2LCAweGY3LCAweGVkLCAweGYwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4NSwgMHgyMiwgMHg2LCAweDI1LCAweGZiLCAweGVmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZjLCAweGM3LCAweDVhLCAweGEsIDB4YWUsIDB4MTYsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGYwLCAweGY3LCAweGVkLCAweDI0LCAweGY3LCAweGVmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHg2LCAweGVmLCAweGZiLCAweGVmLCAweDUsIDB4ZSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDNkLCAweGEsIDB4ZjcsIDB4MzQsIDB4MywgMHhmNywgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGVlLCAweDYsIDB4NTQsIDB4ZjcsIDB4NCwgMHg2YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZjcsIDB4MTEsIDB4MWEsIDB4ZjcsIDB4MTIsIDB4YTksIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHhmNywgMHhiLCAweDFlLCAweDJiLCAweDYsIDB4M2EsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhmYiwgMHhjLCAweGZiLCAweDE0LCAweDFhLCAweGZiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4ZmIsIDB4MTMsIDB4ZGYsIDB4MmUsIDB4MWUsIDB4ZSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDM4LCAweGEsIDB4ZjcsIDB4YywgMHhmNywgMHgzNywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZWUsIDB4NiwgMHhkZSwgMHhlNywgMHhjZCwgMHhmNywgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweDFhLCAweGY3LCAweDE2LCAweDRiLCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhlZiwgMHgxZSwgMHgyOCwgMHg2LCAweGMwLCAweGZiLCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHgyYSwgMHhmYiwgMHgxMiwgMHgxYSwgMHhmYiwgMHgxMCwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUsIDB4NTUsIDB4ZmIsIDB4NCwgMHgxZSwgMHhlLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4MzgsIDB4YSwgMHhlMSwgMHhmNywgMHgxYiwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4MTYsIDB4OTksIDB4NywgMHgzZCwgMHg4YiwgMHhjMSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJlLCAweDhmLCAweGMwLCAweDM4LCAweDljLCAweDFmLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ODcsIDB4YzYsIDB4ZjcsIDB4MjQsIDB4MWEsIDB4ZDcsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhkOSwgMHgxZSwgMHg5OCwgMHg2MSwgMHg3LCAweDY3LCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4N2MsIDB4NzYsIDB4MWYsIDB4NmMsIDB4NzUsIDB4ODcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHgxYSwgMHg5MSwgMHhmYiwgMHgzZSwgMHg1LCAweDY0LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NjEsIDB4ODMsIDB4MWUsIDB4YjUsIDB4ODMsIDB4OTcsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgxYSwgMHg4NSwgMHhmYiwgMHgzZCwgMHg1LCAweDY4LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4YWYsIDB4NzksIDB4MWUsIDB4N2YsIDB4YTMsIDB4ZDIsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHgxYiwgMHhlLCAweGZjLCAweDhkLCAweDM4LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDFiLCAweDdhLCAweGEsIDB4YmIsIDB4NiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDhiLCAweDk5LCAweDk5LCAweDFmLCAweGFmLCAweDlkLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4YWUsIDB4MWEsIDB4ODUsIDB4ZjcsIDB4M2QsIDB4OGEsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhhNiwgMHhiNSwgMHg5MywgMHgxOSwgMHg2MSwgMHg5MywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDhkLCAweGJiLCAweDkxLCAweGY3LCAweDNlLCAweDE4LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4YTcsIDB4NmIsIDB4YTAsIDB4MWUsIDB4OWEsIDB4NzQsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg2NywgMHgxYiwgMHg2MSwgMHg3ZSwgMHg2LCAweGQ5LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NTYsIDB4MWYsIDB4MzcsIDB4NywgMHg0NSwgMHg4NywgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDc5LCAweDFlLCAweDM5LCAweDdhLCAweDhmLCAweDU2LCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4MzcsIDB4NywgMHg1NSwgMHg4YiwgMHg1NSwgMHgzZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmMsIDB4NTMsIDB4NzMsIDB4YSwgMHhmMCwgMHgyNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDEzLCAweGEwLCAweGY3LCAweGNjLCAweGY5LCAweDNhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4YTAsIDB4NSwgMHhmYiwgMHgxMywgMHg3YSwgMHhmYiwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGZiLCAweDViLCAweDFhLCAweDM2LCAweGM2LCAweDIxLCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4YzUsIDB4ZDQsIDB4ZDIsIDB4YzMsIDB4NzEsIDB4YWMsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHgxZSwgMHg3ZSwgMHg5MSwgMHg3YSwgMHg4ZiwgMHg3YywgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ODYsIDB4NzgsIDB4ODEsIDB4ODYsIDB4NzAsIDB4MWIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg2MywgMHg3MSwgMHhhMCwgMHhiNSwgMHhiZCwgMHhhZiwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFlLCAweGFiLCAweDFmLCAweGUsIDB4ZmMsIDB4NTMsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweGQwLCAweDI2LCAweGYwLCAweDEzLCAweGMwLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzgsIDB4MTUsIDB4ZjcsIDB4MTMsIDB4OWMsIDB4ZjcsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhmNywgMHg1YiwgMHgxYSwgMHhlMCwgMHg1MCwgMHhmNSwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDUxLCAweDQyLCAweDQ0LCAweDUzLCAweGE1LCAweDZhLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4MWUsIDB4OTcsIDB4ODUsIDB4OWEsIDB4ODcsIDB4OWQsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDkwLCAweDllLCAweDk1LCAweDkwLCAweGE2LCAweDFiLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4YjMsIDB4YTUsIDB4NzYsIDB4NjEsIDB4NTksIDB4NjcsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZSwgMHg2YiwgMHgxZiwgMHg5MCwgMHg3NiwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzZiwgMHhmOCwgMHhlYywgMHhmOSwgMHgzYSwgMHgxNSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDUsIDB4ZmIsIDB4YywgMHg1ZiwgMHhhLCAweDczLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4OTcsIDB4MWUsIDB4ODAsIDB4OTEsIDB4N2MsIDB4OGYsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg4LCAweDg2LCAweDdhLCAweDgxLCAweDg2LCAweDcyLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NzMsIDB4YTAsIDB4YjUsIDB4YmQsIDB4YWMsIDB4Y2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhhYiwgMHgxZiwgMHhmYiwgMHhjNCwgMHgxNiwgMHg4NiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4YiwgMHg1ZiwgMHhhLCAweDcyLCAweGFjLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MWUsIDB4ODAsIDB4OTEsIDB4N2QsIDB4OGYsIDB4N2EsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDg2LCAweDc5LCAweDgyLCAweDg2LCAweDcxLCAweDFiLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YTAsIDB4YjUsIDB4YmQsIDB4YWQsIDB4Y2MsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHgxZiwgMHhlLCAweGZjLCAweGM1LCAweGUsIDB4N2QsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlZSwgMHg5OCwgMHhmNywgMHhlMSwgMHg5OCwgMHg2LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MzksIDB4NjMsIDB4ZmYsIDB4YywgMHg5LCAweGE3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhiLCAweGY5LCAweGE4LCAweDE0LCAweGY5LCAweGRiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4MTMsIDB4MCwgMHg2MSwgMHgyLCAweDAsIDB4MSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgwLCAweGIsIDB4MCwgMHgxMSwgMHgwLCAweDE4LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgwLCAweDJjLCAweDAsIDB4MzAsIDB4MCwgMHgzOSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4MCwgMHg0MywgMHgwLCAweDRiLCAweDAsIDB4NTIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweDAsIDB4NWYsIDB4MCwgMHg2NCwgMHgwLCAweDY5LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHgwLCAweDdmLCAweDAsIDB4YmEsIDB4MCwgMHhiZiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxLCAweDExLCAweDEsIDB4MTgsIDB4MSwgMHgxZCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4MSwgMHgzZSwgMHgxLCAweDQyLCAweDEsIDB4NDYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDEsIDB4NTksIDB4MSwgMHg1ZSwgMHgxLCAweDY0LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgxLCAweDZlLCAweDEsIDB4ODUsIDB4MSwgMHg4ZCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4MSwgMHhhNSwgMHgxLCAweGFhLCAweDEsIDB4YzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDEsIDB4ZmMsIDB4MiwgMHhiLCAweDIsIDB4MTYsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDIsIDB4MWYsIDB4MiwgMHgyOSwgMHgyLCAweDM3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHgyLCAweDRiLCAweDIsIDB4NTgsIDB4MiwgMHg2NSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4MiwgMHg3ZiwgMHgyLCAweDk1LCAweDIsIDB4YTQsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDIsIDB4YmUsIDB4MiwgMHhjNCwgMHgyLCAweGNmLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHgyLCAweGVjLCAweDIsIDB4ZmUsIDB4MywgMHhmLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgzLCAweDJmLCAweDMsIDB4MzgsIDB4MywgMHg0MSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4MywgMHg1MSwgMHgzLCAweDVlLCAweDMsIDB4NmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDMsIDB4ODMsIDB4MywgMHg4OSwgMHgzLCAweDhkLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHgzLCAweGExLCAweDMsIDB4YTgsIDB4MywgMHhhZiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4MywgMHhiZCwgMHgzLCAweGM0LCAweDMsIDB4Y2IsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDMsIDB4ZDQsIDB4MywgMHhkZSwgMHgzLCAweGU4LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgzLCAweGZjLCAweDQsIDB4MCwgMHg0LCAweDksIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDQsIDB4MTksIDB4NCwgMHgxZiwgMHg0LCAweDI0LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHgzMCwgMHhhLCAweDMzLCAweGEsIDB4MWUsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGEsIDB4YiwgMHhhZSwgMHhmNywgMHhlZSwgMHgyMSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhhZSwgMHhmNywgMHhlZSwgMHgxNSwgMHgyYywgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YiwgMHgyNSwgMHhhLCAweGZiLCAweDViLCAweGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhmNywgMHgzNSwgMHhmNywgMHg1YiwgMHhmNywgMHg1YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweGY3LCAweDM1LCAweGIsIDB4MywgMHgyMywgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1YSwgMHhmYiwgMHgzNSwgMHhmYiwgMHgzNSwgMHhmYiwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4NDgsIDB4MmQsIDB4YSwgMHhiLCAweDJlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YSwgMHhiLCAweGZiLCAweDM1LCAweGZiLCAweDM1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4MWUsIDB4YiwgMHhmYiwgMHg1YiwgMHhmNywgMHgzNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweGIsIDB4NDYsIDB4YSwgMHgyNCwgMHhhLCAweDI3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiLCAweGY3LCAweDI1LCAweDMxLCAweGEsIDB4YiwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MmIsIDB4YSwgMHhiLCAweDJkLCAweGEsIDB4ZmIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDJjLCAweGEsIDB4YWUsIDB4MTYsIDB4NDAsIDB4YSwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NDgsIDB4MmYsIDB4YSwgMHhmYiwgMHg0OCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4YSwgMHhmYiwgMHg0OCwgMHhmYiwgMHgyNSwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ZjcsIDB4M2UsIDB4NSwgMHhmYiwgMHhiNSwgMHg2LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTcsIDB4MzIsIDB4ZmIsIDB4YTcsIDB4NSwgMHhmYiwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4N2UsIDB4ZmIsIDB4M2UsIDB4NSwgMHg2OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDE1LCAweGUxLCAweGY3LCAweDZjLCAweGZiLCAweDU4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZjcsIDB4N2MsIDB4N2MsIDB4YzQsIDB4ZjcsIDB4NzUsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3NSwgMHhmNywgMHg3YywgMHg5YSwgMHhmYiwgMHg1OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweGUxLCAweGZiLCAweDZjLCAweGZiLCAweDQ3LCAweGY3LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiLCAweGZiLCAweDQ3LCAweDM2LCAweGEsIDB4YiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGY4LCAweDhkLCAweDE1LCAweGFmLCAweGFlLCAweDUsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhhOSwgMHhhNiwgMHhhYywgMHgxYiwgMHhiYSwgMHhjNSwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDcxLCAweDc1LCAweDZiLCAweDcwLCAweDdhLCAweDFmLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4YzEsIDB4OGUsIDB4YjMsIDB4YmUsIDB4OTMsIDB4YjYsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMiwgMHhlOSwgMHg3MSwgMHhmNywgMHgyZSwgMHhmYiwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFiLCAweDdkLCAweDk4LCAweDdhLCAweDk1LCAweDc3LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZjcsIDB4NSwgMHhmNywgMHgxNiwgMHg1LCAweDdhLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ODMsIDB4N2QsIDB4MWYsIDB4MmYsIDB4ZmIsIDB4NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4ODQsIDB4NjEsIDB4NTAsIDB4NjgsIDB4ODcsIDB4OGIsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHgxYSwgMHhiLCAweDRmLCAweGEsIDB4MzIsIDB4YSwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmIsIDB4MjUsIDB4ZjcsIDB4MjUsIDB4ZjcsIDB4NDgsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDMwLCAweGEsIDB4MWUsIDB4YiwgMHhhMCwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweDc3LCAweDEsIDB4YiwgMHg5NSwgMHg4LCAweGIyLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4YzQsIDB4YmEsIDB4MWEsIDB4YmQsIDB4MjYsIDB4YTcsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgxZSwgMHg4YSwgMHg4ZSwgMHg5NywgMHg5YiwgMHg5NywgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDljLCAweDE5LCAweDg3LCAweDhlLCAweGIsIDB4M2YsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YiwgMHhhZSwgMHg0ZCwgMHhhLCAweGIsIDB4OTcsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhhLCAweDllLCAweDdkLCAweGEwLCAweDgxLCAweDgsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHgzYywgMHg0NSwgMHhhLCAweGIsIDB4MzgsIDB4YSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmIsIDB4MjUsIDB4ZmIsIDB4NDcsIDB4YiwgMHg5MiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDYzLCAweDc3LCAweGIsIDB4ZjcsIDB4NDcsIDB4ZjcsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY3LCAweDI1LCAweGY3LCAweDQ3LCAweGIsIDB4MTUsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhhMCwgMHhhNiwgMHhhNiwgMHhhMCwgMHg3NiwgMHg0YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjQsIDB4NCwgMHhhNiwgMHg5ZiwgMHg5ZiwgMHhhNiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDc3LCAweDRiLCAweGEsIDB4YiwgMHg1YywgMHhhLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4NzYsIDB4MzksIDB4YSwgMHhiLCAweDUwLCAweGEsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIsIDB4NTIsIDB4NWMsIDB4MWEsIDB4NTksIDB4ZjAsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHg4NiwgMHgxZSwgMHg4YywgMHg4OCwgMHg3ZiwgMHg3YiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDgxLCAweDdhLCAweDE5LCAweGIsIDB4MmIsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweGIsIDB4YTEsIDB4NmUsIDB4YTEsIDB4NmQsIDB4NjUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4OCwgMHg3MywgMHg3YiwgMHg3MiwgMHg4MiwgMHhjMywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDkwLCAweDllLCAweDhmLCAweDllLCAweDFlLCAweDZhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3YywgMHg3YiwgMHg4OSwgMHg3YywgMHgxYiwgMHhiLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3NSwgMHhhOCwgMHg3NSwgMHhhOSwgMHhiMSwgMHgxYSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweGEzLCAweDliLCAweGE0LCAweDk0LCAweDUzLCAweDc4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4NzgsIDB4ODcsIDB4NzgsIDB4MWUsIDB4ZmIsIDB4MmQsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhiLCAweGUwLCAweGY3LCAweGIsIDB4NzYsIDB4ZjcsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhmNywgMHhhMCwgMHg1NCwgMHhhLCAweGY5LCAweGVhLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhlZCwgMHgxNSwgMHhmOSwgMHhlYSwgMHhmNywgMHg4YywgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY3LCAweDhjLCAweGIsIDB4MWYsIDB4ODksIDB4ODksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDc3LCAweDc2LCAweDhjLCAweDc3LCAweDFiLCAweDg2LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg3YywgMHhiLCAweDcwLCAweDcwLCAweDc2LCAweDc3LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzcsIDB4OWYsIDB4YTYsIDB4MWUsIDB4YiwgMHhhZSwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGFlLCAweGIsIDB4ZjcsIDB4ZWUsIDB4MTUsIDB4YiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDdmLCAweGY3LCAweDEyLCAweDYyLCAweGEsIDB4NTIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4OWQsIDB4MTUsIDB4ZjcsIDB4N2UsIDB4ZjcsIDB4M2UsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhmYiwgMHgzZSwgMHgzMSwgMHhmNywgMHhhNywgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4OTYsIDB4ODAsIDB4OTksIDB4OTksIDB4OTYsIDB4OTYsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDk5LCAweDgwLCAweDk2LCAweDdkLCAweDdkLCAweDgwLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4MWUsIDB4YiwgMHg4OCwgMHg4YywgMHg4NCwgMHg5ZSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDgxLCAweDljLCAweDE5LCAweDg3LCAweDg5LCAweDUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDhhLCAweDkyLCAweDc4LCAweDk1LCAweDc5LCAweDk1LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4OGYsIDB4OGQsIDB4NSwgMHhiLCAweDc3LCAweDEsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDgzLCAweDgzLCAweDkwLCAweDk0LCAweDkxLCAweDhkLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4OTAsIDB4MWYsIDB4YTIsIDB4YjMsIDB4YWYsIDB4OTcsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg4LCAweGZiLCAweDJkLCAweGMyLCAweDE1LCAweGIsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhjOCwgMHg5MiwgMHhjMSwgMHhjNCwgMHhiOCwgMHg1ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweGZiLCAweDEsIDB4YjAsIDB4NzAsIDB4YWUsIDB4OGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhmYiwgMHgxYiwgMHg5ZCwgMHhiLCAweDg3LCAweDc5LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NjQsIDB4YSwgMHg1NSwgMHhhMSwgMHg1ZSwgMHgxYiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDZjLCAweDY2LCAweGIsIDB4YzMsIDB4MWIsIDB4YjcsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhhYywgMHhhNCwgMHgxZiwgMHg1MywgMHhhLCAweGIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg4ZCwgMHg5ZCwgMHg2MywgMHhhLCAweGMxLCAweDc1LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YjYsIDB4OTUsIDB4YWEsIDB4YjAsIDB4YiwgMHgzZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjMsIDB4MywgMHhiLCAweGY3LCAweDI3LCAweDE1LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4YTAsIDB4OTUsIDB4OWUsIDB4OTgsIDB4OCwgMHhiLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YTAsIDB4OGEsIDB4OWYsIDB4MWIsIDB4OTAsIDB4NywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGIsIDB4OTMsIDB4OTMsIDB4ODYsIDB4ODIsIDB4ODUsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg4OCwgMHg4NiwgMHgxZiwgMHg3NCwgMHg2MywgMHg2NywgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDdlLCAweDgsIDB4YiwgMHhhZSwgMHg3MCwgMHhiMCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDYyLCAweGI4LCAweGMwLCAweGMxLCAweDU5LCAweGMxLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4NTIsIDB4YzgsIDB4NzcsIDB4Y2MsIDB4YiwgMHg3YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDRiLCAweGZiLCAweDViLCAweDFhLCAweDM2LCAweGMzLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4ZTUsIDB4YzIsIDB4ZDQsIDB4ZDIsIDB4YzMsIDB4YiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGNmLCAweGFmLCAweGI4LCAweDVlLCAweGY3LCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDIyLCAweDM4LCAweGM2LCAweDgzLCAweDkyLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg0ZSwgMHg5OSwgMHhhOCwgMHg5OCwgMHg5OSwgMHg4ZCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGEzLCAweDcyLCAweDZlLCAweGFkLCAweDFmLCAweGIsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg1ZiwgMHg1NSwgMHg1OCwgMHg2YSwgMHg3MiwgMHgxZiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OTAsIDB4OGEsIDB4OTAsIDB4OTAsIDB4MWEsIDB4NzEsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDc5LCAweDg2LCAweDhjLCAweDg2LCAweDg2LCAweDFhLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4YiwgMHgxMywgMHhiMiwgMHg1YSwgMHg5NiwgMHg1NiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmIsIDB4ZGUsIDB4NmMsIDB4NzYsIDB4ZjksIDB4YTIsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGFmLCAweGY4LCAweDQ5LCAweDMsIDB4YiwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIsIDB4YzYsIDB4NTEsIDB4ZjcsIDB4YSwgMHg1ZCwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGI4LCAweGIsIDB4OWMsIDB4ZjcsIDB4MWIsIDB4Y2IsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHgxYSwgMHhlMCwgMHg1MywgMHhmNSwgMHgyYSwgMHhiLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YTEsIDB4NzYsIDB4NzEsIDB4NzEsIDB4NzUsIDB4NzUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg3NSwgMHhiLCAweGY3LCAweDRhLCAweGZiLCAweDZiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYiwgMHg3ZiwgMHgxNSwgMHhiLCAweGY3LCAweDRhLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ZjcsIDB4ODQsIDB4YTQsIDB4NzIsIDB4ZjcsIDB4NGEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweGFkLCAweGY4LCAweGE4LCAweGZjLCAweGFkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDEzLCAweGU0LCAweDgyLCAweGI5LCAweDU1LCAweDQwLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiMiwgMHg5NiwgMHg5NiwgMHg1NiwgMHhhMCwgMHhiLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4OWEsIDB4OTYsIDB4NTUsIDB4YTAsIDB4YiwgMHg3NSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDgxLCAweDc4LCAweDdlLCAweGIsIDB4ZjcsIDB4MTEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhmNywgMHgyLCAweGIsIDB4ZjcsIDB4NzgsIDB4ZjgsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhiMCwgMHhiLCAweGFlLCAweDEsIDB4YWUsIDB4YWUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OGQsIDB4NywgMHhiLCAweGY3LCAweGYzLCAweGY3LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZjMsIDB4ZjcsIDB4N2MsIDB4NSwgMHhiLCAweDdlLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ODEsIDB4NWIsIDB4NzMsIDB4YTQsIDB4YTgsIDB4NjksIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDliLCAweDdiLCAweDlkLCAweDgyLCAweDkwLCAweDkwLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4YiwgMHgxNSwgMHg5MCwgMHg4NiwgMHg5ZCwgMHg5NCwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDliLCAweDliLCAweGIsIDB4MywgMHhhZSwgMHgxNiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4ODUsIDB4OTcsIDB4MWUsIDB4ODIsIDB4OWQsIDB4ODAsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDk5LCAweDhiLCAweGY3LCAweDIsIDB4M2UsIDB4YjcsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhiLCAweGZiLCAweGFkLCAweDUsIDB4ZjcsIDB4MzUsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MTMsIDB4OTQsIDB4NTQsIDB4ZWMsIDB4MWIsIDB4YiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDhkLCAweDUsIDB4YiwgMHg1LCAweDg5LCAweDcsIDB4YgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRGaXhlZC5jIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdEZpeGVkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJhZTBmYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRGaXhlZC5jCkBAIC0wLDAgKzEsMjIwOCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworY29uc3QgdW5zaWduZWQgY2hhciBnX0ZveGl0Rml4ZWRGb250RGF0YSBbMTc1OTddID0gezB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NCwgMHgyLCAweDAsIDB4MSwgMHgxLCAweDEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDQ2LCAweDY5LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjQsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MCwgMHgxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDIzLCAweGY4LCAweDEwLCAweDAsIDB4ZjgsIDB4MmEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDJiLCAweDIsIDB4ZjgsIDB4MmIsIDB4MywgMHhmOCwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NmYsIDB4ZmIsIDB4OGQsIDB4ZjksIDB4OCwgMHhmOSwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4ODUsIDB4ZiwgMHhmOSwgMHg2YywgMHgxMSwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDNlLCAweDZiLCAweDEyLCAweDAsIDB4MTEsIDB4MSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiLCAweGQsIDB4MTEsIDB4MTksIDB4MjIsIDB4MmIsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHg0NSwgMHg0YiwgMHg0ZCwgMHg1MSwgMHg1ZCwgMHg2NSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDQ1LCAweDc1LCAweDcyLCAweDZmLCAweDQ3LCAweDYzLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NmYsIDB4NmUsIDB4NDksIDB4NGEsIDB4NDksIDB4NjQsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg1MywgMHg2MywgMHg2NSwgMHg2NCwgMHg2OSwgMHg2YywgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDYxLCAweDcyLCAweDcyLCAweDZmLCAweDc3LCAweDYyLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg3NywgMHg2ZSwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDY1LCAweDY2LCAweDc0LCAweDYxLCAweDcyLCAweDcyLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NzIsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4NjEsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2ZiwgMHg3NywgMHg3NSwgMHg3MCwgMHg2NywgMHg2MywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDZmLCAweDZlLCAweDY5LCAweDZhLCAweDZjLCAweDY5LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NzAsIDB4NzIsIDB4NjUsIDB4NzMsIDB4NjMsIDB4NzIsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg3NCwgMHg2OSwgMHg2ZiwgMHg2ZSwgMHg3MywgMHg2MywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDY5LCAweDZjLCAweDZjLCAweDYxLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4NjgsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDIwLCAweDQ2LCAweDY5LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjQsIDB4MjAsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDIyLCAweDAsIDB4OGEsIDB4MCwgMHhhYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4MCwgMHhhZCwgMHgwLCAweGFlLCAweDAsIDB4YWYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDAsIDB4MjMsIDB4MCwgMHgyNCwgMHgwLCAweGIxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHgwLCAweDI2LCAweDAsIDB4YjIsIDB4MCwgMHhiMywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4MCwgMHhiNSwgMHgwLCAweDlhLCAweDEsIDB4ODcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDAsIDB4MjgsIDB4MSwgMHg4OCwgMHgwLCAweDI5LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHgxLCAweDg5LCAweDAsIDB4YjYsIDB4MCwgMHhiNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4MSwgMHg4YSwgMHgwLCAweGI5LCAweDAsIDB4MmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDAsIDB4MmQsIDB4MCwgMHg4YywgMHgwLCAweDJlLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHgwLCAweGJhLCAweDAsIDB4MzAsIDB4MCwgMHg4ZSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4MCwgMHhiYywgMHgwLCAweGJkLCAweDAsIDB4YmUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDAsIDB4YmYsIDB4MCwgMHgzMSwgMHgwLCAweDMyLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHgwLCAweDM0LCAweDAsIDB4YzAsIDB4MSwgMHg4YiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4MCwgMHg5ZCwgMHgwLCAweDM2LCAweDAsIDB4YzEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDAsIDB4YzMsIDB4MCwgMHhjNCwgMHgwLCAweDM3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHgwLCAweDM5LCAweDAsIDB4M2EsIDB4MCwgMHhjNSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4MCwgMHgzYiwgMHgwLCAweGM3LCAweDAsIDB4NDIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDAsIDB4YzksIDB4MCwgMHg3ZCwgMHgwLCAweGNhLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgwLCAweGNiLCAweDAsIDB4NywgMHgwLCAweGNjLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgxLCAweDhkLCAweDEsIDB4OGUsIDB4MSwgMHg4ZiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MCwgMHgzZiwgMHgwLCAweDVmLCAweDAsIDB4YiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4MCwgMHhjZCwgMHgwLCAweDQzLCAweDAsIDB4M2QsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDAsIDB4NWMsIDB4MCwgMHg1ZSwgMHgwLCAweDNjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHgwLCAweDgxLCAweDAsIDB4YTAsIDB4MCwgMHg3NCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4MCwgMHg4OCwgMHgwLCAweGNlLCAweDAsIDB4ODUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDAsIDB4N2UsIDB4MCwgMHgxYiwgMHgwLCAweGQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDAsIDB4NjcsIDB4MCwgMHg0NSwgMHgwLCAweDcwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgwLCAweGExLCAweDAsIDB4ODMsIDB4MCwgMHg5ZiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgwLCAweDgyLCAweDAsIDB4OTEsIDB4MCwgMHg0NiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4MCwgMHhkMCwgMHgwLCAweGQxLCAweDAsIDB4ZDIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDAsIDB4NzksIDB4MCwgMHg4OSwgMHgwLCAweDZmLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgwLCAweGE3LCAweDAsIDB4MiwgMHgwLCAweDYwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHgwLCAweDZkLCAweDAsIDB4MTYsIDB4MCwgMHg2ZSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MCwgMHgxNSwgMHgwLCAweDYzLCAweDAsIDB4NDgsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDAsIDB4OTUsIDB4MCwgMHg3YywgMHgwLCAweDFmLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHgwLCAweDc4LCAweDAsIDB4NmIsIDB4MCwgMHg2YywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4MCwgMHg4NiwgMHgwLCAweGUsIDB4MCwgMHg0YSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4MCwgMHhkNCwgMHgwLCAweGQ1LCAweDAsIDB4ZDYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDAsIDB4NGIsIDB4MCwgMHg0YywgMHgwLCAweDRkLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHgxLCAweDkzLCAweDAsIDB4OTcsIDB4MCwgMHg5MiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4MCwgMHg4MCwgMHgwLCAweGE2LCAweDAsIDB4OTgsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDAsIDB4NGYsIDB4MCwgMHgxYSwgMHgwLCAweGQ3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDAsIDB4NTAsIDB4MCwgMHhkOCwgMHgwLCAweGQ5LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHgwLCAweDk0LCAweDAsIDB4ODcsIDB4MCwgMHhkYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MCwgMHg5YiwgMHgwLCAweDllLCAweDAsIDB4OTYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDAsIDB4OGYsIDB4MCwgMHg5MywgMHgwLCAweGRjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHgwLCAweDczLCAweDAsIDB4OSwgMHgwLCAweGEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MCwgMHhmLCAweDAsIDB4NzIsIDB4MCwgMHg3YSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHgwLCAweDljLCAweDEsIDB4OTQsIDB4MCwgMHg1MiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MCwgMHg3YiwgMHgwLCAweDMsIDB4MCwgMHg3NiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4MCwgMHg3NywgMHgwLCAweDQxLCAweDAsIDB4OCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4MCwgMHg2OCwgMHgwLCAweDUzLCAweDAsIDB4YTUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDAsIDB4NTQsIDB4MCwgMHhkZCwgMHgxLCAweDk1LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgwLCAweDFjLCAweDAsIDB4MTgsIDB4MCwgMHgxNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MCwgMHgxLCAweDAsIDB4NjIsIDB4MCwgMHg1NSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4MCwgMHgxNCwgMHgwLCAweGEzLCAweDAsIDB4YTksIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDAsIDB4OTksIDB4MCwgMHgxMywgMHgwLCAweGE0LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHgwLCAweGRlLCAweDAsIDB4ZGYsIDB4MCwgMHhlMCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4MCwgMHg0MCwgMHgwLCAweDU3LCAweDAsIDB4NTgsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDAsIDB4NWEsIDB4MCwgMHhlMiwgMHgwLCAweGUzLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHgwLCAweDViLCAweDAsIDB4ZTQsIDB4MCwgMHgxMSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4MiwgMHgwLCAweDEsIDB4MCwgMHgyLCAweDAsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE4LCAweDAsIDB4YzUsIDB4MCwgMHhmMSwgMHgxLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg0MSwgMHgxLCAweDhhLCAweDEsIDB4ZDcsIDB4MiwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4ODYsIDB4MywgMHg0LCAweDMsIDB4M2UsIDB4MywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OTIsIDB4MywgMHhiZiwgMHgzLCAweGY1LCAweDQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NTcsIDB4NCwgMHhkNCwgMHg1LCAweGIsIDB4NSwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NzEsIDB4NSwgMHhhYywgMHg1LCAweGM5LCAweDYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDMyLCAweDYsIDB4NWIsIDB4NiwgMHg3OCwgMHg2LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiZCwgMHg2LCAweGVmLCAweDcsIDB4MzksIDB4NywgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4OTUsIDB4NywgMHhkNSwgMHg4LCAweDcsIDB4OCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4YzMsIDB4OSwgMHgxYywgMHg5LCAweDM5LCAweDksIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDZkLCAweDksIDB4ODgsIDB4YSwgMHgxLCAweGEsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDhiLCAweGIsIDB4MjcsIDB4YiwgMHg4MywgMHhiLCAweGZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg4MCwgMHhkLCAweDI2LCAweGQsIDB4NWYsIDB4ZCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4ZjgsIDB4ZSwgMHgxNSwgMHhlLCAweDI1LCAweGUsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDYxLCAweGUsIDB4OTIsIDB4ZSwgMHhkOCwgMHhmLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHg1YSwgMHhmLCAweDc4LCAweGYsIDB4OWUsIDB4ZiwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDEwLCAweDEwLCAweDczLCAweDEwLCAweDg5LCAweDEwLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4YmQsIDB4MTAsIDB4ZjQsIDB4MTEsIDB4ODgsIDB4MTEsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxZCwgMHgxMiwgMHg1YiwgMHgxMiwgMHg3OSwgMHgxMiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGFlLCAweDEyLCAweGM2LCAweDEyLCAweGVjLCAweDEzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NWYsIDB4MTMsIDB4OTUsIDB4MTQsIDB4MzEsIDB4MTQsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhlMywgMHgxNCwgMHhmYiwgMHgxNSwgMHgxMCwgMHgxNSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGIzLCAweDE1LCAweGQxLCAweDE1LCAweGVkLCAweDE2LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MmUsIDB4MTYsIDB4NGYsIDB4MTYsIDB4OTYsIDB4MTYsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHgzNywgMHgxNywgMHg3NywgMHgxNywgMHhkMiwgMHgxNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGIsIDB4MTgsIDB4MWUsIDB4MTgsIDB4YTYsIDB4MTksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHg3MywgMHgxOSwgMHg5NiwgMHgxOSwgMHhkYSwgMHgxYSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDM1LCAweDFhLCAweDU4LCAweDFhLCAweGRmLCAweDFhLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NywgMHgxYiwgMHg1YiwgMHgxYiwgMHg3MSwgMHgxYiwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGE1LCAweDFiLCAweGMxLCAweDFjLCAweDM2LCAweDFjLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4OTQsIDB4MWMsIDB4YTcsIDB4MWMsIDB4YzYsIDB4MWQsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg3MCwgMHgxZCwgMHg5ZiwgMHgxZCwgMHhlNCwgMHgxZSwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDZiLCAweDFlLCAweDk4LCAweDFlLCAweGY2LCAweDFmLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NDEsIDB4MWYsIDB4N2IsIDB4MWYsIDB4YzEsIDB4MjAsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHg1YiwgMHgyMCwgMHg4MiwgMHgyMCwgMHhiMSwgMHgyMCwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDIsIDB4MjEsIDB4MjMsIDB4MjEsIDB4NjcsIDB4MjEsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg5MCwgMHgyMSwgMHhiNSwgMHgyMSwgMHhjZCwgMHgyMSwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDE1LCAweDIyLCAweDJkLCAweDIyLCAweDg1LCAweDIyLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4YywgMHgyMywgMHgyNSwgMHgyMywgMHg0YSwgMHgyMywgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweDIsIDB4MjQsIDB4MzYsIDB4MjQsIDB4OTEsIDB4MjQsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhiOSwgMHgyNSwgMHhhLCAweDI1LCAweDM2LCAweDI1LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4YzgsIDB4MjYsIDB4NTUsIDB4MjYsIDB4YjEsIDB4MjYsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhjLCAweDI3LCAweDMzLCAweDI3LCAweDUzLCAweDI3LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4NCwgMHgyOCwgMHgxZCwgMHgyOCwgMHg0MSwgMHgyOCwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGYsIDB4MjksIDB4MzMsIDB4MjksIDB4OGYsIDB4MjksIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHgzZiwgMHgyYSwgMHg5MiwgMHgyYSwgMHhlMSwgMHgyYiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4M2UsIDB4MmIsIDB4NzEsIDB4MmIsIDB4YjMsIDB4MmIsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhlZCwgMHgyYywgMHg1MiwgMHgyYywgMHg3NywgMHgyYywgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDE5LCAweDJkLCAweDY2LCAweDJkLCAweGFiLCAweDJlLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHgxZSwgMHgyZSwgMHgyNiwgMHgyZSwgMHg0OCwgMHgyZSwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDVlLCAweDJlLCAweDZjLCAweDJlLCAweDdhLCAweDJlLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4ZGEsIDB4MmYsIDB4NjYsIDB4MmYsIDB4OWYsIDB4MzAsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDk0LCAweDMxLCAweDNhLCAweDMxLCAweGU5LCAweDMyLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHgyNywgMHgzMiwgMHg3OSwgMHgzMiwgMHg5MCwgMHgzMiwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDI1LCAweDMzLCAweDYzLCAweDMzLCAweGJkLCAweDM0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4YjgsIDB4MzUsIDB4MTUsIDB4MzUsIDB4NTYsIDB4MzUsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhlMCwgMHgzNiwgMHgxZiwgMHgzNiwgMHg2NCwgMHgzNiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDliLCAweDM2LCAweGNkLCAweDM2LCAweGU0LCAweDM2LCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4MjUsIDB4MzcsIDB4NjUsIDB4MzcsIDB4YjIsIDB4MzcsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHgzNiwgMHgzOCwgMHg4ZiwgMHgzOCwgMHhlNywgMHgzOSwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDVhLCAweDM5LCAweGE3LCAweGUsIDB4OGIsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGMxLCAweGY3LCAweGI0LCAweGMxLCAweDEsIDB4OGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhhYiwgMHhlZSwgMHhiZiwgMHhmNywgMHg2MCwgMHgzLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4NjMsIDB4YzEsIDB4MzMsIDB4NiwgMHhiNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NSwgMHhmNywgMHhhYSwgMHg2LCAweGI3LCAweGZiLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDJkLCAweDU1LCAweGY3LCAweDYwLCAweGMxLCAweDU2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1ZiwgMHhmOCwgMHg5MCwgMHg1LCAweGZiLCAweDgxLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWUsIDB4NiwgMHhmYiwgMHg0NiwgMHhmYywgMHg1YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4NiwgMHhmNywgMHg0YSwgMHhmNywgMHgzYSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjcsIDB4YmEsIDB4ZjcsIDB4ZiwgMHhmYiwgMHhiYSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4YiwgMHhjMiwgMHhmNywgMHgzLCAweGMyLCAweGFjLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWIsIDB4YzEsIDB4MSwgMHhkYywgMHhjNCwgMHhmNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4OGIsIDB4YzIsIDB4ZGMsIDB4YzEsIDB4OWMsIDB4YzIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDE2LCAweGY3LCAweDVhLCAweGMyLCAweDM1LCAweDYsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzLCAweDUsIDB4ZjcsIDB4MTYsIDB4ZmIsIDB4M2EsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhmNywgMHgyZSwgMHg1NCwgMHgyOCwgMHhmYiwgMHgyYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweGRjLCAweDUzLCAweGMxLCAweGY3LCAweDNhLCAweDU1LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4ZjcsIDB4NWIsIDB4ZjcsIDB4MmMsIDB4MjUsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHhmYywgMHgyYywgMHg1NSwgMHhlNSwgMHg2LCAweGZiLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NTksIDB4NSwgMHg1NCwgMHg2LCAweGY3LCAweDQ0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4MTUsIDB4ZjcsIDB4MiwgMHhmNywgMHhiMiwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4NywgMHhlLCAweDRkLCAweGEsIDB4ZjcsIDB4NzgsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDU0LCAweGEsIDB4MywgMHg4ZSwgMHgxNiwgMHgyNCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OTUsIDB4ZjgsIDB4MTgsIDB4MTUsIDB4ZjcsIDB4YWMsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhkNCwgMHhmYiwgMHg5NiwgMHhmYiwgMHgyNCwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHhhLCAweGY3LCAweDJmLCAweGMyLCAweDEsIDB4NTQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4MmQsIDB4ZjgsIDB4ZjEsIDB4MTUsIDB4ZjcsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3LCAweGY3LCAweDIyLCAweGZiLCAweDcsIDB4YjMsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNCwgMHhmNywgMHgyYywgMHg1LCAweDNkLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhmYiwgMHgyYywgMHg1LCAweGZiLCAweDMsIDB4ZmQsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDI0LCAweGEsIDB4ZSwgMHg4YiwgMHhjMSwgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweGFhLCAweGMxLCAweGRhLCAweGY3LCAweDksIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhmNywgMHg2MywgMHg3MywgMHhkYywgMHhjYSwgMHhkYywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYwLCAweDEzLCAweGY2LCAweGY3LCAweGRlLCAweGY5LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YSwgMHhmYiwgMHgyNCwgMHhmYiwgMHg5LCAweDcyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0YiwgMHhmZCwgMHg4ZCwgMHgxNSwgMHgyZCwgMHhhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlOSwgMHgzOSwgMHhhLCAweGUsIDB4NGQsIDB4YSwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGEsIDB4MTcsIDB4OGUsIDB4MTYsIDB4MjUsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGY3LCAweDMsIDB4ZjcsIDB4YmIsIDB4ZjcsIDB4YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDUsIDB4ZmIsIDB4OWYsIDB4ZjgsIDB4N2QsIDB4NzksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI0LCAweDUsIDB4ZSwgMHg0ZCwgMHhhLCAweGIwLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4YmUsIDB4MTIsIDB4OGUsIDB4ZjcsIDB4NjMsIDB4ODMsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhjMCwgMHg5MiwgMHhmNywgMHg2MCwgMHgxMywgMHhmYiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVlLCAweGY5LCAweDQ3LCAweDE1LCAweDU4LCAweGI0LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4YmUsIDB4YjQsIDB4YjEsIDB4YmUsIDB4YmUsIDB4NjIsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1OCwgMHg2MiwgMHg2MiwgMHg1OCwgMHgxZSwgMHhiZSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGExLCAweDlkLCAweDlkLCAweGExLCAweGExLCAweDlkLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NzUsIDB4NzksIDB4NzksIDB4NzUsIDB4NzUsIDB4NzksIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgxZSwgMHgxMywgMHhmZCwgMHg4MCwgMHhmYiwgMHg4ZSwgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweDE1LCAweDI0LCAweGEsIDB4ZSwgMHg4YiwgMHhjMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YzEsIDB4ZjcsIDB4YTcsIDB4YzEsIDB4ZGQsIDB4YmMsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGEsIDB4MywgMHhmNywgMHgzMSwgMHhmOSwgMHgxNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDkzLCAweDllLCAweGI0LCAweGJjLCAweDFiLCAweGExLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4N2MsIDB4YTAsIDB4MWYsIDB4NzksIDB4YTQsIDB4YTcsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHgxYiwgMHhjZiwgMHhhZCwgMHhjYSwgMHhiMSwgMHg5NiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDk0LCAweDUsIDB4NzMsIDB4ODMsIDB4NzIsIDB4NjYsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3NSwgMHg3YSwgMHg5ZCwgMHg5YywgMHg3NSwgMHgxZiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDcyLCAweDlhLCAweDYzLCAweDFiLCAweDUyLCAweDViLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4NzgsIDB4MWYsIDB4MjMsIDB4ZmQsIDB4MjEsIDB4MTUsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4OGIsIDB4YzEsIDB4ZjcsIDB4NWIsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhjMSwgMHgxMiwgMHhmNywgMHhiLCAweGMyLCAweGY3LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4NzQsIDB4YzgsIDB4MTMsIDB4ZjQsIDB4YjUsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg2LCAweGY3LCAweDE3LCAweGUzLCAweGI2LCAweGY3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHg0YiwgMHhiNSwgMHg0YiwgMHg5NywgMHgxZiwgMHgxMywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDliLCAweGIwLCAweGM3LCAweGMxLCAweDFhLCAweGY3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhhYSwgMHhmYiwgMHhjLCAweDFlLCAweGZiLCAweGEzLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZmMsIDB4NWEsIDB4M2UsIDB4NiwgMHhmNywgMHgxOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDE1LCAweGY3LCAweDVmLCAweDcsIDB4ZjcsIDB4MmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHg5MiwgMHgyNCwgMHgzMiwgMHgzNCwgMHg3OSwgMHg1NSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIzLCAweGZiLCAweDhmLCAweDE1LCAweGY3LCAweDU4LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmNCwgMHhmNywgMHg1ZCwgMHhmNywgMHhlLCAweDdjLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4MmUsIDB4N2YsIDB4NGEsIDB4MWYsIDB4ZSwgMHg3OSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDdlLCAweGMxLCAweDEsIDB4YjksIDB4YzMsIDB4ZjgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHgzLCAweGY4LCAweDliLCAweGY1LCAweDE1LCAweDY0LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4NmMsIDB4NDcsIDB4MWIsIDB4ZmIsIDB4OSwgMHgyYSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMyLCAweGY3LCAweDNmLCAweGY3LCAweDFmLCAweGNlLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4ZDUsIDB4NjQsIDB4NTksIDB4YWEsIDB4MWYsIDB4MzEsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3ZCwgMHg1NSwgMHg0ZSwgMHg3LCAweGJkLCAweDU2LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NTYsIDB4MWIsIDB4ZmIsIDB4MzEsIDB4ZmIsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZiLCAweDJkLCAweGZiLCAweDM5LCAweGVjLCAweGZiLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDEsIDB4ZGEsIDB4ZTgsIDB4YTksIDB4YjgsIDB4YzgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweDE2LCAweDc2LCAweGY3LCAweDNmLCAweGJmLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4YmUsIDB4MSwgMHhiZCwgMHhjNCwgMHhmOCwgMHgxNSwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4N2MsIDB4ZmIsIDB4YiwgMHgxNSwgMHg4MywgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDczLCAweGE3LCAweDFiLCAweGFkLCAweGIwLCAweGEwLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4N2EsIDB4YTgsIDB4NmYsIDB4OTQsIDB4MWYsIDB4OGQsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGU2LCAweGQ5LCAweGEzLCAweGI1LCAweGM5LCAweDFmLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4NSwgMHg2NiwgMHg1NSwgMHg0NywgMHg3MiwgMHg0NiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE1LCAweDI5LCAweGUxLCAweGY3LCAweDI4LCAweGY3LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4YmIsIDB4ZDcsIDB4Y2MsIDB4YzcsIDB4NmUsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHgxZiwgMHgzNSwgMHhjNCwgMHhmNywgMHg2NiwgMHg1MiwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YmQsIDB4NDMsIDB4NTksIDB4OTIsIDB4NTQsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHgyMSwgMHhmYiwgMHgxMSwgMHhmYiwgMHgyNCwgMHhmYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGZiLCAweGUsIDB4ZjcsIDB4MjgsIDB4NzAsIDB4MWYsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg1LCAweDhmLCAweDk0LCAweDk0LCAweDhiLCAweDk0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4OTcsIDB4N2QsIDB4N2YsIDB4NzYsIDB4N2QsIDB4ODEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg3YiwgMHg5MCwgMHg5YSwgMHg4MiwgMHgxZiwgMHhlLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgzLCAweGM0LCAweGY3LCAweGU2LCAweGM2LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHgxNiwgMHhmNywgMHg3YSwgMHg2LCAweGY3LCAweDIxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4YzQsIDB4ZjcsIDB4N2IsIDB4ZjcsIDB4NjIsIDB4ZmIsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhmYiwgMHgzOSwgMHgxZiwgMHhmYiwgMHg3YSwgMHg1NCwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDU4LCAweDNlLCAweDYsIDB4ZjcsIDB4MWEsIDB4MTYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhlYiwgMHg3LCAweGY3LCAweDMxLCAweGUwLCAweDQ3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4ZmIsIDB4MzUsIDB4MzEsIDB4NDMsIDB4ZmIsIDB4MmMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDhiLCAweGMwLCAweGY3LCAweDVjLCAweGMxLCAweGY3LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4MSwgMHhmNywgMHgxYSwgMHhjMywgMHhmNywgMHg3LCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4YzMsIDB4MywgMHhiZiwgMHgxNiwgMHhmOCwgMHg2NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDUzLCAweGZiLCAweDFhLCAweGZiLCAweGE0LCAweGY3LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHgzOSwgMHhjNCwgMHhmNywgMHg2ZiwgMHg1MiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcsIDB4ZjcsIDB4NWQsIDB4ZjcsIDB4YTQsIDB4ZmIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhmNywgMHg1MCwgMHhmYywgMHg2NiwgMHg1NSwgMHhkZCwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDM5LCAweDYsIDB4ZSwgMHg0NywgMHhhLCAweGY3LCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZmUsIDB4MTUsIDB4ZjcsIDB4YjgsIDB4ZjAsIDB4NjksIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhMywgMHhmYiwgMHgyNSwgMHg1LCAweGZiLCAweDE4LCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4MTUsIDB4MmYsIDB4YSwgMHhlLCAweDRlLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg3NywgMHgxMiwgMHg2MSwgMHhhLCAweDE3LCAweGY3LCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NSwgMHgxNSwgMHgxMywgMHhmZSwgMHhmNywgMHgyZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjcsIDB4MjksIDB4ZmIsIDB4NywgMHhiNSwgMHg5ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGY3LCAweDJjLCAweDUsIDB4MzksIDB4NiwgMHhmYiwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJiLCAweDUsIDB4NDQsIDB4ZmQsIDB4MTgsIDB4MTUsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4NGUsIDB4YSwgMHhlNSwgMHhmNywgMHg4LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWEsIDB4YzIsIDB4OTMsIDB4ZTAsIDB4Y2IsIDB4ZTEsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhkZCwgMHhjMywgMHgxMywgMHhmZSwgMHg4MCwgMHhmNywgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDIzLCAweDE1LCAweGUxLCAweGY3LCAweDgsIDB4MzUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI5LCAweGZiLCAweDgsIDB4MTUsIDB4ZTAsIDB4ZjcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDYsIDB4ZmIsIDB4MjYsIDB4ZmQsIDB4OTcsIDB4MTUsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDYsIDB4MTMsIDB4ZmQsIDB4ODAsIDB4MmUsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4YSwgMHhiZSwgMHgxNiwgMHgyZiwgMHhhLCAweGY4LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YzksIDB4MTUsIDB4OTYsIDB4YTksIDB4ZmIsIDB4YTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg2OSwgMHg0MiwgMHg1LCAweGUsIDB4OGIsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhjMCwgMHhmNywgMHg2MywgMHhjMSwgMHgxLCAweGY3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhmNywgMHhlYiwgMHhjYiwgMHgzLCAweGE3LCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NiwgMHhmNywgMHgzNSwgMHhmNywgMHgxYSwgMHhjNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGY3LCAweDY4LCAweGZiLCAweDMzLCAweGM1LCAweGZiLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4NzIsIDB4NTUsIDB4ZGMsIDB4ZmIsIDB4NjMsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhkOSwgMHhmYiwgMHg1NiwgMHgzYSwgMHg2LCAweGY3LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4NTYsIDB4ZjcsIDB4NGQsIDB4YzAsIDB4ZmIsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2MywgMHhlMCwgMHg3LCAweGY3LCAweDM3LCAweGVhLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmQsIDB4ZmIsIDB4M2IsIDB4NDEsIDB4NDQsIDB4ZmIsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDhiLCAweGJmLCAweGY3LCAweDI3LCAweGJmLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4ZjcsIDB4MmIsIDB4YmUsIDB4MSwgMHhkOCwgMHhjNywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGM2LCAweDMsIDB4OGUsIDB4ZjcsIDB4NTcsIDB4MTUsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDksIDB4YWEsIDB4ZTgsIDB4M2QsIDB4ZjcsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhkZSwgMHhkYywgMHhhNiwgMHhiNiwgMHhjYywgMHgxZiwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDUsIDB4NjUsIDB4NTMsIDB4NDQsIDB4NzIsIDB4NDQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgzNSwgMHhiOCwgMHhlZCwgMHg2YiwgMHgxZiwgMHhmNywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTEsIDB4YmYsIDB4NSwgMHhmYiwgMHhhNCwgMHg2LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4YTcsIDB4OGQsIDB4OWIsIDB4MWUsIDB4ZjcsIDB4YjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGMwLCAweDUsIDB4ZmIsIDB4YzEsIDB4NiwgMHhlNCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGM5LCAweGYwLCAweDFiLCAweGQ1LCAweGQ1LCAweDczLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MWYsIDB4M2UsIDB4YzYsIDB4ZjcsIDB4NTMsIDB4NTAsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGFjLCAweDU2LCAweDU0LCAweDliLCAweDNlLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MjgsIDB4MzMsIDB4ZmIsIDB4NiwgMHg2ZSwgMHgxZiwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NzUsIDB4NTYsIDB4NSwgMHhkNSwgMHg2LCAweDcwLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4OGMsIDB4ODAsIDB4MWUsIDB4NTUsIDB4NiwgMHhlLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZjcsIDB4NWYsIDB4YzIsIDB4ZjcsIDB4NTYsIDB4YzIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE4LCAweGMyLCAweGY3LCAweDM1LCAweGMyLCAweGUzLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjMSwgMHgxNiwgMHhmNywgMHg5YywgMHhjMiwgMHhmYiwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVmLCAweGY3LCAweDM1LCAweDM4LCAweGMyLCAweGY3LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4MzcsIDB4ZmIsIDB4MzUsIDB4ZjcsIDB4NTYsIDB4ZjcsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMSwgMHhjMiwgMHhmNywgMHg0OCwgMHhmYywgMHg4MCwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGZjLCAweDU4LCAweDNkLCAweDYsIDB4ZSwgMHg3OSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM5LCAweGMyLCAweGY3LCAweGEwLCAweGMyLCAweDEsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhmOCwgMHgxMiwgMHhjMiwgMHgzLCAweGY3LCAweGNjLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3YiwgMHg2YSwgMHg0OCwgMHg3OSwgMHg1NCwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDM3LCAweGY3LCAweDgsIDB4ZjcsIDB4MTIsIDB4ZjcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweDQzLCAweGEsIDB4MjMsIDB4ZmIsIDB4MWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhmYiwgMHgyMSwgMHhkZCwgMHg1MywgMHhhLCAweGUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmNywgMHgzYiwgMHhjMiwgMHhmNywgMHg5ZSwgMHhjMiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YzUsIDB4ZjgsIDB4MTEsIDB4YzIsIDB4MywgMHhmNywgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGEsIDB4NzYsIDB4NGIsIDB4NjcsIDB4N2UsIDB4NTQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHgzOCwgMHhmNywgMHg4LCAweGY3LCAweDEyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4ZjcsIDB4MSwgMHg0MywgMHhhLCAweDI0LCAweGZiLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzcsIDB4ZmIsIDB4MjEsIDB4ZGMsIDB4NTMsIDB4YSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDYsIDB4MzcsIDB4YSwgMHg4YiwgMHhjMiwgMHhmNywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGY3LCAweDViLCAweGMyLCAweDEsIDB4ZjcsIDB4MSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE2LCAweGMxLCAweDMsIDB4YWIsIDB4MTYsIDB4ZjcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgzMiwgMHhmNywgMHg1YSwgMHhmNywgMHhhNiwgMHhmYiwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDU0LCAweGY3LCAweDZmLCAweGMyLCAweDNlLCAweGY4LCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4YzIsIDB4ZmIsIDB4NjUsIDB4NTQsIDB4ZDksIDB4ZmIsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhNiwgMHhmNywgMHg1YiwgMHhkYSwgMHhjMiwgMHhmYiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGQ4LCAweGZjLCAweDU4LCAweDNlLCAweDYsIDB4ZSwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4YTMsIDB4YzIsIDB4MywgMHhlYiwgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweGMyLCAweGZiLCAweDQ2LCAweGY4LCAweDU4LCAweGY3LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZmMsIDB4MTEsIDB4NTQsIDB4ZjcsIDB4MzYsIDB4ZmMsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MywgMHg2LCAweGUsIDB4NzksIDB4YzMsIDB4ZjgsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgxLCAweGVjLCAweGM1LCAweGY3LCAweGQsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhjNCwgMHgzLCAweGEzLCAweDc5LCAweDE1LCAweGY3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4NDAsIDB4ZjgsIDB4NjgsIDB4ZDEsIDB4YzMsIDB4ZmIsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhkMywgMHhmYywgMHg2OCwgMHg0MiwgMHg2LCAweGY3LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MTUsIDB4ODUsIDB4OGMsIDB4YWEsIDB4NDQsIDB4ZjEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiLCAweDhjLCAweGY3LCAweDI0LCAweGMyLCAweDFmLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZGEsIDB4NSwgMHhiNywgMHhjMiwgMHhmYiwgMHg0YywgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweDYsIDB4OGEsIDB4ZmIsIDB4ZDksIDB4NSwgMHg2ZiwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGMsIDB4NDUsIDB4NzEsIDB4NWEsIDB4OTUsIDB4N2YsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGEsIDB4MSwgMHhmNywgMHhhMywgMHhjNSwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZjgsIDB4ZmUsIDB4MTUsIDB4ZjcsIDB4YzcsIDB4ZjIsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHhmYiwgMHhiMSwgMHhmYiwgMHgyNSwgMHg1LCAweDQ0LCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4MTUsIDB4MzIsIDB4YSwgMHhlLCAweDZjLCAweGEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEzLCAweGM1LCAweDMsIDB4ZjcsIDB4MjUsIDB4ZjgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgyZSwgMHhmNywgMHg3LCAweGY3LCAweDMwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhiNywgMHg5ZCwgMHhmYiwgMHgzMSwgMHhmNywgMHgyYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4NiwgMHhmYiwgMHgyZiwgMHhmYiwgMHgyYywgMHg1LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4ZCwgMHgxNSwgMHgzMiwgMHhhLCAweGUsIDB4NmMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGY3LCAweDgsIDB4MSwgMHhmNywgMHhhMywgMHhjNSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTYsIDB4ZjksIDB4MjAsIDB4NzYsIDB4YSwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgsIDB4NzYsIDB4YSwgMHgzNiwgMHhmZCwgMHg5NCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGEsIDB4ZSwgMHg4YiwgMHhjMSwgMHhmOCwgMHg1ZSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGY3LCAweDgsIDB4MTIsIDB4ZjcsIDB4OTUsIDB4ZTUsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHgxMywgMHhlOCwgMHhlYiwgMHgxNiwgMHhmOCwgMHgyYywgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQzLCAweGY4LCAweDVlLCAweDQyLCAweGEsIDB4ZmMsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MywgMHg2LCAweDEzLCAweGYwLCAweGY3LCAweDM1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4NzYsIDB4YSwgMHhlLCAweDZjLCAweGEsIDB4MSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGY3LCAweDhlLCAweGM1LCAweDMsIDB4ZWIsIDB4MTYsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGI5LCAweGY5LCAweDJkLCAweDE1LCAweGY3LCAweGM4LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4YTksIDB4ZmIsIDB4YWYsIDB4ZjcsIDB4MjUsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4YmEsIDB4ZjgsIDB4NzIsIDB4YzIsIDB4MSwgMHhiNywgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEyLCAweGMwLCAweDMsIDB4YjcsIDB4Y2EsIDB4MTUsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhkNywgMHg3OSwgMHhkMCwgMHgxYiwgMHhmNywgMHgzMSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweGU5LCAweDFmLCAweGY3LCAweGRhLCAweGY3LCAweDFhLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MTUsIDB4NTQsIDB4ZjcsIDB4NWEsIDB4ZmIsIDB4ZDksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDgwLCAweDQ3LCAweGZiLCAweDYsIDB4NTAsIDB4MzUsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHhhLCAweDhiLCAweGMxLCAweGY4LCAweDU5LCAweGMyLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHhjMCwgMHhmNywgMHg0NywgMHhmNywgMHg1OSwgMHgzLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4NzEsIDB4YzEsIDB4MzIsIDB4ZjcsIDB4MzgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGRkLCAweGU2LCAweGZiLCAweGEsIDB4YmQsIDB4MmQsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHgxOSwgMHhmNywgMHgyNiwgMHhjMSwgMHhmYiwgMHg2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhlYSwgMHg0YywgMHhmMCwgMHg0NCwgMHhkZSwgMHhmNywgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQyLCAweDE4LCAweGQzLCAweGMyLCAweGZiLCAweDU5LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4NiwgMHhmYiwgMHg4MSwgMHhmYiwgMHg3MywgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4ZDksIDB4YzIsIDB4ZmIsIDB4NjYsIDB4NTQsIDB4ZGEsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHgzYywgMHg3LCAweGUsIDB4NDYsIDB4YSwgMHhmNywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGY3LCAweGI3LCAweGMyLCAweDMsIDB4YjksIDB4MTYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHhmNywgMHg4YiwgMHg1NCwgMHhmYiwgMHg1NCwgMHhmYiwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDU4LCAweGY3LCAweDExLCAweGMyLCAweGZiLCAweGIyLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4ZmMsIDB4NTgsIDB4MjEsIDB4NiwgMHhlLCAweDc1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZCwgMHhjMywgMHhmNywgMHhiNCwgMHhjMywgMHgzLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjgsIDB4OGYsIDB4ZjcsIDB4OTEsIDB4NTMsIDB4ZmIsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiNCwgMHhmNywgMHg0ZSwgMHg2LCAweGY3LCAweDQzLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhjMiwgMHg3LCAweGZiLCAweDQzLCAweDQ0LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhmNywgMHgxMiwgMHhjMSwgMHhmYiwgMHhiNSwgMHg1NSwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgwLCAweDcsIDB4MzcsIDB4NjksIDB4NSwgMHg1NSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4YWQsIDB4NSwgMHhmYiwgMHgzOCwgMHgyMCwgMHg3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHhhLCAweGQxLCAweGMzLCAweGY3LCAweGYyLCAweGMzLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHgxNiwgMHhmNywgMHgzYSwgMHhjMiwgMHg0ZSwgMHhmOCwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDYsIDB4ZjcsIDB4MjYsIDB4ZmMsIDB4ZSwgMHg1LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgyMywgMHhmOCwgMHhlLCAweDUsIDB4OTUsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1MiwgMHg1NCwgMHhmNywgMHgzNCwgMHhjMiwgMHg1YywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweGI5LCAweGMyLCAweGZiLCAweDI1LCAweDYsIDB4ZmIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlYiwgMHhmYiwgMHgxOSwgMHhmNywgMHhlYiwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4NTQsIDB4YmMsIDB4ZmMsIDB4NTgsIDB4NWEsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4YSwgMHhlNCwgMHhjNCwgMHhmNywgMHhjZCwgMHhjMywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4MTYsIDB4ZjcsIDB4OGQsIDB4YzIsIDB4ZmIsIDB4MiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDYsIDB4ZjcsIDB4YmEsIDB4ZmMsIDB4NzgsIDB4NSwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDhmLCAweGQ5LCAweGMyLCAweGZiLCAweDkzLCAweDU0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhmYywgMHg0NCwgMHg2LCAweGZiLCAweGI5LCAweGY4LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgzMywgMHg1NCwgMHhkZCwgMHhmYywgMHg1OCwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg4YywgMHhiZiwgMHhmOCwgMHg1YiwgMHhjMCwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDk5LCAweGJjLCAweDEsIDB4ZTQsIDB4YzQsIDB4ZjcsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgzLCAweDkyLCAweDhjLCAweDE1LCAweGY3LCAweDhkLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MiwgMHhmOCwgMHg0NSwgMHg2LCAweGY3LCAweGJhLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NSwgMHhkNiwgMHhmOCwgMHg4ZiwgMHhkOSwgMHhjMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDU2LCAweGY3LCAweDIsIDB4ZmMsIDB4NDcsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweGY4LCAweDdjLCAweDUsIDB4ZmIsIDB4MzMsIDB4NTYsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg1YiwgMHgzOSwgMHg2LCAweGY3LCAweDJlLCAweGY4LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OWYsIDB4OTMsIDB4OWYsIDB4YjUsIDB4YmQsIDB4MWIsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg3OCwgMHg3OSwgMHhhNCwgMHgxZiwgMHg3YSwgMHhhMywgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGFmLCAweDFiLCAweGQyLCAweGFlLCAweGNhLCAweGIzLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NTcsIDB4OTQsIDB4NSwgMHg3MiwgMHg4MSwgMHg3MiwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDFiLCAweDcxLCAweDdiLCAweDljLCAweDllLCAweDcxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4NzcsIDB4NzIsIDB4OTgsIDB4NjQsIDB4MWIsIDB4NTAsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg1NSwgMHg3OCwgMHgxZiwgMHhlLCAweDc5LCAweGMyLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YzIsIDB4MSwgMHhiNiwgMHhjMiwgMHhmOCwgMHgyMiwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YjYsIDB4ZjcsIDB4YTcsIDB4MTUsIDB4ZmIsIDB4MzgsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNSwgMHhmNywgMHgzMiwgMHhmNywgMHgzNiwgMHhlZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY3LCAweDNiLCAweGY3LCAweDE2LCAweDRiLCAweGY3LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTcsIDB4ZmIsIDB4NDUsIDB4M2QsIDB4ZmIsIDB4MzgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHgxZSwgMHhjMiwgMHgxNiwgMHhlZSwgMHhiOSwgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJkLCAweGY3LCAweDJkLCAweGI5LCAweGZiLCAweDJlLCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWUsIDB4M2QsIDB4MjcsIDB4ZmIsIDB4ZCwgMHhmYiwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4ZWMsIDB4ZjcsIDB4MjEsIDB4MWUsIDB4ZSwgMHg4NywgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRmLCAweGMyLCAweGY3LCAweDZjLCAweGMxLCAweDEyLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZjcsIDB4ODEsIDB4YzMsIDB4ZDIsIDB4YzIsIDB4YTgsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmOCwgMHg1LCAweGJkLCAweDE1LCAweGY3LCAweDYwLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4YzIsIDB4ZjcsIDB4NGMsIDB4NTQsIDB4NGIsIDB4NDQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg3LCAweDEzLCAweGZhLCAweGY3LCAweDJmLCAweDI3LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmUsIDB4ZmIsIDB4YWMsIDB4NiwgMHhmYiwgMHg2NCwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFhLCAweGZiLCAweDJiLCAweGZiLCAweDFkLCAweGQzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4ZjcsIDB4NTYsIDB4MWYsIDB4ZjcsIDB4YmEsIDB4ZjcsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHgyMywgMHg2LCAweGZiLCAweDY3LCAweDE2LCAweGZiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4MjQsIDB4ZDMsIDB4ZjcsIDB4MzQsIDB4MWEsIDB4ZjcsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhjZCwgMHhmNywgMHgxYSwgMHg4NSwgMHgxZSwgMHhlLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg2ZCwgMHg3NywgMHg1NywgMHhhLCAweGY3LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZmUsIDB4MTUsIDB4ZjcsIDB4YjAsIDB4ZjAsIDB4NmEsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5YiwgMHhmYiwgMHgyNSwgMHg1LCAweGZiLCAweDFhLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyMCwgMHhhLCAweGUsIDB4NjQsIDB4YSwgMHhkMSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweGEsIDB4ZjcsIDB4MzIsIDB4ZjksIDB4NSwgMHg0OSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4ZmIsIDB4ZmYsIDB4MjAsIDB4YSwgMHhlLCAweDY0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhmNywgMHg5LCAweDEsIDB4YjYsIDB4YzEsIDB4ZTksIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhkZSwgMHhkYywgMHhjMywgMHgzLCAweGY3LCAweGU1LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4NjIsIDB4YSwgMHhmYiwgMHgyNiwgMHhmYiwgMHg5LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgyOCwgMHhmYywgMHg3NiwgMHgyMCwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhhLCAweGY3LCAweDQ5LCAweDc3LCAweDU3LCAweGEsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhYiwgMHgyMCwgMHhhLCAweGM2LCAweGY4LCAweDJmLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjAsIDB4NDUsIDB4OTYsIDB4YTksIDB4ZmIsIDB4OWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDUsIDB4ZSwgMHg3YSwgMHg3NiwgMHhhNSwgMHhjMiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGMyLCAweDljLCAweDc3LCAweDEyLCAweGIyLCAweGMyLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4YzQsIDB4MTMsIDB4ZGMsIDB4YzEsIDB4ODUsIDB4MTUsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhjMiwgMHhkNiwgMHg1LCAweDZjLCAweGI0LCAweGJlLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4MWIsIDB4ZjcsIDB4MzYsIDB4ZWIsIDB4ZjcsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhiZiwgMHg3YywgMHhlMSwgMHg1YSwgMHhjZCwgMHgxZiwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDYwLCAweGFjLCAweDU2LCAweDQ0LCAweDUsIDB4MTMsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg2NSwgMHg1OSwgMHhhMSwgMHg0OCwgMHgxYiwgMHhmYiwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGZiLCAweDMxLCAweGZiLCAweDIxLCAweDM4LCAweGE1LCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4NTUsIDB4MWYsIDB4ZDQsIDB4OTMsIDB4MTUsIDB4ZjcsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmZiwgMHg1LCAweGFkLCAweDU2LCAweDkzLCAweDQ5LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZmIsIDB4MTMsIDB4NDYsIDB4ZmIsIDB4NywgMHhmYiwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDYzLCAweDlhLCAweGEzLCAweDZiLCAweDFlLCAweDY1LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NjksIDB4YjcsIDB4NzgsIDB4YzYsIDB4YzksIDB4MWEsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhmNywgMHgzMCwgMHhmNywgMHgyZSwgMHhjMCwgMHhiMywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGE5LCAweDFlLCAweGUsIDB4NjQsIDB4YSwgMHhjYywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGJjLCAweDU3LCAweGEsIDB4ZjcsIDB4M2MsIDB4ZjksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg5ZiwgMHg5MiwgMHg5ZSwgMHhiNSwgMHhiYywgMHgxYiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDdjLCAweDc5LCAweGExLCAweDFmLCAweDdiLCAweGEwLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YjAsIDB4MWIsIDB4Y2YsIDB4YWQsIDB4YzYsIDB4YjIsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg1OCwgMHg5NCwgMHg1LCAweDczLCAweDgyLCAweDc1LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MWIsIDB4NzMsIDB4N2IsIDB4OWEsIDB4OWQsIDB4NzUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg3OCwgMHg3MiwgMHg5OSwgMHg2MSwgMHgxYiwgMHg1MiwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDU1LCAweDc4LCAweDFmLCAweDQxLCAweGZiLCAweGZlLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDhiLCAweGMyLCAweGY3LCAweDFjLCAweGMxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YzEsIDB4MSwgMHhmNywgMHgxZSwgMHhjMiwgMHhmNywgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDMsIDB4YzcsIDB4MTYsIDB4ZjcsIDB4YjIsIDB4YzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhmNywgMHgxYywgMHhmNywgMHgxYSwgMHg2LCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhjYSwgMHhmNywgMHhlLCAweGUxLCAweDUwLCAweGVmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4MWYsIDB4ZmIsIDB4YTAsIDB4NTUsIDB4ZDksIDB4ZmMsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg2LCAweGY3LCAweDE5LCAweGY3LCAweDUyLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4ZjcsIDB4MTgsIDB4NywgMHhkYiwgMHhkYSwgMHg2YSwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDM3LCAweDZjLCAweDQyLCAweDFmLCAweGUsIDB4ZmIsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGI2LCAweGY3LCAweDExLCAweDU2LCAweGMwLCAweGY4LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4MTIsIDB4YjYsIDB4YzIsIDB4ZjgsIDB4MjYsIDB4YzQsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmNywgMHgxNiwgMHgzMSwgMHgxNSwgMHhhMCwgMHg1ZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YjgsIDB4YWYsIDB4OWIsIDB4YjksIDB4MWIsIDB4YWEsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4MCwgMHhhNCwgMHgxZiwgMHg4MSwgMHhhMiwgMHhhNSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDFiLCAweGFlLCAweGFlLCAweDk4LCAweGExLCAweGE1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YjgsIDB4NSwgMHg3ZCwgMHg3NiwgMHg3MSwgMHg4MSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDcyLCAweDc0LCAweDk1LCAweDk1LCAweDczLCAweDFmLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NzEsIDB4OTUsIDB4NmUsIDB4MWIsIDB4N2MsIDB4N2MsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3YywgMHgxZiwgMHgxMywgMHhiYywgMHg5OSwgMHg5MiwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDk3LCAweDk2LCAweDgsIDB4ZjcsIDB4MmEsIDB4ZjcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4ZjcsIDB4NDIsIDB4ZjcsIDB4MzIsIDB4M2YsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmYiwgMHg0YSwgMHhmYiwgMHgzMywgMHgyYSwgMHhmYiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMzLCAweGZiLCAweDI0LCAweGNmLCAweGZiLCAweDAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg2NiwgMHgxZiwgMHg3MCwgMHg3MCwgMHg1ZiwgMHg3MCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDgsIDB4NmIsIDB4ZjcsIDB4ZmQsIDB4MTUsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhmNywgMHgxMywgMHhmNywgMHg3LCAweGY3LCAweDEzLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZiwgMHhmYiwgMHgxYSwgMHhmYiwgMHg0YSwgMHhmYiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDQ5LCAweDQ4LCAweGZiLCAweDE4LCAweGMxLCAweGY3LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHg4YiwgMHhjMiwgMHhmNywgMHg1NSwgMHhjMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGMyLCAweDEsIDB4ZjUsIDB4YzIsIDB4ZjcsIDB4YWMsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGE0LCAweDE2LCAweGY3LCAweDZlLCAweGMyLCAweDM5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4ZjcsIDB4OCwgMHg2LCAweGIyLCAweDVjLCAweGU0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4YjIsIDB4NDcsIDB4OCwgMHhmNywgMHgxNywgMHhjMiwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NmEsIDB4YzEsIDB4NGYsIDB4ZTgsIDB4NjMsIDB4YmIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweDkwLCAweGU1LCAweGFiLCAweGY3LCAweGMsIDB4MWEsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHhkMiwgMHhmYiwgMHhlLCAweDFlLCAweGZiLCAweGMxLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4ZmMsIDB4NTgsIDB4M2EsIDB4NiwgMHhmNywgMHgxYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDE1LCAweGY3LCAweDYwLCAweGY3LCAweDI2LCAweDcsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHg3NCwgMHgzYywgMHgyMCwgMHgyNCwgMHg5MCwgMHg0MSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDY4LCAweDhiLCAweDY5LCAweDFiLCAweGUsIDB4NzcsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg3NiwgMHhmOCwgMHhhZSwgMHhiZiwgMHg3ZSwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGMyLCAweDZlLCAweGMxLCAweGY3LCAweGMyLCAweGMxLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MTMsIDB4NmEsIDB4ZDMsIDB4ODEsIDB4MTUsIDB4YzIsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGE1LCAweDYwLCAweGM5LCAweGQ4LCAweDg0LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4NCwgMHhmMiwgMHhjMSwgMHhmNywgMHg5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhmYiwgMHgyLCAweDlhLCAweDI4LCAweDlhLCAweDFmLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MmUsIDB4YWEsIDB4ZDgsIDB4MWEsIDB4Y2IsIDB4Y2MsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHgxZSwgMHgxMywgMHg5YSwgMHhiZiwgMHhjNiwgMHg3NSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDFmLCAweDMyLCAweGMxLCAweGY3LCAweDRkLCAweDU1LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxMywgMHhhNSwgMHhhNywgMHg2NCwgMHg1MCwgMHg5YSwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDIzLCAweDRjLCAweDNhLCAweDM3LCAweGZiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNCwgMHg2NywgMHhkZiwgMHg4MCwgMHgxZiwgMHhkZCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweDgwLCAweDNhLCAweDFhLCAweDRhLCAweDRhLCAweDVkLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4NmEsIDB4NGMsIDB4NGIsIDB4OWYsIDB4YjMsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhkOSwgMHg1NCwgMHg3LCAweGUsIDB4NzcsIDB4YzMsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOCwgMHhhYywgMHhjMywgMHg3ZiwgMHg3NywgMHhhYiwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ2LCAweDc3LCAweDEyLCAweGQyLCAweGMzLCAweDZkLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzEsIDB4YzIsIDB4NjIsIDB4YzgsIDB4MTMsIDB4NmUsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHg4MiwgMHgxNSwgMHhjMywgMHhiZSwgMHg2LCAweDEzLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4NWYsIDB4Y2EsIDB4ZDksIDB4NzksIDB4YmEsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGVmLCAweGMyLCAweGY3LCAweGEsIDB4ZjcsIDB4OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OWIsIDB4MmUsIDB4OTUsIDB4MWYsIDB4NDQsIDB4OTMsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhlNCwgMHgxYSwgMHhjYywgMHhjZCwgMHhiZCwgMHhlNywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDllLCAweDgwLCAweGJmLCAweGMxLCAweDZmLCAweDY3LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4M2IsIDB4YzIsIDB4ZjcsIDB4NTAsIDB4NTQsIDB4NjIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGFkLCAweDQwLCAweGE4LCAweDYzLCAweDU1LCAweGEzLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4MjYsIDB4NGIsIDB4MjgsIDB4MzYsIDB4ZmIsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYywgMHg3MywgMHhlMiwgMHg4MiwgMHgxZiwgMHhkOCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDdlLCAweDNmLCAweDFhLCAweDQ5LCAweDUzLCAweDYxLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4NmUsIDB4ODAsIDB4NGIsIDB4NGEsIDB4YTcsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHgxZiwgMHhkMCwgMHg1MywgMHg3LCAweGY3LCAweDVkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4MzcsIDB4YSwgMHhmYiwgMHgxNiwgMHg3NiwgMHhmNywgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGY3LCAweDQ4LCAweGM5LCAweGY3LCAweDQ5LCAweGNkLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4YzYsIDB4NTcsIDB4YzUsIDB4ZjcsIDB4MWUsIDB4ZWYsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHg2MywgMHhjYywgMHgxMywgMHhmYSwgMHg4MCwgMHhkMiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGM2LCAweGNkLCAweDYsIDB4YjYsIDB4NzMsIDB4YjUsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHg4MSwgMHg4OCwgMHgzZiwgMHgxOCwgMHg4ZSwgMHg5MiwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDk0LCAweDFiLCAweDk5LCAweDk4LCAweDdmLCAweDdhLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4ODAsIDB4NzgsIDB4N2UsIDB4N2QsIDB4OTAsIDB4OTUsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3YywgMHg2MCwgMHg1LCAweDdjLCAweDljLCAweGEyLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4MWIsIDB4YjQsIDB4YWYsIDB4YjIsIDB4YmQsIDB4YjUsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg3NywgMHg4ZCwgMHgxZiwgMHhhMiwgMHg3LCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHhkZCwgMHhjZSwgMHhmMiwgMHgxYSwgMHhlNSwgMHgzZiwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDkwLCAweDFlLCAweDEzLCAweGY3LCAweDAsIDB4NDAsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzOSwgMHg3YSwgMHhmMiwgMHgxYSwgMHhkNiwgMHhlYywgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGM3LCAweGM1LCAweDZiLCAweDZhLCAweGI5LCAweDFlLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4ZjcsIDB4NTEsIDB4NTAsIDB4NGYsIDB4NywgMHhhYywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGE2LCAweDRkLCAweDFiLCAweGZiLCAweGIsIDB4M2MsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhmYiwgMHgyMiwgMHhmNywgMHg0MiwgMHg4ZCwgMHhlMywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGZhLCAweDgwLCAweGJmLCAweDg5LCAweGQyLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4MWEsIDB4MzMsIDB4ZmIsIDB4NSwgMHg3ZSwgMHg2MywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGIxLCAweGI3LCAweDU3LCAweDFlLCAweGM2LCAweDUwLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDhiLCAweGMyLCAweGY3LCAweGQzLCAweGY3LCAweDUwLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MTIsIDB4YjAsIDB4YzMsIDB4ZjcsIDB4NDYsIDB4YzMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhjMywgMHgxMywgMHhiYywgMHhmNywgMHgyNiwgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGMyLCAweGZiLCAweDExLCAweGY4LCAweDU4LCAweGY3LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhkYywgMHhmYiwgMHgxOSwgMHhjMywgMHhmNywgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGExLCAweGZiLCAweDUwLCAweGMzLCAweDcsIDB4MTMsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHhmNywgMHg0NiwgMHhmYywgMHg1OCwgMHhmYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZSwgMHg4YiwgMHhjMSwgMHhmNSwgMHhjMSwgMHhmNywgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweDEyLCAweGMxLCAweDEsIDB4ZjcsIDB4NDAsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5NSwgMHhiZSwgMHgzLCAweGY3LCAweGY5LCAweDE2LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWMsIDB4ZjUsIDB4ZjcsIDB4MWEsIDB4NywgMHhmNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGM1LCAweGRlLCAweGU2LCAweDVmLCAweGJkLCAweGZiLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4MTgsIDB4ZjcsIDB4MTIsIDB4ZWUsIDB4YzEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg1NSwgMHhmMSwgMHhmYywgMHg5NiwgMHgyNSwgMHg1NSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4ZjgsIDB4MTgsIDB4MTUsIDB4ZjcsIDB4MTgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGE5LCAweDg1LCAweDgwLCAweGEyLCAweDFmLCAweGEzLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4NzMsIDB4NjYsIDB4MWEsIDB4NjgsIDB4N2YsIDB4NzQsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgxZSwgMHg4MCwgMHg3NCwgMHg2ZSwgMHg4NiwgMHg2OCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFhLCAweDYsIDB4ZSwgMHg3OSwgMHhiZSwgMHhmOCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDEsIDB4ZWMsIDB4YmYsIDB4ZjcsIDB4YzUsIDB4YmYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGY4LCAweDhmLCAweDE1LCAweGRiLCAweGZiLCAweGQxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNywgMHhjMSwgMHgzZSwgMHhmNywgMHgyYywgMHhmNywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGQ0LCAweGY3LCAweDFiLCAweDFlLCAweGY3LCAweGQxLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZmIsIDB4N2MsIDB4NTQsIDB4ZjIsIDB4ZmIsIDB4ZDEsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGYsIDB4NDIsIDB4NjksIDB4M2MsIDB4MjEsIDB4NWMsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweDFlLCAweGY3LCAweGQxLCAweGY1LCAweGMyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NywgMHhlLCAweDZiLCAweGEsIDB4ZjcsIDB4N2EsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhhLCAweGY3LCAweDUyLCAweGY4LCAweGZlLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4ZjAsIDB4NmIsIDB4ZDUsIDB4ZmIsIDB4OTcsIDB4ZmIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDM1LCAweGZiLCAweDIwLCAweDM0LCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGEsIDB4NWIsIDB4YSwgMHhmYiwgMHgxNCwgMHhkNSwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGEsIDB4ZjcsIDB4MjEsIDB4YzksIDB4NDksIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4YSwgMHhmNywgMHgxMCwgMHhmNywgMHg5LCAweDViLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxYiwgMHhjZiwgMHgzMSwgMHhmNywgMHgxZiwgMHgzMSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4ZjcsIDB4YywgMHg0ZiwgMHhhLCAweGY3LCAweGQwLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4YSwgMHhmYiwgMHgyMiwgMHhmYiwgMHg5LCAweDYyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDZiLCAweGEsIDB4ZjcsIDB4N2EsIDB4NzcsIDB4MSwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGY3LCAweGM2LCAweGJmLCAweDMsIDB4OWMsIDB4ZjgsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhhLCAweGY3LCAweDFlLCAweGY3LCAweDMwLCAweDc5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNSwgMHg1LCAweGUsIDB4OTMsIDB4NzYsIDB4ZjgsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgxLCAweDg3LCAweGY3LCAweDc3LCAweGY3LCAweDMxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MywgMHhmNywgMHg5YiwgMHg3ZSwgMHgxNSwgMHhkNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWMsIDB4ZjgsIDB4OWMsIDB4NSwgMHhjZiwgMHhjMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDU0LCAweGViLCAweDYsIDB4ZmIsIDB4NDUsIDB4ZmMsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MywgMHhmOCwgMHg2MSwgMHg1LCAweGVlLCAweGMyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NTQsIDB4Y2IsIDB4NiwgMHhlLCAweDk2LCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NzcsIDB4ZDUsIDB4YzIsIDB4MSwgMHg5ZiwgMHhmNywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM3LCAweGY3LCAweDViLCAweDMsIDB4ZjcsIDB4MTAsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjYSwgMHg2LCAweGY3LCAweDUsIDB4ZjcsIDB4ZmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweGZkLCAweDUsIDB4YzgsIDB4NiwgMHhjNCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDUsIDB4YjcsIDB4YzIsIDB4ZmIsIDB4NWIsIDB4NTQsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDYzLCAweGZjLCAweDM2LCAweGZiLCAweGEsIDB4ZjgsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NjIsIDB4NiwgMHhmYiwgMHg4LCAweGZjLCAweDIsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzOCwgMHg1LCAweGVkLCAweGMyLCAweGZiLCAweDVhLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NiwgMHhlLCAweDQ2LCAweGEsIDB4YTIsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhjMiwgMHgyMiwgMHg2LCAweGY3LCAweDJhLCAweGY3LCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4ZmIsIDB4NTgsIDB4NSwgMHgyZCwgMHg1NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGMyLCAweDRhLCAweDYsIDB4ZmIsIDB4NDYsIDB4ZjcsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMiwgMHhmNywgMHg2OCwgMHg1LCAweGNkLCAweGMyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NTQsIDB4YzgsIDB4NiwgMHhmYiwgMHgxMywgMHhmYiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE0LCAweGY3LCAweDNmLCAweDUsIDB4Y2YsIDB4YzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg1NCwgMHhjZSwgMHg2LCAweGY3LCAweDMyLCAweGZiLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDgsIDB4ZmIsIDB4ODQsIDB4NSwgMHg0YSwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhhLCAweGEzLCAweGY3LCAweDVmLCAweGJiLCAweGMzLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWIsIDB4MywgMHhmNywgMHgyNywgMHgxNiwgMHhmNywgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGZiLCAweDEzLCAweGY3LCAweDQzLCAweDYsIDB4ZjcsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhYiwgMHg1LCAweGNlLCAweGMxLCAweGZiLCAweDViLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4NiwgMHhmYiwgMHgyNSwgMHhmYiwgMHg3NiwgMHhmYiwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDc2LCAweDUsIDB4ZDMsIDB4YzEsIDB4ZmIsIDB4NWYsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHg2LCAweGY3LCAweDRhLCAweGZiLCAweGFiLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHhmYiwgMHgxNCwgMHg3LCAweGUsIDB4OGIsIDB4YzEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhjMSwgMHhmNywgMHg3OCwgMHg3NywgMHg4MSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4MTYsIDB4MzYsIDB4YSwgMHhiMCwgMHhmOCwgMHhjOSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGJhLCAweGYwLCAweDY5LCAweGQ0LCAweGZiLCAweGE0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4NSwgMHhlLCAweDhiLCAweGMxLCAweGY4LCAweDVkLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZSwgMHhmNywgMHgxNSwgMHg4MSwgMHhhLCAweGY3LCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NDMsIDB4MTUsIDB4ZTEsIDB4ZjcsIDB4MTUsIDB4MzUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJiLCAweGZiLCAweDE1LCAweDE1LCAweGUwLCAweGY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NiwgMHg2NCwgMHhmZCwgMHhjNCwgMHgxNSwgMHgzNiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3NSwgMHhhLCAweGY3LCAweGEsIDB4YmYsIDB4ZjcsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgzLCAweGUxLCAweDE2LCAweGY4LCAweDQwLCAweGY3LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4ZmIsIDB4MjksIDB4ZmIsIDB4YzEsIDB4NiwgMHhmNywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDVkLCAweDUsIDB4YmUsIDB4ZmMsIDB4MjAsIDB4ZmIsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhmNywgMHgxYiwgMHhmNywgMHhhMywgMHg3LCAweGZiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NWIsIDB4NSwgMHhlLCAweDhiLCAweGMyLCAweGY4LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MSwgMHhmNywgMHhhLCAweGJmLCAweGY3LCAweGI3LCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhlMSwgMHgxNiwgMHhmOCwgMHg0MCwgMHhmNywgMHg3OCwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQxLCAweGZiLCAweGMyLCAweDYsIDB4ZjcsIDB4ZjcsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg1LCAweGJmLCAweGZjLCAweDIwLCAweGZiLCAweDY4LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzEsIDB4ZjcsIDB4YTQsIDB4NywgMHhmYiwgMHhmOCwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDUsIDB4ZjcsIDB4NTIsIDB4ZjgsIDB4ZDIsIDB4MTUsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDIxLCAweGY3LCAweDMzLCAweDYzLCAweDlkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZmIsIDB4YiwgMHhmYiwgMHgyMywgMHhmNywgMHhiLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NSwgMHhlLCAweDg4LCAweGMyLCAweGY3LCAweDMzLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YiwgMHhjNCwgMHgxLCAweGJhLCAweGM0LCAweGY3LCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MywgMHhmMSwgMHhmNywgMHhlMSwgMHgxNSwgMHhkMiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweGExLCAweGJjLCAweDhhLCAweGRmLCAweDhhLCAweGJiLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4MjgsIDB4OCwgMHg5NSwgMHg1ZSwgMHg1YiwgMHg4ZSwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweGQsIDB4MjAsIDB4NWMsIDB4MjksIDB4NGEsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhmNywgMHg4LCAweGVhLCAweGQ3LCAweGMyLCAweGI0LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MzcsIDB4ZjcsIDB4MWUsIDB4YzIsIDB4MzcsIDB4ZjcsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGY0LCAweDQ5LCAweGI2LCAweGZiLCAweDcsIDB4NDAsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg3MSwgMHg1YywgMHgxZSwgMHhmNywgMHhkYywgMHhmYiwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDRmLCAweDU4LCAweDQ2LCAweDU1LCAweDM5LCAweDFiLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4YmIsIDB4YjEsIDB4ZDIsIDB4ZGQsIDB4YTAsIDB4ZTMsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg4OCwgMHg4MCwgMHhiMSwgMHgxZiwgMHhlLCAweDNlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMCwgMHhmOCwgMHg4MywgMHgxNSwgMHhmNywgMHhiYiwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGQ1LCAweGZiLCAweGE1LCAweGZiLCAweDI2LCAweDUsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0NCwgMHgyMywgMHhhLCAweDNlLCAweGEsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg3NCwgMHgxNSwgMHhmNywgMHgyZCwgMHhmNywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4ZmIsIDB4YSwgMHhiNiwgMHg5YywgMHhmYiwgMHgyYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDUsIDB4MzgsIDB4NiwgMHhmYiwgMHgyZCwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OTIsIDB4ZmIsIDB4MjcsIDB4MjMsIDB4YSwgMHg2ZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjEsIDB4ZjgsIDB4ODUsIDB4MTUsIDB4ZjcsIDB4NjQsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhkNCwgMHhmYiwgMHg0YSwgMHhmYiwgMHgyNCwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhjMywgMHg2YSwgMHhjMywgMHhmNywgMHgyYiwgMHhjMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YzMsIDB4ZTMsIDB4ZjcsIDB4NywgMHgxMiwgMHhiYSwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGUyLCAweGNjLCAweGUxLCAweDllLCAweGMzLCAweDEzLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4ZjcsIDB4YzksIDB4ZjgsIDB4YTYsIDB4MTUsIDB4ZTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDM1LCAweDYsIDB4ZmIsIDB4MmMsIDB4NjAsIDB4YSwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGJiLCAweDI4LCAweGEsIDB4MWYsIDB4MTMsIDB4YmYsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhhLCAweDFlLCAweDI5LCAweGEsIDB4MmEsIDB4YSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweDQyLCAweGMyLCAweGY3LCAweGEsIDB4YzIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGM0LCAweGY3LCAweDRlLCAweGMzLCAweDMsIDB4ZjcsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHgxNSwgMHg1OCwgMHg5ZiwgMHhiZiwgMHg2MywgMHhkYSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGI5LCAweDk2LCAweDk2LCAweGIyLCAweDFmLCAweDdmLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg4MiwgMHg2YiwgMHg2NSwgMHg3ZSwgMHg2NywgMHgxYiwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGRhLCAweGRlLCAweDFmLCAweDk3LCAweGY3LCAweDhmLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHg4YywgMHg3NiwgMHhmNywgMHhmLCAweGZiLCAweDEzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NmEsIDB4NzEsIDB4NjIsIDB4NzAsIDB4MWYsIDB4OTksIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhjMCwgMHgyYiwgMHgxYiwgMHg1NCwgMHg1OCwgMHg3ZSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDFmLCAweDk2LCAweDU2LCAweDUsIDB4OTgsIDB4YWQsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhiNCwgMHgxYiwgMHhkMiwgMHg5OSwgMHg2OCwgMHg1MywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDcsIDB4ZmIsIDB4NywgMHg4YywgMHhmYiwgMHgxNCwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFlLCAweDFhLCAweDM0LCAweGNkLCAweDY2LCAweGM5LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4OTAsIDB4ZTEsIDB4YzYsIDB4MWUsIDB4YWEsIDB4ZjcsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjYiwgMHg4ZiwgMHhiMywgMHhjMSwgMHhjOSwgMHgxYiwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDQ5LCAweDU3LCAweDkyLCAweDFmLCAweGZiLCAweDkwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4MTUsIDB4NzUsIDB4N2YsIDB4NjQsIDB4NDksIDB4NGIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg2YywgMHhhNiwgMHhiOSwgMHhmMCwgMHhmNywgMHgwLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4MWYsIDB4ZSwgMHgzZSwgMHhhLCAweGY3LCAweDFhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4MTUsIDB4ZjcsIDB4YmQsIDB4MjQsIDB4OTYsIDB4YWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhmNywgMHgyOCwgMHg1LCAweDQxLCAweGZiLCAweGQ2LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg4NiwgMHhjMCwgMHg2NCwgMHhjMiwgMHhmNywgMHgzZSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVmLCAweGJmLCAweDEsIDB4YzksIDB4YzIsIDB4OTEsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweGY0LCAweGJiLCAweDE1LCAweGFlLCAweDU5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYSwgMHhjMiwgMHhmYiwgMHgxMSwgMHg2LCAweDcyLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4YjAsIDB4YTEsIDB4YzAsIDB4OTEsIDB4YzIsIDB4MTksIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmYiwgMHhkLCAweDYsIDB4NjAsIDB4N2IsIDB4NDMsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgxZSwgMHhmYiwgMHgyMiwgMHhmNywgMHg1ZSwgMHg4NywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGI4LCAweDhhLCAweGIyLCAweDE5LCAweGMwLCAweDg5LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4YjUsIDB4MWIsIDB4YjksIDB4YTksIDB4NzQsIDB4N2EsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhOSwgMHhiNywgMHg1LCAweGE3LCAweDZlLCAweDVkLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4MWIsIDB4NDAsIDB4NDIsIDB4NjgsIDB4NDIsIDB4NWYsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhhNiwgMHg2NCwgMHgxZiwgMHgyMCwgMHg1MCwgMHg4NSwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDFhLCAweDUwLCAweGIwLCAweDM0LCAweGY2LCAweGMzLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YjMsIDB4YjAsIDB4MWUsIDB4NmUsIDB4YjcsIDB4MTUsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2ZSwgMHg2YiwgMHg1NCwgMHgxYiwgMHg1OSwgMHg1YiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGMzLCAweGJiLCAweGJkLCAweGIwLCAweDliLCAweDFmLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhhLCAweGM4LCAweGY3LCAweDM4LCAweDEyLCAweGJhLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjcsIDB4NDYsIDB4YjMsIDB4YzMsIDB4MTMsIDB4YmYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhmOCwgMHhlNCwgMHgxNSwgMHg1ZCwgMHhiMiwgMHg2NywgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGIyLCAweGFmLCAweGI5LCAweGI5LCAweDY0LCAweGFmLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4NjQsIDB4NjcsIDB4NWQsIDB4MWUsIDB4YzEsIDB4MTYsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg5OSwgMHg5ZSwgMHg5ZSwgMHg5YiwgMHg3ZCwgMHg3OSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDdjLCAweDc4LCAweDc4LCAweDdiLCAweDlhLCAweDljLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmYsIDB4ZmIsIDB4ODYsIDB4MmMsIDB4YSwgMHhmNywgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDEsIDB4NmYsIDB4ZjksIDB4MjQsIDB4MywgMHhmNywgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGEsIDB4ZjgsIDB4NTUsIDB4ODAsIDB4YSwgMHhhNywgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdhLCAweGY3LCAweDRiLCAweGZiLCAweDdhLCAweDc4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg1OSwgMHg1ZCwgMHhhLCAweDdjLCAweGY5LCAweDMsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE4LCAweGJlLCAweDMsIDB4ZjcsIDB4OCwgMHhmNywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDRkLCAweGZiLCAweDc1LCAweGY3LCAweDRiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NWUsIDB4YTcsIDB4ZmIsIDB4NCwgMHhmYiwgMHgyZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OWEsIDB4NTgsIDB4ZmMsIDB4OWMsIDB4NywgMHhmYiwgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmYsIDB4NSwgMHhlLCAweDdkLCAweGEsIDB4ZjcsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhhLCAweGY4LCAweGI1LCAweGJlLCAweGZjLCAweGI3LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3ZCwgMHhhLCAweDczLCAweGY3LCAweGE0LCAweDE1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4ODAsIDB4YSwgMHhhNywgMHg1ZSwgMHhmNywgMHg3OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGZiLCAweDc5LCAweDc4LCAweGEsIDB4ZmMsIDB4YjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjgsIDB4MWMsIDB4ZjcsIDB4MTQsIDB4MSwgMHhmNywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDMsIDB4ZjcsIDB4YTgsIDB4MTYsIDB4YmUsIDB4ZjgsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDQsIDB4ZmIsIDB4MmUsIDB4YjgsIDB4YTcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhmNywgMHg3NSwgMHhmYiwgMHg0ZCwgMHhmYiwgMHg3NSwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGY3LCAweGYsIDB4ZjcsIDB4MzAsIDB4NSwgMHhlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3NiwgMHhmNywgMHhhMCwgMHg3NywgMHgxLCAweGU5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4MywgMHhlOSwgMHhmNywgMHhmNiwgMHgxNSwgMHhkOCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweGM2LCAweGM1LCAweGM1LCAweGM3LCAweDRlLCAweGQwLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4NzEsIDB4OCwgMHhiYSwgMHg3LCAweDJhLCAweGQ2LCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NjMsIDB4ZWUsIDB4OCwgMHg1OCwgMHg2LCAweDY4LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NTMsIDB4MmMsIDB4NDQsIDB4OCwgMHhlLCAweGY3LCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4OWUsIDB4YmUsIDB4MTIsIDB4YzgsIDB4ZjgsIDB4NzEsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHhmNywgMHg1OSwgMHgxNSwgMHhhYSwgMHhhMSwgMHhhNiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDFiLCAweGIxLCAweGFhLCAweDc3LCAweDc4LCAweGFjLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4YTksIDB4YWEsIDB4N2IsIDB4YjEsIDB4MWIsIDB4Y2QsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhiOCwgMHhhYywgMHgxZiwgMHg1ZiwgMHhhYSwgMHg1LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NWUsIDB4NTcsIDB4NjUsIDB4MWIsIDB4NzEsIDB4NzMsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg2ZiwgMHgxZiwgMHgxMywgMHhlMCwgMHg5ZSwgMHg2YSwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDUzLCAweDFiLCAweDRjLCAweDZiLCAweDVlLCAweDYyLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhmNywgMHg5NSwgMHhmNywgMHhmMiwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4Y2IsIDB4MywgMHhmNywgMHgzNywgMHhmNywgMHhjMCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDYwLCAweGQ1LCAweGY3LCAweDE2LCAweGQ1LCAweGZiLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4YjUsIDB4MmEsIDB4ZjcsIDB4OSwgMHhmNywgMHgyNCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGNmLCAweGZiLCAweDIwLCAweDU3LCAweDk4LCAweGY3LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0MCwgMHg2LCAweDk0LCAweGZiLCAweDI5LCAweGZiLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4NzcsIDB4NDcsIDB4ZjcsIDB4MjYsIDB4NmYsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YjEsIDB4ZGUsIDB4YjEsIDB4ZjcsIDB4NjgsIDB4YjUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGIyLCAweDEsIDB4YjAsIDB4YjYsIDB4ZTUsIDB4YjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhiNywgMHhmNywgMHhkLCAweGI3LCAweDMsIDB4ZjcsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHgxNSwgMHg2ZSwgMHg5MywgMHhhMCwgMHg2NiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGRjLCAweGMwLCAweGU5LCAweGY3LCAweDAsIDB4ZjcsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxLCAweGVhLCAweGZiLCAweDI0LCAweGZiLCAweDQ3LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTUsIDB4ZmIsIDB4MzEsIDB4ZmIsIDB4M2EsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEsIDB4ZjcsIDB4NDQsIDB4ZGYsIDB4ZDAsIDB4YTcsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHgxZiwgMHg3NywgMHhiMywgMHg1LCAweDc2LCAweDZlLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NDEsIDB4MWIsIDB4ZmIsIDB4MTEsIDB4ZmIsIDB4OCwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJmLCAweGY3LCAweGUsIDB4ZDIsIDB4ZjcsIDB4MTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhmNywgMHhiLCAweGU1LCAweDM2LCAweGZiLCAweDUsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHgzMywgMHg1OCwgMHg1OSwgMHg5MSwgMHhkOSwgMHhiNiwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGFjLCAweGY3LCAweDFjLCAweDUsIDB4NWYsIDB4NiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweDUsIDB4YjYsIDB4NzYsIDB4NzIsIDB4OGUsIDB4NmMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg1OSwgMHgyYSwgMHgyYSwgMHg1ZSwgMHg5OSwgMHg1NiwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGI2LCAweGFjLCAweGFjLCAweDllLCAweDFmLCAweGZiLCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4MTUsIDB4YzEsIDB4YTYsIDB4ZWYsIDB4YzgsIDB4YmQsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg3OSwgMHg0YSwgMHg2NCwgMHgzMCwgMHg1MSwgMHg2OSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGExLCAweDFlLCAweGUsIDB4N2MsIDB4YzMsIDB4NWYsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNCwgMHhjMywgMHhmNywgMHgxYywgMHhjMywgMHhjNywgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweGJjLCAweDEyLCAweGJhLCAweGM1LCAweGY3LCAweGM5LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmYsIDB4ZjcsIDB4MTUsIDB4ZjgsIDB4YTEsIDB4MTUsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5ZiwgMHhiYiwgMHhhZiwgMHgxYiwgMHhhNywgMHg5ZCwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDlmLCAweDFmLCAweDc5LCAweGEyLCAweGE2LCAweDc4LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4Y2IsIDB4YmMsIDB4YjksIDB4YzMsIDB4OWUsIDB4MWYsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg1LCAweDcyLCAweDgyLCAweDZlLCAweDY3LCAweDY2LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzgsIDB4OWIsIDB4OWQsIDB4NzQsIDB4MWYsIDB4OWIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg5YSwgMHg2NSwgMHgxYiwgMHg1NywgMHg1NSwgMHg2NywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDFmLCAweDlkLCAweGZiLCAweDRkLCAweDJjLCAweGEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHg2MCwgMHhjMywgMHhmNywgMHhlYSwgMHhjMywgMHgxMiwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGY3LCAweGY5LCAweGM3LCAweDEzLCAweDc4LCAweDllLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MjQsIDB4ZDEsIDB4NiwgMHgxMywgMHhiOCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGI1LCAweDQ5LCAweGY3LCAweDE4LCAweDFiLCAweGY3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjcsIDB4YSwgMHhmNywgMHgyLCAweGY3LCAweDJiLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4ZmIsIDB4MTMsIDB4ZmIsIDB4NCwgMHg0ZiwgMHg0YywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDFmLCAweGY3LCAweDllLCAweGZiLCAweDI0LCAweDU0LCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxMywgMHg3OCwgMHhmYywgMHg5ZCwgMHgzNCwgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4ZjcsIDB4M2QsIDB4MTUsIDB4ZjUsIDB4ZTQsIDB4Y2UsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjLCAweGM2LCAweDM2LCAweDJhLCAweDhhLCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4MjQsIDB4OGEsIDB4MzQsIDB4NDUsIDB4MzEsIDB4MWIsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhjNSwgMHhmNywgMHgxMCwgMHgxZiwgMHhlLCAweGZiLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4Y2UsIDB4MSwgMHhjZiwgMHhmOCwgMHg2NCwgMHgzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ZmIsIDB4MWQsIDB4MTUsIDB4YjgsIDB4YTMsIDB4ZmMsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHhiNiwgMHg1ZSwgMHg3MCwgMHg1LCAweGUsIDB4ZmIsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmYSwgMHg3YywgMHg3NywgMHg2OCwgMHhhLCAweGJlLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNiwgMHhmYiwgMHg4ZSwgMHgxNSwgMHhiZSwgMHhmYSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDYsIDB4ZSwgMHhmYiwgMHg3OCwgMHhiZiwgMHhmOSwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDEsIDB4ZjcsIDB4OWYsIDB4YzUsIDB4MywgMHhmNywgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgyLCAweDE1LCAweGQ5LCAweDcyLCAweDljLCAweDc1LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZmIsIDB4NTAsIDB4NywgMHg0OSwgMHhhZSwgMHg0NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDFlLCAweGJmLCAweDcsIDB4NGUsIDB4OGUsIDB4NjIsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHgxYSwgMHhmNywgMHg0ZCwgMHg3LCAweGNjLCAweDhhLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4YjAsIDB4MWUsIDB4ZGMsIDB4YjQsIDB4OGMsIDB4YmUsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmNywgMHg1YywgMHg3LCAweGJiLCAweGI0LCAweDlhLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4MWUsIDB4YzQsIDB4NywgMHhmYiwgMHgxNywgMHg2ZSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDFmLCAweGZiLCAweDUwLCAweDcsIDB4MmIsIDB4NzcsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg3MiwgMHgxZSwgMHhlLCAweGZiLCAweDc4LCAweGJmLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4YzAsIDB4NjgsIDB4YSwgMHhjNSwgMHgzLCAweGY3LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDQsIDB4MTUsIDB4NTcsIDB4NywgMHhmNywgMHgxMSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGNkLCAweDFmLCAweGY3LCAweDUwLCAweDcsIDB4ZWIsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhkOSwgMHhhNCwgMHgxZSwgMHhiMSwgMHg3LCAweDQwLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YTEsIDB4ZWIsIDB4MWEsIDB4ZjcsIDB4NTAsIDB4NywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGM4LCAweGZiLCAweDE3LCAweDFlLCAweDU2LCAweDcsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHhiNCwgMHg3OCwgMHg1YiwgMHgxYSwgMHhmYiwgMHg1YywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4OGMsIDB4NTgsIDB4ZGMsIDB4NjIsIDB4MWUsIDB4M2EsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg0ZiwgMHg0YSwgMHgxYSwgMHhmYiwgMHg0ZCwgMHg3LCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NjgsIDB4NGUsIDB4ODgsIDB4MWUsIDB4ZSwgMHgzZCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGMxLCAweGY5LCAweDIsIDB4YzEsIDB4MSwgMHhmNywgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDMsIDB4ZjcsIDB4NjksIDB4M2QsIDB4MTUsIDB4ZjcsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmYiwgMHhhLCAweGY5LCAweDIsIDB4ZjcsIDB4YSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQxLCAweDYsIDB4ZSwgMHgzZCwgMHhjMSwgMHhmOSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4MSwgMHhmNywgMHhkZiwgMHhjMiwgMHgzLCAweGY3LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MTUsIDB4NTUsIDB4ZjcsIDB4NDEsIDB4ZjksIDB4NmUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHg1NSwgMHhmNywgMHhhLCAweGZkLCAweDIsIDB4NywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODksIDB4YjIsIDB4MSwgMHhmNywgMHgyZCwgMHhmOCwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDNiLCAweGFmLCAweGMzLCAweDZmLCAweGM0LCAweDFiLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4YmMsIDB4YzYsIDB4OWQsIDB4MWYsIDB4NjEsIDB4NiwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDY0LCAweDY0LCAweDU1LCAweDFiLCAweDYwLCAweDYzLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4NzgsIDB4MWYsIDB4ZSwgMHhmYiwgMHgyZSwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweDc3LCAweDY4LCAweGEsIDB4YmUsIDB4MywgMHhmNywgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFmLCAweDE1LCAweGJlLCAweGY4LCAweDFjLCAweDU4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHhlNiwgMHg0LCAweGJlLCAweGY4LCAweDFjLCAweDU4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweDE2LCAweGY3LCAweDkxLCAweDEsIDB4ZjcsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5NCwgMHgzLCAweGY3LCAweDQwLCAweGY3LCAweDk1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4YzQsIDB4NTIsIDB4ZDIsIDB4ZDMsIDB4YzMsIDB4YzQsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHg1MywgMHhjMywgMHg0MywgMHg0NCwgMHg1MiwgMHg1MywgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4N2MsIDB4YzAsIDB4ZjcsIDB4ZWYsIDB4YzMsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweGMxLCAweGY3LCAweGU0LCAweGMxLCAweDMsIDB4ZjgsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4LCAweDE1LCAweDc2LCAweDc0LCAweDM0LCAweDUyLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4MTksIDB4NTMsIDB4ZTcsIDB4ZGYsIDB4ZTQsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHhmNywgMHg0LCAweGM0LCAweGJmLCAweDczLCAweDY3LCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NDYsIDB4YzEsIDB4ZjcsIDB4NGQsIDB4NTUsIDB4NWIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDVlLCAweDVjLCAweDljLCAweDUxLCAweDFiLCAweGZiLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4ZmIsIDB4MTksIDB4MzAsIDB4ZmIsIDB4MjgsIDB4ZWMsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNCwgMHhlYiwgMHhjYiwgMHhhYiwgMHhiYiwgMHhjOSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjgsIDB4ODAsIDB4YzMsIDB4MSwgMHhmNywgMHgxMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDMsIDB4ZjcsIDB4OWMsIDB4ZjgsIDB4ODAsIDB4MTUsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDFkLCAweGY3LCAweDMxLCAweDY0LCAweDlmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4ZmIsIDB4ZCwgMHhmYiwgMHgxZiwgMHhmNywgMHhjLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NSwgMHhlLCAweGZiLCAweDIxLCAweDc2LCAweGY3LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4ZjcsIDB4ZGMsIDB4YzAsIDB4MTIsIDB4Y2YsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhlOSwgMHg1ZCwgMHhiOSwgMHhlYSwgMHhjMiwgMHgxMywgMHhmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFiLCAweDk1LCAweDE1LCAweDg2LCAweDQ0LCAweDUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhhYywgMHg4YiwgMHg3MSwgMHgxYSwgMHgxMywgMHg3MiwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDg1LCAweDc0LCAweGExLCAweDFlLCAweDdkLCAweDY1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3NiwgMHg3OSwgMHhhOSwgMHg5ZCwgMHg4YSwgMHg5MywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGFkLCAweGFkLCAweGI3LCAweGIwLCAweDczLCAweDlmLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4MWYsIDB4YTMsIDB4NywgMHhkZSwgMHg4ZiwgMHhjZCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGI0LCAweDc1LCAweGJmLCAweDE4LCAweDc2LCAweDcyLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4M2EsIDB4MWIsIDB4ZmIsIDB4MzEsIDB4NTYsIDB4ZjUsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhkZCwgMHhkOCwgMHhmNywgMHg3LCAweGM0LCAweGMwLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4YjcsIDB4MWYsIDB4NDEsIDB4YzIsIDB4ZjcsIDB4NDIsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDEzLCAweDQsIDB4NWUsIDB4NywgMHhhOCwgMHg1YywgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDUxLCAweDFiLCAweGZiLCAweDQzLCAweDQ2LCAweGZiLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4ZmIsIDB4MTQsIDB4ZWMsIDB4M2EsIDB4ZjcsIDB4NiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4ZmIsIDB4MmIsIDB4YjMsIDB4YmIsIDB4YjMsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNSwgMHhiZCwgMHg4NywgMHhiZCwgMHgxMywgMHhkMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGZiLCAweDFiLCAweDE1LCAweDgwLCAweDljLCAweDlkLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4MWIsIDB4YjYsIDB4YjQsIDB4YTcsIDB4YjgsIDB4MWYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhhZSwgMHg3MSwgMHg5ZCwgMHg3NywgMHg4ZCwgMHgxZSwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDcsIDB4ODMsIDB4M2QsIDB4NSwgMHg4ZiwgMHg5OCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDkzLCAweDFiLCAweDllLCAweDkwLCAweDdlLCAweDgwLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ODQsIDB4N2EsIDB4N2MsIDB4N2IsIDB4OTAsIDB4OTMsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDZmLCAweDc2LCAweGY3LCAweDIyLCAweGMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4YzIsIDB4MSwgMHhlZCwgMHhjMSwgMHhmNywgMHg4LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHhjMSwgMHgzLCAweGY3LCAweGEwLCAweDVhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZjcsIDB4MjIsIDB4NiwgMHhkMCwgMHg4ZCwgMHhkMywgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGFhLCAweDc1LCAweGJkLCAweDE4LCAweDZiLCAweDU3LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NGIsIDB4MWIsIDB4ZmIsIDB4YiwgMHg2NCwgMHhkMiwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGMzLCAweGM5LCAweGVkLCAweGI4LCAweGIzLCAweDgyLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MWYsIDB4NTUsIDB4YzEsIDB4ZjcsIDB4M2MsIDB4NTUsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDYxLCAweGExLCAweDZlLCAweDhlLCAweDY1LCAweDhmLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMiwgMHg1MywgMHhmYiwgMHgzMiwgMHg3LCAweDQyLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4NTIsIDB4ZmIsIDB4ZiwgMHgxYSwgMHhmYiwgMHg4LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4ZGYsIDB4ODYsIDB4MWUsIDB4ZSwgMHhmOCwgMHhlOSwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4MTAsIDB4ZjcsIDB4ZjQsIDB4MywgMHhmNywgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDcxLCAweDE1LCAweGY3LCAweDFlLCAweGY3LCAweGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmYiwgMHhjLCAweGIyLCAweDlkLCAweGZiLCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NSwgMHg0MCwgMHg2LCAweGZiLCAweDFmLCAweGZiLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweGY0LCAweGY3LCAweGUsIDB4ZjcsIDB4MzAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdhLCAweGEsIDB4ZjgsIDB4NTAsIDB4MTUsIDB4NTIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGFhLCAweDQsIDB4NTIsIDB4YSwgMHhlLCAweGY3LCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4MywgMHhmNywgMHg2ZSwgMHhmYiwgMHg0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4NiwgMHhlZiwgMHhmNywgMHg3ZSwgMHg1LCAweDJlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDc5LCAweGI5LCAweGUyLCAweGMwLCAweGY3LCAweDg0LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4YjcsIDB4MSwgMHg4YiwgMHhiOSwgMHhmMiwgMHhiYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGI4LCAweDMsIDB4ZjcsIDB4YWIsIDB4NCwgMHhmYiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFhLCAweGZiLCAweDE5LCAweGY3LCAweDNiLCAweGY3LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWUsIDB4ZjcsIDB4ZSwgMHhmNywgMHg0MywgMHhmNywgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIxLCAweGY3LCAweGEsIDB4ZmIsIDB4MzIsIDB4ZmIsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNiwgMHhmYiwgMHhiLCAweGZiLCAweDRhLCAweDFlLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4MTgsIDB4ZWUsIDB4ZjcsIDB4MTEsIDB4ZjcsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMSwgMHhmNywgMHg1LCAweGZiLCAweGMsIDB4ZmIsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMiwgMHhmYiwgMHg0LCAweGZiLCAweDEsIDB4ZmIsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxYiwgMHhmYiwgMHhjLCAweGY3LCAweDEsIDB4ZjcsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmOCwgMHg3LCAweDQzLCAweDE1LCAweDZmLCAweDcxLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NjUsIDB4MWIsIDB4NGYsIDB4NTEsIDB4YjYsIDB4ZDIsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhiYSwgMHhjOSwgMHhhNiwgMHhiMiwgMHg4MSwgMHg3NSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGFjLCAweGFjLCAweDUsIDB4YWQsIDB4NmEsIDB4NWQsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHgxYiwgMHgzMywgMHgzZSwgMHgzZiwgMHgyOSwgMHgyMCwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweGRmLCAweGJjLCAweGJlLCAweDllLCAweGIyLCAweGFlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhkNywgMHhiYSwgMHhmNywgMHhkMiwgMHhiYSwgMHgxLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4ZjcsIDB4ZDIsIDB4YmIsIDB4MywgMHhkNCwgMHhlMSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDZmLCAweGNjLCAweGNhLCAweDUsIDB4NjMsIDB4YzAsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHhhYSwgMHgxYiwgMHhiZCwgMHhiYSwgMHg5YiwgMHhhOCwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGM5LCAweDRjLCAweGE5LCAweGE4LCAweDRiLCAweGNiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhiMSwgMHg5YSwgMHhiYSwgMHhiYiwgMHgxYSwgMHhiYSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDZkLCAweGFlLCAweDFlLCAweGNiLCAweGNiLCAweDZjLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NGMsIDB4NSwgMHhhYSwgMHg2NiwgMHg1ZCwgMHg5OSwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDU5LCAweDU5LCAweDdiLCAweDZkLCAweDY3LCAweDFmLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4NmMsIDB4NmMsIDB4Y2QsIDB4NGMsIDB4NSwgMHg2OCwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDVmLCAweDYzLCAweDFhLCAweDViLCAweDlhLCAweDViLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4MWUsIDB4OGMsIDB4ZjcsIDB4MTYsIDB4MTUsIDB4ZGEsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhlZSwgMHhlOSwgMHhjYSwgMHgzZSwgMHgzOSwgMHgyYSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDM4LCAweDMzLCAweDQzLCAweGQxLCAweGU0LCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhjMiwgMHg2MSwgMHhjMiwgMHhmNywgMHhlMSwgMHhjNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweGMyLCAweDEyLCAweGE2LCAweGM0LCAweGY3LCAweGYzLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4N2MsIDB4ZjgsIDB4NDcsIDB4ODksIDB4MTUsIDB4ZjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgzOSwgMHhmOCwgMHhkNCwgMHhmYiwgMHg0ZCwgMHg1NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGZiLCAweDcwLCAweDYsIDB4ZDcsIDB4NWUsIDB4NDAsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHgxYiwgMHhmYiwgMHgxZiwgMHgyZCwgMHgyNywgMHhmYiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGJjLCAweGZiLCAweDgsIDB4ZGEsIDB4ZmIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJhLCAweGQzLCAweGNlLCAweGE4LCAweGM1LCAweGIzLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4N2MsIDB4ZmIsIDB4ZjMsIDB4ZjcsIDB4MjUsIDB4MTUsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhkOCwgMHhmMiwgMHhmNywgMHhmLCAweGJkLCAweDJiLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4YmMsIDB4MjEsIDB4NDUsIDB4NDAsIDB4MjQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDRmLCAweGU1LCAweGUyLCAweDFlLCAweGUsIDB4ZjcsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmNywgMHgzOSwgMHg3NywgMHgxLCAweGY3LCAweGE1LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHhhNSwgMHgzYywgMHgxNSwgMHhjMiwgMHhmOCwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE3LCAweGMyLCAweGZiLCAweDE3LCAweGY3LCAweDM5LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzksIDB4ZmIsIDB4MTgsIDB4NTQsIDB4ZjcsIDB4MTgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZDAsIDB4ZjcsIDB4YzksIDB4ZmIsIDB4OGUsIDB4ZjcsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHgyMSwgMHhmNywgMHg1MiwgMHgxMywgMHhhMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGQwLCAweDE1LCAweGY3LCAweDE1LCAweGZiLCAweDI3LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4MTQsIDB4NiwgMHgxMywgMHg2MCwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE0LCAweDcsIDB4MTMsIDB4YTAsIDB4ZjcsIDB4OGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHg3LCAweDEzLCAweDYwLCAweGM3LCAweGZiLCAweDE0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4NGUsIDB4ZmIsIDB4MjIsIDB4ZmIsIDB4MTUsIDB4NywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDRmLCAweGY3LCAweDE1LCAweDcsIDB4MTMsIDB4NjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhmYiwgMHgxNSwgMHg3LCAweGUsIDB4ZjcsIDB4YTQsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3NiwgMHhjOSwgMHgxLCAweGY3LCAweGYsIDB4YzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhjYywgMHgzLCAweGY3LCAweGYsIDB4ZjgsIDB4NTEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhkNiwgMHgzYSwgMHhmMSwgMHhlYiwgMHhkYywgMHhkMywgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDU4LCAweGVjLCAweGZiLCAweDEwLCAweDI1LCAweDNlLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4MWUsIDB4YzksIDB4MTYsIDB4YmMsIDB4YjAsIDB4Y2QsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhhNCwgMHgzZCwgMHg2NiwgMHg0OSwgMHg1OSwgMHg1YiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDVkLCAweGM1LCAweGMzLCAweDFlLCAweGUsIDB4ZjgsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgxLCAweGY3LCAweDI3LCAweGY3LCAweDQsIDB4ZGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDMsIDB4ZjcsIDB4MjcsIDB4ZjgsIDB4ODAsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGYyLCAweGZiLCAweDQsIDB4NiwgMHhmNywgMHg1NSwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDQsIDB4ZjIsIDB4ZmIsIDB4NCwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhmMywgMHhkNSwgMHhjYSwgMHhkNSwgMHhmMywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ZjMsIDB4MTQsIDB4ZTAsIDB4ZTIsIDB4ZjcsIDB4NzYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzZSwgMHhjYSwgMHhmYywgMHgzZSwgMHg2LCAweGY3LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTIsIDB4MTUsIDB4NTEsIDB4YSwgMHhmYiwgMHhjZiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4YSwgMHhlLCAweDIyLCAweDc2LCAweGY3LCAweDIwLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NGIsIDB4YmYsIDB4OWEsIDB4NzcsIDB4ZjcsIDB4NCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY3LCAweDAsIDB4YzAsIDB4ZjcsIDB4MiwgMHhjMiwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDYyLCAweGMzLCAweDEzLCAweGVlLCAweDgwLCAweGY2LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YzEsIDB4YmIsIDB4NiwgMHhhYiwgMHg3MywgMHhhMCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDgzLCAweDgsIDB4ZmIsIDB4MjAsIDB4YzIsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGY3LCAweDQsIDB4OTQsIDB4YzEsIDB4ZDMsIDB4ZDgsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweGZiLCAweDIwLCAweGEyLCAweDQ4LCAweDlmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4OTYsIDB4MzQsIDB4YTksIDB4YmYsIDB4MWEsIDB4YzcsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhjZSwgMHgxZSwgMHgxMywgMHhkZiwgMHgwLCAweGMwLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NzAsIDB4YTMsIDB4MWYsIDB4NTgsIDB4YzEsIDB4ZjcsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg1YiwgMHg3LCAweDEzLCAweGVlLCAweDgwLCAweDc0LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4OTQsIDB4NmIsIDB4OGUsIDB4OCwgMHhmNiwgMHg1NCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NGIsIDB4MjksIDB4NjQsIDB4MjQsIDB4MWYsIDB4OGIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweGNmLCAweDYyLCAweGVlLCAweDcwLCAweDFlLCAweGQ1LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4NzQsIDB4NTAsIDB4MWEsIDB4NDcsIDB4NTEsIDB4NjUsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg1MywgMHhhNSwgMHhiMCwgMHg2YywgMHgxZSwgMHhjMywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZSwgMHhmOCwgMHg3MSwgMHhmMiwgMHgxLCAweGY3LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4MywgMHhmNywgMHg4YywgMHhmOCwgMHg3MSwgMHgxNSwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweDI0LCAweDYsIDB4ZSwgMHg3NCwgMHhhLCAweGY3LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4YSwgMHhjMSwgMHhmYiwgMHg0NCwgMHhmOCwgMHg4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4NTUsIDB4ZjcsIDB4MjQsIDB4ZmIsIDB4ZDIsIDB4ZmIsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4N2YsIDB4YzEsIDB4ZjcsIDB4M2MsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhjMywgMHgxLCAweGNhLCAweGM0LCAweDMsIDB4ZjcsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY2LCAweDE1LCAweGY4LCAweDJlLCAweDYsIDB4ZjcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhmNywgMHgzLCAweGZiLCAweDM1LCAweGZiLCAweDE5LCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4ZmIsIDB4MWUsIDB4ZmIsIDB4YSwgMHhkMCwgMHhmYiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDMsIDB4ZGMsIDB4ZGYsIDB4OTksIDB4YWMsIDB4Y2IsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHhjMCwgMHg1LCAweDY0LCAweDQxLCAweDM5LCAweDg0LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NWMsIDB4NWUsIDB4OTEsIDB4YTMsIDB4NjUsIDB4MWYsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg2ZCwgMHhjMSwgMHhjMCwgMHgxYSwgMHg4ZCwgMHhjYSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweDkzLCAweGM2LCAweGNlLCAweGY3LCAweDUsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhYSwgMHgyNiwgMHg3MiwgMHgxZiwgMHhlLCAweDVhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NiwgMHhmOCwgMHg4MSwgMHgxNSwgMHhmNywgMHhiOSwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGQ3LCAweGZiLCAweGEzLCAweGZiLCAweDI4LCAweDUsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkOSwgMHgyMiwgMHhhLCAweDVhLCAweGEsIDB4ZjcsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg3ZCwgMHgxNSwgMHhmNywgMHgyYywgMHhmNywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4ZmIsIDB4YSwgMHhiNiwgMHg5ZCwgMHhmYiwgMHgyYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDUsIDB4M2EsIDB4NiwgMHhmYiwgMHgyZCwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OTIsIDB4ZmIsIDB4YzgsIDB4MjIsIDB4YSwgMHg1ZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4ZjcsIDB4NywgMHg1NiwgMHhhLCAweGY3LCAweGRlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NTksIDB4YSwgMHg0ZCwgMHhmYywgMHg1MiwgMHgyMiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ODIsIDB4YSwgMHhmNywgMHgxZiwgMHhjMywgMHg1NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzEsIDB4ZjgsIDB4ZTgsIDB4MTUsIDB4ZjcsIDB4YjksIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhhYSwgMHhmYiwgMHhhMywgMHhmNywgMHgyOCwgMHg1LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NmQsIDB4MjIsIDB4YSwgMHg3YywgMHhiZCwgMHhmNywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGY3LCAweDdlLCAweGJmLCAweDEyLCAweGYxLCAweGM0LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4ZjcsIDB4OGMsIDB4YzYsIDB4NjEsIDB4YzUsIDB4MTMsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NiwgMHhmNywgMHhjYywgMHgxNSwgMHg3NSwgMHg3ZSwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDJiLCAweDFhLCAweDMwLCAweGM3LCAweDNiLCAweGY3LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4ZDIsIDB4ZDUsIDB4ZWUsIDB4ZWEsIDB4NGIsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg5YSwgMHgxZSwgMHgxMywgMHhlYywgMHhhYSwgMHg5NiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweGUyLCAweDFhLCAweGM5LCAweDVlLCAweGYzLCAweGZiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4M2IsIDB4NDksIDB4MjcsIDB4NGEsIDB4YjgsIDB4NTAsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxZSwgMHgxMywgMHhmMiwgMHg2OCwgMHhmYiwgMHgyZSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweGM5LCAweGMyLCAweGQ5LCAweGQ5LCAweGNhLCAweDU0LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NGMsIDB4NTQsIDB4M2QsIDB4M2QsIDB4NGQsIDB4YzIsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgxMywgMHhlYywgMHg5YiwgMHhmNywgMHhiZSwgMHgxNSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGJiLCAweGNmLCAweGNmLCAweGMzLCAweDViLCAweDQ5LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NTUsIDB4NDcsIDB4NDcsIDB4NTMsIDB4YzEsIDB4Y2QsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdjLCAweGY3LCAweDEyLCAweDEsIDB4YjAsIDB4ZjcsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHhmNywgMHgxNCwgMHhkNCwgMHhmNywgMHgxMywgMHgzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4YmEsIDB4MTUsIDB4NmMsIDB4YTQsIDB4NmMsIDB4YjMsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhhNSwgMHhhZSwgMHhhYywgMHg3MiwgMHhhYiwgMHg2NSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDZlLCAweDY4LCAweDFlLCAweGZiLCAweDVkLCAweDE2LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NmMsIDB4YjQsIDB4YWEsIDB4YWEsIDB4YTUsIDB4YWUsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhhYiwgMHg2NSwgMHg2NSwgMHg2ZiwgMHg2ZSwgMHg2OCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVhLCAweDE2LCAweDZjLCAweGEzLCAweDZjLCAweGIzLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4YTUsIDB4YWUsIDB4YWMsIDB4NzMsIDB4YWIsIDB4NjUsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg2ZSwgMHg2OCwgMHgxZSwgMHhlLCAweGY3LCAweDdiLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg4YiwgMHhmOCwgMHhlYywgMHgzLCAweGY3LCAweDdiLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhlYywgMHhjMSwgMHhmYywgMHhlYywgMHg2LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHhjMSwgMHgxLCAweGQ2LCAweGY4LCAweDU2LCAweDMsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3YiwgMHgxNSwgMHhmOCwgMHg1NiwgMHhjMSwgMHhmYywgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhmNywgMHgxZSwgMHhjNywgMHhmNywgMHg4LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhlNSwgMHhmOCwgMHgzNywgMHgzLCAweGU1LCAweGY3LCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjgsIDB4MzcsIDB4YzgsIDB4ZmMsIDB4MzcsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDQsIDB4ZjgsIDB4MzcsIDB4YzcsIDB4ZmMsIDB4MzcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2MsIDB4YmYsIDB4ZjcsIDB4ZTMsIDB4YmYsIDB4MSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGY4LCAweDAsIDB4YzYsIDB4MywgMHhmNywgMHg2ZiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDE1LCAweGY0LCAweGQxLCAweGQ1LCAweDVjLCAweGIxLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4N2UsIDB4MTksIDB4YTksIDB4NjcsIDB4NGYsIDB4OTcsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgzNiwgMHg0NCwgMHhmYiwgMHhkLCAweDI4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjEsIDB4MzcsIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4M2EsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3LCAweGY3LCAweGQsIDB4OGQsIDB4MWYsIDB4OGUsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweDY1LCAweGY3LCAweDJjLCAweGZiLCAweDExLCAweGU2LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4YzUsIDB4NzEsIDB4YjksIDB4ZmIsIDB4MiwgMHg0MiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDUzLCAweDk2LCAweDYxLCAweDkxLCAweDE5LCAweDc5LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4ODgsIDB4YjMsIDB4ODIsIDB4YTksIDB4N2UsIDB4MTksIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHg1LCAweDNkLCAweGZiLCAweGI2LCAweDE1LCAweGVhLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4ZjcsIDB4MiwgMHhmNywgMHgyYywgMHhiMCwgMHgyMiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDNmLCAweDQ4LCAweDIzLCAweGZiLCAweDIsIDB4NDEsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHgxZSwgMHhlLCAweDdjLCAweGY3LCAweDE0LCAweGY4LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4ZjcsIDB4ODAsIDB4ZjcsIDB4MTQsIDB4MmMsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkMCwgMHhmNywgMHhhYSwgMHhmNywgMHg0OSwgMHgxNSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OWQsIDB4ZjgsIDB4MTgsIDB4NSwgMHgzNywgMHg2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4NzMsIDB4ZmMsIDB4OWQsIDB4MTUsIDB4NmMsIDB4YTQsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHgxZSwgMHhiMywgMHhhMywgMHhhYSwgMHhhYywgMHhhYiwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDZiLCAweDFmLCAweDEzLCAweDYwLCAweDYwLCAweDc0LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4MWYsIDB4ZSwgMHhmYiwgMHgxYywgMHg3NiwgMHhmOCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4MSwgMHhmNywgMHhhMiwgMHhjOCwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4ZjgsIDB4NSwgMHgxNSwgMHg2YiwgMHhhNywgMHg3MCwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGExLCAweGE5LCAweGE5LCAweGE5LCAweDcxLCAweGE5LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NzQsIDB4NmYsIDB4NmEsIDB4MWUsIDB4YTQsIDB4ZmMsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhkOSwgMHg2LCAweDdiLCAweGY4LCAweDIxLCAweDUsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4OGIsIDB4YzIsIDB4ZjcsIDB4ZDgsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjMiwgMHgxLCAweGY3LCAweDU4LCAweGMzLCAweDMsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmOCwgMHhkLCAweGMyLCAweGZiLCAweDZjLCAweGY3LCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjIsIDB4YzIsIDB4ZmIsIDB4NjIsIDB4NiwgMHg4YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDhhLCAweDk4LCAweGY3LCAweDcsIDB4OGMsIDB4OCwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDgxLCAweDg1LCAweGFmLCAweDFmLCAweDkwLCAweGMzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg2YSwgMHg0NSwgMHg5NSwgMHg2MywgMHgxYiwgMHhmYiwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDZmLCAweDZhLCAweDhhLCAweGZiLCAweDM2LCAweDgsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhmNCwgMHhmYiwgMHhkOCwgMHgyMiwgMHg2LCAweGUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhmNywgMHhkNSwgMHhjMCwgMHhkZSwgMHhmNywgMHhkLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweGMyLCAweGY3LCAweGEzLCAweGMyLCAweDMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhmOCwgMHg5MiwgMHgxNSwgMHhkMiwgMHhmNywgMHhiLCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgzMywgMHhmZCwgMHg5LCAweDE1LCAweGY3LCAweDllLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZjgsIDB4YSwgMHhmYiwgMHgxYywgMHg1NiwgMHhkYywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDIzLCAweDYsIDB4ZmIsIDB4ZGMsIDB4NTYsIDB4NDgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGEsIDB4N2MsIDB4YzMsIDB4ZjcsIDB4YTUsIDB4YzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhjNiwgMHgxLCAweGY3LCAweDE0LCAweGM5LCAweGY3LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4MywgMHhlYywgMHhhNywgMHgxNSwgMHg2YywgMHhkMiwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGMyLCAweDFiLCAweGY3LCAweDFjLCAweGUwLCAweGRjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHg4YSwgMHgxZiwgMHhmNywgMHhjLCAweDhhLCAweDM4LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NSwgMHgxYiwgMHg2MywgMHg2YiwgMHg4MCwgMHg3NiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDYwLCAweGY3LCAweGE4LCAweGM2LCAweGZiLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZDUsIDB4NywgMHhiNSwgMHg3MywgMHg1LCAweGFmLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4OWIsIDB4YjYsIDB4MWIsIDB4ZDYsIDB4YzcsIDB4NWIsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg0MiwgMHg2MSwgMHgzNiwgMHg4YSwgMHgxZiwgMHg1NSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDlhLCAweDU4LCAweGFhLCAweDgsIDB4ZSwgMHg4YiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQzLCAweGMwLCAweGY3LCAweDI2LCAweGMzLCAweDhkLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4MSwgMHhjMiwgMHhmNywgMHhhNSwgMHhjMSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweGY3LCAweGRmLCAweDE2LCAweGY3LCAweDllLCAweGMyLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZDIsIDB4ZmIsIDB4MjUsIDB4NTMsIDB4ZTYsIDB4ZmMsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg2LCAweGZiLCAweGRjLCAweDU0LCAweDQ4LCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHg0YSwgMHhhLCAweGZiLCAweDIzLCAweGM2LCAweGY4LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4ZjcsIDB4MmQsIDB4YzQsIDB4MSwgMHhhYiwgMHhmOCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YmYsIDB4MzcsIDB4MTUsIDB4NzcsIDB4NTAsIDB4NSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MmMsIDB4OWMsIDB4YzcsIDB4ZjcsIDB4MiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGM2LCAweGY3LCAweGRjLCAweDUsIDB4ZjYsIDB4NiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDUsIDB4MjMsIDB4NiwgMHhmNywgMHg3LCAweGEyLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4ZjcsIDB4NSwgMHgxYiwgMHg5ZCwgMHhhOCwgMHg4OCwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDFmLCAweDk5LCAweGM1LCAweDRmLCAweDhlLCAweDUsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHg4NiwgMHg2NCwgMHg2NiwgMHgxZiwgMHg2MiwgMHg2MSwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDgwLCAweDRmLCAweDgsIDB4ZmIsIDB4MCwgMHg2LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4NSwgMHhmMywgMHg2LCAweDUxLCAweGZiLCAweGQ1LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NiwgMHg1OSwgMHg3OCwgMHhmYiwgMHg1LCAweDlhLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg5NSwgMHhjMywgMHhmNywgMHgxNiwgMHhjNywgMHhmOCwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHhmZSwgMHhjOSwgMHgzLCAweGU0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4MTUsIDB4ZjcsIDB4YTUsIDB4ZmIsIDB4MTcsIDB4ZmIsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweGY3LCAweDk3LCAweGMzLCAweDM0LCAweGY3LCAweDE3LCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4MzQsIDB4ZjgsIDB4YiwgMHgzNCwgMHg2LCAweGZiLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MTEsIDB4NSwgMHhjYywgMHg5MSwgMHgxNSwgMHhmNywgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQxLCAweDUsIDB4ZmIsIDB4ZDEsIDB4NywgMHhlLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NjYsIDB4MSwgMHhlNiwgMHhmOCwgMHgzNSwgMHgzLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4MTUsIDB4YjMsIDB4NzcsIDB4ZjgsIDB4ZCwgMHhmOSwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGExLCAweDUsIDB4ZSwgMHhmYiwgMHgzMSwgMHhiZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGJmLCAweGY3LCAweGFjLCAweGJmLCAweDdmLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4YzAsIDB4ZjcsIDB4ZjUsIDB4YzAsIDB4MTMsIDB4ZGMsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHgxNSwgMHg4MCwgMHg1OSwgMHg1MCwgMHhhLCAweDQxLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlYywgMHhiYywgMHg3MCwgMHg0MywgMHhiMCwgMHg0NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4MzEsIDB4NDgsIDB4MmMsIDB4OWIsIDB4OTYsIDB4NTcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhmNywgMHhkYSwgMHgxNSwgMHhlMCwgMHhkZSwgMHhjNCwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgsIDB4YzQsIDB4NjksIDB4YSwgMHhlLCAweGZiLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4OGIsIDB4ZjcsIDB4MzcsIDB4OGIsIDB4YmYsIDB4ZjcsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHg3ZiwgMHg3NywgMHhhYiwgMHhiZCwgMHgxMiwgMHhiMiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGY1LCAweGMwLCAweDEzLCAweGVmLCAweGRlLCAweDQzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NTIsIDB4NTAsIDB4YSwgMHg1NSwgMHg3LCAweDEzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NmEsIDB4NDksIDB4YWEsIDB4NDQsIDB4YSwgMHg2ZiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDFlLCAweDQ4LCAweDhjLCAweDJjLCAweDlmLCAweDU3LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg5NCwgMHhmNywgMHhkNSwgMHgxNSwgMHhlMCwgMHhkZSwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweDFlLCAweGFlLCAweDY5LCAweGEsIDB4ZjcsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4OCwgMHgzNywgMHhhLCAweDdjLCAweGMwLCAweDYzLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZGYsIDB4YzIsIDB4ZjcsIDB4MWEsIDB4YzIsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGMyLCAweGQ5LCAweGM0LCAweGY3LCAweDE3LCAweGMyLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MTMsIDB4N2YsIDB4YTksIDB4ODksIDB4MTUsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg3NywgMHg2LCAweGRlLCAweGExLCAweDk1LCAweGYyLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4ODgsIDB4NTYsIDB4NTksIDB4NWUsIDB4ODgsIDB4NTUsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg1ZSwgMHg3NywgMHg1ZiwgMHg3MiwgMHg1OCwgMHgxYSwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDZmLCAweGJiLCAweDc4LCAweDFlLCAweGY3LCAweDE3LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4ODAsIDB4NWQsIDB4MWEsIDB4MTMsIDB4YmYsIDB4NGYsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg0OCwgMHg4OCwgMHgxZSwgMHg0NSwgMHg4OCwgMHg0MSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGE0LCAweDc1LCAweDU0LCAweDE4LCAweDZkLCAweGIyLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4ZDAsIDB4MWIsIDB4ZWMsIDB4ZWEsIDB4YjgsIDB4ZjQsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhhYSwgMHg0MCwgMHhhNCwgMHgxZiwgMHg0ZiwgMHg5ZiwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGI0LCAweDFhLCAweGIzLCAweGJiLCAweDk3LCAweGJkLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YzQsIDB4YTIsIDB4YWEsIDB4OWEsIDB4Y2UsIDB4MWEsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhhNCwgMHgyYiwgMHhmYiwgMHgzYSwgMHg2ZiwgMHg2YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDFlLCAweDNhLCAweDU0LCAweGRjLCAweDYsIDB4MTMsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkZiwgMHgzYSwgMHg3LCAweGUsIDB4NmUsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGY4LCAweDg1LCAweDE1LCAweDljLCAweGE4LCAweGZiLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4NWQsIDB4NDYsIDB4NSwgMHhlLCAweGI1LCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmYsIDB4YzksIDB4MSwgMHhmOCwgMHg0NCwgMHhjZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODcsIDB4ZjcsIDB4YmQsIDB4MTUsIDB4ZmMsIDB4MjIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg1LCAweDRkLCAweDcsIDB4ZjcsIDB4ZGYsIDB4ZmIsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkZiwgMHhmYiwgMHgyOCwgMHg1LCAweDQ2LCAweDcsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhmNywgMHg0NiwgMHg1LCAweGUsIDB4N2IsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGY3LCAweDk2LCAweDE1LCAweGY3LCAweDdlLCAweGZiLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YmEsIDB4ZmIsIDB4M2QsIDB4ZjcsIDB4MjEsIDB4ZjcsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMSwgMHg3OCwgMHhiYSwgMHg1LCAweGZjLCAweDIxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4MTUsIDB4ZjcsIDB4NzksIDB4ZmIsIDB4NTAsIDB4YTAsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MCwgMHhmNywgMHgyMSwgMHhmNywgMHgzZCwgMHhmNywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGJjLCAweDUsIDB4ZSwgMHg3YiwgMHhhLCAweGY3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHgxNSwgMHhmNywgMHg3ZCwgMHhmNywgMHg1MCwgMHhmYiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUwLCAweDc5LCAweDVjLCAweGY3LCAweDNkLCAweGZiLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2QsIDB4ZmIsIDB4MjEsIDB4NSwgMHhmNywgMHg1MSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDc3LCAweGY3LCAweDUwLCAweGZiLCAweDczLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4NzMsIDB4NWEsIDB4ZjcsIDB4M2QsIDB4ZmIsIDB4MWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmYiwgMHgyMSwgMHg1LCAweGUsIDB4ZDEsIDB4ZjgsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4MmIsIDB4ZjcsIDB4YmQsIDB4MywgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk2LCAweDE1LCAweGY3LCAweGEzLCAweGZiLCAweDUwLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ZmIsIDB4NjYsIDB4ZjcsIDB4MjgsIDB4ZjcsIDB4NjYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg3MSwgMHhiNCwgMHg1LCAweGUsIDB4ZDEsIDB4ZjgsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4MmYsIDB4ZjcsIDB4YmEsIDB4MywgMHhmNywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDE1LCAweGY3LCAweGEzLCAweGY3LCAweDUwLCAweGZiLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTAsIDB4NzAsIDB4NjIsIDB4ZjcsIDB4NjcsIDB4ZmIsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2MywgMHhmYiwgMHgyOCwgMHg1LCAweGUsIDB4OGIsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmMCwgMHhjMiwgMHhmNywgMHg4LCAweGMyLCAweDEsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhmNywgMHhhYiwgMHhjMywgMHgzLCAweDllLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4YzIsIDB4MmIsIDB4ZjcsIDB4OTksIDB4NiwgMHhiNiwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGI3LCAweGNlLCAweDFiLCAweGUwLCAweDlhLCAweDU5LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4ODcsIDB4MzYsIDB4NTQsIDB4ZjcsIDB4NzYsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHhmNywgMHg5ZCwgMHg3LCAweGNhLCAweDZlLCAweGQ2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NGEsIDB4NGUsIDB4NjYsIDB4NWUsIDB4NTYsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHhmYiwgMHgyNCwgMHg1NCwgMHhlMywgMHhmYywgMHg5YiwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZSwgMHhmOCwgMHg4NSwgMHhmNywgMHg0MywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZjcsIDB4ZTYsIDB4MywgMHhmNywgMHgxNywgMHhmOCwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGEsIDB4N2QsIDB4ZmIsIDB4MmIsIDB4NzEsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2IsIDB4YzEsIDB4MSwgMHhmMiwgMHhmOCwgMHgxZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4ZjcsIDB4N2IsIDB4MTUsIDB4ZjgsIDB4MWUsIDB4YzEsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg2LCAweGUsIDB4OGIsIDB4YzIsIDB4ZjcsIDB4ZDksIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHhmNywgMHgxMCwgMHg4MSwgMHhhLCAweGY3LCAweDk1LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgzNiwgMHhmZCwgMHgyNSwgMHgxNSwgMHhmOCwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGZiLCAweDQzLCAweGY4LCAweDEwLCAweGZiLCAweDVkLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjQsIDB4ZmIsIDB4ZDksIDB4ZmIsIDB4NDYsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4YSwgMHhmNywgMHgzMSwgMHhmOCwgMHg4MiwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGYxLCAweDY5LCAweGQ3LCAweGZiLCAweGExLCAweGZiLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1OSwgMHhmYywgMHhhMSwgMHgxNSwgMHgzNSwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhjMiwgMHhmNywgMHhkZCwgMHg4MiwgMHhhLCAweDY4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgzLCAweGU5LCAweGY4LCAweDg2LCAweDE1LCAweGI0LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjksIDB4ZjcsIDB4YSwgMHhmNywgMHgyNywgMHhmYiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4OWQsIDB4ZmIsIDB4MjksIDB4ZjcsIDB4MzAsIDB4NSwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4MjksIDB4ZmQsIDB4MjIsIDB4MTUsIDB4MzUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OGIsIDB4YzIsIDB4ZjcsIDB4ZGIsIDB4YzIsIDB4ZTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDEyLCAweGY3LCAweDNhLCAweGUyLCAweGEwLCAweGMzLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4MTMsIDB4ZjgsIDB4ZWEsIDB4MTYsIDB4MzUsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweGY3LCAweDcyLCAweGY4LCAweDZmLCAweDU5LCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGEsIDB4ZjcsIDB4MWMsIDB4ZjgsIDB4ZTgsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHgyNSwgMHg5NiwgMHhhYSwgMHhmYiwgMHhhMiwgMHhmNywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NDAsIDB4ZmQsIDB4MzQsIDB4MTUsIDB4MzUsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzEsIDB4YzEsIDB4ZjgsIDB4NzYsIDB4YzUsIDB4ZWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxLCAweGY3LCAweDE4LCAweGM0LCAweGY3LCAweGE5LCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg4LCAweDdlLCAweGEsIDB4NjAsIDB4ZmQsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1NSwgMHhmNywgMHgzZiwgMHhjMSwgMHg1NCwgMHhmOCwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDU0LCAweGI4LCAweGZjLCAweDc3LCAweDcsIDB4ZjcsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgxNywgMHgxNSwgMHhkNSwgMHhmNywgMHg5LCAweDQxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyLCAweGZkLCAweDdhLCAweDE1LCAweDdjLCAweDU1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg5MSwgMHhiNiwgMHg3ZiwgMHhiZiwgMHgxYiwgMHhlZiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGY3LCAweGMsIDB4MWYsIDB4ZjgsIDB4M2MsIDB4ZmIsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhlZCwgMHhmYiwgMHhmNCwgMHg3LCAweDMyLCAweDg4LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4NTYsIDB4ODksIDB4OTMsIDB4OTUsIDB4NmMsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMxLCAweGMxLCAweGY4LCAweDdiLCAweGMwLCAweGYyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHgxLCAweGY4LCAweDI4LCAweGM3LCAweDMsIDB4ZjgsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGIwLCAweDE1LCAweGQ1LCAweGY3LCAweDksIDB4NDEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcwLCAweGZkLCAweDdhLCAweDE1LCAweDgxLCAweDUzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHhiNSwgMHhiZiwgMHg4NCwgMHhiZiwgMHgxYiwgMHhlZiwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGY3LCAweGMsIDB4MWYsIDB4ZjgsIDB4M2MsIDB4ZmIsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhmNywgMHg5NiwgMHhmYiwgMHhmOSwgMHg3LCAweDMyLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NDksIDB4NTYsIDB4NWIsIDB4OTYsIDB4OTIsIDB4NjgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDhiLCAweGMyLCAweGY3LCAweGRhLCAweGMyLCAweGY3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MSwgMHhmNywgMHhhLCAweGMzLCAweDMsIDB4YWEsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMywgMHhmNywgMHg1YSwgMHg2LCAweGM1LCAweGI1LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4ZTAsIDB4MzIsIDB4YmQsIDB4NGMsIDB4MTksIDB4NTIsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2ZCwgMHhjMiwgMHgyYywgMHg2LCAweDRkLCAweGRhLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4M2YsIDB4YzksIDB4ZjcsIDB4MzMsIDB4ZjcsIDB4NSwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweGMyLCAweGZiLCAweDcyLCAweDU0LCAweGJhLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhmYiwgMHgxNCwgMHg1LCAweGY4LCAweGMsIDB4ZmIsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhlMiwgMHhmYywgMHg5YiwgMHgzNCwgMHg3LCAweGUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmOCwgMHg5YiwgMHhjMiwgMHg2OCwgMHhhLCAweDczLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmYiwgMHg0NCwgMHhmOCwgMHhkMiwgMHhmYiwgMHg2YiwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM0LCAweGZjLCAweDliLCAweGZiLCAweDQ3LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGM5LCAweGY3LCAweGJmLCAweGQwLCAweDEsIDB4ZjAsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGYwLCAweGY3LCAweDZkLCAweDE1LCAweGY4LCAweDIyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NSwgMHhjOSwgMHg3LCAweGZiLCAweGRmLCAweGY3LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZGYsIDB4ZjcsIDB4MjgsIDB4NSwgMHhkMCwgMHg3LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZmIsIDB4NDYsIDB4NSwgMHhlLCAweDc2LCAweGJlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4YzMsIDB4ZDcsIDB4YzUsIDB4ZjcsIDB4M2UsIDB4YzUsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM5LCAweGMyLCAweDMsIDB4ZDYsIDB4YWEsIDB4MTUsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHhhOCwgMHg5NCwgMHhkOCwgMHhhYywgMHhiMCwgMHg4YSwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDhhLCAweDkwLCAweDhjLCAweGFkLCAweDdhLCAweDgsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg5ZiwgMHg3ZCwgMHhiYywgMHgxYiwgMHhiNiwgMHhiNiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGFhLCAweDFmLCAweDc2LCAweGI4LCAweDUsIDB4N2YsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2ZiwgMHg2OCwgMHgxYiwgMHg2OSwgMHg4MSwgMHg5MywgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDFmLCAweDk5LCAweDc1LCAweDczLCAweDkwLCAweDdjLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4NmYsIDB4ODQsIDB4N2EsIDB4NjcsIDB4MWYsIDB4YzMsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhhOSwgMHg4NiwgMHhjZCwgMHg4LCAweGY3LCAweDE5LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWQsIDB4NiwgMHg4NywgMHg5NywgMHg4OCwgMHhhZiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDgsIDB4ZjcsIDB4MjcsIDB4YzUsIDB4NiwgMHhmYiwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDUsIDB4ODksIDB4YTMsIDB4ODksIDB4OTcsIDB4OTcsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhjNiwgMHhhNywgMHhiZSwgMHhiZSwgMHhiZCwgMHg3MiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDFlLCAweGMwLCAweDllLCAweDUsIDB4YzQsIDB4NzAsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHgyZiwgMHgxYiwgMHgyMiwgMHg0ZSwgMHgzZiwgMHgzNiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDc4LCAweDhlLCAweDZjLCAweDFmLCAweDJlLCAweDRmLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4ZiwgMHg2ZiwgMHg4YiwgMHg2OSwgMHg4ZiwgMHg3ZSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MCwgMHg1MywgMHhmNywgMHg0LCAweDYsIDB4OTYsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg1YSwgMHg0NiwgMHg1OSwgMHg4LCAweGUsIDB4ZjcsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHgxLCAweGY4LCAweDU0LCAweGMyLCAweDMsIDB4ZjgsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjNywgMHgxNSwgMHhmYiwgMHg1YiwgMHhjMiwgMHhmNywgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDNlLCAweDRkLCAweDcsIDB4ZSwgMHg4YiwgMHhjMywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGMzLCAweDEsIDB4ZjcsIDB4YTUsIDB4NzMsIDB4YSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ1LCAweGY3LCAweDg4LCAweDYsIDB4ZjcsIDB4MTgsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGMzLCAweDcsIDB4ZmIsIDB4MTgsIDB4NTUsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGZiLCAweDc4LCAweDUzLCAweGY3LCAweDQxLCAweGZiLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHgxOSwgMHg1NSwgMHg1LCAweDU0LCAweDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhjMSwgMHg1LCAweGZiLCAweDcyLCAweGZiLCAweDQ2LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDhiLCAweGMyLCAweGY3LCAweGRmLCAweGMyLCAweDEsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhmNywgMHgzYywgMHhjMywgMHhmNywgMHgyYywgMHhjNCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MTYsIDB4ZjcsIDB4ZCwgMHhjMSwgMHg0YiwgMHhmNywgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTcsIDB4OWYsIDB4YTEsIDB4YWQsIDB4YmEsIDB4MWIsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg0MCwgMHg4MSwgMHgxZiwgMHhmYiwgMHhjMSwgMHhmNywgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4NGEsIDB4ZjcsIDB4OTYsIDB4NywgMHg5NiwgMHhhNywgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGM5LCAweDkwLCAweDU0LCAweDc1LCAweDFlLCAweGZiLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NCwgMHhjMiwgMHg1NCwgMHhmNywgMHg5NiwgMHg3LCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4YzksIDB4M2QsIDB4NTYsIDB4NmUsIDB4NjgsIDB4NjgsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhZiwgMHg3YywgMHg2MiwgMHhhZCwgMHg1NSwgMHgxYiwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDZmLCAweDZlLCAweDZlLCAweDFmLCAweGI3LCAweGZiLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhjMiwgMHg3LCAweGUsIDB4ZjgsIDB4YTEsIDB4YjMsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4ZjcsIDB4ZmMsIDB4MywgMHhmNywgMHhjLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4MTUsIDB4ZjcsIDB4ZmMsIDB4YjMsIDB4ZmIsIDB4ZmMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4N2MsIDB4YmUsIDB4MSwgMHhkYiwgMHhmOCwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZGIsIDB4ZjcsIDB4N2MsIDB4MTUsIDB4ZjgsIDB4NGMsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg0YywgMHg2LCAweGUsIDB4ZmIsIDB4MWMsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhiZiwgMHg2MiwgMHhiNCwgMHg2MiwgMHhjMSwgMHhmNywgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDEyLCAweGY3LCAweDMsIDB4YzIsIDB4ZjcsIDB4OWYsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhjZSwgMHhmNywgMHgzYSwgMHhhZSwgMHgxNSwgMHg2ZiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDdmLCAweGIzLCAweDFiLCAweGM4LCAweGNiLCAweGFlLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4MWYsIDB4MTMsIDB4YWUsIDB4MzksIDB4ZjcsIDB4MWQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDllLCAweGMxLCAweDM5LCAweGY4LCAweDIsIDB4ZmIsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhkZCwgMHhmYiwgMHgxOCwgMHg3LCAweDEzLCAweGNlLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4ZmIsIDB4MjUsIDB4ZmIsIDB4MTEsIDB4NDksIDB4NjIsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHgxZSwgMHhmNywgMHhhNywgMHhmYiwgMHgxZCwgMHg1NiwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGE2LCAweGMyLCAweDcsIDB4ZSwgMHhjOSwgMHg3NiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4ZGIsIDB4MTUsIDB4YWYsIDB4NjUsIDB4ZjcsIDB4NDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHhmNywgMHg0NCwgMHhmYiwgMHg0MiwgMHhiMiwgMHhiMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweGY3LCAweDQzLCAweGY3LCAweDQ0LCAweGY3LCAweDQ0LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4ZmIsIDB4NDksIDB4ZmIsIDB4NDYsIDB4ZmIsIDB4NDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg2NSwgMHg2NCwgMHhmNywgMHg0MywgMHhmYiwgMHg0MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4YiwgMHhjMiwgMHhmNywgMHhlMCwgMHhjMiwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhjMiwgMHhmNywgMHhhNSwgMHhjMiwgMHgzLCAweGE0LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzMsIDB4YzIsIDB4MzcsIDB4ZjcsIDB4ODUsIDB4NiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGQwLCAweGI5LCAweGM5LCAweDFiLCAweGI3LCAweGMzLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4MWYsIDB4ZmIsIDB4OGYsIDB4MzgsIDB4NTQsIDB4ZjcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgzOSwgMHhmNywgMHg5MCwgMHg3LCAweGUxLCAweDVhLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4NDUsIDB4NDUsIDB4NWUsIDB4NjIsIDB4NmEsIDB4MWUsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZiwgMHg1NCwgMHhkZiwgMHhmYiwgMHhlMCwgMHgzNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3YywgMHhjNCwgMHhmNywgMHg0YSwgMHhjOSwgMHhmNywgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweDEsIDB4ZjUsIDB4YzcsIDB4ZjcsIDB4YTIsIDB4YzUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweDdjLCAweDE1LCAweGY3LCAweDhkLCAweGY3LCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg3YywgMHhmNywgMHg2MiwgMHgyZCwgMHhlMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MjMsIDB4M2YsIDB4MjcsIDB4MjAsIDB4MjgsIDB4Y2IsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweGQ5LCAweGJjLCAweGI5LCAweGIzLCAweGE4LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWEsIDB4ZmIsIDB4MzQsIDB4M2QsIDB4ZmIsIDB4M2UsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmNywgMHhkOSwgMHhmNywgMHhmMiwgMHgxNSwgMHg1NCwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDU4LCAweDRhLCAweDFiLCAweDQzLCAweDU4LCAweGMwLCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4YWIsIDB4ZTMsIDB4ZTMsIDB4ZTIsIDB4YzEsIDB4MmQsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHgxZiwgMHhlLCAweDhiLCAweGJmLCAweGY3LCAweGVkLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4YzAsIDB4YzcsIDB4YmIsIDB4OGMsIDB4YmMsIDB4MTIsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMCwgMHg1NCwgMHhjMiwgMHhmNywgMHhhNSwgMHhjMSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGViLCAweGY4LCAweGExLCAweDE1LCAweGJlLCAweDgxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg4ZiwgMHg5ZiwgMHhhZSwgMHhhZiwgMHgxYiwgMHhhZCwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDdjLCAweGExLCAweDFmLCAweDdjLCAweGExLCAweDliLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4MWIsIDB4YzksIDB4YjYsIDB4YjYsIDB4YzIsIDB4OWUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg5NCwgMHg1LCAweDcyLCAweDgyLCAweDZlLCAweDY5LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NzYsIDB4N2EsIDB4OTcsIDB4OTgsIDB4NzgsIDB4MWYsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3MSwgMHg5MywgMHg1ZiwgMHgxYiwgMHg1OCwgMHg1NiwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDc1LCAweDFmLCAweDQ0LCAweGZjLCAweGExLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4YmYsIDB4MzgsIDB4ZjcsIDB4OTMsIDB4NiwgMHhiNywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGJlLCAweGM4LCAweDFiLCAweGI3LCAweGM0LCAweDdmLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4YTQsIDB4MzgsIDB4NTcsIDB4ZjcsIDB4NmYsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhmNywgMHhhNSwgMHg3LCAweGRkLCAweDYyLCAweGJiLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4NDcsIDB4NjUsIDB4NWYsIDB4NTgsIDB4MWUsIDB4MTMsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhmYiwgMHgyMCwgMHg1NiwgMHg3LCAweDEzLCAweGRiLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZTUsIDB4NiwgMHgxMywgMHhkZCwgMHgzNiwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZiwgMHhjMSwgMHhmNywgMHgzNSwgMHhjMSwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4M2QsIDB4MTUsIDB4YmQsIDB4NiwgMHg5NSwgMHhmNywgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MjMsIDB4NiwgMHg4NiwgMHhmYiwgMHg2ZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4NiwgMHg5MSwgMHhmNywgMHg2ZCwgMHg1LCAweGVmLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4NiwgMHg4ZiwgMHhmNywgMHgzNSwgMHg1LCAweGU3LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NiwgMHg5MCwgMHhmNywgMHg2ZiwgMHg1LCAweDU4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhmYiwgMHg2ZiwgMHg1LCAweGZiLCAweDI1LCAweDYsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2ZiwgMHg1LCAweDU3LCAweDYsIDB4ODgsIDB4ZmIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDIwLCAweDU1LCAweGY0LCAweDYsIDB4ODYsIDB4ZmIsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDI3LCAweDU1LCAweGVjLCAweDYsIDB4YzEsIDB4YzEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhmNywgMHgzNSwgMHg1LCAweGY3LCAweDI0LCAweDYsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNSwgMHg1LCAweGUsIDB4N2EsIDB4YzIsIDB4ZjcsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgxLCAweGM3LCAweGMxLCAweGY4LCAweDIsIDB4YzYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGY3LCAweDY3LCAweDE1LCAweGZiLCAweDFmLCAweGY2LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTgsIDB4ZjcsIDB4MWUsIDB4ZjEsIDB4ZTYsIDB4ZjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMiwgMHgyNCwgMHhlNCwgMHhmYiwgMHgxZCwgMHhmYiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDM0LCAweGZiLCAweDI1LCAweDFlLCAweGMxLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhkOCwgMHhjYSwgMHhmNSwgMHhmNSwgMHhkOCwgMHg0ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4YSwgMHg0MywgMHg1MywgMHhmYiwgMHgzLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4YzUsIDB4ZjcsIDB4NywgMHgxZSwgMHhlLCAweDYzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhhLCAweGY3LCAweDRjLCAweGY4LCAweDk1LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ZGUsIDB4NmIsIDB4ZDcsIDB4ZmIsIDB4OTIsIDB4ZmIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDIsIDB4ZmIsIDB4ZGQsIDB4MjEsIDB4YSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NjIsIDB4NzcsIDB4NTgsIDB4YSwgMHhmNywgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDdkLCAweDE1LCAweGY3LCAweDIyLCAweGY3LCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHhmYiwgMHgzLCAweGIzLCAweDlkLCAweGZiLCAweDIyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4NSwgMHgzZiwgMHg2LCAweGZiLCAweDIzLCAweGZiLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1MiwgMHhmYiwgMHhiNywgMHgyMSwgMHhhLCAweDYzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHhmNywgMHg4LCAweDU4LCAweGEsIDB4ZjcsIDB4ZjYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHgxNSwgMHhkYSwgMHhmNywgMHg4LCAweDNjLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhmYiwgMHg4LCAweDE1LCAweGRkLCAweGY3LCAweDgsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDI3LCAweGZjLCAweDM3LCAweDIxLCAweGEsIDB4N2MsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYywgMHhjNiwgMHhmNywgMHgxYiwgMHhjMiwgMHgxLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4ZjcsIDB4NTksIDB4YzAsIDB4ZjcsIDB4NGIsIDB4YmYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGM4LCAweGQzLCAweDE1LCAweDU4LCAweGE0LCAweGIyLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4MWIsIDB4YjYsIDB4YWMsIDB4OTYsIDB4OTcsIDB4YWYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhjMSwgMHg1LCAweDgxLCAweDZmLCAweDY1LCAweDdmLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4M2YsIDB4NTUsIDB4YmIsIDB4ZjMsIDB4OTEsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg2LCAweGVjLCAweDhjLCAweDgyLCAweGY3LCAweDJjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MWIsIDB4NDgsIDB4NjYsIDB4NWEsIDB4NmQsIDB4N2QsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHg3NiwgMHg2MywgMHhhYywgMHg0YiwgMHgxYiwgMHhmYiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGZiLCAweDIxLCAweGZiLCAweDMsIDB4ZmIsIDB4NTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDdiLCAweGFkLCAweGUzLCAweGE5LCAweGNiLCAweGEzLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YTYsIDB4ZjcsIDB4NDcsIDB4MTUsIDB4Y2IsIDB4ODEsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhjNSwgMHgxYiwgMHhkMSwgMHg5YywgMHgzYiwgMHg1NywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDQ1LCAweDUyLCAweDE1LCAweGUzLCAweDlkLCAweGYzLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4OWMsIDB4MzUsIDB4NDksIDB4NDcsIDB4OTAsIDB4ZmIsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHgzMSwgMHg4MiwgMHhmNywgMHgxMiwgMHhhNywgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmIsIDB4YzEsIDB4MSwgMHhmNywgMHg3OCwgMHhjZCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjksIDB4MTYsIDB4NjcsIDB4N2IsIDB4NmUsIDB4NmEsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2MSwgMHhhZiwgMHg3MywgMHhiMSwgMHhhMSwgMHhhMSwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDljLCAweDFlLCAweDkzLCAweGMzLCAweDUsIDB4N2MsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg4MSwgMHg3OSwgMHgxYiwgMHg3YiwgMHg3ZiwgMHg5NSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweGJhLCAweDlkLCAweGE0LCAweDk2LCAweDFmLCAweGUsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDU4LCAweGEsIDB4ZjcsIDB4MzYsIDB4ZjgsIDB4ZTcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhOCwgMHgyNCwgMHg5NiwgMHhhYSwgMHhmYiwgMHg5MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweDUsIDB4ZmIsIDB4MTgsIDB4ZmMsIDB4NWMsIDB4MjEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGMyLCAweGY4LCAweGNiLCAweDc3LCAweDEsIDB4ZjcsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgzLCAweGVhLCAweDE2LCAweGY4LCAweDJkLCAweGMyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZjgsIDB4Y2IsIDB4NiwgMHhmYiwgMHg3MSwgMHg1OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NywgMHhmNywgMHgzYSwgMHhhZiwgMHg1LCAweGZjLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGEsIDB4NywgMHhlLCAweDVkLCAweGMxLCAweDVmLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZDQsIDB4YzAsIDB4N2MsIDB4YzEsIDB4ZjcsIDB4Y2EsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmMCwgMHhjMCwgMHhmOCwgMHgzLCAweGJlLCAweDEzLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NmUsIDB4MTUsIDB4YjAsIDB4NmYsIDB4ZjgsIDB4OWEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHg2NiwgMHhhYiwgMHg1LCAweGZjLCAweGM4LCAweGZjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg5NCwgMHhjMSwgMHgyNSwgMHhmNywgMHhjNiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjUsIDB4NzMsIDB4NSwgMHg1NSwgMHg3LCAweGU3LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg4NiwgMHgyNiwgMHg3LCAweGY3LCAweGZhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4MTUsIDB4MTMsIDB4YWUsIDB4NTgsIDB4ZjcsIDB4NmEsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMiwgMHg3LCAweGYxLCAweGU1LCAweGIzLCAweGIwLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YzMsIDB4NjksIDB4YzEsIDB4NDYsIDB4NjUsIDB4NjcsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg3MywgMHgxZSwgMHg0YywgMHhiOCwgMHg3LCAweGIwLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4YTUsIDB4YTksIDB4MWIsIDB4YWUsIDB4OWMsIDB4NmMsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHgyNCwgMHgzOSwgMHg0ZiwgMHg0ZSwgMHgxZiwgMHhlLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4NWUsIDB4NzYsIDB4ZjcsIDB4ZiwgMHhjMywgMHhmNywgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweGM2LCAweDc3LCAweDEyLCAweGVmLCAweGJjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4YmQsIDB4MTMsIDB4YmUsIDB4ZjcsIDB4ZDYsIDB4YzgsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZiwgMHg1NywgMHg1NCwgMHg1NSwgMHhmNywgMHgyYiwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGJmLCAweGI5LCAweGMzLCAweDVkLCAweGY3LCAweDU1LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHgxNywgMHhmYiwgMHg2NiwgMHg1LCAweGNhLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDcsIDB4ZjcsIDB4OCwgMHg1LCAweGZiLCAweDgsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDE0LCAweGZiLCAweDI0LCAweDE1LCAweDEzLCAweDdlLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4ZjgsIDB4NzcsIDB4ZjksIDB4NDcsIDB4NjMsIDB4OWYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGM0LCAweGZiLCAweGY1LCAweDE1LCAweGY3LCAweDg3LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4ZjcsIDB4YzYsIDB4NiwgMHhmYiwgMHgxOSwgMHg3MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4NywgMHhkZiwgMHg5OSwgMHg1LCAweGZiLCAweDg2LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweGY3LCAweDhkLCAweGMzLCAweGY3LCAweGQxLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4YSwgMHhjMSwgMHgzLCAweGY3LCAweDQwLCAweGY3LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4OTQsIDB4YzMsIDB4MjcsIDB4ZjcsIDB4ZDEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI1LCAweDcxLCAweDUsIDB4NTMsIDB4NywgMHhlNiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4OGUsIDB4MjUsIDB4NywgMHhlLCAweGY3LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4ZTcsIDB4YmUsIDB4ZTQsIDB4YmEsIDB4MSwgMHhmNywgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDMsIDB4ZjcsIDB4ZjIsIDB4ZjcsIDB4OTUsIDB4MTUsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHg1OSwgMHhmNywgMHgyNywgMHg2LCAweGQ2LCAweDc1LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4NWYsIDB4NWIsIDB4N2EsIDB4N2MsIDB4NjksIDB4MWUsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg1LCAweGE4LCAweGMwLCAweGIwLCAweDhmLCAweGE4LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4OWQsIDB4NmEsIDB4NTgsIDB4MWYsIDB4N2UsIDB4NywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDczLCAweDhmLCAweDczLCAweDFiLCAweDI2LCAweDc2LCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NWMsIDB4YWMsIDB4NWEsIDB4YzIsIDB4YjMsIDB4YWYsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhhOCwgMHgxZiwgMHg4YSwgMHhjZiwgMHgxNSwgMHg1ZiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDZhLCAweDY0LCAweDFiLCAweDcwLCAweDc2LCAweDllLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4YTQsIDB4YTIsIDB4YmEsIDB4YjEsIDB4YjIsIDB4N2MsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweGY3LCAweDhkLCAweGMxLCAweGY3LCAweDc1LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHgzMSwgMHhjMiwgMHhmNywgMHg0NCwgMHhjMiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzEsIDB4ZjgsIDB4MzQsIDB4MTUsIDB4ZmIsIDB4MTMsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhiOCwgMHhjMywgMHhlMiwgMHhiYSwgMHhmNywgMHhhLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4ZDcsIDB4MzQsIDB4NGIsIDB4M2EsIDB4NTksIDB4ZmIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGMyLCAweDE2LCAweGM1LCAweGFkLCAweGMxLCAweGM0LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4M2IsIDB4NmIsIDB4NDUsIDB4NjMsIDB4NjAsIDB4NWQsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhiNywgMHhkMCwgMHgxZSwgMHhlLCAweDdmLCAweGJkLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4MzMsIDB4YmQsIDB4OGUsIDB4NzcsIDB4MTIsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhmOCwgMHgwLCAweGMyLCAweDEzLCAweDZjLCAweGM4LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YWYsIDB4NjIsIDB4YzAsIDB4YmUsIDB4NSwgMHgxMywgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGI3LCAweGMxLCAweDdmLCAweGJlLCAweDFiLCAweGY3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4ZGQsIDB4ZjcsIDB4MjksIDB4YmYsIDB4N2UsIDB4YmYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHgxZiwgMHhiZCwgMHhiYywgMHg2NywgMHhiNCwgMHg1NywgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MTMsIDB4YWMsIDB4YWMsIDB4NjAsIDB4NTcsIDB4OWEsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgyZCwgMHgzNSwgMHgyMiwgMHhmYiwgMHgxMSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDU0LCAweGFjLCAweDY1LCAweDFmLCAweGRhLCAweDhkLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTYsIDB4ZjcsIDB4OGQsIDB4NSwgMHg5OCwgMHg3NywgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDRiLCAweDFhLCAweDUwLCAweDVhLCAweDIwLCAweGZiLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NjUsIDB4OTksIDB4YTAsIDB4NmMsIDB4MWUsIDB4NjMsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3MywgMHhhNywgMHg3ZSwgMHhiMywgMHhiMywgMHgxYSwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGQ0LCAweGYzLCAweGE5LCAweGI3LCAweDdmLCAweDcyLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHg2MywgMHhhLCAweGM5LCAweGJkLCAweDljLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YzksIDB4YzUsIDB4ZjcsIDB4ZmEsIDB4YzcsIDB4MTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGY4LCAweGExLCAweDE1LCAweGJiLCAweDgwLCAweDUsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5ZSwgMHhiYiwgMHhhZCwgMHgxYiwgMHhhZCwgMHg5ZSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGEzLCAweDFmLCAweDEzLCAweGZjLCAweDdjLCAweDllLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YWQsIDB4MWIsIDB4MTMsIDB4ZWMsIDB4YzYsIDB4YjksIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHg5ZCwgMHgxZiwgMHg1YywgMHg5NCwgMHg1LCAweDczLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NjUsIDB4NjksIDB4MWIsIDB4NzcsIDB4N2MsIDB4OTQsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgxZiwgMHgxMywgMHhkYywgMHg5ZSwgMHg3MSwgMHg3MiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDFiLCAweDViLCAweDU5LCAweDY3LCAweDRhLCAweDc2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4ZmIsIDB4YzksIDB4MjEsIDB4YSwgMHg2NiwgMHhhLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZjcsIDB4ZjEsIDB4YzQsIDB4MTMsIDB4ZGMsIDB4OTIsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1OCwgMHhmNywgMHhiZCwgMHhiZSwgMHhmYiwgMHgzMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDcsIDB4NjcsIDB4YWMsIDB4YzMsIDB4NjIsIDB4ZWEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMSwgMHhlYywgMHhlOCwgMHhmNywgMHgxMiwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4ZGUsIDB4ZmIsIDB4ZSwgMHgzMywgMHg0ZCwgMHg3MCwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDFmLCAweDEzLCAweGVjLCAweGNjLCAweGZiLCAweDIwLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4ZmMsIDB4NzgsIDB4NywgMHhjNiwgMHhmNywgMHhlNCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRjLCAweGU0LCAweGQ4LCAweGNhLCAweGViLCAweGViLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4MzIsIDB4MzIsIDB4M2YsIDB4NDMsIDB4MmIsIDB4MmIsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHhlNCwgMHgxZSwgMHhlLCAweGY4LCAweGE4LCAweGE5LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkMSwgMHhiNywgMHhkOSwgMHhiNiwgMHgzLCAweGY3LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4MTUsIDB4YjcsIDB4ZjgsIDB4ZjYsIDB4ZDksIDB4ZmMsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhmOCwgMHhmNiwgMHhiYiwgMHhhOSwgMHhmYiwgMHg2ZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzgsIDB4M2MsIDB4NGYsIDB4ZmIsIDB4YSwgMHg0ZCwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGY3LCAweDU1LCAweDhhLCAweDFmLCAweGUsIDB4ZmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDZlLCAweDEsIDB4ZjcsIDB4NmEsIDB4YzIsIDB4MywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY5LCAweDIsIDB4MTUsIDB4NTYsIDB4NiwgMHg1MSwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGZiLCAweDI5LCAweGZiLCAweDI3LCAweDFhLCAweDI2LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWEsIDB4ZDEsIDB4ZmIsIDB4MSwgMHgxZSwgMHhjMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4ZjcsIDB4NywgMHg1MywgMHhlNSwgMHhmNywgMHgxZiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNhLCAweGQxLCAweGY3LCAweDFjLCAweGJhLCAweGRmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHgwLCAweGY5LCAweDZlLCAweDEsIDB4ZjcsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgzLCAweGY3LCAweDZhLCAweGZiLCAweDAsIDB4MTUsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGM1LCAweGU1LCAweGM4LCAweGY3LCAweDI5LCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjAsIDB4NWIsIDB4ZjcsIDB4MWEsIDB4NDUsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDU1LCAweDYsIDB4YzgsIDB4ZmIsIDB4NywgMHhjMywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFmLCAweDFhLCAweGZiLCAweDNhLCAweDQ1LCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4MzcsIDB4MWUsIDB4ZSwgMHg3YywgMHhjMSwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGY3LCAweDIwLCAweGMxLCAweGY3LCAweDE5LCAweGM0LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHhjMywgMHhjMywgMHhjMywgMHhhOSwgMHhjMiwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDE3LCAweGYwLCAweGY3LCAweDVkLCAweDE1LCAweGY4LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2MsIDB4NzgsIDB4YmEsIDB4ZmMsIDB4MzYsIDB4ZmIsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDU4LCAweGZiLCAweDIyLCAweDY1LCAweGEsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhhYiwgMHhiMiwgMHgxZSwgMHg0YiwgMHhhLCAweDUzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NjUsIDB4YSwgMHgxZSwgMHgxMywgMHgzYSwgMHg2NCwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGIyLCAweDFmLCAweDRiLCAweGEsIDB4ZSwgMHg3YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDdhLCAweGEsIDB4YjcsIDB4MTUsIDB4NjUsIDB4YWIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhhYiwgMHhiMywgMHhhMCwgMHhiMSwgMHhiMiwgMHg2YiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDY1LCAweDZiLCAweDczLCAweDYyLCAweDFlLCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhmNywgMHgxZSwgMHgxLCAweGY3LCAweDcyLCAweGY3LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg3MiwgMHhmNywgMHg5NSwgMHgxNSwgMHg2OSwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGJjLCAweGIxLCAweGIxLCAweGE3LCAweGIyLCAweGFmLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NWMsIDB4NWYsIDB4NjgsIDB4NmMsIDB4NjQsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGMyLCAweGY3LCAweDIxLCAweGMxLCAweGY3LCAweDFkLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjEsIDB4YzEsIDB4MTIsIDB4YTQsIDB4YzMsIDB4N2QsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhjMSwgMHg3ZiwgMHhjMSwgMHhhMCwgMHhjMywgMHhmNywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDEzLCAweGZhLCAweGMwLCAweGE0LCAweGY4LCAweDg0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4YmQsIDB4NTEsIDB4ZDksIDB4ZDQsIDB4YzEsIDB4YzQsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHg2MiwgMHhjNiwgMHgzMywgMHgzZSwgMHg1YSwgMHg0ZiwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGMzLCAweDhhLCAweDE1LCAweGI2LCAweGE3LCAweGE5LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4YTUsIDB4NmEsIDB4NjQsIDB4NjksIDB4NzIsIDB4NjgsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YiwgMHhhNSwgMHhiNSwgMHgxZSwgMHhmNywgMHg5YSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDNhLCAweGEsIDB4MTMsIDB4ZjUsIDB4YzAsIDB4ZmIsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgzYSwgMHhhLCAweDI3LCAweGYyLCAweDE1LCAweDEzLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGY4LCAweDQ2LCAweGY3LCAweDQ3LCAweDc1LCAweGJlLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4ZmIsIDB4NDcsIDB4NSwgMHhlLCAweGNjLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4YzEsIDB4ZjcsIDB4NDIsIDB4NzcsIDB4NjgsIDB4YSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZGIsIDB4ZjcsIDB4ODYsIDB4MTUsIDB4ZjcsIDB4NTYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHhjMSwgMHhmNywgMHg1YSwgMHhmNywgMHg1NCwgMHhjMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGY3LCAweDQyLCAweDU1LCAweGZiLCAweDQyLCAweGZiLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweGI3LCAweGMyLCAweGY3LCAweDc2LCAweGMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4NzcsIDB4NjgsIDB4YSwgMHhjMiwgMHgzLCAweGY3LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWUsIDB4MTUsIDB4YzIsIDB4ZjcsIDB4NGYsIDB4ZjcsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmYiwgMHg0YywgMHhmNywgMHg0NiwgMHg1NCwgMHhmYiwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRmLCAweDU0LCAweGY3LCAweDRmLCAweDYsIDB4ZmIsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhZCwgMHgxNSwgMHhmOCwgMHgzZSwgMHhjMiwgMHhmYywgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg3YywgMHhjMiwgMHhmNywgMHg1YywgMHhjMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGMyLCAweDEsIDB4ZjUsIDB4YzIsIDB4ZjcsIDB4YWIsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGE0LCAweDdjLCAweDE1LCAweGY3LCAweDZkLCAweGMyLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWMsIDB4ZjcsIDB4OCwgMHg2LCAweGEyLCAweDZkLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4YjEsIDB4NGYsIDB4NDcsIDB4NDcsIDB4MTgsIDB4YWYsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHhjNywgMHg5OCwgMHg3NCwgMHg5OCwgMHg3NywgMHg5NCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGY3LCAweDE4LCAweGMyLCAweDIzLCAweDYsIDB4ODMsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg5YSwgMHg4MSwgMHg5YSwgMHhkNSwgMHhkNSwgMHgxOCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDRhLCAweDRhLCAweDcwLCAweGI1LCAweDZkLCAweGI3LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4MTksIDB4Y2YsIDB4OTAsIDB4ZTQsIDB4YWMsIDB4ZjcsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGUxLCAweDViLCAweGQ0LCAweGZiLCAweGUsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg1NCwgMHhkYywgMHhmYywgMHg2NywgMHgzYSwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4ZjcsIDB4OTMsIDB4MTUsIDB4ZjcsIDB4NjgsIDB4ZjcsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGQxLCAweGNhLCAweDcyLCAweDNhLCAweGZiLCAweDIsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg0MiwgMHgxZiwgMHhlLCAweDY2LCAweGEsIDB4YmEsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmMSwgMHhjMiwgMHgxMywgMHhlYywgMHhmNywgMHhiYywgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDU4LCAweGY3LCAweGJkLCAweGJlLCAweDM2LCAweGY4LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4YmUsIDB4ZmIsIDB4MjAsIDB4NGEsIDB4NywgMHgxMywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDY1LCAweDRkLCAweGE2LCAweDMzLCAweDFiLCAweGZiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHgzOCwgMHhmYiwgMHg0LCAweGZiLCAweDEyLCAweGVjLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTEsIDB4ZWEsIDB4YzMsIDB4YjQsIDB4YWYsIDB4YWMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1ZiwgMHg3LCAweDg3LCAweGY3LCAweGU0LCAweDE1LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4NDMsIDB4MmIsIDB4MmIsIDB4M2YsIDB4ZDMsIDB4ZTQsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHhjYSwgMHhlYiwgMHhlYiwgMHhkOCwgMHg0YywgMHgzMiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2MsIDB4ZjcsIDB4YiwgMHhmOCwgMHgzNCwgMHhiZiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YSwgMHhjMSwgMHhhYSwgMHhmNywgMHgxOSwgMHhlNywgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4ODYsIDB4ZjcsIDB4NDQsIDB4MTUsIDB4YzIsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGNjLCAweDhmLCAweGY3LCAweGIsIDB4YjMsIDB4ZjcsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDYsIDB4MmMsIDB4YmYsIDB4MjcsIDB4NGYsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg2OSwgMHg1ZCwgMHgxZSwgMHgyNywgMHhjMSwgMHhjOSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YjAsIDB4YjQsIDB4OTUsIDB4YjEsIDB4MWIsIDB4ZDcsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg0YSwgMHgyOSwgMHhmYiwgMHg1LCAweDdjLCAweDQyLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NjQsIDB4ZmIsIDB4ODEsIDB4NGMsIDB4YSwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweGIsIDB4NzYsIDB4ZjcsIDB4ZDIsIDB4ZjcsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4YSwgMHhjMCwgMHhlNiwgMHhmNywgMHgxYiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDMsIDB4ZjcsIDB4OWEsIDB4ZjgsIDB4OSwgMHgxNSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDZlLCAweGI0LCAweGIxLCAweGE5LCAweGE1LCAweGFjLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4YTgsIDB4NjEsIDB4NmEsIDB4NmEsIDB4NzMsIDB4NmEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhmYiwgMHg1MiwgMHgxNSwgMHg0MCwgMHg3NywgMHhmYiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4ZmIsIDB4YiwgMHgxYSwgMHgyMSwgMHhlYSwgMHg1MCwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGM3LCAweDliLCAweDljLCAweGJhLCAweDFlLCAweGY3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg0NCwgMHg3LCAweDdiLCAweDY4LCAweDYzLCAweDgwLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4NSwgMHg2ZiwgMHhkMywgMHhiMCwgMHhlYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTAsIDB4ZDQsIDB4OTgsIDB4MWYsIDB4ZjcsIDB4NiwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZSwgMHhmOCwgMHhjMiwgMHg3NywgMHgxLCAweGY3LCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4ZGMsIDB4Y2EsIDB4MywgMHhmNywgMHg2MiwgMHhmNywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGEsIDB4ZjcsIDB4MzcsIDB4ZmIsIDB4OGYsIDB4NzcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4MWEsIDB4NmQsIDB4YSwgMHhmYiwgMHgxYSwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4ZGMsIDB4ZjcsIDB4N2UsIDB4OGIsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFjLCAweGY3LCAweGRjLCAweDMsIDB4ZjgsIDB4MjksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHgxNSwgMHhjNiwgMHg2LCAweDQ2LCAweGY3LCAweDdlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg2LCAweDRhLCAweGZiLCAweDdlLCAweDE1LCAweGM4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHg1YywgMHhhLCAweGY3LCAweGRjLCAweDZkLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHg0NSwgMHhhLCAweGY3LCAweGRjLCAweDVmLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhmNywgMHhkYywgMHgxNSwgMHhjNiwgMHg2LCAweDQ0LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHhkYywgMHg1ZiwgMHhhLCAweGY3LCAweDZlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4MTUsIDB4YzYsIDB4NiwgMHhmMywgMHg1YywgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NWYsIDB4YSwgMHhmNywgMHg2ZSwgMHhmYiwgMHgxYSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweDYsIDB4ZjMsIDB4NWMsIDB4YSwgMHhmOCwgMHhjNiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4OTcsIDB4ZGQsIDB4MywgMHhmNywgMHhhZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweDE1LCAweGFlLCAweDYsIDB4YTMsIDB4ZjcsIDB4OTMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDYsIDB4ZSwgMHg4YiwgMHhjMSwgMHhmNywgMHhkNCwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweGMwLCAweDEyLCAweGJkLCAweGY3LCAweDRhLCAweDU0LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjAsIDB4YmQsIDB4MTYsIDB4ZjgsIDB4ZiwgMHhjMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweGY3LCAweDUxLCAweDYsIDB4ZjEsIDB4ZjcsIDB4MiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGI2LCAweDFiLCAweGE0LCAweDllLCAweDg1LCAweDY5LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YzUsIDB4OTAsIDB4NSwgMHhiZiwgMHg4OCwgMHg2YSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDFiLCAweDJjLCAweDNmLCAweDM2LCAweDU3LCAweDU0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4ZjcsIDB4MTAsIDB4ZmIsIDB4NGEsIDB4NTUsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGM4LCAweGY3LCAweDEzLCAweGZiLCAweGQ0LCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhmYiwgMHgxMywgMHg2LCAweGUsIDB4NzksIDB4YjksIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGJhLCAweGU0LCAweGI4LCAweDEsIDB4OGIsIDB4YjksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhiYiwgMHhmNywgMHhkLCAweGJlLCAweGY3LCAweDE3LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHhhYSwgMHg0LCAweGZiLCAweDM3LCAweGY3LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTksIDB4ZjcsIDB4M2IsIDB4ZjcsIDB4MzYsIDB4ZjcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNCwgMHhmNywgMHg0MywgMHhmNywgMHgzYiwgMHhmYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweGZiLCAweDMzLCAweGZiLCAweDJmLCAweGZiLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHhmYiwgMHg0YSwgMHgxZSwgMHhiOSwgMHg4ZCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweGYxLCAweGY3LCAweDExLCAweGY3LCAweDMwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZjUsIDB4ZmIsIDB4OCwgMHhmYiwgMHgxZCwgMHhmYiwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEsIDB4ZmIsIDB4NCwgMHhmYiwgMHgyMSwgMHhmYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQsIDB4ZjcsIDB4MiwgMHhmNywgMHgyMiwgMHgxZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGZiLCAweDMwLCAweDE1LCAweGJiLCAweGY3LCAweGUsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGQ0LCAweGZiLCAweGUsIDB4NSwgMHhjNiwgMHg2LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWEsIDB4NSwgMHhiMSwgMHg5OSwgMHhhNiwgMHhiYSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGQxLCAweDRmLCAweGExLCAweDUyLCAweDFlLCAweDI0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhmYiwgMHgyZCwgMHgxNSwgMHhmNSwgMHhjMSwgMHg3LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NzEsIDB4NzQsIDB4NjUsIDB4NjcsIDB4NzgsIDB4NmQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY4LCAweDYzLCAweGJkLCAweGFiLCAweDhiLCAweGFiLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHg2ZSwgMHhiZCwgMHhjYiwgMHhiZCwgMHgxNCwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZlLCAweGY4LCAweGI1LCAweDE1LCAweDVkLCAweGFmLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4YjksIDB4YWYsIDB4YWYsIDB4YjksIDB4YjksIDB4NjcsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg1ZCwgMHg2NywgMHg2NywgMHg1ZCwgMHgxZSwgMHhiZCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDk5LCAweDk5LCAweDlkLCAweDlkLCAweDk5LCAweDdkLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4N2QsIDB4N2QsIDB4NzksIDB4NzksIDB4N2QsIDB4OTksIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDdlLCAweGMyLCAweGY3LCAweDJiLCAweGMwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4YzIsIDB4MTIsIDB4ZGYsIDB4YzIsIDB4NWEsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhjMSwgMHg2OSwgMHhjNSwgMHgxMywgMHhmNCwgMHhkZiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGMyLCAweGI4LCAweDYsIDB4NzQsIDB4YmMsIDB4YzUsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHgxYiwgMHgxMywgMHhlYSwgMHhmNywgMHgzLCAweGRhLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4ZjcsIDB4YiwgMHhmYiwgMHgyOCwgMHg4MCwgMHgzMiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDVmLCAweDhlLCAweDMwLCAweDk5LCAweGMxLCAweDFhLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4OTIsIDB4YjYsIDB4YzIsIDB4YzIsIDB4N2EsIDB4NzAsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg1MCwgMHhjMSwgMHhmNywgMHgzMiwgMHg1NSwgMHg2MywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NWUsIDB4NTUsIDB4OTgsIDB4NTMsIDB4MWIsIDB4ZmIsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDVjLCAweDM1LCAweDMzLCAweGY3LCAweGMsIDB4NzIsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHgxZiwgMHhjMSwgMHg4OSwgMHhmNywgMHgxMywgMHg4NSwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDQ1LCAweDIwLCAweDdmLCAweDY2LCAweDRjLCAweDRiLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4NWIsIDB4MWUsIDB4YzYsIDB4NTQsIDB4NywgMHhlLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4OGIsIDB4ZjcsIDB4MjcsIDB4OGIsIDB4YzEsIDB4OGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg4YiwgMHhjMiwgMHg4YiwgMHhiNywgMHgxMiwgMHhkZSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGJkLCAweGMyLCAweDE3LCAweGY3LCAweDk2LCAweGY4LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZGQsIDB4NiwgMHhmNywgMHgyYSwgMHhmNywgMHgzMiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGZiLCAweDI4LCAweGZiLCAweGUsIDB4ZmIsIDB4MmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDYxLCAweDc3LCAweDUsIDB4NzYsIDB4ZmQsIDB4MmIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhjMiwgMHg2LCAweDc0LCAweGJkLCAweGJlLCAweDZiLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4NSwgMHhkYywgMHhjNCwgMHhlMiwgMHhkZiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDQ0LCAweDkwLCAweDFmLCAweDQ0LCAweDkwLCAweGZiLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ZTEsIDB4MWEsIDB4Y2EsIDB4ZTYsIDB4OTgsIDB4YjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlZiwgMHhjMywgMHhjMywgMHg3MCwgMHg3MCwgMHhiNiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweGMyLCAweGY3LCAweDMzLCAweDU0LCAweDU5LCAweDcsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg1NCwgMHhhMiwgMHg1MSwgMHgxYiwgMHhmYiwgMHg0LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4MzQsIDB4ZmIsIDB4YSwgMHhmNywgMHgyYSwgMHg4YywgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDFmLCAweGJjLCAweDg5LCAweGRmLCAweDkxLCAweDQ3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZmIsIDB4MSwgMHg4MywgMHg2NSwgMHg0YiwgMHg1MiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDVhLCAweDFlLCAweGJjLCAweDUzLCAweDcsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGY3LCAweDVhLCAweDU2LCAweGMwLCAweGY3LCAweDIyLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjksIDB4YzAsIDB4MTIsIDB4ZGUsIDB4YzMsIDB4NWEsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiNiwgMHhjMywgMHg2YywgMHhjMywgMHgxMywgMHg3YSwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDE1LCAweGMzLCAweGMwLCAweDYsIDB4YjMsIDB4NzgsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhjNCwgMHg4MywgMHg4OSwgMHg0YSwgMHgxOCwgMHg4ZSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDhjLCAweDk1LCAweDFiLCAweDk4LCAweDk2LCAweDg0LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4N2MsIDB4ODIsIDB4N2EsIDB4N2QsIDB4N2QsIDB4OGUsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxZiwgMHg3ZCwgMHg2OCwgMHg1LCAweDEzLCAweGJhLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YTAsIDB4ODUsIDB4OWUsIDB4MWIsIDB4YjEsIDB4YWUsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhhZCwgMHg3MywgMHg5ZSwgMHg3NywgMHg4YywgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDllLCAweDcsIDB4ZjcsIDB4MywgMHg4YywgMHhkYSwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweDFhLCAweGRjLCAweDRmLCAweGFlLCAweDQzLCAweDhmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4OTAsIDB4ZmIsIDB4M2QsIDB4ODUsIDB4ZGUsIDB4MWEsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHg5MSwgMHhiNywgMHgxZSwgMHgxMywgMHhiNiwgMHhjNCwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDcwLCAweGI2LCAweDFmLCAweDVjLCAweGMzLCAweGY3LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NWIsIDB4NywgMHhhNSwgMHg1ZCwgMHg1NSwgMHhhMSwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDQsIDB4NDEsIDB4NWQsIDB4MzgsIDB4ZmIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJlLCAweDg2LCAweGRkLCAweDg4LCAweDFmLCAweDEzLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4ODksIDB4ZGYsIDB4ODMsIDB4NDgsIDB4MWEsIDB4NDQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDkxLCAweDY1LCAweDRhLCAweDUzLCAweGE3LCAweGFmLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YjEsIDB4NTMsIDB4NywgMHhlLCAweDNlLCAweGMwLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YzAsIDB4MSwgMHhmNywgMHgxNiwgMHhjMCwgMHhmNywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDMsIDB4ZjcsIDB4MTYsIDB4ZGQsIDB4MTUsIDB4ZmIsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1MywgMHg3LCAweGE1LCAweGE3LCAweDhjLCAweDhmLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YTUsIDB4OTEsIDB4YWMsIDB4OWUsIDB4YjcsIDB4MWEsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHhhNywgMHg3NCwgMHg5ZSwgMHgxZSwgMHg4YiwgMHg3YywgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDkyLCAweDFlLCAweGUzLCAweDllLCAweDhjLCAweGM2LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4OGMsIDB4NywgMHhhZCwgMHg3MiwgMHhhNiwgMHg3MSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDY3LCAweGY3LCAweDMzLCAweDUsIDB4NzQsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg5MywgMHg5NiwgMHgxYSwgMHhhOSwgMHhhZSwgMHg4ZiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweDM2LCAweDIxLCAweGMwLCAweGY3LCAweDMzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NiwgMHg2OSwgMHg2OCwgMHg4YSwgMHg4MSwgMHg2ZSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDgyLCAweDdhLCAweDcwLCAweDZkLCAweDFhLCAweDZjLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YTEsIDB4NzcsIDB4MWUsIDB4OWUsIDB4N2EsIDB4NSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDU5LCAweDZiLCAweDUyLCAweDFhLCAweDY5LCAweDllLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NzksIDB4MWUsIDB4ZjcsIDB4NjUsIDB4ZmIsIDB4MzIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDc2LCAweDhlLCAweDdkLCAweDgwLCAweDFhLCAweDgxLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NmEsIDB4MWUsIDB4ZmIsIDB4NDksIDB4ZjUsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGJiLCAweDE1LCAweGZiLCAweDJjLCAweGY3LCAweDYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDk2LCAweDdhLCAweDliLCAweGEwLCAweDFhLCAweGIwLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YTUsIDB4MWUsIDB4ZjcsIDB4MzEsIDB4ZmIsIDB4NSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4N2UsIDB4OWYsIDB4N2EsIDB4NzUsIDB4MWEsIDB4N2MsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg0OCwgMHgxZSwgMHhlLCAweGE4LCAweDc2LCAweGY3LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4OGIsIDB4ZjcsIDB4YiwgMHgxLCAweGY3LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4MywgMHhmNywgMHg2MSwgMHg5MywgMHgxNSwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjEsIDB4ZjcsIDB4OGUsIDB4NSwgMHgyYiwgMHg2LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTAsIDB4NGMsIDB4YSwgMHhhMCwgMHg3NiwgMHhmOCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDEsIDB4ZWUsIDB4YzMsIDB4MywgMHhmNywgMHg4YSwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDYsIDB4ZjcsIDB4NTUsIDB4ZjgsIDB4YjgsIDB4NSwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDI1LCAweGZiLCAweDI4LCAweGMzLCAweGU3LCAweGY3LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweDdjLCAweGM2LCAweGY3LCAweGE5LCAweGM5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4YzQsIDB4MSwgMHhmMSwgMHhjNSwgMHhmNywgMHhhYSwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4MzQsIDB4ZjcsIDB4YmQsIDB4MTUsIDB4ZjcsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzOSwgMHhiOSwgMHhmNywgMHgzNywgMHgxZSwgMHhjNCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OGQsIDB4ZmIsIDB4MWQsIDB4MzgsIDB4ZmIsIDB4OWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhlOCwgMHgzNSwgMHhmNywgMHg2LCAweGYzLCAweGUwLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4ZWUsIDB4NDIsIDB4ZTcsIDB4ZmIsIDB4MiwgMHgzZCwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDYzLCAweDZlLCAweDFmLCAweDhlLCAweDM5LCAweDE1LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4YmUsIDB4YmUsIDB4Y2MsIDB4MWIsIDB4ZDMsIDB4YzcsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg1MSwgMHg2MiwgMHgzMywgMHgyYywgMHgzNCwgMHg1YiwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDg3LCAweDFmLCAweGUsIDB4M2IsIDB4ZjksIDB4NTksIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweGY3LCAweGYyLCAweDMsIDB4ZjcsIDB4MTEsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhiMywgMHg3OSwgMHhmNywgMHhjYSwgMHhmOSwgMHg0NiwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDUsIDB4ZSwgMHhlLCAweDc2LCAweGM1LCAweDcwLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjQsIDB4YzUsIDB4ZjcsIDB4NzEsIDB4YzQsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhjMSwgMHg4OSwgMHhjMCwgMHgxMywgMHhiOCwgMHhmNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4MTUsIDB4YTMsIDB4NTcsIDB4NSwgMHgxMywgMHg3OCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGI1LCAweDkxLCAweGFkLCAweDFiLCAweDEzLCAweGI4LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NmMsIDB4YWUsIDB4MWIsIDB4YjYsIDB4YjIsIDB4OWQsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHgxZiwgMHg3NiwgMHhiOSwgMHg1LCAweDdmLCAweDdhLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NjgsIDB4MWIsIDB4MTMsIDB4NzQsIDB4NmUsIDB4OGEsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg1MCwgMHg4YywgMHg4LCAweDZlLCAweDY5LCAweDg2LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4MWYsIDB4ODgsIDB4NiwgMHhiNiwgMHhjMSwgMHhhMywgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGI4LCAweDhjLCAweGE4LCAweDg4LCAweGE4LCAweDgxLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmNywgMHg2MSwgMHhjNSwgMHhmYiwgMHg3MywgMHg2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ODAsIDB4YTMsIDB4ODEsIDB4YmIsIDB4YTIsIDB4MWEsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhiNywgMHhkOCwgMHhiZSwgMHhiOSwgMHg2NywgMHg1YSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGMwLCAweGE5LCAweDUsIDB4YzMsIDB4NzAsIDB4NTIsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgxYiwgMHhmYiwgMHhiLCAweDRhLCAweDM4LCAweDJmLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4NjcsIDB4OWMsIDB4NmEsIDB4MWYsIDB4MzIsIDB4NTEsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGI0LCAweDkzLCAweDczLCAweDhlLCAweDczLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NDgsIDB4NmQsIDB4NTEsIDB4NWEsIDB4NWIsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGMyLCAweGY3LCAweGU0LCAweGMyLCAweGY3LCAweDE2LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHgyYSwgMHhjMSwgMHgzLCAweGQ5LCAweGY4LCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhkMywgMHhmYiwgMHg5OCwgMHg2LCAweGZiLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc5LCAweGJmLCAweGQ1LCAweGQ1LCAweGE4LCAweGE2LCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODUsIDB4YzEsIDB4NSwgMHg3NywgMHg1NywgMHg0MSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweDFiLCAweDNmLCAweDYyLCAweDlkLCAweGRkLCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4ZjcsIDB4OGMsIDB4YzIsIDB4ZmIsIDB4OGMsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhmYiwgMHgxNiwgMHg0MywgMHg3LCAweGUsIDB4ZmIsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhmNywgMHgxNiwgMHhjMSwgMHhmNywgMHhlMSwgMHhjMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YzAsIDB4MSwgMHhmNiwgMHhjMywgMHhmNywgMHhmYiwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OWUsIDB4MjMsIDB4MTUsIDB4NTYsIDB4ZjcsIDB4YzUsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNSwgMHhmNywgMHg2NSwgMHg3LCAweDY0LCAweGFiLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4ZWEsIDB4MWIsIDB4ZjcsIDB4MTQsIDB4ZjIsIDB4ZWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgxNCwgMHhmYiwgMHgyLCAweGU0LCAweGZiLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg0YiwgMHg2NywgMHg1ZSwgMHg2NiwgMHgxZiwgMHhmNywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI0LCAweDU2LCAweGUzLCAweGZkLCAweDNjLCAweDcsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmNCwgMHgxNSwgMHhlMiwgMHhkMCwgMHhkOSwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWUsIDB4YjAsIDB4ZmIsIDB4MSwgMHg1NCwgMHgyMSwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDIwLCAweDJhLCAweDM5LCAweGNmLCAweGVmLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhiZiwgMHhmNywgMHg3ZSwgMHhjNiwgMHhmNywgMHg3YywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY4LCAweDJiLCAweGM5LCAweDZiLCAweGM1LCAweDEzLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4YTYsIDB4MTUsIDB4NzAsIDB4YmMsIDB4Y2QsIDB4N2MsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgyLCAweGYyLCAweGJiLCAweGY3LCAweDExLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgzMywgMHhhZSwgMHg2NSwgMHg5MSwgMHgxZiwgMHgxMywgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDllLCAweGM0LCAweGM4LCAweGQ2LCAweDFhLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhiYiwgMHgzMiwgMHg0ZCwgMHg0YSwgMHg3MCwgMHg2NywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGE4LCAweDU4LCAweDUsIDB4YWUsIDB4YjQsIDB4YzAsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHgxYiwgMHhjZCwgMHhjNCwgMHg3NCwgMHgzZCwgMHg1NSwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDMwLCAweDFmLCAweDg4LCAweDUwLCAweDYsIDB4MTMsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHg4YSwgMHhmNywgMHhiLCAweDc5LCAweDJmLCAweDFhLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4NjYsIDB4M2EsIDB4NTMsIDB4NGYsIDB4OWMsIDB4YTksIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDYyLCAweGMyLCAweDVhLCAweDc2LCAweGY3LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmNywgMHg0NywgMHhjMiwgMHhmNywgMHg5OSwgMHhiZiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ0LCAweGMxLCAweDZhLCAweGJmLCAweGY3LCAweDY0LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmQsIDB4ZjcsIDB4Y2EsIDB4Y2MsIDB4MTUsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1MCwgMHg1NCwgMHhmNywgMHgzNCwgMHhjMiwgMHg1YSwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGMxLCAweDVhLCAweGY3LCAweDU2LCAweDRlLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHg2NSwgMHg1LCAweGNlLCAweDlhLCAweDE1LCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OCwgMHg1LCAweGZiLCAweDgsIDB4NywgMHhmYywgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI0LCAweDE1LCAweDEzLCAweDdiLCAweGI2LCAweDZjLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4ZjksIDB4NDcsIDB4NjAsIDB4YWEsIDB4NSwgMHhmYywgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGU3LCAweDE1LCAweDdjLCAweGE4LCAweGJiLCAweDdkLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4Y2EsIDB4YzksIDB4YjMsIDB4Y2UsIDB4YzAsIDB4NzQsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg5OSwgMHgxZiwgMHgxMywgMHhiZCwgMHhhMCwgMHg5ZCwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGFkLCAweDFhLCAweGNiLCAweDVkLCAweGIzLCAweDRlLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4N2IsIDB4NzUsIDB4NmQsIDB4MWUsIDB4OWYsIDB4NTcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDliLCAweGI1LCAweDlhLCAweGFlLCAweDFiLCAweGE3LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NjgsIDB4NjksIDB4NzIsIDB4NzQsIDB4NDcsIDB4OGQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg3LCAweDEzLCAweGJiLCAweGJiLCAweGNkLCAweDhiLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NjcsIDB4N2EsIDB4NjMsIDB4NjUsIDB4NjEsIDB4OTQsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxZiwgMHhlLCAweGY3LCAweDg0LCAweGMyLCAweGY3LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4MTIsIDB4ZjcsIDB4ZjMsIDB4YzMsIDB4NjMsIDB4YzUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhmNywgMHg0MiwgMHhmNywgMHhhMiwgMHgxNSwgMHg3YywgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDdjLCAweGI0LCAweDFiLCAweGNjLCAweGNiLCAweGIzLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4NzMsIDB4OWQsIDB4NmYsIDB4OTksIDB4MWYsIDB4MTMsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhhMiwgMHg5MywgMHhhYiwgMHhhYSwgMHgxYSwgMHhiZSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDQ4LCAweDYwLCAweDVlLCAweDdhLCAweDczLCAweDZiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4NWQsIDB4NSwgMHhhMCwgMHhhNCwgMHhiNCwgMHg5NSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGFhLCAweGE1LCAweDdiLCAweDY3LCAweDY5LCAweDZmLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4OGQsIDB4MWYsIDB4NTUsIDB4NywgMHgxMywgMHhkMCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGNiLCAweDg4LCAweDU5LCAweDFhLCAweDYzLCAweDY3LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NjYsIDB4NjIsIDB4OTcsIDB4OWYsIDB4NzUsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDdkLCAweGJjLCAweDlkLCAweGJkLCAweDEsIDB4ZjAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgxNSwgMHhiZSwgMHg4MCwgMHg1LCAweDk5LCAweDhmLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4YWYsIDB4MWIsIDB4YTksIDB4OWQsIDB4NzcsIDB4NzksIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3YywgMHg5ZiwgMHhhMiwgMHg3ZCwgMHhiMSwgMHgxYiwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGJhLCAweGMzLCAweDllLCAweDFmLCAweDU5LCAweDk1LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NmUsIDB4NjUsIDB4NjIsIDB4OGEsIDB4MTksIDB4NzMsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg5OSwgMHg3YSwgMHgxZiwgMHg5ZSwgMHg3NCwgMHg3NCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDFiLCAweDU4LCAweDU3LCAweDY2LCAweDRhLCAweDc1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHhiMCwgMHg3NiwgMHhmNywgMHg5MywgMHhiNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4YjgsIDB4ZjcsIDB4MywgMHhiNywgMHhmNywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDMsIDB4ZjcsIDB4YWMsIDB4ZjcsIDB4OWIsIDB4MTUsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5OCwgMHg2LCAweGNiLCAweGZiLCAweDk4LCAweDUsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGM4LCAweGY3LCAweDk3LCAweDUsIDB4ZmIsIDB4OTcsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiZiwgMHgzOSwgMHg3LCAweDU2LCAweGZiLCAweDdjLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2MsIDB4NSwgMHgzYSwgMHg2LCAweGZiLCAweDMwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4MTUsIDB4YjgsIDB4ZjcsIDB4OTMsIDB4ZDcsIDB4YjcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1ZiwgMHhkNiwgMHg2LCAweGUsIDB4OGIsIDB4YzIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3NywgMHhmNywgMHgxYSwgMHhjNSwgMHgxLCAweGY4LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4MywgMHhlZSwgMHgxNiwgMHhmOCwgMHgyNSwgMHhmNywgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDMyLCAweGZiLCAweDlkLCAweDYsIDB4ZjcsIDB4NmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmNSwgMHhkZSwgMHhmNywgMHg0LCAweDFhLCAweGY3LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4Y2MsIDB4ZmIsIDB4MSwgMHgzNywgMHg0YiwgMHg2NiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDFlLCAweDUwLCAweGMxLCAweDcsIDB4ZDIsIDB4YzQsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHhkZCwgMHhiYiwgMHg1ZCwgMHgyZiwgMHgzZiwgMHgyZiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDcyLCAweDFlLCAweDQyLCAweDRjLCAweDQxLCAweDQ2LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4OCwgMHhlLCAweGY3LCAweDhkLCAweGMyLCAweGY3LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4MSwgMHhmNywgMHg1MywgMHhiZiwgMHhmNywgMHgxNCwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NDQsIDB4ZjcsIDB4OGQsIDB4MTUsIDB4ZjcsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmYiwgMHgzOCwgMHg2LCAweGY3LCAweDksIDB4ZTgsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhkMywgMHgxYSwgMHhjNSwgMHg2NCwgMHhjMiwgMHgzYiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDgwLCAweDRhLCAweDc0LCAweDFlLCAweDU1LCAweGJmLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHg4MywgMHhiMCwgMHg5ZiwgMHhhYiwgMHgxYiwgMHhiNSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDY4LCAweDU1LCAweGZiLCAweDFmLCAweDI2LCAweDUzLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHg3YywgMHhjMCwgMHg2MiwgMHhjMSwgMHhmNywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDEyLCAweGY3LCAweDQsIDB4YzAsIDB4ZjcsIDB4YTIsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiOCwgMHhhOCwgMHhmOCwgMHg4LCAweDE1LCAweGRlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4NiwgMHgzMSwgMHhjZiwgMHg1OSwgMHhlMywgMHhiMiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweGQzLCAweGQ3LCAweDFlLCAweDEzLCAweDc4LCAweDNmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YzEsIDB4MzksIDB4ZjgsIDB4YiwgMHhmYiwgMHgxYywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGZiLCAweDcxLCAweDcsIDB4MTMsIDB4YjgsIDB4NWEsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg0YiwgMHg0ZiwgMHgxYiwgMHg0MiwgMHg2MiwgMHhiNSwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweGE2LCAweGZiLCAweDFjLCAweDcsIDB4ZSwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NDEsIDB4ZjgsIDB4ODIsIDB4MTUsIDB4ZjcsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHg2YSwgMHhkNSwgMHhmYiwgMHg5ZSwgMHhmYiwgMHgyNiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTgsIDB4ZmIsIDB4MjUsIDB4MmIsIDB4YSwgMHgzZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHhmOCwgMHg4ZiwgMHgxNSwgMHhiMywgMHg3OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGY3LCAweGIsIDB4ZjcsIDB4MjYsIDB4ZmIsIDB4YiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGZiLCAweDI3LCAweGY3LCAweDMxLCAweDUsIDB4M2MsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDc3LCAweGZiLCAweGFmLCAweDJiLCAweGEsIDB4N2MsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2NywgMHhhLCAweGU3LCAweGY3LCAweDksIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGMwLCAweDk0LCAweGUwLCAweGNhLCAweGRjLCAweGFhLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmYsIDB4ZjcsIDB4ZDYsIDB4ZjgsIDB4YTQsIDB4NzIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI4LCAweGZiLCAweDksIDB4MTUsIDB4ZTAsIDB4ZjcsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDYsIDB4ZmIsIDB4MjUsIDB4ZmIsIDB4OWMsIDB4MzgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDdmLCAweDNiLCAweGEsIDB4MTMsIDB4YmYsIDB4MzMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGEsIDB4ZjcsIDB4MmMsIDB4ZjgsIDB4ZTgsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHgyNCwgMHg5NiwgMHhhYSwgMHhmYiwgMHg5YywgMHhmNywgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MzEsIDB4ZmIsIDB4YjcsIDB4MmIsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweGJkLCAweDEsIDB4OGIsIDB4ZjgsIDB4ZWMsIDB4MywgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NTksIDB4ZjgsIDB4ZWMsIDB4YmQsIDB4NywgMHhlLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4MTEsIDB4YzIsIDB4MSwgMHg5YSwgMHhmNywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweGY3LCAweDY5LCAweDMsIDB4ZjcsIDB4OWUsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjYywgMHg2LCAweGY3LCAweDQ1LCAweGY4LCAweDExLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHhjMiwgMHhmYiwgMHg2OSwgMHg1NCwgMHhkNSwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4ZmIsIDB4ZDEsIDB4ZmIsIDB4MjgsIDB4ZjcsIDB4ZDEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGMyLCAweGZiLCAweDY4LCAweDU0LCAweGQ0LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDc2LCAweGY4LCAweDExLCAweGMyLCAweDEsIDB4OTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhmNywgMHg4YywgMHhmNywgMHgzNCwgMHgzLCAweGY3LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4MTUsIDB4Y2EsIDB4NiwgMHhkYywgMHhmNywgMHg5YiwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDliLCAweDUsIDB4YzksIDB4NiwgMHhmNiwgMHhmOCwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YWYsIDB4YzIsIDB4ZmIsIDB4MzQsIDB4NTQsIDB4Y2UsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGZiLCAweGM0LCAweDM0LCAweGY3LCAweGIwLCAweDUsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDM1LCAweGZiLCAweGFlLCAweDMzLCAweGY3LCAweGMyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhjMiwgMHhmYiwgMHgzOSwgMHg1NCwgMHhhZCwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhhLCAweGIwLCAweGY3LCAweDViLCAweGY3LCAweDE4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4MywgMHg5ZiwgMHgxNiwgMHhmNywgMHg2ZCwgMHhjMSwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg1LCAweDQzLCAweDU1LCAweGY3LCAweDZmLCAweGMxLCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg0MCwgMHhmNywgMHgzZSwgMHhmNywgMHgyOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDUsIDB4ZDcsIDB4YzEsIDB4ZmIsIDB4NTAsIDB4NTUsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDUsIDB4ZmIsIDB4NSwgMHhmYiwgMHg0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1LCAweGJkLCAweGMxLCAweGZiLCAweDViLCAweDU1LCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgyOCwgMHhmYiwgMHgyNywgMHhmYiwgMHg0MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDUsIDB4NDIsIDB4NiwgMHhlLCAweGZiLCAweDMxLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NzUsIDB4YmUsIDB4NmEsIDB4YSwgMHgxMywgMHhlOCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGMwLCAweDIxLCAweDE1LCAweDU4LCAweGY3LCAweDlhLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NywgMHhmNywgMHhjMSwgMHhmOCwgMHg3NSwgMHg1LCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4ZmIsIDB4NGIsIDB4NTgsIDB4YzQsIDB4NiwgMHhmYiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGExLCAweGZiLCAweDM0LCAweGY3LCAweGExLCAweDUsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhmYiwgMHg1OCwgMHg1OCwgMHhkMCwgMHg2LCAweGY3LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZDMsIDB4MjUsIDB4ZmIsIDB4MzYsIDB4NSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4YzAsIDB4ZjgsIDB4ODcsIDB4YzAsIDB4NmEsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGY3LCAweDNlLCAweGY4LCAweDg5LCAweDE1LCAweGY3LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4NjksIDB4ZDMsIDB4ZmIsIDB4YTYsIDB4ZmIsIDB4MjEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGZkLCAweGYsIDB4MTUsIDB4NTYsIDB4ZjcsIDB4OWEsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHg3LCAweGY3LCAweGMxLCAweGY4LCAweDg3LCAweDUsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhmYiwgMHg0YiwgMHg1NiwgMHhjNCwgMHg2LCAweGZiLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YWIsIDB4ZmIsIDB4MzUsIDB4ZjcsIDB4YWIsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGNkLCAweGMwLCAweGZiLCAweDU4LCAweDU2LCAweGQwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NCwgMHhmYiwgMHhlMCwgMHgyNCwgMHhmYiwgMHgzYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHgzMSwgMHhiZCwgMHhmOCwgMHg2NiwgMHhiYywgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4MTIsIDB4OTIsIDB4ZjcsIDB4NTgsIDB4NmIsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhlMCwgMHg4YSwgMHhmNywgMHg0YiwgMHgxMywgMHhlYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGY4LCAweDc3LCAweDE1LCAweGUwLCAweGY3LCAweDQsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhhLCAweDE1LCAweGUyLCAweGY3LCAweDQsIDB4MzQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGQyLCAweGZiLCAweGEsIDB4ZmQsIDB4NTIsIDB4MTUsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5YSwgMHhiZCwgMHgzMiwgMHg3LCAweGY3LCAweGMxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NSwgMHhjYywgMHhiYywgMHhmYiwgMHg0YiwgMHg1YSwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4M2MsIDB4ZmIsIDB4OTksIDB4ZmIsIDB4MzUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg1LCAweGNkLCAweGJjLCAweGZiLCAweDU4LCAweDVhLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg1NCwgMHhmYiwgMHhjOSwgMHgyNCwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHg4YiwgMHhjMSwgMHhkOCwgMHhjMSwgMHhkMSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVhLCAweGMxLCAweDEsIDB4YTUsIDB4ZjcsIDB4NjAsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhiNCwgMHhmNywgMHg1ZiwgMHgzLCAweGY3LCAweDNjLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTEsIDB4YzEsIDB4MjAsIDB4ZDgsIDB4ZjcsIDB4MTUsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNSwgMHhkMSwgMHhmNywgMHgxNSwgMHhjMiwgMHhmYiwgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg0NywgMHhmNywgMHg1YSwgMHg1LCAweGM0LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWYsIDB4NTUsIDB4Y2UsIDB4NiwgMHhmYiwgMHgxZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGZiLCAweDFkLCAweGY3LCAweDJiLCAweDUsIDB4Y2QsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2MCwgMHg1NSwgMHhjYSwgMHg2LCAweGY3LCAweDQzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NSwgMHhmYiwgMHg5LCAweDU0LCAweGY3LCAweDE1LCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTUsIDB4NTUsIDB4ZjcsIDB4MTUsIDB4M2UsIDB4ZmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg3NCwgMHhhLCAweGY3LCAweDQsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhjMSwgMHgzLCAweGVkLCAweDE2LCAweGY4LCAweDI3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4NTUsIDB4MjcsIDB4ZmIsIDB4YTMsIDB4NiwgMHhmNywgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQ2LCAweDUsIDB4YmQsIDB4ZmMsIDB4MTksIDB4ZmIsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhlYywgMHhmNywgMHg5NCwgMHg3LCAweGZiLCAweGQ4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4NSwgMHhlLCAweDhiLCAweDY3LCAweGEsIDB4YmYsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDMsIDB4YzEsIDB4ZjcsIDB4YWQsIDB4YzIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDllLCAweGY4LCAweDdmLCAweDE1LCAweGRhLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmNywgMHgzMiwgMHg2MiwgMHg5ZiwgMHhmYiwgMHgyNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4ZmIsIDB4MjgsIDB4ZjcsIDB4YywgMHg2MiwgMHg3NywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4ZmQsIDB4MWMsIDB4MTUsIDB4ZjgsIDB4MjcsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHgyNSwgMHhmYiwgMHhhMywgMHg2LCAweGY3LCAweGRhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4NSwgMHhjMiwgMHhmYywgMHgxYSwgMHhmYiwgMHgzMiwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4OGMsIDB4ZjIsIDB4NSwgMHhmNywgMHg5OCwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4ZmIsIDB4ZTAsIDB4NSwgMHhlLCAweDdkLCAweGMxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YzIsIDB4MSwgMHhmNSwgMHhjNCwgMHhmNywgMHhhNSwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjUsIDB4ZjcsIDB4YzQsIDB4MTUsIDB4ZmIsIDB4MjksIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzZCwgMHhmNywgMHg0MCwgMHhmNywgMHg0NSwgMHg5YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGY3LCAweDI2LCAweGY3LCAweDFiLCAweDc4LCAweGY3LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDEsIDB4ZmIsIDB4NDEsIDB4NzQsIDB4ZmIsIDB4NDksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHgxZSwgMHhjNCwgMHgxNiwgMHhmNywgMHhmLCAweDllLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZjcsIDB4YywgMHhmNywgMHgzLCAweGEyLCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTAsIDB4ZmIsIDB4MTcsIDB4NzgsIDB4ZmIsIDB4MTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDYsIDB4NzUsIDB4ZjcsIDB4MTcsIDB4ZjcsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDc5LCAweDlkLCAweGY4LCAweDNlLCAweDlhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHg5ZCwgMHhhOSwgMHg5NywgMHg2LCAweGZiLCAweDMxLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxZSwgMHhhMCwgMHgzOSwgMHg2MywgMHhmZiwgMHhjLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhhLCAweGMyLCAweGIsIDB4ZjgsIDB4ZWMsIDB4MTQsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHgwLCAweDYzLCAweDIsIDB4MCwgMHgxLCAweDAsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDcwLCAweDAsIDB4YWUsIDB4MCwgMHhiOCwgMHgwLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjMiwgMHgwLCAweGM4LCAweDAsIDB4ZTUsIDB4MCwgMHhmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MTgsIDB4MSwgMHgyZSwgMHgxLCAweDM4LCAweDEsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDU1LCAweDEsIDB4NzEsIDB4MSwgMHg3NiwgMHgxLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg5YSwgMHgxLCAweGE5LCAweDEsIDB4YmEsIDB4MSwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZDgsIDB4MiwgMHg3LCAweDIsIDB4MWMsIDB4MiwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MzMsIDB4MiwgMHg1YSwgMHgyLCAweDY5LCAweDIsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDdkLCAweDIsIDB4ODgsIDB4MiwgMHg5NywgMHgyLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhhZSwgMHgyLCAweGI3LCAweDIsIDB4Y2YsIDB4MiwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4ZmQsIDB4MywgMHg0LCAweDMsIDB4ZSwgMHgzLCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgzYSwgMHgzLCAweDRlLCAweDMsIDB4NjMsIDB4MywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4N2YsIDB4MywgMHg4OCwgMHgzLCAweDkxLCAweDMsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGI3LCAweDMsIDB4YzksIDB4MywgMHhkYiwgMHgzLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhlYiwgMHgzLCAweGYzLCAweDMsIDB4ZmIsIDB4NCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhlLCAweDQsIDB4MTMsIDB4NCwgMHgxZSwgMHg0LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgzMSwgMHg0LCAweDM4LCAweDQsIDB4NDEsIDB4NCwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NTMsIDB4NCwgMHg1YSwgMHg0LCAweDYwLCAweDQsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDc0LCAweDQsIDB4ODEsIDB4NCwgMHg4NiwgMHg0LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg5NiwgMHg0LCAweGEyLCAweDQsIDB4YTgsIDB4NCwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4YjksIDB4NCwgMHhjNCwgMHg0LCAweGNlLCAweDQsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGU0LCAweDQsIDB4ZWIsIDB4NCwgMHhmMiwgMHg0LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgwLCAweDUsIDB4NywgMHg1LCAweDExLCAweDUsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDI0LCAweDUsIDB4MmQsIDB4NSwgMHgzNiwgMHg1LCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0OCwgMHg1LCAweDUxLCAweDUsIDB4NTgsIDB4NSwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NjQsIDB4NSwgMHg2OSwgMHgxNSwgMHhmYiwgMHgzNywgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFhLCAweGY3LCAweDMwLCAweGY3LCAweDM0LCAweGU5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4MzcsIDB4ZTksIDB4NWEsIDB4ZjcsIDB4NWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHhmYiwgMHg0MywgMHgzNSwgMHhmYiwgMHgzMSwgMHhmYiwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGMxLCAweDg5LCAweDE1LCAweGU0LCAweGMxLCAweGY3LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4ZjcsIDB4MmMsIDB4YmEsIDB4ZmIsIDB4M2QsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMywgMHg0NywgMHhmYiwgMHg3LCAweGZiLCAweDE1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4M2QsIDB4ZjcsIDB4NywgMHhmNywgMHgxMywgMHgxZSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZmIsIDB4MWIsIDB4ZTIsIDB4MmIsIDB4ZjcsIDB4MmEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhlOSwgMHhlZCwgMHhmNywgMHgxOSwgMHhmNywgMHgyMCwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweGZiLCAweDI1LCAweGZiLCAweDFiLCAweDIzLCAweDMzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4MWUsIDB4YzUsIDB4OGEsIDB4MTUsIDB4ZTksIDB4YzksIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiLCAweGY3LCAweGUsIDB4YzIsIDB4MzgsIDB4MmUsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHgyZiwgMHhmYiwgMHg4LCAweGZiLCAweGEsIDB4NGYsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHgxZSwgMHhlLCAweDE1LCAweGY4LCAweDM2LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHg0NSwgMHhmNywgMHhlLCAweGZiLCAweDNiLCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4MjQsIDB4ZmIsIDB4MWYsIDB4ZmIsIDB4YywgMHhkMSwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ3LCAweGRkLCAweGUwLCAweGE2LCAweGIwLCAweGNkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4YzAsIDB4NSwgMHg1ZiwgMHgzYiwgMHgzYywgMHg3OSwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDJhLCAweDI0LCAweGI4LCAweGY3LCAweDYsIDB4MWYsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgxNSwgMHhjNywgMHg5MywgMHhjMiwgMHhkOSwgMHhmNywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4MTksIDB4YTksIDB4MmUsIDB4NWUsIDB4OTYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDI2LCAweGEsIDB4MTMsIDB4N2MsIDB4MjksIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDJhLCAweGEsIDB4MjUsIDB4YSwgMHgzYywgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhhLCAweDI3LCAweGEsIDB4YiwgMHgyOCwgMHhhLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxZiwgMHhiLCAweGY3LCAweDYwLCAweGMxLCAweDU3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2MCwgMHhmOCwgMHg5MywgMHg1LCAweGZiLCAweDgyLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjAsIDB4NiwgMHhmYiwgMHg0OCwgMHhmYywgMHg1ZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NiwgMHhmNywgMHg0ZSwgMHhmNywgMHg0NSwgMHgxNSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OWEsIDB4YWIsIDB4ZTAsIDB4YTcsIDB4ZDEsIDB4MWIsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHg4YiwgMHgyMSwgMHgxZiwgMHg2YiwgMHg3LCAweDkyLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4OTIsIDB4NTksIDB4MWIsIDB4ZmIsIDB4M2MsIDB4NTUsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhiLCAweDM2LCAweGY3LCAweDFlLCAweGMzLCAweDM4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4NywgMHhlYiwgMHg1OSwgMHhjMywgMHhmYiwgMHgxNCwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDc3LCAweDczLCAweDRmLCAweDFlLCAweGY3LCAweGUxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4MTUsIDB4YiwgMHg0ZSwgMHg1OCwgMHg0NiwgMHg1YywgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDRjLCAweDYwLCAweGI0LCAweGIyLCAweGUxLCAweGY3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHhjYiwgMHhiOCwgMHhiNiwgMHg4NSwgMHg4MywgMHhiNiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MzgsIDB4YSwgMHgxMywgMHg3OCwgMHgzYiwgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4MzMsIDB4YSwgMHgyNiwgMHhhLCAweDEzLCAweDdmLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhiZiwgMHgyYSwgMHhhLCAweGY3LCAweDYzLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NiwgMHhiOSwgMHhmNywgMHhmLCAweDUsIDB4ZjcsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGJhLCAweGZiLCAweGYsIDB4NSwgMHgyYywgMHg1NSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzgsIDB4MzksIDB4YzQsIDB4ZjcsIDB4NmYsIDB4NTIsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzOCwgMHhmNywgMHg1ZSwgMHhmNywgMHhjMiwgMHhmYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGY3LCAweDUxLCAweGZjLCAweDg1LCAweDU1LCAweGRlLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4MzgsIDB4NiwgMHhiLCAweDQwLCAweGEsIDB4MmUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4MTksIDB4MzEsIDB4YSwgMHhiNywgMHhmNywgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweGEsIDB4YiwgMHhmNywgMHgxMSwgMHhkOSwgMHhkNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDFlLCAweGY3LCAweGM0LCAweGQ4LCAweGMyLCAweGZiLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4ZjIsIDB4ZmIsIDB4YzMsIDB4NywgMHhmYiwgMHhlLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4M2MsIDB4MzEsIDB4NGIsIDB4YiwgMHhmOCwgMHgyYywgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQzLCAweGY4LCAweDVjLCAweDQyLCAweGEsIDB4ZmMsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MywgMHg2LCAweGIsIDB4NTgsIDB4NjMsIDB4NTcsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHgxYiwgMHg0MiwgMHg2MywgMHhiNiwgMHhkNSwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGZiLCAweDFjLCAweDcsIDB4ZSwgMHgxNSwgMHhkYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDYsIDB4ZmIsIDB4MWEsIDB4ZDUsIDB4MzAsIDB4MzAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjgsIDB4MmUsIDB4YzIsIDB4ZmIsIDB4NDMsIDB4ZjgsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1YywgMHg1NCwgMHhmNywgMHgyNCwgMHhmYiwgMHhkYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweDYsIDB4YiwgMHhmNywgMHhjOCwgMHhjMSwgMHhmYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQzLCAweDYsIDB4ZjcsIDB4NDUsIDB4ZjcsIDB4YWUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGMxLCAweGZiLCAweDVjLCAweDU1LCAweGQxLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhmYiwgMHg3OCwgMHhmYiwgMHgyNywgMHhmNywgMHg3OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4YzEsIDB4ZmIsIDB4NWQsIDB4NTUsIDB4Y2YsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGZiLCAweGFlLCAweDUsIDB4ZmIsIDB4NDMsIDB4ZmIsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGIsIDB4MTUsIDB4ZGQsIDB4NiwgMHhmNywgMHgyYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDYwLCAweDlkLCAweGZiLCAweDI3LCAweGZiLCAweGQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhmNywgMHhkLCAweDYyLCAweDc4LCAweDUsIDB4ZSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGZiLCAweDkwLCAweDYsIDB4MmUsIDB4Y2YsIDB4NTgsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhiZSwgMHg5YiwgMHhkNSwgMHhkNywgMHgxZSwgMHhiLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHg0MCwgMHgzYywgMHhhLCAweGIsIDB4MTUsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg1MSwgMHhkOSwgMHhkNCwgMHhjMSwgMHhjNCwgMHhkMCwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGM2LCAweDMzLCAweDNlLCAweDVhLCAweDRmLCAweDRhLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4OGEsIDB4MTUsIDB4YjUsIDB4YTYsIDB4YTksIDB4YjksIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg2YSwgMHg2NSwgMHg2OCwgMHg3MSwgMHg2OCwgMHg1ZCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGE1LCAweGI2LCAweDFlLCAweGIsIDB4M2QsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgzOCwgMHhmOCwgMHgxNCwgMHhmYiwgMHgxYywgMHg1NCwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgwLCAweDcsIDB4YiwgMHhmNywgMHgzLCAweGY3LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YiwgMHhmYiwgMHhiYiwgMHg1LCAweGIsIDB4NDksIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmNCwgMHhkOSwgMHhkMiwgMHhiNywgMHhjMCwgMHhjMywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4YSwgMHgxMiwgMHhiYSwgMHhjNSwgMHhmNywgMHhjOSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGJjLCAweGIsIDB4N2MsIDB4YzEsIDB4NjEsIDB4NjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY3LCAweDQsIDB4YzAsIDB4ZjcsIDB4YTEsIDB4YzAsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhiLCAweGY4LCAweDg1LCAweGY3LCAweDUxLCAweDUzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4YzMsIDB4ZjcsIDB4NWQsIDB4YiwgMHg3YywgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGMzLCAweGY3LCAweDM0LCAweGMzLCAweGY3LCAweDEwLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmNywgMHgzZSwgMHhjMSwgMHhmYywgMHgyNCwgMHg1NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGIsIDB4ZDEsIDB4ZWUsIDB4Y2YsIDB4YzgsIDB4NjcsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHgxZiwgMHg0MCwgMHhjMiwgMHhmNywgMHg2YSwgMHg1NCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YWUsIDB4NjUsIDB4NGYsIDB4YWEsIDB4NDAsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhiLCAweDNjLCAweDFiLCAweGZiLCAweDJhLCAweDNkLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4MzAsIDB4ZDMsIDB4MjgsIDB4ZjcsIDB4MmYsIDB4Y2MsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhiYSwgMHhiMywgMHgxZiwgMHhmYiwgMHg5LCAweDcsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhiLCAweDE1LCAweGMzLCAweDYsIDB4ZWYsIDB4ZjcsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDMxLCAweDYsIDB4ZTcsIDB4ZmIsIDB4N2UsIDB4MTUsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGVjLCAweGY3LCAweDdlLCAweDUsIDB4MzIsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4YzIsIDB4ZjgsIDB4NTgsIDB4YzIsIDB4MSwgMHhiLCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg3OCwgMHg3NywgMHgxLCAweDYxLCAweGEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MTUsIDB4ZjcsIDB4OWYsIDB4YzAsIDB4MjEsIDB4ZjcsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHhjMCwgMHgyMSwgMHhjZCwgMHg2LCAweGRiLCAweGNlLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4NzQsIDB4MWUsIDB4OTQsIDB4YmUsIDB4NSwgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4ZTksIDB4ZjcsIDB4MjQsIDB4MmQsIDB4YjQsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNiwgMHhmNywgMHgxOSwgMHg1LCAweDNiLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmYiwgMHgxOSwgMHg1LCAweGIsIDB4OTIsIDB4NzIsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg3NCwgMHgxYiwgMHgzYywgMHg0ZSwgMHg2MiwgMHgzMCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDIxLCAweDU2LCAweGY1LCAweGZiLCAweGQ1LCAweDIxLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDUzLCAweDhjLCAweDE1LCAweDQ2LCAweGM0LCAweDUyLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4YzUsIDB4YzQsIDB4ZDAsIDB4ZDAsIDB4NTEsIDB4YzUsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHg1MiwgMHg1MSwgMHg0NiwgMHgxZSwgMHhiLCAweDE1LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NmUsIDB4YjUsIDB4YWIsIDB4YWIsIDB4YTMsIDB4YWQsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhhOSwgMHg2MywgMHg2NSwgMHg2ZCwgMHg3MCwgMHg2YSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OGIsIDB4YzEsIDB4ZjcsIDB4ZiwgMHhjMSwgMHhmNywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGIsIDB4OGIsIDB4YzEsIDB4ZjcsIDB4NWQsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhjMSwgMHhiLCAweDFlLCAweGY3LCAweGJmLCAweGY1LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODEsIDB4NywgMHhiLCAweDUsIDB4ODAsIDB4YmYsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHhkZCwgMHgxYiwgMHhmNywgMHhlLCAweGQ4LCAweGMwLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjgsIDB4MTEsIDB4YzksIDB4YmUsIDB4ZmIsIDB4NywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4YTIsIDB4NzQsIDB4YTgsIDB4YTgsIDB4YTIsIDB4YTIsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg3NCwgMHhhMiwgMHg2ZSwgMHg2ZSwgMHg3NCwgMHg3NCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGIsIDB4NjQsIDB4YWIsIDB4NzUsIDB4YjIsIDB4YjIsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhiMiwgMHhiMiwgMHg2YiwgMHhhMSwgMHg2NCwgMHg2NCwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDY0LCAweDFlLCAweGIsIDB4ZmIsIDB4MzEsIDB4ZjcsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHhkNCwgMHhhMCwgMHhhNSwgMHhjYSwgMHgxZiwgMHhmNywgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGMyLCAweGZiLCAweDlmLCAweDcsIDB4YiwgMHg4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweGY3LCAweDRiLCAweGY3LCAweDYwLCAweGIsIDB4MSwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGY3LCAweGM2LCAweGJmLCAweDMsIDB4YiwgMHgxLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4ZjcsIDB4ZjcsIDB4Y2EsIDB4MywgMHhiLCAweDEsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmOCwgMHgyOCwgMHhjMywgMHgzLCAweGIsIDB4MSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweGY3LCAweGZhLCAweGM3LCAweDMsIDB4YiwgMHgxNSwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcsIDB4MzYsIDB4NiwgMHhmYiwgMHgyYiwgMHg2MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1ZSwgMHhhLCAweDU2LCAweGEsIDB4YiwgMHg1NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4ZjgsIDB4OTAsIDB4MTUsIDB4ZGEsIDB4ZmIsIDB4YzEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4N2UsIDB4NSwgMHgyZiwgMHg2LCAweGUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMwLCAweGY3LCAweGYsIDB4NmYsIDB4YjAsIDB4ZmIsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0ZCwgMHg1LCAweGUsIDB4N2MsIDB4ODIsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGMzLCAweGIsIDB4ZjcsIDB4N2UsIDB4MSwgMHhmNywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM3LCAweDMsIDB4YiwgMHhmYiwgMHg3LCAweDE1LCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHgzNCwgMHg2LCAweGIsIDB4ZjcsIDB4MWEsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzOCwgMHhjNCwgMHhkZCwgMHhjMywgMHhiLCAweDE1LCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHgzOCwgMHg2LCAweGIsIDB4N2MsIDB4YzMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhjNCwgMHhiLCAweDc5LCAweGMwLCAweGY4LCAweDdjLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxNSwgMHhiMiwgMHhhYiwgMHhhYiwgMHhiMiwgMHhiMiwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDY0LCAweDY0LCAweDZiLCAweDZiLCAweDY0LCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhiZSwgMHhmNywgMHgxMiwgMHhiYywgMHhmNywgMHhjOSwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGJmLCAweDEyLCAweGIsIDB4YzIsIDB4ZjcsIDB4ZGQsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDEsIDB4ZjcsIDB4YTYsIDB4YiwgMHgzMiwgMHg1OCwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDUwLCAweDI5LCAweDI3LCAweDQwLCAweGM5LCAweGQ3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxMiwgMHg5MiwgMHhmNywgMHg1OCwgMHhmYiwgMHgyYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGU5LCAweGY3LCAweDRiLCAweGIsIDB4NzksIDB4YzIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhjMiwgMHhiLCAweDhiLCAweGMxLCAweGY4LCAweDVjLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmNywgMHg3ZSwgMHgxLCAweGY3LCAweDIzLCAweGY3LCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHgyMywgMHhiLCAweGY4LCAweDg1LCAweGY3LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHg0ZSwgMHhmNywgMHg3NywgMHgzLCAweGIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmNywgMHhkYiwgMHhjMiwgMHg2OCwgMHhhLCAweGMzLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY3LCAweDcsIDB4MTUsIDB4YTcsIDB4YjgsIDB4ZmIsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweDUsIDB4YiwgMHgxNSwgMHhhNywgMHg3MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweGY3LCAweDEwLCAweDVmLCAweGJlLCAweDUsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGY3LCAweDksIDB4M2EsIDB4NiwgMHhiLCAweGMyLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHgxNiwgMHhmOCwgMHgyZSwgMHhiLCAweDhiLCAweGMxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4YzEsIDB4MSwgMHhiLCAweDhiLCAweGMxLCAweGY4LCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4MSwgMHhiLCAweDE1LCAweGU1LCAweGY3LCAweDgsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIsIDB4MTUsIDB4YjcsIDB4NiwgMHg5ZCwgMHhmNywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4M2EsIDB4NiwgMHhiLCAweGY3LCAweDRkLCAweDZmLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzAsIDB4ZmIsIDB4ZiwgMHg1LCAweGIsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHgyNiwgMHg5NiwgMHhhOSwgMHhmYiwgMHg5NiwgMHhiLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3OSwgMHhmNywgMHgyMiwgMHgzLCAweGY3LCAweDc5LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmOCwgMHhjLCAweDEsIDB4ZTcsIDB4ZjgsIDB4MzQsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4NWUsIDB4MTUsIDB4ZjcsIDB4MzYsIDB4ZmIsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIsIDB4ZjcsIDB4YTQsIDB4YmUsIDB4MSwgMHg3MywgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDMsIDB4YiwgMHhmOCwgMHhhOSwgMHgxNSwgMHhkNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDQyLCAweDYsIDB4YiwgMHhmNywgMHhmLCAweDFlLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NywgMHhlLCAweDYsIDB4ZmIsIDB4MmUsIDB4ZmIsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MSwgMHhmNywgMHhhNSwgMHhjNCwgMHgzLCAweGIsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMywgMHhjMywgMHhiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdEZpeGVkQm9sZC5jIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdEZpeGVkQm9sZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNGZiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0Rml4ZWRCb2xkLmMKQEAgLTAsMCArMSwyMjY1IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRGaXhlZEJvbGRGb250RGF0YSBbMTgwNTVdID0gezB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDQsIDB4MiwgMHgwLCAweDEsIDB4MSwgMHgxLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDQ2LCAweDY5LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDY0LCAweDRmLCAweDU0LCAweDQ2LCAweDJkLCAweDQyLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDY0LCAweDAsIDB4MSwgMHgxLCAweDEsIDB4MjQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MCwgMHhmOCwgMHgyYSwgMHgxLCAweGY4LCAweDJiLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MmMsIDB4MywgMHhmOCwgMHgxNCwgMHg0LCAweGZiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OGQsIDB4ZjksIDB4NWQsIDB4ZjksIDB4YmYsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhmLCAweGY5LCAweDYsIDB4MTEsIDB4YWUsIDB4MWMsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4MTIsIDB4MCwgMHgxMiwgMHgxLCAweDEsIDB4NSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4MTEsIDB4MTksIDB4MWYsIDB4MjUsIDB4MjksIDB4MmQsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4NDksIDB4NTMsIDB4NWMsIDB4NjUsIDB4OGYsIDB4YTMsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NjQsIDB4NmYsIDB4NzQsIDB4NDksIDB4NGEsIDB4NjksIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NjMsIDB4NjUsIDB4NjQsIDB4NjksIDB4NmMsIDB4NmMsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NjMsIDB4NjUsIDB4NjQsIDB4NjksIDB4NmMsIDB4NmMsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NjMsIDB4NjEsIDB4NzIsIDB4NmYsIDB4NmUsIDB4NjcsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NzIsIDB4NmYsIDB4NmUsIDB4NmMsIDB4NjksIDB4NzIsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4NzUsIDB4NzIsIDB4NmYsIDB4NzAsIDB4NzIsIDB4NjUsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NzIsIDB4NjksIDB4NzAsIDB4NzQsIDB4NjksIDB4NmYsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsIDB4NmMsIDB4NjUsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsIDB4NzUsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsIDB4NzIsIDB4NjksIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NzQsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NzcsIDB4NmUsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NmYsIDB4NzQsIDB4NjgsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4NDMsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NmYsIDB4NmQsIDB4MjAsIDB4NDYsIDB4NjksIDB4NzgsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4MjAsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MjAsIDB4NDIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NjQsIDB4NDMsIDB4NjgsIDB4NzIsIDB4NkYsIDB4NkQsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4NjksIDB4NzgsIDB4NjUsIDB4NjQsIDB4MjAsIDB4NGYsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHgwLCAweDAsIDB4OSwgMHgzNywgMHgwLCAweDdjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0MiwgMHgyMCwgMHgwLCAweDY3LCAweDAsIDB4MCwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YTAsIDB4MCwgMHgwLCAweDY2LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHgwLCAweDAsIDB4YWEsIDB4MCwgMHgwLCAweDhiLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2YSwgMHgwLCAweDAsIDB4OTcsIDB4MCwgMHgwLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg4MCwgMHgwLCAweDAsIDB4YTEsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDAsIDB4MCwgMHhhNCwgMHgwLCAweDAsIDB4YTksIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDdkLCAweDAsIDB4MCwgMHg5OCwgMHgwLCAweDAsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDcyLCAweDAsIDB4MCwgMHg4NSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4MCwgMHgwLCAweDhmLCAweDAsIDB4MCwgMHg3OCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OWUsIDB4MCwgMHgwLCAweDliLCAweDAsIDB4MCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4N2IsIDB4MCwgMHgwLCAweGFlLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHgxLCAweDAsIDB4YjAsIDB4MCwgMHgwLCAweGFkLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhZiwgMHgwLCAweDAsIDB4OGEsIDB4MCwgMHgwLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhiNSwgMHgwLCAweDAsIDB4YjIsIDB4MiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDAsIDB4MCwgMHhiNiwgMHgyLCAweDAsIDB4OWEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGJhLCAweDAsIDB4MCwgMHhiZSwgMHgwLCAweDAsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgwLCAweGJmLCAweDAsIDB4MCwgMHhiZCwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4MCwgMHgwLCAweDhkLCAweDAsIDB4MCwgMHhjNCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzEsIDB4MiwgMHgwLCAweGM1LCAweDAsIDB4MCwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4OTUsIDB4MCwgMHgwLCAweGNiLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHgxLCAweDAsIDB4Y2QsIDB4MCwgMHgwLCAweGNhLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjYywgMHgwLCAweDAsIDB4OTAsIDB4MCwgMHgwLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhkMiwgMHgwLCAweDAsIDB4Y2YsIDB4MiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDAsIDB4MCwgMHhkMywgMHgyLCAweDAsIDB4YTcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGQ3LCAweDAsIDB4MCwgMHhkYiwgMHgwLCAweDAsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgwLCAweGRjLCAweDAsIDB4MCwgMHhkYSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4MCwgMHgwLCAweDkzLCAweDAsIDB4MCwgMHhlMSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZGUsIDB4MiwgMHgwLCAweGUyLCAweDAsIDB4MCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4ZTMsIDB4MCwgMHgxLCAweDg3LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHgwLCAweDEsIDB4ODgsIDB4MSwgMHgwLCAweDhjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg5MiwgMHgwLCAweDAsIDB4OGUsIDB4MCwgMHgwLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MSwgMHg4YSwgMHgxLCAweDAsIDB4YzAsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDAsIDB4MCwgMHhjNiwgMHgxLCAweDAsIDB4ZTQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDY1LCAweDAsIDB4MSwgMHg4YywgMHgxLCAweDAsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDg4LCAweDAsIDB4MCwgMHg4MSwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MCwgMHgwLCAweDg3LCAweDAsIDB4MCwgMHg3ZiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ODYsIDB4MCwgMHgwLCAweDZmLCAweDAsIDB4MCwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NDEsIDB4MCwgMHgwLCAweDgsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDAsIDB4MCwgMHg2OSwgMHgwLCAweDAsIDB4NzcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc2LCAweDAsIDB4MCwgMHg3MCwgMHgxLCAweDAsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDc5LCAweDEsIDB4MCwgMHg2YiwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4MCwgMHgxLCAweDhlLCAweDIsIDB4MCwgMHg5OSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4OTEsIDB4NCwgMHgwLCAweGE2LCAweDAsIDB4MCwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDAsIDB4ZjQsIDB4MiwgMHgwLCAweDEsIDB4MCwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MywgMHgwLCAweDM0LCAweDAsIDB4NjAsIDB4MCwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDQyLCAweDEsIDB4Y2MsIDB4MiwgMHg1MiwgMHgyLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4OWQsIDB4MiwgMHhkMiwgMHgzLCAweDIsIDB4MywgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDM5LCAweDMsIDB4NGUsIDB4MywgMHg2NywgMHgzLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YzQsIDB4MywgMHhlOCwgMHg0LCAweDJmLCAweDQsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhjMSwgMHg1LCAweGYsIDB4NSwgMHg3NywgMHg1LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YywgMHg2LCAweDczLCAweDYsIDB4ODYsIDB4NiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGM2LCAweDYsIDB4ZTQsIDB4NywgMHgxLCAweDcsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmZiwgMHg4LCAweDNkLCAweDgsIDB4YTAsIDB4OCwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDIyLCAweDksIDB4NjksIDB4OSwgMHhiMCwgMHg5LCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTIsIDB4YSwgMHgyNiwgMHhhLCAweDU3LCAweGEsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiNiwgMHhhLCAweGY4LCAweGIsIDB4MmQsIDB4YiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGI3LCAweGMsIDB4MzIsIDB4YywgMHg4NiwgMHhjLCAweGZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4MjYsIDB4ZCwgMHg2NCwgMHhkLCAweDk0LCAweGQsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmLCAweGUsIDB4NDUsIDB4ZSwgMHg2ZiwgMHhlLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OWYsIDB4ZSwgMHhiYiwgMHhlLCAweGVhLCAweGUsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhjLCAweGYsIDB4NzMsIDB4ZiwgMHhkNCwgMHgxMCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg3YywgMHgxMCwgMHhjOCwgMHgxMSwgMHg2LCAweDExLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDkwLCAweDExLCAweGMzLCAweDEyLCAweDcsIDB4MTIsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4NTYsIDB4MTIsIDB4YjYsIDB4MTIsIDB4ZmQsIDB4MTMsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4OTcsIDB4MTMsIDB4ZGQsIDB4MTQsIDB4MWQsIDB4MTQsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4ZDQsIDB4MTUsIDB4MjksIDB4MTUsIDB4NTEsIDB4MTUsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDAsIDB4MTYsIDB4NywgMHgxNiwgMHgzZiwgMHgxNiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhiNSwgMHgxNywgMHgxYiwgMHgxNywgMHg2MiwgMHgxNywgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhlNiwgMHgxOCwgMHg2NCwgMHgxOCwgMHhkNCwgMHgxOSwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHg0MSwgMHgxOSwgMHhlMSwgMHgxYSwgMHg3LCAweDFhLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY2LCAweDFiLCAweDI5LCAweDFiLCAweDQ0LCAweDFiLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGU0LCAweDFjLCAweDFlLCAweDFjLCAweDRiLCAweDFjLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGZlLCAweDFkLCAweDE0LCAweDFkLCAweDc2LCAweDFkLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGJmLCAweDFkLCAweGY5LCAweDFlLCAweDI1LCAweDFlLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDkzLCAweDFlLCAweGY2LCAweDFmLCAweDY0LCAweDFmLCAweGZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDYwLCAweDIwLCAweDgxLCAweDIwLCAweGEwLCAweDIwLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDIzLCAweDIxLCAweDRjLCAweDIxLCAweDhkLCAweDIxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDdiLCAweDIyLCAweDhlLCAweDIyLCAweGMxLCAweDIyLCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDMxLCAweDIzLCAweDQ5LCAweDIzLCAweDY4LCAweDIzLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGMxLCAweDI0LCAweGMsIDB4MjQsIDB4N2YsIDB4MjQsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4YmEsIDB4MjQsIDB4ZGYsIDB4MjUsIDB4MzMsIDB4MjUsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4ODksIDB4MjYsIDB4NiwgMHgyNiwgMHgxZSwgMHgyNiwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHg1ZCwgMHgyNiwgMHg5MiwgMHgyNiwgMHhkZCwgMHgyNywgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhiNCwgMHgyNywgMHhkNSwgMHgyNywgMHhmNiwgMHgyOCwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHg4YiwgMHgyOCwgMHhjYywgMHgyOSwgMHg4LCAweDI5LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDJjLCAweDJhLCAweDQ2LCAweDJhLCAweDVmLCAweDJhLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGEyLCAweDJhLCAweGI4LCAweDJhLCAweGNkLCAweDJhLCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDNhLCAweDJiLCAweGFiLCAweDJjLCAweDM1LCAweDJjLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDcwLCAweDJjLCAweDk1LCAweDJjLCAweGU3LCAweDJkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4MjksIDB4MmQsIDB4YmQsIDB4MmQsIDB4ZDQsIDB4MmQsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4ZSwgMHgyZSwgMHg1YSwgMHgyZSwgMHg4NiwgMHgyZSwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHgyMSwgMHgyZiwgMHg0YiwgMHgyZiwgMHg1YywgMHgyZiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHgxNCwgMHgzMCwgMHg0ZSwgMHgzMCwgMHg3YiwgMHgzMCwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg2NSwgMHgzMiwgMHgxNCwgMHgzMiwgMHhjNSwgMHgzMywgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhmNCwgMHgzNCwgMHg1NywgMHgzNCwgMHhhMiwgMHgzNCwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHg0ZiwgMHgzNSwgMHg5YiwgMHgzNSwgMHhlYiwgMHgzNiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDFiLCAweDM2LCAweDRhLCAweDM2LCAweDYxLCAweDM2LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGNhLCAweDM3LCAweDksIDB4MzcsIDB4MzEsIDB4MzcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4NTcsIDB4MzcsIDB4NmUsIDB4MzcsIDB4ODAsIDB4MzcsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4YTIsIDB4MzcsIDB4YjcsIDB4MzcsIDB4Y2UsIDB4MzcsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4MjIsIDB4MzgsIDB4NDMsIDB4MzgsIDB4OTAsIDB4MzksIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4NGQsIDB4MzksIDB4NmIsIDB4MzksIDB4ODIsIDB4M2EsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHg4OSwgMHgzYSwgMHhmMCwgMHgzYiwgMHgzNCwgMHgzYiwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHg2MywgMHgzYiwgMHg3MSwgMHgzYiwgMHg5NCwgMHgzYiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhiNCwgMHgzYywgMHgxMSwgMHgzYywgMHg2YSwgMHhlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ZjcsIDB4MzEsIDB4ZjgsIDB4NDQsIDB4NzcsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhmNywgMHgxNywgMHgzLCAweGY3LCAweDg5LCAweGY3LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDIsIDB4NiwgMHg5ZiwgMHhmOCwgMHgxOSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJiLCAweDYsIDB4NzUsIDB4ZmMsIDB4OTAsIDB4MTUsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4NjgsIDB4YzEsIDB4YzEsIDB4YjcsIDB4YWUsIDB4YjcsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4YWQsIDB4NTUsIDB4NTUsIDB4NWYsIDB4NjksIDB4NWYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHhiOCwgMHg3NiwgMHhmNywgMHhiNywgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI4LCAweGY3LCAweDYsIDB4ZDYsIDB4ZjcsIDB4NSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGU1LCAweGY3LCAweGE5LCAweDE1LCAweGY3LCAweDUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg1OSwgMHhhLCAweGZiLCAweDIyLCAweDYsIDB4ZmIsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjEsIDB4MTUsIDB4ZjcsIDB4NiwgMHg2LCAweDliLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4MjMsIDB4NiwgMHhlLCAweDVlLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGU2LCAweGYzLCAweGU2LCAweGY3LCAweDU0LCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjQsIDB4ZTMsIDB4ZjMsIDB4ZTcsIDB4MywgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHgxNSwgMHhlNCwgMHg2LCAweDk4LCAweGY3LCAweDYwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4NiwgMHg3YywgMHhmYiwgMHg2MCwgMHg1LCAweGU4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ZjcsIDB4NjAsIDB4NSwgMHhmNywgMHgxLCAweGU2LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OTEsIDB4ZjMsIDB4NSwgMHhlYywgMHhlNiwgMHgzMCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGY3LCAweDYyLCAweDUsIDB4MzEsIDB4NiwgMHg4MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg1LCAweDI0LCAweDYsIDB4OTIsIDB4ZjcsIDB4NjIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHg2LCAweDgyLCAweGZiLCAweDYyLCAweDUsIDB4ZmIsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHhmNiwgMHg2LCAweDg0LCAweDIzLCAweDUsIDB4MjcsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4NiwgMHhlOSwgMHhlNiwgMHgxNSwgMHg5MywgMHhmMywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweDYsIDB4ODUsIDB4MjMsIDB4NSwgMHhlLCAweDIyLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweGY3LCAweDU0LCAweGY3LCAweDU2LCAweGY3LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGY3LCAweDU3LCAweDEyLCAweGUwLCAweGVmLCAweGNiLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGVlLCAweDNhLCAweGVlLCAweDEzLCAweGRkLCAweGRjLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGVmLCAweGE5LCAweDYsIDB4ODQsIDB4OWYsIDB4YTYsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MWIsIDB4ZmIsIDB4MjUsIDB4ZWYsIDB4ZjcsIDB4MjQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHg5MiwgMHhmNywgMHgxNywgMHhhMSwgMHhmNywgMHgxMywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHgzNywgMHg5ZSwgMHgyMCwgMHhhNywgMHgxZSwgMHg2MiwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHg5ZCwgMHhjMSwgMHgxYSwgMHhjMCwgMHhkOSwgMHg5NCwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgxMywgMHhlZSwgMHhiMCwgMHhiMCwgMHg4MSwgMHg3YywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg1MCwgMHhlZSwgMHhmNywgMHg1MywgMHgyOCwgMHg2YywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDkzLCAweDdhLCAweDkxLCAweDc4LCAweDhlLCAweDgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4ZjEsIDB4MjcsIDB4MjYsIDB4NywgMHg0NiwgMHg4MiwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHhmYiwgMHg3LCAweDFhLCAweDIxLCAweGRlLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NjksIDB4MWUsIDB4YjYsIDB4ODAsIDB4ZTEsIDB4ODMsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NTUsIDB4MjUsIDB4ODcsIDB4NmYsIDB4NjYsIDB4NjcsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4NjgsIDB4MWUsIDB4YzUsIDB4MjcsIDB4NywgMHhlLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDVmLCAweGQxLCAweGRkLCAweGQwLCAweGY3LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweDEyLCAweGM3LCAweGQyLCAweGY3LCAweDksIDB4ZDIsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4ZjcsIDB4YSwgMHhkMiwgMHgxMywgMHhmYiwgMHhjNywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgxNSwgMHg0MiwgMHhjMywgMHg0YywgMHhlMywgMHg4YSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhjZCwgMHhjNSwgMHhkYiwgMHhkMSwgMHg1MiwgMHhjZiwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHg0ZSwgMHg0OCwgMHg0MywgMHgxZiwgMHhkMiwgMHg4YywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhhNSwgMHhhYiwgMHhiYSwgMHgxZSwgMHgxMywgMHhlYiwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg2YywgMHg2NywgMHg1ZCwgMHg2NCwgMHg3NCwgMHg2NSwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhhYywgMHhhZiwgMHgxZiwgMHgxMywgMHhmZCwgMHhmNywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGY3LCAweDE1LCAweDQzLCAweGM1LCAweDRhLCAweGUzLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweDQ1LCAweGRhLCAweGNkLCAweGM1LCAweGRjLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGNlLCAweDM1LCAweDM2LCAweDRjLCAweDQ5LCAweDQyLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweDhjLCAweDE1LCAweGFkLCAweGE2LCAweGFkLCAweGJiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDUsIDB4YjksIDB4YTcsIDB4NmEsIDB4NjgsIDB4NWMsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NjUsIDB4NWQsIDB4NmYsIDB4YWIsIDB4YWYsIDB4MWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4YjMsIDB4MTUsIDB4MTMsIDB4MCwgMHhmOCwgMHg0NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg2ZiwgMHhjZiwgMHhmYywgMHg0NywgMHhmYiwgMHg2YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2MsIDB4ZTcsIDB4M2IsIDB4ZTgsIDB4ZjcsIDB4YSwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyOCwgMHhlOSwgMHgxMiwgMHhiOCwgMHhlYywgMHg2OCwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiOCwgMHhmNywgMHgyZiwgMHhmNywgMHhjNCwgMHgxNSwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg1YiwgMHg0ZiwgMHg0NSwgMHgxYSwgMHg0NiwgMHhiZCwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiLCAweGRiLCAweGFkLCAweGFkLCAweDlkLCAweGEzLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDc0LCAweGIzLCAweDYzLCAweDUsIDB4ZjcsIDB4MzcsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHg2LCAweDZmLCAweGE0LCAweDlmLCAweGE4LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDk4LCAweGFhLCAweDE5LCAweGRlLCAweGU4LCAweGZiLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODYsIDB4NzMsIDB4NzcsIDB4NTIsIDB4N2MsIDB4NzEsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZCwgMHgxOCwgMHg3YywgMHg5ZiwgMHg2NSwgMHhiZCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhYSwgMHhhOCwgMHg5NSwgMHhhZSwgMHhiNSwgMHhiZSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg5OCwgMHgxZSwgMHhjMiwgMHhkMCwgMHg1LCAweGIzLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGE2LCAweDRmLCAweDFiLCAweDM4LCAweDNkLCAweDYzLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweGIyLCAweDY0LCAweDkzLCAweDdiLCAweDFmLCAweGJlLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGU3LCAweDZhLCAweGEsIDB4MTMsIDB4YjgsIDB4NzQsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4N2QsIDB4NmMsIDB4MWIsIDB4NTQsIDB4NzgsIDB4YjUsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4YjEsIDB4YTQsIDB4YTQsIDB4OWEsIDB4MWYsIDB4ZSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDdkLCAweGY3LCAweDE5LCAweDMsIDB4ZjcsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTksIDB4MTUsIDB4ZjcsIDB4YiwgMHg2LCAweDk5LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4MjYsIDB4NiwgMHhlLCAweDNhLCAweDc2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDc3LCAweDEsIDB4ZjcsIDB4NDcsIDB4ZjcsIDB4MSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQzLCAweDI1LCAweDE1LCAweGYxLCAweDYsIDB4NTMsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4ZjcsIDB4ZiwgMHhmNywgMHg1MiwgMHgxYSwgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhjMCwgMHhkNywgMHhmNywgMHg2LCAweDFlLCAweDI5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4MjcsIDB4NTQsIDB4MjcsIDB4ZmIsIDB4YiwgMHgxYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhhMCwgMHhmYiwgMHgwLCAweGY3LCAweGIsIDB4ZmIsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHgzYSwgMHg3NiwgMHhmOSwgMHg2MiwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGNjLCAweGY3LCAweDEsIDB4MywgMHhmNywgMHg0NywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmMSwgMHg2LCAweGY3LCAweGIsIDB4ZjcsIDB4MzQsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHhmNywgMHgxNywgMHgxYSwgMHhmNywgMHhiLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweDMyLCAweGVmLCAweDFlLCAweDI5LCAweDYsIDB4ZDcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjNCwgMHg1NiwgMHhmYiwgMHgyYiwgMHgxYSwgMHhmYiwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHhmYiwgMHhmLCAweDUzLCAweDM0LCAweDFlLCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4ZjEsIDB4MywgMHhmNywgMHgyMiwgMHhmNywgMHhhYywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHg0ZSwgMHhkNiwgMHhmNywgMHhjLCAweGQ2LCAweGZiLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4YzgsIDB4MzMsIDB4ZjIsIDB4ZjcsIDB4MWQsIDB4YWQsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ZmIsIDB4MTQsIDB4NTksIDB4OTUsIDB4ZjcsIDB4MWIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhhLCAweDkzLCAweGZiLCAweDE5LCAweGZiLCAweDEzLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDI4LCAweGY3LCAweDIwLCAweDZhLCAweDUsIDB4ZSwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHg0MSwgMHhlOSwgMHhmNywgMHg0MCwgMHg2NywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDMsIDB4ZDIsIDB4ZjcsIDB4NjgsIDB4MTUsIDB4ZjcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDEsIDB4ZWQsIDB4ZjcsIDB4NDEsIDB4ZjcsIDB4NDgsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDgsIDB4ZjcsIDB4NDAsIDB4MjksIDB4ZmIsIDB4NDAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4NiwgMHhlLCAweDMxLCAweDQ1LCAweGEsIDB4ZjcsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MywgMHgxNSwgMHhmNywgMHgxNCwgMHg2LCAweGY3LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweGEsIDB4ZmIsIDB4M2QsIDB4NiwgMHhlLCAweGY3LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIsIDB4MSwgMHhlZiwgMHhmOCwgMHgyNCwgMHgzLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVmLCAweDE1LCAweGY4LCAweDI0LCAweGY3LCAweDIsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4NiwgMHhlLCAweDdjLCAweGY3LCAweDRlLCAweDZkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4MTUsIDB4NTgsIDB4YmMsIDB4NjEsIDB4YzYsIDB4YzYsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4YmUsIDB4YmUsIDB4NWEsIDB4YjUsIDB4NTAsIDB4NTAsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NTgsIDB4MWUsIDB4ZSwgMHg1MywgMHg3NiwgMHhmOSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGVkLCAweGY4LCAweDI4LCAweDMsIDB4ZWQsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDAsIDB4NmMsIDB4ZjcsIDB4ZTMsIDB4ZjksIDB4MzQsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NSwgMHhlLCAweDdjLCAweGU4LCAweGY4LCAweDUxLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZTIsIDB4ZWQsIDB4ZjcsIDB4N2MsIDB4ZWIsIDB4MywgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiZSwgMHgxNSwgMHg0MiwgMHg5OSwgMHhmYiwgMHg4NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhmNywgMHg2MCwgMHg5MywgMHhmNywgMHg4NCwgMHhkNSwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhmNywgMHg4OCwgMHhmYiwgMHg1MywgMHhmYiwgMHg2NiwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4NiwgMHgzZiwgMHgxZSwgMHhlZCwgMHg4YywgMHgxNSwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg5MCwgMHhmNywgMHgzOSwgMHhmNywgMHgxLCAweDFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OTAsIDB4ZmIsIDB4M2MsIDB4NTAsIDB4M2IsIDB4N2MsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MjgsIDB4MjAsIDB4ODAsIDB4ZjcsIDB4MWYsIDB4ZGQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4YiwgMHhlOCwgMHhmOCwgMHg5ZiwgMHg3NywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGVjLCAweDMsIDB4ZDIsIDB4MTYsIDB4ZjgsIDB4NWUsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDcsIDB4ZjgsIDB4OWYsIDB4NiwgMHhmYiwgMHg5ZSwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDMwLCAweDcsIDB4ZjcsIDB4M2QsIDB4YWQsIDB4NSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhmYiwgMHg0YSwgMHg3LCAweGUsIDB4OGIsIDB4ZWEsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzQsIDB4ZjcsIDB4ZmUsIDB4ZTksIDB4MTIsIDB4ZjIsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmYsIDB4ZWUsIDB4MTMsIDB4NzgsIDB4ZGMsIDB4MTYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4ZjcsIDB4MzQsIDB4MmMsIDB4NiwgMHgxMywgMHhiOCwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0YywgMHg3LCAweGY3LCAweDEsIDB4ZTgsIDB4ZjcsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4ZWYsIDB4MWEsIDB4ZWYsIDB4NDIsIDB4ZWMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MzksIDB4NDMsIDB4NjksIDB4NGQsIDB4NTcsIDB4MWUsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4NywgMHhkZiwgMHhlMSwgMHg5MCwgMHhhNiwgMHhjYSwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg0OCwgMHg1OCwgMHhmYiwgMHhiLCAweDI4LCAweGZiLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ1LCAweDFlLCAweGUsIDB4N2MsIDB4ZTgsIDB4ZjcsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4ZjcsIDB4MzcsIDB4ZTksIDB4MTIsIDB4ZjgsIDB4MWIsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4ZWIsIDB4MTMsIDB4ZTgsIDB4ZGMsIDB4YjMsIDB4MTUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4Y2MsIDB4NjYsIDB4ZWQsIDB4MWIsIDB4ZGIsIDB4ZjcsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4ZjcsIDB4MjMsIDB4ZTEsIDB4NWUsIDB4YWEsIDB4NWIsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4ZjAsIDB4YmEsIDB4YTEsIDB4YTEsIDB4YzQsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4NiwgMHg4YSwgMHgyYSwgMHhiYSwgMHgyMywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg2YSwgMHg2ZiwgMHg2NiwgMHg0ZiwgMHgxZiwgMHhhZCwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGIyLCAweGQzLCAweDlmLCAweDkwLCAweGI2LCAweDFiLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDc3LCAweDUwLCAweDNlLCAweDMzLCAweDg0LCAweDRlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDcsIDB4MTMsIDB4ZTgsIDB4ZTYsIDB4ZTQsIDB4N2YsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NGYsIDB4NmIsIDB4NDYsIDB4NTcsIDB4NTYsIDB4OWIsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4MWYsIDB4ZSwgMHg4YiwgMHhlOSwgMHhkZiwgMHhlOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHg3NywgMHgxLCAweGY3LCAweGUzLCAweGViLCAweDMsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDYsIDB4MTUsIDB4ZjcsIDB4OWEsIDB4MzcsIDB4MjMsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmMsIDB4ZTksIDB4MmIsIDB4ZGYsIDB4ZTgsIDB4ZTksIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZWMsIDB4MjQsIDB4NiwgMHhmYiwgMHg5MywgMHhmYiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDIsIDB4OTgsIDB4MTUsIDB4ZjcsIDB4MmMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NSwgMHhmYiwgMHg3MywgMHg3LCAweGUsIDB4N2MsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzUsIDB4ZTUsIDB4ZjcsIDB4OCwgMHhlOCwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4ZWIsIDB4ZjcsIDB4NmMsIDB4ZWIsIDB4MywgMHhkNSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3YiwgMHhiMSwgMHhlYiwgMHg2OCwgMHhlMSwgMHgxYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhkNSwgMHhlZSwgMHhmNiwgMHhmNywgMHg3LCAweDNmLCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGEsIDB4NjcsIDB4NjMsIDB4ODksIDB4N2UsIDB4NjEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4ZjcsIDB4YjIsIDB4ZTgsIDB4ZmMsIDB4MTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4NywgMHhiYywgMHg1MiwgMHhiMywgMHhhOCwgMHhiZCwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHg4YSwgMHgxOSwgMHhkMCwgMHg4YSwgMHhjNiwgMHg2NCwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg0YywgMHg1YiwgMHg1YiwgMHgzNiwgMHg0OCwgMHg0ZCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg1MSwgMHgxZSwgMHhlLCAweDdjLCAweGU0LCAweGY3LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweDFjLCAweGU2LCAweDEsIDB4ZGYsIDB4ZjcsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YSwgMHhlYywgMHgzLCAweGY3LCAweDUxLCAweGY3LCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDE5LCAweGE1LCAweGY3LCAweDEsIDB4YjEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHgxYiwgMHhhMCwgMHhhMCwgMHg4ZiwgMHg4NywgMHhhMCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhlOSwgMHg1LCAweDhlLCAweDczLCAweDczLCAweDg1LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweGYsIDB4MzEsIDB4NmMsIDB4NDAsIDB4NDYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NTksIDB4NjgsIDB4MzIsIDB4MzAsIDB4MWEsIDB4ZmIsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ZmIsIDB4MjYsIDB4ZjcsIDB4MzAsIDB4ZjYsIDB4ZTYsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MywgMHhmNywgMHgxMiwgMHg0NSwgMHhkNywgMHhmYiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg3NSwgMHg3ZiwgMHg3NCwgMHg2MiwgMHgxZSwgMHg5MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHgxNSwgMHg4YiwgMHhhMiwgMHhkMywgMHhkZiwgMHhkYywgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg1MywgMHg0OCwgMHg1ZSwgMHg2MiwgMHg1MSwgMHg0MywgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhjZCwgMHgxZSwgMHhlLCAweGEwLCAweDc2LCAweGY4LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDEsIDB4ZTUsIDB4ZWQsIDB4MywgMHhmNywgMHg1ZCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHg2LCAweGY3LCAweDVjLCAweGY4LCAweDhlLCAweDhjLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmMsIDB4MzcsIDB4ZmIsIDB4NDgsIDB4ZWQsIDB4ZTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NiwgMHhlLCAweDdjLCAweGU4LCAweGY3LCAweDUzLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIyLCAweGU5LCAweDEyLCAweGRlLCAweGVlLCAweDMyLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZjLCAweGVjLCAweDM2LCAweGVjLCAweDEzLCAweGYyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGY3LCAweGQ1LCAweDE1LCAweDU4LCAweDY5LCAweDY4LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDFhLCAweGZiLCAweDEzLCAweGY3LCAweDksIDB4NGUsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4ZTgsIDB4YzcsIDB4ZjcsIDB4MTIsIDB4Y2MsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4NTUsIDB4YjAsIDB4MWUsIDB4MTMsIDB4ZWMsIDB4YjcsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YjgsIDB4YzksIDB4MWEsIDB4ZjAsIDB4MzQsIDB4YzUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgxNiwgMHgzZSwgMHg0MywgMHgzMSwgMHg1NCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhiYiwgMHg2NywgMHgxZSwgMHhhMiwgMHhmNywgMHgxOSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhiNywgMHhhYSwgMHhjYiwgMHhlMCwgMHhhMiwgMHg2YiwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHg1NCwgMHg2YywgMHg1NiwgMHg1MCwgMHg1YSwgMHhhZSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgxMywgMHhmMiwgMHg4MSwgMHhmYiwgMHhhZiwgMHgxNSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhiOCwgMHhjYSwgMHhkZSwgMHhiMCwgMHg1NywgMHg1ZCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2ZCwgMHgzNywgMHgzZSwgMHg2MCwgMHhiNiwgMHhiYSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdjLCAweGU4LCAweGY3LCAweDFhLCAweGVkLCAweGY3LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDEsIDB4ZTUsIDB4ZjEsIDB4ZjcsIDB4NmQsIDB4ZjUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHg4MSwgMHgxNSwgMHg4OCwgMHhhNiwgMHhhNSwgMHg4OSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgzYywgMHhmNywgMHhmLCAweGNkLCAweGY3LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDFmLCAweDk3LCAweGIzLCAweDkxLCAweGI4LCAweGJmLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMsIDB4NmQsIDB4ZjcsIDB4NDIsIDB4ZmIsIDB4NGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgzMSwgMHgyZCwgMHgyNiwgMHhmYiwgMHgwLCAweGQ4LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweGI2LCAweGFjLCAweDljLCAweDlhLCAweGE0LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQsIDB4NmYsIDB4M2IsIDB4NWMsIDB4ZmIsIDB4MTQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NzQsIDB4OGQsIDB4OGQsIDB4NzMsIDB4MWYsIDB4ZjcsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4Y2QsIDB4MTUsIDB4ODcsIDB4OGMsIDB4NmYsIDB4M2MsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NTAsIDB4NWMsIDB4YjgsIDB4ZDEsIDB4ZDQsIDB4Y2EsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4ZTEsIDB4OTcsIDB4NDIsIDB4NTAsIDB4OTUsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhmNywgMHg0NCwgMHhlMSwgMHhmNywgMHg0NCwgMHg2ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGU1LCAweDE1LCAweDM3LCAweGEsIDB4ZmIsIDB4OWMsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhhLCAweGUsIDB4MzEsIDB4NzYsIDB4ZjgsIDB4NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHgxLCAweGY3LCAweDc2LCAweGY3LCAweDZjLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZmIsIDB4MywgMHgxNSwgMHhmNywgMHgxYywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGY3LCAweGFkLCAweDUsIDB4ZmIsIDB4NDYsIDB4NiwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYiwgMHgxNSwgMHgzNywgMHhhLCAweGUsIDB4NWUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YywgMHgxNSwgMHhmOCwgMHg1ZCwgMHhmYiwgMHg0ZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDcsIDB4ZmIsIDB4ZjYsIDB4ZjcsIDB4MmEsIDB4ZjcsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4NSwgMHhlOSwgMHg3LCAweGZjLCAweDVkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDUsIDB4ZSwgMHhmNywgMHhhLCAweGYxLCAweGQ3LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZDIsIDB4ZjgsIDB4NWUsIDB4MywgMHhkMiwgMHhmNywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmOCwgMHg1ZSwgMHhmMSwgMHhmYywgMHg1ZSwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDQsIDB4ZjgsIDB4NWUsIDB4ZjEsIDB4ZmMsIDB4NWUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDVlLCAweGEsIDB4OWEsIDB4MTUsIDB4ZjgsIDB4NWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NSwgMHhmNywgMHg5LCAweDcsIDB4ZmMsIDB4NWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4NSwgMHgyZCwgMHg3LCAweGY3LCAweGY5LCAweGZiLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGY5LCAweGZiLCAweDJhLCAweDUsIDB4ZSwgMHg4MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhmNywgMHhmMSwgMHhlNywgMHgxMiwgMHhlZCwgMHhlYywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MSwgMHhiZCwgMHhlYiwgMHgxMywgMHhlOCwgMHhmNywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NSwgMHgxNSwgMHhlYywgMHhjOCwgMHg2LCAweGMwLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE3LCAweGIwLCAweGY3LCAweDEwLCAweDFhLCAweGY3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4YzcsIDB4ZmIsIDB4ZCwgMHg1MywgMHgzZSwgMHg3ZCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHgxZSwgMHhmYiwgMHgyMywgMHhlYywgMHhkNiwgMHg3LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGFlLCAweDhmLCAweGFkLCAweDhhLCAweDgsIDB4YzYsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4NzYsIDB4NTQsIDB4MWEsIDB4MTMsIDB4OTAsIDB4NDAsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4MzIsIDB4N2QsIDB4MWUsIDB4MTMsIDB4ZDgsIDB4NjUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4MTUsIDB4NjIsIDB4YjEsIDB4NjksIDB4YmIsIDB4YmIsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4YjQsIDB4YjQsIDB4NjQsIDB4YWQsIDB4NWIsIDB4NWIsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NjIsIDB4MWUsIDB4ZSwgMHg3OSwgMHhkMywgMHhkMiwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4NSwgMHg3NywgMHhlNiwgMHhkMCwgMHgxLCAweDllLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweGQwLCAweGY3LCAweDliLCAweGRiLCAweDMsIDB4ZjcsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2IsIDB4MTUsIDB4NmEsIDB4YTEsIDB4YWYsIDB4ODIsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YzgsIDB4ZjAsIDB4YzAsIDB4ZjcsIDB4MjYsIDB4YmQsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4NzIsIDB4YjMsIDB4MWYsIDB4ZGUsIDB4NTcsIDB4MmYsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4MWIsIDB4ZmIsIDB4MmQsIDB4ZmIsIDB4MWUsIDB4MjMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4ZmIsIDB4MSwgMHhiZiwgMHhmYiwgMHg0YiwgMHhmNywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMywgMHhkNCwgMHhjNCwgMHhhNCwgMHhiMSwgMHgxZiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHg1LCAweDU0LCAweDNkLCAweDRjLCAweDc0LCAweDNmLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJkLCAweDY3LCAweGY3LCAweDFiLCAweGUzLCAweGM5LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNmLCAweGY3LCAweDRjLCAweGY3LCAweGIsIDB4ZDIsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4M2MsIDB4NjksIDB4NTEsIDB4NjMsIDB4N2QsIDB4NzcsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4OTAsIDB4OGIsIDB4OGYsIDB4OGQsIDB4OTEsIDB4MWYsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTIsIDB4NSwgMHg0NiwgMHg2LCAweDg1LCAweDc5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NzQsIDB4N2UsIDB4OGIsIDB4N2QsIDB4MWIsIDB4ZmIsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhmYiwgMHhlLCAweDNhLCAweDM1LCAweGJlLCAweDcyLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGFiLCAweDljLCAweGE0LCAweGEzLCAweDFmLCAweDIyLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGMzLCAweGE1LCAweGQ0LCAweGJjLCAweGEzLCAweDhkLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDcwLCAweDc3LCAweGZiLCAweDAsIDB4NGYsIDB4N2IsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWYsIDB4MWUsIDB4ZSwgMHg4YiwgMHhlNiwgMHhkOCwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2OCwgMHhlNiwgMHgxLCAweDgyLCAweDE2LCAweGY3LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweDMxLCAweDYsIDB4YWIsIDB4ZDgsIDB4NSwgMHhmNywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGFlLCAweDNlLCAweDUsIDB4MzUsIDB4MzAsIDB4ZjcsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4NTIsIDB4NiwgMHhmYiwgMHg2MiwgMHhmOCwgMHg2YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDkwLCAweDMwLCAweGY3LCAweDE1LCAweDYsIDB4ZmIsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MTAsIDB4NSwgMHg0ZSwgMHg2LCAweGY3LCAweDdjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDE1LCAweGRiLCAweGY3LCAweDQwLCAweGQ3LCAweGZiLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHg4YiwgMHhlNiwgMHhmNywgMHgyZSwgMHhlNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhlNiwgMHgxMiwgMHhmNywgMHgyLCAweGViLCAweGY3LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweDRlLCAweGViLCAweDEzLCAweGY0LCAweGE3LCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDYsIDB4ZjcsIDB4NDksIDB4YzUsIDB4Y2YsIDB4ZWIsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4YjUsIDB4M2YsIDB4YjcsIDB4MWYsIDB4MTMsIDB4ZjgsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YTAsIDB4YjQsIDB4YjcsIDB4MWEsIDB4Y2QsIDB4NWEsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmQsIDB4MWUsIDB4ZmIsIDB4YzYsIDB4MzAsIDB4ZGQsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MzksIDB4NiwgMHhmNywgMHg0NiwgMHhmNywgMHg4OSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYiwgMHhmNywgMHgxMiwgMHg3LCAweGU2LCAweDlkLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDRkLCAweDNlLCAweDgzLCAweDZiLCAweDFmLCAweGZiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDg5LCAweDE1LCAweGY3LCAweDJlLCAweGY3LCAweDEyLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjQsIDB4YTQsIDB4ZjcsIDB4YSwgMHg4YSwgMHgzYiwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg4MywgMHgzMiwgMHgxZiwgMHhlLCAweDc5LCAweGU3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweGU2LCAweDEsIDB4YWEsIDB4ZWMsIDB4ZjcsIDB4ZWQsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmOCwgMHg5NSwgMHhmNywgMHgyMCwgMHgxNSwgMHg3NCwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg2MCwgMHgzNywgMHgxYiwgMHhmYiwgMHgxYywgMHg1MiwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHhmNywgMHgyZSwgMHhmNywgMHg4LCAweGJlLCAweGQ2LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDc3LCAweDcwLCAweGI5LCAweDFmLCAweDIyLCAweGViLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDJiLCAweDYxLCAweDcsIDB4OTUsIDB4N2QsIDB4NTUsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4MWIsIDB4ZmIsIDB4M2EsIDB4ZmIsIDB4ZCwgMHhmYiwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzZiwgMHhmYiwgMHg4LCAweGNmLCAweGZiLCAweDRmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGRhLCAweGUwLCAweDkwLCAweGQxLCAweGRiLCAweDFmLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDUsIDB4ZSwgMHgzMiwgMHhhLCAweGYwLCAweGViLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGYxLCAweDMsIDB4OWQsIDB4MTYsIDB4ZjcsIDB4ODcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMCwgMHhmNywgMHgzOSwgMHhjZSwgMHhmNywgMHg3NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhmYiwgMHg5LCAweGU2LCAweGZiLCAweDQ1LCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDdhLCAweGEsIDB4NiwgMHhmNywgMHg0NywgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg3LCAweGY3LCAweDkwLCAweGFhLCAweDM5LCAweDI2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDQxLCAweDRmLCAweGZiLCAweDY1LCAweDFmLCAweGUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4MzAsIDB4ZjcsIDB4NTgsIDB4YjgsIDB4ZTUsIDB4YWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4MzAsIDB4ZTYsIDB4MTIsIDB4ZjcsIDB4NywgMHhlZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGVlLCAweGI2LCAweGVlLCAweDEzLCAweDc3LCAweGIxLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGE1LCAweGY3LCAweDU4LCAweDI4LCAweDYsIDB4MTMsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZmIsIDB4OTEsIDB4ZjcsIDB4MmEsIDB4ZjcsIDB4MywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhmNywgMHg3MCwgMHgyOCwgMHg0YSwgMHhmYiwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGY3LCAweDkxLCAweDcsIDB4MTMsIDB4YjcsIDB4MjAsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWEsIDB4ZmMsIDB4YTUsIDB4NywgMHgxMywgMHhhZiwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHhmYywgMHgxMCwgMHgzZSwgMHg3LCAweGUsIDB4OGIsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4ZTYsIDB4YWUsIDB4ZjcsIDB4NTgsIDB4MzEsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4NzcsIDB4MTIsIDB4ZjcsIDB4NiwgMHhlZCwgMHhmNywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweGIyLCAweGVmLCAweDEzLCAweGQ3LCAweGFkLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweGU2LCAweGZiLCAweDIzLCAweGY3LCAweDI4LCAweGY3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4ZWQsIDB4ZjcsIDB4NzAsIDB4MjksIDB4NGEsIDB4ZmIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMSwgMHhmNywgMHg5MSwgMHg2LCAweDEzLCAweGU3LCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweDcsIDB4MTMsIDB4Y2YsIDB4ZjcsIDB4NWQsIDB4NywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHhmYywgMHhhNywgMHgyYiwgMHg2LCAweGRiLCAweDhjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MTAsIDB4M2IsIDB4NywgMHhlLCAweDc5LCAweGU5LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY3LCAweDZjLCAweGU2LCAweDEsIDB4OTksIDB4ZWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4ZWQsIDB4MywgMHg0NiwgMHhhLCAweGRhLCAweGY3LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIxLCAweGU2LCAweGM5LCAweGVkLCAweDQxLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg0ZCwgMHhmYiwgMHg2MiwgMHhmNywgMHgzMywgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNiwgMHg1OCwgMHhhLCAweGUsIDB4OGIsIDB4ZTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4ZTYsIDB4ZjcsIDB4MjYsIDB4ZTYsIDB4MSwgMHhlYywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MCwgMHhlOCwgMHgzLCAweDlmLCAweDE2LCAweGY3LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweDNkLCAweGY3LCAweDIzLCAweGY3LCAweDcwLCAweGZiLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDMwLCAweGY3LCAweDhiLCAweGU2LCAweDNlLCAweGY4LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGU2LCAweGZiLCAweDg4LCAweDMwLCAweGQ1LCAweGZiLCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcwLCAweGY3LCAweDI2LCAweGQ3LCAweGU2LCAweGZiLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGQ4LCAweGZjLCAweDEwLCAweDNlLCAweDYsIDB4ZSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDhmLCAweGYwLCAweDYwLCAweGEsIDB4ZTYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4ZjgsIDB4MTAsIDB4NzQsIDB4YSwgMHhmYywgMHgxMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg2LCAweGUsIDB4NzksIDB4ZTUsIDB4ZjgsIDB4MjIsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg5ZCwgMHhlZCwgMHhmNywgMHg4NSwgMHhlYiwgMHgzLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDE1LCAweDdhLCAweGFiLCAweGVmLCAweDU4LCAweGY1LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEyLCAweGQyLCAweGQ1LCAweGY3LCAweDFmLCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGY3LCAweDE1LCAweGU3LCAweGZjLCAweDI0LCAweDJmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweGZiLCAweGE4LCAweDcsIDB4NDksIDB4ODAsIDB4NTMsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4NTAsIDB4NzgsIDB4YSwgMHgzMiwgMHhhLCAweGU5LCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OTYsIDB4MTYsIDB4ZjcsIDB4OWMsIDB4ZTYsIDB4MzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg2LCAweGM2LCAweGMwLCAweGNmLCAweDM0LCAweGM1LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDQ1LCAweDE5LCAweGY3LCAweDM0LCAweGU2LCAweDIwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4Y2UsIDB4NGMsIDB4ZTEsIDB4NTQsIDB4Y2YsIDB4ZjcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzMsIDB4MTgsIDB4Y2YsIDB4ZTYsIDB4ZmIsIDB4ODYsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4NiwgMHhmYiwgMHgzZSwgMHhmYiwgMHgyZCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGRhLCAweGU2LCAweGZiLCAweDk5LCAweDdhLCAweGEsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDMyLCAweGEsIDB4ZjcsIDB4MTcsIDB4ZWMsIDB4ZjcsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4MywgMHhhOSwgMHgxNiwgMHhmOCwgMHhhZiwgMHhmNywgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHhmYiwgMHgzNywgMHhmYiwgMHg4NiwgMHhmOCwgMHgxMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhlNiwgMHhmYiwgMHhkYSwgMHgzMCwgMHhmMCwgMHhmYywgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHg2LCAweGUsIDB4MzIsIDB4YSwgMHhkMiwgMHhlNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhlNywgMHgzLCAweDg5LCAweDE2LCAweGY3LCAweDkwLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDYsIDB4OWIsIDB4ZjcsIDB4Y2UsIDB4ZjEsIDB4ZmIsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhjNiwgMHg2LCAweGY0LCAweGY3LCAweDlmLCAweDk2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweDUsIDB4MzIsIDB4MzAsIDB4ZjcsIDB4ODYsIDB4ZTYsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4MSwgMHhmOCwgMHgxMCwgMHg1LCAweGQ0LCAweGU2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDYsIDB4MjAsIDB4ZmIsIDB4YWMsIDB4MjUsIDB4ZjcsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg1ZiwgMHgzMCwgMHhkYSwgMHg2LCAweDdiLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDUsIDB4NGEsIDB4NiwgMHhlLCAweDdmLCAweGU4LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGU4LCAweDEsIDB4ZDgsIDB4ZTgsIDB4ZjcsIDB4OWEsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg4YSwgMHg3ZiwgMHgxNSwgMHhmNywgMHg4ZSwgMHhlOCwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkMSwgMHg2LCAweGY3LCAweDlhLCAweGZjLCAweDJlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjgsIDB4NzUsIDB4ZGEsIDB4ZTgsIDB4ZmIsIDB4OTYsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4ZmIsIDB4YzUsIDB4NiwgMHhmYiwgMHg4YiwgMHhmOCwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDRhLCAweDJlLCAweGQ5LCAweGZjLCAweDE4LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg3OSwgMHhlNywgMHhmOCwgMHgzMCwgMHhlOSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGVlLCAweGY3LCAweGZkLCAweGViLCAweDMsIDB4YTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MTUsIDB4ZmIsIDB4NWMsIDB4ZjcsIDB4MjUsIDB4MmEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjIsIDB4ZjcsIDB4NDIsIDB4ZDUsIDB4ZjcsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4MmYsIDB4ZjcsIDB4MzEsIDB4ZmIsIDB4NGQsIDB4ZmIsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZmIsIDB4MjUsIDB4ZmIsIDB4MzAsIDB4MWUsIDB4ZWIsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZTksIDB4Y2EsIDB4ZjcsIDB4MiwgMHhmNywgMHhjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGI5LCAweGZiLCAweDE2LCAweDQ0LCAweDM4LCAweDVhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweGZiLCAweDFhLCAweGZiLCAweGQsIDB4NGQsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHgxZSwgMHhlLCAweDhiLCAweGU2LCAweGVmLCAweGU3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGU2LCAweDEsIDB4ZjcsIDB4MTMsIDB4ZWQsIDB4ZjcsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4MywgMHhiNywgMHgxNiwgMHhmNywgMHhjYSwgMHhlNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlZiwgMHg2LCAweGY3LCAweDhkLCAweGRjLCAweGJkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGY3LCAweDVmLCAweGZiLCAweDM2LCAweDc4LCAweGZiLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDFmLCAweDdhLCAweGEsIDB4NywgMHhmNywgMHg0OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHgxNSwgMHhmNywgMHg1MCwgMHg3LCAweGY3LCAweDIwLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDk5LCAweDI0LCAweDFhLCAweDI2LCAweDI1LCAweDliLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDg0LCAweDFlLCAweGUsIDB4ZmIsIDB4OSwgMHg3NiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0OSwgMHhmOCwgMHgyNCwgMHhlNywgMHgxMiwgMHhhNiwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmNywgMHhlYSwgMHgxNywgMHhmNywgMHhhLCAweDQ2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDQ2LCAweDUsIDB4YWIsIDB4YzcsIDB4YTUsIDB4OTgsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YTksIDB4YTQsIDB4ODAsIDB4ODEsIDB4YTQsIDB4MWYsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YTQsIDB4ODIsIDB4YTgsIDB4MWIsIDB4YzIsIDB4YWEsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4YjksIDB4MWYsIDB4NTEsIDB4Y2EsIDB4NSwgMHg2OCwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg4MywgMHg3OSwgMHgxYiwgMHg3MywgMHg3MCwgMHg5YiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHgxZiwgMHhmNywgMHgyNiwgMHhiMSwgMHhjYSwgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweDFhLCAweGRlLCAweDVhLCAweGY3LCAweDZiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGZiLCAweDFmLCAweGZiLCAweDE5LCAweDI3LCAweGZiLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIwLCAweGQxLCAweDJmLCAweGYwLCAweDYyLCAweDFlLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE2LCAweDE1LCAweGY3LCAweDJlLCAweGY2LCAweGJhLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweDU4LCAweGY3LCAweGIsIDB4YzcsIDB4MjQsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4NTAsIDB4ZmIsIDB4MmMsIDB4MjEsIDB4NjAsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4MmMsIDB4YmMsIDB4ZjcsIDB4MmEsIDB4MWUsIDB4ZSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhmNywgMHgxOCwgMHhlNiwgMHhmNywgMHgzMSwgMHhlNiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweGVmLCAweGY3LCAweDdhLCAweGVlLCAweDMsIDB4OTcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OWQsIDB4ZTYsIDB4M2IsIDB4ZjcsIDB4MTgsIDB4ZGUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHhmYiwgMHg5LCAweGI2LCAweDRkLCAweGE5LCAweDVmLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjUsIDB4ZTYsIDB4MzMsIDB4NiwgMHhmYiwgMHg0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDUsIDB4ZjYsIDB4OWQsIDB4YWIsIDB4Y2YsIDB4ZDEsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OCwgMHgyNywgMHhiYywgMHhmYiwgMHg4LCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDMwLCAweGRjLCAweGZjLCAweDEwLCAweDM2LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4ZjcsIDB4NzMsIDB4MTUsIDB4ZjcsIDB4MzEsIDB4NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHhiYywgMHg5MiwgMHgzOSwgMHgzMSwgMHgzOSwgMHg5MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHgxZiwgMHhlLCAweDhiLCAweGUzLCAweGY4LCAweDE3LCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDc3LCAweDEyLCAweGQzLCAweGU2LCAweDQxLCAweGU3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGU2LCAweDQ1LCAweGU1LCAweDEzLCAweGQyLCAweGQzLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGFlLCAweDYsIDB4ODEsIDB4OWYsIDB4YjksIDB4NzIsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4ZSwgMHhmMiwgMHhjYywgMHhmNSwgMHhmNywgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYSwgMHg4NywgMHgyMSwgMHg5YSwgMHgxZiwgMHgxMywgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg4ZiwgMHg0OSwgMHg5NSwgMHhjNSwgMHgxYSwgMHhiNSwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhkYywgMHhiMiwgMHhiMCwgMHg4OCwgMHg3ZCwgMHhhYywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhlNiwgMHg3LCAweDEzLCAweGI0LCAweGY3LCAweDYzLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDcsIDB4MTMsIDB4Y2EsIDB4OTksIDB4NmEsIDB4NjQsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4MWIsIDB4ZmIsIDB4MjIsIDB4NDIsIDB4MzIsIDB4M2QsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZjcsIDB4MWQsIDB4ODEsIDB4ZjcsIDB4NiwgMHg4MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg4NywgMHhiYiwgMHg3OCwgMHg2MiwgMHgxYSwgMHg1YiwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHgyYiwgMHgxZSwgMHgxMywgMHhkNCwgMHg1OCwgMHg1YywgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHg2MSwgMHgxZiwgMHhkMywgMHgzMCwgMHg3LCAweGUsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiNCwgMHhlZSwgMHhmNywgMHgzLCAweGVkLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4MTQsIDB4MzgsIDB4ZjcsIDB4ZSwgMHgxNiwgMHhmNywgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhmYiwgMHgzLCAweGY4LCAweDEwLCAweGY3LCAweDMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlZSwgMHhmNywgMHg2MCwgMHhmYywgMHg5YSwgMHhmYiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhmNywgMHg1LCAweGY3LCAweDMsIDB4ZmMsIDB4MTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NiwgMHhlLCAweDc5LCAweGU3LCAweGY4LCAweDIwLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZGUsIDB4ZTksIDB4ZjcsIDB4OGIsIDB4ZTksIDB4MywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2YSwgMHgxNSwgMHhkYSwgMHhmYiwgMHhhMiwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweGQyLCAweDQ1LCAweGY3LCAweDI1LCAweGY3LCAweDEzLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGY3LCAweDIxLCAweDFlLCAweGY3LCAweGI2LCAweGQ5LCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDk2LCAweDJmLCAweGUxLCAweGZiLCAweDlhLCAweDcsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NWIsIDB4MjQsIDB4ZmIsIDB4NCwgMHg4MywgMHhjYiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmNywgMHhhYiwgMHhkZiwgMHhlNywgMHhmYiwgMHg5NSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4NmIsIDB4ZTYsIDB4MSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YSwgMHhmNywgMHgxYSwgMHhmNywgMHg4YSwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDE2LCAweGViLCAweDYsIDB4ZjcsIDB4NTgsIDB4ZjgsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkMCwgMHhlNiwgMHhmYiwgMHg4YSwgMHgzMCwgMHhkZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI4LCAweGZiLCAweGY0LCAweGZiLCAweDFmLCAweGY3LCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZDEsIDB4ZTYsIDB4ZmIsIDB4OGEsIDB4MzAsIDB4ZDgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGEwLCAweDc2LCAweGY4LCAweDZiLCAweGU2LCAweDEsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZGUsIDB4NiwgMHhmNywgMHhhLCAweGY3LCAweGJjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ZmIsIDB4YmMsIDB4NSwgMHhkZCwgMHg2LCAweGNmLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDUsIDB4YmMsIDB4ZTYsIDB4ZmIsIDB4NzgsIDB4MzAsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2OSwgMHhmYiwgMHhhYiwgMHgyMSwgMHhmNywgMHg5NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDYsIDB4MjMsIDB4ZmIsIDB4OTYsIDB4NjcsIDB4ZjcsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlMCwgMHhlNiwgMHhmYiwgMHg3OSwgMHgzMCwgMHhiYywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MzIsIDB4YSwgMHg5NywgMHgxNiwgMHhmNywgMHg4YywgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHg2LCAweGY3LCAweDEsIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxYiwgMHg1LCAweDRkLCAweDMwLCAweGY3LCAweDg2LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweDYsIDB4ZmIsIDB4MzcsIDB4ZjcsIDB4NWYsIDB4ZjcsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDUsIDB4NSwgMHhkMSwgMHhlNiwgMHhmYiwgMHg3NywgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg2LCAweDM0LCAweGZiLCAweDAsIDB4MzIsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGI3LCAweGU2LCAweGZiLCAweDdhLCAweDMwLCAweGQyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjUsIDB4ZmIsIDB4NDUsIDB4ZmIsIDB4MzksIDB4ZmIsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0NywgMHg2LCAweGUsIDB4MzIsIDB4YSwgMHhmNywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHgzLCAweGY3LCAweDEyLCAweDE2LCAweGY3LCAweGVjLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGYsIDB4ZjcsIDB4MWMsIDB4NiwgMHhmNywgMHgzNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg1LCAweGRiLCAweGU2LCAweGZiLCAweDgxLCAweDMwLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MjIsIDB4ZmIsIDB4MzEsIDB4MjIsIDB4ZjcsIDB4MzEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhlNiwgMHhmYiwgMHg4MiwgMHgzMCwgMHhkYSwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGZiLCAweDg4LCAweDUsIDB4ZmIsIDB4MWMsIDB4ZmIsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweDMyLCAweGEsIDB4Y2MsIDB4ZWQsIDB4ZjcsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4MywgMHhjOCwgMHgxNiwgMHhmOCwgMHg3MSwgMHhmNywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhmYiwgMHgxNSwgMHhmYiwgMHg4ZCwgMHg2LCAweGY3LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDJhLCAweDUsIDB4Y2MsIDB4ZmMsIDB4NTUsIDB4ZmIsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ZjcsIDB4NiwgMHhmNywgMHg2YywgMHg3LCAweGZiLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDI1LCAweDUsIDB4ZSwgMHgyNSwgMHhlNywgMHhmOCwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHgxLCAweGY3LCAweDRkLCAweGVkLCAweDMsIDB4ZjcsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4MTUsIDB4ZjcsIDB4N2EsIDB4ZTcsIDB4ZmIsIDB4MTgsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4ZjcsIDB4MTgsIDB4ZTcsIDB4ZmIsIDB4N2EsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDc2LCAweGY5LCAweDUzLCAweDc3LCAweDEsIDB4ZjgsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4MTUsIDB4ZDIsIDB4YTgsIDB4ZmIsIDB4ZTEsIDB4ZjksIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4NmUsIDB4NSwgMHhlLCAweDI1LCAweGU3LCAweGY4LCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweDEsIDB4ZjcsIDB4ZDIsIDB4ZWMsIDB4MywgMHhmNywgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxNSwgMHgyZiwgMHhmNywgMHg3YSwgMHhmOSwgMHg2MiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHgyZiwgMHhmNywgMHgxOSwgMHhmYywgMHhhYSwgMHg3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTMsIDB4NzYsIDB4ZjgsIDB4MiwgMHg3NywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZjcsIDB4OGUsIDB4MTUsIDB4ZDMsIDB4YjEsIDB4Y2UsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4ZDgsIDB4YzIsIDB4M2EsIDB4Y2IsIDB4NGUsIDB4ZDMsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhjYiwgMHg3LCAweDMwLCAweGY3LCAweDIsIDB4NmMsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4ZjcsIDB4MWMsIDB4OCwgMHg0NywgMHg2LCAweDZiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDY4LCAweDQ1LCAweDMxLCAweDIzLCAweDgsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHhiZCwgMHgxLCAweDQwLCAweDQsIDB4NTksIDB4ZjgsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4NywgMHhlLCAweGY4LCAweGE1LCAweDc2LCAweGY3LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZjcsIDB4M2MsIDB4ZjgsIDB4Y2QsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NGUsIDB4OWQsIDB4YmIsIDB4ZmIsIDB4N2IsIDB4ZjQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdjLCAweGU5LCAweDNhLCAweGU5LCAweGYxLCAweGVkLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDM0LCAweGEsIDB4MTMsIDB4YmMsIDB4ZjQsIDB4ZjcsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OWEsIDB4YTgsIDB4ZTYsIDB4YWEsIDB4ZDMsIDB4MWIsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4NzUsIDB4NWMsIDB4MWYsIDB4N2YsIDB4NywgMHg5MiwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg5MCwgMHg2YywgMHgxYiwgMHhmYiwgMHgzMywgMHgyYiwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHgyZCwgMHhlYiwgMHg1NywgMHhlZCwgMHhjOCwgMHhjOSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhiMywgMHgxZiwgMHgxMywgMHg3YSwgMHg1YywgMHhmNywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHg3LCAweDEzLCAweDdjLCAweDM4LCAweGY3LCAweDNhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTEsIDB4NmUsIDB4ZDIsIDB4ZmIsIDB4MjksIDB4MzEsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NzUsIDB4NTgsIDB4MWUsIDB4ZjcsIDB4ZDcsIDB4ZmIsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MTMsIDB4YmMsIDB4NjAsIDB4NWIsIDB4NGYsIDB4NjgsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NjAsIDB4NjIsIDB4OWUsIDB4YWIsIDB4YjgsIDB4ZDcsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4YzYsIDB4YjYsIDB4ODYsIDB4ODksIDB4YTIsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhlOCwgMHgzYiwgMHhlOSwgMHhmNywgMHg5ZCwgMHhlNywgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHgxMiwgMHg5MywgMHhmNywgMHg0YywgMHgyOCwgMHhlZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhmMCwgMHgxMywgMHg3YSwgMHg5NCwgMHg4OSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhiMSwgMHg2LCAweDEzLCAweGJhLCAweDY4LCAweGJiLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGMwLCAweDFiLCAweGY3LCAweDEyLCAweGY3LCAweGEsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4MWIsIDB4ZmIsIDB4NywgMHhlYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg1NSwgMHg1MywgMHg3ZCwgMHg2NywgMHg1YSwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhmYiwgMHg0YywgMHgyZCwgMHg3LCAweDEzLCAweDc2LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDRjLCAweDM3LCAweDYsIDB4ZjcsIDB4NDgsIDB4ZjcsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDYsIDB4YjgsIDB4Y2QsIDB4ZjcsIDB4MCwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDM0LCAweDU5LCAweDFlLCAweDEzLCAweGJhLCAweDNlLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDM0LCAweDVkLCAweDIyLCAweGE2LCAweGY3LCAweDMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3YywgMHhlOSwgMHhmNywgMHhiMiwgMHhlOSwgMHgxLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweGY3LCAweGFiLCAweGViLCAweDMsIDB4ZjgsIDB4M2EsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4MTUsIDB4ZWIsIDB4ZjcsIDB4NjgsIDB4MmIsIDB4NzgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg2OCwgMHg2NSwgMHg5MSwgMHg2NSwgMHgxYiwgMHhmYiwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhmYiwgMHgxMSwgMHhmYiwgMHg0LCAweGZiLCAweDJiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDM1LCAweGY3LCAweDEyLCAweGViLCAweGU0LCAweGI0LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDFmLCAweDU1LCAweGQ1LCAweDUsIDB4NjIsIDB4NTIsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4M2MsIDB4MWIsIDB4MzksIDB4MzksIDB4YmIsIDB4ZTksIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4Y2EsIDB4ZjMsIDB4YjIsIDB4YjMsIDB4ODEsIDB4N2EsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHg3YywgMHhlOSwgMHgzYSwgMHhlOSwgMHhmNywgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHhkYywgMHhlOSwgMHgxMiwgMHg5OSwgMHhlYywgMHhmNywgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHgyYSwgMHhmNywgMHg0NCwgMHgxMywgMHg3YSwgMHhmOCwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHgxNSwgMHhmNywgMHg0MiwgMHhlOSwgMHgzYywgMHg2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGY4LCAweGFhLCAweGZiLCAweDcyLCAweDJkLCAweGY3LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE3LCAweDcsIDB4YWQsIDB4NjUsIDB4NTIsIDB4OWIsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4MjQsIDB4MjcsIDB4ZmIsIDB4MywgMHhmYiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDExLCAweGY0LCAweGZiLCAweDAsIDB4ZjcsIDB4MjMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmMsIDB4YzIsIDB4YzEsIDB4OWMsIDB4YWIsIDB4YjMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YzAsIDB4ZjcsIDB4NGUsIDB4MTUsIDB4ZDksIDB4Y2QsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4ZTYsIDB4YzEsIDB4NGMsIDB4M2UsIDB4ZmIsIDB4ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDdhLCAweDY5LCAweDNhLCAweDQ3LCAweGM4LCAweGRiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2MsIDB4ZTgsIDB4ZWUsIDB4ZWEsIDB4ZTMsIDB4ZTksIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMiwgMHhmNywgMHg0NSwgMHgxNSwgMHhmOCwgMHgyMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNhLCAweDlmLCAweDI5LCAweGY3LCAweDMsIDB4ZmIsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4ZSwgMHhmYiwgMHgxZiwgMHgzYywgMHhmYiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlLCAweGU0LCAweGZiLCAweDIsIDB4ZjcsIDB4NDEsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4YWEsIDB4YjYsIDB4ZDcsIDB4MWYsIDB4NWYsIDB4ZGEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg0YSwgMHg0NCwgMHg2ZSwgMHgzZCwgMHgxYiwgMHhmYiwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhjYywgMHhhZCwgMHg4NiwgMHgxZiwgMHg4ZCwgMHhlYSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhhMCwgMHhjZSwgMHhhOSwgMHhjOSwgMHgxYiwgMHhjOSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg0NiwgMHg5ZSwgMHgxZiwgMHhlLCAweDdjLCAweGEsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4ZTcsIDB4MSwgMHhmNywgMHg0NCwgMHhmNSwgMHgzLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY4LCAweDUwLCAweGU5LCAweGZiLCAweDdhLCAweGY3LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdhLCAweGU4LCAweGZiLCAweDdhLCAweGFlLCAweDYsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4YTIsIDB4ZGIsIDB4YmQsIDB4YTksIDB4ODQsIDB4ODAsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YjUsIDB4ZTcsIDB4NSwgMHg5NiwgMHgzNSwgMHg0ZCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHgxYiwgMHgyNCwgMHg1MywgMHg1MSwgMHgyNCwgMHgxZiwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgwLCAweDJlLCAweGY3LCAweDAsIDB4ZmIsIDB4OGYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg3LCAweGUsIDB4ZmIsIDB4MjYsIDB4ZTQsIDB4ZjEsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzEsIDB4ZTQsIDB4M2UsIDB4ZTMsIDB4NjksIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHg1MCwgMHhhLCAweGU5LCAweGYyLCAweDFmLCAweGY3LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4MTMsIDB4ZWEsIDB4ZDcsIDB4ZTQsIDB4ZmIsIDB4M2MsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhkYywgMHg1YSwgMHhhLCAweGZiLCAweDksIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4ZjcsIDB4MjEsIDB4YzAsIDB4YmUsIDB4OTQsIDB4YTcsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NjcsIDB4NywgMHg1MSwgMHg4OCwgMHg1ZSwgMHg0MiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDMzLCAweDQzLCAweDQ0LCAweGI3LCAweGQyLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZTksIDB4ZjcsIDB4OGIsIDB4ZTgsIDB4ZWQsIDB4ZTksIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4ZjcsIDB4NDgsIDB4MmEsIDB4ZWMsIDB4ZjcsIDB4NzcsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjQsIDB4OTEsIDB4MTYsIDB4ZjcsIDB4OTYsIDB4ZTksIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjEsIDB4NiwgMHhiZCwgMHhkNSwgMHhjMiwgMHg5NCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhjMywgMHg5OCwgMHg2YSwgMHg2OSwgMHgxZiwgMHhmYiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHgyZCwgMHhmNywgMHg5NiwgMHhlOSwgMHgzOCwgMHhmNywgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGQ4LCAweDcxLCAweGU1LCAweGZiLCAweDFmLCAweDRlLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDcxLCAweDU5LCAweDFlLCAweGY3LCAweDczLCAweGZiLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDcsIDB4MTMsIDB4ZWMsIDB4ZGUsIDB4ZmMsIDB4NGEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmNCwgMHgzOCwgMHg2LCAweGUsIDB4OGIsIDB4ZWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4ZWIsIDB4ZDEsIDB4ZjcsIDB4MjMsIDB4MTIsIDB4ZjcsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MywgMHgyOSwgMHhlZCwgMHgxMywgMHhmMCwgMHhmNywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg5NywgMHg3OSwgMHhhLCAweDZiLCAweGEsIDB4ZmIsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4MjYsIDB4MTUsIDB4ZjgsIDB4NTIsIDB4ZWEsIDB4ZmIsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZjIsIDB4ZmIsIDB4N2YsIDB4MmIsIDB4NiwgMHgxMywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZCwgMHhmYiwgMHg5MiwgMHhmYiwgMHg0MywgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjYsIDB4ZTcsIDB4ZjgsIDB4MzcsIDB4ZTYsIDB4YzUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4MTIsIDB4ZjcsIDB4ZjQsIDB4ZjcsIDB4YSwgMHgzNSwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmMCwgMHhmNywgMHhmNCwgMHhmOCwgMHg5NiwgMHg3MywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZkLCAweGZkLCAweDQ5LCAweDE1LCAweDczLCAweDMwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4YzIsIDB4YzQsIDB4ODEsIDB4YzQsIDB4MWIsIDB4MTMsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjMsIDB4OGMsIDB4ZjcsIDB4MWIsIDB4YzYsIDB4MWYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZmMsIDB4MiwgMHgzMCwgMHhmNywgMHg5YSwgMHhmYiwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDQ2LCAweDgxLCAweDY2LCAweDMxLCAweDU1LCAweDRkLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDZhLCAweDFlLCAweGUsIDB4N2MsIDB4YSwgMHhlOSwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHgxLCAweGVjLCAweGVkLCAweDMsIDB4OWMsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4ZjcsIDB4M2UsIDB4NiwgMHhhZiwgMHhhMiwgMHhmNywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDUsIDB4NzAsIDB4MmQsIDB4ZjcsIDB4OTQsIDB4ZTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2LCAweGZiLCAweDQxLCAweGY3LCAweDI1LCAweGY3LCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweDUsIDB4ZGEsIDB4ZTksIDB4ZmIsIDB4YjEsIDB4MmQsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHgxYSwgMHgzOSwgMHg1LCAweGY3LCAweGZmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDJkLCAweGRiLCAweGZjLCAweDRhLCAweDNiLCAweDcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhlOSwgMHhmOCwgMHg0YSwgMHg0MCwgMHhhLCAweGY4LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDkyLCAweDJkLCAweGY3LCAweDJmLCAweGZjLCAweDRhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDYsIDB4ZSwgMHg5MCwgMHhlOSwgMHhmNywgMHg5OSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGMxLCAweGU5LCAweGY3LCAweDMsIDB4ZTYsIDB4ZjcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHgzLCAweDczLCAweDE2LCAweGY3LCAweDhlLCAweGU5LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdiLCAweDYsIDB4OWUsIDB4OWQsIDB4YTIsIDB4OWIsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YjEsIDB4OTMsIDB4NmEsIDB4NzcsIDB4MWYsIDB4ZmIsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzgsIDB4ZTksIDB4NDIsIDB4ZjcsIDB4NzMsIDB4NywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhhNiwgMHg5NCwgMHg5YywgMHgxYiwgMHhhYywgMHg5NiwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxZiwgMHhmYiwgMHhkNCwgMHhmNywgMHgzNSwgMHhlOSwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MiwgMHg3LCAweGQ3LCAweDVhLCAweGM5LCAweDM4LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDc5LCAweDZjLCAweDcxLCAweDFlLCAweGI1LCAweDcyLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDczLCAweDFiLCAweDZjLCAweDZkLCAweDdmLCAweDc0LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGExLCAweGZiLCAweDQwLCAweDJkLCAweGQ5LCAweGZiLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDcsIDB4ZSwgMHg4YiwgMHhlOSwgMHhmNywgMHg5MSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhlOCwgMHgxMiwgMHg5OCwgMHhmNywgMHg0OCwgMHhmNywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHgxMywgMHhiOCwgMHg5YSwgMHgxNiwgMHhmNywgMHg5NywgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhmNywgMHg2NywgMHg2LCAweGI3LCAweGJkLCAweGNmLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDFiLCAweGQxLCAweDkyLCAweDU1LCAweDY0LCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDQ2LCAweDJkLCAweGY3LCAweDgyLCAweGU5LCAweDQxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDcsIDB4ZjcsIDB4MTIsIDB4NjAsIDB4YzcsIDB4ZmIsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHg1MSwgMHg3OSwgMHg2ZiwgMHg2MSwgMHgxZSwgMHgxMywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhmYiwgMHg0OCwgMHgyZCwgMHhkZSwgMHhmYiwgMHg5MSwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGUsIDB4N2MsIDB4ZTksIDB4ZjcsIDB4YWQsIDB4ZTksIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhOSwgMHhmNywgMHg2ZCwgMHgxNSwgMHhmYiwgMHg0MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHg0ZiwgMHhmNywgMHg2LCAweGY3LCAweGUsIDB4ZjcsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ZjcsIDB4MzksIDB4ZjcsIDB4MzEsIDB4ZmIsIDB4MTgsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWYsIDB4ZmIsIDB4MWQsIDB4ZmIsIDB4MTgsIDB4M2IsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MWUsIDB4ZWYsIDB4MTYsIDB4ZTIsIDB4ZDYsIDB4YzMsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4ZGIsIDB4NTAsIDB4MzcsIDB4MjgsIDB4MzYsIDB4NjQsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4MzEsIDB4YjIsIDB4ZWUsIDB4MWUsIDB4ZSwgMHhmYiwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhkNiwgMHhlMiwgMHhmNywgMHg4OSwgMHhlMywgMHg0MCwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg5YywgMHhmNywgMHg0MywgMHgyYywgMHhlYSwgMHhmNywgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHgxMywgMHhkYSwgMHg5YywgMHg1NSwgMHgxNSwgMHgzMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhlMywgMHhmYiwgMHgxZCwgMHhmNywgMHhlLCAweDcsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4YzEsIDB4NmEsIDB4ZDksIDB4MWIsIDB4ZjcsIDB4MWYsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ZjcsIDB4ZCwgMHhmNywgMHgyOCwgMHhmYiwgMHgyMSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHg1NiwgMHg1MiwgMHg3YiwgMHg2ZCwgMHg2MywgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhhYywgMHhmYiwgMHg0NiwgMHgzMywgMHhkZSwgMHhmYywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDEzLCAweGRhLCAweGU2LCAweGY3LCAweGI4LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NCwgMHg5ZSwgMHhiNCwgMHhkOSwgMHhkMSwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHgzYywgMHg0MywgMHg1OCwgMHgzZSwgMHg1ZiwgMHhmYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGY0LCAweDFlLCAweGUsIDB4ZjgsIDB4ZGEsIDB4NTUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4ZmIsIDB4Y2MsIDB4ZTMsIDB4ZjcsIDB4MWQsIDB4ZjcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDdkLCAweDc1LCAweDU1LCAweDZhLCAweDNkLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDI3LCAweGVkLCAweGY3LCAweGQsIDB4ZjcsIDB4MjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4Y2QsIDB4ZjEsIDB4YzAsIDB4YzQsIDB4N2IsIDB4NmQsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YWMsIDB4ZjcsIDB4NDYsIDB4MzMsIDB4MzgsIDB4ZmMsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgzMCwgMHhmNywgMHhiOCwgMHgxNSwgMHhmNywgMHgxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4OWUsIDB4NjIsIDB4M2QsIDB4NDUsIDB4NWUsIDB4MzgsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4NTgsIDB4ZDgsIDB4YjcsIDB4ZjcsIDB4MCwgMHhhNCwgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDhiLCAweGU5LCAweGY3LCAweDkwLCAweGU5LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDEyLCAweGY3LCAweDI4LCAweGVlLCAweDEzLCAweGIwLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY4LCAweDIxLCAweGU5LCAweGZiLCAweDRiLCAweGY3LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YWUsIDB4YmEsIDB4ZDEsIDB4ZDEsIDB4ZDYsIDB4MWIsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ODEsIDB4NzEsIDB4OGUsIDB4MWYsIDB4ZTksIDB4OTksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg4OSwgMHg3NywgMHhkNywgMHgyMiwgMHgxYiwgMHg0MSwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg2MywgMHg1NSwgMHgxZiwgMHgxMywgMHhkMCwgMHhkMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHgyZCwgMHhmNywgMHg3LCAweGZiLCAweDkwLCAweGZiLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweDdhLCAweGViLCAweGViLCAweGUzLCAweDliLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweDJiLCAweGViLCAweDEyLCAweGNkLCAweGVkLCAweDM2LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGVhLCAweGY3LCAweDg0LCAweGVlLCAweDQwLCAweGVhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDgwLCAweGNkLCAweDdhLCAweDE1LCAweGVkLCAweGFkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YjksIDB4YzEsIDB4ODIsIDB4YzIsIDB4MWIsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhjNCwgMHhlNiwgMHhmNSwgMHgyMSwgMHg5ZiwgMHgzNSwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhkMywgMHgwLCAweDJiLCAweDkzLCAweDQ0LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDFhLCAweGI1LCAweGU1LCAweDkwLCAweGEyLCAweGI3LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDcyLCAweGE3LCAweDFlLCAweDEzLCAweGU1LCAweDAsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4ZjcsIDB4NDgsIDB4MjgsIDB4NjksIDB4NywgMHhhMCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg5OCwgMHg1YywgMHgxYiwgMHgyZSwgMHgyMCwgMHg2NCwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMiwgMHhmNywgMHgyYSwgMHg4MSwgMHhkNiwgMHg4NCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlOCwgMHg4MCwgMHhhZiwgMHg4OCwgMHhlZCwgMHg4YSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2OSwgMHg0NywgMHg3OSwgMHg1MywgMHg0NCwgMHg1NCwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg3MywgMHgxZSwgMHgxMywgMHhlOSwgMHgwLCAweGQwLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZSwgMHg3YywgMHhlNiwgMHhmNywgMHg5OSwgMHhlOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg3NywgMHgxLCAweGY3LCAweDExLCAweGVlLCAweDMsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTUsIDB4MTUsIDB4Y2YsIDB4ZmIsIDB4NTcsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHgwLCAweDc3LCAweGQ3LCAweGRjLCAweGRkLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGQxLCAweDFlLCAweDdhLCAweGU4LCAweDUsIDB4N2EsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MCwgMHg1ZiwgMHg0NywgMHgxYiwgMHgzOSwgMHg4NiwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHgxZiwgMHhmNywgMHg0MiwgMHhmNywgMHg5ZSwgMHhlOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhmNywgMHgxOCwgMHgyOCwgMHhmYiwgMHgxOCwgMHg0NywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2MsIDB4ZTcsIDB4M2MsIDB4ZTksIDB4ZjcsIDB4OTEsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4OWEsIDB4ZjcsIDB4NDMsIDB4MmMsIDB4ZWEsIDB4ZjcsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDIsIDB4MmIsIDB4ZWIsIDB4MmIsIDB4ZjcsIDB4NDMsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4OWEsIDB4ZjcsIDB4ZWQsIDB4MTUsIDB4MTMsIDB4YWEsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGUsIDB4NiwgMHhmYiwgMHg1LCAweGQwLCAweDRlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YzAsIDB4YzIsIDB4YTYsIDB4YTcsIDB4YTgsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NjEsIDB4ZjcsIDB4NDMsIDB4ZTksIDB4NywgMHgxMywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhmNywgMHhlZiwgMHhmYiwgMHg0MiwgMHgyZCwgMHg2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGQ5LCAweGZiLCAweDU2LCAweDYsIDB4NmMsIDB4NjksIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4NGQsIDB4MWIsIDB4MzgsIDB4ODgsIDB4YzQsIDB4YTIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWUsIDB4ZmIsIDB4NDMsIDB4NywgMHhlLCAweGEwLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGVkLCAweGU5LCAweDEsIDB4ZjcsIDB4OTgsIDB4MTYsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgzYywgMHhmNywgMHhlZCwgMHg1LCAweGUwLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDg2LCAweDJkLCAweGM4LCAweDYsIDB4ZmIsIDB4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHhmYiwgMHg4LCAweGY3LCAweDgyLCAweDUsIDB4Y2YsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OTYsIDB4MmQsIDB4ZTAsIDB4NiwgMHhlLCAweGEwLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGVkLCAweGU5LCAweDEsIDB4NzksIDB4ZjcsIDB4NmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4ZjcsIDB4NjcsIDB4MywgMHhmNywgMHgyNCwgMHgxNiwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGQ1LCAweGY3LCAweDY4LCAweGUxLCAweGZiLCAweDY4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4NiwgMHhmNywgMHgyLCAweGY3LCAweGVkLCAweDUsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4ZmIsIDB4NjcsIDB4MmQsIDB4ZDMsIDB4NiwgMHg0ZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHgzNiwgMHhmNywgMHg2ZiwgMHg1LCAweDQ5LCAweDYsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NmYsIDB4NGUsIDB4ZjcsIDB4NTcsIDB4NSwgMHhkMSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2ZCwgMHgyZCwgMHhiYywgMHg2LCAweGUsIDB4N2MsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHgxLCAweDkxLCAweDE2LCAweGY3LCAweDkxLCAweGU5LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZGEsIDB4ZDgsIDB4ZGQsIDB4M2UsIDB4NSwgMHg2NCwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MiwgMHhlOSwgMHgzNywgMHg2LCAweGZiLCAweDI4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGY3LCAweDEwLCAweGY3LCAweDcsIDB4NSwgMHhkYywgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3NSwgMHgyZCwgMHg5ZSwgMHg2LCAweDRmLCAweDUyLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDUsIDB4YTEsIDB4ZTksIDB4ZmIsIDB4ODIsIDB4MmQsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgxNCwgMHhmYiwgMHg5LCAweGZiLCAweDIyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDUsIDB4MzYsIDB4NiwgMHhlLCAweGZiLCAweDIyLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDI5LCAweGUzLCAweDEyLCAweDEzLCAweGMwLCAweGI0LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDMzLCAweGY3LCAweGI0LCAweGUzLCAweDQ4LCAweDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZjgsIDB4MjksIDB4NSwgMHhkNiwgMHhlMywgMHhmYiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhjMywgMHg2LCAweGZiLCAweDE0LCAweGZiLCAweDU1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4NTUsIDB4NSwgMHhjNiwgMHhlMywgMHhmYiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhkNywgMHg2LCAweGY3LCAweDNiLCAweGZiLCAweGE4LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE1LCAweDUsIDB4ZSwgMHg4YiwgMHhlOSwgMHgyZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhkNCwgMHhmNywgMHg0NSwgMHgyZSwgMHhlOCwgMHgxMiwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHhmNywgMHg3YSwgMHhlYywgMHgxMywgMHg2YywgMHhkYiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0YiwgMHhmNywgMHg1MSwgMHgyYSwgMHg2LCAweDEzLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweGZiLCAweDUxLCAweDcsIDB4ZjcsIDB4YjIsIDB4ZjcsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhjZiwgMHhmYywgMHgzYywgMHhmYiwgMHg0NSwgMHhlYywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDljLCAweGRmLCAweGY3LCAweDQxLCAweDcsIDB4ZmIsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YTYsIDB4NSwgMHhlLCAweGY3LCAweDg2LCAweGU0LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NmIsIDB4ZmIsIDB4ODgsIDB4MTUsIDB4ZTgsIDB4NywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg4YiwgMHg5NSwgMHg2OSwgMHgxZiwgMHg3NSwgMHg5MiwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhhMSwgMHgxYSwgMHhmNywgMHgyOCwgMHg3LCAweGQ0LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweDRkLCAweGFlLCAweDFlLCAweGM5LCAweGFlLCAweGFjLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDFhLCAweGY3LCAweDI4LCAweDcsIDB4YTEsIDB4OTIsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4OTIsIDB4MWUsIDB4OTUsIDB4YWQsIDB4YjIsIDB4OGIsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZTgsIDB4NywgMHg1YiwgMHg0ZiwgMHg4YiwgMHg3OSwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg1NiwgMHg3NiwgMHg3NSwgMHg1MiwgMHg1YywgMHgxYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDcsIDB4ZmIsIDB4MCwgMHg4MiwgMHg0OSwgMHgyMiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgyZCwgMHg3LCAweGY0LCAweDdjLCAweDk0LCAweDQ5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MWEsIDB4ZmIsIDB4OSwgMHg3LCAweDVjLCAweGExLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDc2LCAweDFlLCAweDc5LCAweGI5LCAweGM3LCAweDhiLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGUsIDB4ZmIsIDB4NzksIDB4NzYsIDB4ZmEsIDB4N2MsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg4ZSwgMHgxNSwgMHhlNSwgMHhmYSwgMHg3YywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZjcsIDB4YTAsIDB4ZTQsIDB4MywgMHhmNywgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYywgMHgxNSwgMHgyZiwgMHg3LCAweGJiLCAweGM2LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGJhLCAweDFmLCAweGJmLCAweDlmLCAweGEyLCAweGM1LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDksIDB4NywgMHhmNywgMHgwLCAweDk0LCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDliLCAweDFlLCAweGU5LCAweDcsIDB4MjIsIDB4OWIsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4ZjcsIDB4MCwgMHgxYSwgMHhmNywgMHg5LCAweDcsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4YzUsIDB4NTYsIDB4OWYsIDB4MWUsIDB4OWQsIDB4NWMsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4NWIsIDB4MWIsIDB4MmUsIDB4NywgMHhiMiwgMHhiMCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhhZSwgMHgxZiwgMHhhMiwgMHg4NCwgMHg5MSwgMHg3MiwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmYiwgMHgyOCwgMHg3LCAweDQzLCAweGFjLCAweDM5LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDFlLCAweDRkLCAweDY4LCAweDZhLCAweDM4LCAweDQyLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI4LCAweDcsIDB4NzQsIDB4ODUsIDB4NzIsIDB4NzQsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODAsIDB4NjcsIDB4NjcsIDB4OGIsIDB4NjQsIDB4MWIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NSwgMHhlZiwgMHg2MiwgMHhmMCwgMHgxMiwgMHgxMywgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmNywgMHg2NywgMHgxNSwgMHhjYywgMHg1MSwgMHg1LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDlkLCAweGJlLCAweGIzLCAweDFiLCAweGE4LCAweGIyLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweGIyLCAweDFmLCAweDEzLCAweDgwLCAweDgwLCAweGE0LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweGEzLCAweDFiLCAweGI0LCAweGMzLCAweGFmLCAweGUwLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDRlLCAweGM1LCAweDUsIDB4NzUsIDB4N2QsIDB4NmIsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4MWIsIDB4NzMsIDB4NzQsIDB4OTcsIDB4OTksIDB4NzEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NDAsIDB4OWIsIDB4NmIsIDB4NjcsIDB4OWQsIDB4NWQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NjUsIDB4NDUsIDB4NTMsIDB4NmEsIDB4MWYsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHg3NiwgMHhmOCwgMHg0YSwgMHhmNywgMHgzMSwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGY3LCAweDE3LCAweDMsIDB4ZjcsIDB4NzQsIDB4ZmIsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MmIsIDB4NiwgMHg3NywgMHhmOCwgMHgyMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4NiwgMHg2MCwgMHhmNywgMHhhLCAweDE1LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDY5LCAweGMxLCAweGMxLCAweGI3LCAweGFkLCAweGI3LCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGFlLCAweDU1LCAweDU1LCAweDVmLCAweDY4LCAweDVmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NmYsIDB4NzYsIDB4MSwgMHhkNSwgMHhlYywgMHhkOSwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhlOSwgMHgzLCAweGY3LCAweDhkLCAweDVhLCAweDE1LCAweGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweDYsIDB4Y2UsIDB4OTUsIDB4YzUsIDB4YWYsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4NWUsIDB4ZDIsIDB4MTgsIDB4NjEsIDB4NDEsIDB4NjAsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4MWIsIDB4ZmIsIDB4NiwgMHg3ZCwgMHhlNywgMHhhMiwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhjYSwgMHhkYSwgMHhhZiwgMHhiMSwgMHg3YywgMHg3YSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg1NCwgMHhlOSwgMHhmNywgMHg0NCwgMHgyZCwgMHg2YywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDk3LCAweDcyLCAweDk0LCAweDc3LCAweDhlLCAweDgsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4MjUsIDB4NywgMHhmYiwgMHhiLCAweDcyLCAweDUzLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDFhLCAweGZiLCAweDI0LCAweGY3LCAweDEyLCAweDVjLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDFlLCAweGUsIDB4ODQsIDB4NzYsIDB4ZjcsIDB4YjksIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzQsIDB4ZTgsIDB4MTIsIDB4ZjcsIDB4ZiwgMHhlOSwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHgxMywgMHhlOCwgMHhkZiwgMHhhZiwgMHgxNSwgMHhiZSwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDkzLCAweDk3LCAweGNlLCAweGIwLCAweGJiLCAweDFiLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDgyLCAweDgzLCAweGE2LCAweDFmLCAweDg0LCAweGEyLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDlmLCAweDFiLCAweGQzLCAweGIyLCAweGI2LCAweDcxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzksIDB4NjQsIDB4YSwgMHg3NSwgMHg5NCwgMHg3YywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2MSwgMHg4NCwgMHg4NSwgMHg3ZiwgMHgxZiwgMHg5ZiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhhYiwgMHhhZSwgMHgxYSwgMHhhMSwgMHg4YiwgMHhhMywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHgxZSwgMHhmNywgMHg1ZiwgMHhkOCwgMHhmYiwgMHg3NCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGYwLCAweDdmLCAweGE0LCAweDg2LCAweGI0LCAweGEyLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YmQsIDB4N2MsIDB4NWUsIDB4YTAsIDB4MWYsIDB4ZDUsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiOSwgMHg3MCwgMHg1ZCwgMHhjOCwgMHg2MywgMHhhLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDY2LCAweDkzLCAweDc3LCAweDFlLCAweDNkLCAweDNlLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MTMsIDB4ZTgsIDB4OTIsIDB4NzYsIDB4OGMsIDB4NzYsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4OGEsIDB4NDksIDB4NjYsIDB4NDksIDB4NjAsIDB4NmEsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGNmLCAweGUzLCAweGY3LCAweDkyLCAweGUzLCAweDEsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjcsIDB4OTcsIDB4ZTUsIDB4MywgMHhjMSwgMHhmNSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHg1MiwgMHhjOCwgMHhjNCwgMHg1LCAweDcxLCAweGFlLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGI5LCAweDFiLCAweGI4LCAweGI3LCAweDk4LCAweGE1LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGM5LCAweDUxLCAweGM2LCAweGM2LCAweDRjLCAweGM1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YWEsIDB4OTgsIDB4YjUsIDB4YjUsIDB4MWEsIDB4YjcsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4NzIsIDB4YWMsIDB4MWUsIDB4Y2EsIDB4YzUsIDB4NTEsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4NTAsIDB4NjgsIDB4YTcsIDB4NWEsIDB4OTgsIDB4NWIsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4NWYsIDB4OGEsIDB4NjAsIDB4N2YsIDB4NmEsIDB4NzIsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4MTgsIDB4NGYsIDB4NTAsIDB4Y2EsIDB4NTEsIDB4NSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg3ZiwgMHg2MCwgMHg2MSwgMHgxYSwgMHg2MSwgMHg5NywgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg2YiwgMHgxZSwgMHhjMCwgMHhmNywgMHhhLCAweDE1LCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGM1LCAweGQzLCAweGQzLCAweGM1LCAweDUxLCAweDQ2LCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDUyLCAweDQzLCAweDQzLCAweDUyLCAweGM0LCAweGQxLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OGIsIDB4ZTIsIDB4YzQsIDB4YzEsIDB4YjUsIDB4YzAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4ZTIsIDB4MSwgMHg5NSwgMHhmNywgMHg4NCwgMHhmMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgzLCAweGY3LCAweDIyLCAweDE2LCAweGY3LCAweGQzLCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUsIDB4YzMsIDB4ZjcsIDB4MjUsIDB4YzEsIDB4ZmIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4ZjcsIDB4MjUsIDB4YzAsIDB4ZmIsIDB4MjAsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhmNywgMHg0YSwgMHg1LCAweGQ4LCAweGUyLCAweGZiLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGI3LCAweDYsIDB4MmIsIDB4ZmIsIDB4NywgMHgyYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDUsIDB4YjgsIDB4ZTIsIDB4ZmIsIDB4ODQsIDB4MzQsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgzNiwgMHhmYiwgMHg0YSwgMHg1LCAweGZiLCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweGY3LCAweDI2LCAweDYwLCAweGZiLCAweDI2LCAweDU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDUzLCAweGZiLCAweDUsIDB4NiwgMHhlLCAweGZiLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweGU2LCAweDZlLCAweGEsIDB4ZjcsIDB4YjEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjgsIDB4MWEsIDB4MzEsIDB4NiwgMHhmZCwgMHhlNiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGY4LCAweDFiLCAweDMxLCAweDYsIDB4ZSwgMHg0NSwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhmNywgMHg0MCwgMHhmNywgMHhkNSwgMHhmNywgMHg0MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGU5LCAweDEyLCAweGUzLCAweGYxLCAweGY3LCAweDYwLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDljLCAweGUzLCAweDQ1LCAweDE1LCAweGY3LCAweDg0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4Y2QsIDB4YTQsIDB4ZDQsIDB4YjEsIDB4N2QsIDB4OWYsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4MWYsIDB4YTUsIDB4OTYsIDB4YjMsIDB4YWEsIDB4YzEsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4NzQsIDB4YWIsIDB4NmIsIDB4YTIsIDB4MWUsIDB4ZmIsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDEsIDB4NSwgMHg4YiwgMHg4NiwgMHg4ZSwgMHg5MCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg5OCwgMHg4YywgMHhhMiwgMHgxZSwgMHhmNywgMHgyZSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGFjLCAweGYxLCAweGY3LCAweDQwLCAweGZiLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NDksIDB4MzYsIDB4NzgsIDB4MjYsIDB4NmUsIDB4YTAsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NzgsIDB4MWYsIDB4NzMsIDB4N2IsIDB4NjYsIDB4NzIsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NTksIDB4YTcsIDB4NzEsIDB4YmIsIDB4NmIsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4ZmIsIDB4MWQsIDB4NSwgMHhhMSwgMHg3ZCwgMHg4ZSwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHgxYSwgMHg4MiwgMHg3ZSwgMHg4YSwgMHg3YSwgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhkYSwgMHg2LCAweDEzLCAweDZjLCAweDI1LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4Y2MsIDB4MTUsIDB4ZmIsIDB4MzcsIDB4ZjcsIDB4MSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDkyLCAweDgyLCAweDk3LCAweDk3LCAweDFhLCAweGEwLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDk4LCAweDkyLCAweDFlLCAweGY3LCAweDQ4LCAweGZiLCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5NCwgMHg4NiwgMHg5MiwgMHg4MywgMHg4MiwgMHgxYSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg4NCwgMHg3YSwgMHg4OSwgMHgxZSwgMHhlLCAweGY4LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweDEsIDB4ZjcsIDB4MTQsIDB4ZjcsIDB4MTcsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTYsIDB4MywgMHhmNywgMHhlYSwgMHhmOCwgMHg3OSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNiwgMHhmNywgMHgyMCwgMHhmYiwgMHgxNiwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGZiLCAweDIwLCAweDE1LCAweGY3LCAweDE3LCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE3LCAweDYsIDB4ZSwgMHg3OSwgMHhiOCwgMHhlNywgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZCwgMHhiYSwgMHhkNSwgMHhiOCwgMHgxLCAweDhiLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweGI5LCAweGY3LCAweGZjLCAweGI4LCAweDMsIDB4ZjcsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmYiwgMHgzOSwgMHhmNywgMHgxYSwgMHhmYiwgMHgxYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhmNywgMHgzYSwgMHhmNywgMHgxYiwgMHhmNywgMHgxYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhmNywgMHgzOSwgMHhmYiwgMHgxYiwgMHhmNywgMHgxYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhmYiwgMHgzOSwgMHhmYiwgMHgxYSwgMHhmYiwgMHgxYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHgxZSwgMHhiOCwgMHgxNiwgMHhmNywgMHgyMSwgMHhmNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4ZjcsIDB4MjEsIDB4ZjcsIDB4MjEsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1LCAweGZiLCAweDIxLCAweGZiLCAweDIxLCAweGZiLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NSwgMHhmYiwgMHgyMSwgMHhmYiwgMHgyMSwgMHhmYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4ZjcsIDB4MjEsIDB4MWUsIDB4ZjgsIDB4OSwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3MSwgMHg3MywgMHg2MSwgMHg3MywgMHg2NCwgMHgxYiwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHhjNywgMHhjYywgMHhjZCwgMHhjMCwgMHhjNSwgMHhjYiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg3OSwgMHg3NSwgMHhhMSwgMHgxZiwgMHhiMSwgMHhiMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDZhLCAweDVmLCAweDllLCAweDVlLCAweDFiLCAweDM3LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDI5LCAweDM1LCAweGNkLCAweDM1LCAweGYyLCAweGM0LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGEwLCAweDliLCAweDFmLCAweGUsIDB4ZjcsIDB4NTgsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzEsIDB4ZGIsIDB4MTIsIDB4ZjcsIDB4MjcsIDB4Y2YsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhjZSwgMHg0OCwgMHhmNywgMHg5LCAweDEzLCAweGU4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweGY3LCAweDYwLCAweDE1LCAweGY3LCAweDksIDB4ZGQsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhmMCwgMHhmNywgMHgyMywgMHg3LCAweGRlLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweGZiLCAweDgsIDB4NWMsIDB4NTksIDB4N2MsIDB4NzcsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OWYsIDB4NDcsIDB4NSwgMHg5OSwgMHhhNSwgMHhjNiwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHgxYiwgMHhhZCwgMHg5ZSwgMHg3ZSwgMHg2MiwgMHgxZiwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg3NSwgMHg4ZSwgMHg3NiwgMHgxYiwgMHgyNCwgMHg3NCwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg0NCwgMHhiOCwgMHg0YSwgMHhjZSwgMHhhNywgMHhhNywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhhMCwgMHgxZiwgMHhmNywgMHgxMiwgMHg0LCAweDYzLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDU2LCAweDY3LCAweDFiLCAweDZkLCAweDdmLCAweGE0LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGI2LCAweDk1LCAweGIxLCAweDlhLCAweDlhLCAweDg4LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDFmLCAweGUsIDB4N2IsIDB4YSwgMHhiYSwgMHhmOCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweGEzLCAweGY3LCAweDk4LCAweDE1LCAweGY3LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUyLCAweGMxLCAweGM5LCAweGZiLCAweDJkLCAweGY3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJiLCAweGY3LCAweDEwLCAweDU0LCAweGNhLCAweDUsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4ZmIsIDB4NGUsIDB4MTUsIDB4ZjcsIDB4NmMsIDB4ZmIsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4YzksIDB4ZmIsIDB4MjgsIDB4ZjcsIDB4MTMsIDB4ZjcsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4NTMsIDB4Y2EsIDB4NSwgMHhlLCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDVkLCAweGY3LCAweDEsIDB4MSwgMHhmOCwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHgzLCAweGQyLCAweGY3LCAweGM0LCAweDE1LCAweGY3LCAweGZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVkLCAweGViLCAweGY3LCAweGNhLCAweGZjLCAweDVlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3OSwgMHhiOCwgMHhmNywgMHhmNiwgMHhiOSwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDEsIDB4OGIsIDB4YjgsIDB4ZjcsIDB4MmYsIDB4YmIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiZCwgMHhmNywgMHgyNCwgMHhiOCwgMHgzLCAweGY3LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZmIsIDB4MzksIDB4ZjcsIDB4MWIsIDB4ZmIsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4ZjcsIDB4M2EsIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4ZjcsIDB4MzksIDB4ZmIsIDB4MWEsIDB4ZjcsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4ZmIsIDB4MzksIDB4ZmIsIDB4MWIsIDB4ZmIsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MWUsIDB4YjgsIDB4MTYsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2LCAweGY3LCAweDIwLCAweGY3LCAweDIyLCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NiwgMHhmYiwgMHgyMCwgMHhmYiwgMHgyMCwgMHhmYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDYsIDB4ZmIsIDB4MjIsIDB4ZmIsIDB4MjAsIDB4ZmIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2LCAweGY3LCAweDIwLCAweDFlLCAweGY3LCAweDJmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDE1LCAweGJiLCAweGY3LCAweDgsIDB4YzEsIDB4NiwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4LCAweDUsIDB4YzUsIDB4NiwgMHg1NCwgMHhmNywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDllLCAweDkxLCAweGFmLCAweGE0LCAweGM3LCAweDFhLCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDg2LCAweGZiLCAweDFlLCAweDhkLCAweDFlLCAweGJiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweDE1LCAweGYyLCAweDcsIDB4ZGUsIDB4YTksIDB4ODMsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NjQsIDB4ODQsIDB4NDEsIDB4MWYsIDB4ZSwgMHhmOCwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHgxLCAweGUzLCAweGY4LCAweDNjLCAweDMsIDB4ZTMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4MTUsIDB4ZjgsIDB4M2MsIDB4ZGIsIDB4ZmMsIDB4M2MsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweDg3LCAweGU2LCAweGY3LCAweDUzLCAweGU2LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4ZWEsIDB4ZjcsIDB4NWIsIDB4ZTksIDB4MywgMHhmNSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHgxNSwgMHgyNCwgMHhlMSwgMHgzOCwgMHhmNywgMHgwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZTAsIDB4ZGUsIDB4ZjIsIDB4ZjMsIDB4MzYsIDB4ZGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmYiwgMHgwLCAweDM1LCAweDM4LCAweDIzLCAweDFlLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGMxLCAweGI2LCAweGI1LCAweGMzLCAweGM0LCAweGI2LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDU2LCAweDYwLCAweDYxLCAweDUyLCAweDUzLCAweDYwLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDFlLCAweGUsIDB4YTMsIDB4ZGMsIDB4ZjcsIDB4NGEsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjAsIDB4NjcsIDB4YSwgMHhlYiwgMHgzLCAweGQyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDE1LCAweGY3LCAweDQ4LCAweGZiLCAweDI3LCAweGViLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGY3LCAweDRhLCAweGUzLCAweGZiLCAweDRhLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGZiLCAweDIwLCAweGZiLCAweDQ4LCAweDYsIDB4ZmIsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmOCwgMHg1ZSwgMHhkYywgMHhmYywgMHg1ZSwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2EsIDB4ZDYsIDB4ZjcsIDB4MzksIDB4ZjcsIDB4MjYsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4MTIsIDB4ZjgsIDB4MCwgMHhkZCwgMHgxMywgMHhiMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhmNywgMHg3YSwgMHgxNSwgMHhmNywgMHhiOSwgMHhkNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHg2LCAweGY3LCAweDEsIDB4ZTAsIDB4NSwgMHhhNywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhiMCwgMHhiNywgMHgxYSwgMHhhZSwgMHg2ZSwgMHhlNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDU0LCAweDU3LCAweDczLCAweDU2LCAweDZjLCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDQ2LCAweGRlLCAweDcsIDB4MTMsIDB4YjAsIDB4YTEsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4YzYsIDB4YTQsIDB4YWYsIDB4ODIsIDB4NjQsIDB4NzgsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NzksIDB4N2MsIDB4MWUsIDB4ZmIsIDB4NGMsIDB4ZmIsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweGY3LCAweDcyLCAweGQ2LCAweGVlLCAweGQ0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDc3LCAweDEyLCAweGY3LCAweDgzLCAweGY3LCAweDUwLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweDRlLCAweGRjLCAweDEzLCAweGU0LCAweGY3LCAweDJjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDE1LCAweDcxLCAweGNiLCAweGIyLCAweDgxLCAweGIzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGM1LCAweGM2LCAweGNlLCAweGFlLCAweDdhLCAweGFlLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDFmLCAweDEzLCAweGU4LCAweDk3LCAweDk3LCAweDlhLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDFhLCAweGQ3LCAweDUwLCAweGFjLCAweDRhLCAweDU3LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDZhLCAweDY5LCAweDFlLCAweGI1LCAweDRiLCAweDUsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YWYsIDB4YTEsIDB4YWYsIDB4MWIsIDB4OWMsIDB4YTIsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzAsIDB4NzUsIDB4ODAsIDB4NzAsIDB4MWYsIDB4MTMsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4N2IsIDB4OGMsIDB4NjMsIDB4MWIsIDB4NDIsIDB4Y2UsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlNCwgMHhiNiwgMHg5YywgMHg3NCwgMHg3MiwgMHg2ZSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg2NCwgMHgxZiwgMHg1ZSwgMHg4YywgMHg2NiwgMHg5OSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg4LCAweGUsIDB4ZjgsIDB4YTUsIDB4NzYsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHg0ZSwgMHhmOCwgMHg5MCwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhjYywgMHg2YiwgMHhlMywgMHhmYiwgMHg3YiwgMHgyNCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4ZCwgMHg3NiwgMHhmNywgMHgzNiwgMHhkOSwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhmNywgMHg4MywgMHhlNSwgMHgxMiwgMHg5YSwgMHhmNywgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhlYywgMHhmNywgMHgxYywgMHhmNywgMHg0NiwgMHgyYSwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhmNywgMHg0NCwgMHgxMywgMHhkOSwgMHgwLCAweGVhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDE1LCAweGVjLCAweGY3LCAweDUxLCAweDYsIDB4NzcsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4ODMsIDB4YWIsIDB4MWIsIDB4YzAsIDB4YzYsIDB4YTEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4MWYsIDB4NTgsIDB4NywgMHgxMywgMHhiOCwgMHg4MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhlNSwgMHg2LCAweDEzLCAweGJhLCAweDAsIDB4M2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4ZmIsIDB4NDYsIDB4MzEsIDB4NiwgMHgxMywgMHhkOSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGZiLCAweDU2LCAweDYsIDB4NmIsIDB4NzEsIDB4NTUsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4MWIsIDB4NWIsIDB4NjEsIDB4YTAsIDB4Y2EsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4ZmIsIDB4NDUsIDB4MzEsIDB4NywgMHgxMywgMHhkNiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweDYsIDB4ZSwgMHg1YSwgMHg3NiwgMHhmOSwgMHgwLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4ZDQsIDB4YzIsIDB4ZWIsIDB4YzAsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg0NSwgMHgxNSwgMHhjMiwgMHhmOSwgMHgwLCAweGViLCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzAsIDB4ZjksIDB4MCwgMHhjOCwgMHhhOSwgMHhmYiwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDYwLCAweDIxLCAweDRmLCAweGZiLCAweGMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhmNSwgMHg1NywgMHhmNywgMHg1YiwgMHg4YSwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM5LCAweGY3LCAweDRlLCAweDEsIDB4ZjcsIDB4NTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4MTUsIDB4NTgsIDB4YmEsIDB4NjEsIDB4YzQsIDB4YzQsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4YmUsIDB4YmUsIDB4NWMsIDB4YjUsIDB4NTIsIDB4NTIsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NTgsIDB4MWUsIDB4ZSwgMHhmYiwgMHg0ZCwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg3NywgMHgxMiwgMHhmNywgMHg5MSwgMHgxNiwgMHg4MCwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDhmLCAweDkyLCAweDlhLCAweDhkLCAweDk5LCAweDFiLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDg1LCAweDc3LCAweDdkLCAweDdlLCAweDgzLCAweDdiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGMwLCAweDdjLCAweDc0LCAweDkwLCAweDk0LCAweDgyLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDUzLCAweDUsIDB4NzksIDB4YTQsIDB4YTYsIDB4ODEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YzksIDB4YjEsIDB4YjgsIDB4YzIsIDB4YzgsIDB4NjAsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4OGYsIDB4MWYsIDB4YTUsIDB4NywgMHhlLCAweGY3LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGY3LCAweGM5LCAweDc3LCAweDEyLCAweGY3LCAweDNhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDNiLCAweGRiLCAweDEzLCAweGUwLCAweGY3LCAweDJkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDE1LCAweGY3LCAweGJhLCAweGQ4LCAweDIzLCAweGY3LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4NDUsIDB4NzUsIDB4NSwgMHgzZiwgMHg3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGVjLCAweDkxLCAweDUsIDB4ZmIsIDB4NmQsIDB4ZmIsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGUsIDB4ZjcsIDB4NTgsIDB4ZGUsIDB4ZjcsIDB4NmUsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHgyNywgMHhjZiwgMHhmNywgMHgzZiwgMHhjZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI3LCAweGY4LCAweDE4LCAweDE1LCAweDIxLCAweGNhLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweGRhLCAweGQzLCAweGQ2LCAweGY3LCAweDksIDB4ZTksIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4MjksIDB4MmEsIDB4NTQsIDB4MjQsIDB4MzIsIDB4MWUsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4MTUsIDB4YmUsIDB4YTcsIDB4YzcsIDB4YzUsIDB4YzUsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4NWQsIDB4NDksIDB4NjYsIDB4NjAsIDB4NWIsIDB4NTMsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4YzMsIDB4MWUsIDB4ZSwgMHg3YiwgMHhhLCAweGJjLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDMsIDB4ZjAsIDB4ZDEsIDB4MTUsIDB4ZjcsIDB4NzcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4ZmIsIDB4NzQsIDB4ZjcsIDB4NGUsIDB4NTQsIDB4NGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4ZmIsIDB4MTAsIDB4ZmIsIDB4MmQsIDB4ZmIsIDB4MTMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiNSwgMHg0ZCwgMHgxNSwgMHhmNywgMHg2YywgMHhmNywgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2OSwgMHhmNywgMHg0ZSwgMHg1MywgMHg0YywgMHhmNywgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMCwgMHhmYiwgMHgyOCwgMHhmYiwgMHgxMywgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NzYsIDB4YTIsIDB4YzQsIDB4NWEsIDB4NzYsIDB4ZjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhmNywgMHg0MywgMHhkMCwgMHg4YiwgMHhmNywgMHg0ZiwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhiZiwgMHhkNSwgMHhmOCwgMHg4LCAweGQ3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDgwLCAweGY3LCAweGYwLCAweGNiLCAweDE1LCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDNmLCAweDUyLCAweGY3LCAweDU5LCAweGM0LCAweDVlLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGNhLCAweDVlLCAweGY3LCAweDQxLCAweDQyLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4ZmIsIDB4NTIsIDB4NSwgMHhlMywgMHg5YywgMHgxNSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHg1LCAweDNmLCAweDcsIDB4ZmMsIDB4NzEsIDB4ZmIsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MTMsIDB4M2YsIDB4ODAsIDB4NjUsIDB4YSwgMHg1MCwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZkLCAweDEyLCAweGZiLCAweGVhLCAweDE1LCAweGY3LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDJkLCAweGY3LCAweGE0LCAweDYsIDB4ZmIsIDB4MzcsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0NywgMHg3LCAweGU0LCAweDkwLCAweDUsIDB4ZmIsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4NywgMHhlLCAweDUxLCAweGNlLCAweGY3LCAweDMzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDQ3LCAweGNmLCAweDhhLCAweGQxLCAweDhiLCAweGY3LCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDc3LCAweGIwLCAweDc3LCAweDEyLCAweGJjLCAweGQxLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGY4LCAweDIwLCAweDk3LCAweDE1LCAweDUxLCAweGY3LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGZiLCAweDIyLCAweDcsIDB4ZjcsIDB4YSwgMHhlYiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhiMywgMHgxYSwgMHhhOSwgMHg3MSwgMHhkYiwgMHgyOSwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg3NSwgMHg2NywgMHg2ZCwgMHgxZSwgMHg0MywgMHhkMiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGFiLCAweDllLCAweDg3LCAweGI2LCAweGJkLCAweGExLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDY5LCAweDc5LCAweDgyLCAweDdlLCAweGZiLCAweDQxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweDFlLCAweDEzLCAweDliLCAweGZjLCAweDRmLCAweGY3LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDkxLCAweGQxLCAweDM0LCAweGY3LCAweGE4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4OWQsIDB4ZmIsIDB4MmUsIDB4NzgsIDB4NSwgMHg0NiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDkwLCAweDUsIDB4ZmIsIDB4NTUsIDB4MmIsIDB4NywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgwLCAweDE1LCAweDY1LCAweGEsIDB4NTAsIDB4YzYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDVlLCAweGM0LCAweDU4LCAweDc2LCAweGFhLCAweDc2LCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGY3LCAweDNjLCAweGQwLCAweGU1LCAweGNiLCAweGM4LCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDc3LCAweGIwLCAweDc3LCAweDEyLCAweDEzLCAweDVlLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGU3LCAweGMzLCAweDE1LCAweGY3LCAweDI5LCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ODAsIDB4NWYsIDB4NDEsIDB4NTIsIDB4ZjcsIDB4NTYsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4YjcsIDB4YjksIDB4Y2IsIDB4NWQsIDB4ZjcsIDB4NDYsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHgyZCwgMHhmYiwgMHg1NiwgMHg1LCAweGUzLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGM4LCAweGQ5LCAweDUsIDB4M2QsIDB4NywgMHhmYywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1ZiwgMHgxNSwgMHg3MSwgMHhjNywgMHhhZiwgMHg4MiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhlMSwgMHhiZSwgMHhjMSwgMHhjOSwgMHhhYSwgMHg3YywgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg5ZiwgMHgxZiwgMHg5NiwgMHg5NSwgMHg5OCwgMHhhMCwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhjOSwgMHg1NiwgMHhhOCwgMHg0ZiwgMHg1YiwgMHg1NywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg2YiwgMHgxZSwgMHhiNCwgMHg1NiwgMHg1LCAweDlkLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDlhLCAweGIwLCAweDFiLCAweGE0LCAweDlmLCAweDgzLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDc2LCAweDgyLCAweDczLCAweDFmLCAweDU1LCAweDRiLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjIsIDB4OWEsIDB4NzYsIDB4NzUsIDB4NzEsIDB4NzUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4MWYsIDB4ODksIDB4NiwgMHg2MSwgMHg4YywgMHg2OSwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg5YSwgMHg4LCAweGE4LCAweGZjLCAweDEzLCAweDE1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDgwLCAweDY1LCAweGEsIDB4NSwgMHgxMywgMHg1ZCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGM2LCAweDUsIDB4ZSwgMHhmYiwgMHgyNiwgMHhlNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHhmNywgMHgyZSwgMHgxMiwgMHhlZCwgMHhlYywgMHhiYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg3YywgMHhlZCwgMHgxMywgMHhlOCwgMHhmNywgMHhhZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHgxNSwgMHg1NywgMHg3ZiwgMHhmYiwgMHgxNywgMHg2NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweDFhLCAweGZiLCAweDIsIDB4ZWIsIDB4NGUsIDB4ZjcsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhkOSwgMHg5YSwgMHg5ZiwgMHhjMCwgMHgxZSwgMHhmNywgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHgzZiwgMHg3LCAweDg1LCAweDZmLCAweDZkLCAweDg2LCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDQ4LCAweDU1LCAweGEzLCAweGMyLCAweGQ1LCAweGU5LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweDk5LCAweDFmLCAweGY3LCAweDEzLCAweDcsIDB4MTMsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4NiwgMHgxMywgMHhmMCwgMHg2NCwgMHhmNywgMHg3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGIyLCAweDY5LCAweGJjLCAweDFlLCAweDEzLCAweDUwLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGFkLCAweGI2LCAweGI2LCAweDY0LCAweGFkLCAweDVhLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDY5LCAweDYwLCAweDFmLCAweGUsIDB4OGIsIDB4ZTUsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjcsIDB4N2EsIDB4ZTUsIDB4ZjcsIDB4NmYsIDB4NzcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgxOSwgMHhmOSwgMHgzYywgMHgxNSwgMHhmNywgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhhNSwgMHhjNSwgMHhmYiwgMHhiZSwgMHhmNywgMHhkLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGQsIDB4ZmQsIDB4YTQsIDB4MjIsIDB4YSwgMHg4YiwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhlNSwgMHhmNywgMHg2ZCwgMHhlNSwgMHhmNywgMHg3YywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhhLCAweDgyLCAweDE2LCAweDIwLCAweGEsIDB4ZmIsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZmMsIDB4MTUsIDB4ZjcsIDB4ZDIsIDB4ZDUsIDB4NjIsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YmQsIDB4NmEsIDB4YSwgMHhlLCAweDhiLCAweGU0LCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweGY3LCAweDZkLCAweGU0LCAweGY3LCAweDdhLCAweDc3LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4MjAsIDB4ZjgsIDB4ZWYsIDB4MTUsIDB4ZjcsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4ZjcsIDB4MmIsIDB4MjUsIDB4YzcsIDB4YWYsIDB4ZmIsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjEsIDB4NSwgMHgyYSwgMHg2LCAweGZiLCAweDM5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDUsIDB4MzMsIDB4ZmQsIDB4MTQsIDB4MjIsIDB4YSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhjYywgMHhlNSwgMHhmNywgMHg2ZCwgMHhlNSwgMHhjNywgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhkZSwgMHg4ZiwgMHg3NywgMHgxMiwgMHg4MiwgMHhmNywgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHhmNywgMHg5MiwgMHgxMywgMHhlYiwgMHhkZSwgMHhmOSwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlMywgMHg3MSwgMHg1LCAweGFmLCAweDk5LCAweDk4LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDFiLCAweGFmLCAweDlmLCAweDc4LCAweDdiLCAweGE0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGY3LCAweDdlLCAweDlmLCAweGExLCAweDdmLCAweGFlLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGJkLCAweGM2LCAweGNhLCAweDlhLCAweDFmLCAweDM1LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NzUsIDB4ODQsIDB4N2QsIDB4NjEsIDB4NjYsIDB4MWIsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4OTksIDB4OWEsIDB4NzUsIDB4MWYsIDB4MTMsIDB4ZWIsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NzMsIDB4OWIsIDB4NjYsIDB4MWIsIDB4MzgsIDB4NWUsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4N2MsIDB4MWYsIDB4MmYsIDB4ZmQsIDB4MTAsIDB4MjIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhlMywgMHhjYywgMHhlMywgMHhmNywgMHg2OSwgMHhlMywgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlLCAweDQ0LCAweGEsIDB4ZjcsIDB4ZGEsIDB4ZjksIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MywgMHhmNywgMHhlLCAweDZiLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4ZmIsIDB4ZSwgMHgxNSwgMHhmNywgMHg1LCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NSwgMHg2LCAweGZiLCAweDJjLCAweGZkLCAweDhhLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4OGIsIDB4ZTgsIDB4Y2YsIDB4ZTksIDB4ZjcsIDB4N2UsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YzksIDB4ZDcsIDB4YzksIDB4MSwgMHhmNywgMHg0ZCwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhjYiwgMHgzLCAweGY3LCAweDRkLCAweGY5LCAweDUxLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGJhLCAweDVlLCAweGM1LCAweGM0LCAweGJhLCAweGI4LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDVjLCAweGI4LCAweDUyLCAweDUxLCAweDVjLCAweDVlLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGNkLCAweDE2LCAweGEwLCAweDljLCAweDljLCAweGExLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDdhLCAweDc2LCAweDc2LCAweDc5LCAweDdhLCAweDc1LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDljLCAweGEwLCAweDFlLCAweGZiLCAweDk4LCAweGZkLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGEsIDB4OGIsIDB4ZTUsIDB4MzEsIDB4ZjcsIDB4NDAsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4NDgsIDB4ZjcsIDB4NTAsIDB4OWQsIDB4ZjcsIDB4NDEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4MTIsIDB4ZjcsIDB4YmUsIDB4ZWQsIDB4YjUsIDB4ZGEsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4MTMsIDB4YWIsIDB4ODAsIDB4N2MsIDB4MTYsIDB4ZjcsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4M2UsIDB4NiwgMHhhOSwgMHhkMCwgMHg1LCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzMsIDB4ZjcsIDB4ZDIsIDB4NiwgMHgxMywgMHg1YiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHgzYSwgMHg3LCAweDEzLCAweDk3LCAweDgwLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFmLCAweGY3LCAweDIyLCAweGI1LCAweDVhLCAweGRhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDNjLCAweDVhLCAweDYxLCAweGY3LCAweDJhLCAweGY3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4MTMsIDB4YWIsIDB4ODAsIDB4MzgsIDB4ZGMsIDB4ZjcsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4N2IsIDB4NywgMHgxMywgMHhhNywgMHg4MCwgMHgzMSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGZiLCAweDQwLCAweGZjLCAweDEyLCAweDUsIDB4NDgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4MywgMHhmNywgMHgzNCwgMHgxNSwgMHhkNSwgMHhmNywgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDM5LCAweDcsIDB4ZSwgMHhmYiwgMHg0ZCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NCwgMHhlNywgMHhmOCwgMHgyZSwgMHhlNywgMHgxLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweGY3LCAweDE2LCAweGY3LCAweDIyLCAweGNiLCAweGVjLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OWIsIDB4ODIsIDB4MTUsIDB4ODIsIDB4MmUsIDB4NSwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg5ZiwgMHg4ZSwgMHg5NywgMHgxYiwgMHg5NCwgMHg5OSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg3YywgMHg4MCwgMHg4NCwgMHg3ZCwgMHg3ZCwgMHg3OSwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg3ZCwgMHgxZiwgMHg2ZiwgMHg1MiwgMHg1LCAweDcxLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDg5LCAweGExLCAweDFiLCAweGMyLCAweGI5LCAweGFjLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDhiLCAweGMzLCAweDRmLCAweDk5LCAweDFmLCAweDhjLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDhmLCAweGNmLCAweGIyLCAweGQzLCAweGI5LCAweDE5LCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweDUsIDB4NzIsIDB4NjAsIDB4NGEsIDB4NjMsIDB4MzYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjEsIDB4NTksIDB4ZjcsIDB4MTUsIDB4ZDcsIDB4ZjcsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NiwgMHhiZCwgMHhkNywgMHhjMSwgMHhiZCwgMHg3OCwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHgxZiwgMHgyMSwgMHhlYywgMHhmNywgMHg4NywgMHgyYSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGE0LCAweDZhLCAweDU1LCAweDlkLCAweDRlLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDI3LCAweDJhLCAweGZiLCAweDVlLCAweGZiLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGZiLCAweDEzLCAweGY3LCAweDFkLCAweDc1LCAweDFmLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4YSwgMHhjMSwgMHhlZCwgMHgzLCAweGIxLCAweDE2LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjYsIDB4ZjgsIDB4ZTIsIDB4MTUsIDB4ZjcsIDB4ZDIsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NzcsIDB4YSwgMHg0OCwgMHhhLCAweGJmLCAweGVlLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4MTYsIDB4ZjgsIDB4YTUsIDB4NiwgMHg4YSwgMHhmNywgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDI4LCAweGZiLCAweDQsIDB4ZmIsIDB4OTEsIDB4MzgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MSwgMHhmYiwgMHg2LCAweGVlLCAweGY3LCAweDYwLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDMxLCAweGQ3LCAweGZjLCAweDgsIDB4M2MsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmOCwgMHg5NywgMHgxNSwgMHhmNywgMHhkOCwgMHhkNSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHhmYiwgMHhjMywgMHg2YSwgMHhhLCAweGUsIDB4OGIsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4ZTQsIDB4ZjcsIDB4MWQsIDB4ZTQsIDB4ZjcsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHg5LCAweGVjLCAweGYxLCAweGVlLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweDMsIDB4ZjcsIDB4MmIsIDB4ZjgsIDB4ZWYsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4ZjEsIDB4ZjcsIDB4MmQsIDB4MjUsIDB4YzgsIDB4YWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4ZjcsIDB4MjEsIDB4NSwgMHgyNywgMHg2LCAweGZiLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIwLCAweDUsIDB4NTksIDB4ZmQsIDB4MTQsIDB4MTUsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDhiLCAweGUzLCAweGY3LCAweDI0LCAweGUyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGUzLCAweGRmLCAweGY3LCAweGUsIDB4MTIsIDB4ZjcsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHg0ZiwgMHhmNywgMHg2LCAweGJiLCAweGVlLCAweDQwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4OWMsIDB4ZWQsIDB4MTMsIDB4ZjUsIDB4ODAsIDB4ZjcsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MTAsIDB4MTUsIDB4ZjcsIDB4NCwgMHhmNywgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NTYsIDB4YSwgMHhmYiwgMHg4LCAweGZkLCAweDhhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGE1LCAweGY3LCAweDVlLCAweDI5LCAweGZiLCAweDQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmYSwgMHg4MCwgMHgyZCwgMHhhLCAweGUsIDB4OGIsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OCwgMHg1ZiwgMHhhLCAweGY3LCAweDkwLCAweGVmLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4MTYsIDB4MzEsIDB4YSwgMHhjZCwgMHhmOCwgMHhlMiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkNCwgMHg0MCwgMHhhNSwgMHg3NywgMHhhLCAweDhiLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDgsIDB4NWYsIDB4YSwgMHhmNywgMHg5MCwgMHhlZiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUwLCAweGY4LCAweGYxLCAweDE1LCAweGY3LCAweGQ5LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGY0LCAweGZiLCAweGMyLCAweDZhLCAweGEsIDB4MzAsIDB4ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4MTUsIDB4MzEsIDB4YSwgMHhlLCAweDhiLCAweGU0LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZTQsIDB4ZjcsIDB4N2EsIDB4NjcsIDB4YSwgMHhlZiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI5LCAweGY4LCAweGVmLCAweDE1LCAweGY3LCAweDJlLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJkLCAweDI1LCAweGM4LCAweGFmLCAweGZiLCAweDM4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDUsIDB4MjgsIDB4NiwgMHhmYiwgMHgzYywgMHhmYiwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDgyLCAweGZkLCAweDE0LCAweDE1LCAweDMxLCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhlMywgMHhmOCwgMHgyLCAweGUzLCAweGRmLCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4MmQsIDB4ZjcsIDB4NiwgMHg3YywgMHhlZiwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1LCAweDEzLCAweGY0LCAweGY3LCAweGU3LCAweGY5LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDUsIDB4ZjcsIDB4ZSwgMHhmYiwgMHg1LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4M2YsIDB4ZmQsIDB4OGEsIDB4MTUsIDB4ZjgsIDB4NTIsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhlOCwgMHgzMCwgMHhhLCAweGUsIDB4OGIsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzAsIDB4Y2UsIDB4ZjcsIDB4MzEsIDB4ZTYsIDB4MSwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHhmNywgMHhiNSwgMHhlYiwgMHgzLCAweDlkLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDYsIDB4ZjcsIDB4MmYsIDB4ZjcsIDB4MjAsIDB4Y2UsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4ZjcsIDB4MzksIDB4MzksIDB4ZjQsIDB4ZmIsIDB4NGUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YmMsIDB4MzAsIDB4ZGUsIDB4ZmIsIDB4MzEsIDB4NDMsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4ZmIsIDB4MzAsIDB4MzgsIDB4NiwgMHhmNywgMHg0NywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMCwgMHhmNywgMHgxMiwgMHhjZSwgMHhmYiwgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhmNywgMHhiLCAweDcsIDB4ZjcsIDB4ZiwgMHhiYSwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmYiwgMHgxMiwgMHg0NiwgMHg0NCwgMHhmYiwgMHgxYSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdmLCAweGU3LCAweGY4LCAweDEzLCAweGU3LCAweGMxLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGQ5LCAweGU4LCAweGY3LCAweDk3LCAweGU4LCAweDE3LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDE1LCAweGY3LCAweDk5LCAweGU3LCAweDMyLCAweGY3LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4OWIsIDB4ZmMsIDB4MzIsIDB4NSwgMHhlNCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhkOSwgMHhlNywgMHhmYiwgMHg5ZSwgMHgyZiwgMHhlYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHg2LCAweGZiLCAweDhiLCAweGY4LCAweDI3LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4MmYsIDB4ZGEsIDB4ZmMsIDB4MWQsIDB4M2MsIDB4NiwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhjNywgMHgxNSwgMHhlMCwgMHg3MSwgMHg1LCAweGFmLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGE2LCAweGE3LCAweDFiLCAweGIyLCAweDlmLCAweDc5LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDFmLCAweDEzLCAweDYwLCAweDdkLCAweDllLCAweDlmLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDFiLCAweGQ3LCAweGJiLCAweGM3LCAweGNiLCAweDlhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGE1LCAweDUsIDB4NzUsIDB4ODQsIDB4N2MsIDB4NWYsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NmYsIDB4N2IsIDB4OTksIDB4OTksIDB4NzksIDB4MWYsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NzMsIDB4OWMsIDB4NWMsIDB4MWIsIDB4M2EsIDB4NWYsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4N2MsIDB4MWYsIDB4ZSwgMHg2MSwgMHhhLCAweGY3LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGEsIDB4YTEsIDB4ZjcsIDB4YTIsIDB4MmYsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHgyZSwgMHhmNywgMHgxZiwgMHgyNiwgMHhhLCAweGEzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDE1LCAweGY3LCAweGQwLCAweDQwLCAweGE1LCAweGM1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGY3LCAweGUsIDB4NSwgMHhlLCAweDYxLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NTQsIDB4YSwgMHhhMSwgMHhmNywgMHhhMiwgMHgyNSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGY3LCAweGRmLCAweDE1LCAweGY3LCAweGQ0LCAweGQ1LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweGZiLCAweGJlLCAweGZiLCAweGQsIDB4NSwgMHhlLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NmUsIDB4NTQsIDB4YSwgMHhmNywgMHgyYiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHgxNSwgMHhmNywgMHgyYywgMHhmMiwgMHhmNywgMHgyYywgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhhZiwgMHhmYiwgMHgzNSwgMHhmNywgMHgyMiwgMHg1LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4M2EsIDB4ZmIsIDB4MjEsIDB4NSwgMHg0OCwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDI1LCAweGEsIDB4ZSwgMHg2MSwgMHhhLCAweGJiLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGRmLCAweDkwLCAweDc3LCAweDEyLCAweGExLCAweGVkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmLCAweGVhLCAweDEzLCAweGQ2LCAweGU3LCAweGY5LCAweGUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4NzEsIDB4NSwgMHhhZSwgMHg5OSwgMHg5OSwgMHhhNiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhhYywgMHg5ZSwgMHg3ZCwgMHg3ZCwgMHhhMCwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg3ZCwgMHhhMCwgMHhhMiwgMHg3OSwgMHhiNiwgMHgxYiwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhjNiwgMHhjYiwgMHg5YSwgMHgxZiwgMHgzNiwgMHhhNSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDgzLCAweDdjLCAweDYwLCAweDY2LCAweDFiLCAweDZhLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDliLCAweDc0LCAweDFmLCAweDEzLCAweGQ2LCAweDk4LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDk4LCAweDVmLCAweDFiLCAweDM5LCAweDVlLCAweDQ5LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDFmLCAweDQ1LCAweGZjLCAweDAsIDB4MjUsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGU0LCAweGY4LCAweDE1LCAweGU2LCAweGQ4LCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YTEsIDB4ZWQsIDB4YWUsIDB4ZjcsIDB4NSwgMHhkMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGFiLCAweGVhLCAweDMsIDB4ZjcsIDB4ZTYsIDB4ZjksIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhhLCAweGZiLCAweDRiLCAweGZiLCAweDEwLCAweDUzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTksIDB4ZmMsIDB4N2MsIDB4MjUsIDB4YSwgMHhlLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY4LCAweDRiLCAweDc3LCAweDEsIDB4ZGMsIDB4ZWYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4NGUsIDB4ZjcsIDB4MzIsIDB4ZjcsIDB4MzMsIDB4ZjcsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzMsIDB4YzgsIDB4YzgsIDB4ZmIsIDB4MzEsIDB4ZjcsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzAsIDB4ZjcsIDB4MzAsIDB4NGYsIDB4YzgsIDB4ZmIsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzAsIDB4ZmIsIDB4MzIsIDB4ZjcsIDB4MzMsIDB4NGUsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzMsIDB4ZmIsIDB4MzMsIDB4NSwgMHhlLCAweDdjLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDc2LCAweGY4LCAweDkzLCAweGU4LCAweDhkLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGVlLCAweGY4LCAweDIsIDB4ZTYsIDB4MTMsIDB4NmMsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MTUsIDB4Y2MsIDB4NWQsIDB4YmEsIDB4YmYsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg2ZCwgMHhiYiwgMHhjMSwgMHg3YywgMHhjMiwgMHgxYiwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHhkMSwgMHhmNywgMHg3NiwgMHhjZSwgMHg3OCwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhjNCwgMHgxZiwgMHhiYywgMHhjNiwgMHg0YiwgMHhiYiwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1LCAweDEzLCAweGFjLCAweGE5LCAweDYxLCAweDU2LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDFiLCAweGZiLCAweDQ0LCAweDhhLCAweDIyLCAweGZiLCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMwLCAweDFhLCAweDM4LCAweGEzLCAweDRiLCAweGIyLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGNkLCAweGRhLCAweDE1LCAweDc3LCAweGE5LCAweDgxLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDFhLCAweGU5LCAweGM3LCAweGY3LCAweDYsIDB4ZjcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhhYiwgMHg4MCwgMHg3YSwgMHhhNCwgMHgxZSwgMHhmYiwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmYSwgMHgxNSwgMHhmNywgMHg4YSwgMHhmNywgMHhiZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDZhLCAweDk3LCAweDU0LCAweDZjLCAweDFhLCAweDM4LCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGUsIDB4ZmIsIDB4MTksIDB4NjUsIDB4NmEsIDB4OTUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4MWUsIDB4ZSwgMHg0ZiwgMHhhLCAweGY3LCAweDIwLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweDE1LCAweGY3LCAweGNhLCAweDQxLCAweGE1LCAweGM1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweGY3LCAweGQsIDB4NSwgMHhmYiwgMHg0NywgMHhmYiwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgyNywgMHhhLCAweDRmLCAweGEsIDB4ZjcsIDB4NGQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4MTUsIDB4ZjcsIDB4Y2QsIDB4ZDQsIDB4NjIsIDB4ZjUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NmEsIDB4YSwgMHhmYiwgMHgzNCwgMHhmYiwgMHg2MCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhhLCAweDc5LCAweGU2LCAweGY4LCAweDE2LCAweGU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDUyLCAweGEsIDB4ZjcsIDB4MjYsIDB4ZjgsIDB4ZWYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmEsIDB4ZjEsIDB4ZjcsIDB4MjgsIDB4MjUsIDB4YzUsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzIsIDB4ZjcsIDB4MjIsIDB4NSwgMHgyYywgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGZiLCAweDIxLCAweDUsIDB4MzksIDB4ZmIsIDB4NDcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4YSwgMHg3OSwgMHhlNCwgMHhmOCwgMHgxMSwgMHhlMywgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlLCAweDEyLCAweGRmLCAweGVhLCAweDZkLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4ZjcsIDB4MiwgMHg3YywgMHhlYSwgMHgxMywgMHhlYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHhmOSwgMHgxMCwgMHgxNSwgMHhmNywgMHgyLCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MiwgMHg2LCAweGZiLCAweDQ4LCAweGZiLCAweGUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MywgMHhmNywgMHhlLCAweDZiLCAweGEsIDB4ZmIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YmUsIDB4MTUsIDB4MTMsIDB4ZjIsIDB4MjcsIDB4YSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhmOCwgMHg5LCAweGU1LCAweGY3LCAweDdiLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGUsIDB4ZWMsIDB4MywgMHhmNywgMHgxMiwgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHhlNSwgMHhmYiwgMHhlLCAweGY3LCAweDYsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhmNywgMHg5NywgMHg1LCAweGRjLCAweGU1LCAweGZiLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGMyLCAweDYsIDB4MjEsIDB4ZmIsIDB4NDEsIDB4MjQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4NSwgMHhjMCwgMHhlNSwgMHhmYiwgMHg4MiwgMHgzMSwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDM0LCAweGZiLCAweDk3LCAweDUsIDB4ZmIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMCwgMHg3LCAweGM5LCAweGY4LCAweDk4LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGQ0LCAweDYyLCAweGY0LCAweGZiLCAweGJiLCAweGZiLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweDhiLCAweGU2LCAweGJlLCAweGRiLCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4YmYsIDB4ZTYsIDB4MSwgMHhmNywgMHgyYSwgMHhkZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhkZiwgMHgzLCAweGI4LCAweDE2LCAweGY3LCAweGM1LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDksIDB4YmUsIDB4ZjcsIDB4ZiwgMHg2LCAweGVlLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGY3LCAweDEzLCAweGY3LCAweDI5LCAweGZiLCAweDFkLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDFmLCAweDM2LCAweGJmLCAweGY3LCAweGIsIDB4ZTYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4MzAsIDB4ZjIsIDB4ZmMsIDB4MTAsIDB4MjIsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhmNywgMHgxNywgMHgxNSwgMHhmNywgMHg5LCAweGY3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YjEsIDB4ZDAsIDB4OGMsIDB4NTAsIDB4NDgsIDB4NDcsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MWYsIDB4ZSwgMHg3YywgMHhlOSwgMHgzOSwgMHhlOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhlOSwgMHhlYSwgMHhlOSwgMHgxMiwgMHg5OCwgMHhmNywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhlYiwgMHhmNywgMHg3OCwgMHhlYiwgMHg3MiwgMHhlYywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg5OCwgMHg4OCwgMHgxNSwgMHhmNywgMHg0NiwgMHhmOCwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGRjLCAweGFiLCAweDhmLCAweGNmLCAweGQ3LCAweGJmLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDZlLCAweDU1LCAweDdkLCAweDYyLCAweDc1LCAweDFlLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDYzLCAweDZlLCAweDVhLCAweDFhLCAweDM4LCAweGQ0LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDZmLCAweDFlLCAweDEzLCAweGI5LCAweGFiLCAweDgwLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDYyLCAweDFhLCAweDY5LCAweDVhLCAweDczLCAweDRlLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDk3LCAweGE1LCAweDczLCAweDFlLCAweDZlLCAweDM0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4YzgsIDB4YjMsIDB4ODIsIDB4YzEsIDB4MWIsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4ZDQsIDB4ZTAsIDB4ZTUsIDB4M2QsIDB4YTIsIDB4NDIsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NWIsIDB4OWIsIDB4NWYsIDB4OWIsIDB4YTQsIDB4MWEsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4OWIsIDB4YjAsIDB4OWMsIDB4MWUsIDB4MTMsIDB4YjYsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4YjIsIDB4OWYsIDB4Y2IsIDB4MWEsIDB4ZDUsIDB4NTEsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDAsIDB4ZmIsIDB4M2EsIDB4NzMsIDB4NGEsIDB4ZmIsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4YmEsIDB4MzksIDB4MmQsIDB4NiwgMHgxMywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHhmYiwgMHg5MCwgMHg2LCAweDEzLCAweDdhLCAweDM5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgzOSwgMHhhLCAweGY3LCAweDc4LCAweDc3LCAweDNiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTMsIDB4ZjgsIDB4YzEsIDB4MTUsIDB4ZjcsIDB4ZDUsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YzUsIDB4ZmIsIDB4YzIsIDB4ZjcsIDB4ZSwgMHg1LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGY4LCAweDUxLCAweGEsIDB4YWEsIDB4NzAsIDB4NWIsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4YSwgMHgzOSwgMHhhLCAweGY3LCAweDc4LCAweDc3LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NDIsIDB4ZjgsIDB4NzUsIDB4MTUsIDB4ZjcsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4NjEsIDB4ZjMsIDB4ZmIsIDB4YzIsIDB4ZmIsIDB4ZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGZiLCAweDdlLCAweDUxLCAweGEsIDB4YWIsIDB4NzAsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4MjEsIDB4YSwgMHgzOSwgMHhhLCAweGY3LCAweDc0LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGEsIDB4ZjcsIDB4MWEsIDB4ZjgsIDB4NzIsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZjMsIDB4ZjcsIDB4MmQsIDB4MjMsIDB4YzcsIDB4YWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4ZjcsIDB4MjQsIDB4NSwgMHgyNywgMHg2LCAweGZiLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIzLCAweDUsIDB4YTQsIDB4ZmIsIDB4NjUsIDB4MTUsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4ZjQsIDB4YTQsIDB4ZDcsIDB4MWIsIDB4YmYsIDB4YTksIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4MjEsIDB4YSwgMHgzOSwgMHhhLCAweGY3LCAweDcsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4NzcsIDB4MzQsIDB4YSwgMHgxMywgMHhiYiwgMHgwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGY4LCAweDdhLCAweDE1LCAweGEzLCAweDk4LCAweDk0LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDFiLCAweGEwLCAweGE4LCAweDdhLCAweDdiLCAweGE5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGE1LCAweGE2LCAweDdmLCAweGE0LCAweDFiLCAweGYyLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGFkLCAweDk2LCAweDFmLCAweDEzLCAweGI3LCAweDAsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NSwgMHg2MSwgMHg3OCwgMHg4MCwgMHg3NiwgMHg2ZSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg3NCwgMHg5NiwgMHg5OCwgMHg3NCwgMHgxZiwgMHgxMywgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDljLCAweDZkLCAweDZiLCAweDllLCAweDZjLCAweDFiLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDNkLCAweDVmLCAweDc5LCAweDFmLCAweGE0LCAweGZiLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDliLCAweGE5LCAweGY0LCAweGE0LCAweGQ3LCAweDFiLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4N2EsIDB4ODAsIDB4NGQsIDB4YSwgMHgxMywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDJiLCAweGEsIDB4MTMsIDB4YmIsIDB4MCwgMHgyOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGEsIDB4Y2YsIDB4ZjcsIDB4MTAsIDB4MTIsIDB4YWIsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZjcsIDB4NSwgMHhkNCwgMHhmNywgMHg0LCAweDYwLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweGY3LCAweDQ2LCAweDEzLCAweGJmLCAweDAsIDB4ZjcsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODksIDB4MTUsIDB4ZjcsIDB4NCwgMHhmNywgMHgxMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDYsIDB4ZmIsIDB4NGUsIDB4ZmIsIDB4MTAsIDB4NTMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhmYiwgMHhkNCwgMHgzZiwgMHhhLCAweDEzLCAweGJlLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGEsIDB4MTMsIDB4N2UsIDB4NDAsIDB4NGQsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg4MCwgMHgyYiwgMHhhLCAweDEzLCAweGJlLCAweDgwLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzksIDB4YSwgMHhiYSwgMHhmNywgMHg1YSwgMHgzYiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ2LCAweGY4LCAweGUwLCAweDE1LCAweDU1LCAweGJjLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweGM4LCAweGJjLCAweGI0LCAweGMxLCAweGMxLCAweDVhLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDRlLCAweDVhLCAweDY3LCAweDU1LCAweDFlLCAweGNjLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGEwLCAweDk1LCAweGEzLCAweGE0LCAweDllLCAweDgxLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDc4LCAweDdlLCAweDcyLCAweDczLCAweDc2LCAweDk4LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDI3LCAweGZiLCAweGFmLCAweDUxLCAweGEsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NWIsIDB4OGUsIDB4MjEsIDB4YSwgMHg3YywgMHhlZCwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHg1MywgMHhlOCwgMHg0MCwgMHhlNiwgMHhkNSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg4OSwgMHhlYywgMHhmNywgMHgyOSwgMHhlZSwgMHgxMywgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiOSwgMHhjNSwgMHgxNSwgMHg1MiwgMHhhNiwgMHhjNiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHgxYiwgMHhjMCwgMHhjNiwgMHg5OSwgMHhhMCwgMHhiYSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhlNywgMHg1LCAweDczLCAweDRkLCAweDYyLCAweDg2LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDM3LCAweDdkLCAweGQxLCAweGEwLCAweDFmLCAweDhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDcsIDB4OGQsIDB4OWYsIDB4OGMsIDB4OWUsIDB4OWUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTEsIDB4NWQsIDB4ZTksIDB4ZmIsIDB4YSwgMHg1ZiwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2OCwgMHg2ZSwgMHgxZSwgMHg3ZiwgMHhiMCwgMHg1YiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg4YywgMHg0OCwgMHg4YywgMHgzZSwgMHg3OCwgMHg2ZSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHgzOSwgMHgxOCwgMHg5YiwgMHhiNSwgMHhjMCwgMHg5OSwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiYiwgMHg5NywgMHg3YSwgMHg0ZCwgMHg4OSwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg4ZCwgMHg3MywgMHg3OCwgMHg4ZSwgMHg2NiwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDVjLCAweDMxLCAweDQ0LCAweDNkLCAweGM0LCAweDRlLCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGJiLCAweGI5LCAweGE1LCAweGFiLCAweDFmLCAweDEzLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGY3LCAweDY4LCAweDE1LCAweGM4LCAweDhmLCAweGIzLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDFiLCAweGM0LCAweDk2LCAweDQ3LCAweDc1LCAweDhkLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDkzLCAweGZiLCAweDFkLCAweDE1LCAweDZlLCAweDZmLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDYyLCAweDFiLCAweDc5LCAweDZmLCAweDk4LCAweGFkLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDllLCAweGIwLCAweGEzLCAweGFhLCAweGMzLCAweDllLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDg0LCAweGE2LCAweDFlLCAweGUsIDB4ZmIsIDB4NGQsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWIsIDB4ZTcsIDB4ZjcsIDB4YTIsIDB4ZTksIDB4MTIsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4ZjcsIDB4MTMsIDB4ZjcsIDB4MjEsIDB4OTUsIDB4ZWIsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODAsIDB4ZmIsIDB4NDUsIDB4MTUsIDB4N2EsIDB4YTAsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4YWEsIDB4MWIsIDB4Y2MsIDB4YWIsIDB4YmUsIDB4YmQsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4YjcsIDB4NWEsIDB4OTcsIDB4MWYsIDB4OWQsIDB4NywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhkMCwgMHhhZCwgMHhjMiwgMHhiNywgMHg1NSwgMHhkNCwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg1MSwgMHg1NSwgMHg2YSwgMHgzYywgMHgxYiwgMHgzOSwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhlOSwgMHhkYiwgMHhjYSwgMHhiZSwgMHhmMywgMHhiMiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg3YywgMHhhYiwgMHgxZiwgMHgzMCwgMHhlYiwgMHhmNywgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg4MiwgMHg3LCAweDk1LCAweDY4LCAweDY1LCAweDhhLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDQ5LCAweDM4LCAweGZiLCAweDQsIDB4ZmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMSwgMHhmNywgMHgzLCAweDM5LCAweGY3LCAweDksIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODQsIDB4MmUsIDB4NSwgMHg4YywgMHg5NSwgMHhhMCwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHgxYiwgMHg5NywgMHg5NCwgMHg4NSwgMHg3YywgMHg3ZCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg3ZCwgMHg3YSwgMHg3NywgMHg4ZiwgMHg5NCwgMHg4MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDU1LCAweGEsIDB4ZjcsIDB4NzcsIDB4NzcsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmOCwgMHhjMywgMHgxNSwgMHhmNywgMHhkMiwgMHgzZiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhmYiwgMHhiZCwgMHhmNywgMHhiLCAweDUsIDB4NWUsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4MjQsIDB4YSwgMHg1NSwgMHhhLCAweGY3LCAweDc3LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NGQsIDB4ZjgsIDB4NzYsIDB4MTUsIDB4ZjcsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4NjAsIDB4ZjIsIDB4ZmIsIDB4YmYsIDB4NmEsIDB4YSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg3LCAweDI0LCAweGEsIDB4NTUsIDB4YSwgMHhmNywgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGY3LCAweDIzLCAweGY4LCAweDczLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweGYyLCAweGY3LCAweDJjLCAweDI0LCAweGM3LCAweGFkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGY3LCAweDI0LCAweDUsIDB4MjgsIDB4NiwgMHhmYiwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHg1LCAweGMyLCAweGZiLCAweGVjLCAweDI0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4YSwgMHhjYywgMHhmNywgMHgxMiwgMHgxLCAweGY3LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZDIsIDB4ZjcsIDB4NCwgMHgzLCAweGY3LCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDg3LCAweDcyLCAweGEsIDB4ZmIsIDB4NGIsIDB4ZmIsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YSwgMHg4MywgMHhmYywgMHg1YiwgMHgyNCwgMHhhLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4MTcsIDB4ZjgsIDB4YzIsIDB4MTUsIDB4ZjcsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4YTMsIDB4YzUsIDB4ZmIsIDB4YzEsIDB4ZjcsIDB4YywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGZkLCAweDI5LCAweDMzLCAweGEsIDB4NTcsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhmOCwgMHg3NywgMHgxNSwgMHhmNywgMHhkMiwgMHhkNiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhmYiwgMHhjMCwgMHg2YSwgMHhhLCAweDNjLCAweGZjLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweGEsIDB4OGIsIDB4ZTUsIDB4ZjcsIDB4ODQsIDB4ZTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NzcsIDB4MSwgMHhmNywgMHg4ZCwgMHhmMSwgMHgzLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDk4LCAweDE1LCAweGNiLCAweDY3LCAweGY3LCAweDMxLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweDI1LCAweGM5LCAweGFlLCAweGZiLCAweDNiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDUsIDB4MjQsIDB4NiwgMHhmYiwgMHgzMCwgMHhmZCwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhhLCAweDhiLCAweGU2LCAweGY3LCAweDg2LCAweGU2LCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweDEyLCAweGY3LCAweDIwLCAweGY3LCAweDQsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4NzIsIDB4ZjcsIDB4NSwgMHgxMywgMHhmNCwgMHhmNywgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg4OCwgMHgxNSwgMHhmNywgMHg1LCAweGY3LCAweDExLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NiwgMHhmYiwgMHg0YiwgMHhmYiwgMHgxMSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGY3LCAweDExLCAweGZiLCAweDQsIDB4NiwgMHg0YywgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDE1LCAweGY4LCAweDUyLCAweGU2LCAweDYsIDB4MTMsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDMsIDB4ZjcsIDB4ZTEsIDB4ZmIsIDB4N2UsIDB4MzAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZmIsIDB4ODYsIDB4ZmIsIDB4NDIsIDB4NiwgMHhlLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGY3LCAweDk2LCAweGU0LCAweGY3LCAweDZlLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4ZTgsIDB4ZjcsIDB4YzEsIDB4ZTYsIDB4MywgMHhmNywgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0OCwgMHgxNSwgMHhmNywgMHg1LCAweGMyLCAweGQxLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDQ3LCAweDhjLCAweDg3LCAweDE5LCAweDlkLCAweDZkLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDRjLCAweDFiLCAweGZiLCAweDM5LCAweDM5LCAweGZiLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MywgMHhmYiwgMHgwLCAweGRkLCAweGZiLCAweDAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4ZjcsIDB4M2EsIDB4ZDUsIDB4ZjcsIDB4MywgMHhmNywgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NCwgMHhmYiwgMHhhLCAweGY2LCAweDU5LCAweGFhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGI1LCAweDZjLCAweGMxLCAweGZiLCAweDE1LCAweDRlLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDNjLCAweGIwLCAweDYzLCAweDkyLCAweDE5LCAweDcwLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDgzLCAweGFkLCAweDdiLCAweGFiLCAweDdkLCAweDE5LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDUsIDB4ODYsIDB4ZmIsIDB4YzIsIDB4MTUsIDB4ZTcsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4ZDEsIDB4ZjUsIDB4YjgsIDB4NDksIDB4NGMsIDB4MzAsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NDUsIDB4NDAsIDB4M2QsIDB4YjAsIDB4ZTUsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhlNywgMHhmNywgMHg5NywgMHhlNSwgMHgzMSwgMHhlNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg3NywgMHgxMiwgMHg5OCwgMHhmNywgMHg0NiwgMHgyYiwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MiwgMHhlYiwgMHgxMywgMHhkYSwgMHhlOCwgMHhmOCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlMSwgMHg3MSwgMHg5NiwgMHg5ZiwgMHg5MywgMHhhZCwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHgxOSwgMHhhMSwgMHg4ZCwgMHhhNCwgMHg4MiwgMHhiMSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDdlLCAweGE0LCAweGE4LCAweDdlLCAweGFjLCAweDFiLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGUzLCAweGFkLCAweDk3LCAweDFmLCAweDM1LCAweGEzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NzksIDB4ODEsIDB4NzYsIDB4NmUsIDB4MWIsIDB4NzksIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4OTYsIDB4NzcsIDB4MWYsIDB4OWMsIDB4NmIsIDB4NmEsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MWIsIDB4MmEsIDB4NmQsIDB4M2QsIDB4NjAsIDB4NzksIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZmMsIDB4OTUsIDB4MTUsIDB4ZjcsIDB4OTUsIDB4ZTcsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTYsIDB4NiwgMHhiNiwgMHhiZCwgMHhjZSwgMHhhMSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhkMCwgMHg5MSwgMHg2YywgMHg2NCwgMHgxZiwgMHhmYiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHgyZiwgMHhmNywgMHg5MCwgMHhlNywgMHgzZCwgMHhmNywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGU2LCAweDQzLCAweGJiLCAweDMxLCAweDUzLCAweDUxLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDYxLCAweDFlLCAweDEzLCAweGJhLCAweGMzLCAweGZiLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDcsIDB4MTMsIDB4YjYsIDB4ZGQsIDB4ZmIsIDB4OTcsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweDdiLCAweGU3LCAweGY3LCAweGEwLCAweGU3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDc3LCAweDRiLCAweGEsIDB4ZjcsIDB4MjQsIDB4ZjgsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4ZGEsIDB4NDAsIDB4YTIsIDB4YzUsIDB4ZmIsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZCwgMHg1LCAweGZiLCAweDMwLCAweGZjLCAweDVhLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NjIsIDB4YSwgMHhmNywgMHg3NSwgMHg3NywgMHg0YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUzLCAweGY4LCAweDc2LCAweDE1LCAweGY3LCAweGRhLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGYzLCAweGZiLCAweGM3LCAweGZiLCAweGQsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHhlMSwgMHgyMywgMHhhLCAweDYyLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NzcsIDB4NGIsIDB4YSwgMHhmNywgMHgyYSwgMHhmOCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgzMCwgMHhmMywgMHhmNywgMHgyZiwgMHgyMywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhmYiwgMHgzOCwgMHhmNywgMHgyNSwgMHg1LCAweDI0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2IsIDB4ZmIsIDB4MjMsIDB4NSwgMHg1MiwgMHhmYiwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhhLCAweDYyLCAweGEsIDB4ZjcsIDB4NSwgMHhlMCwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhhOSwgMHhlZiwgMHhmNywgMHhlOSwgMHhlZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHhlMywgMHhmOCwgMHg5NCwgMHgxNSwgMHhlNCwgMHg3MSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDk2LCAweDk4LCAweGIwLCAweGFlLCAweDFiLCAweDlmLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDdkLCAweGEzLCAweDFmLCAweDdiLCAweGE3LCAweGE5LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDFiLCAweGY1LCAweGFjLCAweGU0LCAweGFkLCAweDk1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRjLCAweDMzLCAweGEzLCAweDUsIDB4NjIsIDB4NzksIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NmQsIDB4MWIsIDB4NzQsIDB4NzEsIDB4OTksIDB4OWEsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4ZWMsIDB4OWEsIDB4NmYsIDB4NmUsIDB4OWIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MjYsIDB4NmIsIDB4M2QsIDB4NWYsIDB4N2EsIDB4MWYsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YzUsIDB4MjMsIDB4YSwgMHg2MiwgMHhhLCAweGNhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEsIDB4YTksIDB4ZWYsIDB4YTAsIDB4ZjcsIDB4NiwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2LCAweDlkLCAweGVlLCAweDMsIDB4ZjcsIDB4ZTcsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4NzAsIDB4YSwgMHhmYiwgMHg1MCwgMHhmYiwgMHgxMiwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweGQsIDB4ZmMsIDB4MzYsIDB4MjMsIDB4YSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZCwgMHhiZCwgMHhmNywgMHgyLCAweGJkLCAweGY3LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NzksIDB4ZjcsIDB4MjgsIDB4MTQsIDB4ZTAsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgzMiwgMHhmNywgMHhhLCAweDE1LCAweDQ5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZWYsIDB4NCwgMHg0OSwgMHhhLCAweGUsIDB4N2EsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4NzYsIDB4ZjgsIDB4MWMsIDB4ZWEsIDB4MTIsIDB4YTksIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZWQsIDB4ZWMsIDB4MTMsIDB4NzgsIDB4YjIsIDB4YTksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4YzEsIDB4NTYsIDB4OGEsIDB4OGQsIDB4MWYsIDB4OGIsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YWEsIDB4YTcsIDB4MWUsIDB4MTMsIDB4YjgsIDB4NzIsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4N2MsIDB4YzMsIDB4MWIsIDB4ZjcsIDB4MjksIDB4ZjcsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHhmNywgMHgxOCwgMHhjMCwgMHg3NywgMHhiZCwgMHg2OSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhNywgMHhhNiwgMHg5YiwgMHg5YywgMHg4YiwgMHg4YiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHg4YSwgMHgxYSwgMHg4YiwgMHg3NywgMHg3ZiwgMHg2YywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhNiwgMHg2MCwgMHg1NiwgMHg5YywgMHg1MiwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhmYiwgMHhkLCAweGZiLCAweDEsIDB4ZmIsIDB4MTgsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NTksIDB4YWYsIDB4NjIsIDB4MWYsIDB4NmQsIDB4NmYsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4OGIsIDB4MWEsIDB4ZjcsIDB4YSwgMHhmNywgMHgzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGEyLCAweDgxLCAweGE2LCAweGE5LCAweDFhLCAweGRiLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGVhLCAweGE3LCAweGE3LCAweDgzLCAweDgxLCAweGEzLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDRhLCAweDM2LCAweDNiLCAweDQ3LCAweDRiLCAweDgsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4MTUsIDB4ZDAsIDB4Y2IsIDB4ZTEsIDB4ZGIsIDB4Y2UsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg5ZCwgMHg3NSwgMHg5NSwgMHg3MCwgMHg2ZSwgMHgxYSwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg0YiwgMHgyYywgMHg2ZiwgMHg3MSwgMHg5MCwgMHg5NSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDNjLCAweGEsIDB4ZjcsIDB4MTcsIDB4ZjgsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4Y2MsIDB4M2QsIDB4YTIsIDB4YzcsIDB4ZmIsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YywgMHg1LCAweGZiLCAweDJmLCAweGZiLCAweGRlLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4M2MsIDB4YSwgMHhmNywgMHg0MywgMHhmOCwgMHg3NiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjZiwgMHhkNywgMHg2MiwgMHhmMiwgMHhmYiwgMHhiZCwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDFkLCAweGZiLCAweDY2LCAweDI4LCAweGEsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg3ZiwgMHgzNiwgMHhhLCAweGY3LCAweDFkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDE1LCAweGY3LCAweDJhLCAweGY0LCAweGY3LCAweDI5LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGFlLCAweGZiLCAweDM0LCAweGY3LCAweDI1LCAweDUsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHgzNywgMHhmYiwgMHgyNCwgMHg1LCAweDRlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDI4LCAweGEsIDB4NGEsIDB4YSwgMHhkOSwgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg5YSwgMHhmNywgMHg0MiwgMHgyZSwgMHhlOCwgMHg1YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGQwLCAweGY3LCAweDIsIDB4MjksIDB4ZjcsIDB4NDEsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4MmQsIDB4ZjcsIDB4NDMsIDB4MTMsIDB4YjMsIDB4MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHhmOCwgMHg4OCwgMHg2ZiwgMHhhLCAweGZiLCAweDQ3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDZmLCAweGEsIDB4MTMsIDB4YjksIDB4MCwgMHhmYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiYSwgMHgxNSwgMHgxMywgMHhiNCwgMHg0MCwgMHgyZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDc4LCAweDIwLCAweDY0LCAweGY3LCAweDQzLCAweGU2LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzgsIDB4ODAsIDB4M2EsIDB4ZjcsIDB4ZTEsIDB4ZmIsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4NiwgMHgxMywgMHhiOCwgMHg0MCwgMHgyYywgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGUyLCAweGY4LCAweDI2LCAweGUyLCAweGY3LCAweDc3LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NTksIDB4ZjgsIDB4N2YsIDB4MTUsIDB4ZjcsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4NjIsIDB4ZWUsIDB4ZmIsIDB4YmUsIDB4ZmIsIDB4NywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE5LCAweGZjLCAweGVkLCAweDE1LCAweDM0LCAweGY3LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDMzLCAweDNhLCAweGEsIDB4ZmIsIDB4YTcsIDB4MzUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NSwgMHhlLCAweGZiLCAweDIyLCAweGU0LCAweGUwLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDlhLCAweGU0LCAweGNkLCAweGU0LCAweDEyLCAweDkzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDI5LCAweGVkLCAweGY3LCAweGM0LCAweGVlLCAweDEzLCAweGZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDU2LCAweDE1LCAweDMyLCAweGY3LCAweGUxLCAweGU0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweGY3LCAweDE4LCAweDcsIDB4N2QsIDB4YTEsIDB4YzMsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4MWIsIDB4ZjcsIDB4MjEsIDB4ZjAsIDB4ZWUsIDB4ZjcsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4ZmIsIDB4MjMsIDB4Y2MsIDB4MjQsIDB4NTEsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NmQsIDB4NjIsIDB4MWYsIDB4ZjcsIDB4NWQsIDB4ZmIsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NywgMHgxMywgMHhmNiwgMHhkZSwgMHhmYywgMHhlMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGZhLCAweGU5LCAweGY3LCAweGM2LCAweDE1LCAweGY3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHg5ZSwgMHhiNCwgMHhkYiwgMHhkMSwgMHg1ZCwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHg0MywgMHg1NiwgMHgzYywgMHg1YywgMHhmYiwgMHgyLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDFlLCAweGUsIDB4ZmIsIDB4MjIsIDB4ZTEsIDB4ZjgsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4ZDMsIDB4ZjcsIDB4YywgMHgxLCAweGY3LCAweDMxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZDIsIDB4ZjcsIDB4MywgMHgzLCAweGY3LCAweGU3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDE1LCAweGY3LCAweDMsIDB4ZjcsIDB4YywgMHg2YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRhLCAweGZiLCAweGMsIDB4MTUsIDB4ZjcsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDZiLCAweGEsIDB4ZmIsIDB4OSwgMHhmZCwgMHgzZCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhmNywgMHhiZiwgMHhlMSwgMHgzZCwgMHgzYSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDM1LCAweGZiLCAweDE1LCAweDUsIDB4ZSwgMHg4YiwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmMiwgMHhlNiwgMHg0ZSwgMHhlNiwgMHhiNiwgMHhmNywgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHg4ZiwgMHhmMCwgMHgxMywgMHhiOCwgMHg2NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGZiLCAweDNmLCAweDYsIDB4MTMsIDB4ZDgsIDB4ZjcsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4YSwgMHhmYiwgMHhmMiwgMHhmYiwgMHg0MiwgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGY4LCAweDk2LCAweDc5LCAweGEsIDB4NmIsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGEsIDB4NDAsIDB4YSwgMHhmNywgMHhlZCwgMHhmYiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhmNywgMHgxYywgMHhmYiwgMHg4ZiwgMHhmYiwgMHg0MSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NzksIDB4ZTYsIDB4ZjgsIDB4MjIsIDB4ZTYsIDB4MSwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHhmMywgMHhlZCwgMHhmMCwgMHhlYiwgMHgzLCAweDdjLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDk5LCAweGU2LCAweDNhLCAweGY4LCAweDIyLCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGZiLCAweDk1LCAweDMwLCAweGQ5LCAweGZjLCAweDIyLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4YjAsIDB4NzQsIDB4MTUsIDB4NzgsIDB4OWUsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4ZjUsIDB4MWIsIDB4ZjcsIDB4MTIsIDB4YTAsIDB4ZDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MWYsIDB4ZjcsIDB4YTcsIDB4YmUsIDB4ZTcsIDB4ZmIsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4ZjcsIDB4NywgMHhmYiwgMHhhOCwgMHg3LCAweDQ5LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDU2LCAweDViLCAweDhjLCAweDc4LCAweGEsIDB4ZmIsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4MzIsIDB4ZWEsIDB4ZjgsIDB4MzEsIDB4ZTYsIDB4ODAsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4ZjcsIDB4MjQsIDB4MTIsIDB4YWUsIDB4ZjcsIDB4MjUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHgzLCAweDI5LCAweGVkLCAweGY3LCAweDlmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4YWMsIDB4ODAsIDB4ZDAsIDB4ZjgsIDB4OTcsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2LCAweDEzLCAweDVhLCAweDgwLCAweDZiLCAweGEsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4NTYsIDB4MTUsIDB4MmMsIDB4ZjcsIDB4NzcsIDB4ZWEsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODEsIDB4NywgMHgxMywgMHg5YywgMHg4MCwgMHhmYiwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg2LCAweDEzLCAweDY5LCAweDgwLCAweGJhLCAweGZjLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjgsIDB4MSwgMHhmOCwgMHhjNiwgMHg3MywgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGZkLCAweDQ5LCAweDE1LCAweDczLCAweDMwLCAweDUsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4OWEsIDB4N2IsIDB4YzgsIDB4MWIsIDB4ZjcsIDB4NjMsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWIsIDB4YzYsIDB4MWYsIDB4ZjgsIDB4MmMsIDB4ZmIsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4ZjcsIDB4MTgsIDB4ZmIsIDB4Y2QsIDB4NywgMHg0NiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgzYiwgMHg2NCwgMHg3ZCwgMHg5NCwgMHg5NSwgMHg2YSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDMyLCAweGEsIDB4ZjcsIDB4MTcsIDB4ZWQsIDB4ZjcsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4MywgMHhhOSwgMHgxNiwgMHhmOCwgMHhhZiwgMHhmNywgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHhmYiwgMHg0MSwgMHhmYiwgMHg4NSwgMHhmNywgMHgyZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM2LCAweGJiLCAweDUsIDB4YzksIDB4NywgMHhmYiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg1LCAweGY3LCAweDM2LCAweGY3LCAweDEzLCAweGU2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDMwLCAweGYwLCAweGZiLCAweDUwLCAweDcsIDB4MzYsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0YywgMHg3LCAweGUwLCAweGExLCAweDUsIDB4ZmIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4NywgMHhlLCAweDhiLCAweGU5LCAweGY4LCAweDRhLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NjgsIDB4NiwgMHhmNywgMHgxMiwgMHhhZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweDcsIDB4ZmIsIDB4MTIsIDB4NjcsIDB4NSwgMHhmNywgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5ZSwgMHgyZCwgMHhmNywgMHgzYiwgMHhmYiwgMHg0ZiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDksIDB4NjksIDB4NSwgMHg0YiwgMHg3LCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4NSwgMHhmYiwgMHg0ZCwgMHhmYiwgMHg0MSwgMHg3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZTYsIDB4MzAsIDB4ZjcsIDB4M2UsIDB4YTAsIDB4ZjcsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4ZjcsIDB4NDMsIDB4MzAsIDB4ZTYsIDB4MTIsIDB4ODEsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmYsIDB4ZWEsIDB4YWYsIDB4ZDYsIDB4YTUsIDB4ZDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4ODAsIDB4ZjgsIDB4MjIsIDB4ZTYsIDB4MTUsIDB4ZjcsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4NTgsIDB4ZDYsIDB4ZjcsIDB4NGYsIDB4NDAsIDB4NWQsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4MWQsIDB4NywgMHgxMywgMHhiNywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhkNiwgMHhmNywgMHg0MywgMHhmYywgMHgxNiwgMHg3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4NCwgMHhmYiwgMHg3LCAweGZiLCAweDQzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweGY3LCAweDUsIDB4MmEsIDB4ZjIsIDB4MWYsIDB4ZjgsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHg3NywgMHg4MCwgMHhmNywgMHgzZSwgMHg0MCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGFmLCAweDgwLCAweDNjLCAweDcsIDB4ZmIsIDB4N2MsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NWMsIDB4NWQsIDB4ODksIDB4NzksIDB4MjMsIDB4NTgsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHhmNywgMHhmLCAweGQyLCAweGQ3LCAweGU4LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDhhLCAweDY2LCAweDFlLCAweGUsIDB4N2MsIDB4ZTksIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4ZTMsIDB4ZWEsIDB4MSwgMHg3ZCwgMHhlZCwgMHhmNywgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHgzLCAweGY3LCAweGY1LCAweGY3LCAweDQ0LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDYsIDB4ZjcsIDB4ZiwgMHg5ZCwgMHg2MSwgMHhmNywgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHgxYiwgMHg1YywgMHg2MCwgMHg3OCwgMHg2OCwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiMSwgMHg2YSwgMHg1OCwgMHg5YiwgMHg1NywgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg0ZiwgMHgyMiwgMHhmYiwgMHgxYywgMHg0OSwgMHg5YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHhmNywgMHgzOSwgMHhkMSwgMHhiYSwgMHhiOCwgMHhhMiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg2YSwgMHhhYSwgMHhhOCwgMHg2OCwgMHhlNSwgMHgxYiwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHg5YSwgMHhhMCwgMHhjMiwgMHgxZiwgMHg3MywgMHhlNiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDRkLCAweDUzLCAweDgyLCAweDc0LCAweDFiLCAweDM4LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDlmLCAweDFmLCAweDg2LCAweGVjLCAweDE1LCAweGIzLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGJiLCAweGMxLCAweDFiLCAweGNmLCAweDkzLCAweDQ4LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDFmLCAweGZjLCAweDNmLCAweDUxLCAweDE1LCAweGFiLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYsIDB4ZTYsIDB4ZDMsIDB4OGUsIDB4ZmIsIDB4MiwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg4NywgMHgyOSwgMHgzYSwgMHg0NywgMHg3ZSwgMHhlZiwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweGZiLCAweDRkLCAweDc2LCAweGY3LCAweDdkLCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4ZjEsIDB4ZjcsIDB4YSwgMHhmNywgMHgyLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGY3LCAweDAsIDB4MzAsIDB4ZjEsIDB4ZDksIDB4ZjcsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4ZjYsIDB4MzksIDB4ZjMsIDB4MTMsIDB4ZmEsIDB4ODAsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4MTUsIDB4ZjcsIDB4MCwgMHhiOSwgMHg2LCAweGE2LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDdlLCAweGFiLCAweDgyLCAweDgsIDB4ZmIsIDB4MTMsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg5NSwgMHg5YywgMHg5MiwgMHg5ZCwgMHgxYiwgMHg5ZCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3OCwgMHg3YywgMHg3ZSwgMHg3ZSwgMHg3ZCwgMHg4YSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg4OSwgMHg3OCwgMHg5MywgMHg4MSwgMHg5NCwgMHg2ZSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg3OSwgMHhhMSwgMHhhOSwgMHg3ZSwgMHhhYywgMHgxYiwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhjMiwgMHhjMCwgMHhhOCwgMHg4MSwgMHhiYiwgMHg1NywgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4YywgMHhhZiwgMHg1LCAweGY3LCAweGMsIDB4OTAsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4ZjIsIDB4MWEsIDB4ZjcsIDB4MTEsIDB4ZmIsIDB4YywgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHg4OCwgMHgxZSwgMHgxMywgMHhmNywgMHgwLCAweDI4LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDkzLCAweGI3LCAweDFhLCAweGJmLCAweGVkLCAweDkyLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweGJmLCAweDczLCAweDc1LCAweGIxLCAweDFlLCAweDU0LCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY3LCAweDIwLCAweDYzLCAweDcsIDB4OWIsIDB4NjIsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NTksIDB4MWIsIDB4MjcsIDB4ZmIsIDB4NywgMHg1ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweGZiLCAweDI1LCAweGY3LCAweDM1LCAweDdmLCAweGRiLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGZhLCAweDgwLCAweGIzLCAweDg4LCAweGYzLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDFhLCAweDYyLCAweDQzLCAweDZmLCAweDRmLCAweDNlLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDk2LCAweDZmLCAweDFlLCAweGQyLCAweGZiLCAweDAsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweDRkLCAweDc2LCAweGY3LCAweDU5LCAweGUzLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDk5LCAweGY3LCAweDQ2LCAweDJlLCAweGU4LCAweDEyLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweDM1LCAweGUxLCAweDM1LCAweGVhLCAweGQzLCAweGY3LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGVlLCAweDNmLCAweGViLCAweDEzLCAweGY0LCAweGEwLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDE1LCAweGVmLCAweGIxLCAweDYsIDB4YTQsIDB4ODIsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4YTgsIDB4ODQsIDB4OCwgMHhmYiwgMHgwLCAweDcsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OWEsIDB4OTEsIDB4OWIsIDB4MWIsIDB4OWQsIDB4OTMsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4N2UsIDB4ODAsIDB4ODAsIDB4N2QsIDB4OGEsIDB4MWYsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4N2EsIDB4OTIsIDB4ODEsIDB4OTMsIDB4NzEsIDB4NWQsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4OWYsIDB4YTcsIDB4ODAsIDB4YTksIDB4MWIsIDB4Y2MsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4YjgsIDB4YTMsIDB4ODIsIDB4YjQsIDB4NWIsIDB4OTUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4YWEsIDB4NSwgMHhmNywgMHgyLCAweDkwLCAweGU0LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDFhLCAweGY1LCAweGZiLCAweDMsIDB4YTYsIDB4MzYsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4ZTksIDB4YzAsIDB4MmYsIDB4OTEsIDB4NDUsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4MWEsIDB4YjgsIDB4ZTUsIDB4OTAsIDB4YTIsIDB4YjYsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NzksIDB4YWUsIDB4MWUsIDB4MTMsIDB4ZjIsIDB4YzAsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4ZjcsIDB4NDYsIDB4MjgsIDB4NjksIDB4NywgMHg5OSwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg5ZiwgMHg1ZCwgMHgxYiwgMHgyZSwgMHgyMCwgMHg2NCwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlLCAweGY3LCAweDJhLCAweDgyLCAweGQ1LCAweDg2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGY0LCAweGEwLCAweGFmLCAweDg4LCAweGVjLCAweDk1LCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDY5LCAweDQ4LCAweDczLCAweDUzLCAweDQ0LCAweDU4LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDcxLCAweDFlLCAweDEzLCAweGY0LCAweGMwLCAweGM3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZSwgMHg3NSwgMHhlNiwgMHg4YiwgMHhmNywgMHgyNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhlNiwgMHg4YiwgMHhiNiwgMHg2ZCwgMHhiNiwgMHhmNywgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhiYSwgMHhmMSwgMHgzNiwgMHhlMCwgMHgzNiwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5OSwgMHhmMSwgMHgzZCwgMHhmMCwgMHgxMywgMHhlZCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg3NSwgMHgxNSwgMHhmMSwgMHhhZSwgMHg2LCAweDgyLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDcxLCAweGRjLCAweDFiLCAweGY3LCAweDFkLCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4ZjcsIDB4MCwgMHhlNywgMHgzZSwgMHhiNSwgMHgzYSwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhmNCwgMHhjMCwgMHg1MywgMHg5MywgMHhmYiwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhlNywgMHgxYSwgMHhiNSwgMHhiYywgMHhiYiwgMHhlNiwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHg3ZiwgMHg3YywgMHhhZiwgMHgxZSwgMHgyMiwgMHhmMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHgyNSwgMHg3MywgMHg3LCAweDlhLCAweDY3LCAweDVmLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDFiLCAweGZiLCAweDMyLCAweDNhLCAweDI2LCAweDNiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweGY3LCAweDQ4LCAweDg1LCAweGY3LCAweGEsIDB4ODIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZWQsIDB4MjAsIDB4YzMsIDB4ODcsIDB4YWQsIDB4NzksIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NWIsIDB4NjAsIDB4NjksIDB4ZmIsIDB4MCwgMHg1NCwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhhNCwgMHg1ZSwgMHgxZSwgMHhkZSwgMHg3LCAweDEzLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDI1LCAweDYsIDB4MTMsIDB4ZjUsIDB4NDAsIDB4ZjcsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzUsIDB4MTUsIDB4ZjUsIDB4NiwgMHhmNywgMHgzZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg0YywgMHhhZiwgMHhmYiwgMHgzNSwgMHgyNCwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHg0OSwgMHg2OSwgMHg1LCAweGUsIDB4N2EsIDB4ZTEsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4OGIsIDB4ZWIsIDB4M2EsIDB4ZjcsIDB4NDEsIDB4MmYsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4YjksIDB4MTIsIDB4Y2QsIDB4ZWQsIDB4MzcsIDB4ZGYsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4ZjcsIDB4ODMsIDB4ZWUsIDB4NDAsIDB4ZWEsIDB4MTMsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZjcsIDB4OTksIDB4ZjgsIDB4NzksIDB4MTUsIDB4ZjAsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzOCwgMHhmNywgMHgyNSwgMHg0ZCwgMHhiMCwgMHhmYiwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhmYiwgMHgyZSwgMHhmNCwgMHg0YywgMHg2NywgMHg1LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweDFjLCAweDE1LCAweGVkLCAweGIxLCAweDYsIDB4N2IsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4NzUsIDB4YzAsIDB4MWIsIDB4ZjcsIDB4YiwgMHhlYSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHhmMiwgMHhmYiwgMHgzLCAweGE1LCAweDM2LCAweDg4LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGU0LCAweGMwLCAweDMwLCAweDkyLCAweDQ0LCAweDkxLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDEzLCAweGVhLCAweDQwLCAweGI1LCAweGU2LCAweDkwLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGJhLCAweDc4LCAweDdhLCAweGFmLCAweDFlLCAweDEzLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDVlLCAweGVlLCAweGY3LCAweDQxLCAweDI4LCAweDZhLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4NjQsIDB4NWEsIDB4OWUsIDB4NWQsIDB4MWIsIDB4MmUsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MjgsIDB4ZmIsIDB4YywgMHhmNywgMHgyYSwgMHg4MiwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxZiwgMHgxMywgMHhlNiwgMHgyMCwgMHhhZiwgMHg4OCwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg1OSwgMHgxYSwgMHg2YSwgMHg0NywgMHg3NCwgMHg1MywgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhhYiwgMHg5NCwgMHg3MCwgMHgxZSwgMHhjNiwgMHgyOSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OGIsIDB4ZTMsIDB4ZjgsIDB4MWIsIDB4ZTgsIDB4ZTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MTIsIDB4OTksIDB4ZjcsIDB4ODAsIDB4MmIsIDB4ZjcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmNywgMHg0LCAweDI4LCAweGY3LCAweDgwLCAweDEzLCAweGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweDE2LCAweGY3LCAweGU5LCAweGU4LCAweGZiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTQsIDB4NiwgMHhmNywgMHgzNCwgMHhmNywgMHg5NiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGVhLCAweGRhLCAweGU4LCAweGZiLCAweDgwLCAweDJlLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MjIsIDB4ZmIsIDB4M2QsIDB4MjMsIDB4ZjcsIDB4M2QsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmNCwgMHhjMSwgMHhlOCwgMHhmYiwgMHg4MCwgMHgyZSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDM0LCAweGZiLCAweDk2LCAweDUsIDB4ZmIsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTAsIDB4NywgMHhmNywgMHg2MiwgMHhmOCwgMHhjYiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweGY3LCAweDE1LCAweGZiLCAweDEsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhmYiwgMHgxNSwgMHgxNSwgMHhmNywgMHgyLCAweGY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4NiwgMHhlLCAweDhiLCAweGU2LCAweGY4LCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4OGIsIDB4YzEsIDB4ZjcsIDB4NDcsIDB4NzcsIDB4MTIsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ZjcsIDB4YTgsIDB4ZWQsIDB4MTcsIDB4YzgsIDB4MTYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4ZjcsIDB4NmUsIDB4MjksIDB4ZmIsIDB4MTMsIDB4ZmIsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHhkNSwgMHhmOCwgMHgyNiwgMHg1LCAweDEzLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGZjLCAweDU1LCAweGZiLCAweDVmLCAweGVkLCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmQsIDB4NywgMHhmYiwgMHhkNCwgMHhmYywgMHgyMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRmLCAweGY4LCAweGIyLCAweDE1LCAweGYwLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4ZjcsIDB4MjIsIDB4NTEsIDB4YWYsIDB4ZmIsIDB4MzAsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmIsIDB4ZjIsIDB4NGQsIDB4NjksIDB4NSwgMHhlLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweGY3LCAweDJmLCAweGY3LCAweDQzLCAweDMwLCAweGU2LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweGY3LCAweDRjLCAweDc3LCAweDEyLCAweGU5LCAweGVlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGVjLCAweDEzLCAweGRlLCAweGY3LCAweDk0LCAweGY4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGYwLCAweDYsIDB4ZjcsIDB4MzYsIDB4ZjcsIDB4MjYsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4ZmIsIDB4MmMsIDB4MjEsIDB4ZmIsIDB4MmUsIDB4ZjUsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NSwgMHg4MiwgMHhmZCwgMHhhLCAweDE1LCAweGY4LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRlLCAweDJhLCAweDJkLCAweGZiLCAweDUxLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4ZjcsIDB4OWMsIDB4NSwgMHhjZCwgMHhmYywgMHgzZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHhlZSwgMHg3LCAweDEzLCAweGJlLCAweGRmLCAweGY3LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZmIsIDB4YjEsIDB4ZmIsIDB4OTgsIDB4NSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGU5LCAweGY4LCAweDksIDB4ZTgsIDB4ZWIsIDB4ZTYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg2YywgMHgxNSwgMHg3MSwgMHgyZiwgMHg1LCAweDg3LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDg3LCAweGI3LCAweDFiLCAweGRkLCAweGRlLCAweGE5LCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDFmLCAweGQxLCAweGY3LCAweGUyLCAweDUsIDB4ZjYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHhlOCwgMHg1LCAweGZiLCAweDEsIDB4NiwgMHhlNSwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHg5MSwgMHhkNywgMHgxYiwgMHhhYiwgMHhhYSwgMHg4NywgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHgxZiwgMHg5YiwgMHhlNSwgMHg1LCAweDhkLCAweDY4LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDY2LCAweDFiLCAweGZiLCAweDEwLCAweDhhLCAweDRiLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGZiLCAweDIyLCAweDgsIDB4MjUsIDB4NiwgMHg3OCwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGYzLCAweDYsIDB4NGYsIDB4ZmIsIDB4YWUsIDB4NSwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg3OSwgMHg3ZSwgMHg1MSwgMHgxYiwgMHg3MywgMHg1YSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg3MywgMHgxZiwgMHhlLCAweDc5LCAweGU5LCAweDhiLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGVhLCAweDhiLCAweGQxLCAweGY3LCAweDI2LCAweGU2LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGY3LCAweDQyLCAweDc3LCAweDEyLCAweDk5LCAweGVkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGVhLCAweDM1LCAweGVkLCAweDEzLCAweGZmLCAweDgwLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZDAsIDB4ZjcsIDB4MTcsIDB4ZjcsIDB4MjEsIDB4ZTYsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4MWYsIDB4MTMsIDB4ZmYsIDB4NDAsIDB4NDEsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGZiLCAweDRkLCAweGZiLCAweDYyLCAweGY3LCAweDMzLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM2LCAweDFmLCAweDEzLCAweGZmLCAweDgwLCAweDU4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4ZjcsIDB4ZWIsIDB4MTUsIDB4ZTcsIDB4NiwgMHhmNywgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZSwgMHg1LCAweDEzLCAweGZmLCAweDQwLCAweDNlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjYsIDB4ZTQsIDB4ZWQsIDB4ZTMsIDB4M2QsIDB4ZTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ZTQsIDB4M2UsIDB4ZTMsIDB4OGIsIDB4YjIsIDB4ZjcsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NjksIDB4YSwgMHgxMywgMHhkNywgMHg4MCwgMHg1MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweGYyLCAweDFmLCAweGY3LCAweGI5LCAweDcsIDB4MTMsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZDcsIDB4ZTQsIDB4ZmIsIDB4M2MsIDB4NmUsIDB4NiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHg4MCwgMHg1YSwgMHhhLCAweDFmLCAweDEzLCAweGFmLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDksIDB4ZWUsIDB4M2MsIDB4ZjcsIDB4MjEsIDB4YzAsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YTcsIDB4YjEsIDB4MWUsIDB4NjcsIDB4NywgMHg1MSwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg0MiwgMHhhLCAweDY5LCAweDMzLCAweDQzLCAweDQ0LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweDFlLCAweGY3LCAweDFkLCAweGY3LCAweDg5LCAweDQzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OGMsIDB4NzYsIDB4ZjcsIDB4NDIsIDB4NzcsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhmOCwgMHg3NywgMHgxNSwgMHhmNywgMHgyMCwgMHhmNywgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweGZiLCAweDIsIDB4YzMsIDB4YWMsIDB4ZmIsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjEsIDB4NSwgMHgyZSwgMHg2LCAweGZiLCAweDJjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDUsIDB4ZSwgMHhmOCwgMHg5NiwgMHg3NiwgMHhmNywgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGY3LCAweDk0LCAweGY4LCAweDgxLCAweDQzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NjgsIDB4ZGUsIDB4MzgsIDB4ZjcsIDB4MzcsIDB4MTIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZGUsIDB4ZjksIDB4YiwgMHgxNSwgMHg0MywgMHg5OCwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHhmNywgMHgyMSwgMHgxYiwgMHhmNywgMHgzMiwgMHhiZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGJlLCAweDkzLCAweDFmLCAweDJlLCAweDYsIDB4MTMsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4N2EsIDB4NzAsIDB4NjMsIDB4M2MsIDB4MWIsIDB4MTMsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4NjYsIDB4YjYsIDB4YjAsIDB4ODMsIDB4MWYsIDB4ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhmNywgMHgyMCwgMHgxLCAweGY3LCAweDdhLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4N2EsIDB4ZjgsIDB4NzksIDB4MTUsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjAsIDB4ZmIsIDB4MjAsIDB4NiwgMHhlLCAweGY4LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU5LCAweDEsIDB4ZjcsIDB4NWEsIDB4YzgsIDB4ZGQsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg1YSwgMHhmOCwgMHhkNywgMHgxNSwgMHg1NiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhjMiwgMHhjNCwgMHhiOSwgMHhiOCwgMHhjMCwgMHhjMSwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHg1MiwgMHg1NCwgMHg1ZCwgMHg1ZSwgMHg1NSwgMHgxZSwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhhMiwgMHg5ZCwgMHg5ZCwgMHhhMSwgMHhhMywgMHg5ZCwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3NSwgMHg3OSwgMHg3OSwgMHg3MywgMHg3NSwgMHg3OSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgxZSwgMHhlLCAweGZiLCAweDViLCAweGY3LCAweDViLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVkLCAweGU0LCAweDMyLCAweGY3LCAweDUxLCAweDEzLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGJlLCAweDE2LCAweDdkLCAweDg4LCAweDM4LCAweDY4LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDVkLCAweGFmLCAweDYxLCAweGMwLCAweDFlLCAweDEzLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGI5LCAweDllLCAweGEwLCAweGExLCAweDFmLCAweGQ3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YzAsIDB4NzksIDB4NzMsIDB4MzksIDB4NjAsIDB4YzUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4ZGUsIDB4YWQsIDB4YTUsIDB4OWEsIDB4MWUsIDB4ZSwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzYiwgMHgzLCAweGUzLCAweGY4LCAweDlhLCAweDE1LCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDUsIDB4YTMsIDB4OTgsIDB4OTUsIDB4YWUsIDB4YWMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YTAsIDB4N2UsIDB4N2QsIDB4YTIsIDB4MWYsIDB4N2QsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4N2MsIDB4YWIsIDB4MWIsIDB4ZWMsIDB4YWEsIDB4ZGYsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MWYsIDB4M2EsIDB4YTMsIDB4NSwgMHg2NCwgMHg3OCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg2ZSwgMHgxYiwgMHg3OCwgMHg3NiwgMHg5NiwgMHg5NywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg5YiwgMHg2ZiwgMHg2ZSwgMHg5ZCwgMHg2ZSwgMHgxYiwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg0MSwgMHg2MiwgMHg3YiwgMHgxZiwgMHhlLCAweGY4LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDQzLCAweDc3LCAweDEsIDB4YjMsIDB4ZjgsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg5MywgMHhmOCwgMHg4ZiwgMHgxNSwgMHhjOCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4OCwgMHhmNywgMHgyNSwgMHgyOCwgMHhhOSwgMHg1LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGZiLCAweDJlLCAweDE1LCAweGM4LCAweDc2LCAweGY3LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweDI4LCAweGE5LCAweDUsIDB4ZSwgMHhmNywgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHgxLCAweGNjLCAweGY4LCAweDZhLCAweDMsIDB4Y2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4MTUsIDB4ZjgsIDB4NmEsIDB4ZWYsIDB4ZmMsIDB4NmEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweDVmLCAweGVmLCAweDEsIDB4ODEsIDB4ZjksIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDgxLCAweGY3LCAweDVmLCAweDE1LCAweGY5LCAweDAsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4MCwgMHg2LCAweGUsIDB4ZjcsIDB4YmUsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NzcsIDB4MSwgMHhmNywgMHhjNywgMHhmNywgMHhhOSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweDYsIDB4MmIsIDB4ZjcsIDB4YjUsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg2LCAweGUsIDB4NGMsIDB4YSwgMHhmNywgMHg0MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHgxNSwgMHhmNywgMHhhLCAweDYsIDB4ZjcsIDB4MWEsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgzMCwgMHg2LCAweGUsIDB4ZmIsIDB4ZCwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDQyLCAweGZiLCAweDIyLCAweDE1LCAweGY3LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgxNywgMHg1OSwgMHhhLCAweGZiLCAweDJmLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg0YywgMHhhLCAweGY4LCAweDMzLCAweGY3LCAweGE5LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzYsIDB4ZmIsIDB4YjEsIDB4NWQsIDB4YSwgMHhlLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4YWQsIDB4ZjcsIDB4YTksIDB4MTUsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDE4LCAweDU5LCAweGEsIDB4ZmIsIDB4MmQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjYiwgMHg0ZSwgMHhhLCAweGZiLCAweGQsIDB4NDUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhZCwgMHhmYiwgMHgyMiwgMHgxNSwgMHhmNywgMHhhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4NTksIDB4YSwgMHhmYiwgMHgyZSwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDRlLCAweGEsIDB4ZjcsIDB4ZGMsIDB4ZWQsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhlZiwgMHgzLCAweGY3LCAweDhlLCAweDQ1LCAweDE1LCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDI5LCAweGY3LCAweDI0LCAweGVkLCAweGZiLCAweDI0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDI3LCAweGZiLCAweDFkLCAweGZiLCAweDI0LCAweDI5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweDYsIDB4ZSwgMHg1YSwgMHg3NiwgMHhmNywgMHg1MywgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHhlZCwgMHhmNywgMHgzMCwgMHg3NywgMHgxLCAweGY3LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweDMsIDB4ZjUsIDB4ZjcsIDB4ZCwgMHgxNSwgMHhmNywgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1MywgMHhlZSwgMHhmNywgMHg1MywgMHhmNywgMHgyMywgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHhmNiwgMHhmNywgMHgyMywgMHhlZCwgMHhmYiwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMCwgMHgyOCwgMHhmYiwgMHgzMCwgMHhmYiwgMHgyNiwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNiwgMHgyMCwgMHhmYiwgMHgyNiwgMHg2LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHhmNywgMHhmZSwgMHgxLCAweGY3LCAweGMsIDB4ZjcsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmOCwgMHg3NCwgMHhmNywgMHhjMSwgMHgxNSwgMHhlZiwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHgyNywgMHgyNywgMHgzYiwgMHgzYSwgMHgyNywgMHgyNywgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhlZiwgMHhlZiwgMHhkYiwgMHhkYywgMHhlZiwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGY3LCAweDE3LCAweDEsIDB4YTUsIDB4ZjcsIDB4MWMsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4ZDEsIDB4ZjcsIDB4MWMsIDB4MTQsIDB4NzAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4YmQsIDB4MTUsIDB4NmMsIDB4YTMsIDB4NjksIDB4YjksIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YWQsIDB4YWIsIDB4YWQsIDB4NzUsIDB4YWEsIDB4NWUsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NjYsIDB4NmUsIDB4MWUsIDB4ZmIsIDB4NjIsIDB4MTYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NjksIDB4YjksIDB4YjcsIDB4YTEsIDB4YWQsIDB4YWIsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4YWEsIDB4NWUsIDB4NWIsIDB4NzYsIDB4NjYsIDB4NmUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjIsIDB4MTYsIDB4NmMsIDB4YTQsIDB4NjksIDB4YjgsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4YWQsIDB4YWIsIDB4YWQsIDB4NzYsIDB4YWEsIDB4NWQsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NjYsIDB4NmUsIDB4MWUsIDB4ZSwgMHg3YywgMHhkMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhkMSwgMHhkOSwgMHhkMSwgMHhmNywgMHgxYywgMHhkMSwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1LCAweGQ4LCAweGYzLCAweGQ3LCAweDc0LCAweGQ3LCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGEzLCAweGQ3LCAweGY3LCAweDMyLCAweGQ4LCAweDEzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGY4LCAweDI2LCAweGY3LCAweGYsIDB4MTUsIDB4NDMsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4ZWIsIDB4OGEsIDB4MWUsIDB4ZTEsIDB4ZDEsIDB4YzYsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4NGYsIDB4Y2UsIDB4MmQsIDB4MmYsIDB4NGEsIDB4NjgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhiZCwgMHhhOCwgMHg2YiwgMHg2NywgMHg1YywgMHg2MywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg1OCwgMHg3MCwgMHhhYywgMHhhZiwgMHgxZSwgMHhmYywgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmNSwgMHgxNSwgMHg0MywgMHhjNiwgMHg0YiwgMHhlYSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlMiwgMHhkMCwgMHhjNiwgMHhkYSwgMHhkMiwgMHg1MCwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHgyZiwgMHg0YiwgMHg0OSwgMHg0MiwgMHgxZiwgMHhkOCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhhZSwgMHhhNCwgMHhhYywgMHhiZiwgMHhiZSwgMHhhOCwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg1ZCwgMHg2NCwgMHg3NSwgMHg2MSwgMHg1YSwgMHg3MCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHgxZSwgMHgxMywgMHhmZCwgMHhjMCwgMHhmMywgMHhmYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg0MywgMHhjNSwgMHg0YSwgMHhlYSwgMHg4YSwgMHgxZSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhjNiwgMHhkYiwgMHhkMiwgMHg0ZiwgMHhjZSwgMHgyYywgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHg2OCwgMHhhLCAweGJlLCAweGJlLCAweGE4LCAweDZiLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDY0LCAweDc1LCAweDYxLCAweDVhLCAweDcwLCAweGFjLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDViLCAweGMwLCAweDE1LCAweGY4LCAweDU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDZjLCAweGNhLCAweGZjLCAweDU2LCAweGZiLCAweDUxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3YiwgMHhhLCAweGY3LCAweDIxLCAweGY3LCAweDk2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDlmLCAweGZiLCAweDUwLCAweGJjLCAweGNhLCAweGZiLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE1LCAweGY3LCAweDRiLCAweGY3LCAweGQsIDB4NWEsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweDdiLCAweGEsIDB4ZjcsIDB4MjEsIDB4ZjcsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg1MiwgMHhmOCwgMHg1MiwgMHgxNSwgMHg1YSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0YiwgMHhmYiwgMHhkLCAweGZiLCAweDRiLCAweGZiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDRjLCAweGY3LCAweDlmLCAweGY3LCAweDUwLCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg3NiwgMHhmOSwgMHg2NSwgMHg3NywgMHgxLCAweGEzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDMsIDB4YTMsIDB4ODMsIDB4MTUsIDB4ZDEsIDB4NTcsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4ZjksIDB4MzQsIDB4NDQsIDB4YmMsIDB4NSwgMHhlLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDVmLCAweGQ0LCAweGJhLCAweGQ0LCAweGY3LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDEsIDB4ZjcsIDB4ZiwgMHhlOSwgMHgzLCAweGM3LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGJlLCAweDRiLCAweDUsIDB4OTMsIDB4OTcsIDB4ZWMsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4MWIsIDB4YTEsIDB4YTYsIDB4ODIsIDB4ODMsIDB4YTYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4YTIsIDB4YWQsIDB4ODUsIDB4OWYsIDB4MWIsIDB4ZDMsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4NzEsIDB4YSwgMHg3YSwgMHg3MiwgMHg2NCwgMHhhLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDdjLCAweDFiLCAweDdhLCAweDUwLCAweDg2LCAweDg1LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGE2LCAweDlhLCAweDkzLCAweGI3LCAweDg5LCAweGEwLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDUsIDB4ZDQsIDB4ZmIsIDB4NTAsIDB4NiwgMHg4OCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhhMywgMHg4YSwgMHg5YSwgMHg4LCAweGY3LCAweDU4LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVhLCAweDYsIDB4ODksIDB4YTgsIDB4OGEsIDB4YTQsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4YSwgMHhiYSwgMHg3MiwgMHg1ZSwgMHhhMCwgMHgxZiwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg1LCAweGI5LCAweDcwLCAweDU3LCAweGRjLCAweDYzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4OGIsIDB4NzcsIDB4OGQsIDB4NzMsIDB4MWUsIDB4NDcsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4NiwgMHg4ZSwgMHg3NSwgMHg4YiwgMHg3OSwgMHg4ZCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDQxLCAweDQyLCAweGUxLCAweDYsIDB4OTEsIDB4NTksIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NWEsIDB4NzAsIDB4OCwgMHhlLCAweDhiLCAweGRlLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweGMxLCAweGQ0LCAweGY0LCAweGRlLCAweDEsIDB4ZDgsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZGQsIDB4ZWQsIDB4MywgMHg4MiwgMHhmNywgMHg0YywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHg2LCAweGZiLCAweGUsIDB4YWUsIDB4ZjcsIDB4OCwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkLCAweDFiLCAweGUzLCAweGUxLCAweGFhLCAweGJjLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDUzLCAweGMzLCAweDUsIDB4NjMsIDB4NjUsIDB4M2EsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4MWIsIDB4NDYsIDB4OGMsIDB4NDQsIDB4YjMsIDB4NmQsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmNywgMHg0MCwgMHg2LCAweGE1LCAweGQ1LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NiwgMHg4YSwgMHg5MSwgMHg4YiwgMHg5NCwgMHg5MSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg5MywgMHg5MiwgMHgxYSwgMHhmNywgMHg3YiwgMHg2LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDUsIDB4ZmIsIDB4ODMsIDB4NiwgMHhkNSwgMHhhMywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhkMywgMHgxYiwgMHhiZiwgMHg4YSwgMHhiZiwgMHg3OSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg4LCAweDQ3LCAweGVkLCAweGY3LCAweDY2LCAweDI5LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YWEsIDB4NWUsIDB4NTYsIDB4OWIsIDB4NTQsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgzLCAweDQzLCAweGZiLCAweDgsIDB4NmEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NiwgMHg3MCwgMHg0MiwgMHg1LCAweGUxLCAweDc5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NzIsIDB4NSwgMHg0ZiwgMHg2LCAweGUsIDB4N2MsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4ZTgsIDB4ZjcsIDB4MzYsIDB4ZTgsIDB4MSwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhmNywgMHg3YiwgMHhlZCwgMHgzLCAweDk3LCAweDdjLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDljLCAweGU4LCAweDNiLCAweGY3LCAweDFjLCAweGRlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4NWQsIDB4YjAsIDB4NWQsIDB4YTEsIDB4NmIsIDB4NWIsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZDEsIDB4NTgsIDB4YWEsIDB4YTksIDB4OTUsIDB4N2MsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4OTMsIDB4N2YsIDB4MTksIDB4ZjcsIDB4MjIsIDB4ZTgsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3ZiwgMHg5ZiwgMHhjYywgMHhlNCwgMHg0NCwgMHhiYywgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg1ZCwgMHhjOCwgMHg1LCAweGY1LCAweDllLCAweGFiLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDFhLCAweGY3LCAweGIsIDB4MjgsIDB4YmQsIDB4ZmIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHhiYSwgMHgyZSwgMHhkYywgMHhmYywgMHgxYiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDRjLCAweGY3LCAweDc5LCAweDE1LCAweGY3LCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjcsIDB4NGEsIDB4YmMsIDB4OTIsIDB4MzcsIDB4MmUsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4ZmIsIDB4MjksIDB4MWYsIDB4ZSwgMHhmNywgMHg4ZiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhZSwgMHhiYywgMHgxLCAweGY3LCAweDQsIDB4YmIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhiYSwgMHhmNywgMHg1OCwgMHhiYiwgMHgzLCAweGY3LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdhLCAweDE1LCAweGJhLCAweGY3LCAweGI1LCAweDYsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjUsIDB4NSwgMHhjNywgMHg2LCAweGNkLCAweGY3LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4YjQsIDB4YmIsIDB4ZjcsIDB4ZTAsIDB4MzIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHhmYiwgMHg5NywgMHg1MSwgMHhmNywgMHg5NywgMHg1LCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4M2IsIDB4ZmIsIDB4ZTAsIDB4MTUsIDB4YmIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZGQsIDB4YmMsIDB4ZmIsIDB4NjksIDB4NWEsIDB4ZGUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDc1LCAweGEsIDB4ZjcsIDB4MzMsIDB4NzYsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhlMSwgMHhmYywgMHg3OSwgMHg1YiwgMHhhLCAweDhlLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4MSwgMHhmNywgMHg5MiwgMHhlMSwgMHgzLCAweGY3LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDE1LCAweGUxLCAweGY4LCAweDViLCAweDYsIDB4YmYsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4YmQsIDB4ZmIsIDB4MzEsIDB4ZjcsIDB4NTAsIDB4ZmIsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGQsIDB4Y2EsIDB4NTgsIDB4YmEsIDB4Y2EsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGEsIDB4NmUsIDB4ZjcsIDB4OTYsIDB4MTUsIDB4ZjgsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4YSwgMHhmYywgMHg3OSwgMHg2LCAweGUsIDB4OTEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHg5MiwgMHhlMSwgMHgzLCAweGY3LCAweDI0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDE1LCAweGY3LCAweDJmLCAweGZiLCAweDRkLCAweGY3LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUwLCAweDRiLCAweGJkLCAweDU3LCAweDQ1LCAweDUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4MzUsIDB4ZmMsIDB4NTYsIDB4NywgMHg1YywgMHhjYSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4OTYsIDB4ZTEsIDB4MSwgMHg3MywgMHhmOSwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDM4LCAweDc2LCAweGEsIDB4ZjcsIDB4Y2MsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHhjMiwgMHg1YiwgMHhhLCAweGY3LCAweDVmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MSwgMHhkMiwgMHhmOCwgMHg1ZSwgMHgzLCAweDVjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4YiwgMHhlNSwgMHhmNywgMHg4NywgMHhlNSwgMHhkNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3MywgMHg3NywgMHgxMiwgMHhmNCwgMHhlNSwgMHhmNywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MiwgMHgyZiwgMHhlNywgMHgxMywgMHhlYSwgMHhmOCwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg4NywgMHgxNSwgMHhlNywgMHhmNywgMHgxMywgMHgyZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGZkLCAweDYsIDB4MTUsIDB4ZjcsIDB4YWIsIDB4ZTUsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTEsIDB4NiwgMHgxMywgMHhlYywgMHhmYiwgMHg0MiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGRhLCAweGRkLCAweGZiLCAweDg3LCAweDJmLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YzIsIDB4MzEsIDB4MTUsIDB4ZjcsIDB4YWUsIDB4ZTUsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODcsIDB4ZWIsIDB4ZTUsIDB4MmIsIDB4YmYsIDB4NiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHg4NywgMHhhNCwgMHgxZSwgMHg4ZSwgMHhlNSwgMHg1LCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDhjLCAweGZiLCAweDFkLCAweDFmLCAweDYwLCAweDJiLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweGZiLCAweDg3LCAweDJiLCAweDcsIDB4ZSwgMHg4YiwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MCwgMHhlOCwgMHhlYSwgMHhlNSwgMHg4ZSwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHhlNSwgMHhmNywgMHgzZCwgMHhmNywgMHgxNywgMHgzMSwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkYywgMHhmNywgMHhjYywgMHgxNiwgMHhmNywgMHhhYSwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhmOCwgMHhhOSwgMHhmYiwgMHgxNywgMHg2LCAweDEzLCAweGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDcsIDB4MTMsIDB4ZWEsIDB4YjQsIDB4ZmMsIDB4NGMsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHhjMywgMHgyZSwgMHgxNSwgMHhmNywgMHhhYywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhmNywgMHg5MCwgMHhlOSwgMHhlOCwgMHgyZCwgMHhiZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGI2LCAweDk2LCAweGIxLCAweDhjLCAweDFlLCAweGE1LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDhiLCAweDkxLCAweDg5LCAweDhjLCAweGU2LCAweDE4LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQsIDB4OGIsIDB4ZmIsIDB4MjAsIDB4MWYsIDB4NWUsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4ZWIsIDB4ZmIsIDB4OTAsIDB4MmIsIDB4NywgMHhlLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGY4LCAweDRiLCAweDlmLCAweGYyLCAweDlkLCAweDlmLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDk1LCAweDYsIDB4ZmIsIDB4MjYsIDB4OGYsIDB4NywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHgzOSwgMHg2MywgMHhmZiwgMHhjLCAweDksIDB4ZTgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhiLCAweDhjLCAweGMsIDB4ZSwgMHhmOCwgMHhlYywgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgxMywgMHgwLCAweDVkLCAweDIsIDB4MCwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4MCwgMHg0MywgMHgwLCAweDQ3LCAweDAsIDB4N2EsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHgwLCAweGM0LCAweDAsIDB4ZTksIDB4MSwgMHgxNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDEsIDB4NGMsIDB4MSwgMHg2NSwgMHgxLCAweDdkLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4MSwgMHhhOCwgMHgxLCAweGJiLCAweDEsIDB4Y2EsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHgxLCAweGUyLCAweDEsIDB4ZTksIDB4MSwgMHhmYywgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MiwgMHgxMCwgMHgyLCAweDI0LCAweDIsIDB4MzYsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHgyLCAweDRjLCAweDIsIDB4NmMsIDB4MiwgMHg3MSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDIsIDB4N2YsIDB4MiwgMHg4ZCwgMHgyLCAweDk1LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MiwgMHhiOCwgMHgyLCAweGNmLCAweDIsIDB4ZDgsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHgyLCAweGU3LCAweDIsIDB4ZmEsIDB4MywgMHhkLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4MywgMHgyZSwgMHgzLCAweDM2LCAweDMsIDB4M2UsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHgzLCAweDQ5LCAweDMsIDB4NTcsIDB4MywgMHg2MSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDMsIDB4NzUsIDB4MywgMHg3ZSwgMHgzLCAweDg3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MywgMHg5NywgMHgzLCAweGE1LCAweDMsIDB4YjEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHgzLCAweGMzLCAweDMsIDB4ZDAsIDB4MywgMHhkYiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweDMsIDB4ZjIsIDB4MywgMHhmZSwgMHg0LCAweDQsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDQsIDB4ZSwgMHg0LCAweDE0LCAweDQsIDB4MWYsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg0LCAweDMxLCAweDQsIDB4MzYsIDB4NCwgMHgzYiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDQsIDB4NGYsIDB4NCwgMHg1MywgMHg0LCAweDU3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4NCwgMHg2OSwgMHg0LCAweDcyLCAweDQsIDB4N2IsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg0LCAweDhkLCAweDQsIDB4OTYsIDB4NCwgMHg5ZiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDQsIDB4YjEsIDB4NCwgMHhiYSwgMHg0LCAweGMxLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4NCwgMHhjZSwgMHg0LCAweGQ0LCAweDQsIDB4ZDksIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHhmNywgMHg5NywgMHhlNSwgMHgyNywgMHg2LCAweGE5LCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4ODYsIDB4NiwgMHhhOSwgMHg0YSwgMHg1LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGY3LCAweDkyLCAweGU1LCAweDUxLCAweDYsIDB4ZmIsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NjIsIDB4NSwgMHhmYiwgMHg4ZiwgMHgzMSwgMHhmNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDNmLCAweGZjLCAweDgsIDB4NSwgMHg0ZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdhLCAweGY3LCAweDJmLCAweDE1LCAweGRjLCAweGY3LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGZiLCAweDQ3LCAweDUsIDB4YiwgMHgyYSwgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDRkLCAweGEsIDB4MTMsIDB4N2UsIDB4MmIsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHgyOSwgMHhhLCAweDE1LCAweDIwLCAweGEsIDB4ZSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzOSwgMHhmNywgMHgyYSwgMHg1MSwgMHhmNywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4ZjcsIDB4MjksIDB4Y2IsIDB4ZjcsIDB4MzMsIDB4ZjcsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NiwgMHhlMCwgMHhmYiwgMHgzMiwgMHhmYiwgMHgyMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHgzZCwgMHhmYiwgMHgyYiwgMHgxZSwgMHhlZiwgMHgxNiwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHhjMCwgMHhlYSwgMHhmNywgMHg3LCAweGM1LCAweDUyLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDI4LCAweDViLCAweDQxLCAweDQ3LCAweDI3LCAweGI3LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4MTUsIDB4ZjgsIDB4MjMsIDB4NiwgMHhmNywgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHgzMiwgMHhmNywgMHgxNCwgMHhmYiwgMHg0MywgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGZiLCAweDFmLCAweDNmLCAweGZiLCAweDJiLCAweGZiLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MjEsIDB4ZjcsIDB4NDEsIDB4ZTUsIDB4ZWIsIDB4YTksIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4MWYsIDB4NWYsIDB4ZGEsIDB4NSwgMHg2ZCwgMHg0YiwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg0MSwgMHgxYiwgMHhmYiwgMHgxMCwgMHg2OSwgMHhjNywgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHgxZiwgMHg5MiwgMHhlNiwgMHgxNSwgMHhjMywgMHhhMCwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhjOCwgMHgxYiwgMHhjNywgMHhjYSwgMHg3YSwgMHg0YiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDJmLCAweGEsIDB4ZjcsIDB4MmUsIDB4MmUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4MjYsIDB4YSwgMHhiLCAweGZiLCAweDRjLCAweGZiLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGZiLCAweDIxLCAweGZiLCAweDJiLCAweDFlLCAweGVkLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGU2LCAweGM4LCAweGY2LCAweGY3LCAweGMsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4ZmIsIDB4MTMsIDB4NDcsIDB4M2EsIDB4NWEsIDB4ZmIsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTksIDB4ZmIsIDB4ZCwgMHg0ZiwgMHhmMywgMHhlZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGRiLCAweGZiLCAweGEyLCAweDYsIDB4ZmIsIDB4MTEsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4ZjcsIDB4MjUsIDB4ZjcsIDB4MTEsIDB4ZTgsIDB4ZGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MWUsIDB4ZjcsIDB4YTMsIDB4ZDgsIDB4ZTYsIDB4ZmIsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4ZTEsIDB4ZmIsIDB4OGQsIDB4NywgMHgzNSwgMHg3NCwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhmYiwgMHg0LCAweDgzLCAweGUyLCAweGMwLCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGRmLCAweGU2LCAweGZiLCAweDk3LCAweDcsIDB4ZSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiNSwgMHgwLCAweDJlLCAweGEsIDB4MTMsIDB4NzgsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4ZjcsIDB4NDMsIDB4ZTYsIDB4NywgMHgxMywgMHg3YSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweGY3LCAweGUxLCAweGZiLCAweDQxLCAweDMwLCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MCwgMHgyYywgMHhhLCAweDYxLCAweDViLCAweDRmLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweDFiLCAweDYwLCAweDYyLCAweDljLCAweGFiLCAweGI3LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGM2LCAweDhjLCAweDFmLCAweGM3LCAweDhjLCAweGNkLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDg5LCAweDgsIDB4ZSwgMHgxZiwgMHg4ZiwgMHg2NywgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg2NiwgMHgxYiwgMHhmYiwgMHg3ZiwgMHg4MiwgMHhmYiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg0YiwgMHhjYiwgMHgzZSwgMHhmNywgMHhhLCAweGRhLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGFlLCAweGM2LCAweDFmLCAweGIsIDB4MzgsIDB4ZjcsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHhlLCAweDVkLCAweGM4LCAweGZiLCAweDEwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZmIsIDB4ZSwgMHg2NiwgMHg3ZiwgMHg3YSwgMHgxZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhmYiwgMHg3YywgMHgxNSwgMHhiLCAweGRhLCAweGZiLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NzUsIDB4NjMsIDB4NTIsIDB4NzEsIDB4NTksIDB4OGEsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg4YSwgMHg2MCwgMHhhMCwgMHhiZiwgMHgxYSwgMHhmNywgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MiwgMHg3LCAweGUsIDB4ZmIsIDB4OTMsIDB4MzgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MywgMHhmYiwgMHg2LCAweGVkLCAweGY3LCAweDYwLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDMxLCAweGQ3LCAweGZjLCAweDgsIDB4M2MsIDB4NiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGZiLCAweDQ4LCAweDYsIDB4ZmIsIDB4MiwgMHhjNywgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweDhhLCAweDFlLCAweGJmLCAweGJlLCAweGExLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDFmLCAweGIsIDB4MTUsIDB4ZmIsIDB4NTYsIDB4ZjcsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4ZjcsIDB4MWEsIDB4ZjMsIDB4ZjcsIDB4NDEsIDB4ZDIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4YiwgMHhmYiwgMHgzZiwgMHhmOCwgMHg4LCAweGY3LCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGZjLCAweDNmLCAweDMxLCAweGY3LCAweDM5LCAweGZjLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDMsIDB4NiwgMHhiLCAweGY4LCAweDUyLCAweGU1LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHg4YiwgMHhlNiwgMHhmOCwgMHgxMCwgMHhlNiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MTUsIDB4ZjgsIDB4NTIsIDB4ZTYsIDB4ZmIsIDB4NDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4ZmIsIDB4N2UsIDB4MzAsIDB4ZjcsIDB4MWQsIDB4ZmIsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDIsIDB4NiwgMHhlLCAweDEyLCAweGFiLCAweGVjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGVhLCAweDJjLCAweGY3LCAweDQ2LCAweGIsIDB4ZjgsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWUsIDB4MjksIDB4ZmIsIDB4NCwgMHgyZCwgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4OWEsIDB4ZjcsIDB4NDIsIDB4MmUsIDB4ZTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZjcsIDB4NDEsIDB4MmQsIDB4ZTksIDB4MmQsIDB4ZjcsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmEsIDB4MCwgMHhiLCAweDVhLCAweGJiLCAweDY0LCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGJiLCAweGIyLCAweGJjLCAweGJjLCAweDViLCAweGIyLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDViLCAweDY0LCAweDVhLCAweDFlLCAweGIsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4NGIsIDB4ZWUsIDB4ZjcsIDB4NmMsIDB4MjgsIDB4NGIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWQsIDB4YiwgMHg3YywgMHhlNiwgMHgzYywgMHhlNSwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhjZiwgMHhlMiwgMHhiLCAweDcsIDB4ZjcsIDB4OWUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4NSwgMHhkNywgMHhlMiwgMHhmYiwgMHg3NiwgMHgzNCwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDE0LCAweGZiLCAweDU0LCAweGZiLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NSwgMHhiYywgMHhlMiwgMHhmYiwgMHg3YiwgMHgzNCwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDNhLCAweGIsIDB4MzQsIDB4YSwgMHgxMywgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDRhLCAweGEsIDB4ZjcsIDB4ODMsIDB4MzYsIDB4YSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGE5LCAweDcwLCAweDViLCAweDJhLCAweGEsIDB4YiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhmYiwgMHgyMCwgMHhmYiwgMHgxLCAweGZiLCAweDIwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4NTEsIDB4NjgsIDB4NSwgMHhlLCAweDE1LCAweDliLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweGE0LCAweGQ3LCAweDFiLCAweGIsIDB4ZTksIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhlZSwgMHg2MCwgMHhhLCAweGU5LCAweGZiLCAweDQyLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4YWYsIDB4NzUsIDB4NmQsIDB4YmUsIDB4MWYsIDB4MmQsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODEsIDB4MjksIDB4NWMsIDB4NywgMHhhNSwgMHg2MiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg0MSwgMHgxYiwgMHhmYiwgMHgzMiwgMHhmYiwgMHgxMiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGEsIDB4NDIsIDB4MzksIDB4YTMsIDB4OTUsIDB4NjQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4ZjcsIDB4YTMsIDB4MTUsIDB4ZDIsIDB4Y2QsIDB4YmEsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4YzYsIDB4NWYsIDB4M2YsIDB4NDIsIDB4NTMsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHg2LCAweGY3LCAweDI5LCAweGY3LCAweDFlLCAweDNlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg4MiwgMHhmNywgMHg5NywgMHhmNCwgMHhmNywgMHg5MiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NzYsIDB4ZjcsIDB4YjEsIDB4NzcsIDB4MSwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGY3LCAweDQ2LCAweDE1LCAweGY3LCAweDFkLCAweDMyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NjIsIDB4NjQsIDB4ODgsIDB4NjcsIDB4MWIsIDB4ZmIsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4YiwgMHg2LCAweDQ1LCAweDU3LCAweGJkLCAweDRjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGY3LCAweDMwLCAweGZiLCAweDRkLCAweGY3LCAweDMwLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGNhLCAweDViLCAweDUsIDB4YiwgMHg4YiwgMHhlNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhlMywgMHhmNywgMHgxZCwgMHg1ZiwgMHhhLCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4ZjEsIDB4ZWUsIDB4YiwgMHg2NiwgMHhhYywgMHg2YywgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhhYywgMHhhYSwgMHhiMCwgMHhiMiwgMHg2YSwgMHhhOSwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg2YSwgMHg2ZCwgMHg2NCwgMHgxZSwgMHhiLCAweDdjLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweGU2LCAweGY3LCAweDg2LCAweGU2LCAweGIsIDB4MSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHhmNywgMHhlOSwgMHhlZSwgMHgzLCAweGIsIDB4ZjcsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4YSwgMHhiLCAweDVlLCAweGY3LCAweDQ2LCAweGU1LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYiwgMHhiMSwgMHgxNSwgMHhmNywgMHg5LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NTksIDB4YSwgMHhmYiwgMHgyZSwgMHg2LCAweGUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjgsIDB4MTcsIDB4ZTYsIDB4ZjcsIDB4N2QsIDB4NTIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGU3LCAweDc0LCAweDE1LCAweDc1LCAweDMyLCAweDUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4YzgsIDB4N2IsIDB4ZDUsIDB4MWIsIDB4ZjcsIDB4NTAsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgzZiwgMHhhLCAweGJmLCAweGIsIDB4NzcsIDB4MSwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhmNywgMHg4OSwgMHhlYSwgMHgzLCAweGIsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHgxMCwgMHhmYiwgMHg1LCAweDYsIDB4YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGExLCAweGVkLCAweGY3LCAweGZmLCAweGVhLCAweDMsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhlNSwgMHhlYSwgMHhlNiwgMHhkYywgMHhlNywgMHhiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGUsIDB4ZmIsIDB4ZSwgMHgxNSwgMHhmNywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4NiwgMHg2LCAweGIsIDB4OGIsIDB4ZTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ZTYsIDB4ZjcsIDB4ODIsIDB4NjcsIDB4YSwgMHhlYywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZDIsIDB4ZDIsIDB4OWMsIDB4YWEsIDB4YzYsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4YmQsIDB4ZWEsIDB4ZmIsIDB4YWUsIDB4NywgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDUsIDB4YiwgMHhhNywgMHg2NiwgMHg1YSwgMHg5NywgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgyMywgMHgyNywgMHgzMCwgMHhmYiwgMHg4LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjYSwgMHhiYiwgMHg1OCwgMHhjYSwgMHhmYiwgMHg0ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHg1LCAweGUsIDB4ZDIsIDB4ZjcsIDB4NWYsIDB4MTUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4ZjcsIDB4MiwgMHhmYywgMHg1ZSwgMHg2LCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHg2LCAweDJiLCAweDU5LCAweGEsIDB4ZmIsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiLCAweGFmLCAweDc2LCAweGY4LCAweDdhLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4ZjgsIDB4NWQsIDB4MywgMHhkMiwgMHhiLCAweGU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDc3LCAweDEsIDB4YiwgMHgzLCAweDY2LCAweGEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhlNCwgMHhmOCwgMHgyNCwgMHhlNiwgMHhiLCAweDdjLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDlmLCAweGU3LCAweGIsIDB4ZmIsIDB4MTIsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NDUsIDB4MmIsIDB4MmMsIDB4OGMsIDB4MWYsIDB4YiwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg4MSwgMHg3YywgMHg4ZiwgMHg5MSwgMHg3YiwgMHgxZiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhiLCAweGMzLCAweDU2LCAweGY4LCAweGQwLCAweGY5LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhkOCwgMHgxNiwgMHhmOCwgMHg1MiwgMHhiLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGYsIDB4YiwgMHg0OSwgMHg0MiwgMHgxZiwgMHhkNywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhhZSwgMHhhNSwgMHhhYywgMHhiLCAweDEyLCAweGE0LCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIzLCAweGU3LCAweDJmLCAweGY3LCAweDNjLCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg1LCAweGIsIDB4ZmIsIDB4MywgMHg2LCAweGIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4OGEsIDB4YjIsIDB4YjEsIDB4ZDUsIDB4MWIsIDB4YmYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDU0LCAweGY3LCAweDZjLCAweDMsIDB4ZjcsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3NywgMHgxLCAweGY3LCAweDkzLCAweGU1LCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4YiwgMHgxNSwgMHhmNywgMHgyLCAweGY3LCAweDExLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4NiwgMHhiLCAweDE1LCAweGY3LCAweDYsIDB4ZjcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NiwgMHg2LCAweGIsIDB4YTQsIDB4YTAsIDB4MWYsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4NSwgMHg3NywgMHg3MSwgMHhiLCAweDE1LCAweGY3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTIsIDB4ZmIsIDB4NCwgMHg2LCAweGIsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgyNCwgMHhmYiwgMHhhLCAweDYsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhlNiwgMHhmYywgMHg0YywgMHgzMCwgMHhmNywgMHgzZiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk2LCAweGUxLCAweDEsIDB4NmUsIDB4ZjksIDB4MjYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY3LCAweDIzLCAweDE1LCAweGJkLCAweGNhLCAweDQ1LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YiwgMHhjNSwgMHhmYiwgMHhjMywgMHhmNywgMHhkLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhhMSwgMHhkOCwgMHgxZSwgMHhmNiwgMHgyOSwgMHg3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MywgMHhmNywgMHgyMywgMHhiLCAweDMwLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDEwLCAweDM4LCAweGIsIDB4ZDEsIDB4ZjgsIDB4YywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4OGIsIDB4ZTksIDB4ZjcsIDB4OGYsIDB4YgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0Rml4ZWRCb2xkSXRhbGljLmMgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0Rml4ZWRCb2xkSXRhbGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU4NDdmNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRGaXhlZEJvbGRJdGFsaWMuYwpAQCAtMCwwICsxLDI0MDIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKK2NvbnN0IHVuc2lnbmVkIGNoYXIgZ19Gb3hpdEZpeGVkQm9sZEl0YWxpY0ZvbnREYXRhIFsxOTE1MV0gPSB7MHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NCwgMHgyLCAweDAsIDB4MSwgMHgxLCAweDEsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NjgsIDB4NzIsIDB4NmYsIDB4NmQsIDB4NDYsIDB4NjksIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjQsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MmQsIDB4NDIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NjQsIDB4NDksIDB4NzQsIDB4NjEsIDB4NmMsIDB4NjksIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgxLCAweDEsIDB4MSwgMHgyNCwgMHhmOCwgMHgxMCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDJhLCAweDEsIDB4ZjgsIDB4MmIsIDB4MiwgMHhmOCwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY4LCAweDE0LCAweDQsIDB4ZmIsIDB4YSwgMHhmYiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg0OSwgMHhmOSwgMHhiZiwgMHg1LCAweGY3LCAweGFkLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4OTQsIDB4MTEsIDB4YWMsIDB4MWMsIDB4NDQsIDB4MmUsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgxMiwgMHgxLCAweDEsIDB4NSwgMHhiLCAweGQsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4MjIsIDB4MmIsIDB4MzQsIDB4M2UsIDB4NDUsIDB4NGIsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NWQsIDB4NjUsIDB4OGYsIDB4YWEsIDB4YjksIDB4NDUsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NmYsIDB4NDcsIDB4NjMsIDB4NjEsIDB4NzIsIDB4NmYsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NGEsIDB4NDksIDB4NjQsIDB4NmYsIDB4NzQsIDB4NTMsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjQsIDB4NjksIDB4NmMsIDB4NmMsIDB4NjEsIDB4NjEsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NmYsIDB4NzcsIDB4NjIsIDB4NmYsIDB4NzQsIDB4NjgsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsIDB4NjQsIDB4NmYsIDB4NzcsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsIDB4NmMsIDB4NjUsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsIDB4NzIsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NjgsIDB4NzQsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NzAsIDB4NjcsIDB4NjMsIDB4NjEsIDB4NzIsIDB4NmYsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NmEsIDB4NmMsIDB4NjksIDB4NzIsIDB4NjEsIDB4NzAsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NzMsIDB4NjMsIDB4NzIsIDB4NjksIDB4NzAsIDB4NzQsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NmUsIDB4NzMsIDB4NjMsIDB4NjUsIDB4NjQsIDB4NjksIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NjEsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4NDMsIDB4NjgsIDB4NzIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MjAsIDB4NDYsIDB4NjksIDB4NzgsIDB4NjUsIDB4NjQsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NTQsIDB4NDYsIDB4MjAsIDB4NDIsIDB4NmYsIDB4NmMsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4NDksIDB4NzQsIDB4NjEsIDB4NmMsIDB4NjksIDB4NjMsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NzIsIDB4NkYsIDB4NjgsIDB4MjAsIDB4NDYsIDB4NjksIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjQsIDB4MjAsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHgyMiwgMHgwLCAweDhhLCAweDAsIDB4YWIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHgwLCAweGFkLCAweDAsIDB4YWUsIDB4MCwgMHhhZiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDAsIDB4MjMsIDB4MCwgMHgyNCwgMHgwLCAweGIxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4MCwgMHgyNiwgMHgwLCAweGIyLCAweDAsIDB4YjMsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHgwLCAweGI1LCAweDAsIDB4OWEsIDB4MSwgMHg4NywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDAsIDB4MjgsIDB4MSwgMHg4OCwgMHgwLCAweDI5LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4MSwgMHg4OSwgMHgwLCAweGI2LCAweDAsIDB4YjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHgxLCAweDhhLCAweDAsIDB4YjksIDB4MCwgMHgyYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDAsIDB4MmQsIDB4MCwgMHg4YywgMHgwLCAweDJlLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4MCwgMHhiYSwgMHgwLCAweDMwLCAweDAsIDB4OGUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHgwLCAweGJjLCAweDAsIDB4YmQsIDB4MCwgMHhiZSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDAsIDB4YmYsIDB4MCwgMHgzMSwgMHgwLCAweDMyLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4MCwgMHgzNCwgMHgwLCAweGMwLCAweDEsIDB4OGIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHgwLCAweDlkLCAweDAsIDB4MzYsIDB4MCwgMHhjMSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDAsIDB4YzMsIDB4MCwgMHhjNCwgMHgwLCAweDM3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4MCwgMHgzOSwgMHgwLCAweDNhLCAweDAsIDB4YzUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHgwLCAweDNiLCAweDAsIDB4YzcsIDB4MCwgMHg0MiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDAsIDB4YzksIDB4MCwgMHg3ZCwgMHgwLCAweGNhLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MCwgMHhjYiwgMHgwLCAweDcsIDB4MCwgMHhjYywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDEsIDB4OGQsIDB4MSwgMHg4ZSwgMHgxLCAweDhmLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MCwgMHgzZiwgMHgwLCAweDVmLCAweDAsIDB4YiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDAsIDB4Y2QsIDB4MCwgMHg0MywgMHgwLCAweDNkLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4MCwgMHg1YywgMHgwLCAweDVlLCAweDAsIDB4M2MsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHgwLCAweDgxLCAweDAsIDB4YTAsIDB4MCwgMHg3NCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDAsIDB4ODgsIDB4MCwgMHhjZSwgMHgwLCAweDg1LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4MCwgMHg3ZSwgMHgwLCAweDFiLCAweDAsIDB4ZCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDAsIDB4NjcsIDB4MCwgMHg0NSwgMHgwLCAweDcwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4MCwgMHhhMSwgMHgwLCAweDgzLCAweDAsIDB4OWYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDAsIDB4ODIsIDB4MCwgMHg5MSwgMHgwLCAweDQ2LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4MCwgMHhkMCwgMHgwLCAweGQxLCAweDAsIDB4ZDIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHgwLCAweDc5LCAweDAsIDB4ODksIDB4MCwgMHg2ZiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDAsIDB4YTcsIDB4MCwgMHgyLCAweDAsIDB4NjAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHgwLCAweDZkLCAweDAsIDB4MTYsIDB4MCwgMHg2ZSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDAsIDB4MTUsIDB4MCwgMHg2MywgMHgwLCAweDQ4LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4MCwgMHg5NSwgMHgwLCAweDdjLCAweDAsIDB4MWYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHgwLCAweDc4LCAweDAsIDB4NmIsIDB4MCwgMHg2YywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDAsIDB4ODYsIDB4MCwgMHhlLCAweDAsIDB4NGEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHgwLCAweGQ0LCAweDAsIDB4ZDUsIDB4MCwgMHhkNiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDAsIDB4NGIsIDB4MCwgMHg0YywgMHgwLCAweDRkLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MSwgMHg5MywgMHgwLCAweDk3LCAweDAsIDB4OTIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHgwLCAweDgwLCAweDAsIDB4YTYsIDB4MCwgMHg5OCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDAsIDB4NGYsIDB4MCwgMHgxYSwgMHgwLCAweGQ3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgwLCAweDUwLCAweDAsIDB4ZDgsIDB4MCwgMHhkOSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDAsIDB4OTQsIDB4MCwgMHg4NywgMHgwLCAweGRiLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MCwgMHg5YiwgMHgwLCAweDllLCAweDAsIDB4OTYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHgwLCAweDhmLCAweDAsIDB4OTMsIDB4MCwgMHhkYywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDAsIDB4NzMsIDB4MCwgMHg5LCAweDAsIDB4YSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MCwgMHhmLCAweDAsIDB4NzIsIDB4MCwgMHg3YSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4MCwgMHg5YywgMHgxLCAweDk0LCAweDAsIDB4NTIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgwLCAweDdiLCAweDAsIDB4MywgMHgwLCAweDc2LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4MCwgMHg3NywgMHgwLCAweDQxLCAweDAsIDB4OCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDAsIDB4NjgsIDB4MCwgMHg1MywgMHgwLCAweGE1LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MCwgMHg1NCwgMHgwLCAweGRkLCAweDEsIDB4OTUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgwLCAweDFjLCAweDAsIDB4MTgsIDB4MCwgMHgxNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDAsIDB4MSwgMHgwLCAweDYyLCAweDAsIDB4NTUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHgwLCAweDE0LCAweDAsIDB4YTMsIDB4MCwgMHhhOSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDAsIDB4OTksIDB4MCwgMHgxMywgMHgwLCAweGE0LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4MCwgMHhkZSwgMHgwLCAweGRmLCAweDAsIDB4ZTAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHgwLCAweDQwLCAweDAsIDB4NTcsIDB4MCwgMHg1OCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDAsIDB4NWEsIDB4MCwgMHhlMiwgMHgwLCAweGUzLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4MCwgMHg1YiwgMHgwLCAweGU0LCAweDAsIDB4MTEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHgyLCAweDAsIDB4MSwgMHgwLCAweDIsIDB4MCwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGMxLCAweDAsIDB4ZGMsIDB4MSwgMHgyLCAweDEsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg0MCwgMHgxLCAweDc2LCAweDEsIDB4YmYsIDB4MiwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDc4LCAweDIsIDB4ZmUsIDB4MywgMHgzNywgMHgzLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YTEsIDB4MywgMHhjOSwgMHgzLCAweGVkLCAweDQsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg2ZSwgMHg0LCAweGYwLCAweDUsIDB4M2EsIDB4NSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDgsIDB4NiwgMHg1ZSwgMHg2LCAweDgzLCAweDYsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNCwgMHg3LCAweDFkLCAweDcsIDB4MzgsIDB4NywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDg0LCAweDcsIDB4YzEsIDB4OCwgMHgxOSwgMHg4LCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ODUsIDB4OCwgMHhjOSwgMHg4LCAweGY4LCAweDksIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHhiNiwgMHhhLCAweDM2LCAweGEsIDB4NTIsIDB4YSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDlhLCAweGEsIDB4YmIsIDB4YiwgMHgzYywgMHhiLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZDAsIDB4YywgMHg0OCwgMHhjLCAweGE3LCAweGQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHg4YiwgMHhlLCAweDJiLCAweGUsIDB4NWMsIDB4ZSwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweDE3LCAweGYsIDB4MzMsIDB4ZiwgMHg1OSwgMHhmLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4OWEsIDB4ZiwgMHhjYiwgMHgxMCwgMHhkLCAweDEwLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDhmLCAweDEwLCAweGUwLCAweDExLCAweDRiLCAweDExLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweGNlLCAweDEyLCAweDQ4LCAweDEyLCAweDY3LCAweDEyLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGFmLCAweDEyLCAweGRkLCAweDEzLCAweDg4LCAweDEzLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDI5LCAweDE0LCAweDYyLCAweDE0LCAweDgzLCAweDE0LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweGMzLCAweDE0LCAweGRjLCAweDE1LCAweDAsIDB4MTUsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4N2UsIDB4MTUsIDB4YWQsIDB4MTYsIDB4NGMsIDB4MTYsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4OCwgMHgxNywgMHgyMSwgMHgxNywgMHgzYiwgMHgxNywgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHgyYywgMHgxOCwgMHg0YywgMHgxOCwgMHg3MCwgMHgxOCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhiZCwgMHgxOCwgMHhkZSwgMHgxOSwgMHgyOSwgMHgxOSwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhjMiwgMHgxOSwgMHhmZSwgMHgxYSwgMHg1ZCwgMHgxYSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhiNSwgMHgxYSwgMHhkMywgMHgxYiwgMHg1YSwgMHgxYiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHgzOSwgMHgxYywgMHg2YSwgMHgxYywgMHhhZiwgMHgxYywgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHgxNSwgMHgxZCwgMHgzZiwgMHgxZCwgMHhkNSwgMHgxZCwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhkLCAweDFlLCAweDVkLCAweDFlLCAweDczLCAweDFlLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGMwLCAweDFlLCAweGU5LCAweDFmLCAweDYzLCAweDFmLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDllLCAweDFmLCAweGI0LCAweDFmLCAweGQ5LCAweDIwLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDdkLCAweDIwLCAweGFkLCAweDIwLCAweGZmLCAweDIxLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGE5LCAweDIyLCAweDksIDB4MjIsIDB4NmQsIDB4MjIsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4YmYsIDB4MjMsIDB4MmYsIDB4MjMsIDB4YTksIDB4MjQsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4NGMsIDB4MjQsIDB4NmMsIDB4MjQsIDB4ODUsIDB4MjQsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4ZGUsIDB4MjQsIDB4ZjksIDB4MjUsIDB4NGQsIDB4MjUsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4OGQsIDB4MjUsIDB4YzEsIDB4MjUsIDB4ZGEsIDB4MjUsIDB4ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4MjcsIDB4MjYsIDB4NDAsIDB4MjYsIDB4YjAsIDB4MjYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4NDUsIDB4MjcsIDB4NjcsIDB4MjcsIDB4ODcsIDB4MjcsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4YSwgMHgyOCwgMHg0NCwgMHgyOCwgMHhjNiwgMHgyOCwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHhlYiwgMHgyOSwgMHgzZCwgMHgyOSwgMHg2YSwgMHgyOSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHgyNSwgMHgyYSwgMHhjMCwgMHgyYiwgMHgyZCwgMHgyYiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg4NiwgMHgyYiwgMHhiMCwgMHgyYiwgMHhjOSwgMHgyYywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg3OCwgMHgyYywgMHg4ZiwgMHgyYywgMHhiMiwgMHgyZCwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg5ZSwgMHgyZCwgMHhjNiwgMHgyZSwgMHgyZiwgMHgyZSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhlOCwgMHgyZiwgMHgzMiwgMHgyZiwgMHg5MiwgMHgyZiwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhmZiwgMHgzMCwgMHgzMiwgMHgzMCwgMHg2MCwgMHgzMCwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHhhMCwgMHgzMCwgMHhlZCwgMHgzMSwgMHgxYywgMHgzMSwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhjYSwgMHgzMiwgMHgyNiwgMHgzMiwgMHg4MSwgMHgzMiwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHg0LCAweDMzLCAweDI1LCAweDMzLCAweDQ2LCAweDMzLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDgyLCAweDMzLCAweDllLCAweDMzLCAweGI3LCAweDMzLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGQsIDB4MzQsIDB4OTcsIDB4MzQsIDB4Y2UsIDB4MzUsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4Y2EsIDB4MzYsIDB4NzMsIDB4MzcsIDB4ZSwgMHgzNywgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHg2NSwgMHgzNywgMHhjOCwgMHgzNywgMHhkZCwgMHgzNywgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHgyZiwgMHgzOCwgMHg3ZCwgMHgzOCwgMHhlNCwgMHgzOSwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhmMCwgMHgzYSwgMHg1MSwgMHgzYSwgMHg5NCwgMHgzYSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHgzYSwgMHgzYiwgMHg4OCwgMHgzYiwgMHhkZSwgMHgzYiwgMHhmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHgyNiwgMHgzYywgMHg0YSwgMHgzYywgMHg2MSwgMHgzYywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhhMSwgMHgzYywgMHhlMSwgMHgzZCwgMHgyYywgMHgzZCwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhiYSwgMHgzZSwgMHhlLCAweDNlLCAweDc2LCAweDNlLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDAsIDB4M2YsIDB4NDIsIDB4ZSwgMHg4YiwgMHhlNiwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhmNywgMHg2OCwgMHhlNiwgMHgxLCAweDYzLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDM0LCAweGEsIDB4MzEsIDB4NiwgMHhiYSwgMHhkOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgyLCAweDYsIDB4OWUsIDB4M2UsIDB4NSwgMHgzNCwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDhhLCAweDQyLCAweGEsIDB4NTAsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGY4LCAweDZiLCAweDUsIDB4ZmIsIDB4OTIsIDB4NGIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNSwgMHg2LCAweGZiLCAweDhkLCAweDdkLCAweGEsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg5ZSwgMHhmNywgMHgzYywgMHgxNSwgMHhmNywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQxLCAweGI1LCAweGZiLCAweDQxLCAweDUsIDB4ZSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHgzMSwgMHhmNywgMHg0MCwgMHg3ZSwgMHhlNiwgMHg1MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg5MywgMHhmNywgMHg0MSwgMHgzMSwgMHhlNSwgMHgxMiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhmYiwgMHhhLCAweDE2LCAweGY3LCAweDg1LCAweDYsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4NSwgMHgzZCwgMHg2LCAweGI4LCAweGQwLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg2LCAweDZhLCAweGZiLCAweDMzLCAweDUsIDB4ZjcsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHg1OCwgMHhhZiwgMHhmNywgMHg0MCwgMHg1LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MTMsIDB4OTQsIDB4N2EsIDB4MzksIDB4NSwgMHhmYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGFiLCAweGY3LCAweDJjLCAweDUsIDB4YjEsIDB4NiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg1YywgMHhhLCAweGIzLCAweGY3LCAweDUwLCAweDUsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4MiwgMHg1YSwgMHg1LCAweDY0LCAweDYsIDB4YTgsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgxZSwgMHg2LCAweDEzLCAweGE4LCAweDdhLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGEsIDB4YWYsIDB4ZjcsIDB4NDEsIDB4NSwgMHhmYywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGE0LCAweDc3LCAweDMxLCAweDUsIDB4ZTgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4ZSwgMHhmYywgMHgxMiwgMHg1LCAweDRhLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4ZjcsIDB4MzQsIDB4MTUsIDB4ZjUsIDB4ZjcsIDB4MzksIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzksIDB4NSwgMHhlLCAweDQwLCAweGEsIDB4ZjcsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHhiNiwgMHhmOCwgMHhmMywgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHhkNSwgMHg3NywgMHhmMiwgMHhmYiwgMHhlNCwgMHhmYiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4YzIsIDB4ZmQsIDB4MmUsIDB4MjMsIDB4YSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDc2LCAweDc3LCAweDEsIDB4ZjcsIDB4OTEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4MTUsIDB4ZjcsIDB4NDIsIDB4ZjcsIDB4NCwgMHhmNywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0LCAweGNkLCAweGFlLCAweGZiLCAweDE2LCAweGY3LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGEsIDB4ZmIsIDB4NTUsIDB4ZmIsIDB4MjIsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhmZCwgMHgxMiwgMHgyMywgMHhhLCAweDQwLCAweGEsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZSwgMHgxLCAweGY4LCAweDU3LCAweGY5LCAweDYsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhNSwgMHhmNywgMHhlLCAweDUsIDB4ZmIsIDB4NCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY2LCAweGZiLCAweGUsIDB4NWEsIDB4YSwgMHhhNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDRjLCAweGEsIDB4ZmIsIDB4ZDAsIDB4ZmQsIDB4ODAsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg0MCwgMHhhLCAweGY3LCAweDdhLCAweDc3LCAweDEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MjAsIDB4YSwgMHhmYiwgMHgzMSwgMHhmOCwgMHg0NCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjMiwgMHgzYSwgMHhiMiwgMHhjNSwgMHhmYiwgMHhhNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDUsIDB4ZSwgMHg0MCwgMHhhLCAweGJhLCAweGY3LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4ZDEsIDB4ZjksIDB4M2YsIDB4MTUsIDB4NWQsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4YmYsIDB4Y2UsIDB4YzcsIDB4YzEsIDB4YzksIDB4YmEsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4NTcsIDB4NGQsIDB4NDksIDB4NTgsIDB4NDgsIDB4MWUsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MTUsIDB4YTUsIDB4OWUsIDB4OWYsIDB4YTgsIDB4OWUsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NzksIDB4NzMsIDB4NzAsIDB4NzcsIDB4NzUsIDB4NzksIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4OWIsIDB4MWUsIDB4ZmMsIDB4MjksIDB4ZmQsIDB4NDksIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg0MCwgMHhhLCAweGM1LCAweDc3LCAweGY3LCAweDNiLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NTAsIDB4ZjksIDB4MTAsIDB4MTUsIDB4ZDYsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhhZSwgMHhhMSwgMHg5YywgMHhhNSwgMHhhNiwgMHgxYiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg3ZCwgMHg3ZCwgMHg5ZiwgMHgxZiwgMHg3YiwgMHhhMSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHhhYSwgMHgxYiwgMHhkMywgMHhjNiwgMHhjNiwgMHhjYSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgzZiwgMHhhNCwgMHg1LCAweDc2LCAweDgwLCAweDc1LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDFiLCAweDdhLCAweDdiLCAweDkzLCAweDk2LCAweDdiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDcwLCAweDcwLCAweGEyLCAweDY5LCAweDFiLCAweDNkLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDU2LCAweDczLCAweDFmLCAweGZiLCAweDY1LCAweGZkLCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGEsIDB4OGIsIDB4ZTYsIDB4ZjcsIDB4MzYsIDB4ZTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZTYsIDB4MTIsIDB4ZjgsIDB4NjQsIDB4ZWQsIDB4M2MsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjAsIDB4NzcsIDB4MTYsIDB4ZjcsIDB4ZWUsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmNCwgMHhkYywgMHhlZCwgMHgxZiwgMHg4YywgMHhiMSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg2YSwgMHhhMSwgMHg2ZSwgMHg5ZSwgMHgxOCwgMHgxMywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhhYiwgMHhiMCwgMHhiMSwgMHhjZSwgMHgxYSwgMHhjOSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhmYiwgMHgxZiwgMHgxZSwgMHhmYiwgMHhjNiwgMHgzNiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDc0LCAweGEsIDB4MzksIDB4NiwgMHhmNywgMHg3OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHgxNSwgMHhhOCwgMHhmNywgMHgxMywgMHg1LCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YzgsIDB4YTMsIDB4NzAsIDB4NzEsIDB4OGMsIDB4MWYsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4ODgsIDB4NzEsIDB4MWUsIDB4ZmIsIDB4NDMsIDB4ZmIsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YWEsIDB4ZjcsIDB4MzYsIDB4NSwgMHhmNiwgMHg2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweGIzLCAweGY3LCAweDAsIDB4ODAsIDB4NGQsIDB4NGYsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NmQsIDB4MWYsIDB4ZSwgMHg3OSwgMHhlOCwgMHhmOCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHgxLCAweGE5LCAweGVjLCAweDMsIDB4ZjgsIDB4N2EsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTUsIDB4NzYsIDB4NjUsIDB4MzgsIDB4NjEsIDB4MzksIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MCwgMHg1YiwgMHhjYiwgMHhkYiwgMHhmNywgMHg0MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhkNywgMHhlNywgMHhjMiwgMHhiYywgMHg3NywgMHg2ZiwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3NiwgMHgyMiwgMHg1LCAweGVhLCAweDYsIDB4YmMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4N2EsIDB4YSwgMHg4MywgMHg2MCwgMHg1LCAweDk2LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGFiLCAweDM0LCAweDFiLCAweGZiLCAweDRkLCAweGZiLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI1LCAweGZiLCAweDU5LCAweGZiLCAweDIsIDB4YzAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4NGMsIDB4YjQsIDB4ZjcsIDB4MTYsIDB4OWQsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4MWYsIDB4ZSwgMHhmYiwgMHg0ZCwgMHg3NiwgMHhmNywgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhmOCwgMHgxOSwgMHhlNywgMHg4YywgMHg3NywgMHgxMiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHgxMywgMHhlOCwgMHhmNywgMHgwLCAweGZiLCAweDQ2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGE3LCAweGEwLCAweDg5LCAweGEwLCAweDFiLCAweGM5LCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGQ1LCAweGExLCAweDg0LCAweGFkLCAweDY0LCAweDk0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDk4LCAweDUsIDB4ZTgsIDB4ZDcsIDB4YmEsIDB4YjMsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NjAsIDB4Y2YsIDB4NSwgMHg3MiwgMHg1YiwgMHg0MiwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHgxYiwgMHhmYiwgMHgxZCwgMHg3NSwgMHhlZCwgMHhkNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmNywgMHgyZSwgMHhjYiwgMHhlMCwgMHhjMSwgMHhiYSwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhiMCwgMHgxZiwgMHg3NiwgMHgyNCwgMHg1LCAweGViLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDgsIDB4YmMsIDB4ZjcsIDB4ODUsIDB4N2EsIDB4YSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg1LCAweDEzLCAweGU4LCAweGE0LCAweDZmLCAweDU4LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDFiLCAweGZiLCAweDQyLCAweGZiLCAweDRhLCAweDI1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGZiLCAweDgsIDB4ZDYsIDB4MmUsIDB4ZjcsIDB4MSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3MCwgMHgyZSwgMHg1LCAweDhlLCAweDk1LCAweDllLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDFiLCAweDk0LCAweDk1LCAweDg1LCAweDgwLCAweDdmLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDdjLCAweDgwLCAweDdkLCAweDhmLCAweDk1LCAweDdjLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4M2EsIDB4YSwgMHhmOCwgMHg3OCwgMHhlYiwgMHgzLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweGEyLCAweDYsIDB4ZjcsIDB4NTcsIDB4ZjcsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4ZjcsIDB4OTEsIDB4ZjcsIDB4YywgMHg0MCwgMHhkZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHgxZiwgMHhmYiwgMHhiYywgMHgzNiwgMHhhLCAweGRmLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzgsIDB4NiwgMHhmNywgMHg0OCwgMHgxNiwgMHhkYSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg1LCAweGY3LCAweGIsIDB4NiwgMHhlYSwgMHhiOSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHhmYiwgMHgyOCwgMHgyZCwgMHhmYiwgMHg1LCAweGZiLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4OGIsIDB4ZTYsIDB4ZDYsIDB4ZjcsIDB4MzksIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjcsIDB4MjAsIDB4ZTYsIDB4MTIsIDB4MTMsIDB4YjAsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjgsIDB4YTQsIDB4NiwgMHhiNSwgMHhmNywgMHg1OSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDczLCAweDIxLCAweDUsIDB4ZmIsIDB4OWEsIDB4NiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYSwgMHg1LCAweGY3LCAweDEwLCAweDYsIDB4MTMsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NDAsIDB4NTYsIDB4YSwgMHhiYywgMHhmNywgMHg4NCwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDdjLCAweDQwLCAweDUsIDB4ZmIsIDB4ZSwgMHg2LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGEsIDB4ZjcsIDB4OWEsIDB4NiwgMHg3NiwgMHgyNSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIzLCAweGY3LCAweDU1LCAweDUsIDB4ZmMsIDB4YTIsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkMSwgMHg3NCwgMHhhLCAweDQzLCAweDYsIDB4ZSwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDdhLCAweDc3LCAweDEyLCAweDEzLCAweGI4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGY4LCAweGYzLCAweDE1LCAweGY3LCAweGU0LCAweGQ1LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweGZiLCAweGQ5LCAweGZiLCAweGEsIDB4NSwgMHhmYiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHgyZSwgMHgyOCwgMHhhLCAweDU0LCAweGEsIDB4ZjcsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4MTMsIDB4YjgsIDB4ZjcsIDB4NzMsIDB4ZjgsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4NDQsIDB4ZjcsIDB4NCwgMHhmNywgMHgxMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGNmLCAweGFlLCAweGZiLCAweDE4LCAweGY3LCAweDIzLCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NTgsIDB4ZmIsIDB4MjIsIDB4NSwgMHhmYiwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHgxMiwgMHgyOCwgMHhhLCAweDU0LCAweGEsIDB4ZDQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHgxMiwgMHgxMywgMHhiOCwgMHhmOCwgMHgzNCwgMHhmOSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGEsIDB4YTUsIDB4ZjcsIDB4ZCwgMHg0YywgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGZiLCAweGQsIDB4NmQsIDB4YSwgMHhhNSwgMHhmNywgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweGEsIDB4ZmIsIDB4YWMsIDB4ZmQsIDB4ODAsIDB4MjgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhlNSwgMHhmNywgMHgyNywgMHhlNCwgMHhhMSwgMHg4YiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGVhLCAweGY3LCAweDE0LCAweGVkLCAweGJkLCAweGViLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4MTYsIDB4MzMsIDB4YSwgMHgyYSwgMHhhLCAweGY3LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGU0LCAweDE1LCAweGY3LCAweGMwLCAweDQwLCAweGIxLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGE1LCAweGY3LCAweGIsIDB4NSwgMHhlLCAweDhiLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMwLCAweGNlLCAweGY3LCAweDMxLCAweGU2LCAweDEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4ZWUsIDB4MywgMHg3MCwgMHgxNiwgMHhmNywgMHhhMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM2LCAweGY3LCAweDU0LCAweGYzLCAweGY3LCAweDhmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4NGMsIDB4ZTEsIDB4ZmIsIDB4MjgsIDB4MWYsIDB4ZmIsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4YSwgMHhkZSwgMHg2LCAweDZhLCAweGZiLCAweDMxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NiwgMHg3ZSwgMHg0OCwgMHg1LCAweGM4LCAweDYsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzAsIDB4NSwgMHgzOCwgMHg2LCAweGY3LCAweDQ4LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGY3LCAweDMwLCAweDUsIDB4ZjcsIDB4MTIsIDB4NiwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHg1LCAweGZiLCAweDEyLCAweDYsIDB4YWEsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHhjLCAweDYsIDB4ZWMsIDB4YWEsIDB4NTcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjgsIDB4MzksIDB4ZmIsIDB4MSwgMHhmYiwgMHgzMywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDhiLCAweGRkLCAweGU5LCAweGQzLCAweGMxLCAweGQzLCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDEsIDB4ZjgsIDB4N2IsIDB4ZTQsIDB4MywgMHg3NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHgxNSwgMHhlNywgMHg2LCAweDIzLCAweDkxLCAweGNhLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweDFiLCAweGIyLCAweGY3LCAweDUsIDB4OWUsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4MWYsIDB4NjEsIDB4YzgsIDB4NSwgMHg3NywgMHg2OCwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgzZCwgMHgxYiwgMHg0NSwgMHg1YSwgMHhhOSwgMHhjYiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHgzMiwgMHg2LCAweGIyLCAweGQzLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4NiwgMHg4YywgMHg5YiwgMHg4ZiwgMHhhMywgMHg5MCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGY3LCAweDZhLCAweDYsIDB4YjMsIDB4ZDMsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg2LCAweGNkLCAweGFlLCAweGM3LCAweGIzLCAweGRkLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGJlLCAweDZmLCAweDZhLCAweDk4LCAweDFmLCAweDdlLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZTQsIDB4NiwgMHhiNywgMHhmNywgMHg2NiwgMHg1LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODEsIDB4NWMsIDB4NSwgMHhhYSwgMHg2YywgMHg1OSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHgxYiwgMHhmYiwgMHgxMCwgMHgyMiwgMHg0MCwgMHhmYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDFmLCAweDQ4LCAweDYsIDB4NjMsIDB4NDMsIDB4NSwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDg1LCAweDcxLCAweDg5LCAweDc5LCAweDhhLCAweDgxLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NiwgMHhlLCAweDhiLCAweGU2LCAweGRmLCAweGY3LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIxLCAweGU2LCAweDEsIDB4ZDgsIDB4ZWMsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ZDUsIDB4ZWQsIDB4MywgMHg3NSwgMHgxNiwgMHhmNywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDlmLCAweGU2LCAweDUsIDB4ZmIsIDB4MTcsIDB4NiwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyOCwgMHg1LCAweGY3LCAweDYsIDB4NiwgMHg3ZSwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhhLCAweGI5LCAweGY3LCAweDcwLCAweDRlLCAweGEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4NjUsIDB4YSwgMHhhOSwgMHhmNywgMHgyMSwgMHg4OCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGZiLCAweDEyLCAweDU2LCAweGEsIDB4YjksIDB4ZjcsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYywgMHhhMiwgMHg0YiwgMHhhLCAweGRhLCAweDYsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4YSwgMHgzYiwgMHg2LCAweGUsIDB4NzksIDB4ZTgsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4ZjcsIDB4NTYsIDB4ZTUsIDB4MSwgMHg5ZiwgMHhlZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE3LCAweGY3LCAweDQ5LCAweDE1LCAweGY3LCAweDMyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4M2YsIDB4NSwgMHg3OCwgMHg2NSwgMHg1NiwgMHg4MCwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgzYSwgMHgzZiwgMHhiMSwgMHhlYiwgMHhmNywgMHgzMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGY0LCAweGY3LCAweDksIDB4YzksIDB4YWEsIDB4ODcsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MWYsIDB4NzcsIDB4MmQsIDB4OTYsIDB4YSwgMHhiYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg2NiwgMHhhLCAweDgyLCAweDY1LCAweDUsIDB4YTEsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4OWIsIDB4NDEsIDB4MWIsIDB4ZmIsIDB4MzgsIDB4ZmIsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjMsIDB4ZmIsIDB4NjQsIDB4ZmIsIDB4MmIsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhmNywgMHgxZiwgMHhlYiwgMHhmNywgMHg1LCAweGI2LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDFmLCAweGE3LCAweGY3LCAweDI3LCAweDUsIDB4YmEsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHhjMSwgMHg2LCAweGUsIDB4NzksIDB4ZTIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4YTYsIDB4ZTMsIDB4NzAsIDB4Y2QsIDB4ZjcsIDB4NzAsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4OGIsIDB4ZWUsIDB4MTMsIDB4ZWMsIDB4ZjcsIDB4OTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4MTUsIDB4ZjcsIDB4MzIsIDB4NiwgMHg3YywgMHg0NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDY3LCAweDU5LCAweDgwLCAweDVhLCAweDFiLCAweDM3LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGU4LCAweGY3LCAweDI5LCAweGY3LCAweGMsIDB4ZjcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5LCAweGM5LCAweGFhLCAweDc4LCAweDZmLCAweGI5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRjLCAweDc3LCAweDM0LCAweDk2LCAweGEsIDB4YmEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NjYsIDB4YSwgMHg4MiwgMHg2MCwgMHg1LCAweGEyLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDlmLCAweDQxLCAweDFiLCAweGZiLCAweDQyLCAweGZiLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJhLCAweGZiLCAweDU3LCAweGZiLCAweDIxLCAweGY3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4ZjcsIDB4MWYsIDB4ZWIsIDB4ZjcsIDB4NSwgMHhiMywgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHgxZiwgMHhhNywgMHhmNywgMHgxZCwgMHg1LCAweGJhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4ZTMsIDB4NSwgMHhmYiwgMHhjMSwgMHg2LCAweGFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDQ4LCAweGEsIDB4OGIsIDB4ZTYsIDB4ZjcsIDB4MjMsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4ZTYsIDB4MSwgMHhjNCwgMHhlOSwgMHhmNywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHgzLCAweDY0LCAweDE2LCAweGY3LCAweDkwLCAweDM0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4NiwgMHhhOCwgMHhmNywgMHgyMywgMHg1LCAweGY3LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NmUsIDB4ZmIsIDB4MjMsIDB4NSwgMHgzYiwgMHg2LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDUsIDB4ZjcsIDB4OGYsIDB4MzQsIDB4YSwgMHgzZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGY4LCAweDEwLCAweDUsIDB4ZDksIDB4NDIsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHgzNiwgMHhhLCAweGRiLCAweDYsIDB4NmQsIDB4ZmIsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg3MiwgMHg2LCAweGE5LCAweGY3LCAweDI2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4NiwgMHg5ZCwgMHhlNiwgMHg1LCAweGZiLCAweDkwLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZDgsIDB4NiwgMHgzZiwgMHg3ZCwgMHhhLCAweDNkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgzYSwgMHhhLCAweGY3LCAweDY3LCAweGYwLCAweDMsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjgsIDB4NTQsIDB4NiwgMHg5ZiwgMHhlNiwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDYsIDB4ZGIsIDB4ZjgsIDB4MTAsIDB4NSwgMHhmNywgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhhLCAweGZjLCAweDUxLCAweDM2LCAweGEsIDB4ZjcsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgzYiwgMHhmYywgMHgxMCwgMHg0MywgMHhhLCAweDc5LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDIyLCAweGU2LCAweDEsIDB4NDEsIDB4NzksIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NiwgMHg5ZiwgMHhlNiwgMHg1LCAweDJlLCAweDYsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjIsIDB4NSwgMHhlNiwgMHgzNCwgMHhhLCAweGZiLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGEsIDB4ZGUsIDB4NiwgMHgzYiwgMHhmYywgMHgyMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDYsIDB4ZjcsIDB4ZDMsIDB4NzIsIDB4MTUsIDB4NzYsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NWUsIDB4ZTksIDB4MWIsIDB4ZjcsIDB4MWUsIDB4ODcsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhYywgMHg1YiwgMHhhLCAweGZiLCAweGE2LCAweDYsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4NSwgMHhmNywgMHgyNSwgMHg2LCAweDUzLCAweGZiLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NDAsIDB4N2MsIDB4ODQsIDB4NWMsIDB4NWUsIDB4MWIsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4OTcsIDB4OWUsIDB4OWQsIDB4OTEsIDB4YTMsIDB4OTEsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YTEsIDB4ZWMsIDB4NGUsIDB4YSwgMHhlLCAweDY4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTAsIDB4ZjgsIDB4ZjMsIDB4MTUsIDB4ZjcsIDB4ZGUsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZjIsIDB4ZmIsIDB4ZDMsIDB4ZmIsIDB4YSwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGZkLCAweDJlLCAweDE1LCAweDJiLCAweGEsIDB4ZSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDc2LCAweDc3LCAweDYyLCAweGEsIDB4ZjcsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZjAsIDB4MTUsIDB4ZjcsIDB4NDksIDB4ZjcsIDB4MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDIsIDB4Y2YsIDB4YWUsIDB4ZmIsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4NjYsIDB4YSwgMHhmYiwgMHg1NiwgMHhmYiwgMHgyMCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI0LCAweGZkLCAweDE0LCAweDE1LCAweDJiLCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhhLCAweGQyLCAweGY3LCAweGYsIDB4NjIsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhmOSwgMHg1LCAweDRhLCAweGEsIDB4ZmIsIDB4NjksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHg0YSwgMHhhLCAweGZiLCAweDg0LCAweGZkLCAweDgwLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGEsIDB4ZSwgMHg4YiwgMHhlMywgMHhmOCwgMHgyLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGY3LCAweGYsIDB4NjIsIDB4YSwgMHhmNywgMHhjYSwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDRhLCAweGEsIDB4ZmIsIDB4ZDQsIDB4ZmQsIDB4ODAsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NTUsIDB4NiwgMHg5ZSwgMHhlMywgMHg1LCAweGZiLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZGIsIDB4ZjgsIDB4MiwgMHg1LCAweGY3LCAweDNlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZTMsIDB4NSwgMHhmYywgMHg1MSwgMHg2LCAweDc4LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4NDEsIDB4NiwgMHgzYiwgMHhmYywgMHgyLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NjgsIDB4YSwgMHg5YywgMHgxNiwgMHgyYiwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweGY4LCAweGU2LCAweDE1LCAweGY3LCAweGM1LCAweDNlLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweGZiLCAweGFjLCAweGY3LCAweGIsIDB4NSwgMHhlLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGY4LCAweDIyLCAweGU3LCAweDEsIDB4OWEsIDB4ZWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4ZTgsIDB4MywgMHg2ZCwgMHhiYiwgMHgxNSwgMHg3NiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweDVlLCAweGU5LCAweDFiLCAweGY3LCAweDFlLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGEsIDB4ZjcsIDB4MTEsIDB4NWIsIDB4YSwgMHhmYywgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDc5LCAweDJmLCAweDUsIDB4ZjcsIDB4NGMsIDB4NiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhOCwgMHg1LCAweDQwLCAweDdjLCAweDY3LCAweDVjLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDQ1LCAweDUwLCAweGExLCAweGQ3LCAweDliLCAweDFmLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweDRlLCAweGEsIDB4ZSwgMHgzYSwgMHhhLCAweGNmLCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhlLCAweGY3LCAweDE3LCAweDMsIDB4NjgsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4MzQsIDB4YSwgMHgzOCwgMHg2LCAweGEwLCAweGYwLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDlmLCAweDcwLCAweGExLCAweDY2LCAweDlhLCAweDcxLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDU2LCAweGE2LCAweDU4LCAweDliLCAweDU4LCAweDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4MzQsIDB4YSwgMHgyMCwgMHg2LCAweDdiLCAweGI3LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDc1LCAweGI1LCAweDdlLCAweGE4LCAweDY2LCAweGMwLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGY3LCAweDY3LCAweGY3LCAweDNjLCAweDE4LCAweGQwLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4ODcsIDB4NmUsIDB4YSwgMHhiNywgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGZiLCAweDM2LCAweGFlLCAweGY3LCAweDM2LCAweDUsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4YSwgMHhmYiwgMHg5YywgMHg2ZSwgMHhhLCAweGRmLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzcsIDB4NiwgMHhlLCAweDNhLCAweGEsIDB4ZjcsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHgzLCAweDhkLCAweDE2LCAweGY4LCAweGI0LCAweDYsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTIsIDB4NSwgMHgyNywgMHg2LCAweDZiLCAweGZiLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4ODksIDB4NiwgMHhkZCwgMHhmOCwgMHgxMCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweDM0LCAweGEsIDB4ZmIsIDB4ZGQsIDB4MzYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHg2LCAweDNiLCAweDdkLCAweGEsIDB4MjYsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweGEsIDB4ZjcsIDB4ZSwgMHhlZCwgMHgzLCAweDhkLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGIxLCAweDYsIDB4YzIsIDB4ZjcsIDB4OWMsIDB4N2IsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHhmYiwgMHg0MSwgMHg1LCAweGZiLCAweDg2LCAweDYsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4ZjcsIDB4MzQsIDB4YjQsIDB4OWEsIDB4YzksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NjMsIDB4YWMsIDB4ZjcsIDB4MmUsIDB4NSwgMHhmNywgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhhLCAweGZiLCAweGRjLCAweDM2LCAweGEsIDB4ZjAsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHhmYiwgMHg0NywgMHgzMCwgMHg3NCwgMHg3ZiwgMHg0YiwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg2ZSwgMHhmYiwgMHgxZCwgMHg1LCAweDI2LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhhLCAweDRlLCAweDE2LCAweGY3LCAweDc3LCAweDM0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4NiwgMHhkYSwgMHhmNywgMHhjZSwgMHhjNSwgMHhmYiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGM3LCAweDYsIDB4ZjcsIDB4MmIsIDB4ZjcsIDB4YTQsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YzYsIDB4NSwgMHg0MSwgMHg2LCAweDdhLCAweDMwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzEsIDB4NDIsIDB4YSwgMHg1NSwgMHg2LCAweGM5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDUsIDB4ZGIsIDB4NDIsIDB4YSwgMHhmYiwgMHg2MSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMyLCAweGZiLCAweGI2LCAweDViLCAweGY3LCAweGI2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWYsIDB4NGIsIDB4YSwgMHhkNywgMHg2LCAweDJlLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NTMsIDB4NiwgMHhlLCAweDdmLCAweGU4LCAweGY4LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDEsIDB4NGYsIDB4N2YsIDB4MTUsIDB4ZjcsIDB4YTQsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgyOCwgMHg2LCAweGM5LCAweGY3LCAweGQxLCAweGY3LCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDJlLCAweDUsIDB4ZTcsIDB4NiwgMHhlYiwgMHhmOCwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhhLCAweGVhLCAweDYsIDB4NGUsIDB4ZmIsIDB4ZDAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4ZjgsIDB4MmQsIDB4N2UsIDB4YSwgMHhmYywgMHgxOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDYsIDB4ZSwgMHg3ZiwgMHhlNywgMHhmOCwgMHgxMywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhlMCwgMHg3MywgMHhkZiwgMHg4ZiwgMHg3NywgMHgxMiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHg0ZiwgMHg3ZiwgMHgxNSwgMHhmNywgMHhhNSwgMHg1YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDYsIDB4Y2EsIDB4ZjcsIDB4Y2QsIDB4ZjcsIDB4NGMsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4NSwgMHhlNSwgMHg2LCAweGVhLCAweGY4LCAweDZmLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZWIsIDB4NiwgMHg0ZSwgMHhmYiwgMHhjNiwgMHhmYiwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyMywgMHg3ZSwgMHhhLCAweGZjLCAweDEzLCAweDUsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg2MiwgMHhmOCwgMHhiZSwgMHgxNSwgMHhkYiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGFlLCAweGEwLCAweDllLCAweGE2LCAweGE3LCAweDFiLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDc5LCAweDdiLCAweGEzLCAweDFmLCAweDEzLCAweGU4LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGExLCAweDdlLCAweGE4LCAweDFiLCAweGQ2LCAweGNhLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGE2LCAweDFmLCAweDNjLCAweGE0LCAweDUsIDB4NzYsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NjAsIDB4NjcsIDB4MWIsIDB4NzcsIDB4NzksIDB4OTUsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4MWYsIDB4MTMsIDB4ZDAsIDB4OWMsIDB4NzIsIDB4NzAsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MWIsIDB4MzksIDB4NTIsIDB4NDgsIDB4NTUsIDB4NzEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3OSwgMHhlNywgMHhmOCwgMHgxZiwgMHhlOSwgMHgxLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweGY3LCAweGZmLCAweGVjLCAweDMsIDB4YTIsIDB4ZjcsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZmIsIDB4MjQsIDB4ZjMsIDB4NDYsIDB4ZjcsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHhmNywgMHgzMSwgMHhmNywgMHhlLCAweGY3LCAweDhkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NDUsIDB4ZTYsIDB4ZmIsIDB4MmQsIDB4ZmIsIDB4NWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4NDksIDB4ZmIsIDB4NGYsIDB4MWUsIDB4ZjEsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4YywgMHhkNCwgMHhmNywgMHgxZiwgMHhmNywgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweGIxLCAweDRkLCAweDQ2LCAweDIzLCAweDNlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGZiLCAweDJjLCAweDJmLCAweDYxLCAweGM5LCAweGQ1LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OGIsIDB4ZTYsIDB4MzAsIDB4ZjcsIDB4M2QsIDB4YTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4OTIsIDB4ZjcsIDB4NDIsIDB4MzAsIDB4ZTYsIDB4MTIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4MTMsIDB4YWMsIDB4ZjcsIDB4ZTIsIDB4ZTYsIDB4MTUsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4NSwgMHhhZiwgMHg2LCAweDgxLCAweDU4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4NiwgMHhiMSwgMHhmNywgMHg0ZiwgMHg1LCAweDQxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NWQsIDB4NSwgMHg2NSwgMHg2LCAweGE3LCAweGY3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MWEsIDB4NiwgMHgxMywgMHhiNCwgMHg3YiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGQ1LCAweDYsIDB4YWUsIDB4ZjcsIDB4NDIsIDB4NSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg2LCAweGZiLCAweDFlLCAweGZiLCAweDMwLCAweGZiLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4N2EsIDB4ZmIsIDB4MWMsIDB4ZTIsIDB4NDIsIDB4ZTQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MTYsIDB4NiwgMHgxMywgMHg3NCwgMHhhZSwgMHhmNywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDQwLCAweDYsIDB4MTMsIDB4YWMsIDB4N2EsIDB4M2QsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgyZSwgMHhmNywgMHgyNSwgMHgxNSwgMHhmNywgMHg4LCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIsIDB4ZjYsIDB4OTksIDB4YjIsIDB4OGEsIDB4NjYsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NTAsIDB4ZmIsIDB4YjksIDB4NSwgMHg1YywgMHg4MiwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3YSwgMHgxYiwgMHgzMCwgMHg2NCwgMHhjMywgMHhlNCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDc3LCAweGEsIDB4ZjcsIDB4NzEsIDB4NzcsIDB4NTgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZCwgMHhmOCwgMHhmMCwgMHgxNSwgMHhmNywgMHhlNCwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmMiwgMHhmYiwgMHhkNywgMHhmYiwgMHhkLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4ZmMsIDB4NjEsIDB4MjQsIDB4YSwgMHg3NywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDc3LCAweDU4LCAweGEsIDB4ZjcsIDB4M2YsIDB4ZjksIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YzAsIDB4NjYsIDB4ZjcsIDB4NDYsIDB4ZjMsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhjYywgMHhhZiwgMHhmYiwgMHgxNCwgMHhmNywgMHgyMywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDYsIDB4ZmIsIDB4ZWIsIDB4ZmMsIDB4ZDYsIDB4MjQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhhLCAweGM5LCAweGY3LCAweGYsIDB4NTgsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhmOSwgMHg1LCAweDVhLCAweGEsIDB4YTQsIDB4ZjcsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhhLCAweGZiLCAweDY1LCAweGZiLCAweGYsIDB4NWEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhmNywgMHhmLCAweDUsIDB4ZmIsIDB4NCwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGZjLCAweGI2LCAweDI0LCAweGEsIDB4NzksIDB4ZTQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4ZTYsIDB4MSwgMHg5ZSwgMHhmMSwgMHhmNywgMHhlZSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDgxLCAweGY5LCAweDNkLCAweDE1LCAweGY3LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGIyLCAweGM1LCAweGZiLCAweGE3LCAweGY3LCAweGMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiMCwgMHhmYywgMHhkYSwgMHgyNCwgMHhhLCAweDdjLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDc2LCAweGY4LCAweDkzLCAweGU2LCAweDhmLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGYyLCAweGY4LCAweDUsIDB4ZWIsIDB4MTMsIDB4NmMsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4MTUsIDB4YmYsIDB4NTksIDB4YzEsIDB4YmYsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg2ZCwgMHhiNSwgMHhiZSwgMHg3YywgMHhiZiwgMHgxYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhmNywgMHgxYywgMHhmNywgMHgyYywgMHhmNywgMHg3YiwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiMiwgMHg4MSwgMHhiMCwgMHg3YSwgMHhhYywgMHgxZSwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHg1NywgMHhiYiwgMHg1NiwgMHg1OCwgMHg1LCAweDEzLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDY4LCAweDU5LCAweDljLCAweDRjLCAweDFiLCAweGZiLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweGZiLCAweDZlLCAweGZiLCAweDJmLCAweDViLCAweDk3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDZhLCAweDFmLCAweGRkLCAweGRhLCAweDE1LCAweDgzLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGE1LCAweDhjLCAweGE1LCAweDgsIDB4ZjcsIDB4MywgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMywgMHhmNywgMHgxYiwgMHhiMywgMHhhYSwgMHg4MCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgxZSwgMHhmYiwgMHg5YiwgMHhmYiwgMHhmYSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhmNywgMHhiZCwgMHg1LCAweDkzLCAweDc4LCAweDhlLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDFhLCAweDI3LCAweDQxLCAweGZiLCAweDMzLCAweGZiLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDZjLCAweDk1LCAweDljLCAweDc2LCAweDFlLCAweGUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiYiwgMHhkZiwgMHhjYiwgMHg3NywgMHg1OCwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweGY5LCAweGYsIDB4MTUsIDB4ZDksIDB4NzEsIDB4YTAsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YTYsIDB4YTYsIDB4OGEsIDB4MTksIDB4YTQsIDB4OGEsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4OWIsIDB4ODAsIDB4OCwgMHg3YSwgMHhhMywgMHhhMCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHgxYiwgMHhkNSwgMHhjNiwgMHhjNiwgMHhjYiwgMHhhNiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHhhNCwgMHg1LCAweDc2LCAweDgwLCAweDczLCAweDYwLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDc0LCAweDdhLCAweDlhLCAweDlhLCAweDc2LCAweDFmLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDczLCAweDlhLCAweDY4LCAweDFiLCAweDNjLCAweDUzLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDcyLCAweDFmLCAweGZiLCAweDE5LCAweGZjLCAweDQ1LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4OGIsIDB4ZTcsIDB4ZTUsIDB4ZTYsIDB4ZjcsIDB4NTksIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmOCwgMHg3ZCwgMHhlZCwgMHgzLCAweDg0LCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDViLCAweGEsIDB4ZmIsIDB4MTUsIDB4NDYsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHg2LCAweGY3LCAweDNiLCAweGRmLCAweGU2LCAweGY3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGYzLCAweDhhLCAweDNhLCAweGMyLCAweGZiLCAweGEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YTgsIDB4NiwgMHg3OCwgMHgyZiwgMHg1LCAweGRlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4ZmMsIDB4ZSwgMHg1LCAweDM4LCAweDYsIDB4ZjcsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDksIDB4MTUsIDB4YjMsIDB4ZjcsIDB4NTksIDB4NSwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGM1LCAweGNiLCAweDczLCAweDUxLCAweDIwLCAweDJiLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDFmLCAweGUsIDB4ZmIsIDB4OSwgMHg3NiwgMHhjMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmOCwgMHgxMSwgMHhlNiwgMHgxLCAweGJhLCAweGVjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweGU5LCAweDMsIDB4ZDcsIDB4NDUsIDB4MTUsIDB4YTgsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhhYiwgMHhjYiwgMHhhOCwgMHhhMSwgMHhhZiwgMHgxYiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg3ZSwgMHg3ZSwgMHhhMiwgMHgxZiwgMHg3ZiwgMHhhMSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhhNywgMHgxYiwgMHhjMywgMHhhYywgMHhhNiwgMHhiOCwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg1ZiwgMHhjYSwgMHg1LCAweDY3LCAweDYwLCAweDdjLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFiLCAweDczLCAweDc2LCAweDliLCAweGEyLCAweDZmLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNmLCAweGI1LCAweGVkLCAweGY3LCAweDI4LCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGViLCAweDVlLCAweGY3LCAweDE2LCAweGZiLCAweDNkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGZiLCAweDQzLCAweGZiLCAweDExLCAweGZiLCAweDZjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YmQsIDB4NDgsIDB4ZDQsIDB4NzMsIDB4MWUsIDB4NjksIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5MywgMHhmNywgMHg5NSwgMHgxNSwgMHhmNywgMHgzYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhkNCwgMHhkYiwgMHhlYywgMHhiNSwgMHg0MCwgMHgzYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmYiwgMHgxYywgMHgyOSwgMHgzNywgMHg0NywgMHg0MiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHgxZSwgMHhlLCAweDhiLCAweGU3LCAweGY3LCAweGUsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzgsIDB4ZTcsIDB4MSwgMHhmNSwgMHhlZCwgMHhmNywgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHgzLCAweDhlLCAweDE2LCAweGY3LCAweDk4LCAweDViLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4NiwgMHhhNCwgMHhmNywgMHhlLCAweDUsIDB4ZGQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHhmYiwgMHgyLCAweDlkLCAweDZhLCAweDliLCAweDY3LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDE5LCAweGY3LCAweDIyLCAweDViLCAweGEsIDB4M2MsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg5NywgMHhhLCAweGY3LCAweGEsIDB4OWQsIDB4YzksIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4MWEsIDB4ZTksIDB4M2IsIDB4YjYsIDB4MjYsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NiwgMHg3OCwgMHgyZiwgMHg4YSwgMHhhLCAweDNiLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NSwgMHgzNywgMHg2LCAweGY3LCAweDc3LCAweGY3LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGFkLCAweGY3LCAweDM4LCAweDUsIDB4ZjcsIDB4MTgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhjNSwgMHg4MywgMHg1YiwgMHgyYywgMHgyNSwgMHg3ZSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDc1LCAweGU5LCAweGY4LCAweDM0LCAweGU5LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweGY2LCAweGY3LCAweDgxLCAweGY0LCAweDEzLCAweGUwLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDE1LCAweGYyLCAweDYsIDB4OTUsIDB4YmEsIDB4NSwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhkYiwgMHg2NywgMHhkMiwgMHgxYiwgMHgxMywgMHg3MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhmMSwgMHhjMywgMHhmNywgMHgxZSwgMHhmNywgMHgzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDk5LCAweDMzLCAweDlkLCAweDFmLCAweDRjLCAweDk4LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGI0LCAweDFhLCAweGM3LCAweGNhLCAweGE1LCAweGVlLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDc2LCAweDdiLCAweGFjLCAweDFlLCAweDEzLCAweGUwLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDUsIDB4ZjIsIDB4NiwgMHhiOCwgMHhmNywgMHg2ZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweDYsIDB4ODUsIDB4NjksIDB4NSwgMHg5YiwgMHg2OSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg1ZiwgMHgxYiwgMHhmYiwgMHg0NSwgMHgyYywgMHg0MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDM0LCAweGYwLCAweDRkLCAweGVhLCAweDgxLCAweDFmLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGU5LCAweDgxLCAweDU1LCAweDFhLCAweDU4LCAweDRjLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDAsIDB4NTQsIDB4NWIsIDB4YTUsIDB4YTQsIDB4NjEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4Y2YsIDB4NSwgMHgyNCwgMHg2LCAweGUsIDB4NzUsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MmIsIDB4ZTYsIDB4MSwgMHhlNCwgMHhlZiwgMHhmNywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHgzLCAweDgyLCAweDc1LCAweDE1LCAweGVjLCAweDYsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NSwgMHg3OSwgMHg5ZiwgMHhiYywgMHg2ZiwgMHhkOCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYSwgMHhlYiwgMHhjYiwgMHhmNywgMHgzLCAweGY3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4YTUsIDB4MzEsIDB4OTgsIDB4MWYsIDB4NjIsIDB4OTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg5NSwgMHhjZCwgMHgxYSwgMHhiNSwgMHhjZCwgMHhiZSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhhZSwgMHg3NSwgMHg3YywgMHhhYSwgMHgxZSwgMHg3YywgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhhLCAweGI1LCAweGY3LCAweDY5LCAweDdhLCAweGEsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NSwgMHg5YSwgMHg2YiwgMHg2NiwgMHg5ZSwgMHg2MSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNiwgMHgyMiwgMHgzYywgMHhmYiwgMHgxMywgMHgzMSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhkYiwgMHg4MiwgMHgxZiwgMHhiZiwgMHg4NiwgMHhmNSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHgxYSwgMHg1OSwgMHg0NSwgMHg2OSwgMHgzNSwgMHg1NiwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhiMCwgMHg2MiwgMHgxZSwgMHg5NywgMHhjYiwgMHg3YSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIxLCAweGY4LCAweDNjLCAweDQ4LCAweGEsIDB4YTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4ZjcsIDB4YWEsIDB4ZTIsIDB4MSwgMHhlYSwgMHhmNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhmNCwgMHgzLCAweGY3LCAweDQyLCAweDJmLCAweDE1LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGEwLCAweDhmLCAweDllLCAweDFiLCAweDk0LCAweDk2LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDdlLCAweDdjLCAweDgwLCAweDdiLCAweDdmLCAweDdiLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDdhLCAweDFmLCAweDU5LCAweDRjLCAweDUsIDB4NmYsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4ODksIDB4YTIsIDB4MWIsIDB4ZDEsIDB4ZDEsIDB4YjksIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ODMsIDB4YjAsIDB4NjAsIDB4OTUsIDB4MWYsIDB4OTUsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHgzMCwgMHg5MywgMHhlMywgMHhjNiwgMHhlZSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHgzYywgMHhhNCwgMHgyYiwgMHg5NywgMHgxZSwgMHg1ZiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiLCAweDk0LCAweGNhLCAweDFhLCAweGI0LCAweGQzLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGI0LCAweGIxLCAweDc2LCAweDdkLCAweGFjLCAweDFlLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweDUsIDB4ZjIsIDB4NiwgMHhiOSwgMHhmNywgMHg1ZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDYsIDB4ODQsIDB4NmIsIDB4NSwgMHg5OSwgMHg2OCwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg1ZSwgMHgxYiwgMHhmYiwgMHg0MCwgMHhmYiwgMHg2LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGMsIDB4MzUsIDB4ZTAsIDB4NjcsIDB4ZTEsIDB4ODIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ODYsIDB4ZjcsIDB4NiwgMHg4MywgMHg1NCwgMHgxYSwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg2YiwgMHgyZiwgMHg1MywgMHg2MSwgMHg5OCwgMHhhZSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg5NywgMHhjOCwgMHg1LCAweDI1LCAweDYsIDB4NWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4NSwgMHhmMiwgMHg2LCAweDk2LCAweGI2LCAweDljLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDc4LCAweGMwLCAweDgzLCAweDE5LCAweGUsIDB4M2EsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHgxNiwgMHhmNywgMHhmMywgMHgzNCwgMHhhLCAweGZiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZDksIDB4ZjgsIDB4MTAsIDB4NSwgMHhmNywgMHgxNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGZiLCAweDUsIDB4NTYsIDB4YSwgMHhiNCwgMHhmNywgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZjLCAweGJiLCAweDYsIDB4NjIsIDB4ZmIsIDB4NjAsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhMywgMHhmNywgMHg1LCAweDUsIDB4ZjcsIDB4MTUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg3ZCwgMHhhLCAweGZiLCAweDE1LCAweDYsIDB4ZSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhiNCwgMHhlNSwgMHhmNywgMHg5LCAweGU1LCAweGI1LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4MjYsIDB4ZTAsIDB4ZjcsIDB4YTAsIDB4ZTEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHgxNiwgMHhmNywgMHhkNCwgMHg2LCAweDljLCAweGU2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHg2LCAweDkyLCAweGI0LCAweDUsIDB4ZjcsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDE0LCAweGYxLCAweGFmLCAweGY3LCAweDI4LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGExLCAweDM2LCAweDFmLCAweGZiLCAweDFlLCAweDYsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NSwgMHhmNywgMHhmLCAweDYsIDB4OWIsIDB4ZTYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkNCwgMHg2LCAweDdhLCAweDMwLCAweDUsIDB4ZjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDQ2LCAweDdkLCAweGEsIDB4ZmIsIDB4NywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGY3LCAweDE3LCAweDE1LCAweGExLCAweGY3LCAweDksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMCwgMHg2LCAweGFhLCAweGNmLCAweDhhLCAweDYwLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDkxLCAweDZjLCAweDFmLCAweGUsIDB4NzksIDB4ZTcsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZTcsIDB4MSwgMHhkNiwgMHhlYSwgMHhmNywgMHg4YSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDg0LCAweGY4LCAweDZhLCAweDE1LCAweGRkLCAweDYsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YTMsIDB4NSwgMHg4NywgMHg3NywgMHg4OCwgMHg3OSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmYiwgMHgxLCAweDhjLCAweGMyLCAweDU2LCAweGY3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGY3LCAweDE1LCAweGYxLCAweGMzLCAweGY3LCAweDJlLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGMwLCAweGY3LCAweGFhLCAweDVjLCAweGEsIDB4OWQsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHhhMCwgMHg2LCAweDc4LCAweDJmLCAweDUsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg1NywgMHhmYiwgMHg5YiwgMHg1LCAweDM1LCAweDdhLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDI1LCAweDFiLCAweDM1LCAweDdhLCAweGFmLCAweGI0LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk4LCAweDhlLCAweDk4LCAweDhkLCAweDk4LCAweDFlLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFjLCAweDUsIDB4ZTksIDB4NWIsIDB4YSwgMHhmYiwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4NzksIDB4YSwgMHhmNywgMHg3ZSwgMHg3NywgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDYxLCAweGY4LCAweGYwLCAweDE1LCAweGY3LCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweDc3LCAweGYzLCAweGZiLCAweGQwLCAweGZiLCAweGQsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg1ZiwgMHgyNSwgMHhhLCAweGUsIDB4NzksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3YSwgMHg3NywgMHg1OSwgMHhhLCAweGY3LCAweDNhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDE1LCAweGY3LCAweDQxLCAweGY1LCAweGY3LCAweDExLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGFmLCAweGZiLCAweDE1LCAweGY3LCAweDIzLCAweDUsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg1NSwgMHhmYiwgMHgyMiwgMHg1LCAweDMxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDI1LCAweGEsIDB4ZSwgMHg3OSwgMHhhLCAweGQ2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4NTksIDB4YSwgMHhmNywgMHhmOCwgMHhmOSwgMHg1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEsIDB4NiwgMHhhNSwgMHhmNywgMHhmLCAweDg2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjIsIDB4ZmIsIDB4ZiwgMHgxNSwgMHhmNywgMHgyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ZjcsIDB4ZiwgMHg4NiwgMHhhLCAweGZiLCAweDQ3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDI1LCAweGEsIDB4ZSwgMHg3OSwgMHhhLCAweDU5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4ZjgsIDB4NjAsIDB4MjUsIDB4YSwgMHhmNywgMHgxYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHgxNSwgMHhmNywgMHhiYiwgMHgzZSwgMHhiMCwgMHhjNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhmNywgMHhlLCAweDUsIDB4ZSwgMHhmOCwgMHg2YiwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDJiLCAweGVjLCAweGY3LCAweDU1LCAweGU5LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4ODksIDB4MTUsIDB4ZWMsIDB4NiwgMHhmNywgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2ZCwgMHg1LCAweGQxLCAweDM0LCAweGEsIDB4ZmIsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4YSwgMHhlOSwgMHg2LCAweGZiLCAweDZhLCAweGZjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZjgsIDB4MCwgMHg1LCAweGRjLCAweDM0LCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MzYsIDB4YSwgMHhkOCwgMHg2LCAweGUsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NWUsIDB4NzcsIDB4YWMsIDB4ZTYsIDB4MSwgMHg5MywgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDg0LCAweDE2LCAweGRkLCAweDYsIDB4ZjcsIDB4NDksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4YzMsIDB4ZmIsIDB4YzYsIDB4NSwgMHhkZCwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGY4LCAweDZiLCAweDUsIDB4YmMsIDB4MzQsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHgzNiwgMHhhLCAweGVjLCAweDYsIDB4MmUsIDB4ZmIsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4ZjcsIDB4OWUsIDB4NSwgMHg0NywgMHg2LCAweGZiLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGEwLCAweGEwLCAweGY3LCAweGFkLCAweDUsIDB4ZWIsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg4MywgMHgzNiwgMHhhLCAweGJkLCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhhLCAweDY1LCAweDE2LCAweGY3LCAweDk3LCAweDM0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4NiwgMHhmNywgMHgxYiwgMHhmNywgMHgxMSwgMHhkZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHg1LCAweDRjLCAweDZlLCAweGEsIDB4ZjcsIDB4ODksIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg0NywgMHg2LCAweGZiLCAweDExLCAweGY3LCAweDU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGY3LCAweDRmLCAweDUsIDB4ZDEsIDB4MzQsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg2ZSwgMHhhLCAweGJhLCAweDYsIDB4ZmIsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDRiLCAweGY3LCAweGEsIDB4NSwgMHhjMiwgMHgzNCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDg0LCAweDM2LCAweGEsIDB4ZDIsIDB4NiwgMHhmNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHhmYiwgMHg2MiwgMHhmYiwgMHg1NSwgMHg1LCAweDQ3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgzYSwgMHhhLCAweDlkLCAweDE2LCAweGY3LCAweGYwLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4MTAsIDB4NiwgMHhhNywgMHhmNywgMHgxYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHhmNywgMHg4OCwgMHg1LCAweGRjLCAweDQyLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4MzYsIDB4YSwgMHhjMywgMHg2LCAweGZiLCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDQxLCAweGY3LCAweDMxLCAweDUsIDB4YzIsIDB4MzQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4NSwgMHg0YiwgMHhhLCAweGRhLCAweDYsIDB4ZjcsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4OCwgMHg3MCwgMHhmYiwgMHgxYywgMHg1LCAweGZiLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg4YiwgMHhlNSwgMHhmOCwgMHg4LCAweGU1LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4MTYsIDB4ZjcsIDB4ZWYsIDB4NiwgMHg5ZiwgMHhlNSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDExLCAweDYsIDB4YTcsIDB4ZjcsIDB4MTksIDB4ZjcsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODMsIDB4NSwgMHhkYywgMHg0NiwgMHhhLCAweGZiLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NzksIDB4MzEsIDB4NSwgMHhjMiwgMHg2LCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJkLCAweDQzLCAweGY3LCAweDJkLCAweDUsIDB4YzEsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg4MywgMHg2LCAweDc5LCAweDMxLCAweDVjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NSwgMHhmYiwgMHg4MywgMHg2ZCwgMHhmYiwgMHgxOSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEwLCAweDYsIDB4ZjcsIDB4M2UsIDB4ZjgsIDB4OTcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTEsIDB4ZDgsIDB4NzcsIDB4ZjEsIDB4ZmIsIDB4ZDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg1LCAweGUsIDB4OGIsIDB4ZTMsIDB4ZjgsIDB4MWIsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4ZjcsIDB4MTUsIDB4MTIsIDB4ZjcsIDB4MzgsIDB4ZWIsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHhkMSwgMHhmNywgMHgzLCAweDEzLCAweGY0LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweGVjLCAweDYsIDB4OWQsIDB4ZTgsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweDYsIDB4YTUsIDB4ZjcsIDB4MTQsIDB4ZjcsIDB4NjksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NSwgMHhkYSwgMHg5NCwgMHhhLCAweGZiLCAweDgyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4MmUsIDB4NSwgMHhjMywgMHg2LCAweGZiLCAweDIwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDQ1LCAweGY3LCAweDNkLCAweDUsIDB4YzEsIDB4NiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHg1LCAweGZiLCAweDgxLCAweDgyLCAweGEsIDB4ZDksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweGZiLCAweDk2LCAweDcxLCAweGZiLCAweDE0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTEsIDB4NiwgMHhmNywgMHhkNSwgMHhmOCwgMHhjYiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGE1LCAweGY3LCAweDE1LCAweDRjLCAweGEsIDB4MTMsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjIsIDB4ZmIsIDB4MTUsIDB4MTUsIDB4ZjcsIDB4MiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGY3LCAweDE1LCAweDg2LCAweGEsIDB4ZSwgMHgzYSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweGVjLCAweDMsIDB4OTgsIDB4MTYsIDB4ZjgsIDB4NzQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhmNywgMHg3MCwgMHg2NiwgMHhhLCAweDZjLCAweGZiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4OGUsIDB4NiwgMHhmOCwgMHgyZSwgMHhmOCwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhjYywgMHg1LCAweGZjLCAweDU4LCAweDYsIDB4NWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4OTYsIDB4YSwgMHhhNywgMHhmNywgMHg2LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NiwgMHhmYywgMHgyOCwgMHhmYywgMHgyNSwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZTQsIDB4ZjgsIDB4ZCwgMHhlNSwgMHgxLCAweGQ3LCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhkLCAweGVhLCAweDMsIDB4OGMsIDB4MTYsIDB4ZjgsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiOSwgMHhmNywgMHg2ZCwgMHg1LCAweDJjLCAweDYsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTQsIDB4NSwgMHhmYiwgMHg4OSwgMHg2LCAweGY4LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDI3LCAweDk5LCAweGNiLCAweDUsIDB4ZmMsIDB4NGQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhmYiwgMHg1ZiwgMHg1LCAweGVhLCAweDYsIDB4YTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1LCAweGY3LCAweDZhLCAweDYsIDB4ZmMsIDB4MjAsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4NSwgMHhmNywgMHhiZCwgMHhmOCwgMHhiMywgMHgxNSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDUwLCAweGY3LCAweDIzLCAweDU4LCAweGFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDIxLCAweGZiLCAweDExLCAweGY2LCAweDQ2LCAweDY5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3YywgMHhlYSwgMHgzNSwgMHhlYSwgMHhmNSwgMHhlOSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHgxMiwgMHhhZiwgMHhlZCwgMHhmNywgMHhiZCwgMHhlZCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhmOCwgMHg2LCAweDg1LCAweDE1LCAweGY3LCAweDQ0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZWEsIDB4NSwgMHgzYSwgMHg2LCAweGFkLCAweGY3LCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGE3LCAweDkwLCAweGFhLCAweDhhLCAweGE3LCAweDE5LCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFlLCAweDkzLCAweDZmLCAweDNkLCAweDJjLCAweDcxLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDFlLCAweGEwLCAweDNhLCAweDUsIDB4YTIsIDB4Y2IsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YzksIDB4MWIsIDB4YTIsIDB4ZDAsIDB4OGEsIDB4NjEsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ODAsIDB4OGEsIDB4ODAsIDB4MWYsIDB4OGYsIDB4NjcsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4NjUsIDB4MWIsIDB4ZmIsIDB4OGMsIDB4NmMsIDB4ZmIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MWYsIDB4MTMsIDB4YmMsIDB4NGUsIDB4YmMsIDB4NGMsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4YjUsIDB4YTIsIDB4YWUsIDB4Y2MsIDB4MWUsIDB4MTMsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4ZjcsIDB4NSwgMHgxNSwgMHgxMywgMHhiYywgMHg1ZiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg2YiwgMHg0NywgMHgxYiwgMHg2NiwgMHg2NCwgMHg5NiwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHhlZCwgMHg5ZSwgMHhiYywgMHhjNiwgMHhiMSwgMHg4NSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHgxZiwgMHhlLCAweDQxLCAweGEsIDB4ZjcsIDB4NzUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YTYsIDB4ZWIsIDB4MTMsIDB4N2MsIDB4ZjcsIDB4ODcsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTUsIDB4ZjcsIDB4ZGUsIDB4ZDcsIDB4NzcsIDB4ZjEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4ZmIsIDB4ZCwgMHg1LCAweGY3LCAweGUsIDB4ZmMsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4YSwgMHg4YiwgMHhlNSwgMHhlZSwgMHhlNCwgMHhjYywgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGFlLCAweGU5LCAweGY3LCAweDdlLCAweGVmLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4ZjgsIDB4NzMsIDB4MTUsIDB4ZjcsIDB4M2YsIDB4ZjQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MjIsIDB4Y2MsIDB4YWUsIDB4ZmIsIDB4MTQsIDB4ZjcsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4YSwgMHhmYiwgMHg1MCwgMHhmYiwgMHgyMiwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGZjLCAweDlhLCAweDIyLCAweGEsIDB4M2IsIDB4YSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhmNywgMHgxLCAweDE1LCAweDJjLCAweGEsIDB4ZjcsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjIsIDB4MywgMHhmNywgMHgzNSwgMHhmOCwgMHg5MCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiMiwgMHhjYSwgMHg3YSwgMHhlNSwgMHhmYiwgMHhhYSwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4NDEsIDB4YSwgMHhjYSwgMHhmNywgMHgxMiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhlYiwgMHgxMywgMHg3YywgMHhmOCwgMHgzNSwgMHhmOCwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg4LCAweDYsIDB4YTQsIDB4ZjcsIDB4MTIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4LCAweDYsIDB4ZmIsIDB4NmEsIDB4ZmIsIDB4MTIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NiwgMHg2LCAweGE2LCAweGY3LCAweDEyLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHg2LCAweGY3LCAweDgsIDB4ZmQsIDB4OCwgMHgyMSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGVhLCAweGUwLCAweGViLCAweDM5LCAweGVjLCAweGRlLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweGQwLCAweGY3LCAweGE0LCAweGM1LCAweDE1LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGFkLCAweDVjLCAweGU2LCAweDFiLCAweGMzLCAweGJjLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGM3LCAweDFmLCAweDdkLCAweGU3LCAweDUsIDB4NzQsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4ODIsIDB4NzMsIDB4MWIsIDB4MzYsIDB4OGIsIDB4Y2IsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4MWYsIDB4OGMsIDB4OGQsIDB4NSwgMHhmNywgMHg4OSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGIyLCAweDk0LCAweGIzLCAweGI0LCAweDFhLCAweGRlLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDJiLCAweDYwLCAweDU2LCAweDc4LCAweDY4LCAweDY3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDc3LCAweDcyLCAweDliLCAweDQ3LCAweDFiLCAweDQyLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDg5LCAweDg2LCAweDFmLCAweDk0LCAweDJkLCAweDUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4YzAsIDB4YTAsIDB4YjcsIDB4MWIsIDB4YWMsIDB4OWIsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4ODEsIDB4OGEsIDB4ODAsIDB4ODgsIDB4N2QsIDB4MWYsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NSwgMHgxMywgMHhiMCwgMHg4ZCwgMHg3MiwgMHg3OSwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHgxYiwgMHhmYiwgMHgxNCwgMHg0MCwgMHgyYywgMHgzNCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg4YywgMHhiNywgMHg1YywgMHhkNiwgMHgxYiwgMHhkMywgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhhNSwgMHhiMSwgMHgxZiwgMHgxMywgMHhkMCwgMHhlNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHgxNSwgMHhjNiwgMHg5YSwgMHhiYSwgMHhiMiwgMHhiNCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHg4NywgMHgzZSwgMHg3NiwgMHg4OSwgMHgxZiwgMHhmYiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZSwgMHgxNSwgMHg2ZSwgMHg2YSwgMHg2MywgMHg3ZCwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3OSwgMHg3OCwgMHg5NSwgMHhhZSwgMHgxZiwgMHgxMywgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg5YSwgMHhiNywgMHhlMywgMHg5NiwgMHhhYiwgMHg4YSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHgxZSwgMHhlLCAweDQxLCAweGEsIDB4ZjcsIDB4NzUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YWUsIDB4ZWIsIDB4MTMsIDB4N2MsIDB4ZjcsIDB4NzQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4MTUsIDB4ZjcsIDB4YzQsIDB4M2IsIDB4YjAsIDB4YzUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4ZjcsIDB4ZCwgMHg1LCAweGQ2LCAweGZkLCAweDJjLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4N2MsIDB4ZTksIDB4MzksIDB4ZTksIDB4ZjcsIDB4MTcsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTgsIDB4ZWEsIDB4MTIsIDB4YWQsIDB4ZjIsIDB4OWIsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4N2MsIDB4ZjcsIDB4ZGEsIDB4YjAsIDB4MTUsIDB4YTAsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg0NSwgMHgzZiwgMHhhLCAweGZiLCAweDE5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4YTEsIDB4YTUsIDB4YTgsIDB4OWQsIDB4YmMsIDB4YTAsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZGYsIDB4M2YsIDB4YSwgMHhmYiwgMHgyYSwgMHg2LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDZjLCAweDQ0LCAweDc2LCAweDcxLCAweDgsIDB4M2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4NzMsIDB4YjMsIDB4YWIsIDB4MWEsIDB4YTcsIDB4YWIsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4OGMsIDB4MWUsIDB4YjksIDB4OGMsIDB4YzMsIDB4NzQsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZDIsIDB4ZDAsIDB4MTgsIDB4YjEsIDB4NjQsIDB4NGIsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4MWIsIDB4MmMsIDB4MzEsIDB4NGMsIDB4MzQsIDB4NjQsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4OGYsIDB4N2QsIDB4MWYsIDB4ODksIDB4NywgMHgzOSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHgzZSwgMHgzNCwgMHgxYSwgMHgxMywgMHhiYywgMHg0ZSwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhmMSwgMHhkYSwgMHhiNSwgMHhhZCwgMHg5ZCwgMHhhNywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhkOSwgMHgxNSwgMHg3NCwgMHg3MiwgMHg2YiwgMHg3ZSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg1ZiwgMHg3YiwgMHhhNSwgMHhhNCwgMHhiZiwgMHhiZCwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHg5YSwgMHgxZiwgMHhlLCAweDQxLCAweGEsIDB4ZjcsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4YjMsIDB4ZWIsIDB4MTMsIDB4N2MsIDB4ZjcsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YzQsIDB4MTUsIDB4NWUsIDB4YjAsIDB4NjgsIDB4YzAsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4YzAsIDB4Y2EsIDB4YjksIDB4NjUsIDB4YWYsIDB4NTUsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4NTQsIDB4NGMsIDB4MWUsIDB4Y2YsIDB4OTEsIDB4MTUsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4YTQsIDB4YTUsIDB4YTAsIDB4OWIsIDB4N2QsIDB4NzksIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzUsIDB4NzAsIDB4NzcsIDB4N2IsIDB4OTYsIDB4OWEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4ZmMsIDB4Y2QsIDB4MjEsIDB4YSwgMHhmNywgMHhhMiwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDczLCAweGY5LCAweDFjLCAweDMsIDB4ZjcsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHgxNSwgMHhjOSwgMHhiZiwgMHg0OCwgMHhkNywgMHhmOCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDJjLCAweDRiLCAweDZhLCAweGEsIDB4NGEsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHg2LCAweGRkLCAweGMxLCAweDhlLCAweGEsIDB4OWIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZWYsIDB4NzcsIDB4MSwgMHhmNywgMHg5NSwgMHg4NiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1ZiwgMHhmNywgMHgzNiwgMHg1OCwgMHhjMCwgMHgzOCwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlLCAweGY4LCAweDVhLCAweDQ0LCAweDk0LCAweGZiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NWYsIDB4NWEsIDB4ZDQsIDB4NDksIDB4NWMsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk5LCAweGQxLCAweDEsIDB4NjksIDB4ZjksIDB4MjYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHhmNywgMHgyMywgMHgxNSwgMHhjOSwgMHhiZiwgMHg1MSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY4LCAweDliLCAweDYsIDB4OTUsIDB4ZDEsIDB4NSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg2LCAweGU5LCAweGM4LCAweDhlLCAweGEsIDB4ZjcsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4MSwgMHg2OSwgMHhmOSwgMHgzMCwgMHgzLCAweDY5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDE1LCAweGY4LCAweDk2LCAweDYsIDB4MmQsIDB4NGUsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg0OSwgMHg1LCAweGZjLCAweDliLCAweDYsIDB4ZSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzYiwgMHgxLCAweGY3LCAweDJkLCAweGQxLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4YTEsIDB4MTUsIDB4ZDEsIDB4ODIsIDB4ZjcsIDB4ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhiYywgMHg0MiwgMHhjZCwgMHhiYSwgMHhmYiwgMHg5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGZiLCAweDVmLCAweGZiLCAweDM3LCAweGJlLCAweDU2LCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDUsIDB4ZSwgMHhmNywgMHg4ZiwgMHhmOCwgMHgxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHhmOCwgMHhjLCAweDMsIDB4ZjcsIDB4MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHgxNSwgMHhkNywgMHhiMSwgMHhkOSwgMHhkYiwgMHhjYSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHgzYSwgMHhiZiwgMHgzZiwgMHhjYywgMHg2NiwgMHg5MywgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg0MSwgMHhmNywgMHgyLCAweDZhLCAweGMyLCAweDc4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDgsIDB4NWMsIDB4NiwgMHg1YiwgMHhmYiwgMHgxNSwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHgyNSwgMHgyMywgMHg4LCAweGUsIDB4ZjcsIDB4M2EsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NzYsIDB4ZGUsIDB4ZjMsIDB4OWIsIDB4NzcsIDB4MTIsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NjksIDB4MTMsIDB4NjgsIDB4ZjcsIDB4YywgMHhmNywgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhhYiwgMHhhMywgMHhhNywgMHhiZSwgMHhiNCwgMHgxYiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHg3NiwgMHg3YSwgMHhhZSwgMHgxZiwgMHg3ZiwgMHhhMywgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhhNCwgMHgxYiwgMHhiNiwgMHhkMiwgMHhhZCwgMHhkZiwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHg5OCwgMHg1OCwgMHhjOSwgMHg1LCAweDc1LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDU0LCAweDYxLCAweDFiLCAweDc0LCAweDczLCAweDk2LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDFmLCAweDEzLCAweDY4LCAweDljLCAweDZiLCAweDZjLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDFiLCAweDQ0LCAweDU5LCAweDQ4LCAweDU1LCAweDYxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4NGUsIDB4ZjAsIDB4MywgMHhmNywgMHg0ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHgxNSwgMHhmMCwgMHhmNywgMHg3LCAweGJkLCAweGZiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4YzcsIDB4NTIsIDB4ZjMsIDB4ZjcsIDB4MTgsIDB4YWQsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4ZmIsIDB4MWQsIDB4NTYsIDB4YjAsIDB4ZjcsIDB4MWQsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3OCwgMHhmYiwgMHgxOSwgMHhmYiwgMHhiLCAweGJjLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGY3LCAweDE2LCAweDZhLCAweDIwLCAweDIyLCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhkMywgMHhkMiwgMHhkNCwgMHhmNywgMHgzYiwgMHhkNSwgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHgxLCAweDkxLCAweGUxLCAweGM2LCAweGQyLCAweGY3LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweDMsIDB4ZjcsIDB4Y2YsIDB4ZjcsIDB4M2IsIDB4MTUsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YWQsIDB4ODIsIDB4OWQsIDB4MWIsIDB4ZjcsIDB4MCwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYywgMHhmNywgMHhlLCAweGY3LCAweDE2LCAweDI1LCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEwLCAweGZiLCAweDNiLCAweGZiLCAweDUzLCAweGZiLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDc1LCAweDIyLCAweGI2LCAweGZiLCAweDExLCAweGY3LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweGRmLCAweGM0LCAweGE0LCAweGI1LCAweDFmLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweDUsIDB4NTQsIDB4MzIsIDB4NDcsIDB4NzQsIDB4M2YsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YiwgMHg2YiwgMHhkZCwgMHhkOCwgMHhlNSwgMHhkNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhmNywgMHg0YiwgMHhmMiwgMHhjNCwgMHg1NSwgMHgzOSwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHgyYywgMHg1OSwgMHg3ZCwgMHg3OSwgMHg5MSwgMHhhMywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4YywgMHg5MCwgMHg4YywgMHg4ZiwgMHg4ZSwgMHg5MSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0OCwgMHgxOCwgMHg0NiwgMHg2LCAweDgyLCAweDc5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NzgsIDB4N2UsIDB4OGIsIDB4N2QsIDB4MWIsIDB4MjUsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWQsIDB4MzAsIDB4NTEsIDB4YjEsIDB4NzksIDB4YTgsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4OWMsIDB4YTQsIDB4YTcsIDB4MWYsIDB4YTgsIDB4ZjcsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzAsIDB4ODUsIDB4NjIsIDB4ZmIsIDB4MCwgMHg0ZiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg4NywgMHg5MywgMHg5NywgMHhjNSwgMHhkMSwgMHhlNCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHg4OCwgMHg3NCwgMHg4MiwgMHg4YSwgMHgxZiwgMHhlLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4MWUsIDB4NzcsIDB4ZGQsIDB4NzcsIDB4MTIsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4MTMsIDB4N2UsIDB4ZjcsIDB4MTIsIDB4ZjgsIDB4OTUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4NzEsIDB4OWEsIDB4OWYsIDB4OTQsIDB4YTIsIDB4YTMsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4YTMsIDB4OTgsIDB4YTksIDB4N2EsIDB4YWEsIDB4NzksIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhhNiwgMHhhNywgMHg3YiwgMHhhNCwgMHgxYiwgMHhmMCwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhhZCwgMHg5ZCwgMHgxZiwgMHgzOSwgMHhhMywgMHg1LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDdkLCAweDc2LCAweDZmLCAweDFiLCAweDc5LCAweDc5LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDc4LCAweDFmLCAweDljLCAweDZmLCAweDZmLCAweGExLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDI5LCAweDVjLCAweDNkLCAweDYwLCAweDcyLCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGZjLCAweDk4LCAweDIyLCAweGEsIDB4MWYsIDB4MTMsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4YSwgMHgxZSwgMHgxMywgMHg3ZSwgMHhhMSwgMHhmNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweGJlLCAweDJjLCAweGEsIDB4N2MsIDB4ZTgsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4ZjcsIDB4OWQsIDB4ZTksIDB4ZGQsIDB4ZTksIDB4MTIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4ZWYsIDB4MTMsIDB4NzgsIDB4ODAsIDB4ODgsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NiwgMHg5NCwgMHhiYiwgMHg1LCAweDEzLCAweGI4LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGIyLCAweDZhLCAweGQ3LCAweDFiLCAweGY3LCAweDVhLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE4LCAweGY3LCAweDFlLCAweGYzLCAweDQyLCAweGU2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDUzLCAweDU0LCAweDg0LCAweDY5LCAweDViLCAweDFmLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZkLCAweDUsIDB4ZmIsIDB4NDksIDB4NDQsIDB4YSwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweDc4LCAweDMyLCAweGZjLCAweDRkLCAweDUsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg1YiwgMHhlZiwgMHgxNSwgMHhlNiwgMHhjNywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkLCAweGU4LCAweGE5LCAweDQ4LCAweDU4LCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDM1LCAweDJkLCAweDQxLCAweDM0LCAweDYzLCAweDM4LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDFlLCAweGUsIDB4ZmIsIDB4MWQsIDB4ZjksIDB4OGYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNywgMHhmNywgMHhhNSwgMHgzLCAweGY3LCAweGZlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDE1LCAweGQ1LCAweGE4LCAweGZiLCAweDViLCAweGY5LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDZlLCAweDUsIDB4ZSwgMHhmYiwgMHg3MywgMHg3NiwgMHhmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3NywgMHgxLCAweGY3LCAweDFhLCAweGUzLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZmIsIDB4ODgsIDB4MTUsIDB4ZTMsIDB4NiwgMHhmNywgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHg3YywgMHg1LCAweDMzLCAweDYsIDB4ZSwgMHhmNywgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHgzLCAweGQ1LCAweGY3LCAweDcxLCAweDE1LCAweGRjLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDYwLCAweDYxLCAweDFhLCAweDg1LCAweDgwLCAweDQ1LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE5LCAweDFlLCAweDgzLCAweDVjLCAweDk3LCAweDUyLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDgsIDB4NzksIDB4YjYsIDB4YzcsIDB4OGIsIDB4YmMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ZTgsIDB4NSwgMHg2NCwgMHg2MywgMHg4YiwgMHg5NSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3NiwgMHg5MiwgMHg4OSwgMHhhNCwgMHg4ZiwgMHhhMiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5LCAweDk1LCAweGNiLCAweDhjLCAweDk2LCAweDgsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OGIsIDB4OTMsIDB4OTAsIDB4MWEsIDB4YjMsIDB4NzQsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4YTUsIDB4MWUsIDB4ZDAsIDB4YWUsIDB4YmQsIDB4ZGQsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4YTcsIDB4ZjcsIDB4MjgsIDB4MTgsIDB4OGYsIDB4YTIsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YTMsIDB4OTEsIDB4OCwgMHg5NSwgMHhiMiwgMHhhZiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHgxYiwgMHg5ZSwgMHhlOCwgMHg1LCAweDVhLCAweDUxLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDU3LCAweDFmLCAweDUyLCAweDc3LCAweDY3LCAweDUxLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDc1LCAweGZiLCAweDksIDB4MTgsIDB4NzYsIDB4ZmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg0YSwgMHhmYiwgMHgzLCAweDdiLCAweDgsIDB4ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGRhLCAweDMsIDB4ZDUsIDB4ZmIsIDB4NzgsIDB4MTUsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4OGIsIDB4OWQsIDB4YmYsIDB4MWYsIDB4YzQsIDB4OWYsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4OTMsIDB4YmEsIDB4YTEsIDB4ZjcsIDB4OSwgMHgxOCwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweDlmLCAweGNjLCAweGY3LCAweDMsIDB4OWIsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4MTgsIDB4M2EsIDB4OTcsIDB4ODEsIDB4YjYsIDB4YjUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OTYsIDB4ZDEsIDB4YTIsIDB4ZjcsIDB4MTksIDB4MWUsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4N2YsIDB4YzQsIDB4NTksIDB4YTAsIDB4OCwgMHg5ZCwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg4YiwgMHg1YSwgMHgxYiwgMHg3OSwgMHgyZSwgMHg1LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDhiLCAweDgxLCAweGFiLCAweDFmLCAweGEwLCAweDg0LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDg3LCAweDc0LCAweDc4LCAweGZiLCAweDksIDB4ODEsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4N2YsIDB4OCwgMHg4YSwgMHg4MCwgMHg4YiwgMHg4MywgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2MywgMHhhMiwgMHg1MywgMHhiMywgMHg3MSwgMHgxZSwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg1OSwgMHgzOSwgMHg3ZSwgMHg0MywgMHg2ZiwgMHhmYiwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg4NywgMHg3NCwgMHg4MCwgMHg3MSwgMHg3MywgMHg4NSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDY0LCAweDY3LCAweDhiLCAweDY0LCAweDFiLCAweGUsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4ZjgsIDB4YWEsIDB4ZTcsIDB4MSwgMHhmNywgMHgwLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDdjLCAweDYsIDB4OWYsIDB4ZTcsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg2LCAweGY3LCAweDUsIDB4ZjgsIDB4YWEsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg1YiwgMHhhLCAweGZiLCAweDdjLCAweDYsIDB4ZSwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhmOCwgMHhhYSwgMHhlNywgMHgxLCAweGY3LCAweDEzLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDc4LCAweDJmLCAweDUsIDB4ZjcsIDB4N2IsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhmOSwgMHg2MiwgMHg1LCAweGZiLCAweDdjLCAweDYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4NSwgMHhmNywgMHgxYiwgMHg2LCAweGZiLCAweDYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NSwgMHhlLCAweGY4LCAweDY4LCAweGQ1LCAweDEsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4YiwgMHgxNSwgMHg0NCwgMHhiNywgMHgyZiwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMSwgMHhkMywgMHhmNywgMHg1LCAweGJkLCAweDlkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDYsIDB4M2QsIDB4NjQsIDB4NDEsIDB4ODAsIDB4NzAsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4NzEsIDB4YzAsIDB4YWYsIDB4OGEsIDB4MWYsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg3NiwgMHhmOSwgMHhlNiwgMHg3NywgMHgxLCAweGY3LCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGY3LCAweDJjLCAweGM2LCAweDMsIDB4ZjcsIDB4YWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4MTUsIDB4YzYsIDB4NiwgMHhlYiwgMHhmOCwgMHgxYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDYsIDB4ZmIsIDB4NjcsIDB4ZmQsIDB4ZTYsIDB4MTUsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlZCwgMHhmOCwgMHgxYSwgMHg1LCAweDUwLCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOCwgMHhmNywgMHhiZSwgMHgxLCAweGY3LCAweDFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDMsIDB4ZjcsIDB4MWQsIDB4ZjcsIDB4OGMsIDB4MTUsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NWEsIDB4ZDgsIDB4ZWQsIDB4ZWQsIDB4ZGIsIDB4ZWIsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4YmYsIDB4M2MsIDB4MjMsIDB4MzEsIDB4MzgsIDB4MjgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3YywgMHhlYSwgMHhmNywgMHhiMCwgMHhlYSwgMHgxLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweDMsIDB4ZjgsIDB4ODksIDB4ZjcsIDB4MmUsIDB4MTUsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4NGMsIDB4NmEsIDB4MzgsIDB4MWIsIDB4M2UsIDB4NDQsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZWUsIDB4ZTUsIDB4ZDUsIDB4ZjcsIDB4ZCwgMHhiMywgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg3YywgMHhhYiwgMHgxZiwgMHg3NywgMHgzMCwgMHg1LCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjcsIDB4ZjcsIDB4NjgsIDB4N2IsIDB4YSwgMHg4NiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDk4LCAweDY5LCAweDY1LCAweDkxLCAweDYyLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGZiLCAweDExLCAweGZiLCAweDI3LCAweGZiLCAweDIwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ZjQsIDB4NDgsIDB4ZjcsIDB4YSwgMHhmMCwgMHhmMCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhkZiwgMHgxZiwgMHhlLCAweGY3LCAweDc5LCAweGU2LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzksIDB4ZjgsIDB4ODEsIDB4MTUsIDB4ZTYsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhmNywgMHgxZSwgMHg1YiwgMHhhZiwgMHhmYiwgMHgzNiwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjLCAweGYxLCAweDRiLCAweDY4LCAweDUsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg3NiwgMHhmNywgMHg1OCwgMHhlOCwgMHhmNywgMHhhZSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGE0LCAweGYxLCAweDMsIDB4ZjcsIDB4MjMsIDB4ZmIsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4N2IsIDB4OWUsIDB4YTYsIDB4N2YsIDB4YWMsIDB4MWIsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4YzIsIDB4YzUsIDB4YTUsIDB4ODUsIDB4YWMsIDB4NjIsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGYsIDB4OWMsIDB4ZGQsIDB4OTgsIDB4ZGEsIDB4YWQsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4MTksIDB4NjAsIDB4ZDQsIDB4NSwgMHg2MSwgMHg0NiwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHgzOCwgMHgxYiwgMHgzZiwgMHg0MywgMHhhZiwgMHhkMiwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHhkNywgMHhmNywgMHhlLCAweGI1LCAweGIyLCAweDgxLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDFmLCAweDc3LCAweDMxLCAweDUsIDB4ZWYsIDB4NiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NiwgMHg1LCAweDI3LCAweDYsIDB4ODcsIDB4NzgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg2OSwgMHg2NCwgMHg5MSwgMHg2MiwgMHgxYiwgMHhmYiwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMiwgMHhmYiwgMHgyNiwgMHhmYiwgMHgxZCwgMHhmYiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweDRhLCAweGY2LCAweDgyLCAweDFmLCAweDcwLCAweDMxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OTUsIDB4OWYsIDB4OTEsIDB4OWMsIDB4MWIsIDB4OTYsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4N2QsIDB4N2MsIDB4NzksIDB4ODMsIDB4NzksIDB4N2IsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OTMsIDB4ODMsIDB4MWYsIDB4ZSwgMHhmYiwgMHg2MiwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhlYSwgMHgxLCAweGY3LCAweGFlLCAweGQ5LCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4ZmIsIDB4NDYsIDB4MTUsIDB4NzksIDB4YTEsIDB4YTMsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4MWIsIDB4Y2UsIDB4YzIsIDB4YzAsIDB4Y2EsIDB4YjgsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4ODAsIDB4OGYsIDB4MWYsIDB4OGYsIDB4YTUsIDB4NSwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDZiLCAweDI0LCAweDUsIDB4OGQsIDB4OTQsIDB4YTQsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4MWIsIDB4OTUsIDB4OTIsIDB4ODYsIDB4ODEsIDB4NzgsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4NzUsIDB4N2UsIDB4N2YsIDB4OTEsIDB4OTMsIDB4ODQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg2ZiwgMHg3NiwgMHhmNywgMHhmZCwgMHhmNywgMHg0ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDc3LCAweDEsIDB4YzUsIDB4ZjAsIDB4MywgMHhmNywgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHgxNSwgMHhlZCwgMHg2LCAweGE1LCAweGY3LCAweDFkLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGNjLCAweGE0LCAweGNhLCAweGIyLCAweDE5LCAweDZjLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NjAsIDB4MzcsIDB4NWIsIDB4NzIsIDB4NDksIDB4MWIsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YzEsIDB4YjAsIDB4ZDYsIDB4ZDIsIDB4ZDMsIDB4ZTYsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ODAsIDB4N2MsIDB4YTgsIDB4MWYsIDB4N2MsIDB4NDksIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiMSwgMHhmNywgMHg0ZSwgMHg3YSwgMHhhLCAweDg1LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDkxLCAweDc2LCAweDkwLCAweDc4LCAweDhlLCAweDE5LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE5LCAweDY2LCAweGEsIDB4NzAsIDB4ZmIsIDB4MTgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHg2YywgMHgzOSwgMHgyYiwgMHhmYiwgMHg5LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDAsIDB4ZjIsIDB4NmUsIDB4YjUsIDB4N2YsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhZiwgMHhlNywgMHgzLCAweGY3LCAweDJkLCAweGY4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDM3LCAweGYyLCAweGY3LCAweGEsIDB4MjQsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4ZmIsIDB4ZSwgMHg5NywgMHhhLCAweDJmLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZmIsIDB4MWYsIDB4NSwgMHhlLCAweDdjLCAweGY3LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweDQxLCAweDEsIDB4ZjcsIDB4NmYsIDB4ZjcsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NmUsIDB4YTMsIDB4NjQsIDB4ZDAsIDB4Y2YsIDB4YzMsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4YWMsIDB4NmMsIDB4YTksIDB4NTEsIDB4NDgsIDB4NGUsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4MWUsIDB4NTMsIDB4ZmIsIDB4OWUsIDB4MTUsIDB4NmUsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4ZDAsIDB4YzgsIDB4YmYsIDB4YjMsIDB4YjksIDB4OTYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OTAsIDB4OGIsIDB4OTEsIDB4OTAsIDB4MWEsIDB4YWYsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NGMsIDB4NGEsIDB4NGIsIDB4NTgsIDB4NTYsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzLCAweGY3LCAweGI1LCAweDEsIDB4ZjcsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YWMsIDB4ZjcsIDB4M2YsIDB4MywgMHhmNywgMHgxYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDE1LCAweGY3LCAweDEzLCAweDYsIDB4ZjcsIDB4NjAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NSwgMHhmYiwgMHgzZiwgMHg2LCAweGUsIDB4NzksIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4YjksIDB4ZjcsIDB4OGMsIDB4YjksIDB4ZDUsIDB4YjgsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHhiOSwgMHhmNywgMHgyLCAweGI5LCAweGY4LCAweDEsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg4NCwgMHhmNywgMHg2ZCwgMHgxNSwgMHhmYiwgMHgxOCwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhmNywgMHgyMSwgMHhmNywgMHg3OCwgMHhmNywgMHgxZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmNywgMHg0OCwgMHhmNywgMHgxZCwgMHgyNSwgMHhmNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhmYiwgMHg0ZCwgMHhmYiwgMHg0YiwgMHhmYiwgMHgxYywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxZSwgMHhiOSwgMHg5YywgMHgxNSwgMHhmNywgMHgzNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhmNywgMHgyMCwgMHhmNywgMHgzMCwgMHhmNywgMHgxMywgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHhmYiwgMHhjLCAweGZiLCAweDMyLCAweGZiLCAweDI4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZiLCAweDM1LCAweGZiLCAweDExLCAweDM0LCAweGU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4MWUsIDB4ZjcsIDB4ZmQsIDB4NzcsIDB4MTUsIDB4NzIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NzUsIDB4NjMsIDB4MWIsIDB4NGUsIDB4NjksIDB4YjgsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MWYsIDB4ZDYsIDB4ZDQsIDB4ZDMsIDB4ZDIsIDB4YWUsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4NzYsIDB4OWQsIDB4MWUsIDB4YWUsIDB4YWIsIDB4NSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2MSwgMHhhMSwgMHg1ZCwgMHgxYiwgMHgyYiwgMHgyMiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5LCAweDQyLCAweGJiLCAweDRhLCAweGU0LCAweGNjLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDllLCAweDlmLCAweDFmLCAweGUsIDB4Y2UsIDB4ZTQsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4ZmQsIDB4ZTMsIDB4OWUsIDB4NzcsIDB4MTIsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4ZjcsIDB4OWUsIDB4ZTcsIDB4MTMsIDB4NmMsIDB4OWMsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YmUsIDB4NTIsIDB4ZDIsIDB4YzQsIDB4NSwgMHgxMywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhhYywgMHhiNywgMHg4MCwgMHhiOSwgMHgxYiwgMHhiOCwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhhNCwgMHhhZiwgMHgxZiwgMHgxMywgMHg1YywgMHhiZSwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHhjNiwgMHg1OCwgMHhjNSwgMHg1LCAweGIyLCAweGIyLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGM0LCAweDFhLCAweGE3LCAweDg2LCAweGE3LCAweDdmLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGQ1LCAweGM1LCAweDVlLCAweGM0LCAweDQwLCAweDUwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YWMsIDB4YTcsIDB4NmIsIDB4NWYsIDB4OTcsIDB4NWUsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4NWEsIDB4N2QsIDB4NzMsIDB4NjcsIDB4MWYsIDB4MTMsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4YzQsIDB4NDMsIDB4NTAsIDB4YmQsIDB4NTEsIDB4NSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg3MCwgMHg1MSwgMHg1MywgMHgxYSwgMHg2ZSwgMHg4ZiwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg3MiwgMHgxZSwgMHhkNiwgMHhlYywgMHgxNSwgMHgxMywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHhkYywgMHhkMCwgMHhkOCwgMHhjYiwgMHhiNywgMHg1ZCwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHgzYSwgMHg0NiwgMHgzZCwgMHg0YiwgMHg2MCwgMHhiOSwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDdjLCAweGU5LCAweDM5LCAweGU5LCAweGY3LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweDQsIDB4ZTksIDB4MTIsIDB4OWQsIDB4ZWYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZjgsIDB4ZSwgMHg4OCwgMHgxNSwgMHhmNywgMHg0NiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDNjLCAweDYsIDB4ZjQsIDB4ZjgsIDB4YWIsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg4NywgMHhhLCAweGY3LCAweDExLCAweDYsIDB4NzAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4NSwgMHhhYywgMHg2YSwgMHg1MywgMHg5MSwgMHg1MywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMiwgMHhmYiwgMHgxZCwgMHhmYiwgMHgxNiwgMHhmYiwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhiOCwgMHgyNCwgMHhkZSwgMHg0MiwgMHhmNywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhjNiwgMHhhNSwgMHhhYiwgMHhiYSwgMHgxZSwgMHgxMywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhMiwgMHhmNywgMHgyMCwgMHgxNSwgMHhlNiwgMHhlMywgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhkOSwgMHhiYSwgMHg2OCwgMHg1MiwgMHgxZSwgMHgxMywgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOCwgMHhmYiwgMHgxZSwgMHg2NSwgMHg1ZiwgMHg0NCwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhjZCwgMHgxZSwgMHhlLCAweGY3LCAweGNmLCAweGVkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweDc3LCAweDEsIDB4ZjcsIDB4M2EsIDB4ZWUsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHg0NSwgMHgxNSwgMHhlZSwgMHg2LCAweGQ2LCAweGY4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MjYsIDB4NiwgMHg5ZSwgMHhlZCwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDYsIDB4YWQsIDB4ZjcsIDB4M2IsIDB4N2IsIDB4YSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzYiwgMHg1LCAweGZiLCAweDI2LCAweDYsIDB4NzgsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHgyNSwgMHg2LCAweGUsIDB4ZjcsIDB4NCwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5LCAweGVjLCAweGY3LCAweDJmLCAweDc3LCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4ZjAsIDB4MywgMHhjZiwgMHhmNywgMHhlLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDYsIDB4NjQsIDB4ZmIsIDB4NTQsIDB4NSwgMHhmMCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGY3LCAweDU0LCAweDcwLCAweGEsIDB4OWYsIDB4ZWUsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhMywgMHhmNiwgMHg3MCwgMHhhLCAweDlmLCAweGVjLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YTksIDB4ZjcsIDB4MmYsIDB4NjYsIDB4YSwgMHg2OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHg1LCAweGZiLCAweDJhLCAweDYsIDB4NzcsIDB4MmEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYSwgMHg2LCAweDc3LCAweDIwLCAweDUsIDB4ZmIsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweGY3LCAweDg3LCAweGU2LCAweGY3LCAweDUzLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjEsIDB4ZWQsIDB4ZjcsIDB4NWUsIDB4ZWIsIDB4MywgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxNSwgMHgxNSwgMHgzOSwgMHhjZiwgMHg0ZiwgMHhlOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhlOSwgMHhmNCwgMHhmNywgMHhkLCAweGUyLCAweDRhLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGZiLCAweGEsIDB4ZmIsIDB4YiwgMHgyZCwgMHhmYiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlZCwgMHhhMSwgMHgxNSwgMHhjYywgMHhjMSwgMHhjMCwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhhOSwgMHg2YSwgMHg1ZSwgMHg0ZSwgMHg1MSwgMHg1NywgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg2YSwgMHhhYiwgMHhiNCwgMHgxZSwgMHhlLCAweGY4LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweDEsIDB4ZjcsIDB4MTIsIDB4ZjcsIDB4ZSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmLCAweDMsIDB4ZjcsIDB4ZDksIDB4ZjgsIDB4NzksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZiwgMHg2LCAweGE1LCAweDk3LCAweGEsIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDc2LCAweGZiLCAweDIwLCAweDE1LCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhNiwgMHg5NywgMHhhLCAweGZiLCAweGYsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweGY3LCAweDJiLCAweGFmLCAweGY3LCAweDIsIDB4YWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4MTIsIDB4ZjcsIDB4NTcsIDB4ZjcsIDB4MjMsIDB4NGQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4MTQsIDB4ZTAsIDB4MTMsIDB4ZTgsIDB4ZjcsIDB4YTgsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4NGYsIDB4YSwgMHhmYiwgMHg2ZCwgMHhmYiwgMHg1ZSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDEzLCAweGYwLCAweGY3LCAweDksIDB4ZmIsIDB4ODUsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDIyLCAweDc2LCAweGY3LCAweDgsIDB4ZjcsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzUsIDB4ZjcsIDB4NDksIDB4MjAsIDB4ZTksIDB4MmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4MTIsIDB4ZjcsIDB4NCwgMHhmNSwgMHhmNywgMHg0ZSwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhjZSwgMHhhOCwgMHg4MSwgMHgxNSwgMHhmMCwgMHg2LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDUsIDB4N2IsIDB4OWMsIDB4YTQsIDB4ODUsIDB4YTAsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4ZmIsIDB4MjUsIDB4NSwgMHhmMCwgMHg2LCAweGE5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweDUsIDB4ZDUsIDB4OGMsIDB4ZjcsIDB4MTQsIDB4YmIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MWEsIDB4ZGEsIDB4MzEsIDB4YTEsIDB4MzEsIDB4YTUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4OTQsIDB4NDMsIDB4OWYsIDB4YjEsIDB4MWEsIDB4Y2YsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4YjEsIDB4YjAsIDB4YTUsIDB4ODIsIDB4NzEsIDB4YjEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZTYsIDB4ODMsIDB4NjQsIDB4NSwgMHhlZSwgMHg2LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ5LCAweDUsIDB4MjcsIDB4NiwgMHg4MywgMHg2MiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg3OSwgMHg5MCwgMHg3OSwgMHg4ZSwgMHgxOSwgMHgxMywgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhmMSwgMHg1LCAweDI0LCAweDYsIDB4MTMsIDB4ZDYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4NSwgMHgzYywgMHg4YSwgMHhmYiwgMHgxMCwgMHg1NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHgxYSwgMHg4YSwgMHgzYywgMHhkNywgMHg2YywgMHhmMywgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGIxLCAweDgxLCAweGQ2LCAweDgyLCAweDU2LCAweDFhLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDYsIDB4ODYsIDB4NmYsIDB4NjUsIDB4NjksIDB4OTMsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4MWUsIDB4OTMsIDB4YTYsIDB4NSwgMHgyNiwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NzksIDB4ZjcsIDB4MjAsIDB4MSwgMHhmNywgMHg3OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDMsIDB4ZjcsIDB4NzgsIDB4ZjgsIDB4NzksIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHg2LCAweGE2LCAweDk3LCAweGEsIDB4ZmIsIDB4OSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2YsIDB4YSwgMHhjZCwgMHhmOCwgMHg1NSwgMHgzLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY4LCAweDU1LCAweDYsIDB4OWUsIDB4ZTksIDB4M2UsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmNywgMHhlZCwgMHg1LCAweGZiLCAweDgwLCAweDZmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWUsIDB4NiwgMHg1OCwgMHhmYiwgMHg4ZiwgMHg0MywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGVhLCAweGUwLCAweGViLCAweGVjLCAweGViLCAweDEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4ZWEsIDB4MywgMHhmNywgMHgyNiwgMHhmNywgMHg0OCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyMywgMHg2LCAweDkxLCAweGEwLCAweDk0LCAweGI1LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY0LCAweDM0LCAweGQ4LCAweGZiLCAweGMsIDB4ZmIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDksIDB4MzUsIDB4ZmIsIDB4NWMsIDB4MjYsIDB4ZGIsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzAsIDB4ZTcsIDB4ZTcsIDB4YWIsIDB4YjIsIDB4ZGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4ZGEsIDB4NSwgMHg2NiwgMHg0NCwgMHg0OSwgMHg3OSwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgxMSwgMHg3NCwgMHhiZCwgMHhhZSwgMHg4YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhlYiwgMHgxNSwgMHhkMSwgMHhhYSwgMHhkOSwgMHhhNiwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhjYiwgMHhjNCwgMHg2YywgMHg0OSwgMHg4YywgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGEsIDB4ZjcsIDB4ODIsIDB4ZjgsIDB4NzYsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4ZDksIDB4NzcsIDB4ZjAsIDB4ZmIsIDB4Y2YsIDB4ZmIsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDM0LCAweGZjLCAweDEzLCAweDMyLCAweGEsIDB4NjEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MywgMHg3NywgMHg3NiwgMHhhLCAweGY3LCAweDVjLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDE1LCAweGY3LCAweDQwLCAweGY0LCAweGY3LCAweDExLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweGFkLCAweGZiLCAweDE0LCAweGY3LCAweDI0LCAweDY2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTIsIDB4ZmIsIDB4MjMsIDB4NSwgMHg4NSwgMHhmYiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhhLCAweGZiLCAweDQ5LCAweDkzLCAweGEsIDB4ZDIsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2MSwgMHhhLCAweGNlLCAweGY3LCAweDEwLCAweDc2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjUsIDB4ZjgsIDB4ODksIDB4NmQsIDB4YSwgMHhhNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg4MywgMHhhLCAweGZiLCAweDY2LCAweGZiLCAweDEwLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YTQsIDB4ZjcsIDB4MTAsIDB4NjUsIDB4YSwgMHgyOCwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHgzMiwgMHhhLCAweDVmLCAweGEsIDB4ZjcsIDB4NmUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4MTUsIDB4ZjcsIDB4YzMsIDB4M2UsIDB4YWYsIDB4YzUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4ZjcsIDB4ZCwgMHg1LCAweGZiLCAweDIxLCAweGZjLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweGEsIDB4ZmIsIDB4NGEsIDB4OTMsIDB4YSwgMHhkMywgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYSwgMHhlYSwgMHhkOSwgMHhhMCwgMHhiNSwgMHhkZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhkYywgMHgyZiwgMHhhLCAweDdjLCAweGU3LCAweGY3LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY3LCAweDNlLCAweGU4LCAweDEyLCAweGMyLCAweGYwLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweGY3LCAweDQ1LCAweGViLCAweDU2LCAweGVlLCAweDEzLCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ3LCAweGY3LCAweGM5LCAweDE1LCAweDQ2LCAweDYyLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDNkLCAweDFhLCAweDJjLCAweGYwLCAweDVmLCAweGUzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGRmLCAweGY3LCAweDYsIDB4ZTMsIDB4OGMsIDB4MWUsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4N2IsIDB4YjMsIDB4NjAsIDB4YWIsIDB4OCwgMHgxMywgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHhiMCwgMHhiNSwgMHhjNywgMHhkNCwgMHgxYSwgMHhkYiwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgyMywgMHhmYiwgMHgxYywgMHgyMCwgMHgyOSwgMHgyNSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg2NywgMHhhZSwgMHg2ZSwgMHgxZSwgMHhiOSwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGM1LCAweGMxLCAweGJiLCAweGQyLCAweGQ1LCAweGExLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDhhLCAweDFlLCAweDRiLCAweDQ3LCAweDY2LCAweDUxLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGEzLCAweGIzLCAweDFlLCAweDEzLCAweGY0LCAweDQ2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDE1LCAweGM4LCAweGQ0LCAweGI2LCAweGNmLCAweGQyLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDY3LCAweDhlLCAweDFlLCAweDQ2LCAweDQyLCAweDVlLCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweDVlLCAweGFmLCAweGI0LCAweDFlLCAweGUsIDB4N2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4MSwgMHhhMywgMHhmNywgMHgyMSwgMHhjYSwgMHhmNywgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhmNywgMHgyMSwgMHgzLCAweGEzLCAweGFmLCAweDE1LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YTcsIDB4N2EsIDB4YTUsIDB4NjMsIDB4NTQsIDB4NmUsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4MWUsIDB4ZjgsIDB4MmUsIDB4NTAsIDB4YSwgMHhmYiwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhhLCAweGUsIDB4ZjcsIDB4NWYsIDB4ZWYsIDB4MSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg1LCAweDMsIDB4NzUsIDB4ZjcsIDB4NWYsIDB4MTUsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2LCAweDllLCAweGVmLCAweDUsIDB4ZmQsIDB4NSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4NWYsIDB4ZWYsIDB4MSwgMHhjMCwgMHhmOCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGMwLCAweGY3LCAweDVmLCAweDE1LCAweGY4LCAweDZmLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZWYsIDB4NSwgMHhmYywgMHg2ZiwgMHg2LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmMiwgMHhkNSwgMHhmMiwgMHgxLCAweGI0LCAweGY4LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZDYsIDB4ZjcsIDB4YmIsIDB4MTUsIDB4ZjgsIDB4NjUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhmMiwgMHg1LCAweGZjLCAweDY0LCAweDYsIDB4NTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4MTUsIDB4ZjgsIDB4NjQsIDB4NiwgMHg5ZiwgMHhmMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDY1LCAweDYsIDB4ZSwgMHg3MCwgMHhlMiwgMHhmNywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHg5MSwgMHhhLCAweDliLCAweGY3LCAweDAsIDB4ZjcsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHgzLCAweGY3LCAweDgwLCAweGY4LCAweDQyLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFkLCAweGMxLCAweGQwLCAweDYyLCAweGE4LCAweDRhLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDE5LCAweDlkLCAweDZkLCAweDc4LCAweDk2LCAweDQ0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVjLCAweGZiLCAweDFjLCAweGZiLCAweDEsIDB4ZmIsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZDUsIDB4M2MsIDB4ZjcsIDB4MzUsIDB4ZjcsIDB4ODAsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmMsIDB4ZjcsIDB4NDEsIDB4ZjcsIDB4MTAsIDB4MzksIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4YTUsIDB4MWYsIDB4ZjcsIDB4YiwgMHhiZiwgMHg3NCwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZCwgMHg0NiwgMHg2YywgMHg5ZCwgMHgzZiwgMHhhNywgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHgxOSwgMHg0ZiwgMHg1OCwgMHhiMSwgMHg4NCwgMHhiYywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg3ZCwgMHgxOSwgMHgyMiwgMHg1ZCwgMHg1LCAweDM1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDE1LCAweGY3LCAweDAsIDB4ZjcsIDB4NywgMHhiZiwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhiMSwgMHg1OCwgMHg1NSwgMHgyMywgMHhmYiwgMHg3LCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDNlLCAweDQ0LCAweGE4LCAweGNmLCAweDFlLCAweGUsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmUsIDB4ZjgsIDB4NDUsIDB4NzcsIDB4MSwgMHhmNywgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1ZCwgMHgzLCAweGY3LCAweDgwLCAweGY3LCAweDQ4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweDYsIDB4ZjMsIDB4ZjgsIDB4MWMsIDB4NSwgMHhmYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDIxLCAweGZjLCAweGExLCAweDE1LCAweDVmLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGFjLCAweGM5LCAweGMxLCAweGIyLCAweGMzLCAweGFiLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDU2LCAweDQzLCAweDVmLCAweDViLCAweDVmLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTEsIDB4NzYsIDB4ZjgsIDB4NGIsIDB4ZjcsIDB4MzAsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4MywgMHhmNywgMHg1ZCwgMHgzLCAweGY3LCAweDgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDE1LCAweDY5LCAweGE5LCAweDZkLCAweGMwLCAweGQ0LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweGMwLCAweGJiLCAweDU3LCAweDljLCAweDZhLCAweDRlLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDU0LCAweDFlLCAweDNjLCAweGZjLCAweDhiLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDYsIDB4Y2IsIDB4ZjgsIDB4MjIsIDB4N2IsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGU5LCAweGY3LCAweDkwLCAweGU4LCAweGVhLCAweGU2LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODcsIDB4ZjMsIDB4MywgMHhiNiwgMHgxNiwgMHhmOCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhhLCAweGZiLCAweDc3LCAweDYsIDB4YzAsIDB4ZjcsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg3OCwgMHg4OSwgMHhhLCAweGZiLCAweDc3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4OWMsIDB4OTMsIDB4YTAsIDB4ZGIsIDB4MWIsIDB4YmMsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4ODMsIDB4YjgsIDB4MWYsIDB4YjEsIDB4ZTgsIDB4M2UsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4OTEsIDB4NWMsIDB4OGEsIDB4MTksIDB4NTgsIDB4OGEsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NjYsIDB4NzgsIDB4NTUsIDB4NmQsIDB4N2MsIDB4NWEsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4ODQsIDB4NmYsIDB4MTgsIDB4MjEsIDB4NiwgMHg3NywgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY1LCAweDYsIDB4NTUsIDB4ZmIsIDB4OTAsIDB4NSwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZjgsIDB4NzUsIDB4ZjgsIDB4NzQsIDB4MTUsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhOCwgMHhmNywgMHgyNiwgMHg1LCAweDIxLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4ZmQsIDB4NiwgMHgxNSwgMHhmNywgMHhiNCwgMHgzNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweDYsIDB4Y2MsIDB4ZjcsIDB4ZDgsIDB4NSwgMHhmYiwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhhLCAweGUxLCAweDYsIDB4NWUsIDB4ZmIsIDB4N2UsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHhlMCwgMHgzMSwgMHgxNSwgMHhmNywgMHhiNiwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDI4LCAweDYsIDB4YjksIDB4ZjcsIDB4N2UsIDB4NSwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhhLCAweDI4LCAweDYsIDB4OTksIDB4YzksIDB4OTksIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4N2MsIDB4YWQsIDB4ODgsIDB4MTksIDB4YWIsIDB4ZTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg5MCwgMHhmYiwgMHhlLCAweDg4LCAweDZkLCAweGZiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDdmLCAweDU2LCAweDUsIDB4MjksIDB4M2MsIDB4YSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDVlLCAweGZiLCAweDdlLCAweDRlLCAweGEsIDB4ZSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhmNywgMHg3ZSwgMHhlNywgMHhmNCwgMHhlOCwgMHgxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGVmLCAweDMsIDB4YTcsIDB4YWYsIDB4MTUsIDB4N2QsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4NjYsIDB4ZTMsIDB4MWIsIDB4ZjcsIDB4NDMsIDB4ZjIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHgxNywgMHhkZSwgMHg1NSwgMHhkZCwgMHhmYiwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg1YywgMHg4NSwgMHg3NywgMHg3NSwgMHgxZiwgMHhhNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHg1LCAweGY3LCAweGIzLCAweDk0LCAweGEsIDB4ZmMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg0YiwgMHhmYiwgMHhkOCwgMHhjZCwgMHg3MSwgMHg1LCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGI0LCAweDhiLCAweGE2LCAweDFiLCAweGNiLCAweGJkLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDNmLCAweDRiLCAweDUwLCAweDJkLCAweDQ5LCAweDRmLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDUzLCAweDFmLCAweGUsIDB4OGIsIDB4ZTgsIDB4ZjcsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4ZWYsIDB4ZTgsIDB4OGYsIDB4NzcsIDB4MTIsIDB4MTMsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmYsIDB4MTYsIDB4ZjcsIDB4YjgsIDB4OTQsIDB4YSwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY1LCAweGY4LCAweGE5LCAweDUsIDB4ZmIsIDB4MWIsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiNSwgMHg2LCAweDM0LCAweGZjLCAweDRjLCAweDdiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZTEsIDB4MmUsIDB4MTUsIDB4ZjcsIDB4YjksIDB4NiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHg1LCAweDI3LCAweDYsIDB4YmMsIDB4ZjcsIDB4ODYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg2LCAweDlkLCAweGU5LCAweDUsIDB4MjcsIDB4NiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHg1LCAweDEzLCAweGUwLCAweDk3LCAweGMzLCAweGU5LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDhkLCAweGFhLCAweGU4LCAweDE4LCAweGZiLCAweDE2LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDAsIDB4OGEsIDB4NmUsIDB4ZmIsIDB4MjIsIDB4ODAsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4MjcsIDB4NDQsIDB4YSwgMHhlZiwgMHg2LCAweDViLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDdiLCAweGEsIDB4ZSwgMHhmYiwgMHgxNywgMHhlYSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGVhLCAweGU4LCAweGU5LCAweDEsIDB4ZjcsIDB4YzMsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg4ZCwgMHg2ZCwgMHgxNSwgMHgzYiwgMHgyZSwgMHg1LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGMwLCAweDg2LCAweGJkLCAweDFiLCAweGRjLCAweGU4LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweGIzLCAweDFmLCAweGY3LCAweDFiLCAweGY3LCAweGUyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MywgMHg2LCAweGIxLCAweGVhLCAweDY1LCAweGEsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YTMsIDB4YTMsIDB4YzIsIDB4MWIsIDB4YTQsIDB4YWEsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4YTAsIDB4MWYsIDB4YzEsIDB4ZTksIDB4NSwgMHg5MCwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4ZCwgMHg2NSwgMHgxYiwgMHhmYiwgMHgxMCwgMHg0MywgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHg1ZiwgMHgxZiwgMHg3YiwgMHg2OCwgMHg1LCAweDIwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4MmMsIDB4NSwgMHhmNywgMHgxLCAweDYsIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhZSwgMHg1LCAweDNlLCAweDZkLCAweDc0LCAweDgwLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDcxLCAweDcwLCAweDhmLCAweDhkLCAweDc0LCAweDFmLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZTgsIDB4ZDYsIDB4ZTgsIDB4ZjcsIDB4ZjcsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkMCwgMHhlZiwgMHgzLCAweGM5LCAweGY3LCAweDNjLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE0LCAweDYsIDB4NzksIDB4NDAsIDB4NSwgMHhmYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweGEsIDB4ZjcsIDB4YmQsIDB4ODksIDB4YSwgMHgzMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGQ2LCAweDUsIDB4ZTAsIDB4ODksIDB4YSwgMHgzNSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGY3LCAweGY3LCAweDUsIDB4ZmIsIDB4MCwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGZjLCAweDQsIDB4NSwgMHhmNywgMHg2LCAweDk4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYyLCAweGY3LCAweDdkLCAweDViLCAweGZiLCAweDdkLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg2MSwgMHhmOSwgMHg0MSwgMHgzLCAweDYxLCAweDgzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDU3LCAweGY5LCAweDQsIDB4ZjksIDB4MzQsIDB4NGIsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweGZiLCAweDI2LCAweGU1LCAweGVhLCAweGUzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGU0LCAweDQ1LCAweGU0LCAweDEyLCAweGIxLCAweGVkLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGI4LCAweDczLCAweDE1LCAweDYyLCAweDMxLCAweDUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4ZDAsIDB4N2QsIDB4ZDUsIDB4MWIsIDB4ZjcsIDB4NTAsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4ZjIsIDB4YTAsIDB4MWYsIDB4YzksIDB4ZjcsIDB4YmQsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg5ZSwgMHhlNCwgMHg1LCAweGZiLCAweDNkLCAweDYsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4NSwgMHgxMywgMHhkOCwgMHhhOCwgMHg2YSwgMHg1ZiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHgxYiwgMHhmYiwgMHgyZSwgMHhmYiwgMHgxZiwgMHhmYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFiLCAweDI3LCAweGQ2LCAweDQzLCAweGY3LCAweDE0LCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDhlLCAweGE5LCAweGI4LCAweDFmLCAweDJjLCAweDc3LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGZiLCAweDksIDB4MWIsIDB4NDEsIDB4MzMsIDB4YTAsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4MWYsIDB4ZTYsIDB4ZjcsIDB4OGUsIDB4MTUsIDB4ZGIsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4ZTEsIDB4ZDQsIDB4YjksIDB4NjAsIDB4NGUsIDB4OGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NDEsIDB4NWQsIDB4MmMsIDB4NGEsIDB4NTMsIDB4YjIsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHhmYiwgMHgyNiwgMHhkZSwgMHhlMywgMHhkYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhkZCwgMHgxLCAweDlkLCAweGVkLCAweDMsIDB4YTQsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NjIsIDB4MzgsIDB4NSwgMHg3YSwgMHhkYiwgMHhkMCwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHgxYiwgMHhmNywgMHg1MCwgMHhiNCwgMHhlMCwgMHhlYSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjOSwgMHhmNywgMHhhZSwgMHg1YywgMHhhLCAweDllLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4M2QsIDB4NiwgMHg4MywgMHg2NiwgMHg1LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDVmLCAweDlmLCAweDU4LCAweDFiLCAweGZiLCAweDJlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDI3LCAweGZiLCAweDEwLCAweDJlLCAweGQ2LCAweDQ5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweGJlLCAweGMwLCAweDhlLCAweGE2LCAweGI4LCAweDFmLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDgxLCAweDZjLCAweGZiLCAweDksIDB4MWIsIDB4NDEsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OTYsIDB4NjcsIDB4MWYsIDB4ZTYsIDB4ZjcsIDB4N2EsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZTEsIDB4YzIsIDB4ZTEsIDB4ZDQsIDB4YjksIDB4NjMsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MWUsIDB4MzksIDB4NDEsIDB4NjEsIDB4MmMsIDB4NGEsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4YzIsIDB4MWUsIDB4ZjcsIDB4NjUsIDB4ZjcsIDB4YjUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4NiwgMHhmNywgMHg1NCwgMHhmNywgMHgyNCwgMHg1NywgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0NiwgMHg1ZSwgMHhhLCAweDdjLCAweGU5LCAweDM5LCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDkwLCAweGU5LCAweGY1LCAweGRlLCAweDEyLCAweGY3LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweGY3LCAweGUsIDB4ZWQsIDB4MTMsIDB4N2MsIDB4ODgsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4NDUsIDB4NiwgMHhlNiwgMHhmOCwgMHg1NiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDliLCAweGFkLCAweDk3LCAweGRkLCAweDFiLCAweGJlLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDZhLCAweDZiLCAweDQwLCAweDc3LCAweDc0LCAweDg2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDdkLCAweDVjLCAweDU2LCAweDQ2LCAweDFhLCAweDRmLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGNiLCAweDczLCAweDFlLCAweGFhLCAweDgwLCAweGNhLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDFhLCAweDEzLCAweGJjLCAweDY5LCAweDRkLCAweDY0LCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDYyLCAweDlkLCAweDk3LCAweDcwLCAweDFlLCAweDQ2LCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NjcsIDB4YzIsIDB4YjAsIDB4NzgsIDB4YzIsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjcsIDB4MiwgMHhkYSwgMHhmNiwgMHhjYSwgMHg0NiwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhhMCwgMHgxZiwgMHg3MSwgMHg5MywgMHg0ZCwgMHg5OSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhMywgMHhiYywgMHg5ZSwgMHhhNywgMHg5NCwgMHgxZSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhjOSwgMHhhMSwgMHhkMywgMHgxYSwgMHhkNiwgMHg3NywgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzZiwgMHhmYiwgMHgyZiwgMHg1YywgMHg1NSwgMHhmYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDFlLCAweDg2LCAweDc1LCAweDUsIDB4M2IsIDB4NmYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHg2LCAweDEzLCAweDdjLCAweDU5LCAweGZiLCAweDkwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NiwgMHhlLCAweGY3LCAweDRjLCAweGY3LCAweDdiLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGMsIDB4ZjgsIDB4Y2YsIDB4MTUsIDB4ZjcsIDB4NjMsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YmMsIDB4ZmIsIDB4NTAsIDB4ZjMsIDB4NSwgMHhlLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY4LCAweDdhLCAweDc3LCAweDEsIDB4YzEsIDB4OWEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NmIsIDB4ZjcsIDB4NGIsIDB4YTAsIDB4ZjcsIDB4YSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhmNywgMHg0ZCwgMHg3YSwgMHgyZCwgMHhmNywgMHhkMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhmYywgMHhhLCAweGZiLCAweDI4LCAweDUsIDB4ZSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhmNywgMHg5NiwgMHhjNywgMHgxLCAweGM1LCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHhmNywgMHg1LCAweDMsIDB4YzUsIDB4ZjcsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4YSwgMHg5YywgMHhmYiwgMHg0YiwgMHg1MSwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4NzYsIDB4ZjgsIDB4YywgMHg3NywgMHgxLCAweGY3LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEsIDB4ZDAsIDB4ZjcsIDB4NSwgMHgzLCAweGM1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDE1LCAweGFmLCAweDRjLCAweGY3LCAweDllLCAweGY3LCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVlLCAweGY3LCAweDUyLCAweDUzLCAweDRkLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEzLCAweDUsIDB4OWEsIDB4ZmIsIDB4MTAsIDB4MTUsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4ZjcsIDB4OGUsIDB4ZjcsIDB4NGUsIDB4ZmIsIDB4NGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4NTMsIDB4NGQsIDB4ZjcsIDB4MTMsIDB4ZmIsIDB4MTMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGQxLCAweGY4LCAweGMsIDB4MSwgMHhmNywgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgzLCAweGY3LCAweDEyLCAweGY3LCAweDk3LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGZiLCAweDUxLCAweGM5LCAweGJmLCAweGZiLCAweDNmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGY3LCAweDcyLCAweGY3LCAweDExLCAweDY1LCAweGNhLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhkMSwgMHhmOCwgMHhjLCAweDEsIDB4ZjcsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4MTUsIDB4YjIsIDB4NGQsIDB4ZjcsIDB4YzksIDB4ZjcsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4N2EsIDB4ZjcsIDB4NGYsIDB4NGIsIDB4NTYsIDB4ZjcsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4NSwgMHhlLCAweDgxLCAweGEsIDB4ZjEsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg4ZCwgMHgxNiwgMHhmNywgMHg5NCwgMHg1NSwgMHhhLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjIsIDB4ZjcsIDB4NTcsIDB4NSwgMHhiYywgMHhkYywgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhhNywgMHgxYiwgMHhiMSwgMHg5ZiwgMHg3YiwgMHg3NiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4MSwgMHg4OSwgMHg4MSwgMHgxZiwgMHg2NiwgMHhmYiwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDNiLCAweDZmLCAweGEsIDB4ZjcsIDB4OTYsIDB4M2YsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHg2LCAweGFmLCAweGY3LCAweDQ4LCAweDUsIDB4OGYsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OWQsIDB4OWQsIDB4MWEsIDB4YzUsIDB4NzcsIDB4YzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg0ZiwgMHg1NywgMHg3NiwgMHg3MSwgMHg1NSwgMHgxZSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3ZCwgMHg1LCAweGZiLCAweDQ2LCAweDQ0LCAweGEsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgzMSwgMHhmYywgMHg0YSwgMHg1LCAweDNhLCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg3YywgMHhmNywgMHg0MSwgMHgxLCAweGJhLCAweGMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGMyLCAweDMsIDB4ZjcsIDB4OWEsIDB4ZjgsIDB4OGYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4NzgsIDB4ZjcsIDB4ODAsIDB4ZjcsIDB4MjMsIDB4MzEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYywgMHgzNCwgMHhmYiwgMHgyZSwgMHgxNSwgMHhjMiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4MiwgMHhmNywgMHgyMywgMHgzMSwgMHhhOSwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWYsIDB4ZjcsIDB4MiwgMHgxLCAweGUzLCAweGY4LCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZTMsIDB4ZjcsIDB4NWYsIDB4MTUsIDB4ZjgsIDB4MjUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhmNywgMHgyLCAweDUsIDB4ZmMsIDB4MjUsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGVhLCAweGY3LCAweDkzLCAweGVhLCAweGM5LCAweGY3LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4ZjMsIDB4ZjcsIDB4NCwgMHgzLCAweGY3LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGEsIDB4ZmIsIDB4YmIsIDB4ZmQsIDB4MjYsIDB4MTUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NiwgMHg5ZiwgMHhlYSwgMHg4ZiwgMHhhLCAweDYsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZjIsIDB4NSwgMHhmYiwgMHg3ZiwgMHg2LCAweDc3LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MWQsIDB4NiwgMHg1OSwgMHhmYiwgMHg5MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ0LCAweDYsIDB4ZSwgMHg3OCwgMHhhLCAweDkxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2UsIDB4ZjgsIDB4NzcsIDB4MTUsIDB4ZjcsIDB4ZGYsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZjAsIDB4ZmIsIDB4ZDYsIDB4ZmIsIDB4YywgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGZjLCAweGIxLCAweDJlLCAweGEsIDB4NzgsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg3NywgMHgxLCAweGY3LCAweDVmLCAweGY4LCAweDc0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM3LCAweGYzLCAweGY3LCAweDksIDB4MjMsIDB4YzgsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHhmNywgMHgyMiwgMHg1LCAweDMwLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZmIsIDB4MjEsIDB4NSwgMHhmYiwgMHgxLCAweGZjLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweGEsIDB4NzgsIDB4YSwgMHhjOSwgMHhmNywgMHgxMSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDI3LCAweGY4LCAweDg5LCAweDE1LCAweGY3LCAweDEsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ZjcsIDB4MTIsIDB4ODYsIDB4YSwgMHhmYiwgMHg1ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxNSwgMHhmNywgMHgwLCAweDYsIDB4YTQsIDB4ZjcsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgxLCAweDYsIDB4ZmIsIDB4NjEsIDB4ZmQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhhLCAweDc4LCAweGEsIDB4OTEsIDB4YSwgMHhmNywgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhjNCwgMHgxNSwgMHhmNywgMHhhYSwgMHgzZSwgMHhhYywgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5MCwgMHhmNywgMHhjLCAweDUsIDB4ZmIsIDB4ODIsIDB4ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4MmUsIDB4YSwgMHhmYiwgMHgyNiwgMHhlYSwgMHhmOCwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhiZCwgMHhmNywgMHgyYiwgMHhmYiwgMHgyNSwgMHhmNywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHhlMCwgMHhmNywgMHgyMCwgMHg2OSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGZkLCAweDU5LCAweDE1LCAweDc3LCAweDJjLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NiwgMHg5ZiwgMHhlYSwgMHg1LCAweDQxLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhmOCwgMHg4NCwgMHg1LCAweGZiLCAweDM5LCAweDYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NSwgMHhjZSwgMHg2LCAweDMxLCAweGZjLCAweDI1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4ZjgsIDB4NjksIDB4ZjgsIDB4YzgsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg2LCAweGFjLCAweGY3LCAweDI1LCAweDUsIDB4ZmIsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweGExLCAweGZkLCAweDRhLCAweDE1LCAweDVlLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODYsIDB4OWEsIDB4YTQsIDB4N2QsIDB4YzUsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4OWUsIDB4OGIsIDB4YSwgMHhmYiwgMHg2NywgMHg2ZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDYsIDB4NDQsIDB4ZmIsIDB4Y2UsIDB4NSwgMHg0NSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NiwgMHg2MSwgMHgxYiwgMHg1NywgMHg3ZiwgMHg5YSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxZiwgMHhlLCAweGZiLCAweDI2LCAweGU2LCAweGY4LCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGMzLCAweGY3LCAweDI1LCAweDEsIDB4ZjcsIDB4YzUsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmOCwgMHhmLCAweGY4LCAweDk1LCAweDE1LCAweGY3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhYywgMHhmNywgMHgyNSwgMHg1LCAweGZiLCAweGMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhlLCAweGZkLCAweDRhLCAweDE1LCAweDVlLCAweDMwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4YzEsIDB4YzIsIDB4ODEsIDB4YzUsIDB4MWIsIDB4ZjcsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4OGIsIDB4YSwgMHhmYywgMHg3LCAweDZlLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4NiwgMHg0NCwgMHhmYiwgMHhjZSwgMHg1LCAweDQ1LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDY2LCAweDNiLCAweDFiLCAweDU3LCAweDVkLCAweDkzLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDFmLCAweGUsIDB4OGIsIDB4ZTksIDB4MSwgMHhlOSwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNSwgMHhmNywgMHg5MSwgMHgzLCAweDg3LCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDYsIDB4YWUsIDB4ZjcsIDB4M2QsIDB4YjIsIDB4YTMsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YWUsIDB4NjgsIDB4YTcsIDB4NjQsIDB4MTksIDB4NmYsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg5MSwgMHg2LCAweDlkLCAweGU5LCAweDUsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2YSwgMHhiZCwgMHg0NCwgMHhjYywgMHg2OCwgMHhhYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhmMiwgMHgxOCwgMHhmNywgMHgwLCAweDU1LCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NmYsIDB4YSwgMHg5ZiwgMHg2LCAweDIwLCAweDQzLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGY1LCAweDUsIDB4ZmIsIDB4NDQsIDB4NmYsIDB4YSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDMyLCAweGZjLCAweDRhLCAweDUsIDB4M2MsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweGEsIDB4ZjcsIDB4OTgsIDB4ZWUsIDB4MywgMHhjZCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1NCwgMHg2LCAweDlmLCAweGU5LCAweDNlLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmOCwgMHhhOCwgMHg1LCAweGZiLCAweDk0LCAweDg3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzAsIDB4NiwgMHgzMSwgMHhmYywgMHg0YSwgMHg4ZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhhZiwgMHg3NiwgMHhmOCwgMHg3YSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweDVjLCAweDE1LCAweGY4LCAweDI1LCAweGZiLCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGU5LCAweGZiLCAweGQxLCAweGY3LCAweDJhLCAweGY4LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4OWMsIDB4ZTksIDB4ZmMsIDB4NmEsIDB4ZmIsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweDg0LCAweDc2LCAweGIwLCAweDc2LCAweGY3LCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGNlLCAweGRlLCAweGY3LCAweGIsIDB4ZTgsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4ZWEsIDB4MTMsIDB4YmMsIDB4NTIsIDB4YSwgMHgxMywgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhhLCAweDdjLCAweDdmLCAweDg4LCAweDgzLCAweDdmLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDlhLCAweGE4LCAweGJlLCAweDg5LCAweDhlLCAweDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NiwgMHg5ZiwgMHhkZSwgMHg1LCAweGZiLCAweDNlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OTIsIDB4OTEsIDB4YTgsIDB4OGEsIDB4YWEsIDB4OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg2LCAweDlmLCAweGRlLCAweDUsIDB4ZmIsIDB4M2EsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjYiwgMHhhYiwgMHg0NywgMHhhLCAweDNmLCAweDNlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDFmLCAweDgwLCAweDNiLCAweDcsIDB4NzgsIDB4MzgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHg2LCAweDZjLCAweDgzLCAweDZlLCAweDhjLCAweDg0LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDYsIDB4NzgsIDB4MzgsIDB4NSwgMHhlOCwgMHg2LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDY3LCAweDU2LCAweDQzLCAweDVhLCAweDgsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhmNywgMHg1LCAweDEsIDB4ZjgsIDB4MTgsIDB4ZWUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhmNywgMHhjMCwgMHgxNSwgMHhmNywgMHhmZiwgMHg2LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDU5LCAweDUsIDB4ZWUsIDB4NiwgMHhjMSwgMHhmNywgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZjLCAweDYzLCAweDYsIDB4ZSwgMHg4MSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGY0LCAweDMsIDB4YmMsIDB4MTYsIDB4ZjgsIDB4NmQsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg0YywgMHg2LCAweGJiLCAweGY3LCAweDczLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGFhLCAweDk5LCAweGNkLCAweGZiLCAweDE1LCAweDZiLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg4LCAweDUsIDB4ZmIsIDB4YWUsIDB4NiwgMHg3NiwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDQ2LCAweDYsIDB4NjQsIDB4ZmIsIDB4NDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4NmEsIDB4N2UsIDB4NGEsIDB4ZjcsIDB4MTcsIDB4YWIsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTcsIDB4NSwgMHhmYiwgMHg0YiwgMHg2LCAweGUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4ZjcsIDB4OTAsIDB4ZWEsIDB4MSwgMHhkNCwgMHhkZCwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHgzLCAweDc2LCAweDE2LCAweGY3LCAweDhhLCAweDYsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4NSwgMHgzNCwgMHg2LCAweGI2LCAweGY3LCAweDdiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YTAsIDB4YjAsIDB4OWIsIDB4YTEsIDB4MWIsIDB4YWEsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NzgsIDB4ODYsIDB4OGIsIDB4ODcsIDB4OGEsIDB4ODcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4ZmIsIDB4YzcsIDB4NSwgMHhmNywgMHgzNSwgMHg2LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweDUsIDB4M2QsIDB4NiwgMHhiNiwgMHhmNywgMHg3MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGE3LCAweGFlLCAweDk0LCAweDliLCAweDFiLCAweGFkLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDgxLCAweDg5LCAweDFmLCAweDRmLCAweGZiLCAweGQ1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4NiwgMHg5YiwgMHhlYSwgMHg1LCAweDUzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4ZjcsIDB4NzIsIDB4NSwgMHg4ZCwgMHg5NSwgMHg4YywgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHgxYSwgMHhjOSwgMHg2NSwgMHhiOCwgMHg0NiwgMHg2MiwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg2YywgMHg2YSwgMHgxZSwgMHhiNSwgMHg3YiwgMHg2NiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHgxYiwgMHg2YywgMHg2YywgMHg3ZiwgMHg3MywgMHg3MywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhhMywgMHg1LCAweGZiLCAweDNiLCAweDYsIDB4NzksIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4YSwgMHg1YSwgMHhmYiwgMHg5MCwgMHg1LCAweDNkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmOCwgMHg4ZCwgMHhkYiwgMHgxLCAweGRhLCAweGY4LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZGEsIDB4ZjgsIDB4OGQsIDB4MTUsIDB4ZjgsIDB4M2IsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHhkYiwgMHg1LCAweGZjLCAweDNiLCAweDYsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHhmNywgMHgyLCAweDEsIDB4YzYsIDB4ZjgsIDB4NjMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhmNywgMHg1ZiwgMHg3MywgMHhhLCAweGUsIDB4ZmIsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHgyYSwgMHhlMCwgMHg0MiwgMHhlNCwgMHhmNywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHgxMiwgMHgxMywgMHhkMCwgMHhhOCwgMHhmYiwgMHgyMiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHg2LCAweGIxLCAweGY3LCAweDQ4LCAweDUsIDB4N2QsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4N2IsIDB4YjIsIDB4MWIsIDB4Y2MsIDB4YjgsIDB4YWIsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4MWYsIDB4MTMsIDB4YjAsIDB4N2YsIDB4NTcsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg2LCAweDllLCAweGU0LCAweDUsIDB4M2IsIDB4NiwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkZSwgMHg4ZCwgMHhhLCAweDYzLCAweGZiLCAweDU3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4NjgsIDB4NWMsIDB4NjIsIDB4NzAsIDB4NTAsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NzQsIDB4YTEsIDB4YWQsIDB4OTIsIDB4OGIsIDB4OTQsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4MWYsIDB4YzEsIDB4ZjcsIDB4OWUsIDB4OGQsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGY4LCAweDRlLCAweDMsIDB4YmMsIDB4ZWYsIDB4MTUsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4ZjcsIDB4NTIsIDB4ZjcsIDB4MzUsIDB4ZjcsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4ZDUsIDB4YzgsIDB4ZmIsIDB4MTUsIDB4ZjcsIDB4MzMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZjcsIDB4MzAsIDB4NWIsIDB4YzcsIDB4ZmIsIDB4NTMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZmIsIDB4MTMsIDB4ZjcsIDB4MzQsIDB4NDEsIDB4NGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZmIsIDB4MzMsIDB4NSwgMHhlLCAweDhiLCAweGU5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweGVhLCAweDNiLCAweGU4LCAweDEyLCAweDEzLCAweGEwLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweDk2LCAweDNmLCAweGEsIDB4MzksIDB4NiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1ZCwgMHg1LCAweGI2LCAweGM2LCAweGQzLCAweGEyLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGJkLCAweDlhLCAweDdhLCAweDcyLCAweDgyLCAweDg5LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDgwLCAweDFmLCAweDY0LCAweGZiLCAweDU3LCAweDUsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4YSwgMHhmNywgMHg5MywgMHgzZiwgMHhhLCAweDNiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4ZjcsIDB4NmQsIDB4NSwgMHgxMywgMHhjMCwgMHg4ZSwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg5NiwgMHg5NiwgMHgxYSwgMHgxMywgMHhhMCwgMHhkMCwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHgzZSwgMHg1MiwgMHg0YiwgMHg2ZiwgMHg2ZiwgMHg1YSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhjMCwgMHg5MywgMHhiNiwgMHg1LCAweGZiLCAweDQ2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4MmMsIDB4NSwgMHhkZSwgMHg2LCAweDU4LCAweGZiLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4M2IsIDB4NiwgMHhlLCAweDdjLCAweGU0LCAweGY3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGY3LCAweDcwLCAweGU5LCAweDEsIDB4ZjcsIDB4MWQsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzcsIDB4ZTcsIDB4MywgMHhiNSwgMHg4MiwgMHgxNSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhiNSwgMHg4OSwgMHhiZCwgMHgxYiwgMHhmNywgMHg1YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHhmNywgMHgyOCwgMHhmNywgMHhiMCwgMHhmMiwgMHg2MiwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxYSwgMHhmYiwgMHgxNSwgMHhmYiwgMHg5LCAweGZiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YSwgMHgxZiwgMHgyZSwgMHg4OSwgMHhjZSwgMHgzOCwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiNiwgMHhiNSwgMHg5ZCwgMHg5YiwgMHhhOCwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDZhLCAweGZiLCAweDFlLCAweDVhLCAweGZiLCAweDQ4LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDIzLCAweGY3LCAweGM2LCAweDE1LCAweDg2LCAweDUzLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDU2LCAweDY5LCAweGIxLCAweGM0LCAweGRmLCAweGRiLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGUzLCAweDk3LCAweDNkLCAweDRiLCAweDg3LCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZTcsIDB4ZjcsIDB4ODksIDB4ZTcsIDB4ZjcsIDB4YywgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDM4LCAweGY4LCAweDk1LCAweDE1LCAweGRhLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YTQsIDB4OWEsIDB4OWMsIDB4YjAsIDB4YWYsIDB4MWIsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4N2EsIDB4N2IsIDB4YTMsIDB4MWYsIDB4N2QsIDB4YTEsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YTQsIDB4MWIsIDB4ZWQsIDB4YmMsIDB4ZTMsIDB4YWYsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4M2QsIDB4YTIsIDB4NSwgMHg2MiwgMHg3MSwgMHg3ZSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgxYiwgMHg3OCwgMHg3NywgMHg5OCwgMHg5OCwgMHg3NywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg3MiwgMHg3MiwgMHg5ZCwgMHg2ZiwgMHgxYiwgMHgyZCwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg2MCwgMHg3MiwgMHgxZiwgMHhmYiwgMHg0NCwgMHhmYywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg4YywgMHg2LCAweDljLCAweGU3LCAweDUsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiMSwgMHhmNywgMHg1NiwgMHg1LCAweGI2LCAweGM0LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGE3LCAweDFiLCAweGJhLCAweDliLCAweDdjLCAweDc1LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDgwLCAweDg5LCAweDdmLCAweDFmLCAweDY2LCAweGZiLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4M2YsIDB4NiwgMHg3OCwgMHgyZiwgMHg1LCAweGY3LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OWQsIDB4ZTcsIDB4NSwgMHg0MCwgMHg2LCAweGI0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDUsIDB4OGUsIDB4OTgsIDB4OGMsIDB4OTcsIDB4OTcsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4NTAsIDB4YjAsIDB4NDIsIDB4NTUsIDB4NGIsIDB4NmYsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4MWUsIDB4OTQsIDB4YjUsIDB4NSwgMHhmYiwgMHg0MCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDJmLCAweDhhLCAweGEsIDB4NWEsIDB4ZmIsIDB4ODksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHg2LCAweGUsIDB4ZjcsIDB4MjksIDB4ZTYsIDB4ZjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHgxMiwgMHhmNywgMHg0LCAweGU5LCAweDg0LCAweGU1LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweDgxLCAweGU5LCAweDEzLCAweGU4LCAweGNlLCAweDVlLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDYsIDB4YmYsIDB4ZjcsIDB4NTYsIDB4NSwgMHhmMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDk4LCAweGEsIDB4ZWEsIDB4NiwgMHhiZCwgMHhmNywgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDUsIDB4MzQsIDB4YSwgMHgyMSwgMHg2LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYsIDB4NSwgMHhlZCwgMHgzNCwgMHhhLCAweDEzLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDYsIDB4YzEsIDB4ZjcsIDB4NjIsIDB4NSwgMHgzMCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGZiLCAweDYyLCAweDUsIDB4MjUsIDB4NiwgMHhjMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg1LCAweDMyLCAweDYsIDB4NTMsIDB4ZmIsIDB4NjIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1LCAweDM2LCAweGEsIDB4ZjYsIDB4NiwgMHg2YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDUsIDB4MjgsIDB4MzYsIDB4YSwgMHgxMywgMHhlOCwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweGIsIDB4ZTYsIDB4MTUsIDB4YWIsIDB4ZjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGYzLCAweDYsIDB4NmIsIDB4ZmIsIDB4NiwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ZWIsIDB4ZjcsIDB4YTksIDB4ZWIsIDB4MSwgMHhhNCwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlZiwgMHhmMCwgMHgzLCAweGE0LCAweGY3LCAweDNjLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFiLCAweGY3LCAweDE3LCAweDViLCAweGY0LCAweGY3LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweGU1LCAweGY3LCAweDRkLCAweGVlLCAweDRiLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM1LCAweGZiLCAweDJlLCAweGZiLCAweDNmLCAweDIyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDFlLCAweGYxLCAweDliLCAweDE1LCAweGYzLCAweGU4LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweGY3LCAweDMsIDB4YWYsIDB4NTEsIDB4NTQsIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxLCAweDU4LCAweDMzLCAweDU0LCAweDJjLCAweDllLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4NWQsIDB4YSwgMHhmNywgMHg4OCwgMHhmOCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHhkZiwgMHhkOCwgMHg3NywgMHhmMCwgMHhmYiwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjLCAweDUsIDB4ZmIsIDB4NjUsIDB4ZmMsIDB4MTIsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2MywgMHhhLCAweGY3LCAweDcxLCAweDc3LCAweDQ1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4ZjgsIDB4OTUsIDB4MTUsIDB4YzAsIDB4NjcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4ZjcsIDB4MCwgMHhmNywgMHgxMywgMHhmYiwgMHgwLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGZiLCAweDE4LCAweGY3LCAweDI1LCAweDRlLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZmMsIDB4ODYsIDB4MzAsIDB4YSwgMHhmYiwgMHgzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDJkLCAweGEsIDB4NjMsIDB4YSwgMHhjYywgMHhmNywgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhhLCAweGY4LCAweDIxLCAweGY4LCAweDg5LCAweDcyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjgsIDB4ZmIsIDB4MTAsIDB4NzIsIDB4YSwgMHhmYiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg2NiwgMHgyOSwgMHhhLCAweDdjLCAweGVhLCAweGUwLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweGViLCAweDEsIDB4NzYsIDB4ZWYsIDB4MywgMHhmNywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHgxNSwgMHg2OSwgMHhhMywgMHhhMSwgMHg2OCwgMHhlNywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhiYywgMHg5OSwgMHhhMCwgMHhjNiwgMHgxZiwgMHg3ZSwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDc0LCAweDQ2LCAweDYyLCAweDgyLCAweDczLCAweDFiLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGIwLCAweGE2LCAweDk0LCAweDhjLCAweDkyLCAweDhlLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDhhLCAweDYsIDB4OTcsIDB4YWQsIDB4OTUsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4MWEsIDB4ZGUsIDB4NmMsIDB4ZGMsIDB4MmMsIDB4NWMsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NjgsIDB4NjMsIDB4MWUsIDB4YjEsIDB4NzEsIDB4NWMsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4MWIsIDB4ZmIsIDB4MzIsIDB4MjksIDB4ZmIsIDB4MzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NDQsIDB4YTgsIDB4MzksIDB4ZjcsIDB4ZSwgMHhkMiwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhhMywgMHhhMywgMHgxZiwgMHhlMSwgMHhmNywgMHg2MiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg5NywgMHhiNiwgMHhjNSwgMHhiZiwgMHgxYiwgMHhkMCwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHg3NSwgMHg4OCwgMHgxZiwgMHhmYywgMHg1MSwgMHhmYiwgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGMyLCAweGIxLCAweGY3LCAweDM3LCAweGVhLCAweGJiLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDZiLCAweDQxLCAweDYwLCAweGZiLCAweDFiLCAweDM4LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGExLCAweGIxLCAweDFlLCAweGUsIDB4ZmIsIDB4NWIsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHg1OSwgMHhlMiwgMHgzLCAweGY3LCAweGM5LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDc4LCAweDJlLCAweDU2LCAweDQwLCAweDY0LCAweGE1LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGE5LCAweGE5LCAweDk3LCAweGEwLCAweGE1LCAweDFmLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDUsIDB4N2IsIDB4ODAsIDB4NjQsIDB4NzEsIDB4NzIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ODIsIDB4OTEsIDB4OWUsIDB4YjEsIDB4ZTcsIDB4YmEsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4MWYsIDB4ZSwgMHg1ZCwgMHhhLCAweGY3LCAweDZkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDE1LCAweGY3LCAweGM5LCAweDNlLCAweGFlLCAweGM2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGY3LCAweGMsIDB4NSwgMHhmYiwgMHg5NiwgMHhmYywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhhLCAweDhiLCAweGU4LCAweDEsIDB4ZjcsIDB4OWMsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjZCwgMHgxNiwgMHhmOCwgMHg1NSwgMHg5NCwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDYsIDB4ZjUsIDB4ZjgsIDB4OWYsIDB4ZmIsIDB4YTMsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4MzAsIDB4ZjcsIDB4M2YsIDB4YWQsIDB4MzgsIDB4ZmMsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg0NywgMHg2LCAweGUsIDB4NWQsIDB4Y2UsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4YjcsIDB4Y2YsIDB4OGEsIDB4ZDAsIDB4ZjcsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4YzQsIDB4Y2YsIDB4ZjcsIDB4N2QsIDB4Y2UsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4MTMsIDB4YWYsIDB4ZjcsIDB4YzYsIDB4NWQsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NiwgMHg5OCwgMHhjZSwgMHg1LCAweGZiLCAweDFhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4ZDgsIDB4NSwgMHhhYywgMHhhMCwgMHhhYSwgMHhiNCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhZiwgMHg3YiwgMHhjNCwgMHgzYiwgMHg1ZiwgMHg1ZSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg2OCwgMHgxZSwgMHg4MCwgMHg0YywgMHg1LCAweGNlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OTAsIDB4OTEsIDB4YTYsIDB4YjYsIDB4MWIsIDB4OWYsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NzUsIDB4NzksIDB4N2UsIDB4NzMsIDB4NzksIDB4N2UsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDEsIDB4ZmIsIDB4MTksIDB4NSwgMHhmYiwgMHhmZSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxMywgMHg1ZiwgMHhjNSwgMHg1OCwgMHhmOSwgMHhkLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDRkLCAweGJiLCAweDUsIDB4ZmQsIDB4YSwgMHhmYiwgMHhmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg4MywgMHg2LCAweDk5LCAweGQwLCAweDUsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiZiwgMHhmNywgMHhhOSwgMHhmYiwgMHgyMiwgMHg2ZSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHhkNCwgMHg5YSwgMHg2NSwgMHg5OCwgMHhhLCAweDMyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1YywgMHhjNCwgMHg1YSwgMHg3NiwgMHhmNywgMHg2LCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ4LCAweGQwLCAweGY3LCAweGJiLCAweDc3LCAweDEyLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGY3LCAweDk2LCAweGMxLCAweDE1LCAweGY3LCAweDE5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4NWYsIDB4NSwgMHg1MiwgMHg2LCAweDgwLCAweDUyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4NiwgMHg5NiwgMHhjNCwgMHg1LCAweDYzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4YjcsIDB4NSwgMHhiMywgMHg2LCAweDk4LCAweGNhLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NiwgMHhhYywgMHhmNywgMHg0NiwgMHg1LCAweDRjLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDEsIDB4OTgsIDB4YSwgMHhkZCwgMHg5YiwgMHgxNSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHg3YywgMHgzYSwgMHg1LCAweGZjLCAweDUyLCAweGZiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweDc4LCAweGM2LCAweDU4LCAweGY5LCAweDksIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4NGMsIDB4YmMsIDB4NSwgMHhmZCwgMHg5LCAweGZjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4ODIsIDB4NiwgMHg5OSwgMHhkMCwgMHg1LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YmYsIDB4ZjcsIDB4YTgsIDB4ZmIsIDB4MWYsIDB4NmUsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4ZDIsIDB4OWEsIDB4NjYsIDB4OTgsIDB4YSwgMHgzMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4NzAsIDB4ZDcsIDB4ZjcsIDB4ZDQsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNCwgMHhkYSwgMHgzLCAweGY3LCAweDI5LCAweGY3LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweGIwLCAweDYsIDB4OWMsIDB4ZDcsIDB4N2IsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHhmNywgMHhkNCwgMHhmYiwgMHgzYiwgMHg2YSwgMHg3YiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHg5YywgMHg2MCwgMHhmYiwgMHg3OCwgMHg1LCAweDIxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHg1OCwgMHhkZSwgMHhlZCwgMHhkYSwgMHhiNCwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDE3LCAweGQ4LCAweDMsIDB4ZjcsIDB4ZDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4MTUsIDB4ZjcsIDB4MTcsIDB4NiwgMHg5YSwgMHhkZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDYsIDB4YTQsIDB4ZjcsIDB4MjIsIDB4NSwgMHg4ZiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHhhNSwgMHhhMSwgMHgxYSwgMHhjOSwgMHg1MSwgMHg5ZiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg0ZSwgMHg3YiwgMHg3ZCwgMHg2NywgMHgxZSwgMHg5YSwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDk5LCAweGIyLCAweGMzLCAweDk3LCAweGIxLCAweDFiLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDc3LCAweDZjLCAweDg3LCAweDFmLCAweDkyLCAweDc1LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDczLCAweDFiLCAweGZiLCAweDEzLCAweDY0LCAweDMyLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGIyLCAweDVhLCAweGNiLCAweGFiLCAweGFlLCAweGEwLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDFmLCAweGEyLCAweGY3LCAweDEyLCAweDE1LCAweDYzLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDU3LCAweDYzLCAweDFiLCAweDY5LCAweDg1LCAweGEwLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGJkLCAweDlkLCAweGIyLCAweGExLCAweGFjLCAweDg1LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4ZjcsIDB4NTgsIDB4ZGUsIDB4ZjcsIDB4NmUsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHgxMCwgMHhkOSwgMHhmNywgMHg1OCwgMHhkOSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweGY4LCAweDMsIDB4MTUsIDB4MzUsIDB4YmYsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjcsIDB4MywgMHhlZCwgMHhmNywgMHhhLCAweGY3LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDVlLCAweGU5LCAweDJiLCAweGZiLCAweDE2LCAweDNhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDIzLCAweDFlLCAweGQ5LCAweDk5LCAweDE1LCAweGM1LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGQ3LCAweGM0LCAweGEyLCAweDRiLCAweDYxLCAweDQxLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDRjLCAweDU2LCAweDcyLCAweGM0LCAweGI4LCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ZWEsIDB4MzcsIDB4NzYsIDB4ZjgsIDB4MTgsIDB4ZWEsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4YWMsIDB4ZjAsIDB4ZjcsIDB4ZTQsIDB4ZWMsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4OTQsIDB4YTcsIDB4MTUsIDB4YmEsIDB4NTcsIDB4YzYsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgxMywgMHg5YywgMHg3MCwgMHhiNywgMHhjMSwgMHg4MCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgxNCwgMHhmNywgMHg0NiwgMHhlYSwgMHhmNywgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4YywgMHhhZiwgMHg4MywgMHhhZSwgMHg3OCwgMHhhYSwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHgxOCwgMHg1ZCwgMHhjMCwgMHg1NiwgMHg2MCwgMHg1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGEzLCAweDY4LCAweDVjLCAweDlhLCAweDRkLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGZiLCAweDNhLCAweDIwLCAweGZiLCAweDQ4LCAweDYzLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDlkLCAweDcwLCAweDFmLCAweGY3LCAweDIwLCAweGExLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDkzLCAweGY3LCAweDY0LCAweDUsIDB4OTMsIDB4N2QsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4N2IsIDB4MWEsIDB4ZmIsIDB4NSwgMHhmYiwgMHgzLCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDc2LCAweDZlLCAweDhlLCAweDk1LCAweDcyLCAweDFlLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDE1LCAweDdlLCAweGEwLCAweDhjLCAweGE1LCAweDlmLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGYwLCAweGNiLCAweGU3LCAweGFiLCAweGE0LCAweDg2LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDFlLCAweGUsIDB4NjMsIDB4YSwgMHhmNywgMHgxZSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHg3NywgMHg0NSwgMHhhLCAweGY3LCAweDFiLCAweGY4LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGQ5LCAweDcxLCAweDUsIDB4YTAsIDB4OWMsIDB4OTksIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4MWIsIDB4OWUsIDB4OWYsIDB4ODEsIDB4N2UsIDB4OWYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4YTUsIDB4YTYsIDB4NzgsIDB4YTksIDB4MWIsIDB4ZWUsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4YWQsIDB4OWMsIDB4MWYsIDB4M2QsIDB4YTMsIDB4NSwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg3ZSwgMHg3NiwgMHg2ZSwgMHgxYiwgMHg3NiwgMHg3NywgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg3NiwgMHgxZiwgMHg5YiwgMHg3MywgMHg3MiwgMHg5YywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgyYywgMHg1ZCwgMHgzZCwgMHg2MCwgMHg3MywgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGZiLCAweGY2LCAweDI5LCAweGEsIDB4ZmIsIDB4MjIsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4NzYsIDB4ZjcsIDB4ZTEsIDB4ZTMsIDB4NDAsIDB4ZTMsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4ZTksIDB4ZjcsIDB4ZjYsIDB4ZWUsIDB4MTMsIDB4ZGMsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4YSwgMHg5ZSwgMHhlMywgMHg4NSwgMHhhLCAweGEyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4NSwgMHg3ZCwgMHg5ZCwgMHhiZCwgMHg3NCwgMHhkYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzOSwgMHhmNywgMHhmLCAweGY3LCAweDcsIDB4ZjcsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHgzYiwgMHhjNywgMHhmYiwgMHgxLCAweDU0LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDZjLCAweDViLCAweDFmLCAweDEzLCAweGVjLCAweDk0LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweGEsIDB4NzksIDB4MzMsIDB4OGEsIDB4YSwgMHgzNSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg1LCAweGY3LCAweDI5LCAweGY3LCAweDhmLCAweDE1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGY3LCAweGUsIDB4ZjcsIDB4MTgsIDB4YWUsIDB4YzAsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4NmEsIDB4NTYsIDB4MzksIDB4MmYsIDB4M2EsIDB4M2QsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4OTksIDB4ZDksIDB4MWUsIDB4ZSwgMHhmOCwgMHhiYSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweGIsIDB4YmYsIDB4ZWEsIDB4YzAsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDQ1LCAweDE1LCAweGJmLCAweDYsIDB4ZjcsIDB4N2EsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg1LCAweGVhLCAweDYsIDB4ZmIsIDB4N2EsIDB4ZmQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGMwLCAweDYsIDB4ZjcsIDB4NzgsIDB4ZjksIDB4MCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDYsIDB4OTYsIDB4YTksIDB4NSwgMHhmYiwgMHg5NywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRlLCAweGZiLCAweDU1LCAweDU5LCAweGZiLCAweDJhLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweDQ5LCAweGY3LCAweDRhLCAweDgxLCAweDFmLCAweGUsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjksIDB4NjIsIDB4NzcsIDB4MSwgMHhmNywgMHgxZCwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDViLCAweDI1LCAweDE1LCAweGVjLCAweDYsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4NzAsIDB4ZWMsIDB4ZjYsIDB4MWEsIDB4ZjcsIDB4NDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHgyMywgMHhmMCwgMHhmNywgMHhmLCAweDFlLCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4MWEsIDB4ZmIsIDB4MjMsIDB4MmIsIDB4ZmIsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDYsIDB4MWEsIDB4NDgsIDB4OTgsIDB4MzIsIDB4YmMsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHgzYSwgMHg3NiwgMHhmOSwgMHg2MiwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGZjLCAweGYyLCAweDMsIDB4ZjcsIDB4MWMsIDB4MjUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4NiwgMHhmNywgMHgxYSwgMHhmNywgMHgyMywgMHhlYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhmNywgMHg0NiwgMHgxYSwgMHhjZSwgMHg3ZSwgMHhlNCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHgxZSwgMHgyYSwgMHg2LCAweGE4LCAweDQ1LCAweGE2LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDFhLCAweGZiLCAweDQ2LCAweGZiLCAweGYsIDB4ZmIsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4ZmIsIDB4ZiwgMHgxZSwgMHhlLCAweDdjLCAweGQxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGQxLCAweGRhLCAweGQxLCAweGY3LCAweDFjLCAweGQxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZGMsIDB4ZDUsIDB4ZGMsIDB4OWIsIDB4ZGMsIDB4ZDUsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjMywgMHhmOCwgMHg1YSwgMHgzOSwgMHhhLCAweGQ1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweDM5LCAweGEsIDB4ZmIsIDB4NjksIDB4Y2UsIDB4MTUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4ZjcsIDB4NGEsIDB4N2EsIDB4Y2IsIDB4ZmMsIDB4NWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4NSwgMHhlLCAweDdjLCAweGY3LCAweDRlLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4ZjcsIDB4NmYsIDB4MywgMHhmNywgMHg1MiwgMHhjYiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHhhMywgMHg1ZiwgMHhkMSwgMHhjNywgMHhjYywgMHhiMiwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg2ZCwgMHhiMiwgMHg0ZCwgMHg0YiwgMHg0YywgMHg2MCwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweGY3LCAweDM5LCAweGY3LCAweDRlLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4ZjcsIDB4NjgsIDB4MywgMHhmNywgMHg1NiwgMHhmNywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg2YywgMHg5ZiwgMHg1YywgMHhkMywgMHhjOSwgMHhjNSwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhiMywgMHg3MiwgMHhiMiwgMHg0YywgMHg0OSwgMHg1MSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHgxZSwgMHhlLCAweDdjLCAweGQxLCAweGY3LCAweDFiLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweGQxLCAweGY3LCAweDFjLCAweGQxLCAweDEsIDB4M2YsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4ZDksIDB4YzIsIDB4ZDcsIDB4YWQsIDB4ZDcsIDB4YTAsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzksIDB4ZDcsIDB4MywgMHgzZiwgMHhmOCwgMHg1NywgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGMwLCAweDNhLCAweGZiLCAweGEsIDB4NDIsIDB4M2MsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZDksIDB4OTUsIDB4MTUsIDB4YjcsIDB4YWYsIDB4YjQsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4YTUsIDB4NzIsIDB4NTMsIDB4YSwgMHgzZiwgMHhmYiwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmOCwgMHg3NywgMHhmNywgMHg0ZiwgMHg3YSwgMHhjOSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhmYiwgMHg1MCwgMHg1LCAweGY4LCAweDY3LCAweGZiLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGEsIDB4ZmMsIDB4MzYsIDB4ODEsIDB4MzgsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY4LCAweGU5LCAweGY3LCAweDQwLCAweDc3LCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4ZWQsIDB4MywgMHhjNiwgMHhmNywgMHg2OCwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg2LCAweDY4LCAweGZiLCAweDNkLCAweDU2LCAweGEsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2QsIDB4NSwgMHhmNywgMHg0YiwgMHgzZiwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDYsIDB4YWUsIDB4ZjcsIDB4NDAsIDB4NGUsIDB4YSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MCwgMHg1LCAweGZiLCAweDRiLCAweDYsIDB4ZSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmNywgMHg0MywgMHhkYywgMHhmNywgMHgyOCwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgyLCAweGVkLCAweDMsIDB4ZjcsIDB4ODIsIDB4ZjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZWQsIDB4NiwgMHhhZCwgMHhmNywgMHgyOCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweDYsIDB4OWUsIDB4ZGMsIDB4NSwgMHhmYiwgMHg0OCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGY3LCAweDI4LCAweDRlLCAweGEsIDB4NjksIDB4ZmIsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg0NywgMHg2LCAweDc4LCAweDNhLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NiwgMHhmYiwgMHg4NiwgMHhmYiwgMHg5YSwgMHgxNSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg2LCAweDllLCAweGRjLCAweDUsIDB4ZmMsIDB4NWMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdjLCAweGU5LCAweGY3LCAweDEyLCAweGU5LCAweGY3LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDEsIDB4ZjgsIDB4ODksIDB4ZjEsIDB4MywgMHhmNywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHgxNSwgMHhjOCwgMHg1NywgMHhiNSwgMHhiNywgMHg5NiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg3ZCwgMHg5MCwgMHg3YywgMHgxOSwgMHhmNywgMHhhLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4M2EsIDB4NiwgMHg3ZCwgMHhhMCwgMHhkYiwgMHhkZCwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHg0NiwgMHg0NiwgMHg2NSwgMHhjNSwgMHg1LCAweGY3LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4Y2IsIDB4ZTEsIDB4ZTgsIDB4MWEsIDB4ZWMsIDB4MzksIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4MWUsIDB4ZmIsIDB4YmMsIDB4NDQsIDB4YSwgMHhkZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGZjLCAweDE5LCAweDUsIDB4MzQsIDB4NDQsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHgzZiwgMHhhLCAweDNiLCAweDYsIDB4YTUsIDB4ZjcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkZiwgMHg2LCAweGQzLCAweGZiLCAweDQsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhmNywgMHg2MiwgMHgxNSwgMHhhZSwgMHhmNywgMHgzZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFiLCAweDYsIDB4YTMsIDB4YzYsIDB4ODIsIDB4NWEsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4N2QsIDB4NTgsIDB4MWYsIDB4ZSwgMHhmYiwgMHgyMiwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhlMSwgMHhmNywgMHg4YywgMHhlMywgMHgzZiwgMHhlMiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhmMSwgMHgxMywgMHhlOCwgMHhmNywgMHg0YSwgMHg5MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGUzLCAweDUsIDB4M2IsIDB4NiwgMHhlMywgMHhmOCwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhhLCAweDlmLCAweGUzLCAweDNlLCAweGEsIDB4N2YsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgxMywgMHhkOCwgMHhhZCwgMHg2OSwgMHg1YywgMHhhMSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgzMSwgMHhmYiwgMHgyMSwgMHhmYiwgMHhmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDI5LCAweGQ3LCAweDNiLCAweGY3LCAweDE0LCAweGMxLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweGE5LCAweGJiLCAweDFmLCAweDc1LCAweGZiLCAweDIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4MSwgMHhmNywgMHg5YywgMHgxNSwgMHhlMSwgMHhkYywgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHhlZCwgMHhhMCwgMHg0OSwgMHg1NiwgMHhmYiwgMHgxMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg3YiwgMHg1ZSwgMHg0NiwgMHg1NiwgMHhiNCwgMHhjOSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdkLCAweGY3LCAweDJjLCAweGY3LCAweGYyLCAweGU3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4ZjcsIDB4NTQsIDB4ZjcsIDB4OCwgMHhlZiwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGY3LCAweDRhLCAweDE1LCAweGVkLCAweDYsIDB4OTgsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlMywgMHg5YSwgMHhmNywgMHgxYywgMHhjMiwgMHhmNywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhlNCwgMHgzYywgMHhiYSwgMHhmYiwgMHgwLCAweDUzLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDc3LCAweDUyLCAweDFlLCAweDZlLCAweGZiLCAweDI0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4NiwgMHg5OSwgMHhkNywgMHg1LCAweDkxLCAweGE3LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweGE3LCAweDFiLCAweGM2LCAweGJkLCAweDdhLCAweDYyLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4NzksIDB4MjgsIDB4N2MsIDB4MWYsIDB4MjgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4MTUsIDB4NmEsIDB4YWUsIDB4NzYsIDB4YmEsIDB4ZDgsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YjYsIDB4YTIsIDB4N2IsIDB4YWYsIDB4NGMsIDB4NGEsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4NTgsIDB4MWUsIDB4ZSwgMHhmYiwgMHgyNiwgMHhlOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhmNywgMHgyYywgMHgxLCAweGViLCAweGVkLCAweGY3LCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTIsIDB4MywgMHhmNywgMHhjZSwgMHhmOCwgMHgyLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDhhLCAweDkwLCAweDU5LCAweGQ2LCAweDFiLCAweGNlLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGJiLCAweGFmLCAweDZhLCAweGEyLCAweDViLCAweDQ0LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDY2LCAweDFmLCAweDhlLCAweGZiLCAweDNlLCAweDE1LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGZiLCAweDMxLCAweDRhLCAweGZiLCAweDFiLCAweDFhLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDViLCAweGY2LCAweGMxLCAweGRmLCAweDk5LCAweDlmLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGE3LCAweGY3LCAweDFhLCAweDY2LCAweGEsIDB4N2QsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg4NiwgMHg2ZSwgMHg2OCwgMHg4NywgMHg2ZSwgMHgxYiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg5YywgMHhiNCwgMHhlNywgMHhmNywgMHgyLCAweDlkLCAweGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDFmLCAweGE0LCAweGY3LCAweDEzLCAweDY2LCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhjNiwgMHg3NywgMHgxLCAweGY3LCAweDYsIDB4ZjcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHhmNywgMHgyLCAweDMsIDB4ZjcsIDB4YzAsIDB4ZjcsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MiwgMHg2LCAweGQ3LCAweDcxLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4NiwgMHhmYiwgMHg3YywgMHhmYiwgMHhiMSwgMHg1YSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweDcxLCAweGEsIDB4ZmIsIDB4MjAsIDB4NiwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGY3LCAweGIxLCAweDEsIDB4ZjcsIDB4OTAsIDB4ZmIsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4OSwgMHg4MCwgMHhhLCAweGZiLCAweDMxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MywgMHhmYiwgMHhiMSwgMHgxNSwgMHhmNywgMHg3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTcsIDB4NzEsIDB4YSwgMHhmYiwgMHgzMiwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDYsIDB4ZjcsIDB4NSwgMHhlZCwgMHhmNywgMHg1LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MTksIDB4ZjcsIDB4YTksIDB4NmQsIDB4YSwgMHg2MywgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDJkLCAweDYsIDB4ZmIsIDB4MTcsIDB4ZmIsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4YSwgMHg2NCwgMHg3MSwgMHhhLCAweGZiLCAweDJlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHhiZSwgMHg3NiwgMHhmNywgMHhiMSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweGY3LCAweDgsIDB4ZWUsIDB4ZjcsIDB4YSwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGY3LCAweGE5LCAweDE1LCAweGY3LCAweGEsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg3MSwgMHhhLCAweGZiLCAweDMyLCAweDYsIDB4ZmMsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiMSwgMHgxNSwgMHhmNywgMHg4LCAweDgwLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NiwgMHhlLCAweGY3LCAweGE5LCAweGY3LCAweGIxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWYsIDB4ZjcsIDB4YTksIDB4NWEsIDB4YSwgMHg2NSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDJjLCAweDYsIDB4ZSwgMHhmNywgMHhiZSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiMSwgMHg3NywgMHgxLCAweGY3LCAweDI0LCAweGY3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHgyNCwgMHhmNywgMHhhOSwgMHgxNSwgMHhmNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4NTYsIDB4NzEsIDB4YSwgMHhmYiwgMHgzNSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4ZCwgMHg3NiwgMHhmNywgMHhhZSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI0LCAweGY3LCAweGIsIDB4MywgMHhmNywgMHgyNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHgxNSwgMHhmNywgMHhiLCAweDgwLCAweGEsIDB4ZmIsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweGY3LCAweGJiLCAweDc2LCAweGY3LCAweGI0LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NjIsIDB4ZjcsIDB4NSwgMHgzLCAweGY3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE2LCAweDZkLCAweGEsIDB4ZDYsIDB4ZjcsIDB4YjQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMCwgMHg2LCAweGUsIDB4N2YsIDB4YSwgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHgzLCAweDljLCAweDE2LCAweGY4LCAweDJjLCAweDNmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTYsIDB4NiwgMHhhYywgMHhmNywgMHgyYiwgMHg1LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGNjLCAweGM3LCAweGRmLCAweDFiLCAweGE0LCAweDhkLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDhhLCAweDFmLCAweGVkLCAweDk5LCAweDUsIDB4Y2IsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4MjIsIDB4NDEsIDB4NDAsIDB4NTMsIDB4NjMsIDB4NGUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ZGMsIDB4NSwgMHhmYiwgMHg2YiwgMHg4NywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NiwgMHg1OCwgMHhmYiwgMHg4ZiwgMHg4MywgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4YjgsIDB4ZjYsIDB4ZjcsIDB4MzcsIDB4ZjIsIDB4YmEsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4MSwgMHg4NCwgMHhiYSwgMHhmNywgMHhlNSwgMHhiYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhiOSwgMHgzLCAweDg0LCAweGY3LCAweDZlLCAweDE1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY1LCAweDI1LCAweGY3LCAweDI0LCAweGY3LCAweDRjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGY3LCAweDNiLCAweGY3LCAweDUxLCAweGY3LCAweDFkLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweGZiLCAweDI1LCAweGZiLCAweDRmLCAweGZiLCAweDQ4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGZiLCAweDUzLCAweDFlLCAweGJhLCAweDllLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGY3LCAweDM0LCAweGY3LCAweDIwLCAweGY3LCAweDJiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRlLCAweDJlLCAweGZiLCAweGMsIDB4ZmIsIDB4MzEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4ZmIsIDB4MWUsIDB4ZmIsIDB4MmEsIDB4ZmIsIDB4MTIsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjcsIDB4YiwgMHgxZSwgMHhmNywgMHgxOCwgMHgyNCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg2LCAweGE1LCAweGY3LCAweDgsIDB4NSwgMHhiZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGZiLCAweDgsIDB4NSwgMHhjNSwgMHg2LCAweDZlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDUsIDB4YjYsIDB4OTUsIDB4YTYsIDB4YjQsIDB4YzQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4NTMsIDB4OTUsIDB4NGUsIDB4MWUsIDB4NDEsIDB4NiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYSwgMHgxNSwgMHg5YiwgMHhmMiwgMHg1LCAweGJiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YTgsIDB4ODMsIDB4NmYsIDB4NTUsIDB4NjEsIDB4N2UsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhmOCwgMHg3NSwgMHhjNiwgMHhkYSwgMHhjNiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU3LCAweGM5LCAweGRmLCAweGNhLCAweDMsIDB4ZjcsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YzUsIDB4MTUsIDB4NWUsIDB4YWQsIDB4NjgsIDB4YmQsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4YzQsIDB4Y2IsIDB4YjYsIDB4NjksIDB4YWMsIDB4NWEsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NTQsIDB4NGQsIDB4MWUsIDB4YzksIDB4OTYsIDB4MTUsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YTAsIDB4YTYsIDB4OWYsIDB4OTgsIDB4N2YsIDB4N2EsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NzMsIDB4NmYsIDB4NzYsIDB4N2QsIDB4OTksIDB4OWQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3YSwgMHhlNiwgMHhmNCwgMHhkOSwgMHhhMCwgMHhmNywgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhlYiwgMHgxMiwgMHhmNywgMHgyLCAweGU5LCAweGY3LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDEzLCAweGRjLCAweGE5LCAweDdhLCAweDE1LCAweGVkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4YjIsIDB4NSwgMHg3NiwgMHhiNSwgMHhiZSwgMHg3OSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgxZSwgMHhmNywgMHgwLCAweGFiLCAweGY3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4MzMsIDB4YWIsIDB4NDAsIDB4OTMsIDB4MWYsIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg1YiwgMHg5NywgMHhhYywgMHgxYSwgMHhiNiwgMHhlZiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhiNiwgMHhiNywgMHg3YywgMHg3NSwgMHhhYiwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHg4MSwgMHg1YiwgMHg1NiwgMHhhLCAweGFmLCAweGY3LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGEsIDB4ODUsIDB4NjksIDB4NSwgMHg5YSwgMHg2NiwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg1YywgMHgxYiwgMHhmYiwgMHgxMywgMHgyNiwgMHg1YiwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmNywgMHhmLCAweDcwLCAweGQ0LCAweDg1LCAweDFmLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGU1LCAweDgzLCAweDU3LCAweDFhLCAweDY3LCAweDNlLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDQ1LCAweDVkLCAweGEzLCAweDljLCAweDcxLCAweDFlLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDdiLCAweGEsIDB4ZSwgMHg3YSwgMHhlMCwgMHhmNywgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHgxLCAweGU4LCAweGU0LCAweGY3LCAweDZjLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4YzEsIDB4ZjgsIDB4NzksIDB4MTUsIDB4ZWIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZCwgMHhmNywgMHgyNSwgMHg1OCwgMHhiMCwgMHhmYiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgwLCAweGZiLCAweDEwLCAweGY3LCAweDAsIDB4NDgsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgyZSwgMHhmZCwgMHgxYywgMHgxNSwgMHhlOCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweGIxLCAweDUsIDB4N2IsIDB4YjQsIDB4YzIsIDB4NzUsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4MjQsIDB4ZGEsIDB4YzEsIDB4ZTMsIDB4ZGQsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4MzgsIDB4OTIsIDB4MWYsIDB4MjYsIDB4OTMsIDB4NGYsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4MWEsIDB4YmYsIDB4ZTUsIDB4OGIsIDB4YTIsIDB4YjQsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4N2EsIDB4YTksIDB4MWUsIDB4ODIsIDB4NWUsIDB4NSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGFkLCAweGY3LCAweDQwLCAweDUsIDB4MmUsIDB4NiwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg1LCAweDk4LCAweDY4LCAweDVkLCAweDllLCAweDVlLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweGZiLCAweDQsIDB4NzIsIDB4ZmIsIDB4MywgMHg4YSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhmNywgMHg5LCAweDZiLCAweGQwLCAweDg1LCAweDFlLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGUxLCAweDhmLCAweDYwLCAweDFhLCAweDZhLCAweDRhLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDQ4LCAweDU3LCAweGFjLCAweDk0LCAweDc0LCAweDFlLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweDUsIDB4MmQsIDB4NiwgMHhlLCAweGZiLCAweDYyLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUsIDB4ZjcsIDB4NTcsIDB4ODEsIDB4ZTIsIDB4YTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4MTIsIDB4ZjcsIDB4MiwgMHhlOCwgMHg5ZiwgMHhjZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhlZCwgMHgxMywgMHhkZSwgMHhhOSwgMHg3YSwgMHgxNSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDkzLCAweGIzLCAweGE0LCAweDgxLCAweGE5LCAweDdlLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDE5LCAweDZiLCAweDI2LCAweDUsIDB4OGUsIDB4OTQsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4OWEsIDB4MWIsIDB4OTMsIDB4OTQsIDB4ODUsIDB4ODEsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ODEsIDB4N2UsIDB4ODEsIDB4N2UsIDB4OGYsIDB4OTQsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NjIsIDB4NTUsIDB4NSwgMHg3MywgMHhhNiwgMHg5ZSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHgxYiwgMHhjNiwgMHhjNSwgMHhiMywgMHhkMCwgMHhhMSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg2NywgMHg5MywgMHgxZiwgMHg5MCwgMHg5ZCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDhhLCAweGUwLCAweGM0LCAweGU4LCAweDFhLCAweDEzLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDQ5LCAweGIxLCAweDM0LCAweDkyLCAweDFlLCAweDIxLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDkyLCAweGIwLCAweDFhLCAweGMyLCAweGVhLCAweDhhLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGJiLCAweDczLCAweDc5LCAweGFhLCAweDFlLCAweDgyLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweGEsIDB4YjAsIDB4ZjcsIDB4NDcsIDB4NGUsIDB4YSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg1LCAweDk5LCAweDY2LCAweDViLCAweDlmLCAweDVjLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGZiLCAweGEsIDB4NzIsIDB4ZmIsIDB4OSwgMHg4YSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhmNywgMHhlLCAweDY5LCAweGQ0LCAweDg1LCAweDFlLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGU1LCAweDhmLCAweDVlLCAweDFhLCAweDY4LCAweDQ3LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDQ0LCAweDU1LCAweGFlLCAweDk0LCAweDczLCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweDk1LCAweGM5LCAweDRlLCAweGEsIDB4ZSwgMHg0NSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2MiwgMHhlOCwgMHgxLCAweGNjLCAweGYyLCAweGY3LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweDMsIDB4YTYsIDB4NDUsIDB4MTUsIDB4ZjcsIDB4ODIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhlNywgMHhhNywgMHhkZiwgMHhhOCwgMHg4NSwgMHg5ZCwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHgxZiwgMHhhZCwgMHg5NSwgMHhjMSwgMHhiZSwgMHhjNSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhhNiwgMHg3ZCwgMHhhMywgMHg3NCwgMHg5ZCwgMHhmYiwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MSwgMHgxOCwgMHg4YiwgMHg4OCwgMHg4ZSwgMHg4ZiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg5YywgMHg4YywgMHg5MSwgMHgxZSwgMHhmNywgMHgzYywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDM1LCAweDUsIDB4ZjEsIDB4NiwgMHhiMiwgMHhmNywgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4OCwgMHg4YSwgMHg1LCAweDMyLCAweDM3LCAweDc2LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDk2LCAweDc1LCAweDlkLCAweDc4LCAweDFmLCAweDU2LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDYwLCAweDVjLCAweDFhLCAweDZiLCAweDlkLCAweDY4LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDFlLCAweGY3LCAweDQyLCAweGZiLCAweDFlLCAweDUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4OGQsIDB4ODgsIDB4ODMsIDB4MWEsIDB4ODIsIDB4N2IsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4MWUsIDB4ZmIsIDB4NDUsIDB4NiwgMHg5ZSwgMHhlMywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweDYsIDB4ZjcsIDB4YjcsIDB4YzMsIDB4MTUsIDB4ZmIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHg1LCAweDgyLCAweDkyLCAweDg3LCAweDk3LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGEwLCAweGFiLCAweDk1LCAweDk5LCAweDkyLCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGZiLCAweGQsIDB4NSwgMHg5MiwgMHg4NiwgMHg4ZCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHgxYSwgMHg3MSwgMHg2MSwgMHg4NCwgMHg3YSwgMHg4OSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDMxLCAweDc2LCAweGY3LCAweGZjLCAweGY3LCAweDQ0LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTUsIDB4ZjcsIDB4NmQsIDB4MywgMHhmNywgMHhhNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHgxNSwgMHg2ZSwgMHg5ZiwgMHg1ZiwgMHhkMywgMHhjZSwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhjNiwgMHhhZSwgMHg2ZSwgMHhhYywgMHg0ZSwgMHg0NSwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1NywgMHgxZSwgMHhmYiwgMHgzOCwgMHhmYywgMHg0NSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMiwgMHg2LCAweGY3LCAweDVkLCAweGY3LCAweGFjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2IsIDB4NiwgMHhlLCAweGEwLCAweDc2LCAweGY4LCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ4LCAweDEsIDB4ZjQsIDB4ZjUsIDB4MywgMHhmNCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHg2LCAweGY3LCAweGNjLCAweGY4LCAweGE5LCAweDk5LCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmMsIDB4NGEsIDB4NiwgMHg2NiwgMHhmYiwgMHg0OCwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDlkLCAweGUyLCAweDUsIDB4ZjcsIDB4ODAsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGU2LCAweGY3LCAweDc0LCAweGU4LCAweGY3LCAweDFlLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDc3LCAweDEyLCAweGY4LCAweDMsIDB4ZWQsIDB4MTMsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDgsIDB4ZjcsIDB4ZmIsIDB4MTUsIDB4ZjcsIDB4MTksIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NiwgMHhiMiwgMHhmNywgMHgzMywgMHgxYiwgMHgxMywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhkZSwgMHg1LCAweDEzLCAweGU4LCAweDc1LCAweDY5LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDFiLCAweGZiLCAweDVkLCAweDhjLCAweGZiLCAweDY3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGZiLCAweDg5LCAweDFhLCAweDIwLCAweGQzLCAweDMwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ZjcsIDB4NywgMHhmNywgMHg4LCAweGY3LCAweDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhlMywgMHg1YiwgMHhlNCwgMHhmYiwgMHg2LCAweDU2LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDc1LCAweDVkLCAweDFlLCAweDY1LCAweGZiLCAweDFjLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGMwLCAweGQ4LCAweGRmLCAweGQzLCAweDliLCAweDUzLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDQ2LCAweDU5LCAweDUxLCAweDQxLCAweDY1LCAweGUwLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDFlLCAweGUsIDB4ZjksIDB4NiwgMHg3NywgMHgxLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDY5LCAweDMsIDB4YWIsIDB4NWQsIDB4MTUsIDB4Y2IsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NmIsIDB4ZjksIDB4MzIsIDB4NDksIDB4YWMsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ODQsIDB4NzYsIDB4YjAsIDB4NzYsIDB4ZjcsIDB4YWEsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzMsIDB4ZTgsIDB4MTIsIDB4ZjcsIDB4MjEsIDB4ZWEsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4MTMsIDB4YjgsIDB4NTIsIDB4YSwgMHgxMywgMHg3NCwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDdiLCAweDdkLCAweDg3LCAweDgxLCAweDdlLCAweDFmLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGEwLCAweGJiLCAweGQxLCAweDFhLCAweGY3LCAweDY5LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4ODQsIDB4NiwgMHgxMywgMHhiOCwgMHg4NiwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg5YiwgMHg5YSwgMHgxYSwgMHhjYiwgMHhjOSwgMHg0NywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDNlLCAweGZiLCAweDEwLCAweDdhLCAweDg5LCAweDdhLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDFmLCAweDNiLCAweDgyLCAweGEsIDB4MTMsIDB4YjQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg2LCAweDhhLCAweDJlLCAweDU5LCAweDMzLCAweDQzLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZSwgMHg3YywgMHhlNywgMHhmNywgMHg5NiwgMHhlOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg3NywgMHgxLCAweGY0LCAweGY3LCAweGUzLCAweDE1LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NjIsIDB4OTgsIDB4YSwgMHg4OCwgMHg3YiwgMHg4OSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHgxYSwgMHgyOSwgMHhlOSwgMHg3YiwgMHhjZiwgMHhlMCwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhhNiwgMHhkYSwgMHgxZSwgMHg4ZSwgMHhlNywgMHg1LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGZiLCAweGMsIDB4NWYsIDB4NDMsIDB4MWIsIDB4NTMsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YTQsIDB4OTgsIDB4OGQsIDB4OTksIDB4OGUsIDB4OTksIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4ZjcsIDB4NDAsIDB4NSwgMHhmNywgMHg5MSwgMHg4OSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDkzLCAweDYsIDB4YTksIDB4ZjcsIDB4MWEsIDB4NSwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDZmLCAweGZiLCAweDFhLCAweDUsIDB4NDQsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIyLCAweGU0LCAweGQ1LCAweGU0LCAweGY3LCAweGE2LCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGU0LCAweDEsIDB4ZDUsIDB4ZTksIDB4ZjcsIDB4ZmQsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg4NSwgMHg1NiwgMHgxNSwgMHg3NywgMHgzMiwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweDYsIDB4OWUsIDB4ZTQsIDB4ODUsIDB4YSwgMHhhOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg1LCAweDdjLCAweDljLCAweGI3LCAweDYwLCAweGRiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJkLCAweGY3LCAweDFiLCAweGY3LCAweDEzLCAweGY3LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEsIDB4ZmIsIDB4MSwgMHhiZiwgMHgzMCwgMHg1NSwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg2YywgMHg1YywgMHgxZiwgMHhiNiwgMHhmNywgMHg1ZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ1LCAweDYsIDB4NzgsIDB4MzIsIDB4NSwgMHhkZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEwLCAweGZjLCAweGUyLCAweDUsIDB4ZjcsIDB4MmUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MTUsIDB4ZjcsIDB4MTMsIDB4ZjcsIDB4MTAsIDB4YTYsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4YzEsIDB4NjcsIDB4NDksIDB4MmYsIDB4MmUsIDB4NDcsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4MzgsIDB4YTYsIDB4ZGMsIDB4OGEsIDB4MWUsIDB4ZSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhmNywgMHgyYiwgMHhlOSwgMHhmNywgMHg1YiwgMHhlOSwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzYywgMHhlZiwgMHgzZiwgMHhmMCwgMHgxMywgMHhmMCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHgxNSwgMHg3OSwgMHhiYSwgMHhkMCwgMHg2NiwgMHhlZSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweGY3LCAweDJiLCAweGM2LCAweGY3LCAweDMxLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGE3LCAweDY2LCAweGE5LCAweDFmLCAweDEzLCAweGU4LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGMyLCAweGM4LCAweGQ0LCAweDFhLCAweGUwLCAweDQ0LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDNmLCAweDQ3LCAweDY4LCAweDY1LCAweDQ3LCAweDFlLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDUsIDB4YjIsIDB4ZGIsIDB4YjEsIDB4OTgsIDB4YjYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4YmIsIDB4N2MsIDB4NjAsIDB4MjksIDB4ZmIsIDB4YywgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg4YywgMHgxZiwgMHg3OCwgMHgyZCwgMHg1LCAweDEzLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGU3LCAweGFhLCAweDUwLCAweDNmLCAweDNiLCAweDVjLCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDZkLCAweDk1LCAweGFiLCAweDM0LCAweDFmLCAweGUsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4NTgsIDB4NzYsIDB4ZjcsIDB4OSwgMHhjYSwgMHhmNywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhlNiwgMHhjYiwgMHg0YiwgMHhmNywgMHg1NywgMHg0OSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHg3NywgMHgxMiwgMHgxMywgMHhiYiwgMHhmNywgMHg5OCwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgxOSwgMHg2LCAweDgyLCAweDVlLCAweDUsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4MCwgMHg1MiwgMHg1LCAweGY3LCAweDM5LCAweDYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4NSwgMHg2MiwgMHg2LCAweDkzLCAweGI4LCAweDUsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg5NywgMHhjYSwgMHg1LCAweDYyLCAweDYsIDB4YWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4NSwgMHg0YSwgMHg2LCAweGZiLCAweDQxLCAweDk4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4OWIsIDB4MTUsIDB4ZDAsIDB4ZGEsIDB4N2QsIDB4M2MsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg1NiwgMHhmYiwgMHgxMiwgMHgxNSwgMHgxMywgMHg3YiwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhmOSwgMHhiLCAweGY5LCAweDM0LCAweDRkLCAweGJjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4ZmQsIDB4ZmIsIDB4ZTYsIDB4MTUsIDB4NzEsIDB4YmMsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4YWQsIDB4MWIsIDB4ZGYsIDB4Y2UsIDB4YzcsIDB4ZDIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4YTQsIDB4ODIsIDB4YTMsIDB4NzksIDB4OWMsIDB4OCwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhhMCwgMHhhZiwgMHhhOSwgMHgxYSwgMHgxMywgMHhiNCwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhhYywgMHg1MSwgMHg1ZiwgMHg2MSwgMHg3NywgMHg3MiwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhNSwgMHg1MSwgMHg1LCAweDEzLCAweGJiLCAweDliLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGEwLCAweGE5LCAweDFiLCAweDk4LCAweDlhLCAweDg2LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDcxLCAweDdmLCAweDczLCAweDFmLCAweDVjLCAweDhjLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDUsIDB4YzMsIDB4NiwgMHhhYywgMHg5NiwgMHg3YSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg3MCwgMHg3MiwgMHg2NywgMHg2NSwgMHg3MCwgMHg5YSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgxZiwgMHhlLCAweGY3LCAweDcyLCAweGQ2LCAweGYwLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweDc3LCAweDEsIDB4ZjgsIDB4NSwgMHhkZCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFhLCAweGY3LCAweDk4LCAweDE1LCAweDZmLCAweGM1LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweGI0LCAweDFiLCAweGU4LCAweGUzLCAweGNjLCAweGQ4LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGE5LCAweDgxLCAweGE3LCAweDc0LCAweDllLCAweDgsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4YTUsIDB4YjMsIDB4YWUsIDB4MWEsIDB4YmUsIDB4NjIsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4NTcsIDB4NWEsIDB4NzQsIDB4NmYsIDB4NWEsIDB4MWUsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4NSwgMHg5ZCwgMHhhZCwgMHhiMywgMHhhMiwgMHhiMCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg5ZSwgMHg4NCwgMHg3OSwgMHg4YywgMHgxZiwgMHg2OSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg2YiwgMHgxZSwgMHg1OCwgMHg2LCAweDdjLCAweDQyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4NiwgMHhiMiwgMHg5OSwgMHg3OSwgMHg3NiwgMHg2OCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg2MiwgMHgxZiwgMHg4OSwgMHg2LCAweDYwLCAweDY5LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDY5LCAweDFmLCAweGUsIDB4ZjgsIDB4ODQsIDB4ZGIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHhmOCwgMHg0ZSwgMHgzLCAweGRhLCAweGY4LCAweDk5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDczLCAweDUsIDB4YTEsIDB4OWQsIDB4OWUsIDB4YjUsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YTAsIDB4OWYsIDB4N2QsIDB4N2IsIDB4YTAsIDB4MWYsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4YTIsIDB4N2IsIDB4YTQsIDB4MWIsIDB4ZWMsIDB4YmIsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4OWMsIDB4MWYsIDB4M2UsIDB4YTEsIDB4NSwgMHg2MywgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg3NywgMHg2ZiwgMHgxYiwgMHg3OCwgMHg3OCwgMHg5NiwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxZiwgMHg5YiwgMHg3MiwgMHg3MSwgMHg5ZCwgMHg2ZiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg1ZiwgMHg0MCwgMHg2MSwgMHg3MiwgMHgxZiwgMHhlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGJjLCAweDEyLCAweGFkLCAweGJmLCAweGY3LCAweDE0LCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQzLCAweGNiLCAweDZlLCAweGJlLCAweDEzLCAweGYwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGY3LCAweDdhLCAweDE1LCAweGJlLCAweDYsIDB4YzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4OTgsIDB4ZmIsIDB4YzAsIDB4NSwgMHhjZCwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweGJmLCAweDUsIDB4MTMsIDB4ZTgsIDB4NGYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NSwgMHhiZSwgMHg2LCAweGNmLCAweGY3LCAweGUwLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NSwgMHhmYiwgMHhhMSwgMHg4MiwgMHhmNywgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDJlLCAweDYsIDB4ZmIsIDB4OGQsIDB4ZmIsIDB4ZTAsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NiwgMHhjNCwgMHhmNywgMHhhZiwgMHg1LCAweGUzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4YmMsIDB4NSwgMHhmYiwgMHg3NywgMHg2LCAweDgxLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZTIsIDB4NiwgMHhlLCAweGU5LCAweDc3LCAweGY4LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDEsIDB4ZjcsIDB4MWUsIDB4ZWUsIDB4ZjcsIDB4N2EsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhhZCwgMHgxNiwgMHhmOCwgMHg0OSwgMHg2LCAweGFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDUsIDB4MmQsIDB4NiwgMHg3ZCwgMHg0OCwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDYsIDB4ZjcsIDB4MmUsIDB4ZjcsIDB4NSwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZGEsIDB4ZTgsIDB4YzksIDB4ZjcsIDB4ZSwgMHgxYSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhjZCwgMHhmYiwgMHhkLCAweDM5LCAweDQ1LCAweDc3LCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDFlLCAweDc5LCAweDMzLCAweDUsIDB4ZWUsIDB4NiwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhmNiwgMHg4OSwgMHg5MSwgMHgxYiwgMHhjMSwgMHhiYSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg1MywgMHg2YywgMHg2YSwgMHg0NSwgMHg1NywgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmYiwgMHg3NCwgMHg1LCAweGUsIDB4ZjcsIDB4NzAsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODgsIDB4ZDgsIDB4MSwgMHhmNywgMHg1MCwgMHhkZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGRlLCAweDMsIDB4ZjcsIDB4MTEsIDB4ZjcsIDB4NzAsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjgsIDB4NiwgMHg5YiwgMHhkNiwgMHg1LCAweGZiLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MTQsIDB4ZWEsIDB4NSwgMHhhZSwgMHhhMywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhiZSwgMHgxYSwgMHhiNCwgMHg3NSwgMHhjYSwgMHgyYiwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg3MiwgMHg2MiwgMHg1ZiwgMHgxZSwgMHg3YiwgMHgzYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweDYsIDB4OGUsIDB4OTYsIDB4NSwgMHg5YywgMHg4ZiwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhjMCwgMHgxYiwgMHhhMSwgMHhhOCwgMHg4NSwgMHg2ZiwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg3OCwgMHg3MSwgMHg3OSwgMHgxZiwgMHhmYiwgMHg2YywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg1LCAweGUsIDB4N2MsIDB4ZTgsIDB4M2EsIDB4ZWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZWEsIDB4MTIsIDB4MTMsIDB4YTAsIDB4YjIsIDB4ZjcsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZGMsIDB4NiwgMHg2NywgMHhmYiwgMHg0ZCwgMHg1LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDg5LCAweDc2LCAweDc5LCAweDFhLCAweDM3LCAweGQwLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGJlLCAweGMwLCAweGE3LCAweGE1LCAweGI3LCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDgxLCAweDYxLCAweDUsIDB4ZjcsIDB4NDMsIDB4NiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHg1LCAweDNiLCAweDYsIDB4ZDAsIDB4ZjcsIDB4ZWYsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2LCAweDc4LCAweDJjLCAweDUsIDB4ZGEsIDB4NiwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhhLCAweDEzLCAweGEwLCAweDZiLCAweDYzLCAweDViLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDFiLCAweDU0LCAweDdhLCAweGE0LCAweGEyLCAweDk3LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDhjLCAweDkzLCAweDFmLCAweGMzLCAweGY3LCAweGFlLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NjcsIDB4YSwgMHhmNywgMHg3OCwgMHhmOCwgMHg3NSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlOSwgMHhkOSwgMHg3NiwgMHhmMSwgMHhmYiwgMHhkZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDUsIDB4ZmIsIDB4NDcsIDB4ZmIsIDB4NTMsIDB4MTUsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2NywgMHhmYiwgMHg1YiwgMHg1LCAweDhhLCAweDc4LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweGEsIDB4NTcsIDB4YSwgMHhmNywgMHg2YiwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiMCwgMHhmNywgMHg1MiwgMHhmOCwgMHg3MCwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmNywgMHgwLCAweGY3LCAweDE0LCAweGZiLCAweDAsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4ZmIsIDB4MTYsIDB4ZjcsIDB4MjQsIDB4NGUsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHhmYiwgMHgyMywgMHg1LCAweDJhLCAweGZiLCAweDM3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NTcsIDB4YSwgMHhjNiwgMHhmNywgMHgxMCwgMHgxMiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhmOCwgMHhlLCAweGY4LCAweDg5LCAweDkyLCAweGEsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4ODYsIDB4YSwgMHhmYiwgMHg2MiwgMHhmYiwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhhLCAweGE0LCAweGY3LCAweDEwLCAweDRjLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4ZmIsIDB4YTYsIDB4MjcsIDB4YSwgMHg2NywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGY4LCAweGM2LCAweDE1LCAweGY3LCAweGJmLCAweDNiLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGZiLCAweGEzLCAweGY3LCAweGMsIDB4NSwgMHhmYiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjYSwgMHgyNywgMHhhLCAweGZiLCAweDExLCAweGJkLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4NDAsIDB4MTUsIDB4ODEsIDB4NTksIDB4NSwgMHhmOCwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDk1LCAweGJkLCAweDUsIDB4ZSwgMHhhMCwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHhlOSwgMHgxLCAweGY3LCAweDRkLCAweGRiLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4MTYsIDB4ZGIsIDB4NiwgMHhmNywgMHg4NywgMHhmNywgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUwLCAweDNmLCAweGEsIDB4ZmIsIDB4ODcsIDB4ODcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHg2LCAweGZiLCAweDM0LCAweGZiLCAweDgyLCAweDQ0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDUsIDB4Y2UsIDB4NTUsIDB4YSwgMHhmYiwgMHg5OCwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUxLCAweDYsIDB4ZSwgMHhhMCwgMHg3NiwgMHhmNywgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHgxLCAweGY3LCAweDI0LCAweDE2LCAweGY3LCAweDksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4YjgsIDB4ZmIsIDB4NjcsIDB4NSwgMHhkNywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGY3LCAweGVkLCAweDUsIDB4YmMsIDB4M2YsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg0NCwgMHhhLCAweGQyLCAweDYsIDB4MmIsIDB4ZmIsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4ZjcsIDB4NjUsIDB4NSwgMHg0OCwgMHg2LCAweGZiLCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjUsIDB4NzIsIDB4ZjcsIDB4NGQsIDB4NSwgMHhkMSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDZlLCAweDQ0LCAweGEsIDB4YmMsIDB4NiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlZCwgMHg1LCAweGUsIDB4N2YsIDB4YSwgMHhkNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgzOSwgMHhmNywgMHgxYSwgMHgzLCAweDZiLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhiLCAweDU1LCAweGEsIDB4NmMsIDB4NiwgMHhlNywgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg0OCwgMHg1LCAweDZmLCAweDZmLCAweGEsIDB4ZjcsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4YSwgMHgzNiwgMHg2LCAweGZiLCAweDE3LCAweGY3LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMwLCAweGY3LCAweDEyLCAweDUsIDB4ZTAsIDB4M2YsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3OSwgMHg0NCwgMHhhLCAweDlkLCAweDYsIDB4M2EsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4Y2UsIDB4NSwgMHhhMCwgMHgzZiwgMHhhLCAweGZiLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweGEsIDB4ZTIsIDB4NiwgMHhlZiwgMHhmYiwgMHgxNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhmYiwgMHhmLCAweDUsIDB4MzMsIDB4NiwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGUzLCAweGY4LCAweDI5LCAweGUzLCAweDEsIDB4ZTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg4ZiwgMHhmNywgMHgxLCAweDMsIDB4NjcsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzYsIDB4MzMsIDB4NSwgMHhmNywgMHhjMCwgMHg2LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDUsIDB4NDUsIDB4NiwgMHhmOCwgMHgxLCAweGY4LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGEsIDB4OWYsIDB4ZTMsIDB4NSwgMHhmYiwgMHg3ZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDMzLCAweDUsIDB4YmIsIDB4NiwgMHhmYiwgMHgzYywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHgzOCwgMHhmNywgMHg0ZCwgMHg1LCAweGJkLCAweDYsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4NSwgMHhmYiwgMHg4MywgMHg2LCAweDc3LCAweDMzLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4YiwgMHhmYiwgMHhhMCwgMHhmYiwgMHgxMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg1LCAweGUsIDB4ZmIsIDB4MjIsIDB4ZTIsIDB4ZjgsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MSwgMHhlMiwgMHhmNywgMHg0LCAweGY3LCAweDhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MywgMHhmNywgMHg4YywgMHhmOCwgMHg3ZiwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHhkNCwgMHg3NiwgMHhlYywgMHhmYiwgMHhlMiwgMHhmYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4YTUsIDB4ZmMsIDB4ZWUsIDB4NmIsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY4LCAweDI1LCAweDUsIDB4ZDksIDB4ODQsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg2LCAweDc3LCAweDM0LCAweDUsIDB4YmIsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmYiwgMHg0YSwgMHg0ZCwgMHhhLCAweGZiLCAweDlkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4MWQsIDB4NSwgMHhlLCAweGZiLCAweDIyLCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDI2LCAweGUyLCAweGQ0LCAweGY3LCAweGEsIDB4MSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweGY3LCAweDhmLCAweGY3LCAweDIsIDB4MywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhmOCwgMHg4ZiwgMHgxNSwgMHhmNywgMHg5LCAweDYsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YSwgMHg1LCAweGZiLCAweDgsIDB4NiwgMHhmYiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhLCAweDE1LCAweGY3LCAweDgsIDB4NiwgMHhhNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDUsIDB4ZmIsIDB4OCwgMHg2LCAweGZiLCAweGE1LCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDZiLCAweGEsIDB4ZjgsIDB4MiwgMHhmOCwgMHgyNiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDg0LCAweGEsIDB4ZmIsIDB4N2YsIDB4NiwgMHg3NywgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGJiLCAweDYsIDB4ZmIsIDB4NDEsIDB4ZmIsIDB4NGIsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg5ZSwgMHhmYiwgMHhlLCAweGZiLCAweDFjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4YiwgMHhlMiwgMHhiZSwgMHhiZCwgMHhjMywgMHhiYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhlMiwgMHgxLCAweGEzLCAweDE2LCAweGY3LCAweGRiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZTIsIDB4NSwgMHhmYiwgMHhhLCAweDYsIDB4OTcsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4YSwgMHg5NSwgMHhiZCwgMHg1LCAweGZiLCAweDI5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4YzMsIDB4NzAsIDB4YSwgMHg5NywgMHhiYywgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDYsIDB4ZjcsIDB4NWYsIDB4ZjcsIDB4NGEsIDB4NWMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhlMiwgMHg1LCAweGZiLCAweDgzLCAweDYsIDB4NzcsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiOCwgMHg2LCAweGZiLCAweDExLCAweGZiLCAweDgsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OCwgMHg1LCAweGI5LCAweDYsIDB4OWUsIDB4ZTIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4OCwgMHg2LCAweDc4LCAweDM0LCAweDUsIDB4ZGQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMCwgMHhmYiwgMHg0YSwgMHg1LCAweGZiLCAweDI2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NWEsIDB4NzAsIDB4YSwgMHg3YywgMHg1MywgMHg4NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDU5LCAweDcwLCAweGEsIDB4N2YsIDB4NTgsIDB4ODMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDhiLCAweGU5LCAweGY3LCAweDkwLCAweGU4LCAweDEsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ZjcsIDB4NmMsIDB4ZWQsIDB4MywgMHhhZCwgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHg2LCAweGIyLCAweGY3LCAweDUwLCAweDUsIDB4MjksIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg1NSwgMHg2LCAweGY3LCAweGVmLCAweGY3LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGNmLCAweDUsIDB4ZmMsIDB4M2YsIDB4NiwgMHg2NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHg1NiwgMHhhLCAweDljLCAweGUwLCAweDUsIDB4ZjcsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHhlYywgMHhmYiwgMHhhNiwgMHg1LCAweGUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjcsIDB4ODksIDB4ZTUsIDB4YzcsIDB4ZDUsIDB4MSwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhmNywgMHg1ZCwgMHhlOSwgMHgzLCAweGY3LCAweGI5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDE1LCAweGVjLCAweDYsIDB4ZjcsIDB4NGQsIDB4ZjcsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4YjAsIDB4ZmIsIDB4M2YsIDB4MjAsIDB4ZmIsIDB4ZiwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHg2NywgMHg1LCAweGZiLCAweDFkLCAweGZkLCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4M2QsIDB4NiwgMHhhZCwgMHhmNywgMHgzYywgMHg1LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4N2EsIDB4M2UsIDB4NSwgMHhmYiwgMHg0OSwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGY3LCAweGEyLCAweDk4LCAweGNjLCAweDUsIDB4ZmMsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2YiwgMHhmYiwgMHgyZCwgMHg1LCAweGVhLCAweDYsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4NSwgMHhmNywgMHgzYSwgMHg2LCAweGZiLCAweGRkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDUsIDB4ZSwgMHg3YywgMHhlOSwgMHhmOCwgMHg0ZiwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGQzLCAweGVjLCAweGY3LCAweDliLCAweGViLCAweDMsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTAsIDB4MTUsIDB4MmIsIDB4YTksIDB4MjAsIDB4ZjcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTEsIDB4YjEsIDB4ZjcsIDB4ZTMsIDB4ZjcsIDB4ZCwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhlMCwgMHhmYiwgMHhjLCAweGZiLCAweDg4LCAweDU5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweGZiLCAweDIsIDB4MWUsIDB4ZWMsIDB4OWQsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZDEsIDB4ZjcsIDB4NTQsIDB4ZjUsIDB4ZWUsIDB4N2YsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4M2UsIDB4NTgsIDB4ZmIsIDB4NzMsIDB4ZmIsIDB4ZSwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhjYSwgMHhjYiwgMHgxZSwgMHhlLCAweDc5LCAweDlkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDlmLCAweGY2LCAweDk5LCAweDlmLCAweDlmLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4OGYsIDB4NywgMHgxZSwgMHhhMCwgMHgzOSwgMHg2MywgMHhmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDksIDB4ZTgsIDB4YSwgMHhlOCwgMHhiLCAweDhjLCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmOCwgMHhlYywgMHgxNCwgMHhhYywgMHgxMywgMHgwLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MCwgMHgxLCAweDAsIDB4M2IsIDB4MCwgMHg0ZCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDAsIDB4OGQsIDB4MCwgMHhjYiwgMHgxLCAweDE1LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4MSwgMHg1ZCwgMHgxLCAweDY1LCAweDEsIDB4NmMsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHgxLCAweGIwLCAweDEsIDB4YzUsIDB4MSwgMHhkZCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDIsIDB4MTYsIDB4MiwgMHgyZSwgMHgyLCAweDNiLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4MiwgMHg1OSwgMHgyLCAweDVlLCAweDIsIDB4NzIsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgyLCAweDdjLCAweDIsIDB4OTMsIDB4MiwgMHhiYSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDIsIDB4Y2IsIDB4MiwgMHhkMCwgMHgyLCAweGYyLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHhmYywgMHgzLCAweDQsIDB4MywgMHhkLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MywgMHgxNSwgMHgzLCAweDFhLCAweDMsIDB4MjIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHgzLCAweDNjLCAweDMsIDB4NDksIDB4MywgMHg1NSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDMsIDB4NjEsIDB4MywgMHg2NiwgMHgzLCAweDc3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4MywgMHg4ZSwgMHgzLCAweDliLCAweDMsIDB4YWUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHgzLCAweGNjLCAweDMsIDB4ZDcsIDB4MywgMHhkYywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDMsIDB4ZTgsIDB4MywgMHhmMCwgMHgzLCAweGY4LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4NCwgMHgyLCAweDQsIDB4NiwgMHg0LCAweGUsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHg0LCAweDFlLCAweDQsIDB4MjcsIDB4NCwgMHgyZSwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDQsIDB4M2EsIDB4NCwgMHg0MCwgMHg0LCAweDQ1LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NCwgMHg1MiwgMHg0LCAweDVhLCAweDQsIDB4NjYsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg0LCAweDdmLCAweDQsIDB4OGEsIDB4NCwgMHg4ZiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDQsIDB4OTksIDB4NCwgMHg5ZSwgMHg0LCAweGEyLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4NCwgMHhiNSwgMHg0LCAweGJhLCAweDQsIDB4YzAsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHg0LCAweGNjLCAweDQsIDB4ZDIsIDB4NCwgMHhkOCwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDQsIDB4ZTAsIDB4NCwgMHhlNCwgMHg0LCAweGU4LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4NCwgMHhmYSwgMHg1LCAweDAsIDB4NSwgMHg3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg1LCAweDExLCAweDUsIDB4MTYsIDB4NSwgMHgxYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDUsIDB4MjUsIDB4NSwgMHgyYSwgMHg1LCAweDJmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NSwgMHgzZCwgMHg1LCAweDQ3LCAweDUsIDB4NTAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1LCAweDVjLCAweDUsIDB4NjUsIDB4NSwgMHg2YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDUsIDB4NzQsIDB4NSwgMHg3OSwgMHg1LCAweDdlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NSwgMHg4NiwgMHg1LCAweDhhLCAweGY3LCAweDhkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4ZTUsIDB4NSwgMHgzMCwgMHg2LCAweGI5LCAweGQ3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODQsIDB4NiwgMHg5ZiwgMHgzZiwgMHg1LCAweDMzLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4ODgsIDB4MzcsIDB4YSwgMHg1MSwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjgsIDB4NjQsIDB4NSwgMHhmYiwgMHg5MSwgMHgzYywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE1LCAweDYsIDB4ZmIsIDB4OGUsIDB4N2MsIDB4YSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDlkLCAweGY3LCAweDNhLCAweDE1LCAweGY3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2QsIDB4YjYsIDB4ZmIsIDB4M2QsIDB4NSwgMHhiLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MWYsIDB4MTMsIDB4YmMsIDB4M2IsIDB4YSwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhhMSwgMHhmNywgMHgxLCAweDE1LCAweDEzLCAweGJjLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTUsIDB4ZjcsIDB4NDEsIDB4NDIsIDB4YSwgMHgzYywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGY3LCAweDM2LCAweDUsIDB4OTEsIDB4YTgsIDB4OTAsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4MWEsIDB4Y2YsIDB4NDYsIDB4YTksIDB4NDYsIDB4MmUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2ZiwgMHg3NCwgMHg1MSwgMHgxZSwgMHg5ZiwgMHgzYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGE2LCAweGVmLCAweGExLCAweGQ2LCAweDFiLCAweGJjLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDY5LCAweDg0LCAweDhhLCAweDgzLCAweDg4LCAweDgzLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDY4LCAweDY0LCAweDhlLCAweDY3LCAweDFiLCAweGZiLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGZiLCAweDIwLCAweDY0LCAweGIsIDB4MTUsIDB4MjAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDE1LCAweGZiLCAweDI4LCAweGY3LCAweDEsIDB4NDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmNywgMHg0NCwgMHhmNywgMHgzNCwgMHhmNywgMHg5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweGY3LCAweDYsIDB4NDgsIDB4ZjQsIDB4ZmIsIDB4MjksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4ZmIsIDB4MmEsIDB4ZmIsIDB4MmYsIDB4ZmIsIDB4NjIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4OWUsIDB4MTUsIDB4ZjcsIDB4NCwgMHg4YSwgMHhlNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHgxZSwgMHgxYiwgMHhmNywgMHg1LCAweGE2LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDhhLCAweDFmLCAweDJhLCAweDNkLCAweGZiLCAweDI3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDI5LCAweDVkLCAweGQyLCAweGRhLCAweDFlLCAweGUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4NiwgMHg1NCwgMHhmYiwgMHg5YywgMHg1LCAweDg2LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDc1LCAweDc3LCAweDFhLCAweDJkLCAweGM4LCAweDU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4ZjcsIDB4MTUsIDB4ZTksIDB4YWMsIDB4ZjcsIDB4NDgsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YzIsIDB4ZjcsIDB4OWQsIDB4NSwgMHhkYiwgMHg0NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGEyLCAweDYsIDB4NzksIDB4MzEsIDB4NSwgMHhlYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweGZiLCAweDk1LCAweDUsIDB4MzYsIDB4NzksIDB4NmIsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4MWIsIDB4M2IsIDB4NzUsIDB4YWIsIDB4YjAsIDB4OGEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4OGQsIDB4OWEsIDB4OGUsIDB4OWEsIDB4MWUsIDB4YzMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4NSwgMHhlYSwgMHg0NiwgMHhhLCAweGZiLCAweGEyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3YSwgMHg3YiwgMHgxYSwgMHg0MywgMHhkMCwgMHg2MCwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhjMCwgMHhhNiwgMHhhNSwgMHhiNywgMHgxZSwgMHgxMywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg2MiwgMHg1LCAweGY3LCAweDQzLCAweDM3LCAweGEsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhkMCwgMHhmNywgMHhmNywgMHg4ZiwgMHhhLCAweDM2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4NiwgMHg2NSwgMHhmYiwgMHg2MywgMHg1LCAweDEzLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDYzLCAweDViLCAweDY0LCAweDRkLCAweDFiLCAweDU0LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGExLCAweDk3LCAweDhjLCAweDk2LCAweDhjLCAweDkzLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGY3LCAweGI4LCAweDQzLCAweGEsIDB4MTUsIDB4ZGMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHhmYiwgMHg1YiwgMHg1LCAweDg1LCAweDc4LCAweDg5LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTUsIDB4MzMsIDB4YSwgMHgxMywgMHhkOCwgMHgyYSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MzAsIDB4YSwgMHgyNiwgMHhmYiwgMHg0NCwgMHgyZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDQyLCAweDU2LCAweGEsIDB4YmMsIDB4ZjcsIDB4ODAsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3YywgMHg0MSwgMHg0YywgMHhhLCAweGE3LCAweGY3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGEsIDB4NzIsIDB4ZmIsIDB4OCwgMHg1NiwgMHhhLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYyLCAweDUsIDB4ZmMsIDB4YTEsIDB4NiwgMHg3OSwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhhLCAweDNkLCAweDdjLCAweGEsIDB4MzcsIDB4NiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDU1LCAweDM3LCAweGEsIDB4ZmIsIDB4NDAsIDB4NiwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhhLCAweDUsIDB4ZjcsIDB4M2UsIDB4MzcsIDB4YSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHgzYywgMHhhLCAweGY3LCAweDQxLCAweDYsIDB4M2IsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzZSwgMHhhLCAweGIsIDB4NjEsIDB4NTMsIDB4NDksIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4MWIsIDB4NjYsIDB4NjUsIDB4OTgsIDB4YTQsIDB4YzMsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YzMsIDB4YzUsIDB4YjEsIDB4ODQsIDB4ODksIDB4YTgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgxZSwgMHhmMSwgMHhhMiwgMHgxNSwgMHhlZiwgMHhlYSwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHhmNywgMHgzLCAweGIwLCAweDU0LCAweDU2LCAweDIwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NTUsIDB4MzUsIDB4NTMsIDB4MmQsIDB4YTMsIDB4ZGQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgxNSwgMHg5ZCwgMHhlNiwgMHg1LCAweGY3LCAweDMzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4ZjcsIDB4OTQsIDB4NSwgMHhmYiwgMHgzNSwgMHgzNCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk4LCAweDYsIDB4MjUsIDB4ZmIsIDB4ZWYsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg0YiwgMHhhLCAweGUsIDB4NSwgMHg2ZCwgMHg0NCwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHgzZiwgMHgxYiwgMHhmYiwgMHhmLCAweDgyLCAweGI5LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDFmLCAweDliLCAweGU2LCAweDE1LCAweGM0LCAweGFjLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGM4LCAweDFiLCAweGNhLCAweGQ4LCAweDZlLCAweDRhLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4MTUsIDB4ZmIsIDB4MTIsIDB4ZjcsIDB4MTgsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4NDksIDB4ZTYsIDB4ZjcsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4NDgsIDB4ZTAsIDB4ZmIsIDB4MzIsIDB4ZmIsIDB4MzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4YiwgMHgzYywgMHhmNywgMHgyYSwgMHhlYSwgMHhlMCwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhkZCwgMHgxZiwgMHg3YSwgMHhkYiwgMHgyZiwgMHhhLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NGEsIDB4OTMsIDB4YSwgMHhkMywgMHgzMSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGE0LCAweDYsIDB4YjUsIDB4ZjcsIDB4NWUsIDB4N2EsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhmYiwgMHg0LCAweDk1LCAweGEsIDB4YWIsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg0LCAweDYsIDB4YiwgMHg2LCAweDllLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YiwgMHgxNSwgMHhmOCwgMHgyMSwgMHg2LCAweDk0LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGMwLCAweGE5LCAweDFhLCAweGVlLCAweDg5LCAweDMwLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDksIDB4MWIsIDB4ZmIsIDB4MTcsIDB4YiwgMHg2LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDUsIDB4YiwgMHg2LCAweDllLCAweGU1LCAweDUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHhhLCAweGJmLCAweDNhLCAweGZiLCAweGEsIDB4NDIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4MWUsIDB4ZDksIDB4OTUsIDB4MTUsIDB4YjcsIDB4YWYsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4YjUsIDB4YTUsIDB4NzMsIDB4NTMsIDB4YSwgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweGJhLCAweDU3LCAweGUzLCAweGVkLCAweGVmLCAweGQyLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweDU4LCAweGJlLCAweDM3LCAweDI3LCAweDI5LCAweDNmLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGRjLCAweDkxLCAweDE1LCAweGJhLCAweGIyLCAweGIyLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGE0LCAweDcyLCAweDZjLCAweDU2LCAweDUyLCAweDcwLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDZmLCAweGEzLCAweGE1LCAweDFlLCAweGIsIDB4OGIsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MTAsIDB4ZTYsIDB4MSwgMHhiLCAweDUyLCAweGJmLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweGRhLCAweGI2LCAweGEyLCAweGFlLCAweGNhLCAweGIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHgzMSwgMHg1LCAweGIsIDB4ODQsIDB4YTMsIDB4YTMsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4MWIsIDB4ZDUsIDB4YzUsIDB4YmQsIDB4YTQsIDB4YTYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4Y2EsIDB4NSwgMHg3NywgMHg2ZSwgMHg2OSwgMHg3MiwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3YSwgMHg3NiwgMHg5MSwgMHg5MiwgMHg3NiwgMHgxZiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg3NSwgMHg5MiwgMHg3NiwgMHgxYiwgMHhiLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NiwgMHhiLCAweDYsIDB4OWUsIDB4ZTksIDB4NSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGU1LCAweGQ3LCAweGU1LCAweGY3LCAweDY0LCAweGU1LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ZTcsIDB4M2IsIDB4ZTYsIDB4ZjAsIDB4ZTUsIDB4Y2QsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg2LCAweDlkLCAweGU2LCAweDUsIDB4YiwgMHgzZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NiwgMHg3OCwgMHgyZCwgMHg1LCAweGIsIDB4MSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHhmNywgMHhmMSwgMHhlZiwgMHgzLCAweGIsIDB4NiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHg1LCAweGIsIDB4YmIsIDB4ZDUsIDB4YmYsIDB4YjUsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4OTksIDB4MWUsIDB4ZTYsIDB4YjAsIDB4NSwgMHhiOSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHhkYywgMHhmYiwgMHgxNSwgMHgxYiwgMHhmYiwgMHgyMiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGVlLCAweDYsIDB4ZjcsIDB4NTMsIDB4ZjcsIDB4MjUsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4ZmIsIDB4NDUsIDB4NWUsIDB4YSwgMHgxNSwgMHg0ZiwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhkZSwgMHhmMSwgMHhlMSwgMHhkMiwgMHhlNywgMHhjNywgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDY0LCAweGEsIDB4ZjcsIDB4ZiwgMHg2NSwgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3OSwgMHgzMCwgMHg1LCAweGIsIDB4NSwgMHhmYiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHgzZCwgMHhmNywgMHg0YiwgMHg1LCAweGJkLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4ODQsIDB4NiwgMHg3NywgMHgzNCwgMHg1YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgsIDB4YiwgMHg1LCAweDI5LCAweDYsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhhMiwgMHg3MywgMHhhZCwgMHhiNywgMHhiNSwgMHhiNSwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg3MiwgMHg5OSwgMHg2YSwgMHg1YSwgMHg2NywgMHg1ZSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiLCAweDE2LCAweDYwLCAweGEsIDB4YTgsIDB4N2EsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NTQsIDB4NmUsIDB4NWYsIDB4NjcsIDB4MWUsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2MiwgMHhmYiwgMHg1NSwgMHhjMCwgMHhjNSwgMHhmYiwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYiwgMHhmNywgMHgyNiwgMHhmNywgMHhmLCAweDU2LCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YiwgMHhhNywgMHhhZiwgMHgxNSwgMHhiMiwgMHg0YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDk5LCAweGNkLCAweGIxLCAweGJjLCAweDFiLCAweGEwLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDgzLCAweGE0LCAweDFmLCAweGIsIDB4NmQsIDB4NTUsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NWQsIDB4NjEsIDB4NzMsIDB4YTIsIDB4YTcsIDB4MWUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhlNSwgMHhkNSwgMHhmNywgMHgzNiwgMHgzMiwgMHhlNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlNSwgMHhiLCAweDYsIDB4OWYsIDB4ZTksIDB4NSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZWQsIDB4NiwgMHhiLCAweDdjLCAweGU0LCAweDNlLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDljLCAweGU2LCAweGIsIDB4MSwgMHg5ZSwgMHhlZiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGViLCAweDMsIDB4YiwgMHgxLCAweGYzLCAweGU5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGU5LCAweDMsIDB4YiwgMHgxNSwgMHhmNywgMHg0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg2LCAweDllLCAweGU3LCAweDUsIDB4YiwgMHg1LCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHg2MywgMHhhLCAweGY3LCAweDc1LCAweDc3LCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHgyMiwgMHhmYiwgMHgxMCwgMHhmNSwgMHg0NSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4NjEsIDB4YSwgMHhmNywgMHg3NywgMHg3NywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIsIDB4NzEsIDB4YTIsIDB4NzIsIDB4YjEsIDB4YmEsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4YjAsIDB4YiwgMHg3YywgMHhlNiwgMHhkZCwgMHhlNiwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhiLCAweDEsIDB4ZjcsIDB4NjcsIDB4ZjEsIDB4MywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGU2LCAweGY3LCAweGExLCAweGU2LCAweGIsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2LCAweGE1LCAweGIsIDB4NSwgMHhmYiwgMHg1LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1LCAweDJhLCAweDYsIDB4YiwgMHg1NywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDc3LCAweDEyLCAweDEzLCAweGIwLCAweGIsIDB4NzUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3YSwgMHg3NywgMHg2MiwgMHhhLCAweGIsIDB4ZjgsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4YSwgMHhhYSwgMHhmNywgMHgyYiwgMHg1LCAweGZiLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiLCAweGIxLCAweDRjLCAweGY3LCAweDY2LCAweGY3LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFiLCAweGY3LCAweDMyLCAweDRkLCAweDU3LCAweGM1LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzYsIDB4MzQsIDB4NSwgMHhmNywgMHhjMCwgMHg4NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDYsIDB4YiwgMHg1LCAweGRhLCAweDYsIDB4OWQsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHhhMCwgMHg4MiwgMHhhLCAweGIsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2LCAweGIsIDB4NiwgMHg3NywgMHgzMCwgMHg1LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3NywgMHgyZCwgMHg1LCAweGIsIDB4NSwgMHhmNywgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIsIDB4ZjcsIDB4YjEsIDB4NSwgMHhiLCAweDY0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4ODMsIDB4YSwgMHhiLCAweDE1LCAweGY4LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OWUsIDB4ZjcsIDB4MiwgMHg1LCAweGZjLCAweDYzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg2LCAweDNjLCAweDdkLCAweGEsIDB4YiwgMHg4YiwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhhLCAweGU1LCAweGIsIDB4MSwgMHhmOCwgMHg2NiwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGIsIDB4NzksIDB4ZTQsIDB4ZjgsIDB4MjUsIDB4ZTYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhlNiwgMHhmNywgMHg5NCwgMHhlNiwgMHhiLCAweDc5LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDE3LCAweGU1LCAweGIsIDB4NSwgMHgyYiwgMHg2LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyOCwgMHg2LCAweGIsIDB4ZmMsIDB4YSwgMHg1LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MTAsIDB4NSwgMHhiLCAweDUsIDB4ZmIsIDB4NGMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHgyZSwgMHg1LCAweGQ4LCAweDYsIDB4M2YsIDB4YiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHhmNywgMHg4ZiwgMHhlOSwgMHgxLCAweGIsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg3MSwgMHhhLCAweGIsIDB4OGIsIDB4ZTksIDB4ZjgsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4MSwgMHhiLCAweDYsIDB4NzgsIDB4MmUsIDB4NSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4NiwgMHg2LCAweGIsIDB4NiwgMHg5ZiwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGIsIDB4NSwgMHhmYiwgMHgyOCwgMHg2LCAweGIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyLCAweDYsIDB4YiwgMHg2LCAweDc5LCAweDJkLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1LCAweGY3LCAweDhmLCAweDYsIDB4YiwgMHg2LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDUsIDB4YiwgMHg1LCAweGRiLCAweDYsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhjNSwgMHg5OCwgMHgxZiwgMHhlNywgMHhmOCwgMHgyZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZGEsIDB4ZjcsIDB4YiwgMHhhNCwgMHgxZiwgMHhjNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHg1LCAweGIsIDB4NSwgMHhmYiwgMHg0NSwgMHg2LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweDhhLCAweGEsIDB4YiwgMHg2NSwgMHhjYSwgMHhmYiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZSwgMHg1LCAweGUsIDB4NSwgMHhmYiwgMHg0MiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDE1LCAweDc3LCAweDMzLCAweDUsIDB4ZjcsIDB4ZDcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY3LCAweDczLCAweDc3LCAweDEsIDB4YiwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDYsIDB4YiwgMHgyOCwgMHhmYiwgMHg0MiwgMHgyYSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OWUsIDB4ZTgsIDB4NSwgMHhiLCAweDUsIDB4ZmIsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiLCAweDUsIDB4ZWMsIDB4NiwgMHhiLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YiwgMHhmYiwgMHg1NiwgMHg1LCAweGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdEZpeGVkSXRhbGljLmMgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0Rml4ZWRJdGFsaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODQwOWJhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdEZpeGVkSXRhbGljLmMKQEAgLTAsMCArMSwyMzUyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRGaXhlZEl0YWxpY0ZvbnREYXRhIFsxODc0Nl0gPSB7MHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0LCAweDIsIDB4MCwgMHgxLCAweDEsIDB4MSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDQ2LCAweDY5LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjQsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MmQsIDB4NDksIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YywgMHg2OSwgMHg2MywgMHgwLCAweDEsIDB4MSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4ZjgsIDB4MTAsIDB4MCwgMHhmOCwgMHgyYSwgMHgxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4MiwgMHhmOCwgMHgyYywgMHgzLCAweGY4LCAweDE4LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHhmYiwgMHg4ZCwgMHhmOSwgMHgyYiwgMHhmOSwgMHhiNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTMsIDB4ZiwgMHhmOSwgMHhjLCAweDExLCAweGFhLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4NzgsIDB4MTIsIDB4MCwgMHgxMiwgMHgxLCAweDEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4OSwgMHgxMSwgMHgxOSwgMHgxZiwgMHgyNSwgMHgyOSwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDQyLCAweDQ5LCAweDUzLCAweDVjLCAweDY1LCAweDhmLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4NDksIDB4NjQsIDB4NmYsIDB4NzQsIDB4NDksIDB4NGEsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg1MywgMHg2MywgMHg2NSwgMHg2NCwgMHg2OSwgMHg2YywgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDczLCAweDYzLCAweDY1LCAweDY0LCAweDY5LCAweDZjLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NDcsIDB4NjMsIDB4NjEsIDB4NzIsIDB4NmYsIDB4NmUsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg2MSwgMHg3MiwgMHg2ZiwgMHg2ZSwgMHg2YywgMHg2OSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDQ1LCAweDc1LCAweDcyLCAweDZmLCAweDcwLCAweDcyLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NjMsIDB4NzIsIDB4NjksIDB4NzAsIDB4NzQsIDB4NjksIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwgMHg3NywgMHg2YywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDc0LCAweDYxLCAweDcyLCAweDcyLCAweDZmLCAweDc3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NmYsIDB4NzcsIDB4NzIsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg2OCwgMHg3NCwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDZmLCAweDc3LCAweDZlLCAweDYxLCAweDcyLCAweDcyLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NjIsIDB4NmYsIDB4NzQsIDB4NjgsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NzIsIDB4NmYsIDB4NmQsIDB4MjAsIDB4NDYsIDB4NjksIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2NCwgMHgyMCwgMHg0ZiwgMHg1NCwgMHg0NiwgMHgyMCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDYxLCAweDZjLCAweDY5LCAweDYzLCAweDQzLCAweDY4LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NkYsIDB4NkQsIDB4MjAsIDB4NDYsIDB4NjksIDB4NzgsIDB4NjUsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHg0ZiwgMHg1NCwgMHg0NiwgMHgwLCAweDAsIDB4MSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg2LCAweDAsIDB4NjgsIDB4MCwgMHgwLCAweDksIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDdjLCAweDAsIDB4MCwgMHg0MiwgMHgyMCwgMHgwLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDY0LCAweDAsIDB4MCwgMHhhMCwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgwLCAweDAsIDB4ODMsIDB4MCwgMHgwLCAweGFhLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDhiLCAweDAsIDB4MCwgMHg2YSwgMHgwLCAweDAsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YTUsIDB4MCwgMHgwLCAweDgwLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDAsIDB4MCwgMHg5YywgMHgwLCAweDAsIDB4YTQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YTksIDB4MCwgMHgwLCAweDdkLCAweDAsIDB4MCwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg3MywgMHgwLCAweDAsIDB4NzIsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4MCwgMHgwLCAweDk2LCAweDAsIDB4MCwgMHg4ZiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg3OCwgMHgwLCAweDAsIDB4OWUsIDB4MCwgMHgwLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGEzLCAweDAsIDB4MCwgMHg3YiwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgwLCAweDAsIDB4YWIsIDB4MSwgMHgwLCAweGIwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGFkLCAweDAsIDB4MCwgMHhhZiwgMHgwLCAweDAsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YjEsIDB4MCwgMHgwLCAweGI1LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDIsIDB4MCwgMHhiOSwgMHgwLCAweDAsIDB4YjYsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OWEsIDB4MCwgMHgwLCAweGJhLCAweDAsIDB4MCwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhiYiwgMHgxLCAweDAsIDB4YmYsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4MCwgMHgwLCAweGE4LCAweDAsIDB4MCwgMHg4ZCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjNCwgMHgwLCAweDAsIDB4YzEsIDB4MiwgMHgwLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDlkLCAweDAsIDB4MCwgMHg5NSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHgwLCAweDAsIDB4YzksIDB4MCwgMHgwLCAweGM4LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGNkLCAweDAsIDB4MCwgMHhjYSwgMHgwLCAweDAsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4OTAsIDB4MCwgMHgwLCAweGNlLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweDAsIDB4MCwgMHhjZiwgMHgyLCAweDAsIDB4ZDYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZDMsIDB4MiwgMHgwLCAweGE3LCAweDAsIDB4MCwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhkYiwgMHgwLCAweDAsIDB4ZDgsIDB4MSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4MCwgMHgwLCAweGRhLCAweDAsIDB4MCwgMHg5ZiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg5MywgMHgwLCAweDAsIDB4ZTEsIDB4MCwgMHgwLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgwLCAweGUyLCAweDAsIDB4MCwgMHhhMiwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHgwLCAweDEsIDB4ODcsIDB4MCwgMHgwLCAweDkxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDg4LCAweDEsIDB4MCwgMHg4YywgMHgwLCAweDAsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4OGUsIDB4MCwgMHgwLCAweDk0LCAweDAsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDEsIDB4MCwgMHhjMCwgMHgwLCAweDAsIDB4ZGQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzYsIDB4MSwgMHgwLCAweGU0LCAweDAsIDB4MCwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MSwgMHg4YywgMHgxLCAweDAsIDB4N2UsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4MCwgMHgwLCAweDgxLCAweDEsIDB4MCwgMHg4NCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4NywgMHgwLCAweDAsIDB4N2YsIDB4MCwgMHgwLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDZmLCAweDAsIDB4MCwgMHg4OSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHgwLCAweDAsIDB4OCwgMHgwLCAweDAsIDB4NzUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NjksIDB4MCwgMHgwLCAweDc3LCAweDAsIDB4MCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg3MCwgMHgxLCAweDAsIDB4NzQsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4MSwgMHgwLCAweDZiLCAweDEsIDB4MCwgMHg2MywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg4ZSwgMHgyLCAweDAsIDB4OTksIDB4MCwgMHgxLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgwLCAweGE2LCAweDAsIDB4MCwgMHg2ZCwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHgyLCAweDAsIDB4MSwgMHgwLCAweDIsIDB4MCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgyZiwgMHgwLCAweDYyLCAweDAsIDB4ZDAsIDB4MSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YjEsIDB4MiwgMHgzYywgMHgyLCAweDUwLCAweDIsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGJlLCAweDIsIDB4ZjUsIDB4MywgMHgyMSwgMHgzLCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg0MywgMHgzLCAweDUyLCAweDMsIDB4NjcsIDB4MywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZDIsIDB4NCwgMHgyMiwgMHg0LCAweDgwLCAweDQsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDExLCAweDUsIDB4NjcsIDB4NSwgMHg4ZiwgMHg2LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDU3LCAweDYsIDB4NmYsIDB4NiwgMHg4ZiwgMHg2LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhkNCwgMHg2LCAweGY3LCAweDcsIDB4NWIsIDB4NywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4MzIsIDB4OCwgMHg5ZiwgMHg4LCAweGYzLCAweDksIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDc3LCAweDksIDB4YzMsIDB4OSwgMHhkNywgMHhhLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg0OCwgMHhhLCAweDg0LCAweGEsIDB4ZDcsIDB4YiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg0OCwgMHhiLCAweDgzLCAweGIsIDB4Y2QsIDB4YywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4YjcsIDB4ZCwgMHgxOSwgMHhkLCAweDg4LCAweGQsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDEyLCAweGUsIDB4M2QsIDB4ZSwgMHg3ZiwgMHhlLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHg3LCAweGYsIDB4M2UsIDB4ZiwgMHg1ZSwgMHhmLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhhNCwgMHhmLCAweGQ0LCAweGYsIDB4ZTUsIDB4ZiwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDQ1LCAweDEwLCAweGFhLCAweDEwLCAweGZlLCAweDExLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4YjksIDB4MTIsIDB4YSwgMHgxMiwgMHgxZiwgMHgxMiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGEwLCAweDEyLCAweGUyLCAweDEzLCAweDMwLCAweDEzLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4Y2EsIDB4MTQsIDB4MjksIDB4MTQsIDB4NzAsIDB4MTQsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgzZiwgMHgxNSwgMHg4NCwgMHgxNSwgMHhlZCwgMHgxNiwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDhmLCAweDE2LCAweGJiLCAweDE2LCAweGZmLCAweDE3LCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4OTIsIDB4MTcsIDB4YzQsIDB4MTgsIDB4MmIsIDB4MTgsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhhYywgMHgxOCwgMHhlYSwgMHgxOSwgMHgxOSwgMHgxOSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGU2LCAweDFhLCAweDY3LCAweDFhLCAweGNhLCAweDFhLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ODIsIDB4MWIsIDB4OWUsIDB4MWMsIDB4MjMsIDB4MWMsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhiZCwgMHgxYywgMHhkOCwgMHgxZCwgMHg2MCwgMHgxZCwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGIwLCAweDFkLCAweGVlLCAweDFlLCAweDMxLCAweDFlLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YTksIDB4MWUsIDB4ZWUsIDB4MWYsIDB4MjcsIDB4MWYsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4NCwgMHgxZiwgMHhhOCwgMHgxZiwgMHhlNywgMHgyMCwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDg5LCAweDIwLCAweGZjLCAweDIxLCAweGFhLCAweDIyLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHgyNywgMHgyMiwgMHg0ZSwgMHgyMiwgMHg3YiwgMHgyMiwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGU5LCAweDIzLCAweDJmLCAweDIzLCAweDlmLCAweDI0LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4NDAsIDB4MjQsIDB4NjMsIDB4MjQsIDB4ODksIDB4MjQsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhkNCwgMHgyNSwgMHgxNCwgMHgyNSwgMHgzZSwgMHgyNSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGM4LCAweDI2LCAweDQ5LCAweDI2LCAweDY3LCAweDI2LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4YWUsIDB4MjYsIDB4ZmYsIDB4MjcsIDB4MzEsIDB4MjcsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhlOCwgMHgyNywgMHhmZCwgMHgyOCwgMHgxNiwgMHgyOCwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDYxLCAweDI4LCAweDgwLCAweDI4LCAweGQxLCAweDI5LCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4NzEsIDB4MjksIDB4OTcsIDB4MjksIDB4YWQsIDB4MmEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHgzNiwgMHgyYSwgMHg3ZiwgMHgyYiwgMHgyZCwgMHgyYiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGNkLCAweDJiLCAweGVhLCAweDJjLCAweDE5LCAweDJjLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NjUsIDB4MmMsIDB4OTYsIDB4MmMsIDB4YmEsIDB4MmMsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg1MSwgMHgyZCwgMHhmNCwgMHgyZSwgMHhjLCAweDJlLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4NDksIDB4MmUsIDB4OTIsIDB4MmUsIDB4YjksIDB4MmUsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHg2YSwgMHgyZiwgMHg4OSwgMHgyZiwgMHhhOCwgMHgyZiwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGY4LCAweDMwLCAweDRiLCAweDMwLCAweGI2LCAweDMxLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4NDAsIDB4MzEsIDB4NjYsIDB4MzEsIDB4YzMsIDB4MzIsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHg2NSwgMHgzMiwgMHg5ZiwgMHgzMywgMHgwLCAweDMzLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4MzksIDB4MzQsIDB4ZTUsIDB4MzUsIDB4NzAsIDB4MzYsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDJkLCAweDM2LCAweDcxLCAweDM2LCAweGIzLCAweDM3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHgyOCwgMHgzNywgMHg0OSwgMHgzNywgMHg2YiwgMHgzNywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGI2LCAweDM3LCAweGM2LCAweDM3LCAweGZkLCAweDM4LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NmYsIDB4MzgsIDB4OGUsIDB4MzgsIDB4OWUsIDB4MzgsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhiZiwgMHgzOCwgMHhkNSwgMHgzOCwgMHhlNCwgMHgzOSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MjQsIDB4MzksIDB4NDAsIDB4MzksIDB4NzAsIDB4MzksIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhkNCwgMHgzOSwgMHhmNCwgMHgzYSwgMHgyZiwgMHgzYSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDZlLCAweDNhLCAweDgxLCAweDNiLCAweDEsIDB4M2IsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHgwLCAweDNjLCAweDUzLCAweDNjLCAweDc0LCAweDNjLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4YmUsIDB4M2MsIDB4ZTMsIDB4M2QsIDB4MWQsIDB4M2QsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhhNywgMHgzZSwgMHgxNCwgMHhlLCAweGUsIDB4N2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDEsIDB4ZjcsIDB4OWYsIDB4YjcsIDB4MywgMHhmNywgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ5LCAweDE1LCAweGI3LCAweDYsIDB4ZWUsIDB4ZjgsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDNkLCAweDYsIDB4ZmIsIDB4MjIsIDB4ZmMsIDB4YWIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg5ZCwgMHg3NCwgMHhiMCwgMHhiMywgMHhiMywgMHhhOCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDcyLCAweDlmLCAweDY4LCAweDY2LCAweDY1LCAweDY5LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHhmNywgMHhkYywgMHhmNywgMHg3ZSwgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweGI2LCAweDdkLCAweGRiLCAweGI1LCAweGI1LCAweDdlLCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4ZjcsIDB4ZDUsIDB4ZjcsIDB4ZGMsIDB4MTUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhhOCwgMHg2NCwgMHhhLCAweGRhLCAweDYsIDB4MTMsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHhmYiwgMHg3ZSwgMHg1LCAweGZiLCAweDU1LCAweDE2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4YTgsIDB4NjQsIDB4YSwgMHhkYiwgMHg2LCAweDEzLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4ZmIsIDB4N2UsIDB4NSwgMHhlLCAweGY3LCAweDVlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4YmYsIDB4ZjcsIDB4NzUsIDB4MSwgMHhmNywgMHgyYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGJiLCAweGY3LCAweDM5LCAweDMsIDB4ZjIsIDB4NGMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg2LCAweGMxLCAweGY3LCAweDY5LCAweDUsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDU5LCAweGZiLCAweDY5LCAweDUsIDB4YmIsIDB4NiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY5LCAweDUsIDB4ZjIsIDB4NiwgMHg5NSwgMHhiZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4NiwgMHhiNCwgMHhmNywgMHgzNCwgMHg1LCAweGUzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhiZiwgMHg1LCAweDMzLCAweDYsIDB4YzEsIDB4ZjcsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDViLCAweDYsIDB4NTQsIDB4ZmIsIDB4NzUsIDB4ODMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweDc1LCAweDUsIDB4NWIsIDB4NiwgMHg1MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDUsIDB4MjUsIDB4NiwgMHg4MSwgMHg1NywgMHg1LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2NCwgMHhmYiwgMHgzNCwgMHg1LCAweDJmLCAweDYsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg1LCAweGU1LCAweDYsIDB4Y2EsIDB4YmYsIDB4MTUsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNCwgMHg1LCAweGY3LCAweDE3LCAweDYsIDB4NjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHg1LCAweGUsIDB4MjIsIDB4NzYsIDB4ZjcsIDB4MmIsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0MCwgMHhiZiwgMHgxLCAweGMzLCAweGMwLCAweGY3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhmNywgMHgyOCwgMHhjNSwgMHgzLCAweGMzLCAweDljLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4NiwgMHg5NiwgMHhiZSwgMHhhYiwgMHg3NywgMHhhOSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDgxLCAweDE5LCAweDZkLCAweGZiLCAweDJhLCAweDUxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhmNywgMHgyYiwgMHg1LCAweGY3LCAweDAsIDB4ZWMsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg4YywgMHgxZiwgMHhkNCwgMHg0NSwgMHhiMSwgMHg0NywgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDUyLCAweGEwLCAweDJmLCAweGE0LCAweDg5LCAweGJjLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHhkOSwgMHhhYywgMHhjYywgMHhiYSwgMHhiNiwgMHg3MiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDFlLCAweDgzLCAweDY2LCAweDZhLCAweGEsIDB4YTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHg1LCAweDU1LCAweDYsIDB4ODAsIDB4NTQsIDB4NzAsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg5ZCwgMHg2OSwgMHg4ZiwgMHgxOSwgMHg5ZiwgMHhmNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4YSwgMHg3NywgMHgyMywgMHg1LCAweDU3LCAweDhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4NzEsIDB4ZmIsIDB4MWQsIDB4MWEsIDB4NDUsIDB4ZTYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHg3MiwgMHgxZSwgMHhjYiwgMHg3NCwgMHhjZSwgMHg2YywgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDUxLCAweDNlLCAweDZmLCAweDI5LCAweDU5LCAweDVlLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NmQsIDB4MWUsIDB4OTQsIDB4YjksIDB4NTIsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YzQsIDB4ZjcsIDB4MjgsIDB4YzIsIDB4ZjcsIDB4MTIsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZiwgMHhjMiwgMHgxMiwgMHhmNywgMHgxMywgMHhjNCwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGMzLCAweGM1LCAweGFiLCAweGM1LCAweDE3LCAweGY3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NmIsIDB4NmQsIDB4YSwgMHhiYSwgMHg0MiwgMHgzNSwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDNiLCAweDFlLCAweGM0LCAweDk0LCAweDE1LCAweGJjLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4YzEsIDB4YWQsIDB4YTIsIDB4NzAsIDB4NzIsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4YjMsIDB4MTUsIDB4ZjgsIDB4NjEsIDB4ZjcsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDEzLCAweGM1LCAweDg2LCAweGMxLCAweGZjLCAweDYwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4NSwgMHhmNywgMHgyYSwgMHhmYiwgMHgzNCwgMHg2ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4NDIsIDB4MzUsIDB4NDcsIDB4M2IsIDB4M2IsIDB4MWUsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHgxNSwgMHhiYywgMHhhZSwgMHhiYSwgMHhjMSwgMHhhZCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDcyLCAweGEsIDB4ZSwgMHg3YywgMHhiZCwgMHg2NywgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM4LCAweGMzLCAweGY3LCAweDZkLCAweGJlLCAweDEyLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4Y2UsIDB4YzEsIDB4MTMsIDB4N2MsIDB4ZjcsIDB4ZTEsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhhNiwgMHg1OCwgMHg1LCAweGY3LCAweDJiLCAweDYsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHg1LCAweGZiLCAweDExLCAweDYsIDB4NzgsIDB4YWUsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhhNSwgMHhiZCwgMHg5YiwgMHhiNiwgMHgxOSwgMHhkYywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4YzMsIDB4NSwgMHhmYiwgMHhmLCAweDYsIDB4ODMsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg1NCwgMHg2NywgMHg2MywgMHgyMSwgMHhmNywgMHg2MiwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDhmLCAweDdhLCAweGFjLCAweDhhLCAweGFiLCAweDgsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhhNiwgMHhjZiwgMHhhZiwgMHhiMiwgMHg3ZCwgMHg3MiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGE3LCAweGJiLCAweDUsIDB4YWIsIDB4NmQsIDB4NWQsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHgxYiwgMHgzOSwgMHgyZSwgMHg2MCwgMHgzZCwgMHgxZiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDljLCAweDY3LCAweDliLCAweDY3LCAweDgsIDB4ZmIsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg3OSwgMHg0YiwgMHg0NSwgMHgxYSwgMHgxMywgMHhiYywgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDUwLCAweGUyLCAweGMyLCAweGM3LCAweGEzLCAweGI0LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NzYsIDB4YjksIDB4MTUsIDB4NzUsIDB4NmUsIDB4NjAsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHgxYiwgMHg2MCwgMHg2OCwgMHhhMiwgMHhiZSwgMHg4YSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGQ0LCAweGMyLCAweGJiLCAweGEzLCAweDFlLCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg3NiwgMHhmNywgMHg4MSwgMHg3NywgMHgxLCAweGY3LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZDksIDB4MTUsIDB4YjksIDB4NiwgMHhkMCwgMHhmNywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGEsIDB4ZSwgMHgzNCwgMHg3NiwgMHhmOSwgMHg2ZSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4M2UsIDB4YmUsIDB4MywgMHhmNywgMHg2ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MTUsIDB4YmUsIDB4NiwgMHg3NSwgMHhjNiwgMHg3MSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweDFhLCAweGY3LCAweDRmLCAweGVlLCAweGY3LCAweDMzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHgyMiwgMHgxZSwgMHg3YSwgMHg3OSwgMHg4YiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDE4LCAweGZiLCAweDM3LCAweDQwLCAweGZiLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDYsIDB4MWEsIDB4MmMsIDB4YTEsIDB4MzYsIDB4YTUsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDM0LCAweDc2LCAweGY5LCAweDZlLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhkLCAweGJmLCAweDMsIDB4ZjcsIDB4M2UsIDB4ZmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDljLCAweDlkLCAweDhiLCAweDljLCAweDFiLCAweGY3LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4ZDYsIDB4ZjcsIDB4MjksIDB4ZjcsIDB4NDYsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHg3NCwgMHhlMCwgMHg3MSwgMHhjNywgMHgxZSwgMHg1OCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NTAsIDB4YTUsIDB4MzQsIDB4MmIsIDB4MWEsIDB4ZmIsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhmYiwgMHgzMywgMHhmYiwgMHgxLCAweGZiLCAweDIyLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHg5NSwgMHhmNywgMHhmMiwgMHgxLCAweGY3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0LCAweDMsIDB4ZjcsIDB4MWQsIDB4ZjcsIDB4YjUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg2YiwgMHhlZSwgMHhmNywgMHhlLCAweGJiLCAweGZiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhhYiwgMHg0YSwgMHhmNywgMHgxMiwgMHhmNywgMHgyOSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweGNkLCAweGZiLCAweDI0LCAweDVlLCAweGFlLCAweGY3LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0NiwgMHg2LCAweDc0LCAweGZiLCAweDFkLCAweGZiLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4NmYsIDB4NDksIDB4ZjcsIDB4MTcsIDB4NmUsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzksIDB4YzEsIDB4MSwgMHhmNywgMHg3OSwgMHhjMywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZjcsIDB4NzksIDB4MTUsIDB4ZjcsIDB4NTUsIDB4NiwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRkLCAweDUxLCAweGEsIDB4YjEsIDB4ZjcsIDB4NGQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU0LCAweDRkLCAweGEsIDB4ZmIsIDB4NTQsIDB4NiwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRmLCAweDcxLCAweGEsIDB4NjUsIDB4ZmIsIDB4NGYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDU1LCAweDYsIDB4ZSwgMHgzMCwgMHg3NiwgMHhmNywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZjcsIDB4NTUsIDB4ZmIsIDB4NCwgMHgxNSwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGEsIDB4ZjcsIDB4N2IsIDB4YzEsIDB4MSwgMHhlYywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDMsIDB4ZWMsIDB4ZjcsIDB4N2IsIDB4MTUsIDB4ZjgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhhLCAweGZjLCAweDFlLCAweDYsIDB4ZSwgMHg3YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDEsIDB4ZjcsIDB4NzgsIDB4ZjcsIDB4MjQsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGFlLCAweDM1LCAweGEsIDB4ZSwgMHgzYiwgMHhmOSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YzEsIDB4ZjgsIDB4ODAsIDB4MywgMHhjMSwgMHg0ZiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDc3LCAweGY4LCAweDU1LCAweGY5LCAweDQ0LCAweDYzLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweDdjLCAweGM1LCAweGY4LCAweDc3LCAweGMxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhjMCwgMHhmNywgMHhjOCwgMHhjNiwgMHgzLCAweGU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4MTUsIDB4MmYsIDB4YTgsIDB4MjYsIDB4ZjcsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGI0LCAweGY3LCAweGJlLCAweGY3LCAweGIsIDB4ZTQsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHhmYiwgMHgzLCAweGZiLCAweDVhLCAweDQwLCAweGZiLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmIsIDB4MWUsIDB4YzAsIDB4OGUsIDB4MTUsIDB4ZjcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhmNywgMHg2ZSwgMHhmNywgMHgxZCwgMHhkZiwgMHg5ZCwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweGZiLCAweDQ2LCAweDNiLCAweGZiLCAweDQzLCAweGZiLCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg3MiwgMHhkMywgMHhkMSwgMHgxZSwgMHhlLCAweDhiLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4YzYsIDB4ZjgsIDB4OWYsIDB4NzcsIDB4MSwgMHhmNywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDMsIDB4ZTYsIDB4MTYsIDB4ZjgsIDB4MmEsIDB4MzYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQwLCAweDYsIDB4ZjIsIDB4ZjgsIDB4YTMsIDB4ZmIsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg4MCwgMHg1MywgMHhmNywgMHg0MiwgMHhiMCwgMHgzMiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NDcsIDB4NiwgMHhlLCAweDhiLCAweGMyLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4ZjgsIDB4NmIsIDB4YzAsIDB4MTIsIDB4ZjcsIDB4MzQsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhYSwgMHhjMiwgMHgxMywgMHhiOCwgMHhiZSwgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDYsIDB4YTMsIDB4ZjcsIDB4MTMsIDB4NTIsIDB4YSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDUsIDB4ZmIsIDB4YTksIDB4NiwgMHhmNywgMHhmZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweGI2LCAweGI4LCAweGY3LCAweDksIDB4MWEsIDB4ZDMsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHgzNywgMHgzZSwgMHg0YSwgMHg3ZiwgMHg0MywgMHg0OSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDQzLCAweDUxLCAweGEsIDB4ZTUsIDB4OTksIDB4ZGIsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHgxYiwgMHhkMywgMHhjMiwgMHg2NSwgMHg1MywgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGZiLCAweDcsIDB4ZmIsIDB4OGIsIDB4ZmIsIDB4ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweGZiLCAweDFlLCAweDFlLCAweGUsIDB4N2MsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhjNywgMHhmNywgMHg5NiwgMHhjNCwgMHgxLCAweGY4LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4MywgMHhkMywgMHhhMiwgMHgxNSwgMHg3MSwgMHhjYywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGNlLCAweDFiLCAweGY3LCAweDEwLCAweGY3LCAweDAsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHhkNSwgMHg0ZCwgMHhhMywgMHg2ZCwgMHg5MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGE0LCAweGNjLCAweGJiLCAweGVjLCAweDFhLCAweGRhLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MzMsIDB4OGMsIDB4MWUsIDB4NGIsIDB4NDksIDB4NzksIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgxZiwgMHg5YSwgMHg1OCwgMHg1LCAweGE0LCAweGE4LCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YzksIDB4MWIsIDB4YzYsIDB4YzIsIDB4NzYsIDB4NTMsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg0MSwgMHgyMCwgMHgxZiwgMHg4OCwgMHg2LCAweDgwLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhjOCwgMHg4ZSwgMHhmNywgMHhiLCAweDg4LCAweDQzLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4MzIsIDB4NTksIDB4MjYsIDB4NTAsIDB4NTcsIDB4OTcsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHgxZSwgMHhlLCAweDhiLCAweGM3LCAweGYzLCAweGM2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4Y2MsIDB4MSwgMHhmNywgMHhlOCwgMHhjZCwgMHgzLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzgsIDB4MTUsIDB4ZjcsIDB4YTksIDB4NiwgMHg3NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NSwgMHgyMCwgMHg2MCwgMHhhLCAweGY3LCAweDkxLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzYiwgMHg2LCAweDllLCAweGY3LCAweDAsIDB4NSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OTYsIDB4YzYsIDB4ODksIDB4YSwgMHhjZiwgMHhmNywgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MzAsIDB4NiwgMHhmYiwgMHhkNCwgMHhmYiwgMHhmMCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4OTIsIDB4MTUsIDB4ZjcsIDB4OTYsIDB4ZjcsIDB4YTgsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhOCwgMHg1LCAweGUsIDB4N2MsIDB4YzYsIDB4ZjcsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhmNywgMHgxZSwgMHhjMywgMHgxLCAweGY3LCAweDFlLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWQsIDB4Y2EsIDB4MywgMHhjMiwgMHhhNSwgMHgxNSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGM3LCAweDdlLCAweGMzLCAweDFiLCAweGY3LCAweDI3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZDYsIDB4ZjcsIDB4MjIsIDB4ZGUsIDB4NDUsIDB4YzgsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg1NCwgMHg4NywgMHg3MiwgMHg1ZCwgMHgxZiwgMHhiMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDUsIDB4ZjcsIDB4YjksIDB4M2MsIDB4YSwgMHhmYiwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NTEsIDB4ZmIsIDB4YzEsIDB4YjAsIDB4ODEsIDB4NSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGNiLCAweDlkLCAweGJhLCAweDFiLCAweGQwLCAweGI0LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4MmQsIDB4MjMsIDB4NTAsIDB4MjAsIDB4NTUsIDB4NTQsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg2MiwgMHgxZiwgMHhlLCAweDdjLCAweGM2LCAweGY3LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4ODQsIDB4YzMsIDB4MSwgMHhjYSwgMHhjNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGM5LCAweDMsIDB4ZjcsIDB4MTYsIDB4ZjcsIDB4OWMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNSwgMHhhNSwgMHhmNywgMHg0ZSwgMHhmNywgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4MWIsIDB4OTgsIDB4YzMsIDB4NSwgMHhmYiwgMHhhNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGZiLCAweDJmLCAweGZiLCAweDdjLCAweGZiLCAweDI4LCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4ZTgsIDB4ZjcsIDB4MWQsIDB4ZGMsIDB4ZWMsIDB4ZjcsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweDM0LCAweGJiLCAweDM4LCAweDRlLCAweDUwLCAweDY3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4MWYsIDB4ODMsIDB4NDYsIDB4MTUsIDB4YmMsIDB4YTAsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhjYSwgMHgxYiwgMHhjZSwgMHhjMSwgMHg2ZSwgMHg0NCwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDQxLCAweDJmLCAweDM2LCAweDYzLCAweGQ5LCAweGQ4LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhhMCwgMHg3NiwgMHhmOCwgMHg5MSwgMHhjMiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4YzAsIDB4ZjcsIDB4YzgsIDB4YzUsIDB4MywgMHhmNywgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGM2LCAweDYsIDB4ZjcsIDB4YjMsIDB4ZjgsIDB4OGQsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHg1LCAweGZjLCAweDFkLCAweDYsIDB4NjYsIDB4ZmIsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGMwLCAweDYsIDB4YTYsIDB4ZTksIDB4NSwgMHhmNywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg3YywgMHhjMiwgMHhmNywgMHg2ZCwgMHhjOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGM2LCAweDEsIDB4ZDMsIDB4Y2IsIDB4ZjcsIDB4OWIsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDYwLCAweGY3LCAweGI5LCAweDE1LCAweDY0LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4NGEsIDB4MzEsIDB4MWEsIDB4MmIsIDB4Y2YsIDB4NTgsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNSwgMHhlYSwgMHhkOCwgMHhmNywgMHhiLCAweGQwLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4NmQsIDB4OTksIDB4MWUsIDB4YzAsIDB4OTMsIDB4Y2UsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHgxYSwgMHhjMywgMHg1NCwgMHhjZCwgMHgyMywgMHhmYiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MywgMHg0NCwgMHhmYiwgMHhjLCAweDFlLCAweDhjLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NmIsIDB4YWYsIDB4NzcsIDB4OCwgMHg4OSwgMHhlYywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4ZjcsIDB4NiwgMHhhMSwgMHhiMCwgMHhjZiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDYyLCAweDQxLCAweDQyLCAweDU3LCAweDM5LCAweDZkLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4YzksIDB4MWUsIDB4NDksIDB4ZmIsIDB4YTEsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweGEsIDB4YTUsIDB4YmEsIDB4Y2IsIDB4YzcsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHgyZSwgMHgyOCwgMHg2MiwgMHg0NywgMHg2MiwgMHgzYSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweDFlLCAweGUsIDB4N2QsIDB4YzcsIDB4ZjcsIDB4NDEsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZSwgMHhjMSwgMHgxLCAweGY3LCAweDI1LCAweGM0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4YzYsIDB4MywgMHhjNiwgMHg3ZCwgMHgxNSwgMHhmOCwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHhmNywgMHg1NSwgMHhmNywgMHg3OCwgMHhlOSwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGZiLCAweDUsIDB4ZmIsIDB4MTgsIDB4MjgsIDB4MjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDFmLCAweDQyLCAweDhjLCAweGJmLCAweDQ2LCAweGYzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4Y2EsIDB4OTMsIDB4YjYsIDB4YjQsIDB4MWYsIDB4NjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDI2LCAweGZiLCAweDAsIDB4ZmIsIDB4OTQsIDB4OGQsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDJlLCAweGY3LCAweGNlLCAweDE1LCAweDY0LCAweDcxLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NDIsIDB4MWIsIDB4NDMsIDB4NWUsIDB4YjQsIDB4YmYsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHhkMSwgMHhlNywgMHhlOSwgMHhhNSwgMHgzMCwgMHgzYywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4N2MsIDB4ZjcsIDB4MTAsIDB4ZjcsIDB4MmMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxLCAweGY3LCAweDVhLCAweGY3LCAweDI0LCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHhhZSwgMHgzNSwgMHhhLCAweGM2LCAweGY3LCAweGE4LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweGY3LCAweDk5LCAweGY3LCAweDEwLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhjYiwgMHhkNywgMHhmNywgMHgyNCwgMHgzLCAweGY3LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NCwgMHgxNSwgMHhjYiwgMHg2LCAweGY3LCAweDJhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4NSwgMHgyZSwgMHg2LCAweDllLCAweGY3LCAweDQwLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweGNhLCAweDc2LCAweGY3LCAweGZlLCAweGNmLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHhkNSwgMHgzLCAweGQ0LCAweGY3LCAweDZjLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmEsIDB4ZmIsIDB4NDIsIDB4OWMsIDB4YzksIDB4ZmIsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhmOCwgMHgzLCAweGY3LCAweDI3LCAweDk4LCAweGNmLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZmIsIDB4NDIsIDB4NSwgMHhlLCAweGY3LCAweDFlLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHhjOSwgMHgxLCAweGUwLCAweGY3LCAweGNlLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NTYsIDB4NiwgMHg5NSwgMHhjOSwgMHg1LCAweGZjLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2MSwgMHhmYiwgMHg4MiwgMHgxNSwgMHhmOCwgMHg1NCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4YzgsIDB4NSwgMHhmYywgMHg1NSwgMHg2LCAweGUsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhmNywgMHhjMCwgMHhjOSwgMHgxLCAweGY4LCAweDU5LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhkNCwgMHhiNSwgMHgxNSwgMHhmOCwgMHg0OCwgMHhmNywgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGRkLCAweGZiLCAweGZhLCAweGY3LCAweDQyLCAweDdhLCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzEsIDB4ZmIsIDB4MmQsIDB4ZmMsIDB4MywgMHhmYiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHg3YywgMHhmNywgMHhhLCAweGY3LCAweDQ0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4ZWIsIDB4YzEsIDB4MTIsIDB4ZjcsIDB4YiwgMHhjMSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGY3LCAweDQ4LCAweGMxLCAweDE3LCAweGY3LCAweDUyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4MTUsIDB4YzMsIDB4NiwgMHg5NiwgMHhjNSwgMHg1LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4ZjcsIDB4MjQsIDB4YzYsIDB4ZjcsIDB4MTcsIDB4MWEsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHhiYSwgMHgyYywgMHg1MCwgMHg0YiwgMHg3MywgMHg3YSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGY0LCAweDc2LCAweGZiLCAweDEsIDB4NSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OTcsIDB4YzksIDB4NSwgMHg5YSwgMHhiMSwgMHhiNSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDFiLCAweGU3LCAweGE4LCAweDVlLCAweDY1LCAweDJkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4NWEsIDB4MzYsIDB4N2UsIDB4MWYsIDB4MzYsIDB4ZmIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3MCwgMHg4YywgMHg5ZiwgMHg3YiwgMHhhZCwgMHgxYiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweGE5LCAweGIzLCAweGEzLCAweDc1LCAweGEzLCAweDY5LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NjcsIDB4NjQsIDB4OGMsIDB4MWYsIDB4ZSwgMHg3ZCwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGFmLCAweGY3LCAweDZlLCAweGIwLCAweGY3LCAweDAsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGIxLCAweGIwLCAweGViLCAweGIwLCAweGY3LCAweGU2LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHhlNCwgMHhmNywgMHgzZSwgMHgxNSwgMHg2ZSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDY5LCAweGJhLCAweDFiLCAweGYwLCAweGQ4LCAweGY3LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YiwgMHhmNywgMHhiLCAweDJjLCAweGNkLCAweGZiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1OCwgMHhmYiwgMHgyMSwgMHhmYiwgMHgzNCwgMHhmYiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGJkLCAweDIxLCAweGY3LCAweDMyLCAweGRmLCAweGU3LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4ZDQsIDB4MWYsIDB4ODMsIDB4YWYsIDB4NSwgMHg1OCwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDdhLCAweDQ5LCAweDFiLCAweDIwLCAweDQ3LCAweGQxLCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4ZTQsIDB4ZjcsIDB4M2YsIDB4ZjcsIDB4NWEsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHg1YSwgMHgyMCwgMHgyZCwgMHg0YiwgMHhmYiwgMHg1LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NzQsIDB4OWYsIDB4YWUsIDB4OTEsIDB4MWYsIDB4OTAsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhhMywgMHg5NSwgMHhhMCwgMHhjNiwgMHhmNywgMHgxMiwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDYsIDB4NzMsIDB4NTksIDB4NSwgMHhjMiwgMHg4NSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDdlLCAweDFiLCAweDJkLCAweDM3LCAweDIzLCAweGZiLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4OWUsIDB4NmUsIDB4YjEsIDB4YjQsIDB4YjUsIDB4YTksIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHgxZiwgMHhhZCwgMHhmNywgMHgxOSwgMHgxNSwgMHg0YSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDJjLCAweDUxLCAweDFiLCAweDcxLCAweDg1LCAweGExLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4Y2QsIDB4ZWUsIDB4Y2EsIDB4YjAsIDB4OGEsIDB4NjIsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxZiwgMHhlLCAweDhiLCAweGMxLCAweGY2LCAweGMxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4YzEsIDB4MSwgMHg4OSwgMHhmNywgMHg2NSwgMHhmNywgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYwLCAweDMsIDB4ODksIDB4MTYsIDB4ZjcsIDB4NjUsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDMyLCAweDYsIDB4Y2EsIDB4ZjcsIDB4NCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4NiwgMHhhMiwgMHhmYiwgMHg0LCAweDJjLCAweGEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgzMiwgMHhhLCAweDU4LCAweGEsIDB4NGYsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGY3LCAweDNhLCAweDE1LCAweGY3LCAweDNmLCAweGY3LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4ZmIsIDB4YmEsIDB4NSwgMHhlLCAweDhiLCAweGMxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4YzIsIDB4ZjcsIDB4NjcsIDB4YzEsIDB4MTIsIDB4ZjUsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlYywgMHhjOCwgMHg2MiwgMHhjNywgMHgxMywgMHhlOCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweDk4LCAweDE2LCAweGY3LCAweGM4LCAweDYsIDB4ZjcsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1LCAweGJkLCAweGY3LCAweDE4LCAweDhhLCAweDFmLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4YWUsIDB4NTgsIDB4OTUsIDB4MWUsIDB4MTMsIDB4ZTgsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhiZCwgMHhiYiwgMHhlOSwgMHgxYSwgMHhlOCwgMHgyYywgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDFlLCAweGZiLCAweDllLCAweDQ1LCAweGEsIDB4ZGQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGZjLCAweDVhLCAweDZiLCAweGEsIDB4ZjcsIDB4NTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHgxNSwgMHhiNSwgMHhmNywgMHg2NywgMHg1LCAweGY3LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWEsIDB4ODksIDB4NDAsIDB4MmUsIDB4MjQsIDB4NjIsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHg0NSwgMHhmYiwgMHg4NywgMHgxNSwgMHhiMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDUsIDB4ZjcsIDB4MWUsIDB4NiwgMHgxMywgMHhmOCwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweDgzLCAweDRjLCAweDMwLCAweGZiLCAweDMsIDB4NzEsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDc5LCAweGMyLCAweGY4LCAweDdkLCAweGMxLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4YmMsIDB4YzUsIDB4MTMsIDB4ZDAsIDB4ZjgsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgxNSwgMHg2NCwgMHg0ZCwgMHg0MiwgMHg3MCwgMHg0NiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDUxLCAweGM5LCAweGY3LCAweDIsIDB4ZjcsIDB4NWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHhiLCAweGY3LCAweGUsIDB4Y2MsIDB4YzEsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhhZiwgMHgxZiwgMHg3OCwgMHgzMCwgMHg2YSwgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4YjgsIDB4ZjcsIDB4NzMsIDB4NTIsIDB4YSwgMHg3ZiwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MTMsIDB4ZDAsIDB4YjksIDB4NGEsIDB4NWQsIDB4OWIsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHg1NCwgMHhmYiwgMHhhLCAweGZiLCAweDM4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4ZmIsIDB4MTUsIDB4YmQsIDB4MjcsIDB4ZjcsIDB4MmYsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhhOCwgMHhiOCwgMHhkMiwgMHgxZiwgMHhlLCAweDNlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhhYiwgMHhjMywgMHgzLCAweDgwLCAweDE2LCAweGY3LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg0OCwgMHhmNywgMHg0NywgMHhkNywgMHhmNywgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM3LCAweGZiLCAweDAsIDB4YWMsIDB4ZmIsIDB4MTgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4YiwgMHg0NSwgMHhhLCAweGRiLCAweDVlLCAweGEsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDFjLCAweDE2LCAweGU2LCAweDg3LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg4NSwgMHhmNywgMHgyLCAweDlmLCAweGZiLCAweDNlLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDIsIDB4MjMsIDB4ZmIsIDB4MTAsIDB4ZmIsIDB4NGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDhiLCAweGMxLCAweGY3LCAweDViLCAweDYxLCAweGEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDE2LCAweGY4LCAweDg3LCAweDYsIDB4YjEsIDB4ZjcsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhhLCAweDcwLCAweGZiLCAweDE5LCAweDUsIDB4ZmIsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIzLCAweGY3LCAweDViLCAweDUsIDB4ZjcsIDB4MzksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDNhLCAweDUxLCAweGEsIDB4YmEsIDB4ZjcsIDB4NmQsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDc5LCAweDM5LCAweDUsIDB4ZmIsIDB4MzksIDB4NiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVkLCAweDgxLCAweGEsIDB4NzAsIDB4ZmIsIDB4MWEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDYsIDB4YjEsIDB4ZjcsIDB4NTAsIDB4NSwgMHhmYywgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGEsIDB4ZGYsIDB4NiwgMHgyZiwgMHhmYywgMHg1YSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHg4YiwgMHhjMSwgMHhmNywgMHg1YiwgMHg2MSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhlMywgMHhjNCwgMHhmNywgMHg1NCwgMHhjMywgMHhmNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4MywgMHg4OCwgMHgxNiwgMHhmNywgMHhhMywgMHg2LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4NTUsIDB4YSwgMHhiMywgMHhmNywgMHg1YiwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4NiwgMHg3ZCwgMHg0MywgMHg1MSwgMHhhLCAweGI0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4NjIsIDB4YSwgMHg3YywgMHg0MiwgMHg1LCAweGZiLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiMywgMHhmNywgMHg1ZCwgMHg1LCAweGY3LCAweGMwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhmYiwgMHgyMywgMHg1LCAweGM0LCAweDYsIDB4YjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg1LCAweGZjLCAweDgwLCAweDQ1LCAweGEsIDB4ZGIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGZjLCAweDVhLCAweDg5LCAweGEsIDB4ZSwgMHg3OSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM5LCAweGMyLCAweGY3LCAweGEwLCAweGMyLCAweDEsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhmOCwgMHgyYiwgMHhjMywgMHgzLCAweDM0LCAweGEsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4OGIsIDB4YzEsIDB4ZjcsIDB4NjAsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhjMSwgMHgxLCAweGNiLCAweGMxLCAweGY3LCAweGE4LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg3MCwgMHgxNiwgMHhmNywgMHg2YSwgMHgyYSwgMHhhLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiNCwgMHhmNywgMHg2MCwgMHg1LCAweGY3LCAweGE3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhmYiwgMHg2MCwgMHg1LCAweDNjLCAweDJkLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHgyYSwgMHhhLCAweDNjLCAweDYsIDB4ZTUsIDB4ODcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDJhLCAweGEsIDB4ZmIsIDB4NjgsIDB4MmQsIDB4YSwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NjQsIDB4ZmIsIDB4NTgsIDB4NSwgMHhmYiwgMHhhNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4ZjcsIDB4NTgsIDB4NSwgMHhkYiwgMHgyYSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MmQsIDB4YSwgMHhkYiwgMHg2LCAweDMxLCAweGZjLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4YSwgMHhlLCAweDNlLCAweGEsIDB4YWYsIDB4MTYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg0NywgMHhhLCAweGZiLCAweDQ0LCAweDYsIDB4ZWMsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDQwLCAweDQ3LCAweGEsIDB4ZmMsIDB4MmEsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDQzLCAweDYsIDB4MmEsIDB4NTgsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDYsIDB4ZSwgMHg3OSwgMHhjMSwgMHhmOCwgMHg2YiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YTIsIDB4YzMsIDB4ZjcsIDB4ZWMsIDB4YzEsIDB4MywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDE1LCAweDY1LCAweGUyLCAweGNhLCAweDc2LCAweGNlLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjIsIDB4YmIsIDB4N2MsIDB4YSwgMHhmNywgMHgxNSwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmMsIDB4MTIsIDB4MzgsIDB4YSwgMHhmNywgMHg1YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4ZmIsIDB4ZGMsIDB4NSwgMHgzYSwgMHg3YiwgMHg1ZiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDFiLCAweDcxLCAweGZiLCAweDFmLCAweDkxLCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHgxZiwgMHg5YSwgMHhlNiwgMHg3MSwgMHhhLCAweGUsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGQ3LCAweGMxLCAweGY3LCAweGVjLCAweGNmLCAweDMsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHg2ZCwgMHgyYSwgMHhhLCAweDM5LCAweDYsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZCwgMHhlZiwgMHhkZCwgMHhhNSwgMHg1ZiwgMHhiNiwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDM4LCAweGE0LCAweDMzLCAweDE5LCAweGY3LCAweDJhLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg5LCAweDYsIDB4NzYsIDB4ZDIsIDB4NjUsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhjYywgMHg4LCAweDhiLCAweDc2LCAweGFkLCAweDgyLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4ODEsIDB4ZjcsIDB4NGYsIDB4NSwgMHhjYiwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZDIsIDB4NiwgMHhmYiwgMHhiZiwgMHhmYiwgMHg3ZiwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdmLCAweDUsIDB4ZDAsIDB4MmEsIDB4YSwgMHhmYiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGEsIDB4ZTcsIDB4NiwgMHgyNiwgMHg1OCwgMHhhLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweDNlLCAweGEsIDB4ZjcsIDB4YiwgMHhjMywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4NCwgMHhmOCwgMHg5NiwgMHg2LCAweGI5LCAweGY3LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4YSwgMHg2OCwgMHhmYiwgMHg1MSwgMHg1LCAweGZiLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlNywgMHg4NywgMHhhLCAweGY3LCAweDE0LCAweDJhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiOSwgMHgyZCwgMHhhLCAweGY3LCAweDAsIDB4NWUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDAsIDB4NiwgMHhlLCAweDNlLCAweGEsIDB4OWYsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmYywgMHhjMywgMHgzLCAweDYzLCAweDE2LCAweGY3LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4YSwgMHg0YiwgMHg2LCAweGU2LCAweDg3LCAweGEsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGQ0LCAweGZjLCAweGYsIDB4NSwgMHhiNywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4ZjgsIDB4ZiwgMHg1LCAweDk2LCAweDVlLCAweGEsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHhhLCAweGY3LCAweDM2LCAweDJhLCAweGEsIDB4NWMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweDg3LCAweGEsIDB4YjksIDB4NDcsIDB4YSwgMHhmYiwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4NWUsIDB4ZmIsIDB4ZWMsIDB4NDgsIDB4ZjcsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDJiLCAweDVmLCAweGEsIDB4YmIsIDB4NWUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDYsIDB4ZSwgMHg4YSwgMHhjMiwgMHhmOCwgMHg1OSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4NWUsIDB4OGEsIDB4MTUsIDB4ZjcsIDB4ODAsIDB4MzYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDYsIDB4ZTEsIDB4ZjgsIDB4NDEsIDB4ZjcsIDB4NTQsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg1LCAweGQ2LCAweDYsIDB4ZjAsIDB4ZjgsIDB4OTAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDM2LCAweGEsIDB4ZmIsIDB4N2IsIDB4MzgsIDB4YSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MzUsIDB4ZmMsIDB4NDQsIDB4ZmIsIDB4NTMsIDB4ZjgsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDMxLCAweDU2LCAweGEsIDB4ZGQsIDB4NiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDU5LCAweDUsIDB4M2EsIDB4NiwgMHhlLCAweDc5LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4N2MsIDB4YzIsIDB4MSwgMHhhZCwgMHhjMiwgMHhmOCwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDMsIDB4YWQsIDB4ZjcsIDB4NmMsIDB4MTUsIDB4ZmIsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHgyNiwgMHhmNywgMHgxYywgMHhmNywgMHg0YiwgMHhmNywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRmLCAweGY3LCAweDUwLCAweGVlLCAweDVjLCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzMsIDB4ZmIsIDB4NWEsIDB4ZmIsIDB4MTMsIDB4ZmIsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzOCwgMHgxZSwgMHhjMiwgMHg4OSwgMHgxNSwgMHhmNywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4ZjcsIDB4NWMsIDB4ZjcsIDB4NDMsIDB4ZjcsIDB4MTAsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHgzYywgMHhmYiwgMHgyNCwgMHhmYiwgMHhiLCAweGZiLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWIsIDB4MjAsIDB4NTAsIDB4ZDksIDB4ZWUsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGMxLCAweGY3LCAweDMxLCAweGMxLCAweGY3LCAweDg3LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNiwgMHhjNSwgMHhmNywgMHhmYSwgMHhjNiwgMHgzLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4YmEsIDB4MmEsIDB4YSwgMHhmYiwgMHgzMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4ZjcsIDB4MzEsIDB4NSwgMHhmNywgMHgxYSwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZTksIDB4Y2YsIDB4ZjcsIDB4MjcsIDB4ZDIsIDB4NWMsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNSwgMHgxZiwgMHhmYiwgMHhhNywgMHgyZCwgMHhhLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgyZSwgMHg1OCwgMHhhLCAweDNjLCAweDYsIDB4ZjcsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NywgMHgxNSwgMHhiYywgMHhmNywgMHg4NywgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NiwgMHhkMCwgMHhjYSwgMHg2YiwgMHg1MiwgMHhmYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDZlLCAweDRhLCAweDFmLCAweGUsIDB4ZmIsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhmYiwgMHgxNSwgMHhmNywgMHgxNSwgMHg1NCwgMHhjMiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGMyLCAweDEyLCAweGFlLCAweGM3LCAweGY4LCAweDJmLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NWMsIDB4ZDksIDB4M2YsIDB4MTUsIDB4OTEsIDB4NTQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGI0LCAweGIyLCAweDkxLCAweGIyLCAweDFiLCAweGFhLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ODAsIDB4YWIsIDB4MWYsIDB4MTMsIDB4OWMsIDB4ODIsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg4MiwgMHhhNiwgMHgxYiwgMHhhZSwgMHhhZiwgMHg5YiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDFmLCAweDdiLCAweGJhLCAweDUsIDB4N2YsIDB4NzMsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg3MCwgMHgxYiwgMHg3NSwgMHg3NSwgMHg5NCwgMHg5NCwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk0LCAweDc0LCAweDc0LCAweDk4LCAweDcwLCAweDFiLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4OGMsIDB4ODYsIDB4N2EsIDB4MWYsIDB4MTMsIDB4M2MsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg4ZCwgMHg4YiwgMHg5NSwgMHg5NSwgMHg4LCAweGY3LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ZjcsIDB4MTIsIDB4ZjcsIDB4NGEsIDB4ZjcsIDB4NjQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweDVlLCAweGYxLCAweGZiLCAweDMzLCAweGZiLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWYsIDB4ZmIsIDB4NWQsIDB4ZmIsIDB4NGMsIDB4MjMsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHhlYiwgMHg2ZSwgMHgxZSwgMHg2YSwgMHg3MCwgMHg2YSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDdhLCAweDgsIDB4OWMsIDB4ZjcsIDB4YTMsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmNywgMHgxLCAweGY3LCAweDQ3LCAweGY3LCAweDI1LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4NGMsIDB4MzYsIDB4ZmIsIDB4NjAsIDB4ZmIsIDB4MjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHgwLCAweDQwLCAweDM5LCAweGIwLCAweGY3LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDhiLCAweGMxLCAweGY3LCAweDQ1LCAweGJmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4YzEsIDB4MSwgMHhmNywgMHg0LCAweGMyLCAweGY3LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4MywgMHg5ZiwgMHgxNiwgMHhmNywgMHg2YywgMHgyYSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4NiwgMHhhZSwgMHhmNywgMHg0MywgMHg1LCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGE4LCAweDVjLCAweGNjLCAweGZiLCAweDYsIDB4YTQsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGY3LCAweDE4LCAweDJhLCAweGEsIDB4MjQsIDB4NiwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDYwLCAweGQ2LCAweDZkLCAweGJiLCAweDgsIDB4ZTUsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzLCAweGI2LCAweGY3LCAweDMzLCAweDFhLCAweGNiLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4MjksIDB4MWUsIDB4ZmIsIDB4YmYsIDB4MmQsIDB4YSwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGEsIDB4M2EsIDB4NiwgMHhmNywgMHg0YSwgMHhmNywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGI4LCAweGY3LCAweDc1LCAweDUsIDB4ZjcsIDB4MjQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweGJhLCAweDZjLCAweDYwLCAweGZiLCAweDI2LCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4NDIsIDB4MWYsIDB4ZSwgMHg3NywgMHhjNSwgMHhmOCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDEsIDB4ZjcsIDB4YywgMHhjNywgMHhmNywgMHhiYywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OTgsIDB4N2YsIDB4MTUsIDB4YzUsIDB4NiwgMHg5NSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NjUsIDB4YzEsIDB4ZDYsIDB4NzUsIDB4ZDUsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGY3LCAweDFjLCAweGJlLCAweGY3LCAweDUsIDB4ZjcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDlmLCAweDMxLCAweDk1LCAweDFmLCAweDNkLCAweDkzLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4Y2YsIDB4MWEsIDB4ZGYsIDB4ZTMsIDB4YmEsIDB4ZjIsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHg2ZiwgMHg2OCwgMHhhYiwgMHgxZSwgMHg3YSwgMHgzYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4NiwgMHhiMSwgMHhmNywgMHg0ZiwgMHg2MiwgMHhhLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NSwgMHhhNiwgMHg2OCwgMHg1OCwgMHhhMywgMHg1NCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNhLCAweDJkLCAweDNhLCAweDIwLCAweGZiLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDZkLCAweGU1LCAweDdkLCAweDFmLCAweGM4LCAweDgwLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NDMsIDB4MWEsIDB4NDcsIDB4MjQsIDB4NjcsIDB4MmYsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhhMSwgMHhiNSwgMHg2MywgMHgxZSwgMHg5YSwgMHhkMCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4NiwgMHhlLCAweDNlLCAweGEsIDB4ZjcsIDB4NTQsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGM1LCAweDE2LCAweGY3LCAweGMyLCAweDJhLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg2LCAweGU1LCAweDg3LCAweGEsIDB4ZjcsIDB4NDMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGZiLCAweDJkLCAweDZhLCAweGEsIDB4YjQsIDB4ZjcsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZjLCAweDk4LCAweDYsIDB4NjIsIDB4ZmIsIDB4NjMsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGE5LCAweGY3LCAweDJkLCAweDUsIDB4ZjcsIDB4NDMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweDU4LCAweGEsIDB4ZmIsIDB4ZiwgMHg2LCAweGUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhmOCwgMHg2ZCwgMHhjMiwgMHgxLCAweGQyLCAweGMwLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhmOCwgMHg4ZiwgMHg4NSwgMHhhLCAweDU2LCAweGZiLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NDYsIDB4NjgsIDB4MWEsIDB4MjIsIDB4YjMsIDB4NDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHgxMSwgMHhlMiwgMHhjNCwgMHhmNywgMHgyZCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDlmLCAweGY0LCAweDllLCAweGY0LCAweDlmLCAweGY0LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHgzNiwgMHhhLCAweGZiLCAweDdjLCAweDY3LCAweGEsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg4YiwgMHhhZCwgMHgxYiwgMHg3NywgMHgyMiwgMHg3OCwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDIyLCAweDgsIDB4ZmIsIDB4ZSwgMHg3MywgMHgzYywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDFiLCAweDMyLCAweDY2LCAweGI3LCAweGRiLCAweGJmLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDksIDB4OWYsIDB4ZjcsIDB4OCwgMHgxZiwgMHhmNSwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4ODMsIDB4NiwgMHhlLCAweDkzLCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YzIsIDB4MSwgMHhmNywgMHgzMSwgMHg3ZSwgMHg4NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmIsIDB4ZjgsIDB4OWMsIDB4NSwgMHhjYiwgMHgzNiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NzAsIDB4MzgsIDB4YSwgMHhlNSwgMHg2LCAweGZiLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NjQsIDB4M2EsIDB4ZjgsIDB4NjQsIDB4NSwgMHhlNiwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NzcsIDB4MzgsIDB4YSwgMHhkMywgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg3NiwgMHhmOCwgMHg5YywgMHhjMiwgMHgxLCAweGIxLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg5YywgMHg3ZSwgMHgxNSwgMHhjYiwgMHg2LCAweGY3LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MCwgMHhiZSwgMHhmYywgMHgwLCAweDUsIDB4YzYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMyLCAweGY4LCAweDljLCAweDUsIDB4YjcsIDB4NDYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVkLCAweDU2LCAweGEsIDB4ZjIsIDB4NiwgMHhmYiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MzYsIDB4NTgsIDB4ZjgsIDB4MCwgMHg1LCAweDYzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0ZiwgMHhmYywgMHgyLCAweGFmLCAweGY4LCAweDM4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHgzNiwgMHhhLCAweGZiLCAweDVkLCAweDU2LCAweGEsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4M2UsIDB4YSwgMHg3MSwgMHhmNywgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4ZjcsIDB4NmEsIDB4MywgMHg3MSwgMHgxNiwgMHhmNywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGEsIDB4MmIsIDB4NiwgMHhmNywgMHg1MywgMHhmNywgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDAsIDB4ZmIsIDB4NTAsIDB4NSwgMHgzNSwgMHgyZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmEsIDB4MmEsIDB4YSwgMHg0YSwgMHg2LCAweGZiLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2IsIDB4ZjcsIDB4NWYsIDB4ZjcsIDB4NzMsIDB4NSwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGEsIDB4ZmIsIDB4NTUsIDB4MmQsIDB4YSwgMHhjYSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzcsIDB4ZmIsIDB4NDksIDB4MmMsIDB4ZjcsIDB4NDksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDJhLCAweGEsIDB4ZmIsIDB4NjQsIDB4NDUsIDB4YSwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4OSwgMHhmYiwgMHg3MywgMHhmYiwgMHg3OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDUsIDB4NDksIDB4NiwgMHhlLCAweDNlLCAweGEsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHhjOCwgMHgyYSwgMHhhLCAweGZiLCAweDExLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhmNywgMHg0MiwgMHhmNywgMHg3ZiwgMHhmNywgMHhhYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4MmEsIDB4YSwgMHhmYiwgMHg1YiwgMHgyZCwgMHhhLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg1NCwgMHhmYiwgMHg3NywgMHgyNywgMHhmNywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZDMsIDB4NDMsIDB4YSwgMHhkMSwgMHg2LCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhYywgMHg2YiwgMHhmYiwgMHg0MiwgMHg1LCAweGZiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweDNlLCAweGEsIDB4YmEsIDB4ZDMsIDB4ZjcsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHgzLCAweGIxLCAweDE2LCAweGY4LCAweDM4LCAweDYsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1ZiwgMHg1LCAweDU2LCAweDYsIDB4NmUsIDB4ZmIsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweGJkLCAweDYsIDB4ZjgsIDB4NDYsIDB4ZjgsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhiZSwgMHg1LCAweGZjLCAweDE5LCAweDYsIDB4NjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg1LCAweGJlLCAweDYsIDB4YTUsIDB4ZjcsIDB4MWEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEwLCAweDYsIDB4ZmMsIDB4NDYsIDB4ZmMsIDB4NWIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4MCwgMHhjMSwgMHhmOSwgMHgyLCAweGMxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYywgMHhmYiwgMHgwLCAweDE1LCAweGY3LCAweDRlLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgxOSwgMHg2LCAweGY3LCAweGMsIDB4ZjksIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MTksIDB4MmEsIDB4YSwgMHhmYiwgMHg0ZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgyMywgMHhmOSwgMHg2MCwgMHhmZCwgMHgzMywgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDc3LCAweDEyLCAweDEzLCAweDYwLCAweGY4LCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDE1LCAweDEzLCAweDgwLCAweGJhLCAweDljLCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHhmYiwgMHg1YSwgMHhmOSwgMHg3MSwgMHg1LCAweDEzLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4N2EsIDB4NSwgMHhlLCAweGZiLCAweDAsIDB4YzEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGMxLCAweDEsIDB4ZjcsIDB4MjcsIDB4NTUsIDB4MTUsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg1LCAweGY3LCAweDRlLCAweDYsIDB4ZjcsIDB4MjIsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg1LCAweGZiLCAweDRlLCAweDJkLCAweGEsIDB4ZjcsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweGMsIDB4ZmQsIDB4MiwgMHg1LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmNywgMHg5ZiwgMHgxMiwgMHhmMiwgMHhmOCwgMHgyNywgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweGY2LCAweDE1LCAweGRjLCAweGE2LCAweGUxLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4YzQsIDB4YjksIDB4NGYsIDB4YzEsIDB4NTMsIDB4ZDAsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhiYSwgMHgxOCwgMHgzYiwgMHhkNywgMHg3YywgMHhiOCwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweDgsIDB4NTgsIDB4NiwgMHgxMywgMHg0MCwgMHg1OCwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDU0LCAweGZiLCAweDAsIDB4NDMsIDB4OCwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4YmQsIDB4MSwgMHg5MCwgMHg0MCwgMHgxNSwgMHg4MSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjgsIDB4ZWQsIDB4NiwgMHg5NSwgMHhiZCwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhhLCAweGY3LCAweDYxLCAweGY4LCAweGViLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4MjUsIDB4OTcsIDB4YWEsIDB4ZmIsIDB4MzEsIDB4NzksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDIwLCAweDg3LCAweDE1LCAweGY3LCAweDFmLCAweDM2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHg2LCAweGJmLCAweGY3LCAweDk3LCAweDhiLCAweDllLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YzcsIDB4NWEsIDB4YWYsIDB4MjUsIDB4NDYsIDB4MzYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg0YiwgMHgxZSwgMHgzOSwgMHhhLCAweGM4LCAweGMxLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NzcsIDB4ODcsIDB4NWMsIDB4ODUsIDB4NzMsIDB4MWYsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg1YSwgMHg5MiwgMHg1YSwgMHgxYiwgMHhmYiwgMHg0NSwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDNmLCAweDUyLCAweGI5LCAweDU2LCAweGU2LCAweGQ4LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4YzAsIDB4Y2QsIDB4MWYsIDB4OTgsIDB4ZDIsIDB4MTUsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHgzZSwgMHg1ZCwgMHgzOCwgMHgxYiwgMHg1NiwgMHg2NiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGRiLCAweGY3LCAweDcsIDB4OWMsIDB4ZGIsIDB4NDAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGMyLCAweDVmLCAweGMzLCAweGY3LCAweGU4LCAweGMzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YzIsIDB4MTIsIDB4ZjgsIDB4YjAsIDB4YzUsIDB4MTMsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg4NywgMHgxNSwgMHhmNywgMHgyMSwgMHg2LCAweDlhLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgxMywgMHhiOCwgMHg3YiwgMHg5NiwgMHhhOCwgMHg0MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDFiLCAweGY3LCAweDMzLCAweGY3LCAweDUsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZiwgMHhmNywgMHg3LCAweDMyLCAweGM4LCAweDMwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg0NiwgMHg1NiwgMHg3MiwgMHg3NSwgMHgxZiwgMHhiZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDY2LCAweGEsIDB4ZTAsIDB4NiwgMHgxMywgMHg3OCwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDllLCAweDUsIDB4MzUsIDB4NiwgMHhmNywgMHg0OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDE1LCAweGY1LCAweGEwLCAweGVkLCAweGM0LCAweGU0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4YjcsIDB4NGMsIDB4NDgsIDB4MWYsIDB4MTMsIDB4YjgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweDEsIDB4MjcsIDB4MjYsIDB4M2EsIDB4M2EsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMSwgMHhhNCwgMHgxZSwgMHhlLCAweDdjLCAweGMwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4YzIsIDB4MTIsIDB4YmMsIDB4YzUsIDB4ZjcsIDB4ZjUsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmOCwgMHg3MSwgMHhmNywgMHg5LCAweDE1LCAweDc2LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4NTEsIDB4M2EsIDB4MWIsIDB4ZmIsIDB4ZSwgMHg1YywgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDFmLCAweDEzLCAweDUwLCAweGY3LCAweDUsIDB4ZTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGY3LCAweDE3LCAweGM0LCAweGJlLCAweDdjLCAweDY3LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4N2MsIDB4M2MsIDB4NmEsIDB4YSwgMHgxMywgMHhlMCwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRkLCAweDUyLCAweGEsIDB4ODIsIDB4NWMsIDB4NSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDVkLCAweDljLCAweDUxLCAweDFiLCAweGZiLCAweDViLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjksIDB4ZmIsIDB4MTUsIDB4ZmIsIDB4NSwgMHhlNSwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIsIDB4ZTgsIDB4ZDgsIDB4YWIsIDB4YjksIDB4ZDAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdjLCAweGMyLCAweDYxLCAweGMyLCAweGY3LCAweGU3LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTMsIDB4YzIsIDB4MTIsIDB4YTEsIDB4YzUsIDB4MTMsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxZiwgMHg4OSwgMHgxNSwgMHhmNywgMHgxZiwgMHgzNiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4NiwgMHhmNywgMHg2LCAweGY4LCAweGQ0LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHgzOCwgMHhhLCAweGY3LCAweDIwLCAweDYsIDB4NjUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg1LCAweGM5LCAweDY0LCAweDQ2LCAweDkxLCAweDU0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzMsIDB4ZmIsIDB4MTQsIDB4ZmIsIDB4MTYsIDB4ZmIsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhiOCwgMHgyYSwgMHhjYSwgMHgzOCwgMHhmNywgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGQ4LCAweGFjLCAweGM5LCAweGJiLCAweDFlLCAweDEzLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZGYsIDB4ZjcsIDB4MCwgMHgxNSwgMHhmNCwgMHhmMywgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMsIDB4ZjcsIDB4MCwgMHhiMiwgMHg1MywgMHg1MiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGI4LCAweGZiLCAweGQsIDB4ZmIsIDB4MSwgMHhmYiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MCwgMHgyNiwgMHg1ZiwgMHhkMSwgMHhkOSwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YzAsIDB4ZjcsIDB4MzEsIDB4YzIsIDB4ZjcsIDB4MjEsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGU0LCAweGY3LCAweDU3LCAweDE1LCAweGY4LCAweDNiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhhNCwgMHg4ZCwgMHhhNCwgMHg4YSwgMHhhMywgMHg4LCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4NTEsIDB4ZDgsIDB4ZmIsIDB4MTcsIDB4MWIsIDB4ZmIsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZSwgMHhmYiwgMHgxOSwgMHhmYiwgMHgzZCwgMHgzNSwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGY3LCAweDIxLCAweGRlLCAweGU1LCAweGE1LCAweGFmLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODQsIDB4YmYsIDB4NSwgMHg2MCwgMHgzMiwgMHgzOCwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDFiLCAweGZiLCAweDcsIDB4MzAsIDB4YzAsIDB4ZjMsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg5YywgMHhjMywgMHgxNSwgMHhjNiwgMHg5ZiwgMHhkYSwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcsIDB4MWIsIDB4ZjcsIDB4MjEsIDB4OTIsIDB4ZmIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDg2LCAweDFmLCAweGUsIDB4OGIsIDB4YzIsIDB4ZjcsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhmNywgMHgxZSwgMHhjMiwgMHgxLCAweGY3LCAweDI2LCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhhNSwgMHgxNiwgMHhmOCwgMHgxOCwgMHgzNiwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NiwgMHhjYiwgMHhmNywgMHhkOSwgMHg1LCAweGY3LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4YSwgMHhmYiwgMHg3MSwgMHg2LCAweGY3LCAweDExLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4OTgsIDB4ZjcsIDB4OSwgMHgxYiwgMHhiMiwgMHhjMywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGFmLCAweDFmLCAweDllLCAweGMxLCAweDUsIDB4OTAsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHg5MywgMHg2MSwgMHgxYiwgMHgzZCwgMHgzMSwgMHg4MiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDFmLCAweDcxLCAweGZiLCAweDAsIDB4NSwgMHhmYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4MSwgMHg1MywgMHg1LCAweGY3LCAweDEsIDB4NiwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQ5LCAweDU3LCAweGEsIDB4ZSwgMHhmYiwgMHgzMSwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM4LCAweGJlLCAweGY3LCAweGFlLCAweGJlLCAweDEsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhmNywgMHhjYSwgMHhiZiwgMHgzLCAweDNmLCAweGEsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4OGIsIDB4YzIsIDB4ZjcsIDB4Y2EsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhjMiwgMHgxLCAweDlmLCAweDE2LCAweGY3LCAweDcyLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzOCwgMHg2LCAweGJmLCAweGY3LCAweDk5LCAweDUsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhkMiwgMHhiNywgMHhjYywgMHgxYiwgMHhkZiwgMHg5MCwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDgxLCAweDFmLCAweDVhLCAweGZiLCAweDg3LCAweDUsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhhLCAweGY3LCAweDZmLCAweDM2LCAweGEsIDB4M2EsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGY3LCAweDlkLCAweDUsIDB4Y2EsIDB4OTcsIDB4ODUsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhLCAweDFiLCAweDQ1LCAweDQwLCAweDY2LCAweDVlLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YmEsIDB4ZjcsIDB4OTEsIDB4NjYsIDB4YSwgMHhlMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4ZmMsIDB4OWIsIDB4N2IsIDB4YSwgMHhlLCAweDhiLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZGEsIDB4YzIsIDB4ZWQsIDB4ZjcsIDB4ZiwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjgsIDB4YWEsIDB4MTUsIDB4ZDEsIDB4NiwgMHhhNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4NSwgMHg0NCwgMHg2LCAweGZiLCAweGI4LCAweGZkLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjgsIDB4MmQsIDB4MzYsIDB4YSwgMHhmYiwgMHg0MiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4ZjgsIDB4MTEsIDB4NSwgMHhmYiwgMHg1YiwgMHgzOCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjUsIDB4NiwgMHg0YiwgMHhmYiwgMHhkYSwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NiwgMHhlLCAweGZiLCAweDMxLCAweGMxLCAweGY4LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4ZTksIDB4ZjcsIDB4YSwgMHgxLCAweGY4LCAweDUwLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4NTQsIDB4YSwgMHhmYywgMHgyMywgMHhmZCwgMHg4MCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDU5LCAweDUsIDB4ODIsIDB4YmUsIDB4YmUsIDB4ODQsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNiwgMHhlMCwgMHhiNiwgMHhmNywgMHgxMiwgMHhhZiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY4LCAweDQ1LCAweDUsIDB4ZmIsIDB4ZTIsIDB4ODIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE1LCAweDYsIDB4MzksIDB4ZmMsIDB4MywgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHg2MSwgMHg0NiwgMHg3ZiwgMHg1YywgMHgxYiwgMHg1MSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDkxLCAweDY4LCAweDFmLCAweGUsIDB4OGIsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHhjMiwgMHhmNywgMHgxZiwgMHhjMiwgMHgxLCAweDk3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjAsIDB4NiwgMHhiMSwgMHhmNywgMHg1YSwgMHhjZCwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDZhLCAweGNkLCAweDMxLCAweGIwLCAweDRkLCAweDE5LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4YSwgMHhmNywgMHg2YSwgMHg0NiwgMHhhLCAweDJiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhiYSwgMHg2ZCwgMHhjNSwgMHg2NywgMHhiMywgMHg0ZiwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGY3LCAweDQ3LCAweGY3LCAweDQsIDB4NSwgMHhlZCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NzAsIDB4NiwgMHg4MiwgMHg1NCwgMHg1LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg1ZiwgMHhmYiwgMHgxMywgMHhkNSwgMHhmOCwgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4YSwgMHhlMSwgMHg2LCAweDI2LCAweGZjLCAweDliLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHg2LCAweGUsIDB4OGIsIDB4YzIsIDB4ZjgsIDB4OWIsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGU1LCAweDE2LCAweGY4LCAweDJkLCAweDM2LCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg2LCAweGY3LCAweDEsIDB4ZjgsIDB4ZDIsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDM4LCAweGEsIDB4ZjcsIDB4MzQsIDB4NiwgMHgyOSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDUsIDB4ZmIsIDB4NDcsIDB4NiwgMHhlLCAweDhiLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTAsIDB4YzIsIDB4N2UsIDB4NzcsIDB4MTIsIDB4MTMsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHgxNiwgMHhmNywgMHgxMSwgMHg0NywgMHhhLCAweDQ5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhmNywgMHhhMiwgMHg1LCAweGE3LCAweGE2LCAweGFjLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4MWIsIDB4YmMsIDB4OTYsIDB4NmQsIDB4NzIsIDB4N2QsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4YSwgMHg4NywgMHgxZiwgMHg0YywgMHhmYiwgMHhjMSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTIsIDB4MmEsIDB4YSwgMHg0OSwgMHg2LCAweGMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4NSwgMHg5NiwgMHg4ZCwgMHhjYSwgMHhjYiwgMHhjMCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDk3LCAweDc3LCAweDcyLCAweDc4LCAweDg2LCAweDc0LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4MWYsIDB4NTAsIDB4ZmIsIDB4YWUsIDB4NSwgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4YSwgMHg1MywgMHg2LCAweGM1LCAweGY3LCAweGE1LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4OTksIDB4MWEsIDB4YmEsIDB4NmQsIDB4YjAsIDB4NGMsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg2OSwgMHg2NywgMHg2NiwgMHgxZSwgMHhiMCwgMHg4MywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDU1LCAweDFiLCAweDViLCAweDY0LCAweDY5LCAweDc0LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4YTAsIDB4OTMsIDB4YjcsIDB4NSwgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4YSwgMHhjMywgMHg2LCAweGUsIDB4OGIsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhjMiwgMHg2ZCwgMHhjMSwgMHgxMiwgMHhmNywgMHg3LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTUsIDB4YzEsIDB4MTMsIDB4ZDgsIDB4OWYsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHgyYSwgMHhhLCAweDM3LCAweDYsIDB4YmIsIDB4ZjcsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDEzLCAweGI4LCAweGJmLCAweGM5LCAweGUxLCAweGIyLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YjUsIDB4OTcsIDB4NzksIDB4NmEsIDB4ODIsIDB4OGEsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4MCwgMHgxZiwgMHg1YSwgMHhmYiwgMHg5MCwgMHg1LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4YSwgMHhmNywgMHg3MCwgMHgyYSwgMHhhLCAweDM4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHhmNywgMHg5MSwgMHg1LCAweDhmLCAweDllLCAweDhjLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4MWEsIDB4YmYsIDB4NjIsIDB4YTksIDB4NDAsIDB4NDUsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg1ZSwgMHg0ZiwgMHgxZSwgMHg5OSwgMHhkMywgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MzgsIDB4YSwgMHhkZSwgMHg2LCAweDRkLCAweGZiLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzNywgMHg2LCAweGUsIDB4N2MsIDB4YzEsIDB4ZjcsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHgxLCAweGM0LCAweGMyLCAweGY4LCAweGIsIDB4YzMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGY3LCAweDNiLCAweDE1LCAweGZiLCAweDAsIDB4ZDUsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHhmNywgMHgzOSwgMHhmNywgMHg4LCAweGY3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmMsIDB4ZGUsIDB4NWQsIDB4ZTksIDB4ZmIsIDB4MmIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHhmYiwgMHgyMSwgMHhmYiwgMHgyLCAweGZiLCAweDM4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4OTIsIDB4MTUsIDB4ZjcsIDB4MSwgMHhlYSwgMHhmMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweGY3LCAweGQsIDB4YWEsIDB4NDAsIDB4NTEsIDB4ZmIsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDI5LCAweGZiLCAweGMsIDB4ZmIsIDB4MSwgMHg1OSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDFlLCAweGUsIDB4ZmIsIDB4MzEsIDB4YmUsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGY3LCAweGM1LCAweGJmLCAweDZhLCAweGMwLCAweDEyLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4YzQsIDB4MTMsIDB4ZDgsIDB4NmEsIDB4MjEsIDB4MTUsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1LCAweGY3LCAweGJiLCAweDc4LCAweGEsIDB4ZmIsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIyLCAweGY3LCAweDRkLCAweDUsIDB4NjUsIDB4YTMsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhlNywgMHgxYiwgMHhmNywgMHgyMCwgMHhmNywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgyNywgMHhlNywgMHg0ZCwgMHhkMywgMHgyMSwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDYwLCAweDVmLCAweDVkLCAweDFmLCAweDEzLCAweGU4LCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4NSwgMHhmYiwgMHgxZiwgMHg2LCAweDgxLCAweDU3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHg2LCAweDI1LCAweGZjLCAweDZmLCAweDUsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIyLCAweDE1LCAweDEzLCAweGQ4LCAweGVkLCAweGU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhmNywgMHhlLCAweGYzLCAweGEwLCAweDRkLCAweDU1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgyYiwgMHgzNSwgMHgyZCwgMHgzNywgMHg0YywgMHhiMiwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4ZmIsIDB4MzEsIDB4YmYsIDB4ZjcsIDB4YiwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGNkLCAweGJlLCAweDYzLCAweGJmLCAweDEyLCAweGI0LCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZTgsIDB4ZjcsIDB4NmIsIDB4MjIsIDB4MTUsIDB4ODAsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweGJmLCAweDYsIDB4OTYsIDB4YmYsIDB4NSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjQsIDB4ZjgsIDB4NzcsIDB4NSwgMHhlMCwgMHg2LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4NSwgMHhmYiwgMHgyMCwgMHg2LCAweDc4LCAweDQyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkOCwgMHhiMiwgMHg3NSwgMHg1MywgMHhiOSwgMHgzNiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFiLCAweGZiLCAweDE2LCAweGZiLCAweDYsIDB4ZmIsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhjYywgMHg0NiwgMHhmNywgMHgyLCAweGNiLCAweGQyLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4YzcsIDB4MWYsIDB4NjUsIDB4ZmIsIDB4NGUsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGY3LCAweGJmLCAweDE1LCAweGQzLCAweGJjLCAweGY3LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYSwgMHhlZiwgMHhiYSwgMHg0OSwgMHgzZiwgMHhmYiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4NGMsIDB4MzIsIDB4NDAsIDB4NTMsIDB4YmIsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDhiLCAweGMxLCAweGY3LCAweGUyLCAweGMxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMiwgMHhjNCwgMHgzLCAweDlmLCAweDE2LCAweGY3LCAweGZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4YSwgMHhmYiwgMHg0NiwgMHg2LCAweGI0LCAweGY3LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmMiwgMHhmNywgMHgxOCwgMHhiYywgMHhhMiwgMHhjMSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGEwLCAweDg1LCAweDY5LCAweDhjLCAweDFmLCAweGM0LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiZSwgMHg4YywgMHg3OSwgMHhiMCwgMHg1MSwgMHgxYiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDRjLCAweDU0LCAweDNmLCAweDFmLCAweDlmLCAweGY0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0YywgMHg1ZiwgMHhhLCAweGY3LCAweDEzLCAweDYsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkNCwgMHg1LCAweGZiLCAweDEzLCAweDYsIDB4ZSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweGYwLCAweGMxLCAweDEsIDB4ZjcsIDB4YSwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFhLCAweGM1LCAweDMsIDB4YmEsIDB4N2MsIDB4MTUsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhhLCAweDcyLCAweGIyLCAweGJlLCAweDZjLCAweGRkLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4ZjUsIDB4YmEsIDB4ZjMsIDB4Y2MsIDB4NTIsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg5NCwgMHgxZiwgMHg1NCwgMHg5NCwgMHhmYiwgMHgzYywgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDFhLCAweGQ4LCAweGVhLCAweDg3LCAweGJmLCAweGM0LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NzAsIDB4YjEsIDB4MWUsIDB4ODEsIDB4NWEsIDB4NTEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGY3LCAweDMwLCAweDcxLCAweGEsIDB4ODAsIDB4NWIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDYyLCAweDU4LCAweGExLCAweDUxLCAweDFiLCAweGZiLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NjcsIDB4MmEsIDB4NDIsIDB4ZjcsIDB4MjEsIDB4NjAsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxZiwgMHhiOSwgMHg4NywgMHhkYSwgMHg4MywgMHg1YiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGZiLCAweDE5LCAweDhmLCAweDYyLCAweDRhLCAweDUwLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4NmEsIDB4MWUsIDB4OTUsIDB4YmIsIDB4NjIsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YzIsIDB4ZjcsIDB4ZTQsIDB4YzIsIDB4ZjcsIDB4MTYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDE3LCAweGM2LCAweDMsIDB4ZjcsIDB4NSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4MTUsIDB4ZDQsIDB4NiwgMHg1NCwgMHhmYiwgMHhhNywgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDdmLCAweDFhLCAweDNkLCAweDhjLCAweGU5LCAweDdkLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZDgsIDB4ZGQsIDB4YTgsIDB4YTYsIDB4ZDIsIDB4MWYsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg1LCAweDc3LCAweDUxLCAweDM3LCAweDY4LCAweDQ1LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NWQsIDB4OTIsIDB4YzcsIDB4MWYsIDB4YmYsIDB4ZjcsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDkzLCAweDc3LCAweGEsIDB4ZmIsIDB4OTMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGY3LCAweDE2LCAweDcxLCAweGEsIDB4NzEsIDB4ZmIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDQyLCAweDYsIDB4ZSwgMHg3YywgMHhjMCwgMHg2MywgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQ0LCAweGMxLCAweDEyLCAweDEzLCAweGEwLCAweGNiLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg4NSwgMHhhLCAweDU4LCAweGZiLCAweDk2LCAweDhhLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4MWEsIDB4NDUsIDB4YzIsIDB4NjUsIDB4ZDcsIDB4YjIsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhkMiwgMHhlMywgMHgxZSwgMHgxMywgMHg2MCwgMHg3YywgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MWEsIDB4MmEsIDB4YSwgMHgzYSwgMHg2LCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YSwgMHg1NSwgMHhhLCAweDgyLCAweDU1LCAweDUsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDVlLCAweGZiLCAweDdhLCAweDUsIDB4MTMsIDB4YTAsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg0ZCwgMHg1NSwgMHg0ZCwgMHgxYiwgMHg1NiwgMHg2MiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDkwLCAweDhiLCAweDkwLCAweDhjLCAweDkwLCAweDFmLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4OWQsIDB4ZjMsIDB4OWUsIDB4ZjMsIDB4OCwgMHhmYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg5NiwgMHg3NiwgMHhmOCwgMHgxMSwgMHhjMiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTIsIDB4ODEsIDB4MTUsIDB4Y2MsIDB4NiwgMHhmNywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDExLCAweDUsIDB4ZGMsIDB4NzcsIDB4YSwgMHhmYiwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGEsIDB4ZDUsIDB4NiwgMHhmYiwgMHg2OCwgMHhmYiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGY3LCAweGQ3LCAweDUsIDB4ZDcsIDB4NzcsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDY3LCAweGEsIDB4ZTIsIDB4NiwgMHhlLCAweDk2LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MTEsIDB4YzIsIDB4MSwgMHhjYiwgMHhjMCwgMHgzLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4MTUsIDB4Y2IsIDB4NiwgMHhmNywgMHgxMSwgMHhmNywgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGZiLCAweDliLCAweDUsIDB4YzgsIDB4NiwgMHhmNywgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDExLCAweDUsIDB4YjAsIDB4NzcsIDB4YSwgMHhmYiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGEsIDB4ZDMsIDB4NiwgMHhmYiwgMHgyMywgMHhmYiwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGY3LCAweGIyLCAweDUsIDB4NWIsIDB4NiwgMHhmYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIwLCAweDcxLCAweGY3LCAweGMzLCAweDUsIDB4ZDQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGMyLCAweDUsIDB4ZmIsIDB4MzYsIDB4NjcsIDB4YSwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg4YiwgMHhjMSwgMHhmNywgMHhkMywgMHhjMCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4MTYsIDB4ZjcsIDB4NjgsIDB4NDcsIDB4YSwgMHg0OCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2IsIDB4ZjcsIDB4MTYsIDB4ZjcsIDB4MiwgMHhmYiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NGMsIDB4MmQsIDB4YSwgMHhmNywgMHg2OSwgMHg0NywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4NiwgMHhmYiwgMHgyMSwgMHhmNywgMHgzOCwgMHhmNywgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJmLCAweDUsIDB4ZGMsIDB4NiwgMHg5NSwgMHhjMCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTUsIDB4NjgsIDB4YSwgMHhiNiwgMHg2LCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHgzMCwgMHhmNywgMHhjLCAweDUsIDB4YmYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGMwLCAweDUsIDB4ZmIsIDB4NWUsIDB4NjgsIDB4YSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4ZCwgMHhmYiwgMHgyZSwgMHhmYiwgMHg2NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDUsIDB4M2UsIDB4NiwgMHhlLCAweGZiLCAweDMxLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NzUsIDB4YmUsIDB4MSwgMHg2YywgMHgyMSwgMHgxNSwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDUsIDB4ZjcsIDB4YTIsIDB4NzgsIDB4YSwgMHgzMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzUsIDB4ZjgsIDB4NzUsIDB4NSwgMHhjZSwgMHg3OCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTMsIDB4NiwgMHg4MCwgMHg1OCwgMHg1LCAweGM3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3YywgMHhmYiwgMHhhMSwgMHgyMSwgMHhmNywgMHhhMSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4NzgsIDB4YSwgMHhmYiwgMHg1ZiwgMHg2LCAweDgwLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkMywgMHg2LCAweGY3LCAweDEzLCAweGZiLCAweGQyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZmIsIDB4MzcsIDB4NSwgMHhlLCAweDhiLCAweGMxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4YzEsIDB4MSwgMHhjMCwgMHgxNiwgMHhmOCwgMHgyZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4ZjcsIDB4MWEsIDB4NTIsIDB4YSwgMHg3NiwgMHgzYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YTcsIDB4NiwgMHhmOCwgMHgxZiwgMHhmNywgMHhkNiwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDUsIDB4ZmMsIDB4MWYsIDB4NiwgMHg2YiwgMHhmYiwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YzEsIDB4NiwgMHhhMiwgMHhkOSwgMHg1LCAweGY3LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYywgMHgxZSwgMHhmYiwgMHhkNSwgMHg1LCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhjMCwgMHhmOSwgMHhmMSwgMHhjMCwgMHgxLCAweGY3LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4MywgMHhmNywgMHhhLCAweGY3LCAweDgxLCAweDE1LCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4OWUsIDB4NzgsIDB4OGEsIDB4NTMsIDB4OCwgMHg3NCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDgyLCAweDY1LCAweDFlLCAweDdhLCAweDNiLCAweDg0LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MWEsIDB4NGMsIDB4YjEsIDB4N2IsIDB4ZTQsIDB4N2IsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhjMCwgMHg1LCAweDU5LCAweDkzLCAweDY3LCAweDk2LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YTksIDB4OTIsIDB4YmIsIDB4YTAsIDB4ZGUsIDB4MWUsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg4ZiwgMHhiOSwgMHhiNSwgMHgxYSwgMHhiNSwgMHg3ZSwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGExLCAweDFlLCAweGU2LCAweGMyLCAweGExLCAweGY3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhiOSwgMHg4LCAweGY3LCAweDVmLCAweGIwLCAweGFiLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4MWIsIDB4OTcsIDB4YzAsIDB4NSwgMHhmYiwgMHgyMywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGZiLCAweDcxLCAweDU5LCAweDFmLCAweDZmLCAweGZiLCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NmUsIDB4MzgsIDB4NmEsIDB4OCwgMHhlLCAweGZiLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZmEsIDB4N2MsIDB4NzcsIDB4MSwgMHhmNywgMHgzYywgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4M2MsIDB4ZmIsIDB4OGUsIDB4MTUsIDB4YmUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY4LCAweGZhLCAweDdjLCAweDUsIDB4NTgsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NzEsIDB4YzAsIDB4ZjksIDB4ZjEsIDB4YzAsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGJlLCAweDMsIDB4ZjgsIDB4NzUsIDB4ZjcsIDB4YjUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhhMywgMHg3OCwgMHg5ZSwgMHg4YywgMHhjMywgMHg4LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4YTksIDB4OTQsIDB4YjEsIDB4MWUsIDB4OWMsIDB4ZGIsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhiMSwgMHgxYSwgMHhjYSwgMHg2NSwgMHg5YiwgMHgzMiwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDgxLCAweDU2LCAweDUsIDB4YmQsIDB4ODMsIDB4YWYsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgxYSwgMHg2ZCwgMHg4MSwgMHg1OSwgMHg3YywgMHgzYSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDcyLCAweDgzLCAweDVkLCAweDYxLCAweDFhLCAweDYxLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4YTgsIDB4NzUsIDB4MWUsIDB4MzAsIDB4NTQsIDB4NzUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDg0LCAweDVkLCAweDgsIDB4ZmIsIDB4NWYsIDB4NjYsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHgzNywgMHgxYiwgMHg3ZiwgMHg1NiwgMHg1LCAweGY3LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YjksIDB4ZjcsIDB4NzEsIDB4YmQsIDB4MWYsIDB4YTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhhNCwgMHhhOCwgMHhkZSwgMHhhYywgMHg4LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHhjOCwgMHg5MSwgMHhjMywgMHgxMiwgMHhmMCwgMHhmNywgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGFhLCAweGE3LCAweGFmLCAweGFmLCAweGIxLCAweDFiLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NzgsIDB4N2EsIDB4YTcsIDB4MWYsIDB4N2IsIDB4YTQsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhhZSwgMHgxYiwgMHhjZCwgMHhiZiwgMHhhZiwgMHhiNywgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDY0LCAweGI2LCAweDUsIDB4NzcsIDB4NzgsIDB4NGYsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgxYiwgMHg2ZSwgMHg3NywgMHg5NywgMHg5OSwgMHg3NSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDcwLCAweDZlLCAweDllLCAweDUzLCAweDFiLCAweDRiLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4NjcsIDB4NjIsIDB4MWYsIDB4ZSwgMHhmYiwgMHgxYywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDY3LCAweGY3LCAweGMsIDB4MSwgMHhmNywgMHg5ZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDMsIDB4ZjcsIDB4OWYsIDB4ZjcsIDB4ZjgsIDB4MTUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg3NywgMHhhOCwgMHhiYSwgMHhiMiwgMHhhZSwgMHhhZiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGEyLCAweDY2LCAweDViLCAweDY4LCAweDY5LCAweDYzLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4ZmMsIDB4OTUsIDB4ODUsIDB4YSwgMHhjOSwgMHhmOCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NWQsIDB4NiwgMHhlLCAweGU5LCAweGMyLCAweGY3LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MSwgMHhkYywgMHhjNCwgMHhmNywgMHg0ZiwgMHhjMiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTYsIDB4NWEsIDB4MTUsIDB4YzIsIDB4NiwgMHhhNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGQzLCAweDhmLCAweGM3LCAweGE3LCAweGM3LCAweGFkLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4YjksIDB4NSwgMHg2YiwgMHg1MCwgMHg0YiwgMHg3MiwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDI5LCAweDY2LCAweGMyLCAweGJiLCAweGUxLCAweGRkLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4YjgsIDB4YzEsIDB4N2IsIDB4NmMsIDB4OWQsIDB4MWYsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg2YSwgMHhhLCAweGFiLCAweGY3LCAweDM2LCAweDUsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDgxLCAweDU4LCAweDZjLCAweGEzLCAweDZhLCAweDk5LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4MTksIDB4YTYsIDB4ZjcsIDB4MjAsIDB4NTIsIDB4YSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIxLCAweDUsIDB4MzQsIDB4OGEsIDB4ZmIsIDB4MTYsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOCwgMHgxYSwgMHgyZSwgMHhjZiwgMHg1OCwgMHhkMywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4NzYsIDB4YzUsIDB4ZjcsIDB4ODIsIDB4YzQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhjNSwgMHgxMiwgMHhmNywgMHgzMywgMHhjMSwgMHg2MSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGU4LCAweGJlLCAweGFhLCAweDE1LCAweDliLCAweDU3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhjMCwgMHhlMCwgMHg5MywgMHg5YiwgMHgxYiwgMHhhMSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDgzLCAweGEwLCAweDFmLCAweDg0LCAweDlkLCAweDlmLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NTMsIDB4YSwgMHg3NCwgMHg3YiwgMHg5MSwgMHg5MiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk0LCAweDc3LCAweDc5LCAweDk0LCAweDcwLCAweDFiLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4ODEsIDB4N2MsIDB4NjksIDB4MWYsIDB4OGUsIDB4NiwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDhjLCAweGM4LCAweDhjLCAweGUxLCAweDgsIDB4ZjcsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDk2LCAweGM0LCAweDUsIDB4ZmIsIDB4N2YsIDB4NiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweDg5LCAweGEzLCAweDg4LCAweGE1LCAweDhjLCAweGE1LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhhLCAweDZjLCAweDhmLCAweDZkLCAweDhkLCAweDZlLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg2LCAweDgwLCAweDUyLCAweDUsIDB4MTMsIDB4ZTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDYsIDB4MjMsIDB4NjQsIDB4M2YsIDB4M2EsIDB4NGIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGQ3LCAweGI5LCAweDYwLCAweDc2LCAweGY4LCAweDE0LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4NzcsIDB4MTIsIDB4ZTEsIDB4YmIsIDB4ZjcsIDB4ZGYsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg2YywgMHhhYywgMHhlYiwgMHgxNSwgMHhhOSwgMHg2NSwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDUsIDB4MTMsIDB4YWMsIDB4NjQsIDB4YjksIDB4YjAsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHgxYiwgMHhiZCwgMHhiZSwgMHg5YiwgMHhhNywgMHhiNywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDVjLCAweGJlLCAweDRkLCAweGFlLCAweGE4LCAweDU4LCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiZSwgMHhiMywgMHhhNCwgMHhkNiwgMHhjMSwgMHgxYSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDg2LCAweGE0LCAweDdhLCAweGE1LCAweGQ1LCAweGM5LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4YjAsIDB4NDIsIDB4NTAsIDB4NSwgMHgxMywgMHhhYywgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDYyLCAweDk2LCAweDVhLCAweDFiLCAweDU5LCAweDU1LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NjEsIDB4MWYsIDB4MTMsIDB4OWMsIDB4NTcsIDB4Y2EsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhjMCwgMHg0YywgMHg1LCAweDU3LCAweDUxLCAweDc1LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4MWEsIDB4OGEsIDB4NjgsIDB4OTIsIDB4NmUsIDB4OWMsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGE0LCAweGU0LCAweDE1LCAweDEzLCAweGFjLCAweGVhLCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4ZjcsIDB4MywgMHhkYiwgMHhjMCwgMHg1MiwgMHg0OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MjEsIDB4MzcsIDB4MzAsIDB4M2YsIDB4NTEsIDB4YmUsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDhiLCAweGMxLCAweGQ5LCAweGMxLCAweGNmLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWIsIDB4YzEsIDB4MSwgMHhjMywgMHgxNiwgMHhmNywgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGEsIDB4ZmIsIDB4MiwgMHg2LCAweDlhLCAweGQ5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOCwgMHg0NywgMHhhLCAweGZiLCAweDE5LCAweDYsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHg1LCAweGY3LCAweDE5LCAweDQ2LCAweGEsIDB4ZmIsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDVmLCAweGY3LCAweDViLCAweDUsIDB4ZGIsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDY0LCAweDJkLCAweGEsIDB4ZDAsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGZiLCAweDQwLCAweDIyLCAweGY3LCAweDQwLCAweDUsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhhLCAweGZiLCAweDY1LCAweDJkLCAweGEsIDB4ZGMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUsIDB4ZmIsIDB4NWIsIDB4NSwgMHhmYiwgMHhiLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgxNywgMHg2LCAweDdlLCAweDQ3LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHg0NSwgMHhhLCAweGY3LCAweDE4LCAweDYsIDB4N2IsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDIsIDB4NiwgMHhlLCAweGY3LCAweDRjLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHhhZCwgMHhmNywgMHhhZiwgMHgxNSwgMHhiZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4ZjgsIDB4MWMsIDB4NSwgMHg1OSwgMHg2LCAweGZiLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4ZTYsIDB4MTUsIDB4YmMsIDB4NiwgMHhlMCwgMHhmOCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NTksIDB4NiwgMHhlLCAweDNkLCAweGMyLCAweGY3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhmOCwgMHgxOCwgMHhjMiwgMHgxLCAweGUzLCAweGM0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4YzQsIDB4MywgMHhjNCwgMHgzZCwgMHgxNSwgMHhmNywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4Y2QsIDB4YzQsIDB4YWMsIDB4YmMsIDB4YTYsIDB4N2UsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHhhZCwgMHgxZiwgMHhlMywgMHg4YSwgMHhhNywgMHhkZSwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGE4LCAweDdhLCAweGEzLCAweDc1LCAweDlkLCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4ZjcsIDB4NGMsIDB4ODcsIDB4OTMsIDB4OTYsIDB4MWEsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHhiNywgMHg4YiwgMHhhMCwgMHgxYiwgMHhmNywgMHgzZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4MjYsIDB4NSwgMHhjNCwgMHg2LCAweGFiLCAweGY3LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg1MCwgMHg2LCAweDQ4LCAweDI0LCAweDg1LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4OWEsIDB4NzYsIDB4YWIsIDB4NmEsIDB4MWYsIDB4NWEsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg1MiwgMHg3MywgMHg5ZCwgMHg2YSwgMHhhMCwgMHg3OSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRlLCAweGZiLCAweDM5LCAweDUsIDB4OTksIDB4N2YsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg3YiwgMHgxYSwgMHg3OSwgMHg3ZCwgMHg3ZCwgMHg2ZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVhLCAweDYsIDB4YTAsIDB4ZjAsIDB4NjIsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweGM2LCAweDE1LCAweGZiLCAweDFkLCAweGY3LCAweGIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDk5LCAweDg1LCAweDlhLCAweDlhLCAweDFhLCAweGFmLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4YjIsIDB4OGMsIDB4MWUsIDB4ZjcsIDB4MjIsIDB4ZmIsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OWEsIDB4N2QsIDB4OTYsIDB4N2YsIDB4NzQsIDB4MWEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg1OCwgMHg0NSwgMHgxZSwgMHhlLCAweGY4LCAweDgwLCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHhkOSwgMHhmOCwgMHg4MCwgMHgxNSwgMHhlZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4ZjIsIDB4NSwgMHgyNywgMHg2LCAweGZiLCAweDY0LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjIsIDB4NiwgMHhhOCwgMHhmMiwgMHg1LCAweDI0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDc5LCAweGI5LCAweGU2LCAweGI4LCAweGY3LCAweDhmLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4YjcsIDB4MSwgMHg4NCwgMHhiOSwgMHhmNywgMHgwLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MywgMHhiOSwgMHgzLCAweDg0LCAweGY3LCAweDY2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTgsIDB4ZjUsIDB4MmIsIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYywgMHhmNywgMHgzOCwgMHhmNywgMHg1ZCwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGViLCAweGZiLCAweDFmLCAweGZiLCAweDQxLCAweGZiLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzUsIDB4ZmIsIDB4NjUsIDB4MWUsIDB4YjksIDB4OWMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZiwgMHhmNywgMHgyMCwgMHhmNywgMHgyZSwgMHhmNywgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweGRkLCAweDM5LCAweGZiLCAweDgsIDB4ZmIsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZSwgMHhmYiwgMHgyNywgMHhmYiwgMHgzMSwgMHhmYiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4ZGUsIDB4ZjcsIDB4OCwgMHgxZSwgMHhmNywgMHhmYywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDZiLCAweDY5LCAweDYzLCAweDdhLCAweDY4LCAweDFiLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4YjUsIDB4YzAsIDB4ZTMsIDB4ZDcsIDB4Y2YsIDB4ZDMsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHg3YywgMHg3NywgMHg5ZiwgMHgxZiwgMHhhZCwgMHhhZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4NjYsIDB4NmUsIDB4OTgsIDB4NWQsIDB4MWIsIDB4ZmIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDI3LCAweDIwLCAweDM5LCAweGNhLCAweDU3LCAweGQyLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4YTMsIDB4YWIsIDB4YjIsIDB4MWYsIDB4ZSwgMHhmNywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGRhLCAweGM1LCAweGRhLCAweGMyLCAweDEsIDB4ZjcsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5NSwgMHgxNSwgMHhlZSwgMHg2LCAweDk0LCAweGM2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg2LCAweGEwLCAweGY3LCAweDI1LCAweDUsIDB4OGQsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg5OSwgMHg5NSwgMHgxYSwgMHhjOCwgMHg1YywgMHg5ZSwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDU0LCAweDdhLCAweDdjLCAweDZkLCAweDFlLCAweDhlLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5ZCwgMHhhNiwgMHhjMSwgMHg5ZCwgMHhiNCwgMHgxYiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDg0LCAweDYxLCAweDgwLCAweDg5LCAweDdmLCAweDg3LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OTAsIDB4NzUsIDB4NzEsIDB4OGYsIDB4NzEsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDZlLCAweDQzLCAweDVkLCAweDYyLCAweGE4LCAweDY1LCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4YjksIDB4YTcsIDB4YWMsIDB4YWUsIDB4MWYsIDB4OTMsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1ZiwgMHg2YSwgMHg1ZSwgMHg3MCwgMHg2MiwgMHgxYiwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDk0LCAweDlmLCAweGFiLCAweGE3LCAweDlkLCAweGMxLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4ODMsIDB4OGIsIDB4MWYsIDB4ZSwgMHhkYSwgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDc3LCAweDEsIDB4ZjcsIDB4ODYsIDB4ZjcsIDB4OTMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0YiwgMHhmYiwgMHg0ZCwgMHhhYiwgMHhiYSwgMHhmYiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFlLCAweGY3LCAweDU5LCAweGY3LCAweDI0LCAweDZlLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYywgMHgzOSwgMHhmYiwgMHg1MywgMHgxNSwgMHhmNywgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRkLCAweGIxLCAweGJjLCAweGZiLCAweDE0LCAweGY3LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTIsIDB4ZjcsIDB4MjQsIDB4NmMsIDB4YmEsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4NzYsIDB4ZjcsIDB4NWIsIDB4YzksIDB4MSwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGM3LCAweDE1LCAweGY4LCAweDcsIDB4NiwgMHg2OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDZhLCAweGEsIDB4YjgsIDB4ZjcsIDB4OTksIDB4NSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDYsIDB4ZSwgMHg3OSwgMHhiOSwgMHhmNywgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4ZTgsIDB4YmIsIDB4ZTQsIDB4YjcsIDB4MSwgMHg4NCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGRlLCAweGJkLCAweGY3LCAweDFmLCAweGJhLCAweDMsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3NCwgMHgxNSwgMHhmYiwgMHgxZSwgMHhmMSwgMHgyMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGY3LCAweDQ4LCAweGY3LCAweDRkLCAweGY3LCAweDM1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4ZjcsIDB4MWUsIDB4MjEsIDB4ZWQsIDB4ZmIsIDB4MjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhmYiwgMHg1ZSwgMHhmYiwgMHgyYSwgMHhmYiwgMHg2MiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDkzLCAweDE1LCAweGY3LCAweDFkLCAweGY3LCAweDIyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4ZjcsIDB4M2YsIDB4ZjcsIDB4ZSwgMHhkZiwgMHgzMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZmIsIDB4MzAsIDB4ZmIsIDB4MzMsIDB4ZmIsIDB4MmMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmYiwgMHhjLCAweDMyLCAweGUwLCAweGY3LCAweGIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHgzMiwgMHgxNSwgMHhiYSwgMHg2LCAweGExLCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiZiwgMHg2LCAweGE5LCAweDIxLCAweDUsIDB4YzYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGY3LCAweDksIDB4NSwgMHhiZiwgMHg5ZCwgMHg5YywgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDFhLCAweGI4LCAweDYzLCAweGE3LCAweDVlLCAweDFlLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg5ZCwgMHhmYiwgMHgyMSwgMHgxNSwgMHg5ZiwgMHhlOCwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YTgsIDB4OWMsIDB4NzksIDB4N2IsIDB4NTksIDB4NzEsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHgxZiwgMHhlLCAweGY4LCAweGExLCAweGIzLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGY4LCAweGExLCAweDE1LCAweGY3LCAweGZjLCAweDYsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg1LCAweGZiLCAweGZjLCAweDYsIDB4ZSwgMHhmNywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGY3LCAweDdjLCAweGM5LCAweDEsIDB4ZjcsIDB4YiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgwLCAweGNhLCAweDMsIDB4ZjcsIDB4YiwgMHhmOCwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDNmLCAweGM2LCAweDRkLCAweGUyLCAweGY3LCAweDEsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhmNywgMHgxMSwgMHhjYSwgMHg1ZiwgMHhjYywgMHgyOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MjcsIDB4MjMsIDB4ZmIsIDB4NiwgMHgxZSwgMHhjYSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGJmLCAweGMxLCAweGU0LCAweGU0LCAweGQwLCAweGEzLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NGYsIDB4NDYsIDB4MzEsIDB4NDMsIDB4NGYsIDB4NjgsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHgxZSwgMHhlLCAweGI3LCAweGMwLCAweGY3LCAweDc5LCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDcsIDB4NzcsIDB4MSwgMHhmNywgMHg5NywgMHhjMiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTcsIDB4ZjcsIDB4MjYsIDB4MTUsIDB4YzIsIDB4NiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ4LCAweDUsIDB4ZjcsIDB4NGYsIDB4ODAsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDYsIDB4YWYsIDB4ZjcsIDB4NDcsIDB4NTIsIDB4YSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ3LCAweDUsIDB4ZmIsIDB4NGYsIDB4NiwgMHg4MCwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4NGYsIDB4NiwgMHhmYiwgMHg4OSwgMHhmYiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweDQxLCAweDgwLCAweGEsIDB4ZmMsIDB4NDEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4OGQsIDB4YzMsIDB4ZjcsIDB4OWIsIDB4YzEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDFmLCAweGM0LCAweDMsIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg5MSwgMHgzYywgMHhhLCAweGZiLCAweDNkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHhkZiwgMHhkYSwgMHhiYiwgMHhlZiwgMHgxYSwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGIyLCAweDQ4LCAweDVmLCAweDRhLCAweDc0LCAweDU4LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODIsIDB4NTIsIDB4NSwgMHhjMCwgMHg2LCAweGIyLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4YjEsIDB4YWEsIDB4MWIsIDB4YWUsIDB4YTEsIDB4NzUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg2MiwgMHg2MywgMHg2OCwgMHg3NCwgMHgxZiwgMHhmYiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEsIDB4NSwgMHhlLCAweGY3LCAweDg0LCAweGMzLCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZjcsIDB4MiwgMHhjMiwgMHgxMiwgMHhmOCwgMHhhLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4YzQsIDB4MTMsIDB4ZjAsIDB4ZjcsIDB4MzAsIDB4ZjcsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3YywgMHhhOCwgMHhiYiwgMHg3YiwgMHhiNiwgMHgxYiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweGMwLCAweGRlLCAweGFlLCAweDc5LCAweDlhLCAweDc1LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4ZTgsIDB4YWUsIDB4YTEsIDB4OWMsIDB4YjIsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhiYywgMHg2NSwgMHhhYywgMHg1NCwgMHg2MCwgMHg1YywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDY0LCAweDFlLCAweDk2LCAweDU3LCAweDUsIDB4OWQsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhhMCwgMHhhZCwgMHgxYiwgMHhhNiwgMHhhNywgMHg3ZCwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDVhLCAweDcyLCAweDRiLCAweDFmLCAweDg3LCAweDc5LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ODcsIDB4NzksIDB4OCwgMHg5OSwgMHg5ZiwgMHg4YiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDEzLCAweGYwLCAweGE5LCAweGE3LCAweDgxLCAweDZlLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NjksIDB4NGIsIDB4NjYsIDB4NjcsIDB4OTksIDB4OWQsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDY1LCAweGEsIDB4ZjcsIDB4NDIsIDB4ZjgsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg5NiwgMHhmMCwgMHg3YiwgMHhkNSwgMHhmYiwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI0LCAweDUsIDB4ZSwgMHhmNywgMHgyMiwgMHhhYywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDlhLCAweGE5LCAweDc4LCAweGJiLCAweDFiLCAweGJlLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4Y2EsIDB4YmMsIDB4MWYsIDB4N2IsIDB4MzksIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDJhLCAweGEsIDB4MzksIDB4NiwgMHhkMywgMHhmOCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgxYywgMHg2OCwgMHhhLCAweGRkLCAweDYsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOCwgMHg1LCAweDM1LCAweDdiLCAweDUxLCAweGZiLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMSwgMHgxYiwgMHg0YiwgMHg2YSwgMHhiOSwgMHhjNiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGMyLCAweGY3LCAweGE4LCAweDUsIDB4ZmIsIDB4MWQsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGRkLCAweDYsIDB4MjMsIDB4ZmMsIDB4YTYsIDB4NmEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjgsIDB4YTksIDB4YTgsIDB4MSwgMHhmNywgMHgyOCwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGI2LCAweDMsIDB4ZjcsIDB4MjgsIDB4M2QsIDB4MTUsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDUyLCAweGY4LCAweGY3LCAweDUsIDB4ZGEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUyLCAweGZjLCAweGY3LCAweDUsIDB4YjYsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGY4LCAweGY3LCAweDUsIDB4YmMsIDB4NiwgMHg5NCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4NmYsIDB4NiwgMHhmYiwgMHgzNCwgMHhmYiwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGZiLCAweDIxLCAweDUzLCAweGI5LCAweDNlLCAweGY3LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhmNywgMHg1MSwgMHhmNywgMHgxZSwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4ZjcsIDB4MzMsIDB4MywgMHhmNywgMHg3MCwgMHhmNywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDZlLCAweGE2LCAweDcyLCAweGI0LCAweGI3LCAweGJhLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4YTksIDB4NzMsIDB4YTUsIDB4NjMsIDB4NTgsIDB4NWYsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHgxZSwgMHhlLCAweGZiLCAweDIsIDB4YjksIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGJhLCAweDMsIDB4ZjcsIDB4NzYsIDB4ZmIsIDB4MWEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg5MCwgMHhhMywgMHg3ZCwgMHhhNCwgMHgxYiwgMHhiYywgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGJhLCAweGE0LCAweDc4LCAweDljLCAweDdjLCAweDhkLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4YWMsIDB4NSwgMHg1YywgMHg2LCAweDczLCAweDQxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg5MywgMHg5MSwgMHg4YiwgMHg5MSwgMHgxYiwgMHg5ZCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDgzLCAweDhjLCAweDFmLCAweDc4LCAweDc5LCAweDdmLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4N2MsIDB4OGUsIDB4OTQsIDB4ODEsIDB4MWUsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGMzLCAweDEsIDB4ZjcsIDB4YWIsIDB4YzAsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweGY3LCAweDhkLCAweDE1LCAweGY3LCAweDhkLCAweDNjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHg2LCAweGM1LCAweGY3LCAweGQxLCAweGZiLCAweDI2LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NTMsIDB4ZTYsIDB4OWEsIDB4NWUsIDB4ZmIsIDB4OGYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweDYsIDB4ZSwgMHhmNywgMHg4ZCwgMHhjNiwgMHhmNywgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweDEsIDB4ZjcsIDB4MWQsIDB4YzEsIDB4ZjcsIDB4NmQsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDFkLCAweGY4LCAweGMsIDB4MTUsIDB4MmMsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhiNiwgMHhkNCwgMHhmNywgMHhiLCAweGQyLCAweGY3LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4NWEsIDB4YzMsIDB4MzksIDB4MzYsIDB4ZmIsIDB4MSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE1LCAweDFlLCAweGMxLCAweDlhLCAweDE1LCAweGQxLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4ZDksIDB4Y2YsIDB4OWQsIDB4NWQsIDB4NjgsIDB4OGMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHg0YSwgMHg1NiwgMHg0ZSwgMHg1YywgMHg1ZiwgMHhhOSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4ZTYsIDB4NzYsIDB4ZjgsIDB4YywgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4ZjgsIDB4YzQsIDB4MywgMHhmMywgMHhkMSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGY3LCAweDUzLCAweGZiLCAweDRiLCAweGY3LCAweDRkLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4ZjcsIDB4MTUsIDB4ZmIsIDB4MWUsIDB4ZmIsIDB4NTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg1LCAweGY3LCAweDQ4LCAweDE2LCAweGFhLCAweDVjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ZjcsIDB4NTMsIDB4ZmIsIDB4M2UsIDB4ZjcsIDB4NGQsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHhmNywgMHgxNCwgMHhmYiwgMHgxYywgMHg1LCAweGUsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg1YywgMHg3NiwgMHhmMywgMHhjMiwgMHhmNywgMHg1ZCwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGM5LCAweDc3LCAweDEyLCAweDEzLCAweGI4LCAweGY3LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4MTUsIDB4ZjcsIDB4MTQsIDB4NiwgMHg4MiwgMHg2NywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NWYsIDB4YSwgMHhmNywgMHgyMCwgMHg3NiwgMHhhLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg5MywgMHhhZiwgMHg1LCAweGI2LCAweDYsIDB4OTQsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDYwLCAweDYsIDB4YWMsIDB4ZjcsIDB4NjUsIDB4NTIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMwLCAweGZiLCAweDY1LCAweDUsIDB4YzksIDB4MTYsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHg3NiwgMHhmYiwgMHgxOSwgMHg1LCAweGZjLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTQsIDB4MTUsIDB4MTMsIDB4NzgsIDB4YWMsIDB4NmMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHhmOSwgMHg0NywgMHg2OSwgMHhhYSwgMHg1LCAweGZjLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZmUsIDB4MTUsIDB4ZjcsIDB4NmUsIDB4NiwgMHg5NCwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MzYsIDB4NiwgMHhiZSwgMHhmNywgMHhjNiwgMHhmYiwgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDgyLCAweDU1LCAweGRiLCAweDk5LCAweDYyLCAweGZiLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzNSwgMHg2LCAweGUsIDB4NWYsIDB4YzEsIDB4NWQsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkNSwgMHhjMCwgMHg3YywgMHhjMSwgMHhmNywgMHhjOSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY4LCAweDY1LCAweGJiLCAweDEzLCAweDVjLCAweDg5LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YWQsIDB4NmMsIDB4ZjgsIDB4Y2UsIDB4ZjksIDB4NDcsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHg1LCAweGZjLCAweGI1LCAweGZiLCAweGZmLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzYsIDB4YSwgMHgzNCwgMHg2LCAweGJlLCAweGY3LCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTMsIDB4NzQsIDB4ODIsIDB4NTUsIDB4ZGEsIDB4OTksIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4NSwgMHg1LCAweDM0LCAweDYsIDB4MTMsIDB4YWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhmYywgMHgyNCwgMHgxNSwgMHhmNywgMHg2YiwgMHg3NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjMsIDB4NiwgMHhmNywgMHhiLCAweGVlLCAweGM2LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4MWEsIDB4YmMsIDB4NzIsIDB4YjcsIDB4NGQsIDB4NjUsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2OSwgMHg2YywgMHgxZSwgMHg4MSwgMHg0YywgMHg1LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiMCwgMHg4OSwgMHhhZSwgMHhhNSwgMHhhYSwgMHgxYiwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDczLCAweDZlLCAweDYyLCAweDY4LCAweDZhLCAweDZkLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4MWUsIDB4ZmIsIDB4MCwgMHg1LCAweGUsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg1YywgMHg3NiwgMHhmNywgMHhiLCAweGMyLCAweGY3LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZjcsIDB4YjMsIDB4NzYsIDB4YzAsIDB4NzcsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHhiYSwgMHg2NSwgMHhiYiwgMHgxMywgMHhiZSwgMHhmNywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDE1LCAweGY3LCAweDExLCAweDYsIDB4ODMsIDB4NTgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDYsIDB4ODIsIDB4NTUsIDB4NSwgMHhmNywgMHgxYywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NjIsIDB4NiwgMHg5MiwgMHhiZSwgMHg1LCAweGI2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhjMiwgMHg1LCAweDYxLCAweDYsIDB4YWIsIDB4ZjcsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDU2LCAweDYsIDB4ZmIsIDB4MmMsIDB4ZmIsIDB4NjYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweDlhLCAweDE1LCAweGUzLCAweGY3LCAweDgsIDB4NzgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDUsIDB4ZmMsIDB4MTAsIDB4ZmIsIDB4MjUsIDB4MTUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhhYiwgMHg2ZSwgMHhmOCwgMHhiZSwgMHhmOSwgMHg0NywgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDUsIDB4ZmMsIDB4YTEsIDB4ZmIsIDB4ZTgsIDB4MTUsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhiMSwgMHg3NywgMHhhZSwgMHgxYiwgMHhjNCwgMHhkMSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDFmLCAweDhlLCAweGIzLCAweDdhLCAweDlhLCAweDc4LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgxMywgMHhiZCwgMHhhNiwgMHhhMCwgMHg5YiwgMHhiMSwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGJjLCAweDZjLCAweGFiLCAweDVkLCAweDY5LCAweDY2LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NmIsIDB4MWUsIDB4OTQsIDB4NTgsIDB4NSwgMHg5ZCwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDlmLCAweGE3LCAweDFiLCAweGEwLCAweDlmLCAweDdkLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4MWYsIDB4NjQsIDB4NjksIDB4NmYsIDB4NTcsIDB4MWUsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDgyLCAweDU2LCAweDUsIDB4MTMsIDB4YmUsIDB4YjIsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg2YSwgMHg2ZCwgMHg3MywgMHg2MywgMHg1OSwgMHg2ZCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDljLCAweDc2LCAweDFmLCAweGUsIDB4ZmIsIDB4MzEsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzMywgMHhmNywgMHhhLCAweDEyLCAweGY3LCAweGMsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NSwgMHhjMiwgMHg5ZSwgMHhjMSwgMHgxNywgMHhmNywgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGY3LCAweDE1LCAweDczLCAweGExLCAweDc4LCAweGFjLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4YWQsIDB4YjMsIDB4YTIsIDB4NzUsIDB4YTAsIDB4NjgsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2OSwgMHg2MiwgMHgxZSwgMHg4ZSwgMHhmYiwgMHg0MSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDdhLCAweGZiLCAweDFkLCAweDVlLCAweGZiLCAweDIyLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZDYsIDB4NWUsIDB4ZTUsIDB4YzYsIDB4YzksIDB4OWEsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHgxZSwgMHgxMywgMHhiOCwgMHhhMiwgMHhmNywgMHhiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg2LCAweDdkLCAweDQ0LCAweDUsIDB4N2IsIDB4NjYsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg2MywgMHgxYiwgMHgyZiwgMHg3MSwgMHhiYSwgMHhiMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4ZjcsIDB4MWYsIDB4YWMsIDB4ZDMsIDB4OTYsIDB4MWYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHg1MiwgMHhhLCAweGUsIDB4OGIsIDB4YzEsIDB4ZjcsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmNywgMHhiMSwgMHhjMSwgMHgxLCAweDg5LCAweDRmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHgxNiwgMHgyMCwgMHhhLCAweGZiLCAweDQzLCAweGY4LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4OWEsIDB4MjYsIDB4OWIsIDB4YTksIDB4ZmIsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhhLCAweDhiLCAweGMxLCAweGY3LCAweGYsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhjMSwgMHg4NCwgMHhhLCAweDcyLCAweGY3LCAweDc0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4ZjcsIDB4NzEsIDB4MywgMHhmNywgMHhjMiwgMHhmOCwgMHhmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweGQ3LCAweGYwLCAweDc3LCAweGQ0LCAweGZiLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjQsIDB4NSwgMHhmYiwgMHhkNSwgMHhmZCwgMHgxZCwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4OGIsIDB4YzAsIDB4ZjcsIDB4YywgMHhjMCwgMHhmNywgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweDY2LCAweDc3LCAweDEsIDB4ODksIDB4NGYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdhLCAweGY5LCAweDMsIDB4MTUsIDB4YjAsIDB4NzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhmNywgMHg3LCAweGY3LCAweGQsIDB4ZmIsIDB4NywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGZiLCAweDUsIDB4ZjcsIDB4MmMsIDB4NSwgMHgzYywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MmIsIDB4ZmQsIDB4OWIsIDB4MjMsIDB4YSwgMHg3ZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4YmMsIDB4OWMsIDB4YmMsIDB4MSwgMHg3MSwgMHg0ZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmMsIDB4ZjksIDB4MjAsIDB4MTUsIDB4YmMsIDB4ODEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDk3LCAweGE2LCAweGI1LCAweGJjLCAweDFiLCAweGE0LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4N2IsIDB4OWUsIDB4MWYsIDB4N2EsIDB4OWYsIDB4YTEsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHgxYiwgMHhkMCwgMHhiOSwgMHhjYSwgMHhiMSwgMHg5ZSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDk0LCAweDUsIDB4NzMsIDB4N2QsIDB4NjksIDB4NjYsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3NiwgMHg3ZSwgMHg5OSwgMHg5YiwgMHg3YSwgMHgxZiwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDc1LCAweDllLCAweDYxLCAweDFiLCAweDUyLCAweDUxLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4NmQsIDB4MWYsIDB4ZmIsIDB4ODYsIDB4ZmQsIDB4MjAsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDdlLCAweGEsIDB4ZGIsIDB4ZjcsIDB4OCwgMHgxLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4YSwgMHhmOCwgMHg1NSwgMHhmOSwgMHgxOSwgMHgxNSwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGEsIDB4MzgsIDB4NiwgMHhmYiwgMHgzYywgMHhmYiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZGQsIDB4NWMsIDB4YSwgMHgzOSwgMHg2LCAweGZiLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4OGQsIDB4MjMsIDB4YSwgMHg4YiwgMHhiZiwgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweGFhLCAweGMxLCAweGFhLCAweGM0LCAweGQyLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg4OSwgMHhmNywgMHg2MywgMHhmNywgMHgxMSwgMHhjNiwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweDMsIDB4ZjcsIDB4ZGUsIDB4ZjksIDB4M2QsIDB4MTUsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHg3MSwgMHhiNywgMHhjOCwgMHhiYywgMHhiZiwgMHhjNSwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGI1LCAweDRhLCAweDRjLCAweDU3LCAweDU4LCAweDRlLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4OTMsIDB4MTUsIDB4YTMsIDB4OTcsIDB4YTMsIDB4YWMsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg2ZiwgMHg4NiwgMHg3NSwgMHg3NywgMHg3YiwgMHg3NiwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDhiLCAweGEyLCAweDFlLCAweGZjLCAweDFiLCAweGZkLCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4YSwgMHg4YiwgMHhjMSwgMHhlYiwgMHhjMSwgMHhiYywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MSwgMHg3MSwgMHhmNywgMHg1NiwgMHhlMiwgMHhjZCwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDkzLCAweGMyLCAweDMsIDB4NzEsIDB4MTYsIDB4ZjcsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhhLCAweDM1LCAweDYsIDB4YzgsIDB4ZjcsIDB4MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4NiwgMHg2YiwgMHhmYiwgMHgzOSwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4NiwgMHhhYSwgMHhmNywgMHgyZCwgMHg1MiwgMHhhLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4NSwgMHhmYiwgMHgyYSwgMHg2LCAweGIxLCAweGY3LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkYiwgMHg2LCAweDgwLCAweDUyLCAweDUsIDB4YzEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGY3LCAweDNiLCAweDUsIDB4NTcsIDB4NjAsIDB4YSwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjMsIDB4ZjcsIDB4NWMsIDB4NSwgMHhmNywgMHgyYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4MjYsIDB4NmEsIDB4YSwgMHhhOSwgMHhmNywgMHgyZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MmEsIDB4MmQsIDB4YSwgMHhlNCwgMHg2LCAweGZiLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4YSwgMHg1NywgMHg2LCAweGY3LCAweDViLCAweGY3LCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4M2UsIDB4ZjcsIDB4YjQsIDB4NTIsIDB4ZmIsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4ZmIsIDB4MmIsIDB4YzIsIDB4ZTcsIDB4YmUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhiZSwgMHgxLCAweDljLCAweGM1LCAweGY3LCAweDMsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YiwgMHhjMywgMHgzLCAweGY3LCAweDUsIDB4ZmIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg4NCwgMHg5MCwgMHhhMywgMHg3YSwgMHhhNywgMHgxYiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGEyLCAweGNiLCAweGFiLCAweDdjLCAweGEyLCAweDc3LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGYsIDB4ODgsIDB4NSwgMHhlNywgMHhkYywgMHhiZSwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDFmLCAweDdiLCAweGI3LCAweDUsIDB4NjYsIDB4NGQsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg0NCwgMHgxYiwgMHhmYiwgMHg1LCAweDQzLCAweGU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHhmNywgMHg0MywgMHhmNywgMHg0NCwgMHhlZiwgMHhlYiwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDZkLCAweDYwLCAweGFhLCAweDFmLCAweDc3LCAweDM2LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiOCwgMHhmNywgMHg2NSwgMHg1MiwgMHhhLCAweDdlLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiNywgMHg0OSwgMHg2MCwgMHg5OSwgMHg1NSwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGZiLCAweDIyLCAweGZiLCAweDNkLCAweGZiLCAweDQ0LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4MzAsIDB4ZWUsIDB4N2MsIDB4MWYsIDB4NzgsIDB4NDIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDkyLCAweDk0LCAweDhiLCAweDkyLCAweDFiLCAweDk4LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODEsIDB4ODAsIDB4ODUsIDB4NzUsIDB4NmUsIDB4N2QsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg5MiwgMHg4MSwgMHgxZiwgMHhlLCAweDViLCAweGEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweGMyLCAweGY3LCAweDUyLCAweGMzLCAweGM2LCAweGI4LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxNiwgMHgyOCwgMHhhLCAweGY4LCAweDlkLCAweGY4LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OWEsIDB4YTksIDB4ZmIsIDB4YzksIDB4ZjcsIDB4MjQsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg1LCAweGUsIDB4NWIsIDB4YSwgMHg4NCwgMHhhLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZjcsIDB4NTUsIDB4YzQsIDB4YzcsIDB4YjksIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGY4LCAweGZmLCAweDE1LCAweGY3LCAweGQ1LCAweGYwLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4ZmIsIDB4YzksIDB4ZmIsIDB4MjQsIDB4NSwgMHhmYiwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweDFkLCAweDE1LCAweDI4LCAweGEsIDB4ZSwgMHg1YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhlNCwgMHhjMiwgMHgzLCAweGY3LCAweDU0LCAweGY5LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhiMiwgMHg3OSwgMHhmNywgMHg0NSwgMHhmNywgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4ZmIsIDB4NywgMHhiOSwgMHg5ZCwgMHhmYiwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NSwgMHgzNiwgMHg2LCAweGZjLCAweDExLCAweGZkLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MjgsIDB4YSwgMHhlLCAweDhiLCAweGJlLCAweGY3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4Y2EsIDB4NzcsIDB4ZjcsIDB4MiwgMHhmNywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhlNCwgMHhjMiwgMHgzLCAweGY4LCAweDNkLCAweGY5LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZTIsIDB4NWMsIDB4YSwgMHgzNCwgMHg2LCAweGZiLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OCwgMHgxNSwgMHhlMiwgMHg2LCAweGE1LCAweDg4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHg2LCAweGZiLCAweGMxLCAweGZkLCAweDk3LCAweDE1LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDhiLCAweGMxLCAweGY4LCAweDVjLCAweGMyLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg3NCwgMHhjNiwgMHgzLCAweGFmLCAweDE2LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg1MCwgMHhmOSwgMHgyZSwgMHgxNSwgMHhmNywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDllLCAweGE5LCAweGZiLCAweDk0LCAweDc5LCAweGEsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmOCwgMHg1ZCwgMHhjMiwgMHhmNywgMHg3NywgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmMsIDB4YzUsIDB4MywgMHhmNywgMHg4OCwgMHhmOSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4ZGIsIDB4ZWYsIDB4NzgsIDB4ZDQsIDB4ZmIsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHg1LCAweGZiLCAweDY0LCAweGZkLCAweDFlLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MmQsIDB4MmEsIDB4YSwgMHhmYiwgMHg0MywgMHg2LCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NWQsIDB4NSwgMHhmNywgMHg0MCwgMHg0NiwgMHhhLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4NiwgMHg3ZSwgMHg1NCwgMHg1LCAweGY3LCAweDQyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg3YSwgMHhhLCAweGZiLCAweDQ0LCAweDYsIDB4ZSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGY4LCAweDVkLCAweGMyLCAweDEsIDB4ZjcsIDB4NzQsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDNmLCAweGY5LCAweGIsIDB4MTUsIDB4YjIsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NywgMHhmNywgMHg4LCAweGY3LCAweDE0LCAweGZiLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHg5YywgMHhmYiwgMHhkLCAweGY3LCAweDJlLCAweDUsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweGQ1LCAweGZkLCAweGE1LCAweDE1LCAweDJmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDhiLCAweGJlLCAweGY4LCAweDVmLCAweGMyLCAweGY3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHg3NCwgMHhjNiwgMHgzLCAweGY4LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MjIsIDB4MTUsIDB4ZTcsIDB4NiwgMHhhNSwgMHhmNywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzMSwgMHg2LCAweGZiLCAweDRlLCAweGZiLCAweDksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHg2LCAweGE2LCAweGY3LCAweDksIDB4NSwgMHgzMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OGUsIDB4ZmQsIDB4OTcsIDB4MTUsIDB4MmYsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4YzEsIDB4ZjcsIDB4NTcsIDB4YmYsIDB4ZjcsIDB4NjMsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY4LCAweGFkLCAweGNiLCAweDMsIDB4OGEsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2LCAweGY3LCAweDU2LCAweGY3LCAweDQ5LCAweGUxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4ZjcsIDB4MjIsIDB4MjgsIDB4YmUsIDB4ZmIsIDB4MWEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4YywgMHgyZCwgMHhhLCAweGRhLCAweDYsIDB4NjMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg1LCAweDNmLCAweDYsIDB4N2YsIDB4NTcsIDB4NSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NjQsIDB4ZmIsIDB4NTcsIDB4ODksIDB4YSwgMHhmNywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGIxLCAweGY3LCAweDU3LCAweDUsIDB4ZjcsIDB4NTUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGJmLCAweDUsIDB4ZmIsIDB4NTQsIDB4NiwgMHhiNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDUsIDB4ZjAsIDB4NiwgMHhmNywgMHgyYSwgMHhiNSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE2LCAweGZiLCAweDFhLCAweDIxLCAweGZiLCAweDI3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4MWYsIDB4ZSwgMHg3ZSwgMHhiZiwgMHhmOCwgMHg0ZSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGJjLCAweDliLCAweGJkLCAweDEsIDB4NjEsIDB4N2UsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZiwgMHg2LCAweDk2LCAweGJmLCAweDUsIDB4ZmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZTIsIDB4ZjgsIDB4MzcsIDB4ZjcsIDB4NWEsIDB4ZmMsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGQ3LCAweDYsIDB4ZjEsIDB4ZjgsIDB4ODIsIDB4NSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OTYsIDB4YmYsIDB4NSwgMHhmYiwgMHg4YiwgMHg4MiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHg2LCAweDM0LCAweGZjLCAweDNiLCAweGZiLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NmYsIDB4NSwgMHhmYiwgMHgzNCwgMHg2LCAweDdmLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkZSwgMHg2LCAweDMwLCAweGZjLCAweDRlLCAweDdiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YywgMHhmOCwgMHhlNSwgMHgxNSwgMHhiZSwgMHg4MCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4OTcsIDB4YTgsIDB4YjQsIDB4YmUsIDB4MWIsIDB4YWMsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3YSwgMHhhMSwgMHgxZiwgMHg3YywgMHg5ZSwgMHg5ZiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDFiLCAweGQyLCAweGJiLCAweGNiLCAweGIyLCAweDlmLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4OTQsIDB4NSwgMHg3MywgMHg3ZCwgMHg2ZCwgMHg2NCwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDcwLCAweDdjLCAweDk5LCAweDlhLCAweDdiLCAweDFmLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NzYsIDB4OWUsIDB4NWUsIDB4MWIsIDB4NTAsIDB4NGUsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg2YywgMHgxZiwgMHhlLCAweDc5LCAweGMxLCAweGY4LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4ZjcsIDB4NmMsIDB4N2QsIDB4YSwgMHhmNywgMHg4MiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDE1LCAweGY3LCAweGEwLCAweDI3LCAweDliLCAweGE5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4ZjcsIDB4MjMsIDB4NSwgMHhmYiwgMHg5MSwgMHhmYywgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGEsIDB4NzksIDB4YzEsIDB4ZjgsIDB4N2EsIDB4YzEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGMyLCAweGY4LCAweDQ1LCAweGMzLCAweDMsIDB4ZjcsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmZiwgMHgxNSwgMHhmNywgMHhiYiwgMHhlZiwgMHg3OCwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGI1LCAweGZiLCAweDI1LCAweDUsIDB4ZmIsIDB4NjgsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHgyNSwgMHhhLCAweDc5LCAweGMxLCAweGY4LCAweDdiLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWEsIDB4N2QsIDB4YSwgMHhmNywgMHg0YiwgMHhmOSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YjEsIDB4N2EsIDB4ZjcsIDB4NDAsIDB4ZjcsIDB4NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4ZmIsIDB4NywgMHhiNiwgMHg5YywgMHhmYiwgMHg4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4ODksIDB4YSwgMHhmYiwgMHhkZCwgMHhmYywgMHhjNywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NzksIDB4YmYsIDB4ZjgsIDB4N2QsIDB4YzEsIDB4ZDEsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhiYywgMHgxLCAweDllLCAweGM2LCAweGY4LCAweDM2LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHgyZSwgMHhmOSwgMHgyYSwgMHgxNSwgMHhiZCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OWYsIDB4OTcsIDB4YTcsIDB4YjUsIDB4YmIsIDB4MWIsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg3YSwgMHg3YSwgMHg5ZCwgMHgxZiwgMHg3YiwgMHg5YywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGIwLCAweDFiLCAweGQxLCAweGJiLCAweGNhLCAweGIyLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NTgsIDB4OTQsIDB4NSwgMHg3MywgMHg3ZSwgMHg2YiwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDFiLCAweDczLCAweDdlLCAweDk3LCAweDk5LCAweDdkLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4NzksIDB4NzYsIDB4YTEsIDB4NWIsIDB4MWIsIDB4NTIsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg1NSwgMHg2ZCwgMHgxZiwgMHhmYiwgMHhjLCAweGZjLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4YSwgMHg3OSwgMHhiZSwgMHhmOCwgMHg3ZSwgMHhjMSwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDksIDB4MSwgMHhhZCwgMHhjMiwgMHhmNywgMHg0MCwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGRlLCAweDllLCAweGMzLCAweDMsIDB4ZjgsIDB4MmIsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHgxNSwgMHhkZSwgMHg2LCAweGE1LCAweGY3LCAweDksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDYsIDB4ZmIsIDB4M2YsIDB4ZmIsIDB4OSwgMHgxNSwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTQsIDB4ZjcsIDB4OSwgMHg3YiwgMHhhLCAweGZiLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4YjksIDB4MjUsIDB4YSwgMHhjYiwgMHg3NiwgMHhmOCwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4YmIsIDB4ZTQsIDB4MTUsIDB4YjksIDB4NWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHhmNywgMHgzZCwgMHhmNywgMHgxZSwgMHhmYiwgMHgzZCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGZiLCAweDIwLCAweGY3LCAweDNlLCAweGY3LCAweDY5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4NjMsIDB4YjgsIDB4ZmIsIDB4NjcsIDB4ZmIsIDB4NDEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHg0MCwgMHg1ZCwgMHg2NCwgMHhmNywgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDUsIDB4ZSwgMHg4MiwgMHhiZiwgMHg1ZCwgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGMwLCAweDEyLCAweDEzLCAweDYwLCAweGY4LCAweGJkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MTUsIDB4OTUsIDB4YmUsIDB4OGQsIDB4ZGUsIDB4NjcsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhjNiwgMHgxOCwgMHg2OCwgMHhhYiwgMHg1OSwgMHg1NywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NmMsIDB4NWYsIDB4YTAsIDB4NGEsIDB4MWIsIDB4ZmIsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3LCAweGZiLCAweDJiLCAweGZiLCAweDFkLCAweDcxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4M2IsIDB4OTYsIDB4NDEsIDB4YWUsIDB4NTgsIDB4NGMsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhhZiwgMHg2YywgMHhjNiwgMHhjOSwgMHg1LCAweDEzLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4YWQsIDB4YjksIDB4N2EsIDB4YzQsIDB4MWIsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweGY3LCAweDE2LCAweGY3LCAweDMyLCAweGFhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4ODksIDB4MTUsIDB4ZmIsIDB4ZSwgMHg3MywgMHgzMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZmIsIDB4MTMsIDB4MWIsIDB4NWYsIDB4NjcsIDB4OWEsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgxZiwgMHhmNywgMHhlMywgMHhmNywgMHhmMiwgMHhhMiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDRjLCAweDg0LCAweDYzLCAweDE5LCAweDYzLCAweGY3LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZmIsIDB4ZTYsIDB4ZmIsIDB4ZjYsIDB4NzIsIDB4YjYsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHg5NiwgMHhjNywgMHgxOSwgMHhlMSwgMHg5ZCwgMHhkYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGY3LCAweDI5LCAweDFiLCAweGJmLCAweGFmLCAweDdiLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MWYsIDB4ZSwgMHg1OSwgMHhhLCAweDk2LCAweGY4LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4YSwgMHhmNywgMHgzYywgMHhmNywgMHgyZiwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDI2LCAweDljLCAweGE5LCAweGZiLCAweDdiLCAweDc5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHhhLCAweGY3LCAweDZjLCAweGY4LCAweGZhLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ZjcsIDB4MCwgMHg3YSwgMHhkMiwgMHhmYiwgMHhiMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDUsIDB4ZmIsIDB4NTEsIDB4ZmIsIDB4MWYsIDB4MjYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NzAsIDB4YSwgMHhmNywgMHg0ZCwgMHhjMiwgMHg1MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDIsIDB4ZjksIDB4ZSwgMHgxNSwgMHhmNywgMHgzZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZjcsIDB4YSwgMHhmYiwgMHg4LCAweGI1LCAweDljLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmNywgMHgyZSwgMHg1LCAweDNjLCAweDYsIDB4ZmIsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZSwgMHg1LCAweGZiLCAweDEyLCAweGZiLCAweDIyLCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDcwLCAweGEsIDB4NTAsIDB4YSwgMHhmNywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDIxLCAweDE1LCAweGRjLCAweDYsIDB4YTQsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGEsIDB4ZmIsIDB4M2IsIDB4ZmIsIDB4YSwgMHg4NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4ZjcsIDB4YSwgMHg2YiwgMHhhLCAweGZiLCAweDc2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4MjYsIDB4YSwgMHhlLCAweDhiLCAweGMxLCAweGY4LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4ODQsIDB4YSwgMHhmNywgMHg0NywgMHhjMywgMHgzLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MzEsIDB4YSwgMHhmNywgMHgzNCwgMHhmOCwgMHhjNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMzLCAweGYxLCAweDc5LCAweGQ1LCAweGZiLCAweGMxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4NSwgMHhlLCAweDhiLCAweGMxLCAweGQxLCAweDYxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhjMSwgMHgxLCAweGY4LCAweDkyLCAweGMwLCAweDMsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHhiYSwgMHg0ZCwgMHhhLCAweGZiLCAweDIxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhkMSwgMHg1LCAweGY3LCAweDE1LCAweDYsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4YjUsIDB4ZjcsIDB4MzIsIDB4ZDMsIDB4NDYsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHgxZiwgMHhmYiwgMHgyNCwgMHg2LCAweDk5LCAweGQ2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHg3NiwgMHhhLCAweGZiLCAweDk1LCAweDVmLCAweGEsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDNhLCAweDU4LCAweGEsIDB4MjMsIDB4NiwgMHhmNywgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweDE1LCAweGFlLCAweGY3LCAweDVkLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2LCAweGMwLCAweGNkLCAweDdkLCAweDVhLCAweDI4LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4MzgsIDB4MWYsIDB4ZSwgMHg3YywgMHhjMiwgMHg2MCwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGRhLCAweGMzLCAweGY3LCAweDFmLCAweGMyLCAweDEyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4YzAsIDB4ZjcsIDB4MzQsIDB4YzEsIDB4NWYsIDB4YzQsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg5YSwgMHg4OCwgMHgxNSwgMHhmNywgMHgxYywgMHg2LCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NzYsIDB4NSwgMHhkMSwgMHg5OSwgMHhhNSwgMHhhNCwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGQ4LCAweGMwLCAweDhhLCAweDU0LCAweDFmLCAweDI4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4YjksIDB4ZmIsIDB4MjMsIDB4MWEsIDB4NDEsIDB4ZjcsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhhZCwgMHg3YywgMHgxZSwgMHgxMywgMHhiYSwgMHhiOCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDc0LCAweDc0LCAweDFhLCAweDQzLCAweGZiLCAweDI2LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NTksIDB4NWYsIDB4YTQsIDB4YWIsIDB4NjksIDB4MWUsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg1LCAweDZkLCAweGI0LCAweGMwLCAweDcxLCAweGM0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4ZjcsIDB4MzMsIDB4YjMsIDB4ZjcsIDB4MWEsIDB4YjksIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg1YywgMHg5ZiwgMHgxZiwgMHg1MywgMHhhNSwgMHgzZSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDFhLCAweDEzLCAweDdjLCAweGUyLCAweGY3LCAweDZhLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjUsIDB4MWEsIDB4ZTgsIDB4NDgsIDB4YTAsIDB4ZmIsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDM1LCAweDZmLCAweGZiLCAweDFmLCAweDc5LCAweDFlLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4N2IsIDB4YSwgMHg4MSwgMHg1MywgMHg1LCAweGRlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhmYiwgMHhkYSwgMHg2YiwgMHhhLCAweGUsIDB4NGIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgwLCAweGY4LCAweGU3LCAweDE1LCAweGY3LCAweGE1LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YWEsIDB4ZmIsIDB4ODUsIDB4ZjcsIDB4MjksIDB4NSwgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweDM3LCAweDIxLCAweGEsIDB4M2IsIDB4YSwgMHhmNywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDRhLCAweGEsIDB4MTMsIDB4N2UsIDB4ZjcsIDB4M2MsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxNSwgMHhiMSwgMHg3OSwgMHhmNywgMHg0MywgMHhmNywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4ZmIsIDB4YiwgMHhiYSwgMHg5ZCwgMHhmYiwgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzEsIDB4NSwgMHgzYSwgMHg2LCAweGIzLCAweGZkLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4YSwgMHg0YiwgMHhhLCAweGY4LCAweGEwLCAweGY4LCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzIsIDB4ZDgsIDB4ZmIsIDB4OWUsIDB4ZmIsIDB4MjksIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg1LCAweGY3LCAweDIwLCAweGZjLCAweDgzLCAweDIxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhhLCAweGM2LCAweGJkLCAweDllLCAweGJjLCAweDkwLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4YSwgMHgxMywgMHhiZCwgMHg4MCwgMHhmNywgMHgyMSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDE1LCAweGJkLCAweDgxLCAweDUsIDB4OWEsIDB4OTIsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHhiMCwgMHgxYiwgMHhiMSwgMHg5ZSwgMHg3MSwgMHg3NywgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDdlLCAweDliLCAweDllLCAweDgxLCAweGE3LCAweDFiLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4ODAsIDB4Y2MsIDB4YmUsIDB4YmEsIDB4YzIsIDB4YWIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg2LCAweDVhLCAweDk0LCAweDUsIDB4NzMsIDB4N2MsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg2NSwgMHgxYiwgMHg3MiwgMHg3ZCwgMHg5NCwgMHg5NywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweDdkLCAweDgwLCAweDlmLCAweDc1LCAweDdhLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4MWIsIDB4NTYsIDB4NGMsIDB4NjQsIDB4NGEsIDB4NjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZSwgMHhmYywgMHhhMSwgMHgyMiwgMHhhLCAweDEzLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4M2EsIDB4YSwgMHgxMywgMHg3ZCwgMHg4MCwgMHg5OCwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweGJkLCAweDgwLCAweDJiLCAweGEsIDB4M2IsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGY3LCAweDgsIDB4NGEsIDB4YSwgMHgxMywgMHg3ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY4LCAweDliLCAweDE1LCAweGRmLCAweDVjLCAweGEsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDQyLCAweGZiLCAweDgsIDB4MTUsIDB4ZTAsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDM2LCAweDYsIDB4ZjcsIDB4ZCwgMHhmZCwgMHgxMiwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4M2IsIDB4YSwgMHhiMSwgMHhmNywgMHg0OCwgMHg2YSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGEsIDB4MTMsIDB4YmIsIDB4ZjcsIDB4YjIsIDB4ZjgsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg2MywgMHhhZSwgMHg2ZCwgMHhiYSwgMHhjNiwgMHhjNywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweGI1LCAweDZhLCAweGFhLCAweDViLCAweDRkLCAweDUxLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4MWUsIDB4YzksIDB4OTUsIDB4MTUsIDB4MTMsIDB4NzcsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhhMCwgMHhhMywgMHg5YywgMHg5YSwgMHg4MSwgMHg3ZCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDc1LCAweDczLCAweDdiLCAweDdjLCAweDk3LCAweDk4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4ZmMsIDB4Y2UsIDB4MjIsIDB4YSwgMHgxMywgMHhiYiwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4N2IsIDB4OTgsIDB4Y2UsIDB4MTUsIDB4MTMsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhhLCAweDdjLCAweGMxLCAweGY3LCAweDM5LCAweGMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YzIsIDB4MSwgMHg5MywgMHhjNiwgMHgzLCAweGY3LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4MTUsIDB4NTgsIDB4OTMsIDB4YjcsIDB4NjMsIDB4ZGEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhiYiwgMHg5NiwgMHg5NiwgMHhiMywgMHgxZiwgMHg4YSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODIsIDB4NmEsIDB4NjIsIDB4N2UsIDB4NjcsIDB4MWIsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhiYywgMHhjYywgMHg4ZCwgMHgxZiwgMHg5NywgMHg4ZiwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDk4LCAweDFlLCAweDhjLCAweDk4LCAweDUsIDB4ZjcsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDkzLCAweGFkLCAweDkwLCAweGE0LCAweGFmLCAweDFhLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4ZDAsIDB4MzMsIDB4NTQsIDB4NjUsIDB4NzEsIDB4NjIsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg5OSwgMHg4OCwgMHg4OCwgMHhjMCwgMHgyYiwgMHgxYiwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDdlLCAweDdiLCAweDVjLCAweDFmLCAweDU2LCAweDcsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhiNiwgMHg5OSwgMHhiNCwgMHgxYiwgMHhiZiwgMHg5YywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDhjLCAweDFmLCAweDgwLCAweDhiLCAweDczLCAweDg3LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODUsIDB4NzIsIDB4NSwgMHg4ZiwgMHg3NiwgMHg3NSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDFiLCAweDJjLCAweDhhLCAweGZiLCAweDcsIDB4NTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDFhLCAweDQ4LCAweGJlLCAweDZkLCAweGMxLCAweGE1LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZTEsIDB4YmMsIDB4MWUsIDB4Y2UsIDB4ZjcsIDB4NGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHg5YiwgMHhiZSwgMHhjYSwgMHhjOSwgMHgxYiwgMHhkNSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDU5LCAweDg3LCAweDFmLCAweGZiLCAweGFkLCAweGZiLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzUsIDB4N2IsIDB4NTgsIDB4NDksIDB4NGIsIDB4MWIsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhhMCwgMHhhZiwgMHhkNywgMHhkNywgMHhhNywgMHhjNSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGE3LCAweGFhLCAweDkyLCAweDg3LCAweDk2LCAweDFmLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxYywgMHg3NiwgMHhmNywgMHgzYSwgMHhiZSwgMHhmNywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDhhLCAweDc3LCAweDEyLCAweGI5LCAweGM1LCAweDEzLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4ZmIsIDB4MWUsIDB4MTUsIDB4N2MsIDB4YTEsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg5ZCwgMHgxYiwgMHhiZSwgMHhiMywgMHhhYSwgMHhiZiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGE5LCAweDdkLCAweDkwLCAweDFmLCAweDkwLCAweGEzLCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ZDMsIDB4YTksIDB4Y2IsIDB4YjMsIDB4MTksIDB4ODAsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDc2LCAweDZjLCAweDMxLCAweDU1LCAweDM4LCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4NjcsIDB4ZGEsIDB4YzgsIDB4ZTMsIDB4ZjIsIDB4ZWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHhjNSwgMHhiZSwgMHg3ZiwgMHg2OSwgMHhiMCwgMHgxZiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDUxLCAweGEsIDB4MTMsIDB4ZDgsIDB4YjAsIDB4ZjcsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhhLCAweDgyLCAweDYwLCAweDUsIDB4MTMsIDB4ZTgsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg1ZCwgMHg5YSwgMHg1MCwgMHgxYiwgMHhmYiwgMHg1OCwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFiLCAweGZiLCAweDEwLCAweDI2LCAweGQ3LCAweDRkLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4MWYsIDB4NzcsIDB4NDQsIDB4NSwgMHg4ZCwgMHg5MCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDkzLCAweDFiLCAweDk4LCAweDk4LCAweDdlLCAweDgwLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4N2QsIDB4NzcsIDB4N2YsIDB4NzcsIDB4OTEsIDB4OTYsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDdjLCAweGMyLCAweGY3LCAweDM0LCAweGM0LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhjNSwgMHgzLCAweGY3LCAweDdkLCAweGY4LCAweGU5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTgsIDB4MjUsIDB4OWQsIDB4YTksIDB4ZmIsIDB4ODgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg1LCAweGZiLCAweDM5LCAweGZjLCAweDZiLCAweDI3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhjMiwgMHhmNywgMHgzMywgMHhjNSwgMHg3ZiwgMHhhLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg3OCwgMHhmOCwgMHg4MiwgMHgxNSwgMHhmNywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweDc3LCAweGQ2LCAweGZiLCAweGMyLCAweGZiLCAweDI2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhmYiwgMHhkOSwgMHgyNywgMHhhLCAweDdjLCAweGMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4YzQsIDB4ZjcsIDB4MmMsIDB4YzQsIDB4ZjcsIDB4MTgsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGMxLCAweGM1LCAweGY4LCAweGIsIDB4YzYsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGY4LCAweDg2LCAweDE1LCAweGIxLCAweDc5LCAweGY3LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YSwgMHhmNywgMHhmLCAweGZiLCAweGEsIDB4YjgsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5LCAweGY3LCAweDMwLCAweDg5LCAweGEsIDB4ZmIsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg1OSwgMHgyNywgMHhhLCAweDdjLCAweGJkLCAweGY3LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4ZjcsIDB4MzIsIDB4NzYsIDB4ZjcsIDB4MWMsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YzEsIDB4YzUsIDB4ZjcsIDB4MTYsIDB4ZTMsIDB4Y2MsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhjNiwgMHgzLCAweGY4LCAweDFmLCAweGY4LCAweGE2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4NmUsIDB4YSwgMHgzMywgMHg2LCAweGZiLCAweDQ1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxNSwgMHhlMywgMHg2ZSwgMHhhLCAweDMzLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhmYywgMHg1MCwgMHgyNywgMHhhLCAweDZmLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg3NywgMHgxLCAweGY3LCAweDgyLCAweGY4LCAweGU4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTMsIDB4MjUsIDB4OWMsIDB4YWIsIDB4ZmIsIDB4NzUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHg1LCAweGZiLCAweDYxLCAweGZkLCAweDM0LCAweDMzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhhLCAweGY3LCAweDdmLCAweDc3LCAweDEsIDB4ZGIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxMywgMHg0NiwgMHhhLCAweGZiLCAweDNhLCAweDYsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxMiwgMHg1LCAweGZiLCAweDRmLCAweDY3LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg2LCAweDRlLCAweGZiLCAweGRiLCAweDUsIDB4ZmIsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDJmLCAweGY4LCAweDRiLCAweDE1LCAweGY3LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4NzAsIDB4ZDcsIDB4ZmIsIDB4OWQsIDB4ZmIsIDB4MjYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NmYsIDB4YSwgMHhmNywgMHg2ZCwgMHg3NywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4ZjgsIDB4ODYsIDB4MTUsIDB4YWYsIDB4NzksIDB4ZjcsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweGY3LCAweDksIDB4ZmIsIDB4YSwgMHhiOCwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUsIDB4ZjcsIDB4MzAsIDB4NSwgMHgzZSwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4ZmQsIDB4MjIsIDB4MzMsIDB4YSwgMHg2ZiwgMHhhLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHgxLCAweGY4LCAweDJjLCAweGY4LCAweDljLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4NmUsIDB4YSwgMHgzMiwgMHg2LCAweGZiLCAweDRiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxNSwgMHhlNiwgMHg2ZSwgMHhhLCAweDMxLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhmZCwgMHhmLCAweDMzLCAweGEsIDB4N2MsIDB4YmUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhiZiwgMHhmNywgMHg3ZiwgMHg3NywgMHgxLCAweGFhLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MmYsIDB4Y2UsIDB4MywgMHhmNywgMHg5YiwgMHhmOCwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDEzLCAweGM2LCAweGQyLCAweDVkLCAweGFkLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4N2QsIDB4MTksIDB4YWEsIDB4NjksIDB4NGMsIDB4OWUsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHg2NiwgMHgyMywgMHhmYiwgMHgxMSwgMHhmYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGU1LCAweDU1LCAweGY3LCAweDE1LCAweGY3LCAweDZlLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4ZjcsIDB4MzUsIDB4ZDksIDB4NmMsIDB4ZWYsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHgxZiwgMHhmMiwgMHhiZCwgMHg3OCwgMHhiOCwgMHhmYiwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDY2LCAweDlkLCAweDYyLCAweGEyLCAweDVkLCAweDkwLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4NWQsIDB4YWMsIDB4ODgsIDB4YWYsIDB4NzksIDB4YTksIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHgzMSwgMHg1ZiwgMHg1LCAweGZiLCAweDJmLCAweGZiLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4NywgMHhmNywgMHgxLCAweGQ5LCAweGY3LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OTIsIDB4NiwgMHhmNywgMHgxOCwgMHhiMSwgMHg1YywgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGZiLCAweGEsIDB4MmEsIDB4ZmIsIDB4ZSwgMHgyNywgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGQxLCAweDFmLCAweGUsIDB4OGIsIDB4YmYsIDB4ZjcsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhkYiwgMHhiYiwgMHg5YiwgMHhiZiwgMHgxLCAweGVhLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTksIDB4YzMsIDB4MywgMHhmNywgMHg0NSwgMHhmOCwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGJiLCAweDdkLCAweDUsIDB4OWEsIDB4OTIsIDB4YjksIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHgxYiwgMHhhYSwgMHg5YiwgMHg3OSwgMHg3YSwgMHg5ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDliLCAweDllLCAweDdkLCAweGFlLCAweDFiLCAweGNiLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4YzIsIDB4YTksIDB4MWYsIDB4NTksIDB4OTcsIDB4NSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDVlLCAweDYyLCAweDY1LCAweDFiLCAweDczLCAweDdlLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4N2MsIDB4MWYsIDB4OWQsIDB4N2EsIDB4NzgsIDB4OWYsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg1NiwgMHg0ZSwgMHg2NSwgMHg0YiwgMHg2OCwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGZjLCAweDk2LCAweDE1LCAweGY3LCAweDc2LCAweDYsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHg1LCAweDM1LCAweDYsIDB4YmIsIDB4ZjcsIDB4N2MsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGMwLCAweGRhLCAweGI3LCAweGNhLCAweDFiLCAweGIxLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NWYsIDB4ODQsIDB4OGIsIDB4ODIsIDB4ODksIDB4ODIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhmYiwgMHg4NSwgMHg1LCAweDM3LCAweDgyLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2LCAweDk3LCAweGJmLCAweDUsIDB4MzcsIDB4NiwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg2LCAweDUsIDB4OGUsIDB4OTgsIDB4OGQsIDB4OTcsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhjNSwgMHg4YywgMHg2NywgMHhhZSwgMHgzOCwgMHgxYiwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDY1LCAweDVmLCAweDRkLCAweDFmLCAweDlhLCAweGQwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMSwgMHg2LCAweDgwLCAweDU2LCAweDUsIDB4ZTAsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGZiLCAweGM1LCAweDUsIDB4MzYsIDB4NiwgMHhlLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg3ZCwgMHhmOCwgMHhlNywgMHgxNSwgMHhmNywgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDlhLCAweGFhLCAweGZiLCAweDczLCAweGY3LCAweDJhLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3MywgMHhmYywgMHg5MCwgMHgyOSwgMHhhLCAweGUsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGM0LCAweGY3LCAweDM4LCAweDI5LCAweGEsIDB4ZjcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjYywgMHgxNSwgMHhmNywgMHhiYSwgMHhlYSwgMHg3YiwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGI5LCAweGZiLCAweDJhLCAweDUsIDB4ZSwgMHg1ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjIsIDB4NzcsIDB4NDksIDB4YSwgMHhmNywgMHg0MywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDE1LCAweGFlLCAweDc5LCAweGY3LCAweDM4LCAweGY3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4LCAweGZiLCAweGIsIDB4YjcsIDB4OWQsIDB4ZmIsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweDUsIDB4M2YsIDB4NiwgMHhmYiwgMHhiNSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDI5LCAweGEsIDB4ZSwgMHg1ZCwgMHhhLCAweGM5LCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YmMsIDB4NDksIDB4YSwgMHhmNywgMHgyYywgMHhmOCwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGJiLCAweDgwLCAweDUsIDB4OWEsIDB4OTEsIDB4YjYsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHgxYiwgMHhhMywgMHg5YywgMHg3YywgMHg3YiwgMHg5ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDlmLCAweDlmLCAweDc4LCAweGFhLCAweDFiLCAweGM4LCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4YzIsIDB4YTgsIDB4MWYsIDB4NWIsIDB4OTQsIDB4NSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDYzLCAweDY1LCAweDY3LCAweDFiLCAweDc1LCAweDdiLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4N2MsIDB4MWYsIDB4OWUsIDB4NzUsIDB4NzYsIDB4OWYsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg1OSwgMHg1MCwgMHg2NywgMHg0YSwgMHg2OSwgMHgxZiwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGZkLCAweDI5LCAweGEsIDB4ZSwgMHg1ZCwgMHhhLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHg0OSwgMHhhLCAweGY4LCAweDExLCAweGY4LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZGEsIDB4NiwgMHhhMywgMHhmNywgMHg3LCAweDg5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzOCwgMHhmYiwgMHg3LCAweDE1LCAweGRjLCAweDYsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3LCAweDUsIDB4M2EsIDB4NiwgMHhmYiwgMHg2MiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDI5LCAweGEsIDB4ZSwgMHhjNiwgMHg3NiwgMHhmNywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGY3LCAweDQ1LCAweDc3LCAweDEsIDB4ZjcsIDB4YWQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg2YywgMHhhLCAweDlmLCAweDc1LCAweDcxLCAweDZmLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MWUsIDB4ZmIsIDB4NWMsIDB4ZmIsIDB4NDcsIDB4MTUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHg2LCAweDk2LCAweGM2LCAweDUsIDB4ZmMsIDB4M2UsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFiLCAweGZiLCAweDY0LCAweDZjLCAweGEsIDB4OWQsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg2ZiwgMHg3MiwgMHg2ZCwgMHgxZSwgMHhlLCAweDdmLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NzYsIDB4ZjgsIDB4MmUsIDB4YzIsIDB4OGUsIDB4NzcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg2MCwgMHhhMywgMHhhMywgMHgxNSwgMHhhNywgMHg2MiwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDUsIDB4MTMsIDB4OTAsIDB4NjksIDB4YjEsIDB4YzAsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgxYiwgMHhmNywgMHgxNCwgMHhmNywgMHhmLCAweGRkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4YTYsIDB4MWYsIDB4OTUsIDB4YmYsIDB4ODYsIDB4YmYsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhjOCwgMHhiYywgMHgxOCwgMHg2ZiwgMHhiNCwgMHg0YywgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MTMsIDB4YTAsIDB4YWMsIDB4NjUsIDB4NWEsIDB4OWEsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgyZCwgMHgyMSwgMHgyMiwgMHhmYiwgMHgxMSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDgyLCAweDU1LCAweDkxLCAweDU0LCAweGE2LCAweDY1LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHg4ZCwgMHgxNSwgMHhmNywgMHhjNiwgMHhmNywgMHg4ZCwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDhmLCAweDY2LCAweDgzLCAweDY1LCAweDE5LCAweDdlLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2OCwgMHg3ZCwgMHg1MiwgMHgyZSwgMHhmYiwgMHgxOCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDY2LCAweDkzLCAweGEwLCAweDZmLCAweDFmLCAweDY5LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzgsIDB4YTcsIDB4ODYsIDB4YjMsIDB4OTIsIDB4YjMsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDlmLCAweGVhLCAweGNmLCAweGYzLCAweDFiLCAweGFhLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4NzIsIDB4YWIsIDB4MWYsIDB4ZSwgMHg0ZSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NzcsIDB4MTIsIDB4ZTgsIDB4YzYsIDB4MTMsIDB4YjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhmOCwgMHhlYSwgMHgxNSwgMHhmNywgMHg5YywgMHgyMSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGZiLCAweDdjLCAweGY3LCAweDI2LCAweDUsIDB4ZmIsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiOCwgMHgyNCwgMHhhLCAweDRlLCAweGEsIDB4ZjcsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhkZCwgMHhjNiwgMHgxMywgMHhiOCwgMHhmNywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDgxLCAweDE1LCAweGY3LCAweGQ0LCAweGYzLCAweDc3LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YzcsIDB4ZmIsIDB4MjAsIDB4NSwgMHhmYiwgMHgzYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDI0LCAweGEsIDB4NGUsIDB4YSwgMHhmNywgMHg4MiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGU4LCAweGM2LCAweDEzLCAweGI4LCAweGY3LCAweDM5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4MTUsIDB4YWYsIDB4N2EsIDB4ZjcsIDB4M2QsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4ZmIsIDB4YiwgMHhiOCwgMHg5YywgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzIsIDB4NSwgMHgzZCwgMHg2LCAweGZiLCAweGFhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4MjQsIDB4YSwgMHg0ZSwgMHhhLCAweGU4LCAweGY3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhlOCwgMHhjNiwgMHgxMywgMHhiOCwgMHhmOCwgMHgxMCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDE1LCAweGRjLCAweDYsIDB4YTMsIDB4ZjcsIDB4OCwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4M2QsIDB4ZmIsIDB4OCwgMHgxNSwgMHhkZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4ZjcsIDB4OCwgMHg3YiwgMHhhLCAweGZiLCAweDU2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4MjQsIDB4YSwgMHhmYiwgMHgzMSwgMHhjMSwgMHhmOCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDEsIDB4ZTAsIDB4Y2IsIDB4ZjcsIDB4ZjYsIDB4Y2IsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcwLCAweGY4LCAweDg5LCAweDE1LCAweGY3LCAweGRiLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZDIsIDB4ZmIsIDB4Y2MsIDB4ZmIsIDB4MjAsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweGZkLCAweGYsIDB4MTUsIDB4N2YsIDB4NTUsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDJhLCAweGEsIDB4MzEsIDB4NiwgMHhmOCwgMHgzNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDUsIDB4Y2UsIDB4NGQsIDB4YSwgMHhmYiwgMHg1MiwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YzYsIDB4NiwgMHhmYiwgMHg4MiwgMHhmYiwgMHhhMSwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGExLCAweDUsIDB4Y2YsIDB4NGQsIDB4YSwgMHhmYiwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGEsIDB4ZDMsIDB4NiwgMHhmNywgMHhmLCAweGZiLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWUsIDB4ZmIsIDB4MzAsIDB4NSwgMHhlLCAweGZiLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4ZjcsIDB4YywgMHhjMSwgMHhmNywgMHhlMSwgMHhjMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YzAsIDB4MSwgMHhkYywgMHhjMiwgMHhmOCwgMHgzYSwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ODgsIDB4MjMsIDB4MTUsIDB4ODAsIDB4NTYsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDgwLCAweGEsIDB4ZmIsIDB4MmYsIDB4NiwgMHhiNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDUsIDB4NjUsIDB4YTMsIDB4YjksIDB4NTksIDB4ZTcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMiwgMHhmNywgMHgxOCwgMHhmNywgMHgxMSwgMHhmNywgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweDM3LCAweGM5LCAweDJjLCAweDM0LCAweDQ5LCAweDcxLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4MWYsIDB4YmMsIDB4ZjcsIDB4ODcsIDB4NSwgMHhmYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4N2YsIDB4NTYsIDB4NSwgMHhkZiwgMHg2LCAweGZiLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4M2MsIDB4NSwgMHhmNywgMHgxNywgMHhmNywgMHhmMywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDlkLCAweGRiLCAweGQwLCAweGY3LCAweDEsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGE1LCAweDNjLCAweDUyLCAweGZiLCAweGEsIDB4ZmIsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDM0LCAweDJkLCAweDRjLCAweGQ4LCAweGVmLCAweGEwLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHgzMSwgMHhiZCwgMHhmOCwgMHg2NCwgMHhiYywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4MSwgMHhmOCwgMHgxNSwgMHhmOCwgMHg4MSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDYsIDB4YTQsIDB4ZjcsIDB4NCwgMHg1LCAweDMzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0YiwgMHhmYiwgMHg0LCAweDE1LCAweGU2LCAweDYsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweDUsIDB4MzEsIDB4NiwgMHhmYiwgMHhiMCwgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDE1LCAweDdmLCAweDU5LCAweDUsIDB4ZjcsIDB4YTIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGJkLCAweDUsIDB4MzAsIDB4NiwgMHhmOCwgMHgzNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDUsIDB4Y2UsIDB4NiwgMHg5NiwgMHhiYywgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NiwgMHg3ZiwgMHg1YSwgMHg1LCAweGM2LCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhmYiwgMHg5NywgMHgyNCwgMHhmNywgMHg5NywgMHg1LCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg5NSwgMHhiYywgMHg1LCAweGZiLCAweDVmLCAweDYsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg1LCAweGQyLCAweDYsIDB4ZjcsIDB4ZiwgMHhmYiwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFlLCAweGZiLCAweDMwLCAweDUsIDB4ZSwgMHg4YiwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDNlLCAweGMyLCAweGNmLCAweGY3LCAweDUsIDB4MSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDQ0LCAweGEsIDB4ZjgsIDB4M2UsIDB4MzcsIDB4YSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDUsIDB4ZmIsIDB4NDUsIDB4NiwgMHhmNywgMHhhOCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDE1LCAweGU2LCAweDYsIDB4YTQsIDB4ZjcsIDB4NSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4NiwgMHhlLCAweDhiLCAweGMxLCAweGY3LCAweGQyLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHhhYiwgMHhjMywgMHgzLCAweGU1LCAweDE2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4MmEsIDB4YSwgMHhmYiwgMHg0MywgMHg2LCAweGQ0LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg1LCAweGZiLCAweDViLCAweDVmLCAweGEsIDB4ZjcsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDRiLCAweGZiLCAweGQyLCAweDUsIDB4ZmIsIDB4NDYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2EsIDB4YzEsIDB4NjksIDB4NzYsIDB4ZjgsIDB4YTIsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHgyMywgMHhjNiwgMHhmNywgMHhkNSwgMHhjMSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDY4LCAweDdhLCAweDE1LCAweGY3LCAweDU2LCAweDQ3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHg2LCAweGVjLCAweGY4LCAweDZiLCAweDUsIDB4YzksIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDRlLCAweDQ1LCAweGEsIDB4Y2MsIDB4NiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDZiLCAweDUsIDB4NDYsIDB4NiwgMHhmNywgMHg5MiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweDc4LCAweDY3LCAweGEzLCAweGE4LCAweDYzLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4MTMsIDB4OTgsIDB4N2MsIDB4YSwgMHhiYSwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NjYsIDB4MzgsIDB4YSwgMHhmNywgMHgxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhmYiwgMHhkYywgMHg1LCAweDNhLCAweDdiLCAweDg4LCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4MWIsIDB4NzEsIDB4NWIsIDB4OTEsIDB4ZjcsIDB4ZSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDlhLCAweGU2LCAweDcxLCAweGEsIDB4ZSwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY4LCAweDg0LCAweGM0LCAweGU0LCAweGY3LCAweGEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDdmLCAweGY4LCAweGFmLCAweDU0LCAweGEsIDB4ZmIsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHhiMiwgMHgxNSwgMHg4MSwgMHhhOCwgMHhhMSwgMHg4NSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGY2LCAweDkyLCAweGI2LCAweGY3LCAweDEyLCAweGFkLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4ZjgsIDB4NDUsIDB4NSwgMHhmYiwgMHgyNSwgMHg4MiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4NiwgMHgzOSwgMHhmYywgMHgzLCAweDc0LCAweDJlLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NWMsIDB4ODksIDB4MTksIDB4NmMsIDB4OGEsIDB4N2MsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg5MiwgMHg4LCAweGZiLCAweDkzLCAweDgxLCAweDE1LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4NSwgMHhmNywgMHgzYywgMHg2LCAweDk4LCAweGMxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHg2LCAweGY3LCAweDEsIDB4ZjgsIDB4ODQsIDB4NSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGEsIDB4ZmIsIDB4M2UsIDB4MzgsIDB4YSwgMHhjMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MSwgMHhmYywgMHg4NCwgMHg1LCAweGY3LCAweDE3LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4NTQsIDB4YSwgMHhlLCAweDNlLCAweGEsIDB4OWYsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg5MSwgMHg2LCAweGJlLCAweGY3LCAweDkxLCAweDcxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHhmYiwgMHg1YiwgMHg1LCAweGZiLCAweGIyLCAweDYsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZSwgMHhmNywgMHg1MywgMHhkMSwgMHg5NiwgMHhjMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDQ0LCAweGI2LCAweGY3LCAweDZhLCAweDUsIDB4ZjcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhhLCAweGZiLCAweGI2LCAweDQ1LCAweGEsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NWMsIDB4ZmIsIDB4ODAsIDB4MzAsIDB4NjksIDB4ODAsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhhZCwgMHg2YiwgMHhmYiwgMHgzOCwgMHg1NywgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhjMiwgMHhmOCwgMHg5YiwgMHhjMiwgMHgxLCAweGMzLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NTcsIDB4NiwgMHg5OCwgMHhjMiwgMHg1LCAweGZiLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiZiwgMHhmNywgMHg4OSwgMHhmNywgMHgyZSwgMHhjMCwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGZiLCAweDJkLCAweDU2LCAweGM1LCAweGY3LCAweGE2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5MCwgMHg1NiwgMHhhLCAweGY3LCAweDUzLCAweDYsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4NSwgMHhmYiwgMHgzMywgMHg1NSwgMHg4MCwgMHg1NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGMwLCAweDU5LCAweGZiLCAweDczLCAweDUsIDB4ZmIsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4OGIsIDB4YzEsIDB4ZjcsIDB4NWIsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhjMSwgMHgxLCAweDg1LCAweGMzLCAweDMsIDB4ZjcsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHgxNSwgMHhiMiwgMHhmNywgMHg1YiwgMHg1LCAweGRhLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhjMSwgMHg2LCAweGFjLCAweGY3LCAweDNhLCAweDUsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhhLCAweDNjLCAweDYsIDB4YjIsIDB4ZjcsIDB4NWMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJhLCAweDYsIDB4NzgsIDB4MjcsIDB4NmEsIDB4YSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJlLCAweDUsIDB4ZmIsIDB4YTUsIDB4NiwgMHhmYiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNkLCAweGZiLCAweDIxLCAweGZiLCAweDZhLCAweGZiLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgyYiwgMHhmNywgMHgzMiwgMHgxZiwgMHhmNywgMHhiNSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4ZjcsIDB4MmMsIDB4NTIsIDB4YSwgMHg3NywgMHgyOSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjIsIDB4MTYsIDB4ZmIsIDB4MjUsIDB4NTcsIDB4YzksIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZSwgMHhmNywgMHgyYywgMHhmNywgMHhjLCAweGY3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MWYsIDB4ZSwgMHg3YywgMHhjMiwgMHhmNywgMHgzOCwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweGMyLCAweDEsIDB4OWUsIDB4YzIsIDB4ZjcsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhmNywgMHg1NywgMHhjMiwgMHgzLCAweGY3LCAweGFkLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NTcsIDB4OWIsIDB4YWEsIDB4NjgsIDB4ZDUsIDB4MWIsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg5NywgMHg5NiwgMHhiMiwgMHgxZiwgMHhjMiwgMHg3LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NjIsIDB4N2QsIDB4NjgsIDB4MWIsIDB4NGMsIDB4NjQsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHg5OSwgMHg4ZSwgMHhhNSwgMHg4ZiwgMHg5YSwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDYsIDB4OTQsIDB4YWEsIDB4OTAsIDB4YTIsIDB4YWUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHg3OCwgMHhkNCwgMHgzNiwgMHg0NiwgMHg1ZiwgMHg1YSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDFlLCAweGJhLCAweDgwLCAweDY5LCAweGFiLCAweDRiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmYsIDB4NTAsIDB4ZmIsIDB4NWMsIDB4ZmIsIDB4MTEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGUzLCAweDgwLCAweGE4LCAweGUzLCAweGI3LCAweGNiLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4MWYsIDB4YzcsIDB4ZjcsIDB4NGUsIDB4MTUsIDB4Y2IsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhjYiwgMHhjNywgMHgxYiwgMHhkMSwgMHg4MiwgMHgzZCwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDFmLCAweGZjLCAweDU3LCAweGZiLCAweGYsIDB4MTUsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhmNywgMHgzMSwgMHhlYywgMHhlMiwgMHg3ZSwgMHgyOSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDFlLCAweDQ3LCAweDdmLCAweDc1LCAweGZiLCAweDksIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0ZCwgMHg4MiwgMHhiYywgMHhiOSwgMHgxZiwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4NzYsIDB4ZjcsIDB4NzAsIDB4YzYsIDB4ZjcsIDB4MzYsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYSwgMHhjOCwgMHg5MSwgMHg3NywgMHgxMiwgMHhlYiwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQwLCAweGNmLCAweDEzLCAweGY2LCAweDk4LCAweGNmLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4NiwgMHg5NywgMHhjNywgMHhiYSwgMHg3NSwgMHhiOCwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDg1LCAweDE5LCAweDc4LCAweDM4LCAweDUsIDB4OTAsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg4YywgMHg5NCwgMHgxYiwgMHg5YiwgMHg5OCwgMHg4MCwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDg0LCAweDZkLCAweDY4LCAweDdhLCAweDc5LCAweDhmLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4MWYsIDB4NmMsIDB4NTAsIDB4NSwgMHg4MiwgMHg5MSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGFkLCAweDFiLCAweGJiLCAweGM5LCAweGI1LCAweGUxLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YWYsIDB4NzMsIDB4OTYsIDB4MWYsIDB4OGUsIDB4OWQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweDkxLCAweGUyLCAweGJhLCAweGY2LCAweDFhLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4YjgsIDB4MzQsIDB4OTAsIDB4MWUsIDB4M2MsIDB4OGYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3ZiwgMHhlNSwgMHgxYSwgMHhjNywgMHhmNywgMHhjLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4Y2MsIDB4YzgsIDB4NzMsIDB4NmUsIDB4YjcsIDB4MWUsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHg1LCAweGM5LCAweDYsIDB4MTMsIDB4ZWUsIDB4YWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHg1LCAweDRkLCAweDYsIDB4ODIsIDB4NTQsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweGE4LCAweDViLCAweDRlLCAweDlmLCAweDRhLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZmIsIDB4OCwgMHg1MCwgMHgzMCwgMHhmYiwgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDhiLCAweGYzLCAweDg3LCAweDFmLCAweGRmLCAweDg4LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NWEsIDB4MWEsIDB4MzUsIDB4ZmIsIDB4MjIsIDB4ODksIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg1MywgMHhhZCwgMHhiNCwgMHg1YiwgMHgxZSwgMHg5NiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NGIsIDB4NiwgMHhlLCAweGZiLCAweDE2LCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4YmEsIDB4ZjcsIDB4MTcsIDB4YjksIDB4ZjcsIDB4MWIsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg3NywgMHgxMiwgMHhmNywgMHhhLCAweGM4LCAweGY3LCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4MTMsIDB4ZjYsIDB4YmEsIDB4YTYsIDB4MTUsIDB4YzIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGJiLCAweGI1LCAweDdhLCAweGI1LCAweDc2LCAweGNkLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4N2IsIDB4NDcsIDB4NSwgMHg4ZSwgMHg5MiwgMHg5MiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDFiLCAweDlhLCAweDk5LCAweDgyLCAweDdmLCAweDgwLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NmMsIDB4N2MsIDB4N2IsIDB4OGUsIDB4OTIsIDB4ODAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg1YywgMHg1LCAweDgzLCAweDkwLCAweGEzLCAweDdjLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YjUsIDB4YzIsIDB4YWMsIDB4ZDAsIDB4MWYsIDB4OGEsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhhYSwgMHg3NiwgMHg5NCwgMHg4ZCwgMHg5YSwgMHgxOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDkwLCAweGQ4LCAweGIwLCAweGUyLCAweDFhLCAweDhjLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4YWYsIDB4M2QsIDB4OGYsIDB4OCwgMHg0NSwgMHg4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ODIsIDB4ZDQsIDB4MWEsIDB4YmMsIDB4ZjUsIDB4OWUsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhjMiwgMHg3OCwgMHg3MywgMHhiMiwgMHgxZSwgMHg4MCwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YzEsIDB4NiwgMHgxMywgMHhlZSwgMHhhYSwgMHhmNywgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NTUsIDB4NiwgMHg4MywgMHg1ZiwgMHg1LCAweDEzLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4NjEsIDB4NTQsIDB4OWMsIDB4NTIsIDB4MWIsIDB4ZmIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDViLCAweDQxLCAweDIxLCAweGY3LCAweDEwLCAweDhiLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4MWYsIDB4ZDUsIDB4ODksIDB4YmUsIDB4NzksIDB4NjMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHhmYiwgMHgxMywgMHg4OSwgMHg1YywgMHg0OSwgMHg1OSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDYwLCAweDFlLCAweDk1LCAweGI2LCAweDYyLCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGMyLCAweGY4LCAweDdkLCAweGMyLCAweDhiLCAweGI5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4NzcsIDB4MTIsIDB4ZjQsIDB4YzcsIDB4ZjcsIDB4YTcsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHg4YywgMHg4MSwgMHgxNSwgMHhjNCwgMHg3OCwgMHhhLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4ZTksIDB4N2EsIDB4YjksIDB4MWIsIDB4ZjcsIDB4OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4YWUsIDB4ZjcsIDB4MjEsIDB4ZTYsIDB4MzgsIDB4YTgsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHgxZiwgMHg0NSwgMHg5YywgMHgyNSwgMHg5OCwgMHhkZSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGNkLCAweGIyLCAweGVlLCAweGMxLCAweGNmLCAweDcxLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MWUsIDB4N2EsIDB4M2EsIDB4NSwgMHhjNiwgMHg2LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTAsIDB4NzEsIDB4YSwgMHg4MywgMHg2MywgMHg1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4YTcsIDB4NjksIDB4NDUsIDB4YTAsIDB4NTYsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHg0MCwgMHg0YywgMHhmYiwgMHgzLCAweGZiLCAweGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg3NCwgMHhkYywgMHg3OSwgMHgxZiwgMHhjZSwgMHg3ZCwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDYxLCAweDFhLCAweDQ5LCAweDRlLCAweDU2LCAweGZiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHgzZSwgMHhhNywgMHhiMywgMHg2MCwgMHgxZSwgMHg5OSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGEsIDB4ZjcsIDB4YmIsIDB4ZjgsIDB4NTgsIDB4MTUsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDRiLCAweGY3LCAweDM2LCAweDYyLCAweDlkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZmIsIDB4ZCwgMHhmYiwgMHgxYiwgMHhmNywgMHhkLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NSwgMHhlLCAweDdjLCAweGMyLCAweDhiLCAweGY3LCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4YmYsIDB4OGIsIDB4ZjcsIDB4MmEsIDB4OGIsIDB4YzIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhmNywgMHg0NiwgMHg3NywgMHgxLCAweGYzLCAweGM0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YzYsIDB4MywgMHhmNywgMHhjNSwgMHhmOCwgMHg3ZiwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NDksIDB4ZjcsIDB4MzIsIDB4NjQsIDB4OWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhmYiwgMHg0LCAweGZiLCAweDE3LCAweGY3LCAweDMsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg1LCAweGZiLCAweDJjLCAweGZkLCAweDJiLCAweDE1LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4YSwgMHg3NCwgMHhiOCwgMHhiNSwgMHg2YiwgMHhkZCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFlLCAweGUyLCAweGI1LCAweGYyLCAweDFmLCAweDhjLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4YjUsIDB4NDAsIDB4OGYsIDB4OCwgMHg0NywgMHg4ZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4ODAsIDB4ZGMsIDB4MWEsIDB4YzEsIDB4ZjMsIDB4YTEsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhiZiwgMHg3NSwgMHg3MCwgMHhiMSwgMHgxZSwgMHg4MCwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YzEsIDB4NiwgMHhhYiwgMHhmNywgMHgzNCwgMHg1LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4MiwgMHg1OSwgMHg1LCAweGE2LCAweDYyLCAweDU3LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4MWIsIDB4ZmIsIDB4NCwgMHgyNywgMHg1NiwgMHgzOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4ZjcsIDB4YywgMHg4YiwgMHhlNSwgMHg4NywgMHgxZiwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGJhLCAweDc4LCAweDVmLCAweDFhLCAweDNlLCAweGZiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg1ZCwgMHg0YSwgMHg1YiwgMHhhOCwgMHhiMSwgMHg2MiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGJjLCAweDUyLCAweGEsIDB4ZSwgMHg4YiwgMHhjMSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGMxLCAweGVlLCAweGY3LCAweDksIDB4MSwgMHhmNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDJjLCAweDE1LCAweGUyLCAweDYsIDB4YTQsIDB4ZjcsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MzUsIDB4NiwgMHhmYiwgMHg0NCwgMHhmYiwgMHg5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4NiwgMHhhNiwgMHhmNywgMHg5LCAweDUsIDB4MzQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDU1LCAweGZkLCAweGExLCAweDE1LCAweDMxLCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGMyLCAweGY4LCAweDYzLCAweGMyLCAweDhiLCAweGMxLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4MSwgMHhmNywgMHg2LCAweGMzLCAweGY3LCAweGExLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhhMCwgMHgxNiwgMHhmOCwgMHg0MSwgMHg2LCAweGI1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NSwgMHg1NiwgMHg2LCAweDZiLCAweGZiLCAweDJjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjNCwgMHg2LCAweGY4LCAweDRmLCAweGY4LCAweDY2LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NSwgMHhmYywgMHgyNiwgMHg2LCAweDYzLCAweGZiLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4YSwgMHhhOSwgMHhmNywgMHgxZSwgMHg1LCAweGY3LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYywgMHg0ZSwgMHhmYywgMHg2NCwgMHg1LCAweGY3LCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZDEsIDB4NDgsIDB4YSwgMHg4YiwgMHhjMiwgMHhmNywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDhiLCAweGMzLCAweGY3LCAweDQ3LCAweDc3LCAweDEyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4ZjgsIDB4N2UsIDB4NGMsIDB4YSwgMHhmYiwgMHgyOCwgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDE1LCAweGY4LCAweDJiLCAweDYsIDB4YWEsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHhhLCAweDc3LCAweDI1LCAweDUsIDB4ZmIsIDB4YTcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDFkLCAweGY3LCAweGRjLCAweDk1LCAweGJlLCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHhmYywgMHgxYSwgMHg2LCAweDZkLCAweGZiLCAweDJlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg2LCAweDlmLCAweGVlLCAweDUsIDB4ZjcsIDB4OTUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDFjLCAweGZiLCAweGRiLCAweDUsIDB4ZSwgMHhmYiwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGY4LCAweDRmLCAweGM1LCAweGY3LCAweDJkLCAweGJmLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgzNywgMHgxNSwgMHg2NywgMHg1MCwgMHg1LCAweGY3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YjMsIDB4ZjcsIDB4MTksIDB4YmQsIDB4MWYsIDB4ZjcsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkZCwgMHg1LCAweGY3LCAweDIsIDB4NiwgMHg5ZSwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweGEsIDB4ZjcsIDB4OCwgMHhiYSwgMHg5NywgMHhiMCwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDllLCAweDlmLCAweDg4LCAweDhhLCAweDllLCAweDFmLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4NSwgMHg2MSwgMHg2NSwgMHg4YiwgMHg2ZSwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDgwLCAweDRiLCAweGZiLCAweDIxLCAweDU1LCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2LCAweDdhLCAweDUxLCAweDUsIDB4ZjcsIDB4MCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZiwgMHhmYiwgMHhkNywgMHg1LCAweDIwLCAweDYzLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ZmIsIDB4MSwgMHgxYiwgMHhlLCAweDc5LCAweGMyLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzksIDB4OGIsIDB4YzIsIDB4ZjcsIDB4YTAsIDB4YzIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhmNywgMHg0NiwgMHg3NywgMHgxMiwgMHg5ZSwgMHhjNCwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGEsIDB4MTMsIDB4ZmUsIDB4M2QsIDB4YSwgMHhhOCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NDgsIDB4YSwgMHhmYiwgMHgzMSwgMHhiZCwgMHg4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDhiLCAweGJlLCAweGY3LCAweGFlLCAweGJlLCAweDhiLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDcsIDB4NzcsIDB4MTIsIDB4YWIsIDB4YzMsIDB4MTcsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDEzLCAweGZlLCAweDMwLCAweGEsIDB4ZjcsIDB4NmYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg0YywgMHhhLCAweGUsIDB4ZjgsIDB4ZTIsIDB4Y2IsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweGY3LCAweGY0LCAweDMsIDB4ZjcsIDB4MTAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHgxNSwgMHhhZCwgMHg3OSwgMHhmNywgMHgzNiwgMHhmNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NSwgMHhmYiwgMHg1LCAweGI2LCAweDlkLCAweGZiLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMywgMHg1LCAweDQwLCAweDYsIDB4ZSwgMHhmOCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDEsIDB4ZjcsIDB4MTAsIDB4ZjcsIDB4ZjQsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGY4LCAweDgwLCAweDE1LCAweGQ1LCAweDYsIDB4ZjcsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMSwgMHg2NywgMHg5ZiwgMHhmYiwgMHgzMiwgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OSwgMHhmNywgMHg2LCAweDYyLCAweDc3LCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDg5LCAweGIyLCAweDEsIDB4ZjcsIDB4MmIsIDB4ZjcsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDJiLCAweGY4LCAweGY1LCAweDE1LCAweDNjLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NmUsIDB4YzQsIDB4MWIsIDB4ZDcsIDB4YzgsIDB4YmMsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHgxZiwgMHg2MCwgMHg2LCAweDZkLCAweDdiLCAweDVjLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4MWIsIDB4NjAsIDB4NjQsIDB4YTUsIDB4YjYsIDB4ODAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY4LCAweDcxLCAweGYyLCAweDEsIDB4ZjcsIDB4OGIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgxNSwgMHhkZSwgMHg2LCAweGEyLCAweGYyLCAweDdiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY4LCAweDYzLCAweGJlLCAweGNhLCAweGJkLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhiZSwgMHhjZCwgMHhiZSwgMHgzLCAweGY3LCAweDZjLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MTUsIDB4NjcsIDB4YTYsIDB4NmYsIDB4YjQsIDB4YmYsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhiZiwgMHhiMSwgMHg2ZiwgMHhhNywgMHg2MiwgMHg1NywgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDU2LCAweDFlLCAweGJlLCAweDk2LCAweDE1LCAweGEwLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWYsIDB4OWIsIDB4OTcsIDB4ODEsIDB4N2QsIDB4NzcsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3NiwgMHg3YiwgMHg4MCwgMHg5NiwgMHg5OCwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjgsIDB4YmYsIDB4ZWIsIDB4NzcsIDB4MSwgMHhmNywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDMsIDB4ZjcsIDB4YzQsIDB4MTYsIDB4NjQsIDB4NzgsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2MSwgMHgxYSwgMHg2ZiwgMHg5ZCwgMHg3NiwgMHhhZSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDkyLCAweDk5LCAweDlmLCAweDFlLCAweDliLCAweGMyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg4MywgMHg3MywgMHg4MSwgMHg3YSwgMHgxYiwgMHg4MSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDk2LCAweGIyLCAweGJkLCAweGE1LCAweGE1LCAweDlhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmOCwgMHg3ZCwgMHhiZCwgMHg5ZCwgMHhiYywgMHgxLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OGMsIDB4MTUsIDB4YmMsIDB4ODAsIDB4NSwgMHg5YSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGJjLCAweGFlLCAweDFiLCAweGE1LCAweDlmLCAweDc4LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4MWYsIDB4N2IsIDB4OWYsIDB4YTEsIDB4N2MsIDB4YTksIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHhjNSwgMHhiYiwgMHhjMywgMHhhOSwgMHgxZiwgMHg1YSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NzEsIDB4N2QsIDB4NWQsIDB4NjUsIDB4NjcsIDB4MWIsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg5OSwgMHg5YiwgMHg3OCwgMHgxZiwgMHg5ZCwgMHg3NiwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDZhLCAweDFiLCAweDU4LCAweDU4LCAweDY3LCAweDQ5LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHg2NSwgMHhhLCAweGY3LCAweGE1LCAweGY4LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YWQsIDB4NzcsIDB4ZjcsIDB4NTIsIDB4ZjcsIDB4MjIsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg1LCAweGZiLCAweGU4LCAweGZiLCAweDJmLCAweDE1LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ZjcsIDB4NTYsIDB4ZjcsIDB4MjIsIDB4NTIsIDB4YWMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4N2IsIDB4YzEsIDB4MSwgMHhkMCwgMHhmNywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweDU3LCAweDJhLCAweGEsIDB4ZmMsIDB4NTcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4N2IsIDB4YzEsIDB4MSwgMHg4NSwgMHhmNywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweGVkLCAweDJhLCAweGEsIDB4ZmMsIDB4ZWQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4YmIsIDB4YzksIDB4MywgMHhmNywgMHhiYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDE1LCAweGM5LCAweDYsIDB4NzIsIDB4NjQsIDB4YSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhmOCwgMHhjNiwgMHg3NywgMHgxLCAweGY3LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4MywgMHhmNywgMHg1NiwgMHhmNywgMHhkYywgMHgxNSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MmEsIDB4NjQsIDB4YSwgMHgzMCwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHg3NywgMHgxLCAweGY3LCAweDU2LCAweGNhLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhmYiwgMHgxYSwgMHgxNSwgMHhjYSwgMHg3NSwgMHhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4NzcsIDB4MSwgMHhmNywgMHg2OCwgMHhjOSwgMHhmNCwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjgsIDB4ZiwgMHhmNywgMHhkYywgMHgxNSwgMHhjNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NjQsIDB4YSwgMHgzMiwgMHg2LCAweGZiLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHgxNSwgMHhjOSwgMHg2LCAweDczLCAweDY0LCAweGEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZjgsIDB4YzYsIDB4NzQsIDB4YSwgMHhmNywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGM3LCAweDYsIDB4ZjcsIDB4MjEsIDB4NjQsIDB4YSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4YTksIDB4ZmIsIDB4N2UsIDB4MTUsIDB4YzYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIzLCAweDY0LCAweGEsIDB4MzUsIDB4NiwgMHhlLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4YSwgMHhmYiwgMHgxYSwgMHgxNSwgMHhjNywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4NjQsIDB4YSwgMHgzNCwgMHg2LCAweGZiLCAweGE4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4MTUsIDB4YzYsIDB4NiwgMHhmNywgMHgyMiwgMHg2NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4NiwgMHhlLCAweGY3LCAweGZiLCAweGM2LCAweGY3LCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHg0MCwgMHhjNiwgMHgzLCAweGY3LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4MTUsIDB4YzYsIDB4NiwgMHhlNSwgMHhmOCwgMHg0ZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4NiwgMHg5NywgMHhjMCwgMHg4MywgMHhhLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzYsIDB4NSwgMHg1MCwgMHg2LCAweDY5LCAweGZiLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgxNCwgMHg2LCAweDgwLCAweDU2LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHg2LCAweGUsIDB4ZjIsIDB4YzYsIDB4ZjcsIDB4NjQsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYywgMHg3NywgMHgxLCAweGVjLCAweGYyLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4NiwgMHg2NCwgMHhmYiwgMHg0OSwgMHg1LCAweGNiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhmNywgMHg0OSwgMHg1LCAweGY3LCAweDE4LCAweDYsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHg1LCAweGZiLCAweDE3LCAweDYsIDB4YjYsIDB4ZjcsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDE2LCAweDYsIDB4OTcsIDB4YzUsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDYsIDB4YWIsIDB4ZjcsIDB4MmMsIDB4NSwgMHg0YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ZmIsIDB4MmMsIDB4ODMsIDB4YSwgMHg4MSwgMHg1MSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4NiwgMHg1ZiwgMHhmYiwgMHg2NCwgMHg4MywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHgyYiwgMHg3NiwgMHhmNywgMHg5MSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2QsIDB4ZjcsIDB4N2MsIDB4MTUsIDB4NTIsIDB4YjUsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHhkNywgMHhkYywgMHhkMiwgMHhkOSwgMHhjNiwgMHg1ZiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDNjLCAweDQwLCAweDQ1LCAweDNhLCAweDFlLCAweGUsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMiwgMHgxLCAweGFlLCAweGY3LCAweDE1LCAweGQyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDIsIDB4ZjcsIDB4MTUsIDB4MTQsIDB4NzAsIDB4ZjcsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHgxNSwgMHg0MSwgMHhhLCAweGZiLCAweDVjLCAweDE2LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmOCwgMHgyNCwgMHgxNiwgMHg0MSwgMHhhLCAweGUsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmNywgMHgyMSwgMHhjMSwgMHhmNywgMHgxZCwgMHhjMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGMxLCAweDEyLCAweGFhLCAweGM0LCAweGY3LCAweDU3LCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YzQsIDB4ZjcsIDB4MmEsIDB4YzQsIDB4MTMsIDB4ZmQsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2ZSwgMHgyZSwgMHhhLCAweGZiLCAweDUsIDB4ZmIsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmOCwgMHg2YywgMHhmNywgMHgzOCwgMHg4NywgMHhjMCwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGZiLCAweDNhLCAweDUsIDB4MTMsIDB4ZmIsIDB4ZjcsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1MSwgMHgyZSwgMHhhLCAweGZiLCAweGVlLCAweDg0LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweGY4LCAweDUyLCAweDc3LCAweDEsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHgzLCAweGY3LCAweDE4LCAweGY3LCAweDk1LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4ZmIsIDB4NGYsIDB4YTksIDB4YmEsIDB4ZmIsIDB4NDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHg4NywgMHhmNywgMHgxYywgMHg4MiwgMHhjMywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmOCwgMHg1MiwgMHg3NywgMHgxLCAweGY4LCAweDYsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDIxLCAweGQxLCAweDE1LCAweGY3LCAweGRiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4ZmIsIDB4ODQsIDB4ZjcsIDB4NTEsIDB4NmMsIDB4NWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhmYiwgMHgxYSwgMHhmYiwgMHg4MiwgMHhmYiwgMHgyMCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg2NywgMHg3NiwgMHhmOSwgMHg2NiwgMHg3NywgMHgxLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4MTUsIDB4YWIsIDB4NmYsIDB4ZjgsIDB4YTYsIDB4ZjksIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhhNywgMHg1LCAweGUsIDB4NzYsIDB4YzUsIDB4ZjcsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhkYiwgMHhjMywgMHhmNywgMHg0MywgMHhjNSwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4YzEsIDB4MywgMHhiYiwgMHhhYSwgMHgxNSwgMHg5YiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YTEsIDB4YzAsIDB4ZTYsIDB4OTMsIDB4OWIsIDB4MWIsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg4NywgMHg4NCwgMHg5ZSwgMHgxZiwgMHg4MywgMHg5ZSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGE2LCAweDUzLCAweGEsIDB4NzEsIDB4NzksIDB4OTcsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHgxZiwgMHg5MywgMHg3YSwgMHg3YSwgMHg4ZSwgMHg3MywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDZkLCAweDg0LCAweDgwLCAweDZlLCAweDFmLCAweGM4LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YzIsIDB4OGUsIDB4YjYsIDB4OCwgMHhmNywgMHg0OCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4YzQsIDB4NSwgMHhmYiwgMHg1YywgMHg2LCAweDhhLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4YWUsIDB4OGEsIDB4YWQsIDB4OCwgMHhmNywgMHg2NiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YzMsIDB4NSwgMHhmYiwgMHg3NywgMHhhOSwgMHg2LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg4MiwgMHg4YiwgMHg3YiwgMHg4YywgMHg3OCwgMHg4LCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3ZCwgMHg1MywgMHg1LCAweGRiLCAweDYsIDB4OGMsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg2OSwgMHg4YywgMHg3ZSwgMHg4LCAweDI5LCAweDYsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHg1LCAweGY3LCAweDgsIDB4NiwgMHg1NSwgMHg2MywgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDRiLCAweDFlLCAweGUsIDB4OGIsIDB4YmYsIDB4ZjcsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhjOCwgMHhiZiwgMHhmNywgMHgyYiwgMHhiZiwgMHgxLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZjgsIDB4OCwgMHhiZSwgMHgzLCAweDg5LCAweGY3LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDcsIDB4NiwgMHhmYiwgMHg3LCAweDkwLCAweGNmLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4MWIsIDB4ZDYsIDB4ZGEsIDB4YTcsIDB4YjUsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3ZCwgMHhiNywgMHg1LCAweDY3LCAweDUyLCAweDQ1LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4MWIsIDB4MmMsIDB4NDksIDB4YjksIDB4ZWIsIDB4ODEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YiwgMHg2LCAweGE3LCAweGJmLCAweDUsIDB4ZmIsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDhlLCAweDlmLCAweDhlLCAweGEyLCAweDkwLCAweDlkLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5OCwgMHg2LCAweGE5LCAweGJmLCAweDUsIDB4ZmIsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGU1LCAweGI0LCAweGRjLCAweGM4LCAweGU1LCAweDFiLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4NzMsIDB4NjYsIDB4YTgsIDB4MWYsIDB4N2IsIDB4M2QsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDYsIDB4YjIsIDB4ZjcsIDB4NTMsIDB4NSwgMHg1OCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NTksIDB4NSwgMHhhYywgMHg2MywgMHg1YiwgMHg5YywgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDEyLCAweGZiLCAweDAsIDB4MzIsIDB4ZmIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDFmLCAweDU0LCAweDYsIDB4NmQsIDB4NTcsIDB4NSwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODYsIDB4NzMsIDB4ODksIDB4NzYsIDB4ODksIDB4N2IsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweDYsIDB4ZSwgMHg3YywgMHhjMiwgMHhmNywgMHg0OSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdjLCAweGMyLCAweDEsIDB4ZjgsIDB4YWMsIDB4YzYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDdjLCAweDE1LCAweGY3LCAweDc5LCAweDM2LCAweGEsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIxLCAweGY3LCAweDQ4LCAweDUsIDB4ZjcsIDB4YywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4NmUsIDB4YWEsIDB4NTcsIDB4YTcsIDB4NTYsIDB4NDAsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhiYSwgMHg2ZCwgMHhjMSwgMHhiZCwgMHg5NCwgMHg3OSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDkxLCAweDdjLCAweDE5LCAweGY3LCAweDFmLCAweDYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHg1NywgMHhhLCAweDc4LCAweGIxLCAweGRhLCAweGQ1LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4NTEsIDB4NTQsIDB4NzcsIDB4YWUsIDB4NzcsIDB4YWMsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHgxOSwgMHhlYSwgMHg4ZSwgMHhmNywgMHg4LCAweGI4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4MWEsIDB4Y2QsIDB4NTcsIDB4Y2IsIDB4MjMsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHgzOCwgMHhhLCAweGUxLCAweDYsIDB4MmEsIDB4ZmMsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDM0LCAweDYsIDB4ZjcsIDB4NTYsIDB4ZjcsIDB4N2YsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhmNywgMHg3YywgMHg1LCAweGY3LCAweDJjLCAweDYsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHg2YiwgMHg1ZiwgMHhmYiwgMHgyYiwgMHhmYiwgMHgyMywgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDFmLCAweGUsIDB4ZjcsIDB4YjAsIDB4NzYsIDB4ZjcsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHgxLCAweGI2LCAweGJlLCAweGY3LCAweDEwLCAweGJiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4YmQsIDB4MywgMHhmNywgMHg2ZSwgMHhmNywgMHg5YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDYsIDB4YzcsIDB4ZjcsIDB4YTIsIDB4OTcsIDB4ZmIsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGNiLCAweDYsIDB4ZjcsIDB4MTQsIDB4ZjcsIDB4YTEsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhMSwgMHg1LCAweGJkLCAweDYsIDB4Y2QsIDB4ZjcsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDMwLCAweDYsIDB4ZmIsIDB4NiwgMHhmYiwgMHg4NywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg3LCAweDUsIDB4MzEsIDB4NiwgMHhmYiwgMHg4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDE1LCAweGJlLCAweDYsIDB4YzIsIDB4ZjcsIDB4OTMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDYsIDB4OTUsIDB4YjcsIDB4NSwgMHhmYiwgMHg3MSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NWYsIDB4NSwgMHhlMCwgMHg2LCAweGUsIDB4NzMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweGY3LCAweDcsIDB4MTUsIDB4YTksIDB4YmEsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzLCAweDUsIDB4ZjgsIDB4YmQsIDB4NiwgMHg5NiwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmMsIDB4YWUsIDB4NiwgMHhmNywgMHgxOCwgMHhmMywgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGZiLCAweDgyLCAweGZiLCAweDRlLCAweDUsIDB4ZSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDMsIDB4NzcsIDB4MSwgMHhmNywgMHg4OCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4MzgsIDB4OWMsIDB4MTUsIDB4ZjcsIDB4MTgsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhmYiwgMHgxYSwgMHgyNiwgMHg1OCwgMHhhMiwgMHhmNywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ5LCAweGY3LCAweDFlLCAweGZiLCAweDU0LCAweDU1LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4ZjcsIDB4YSwgMHhmYiwgMHgxYiwgMHhmYywgMHg4ZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3MywgMHhhLCAweDcwLCAweGY3LCAweGE3LCAweDE1LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4NSwgMHhmOCwgMHhiZiwgMHg2LCAweDJmLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhiYSwgMHhmNywgMHgyYSwgMHhmYiwgMHg0YSwgMHhmYiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRlLCAweDgyLCAweGMzLCAweGY3LCAweDE4LCAweGYzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDlhLCAweDc2LCAweGY4LCAweGVhLCAweDc3LCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDRmLCAweDE1LCAweGMwLCAweDljLCAweGRkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHhmNywgMHgxYywgMHhmOCwgMHg4ZCwgMHhiZSwgMHg4OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGZjLCAweDdlLCAweGY3LCAweDFjLCAweGVmLCAweGJmLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODYsIDB4ZmIsIDB4NGEsIDB4NSwgMHhlLCAweGY3LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4MzIsIDB4YmYsIDB4ZjcsIDB4MzIsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweGY3LCAweDcsIDB4MTUsIDB4ZmIsIDB4MmMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhmNywgMHg4MywgMHhmNywgMHg0ZSwgMHg5NCwgMHg1MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDI1LCAweDUsIDB4ZjgsIDB4NTgsIDB4NiwgMHgzMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YTksIDB4YmEsIDB4ZjcsIDB4MjgsIDB4ZmIsIDB4NGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHhmYiwgMHg0ZSwgMHg4MiwgMHhjMywgMHhmNywgMHgxNiwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDU4LCAweDhhLCAweGU3LCAweGZiLCAweDMsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2MsIDB4YmUsIDB4MSwgMHhkNSwgMHhmNywgMHg3YywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDU3LCAweGJlLCAweGZjLCAweDU3LCAweDYsIDB4ZSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGY3LCAweGMxLCAweGMwLCAweGYxLCAweGY3LCAweGMsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDAsIDB4YzEsIDB4ZjcsIDB4YTcsIDB4YzEsIDB4MywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGY4LCAweDkxLCAweDE1LCAweGQyLCAweDYsIDB4YTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDUsIDB4NDQsIDB4NiwgMHhmYiwgMHg2ZCwgMHhmZCwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4YTEsIDB4ODAsIDB4YSwgMHhmYiwgMHgxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHhmNywgMHhmNiwgMHg1LCAweGZiLCAweDFjLCAweDY4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHg2LCAweDRkLCAweGZiLCAweGMxLCAweDUsIDB4MjEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGU3LCAweDU2LCAweDE1LCAweGY3LCAweDllLCAweDYsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg1NywgMHhhLCAweGM5LCAweGY3LCAweGMxLCAweDUsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDk2LCAweGMwLCAweDU3LCAweGEsIDB4YTYsIDB4ZWQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDkwLCAweDk2LCAweGEyLCAweGQ0LCAweDFiLCAweGExLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ODcsIDB4OWUsIDB4MWYsIDB4YTAsIDB4YmYsIDB4NSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDVlLCAweDkwLCAweDc4LCAweDFiLCAweDVhLCAweDQzLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NzcsIDB4MWYsIDB4NzMsIDB4MjksIDB4NSwgMHgyMCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjYsIDB4NiwgMHg0ZSwgMHhmYiwgMHhjMSwgMHg1LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweDhiLCAweGMyLCAweGY3LCAweGNmLCAweGMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4YzIsIDB4MSwgMHhmNywgMHgyLCAweGMxLCAweGY3LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4MywgMHhmNywgMHhkNSwgMHgxNiwgMHhmNywgMHhhMiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MjEsIDB4NiwgMHhmNywgMHg0LCAweGY4LCAweGQyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNywgMHg1NiwgMHhhLCAweGU4LCAweDYsIDB4MjUsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg1NywgMHhhLCAweGZiLCAweGU4LCAweDU0LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NiwgMHg5NywgMHhjMiwgMHg1NywgMHhhLCAweGM5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4NSwgMHhmNiwgMHg2LCAweDk2LCAweGMyLCAweDU3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhlMCwgMHg1LCAweGExLCAweDhmLCAweDk3LCAweGI1LCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YTIsIDB4YTAsIDB4ODYsIDB4ODYsIDB4YTAsIDB4MWYsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg1LCAweDkwLCAweDcxLCAweDZmLCAweDkxLCAweDZmLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4NTgsIDB4NWEsIDB4NDUsIDB4N2UsIDB4MWYsIDB4NzksIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDEsIDB4NjcsIDB4YSwgMHhmNywgMHgxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHhmYiwgMHhjZiwgMHg1LCAweDIwLCAweDYsIDB4ZSwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGY4LCAweDNlLCAweDlhLCAweGY3LCAweGQsIDB4OWQsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg2LCAweGZiLCAweDMxLCAweDhiLCAweDcsIDB4MWUsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg2MywgMHhmZiwgMHhjLCAweDksIDB4YzIsIDB4YSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjgsIDB4ZWMsIDB4MTQsIDB4YWEsIDB4MTMsIDB4MCwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MCwgMHgxLCAweDAsIDB4MjksIDB4MCwgMHgzOCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4MCwgMHg2ZCwgMHgwLCAweGI5LCAweDAsIDB4ZjUsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweDEsIDB4ODMsIDB4MSwgMHhjMywgMHgxLCAweGY4LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHgyLCAweGUsIDB4MiwgMHgxYSwgMHgyLCAweDFmLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHgyLCAweDUzLCAweDIsIDB4OTMsIDB4MiwgMHhjNCwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4MiwgMHhlOCwgMHgzLCAweDE5LCAweDMsIDB4MmMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDMsIDB4M2YsIDB4MywgMHg0NCwgMHgzLCAweDRlLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHgzLCAweDY0LCAweDMsIDB4NjksIDB4MywgMHg4ZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MywgMHhiOCwgMHgzLCAweGJmLCAweDMsIDB4ZDEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDMsIDB4ZjQsIDB4MywgMHhmZiwgMHg0LCAweDQsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4NCwgMHhlLCAweDQsIDB4MjMsIDB4NCwgMHgyYiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NCwgMHgzYywgMHg0LCAweDUxLCAweDQsIDB4NTYsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDQsIDB4NjYsIDB4NCwgMHg2ZSwgMHg0LCAweDcyLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg0LCAweDg3LCAweDQsIDB4OTEsIDB4NCwgMHg5NiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NCwgMHg5ZiwgMHg0LCAweGEzLCAweDQsIDB4YWIsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDQsIDB4YmEsIDB4NCwgMHhiZiwgMHg0LCAweGM1LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHg0LCAweGNmLCAweDQsIDB4ZDQsIDB4NCwgMHhkOSwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4NCwgMHhlMSwgMHg0LCAweGU1LCAweDQsIDB4ZWQsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweDQsIDB4ZjgsIDB4NCwgMHhmZCwgMHg1LCAweDEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NSwgMHg5LCAweDUsIDB4MTUsIDB4NSwgMHgyMSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4NSwgMHgyZCwgMHg1LCAweDMzLCAweDUsIDB4MzcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDUsIDB4NGQsIDB4NSwgMHg1OCwgMHg1LCAweDYwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg1LCAweDY5LCAweDUsIDB4NmUsIDB4NSwgMHg3MiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NSwgMHg3YSwgMHg1LCAweDgzLCAweDUsIDB4OGMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDUsIDB4OWUsIDB4NSwgMHhhMywgMHg1LCAweGE4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHg1LCAweGIyLCAweDUsIDB4YjcsIDB4NSwgMHhiYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NSwgMHhjMywgMHg1LCAweGM3LCAweDUsIDB4Y2IsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg0ZCwgMHhhLCAweDMzLCAweDYsIDB4Y2MsIDB4ZjcsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4YWEsIDB4NiwgMHhhMywgMHhmYiwgMHhmLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmOCwgMHg5MywgMHgzMiwgMHhhLCAweDdhLCAweGEsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDZiLCAweGY3LCAweDQ1LCAweDE1LCAweGY3LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmIsIDB4Y2EsIDB4ZmIsIDB4YmIsIDB4NSwgMHhiLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhiZSwgMHgzYSwgMHhhLCAweDEzLCAweDdlLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4MTUsIDB4MTMsIDB4YmUsIDB4MmIsIDB4YSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDNjLCAweGEsIDB4MzcsIDB4NiwgMHhiZSwgMHhmNywgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDliLCAweDlhLCAweDFhLCAweGNiLCAweDhhLCAweDVlLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4MWIsIDB4NDYsIDB4MzYsIDB4NzcsIDB4NzIsIDB4NGIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhhLCAweGE4LCAweGUxLCAweDljLCAweDMzLCAweDFmLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NSwgMHg5MiwgMHg1ZiwgMHg1YSwgMHg5MiwgMHg1YSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUxLCAweDRjLCAweDJjLCAweDNmLCAweDFmLCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHhhLCAweGUsIDB4MTUsIDB4ZGIsIDB4NiwgMHg1YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDUsIDB4ODgsIDB4N2UsIDB4OGMsIDB4N2YsIDB4ODAsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhjMywgMHg2NywgMHhkNiwgMHhiMiwgMHhjMSwgMHg5YSwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDFlLCAweDEzLCAweDc4LCAweDdjLCAweDNkLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgzNiwgMHhhLCAweDNhLCAweDYsIDB4ZDMsIDB4ZjgsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhhLCAweDgyLCAweDUzLCAweDUsIDB4ZGMsIDB4NiwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDc3LCAweDUsIDB4MTMsIDB4YjgsIDB4NTksIDB4NWIsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHg0YywgMHgxYiwgMHg0ZSwgMHg2YywgMHhhOCwgMHhiZSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk2LCAweDhjLCAweDk2LCAweDhkLCAweDk4LCAweDFlLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWUsIDB4NSwgMHhmYiwgMHgxYSwgMHg2LCAweGUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNSwgMHhkNywgMHgyNiwgMHhmNywgMHgxYSwgMHhmNywgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFjLCAweGY3LCAweDRkLCAweGY3LCAweDRmLCAweGVkLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTEsIDB4ZmIsIDB4MzUsIDB4ZmIsIDB4NjAsIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVjLCAweGZiLCAweDM5LCAweDFlLCAweGMyLCAweDkzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHhlYSwgMHhmNywgMHg1NSwgMHhmNywgMHgzYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGE0LCAweDIwLCAweDNhLCAweGZiLCAweDEzLCAweGZiLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MCwgMHhmYiwgMHgxOSwgMHhmYiwgMHgxLCAweDUyLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4MWUsIDB4ZSwgMHgxNSwgMHhkYywgMHg2LCAweDU1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NSwgMHg4NSwgMHg2YiwgMHg4OCwgMHg2ZCwgMHg3MCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGJkLCAweDUxLCAweGY3LCAweGMsIDB4ZjcsIDB4MTIsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmNywgMHgzMCwgMHhhNywgMHgxZSwgMHhjNywgMHhmNywgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZDgsIDB4M2MsIDB4YSwgMHhmYiwgMHg3YiwgMHg2MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4NiwgMHg1MCwgMHhmYiwgMHhjYSwgMHg2MywgMHhhLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NTQsIDB4MjMsIDB4MWIsIDB4MzIsIDB4NjUsIDB4YjQsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg4ZSwgMHg5ZSwgMHg4ZiwgMHhhMCwgMHgxZiwgMHhjMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDUsIDB4ZjQsIDB4M2MsIDB4YSwgMHhmYiwgMHg4MiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxNSwgMHhmOCwgMHgzOCwgMHg4OSwgMHg1LCAweDhmLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4YWEsIDB4YTAsIDB4MWEsIDB4ZTgsIDB4NTEsIDB4ZTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhmYiwgMHgzNCwgMHhmYiwgMHgxZSwgMHhmYiwgMHg5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4MmMsIDB4YzUsIDB4NDEsIDB4ZjcsIDB4MmMsIDB4ZTAsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhiMCwgMHhkNSwgMHgxZSwgMHg4NCwgMHhjMSwgMHg1LCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4MzcsIDB4NzcsIDB4NWEsIDB4MWIsIDB4NDQsIDB4MjYsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHg5YiwgMHg4YiwgMHg5YywgMHg5MSwgMHg5ZCwgMHgxZiwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDE1LCAweGM2LCAweGEwLCAweGQwLCAweGQ5LCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgyMiwgMHg4ZiwgMHhmYiwgMHg0LCAweDcyLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmOCwgMHg4NSwgMHg2LCAweGIxLCAweGY3LCAweDUxLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3MCwgMHhmYiwgMHgxYiwgMHg1LCAweGZiLCAweGM1LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhmNywgMHg1ZCwgMHg1LCAweGY3LCAweDM5LCAweDYsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg1MSwgMHhhLCAweGI4LCAweGY3LCAweDZmLCAweDYyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHgzOCwgMHg1LCAweGZiLCAweDM4LCAweDYsIDB4YjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg4MSwgMHhhLCAweDcxLCAweGZiLCAweDFiLCAweDUsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIxLCAweGY3LCAweDUxLCAweDUsIDB4ZmMsIDB4ODMsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGRmLCAweDYsIDB4MmYsIDB4ZmMsIDB4NWQsIDB4NmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MTUsIDB4MjAsIDB4ZDcsIDB4NDMsIDB4ZjcsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhmNywgMHg5LCAweGY3LCAweDE0LCAweGY3LCAweDJlLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4ZWMsIDB4ZmIsIDB4MmEsIDB4ZmIsIDB4MmIsIDB4ZmIsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5LCAweGZiLCAweDNiLCAweDFlLCAweGM5LCAweDlhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4ZTgsIDB4ZjYsIDB4ZjcsIDB4ZSwgMHhmNywgMHgxNiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDRmLCAweDI4LCAweDJjLCAweDIxLCAweGZiLCAweDksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDY3LCAweGNjLCAweGQ1LCAweDFlLCAweGIsIDB4NiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDUsIDB4YiwgMHg0ZSwgMHg0YiwgMHgzZSwgMHg1YywgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDU3LCAweDY0LCAweGE4LCAweGFiLCAweGVkLCAweGY3LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4YzYsIDB4NDAsIDB4YSwgMHg1LCAweDJiLCAweDJkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2MCwgMHgyYSwgMHhhLCAweDU3LCAweDYsIDB4MjEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODAsIDB4NTUsIDB4NSwgMHhiLCAweDE1LCAweDUyLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4Y2YsIDB4ZGYsIDB4ZDQsIDB4ZDMsIDB4ZGIsIDB4YzEsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHgzZCwgMHgzOCwgMHg0MywgMHg0MiwgMHg0MCwgMHgxZSwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDE1LCAweGJjLCAweGIzLCAweGIxLCAweGJlLCAweGIzLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NmMsIDB4NjEsIDB4NmEsIDB4NWYsIDB4NTUsIDB4NjYsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhhZCwgMHgxZSwgMHhiLCAweDQ0LCAweGEsIDB4ZjgsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhhLCAweGZjLCAweDVjLCAweDUsIDB4ZmIsIDB4NDUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YWQsIDB4NzEsIDB4NTMsIDB4YjQsIDB4M2MsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhmYiwgMHg5LCAweGZiLCAweDksIDB4MjIsIDB4MzksIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhmNywgMHgyMSwgMHhjYywgMHhkNiwgMHg5OCwgMHhiOCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDc4LCAweDIwLCAweDUsIDB4MzQsIDB4NzksIDB4NTIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiLCAweDFiLCAweDQ4LCAweDRiLCAweDljLCAweDk2LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4Y2MsIDB4ZjcsIDB4YzEsIDB4MTUsIDB4ZWUsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGYwLCAweGY3LCAweDYsIDB4YWIsIDB4NGMsIDB4NGIsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHg0ZiwgMHgyMywgMHgzMSwgMHg0ZiwgMHhiZCwgMHhjYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4YzksIDB4MmEsIDB4YSwgMHhmYiwgMHgxMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4ZjcsIDB4NDMsIDB4ZjcsIDB4N2UsIDB4ZjcsIDB4YWUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweDJhLCAweGEsIDB4ZmIsIDB4NWEsIDB4MmQsIDB4YSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4NTIsIDB4ZmIsIDB4NzgsIDB4MjYsIDB4ZjcsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGQyLCAweDQzLCAweGEsIDB4ZDEsIDB4NiwgMHhmNywgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGFlLCAweDY5LCAweGZiLCAweDQzLCAweDUsIDB4ZmIsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIsIDB4NSwgMHhmYiwgMHg4MiwgMHgyZCwgMHhhLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg5ZCwgMHhiLCAweDE1LCAweDY5LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHg2LCAweGM4LCAweGY3LCAweGRiLCAweDUsIDB4ZmIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhhLCAweGY3LCAweDRmLCAweDYsIDB4NDQsIDB4ZmMsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDNhLCAweDU2LCAweGEsIDB4ZSwgMHhmNywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVlLCAweDE1LCAweGY3LCAweDM3LCAweDYsIDB4NzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg1LCAweDc2LCAweDQ2LCAweDY0LCAweDdmLCAweDU0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTgsIDB4NTMsIDB4ZDgsIDB4ZWIsIDB4ZjcsIDB4NzQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhlNiwgMHhmNywgMHg3LCAweGQwLCAweGMwLCAweDY4LCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MWYsIDB4N2MsIDB4M2YsIDB4NTEsIDB4YSwgMHhiNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDUyLCAweGEsIDB4N2UsIDB4NDksIDB4NSwgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4YTMsIDB4NzMsIDB4YjEsIDB4YjIsIDB4YjYsIDB4YTksIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg3NSwgMHhhNCwgMHg2NywgMHg2MCwgMHg2MCwgMHg2OSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGIsIDB4NiwgMHg5NiwgMHhjMiwgMHg1LCAweGIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQxLCAweDQ2LCAweGEsIDB4ZmMsIDB4MmIsIDB4MzgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQyLCAweDYsIDB4MmMsIDB4YiwgMHg2LCAweDgwLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiLCAweDhmLCAweDU1LCAweDUsIDB4OWEsIDB4YWUsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhkMCwgMHgxYiwgMHhiLCAweDUxLCAweGI5LCAweDU0LCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZGEsIDB4YjYsIDB4YzEsIDB4Y2QsIDB4MWUsIDB4YiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDVmLCAweGMzLCAweGY3LCAweDMzLCAweGM0LCAweGY3LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhiLCAweDYsIDB4OTYsIDB4YzMsIDB4NSwgMHhiLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NGQsIDB4YTQsIDB4NDYsIDB4MWIsIDB4ZmIsIDB4M2YsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmYiwgMHgyNCwgMHhmYiwgMHg3YywgMHhmYiwgMHg4LCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4ZjcsIDB4M2QsIDB4ZDQsIDB4ZDksIDB4OWYsIDB4YTUsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhYywgMHhmNywgMHg0MiwgMHg1LCAweGJmLCAweDM2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhMiwgMHg2LCAweGIsIDB4OGIsIDB4YzEsIDB4ZjgsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHgxLCAweGIsIDB4YTIsIDB4M2MsIDB4MTUsIDB4NzYsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDgwLCAweGJkLCAweGRjLCAweDdhLCAweGRkLCAweDFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZTMsIDB4YmYsIDB4ZjAsIDB4YTIsIDB4MWYsIDB4ZDksIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg1LCAweGM3LCAweDYsIDB4OTUsIDB4YmUsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NiwgMHg3YywgMHg0YywgMHg1LCAweGIsIDB4YjgsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg4NCwgMHhiNSwgMHgxZiwgMHhlLCAweDcwLCAweGEwLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4YjAsIDB4YWYsIDB4YWIsIDB4YjQsIDB4YWEsIDB4NzMsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NSwgMHg2NywgMHg2OCwgMHg2NSwgMHgxZSwgMHhiLCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4YjQsIDB4YzgsIDB4YzAsIDB4YmQsIDB4NzUsIDB4NTksIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhjMiwgMHg5YywgMHg1LCAweGMzLCAweDc5LCAweDZkLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OSwgMHgxYiwgMHhmYiwgMHhjLCAweDIzLCAweDMyLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGEsIDB4YiwgMHgyYSwgMHhhLCAweGZiLCAweDVmLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiLCAweGY4LCAweDJmLCAweDYsIDB4OTgsIDB4YzEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ1LCAweDYsIDB4ZWEsIDB4YiwgMHg2LCAweDdmLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiLCAweDYsIDB4OTcsIDB4YzIsIDB4NSwgMHhiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhjMSwgMHg1LCAweGIsIDB4MTUsIDB4ZDksIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGY3LCAweDMzLCAweDY1LCAweDlkLCAweGZiLCAweDMzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYiwgMHgxMSwgMHhmNywgMHhjLCAweDVmLCAweDc4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDEsIDB4YzQsIDB4YzksIDB4ZjcsIDB4ZmYsIDB4YzgsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MTIsIDB4YmEsIDB4YzUsIDB4ZjcsIDB4ZWUsIDB4YzQsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGEsIDB4ZjcsIDB4NzMsIDB4NzcsIDB4NGEsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGIsIDB4MTUsIDB4ZGIsIDB4NiwgMHhmNywgMHg0NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDY1LCAweDlmLCAweGZiLCAweDNkLCAweGZiLCAweGYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHhlLCAweDVmLCAweDc3LCAweDUsIDB4YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4YzEsIDB4NSwgMHhiLCAweDdjLCAweGMxLCAweDYwLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZGQsIDB4YzMsIDB4YiwgMHhmNywgMHg2MywgMHhmNywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYwLCAweDMsIDB4YiwgMHgxLCAweGU3LCAweGJmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4YmYsIDB4MywgMHhiLCAweDUsIDB4YzMsIDB4NiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1NCwgMHg2LCAweGIsIDB4MWIsIDB4YjcsIDB4YjksIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhiMSwgMHgxZiwgMHg3ZCwgMHhiOCwgMHg1LCAweDdmLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NzYsIDB4NjcsIDB4MWIsIDB4YiwgMHgxNSwgMHhkYSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4ZjcsIDB4YSwgMHg1LCAweDNkLCAweDYsIDB4YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWIsIDB4NiwgMHhiLCAweDYsIDB4N2YsIDB4NTQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NjMsIDB4YSwgMHg2LCAweGIsIDB4ZmMsIDB4NWEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NzAsIDB4YSwgMHhmNywgMHg3OCwgMHg3NywgMHg1MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1ZCwgMHhhLCAweGY3LCAweDc0LCAweDc3LCAweDQ5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDhiLCAweDYxLCAweGEsIDB4ZjcsIDB4NWUsIDB4YzEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTQsIDB4ODgsIDB4YSwgMHhiLCAweDdjLCAweGMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4YzMsIDB4YiwgMHg2LCAweDMwLCAweDU4LCAweGEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODEsIDB4NTUsIDB4NSwgMHhiLCAweDYsIDB4ODAsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGIsIDB4YzEsIDB4ZjcsIDB4NWQsIDB4YzEsIDB4YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4NiwgMHhiLCAweDUsIDB4ZmIsIDB4MCwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4NSwgMHhiLCAweGY4LCAweDlhLCAweDc2LCAweGY3LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhiLCAweDUsIDB4ZmIsIDB4MjEsIDB4MzgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NiwgMHg4MSwgMHg1NCwgMHg1LCAweGIsIDB4NiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDUsIDB4YiwgMHg5NSwgMHhjMiwgMHg1LCAweGIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDYsIDB4YiwgMHg1LCAweDM5LCAweDYsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDk3LCAweDc2LCAweGE0LCAweGE2LCAweGE1LCAweGE4LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4N2QsIDB4YiwgMHgxNSwgMHg1NywgMHhiNCwgMHg1YiwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGQxLCAweGQzLCAweGRkLCAweGJkLCAweDY5LCAweGIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGY3LCAweDcsIDB4NSwgMHhiLCAweDhiLCAweGMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4YzIsIDB4YiwgMHg3OSwgMHhjMSwgMHhmOCwgMHg2ZCwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NSwgMHg1MywgMHg2LCAweGIsIDB4NzEsIDB4NWYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg1NSwgMHg2OCwgMHg3MSwgMHhhMSwgMHhhOSwgMHgxZSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4NzYsIDB4ZjcsIDB4MzIsIDB4YmQsIDB4ZjcsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGIsIDB4NzcsIDB4MSwgMHhmNywgMHhhLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4YzcsIDB4MywgMHhmNywgMHhhYywgMHhiLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHg2NCwgMHhhLCAweDJmLCAweDYsIDB4ZSwgMHg2LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4NSwgMHhiLCAweDYsIDB4NjksIDB4YSwgMHhiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhiZSwgMHg1LCAweGIsIDB4ZjcsIDB4MjQsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NWQsIDB4NSwgMHhiLCAweDUsIDB4MzgsIDB4NiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4ZGQsIDB4OWIsIDB4MWYsIDB4ZDEsIDB4ZjcsIDB4ZjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NzcsIDB4MSwgMHhhZCwgMHhjMSwgMHhmOCwgMHgzYSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YiwgMHg4YiwgMHhiZSwgMHhmNywgMHgxMiwgMHhjMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGMxLCAweGIsIDB4ZjcsIDB4MWQsIDB4YzQsIDB4ZjcsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGMxLCAweGIsIDB4NiwgMHg5NiwgMHhjMCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1LCAweGY3LCAweGJlLCAweDYsIDB4YiwgMHg2LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4NSwgMHhiLCAweDUsIDB4ZmIsIDB4MTgsIDB4NiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzgsIDB4NzcsIDB4MSwgMHhiLCAweDE1LCAweGRkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY3LCAweDFmLCAweDYsIDB4YiwgMHhmOCwgMHg1YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmNywgMHg4LCAweDUsIDB4YiwgMHg1LCAweDNiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNhbnMuYyBiL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRTYW5zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q4N2QyYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRTYW5zLmMKQEAgLTAsMCArMSwxODg2IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTYW5zRm9udERhdGEgWzE1MDI1XSA9IHsweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NCwgMHgyLCAweDAsIDB4MSwgMHgxLCAweDEsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NjgsIDB4NzIsIDB4NmYsIDB4NmQsIDB4NTMsIDB4NjEsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDRmLCAweDU0LCAweDQ2LCAweDAsIDB4MSwgMHgxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGY4LCAweDEwLCAweDAsIDB4ZjgsIDB4MWMsIDB4MSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MiwgMHhmOCwgMHgxZCwgMHgzLCAweGY4LCAweDE4LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNhLCAweGZiLCAweDc1LCAweGZhLCAweDdjLCAweGZhLCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDE2LCAweGYsIDB4ZjgsIDB4ZTEsIDB4MTEsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDM0LCAweGEyLCAweDEyLCAweDAsIDB4MywgMHgxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MmYsIDB4M2QsIDB4NDUsIDB4NzUsIDB4NzIsIDB4NmYsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4NDMsIDB4NjgsIDB4NzIsIDB4NmYsIDB4NmQsIDB4MjAsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDZlLCAweDczLCAweDIwLCAweDRmLCAweDU0LCAweDQ2LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHgwLCAweDIyLCAweDAsIDB4OGEsIDB4MCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhYywgMHgwLCAweGFkLCAweDAsIDB4YWUsIDB4MCwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhiMCwgMHgwLCAweDIzLCAweDAsIDB4MjQsIDB4MCwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgyNSwgMHgwLCAweDI2LCAweDAsIDB4YjIsIDB4MCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhiNCwgMHgwLCAweGI1LCAweDAsIDB4OWEsIDB4MSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgyNywgMHgwLCAweDI4LCAweDAsIDB4MjksIDB4MCwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhiNiwgMHgwLCAweGI3LCAweDAsIDB4YjgsIDB4MCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgyYiwgMHgwLCAweDJjLCAweDAsIDB4MmQsIDB4MCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgyZSwgMHgwLCAweDJmLCAweDAsIDB4YmEsIDB4MCwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4ZSwgMHgwLCAweGJiLCAweDAsIDB4YmMsIDB4MCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhiZSwgMHgwLCAweDhkLCAweDAsIDB4YmYsIDB4MCwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgzMiwgMHgwLCAweDMzLCAweDAsIDB4MzQsIDB4MCwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgzNSwgMHgwLCAweDlkLCAweDAsIDB4MzYsIDB4MCwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjMiwgMHgwLCAweGMzLCAweDAsIDB4YzQsIDB4MCwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgzOCwgMHgwLCAweDM5LCAweDAsIDB4M2EsIDB4MCwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjNiwgMHgwLCAweDNiLCAweDAsIDB4YzcsIDB4MCwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjOCwgMHgwLCAweGM5LCAweDAsIDB4N2QsIDB4MCwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg5MCwgMHgwLCAweGNiLCAweDAsIDB4NywgMHgwLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDNmLCAweDAsIDB4NWYsIDB4MCwgMHhiLCAweDAsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4Y2QsIDB4MCwgMHg0MywgMHgwLCAweDNkLCAweDAsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NWMsIDB4MCwgMHg1ZSwgMHgwLCAweDNjLCAweDAsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ODEsIDB4MCwgMHhhMCwgMHgwLCAweDc0LCAweDAsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ODgsIDB4MCwgMHhjZSwgMHgwLCAweDg1LCAweDAsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4N2UsIDB4MCwgMHgxYiwgMHgwLCAweGQsIDB4MCwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2NywgMHgwLCAweDQ1LCAweDAsIDB4NzAsIDB4MCwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhMSwgMHgwLCAweDgzLCAweDAsIDB4OWYsIDB4MCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDgyLCAweDAsIDB4OTEsIDB4MCwgMHg0NiwgMHgwLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGQwLCAweDAsIDB4ZDEsIDB4MCwgMHhkMiwgMHgwLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc5LCAweDAsIDB4ODksIDB4MCwgMHg2ZiwgMHgwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE3LCAweDAsIDB4MiwgMHgwLCAweDYwLCAweDAsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NmQsIDB4MCwgMHgxNiwgMHgwLCAweDZlLCAweDAsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MTUsIDB4MCwgMHg2MywgMHgwLCAweDQ4LCAweDAsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4N2MsIDB4MCwgMHgxZiwgMHgwLCAweDZhLCAweDAsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NmIsIDB4MCwgMHg2YywgMHgwLCAweDQ5LCAweDAsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZSwgMHgwLCAweDRhLCAweDAsIDB4ZDMsIDB4MCwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhkNSwgMHgwLCAweGQ2LCAweDAsIDB4NGIsIDB4MCwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0ZCwgMHgwLCAweDFkLCAweDAsIDB4OTcsIDB4MCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0ZSwgMHgwLCAweDgwLCAweDAsIDB4YTYsIDB4MCwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhOCwgMHgwLCAweDRmLCAweDAsIDB4MWEsIDB4MCwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0LCAweDAsIDB4NTAsIDB4MCwgMHhkOCwgMHgwLCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGRhLCAweDAsIDB4OTQsIDB4MCwgMHg4NywgMHgwLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDEyLCAweDAsIDB4OWIsIDB4MCwgMHg5ZSwgMHgwLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDhiLCAweDAsIDB4OGYsIDB4MCwgMHg5MywgMHgwLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDUxLCAweDAsIDB4NzMsIDB4MCwgMHg5LCAweDAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2LCAweDAsIDB4ZiwgMHgwLCAweDcyLCAweDAsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YywgMHgwLCAweDljLCAweDAsIDB4NTIsIDB4MCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg3YiwgMHgwLCAweDMsIDB4MCwgMHg3NiwgMHgwLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc3LCAweDAsIDB4NDEsIDB4MCwgMHg4LCAweDAsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NjgsIDB4MCwgMHg1MywgMHgwLCAweGE1LCAweDAsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NTQsIDB4MCwgMHhkZCwgMHgwLCAweDY2LCAweDAsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MTgsIDB4MCwgMHgxNywgMHgwLCAweDEwLCAweDAsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2MiwgMHgwLCAweDU1LCAweDAsIDB4YTIsIDB4MCwgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhMywgMHgwLCAweGE5LCAweDAsIDB4N2YsIDB4MCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgxMywgMHgwLCAweGE0LCAweDAsIDB4NTYsIDB4MCwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhkZiwgMHgwLCAweGUwLCAweDAsIDB4ZTEsIDB4MCwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg1NywgMHgwLCAweDU4LCAweDAsIDB4NTksIDB4MCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhlMiwgMHgwLCAweGUzLCAweDAsIDB4NjQsIDB4MCwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhlNCwgMHgwLCAweDExLCAweDAsIDB4ZTYsIDB4MiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDAsIDB4NCwgMHgwLCAweDM2LCAweDAsIDB4NzUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MCwgMHhhMiwgMHgwLCAweGMyLCAweDAsIDB4ZDMsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgxLCAweDMyLCAweDEsIDB4OTIsIDB4MSwgMHhlMSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHgyLCAweDlkLCAweDIsIDB4YzAsIDB4MiwgMHhjZCwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHgyLCAweGViLCAweDIsIDB4ZmMsIDB4MywgMHg0NywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgzLCAweGUxLCAweDQsIDB4NDIsIDB4NCwgMHg2OCwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg0LCAweDg3LCAweDQsIDB4YTQsIDB4NCwgMHhiZiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHg1LCAweDEsIDB4NSwgMHgyZiwgMHg1LCAweDQ0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDUsIDB4YTcsIDB4NSwgMHhjYywgMHg2LCAweDE2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDYsIDB4ZDcsIDB4NiwgMHhlOCwgMHg2LCAweGY5LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NywgMHgyMSwgMHg3LCAweGE0LCAweDcsIDB4ZGYsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4OCwgMHg5OCwgMHg4LCAweGYwLCAweDksIDB4NTgsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4OSwgMHhlMSwgMHhhLCAweDI1LCAweGEsIDB4NTgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4YSwgMHg2NywgMHhhLCAweDc0LCAweGEsIDB4N2IsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4YSwgMHhjZiwgMHhiLCAweDMsIDB4YiwgMHgyYSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHhiLCAweDc2LCAweGIsIDB4OTAsIDB4YiwgMHhiMiwgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhjLCAweDQwLCAweGMsIDB4NGUsIDB4YywgMHg1YywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhkLCAweDEyLCAweGQsIDB4MzcsIDB4ZCwgMHhjZCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4MmMsIDB4ZSwgMHg3NCwgMHhlLCAweGM4LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGYsIDB4YjQsIDB4MTAsIDB4YiwgMHgxMCwgMHgyMSwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4MTAsIDB4ODUsIDB4MTAsIDB4ZDMsIDB4MTAsIDB4ZjEsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MTEsIDB4MzIsIDB4MTEsIDB4NGYsIDB4MTEsIDB4NzAsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDExLCAweGQxLCAweDEyLCAweDQyLCAweDEyLCAweDc2LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHgxMywgMHgzLCAweDEzLCAweDFjLCAweDEzLCAweDQwLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHgxNCwgMHg0MSwgMHgxNCwgMHg5MCwgMHgxNCwgMHhiNCwgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4MTUsIDB4MWQsIDB4MTUsIDB4MzksIDB4MTUsIDB4NjIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDE1LCAweGZkLCAweDE2LCAweGIsIDB4MTYsIDB4NWMsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDE2LCAweDgxLCAweDE2LCAweGNiLCAweDE2LCAweGU2LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHgxNywgMHg4MSwgMHgxNywgMHg5MSwgMHgxNywgMHg5ZiwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4MTgsIDB4MmUsIDB4MTgsIDB4NTYsIDB4MTgsIDB4N2UsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDE4LCAweGMyLCAweDE5LCAweDE1LCAweDE5LCAweDI1LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHgxOSwgMHhiNywgMHgxOSwgMHhjZiwgMHgxYSwgMHg0MCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MWEsIDB4YmEsIDB4MWEsIDB4ZDYsIDB4MWIsIDB4OCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4MWIsIDB4NTQsIDB4MWIsIDB4NmUsIDB4MWIsIDB4YTQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDFiLCAweGM5LCAweDFiLCAweGUwLCAweDFiLCAweGYxLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDFjLCAweDI5LCAweDFjLCAweDNhLCAweDFjLCAweDZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHgxYywgMHg5YSwgMHgxYywgMHhiNywgMHgxYywgMHhjYiwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4MWQsIDB4M2IsIDB4MWQsIDB4NGMsIDB4MWQsIDB4NTgsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDFkLCAweGQxLCAweDFlLCAweDEsIDB4MWUsIDB4NjIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDFmLCAweDM4LCAweDFmLCAweDdkLCAweDFmLCAweDhmLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgxZiwgMHhiNSwgMHgyMCwgMHg0MCwgMHgyMCwgMHg3MywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4MjAsIDB4YjAsIDB4MjEsIDB4MmQsIDB4MjEsIDB4ODUsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDIyLCAweDI0LCAweDIyLCAweDY2LCAweDIyLCAweGRmLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHgyMywgMHg2ZSwgMHgyMywgMHg5ZSwgMHgyMywgMHhkMiwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgyNCwgMHg5ZCwgMHgyNCwgMHhhYywgMHgyNCwgMHhjMywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4MjUsIDB4NTksIDB4MjUsIDB4ODksIDB4MjUsIDB4ZDMsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweDI2LCAweDdmLCAweDI2LCAweDlhLCAweDI2LCAweGI1LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHgyNiwgMHhmMiwgMHgyNywgMHgxNiwgMHgyNywgMHgzOCwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4MjcsIDB4NzcsIDB4MjcsIDB4YTgsIDB4MjgsIDB4NDUsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDI4LCAweGQ0LCAweDI5LCAweDMyLCAweDI5LCAweGNkLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyYSwgMHgyNCwgMHgyYSwgMHg4NywgMHgyYSwgMHg5ZCwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MmIsIDB4MzEsIDB4MmIsIDB4NmIsIDB4MmIsIDB4YzIsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDJjLCAweGJhLCAweDJkLCAweDE0LCAweDJkLCAweDUwLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHgyZCwgMHhlYiwgMHgyZSwgMHgzNiwgMHgyZSwgMHg2YiwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4MmUsIDB4ODgsIDB4MmUsIDB4YmMsIDB4MmUsIDB4ZDgsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweDJmLCAweDAsIDB4MmYsIDB4MzMsIDB4MmYsIDB4NjIsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDJmLCAweGIzLCAweDJmLCAweGNiLCAweDMwLCAweDEyLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHgzMCwgMHgzYywgMHgzMCwgMHg4NSwgMHhmYywgMHgzMSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHhhLCAweGY3LCAweDcwLCAweGQ2LCAweGY4LCAweDNiLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDk5LCAweDE2LCAweGVhLCAweDYsIDB4ZDgsIDB4ZjcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4YjIsIDB4NiwgMHhkYiwgMHhmYiwgMHg3MCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHg2LCAweGZiLCAweGFhLCAweGY5LCAweDYyLCAweDUsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NDksIDB4ZmMsIDB4M2IsIDB4MTUsIDB4ZjcsIDB4NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4NSwgMHg4ZCwgMHg2LCAweGY3LCAweGIsIDB4ZmIsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHhmNywgMHhjOSwgMHg4YiwgMHhkZiwgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhhZiwgMHhkZiwgMHhmNywgMHg3MiwgMHhlMCwgMHgxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhlYSwgMHgzLCAweDkzLCAweDE2LCAweGYyLCAweDYsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYzLCAweDUsIDB4ZjcsIDB4YTgsIDB4ZmIsIDB4NjMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGRmLCAweGZjLCAweDgsIDB4ZjcsIDB4ODcsIDB4ZjcsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGZiLCAweGRmLCAweGY3LCAweDcyLCAweGY4LCAweDcsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGVhLCAweDYsIDB4MjMsIDB4ZmMsIDB4M2YsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGY3LCAweGVhLCAweDUsIDB4ZDIsIDB4ZmIsIDB4ZWEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg0NiwgMHhhLCAweGY4LCAweDdmLCAweGY3LCAweDE5LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGEsIDB4ZmIsIDB4NDQsIDB4ZjgsIDB4N2YsIDB4NGMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHhmNywgMHgxOSwgMHg1OSwgMHhhLCAweDM1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDlkLCAweGY4LCAweDdmLCAweDE1LCAweGVmLCAweDYsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGMwLCAweDNjLCAweDUsIDB4ZWYsIDB4NiwgMHhmYiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHg1LCAweDJlLCAweDYsIDB4ZSwgMHg0NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg4NiwgMHhlZCwgMHgxLCAweGY3LCAweDVhLCAweGU1LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHgzLCAweDI3LCAweGEsIDB4ZmIsIDB4OGEsIDB4ZjgsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGU1LCAweGVkLCAweDMxLCAweDYsIDB4ZjcsIDB4NDksIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGU1LCAweGVkLCAweDMxLCAweDYsIDB4ZSwgMHgzNSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMSwgMHhmOCwgMHg3YSwgMHgxNSwgMHhkMCwgMHg2LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZSwgMHg1LCAweGZiLCAweDEsIDB4NiwgMHhlLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY4LCAweDY1LCAweGFmLCAweGYyLCAweGFmLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGFmLCAweGYzLCAweGFmLCAweDMsIDB4MjcsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4ZjgsIDB4YmUsIDB4NjQsIDB4YSwgMHhhZiwgMHg1YSwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjcsIDB4NWEsIDB4MWUsIDB4YWYsIDB4MTYsIDB4YTUsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGE5LCAweGE5LCAweGExLCAweDc1LCAweDZmLCAweDZlLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2ZSwgMHg3MCwgMHg3MiwgMHhhMCwgMHhhYiwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHhhLCAweGY4LCAweDg3LCAweDc1LCAweGEsIDB4MTMsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGEsIDB4ZmIsIDB4YTYsIDB4ZjgsIDB4ODcsIDB4NmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YTIsIDB4ODAsIDB4N2YsIDB4YTEsIDB4MWYsIDB4ODAsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDdmLCAweDUzLCAweGEsIDB4N2UsIDB4N2IsIDB4OTIsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDFmLCAweDEzLCAweGQwLCAweDk3LCAweDcyLCAweDcwLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHgxYiwgMHgxMywgMHhlMCwgMHg3MywgMHhhLCAweDczLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhmNywgMHg4YSwgMHhlMCwgMHhmNywgMHg2ZCwgMHhlMCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHhlYSwgMHhmNywgMHhkMiwgMHhlOCwgMHgzLCAweGQ1LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4MiwgMHg2LCAweGY3LCAweDE4LCAweGY3LCAweDRiLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0YSwgMHhjMywgMHg2NywgMHhkZiwgMHhmYiwgMHgyLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlOCwgMHhiYSwgMHg5MSwgMHhjZSwgMHhhNSwgMHgxYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4ZmIsIDB4MjYsIDB4YjIsIDB4ZmIsIDB4ZSwgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NiwgMHhlYSwgMHhmZCwgMHhkLCAweDE1LCAweGY3LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMywgMHg3LCAweGM1LCAweGY3LCAweDMzLCAweDhiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGZiLCAweDEwLCAweGZiLCAweDNiLCAweDhjLCAweDU5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHhmNywgMHhkZiwgMHgxNSwgMHhmNywgMHg2ZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4NywgMHhkYSwgMHhlYiwgMHg4OSwgMHhmYiwgMHgyLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0LCAweDhjLCAweDRjLCAweDFmLCAweGUsIDB4YWEsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGY4LCAweGUyLCAweGRlLCAweDEsIDB4YzMsIDB4ZWUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZGUsIDB4ZjcsIDB4OGQsIDB4MTUsIDB4MzIsIDB4NzgsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGZiLCAweDFkLCAweDFiLCAweGZiLCAweDQwLCAweDUwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhmNywgMHhjLCAweGY3LCAweGEsIDB4YWIsIDB4ZjcsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDViLCAweGY3LCAweDE5LCAweGJjLCAweDJjLCAweDUwLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlOSwgMHhhMSwgMHg1LCAweGY3LCAweDJiLCAweDYwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGNiLCAweGZiLCAweDE1LCAweDFiLCAweGZiLCAweDQ1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhmYiwgMHg4LCAweGZiLCAweDk2LCAweGZiLCAweDU3LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0ZiwgMHhmNywgMHg4OCwgMHhkOSwgMHhmNywgMHg0MSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzAsIDB4YzMsIDB4MWYsIDB4ZSwgMHhhYSwgMHhmYiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4NjcsIDB4ZGEsIDB4ZjgsIDB4ZTEsIDB4ZGUsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4ZWUsIDB4ZjcsIDB4ODUsIDB4ZTEsIDB4MywgMHhmNywgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4MTUsIDB4NzIsIDB4M2YsIDB4NSwgMHhiZiwgMHg4YSwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NzAsIDB4MWEsIDB4NjUsIDB4ZmIsIDB4NywgMHg5MSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MWUsIDB4ODcsIDB4NGMsIDB4NSwgMHhmNywgMHgyZCwgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZDgsIDB4YWUsIDB4NzUsIDB4YjAsIDB4NGUsIDB4OTIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGFjLCAweDUsIDB4ZjcsIDB4MWUsIDB4ZjcsIDB4MCwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2EsIDB4YjUsIDB4MWYsIDB4MmIsIDB4YTQsIDB4NSwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NTksIDB4MmQsIDB4ZmIsIDB4MWUsIDB4MWIsIDB4ZmIsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGY3LCAweDJkLCAweGY3LCAweDIxLCAweGY3LCAweDFhLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNSwgMHhmNywgMHg1MiwgMHhmNywgMHgxOSwgMHhiNCwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4OWQsIDB4MWYsIDB4ZTksIDB4YTEsIDB4NSwgMHhmNywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4ZmIsIDB4NywgMHhjOCwgMHhmYiwgMHgxMywgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZmIsIDB4NGEsIDB4MjgsIDB4ZmIsIDB4YWIsIDB4ZmIsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGZiLCAweDY1LCAweGY3LCAweDY5LCAweDFmLCAweGUsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGUwLCAweGY4LCAweGI4LCAweGUwLCAweDEyLCAweGRjLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyNCwgMHhlZCwgMHgxNywgMHhkYywgMHgxNiwgMHhmNywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg2ZSwgMHhmNywgMHgxNSwgMHhmNywgMHgxMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4MWYsIDB4MTMsIDB4ZTAsIDB4ZjcsIDB4OWEsIDB4ZmIsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGZiLCAweDVmLCAweDFlLCAweGZiLCAweDhhLCAweDYsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweGQsIDB4MTUsIDB4ZjgsIDB4YjgsIDB4NywgMHgxMywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4NiwgMHhmNywgMHgyZSwgMHhlYSwgMHgyMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4ZmIsIDB4YWMsIDB4ZmIsIDB4MzksIDB4OGUsIDB4MzcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NzMsIDB4OGIsIDB4ZTAsIDB4ZjcsIDB4ODYsIDB4ZTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGUwLCAweDZlLCAweGEsIDB4MywgMHhlMSwgMHgxNiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4ZjgsIDB4ODUsIDB4MzYsIDB4ZmMsIDB4MjYsIDB4ZmIsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDE1LCAweDM2LCAweGZjLCAweDE1LCAweGZiLCAweDg2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHgzNiwgMHg3LCAweGUsIDB4NDMsIDB4YSwgMHhjMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MzYsIDB4YSwgMHhmNywgMHg1NCwgMHhjMywgMHgyZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDQzLCAweGEsIDB4ZjcsIDB4NTUsIDB4NzcsIDB4MzYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4YzMsIDB4MmMsIDB4YSwgMHhlLCAweDQzLCAweGEsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweDZlLCAweGEsIDB4YTYsIDB4ZTUsIDB4ZTYsIDB4ZTUsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4ZSwgMHhjYywgMHgyZSwgMHhhLCAweGUsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YzcsIDB4ZjcsIDB4MTksIDB4MzYsIDB4YSwgMHhmNywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4NGMsIDB4YSwgMHg0YSwgMHhmNywgMHgxOSwgMHg1OSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHg4YiwgMHhlMCwgMHhmNywgMHg3YiwgMHhlMCwgMHhmNywgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4MSwgMHhkYiwgMHhlYSwgMHhmOCwgMHgyNSwgMHhlZCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHgxNiwgMHhmNywgMHg4OSwgMHg2LCAweGY3LCAweDVhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmNywgMHhjLCAweGY3LCAweDg2LCAweGY3LCAweDlhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhlOSwgMHhmYiwgMHg1ZiwgMHgxZiwgMHhmYiwgMHg4OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4M2IsIDB4MzYsIDB4ZGIsIDB4NiwgMHhlYSwgMHhmYiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4N2IsIDB4ZjcsIDB4NTcsIDB4ZTAsIDB4ZmIsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdjLCAweGY3LCAweDJhLCAweDcsIDB4ZjcsIDB4MzQsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGZiLCAweDVlLCAweGZiLCAweGFiLCAweGZiLCAweDNiLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHgxZiwgMHhlLCAweDczLCAweDhiLCAweGRhLCAweGY3LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhkZiwgMHhjYiwgMHhmNywgMHg0MSwgMHhkYSwgMHgxLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MywgMHgxNSwgMHhmNCwgMHg2LCAweGZiLCAweDQwLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHgzOCwgMHhmNywgMHg2YiwgMHgxYiwgMHhjMSwgMHhjOSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YmIsIDB4MWYsIDB4ZWQsIDB4NywgMHg2OCwgMHg1ZSwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NGYsIDB4MWIsIDB4ZmIsIDB4MjAsIDB4MzEsIDB4Y2IsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NzMsIDB4MWYsIDB4ZjcsIDB4ZTQsIDB4NiwgMHg5YSwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHhmZiwgMHg2LCAweDhhLCAweDk5LCAweDhiLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHhhYywgMHg4LCAweGY4LCAweGYsIDB4NiwgMHg5YSwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYywgMHgxNSwgMHg2LCAweGY3LCAweDYsIDB4YTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4YzcsIDB4ZjcsIDB4MTksIDB4MWIsIDB4YzUsIDB4YmYsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGI4LCAweDFmLCAweGEyLCAweGUyLCAweDUsIDB4YTcsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDk2LCAweDRlLCAweDFiLCAweGZiLCAweDViLCAweGZiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhmYiwgMHgzOCwgMHg2NiwgMHgxZiwgMHgzNywgMHg2LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHg1LCAweGU3LCAweDYsIDB4OGEsIDB4NzcsIDB4OGMsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDc3LCAweDgsIDB4M2UsIDB4NiwgMHhlLCAweDNiLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHhkOCwgMHhlMCwgMHhmNywgMHg3NCwgMHhlMCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzLCAweGUxLCAweDE2LCAweGVhLCAweGY3LCAweGQ4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhlMCwgMHhmYiwgMHhkYiwgMHhmNywgMHg3NCwgMHhmOCwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4ZmMsIDB4ODUsIDB4NiwgMHhlLCAweGUyLCAweDc4LCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NiwgMHhlMiwgMHhmNywgMHhiNSwgMHhkZSwgMHgxMiwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4ZjgsIDB4NmEsIDB4ZTYsIDB4MTcsIDB4ZjgsIDB4MjksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDE1LCAweGY3LCAweDY0LCAweGZiLCAweDFjLCAweDYsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDM5LCAweDRmLCAweDIwLCAweDFiLCAweDEzLCAweDMwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHgyYiwgMHhmNywgMHhjLCAweGY3LCAweDNiLCAweGQyLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3OCwgMHhmNywgMHg4MywgMHgxZiwgMHgxMywgMHhmOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4YTksIDB4ZmIsIDB4NSwgMHg1ZCwgMHg5OCwgMHgxZiwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NSwgMHhjMCwgMHg3ZSwgMHg2NCwgMHhmNywgMHgzOSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4MWIsIDB4ZmIsIDB4YjQsIDB4NDYsIDB4ZmIsIDB4ODIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGZiLCAweDdiLCAweGY3LCAweDI0LCAweGZiLCAweDIzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhmNywgMHgyZCwgMHhmNSwgMHhkZCwgMHhhYSwgMHhiMSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTMsIDB4ZmIsIDB4YmYsIDB4NywgMHhlLCAweGFhLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHhlNSwgMHhlMCwgMHhmNywgMHhiYywgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHhlYSwgMHhmOCwgMHhmLCAweGVhLCAweDMsIDB4ZDgsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY3LCAweGU1LCAweGY4LCAweGYsIDB4ZmIsIDB4ZTUsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDYyLCAweDJjLCAweGZiLCAweGJjLCAweGZjLCAweGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDJjLCAweDYsIDB4ZSwgMHhmYywgMHgzMSwgMHgzOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhlYywgMHgzLCAweGU2LCAweDE2LCAweGVjLCAweGY5LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg2LCAweGUsIDB4NjEsIDB4YSwgMHhkMiwgMHhmOSwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4YSwgMHhmNywgMHgxNSwgMHhmNywgMHgxZSwgMHgzOCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg1MSwgMHhhLCAweDRiLCAweGEsIDB4ZjksIDB4YWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDEsIDB4ZTUsIDB4ZWEsIDB4MywgMHg4NSwgMHhmOSwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZWYsIDB4NiwgMHhiYSwgMHhkZSwgMHhiOCwgMHgzOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg2LCAweDI2LCAweDQyLCAweGEsIDB4OGEsIDB4NTEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4YSwgMHhmOSwgMHhiNSwgMHhlZiwgMHgxMiwgMHg5OCwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ZWEsIDB4ODIsIDB4ZTUsIDB4MTMsIDB4ZDAsIDB4ZTUsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY5LCAweDYwLCAweDJjLCAweDYsIDB4MTMsIDB4ZTgsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDU4LCAweGEsIDB4NjEsIDB4YSwgMHhmNywgMHgxZSwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4MTUsIDB4ZDEsIDB4NiwgMHgzNSwgMHhmNywgMHgxZiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkZSwgMHg1MSwgMHhhLCAweGZiLCAweDUzLCAweDc4LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgyMCwgMHg3NywgMHgxLCAweDljLCAweGUxLCAweGY3LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHgzLCAweDljLCAweGY3LCAweDViLCAweDE1LCAweGZiLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHg2OSwgMHhkMiwgMHhmNywgMHg0OSwgMHhhNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjcsIDB4MywgMHgxZSwgMHhmOCwgMHg4NywgMHgyYywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4NywgMHg1MCwgMHg4NiwgMHgyZCwgMHgyMCwgMHgyNywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4YmMsIDB4ODksIDB4MWUsIDB4ZSwgMHg3MywgMHgzOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHhlYSwgMHgzLCAweGQ3LCAweDE2LCAweGVhLCAweGY3LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweGEsIDB4ZjcsIDB4NiwgMHhmNywgMHg4ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmUsIDB4NSwgMHhmNywgMHgxMSwgMHg2LCAweGZiLCAweGM4LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHhmNywgMHhiZiwgMHhmNywgMHhiOCwgMHg1LCAweGZiLCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweGY3LCAweGZiLCAweGY5LCAweDUsIDB4ZjcsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDcsIDB4ZSwgMHg4YiwgMHhlMCwgMHhmOSwgMHhkLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGQ3LCAweGVhLCAweDMsIDB4ZDcsIDB4MTYsIDB4ZjgsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweGZjLCAweDIsIDB4ZjksIDB4ZCwgMHgyYywgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGUwLCAweGY5LCAweGQsIDB4NzcsIDB4MSwgMHhkNiwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhkNiwgMHgxNiwgMHhmOCwgMHg2MiwgMHhlMCwgMHhmYywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNCwgMHg2LCAweGY3LCAweDM1LCAweDVhLCAweGEsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZmIsIDB4MzUsIDB4ZmIsIDB4MWUsIDB4NSwgMHhmNywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZmIsIDB4ZmMsIDB4NywgMHgyYywgMHgzOCwgMHg1LCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGVhLCAweGRkLCAweDUsIDB4ZSwgMHhmNywgMHgyMiwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkNCwgMHhlNSwgMHhmOCwgMHg5MCwgMHhlNSwgMHgzLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhlNSwgMHhmOCwgMHhmNywgMHg4ZSwgMHg2LCAweGY3LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhmNywgMHg1LCAweGUwLCAweDYsIDB4ZjcsIDB4NjYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDUsIDB4OGQsIDB4ZmMsIDB4ZWQsIDB4ZTUsIDB4ZjksIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE2LCAweDYsIDB4ZmIsIDB4NjUsIDB4ZmMsIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NiwgMHhmYiwgMHg1ZSwgMHhmOCwgMHhmYiwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHg2LCAweGUsIDB4YWEsIDB4MzksIDB4YSwgMHhkNywgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MWEsIDB4ZTUsIDB4MywgMHhkNywgMHgxNiwgMHhlNSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4OGQsIDB4NiwgMHhmOCwgMHgxMSwgMHhmYywgMHhjOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHhmOSwgMHg2MiwgMHgzMSwgMHhmYywgMHhjOCwgMHg4OSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgxMSwgMHhmOCwgMHhjOCwgMHg1LCAweDJhLCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4ZDcsIDB4ZjcsIDB4MmUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGI1LCAweDEsIDB4ZDcsIDB4ZTUsIDB4ZjgsIDB4MWEsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZDcsIDB4MTYsIDB4ZTUsIDB4ZjgsIDB4YzYsIDB4OGQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MTEsIDB4ZmMsIDB4YzYsIDB4NSwgMHhlYywgMHhmOSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZmMsIDB4YzYsIDB4NiwgMHhmYywgMHgxMywgMHhmOCwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyYSwgMHg2LCAweGY3LCAweDE4LCAweGUzLCAweDZiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGExLCAweDdmLCAweDgwLCAweGExLCAweDFmLCAweDdmLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg4MCwgMHg1MywgMHhhLCAweDg3LCAweDc4LCAweDk0LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHgxZiwgMHg5NiwgMHg3MiwgMHg2YywgMHg5NiwgMHg3MSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4YSwgMHhlMiwgMHg3OCwgMHhkZSwgMHhmOCwgMHhlMiwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhjNywgMHhlZiwgMHhmOCwgMHg1ZiwgMHhlZiwgMHgzLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmOCwgMHgxNSwgMHhmYiwgMHg0ZiwgMHhmNywgMHhkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhmNywgMHg3OCwgMHhmNywgMHg1NywgMHhmNywgMHgzMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjcsIDB4ODAsIDB4ZjcsIDB4N2YsIDB4ZmIsIDB4MmMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweGZiLCAweDViLCAweGZiLCAweDRjLCAweGZiLCAweDM5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweDk3LCAweDFlLCAweGVmLCAweDE2LCAweGY3LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhmNywgMHgzYSwgMHhmNywgMHg0OSwgMHhmNywgMHgxMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4MzIsIDB4ZmIsIDB4NjUsIDB4ZmIsIDB4NWMsIDB4ZmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4ZmIsIDB4MTksIDB4ZmIsIDB4MjgsIDB4MjYsIDB4ZjcsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2YsIDB4MWUsIDB4ZSwgMHhmNywgMHhjOSwgMHg3OCwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4ZTAsIDB4ZjcsIDB4OGQsIDB4ZTAsIDB4ZjcsIDB4NzksIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGQ3LCAweDEyLCAweGNkLCAweGVkLCAweGY4LCAweDIsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDc2LCAweGY4LCAweGE2LCAweDg1LCAweDE1LCAweGY4LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhmYiwgMHhlZiwgMHhmNywgMHg4ZCwgMHhmNywgMHhjNywgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YzcsIDB4ZjcsIDB4NzksIDB4ZjcsIDB4ZTAsIDB4ZTAsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDJhLCAweDg5LCAweDYsIDB4MTMsIDB4OGUsIDB4ZTIsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDlmLCAweDQzLCAweDFiLCAweGZiLCAweDY2LCAweDNlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhmYiwgMHg1NywgMHhmYiwgMHgzYiwgMHhjYSwgMHhmYiwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzQsIDB4YjUsIDB4ZjEsIDB4OTIsIDB4ZjcsIDB4MSwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGQsIDB4NiwgMHhmYywgMHgyMCwgMHhmNywgMHg5ZCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZiwgMHhhYywgMHhmNywgMHg0NCwgMHhmNywgMHgzMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4YjksIDB4ZmIsIDB4NWQsIDB4MjksIDB4ZmIsIDB4ZSwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGIsIDB4ZmIsIDB4MmEsIDB4MjUsIDB4MzQsIDB4ZjIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDFlLCAweGUsIDB4NGYsIDB4YSwgMHhiZCwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4YSwgMHhmNywgMHhlMiwgMHhmOSwgMHhhYywgMHgyZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmMiwgMHgyNiwgMHhhLCAweDRmLCAweGEsIDB4ZjcsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDQ1LCAweGEsIDB4ZjcsIDB4N2YsIDB4ZjksIDB4YWMsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4YjgsIDB4MjYsIDB4YSwgMHg0ZiwgMHhhLCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGJjLCAweGY3LCAweGY5LCAweDIxLCAweGEsIDB4ZjQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDJlLCAweGEsIDB4ZSwgMHg0ZiwgMHhhLCAweGI5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg0NSwgMHhhLCAweGY4LCAweDEyLCAweGY5LCAweGE4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHg2LCAweDQ5LCAweGY3LCAweDIxLCAweDUsIDB4ZmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg3MywgMHgyNiwgMHhhLCAweGUyLCAweDg3LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg3NiwgMHhmOSwgMHgyOCwgMHhkYSwgMHg5YywgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZWQsIDB4ZjgsIDB4N2MsIDB4ZWQsIDB4MTMsIDB4NmMsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDE1LCAweGJjLCAweDYzLCAweGRjLCAweGU1LCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDZjLCAweGI2LCAweGM0LCAweDVmLCAweGY3LCAweGIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ4LCAweGY3LCAweDM1LCAweGY3LCAweDEwLCAweGY3LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHg2MCwgMHhjZCwgMHg2YSwgMHhiYiwgMHgxZiwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4NWEsIDB4YjMsIDB4MzksIDB4MzAsIDB4NSwgMHgxMywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4NjAsIDB4NGUsIDB4YjUsIDB4ZmIsIDB4OSwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4ZmIsIDB4MWEsIDB4ZmIsIDB4MjUsIDB4ZmIsIDB4NmQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4YjIsIDB4NTIsIDB4YjQsIDB4NGQsIDB4MWYsIDB4YzgsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDc2LCAweGIzLCAweDc1LCAweGIzLCAweGVhLCAweDFhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhmNywgMHgyMSwgMHhjNSwgMHhmMywgMHhkZCwgMHhiMywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4YjMsIDB4MWUsIDB4ZmIsIDB4ZDcsIDB4ZmMsIDB4NTMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDAsIDB4ZjgsIDB4MjEsIDB4NSwgMHhhNCwgMHg1ZCwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4NDIsIDB4MWEsIDB4ZmIsIDB4NDgsIDB4MjQsIDB4MjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDM0LCAweDVjLCAweGIyLCAweGEwLCAweDcwLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweGEsIDB4NDUsIDB4YSwgMHhmNywgMHg3NiwgMHhmOSwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4Y2MsIDB4NiwgMHhiYiwgMHhhYiwgMHg4YSwgMHg5MCwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4ODIsIDB4ODAsIDB4YTMsIDB4MWUsIDB4N2YsIDB4YTcsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDk2LCAweDFiLCAweGEwLCAweGQ2LCAweDg2LCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweGEsIDB4ODcsIDB4NzgsIDB4OTQsIDB4OTYsIDB4NzMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDk2LCAweDZkLCAweDk2LCAweDcwLCAweDhhLCAweDgsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDY3LCAweDNmLCAweDFmLCAweGZiLCAweDQ1LCAweGZjLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhhLCAweGUsIDB4NWYsIDB4YSwgMHhmNywgMHhiNiwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTYsIDB4ZTAsIDB4NmUsIDB4YSwgMHhmNywgMHhkYSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhlMSwgMHgxNiwgMHhlYSwgMHhmNywgMHhiNiwgMHhmNywgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgxOCwgMHhmNywgMHgxOSwgMHhiYiwgMHhmNywgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzksIDB4ZmIsIDB4MTUsIDB4YmEsIDB4ZmIsIDB4MWMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGEzLCAweDYsIDB4ZWEsIDB4ZmIsIDB4ZWIsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGY3LCAweDQ0LCAweDcsIDB4ZWIsIDB4ZDIsIDB4NzEsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEyLCAweGZiLCAweDcsIDB4ODYsIDB4NTcsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4NjgsIDB4NzYsIDB4YjcsIDB4ZGQsIDB4ZjgsIDB4ZGQsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YzMsIDB4ZWQsIDB4ZjgsIDB4NmYsIDB4ZWQsIDB4MywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4YWIsIDB4MTUsIDB4NmMsIDB4NTMsIDB4NTAsIDB4N2UsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDVjLCAweGZiLCAweDIzLCAweGY3LCAweDJlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhmNywgMHg2OCwgMHhmNywgMHgxMywgMHhmNywgMHgzNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4ZjcsIDB4NWEsIDB4ZjcsIDB4MjcsIDB4ZmIsIDB4MjcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDM3LCAweDc3LCAweGZiLCAweDcsIDB4MzMsIDB4MzYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDcwLCAweGIzLCAweDc0LCAweGI2LCAweDdhLCAweDcwLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg1OCwgMHg5ZSwgMHg1OCwgMHhhOCwgMHg1NywgMHhiMywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOSwgMHhmNywgMHgzYywgMHgxNSwgMHhkNywgMHg3NiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4YTMsIDB4NzQsIDB4OCwgMHhkMywgMHhjYiwgMHg5OCwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4MWEsIDB4ZjcsIDB4NjAsIDB4ZmIsIDB4ZSwgMHhlNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4MjYsIDB4ZmIsIDB4MjQsIDB4NTAsIDB4ZmIsIDB4N2UsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGY3LCAweDEzLCAweDNlLCAweGY3LCAweGEsIDB4YmUsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDkwLCAweDk2LCAweDFlLCAweDZjLCAweDllLCAweDZmLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg5MywgMHg4LCAweGUsIDB4YWEsIDB4YTAsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGUwLCAweGY3LCAweDgyLCAweGRhLCAweDEsIDB4ZTMsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGVjLCAweGVkLCAweDMsIDB4ZTMsIDB4MTYsIDB4ZWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGNiLCAweDYsIDB4ZGEsIDB4YjYsIDB4ODQsIDB4ZmIsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweDFmLCAweGU5LCAweGZiLCAweDI4LCAweDUsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHhkLCAweGY3LCAweDQzLCAweDUzLCAweGUyLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHg2NywgMHg5YywgMHgxOSwgMHg4ZCwgMHg3LCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweGRhLCAweGNiLCAweGY3LCAweDcsIDB4MWEsIDB4ZjcsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI1LCAweGI3LCAweGZiLCAweDE1LCAweDFlLCAweGZiLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGVhLCAweGZiLCAweGQxLCAweDE1LCAweGY3LCAweDgyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHg3LCAweGQ1LCAweGYxLCAweDcyLCAweDJmLCAweDI0LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHgzYywgMHgxZiwgMHhlLCAweDczLCAweDc4LCAweGUyLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHhlMiwgMHgxLCAweGQ3LCAweGU2LCAweGY3LCAweGY1LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGJjLCAweGY3LCAweDc5LCAweDE1LCAweGZiLCAweDI3LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHgyNiwgMHhmNywgMHg2YiwgMHgxYiwgMHhmNywgMHgzNywgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjcsIDB4ZCwgMHhmNywgMHgzNSwgMHhmYiwgMHgyYSwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTcsIDB4YTgsIDB4MWYsIDB4ZmIsIDB4MTgsIDB4YTksIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGNiLCAweDFhLCAweGU2LCAweGVlLCAweGEyLCAweGM5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhhNCwgMHgzNSwgMHg1NiwgMHg5MCwgMHgxZSwgMHhlNywgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHgyNCwgMHg4NiwgMHhmYiwgMHgzLCAweGQ2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHgxYiwgMHhmYiwgMHgzMywgMHgyZSwgMHgzMywgMHhmYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNiwgMHhmNywgMHgyMiwgMHg2OSwgMHhlOCwgMHg3NCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4NjgsIDB4ZDMsIDB4NzgsIDB4MzUsIDB4MWEsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDVmLCAweDI4LCAweDQxLCAweGZiLCAweGUsIDB4YWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDdiLCAweDFlLCAweGUsIDB4NzMsIDB4NzgsIDB4ZTAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweGUwLCAweDEsIDB4ZDksIDB4ZTUsIDB4ZjcsIDB4ZWYsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YmMsIDB4ZjcsIDB4NzQsIDB4MTUsIDB4ZmIsIDB4MTAsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGZiLCAweGIsIDB4ZjcsIDB4NmEsIDB4MWIsIDB4ZjcsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweGU0LCAweGY3LCAweGIsIDB4ZjcsIDB4MzEsIDB4ZmIsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGZiLCAweDE3LCAweGE4LCAweDFmLCAweGZiLCAweDE3LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg5YywgMHhjOSwgMHgxYSwgMHhlNCwgMHhlZSwgMHhhMywgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4YTQsIDB4MzYsIDB4NTcsIDB4OTAsIDB4MWUsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDUsIDB4ZjcsIDB4MjEsIDB4ODYsIDB4ZmIsIDB4MiwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmUsIDB4MWIsIDB4ZmIsIDB4MzMsIDB4MmYsIDB4MzQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZmIsIDB4MjMsIDB4ZjcsIDB4MjEsIDB4NmEsIDB4ZTgsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDI1LCAweDY4LCAweGQzLCAweDc5LCAweDM3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHgzYywgMHg2MCwgMHgyOCwgMHg0MiwgMHhmYiwgMHg2LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOCwgMHg3MiwgMHgxZSwgMHhmNywgMHgyYSwgMHhmOCwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4YSwgMHgzYiwgMHhhMCwgMHg3NiwgMHhmOSwgMHhkLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDk1LCAweGVhLCAweDMsIDB4ZjcsIDB4OTUsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY5LCAweGQsIDB4ZjcsIDB4ODksIDB4ZTAsIDB4ZmMsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGY3LCAweDg3LCAweDYsIDB4ZSwgMHg1ZiwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhlMCwgMHhmNywgMHg5NCwgMHhlMCwgMHhmNywgMHgyNywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4YSwgMHhmNywgMHhlYiwgMHhlZCwgMHgzLCAweGUxLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhmNywgMHgyNSwgMHhmNywgMHgzOSwgMHg2LCAweGY3LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNCwgMHhiOSwgMHhmNywgMHgzZCwgMHhmNywgMHgzNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YmQsIDB4ZmIsIDB4MjEsIDB4MWYsIDB4ZmIsIDB4MzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDJjLCAweDYsIDB4ZWEsIDB4ZmMsIDB4N2MsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGY3LCAweDM5LCAweDcsIDB4ZTUsIDB4ZTMsIDB4NzksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZmIsIDB4MTMsIDB4ZmIsIDB4MTUsIDB4ODgsIDB4NWEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YWEsIDB4NzgsIDB4ZTAsIDB4ZjksIDB4MjAsIDB4NzcsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjksIDB4NjIsIDB4MTUsIDB4ZmMsIDB4M2EsIDB4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4OTEsIDB4ZmIsIDB4NTAsIDB4ZjcsIDB4YTMsIDB4ZjcsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweGY3LCAweDcwLCAweGVhLCAweDFlLCAweGY4LCAweDNhLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgzYSwgMHg3LCAweGZiLCAweDE1LCAweDdhLCAweDI2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmYiwgMHg0OCwgMHg4OSwgMHhmNywgMHgyMywgMHhlMiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4M2EsIDB4NywgMHhlLCAweDJiLCAweGEsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDJmLCAweGEsIDB4ZSwgMHgyYiwgMHhhLCAweGFjLCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhhLCAweGUsIDB4YWEsIDB4NzgsIDB4ZTAsIDB4ZjksIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweDJhLCAweGEsIDB4YmYsIDB4ZTMsIDB4MmUsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhhLCAweGY3LCAweDNmLCAweGRhLCAweDVlLCAweGEsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGEsIDB4ZjcsIDB4YjUsIDB4MTYsIDB4ZTgsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ZjksIDB4NjIsIDB4NSwgMHgzMCwgMHg2LCAweGZiLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHgxMywgMHhmYiwgMHg2ZSwgMHhmOSwgMHgxMywgMHg1LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZjcsIDB4OTEsIDB4MzksIDB4YSwgMHhmNywgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZWEsIDB4NiwgMHhmNywgMHgzYywgMHhmOSwgMHhjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDYsIDB4ZjcsIDB4NDAsIDB4ZmQsIDB4YywgMHg1LCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDU4LCAweGY5LCAweDYyLCAweDUsIDB4MmQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjcsIDB4ZmMsIDB4ZmUsIDB4ZmIsIDB4MzIsIDB4ZjgsIDB4ZmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MiwgMHg2LCAweGZiLCAweDNhLCAweGZjLCAweGZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDg5LCAweDYsIDB4ZmIsIDB4MWYsIDB4ZjgsIDB4ZmUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4NiwgMHhlLCAweDczLCAweDM5LCAweGEsIDB4OWUsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEsIDB4NiwgMHhmNywgMHg2MSwgMHhmNywgMHhjNCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg2LCAweGY3LCAweDVlLCAweGZiLCAweGM0LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NiwgMHhmYiwgMHg5OCwgMHhmOCwgMHgxMCwgMHhmNywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTYsIDB4NSwgMHgzMiwgMHg2LCAweGZiLCAweDVmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhmYiwgMHg0NywgMHhmNywgMHhhNSwgMHg1LCAweGZiLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4N2YsIDB4ZmIsIDB4ZWMsIDB4NSwgMHhlLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhhLCAweGY3LCAweGFmLCAweGU4LCAweDMsIDB4ZjcsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGU4LCAweGY3LCAweGMzLCAweDYsIDB4ZjcsIDB4YTksIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDUsIDB4MjAsIDB4NiwgMHhmYiwgMHg2NywgMHhmYiwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjUsIDB4ZjcsIDB4ZTcsIDB4NSwgMHhmYiwgMHg0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGExLCAweGZjLCAweDMzLCAweDUsIDB4ZSwgMHg1ZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHhhYywgMHhmNywgMHgxZCwgMHgxLCAweGY3LCAweGFkLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDU3LCAweGEsIDB4ZmIsIDB4NjUsIDB4ZmIsIDB4ZTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGY3LCAweGUyLCAweDUsIDB4ZmIsIDB4OCwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhmYywgMHgyZSwgMHg1LCAweDg4LCAweGY4LCAweDdkLCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4NWYsIDB4YSwgMHhmOSwgMHhiNSwgMHhlZiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWEsIDB4ZTUsIDB4ODQsIDB4ZWEsIDB4OGUsIDB4ZTUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDU3LCAweGEsIDB4ZmIsIDB4NmEsIDB4ZmIsIDB4ZTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGY3LCAweGUyLCAweDM4LCAweGEsIDB4ZjcsIDB4OWYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDUsIDB4MTMsIDB4ZTgsIDB4MzgsIDB4ZjgsIDB4ODYsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHgzYiwgMHg4YiwgMHhlMCwgMHhmOCwgMHhiOCwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4YSwgMHhmOCwgMHg0ZiwgMHhmOCwgMHhiOCwgMHg1LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg5MywgMHgzNiwgMHhmOCwgMHgyMiwgMHg3LCAweGZjLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhiNCwgMHg1LCAweGUsIDB4M2IsIDB4OGIsIDB4ZTAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGUwLCAweGY3LCAweDZjLCAweDc3LCAweDZhLCAweGEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGY4LCAweGIzLCAweDUsIDB4ZTAsIDB4ZmMsIDB4OTUsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDI0LCAweDcsIDB4ZmMsIDB4NGQsIDB4ZmMsIDB4YWYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODIsIDB4ZjksIDB4NTMsIDB4MzcsIDB4YSwgMHg3YywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzAsIDB4ZDMsIDB4MSwgMHhhZiwgMHhlOSwgMHhmNywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MywgMHhiZSwgMHhmOCwgMHhkLCAweDE1LCAweGUxLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGI2LCAweDk2LCAweDliLCAweGM0LCAweGY3LCAweDIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE1LCAweDg4LCAweDNhLCAweDUzLCAweDg5LCAweDFmLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHgyZSwgMHg4MSwgMHg3ZSwgMHg4OSwgMHg4LCAweDUyLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOSwgMHg3YSwgMHhmYiwgMHgxZSwgMHgxYSwgMHgzNSwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4ZjcsIDB4NiwgMHhjMywgMHhjNiwgMHg5OCwgMHhjYSwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OGQsIDB4N2UsIDB4OWQsIDB4NzMsIDB4OTksIDB4NzAsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4NiwgMHg2ZiwgMHhiZCwgMHg3YiwgMHg5MiwgMHhmNywgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4MjgsIDB4NywgMHhlNSwgMHg4MCwgMHhmNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1ZCwgMHhmYiwgMHg1YywgMHg3ZSwgMHhmYiwgMHg3LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxZSwgMHhmNywgMHhlZiwgMHhmYiwgMHg5LCAweDE1LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg1ZiwgMHg2OCwgMHg2NSwgMHgxZSwgMHg1ZiwgMHg2MiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4NzIsIDB4MWIsIDB4M2MsIDB4ODUsIDB4YmIsIDB4YjAsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDk1LCAweGMxLCAweDkzLCAweDFmLCAweGI5LCAweDkyLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhhZCwgMHg5OCwgMHg4LCAweGUsIDB4NDAsIDB4YSwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWQsIDB4NDksIDB4YSwgMHgzZiwgMHhhLCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhiLCAweDIwLCAweGEsIDB4NDAsIDB4YSwgMHhmNywgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NDksIDB4YSwgMHgzYSwgMHhhLCAweDNhLCAweGZjLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGEsIDB4NTQsIDB4YSwgMHhmNywgMHhlLCAweGY4LCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhhLCAweGY3LCAweDExLCAweGY3LCAweDIxLCAweDU5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGEsIDB4ZDcsIDB4ZWYsIDB4NDksIDB4YSwgMHgzZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MywgMHhmYiwgMHhlZiwgMHgyMCwgMHhhLCAweGY3LCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhkNCwgMHhmNywgMHg0NywgMHhkMywgMHhmNywgMHgzMSwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhZiwgMHhlOSwgMHhmNywgMHg5NCwgMHhlNCwgMHgzLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0LCAweDE1LCAweGUxLCAweDgxLCAweDUsIDB4YmEsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGM4LCAweGU2LCAweDFiLCAweGY2LCAweDk1LCAweDUwLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHgxZiwgMHg2NCwgMHg3ZiwgMHg1OCwgMHg4OCwgMHg1MCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgyNSwgMHg3ZCwgMHgyOCwgMHgzZiwgMHgzZSwgMHgxYSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ZmIsIDB4NCwgMHhmNywgMHgyZCwgMHhlZCwgMHhjYywgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YmQsIDB4MWUsIDB4M2QsIDB4YzcsIDB4Y2MsIDB4NzUsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGY3LCAweDFlLCAweGNiLCAweGUyLCAweGUyLCAweGE0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHg5NywgMHg1LCAweDY1LCAweDgyLCAweDY5LCAweDQwLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgyYiwgMHg1MCwgMHhkZCwgMHhlYywgMHg5NiwgMHgxZiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg2LCAweGY3LCAweDM4LCAweDUxLCAweGY3LCAweDFkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHgyNSwgMHg1ZiwgMHg1YSwgMHg3NiwgMHg3NywgMHgxZSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4NmQsIDB4YmIsIDB4ZmIsIDB4MWQsIDB4MWIsIDB4ZmIsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGZiLCAweGMsIDB4NTksIDB4N2YsIDB4MWYsIDB4ZjcsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDAsIDB4MTUsIDB4ZmIsIDB4MTIsIDB4YTIsIDB4M2UsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGMsIDB4MWIsIDB4MzMsIDB4OGYsIDB4YzgsIDB4YTMsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweGIwLCAweGFmLCAweDkxLCAweDFmLCAweGJmLCAweDkzLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhiMSwgMHg5YywgMHg4LCAweGUyLCAweGJjLCAweDE1LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhiNCwgMHhkZSwgMHhlZCwgMHgxYiwgMHhmNywgMHgxNCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTEsIDB4NmIsIDB4OGUsIDB4MWYsIDB4ZSwgMHg0MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhmNywgMHgxYywgMHgxMiwgMHhiYSwgMHhlOSwgMHhmNywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MTMsIDB4YmMsIDB4ZjcsIDB4OWEsIDB4ZjgsIDB4ZWEsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NGEsIDB4ZjcsIDB4MWMsIDB4MzgsIDB4YSwgMHg4NiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgyNCwgMHhhLCAweDEzLCAweDdjLCAweDI1LCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDI4LCAweGEsIDB4NzMsIDB4N2MsIDB4ZGEsIDB4ZjgsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDEyLCAweGI3LCAweGU4LCAweDg3LCAweGU1LCAweGY3LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHgxMywgMHhlOCwgMHhmNywgMHg2OSwgMHhmOCwgMHgyYiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4NGUsIDB4NjAsIDB4NDIsIDB4M2IsIDB4MWEsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGZiLCAweDgsIDB4ZjcsIDB4MmQsIDB4ZGUsIDB4Y2QsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGMzLCAweDFlLCAweDk5LCAweDdjLCAweGI3LCAweDVmLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHhjNiwgMHhjZSwgMHgxOCwgMHg2NCwgMHhhNywgMHg2MiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4YjUsIDB4YTgsIDB4YjcsIDB4OWUsIDB4YmIsIDB4OWIsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDllLCAweDE4LCAweDg4LCAweDdmLCAweDgxLCAweDVlLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHhmYiwgMHgxNSwgMHhmNywgMHgzOCwgMHgxOCwgMHhlYSwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4YmUsIDB4Y2QsIDB4MWEsIDB4ZGQsIDB4NDQsIDB4ZDMsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGQ4LCAweDIyLCAweDQ3LCAweDQ1LCAweDM3LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg2MiwgMHhjOSwgMHg0MywgMHgxZiwgMHhiOSwgMHg1MiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzUsIDB4ZmIsIDB4NWMsIDB4NSwgMHg1YywgMHg2YywgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NTEsIDB4MWIsIDB4MTMsIDB4ZTgsIDB4MmQsIDB4NjMsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGNmLCAweGM3LCAweGJhLCAweGM5LCAweGIxLCAweDFmLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgxNSwgMHgxMywgMHhkOCwgMHg0NywgMHhkYiwgMHg4NSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4MWEsIDB4YmUsIDB4YjcsIDB4YWEsIDB4YjIsIDB4YjIsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDU0LCAweDRkLCAweDVkLCAweDc0LCAweDVmLCAweDcxLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDQwLCAweGEsIDB4YmIsIDB4YWYsIDB4ZjUsIDB4YWYsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGU5LCAweGJkLCAweGFmLCAweGYzLCAweGFmLCAweGEyLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3ZiwgMHg4MCwgMHhmNywgMHg1MywgMHhmOSwgMHgyZiwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiMywgMHg1YSwgMHg1YSwgMHg2NSwgMHg2MywgMHg1YSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4OGMsIDB4MTUsIDB4YTYsIDB4YTAsIDB4YTQsIDB4YWEsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDcyLCAweDZmLCAweDZlLCAweDc0LCAweDczLCAweDZlLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhhMSwgMHhhYiwgMHgxZSwgMHgzZCwgMHhmYiwgMHhjOSwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhiZiwgMHg4MCwgMHgyOCwgMHhhLCAweGZiLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiMSwgMHg3NiwgMHhmOCwgMHgzYywgMHg3NywgMHgxLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5YywgMHgxNSwgMHhlNSwgMHg2LCAweGY3LCAweDMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHhmNywgMHgzNCwgMHhmYiwgMHhkOSwgMHg1LCAweGU0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY5LCAweGY4LCAweDNjLCAweDUsIDB4NDQsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHhmNywgMHg0OSwgMHhlMSwgMHg0OSwgMHg3NiwgMHhjNiwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NzcsIDB4MTIsIDB4MTMsIDB4NjAsIDB4YzgsIDB4ZjcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGE2LCAweGE4LCAweGFlLCAweGFiLCAweGMxLCAweDFiLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg3YSwgMHg3YiwgMHhiMCwgMHgxZiwgMHgxMywgMHg5MCwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4YTksIDB4N2YsIDB4YjEsIDB4MWIsIDB4YzksIDB4YWUsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGE2LCAweDFmLCAweGVhLCAweDcsIDB4ODIsIDB4ODMsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDUxLCAweDFiLCAweDZlLCAweDY5LCAweDk2LCAweDk3LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHg2MCwgMHg5YiwgMHg1ZSwgMHg1ZSwgMHg5ZSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NjQsIDB4NTksIDB4N2YsIDB4NjMsIDB4NjcsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YzIsIDB4ZjgsIDB4NTgsIDB4NzYsIDB4ZjcsIDB4YjMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4MTYsIDB4ZjgsIDB4NDMsIDB4MTUsIDB4OWYsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGEwLCAweGE3LCAweGJmLCAweGEzLCAweDYzLCAweDk4LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg2NywgMHhjNCwgMHhiMywgMHgxOCwgMHg4NiwgMHg4ZiwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4NzUsIDB4OWUsIDB4YWYsIDB4OGYsIDB4YmYsIDB4OTcsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDc1LCAweGNkLCAweDE4LCAweDcyLCAweDgzLCAweDU5LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg3OSwgMHg4LCAweDkzLCAweGJmLCAweDhkLCAweGIzLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg0OCwgMHg2LCAweDZjLCAweDhkLCAweDc5LCAweDkzLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4MywgMHg4NCwgMHgzZCwgMHhiNywgMHg3NSwgMHg5MywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4MTgsIDB4YjMsIDB4ODEsIDB4YWYsIDB4ODMsIDB4YjEsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDM0LCAweDE4LCAweGUsIDB4ZjcsIDB4ZDgsIDB4NWMsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGY3LCAweDRlLCAweDgyLCAweGNjLCAweGY3LCAweGRiLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweGM3LCAweDEyLCAweGY3LCAweDFjLCAweGM2LCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhmOCwgMHg1ZSwgMHhjNiwgMHgxMywgMHhiZiwgMHhmOCwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWMsIDB4MTUsIDB4NzEsIDB4OGUsIDB4OTAsIDB4NWYsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGY3LCAweGMsIDB4ZjcsIDB4ZiwgMHhmNywgMHgxYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4ZjcsIDB4MzMsIDB4ZmIsIDB4YiwgMHhmNywgMHgzOSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4ZmIsIDB4YzUsIDB4MzEsIDB4ZmIsIDB4OTksIDB4ZmIsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVhLCAweGY3LCAweDcsIDB4ZmIsIDB4NDQsIDB4ZjcsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweDVmLCAweGY3LCAweDk3LCAweGUzLCAweGY3LCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg5NSwgMHgxZiwgMHg0MiwgMHg2LCAweDEzLCAweGJmLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHgzZSwgMHgzNywgMHhmYiwgMHg0NSwgMHgxYiwgMHhmYiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDcsIDB4ZDAsIDB4ZjcsIDB4ODgsIDB4ZjcsIDB4NTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDQzLCAweGY3LCAweDYzLCAweGY3LCAweDM1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgyMCwgMHhmYiwgMHgzMSwgMHhmYiwgMHgyNCwgMHhmYiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHg1ZiwgMHg3ZiwgMHg3YSwgMHg5NCwgMHg5ZSwgMHgxZiwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZWQsIDB4NSwgMHg0MywgMHg2LCAweDdkLCAweDRhLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDYwLCAweDUzLCAweDkxLCAweDc0LCAweDFiLCAweGZiLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGZiLCAweDI4LCAweGZiLCAweDEwLCAweDIyLCAweGNiLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHhjNywgMHhiNiwgMHhiOCwgMHhhMywgMHhhMCwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4ZjcsIDB4NSwgMHgxNSwgMHhkNCwgMHhiMywgMHhmNywgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4YmMsIDB4YmEsIDB4NjQsIDB4M2IsIDB4ZmIsIDB4NiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4NDUsIDB4NjMsIDB4NmIsIDB4YWQsIDB4ZGYsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4YSwgMHhkYSwgMHhmNywgMHg1LCAweDQ5LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGY4LCAweGY1LCAweDE1LCAweGJiLCAweGFiLCAweDhhLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhhMCwgMHg4MCwgMHg4MCwgMHg5ZSwgMHgxZSwgMHg3ZiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4N2YsIDB4YTIsIDB4MWIsIDB4YTAsIDB4ZDYsIDB4OTIsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweGEsIDB4OGYsIDB4NzksIDB4OTQsIDB4OTYsIDB4NzAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDZmLCAweDY2LCAweDk2LCAweDc0LCAweDFiLCAweDVhLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgzZiwgMHgxZiwgMHhhZCwgMHhmYiwgMHg4ZSwgMHgyMCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhkMywgMHhmOCwgMHgyNSwgMHhkMywgMHhmNywgMHg1MCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YzUsIDB4ZGMsIDB4M2EsIDB4ZTMsIDB4ZjcsIDB4YTUsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGVjLCAweGM1LCAweDE2LCAweGRkLCAweGNjLCAweDhkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweGJiLCAweGQ1LCAweDg1LCAweGExLCAweDFiLCAweGRlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHhjMywgMHhmNywgMHg2ZiwgMHhmNywgMHgyOSwgMHgzMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhmYiwgMHgyMCwgMHgzNSwgMHg2MywgMHg1NywgMHg3OSwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODksIDB4ZjcsIDB4OTYsIDB4MzMsIDB4NiwgMHgxMywgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4ZmMsIDB4NWUsIDB4MTUsIDB4ZjQsIDB4YzMsIDB4ZTgsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGJkLCAweDM3LCAweGZiLCAweDYsIDB4ZmIsIDB4MjIsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDQ1LCAweDVhLCAweDVlLCAweGFhLCAweGIzLCAweDcwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg5ZCwgMHg3ZCwgMHhhNSwgMHhlMywgMHgxYSwgMHhlLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg4ZCwgMHg3NiwgMHhmOSwgMHg4OCwgMHg3NywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3OCwgMHgxNSwgMHhkMiwgMHg2LCAweGZiLCAweDg1LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg1LCAweDQ0LCAweDYsIDB4ZSwgMHhmYywgMHg0MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4NzYsIDB4ZmEsIDB4NDYsIDB4NzcsIDB4MSwgMHhlOSwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhlOSwgMHhmYiwgMHg2NSwgMHgxNSwgMHhkNCwgMHhmYSwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4NiwgMHhlLCAweGZiLCAweGY5LCAweGZiLCAweDU4LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlZSwgMHhkYSwgMHhmNywgMHhlZCwgMHhkNSwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhkMywgMHgzLCAweGI1LCAweGY3LCAweDc0LCAweDE1LCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4YiwgMHgzMywgMHg4YywgMHgyZCwgMHg4LCAweGZiLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg5ZSwgMHg1NywgMHhmNywgMHgyMiwgMHgxYiwgMHhkNSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHg4ZCwgMHg5MywgMHhmNywgMHgyZSwgMHhmNywgMHg2LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHg0MCwgMHhhZSwgMHgxZiwgMHhlNSwgMHhiYiwgMHg4ZCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDQsIDB4MWEsIDB4ZTIsIDB4ODksIDB4ZDUsIDB4ZTMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDcsIDB4ZmIsIDB4MjIsIDB4NzksIDB4MzEsIDB4ZmIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDhhLCAweDJjLCAweDhiLCAweDM0LCAweDMyLCAweDg5LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4ZjksIDB4ZmIsIDB4NTgsIDB4ZDUsIDB4ZjcsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGY3LCAweGVlLCAweGQ1LCAweDEsIDB4ZjcsIDB4MTUsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YjUsIDB4ZmIsIDB4ZSwgMHgxNSwgMHg0MSwgMHg3LCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHg5OSwgMHhmNywgMHgzMywgMHgxZiwgMHg4YywgMHhlYiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4ZTMsIDB4OGQsIDB4OCwgMHhkYSwgMHg3LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg4OCwgMHhkYiwgMHhlYSwgMHgxYSwgMHhmNywgMHgyOSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4ZmIsIDB4MmUsIDB4MWUsIDB4NDEsIDB4NywgMHhlMiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4ZmIsIDB4MjUsIDB4ZmIsIDB4NywgMHg5YSwgMHg0OSwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MWYsIDB4MzEsIDB4NWIsIDB4OGIsIDB4NGQsIDB4ZmIsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDM0LCAweDc5LCAweDdmLCAweDQ2LCAweDFlLCAweGUsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4Y2EsIDB4ZTMsIDB4MzMsIDB4ZjcsIDB4NGYsIDB4MTMsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJiLCAweGZiLCAweGYsIDB4MTUsIDB4ZjksIDB4OTgsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4ZWUsIDB4ZDQsIDB4ZmIsIDB4NGYsIDB4ZmUsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRmLCAweGQ0LCAweDYsIDB4ZSwgMHg2OSwgMHhhLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZiwgMHgzMywgMHhlMywgMHgxMywgMHhlMCwgMHhhNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHgxNSwgMHg0MiwgMHhmNywgMHg0ZiwgMHhmYSwgMHgyYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NDIsIDB4NywgMHgxMywgMHhkMCwgMHhlZSwgMHhmZCwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweGZiLCAweGZhLCAweGY4LCAweGU3LCAweGNjLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweDk4LCAweGY5LCAweDZmLCAweDE1LCAweDJjLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhjZCwgMHhjZSwgMHhlMiwgMHhiNiwgMHhlOCwgMHgxZSwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2YSwgMHg4NCwgMHg3ZSwgMHg2NSwgMHg0NSwgMHgxYiwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4YmYsIDB4OWUsIDB4ODcsIDB4MWYsIDB4ZSwgMHhmYywgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NzYsIDB4ZjksIDB4ODgsIDB4NzcsIDB4MSwgMHhlOSwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhlOSwgMHhmOCwgMHgzZiwgMHgxNSwgMHhkNCwgMHhmNywgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4NiwgMHhmZCwgMHg4OCwgMHg0LCAweGQ0LCAweGY3LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg2LCAweGUsIDB4ZmIsIDB4ZTksIDB4ZjcsIDB4NWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweDEsIDB4OWQsIDB4ZjcsIDB4Y2YsIDB4MywgMHg5ZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTUsIDB4MzMsIDB4ZDIsIDB4NDYsIDB4ZTEsIDB4ZTEsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGUzLCAweGU0LCAweDQzLCAweGQwLCAweDM1LCAweDM1LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHgzMiwgMHgxZSwgMHhlLCAweGZiLCAweDUzLCAweDdjLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyOSwgMHhkNywgMHgxLCAweGJiLCAweGU1LCAweGY3LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHgzLCAweGY4LCAweDI0LCAweGY3LCAweDUyLCAweDE1LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg3YSwgMHgyMCwgMHhmYiwgMHg0LCAweDFiLCAweGZiLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGY3LCAweDE4LCAweGQwLCAweGM4LCAweDkzLCAweGY3LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZCwgMHhjMSwgMHhjMSwgMHg2ZiwgMHg0MCwgMHg5ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4OTgsIDB4NSwgMHhmNCwgMHhmYiwgMHg4LCAweGM4LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhmYiwgMHgxOCwgMHg0YiwgMHhmYiwgMHg2YywgMHhmYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4ZmIsIDB4MWIsIDB4ZjcsIDB4M2YsIDB4YjcsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGY3LCAweDQzLCAweGE3LCAweDFlLCAweGUsIDB4NTQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YywgMHhmOCwgMHhlNSwgMHgxNSwgMHhlYiwgMHg2LCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMSwgMHg1LCAweDMxLCAweDYsIDB4NTcsIDB4MzQsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDUsIDB4MzEsIDB4NiwgMHhlLCAweGZiLCAweDUzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg3NiwgMHhmNywgMHg1YiwgMHhkNiwgMHhmOCwgMHgzMiwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhOSwgMHhlNCwgMHgzLCAweGY3LCAweDY3LCAweDc2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHgzZCwgMHg1LCAweDliLCAweGMwLCAweDg2LCAweDY5LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3OCwgMHg4YywgMHg0OCwgMHg4NCwgMHg2MCwgMHgxYiwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4NSwgMHhmNywgMHgxMywgMHhjYiwgMHhiMiwgMHhiYiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4YTAsIDB4NmEsIDB4MWYsIDB4OTEsIDB4YWYsIDB4ZGEsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweGI2LCAweGEyLCAweGY3LCAweDJhLCAweDE5LCAweDM2LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDcxLCAweDg3LCAweDdhLCAweGZiLCAweDEsIDB4ZmIsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4MjMsIDB4OGMsIDB4ZjcsIDB4M2QsIDB4YWQsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGY3LCAweDE5LCAweGY3LCAweDEzLCAweGMyLCAweGJhLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHg5YywgMHgxZiwgMHhlMCwgMHg5YSwgMHg1LCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDNhLCAweGMxLCAweGZiLCAweDAsIDB4MWIsIDB4ZmIsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGZiLCAweDIxLCAweGZiLCAweDI1LCAweGZiLCAweDJjLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmNywgMHg0LCAweDc2LCAweDFmLCAweGUsIDB4ZmIsIDB4ZmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDYwLCAweDc2LCAweGY3LCAweDc1LCAweDc3LCAweDEsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweDMsIDB4ZjcsIDB4MWEsIDB4MTYsIDB4NmEsIDB4MmMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YmUsIDB4ODUsIDB4NmIsIDB4NTgsIDB4MmMsIDB4OWEsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDFmLCAweDg2LCAweDUyLCAweDUsIDB4ODcsIDB4YTEsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweGExLCAweDFiLCAweGY3LCAweDUsIDB4YmQsIDB4YjgsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDY0LCAweGEzLCAweDVmLCAweDkwLCAweDFmLCAweGEyLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4MmQsIDB4NzYsIDB4ZjEsIDB4ZDIsIDB4ZjgsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGU3LCAweDc3LCAweDEsIDB4YmUsIDB4ZTUsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4OTUsIDB4MTUsIDB4NjksIDB4ZmIsIDB4MSwgMHhjMiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZjcsIDB4MCwgMHg1LCAweDg4LCAweDk4LCAweDk4LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHgxYiwgMHhjZCwgMHhmNywgMHgxOCwgMHhhZCwgMHhmNywgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4MWYsIDB4MzcsIDB4OTUsIDB4NSwgMHgyZiwgMHg3ZSwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NTAsIDB4MWIsIDB4N2QsIDB4ODQsIDB4OGQsIDB4OGQsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDEsIDB4ZjgsIDB4YSwgMHhhZCwgMHg2ZiwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4OGYsIDB4NzcsIDB4MTksIDB4ZTEsIDB4OTgsIDB4ODQsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGQ0LCAweDMyLCAweGIyLCAweDE5LCAweGE1LCAweGViLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg2ZiwgMHgyYiwgMHg1LCAweDhmLCAweDZjLCAweDdmLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxYiwgMHg1MiwgMHhmYiwgMHg0NCwgMHg2ZiwgMHhmYiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4YzMsIDB4MzcsIDB4ZDYsIDB4NjcsIDB4MWYsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweDE1LCAweDU2LCAweGFjLCAweDgwLCAweGVhLCAweGI1LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHhhMSwgMHhmNywgMHgyMiwgMHhmNywgMHgyYiwgMHg3ZSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1NCwgMHhhLCAweGEwLCAweGY4LCAweGU1LCAweDE1LCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGMxLCAweGUyLCAweGJjLCAweDM0LCAweDUsIDB4ZTksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4ZjcsIDB4MjEsIDB4NSwgMHgzNCwgMHg2LCAweGUsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDhiLCAweGVlLCAweGY3LCAweGQyLCAweGVlLCAweDEsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweDMsIDB4ZTIsIDB4MTYsIDB4ZjMsIDB4ZWUsIDB4MjMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZDIsIDB4NCwgMHhmMywgMHhlZSwgMHgyMywgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDMxLCAweGZiLCAweDEyLCAweDc2LCAweGY3LCAweDkxLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGUzLCAweGYxLCAweDMsIDB4ZTMsIDB4OGQsIDB4MTUsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NjEsIDB4ODUsIDB4NWEsIDB4NWQsIDB4NzYsIDB4MWUsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDUsIDB4Y2UsIDB4YTEsIDB4OTgsIDB4ZTgsIDB4YWQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweDI1LCAweDcsIDB4ZSwgMHhiOSwgMHg3OCwgMHhjYSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4ZjcsIDB4Y2UsIDB4YzMsIDB4ZjEsIDB4Y2EsIDB4MSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4ZjcsIDB4YSwgMHhkMSwgMHhmOCwgMHg1NywgMHhjYSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg4MCwgMHhmNywgMHhiZSwgMHgxNSwgMHgzNSwgMHg3NSwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NzAsIDB4MWIsIDB4NDYsIDB4NTAsIDB4YmIsIDB4ZjUsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGRmLCAweGVkLCAweDljLCAweGQ0LCAweDhhLCAweDQwLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjOCwgMHg5OSwgMHg1LCAweGRkLCAweDcyLCAweDNlLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHgxYiwgMHhmYiwgMHgxNCwgMHg0NSwgMHgzNywgMHhmYiwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWMsIDB4ZGMsIDB4M2QsIDB4ZjcsIDB4OSwgMHhkYiwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4ZWEsIDB4YTIsIDB4MWYsIDB4ZmMsIDB4Y2MsIDB4ZDcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY1LCAweGY3LCAweDNjLCAweGZiLCAweDNhLCAweGY3LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2OCwgMHhmNywgMHg0MiwgMHhmNywgMHgzYiwgMHhmNywgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjcsIDB4ZmIsIDB4NDQsIDB4ZjcsIDB4M2UsIDB4ZmIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY2LCAweGZiLCAweDNlLCAweGZiLCAweDNkLCAweGZiLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhjYiwgMHgxNiwgMHhmNywgMHg0NCwgMHhmNywgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZjcsIDB4NDUsIDB4ZjcsIDB4NDUsIDB4ZjcsIDB4MjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGZiLCAweDQ0LCAweGZiLCAweDQyLCAweGZiLCAweDI2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHg0NSwgMHhmYiwgMHg0NSwgMHhmYiwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4NDIsIDB4MWUsIDB4ZSwgMHhmNywgMHhjLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhkZiwgMHhmNywgMHg5ZSwgMHhkZiwgMHhhZSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHhlZSwgMHgxNSwgMHhkMiwgMHhkMiwgMHg1LCAweDcxLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHg4MSwgMHhiMiwgMHgxYiwgMHhiMSwgMHhiNywgMHg5NSwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4MWYsIDB4ZDIsIDB4NDQsIDB4YzUsIDB4YzgsIDB4NDQsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YWEsIDB4YmQsIDB4OTEsIDB4YjksIDB4YTUsIDB4MWEsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGI4LCAweDZjLCAweGJjLCAweDFlLCAweGQyLCAweGQxLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHg0NCwgMHg0NCwgMHg1LCAweGE1LCAweDY0LCAweDVmLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHgxYiwgMHg2NCwgMHg2MCwgMHg4MSwgMHg3MSwgMHg2NCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4ZDIsIDB4NTEsIDB4NGUsIDB4ZDIsIDB4NDUsIDB4NSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4ODUsIDB4NWUsIDB4NzAsIDB4MWEsIDB4NzEsIDB4OTEsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDU5LCAweDFlLCAweDQ0LCAweDQ2LCAweDUsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTMsIDB4MTUsIDB4ZDQsIDB4YzUsIDB4YzcsIDB4ZDUsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDUyLCAweDNmLCAweDQxLCAweDUwLCAweDUwLCAweDQyLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhjNiwgMHhkNSwgMHgxZSwgMHhlLCAweDdjLCAweGQzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhkNSwgMHhmNywgMHg1MCwgMHg3NywgMHgxLCAweGFlLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNywgMHhlMywgMHgzLCAweGY4LCAweDM1LCAweDE2LCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg2MiwgMHgzMywgMHhmYiwgMHg5NywgMHg4OSwgMHg2LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg0ZCwgMHhhOSwgMHg0YSwgMHgxYiwgMHhmYiwgMHgxNiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MiwgMHhmYiwgMHgzZCwgMHhmYiwgMHgzYSwgMHhlYywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZiwgMHg5ZSwgMHhlOSwgMHg4ZSwgMHhkOSwgMHhiYywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjgsIDB4ZjcsIDB4NGQsIDB4MTUsIDB4YjEsIDB4ODksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGY3LCAweDE4LCAweGY2LCAweGM0LCAweDIzLCAweDI2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHhmYiwgMHgxYywgMHg3YiwgMHg2ZiwgMHg1OCwgMHgzYywgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4MWUsIDB4ZSwgMHhmYiwgMHgxZSwgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4ZDksIDB4ZjcsIDB4NjcsIDB4NzcsIDB4MSwgMHhmNywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MywgMHhmNywgMHg3ZSwgMHhmYiwgMHgzMywgMHgxNSwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZTAsIDB4NzgsIDB4YSwgMHhmNywgMHg2NywgMHgzMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4ZmIsIDB4NTMsIDB4M2QsIDB4ZjcsIDB4NTMsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZSwgMHg3NiwgMHhmNywgMHg0YywgMHhkOSwgMHhmNywgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4ZjcsIDB4NGMsIDB4NzcsIDB4MSwgMHhmNywgMHg3ZSwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhiNiwgMHhhNCwgMHgxNSwgMHhmNywgMHg1MywgMHhmYiwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4ZjcsIDB4NGMsIDB4NzgsIDB4YSwgMHhmNywgMHhmNSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg0YywgMHgzMywgMHhmYiwgMHg0YywgMHhmYiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4ZjcsIDB4NTMsIDB4ZmIsIDB4ZjUsIDB4ZmIsIDB4NTMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHhiNywgMHhmOCwgMHgyZiwgMHhjNCwgMHhmNywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4MSwgMHhjMSwgMHhjNSwgMHhmNywgMHg0NCwgMHhjNSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmOCwgMHhjMiwgMHgxNSwgMHgzOSwgMHhjYywgMHg0YSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4Y2QsIDB4Y2MsIDB4ZGQsIDB4ZGEsIDB4NGEsIDB4Y2QsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDRiLCAweDRhLCAweDNiLCAweDFlLCAweGM1LCAweDE2LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhiMywgMHhiYywgMHhiZCwgMHhiMiwgMHg2MywgMHg1YiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NjMsIDB4NWEsIDB4NWIsIDB4NjQsIDB4YjMsIDB4YmQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4ZmEsIDB4ZjgsIDB4ZjAsIDB4ZjEsIDB4MSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZDQsIDB4ZTUsIDB4MywgMHhiMywgMHhmOCwgMHhmMCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjEsIDB4MzEsIDB4NiwgMHhmNywgMHgzNywgMHgyNSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjEsIDB4MzEsIDB4NiwgMHhlLCAweDIwLCAweDc4LCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZSwgMHhkZCwgMHhmNywgMHgxNCwgMHhlYywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHhlZiwgMHgzLCAweGIyLCAweGY3LCAweDZjLCAweDE1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhkZCwgMHhmYywgMHg4ZSwgMHg2LCAweGY3LCAweDVmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxNSwgMHhlZiwgMHhlYywgMHgyNywgMHg2LCAweGZjLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGVmLCAweGVkLCAweDI3LCAweDYsIDB4ZSwgMHgyZCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmEsIDB4ZSwgMHg3NywgMHgxLCAweGJiLCAweGU2LCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGY3LCAweGYsIDB4ZTcsIDB4MywgMHhhYiwgMHhmNywgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OTgsIDB4ZmIsIDB4NTIsIDB4ZjcsIDB4MmIsIDB4N2EsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDgsIDB4MzEsIDB4YzAsIDB4ZTYsIDB4NywgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZDQsIDB4ZWUsIDB4ZjUsIDB4MWEsIDB4ZjcsIDB4MzksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGIwLCAweDQzLCAweDliLCAweDFlLCAweGY3LCAweDkzLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDg1LCAweGM2LCAweDdlLCAweDliLCAweDJhLCAweGU5LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg3OCwgMHhmNywgMHg4LCAweDNkLCAweGMxLCAweDI3LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGI0LCAweDU2LCAweDYyLCAweDcsIDB4MjIsIDB4ODYsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDg2LCAweGZiLCAweDE3LCAweDg4LCAweDQyLCAweGRhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmNywgMHgxNCwgMHg4MywgMHg4LCAweGZiLCAweGFkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDk2LCAweDcxLCAweGY3LCAweDksIDB4ODgsIDB4YTgsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4ZjcsIDB4NjUsIDB4MTUsIDB4MjYsIDB4YTgsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGI1LCAweDFhLCAweGJmLCAweGFjLCAweGMyLCAweGRiLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhjMCwgMHhmYywgMHhmNywgMHgxNSwgMHhmNywgMHhhMSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHg3NiwgMHhjNCwgMHg3MywgMHgzNiwgMHgxYSwgMHgyZCwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NWIsIDB4ODYsIDB4MWUsIDB4ZSwgMHhmYiwgMHhmYSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4ZjEsIDB4MSwgMHhmNywgMHhkLCAweGU2LCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4ZjgsIDB4ZjAsIDB4MTUsIDB4ZTYsIDB4ZjEsIDB4MzAsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYywgMHgzMSwgMHg2OCwgMHhhLCAweGVhLCAweGUzLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweDE2LCAweGUzLCAweGY4LCAweDlmLCAweDdhLCAweGEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGY3LCAweDQ4LCAweGQzLCAweGY3LCAweDJlLCAweGQ2LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGU1LCAweGY3LCAweDkxLCAweGU1LCAweDMsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgxLCAweDE1LCAweGY4LCAweDE2LCAweDYsIDB4ZjcsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM0LCAweGIwLCAweDQxLCAweGZiLCAweDMyLCAweDM3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHhmYiwgMHgzMiwgMHhmYiwgMHgzNCwgMHhkYywgMHhmYiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNSwgMHhmNywgMHgxNCwgMHhkOCwgMHhkNCwgMHhlZCwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MzEsIDB4OTYsIDB4NSwgMHg2ZCwgMHg4MCwgMHg2YywgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4MWIsIDB4M2QsIDB4NDgsIDB4YzMsIDB4ZjcsIDB4MTAsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDkwLCAweGQzLCAweDE1LCAweGNmLCAweDkwLCAweGI3LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHgxYiwgMHhlNywgMHhiZiwgMHgzZCwgMHgzZiwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhhLCAweGNlLCAweGY3LCAweDFkLCAweDEsIDB4ZjgsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweDMsIDB4M2YsIDB4YSwgMHhmYiwgMHgyOCwgMHhmYywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4YSwgMHhlLCAweDRhLCAweGEsIDB4ZjcsIDB4NjAsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjgsIDB4MzQsIDB4ZTUsIDB4MywgMHgzYSwgMHhhLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4NSwgMHgyOSwgMHhhLCAweGUsIDB4NGEsIDB4YSwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4MSwgMHhmNywgMHhhZSwgMHg4YiwgMHhmNywgMHgxYSwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgzZSwgMHhhLCAweGZiLCAweDRjLCAweGZjLCAweDY5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyLCAweDYsIDB4ZjcsIDB4MWMsIDB4NjUsIDB4ZDgsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDFlLCAweGIwLCAweDU2LCAweDUyLCAweDkxLCAweDc0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzOCwgMHg0YywgMHhmYiwgMHhhLCAweGZiLCAweDMxLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgyZCwgMHhhLCAweDdiLCAweDdjLCAweDNhLCAweDIzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHg1ZSwgMHhjMiwgMHhmNywgMHgxMSwgMHg3ZSwgMHgxZiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4MTUsIDB4Y2YsIDB4OTYsIDB4YTIsIDB4ZGMsIDB4ZjIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweGFiLCAweDQyLCAweDNmLCAweDkwLCAweDFmLCAweGUsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4Y2YsIDB4ZjcsIDB4MWMsIDB4MSwgMHhmOCwgMHgzNCwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHgyMCwgMHhmNywgMHg4MSwgMHgyOSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhmNywgMHhiNSwgMHg0YywgMHhhLCAweDRhLCAweGY3LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHhhLCAweDc4LCAweGQyLCAweGY3LCAweGIyLCAweGFmLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmNywgMHg3NCwgMHhkMiwgMHgxMiwgMHhjMSwgMHhlNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ZTcsIDB4MTMsIDB4ZGMsIDB4ZjcsIDB4NDUsIDB4ZjgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MzEsIDB4NWEsIDB4ZmIsIDB4MTAsIDB4NTYsIDB4ZmIsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4MmIsIDB4ZjcsIDB4MjgsIDB4ZjcsIDB4MjcsIDB4ZTgsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDksIDB4ZWQsIDB4NTIsIDB4YzUsIDB4M2IsIDB4YTMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDcsIDB4YWIsIDB4OTYsIDB4ZDYsIDB4YjAsIDB4ZWMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDNmLCAweGUzLCAweGZiLCAweDFjLCAweGZiLCAweDE4LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHgyOSwgMHgyMSwgMHhkOSwgMHg2YywgMHhhYSwgMHg4MSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4ZjcsIDB4MmEsIDB4MTUsIDB4YzIsIDB4YjYsIDB4YmUsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweGJlLCAweDVjLCAweDRiLCAweDFlLCAweDEzLCAweGJjLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1OSwgMHg0OCwgMHg1MSwgMHg1MCwgMHhiMywgMHhkOSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4ZmIsIDB4ZGUsIDB4MTUsIDB4ZDMsIDB4YmUsIDB4ZDEsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweGQxLCAweDUzLCAweDMzLCAweDMzLCAweDQ4LCAweDU1LCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg1MiwgMHhjYywgMHhkYSwgMHgxZSwgMHhlLCAweGY3LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmNSwgMHgxLCAweGY3LCAweDcsIDB4ZWYsIDB4ZjcsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweGY3LCAweDgxLCAweGVmLCAweDMsIDB4ZjcsIDB4NywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4ZjUsIDB4MjcsIDB4NiwgMHhmNywgMHhlMSwgMHgyMSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4ZjUsIDB4MjcsIDB4NiwgMHhmNywgMHhlNSwgMHgyMSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4ZjUsIDB4MjcsIDB4NiwgMHhlLCAweGY3LCAweGM5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHhkNCwgMHgxLCAweGY3LCAweDg0LCAweDQsIDB4ZmEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGZlLCAweDdjLCAweDYsIDB4ZSwgMHhmNywgMHg4NCwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHg4NCwgMHg0LCAweGY4LCAweGMwLCAweGQ0LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg2LCAweGUsIDB4MjAsIDB4ZjcsIDB4NywgMHhkYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhkYiwgMHgxLCAweGIyLCAweGY3LCAweGNhLCAweDE1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhkYiwgMHhmYywgMHg4ZSwgMHg2LCAweGZiLCAweGE3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDhlLCAweGRiLCAweGZjLCAweDhlLCAweDYsIDB4ZSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZjgsIDB4MWQsIDB4ZGEsIDB4ZjcsIDB4NjIsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZTYsIDB4ZjcsIDB4YzUsIDB4ZTYsIDB4MywgMHhmNywgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YzAsIDB4MTUsIDB4ZjcsIDB4YywgMHhjNCwgMHhiMCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4NzYsIDB4YTEsIDB4NWYsIDB4MTksIDB4OTgsIDB4NmYsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDU5LCAweDFiLCAweDMwLCAweGZiLCAweDE0LCAweDUwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhmYiwgMHg3MSwgMHhmNywgMHgxNSwgMHg1OSwgMHhlYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4ZjcsIDB4OCwgMHhmNCwgMHhmNywgMHgzYSwgMHhmNywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4ZjcsIDB4MTIsIDB4MjksIDB4ZjcsIDB4OCwgMHgxZiwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4NzIsIDB4YmMsIDB4MjEsIDB4NTgsIDB4NzUsIDB4YTAsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDZiLCAweGE0LCAweDE5LCAweGZiLCAweDAsIDB4NiwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4OWQsIDB4N2YsIDB4YjUsIDB4NjIsIDB4MjAsIDB4NWEsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGZiLCAweGYxLCAweDE1LCAweGY3LCAweDIxLCAweGQzLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHhlYSwgMHhkNywgMHg2NCwgMHhmYiwgMHgzMSwgMHhmYiwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4NjIsIDB4NDgsIDB4NmIsIDB4MjYsIDB4OTksIDB4ZjcsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4ZmMsIDB4MzEsIDB4OGIsIDB4ZWYsIDB4ZjcsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweGY3LCAweGE2LCAweDc3LCAweGI3LCAweDc3LCAweDEsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweDM1LCAweGQ3LCAweDMsIDB4ZTUsIDB4MTYsIDB4ZWMsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDYsIDB4YTIsIDB4ZGIsIDB4MTUsIDB4YzEsIDB4NiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZiwgMHg1LCAweGY3LCAweDMzLCAweDJhLCAweGZiLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGUsIDB4ZmIsIDB4ZmEsIDB4ZmIsIDB4NDIsIDB4NzYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZlLCAweGVmLCAweDEsIDB4ZjcsIDB4YSwgMHhlYywgMHgzMywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHhhLCAweGY4LCAweDNiLCAweDE1LCAweGVjLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg2LCAweGZjLCAweGM2LCAweDQsIDB4ZmIsIDB4MzAsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMwLCAweDcsIDB4NzUsIDB4ZjgsIDB4ZiwgMHg1LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4NGIsIDB4YSwgMHhmOCwgMHg1NiwgMHhjZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NzcsIDB4MSwgMHhkNywgMHhlMywgMHgzLCAweGQ3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhmOCwgMHg1NiwgMHhlZCwgMHhjZiwgMHgyOSwgMHhiYywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhhNywgMHhiNCwgMHhjMywgMHg3NiwgMHgxZSwgMHg5OCwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg4YiwgMHg3MiwgMHg5NCwgMHg3YSwgMHhmYiwgMHgyMywgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MywgMHg1OSwgMHgxZSwgMHg1YSwgMHg0ZCwgMHg0NywgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweDViLCAweGEsIDB4ZjcsIDB4M2QsIDB4M2IsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTUsIDB4ZmMsIDB4NTYsIDB4MTUsIDB4ZTMsIDB4ZjgsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDYsIDB4ZWQsIDB4NCwgMHg2ZCwgMHhhLCAweDc4LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlMCwgMHhkOCwgMHhmNywgMHgzZiwgMHhkZiwgMHgxMiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4ZWIsIDB4MTcsIDB4YWIsIDB4ZjcsIDB4NDYsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDk5LCAweGY3LCAweDE2LCAweDYwLCAweGU1LCAweDFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHhlMSwgMHhmNywgMHg5LCAweGY3LCAweDEzLCAweGY3LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNSwgMHhkYywgMHgyMywgMHg1OSwgMHg2MSwgMHg3OCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MWYsIDB4YjMsIDB4ZjcsIDB4NGYsIDB4NSwgMHhmNywgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4ZmIsIDB4ZmQsIDB4NiwgMHg0MywgMHhmYiwgMHhmZSwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NSwgMHhiMSwgMHhhMywgMHhiYSwgMHhhOSwgMHhjOCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4ZDEsIDB4NTYsIDB4MjEsIDB4MzAsIDB4NTQsIDB4MzksIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDZmLCAweDJmLCAweDkyLCAweGY3LCAweDEyLCAweDc3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDViLCAweGEsIDB4ZjcsIDB4M2IsIDB4M2IsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4ZmMsIDB4NTYsIDB4MTUsIDB4ZTMsIDB4ZjksIDB4NTgsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NGUsIDB4NzYsIDB4ZjksIDB4MjIsIDB4Y2YsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGRkLCAweDEsIDB4OTAsIDB4ZmIsIDB4YiwgMHgxNSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4NSwgMHg3ZiwgMHhjYSwgMHhhMCwgMHg4YiwgMHg5MiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4YmUsIDB4YjMsIDB4ZTIsIDB4OWEsIDB4MWYsIDB4ZTksIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDUsIDB4ZWYsIDB4NiwgMHg5NywgMHhjZiwgMHg1LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDk4LCAweGM4LCAweDUsIDB4YmYsIDB4OTUsIDB4OTQsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDFiLCAweGEwLCAweDljLCAweDg3LCAweDgzLCAweGFmLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhkNiwgMHg1LCAweDk1LCAweDY4LCAweDdhLCAweDk0LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHg0LCAweDZjLCAweDI3LCAweDRlLCAweDdlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg0ZSwgMHg1LCAweDI4LCAweDYsIDB4ODAsIDB4NDcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4NiwgMHgzMywgMHhmYywgMHg4YSwgMHg1LCAweDVmLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2YywgMHg2YywgMHgxYiwgMHg3YiwgMHg3NiwgMHg4ZSwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MWYsIDB4ZSwgMHhhMCwgMHg3NiwgMHhmNywgMHgzZCwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NWIsIDB4NzcsIDB4MSwgMHhmNywgMHhiMywgMHhlMywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhmNywgMHgzZCwgMHgxNSwgMHhmNywgMHhjZCwgMHhmYiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4ZjcsIDB4M2QsIDB4ZWMsIDB4ZGEsIDB4MmEsIDB4ZjgsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDYsIDB4ZmIsIDB4ZGQsIDB4ZmMsIDB4NWIsIDB4NSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4NzMsIDB4ZjcsIDB4ZDMsIDB4NSwgMHg4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4NiwgMHhlLCAweGZjLCAweGEwLCAweDhkLCAweDc2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg3NywgMHgxLCAweDMyLCAweDc4LCAweDE1LCAweGY4LCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg2NiwgMHg1LCAweDNmLCAweDYsIDB4ZmMsIDB4M2IsIDB4ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDUsIDB4ZSwgMHhmYiwgMHg3MCwgMHhkNCwgMHhmNywgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4ZjgsIDB4MjksIDB4ZDMsIDB4MTIsIDB4Y2IsIDB4ZTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGU0LCAweDM5LCAweGRkLCAweDEzLCAweGY4LCAweGM5LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmYiwgMHgyOCwgMHg4NywgMHhmNywgMHgyMywgMHg3OSwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4NDcsIDB4YzEsIDB4ZjcsIDB4MiwgMHhmNywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjgsIDB4NjYsIDB4M2EsIDB4NGQsIDB4ODksIDB4NywgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NDksIDB4OGYsIDB4NmUsIDB4MWIsIDB4ZmIsIDB4MzYsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM0LCAweGZiLCAweDEyLCAweGZiLCAweDIwLCAweGRjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGY3LCAweDI1LCAweDFmLCAweDEzLCAweGI4LCAweGI0LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhjNSwgMHhiYywgMHgxZiwgMHgyNCwgMHg4ZSwgMHgyNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4MjQsIDB4N2YsIDB4YzAsIDB4YTYsIDB4ODcsIDB4MWUsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQzLCAweDE1LCAweGY3LCAweDExLCAweGM1LCAweGU0LCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgxMywgMHhmNCwgMHhjOCwgMHhlNSwgMHg0OSwgMHhmYiwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NjcsIDB4MmIsIDB4ZmIsIDB4NywgMHgyNiwgMHg2OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YzksIDB4MWYsIDB4ZSwgMHgzYiwgMHg3YywgMHhkMywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4ZDMsIDB4MTIsIDB4Y2UsIDB4ZTMsIDB4ZjcsIDB4MjIsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGUwLCAweDlmLCAweGU1LCAweDEzLCAweGVjLCAweGNlLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhmOCwgMHg3ZSwgMHg2LCAweGNlLCAweDkzLCAweGVlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGMzLCAweGI1LCAweDZhLCAweDVmLCAweDFlLCAweDEzLCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHgzYywgMHgzMCwgMHg0ZSwgMHg0NCwgMHhmNywgMHg0YywgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4MWEsIDB4NWQsIDB4NjIsIDB4NjQsIDB4NWEsIDB4NmUsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGQwLCAweDY2LCAweDFlLCAweDNmLCAweDY3LCAweDUsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGJmLCAweDNhLCAweGY3LCAweDEsIDB4MWIsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4ZDIsIDB4ZTEsIDB4MWYsIDB4ZjcsIDB4MTQsIDB4ZmIsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGJmLCAweDFhLCAweDEzLCAweGVjLCAweGMyLCAweGQ1LCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgxYSwgMHhkMiwgMHg0YiwgMHhkOSwgMHhmYiwgMHg5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg0MywgMHgzNSwgMHhmYiwgMHgyYywgMHgxZSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHhmOCwgMHhmOCwgMHg3NiwgMHhmNywgMHgyNSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyOSwgMHhmOCwgMHhlNSwgMHgxNSwgMHhjOSwgMHg2LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMSwgMHg1LCAweDIyLCAweDYsIDB4ZSwgMHg3MSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHgxNSwgMHhmOCwgMHg3YywgMHhmNywgMHg1YywgMHg1LCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGZjLCAweDdjLCAweGY3LCAweDVlLCAweDUsIDB4MzQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MWEsIDB4ZmIsIDB4MzAsIDB4ZmMsIDB4MWEsIDB4ZmIsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHgzYywgMHg1MiwgMHhhLCAweGY3LCAweDkzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHgxNSwgMHhkOSwgMHg2LCAweGZiLCAweGMsIDB4ZjcsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4ZjcsIDB4NWYsIDB4NSwgMHgzZCwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmYiwgMHg1ZiwgMHg1LCAweGY3LCAweGQxLCAweGZiLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhkYiwgMHg2LCAweGZiLCAweGUsIDB4ZjcsIDB4NWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4NWYsIDB4NSwgMHgzYiwgMHg2LCAweGZiLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1ZiwgMHg1LCAweGUsIDB4M2MsIDB4NTIsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4ZjcsIDB4MTYsIDB4MTUsIDB4ZGMsIDB4NiwgMHhmNywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWUsIDB4ZmIsIDB4MjcsIDB4ZjcsIDB4NWYsIDB4NSwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHhkLCAweGZiLCAweDVmLCAweDUsIDB4ZmIsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVlLCAweDE1LCAweGRhLCAweDYsIDB4ZjcsIDB4MjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGZiLCAweDI4LCAweGY3LCAweDVmLCAweDUsIDB4M2MsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZCwgMHhmYiwgMHg1ZiwgMHg1LCAweGUsIDB4ZmIsIDB4ZmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGEsIDB4ZjcsIDB4NmIsIDB4ZjcsIDB4MTYsIDB4MTUsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MzYsIDB4ZjcsIDB4NWUsIDB4ZTAsIDB4ZjcsIDB4NWYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4NiwgMHhmYiwgMHhhLCAweGZiLCAweDVmLCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZDksIDB4NTIsIDB4YSwgMHhlYywgMHhmNywgMHgxNiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4NiwgMHhmNywgMHg4LCAweGY3LCAweDYwLCAweGZiLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVkLCAweDUsIDB4NTMsIDB4NiwgMHhlMiwgMHhmYiwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweGEwLCAweDc2LCAweGY4LCAweDVhLCAweGQ3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg3NywgMHgxLCAweGNjLCAweGUzLCAweGY3LCAweDhlLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGNjLCAweDE2LCAweGUzLCAweGY3LCAweGFmLCAweDYsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGU0LCAweGY0LCAweGY3LCAweDEsIDB4ODgsIDB4MmEsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweGRiLCAweGUzLCAweGY3LCAweGRiLCAweDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NDksIDB4ZTIsIDB4ZmIsIDB4MTQsIDB4NjYsIDB4NTksIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDUyLCAweDFlLCAweGY3LCAweDk3LCAweDMzLCAweDcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZmEsIDB4ZjgsIDB4ZTUsIDB4ZjcsIDB4MjEsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4ZjgsIDB4ZTUsIDB4NjAsIDB4YSwgMHhmYiwgMHg5YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4NjAsIDB4YSwgMHhlLCAweGZiLCAweGZhLCAweGY3LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHgxLCAweGI3LCAweGY3LCAweDdjLCAweDE1LCAweGY3LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhmYiwgMHg4OSwgMHg2LCAweGUsIDB4ZmMsIDB4NjksIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDEsIDB4ZWMsIDB4MSwgMHhmNywgMHgyNCwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjZSwgMHgxNiwgMHhlMywgMHhmOCwgMHg5OCwgMHgzMywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHg0LCAweDZkLCAweGEsIDB4NjIsIDB4YSwgMHhjYywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MTUsIDB4ZDIsIDB4NiwgMHhmNywgMHgxMiwgMHhmNywgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4YSwgMHg1NywgMHg1MCwgMHhhLCAweDRiLCAweGEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweDFkLCAweDEsIDB4ZWEsIDB4ZTMsIDB4MywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZTksIDB4MTUsIDB4ZWUsIDB4NiwgMHhiYiwgMHhkZSwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NSwgMHhmMCwgMHg2LCAweDI2LCAweDQyLCAweGEsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGEsIDB4NGIsIDB4YSwgMHhmOCwgMHhmMiwgMHhlZiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ZTUsIDB4ODMsIDB4ZTMsIDB4ODQsIDB4ZTUsIDB4MTMsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweDE2LCAweGUzLCAweGY4LCAweDk5LCAweDMzLCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDM5LCAweGU0LCAweDU4LCAweGEsIDB4NjIsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZjgsIDB4ZWEsIDB4MTUsIDB4ZDQsIDB4NiwgMHgzOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4MzgsIDB4YSwgMHhlMywgMHg1MCwgMHhhLCAweGZjLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1MSwgMHg3NiwgMHhmOSwgMHhkMywgMHhlYywgMHgxLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHgzLCAweDhjLCAweGZiLCAweDEyLCAweDE1LCAweDdhLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDg1LCAweGEyLCAweDllLCAweDg4LCAweDljLCAweDFiLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhjNywgMHhmNywgMHhlLCAweDFmLCAweGY4LCAweGI1LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhiNSwgMHg3LCAweDJkLCAweDcyLCAweDdkLCAweDYyLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhjZCwgMHhmOSwgMHg3ZiwgMHgxNSwgMHg2ZCwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg0NCwgMHhhLCAweGY3LCAweDYyLCAweDYsIDB4Y2EsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQzLCAweGZiLCAweDlkLCAweDUsIDB4ZjcsIDB4MCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3MSwgMHhmNywgMHhkYSwgMHhmNywgMHg1YSwgMHhmNywgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg2LCAweDYsIDB4ZmIsIDB4NjUsIDB4ZmIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjgsIDB4MmUsIDB4MzMsIDB4NywgMHhlLCAweGZjLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhhLCAweGY5LCAweDYyLCAweDdhLCAweGEsIDB4NzEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjksIDB4MTUsIDB4ZjgsIDB4N2MsIDB4ZmIsIDB4NWUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4NywgMHhmYywgMHgxYSwgMHhmNywgMHgzMCwgMHhmOCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmUsIDB4NSwgMHhlMiwgMHg3LCAweGZjLCAweDdjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg1LCAweGUsIDB4MjAsIDB4ZjcsIDB4MTUsIDB4NzYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4ZjcsIDB4YzgsIDB4MTUsIDB4ZjgsIDB4MjcsIDB4ZmIsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGY3LCAweGFlLCAweGZjLCAweDdhLCAweDYsIDB4ZSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NDQsIDB4YSwgMHhmNywgMHhmOSwgMHg2LCAweGUyLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGQ4LCAweDcsIDB4MzQsIDB4NDAsIDB4NSwgMHhmNywgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4ZmIsIDB4ZmIsIDB4NywgMHgzNCwgMHg0MywgMHg1LCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGUyLCAweGQzLCAweDUsIDB4ZSwgMHhmNywgMHgyMiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg3MCwgMHhlMywgMHhmNywgMHg3MCwgMHhlMywgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4MTYsIDB4ZTMsIDB4ZjcsIDB4YTEsIDB4NiwgMHhjYywgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTQsIDB4ZjcsIDB4MiwgMHhlMSwgMHg5MiwgMHgzZiwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4ZTUsIDB4ZTMsIDB4ZjcsIDB4YzEsIDB4NywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4ZGIsIDB4ZTMsIDB4ZTgsIDB4OGIsIDB4MzYsIDB4NTksIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGRiLCAweGUzLCAweGY3LCAweGYzLCAweDcsIDB4YjAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJhLCAweGZiLCAweDM0LCAweDJhLCAweDcyLCAweDRjLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHgxZSwgMHhjNywgMHg3NiwgMHg0MiwgMHhhYSwgMHg0MSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4NmMsIDB4NWUsIDB4NWQsIDB4NmYsIDB4MWYsIDB4MTMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDhhLCAweDUsIDB4ZDMsIDB4M2MsIDB4NywgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHhmOSwgMHg3LCAweGM0LCAweDEsIDB4OTUsIDB4ZjksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4Y2QsIDB4YzQsIDB4ZmIsIDB4Y2QsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHhiMiwgMHhmNywgMHg2YywgMHgxNSwgMHhmOCwgMHg4ZSwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4OGUsIDB4NiwgMHhlLCAweGZiLCAweDRlLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHhkYSwgMHg0OCwgMHhjZSwgMHhmOCwgMHg1YywgMHg3NywgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhkYywgMHhmNywgMHgzMywgMHhiZiwgMHgxNSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YTgsIDB4NjcsIDB4ZDQsIDB4MWIsIDB4ZGQsIDB4YTksIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDliLCAweDFmLCAweDhkLCAweDYsIDB4MTMsIDB4YmMsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGY4LCAweDlmLCAweDMzLCAweGZiLCAweDc1LCAweDcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDhhLCAweDIwLCAweGZiLCAweGIsIDB4ZmIsIDB4MTEsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGYsIDB4ZjcsIDB4MSwgMHgxZSwgMHhmNywgMHg3NCwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4NmUsIDB4ZTQsIDB4ZjcsIDB4OTcsIDB4NywgMHhlLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NiwgMHhmOCwgMHg4ZSwgMHg3NywgMHgxLCAweGIzLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxLCAweGQwLCAweDMsIDB4YjIsIDB4ZDEsIDB4MTUsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGY3LCAweDRjLCAweGY3LCAweDRiLCAweGY3LCAweDRhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhkMSwgMHhkMiwgMHhmYiwgMHg0OSwgMHhmNywgMHg0YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZjcsIDB4NDksIDB4NDYsIDB4ZDIsIDB4ZmIsIDB4NDksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGZiLCAweDRjLCAweGY3LCAweDRkLCAweDQ1LCAweDQzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhmYiwgMHg0YSwgMHg1LCAweGUsIDB4NmYsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4ZTMsIDB4MTcsIDB4Y2MsIDB4MTYsIDB4ZTMsIDB4ZjcsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZTAsIDB4YWMsIDB4ZTksIDB4ZjcsIDB4MCwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgyNSwgMHg1ZSwgMHgxZSwgMHhmYiwgMHhjZiwgMHhlMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4NywgMHhmNywgMHhlLCAweDRhLCAweGYwLCAweGZiLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg0ZCwgMHg3YywgMHgzZCwgMHg1OCwgMHgxZSwgMHgxMywgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ZDQsIDB4M2MsIDB4NiwgMHhlLCAweDc4LCAweGQyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhkNywgMHhmNywgMHhkZCwgMHhkNCwgMHgxLCAweGM2LCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5ZCwgMHhlYywgMHgzLCAweGMyLCAweGY3LCAweDMwLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzYiwgMHhhMCwgMHhmNywgMHgzMCwgMHg4MywgMHhiMiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODYsIDB4OGMsIDB4ZjcsIDB4YzAsIDB4ZDksIDB4ZjcsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGY3LCAweDFmLCAweGZiLCAweDRhLCAweGZiLCAweDE4LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhmYiwgMHgyMCwgMHhmYiwgMHgyNywgMHhmNywgMHhiLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweGUwLCAweGI4LCAweGMwLCAweGIzLCAweGEzLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg2LCAweDQ3LCAweDhjLCAweDg4LCAweGZiLCAweDYwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHgxYiwgMHgyOSwgMHg2ZSwgMHhkZiwgMHhhNiwgMHg4NiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4ZjcsIDB4YmMsIDB4MTUsIDB4ZTcsIDB4YzIsIDB4ZGEsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGNhLCAweDM5LCAweDMyLCAweDM4LCAweDU2LCAweDQ2LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg0ZSwgMHhjNiwgMHhlOCwgMHgxZSwgMHhlLCAweGEwLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1YSwgMHhkNywgMHhkYywgMHg3NSwgMHhhLCAweGNjLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZSwgMHhlMywgMHgxMywgMHhlYywgMHhjYywgMHgxNiwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzIsIDB4NiwgMHhkZiwgMHhhYywgMHhjZiwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweDhjLCAweDIwLCAweDVlLCAweDFlLCAweGZiLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhmNywgMHhjMiwgMHg3LCAweGY3LCAweDE5LCAweDUyLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMCwgMHg2OCwgMHg0ZCwgMHg4MywgMHgzZSwgMHg1OCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ZDQsIDB4M2MsIDB4NiwgMHhiZCwgMHhlOCwgMHgxNSwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiYiwgMHhhYiwgMHg4YSwgMHg5MCwgMHg5ZiwgMHhhNCwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4YTMsIDB4MWUsIDB4ODAsIDB4YTIsIDB4OWYsIDB4ODAsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGExLCAweGQwLCAweDkwLCAweGY2LCAweDkwLCAweDFmLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGRjLCAweDY4LCAweDg3LCAweDgwLCAweDg0LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg4NiwgMHg3OCwgMHg5NSwgMHg5NiwgMHg3MCwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4OTYsIDB4NzIsIDB4NmQsIDB4OTQsIDB4NzQsIDB4MWIsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDY4LCAweDNlLCAweDFmLCAweGUsIDB4YTAsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweGNiLCAweGY3LCAweDNhLCAweGNlLCAweGY3LCAweDVhLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGE3LCAweGY4LCAweDg5LCAweDMsIDB4Y2IsIDB4MTYsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjMsIDB4ZjcsIDB4NTUsIDB4NSwgMHhmNywgMHgyNSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhmYiwgMHg1NSwgMHg1LCAweGQxLCAweDYsIDB4YjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDUsIDB4ZjcsIDB4MjIsIDB4Y2IsIDB4ZmIsIDB4MTQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4ZjcsIDB4M2EsIDB4NSwgMHhlOSwgMHhjZSwgMHgzYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhmNywgMHg1YSwgMHg1LCAweDQ3LCAweDYsIDB4NjIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweDUsIDB4ZmIsIDB4MjQsIDB4NiwgMHhiMywgMHhmNywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0NiwgMHg2LCAweDYyLCAweGZiLCAweDVhLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDQ4LCAweGY3LCAweDEwLCAweDYsIDB4NjgsIDB4ZmIsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MzIsIDB4NGIsIDB4ZDcsIDB4NiwgMHhkOSwgMHhjYiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZjcsIDB4M2IsIDB4NSwgMHhmNywgMHgyZSwgMHg2LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzYiwgMHg1LCAweGUsIDB4N2QsIDB4ZDMsIDB4ZjgsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDEsIDB4YmIsIDB4ZTUsIDB4ZjcsIDB4YTgsIDB4ZTUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZjcsIDB4YTAsIDB4MTUsIDB4ZmIsIDB4MmUsIDB4ZDEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweGY3LCAweDQxLCAweGY3LCAweDMwLCAweGUyLCAweGYxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhmNywgMHg1YSwgMHhmYiwgMHgxYSwgMHhkMywgMHhmYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzYywgMHg0MCwgMHhmYiwgMHgxMywgMHhmYiwgMHgyMywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4MTYsIDB4ZjcsIDB4M2MsIDB4ZWQsIDB4YTksIDB4YzIsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDRmLCAweGZiLCAweDFlLCAweDM5LCAweDZmLCAweGZiLCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMSwgMHg1NywgMHgyNiwgMHhiNCwgMHhmNywgMHgzZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3NiwgMHhhLCAweGM4LCAweGY3LCAweDFkLCAweDEsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MywgMHgzZiwgMHhhLCAweGZiLCAweDg3LCAweGZjLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhhLCAweGUsIDB4NzYsIDB4YSwgMHhmNywgMHg1YSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg3NywgMHhhLCAweDMsIDB4M2EsIDB4YSwgMHhmYiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NmEsIDB4MjMsIDB4YSwgMHhlLCAweDdkLCAweGQzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhkMywgMHhjNywgMHhlZiwgMHgxLCAweDc3LCAweGEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4YSwgMHhmYiwgMHhhYiwgMHhmYywgMHg0ZSwgMHgyMywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweDkxLCAweDdjLCAweGQ0LCAweGY3LCAweDQ2LCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMiwgMHhkMywgMHgxLCAweGFlLCAweGU1LCAweGY3LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhmNywgMHhiMSwgMHhlNywgMHgzLCAweGY4LCAweDZmLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgzZCwgMHhiZiwgMHhkNCwgMHg3NywgMHhjYSwgMHgxYiwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTgsIDB4OWYsIDB4ZjcsIDB4MmIsIDB4YjMsIDB4MWYsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDUsIDB4NzcsIDB4ODUsIDB4NWUsIDB4MzAsIDB4MjQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDVjLCAweGQ4LCAweGYwLCAweDhhLCAweDFmLCAweGY4LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweGFhLCAweGZiLCAweDQxLCAweGEzLCAweDQ5LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHg2OCwgMHg0YiwgMHg1ZiwgMHgxZSwgMHhjOCwgMHg2MSwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4MjEsIDB4MWIsIDB4ZmIsIDB4ZCwgMHhmYiwgMHhlLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0OSwgMHhmYiwgMHg0NywgMHhmNywgMHgxLCAweDI5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhOSwgMHhlYSwgMHg4ZSwgMHhlYSwgMHhkMywgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4ZjcsIDB4NDcsIDB4MTUsIDB4ZjYsIDB4YzcsIDB4ZWMsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweGQxLCAweDNjLCAweGZiLCAweDExLCAweGZiLCAweDFkLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHgzZCwgMHg2MywgMHhmYiwgMHg1LCAweGEyLCAweGY3LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmOCwgMHgyNCwgMHhiOSwgMHgxNSwgMHhmNywgMHg0LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhiNSwgMHhjOCwgMHgxYiwgMHhkNywgMHhjOCwgMHg2MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg5NSwgMHgxZiwgMHhlLCAweGZiLCAweGZhLCAweGZiLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHhmNywgMHgzOSwgMHg3NywgMHgxLCAweGQ0LCAweGM5LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHgzLCAweGU4LCAweDE2LCAweDdhLCAweDRmLCAweDg4LCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHgxYSwgMHgzZCwgMHhjMSwgMHg2NiwgMHhjNiwgMHhhZSwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OWQsIDB4YTgsIDB4MWUsIDB4YzIsIDB4NywgMHg3OCwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4ODUsIDB4NzAsIDB4MWIsIDB4NjcsIDB4NzEsIDB4YTEsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDg4LCAweGI5LCAweDllLCAweGI3LCAweDFmLCAweGUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4Y2EsIDB4ZjcsIDB4MWIsIDB4MSwgMHg3NywgMHhhLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGY3LCAweDljLCAweDIzLCAweGEsIDB4ZjcsIDB4MTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDRjLCAweGEsIDB4NGEsIDB4ZjcsIDB4MWIsIDB4NTksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NzYsIDB4ZjgsIDB4YmUsIDB4ZjcsIDB4MzMsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4ZTMsIDB4MywgMHhmNywgMHhhMywgMHgxNiwgMHhlMywgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NDgsIDB4NiwgMHg2NywgMHg0MiwgMHg0NCwgMHg0NywgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4OCwgMHgzNiwgMHg3LCAweGFiLCAweDk3LCAweGRkLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhjMSwgMHg4LCAweGUsIDB4ZjcsIDB4MjMsIDB4ODEsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDc2LCAweGY3LCAweGM2LCAweGMzLCAweGY3LCAweGZiLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NywgMHgxMiwgMHhmNywgMHgyYSwgMHhkMSwgMHhmOCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4MTMsIDB4NzYsIDB4ZjcsIDB4MmEsIDB4ZjcsIDB4ZjEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGY3LCAweGY1LCAweDU3LCAweDYsIDB4NjgsIDB4NjAsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDY5LCAweDgwLCAweDgsIDB4NTEsIDB4NywgMHhiMCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4YTAsIDB4YTgsIDB4YTMsIDB4OCwgMHg1MCwgMHhmZCwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhkNywgMHg2LCAweDEzLCAweDZlLCAweGY4LCAweGEzLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg1LCAweDQwLCAweDYsIDB4MTMsIDB4YjYsIDB4ZmIsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweDVkLCAweDE1LCAweGY3LCAweGJlLCAweGMzLCAweGZiLCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGQzLCAweGMzLCAweDUsIDB4Y2YsIDB4YmEsIDB4YjYsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDFhLCAweGU5LCAweGZiLCAweGMsIDB4OTksIDB4NzYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NzksIDB4NDYsIDB4NmEsIDB4ODMsIDB4MWUsIDB4ZDMsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YTYsIDB4OTQsIDB4OTUsIDB4YTUsIDB4YzEsIDB4MWIsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDc5LCAweDY5LCAweDZiLCAweDc0LCAweDdhLCAweDQxLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg0YywgMHg1ZSwgMHg1NSwgMHg1YywgMHg4NSwgMHg1NywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweDIzLCAweDhkLCAweDc2LCAweGRjLCAweGJlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHg3NywgMHgxLCAweGY3LCAweDQzLCAweGNlLCAweGY4LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHgzLCAweGY4LCAweDY3LCAweGM5LCAweDE1LCAweGY3LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhjZCwgMHhkMiwgMHhiYiwgMHhiZSwgMHg1YiwgMHhmNywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NiwgMHhmYiwgMHg0ZCwgMHhmYiwgMHg3MSwgMHg1LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHgxNSwgMHhmNCwgMHhmNywgMHhmLCAweDUsIDB4ZmIsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYywgMHg2NywgMHhmNywgMHg4MywgMHgxNSwgMHhjZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4NTksIDB4NiwgMHg2YSwgMHg2MCwgMHg1NiwgMHg2OSwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4OCwgMHg1MSwgMHg3LCAweGFmLCAweDk0LCAweGIxLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhhMywgMHg4LCAweDVkLCAweGZkLCAweGEsIDB4MTUsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjgsIDB4OGQsIDB4ZjksIDB4NjMsIDB4NSwgMHg0NCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweGZhLCAweGY3LCAweGUwLCAweDc2LCAweGY4LCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGY3LCAweDJiLCAweGQyLCAweDMsIDB4ZjcsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGNiLCAweDE1LCAweGQyLCAweGY4LCAweDNhLCAweDU2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDVlLCAweDUzLCAweDY4LCAweDY4LCAweDgwLCAweDgsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YjEsIDB4OTUsIDB4YjMsIDB4YTAsIDB4YTksIDB4YTQsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHhkNSwgMHhmNywgMHhjNCwgMHhkMSwgMHhmNywgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4MSwgMHhhMywgMHhkMywgMHhmNywgMHgzOCwgMHhjZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNiwgMHhmNywgMHhjZiwgMHg0YywgMHhhLCAweDc4LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhiMywgMHhkNiwgMHgxYSwgMHhmNywgMHgxZSwgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHgzZCwgMHg5YiwgMHg0OCwgMHhmYiwgMHg5LCAweDc0LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg4NiwgMHgxZSwgMHhjYywgMHg3NywgMHg1LCAweGM5LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHg5OSwgMHhhZCwgMHgxYiwgMHhkNiwgMHg4ZSwgMHg1NiwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODIsIDB4ODUsIDB4M2IsIDB4N2YsIDB4N2IsIDB4ODcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4ODQsIDB4MzksIDB4N2QsIDB4MjIsIDB4MWEsIDB4MjcsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGI4LCAweGJlLCAweGI3LCAweGFiLCAweGE5LCAweGE4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg4ZiwgMHg3ZCwgMHg5MSwgMHg3YywgMHgxZSwgMHg3YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4MTUsIDB4NWIsIDB4OGEsIDB4N2QsIDB4ODEsIDB4NzcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDc5LCAweDY0LCAweDc3LCAweDY4LCAweDFiLCAweDZhLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhiMSwgMHhiOSwgMHhhNiwgMHg5MywgMHhjYiwgMHg5NywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4OTQsIDB4OTYsIDB4OGMsIDB4OWMsIDB4OTEsIDB4OCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkYSwgMHhmNywgMHhjNCwgMHhkMCwgMHhmNywgMHhiYiwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhNCwgMHhjYiwgMHhmNywgMHg1MCwgMHhjYiwgMHgzLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg5ZSwgMHgxNSwgMHhmYiwgMHg5LCAweGMwLCAweDI2LCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlLCAweGFmLCAweGY3LCAweDE1LCAweGU0LCAweGUyLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNCwgMHhmYiwgMHhmLCAweGZiLCAweGQsIDB4NjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4MmMsIDB4MWUsIDB4Y2IsIDB4MTYsIDB4YjIsIDB4OTcsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGUxLCAweDkzLCAweGZiLCAweDEyLCAweDc3LCAweDY4LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2LCAweDM1LCAweDM1LCAweDgzLCAweGY3LCAweDEzLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDNiLCAweDhhLCAweDc2LCAweGE2LCAweGQwLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHhkMCwgMHhhMSwgMHg3NywgMHgxLCAweGE3LCAweGQzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhkYywgMHgzLCAweGIwLCAweDk3LCAweDE1LCAweGJiLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhjYywgMHg1LCAweDdkLCAweGEzLCAweGFmLCAweDczLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgzOSwgMHhlNywgMHhmNywgMHgzLCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweDY5LCAweGI3LCAweDcxLCAweGFiLCAweDFmLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHg1YSwgMHhhYywgMHg1OCwgMHg0ZiwgMHg1LCAweDliLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhhMSwgMHgzZiwgMHgxYiwgMHhmYiwgMHgzYSwgMHgzNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmYiwgMHgyNCwgMHgyZSwgMHhhYSwgMHg1MywgMHhhZCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YmEsIDB4YzYsIDB4MTUsIDB4NmUsIDB4YTYsIDB4ODAsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDFhLCAweGY3LCAweDNhLCAweGY3LCAweDE3LCAweGE2LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhhZCwgMHg3OCwgMHg3ZSwgMHg5ZSwgMHgxZSwgMHhmYiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZGMsIDB4MTUsIDB4ZjcsIDB4ODYsIDB4ZjcsIDB4YWYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NmYsIDB4OTcsIDB4NzIsIDB4NGUsIDB4MWEsIDB4ZmIsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgsIDB4NmUsIDB4NGYsIDB4NTksIDB4NmMsIDB4OTEsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFlLCAweGUsIDB4N2QsIDB4ZDMsIDB4ZjgsIDB4MzQsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDc1LCAweGEsIDB4NzcsIDB4YSwgMHgxMywgMHhlYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmOCwgMHhmNSwgMHgxNSwgMHhjYywgMHg2LCAweGJiLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg4ZiwgMHhhMiwgMHhhNCwgMHg3ZiwgMHg3ZiwgMHhhMiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4YTIsIDB4OWYsIDB4ODAsIDB4OWEsIDB4MWIsIDB4YTAsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGY3LCAweDIsIDB4NTYsIDB4YSwgMHg4NywgMHg3OSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NzQsIDB4MWYsIDB4MTMsIDB4ZGMsIDB4NzAsIDB4OTYsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDcyLCAweDhhLCAweDgsIDB4MTMsIDB4ZWMsIDB4NWEsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDQwLCAweDFmLCAweDQ1LCAweGZiLCAweGVkLCAweDIzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NjYsIDB4YSwgMHhjNywgMHhlMywgMHhmNywgMHg5OCwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHgyOCwgMHhjOCwgMHgxNSwgMHg2OCwgMHhhNSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4YzksIDB4MWIsIDB4ZjcsIDB4NiwgMHhmNywgMHgxMywgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGMsIDB4ZjcsIDB4MjUsIDB4MmQsIDB4ZjcsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDJkLCAweDcwLCAweDU0LCAweDczLCAweDdjLCAweDFmLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHgzYiwgMHhmZCwgMHg3MSwgMHhlMywgMHhmNywgMHhhMCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHhmNywgMHg1ZSwgMHgxNSwgMHhmNywgMHhkLCAweGMyLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhjZCwgMHhlMCwgMHg1MCwgMHhmYiwgMHgyNiwgMHhmYiwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4NzAsIDB4NTcsIDB4NGYsIDB4M2MsIDB4YjMsIDB4ZjcsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4ZmIsIDB4MmUsIDB4ZmIsIDB4MmMsIDB4NzYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGUwLCAweDEsIDB4OWQsIDB4ZjcsIDB4YTIsIDB4ZGQsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NmMsIDB4ZmIsIDB4NDEsIDB4MTUsIDB4ZDMsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGRkLCAweGZkLCAweGJhLCAweGQwLCAweGY5LCAweGJhLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhmYiwgMHg4YiwgMHg2LCAweGZiLCAweGYsIDB4ZmIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZmIsIDB4MWQsIDB4MjcsIDB4Y2EsIDB4MmQsIDB4ZjcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4NzAsIDB4YSwgMHgxLCAweGNmLCAweGU2LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg4LCAweGZiLCAweDYzLCAweDE1LCAweGMyLCAweDYsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNlLCAweDY5LCAweGY3LCAweDMwLCAweGY3LCAweDIzLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2ZCwgMHhkNCwgMHhmNywgMHgxZiwgMHhjZSwgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg0YSwgMHg2LCAweDIxLCAweGZiLCAweDFmLCAweDRmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhmYiwgMHgzZCwgMHgxYSwgMHhmYiwgMHg3ZiwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGQsIDB4YjIsIDB4NWEsIDB4MWUsIDB4ZSwgMHg3MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHg0MiwgMHhlNiwgMHgxNywgMHhhZCwgMHhmYiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YzYsIDB4ODksIDB4NSwgMHhmNSwgMHhmNywgMHgxZiwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzUsIDB4ZjcsIDB4M2QsIDB4MWEsIDB4ZjcsIDB4N2YsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweDRmLCAweDY0LCAweGJjLCAweDFlLCAweDRkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDIwLCAweGY1LCAweGZiLCAweDNlLCAweGFkLCAweGZiLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHgxYSwgMHhmYiwgMHg2ZCwgMHgzZCwgMHhmYiwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4MjMsIDB4MWUsIDB4ZSwgMHhmNywgMHg1YSwgMHg3OSwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NzYsIDB4ZjcsIDB4YzUsIDB4YzQsIDB4ODksIDB4YzUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweGM0LCAweDhjLCAweDc3LCAweDEyLCAweGIyLCAweGRlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhkZCwgMHhmNywgMHgyOSwgMHhkZCwgMHhmNywgMHgzYiwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4OWIsIDB4YzAsIDB4YjIsIDB4ZjgsIDB4OWQsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGY3LCAweDIsIDB4N2EsIDB4YzAsIDB4Y2UsIDB4ZjAsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIxLCAweGY3LCAweDI3LCAweDI2LCAweGFkLCAweDQ4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhLCAweDVlLCAweDI5LCAweDM4LCAweDFmLCAweGRlLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg4OSwgMHhlNCwgMHhkZCwgMHhkZiwgMHg4ZCwgMHgyOCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4ODksIDB4MzQsIDB4MzcsIDB4MWUsIDB4MTMsIDB4YTYsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDhkLCAweGVkLCAweGEzLCAweDFmLCAweGY4LCAweDIxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHgxNSwgMHhmYiwgMHgzNywgMHhmNywgMHgyLCAweDc5LCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhmMCwgMHhiMywgMHhmNywgMHgyMSwgMHgxZSwgMHgxMywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4ZjcsIDB4MjYsIDB4MjYsIDB4YWQsIDB4NDgsIDB4ZmIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4MmEsIDB4MzgsIDB4MWUsIDB4ZGQsIDB4MTYsIDB4YWUsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGRlLCAweGRmLCAweDhkLCAweDI5LCAweDcyLCAweDY4LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHgzNywgMHgzOCwgMHg4ZCwgMHhlZSwgMHhhMywgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4YzAsIDB4ZmMsIDB4MmIsIDB4ZmIsIDB4NGEsIDB4MTUsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjgsIDB4M2IsIDB4ZjksIDB4NjYsIDB4NSwgMHgzZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZjLCAweDMxLCAweDhiLCAweGY1LCAweDEsIDB4ZTIsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZTIsIDB4MTYsIDB4ZjMsIDB4ZjUsIDB4MjMsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgzMSwgMHhmNywgMHg1MiwgMHhmNywgMHgxMSwgMHgxLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMSwgMHgzLCAweGQ4LCAweGY3LCAweDUyLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHhmNywgMHgxMSwgMHhmYiwgMHgxMSwgMHg2LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDc4LCAweGM1LCAweGY3LCAweDg2LCAweGM1LCAweDg4LCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4NSwgMHhjNCwgMHg5NSwgMHg3NywgMHgxMiwgMHg5MiwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4ZDQsIDB4ZDksIDB4ZDQsIDB4ZjcsIDB4MWYsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGQ0LCAweGY3LCAweDFmLCAweGQ1LCAweDEzLCAweGI3LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhmOCwgMHg5OCwgMHgxNSwgMHg1MiwgMHg5NywgMHhmYiwgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNiwgMHhmNywgMHgyMywgMHg4YywgMHhmNywgMHgxYiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4ODYsIDB4ZjcsIDB4MWUsIDB4ZmIsIDB4MWYsIDB4ZmIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweGZiLCAweDE2LCAweDVjLCAweDFlLCAweGQ1LCAweDE2LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhkZCwgMHhkMCwgMHhjNCwgMHg5OSwgMHg1MywgMHg0YiwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NDAsIDB4NGMsIDB4NDgsIDB4OGEsIDB4ZDcsIDB4YjgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI2LCAweGZiLCAweGY4LCAweDE1LCAweDVkLCAweGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGNmLCAweGUwLCAweDNjLCAweGEsIDB4ZjcsIDB4OWMsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGEsIDB4M2MsIDB4YSwgMHhmZCwgMHhiLCAweGZiLCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjZCwgMHg2LCAweGY3LCAweGJmLCAweGY5LCAweDY0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDYsIDB4ZSwgMHgyMCwgMHhmNywgMHg4MiwgMHhlNCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZCwgMHhlNCwgMHgzLCAweGIyLCAweGY3LCAweDgyLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NiwgMHhmYiwgMHg2NCwgMHhlNCwgMHhmNywgMHg2NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4ZTQsIDB4ZmIsIDB4NjMsIDB4ZjcsIDB4NjQsIDB4MzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGZiLCAweDY2LCAweDYsIDB4ZSwgMHgyMCwgMHg4YiwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTcsIDB4ZDgsIDB4ZjcsIDB4MzAsIDB4NzcsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZTQsIDB4MywgMHhiMiwgMHhmNywgMHhhNSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4ZmIsIDB4MmUsIDB4ZTQsIDB4ZjcsIDB4MmUsIDB4ZjcsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGZiLCAweDY1LCAweGY3LCAweDMwLCAweDMyLCAweGZiLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2NCwgMHg2LCAweGZiLCAweGYyLCAweDQsIDB4ZjgsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGZjLCAweDhlLCAweDYsIDB4ZSwgMHg2NiwgMHhhLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhmNywgMHhhNiwgMHhkYSwgMHgzLCAweGY4LCAweDI4LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg4ZCwgMHhmYiwgMHhhMCwgMHhlMywgMHhmOSwgMHg3MSwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ODksIDB4NiwgMHhhMywgMHg3YywgMHg1YiwgMHhjMiwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4MjcsIDB4NDIsIDB4ZmIsIDB4MTAsIDB4ZmIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRjLCAweGY1LCAweDMxLCAweGY3LCAweDYsIDB4YzksIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGFlLCAweGE1LCAweDFmLCAweGZiLCAweGFiLCAweGY3LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgyNiwgMHhjYiwgMHhjMSwgMHhjZCwgMHhkZiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZmIsIDB4ZCwgMHhmYiwgMHgzMCwgMHgyNywgMHg1ZCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4M2QsIDB4YWIsIDB4ZjcsIDB4M2UsIDB4MWUsIDB4ZSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4ZjgsIDB4YmYsIDB4ZDMsIDB4MTIsIDB4ZjcsIDB4NzEsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGRjLCAweGVjLCAweGUyLCAweDEzLCAweGQ4LCAweGY3LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NCwgMHgxNSwgMHhkYywgMHg2LCAweDhkLCAweGVkLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhjZSwgMHhjOCwgMHg4LCAweGM2LCAweGMyLCAweGI3LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHgxYSwgMHhmNywgMHg0LCAweDMwLCAweGUzLCAweGZiLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhmYiwgMHg2LCAweDMzLCAweGZiLCAweGEsIDB4MWUsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDUsIDB4ZTAsIDB4OTksIDB4YjQsIDB4YzYsIDB4ZGYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGMzLCAweDRkLCAweDQ5LCAweDU5LCAweDZmLCAweDZlLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgxZiwgMHgzOCwgMHg0MCwgMHg2YywgMHg2NywgMHg5MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4OCwgMHgxMywgMHhlOCwgMHg4NSwgMHhmYiwgMHg0NCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4ZWYsIDB4MmIsIDB4NiwgMHhlLCAweDNiLCAweGZiLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHhmOCwgMHhiZiwgMHhlZSwgMHgxMiwgMHhlNiwgMHhlNSwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4MzEsIDB4ZGYsIDB4ZTAsIDB4ZGQsIDB4MTMsIDB4ZWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweGY3LCAweGVhLCAweDE1LCAweDg5LCAweDI5LCAweDg1LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHg0ZSwgMHg4LCAweDRkLCAweDU0LCAweDVkLCAweDVjLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmYiwgMHg0LCAweGVhLCAweDM3LCAweGY3LCAweDFiLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMSwgMHhiOCwgMHhmNywgMHgzNywgMHgxZSwgMHgzOSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzZiwgMHg4YywgMHg2MywgMHg0NSwgMHgzNSwgMHgxYiwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4YzUsIDB4Y2QsIDB4YmQsIDB4YTksIDB4YWUsIDB4YjUsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUxLCAweGQ2LCAweGE1LCAweGE1LCAweDg2LCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDEzLCAweGY0LCAweDJkLCAweGRmLCAweDE1LCAweGVmLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg2LCAweGUsIDB4ZmIsIDB4ZTQsIDB4ZjgsIDB4NzgsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDkzLCAweDc3LCAweDEsIDB4ZDEsIDB4ZDgsIDB4YzgsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NzQsIDB4ZjgsIDB4NjMsIDB4NWMsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHgxZSwgMHg1YywgMHhhLCAweGUsIDB4ZmIsIDB4ZmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE0LCAweDc2LCAweGY3LCAweDIyLCAweGY3LCAweDUsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4YmIsIDB4ZjcsIDB4YiwgMHhiYiwgMHgzLCAweGFkLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhhLCAweGY3LCAweDNiLCAweGZiLCAweDUsIDB4NDgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHhmYSwgMHhmOCwgMHg2YSwgMHhmNywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg3NywgMHgxLCAweGIxLCAweGJiLCAweGY3LCAweGIsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NjEsIDB4ZjgsIDB4NmEsIDB4NDcsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4MmYsIDB4NDcsIDB4YSwgMHhlLCAweGZiLCAweGZhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3NiwgMHhmNywgMHgyMSwgMHhmNywgMHg2LCAweDEyLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhmNywgMHhiLCAweGJiLCAweDE3LCAweGJiLCAweGY4LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxMywgMHhmMCwgMHg0ZCwgMHhhLCAweGY3LCAweDUxLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxMywgMHg1MCwgMHg0ZCwgMHhhLCAweGUsIDB4ZmMsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDZhLCAweGVmLCAweGY3LCAweDJmLCAweDc3LCAweDEsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDMsIDB4Y2MsIDB4ZjgsIDB4NmEsIDB4MTUsIDB4ZTgsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDYsIDB4OGMsIDB4YTcsIDB4OTAsIDB4ZDMsIDB4YmUsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGFkLCAweDE4LCAweDNiLCAweDY3LCAweDg5LCAweDJmLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhlLCAweGZjLCAweDY5LCAweGY4LCAweDc4LCAweDc2LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIsIDB4YmEsIDB4MywgMHhkNiwgMHhmOCwgMHg2MywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4YWYsIDB4OGQsIDB4ZDYsIDB4YmMsIDB4MWEsIDB4ZWEsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDksIDB4YjksIDB4NywgMHg4YSwgMHg2ZiwgMHg4NiwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4NzYsIDB4OCwgMHhlLCAweGZjLCAweDY5LCAweDg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDEsIDB4ZjcsIDB4MSwgMHhiYiwgMHgzLCAweGNhLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhiOSwgMHg2LCAweDhhLCAweDZmLCAweDg3LCAweDRmLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhhMSwgMHg2OSwgMHgxOCwgMHhkYiwgMHhhZiwgMHg4ZCwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4MWEsIDB4ZTUsIDB4MmQsIDB4NywgMHhlLCAweGZjLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg3OCwgMHg3NiwgMHhmNywgMHg5MywgMHg3NywgMHgxLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHgzLCAweGRiLCAweGY4LCAweDYzLCAweDE1LCAweGE5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGY3LCAweDFlLCAweDUsIDB4ZjcsIDB4OSwgMHg0MiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHg3LCAweGUsIDB4ZmIsIDB4ZmEsIDB4YTAsIDB4NzYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweGU0LCAweDEyLCAweDg1LCAweGUzLCAweDE3LCAweGQ4LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhmNywgMHhhYywgMHg2LCAweGQ3LCAweDliLCAweGU4LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhhMCwgMHg4YSwgMHg3OCwgMHhhMCwgMHgxZSwgMHhhOSwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5MiwgMHg4MiwgMHg3OCwgMHg5ZiwgMHg1ZSwgMHgxYiwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4NWYsIDB4NjMsIDB4NzcsIDB4MWYsIDB4MTMsIDB4ZTAsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDNiLCAweDYsIDB4ZSwgMHhiOSwgMHg3OCwgMHhjYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4YzMsIDB4ZjcsIDB4ZSwgMHhjMiwgMHhmNywgMHhhLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDdkLCAweGNhLCAweGY3LCAweDJlLCAweGNkLCAweGY3LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHhmNywgMHgzYywgMHhjYSwgMHgzLCAweGY3LCAweDVmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHgxNSwgMHhjZCwgMHhmNywgMHg0MSwgMHhiMywgMHg2LCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg3NiwgMHgzMywgMHhiZCwgMHgxZiwgMHhiMCwgMHg0YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHg2LCAweDU5LCAweGRhLCAweDU4LCAweGRjLCAweDdhLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg5NSwgMHgxOSwgMHg5ZCwgMHhlYiwgMHg5NCwgMHhlZiwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4OWQsIDB4M2MsIDB4MWYsIDB4ZmIsIDB4MjIsIDB4NiwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDUsIDB4MTUsIDB4ZjcsIDB4ZSwgMHhkNywgMHg3LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHg4YiwgMHg0ZiwgMHg0ZCwgMHg0MSwgMHg4YiwgMHg2YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZmIsIDB4NzgsIDB4MTUsIDB4ZmIsIDB4NjYsIDB4ZjcsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNkLCAweGY3LCAweDY4LCAweGY3LCAweDY4LCAweGY3LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZSwgMHhmNywgMHg2NSwgMHhmNywgMHg2NSwgMHhmYiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2MsIDB4ZmIsIDB4NjYsIDB4ZmIsIDB4NjYsIDB4ZmIsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNiLCAweGZiLCAweDY2LCAweDFlLCAweGNhLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhmNywgMHgyNSwgMHhmNywgMHgyMCwgMHhmNywgMHg0NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4ZjcsIDB4MjMsIDB4ZmIsIDB4MjAsIDB4ZmIsIDB4NDIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweGZiLCAweDIzLCAweGZiLCAweDIxLCAweGZiLCAweDQ0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmYiwgMHgyNSwgMHhmNywgMHgyMSwgMHhmNywgMHg0MywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHhmYSwgMHhmOCwgMHhkMCwgMHhiMSwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHgxLCAweGQ2LCAweGIxLCAweGY3LCAweDAsIDB4YjEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4ZjksIDB4MmUsIDB4MTUsIDB4NTcsIDB4YjMsIDB4NjEsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGI0LCAweGI1LCAweGJmLCAweGJlLCAweDYyLCAweGIyLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg2MywgMHg2NCwgMHg1OCwgMHgxZSwgMHhiMSwgMHgxNiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4YTQsIDB4YWEsIDB4YWIsIDB4YTIsIDB4NzQsIDB4NmUsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDcyLCAweDZjLCAweDZmLCAweDcyLCAweGExLCAweGFkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweDUzLCAweDdjLCAweGQzLCAweGY4LCAweDJkLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGM4LCAweGUwLCAweGY3LCAweDc4LCAweGU1LCAweDMsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJmLCAweDE1LCAweDU3LCAweDk0LCAweGEzLCAweGZiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUwLCAweDFiLCAweGY3LCAweDFiLCAweGQ3LCAweGQzLCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHgzZiwgMHhhOSwgMHhmYiwgMHgxYywgMHhhZSwgMHgxZiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NjYsIDB4OTEsIDB4YjcsIDB4MWEsIDB4YzYsIDB4ZDIsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGFlLCAweGQ1LCAweDgzLCAweDZjLCAweGEsIDB4ZjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDFiLCAweGZiLCAweDExLCAweDQ5LCAweDQ0LCAweDNiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGYxLCAweDczLCAweGRhLCAweDc4LCAweDFmLCAweGY3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGIxLCAweDczLCAweDYxLCAweDFhLCAweDY4LCAweDZjLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHgzOCwgMHg2MiwgMHhiNSwgMHhkMCwgMHg4MiwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1MywgMHg3YywgMHhkMywgMHhmOCwgMHgyMiwgMHhkMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NzcsIDB4MSwgMHhiOSwgMHhlMCwgMHhmNywgMHg4NywgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhhYiwgMHhmNywgMHgyYywgMHgxNSwgMHg1NywgMHg5NCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NywgMHhmNywgMHg1MCwgMHgxYiwgMHhmNywgMHgxYiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4ZTEsIDB4ZjYsIDB4NDAsIDB4OWMsIDB4ZmIsIDB4MWMsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDM2LCAweGExLCAweDY2LCAweGEyLCAweGI3LCAweDFhLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHg5MywgMHhhZSwgMHhhZSwgMHhkNSwgMHg4NSwgMHg2YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHhmYiwgMHg0YSwgMHgxYiwgMHhmYiwgMHgxMSwgMHg0OSwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4ZmIsIDB4MCwgMHhmMSwgMHg3MCwgMHhkYSwgMHg3OCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHg3MCwgMHhiMCwgMHg3YywgMHg2MSwgMHgxYSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NWIsIDB4MzAsIDB4MzgsIDB4NjEsIDB4YjIsIDB4ZDAsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUyLCAweGY4LCAweDQ0LCAweDM3LCAweGEsIDB4ZmIsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGY5LCAweGE0LCAweGQyLCAweDEsIDB4ZDQsIDB4N2EsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEwLCAweDliLCAweGU2LCAweDU5LCAweGY0LCAweDFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweGQ3LCAweGQwLCAweGU0LCAweGQ4LCAweDRmLCAweGI4LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHgxZiwgMHhiNSwgMHg5YywgMHhkMSwgMHg5OCwgMHhlNywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4M2YsIDB4YzYsIDB4MjcsIDB4YzYsIDB4MWUsIDB4NDksIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGJmLCAweGM0LCAweDFhLCAweGIyLCAweGFhLCAweGI2LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHg5ZSwgMHg0NiwgMHg2NiwgMHg5MiwgMHgxZSwgMHhlNiwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg4LCAweGZiLCAweDE1LCAweGJlLCAweDQ3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHg1MiwgMHgzMiwgMHg0YiwgMHg1MCwgMHhiMCwgMHg2OCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MWUsIDB4M2YsIDB4NzQsIDB4NjksIDB4NGYsIDB4NTQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGUyLCAweDU1LCAweGRhLCAweDVjLCAweDFlLCAweGRhLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg2ZiwgMHhhMiwgMHg3OSwgMHg4LCAweGFmLCAweDZmLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg3NywgMHgxYSwgMHg2ZCwgMHg3MywgMHg1NSwgMHgzYSwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ZDUsIDB4YjIsIDB4ODIsIDB4MWUsIDB4ZjcsIDB4NTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDE1LCAweDc4LCAweDk5LCAweDZmLCAweDljLCAweDRiLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDNiLCAweGJhLCAweDYwLCAweGE1LCAweGJmLCAweDFhLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhiMCwgMHhhNiwgMHg5YSwgMHgxZSwgMHhhMywgMHg3NywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YjUsIDB4NzEsIDB4OCwgMHhkOSwgMHg1YiwgMHhjMywgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4MWEsIDB4NzAsIDB4NzksIDB4NjcsIDB4NTUsIDB4NzAsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmMsIDB4MzEsIDB4ZmIsIDB4MTIsIDB4NzYsIDB4ZjgsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweDEsIDB4ZTMsIDB4ZjIsIDB4MywgMHhlMywgMHg4NSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4NiwgMHg4YSwgMHg2MSwgMHg3ZCwgMHg2MiwgMHg1YywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NjYsIDB4MTgsIDB4ZDIsIDB4YTQsIDB4OTQsIDB4ZGQsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGVlLCAweDI0LCAweDcsIDB4ZjcsIDB4ZDgsIDB4NCwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4MjQsIDB4NiwgMHhlLCAweGEwLCAweDc2LCAweGY5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDEsIDB4ZjcsIDB4MjMsIDB4ZTksIDB4MywgMHhmNywgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZTksIDB4NiwgMHhhMiwgMHhmNywgMHhjYywgMHhmNywgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODUsIDB4ZDIsIDB4ZDIsIDB4OCwgMHhjYiwgMHhmYywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4ZjgsIDB4MywgMHg3LCAweGZiLCAweDNiLCAweGZiLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhmYiwgMHg5ZSwgMHg4OSwgMHhmYiwgMHgzNywgMHg4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGQyLCAweGY3LCAweGQ4LCAweGQ3LCAweGY3LCAweDQ4LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGM0LCAweGYzLCAweGY3LCAweDlkLCAweGU3LCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweGY3LCAweGZhLCAweDE1LCAweGY3LCAweDQsIDB4YjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGY3LCAweGQsIDB4ZWQsIDB4YTMsIDB4MzYsIDB4NzAsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGU1LCAweDkzLCAweDUsIDB4ZjcsIDB4MWIsIDB4NzgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjMsIDB4MzYsIDB4MWIsIDB4ZmIsIDB4ODgsIDB4ODQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDMwLCAweGZiLCAweDQzLCAweGI2LCAweGZiLCAweDNjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhmNywgMHgyZCwgMHhkNywgMHhmNywgMHhhLCAweGY3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweGZiLCAweDYsIDB4ZWEsIDB4ZmIsIDB4NywgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4NjksIDB4NGYsIDB4NjUsIDB4MWYsIDB4OTcsIDB4ZmIsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGYxLCAweGQ4LCAweGJmLCAweGQxLCAweGUzLCAweGJjLCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHgzOCwgMHg1YiwgMHgzOSwgMHgzMiwgMHgzMSwgMHg1MiwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4MWUsIDB4ZSwgMHhmYywgMHgzMSwgMHg4ZCwgMHg3NiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHhmNywgMHhjYywgMHgzLCAweDdhLCAweDc4LCAweDE1LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDg1LCAweGY5LCAweDg4LCAweDUsIDB4NGMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYywgMHgzMSwgMHhlLCAweDdiLCAweGRhLCAweDZhLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YywgMHhkMiwgMHhmNywgMHg5NiwgMHhkMiwgMHgxMiwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4NjcsIDB4ZTcsIDB4MTMsIDB4NzgsIDB4YWMsIDB4ZDAsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDM3LCAweDUsIDB4YTcsIDB4YjUsIDB4YzQsIDB4OWMsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDEzLCAweGI4LCAweGNhLCAweGUzLCAweDVkLCAweGM3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhhYiwgMHg5OCwgMHg5YywgMHhiNCwgMHgxZiwgMHg2ZiwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg4MywgMHg3YSwgMHg2NCwgMHg3NCwgMHg2OCwgMHgxYiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NDMsIDB4NTQsIDB4YjIsIDB4NDEsIDB4MWIsIDB4NmQsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDg2LCAweDdlLCAweDFmLCAweDg5LCAweDhkLCAweDUsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGIyLCAweGNhLCAweGQxLCAweDFhLCAweGEwLCAweDg2LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg5NywgMHgxZSwgMHhmNywgMHgxYiwgMHhkMiwgMHhmYiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhiOCwgMHg3ZSwgMHhiMSwgMHg3OSwgMHhiZiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YzYsIDB4YmQsIDB4ZDMsIDB4ZDgsIDB4YzksIDB4YzIsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDk1LCAweDFlLCAweGUxLCAweDk4LCAweDUsIDB4ZjcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MjYsIDB4ZDIsIDB4MjIsIDB4MWIsIDB4MjAsIDB4ZmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4ZmIsIDB4MWYsIDB4NjcsIDB4OTIsIDB4NmQsIDB4OWMsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDQyLCAweDQ0LCAweGU4LCAweDYsIDB4MTMsIDB4YjQsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDhmLCAweDdjLCAweDZlLCAweDFhLCAweGZiLCAweGMsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDcyLCAweDdkLCAweDFlLCAweGUsIDB4ZmMsIDB4MzEsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY4LCAweDUyLCAweGNmLCAweGY3LCAweDM2LCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGUzLCAweDMsIDB4ZjcsIDB4OTUsIDB4OGMsIDB4MTUsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDUsIDB4NTQsIDB4N2UsIDB4NzYsIDB4OTMsIDB4ZDQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI4LCAweGUzLCAweGNmLCAweDMzLCAweGY3LCAweDM2LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDU2LCAweDUsIDB4ZmIsIDB4MSwgMHg0OCwgMHg0NywgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjgsIDB4NywgMHgzNSwgMHg5MCwgMHg0NywgMHhmNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg5OCwgMHg5MCwgMHg4ZSwgMHg5YSwgMHgxZSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHg3NiwgMHhmNywgMHg1NywgMHhkNCwgMHhmOCwgMHgyMCwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTAsIDB4NzcsIDB4MTIsIDB4YzUsIDB4ZGEsIDB4M2MsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFkLCAweGU1LCAweDEzLCAweGY2LCAweGY3LCAweDI2LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg2YywgMHhhOCwgMHhhZiwgMHg2OCwgMHhkNiwgMHgxYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhmNywgMHhkLCAweGRkLCAweGY3LCAweDRlLCAweGY3LCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhmNywgMHgxNSwgMHhmYiwgMHgyNywgMHgzYywgMHg2ZCwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4NmMsIDB4MWYsIDB4ZjcsIDB4OTIsIDB4MzMsIDB4ZmUsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDcsIDB4MTMsIDB4ZmEsIDB4ODIsIDB4ZjgsIDB4NjMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQsIDB4Y2MsIDB4ZGIsIDB4ZGYsIDB4Y2QsIDB4ZDYsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI1LCAweGZiLCAweDNlLCAweDMyLCAweDcyLCAweDU3LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhiMiwgMHhmNywgMHgzMCwgMHgxZSwgMHhlLCAweDc4LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhkOCwgMHhkMiwgMHgxLCAweGY4LCAweDI5LCAweGU5LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGY3LCAweDQ3LCAweDE1LCAweDI4LCAweDk1LCAweGQ4LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYiwgMHgxYiwgMHhmNywgMHgxMywgMHhmNywgMHhmLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZSwgMHhkMiwgMHg0ZiwgMHhmMCwgMHgzYiwgMHgxZiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlNCwgMHhiMCwgMHg5OSwgMHhkMiwgMHhiMCwgMHgxYSwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4ZGMsIDB4ZmIsIDB4MTIsIDB4M2QsIDB4ZmIsIDB4YSwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmEsIDB4NmUsIDB4MWUsIDB4ZTcsIDB4N2IsIDB4NSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4YjMsIDB4YzUsIDB4ZGYsIDB4MWIsIDB4YzUsIDB4Y2EsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDI0LCAweGZiLCAweDYsIDB4NzcsIDB4NTcsIDB4OTAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDNmLCAweDUsIDB4ZjQsIDB4YWQsIDB4ZjQsIDB4NTEsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDM4LCAweDQ4LCAweDRiLCAweDM2LCAweGZiLCAweDksIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweGFlLCAweDg0LCAweDFlLCAweGUsIDB4ZjcsIDB4MjMsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGRjLCAweGJlLCAweGY3LCAweDc3LCAweGMyLCAweGY3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU2LCAweDU2LCAweGMwLCAweDEyLCAweGY3LCAweDhmLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhkNywgMHhmNywgMHhlYywgMHhkMSwgMHgxMywgMHhmMywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4YzksIDB4MTUsIDB4ZjcsIDB4NGYsIDB4NDMsIDB4ZDEsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGJlLCAweDU3LCAweGY3LCAweDc4LCAweDRmLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweGZiLCAweDcxLCAweDUsIDB4ZDYsIDB4ODQsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZjcsIDB4MTAsIDB4NSwgMHhmYiwgMHgxMCwgMHg3LCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmNywgMHhkYywgMHgxNSwgMHg1MSwgMHg5NywgMHhhZSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4MWIsIDB4ZWYsIDB4YzAsIDB4YzEsIDB4YzIsIDB4YmQsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDVhLCAweDk2LCAweDFmLCAweDhkLCAweDcsIDB4MTMsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDk3LCAweDllLCAweGEzLCAweGFiLCAweDFhLCAweGUzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDkyLCAweDc4LCAweDMxLCAweDcwLCAweDY4LCAweDU0LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhkMSwgMHg4MCwgMHg1LCAweGE3LCAweDk2LCAweDk5LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHgxYiwgMHhiNSwgMHg5YywgMHg3NywgMHg3NSwgMHg2MywgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NzAsIDB4MWYsIDB4MTMsIDB4ZjMsIDB4ODEsIDB4NTgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4OGQsIDB4YmQsIDB4N2QsIDB4NWIsIDB4MWEsIDB4NjUsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDYwLCAweDUzLCAweDdlLCAweGFlLCAweDlkLCAweDg1LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhmYywgMHg2NywgMHgxNSwgMHhkOCwgMHg2LCAweGY4LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg2NiwgMHg1LCAweDNmLCAweDYsIDB4ZSwgMHhmYiwgMHhmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTIsIDB4Y2QsIDB4ZjcsIDB4YzQsIDB4Y2EsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZGMsIDB4MywgMHg5MCwgMHhmOCwgMHgxYywgMHgxNSwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YjEsIDB4NTYsIDB4ZjUsIDB4MWIsIDB4ZjUsIDB4YzQsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGM3LCAweDY2LCAweGFjLCAweDU2LCAweDk4LCAweDFmLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGJmLCAweDlhLCAweDlmLCAweGE4LCAweGIwLCAweDFhLCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMSwgMHg5MywgMHg3NywgMHgyYiwgMHg2ZiwgMHg2MiwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MWUsIDB4ZDUsIDB4N2YsIDB4NSwgMHhhYiwgMHg5NywgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4YmEsIDB4MWIsIDB4YjgsIDB4OWUsIDB4NzMsIDB4NzEsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDgyLCAweDZmLCAweDFmLCAweDgwLCAweDRlLCAweDUsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGMwLCAweDdjLCAweDUyLCAweDFhLCAweDVlLCAweDY3LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg0ZiwgMHg3YywgMHhiNiwgMHhhMCwgMHg4NSwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmYSwgMHhmOSwgMHgzNywgMHhiYSwgMHgxLCAweDg3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgxNSwgMHhjZSwgMHg2LCAweGJiLCAweGFkLCAweDhiLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg5ZiwgMHg4MSwgMHg4MCwgMHg5ZiwgMHgxZSwgMHg3ZiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4N2QsIDB4YTIsIDB4MWIsIDB4YTEsIDB4ZGYsIDB4OTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MWYsIDB4NDksIDB4NiwgMHg2OCwgMHg4NywgMHg3YywgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4MWIsIDB4NzgsIDB4N2IsIDB4OTIsIDB4OTQsIDB4N2MsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDczLCAweDc0LCAweDljLCAweDZhLCAweDFiLCAweDU5LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgzZCwgMHgxZiwgMHhlLCAweGY3LCAweGM5LCAweGY3LCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHhmNSwgMHhjNiwgMHgxLCAweGY3LCAweDViLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YiwgMHhjOCwgMHhmNywgMHhhMSwgMHhjOCwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHhmNywgMHhjNiwgMHgxNSwgMHhjZCwgMHhmNywgMHhmNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4YzYsIDB4ZmMsIDB4YSwgMHg1MCwgMHhmNywgMHgyZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjZCwgMHhmYiwgMHhmNSwgMHgxNSwgMHhjOCwgMHhmNywgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NiwgMHhmNCwgMHhmYiwgMHhmNSwgMHg1LCAweGM3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweGY3LCAweGYwLCAweDUsIDB4OGQsIDB4ZmIsIDB4ZjAsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDMwLCAweDJiLCAweDYsIDB4MmIsIDB4ZmIsIDB4ZTAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NiwgMHgyOCwgMHhmNywgMHhlMCwgMHg1LCAweDI5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OGIsIDB4ZGUsIDB4ZjgsIDB4YmMsIDB4ZDQsIDB4MSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4ZTYsIDB4MywgMHhhNSwgMHgxNiwgMHhmOCwgMHg3NSwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZmEsIDB4NiwgMHg5NywgMHg5ZSwgMHg5NywgMHhhMywgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4OCwgMHhmNywgMHgyNSwgMHhmNywgMHg0LCAweGY2LCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHgxYSwgMHhlMSwgMHg0YywgMHhmNywgMHgxLCAweGZiLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlLCAweDJiLCAweDQ5LCAweGZiLCAweDFjLCAweDdkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHg4MSwgMHg1LCAweGY3LCAweDIwLCAweDhjLCAweGY3LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg5YSwgMHgxYiwgMHhkYSwgMHhjNCwgMHg1YSwgMHg0NCwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MCwgMHgyZCwgMHgzZCwgMHg0ZiwgMHgxZiwgMHgzOCwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YiwgMHgyZCwgMHhmYiwgMHg1LCAweDFhLCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZhLCAweGY3LCAweGEwLCAweGNkLCAweGY3LCAweGM3LCAweGM5LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg0LCAweGRiLCAweDMsIDB4OGYsIDB4ZjcsIDB4YWQsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQzLCAweGNkLCAweGZiLCAweDVkLCAweDYsIDB4OTUsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDk1LCAweGM1LCAweGJiLCAweDgsIDB4ZDMsIDB4YzQsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweGQzLCAweDFhLCAweGY3LCAweDQsIDB4MmIsIDB4OWMsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDExLCAweDc3LCAweDM4LCAweDY0LCAweDgxLCAweDFlLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg1LCAweGFiLCAweDk1LCAweDk1LCAweGFmLCAweGM0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhhYiwgMHg3MCwgMHg2MywgMHg2NSwgMHg3MiwgMHg3OCwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4MWYsIDB4NDcsIDB4NTUsIDB4NTAsIDB4NTMsIDB4ODUsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZSwgMHg3YywgMHhkNywgMHg2MywgMHg3NiwgMHhmOCwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NGUsIDB4YSwgMHgxMywgMHg3OCwgMHhmOCwgMHgyZSwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4ZjgsIDB4OWYsIDB4MzMsIDB4ZmIsIDB4YjgsIDB4NiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4MzMsIDB4NWIsIDB4MzksIDB4MzAsIDB4MzYsIDB4NzYsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDFlLCAweGY3LCAweGJjLCAweDMzLCAweGZiLCAweGRhLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgsIDB4Y2EsIDB4MmIsIDB4ZjcsIDB4MTcsIDB4YTQsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGUwLCAweGMzLCAweDFlLCAweDhkLCAweDYsIDB4ZSwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmOCwgMHhlYywgMHhmNywgMHgxZCwgMHgzNCwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHhmOCwgMHhhMCwgMHgyZiwgMHhhLCAweGUsIDB4NzksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NzUsIDB4NzcsIDB4MzQsIDB4YSwgMHhmYiwgMHhiMiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MmMsIDB4YSwgMHhlLCAweDc5LCAweGEsIDB4ZjgsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweDEyLCAweGNmLCAweGUzLCAweDdlLCAweGU1LCAweGU2LCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhlMywgMHgzYywgMHhkYSwgMHgxMywgMHg3MSwgMHhmOCwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4MTUsIDB4ZGEsIDB4ZjgsIDB4OWMsIDB4NiwgMHgxMywgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4ZmIsIDB4YTgsIDB4NiwgMHgzMiwgMHhhLCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2NSwgMHhhLCAweDFmLCAweGZiLCAweDlmLCAweGY4LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhhLCAweDEzLCAweGI0LCAweGY3LCAweDQ5LCAweDcyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGEsIDB4ZjgsIDB4ZWMsIDB4ZjcsIDB4MWQsIDB4M2QsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NiwgMHgxMywgMHhiOCwgMHhmYiwgMHhhOCwgMHg3LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDY1LCAweGEsIDB4MWUsIDB4MTMsIDB4YjQsIDB4ZmIsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGEwLCAweDVlLCAweGEsIDB4ZmIsIDB4MTEsIDB4YmQsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4NCwgMHg1OSwgMHhmOCwgMHhjMCwgMHhiZCwgMHg3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUzLCAweDY4LCAweGEsIDB4ZjcsIDB4NjQsIDB4MTYsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4NWUsIDB4ZjgsIDB4OWYsIDB4NSwgMHgzMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZCwgMHhmYywgMHgzOCwgMHhmYiwgMHgyOCwgMHhmOCwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyZSwgMHg2LCAweGUsIDB4YWEsIDB4NjgsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4MTYsIDB4ZTcsIDB4NiwgMHhlOSwgMHhmOCwgMHgyOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg2LCAweGYxLCAweGZjLCAweDI4LCAweDUsIDB4ZTYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmYsIDB4ZjgsIDB4OWYsIDB4NSwgMHgzNSwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGZjLCAweDI4LCAweDUsIDB4ODksIDB4NiwgMHgyNSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4NSwgMHgzMSwgMHg2LCAweDI2LCAweGZjLCAweDMzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY4LCAweDMzLCAweDUsIDB4MzAsIDB4NiwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg2OCwgMHhhLCAweDk2LCAweDE2LCAweGY0LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGY3LCAweDYwLCAweGY3LCAweDE4LCAweGZiLCAweDYwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDYsIDB4ZmIsIDB4NTIsIDB4ZjcsIDB4YTYsIDB4ZjcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhkLCAweDUsIDB4MjMsIDB4NiwgMHhmYiwgMHgxMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4ZmIsIDB4NywgMHhmNywgMHg0ZCwgMHg1LCAweDIwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNmLCAweGZiLCAweDkyLCAweDUsIDB4ZSwgMHhmYiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NmEsIDB4ZGQsIDB4ZjksIDB4MjMsIDB4NzcsIDB4MSwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTAsIDB4MTUsIDB4OTQsIDB4M2IsIDB4NTUsIDB4YSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHhmMiwgMHhiZSwgMHgxZiwgMHhmNywgMHg1ZCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4NSwgMHgzMiwgMHg2LCAweGZiLCAweDI4LCAweGZjLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDg5LCAweDYsIDB4ZmIsIDB4MjQsIDB4ZjgsIDB4MzcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NiwgMHhmNywgMHg1OCwgMHhmYywgMHg5YSwgMHg1LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg4MSwgMHg0YSwgMHg0MSwgMHgxYiwgMHg3NiwgMHg3YiwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4N2UsIDB4MWYsIDB4ZSwgMHhmYiwgMHg1MywgMHhmYiwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4ZjksIDB4NzAsIDB4ZjcsIDB4MWQsIDB4MSwgMHgzMywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNywgMHhmOSwgMHg2MiwgMHgyZiwgMHhhLCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweGZiLCAweDZhLCAweGRhLCAweGY5LCAweDc5LCAweGVmLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGVhLCAweDk0LCAweGU1LCAweGU2LCAweGU1LCAweDMsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4Y2UsIDB4ZjksIDB4NmIsIDB4MmUsIDB4YSwgMHhlLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHgzOSwgMHhjZiwgMHhlMywgMHhjZiwgMHhmNywgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHg3ZiwgMHhlMywgMHgzLCAweGFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHgxNSwgMHhmNywgMHg1ZiwgMHhmYiwgMHgzOSwgMHhlMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4ZjcsIDB4NWQsIDB4Y2YsIDB4ZmIsIDB4NWQsIDB4ZTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGNmLCAweGZiLCAweDJmLCAweDYsIDB4ZjcsIDB4NGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDUsIDB4MjMsIDB4NiwgMHhmYiwgMHg0MCwgMHhmYiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDQsIDB4ZjcsIDB4YmYsIDB4NSwgMHgyOSwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHhmYiwgMHhiZiwgMHg1LCAweGZiLCAweDMwLCAweDQ3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHgzMywgMHhmYiwgMHg1ZiwgMHg2LCAweGUsIDB4ZmIsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGQ3LCAweGY4LCAweGIsIDB4ZDMsIDB4NjMsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NjcsIDB4YSwgMHhmYywgMHgxMCwgMHg1LCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDhiLCAweGQ3LCAweGY4LCAweDYsIDB4ZDMsIDB4ZjcsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDYzLCAweGEsIDB4ZjgsIDB4MTUsIDB4NjcsIDB4YSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1LCAweGY3LCAweDQzLCAweGY4LCAweGEyLCAweDM3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGQyLCAweGY4LCAweGQ4LCAweGQyLCAweDEsIDB4YmUsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE2LCAweGU4LCAweDMsIDB4YjEsIDB4ZjcsIDB4ZWMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDkyLCAweGZiLCAweGFiLCAweGY3LCAweDdlLCAweGY3LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHhmNywgMHhiMywgMHhkNywgMHhkOSwgMHg4OCwgMHhmNywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODEsIDB4ZmIsIDB4NzEsIDB4NzgsIDB4ZmIsIDB4YWYsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGU3LCAweDE2LCAweGY3LCAweDIxLCAweGExLCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMiwgMHhmNywgMHgxYywgMHg5NiwgMHhmYiwgMHgzOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZmIsIDB4ZCwgMHg3ZSwgMHhmYiwgMHgzZiwgMHhmYiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWMsIDB4N2UsIDB4ZjcsIDB4NDIsIDB4ZjcsIDB4YSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3NiwgMHhhMCwgMHhmOCwgMHg5ZiwgMHg5YSwgMHhmNywgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4NiwgMHhmYiwgMHg3MCwgMHg5OCwgMHg3LCAweDFlLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg2MywgMHhmZiwgMHhjLCAweDksIDB4ZDIsIDB4YSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmOCwgMHhjMCwgMHgxNCwgMHhmOSwgMHg0NywgMHgxNSwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4MCwgMHg1YiwgMHgyLCAweDAsIDB4MSwgMHgwLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NjgsIDB4MCwgMHg2ZCwgMHgwLCAweGJjLCAweDAsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MWUsIDB4MSwgMHgyMywgMHgxLCAweDRjLCAweDEsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YWMsIDB4MSwgMHhkOSwgMHgxLCAweGRmLCAweDEsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4YiwgMHgyLCAweDEzLCAweDIsIDB4MWMsIDB4MiwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgzYSwgMHgyLCAweDUwLCAweDIsIDB4ODQsIDB4MiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg5ZiwgMHgyLCAweGE0LCAweDIsIDB4YjQsIDB4MiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhjMCwgMHgyLCAweGM3LCAweDIsIDB4ZWUsIDB4MywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDFkLCAweDMsIDB4MjQsIDB4MywgMHgyYiwgMHgzLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDNjLCAweDMsIDB4NDEsIDB4MywgMHg0YiwgMHgzLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDVjLCAweDMsIDB4NjIsIDB4MywgMHg3OCwgMHgzLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDk3LCAweDMsIDB4YTAsIDB4MywgMHhhNSwgMHgzLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGJkLCAweDMsIDB4YzQsIDB4MywgMHhjYiwgMHgzLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGRjLCAweDMsIDB4ZTQsIDB4MywgMHhmNSwgMHgzLCAweGZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDksIDB4NCwgMHgxMywgMHg0LCAweDIzLCAweDQsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MmMsIDB4NCwgMHgzMCwgMHg0LCAweDNlLCAweDQsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NTksIDB4NCwgMHg1ZSwgMHg0LCAweDYyLCAweDQsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NzYsIDB4NCwgMHg4MCwgMHg0LCAweDhjLCAweDQsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4OWUsIDB4NCwgMHhhOSwgMHg0LCAweGI0LCAweDQsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4YzUsIDB4NCwgMHhjZiwgMHg0LCAweGQ5LCAweDQsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZTcsIDB4NCwgMHhlYiwgMHg0LCAweGY0LCAweDQsIDB4ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NiwgMHg1LCAweGEsIDB4NSwgMHgxMSwgMHg1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDFiLCAweDUsIDB4MjEsIDB4NSwgMHgyNywgMHg1LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDMyLCAweDUsIDB4MzUsIDB4MjIsIDB4YSwgMHgxMywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4YSwgMHgxNSwgMHgyYiwgMHhhOSwgMHgyZSwgMHhjNiwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NDYsIDB4YzYsIDB4ZDcsIDB4NWMsIDB4ZjcsIDB4NywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGYsIDB4ZjcsIDB4MmIsIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDFmLCAweGY2LCAweDY0LCAweGYxLCAweDUyLCAweGNmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHg1MywgMHgzMiwgMHhiMiwgMHgyNywgMHgxYiwgMHgyYywgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4NGEsIDB4NTIsIDB4MWYsIDB4NTMsIDB4NGEsIDB4NjEsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIsIDB4MWEsIDB4ZWYsIDB4MTYsIDB4YzAsIDB4OWMsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGM3LCAweDFlLCAweGM4LCAweGIzLCAweGJlLCAweGI3LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhjYSwgMHhjYiwgMHg3MywgMHg1OCwgMHhiMywgMHgxZiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4YWMsIDB4M2EsIDB4MmUsIDB4MWEsIDB4ODUsIDB4ZmIsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDM1LCAweGZiLCAweDFmLCAweDhhLCAweDgsIDB4NDAsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGJlLCAweDVmLCAweDFmLCAweDVmLCAweGJmLCAweDcyLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHgxYSwgMHhiLCAweDI0LCAweGEsIDB4MjUsIDB4YSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg0NywgMHg5YywgMHg0NSwgMHhiMiwgMHg1NywgMHgxZSwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4YmIsIDB4NjcsIDB4ZGUsIDB4MWIsIDB4ZjcsIDB4MjQsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweGY3LCAweDQ5LCAweGVlLCAweDY4LCAweGNkLCAweDVhLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiNCwgMHg1YSwgMHg1NywgMHg5YywgMHg1NCwgMHgxYiwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4NmQsIDB4NWIsIDB4NjMsIDB4MWYsIDB4NjQsIDB4NWIsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDQzLCAweDFhLCAweGU1LCAweDE2LCAweGY3LCAweDI3LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHhiNywgMHhjNywgMHgxYiwgMHhkMiwgMHhkNywgMHg1NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OGUsIDB4MWYsIDB4NjIsIDB4ODIsIDB4NTcsIDB4NzMsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDYyLCAweDczLCAweDZkLCAweDZjLCAweDRjLCAweDFiLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHhjMiwgMHhmNywgMHgyYiwgMHg4NSwgMHgxZiwgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhhMCwgMHg5MSwgMHhhNCwgMHg5ZSwgMHg5ZSwgMHg4LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhhMCwgMHg5OSwgMHhjMiwgMHgxYiwgMHhjYiwgMHhhMSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4OWIsIDB4MWYsIDB4OWIsIDB4NzMsIDB4OGEsIDB4NmEsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDU0LCAweDc3LCAweDQwLCAweDg1LCAweDc5LCAweDg3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDg1LCAweGZiLCAweDJkLCAweDc4LCAweGZiLCAweDFkLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhkOSwgMHg0YiwgMHhlOCwgMHhjMywgMHhiYiwgMHg5YiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4MWUsIDB4YiwgMHg4ZSwgMHg3ZSwgMHg5OSwgMHg3MywgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4OCwgMHhlNywgMHg2LCAweDZlLCAweGJkLCAweDdlLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHgxYSwgMHhmNywgMHhhLCAweDcsIDB4OTAsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGYzLCAweGZiLCAweDQ4LCAweDhjLCAweDgsIDB4MmIsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDY4LCAweDZhLCAweDFmLCAweDZlLCAweDY4LCAweDg3LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg3NCwgMHg4LCAweGY3LCAweGRiLCAweGZiLCAweDIyLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGZjLCAweGQwLCAweDIxLCAweGEsIDB4ZSwgMHg5OSwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4NiwgMHhkNywgMHhmNywgMHg3NywgMHg1LCAweGY3LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGRiLCAweGZiLCAweDc3LCAweDUsIDB4ZjEsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4ZjksIDB4N2MsIDB4NSwgMHgyYSwgMHg2LCAweDQ5LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHgxNSwgMHhmNywgMHg0LCAweGY3LCAweGZkLCAweDUsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4YiwgMHhmYiwgMHhmZCwgMHg1LCAweGIsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDQ1LCAweDRjLCAweDJhLCAweDFiLCAweDc4LCAweDdhLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg3YSwgMHgxZiwgMHg3YiwgMHg5YiwgMHg4NCwgMHg5YywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YWUsIDB4OTksIDB4OWYsIDB4YTAsIDB4OTcsIDB4MWUsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDlkLCAweDkwLCAweGE2LCAweDhmLCAweGJkLCAweDk0LCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhiMSwgMHg5YSwgMHg4LCAweGUsIDB4MTUsIDB4ZjgsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgxYywgMHg2NiwgMHhkOCwgMHg1NSwgMHhiMCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4NTUsIDB4NTMsIDB4OTAsIDB4NzQsIDB4MWIsIDB4ZmIsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDRjLCAweGZiLCAweDgsIDB4ODYsIDB4ZmIsIDB4MzIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4YSwgMHg3YSwgMHg3ZSwgMHgzYSwgMHgyMiwgMHgxYiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4YzMsIDB4ZjcsIDB4MTAsIDB4N2UsIDB4MWYsIDB4OTAsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDk2LCAweGNlLCAweGEyLCAweGRlLCAweGYyLCAweDhhLCAweGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHhhYiwgMHg0MCwgMHg5MCwgMHg0MCwgMHg4LCAweGIsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjksIDB4NWQsIDB4MTUsIDB4ZmMsIDB4MmYsIDB4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4OGYsIDB4ZmIsIDB4NTYsIDB4ZjcsIDB4YTMsIDB4ZjcsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGY3LCAweDc2LCAweGVhLCAweDFlLCAweGY4LCAweDJmLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgyZiwgMHg3LCAweGZiLCAweDE1LCAweDc4LCAweDIwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmYiwgMHg0OCwgMHg4YiwgMHhmNywgMHgyOSwgMHhlMiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MmYsIDB4NywgMHhiLCAweGFhLCAweDc4LCAweGUwLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIsIDB4MTUsIDB4ZWYsIDB4NiwgMHhjMywgMHhkZSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NSwgMHhlZiwgMHg2LCAweGZiLCAweDIsIDB4NDIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgzYiwgMHg5ZiwgMHg0OCwgMHhiMywgMHg1YiwgMHgxZSwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4YmUsIDB4NzAsIDB4ZGIsIDB4MWIsIDB4Y2IsIDB4YjUsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGIwLCAweDFmLCAweGIyLCAweGFhLCAweGE0LCAweGI1LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHgzNiwgMHg5NiwgMHgxOCwgMHg2ZSwgMHhiLCAweDMxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ5LCAweDI3LCAweDMxLCAweGEsIDB4YiwgMHg0YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweGY3LCAweDFkLCAweDM4LCAweGEsIDB4YiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHgxNiwgMHhmOCwgMHhhNiwgMHhlMCwgMHhmYywgMHg0NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZjgsIDB4MTMsIDB4ZTAsIDB4ZmMsIDB4MTMsIDB4ZjcsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDM4LCAweGUwLCAweGZjLCAweDk3LCAweDYsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZWYsIDB4MzEsIDB4NiwgMHhiLCAweDMzLCAweDZkLCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyNCwgMHg4NiwgMHhkZCwgMHhlMywgMHgxZSwgMHhmNywgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4ZmIsIDB4ZDQsIDB4NywgMHhmYiwgMHg4LCAweGNjLCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHhiLCAweGJiLCAweGZiLCAweGQsIDB4MTUsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDU1LCAweGEsIDB4YTUsIDB4ZWMsIDB4ZjIsIDB4YmUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDViLCAweGY4LCAweGEyLCAweDUsIDB4MzIsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4ZmMsIDB4MzcsIDB4NSwgMHg4OSwgMHg2LCAweGZiLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzNywgMHg1LCAweDJjLCAweDYsIDB4ZjcsIDB4NTksIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDUsIDB4NDMsIDB4NzEsIDB4ODAsIDB4NTIsIDB4NDEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDdjLCAweDk1LCAweDhmLCAweDdlLCAweDFmLCAweGIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NiwgMHgxMywgMHhiOCwgMHgzMywgMHhmYiwgMHhhOCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhhLCAweDFlLCAweDEzLCAweDc0LCAweDY1LCAweGEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NDYsIDB4YSwgMHhmOSwgMHg0LCAweDc3LCAweDEsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHg2ZSwgMHhhLCAweDMwLCAweGEsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4NiwgMHhmNSwgMHg1YSwgMHhhLCAweDI3LCAweDYsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDU2LCAweGRlLCAweDUsIDB4MjcsIDB4NiwgMHhlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcsIDB4NiwgMHhiLCAweGEwLCAweDc2LCAweGY5LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGIsIDB4ZjcsIDB4MTAsIDB4ZjgsIDB4ZTksIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHhlMywgMHgzLCAweGU0LCAweDE2LCAweGUzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhmMCwgMHhjZiwgMHgyNiwgMHhjMCwgMHg2LCAweGM3LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhlMCwgMHg3YywgMHgxZSwgMHg5OSwgMHhkNSwgMHg1LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg3NCwgMHg4ZCwgMHg3NCwgMHgxYiwgMHhmYiwgMHgzLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg0ZSwgMHgxZiwgMHg1OCwgMHg0MCwgMHg0NywgMHhkNiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGIyLCAweDg2LCAweGY3LCAweDIwLCAweGZiLCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg4MywgMHhmYiwgMHgxOSwgMHg1ZCwgMHgxZSwgMHhkNCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4OGEsIDB4ZGUsIDB4ZDEsIDB4YzQsIDB4OTgsIDB4NTIsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDg0LCAweDQwLCAweDRjLCAweDQ3LCAweDhhLCAweGQ3LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiLCAweDRlLCAweGEsIDB4M2MsIDB4ZGEsIDB4MTMsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDJlLCAweDg4LCAweDE1LCAweGRhLCAweGY4LCAweDljLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIzLCAweGY4LCAweGYyLCAweDJlLCAweGEsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4ZjgsIDB4ZTksIDB4MmYsIDB4YSwgMHhiLCAweDdkLCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg3NiwgMHhmOCwgMHg1ZSwgMHhkMywgMHhiLCAweDEsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY4LCAweGIsIDB4ZWEsIDB4MywgMHhkYSwgMHhiLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDJlLCAweDYsIDB4YiwgMHg3MywgMHg4YiwgMHhlMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZTAsIDB4ZjcsIDB4NzksIDB4ZTAsIDB4YiwgMHgzOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhlMywgMHgzLCAweGNlLCAweDE2LCAweGUzLCAweGIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4ZWYsIDB4ZjgsIDB4NzQsIDB4ZWYsIDB4MywgMHhiLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDc3LCAweGQ5LCAweGIsIDB4MTUsIDB4ZTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NWQsIDB4NiwgMHg4YywgMHhhNywgMHg4ZCwgMHhjNSwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NzUsIDB4YWQsIDB4MTgsIDB4M2IsIDB4NjcsIDB4OGIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweDFhLCAweGIsIDB4MTUsIDB4YjksIDB4NiwgMHg4YSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NTAsIDB4NTgsIDB4NzYsIDB4YTEsIDB4NjksIDB4MTgsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDhiLCAweGRhLCAweGJjLCAweDFhLCAweGU2LCAweDJkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MTIsIDB4YmEsIDB4ZTksIDB4ZjcsIDB4OGQsIDB4ZTMsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGIsIDB4N2MsIDB4ZDMsIDB4ZjcsIDB4NDgsIDB4ZDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGQzLCAweGIsIDB4ZmMsIDB4MzEsIDB4YTAsIDB4NzYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDMsIDB4NiwgMHhiLCAweGRiLCAweGFmLCAweDhiLCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHgxYSwgMHhlNywgMHgyZCwgMHhmYiwgMHg2LCAweGI5LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDZmLCAweDg5LCAweDUxLCAweDU4LCAweDc2LCAweDgsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4Y2YsIDB4ZTMsIDB4ZjcsIDB4ODksIDB4ZTMsIDB4YiwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZGYsIDB4ZjgsIDB4ZTQsIDB4ZTAsIDB4YiwgMHhmZCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZTMsIDB4ZjgsIDB4OTksIDB4N2EsIDB4YSwgMHhmZSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZWEsIDB4ZjksIDB4NjAsIDB4MmMsIDB4NiwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg3NiwgMHhmOCwgMHgyOSwgMHg3NywgMHgxLCAweGIsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGEwLCAweGQyLCAweDkxLCAweGY1LCAweDhmLCAweDFmLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDY5LCAweDg3LCAweDgwLCAweDgzLCAweDc3LCAweDFiLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGZhLCAweGY4LCAweGZhLCAweDc2LCAweGY3LCAweDIxLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGIsIDB4NSwgMHg4NywgMHg5OSwgMHg4ZCwgMHg4NSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4NywgMHhiLCAweDFmLCAweDRiLCAweDYsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDgwLCAweDg0LCAweDc3LCAweDFiLCAweGIsIDB4ZjcsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGVhLCAweGY3LCAweGMzLCAweDYsIDB4ZjcsIDB4YTksIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDUsIDB4ZmIsIDB4MiwgMHg2LCAweGIsIDB4MzEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4NzIsIDB4YSwgMHgzOCwgMHhhLCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDUsIDB4YiwgMHhmYiwgMHg1MywgMHhhMCwgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4Y2YsIDB4ZjcsIDB4MTAsIDB4ZDUsIDB4MSwgMHhlNCwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxNSwgMHhiNywgMHg2LCAweDljLCAweGY3LCAweDFlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDksIDB4M2UsIDB4ZmIsIDB4OSwgMHg3LCAweGIsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweGZiLCAweDI1LCAweGY3LCAweDIzLCAweGY3LCAweDIzLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYSwgMHhiOCwgMHhiLCAweDRjLCAweGEsIDB4NGEsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NzMsIDB4YTAsIDB4NzYsIDB4YiwgMHgxNSwgMHhjOSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYiwgMHhmNywgMHgyMSwgMHgzOCwgMHhhLCAweGIsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmEsIDB4MzUsIDB4NzcsIDB4MSwgMHhlNSwgMHhlYSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDRiLCAweGEsIDB4ZjksIDB4NzIsIDB4NzcsIDB4MSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MywgMHhiLCAweDEsIDB4YWEsIDB4MTYsIDB4ZjgsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGZiLCAweGRlLCAweDYsIDB4ZjcsIDB4Y2UsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4YjEsIDB4NjMsIDB4YmMsIDB4YmMsIDB4YjMsIDB4YjMsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDYzLCAweGIsIDB4YTYsIDB4YzcsIDB4OGUsIDB4ZTAsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmIsIDB4NGUsIDB4NzYsIDB4ZjcsIDB4NWUsIDB4ZDMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweGQwLCAweDEsIDB4YiwgMHg1LCAweGM0LCAweGZjLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHhmNywgMHhiNywgMHg3LCAweGZiLCAweGM5LCAweGIsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY4LCAweDlmLCAweDc3LCAweDEsIDB4YiwgMHhmYywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTgsIDB4ZDQsIDB4ZjksIDB4OTgsIDB4ZDQsIDB4MTIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhMiwgMHgxNiwgMHhmOCwgMHhjOSwgMHhlMCwgMHhmYywgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiLCAweDE1LCAweGNjLCAweDYsIDB4YmEsIDB4OGEsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDhmLCAweDFiLCAweGIsIDB4M2MsIDB4OTYsIDB4MWUsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDUsIDB4YjMsIDB4ODQsIDB4N2EsIDB4YiwgMHhlMywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4YSwgMHgxLCAweGUxLCAweGVhLCAweGIsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDYyLCAweGQ3LCAweDEyLCAweGNjLCAweGUzLCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZhLCAweGZiLCAweDRlLCAweDc2LCAweGZhLCAweDQwLCAweDc3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGFiLCAweDc2LCAweGY4LCAweDc4LCAweDc3LCAweDEsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MjcsIDB4MzEsIDB4YSwgMHhlLCAweDVhLCAweDU4LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHg4YywgMHgxZiwgMHhlLCAweGY3LCAweDFkLCAweDU5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4OGEsIDB4NzcsIDB4MTIsIDB4YiwgMHg3ZCwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MmEsIDB4ZDMsIDB4YiwgMHhiOCwgMHhlNSwgMHhmNywgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4YiwgMHhmNywgMHg1NCwgMHhkOSwgMHhmYiwgMHg1NCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhkNywgMHg2MCwgMHg3NiwgMHhiLCAweDMzLCAweDYsIDB4ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNhbnNCb2xkLmMgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U2Fuc0JvbGQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTRiMzdmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNhbnNCb2xkLmMKQEAgLTAsMCArMSwyMDUxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTYW5zQm9sZEZvbnREYXRhIFsxNjM0NF0gPSB7MHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0LCAweDIsIDB4MCwgMHgxLCAweDEsIDB4MSwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDUzLCAweDYxLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MmQsIDB4NDIsIDB4NmYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHgwLCAweDEsIDB4MSwgMHgxLCAweDI0LCAweGY4LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhmOCwgMHgxYywgMHgxLCAweGY4LCAweDFkLCAweDIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgzLCAweGY4LCAweDE0LCAweDQsIDB4ZmIsIDB4M2UsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhmYSwgMHg3ZSwgMHhmYSwgMHg1NiwgMHg1LCAweGY3LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhmOCwgMHg4ZiwgMHgxMSwgMHhiNSwgMHgxYywgMHgzOSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDAsIDB4NCwgMHgxLCAweDEsIDB4NSwgMHgyZiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDQ1LCAweDc1LCAweDcyLCAweDZmLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDIwLCAweDUzLCAweDYxLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MjAsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MjAsIDB4NDIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NCwgMHg0MywgMHg2OCwgMHg3MiwgMHg2RiwgMHg2RCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDYxLCAweDZlLCAweDczLCAweDIwLCAweDRmLCAweDU0LCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MCwgMHg4NCwgMHgwLCAweDAsIDB4ODYsIDB4MiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4MCwgMHgwLCAweDYzLCAweDAsIDB4MCwgMHg2ZCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4YywgMHgwLCAweDAsIDB4OTIsIDB4MCwgMHgwLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGU0LCAweDAsIDB4MCwgMHgyLCAweDUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDAsIDB4MCwgMHg5LCAweDM3LCAweDAsIDB4N2MsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NDIsIDB4MWQsIDB4MSwgMHg4NywgMHgwLCAweDAsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NjUsIDB4MCwgMHgwLCAweDc2LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDAsIDB4MCwgMHg3MCwgMHgxLCAweDAsIDB4N2UsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4N2EsIDB4MCwgMHgwLCAweGMwLCAweDAsIDB4MCwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg4ZSwgMHgwLCAweDAsIDB4NDEsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgwLCAweDAsIDB4NjksIDB4MCwgMHgwLCAweDc3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc0LCAweDAsIDB4MCwgMHg2ZiwgMHgwLCAweDAsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4N2YsIDB4MCwgMHgwLCAweDk5LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDAsIDB4MCwgMHg2YywgMHgwLCAweDAsIDB4OTQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzYsIDB4MCwgMHgwLCAweDYwLCAweDIsIDB4MCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg2NCwgMHgwLCAweDAsIDB4YTAsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4MCwgMHgwLCAweDgzLCAweDAsIDB4MCwgMHhhYSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4YiwgMHgwLCAweDAsIDB4NmEsIDB4MCwgMHgwLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGE2LCAweDAsIDB4MCwgMHhhNSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgwLCAweDAsIDB4YTEsIDB4MCwgMHgwLCAweDljLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE0LCAweDAsIDB4MCwgMHhhOSwgMHgwLCAweDAsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4OTgsIDB4MCwgMHgwLCAweDczLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDAsIDB4MCwgMHg4NSwgMHgwLCAweDAsIDB4OTYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OGYsIDB4MCwgMHgwLCAweDc4LCAweDAsIDB4MCwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg5YiwgMHgwLCAweDAsIDB4YTMsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4MCwgMHgwLCAweGFlLCAweDAsIDB4MCwgMHhhYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhiMCwgMHgwLCAweDAsIDB4YWQsIDB4MCwgMHgwLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDhhLCAweDAsIDB4MCwgMHhiMSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHgwLCAweDAsIDB4YjIsIDB4MiwgMHgwLCAweGI5LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGI2LCAweDIsIDB4MCwgMHg5YSwgMHgwLCAweDAsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YmUsIDB4MCwgMHgwLCAweGJiLCAweDEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDAsIDB4MCwgMHhiZCwgMHgwLCAweDAsIDB4YTgsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OGQsIDB4MCwgMHgwLCAweGM0LCAweDAsIDB4MCwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MCwgMHhjNSwgMHgwLCAweDAsIDB4OWQsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MCwgMHgwLCAweGNiLCAweDAsIDB4MCwgMHhjOCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjZCwgMHgwLCAweDAsIDB4Y2EsIDB4MCwgMHgwLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDkwLCAweDAsIDB4MCwgMHhjZSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHgwLCAweDAsIDB4Y2YsIDB4MiwgMHgwLCAweGQ2LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGQzLCAweDIsIDB4MCwgMHhhNywgMHgwLCAweDAsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4ZGIsIDB4MCwgMHgwLCAweGQ4LCAweDEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDAsIDB4MCwgMHhkYSwgMHgwLCAweDAsIDB4OWYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OTMsIDB4MCwgMHgwLCAweGUxLCAweDAsIDB4MCwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MCwgMHhlMiwgMHgwLCAweDAsIDB4YTIsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MCwgMHgwLCAweGU2LCAweDIsIDB4MCwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDAsIDB4NywgMHgwLCAweDJjLCAweDAsIDB4NDEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDAsIDB4ODQsIDB4MCwgMHhiMywgMHgwLCAweGNlLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHgwLCAweGYxLCAweDEsIDB4MzAsIDB4MSwgMHg2YiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4MSwgMHhjMywgMHgxLCAweGYxLCAweDIsIDB4MzIsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDIsIDB4OGEsIDB4MiwgMHhlZCwgMHgzLCAweDc2LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDQsIDB4YTUsIDB4NCwgMHhjNCwgMHg0LCAweGZiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHg1LCAweDY2LCAweDUsIDB4OGMsIDB4NSwgMHhiYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4NSwgMHhkZiwgMHg1LCAweGY1LCAweDYsIDB4M2YsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDYsIDB4YmMsIDB4NywgMHgxZSwgMHg3LCAweDU1LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg4LCAweGEsIDB4OCwgMHgzZSwgMHg4LCAweGFmLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHg5LCAweDM0LCAweDksIDB4NmQsIDB4OSwgMHg4YywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4OSwgMHhjOSwgMHhhLCAweDJlLCAweGEsIDB4ZGEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4YiwgMHg2YywgMHhiLCAweGJjLCAweGIsIDB4ZmIsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGMsIDB4NDgsIDB4YywgMHhjMywgMHhjLCAweGVmLCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGQsIDB4MzMsIDB4ZCwgMHg2NCwgMHhkLCAweDc4LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhkLCAweGRiLCAweGUsIDB4NTIsIDB4ZSwgMHg4OCwgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZiwgMHg3MywgMHhmLCAweGRjLCAweGYsIDB4ZmIsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHgxMCwgMHg1MCwgMHgxMCwgMHg5MywgMHgxMCwgMHhjNSwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDEwLCAweGY5LCAweDExLCAweDEzLCAweDExLCAweDJhLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4MTEsIDB4NjUsIDB4MTEsIDB4NzIsIDB4MTEsIDB4ODgsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHgxMiwgMHg0OCwgMHgxMiwgMHg5MiwgMHgxMiwgMHhlZCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDEzLCAweDc5LCAweDEzLCAweGU3LCAweDE0LCAweDIzLCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4MTQsIDB4ODAsIDB4MTQsIDB4YWYsIDB4MTQsIDB4YmEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHgxNSwgMHg1OCwgMHgxNSwgMHhhMiwgMHgxNSwgMHhlZiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDE2LCAweDgyLCAweDE2LCAweGU0LCAweDE3LCAweDFlLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4MTcsIDB4ODUsIDB4MTcsIDB4YzEsIDB4MTcsIDB4ZjMsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHgxOCwgMHg0OCwgMHgxOCwgMHg4YywgMHgxOCwgMHhhNCwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweDE5LCAweDJjLCAweDE5LCAweGE3LCAweDE5LCAweGNmLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4MWEsIDB4NzAsIDB4MWEsIDB4YTMsIDB4MWEsIDB4Y2QsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDFiLCAweDE5LCAweDFiLCAweGNmLCAweDFjLCAweDQ5LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4MWMsIDB4ZGEsIDB4MWQsIDB4NSwgMHgxZCwgMHgyZSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDFkLCAweGI4LCAweDFkLCAweGRiLCAweDFkLCAweGVhLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmEsIDB4MWUsIDB4M2UsIDB4MWUsIDB4OGMsIDB4MWYsIDB4NCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDFmLCAweGFmLCAweDFmLCAweGRhLCAweDIwLCAweGEsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgyMSwgMHgxNCwgMHgyMSwgMHg4ZSwgMHgyMSwgMHhkMywgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweDIyLCAweDliLCAweDIyLCAweGFiLCAweDIzLCAweDFiLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MjMsIDB4YTMsIDB4MjMsIDB4YmQsIDB4MjMsIDB4Y2YsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHgyNCwgMHg2MCwgMHgyNCwgMHg5OSwgMHgyNCwgMHhjNywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4MjUsIDB4NjEsIDB4MjUsIDB4NzQsIDB4MjUsIDB4YmEsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHgyNiwgMHg0LCAweDI2LCAweDNiLCAweDI2LCAweDYxLCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4MjYsIDB4YjEsIDB4MjcsIDB4MTksIDB4MjcsIDB4OTYsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHgyOCwgMHg4NSwgMHgyOCwgMHg5ZCwgMHgyOCwgMHhiNiwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDI5LCAweDFiLCAweDI5LCAweDNkLCAweDI5LCAweDcxLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4MmEsIDB4NDksIDB4MmEsIDB4NTksIDB4MmEsIDB4NmEsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHgyYSwgMHhiOCwgMHgyYSwgMHhjZCwgMHgyYSwgMHhlMSwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDJiLCAweDE1LCAweDJiLCAweDYzLCAweDJiLCAweGJiLCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4MmMsIDB4ZCwgMHgyYywgMHgzYSwgMHgyYywgMHg4NywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDJjLCAweGRmLCAweDJkLCAweDVmLCAweDJkLCAweDdjLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4MmQsIDB4YmYsIDB4MmQsIDB4ZWEsIDB4MmUsIDB4MWEsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHgyZSwgMHhjYywgMHgyZSwgMHhlMywgMHgyZSwgMHhmYSwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDJmLCAweDc3LCAweDJmLCAweDlmLCAweDJmLCAweGU1LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4MzEsIDB4MWMsIDB4MzEsIDB4MzYsIDB4MzEsIDB4NTEsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHgzMSwgMHg5NywgMHgzMSwgMHhhZSwgMHgzMSwgMHhjNSwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweDMyLCAweDMsIDB4MzIsIDB4N2MsIDB4MzIsIDB4ZjQsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHgzMywgMHgyNCwgMHgzMywgMHg0MiwgMHgzMywgMHg4MCwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDMzLCAweGQ3LCAweDM0LCAweDU1LCAweDM0LCAweDZiLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4MzQsIDB4YTgsIDB4MzQsIDB4ZDYsIDB4MzUsIDB4MTMsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHgzNSwgMHhhYywgMHhmYywgMHgxNSwgMHhlLCAweGZjLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmOCwgMHhmMCwgMHhjYiwgMHhkZCwgMHg3NywgMHgxLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4ODIsIDB4MTUsIDB4MjIsIDB4OTUsIDB4ZDksIDB4NjIsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhkYSwgMHhkYiwgMHhiMywgMHhmNSwgMHg5NSwgMHgxZiwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NzgsIDB4OGEsIDB4N2IsIDB4NGMsIDB4MzMsIDB4MWIsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhiMiwgMHhiNiwgMHg4NSwgMHgxZiwgMHhlLCAweGY4LCAweGZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHgxLCAweGYzLCAweGY3LCAweDEyLCAweDMsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmYSwgMHgxNSwgMHhmNywgMHgxMiwgMHhmNywgMHg3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4NiwgMHhlLCAweGY4LCAweGNjLCAweGM0LCAweGU5LCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhjNiwgMHhjNiwgMHhlZCwgMHhjNiwgMHgzLCAweGM2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4MTUsIDB4NTEsIDB4YmMsIDB4NWMsIDB4YzcsIDB4YzQsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhjNywgMHhjNiwgMHg1YSwgMHhiNywgMHg1MSwgMHg0ZCwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDUxLCAweDFlLCAweGM2LCAweDE2LCAweGE1LCAweGEwLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YTUsIDB4YTEsIDB4NzgsIDB4NzAsIDB4NzAsIDB4NzUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg2ZiwgMHg3NSwgMHhhMCwgMHhhNiwgMHgxZSwgMHhlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4ODQsIDB4YSwgMHg5NCwgMHhmOCwgMHhmMCwgMHg2YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4ZmIsIDB4MjYsIDB4NmIsIDB4YSwgMHhlLCAweGZiLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZjcsIDB4MmIsIDB4NzcsIDB4MSwgMHhkMiwgMHhlMiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4MTYsIDB4ODAsIDB4NjEsIDB4ODMsIDB4NmEsIDB4NjcsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhkZCwgMHg2YywgMHhjYywgMHg5YywgMHhhNSwgMHg4ZSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDFlLCAweGQwLCAweDcsIDB4ODcsIDB4ODAsIDB4NjEsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHgxYiwgMHg1MywgMHg4NywgMHhhYywgMHhiOCwgMHhhMywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDkzLCAweGEwLCAweDFmLCAweGUsIDB4ZjgsIDB4ZjAsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGVkLCAweGY4LCAweGYwLCAweDE1LCAweGY3LCAweDFiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweDgzLCAweGEsIDB4ZmIsIDB4YSwgMHg2LCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4NGUsIDB4ZDcsIDB4NSwgMHhmYiwgMHg5LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDE1LCAweDczLCAweGEsIDB4ZDMsIDB4NjMsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDZkLCAweGEsIDB4ZmMsIDB4ODQsIDB4OGQsIDB4NzYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg3NywgMHgxLCAweDJmLCAweDc4LCAweDE1LCAweGY4LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NmQsIDB4NSwgMHgzZCwgMHg2LCAweGZjLCAweDQwLCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NSwgMHhlLCAweDU3LCAweDc2LCAweGEsIDB4ZDIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHgxLCAweGUyLCAweGY3LCAweDIwLCAweGY3LCAweDQzLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlMiwgMHgxNiwgMHhmNywgMHgyMCwgMHhmOCwgMHgyYywgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEsIDB4MjIsIDB4NiwgMHhmNCwgMHhjNSwgMHg5NiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFlLCAweDlmLCAweGViLCAweDUsIDB4OTgsIDB4NWYsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg2ZiwgMHgxYiwgMHhmYiwgMHgzNywgMHg2ZiwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4ZmMsIDB4MmMsIDB4MTUsIDB4ZjcsIDB4MjAsIDB4ZjgsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHhhLCAweGQyLCAweDQsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhhLCAweDU3LCAweDc2LCAweGEsIDB4ZjcsIDB4NjYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGUyLCAweGY3LCAweDIwLCAweGY3LCAweDQ0LCAweGY3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmOCwgMHgyNywgMHgxNiwgMHhmNywgMHgxZiwgMHhmOSwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFmLCAweDYsIDB4ZmIsIDB4ZDAsIDB4ZmQsIDB4NWYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMCwgMHhmOCwgMHgyYywgMHhmMywgMHhmNywgMHgxLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhkZiwgMHhiMSwgMHhhYiwgMHhkZSwgMHg3OCwgMHgxZSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweDUsIDB4OTgsIDB4NWYsIDB4NzQsIDB4OGYsIDB4NmUsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNiwgMHg2ZiwgMHhhLCAweGUsIDB4ODYsIDB4YSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweDMsIDB4YzYsIDB4MTYsIDB4ZjgsIDB4YTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZjLCAweDFlLCAweGY3LCAweDdjLCAweDYsIDB4ZjcsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYSwgMHg1LCAweGY3LCAweGMsIDB4NywgMHhmYiwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFjLCAweDUsIDB4ZjcsIDB4OGEsIDB4ZmIsIDB4MTYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg3LCAweDNjLCAweDRhLCAweDUsIDB4ZmIsIDB4OSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4Y2IsIDB4NSwgMHhlLCAweGZjLCAweDE1LCAweDNmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmNywgMHhhLCAweDMsIDB4ZDEsIDB4MTYsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGZhLCAweDYsIDB4ZjcsIDB4MCwgMHhkOCwgMHg1LCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHgwLCAweDNkLCAweDUsIDB4ZjcsIDB4OWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweGY2LCAweDcsIDB4MzMsIDB4NDgsIDB4NSwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZTMsIDB4Y2YsIDB4NSwgMHhlLCAweDU3LCAweDhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhmOCwgMHg2ZSwgMHg4MiwgMHhhLCAweGE0LCAweDE2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4ZjcsIDB4ZCwgMHg4NywgMHhhLCAweGY3LCAweDUsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhmYiwgMHhkLCAweDhjLCAweGEsIDB4ZjcsIDB4NmUsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHgxNSwgMHhmNywgMHhmLCAweDYsIDB4ZWUsIDB4ZjcsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDIwLCAweDYsIDB4NTgsIDB4NDIsIDB4NTQsIDB4ZDQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDYsIDB4ZSwgMHhmYiwgMHgzNywgMHg4YiwgMHhmNywgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWYsIDB4ZjcsIDB4NiwgMHhlNSwgMHhmNywgMHgyMiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4MTYsIDB4ZjgsIDB4NjAsIDB4ZjcsIDB4ZCwgMHhmYiwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4OWQsIDB4ZjcsIDB4YzAsIDB4NSwgMHhlYywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGZiLCAweDYsIDB4NywgMHhmNywgMHg4OCwgMHg4YywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweGZiLCAweGJlLCAweDUsIDB4ZjcsIDB4M2IsIDB4ZjgsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgxMiwgMHg2LCAweGYxLCAweGY3LCAweDIyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyLCAweDYsIDB4NTYsIDB4NDIsIDB4NTMsIDB4ZDQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEsIDB4NiwgMHhlLCAweDhiLCAweGY3LCAweDFkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4NzcsIDB4MTIsIDB4ZTUsIDB4ZjcsIDB4MjgsIDB4ZmIsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZSwgMHgxMywgMHhlMCwgMHhlOCwgMHgxNiwgMHhmNywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFkLCAweGZiLCAweDI1LCAweDYsIDB4YWIsIDB4YmMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHg2LCAweDEzLCAweGQwLCAweGIwLCAweGY4LCAweDAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNjLCAweGZiLCAweDJlLCAweGZiLCAweDNjLCAweDcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUxLCAweGY4LCAweDY4LCAweDc2LCAweGY3LCAweGEzLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHhiMywgMHhmOCwgMHg1MywgMHgxNSwgMHhkMywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4NjcsIDB4YSwgMHhmNywgMHgxNCwgMHhmYiwgMHgxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4NywgMHhmYiwgMHgyYSwgMHhmYiwgMHgyMywgMHgxNSwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OWIsIDB4NjcsIDB4YSwgMHhmNywgMHgxNCwgMHhmYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTQsIDB4NywgMHhlLCAweDIwLCAweGEwLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4ZjIsIDB4ZjcsIDB4MWMsIDB4ZjIsIDB4ZjcsIDB4NDUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGI4LCAweDE2LCAweGY2LCAweDYsIDB4YjAsIDB4ZjcsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY0LCAweDYsIDB4NjcsIDB4ZmIsIDB4NDcsIDB4NSwgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjEsIDB4ZjcsIDB4NDcsIDB4NSwgMHhmNywgMHgxZCwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcsIDB4NiwgMHhhNywgMHhmNywgMHgxYywgMHg1LCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4NDksIDB4NiwgMHhiMSwgMHhmNywgMHg0NSwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg2LCAweDY2LCAweGZiLCAweDQ1LCAweDUsIDB4MjQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGY3LCAweDQ1LCAweDUsIDB4MjIsIDB4NiwgMHg2NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDUsIDB4ZmIsIDB4MWIsIDB4MjQsIDB4ZjcsIDB4NiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4ZmIsIDB4MWMsIDB4NSwgMHgzNiwgMHgyNCwgMHhjYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTQsIDB4ZjIsIDB4MTUsIDB4YTcsIDB4ZjcsIDB4MWMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDYsIDB4NmYsIDB4ZmIsIDB4MWMsIDB4NSwgMHhlLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4NzYsIDB4ZmEsIDB4ZSwgMHg3NywgMHgxMiwgMHhmNywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGRmLCAweGY3LCAweDExLCAweDE3LCAweGE5LCAweGY3LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OWIsIDB4MjQsIDB4YzIsIDB4MmEsIDB4ZjcsIDB4MjAsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDMwLCAweGQ0LCAweGU4LCAweDcsIDB4ZjcsIDB4NDQsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhmNywgMHg3LCAweGQwLCAweDFhLCAweGY3LCAweDM0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4YzAsIDB4M2YsIDB4YTAsIDB4MWUsIDB4ZjcsIDB4NTYsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDc3LCAweDk0LCAweDYyLCAweDhlLCAweDc5LCAweGY3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4MTgsIDB4NzEsIDB4ZjcsIDB4MmUsIDB4ZmIsIDB4MTMsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg4ZiwgMHg4LCAweDEzLCAweDcwLCAweGJkLCAweDcsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg2LCAweDI0LCAweDgxLCAweDM0LCAweDQ2LCAweGZiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmYiwgMHgzMiwgMHhmNywgMHgxNywgMHg1YywgMHhjNiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDY0LCAweDcsIDB4NzQsIDB4OTYsIDB4NjAsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhjZiwgMHg4LCAweGY3LCAweDJjLCAweGZiLCAweGEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NiwgMHg3LCAweGExLCAweDg1LCAweGM5LCAweDc5LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NjAsIDB4NmYsIDB4NWQsIDB4NTMsIDB4ODEsIDB4MWUsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmOSwgMHgxNSwgMHg0YSwgMHhhNywgMHg4YSwgMHhiNSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGFkLCAweGExLCAweGI3LCAweGI3LCAweDk5LCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3NiwgMHg3OCwgMHhkNSwgMHhmNywgMHg2OSwgMHhkNSwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweGY3LCAweDY5LCAweGQ1LCAweDhkLCAweDc3LCAweDEyLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NCwgMHhmMywgMHhmNywgMHg0LCAweGY3LCAweDQ1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmMywgMHhmNywgMHg0LCAweDEzLCAweGY3LCAweDgwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZjgsIDB4YTQsIDB4MTUsIDB4ZDIsIDB4OTgsIDB4YWUsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg5NywgMHg2NywgMHg0NSwgMHg0MiwgMHg3ZiwgMHg2OSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDdmLCAweGFmLCAweGQyLCAweDFlLCAweGZiLCAweDQsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhhZiwgMHgzNCwgMHhmNywgMHgxNCwgMHhmNywgMHgyOSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQsIDB4YzcsIDB4ZjYsIDB4NWUsIDB4ZDQsIDB4ZmIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI4LCAweDdiLCAweGZiLCAweGQsIDB4NTAsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhmYywgMHhiNywgMHgxNSwgMHhmNiwgMHg2LCAweDEzLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4ZjgsIDB4MWYsIDB4ZjksIDB4NmQsIDB4NSwgMHgyNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4ZmMsIDB4YmEsIDB4MTUsIDB4MmQsIDB4YjAsIDB4MzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgyNywgMHg5YSwgMHhmNywgMHhiLCAweGM5LCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4ZDQsIDB4ZmIsIDB4YSwgMHhmYiwgMHgyYSwgMHg3YywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4NGUsIDB4MWUsIDB4ZjcsIDB4NCwgMHg4ZSwgMHgxNSwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGFjLCAweGIzLCAweGIzLCAweDk3LCAweDY4LCAweDQ1LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NjcsIDB4NjMsIDB4NjMsIDB4N2YsIDB4YjAsIDB4ZDIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGM2LCAweDdlLCAweGY3LCAweDQsIDB4MmEsIDB4NzYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlYiwgMHgxMiwgMHhjMSwgMHhmNywgMHgxZSwgMHg1OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDEzLCAweDY4LCAweGY4LCAweDhlLCAweGNhLCAweDE1LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YjUsIDB4NjksIDB4YjksIDB4NzQsIDB4ZGMsIDB4ZjUsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg5NCwgMHg1MiwgMHhiMywgMHg2YywgMHhhOSwgMHg5YywgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGE3LCAweGE1LCAweGViLCAweGZiLCAweGQsIDB4YTYsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg3YSwgMHg4MSwgMHg2OSwgMHg3YywgMHg2ZCwgMHgyOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDE4LCAweGRhLCAweGJlLCAweGJjLCAweGI4LCAweGQ0LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4NDIsIDB4ZDIsIDB4ZmIsIDB4ZCwgMHhmYiwgMHhlLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4MzUsIDB4NTcsIDB4YTcsIDB4NWUsIDB4YjcsIDB4NTksIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiMCwgMHg2OCwgMHg3OSwgMHhmYiwgMHgxMSwgMHg0YywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDFhLCAweDU0LCAweGE2LCAweGZiLCAweDJiLCAweGY3LCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NCwgMHhjNywgMHhiNCwgMHhhZSwgMHhiMSwgMHgxZSwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweDE1LCAweDc2LCAweDcxLCAweDY0LCAweDZhLCAweDRmLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NmIsIDB4YjgsIDB4YmMsIDB4YjUsIDB4YTMsIDB4YzAsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgxZiwgMHhiZCwgMHhmNywgMHgyOSwgMHgxNSwgMHg2YywgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MTMsIDB4YTgsIDB4ODksIDB4OGUsIDB4NmYsIDB4OGYsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhNSwgMHg5ZSwgMHhiMiwgMHhiOCwgMHhiZiwgMHhhMywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDc0LCAweDdjLCAweDdlLCAweDdhLCAweDdkLCAweDFlLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NzcsIDB4N2UsIDB4ODEsIDB4ODQsIDB4OCwgMHhlLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4ZjgsIDB4NjgsIDB4NzYsIDB4ZjcsIDB4YTMsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDg1LCAweGEsIDB4YzMsIDB4ZjgsIDB4NTMsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDYsIDB4OWIsIDB4ZjcsIDB4MjIsIDB4NSwgMHhmNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI4LCAweGZiLCAweDE1LCAweDcsIDB4ZSwgMHhmYiwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGZhLCAweDQyLCAweDc3LCAweDEsIDB4YWUsIDB4ODUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYzLCAweGZiLCAweDY0LCAweDE1LCAweGY1LCAweDYsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHgzMywgMHhmNywgMHgzOSwgMHhmNywgMHg3MywgMHgxYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGMwLCAweGY3LCAweDE2LCAweGQ5LCAweGY3LCAweDJlLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4NiwgMHgzNCwgMHhmYiwgMHg0LCAweDM0LCAweGZiLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTksIDB4MWEsIDB4ZmIsIDB4M2IsIDB4ZDAsIDB4ZmIsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhmYiwgMHgyMCwgMHgxZSwgMHhlLCAweGZiLCAweDRmLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmEsIDB4NDIsIDB4NzcsIDB4MSwgMHhmNywgMHgyOSwgMHhmNywgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OWUsIDB4ZmIsIDB4NjQsIDB4MTUsIDB4ZjQsIDB4NiwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZTIsIDB4ZjcsIDB4MzUsIDB4ZjcsIDB4NTksIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYiwgMHg0NiwgMHhmNywgMHgzOSwgMHgyNCwgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDIxLCAweDYsIDB4YjUsIDB4M2IsIDB4ZTIsIDB4ZmIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3MywgMHgxYSwgMHhmYiwgMHg1MiwgMHg1NywgMHhmYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGZiLCAweDJlLCAweDFlLCAweGUsIDB4ZmIsIDB4YTYsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDMwLCAweGQyLCAweDMsIDB4ZjcsIDB4MTMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHgxNSwgMHhjYywgMHhmNywgMHgxLCAweGM5LCAweDIxLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4M2EsIDB4ZWIsIDB4ZjcsIDB4YiwgMHhhMiwgMHg3MiwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgsIDB4NTcsIDB4OTcsIDB4ZjcsIDB4MTMsIDB4NSwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OTYsIDB4ZmIsIDB4MTIsIDB4ZmIsIDB4MSwgMHhjMiwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGY3LCAweDksIDB4NmQsIDB4MzQsIDB4MmYsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4NTIsIDB4ZjcsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg5MCwgMHhhLCAweGY3LCAweDUyLCAweDE1LCAweGY3LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTIsIDB4ZjcsIDB4MTMsIDB4ZjcsIDB4NTIsIDB4ZjcsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNSwgMHhmYiwgMHg1MSwgMHhmNywgMHg0ZiwgMHhmYiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRmLCAweGZiLCAweDUwLCAweDYsIDB4ZSwgMHhmYywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI3LCAweDc2LCAweGY3LCAweDUxLCAweDc2LCAweGY3LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4ZDcsIDB4ZjcsIDB4MWUsIDB4NDQsIDB4ZDIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHhkNywgMHgxNiwgMHgxMywgMHhlOCwgMHhjZSwgMHg2LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NTgsIDB4N2MsIDB4NzEsIDB4ODIsIDB4YTYsIDB4NGUsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmLCAweGJhLCAweDhiLCAweGVjLCAweGNkLCAweDFhLCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxMywgMHhmMCwgMHg4MSwgMHhhLCAweGY3LCAweDZiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MSwgMHhhNiwgMHhmNywgMHg2YiwgMHgxNSwgMHhmNywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweGZiLCAweGFiLCAweDYsIDB4ZSwgMHhmYywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDg0LCAweGEsIDB4Y2IsIDB4ZjcsIDB4MmEsIDB4MywgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweDJhLCAweGY3LCAweDI2LCAweGZiLCAweDJhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZjLCAweDE1LCAweDg2LCAweDc2LCAweGY5LCAweDhmLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg3NiwgMHhmNywgMHgxMSwgMHgzLCAweDZhLCAweDc4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTEsIDB4NiwgMHhmNywgMHg2ZiwgMHg5MywgMHhhLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmOCwgMHg4OSwgMHhmNywgMHg2LCAweDEsIDB4YWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhmNywgMHg1MCwgMHhmNywgMHgyYywgMHgzLCAweGFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4MTUsIDB4ZmIsIDB4MjEsIDB4YTIsIDB4ZmIsIDB4N2IsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhmNywgMHg2ZCwgMHhhNywgMHhmNywgMHg3ZCwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweDcyLCAweGY3LCAweDZmLCAweGZiLCAweDcyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzIsIDB4ZmIsIDB4NmYsIDB4ZmIsIDB4MWUsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg4OSwgMHgxNSwgMHhmNywgMHg1MywgMHhhNCwgMHhjMSwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGE0LCAweDU0LCAweGZiLCAweDUyLCAweGZiLCAweDUyLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NDUsIDB4NDcsIDB4NzIsIDB4Y2MsIDB4ZjcsIDB4NTMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDIwLCAweGEwLCAweDc2LCAweGY5LCAweDVhLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4NywgMHhmNywgMHgxYiwgMHgzLCAweGY3LCAweDg3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWIsIDB4ZjksIDB4NWEsIDB4ZmIsIDB4MiwgMHg2LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHhmYiwgMHgyMywgMHg1NiwgMHg3ZCwgMHg4NiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZSwgMHg3LCAweGUxLCAweGE3LCAweGM1LCAweGJhLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4OCwgMHhlLCAweDIwLCAweDhiLCAweGY3LCAweDEyLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ZjcsIDB4NSwgMHgxLCAweGI1LCAweGY3LCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4ZjcsIDB4MWUsIDB4MywgMHhhNSwgMHgxNiwgMHhmOCwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEyLCAweGZiLCAweGE3LCAweDYsIDB4OWUsIDB4YWIsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhkMiwgMHhjYiwgMHg4LCAweGQxLCAweGNhLCAweGU3LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4MWEsIDB4ZTMsIDB4NGEsIDB4ZjcsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGZiLCAweDE3LCAweDIxLCAweDJkLCAweGZiLCAweDcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZSwgMHg3ZCwgMHg1LCAweGQzLCAweDkwLCAweGE5LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4MWIsIDB4YzgsIDB4YWMsIDB4NjMsIDB4NTYsIDB4NDMsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHgyYiwgMHgzMywgMHgxZiwgMHhmYiwgMHgxZSwgMHhmYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDQxLCAweDgwLCAweDIyLCAweDgsIDB4ZSwgMHg3OSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODMsIDB4ZjcsIDB4NiwgMHgxLCAweGY3LCAweGU2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4MywgMHhhNiwgMHhmNywgMHg0YSwgMHgxNSwgMHgyNSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDI4LCAweGY3LCAweDJhLCAweDFiLCAweGY3LCAweDFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhlYiwgMHhmNywgMHgxNiwgMHhlMSwgMHg1NiwgMHhjZCwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDFmLCAweDhkLCAweDcsIDB4YTUsIDB4OTcsIDB4ZGEsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHgxYSwgMHhkZiwgMHgzYiwgMHhmNiwgMHhmYiwgMHgyMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDcyLCAweGZiLCAweDIyLCAweDVmLCAweDgwLCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4NzUsIDB4NSwgMHhkNCwgMHg5NCwgMHhiOSwgMHhhMCwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGJkLCAweGFhLCAweDZjLCAweDVkLCAweDQzLCAweDRjLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4OGMsIDB4MWYsIDB4N2MsIDB4ZmIsIDB4MywgMHg1LCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4ZGIsIDB4NTYsIDB4MzIsIDB4MWEsIDB4NTUsIDB4NmMsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg0OCwgMHg2YywgMHhjMCwgMHhiZCwgMHg4NSwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4YywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDc3LCAweDEsIDB4ZjcsIDB4Y2MsIDB4ZjcsIDB4MTQsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGY3LCAweDIzLCAweDE1LCAweGY3LCAweGIxLCAweGZiLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTQsIDB4ZjcsIDB4MjMsIDB4ZTEsIDB4ZjcsIDB4YywgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDUzLCAweDdjLCAweGEsIDB4ZmIsIDB4YzEsIDB4ZmMsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDExLCAweDhjLCAweDE1LCAweGY3LCAweDMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4NSwgMHg4ZCwgMHhmYiwgMHg4NiwgMHg2LCAweGUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY4LCAweDdmLCAweGY3LCAweDExLCAweDEsIDB4ZjgsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMywgMHgzLCAweGE2LCAweGY3LCAweDQ4LCAweDE1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4OWIsIDB4ZWMsIDB4NDEsIDB4ZjcsIDB4MTMsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHhkYSwgMHhmNywgMHgxZSwgMHhmNywgMHg3LCAweDFmLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWUsIDB4ZmIsIDB4MzgsIDB4ZTgsIDB4ZmIsIDB4MmMsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhmNywgMHgxOSwgMHgxOCwgMHhmNywgMHg5YiwgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDUsIDB4NiwgMHg0NCwgMHhmYywgMHgxMSwgMHhmNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4YmIsIDB4YmYsIDB4YzEsIDB4OTYsIDB4YjQsIDB4N2EsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHg3YSwgMHhhOSwgMHg1MywgMHg0ZiwgMHgxYSwgMHgyMywgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDU4LCAweDVjLCAweDYwLCAweGE2LCAweGQzLCAweDgwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3OSwgMHhhLCAweGY3LCAweDk5LCAweGVmLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NiwgMHgxLCAweGFhLCAweGY3LCAweDMxLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmOCwgMHgyMywgMHgxNSwgMHhkNSwgMHg5MCwgMHg5NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4ZWUsIDB4MWIsIDB4ZDIsIDB4OTIsIDB4NGQsIDB4N2IsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHgxYiwgMHg5OSwgMHg1LCAweGY2LCAweDc3LCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4ZmIsIDB4YiwgMHgxYiwgMHhmYiwgMHg4YSwgMHg3ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDRhLCAweGZiLCAweDRkLCAweGU2LCAweGZiLCAweDQzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4ZjcsIDB4MjAsIDB4ZTQsIDB4ZWUsIDB4ZjcsIDB4MjIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhmYiwgMHg2LCAweGU3LCAweGZiLCAweDcsIDB4NTIsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2ZSwgMHg3ZSwgMHgxZiwgMHg5NywgMHhmYiwgMHg0NSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcsIDB4ZGYsIDB4OWUsIDB4OWUsIDB4ZWMsIDB4ODUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDdhLCAweDc3LCAweDhhLCAweDIwLCAweDMxLCAweDQ4LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4ZDEsIDB4MWUsIDB4ZSwgMHgyMCwgMHhhMCwgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweGY3LCAweDEwLCAweDEyLCAweGY3LCAweDE0LCAweGY3LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZjcsIDB4MTQsIDB4MTYsIDB4ZjcsIDB4MjIsIDB4NiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweGY3LCAweDZlLCAweGY3LCAweDEyLCAweGY3LCAweDljLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZjcsIDB4ZCwgMHgxZSwgMHhlYSwgMHhmYywgMHg4YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweGY3LCAweGUzLCAweDcsIDB4ZmIsIDB4YiwgMHhmYiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUsIDB4ZmIsIDB4NmYsIDB4ZmIsIDB4NmUsIDB4MWEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDc4LCAweGY3LCAweDIsIDB4ZjgsIDB4OGQsIDB4ZjcsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YWIsIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4NjIsIDB4ZjcsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDMxLCAweGY4LCAweGUsIDB4MTUsIDB4M2IsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg1NywgMHgzNiwgMHgxYSwgMHhmYiwgMHgyMSwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4ZjcsIDB4MTgsIDB4ZjcsIDB4MWUsIDB4ZjcsIDB4MiwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFmLCAweGM3LCAweDcyLCAweGQxLCAweDI1LCAweGIzLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4YTksIDB4YWIsIDB4YzAsIDB4YzksIDB4MWEsIDB4ZTYsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHhmYiwgMHgzMiwgMHhmYiwgMHgzNCwgMHg0YywgMHgyYiwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGMwLCAweDY0LCAweGJlLCAweDc2LCAweDFlLCAweGE4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4MTUsIDB4YjMsIDB4YTQsIDB4YjAsIDB4Y2MsIDB4YmMsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg1NSwgMHgzYywgMHg0NywgMHg3YywgMHg3NSwgMHg3NywgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGRiLCAweDFlLCAweDgwLCAweGZiLCAweGNmLCAweDE1LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4ZGMsIDB4ZTEsIDB4ZDQsIDB4YWIsIDB4NTEsIDB4NTYsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg3NSwgMHg2NSwgMHg1OSwgMHg1OCwgMHhhYywgMHhkZiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NzksIDB4YSwgMHhmNywgMHgyMCwgMHhlZiwgMHhmNywgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYsIDB4MSwgMHhhOSwgMHhmNywgMHgxZiwgMHhmNywgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMzLCAweDMsIDB4YjcsIDB4ZjcsIDB4MzMsIDB4MTUsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhkZCwgMHgzZiwgMHhmNywgMHgxMCwgMHgxYiwgMHhmNywgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGY3LCAweGM0LCAweGNjLCAweGY3LCAweDRlLCAweDQ2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4ZmIsIDB4NTUsIDB4ZmIsIDB4MjEsIDB4MzIsIDB4MjgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhmYiwgMHgyMiwgMHhmNywgMHgyLCAweDJmLCAweGY3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhiOCwgMHg5MCwgMHhjMSwgMHhiOSwgMHgxZiwgMHg4ZCwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NDEsIDB4ODYsIDB4NzgsIDB4ZmIsIDB4ZiwgMHgyOCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDhiLCAweGM5LCAweDliLCAweDg5LCAweDFmLCAweDgwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4MTUsIDB4OWYsIDB4OGIsIDB4ZjYsIDB4ZTYsIDB4Y2UsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHg0NCwgMHhmYiwgMHg3LCAweDMzLCAweDg0LCAweDc4LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4ZjcsIDB4OSwgMHg5YywgMHgxZSwgMHhlLCAweDhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZjcsIDB4ODksIDB4ZjcsIDB4MWEsIDB4MSwgMHhlNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDMsIDB4ZTcsIDB4MTYsIDB4ZjcsIDB4MmEsIDB4ZjcsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYSwgMHg2LCAweGY3LCAweDg5LCAweDQsIDB4ZjcsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYSwgMHhmYiwgMHgyYSwgMHg2LCAweGUsIDB4ZmIsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHg0YSwgMHg3NiwgMHhmOCwgMHgxMiwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGYzLCAweGY3LCAweDFlLCAweDQ0LCAweGQyLCAweDEzLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4ODQsIDB4MTUsIDB4MTMsIDB4ZTgsIDB4Y2UsIDB4NiwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDhiLCAweDcxLCAweDgyLCAweDFlLCAweGE2LCAweDUyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmLCAweGI3LCAweDhiLCAweGU5LCAweGM5LCAweDFhLCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxMywgMHhmMCwgMHhmYiwgMHgxZSwgMHg2LCAweGY3LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmNywgMHgxZSwgMHhmNywgMHgxZCwgMHg4MSwgMHhhLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg1OCwgMHgxNSwgMHhmOCwgMHg5MCwgMHhmYiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MTgsIDB4NywgMHhmYiwgMHhmNiwgMHhmNywgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGY2LCAweGY3LCAweDE1LCAweDUsIDB4ZjcsIDB4MTksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDkwLCAweGZiLCAweDYyLCAweDUsIDB4ZSwgMHgzYywgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUsIDB4ZTQsIDB4ODIsIDB4YSwgMHhiMywgMHhmOCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YjMsIDB4ZTIsIDB4MTUsIDB4ZjgsIDB4OGMsIDB4ZjcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDhjLCAweDYsIDB4ZTQsIDB4NCwgMHhmOCwgMHg4YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4ZmMsIDB4OGMsIDB4NiwgMHhlLCAweDkxLCAweGEsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmOCwgMHg5MCwgMHhmNywgMHg2MiwgMHg1LCAweGY3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGZjLCAweDkwLCAweGY3LCAweDYwLCAweDUsIDB4ZmIsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGY3LCAweGY1LCAweGZiLCAweDE0LCAweGZiLCAweGY1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NSwgMHhlLCAweDU3LCAweDhiLCAweGY3LCAweDFlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ZjUsIDB4MTIsIDB4ZjcsIDB4ODcsIDB4ZjcsIDB4YywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ZjcsIDB4MTksIDB4YmUsIDB4ZjcsIDB4MTUsIDB4MTMsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4NywgMHhmNywgMHg0ZSwgMHgxNSwgMHhmNywgMHhkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg5MiwgMHg4YiwgMHg5MywgMHg4ZiwgMHgxYSwgMHhiZiwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGMzLCAweGJhLCAweDFlLCAweGU4LCAweGRiLCAweGIxLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4MWEsIDB4ZjcsIDB4NSwgMHgyNSwgMHhlOCwgMHhmYiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM3LCAweDNkLCAweGZiLCAweDQsIDB4MjksIDB4ODUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlLCAweDdiLCAweDUsIDB4ZDcsIDB4OWEsIDB4YjEsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHgxYiwgMHhjNCwgMHhjYSwgMHg2YiwgMHg0YSwgMHg2MCwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDQ5LCAweDUyLCAweDFmLCAweDJkLCAweDNkLCAweDg3LCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4MmEsIDB4OCwgMHhmYiwgMHg0ZSwgMHg0LCAweDEzLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4ZjcsIDB4MWUsIDB4ZmIsIDB4MTksIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MmQsIDB4NDYsIDB4ZGEsIDB4ZjcsIDB4MCwgMHhkYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGRiLCAweGVjLCAweGRhLCAweDEsIDB4ZjcsIDB4MTYsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmNywgMHgxLCAweGY4LCAweDUzLCAweGQ3LCAweDMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhmNywgMHgzYiwgMHgxNSwgMHg3OSwgMHg5MCwgMHg5MywgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweDFiLCAweGY3LCAweDQwLCAweGY2LCAweGY3LCAweDM3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4ZjcsIDB4NGMsIDB4ZmIsIDB4MTcsIDB4ZjcsIDB4MmEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhmYiwgMHhjOCwgMHhmYiwgMHhlLCAweGZiLCAweDg5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4ZmIsIDB4OWUsIDB4ZjcsIDB4N2QsIDB4ZmIsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGY3LCAweDE4LCAweGY3LCAweDQxLCAweGI0LCAweGY3LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4MWYsIDB4MzIsIDB4NiwgMHg2NiwgMHg2ZiwgMHg0NywgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDU2LCAweDFiLCAweGZiLCAweGE5LCAweDNjLCAweGY3LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4ZjcsIDB4MTEsIDB4YzcsIDB4ZjcsIDB4ODQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhmNywgMHg3MiwgMHhjOSwgMHhmYiwgMHgzMCwgMHgyOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDIwLCAweDM1LCAweDYyLCAweDc1LCAweDkxLCAweGE5LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MWYsIDB4Y2EsIDB4ZjcsIDB4Y2IsIDB4NSwgMHhmYiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4MSwgMHg1YiwgMHg1LCAweGMwLCAweDZhLCAweDU2LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4MWIsIDB4ZmIsIDB4MmIsIDB4M2QsIDB4ZmIsIDB4M2EsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDI3LCAweGM4LCAweDM5LCAweGYwLCAweGNkLCAweGIwLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OTYsIDB4MWYsIDB4ZmIsIDB4M2IsIDB4ZjcsIDB4MTksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhhMCwgMHhmNywgMHgyNiwgMHhlZSwgMHhkMCwgMHg5ZCwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDUxLCAweDZiLCAweGZiLCAweDJjLCAweDI4LCAweDUwLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4YmQsIDB4MWUsIDB4ZSwgMHg2OSwgMHhhLCAweGY3LCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZSwgMHhmOCwgMHg0NSwgMHg3NywgMHgxLCAweDlmLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4MywgMHg5ZiwgMHgxNiwgMHhmNywgMHgyNiwgMHg2LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4NSwgMHhmNywgMHhhMywgMHg2LCAweGM2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4NSwgMHhmNywgMHgyYSwgMHg2LCAweGZiLCAweGE0LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NDAsIDB4YSwgMHg3NiwgMHhmYywgMHg0NSwgMHgxNSwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDllLCAweGU5LCAweGZiLCAweDllLCAweDUsIDB4ZSwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGY3LCAweGQsIDB4ZjcsIDB4NTEsIDB4ZjcsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDdiLCAweGEsIDB4ZjcsIDB4MjIsIDB4ZjcsIDB4YTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgzLCAweGQ3LCAweDhkLCAweDE1LCAweGY3LCAweGE3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMCwgMHhmNywgMHgzNiwgMHg4OSwgMHhmNywgMHg1ZiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGYwLCAweGZiLCAweGQsIDB4YjEsIDB4MWYsIDB4Y2QsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhiYSwgMHhjYSwgMHgxYSwgMHhmNywgMHgzMywgMHhmYiwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGZiLCAweDIxLCAweDFlLCAweGZiLCAweGE3LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhmYiwgMHhiMSwgMHgxNSwgMHhmNywgMHgzOCwgMHhmNywgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YzgsIDB4ZGUsIDB4OGMsIDB4M2YsIDB4M2YsIDB4MmEsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHgxZiwgMHhmYiwgMHgxOSwgMHhmYiwgMHhjYiwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGY3LCAweDE5LCAweDcsIDB4ZWYsIDB4ZDIsIDB4ODIsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHgzZCwgMHg3ZSwgMHgyZSwgMHgxZiwgMHhlLCAweGM2LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTMsIDB4ZjgsIDB4OGEsIDB4ZjcsIDB4MTMsIDB4MSwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJkLCAweDMsIDB4ZjgsIDB4YjAsIDB4ZjcsIDB4OWEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHg3OSwgMHg1ZCwgMHg0MSwgMHgyOSwgMHgxYiwgMHhmYiwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGY3LCAweGMsIDB4ZjcsIDB4MTEsIDB4YmEsIDB4ODksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHhmNywgMHg0YiwgMHhkNywgMHhjYSwgMHg2MCwgMHgzYywgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDI3LCAweGFkLCAweDUsIDB4ZjcsIDB4YSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE3LCAweGVjLCAweGZiLCAweDI3LCAweDFiLCAweGZiLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZmIsIDB4NDksIDB4ZmIsIDB4NWYsIDB4ZmIsIDB4NzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgyNCwgMHhmNywgMHg1YiwgMHhmNywgMHg4NCwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ3LCAweGM0LCAweDlhLCAweDFmLCAweGUsIDB4YzYsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkLCAweGY4LCAweDcwLCAweDdiLCAweGEsIDB4ZjcsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjYywgMHhmNywgMHgyYiwgMHgzLCAweGQ3LCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NiwgMHhmNywgMHg5ZSwgMHhmNywgMHgzLCAweGY3LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjUsIDB4ZjcsIDB4YjAsIDB4ZmIsIDB4MzYsIDB4ZGQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHgxZiwgMHhmYiwgMHg3YywgMHg2LCAweGY3LCAweDI2LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4MTUsIDB4ZjgsIDB4NzAsIDB4ZTEsIDB4NywgMHhmNywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4ODUsIDB4ZmIsIDB4ODMsIDB4ZmIsIDB4N2IsIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGZiLCAweDUsIDB4MWYsIDB4ZSwgMHg4ZiwgMHg4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4ZjcsIDB4NTcsIDB4ZjcsIDB4ZCwgMHhmNywgMHgzNCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4MjQsIDB4MywgMHhkNywgMHgxNiwgMHhmOCwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQsIDB4ZmMsIDB4MjUsIDB4ZjcsIDB4NTcsIDB4ZjcsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkLCAweGZiLCAweGYzLCAweGY3LCAweDM0LCAweGY4LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZCwgMHhmYywgMHhhOCwgMHg2LCAweGUsIDB4NTcsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHhjNSwgMHhmNywgMHhkLCAweGY3LCAweDNmLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgyYSwgMHgzLCAweGQ3LCAweDE2LCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzUsIDB4ZjcsIDB4YzIsIDB4ZjcsIDB4ZCwgMHhmYiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNmLCAweGY3LCAweGZkLCAweGY3LCAweGQsIDB4ZmMsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZjcsIDB4NywgMHg3OCwgMHhmNywgMHgxMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweGY3LCAweDEwLCAweGY3LCAweDYwLCAweGY3LCAweDEzLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhmNywgMHgyOSwgMHhmNywgMHhmYywgMHhmNywgMHgyNiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjIsIDB4ZjcsIDB4OWEsIDB4MTUsIDB4ZjcsIDB4M2QsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDdkLCAweDc4LCAweDQ5LCAweDViLCAweDM3LCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4NjYsIDB4ZjcsIDB4MjUsIDB4ZjcsIDB4MCwgMHhhMCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDk0LCAweGE5LCAweDFmLCAweDk0LCAweGFhLCAweDk3LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YTEsIDB4OCwgMHhiOCwgMHhhZSwgMHhiZSwgMHhhOCwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGI2LCAweGU1LCAweDdjLCAweDI3LCAweGE4LCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4YTYsIDB4NSwgMHhmNywgMHg0OCwgMHg2MywgMHhmYiwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGZiLCAweDksIDB4MWIsIDB4ZmIsIDB4MTUsIDB4MzIsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg1MywgMHgxZiwgMHg2ZiwgMHg2NywgMHg3NywgMHg2MywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDgsIDB4N2UsIDB4NWUsIDB4ODUsIDB4NjUsIDB4NmMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1NCwgMHhlYSwgMHhmYiwgMHg1MCwgMHhmNywgMHg5NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweGY3LCAweDEyLCAweGQ0LCAweGIzLCAweGI2LCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZmIsIDB4Y2YsIDB4NywgMHhlLCAweDY5LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhmNywgMHhlLCAweGY3LCAweGFkLCAweDc3LCAweDEsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNiwgMHhmNywgMHhiNCwgMHhmNywgMHgyNiwgMHgzLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4MjYsIDB4ZjcsIDB4Y2YsIDB4ZjcsIDB4YjQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhmNywgMHgyNiwgMHhmOSwgMHg2MiwgMHhmYiwgMHgyNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGZiLCAweGI0LCAweGY3LCAweGFkLCAweGZiLCAweDI2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZjLCAweDE1LCAweDNmLCAweGEsIDB4ZjcsIDB4MTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHgzLCAweGNiLCAweDE2LCAweGY3LCAweDJhLCAweGY5LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmEsIDB4NiwgMHhlLCAweDIwLCAweDc5LCAweGY3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZjYsIDB4NzcsIDB4MSwgMHhmNywgMHhlNywgMHhmNywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YTEsIDB4ZjcsIDB4NzAsIDB4MTUsIDB4ZmIsIDB4MzgsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhmNywgMHgyMywgMHhmNywgMHg0MSwgMHhjZCwgMHhmNywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4MWUsIDB4ZjgsIDB4NjYsIDB4ZmIsIDB4MjUsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg3LCAweDQ0LCAweDg2LCAweDQyLCAweDMyLCAweDM2LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4YjksIDB4ODcsIDB4MWUsIDB4ZSwgMHhjNiwgMHgzZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4ZjcsIDB4MjIsIDB4MywgMHhlMiwgMHgxNiwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZlLCAweDYsIDB4ZjcsIDB4OCwgMHhmNywgMHhjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4ZmIsIDB4ZTYsIDB4NSwgMHhmNywgMHg0YywgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4ZjgsIDB4NGMsIDB4ZjcsIDB4OWMsIDB4ZjcsIDB4YWEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUyLCAweDYsIDB4ZmIsIDB4YjQsIDB4ZmIsIDB4ZDEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQxLCAweGZiLCAweDIyLCAweDcsIDB4ZSwgMHg4NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4ZjcsIDB4MjUsIDB4MywgMHhkNywgMHgxNiwgMHhmOCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUsIDB4ZmIsIDB4ZmUsIDB4ZjgsIDB4ZTgsIDB4ZmIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZjcsIDB4M2UsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZCwgMHgxLCAweGQwLCAweGY3LCAweDFiLCAweGY4LCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWIsIDB4MywgMHhkMCwgMHgxNiwgMHhmNywgMHgxYiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDhkLCAweDYsIDB4ZjcsIDB4MjIsIDB4ZmMsIDB4YzksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweDYsIDB4ZjcsIDB4MjAsIDB4ZjgsIDB4YzksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGZjLCAweGM5LCAweGY3LCAweDFiLCAweGY5LCAweDYyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NiwgMHhmYiwgMHgxMywgMHhmYywgMHg3YywgMHg1LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHgxNSwgMHhmOCwgMHg3YywgMHg1LCAweGZiLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweGM2LCAweGEwLCAweDc2LCAweGY5LCAweDYyLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmOCwgMHg2NywgMHg4ZCwgMHg2LCAweGY3LCAweGJiLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NSwgMHhmNywgMHgyYSwgMHhmOSwgMHg2MiwgMHhmYiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDcyLCAweDg5LCAweDYsIDB4ZmIsIDB4YzEsIDB4ZjgsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDI0LCAweDYsIDB4ZSwgMHhmNywgMHg3LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTMsIDB4ZjgsIDB4NzYsIDB4ZjcsIDB4MTMsIDB4MSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI4LCAweGY3LCAweGY4LCAweDg1LCAweGEsIDB4YjcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHgxNSwgMHg3YywgMHg4ZCwgMHg3NSwgMHg5MCwgMHg2ZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDRmLCAweGEwLCAweDUzLCAweGFlLCAweDU4LCAweDgsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhlNSwgMHg1NywgMHhmNywgMHgxOCwgMHgxYiwgMHhmNywgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweGJhLCAweGQyLCAweGMyLCAweDFmLCAweGE2LCAweGFmLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4OTgsIDB4YjgsIDB4OCwgMHg5OCwgMHhiOSwgMHg5MSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDFhLCAweGY3LCAweDY5LCAweDNkLCAweGEsIDB4ZmIsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3ZiwgMHgxZSwgMHhmNywgMHgyOCwgMHgxNiwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4MzgsIDB4ZjcsIDB4NDQsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzOSwgMHgzOCwgMHg3NiwgMHg4NywgMHg3MiwgMHg4NCwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDg0LCAweDZjLCAweDgwLCAweDcwLCAweDdjLCAweDc0LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg2YywgMHg1OSwgMHg2ZSwgMHg0MywgMHgxYiwgMHgzZiwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDg5LCAweGEsIDB4YWEsIDB4OCwgMHg4NSwgMHhhYSwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGEwLCAweDFhLCAweGUsIDB4OGYsIDB4YTAsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhmNywgMHhkLCAweGY3LCAweDU4LCAweGY3LCAweGQsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweGFjLCAweGRiLCAweDYsIDB4ZjcsIDB4MzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg3ZSwgMHhmNywgMHg3YSwgMHhmNywgMHg2YywgMHhmYiwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweGZiLCAweDQ4LCAweDFmLCAweGZiLCAweDc1LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhmYiwgMHhkMSwgMHgxNSwgMHhmNywgMHg1OCwgMHhkYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4ZDIsIDB4ODksIDB4MjcsIDB4MjQsIDB4MjYsIDB4OTQsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweGY3LCAweDcsIDB4NmMsIDB4NzYsIDB4YzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGY4LCAweDZmLCAweGY3LCAweGUsIDB4MSwgMHhkMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGY3LCAweGU3LCAweGY3LCAweDIzLCAweDMsIDB4ZjgsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHgxNSwgMHhjNCwgMHg2NCwgMHhiNSwgMHg2OCwgMHhjMiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGYwLCAweDE4LCAweDRmLCAweGEyLCAweDY4LCAweGE1LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OCwgMHhhNiwgMHhhNywgMHhjNSwgMHhlMiwgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDY3LCAweGZiLCAweDMsIDB4ZjcsIDB4MmMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhmYiwgMHg2YiwgMHhmYiwgMHhhLCAweGZiLCAweDIwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MzgsIDB4YTAsIDB4MmMsIDB4YmYsIDB4NDcsIDB4MWUsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhkZSwgMHg1ZiwgMHhmNywgMHgxMCwgMHgxYiwgMHhkMywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDk2LCAweGEyLCAweDFmLCAweGZiLCAweDUwLCAweGY3LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YWIsIDB4N2YsIDB4YjIsIDB4NzYsIDB4OWEsIDB4ODAsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDgwLCAweDgwLCAweDg4LCAweDZjLCAweDFiLCAweDQ0LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4ODksIDB4YSwgMHhhYywgMHg4LCAweDg1LCAweGFjLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OWUsIDB4MWEsIDB4ZjcsIDB4NywgMHhhYywgMHhmNywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweGY3LCAweDMyLCAweGFjLCAweGZiLCAweDIxLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4ODEsIDB4NTAsIDB4N2YsIDB4NmUsIDB4MWUsIDB4ODAsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg3YSwgMHg4NCwgMHg4MiwgMHg2YSwgMHhhNCwgMHg1ZCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDllLCAweDgsIDB4ZSwgMHg2OSwgMHhhLCAweGY3LCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NiwgMHhmNywgMHg0YiwgMHg3YiwgMHhhLCAweGY3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTUsIDB4ZjcsIDB4MWYsIDB4MywgMHhkNywgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGY3LCAweGMwLCAweGE2LCAweDYsIDB4ZTUsIDB4YTEsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNiwgMHhkYywgMHgxZiwgMHhkZiwgMHhmYiwgMHgzNCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzYsIDB4NiwgMHgzYSwgMHhmNywgMHgyMCwgMHg0NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NzEsIDB4YTUsIDB4NTMsIDB4YWQsIDB4MTksIDB4OGQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweDkyLCAweGQ3LCAweGRiLCAweGY3LCAweDMsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHhmYiwgMHgxYiwgMHg5NywgMHhmYiwgMHg0NSwgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDYsIDB4ZjcsIDB4MWIsIDB4ZmIsIDB4YzQsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhlZiwgMHg3LCAweGY1LCAweGNlLCAweDk0LCAweDI4LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4OGQsIDB4MzksIDB4MWYsIDB4ZSwgMHg4ZiwgMHg3OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweGY3LCAweDY0LCAweGY3LCAweDFiLCAweGY3LCAweDNiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgxLCAweGNjLCAweGY3LCAweDIxLCAweGY3LCAweDk2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4MywgMHhiMiwgMHhmNywgMHg3YiwgMHgxNSwgMHhmYiwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweGEsIDB4YmUsIDB4ZjcsIDB4NDIsIDB4ZjcsIDB4NDgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhhZSwgMHhmYiwgMHgzLCAweGE2LCAweDFmLCAweGZiLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg1ZSwgMHg5NiwgMHhiYSwgMHgxYSwgMHhjNiwgMHhkYSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGY3LCAweDgsIDB4OTYsIDB4NDcsIDB4NjUsIDB4OTEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyOCwgMHg5MSwgMHg1LCAweGY3LCAweDNhLCAweDg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4YzMsIDB4ZmIsIDB4MjMsIDB4MWIsIDB4ZmIsIDB4NjksIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMSwgMHgzYywgMHhmYiwgMHgzNiwgMHhmNywgMHgzNSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDc5LCAweDFmLCAweGY3LCAweDFhLCAweDZhLCAweGJlLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4MWEsIDB4NWMsIDB4NjEsIDB4NTUsIDB4MjUsIDB4ZmIsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhmMSwgMHhiMSwgMHg4NCwgMHgxZSwgMHhlLCAweDU3LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4ZTgsIDB4ZjcsIDB4ZSwgMHgxLCAweGY3LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4YSwgMHhmNywgMHg3YywgMHgxNiwgMHhmNywgMHgyOCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGY3LCAweDZlLCAweGY3LCAweGUsIDB4ZmMsIDB4ZGMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweDZlLCAweDYsIDB4ZSwgMHhjNiwgMHg3OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY4LCAweGY3LCAweDc3LCAweDQyLCAweGEsIDB4ZDMsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHgxNSwgMHhmYywgMHgyMiwgMHg3LCAweGZiLCAweDNjLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2YsIDB4ZjcsIDB4OGQsIDB4ZjcsIDB4NmQsIDB4ZDAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDdhLCAweDFlLCAweGY4LCAweDIyLCAweGZiLCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MjIsIDB4NywgMHhmYiwgMHgxMSwgMHg4YiwgMHgzMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGZiLCAweDE2LCAweDdhLCAweGRjLCAweGY3LCAweDE4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjIsIDB4NywgMHhlLCAweDhmLCAweDNmLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHgxNiwgMHhmNywgMHgyNiwgMHg2LCAweGY3LCAweDg2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NDAsIDB4YSwgMHhmYiwgMHgzOSwgMHhmYywgMHhhNywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4M2QsIDB4ZjgsIDB4YTcsIDB4NSwgMHhmYiwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhmNywgMHhhZCwgMHhhMCwgMHg3NiwgMHhmOCwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGY3LCAweDViLCAweDc3LCAweDEsIDB4ZjcsIDB4NGEsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZCwgMHg2LCAweGY3LCAweDFkLCAweGY4LCAweGFmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg2LCAweGY3LCAweDFkLCAweGZjLCAweGFmLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg2LCAweGY3LCAweDNkLCAweGY5LCAweDYyLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHg2LCAweDIyLCAweGZjLCAweDg4LCAweDZlLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweGY4LCAweDg4LCAweDUsIDB4ZmIsIDB4M2IsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGZjLCAweDgwLCAweDZlLCAweGEsIDB4MjMsIDB4ZjgsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDI0LCAweDYsIDB4ZSwgMHg4ZiwgMHgzZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4MTYsIDB4ZjcsIDB4M2IsIDB4NiwgMHhmNywgMHgyYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGY3LCAweDJkLCAweGZiLCAweDhkLCAweDUsIDB4ZjcsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDdmLCAweGY4LCAweDcsIDB4ZjcsIDB4NmEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHg1LCAweGZiLCAweDM1LCAweDYsIDB4ZmIsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhmYiwgMHgxZSwgMHhmNywgMHg3YywgMHg1LCAweGZiLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg2OSwgMHhmYiwgMHhlOSwgMHg1LCAweGUsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHhhLCAweGY3LCAweDlkLCAweGY3LCAweDFkLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHgxNiwgMHhmNywgMHgxZCwgMHhmNywgMHhjMiwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ZjgsIDB4MzQsIDB4NGYsIDB4YSwgMHhmYywgMHgzMywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1NywgMHg4YiwgMHhmNywgMHhlLCAweGY4LCAweDZlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgxLCAweGE0LCAweDE2LCAweGY4LCAweGM1LCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhhLCAweGY3LCAweDYsIDB4ZmMsIDB4OGUsIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGEsIDB4ZSwgMHg3ZiwgMHhhLCAweGNhLCAweGY3LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg1OCwgMHgzMywgMHgxNSwgMHhmOSwgMHg1MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MCwgMHhmYiwgMHg4YSwgMHhmZSwgMHgyYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweGY3LCAweDAsIDB4NywgMHhlLCAweGZjLCAweDE1LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjksIDB4ODgsIDB4NzcsIDB4MSwgMHg0ZSwgMHhmNywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NGUsIDB4NzgsIDB4MTUsIDB4ZjcsIDB4MTEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZkLCAweDkzLCAweGEsIDB4N2YsIDB4YSwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE5LCAweDMsIDB4YTMsIDB4MzMsIDB4MTUsIDB4ZmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhhLCAweGZhLCAweDJhLCAweGZiLCAweDhhLCAweGZiLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1LCAweGZkLCAweDUyLCAweDcsIDB4ZSwgMHgzYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweDc2LCAweGY3LCAweDc5LCAweDg0LCAweGEsIDB4YzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHgxNSwgMHhmNywgMHgxYywgMHg2LCAweGU5LCAweGY3LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4ZmIsIDB4NzksIDB4NSwgMHhmNywgMHgxYiwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4ZjgsIDB4YiwgMHg1LCAweDIwLCAweDYsIDB4ZSwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDExLCAweGJkLCAweDEsIDB4NDAsIDB4NCwgMHg1OSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGJkLCAweDcsIDB4ZSwgMHhmOCwgMHhmMCwgMHg4NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4ZjcsIDB4OGMsIDB4MywgMHhmNywgMHgxMywgMHhmOCwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGVkLCAweDYsIDB4M2YsIDB4ODMsIDB4YSwgMHhmYiwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHgyMCwgMHg3ZCwgMHhlZiwgMHg0OCwgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGY3LCAweDAsIDB4MTIsIDB4YTgsIDB4ZjcsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhmNywgMHgxZCwgMHgxMywgMHg3OCwgMHhmOCwgMHg2LCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4YSwgMHg3NywgMHhiOCwgMHg4MywgMHhhMywgMHgzOCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4MWEsIDB4ZWIsIDB4OGEsIDB4ZjQsIDB4ZmIsIDB4NzMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHg1YiwgMHg0OSwgMHgzNSwgMHg3MywgMHgxZSwgMHhmNywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDUsIDB4YTYsIDB4MmQsIDB4YSwgMHg3ZiwgMHg2ZSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDdkLCAweDgsIDB4NDEsIDB4N2MsIDB4ZmIsIDB4YywgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE3LCAweDFhLCAweDEzLCAweGI4LCAweDJlLCAweGQxLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4YSwgMHhmNywgMHg1YiwgMHgxNSwgMHg2ZiwgMHg3LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4NWQsIDB4NGMsIDB4M2QsIDB4MWIsIDB4NTUsIDB4NmQsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhiZCwgMHhjYSwgMHhhOSwgMHhhNCwgMHg5MCwgMHgxZiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGM4LCAweDk1LCAweDljLCAweDk1LCAweDgsIDB4ZSwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGY3LCAweDIsIDB4M2UsIDB4NzYsIDB4ZjgsIDB4NDEsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZCwgMHg3NywgMHgxMiwgMHhkZSwgMHhmNywgMHgyMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweGY3LCAweDI0LCAweDEzLCAweDdjLCAweGM4LCAweDg5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4ZDgsIDB4OGQsIDB4NiwgMHgxMywgMHhiYywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGQ4LCAweDgwLCAweGFhLCAweDFiLCAweGY3LCAweDcsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhmNywgMHg1MCwgMHhmNywgMHg0YywgMHgyMiwgMHhlNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzUsIDB4NWIsIDB4NWEsIDB4NzQsIDB4NzcsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhmYiwgMHgyMCwgMHg3LCAweDEzLCAweDdjLCAweGY3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NTIsIDB4MTUsIDB4ZjUsIDB4YmYsIDB4YmMsIDB4Y2MsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhmYiwgMHgyLCAweDUxLCAweDFlLCAweDEzLCAweGJjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4NGMsIDB4NmEsIDB4NWIsIDB4MzEsIDB4NmEsIDB4ZGEsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDIwLCAweDdkLCAweGY3LCAweDgsIDB4ZjcsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzLCAweDEsIDB4YjksIDB4ZjcsIDB4MjEsIDB4MywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDVlLCAweDE1LCAweDZjLCAweDg1LCAweDc2LCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4MWIsIDB4M2MsIDB4NmUsIDB4YzYsIDB4ZjcsIDB4NSwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweGY3LCAweDE0LCAweGY3LCAweDUsIDB4Y2UsIDB4YTQsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg5MiwgMHgxZiwgMHhmNywgMHgxYiwgMHhhNCwgMHg1LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NWEsIDB4ZWUsIDB4ZmIsIDB4MzksIDB4MWIsIDB4ZmIsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHhmYiwgMHgyOCwgMHhmYiwgMHgxMCwgMHgzMSwgMHhhZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweGY3LCAweDZhLCAweGY3LCAweDE3LCAweGRjLCAweGM5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4YTgsIDB4MWYsIDB4ZSwgMHg1NywgMHg3ZCwgMHhmNywgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4NzYsIDB4ZjgsIDB4M2YsIDB4ZjUsIDB4ZjcsIDB4NGYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhhZCwgMHhmNywgMHgyNCwgMHhmNywgMHg2ZCwgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDdjLCAweGY4LCAweDM4LCAweDg5LCAweDE1LCAweGY3LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NjQsIDB4ZmIsIDB4MjAsIDB4ZmIsIDB4OTcsIDB4NiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDViLCAweGJjLCAweDM1LCAweDFiLCAweGZiLCAweGEsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHhmYiwgMHg0YywgMHgxZiwgMHgxMywgMHhiYywgMHhmYiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDMzLCAweGY3LCAweDcsIDB4ZTksIDB4YWUsIDB4YjcsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgxZSwgMHgxMywgMHg3YywgMHhmYiwgMHg4NiwgMHhmNywgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGM1LCAweDk4LCAweGY0LCAweGYzLCAweGNjLCAweGJmLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4MWUsIDB4MTMsIDB4YmMsIDB4MmEsIDB4NmEsIDB4NDYsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg0YywgMHhiMCwgMHhmNywgMHgxNSwgMHgxZSwgMHhlLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ZjcsIDB4MCwgMHhmNywgMHgxNywgMHhlMSwgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDAsIDB4MSwgMHhhOSwgMHhmNywgMHgyOCwgMHhmNywgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIyLCAweDMsIDB4ZjcsIDB4M2MsIDB4ZjcsIDB4NzYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmYywgMHg2LCAweGY3LCAweDMzLCAweDU3LCAweGY3LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWUsIDB4ZmIsIDB4M2UsIDB4M2EsIDB4ZmIsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhmYiwgMHgzYiwgMHhmMSwgMHhmYiwgMHgyLCAweGY3LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDYsIDB4YzMsIDB4ZjcsIDB4MTIsIDB4YWMsIDB4OTcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMiwgMHhhMywgMHg1LCAweDcyLCAweDgzLCAweDZkLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4MWIsIDB4M2EsIDB4NzQsIDB4Y2YsIDB4Y2IsIDB4ODksIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhlMSwgMHgxNSwgMHhjZSwgMHhhZiwgMHhjNiwgMHhjZSwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDRkLCAweDRiLCAweDFlLCAweGUsIDB4NzYsIDB4YSwgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDEsIDB4ZDgsIDB4ZjcsIDB4MTQsIDB4MywgMHhkOCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweGY4LCAweDJjLCAweGRlLCAweGY3LCAweDEsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg2LCAweGE5LCAweDhiLCAweGIxLCAweGJkLCAweDkzLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ODUsIDB4YTEsIDB4MWUsIDB4OWIsIDB4ZWIsIDB4NSwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDc2LCAweDhmLCAweDczLCAweDFiLCAweGZiLCAweDIxLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MSwgMHg0ZSwgMHgxZiwgMHg2MywgMHg0OCwgMHhmYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4NywgMHhlLCAweDU3LCAweGZiLCAweDZkLCAweGY3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweGY3LCAweDcsIDB4ZjcsIDB4ZDcsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YjMsIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4N2IsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGM1LCAweDY3LCAweDE1LCAweGZiLCAweDQwLCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4ZjcsIDB4ZSwgMHhmNywgMHg3OSwgMHg5ZiwgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4MWUsIDB4ZjgsIDB4NzQsIDB4ZmIsIDB4MTYsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3LCAweGEzLCAweDdjLCAweDVjLCAweGNhLCAweDJhLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4ZmIsIDB4MWMsIDB4NTUsIDB4ZmIsIDB4NzAsIDB4ZmIsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHhmYiwgMHhjLCAweGY3LCAweDFhLCAweGNhLCAweGM0LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4YWUsIDB4MWYsIDB4OGQsIDB4M2QsIDB4NiwgMHg0ZCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGZiLCAweDcsIDB4NTAsIDB4N2QsIDB4OWMsIDB4YjAsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg2OSwgMHhmNywgMHhkYiwgMHgxNSwgMHhiMywgMHg5NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY1LCAweGVhLCAweGExLCAweDI5LCAweDQ3LCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NzksIDB4NjYsIDB4MzIsIDB4NzQsIDB4ZGYsIDB4ZDQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDU3LCAweGEwLCAweDc2LCAweGY4LCAweDNlLCAweGY0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NzcsIDB4MSwgMHhjYywgMHhmNywgMHgyMCwgMHhmNywgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGEsIDB4Y2MsIDB4MTYsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGM0LCAweDhiLCAweGY3LCAweDAsIDB4ZjcsIDB4NiwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDNlLCAweDMzLCAweDFlLCAweGZiLCAweDk5LCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTksIDB4NywgMHhmNywgMHg0NCwgMHg0ZiwgMHhlOSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4NmUsIDB4NDcsIDB4ODgsIDB4NDAsIDB4NGIsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHhmYiwgMHgyMCwgMHg3LCAweGUsIDB4NGMsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDc3LCAweGU5LCAweGY3LCAweDEyLCAweDEsIDB4ZjcsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhhLCAweGY4LCAweGExLCAweDY4LCAweGEsIDB4ZDUsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweGY3LCAweDEyLCAweDZkLCAweGEsIDB4ZmMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2YSwgMHhmNywgMHgxNiwgMHhmOCwgMHhmNSwgMHg3NywgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEyLCAweDEsIDB4ZjcsIDB4OCwgMHhmNywgMHgxYiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4M2IsIDB4MTUsIDB4NzMsIDB4ZmIsIDB4YiwgMHg1LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4YjQsIDB4N2YsIDB4YjMsIDB4MWIsIDB4ZjcsIDB4MjIsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5LCAweGY3LCAweDUsIDB4MWYsIDB4ZjgsIDB4OTEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYywgMHg4OSwgMHg3LCAweDQyLCAweDhjLCAweDY4LCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4N2YsIDB4OGUsIDB4OGMsIDB4ODYsIDB4MWUsIDB4ZTMsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHgxNSwgMHhmNywgMHgxYiwgMHhmNywgMHgxMiwgMHhmYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHgyMCwgMHgzZiwgMHhhLCAweGQwLCAweGY3LCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhkMCwgMHgxNiwgMHhmNywgMHgyMSwgMHhmNywgMHgzYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4Y2YsIDB4ZjcsIDB4MWEsIDB4ZmIsIDB4N2YsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDYsIDB4ZmIsIDB4NTcsIDB4ZjcsIDB4ZGYsIDB4ZjcsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1MywgMHg1LCAweGZiLCAweDQyLCAweDYsIDB4ZmIsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0YywgMHg1LCAweGY4LCAweDEwLCAweGZiLCAweDIxLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZjLCAweDE1LCAweDNmLCAweGEsIDB4ZDAsIDB4NjMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDYyLCAweDZkLCAweGEsIDB4ZjcsIDB4NzYsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0YSwgMHhmNywgMHgwLCAweDdmLCAweDc3LCAweDEyLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWQsIDB4ZjcsIDB4MzMsIDB4ZjcsIDB4MWMsIDB4ZjcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZCwgMHgxMywgMHhkYywgMHhjYiwgMHgxNiwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIxLCAweDYsIDB4ZTYsIDB4OWYsIDB4YzksIDB4ZTAsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg0ZiwgMHgzMCwgMHgxZSwgMHhmYiwgMHhiMywgMHhmNywgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIzLCAweDcsIDB4ZDgsIDB4YTMsIDB4ZDUsIDB4ZGEsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHgzMywgMHg0YywgMHgxZSwgMHhmYiwgMHhiMywgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI3LCAweDcsIDB4YzUsIDB4OGIsIDB4ZjcsIDB4NTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHgzNiwgMHg1OSwgMHg1MywgMHg2ZiwgMHg3NCwgMHgxZSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDY5LCAweGM5LCAweDI4LCAweDFiLCAweDY2LCAweDRkLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4NGYsIDB4MWYsIDB4MTMsIDB4YmMsIDB4ODksIDB4ZDMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg2LCAweGUsIDB4NTcsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHgyYiwgMHhmNywgMHgwLCAweDEyLCAweDdhLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWYsIDB4ZjcsIDB4MjAsIDB4MTMsIDB4YjgsIDB4Y2MsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMCwgMHhmNywgMHg4ZiwgMHg2LCAweGUzLCAweDk0LCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4ZTAsIDB4OGIsIDB4MjgsIDB4MzMsIDB4MWUsIDB4ZmIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMCwgMHhmNywgMHg4ZiwgMHg3LCAweGY3LCAweDE4LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4ZmIsIDB4MmIsIDB4NTUsIDB4NDgsIDB4NzgsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHgxZSwgMHgxMywgMHhkOCwgMHg4OSwgMHhkYSwgMHhmYiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg1NywgMHg3ZCwgMHhmNywgMHg4LCAweGY3LCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OCwgMHgxLCAweGFjLCAweGY3LCAweDIzLCAweGY3LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4MywgMHhhZCwgMHhmNywgMHhhMSwgMHgxNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweGY3LCAweDUwLCAweDZhLCAweGRlLCAweGY3LCAweDNlLCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4MjksIDB4ZjcsIDB4MWMsIDB4MzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhmYiwgMHg0YywgMHhmYiwgMHg0ZiwgMHgzNywgMHhmYiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEzLCAweDFlLCAweGY3LCAweDIzLCAweDE2LCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhiYiwgMHhjZSwgMHhkMywgMHhjNSwgMHg1NiwgMHhmYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHg0OSwgMHg1YywgMHg0YiwgMHg0OSwgMHg0ZCwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcsIDB4MWUsIDB4ZSwgMHg1YSwgMHhhLCAweGU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZjcsIDB4NjAsIDB4ZjcsIDB4MjQsIDB4MTMsIDB4ZWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhjNiwgMHgxNSwgMHg3MywgMHg5ZiwgMHhiYiwgMHg1OSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGY3LCAweDksIDB4ZjQsIDB4ZGYsIDB4ZjcsIDB4NTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHgyMCwgMHhlYSwgMHhmYiwgMHg2LCAweDZiLCAweDNmLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4NTUsIDB4MWYsIDB4ODksIDB4NiwgMHgxMywgMHhkYywgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE3LCAweGZkLCAweDc5LCAweGY3LCAweDIwLCAweDcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2NSwgMHgxNSwgMHgxMywgMHhlYywgMHhlZSwgMHhhYiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGJiLCAweGNhLCAweDYxLCAweGZiLCAweDE5LCAweDRmLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4MjQsIDB4NGEsIDB4NTcsIDB4YzMsIDB4ZjcsIDB4MSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NWEsIDB4YSwgMHhhZCwgMHhmNywgMHgyNCwgMHhmNywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweGZiLCAweDE3LCAweGY3LCAweDE3LCAweDEzLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzAsIDB4YzYsIDB4MTUsIDB4ZmIsIDB4OWUsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg3OSwgMHg3LCAweDEzLCAweGRhLCAweGZiLCAweDE3LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NiwgMHgxMywgMHhlYywgMHhkYiwgMHg1NSwgMHgzZSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDFiLCAweGZiLCAweDcsIDB4MjAsIDB4MmMsIDB4ZmIsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1MSwgMHhmNCwgMHgzNywgMHhmNywgMHhhLCAweGUxLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YTMsIDB4YTAsIDB4MWYsIDB4ZmIsIDB4N2UsIDB4ZjcsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgxOSwgMHhjYiwgMHhiNSwgMHhiYiwgMHhlNSwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDI4LCAweGZiLCAweDEsIDB4NTcsIDB4NTMsIDB4NDksIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhmNCwgMHhjNywgMHgxZSwgMHhlLCAweGZiLCAweGE2LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4MzcsIDB4ZjcsIDB4NywgMHhmYiwgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4MTIsIDB4YjksIDB4ZjcsIDB4MTIsIDB4ZjcsIDB4MzUsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiOCwgMHhjYiwgMHgxNiwgMHhmNywgMHgxMiwgMHhmNywgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MjgsIDB4OTYsIDB4ZjUsIDB4ZGQsIDB4YTMsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg4NCwgMHg5NSwgMHgxZSwgMHhiMywgMHhmNywgMHhjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg3NSwgMHg2MiwgMHg5OSwgMHg3MCwgMHgxYiwgMHg1NSwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDU4LCAweDg0LCAweDFmLCAweDEzLCAweGQwLCAweDg5LCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OSwgMHg2LCAweGUsIDB4MjAsIDB4N2QsIDB4ZjAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHhmMCwgMHgxLCAweGNiLCAweGY3LCAweDE0LCAweGY3LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWUsIDB4MywgMHhhOSwgMHhmNywgMHgyYiwgMHgxNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDllLCAweGY3LCAweDMyLCAweDdjLCAweGQ0LCAweDFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4Y2UsIDB4ZDcsIDB4ZGYsIDB4ZjcsIDB4YSwgMHgyMCwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGEyLCAweDFmLCAweDY2LCAweDk0LCAweDIxLCAweDk5LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YjcsIDB4Y2YsIDB4OGMsIDB4YTIsIDB4YTQsIDB4YzYsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHg5YywgMHgxZSwgMHhmNywgMHgxNywgMHhhMywgMHg1LCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4M2QsIDB4YWUsIDB4ZmIsIDB4MTAsIDB4MWIsIDB4ZmIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4NjIsIDB4ZmIsIDB4ZiwgMHhmYiwgMHgxMywgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGY3LCAweDMyLCAweDY4LCAweDFmLCAweGFiLCAweDg0LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NmMsIDB4MWEsIDB4NTEsIDB4MzIsIDB4OGEsIDB4N2YsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg5YSwgMHhkMiwgMHg3YiwgMHgxZSwgMHhlLCAweDlhLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjYsIDB4ZjMsIDB4ZjcsIDB4NDQsIDB4NzcsIDB4MSwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFhLCAweDMsIDB4ZjcsIDB4YzksIDB4OTksIDB4MTUsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHg1LCAweDQ2LCAweDcxLCAweDc1LCAweDhjLCAweGU1LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmMsIDB4ZTYsIDB4ZjMsIDB4MzAsIDB4ZjcsIDB4NDQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFhLCAweDNlLCAweDUsIDB4MjgsIDB4NGQsIDB4MjMsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2YywgMHg3LCAweGZiLCAweDcsIDB4OTUsIDB4NDQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDk5LCAweGJiLCAweDhkLCAweDlkLCAweGI3LCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg3ZCwgMHhmNywgMHgwLCAweDJiLCAweGViLCAweGY4LCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4ZDUsIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4NTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHg3OCwgMHhmOCwgMHgzNCwgMHg4OSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweGFhLCAweGZiLCAweDFmLCAweGZiLCAweGJiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg4ZCwgMHgyYiwgMHhmYiwgMHg3LCAweDJmLCAweDhmLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4MWUsIDB4ZjcsIDB4YmIsIDB4ZmIsIDB4MWYsIDB4ZmIsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDEzLCAweGI4LCAweGZiLCAweDM3LCAweGJhLCAweDMzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4Y2YsIDB4Y2UsIDB4YWQsIDB4YzYsIDB4YjEsIDB4MWUsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4MjAsIDB4NzMsIDB4YSwgMHg5OCwgMHhmOCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NmYsIDB4MTYsIDB4ZjcsIDB4ZCwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4ZjgsIDB4YTgsIDB4NSwgMHhmYiwgMHgxZiwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4ZmIsIDB4ZmQsIDB4NSwgMHg4YSwgMHg2LCAweGZiLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmZCwgMHg1LCAweGZiLCAweDIyLCAweDYsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NzMsIDB4YSwgMHg5NSwgMHhmOSwgMHg4YiwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4MTYsIDB4ZjcsIDB4MTcsIDB4NiwgMHhlMCwgMHhmNywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OGQsIDB4NiwgMHhlMSwgMHhmYiwgMHhlYywgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4NiwgMHhmNywgMHgzNywgMHhmOCwgMHhhOCwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4NiwgMHgyYiwgMHhmYiwgMHhmMCwgMHg2ZSwgMHhhLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZjAsIDB4NSwgMHhmYiwgMHgxNywgMHg2LCAweDM1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4NmUsIDB4YSwgMHgyZCwgMHhmNywgMHhmMCwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4NiwgMHhlLCAweDIwLCAweDczLCAweGEsIDB4OWEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHgzLCAweDlhLCAweDE2LCAweGY3LCAweDMwLCAweDYsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYSwgMHhmMiwgMHhmYiwgMHgzYSwgMHg1LCAweGY3LCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg0ZiwgMHhmNywgMHhhZCwgMHhmNywgMHgzZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDUsIDB4ZmIsIDB4MzAsIDB4NiwgMHgyZCwgMHhmYiwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGY3LCAweDI1LCAweDUsIDB4ZmIsIDB4MzcsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweGZiLCAweDk1LCAweDUsIDB4ZSwgMHgyMCwgMHhmYiwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDdlLCAweDc3LCAweDEsIDB4YjYsIDB4MmIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhmYiwgMHgyLCAweDUyLCAweGEsIDB4ZjcsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGM4LCAweDFmLCAweGY3LCAweDRhLCAweGY4LCAweDkzLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYywgMHhkLCAweDZlLCAweGEsIDB4ZmIsIDB4ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4NDAsIDB4YSwgMHhmNywgMHg1OCwgMHhmYywgMHhhOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4NDgsIDB4YSwgMHhlLCAweGZiLCAweDM3LCAweDhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZjcsIDB4YjcsIDB4ZjcsIDB4OSwgMHgxLCAweDlmLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NjAsIDB4ZjcsIDB4MTAsIDB4ZmIsIDB4YWUsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGY3LCAweGM4LCAweDUsIDB4ZWYsIDB4ZmMsIDB4M2QsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweGY3LCAweDg4LCAweDcsIDB4ZmIsIDB4OWIsIDB4ZmIsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4NWIsIDB4YSwgMHhmNywgMHgyYSwgMHhmNywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4ZTAsIDB4YmIsIDB4ZjcsIDB4NjEsIDB4MTUsIDB4ZTgsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHhmYiwgMHg0LCAweGZiLCAweDJmLCAweGJkLCAweDUxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MWYsIDB4YTQsIDB4ZjcsIDB4NywgMHg2LCAweDQ3LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4Y2MsIDB4ZjcsIDB4NGYsIDB4NzgsIDB4YmMsIDB4NDgsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjYSwgMHhiNSwgMHhhMiwgMHhhYiwgMHhmNywgMHg1ZCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweDllLCAweDkwLCAweGQ3LCAweDFlLCAweGY3LCAweDcsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGZiLCAweDUyLCAweDhiLCAweDMyLCAweGZiLCAweDIzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg3ZCwgMHg1NiwgMHgzMywgMHgxZiwgMHhlLCAweGZjLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWEsIDB4NzYsIDB4ZmEsIDB4NTAsIDB4NzcsIDB4MSwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4MywgMHhkZiwgMHhmYiwgMHg2ZiwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZmEsIDB4NTAsIDB4N2MsIDB4YSwgMHhlLCAweDViLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiLCAweGY3LCAweGMsIDB4MTQsIDB4ZTAsIDB4YTMsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmYiwgMHg3LCAweGE0LCAweDcsIDB4ZjcsIDB4NTIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHhmNywgMHgyMywgMHhmNywgMHg4LCAweDkyLCAweGMwLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjcsIDB4OCwgMHg3LCAweDI5LCAweDg3LCAweGQ3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmNywgMHgyZiwgMHg1OSwgMHhjNSwgMHhmYiwgMHgyMCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweGZiLCAweDcsIDB4NiwgMHhjZiwgMHhhNiwgMHg4OCwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRmLCAweDllLCAweDVhLCAweGNlLCAweDYzLCAweDFmLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NzQsIDB4NmIsIDB4ZmIsIDB4NWQsIDB4MWEsIDB4NGIsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHgzZiwgMHgxZSwgMHhlLCAweDNjLCAweGY3LCAweDczLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHgxLCAweGNlLCAweGY4LCAweDYyLCAweDMsIDB4YzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHgxNSwgMHhjMiwgMHhiZiwgMHhiMywgMHg5MSwgMHhhNiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGFlLCAweDdiLCAweDdiLCAweGFlLCAweDFmLCAweDdkLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4N2QsIDB4YjAsIDB4MWIsIDB4ZDAsIDB4YmYsIDB4YmMsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHgxZiwgMHhmNywgMHhjLCAweDcsIDB4NGQsIDB4NTMsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4MSwgMHgxYiwgMHg3MiwgMHg2YiwgMHg5OSwgMHg5OCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDliLCAweDY0LCAweDYxLCAweDljLCAweDYwLCAweDFiLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4OGIsIDB4NGUsIDB4NTUsIDB4MWYsIDB4ZSwgMHhjNiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIsIDB4ZjcsIDB4YTQsIDB4ZDUsIDB4ZjcsIDB4MTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDEsIDB4OWYsIDB4ZjcsIDB4OTMsIDB4MTUsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4MmUsIDB4YWUsIDB4ZjcsIDB4MmIsIDB4MjYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHgxYiwgMHhjZCwgMHhjNiwgMHg5NSwgMHhhMCwgMHhiYywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweDcsIDB4NjYsIDB4NWYsIDB4NTEsIDB4NzcsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgyOCwgMHhmYiwgMHhhLCAweGMyLCAweGRjLCAweDdhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZiwgMHg2LCAweDllLCAweGQ1LCAweDUsIDB4ZmMsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDllLCAweDg5LCAweGE1LCAweDhkLCAweDljLCAweDFlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4NiwgMHg5ZiwgMHhkNSwgMHg1LCAweGZjLCAweDQ2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHg5ZiwgMHhmNywgMHhiLCAweGMwLCAweGVmLCAweDFiLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4N2UsIDB4NzAsIDB4YWMsIDB4MWYsIDB4YWUsIDB4ZjcsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDllLCAweDViLCAweDRhLCAweDk1LCAweDRhLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4ZmIsIDB4MjEsIDB4MjksIDB4ZmIsIDB4MmYsIDB4NjQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg2LCAweDc5LCAweDQxLCAweDUsIDB4ZWUsIDB4NiwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDhhLCAweDZlLCAweDhkLCAweDdhLCAweDgsIDB4M2EsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmMsIDB4MTUsIDB4ZmIsIDB4MTEsIDB4NzYsIDB4MTIsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNSwgMHg0OCwgMHhjZSwgMHgxMywgMHhjMCwgMHhkYiwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweGEwLCAweGM5LCAweDYsIDB4ODksIDB4NDMsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg3MywgMHg4MywgMHhhNCwgMHg1NiwgMHgxOCwgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4YSwgMHg3LCAweDEzLCAweGMwLCAweGZiLCAweDE1LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDIwLCAweGZiLCAweDY2LCAweGY3LCAweGEsIDB4ZjgsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHhkYywgMHhmNywgMHg1LCAweDEsIDB4OWIsIDB4M2IsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhmYiwgMHgzLCAweDUsIDB4N2QsIDB4YjUsIDB4YTgsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHgxYiwgMHhmNywgMHhiLCAweGI2LCAweGQ0LCAweGQ5LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZDksIDB4ZjgsIDB4NzAsIDB4NSwgMHhlNywgMHg2LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4NSwgMHgyZCwgMHg2LCAweDkwLCAweGE3LCAweDUsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg5MCwgMHhhOCwgMHhiNywgMHgxYiwgMHhhNywgMHhhOSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDk4LCAweDFmLCAweGE0LCAweGY3LCAweDUsIDB4NSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDZmLCAweDhkLCAweDgwLCAweDFiLCAweGZiLCAweDE0LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZmIsIDB4MjgsIDB4NzMsIDB4MWYsIDB4MzAsIDB4NiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDUsIDB4ZTYsIDB4NiwgMHg0NywgMHhmYywgMHgzYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4ODIsIDB4ODcsIDB4NzIsIDB4NjAsIDB4MWIsIDB4NzcsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg5NSwgMHg2NCwgMHgxZiwgMHhlLCAweGZiLCAweDM3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4NzYsIDB4ZjcsIDB4MjYsIDB4ZjcsIDB4MTMsIDB4MTIsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYSwgMHg0NiwgMHhkMCwgMHhlNywgMHhmNywgMHgxYSwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDEzLCAweGU4LCAweGY3LCAweGMyLCAweDE2LCAweDEzLCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4NiwgMHg5OCwgMHhhLCAweDcyLCAweDgzLCAweGE1LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZjcsIDB4YywgMHg2MSwgMHhhLCAweGZiLCAweDc2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4MTUsIDB4MTMsIDB4ZDgsIDB4Y2MsIDB4NiwgMHg5OCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4ODMsIDB4YTYsIDB4NTYsIDB4MTgsIDB4ZjcsIDB4YiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHhmNywgMHhlNSwgMHg4YiwgMHg4NCwgMHhhLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4NWIsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZiwgMHgxNCwgMHg3MCwgMHhmOSwgMHg5NSwgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDI2LCAweGZiLCAweDFmLCAweDYsIDB4ZmQsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNiwgMHgxNSwgMHhmNywgMHgxZiwgMHhmNywgMHgyNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDYsIDB4ZjcsIDB4ZTYsIDB4ZmIsIDB4MjYsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHhmNywgMHgyNiwgMHg2ZCwgMHhhLCAweDIwLCAweGZiLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4ZGEsIDB4ZjcsIDB4NywgMHhmNywgMHg1NCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NmIsIDB4ZjcsIDB4MTUsIDB4MywgMHhmNywgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNmLCAweDE1LCAweGY3LCAweDE1LCAweGY4LCAweGRhLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg1NCwgMHhmYiwgMHgxNSwgMHhmYiwgMHg1NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGZiLCAweDcsIDB4ZjcsIDB4NDcsIDB4NiwgMHhlLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmEsIDB4NzYsIDB4ZjcsIDB4M2UsIDB4ZjcsIDB4NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGY3LCAweDcsIDB4ZjcsIDB4M2UsIDB4NzcsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGY3LCAweDE1LCAweDMsIDB4YWYsIDB4OGEsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhmYiwgMHgzZSwgMHhmNywgMHgxNSwgMHhmNywgMHgzZSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4ZDMsIDB4NzQsIDB4YSwgMHhmNywgMHgzZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGZiLCAweDNlLCAweGZiLCAweDQ3LCAweGZiLCAweDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhmYiwgMHhkMywgMHhmYiwgMHg0NywgMHg2LCAweGUsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhkNCwgMHgxLCAweDgxLCAweGY4LCAweGYwLCAweDk1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHhjOCwgMHg0MiwgMHg3NywgMHhhLCAweDgzLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg2LCAweGUsIDB4ZjcsIDB4ZTUsIDB4NzgsIDB4ZDQsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHhhYiwgMHhkNCwgMHg5OSwgMHhkNCwgMHhmNywgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDkxLCAweDc3LCAweDEyLCAweDg4LCAweGViLCAweGU2LCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHhlYiwgMHhlNywgMHhlYSwgMHhiYSwgMHhlYiwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweDEzLCAweDdiLCAweGYwLCAweGU4LCAweGY4LCAweGE4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4OTMsIDB4YWQsIDB4YjAsIDB4YWYsIDB4OTYsIDB4NmIsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHgxZSwgMHg0OCwgMHg4YSwgMHg4MiwgMHg2MSwgMHg2NywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDgzLCAweGI3LCAweGNjLCAweDFmLCAweDJiLCAweDE2LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4ZmIsIDB4MTAsIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4MTgsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMCwgMHhjNSwgMHhkMSwgMHg3MiwgMHhmMSwgMHhmYiwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTAsIDB4N2EsIDB4ZmIsIDB4NSwgMHg1MCwgMHgxZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGZjLCAweGI4LCAweDE1LCAweGVjLCAweDYsIDB4MTMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHhmNywgMHhjMSwgMHhmOSwgMHg2YSwgMHg1LCAweDJhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhmYywgMHhiMiwgMHgxNSwgMHgxMywgMHhiYiwgMHhmMCwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGZiLCAweDE0LCAweGY3LCAweDFiLCAweGY3LCAweDFjLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4YmIsIDB4ZDAsIDB4NzIsIDB4ZWUsIDB4ZmIsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGEsIDB4OTQsIDB4YTksIDB4YWYsIDB4YjIsIDB4OTMsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg0OCwgMHg4MywgMHg1ZCwgMHg2NCwgMHg2NywgMHg4MiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweDFlLCAweGY3LCAweDdlLCAweDE2LCAweDUwLCAweDkyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4MWIsIDB4OTIsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhkMCwgMHg3MywgMHhlZSwgMHhmYiwgMHhhLCAweDcxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHhhOSwgMHhiMCwgMHhhZiwgMHg5NSwgMHg2ZCwgMHg0YSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDU2LCAweDYzLCAweDVlLCAweDhiLCAweGM5LCAweGJmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4ZiwgMHg3OCwgMHhmNywgMHhlLCAweGY4LCAweDhjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxLCAweGNjLCAweGY3LCAweDIxLCAweGY3LCAweGE5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4MywgMHhiMiwgMHhmNywgMHg3OCwgMHgxNSwgMHhmYiwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweGEsIDB4YmQsIDB4ZjcsIDB4NDAsIDB4ZjcsIDB4NDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhhZSwgMHhmYiwgMHgzLCAweGE1LCAweDFmLCAweGZiLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg1ZSwgMHg5NSwgMHhiOSwgMHgxYSwgMHhjNSwgMHhkYSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGY3LCAweDgsIDB4OTYsIDB4NDcsIDB4NjYsIDB4OTEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyOCwgMHg5MSwgMHg1LCAweGY3LCAweDM3LCAweDg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4YzIsIDB4ZmIsIDB4MjMsIDB4MWIsIDB4ZmIsIDB4NjksIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlLCAweDNjLCAweGZiLCAweDMzLCAweGY3LCAweDM1LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4NzgsIDB4MWYsIDB4ZjcsIDB4MWEsIDB4NmIsIDB4YmUsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHgxYSwgMHg1YywgMHg2MSwgMHg1NiwgMHgyNSwgMHhmYiwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGYwLCAweGIwLCAweDg0LCAweDFlLCAweGUzLCAweGY4LCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MTQsIDB4NiwgMHhmNCwgMHhmNywgMHgyMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NSwgMHg2LCAweDU2LCAweDQxLCAweDUxLCAweGQ1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhhLCAweGUsIDB4NWQsIDB4YSwgMHhmNywgMHg0OSwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGQwLCAweDYsIDB4MzksIDB4ZjcsIDB4NjQsIDB4ZGQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg1LCAweDQ2LCAweDYsIDB4MjksIDB4ZmIsIDB4NWMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4ZTUsIDB4NzgsIDB4ZjcsIDB4MTMsIDB4ZmIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweGY3LCAweDU5LCAweGY3LCAweDEwLCAweGY3LCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4ZmIsIDB4NywgMHhmNywgMHgxMywgMHgxMiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI3LCAweGY3LCAweGNkLCAweGY3LCAweDE5LCAweDEzLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OGUsIDB4ODQsIDB4MTUsIDB4ZjgsIDB4NWIsIDB4ZjcsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkZiwgMHhmNywgMHg1OSwgMHhmNywgMHhhZCwgMHhmNywgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGFkLCAweGY3LCAweDM3LCAweGY3LCAweGQxLCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NGQsIDB4M2EsIDB4ODksIDB4NiwgMHgxMywgMHhhZSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDVlLCAweGIxLCAweDM3LCAweDFiLCAweGZiLCAweDQ4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYiwgMHgyNiwgMHhmYiwgMHg3MSwgMHhmYiwgMHg3YywgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMxLCAweGY3LCAweDU1LCAweGMwLCAweGRiLCAweDk5LCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4MWYsIDB4MTMsIDB4NmUsIDB4ZmIsIDB4ZDYsIDB4ZjcsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgyMSwgMHhhZiwgMHhlZSwgMHhmNywgMHg4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjMCwgMHgzYywgMHhmYiwgMHgzNSwgMHgxZSwgMHgxMywgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDViLCAweDNkLCAweDRjLCAweDJlLCAweDI5LCAweDVmLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTYsIDB4MWUsIDB4ZSwgMHhmYywgMHgxNSwgMHhmOCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweGE1LCAweDc3LCAweDEyLCAweGQwLCAweGY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZDAsIDB4ZjgsIDB4NWEsIDB4MTUsIDB4ZjcsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg2LCAweDEzLCAweGUwLCAweDRkLCAweDYsIDB4OGQsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg5YSwgMHhhMywgMHg5MywgMHg3MiwgMHhjMCwgMHgxOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NjIsIDB4OGIsIDB4MzUsIDB4NTEsIDB4MWEsIDB4ZSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweDY2LCAweDc2LCAweGY3LCAweGE1LCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4ZjcsIDB4MTUsIDB4NDgsIDB4Y2UsIDB4MTMsIDB4ZTAsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1MSwgMHgxNSwgMHhmNywgMHg3LCAweDQ1LCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmYiwgMHgxMywgMHg3LCAweDEzLCAweGQwLCAweGM5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg0MiwgMHg1YywgMHg3ZiwgMHg3MywgMHg4MywgMHg4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNywgMHhmOCwgMHg1YSwgMHhmNywgMHgxMCwgMHhmNywgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweGNiLCAweGQxLCAweDQ1LCAweGY3LCAweDFhLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4NDYsIDB4ZjcsIDB4MWEsIDB4MTMsIDB4ZDgsIDB4Y2IsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHgxNSwgMHhmNywgMHgxYSwgMHhmNywgMHgxMCwgMHg2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4NGIsIDB4NiwgMHg4ZCwgMHhkNCwgMHhiYywgMHg5YSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDcxLCAweGMwLCAweDE4LCAweGZiLCAweGMsIDB4NjIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHg1MiwgMHgxYSwgMHhmNywgMHg3NiwgMHgzMywgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDEwLCAweDYsIDB4MTMsIDB4ZTQsIDB4NGEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGQ0LCAweGJjLCAweDlhLCAweGE1LCAweDkzLCAweDcwLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZmIsIDB4YiwgMHg2MiwgMHg4YiwgMHgzNCwgMHg1MiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4MzcsIDB4ZjgsIDB4NjYsIDB4NzYsIDB4ZjcsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMywgMHgxLCAweGQ3LCAweGY3LCAweDFhLCAweGU3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4MywgMHhmNywgMHhkMCwgMHhmOCwgMHg1MSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4NDUsIDB4YSwgMHhmYiwgMHgxYSwgMHhmYiwgMHgxMywgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4OTgsIDB4YSwgMHg3MiwgMHg4MywgMHg4LCAweGZiLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4MTUsIDB4ZjcsIDB4YiwgMHg0NSwgMHhhLCAweGZiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTMsIDB4Y2MsIDB4NywgMHg5OCwgMHhhLCAweDcxLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhlLCAweGZiLCAweGNkLCAweGY3LCAweDZiLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4NzcsIDB4MSwgMHg5NSwgMHhmNywgMHhkZSwgMHgzLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZmIsIDB4MTUsIDB4MzAsIDB4ZDUsIDB4NDEsIDB4ZTUsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhkNCwgMHhlNywgMHhlOCwgMHg0MCwgMHhkMywgMHgzMCwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDQyLCAweDJmLCAweDFlLCAweGUsIDB4MjAsIDB4ZjcsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHgxLCAweGY3LCAweDc3LCAweDQsIDB4ZjgsIDB4YzAsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhjMCwgMHg2LCAweGUsIDB4ZjcsIDB4ZTUsIDB4ZjcsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHgxLCAweGY3LCAweDc3LCAweDQsIDB4ZmEsIDB4N2MsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZSwgMHg3YywgMHg2LCAweGUsIDB4ZjgsIDB4ZjgsIDB4ZjcsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg3NiwgMHhiNywgMHhkZSwgMHg4YSwgMHg3NywgMHgxMiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDdhLCAweGY4LCAweGY2LCAweDE1LCAweGNmLCAweDY1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhhZiwgMHgxYiwgMHhhYiwgMHhhNiwgMHg4MSwgMHg4MCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweDgwLCAweDgxLCAweGE2LCAweGE1LCAweDgwLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZTksIDB4OGIsIDB4ZWUsIDB4YTUsIDB4MWYsIDB4NDYsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDZkLCAweDY2LCAweDFiLCAweDdmLCAweDcxLCAweDk1LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MWYsIDB4MTMsIDB4NTAsIDB4OTYsIDB4NmQsIDB4NjksIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgxYiwgMHg0NCwgMHg3MSwgMHg1OSwgMHgzZiwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTUsIDB4ZjcsIDB4ZGIsIDB4NzYsIDB4ZjcsIDB4ZTcsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDViLCAweGUzLCAweGY3LCAweDU0LCAweGRmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4ZGUsIDB4MywgMHhmNywgMHg1YiwgMHhmNywgMHhjNiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGY3LCAweGU3LCAweGY3LCAweDJiLCAweGQ0LCAweGZjLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4ZjcsIDB4MmYsIDB4NiwgMHhmNywgMHhhYywgMHhmYiwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGRmLCAweGY3LCAweGRjLCAweDhkLCAweDYsIDB4ZjcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGRjLCAweDUsIDB4ZGEsIDB4NiwgMHhmNywgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4NSwgMHg4ZSwgMHhmYiwgMHhkYywgMHhkZSwgMHhmOCwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFlLCAweDYsIDB4MjgsIDB4ZmIsIDB4YWYsIDB4NmUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGY3LCAweGFmLCAweDUsIDB4ODEsIDB4YSwgMHgyMCwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweGY4LCAweGExLCAweGY3LCAweDIxLCAweDEsIDB4YmMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg1ZiwgMHhmNywgMHgxZSwgMHgzLCAweGE5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4MTUsIDB4ZmIsIDB4MWMsIDB4OWUsIDB4ZjcsIDB4MzMsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHgxYiwgMHhmNywgMHg0MCwgMHhjZCwgMHhlOCwgMHhkYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MjIsIDB4YTYsIDB4MmUsIDB4YTEsIDB4MWYsIDB4NjYsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg5OCwgMHhiNSwgMHgxYSwgMHhiNSwgMHhkMiwgMHg4YywgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGMzLCAweDg5LCAweDRlLCAweDljLCAweDFlLCAweGY3LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NSwgMHhmMiwgMHg2ZCwgMHgzZCwgMHhhZCwgMHhmYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDIsIDB4ZmIsIDB4MiwgMHg2MywgMHhmYiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZiwgMHhmMiwgMHg3NSwgMHhmNywgMHgzMywgMHg2OSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDg0LCAweGIxLCAweDdmLCAweDZkLCAweDFhLCAweDUzLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4N2YsIDB4NWUsIDB4NTgsIDB4OTksIDB4ZDAsIDB4N2EsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhmOCwgMHg0ZSwgMHgxNSwgMHhmNywgMHgxNCwgMHg2LCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjEsIDB4NSwgMHg3YywgMHhhLCAweDU2LCAweDQyLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4NSwgMHhmYiwgMHgzLCAweDYsIDB4ZSwgMHg1ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4ZDcsIDB4MTUsIDB4Y2YsIDB4NiwgMHhlZSwgMHhmNywgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweGY3LCAweDYxLCAweDUsIDB4NDcsIDB4NiwgMHhkYywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDUsIDB4ZSwgMHhmNywgMHhhZCwgMHg3ZCwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MCwgMHhmNywgMHg4LCAweGY3LCAweGYsIDB4ZTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGY3LCAweDgsIDB4MjQsIDB4ZjIsIDB4MTIsIDB4YWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhmNywgMHg4YiwgMHhmNywgMHgxZiwgMHgxMywgMHhiNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGM3LCAweDE1LCAweDQxLCAweGQ0LCAweGUzLCAweDhiLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZTQsIDB4ZjcsIDB4MywgMHhiMSwgMHhmNywgMHgxMCwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZiLCAweDFjLCAweGEyLCAweDUsIDB4NmYsIDB4ODEsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg0OSwgMHgxYiwgMHg0YiwgMHg2YSwgMHhiYiwgMHhkZSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweGYwLCAweDYsIDB4ZjcsIDB4ODIsIDB4MjksIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOCwgMHhmYiwgMHgwLCAweDU3LCAweDUyLCAweDdhLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZDAsIDB4NDYsIDB4MzUsIDB4OTAsIDB4NmMsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHgzNiwgMHhmYiwgMHgxOCwgMHhmYiwgMHgyNCwgMHhmYiwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweGZiLCAweDI0LCAweGY3LCAweDQ1LCAweGVmLCAweGM1LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4YTYsIDB4MWYsIDB4ZmIsIDB4Y2EsIDB4ZjcsIDB4NjYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjLCAweGMwLCAweGIzLCAweGQzLCAweGNlLCAweGMyLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4MWUsIDB4MTMsIDB4NmUsIDB4ZmIsIDB4MmMsIDB4MmUsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgyYywgMHg2ZCwgMHhmNywgMHg4LCAweGJmLCAweDFlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4YjcsIDB4MTUsIDB4YTYsIDB4OGQsIDB4OTEsIDB4ZjEsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmMCwgMHg5NCwgMHhmYiwgMHgwLCAweDc2LCAweDhjLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4ZiwgMHhhMCwgMHg3NiwgMHhmOSwgMHhiMiwgMHhmNywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4NDUsIDB4ZjcsIDB4NSwgMHg3MiwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGY3LCAweDUsIDB4MTMsIDB4ZDAsIDB4NzAsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDRmLCAweGEsIDB4ZmMsIDB4MzIsIDB4NSwgMHgxMywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweGY4LCAweDg1LCAweDhiLCAweGEsIDB4ZjcsIDB4NWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDhiLCAweGEsIDB4ZSwgMHhmYiwgMHgzOSwgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGY3LCAweDFkLCAweDEyLCAweGU1LCAweGY3LCAweDJlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4ZjcsIDB4MjIsIDB4MTMsIDB4ZDAsIDB4ZWIsIDB4ZjgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgyMiwgMHhmNywgMHgxZCwgMHhmYiwgMHgyMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZTAsIDB4ODUsIDB4ZmMsIDB4YmEsIDB4MTUsIDB4ZmIsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZSwgMHhmNywgMHgzYywgMHg3LCAweDY1LCAweGY4LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDM4LCAweDYsIDB4ZSwgMHgyMCwgMHgyYSwgMHg3NiwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEsIDB4ZjcsIDB4Y2YsIDB4ZjUsIDB4ZjcsIDB4NCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YWQsIDB4ZjcsIDB4MWEsIDB4MywgMHhmNywgMHg0MiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDZjLCAweDIxLCAweGM2LCAweDdhLCAweGFiLCAweGY3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDg5LCAweDk0LCAweDliLCAweDg5LCAweGE0LCAweDFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZGIsIDB4YzgsIDB4ZjcsIDB4ZSwgMHhhNywgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGEyLCAweDUsIDB4NmUsIDB4ODYsIDB4NzcsIDB4NDcsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3ZiwgMHg4YSwgMHg4YywgMHg4YywgMHg4NywgMHgxZiwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI0LCAweDlkLCAweDc4LCAweDkwLCAweDc0LCAweDhkLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZjcsIDB4MWIsIDB4YTIsIDB4NzAsIDB4ZTgsIDB4NTgsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg5ZCwgMHgxOSwgMHhiMiwgMHhmNywgMHg0LCAweDRmLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4ZmIsIDB4NywgMHg1LCAweDhjLCAweDgxLCAweDdkLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4MWIsIDB4ZmIsIDB4NjIsIDB4NWQsIDB4ZmIsIDB4MzUsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhiNywgMHhmYiwgMHgyNSwgMHhlYiwgMHg3NSwgMHgxZiwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4MTUsIDB4NjcsIDB4YjQsIDB4ODMsIDB4Y2UsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhYiwgMHg5MiwgMHhmNywgMHgxYywgMHhmNywgMHgxMSwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4MjAsIDB4N2IsIDB4ZjcsIDB4ZiwgMHhmNywgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEsIDB4ZjcsIDB4NjIsIDB4ZjcsIDB4MCwgMHgxLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTQsIDB4MywgMHhkOSwgMHg3YiwgMHgxNSwgMHg5YiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGE1LCAweGMzLCAweDFiLCAweGFiLCAweGI4LCAweDgyLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4MWYsIDB4ODAsIDB4YjksIDB4YjQsIDB4N2YsIDB4OTcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhiZCwgMHg5ZCwgMHg5YywgMHhhYSwgMHgxZiwgMHg1OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NSwgMHg4MSwgMHg3NCwgMHg2NywgMHg3YSwgMHg2NiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDc5LCAweDkyLCAweDkyLCAweDc1LCAweDFmLCAweDkxLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4OTEsIDB4NjcsIDB4MWIsIDB4ODMsIDB4NmMsIDB4OGIsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHgxZiwgMHg4OSwgMHg4ZCwgMHhiMSwgMHhiNCwgMHhiNCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweGRlLCAweDE5LCAweGY3LCAweDExLCAweGY3LCAweDEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg2LCAweDgyLCAweGE0LCAweDdkLCAweGMyLCAweGFlLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4YTUsIDB4YmYsIDB4YzgsIDB4ZDQsIDB4OTgsIDB4NDIsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgxZSwgMHhmNywgMHgxMywgMHg5ZSwgMHg1LCAweGY3LCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4ZmIsIDB4MWIsIDB4OWEsIDB4NTAsIDB4MWIsIDB4ZmIsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHgyZSwgMHgyMiwgMHg3ZSwgMHg4YywgMHg1YSwgMHg5ZCwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDQyLCAweGZiLCAweDEsIDB4ZWMsIDB4NiwgMHg5OCwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDQ1LCAweDRkLCAweDVkLCAweDgsIDB4ZSwgMHgyMCwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGI1LCAweGY3LCAweDE2LCAweGY3LCAweDZjLCAweGY3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NzcsIDB4MSwgMHhiMiwgMHhmNywgMHgxNywgMHhmNywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweDMsIDB4ZTYsIDB4ZDgsIDB4MTUsIDB4ZDIsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDc4LCAweGFlLCAweGIzLCAweDgwLCAweGI0LCAweDFiLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4OTcsIDB4OWUsIDB4YWEsIDB4MWYsIDB4ZDUsIDB4NDIsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHg0MywgMHhkMywgMHg1LCAweDllLCAweGFlLCAweDk3LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MWEsIDB4YWIsIDB4ODMsIDB4YjUsIDB4NzQsIDB4YjYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHhkMywgMHgzMCwgMHhlNiwgMHg0MiwgMHg0MiwgMHg1LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NjYsIDB4YTAsIDB4NGUsIDB4MWIsIDB4NGUsIDB4NjMsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3YSwgMHgxZiwgMHg0MiwgMHhkNCwgMHgzMSwgMHgyYiwgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDUsIDB4NzgsIDB4NjgsIDB4ODEsIDB4NjQsIDB4NjIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg4ZiwgMHg2MCwgMHhhNiwgMHg1YiwgMHgxZSwgMHg0NCwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4M2YsIDB4ZjcsIDB4NGYsIDB4MTUsIDB4YzcsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhjNywgMHhjNywgMHhiZCwgMHg1YiwgMHg0ZiwgMHg0ZiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDRmLCAweDRmLCAweDViLCAweGJiLCAweGM3LCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHhhMCwgMHg3NiwgMHhmOSwgMHg0ZSwgMHg3NywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4ZjcsIDB4MjMsIDB4MywgMHg5YiwgMHhmNywgMHgyYSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUxLCAweGZiLCAweDJhLCAweGY3LCAweDIzLCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTQsIDB4ZjUsIDB4ZmIsIDB4NTQsIDB4ZDAsIDB4ZjcsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHhmYiwgMHhhLCAweDYsIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhhLCAweGZiLCAweDE2LCAweGZiLCAweGEwLCAweDZlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNCwgMHhmNywgMHhhMCwgMHg5NiwgMHhhLCAweGY3LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OWYsIDB4NSwgMHhmYiwgMHg5LCAweDIxLCAweGY3LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4ZmIsIDB4NTEsIDB4NiwgMHhlLCAweGZjLCAweDEzLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjksIDB4ODgsIDB4NzcsIDB4MSwgMHhkZiwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhkZiwgMHg3OCwgMHgxNSwgMHhmNywgMHg0LCAweGY3LCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YSwgMHhmNywgMHgxYiwgMHg0LCAweGY3LCAweDQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHg3YywgMHhhLCAweGUsIDB4MjAsIDB4ZmIsIDB4NGMsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg1NywgMHhmMSwgMHgxMiwgMHhhZCwgMHhmNywgMHgxMCwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFjLCAweGY3LCAweDI3LCAweGY3LCAweDFhLCAweDMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxMywgMHhlOCwgMHhjOCwgMHg3ZiwgMHgxNSwgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4ZTYsIDB4NTIsIDB4ZjcsIDB4OCwgMHgxYiwgMHhmNywgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGUzLCAweGQ3LCAweGFmLCAweDdlLCAweGI3LCAweDVlLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4ZDQsIDB4YTksIDB4OWUsIDB4YzUsIDB4YjcsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhkMCwgMHg2NywgMHhjMCwgMHgyMywgMHhjZCwgMHgxZSwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGZiLCAweGIsIDB4Y2IsIDB4YmEsIDB4MWEsIDB4OWYsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhiYiwgMHhiYSwgMHhhYSwgMHg3MSwgMHg1ZCwgMHg4ZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE5LCAweDlhLCAweDUsIDB4YzUsIDB4ODMsIDB4NjAsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNiwgMHgxYiwgMHhmYiwgMHhlLCAweDQzLCAweDQ5LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4YWQsIDB4NjcsIDB4OTksIDB4N2MsIDB4MWYsIDB4MTMsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg2MSwgMHg3OSwgMHg0OCwgMHg2MCwgMHgxYSwgMHgyNCwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGY3LCAweDFlLCAweDM2LCAweDFlLCAweGJkLCAweDZjLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NTksIDB4MWEsIDB4NjUsIDB4NjMsIDB4N2EsIDB4NjksIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhiOCwgMHhiMywgMHg4MywgMHgxZSwgMHhmNywgMHgzYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDE1LCAweGZiLCAweDFmLCAweGU3LCAweDUsIDB4NjEsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhhOCwgMHhhYywgMHgxYSwgMHhhZiwgMHhhOSwgMHhhMywgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDFlLCAweGY3LCAweDE4LCAweDJkLCAweDUsIDB4MTMsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHg2YSwgMHhhNiwgMHg3OCwgMHg2YiwgMHgxYSwgMHg3MiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDcyLCAweDc0LCAweDFlLCAweGUsIDB4ZjgsIDB4ZmEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDEsIDB4OTEsIDB4ZjcsIDB4NywgMHhlNiwgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg5MSwgMHg0NCwgMHhhLCAweGUsIDB4ZDUsIDB4NzgsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhkMiwgMHhmNywgMHhhYiwgMHhkMiwgMHhlOCwgMHhkNiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4ZDYsIDB4ZjcsIDB4YiwgMHhlMiwgMHhmOCwgMHgyOCwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4Y2IsIDB4ZjcsIDB4ZmIsIDB4MTUsIDB4ZjcsIDB4M2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHgxYiwgMHhmNywgMHgzZCwgMHg1OCwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4ZmIsIDB4MWQsIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4M2MsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyMiwgMHg1MywgMHgxNSwgMHg3NiwgMHg4NCwgMHg3OCwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDFiLCAweDVlLCAweDU4LCAweGFkLCAweGY1LCAweGJkLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4ZTQsIDB4YzksIDB4OWUsIDB4NWIsIDB4NzcsIDB4OTIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHg5ZSwgMHg1LCAweGFmLCAweDdlLCAweDY2LCAweGRmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxYiwgMHhmYiwgMHgxMCwgMHg0OSwgMHgzNiwgMHhmYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJmLCAweGViLCAweDUzLCAweGUyLCAweGNjLCAweGRjLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4YTgsIDB4MWYsIDB4ZmMsIDB4YmMsIDB4ZGUsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhmNywgMHgzZSwgMHhmYiwgMHgzZCwgMHhmNywgMHg2NywgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NjcsIDB4ODAsIDB4YSwgMHhmYiwgMHhiOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweGU3LCAweGY3LCAweGE1LCAweGViLCAweDEsIDB4YTEsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweGVkLCAweDMsIDB4ZjcsIDB4OTMsIDB4ZjcsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlNywgMHg2LCAweDdjLCAweGFmLCAweDhiLCAweGEwLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4MjcsIDB4NywgMHhmMCwgMHg4YiwgMHhkNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweDNhLCAweDVhLCAweDZiLCAweDJmLCAweDdhLCAweDFlLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NSwgMHg4YywgMHg4ZCwgMHg4ZiwgMHg4YywgMHg4ZSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDkzLCAweDkzLCAweDlkLCAweGIxLCAweDFiLCAweGJhLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NWEsIDB4OGQsIDB4MWYsIDB4NzgsIDB4ODMsIDB4NzMsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg4NiwgMHg4LCAweDM1LCAweDc0LCAweDRhLCAweDdmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgxYSwgMHg0MSwgMHhiNSwgMHg0ZCwgMHhkNiwgMHhjMSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDllLCAweDlhLCAweDFlLCAweDhkLCAweDgwLCAweDhlLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4N2IsIDB4OCwgMHg3NiwgMHhmNywgMHg2MiwgMHgxNSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4MzAsIDB4NWEsIDB4ODIsIDB4N2MsIDB4NjksIDB4N2QsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhiMywgMHhhYSwgMHg5YSwgMHhiZCwgMHg5NywgMHgxZSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDhmLCAweDhmLCAweDkyLCAweDkwLCAweDgsIDB4ZSwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGEsIDB4ZjgsIDB4MTAsIDB4ZDcsIDB4NTMsIDB4YSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY0LCAweDUzLCAweGEsIDB4ZSwgMHgzYywgMHhmNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDEsIDB4ZjgsIDB4MjAsIDB4ZjcsIDB4MTMsIDB4MywgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGM2LCAweDE1LCAweGY3LCAweGY5LCAweGZiLCAweDVhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjcsIDB4Y2IsIDB4ZmMsIDB4NzgsIDB4NiwgMHhlLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTksIDB4ZjcsIDB4NCwgMHgxLCAweGIzLCAweGY3LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjgsIDB4OGMsIDB4ZjcsIDB4NCwgMHhmYywgMHg4YywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhkNSwgMHg3OCwgMHhkNiwgMHhmNywgMHg5ZSwgMHhjYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4Y2IsIDB4ZjMsIDB4ZDYsIDB4MSwgMHg4MCwgMHhkNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGRjLCAweGY3LCAweDMyLCAweGUyLCAweGY3LCAweDJhLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg1OSwgMHhmNywgMHgzMSwgMHgxNSwgMHhkYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGFiLCAweDYsIDB4YjQsIDB4OWUsIDB4ODUsIDB4MmUsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhNywgMHg0OSwgMHg1LCAweGYwLCAweDYsIDB4NWMsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHhjNywgMHg3ZiwgMHg5ZiwgMHg2NiwgMHg5OSwgMHgxOSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZGQsIDB4OTYsIDB4YTUsIDB4YzMsIDB4YjgsIDB4MWEsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHg5NiwgMHhmYiwgMHgxMywgMHgxZSwgMHg3YywgMHhhLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDEsIDB4MTUsIDB4ZjcsIDB4MSwgMHhhYywgMHg3LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4OGIsIDB4NTYsIDB4NTMsIDB4NTcsIDB4OGIsIDB4NDIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4YiwgMHg3MSwgMHgxNSwgMHhmNywgMHgzYywgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFiLCAweGY3LCAweDNjLCAweDU4LCAweGEsIDB4ZmIsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZCwgMHhmNywgMHgxYiwgMHhmNywgMHgzYywgMHgxZSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGZiLCAweDY1LCAweGY3LCAweDNlLCAweGZiLCAweDNkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NTcsIDB4YSwgMHhmYiwgMHg2NiwgMHg4MCwgMHhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4ZDUsIDB4MSwgMHg4NSwgMHhmNywgMHhlZCwgMHgzLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZjAsIDB4MTUsIDB4ZjcsIDB4ZWQsIDB4ZDUsIDB4ZmIsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZmIsIDB4OWIsIDB4ZjgsIDB4M2UsIDB4ZDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhkNiwgMHgxLCAweGM0LCAweGQ1LCAweGY3LCAweDFlLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjNCwgMHhmOCwgMHhjZiwgMHgxNSwgMHgzYiwgMHhjYSwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGRhLCAweGNjLCAweGNjLCAweGRiLCAweGRiLCAweDRhLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4M2MsIDB4NGMsIDB4NGUsIDB4M2IsIDB4MWUsIDB4ZDUsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhiMSwgMHhhYSwgMHhhOCwgMHhiMSwgMHhiMSwgMHhhYSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDY1LCAweDZjLCAweDZjLCAweDY1LCAweDY1LCAweDZjLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4MWUsIDB4ZSwgMHgzYywgMHg4YiwgMHhlNiwgMHhmNywgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYsIDB4ZjcsIDB4MTMsIDB4OTAsIDB4YSwgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGU2LCAweGZjLCAweDhjLCAweDYsIDB4ZjcsIDB4NTAsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgxMywgMHhmNywgMHgxNiwgMHhmNywgMHg1MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4NTEsIDB4ZjcsIDB4MTMsIDB4ZmIsIDB4MTMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmYiwgMHg1MCwgMHhmYiwgMHg2LCAweGY3LCAweDUwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweGFmLCAweGRjLCAweGY3LCAweDlkLCAweGRjLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3NiwgMHhlZCwgMHgzLCAweDk0LCAweGY3LCAweGFmLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4Y2YsIDB4ZGMsIDB4ZmIsIDB4NDYsIDB4NiwgMHhmNywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4YzgsIDB4YmMsIDB4ZGMsIDB4MWEsIDB4YmQsIDB4NjQsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0LCAweGZiLCAweDIxLCAweDgzLCAweDI3LCAweDY3LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZWQsIDB4ODIsIDB4NSwgMHhhNywgMHg4ZCwgMHg5MCwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDFiLCAweDkyLCAweGI5LCAweDhiLCAweDVkLCAweDY3LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NGIsIDB4NTQsIDB4MWYsIDB4MjgsIDB4MzYsIDB4NmQsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHgxYSwgMHhlLCAweGY3LCAweGEzLCAweGRkLCAweGY3LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4MSwgMHhmNywgMHg2MSwgMHhlZSwgMHgzLCAweDkzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4MTUsIDB4ZmIsIDB4ZiwgMHg5YSwgMHhmNywgMHgyLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MWIsIDB4ZTksIDB4Y2UsIDB4Y2EsIDB4ZDYsIDB4YmQsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg1ZSwgMHg5ZCwgMHgxZiwgMHhhZCwgMHhhMSwgMHg5YiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDFhLCAweGM4LCAweDUzLCAweGM1LCAweDM0LCAweGZiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHgzNywgMHg2MywgMHg4MiwgMHgxZSwgMHhlYSwgMHg3ZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4OGQsIDB4OGYsIDB4YWUsIDB4YjksIDB4MWIsIDB4OWUsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg2ZSwgMHg1YywgMHg1MCwgMHg4YywgMHg3ZCwgMHgxZiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDUsIDB4YjgsIDB4OWYsIDB4YzUsIDB4NzksIDB4NTQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg3YSwgMHg2ZiwgMHg2MiwgMHg1NywgMHg4NywgMHhiNSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDFlLCAweGUsIDB4ZjgsIDB4ZjAsIDB4ODQsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZjgsIDB4ZjAsIDB4MTUsIDB4ZWQsIDB4NiwgMHhmNywgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweGEsIDB4ZmIsIDB4NDAsIDB4NiwgMHhlLCAweDU3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4NzYsIDB4ZjcsIDB4NTMsIDB4ZjcsIDB4NSwgMHgyNywgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDQ3LCAweDc3LCAweDQ5LCAweGEsIDB4MTMsIDB4ZGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhjOSwgMHgxNSwgMHg4ZCwgMHg2LCAweDY4LCAweDljLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4Y2IsIDB4MWIsIDB4YmMsIDB4YjEsIDB4YWYsIDB4YjUsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4ZCwgMHg2LCAweDEzLCAweGJjLCAweDRhLCAweGY3LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YWIsIDB4ZmIsIDB4MWYsIDB4ZmIsIDB4ODcsIDB4NywgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweGZiLCAweDcsIDB4MmMsIDB4MmMsIDB4ODQsIDB4ZjcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDFlLCAweGY3LCAweDg1LCAweGZiLCAweDFmLCAweGZkLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4NywgMHhlLCAweDIwLCAweGZiLCAweDNlLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4OTIsIDB4ZjcsIDB4MTEsIDB4MSwgMHhmOCwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgzLCAweGY3LCAweDRhLCAweGZiLCAweDUzLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmOSwgMHg5MiwgMHhkNCwgMHhmZCwgMHg5MiwgMHhmNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4OTIsIDB4YzIsIDB4ZjcsIDB4MTEsIDB4ZmIsIDB4YjQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJlLCAweDIyLCAweDVmLCAweGZiLCAweDJkLCAweDVhLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjcsIDB4ZjcsIDB4M2MsIDB4MWYsIDB4ZSwgMHhmYywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQwLCAweGY3LCAweDM2LCAweDEsIDB4ZjcsIDB4OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDMsIDB4YzUsIDB4ZjcsIDB4NDAsIDB4MTUsIDB4ZjcsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNiwgMHhmYiwgMHgzNiwgMHg2LCAweGUsIDB4ZmIsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhlZSwgMHhjNywgMHgxLCAweGM2LCAweDdjLCAweDE1LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NSwgMHg5MCwgMHg5OSwgMHhhMywgMHg5MCwgMHg5ZiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDk0LCAweDZlLCAweDc5LCAweDY5LCAweDZlLCAweDc5LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NzEsIDB4OGUsIDB4OGYsIDB4NzYsIDB4MWYsIDB4NDgsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGExLCAweGI3LCAweDg5LCAweDllLCAweDFiLCAweGQ1LCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4ZTUsIDB4ZDIsIDB4NTcsIDB4YWQsIDB4NGYsIDB4N2EsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg4MSwgMHg3NCwgMHgxZiwgMHhlLCAweGY3LCAweGM0LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4M2YsIDB4NzcsIDB4MSwgMHhmNywgMHgxZSwgMHhlZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWUsIDB4ZjcsIDB4YWYsIDB4MTUsIDB4ZWUsIDB4ZjgsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHg2LCAweDZmLCAweDQyLCAweDMxLCAweDZmLCAweDdlLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgzNCwgMHg3LCAweGE1LCAweDkyLCAweGE1LCAweDkwLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4OCwgMHhlLCAweGZiLCAweGJlLCAweGY3LCAweGE4LCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTIsIDB4ZjEsIDB4MSwgMHg5MSwgMHhmNywgMHgwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4MCwgMHgzLCAweDkxLCAweGY4LCAweDk0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWEsIDB4YzcsIDB4MjUsIDB4ZjcsIDB4NywgMHhmNywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4ZjAsIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4MTIsIDB4NTEsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkLCAweGZiLCAweDYsIDB4NGUsIDB4MzAsIDB4ZmIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmNywgMHgwLCAweDE2LCAweGJiLCAweDkzLCAweGQ2LCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4OTcsIDB4NGYsIDB4NGMsIDB4NTQsIDB4ODAsIDB4M2YsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHg4MiwgMHhkYSwgMHhiZiwgMHgxZSwgMHhlLCAweDIwLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlMywgMHhkNywgMHg1MCwgMHhhLCAweGNiLCAweGZiLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4YSwgMHhlLCAweGY3LCAweDNmLCAweDhkLCAweDc2LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZDAsIDB4Y2YsIDB4ZjgsIDB4ZGMsIDB4NzcsIDB4YTAsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhhNSwgMHhmNywgMHg1NywgMHhmOCwgMHgyYywgMHhlMSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGY4LCAweDViLCAweGM0LCAweDE1LCAweGY3LCAweDQyLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4ZDAsIDB4YmUsIDB4Y2YsIDB4NTgsIDB4ZjcsIDB4NzEsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDRjLCAweGZiLCAweDcyLCAweDUsIDB4ZTEsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlMSwgMHhmNiwgMHg1LCAweDhkLCAweDIwLCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhmYywgMHg3NywgMHhmYiwgMHgyNCwgMHgxNSwgMHhkNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzgsIDB4ZjksIDB4NmQsIDB4NSwgMHgzZiwgMHg2LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZmIsIDB4ZmEsIDB4MTUsIDB4ZTYsIDB4NiwgMHgxMywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGY5LCAweDQxLCAweDcsIDB4NzIsIDB4NGUsIDB4MzcsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4OCwgMHg4LCAweDQyLCAweDcsIDB4OGYsIDB4OGMsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4ZCwgMHg4YywgMHg5NiwgMHg4ZSwgMHhhZSwgMHg5NCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDgsIDB4ZSwgMHhmNywgMHgzZiwgMHg3ZCwgMHhkNiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDhhLCAweGY3LCAweGIsIDB4ZjgsIDB4MCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGE1LCAweGY3LCAweDViLCAweGY4LCAweDcxLCAweGU3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ZjcsIDB4MjksIDB4NzgsIDB4MTUsIDB4ZDgsIDB4NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGY5LCAweDZkLCAweDUsIDB4M2UsIDB4NiwgMHhmYywgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGZiLCAweDE1LCAweGU4LCAweGY3LCAweGY4LCAweDQwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg0ZSwgMHgzNSwgMHg3NiwgMHg3ZiwgMHg4OCwgMHg4LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhhMywgMHg5MSwgMHhhNCwgMHg5MCwgMHhjNCwgMHhhZSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmMsIDB4ZjgsIDB4MCwgMHhmYywgMHhmNSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGQ2LCAweGZiLCAweDJlLCAweDYsIDB4OTQsIDB4OTQsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg5NCwgMHg5MCwgMHg4LCAweGY1LCAweGQ0LCAweGEzLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4MWEsIDB4YjUsIDB4NjksIDB4Y2QsIDB4MjEsIDB4ZmIsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgzNywgMHg2YywgMHg4NywgMHgxZSwgMHhlNywgMHg4NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4OGQsIDB4OTAsIDB4YTksIDB4YjgsIDB4MWIsIDB4OTIsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg2NCwgMHg2ZCwgMHg3MywgMHg3YiwgMHg0ZiwgMHg1ZSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDQxLCAweDc1LCAweDZjLCAweDgzLCAweDUzLCAweDgsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNmLCAweDhkLCAweDc2LCAweGE1LCAweDc2LCAweGQwLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzEsIDB4Y2YsIDB4ZjcsIDB4NzksIDB4Y2YsIDB4OGMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHg1YywgMHhlOCwgMHhmOCwgMHgyLCAweGUyLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ZjgsIDB4NzUsIDB4YzIsIDB4MTUsIDB4ZjcsIDB4NDYsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHhkMCwgMHhjMCwgMHhjZiwgMHg1NiwgMHhmNywgMHg3MSwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4NTAsIDB4ZmIsIDB4NzIsIDB4NSwgMHhlMywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGUzLCAweGY2LCAweDUsIDB4OGQsIDB4MjAsIDB4NiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGZjLCAweDc3LCAweGZiLCAweDIyLCAweDE1LCAweGQ5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0MiwgMHhmOSwgMHg2ZCwgMHg1LCAweDNkLCAweDYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHhmYiwgMHg5NCwgMHgxNSwgMHgyNSwgMHg5OSwgMHhmMiwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDFiLCAweGUzLCAweGNhLCAweGJmLCAweGNhLCAweGI0LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4NjAsIDB4OWEsIDB4MWYsIDB4YWMsIDB4OWQsIDB4OWEsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHgxYSwgMHgxMywgMHg3YiwgMHhiZCwgMHg1NiwgMHhiYSwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUsIDB4N2MsIDB4NDUsIDB4NmEsIDB4ODMsIDB4MWUsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg1LCAweDlkLCAweDhkLCAweDhmLCAweGE4LCAweGI1LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YTIsIDB4ODYsIDB4NzMsIDB4NjQsIDB4NTQsIDB4OGEsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4MCwgMHg0NiwgMHg1LCAweDkwLCAweDllLCAweDk2LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4MWIsIDB4YWMsIDB4OWQsIDB4NzEsIDB4NzIsIDB4NzMsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2NCwgMHg1YiwgMHg4NywgMHhhZSwgMHg5YSwgMHg4OCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NTcsIDB4ZmIsIDB4NTcsIDB4ZjUsIDB4ZjgsIDB4NDgsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGMyLCAweGY3LCAweDE1LCAweGJlLCAweGY3LCAweDE5LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YiwgMHhmNywgMHhlZiwgMHgxNSwgMHg4ZSwgMHg0YiwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDRjLCAweDU3LCAweDgsIDB4MmUsIDB4M2EsIDB4NjUsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHgxYSwgMHhmYiwgMHg1LCAweGVjLCAweDJlLCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4ZGUsIDB4ZjcsIDB4NCwgMHhlZCwgMHg5MSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGMsIDB4OWMsIDB4NSwgMHgzZSwgMHg3YywgMHg1ZiwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDFiLCAweDUyLCAweDUxLCAweGFiLCAweGNjLCAweGI3LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4Y2QsIDB4YzMsIDB4MWYsIDB4ZTksIDB4ZGEsIDB4OGYsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhlYywgMHg4LCAweGZiLCAweDE5LCAweGJiLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZjcsIDB4MWQsIDB4ZmIsIDB4MTksIDB4NiwgMHhlLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkMywgMHhmNywgMHgyOCwgMHgxLCAweGY3LCAweGYyLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4MTUsIDB4ZGUsIDB4NiwgMHg0YSwgMHhmNywgMHgyOCwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NWYsIDB4ZmUsIDB4M2MsIDB4MjgsIDB4YSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZDMsIDB4ZjcsIDB4MjgsIDB4MSwgMHhmNywgMHhiNywgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDE1LCAweGRlLCAweDYsIDB4ZjcsIDB4MTMsIDB4ZjcsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhhLCAweGZiLCAweGU0LCAweGZlLCAweDNjLCAweDI4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhhLCAweGQ1LCAweDg0LCAweGEsIDB4ZjcsIDB4NjEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHgxNSwgMHhmNCwgMHg2LCAweGJlLCAweGQ0LCAweGMxLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmMywgMHg2LCAweDJiLCAweDgzLCAweGEsIDB4ZmIsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4YWYsIDB4ZmUsIDB4M2MsIDB4MjgsIDB4YSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4ZiwgMHhkZiwgMHg4YSwgMHg3NywgMHgxMiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweGY3LCAweDVlLCAweGY5LCAweGFmLCAweDE1LCAweGM2LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhYiwgMHhhYSwgMHgxYiwgMHhhNiwgMHhhMSwgMHg4MiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDFmLCAweDgwLCAweGE2LCAweGEzLCAweDdlLCAweGE2LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4OGIsIDB4ZWYsIDB4YTUsIDB4MWYsIDB4NGYsIDB4N2EsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDZiLCAweDFiLCAweDgxLCAweDc4LCAweDk1LCAweDk1LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4ZTgsIDB4OTcsIDB4NzIsIDB4NmQsIDB4OTYsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0ZCwgMHg3MSwgMHg1YSwgMHgzZCwgMHg4ZSwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGZkLCAweGFmLCAweDI4LCAweGEsIDB4MzUsIDB4YSwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4MSwgMHhmNywgMHg2MiwgMHhmOSwgMHhhZiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZjcsIDB4YywgMHg3YywgMHhhLCAweGY3LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHgxNSwgMHhmNywgMHg0LCAweGY3LCAweGMsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZjLCAweDE2LCAweGZlLCAweDI3LCAweDI4LCAweGEsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGMwLCAweGY3LCAweDU1LCAweDEsIDB4OWYsIDB4MTYsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDQ3LCAweGY4LCAweGQzLCAweDE1LCAweDU2LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4YmQsIDB4YmMsIDB4YjUsIDB4YjUsIDB4YzIsIDB4YzMsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg1OSwgMHg1OCwgMHg2MywgMHg2MiwgMHg1NCwgMHgxZSwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGE0LCAweDlkLCAweDlkLCAweGEyLCAweGExLCAweDllLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NzMsIDB4NzgsIDB4NzcsIDB4NzUsIDB4NzUsIDB4NzgsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHgxZSwgMHhlLCAweGY3LCAweGU1LCAweDhiLCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhmNywgMHgxMiwgMHhhMCwgMHhmNywgMHhlLCAweGY3LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YiwgMHgxLCAweGY4LCAweDY2LCAweGY3LCAweDFkLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgxNiwgMHhmNywgMHgyZCwgMHg2LCAweGQxLCAweGY3LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg4MSwgMHhmYiwgMHgzZCwgMHhmOCwgMHg3ZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4ZjMsIDB4ZjcsIDB4NTYsIDB4ZjcsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweGMyLCAweGY3LCAweDM1LCAweGY3LCAweGU3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYywgMHhmZSwgMHg2LCAweDVlLCAweGZjLCAweDNiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4ZDAsIDB4NSwgMHhjMCwgMHhmYiwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhjNiwgMHhmYiwgMHg3OCwgMHhjOSwgMHhlNCwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGY3LCAweDEzLCAweGY4LCAweDhlLCAweGY3LCAweDE0LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhmNywgMHgyZCwgMHhmNywgMHg2OCwgMHhlYSwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ZmIsIDB4MzUsIDB4MTUsIDB4NGYsIDB4NywgMHg4NSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDhhLCAweDhmLCAweDFiLCAweGY2LCAweGRlLCAweGIxLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4NzgsIDB4YmEsIDB4MzAsIDB4OTQsIDB4MWYsIDB4OGQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY1LCAweGNhLCAweGY3LCAweDQwLCAweGNjLCAweDlkLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjQsIDB4YjksIDB4NSwgMHgzYSwgMHg3OSwgMHg1ZCwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweDFiLCAweGZiLCAweDI2LCAweDY4LCAweGY3LCAweDExLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhiYiwgMHg4YiwgMHhmNywgMHg2NywgMHhmNywgMHg0YiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDYwLCAweDNiLCAweDlkLCAweDFmLCAweGY3LCAweDI3LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg0MCwgMHg0ZCwgMHhmYiwgMHgxYiwgMHhiNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDgzLCAweDJhLCAweGZiLCAweDRhLCAweGZiLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4N2EsIDB4ZjcsIDB4MjAsIDB4ZmIsIDB4MjQsIDB4ZjcsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4OSwgMHg3LCAweDhjLCAweDcsIDB4NzUsIDB4OGEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg3MiwgMHg4MiwgMHg3ZCwgMHg1YSwgMHgxOCwgMHg4ZiwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDkxLCAweGEyLCAweDFiLCAweGMwLCAweDk2LCAweDZmLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NTQsIDB4ODYsIDB4NjMsIDB4NmQsIDB4ODYsIDB4OGIsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHgxZiwgMHhlLCAweDMzLCAweGEsIDB4ZjcsIDB4OGEsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlMywgMHg2LCAweDQ2LCAweGY3LCAweDI4LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg2LCAweGUsIDB4MzMsIDB4YSwgMHhmNywgMHg0YywgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGUyLCAweDYsIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4MjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJlLCAweDYsIDB4ZSwgMHgzYSwgMHhhLCAweGJkLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkNywgMHhmNywgMHgyNCwgMHgzLCAweGY3LCAweDNkLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4MTUsIDB4ZjcsIDB4MywgMHg2LCAweGMwLCAweGQ0LCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4NSwgMHhmNywgMHgyLCAweDYsIDB4MjYsIDB4ODMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE0LCAweDYsIDB4ZmIsIDB4NTgsIDB4ZmUsIDB4M2MsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhhLCAweGUsIDB4M2EsIDB4YSwgMHhjMywgMHhmNywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZDcsIDB4ZjcsIDB4MjQsIDB4NTksIDB4ZjcsIDB4YSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEsIDB4MTMsIDB4ZjYsIDB4ZjcsIDB4M2UsIDB4ZjksIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhhLCAweGY3LCAweDY4LCAweGZiLCAweGIsIDB4OGUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGZhLCAweGZiLCAweGM2LCAweGZlLCAweDI3LCAweDE1LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDRjLCAweGEsIDB4ZjksIDB4YWQsIDB4ZjcsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhhLCAweGU5LCAweGY5LCAweGFkLCAweDE1LCAweGUyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg3NSwgMHhhLCAweGY3LCAweGIsIDB4NDYsIDB4YSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmEsIDB4M2MsIDB4NzcsIDB4OTQsIDB4YSwgMHhjYiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDE1LCAweGUyLCAweDYsIDB4ZjcsIDB4NDYsIDB4NzUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDQ2LCAweGEsIDB4NGMsIDB4YSwgMHhmOSwgMHhhZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDk0LCAweGEsIDB4NjYsIDB4ZjksIDB4YWYsIDB4OTUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGM4LCAweDQ1LCAweDc3LCAweGEsIDB4ZjcsIDB4MjEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFiLCAweDYsIDB4ODcsIDB4NDYsIDB4YSwgMHg0YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4YjMsIDB4ZjcsIDB4OCwgMHgxLCAweGQwLCAweDYzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg2MCwgMHg2OCwgMHhhLCAweDMxLCAweGRlLCAweDkyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2MiwgMHhmYiwgMHg4LCAweDkyLCAweGEsIDB4ZSwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGY3LCAweGQsIDB4ZjgsIDB4NzAsIDB4ODIsIDB4YSwgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI3LCAweGY3LCAweGNjLCAweGY3LCAweDJmLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhmNywgMHhkLCAweDE1LCAweGY3LCAweDRmLCAweGY3LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4ZmIsIDB4MzEsIDB4ZjcsIDB4NTEsIDB4ZjcsIDB4MCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjQsIDB4YzcsIDB4OGIsIDB4ZmIsIDB4ODYsIDB4ZmIsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg4NywgMHhmYiwgMHgwLCAweDFmLCAweGZiLCAweDk2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHgxNSwgMHhmNywgMHg5NiwgMHg2LCAweGY3LCAweDhlLCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDYsIDB4ZjcsIDB4NDIsIDB4ZjcsIDB4OWQsIDB4ZmIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweGZiLCAweDhlLCAweDFmLCAweGZiLCAweDkzLCAweGZiLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4MjcsIDB4ZDcsIDB4NiwgMHhlLCAweDY5LCAweGEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3NywgMHhmNywgMHg2MiwgMHg1YywgMHhhLCAweGY4LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NiwgMHhmNywgMHhiYiwgMHhmYywgMHg3NCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4ZjksIDB4NzQsIDB4ZmIsIDB4MWUsIDB4ZmMsIDB4N2YsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweGMxLCAweGY4LCAweDdmLCAweDUsIDB4ZmIsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweGIsIDB4YzYsIDB4MTUsIDB4Y2IsIDB4NjUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGFkLCAweDFiLCAweGFhLCAweGEyLCAweDgwLCAweDgxLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODEsIDB4YTQsIDB4YTQsIDB4ODAsIDB4YWIsIDB4MWIsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhlZiwgMHhhNSwgMHgxZiwgMHg0YSwgMHg3YSwgMHhhLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MWIsIDB4ODAsIDB4NzcsIDB4OTUsIDB4OTUsIDB4NzEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg3MSwgMHg2OSwgMHg5NiwgMHg2YSwgMHgxYiwgMHg0OCwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweDNkLCAweDhlLCAweDFmLCAweGUsIDB4NTksIDB4YSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIzLCAweDEsIDB4YzYsIDB4ZjcsIDB4MjgsIDB4ZjgsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGEsIDB4YjcsIDB4ZjcsIDB4ZjQsIDB4MjksIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDUxLCAweDIyLCAweGZiLCAweDFmLCAweGZiLCAweDJjLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NCwgMHhmNywgMHgxYiwgMHgxZSwgMHhmNywgMHg0ZCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDE1LCAweGUxLCAweDYsIDB4NDcsIDB4NjcsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDYsIDB4ZSwgMHg1ZiwgMHhhLCAweGY4LCAweDgyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZDEsIDB4ZjcsIDB4MjMsIDB4N2UsIDB4YSwgMHhmNywgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGFkLCAweDE1LCAweGUxLCAweDYsIDB4ZjcsIDB4MWEsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDJjLCAweDYsIDB4ZmIsIDB4ZTcsIDB4MzEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGZiLCAweGIsIDB4ZmIsIDB4MjIsIDB4NDEsIDB4YSwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjgsIDB4ODIsIDB4ZjcsIDB4MTAsIDB4ZDMsIDB4ZjcsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhhLCAweGY3LCAweDc0LCAweGY5LCAweGFmLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg2LCAweGMwLCAweGQxLCAweGMzLCAweDQ1LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDYsIDB4MjYsIDB4ZjcsIDB4MjEsIDB4NSwgMHhmYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4YWYsIDB4MzEsIDB4YSwgMHg0ZiwgMHhmYiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWQsIDB4NDEsIDB4YSwgMHg1OSwgMHhhLCAweGQ4LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkMSwgMHhmNywgMHgyOCwgMHhmNywgMHhmMSwgMHhmNywgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGQ2LCAweGY3LCAweDcxLCAweGY5LCAweGIyLCAweDE1LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4YSwgMHg5ZiwgMHgxZiwgMHgxMywgMHhlNiwgMHg4MCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDgwLCAweGFkLCAweDFiLCAweGUxLCAweDhiLCAweGVkLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NGMsIDB4N2EsIDB4YSwgMHg2ZSwgMHg2OSwgMHgxYiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDkzLCAweDk0LCAweDc1LCAweDFmLCAweDEzLCAweGNlLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NjcsIDB4OTgsIDB4NmMsIDB4MWIsIDB4NGEsIDB4NzAsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHg4ZSwgMHgxZiwgMHhmYiwgMHg0NSwgMHhmYywgMHg1MiwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4MmMsIDB4NGYsIDB4MmMsIDB4ZmIsIDB4MWQsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDU5LCAweGEsIDB4ZDYsIDB4ZjcsIDB4OSwgMHgxLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4ZjgsIDB4MSwgMHg4NSwgMHhhLCAweGY3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4YjIsIDB4OGQsIDB4YSwgMHhmNywgMHg2NiwgMHhmYiwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4YSwgMHhmYywgMHgxYiwgMHhmYywgMHhjNywgMHgyOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTEsIDB4NTQsIDB4ZmIsIDB4ZSwgMHhmYiwgMHgyMiwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4M2MsIDB4YTEsIDB4NzYsIDB4ZjgsIDB4OGMsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGVjLCAweDE1LCAweGU5LCAweDJjLCAweGY3LCAweDMwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZjcsIDB4MzIsIDB4ZmIsIDB4MzIsIDB4ZWIsIDB4ZWMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhmNywgMHgzMSwgMHhmNywgMHgzMCwgMHhmNywgMHgyZiwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGZiLCAweDMxLCAweGZiLCAweDMxLCAweGZiLCAweDMxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MmIsIDB4MmIsIDB4ZjcsIDB4MzIsIDB4ZmIsIDB4MzAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4NywgMHg4NSwgMHg3NiwgMHhhNiwgMHhmNywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NzQsIDB4ZjcsIDB4ZSwgMHhhMCwgMHg3NywgMHgxLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4ZjgsIDB4NywgMHhmNywgMHgyNywgMHgzLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MTUsIDB4Y2YsIDB4NTAsIDB4ZDksIDB4ZTIsIDB4NSwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGQ1LCAweDgwLCAweGNkLCAweDFiLCAweGY3LCAweDhhLCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTYsIDB4ZjcsIDB4NDMsIDB4YWIsIDB4ODksIDB4ZjcsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGUxLCAweDFmLCAweGRjLCAweGU0LCAweDQ4LCAweGM2LCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NSwgMHg5ZiwgMHg3MSwgMHg0YywgMHhiNywgMHhmYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDg4LCAweDJhLCAweGZiLCAweDQwLCAweGZiLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTgsIDB4YjEsIDB4NDQsIDB4YWIsIDB4NjAsIDB4MWYsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweDE1LCAweDdkLCAweGFkLCAweDgzLCAweGJjLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4MTIsIDB4YzYsIDB4ZjYsIDB4ZjcsIDB4MWIsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg4MCwgMHg2ZSwgMHhhZCwgMHgxZSwgMHhmYiwgMHg4NywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDE1LCAweGY3LCAweGJiLCAweGY3LCAweGRhLCAweDUsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg5NCwgMHg2NCwgMHg1NSwgMHgxYSwgMHhmYiwgMHg0NywgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweDI3LCAweDZlLCAweDYzLCAweDhlLCAweGFmLCAweDViLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1NCwgMHhhLCAweGQzLCAweGY5LCAweDVlLCAweDVlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhmYiwgMHg0OCwgMHhmNywgMHg4ZiwgMHhmNywgMHg3YSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGEsIDB4ZjcsIDB4MTgsIDB4ZDksIDB4MTUsIDB4ZTQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGY3LCAweDI0LCAweDk3LCAweGEsIDB4ZSwgMHg1NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjMsIDB4ZjksIDB4YWMsIDB4MTUsIDB4ZTMsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGY3LCAweDI0LCAweDk3LCAweGEsIDB4ZmIsIDB4YjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg1ZSwgMHhhLCAweGExLCAweGZiLCAweDQ4LCAweGY3LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4YSwgMHhjNiwgMHg3OCwgMHhmNywgMHgxMSwgMHhmOSwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIyLCAweDQyLCAweGEsIDB4ZjcsIDB4NTcsIDB4ZjksIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg0LCAweDYsIDB4YzEsIDB4ZDEsIDB4YzUsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDMsIDB4NiwgMHgyNSwgMHhmNywgMHgyMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTUsIDB4NiwgMHhmYiwgMHg3NywgMHhmYiwgMHg3MiwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YzYsIDB4NzgsIDB4ZjcsIDB4MTEsIDB4ZjksIDB4NDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDEyLCAweGQzLCAweGY3LCAweDI2LCAweDc1LCAweGY3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhmNywgMHhiLCAweDczLCAweGY3LCAweDI2LCAweDEzLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTgsIDB4ZjksIDB4YjIsIDB4OGYsIDB4YSwgMHhmNywgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDksIDB4OGYsIDB4YSwgMHgxMywgMHhlNCwgMHhmYiwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVkLCAweDM0LCAweGEsIDB4OGYsIDB4YTAsIDB4NzYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDlkLCAweGY3LCAweDFkLCAweDMsIDB4NzAsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDUsIDB4ZmIsIDB4MzIsIDB4NiwgMHhmYiwgMHgzMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGZiLCAweDM0LCAweGY3LCAweGFmLCAweDUsIDB4ZmIsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDhlLCAweGZjLCAweDMzLCAweDUsIDB4ODksIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgxNSwgMHhkZSwgMHg2LCAweGY3LCAweDE0LCAweDY3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNiwgMHg2LCAweGUsIDB4OGYsIDB4YTAsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHhlLCAweGY3LCAweDYwLCAweGY3LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3NywgMHg2MCwgMHhhLCAweGY3LCAweDFiLCAweGQxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhmMSwgMHg4YywgMHhhMywgMHhiZSwgMHgxZiwgMHhiOSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGJmLCAweGY3LCAweDEyLCAweDFhLCAweGY3LCAweDczLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4OGIsIDB4ZmIsIDB4NDksIDB4MWUsIDB4NDUsIDB4ZjcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNSwgMHg2LCAweGY3LCAweDI1LCAweGZjLCAweDYxLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjAsIDB4ZDEsIDB4NywgMHhmNCwgMHhkYywgMHg4OCwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGZiLCAweDMsIDB4OGIsIDB4NDAsIDB4MWYsIDB4ZSwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDc2LCAweGY5LCAweDExLCAweGY3LCAweDAsIDB4MSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFlLCAweGY3LCAweDdlLCAweGY3LCAweDFlLCAweDMsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHgxNSwgMHhmNywgMHgxZSwgMHhmOCwgMHg2YiwgMHg2LCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZDIsIDB4ZDYsIDB4ZTYsIDB4NjgsIDB4MzYsIDB4NGMsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3NSwgMHg1ZSwgMHg4MSwgMHg2ZCwgMHg3MiwgMHgxYSwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDZlLCAweGMzLCAweDU2LCAweDFlLCAweGNmLCAweDQ5LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NmQsIDB4MWEsIDB4NmEsIDB4NzMsIDB4NzksIDB4NzIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg5NywgMHhhNiwgMHg4MywgMHgxZSwgMHgyYiwgMHg1MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4YTgsIDB4Y2QsIDB4NmUsIDB4Y2MsIDB4MWIsIDB4ZTMsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhmNywgMHgwLCAweGMwLCAweDc2LCAweGI1LCAweDRhLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NTcsIDB4YzAsIDB4NzUsIDB4OWMsIDB4YTMsIDB4MWEsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg5ZiwgMHhhMSwgMHhiNCwgMHgxZSwgMHhmNywgMHgyLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4ZjcsIDB4MWUsIDB4ZmIsIDB4NjcsIDB4MWIsIDB4ZmIsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhmYiwgMHgzZCwgMHgyOSwgMHgxZiwgMHhlLCAweDM5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhmNywgMHgyOSwgMHg1MSwgMHhhLCAweGY3LCAweDliLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4MTUsIDB4ZTQsIDB4NiwgMHg0NSwgMHhmNywgMHgyOSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4ODksIDB4MjIsIDB4YSwgMHgzOSwgMHhhLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4NTEsIDB4YSwgMHhmNywgMHg1YiwgMHhmOCwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGU0LCAweDYsIDB4ZjcsIDB4MWUsIDB4ZjcsIDB4MjgsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGYwLCAweDIyLCAweGEsIDB4MzksIDB4YSwgMHhjNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDUxLCAweGEsIDB4ZjUsIDB4ZjgsIDB4ZWYsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDYsIDB4YzEsIDB4ZDQsIDB4YzUsIDB4NDIsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NiwgMHgyNCwgMHhmNywgMHgyNywgMHg1LCAweGZiLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgzMywgMHgyMiwgMHhhLCAweDM5LCAweGEsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMywgMHgzNywgMHhkZiwgMHg4YSwgMHg3NywgMHg2NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4Y2QsIDB4ZjcsIDB4NTIsIDB4ZjcsIDB4MWQsIDB4MTMsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhmMiwgMHhmOCwgMHhmNCwgMHgxNSwgMHhjYSwgMHg2LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OGIsIDB4YWIsIDB4YWQsIDB4MWIsIDB4YjAsIDB4YTQsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhhMywgMHgxZiwgMHgxMywgMHhiMiwgMHg4MCwgMHg4MiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDgxLCAweGE5LCAweDFiLCAweGUzLCAweDhiLCAweGYwLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NGIsIDB4NiwgMHg3ZCwgMHg4OCwgMHg4NywgMHg2ZCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDgwLCAweDc4LCAweDk0LCAweDk1LCAweDczLCAweDFmLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4ODAsIDB4OTcsIDB4NzAsIDB4NjgsIDB4OTcsIDB4NmEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg3MCwgMHg1YSwgMHgzYywgMHg4ZSwgMHgxZiwgMHhmNywgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGJiLCAweDIxLCAweGEsIDB4MTMsIDB4YjIsIDB4ODAsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDM5LCAweGEsIDB4Y2UsIDB4ZjcsIDB4YSwgMHg2NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4ZjcsIDB4ZCwgMHhlYSwgMHhmNywgMHhkLCAweDM2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MTMsIDB4NzYsIDB4ZjYsIDB4ZjgsIDB4ZjcsIDB4OGEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZjLCAweGZiLCAweGEsIDB4OGEsIDB4YSwgMHhiYSwgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDMwLCAweGEsIDB4MTMsIDB4YjksIDB4MjAsIDB4YSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzksIDB4YSwgMHhiMSwgMHhmNywgMHg1NiwgMHg1NiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGEsIDB4OWUsIDB4ZjcsIDB4NTgsIDB4NzIsIDB4ZjcsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiNiwgMHhmNywgMHg1MCwgMHhmOSwgMHgzYiwgMHgxNSwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDVmLCAweGMxLCAweGJmLCAweGI5LCAweGI1LCAweGMyLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4YjQsIDB4NTYsIDB4NTQsIDB4NjAsIDB4NjEsIDB4NTQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHgxNiwgMHgxMywgMHg2ZCwgMHhhNCwgMHg5ZiwgMHg5ZSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDlmLCAweDc5LCAweDcxLCAweDczLCAweDc3LCAweDc3LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NzYsIDB4OWYsIDB4YTMsIDB4MWUsIDB4ZjcsIDB4MTUsIDB4ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDI0LCAweGEsIDB4MTMsIDB4YjUsIDB4MjYsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDdkLCAweGY3LCAweDAsIDB4ZjcsIDB4MTcsIDB4ZTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHhmNywgMHgwLCAweDEsIDB4YTgsIDB4ZjcsIDB4MjIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhmNywgMHgyMSwgMHhmNywgMHg2YywgMHhmNywgMHgyMiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzksIDB4YzcsIDB4MTUsIDB4NTIsIDB4YzgsIDB4Y2EsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHgxYiwgMHhmNywgMHg0NywgMHhiZiwgMHhmNywgMHhjLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4MWYsIDB4ZmIsIDB4MWYsIDB4YTMsIDB4NSwgMHg3YSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDUxLCAweDQxLCAweDFiLCAweDJiLCAweDg0LCAweGYyLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4MWYsIDB4ZjcsIDB4ZmEsIDB4NiwgMHhmNCwgMHg3NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGZiLCAweDdjLCAweDRjLCAweDVhLCAweDc4LCAweDZjLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OWEsIDB4N2IsIDB4NGYsIDB4YWUsIDB4MjEsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg2MSwgMHg1OSwgMHgyNiwgMHg2YSwgMHgxZiwgMHhmNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDUsIDB4OWQsIDB4OTAsIDB4OWEsIDB4YmMsIDB4ZGEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHg4YiwgMHg1MywgMHg3NSwgMHgxZiwgMHg3ZSwgMHg3LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4NzgsIDB4ODksIDB4NTksIDB4N2QsIDB4OCwgMHgyNCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIyLCAweDg4LCAweGZiLCAweDI5LCAweDFhLCAweDQzLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4ZjcsIDB4MWEsIDB4ZjAsIDB4ZDksIDB4YjksIDB4YTcsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg0ZCwgMHhmNywgMHg1NywgMHgxNSwgMHg0MiwgMHg4YiwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDcxLCAweDFlLCAweDU2LCAweDVmLCAweDIzLCAweDkzLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YjksIDB4YjUsIDB4OTksIDB4YjgsIDB4OTcsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHhlMSwgMHgxNSwgMHg5YiwgMHg4YSwgMHg5MiwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4MWIsIDB4ZjAsIDB4OTIsIDB4MmYsIDB4NmIsIDB4OGQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDIwLCAweGZiLCAweDc4LCAweGMyLCAweGU0LCAweGY3LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YSwgMHhmNywgMHhhLCAweGY3LCAweGVjLCAweGY3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhhZCwgMHhmNywgMHgyMSwgMHhmNywgMHgyMywgMHhkZCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGY3LCAweDVhLCAweDJmLCAweDE1LCAweDkyLCAweGFhLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OTIsIDB4MWIsIDB4YzQsIDB4OTMsIDB4NmQsIDB4N2UsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHg4YiwgMHg2YywgMHg2YSwgMHg3OSwgMHg4ZSwgMHg4YywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDU2LCAweDcsIDB4ODUsIDB4YjIsIDB4OWQsIDB4OGIsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgxMSwgMHhjNSwgMHhjNywgMHhiOSwgMHhjMSwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDVmLCAweDkwLCAweDFmLCAweDEzLCAweGJjLCAweDhkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZiwgMHg5MSwgMHhhZiwgMHhmNywgMHgyYiwgMHg5NCwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFiLCAweGEzLCAweDE4LCAweDY5LCAweDg1LCAweDdlLCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4MWIsIDB4MzYsIDB4NmUsIDB4Y2QsIDB4ZjMsIDB4YWQsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMCwgMHhmNywgMHg1LCAweGRhLCAweDk5LCAweDQ3LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4MWYsIDB4ZjcsIDB4MWIsIDB4YTQsIDB4NSwgMHhkNCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGYyLCAweGZiLCAweDNhLCAweDFiLCAweGZiLCAweDVlLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2IsIDB4ZmIsIDB4ZCwgMHgzYSwgMHhhNSwgMHhmYiwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVmLCAweDdlLCAweDFmLCAweDg5LCAweDcsIDB4N2MsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg4YSwgMHg3NSwgMHg4NSwgMHg4LCAweGUsIDB4M2MsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweGY3LCAweDI4LCAweDQzLCAweGEsIDB4ZjcsIDB4OWQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHgxNSwgMHhlNiwgMHg2LCAweDQ0LCAweGY3LCAweDI4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMywgMHg2LCAweGI2LCAweGZjLCAweGEyLCAweDI1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhhLCAweGM3LCAweGY3LCAweDI5LCAweDQzLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhmOCwgMHhlZCwgMHgxNSwgMHhlNiwgMHg2LCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjksIDB4NSwgMHhmYiwgMHgzNCwgMHg2LCAweDI1LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4MjUsIDB4YSwgMHgzYywgMHhhLCAweGM5LCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4YSwgMHhmNCwgMHhmOCwgMHhlZiwgMHgxNSwgMHhmNywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjMywgMHhkNCwgMHhjNiwgMHg0MiwgMHg1LCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDIxLCAweGY3LCAweDI3LCAweDUsIDB4ZmIsIDB4MTgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGZjLCAweGEyLCAweDI1LCAweGEsIDB4M2MsIDB4YSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEsIDB4NDMsIDB4YSwgMHhmNSwgMHhmOCwgMHhmNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweGY3LCAweGEsIDB4ZmIsIDB4MTAsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGZiLCAweGEsIDB4MTUsIDB4ZjcsIDB4ZiwgMHhmNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZiwgMHg2LCAweGZiLCAweDMyLCAweGZjLCAweDhkLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2MiwgMHhhLCAweGY3LCAweDIzLCAweGY4LCAweGYyLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4NiwgMHgyMCwgMHhmNywgMHgyNCwgMHg1LCAweGZiLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNSwgMHhmZCwgMHg4MiwgMHgxNSwgMHg1NSwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhhLCAweGJjLCAweGY4LCAweGYxLCAweDE1LCAweGUyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MSwgMHhmNywgMHgyNSwgMHg1LCAweGZiLCAweDJjLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhmZCwgMHg4MiwgMHgxNSwgMHg1NSwgMHhhLCAweGUsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY4LCAweGYzLCAweGY3LCAweDIzLCAweDEsIDB4ZDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHgzLCAweGQ3LCAweDE2LCAweDU1LCAweGEsIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDk1LCAweGEsIDB4ZDMsIDB4YzgsIDB4NDMsIDB4NzcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGEsIDB4ZmIsIDB4MWIsIDB4NiwgMHhlLCAweDRjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmYSwgMHhmNywgMHg3LCAweDEyLCAweDc2LCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhmNywgMHgxMywgMHg3OSwgMHhmNywgMHg3LCAweDEzLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NDQsIDB4YSwgMHgxMywgMHhkMCwgMHhmYiwgMHgxLCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MTUsIDB4NTUsIDB4YSwgMHhlLCAweDU3LCAweDdkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmNywgMHhkNCwgMHhmNywgMHgzLCAweGY3LCAweDYwLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhZCwgMHhmNywgMHgyNiwgMHhmNywgMHg5MCwgMHhmNywgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NjUsIDB4ZjgsIDB4YzcsIDB4MTUsIDB4ZWIsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg1YiwgMHg5NSwgMHg3YiwgMHhhNCwgMHg2MCwgMHgxOSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDUsIDB4OWIsIDB4NzAsIDB4NmIsIDB4OWQsIDB4NWEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxLCAweGZiLCAweDEwLCAweDIyLCAweGZiLCAweDNiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4ZWMsIDB4ZmIsIDB4MTUsIDB4ZjcsIDB4NDAsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweGVhLCAweGY3LCAweDQ4LCAweGY3LCAweDI2LCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4MjYsIDB4ZjIsIDB4MWYsIDB4ZDIsIDB4YWQsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgzMCwgMHg2MCwgMHg3NSwgMHg5ZCwgMHg4NSwgMHg4ZiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDE5LCAweGZiLCAweDI2LCAweDYsIDB4YmUsIDB4NjYsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhiNSwgMHg2MywgMHgzYSwgMHg2NSwgMHgxOCwgMHg4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweDE1LCAweGY3LCAweDQsIDB4Y2MsIDB4YmMsIDB4YzUsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHg1NCwgMHgyMSwgMHgyNywgMHg1MiwgMHg1MCwgMHg0NCwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGIyLCAweGY3LCAweGMsIDB4MWUsIDB4ZSwgMHg1NywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY4LCAweGZhLCAweDY0LCAweGEsIDB4Y2MsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhjOCwgMHhmNywgMHg1ZCwgMHhmNywgMHgyMCwgMHgxMywgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDE2LCAweDEzLCAweGM2LCAweGY3LCAweDIwLCAweGY3LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlMiwgMHg5MCwgMHhmMiwgMHhmNywgMHgzLCAweGUwLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4MzYsIDB4MWUsIDB4ZmIsIDB4N2YsIDB4ZjcsIDB4MjAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHg3LCAweGY3LCAweDYsIDB4M2UsIDB4ZTksIDB4MjgsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg3OSwgMHg0NSwgMHg1NywgMHgxZSwgMHgxMywgMHhjYSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGZiLCAweDE2LCAweDYsIDB4MTMsIDB4YTYsIDB4ZGEsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjYSwgMHg2NSwgMHhhLCAweGFhLCAweGFkLCAweDFiLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4ODIsIDB4ODIsIDB4YTAsIDB4MWYsIDB4MTMsIDB4Y2EsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhhMywgMHg3ZiwgMHhhZSwgMHgxYiwgMHhkZiwgMHg4ZiwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDFmLCAweDRiLCAweDYsIDB4N2QsIDB4ODgsIDB4ODcsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgxYiwgMHgxMywgMHg5NiwgMHg4MCwgMHg3MywgMHg5NiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDFmLCAweDk1LCAweDcxLCAweDZlLCAweDk1LCAweDZjLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NzIsIDB4NmEsIDB4MzAsIDB4MWYsIDB4ZSwgMHgzZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4ZjcsIDB4MjUsIDB4MSwgMHg1NiwgMHhhLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhmOCwgMHhmMSwgMHgxNSwgMHhlNCwgMHg2LCAweDQ2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4NSwgMHhmYiwgMHgzMCwgMHg2LCAweGZiLCAweGYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHgyMywgMHhhLCAweDQ3LCAweGEsIDB4ZjcsIDB4NzcsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHgxNSwgMHhlMiwgMHg2LCAweGY3LCAweDFhLCAweDc1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5OSwgMHhmYywgMHg3YSwgMHgyMywgMHhhLCAweDQ3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZSwgMHhmOCwgMHhmMywgMHgxNSwgMHhmNywgMHg1LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhkMiwgMHhjNSwgMHg0NCwgMHg1LCAweGY3LCAweDQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDY3LCAweGEsIDB4ZmIsIDB4MTYsIDB4NiwgMHhmYiwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDdhLCAweDIzLCAweGEsIDB4M2UsIDB4YSwgMHhlMCwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NTYsIDB4YSwgMHgxMywgMHhkNiwgMHhmNywgMHgxYiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDE1LCAweGNhLCAweDZhLCAweGEsIDB4YTMsIDB4MWYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHg4MCwgMHhhNCwgMHhhMywgMHg4MCwgMHhhYSwgMHgxYiwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGVkLCAweGE0LCAweDFmLCAweDRiLCAweDdhLCAweGEsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgxYiwgMHgxMywgMHhjZSwgMHg3ZiwgMHg3NSwgMHg5NiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDFmLCAweDk1LCAweDcxLCAweDZkLCAweDk1LCAweDZiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NzMsIDB4NWEsIDB4NDAsIDB4MWYsIDB4MjYsIDB4ZmIsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhhLCAweDNlLCAweGEsIDB4ZTAsIDB4ZjcsIDB4NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGY3LCAweDIzLCAweDY1LCAweGY3LCAweGMsIDB4ZTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDY1LCAweGY3LCAweDIzLCAweDEzLCAweGVjLCAweGY3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZmEsIDB4NGEsIDB4YSwgMHhmNywgMHg2YSwgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4YSwgMHgxMywgMHhmMiwgMHhmYiwgMHhkMywgMHhmYywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGEsIDB4M2MsIDB4NjEsIDB4ZjcsIDB4MWYsIDB4ZTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlOSwgMHhmNywgMHgxYywgMHgxLCAweGY3LCAweDczLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MywgMHhiMywgMHhmNywgMHg1MywgMHgxNSwgMHhmOCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweGZjLCAweDhjLCAweDYsIDB4ZjcsIDB4NGIsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgxZSwgMHhmNywgMHgxYywgMHhmYiwgMHgxZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4ZTIsIDB4NCwgMHhmNywgMHgxZSwgMHhmNywgMHgxZiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NTcsIDB4ODMsIDB4NzYsIDB4YTMsIDB4ZjcsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweGY3LCAweDYsIDB4OWIsIDB4NzcsIDB4MTIsIDB4YjIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhmNywgMHg4OSwgMHhmNywgMHgyNCwgMHgxMywgMHhkYywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDE1LCAweGM0LCAweDViLCAweGM0LCAweGNiLCAweDUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhjOCwgMHg3ZCwgMHhiZCwgMHgxYiwgMHhmNywgMHg0MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4MTMsIDB4ZjcsIDB4MjgsIDB4ZDQsIDB4NmQsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHhiNCwgMHgxZiwgMHhjNSwgMHhjOSwgMHg1MCwgMHhiOCwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDUsIDB4MTMsIDB4ZWMsIDB4OTUsIDB4N2EsIDB4NTUsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHgxYiwgMHhmYiwgMHg0NywgMHgyMywgMHhmYiwgMHgxNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDQxLCAweDllLCAweDRlLCAweGJjLCAweDU2LCAweDFmLCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHgxNSwgMHg3YiwgMHhiMSwgMHg4OSwgMHhhYywgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDcsIDB4ZDIsIDB4YjgsIDB4Y2QsIDB4YjYsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg4MiwgMHg5NiwgMHgxZSwgMHhmYiwgMHgyOSwgMHhmYiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDU2LCAweGY3LCAweDY5LCAweDUsIDB4OTEsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg2YywgMHg3MCwgMHgxYSwgMHgzNywgMHg1ZCwgMHgzZSwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDdiLCAweDk5LCAweDkzLCAweDdlLCAweDFlLCAweGUsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY4LCAweDM0LCAweDg5LCAweDJhLCAweGEsIDB4MTMsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmLCAweGY4LCAweGE0LCAweDE1LCAweGUzLCAweDYsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNSwgMHg5NywgMHhhLCAweGUsIDB4NGUsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweGY4LCAweGYxLCAweDE1LCAweGUzLCAweDYsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNSwgMHg5NywgMHhhLCAweGY3LCAweDksIDB4ZmQsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhhLCAweGUsIDB4NmMsIDB4YSwgMHhmOCwgMHg5NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDQ5LCAweGEsIDB4MTMsIDB4NzgsIDB4ZjcsIDB4MWQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHgxNSwgMHhmNywgMHg1LCAweDYsIDB4YzEsIDB4ZDIsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg1LCAweGY3LCAweDQsIDB4NiwgMHgyNCwgMHg2NywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTUsIDB4NiwgMHhmNywgMHg0MiwgMHhmZCwgMHg4NCwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHg2YywgMHhhLCAweGY4LCAweDllLCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhjZCwgMHhmNywgMHgxZiwgMHg0OCwgMHhmNywgMHhjLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YywgMHg0OCwgMHhmNywgMHgxZiwgMHgxMywgMHg2YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY4LCAweGZhLCAweDRhLCAweGEsIDB4ZjcsIDB4NmIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDRhLCAweGEsIDB4Y2EsIDB4ZmQsIDB4NmYsIDB4MTUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHgyYywgMHhhLCAweDEzLCAweGFjLCAweDM2LCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGZiLCAweDU1LCAweDc2LCAweGY5LCAweGM4LCAweGY3LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhiNiwgMHgyOCwgMHgxNSwgMHg5NywgMHgyMCwgMHg1MiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4ZjcsIDB4ZiwgMHhjOCwgMHgxZiwgMHhmNywgMHg0YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDc4LCAweGEsIDB4ZmMsIDB4NSwgMHg2ZSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmOCwgMHg1LCAweDQwLCAweGEsIDB4ZjcsIDB4NTgsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg1LCAweDJiLCAweDQ4LCAweGEsIDB4ZjcsIDB4MzUsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHgxNSwgMHhlMSwgMHg2LCAweGY3LCAweDE5LCAweGY3LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgyYywgMHg2LCAweGUsIDB4NTcsIDB4ZmIsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHg1MCwgMHhmNywgMHgzLCAweGY3LCAweGUyLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGUsIDB4NzcsIDB4MSwgMHhjOSwgMHhmNywgMHgyMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGY3LCAweDI0LCAweDMsIDB4ZjcsIDB4NWUsIDB4YzUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhhNywgMHhiOCwgMHg1YywgMHhkZCwgMHgxYiwgMHhmNywgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweGVmLCAweGY3LCAweDQzLCAweGY3LCAweDQ5LCAweDIxLCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NywgMHgzOSwgMHg2NCwgMHg2NCwgMHg2OSwgMHg2OSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk3LCAweGZiLCAweDIwLCAweGZlLCAweDMyLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg4YSwgMHhmOCwgMHg2MywgMHgxNSwgMHhmNiwgMHhiZiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweGYyLCAweDk4LCAweGZiLCAweDMsIDB4NTAsIDB4ZmIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHg2OSwgMHg1YiwgMHgzNiwgMHg2NiwgMHhkMSwgMHhlOSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MjAsIDB4ZmIsIDB4NTUsIDB4NzYsIDB4ZjksIDB4Y2YsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDEsIDB4ZjcsIDB4NiwgMHhmNywgMHg5LCAweGU4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHgzLCAweGY3LCAweDYsIDB4ZjgsIDB4ZjksIDB4ODgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY2LCAweGZiLCAweDgsIDB4ODgsIDB4YSwgMHhmYiwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweGNmLCAweDE1LCAweDk3LCAweGZiLCAweDAsIDB4NTIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweGY3LCAweDEwLCAweGM4LCAweDFmLCAweGY3LCAweDRhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NzgsIDB4YSwgMHhmYywgMHg4LCAweDZlLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY4LCAweDgsIDB4NDAsIDB4YSwgMHhmNywgMHg1OCwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDUsIDB4MmEsIDB4NDgsIDB4YSwgMHhlLCAweDc2LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OWYsIDB4OWEsIDB4ZjcsIDB4NDgsIDB4OWUsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDk4LCAweDcsIDB4MWUsIDB4YTAsIDB4MzksIDB4NjMsIDB4ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDksIDB4ZjcsIDB4MTEsIDB4YSwgMHhmNywgMHgyMCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHg5YywgMHhjLCAweGMsIDB4OGMsIDB4YywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTEsIDB4MTQsIDB4ZjksIDB4MmIsIDB4MTUsIDB4YjUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc5LCAweDIsIDB4MCwgMHgxLCAweDAsIDB4MjMsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDAsIDB4MzAsIDB4MCwgMHg2NSwgMHgwLCAweDZhLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHgwLCAweGNhLCAweDAsIDB4ZWQsIDB4MCwgMHhmMSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4MSwgMHgyMSwgMHgxLCAweDNlLCAweDEsIDB4NWIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDEsIDB4ODEsIDB4MSwgMHg4NywgMHgxLCAweDkzLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHgxLCAweGNiLCAweDEsIDB4ZGEsIDB4MSwgMHhlMywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4MSwgMHhmYywgMHgyLCAweDUsIDB4MiwgMHhlLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHgyLCAweDI1LCAweDIsIDB4MmUsIDB4MiwgMHgzOSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4MiwgMHg0ZCwgMHgyLCAweDUyLCAweDIsIDB4NTcsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDIsIDB4NmEsIDB4MiwgMHg3NCwgMHgyLCAweDdmLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHgyLCAweDhmLCAweDIsIDB4OTksIDB4MiwgMHhhNSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MiwgMHhiNywgMHgyLCAweGMwLCAweDIsIDB4YzUsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDIsIDB4ZDUsIDB4MiwgMHhlOCwgMHgyLCAweGZiLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDMsIDB4ZiwgMHgzLCAweDIxLCAweDMsIDB4MmMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDMsIDB4M2MsIDB4MywgMHg0ZCwgMHgzLCAweDVlLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHgzLCAweDc1LCAweDMsIDB4ODUsIDB4MywgMHg5NCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4MywgMHhhMiwgMHgzLCAweGE4LCAweDMsIDB4YjYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDMsIDB4Y2EsIDB4MywgMHhkMSwgMHgzLCAweGQ5LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHgzLCAweGUzLCAweDMsIDB4ZTcsIDB4MywgMHhlYiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4MywgMHhmOSwgMHg0LCAweDQsIDB4NCwgMHhhLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDQsIDB4MTEsIDB4NCwgMHgxYywgMHg0LCAweDI3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHg0LCAweDNkLCAweDQsIDB4NDQsIDB4NCwgMHg0YiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NCwgMHg1OCwgMHg0LCAweDVmLCAweDQsIDB4NjYsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDQsIDB4NzAsIDB4NCwgMHg3NCwgMHg0LCAweDc4LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg0LCAweDg1LCAweDQsIDB4OGYsIDB4NCwgMHg5NywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NCwgMHg5ZiwgMHg0LCAweGEzLCAweDQsIDB4YTcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDQsIDB4YjQsIDB4NCwgMHhiZCwgMHg0LCAweGM2LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHg0LCAweGQ4LCAweDQsIDB4ZTEsIDB4NCwgMHhlYSwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4NCwgMHhmYywgMHg1LCAweDUsIDB4NSwgMHhlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHg1LCAweDIwLCAweDUsIDB4MjcsIDB4NSwgMHgyYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NSwgMHgzNywgMHg1LCAweDNjLCAweDUsIDB4NDEsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHg4MywgMHhhMiwgMHgzOCwgMHhhLCAweGFjLCAweDFhLCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4ZjQsIDB4ZmIsIDB4NzMsIDB4ZmIsIDB4MzIsIDB4NjUsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHg3MywgMHgxZSwgMHhmNywgMHgxMywgMHg3NCwgMHg1LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4YSwgMHg4MCwgMHg2ZSwgMHg4MiwgMHgzYywgMHg3ZCwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgzMCwgMHhhLCAweDIwLCAweGEsIDB4YiwgMHhmZCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGEsIDB4MTMsIDB4YmMsIDB4MjYsIDB4YSwgMHgxNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGY3LCAweDUwLCAweDY1LCAweGRlLCAweGY3LCAweDNlLCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4MTgsIDB4MzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhmYiwgMHg0YywgMHhmYiwgMHg0ZiwgMHgzNywgMHhmYiwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEwLCAweDFlLCAweGY3LCAweDIzLCAweDE2LCAweGY3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhiNiwgMHhjZSwgMHhkMywgMHhjNSwgMHg1YiwgMHgyMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NDksIDB4NTgsIDB4NGIsIDB4NDksIDB4NGQsIDB4YzMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDFlLCAweGUsIDB4MjEsIDB4YSwgMHgzYiwgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHhmYiwgMHg2LCAweGY3LCAweDM0LCAweDVhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZmIsIDB4NjAsIDB4ZmIsIDB4M2YsIDB4M2EsIDB4ZmIsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHhmYiwgMHg0MiwgMHhmNywgMHgyMCwgMHgyNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4NDcsIDB4YjgsIDB4ZjcsIDB4MTEsIDB4YWMsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHgyMywgMHhhMiwgMHg1LCAweDczLCAweDgzLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NDgsIDB4MWIsIDB4M2EsIDB4NmEsIDB4Y2QsIDB4Y2IsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4ZSwgMHhlMSwgMHgxNSwgMHhkMSwgMHg4YSwgMHhiMCwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweDFiLCAweGRhLCAweGFiLCAweDU1LCAweDQ1LCAweDFmLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhkMSwgMHg0NSwgMHgzNywgMHhhLCAweGY3LCAweDU5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NywgMHgzZCwgMHg3MiwgMHg0YywgMHgzNCwgMHg1NSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGE5LCAweGJjLCAweGM0LCAweGE0LCAweGE0LCAweDkwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4OTIsIDB4YzgsIDB4OTUsIDB4OWMsIDB4OTQsIDB4OCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4NiwgMHhjMywgMHhmNywgMHgzYiwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NiwgMHhjNiwgMHhmYiwgMHgzYiwgMHg1LCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHhhNCwgMHhmOSwgMHg3NCwgMHg0MCwgMHhhLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NTEsIDB4MTUsIDB4ZTcsIDB4ZjcsIDB4YTUsIDB4ZTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg1LCAweGIsIDB4MTUsIDB4MjcsIDB4YSwgMHhlLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2EsIDB4ZDgsIDB4ZmIsIDB4NjEsIDB4ZjcsIDB4YTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHhlYiwgMHhmNywgMHg0YiwgMHhmNywgMHg1MCwgMHhmNywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGEsIDB4ZmIsIDB4MjIsIDB4ZmIsIDB4NzksIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHgxNiwgMHhmNCwgMHhhYywgMHhmNywgMHgyMSwgMHhmNywgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQzLCAweGExLCAweGZiLCAweDM5LCAweDNhLCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhhLCAweDEzLCAweGI4LCAweDM2LCAweGEsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4ODAsIDB4MWUsIDB4ZjgsIDB4MTYsIDB4ZmIsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgxNiwgMHg3LCAweGZiLCAweGYsIDB4OGIsIDB4MjgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHhmYiwgMHgxYSwgMHg3ZSwgMHhlNCwgMHhmNywgMHgxOSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDE2LCAweDcsIDB4YiwgMHhmNywgMHgxNSwgMHhmOCwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFmLCAweGZiLCAweDY3LCAweDYsIDB4ZmIsIDB4MTUsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhmYiwgMHg3LCAweDJhLCAweDk0LCAweGUxLCAweGY3LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4NjcsIDB4ZmIsIDB4MWYsIDB4ZmIsIDB4ZGQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4OTUsIDB4OTksIDB4YjQsIDB4ZDAsIDB4MWIsIDB4ZWIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg2OCwgMHgxZiwgMHg4MiwgMHg3LCAweDZmLCAweGIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhmNywgMHgxMSwgMHhmYywgMHgyNSwgMHhmNywgMHg1YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweGY3LCAweDExLCAweGZiLCAweGZkLCAweGY3LCAweDM5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZjcsIDB4MTEsIDB4ZmMsIDB4YTgsIDB4NiwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4YzQsIDB4MmIsIDB4YSwgMHhlLCAweDE1LCAweDk4LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4ODQsIDB4OGUsIDB4ODMsIDB4OCwgMHhmNywgMHgxZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYywgMHhkYywgMHgxNSwgMHhmYiwgMHgzOSwgMHhkOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGY3LCAweGEwLCAweGY3LCAweDhkLCAweGViLCAweGY3LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGYsIDB4ZjcsIDB4NjYsIDB4ZmIsIDB4NSwgMHhmNywgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDdjLCAweGZiLCAweDcyLCAweGZiLCAweGYsIDB4ZmIsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3YSwgMHgxZSwgMHhmNywgMHgyOCwgMHgxNiwgMHhmNCwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIyLCAweGY3LCAweDM4LCAweGY3LCAweDQzLCAweGExLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4M2EsIDB4ZmIsIDB4MTQsIDB4YiwgMHgzYiwgMHhhLCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzYSwgMHhhLCAweGJiLCAweGY3LCAweDI4LCAweDEsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNCwgMHgzLCAweGQ3LCAweDE2LCAweDJlLCAweGEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGEsIDB4YTQsIDB4ZmIsIDB4NDgsIDB4ZjcsIDB4YTAsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDY5LCAweGEsIDB4ZjcsIDB4M2IsIDB4ZjcsIDB4MTAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHg3NywgMHhiLCAweGZiLCAweDgsIDB4YmEsIDB4MzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhjZiwgMHhjZSwgMHhhYywgMHhjNSwgMHhiMSwgMHgxZSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHhmNSwgMHhlMSwgMHhiZiwgMHhiNiwgMHhhNywgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDgwLCAweGIsIDB4ODgsIDB4ZDEsIDB4OCwgMHg4YSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGY3LCAweDI0LCAweGIsIDB4MjAsIDB4N2QsIDB4ZWYsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOCwgMHg0YSwgMHhmNywgMHgwLCAweGIsIDB4OGYsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMSwgMHhmNywgMHg1YywgMHhmNywgMHgxMSwgMHhmNywgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweGIsIDB4NDEsIDB4N2QsIDB4ZmIsIDB4YywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE2LCAweDFhLCAweGIsIDB4MjAsIDB4N2QsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweGUxLCAweGY3LCAweDEwLCAweGY2LCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDM2LCAweGZiLCAweDdjLCAweGZiLCAweDcyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhiLCAweDU3LCAweDdkLCAweGY3LCAweDQsIDB4ZjcsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweGIsIDB4YTAsIDB4NzYsIDB4NGQsIDB4YSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgyNSwgMHg2LCAweGIsIDB4ZmIsIDB4MmMsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1LCAweGY3LCAweDFhLCAweDFlLCAweGUsIDB4MSwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI2LCAweGY3LCAweGIzLCAweGY3LCAweDI2LCAweDMsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YTIsIDB4ZjcsIDB4MjksIDB4ZjcsIDB4NmEsIDB4ZjcsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGIsIDB4ZjgsIDB4ZmEsIDB4NGIsIDB4YSwgMHhmNywgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcsIDB4NGIsIDB4YSwgMHhiLCAweGI0LCAweDhiLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4MWEsIDB4ZTYsIDB4YiwgMHhmZSwgMHgzYywgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGY5LCAweDYwLCAweDZkLCAweGEsIDB4M2UsIDB4YSwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIzLCAweDEsIDB4NTYsIDB4YSwgMHgzLCAweGIsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg4NywgMHg2YywgMHgxYiwgMHg3NiwgMHg3ZiwgMHg4YywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDFmLCAweGIsIDB4MTIsIDB4Y2QsIDB4ZjcsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhmNywgMHgxZiwgMHhiLCAweDE1LCAweGY3LCAweGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGZiLCAweGMsIDB4NiwgMHhiLCAweDE1LCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3LCAweGZiLCAweDcsIDB4NiwgMHhiLCAweGZjLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NzYsIDB4YiwgMHhmOSwgMHg2MiwgMHg3NywgMHgxLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhhLCAweGY4LCAweDk1LCAweGY3LCAweDI1LCAweDQ5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3OCwgMHhiLCAweDUsIDB4ZmIsIDB4MzIsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweGZiLCAweGFlLCAweGZiLCAweDM0LCAweGY3LCAweGFlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNSwgMHg2LCAweGY3LCAweDhlLCAweGIsIDB4MTUsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDExLCAweGY3LCAweDVmLCAweGZiLCAweDExLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NSwgMHgzMywgMHg2LCAweGYyLCAweGZiLCAweDYxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDY2LCAweGEsIDB4ZjcsIDB4NTIsIDB4ZjcsIDB4MWQsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhiLCAweDUsIDB4ODcsIDB4OWUsIDB4ODIsIDB4ODcsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHg0MSwgMHhhMiwgMHhiLCAweDE1LCAweGUzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhmNywgMHg2NCwgMHhmMiwgMHhmNywgMHg1YywgMHg1LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHgxMSwgMHhmYiwgMHg1YywgMHg1LCAweGIsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhmNywgMHgxMSwgMHhmOSwgMHg0MiwgMHhmNywgMHgyNCwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHhmNywgMHgxMywgMHhmOCwgMHg5ZCwgMHhmYiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHhhZCwgMHhmNywgMHgyMywgMHhmNywgMHg5NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGIsIDB4ZjcsIDB4NjYsIDB4ZjcsIDB4M2QsIDB4ZjcsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NSwgMHhmNywgMHg2NSwgMHhmYiwgMHgzZCwgMHhmNywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY2LCAweGIsIDB4ZjcsIDB4M2MsIDB4ZjcsIDB4MWMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgzYywgMHhmYiwgMHgzYywgMHhmYiwgMHgxYywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDNjLCAweGIsIDB4NWYsIDB4YSwgMHhmOCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweGIsIDB4NTcsIDB4ZmIsIDB4NGUsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhmNywgMHgwLCAweGY3LCAweGU4LCAweGY3LCAweDUsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhiLCAweGZiLCAweGE2LCAweGZiLCAweDU4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmNywgMHhiMiwgMHhmNywgMHg4LCAweGY3LCAweGIyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxLCAweGIsIDB4NzcsIDB4MSwgMHhkMCwgMHhmNywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGM5LCAweGY3LCAweDFlLCAweDMsIDB4ZDAsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiLCAweGVjLCAweDc2LCAweGY4LCAweDJjLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDE1LCAweGZjLCAweDE2LCAweDcsIDB4ZmIsIDB4M2IsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcsIDB4NzgsIDB4ZjcsIDB4MTAsIDB4YiwgMHgxLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjUsIDB4ZjcsIDB4OTQsIDB4ZjcsIDB4MmEsIDB4MywgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweDI1LCAweGIsIDB4NDUsIDB4YSwgMHg3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4ZmIsIDB4MWEsIDB4NiwgMHhiLCAweDRjLCAweGEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg3NywgMHgxLCAweGQ3LCAweGY3LCAweDEzLCAweDMsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGEsIDB4ZDAsIDB4MTYsIDB4ZjcsIDB4MjAsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4MzksIDB4ZGQsIDB4OGEsIDB4NzcsIDB4MTIsIDB4YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OGMsIDB4OGIsIDB4YiwgMHgxMiwgMHhhOCwgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4MjMsIDB4NSwgMHhiLCAweGZiLCAweDIwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGM2LCAweGEwLCAweDc2LCAweGIsIDB4NjUsIDB4YSwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDFiLCAweGFhLCAweGEyLCAweDgyLCAweDgxLCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHg2LCAweGY3LCAweDQ1LCAweDgzLCAweGEsIDB4ZmIsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIsIDB4NTcsIDB4N2QsIDB4ZjUsIDB4MmQsIDB4ZTksIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGEsIDB4ZSwgMHg1LCAweDg5LCAweDYsIDB4YiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEsIDB4MjYsIDB4MWYsIDB4M2UsIDB4ZmIsIDB4MSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHhmNywgMHg5ZCwgMHgxNiwgMHhmNywgMHgxZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDYsIDB4ZjcsIDB4OGYsIDB4YiwgMHhmYiwgMHgxMCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMsIDB4NTIsIDB4MWUsIDB4ZWIsIDB4MTYsIDB4Y2MsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGY3LCAweDU1LCAweDg0LCAweGRhLCAweDFiLCAweGY3LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZCwgMHhiLCAweGEwLCAweDc2LCAweGY4LCAweGE4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhiLCAweGY3LCAweDQ0LCAweGY3LCAweDcsIDB4ZmIsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDY3LCAweGEsIDB4ZmIsIDB4MmQsIDB4NiwgMHhiLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4MmMsIDB4ZjcsIDB4MSwgMHhiLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDYsIDB4ZmIsIDB4MCwgMHhiLCAweDUsIDB4ZmIsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweGIsIDB4YiwgMHgyMCwgMHg3OCwgMHhmNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg2LCAweDdkLCAweDg5LCAweDg3LCAweGIsIDB4ODIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGIsIDB4ZmIsIDB4NCwgMHg2LCAweGIsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGIsIDB4MSwgMHhjYiwgMHhmNywgMHgyOCwgMHhmNywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGEsIDB4YiwgMHhmYiwgMHg1OCwgMHhmNywgMHgwLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4ZjcsIDB4MCwgMHgxLCAweGIsIDB4ZmIsIDB4M2UsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhmYiwgMHg2NSwgMHgxZSwgMHhlLCAweGZiLCAweDFlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweGQsIDB4MSwgMHhiLCAweGY3LCAweDI2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY3LCAweDI2LCAweDEsIDB4YiwgMHhmNywgMHgyOCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1NywgMHg4YiwgMHhmNywgMHhlLCAweGY4LCAweGU4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhiLCAweGZjLCAweDFkLCAweDYsIDB4ZjgsIDB4ZiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDUsIDB4YiwgMHgxNSwgMHhmNywgMHg5LCAweGY3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5LCAweDYsIDB4YiwgMHhiOCwgMHg2YywgMHgxZiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDgxLCAweGE2LCAweDg0LCAweGIsIDB4MTUsIDB4ZjcsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEsIDB4ZmIsIDB4ZCwgMHg2LCAweGIsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDksIDB4ZmIsIDB4NSwgMHg2LCAweGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHg3LCAweGZiLCAweGZmLCAweGZjLCAweDY1LCAweDUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweGEsIDB4ZjcsIDB4OSwgMHhmYiwgMHhhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDE1LCAweGY3LCAweGEsIDB4ZjcsIDB4YiwgMHhmYiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiLCAweDE1LCAweGY3LCAweGIsIDB4ZjcsIDB4OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NiwgMHhiLCAweDc3LCAweDEsIDB4ZjcsIDB4NzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHgzLCAweGIzLCAweGIsIDB4M2MsIDB4OTgsIDB4NzYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg3NywgMHgxLCAweGIxLCAweGIsIDB4MTUsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgsIDB4ZmIsIDB4NywgMHg2LCAweGIsIDB4ZjksIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDEzLCAweDYsIDB4ZSwgMHgxLCAweGQwLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiLCAweDE1LCAweGY3LCAweGEsIDB4NiwgMHhjNCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgzMSwgMHg2LCAweGIsIDB4NSwgMHhmYiwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHg4OSwgMHg0MiwgMHg1YSwgMHg3ZiwgMHhiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNhbnNCb2xkSXRhbGljLmMgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U2Fuc0JvbGRJdGFsaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTU1MTY1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNhbnNCb2xkSXRhbGljLmMKQEAgLTAsMCArMSwyMDYxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTYW5zQm9sZEl0YWxpY0ZvbnREYXRhIFsxNjQxOF0gPSB7MHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0LCAweDIsIDB4MCwgMHgxLCAweDEsIDB4MSwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDUzLCAweDYxLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NTAsIDB4NTMsIDB4MmQsIDB4NDIsIDB4NmYsIDB4NmMsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHg3NCwgMHg2MSwgMHg2YywgMHg2OSwgMHg2MywgMHgwLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDEsIDB4MjcsIDB4ZjgsIDB4MTAsIDB4MCwgMHhmOCwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjgsIDB4MWQsIDB4MiwgMHhmOCwgMHgxZSwgMHgzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4NCwgMHg3ZiwgMHhjLCAweDIsIDB4ZmIsIDB4NDIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhmYSwgMHhlZSwgMHhmYSwgMHg1NiwgMHg1LCAweGY3LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhmOCwgMHg5YywgMHgxMSwgMHhiMSwgMHgxYywgMHgzOSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDAsIDB4NCwgMHgxLCAweDEsIDB4NSwgMHgyZiwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDQ1LCAweDc1LCAweDcyLCAweDZmLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDIwLCAweDUzLCAweDYxLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MjAsIDB4NTAsIDB4NTMsIDB4MjAsIDB4NDIsIDB4NmYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHgyMCwgMHg0OSwgMHg3NCwgMHg2MSwgMHg2YywgMHg2OSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZGLCAweDZELCAweDIwLCAweDUzLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NzMsIDB4MjAsIDB4NTAsIDB4NTMsIDB4MCwgMHgwLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDEsIDB4MCwgMHgwLCAweDgxLCAweDEsIDB4MCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg4NiwgMHgyLCAweDAsIDB4OTEsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4MCwgMHgwLCAweDZkLCAweDEsIDB4MCwgMHg4YywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg5MiwgMHgwLCAweDAsIDB4YzcsIDB4MCwgMHgwLCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDIsIDB4NSwgMHgwLCAweDY4LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4MzcsIDB4MCwgMHg3YywgMHgwLCAweDAsIDB4NDIsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDg3LCAweDAsIDB4MCwgMHg3NSwgMHgwLCAweDAsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NzYsIDB4MCwgMHgwLCAweDc5LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDEsIDB4MCwgMHg3ZSwgMHgwLCAweDAsIDB4N2EsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzAsIDB4MCwgMHgwLCAweDZiLCAweDAsIDB4MCwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg0MSwgMHgwLCAweDAsIDB4OCwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgwLCAweDAsIDB4NzcsIDB4MCwgMHgwLCAweDc0LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDZmLCAweDAsIDB4MCwgMHg4OSwgMHgwLCAweDAsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4OTksIDB4MCwgMHgwLCAweGRkLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDAsIDB4MCwgMHg5NCwgMHgwLCAweDAsIDB4YzYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NjAsIDB4MiwgMHgwLCAweDY3LCAweDAsIDB4MCwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhhMCwgMHgwLCAweDAsIDB4NjYsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4MCwgMHgwLCAweGFhLCAweDAsIDB4MCwgMHg4YiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2YSwgMHgwLCAweDAsIDB4OTcsIDB4MCwgMHgwLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGE1LCAweDAsIDB4MCwgMHg4MCwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgwLCAweDAsIDB4OWMsIDB4MCwgMHgwLCAweGE0LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE5LCAweDAsIDB4MCwgMHg3ZCwgMHgwLCAweDAsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NzMsIDB4MCwgMHgwLCAweDcyLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDAsIDB4MCwgMHg5NiwgMHgwLCAweDAsIDB4OGYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NzgsIDB4MCwgMHgwLCAweDllLCAweDAsIDB4MCwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhhMywgMHgwLCAweDAsIDB4N2IsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MCwgMHgwLCAweGFiLCAweDEsIDB4MCwgMHhiMCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhZCwgMHgwLCAweDAsIDB4YWYsIDB4MCwgMHgwLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGIxLCAweDAsIDB4MCwgMHhiNSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHgyLCAweDAsIDB4YjksIDB4MCwgMHgwLCAweGI2LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDlhLCAweDAsIDB4MCwgMHhiYSwgMHgwLCAweDAsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YmIsIDB4MSwgMHgwLCAweGJmLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDAsIDB4MCwgMHhhOCwgMHgwLCAweDAsIDB4OGQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzQsIDB4MCwgMHgwLCAweGMxLCAweDIsIDB4MCwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg5ZCwgMHgwLCAweDAsIDB4OTUsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4MCwgMHgwLCAweGM4LCAweDEsIDB4MCwgMHhjZCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjYSwgMHgwLCAweDAsIDB4Y2MsIDB4MCwgMHgwLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGNlLCAweDAsIDB4MCwgMHhkMiwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHgyLCAweDAsIDB4ZDYsIDB4MCwgMHgwLCAweGQzLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE3LCAweDAsIDB4MCwgMHhkNywgMHgwLCAweDAsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4ZDgsIDB4MSwgMHgwLCAweGRjLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDAsIDB4MCwgMHg5ZiwgMHgwLCAweDAsIDB4OTMsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZTEsIDB4MCwgMHgwLCAweGRlLCAweDIsIDB4MCwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhhMiwgMHgwLCAweDAsIDB4ZTMsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4MiwgMHgwLCAweDEsIDB4MCwgMHg0LCAweDAsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MzcsIDB4MCwgMHg0YywgMHgwLCAweDc2LCAweDAsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGI5LCAweDAsIDB4Y2YsIDB4MCwgMHhkZSwgMHgwLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg0OCwgMHgxLCAweDk0LCAweDEsIDB4YmMsIDB4MSwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MmIsIDB4MiwgMHg3MCwgMHgyLCAweDk5LCAweDIsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDM5LCAweDMsIDB4YzksIDB4NCwgMHg1YSwgMHg1LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDIxLCAweDUsIDB4NWYsIDB4NSwgMHg5NywgMHg1LCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmMywgMHg2LCAweDFhLCAweDYsIDB4MmUsIDB4NiwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NTUsIDB4NiwgMHg5ZSwgMHg2LCAweGNhLCAweDcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDgzLCAweDcsIDB4YzUsIDB4OCwgMHgyNSwgMHg4LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhjMSwgMHg5LCAweDM1LCAweDksIDB4OWYsIDB4OSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4ZmEsIDB4YSwgMHgxZiwgMHhhLCAweDNmLCAweGEsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGI3LCAweGIsIDB4NjUsIDB4YiwgMHg5NiwgMHhiLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHgzOSwgMHhjLCAweDZiLCAweGMsIDB4OTcsIDB4YywgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4MWEsIDB4ZCwgMHg0OCwgMHhkLCAweDU4LCAweGQsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweGI3LCAweGQsIDB4YzksIDB4ZSwgMHg3LCAweGUsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdjLCAweGUsIDB4YjgsIDB4ZiwgMHgyZCwgMHhmLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhlNiwgMHgxMCwgMHhhLCAweDEwLCAweDU5LCAweDEwLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4YjIsIDB4MTAsIDB4ZTEsIDB4MTEsIDB4MywgMHgxMSwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDUzLCAweDExLCAweDZjLCAweDExLCAweDhkLCAweDExLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4YmMsIDB4MTEsIDB4Y2IsIDB4MTIsIDB4MWQsIDB4MTIsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhjNywgMHgxMywgMHgyMSwgMHgxMywgMHg3MywgMHgxMywgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDFjLCAweDE0LCAweDY0LCAweDE0LCAweDgyLCAweDE0LCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4ZjIsIDB4MTQsIDB4ZmUsIDB4MTUsIDB4NjUsIDB4MTUsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjOSwgMHgxNiwgMHgyNCwgMHgxNiwgMHg4MCwgMHgxNiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDE2LCAweDE3LCAweDVhLCAweDE3LCAweGE4LCAweDE3LCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4MSwgMHgxOCwgMHgyZiwgMHgxOCwgMHg2YiwgMHgxOCwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGViLCAweDE5LCAweDQsIDB4MTksIDB4NWIsIDB4MTksIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgxYywgMHgxYSwgMHgzZSwgMHgxYSwgMHg5ZSwgMHgxYSwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGQ3LCAweDFiLCAweGUsIDB4MWIsIDB4NTgsIDB4MWIsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhhLCAweDFjLCAweDhmLCAweDFjLCAweGE3LCAweDFkLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NWEsIDB4MWQsIDB4N2QsIDB4MWQsIDB4YzUsIDB4MWQsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3LCAweDFlLCAweDExLCAweDFlLCAweDFjLCAweDFlLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YjgsIDB4MWYsIDB4MmUsIDB4MWYsIDB4NDQsIDB4MWYsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgxYiwgMHgyMCwgMHg0OCwgMHgyMCwgMHhiYywgMHgyMSwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGQ3LCAweDIyLCAweDJkLCAweDIyLCAweDRkLCAweDIyLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4OCwgMHgyMywgMHg5OCwgMHgyNCwgMHgyLCAweDI0LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4MjUsIDB4MjQsIDB4MzcsIDB4MjQsIDB4ZDksIDB4MjQsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHgyNSwgMHgyNSwgMHg1NiwgMHgyNSwgMHg5YywgMHgyNSwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDIsIDB4MjYsIDB4NGEsIDB4MjYsIDB4NzgsIDB4MjYsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhiZCwgMHgyNiwgMHhlMiwgMHgyNywgMHgyNiwgMHgyNywgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDkzLCAweDI4LCAweDEwLCAweDI4LCAweGFhLCAweDI5LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHgxOCwgMHgyOSwgMHgzMywgMHgyOSwgMHg1MywgMHgyOSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGMyLCAweDI5LCAweGY5LCAweDJhLCAweDQ5LCAweDJhLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4ZWQsIDB4MmIsIDB4NCwgMHgyYiwgMHgyNCwgMHgyYiwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDZkLCAweDJiLCAweDg0LCAweDJiLCAweGE1LCAweDJiLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4YywgMHgyYywgMHg2NiwgMHgyYywgMHg3MiwgMHgyYywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweGE4LCAweDJjLCAweGVkLCAweDJkLCAweDEzLCAweDJkLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4YmQsIDB4MmQsIDB4Y2EsIDB4MmQsIDB4ZDAsIDB4MmQsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhlZSwgMHgyZSwgMHgxZSwgMHgyZSwgMHg2YSwgMHgyZSwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDUsIDB4MmYsIDB4MmEsIDB4MmYsIDB4NGYsIDB4MmYsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhjMiwgMHgzMCwgMHg1YiwgMHgzMSwgMHg4LCAweDMxLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4YjEsIDB4MzEsIDB4ZDYsIDB4MzEsIDB4ZmIsIDB4MzIsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHgzZiwgMHgzMiwgMHg1YiwgMHgzMiwgMHg3ZCwgMHgzMiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDFhLCAweDMzLCAweGFjLCAweDMzLCAweGJmLCAweDMzLCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4MSwgMHgzNCwgMHg1MiwgMHgzNCwgMHg3NywgMHgzNCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDFkLCAweDM1LCAweDJiLCAweDM1LCAweDM3LCAweDM1LCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4NTgsIDB4MzUsIDB4OTQsIDB4MzUsIDB4ZWQsIDB4MzYsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmOSwgMHhlLCAweGZiLCAweGY5LCAweGUsIDB4ZjgsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg0MiwgMHhmNywgMHgyNiwgMHgxMiwgMHgxMywgMHg0MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGY5LCAweDgyLCAweDE1LCAweDQ5LCAweDk0LCAweGFlLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NCwgMHgxYiwgMHhmNywgMHgxMSwgMHhiOSwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4OTYsIDB4MWYsIDB4NDMsIDB4NiwgMHgxMywgMHg4MCwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDZjLCAweDU4LCAweDRiLCAweDFiLCAweDEzLCAweDQwLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YWQsIDB4YjIsIDB4ODEsIDB4MWYsIDB4ZSwgMHhmOCwgMHhmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcsIDB4MSwgMHhmNywgMHg3ZiwgMHhmOCwgMHhmYSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweDYsIDB4YTUsIDB4ZjcsIDB4NywgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4NiwgMHhlLCAweGY3LCAweDVjLCAweGY5LCAweDM2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4YmQsIDB4NWIsIDB4YzgsIDB4YzUsIDB4YmUsIDB4YjksIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHg1OSwgMHhiNSwgMHg1MCwgMHg0YywgMHg1YiwgMHg2MCwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGM3LCAweDE2LCAweGE1LCAweGExLCAweDlkLCAweGE4LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4N2EsIDB4NzAsIDB4NzAsIDB4NzQsIDB4NzYsIDB4NzEsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhhMCwgMHhhNiwgMHgxZSwgMHhlLCAweDcyLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmOCwgMHhmMCwgMHgxNSwgMHhmMywgMHg1MiwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHgyNiwgMHgxNSwgMHhmMywgMHg1MiwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3OCwgMHhkOSwgMHhmNywgMHgyYSwgMHg3NywgMHgxLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4MywgMHhkNiwgMHgxNiwgMHg4MywgMHg3YSwgMHg3MSwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDFhLCAweDQ2LCAweGIxLCAweDcwLCAweGMzLCAweGFmLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4OWIsIDB4YTYsIDB4MWUsIDB4OWEsIDB4Y2QsIDB4NSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDU1LCAweDc5LCAweDZhLCAweDFiLCAweDc2LCAweDZlLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4OWIsIDB4OGYsIDB4YWEsIDB4YTIsIDB4YzEsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweGEsIDB4ZjcsIDB4NjgsIDB4ZjgsIDB4ZjAsIDB4OGUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJjLCAweGY3LCAweDI2LCAweDdhLCAweGEsIDB4MzIsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhlMiwgMHg1LCAweDI1LCAweDYsIDB4ZSwgMHg0OCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhkMCwgMHgxNiwgMHhmNywgMHgyMywgMHg2LCAweGY3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhhOCwgMHg0NywgMHhhLCAweGUsIDB4ZmMsIDB4NjgsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOSwgMHg2ZCwgMHg3NywgMHgxLCAweDI5LCAweDc4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZGQsIDB4ZjksIDB4NmQsIDB4NSwgMHgzZiwgMHg2LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4ZmQsIDB4NmQsIDB4NSwgMHhlLCAweDg0LCAweGEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg3NywgMHgxLCAweGUyLCAweDE2LCAweGY3LCAweDIxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhmOCwgMHgzMywgMHg1LCAweGVmLCAweDYsIDB4YTEsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDI3LCAweDYsIDB4ZGEsIDB4OWEsIDB4OWQsIDB4YTQsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg5OSwgMHg5ZCwgMHg4NywgMHg3ZCwgMHhiMSwgMHgxZiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweDUsIDB4OWMsIDB4NTUsIDB4NTksIDB4OTEsIDB4NmIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNywgMHg4MSwgMHgyOCwgMHhmYiwgMHgzLCAweDZhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4NiwgMHg3NiwgMHgyNSwgMHg1LCAweGRhLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhmYywgMHgzMywgMHgxNSwgMHg5YiwgMHhhLCAweGY3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg5OSwgMHgzZCwgMHhhLCAweDlhLCAweGQyLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4NiwgMHhhNSwgMHhmNywgMHgxMywgMHg2NSwgMHhhLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmOCwgMHgzMywgMHhmMSwgMHhmNywgMHg2NiwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjgsIDB4MTYsIDB4ZjcsIDB4MjAsIDB4NiwgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDVmLCAweDNkLCAweGEsIDB4ZmMsIDB4NjcsIDB4ZmQsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg5YiwgMHhhLCAweGUyLCAweGY4LCAweDMzLCAweDUsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGEwLCAweGYxLCAweDUsIDB4MjcsIDB4NiwgMHhkYSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGE0LCAweGIyLCAweDFiLCAweDk5LCAweDlmLCAweDg2LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4MWYsIDB4YTYsIDB4ZjAsIDB4NSwgMHg5YywgMHg1NSwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDZhLCAweDFiLCAweGZiLCAweDE1LCAweDgwLCAweDI4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg2YSwgMHgxZiwgMHgzYywgMHg2LCAweDc1LCAweDI1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHg2LCAweGUsIDB4ODcsIDB4YSwgMHhjZiwgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDUwLCAweGEsIDB4ZmMsIDB4NCwgMHg2LCAweGJlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4ZjcsIDB4NGMsIDB4ZWUsIDB4YTMsIDB4ZjcsIDB4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDI4LCAweGJkLCAweGY3LCAweDg2LCAweDk0LCAweGEsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlMCwgMHgzMCwgMHg1OSwgMHg3MywgMHhmYiwgMHg4LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4NSwgMHhlLCAweGZiLCAweGY5LCAweDM3LCAweGEsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHgyMCwgMHg2LCAweGQ2LCAweGY4LCAweDAsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHg5ZSwgMHhlOSwgMHgyZSwgMHg0YSwgMHhjMiwgMHhmNywgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MjAsIDB4NiwgMHg0NCwgMHhmYiwgMHhlOCwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweDc3LCAweDJkLCAweGVmLCAweGNkLCAweDUsIDB4ZSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGY3LCAweGQsIDB4ZjgsIDB4N2YsIDB4ZjcsIDB4MTAsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhhLCAweGE0LCAweDE2LCAweGY4LCAweGNiLCAweDQwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4YSwgMHgyYywgMHg4YiwgMHgyYiwgMHgxYiwgMHg1MiwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDhhLCAweDQ0LCAweDFmLCAweGY4LCAweDNlLCAweGY4LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4ZjcsIDB4OCwgMHg1LCAweGZjLCAweGEyLCAweDYsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMCwgMHg1LCAweGY3LCAweGU4LCAweDYsIDB4ZmMsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4NCwgMHg1LCAweGY3LCAweGM3LCAweGY5LCAweDMzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4NiwgMHhmNywgMHgyOCwgMHg2NywgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2LCAweDM0LCAweDMxLCAweDY1LCAweGU1LCAweDUsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZmIsIDB4MWIsIDB4OGIsIDB4ZjcsIDB4OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGY3LCAweDUsIDB4ZDAsIDB4OTUsIDB4YSwgMHg5ZiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDY5LCAweDYsIDB4YTUsIDB4ZjcsIDB4OSwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4NiwgMHhmNywgMHhkMSwgMHhmNywgMHhkYiwgMHg5ZSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmMsIDB4NTYsIDB4NiwgMHg3MiwgMHhmYiwgMHg1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5NCwgMHg2LCAweGZiLCAweGNlLCAweGZiLCAweGQzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4MywgMHhmOCwgMHg4OSwgMHgxNSwgMHhmNywgMHgyNSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzQsIDB4NjcsIDB4YSwgMHhmYiwgMHgxNCwgMHg2LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4NjEsIDB4ZTUsIDB4NSwgMHgyMCwgMHg2LCAweGUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYiwgMHhmOCwgMHhkYiwgMHg3NywgMHgxLCAweGU5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4MywgMHhlOSwgMHgxNiwgMHg3YywgMHhhLCAweGE4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NDcsIDB4YSwgMHhiMSwgMHhiYiwgMHgxNSwgMHhkYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OCwgMHhmNywgMHhmNSwgMHhiMiwgMHhmNywgMHg0YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmQsIDB4NiwgMHg2NywgMHhmYiwgMHg0YSwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNSwgMHhmOCwgMHg2OCwgMHg3NiwgMHhmNywgMHhhMywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NTUsIDB4ZjcsIDB4MjUsIDB4YjksIDB4ZjcsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY4LCAweDE0LCAweGY4LCAweDUzLCAweDE1LCAweGRkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhmNywgMHgyMiwgMHhhMCwgMHhmNywgMHgxNSwgMHg3YSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZmIsIDB4MTUsIDB4NSwgMHhmYiwgMHg1NywgMHhmYiwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGRkLCAweDYsIDB4YjcsIDB4ZjcsIDB4MjIsIDB4OWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1LCAweGZiLCAweGQsIDB4NiwgMHg3NywgMHhmYiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHgzYywgMHhhMCwgMHg3NiwgMHhmOCwgMHgzNSwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ2LCAweDc3LCAweDEsIDB4ZTYsIDB4MTYsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjUsIDB4ZjcsIDB4NDcsIDB4NSwgMHhmNywgMHhiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhmYiwgMHg0NywgMHg1LCAweGY3LCAweGIsIDB4NiwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ3LCAweDUsIDB4ZjcsIDB4MmUsIDB4ZjEsIDB4ZmIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGFiLCAweGY3LCAweDFjLCAweDUsIDB4ZWQsIDB4ZjIsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGI1LCAweGY3LCAweDQ2LCAweDUsIDB4ZmIsIDB4ZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4ZmIsIDB4NDYsIDB4NSwgMHhmYiwgMHg5LCAweDYsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NiwgMHg1LCAweGZiLCAweGIsIDB4NiwgMHg2MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDUsIDB4ZmIsIDB4MmIsIDB4MjQsIDB4ZjcsIDB4MTMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGZiLCAweDFjLCAweDUsIDB4MmIsIDB4MjUsIDB4ZDMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI0LCAweGYxLCAweDE1LCAweGFhLCAweGY3LCAweDFjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweDYsIDB4NmIsIDB4ZmIsIDB4MWMsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4MmQsIDB4NzYsIDB4ZTMsIDB4ZjcsIDB4MywgMHhmOSwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZjcsIDB4MmUsIDB4ZjcsIDB4ZSwgMHhmNywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4MywgMHhjZSwgMHhmNywgMHg1YiwgMHgxNSwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcsIDB4Y2YsIDB4M2MsIDB4ZWMsIDB4NzMsIDB4NzYsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhkNCwgMHg2LCAweDllLCAweGUzLCAweDUsIDB4ZjcsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhmNCwgMHhmNywgMHg1LCAweGY3LCAweDI2LCAweGZiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4NWYsIDB4OWMsIDB4MWYsIDB4YjYsIDB4ZjcsIDB4NWIsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHhhNywgMHg3YiwgMHg5NCwgMHg1MywgMHgxOSwgMHhmNywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDgwLCAweGY3LCAweDYsIDB4NDIsIDB4YmEsIDB4NDcsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHg5NSwgMHhiZSwgMHg1LCAweDQ0LCAweDYsIDB4ODEsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweGIsIDB4ZmIsIDB4MTIsIDB4NGUsIDB4ZmIsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg5ZiwgMHhmYiwgMHg1LCAweGY3LCAweDFkLCAweDUwLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4ZmIsIDB4NzEsIDB4NTAsIDB4YTUsIDB4ODQsIDB4Y2QsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHgxOSwgMHhmNywgMHgyMiwgMHhmNywgMHg4MiwgMHgxNSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDcyLCAweGE3LCAweGI0LCAweDFhLCAweGJhLCAweGIyLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4ODksIDB4MWUsIDB4NjEsIDB4ZmMsIDB4YjIsIDB4MTUsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YywgMHg1LCAweGI0LCAweDc3LCAweGIwLCAweDc2LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NjMsIDB4NzAsIDB4NGYsIDB4MmUsIDB4ODQsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDkyLCAweDdhLCAweGRiLCAweDRlLCAweDc2LCAweGY3LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4OGYsIDB4ZGIsIDB4ZjcsIDB4NWQsIDB4ZGIsIDB4OGEsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHhmYSwgMHhmMCwgMHhmNywgMHhlOSwgMHhmMCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGY3LCAweDgxLCAweGY4LCAweDZlLCAweDE1LCAweDkwLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4Y2UsIDB4OWQsIDB4YTEsIDB4ODIsIDB4NjgsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhmYiwgMHgxYywgMHg0NywgMHg2MywgMHg4YiwgMHhhYSwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDQ3LCAweGZjLCAweDgxLCAweDE1LCAweGY3LCAweDIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDc3LCAweGY4LCAweGUyLCAweGY5LCAweDZjLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDYsIDB4ZmQsIDB4MiwgMHhmYiwgMHg3NSwgMHgxNSwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDQ0LCAweGViLCAweGY3LCAweDMwLCAweGFkLCAweGY3LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4MWUsIDB4MTMsIDB4YmIsIDB4YzQsIDB4NzEsIDB4ZTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGZiLCAweDFmLCAweDVhLCAweGZiLCAweDFhLCAweDJmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NGUsIDB4ZmMsIDB4MSwgMHgxNSwgMHg0YSwgMHhiMCwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweGY3LCAweDJmLCAweGFlLCAweGY3LCAweDMwLCAweGNiLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4ZTAsIDB4MjAsIDB4ZmIsIDB4MjAsIDB4NWEsIDB4ZmIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHgxZSwgMHhmMCwgMHg4MSwgMHgxNSwgMHg5MSwgMHg5OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGQwLCAweDliLCAweGEyLCAweDgzLCAweDY4LCAweDc2LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWQsIDB4NDgsIDB4NjMsIDB4OGIsIDB4YWIsIDB4OTksIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGUyLCAweDdkLCAweGY3LCAweDUsIDB4MmEsIDB4NzYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhlNSwgMHgxMiwgMHhlNCwgMHhmNywgMHgyMywgMHg5YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDEzLCAweDk4LCAweGY3LCAweGFjLCAweGY4LCAweDNiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4NmIsIDB4ZmIsIDB4MTMsIDB4NGUsIDB4ZmIsIDB4MWYsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhjZCwgMHhmYiwgMHg4LCAweGY3LCAweDQ5LCAweGVjLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4YTksIDB4YjIsIDB4MWUsIDB4MTMsIDB4NTgsIDB4OWYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHg2OSwgMHhhNiwgMHg3YywgMHhlNywgMHhlNiwgMHgxOCwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDg2LCAweDhmLCAweDhjLCAweDFhLCAweDZkLCAweGEyLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NzIsIDB4YTIsIDB4YTcsIDB4YTUsIDB4YWUsIDB4YmIsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgyMywgMHhjNiwgMHgxOCwgMHg2OCwgMHg1NiwgMHg3YiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDgxLCAweDc2LCAweGExLCAweDU4LCAweGQxLCAweDYyLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgxMywgMHg4LCAweGY3LCAweDJmLCAweGQ2LCAweDljLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MWEsIDB4MTMsIDB4MjgsIDB4YzcsIDB4NTYsIDB4ZDcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDIzLCAweDI1LCAweDU0LCAweGZiLCAweDksIDB4NWUsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg5ZSwgMHg2NiwgMHgxZSwgMHhiZiwgMHgyYSwgMHgxNSwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGJmLCAweDQwLCAweGJiLCAweDUzLCAweDgsIDB4MTMsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3MywgMHg2MywgMHg3MywgMHg0ZiwgMHgxYiwgMHgzZSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGJiLCAweGQ5LCAweGQ1LCAweGI3LCAweGE1LCAweDk4LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4ZjcsIDB4MmYsIDB4MTUsIDB4ODQsIDB4OTgsIDB4N2MsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHgxYSwgMHgxMywgMHgwLCAweGI2LCAweGFhLCAweGIyLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4OWYsIDB4NzcsIDB4NzEsIDB4NWYsIDB4NTAsIDB4NjYsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxZSwgMHhlLCAweGZjLCAweDIxLCAweGY4LCAweDY4LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTMsIDB4NzcsIDB4MSwgMHhmNywgMHgzOSwgMHhmOCwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGU0LCAweDYsIDB4YjcsIDB4ZjcsIDB4MjIsIDB4YTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg2NiwgMHhhLCAweDc3LCAweGZiLCAweDE1LCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRmLCAweDc2LCAweGZhLCAweDQyLCAweDc3LCAweDEsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHgzLCAweGY3LCAweDMzLCAweGZiLCAweDY0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4NiwgMHg4YywgMHg4OSwgMHg5MiwgMHg4YSwgMHg4ZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGVkLCAweDc4LCAweGY3LCAweDJjLCAweGY0LCAweDFhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4ZjcsIDB4MmEsIDB4ZjcsIDB4NzYsIDB4ZjcsIDB4MywgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDUsIDB4NiwgMHgzMiwgMHgyZCwgMHhmYiwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDYyLCAweGZiLCAweGE5LCAweDFhLCAweDUwLCAweDk0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZDUsIDB4ZmIsIDB4MzgsIDB4MWUsIDB4ZSwgMHhmYiwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGZhLCAweDQyLCAweDc3LCAweDEsIDB4ZjcsIDB4ODAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHgzLCAweDcyLCAweGZiLCAweDY0LCAweDE1LCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGU0LCAweGU5LCAweGY3LCAweDU0LCAweGY3LCAweDYyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4MWEsIDB4YzYsIDB4ODIsIDB4ZjcsIDB4MjIsIDB4NDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHgxZSwgMHgyNSwgMHg2LCAweGFiLCAweDI2LCAweDlmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4ZmIsIDB4MSwgMHgxYSwgMHhmYiwgMHhkMSwgMHhmYiwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZlLCAweDUwLCAweDVmLCAweDFlLCAweGUsIDB4ZmIsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyYywgMHg3NiwgMHhmNywgMHhkZiwgMHg3NywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4ZjgsIDB4MTcsIDB4MTUsIDB4Y2MsIDB4ZjcsIDB4MiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4ZDAsIDB4YzEsIDB4MzksIDB4ZTgsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDcxLCAweGUwLCAweGZiLCAweDYsIDB4NTcsIDB4OTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg1LCAweDM3LCAweDYsIDB4OTgsIDB4ZmIsIDB4MTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGMyLCAweDZmLCAweDM2LCAweGY3LCAweGEsIDB4NmYsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg1LCAweGUsIDB4NTgsIDB4ZjcsIDB4NTIsIDB4ZjcsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweGFiLCAweGY3LCAweDE5LCAweDMsIDB4ZGQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHgxNSwgMHhmNywgMHg1OSwgMHhmYiwgMHg1MiwgMHhmNywgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUyLCAweGY3LCAweDVhLCAweGY3LCAweDE0LCAweGZiLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTAsIDB4ZmIsIDB4MTksIDB4ZmIsIDB4NTAsIDB4ZmIsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZmIsIDB4ZjksIDB4ZmIsIDB4MjcsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHg3NywgMHgxLCAweGM5LCAweDhkLCAweDE1LCAweGQwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg0YSwgMHg3MCwgMHg3NCwgMHg1YiwgMHg4MCwgMHg3ZCwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGY3LCAweDJkLCAweDhlLCAweGE0LCAweGY3LCAweDE2LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4YTUsIDB4ZjcsIDB4YSwgMHgxOCwgMHhmYiwgMHgyZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHg2YiwgMHhmNywgMHgxNiwgMHgxLCAweGQ0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4MTUsIDB4ZjcsIDB4YTksIDB4NiwgMHhhOCwgMHhmNywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4YTksIDB4NiwgMHhlLCAweGZiLCAweGY5LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4MSwgMHhjYiwgMHgxNiwgMHhmNywgMHgyYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4ZjcsIDB4MjYsIDB4NSwgMHg5NywgMHhhLCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg3OCwgMHhhLCAweDc2LCAweGY4LCAweDhkLCAweDMsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHgxNSwgMHhlZiwgMHg2LCAweGY4LCAweDI5LCAweGY5LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyNSwgMHg2LCAweGUsIDB4M2MsIDB4NzgsIDB4ZjcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDhkLCAweGY3LCAweDQsIDB4MSwgMHhlMSwgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjAsIDB4ZjcsIDB4MTAsIDB4MywgMHhlMSwgMHhmNywgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGZiLCAweDNiLCAweGVhLCAweDUwLCAweGY3LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhlMCwgMHhmNywgMHhlNiwgMHhmNywgMHgzMCwgMHhmNywgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGNjLCAweGZiLCAweDUsIDB4ZmIsIDB4N2EsIDB4MmQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhmYiwgMHgzYywgMHgxZSwgMHhmNywgMHhmLCAweDE2LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4ZjcsIDB4ZjAsIDB4ZjcsIDB4MWIsIDB4YzUsIDB4YWIsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg0NCwgMHg1MiwgMHhmYiwgMHhjYiwgMHhmYiwgMHgxYiwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGU2LCAweGEyLCAweDFlLCAweGUsIDB4M2MsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg1YSwgMHg3NywgMHgxLCAweGY3LCAweDQxLCAweGY3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg5YywgMHgxNiwgMHhmNywgMHgxNCwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZjksIDB4NWEsIDB4NSwgMHgzZSwgMHg2LCAweDM5LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MSwgMHg1NiwgMHg0YiwgMHg2YywgMHg3MywgMHhmYiwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGIzLCAweDk1LCAweGRiLCAweGE3LCAweGNkLCAweGJhLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDNjLCAweDhiLCAweGY3LCAweDEyLCAweGY4LCAweDZmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgxLCAweGY4LCAweDU0LCAweGY3LCAweDIwLCAweDMsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmOCwgMHg3NCwgMHg2LCAweGE5LCAweGY3LCAweDEyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhNiwgMHg2LCAweGIwLCAweGI1LCAweDliLCAweDk5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZjIsIDB4OCwgMHhmNywgMHgwLCAweGU0LCAweGI1LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4MWEsIDB4ZGYsIDB4NGYsIDB4ZjUsIDB4ZmIsIDB4NDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgyOCwgMHg0NSwgMHhmYiwgMHgxOSwgMHg3MywgMHgxZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDc3LCAweDUsIDB4YmYsIDB4OTYsIDB4YWUsIDB4YzksIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhjMywgMHhhZiwgMHg2MSwgMHg2NSwgMHgzOCwgMHhmYiwgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDQwLCAweDQ4LCAweDFmLCAweGZiLCAweDIsIDB4MmYsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHg3YiwgMHhmYiwgMHg5LCAweDgsIDB4ZSwgMHgzYywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYsIDB4ZjcsIDB4NjMsIDB4ZjcsIDB4OSwgMHhmNywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4MSwgMHhmOCwgMHg2MCwgMHhmNywgMHgyOCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4ZjcsIDB4NDcsIDB4MTUsIDB4ZmIsIDB4MmIsIDB4YTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDVjLCAweGYyLCAweDFiLCAweGY3LCAweDNiLCAweGYzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmNywgMHgxLCAweGM5LCAweDY4LCAweGM1LCAweDUwLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4Y2MsIDB4YTEsIDB4Y2MsIDB4YzMsIDB4ZTMsIDB4MWEsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhmMCwgMHhmYiwgMHgyZiwgMHhmYiwgMHg0YywgMHg2NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDY0LCAweDdlLCAweDFlLCAweGY3LCAweDFkLCAweDcxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg5YSwgMHhhNywgMHhiNiwgMHhjMiwgMHgxYiwgMHhhYSwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDUxLCAweDQ5LCAweDRmLCAweDY0LCAweDNkLCAweDFmLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OSwgMHg1LCAweGQwLCAweGMyLCAweDcyLCAweDQ3LCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4NTYsIDB4NDIsIDB4NGIsIDB4NzcsIDB4YjUsIDB4YzUsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDNjLCAweGEwLCAweDc2LCAweGY3LCAweDI1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmOCwgMHgzOCwgMHg3NywgMHgxLCAweGM3LCAweGY4LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjNywgMHhmNywgMHgyNSwgMHgxNSwgMHhmNywgMHhiMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ZmIsIDB4MjUsIDB4NSwgMHhmNywgMHgxYSwgMHg2LCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjUsIDB4NSwgMHhlMywgMHg2LCAweGE0LCAweGY3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDMzLCAweDYsIDB4ZWEsIDB4ZjgsIDB4NTMsIDB4N2EsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDFiLCAweGZjLCAweDU1LCAweDUsIDB4ZjcsIDB4MjIsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg1MCwgMHhmNywgMHg3MiwgMHg4ZCwgMHg4OSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcwLCAweDUsIDB4ZSwgMHgyMCwgMHg3OCwgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWIsIDB4ZjIsIDB4ZjcsIDB4MiwgMHhmNywgMHgxNCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4ZjcsIDB4MjQsIDB4ZjcsIDB4NzMsIDB4ZjcsIDB4MjcsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweGY3LCAweDVhLCAweDE1LCAweGZiLCAweDIyLCAweDhkLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZjcsIDB4OSwgMHgxYiwgMHhmNywgMHg0NCwgMHhmNywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4MjgsIDB4ZjcsIDB4OSwgMHgzZCwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQsIDB4NjAsIDB4NzMsIDB4ODEsIDB4ODMsIDB4NzgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhmNywgMHgyLCAweDUsIDB4ZjcsIDB4OGYsIDB4NiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweDUsIDB4ZmMsIDB4MTEsIDB4NiwgMHhmYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MSwgMHhmNywgMHhlLCAweDgyLCAweDUsIDB4YmUsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg4YiwgMHg5NCwgMHgxYiwgMHhiNywgMHhiOCwgMHg3MywgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDksIDB4NDIsIDB4NGQsIDB4NDksIDB4NGEsIDB4NzUsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHg4ZSwgMHgxZiwgMHhlLCAweDNjLCAweDc4LCAweGY3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiMCwgMHhlNywgMHhmNywgMHgxNSwgMHhmNywgMHg0LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhmNywgMHgyNiwgMHhmNywgMHg1ZSwgMHhmNywgMHgyNywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTMsIDB4ZjgsIDB4NGMsIDB4MTUsIDB4YjcsIDB4OTgsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2LCAweGUzLCAweDFiLCAweGM5LCAweDkwLCAweDU5LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4MWYsIDB4ZjcsIDB4MjIsIDB4OTQsIDB4NSwgMHhmNywgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NDUsIDB4YzQsIDB4ZmIsIDB4NywgMHgxYiwgMHhmYiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIsIDB4ZmIsIDB4OGYsIDB4ZmIsIDB4ODEsIDB4ZmIsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHhmYiwgMHg5LCAweGY3LCAweDJhLCAweGY3LCAweDQzLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmEsIDB4ZjcsIDB4MTQsIDB4ZjcsIDB4MTEsIDB4M2EsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMCwgMHg2NCwgMHg2YSwgMHg4MiwgMHg3NywgMHg2YiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweGZiLCAweDZlLCAweDE1LCAweGUzLCAweGI4LCAweGNlLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4YjcsIDB4NmQsIDB4MzMsIDB4ZmIsIDB4MCwgMHg1NCwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDQ3LCAweDdiLCAweGRlLCAweGI5LCAweDFlLCAweGUsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NiwgMHhmOCwgMHhkZCwgMHhmNywgMHgxMSwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4MTYsIDB4ZjcsIDB4MjcsIDB4NiwgMHhhNywgMHhmNywgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJkLCAweGY3LCAweGU3LCAweGY3LCAweDQ3LCAweGY3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4ZWIsIDB4MTgsIDB4ZmMsIDB4OWMsIDB4NiwgMHg2YywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDUsIDB4ZjcsIDB4ZTcsIDB4NiwgMHhmYiwgMHg4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDRiLCAweGZiLCAweGIzLCAweDg4LCAweDc1LCAweDgsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDc4LCAweGY2LCAweGY3LCAweDgwLCAweGY2LCAweGY3LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4MSwgMHhkMCwgMHhmNywgMHgyZCwgMHhmNywgMHg2NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweDMsIDB4ZjcsIDB4N2MsIDB4ZjgsIDB4MTYsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg1ZiwgMHg3NSwgMHhmYiwgMHhkLCAweDVkLCAweDFhLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4MzIsIDB4ZjcsIDB4MjgsIDB4ZjcsIDB4NDgsIDB4ZjEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmNywgMHg2LCAweGVlLCAweDQ3LCAweGIxLCAweDZmLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YWMsIDB4OTgsIDB4ZWUsIDB4YTksIDB4ZjcsIDB4MCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweDM3LCAweGRlLCAweGZiLCAweDFlLCAweGZiLCAweDNlLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZCwgMHgzOCwgMHgzYiwgMHhjNiwgMHg3MSwgMHhhMiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDgxLCAweGZiLCAweDY3LCAweDE1LCAweGNmLCAweGIzLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4YmUsIDB4YWYsIDB4NTUsIDB4NWIsIDB4NjAsIDB4NzIsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHg2MiwgMHg1ZSwgMHhhNCwgMHhjOSwgMHgxZSwgMHhjZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDE1LCAweGM0LCAweGJkLCAweGIzLCAweGJmLCAweGMxLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjQsIDB4NTksIDB4NWIsIDB4NWUsIDB4NTMsIDB4NWIsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhiNiwgMHgxZSwgMHhlLCAweDNjLCAweDc4LCAweGY3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0LCAweGY3LCAweDRhLCAweGM2LCAweGU3LCAweGY3LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NCwgMHgxLCAweGY3LCAweDksIDB4ZjcsIDB4MjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhmNywgMHgyOCwgMHgzLCAweGQ5LCAweGY3LCAweDMzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZCwgMHg5YSwgMHhkMiwgMHg1MiwgMHhmNywgMHg3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmMsIDB4ZjcsIDB4YywgMHhmNywgMHg5MCwgMHhmNywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweDNmLCAweGY3LCAweDgsIDB4ZmIsIDB4MmIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHgyYywgMHhmYiwgMHgyZiwgMHhmYiwgMHgxNCwgMHhmYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDNiLCAweGY3LCAweDExLCAweGIyLCAweGFiLCAweDk0LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4MWYsIDB4NWYsIDB4N2UsIDB4NjcsIDB4ZmIsIDB4NiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDRkLCAweDg2LCAweGJkLCAweGE0LCAweDg4LCAweDFmLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTcsIDB4MTUsIDB4ZjcsIDB4MCwgMHhjMiwgMHhjYSwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDlhLCAweDNhLCAweDVkLCAweDMzLCAweDVmLCAweDQ2LCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NWUsIDB4YTQsIDB4ZTMsIDB4MWUsIDB4ZSwgMHg4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGY3LCAweDhmLCAweGY3LCAweDE2LCAweDEsIDB4ZjcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxMiwgMHgxNSwgMHhmNywgMHgyNiwgMHg2LCAweGE4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4OTMsIDB4YSwgMHhmYiwgMHg1LCAweGZjLCAweDk0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4NiwgMHhhOCwgMHhmNywgMHgxNywgMHg5MywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHgyNywgMHg3NiwgMHhmNywgMHg0NywgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGY3LCAweDE5LCAweDEsIDB4YzMsIDB4ZjcsIDB4YmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweDgxLCAweDE1LCAweGNmLCAweDYsIDB4N2QsIDB4NGYsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg1YywgMHg4MSwgMHg3ZCwgMHg0OSwgMHgxOCwgMHhmNywgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweGE1LCAweGY3LCAweGQsIDB4OTcsIDB4YzUsIDB4YTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDE4LCAweDk3LCAweGEsIDB4YzIsIDB4ZjcsIDB4OTMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNywgMHg2LCAweGE5LCAweGY3LCAweDE5LCAweDdiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDU4LCAweDk4LCAweDc2LCAweGY4LCAweDllLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHhmNywgMHg1OCwgMHgxNSwgMHhmOCwgMHg4YiwgMHhmYiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MTcsIDB4NywgMHhmYiwgMHhkZCwgMHhmNywgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGRkLCAweGY3LCAweDEzLCAweDUsIDB4ZjcsIDB4MTksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDhiLCAweGZiLCAweDYwLCAweDUsIDB4ZSwgMHg1OCwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIsIDB4ZTksIDB4ZjcsIDB4YiwgMHgxLCAweGM1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4MywgMHhjNSwgMHhlMiwgMHgxNSwgMHhmOCwgMHhkMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmMsIDB4ZDMsIDB4NiwgMHhlOSwgMHg0LCAweGY4LCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YiwgMHhmYywgMHhkMywgMHg2LCAweGUsIDB4NTgsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOCwgMHg5ZSwgMHg3NywgMHgxLCAweGY1LCAweDgzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OGIsIDB4ZjcsIDB4NjAsIDB4NSwgMHhmNywgMHg2LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4YiwgMHhmNywgMHg2MCwgMHg5OCwgMHhhLCAweDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmYiwgMHgxNywgMHhmYiwgMHhkYywgMHhmYiwgMHgxMywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3MywgMHg4YiwgMHhmNywgMHgxYiwgMHhmOCwgMHg3ZCwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4OTgsIDB4ZjcsIDB4NDcsIDB4MTUsIDB4ZjcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDk2LCAweGNhLCAweDlmLCAweDliLCAweGRkLCAweGNlLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweGVhLCAweGJlLCAweGJjLCAweGRhLCAweDFhLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4ZWEsIDB4ZmIsIDB4MzUsIDB4ZmIsIDB4NTAsIDB4NDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0NSwgMHg3OSwgMHgxZSwgMHhmNywgMHgxNywgMHg3NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHhhNiwgMHhkMywgMHg5MywgMHhiNiwgMHgxYiwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDVmLCAweDZiLCAweDY2LCAweDc1LCAweDc5LCAweDM1LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4NCwgMHgyZCwgMHg2MSwgMHg1YiwgMHg3YywgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NWYsIDB4ZmIsIDB4NDcsIDB4MTUsIDB4ZjcsIDB4MjEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGY3LCAweDFiLCAweDkyLCAweGEsIDB4ZSwgMHhmOCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweGRhLCAweGY3LCAweDAsIDB4ZGEsIDB4ZjcsIDB4Y2EsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHhkYSwgMHgxLCAweGY3LCAweDYxLCAweGRiLCAweGUwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmOCwgMHg2NCwgMHhkYiwgMHgzLCAweGY5LCAweDI1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4MTUsIDB4NzksIDB4OGYsIDB4OTQsIDB4NmMsIDB4Y2UsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NiwgMHhmNywgMHg0LCAweGY3LCAweDM3LCAweGY3LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGMsIDB4ZmIsIDB4MWIsIDB4ZjcsIDB4MmEsIDB4ZmIsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkNCwgMHhmYiwgMHgxNCwgMHhmYiwgMHg4NywgMHhmYiwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGE1LCAweGY3LCAweDdmLCAweGZiLCAweDksIDB4ZjcsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZCwgMHhmNywgMHg0NywgMHhiNCwgMHhmNywgMHgyZSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDJmLCAweDYsIDB4NjgsIDB4NmQsIDB4NDYsIDB4M2EsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHgxYiwgMHhmYiwgMHhiNSwgMHgzOSwgMHhmNywgMHg0MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweGYsIDB4Y2EsIDB4ZjcsIDB4ODQsIDB4ZjcsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3YSwgMHhjYywgMHhmYiwgMHgyYiwgMHgyOCwgMHhmYiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMsIDB4MzAsIDB4NjEsIDB4NzMsIDB4OTEsIDB4YTksIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHgxZiwgMHhjYywgMHhmNywgMHhjYiwgMHg1LCAweGZiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDgwLCAweDViLCAweDUsIDB4YzAsIDB4NjcsIDB4NTYsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHgxYiwgMHhmYiwgMHgzMCwgMHgzYiwgMHhmYiwgMHgzOSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4MjgsIDB4YzgsIDB4MzgsIDB4ZjUsIDB4ZDAsIDB4YjMsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg5NiwgMHgxZiwgMHhmYiwgMHg0MiwgMHhmNywgMHgxOSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweGFiLCAweGY3LCAweDI2LCAweGYwLCAweGQyLCAweDk1LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NTEsIDB4NmEsIDB4ZmIsIDB4MmMsIDB4MjQsIDB4NGYsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhiZSwgMHgxZSwgMHhlLCAweDY4LCAweGEsIDB4ZjcsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjLCAweGY4LCAweDRiLCAweDc3LCAweDEsIDB4OWYsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhhLCAweGUxLCAweGY3LCAweDMzLCAweDUsIDB4ZjcsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGEzLCAweGZiLCAweDMzLCAweDUsIDB4ZjcsIDB4MWYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgsIDB4ZjksIDB4NjIsIDB4NDMsIDB4YSwgMHgyNywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDE1LCAweGY3LCAweDMwLCAweGY3LCAweGI1LCAweDVjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhmYiwgMHhiNSwgMHg1LCAweGUsIDB4ZTIsIDB4OGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGY3LCAweDUwLCAweGY3LCAweGMsIDB4ZjcsIDB4M2UsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweGVmLCAweDYsIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhmNywgMHg0YywgMHhjMCwgMHg2YywgMHhkMSwgMHgzMiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDhkLCAweDcsIDB4YTksIDB4OTMsIDB4ZjcsIDB4MiwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEyLCAweDFhLCAweGY3LCAweDIzLCAweDI0LCAweGJjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4MWUsIDB4ZmIsIDB4OTAsIDB4NiwgMHhhMiwgMHhmYywgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGIzLCAweGY3LCAweDUwLCAweDUsIDB4ZjcsIDB4NDgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGU5LCAweDhiLCAweDM5LCAweDI1LCAweDI0LCAweDg3LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4M2MsIDB4ZjcsIDB4YzgsIDB4MTUsIDB4YWYsIDB4ZjcsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDksIDB4NiwgMHhkNSwgMHhjZiwgMHg4YiwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDJiLCAweDg3LCAweDM3LCAweDFmLCAweGUsIDB4ZTIsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMiwgMHhmOCwgMHg4YywgMHhmNywgMHgxMiwgMHgxLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmMsIDB4MywgMHhmOCwgMHhlNiwgMHhmNywgMHg5NSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIsIDB4NjQsIDB4MzQsIDB4NmMsIDB4NTEsIDB4MWIsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhlMywgMHhlZiwgMHhmNywgMHhhLCAweDgwLCAweGEsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHgxZiwgMHhmNywgMHgyOCwgMHg5OSwgMHg1LCAweGY3LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ZmIsIDB4MTYsIDB4Y2QsIDB4ZmIsIDB4MWMsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHhmYiwgMHgzNSwgMHhmYiwgMHg1NCwgMHhmYiwgMHg4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGNlLCAweGZiLCAweDMxLCAweGY3LCAweDc1LCAweGY3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4OSwgMHhiNiwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4YSwgMHhkNywgMHgxNiwgMHhmNywgMHg5OCwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ZjcsIDB4NjUsIDB4ZjcsIDB4MjQsIDB4ZjcsIDB4YTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhmYiwgMHgzLCAweGQ5LCAweGZiLCAweDgxLCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4NiwgMHhhMCwgMHhmYywgMHhlYywgMHgxNSwgMHhmMywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDUsIDB4ZTEsIDB4NiwgMHhkOCwgMHhmNCwgMHg4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweGZiLCAweDhhLCAweGZiLCAweDM4LCAweDU0LCAweGZiLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhhYiwgMHg4YiwgMHhmNywgMHhjLCAweGY3LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YywgMHhmNywgMHgzOCwgMHg4YiwgMHhhLCAweGY4LCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhNSwgMHg4MywgMHhhLCAweGZjLCAweDMxLCAweDYsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NiwgMHg1LCAweGY3LCAweGZlLCAweDQwLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZSwgMHg2LCAweGFkLCAweGY3LCAweDM4LCAweDUsIDB4ZjgsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhhLCAweGZjLCAweGE3LCAweDYsIDB4ZSwgMHg4NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzUsIDB4ZjcsIDB4YywgMHhmNywgMHg0MSwgMHg4YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4YSwgMHhjYywgMHhmNywgMHhjNSwgMHg1LCAweGY3LCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4YSwgMHhmYiwgMHhlYSwgMHg2LCAweGFmLCAweGY3LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHhmZSwgMHg0MCwgMHhhLCAweGZjLCAweDkzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDhjLCAweGEsIDB4ZjcsIDB4MmUsIDB4ZjcsIDB4ZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGY3LCAweDEyLCAweDEsIDB4ZjcsIDB4MCwgMHhmNywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjgsIDB4NGMsIDB4ZjcsIDB4OTksIDB4MTUsIDB4ZjcsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDc0LCAweGZiLCAweDAsIDB4NSwgMHg4MSwgMHg3OCwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDMyLCAweDFiLCAweDRkLCAweDI1LCAweDk4LCAweGY3LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4ZDEsIDB4ZjcsIDB4NDQsIDB4ZjcsIDB4NTUsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHg2ZCwgMHgyZiwgMHhhNywgMHgxZiwgMHhmNywgMHgxZiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4M2EsIDB4NzEsIDB4ZmIsIDB4MTUsIDB4Y2UsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHgxYiwgMHhmYiwgMHhiMiwgMHhmYiwgMHhjLCAweGZiLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTUsIDB4ZmIsIDB4NDksIDB4ZWUsIDB4ZmIsIDB4ZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweGY3LCAweDI2LCAweGY3LCAweDksIDB4YzQsIDB4YWIsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjZCwgMHhmNywgMHhjZSwgMHg1LCAweGZiLCAweGRhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDY4LCAweGEsIDB4ZjcsIDB4ZDQsIDB4ZjcsIDB4ZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDc3LCAweDEsIDB4ZDIsIDB4MTYsIDB4NWUsIDB4YSwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQ0LCAweDUsIDB4ZjcsIDB4YWQsIDB4NiwgMHg0NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDUsIDB4NWUsIDB4YSwgMHhmNywgMHgyYywgMHhmOSwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweGEsIDB4NTAsIDB4ZmIsIDB4YTksIDB4NSwgMHhmYiwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YzUsIDB4ZjcsIDB4YTksIDB4NWEsIDB4YSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MzcsIDB4YSwgMHhjYiwgMHgxNiwgMHg1ZSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4ZjksIDB4NjIsIDB4NSwgMHg5NywgMHhhLCAweGUsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhmNywgMHgxMSwgMHhmOCwgMHhmNywgMHg3NywgMHgxLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWIsIDB4MTUsIDB4ZmIsIDB4MjAsIDB4YmIsIDB4M2UsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhmNywgMHg1YiwgMHhiNywgMHhmNywgMHhkLCAweGY3LCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4MWUsIDB4ZTYsIDB4ZjgsIDB4NGEsIDB4N2IsIDB4YSwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDRhLCAweDg1LCAweGEsIDB4NmYsIDB4NmEsIDB4NjYsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgyZiwgMHg5OCwgMHhjZiwgMHhiMSwgMHg4ZCwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4MzcsIDB4YSwgMHhlMiwgMHgxNiwgMHg1ZSwgMHhhLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzAsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4ZSwgMHhmNywgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGVhLCAweDUsIDB4ZjcsIDB4M2QsIDB4NiwgMHhmYiwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDQ5LCAweGY3LCAweGQ5LCAweGY3LCAweGFkLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg2LCAweGZiLCAweGUxLCAweGZiLCAweGM0LCAweDg5LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4ZjcsIDB4YzIsIDB4NTMsIDB4YSwgMHhlLCAweDg3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHgxNiwgMHhmOCwgMHg5MiwgMHg1MCwgMHhhLCAweGZiLCAweGZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgxMCwgMHhmOCwgMHhlOSwgMHg3YiwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YSwgMHgzNywgMHhhLCAweGY3LCAweGUxLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGQwLCAweDE2LCAweDgyLCAweGEsIDB4ZjcsIDB4NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweDVjLCAweGEsIDB4YTYsIDB4ZmMsIDB4ZWMsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDYsIDB4ZjcsIDB4YjAsIDB4ZjgsIDB4ZTcsIDB4OGQsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMywgMHhmYywgMHhlNSwgMHg1LCAweGY3LCAweDFjLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYywgMHhmOSwgMHg2MiwgMHg1LCAweGZiLCAweDZiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4YSwgMHhmYywgMHg4YiwgMHg1MSwgMHhhLCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4NSwgMHhmYiwgMHg2OSwgMHg2LCAweGUsIDB4ZTIsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGQwLCAweGY5LCAweDc2LCAweDMsIDB4OGEsIDB4YSwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDc3LCAweDVjLCAweGEsIDB4ZjcsIDB4NTksIDB4ZmMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDliLCAweGEsIDB4ZjcsIDB4MmQsIDB4ZjksIDB4NjIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDI1LCAweGZjLCAweDc0LCAweDUxLCAweGEsIDB4ZmIsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg3NCwgMHg2NSwgMHhhLCAweDhjLCAweGEsIDB4ZjgsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMiwgMHgxLCAweGY3LCAweDE3LCAweGY3LCAweDJhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhmNywgMHgyYSwgMHgzLCAweGY2LCAweGY3LCAweGIxLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjIsIDB4ZTMsIDB4ZmIsIDB4MzYsIDB4ZjcsIDB4NjksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhmNywgMHgxNiwgMHhmNywgMHg5MywgMHhmNywgMHg1NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGZiLCAweDYsIDB4ZjcsIDB4MTQsIDB4ZmIsIDB4NTMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHgyNSwgMHhmYiwgMHhhZiwgMHhmYiwgMHgzZCwgMHgxZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDE2LCAweGY3LCAweDM3LCAweGYwLCAweGY3LCAweDM3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4ZjcsIDB4MywgMHhjMiwgMHgzMywgMHgyYiwgMHhmYiwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4ZmIsIDB4NWYsIDB4ZmIsIDB4M2MsIDB4MmEsIDB4NDQsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHgxZSwgMHhlLCAweGFiLCAweGEwLCAweDc2LCAweGY3LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YywgMHhmNywgMHg2MCwgMHg4YiwgMHhhLCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjNCwgMHhmNywgMHhhNiwgMHg1LCAweGVhLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhmNywgMHg0MiwgMHhiYSwgMHhmNywgMHg2MCwgMHhmNywgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNjLCAweDk3LCAweDU3LCAweDFmLCAweGZiLCAweGI5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhmYiwgMHhkOCwgMHgxNSwgMHhiNiwgMHhmNywgMHg2MCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4NiwgMHhkNiwgMHhjOSwgMHg4ZCwgMHg0MCwgMHhmYiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTksIDB4N2YsIDB4ZmIsIDB4MSwgMHgxZiwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4NmMsIDB4NzYsIDB4ZGIsIDB4ZjcsIDB4YSwgMHhmOCwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEsIDB4MzYsIDB4YSwgMHhmOCwgMHhjNCwgMHhjMCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDZiLCAweGIzLCAweDVlLCAweGNhLCAweDZmLCAweGQzLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4NjcsIDB4OWUsIDB4NjcsIDB4YTUsIDB4NmQsIDB4YTYsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZTEsIDB4YzAsIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDNmLCAweGZiLCAweDcsIDB4ZjcsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGZiLCAweGQwLCAweDJhLCAweGZiLCAweGE4LCAweGZiLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWYsIDB4ZTYsIDB4ZmIsIDB4MjUsIDB4ZjcsIDB4NjYsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg5MiwgMHg5ZCwgMHhiZSwgMHgxZSwgMHhmYiwgMHgzNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDE1LCAweGI4LCAweDdiLCAweGIwLCAweDY3LCAweDg1LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NWEsIDB4OGIsIDB4ODYsIDB4MzIsIDB4M2EsIDB4YmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGY3LCAweDE1LCAweGU2LCAweGY3LCAweDQ2LCAweGY3LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHhjMywgMHgzZCwgMHgyZSwgMHg1YSwgMHg3NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4M2MsIDB4M2YsIDB4MWUsIDB4NjIsIDB4YjgsIDB4NjUsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg5ZCwgMHg4LCAweGUsIDB4NjgsIDB4YSwgMHhmNywgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZjcsIDB4NTMsIDB4OTYsIDB4YSwgMHhmOSwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI3LCAweDMsIDB4ZDcsIDB4MTYsIDB4ZjcsIDB4MjksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGY3LCAweGJiLCAweDUsIDB4YzcsIDB4NiwgMHhiNywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDVkLCAweGFiLCAweDFmLCAweGI1LCAweDUwLCAweGNlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ODksIDB4MWEsIDB4ZjcsIDB4MzQsIDB4NiwgMHg2MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4NTEsIDB4ZjcsIDB4MWYsIDB4NGIsIDB4YzQsIDB4OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OWEsIDB4ZjcsIDB4NSwgMHhiZSwgMHhmNywgMHgzMiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUxLCAweGZiLCAweDM2LCAweDhiLCAweDQ3LCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4NiwgMHhkZSwgMHhmYiwgMHhjYiwgMHgxNSwgMHhiMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDUsIDB4ZjcsIDB4MzgsIDB4NiwgMHhiYywgMHhjZiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweGZiLCAweDQsIDB4ZmIsIDB4MWMsIDB4ODMsIDB4MjEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGFiLCAweDc4LCAweGY3LCAweDEyLCAweGY4LCAweDkyLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkYywgMHhmNywgMHg3YSwgMHgxNSwgMHhmYiwgMHg1MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDUxLCAweGY3LCAweDI0LCAweGY3LCAweDY3LCAweGRmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhmNywgMHgwLCAweGY3LCAweDEwLCAweDM0LCAweGMzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4YzIsIDB4MWUsIDB4MzUsIDB4YWUsIDB4NTksIDB4OGUsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhkOCwgMHhlNywgMHg5ZCwgMHhhNSwgMHhkMSwgMHhjZCwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDFlLCAweGY3LCAweDI3LCAweDkyLCAweDUsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZiwgMHhjZiwgMHhmYiwgMHgyMywgMHhmYiwgMHg2NSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEzLCAweDMzLCAweGZiLCAweDEyLCAweGU1LCAweDY0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NTQsIDB4MWUsIDB4ZGMsIDB4NjgsIDB4YjgsIDB4NzksIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgzZSwgMHgzMiwgMHg3ZSwgMHg1NywgMHhmYiwgMHgyMywgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGNhLCAweDg5LCAweDFlLCAweGUsIDB4ODQsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGY3LCAweGQsIDB4MSwgMHhmNywgMHg3NywgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDYsIDB4ZjcsIDB4MTUsIDB4ZjgsIDB4ZTksIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDYsIDB4YTUsIDB4ZjcsIDB4ZCwgMHg1LCAweGZjLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3MSwgMHhmYiwgMHhkLCAweDUsIDB4ZjcsIDB4NmMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZTIsIDB4NzgsIDB4ZjcsIDB4MTEsIDB4ZjgsIDB4ZjgsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDgsIDB4ZjcsIDB4MmIsIDB4MywgMHhmNywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDYyLCAweDE1LCAweDM5LCAweGZjLCAweDIwLCAweDUsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg4NiwgMHg2NywgMHg2NSwgMHgxYSwgMHhmYiwgMHhkLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4ZmIsIDB4MiwgMHhmNywgMHg1ZiwgMHgxYiwgMHhmNywgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGY3LCAweDYwLCAweGY3LCAweDFkLCAweGE4LCAweDFmLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjAsIDB4NSwgMHhmYiwgMHgyYywgMHg2LCAweDM2LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4NSwgMHhmYiwgMHgxMSwgMHg3MSwgMHg0OSwgMHgzMCwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDM2LCAweDZlLCAweGJhLCAweGM4LCAweGIwLCAweDhmLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4YWMsIDB4MWYsIDB4ZGYsIDB4ZjgsIDB4MjAsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MzcsIDB4YSwgMHhmNywgMHhiNiwgMHgxNiwgMHhmNywgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjgsIDB4MSwgMHhmOSwgMHg2MiwgMHg5MSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ZmMsIDB4YjMsIDB4NTEsIDB4YSwgMHgzOSwgMHhmOCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweGEsIDB4ZSwgMHhmNywgMHhjOSwgMHgzNywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4ZjcsIDB4MTQsIDB4ZjcsIDB4YjUsIDB4ZjcsIDB4MywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTcsIDB4MTYsIDB4ZjcsIDB4MjYsIDB4NiwgMHhmNywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGEwLCAweDVjLCAweGEsIDB4OWEsIDB4ZmMsIDB4YTAsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweGUwLCAweGY5LCAweDYyLCAweDUsIDB4ZmIsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDc1LCAweGZjLCAweDg1LCAweDUxLCAweGEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg4NSwgMHg1LCAweGZiLCAweDJlLCAweDYsIDB4ZmIsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4YSwgMHg1MSwgMHhhLCAweDg1LCAweGY4LCAweDhhLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhYiwgMHgzNywgMHhhLCAweDk5LCAweDE2LCAweGY3LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg1MCwgMHhmNywgMHg3YiwgMHhmMywgMHhmYiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MzMsIDB4NiwgMHhmYiwgMHgzYiwgMHhmNywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGNjLCAweGY4LCAweGUsIDB4NSwgMHhmYiwgMHg0NSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWYsIDB4ZmIsIDB4OGIsIDB4ZmIsIDB4YSwgMHhmNywgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGEsIDB4ZjcsIDB4M2UsIDB4ZmIsIDB4ZjYsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MzcsIDB4YSwgMHhmNywgMHgzYywgMHhmOSwgMHgxMiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4YSwgMHhmNywgMHg5ZSwgMHhmNywgMHhjYywgMHhmOCwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweGEsIDB4ZmIsIDB4NWQsIDB4ZmIsIDB4YzcsIDB4ZmIsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjNywgMHg1YSwgMHhhLCAweGY3LCAweDUxLCAweGZjLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweDg0LCAweGEsIDB4ZjgsIDB4ZTksIDB4ZjcsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YTQsIDB4MTYsIDB4ZjgsIDB4ZmIsIDB4NiwgMHhhNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4NSwgMHg4YSwgMHhmYywgMHgzMywgMHg4YywgMHg4YiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDYyLCAweGY4LCAweDdkLCAweGEyLCAweGY3LCAweDQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGNmLCAweDYsIDB4NmYsIDB4ZmIsIDB4ZCwgMHg1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2LCAweGZjLCAweDViLCAweGZjLCAweDc4LCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGEsIDB4ZjcsIDB4NDgsIDB4MzUsIDB4MTUsIDB4ZjcsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg0ZSwgMHg1LCAweGY3LCAweDEsIDB4NiwgMHhhMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4NSwgMHhmYiwgMHg4OSwgMHg2LCAweGZiLCAweDU4LCAweGZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4NSwgMHhmNywgMHg4OSwgMHg2LCAweGEzLCAweGY3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4ZmIsIDB4ZjksIDB4NzgsIDB4YSwgMHhmNywgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg3LCAweDMsIDB4ZjcsIDB4ODUsIDB4NzgsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg2LCAweGZiLCAweDcsIDB4ZjksIDB4ODgsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDYsIDB4ZSwgMHg3ZiwgMHhhLCAweDkxLCAweDM1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4ZmIsIDB4MiwgMHg1LCAweGY3LCAweDg5LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhmYSwgMHgyYSwgMHg1LCAweGZiLCAweDg5LCAweDYsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyLCAweDUsIDB4ZjcsIDB4MiwgMHg2LCAweGZiLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4NGUsIDB4NSwgMHhlLCAweDU4LCAweGY3LCAweGVjLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YiwgMHg3NywgMHgxLCAweGY3LCAweDE3LCAweGY3LCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MWMsIDB4NiwgMHhlOSwgMHhmNywgMHg3OSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDc5LCAweDUsIDB4ODIsIDB4YSwgMHhmYiwgMHg0MiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NSwgMHgyMCwgMHg2LCAweGUsIDB4M2MsIDB4ZmIsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgxLCAweDcwLCAweDQwLCAweDE1LCAweDU5LCAweGY4LCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4NywgMHhlLCAweDcyLCAweGEsIDB4ZjcsIDB4OGMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHgxNSwgMHhmNCwgMHg2LCAweDQ3LCAweGY3LCAweDI2LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDQyLCAweGEsIDB4ZjcsIDB4ZjEsIDB4ZjIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY4LCAweDFhLCAweDg5LCAweDJmLCAweGEsIDB4MTMsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhhLCAweGFhLCAweGIyLCAweDFhLCAweGFiLCAweDdjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgzMywgMHhhLCAweDgwLCAweDUsIDB4YjgsIDB4OTgsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhiOCwgMHgxYiwgMHhjZSwgMHhhOCwgMHg1YSwgMHg1NSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDZjLCAweDgwLCAweDU0LCAweDg2LCAweDUwLCAweDg2LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg4NiwgMHhmYiwgMHgyZiwgMHg4MSwgMHhmYiwgMHgzNCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweGQ2LCAweDUwLCAweGUxLCAweDFlLCAweDMwLCAweGEsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YSwgMHgxNSwgMHg2MCwgMHg4MSwgMHg3NywgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDVhLCAweDc3LCAweGExLCAweGE3LCAweGNhLCAweGRjLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4OTcsIDB4MWYsIDB4ZSwgMHg3MywgMHg3ZCwgMHhmNiwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY4LCAweDQ1LCAweGYwLCAweGY3LCAweDRlLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjcsIDB4ZjcsIDB4MTgsIDB4ZjcsIDB4MzYsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3YywgMHhjOCwgMHg4OSwgMHgxNSwgMHhmNywgMHgxOCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ZTEsIDB4NWMsIDB4YSwgMHgxMywgMHhiNCwgMHg3MywgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDQxLCAweGY3LCAweDcsIDB4MWIsIDB4ZjcsIDB4MjUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGY3LCAweDIzLCAweGY3LCAweDRmLCAweGY3LCAweDUsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhmYiwgMHgxYiwgMHg0MiwgMHg1ZiwgMHg2YywgMHg3MywgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGJlLCAweGY3LCAweDg1LCAweDQ0LCAweGEsIDB4MTMsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhmYywgMHg5MCwgMHgxNSwgMHhmNywgMHgzLCAweGM0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhlNiwgMHhjMSwgMHhiYSwgMHg2MCwgMHgzZiwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDM4LCAweDVlLCAweGZiLCAweDFjLCAweDI1LCAweDRjLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4YzYsIDB4MWUsIDB4ZSwgMHgzYywgMHg3ZCwgMHhmNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTgsIDB4ZjYsIDB4MSwgMHhkYSwgMHhmNywgMHgyMywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzgsIDB4ZjcsIDB4NWIsIDB4MTUsIDB4MzYsIDB4NmQsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3MCwgMHgxYiwgMHg2MywgMHg2MiwgMHhiMiwgMHhkMCwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGY3LCAweDI3LCAweGY3LCAweDUsIDB4ZDcsIDB4OTMsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg4ZCwgMHgxZiwgMHhmNywgMHgxZSwgMHg5YSwgMHg1LCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NGQsIDB4ZTYsIDB4ZmIsIDB4MjUsIDB4MWIsIDB4ZmIsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlLCAweGZiLCAweDJmLCAweGZiLCAweDRjLCAweGZiLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhmYiwgMHgxLCAweGY3LCAweDM2LCAweGY3LCAweDE2LCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4ZjcsIDB4OCwgMHhiNiwgMHgxZiwgMHhlLCAweDczLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4MmMsIDB4ZWEsIDB4ZjcsIDB4ZGUsIDB4ZjcsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDc3LCAweDEyLCAweDEzLCAweDcwLCAweGY4LCAweDM4LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MTcsIDB4NiwgMHhmNywgMHgyZCwgMHhmOSwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGEsIDB4NTIsIDB4ZmIsIDB4YTEsIDB4NSwgMHg5ZSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGNiLCAweDIwLCAweDFiLCAweGZiLCAweDMyLCAweDI0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4ZmIsIDB4M2MsIDB4MWYsIDB4MTMsIDB4YjAsIDB4ZmIsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHgzZCwgMHhmNywgMHg2LCAweGUxLCAweGJlLCAweGIzLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4MWUsIDB4OGQsIDB4ODksIDB4NSwgMHgxMywgMHg3MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGY3LCAweDJjLCAweDE1LCAweGU3LCAweGJlLCAweGY3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4YzgsIDB4YjQsIDB4NTQsIDB4NDksIDB4M2YsIDB4NjIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHgyMiwgMHg0YiwgMHg2OCwgMHhiYSwgMHhjYiwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZjcsIDB4NzEsIDB4ZTMsIDB4ZjcsIDB4MWEsIDB4ZjIsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDY4LCAweGY3LCAweDcxLCAweDE1LCAweGY4LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDkzLCAweGFlLCAweDhjLCAweGI4LCAweDk5LCAweDFhLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4ZjcsIDB4MTYsIDB4ZmIsIDB4NDEsIDB4ZmIsIDB4NmQsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1MywgMHhmYiwgMHgxYSwgMHhmYiwgMHgyNCwgMHhlYiwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJjLCAweGQ3LCAweGY3LCAweDAsIDB4YTYsIDB4ZjcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHgxZSwgMHhmYiwgMHgxOSwgMHhhMCwgMHg1LCAweDdiLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4NTEsIDB4NDEsIDB4MWIsIDB4NGUsIDB4NTksIDB4YmMsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHgxZiwgMHg5YSwgMHhlMywgMHgxNSwgMHhiZCwgMHg5NiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGUwLCAweDFiLCAweGQ4LCAweGE1LCAweDRjLCAweDQ0LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhhMCwgMHg3NiwgMHhmOCwgMHgzMywgMHhmMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDc3LCAweDEsIDB4ZTIsIDB4MTYsIDB4ZjcsIDB4MTUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGY4LCAweDMzLCAweDUsIDB4ZTYsIDB4NiwgMHg5ZiwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MzAsIDB4NiwgMHhkYSwgMHg5OSwgMHg5MSwgMHhhNCwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDk4LCAweGE2LCAweDg2LCAweDdlLCAweGFkLCAweDFmLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4NSwgMHg5YywgMHg1YSwgMHg1ZSwgMHg5MSwgMHg2ZCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGEsIDB4ODAsIDB4MjgsIDB4ZmIsIDB4MywgMHg2ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDYsIDB4NzYsIDB4MjUsIDB4NSwgMHhkNCwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhmYiwgMHg2ZCwgMHhmMiwgMHhmNywgMHgzLCAweGY2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4ZjIsIDB4N2UsIDB4NzcsIDB4MTIsIDB4MTMsIDB4ZDAsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgxNSwgMHhmYiwgMHg0NiwgMHhmNywgMHg0MCwgMHg4MSwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdiLCAweGEzLCAweGY2LCAweGY3LCAweDVhLCAweGI1LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4ZjgsIDB4NTEsIDB4M2QsIDB4YSwgMHg3OCwgMHgyZCwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4ZTAsIDB4ZDMsIDB4NjgsIDB4NDgsIDB4YWUsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgxZCwgMHhmYiwgMHgxNCwgMHgyMCwgMHhmYiwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNkLCAweGYyLCAweDRiLCAweGRkLCAweGRlLCAweGMyLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OWYsIDB4MWYsIDB4OGQsIDB4ODksIDB4NSwgMHhmYiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4ODAsIDB4NTMsIDB4MjQsIDB4MWIsIDB4NDQsIDB4ODAsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg4ZCwgMHgxZiwgMHg5ZCwgMHhmNywgMHhhYywgMHgxNSwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGY3LCAweDMwLCAweGY0LCAweGNiLCAweGI0LCAweDRkLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4NTMsIDB4ZmIsIDB4OCwgMHgyYywgMHg1MSwgMHg2MiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDFlLCAweGUsIDB4ODQsIDB4YSwgMHhmOCwgMHg0NCwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRlLCAweDc3LCAweDEsIDB4ZjgsIDB4NzYsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGNjLCAweDE2LCAweDdjLCAweGEsIDB4YjcsIDB4ZjcsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY0LCAweGEyLCAweGIyLCAweGY3LCAweGQsIDB4ZjYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg5OCwgMHg2ZiwgMHg2OSwgMHg3NiwgMHg4NywgMHg3NCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDFmLCAweDQ5LCAweGZiLCAweGM0LCAweDUsIDB4N2MsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweGY3LCAweGM0LCAweDUsIDB4OTEsIDB4YTcsIDB4OTIsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgxYSwgMHhjZCwgMHg2ZiwgMHhjYSwgMHhmYiwgMHgzLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NWQsIDB4NzMsIDB4NmIsIDB4MWUsIDB4YzEsIDB4ZjcsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhhLCAweGUsIDB4NDgsIDB4YSwgMHhmOCwgMHhhMSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweGY3LCAweDE0LCAweDEsIDB4ZDAsIDB4MTYsIDB4OWIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEsIDB4ZjgsIDB4YTEsIDB4OTIsIDB4YSwgMHg5YiwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDliLCAweGEsIDB4YTYsIDB4ZjcsIDB4MTQsIDB4OTIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4ZjksIDB4ZmIsIDB4NTUsIDB4NzYsIDB4MSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDE1LCAweDc3LCAweGZiLCAweGEsIDB4NSwgMHg3YywgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDhiLCAweDk0LCAweDFiLCAweGY3LCAweGUsIDB4YjEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhmNywgMHgxZCwgMHhhNSwgMHgxZiwgMHhkZiwgMHhmOCwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MTYsIDB4NiwgMHgzYSwgMHhmYywgMHg1MSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzAsIDB4NmMsIDB4N2UsIDB4N2UsIDB4NjMsIDB4MWIsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg4YywgMHg5MiwgMHg3MywgMHgxZiwgMHhmNywgMHg3YiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDE1LCAweGY3LCAweDE2LCAweDYsIDB4YTMsIDB4ZjcsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDE2LCAweDYsIDB4ZSwgMHgzYywgMHgzNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4MTYsIDB4ZjcsIDB4MjYsIDB4NiwgMHhhZSwgMHhmNywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweGRmLCAweGQ2LCAweGZiLCAweDg1LCAweDUsIDB4ZjcsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDgsIDB4ZjcsIDB4ZGYsIDB4ZjcsIDB4NmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHg1LCAweGZiLCAweDUyLCAweDYsIDB4ZmIsIDB4NTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg4OSwgMHg4ZCwgMHhkZCwgMHhmOCwgMHg4LCAweDkzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweGY5LCAweDM3LCAweGEsIDB4OGEsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweGY5LCAweDYyLCAweDY1LCAweGEsIDB4ZjcsIDB4OTIsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOCwgMHg0ZiwgMHhmMiwgMHgxLCAweGNiLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4NiwgMHhiZSwgMHhmNywgMHg4OSwgMHg1LCAweGRmLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4ZjcsIDB4NiwgMHhmMiwgMHgxYiwgMHhiNSwgMHg5NiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDc4LCAweDg3LCAweDc1LCAweDg3LCAweDc3LCAweDFmLCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZGYsIDB4NSwgMHg3YywgMHhhLCAweGJlLCAweGY3LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkMiwgMHg5OCwgMHhhZiwgMHhmNywgMHgxNiwgMHhlZCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDk0LCAweDY4LCAweDY4LCAweDdhLCAweDg5LCAweDdhLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4MWYsIDB4NDcsIDB4ZmIsIDB4ZGEsIDB4OGQsIDB4YSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGRhLCAweDUsIDB4OGYsIDB4YTUsIDB4OGYsIDB4YTYsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhkNSwgMHg3MiwgMHhjZSwgMHgyMywgMHgzYSwgMHg0NCwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDZhLCAweDFlLCAweGUxLCAweDdiLCAweDQwLCAweDk0LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MzgsIDB4NjEsIDB4NzcsIDB4NTQsIDB4NjMsIDB4MWYsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHg5MSwgMHhhLCAweGUsIDB4ODQsIDB4YSwgMHhmOCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweDMxLCAweGYyLCAweDEyLCAweDEzLCAweGEwLCAweGNjLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YSwgMHhiYSwgMHhmNywgMHg2ZiwgMHg1LCAweGYzLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4ZjcsIDB4YywgMHhmNywgMHg5LCAweDFiLCAweGI3LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4NzYsIDB4NmQsIDB4ODQsIDB4NmQsIDB4ODYsIDB4NzEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhmYiwgMHhjMywgMHg1LCAweGY3LCAweDI1LCAweDYsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjMiwgMHg1LCAweDkyLCAweGFkLCAweDkxLCAweGIzLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZDIsIDB4NmMsIDB4YzksIDB4ZmIsIDB4MCwgMHgzNCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDY1LCAweDYxLCAweDFlLCAweDg5LCAweDhkLCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg5OSwgMHhjZSwgMHg1YiwgMHhhLCAweGUsIDB4NzMsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweGY3LCAweGU4LCAweGY3LCAweDIsIDB4M2YsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGY3LCAweDcxLCAweDE1LCAweGZiLCAweDExLCAweGRlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgzOCwgMHhhLCAweGY3LCAweDM3LCAweDI2LCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGZiLCAweDRlLCAweDc2LCAweGY3LCAweDU0LCAweGY3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlOCwgMHhlYiwgMHgyYiwgMHhmNywgMHgxLCAweDEyLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4ZjcsIDB4MjAsIDB4MTMsIDB4ZDgsIDB4OWQsIDB4ZmIsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3YywgMHhhLCAweGM1LCAweGY3LCAweGFhLCAweDUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhiNCwgMHg0OSwgMHhmNiwgMHgxYiwgMHhmNywgMHgzNCwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMyLCAweGY3LCAweDQxLCAweGY3LCAweDIzLCAweDQ0LCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NiwgMHgzNCwgMHg1OCwgMHg2MiwgMHg2ZSwgMHg2ZiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDhkLCAweDUsIDB4MTMsIDB4ZTgsIDB4OTYsIDB4YzIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE4LCAweDYsIDB4ZTIsIDB4ZmIsIDB4Y2IsIDB4MTUsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhmNywgMHgxZSwgMHhmNSwgMHhjYywgMHhhZSwgMHg1NCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDU4LCAweGZiLCAweDExLCAweDJlLCAweDRkLCAweDYyLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4MWUsIDB4ZSwgMHg3MywgMHhmYiwgMHg0ZSwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGYyLCAweGY3LCAweGYxLCAweGY3LCAweDEsIDB4N2UsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhkYiwgMHhmNywgMHgyMSwgMHgxMywgMHhkOCwgMHhmOCwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjMsIDB4MTUsIDB4ZjcsIDB4MjUsIDB4NiwgMHhmNywgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDc4LCAweDY2LCAweGEsIDB4NzksIDB4MzQsIDB4NTEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGU4LCAweGEzLCAweDdmLCAweDYyLCAweGQ3LCAweGZiLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgyNiwgMHhmYiwgMHhjLCAweGZiLCAweDI3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4ZmIsIDB4OSwgMHhiZiwgMHgyMiwgMHhmNywgMHgxYiwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGFiLCAweGE0LCAweGFjLCAweDFmLCAweGZiLCAweDU5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MTUsIDB4ZTAsIDB4YjcsIDB4ZjcsIDB4MjUsIDB4ZjIsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHg0ZiwgMHg0ZSwgMHhmYiwgMHg2LCAweDUyLCAweGZiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHg1NCwgMHg1ZCwgMHhiNCwgMHhkOSwgMHgxZSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4MzAsIDB4ZjcsIDB4ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4ZjcsIDB4MWEsIDB4MTIsIDB4ZDcsIDB4ZjgsIDB4M2QsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhjYiwgMHgxNiwgMHg4MiwgMHhhLCAweGFiLCAweGY3LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ZjcsIDB4MTcsIDB4YTIsIDB4ZjcsIDB4MTMsIDB4ZjcsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHgxOSwgMHhiZiwgMHhmNywgMHhiLCAweDUsIDB4OTEsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg5NCwgMHg2ZSwgMHgxYiwgMHg0OSwgMHg1OSwgMHg1MSwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDFmLCAweDg5LCAweDhkLCAweDUsIDB4MTMsIDB4YzAsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHg1LCAweGZiLCAweDEyLCAweDYsIDB4ZSwgMHgzYywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweGY3LCAweGZjLCAweGVmLCAweDEsIDB4Y2EsIDB4ZjcsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmYiwgMHg3LCAweGFiLCAweGU1LCAweDVjLCAweGY3LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4NDgsIDB4YzAsIDB4ZjcsIDB4OCwgMHhkMywgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGFiLCAweDNmLCAweGEzLCAweDFmLCAweDQ0LCAweGEwLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4YWIsIDB4MWEsIDB4YTUsIDB4YTMsIDB4YTMsIDB4YzQsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHg4YiwgMHg0YiwgMHhhMCwgMHgxZSwgMHhmNywgMHgxNCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MTEsIDB4NzAsIDB4ZmIsIDB4NiwgMHg5YSwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDMyLCAweDQyLCAweDQ2LCAweDM4LCAweDM1LCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4ZTIsIDB4NmMsIDB4MWYsIDB4ZTksIDB4NjksIDB4OTUsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgxYSwgMHg2NywgMHg1ZCwgMHg3MSwgMHg1YSwgMHg0MSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGI4LCAweDdiLCAweDFlLCAweGUsIDB4OWEsIDB4NzYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhlZSwgMHhmNywgMHg0MywgMHg3NywgMHgxLCAweGY3LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4MTUsIDB4YTIsIDB4ZjEsIDB4NSwgMHg4NywgMHgyNSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweGM3LCAweDFmLCAweDcwLCAweDZmLCAweDkxLCAweGE4LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YzUsIDB4ZjcsIDB4YTgsIDB4NSwgMHhlMywgMHg2LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4NSwgMHgzMywgMHg2LCAweGIxLCAweGY3LCAweDQzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4MmMsIDB4N2EsIDB4M2IsIDB4NSwgMHg0NSwgMHg2LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4NSwgMHhkMCwgMHg2LCAweDhiLCAweDRjLCAweGZiLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MWEsIDB4MmUsIDB4ZjcsIDB4MWIsIDB4ODYsIDB4ZTAsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDU5LCAweGEsIDB4ZjgsIDB4NGYsIDB4NzcsIDB4MTIsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNywgMHgxMywgMHg3MCwgMHhmOCwgMHgzMSwgMHg4OSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFhLCAweDYsIDB4ZjcsIDB4MywgMHhmOCwgMHhhYSwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NTcsIDB4ZmIsIDB4OTEsIDB4NSwgMHg0NiwgMHg3MiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQsIDB4ZmIsIDB4ZSwgMHgxYiwgMHg1ZCwgMHg3YywgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDljLCAweDhmLCAweDljLCAweDhmLCAweDlhLCAweDFmLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZDAsIDB4NDcsIDB4YSwgMHg0YSwgMHhmYiwgMHhkMCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4NmYsIDB4ODQsIDB4NjcsIDB4NjcsIDB4MWEsIDB4MTMsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhhNSwgMHg0ZCwgMHhmNywgMHg1LCAweGNmLCAweGNlLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4YzIsIDB4MWUsIDB4OGMsIDB4ODksIDB4NSwgMHhlLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4YSwgMHhmNywgMHg3OCwgMHgxNiwgMHhmNywgMHg5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjYiwgMHhmOCwgMHhhOCwgMHg3YiwgMHhhLCAweGZiLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZjgsIDB4NTEsIDB4YSwgMHg1NywgMHhmNywgMHhmOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWEsIDB4NiwgMHhlLCAweGY3LCAweDIzLCAweDc5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg3OSwgMHhlNSwgMHgzLCAweGY3LCAweDRmLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NiwgMHhmNywgMHgyZiwgMHhmNywgMHhlYSwgMHg1YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4ZmIsIDB4ZWEsIDB4NSwgMHhmNywgMHgxNiwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4ZjgsIDB4YTgsIDB4NTQsIDB4YSwgMHhmYiwgMHgzMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUxLCAweGEsIDB4N2EsIDB4ZjcsIDB4ZjcsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDYsIDB4ZmIsIDB4MzMsIDB4ZmIsIDB4ZjcsIDB4NTEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGY3LCAweGY3LCAweDUsIDB4ZmIsIDB4ZiwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHg3OSwgMHhhLCAweDlhLCAweDE2LCAweGY3LCAweDNmLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNiwgMHhmNywgMHgyYiwgMHhkNCwgMHhmYiwgMHgyYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjksIDB4NiwgMHhmYiwgMHgxNywgMHhmNywgMHg5NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGY3LCAweGE1LCAweDUsIDB4ZmIsIDB4M2UsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGZiLCAweDI4LCAweDQxLCAweGY3LCAweDI4LCAweDUzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOCwgMHhmYiwgMHg5NiwgMHg1LCAweGUsIDB4M2MsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhmNywgMHg5LCAweGY5LCAweDksIDB4NzcsIDB4MSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDE1LCAweDdlLCAweGZiLCAweDAsIDB4NSwgMHg3ZSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDg1LCAweGE2LCAweDFiLCAweGUyLCAweGM1LCAweGNkLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4MWYsIDB4ZjcsIDB4ZDEsIDB4ZjgsIDB4ZDcsIDB4NzcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDI3LCAweDUxLCAweGEsIDB4NTksIDB4ZjgsIDB4MjcsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGU1LCAweGZjLCAweGEzLCAweDUsIDB4NGMsIDB4NmYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg1YywgMHgxYiwgMHg3ZCwgMHg3YiwgMHg4ZSwgMHg5MiwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4ZmIsIDB4MWIsIDB4OGIsIDB4ZjcsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGY3LCAweDUsIDB4MSwgMHg5ZiwgMHgxNiwgMHhmOCwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTUsIDB4ZjcsIDB4YSwgMHg1LCAweGZiLCAweGFjLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkNiwgMHhmNywgMHhkYywgMHg5ZSwgMHhlMSwgMHg1LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4NiwgMHg3MSwgMHhmYiwgMHg1LCAweDUsIDB4ZjcsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweGQzLCAweGZiLCAweGQ1LCAweDUsIDB4ZSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4YjIsIDB4ZjcsIDB4NywgMHgxLCAweDE0LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4ZjcsIDB4NjEsIDB4MTUsIDB4ZWYsIDB4NzksIDB4M2YsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDc0LCAweDFmLCAweGZiLCAweDJmLCAweDY5LCAweGIxLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWUsIDB4MWIsIDB4YTMsIDB4NiwgMHhhMywgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0OSwgMHg3MiwgMHg4ZSwgMHhjYywgMHg5OCwgMHgxZiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRlLCAweDgyLCAweGJkLCAweDUyLCAweGIzLCAweGQzLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YWMsIDB4YjcsIDB4ZjcsIDB4NWMsIDB4OCwgMHhjYiwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDkwLCAweGQ2LCAweDFiLCAweGEzLCAweGY3LCAweDcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDYsIDB4ZmIsIDB4NTAsIDB4NzcsIDB4MzIsIDB4ZmIsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHgxZiwgMHhmYiwgMHg5LCAweDcyLCAweDdmLCAweDU3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZSwgMHhmYiwgMHhmNywgMHhmYiwgMHg1MCwgMHg3NiwgMHhmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDc3LCAweDEsIDB4YmQsIDB4ZmIsIDB4NjUsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDYsIDB4ZjcsIDB4NWUsIDB4ZmEsIDB4NDYsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4NiwgMHhlLCAweDczLCAweGEsIDB4ZjgsIDB4MjUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDkzLCAweDNhLCAweDE1LCAweDcxLCAweGZiLCAweDcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY2LCAweDlmLCAweGU0LCAweGY3LCAweDIzLCAweGFjLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHhhNSwgMHhhOCwgMHhiZiwgMHhkZCwgMHgxYiwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgsIDB4NSwgMHgyOSwgMHg5YywgMHhkNywgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4MWYsIDB4OTQsIDB4YWUsIDB4OGUsIDB4YTksIDB4YTUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHg1OSwgMHhhZCwgMHhmYiwgMHgxMCwgMHgxZSwgMHg3MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NSwgMHhjMCwgMHhhNiwgMHg4OSwgMHg2NywgMHg4MywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDg4LCAweDdlLCAweDFmLCAweDYxLCAweGZiLCAweDRlLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4YzQsIDB4NjMsIDB4NDEsIDB4NjEsIDB4NmUsIDB4NmEsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1YywgMHg4LCAweDRiLCAweDdjLCAweDc3LCAweDg2LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZSwgMHg1OCwgMHhmNywgMHg0ZCwgMHg3NiwgMHhmNywgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZjcsIDB4NywgMHhmOCwgMHg2MiwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmNywgMHgzNywgMHgxNSwgMHhjMiwgMHhiZiwgMHhiMywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDFiLCAweGJjLCAweGFiLCAweDdkLCAweDdjLCAweGE5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4YWEsIDB4YTksIDB4N2MsIDB4YjQsIDB4MWIsIDB4ZDAsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHg5NSwgMHg5NCwgMHgxZiwgMHhmNywgMHhjLCAweDcsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg1NiwgMHg4OSwgMHg4MSwgMHgxYiwgMHg2OSwgMHg2ZCwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDZlLCAweDFmLCAweDliLCAweDY0LCAweDY2LCAweDllLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NzUsIDB4NTcsIDB4OGIsIDB4NGUsIDB4NTUsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDhiLCAweGY3LCAweGMsIDB4ZjgsIDB4NmYsIDB4ZjcsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4OCwgMHhmNywgMHgxZiwgMHgzLCAweDlmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4MTUsIDB4ZWIsIDB4NiwgMHhmYiwgMHgzMiwgMHg5YSwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGY3LCAweDRiLCAweDFiLCAweGJiLCAweGJhLCAweDkzLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MWYsIDB4YWYsIDB4ZjcsIDB4MjUsIDB4NSwgMHg2YiwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDdiLCAweDRjLCAweDFiLCAweDM4LCAweDNhLCAweGNhLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4MWYsIDB4ZjcsIDB4ZGEsIDB4NiwgMHg5YiwgMHhkNCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZTcsIDB4NiwgMHg4ZiwgMHhhYSwgMHg5MCwgMHhhMSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDgsIDB4ZjcsIDB4ZTksIDB4NiwgMHg5YiwgMHhkNCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZGYsIDB4NiwgMHhlMiwgMHhiOSwgMHhkYiwgMHhiNywgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGM0LCAweGI1LCAweDgxLCAweDZhLCAweGE2LCAweDFmLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4YSwgMHhhOCwgMHg1YSwgMHg0ZSwgMHg5YSwgMHg0MywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ5LCAweGZiLCAweDIwLCAweDIzLCAweGZiLCAweDJhLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4MCwgMHg2LCAweDdiLCAweDQyLCAweDUsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDg3LCAweDcxLCAweDg5LCAweDc2LCAweDhhLCAweDdjLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg2LCAweGUsIDB4ZmIsIDB4ZjksIDB4ZmIsIDB4MTEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYSwgMHg3NiwgMHhmNywgMHgxNCwgMHg3NywgMHgxLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MTUsIDB4YzksIDB4NiwgMHg3ZSwgMHg1MiwgMHg3MywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDgyLCAweDdlLCAweDRkLCAweDE4LCAweGY3LCAweDFkLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgxZCwgMHg2LCAweGUsIDB4M2MsIDB4ZmIsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOSwgMHhjZiwgMHg5NiwgMHhhLCAweDg4LCAweDNiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4ZmIsIDB4MywgMHg1LCAweDdkLCAweGI2LCAweGM1LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4MWIsIDB4ZjcsIDB4MTUsIDB4YmIsIDB4ZjcsIDB4ZiwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDFmLCAweGY3LCAweDI3LCAweGY4LCAweDNlLCAweDUsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGFlLCAweGY0LCAweDUsIDB4MjcsIDB4NiwgMHhjZCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGE4LCAweGJhLCAweDFiLCAweGE5LCAweGE5LCAweDgxLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4MWYsIDB4YmEsIDB4ZjcsIDB4NSwgMHg1LCAweDllLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4OGQsIDB4ODAsIDB4MWIsIDB4ZmIsIDB4MWUsIDB4N2IsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNSwgMHg1MSwgMHgxZiwgMHgyYSwgMHg2LCAweDY3LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlZCwgMHg2LCAweGZiLCAweDI2LCAweGZjLCAweDNjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg3NywgMHg3NSwgMHg3MiwgMHg2YiwgMHgxYiwgMHg3NywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDk1LCAweDY0LCAweDFmLCAweGUsIDB4ZmIsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHg3NiwgMHhmNywgMHgyNSwgMHhmNywgMHgxNCwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4OGEsIDB4NjEsIDB4YSwgMHhmNywgMHgxZiwgMHgzZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWUsIDB4NiwgMHhmYiwgMHg5NiwgMHhmYiwgMHgxNCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NTYsIDB4YSwgMHhlLCAweGY4LCAweDEsIDB4OGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHgxLCAweGY5LCAweDkyLCAweDE2LCAweDRiLCAweGEsIDB4ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhmYiwgMHgyNiwgMHgxNSwgMHg0YiwgMHhhLCAweGY3LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjYsIDB4MTUsIDB4NGIsIDB4YSwgMHhlLCAweDNjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4NzYsIDB4ZjgsIDB4ZGIsIDB4ZjcsIDB4MywgMHhmNywgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZjcsIDB4NDUsIDB4ZmIsIDB4M2YsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg2LCAweGY3LCAweGMsIDB4ZjgsIDB4ZGIsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDYsIDB4YTIsIDB4ZjcsIDB4MywgMHg1LCAweGZiLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiNCwgMHhmNywgMHg1NywgMHg2NiwgMHhhLCAweDYyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4NSwgMHhmYiwgMHg0OCwgMHg2LCAweDc1LCAweGZiLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDQ4LCAweDYsIDB4ZSwgMHgzYywgMHhmYiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDQyLCAweGY3LCAweDMsIDB4ZjcsIDB4ZDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDNlLCAweDc3LCAweDEsIDB4YjksIDB4OGUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MywgMHg2LCAweDY5LCAweGZiLCAweDQyLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHg2LCAweGFkLCAweGY3LCAweDQyLCAweDUsIDB4ZjcsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhhLCAweGNjLCAweGY3LCAweGQ3LCAweDUsIDB4ZjcsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhhLCAweGFjLCAweGY3LCAweDNlLCAweDUsIDB4ZmIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDY5LCAweGZiLCAweDNlLCAweDUsIDB4ZmIsIDB4NDQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGZiLCAweDMsIDB4NSwgMHhmNywgMHg0MywgMHg2LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZDcsIDB4NSwgMHhmYiwgMHg0NCwgMHg2LCAweGUsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweGEsIDB4ZjgsIDB4ZjAsIDB4OGYsIDB4YSwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweGIzLCAweDM1LCAweDUsIDB4ZjEsIDB4NiwgMHg0YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDgxLCAweGEsIDB4ZjgsIDB4MSwgMHg3YSwgMHhkYiwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDFkLCAweGRiLCAweDEyLCAweDEzLCAweDYwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4ZjgsIDB4NmYsIDB4MTUsIDB4OWIsIDB4YTEsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHg5YiwgMHg5ZSwgMHg3NiwgMHg2ZSwgMHg3NSwgMHg3NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDRmLCAweDZhLCAweDhiLCAweGFhLCAweDljLCAweDFlLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4ODIsIDB4MTUsIDB4ZWQsIDB4NiwgMHhmOCwgMHg2YSwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDUsIDB4MjYsIDB4NiwgMHhmYywgMHg4MSwgMHhmYiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGZiLCAweDEsIDB4ZDMsIDB4NzksIDB4YmEsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhmNywgMHgzNiwgMHhkMSwgMHhiNSwgMHg3OSwgMHhlMywgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJmLCAweDc2LCAweGZiLCAweDZiLCAweDc3LCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4ZmMsIDB4MSwgMHgxNSwgMHgxMywgMHhhMCwgMHhmYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4NzksIDB4YmIsIDB4ZjcsIDB4MWMsIDB4YjgsIDB4ZjcsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhiNSwgMHg3OSwgMHhkYywgMHgyMSwgMHg3NCwgMHhhLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4YzMsIDB4OWEsIDB4OWUsIDB4N2UsIDB4NmQsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhmYiwgMHgxZSwgMHg1MSwgMHg2OSwgMHg4YiwgMHhhYSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweDhiLCAweDE2LCAweGZiLCAweDEsIDB4ZDEsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhmNywgMHgxZSwgMHhiNywgMHhmNywgMHgzZCwgMHhjZiwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGUxLCAweGZiLCAweDAsIDB4NzQsIDB4YSwgMHhhMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGM0LCAweDlhLCAweDllLCAweDdjLCAweDZkLCAweDc2LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWMsIDB4NTAsIDB4NmEsIDB4OGIsIDB4YWEsIDB4OWIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGFiLCAweDc4LCAweGY3LCAweDE0LCAweDEyLCAweGRjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4NTMsIDB4ZjcsIDB4MjYsIDB4ZjcsIDB4NWIsIDB4ZjcsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhmNywgMHgyNywgMHgxMywgMHhkMCwgMHhkYywgMHhmNywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGZiLCAweDQ2LCAweGY3LCAweDI4LCAweDQwLCAweGY3LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjcsIDB4ZGYsIDB4ZjcsIDB4MiwgMHhmNywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MzQsIDB4YzQsIDB4ZmIsIDB4MTQsIDB4YzIsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHgzNSwgMHhiMCwgMHg1OSwgMHg4ZSwgMHhjMCwgMHgxYSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweDllLCAweGE1LCAweGQxLCAweGM1LCAweDczLCAweDM1LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4MjcsIDB4OTIsIDB4NSwgMHhmNywgMHgzNywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE0LCAweGM4LCAweGZiLCAweDIzLCAweDFiLCAweGZiLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4ZmIsIDB4MTQsIDB4MzIsIDB4ZmIsIDB4MTUsIDB4ZTUsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNSwgMHg1MywgMHgxZiwgMHgxMywgMHhkMCwgMHhkYywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDZlLCAweDU2LCAweDFhLCAweDNkLCAweDMyLCAweDdlLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjMsIDB4ODgsIDB4Y2YsIDB4Y2IsIDB4ODksIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHhmOCwgMHhiMywgMHgxNSwgMHhmNywgMHgxZCwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4NWQsIDB4YSwgMHhmYiwgMHhkLCAweDYsIDB4MzIsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhlNSwgMHg1LCAweDI2LCAweDYsIDB4ZSwgMHg1OCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjIsIDB4ZDcsIDB4MTUsIDB4ZDAsIDB4NiwgMHg1ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweGY3LCAweGYsIDB4ZjcsIDB4NWIsIDB4NSwgMHgzOSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjEsIDB4ZmIsIDB4NWIsIDB4NSwgMHhlLCAweGY4LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhmNywgMHhkLCAweGZiLCAweDEsIDB4ZjcsIDB4MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4ZiwgMHhmNywgMHg1YywgMHhmNywgMHhmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4ZjcsIDB4ZiwgMHhmYiwgMHgxLCAweGY3LCAweGQsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhmNywgMHgxOSwgMHgxMywgMHgzYSwgMHhmOCwgMHg4NCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweDg4LCAweDcxLCAweGEsIDB4ZmIsIDB4ZmMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGY3LCAweDVjLCAweDUsIDB4ZjcsIDB4YzcsIDB4NzEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGM4LCAweDYsIDB4YWMsIDB4ZjcsIDB4MzcsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDYsIDB4YTQsIDB4ZjcsIDB4ZiwgMHg1LCAweGZjLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3YSwgMHgzOSwgMHg1LCAweDEzLCAweDk2LCAweGQ2LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4OWUsIDB4NTcsIDB4MWIsIDB4ZmIsIDB4NTIsIDB4ZmIsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1NywgMHhmYiwgMHhhYiwgMHhmYiwgMHg2MSwgMHhmNywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweGY3LCAweDEyLCAweGUzLCAweGI0LCAweGIxLCAweGFkLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGQsIDB4ODgsIDB4NSwgMHgxMywgMHg1NiwgMHhmYiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY5LCAweDE1LCAweGY3LCAweDEyLCAweGM1LCAweGY3LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzgsIDB4ZTEsIDB4YjcsIDB4NGEsIDB4M2UsIDB4NGUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5LCAweDZmLCAweDQyLCAweDFlLCAweDZmLCAweDgwLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4MjAsIDB4MWIsIDB4MzgsIDB4NGQsIDB4YzUsIDB4ZjIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweGY5LCAweGY4LCAweDZmLCAweDc2LCAweGY3LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHgzOSwgMHhmOCwgMHg1YSwgMHg4ZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ZjcsIDB4MTUsIDB4NSwgMHg0ZCwgMHg2LCAweDk3LCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OWEsIDB4YjYsIDB4OTUsIDB4OTgsIDB4YzksIDB4MTgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4OCwgMHg3NCwgMHhmYiwgMHgxLCAweDdmLCAweDU0LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweGY5LCAweGY4LCAweDY2LCAweDc2LCAweGY3LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHgzYiwgMHhmOCwgMHg1MSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDNlLCAweGEsIDB4ZmIsIDB4MWQsIDB4NiwgMHg3MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDUsIDB4YzksIDB4NiwgMHg3ZSwgMHg1MywgMHg3MywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDgxLCAweDgsIDB4ZSwgMHhmYiwgMHgxYiwgMHhmOCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweGY3LCAweDI1LCAweDc3LCAweDEsIDB4ZjcsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1YSwgMHgxNSwgMHhmNywgMHgxZiwgMHg2LCAweGE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4NSwgMHg0ZCwgMHg2LCAweDk3LCAweGMzLCAweGE0LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4OTQsIDB4OTcsIDB4YzksIDB4MTgsIDB4ZmIsIDB4MWUsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhmYiwgMHgzLCAweDdmLCAweDU1LCAweDgsIDB4ZjcsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHg4ZSwgMHhhLCAweGE3LCAweGY3LCAweDE0LCAweDUsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDk4LCAweGMzLCAweGEzLCAweDlkLCAweGI3LCAweDk0LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4MTgsIDB4ZmIsIDB4MWYsIDB4ODgsIDB4NzQsIDB4ZmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDU1LCAweDgsIDB4ZSwgMHhmYiwgMHgxYiwgMHhmOCwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDI0LCAweGY3LCAweDE1LCAweDEsIDB4ZjgsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1MSwgMHgxNSwgMHhmNywgMHgxZiwgMHgzZSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NiwgMHg2ZiwgMHg2MiwgMHhhLCAweGZiLCAweDg3LCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NTYsIDB4YSwgMHg3MCwgMHg2MiwgMHhhLCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhmNywgMHg2YiwgMHg3NiwgMHhmNywgMHhkZSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4ZjcsIDB4ZmQsIDB4MTUsIDB4MmYsIDB4ZDcsIDB4NDAsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhkOCwgMHhkNSwgMHhlOCwgMHhlOSwgMHgzZSwgMHhkMCwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDQwLCAweDQ0LCAweDJmLCAweDFlLCAweGUsIDB4M2MsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY4LCAweGQ3LCAweGY1LCAweGZjLCAweGQ3LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDEsIDB4ODgsIDB4YSwgMHhmYSwgMHg5MywgMHhmNSwgMHhmZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDYsIDB4ZSwgMHhmOCwgMHhmNiwgMHhmNywgMHgxMywgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweDg5LCAweDc3LCAweDEyLCAweDEzLCAweDgwLCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmNiwgMHgxNSwgMHhkNCwgMHg2LCAweDEzLCAweDQwLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4OTYsIDB4YTcsIDB4YWUsIDB4OGMsIDB4OCwgMHhhYSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDgxLCAweGEzLCAweDFmLCAweDgxLCAweGEyLCAweGEyLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4MWIsIDB4YzEsIDB4YmIsIDB4YjUsIDB4ZGQsIDB4OTksIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHg2LCAweDcyLCAweDgzLCAweDgzLCAweDdhLCAweDc0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NzUsIDB4OTMsIDB4OTMsIDB4NzIsIDB4MWYsIDB4MTMsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg2YywgMHg2YSwgMHg5OCwgMHg2OSwgMHgxYiwgMHgxMywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDcyLCAweDQyLCAweDU3LCAweDgwLCAweDFmLCAweGUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweGRiLCAweDc2LCAweGY3LCAweGU3LCAweGQ0LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2OCwgMHhlNSwgMHhmNywgMHg1OCwgMHhlMCwgMHhmNywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDMsIDB4ZjcsIDB4NjgsIDB4ZjcsIDB4YzYsIDB4MTUsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlNywgMHhmNywgMHgyZSwgMHhkNCwgMHhmYywgMHgyNiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMyLCAweDYsIDB4ZjcsIDB4YjIsIDB4ZmIsIDB4ZTcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhmNywgMHhkYywgMHg4ZCwgMHg2LCAweGY3LCAweDgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHg1LCAweGRiLCAweDYsIDB4ZjcsIDB4NywgMHhmNywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OGUsIDB4ZmIsIDB4ZGMsIDB4ZTAsIDB4ZjgsIDB4MzAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg2LCAweDI2LCAweGZiLCAweGFmLCAweDUxLCAweGEsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhZiwgMHg1LCAweGZiLCAweDIwLCAweDYsIDB4ZSwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGVmLCAweGY4LCAweDk0LCAweGY3LCAweDJjLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhmNywgMHgxYywgMHhmNywgMHgyNiwgMHhmNywgMHgyOCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4ZjcsIDB4MjgsIDB4MTUsIDB4ZmIsIDB4NywgMHhhZCwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGY3LCAweDFlLCAweDFiLCAweGY3LCAweDUxLCAweGMzLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4ZjQsIDB4ZmIsIDB4NCwgMHhjNSwgMHgzYSwgMHhhMywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweGExLCAweDcwLCAweDhiLCAweGFiLCAweDFhLCAweGE0LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4YzcsIDB4OWIsIDB4ZDQsIDB4OGIsIDB4NGIsIDB4YTIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYSwgMHhhMywgMHg1LCAweGY3LCAweDExLCAweDZmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg5YiwgMHg0MCwgMHgxYiwgMHhmYiwgMHgzYSwgMHgzZCwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweDI3LCAweGRjLCAweDY5LCAweGU2LCAweDZjLCAweDFmLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4OTUsIDB4N2UsIDB4NmUsIDB4MWEsIDB4NjcsIDB4NWEsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHgzZCwgMHg3MCwgMHhiMywgMHhiOCwgMHg3YSwgMHgxZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweGY4LCAweDNmLCAweDE1LCAweDgyLCAweGEsIDB4ZjcsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhhLCAweGZiLCAweGMsIDB4NiwgMHgzMywgMHgzMSwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweDUsIDB4MjcsIDB4NiwgMHhlLCAweDU4LCAweGEsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHgxNSwgMHhkZCwgMHg2LCAweGY3LCAweDIxLCAweGY3LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4ZjcsIDB4NmIsIDB4NSwgMHg0NiwgMHg2LCAweGI4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4NSwgMHhlLCAweGY3LCAweGM5LCAweDdkLCAweGYxLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHhmNywgMHgxMCwgMHhlMywgMHhmNywgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MjQsIDB4ZjIsIDB4MTIsIDB4ZGQsIDB4ZjcsIDB4MjEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhmNywgMHgxNSwgMHgxMywgMHhiNiwgMHhmOCwgMHhhNSwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDU2LCAweGI4LCAweGQwLCAweDcxLCAweGQwLCAweDFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4Y2EsIDB4ZjcsIDB4MSwgMHhiOSwgMHhhNSwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGEyLCAweDUsIDB4NjksIDB4N2IsIDB4NmEsIDB4NjEsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg2OCwgMHg0NywgMHhhNCwgMHhmNiwgMHg4ZCwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDYsIDB4OTQsIDB4YWUsIDB4OGQsIDB4YjAsIDB4YWYsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHg0YywgMHhmNywgMHhkLCAweGZiLCAweDJiLCAweDc0LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NDIsIDB4MzksIDB4MWUsIDB4Y2EsIDB4NTEsIDB4NDUsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHgxYiwgMHhmYiwgMHhhYSwgMHg3MSwgMHhmYiwgMHhhNSwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGEsIDB4Y2YsIDB4MjMsIDB4ZjcsIDB4NDUsIDB4ZDYsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhjMCwgMHhjMCwgMHgxZiwgMHhlYywgMHhmNywgMHg4NywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGFlLCAweGE4LCAweDkyLCAweGE0LCAweGY1LCAweGU5LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4ODYsIDB4ZmIsIDB4NCwgMHg3NCwgMHg4YSwgMHgxZiwgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MjcsIDB4MTUsIDB4MTMsIDB4NzYsIDB4ZjcsIDB4NSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgsIDB4ZjAsIDB4YjcsIDB4YzksIDB4NmYsIDB4MjksIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhmYiwgMHgyMywgMHhmYiwgMHg5LCAweDQ3LCAweDY2LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4MWUsIDB4ZSwgMHhhYiwgMHhhMCwgMHg3NiwgMHhmOSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGRmLCAweGY3LCAweGUsIDB4MSwgMHg2NCwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4ZjcsIDB4Y2MsIDB4ZjgsIDB4NWYsIDB4NDMsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGZiLCAweGNjLCAweGZiLCAweDEwLCAweGY3LCAweGNjLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg1MSwgMHhmYywgMHg1MCwgMHg1LCAweDhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MTUsIDB4ZjcsIDB4NiwgMHg2LCAweGEzLCAweDU1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3LCAweDYsIDB4ZjcsIDB4NDAsIDB4ZmIsIDB4ZSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYsIDB4NiwgMHhhMywgMHg1NSwgMHhhLCAweGZiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZmIsIDB4MzksIDB4NzYsIDB4ZjgsIDB4YWIsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhmNywgMHgxYiwgMHgxLCAweGY3LCAweDQ2LCAweGY4LCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MjUsIDB4NiwgMHhhOSwgMHhmNywgMHgxYiwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4YiwgMHhmYywgMHhiOSwgMHgxNSwgMHg2NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDUsIDB4ZjcsIDB4MmIsIDB4NiwgMHhiMCwgMHhmNywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweGY4LCAweDIsIDB4NSwgMHgzYSwgMHg2LCAweGUsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg3NiwgMHhmNiwgMHhmNSwgMHhmNywgMHhlZCwgMHhlOSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZGEsIDB4ZjcsIDB4MWIsIDB4MywgMHhmNywgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDE1LCAweGM5LCAweDc0LCAweGJlLCAweGY3LCAweDMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDk1LCAweDliLCAweDg5LCAweGExLCAweDFiLCAweGY3LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZjcsIDB4MywgMHhkOCwgMHhhNiwgMHgxZiwgMHhmYiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDczLCAweDUwLCAweDY0LCAweDVjLCAweDRiLCAweDhmLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4ZjcsIDB4ZDgsIDB4YTAsIDB4NzksIDB4OTYsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg2ZCwgMHgxOSwgMHhmNywgMHgxNCwgMHg5OSwgMHg4NSwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweGJiLCAweDU0LCAweGEwLCAweDE5LCAweGIwLCAweGUyLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NjEsIDB4MmIsIDB4NSwgMHg4YywgMHg4NSwgMHg4MSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDFiLCAweGZiLCAweDM5LCAweGZiLCAweDFkLCAweGZiLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTcsIDB4MmEsIDB4YjYsIDB4NGYsIDB4ZDMsIDB4NmIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhmNywgMHgyLCAweDE1LCAweDgyLCAweDkzLCAweDdhLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4MWEsIDB4ZDIsIDB4YWIsIDB4ZjcsIDB4MzUsIDB4ZjcsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHgxZSwgMHhlLCAweDNjLCAweDkwLCAweDc2LCAweGE2LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzgsIDB4ZjcsIDB4MCwgMHhmNywgMHg2MSwgMHhmNiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRiLCAweGY3LCAweDE0LCAweDEzLCAweGI4LCAweGNiLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OWMsIDB4YWEsIDB4YzIsIDB4YTMsIDB4YzQsIDB4MWIsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg4MiwgMHg4MiwgMHhhYSwgMHgxZiwgMHgxMywgMHg3OCwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGFiLCAweDgzLCAweGJjLCAweDFiLCAweGM1LCAweGFmLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YWYsIDB4MWYsIDB4NjEsIDB4ZjcsIDB4YiwgMHg1LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NjgsIDB4OGIsIDB4NzgsIDB4MWIsIDB4N2UsIDB4NDEsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHhhZCwgMHgxZiwgMHg4NiwgMHhhNCwgMHgzZSwgMHg5NywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDc1LCAweDc4LCAweDg3LCAweDgxLCAweDdlLCAweDFmLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4Y2EsIDB4YzIsIDB4YWQsIDB4YmQsIDB4OTAsIDB4ZGQsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHg2LCAweGEyLCAweGY3LCAweDAsIDB4N2EsIDB4YSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDg4LCAweGExLCAweGEzLCAweDFhLCAweGU5LCAweGMyLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4ZDcsIDB4OTYsIDB4NDQsIDB4NzIsIDB4OGYsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHg5OCwgMHg1LCAweGVhLCAweDg0LCAweDRmLCAweGVhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4MWIsIDB4ZmIsIDB4MjgsIDB4MmQsIDB4ZmIsIDB4OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDg1LCAweDhiLCAweDc1LCAweDkzLCAweDYzLCAweDFmLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3NSwgMHhmYiwgMHgwLCAweDUsIDB4ZjcsIDB4MywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ZmIsIDB4OSwgMHgyMywgMHg1MiwgMHg2OCwgMHg3YywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgzYywgMHhlYywgMHg3NiwgMHhiNSwgMHhmNywgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGY3LCAweDE2LCAweGI4LCAweDc3LCAweDEsIDB4ZGMsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlNiwgMHhkMiwgMHg1LCAweDc4LCAweGE2LCAweGFkLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4MWIsIDB4YjUsIDB4YjcsIDB4OTcsIDB4OWUsIDB4YWUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHg0MiwgMHhmNywgMHg3LCAweGU2LCAweDVmLCAweGQzLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4YTQsIDB4YjQsIDB4OTksIDB4YjUsIDB4MTksIDB4OTIsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHhhNiwgMHhhNywgMHgxYSwgMHg5OCwgMHg4YiwgMHg5OCwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDFlLCAweGU3LCAweGQzLCAweDU1LCAweGU2LCAweDJlLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5NSwgMHg3ZCwgMHg2ZSwgMHg5ZCwgMHg1MiwgMHgxYiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDc5LCAweDgxLCAweDc3LCAweDFmLCAweDVlLCAweGQ0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgyYiwgMHhiNSwgMHg0NiwgMHg2ZSwgMHg2OSwgMHg3NCwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDYyLCAweDE5LCAweDgyLCAweDcxLCAweDgwLCAweDYwLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4MzIsIDB4NDQsIDB4MTgsIDB4ZjcsIDB4NzQsIDB4ZjcsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjNiwgMHg5ZSwgMHhjOSwgMHhiOCwgMHhjMywgMHgxYiwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDZmLCAweDYyLCAweDgwLCAweDg5LCAweDdmLCAweDg3LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NGYsIDB4NzcsIDB4NGIsIDB4NWEsIDB4NTMsIDB4MWIsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhiYywgMHhjNywgMHhhMCwgMHgxZiwgMHhlLCAweDNjLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4MjEsIDB4ZTYsIDB4ZjgsIDB4NjYsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGY3LCAweDIxLCAweDE1LCAweGY3LCAweDRkLCAweDYsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMSwgMHg1LCAweGY3LCAweDIwLCAweDYsIDB4YWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg1LCAweGY3LCAweDRiLCAweDYsIDB4OWYsIDB4ZTYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRjLCAweDYsIDB4OWMsIDB4ZDcsIDB4NSwgMHhmNywgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OWYsIDB4ZTcsIDB4NSwgMHhmYiwgMHgxMywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4ZjcsIDB4YmUsIDB4NDMsIDB4YSwgMHhmYiwgMHg0YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDUxLCAweGEsIDB4NDAsIDB4ZjcsIDB4YmUsIDB4NDQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGZiLCAweGJlLCAweDUsIDB4ZmIsIDB4ZiwgMHg2LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4NSwgMHhmNywgMHg0ZCwgMHg2LCAweDdiLCAweDNmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0ZSwgMHg2LCAweGUsIDB4ZmIsIDB4ZjcsIDB4NzgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweDc4LCAweDE1LCAweGY3LCAweDAsIDB4NiwgMHhjZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDUsIDB4ZmIsIDB4MCwgMHg2LCAweGFhLCAweGY3LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MCwgMHg2LCAweGNlLCAweGY3LCAweGNhLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgwLCAweDYsIDB4ZSwgMHgzYywgMHhmYiwgMHg0YywgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDFlLCAweGY3LCAweDNiLCAweDEyLCAweGY2LCAweGY3LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhmNywgMHgxMSwgMHhhMSwgMHhmNywgMHgxNiwgMHg2YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4ZTgsIDB4YzgsIDB4NzcsIDB4MTUsIDB4MzUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHgzZCwgMHhmNywgMHgxYSwgMHgxYiwgMHhmNywgMHgxYiwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweGQ1LCAweGJkLCAweDZmLCAweGI3LCAweDdkLCAweDllLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDQsIDB4ZDUsIDB4YWUsIDB4YzEsIDB4YzYsIDB4ZDMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHg2ZSwgMHhiZSwgMHgyZiwgMHhkYiwgMHgxZSwgMHgyNywgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDkyLCAweGIxLCAweDFhLCAweGE1LCAweDljLCAweGIzLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4OGYsIDB4NGYsIDB4NzgsIDB4OGQsIDB4MWUsIDB4ZjcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg1LCAweGM0LCAweDg0LCAweDcyLCAweGYzLCAweGZiLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4MjgsIDB4NWMsIDB4MzAsIDB4NDYsIDB4NzUsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhhMywgMHg2NSwgMHgxZiwgMHgxMywgMHhlOCwgMHg2NywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDYzLCAweDIyLCAweDFhLCAweDc2LCAweDg5LCAweDRhLCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4MWUsIDB4YzgsIDB4NTUsIDB4ZjMsIDB4NDgsIDB4NGEsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg4NywgMHg1YywgMHg0ZCwgMHg2MCwgMHg2NCwgMHg5ZiwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDFlLCAweGY3LCAweDU3LCAweGY3LCAweDFjLCAweDE1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHhmNywgMHgyLCAweDUsIDB4NjUsIDB4YWYsIDB4OGIsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHgxYSwgMHhiOSwgMHhhZCwgMHhhYSwgMHhhYiwgMHg5ZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweGUyLCAweDQwLCAweDgyLCAweDhmLCAweDFmLCAweDEzLCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4NjQsIDB4YWEsIDB4NmUsIDB4NjYsIDB4MWEsIDB4NWQsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg3ZSwgMHg4NywgMHgxZSwgMHhlLCAweGY4LCAweGZhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxLCAweGY3LCAweDFkLCAweGY4LCAweGZhLCAweDY5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NSwgMHhmYiwgMHg3LCAweDY5LCAweGEsIDB4ZSwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGQ2LCAweGU3LCAweGQyLCAweGY3LCAweGFiLCAweGQyLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4MSwgMHhjMywgMHhkOCwgMHhmOSwgMHg1LCAweGQ4LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHhmNywgMHhmOCwgMHgxNSwgMHhmNywgMHgzYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY3LCAweDFlLCAweGY3LCAweDQxLCAweGY3LCAweDQxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZmIsIDB4MWUsIDB4ZmIsIDB4M2MsIDB4ZmIsIDB4M2MsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhmYiwgMHgxOCwgMHhmYiwgMHg0MSwgMHhmYiwgMHg0MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY3LCAweDE4LCAweGY3LCAweDNjLCAweDFlLCAweGY4LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4MTUsIDB4NzYsIDB4ODMsIDB4NzksIDB4NGMsIDB4NDMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg1NywgMHhhYSwgMHhmNSwgMHhiYywgMHg5MywgMHhlOCwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGE0LCAweDViLCAweDc3LCAweDkzLCAweDFmLCAweGRkLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhhZiwgMHg3ZCwgMHg2MCwgMHhkZiwgMHhmYiwgMHhlLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTMsIDB4NGUsIDB4MzMsIDB4ZmIsIDB4MTEsIDB4ZmIsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHg1NiwgMHhlNSwgMHhjZCwgMHhkZSwgMHhhOSwgMHhlZCwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZjLCAweGNhLCAweGRiLCAweDE1LCAweGZiLCAweDY1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZmIsIDB4M2EsIDB4ZjcsIDB4NmIsIDB4ZjcsIDB4NmIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhmNywgMHgzYSwgMHhmNywgMHg2NSwgMHhmNywgMHg2NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGY3LCAweDQwLCAweGZiLCAweDZiLCAweGZiLCAweDZiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZmIsIDB4NDAsIDB4ZmIsIDB4NjUsIDB4MWUsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGY3LCAweGE4LCAweGUzLCAweGY4LCAweDksIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQ5LCAweGY3LCAweGIyLCAweDE1LCAweGY1LCAweDYsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg4OSwgMHhhMSwgMHg5YiwgMHhlOSwgMHhiOSwgMHhlMCwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweGYsIDB4ZmIsIDB4MTUsIDB4OGIsIDB4NzYsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg4YSwgMHhmYiwgMHgxNiwgMHg1YiwgMHgxZSwgMHhmNCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YmUsIDB4YTQsIDB4YjMsIDB4OGIsIDB4OTUsIDB4MWIsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg2ZCwgMHg1MywgMHg3MCwgMHgxZiwgMHhmYiwgMHgzLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ODksIDB4NjUsIDB4ODAsIDB4OCwgMHg1NCwgMHg3YSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDRmLCAweDFhLCAweDUxLCAweGFkLCAweDU2LCAweGUwLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4OTgsIDB4YTQsIDB4YWMsIDB4MWUsIDB4OGMsIDB4N2QsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg4ZiwgMHg4MSwgMHg4LCAweDhjLCAweGY3LCAweDRhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4ODIsIDB4N2UsIDB4NGQsIDB4NGUsIDB4MWIsIDB4NzMsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhhNCwgMHhiNSwgMHhiZiwgMHg5NCwgMHhlMCwgMHg5NiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4M2MsIDB4NTgsIDB4YSwgMHhmOCwgMHgyMywgMHhkNywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzUsIDB4ZmIsIDB4NmQsIDB4NGEsIDB4YSwgMHhlLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4NzYsIDB4MSwgMHhmNCwgMHhmNywgMHhjNiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDEsIDB4ZmIsIDB4NWEsIDB4ZjcsIDB4MTksIDB4ZjcsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4NiwgMHg2LCAweGUsIDB4NTgsIDB4ZjcsIDB4NTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDEsIDB4ZGQsIDB4ZjcsIDB4NTksIDB4MTUsIDB4ZjcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGE0LCAweGZiLCAweDQsIDB4NywgMHhlLCAweGYxLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4ZjcsIDB4YTAsIDB4Y2EsIDB4ZjcsIDB4YTcsIDB4ZDYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGQ4LCAweGY4LCAweDMyLCAweGU0LCAweGY3LCAweGUsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDk0LCAweGY3LCAweDMzLCAweDE1LCAweGRlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhmNywgMHgzOSwgMHg1LCAweGExLCAweDYsIDB4YjUsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgyZSwgMHhhZSwgMHgxZiwgMHhhMywgMHg0OSwgMHg1LCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2NiwgMHhkYywgMHg3MSwgMHhjNywgMHg4MSwgMHg5ZiwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDE5LCAweDhkLCAweDcsIDB4ZTEsIDB4OTYsIDB4YjUsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHgxYSwgMHhmNywgMHgxNSwgMHhmYiwgMHg2LCAweDdmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHgxZSwgMHgzOCwgMHg2LCAweGMzLCAweGZiLCAweDQxLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4ZjcsIDB4MSwgMHg1LCAweGFlLCAweDYsIDB4ZDQsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg1MiwgMHg1MiwgMHg0ZCwgMHg4YywgMHg0MCwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDZmLCAweDE1LCAweGY3LCAweDNjLCAweGY3LCAweDIwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4NDEsIDB4ZjcsIDB4NDEsIDB4ZjcsIDB4MWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgzYywgMHhmYiwgMHgzYywgMHhmYiwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDQxLCAweGZiLCAweDQxLCAweGZiLCAweDIwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4M2MsIDB4MWUsIDB4M2UsIDB4MTYsIDB4ZmIsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MywgMHhmYiwgMHgzZCwgMHhmNywgMHg2YiwgMHhmNywgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQyLCAweGY3LCAweDNkLCAweGY3LCAweDY1LCAweGY3LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDIsIDB4ZjcsIDB4M2QsIDB4ZmIsIDB4NmIsIDB4ZmIsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0MywgMHhmYiwgMHgzZCwgMHhmYiwgMHg2NSwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZjAsIDB4ZDUsIDB4MSwgMHhmNywgMHhlLCAweGY3LCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHhlLCAweGY4LCAweGYwLCAweDE1LCAweGY3LCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhMSwgMHhkNSwgMHg1LCAweGZiLCAweGU4LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDdmLCAweGY3LCAweDQzLCAweGQ3LCAweGY3LCAweDIwLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg0MywgMHhmOCwgMHhjZiwgMHgxNSwgMHgzYiwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGRiLCAweGRjLCAweGNkLCAweGNjLCAweGRiLCAweGRiLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4M2EsIDB4M2IsIDB4NGEsIDB4NGUsIDB4M2IsIDB4MWUsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHgxNSwgMHhiMiwgMHhhYiwgMHhhNywgMHhiMSwgMHhiMSwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDYzLCAweDY1LCAweDZiLCAweDZjLCAweDY1LCAweDY1LCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YjEsIDB4MWUsIDB4ZSwgMHg1OCwgMHg4YiwgMHhlNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGU5LCAweGY3LCAweDFjLCAweDc3LCAweDEsIDB4ZjcsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweDMsIDB4YjMsIDB4MTYsIDB4ZjgsIDB4ZGQsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhkZCwgMHg2LCAweGY3LCAweDRjLCAweDQsIDB4ZjcsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZiwgMHhmNywgMHgwLCAweGY3LCAweDFmLCAweGY3LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4ZmIsIDB4ODMsIDB4ZjcsIDB4MWMsIDB4ZmIsIDB4MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGZiLCAweDgyLCAweDYsIDB4ZSwgMHhmNywgMHhhZiwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk1LCAweGRjLCAweDEsIDB4ZDAsIDB4ZjcsIDB4YWYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkOCwgMHg2LCAweGEyLCAweGU0LCAweDUsIDB4ZmIsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGEwLCAweDljLCAweGM0LCAweGIxLCAweDk3LCAweDk2LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhkMywgMHhhOSwgMHhiMywgMHhiNSwgMHgxYSwgMHhjNSwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGZiLCAweDcsIDB4ZmIsIDB4MjUsIDB4NzUsIDB4MjIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHgxZSwgMHhmNywgMHg0LCAweDdkLCAweDUsIDB4YTcsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhiMSwgMHhiOSwgMHgxYiwgMHhlZiwgMHgzMCwgMHhmYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4MzAsIDB4MWYsIDB4MmEsIDB4NGUsIDB4NmMsIDB4NWQsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg4LCAweGUsIDB4ZjcsIDB4YTMsIDB4ZGQsIDB4MzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhmNywgMHhjMywgMHg3NywgMHgxLCAweGU2LCAweGY4LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzEsIDB4OGUsIDB4OWIsIDB4MjIsIDB4ZjcsIDB4MWIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweGNhLCAweGRhLCAweGM4LCAweDFmLCAweGI5LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OWYsIDB4OWMsIDB4Y2MsIDB4YTYsIDB4YzAsIDB4MWEsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhkMywgMHgyMSwgMHhmYiwgMHhhLCAweDZjLCAweDMzLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4MWUsIDB4ZWQsIDB4NzksIDB4NSwgMHhiMCwgMHg5NSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGE4LCAweDFiLCAweDkyLCAweGFkLCAweDhhLCAweDY5LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4OTIsIDB4N2QsIDB4OGQsIDB4MWYsIDB4NzcsIDB4MzQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDk1LCAweGJhLCAweDgzLCAweDVkLCAweDFhLCAweDZkLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NjEsIDB4NjAsIDB4ODYsIDB4YWEsIDB4YTcsIDB4ODYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY5LCAweDUsIDB4NzYsIDB4ZjcsIDB4MjYsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgwLCAweGY4LCAweGYwLCAweDE1LCAweGYyLCAweDUyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDczLCAweGZiLCAweDRlLCAweDc2LCAweGY3LCAweDYyLCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NzYsIDB4ZjgsIDB4YjYsIDB4NzcsIDB4MTIsIDB4MTMsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MCwgMHhjMywgMHgxNSwgMHg3MCwgMHg5YSwgMHhhNCwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDFiLCAweGI3LCAweGEzLCAweGEwLCAweGI0LCAweGIxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4ODIsIDB4NWEsIDB4NSwgMHhmNywgMHgxNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NCwgMHhmOCwgMHhhOSwgMHgzZCwgMHhhLCAweDRmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4NSwgMHg1NCwgMHg4MCwgMHg3NCwgMHgyMiwgMHgzMywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDVjLCAweGE2LCAweGNiLCAweDFmLCAweGNlLCAweGY3LCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4YSwgMHhmYiwgMHgzMCwgMHhmZCwgMHg3NywgMHg4ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgzYywgMHhmYiwgMHgzZSwgMHg3NiwgMHhmOSwgMHg5MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDEsIDB4ZjcsIDB4YzMsIDB4ZmIsIDB4NTMsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHhmOSwgMHg5MiwgMHhkOSwgMHhmZCwgMHg5MiwgMHhmNywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4OTIsIDB4Y2EsIDB4ZjcsIDB4MTEsIDB4ZmIsIDB4Y2IsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI5LCAweGZiLCAweDE2LCAweDVmLCAweGZiLCAweDJkLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ZmIsIDB4MjYsIDB4ZjcsIDB4NDgsIDB4MWYsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGY3LCAweDQwLCAweGY3LCAweDM2LCAweDEsIDB4ZjcsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQwLCAweDhlLCAweGEsIDB4YTcsIDB4ZjcsIDB4MzYsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDc4LCAweGNlLCAweGY3LCAweDM1LCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOCwgMHhlMywgMHgzLCAweGJjLCAweDgwLCAweDE1LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NSwgMHg4ZSwgMHg5ZCwgMHg5YiwgMHg4ZSwgMHg5NSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGI0LCAweDg3LCAweDY2LCAweDVjLCAweDQ4LCAweDdmLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NzQsIDB4NDgsIDB4NSwgMHhmNywgMHgyZiwgMHhmMSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGJjLCAweDY5LCAweGMwLCAweDQxLCAweDcwLCAweDc2LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4N2MsIDB4MWYsIDB4ZSwgMHhmNywgMHhjNCwgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDc3LCAweDEsIDB4ZjcsIDB4NjIsIDB4ZjcsIDB4YWYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHg2LCAweGU1LCAweGY4LCAweDNmLCAweDUsIDB4NTEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDZmLCAweDU1LCAweDVmLCAweDNmLCAweDZiLCAweDcxLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4YWYsIDB4OTMsIDB4YjIsIDB4OTgsIDB4YjQsIDB4YTIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4YTIsIDB4ZjcsIDB4YTgsIDB4ZjIsIDB4ZjcsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgxLCAweGU3LCAweGY3LCAweDYsIDB4ZjcsIDB4MzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDMsIDB4ZTcsIDB4ZjgsIDB4NTcsIDB4MTUsIDB4MzAsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhmNywgMHhmLCAweGY3LCAweDNmLCAweGJiLCAweGY3LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZTksIDB4NTAsIDB4ZTEsIDB4ZmIsIDB4YSwgMHhmYiwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGZiLCAweDQzLCAweGZiLCAweDMsIDB4MWUsIDB4ZjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGMyLCAweGE2LCAweGY3LCAweDE0LCAweGQ4LCAweGE4LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NTUsIDB4NWEsIDB4NmYsIDB4ZmIsIDB4MTUsIDB4M2YsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhhZCwgMHhiMSwgMHgxZSwgMHhlLCAweDNjLCAweDU4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHhkNywgMHg0ZCwgMHhhLCAweGFhLCAweGZiLCAweDU5LCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweGY3LCAweDViLCAweDkyLCAweDc2LCAweGY5LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmOCwgMHg2OSwgMHhjMywgMHgxNSwgMHhmNywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4N2IsIDB4NDUsIDB4NSwgMHhkNywgMHg2LCAweDljLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiYSwgMHg2LCAweDliLCAweGNkLCAweDUsIDB4NWQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGY3LCAweDcwLCAweDUsIDB4NDEsIDB4NiwgMHhmYiwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcwLCAweDUsIDB4ZGYsIDB4MTYsIDB4ZWUsIDB4ZjYsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3MCwgMHgyMiwgMHg1LCAweGZjLCAweDkzLCAweGZiLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDgsIDB4NiwgMHhmOCwgMHhlOSwgMHhmOSwgMHg2ZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4NiwgMHhmYywgMHhhNSwgMHhmYiwgMHhmZCwgMHgxNSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZGYsIDB4ZjcsIDB4ZmIsIDB4NSwgMHg1NSwgMHg2LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NTgsIDB4NjYsIDB4NDQsIDB4NzAsIDB4ODQsIDB4ODksIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg0MSwgMHhhYywgMHg5MiwgMHhiMCwgMHg5NiwgMHhiMiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGUsIDB4ZjcsIDB4NWIsIDB4N2QsIDB4ZDUsIDB4NTEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiZSwgMHhjZCwgMHhmOCwgMHgxLCAweDc3LCAweDEyLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4ZjcsIDB4MTgsIDB4NzgsIDB4MTUsIDB4ZGQsIDB4NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjksIDB4NmQsIDB4NSwgMHgzOSwgMHg2LCAweGZjLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZmQsIDB4MTUsIDB4ZTcsIDB4NiwgMHhlNSwgMHhmNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NTEsIDB4NiwgMHg3MSwgMHg3NCwgMHg1NSwgMHg2NiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDgzLCAweDg5LCAweDE4LCAweDc5LCAweDQxLCAweGFmLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4OTYsIDB4YjQsIDB4OWUsIDB4MTksIDB4MTMsIDB4YjAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhmYywgMHhlOCwgMHgxNSwgMHhmNywgMHg5NywgMHg2LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4OTEsIDB4YSwgMHg5YywgMHg5YSwgMHg5NCwgMHg5NSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDgsIDB4ZjcsIDB4MSwgMHhkOSwgMHg5YSwgMHhiMywgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGJiLCAweDY2LCAweGJlLCAweDJmLCAweGZiLCAweDgsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHg3NCwgMHg4NywgMHgxZSwgMHhlNCwgMHg3ZiwgMHg1LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OTIsIDB4YWQsIDB4YjAsIDB4MWIsIDB4YTUsIDB4OTcsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3MCwgMHg3MCwgMHg3NiwgMHgzZSwgMHg0ZSwgMHgxZiwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDZkLCAweDZiLCAweDgyLCAweDRlLCAweDgsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDkyLCAweDc2LCAweGY3LCAweGZhLCAweGNlLCAweGY3LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4ZjcsIDB4YjQsIDB4ZTYsIDB4NDUsIDB4ZTUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHhmOCwgMHg2ZiwgMHhjMywgMHgxNSwgMHhmNywgMHgzOCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4NDUsIDB4NSwgMHhkYiwgMHg2LCAweDllLCAweGQxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg2LCAweDljLCAweGNkLCAweDUsIDB4NWIsIDB4NiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcwLCAweDUsIDB4M2UsIDB4NiwgMHhmYiwgMHg3MiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDUsIDB4ZTMsIDB4MTYsIDB4ZjMsIDB4ZjYsIDB4OGQsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHgyMiwgMHg1LCAweGZjLCAweGEyLCAweGZiLCAweDIxLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4NiwgMHhmOSwgMHg1LCAweGY5LCAweDZkLCAweDUsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZkLCAweDI4LCAweGZiLCAweDk2LCAweDE1LCAweDc2LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4MzQsIDB4ZjcsIDB4OCwgMHgxYiwgMHhlOSwgMHhjMSwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDFmLCAweGIzLCAweDY3LCAweDk5LCAweDljLCAweDFhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4OTgsIDB4YzMsIDB4OTMsIDB4YzgsIDB4MWEsIDB4YjAsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHgzMCwgMHgyNiwgMHg3MSwgMHg0MiwgMHg2ZiwgMHg4MSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDdkLCAweDUsIDB4YWEsIDB4OTQsIDB4OTksIDB4OWIsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg5MCwgMHhhOSwgMHg4YSwgMHg2ZiwgMHg1OSwgMHg1MCwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDhjLCAweDFmLCAweDdhLCAweDQ0LCAweDUsIDB4MTMsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg5MiwgMHhiMywgMHg4NSwgMHg2NSwgMHgxYSwgMHg3MiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDY3LCAweDY2LCAweDg3LCAweGE2LCAweGEyLCAweDg3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3MywgMHhmYiwgMHg1NywgMHhmMiwgMHhmOCwgMHg1NCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGY3LCAweDE4LCAweDEsIDB4YzAsIDB4ZjcsIDB4MWEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDQwLCAweGFkLCAweDE1LCAweGZiLCAweGEsIDB4NzAsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg2MCwgMHgxYiwgMHgzZSwgMHg3NSwgMHhiMywgMHhhYiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGEyLCAweGUxLCAweGQ0LCAweDFmLCAweGY3LCAweDQsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhiYiwgMHg5YSwgMHhlZSwgMHg4LCAweGZiLCAweDE1LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg0YywgMHg3NywgMHg3YiwgMHgzOSwgMHg0OCwgMHg4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgyYSwgMHg1OCwgMHg1NSwgMHgzYywgMHgxYSwgMHgzNiwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGY3LCAweDM1LCAweGY3LCAweDUwLCAweGQwLCAweGY3LCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4OWQsIDB4MWUsIDB4ZmIsIDB4NzIsIDB4ZjgsIDB4MTksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhhLCAweGE4LCAweGY3LCAweDE4LCAweDY1LCAweGEsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGQ3LCAweGY3LCAweDI3LCAweDEsIDB4ZjgsIDB4N2QsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHgxNSwgMHhlYSwgMHg2LCAweDRkLCAweGY3LCAweDI3LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYywgMHgzLCAweGZlLCAweDNjLCAweDI3LCAweGEsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDczLCAweDc3LCAweDEsIDB4ZjgsIDB4NTEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHgxNSwgMHhlZSwgMHg2LCAweGY3LCAweDNkLCAweGY3LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgzMywgMHg2LCAweGZjLCAweGFhLCAweGZlLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4YSwgMHgzNCwgMHhhLCAweGQ2LCAweGY3LCAweDI4LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkNSwgMHhmOSwgMHhhOCwgMHgxNSwgMHhmNywgMHg5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhlMSwgMHhiMSwgMHgzNSwgMHg1LCAweGVjLCAweDYsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyOCwgMHg2NiwgMHhhLCAweGZjLCAweDUzLCAweGZlLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4YSwgMHgzNCwgMHhhLCAweGUzLCAweGY3LCAweGUsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHgxMiwgMHgxMywgMHhlOCwgMHhmNywgMHhlZCwgMHhmOSwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGNjLCAweDYsIDB4OTgsIDB4OTAsIDB4OTQsIDB4YTksIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhhYSwgMHhhMCwgMHg4MiwgMHg4MCwgMHg5ZSwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweDgwLCAweGEwLCAweDllLCAweDgyLCAweGE3LCAweDFiLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4YjQsIDB4ZGMsIDB4OTgsIDB4MWYsIDB4NDksIDB4NiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDg0LCAweDdiLCAweDc3LCAweDFiLCAweDc0LCAweDc4LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4NzQsIDB4MWYsIDB4OTYsIDB4NzMsIDB4NzEsIDB4OTUsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0NiwgMHg3NSwgMHg0MywgMHg1OCwgMHg4MCwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGZkLCAweGIyLCAweDI3LCAweGEsIDB4MzQsIDB4YSwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIsIDB4MSwgMHhmNywgMHhlZCwgMHhmOSwgMHhiMCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YTQsIDB4ZjcsIDB4YiwgMHg1LCAweGZiLCAweGQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRhLCAweGZiLCAweGIsIDB4OGYsIDB4YSwgMHhhNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4N2EsIDB4YSwgMHhmYywgMHhjMywgMHhmZSwgMHgyNywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzQsIDB4YSwgMHhmNywgMHg1OCwgMHhjMCwgMHgxLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4M2UsIDB4MywgMHg5ZiwgMHgxNiwgMHgyNSwgMHhhLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZGIsIDB4MTUsIDB4NTYsIDB4YjYsIDB4NWYsIDB4YzAsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhiNSwgMHhjMiwgMHhjMywgMHg2MSwgMHhiMSwgMHg1NywgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDY0LCAweDU0LCAweDFlLCAweGJmLCAweDE2LCAweGEzLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YTQsIDB4YTIsIDB4OWYsIDB4N2IsIDB4NzIsIDB4NzIsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3NCwgMHg3MywgMHg3NywgMHg5ZSwgMHhhNCwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MSwgMHg4YiwgMHhmNywgMHhkLCAweGM2LCAweGY3LCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhmNywgMHhkLCAweGY3LCAweDM5LCAweGY3LCAweGIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDE2LCAweGY3LCAweDJjLCAweDYsIDB4ZjEsIDB4ZjcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDgzLCAweDYsIDB4NjYsIDB4ZmIsIDB4NDgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDk5LCAweDUwLCAweGEsIDB4ZmMsIDB4MTAsIDB4NiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU0LCAweDUsIDB4ZjcsIDB4ZGQsIDB4NTAsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDYsIDB4YWYsIDB4ZjcsIDB4MzksIDB4NSwgMHhmNywgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTQsIDB4ZjcsIDB4YiwgMHg1LCAweGZkLCAweDM5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhmYywgMHgzNiwgMHgxNSwgMHhmNywgMHgzZSwgMHhmNywgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZTIsIDB4NiwgMHg0ZCwgMHhmYiwgMHhiZiwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHhmYiwgMHg2MywgMHg3NiwgMHhmNywgMHgyNywgMHhmNywgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDExLCAweGY3LCAweDExLCAweGY4LCAweDkwLCAweGY3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjYsIDB4ZjcsIDB4MmMsIDB4ZjcsIDB4MzgsIDB4ZWQsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhmNywgMHg4OCwgMHhmYiwgMHgzNiwgMHgxNSwgMHg3MCwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODMsIDB4YmUsIDB4YzcsIDB4OGIsIDB4OTMsIDB4MWIsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHhhYSwgMHhkOSwgMHhjNiwgMHg1YiwgMHhhNywgMHg1MSwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDhkLCAweDcsIDB4ZjcsIDB4NjEsIDB4OTIsIDB4ZTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhiMSwgMHhmMywgMHhmYiwgMHgyZiwgMHhhMiwgMHgxOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4NjQsIDB4MzcsIDB4NjksIDB4NGUsIDB4MWIsIDB4MjcsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhlZiwgMHhmNywgMHhiLCAweDgwLCAweGEsIDB4NjgsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHgyOCwgMHg5OSwgMHg1LCAweGY3LCAweDNlLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTUsIDB4Y2UsIDB4ZmIsIDB4MWMsIDB4MWIsIDB4ZmIsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMCwgMHhmYiwgMHg1ZSwgMHhmYiwgMHg4NiwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGZiLCAweDMzLCAweGY3LCAweDY3LCAweDFmLCAweDhjLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ODcsIDB4MWIsIDB4NWIsIDB4ODIsIDB4NzMsIDB4NTYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRjLCAweDhlLCAweDk5LCAweDlkLCAweDhlLCAweGEwLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4OWEsIDB4NzcsIDB4NzksIDB4NWMsIDB4MmUsIDB4OGIsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg1YywgMHg4ZSwgMHg4YywgMHg4MCwgMHgxZiwgMHhlLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiYiwgMHg5NSwgMHhhLCAweGQ3LCAweDE2LCAweDJjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhMiwgMHhiYiwgMHgxNSwgMHhlYSwgMHg2LCAweDRkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4NWIsIDB4YSwgMHhlLCAweDQxLCAweGEsIDB4ZjcsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGQ3LCAweDE2LCAweDJjLCAweGEsIDB4ZjcsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHgxNSwgMHhlOSwgMHg2LCAweGY3LCAweDMyLCAweGY3LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4YSwgMHhlLCAweDQxLCAweGEsIDB4YmIsIDB4OTUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGY5LCAweDNkLCAweDMsIDB4ZDcsIDB4MTYsIDB4MmMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweGJiLCAweDE1LCAweGY3LCAweDksIDB4NiwgMHhlMCwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDMyLCAweDUsIDB4ZWMsIDB4NiwgMHg0ZiwgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGEsIDB4ZSwgMHhhYiwgMHg4YiwgMHhmNywgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4ZjcsIDB4MTAsIDB4ZjcsIDB4M2MsIDB4ZjcsIDB4ZiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZWMsIDB4ZjksIDB4YWQsIDB4MTUsIDB4ZjcsIDB4ZCwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4YywgMHg0ZiwgMHhhLCAweGZiLCAweGMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDg3LCAweGZlLCAweDI3LCAweDE1LCAweDJjLCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGEsIDB4ZDAsIDB4OTUsIDB4YSwgMHhmNywgMHhiZCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDE1LCAweGU1LCAweDYsIDB4NTAsIDB4NjcsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDYsIDB4ZmIsIDB4MWMsIDB4ZmUsIDB4M2MsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHhmOSwgMHg3NCwgMHg1LCAweDVlLCAweGEsIDB4ZmIsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHg3NCwgMHg1LCAweGUsIDB4NGUsIDB4YSwgMHhmNywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4Y2IsIDB4MTYsIDB4NDYsIDB4YSwgMHg5MCwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY2LCAweDYsIDB4ZjcsIDB4NDksIDB4NjcsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDYsIDB4ZSwgMHg0ZSwgMHhhLCAweGQwLCAweDk1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmLCAweGY5LCAweGE1LCAweDE1LCAweGY3LCAweDExLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhlNCwgMHhiNCwgMHgzMiwgMHg1LCAweGYzLCAweDYsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYiwgMHgzZCwgMHhhLCAweGZiLCAweDZiLCAweGZlLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NDYsIDB4YSwgMHhlLCAweDRlLCAweGEsIDB4ZDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDEsIDB4ZjcsIDB4MWYsIDB4ZjksIDB4YWQsIDB4NmEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRiLCAweGZiLCAweGUsIDB4NmEsIDB4YSwgMHhmYiwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZlLCAweDI3LCAweDE1LCAweDQ2LCAweGEsIDB4ZSwgMHg1NywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4MTYsIDB4ZjcsIDB4OTksIDB4NiwgMHhmNywgMHg3ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGY3LCAweDIyLCAweGY3LCAweGE3LCAweGY3LCAweDcxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZGIsIDB4ZmIsIDB4NmMsIDB4MWYsIDB4ZmIsIDB4NTksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGZiLCAweGMzLCAweDUsIDB4M2QsIDB4NiwgMHg3MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NSwgMHhkOCwgMHg2LCAweGY3LCAweDUsIDB4ZmIsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhiMiwgMHhmNywgMHg0ZCwgMHg1LCAweGY3LCAweDMyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhmNywgMHg0LCAweDUsIDB4ZmIsIDB4MzEsIDB4NiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRkLCAweDUsIDB4ZTEsIDB4NiwgMHhkOSwgMHhmNSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ0LCAweGZiLCAweDhhLCAweGZiLCAweDE1LCAweDU2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4MWYsIDB4ZSwgMHg2OCwgMHhhLCAweGY5LCAweDczLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg4YSwgMHhhLCAweGYyLCAweGY4LCAweDgyLCAweDVjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1OSwgMHhmYywgMHg4MiwgMHg1LCAweDliLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhmOSwgMHg3MywgMHgzZCwgMHhhLCAweDI1LCAweGZjLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4YSwgMHhmYiwgMHg1YSwgMHhmOCwgMHg4MCwgMHgzZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTIsIDB4Y2EsIDB4MTUsIDB4Y2EsIDB4NiwgMHg4ZiwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGFhLCAweGFhLCAweDg5LCAweGFiLCAweDg5LCAweDllLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4ODEsIDB4OWUsIDB4ODEsIDB4OWIsIDB4ODEsIDB4YWIsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg4ZCwgMHhiNiwgMHhiMiwgMHg5NywgMHhkYywgMHg4LCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4YSwgMHg3NywgMHg3OCwgMHg5MywgMHg5NCwgMHg3NiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDczLCAweDcwLCAweDk2LCAweDY3LCAweDFiLCAweDQ3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NTgsIDB4ODIsIDB4MWYsIDB4ZSwgMHg0OSwgMHhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZjksIDB4YTQsIDB4NzUsIDB4YSwgMHhmYiwgMHhjYSwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4MjMsIDB4NzgsIDB4ZjcsIDB4MTQsIDB4ZjksIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgzNiwgMHhhLCAweGY4LCAweDU0LCAweGY5LCAweGE0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4NiwgMHhmNywgMHgzNywgMHg1ZCwgMHhhLCAweGZiLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYywgMHg1MSwgMHgyYiwgMHhhLCAweDQ5LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHhmOSwgMHhhNCwgMHgxNSwgMHhmNywgMHhiLCAweDYsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhiMywgMHgzMSwgMHg1LCAweGVlLCAweDYsIDB4NGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg5MSwgMHhhLCAweGZjLCAweDE5LCAweDJiLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHg3OCwgMHhmNywgMHgxMywgMHhmOSwgMHg3MCwgMHhkZSwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjgsIDB4YSwgMHhmOSwgMHhiMSwgMHgxNSwgMHhjYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4OGYsIDB4OTUsIDB4YTgsIDB4YTksIDB4MWIsIDB4YWMsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg4MSwgMHg5ZiwgMHgxZiwgMHg4MCwgMHg5ZSwgMHg5ZCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDFiLCAweGJiLCAweGI1LCAweGI0LCAweGRkLCAweDk3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4NjMsIDB4YSwgMHg3NiwgMHg3OSwgMHg5NCwgMHg5NCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk2LCAweDc0LCAweDcwLCAweDk1LCAweDY2LCAweDFiLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NDMsIDB4NTcsIDB4ODEsIDB4MWYsIDB4ZmIsIDB4OWYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHgyMSwgMHhhLCAweGUsIDB4OGMsIDB4YSwgMHhmOCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEyLCAweDM2LCAweGEsIDB4ZjYsIDB4ZjcsIDB4YWUsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweGMsIDB4ZjgsIDB4OTIsIDB4MTUsIDB4ZjcsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGEsIDB4ZmIsIDB4MTAsIDB4NiwgMHhmNywgMHg0ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4MTUsIDB4ZjcsIDB4MTAsIDB4NzEsIDB4YSwgMHhmYiwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg1OCwgMHhhMSwgMHg3NiwgMHhmOCwgMHg4YywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YzUsIDB4ZWMsIDB4MTUsIDB4ZjcsIDB4MCwgMHgyYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGY3LCAweDMxLCAweGY3LCAweDQ5LCAweGZiLCAweDMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhlYywgMHhmYiwgMHg0OSwgMHhmNywgMHgzMSwgMHhmNywgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJmLCAweDIwLCAweGVhLCAweGZiLCAweDQ3LCAweGZiLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDgsIDB4ZjcsIDB4MzEsIDB4ZmIsIDB4MiwgMHgyYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGZiLCAweDMwLCAweDUsIDB4ZSwgMHhmNywgMHgyMywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDk4LCAweDc3LCAweDEsIDB4ZTAsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDIxLCAweGY3LCAweDMsIDB4MywgMHhmOCwgMHhlYSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDE1LCAweDk4LCAweDc2LCAweDk0LCAweDU1LCAweDY1LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZiwgMHgyMywgMHhmYiwgMHgyYiwgMHhmYiwgMHgzMiwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDhiLCAweDk0LCAweDdiLCAweDFlLCAweDRmLCAweGNhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4OTcsIDB4ODIsIDB4YjIsIDB4YjYsIDB4MWEsIDB4ZjcsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHhmNywgMHgzYiwgMHhmNywgMHgzMSwgMHhjMywgMHhiNCwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDkzLCAweDFlLCAweGZjLCAweDkzLCAweGZjLCAweGM0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4NTcsIDB4ZDcsIDB4ZGUsIDB4NSwgMHg2YywgMHhjMCwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGMwLCAweDFiLCAweGY3LCAweGFjLCAweGY3LCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhmNywgMHg0YiwgMHhjNCwgMHg4NywgMHhlNywgMHg2NCwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGQzLCAweGQ4LCAweDQ2LCAweGJmLCAweDQ0LCAweDNlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg1OCwgMHg0ZSwgMHg5NywgMHg0ZSwgMHgxYiwgMHhmYiwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGZiLCAweDhjLCAweGZiLCAweDM2LCAweDU5LCAweDk1LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4NGYsIDB4MWYsIDB4ZSwgMHgyZCwgMHhhLCAweGY3LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4MTUsIDB4ZWQsIDB4NiwgMHg0YSwgMHhmNywgMHgyYywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MmQsIDB4YSwgMHhiNiwgMHhjMSwgMHg2MCwgMHhhLCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZjcsIDB4MTQsIDB4ZjksIDB4M2MsIDB4ZjcsIDB4MjcsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDY4LCAweGMxLCAweDQ1LCAweGEsIDB4ZTIsIDB4NzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhmOSwgMHg2LCAweDc3LCAweGRiLCAweGY3LCAweGMsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDg1LCAweGM3LCAweDNhLCAweGEsIDB4YWIsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg3NCwgMHg3NywgMHhmNywgMHg3MCwgMHg3NywgMHgxLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHhhNSwgMHhmNywgMHhjYywgMHhmOCwgMHg2MywgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NWQsIDB4ZmIsIDB4Y2YsIDB4ZmIsIDB4MTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHg1YSwgMHhhLCAweGY3LCAweDUxLCAweGZjLCAweDU1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhmOCwgMHg4NiwgMHgxNSwgMHhlNCwgMHg2LCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmIsIDB4OTIsIDB4YSwgMHhlLCAweGFiLCAweGEwLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWQsIDB4ZjcsIDB4YywgMHhmNywgMHg2MCwgMHhmNywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWQsIDB4NzcsIDB4MSwgMHhmOCwgMHhjYywgMHhmNywgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZDcsIDB4MTYsIDB4ZjcsIDB4MjksIDB4NiwgMHhhOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDUsIDB4ZWIsIDB4NiwgMHhmNywgMHg1MiwgMHhmNywgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGY3LCAweDYxLCAweGY3LCAweDQ4LCAweGZiLCAweDNlLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4MWYsIDB4ZmIsIDB4MjcsIDB4NiwgMHhhOCwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweGEsIDB4YmYsIDB4ZmMsIDB4NjEsIDB4MTUsIDB4YjcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg1LCAweGY2LCAweDYsIDB4ZDcsIDB4YzksIDB4OGQsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjLCAweGZiLCAweDFhLCAweDdmLCAweGZiLCAweDEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDczLCAweDdkLCAweGY3LCAweDgsIDB4MzgsIDB4NzYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGY1LCAweDEyLCAweGY4LCAweDk0LCAweGY3LCAweDI1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4ZDAsIDB4ODksIDB4MTUsIDB4ZjcsIDB4MmUsIDB4NiwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDU2LCAweDUsIDB4ZTEsIDB4OWUsIDB4YTAsIDB4ZTYsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiNCwgMHg5NywgMHg3YiwgMHg3NCwgMHg3MywgMHg3NywgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDc3LCAweDFmLCAweDYxLCAweDViLCAweDc5LCAweDYxLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NWUsIDB4YTQsIDB4NWUsIDB4YjIsIDB4NTUsIDB4MWUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhhMiwgMHg2NSwgMHg2ZSwgMHgxYSwgMHgxMywgMHhiMCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDc4LCAweDVjLCAweDY1LCAweDdjLCAweDlmLCAweDliLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4MSwgMHg1MywgMHg1LCAweDY2LCAweGE3LCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZWYsIDB4MWIsIDB4ZjcsIDB4MWMsIDB4YmQsIDB4ZDEsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg3MywgMHhjNywgMHg2OCwgMHhiNiwgMHgxZiwgMHg2YSwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGEwLCAweGEzLCAweDFhLCAweGEyLCAweDk4LCAweDliLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4MWUsIDB4YWMsIDB4YmIsIDB4YWYsIDB4Y2YsIDB4YzQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHg1YywgMHhjMCwgMHhmYiwgMHgxYSwgMHhmYiwgMHg2MywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDAsIDB4ZmIsIDB4NDMsIDB4NjEsIDB4MWUsIDB4ZSwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjgsIDB4OGMsIDB4ZjcsIDB4MmMsIDB4NzYsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDg5LCAweDIwLCAweGEsIDB4MTMsIDB4YjAsIDB4MmEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGY3LCAweGYyLCAweDE1LCAweGYyLCAweDYsIDB4NDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg5MywgMHhhLCAweGUsIDB4NDIsIDB4YSwgMHhmNywgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweGY3LCAweDVmLCAweDc3LCAweDEyLCAweGMyLCAweGY3LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzgsIDB4ZjcsIDB4ZTgsIDB4ZjgsIDB4ZWEsIDB4MTUsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDQ5LCAweDVkLCAweGEsIDB4ZmIsIDB4M2UsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGZkLCAweDg0LCAweDIwLCAweGEsIDB4MTMsIDB4YjgsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDQyLCAweGEsIDB4ZjgsIDB4OGMsIDB4ZjcsIDB4MmMsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDYyLCAweGY4LCAweGVhLCAweDE1LCAweGY3LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlNywgMHhlNSwgMHhiNCwgMHgzMSwgMHg1LCAweGYzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhmNywgMHgyYywgMHg5MiwgMHhhLCAweGE3LCAweGZkLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4YSwgMHgxMywgMHhiMCwgMHgyZSwgMHhhLCAweDQyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhjNSwgMHhkZCwgMHg4OSwgMHg3NywgMHgxMiwgMHhjMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDEzLCAweGE4LCAweGY3LCAweDdmLCAweGY4LCAweGY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4NiwgMHg5MCwgMHg5YSwgMHg5NSwgMHhhNywgMHhhZCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDhjLCAweGE2LCAweDdmLCAweGE2LCAweDgwLCAweDgsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhhMCwgMHg4MiwgMHhhMSwgMHgxYiwgMHhiZiwgMHhiYSwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDk5LCAweDFmLCAweDQzLCAweDYsIDB4NzIsIDB4ODMsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg3NSwgMHgxYiwgMHg3NywgMHg3OSwgMHg5MSwgMHg5MywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweDU4LCAweDk3LCAweDcwLCAweDZiLCAweDk4LCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NDAsIDB4NzIsIDB4NDMsIDB4NTcsIDB4ODAsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhmYywgMHhmOSwgMHgyMCwgMHhhLCAweDEzLCAweGE4LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzYywgMHg3ZCwgMHhmNiwgMHgyYywgMHhlYSwgMHgxMiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIyLCAweDEzLCAweDYwLCAweGY3LCAweDZkLCAweGY4LCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4YSwgMHhmNywgMHg1NiwgMHhmYiwgMHhlLCAweDZkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmZCwgMHg2ZiwgMHgyMCwgMHhhLCAweDEzLCAweGEwLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg0MiwgMHhhLCAweGY3LCAweGJhLCAweGY3LCAweDMzLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4YWQsIDB4ZjcsIDB4NTcsIDB4NTYsIDB4NzcsIDB4MTIsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMywgMHgxMywgMHhhYSwgMHhmNywgMHhiMywgMHhmOSwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDU2LCAweGJhLCAweDVmLCAweGM0LCAweGMzLCAweGI5LCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4YzIsIDB4NWQsIDB4YjYsIDB4NTMsIDB4NGYsIDB4NWYsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHgxZSwgMHhjMywgMHgxNiwgMHgxMywgMHg1NiwgMHhhNCwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGE2LCAweGE0LCAweGEwLCAweDc5LCAweDcwLCAweDczLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NzIsIDB4NzAsIDB4NzYsIDB4OWYsIDB4YTMsIDB4MWUsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHgzYywgMHgzMiwgMHhhLCAweDk5LCAweGNhLCAweDlhLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OTksIDB4YSwgMHhhYiwgMHhiMSwgMHgxYSwgMHhhYiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZmIsIDB4NTksIDB4MjcsIDB4ZmIsIDB4NCwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQsIDB4NjAsIDB4MWUsIDB4ZjcsIDB4MjgsIDB4N2YsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDk4LCAweGIxLCAweDk5LCAweGI4LCAweDFiLCAweGNmLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4NTQsIDB4NzEsIDB4MWYsIDB4NmMsIDB4ODAsIDB4NTUsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg4NCwgMHg4LCAweDQyLCAweDg3LCAweGZiLCAweDJmLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzMsIDB4MWEsIDB4MjgsIDB4ZDYsIDB4NTIsIDB4ZTEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhhYSwgMHhiYSwgMHhjYiwgMHg5ZCwgMHhjMiwgMHhiZiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDcwLCAweDhiLCAweDgyLCAweDkzLCAweDcyLCAweDgsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3YiwgMHgxNSwgMHgzMSwgMHhhLCAweDkxLCAweGU2LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhmNywgMHg5MiwgMHg3ZCwgMHhmNywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4ZTMsIDB4ZjcsIDB4MWIsIDB4ZjIsIDB4MSwgMHhjMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGY4LCAweGVmLCAweGY3LCAweDE5LCAweDMsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDFlLCAweDE1LCAweGY3LCAweDFmLCAweDdkLCAweDUsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg5OSwgMHhiMSwgMHhkMCwgMHgxYiwgMHhjZSwgMHhhMiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDdmLCAweDFmLCAweDdiLCAweDg2LCAweDdjLCAweDg0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4MiwgMHg4LCAweDM1LCAweDgzLCAweGZiLCAweDIzLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzEsIDB4MWEsIDB4MjgsIDB4ZDMsIDB4NGEsIDB4ZWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhkMCwgMHhlNywgMHhhYywgMHhhMywgMHgxZSwgMHg2ZSwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDJiLCAweGY3LCAweDIyLCAweDFiLCAweGY3LCAweDM2LCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTEsIDB4YWIsIDB4OWUsIDB4MWYsIDB4ZmIsIDB4MTcsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDQ2LCAweDY0LCAweDUwLCAweDhiLCAweDdkLCAweDFiLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4YmIsIDB4ZDksIDB4ODgsIDB4MWYsIDB4ZjgsIDB4NywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4YjQsIDB4OGMsIDB4YjAsIDB4OWEsIDB4MWEsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhlOSwgMHhmYiwgMHgxYiwgMHg2NCwgMHgzZiwgMHg4NSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDFlLCAweDlmLCAweDdmLCAweDZkLCAweGJhLCAweGZiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4MWIsIDB4MzksIDB4NGQsIDB4MzEsIDB4NzIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0YSwgMHgzNSwgMHgxNSwgMHhmNywgMHg1LCAweGE0LCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4YjEsIDB4MWIsIDB4Y2IsIDB4YjMsIDB4NWIsIDB4MzQsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYywgMHgxNSwgMHg1MiwgMHgxNSwgMHg0MywgMHg3YywgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDNhLCAweDFiLCAweDU1LCAweDdjLCAweGFiLCAweGEyLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4YWQsIDB4ZjcsIDB4M2EsIDB4OWUsIDB4MWYsIDB4ZSwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDYzLCAweDc2LCAweGY5LCAweDJjLCAweGY3LCAweDIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGY3LCAweDIzLCAweGU0LCAweGUyLCAweDMsIDB4ZjcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHgxNSwgMHg3MiwgMHg1NSwgMHg1LCAweGEwLCAweDhlLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NWQsIDB4MWEsIDB4NTYsIDB4MmMsIDB4OGQsIDB4NjEsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3MSwgMHg1MiwgMHg1LCAweDg4LCAweDllLCAweGE0LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4MWIsIDB4YTYsIDB4ZjcsIDB4MzQsIDB4OGIsIDB4ZjcsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDg5LCAweGM3LCAweDNjLCAweDk4LCAweDFmLCAweDhkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg4YywgMHhiYywgMHg5MCwgMHhiZCwgMHhhZCwgMHhhMywgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweGI2LCAweGFlLCAweGVkLCAweGZiLCAweDIwLCAweGEzLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NmMsIDB4NTAsIDB4N2MsIDB4NmYsIDB4MWIsIDB4NjQsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhkMiwgMHhlMywgMHhiNCwgMHhmNywgMHgyYywgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4OTMsIDB4NDYsIDB4NzcsIDB4OGUsIDB4MWYsIDB4ZjcsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg1LCAweGUzLCAweDg0LCAweDRmLCAweGViLCAweGZiLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZmIsIDB4M2YsIDB4ZmIsIDB4MWEsIDB4ZmIsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHgyMiwgMHhjOSwgMHgyZCwgMHhkZCwgMHg3YSwgMHgxZiwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGIyLCAweDgzLCAweDg4LCAweDFiLCAweDg5LCAweDhhLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ODEsIDB4ODgsIDB4OCwgMHhlLCAweDNjLCAweGY3LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4ZjcsIDB4YjUsIDB4ZjcsIDB4MmMsIDB4MSwgMHhkMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGY3LCAweDhjLCAweGY3LCAweDFhLCAweDMsIDB4ZjcsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MSwgMHgyMywgMHhhLCAweDM1LCAweGY3LCAweGI1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4NiwgMHg0YSwgMHhmNywgMHgyYywgMHg0NywgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhmNywgMHg3MSwgMHhlMywgMHhmOCwgMHg0ZCwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ZjcsIDB4MmMsIDB4ZjcsIDB4N2UsIDB4ZjcsIDB4MjMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQ4LCAweGY4LCAweGVhLCAweDE1LCAweGYzLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHg1ZCwgMHhhLCAweGZiLCAweDNjLCAweDYsIDB4ZmIsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhhNSwgMHgyMywgMHhhLCAweGUsIDB4M2MsIDB4N2QsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOCwgMHhlMywgMHhmNywgMHhiNSwgMHhmNywgMHgyYywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NGMsIDB4ZjgsIDB4ZWEsIDB4OGYsIDB4YSwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGIzLCAweDMxLCAweDUsIDB4ZjEsIDB4NiwgMHg0YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDU0LCAweGEsIDB4ZmIsIDB4MTIsIDB4ZmMsIDB4YTUsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4M2MsIDB4N2QsIDB4ZjEsIDB4ZjcsIDB4MTcsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGQxLCAweGY3LCAweDIzLCAweGY3LCAweDhiLCAweGY3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg2YiwgMHhmOCwgMHhmMywgMHgxNSwgMHhmNywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGEsIDB4ZmIsIDB4MTMsIDB4NiwgMHhmNywgMHg1MiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MTUsIDB4ZjcsIDB4MTMsIDB4NmUsIDB4YSwgMHhmYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4OGIsIDB4ZmMsIDB4OTAsIDB4MjMsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4YSwgMHhmOCwgMHhlYiwgMHg5NSwgMHhhLCAweGQwLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4YSwgMHhjNywgMHhkMCwgMHgxNSwgMHhlNywgMHg2LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4YSwgMHhmYiwgMHgxOCwgMHg2LCAweGUsIDB4NDgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDgyLCAweDc3LCAweDEsIDB4ZjcsIDB4NGEsIDB4ZjgsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNSwgMHg2LCAweGY3LCAweDQ4LCAweDY3LCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHg2LCAweGZiLCAweDc5LCAweGZkLCAweDgyLCAweDE1LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDQ4LCAweGEsIDB4ZjgsIDB4ZWIsIDB4OTUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGY4LCAweGViLCAweDE1LCAweGY3LCAweDE1LCAweDYsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHhiNSwgMHgzMiwgMHg1LCAweGY2LCAweDYsIDB4NDksIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDI1LCAweDYsIDB4ZmIsIDB4MmUsIDB4ZmQsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgzYywgMHhhLCAweGUsIDB4NDgsIDB4YSwgMHhmOCwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUsIDB4MSwgMHhlNiwgMHhmOCwgMHhmMywgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NWYsIDB4YSwgMHhmNywgMHhlLCAweDYsIDB4YTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDUsIDB4ZmIsIDB4ZCwgMHg2LCAweGZiLCAweDkzLCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MTUsIDB4M2MsIDB4YSwgMHhlLCAweDczLCAweDdkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHhkOCwgMHhmNywgMHg0LCAweGY3LCAweDYwLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhkZCwgMHhmNywgMHgyOCwgMHhmNywgMHhhZSwgMHhmNywgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4ZTcsIDB4ZjgsIDB4Y2YsIDB4MTUsIDB4ZjcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhhYywgMHg1MiwgMHg5OCwgMHg1YSwgMHg5MywgMHg2OCwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDg5LCAweDUsIDB4YTQsIDB4NzYsIDB4NjcsIDB4YjAsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHg0MiwgMHhmYiwgMHg3LCAweGZiLCAweDI2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4MjYsIDB4YzIsIDB4ZmIsIDB4MWUsIDB4ZjcsIDB4NjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhkNiwgMHhmNywgMHg0ZSwgMHhmNywgMHgxOCwgMHhmNywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGY3LCAweDYsIDB4NTMsIDB4ZWQsIDB4MWYsIDB4ZTksIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHhiYywgMHgyMCwgMHg2NSwgMHg4MSwgMHg5YiwgMHg4NywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDliLCAweDE5LCAweDlhLCAweGEsIDB4YWUsIDB4NjQsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg5YywgMHg2ZiwgMHhmYiwgMHg5LCAweDYzLCAweDE4LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MjAsIDB4MTUsIDB4ZGQsIDB4YzIsIDB4ZjcsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YmUsIDB4YzksIDB4NmMsIDB4MzUsIDB4NTcsIDB4NWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhmYiwgMHgxMCwgMHgzYywgMHg2OCwgMHhkMSwgMHhjNSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ODQsIDB4YSwgMHhmOCwgMHhmOCwgMHhmNywgMHgxMSwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDg5LCAweDc3LCAweDEyLCAweGY4LCAweDg0LCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YzgsIDB4Y2MsIDB4MTYsIDB4ZjcsIDB4MjksIDB4NiwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZmLCAweDlkLCAweGRjLCAweDkxLCAweGFkLCAweGE3LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4YWQsIDB4YTcsIDB4YjksIDB4YjAsIDB4YjksIDB4MWIsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg3MSwgMHg2YSwgMHg3MCwgMHg4NSwgMHg2YywgMHg4NSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDQ5LCAweGZiLCAweGMzLCAweDUsIDB4ZjcsIDB4MjksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGY3LCAweGMyLCAweDUsIDB4OTQsIDB4YjIsIDB4OGYsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHgxYSwgMHhjMSwgMHg2NSwgMHhjYiwgMHgyMiwgMHgzMiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDY1LCAweDYwLCAweDFlLCAweDg5LCAweDhkLCAweDk5LCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgyMCwgMHg2LCAweGUzLCAweGRiLCAweDE1LCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhhOCwgMHg5MCwgMHg5OSwgMHg5NCwgMHhhNywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGE2LCAweDhjLCAweGEwLCAweDgwLCAweGExLCAweDdmLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4YTAsIDB4ODIsIDB4YTYsIDB4OGMsIDB4YmMsIDB4OGUsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHg5OCwgMHhkYywgMHg4LCAweDQ4LCAweDYsIDB4NzIsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg3YiwgMHg3NywgMHgxYiwgMHg3OCwgMHg3OCwgMHg5MSwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFmLCAweDEzLCAweDk4LCAweDk3LCAweDcwLCAweDZkLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MWIsIDB4MTMsIDB4YzgsIDB4NDQsIDB4NzQsIDB4NDMsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxZiwgMHhlLCAweDRjLCAweGEsIDB4ZGQsIDB4ZjcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhhLCAweGY3LCAweDRjLCAweGY4LCAweGUsIDB4MTUsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDRiLCAweGY3LCAweDJjLCAweDY1LCAweGEsIDB4NzMsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweGY5LCAweDIzLCAweDc3LCAweDEsIDB4ZGQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHhmNywgMHg5ZCwgMHhmNywgMHgyOCwgMHgzLCAweGY3LCAweGZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZWEsIDB4MTUsIDB4ZWUsIDB4NiwgMHhmNywgMHgzZCwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4MzMsIDB4NiwgMHhmYywgMHgxOSwgMHhmYywgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGEsIDB4ZSwgMHg0YywgMHhhLCAweGY3LCAweDczLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4MTUsIDB4ZjcsIDB4ZCwgMHg2LCAweGU0LCAweGU1LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4NSwgMHhmMCwgMHg2LCAweDRjLCAweGY3LCAweDJjLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHhiOSwgMHhmYywgMHhhNiwgMHgyMiwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3ZCwgMHhmNywgMHgxLCAweGY4LCAweGM0LCAweGRkLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4ZGQsIDB4ZjcsIDB4MjYsIDB4ZjcsIDB4YTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHgxMywgMHhkOCwgMHhmNywgMHg5YiwgMHhmOCwgMHhmNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDYsIDB4OGYsIDB4OWEsIDB4OTQsIDB4YTcsIDB4YWIsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg4YywgMHhhNSwgMHg3YywgMHhhNywgMHg4MCwgMHg5ZiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDg0LCAweDllLCAweDhjLCAweGJiLCAweDhlLCAweGI2LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ZGMsIDB4OCwgMHg0OCwgMHg2MywgMHhhLCAweDc3LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OTMsIDB4NzYsIDB4MWYsIDB4MTMsIDB4YjgsIDB4OTcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg5NywgMHg2YSwgMHgxYiwgMHg0NSwgMHg3NCwgMHg0MywgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDFmLCAweGZiLCAweDQ5LCAweGZjLCAweDFiLCAweDIyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDczLCAweDdkLCAweGY3LCAweDAsIDB4M2YsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGY4LCAweGYzLCAweDE1LCAweGY3LCAweDEyLCAweDZlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMiwgMHg2LCAweGY3LCAweDUwLCAweGZiLCAweGUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMiwgMHg2ZSwgMHhhLCAweGZiLCAweDExLCAweDYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHhmYywgMHg5MSwgMHgyMiwgMHhhLCAweGUsIDB4NTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHhmNywgMHgxZCwgMHgxLCAweGY3LCAweGE2LCAweGY3LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhkZCwgMHhmNywgMHg0ZCwgMHgxNSwgMHhmOCwgMHhhNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGZjLCAweGE0LCAweDYsIDB4ZjcsIDB4NTQsIDB4ZGEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNCwgMHhmNywgMHgyNywgMHhmYiwgMHgyNCwgMHg2LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4NCwgMHhmNywgMHgyNCwgMHhmNywgMHgyNSwgMHhmYiwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhmYiwgMHg4LCAweDgzLCAweDc2LCAweGIxLCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZDUsIDB4ZWIsIDB4YjEsIDB4NzcsIDB4MSwgMHhkMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4NjgsIDB4ZjcsIDB4YywgMHgzLCAweDllLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YzIsIDB4NWYsIDB4Y2IsIDB4Y2UsIDB4NSwgMHg3MCwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDg5LCAweGFjLCAweDFiLCAweGY3LCAweDU5LCAweGViLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4ZjcsIDB4MjgsIDB4YmYsIDB4N2IsIDB4ZDAsIDB4NzMsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjYSwgMHhjZCwgMHg1MiwgMHhiNiwgMHg0YiwgMHg0OSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NTYsIDB4NGQsIDB4OGMsIDB4NzIsIDB4MWIsIDB4ZmIsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHhmYiwgMHg2YywgMHgzMiwgMHg0OCwgMHg5YiwgMHg1OSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFmLCAweGUzLCAweGU3LCAweDE1LCAweDg4LCAweDkzLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YTIsIDB4MWEsIDB4ZDcsIDB4YzIsIDB4ZjcsIDB4MTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGIwLCAweDllLCAweDgwLCAweDg3LCAweDk0LCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4ZmIsIDB4YjgsIDB4MTUsIDB4ZjcsIDB4NzYsIDB4ZjcsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDhlLCAweDgwLCAweDkyLCAweDczLCAweDc2LCAweDFhLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4ZmIsIDB4MTYsIDB4ZmIsIDB4MTMsIDB4NjcsIDB4N2IsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg4MCwgMHgxZSwgMHhlLCAweDU5LCAweGEsIDB4ZjgsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYywgMHgyOSwgMHhhLCAweDc5LCAweGY4LCAweGE1LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDU5LCAweGEsIDB4ZjksIDB4MjksIDB4NzcsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDIxLCAweGY4LCAweGFhLCAweDYwLCAweGEsIDB4NTksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDk2LCAweGY3LCAweDI3LCAweDI5LCAweGEsIDB4ZmIsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhhYSwgMHg0NSwgMHhhLCAweDU5LCAweGEsIDB4MTIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHgyOCwgMHhhLCAweDEzLCAweDgwLCAweDM1LCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmYiwgMHgyZiwgMHhmOCwgMHhiMCwgMHgzYSwgMHhhLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTUsIDB4NzYsIDB4ZmEsIDB4NTgsIDB4NzcsIDB4MSwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGY2LCAweDMsIDB4YzIsIDB4MzAsIDB4MTUsIDB4N2UsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDdlLCAweGEsIDB4Y2IsIDB4ZWUsIDB4YzIsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmOCwgMHhkOSwgMHg3NywgMHhhLCAweGZjLCAweDI4LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg1OSwgMHhmOCwgMHgyOCwgMHg1NCwgMHhhLCAweGU1LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NSwgMHg0ZSwgMHg2YywgMHhhLCAweGY3LCAweGE1LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4MTUsIDB4ZTcsIDB4NiwgMHhmNywgMHgzMSwgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGEsIDB4ZSwgMHg3MywgMHhmYiwgMHg0ZiwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGY2LCAweGY3LCAweGVhLCAweGYwLCAweGY3LCAweDRmLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg5ZCwgMHhmNywgMHgyMywgMHhmNywgMHhlYywgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NzAsIDB4Y2MsIDB4MTUsIDB4M2QsIDB4YmQsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHhhYywgMHgxYiwgMHhmNywgMHgyZCwgMHhmNywgMHg0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4ZjcsIDB4M2UsIDB4ZTksIDB4NjksIDB4ZjcsIDB4MTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg0MCwgMHg1OCwgMHg2NiwgMHg3OSwgMHg3MywgMHgxZiwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg2LCAweDQ3LCAweGEsIDB4ZmIsIDB4NWIsIDB4ZmUsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHhhLCAweGVkLCAweGY4LCAweDNkLCAweDE1LCAweGMwLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzQsIDB4ZjcsIDB4NSwgMHhjMSwgMHhiYSwgMHg2MCwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDY3LCAweGZiLCAweDJiLCAweGZiLCAweDEsIDB4NmEsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhmNSwgMHgxZSwgMHhlLCAweDNjLCAweGZiLCAweDU1LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4Y2EsIDB4ZjcsIDB4ZCwgMHgxLCAweGMyLCAweDJmLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4MjAsIDB4N2UsIDB4YSwgMHhjYSwgMHhlZSwgMHhjMiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQxLCAweGY4LCAweGQ4LCAweDc3LCAweGEsIDB4ZmMsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhhLCAweDU5LCAweGY4LCAweDI5LCAweDU0LCAweGEsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhhNCwgMHg1LCAweDRmLCAweDZjLCAweGEsIDB4ZjcsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg1MCwgMHg2YiwgMHhhLCAweGY3LCAweDQ3LCAweGZiLCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhhLCAweGUsIDB4NzgsIDB4OWUsIDB4ZjgsIDB4YTgsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHg5ZSwgMHg2LCAweGZiLCAweDZkLCAweDk1LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhMCwgMHgzOSwgMHg2MywgMHhmZiwgMHhjLCAweDksIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDJhLCAweGIsIDB4ZjIsIDB4OWMsIDB4OTMsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ZjcsIDB4ZTEsIDB4MTQsIDB4ZjksIDB4ZiwgMHgxNSwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDAsIDB4N2MsIDB4MiwgMHgwLCAweDEsIDB4MCwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NmQsIDB4MCwgMHg3YSwgMHgwLCAweGMwLCAweDEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MmEsIDB4MSwgMHg1MSwgMHgxLCAweDU1LCAweDEsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDkzLCAweDEsIDB4YTMsIDB4MSwgMHhhOCwgMHgxLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhkMSwgMHgxLCAweGQ0LCAweDEsIDB4ZGMsIDB4MSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjgsIDB4MiwgMHg0LCAweDIsIDB4MTEsIDB4MiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MmEsIDB4MiwgMHgzNCwgMHgyLCAweDNiLCAweDIsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDRkLCAweDIsIDB4NTYsIDB4MiwgMHg1ZSwgMHgyLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg2YywgMHgyLCAweDcxLCAweDIsIDB4N2IsIDB4MiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4OGQsIDB4MiwgMHg5NCwgMHgyLCAweDk5LCAweDIsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGFmLCAweDIsIDB4YjksIDB4MiwgMHhiZSwgMHgyLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhjZiwgMHgyLCAweGUyLCAweDIsIDB4ZWEsIDB4MiwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4NywgMHgzLCAweGQsIDB4MywgMHgxMiwgMHgzLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgxYywgMHgzLCAweDI2LCAweDMsIDB4MmIsIDB4MywgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4MzQsIDB4MywgMHgzZSwgMHgzLCAweDRkLCAweDMsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDVhLCAweDMsIDB4NWYsIDB4MywgMHg2MywgMHgzLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg2YiwgMHgzLCAweDZmLCAweDMsIDB4N2EsIDB4MywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OTEsIDB4MywgMHg5ZSwgMHgzLCAweGE2LCAweDMsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGIxLCAweDMsIDB4YjUsIDB4MywgMHhiOSwgMHgzLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjOSwgMHgzLCAweGNmLCAweDMsIDB4ZDgsIDB4MywgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZWYsIDB4MywgMHhmNCwgMHgzLCAweGZhLCAweDQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NiwgMHg0LCAweGMsIDB4NCwgMHgxNywgMHg0LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgyYywgMHg0LCAweDMzLCAweDQsIDB4MzgsIDB4NCwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NDYsIDB4NCwgMHg0YiwgMHg0LCAweDUwLCAweDQsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDVlLCAweDQsIDB4NjgsIDB4NCwgMHg3MiwgMHg0LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg3ZiwgMHg0LCAweDgzLCAweDQsIDB4ODcsIDB4NCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4OGYsIDB4NCwgMHg5NSwgMHg0LCAweDllLCAweDQsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGIwLCAweDQsIDB4YjYsIDB4NCwgMHhiYiwgMHg0LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhjNiwgMHg0LCAweGNiLCAweDQsIDB4ZDAsIDB4NCwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZGEsIDB4NCwgMHhkZSwgMHg0LCAweGUzLCAweDQsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGVjLCAweDQsIDB4ZjAsIDB4NCwgMHhmNCwgMHg0LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmYywgMHg1LCAweDAsIDB4NSwgMHg0LCAweDJmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhhLCAweGFiLCAweGIxLCAweDFhLCAweGFiLCAweDdjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgzMywgMHhhLCAweDdmLCAweDUsIDB4YjksIDB4OTgsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhiOCwgMHgxYiwgMHhjZSwgMHhhOCwgMHg1YiwgMHg1NCwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDZjLCAweDgxLCAweDU0LCAweDg2LCAweDUwLCAweDg1LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg4NiwgMHhmYiwgMHgyZiwgMHg3ZiwgMHhmYiwgMHgzNCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweGQ2LCAweDUyLCAweGUxLCAweDFlLCAweGIsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhlMywgMHhmYiwgMHgzMiwgMHhmNywgMHg2OSwgMHhmNywgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweGY3LCAweDk1LCAweGY3LCAweDU2LCAweGY3LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NiwgMHhmNywgMHgxMywgMHhmYiwgMHg1MywgMHhmYiwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGZiLCAweGI0LCAweGZiLCAweDNlLCAweDFlLCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4MzcsIDB4ZjAsIDB4ZjcsIDB4M2QsIDB4ZjcsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzLCAweGMyLCAweDM0LCAweDJhLCAweGZiLCAweGEsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2MSwgMHhmYiwgMHgzYywgMHgyYSwgMHg0NCwgMHhkMSwgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGIsIDB4MTUsIDB4ZmIsIDB4MTEsIDB4ZGUsIDB4ZmIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGEsIDB4ZjcsIDB4MzYsIDB4MjYsIDB4YSwgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OCwgMHg2LCAweDk0LCAweGFlLCAweDhjLCAweGIzLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjAsIDB4NWQsIDB4ZjcsIDB4MWMsIDB4ZmIsIDB4NDEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgzNSwgMHhmYiwgMHgzMywgMHhmYiwgMHgxYiwgMHhmYiwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGZiLCAweGYsIDB4ZjcsIDB4MmQsIDB4ZDcsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGY3LCAweDE1LCAweGNjLCAweDFlLCAweGZiLCAweDFhLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg3YSwgMHg4MywgMHg2YSwgMHg1MSwgMHg0MSwgMHgxYiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweGJjLCAweGRlLCAweDhmLCAweDFmLCAweDlhLCAweGUzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4OTUsIDB4YWYsIDB4ZGUsIDB4ZTEsIDB4MWIsIDB4ZDgsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHg0NCwgMHg4OCwgMHgxZiwgMHhiLCAweDEsIDB4ZjcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI4LCAweDMsIDB4ZjcsIDB4NmIsIDB4ZjksIDB4NzMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhmYywgMHgyYSwgMHg1LCAweDgxLCAweDVmLCAweDgzLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4MWEsIDB4ZmIsIDB4MSwgMHhjMiwgMHgyYSwgMHhmNywgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEzLCAweGI2LCAweGY3LCAweDY0LCAweGY3LCAweDIwLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZGYsIDB4ZjgsIDB4MmEsIDB4NSwgMHg5NywgMHhhLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MmEsIDB4NSwgMHhmYiwgMHgxMywgMHg3MSwgMHg3OCwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIwLCAweDFiLCAweDJiLCAweDczLCAweGI0LCAweGM1LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4YjUsIDB4OTQsIDB4YjYsIDB4MWYsIDB4ZGYsIDB4ZjgsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGIsIDB4NWUsIDB4YSwgMHhlMSwgMHhmNywgMHgzNiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWYsIDB4NiwgMHhhMywgMHhmYiwgMHgzNiwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NiwgMHhmYiwgMHg4LCAweGY5LCAweDcxLCAweDQzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmYywgMHg1NCwgMHgxNSwgMHhmNywgMHgzMCwgMHhmNywgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGEsIDB4YjMsIDB4ZmIsIDB4YmEsIDB4NSwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg0OCwgMHhmNywgMHhhLCAweGZiLCAweDRmLCAweGZiLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4ZmIsIDB4NGMsIDB4ZmIsIDB4MjEsIDB4MWUsIDB4ZjcsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhjYiwgMHhiMCwgMHhmNywgMHgyYiwgMHhmNywgMHgxMSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDNkLCAweDU3LCAweDI5LCAweDU2LCAweGZiLCAweDQsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHg2NywgMHhjYiwgMHhjOCwgMHgxZSwgMHhiLCAweDE1LCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweGY4LCAweDMxLCAweDg5LCAweDE1LCAweDgyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweGY4LCAweGE3LCAweDQ3LCAweGEsIDB4NTcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg1LCAweDQ2LCAweDcxLCAweDdmLCAweGZiLCAweGQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDFiLCAweDVlLCAweDdkLCAweGE0LCAweGFkLCAweGExLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OTEsIDB4YTAsIDB4MWYsIDB4Y2MsIDB4ZjcsIDB4Y2QsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDRkLCAweGZiLCAweGJhLCAweDUsIDB4ODUsIDB4NmEsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg2MiwgMHgxYSwgMHhiLCAweDEyLCAweDEzLCAweDYwLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhhMCwgMHgzNSwgMHhhLCAweDEzLCAweDYwLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHhhLCAweDljLCAweGY3LCAweDhlLCAweDE1LCAweDg4LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzMSwgMHhhLCAweDkwLCAweGU2LCAweDk5LCAweDFmLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHgyMiwgMHgyMSwgMHhhLCAweGUsIDB4ZjgsIDB4YzQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGY3LCAweDEwLCAweDUsIDB4ZmMsIDB4MzEsIDB4NiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVhLCAweDcwLCAweGEsIDB4ZjcsIDB4MTAsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZlLCAweDYsIDB4YWQsIDB4ZjcsIDB4M2MsIDB4NmYsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4OTAsIDB4YSwgMHhiLCAweGUyLCAweDc4LCAweGY3LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NiwgMHg3NywgMHgyNCwgMHhhLCAweGIsIDB4MmEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MzIsIDB4YSwgMHg5YSwgMHhjYSwgMHg5OSwgMHhjMCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YmEsIDB4Y2IsIDB4OWQsIDB4YzIsIDB4YmYsIDB4MWYsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg4YywgMHg4MiwgMHg5MywgMHg3MiwgMHg4LCAweGIsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3NywgMHgzMCwgMHgyMCwgMHgxYiwgMHg1YSwgMHg3NywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGQ2LCAweGY3LCAweGEsIDB4YiwgMHgxNSwgMHhmNywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODMsIDB4YTYsIDB4ODcsIDB4OWUsIDB4YWEsIDB4MWEsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGZiLCAweDVhLCAweDI3LCAweGZiLCAweDMsIDB4NmIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDVmLCAweDFlLCAweGY3LCAweDI4LCAweGIsIDB4NjgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM2LCAweGY3LCAweGYsIDB4ZjgsIDB4NTQsIDB4NzcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGE2LCAweDRjLCAweGY3LCAweDYsIDB4Y2QsIDB4Y2UsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhjMiwgMHgxZSwgMHg4ZCwgMHg4OSwgMHg1LCAweGIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweGY3LCAweDJhLCAweGY4LCAweDM0LCAweGY3LCAweDJhLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGEwLCAweDc2LCAweGY5LCAweDYyLCAweDc3LCAweDEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNkLCAweGY3LCAweDU5LCAweGY3LCAweDQsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDE1LCAweGY3LCAweGMsIDB4NDAsIDB4YSwgMHhmYiwgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiLCAweDM5LCAweGEsIDB4ZjcsIDB4NDgsIDB4ZmIsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGEsIDB4ZSwgMHhmNywgMHgyLCAweDk3LCAweGMxLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4MTgsIDB4YiwgMHhmNywgMHgxYywgMHg2LCAweGY0LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NWIsIDB4YSwgMHhiLCAweDUsIDB4ZmIsIDB4MjEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4OGUsIDB4YTIsIDB4M2IsIDB4YSwgMHhiLCAweDEsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNSwgMHhmNywgMHhhMywgMHhmNywgMHgyNSwgMHgzLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGE0LCAweDgzLCAweGEsIDB4YiwgMHhhYiwgMHg4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweGY3LCAweDVhLCAweGY3LCAweDEwLCAweGY3LCAweDNjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhiLCAweDNjLCAweDdkLCAweGY3LCAweDAsIDB4MmIsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDUsIDB4ZmIsIDB4MzcsIDB4NiwgMHhiLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg2LCAweGIsIDB4MTUsIDB4ZjcsIDB4OCwgMHg2LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4YjEsIDB4MzQsIDB4NSwgMHhlYywgMHg2LCAweDRmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4NjYsIDB4YSwgMHhlLCAweGY3LCAweDI5LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmOSwgMHg3NCwgMHg1YSwgMHhhLCAweGIsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDYsIDB4YiwgMHhmYiwgMHhmOSwgMHhhMCwgMHg3NiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4NzgsIDB4ZjcsIDB4MTQsIDB4ZjksIDB4MzcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHgzNiwgMHhhLCAweGIsIDB4MTUsIDB4ZGIsIDB4NiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY1LCAweGY3LCAweDI0LCAweGY3LCAweDViLCAweDUsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDM5LCAweGZiLCAweDUzLCAweDUsIDB4YiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YTgsIDB4ZjcsIDB4MjYsIDB4NDQsIDB4YSwgMHhiLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ZjcsIDB4MSwgMHhmOCwgMHg4YiwgMHhmNywgMHgyYywgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHgxNSwgMHhlYiwgMHg2LCAweGY3LCAweDM5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4MzIsIDB4ZjcsIDB4NjcsIDB4NSwgMHgzYiwgMHg2LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjcsIDB4NSwgMHhiLCAweDQ4LCAweGEsIDB4ZjksIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhiLCAweDYsIDB4YTQsIDB4NTUsIDB4YSwgMHhiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhmNywgMHhkLCAweDUsIDB4YiwgMHg1LCAweDg5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDYsIDB4ZjcsIDB4NDQsIDB4ZjcsIDB4MjYsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDYsIDB4YiwgMHg1LCAweGZiLCAweDI5LCAweDYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MWUsIDB4NiwgMHhiLCAweGY3LCAweGUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4MWUsIDB4OGUsIDB4YTMsIDB4M2IsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDYsIDB4YiwgMHhlMiwgMHg4YiwgMHhmNywgMHhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4YSwgMHgxLCAweGY5LCAweDYsIDB4ZjcsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGIsIDB4ZWMsIDB4NzYsIDB4ZjgsIDB4MmMsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NzMsIDB4N2QsIDB4ZjIsIDB4MzAsIDB4ZTYsIDB4YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmEsIDB4NiwgMHhiLCAweDg1LCAweGEsIDB4NiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg4ZCwgMHg2LCAweGIsIDB4ZjcsIDB4MmMsIDB4NSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmEsIDB4NiwgMHhiLCAweDRmLCAweGEsIDB4ZmIsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4NDksIDB4ZmIsIDB4ZSwgMHgxNSwgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4NiwgMHhmNywgMHgzMiwgMHhmNywgMHgyNywgMHg1MywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgxNSwgMHhjYSwgMHg2LCAweDdlLCAweDUyLCAweDczLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4ODIsIDB4N2UsIDB4NGQsIDB4MTgsIDB4YiwgMHhmYiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4Y2EsIDB4NiwgMHg3ZSwgMHg1MywgMHg3MywgMHg3YiwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDgsIDB4YiwgMHg2LCAweDcyLCAweDg0LCAweDg0LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MWIsIDB4YiwgMHhmNywgMHhjMCwgMHgxNiwgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YzEsIDB4YiwgMHgzZCwgMHhhLCAweGUsIDB4OTgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHhmNywgMHgyYiwgMHg1LCAweGIsIDB4ZTIsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhiLCAweDE1LCAweGY3LCAweGEsIDB4NiwgMHhhNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NSwgMHhmYiwgMHhhLCAweDYsIDB4YiwgMHg4NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZSwgMHg2LCAweGIsIDB4MTUsIDB4ZjcsIDB4YiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4YiwgMHg2LCAweGIsIDB4NzIsIDB4NjksIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHgxYiwgMHg4NiwgMHg3OSwgMHg4YiwgMHg5MywgMHg3MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MTUsIDB4ZjcsIDB4MTUsIDB4NiwgMHhhNiwgMHg1NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTUsIDB4NiwgMHhiLCAweDYsIDB4YTUsIDB4NTUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NSwgMHhmOCwgMHgxNCwgMHg2LCAweGE0LCAweGIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGZlLCAweDYsIDB4YTQsIDB4YiwgMHg2LCAweGE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHg1LCAweGIsIDB4ZjgsIDB4ZjAsIDB4ZjcsIDB4MjYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmIsIDB4OGEsIDB4ZmIsIDB4NTgsIDB4ZjcsIDB4NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGY3LCAweDgsIDB4YiwgMHhmYiwgMHgxMSwgMHg1OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDNiLCAweDFlLCAweGU4LCAweDE2LCAweDliLCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHg2LCAweDRjLCAweDVkLCAweGEsIDB4ZmIsIDB4MWYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MTIsIDB4YzIsIDB4ZjcsIDB4MjMsIDB4MTMsIDB4NzAsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGEsIDB4ZmIsIDB4NTcsIDB4YiwgMHg4ZCwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDc3LCAweDEsIDB4YiwgMHhhMCwgMHg3NiwgMHhmOCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4YiwgMHg1LCAweGZiLCAweGUsIDB4NiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgyNywgMHg2LCAweGIsIDB4ZjcsIDB4MjQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MSwgMHhkMSwgMHhmNywgMHgyMiwgMHhmNywgMHg4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDMsIDB4YiwgMHg1LCAweDg3LCAweDliLCAweGI4LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4MWIsIDB4ZjIsIDB4YWUsIDB4YiwgMHhmYiwgMHg1OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4ZjksIDB4NGUsIDB4ZjcsIDB4MiwgMHgxLCAweGIsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YSwgMHhmNywgMHg0NCwgMHhmNywgMHg5LCAweDljLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1NCwgMHhhLCAweGUsIDB4ZjcsIDB4MWIsIDB4NiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YywgMHg1LCAweGIsIDB4NzMsIDB4YTAsIDB4NzYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MWMsIDB4YiwgMHgxNSwgMHhmNywgMHhlLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiLCAweDczLCAweDhiLCAweGY3LCAweGQsIDB4ZjgsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGIsIDB4ZjcsIDB4NzcsIDB4ZjUsIDB4MSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDc3LCAweDE1LCAweGIsIDB4NiwgMHhhMSwgMHhmNywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgzZCwgMHg2LCAweGIsIDB4ZDAsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg2LCAweGIsIDB4OTYsIDB4YSwgMHhkNywgMHgxNiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4NzgsIDB4ZjcsIDB4MTIsIDB4YiwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4NiwgMHhiLCAweDE1LCAweGY3LCAweDFlLCAweDYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweGUsIDB4NiwgMHhiLCAweDUsIDB4ZmMsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIsIDB4NSwgMHhmYiwgMHgxYiwgMHg2LCAweGIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGEsIDB4YiwgMHg1LCAweGZiLCAweDI2LCAweDYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MjgsIDB4NiwgMHhiLCAweGY3LCAweDJiLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY3LCAweGMsIDB4MSwgMHhiLCAweGZiLCAweDJiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDUsIDB4ZmIsIDB4MTcsIDB4YiwgMHhhMCwgMHhlOCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmIsIDB4MjIsIDB4NiwgMHhiLCAweGY3LCAweDIyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNhbnNJdGFsaWMuYyBiL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRTYW5zSXRhbGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjMmVkZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRTYW5zSXRhbGljLmMKQEAgLTAsMCArMSwyMDUxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTYW5zSXRhbGljRm9udERhdGEgWzE2MzM5XSA9IHsweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NCwgMHgyLCAweDAsIDB4MSwgMHgxLCAweDEsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDUzLCAweDYxLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg0ZiwgMHg1NCwgMHg0NiwgMHgyZCwgMHg0OSwgMHg3NCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NjksIDB4NjMsIDB4MCwgMHgxLCAweDEsIDB4MSwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MTAsIDB4MCwgMHhmOCwgMHgxYywgMHgxLCAweGY4LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGY4LCAweDFlLCAweDMsIDB4ZjgsIDB4MTgsIDB4NCwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHgyLCAweGZiLCAweDNlLCAweGZiLCAweDc1LCAweGZhLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHg0YiwgMHg1LCAweGY3LCAweDM2LCAweGYsIDB4ZjksIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4YzMsIDB4MWMsIDB4M2EsIDB4ZmMsIDB4MTIsIDB4MCwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDEsIDB4NSwgMHgyZiwgMHg0NCwgMHg1MiwgMHg0NSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NmYsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHg0MywgMHg2OCwgMHg3MiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MjAsIDB4NTMsIDB4NjEsIDB4NmUsIDB4NzMsIDB4MjAsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDQ2LCAweDIwLCAweDQ5LCAweDc0LCAweDYxLCAweDZjLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg0MywgMHg2OCwgMHg3MiwgMHg2RiwgMHg2RCwgMHgyMCwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NmUsIDB4NzMsIDB4MjAsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDAsIDB4MjIsIDB4MCwgMHg4YSwgMHgwLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGFjLCAweDAsIDB4YWQsIDB4MCwgMHhhZSwgMHgwLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGIwLCAweDAsIDB4MjMsIDB4MCwgMHgyNCwgMHgwLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDI1LCAweDAsIDB4MjYsIDB4MCwgMHhiMiwgMHgwLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGI0LCAweDAsIDB4YjUsIDB4MCwgMHg5YSwgMHgxLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDI3LCAweDAsIDB4MjgsIDB4MCwgMHgyOSwgMHgwLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGI2LCAweDAsIDB4YjcsIDB4MCwgMHhiOCwgMHgwLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDJiLCAweDAsIDB4MmMsIDB4MCwgMHgyZCwgMHgwLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDJlLCAweDAsIDB4MmYsIDB4MCwgMHhiYSwgMHgwLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDhlLCAweDAsIDB4YmIsIDB4MCwgMHhiYywgMHgwLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGJlLCAweDAsIDB4OGQsIDB4MCwgMHhiZiwgMHgwLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDMyLCAweDAsIDB4MzMsIDB4MCwgMHgzNCwgMHgwLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDM1LCAweDAsIDB4OWQsIDB4MCwgMHgzNiwgMHgwLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGMyLCAweDAsIDB4YzMsIDB4MCwgMHhjNCwgMHgwLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDM4LCAweDAsIDB4MzksIDB4MCwgMHgzYSwgMHgwLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGM2LCAweDAsIDB4M2IsIDB4MCwgMHhjNywgMHgwLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGM4LCAweDAsIDB4YzksIDB4MCwgMHg3ZCwgMHgwLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDkwLCAweDAsIDB4Y2IsIDB4MCwgMHg3LCAweDAsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4M2YsIDB4MCwgMHg1ZiwgMHgwLCAweGIsIDB4MCwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjZCwgMHgwLCAweDQzLCAweDAsIDB4M2QsIDB4MCwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg1YywgMHgwLCAweDVlLCAweDAsIDB4M2MsIDB4MCwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4MSwgMHgwLCAweGEwLCAweDAsIDB4NzQsIDB4MCwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4OCwgMHgwLCAweGNlLCAweDAsIDB4ODUsIDB4MCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg3ZSwgMHgwLCAweDFiLCAweDAsIDB4ZCwgMHgwLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDY3LCAweDAsIDB4NDUsIDB4MCwgMHg3MCwgMHgwLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGExLCAweDAsIDB4ODMsIDB4MCwgMHg5ZiwgMHgwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ODIsIDB4MCwgMHg5MSwgMHgwLCAweDQ2LCAweDAsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZDAsIDB4MCwgMHhkMSwgMHgwLCAweGQyLCAweDAsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NzksIDB4MCwgMHg4OSwgMHgwLCAweDZmLCAweDAsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YTcsIDB4MCwgMHgyLCAweDAsIDB4NjAsIDB4MCwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2ZCwgMHgwLCAweDE2LCAweDAsIDB4NmUsIDB4MCwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgxNSwgMHgwLCAweDYzLCAweDAsIDB4NDgsIDB4MCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg3YywgMHgwLCAweDFmLCAweDAsIDB4NmEsIDB4MCwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2YiwgMHgwLCAweDZjLCAweDAsIDB4NDksIDB4MCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhlLCAweDAsIDB4NGEsIDB4MCwgMHhkMywgMHgwLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGQ1LCAweDAsIDB4ZDYsIDB4MCwgMHg0YiwgMHgwLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDRkLCAweDAsIDB4MWQsIDB4MCwgMHg5NywgMHgwLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDRlLCAweDAsIDB4ODAsIDB4MCwgMHhhNiwgMHgwLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE4LCAweDAsIDB4NGYsIDB4MCwgMHgxYSwgMHgwLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDQsIDB4MCwgMHg1MCwgMHgwLCAweGQ4LCAweDAsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZGEsIDB4MCwgMHg5NCwgMHgwLCAweDg3LCAweDAsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MTIsIDB4MCwgMHg5YiwgMHgwLCAweDllLCAweDAsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OGIsIDB4MCwgMHg4ZiwgMHgwLCAweDkzLCAweDAsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NTEsIDB4MCwgMHg3MywgMHgwLCAweDksIDB4MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDYsIDB4MCwgMHhmLCAweDAsIDB4NzIsIDB4MCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjLCAweDAsIDB4OWMsIDB4MCwgMHg1MiwgMHgwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDdiLCAweDAsIDB4MywgMHgwLCAweDc2LCAweDAsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NzcsIDB4MCwgMHg0MSwgMHgwLCAweDgsIDB4MCwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2OCwgMHgwLCAweDUzLCAweDAsIDB4YTUsIDB4MCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg1NCwgMHgwLCAweGRkLCAweDAsIDB4NjYsIDB4MCwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgxOCwgMHgwLCAweDE3LCAweDAsIDB4MTAsIDB4MCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDYyLCAweDAsIDB4NTUsIDB4MCwgMHhhMiwgMHgwLCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGEzLCAweDAsIDB4YTksIDB4MCwgMHg3ZiwgMHgwLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDEzLCAweDAsIDB4YTQsIDB4MCwgMHg1NiwgMHgwLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGRmLCAweDAsIDB4ZTAsIDB4MCwgMHhlMSwgMHgwLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDU3LCAweDAsIDB4NTgsIDB4MCwgMHg1OSwgMHgwLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGUyLCAweDAsIDB4ZTMsIDB4MCwgMHg2NCwgMHgwLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGU0LCAweDAsIDB4MTEsIDB4MCwgMHhlNiwgMHgyLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MCwgMHgzLCAweDAsIDB4MzYsIDB4MCwgMHg4MiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHgwLCAweGE3LCAweDAsIDB4YjksIDB4MCwgMHhkMSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxLCAweDU0LCAweDEsIDB4YjMsIDB4MiwgMHg1LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDIsIDB4YzksIDB4MiwgMHhmNiwgMHgzLCAweDMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MywgMHgxYywgMHgzLCAweDJmLCAweDMsIDB4ODcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg0LCAweDJlLCAweDQsIDB4OGQsIDB4NCwgMHhiYywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHg0LCAweGU2LCAweDUsIDB4NiwgMHg1LCAweDI5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDUsIDB4NzIsIDB4NSwgMHhhNSwgMHg1LCAweGJiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweDYsIDB4MTcsIDB4NiwgMHgzZiwgMHg2LCAweGExLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweDcsIDB4NzcsIDB4NywgMHg5YSwgMHg3LCAweGMzLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDgsIDB4NSwgMHg4LCAweDg0LCAweDgsIDB4ZDIsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4OSwgMHg5MSwgMHg5LCAweGVjLCAweGEsIDB4NTksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4YSwgMHhmZiwgMHhiLCAweDQ3LCAweGIsIDB4ODQsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4YiwgMHhmNywgMHhjLCAweDFmLCAweGMsIDB4NzEsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4YywgMHhjOSwgMHhjLCAweGZhLCAweGQsIDB4MjIsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4ZCwgMHg4OSwgMHhkLCAweGIxLCAweGQsIDB4ZWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4ZSwgMHg5ZSwgMHhlLCAweGMzLCAweGUsIDB4ZGEsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHhmLCAweGJiLCAweGYsIDB4ZGEsIDB4MTAsIDB4NzksIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDEwLCAweGU0LCAweDExLCAweDJlLCAweDExLCAweDYzLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHgxMiwgMHg3MCwgMHgxMiwgMHhjYSwgMHgxMiwgMHhlMiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MTMsIDB4NGYsIDB4MTMsIDB4YTYsIDB4MTMsIDB4Y2EsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweDE0LCAweDE2LCAweDE0LCAweDM4LCAweDE0LCAweDU2LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHgxNCwgMHhiNywgMHgxNSwgMHgyYSwgMHgxNSwgMHg2MywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4MTUsIDB4ZWUsIDB4MTYsIDB4NiwgMHgxNiwgMHgyNiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4MTcsIDB4MzUsIDB4MTcsIDB4OTAsIDB4MTcsIDB4YzgsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDE4LCAweDUwLCAweDE4LCAweDYxLCAweDE4LCAweDkyLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxOSwgMHgzMSwgMHgxOSwgMHg0MiwgMHgxOSwgMHg5OSwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4MTksIDB4ZTYsIDB4MWEsIDB4NCwgMHgxYSwgMHgyNSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4MWEsIDB4YWQsIDB4MWEsIDB4YjgsIDB4MWEsIDB4YzEsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDFiLCAweDUxLCAweDFiLCAweDc1LCAweDFiLCAweGEzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHgxYywgMHgyMiwgMHgxYywgMHg3YSwgMHgxYywgMHhiNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MWQsIDB4NTMsIDB4MWQsIDB4NzAsIDB4MWQsIDB4ZGQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDFlLCAweDYwLCAweDFlLCAweDg5LCAweDFlLCAweGI3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHgxZSwgMHhmZCwgMHgxZiwgMHgxYiwgMHgxZiwgMHg1ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4MWYsIDB4ODIsIDB4MWYsIDB4OWYsIDB4MWYsIDB4YmIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDFmLCAweGZkLCAweDIwLCAweDEzLCAweDIwLCAweDUxLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgyMCwgMHg4YiwgMHgyMCwgMHhhZiwgMHgyMCwgMHhjZCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4MjEsIDB4NTIsIDB4MjEsIDB4NjYsIDB4MjEsIDB4N2EsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDIxLCAweGZkLCAweDIyLCAweDNjLCAweDIyLCAweGExLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgyMywgMHg3MiwgMHgyMywgMHhiOSwgMHgyMywgMHhkNywgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjQsIDB4MjMsIDB4MjQsIDB4YmEsIDB4MjQsIDB4ZWIsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4MjUsIDB4MmYsIDB4MjUsIDB4YjAsIDB4MjYsIDB4MTYsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDI2LCAweGM2LCAweDI3LCAweDYsIDB4MjcsIDB4N2MsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDI4LCAweDI5LCAweDI4LCAweDUyLCAweDI4LCAweDg4LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgyOSwgMHg1ZCwgMHgyOSwgMHg2YiwgMHgyOSwgMHg3ZiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MmEsIDB4NWMsIDB4MmEsIDB4OWQsIDB4MmEsIDB4ZjgsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDJiLCAweGExLCAweDJiLCAweGQyLCAweDJiLCAweGZhLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgyYywgMHgzZSwgMHgyYywgMHg1NCwgMHgyYywgMHg2YiwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4MmMsIDB4OWYsIDB4MmMsIDB4ZDcsIDB4MmQsIDB4N2QsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDJlLCAweDE3LCAweDJlLCAweDhlLCAweDJmLCAweDI2LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHgyZiwgMHg4NCwgMHgyZiwgMHhlNywgMHgyZiwgMHhmYywgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmUsIDB4MzAsIDB4OGMsIDB4MzAsIDB4ZGUsIDB4MzEsIDB4MzUsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDMyLCAweDMwLCAweDMyLCAweDhlLCAweDMyLCAweGUyLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHgzMywgMHg4YywgMHgzMywgMHhkYywgMHgzNCwgMHgyNywgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4MzQsIDB4NDIsIDB4MzQsIDB4NGUsIDB4MzQsIDB4NjIsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDM0LCAweDhiLCAweDM0LCAweGMxLCAweDM0LCAweGYwLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHgzNSwgMHg3NSwgMHgzNSwgMHhjMiwgMHgzNiwgMHgxYiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4MzYsIDB4N2EsIDB4MzYsIDB4YmYsIDB4NzcsIDB4ZSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg2MiwgMHhkNSwgMHhmOCwgMHg0YSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHgxNiwgMHhmNCwgMHg2LCAweGY3LCAweDcsIDB4ZjcsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4YjgsIDB4NiwgMHhhZSwgMHhmYiwgMHg2MiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHg2LCAweGZiLCAweGEsIDB4ZjksIDB4NjIsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2LCAweGZiLCAweDI4LCAweGZjLCAweDRhLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhmNywgMHhmYywgMHg0OCwgMHhhLCAweGI5LCAweGZiLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4ZjksIDB4NTIsIDB4OGIsIDB4ZGMsIDB4ZjcsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGI5LCAweGRjLCAweGY3LCAweDc0LCAweGRjLCAweDEsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweDAsIDB4NiwgMHhmNywgMHgxMCwgMHhmNywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHhhYSwgMHg2LCAweDYwLCAweGZiLCAweDYxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDk4LCAweDU1LCAweGEsIDB4ZmMsIDB4MzMsIDB4NiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGYsIDB4NSwgMHhmOCwgMHgzLCAweDU1LCAweGEsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4NiwgMHhiYSwgMHhmNywgMHg3NCwgMHg1LCAweGY4LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweGEsIDB4ZmQsIDB4MWEsIDB4NiwgMHhmYiwgMHgzNSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4MTUsIDB4ZjcsIDB4NmIsIDB4ZjcsIDB4ZjMsIDB4NSwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg0MiwgMHhmYiwgMHhmMywgMHg1LCAweGUsIDB4MzEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MTMsIDB4NzcsIDB4MSwgMHhmOCwgMHg3NCwgMHhmOSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4YSwgMHhmYywgMHhjMSwgMHhmZSwgMHgzNSwgMHgyNiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhhLCAweGY4LCAweDhjLCAweGY3LCAweDFiLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGY5LCAweGFlLCAweDMwLCAweGEsIDB4ZmMsIDB4M2IsIDB4ZmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDI2LCAweGEsIDB4MzEsIDB4YSwgMHhmOCwgMHg5MywgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmOCwgMHhiMSwgMHhmOSwgMHhiNSwgMHgyZSwgMHhhLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGZlLCAweDE5LCAweDI2LCAweGEsIDB4MzEsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ZjcsIDB4MjAsIDB4MSwgMHhmOCwgMHg3OCwgMHhmOSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4YSwgMHhmNywgMHgyMCwgMHg1LCAweDIwLCAweDYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmUsIDB4MzUsIDB4MjYsIDB4YSwgMHgzMSwgMHhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhiMCwgMHhmNywgMHgzNiwgMHg3NiwgMHgxLCAweGY4LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhmMywgMHhiMCwgMHgzLCAweGY4LCAweDI4LCAweGY5LCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1OSwgMHhiNCwgMHg2NCwgMHhiYiwgMHhiYiwgMHhiNCwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YmQsIDB4NjMsIDB4YjIsIDB4NWEsIDB4NWEsIDB4NjMsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDFlLCAweGIwLCAweDhhLCAweDE1LCAweGE4LCAweGEyLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhhOCwgMHhhMiwgMHg3NCwgMHg2ZCwgMHg2ZSwgMHg3NCwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NmYsIDB4NzMsIDB4YTEsIDB4YTgsIDB4MWUsIDB4ZmMsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweGYxLCAweDI2LCAweGEsIDB4MzEsIDB4YSwgMHhmOCwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4OGUsIDB4NzcsIDB4MTIsIDB4MTMsIDB4ZTAsIDB4ZjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4YmMsIDB4MTUsIDB4YzgsIDB4NjYsIDB4YSwgMHhhMywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YTEsIDB4ODIsIDB4ODIsIDB4OWUsIDB4MWYsIDB4ODAsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDdlLCAweGEwLCAweDFiLCAweGM1LCAweGFjLCAweGMxLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgxZiwgMHg1MCwgMHg2LCAweDdkLCAweDg3LCAweDg1LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHhhLCAweDEzLCAweGQwLCAweDk1LCAweDczLCAweDcwLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgxYiwgMHgxMywgMHhlMCwgMHg0OCwgMHg3YSwgMHg1OCwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4MWYsIDB4ZmIsIDB4ZjcsIDB4ZmQsIDB4YmMsIDB4MjYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NSwgMHg4YiwgMHhkYywgMHhmNywgMHg4ZCwgMHhkZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4ZGMsIDB4MSwgMHhmOCwgMHhkNCwgMHhmMSwgMHgzLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHhmZCwgMHg2LCAweGY3LCAweDM3LCAweGVjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweGY1LCAweGU1LCAweDRiLCAweGIzLCAweDUyLCAweDllLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHg5OSwgMHhlYSwgMHhhYywgMHhmNywgMHhhLCAweDFhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhmYiwgMHgxOCwgMHhhZSwgMHhmYiwgMHhiLCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg2LCAweDY0LCAweGZkLCAweDExLCAweDE1LCAweGMxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg1LCAweGY3LCAweDUyLCAweDYsIDB4YzksIDB4ZWIsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGZiLCAweDExLCAweGZiLCAweDEzLCAweDc2LCAweDIyLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhmNywgMHhkZiwgMHgxNSwgMHhiYywgMHhmNywgMHg3NSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyOSwgMHg2LCAweGM3LCAweGVjLCAweDhhLCAweDJjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGZiLCAweDYsIDB4NzksIDB4MzEsIDB4MWYsIDB4ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4NzgsIDB4ZGMsIDB4ZjgsIDB4ZTYsIDB4ZGMsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4ZWYsIDB4MywgMHhmOSwgMHgxYiwgMHhmNywgMHg4ZiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NzksIDB4NGEsIDB4ZmIsIDB4MTcsIDB4ZmIsIDB4MmIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweGZiLCAweDEyLCAweGI0LCAweGY3LCAweDUzLCAweGY3LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhmNywgMHg0YiwgMHhmNywgMHg1MiwgMHhmNywgMHgyOCwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OCwgMHg2MiwgMHg5MiwgMHgxZiwgMHhlYSwgMHg5MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1MiwgMHg3NSwgMHhmYiwgMHgzYSwgMHhiMywgMHgyZSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4N2UsIDB4ZmIsIDB4MzMsIDB4ZmIsIDB4NWQsIDB4ZmIsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDc0LCAweGY3LCAweDFjLCAweDMyLCAweGY3LCAweDM2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhmNywgMHg4LCAweGYyLCAweGY3LCAweDJkLCAweGM1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY4LCAweDNjLCAweGZiLCAweDc1LCAweGM2LCAweGY3LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmOCwgMHhlOSwgMHhkYywgMHgxLCAweGY3LCAweDAsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NzksIDB4ZmIsIDB4MzcsIDB4MTUsIDB4NzIsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODcsIDB4YTYsIDB4YWQsIDB4OGEsIDB4YTYsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDllLCAweGQ1LCAweGE4LCAweGM2LCAweDUzLCAweDkzLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHgxZiwgMHg5OSwgMHhhOSwgMHhjOCwgMHg4ZSwgMHhmNywgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ZTAsIDB4ZjcsIDB4NzgsIDB4MTksIDB4MjcsIDB4OTgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4NzgsIDB4NGMsIDB4ZmIsIDB4MTcsIDB4ZmIsIDB4MmMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGZiLCAweGUsIDB4YmUsIDB4ZjcsIDB4NTQsIDB4ZjcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweGY3LCAweDQyLCAweGY3LCAweDU0LCAweGY3LCAweDI4LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5LCAweDYyLCAweDkzLCAweDFmLCAweGVhLCAweDkzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU0LCAweDc2LCAweGZiLCAweDNiLCAweGIyLCAweDJmLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3ZiwgMHhmYiwgMHgzMywgMHhmYiwgMHg1MywgMHhmYiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzUsIDB4ZDAsIDB4ZmIsIDB4MWMsIDB4ZjcsIDB4NDgsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDZhLCAweDQ3LCAweDUsIDB4YzQsIDB4OGEsIDB4OWQsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFhLCAweDVmLCAweDQzLCAweDhjLCAweDU3LCAweDgyLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg4YywgMHg2YSwgMHgxZSwgMHhlLCAweGY4LCAweDNjLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmOCwgMHhjMCwgMHhkYywgMHgxLCAweGY5LCAweDJjLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGRjLCAweDE2LCAweGY3LCAweDliLCAweDYsIDB4ZjcsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYyLCAweGY3LCAweDEyLCAweGY3LCAweGMwLCAweGY3LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiLCAweGY3LCAweGEsIDB4ZmIsIDB4NTIsIDB4MWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDYsIDB4NjYsIDB4ZmQsIDB4MTEsIDB4MTUsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YzAsIDB4NSwgMHhmNywgMHgxNywgMHg2LCAweGUwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg4NywgMHhmYiwgMHg2MywgMHhmYiwgMHg5YiwgMHhmYiwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4ZmIsIDB4NTgsIDB4MWYsIDB4ZSwgMHhmOCwgMHg1LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmNywgMHg4ZSwgMHhkZCwgMHhmNywgMHg3NCwgMHhkYywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHgxNiwgMHhmOCwgMHhiZSwgMHg2YiwgMHhhLCAweGZjLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGMyLCAweGY3LCAweDhlLCAweDUsIDB4ZjgsIDB4MmEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4ZGQsIDB4NSwgMHhmYywgMHgyOSwgMHg2LCAweGI3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg1LCAweGY4LCAweDNlLCAweDZiLCAweGEsIDB4ZmMsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHgzMiwgMHhhLCAweGY3LCAweDUzLCAweDc3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDFlLCAweGMzLCAweDM2LCAweGEsIDB4ZSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhjMywgMHhmNywgMHgxYiwgMHgyYSwgMHhhLCAweGY3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDMwLCAweGEsIDB4ZSwgMHgzMiwgMHhhLCAweGNhLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhhLCAweGY3LCAweGE3LCAweGNhLCAweDJlLCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4YSwgMHhiZSwgMHhmNywgMHgyMCwgMHgyYSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhiZSwgMHg1NiwgMHhhLCAweGY3LCAweDIwLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NiwgMHhlLCAweGY4LCAweDNjLCAweDhiLCAweGRjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhkYywgMHhmNywgMHg3NSwgMHhkYywgMHgxLCAweGY5LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHgzLCAweGQ4LCAweDE2LCAweGY3LCAweDljLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGY3LCAweDY1LCAweGY3LCAweDEyLCAweGY3LCAweGJmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmYiwgMHhiLCAweGY3LCAweDksIDB4ZmIsIDB4NTUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZmLCAweDYsIDB4NDksIDB4ZmIsIDB4YzYsIDB4NSwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3YSwgMHgzYSwgMHg1LCAweGRiLCAweDYsIDB4YjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDE1LCAweGMyLCAweGY3LCAweDhlLCAweDUsIDB4ZjcsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGEsIDB4ZmIsIDB4NjUsIDB4NiwgMHhiZCwgMHhmNywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHgxNCwgMHg2LCAweGUxLCAweGY3LCAweDFjLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2MywgMHhmYiwgMHg5YiwgMHhmYiwgMHgzMywgMHgzYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4MWYsIDB4ZSwgMHhmOCwgMHg1LCAweDhiLCAweGQ4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhjYiwgMHhjOSwgMHhjYiwgMHhmNywgMHg0ZSwgMHhkOCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhmMCwgMHgzLCAweDk5LCAweGY3LCAweDlkLCAweDE1LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDM4LCAweDk3LCAweGYyLCAweDI2LCAweGY3LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiOCwgMHhiNiwgMHg5MiwgMHg5YSwgMHhiMiwgMHgxZiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4NSwgMHg2YywgMHg2MiwgMHg1YiwgMHg3YywgMHg1NSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4NDQsIDB4ZGEsIDB4ZjcsIDB4MSwgMHg4MywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4Y2IsIDB4NiwgMHg5YSwgMHhjYiwgMHg1LCAweGZiLCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDhlLCAweDlmLCAweDhjLCAweGExLCAweDkwLCAweDlmLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGRmLCAweDYsIDB4OWEsIDB4Y2IsIDB4NSwgMHhmYiwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNiwgMHhiOCwgMHhkZiwgMHhkYSwgMHhmNywgMHgxNywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4YzQsIDB4N2IsIDB4NWYsIDB4YWUsIDB4MWYsIDB4YjYsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YjMsIDB4NTQsIDB4NDUsIDB4OWIsIDB4NDYsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGZiLCAweDFjLCAweGZiLCAweDMsIDB4ZmIsIDB4MmMsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDRhLCAweDYsIDB4N2QsIDB4NGIsIDB4NSwgMHhjOSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg3NywgMHg4OSwgMHg3NSwgMHg4YSwgMHg3NywgMHg4LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZjcsIDB4Y2QsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGY3LCAweDdhLCAweGRjLCAweDEsIDB4ZTEsIDB4MTYsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZDMsIDB4ZjcsIDB4ZDksIDB4NSwgMHhmOCwgMHgxOSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHhkZCwgMHg1LCAweGZjLCAweDE5LCAweDYsIDB4YmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDUsIDB4ZjgsIDB4MWIsIDB4NmIsIDB4YSwgMHhmYywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweDZjLCAweGEsIDB4ZjcsIDB4NzAsIDB4ZGQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGRjLCAweDEsIDB4ZjcsIDB4MywgMHhlZiwgMHgzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHhmNywgMHhhZSwgMHgxNSwgMHhmNywgMHg3NSwgMHg2LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMSwgMHg1LCAweDc4LCAweDY3LCAweDM3LCAweDVmLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgxNSwgMHg0MCwgMHhmNywgMHgxLCAweGY3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY5LCAweGY3LCAweGMsIDB4ZjcsIDB4MzIsIDB4ZjcsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGQ4LCAweDVmLCAweGZiLCAweDQsIDB4YTIsIDB4MWYsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDUsIDB4ZjcsIDB4MjYsIDB4ODEsIDB4ZmIsIDB4MjAsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFhLCAweDFiLCAweGZiLCAweGE2LCAweGZiLCAweDE2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhmYiwgMHg2NSwgMHgyNiwgMHhiMCwgMHhmYiwgMHg1ZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4ZjcsIDB4ZSwgMHhmNywgMHgyLCAweGJjLCAweGIyLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjOSwgMHhmNywgMHhiYiwgMHg1LCAweGZiLCAweGQ4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjgsIDB4M2MsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4ZTUsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMwLCAweDc3LCAweDEsIDB4ZDgsIDB4MTYsIDB4ZWQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4ZjcsIDB4ZTUsIDB4NSwgMHhmOCwgMHhiLCAweDYsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGU1LCAweDUsIDB4ZWIsIDB4NiwgMHhmNywgMHgyZCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NTcsIDB4YSwgMHg0YiwgMHhmYiwgMHhjMCwgMHg1LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDYsIDB4Y2IsIDB4ZjcsIDB4YzAsIDB4NGQsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgyZCwgMHhhLCAweGU2LCAweDE2LCAweGViLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweGY5LCAweDYyLCAweDRkLCAweGEsIDB4ZSwgMHg1NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YSwgMHg3NywgMHgxLCAweGY3LCAweDg1LCAweGY5LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhkNiwgMHg2LCAweGY3LCAweDIzLCAweDZkLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NiwgMHhmYiwgMHg5MCwgMHhmZSwgMHgzNSwgMHgxNSwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDU0LCAweGEsIDB4ZDYsIDB4ZjcsIDB4MWYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmYsIDB4ZjksIDB4YWEsIDB4NmUsIDB4YSwgMHhkYSwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4MzIsIDB4NSwgMHhkOSwgMHg2LCAweDRlLCAweDZmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDYsIDB4ZmIsIDB4NTUsIDB4ZmUsIDB4MzUsIDB4MTUsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHg1YywgMHhhLCAweGY5LCAweDZkLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGVkLCAweGY5LCAweGI0LCAweDE1LCAweGU3LCAweDYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweDNkLCAweGEsIDB4ZmIsIDB4NWUsIDB4MjYsIDB4MTUsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTEsIDB4ZjAsIDB4NSwgMHgyZSwgMHg2LCAweDJkLCAweGZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHgxNSwgMHgzNCwgMHhhLCAweGUsIDB4NTQsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4NzcsIDB4MSwgMHhlNiwgMHgxNiwgMHgzNCwgMHhhLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHgxNSwgMHhjZSwgMHg2LCAweDU0LCAweDZkLCAweGEsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhmNywgMHg1ZSwgMHg3OCwgMHhkYiwgMHhmOSwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhiYSwgMHhlYSwgMHgzLCAweGJhLCAweGY3LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmYiwgMHgyYywgMHhjMywgMHg0NCwgMHhmNywgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4YmUsIDB4ZjUsIDB4ZjEsIDB4YTIsIDB4MWUsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YTUsIDB4NSwgMHgyNCwgMHg2LCAweGZiLCAweDgsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDUsIDB4NDksIDB4N2QsIDB4NjEsIDB4NGQsIDB4NDIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDYwLCAweGJlLCAweGVlLCAweDFmLCAweGUsIDB4ZjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4YSwgMHhmOSwgMHgxZiwgMHhmNywgMHgyMSwgMHgzLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmMCwgMHg2LCAweGJlLCAweGY3LCAweDdlLCAweGY3LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHhmNywgMHg2ZCwgMHhmYywgMHgxLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NiwgMHhmYiwgMHg5MywgMHhmOCwgMHgzZiwgMHhmNywgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjcsIDB4NSwgMHhmYiwgMHgyMSwgMHg2LCAweGZjLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmMSwgMHhkYiwgMHhmNywgMHhmMSwgMHg1LCAweDI2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OGIsIDB4ZGMsIDB4ZjksIDB4MTEsIDB4NzcsIDB4MSwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjgsIDB4NjIsIDB4NTUsIDB4YSwgMHhmYywgMHgyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE5LCAweGY5LCAweDExLCAweDUwLCAweGEsIDB4ZSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4ZjksIDB4MTEsIDB4NzcsIDB4MSwgMHhkMSwgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NTUsIDB4YSwgMHhmYywgMHg3LCAweDYsIDB4YzQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGY3LCAweDU0LCAweGY3LCAweDAsIDB4OWMsIDB4ZGMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDIxLCAweGM2LCAweGY3LCAweGFiLCAweDUwLCAweGEsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGU4LCAweDMwLCAweDU5LCAweDdhLCAweDM3LCAweGU2LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4ZjgsIDB4YWIsIDB4MmQsIDB4YSwgMHhkNCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4NiwgMHhmNywgMHhkLCAweGY4LCAweGY0LCAweGUyLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHg1LCAweGU4LCAweDYsIDB4ZjcsIDB4ZjAsIDB4ZjgsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI4LCAweGZjLCAweGY5LCAweDUsIDB4ZWEsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4ZjksIDB4NjIsIDB4NSwgMHhmYiwgMHhjLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGZkLCAweDE1LCAweDMwLCAweGY5LCAweDE1LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NiwgMHhlLCAweGY4LCAweDNjLCAweDJkLCAweGEsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDY3LCAweDMsIDB4ZDcsIDB4MTYsIDB4ZWEsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmOCwgMHhmNCwgMHhmNywgMHg5OSwgMHhmYywgMHhmNCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHg2LCAweGY3LCAweDJjLCAweGY5LCAweDYyLCAweDRkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGYsIDB4ZmMsIDB4ZjUsIDB4ZmIsIDB4OTcsIDB4ZjgsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweGEsIDB4ZSwgMHhmOCwgMHgzYywgMHhhMCwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NzcsIDB4ZjcsIDB4YSwgMHg3NiwgMHhmNywgMHgzLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhkNywgMHgxNiwgMHhlYSwgMHg2LCAweGY3LCAweGQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDQ4LCAweGEsIDB4ZjcsIDB4OTUsIDB4ZmMsIDB4ZmMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4NiwgMHhmNywgMHgyYywgMHhmOSwgMHg2ZCwgMHg0ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmLCAweGZjLCAweGZlLCAweDRlLCAweGEsIDB4ZmIsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGZlLCAweDRkLCAweGEsIDB4ZjcsIDB4MTksIDB4ZDgsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDY2LCAweGEsIDB4YTQsIDB4MWIsIDB4MTMsIDB4MTAsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDgzLCAweDgyLCAweDllLCAweDFmLCAweDdmLCAweGEzLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhhNCwgMHgxYiwgMHhjNiwgMHhhZCwgMHhjMiwgMHhjMSwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NGUsIDB4NjksIDB4YSwgMHg1ZSwgMHhhLCAweDEzLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg3MiwgMHg2ZiwgMHg5NiwgMHg2ZCwgMHgxYiwgMHg0NiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4NTAsIDB4N2IsIDB4MWYsIDB4ZSwgMHg2YywgMHhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhkYywgMHgxLCAweGY3LCAweDE4LCAweGVmLCAweGY4LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHgzLCAweGY3LCAweDIxLCAweGY3LCAweGJiLCAweDE1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmNSwgMHhmYiwgMHgyMiwgMHhmNywgMHg0NywgMHhmNywgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzQsIDB4ZjcsIDB4NTQsIDB4ZjcsIDB4ODAsIDB4ZjcsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEsIDB4ZjcsIDB4MWUsIDB4ZmIsIDB4NDcsIDB4ZmIsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNjLCAweGZiLCAweDNmLCAweGZiLCAweGEzLCAweDFlLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHg4OSwgMHhmNywgMHgyOCwgMHhmNywgMHg4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGYwLCAweGVjLCAweDMwLCAweGZiLCAweDMwLCAweGZiLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyLCAweGZiLCAweDNkLCAweGZiLCAweDMxLCAweDI3LCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmNywgMHgyYywgMHgxZSwgMHhlLCAweGY5LCAweDUyLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHg0NiwgMHhkMCwgMHg0NiwgMHhkZSwgMHhmNywgMHg4ZiwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2IsIDB4ZGYsIDB4NDYsIDB4ZGMsIDB4MTIsIDB4ZWQsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDNhLCAweGY4LCAweGE2LCAweDg0LCAweDE1LCAweGY4LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDlkLCAweGRlLCAweDUsIDB4ZmMsIDB4MywgMHg2LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZiwgMHg1LCAweGY3LCAweGQ0LCAweDYsIDB4OWQsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4ZDQsIDB4NiwgMHhiZCwgMHhmNywgMHg3YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkYiwgMHg2LCAweDlkLCAweGRmLCAweDUsIDB4ZmMsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NzgsIDB4MzQsIDB4NSwgMHgxMywgMHg5NiwgMHhkYiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4OWUsIDB4NTIsIDB4MWIsIDB4ZmIsIDB4NjYsIDB4ZmIsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRiLCAweGZiLCAweDkzLCAweGZiLCAweDY5LCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGY3LCAweDI2LCAweGYyLCAweGJhLCAweGI2LCAweGEwLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHg1NiwgMHhmYiwgMHhmMywgMHhmNywgMHg5MiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmMsIDB4ZjcsIDB4MywgMHhmNywgMHg2MSwgMHhmNywgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4ZGMsIDB4NGYsIDB4MjUsIDB4NTksIDB4NmMsIDB4ZmIsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDUwLCAweDFlLCAweDZkLCAweDgwLCAweDU5LCAweGZiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMSwgMHgxYiwgMHhmYiwgMHgyMywgMHg2MiwgMHhlZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MWYsIDB4ZSwgMHhmOCwgMHg3NCwgMHg3OCwgMHhkZCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4NzYsIDB4ZjcsIDB4MjEsIDB4NzcsIDB4MSwgMHhmNCwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OWIsIDB4ZjAsIDB4MywgMHhmOCwgMHg1MSwgMHhmOSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZGEsIDB4NiwgMHhmNywgMHgxZCwgMHg2ZCwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDYsIDB4ZmMsIDB4NGEsIDB4MjgsIDB4YSwgMHhmOCwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZGQsIDB4ZjksIDB4YzQsIDB4YmQsIDB4MSwgMHhmNCwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzQsIDB4ZjIsIDB4ZjcsIDB4NCwgMHhmMCwgMHgzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGY5LCAweGE5LCAweDE1LCAweGVjLCAweDYsIDB4ZTAsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDMxLCAweDUsIDB4ZGQsIDB4NiwgMHg0YiwgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyNCwgMHg2LCAweGZjLCAweDI5LCAweDI4LCAweGEsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjksIDB4NzQsIDB4ZjIsIDB4MSwgMHg2OCwgMHhhLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweGY3LCAweGMxLCAweDIxLCAweGEsIDB4ZjgsIDB4MSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MTUsIDB4ZWMsIDB4NiwgMHhhMiwgMHhmMiwgMHg1NywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2OCwgMHgyNCwgMHgxNSwgMHhlYywgMHg2LCAweGExLCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDJhLCAweDYsIDB4ZSwgMHhmOCwgMHg3NCwgMHg3OCwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZWYsIDB4ZGQsIDB4MSwgMHg2OCwgMHhhLCAweDMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGY5LCAweGE5LCAweDE1LCAweGQ0LCAweDYsIDB4NGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDUsIDB4ZmIsIDB4NSwgMHg2LCAweGZiLCAweGM3LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY4LCAweDc0LCAweDhkLCAweDc2LCAweGFlLCAweGRmLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhkZiwgMHhhZCwgMHg3NywgMHgxLCAweGJiLCAweGUwLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhlNSwgMHgzLCAweGE2LCAweDliLCAweDE1LCAweGJhLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHhlMywgMHg1LCAweDY3LCAweGMzLCAweGNkLCAweDdhLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHg3NywgMHhmNywgMHgzOSwgMHhmNywgMHg0MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4Y2UsIDB4ODEsIDB4ZGQsIDB4NGUsIDB4Y2IsIDB4MWYsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDVjLCAweGFmLCAweDNhLCAweDM0LCAweDUsIDB4YmUsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDhkLCAweDZmLCAweDFiLCAweGZiLCAweDg0LCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1NCwgMHhmYiwgMHg1YywgMHg0ZSwgMHg5MiwgMHgzZSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4MWYsIDB4YzgsIDB4YzgsIDB4MTUsIDB4NmMsIDB4YjIsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGJhLCAweDFhLCAweGY3LCAweDNiLCAweGY3LCAweDFhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHgzNSwgMHhjMCwgMHhjMywgMHg4MSwgMHg3NCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4ZjMsIDB4ZmMsIDB4NWMsIDB4MTUsIDB4ZjgsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDM1LCAweDUsIDB4OWUsIDB4NmUsIDB4YTQsIDB4NTUsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGZiLCAweDJjLCAweGZiLCAweDEzLCAweGZiLCAweDI2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg1YSwgMHg1MiwgMHg4ZSwgMHhhNiwgMHg2NiwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhhLCAweGY5LCAweDdiLCAweGY3LCAweDEsIDB4OGUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDY4LCAweGEsIDB4MTMsIDB4ZDgsIDB4ZjcsIDB4ZjksIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDE1LCAweGNiLCAweDYsIDB4YTQsIDB4OTAsIDB4OTcsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDFiLCAweGE3LCAweGEwLCAweDgzLCAweDgyLCAweDllLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHhhNCwgMHhhMCwgMHg3ZCwgMHhhNiwgMHgxYiwgMHhjOCwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4YzIsIDB4OTAsIDB4MWYsIDB4NGQsIDB4NjksIDB4YSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MTMsIDB4YjgsIDB4N2IsIDB4NzUsIDB4OTYsIDB4OTYsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk1LCAweDczLCAweDZmLCAweDk1LCAweDZlLCAweDFiLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHg0NCwgMHg3OSwgMHg1NywgMHg0ZiwgMHg3YywgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZmMsIDB4OGMsIDB4MjEsIDB4YSwgMHhlLCAweDM1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI2LCAweGRjLCAweGY3LCAweGEwLCAweGRhLCAweDEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGVhLCAweDMsIDB4ZTEsIDB4MTYsIDB4ZWIsIDB4NiwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjYsIDB4NSwgMHhmNywgMHg0NywgMHg2LCAweGY3LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMiwgMHhkNywgMHhmNywgMHg0MCwgMHhmNywgMHgxYiwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZmIsIDB4NywgMHgxZiwgMHhmYiwgMHhiZiwgMHg2LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlZiwgMHgxNSwgMHhjMiwgMHhmNywgMHhhMCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHg2LCAweGQxLCAweGQ1LCAweDhhLCAweDI3LCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOCwgMHg2YywgMHgyZCwgMHgxZiwgMHhlLCAweGY4LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg3NiwgMHhjZiwgMHhkOCwgMHhmOCwgMHhjZiwgMHhkOCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYywgMHhmMCwgMHhmOCwgMHg3YywgMHhmMCwgMHgzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHhiNywgMHgxNSwgMHhiMCwgMHg1ZiwgMHhiMCwgMHg2YywgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YjMsIDB4YzMsIDB4MTgsIDB4N2QsIDB4OTUsIDB4NWUsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGI1LCAweDgsIDB4ZWYsIDB4ZDgsIDB4YzksIDB4ZjcsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4MWEsIDB4ZjcsIDB4NGEsIDB4ZmIsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZmIsIDB4NDksIDB4ZmIsIDB4NzUsIDB4ZmIsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGZiLCAweDYwLCAweGZiLCAweGI5LCAweGY3LCAweDdiLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhiNiwgMHhiOSwgMHg5NSwgMHhhMSwgMHhiNywgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4ZjcsIDB4MTAsIDB4MTUsIDB4YWMsIDB4N2EsIDB4OWYsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDZjLCAweDgsIDB4ODAsIDB4NmQsIDB4NmMsIDB4ODYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDUzLCAweGZiLCAweDE4LCAweGJiLCAweGY3LCAweDRkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHhmNywgMHhhLCAweGY3LCAweDI4LCAweGY3LCAweDJkLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHgzZCwgMHhmYiwgMHgzNCwgMHgyNiwgMHg2MCwgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHg0OSwgMHgxZiwgMHg4MywgMHg5NCwgMHg3NiwgMHg5ZiwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4NTUsIDB4YTMsIDB4MTksIDB4ZSwgMHhmOCwgMHgzYywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4ZDIsIDB4ZDgsIDB4ZjcsIDB4ODgsIDB4ZGEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4M2QsIDB4ZTcsIDB4MywgMHhlMywgMHgxNiwgMHhlYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHhmNywgMHhkMiwgMHg1LCAweGY3LCAweDIsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4YWYsIDB4MmYsIDB4MmUsIDB4YWYsIDB4MWYsIDB4YmYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDUsIDB4ZjYsIDB4NiwgMHg1NCwgMHhmNywgMHgxOSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4NjQsIDB4ZDIsIDB4NGQsIDB4YjksIDB4MTksIDB4YmUsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU1LCAweGE0LCAweGY3LCAweDRmLCAweDFhLCAweGY3LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNSwgMHg4ZCwgMHgzMCwgMHgxZSwgMHhmYiwgMHhiZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhmYiwgMHhkNywgMHgxNSwgMHhiZCwgMHhmNywgMHg4OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MCwgMHg2LCAweGJlLCAweGU4LCAweDg3LCAweDJkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmYiwgMHgyYSwgMHg4YywgMHhmYiwgMHgxOSwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1LCAweDc4LCAweGRiLCAweGY4LCAweGU4LCAweGRiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhlYiwgMHg4NiwgMHhlYSwgMHhmNywgMHhhZiwgMHhlZSwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4MTMsIDB4ZTgsIDB4ZTUsIDB4ZjcsIDB4N2EsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGY3LCAweDFjLCAweDQ2LCAweGY3LCAweDI4LCAweGY3LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweGU2LCAweGY3LCAweDksIDB4ZjcsIDB4YiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4ZmIsIDB4MjEsIDB4YzgsIDB4MWUsIDB4MTMsIDB4ZDQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YmEsIDB4NWIsIDB4OWQsIDB4Y2EsIDB4MWEsIDB4ZTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4YTIsIDB4YmEsIDB4ZTEsIDB4ZWIsIDB4NTMsIDB4MmYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweDkyLCAweDUsIDB4ZTAsIDB4NDksIDB4ZjcsIDB4MWMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGZiLCAweDJhLCAweGZiLCAweDAsIDB4NDEsIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZSwgMHhmNywgMHgwLCAweDVlLCAweGY3LCAweDAsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGU4LCAweGY1LCAweDVkLCAweGMzLCAweDcwLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg0YSwgMHg0ZSwgMHg0YywgMHhmYiwgMHhkLCAweGZiLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhlNiwgMHhlMSwgMHgxZSwgMHhlLCAweGY4LCAweDUsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGY4LCAweGYxLCAweGRkLCAweGIyLCAweGY3LCAweDIwLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhlYywgMHg4NiwgMHhlYiwgMHhmNywgMHhiMSwgMHhlZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4ZTUsIDB4ZjcsIDB4N2YsIDB4MTUsIDB4ZmIsIDB4NGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDQ1LCAweGY3LCAweDI5LCAweGY3LCAweDQ1LCAweGY3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGY3LCAweGMsIDB4ZjcsIDB4ZiwgMHgzNSwgMHhiNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4Y2IsIDB4MWUsIDB4MTMsIDB4ZWMsIDB4ZmIsIDB4MSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4OWMsIDB4Y2MsIDB4MWEsIDB4ZWEsIDB4ZjcsIDB4MywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4ZTEsIDB4ZTcsIDB4NjIsIDB4ZmIsIDB4MCwgMHgxZSwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4NSwgMHhlYiwgMHg0ZSwgMHhmNywgMHgxMywgMHhmYiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmIsIDB4ZmIsIDB4MSwgMHg0MSwgMHhmYiwgMHgxMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4ZjcsIDB4MSwgMHg1ZCwgMHhmNywgMHgwLCAweDViLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHg1ZSwgMHhjNCwgMHg2ZSwgMHg0OCwgMHgxYSwgMHg0YSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4ZmIsIDB4ZiwgMHgxZSwgMHgxMywgMHhmNCwgMHhmYiwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4ZTAsIDB4ZWEsIDB4ODgsIDB4MWYsIDB4ZjcsIDB4NzAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDE1LCAweGVmLCAweDYsIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MmQsIDB4NiwgMHgzOCwgMHgzMSwgMHg2MywgMHhlNSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg2LCAweGUsIDB4ZjcsIDB4Y2QsIDB4YTAsIDB4NzYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweGRjLCAweDEsIDB4ZjcsIDB4OTQsIDB4MTYsIDB4ZWUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4ZjksIDB4MTEsIDB4NSwgMHhmNywgMHg4NSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYywgMHhkYywgMHg2LCAweDc5LCAweDNhLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDYsIDB4ZSwgMHgzNSwgMHhhLCAweGY3LCAweDI2LCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhMCwgMHhkYSwgMHhmNywgMHgyNCwgMHg3NywgMHgxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHhlYSwgMHgzLCAweGUxLCAweDE2LCAweGViLCAweDYsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI2LCAweDUsIDB4ZjcsIDB4NDcsIDB4NiwgMHhmNywgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzUsIDB4Y2QsIDB4ZjcsIDB4NDEsIDB4ZjcsIDB4MWMsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGZiLCAweDcsIDB4MWYsIDB4ZmIsIDB4NjEsIDB4NiwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjQsIDB4NTAsIDB4YSwgMHg4NSwgMHhmYywgMHg3ZiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZjcsIDB4YTAsIDB4NSwgMHhmNywgMHg0ZCwgMHg2LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHg4MiwgMHgyNiwgMHhmYiwgMHgxZCwgMHhmYiwgMHgxYiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4MWYsIDB4ZSwgMHhmOCwgMHgzYywgMHg3OCwgMHhkZCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4NDIsIDB4YSwgMHhmNywgMHg3NywgMHhmOSwgMHg2MiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ZmIsIDB4MCwgMHhmYywgMHg3YiwgMHg2NSwgMHhmYiwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHg0NSwgMHhmNywgMHgyNywgMHhmNywgMHg5MSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2EsIDB4ZGUsIDB4OWQsIDB4MWYsIDB4ZTYsIDB4ZjgsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweGEsIDB4MzAsIDB4ZmMsIDB4M2MsIDB4NSwgMHhmYiwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NWMsIDB4MjAsIDB4ZmIsIDB4MmUsIDB4MWIsIDB4MzksIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGUxLCAweDFmLCAweGY0LCAweGY4LCAweGExLCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4M2MsIDB4NzgsIDB4ZGYsIDB4ZjksIDB4MzEsIDB4NzcsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDIyLCAweDQyLCAweGEsIDB4ZjgsIDB4NDksIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDE1LCAweGQ1LCAweDYsIDB4ZjcsIDB4MTksIDB4ZjcsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4NywgMHg2LCAweGZiLCAweGMxLCAweGZiLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg4YiwgMHgyMiwgMHhmYywgMHg4NSwgMHg2NCwgMHgxYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4ZjcsIDB4YSwgMHg0MywgMHhmNywgMHgyOCwgMHhmNywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4ZjcsIDB4N2YsIDB4ZTEsIDB4OWMsIDB4MWUsIDB4ZTYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDU3LCAweGEsIDB4MzIsIDB4ZmMsIDB4NDQsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3NSwgMHg0OCwgMHhmYiwgMHhhLCAweGZiLCAweDFlLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHgzOSwgMHhiOCwgMHhlMywgMHgxZiwgMHhmNCwgMHhmOCwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweGY4LCAweDNjLCAweDc4LCAweGRmLCAweGY5LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhhLCAweGY4LCAweDIsIDB4ZjksIDB4YTgsIDB4MTUsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZGQsIDB4ZTUsIDB4YjMsIDB4MzEsIDB4NSwgMHhkYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHhmNywgMHgyMSwgMHg0NywgMHhhLCAweGZiLCAweGEzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHgyYywgMHhhLCAweGY4LCAweDNjLCAweDc4LCAweGRlLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg3NywgMHhmNywgMHg1NiwgMHg0MiwgMHhhLCAweGY4LCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHhiMiwgMHgxNSwgMHhlOSwgMHg2LCAweGEwLCAweGYyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDYsIDB4ZmIsIDB4NjIsIDB4MjQsIDB4MTUsIDB4ZTksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4ZjIsIDB4NSwgMHgyZCwgMHg2LCAweGZiLCAweDQ0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHgyYywgMHhhLCAweGY4LCAweDNjLCAweDc4LCAweGRmLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHg3NywgMHhkNCwgMHhmNywgMHgyMCwgMHgxLCAweGY3LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweDMsIDB4ZjcsIDB4NzcsIDB4ZjksIDB4NzQsIDB4MTUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGZjLCAweDg3LCAweDY0LCAweDFhLCAweGZiLCAweDI1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDQzLCAweGY3LCAweDI3LCAweGY3LCAweDkyLCAweGJiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhlMCwgMHg5ZCwgMHgxZSwgMHhlNSwgMHhmOCwgMHg0NiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzMywgMHhmYywgMHg0NiwgMHg1LCAweGZiLCAweGIsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGZiLCAweGEsIDB4ZmIsIDB4MWYsIDB4MWIsIDB4MzksIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGUzLCAweDFmLCAweGY0LCAweGY4LCAweGFlLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGMwLCAweDE1LCAweGQyLCAweDYsIDB4NTAsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MiwgMHg2LCAweGUsIDB4ZjgsIDB4NSwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHhjYywgMHgxNiwgMHhmMSwgMHg2LCAweGY4LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg2MiwgMHg1LCAweDI4LCAweDYsIDB4ZmIsIDB4ZDUsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweGZiLCAweDcsIDB4ZjgsIDB4ZmQsIDB4M2QsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgxYSwgMHgyZCwgMHhhLCAweGY3LCAweDUyLCAweGRmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhkOSwgMHhmNywgMHhiYywgMHhlYSwgMHgzLCAweGY3LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhlYywgMHg2LCAweGY3LCAweGIzLCAweGY4LCAweGQwLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGE3LCAweGZjLCAweGQwLCAweDUsIDB4ZjAsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4ZjksIDB4NjIsIDB4NGQsIDB4YSwgMHhmYiwgMHhhYywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4NGUsIDB4YSwgMHg3MCwgMHhmOCwgMHhlNSwgMHg1LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweGI5LCAweGZjLCAweGRlLCAweDg5LCAweDhkLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhkYywgMHg0ZCwgMHhhLCAweGUsIDB4ZjgsIDB4NSwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg5ZSwgMHgxNiwgMHhmNywgMHhlLCAweDYsIDB4ZjcsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI0LCAweGY3LCAweDJiLCAweGZiLCAweGI0LCAweDUsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4NTEsIDB4ZjcsIDB4ZWUsIDB4ZjcsIDB4ZTEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NSwgMHhmYiwgMHhjLCAweDYsIDB4ZmIsIDB4OTgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGZiLCAweDMwLCAweGY3LCAweGJjLCAweDUsIDB4MjYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTcsIDB4ZmIsIDB4ZjgsIDB4NSwgMHhlLCAweGY4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGEsIDB4ZjcsIDB4M2IsIDB4ZWYsIDB4ZjgsIDB4NDAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4MywgMHhmNywgMHhkYSwgMHgxNiwgMHhlOCwgMHg2LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhMSwgMHhmNywgMHhlMCwgMHhmOCwgMHg1NSwgMHg1MSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmOSwgMHhmYiwgMHgzZCwgMHhmNywgMHhmOSwgMHg0NywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YiwgMHhmYywgMHg0ZCwgMHg1LCAweGUsIDB4MzUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmEsIDB4MzUsIDB4NzcsIDB4MSwgMHhmNywgMHhkYSwgMHgxNiwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjMywgMHhmNywgMHhhYSwgMHhmNywgMHhlMCwgMHhmOCwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4YSwgMHhmYywgMHgwLCAweGZiLCAweDNkLCAweGY4LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGEsIDB4ZjcsIDB4NmEsIDB4ZmMsIDB4NTcsIDB4NSwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OGMsIDB4MTUsIDB4ZDIsIDB4NiwgMHhmNywgMHgxMywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgxLCAweDYsIDB4ZSwgMHgzNSwgMHhhLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg3NywgMHhlNSwgMHhmMSwgMHgxLCAweGY3LCAweGRhLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHg2LCAweGMzLCAweGY3LCAweGE2LCAweGY3LCAweGUwLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg1MSwgMHhhLCAweGZiLCAweGZkLCAweGZiLCAweDNkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHg0NywgMHhhLCAweGY3LCAweDZhLCAweGZjLCAweDViLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM2LCAweGY4LCAweGExLCAweDE1LCAweGU1LCAweDYsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweDNmLCAweGEsIDB4ZmIsIDB4NTcsIDB4MjUsIDB4MTUsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTAsIDB4ZjEsIDB4M2UsIDB4YSwgMHhmNywgMHhjZCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4ZjgsIDB4YzAsIDB4ZGMsIDB4MSwgMHg4NCwgMHgxNiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg2LCAweDlmLCAweGRjLCAweDUsIDB4ZmMsIDB4N2YsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZTAsIDB4ZjgsIDB4YzYsIDB4OTQsIDB4ZDYsIDB4NSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4NiwgMHg3NywgMHgzYSwgMHhmOCwgMHg1ZCwgMHg4YywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZmMsIDB4Y2EsIDB4NSwgMHhlLCAweGY3LCAweGNkLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhmOSwgMHg1NiwgMHhmNywgMHgxZiwgMHgxLCAweDg0LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmOCwgMHg2LCAweDlmLCAweGRmLCAweDUsIDB4ZmMsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjgsIDB4ZTAsIDB4ZjgsIDB4ZDYsIDB4OTQsIDB4ZDgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4ZDgsIDB4NiwgMHg3NywgMHgzNywgMHhmOCwgMHg1NywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4ZTAsIDB4ZmMsIDB4ZDgsIDB4NSwgMHhmOCwgMHgyNCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4MTUsIDB4ZjcsIDB4NiwgMHg2LCAweGY3LCAweDJkLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDIwLCAweDYsIDB4MmQsIDB4MzEsIDB4NWQsIDB4ZTUsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHg3YywgMHhkMSwgMHg2NiwgMHg3NiwgMHhmNywgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4ZjcsIDB4MmUsIDB4ZDUsIDB4MTIsIDB4YzgsIDB4ZTcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGY4LCAweDNjLCAweDg4LCAweDE1LCAweGU4LCAweDYsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDg3LCAweDlmLCAweGEzLCAweDFhLCAweGFlLCAweDkxLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhhZCwgMHgxZSwgMHhhYSwgMHhmNywgMHgxNywgMHg1LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg4ZCwgMHhhNCwgMHhhMiwgMHgxYSwgMHhlNywgMHg1MSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjUsIDB4NDAsIDB4ZmIsIDB4MjUsIDB4NjAsIDB4ZmIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MWUsIDB4ZTksIDB4ODMsIDB4NSwgMHhkOCwgMHhhNywgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YzYsIDB4MWIsIDB4MTMsIDB4YjgsIDB4YzEsIDB4ZTMsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIsIDB4NmEsIDB4MWYsIDB4NjUsIDB4N2QsIDB4NjQsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDg4LCAweDgsIDB4NGQsIDB4ODksIDB4ZmIsIDB4NGIsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM2LCAweDFhLCAweDI5LCAweGQ2LCAweDU0LCAweGU2LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhjYSwgMHhjMCwgMHhhNSwgMHhhOSwgMHgxZiwgMHg4YywgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NmUsIDB4OTMsIDB4NzEsIDB4OCwgMHhhMiwgMHhmNywgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ODIsIDB4NTYsIDB4ODAsIDB4NWYsIDB4NzEsIDB4NjYsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NjksIDB4NTMsIDB4NmYsIDB4NTMsIDB4MWIsIDB4M2MsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGIyLCAweGUwLCAweGU4LCAweDlhLCAweGM3LCAweDkxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHg5MiwgMHhhNCwgMHg4ZCwgMHhhZCwgMHg5OCwgMHg4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGEsIDB4ZjgsIDB4MzksIDB4NzcsIDB4MTIsIDB4YzgsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUxLCAweGVkLCAweDEzLCAweDdjLCAweGY3LCAweGNmLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHgxNSwgMHhkYSwgMHg2LCAweGY3LCAweDIxLCAweGY3LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweGQsIDB4NiwgMHg5MCwgMHhmZCwgMHg3NSwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDRhLCAweGEsIDB4ZjcsIDB4YjAsIDB4ZjcsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDEzLCAweDcwLCAweGY3LCAweDdiLCAweGY4LCAweGU5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHg2LCAweGRkLCAweGUyLCAweGIzLCAweDM0LCAweDUsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NGQsIDB4ZjcsIDB4MWQsIDB4NDcsIDB4YSwgMHhjMiwgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4MjAsIDB4YSwgMHgxMywgMHhiMCwgMHgyYiwgMHhhLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmYSwgMHg3NiwgMHhmNywgMHgyMSwgMHg3NywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHhmOCwgMHhlNSwgMHgxNSwgMHhkZCwgMHg2LCAweGY3LCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhhLCAweGZiLCAweDExLCAweDYsIDB4ZSwgMHg3YywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NzYsIDB4ZjcsIDB4OGEsIDB4Y2QsIDB4ZjcsIDB4YmUsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGM4LCAweGU1LCAweGY3LCAweGNmLCAweGU4LCAweDEzLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0NCwgMHhmOCwgMHhmMywgMHgxNSwgMHhlOSwgMHg2LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg0ZCwgMHhhLCAweGZiLCAweDYyLCAweDI4LCAweDE1LCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGEwLCAweGVlLCAweDUsIDB4MmQsIDB4NiwgMHhmNywgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4NTksIDB4MjIsIDB4YSwgMHhlLCAweGY4LCAweGUzLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmNywgMHg0YywgMHhjZiwgMHhmNywgMHgzNSwgMHhkMCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4YzgsIDB4ZTYsIDB4MTMsIDB4ZTgsIDB4ZjgsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweDE1LCAweDQ0LCAweGE4LCAweGUzLCAweDVkLCAweGQ2LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzOSwgMHhjYywgMHhmNywgMHgxYiwgMHhiYiwgMHhhMiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4OTMsIDB4NSwgMHgzMywgMHg1ZiwgMHg0YywgMHg2ZSwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NDQsIDB4NTAsIDB4Y2QsIDB4ZjcsIDB4NiwgMHg5OSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MTksIDB4NiwgMHg4ZCwgMHg5YSwgMHg5MCwgMHhhZCwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4NywgMHg0NiwgMHhmMywgMHhmYiwgMHgyMCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4NzIsIDB4NWMsIDB4NWQsIDB4MWUsIDB4MTMsIDB4ZDgsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDVmLCAweGMwLCAweGZiLCAweDAsIDB4MWIsIDB4ZmIsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NWMsIDB4ZmIsIDB4NywgMHg2NSwgMHgxZiwgMHhlNCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgxMywgMHhlOCwgMHhhNiwgMHg5NywgMHhhNywgMHhkMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgxYiwgMHhkNywgMHhiOSwgMHg1MSwgMHgzOCwgMHg2NSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4NzYsIDB4ZmIsIDB4ZSwgMHg4OSwgMHg1OCwgMHg3YywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHg2ZiwgMHg3NSwgMHg0NSwgMHg1NywgMHgxYSwgMHg0OCwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4ZjcsIDB4MTYsIDB4ZjYsIDB4YzAsIDB4YzQsIDB4YzcsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDgxLCAweGY3LCAweDMwLCAweDE1LCAweDU0LCAweDgyLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOCwgMHhmYiwgMHgxNCwgMHgxYiwgMHg0MiwgMHg3MCwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4ZGUsIDB4ZGMsIDB4OTYsIDB4YzksIDB4OTEsIDB4MWYsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGEzLCAweDkxLCAweGE4LCAweDkxLCAweDgsIDB4ZjQsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGVjLCAweGE2LCAweGM4LCAweGNiLCAweGUxLCAweDFiLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHg2MCwgMHhmYiwgMHhhLCAweDc4LCAweDFmLCAweGUsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4YjAsIDB4ZjcsIDB4MWQsIDB4MTIsIDB4YzgsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGNmLCAweGU4LCAweDEzLCAweDdjLCAweGY4LCAweDM3LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhhLCAweDRhLCAweGY3LCAweGRjLCAweDU2LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDUsIDB4ZmIsIDB4MiwgMHg2LCAweGUsIDB4ZjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ZDksIDB4NTAsIDB4NzYsIDB4ZjksIDB4MmIsIDB4ZDEsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGUyLCAweGNiLCAweGUzLCAweGY3LCAweDMwLCAweGU0LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhmNywgMHg5ZSwgMHhmOCwgMHgzNCwgMHgxNSwgMHg0NywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZCwgMHg1MiwgMHhmYiwgMHgyNiwgMHgxYSwgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHgzOSwgMHhmNywgMHgxNCwgMHhlYSwgMHhiZiwgMHhiNCwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4MWUsIDB4MTMsIDB4N2MsIDB4YTksIDB4NjMsIDB4YWYsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDdkLCAweGNkLCAweGJmLCAweDE4LCAweDc0LCAweGE1LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg2ZiwgMHhiMCwgMHhhNiwgMHhhYSwgMHhhZiwgMHhiYiwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NDAsIDB4YWUsIDB4MTgsIDB4NmEsIDB4NTEsIDB4NzYsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDc5LCAweDU3LCAweGNjLCAweDU2LCAweGVhLCAweDdjLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGRjLCAweGI1LCAweGVkLCAweGMzLCAweGViLCAweDFhLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhkMywgMHgyMywgMHhmYiwgMHg2LCAweDRiLCAweDJkLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg5YiwgMHg2ZCwgMHg5YiwgMHg2NywgMHgxZSwgMHhmNywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjksIDB4MTUsIDB4MTMsIDB4YmMsIDB4NTUsIDB4NTcsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDYwLCAweDFiLCAweDQ2LCAweDRiLCAweGI2LCAweGQ3LCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHhiYiwgMHhiZSwgMHhhMywgMHgxZiwgMHhiMSwgMHg0NCwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4YjEsIDB4NTksIDB4OCwgMHgyZSwgMHhmNywgMHhkMiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4YzQsIDB4ODgsIDB4YTYsIDB4OTMsIDB4MWEsIDB4YjksIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGJkLCAweGIxLCAweGE4LCAweDZkLCAweDY2LCAweDRhLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg2ZSwgMHg3ZCwgMHgxZSwgMHhlLCAweDdjLCAweGQwLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHg4OCwgMHhjYywgMHhmNywgMHhhMywgMHhiMSwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4MTIsIDB4YzgsIDB4ZTUsIDB4ZjcsIDB4MjIsIDB4YjAsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDEzLCAweDdmLCAweGY3LCAweGI5LCAweGY5LCAweDJmLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHhiNSwgMHg2MywgMHhiYywgMHhiYywgMHhiNSwgMHhiMywgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4NjIsIDB4YjEsIDB4NTksIDB4NTksIDB4NjIsIDB4NjUsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGIwLCAweDhhLCAweDE1LCAweGE4LCAweGEzLCAweGEzLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhhMywgMHg3NCwgMHg2ZCwgMHg2ZSwgMHg3MywgMHg3NSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NzIsIDB4YTEsIDB4YTgsIDB4MWUsIDB4ZTQsIDB4ZmQsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGEsIDB4MTMsIDB4YmYsIDB4MmIsIDB4YSwgMHhmNywgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjEsIDB4NzYsIDB4ZjgsIDB4M2MsIDB4NzcsIDB4MSwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OWMsIDB4MTUsIDB4ZWMsIDB4NiwgMHhmNywgMHgyYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4ZjcsIDB4MmUsIDB4ZmIsIDB4ZGEsIDB4NSwgMHhlYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2MywgMHhmOCwgMHgzYywgMHg1LCAweDM3LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjIsIDB4ZjcsIDB4NDksIDB4ZGYsIDB4NGIsIDB4NzYsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDhjLCAweDc3LCAweDEyLCAweDEzLCAweDYwLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ4LCAweDE1LCAweGE2LCAweGE4LCAweGFmLCAweGFjLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiNiwgMHhhYywgMHg4MCwgMHg3ZiwgMHhhOSwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4N2EsIDB4YjMsIDB4YWUsIDB4NzgsIDB4YjQsIDB4MWIsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGE1LCAweGE0LCAweGE2LCAweDFmLCAweGU5LCAweDcsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDU5LCAweDU3LCAweDRmLCAweDFiLCAweDYwLCAweDY1LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg2MywgMHgxZiwgMHgxMywgMHg2MCwgMHg5OCwgMHg2YiwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4NjYsIDB4MWIsIDB4NjQsIDB4NTgsIDB4N2UsIDB4NjIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4ZTYsIDB4ZjgsIDB4NTgsIDB4NzYsIDB4ZjcsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZjcsIDB4YjYsIDB4YzUsIDB4MywgMHhmNywgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NDMsIDB4MTUsIDB4YzgsIDB4ZWUsIDB4Y2IsIDB4MjgsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDNhLCAweGUyLCAweGY3LCAweDksIDB4YTQsIDB4NzUsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4NWYsIDB4OTUsIDB4ZjcsIDB4NSwgMHg0NywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4ZmIsIDB4NSwgMHhmYiwgMHgxLCAweGI3LCAweDc2LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3LCAweDczLCAweDNkLCAweDMzLCAweDUsIDB4ZSwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4NjEsIDB4Y2IsIDB4NGIsIDB4ZjcsIDB4NTYsIDB4ODEsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGU5LCAweGNhLCAweGViLCAweGNiLCAweDEyLCAweGY3LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhmMiwgMHhkYiwgMHhmOCwgMHg3ZiwgMHhjYiwgMHgxMywgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NDksIDB4ZjcsIDB4NmEsIDB4MTUsIDB4NzAsIDB4OGUsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGQ4LCAweDFiLCAweGY3LCAweDEyLCAweGY3LCAweDFhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhmNywgMHgzYSwgMHhmNywgMHgzYywgMHhmYiwgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4ZmIsIDB4ODcsIDB4ZmIsIDB4ZGYsIDB4MjYsIDB4ZmIsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNlLCAweGZiLCAweDY2LCAweGY3LCAweDE5LCAweGZiLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjNiwgMHgxZiwgMHgxMywgMHg1ZiwgMHhmNywgMHhhYSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2QsIDB4YTQsIDB4OTcsIDB4MWYsIDB4M2QsIDB4NiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NWYsIDB4NmQsIDB4MzAsIDB4MzUsIDB4ZmIsIDB4NGMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVlLCAweGZiLCAweDQ0LCAweGUwLCAweGY3LCAweDgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhmNywgMHgyNywgMHhmNywgMHg0MSwgMHhmNywgMHg2ZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4ZjcsIDB4MjAsIDB4ZmIsIDB4NCwgMHhmYiwgMHgzNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4ZmIsIDB4ZCwgMHgzMywgMHg1ZCwgMHgxZiwgMHg2NywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4Y2EsIDB4OTQsIDB4YjQsIDB4YzksIDB4ZjcsIDB4YjYsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDYsIDB4N2MsIDB4NDgsIDB4NSwgMHhkNSwgMHg1ZSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4NzMsIDB4MWIsIDB4ZmIsIDB4YywgMHgyMywgMHhmYiwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWEsIDB4MjYsIDB4Y2EsIDB4MzMsIDB4ZTksIDB4YzgsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGEzLCAweGEwLCAweDFmLCAweGZiLCAweDY2LCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGQ5LCAweGJmLCAweGY3LCAweDFmLCAweGVjLCAweGJiLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHgyZCwgMHhmYiwgMHg2LCAweDM5LCAweDI2LCAweDQwLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHhiMywgMHhkZiwgMHgxZSwgMHhlLCAweDdjLCAweGQwLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHg4OSwgMHhjZCwgMHhmMCwgMHhkNSwgMHhmNywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4YzgsIDB4ZWEsIDB4ZjcsIDB4ZTEsIDB4ZWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGY3LCAweDdlLCAweGY4LCAweGY3LCAweDE1LCAweGNkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDkxLCAweDk3LCAweDljLCAweGE1LCAweDFiLCAweGE1LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg4MSwgMHhhMiwgMHgxZiwgMHg3ZiwgMHhhNiwgMHhhMywgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4MWIsIDB4Y2EsIDB4YWYsIDB4YzIsIDB4YzEsIDB4OTAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDYsIDB4N2QsIDB4ODcsIDB4ODQsIDB4NzIsIDB4NzAsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDc3LCAweDk1LCAweDk1LCAweDc0LCAweDFmLCAweDk2LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg5NiwgMHg2NywgMHgxYiwgMHg0MiwgMHg3OSwgMHg1NywgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4MWYsIDB4ZjcsIDB4NGQsIDB4ZmMsIDB4ZmEsIDB4MjAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YWUsIDB4MmIsIDB4YSwgMHg3YywgMHhkMywgMHg2NCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NjEsIDB4ZDQsIDB4ZjcsIDB4NGYsIDB4NzcsIDB4MTIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGU3LCAweDEzLCAweDc4LCAweGM1LCAweDg4LCAweDE1LCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDlmLCAweGVlLCAweDQ4LCAweGEsIDB4MTMsIDB4YjgsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGNlLCAweDVkLCAweGQzLCAweDFiLCAweGY3LCAweDEzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHgxOSwgMHhmNywgMHg1YSwgMHhmNywgMHg1YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4OWMsIDB4NjYsIDB4NGMsIDB4NWQsIDB4NmUsIDB4NjMsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGMyLCAweGY3LCAweDk0LCAweDNkLCAweGEsIDB4MTMsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGZjLCAweDhlLCAweDE1LCAweGRkLCAweGNkLCAweGY3LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweGVhLCAweDlkLCAweDI5LCAweDVmLCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHg0MiwgMHg2MCwgMHhmYiwgMHg0ZSwgMHhmYiwgMHgxZCwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4OTgsIDB4ZjcsIDB4MjIsIDB4MWUsIDB4ZSwgMHg3NywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjksIDB4ODgsIDB4NzcsIDB4MSwgMHhmNywgMHgyMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4MywgMHhmNywgMHg5MCwgMHg3OCwgMHgxNSwgMHhlNSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0LCAweGY5LCAweDg4LCAweDNlLCAweGEsIDB4NjUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDc2LCAweGZhLCAweDVhLCAweDc3LCAweDEsIDB4ZDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDMsIDB4ZDUsIDB4ZmIsIDB4NzksIDB4MTUsIDB4ZDcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4ZmEsIDB4NWEsIDB4NSwgMHgzZiwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGZiLCAweDU4LCAweGQ1LCAweGY3LCAweGVlLCAweGQ5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHhkNSwgMHgxLCAweGU3LCAweGY3LCAweGY1LCAweDMsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDc0LCAweDE1LCAweGViLCAweDgyLCAweDMxLCAweDJjLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHgyNiwgMHg3NiwgMHg4OSwgMHgzMiwgMHhmNywgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4OTYsIDB4ZDUsIDB4NSwgMHgyOSwgMHg4YiwgMHg5NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4YTMsIDB4MWYsIDB4OWIsIDB4ZjcsIDB4NiwgMHg4NSwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4YWQsIDB4ZjYsIDB4YmIsIDB4OTAsIDB4OWYsIDB4YTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDgsIDB4ZTMsIDB4OTgsIDB4YTMsIDB4YmYsIDB4ZGQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGQ1LCAweDUsIDB4ZmIsIDB4MzYsIDB4NzIsIDB4NDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweDczLCAweDFmLCAweDJiLCAweDdiLCAweDc5LCAweGZiLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDFiLCAweGUsIDB4YWYsIDB4ZmIsIDB4NTgsIDB4ZDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweGQ5LCAweGY4LCAweDcsIDB4ZDUsIDB4MSwgMHg4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4MywgMHg5NiwgMHhmYiwgMHhlLCAweDE1LCAweDgwLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDI0LCAweGI5LCAweGQ3LCAweGY3LCAweDEzLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlYSwgMHg5YSwgMHhhMiwgMHhmNywgMHhlLCAweGU5LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhkOSwgMHg1LCAweDJkLCAweDkxLCAweGRkLCAweGVhLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHgyOCwgMHhhMSwgMHg4OSwgMHhlYSwgMHhmYiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ODAsIDB4NDEsIDB4NSwgMHhlZSwgMHg4OSwgMHg3YywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4NzQsIDB4MWYsIDB4N2EsIDB4ZmIsIDB4NiwgMHg5MiwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4NjgsIDB4ZmIsIDB4MCwgMHg1YiwgMHg4NiwgMHg2YiwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDQsIDB4OCwgMHgzMywgMHg3ZSwgMHg3MSwgMHg2MiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZSwgMHg1ZiwgMHhhLCAweGEwLCAweGY4LCAweDEyLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGYsIDB4ZmIsIDB4MTQsIDB4MTUsIDB4ZjcsIDB4MzMsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDUsIDB4ZjYsIDB4NiwgMHg5OSwgMHhjZiwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg2LCAweGZiLCAweDRkLCAweGZlLCAweDJhLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDYsIDB4OWEsIDB4Y2YsIDB4NSwgMHhlLCAweDVmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGY4LCAweDEyLCAweDMsIDB4ZmIsIDB4MTQsIDB4NCwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NSwgMHhmNywgMHg1NiwgMHg2LCAweGY3LCAweDUwLCAweGZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg1LCAweGZiLCAweDU0LCAweDYsIDB4N2MsIDB4NDcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4NiwgMHhmYiwgMHgzNiwgMHhmZCwgMHhhMiwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGY4LCAweGU3LCAweGNhLCAweDEsIDB4ZjcsIDB4M2IsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4M2IsIDB4ZjksIDB4NmYsIDB4MTUsIDB4NDIsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDRjLCAweGU1LCAweDFiLCAweGY3LCAweDIsIDB4YjksIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDk5LCAweDFmLCAweDRlLCAweDYsIDB4NzMsIDB4ODEsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweDQ3LCAweDFiLCAweDUzLCAweDc4LCAweGE5LCAweGI2LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDY1LCAweDhkLCAweDc2LCAweGY5LCAweDg4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDRiLCAweGY4LCAweDNmLCAweDE1LCAweGQ4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGY3LCAweGNhLCAweDUsIDB4M2UsIDB4NiwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4ODgsIDB4MTUsIDB4ZDgsIDB4NiwgMHhjYiwgMHhmNywgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzZSwgMHg2LCAweGUsIDB4YmYsIDB4ZjcsIDB4NzMsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGNmLCAweDc3LCAweDEsIDB4ZTYsIDB4ZjcsIDB4ZmQsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGQzLCAweDQzLCAweGU0LCAweGUzLCAweGQ0LCAweGQzLCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHg0MiwgMHhkMSwgMHgzMywgMHgzMiwgMHg0MywgMHg0NSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHhmNywgMHg1ZSwgMHg3YywgMHhkMSwgMHhmNywgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDYsIDB4NDEsIDB4ZDUsIDB4MSwgMHhkNSwgMHhlYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZTcsIDB4MywgMHhmOCwgMHgzZSwgMHhmNywgMHg1MiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NzgsIDB4NWMsIDB4M2IsIDB4MzYsIDB4MWIsIDB4NzIsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGY3LCAweDEyLCAweGJmLCAweGEwLCAweGY3LCAweDZlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHhhNiwgMHhkZCwgMHg4NCwgMHgyOCwgMHgxZiwgMHhlNywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHgxZCwgMHhmYiwgMHg0LCAweGIxLCAweDNiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg0NSwgMHhmYiwgMHg2NiwgMHhmYiwgMHgxYSwgMHhmYiwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4NGMsIDB4ZjcsIDB4MCwgMHhmMywgMHhlOCwgMHhjNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4YmIsIDB4MWUsIDB4ZSwgMHg1MywgMHhhLCAweGY3LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhlNSwgMHgxNSwgMHhlZCwgMHg2LCAweGY3LCAweDE3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHgzZCwgMHhhLCAweDNhLCAweDMxLCAweDY0LCAweGU1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDYsIDB4ZSwgMHhmNywgMHg1ZSwgMHhmYiwgMHg2MCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTgsIDB4ZDEsIDB4ZjcsIDB4Y2UsIDB4ZjcsIDB4NGIsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDEsIDB4ZDUsIDB4ZWEsIDB4ZjcsIDB4MywgMHhkZCwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4MywgMHhmNywgMHg2MywgMHgyZCwgMHgxNSwgMHhhNywgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4NjgsIDB4NWMsIDB4M2MsIDB4OTEsIDB4NWIsIDB4MWYsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDUsIDB4OGEsIDB4OWUsIDB4YTEsIDB4OGEsIDB4OWUsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGY3LCAweDE1LCAweDk4LCAweGUzLCAweDlkLCAweDgzLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHgxZiwgMHg5NywgMHhhOCwgMHg1LCAweGY3LCAweDEsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweGY3LCAweDYsIDB4YjMsIDB4MWYsIDB4MmYsIDB4OTUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NzgsIDB4NWIsIDB4MzcsIDB4MzYsIDB4MWIsIDB4NjMsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGY1LCAweGRjLCAweGE4LCAweGY3LCAweDU3LCAweGY3LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhkYywgMHg3NCwgMHgzMywgMHgxZiwgMHhlNiwgMHg5MSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMCwgMHhmYiwgMHgzLCAweGIzLCAweDNiLCAweGZiLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmYiwgMHg2MSwgMHhmYiwgMHgyNiwgMHhmYiwgMHg0NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4NjIsIDB4YWUsIDB4OGUsIDB4MWUsIDB4ZSwgMHhhZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4NzYsIDB4ZjcsIDB4NzUsIDB4NzcsIDB4MTIsIDB4ZjcsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDE3LCAweGVlLCAweDE2LCAweDc4LCAweDM4LCAweDUsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDc5LCAweDZmLCAweDY3LCAweDRiLCAweDhkLCAweDdkLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4ZCwgMHg4YywgMHg3YiwgMHgxZiwgMHgxMywgMHhlMCwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NSwgMHg4NywgMHhhMiwgMHhhOSwgMHg4YSwgMHhhMiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4ZjcsIDB4MTIsIDB4OTAsIDB4ZTYsIDB4OTYsIDB4ODgsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDk4LCAweDFmLCAweDk1LCAweGI5LCAweDUsIDB4ZSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4ZjcsIDB4ZDgsIDB4YzUsIDB4MSwgMHhmNiwgMHgyYSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4NzksIDB4ZTAsIDB4ZjcsIDB4MmQsIDB4NSwgMHg4OSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4ODksIDB4YTQsIDB4MWIsIDB4ZjIsIDB4ZWQsIDB4YjcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YmQsIDB4MWYsIDB4NDAsIDB4OTIsIDB4NSwgMHg2MSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4NGIsIDB4MzQsIDB4MWIsIDB4ODIsIDB4ODMsIDB4OGQsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDFmLCAweGY3LCAweDQwLCAweGY3LCAweGNhLCAweGI0LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg2OCwgMHg4YywgMHg3OCwgMHgxOSwgMHhkMywgMHg4ZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg3ZCwgMHhkNywgMHgzMiwgMHhhNywgMHgxZSwgMHhkZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NTMsIDB4OWQsIDB4MzQsIDB4ZmIsIDB4MzMsIDB4NSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODIsIDB4OGMsIDB4N2EsIDB4MWIsIDB4ZmIsIDB4NzEsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNhLCAweDIzLCAweDVkLCAweDlhLCAweDRlLCAweGRkLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhYywgMHhjNywgMHgxNSwgMHg3OSwgMHg5NSwgMHg2NiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4MWEsIDB4YjcsIDB4YTksIDB4ZjcsIDB4M2MsIDB4ZjcsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4YWUsIDB4ZjgsIDB4ZTUsIDB4ZTUsIDB4MzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDEyLCAweDEzLCAweDgwLCAweGY3LCAweDI3LCAweGY4LCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlNywgMHg2LCAweGRjLCAweGU1LCAweGIyLCAweDMxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDYsIDB4MTMsIDB4NDAsIDB4NGQsIDB4ZjcsIDB4MjEsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHg3NywgMHg4YiwgMHhlYiwgMHhmNywgMHhkOCwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhlMiwgMHhmNywgMHg2YSwgMHgzLCAweGY3LCAweDQzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHg0MCwgMHhhLCAweGZiLCAweDIsIDB4ZmMsIDB4OTgsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHg3NywgMHhmYiwgMHgxMiwgMHg3NiwgMHhmNywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhlMiwgMHg4ZSwgMHgxNSwgMHhjNCwgMHg2LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg1ZiwgMHg4MSwgMHg3YSwgMHg4NywgMHg4MywgMHg2MSwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4YSwgMHg5MiwgMHhhZiwgMHg5ZSwgMHhlNSwgMHgxOCwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweGY4LCAweDRiLCAweDc4LCAweGM5LCAweGVlLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjZSwgMHhjMiwgMHhmNCwgMHhjOSwgMHgxLCAweGMxLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgyMSwgMHhjYywgMHgzLCAweGY4LCAweGNiLCAweGY3LCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgzNCwgMHg2YiwgMHg0MSwgMHg4MSwgMHg2ZiwgMHgxYiwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4YmIsIDB4ZjYsIDB4OTgsIDB4MWYsIDB4ZDYsIDB4OTQsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGVmLCAweDFiLCAweDlkLCAweGQwLCAweDhhLCAweDNmLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjYiwgMHg5OSwgMHg1LCAweGRkLCAweDdiLCAweDQ2LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHgxYiwgMHhmYiwgMHgxNywgMHgzNSwgMHgzNywgMHhmYiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4MWYsIDB4ZmIsIDB4MWMsIDB4N2IsIDB4ZDksIDB4M2QsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4MWIsIDB4ZGQsIDB4ZTIsIDB4YjYsIDB4ZTksIDB4YWQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGQzLCAweGQ4LCAweDE1LCAweGZiLCAweDY1LCAweGY3LCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzYSwgMHhmNywgMHg2ZCwgMHhmNywgMHg2ZCwgMHhmNywgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2IsIDB4ZjcsIDB4NjQsIDB4ZjcsIDB4NjUsIDB4ZmIsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQwLCAweGZiLCAweDZiLCAweGZiLCAweDZhLCAweGZiLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzZiwgMHhmYiwgMHg2NiwgMHgxZSwgMHhjYywgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4ZjcsIDB4MjksIDB4ZjcsIDB4MjUsIDB4ZjcsIDB4NDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGY3LCAweDIzLCAweGZiLCAweDI1LCAweGZiLCAweDQyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhmYiwgMHgyMywgMHhmYiwgMHgxZiwgMHhmYiwgMHg0OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZmIsIDB4MjksIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4NDIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4YywgMHg3NiwgMHhhZSwgMHhkZiwgMHhmNywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4YWUsIDB4NzcsIDB4MSwgMHhlZSwgMHhlZSwgMHgxNSwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4NSwgMHg3MCwgMHhhOSwgMHhiMCwgMHg4MSwgMHhiMCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4YmIsIDB4OTUsIDB4YTYsIDB4YjcsIDB4MWYsIDB4YmIsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGM4LCAweDVhLCAweGQwLCAweGI2LCAweGJkLCAweDljLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhhNSwgMHgxOSwgMHg5MiwgMHhhNywgMHg5NCwgMHhiOCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4ZTMsIDB4ZDIsIDB4MTgsIDB4NjMsIDB4YzgsIDB4MzMsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YTYsIDB4NmUsIDB4NjMsIDB4OTUsIDB4NjYsIDB4MWIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDgxLCAweDcwLCAweDVlLCAweDFmLCAweDViLCAweGQzLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHhiYiwgMHg0NCwgMHg2MCwgMHg1YiwgMHg3OSwgMHg1ZSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4MTksIDB4ODQsIDB4NzEsIDB4ODMsIDB4NWUsIDB4OWMsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDQ2LCAweDE4LCAweGY3LCAweDM5LCAweGY3LCAweDUyLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhhMCwgMHhkMywgMHhjNiwgMHhkMSwgMHgxYiwgMHhkMSwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NDEsIDB4NzYsIDB4MWYsIDB4NDIsIDB4NzcsIDB4NDIsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDFiLCAweDQ2LCAweDYyLCAweGM2LCAweGQ0LCAweDlmLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdjLCAweGQzLCAweDRmLCAweGM3LCAweGY4LCAweDI1LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZiwgMHg3NywgMHgxMiwgMHhkZiwgMHhlNywgMHgxMywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzAsIDB4ODgsIDB4MTUsIDB4ZTAsIDB4NiwgMHhmNywgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NjUsIDB4M2QsIDB4YSwgMHg1MCwgMHhmYiwgMHhhZCwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkNSwgMHg2NCwgMHg1MSwgMHg5ZiwgMHg1NSwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZmIsIDB4MTAsIDB4ZmIsIDB4MWMsIDB4ZmIsIDB4NGEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGI4LCAweGZiLCAweDNjLCAweGYzLCAweDRmLCAweGQ2LCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhiMiwgMHhiYSwgMHhiNiwgMHgxZSwgMHgxMywgMHg3OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZjcsIDB4MjIsIDB4MTUsIDB4YzQsIDB4YjUsIDB4ZjcsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweGMyLCAweGNmLCAweDY3LCAweDJhLCAweGZiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhmYiwgMHgxNiwgMHgyNywgMHhmYiwgMHg2LCAweDhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHhhYSwgMHgxZSwgMHhlLCAweGZiLCAweDFlLCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhkNSwgMHhmNywgMHg2NSwgMHg3NywgMHgxLCAweGY3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg3YiwgMHgzLCAweGY3LCAweDYxLCAweGZiLCAweDMzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHg2LCAweGY3LCAweGYsIDB4ZjgsIDB4ZTYsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NiwgMHg5YSwgMHhkNSwgMHg1LCAweGZiLCAweDUzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGY3LCAweDY1LCAweDUsIDB4MzMsIDB4NiwgMHg2MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NSwgMHhmYiwgMHg1NSwgMHg2LCAweDdjLCAweDQxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU1LCAweDYsIDB4ZSwgMHhmYiwgMHgxZSwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZDUsIDB4ZjcsIDB4ZjYsIDB4ZDgsIDB4ZjcsIDB4NGMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YmYsIDB4YTgsIDB4MTUsIDB4ZjcsIDB4NTMsIDB4NiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTAsIDB4NSwgMHhlMSwgMHg2LCAweGIwLCAweGY3LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDUwLCAweDYsIDB4OWIsIDB4ZDUsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NiwgMHhkNSwgMHhmNywgMHhmNiwgMHg1LCAweGY3LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDlkLCAweGQ4LCAweDUsIDB4ZmIsIDB4NTIsIDB4NiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGMsIDB4NSwgMHgzNSwgMHg2LCAweDY1LCAweGZiLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDUyLCAweDYsIDB4N2IsIDB4M2UsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NiwgMHg0MiwgMHhmYiwgMHhmNiwgMHg1LCAweGZiLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZjEsIDB4ZjgsIDB4MmYsIDB4YzIsIDB4ZjcsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDEsIDB4ZjcsIDB4M2QsIDB4YzEsIDB4ZjcsIDB4NTEsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4M2QsIDB4ZjgsIDB4YzMsIDB4MTUsIDB4MzgsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGRjLCAweGRkLCAweGNmLCAweGNjLCAweGRlLCAweGRjLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHgzNywgMHgzOCwgMHg0OSwgMHg0ZCwgMHgzOSwgMHgxZSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4MTUsIDB4YmUsIDB4YjUsIDB4YjIsIDB4YmYsIDB4YzAsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDU4LCAweDU3LCAweDYwLCAweDYxLCAweDU3LCAweDU4LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhiZiwgMHgxZSwgMHhlLCAweGFlLCAweGY4LCAweGYwLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweGY5LCAweGY5LCAweDU2LCAweDVkLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGYxLCAweDVkLCAweGEsIDB4ZSwgMHhmNywgMHhiMiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4ZjcsIDB4MTgsIDB4ZGQsIDB4ZjcsIDB4MWEsIDB4ZWQsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4ZjcsIDB4NjYsIDB4MTUsIDB4ZjgsIDB4NzYsIDB4NiwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4NSwgMHhmYywgMHg3NiwgMHg2LCAweGY3LCAweDdjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgxNSwgMHhmMCwgMHg2LCAweGI5LCAweGVkLCAweDUsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4NjEsIDB4ZmMsIDB4YjMsIDB4MTUsIDB4ZjEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZWMsIDB4NSwgMHgyNiwgMHg2LCAweGUsIDB4MmQsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEyLCAweDc2LCAweGY5LCAweDM1LCAweGQ0LCAweGIyLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDFhLCAweGU2LCAweGY3LCAweGMzLCAweGRlLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhjLCAweDgxLCAweDE1LCAweDc0LCAweDIyLCAweDUsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTAsIDB4ZWUsIDB4NSwgMHhmNywgMHg1ZSwgMHhkMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhlNSwgMHhmNywgMHgxMiwgMHhmYiwgMHhlLCAweGM5LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHgxZiwgMHhjMSwgMHhmNywgMHg4ZSwgMHg1LCAweGM2LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHg2ZiwgMHg4ZiwgMHgxZiwgMHhkZSwgMHg5MSwgMHg1LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHhmNywgMHgxZiwgMHgyOSwgMHgxZSwgMHg5NSwgMHhiYSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg2LCAweDgxLCAweDY0LCAweDUsIDB4ZmIsIDB4NTUsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgsIDB4M2EsIDB4ZmIsIDB4MTMsIDB4ZjcsIDB4NSwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NzYsIDB4MWYsIDB4NTAsIDB4ZmIsIDB4YTksIDB4NSwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4YjYsIDB4ZjQsIDB4ODMsIDB4MWYsIDB4MmUsIDB4ODYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4OTEsIDB4Y2EsIDB4ZmIsIDB4NiwgMHhmNywgMHgyLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHhmOCwgMHg0NiwgMHgxNSwgMHg2MiwgMHg5ZSwgMHg1NywgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4MWEsIDB4ZGEsIDB4ZDksIDB4YjgsIDB4Y2QsIDB4MWUsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGY1LCAweDE1LCAweGMyLCAweGY3LCAweDlkLCAweDUsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGM4LCAweDZlLCAweDNlLCAweDFhLCAweDQ0LCAweDRhLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHgxZSwgMHhlLCAweGFlLCAweGY4LCAweGYwLCAweGYxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhkLCAweGY4LCAweGYwLCAweDE1LCAweGU3LCAweDYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweDUsIDB4MmUsIDB4NiwgMHhlLCAweDc3LCAweDQzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweGY3LCAweDViLCAweDMsIDB4ZWEsIDB4MTYsIDB4ZTQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHhmOCwgMHg5ZiwgMHgzZSwgMHhhLCAweDdjLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0OSwgMHhkMCwgMHhmNywgMHgzMywgMHhkMSwgMHgxLCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhmNywgMHhjZiwgMHhlMiwgMHgzLCAweGY3LCAweDQ0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHgxNSwgMHhmOCwgMHgxZiwgMHg2LCAweDhlLCAweDlmLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhiMywgMHgxYSwgMHhlNiwgMHg1YywgMHhmNywgMHgxMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4ZmIsIDB4NWEsIDB4MzYsIDB4ZmIsIDB4NTUsIDB4ZmIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI3LCAweGU4LCAweDNkLCAweGY3LCAweDgsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGY3LCAweDIsIDB4ZDQsIDB4YTEsIDB4MWUsIDB4MzIsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MmEsIDB4NjEsIDB4MzksIDB4NzYsIDB4NjQsIDB4MWIsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweGQ1LCAweGY2LCAweDlhLCAweDFmLCAweDk5LCAweGQwLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhhMCwgMHhjMCwgMHhlNywgMHhmNCwgMHgxYiwgMHhkMywgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4MmIsIDB4ODIsIDB4MWYsIDB4ZSwgMHg3YywgMHhkNSwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTAsIDB4Y2YsIDB4ZDEsIDB4ZjgsIDB4M2IsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4ZTcsIDB4MywgMHhmNywgMHhkNywgMHhmOCwgMHhlNywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4NiwgMHhmNywgMHgxZCwgMHg2ZiwgMHhhLCAweGZiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4ODYsIDB4ZmMsIDB4ODEsIDB4MjUsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhkNSwgMHhmNywgMHg0YSwgMHhkMSwgMHhmNywgMHhiMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MSwgMHhkZiwgMHhlNiwgMHhmNywgMHhkMCwgMHhlMiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YywgMHhmOCwgMHhlNywgMHgxNSwgMHhlOSwgMHg2LCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhiNCwgMHgzMSwgMHg1LCAweGRiLCAweDYsIDB4NGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDQ3LCAweGEsIDB4ZmIsIDB4NjEsIDB4ZmMsIDB4ODEsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHg3YywgMHhkNCwgMHhmNywgMHg0OCwgMHhjZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4ZjAsIDB4MSwgMHhkZiwgMHhlNiwgMHgzLCAweGY4LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmMSwgMHg2MywgMHhhLCAweGZiLCAweDY0LCAweDI2LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDEsIDB4ZmMsIDB4NjUsIDB4MjUsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhkNSwgMHhmNywgMHg0YSwgMHhkMSwgMHhmNywgMHhiMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MSwgMHhkZiwgMHhlNiwgMHgzLCAweGY3LCAweDQ1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgyNSwgMHhhLCAweDI5LCAweGY3LCAweGIxLCAweDE1LCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDUwLCAweGY3LCAweDFlLCAweDUsIDB4ZmIsIDB4MywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDc4LCAweGQwLCAweGY3LCAweGJiLCAweGNiLCAweGY3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHgxLCAweGQ1LCAweGViLCAweGY3LCAweGVlLCAweGU2LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgzLCAweGY4LCAweDE1LCAweDE1LCAweGZiLCAweDMxLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHhmYiwgMHgyYSwgMHg2YywgMHgxYSwgMHgyMywgMHhlMCwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4M2UsIDB4ZjIsIDB4ZjcsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhlOSwgMHg0ZCwgMHhiNCwgMHg2YiwgMHg5ZCwgMHgxZSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YzgsIDB4Y2MsIDB4ZDMsIDB4MWEsIDB4Y2EsIDB4NWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZmIsIDB4M2YsIDB4ZmIsIDB4MzksIDB4NDQsIDB4ZmIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4NzgsIDB4OGQsIDB4NGMsIDB4ZGYsIDB4NjEsIDB4MWUsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcxLCAweDE1LCAweGU3LCAweGNmLCAweGU0LCAweGY2LCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHg1NSwgMHg0NiwgMHg0MCwgMHg0ZiwgMHgyYSwgMHgyMCwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4YmMsIDB4Y2MsIDB4MWUsIDB4ZDgsIDB4ZjcsIDB4ZWQsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGIyLCAweGQxLCAweGYyLCAweGQ0LCAweGMxLCAweDVkLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg1ZiwgMHg0YSwgMHgyMywgMHg0MywgMHg1YSwgMHhiMCwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHhmOSwgMHg1MiwgMHg4YiwgMHhmNSwgMHgxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHgxNiwgMHg0YiwgMHhhLCAweGY3LCAweGNmLCAweDIxLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhhLCAweGZkLCAweDQ5LCAweDIxLCAweDE1LCAweDRiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjksIDB4NTIsIDB4NjQsIDB4YSwgMHhmYSwgMHg4YywgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmUsIDB4OGMsIDB4NiwgMHhlLCAweDY0LCAweGEsIDB4ZjgsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGZjLCAweGQwLCAweDYsIDB4ZSwgMHhmNywgMHhiMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhkYywgMHhmNywgMHg4LCAweGQ5LCAweDEsIDB4YjUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDMsIDB4Y2EsIDB4ZjcsIDB4Y2UsIDB4MTUsIDB4ZjgsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGZjLCAweGM5LCAweDYsIDB4ZmIsIDB4YTcsIDB4NCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4ZGEsIDB4ZmMsIDB4YzksIDB4NiwgMHhlLCAweDgxLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY4LCAweDhlLCAweGYwLCAweDMsIDB4ZjcsIDB4ZjAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDE1LCAweGY3LCAweDAsIDB4YjksIDB4YTUsIDB4NWUsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDk0LCAweDU5LCAweDE5LCAweDg5LCAweDg5LCAweDUsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDYxLCAweGFlLCAweDM2LCAweDFiLCAweGZiLCAweDJhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmYiwgMHgyOSwgMHhmYiwgMHg0NywgMHhmYiwgMHg3LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhmNywgMHgzMiwgMHhmNywgMHg4YywgMHhjNiwgMHhmNywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OCwgMHhmNywgMHgzOCwgMHg1MywgMHhlNCwgMHg2ZCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZGQsIDB4YWUsIDB4NzMsIDB4YmQsIDB4MmUsIDB4NjUsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDc4LCAweDllLCAweDdhLCAweDk5LCAweDE5LCAweDI4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDczLCAweDkwLCAweDg1LCAweGFkLCAweDYyLCAweDI4LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhmYiwgMHgyNiwgMHhmYywgMHgzNywgMHgxNSwgMHhlYSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzMsIDB4ZjcsIDB4MjYsIDB4Y2IsIDB4ZDMsIDB4NjgsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDRmLCAweGZiLCAweDNmLCAweGZiLCAweDI0LCAweGZiLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGRmLCAweGM4LCAweDFlLCAweGUsIDB4NzcsIDB4OGIsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDc3LCAweGY4LCAweGJkLCAweDc3LCAweDEsIDB4ZTUsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweDYsIDB4YTAsIDB4ZWYsIDB4NDcsIDB4YSwgMHhiMCwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YzIsIDB4NiwgMHhmMywgMHhmOCwgMHg0LCAweGFjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg1LCAweDIwLCAweDYsIDB4NmMsIDB4ZmIsIDB4MzksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhhZSwgMHhmYiwgMHg0MiwgMHg3NiwgMHhmOCwgMHhhZiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4ZWQsIDB4MSwgMHhkOCwgMHhmNywgMHg4ZCwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhmOCwgMHgzZCwgMHgxNSwgMHhlZiwgMHg2LCAweGEwLCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhhLCAweGZiLCAweDgsIDB4ZmMsIDB4YzAsIDB4MTUsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM2LCAweDUsIDB4ZjYsIDB4NiwgMHhhYiwgMHhmNywgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4ZjgsIDB4ZCwgMHg1LCAweDU0LCAweDYsIDB4ZSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4YSwgMHhmNSwgMHhmNywgMHhkZSwgMHgzLCAweGUxLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHg2LCAweGUwLCAweGY4LCAweDU2LCAweDUsIDB4ZTUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4Y2YsIDB4M2YsIDB4YSwgMHhmMCwgMHg5ZiwgMHg5MSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MWIsIDB4YTcsIDB4YTgsIDB4ODIsIDB4ODgsIDB4OTgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGQ4LCAweDUsIDB4OGYsIDB4NzksIDB4NjIsIDB4OTUsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDI1LCAweDgwLCAweDM2LCAweDQ2LCAweDdhLCAweDFmLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg1LCAweDQzLCAweDYsIDB4N2YsIDB4NDcsIDB4NSwgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweGY3LCAweDVlLCAweDNhLCAweGEsIDB4ZTEsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweDQ2LCAweGEsIDB4YTEsIDB4OGYsIDB4YTksIDB4YmEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGFlLCAweDgyLCAweDg4LCAweDk5LCAweDFmLCAweDliLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDhmLCAweDc3LCAweDYyLCAweDk1LCAweDY4LCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDdhLCAweDM2LCAweDQ2LCAweDc4LCAweDFmLCAweDdlLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDNiLCAweDYsIDB4N2MsIDB4NDcsIDB4NSwgMHhkYywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNiwgMHhmYywgMHg1NiwgMHgxNSwgMHhlNSwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY4LCAweDlhLCAweDNmLCAweGEsIDB4OWYsIDB4ZTksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweDYsIDB4YTEsIDB4ZjMsIDB4M2UsIDB4YSwgMHg3OCwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZWYsIDB4ZDksIDB4ZjcsIDB4MmQsIDB4ZGIsIDB4MSwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4ZjcsIDB4YjcsIDB4ZWIsIDB4MywgMHhjZSwgMHhmNywgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MjMsIDB4ZDQsIDB4ZmIsIDB4MiwgMHhmNywgMHgyZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4ZjcsIDB4MTAsIDB4ZjcsIDB4ZCwgMHhmNywgMHgzNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZmIsIDB4YSwgMHhjNSwgMHgzNCwgMHg0MSwgMHg2MSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4NzMsIDB4MWUsIDB4YzYsIDB4ZjcsIDB4NDcsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4NiwgMHg5ZSwgMHhkYiwgMHg1LCAweGZjLCAweDEyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDksIDB4ZmIsIDB4ZmUsIDB4ZGYsIDB4ODQsIDB4NSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YmMsIDB4YzIsIDB4ZGYsIDB4MWIsIDB4ZTcsIDB4YmIsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDIzLCAweDM0LCAweGZiLCAweDMsIDB4MjAsIDB4NTAsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGY3LCAweDEsIDB4OTMsIDB4MWYsIDB4ZSwgMHhmNywgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4YSwgMHhlMSwgMHgxNiwgMHhlNCwgMHg0NiwgMHhhLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHhhOSwgMHhiYSwgMHgxYiwgMHhhYSwgMHhhYywgMHg4MiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4MWYsIDB4OWIsIDB4ZDgsIDB4NSwgMHg4ZiwgMHg3NywgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4NjgsIDB4MWIsIDB4ZmIsIDB4NSwgMHg3OCwgMHgzNywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4MWYsIDB4N2UsIDB4NTIsIDB4NSwgMHgzYSwgMHg2LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHg1LCAweGRjLCAweDYsIDB4ZjcsIDB4MzUsIDB4ZmMsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGU1LCAweDYsIDB4ZjcsIDB4MmMsIDB4ZjksIDB4NjAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4NiwgMHhlLCAweGZiLCAweDYzLCAweGQ5LCAweGY4LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmNywgMHgxNywgMHhkZSwgMHgxLCAweDc3LCAweGZiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDZiLCAweDNlLCAweDUsIDB4N2YsIDB4YzcsIDB4YjIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDFiLCAweGRiLCAweGNhLCAweGRjLCAweGU0LCAweGFlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZCwgMHhmOCwgMHg3ZSwgMHg1LCAweGYwLCAweDYsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDUsIDB4MjUsIDB4NiwgMHhmMywgMHhiNiwgMHg5OCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4MWIsIDB4YTAsIDB4OWMsIDB4ODcsIDB4ODIsIDB4YWUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGQ4LCAweDUsIDB4OTUsIDB4NmEsIDB4NmQsIDB4OTQsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDYsIDB4NjcsIDB4MjcsIDB4ZmIsIDB4NiwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MjcsIDB4NiwgMHg3MSwgMHg0NSwgMHg1LCAweGVlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ4LCAweGZjLCAweDdkLCAweDUsIDB4NjQsIDB4N2IsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDYwLCAweDFiLCAweDdiLCAweDc2LCAweDhlLCAweDkzLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweGEwLCAweDc2LCAweGY3LCAweDQ4LCAweGQ5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhmNywgMHgyZSwgMHgxLCAweGNiLCAweGY3LCAweDQ4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkMCwgMHg2LCAweDYyLCAweGZiLCAweDQ4LCAweDUsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjUsIDB4ZjcsIDB4NDgsIDB4NSwgMHhmNywgMHgxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGQ5LCAweDUsIDB4ZmIsIDB4MiwgMHg2LCAweGYxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHg1LCAweDNkLCAweDYsIDB4ZmMsIDB4NDYsIDB4ZmMsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZTgsIDB4ODMsIDB4MTUsIDB4ZjcsIDB4YjIsIDB4ZjcsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDg5LCAweDQ4LCAweGZiLCAweGI3LCAweDUsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4OGQsIDB4NzYsIDB4ZjksIDB4NjYsIDB4NzcsIDB4MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4ZjksIDB4MjAsIDB4MywgMHgyMywgMHg3OCwgMHgxNSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4ZjksIDB4NjYsIDB4NSwgMHg0MywgMHg2LCAweGZjLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHg2NiwgMHg1LCAweGUsIDB4ZmIsIDB4NzAsIDB4ZDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGQ1LCAweGY4LCAweDIxLCAweGQ1LCAweDdmLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkMCwgMHhiNSwgMHg1NCwgMHgxNSwgMHhmYiwgMHgzMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4ODIsIDB4YzAsIDB4ZjcsIDB4NTcsIDB4YWMsIDB4ZjcsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDliLCAweDFlLCAweGY3LCAweDEsIDB4ZjgsIDB4OTgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4NiwgMHg3YiwgMHgzMywgMHg0ZSwgMHhhLCAweDEzLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHg1YywgMHg0NywgMHg5YSwgMHg1YywgMHgxYiwgMHhmYiwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZSwgMHhmYiwgMHgyNiwgMHhmYiwgMHgzMywgMHhmYiwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4MzIsIDB4ZjQsIDB4YjUsIDB4YmYsIDB4OTgsIDB4YzQsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDgyLCAweDU2LCAweDUsIDB4MmUsIDB4N2EsIDB4NjEsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDFiLCAweDI1LCAweDgxLCAweGI5LCAweGFmLCAweDFmLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiZCwgMHgxNSwgMHhkMiwgMHhjMiwgMHhmNywgMHgzNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhkOSwgMHhiZCwgMHg0YiwgMHgzZCwgMHgyNywgMHg0YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4ZmIsIDB4MTIsIDB4MzEsIDB4NzEsIDB4ZTYsIDB4ZDYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4Y2QsIDB4N2MsIDB4ZDMsIDB4NjQsIDB4NzYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGNmLCAweDEyLCAweGY4LCAweGI4LCAweGVmLCAweDEzLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHg4OCwgMHgxNSwgMHhlZSwgMHg2LCAweGY3LCAweDYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDUsIDB4ZTUsIDB4YTAsIDB4YmIsIDB4ZDgsIDB4ZjYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDgxLCAweDJhLCAweDVhLCAweDYxLCAweDFmLCAweDUzLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg2MiwgMHg2NSwgMHgxYSwgMHg2NiwgMHhhNywgMHg2OCwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4MWUsIDB4YzAsIDB4NWMsIDB4OWMsIDB4NzksIDB4NmYsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGIwLCAweDVkLCAweDU2LCAweDU2LCAweDRiLCAweDRlLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhhNiwgMHg3YywgMHgxZSwgMHgzOCwgMHg2MiwgMHg1LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhkNywgMHg4MCwgMHhiYSwgMHgxYiwgMHhmNywgMHg4LCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHhlNywgMHhjMSwgMHg2ZSwgMHhhNSwgMHg0YSwgMHhjOCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4YjQsIDB4NzksIDB4YTIsIDB4YTIsIDB4MWEsIDB4YTIsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGIzLCAweGI5LCAweDFlLCAweGVjLCAweGRmLCAweDdmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhmYiwgMHg0NiwgMHgxYiwgMHhmYiwgMHgzZCwgMHgzYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmYiwgMHgxMiwgMHg2ZCwgMHgxZiwgMHhlLCAweDUzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDlmLCAweGY4LCAweGU1LCAweDU2LCAweGEsIDB4NmQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MSwgMHg2LCAweGUsIDB4ZjcsIDB4YjIsIDB4YmMsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDYwLCAweDc3LCAweDEsIDB4ZjcsIDB4MTYsIDB4ZjgsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4YywgMHg5NiwgMHgxNSwgMHhmOCwgMHg3MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4NSwgMHhkZSwgMHg3LCAweGZjLCAweDcxLCAweGY3LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDM0LCAweDcsIDB4ZjgsIDB4MCwgMHhmYiwgMHgyZiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhmYiwgMHgyZiwgMHg1LCAweGUsIDB4NDksIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZjcsIDB4MTcsIDB4MTUsIDB4YzYsIDB4NiwgMHg0NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4ZjcsIDB4MzEsIDB4ZjcsIDB4NWQsIDB4NSwgMHg0YSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzZiwgMHhmYiwgMHg1ZCwgMHg1LCAweDM5LCAweGZiLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjNywgMHg2LCAweDQ1LCAweGY3LCAweDY0LCAweGY3LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1ZCwgMHg1LCAweDRiLCAweDYsIDB4ZmIsIDB4NDAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDUsIDB4ZSwgMHg0OSwgMHhhLCAweGY3LCAweGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDE1LCAweGNjLCAweDYsIDB4ZjcsIDB4M2YsIDB4ZjcsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGY3LCAweDY0LCAweDUsIDB4NTEsIDB4NiwgMHhkMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NSwgMHg5YSwgMHhmYiwgMHg1ZCwgMHgxNSwgMHhjYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHhmNywgMHg1ZCwgMHgzMSwgMHhmNywgMHg2NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg2LCAweGQwLCAweGZiLCAweDY0LCAweDUsIDB4ZSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4YSwgMHhmNywgMHg3NSwgMHhmNywgMHgxNywgMHgxNSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg0YywgMHhmNywgMHg2MCwgMHhmNywgMHgyMiwgMHhmNywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1MSwgMHg2LCAweGZiLCAweDJmLCAweGZiLCAweDYxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YWUsIDB4ZjcsIDB4MmIsIDB4NzYsIDB4ZjgsIDB4MjksIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4OSwgMHhmNywgMHgxNiwgMHgxNSwgMHhjNSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZiwgMHhmNywgMHg1NSwgMHgzOSwgMHhmNywgMHg2OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg2LCAweGM4LCAweGZiLCAweDY4LCAweDUsIDB4ZSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4NWYsIDB4ZDMsIDB4ZjcsIDB4NGYsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4MTYsIDB4ZTcsIDB4NiwgMHhiYSwgMHhmNywgMHg3MywgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4OWMsIDB4ZDYsIDB4YWQsIDB4YjgsIDB4MTksIDB4YjQsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGFjLCAweGNjLCAweDFiLCAweGViLCAweDcxLCAweDJmLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHgxZiwgMHg0NywgMHhmYiwgMHhjNywgMHg1LCAweGU3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGY3LCAweGM3LCAweDUsIDB4OTEsIDB4YWMsIDB4OTEsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDFhLCAweGNjLCAweDZjLCAweGMzLCAweDIyLCAweDM0LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg2OSwgMHg2NSwgMHgxZSwgMHhjNSwgMHhmNywgMHhhNiwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg1MywgMHhhLCAweGY3LCAweDMxLCAweGY4LCAweGU1LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGRkLCAweGZiLCAweDIxLCAweDRmLCAweGEsIDB4ZSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2MsIDB4ZTUsIDB4MSwgMHhlOCwgMHhmNywgMHg5YywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhmNywgMHg3YywgMHgxNSwgMHhmNywgMHg4YiwgMHg2LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHg1LCAweGZiLCAweDhiLCAweDYsIDB4ZSwgMHgzZiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4OTksIDB4NzcsIDB4ZjcsIDB4ZSwgMHhlZSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHgxNiwgMHhlNCwgMHg2LCAweGY3LCAweDIsIDB4ZjgsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGEsIDB4YTAsIDB4ZjEsIDB4MTUsIDB4ZTUsIDB4NiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4M2UsIDB4YSwgMHg1MiwgMHhhLCAweGY3LCAweDc3LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDQ1LCAweGY4LCAweGU4LCAweDZlLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGY3LCAweDFlLCAweDUsIDB4ZmIsIDB4MWUsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4ZmQsIDB4NzIsIDB4MTUsIDB4MzgsIDB4YSwgMHhlLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGU0LCAweGY3LCAweDFlLCAweDEsIDB4ZjcsIDB4MiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4MTUsIDB4ZWEsIDB4NiwgMHhkZiwgMHhlNCwgMHhiMywgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkZCwgMHg2LCAweDRiLCAweGY3LCAweDFlLCAweDUsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4MmIsIDB4ZmQsIDB4NzIsIDB4MTUsIDB4MzgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1YywgMHhhLCAweGY4LCAweGYxLCAweGYwLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGY4LCAweGYxLCAweDZlLCAweGEsIDB4YTAsIDB4ZjAsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NWMsIDB4MjYsIDB4NmUsIDB4YSwgMHhhMCwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4YSwgMHg1OCwgMHhmZCwgMHg1NiwgMHgxNSwgMHgzOCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDUyLCAweGEsIDB4ZjcsIDB4NzcsIDB4NzcsIDB4MSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MzgsIDB4YSwgMHhiOCwgMHhkMCwgMHgxNSwgMHhjZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhmNywgMHgxZSwgMHg1LCAweDI1LCAweDYsIDB4ZSwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTEsIDB4NzYsIDB4ZjksIDB4NmIsIDB4NzcsIDB4ZjcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4MSwgMHg1ZCwgMHhmYiwgMHhkLCAweDE1LCAweDdkLCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDdlLCAweGJhLCAweGE1LCAweDhiLCAweDkyLCAweDFiLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhmNywgMHgxMCwgMHhkZiwgMHg5YywgMHgxZiwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg5YiwgMHg1LCAweDM2LCAweDYsIDB4MjQsIDB4ZmMsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweGZiLCAweDExLCAweDc4LCAweDdhLCAweDM4LCAweGEyLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZCwgMHhmOSwgMHg3OCwgMHgxNSwgMHhlMCwgMHg2LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg1LCAweDM2LCAweDYsIDB4ZSwgMHhmNywgMHg1ZSwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhjZSwgMHgxNiwgMHhlNSwgMHg2LCAweGIxLCAweGY3LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweGU5LCAweGY0LCAweGZiLCAweGEwLCAweDUsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4MWUsIDB4ZjcsIDB4ZGIsIDB4ZjcsIDB4NzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDUsIDB4ZmIsIDB4YywgMHg2LCAweGZiLCAweDlhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4OSwgMHg4ZCwgMHhlYSwgMHhmOCwgMHg0ZSwgMHgzZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHgyZCwgMHhhLCAweGNlLCAweDE2LCAweGU1LCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGY5LCAweDYyLCAweDUsIDB4MzIsIDB4NiwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhhYiwgMHg3NiwgMHhmOCwgMHg3OCwgMHg3NywgMHgxLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2OCwgMHgxNSwgMHhmOCwgMHg3MSwgMHhmYiwgMHg1ZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHg3LCAweGZjLCAweDAsIDB4ZjcsIDB4MmYsIDB4ZjgsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmYsIDB4NSwgMHhlMiwgMHg3LCAweGZjLCAweDcxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg1LCAweGUsIDB4ZjcsIDB4YjIsIDB4ZjcsIDB4MTUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYwLCAweGQ5LCAweDEsIDB4ZjUsIDB4ZjcsIDB4Y2MsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDNiLCAweDYsIDB4NWIsIDB4ZmIsIDB4NjAsIDB4NSwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjYywgMHhmNywgMHhhZSwgMHg1LCAweGZjLCAweDhkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4M2YsIDB4MmQsIDB4YSwgMHhjMCwgMHgxNiwgMHhmMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhmNywgMHhmYiwgMHhlNCwgMHhiNCwgMHg5ZCwgMHhkOCwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4Y2YsIDB4ZjcsIDB4YWYsIDB4NSwgMHgyNiwgMHg2LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlNCwgMHgzNCwgMHg2NCwgMHg3YSwgMHgzZSwgMHhlMCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweGY4LCAweGFiLCAweDYwLCAweGEsIDB4MTMsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDE2LCAweGU1LCAweDYsIDB4YmYsIDB4ZjcsIDB4OGQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4OWUsIDB4YmMsIDB4ZjcsIDB4MTYsIDB4ZjcsIDB4ZSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4ODMsIDB4NDIsIDB4NTYsIDB4N2YsIDB4MWYsIDB4NDEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweDUsIDB4ZTQsIDB4NiwgMHhjMSwgMHhmNywgMHg5NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHg5OCwgMHhiNiwgMHhmNywgMHgyNywgMHhmNywgMHgxNiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4OTEsIDB4NTIsIDB4NDYsIDB4N2QsIDB4MWYsIDB4NDEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweDUsIDB4ZTQsIDB4NiwgMHhkMywgMHhmNywgMHhlNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhhMywgMHg4ZCwgMHhhMCwgMHg5ZiwgMHgxYSwgMHgxMywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4NWQsIDB4YzEsIDB4MzgsIDB4NmMsIDB4NDIsIDB4ODMsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDFlLCAweGRmLCAweDc4LCAweDQ5LCAweDk5LCAweDYyLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHg1OSwgMHg1NSwgMHg2MSwgMHg2MywgMHgxZiwgMHgxMywgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ZGYsIDB4NSwgMHgzMiwgMHg2LCAweGUsIDB4YWUsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YzQsIDB4MSwgMHhmNywgMHgyMywgMHhmOSwgMHg3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjYSwgMHg2LCAweDlhLCAweGM0LCAweDUsIDB4ZmIsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhmNywgMHhiMiwgMHhmNywgMHg2YywgMHhkNCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhmNywgMHg2YywgMHgxNSwgMHhmOCwgMHg2ZSwgMHg2LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg1LCAweGZjLCAweDZlLCAweDYsIDB4ZSwgMHhmYiwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4NWYsIDB4Y2IsIDB4NTQsIDB4NzYsIDB4ZjgsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweDEzLCAweGIwLCAweGY3LCAweDM5LCAweGI5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg5ZCwgMHhhYywgMHg2MiwgMHhjZSwgMHgxYiwgMHhjYywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4YTAsIDB4YTIsIDB4MWYsIDB4OGQsIDB4ODksIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4ODMsIDB4NjMsIDB4NSwgMHhkZSwgMHg2LCAweGY3LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGEzLCAweDUsIDB4MzIsIDB4NiwgMHg0ZiwgMHhmYiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzNywgMHg3OCwgMHg2OCwgMHgyYSwgMHgyMywgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4ZCwgMHhlMywgMHhlOCwgMHhhMCwgMHgxZiwgMHg4YywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4YTQsIDB4YzAsIDB4ZjcsIDB4OGYsIDB4OCwgMHgzMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZCwgMHhmZCwgMHg2ZSwgMHg1LCAweGUyLCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjIsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4OGUsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4ZDIsIDB4MTUsIDB4YzIsIDB4NDQsIDB4ZjcsIDB4ODEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGY3LCAweDIyLCAweGZiLCAweDUyLCAweGQ4LCAweGNlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhmNywgMHg1MSwgMHhmNywgMHg3MywgMHhmNywgMHg0NywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4ZmIsIDB4NzQsIDB4ZmIsIDB4NDYsIDB4ZmIsIDB4MjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweDNlLCAweDRlLCAweGY3LCAweDIzLCAweGZiLCAweDQ4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NjAsIDB4YSwgMHgxMywgMHhhMCwgMHhjYywgMHgxNiwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiZiwgMHhmNywgMHg4OSwgMHg1LCAweGQ1LCAweDlhLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNiwgMHhmNywgMHgxOCwgMHgxYiwgMHhkOSwgMHg4YiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4N2IsIDB4MWYsIDB4NDMsIDB4ZmIsIDB4ZDMsIDB4NSwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjZiwgMHhmNywgMHhkMywgMHg1LCAweDkwLCAweGExLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg5ZSwgMHgxYSwgMHhlNCwgMHg1ZSwgMHhjZiwgMHgzMSwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4NDQsIDB4NmEsIDB4NmMsIDB4MWUsIDB4ODksIDB4OGQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YzAsIDB4OWYsIDB4ZTUsIDB4NSwgMHgzOCwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGQ0LCAweDQyLCAweGY3LCAweDQ3LCAweGY4LCAweDZlLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDksIDB4ZTYsIDB4ZjcsIDB4YTksIDB4ZWMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4ZjcsIDB4MzAsIDB4MTUsIDB4MzUsIDB4OTMsIDB4YmMsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE3LCAweDFiLCAweGY3LCAweDk3LCAweGRiLCAweGY3LCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNCwgMHhmNywgMHg0ZSwgMHhmYiwgMHgxMiwgMHhiNCwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzAsIDB4ZmIsIDB4MSwgMHhmYiwgMHgxYSwgMHhmYiwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWIsIDB4ZWIsIDB4NDgsIDB4ZjcsIDB4MCwgMHhkOSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4OWYsIDB4YTMsIDB4MWYsIDB4OGQsIDB4ODksIDB4NSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NGMsIDB4ZmIsIDB4NTQsIDB4ZmIsIDB4MTgsIDB4MWIsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGJjLCAweGM4LCAweDgyLCAweDFmLCAweGIwLCAweGY3LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlZSwgMHhkZiwgMHhmNywgMHgzLCAweGUzLCAweGY0LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHg0NSwgMHhmYiwgMHhlLCAweDMzLCAweDRiLCAweDM3LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhjMCwgMHhkYiwgMHgxZSwgMHhlLCAweGEwLCAweDc2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhjZCwgMHg4ZSwgMHg3NywgMHgxMiwgMHhjYywgMHhmOCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4Y2MsIDB4MTYsIDB4ZTgsIDB4NiwgMHhiZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4NSwgMHhmNywgMHhmLCAweGE3LCAweGUzLCAweGViLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhkMywgMHg5MCwgMHgzZCwgMHg0OCwgMHg3YywgMHgxZiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZDIsIDB4NSwgMHhlOSwgMHg2LCAweGNmLCAweGY3LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDkxLCAweGE1LCAweDhkLCAweGE0LCAweGEyLCAweDFhLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHhjNiwgMHgzNCwgMHgyZCwgMHg0NCwgMHg0NCwgMHg2YiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODksIDB4OGQsIDB4OWYsIDB4ZTQsIDB4NSwgMHgzNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhlMywgMHgxNSwgMHhjYiwgMHg2NiwgMHhhLCAweGE1LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhhMiwgMHg4MCwgMHg4MCwgMHhhMSwgMHgxZiwgMHg4MSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4ODEsIDB4YTMsIDB4MWIsIDB4YzgsIDB4YWUsIDB4YzEsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDFmLCAweDRkLCAweDYsIDB4N2QsIDB4ODYsIDB4ODUsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDFiLCAweDdkLCAweDc1LCAweDk0LCAweDk1LCAweDczLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhhMCwgMHg5NiwgMHg3MCwgMHg2ZSwgMHg5NiwgMHg3MCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4NzksIDB4NTcsIDB4NTEsIDB4N2IsIDB4MWYsIDB4ZSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4NjksIDB4ZDUsIDB4ZjcsIDB4NTUsIDB4ZDQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDc3LCAweDEsIDB4ZjcsIDB4NywgMHg2NiwgMHgxNSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiNywgMHhmNywgMHg2OSwgMHg1LCAweGY3LCAweDM0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGZiLCAweDY5LCAweDUsIDB4ZDgsIDB4NiwgMHhiNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NSwgMHhmNywgMHgzMiwgMHhkNSwgMHhmYiwgMHgyMywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhmNywgMHg1NSwgMHg1LCAweGY0LCAweGQ0LCAweDMxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDU4LCAweGEsIDB4ZmIsIDB4MzMsIDB4NiwgMHhiNiwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgyZSwgMHg0MiwgMHhmNywgMHgyMCwgMHg2LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1NSwgMHg1LCAweDI2LCAweDQxLCAweGUyLCAweDYsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDE1LCAweGIxLCAweGY3LCAweDU1LCAweDUsIDB4ZjcsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NjQsIDB4ZmIsIDB4NTUsIDB4NSwgMHhlLCAweDdkLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzMCwgMHhkMSwgMHgxLCAweGVkLCAweGU1LCAweGY3LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHgzLCAweGRlLCAweGY3LCAweDY3LCAweDE1LCAweGZiLCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHgzYSwgMHhmNywgMHg2LCAweGY3LCAweDMwLCAweGY3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYiwgMHhmNywgMHg1YSwgMHhmNywgMHgxZiwgMHgzMywgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4ZmIsIDB4NGMsIDB4MjMsIDB4ZmIsIDB4MjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDFlLCAweGU1LCAweDE2LCAweGY3LCAweDUsIDB4Y2IsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGY3LCAweDE3LCAweGUxLCAweGI0LCAweDQ4LCAweDNhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDQzLCAweGZiLCAweDJiLCAweGZiLCAweGYsIDB4NmUsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGY3LCAweDIyLCAweDFlLCAweGUsIDB4N2QsIDB4ZDEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDc3LCAweDEsIDB4ZTgsIDB4ZTUsIDB4ZjcsIDB4YzIsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4ZDMsIDB4ZjgsIDB4ZTcsIDB4MTUsIDB4ZDYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4NmYsIDB4YSwgMHhmYiwgMHg3LCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDI5LCAweGEsIDB4N2QsIDB4ZDEsIDB4ZjgsIDB4YWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEsIDB4ZTgsIDB4ZTUsIDB4ZjcsIDB4YmQsIDB4ZTUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGMsIDB4ZjgsIDB4ZTcsIDB4MTUsIDB4ZTgsIDB4NiwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4YjMsIDB4MzEsIDB4NSwgMHhkYiwgMHg2LCAweDRkLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDI4LCAweDYsIDB4ZmIsIDB4YmUsIDB4MjksIDB4YSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4ZjgsIDB4YmEsIDB4ZjAsIDB4MSwgMHhlOCwgMHhlNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZTUsIDB4MywgMHhkZSwgMHhmNywgMHg2NCwgMHgyNCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNywgMHhmOCwgMHgyMSwgMHgxNSwgMHhlOSwgMHg2LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHg0ZCwgMHhhLCAweGZiLCAweDYxLCAweDI2LCAweDE1LCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGEwLCAweGYwLCAweDUsIDB4MmQsIDB4NiwgMHhlLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg3YywgMHhkNCwgMHg0MiwgMHhmNywgMHg0ZiwgMHhjZCwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzYsIDB4ZDAsIDB4MSwgMHhkZSwgMHhlNCwgMHhmOSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4MywgMHhmOCwgMHg4YiwgMHhlMywgMHgxNSwgMHg0MCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4NmYsIDB4ZDMsIDB4MWIsIDB4ZjcsIDB4MTEsIDB4ZTEsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweGIwLCAweDFmLCAweDJkLCAweDk0LCAweDUsIDB4NjEsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDNlLCAweDNiLCAweDFiLCAweGZiLCAweDIsIDB4N2QsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YzUsIDB4OTMsIDB4MWYsIDB4ZjgsIDB4MTYsIDB4NiwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OTAsIDB4YjEsIDB4YTQsIDB4MWEsIDB4ZjcsIDB4MTMsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGZiLCAweDE0LCAweGZiLCAweDAsIDB4NTMsIDB4NTIsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDFlLCAweGVlLCAweDUzLCAweGZiLCAweDAsIDB4OGIsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDUyLCAweDJmLCAweGZiLCAweDQzLCAweGZiLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMiwgMHhmMSwgMHg0ZCwgMHhmNywgMHgwLCAweGY3LCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweGQxLCAweGFjLCAweGE4LCAweDFmLCAweGZiLCAweGRmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDE1LCAweGRkLCAweGJiLCAweGY3LCAweDRhLCAweGY3LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhhNywgMHgzMiwgMHg1NiwgMHhmYiwgMHgxLCAweDRiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhmYiwgMHgxNywgMHhmYiwgMHhlLCAweDhiLCAweGY3LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDFlLCAweGY4LCAweDJmLCAweGYxLCAweDE1LCAweGY3LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhkYiwgMHhhYSwgMHhiYywgMHgxYiwgMHhhMCwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhmYiwgMHgzMiwgMHg3ZCwgMHgxZiwgMHhlLCAweGFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg3NiwgMHhmNywgMHg3NSwgMHg3NywgMHgxLCAweGI2LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGRhLCAweDE2LCAweDc1LCAweDVkLCAweDdkLCAweDVhLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2ZSwgMHg5MywgMHg0ZCwgMHhkYiwgMHhiYiwgMHhiMiwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OWUsIDB4MWUsIDB4OTcsIDB4YzcsIDB4NSwgMHg3YywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4ODMsIDB4NzQsIDB4MWIsIDB4ODEsIDB4NWMsIDB4OTEsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGExLCAweGJkLCAweDkxLCAweDlhLCAweDFmLCAweGUsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDEsIDB4ZjIsIDB4ZTUsIDB4ZjcsIDB4YjgsIDB4ZTUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MWMsIDB4ZjgsIDB4ZTcsIDB4NTYsIDB4YSwgMHg2ZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxLCAweDYsIDB4ZmIsIDB4NjgsIDB4MjksIDB4YSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4YTQsIDB4ZjcsIDB4NDMsIDB4MSwgMHhmNywgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzEsIDB4MywgMHhmNywgMHhiNywgMHgxNiwgMHhkYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZCwgMHhmOSwgMHg1MywgMHg1LCAweDVjLCAweDYsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweGZiLCAweDE4LCAweDQwLCAweDUxLCAweDcyLCAweDdjLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhiZCwgMHg5OSwgMHhkZCwgMHhhOSwgMHhiZiwgMHhiYSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4MTgsIDB4ZSwgMHhmOCwgMHhhYywgMHg4MCwgMHhjNCwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4YzUsIDB4YzMsIDB4ZjcsIDB4ZmMsIDB4NzcsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweGY5LCAweDkyLCAweGQxLCAweDEzLCAweDZjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDc4LCAweDE1LCAweGQ1LCAweDYsIDB4ZjksIDB4MWYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDUsIDB4M2EsIDB4NiwgMHgxMywgMHhiNCwgMHhmYiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4NWUsIDB4MTUsIDB4ZjcsIDB4YTcsIDB4NiwgMHg5NiwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg0MywgMHg2LCAweDlkLCAweGEyLCAweGEwLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhiMiwgMHg4LCAweGMxLCAweGFjLCAweGI3LCAweGE5LCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhiYSwgMHg2YiwgMHhjMSwgMHgyYSwgMHgzYywgMHg1YSwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4NzgsIDB4MWUsIDB4ZDEsIDB4ODUsIDB4NSwgMHhiMywgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OTksIDB4YjQsIDB4MWIsIDB4YjMsIDB4OWMsIDB4NzQsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDcyLCAweDdkLCAweDVhLCAweDZlLCAweDFmLCAweGZiLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDZmLCAweDU1LCAweDdiLCAweDU3LCAweDgsIDB4ZmIsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGZkLCAweDE1LCAweGQxLCAweDYsIDB4ZDQsIDB4ZjcsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NTcsIDB4NiwgMHg1ZCwgMHg1MywgMHgzYywgMHg2ZiwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4N2UsIDB4NTAsIDB4MTgsIDB4YTgsIDB4OTAsIDB4YjcsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGFiLCAweDgsIDB4ZSwgMHg2NSwgMHhhLCAweGY4LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhhMCwgMHg3NywgMHgxMiwgMHgxMywgMHg2OCwgMHhmOCwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4MTUsIDB4ZjcsIDB4MzYsIDB4NiwgMHg3ZSwgMHg0NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHg2LCAweDk5LCAweGQyLCAweDUsIDB4YjQsIDB4NiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4OTYsIDB4YzEsIDB4NSwgMHg2MSwgMHg2LCAweGI1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg1LCAweDU5LCAweDYsIDB4ZmIsIDB4NmEsIDB4ZmIsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZDAsIDB4ODgsIDB4MTUsIDB4ZjcsIDB4YiwgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhmYiwgMHhmLCAweDUsIDB4ZmMsIDB4N2YsIDB4ZmIsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGNlLCAweDYsIDB4ZjgsIDB4ZGQsIDB4ZjksIDB4NjYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4NiwgMHhmYywgMHg3NCwgMHhmYiwgMHhmNSwgMHgxNSwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHg3MCwgMHhjYywgMHhmNywgMHhmNCwgMHg1LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDY0LCAweDU1LCAweDQxLCAweDZjLCAweDdiLCAweDg2LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHgxOCwgMHhhNSwgMHg5MSwgMHhiMiwgMHg5NSwgMHhiMywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhlLCAweGFlLCAweGY3LCAweGMyLCAweDc2LCAweGY4LCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGY3LCAweDdhLCAweGY3LCAweGFkLCAweDE1LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGQyLCAweGY4LCAweDNhLCAweDUsIDB4NTgsIDB4NiwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4M2QsIDB4NmIsIDB4NzksIDB4ODQsIDB4N2YsIDB4NDMsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDkyLCAweGI2LCAweDk4LCAweGI4LCAweGIxLCAweDgsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4ZjcsIDB4ZDEsIDB4NzcsIDB4YTcsIDB4NzYsIDB4ZjcsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGY3LCAweDQ3LCAweDc3LCAweDEyLCAweGVmLCAweGQ2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhmNywgMHhlZSwgMHhmNywgMHhkMSwgMHgxNSwgMHhkMywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg5NywgMHg4OCwgMHg5NSwgMHhhYywgMHgxYSwgMHg5OSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YTAsIDB4ZGEsIDB4MWUsIDB4OTYsIDB4YjQsIDB4OTUsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDFhLCAweGQ2LCAweDZkLCAweGM0LCAweGZiLCAweDQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NjMsIDB4MzAsIDB4NjksIDB4N2UsIDB4MWUsIDB4ZDYsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZDAsIDB4YTYsIDB4YzQsIDB4OGMsIDB4OTYsIDB4MWIsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDc2LCAweDYzLCAweDgxLCAweDg5LCAweDdmLCAweDg2LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg2YiwgMHg4NCwgMHg3YiwgMHg4NywgMHg1ZiwgMHg4YSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg4OCwgMHhmYiwgMHhlLCAweDgyLCAweGZiLCAweDExLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3OCwgMHg2MywgMHhhNCwgMHgzZSwgMHhlNywgMHhjMiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4OWQsIDB4OWQsIDB4MWUsIDB4MTMsIDB4YjgsIDB4OGYsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDg4LCAweDhlLCAweDgwLCAweDgsIDB4OTUsIDB4ZjcsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGZiLCAweDE2LCAweDcxLCAweDNhLCAweDg5LCAweDdhLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg2NCwgMHg5NywgMHhiNiwgMHhiOSwgMHhiYiwgMHg5NSwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MWYsIDB4YzksIDB4OTAsIDB4OTQsIDB4OGUsIDB4YTksIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZSwgMHhjZSwgMHhmNywgMHhjNCwgMHhkNywgMHhmNywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4MSwgMHhlZiwgMHhkOCwgMHhmNywgMHg2YSwgMHhkOCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHhmOCwgMHg4NCwgMHgxNSwgMHgyNywgMHhhOSwgMHgyZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZjcsIDB4MTAsIDB4ZGQsIDB4ZjcsIDB4MjIsIDB4ZjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4NTMsIDB4ZTAsIDB4ZmIsIDB4MSwgMHhmYiwgMHgyMywgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmYsIDB4MzUsIDB4MWUsIDB4ZDgsIDB4OGQsIDB4MTUsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGY3LCAweDQsIDB4ZTAsIDB4YmUsIDB4YjAsIDB4NjEsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDViLCAweDI2LCAweDNhLCAweDRlLCAweDczLCAweGJlLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweGY3LCAweGNkLCAweDliLCAweGNhLCAweGY4LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDEsIDB4YmMsIDB4ZDYsIDB4ZjcsIDB4ZjAsIDB4ZDgsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4OTQsIDB4MTUsIDB4YjgsIDB4NmMsIDB4YzQsIDB4Y2IsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4OWYsIDB4YjUsIDB4NzksIDB4Y2EsIDB4MWIsIDB4ZjcsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIsIDB4ZjcsIDB4MTMsIDB4ZjcsIDB4M2QsIDB4YzQsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDZlLCAweGFlLCAweDFmLCAweGM2LCAweGNkLCAweDVlLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHg0YiwgMHg1LCAweDkzLCAweDdlLCAweDYzLCAweGEyLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHg2MywgMHg0MSwgMHhmYiwgMHgzZCwgMHhmYiwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4YTIsIDB4NjcsIDB4OWIsIDB4NzEsIDB4MWYsIDB4YzUsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDdlLCAweGEyLCAweDgyLCAweGEyLCAweGE4LCAweDFhLCAweGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhmNywgMHgyMCwgMHhmNywgMHgxZCwgMHhiYSwgMHhhMiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4OTMsIDB4MWUsIDB4ZmIsIDB4NzIsIDB4ZmIsIDB4ZGMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk3LCAweGY3LCAweGIxLCAweDUsIDB4OTAsIDB4N2MsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDY0LCAweDFhLCAweDI0LCAweDNiLCAweGZiLCAweDE2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHg2ZSwgMHg3MiwgMHg5MywgMHg5OCwgMHg3NiwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhkMCwgMHhmOCwgMHgxNSwgMHhjZiwgMHhmMiwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHhjZCwgMHg4ZSwgMHg3NywgMHgxMiwgMHhlNSwgMHhlOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZTgsIDB4MTMsIDB4ZTYsIDB4ZjcsIDB4OGIsIDB4ZjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGNiLCAweDYsIDB4MTMsIDB4ZDYsIDB4YTQsIDB4OTEsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGE1LCAweDFiLCAweGFkLCAweGExLCAweDdkLCAweDdmLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4MiwgMHg5ZCwgMHg5ZSwgMHg4MywgMHhhMiwgMHgxYiwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4YzIsIDB4YzEsIDB4OTEsIDB4MWYsIDB4NGMsIDB4NjksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4MWIsIDB4N2MsIDB4NzgsIDB4OTYsIDB4OTUsIDB4NzMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGNlLCAweDk2LCAweDczLCAweDZlLCAweDk1LCAweDY5LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlNiwgMHg0NSwgMHg3OSwgMHg1NywgMHg1MCwgMHg3YiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzgsIDB4ZmMsIDB4MjcsIDB4MjQsIDB4YSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHg3NiwgMHhmNywgMHg1MywgMHhkNSwgMHhmOCwgMHgyYSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4ZDUsIDB4MTIsIDB4ZjgsIDB4ODAsIDB4ZTcsIDB4MTMsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNiLCAweGRkLCAweDE1LCAweDRiLCAweGFkLCAweGJiLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHgxYiwgMHhmNywgMHgxYywgMHhmNywgMHgxNiwgMHhmNywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTMsIDB4ZjcsIDB4MjEsIDB4M2MsIDB4ZDgsIDB4MjYsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDY1LCAweDVkLCAweDVjLCAweDFmLCAweDEzLCAweGU4LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHg1LCAweDM1LCAweDYsIDB4ZmIsIDB4MzAsIDB4ZmQsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZTcsIDB4NiwgMHhlNSwgMHhmOCwgMHgzOCwgMHgxNSwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4ZjcsIDB4M2EsIDB4ZjcsIDB4OSwgMHhkYSwgMHhhZiwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4M2UsIDB4NWMsIDB4ZmIsIDB4NGQsIDB4ZmIsIDB4MTcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGRhLCAweGQ3LCAweDFlLCAweGUsIDB4ZjcsIDB4ODMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDc2LCAweGY5LCAweGMwLCAweGRhLCAweDEsIDB4ZjcsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQxLCAweDE1LCAweGQ5LCAweGY5LCAweGMwLCAweGY2LCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhkYSwgMHhmOSwgMHhjMCwgMHhjZiwgMHhkYSwgMHhmYiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHhiLCAweDIyLCAweDQ3LCAweGZiLCAweDE5LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHgyZCwgMHhmNywgMHhhLCAweDFmLCAweGUsIDB4NjEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHhlMiwgMHgzLCAweGY3LCAweDRkLCAweGZiLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjZCwgMHg2LCAweDY4LCAweGY3LCAweDAsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4NSwgMHgxYSwgMHhmNywgMHhkYSwgMHhmNywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODUsIDB4YWUsIDB4YjEsIDB4MWUsIDB4NDYsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhmYiwgMHgxMiwgMHhmYiwgMHgzZCwgMHhmYiwgMHg0YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4MWEsIDB4ZmIsIDB4NSwgMHhhNiwgMHhmYiwgMHg1LCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxLCAweDFlLCAweGUsIDB4NjEsIDB4YSwgMHhmNywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4MywgMHg4MiwgMHhmYiwgMHg2MywgMHgxNSwgMHhkMCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweGY3LCAweDEyLCAweGY3LCAweDNkLCAweGY3LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiYywgMHgxYSwgMHhmNywgMHg1LCAweDcwLCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweGY3LCAweDEsIDB4MWUsIDB4NDksIDB4NiwgMHhhZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhMCwgMHhmYiwgMHhmLCAweGZiLCAweDUsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGZiLCAweDc0LCAweGZiLCAweDdjLCAweDY4LCAweDY1LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY4LCAweGUzLCAweDc4LCAweGMzLCAweGY3LCAweDg5LCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHhjNCwgMHhmNywgMHg4YSwgMHhjNCwgMHg5MSwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4ZDgsIDB4ZjcsIDB4M2QsIDB4ZDcsIDB4ZWUsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNjLCAweGQ4LCAweDEzLCAweGQ3LCAweDgwLCAweGY4LCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweDE1LCAweDY4LCAweDhiLCAweDJkLCAweGY3LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZiwgMHg4ZCwgMHhmNywgMHg3NCwgMHg5MSwgMHhmNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHhhMSwgMHg0YiwgMHgxZSwgMHhmYiwgMHgxOCwgMHg1YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4NGIsIDB4MWYsIDB4ZDcsIDB4MTYsIDB4YWUsIDB4OWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGUzLCAweDk2LCAweGJjLCAweDg0LCAweDRiLCAweDdjLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMywgMHgyOCwgMHgxZSwgMHgxMywgMHgzNywgMHgwLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhiZSwgMHhhMSwgMHgxZiwgMHhmYywgMHg4NSwgMHhmNywgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MTMsIDB4YjcsIDB4ODAsIDB4NjgsIDB4OGIsIDB4MjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGY3LCAweDRmLCAweDhlLCAweGY3LCAweDcyLCAweDkyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDNmLCAweGExLCAweDQ5LCAweDFlLCAweDEzLCAweDM2LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE2LCAweDU5LCAweGZiLCAweDM2LCAweDRiLCAweDFmLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhhZCwgMHg5ZiwgMHhmNywgMHgxYiwgMHhlMiwgMHg5ZiwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4NTIsIDB4N2QsIDB4ODAsIDB4ZmIsIDB4MzIsIDB4MjYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDhjLCAweDAsIDB4NTQsIDB4ODksIDB4YzMsIDB4YTAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGZjLCAweDdlLCAweDE1LCAweGRlLCAweDYsIDB4MTMsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGY4LCAweGU3LCAweGY5LCAweDY2LCAweDUsIDB4M2EsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3NywgMHg4YiwgMHhmNSwgMHgxLCAweGUyLCAweDE2LCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGExLCAweGY1LCAweDUsIDB4MjIsIDB4NiwgMHhlLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1MiwgMHhmNywgMHgxMSwgMHgxLCAweGY3LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHgxNSwgMHhmNSwgMHg2LCAweGExLCAweGY3LCAweDExLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDYsIDB4ZSwgMHhmOSwgMHg1MiwgMHg3OCwgMHhjMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4YzQsIDB4OGIsIDB4YzMsIDB4ZjcsIDB4OGIsIDB4YzMsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweGUzLCAweGQzLCAweGY3LCAweDMxLCAweGQzLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHgxMywgMHhmNywgMHhmNywgMHgzNCwgMHhmOCwgMHg2YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OWEsIDB4ZjcsIDB4MzgsIDB4ZTQsIDB4YzAsIDB4OGIsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDY3LCAweDc1LCAweGZiLCAweDI1LCAweDM5LCAweDU2LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHhhMiwgMHgxZSwgMHg2NCwgMHhmYywgMHg3ZSwgMHgxNSwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhlOCwgMHhmOCwgMHg2NywgMHhmOSwgMHg2NiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHg2LCAweGZjLCAweDg3LCAweGZiLCAweDdjLCAweDViLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUzLCAweGI5LCAweDFlLCAweDEzLCAweGYwLCAweGQ1LCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHgzZCwgMHhmYiwgMHgxYSwgMHg1ZiwgMHhmYiwgMHgyNiwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4YzQsIDB4ZmIsIDB4ZmQsIDB4NWIsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4YjksIDB4ZDYsIDB4NWUsIDB4YmIsIDB4M2QsIDB4ZmIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGZiLCAweDI1LCAweDM3LCAweDFlLCAweGQzLCAweDE2LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhmNywgMHgzNSwgMHhlNCwgMHhjMCwgMHg4YiwgMHg1MywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NzUsIDB4ZmIsIDB4MjQsIDB4MzksIDB4MWUsIDB4MTMsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDhiLCAweGJkLCAweGEyLCAweDFmLCAweGY3LCAweDlkLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg4YiwgMHgyMSwgMHhmNywgMHgxMCwgMHgxZSwgMHgxMywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZSwgMHhhMSwgMHhmNywgMHg1MywgMHhiNywgMHhkNywgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4M2YsIDB4MWYsIDB4MTMsIDB4ODAsIDB4ZmIsIDB4ZSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmIsIDB4M2QsIDB4MWYsIDB4ZDMsIDB4MTYsIDB4OTYsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM1LCAweGU0LCAweGJmLCAweDhiLCAweDUzLCAweDgxLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhmYiwgMHgyNCwgMHgzYSwgMHgxZSwgMHgxMywgMHgwLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhiZCwgMHhhMiwgMHgxZiwgMHhlLCAweGY3LCAweGIyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhlMiwgMHgxLCAweGY3LCAweGMwLCAweGU2LCAweDMsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY0LCAweDE1LCAweGY3LCAweDZiLCAweGZiLCAweDY0LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NCwgMHhmNywgMHg2YiwgMHhlMiwgMHhmYiwgMHg2YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4MzAsIDB4ZmIsIDB4NjYsIDB4ZmIsIDB4NmIsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiMiwgMHg4YiwgMHhjZiwgMHhmNywgMHg2NCwgMHhjZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NzcsIDB4MSwgMHhmNywgMHhhMCwgMHhmNywgMHg2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHg2LCAweGJmLCAweGY3LCAweDM2LCAweDUsIDB4ZjcsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTIsIDB4Y2YsIDB4NSwgMHhmYiwgMHg1NSwgMHg2LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNiwgMHg1LCAweDNhLCAweDYsIDB4NTcsIDB4ZmIsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4NTYsIDB4NiwgMHg3NSwgMHg0NywgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg2LCAweGZiLCAweGFlLCAweGZiLCAweGE4LCAweDE1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg2LCAweGExLCAweGNmLCAweDUsIDB4ZmMsIDB4NjYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHg0ZSwgMHg3NiwgMHhmNywgMHg1MywgMHhkNCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZDQsIDB4N2YsIDB4NzcsIDB4MTIsIDB4ZGYsIDB4ZTcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGY4LCAweDMxLCAweGMxLCAweDE1LCAweDUyLCAweGZiLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGU4LCAweDYsIDB4ZjcsIDB4MzAsIDB4ZjksIDB4NzEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4NiwgMHg3NywgMHgyYSwgMHg1LCAweDEzLCAweGU4LCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHgzNywgMHg4ZSwgMHg3NCwgMHgxYiwgMHhmYiwgMHgyNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHhmYiwgMHgxZCwgMHhmYiwgMHg1MiwgMHhmYiwgMHgzYywgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZDQsIDB4YjMsIDB4YmEsIDB4OTksIDB4YzMsIDB4Y2IsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgxLCAweGY3LCAweDMxLCAweDE1LCAweGQxLCAweGI3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhmNywgMHgxNiwgMHhkMiwgMHhiZCwgMHg0ZiwgMHgzYywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg0NCwgMHhmYiwgMHgzMSwgMHhmYiwgMHgzLCAweDQzLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhlZiwgMHgxZSwgMHhlLCAweDhiLCAweGVmLCAweGY4LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHgxLCAweGY3LCAweDg2LCAweGYzLCAweDMsIDB4ZjcsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ3LCAweDE1LCAweGUxLCAweDYsIDB4OTYsIDB4YzcsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGVhLCAweGQ0LCAweDgsIDB4ZTcsIDB4ZDMsIDB4ZDIsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweDFhLCAweGViLCAweDM1LCAweGQ5LCAweGZiLCAweDE0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHgzNCwgMHhmYiwgMHg5LCAweDMxLCAweDFlLCAweGU4LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGIwLCAweDkwLCAweDlhLCAweGY3LCAweDUsIDB4ZjcsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGQxLCAweGJlLCAweDVhLCAweDU2LCAweDRjLCAweDQ5LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg2MSwgMHgxZiwgMHgzOSwgMHg0YiwgMHg0ZiwgMHg1YiwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MiwgMHg4LCAweDVkLCAweGZiLCAweDQ3LCAweDE1LCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGExLCAweGVmLCAweDUsIDB4MjMsIDB4NiwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHhmYiwgMHg1ZCwgMHhkMywgMHhmOCwgMHg3MywgMHg3NywgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4MSwgMHhlMCwgMHhlOCwgMHgzLCAweGY4LCAweDU2LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg4NiwgMHg2NiwgMHg2MSwgMHhmYiwgMHg2LCAweDI0LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDQ0LCAweDhhLCAweDU4LCAweGI4LCAweGMwLCAweDFhLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHhjMCwgMHhjMCwgMHhiNSwgMHgxZSwgMHhkZSwgMHhjYiwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4OTgsIDB4ZjcsIDB4MywgMHg4LCAweDM0LCAweDYsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDgxLCAweDcyLCAweDJiLCAweDQyLCAweDgsIDB4MmUsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDRmLCAweDMwLCAweDFhLCAweDJiLCAweGUyLCAweDQyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHhkLCAweGY3LCAweDMsIDB4ZjUsIDB4ZjIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM1LCAweGY4LCAweDM5LCAweDE1LCAweGY0LCAweDYsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweDUsIDB4MjIsIDB4NiwgMHhlLCAweGM0LCAweGY4LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhhLCAweGY3LCAweDNjLCAweGY3LCAweGEyLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweGY4LCAweDYzLCAweDE1LCAweGJjLCAweDYsIDB4YjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGEyLCAweGY3LCAweDgsIDB4M2YsIDB4YSwgMHg3NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg1LCAweGZiLCAweDMxLCAweGZiLCAweDFmLCAweDE1LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGI5LCAweGY3LCAweDFmLCAweGExLCAweGY3LCAweDgsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NzUsIDB4ZmIsIDB4OCwgMHg1LCAweGUsIDB4YWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDc2LCAweGY3LCAweDJhLCAweGY0LCAweDEsIDB4YTQsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDM3LCAweGEsIDB4ODMsIDB4NjIsIDB4MTgsIDB4NjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4YjAsIDB4OWQsIDB4ZTYsIDB4MTgsIDB4MjIsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4MjIsIDB4MTUsIDB4NjIsIDB4YSwgMHg4MywgMHg2MiwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4M2MsIDB4YSwgMHgyMiwgMHg2LCAweGUsIDB4YWUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGY0LCAweGY3LCAweDJhLCAweDc3LCAweDEsIDB4ZjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDMsIDB4ZjcsIDB4YzMsIDB4ZjgsIDB4NmEsIDB4MzMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGMsIDB4MzAsIDB4MzMsIDB4YSwgMHhlLCAweGFlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3NiwgMHhmNywgMHgyYSwgMHhmNCwgMHgxLCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2MywgMHgxNSwgMHg2NywgMHhhLCAweDkzLCAweGIwLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHgxOCwgMHgyMiwgMHg2LCAweDc1LCAweDIyLCAweDUsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4OCwgMHhmNywgMHgzMiwgMHg2MiwgMHgxNSwgMHhmNiwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgyMiwgMHg2LCAweDc1LCAweDIyLCAweDUsIDB4NjIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhlLCAweDNmLCAweGY4LCAweDdmLCAweDQ0LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGY4LCAweDZhLCAweDNiLCAweGEsIDB4ZWEsIDB4YjcsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweGEsIDB4ZmIsIDB4NCwgMHg4NCwgMHg2NiwgMHg4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGY4LCAweDc4LCAweDQ0LCAweGEsIDB4ZjcsIDB4MmIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDE1LCAweGY3LCAweDAsIDB4M2MsIDB4YSwgMHgyMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHgyMiwgMHg1LCAweDM3LCAweGEsIDB4OCwgMHhlLCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNCwgMHg0NCwgMHhhLCAweGJmLCAweDhjLCAweDE1LCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDgzLCAweDYyLCAweDE4LCAweGY3LCAweDAsIDB4OTksIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4OTMsIDB4YjAsIDB4OWUsIDB4ZTYsIDB4MTgsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHgyMCwgMHhmOCwgMHg3OCwgMHg0NCwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhmOCwgMHg2MywgMHgxNSwgMHhjMSwgMHg2LCAweGJjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhNCwgMHhmNywgMHg4LCAweDU3LCAweGEsIDB4NzIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NSwgMHhlLCAweGFlLCAweGEwLCAweDc2LCAweGY4LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg0MiwgMHhlMCwgMHgxMiwgMHgxMywgMHhhMCwgMHhkOCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4NiwgMHhiNSwgMHhmNywgMHg2NywgMHg1LCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGMwLCAweGY3LCAweDE3LCAweGU0LCAweDFiLCAweDljLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg3ZSwgMHg5YSwgMHgxZiwgMHhhZSwgMHhkZiwgMHg1LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg3OCwgMHg5MywgMHg3NCwgMHgxYiwgMHg0MSwgMHg1NiwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NzcsIDB4MWYsIDB4MTMsIDB4YzAsIDB4OWUsIDB4ZjYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4NiwgMHhlLCAweGY4LCAweDRiLCAweDc4LCAweGNhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhjMywgMHhmNywgMHhlLCAweGMyLCAweGY3LCAweGEsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YzEsIDB4Y2MsIDB4ZjksIDB4MjEsIDB4Y2MsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4ZjcsIDB4MmEsIDB4MTUsIDB4ZDAsIDB4NiwgMHhhZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4NSwgMHhiMywgMHg2LCAweGMxLCAweDljLCAweDc2LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHgxZiwgMHhhMywgMHg0YiwgMHg1LCAweGRlLCAweDYsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDY1LCAweGRjLCAweDdhLCAweDk4LCAweDczLCAweDkzLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4ZCwgMHhlMywgMHg5MCwgMHhiOCwgMHhjNCwgMHg5NCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZWMsIDB4OWQsIDB4MmQsIDB4OWQsIDB4M2EsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDYsIDB4YWQsIDB4ZmIsIDB4NDUsIDB4MTUsIDB4YTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NSwgMHhkOSwgMHg2LCAweGI0LCAweGNkLCAweDhiLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxZiwgMHg0ZCwgMHg3ZSwgMHg0NSwgMHg4YiwgMHg2YiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MjIsIDB4NzgsIDB4MTUsIDB4ZmIsIDB4NjYsIDB4ZjcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNkLCAweGY3LCAweDZjLCAweGY3LCAweDZkLCAweGY3LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZSwgMHhmNywgMHg2NSwgMHhmNywgMHg2NSwgMHhmYiwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2MsIDB4ZmIsIDB4NmEsIDB4ZmIsIDB4NmEsIDB4ZmIsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNiLCAweGZiLCAweDY2LCAweDFlLCAweGNjLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhmNywgMHgyNSwgMHhmNywgMHgyMCwgMHhmNywgMHg0OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4ZjcsIDB4MjYsIDB4ZmIsIDB4MjAsIDB4ZmIsIDB4NDIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweGZiLCAweDI2LCAweGZiLCAweDIxLCAweGZiLCAweDRhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhmYiwgMHgyNSwgMHhmNywgMHgyMSwgMHhmNywgMHg0MywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhhZSwgMHhmOCwgMHhkMCwgMHhiMSwgMHhmNywgMHgwLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDZhLCAweGIyLCAweGY3LCAweDIsIDB4YjIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmEsIDB4ZjksIDB4MmQsIDB4MTUsIDB4NTcsIDB4YjYsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGJlLCAweGI2LCAweGI0LCAweGJmLCAweGJlLCAweDYxLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg1NywgMHg2MSwgMHg2MywgMHg1OCwgMHgxZSwgMHhiMiwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YWEsIDB4YTMsIDB4YTMsIDB4YWEsIDB4YWEsIDB4YTMsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDZkLCAweDczLCAweDc0LCAweDZjLCAweDZkLCAweDcyLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHgxZSwgMHhlLCAweGY3LCAweDVlLCAweDdjLCAweGQwLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhkMCwgMHgxMiwgMHhmNywgMHgxZCwgMHhkZSwgMHhmNywgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4NTcsIDB4ZTQsIDB4MTMsIDB4ZjAsIDB4Y2EsIDB4ZjcsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGZiLCAweDQ5LCAweGY3LCAweDM5LCAweDdmLCAweGJkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhjZSwgMHhkNCwgMHhkOCwgMHhlYiwgMHgzZiwgMHhiNywgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MWUsIDB4NDksIDB4YTcsIDB4NmEsIDB4OTQsIDB4YjUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGFjLCAweGI1LCAweGNjLCAweDFlLCAweDEzLCAweGU4LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHg4MSwgMHgyZSwgMHgxZiwgMHhlNCwgMHg5MCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhmYiwgMHgxNCwgMHhhYSwgMHgzZSwgMHhmYiwgMHgxZiwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4NGMsIDB4MzQsIDB4Y2QsIDB4NjYsIDB4ZTUsIDB4NjMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGYwLCAweGNhLCAweDZmLCAweGI4LCAweDc1LCAweDVjLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1NiwgMHg2ZCwgMHg0YSwgMHhmYiwgMHgxNCwgMHg4OSwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4MWUsIDB4ZSwgMHhmNywgMHg1ZSwgMHg3YywgMHhkMSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4ZDEsIDB4MTIsIDB4ZjcsIDB4MjAsIDB4ZTIsIDB4OWYsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweGU5LCAweDU1LCAweGU4LCAweDEzLCAweGY4LCAweGNhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHgxNSwgMHhmYiwgMHg0YiwgMHhmNywgMHg0MCwgMHg4MCwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmUsIDB4ZDEsIDB4ZDYsIDB4ZDcsIDB4ZWMsIDB4M2IsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGI2LCAweDFlLCAweDQ2LCAweGE4LCAweDY4LCAweDhhLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhYSwgMHhhZSwgMHhjMCwgMHhjZiwgMHgxZSwgMHgxMywgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4ZjcsIDB4MywgMHg4ZiwgMHhmYiwgMHgwLCAweDFmLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg1LCAweGY3LCAweDFlLCAweGZiLCAweDE5LCAweGFhLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNywgMHg1YSwgMHgzMSwgMHg0YiwgMHgzNCwgMHhkMCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4NjMsIDB4MWUsIDB4MTMsIDB4ZjgsIDB4Y2UsIDB4NmUsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDVhLCAweDFhLCAweDU4LCAweDUyLCAweDZkLCAweDQ4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHg4OCwgMHhmMSwgMHhhOCwgMHgxZSwgMHhmNywgMHgyZiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4MTUsIDB4ZjEsIDB4NiwgMHhmNywgMHgxZSwgMHhmNywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4YSwgMHgzNiwgMHgzMSwgMHg2MiwgMHhlNSwgMHg1LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZmIsIDB4NTMsIDB4Y2UsIDB4ZjksIDB4YWEsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZDcsIDB4NzEsIDB4MTUsIDB4ZmIsIDB4YiwgMHhhNCwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4ZTgsIDB4MWIsIDB4ZjcsIDB4YiwgMHhkMCwgMHhkYywgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4N2QsIDB4YWUsIDB4NmEsIDB4YjEsIDB4MWYsIDB4ZWQsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGJlLCAweGMyLCAweDFhLCAweGM5LCAweDY4LCAweGJhLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHgxZSwgMHgzYiwgMHhjZCwgMHg1YSwgMHhiNCwgMHhjMiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4YjMsIDB4YjIsIDB4YzUsIDB4OWQsIDB4ZTAsIDB4ODgsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUxLCAweDk2LCAweDUsIDB4YmQsIDB4ODMsIDB4N2EsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MzQsIDB4MWIsIDB4ZmIsIDB4ZCwgMHg0ZSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NjYsIDB4OTksIDB4NjksIDB4YTIsIDB4NzAsIDB4MWYsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDNjLCAweDVmLCAweDI5LCAweDFhLCAweDQxLCAweGJjLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHg1NywgMHgxZSwgMHhmNywgMHgxZiwgMHhmYiwgMHg3LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg1ZSwgMHgxYSwgMHg1ZCwgMHg1ZiwgMHg1ZCwgMHg0ZCwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4OTAsIDB4ZjcsIDB4NSwgMHg3MywgMHgxZSwgMHhmNywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTQsIDB4MTUsIDB4NzUsIDB4YTAsIDB4NWYsIDB4YWUsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDgsIDB4NTUsIDB4YjcsIDB4NmUsIDB4OWQsIDB4YjMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGNkLCAweGJiLCAweGE1LCAweDlhLCAweDFlLCAweGFjLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg1ZiwgMHhiZiwgMHg2MCwgMHg4LCAweGI2LCAweDY2LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg2ZCwgMHgxYSwgMHg3MywgMHg3YywgMHg1ZCwgMHgzYiwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHg3NywgMHhmYiwgMHgxMiwgMHg3NiwgMHhmNywgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4MzksIDB4ZWIsIDB4MSwgMHhjMywgMHhmNywgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhlMiwgMHg4YSwgMHgxNSwgMHhjNSwgMHg2LCAweDc3LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg3ZiwgMHg3YiwgMHg4NywgMHg4MiwgMHg2NCwgMHgxOCwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YTQsIDB4ZjcsIDB4MywgMHg5MiwgMHhhZSwgMHg5ZCwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4MjMsIDB4NiwgMHhjZCwgMHhmNywgMHhkNSwgMHg0MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGEwLCAweDc2LCAweGY5LCAweDksIDB4ZGEsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4MTYsIDB4ZjEsIDB4NiwgMHhiOSwgMHhmNywgMHg1MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjcsIDB4OTQsIDB4ZjcsIDB4NWQsIDB4ZjcsIDB4M2IsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDE4LCAweGZjLCAweDk1LCAweDYsIDB4NzgsIDB4M2MsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjQsIDB4NiwgMHhmYiwgMHg2MywgMHhmYiwgMHg1MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZmIsIDB4YTEsIDB4NzAsIDB4ZmIsIDB4MmYsIDB4OCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhkMCwgMHhmNywgMHhlYywgMHhkMCwgMHhmNywgMHg0NCwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhlNiwgMHhlOSwgMHhmNywgMHhiOCwgMHhlNSwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhmOCwgMHgyOSwgMHgxNSwgMHhhYywgMHg5MywgMHhjYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4ZjcsIDB4MTcsIDB4MWIsIDB4ZDAsIDB4YTcsIDB4NTgsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDFmLCAweGUzLCAweDkzLCAweDUsIDB4ZTAsIDB4ODMsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGZiLCAweDE2LCAweDFiLCAweGZiLCAweDk1LCAweDNiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhmYiwgMHgyNCwgMHhmYiwgMHg0ZCwgMHhmNywgMHgxMSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4ZjcsIDB4MzAsIDB4ZjcsIDB4MCwgMHhmNywgMHgxMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4ZjcsIDB4MTksIDB4MmMsIDB4ZDgsIDB4MjAsIDB4M2QsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDc4LCAweDczLCAweDFmLCAweDY5LCAweGZiLCAweDU4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkLCAweGU1LCAweGNiLCAweGRlLCAweGQ5LCAweGMxLCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHgyOCwgMHgzNywgMHgyMywgMHgzMywgMHgzZSwgMHg1MywgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4MWUsIDB4ZSwgMHg3NywgMHg4ZCwgMHg3NiwgMHgxLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2ZCwgMHgzLCAweDc2LCAweDc4LCAweDE1LCAweGQyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDI2LCAweGY5LCAweDg4LCAweDUsIDB4NDQsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhlLCAweDkwLCAweDc2LCAweGY3LCAweGRjLCAweGQzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhkMSwgMHgxLCAweGY3LCAweDRjLCAweGU2LCAweDMsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDE1LCAweGFmLCAweGFlLCAweGI1LCAweDk1LCAweGI4LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHg4YSwgMHhiOCwgMHg3ZiwgMHhiNiwgMHg4MCwgMHg4LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhiMCwgMHg4MSwgMHhhYiwgMHgxYiwgMHg5NSwgMHhiOSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4ZDcsIDB4MWYsIDB4NmYsIDB4ZDksIDB4NSwgMHg2ZCwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4OGIsIDB4ODEsIDB4MWIsIDB4NmIsIDB4NjksIDB4OTYsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDFmLCAweDY1LCAweDk0LCAweDYxLCAweDkzLCAweDVjLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4YywgMHgxOCwgMHhjMCwgMHhiMSwgMHhjMiwgMHhjNCwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YSwgMHg4LCAweGY3LCAweDExLCAweDYsIDB4OWEsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MjMsIDB4NiwgMHg4MSwgMHhiZSwgMHg4YSwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4MWEsIDB4ZjcsIDB4MTgsIDB4ZWEsIDB4YWEsIDB4YzAsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweDg4LCAweGZiLCAweDEwLCAweDlhLCAweDFlLCAweGRjLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDMwLCAweDdhLCAweGZiLCAweGQsIDB4YWMsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDE0LCAweGZiLCAweDQsIDB4MjgsIDB4ZmIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDhkLCAweDdlLCAweDkyLCAweDVmLCAweDFmLCAweDM1LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDQzLCAweDUsIDB4ZjcsIDB4MSwgMHg2LCAweDlmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweDExLCAweDI5LCAweDVjLCAweDcwLCAweDgsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ODQsIDB4ZDIsIDB4ZjcsIDB4ZmQsIDB4Y2IsIDB4ZjcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZjcsIDB4MywgMHhmNywgMHg5ZCwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg4ZCwgMHgxNSwgMHg5YSwgMHhjZiwgMHg1LCAweDg3LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg4OSwgMHg3OSwgMHgxYiwgMHg2NSwgMHg4YiwgMHhiMiwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4MWYsIDB4YzcsIDB4ZjcsIDB4YTQsIDB4NSwgMHhlNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhjYiwgMHg1LCAweDMyLCAweDYsIDB4YjQsIDB4ZjcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDUxLCAweDcwLCAweGZiLCAweGUsIDB4NSwgMHg0MywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg0YiwgMHg1LCAweGQyLCAweDYsIDB4NGIsIDB4ZmIsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODYsIDB4NzIsIDB4ODgsIDB4NzUsIDB4NzcsIDB4MWEsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDY4LCAweGQ2LCAweDkzLCAweGE3LCAweDhjLCAweDkzLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweGZiLCAweDRlLCAweDc2LCAweGY3LCAweDUxLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyNiwgMHhkNCwgMHhmNywgMHg1MCwgMHg3NywgMHgxLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhmNywgMHhmZSwgMHhlNywgMHgzLCAweGY3LCAweDNjLCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg0ZCwgMHhhZCwgMHhiOSwgMHg2OSwgMHhkMSwgMHgxYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4ZjcsIDB4MTYsIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4NTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDNkLCAweGQ4LCAweDI1LCAweDU3LCAweDVkLCAweDc3LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHgxZiwgMHhjNSwgMHhmNywgMHg5OSwgMHg1LCAweDJlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVjLCAweGZlLCAweDMxLCAweDUsIDB4ZTcsIDB4NiwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzIsIDB4MTUsIDB4ZGYsIDB4Y2EsIDB4ZjcsIDB4M2EsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZDksIDB4YjAsIDB4NDUsIDB4NDMsIDB4M2UsIDB4NWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGZiLCAweDE2LCAweDMxLCAweDZmLCAweGQ5LCAweGQ1LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDc4LCAweGQwLCAweGY3LCAweGEzLCAweGQ0LCAweGY3LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHgxLCAweGY4LCAweDcxLCAweGViLCAweDMsIDB4ZDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDE1LCAweGZiLCAweDIwLCAweDk2LCAweGY3LCAweDgsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMsIDB4MWIsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4YywgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4ZTUsIDB4NDgsIDB4YmYsIDB4NzUsIDB4OTcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGIyLCAweGFlLCAweGMzLCAweGNmLCAweDFhLCAweGViLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHhmYiwgMHgxOSwgMHg2ZiwgMHhmYiwgMHgzNCwgMHg4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4NWIsIDB4MWUsIDB4ZTgsIDB4NzksIDB4NSwgMHhlOCwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4YjEsIDB4YzUsIDB4MWIsIDB4ZDAsIDB4YzAsIDB4NTgsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDQ2LCAweDQ4LCAweGZiLCAweDEwLCAweDFmLCAweDdiLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGU4LCAweGQ4LCAweDYxLCAweDNkLCAweDQzLCAweDQ0LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmYiwgMHhjLCAweDdkLCAweGYwLCAweGIwLCAweDg2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDY1LCAweGEsIDB4ZjcsIDB4NzcsIDB4YzQsIDB4ZjcsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDEyLCAweGY3LCAweGU3LCAweGQzLCAweDU1LCAweGQxLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhmOCwgMHg3OSwgMHhjNywgMHgxNSwgMHhmNywgMHg0NSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg0NCwgMHg1LCAweGNiLCAweDYsIDB4OWEsIDB4ZDIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4NiwgMHg5NywgMHhjMSwgMHg1LCAweDVlLCAweDYsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDc3LCAweDUsIDB4NTUsIDB4NiwgMHhmYiwgMHg3ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NSwgMHhkNiwgMHg4OCwgMHgxNSwgMHhmNywgMHgxNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4OGQsIDB4ODksIDB4NmUsIDB4ZmIsIDB4ZiwgMHg1LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhmNywgMHhkYywgMHgxNSwgMHg1MCwgMHg5YiwgMHhiZSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4MWIsIDB4ZGUsIDB4YzMsIDB4YmQsIDB4YzQsIDB4YzEsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDc0LCAweDk1LCAweDFmLCAweDhkLCAweDcsIDB4MTMsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDk0LCAweGFiLCAweGExLCAweGJiLCAweDFhLCAweGM3LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg0NywgMHg0OCwgMHg1NywgMHg2YywgMHg1MCwgMHg3YiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ODIsIDB4NSwgMHg5ZSwgMHg5MiwgMHg5NywgMHhhOCwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YTgsIDB4YTYsIDB4N2QsIDB4NmQsIDB4NWQsIDB4NWMsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDhhLCAweDFmLCAweDgxLCAweDU4LCAweDUsIDB4MTMsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGJhLCAweDgyLCAweDVjLCAweDc5LCAweDgwLCAweDZiLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg3YywgMHhiMCwgMHg5YSwgMHg4NSwgMHgxZiwgMHg1ZCwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4MTUsIDB4ZDQsIDB4NiwgMHhmOSwgMHgxMywgMHhmOSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzYywgMHg2LCAweGUsIDB4YWUsIDB4ZjcsIDB4YTIsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGM0LCAweGM4LCAweDEyLCAweGY3LCAweGUyLCAweGRmLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHgxMywgMHhlMCwgMHhlNSwgMHhmOCwgMHgxYiwgMHgxNSwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YzUsIDB4NTgsIDB4ZTIsIDB4MWIsIDB4ZWMsIDB4Y2YsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweGNiLCAweDVmLCAweDlkLCAweDcwLCAweDk4LCAweDFmLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDEzLCAweGQwLCAweGJlLCAweDk3LCAweGIxLCAweGE3LCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhkMywgMHg0OCwgMHhiMSwgMHgzYiwgMHgzZCwgMHg0ZiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4NzcsIDB4MWUsIDB4ZGEsIDB4ODEsIDB4NSwgMHhhMiwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YWQsIDB4YzUsIDB4MWIsIDB4YWQsIDB4YWEsIDB4N2EsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDU1LCAweDgzLCAweDU5LCAweDhhLCAweDFmLCAweDdmLCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDEzLCAweGUwLCAweGIzLCAweGMzLCAweDhiLCAweDUzLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg1YiwgMHg0NywgMHg0YywgMHg3YSwgMHhiOCwgMHg5YywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhhZSwgMHhmOCwgMHhmMywgMHhmNywgMHg0LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhiNywgMHhkMCwgMHg4ZSwgMHg3NywgMHgxMiwgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ZjcsIDB4N2QsIDB4Y2MsIDB4MTMsIDB4OGMsIDB4ZjcsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGYzLCAweDE1LCAweGNlLCAweDYsIDB4MTMsIDB4NmMsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDk3LCAweDlkLCAweGE2LCAweDFiLCAweGFlLCAweGE2LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHhhMywgMHgxZiwgMHg4MSwgMHg5ZiwgMHg5ZSwgMHg4MiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4Y2IsIDB4YWYsIDB4YzQsIDB4YzMsIDB4OTEsIDB4MWYsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4N2MsIDB4ODYsIDB4ODUsIDB4NzIsIDB4NmYsIDB4MWIsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDkxLCAweDkyLCAweDc4LCAweDFmLCAweDEzLCAweDVjLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg2OSwgMHg5YywgMHg2ZCwgMHgxYiwgMHgxMywgMHg4YywgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NTUsIDB4NGUsIDB4N2EsIDB4MWYsIDB4ZSwgMHhmOSwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZGIsIDB4NzYsIDB4ZjcsIDB4ZjMsIDB4YzgsIDB4MSwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4YzgsIDB4MywgMHhmNywgMHg1YywgMHhmNywgMHhjNiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4NiwgMHhmNywgMHgxMywgMHhmNywgMHhmMywgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg2LCAweGEwLCAweGM4LCAweDUsIDB4ZmIsIDB4ZjQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NGUsIDB4NSwgMHhmNywgMHgyMSwgMHg2LCAweGY3LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmMywgMHgxNSwgMHhjZCwgMHg2LCAweGY3LCAweDEyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHg0OCwgMHhhLCAweDdlLCAweGZiLCAweGYzLCAweDUsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4N2QsIDB4ZjcsIDB4ZWQsIDB4NDgsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZmIsIDB4ZWQsIDB4NSwgMHhjZCwgMHg2LCAweGY3LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzMCwgMHg1LCAweDIzLCAweDYsIDB4ZmIsIDB4NzMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDRlLCAweGEsIDB4OTYsIDB4ZjcsIDB4ZGQsIDB4NSwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweDhiLCAweGRhLCAweGY4LCAweGJkLCAweGQ3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDYzLCAweGU5LCAweDMsIDB4YTIsIDB4MTYsIDB4ZjgsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OWQsIDB4ZGEsIDB4NSwgMHhmYiwgMHhlOCwgMHg2LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhLCAweGY3LCAweDExLCAweGMyLCAweGNmLCAweGM3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGEzLCAweGVhLCAweGUxLCAweGU4LCAweDFhLCAweGVlLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHhmYiwgMHgyNiwgMHhmYiwgMHgzMSwgMHg0OSwgMHgyMywgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4MWUsIDB4ZTYsIDB4ODAsIDB4NSwgMHhjZSwgMHg5OCwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4ZTcsIDB4MWIsIDB4ZDMsIDB4YzUsIDB4NWUsIDB4NDgsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDUzLCAweDM2LCAweDRiLCAweDFmLCAweGZiLCAweDRhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0ZCwgMHg1ZiwgMHg3MCwgMHhmYiwgMHgxOSwgMHg4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGY3LCAweGFkLCAweGNmLCAweGY3LCAweDc2LCAweGY3LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhjZiwgMHgxLCAweGY3LCAweGZlLCAweGUyLCAweDMsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFkLCAweDE1LCAweGY3LCAweGU4LCAweDYsIDB4OTksIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4NmQsIDB4NiwgMHhhMiwgMHhhNiwgMHhhNCwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4YjksIDB4OCwgMHhjZSwgMHhiMiwgMHhjMSwgMHhiMSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YzIsIDB4NjMsIDB4Y2MsIDB4ZmIsIDB4YywgMHgyYSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4MzcsIDB4NzMsIDB4MWUsIDB4ZTIsIDB4ODMsIDB4NSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YTcsIDB4OWIsIDB4YmQsIDB4MWIsIDB4YmQsIDB4YTIsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDY0LCAweDZkLCAweDc4LCAweDRlLCAweDZhLCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHgzNiwgMHg2NywgMHg0YiwgMHg3OCwgMHg0ZCwgMHg4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGQ1LCAweDYyLCAweDc2LCAweGY4LCAweGEyLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg2MCwgMHhmOCwgMHgyZSwgMHg4OCwgMHgxNSwgMHhkZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweGY4LCAweGEyLCAweDUsIDB4MzMsIDB4NiwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NzUsIDB4N2QsIDB4NDQsIDB4N2QsIDB4NGMsIDB4NTUsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDEzLCAweGEwLCAweDYyLCAweDYwLCAweDYyLCAweDdmLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0ZSwgMHg1ZCwgMHg5NywgMHhmNywgMHhhLCAweGE5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhmNywgMHhlMiwgMHg1LCAweDM4LCAweDYsIDB4NDksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDUsIDB4ODUsIDB4NmIsIDB4ODcsIDB4NmIsIDB4NzAsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGI1LCAweDU5LCAweGYyLCAweGQ5LCAweGNhLCAweGJkLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgxZSwgMHhlLCAweDM5LCAweGEsIDB4ZjcsIDB4NzgsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGEsIDB4MzEsIDB4ZjgsIDB4OGYsIDB4MzYsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhhLCAweGU4LCAweGY3LCAweDFiLCAweDI3LCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGY4LCAweDhmLCAweDMwLCAweGEsIDB4ZSwgMHgzOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHhlZiwgMHgyNywgMHhhLCAweDhkLCAweGY4LCAweDk2LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4MzksIDB4YSwgMHhlNCwgMHhmNywgMHgxZiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2NSwgMHhmOCwgMHg4YiwgMHgxNSwgMHhkMywgMHg2LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhhLCAweGZiLCAweDMsIDB4NiwgMHhlLCAweGZiLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgxLCAweDcwLCAweDQwLCAweDE1LCAweDU5LCAweGY4LCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg3LCAweGUsIDB4ZjcsIDB4NWUsIDB4NDMsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4MTYsIDB4ZWUsIDB4NiwgMHhmNywgMHhiZiwgMHhmOCwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4YSwgMHhmYiwgMHg4MywgMHhmYywgMHg0ZSwgMHg0ZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHhmOCwgMHg0ZSwgMHg1LCAweDM0LCAweDYsIDB4ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4NDMsIDB4YSwgMHhmOCwgMHg2NSwgMHhjZCwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHgxNiwgMHhlNywgMHg2LCAweGY3LCAweDRhLCAweGY4LCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhmYywgMHgzNiwgMHg1LCAweGU2LCAweDYsIDB4ZjcsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDlmLCAweDUsIDB4MzQsIDB4NiwgMHhmYiwgMHg1MSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NGUsIDB4YSwgMHg3NiwgMHhmOCwgMHgzOCwgMHg1MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0OCwgMHhmYywgMHgzZCwgMHg0ZSwgMHhhLCAweDZhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg1LCAweDM2LCAweDYsIDB4ZSwgMHhmNywgMHg1ZSwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg5NiwgMHgxNiwgMHhmNywgMHhjLCAweDYsIDB4ZjcsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU0LCAweGVjLCAweGZiLCAweDU0LCAweDUsIDB4ZjQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjAsIDB4ZjcsIDB4OTgsIDB4ZjcsIDB4N2YsIDB4ZjcsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4OSwgMHg2LCAweGZiLCAweDM2LCAweGZiLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhmNywgMHg1MiwgMHg1LCAweDIyLCAweDYsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDkzLCAweDUsIDB4ZSwgMHhmNywgMHg1ZSwgMHhmYiwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjksIDB4NzUsIDB4NzcsIDB4MSwgMHg5ZiwgMHhmYiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg4NiwgMHgzNiwgMHg1LCAweDg2LCAweDlmLCAweDlkLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHgxYiwgMHhlOCwgMHhjMCwgMHhkMSwgMHhkMywgMHhiMywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZWMsIDB4ZjgsIDB4ZTcsIDB4NTAsIDB4YSwgMHhmYiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4M2EsIDB4NGUsIDB4ZjgsIDB4M2EsIDB4M2YsIDB4YSwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4YTMsIDB4NDEsIDB4ZmIsIDB4MTUsIDB4NzQsIDB4N2UsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDE5LCAweGUsIDB4ZjcsIDB4NWUsIDB4ZmIsIDB4NTUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDdkLCAweDc3LCAweGY3LCAweDczLCAweDc3LCAweDEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGViLCAweDMsIDB4OWYsIDB4ZmIsIDB4YiwgMHgxNSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NTksIDB4YSwgMHhkOCwgMHhjZSwgMHhiMiwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4ZjgsIDB4ZWQsIDB4NTAsIDB4YSwgMHhmYiwgMHg4NSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4NGUsIDB4YSwgMHg0ZiwgMHhmOCwgMHgzZiwgMHg0NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhmYywgMHhhOCwgMHg1LCAweGZiLCAweDE1LCAweDUzLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg3OCwgMHgxYiwgMHg3MSwgMHg3YiwgMHg4ZiwgMHg4ZiwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjcsIDB4OTcsIDB4ZjksIDB4NWYsIDB4MTUsIDB4ZDcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWMsIDB4ZjcsIDB4MWUsIDB4NSwgMHhmYiwgMHg5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4NWUsIDB4ZmIsIDB4NmEsIDB4ZTEsIDB4ZjksIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweDEsIDB4OWYsIDB4ZmIsIDB4YywgMHgxNSwgMHg4NiwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4YSwgMHhkNywgMHhjZSwgMHhiMiwgMHgxZiwgMHhmNywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZTYsIDB4NTAsIDB4YSwgMHhmYiwgMHg4NSwgMHhmYywgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4YSwgMHg0ZiwgMHhmOCwgMHgzYSwgMHg0NSwgMHhhLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhhMiwgMHg1LCAweGZiLCAweDE2LCAweDNmLCAweDdmLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgxYiwgMHg3MSwgMHg3YiwgMHg4ZiwgMHg4ZiwgMHg3ZSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MWIsIDB4ZjksIDB4NjksIDB4MTUsIDB4ZWIsIDB4NiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4NTAsIDB4YSwgMHhmYiwgMHg2NSwgMHgyNiwgMHgxNSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhMSwgMHhmMCwgMHg1MCwgMHhhLCAweGUsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGJmLCAweGNiLCAweGY3LCAweGQ5LCAweDc3LCAweDEsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJlLCAweDE1LCAweGY3LCAweDU4LCAweDYsIDB4NmIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDUsIDB4ZTEsIDB4NiwgMHhhYywgMHhmNywgMHgyZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NiwgMHg2LCAweDk5LCAweGNjLCAweDUsIDB4ZmIsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OWIsIDB4ZGIsIDB4NSwgMHhmNywgMHg1NCwgMHg2LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHg1LCAweGZiLCAweDJjLCAweDYsIDB4ZjcsIDB4OGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDUsIDB4ZmIsIDB4MCwgMHg2LCAweGZiLCAweDc3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHg0ZSwgMHhhLCAweGZiLCAweDksIDB4ZjcsIDB4ZDksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NiwgMHhmNywgMHgxMywgMHhmYiwgMHhkOSwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHg2LCAweDdlLCAweDRiLCAweDUsIDB4ZjcsIDB4NTksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4M2IsIDB4NSwgMHhmYiwgMHg1OCwgMHg2LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDhiLCAweGRhLCAweGY4LCAweDYsIDB4ZDUsIDB4MSwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YjAsIDB4MywgMHhhYSwgMHgxNiwgMHhmOCwgMHg1ZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhkYSwgMHg1LCAweGZiLCAweGUzLCAweDYsIDB4ZjgsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDE4LCAweDVhLCAweGEsIDB4ZjcsIDB4Y2EsIDB4NiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYywgMHgxMCwgMHg1LCAweGUsIDB4ZjcsIDB4NWUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweGY4LCAweDk4LCAweGY3LCAweDFlLCAweDEsIDB4YWEsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDVlLCAweDYsIDB4OWMsIDB4ZGIsIDB4NSwgMHhmYiwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmOCwgMHgxOCwgMHhmOCwgMHgxYywgMHg1YSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHg2LCAweDhkLCAweDg5LCAweGZjLCAweGUsIDB4ZmMsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4OWIsIDB4ZjgsIDB4YTIsIDB4MTUsIDB4ZjUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4MWUsIDB4NDcsIDB4YSwgMHgzMywgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4ZTQsIDB4NSwgMHgzNiwgMHg2LCAweGUsIDB4NzgsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGRjLCAweGQwLCAweDEsIDB4ZjcsIDB4MiwgMHhlMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4ZTMsIDB4MywgMHhlOCwgMHhmNywgMHg2MywgMHgxNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4ZjAsIDB4NTksIDB4ZWMsIDB4ZjcsIDB4NzMsIDB4ZTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGY3LCAweDUwLCAweGY3LCAweDRmLCAweGZiLCAweGQsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGZiLCAweDZjLCAweDI5LCAweGZiLCAweGQ3LCAweGZiLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlMywgMHgxNiwgMHhhMiwgMHhhYywgMHhmOCwgMHgyOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4ZjcsIDB4MywgMHg4YywgMHhmYiwgMHgxZCwgMHg2YiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4ZmIsIDB4ZTAsIDB4ZmIsIDB4NDMsIDB4NDksIDB4NWEsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDFlLCAweGUsIDB4NzgsIDB4OWUsIDB4ZjgsIDB4OWYsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ4LCAweDllLCAweDYsIDB4ZmIsIDB4NzAsIDB4OTgsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDk0LCAweDcsIDB4NzgsIDB4OWUsIDB4ZjgsIDB4OWYsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ4LCAweDllLCAweDgsIDB4ZmIsIDB4NzAsIDB4OTgsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YTAsIDB4MzksIDB4NjMsIDB4ZmYsIDB4YywgMHg5LCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGU1LCAweGIsIDB4ZDUsIDB4OTIsIDB4YywgMHhjLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhjLCAweGQsIDB4ZjgsIDB4YzAsIDB4MTQsIDB4ZjcsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGMzLCAweDEzLCAweDAsIDB4NTAsIDB4MiwgMHgwLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NGUsIDB4MCwgMHg5MiwgMHgwLCAweDk5LCAweDAsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MSwgMHgxLCAweDQ5LCAweDEsIDB4NzIsIDB4MSwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhiNiwgMHgxLCAweGJiLCAweDEsIDB4ZGUsIDB4MSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgxMywgMHgyLCAweDFhLCAweDIsIDB4MjIsIDB4MiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgzYSwgMHgyLCAweDQwLCAweDIsIDB4NGIsIDB4MiwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg2MSwgMHgyLCAweDY2LCAweDIsIDB4NzIsIDB4MiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg4NCwgMHgyLCAweDhjLCAweDIsIDB4OTYsIDB4MiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhhOCwgMHgyLCAweGFjLCAweDIsIDB4YWYsIDB4MiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhiYywgMHgyLCAweGM1LCAweDIsIDB4Y2MsIDB4MiwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhkOSwgMHgyLCAweGRkLCAweDIsIDB4ZWIsIDB4MiwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhmMywgMHgyLCAweGZiLCAweDMsIDB4MywgMHgzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZiwgMHgzLCAweDEzLCAweDMsIDB4MTcsIDB4MywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgyNiwgMHgzLCAweDJkLCAweDMsIDB4MzMsIDB4MywgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg0MCwgMHgzLCAweDQ1LCAweDMsIDB4NGEsIDB4MywgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg1OCwgMHgzLCAweDYyLCAweDMsIDB4NmMsIDB4MywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg3YSwgMHgzLCAweDgzLCAweDMsIDB4OGMsIDB4MywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg5ZSwgMHgzLCAweGE3LCAweDMsIDB4YjAsIDB4MywgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjMSwgMHgzLCAweGNhLCAweDMsIDB4ZDAsIDB4MywgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhkYSwgMHgzLCAweGUwLCAweDMsIDB4ZTUsIDB4MywgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhlZiwgMHgzLCAweGYzLCAweDMsIDB4ZjcsIDB4MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4YSwgMHg4NSwgMHhhNywgMHg4NywgMHg5ZiwgMHhhNCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4OTEsIDB4YWUsIDB4OTIsIDB4YWQsIDB4MWUsIDB4YTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDUsIDB4OTcsIDB4YzQsIDB4OGYsIDB4YTUsIDB4OTEsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDJkLCAweGM4LCAweGZiLCAweDIsIDB4MzAsIDB4ZmIsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGZiLCAweGMsIDB4NzMsIDB4MWUsIDB4ZTEsIDB4ODMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4YTYsIDB4Y2MsIDB4YTAsIDB4YzUsIDB4MWIsIDB4YTQsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDQ0LCAweDgwLCAweDg3LCAweDZmLCAweDgzLCAweDc0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg3YywgMHg2NSwgMHg4OSwgMHgzZCwgMHg4OCwgMHg4LCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhmYiwgMHg0OCwgMHg4MywgMHhmYiwgMHgzNywgMHgxYSwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4NTMsIDB4ZTQsIDB4MWUsIDB4YiwgMHgxNSwgMHhmYiwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YiwgMHhmYiwgMHgyNywgMHhmNywgMHg1YiwgMHhmNywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDUsIDB4ZjcsIDB4NTQsIDB4ZjcsIDB4ODIsIDB4ZjcsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIsIDB4ZjcsIDB4MWMsIDB4ZmIsIDB4NWMsIDB4ZmIsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUwLCAweGZiLCAweDM4LCAweGZiLCAweGE2LCAweDFlLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHgxNSwgMHhmNywgMHg4YiwgMHhmNywgMHgzOSwgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZCwgMHhmNywgMHg0LCAweGY2LCAweDMyLCAweGZiLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0NywgMHhmYiwgMHhkLCAweGZiLCAweDNlLCAweGZiLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0LCAweGZiLCAweDYsIDB4ZGQsIDB4ZjcsIDB4MmMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MjAsIDB4YSwgMHgxMywgMHhiYywgMHgyMywgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweGM5LCAweGMxLCAweGE0LCAweGE3LCAweDFmLCAweDhjLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg2ZCwgMHg5NCwgMHg3MSwgMHg4LCAweGExLCAweGY3LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg4MiwgMHg1NSwgMHg4MSwgMHg1ZiwgMHg3MSwgMHg2NiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg2OSwgMHg1NCwgMHg2ZSwgMHg1NCwgMHgxYiwgMHgzZSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YjIsIDB4ZTEsIDB4ZTcsIDB4OTYsIDB4YzYsIDB4OTAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDkyLCAweGEyLCAweDhkLCAweGFkLCAweDk5LCAweDgsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZmIsIDB4MjIsIDB4ZjEsIDB4M2IsIDB4ZjcsIDB4NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4ZjcsIDB4MTUsIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4NTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDM0LCAweGRlLCAweGZiLCAweDEzLCAweGZiLCAweDRjLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOCwgMHhmYiwgMHg0NywgMHgxZSwgMHhlNSwgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhjYiwgMHhmNywgMHgyNywgMHhmNywgMHgxNywgMHhlMiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4M2MsIDB4ZmIsIDB4NCwgMHg0MywgMHhmYiwgMHgyOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg2ZCwgMHgyOSwgMHg5OCwgMHhmNywgMHgyMCwgMHgxZSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmOCwgMHgxZSwgMHg2LCAweDhlLCAweDlmLCAweDhmLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHgxYSwgMHhlNywgMHg1ZCwgMHhmNywgMHgxNSwgMHhmYiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWEsIDB4MzUsIDB4ZmIsIDB4NTgsIDB4ZmIsIDB4MWMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGU5LCAweDNlLCAweGY3LCAweDcsIDB4ZjcsIDB4MjAsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIsIDB4ZDUsIDB4YTEsIDB4MWUsIDB4MzIsIDB4OTQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4NjEsIDB4M2EsIDB4NzYsIDB4NjMsIDB4MWIsIDB4NGMsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGYyLCAweDk2LCAweDhjLCAweDkyLCAweDhjLCAweDk1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhkMSwgMHgxNSwgMHhjZiwgMHhhMCwgMHhiZiwgMHhlOSwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZDIsIDB4Y2QsIDB4NGIsIDB4MjksIDB4N2IsIDB4MWYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjQsIDB4NiwgMHhmNywgMHg4LCAweGY3LCAweDY5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI2LCAweDYsIDB4YWYsIDB4ZmIsIDB4NjksIDB4NSwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHhiLCAweGY5LCAweDc2LCAweDUsIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHgyNiwgMHhmYywgMHg1NCwgMHgxNSwgMHhmNywgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NCwgMHg0OCwgMHhhLCAweGI5LCAweGZjLCAweDQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgxMiwgMHgxMywgMHg3MCwgMHhmOCwgMHgyNywgMHg4OCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4NiwgMHhmNywgMHg0LCAweGY4LCAweGE1LCAweDQ1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweGZiLCAweDc2LCAweDUsIDB4MjEsIDB4NzUsIDB4NTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDEyLCAweDFiLCAweDRiLCAweDdhLCAweGM1LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHgxZiwgMHhkNCwgMHhmNywgMHhlNCwgMHg0NSwgMHhhLCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlMiwgMHg1LCAweDg3LCAweDc0LCAweDg5LCAweDc2LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgxMywgMHhiMCwgMHgzYSwgMHhhZSwgMHg0ZSwgMHhlYywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4YmQsIDB4YzQsIDB4YmYsIDB4MWUsIDB4MTMsIDB4NzAsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4OCwgMHgyMSwgMHhhLCAweGUsIDB4ZmMsIDB4YTIsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHgxLCAweGUxLCAweDE2LCAweGY4LCAweGJlLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZjLCAweDVjLCAweDYsIDB4YmYsIDB4ZjcsIDB4OTQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjksIDB4NiwgMHg5ZCwgMHhkZSwgMHg1LCAweGZjLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGI5LCAweGY3LCAweDdiLCAweDUsIDB4ZjgsIDB4NDAsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmMsIDB4YTAsIDB4NiwgMHhiLCAweDIzLCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OGIsIDB4MjIsIDB4ZmMsIDB4ODYsIDB4NjQsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGY3LCAweGIsIDB4NDMsIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGY3LCAweDgwLCAweGUwLCAweDljLCAweDFlLCAweGU1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHg1NywgMHhhLCAweDMzLCAweGZjLCAweDQ1LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NzQsIDB4NDksIDB4ZmIsIDB4YSwgMHhmYiwgMHgxZSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MzksIDB4YjgsIDB4ZTMsIDB4MWYsIDB4ZjQsIDB4ZjgsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHhhMCwgMHg3NiwgMHhmOSwgMHg2MiwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDJmLCAweGEsIDB4ZmIsIDB4NWQsIDB4MjcsIDB4MmYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxNSwgMHhlNywgMHg2LCAweGEwLCAweGVmLCAweDNkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NmUsIDB4YSwgMHhkYiwgMHhlMiwgMHhiMiwgMHgzNCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHg2LCAweDRlLCAweGY3LCAweDFiLCAweDUsIDB4MmEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgzNSwgMHhhLCAweGY3LCAweDY5LCAweGQ4LCAweGIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OGIsIDB4ZGYsIDB4ZjcsIDB4OTQsIDB4ZGUsIDB4ZjcsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGIsIDB4M2IsIDB4YSwgMHhlOSwgMHhiNywgMHg5NiwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg1LCAweDg0LCAweDY2LCAweDgsIDB4YiwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgyNSwgMHhmOSwgMHg3MywgMHgzZCwgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDUsIDB4YTAsIDB4NzYsIDB4YiwgMHgxNSwgMHhkNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNiwgMHhmNywgMHgxYiwgMHg1LCAweGZiLCAweDQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhjNSwgMHg2LCAweDc3LCAweDJkLCAweDVmLCAweDgwLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhiLCAweGRmLCAweDYsIDB4ZjQsIDB4ZjgsIDB4YTMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NiwgMHhiLCAweDdjLCAweGQ1LCAweDRkLCAweGM5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg3NywgMHhiLCAweGEwLCAweDc2LCAweGY4LCAweDU2LCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHhkYSwgMHgxLCAweGIsIDB4MTUsIDB4ZjQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4ZjQsIDB4NSwgMHg1MiwgMHg2LCAweDllLCAweGIsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4OTIsIDB4YjAsIDB4OWUsIDB4ZTYsIDB4MTgsIDB4YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHg2LCAweGIsIDB4M2YsIDB4YSwgMHhlLCAweDUsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHgxNSwgMHhmMywgMHg2LCAweGExLCAweGViLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDYsIDB4YiwgMHg5YywgMHg4ZiwgMHg5MywgMHhiNCwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4N2QsIDB4NzIsIDB4YiwgMHg3NywgMHgxLCAweGY3LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweDMsIDB4YiwgMHhhMCwgMHg3NiwgMHhmOCwgMHg5ZiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhiLCAweDc2LCAweGY3LCAweDkzLCAweDc3LCAweDEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzMCwgMHg2LCAweGIsIDB4NiwgMHhlYiwgMHhmOCwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmMCwgMHg2LCAweDk5LCAweGNmLCAweDUsIDB4MjYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4YiwgMHg1LCAweDI3LCAweDYsIDB4YiwgMHg1LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIsIDB4ZjcsIDB4MmMsIDB4NzYsIDB4ZjgsIDB4MmQsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YiwgMHg3YywgMHhkMSwgMHg2NiwgMHg3NiwgMHhmNywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4YiwgMHhlZiwgMHg2LCAweGEwLCAweGY1LCAweDQ3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4OTksIDB4YTQsIDB4ZjcsIDB4NSwgMHhiLCAweDUsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHg1LCAweDg5LCAweDYsIDB4YiwgMHgxNSwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgyNCwgMHg2ZCwgMHhhLCAweGZiLCAweDEwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NSwgMHgyYiwgMHg2LCAweGIsIDB4NSwgMHhmYiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDk3LCAweGIsIDB4NWMsIDB4YSwgMHhmOCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YiwgMHhhZSwgMHhmOCwgMHhlNSwgMHhmNywgMHgyMSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDVjLCAweGEsIDB4ZjksIDB4NzMsIDB4NzcsIDB4YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhkYywgMHg1LCAweGIsIDB4MTUsIDB4ZDEsIDB4NiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1LCAweDI5LCAweDYsIDB4YiwgMHhmNywgMHg2MCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHg2LCAweDVlLCAweGZiLCAweDYwLCAweDUsIDB4YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHhhNSwgMHhhMSwgMHg4YSwgMHg5YSwgMHgxYiwgMHhlOSwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg5NywgMHhjMywgMHg1LCAweGZjLCAweDRjLCAweDYsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDUsIDB4YiwgMHgxNSwgMHg3NCwgMHg4YiwgMHgyMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZjcsIDB4MmQsIDB4YTMsIDB4YiwgMHg3NywgMHhhMCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxNSwgMHhlMSwgMHg2LCAweDc2LCAweDI1LCAweDUsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHg3MiwgMHgxYiwgMHg3YywgMHg3OCwgMHg5NSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MWYsIDB4YiwgMHg3NywgMHhmYiwgMHg1OCwgMHhjZiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4Y2YsIDB4MSwgMHhiLCAweGEwLCAweDc2LCAweGY4LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHg0ZSwgMHhkNCwgMHgxMiwgMHhiLCAweGFlLCAweGZiLCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmYSwgMHg0MCwgMHg3NywgMHgxLCAweGIsIDB4YzQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MmQsIDB4NjAsIDB4ODAsIDB4N2EsIDB4ODcsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4NiwgMHhhMSwgMHhmMCwgMHg0ZCwgMHhhLCAweGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGQ0LCAweDEsIDB4YmUsIDB4ZjcsIDB4ODQsIDB4MTUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YWMsIDB4OGQsIDB4NzYsIDB4YTgsIDB4NzYsIDB4ZDIsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NiwgMHhhMywgMHg5MCwgMHg5NiwgMHg5YywgMHhiLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhhLCAweGIsIDB4ZjQsIDB4ZWYsIDB4ZjgsIDB4OWQsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NiwgMHg3ZCwgMHg4NywgMHg4NSwgMHg3MiwgMHhiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGRmLCAweDUsIDB4YiwgMHg2LCAweDlkLCAweGRjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjgsIDB4NzQsIDB4NzgsIDB4ZGMsIDB4YiwgMHhmNywgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiLCAweDE1LCAweGU2LCAweDYsIDB4YiwgMHhmNywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U2Fuc01NLmMgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U2Fuc01NLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDViMGExNjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U2Fuc01NLmMKQEAgLTAsMCArMSw0MTkxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTYW5zTU1Gb250RGF0YSBbNjY5MTldID0geworICAgIDB4ODAsIDB4MDEsIDB4RDIsIDB4MjksIDB4MDAsIDB4MDAsIDB4MjUsIDB4MjEsIDB4NTAsIDB4NTMsIDB4MkQsIDB4NDEsIDB4NjQsIDB4NkYsIDB4NjIsIDB4NjUsCisgICAgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyRCwgMHgzMSwgMHgyRSwgMHgzMCwgMHgzQSwgMHgyMCwgMHg0MywgMHg2OCwgMHg3MiwgMHg2ZiwgMHg2ZCwgMHg2NSwgMHg1MywKKyAgICAweDYxLCAweDZFLCAweDczLCAweDRELCAweDRELCAweDIwLCAweDMwLCAweDMwLCAweDMxLCAweDJFLCAweDMwLCAweDMwLCAweDMwLCAweDBELCAweDI1LCAweDI1LAorICAgIDB4NDMsIDB4NzIsIDB4NjUsIDB4NjEsIDB4NzQsIDB4NjksIDB4NkYsIDB4NkUsIDB4NDQsIDB4NjEsIDB4NzQsIDB4NjUsIDB4M0EsIDB4MjAsIDB4NDYsIDB4NzIsCisgICAgMHg2OSwgMHgyMCwgMHg1MywgMHg2NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzOSwgMHgyMCwgMHgzMSwgMHgzNiwgMHgzQSwgMHgzMCwgMHgzMiwgMHgzQSwgMHgzNSwKKyAgICAweDMzLCAweDIwLCAweDMyLCAweDMwLCAweDMwLCAweDM2LCAweDBELCAweDI1LCAweDI1LCAweDU2LCAweDRELCAweDc1LCAweDczLCAweDYxLCAweDY3LCAweDY1LAorICAgIDB4M0EsIDB4MjAsIDB4MzEsIDB4MzIsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MjAsIDB4MzEsIDB4MzUsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MEQsCisgICAgMHgzMSwgMHgzNywgMHgyMCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHg2MiwgMHg2NSwgMHg2NywgMHg2OSwgMHg2RSwgMHgwRCwgMHgyRiwgMHg0NiwKKyAgICAweDZGLCAweDZFLCAweDc0LCAweDQ5LCAweDZFLCAweDY2LCAweDZGLCAweDIwLCAweDMxLCAweDM0LCAweDIwLCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4NjIsIDB4NjUsIDB4NjcsIDB4NjksIDB4NkUsIDB4MEQsIDB4MkYsIDB4NzYsIDB4NjUsIDB4NzIsIDB4NzMsIDB4NjksCisgICAgMHg2RiwgMHg2RSwgMHgyMCwgMHgyOCwgMHgzMCwgMHgzMCwgMHgzMSwgMHgyRSwgMHgzMCwgMHgzMCwgMHgzMCwgMHgyOSwgMHgyMCwgMHg3MiwgMHg2NSwgMHg2MSwKKyAgICAweDY0LCAweDZGLCAweDZFLCAweDZDLCAweDc5LCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLCAweDRFLCAweDZGLCAweDc0LCAweDY5LCAweDYzLAorICAgIDB4NjUsIDB4MjAsIDB4MjgsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgMHgyMCwgMHgyOSwgMHgyMCwgMHg3MiwgMHg2NSwgMHg2MSwgMHg2NCwgMHg2RiwgMHg2RSwgMHg2QywgMHg3OSwgMHgyMCwgMHg2NCwgMHg2NSwKKyAgICAweDY2LCAweDBELCAweDJGLCAweDQ2LCAweDc1LCAweDZDLCAweDZDLCAweDRFLCAweDYxLCAweDZELCAweDY1LCAweDIwLCAweDI4LCAweDQzLCAweDY4LCAweDcyLAorICAgIDB4NmYsIDB4NmQsIDB4NjUsIDB4MjAsIDB4NTMsIDB4NjEsIDB4NkUsIDB4NzMsIDB4MjAsIDB4NEQsIDB4NEQsIDB4MjksIDB4MjAsIDB4NzIsIDB4NjUsIDB4NjEsIDB4NjQsCisgICAgMHg2RiwgMHg2RSwgMHg2QywgMHg3OSwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg0NiwgMHg2MSwgMHg2RCwgMHg2OSwgMHg2QywgMHg3OSwKKyAgICAweDRFLCAweDYxLCAweDZELCAweDY1LCAweDIwLCAweDI4LCAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDY1LCAweDIwLCAweDUzLCAweDYxLCAweDZFLCAweDczLAorICAgIDB4MjAsIDB4NEQsIDB4NEQsIDB4MjksIDB4MjAsIDB4NzIsIDB4NjUsIDB4NjEsIDB4NjQsIDB4NkYsIDB4NkUsIDB4NkMsIDB4NzksIDB4MjAsIDB4NjQsIDB4NjUsCisgICAgMHg2NiwgMHgwRCwgMHgyRiwgMHg0OSwgMHg3NCwgMHg2MSwgMHg2QywgMHg2OSwgMHg2MywgMHg0MSwgMHg2RSwgMHg2NywgMHg2QywgMHg2NSwgMHgyMCwgMHgzMCwKKyAgICAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLCAweDY5LCAweDczLCAweDQ2LCAweDY5LCAweDc4LCAweDY1LCAweDY0LCAweDUwLCAweDY5LCAweDc0LAorICAgIDB4NjMsIDB4NjgsIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NTUsIDB4NkUsCisgICAgMHg2NCwgMHg2NSwgMHg3MiwgMHg2QywgMHg2OSwgMHg2RSwgMHg2NSwgMHg1MCwgMHg2RiwgMHg3MywgMHg2OSwgMHg3NCwgMHg2OSwgMHg2RiwgMHg2RSwgMHgyMCwKKyAgICAweDJELCAweDMxLCAweDMwLCAweDMwLCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLCAweDU1LCAweDZFLCAweDY0LCAweDY1LCAweDcyLCAweDZDLAorICAgIDB4NjksIDB4NkUsIDB4NjUsIDB4NTQsIDB4NjgsIDB4NjksIDB4NjMsIDB4NkIsIDB4NkUsIDB4NjUsIDB4NzMsIDB4NzMsIDB4MjAsIDB4MzUsIDB4MzAsIDB4MjAsCisgICAgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg1NywgMHg2NSwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHgyMCwgMHgyOCwgMHg0MSwgMHg2QywgMHg2QywKKyAgICAweDI5LCAweDIwLCAweDcyLCAweDY1LCAweDYxLCAweDY0LCAweDZGLCAweDZFLCAweDZDLCAweDc5LCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLAorICAgIDB4NDIsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjQsIDB4NDQsIDB4NjUsIDB4NzMsIDB4NjksIDB4NjcsIDB4NkUsIDB4NTAsIDB4NkYsIDB4NzMsIDB4NjksIDB4NzQsCisgICAgMHg2OSwgMHg2RiwgMHg2RSwgMHg3MywgMHgyMCwgMHg1QiwgMHg1QiwgMHgzMCwgMHgyMCwgMHgzMCwgMHgyMCwgMHg1RCwgMHg1QiwgMHgzMSwgMHgyMCwgMHgzMCwKKyAgICAweDIwLCAweDVELCAweDVCLCAweDMwLCAweDIwLCAweDMxLCAweDIwLCAweDVELCAweDVCLCAweDMxLCAweDIwLCAweDMxLCAweDIwLCAweDVELCAweDVELCAweDIwLAorICAgIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NDIsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjQsIDB4NDQsIDB4NjUsIDB4NzMsIDB4NjksIDB4NjcsIDB4NkUsCisgICAgMHg0RCwgMHg2MSwgMHg3MCwgMHgyMCwgMHg1QiwgMHg1QiwgMHg1QiwgMHgzNSwgMHgzMCwgMHgyMCwgMHgzMCwgMHgyMCwgMHg1RCwgMHg1QiwgMHgzMSwgMHgzNCwKKyAgICAweDM1LCAweDMwLCAweDIwLCAweDMxLCAweDIwLCAweDVELCAweDVELCAweDVCLCAweDVCLCAweDM1LCAweDMwLCAweDIwLCAweDMwLCAweDIwLCAweDVELCAweDVCLAorICAgIDB4MzEsIDB4MzQsIDB4MzUsIDB4MzAsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NUQsIDB4NUQsIDB4NUQsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsCisgICAgMHg0MiwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NCwgMHg0MSwgMHg3OCwgMHg2OSwgMHg3MywgMHg1NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHg3MywgMHgyMCwgMHg1QiwKKyAgICAweDJGLCAweDU3LCAweDY1LCAweDY5LCAweDY3LCAweDY4LCAweDc0LCAweDIwLCAweDJGLCAweDU3LCAweDY5LCAweDY0LCAweDc0LCAweDY4LCAweDIwLCAweDVELAorICAgIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4NjUsIDB4NkUsIDB4NjQsIDB4MjAsIDB4NzIsIDB4NjUsIDB4NjEsIDB4NjQsIDB4NkYsIDB4NkUsIDB4NkMsCisgICAgMHg3OSwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg1NywgMHg2NSwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg1NiwgMHg2NSwgMHg2MywKKyAgICAweDc0LCAweDZGLCAweDcyLCAweDIwLCAweDVCLCAweDMwLCAweDJFLCAweDMzLCAweDMxLCAweDM1LCAweDM4LCAweDIwLCAweDMwLCAweDJFLCAweDMxLCAweDMzLAorICAgIDB4MzQsIDB4MzksIDB4MjAsIDB4MzAsIDB4MkUsIDB4MzMsIDB4MzgsIDB4MzQsIDB4MzksIDB4MjAsIDB4MzAsIDB4MkUsIDB4MzEsIDB4MzYsIDB4MzQsIDB4MzQsCisgICAgMHgyMCwgMHg1RCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0RSwgMHg2MSwgMHg2RCwgMHg2NSwKKyAgICAweDIwLCAweDJGLCAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDY1LCAweDUzLCAweDYxLCAweDZFLCAweDczLCAweDRELCAweDRELCAweDIwLCAweDY0LCAweDY1LAorICAgIDB4NjYsIDB4MEQsIDB4MkYsIDB4NDUsIDB4NkUsIDB4NjMsIDB4NkYsIDB4NjQsIDB4NjksIDB4NkUsIDB4NjcsIDB4MjAsIDB4MzIsIDB4MzUsIDB4MzYsIDB4MjAsCisgICAgMHg2MSwgMHg3MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHgwRCwgMHgzMCwgMHgyMCwgMHgzMSwgMHgyMCwgMHgzMiwgMHgzNSwgMHgzNSwgMHgyMCwgMHg3QiwgMHgzMSwKKyAgICAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDJGLCAweDJFLCAweDZFLCAweDZGLAorICAgIDB4NzQsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjYsIDB4NkYsIDB4NzIsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMywgMHgzMiwgMHgyMCwgMHgyRiwgMHg3MywgMHg3MCwgMHg2MSwgMHg2MywgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwKKyAgICAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMzLCAweDMzLCAweDIwLCAweDJGLCAweDY1LCAweDc4LCAweDYzLCAweDZDLCAweDYxLCAweDZELCAweDIwLAorICAgIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzMsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NzEsIDB4NzUsIDB4NkYsIDB4NzQsCisgICAgMHg2NSwgMHg2NCwgMHg2MiwgMHg2QywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMywgMHgzNSwgMHgyMCwKKyAgICAweDJGLCAweDZFLCAweDc1LCAweDZELCAweDYyLCAweDY1LCAweDcyLCAweDczLCAweDY5LCAweDY3LCAweDZFLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzMsIDB4MzYsIDB4MjAsIDB4MkYsIDB4NjQsIDB4NkYsIDB4NkMsIDB4NkMsIDB4NjEsIDB4NzIsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMywgMHgzNywgMHgyMCwgMHgyRiwgMHg3MCwgMHg2NSwgMHg3MiwgMHg2MywgMHg2NSwKKyAgICAweDZFLCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMzLCAweDM4LCAweDIwLCAweDJGLCAweDYxLAorICAgIDB4NkQsIDB4NzAsIDB4NjUsIDB4NzIsIDB4NzMsIDB4NjEsIDB4NkUsIDB4NjQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzMywgMHgzOSwgMHgyMCwgMHgyRiwgMHg3MSwgMHg3NSwgMHg2RiwgMHg3NCwgMHg2NSwgMHg3MywgMHg2OSwgMHg2RSwgMHg2NywgMHg2QywgMHg2NSwKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM0LCAweDMwLCAweDIwLCAweDJGLCAweDcwLCAweDYxLCAweDcyLAorICAgIDB4NjUsIDB4NkUsIDB4NkMsIDB4NjUsIDB4NjYsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzQsCisgICAgMHgzMSwgMHgyMCwgMHgyRiwgMHg3MCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2RSwgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHgyMCwgMHg3MCwgMHg3NSwKKyAgICAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM0LCAweDMyLCAweDIwLCAweDJGLCAweDYxLCAweDczLCAweDc0LCAweDY1LCAweDcyLCAweDY5LAorICAgIDB4NzMsIDB4NkIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzQsIDB4MzMsIDB4MjAsIDB4MkYsIDB4NzAsCisgICAgMHg2QywgMHg3NSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNCwgMHgzNCwgMHgyMCwgMHgyRiwKKyAgICAweDYzLCAweDZGLCAweDZELCAweDZELCAweDYxLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM0LCAweDM1LAorICAgIDB4MjAsIDB4MkYsIDB4NjgsIDB4NzksIDB4NzAsIDB4NjgsIDB4NjUsIDB4NkUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzNCwgMHgzNiwgMHgyMCwgMHgyRiwgMHg3MCwgMHg2NSwgMHg3MiwgMHg2OSwgMHg2RiwgMHg2NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwKKyAgICAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM0LCAweDM3LCAweDIwLCAweDJGLCAweDczLCAweDZDLCAweDYxLCAweDczLCAweDY4LCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzQsIDB4MzgsIDB4MjAsIDB4MkYsIDB4N0EsIDB4NjUsIDB4NzIsIDB4NkYsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNCwgMHgzOSwgMHgyMCwgMHgyRiwgMHg2RiwgMHg2RSwgMHg2NSwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM1LCAweDMwLCAweDIwLCAweDJGLCAweDc0LCAweDc3LCAweDZGLCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzUsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NzQsIDB4NjgsIDB4NzIsIDB4NjUsIDB4NjUsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNSwgMHgzMiwgMHgyMCwgMHgyRiwgMHg2NiwgMHg2RiwgMHg3NSwKKyAgICAweDcyLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM1LCAweDMzLCAweDIwLCAweDJGLCAweDY2LCAweDY5LAorICAgIDB4NzYsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzUsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NzMsCisgICAgMHg2OSwgMHg3OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNSwgMHgzNSwgMHgyMCwgMHgyRiwgMHg3MywKKyAgICAweDY1LCAweDc2LCAweDY1LCAweDZFLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM1LCAweDM2LCAweDIwLAorICAgIDB4MkYsIDB4NjUsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzUsCisgICAgMHgzNywgMHgyMCwgMHgyRiwgMHg2RSwgMHg2OSwgMHg2RSwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDM1LCAweDM4LCAweDIwLCAweDJGLCAweDYzLCAweDZGLCAweDZDLCAweDZGLCAweDZFLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzUsIDB4MzksIDB4MjAsIDB4MkYsIDB4NzMsIDB4NjUsIDB4NkQsIDB4NjksIDB4NjMsIDB4NkYsIDB4NkMsIDB4NkYsIDB4NkUsIDB4MjAsCisgICAgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNiwgMHgzMCwgMHgyMCwgMHgyRiwgMHg2QywgMHg2NSwgMHg3MywgMHg3MywKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM2LCAweDMxLCAweDIwLCAweDJGLCAweDY1LCAweDcxLCAweDc1LAorICAgIDB4NjEsIDB4NkMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzYsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NjcsCisgICAgMHg3MiwgMHg2NSwgMHg2MSwgMHg3NCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNiwKKyAgICAweDMzLCAweDIwLCAweDJGLCAweDcxLCAweDc1LCAweDY1LCAweDczLCAweDc0LCAweDY5LCAweDZGLCAweDZFLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzYsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NjEsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNiwgMHgzNSwgMHgyMCwgMHgyRiwgMHg0MSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDM2LCAweDM2LCAweDIwLCAweDJGLCAweDQyLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM2LAorICAgIDB4MzcsIDB4MjAsIDB4MkYsIDB4NDMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzYsIDB4MzgsIDB4MjAsCisgICAgMHgyRiwgMHg0NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNiwgMHgzOSwgMHgyMCwgMHgyRiwgMHg0NSwKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM3LCAweDMwLCAweDIwLCAweDJGLCAweDQ2LCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzcsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NDcsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsCisgICAgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNywgMHgzMiwgMHgyMCwgMHgyRiwgMHg0OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDM3LCAweDMzLCAweDIwLCAweDJGLCAweDQ5LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLAorICAgIDB4MjAsIDB4MzcsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NEEsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzcsCisgICAgMHgzNSwgMHgyMCwgMHgyRiwgMHg0QiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNywgMHgzNiwgMHgyMCwKKyAgICAweDJGLCAweDRDLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM3LCAweDM3LCAweDIwLCAweDJGLCAweDRELAorICAgIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzcsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NEUsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNywgMHgzOSwgMHgyMCwgMHgyRiwgMHg0RiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwKKyAgICAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM4LCAweDMwLCAweDIwLCAweDJGLCAweDUwLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LAorICAgIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzgsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NTEsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzOCwgMHgzMiwgMHgyMCwgMHgyRiwgMHg1MiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOCwKKyAgICAweDMzLCAweDIwLCAweDJGLCAweDUzLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM4LCAweDM0LCAweDIwLAorICAgIDB4MkYsIDB4NTQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzgsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NTUsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOCwgMHgzNiwgMHgyMCwgMHgyRiwgMHg1NiwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM4LCAweDM3LCAweDIwLCAweDJGLCAweDU3LCAweDIwLCAweDcwLCAweDc1LCAweDc0LAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzgsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NTgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOCwgMHgzOSwgMHgyMCwgMHgyRiwgMHg1OSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDM5LCAweDMwLCAweDIwLCAweDJGLCAweDVBLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM5LAorICAgIDB4MzEsIDB4MjAsIDB4MkYsIDB4NjIsIDB4NzIsIDB4NjEsIDB4NjMsIDB4NkIsIDB4NjUsIDB4NzQsIDB4NkMsIDB4NjUsIDB4NjYsIDB4NzQsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOSwgMHgzMiwgMHgyMCwgMHgyRiwgMHg2MiwgMHg2MSwgMHg2MywgMHg2QiwgMHg3MywKKyAgICAweDZDLCAweDYxLCAweDczLCAweDY4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM5LCAweDMzLCAweDIwLAorICAgIDB4MkYsIDB4NjIsIDB4NzIsIDB4NjEsIDB4NjMsIDB4NkIsIDB4NjUsIDB4NzQsIDB4NzIsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsCisgICAgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOSwgMHgzNCwgMHgyMCwgMHgyRiwgMHg2MSwgMHg3MywgMHg2MywgMHg2OSwgMHg2OSwgMHg2MywKKyAgICAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM5LCAweDM1LAorICAgIDB4MjAsIDB4MkYsIDB4NzUsIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzIsIDB4NzMsIDB4NjMsIDB4NkYsIDB4NzIsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsCisgICAgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOSwgMHgzNiwgMHgyMCwgMHgyRiwgMHg2NywgMHg3MiwgMHg2MSwgMHg3NiwgMHg2NSwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM5LCAweDM3LCAweDIwLCAweDJGLCAweDYxLCAweDIwLCAweDcwLCAweDc1LCAweDc0LAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzksIDB4MzgsIDB4MjAsIDB4MkYsIDB4NjIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOSwgMHgzOSwgMHgyMCwgMHgyRiwgMHg2MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDMxLCAweDMwLCAweDMwLCAweDIwLCAweDJGLCAweDY0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLAorICAgIDB4MzEsIDB4MzAsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsCisgICAgMHgzMCwgMHgzMiwgMHgyMCwgMHgyRiwgMHg2NiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMCwKKyAgICAweDMzLCAweDIwLCAweDJGLCAweDY3LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMwLCAweDM0LAorICAgIDB4MjAsIDB4MkYsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzAsIDB4MzUsIDB4MjAsCisgICAgMHgyRiwgMHg2OSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMCwgMHgzNiwgMHgyMCwgMHgyRiwKKyAgICAweDZBLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMwLCAweDM3LCAweDIwLCAweDJGLCAweDZCLAorICAgIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzAsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NkMsIDB4MjAsCisgICAgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMCwgMHgzOSwgMHgyMCwgMHgyRiwgMHg2RCwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMxLCAweDMwLCAweDIwLCAweDJGLCAweDZFLCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzEsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NkYsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsCisgICAgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMSwgMHgzMiwgMHgyMCwgMHgyRiwgMHg3MCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwKKyAgICAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMxLCAweDMzLCAweDIwLCAweDJGLCAweDcxLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LAorICAgIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzEsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NzIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMSwgMHgzNSwgMHgyMCwgMHgyRiwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDMxLCAweDMxLCAweDM2LCAweDIwLCAweDJGLCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLAorICAgIDB4MzEsIDB4MzEsIDB4MzcsIDB4MjAsIDB4MkYsIDB4NzUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsCisgICAgMHgzMSwgMHgzOCwgMHgyMCwgMHgyRiwgMHg3NiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMSwKKyAgICAweDM5LCAweDIwLCAweDJGLCAweDc3LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMyLCAweDMwLAorICAgIDB4MjAsIDB4MkYsIDB4NzgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzIsIDB4MzEsIDB4MjAsCisgICAgMHgyRiwgMHg3OSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMiwgMHgzMiwgMHgyMCwgMHgyRiwKKyAgICAweDdBLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMyLCAweDMzLCAweDIwLCAweDJGLCAweDYyLAorICAgIDB4NzIsIDB4NjEsIDB4NjMsIDB4NjUsIDB4NkMsIDB4NjUsIDB4NjYsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzMSwgMHgzMiwgMHgzNCwgMHgyMCwgMHgyRiwgMHg2MiwgMHg2MSwgMHg3MiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMxLCAweDMyLCAweDM1LCAweDIwLCAweDJGLCAweDYyLCAweDcyLCAweDYxLCAweDYzLCAweDY1LCAweDcyLCAweDY5LCAweDY3LCAweDY4LAorICAgIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzIsIDB4MzYsIDB4MjAsIDB4MkYsIDB4NjEsCisgICAgMHg3MywgMHg2MywgMHg2OSwgMHg2OSwgMHg3NCwgMHg2OSwgMHg2QywgMHg2NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMxLCAweDMyLCAweDM4LCAweDIwLCAweDJGLCAweDQ1LCAweDc1LCAweDcyLCAweDZGLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzMsIDB4MzAsIDB4MjAsIDB4MkYsIDB4NzEsIDB4NzUsIDB4NkYsIDB4NzQsIDB4NjUsIDB4NzMsIDB4NjksCisgICAgMHg2RSwgMHg2NywgMHg2QywgMHg2MiwgMHg2MSwgMHg3MywgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDMxLCAweDMzLCAweDMxLCAweDIwLCAweDJGLCAweDY2LCAweDZDLCAweDZGLCAweDcyLCAweDY5LCAweDZFLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzMsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NzEsIDB4NzUsIDB4NkYsIDB4NzQsIDB4NjUsIDB4NjQsIDB4NjIsCisgICAgMHg2QywgMHg2MiwgMHg2MSwgMHg3MywgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMywKKyAgICAweDMzLCAweDIwLCAweDJGLCAweDY1LCAweDZDLCAweDZDLCAweDY5LCAweDcwLCAweDczLCAweDY5LCAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzMsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NjQsIDB4NjEsIDB4NjcsIDB4NjcsIDB4NjUsIDB4NzIsIDB4MjAsCisgICAgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMywgMHgzNSwgMHgyMCwgMHgyRiwgMHg2NCwgMHg2MSwgMHg2NywKKyAgICAweDY3LCAweDY1LCAweDcyLCAweDY0LCAweDYyLCAweDZDLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLAorICAgIDB4MzMsIDB4MzYsIDB4MjAsIDB4MkYsIDB4NjMsIDB4NjksIDB4NzIsIDB4NjMsIDB4NzUsIDB4NkQsIDB4NjYsIDB4NkMsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMywgMHgzNywgMHgyMCwgMHgyRiwgMHg3MCwgMHg2NSwgMHg3MiwgMHg3NCwKKyAgICAweDY4LCAweDZGLCAweDc1LCAweDczLCAweDYxLCAweDZFLCAweDY0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLAorICAgIDB4MzEsIDB4MzMsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NTMsIDB4NjMsIDB4NjEsIDB4NzIsIDB4NkYsIDB4NkUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMywgMHgzOSwgMHgyMCwgMHgyRiwgMHg2NywgMHg3NSwgMHg2OSwgMHg2QywgMHg3MywgMHg2OSwgMHg2RSwKKyAgICAweDY3LCAweDZDLCAweDZDLCAweDY1LCAweDY2LCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLAorICAgIDB4MzQsIDB4MzAsIDB4MjAsIDB4MkYsIDB4NEYsIDB4NDUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsCisgICAgMHgzNCwgMHgzNSwgMHgyMCwgMHgyRiwgMHg3MSwgMHg3NSwgMHg2RiwgMHg3NCwgMHg2NSwgMHg2QywgMHg2NSwgMHg2NiwgMHg3NCwgMHgyMCwgMHg3MCwgMHg3NSwKKyAgICAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM0LCAweDM2LCAweDIwLCAweDJGLCAweDcxLCAweDc1LCAweDZGLCAweDc0LCAweDY1LAorICAgIDB4NzIsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzQsCisgICAgMHgzNywgMHgyMCwgMHgyRiwgMHg3MSwgMHg3NSwgMHg2RiwgMHg3NCwgMHg2NSwgMHg2NCwgMHg2MiwgMHg2QywgMHg2QywgMHg2NSwgMHg2NiwgMHg3NCwgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM0LCAweDM4LCAweDIwLCAweDJGLCAweDcxLCAweDc1LCAweDZGLAorICAgIDB4NzQsIDB4NjUsIDB4NjQsIDB4NjIsIDB4NkMsIDB4NzIsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNCwgMHgzOSwgMHgyMCwgMHgyRiwgMHg2MiwgMHg3NSwgMHg2QywgMHg2QywgMHg2NSwgMHg3NCwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM1LCAweDMwLCAweDIwLCAweDJGLCAweDY1LCAweDZFLCAweDY0LCAweDYxLAorICAgIDB4NzMsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzUsIDB4MzEsIDB4MjAsIDB4MkYsCisgICAgMHg2NSwgMHg2RCwgMHg2NCwgMHg2MSwgMHg3MywgMHg2OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwKKyAgICAweDM1LCAweDMyLCAweDIwLCAweDJGLCAweDc0LCAweDY5LCAweDZDLCAweDY0LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzUsIDB4MzMsIDB4MjAsIDB4MkYsIDB4NzQsIDB4NzIsIDB4NjEsIDB4NjQsIDB4NjUsIDB4NkQsIDB4NjEsIDB4NzIsIDB4NkIsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNSwgMHgzNCwgMHgyMCwgMHgyRiwgMHg3MywgMHg2MywKKyAgICAweDYxLCAweDcyLCAweDZGLCAweDZFLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM1LCAweDM1LAorICAgIDB4MjAsIDB4MkYsIDB4NjcsIDB4NzUsIDB4NjksIDB4NkMsIDB4NzMsIDB4NjksIDB4NkUsIDB4NjcsIDB4NkMsIDB4NzIsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNSwgMHgzNiwgMHgyMCwgMHgyRiwgMHg2RiwgMHg2NSwKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM1LCAweDM5LCAweDIwLCAweDJGLCAweDU5LCAweDY0LAorICAgIDB4NjksIDB4NjUsIDB4NzIsIDB4NjUsIDB4NzMsIDB4NjksIDB4NzMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsCisgICAgMHgzMSwgMHgzNiwgMHgzMSwgMHgyMCwgMHgyRiwgMHg2NSwgMHg3OCwgMHg2MywgMHg2QywgMHg2MSwgMHg2RCwgMHg2NCwgMHg2RiwgMHg3NywgMHg2RSwgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM2LCAweDMyLCAweDIwLCAweDJGLCAweDYzLCAweDY1LCAweDZFLAorICAgIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzYsIDB4MzMsIDB4MjAsIDB4MkYsIDB4NzMsCisgICAgMHg3NCwgMHg2NSwgMHg3MiwgMHg2QywgMHg2OSwgMHg2RSwgMHg2NywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDMxLCAweDM2LCAweDM0LCAweDIwLCAweDJGLCAweDYzLCAweDc1LCAweDcyLCAweDcyLCAweDY1LCAweDZFLCAweDYzLCAweDc5LCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzYsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NzksIDB4NjUsIDB4NkUsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNiwgMHgzNiwgMHgyMCwgMHgyRiwgMHg2MiwgMHg3MiwgMHg2RiwgMHg2QiwKKyAgICAweDY1LCAweDZFLCAweDYyLCAweDYxLCAweDcyLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM2LAorICAgIDB4MzcsIDB4MjAsIDB4MkYsIDB4NzMsIDB4NjUsIDB4NjMsIDB4NzQsIDB4NjksIDB4NkYsIDB4NkUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNiwgMHgzOCwgMHgyMCwgMHgyRiwgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM2LCAweDM5LCAweDIwLCAweDJGLCAweDYzLCAweDZGLAorICAgIDB4NzAsIDB4NzksIDB4NzIsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsCisgICAgMHgzMSwgMHgzNywgMHgzMCwgMHgyMCwgMHgyRiwgMHg2RiwgMHg3MiwgMHg2NCwgMHg2NiwgMHg2NSwgMHg2RCwgMHg2OSwgMHg2RSwgMHg2OSwgMHg2RSwgMHg2NSwKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM3LCAweDMxLCAweDIwLCAweDJGLCAweDY3LCAweDc1LAorICAgIDB4NjksIDB4NkMsIDB4NkMsIDB4NjUsIDB4NkQsIDB4NkYsIDB4NzQsIDB4NkMsIDB4NjUsIDB4NjYsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNywgMHgzMiwgMHgyMCwgMHgyRiwgMHg2QywgMHg2RiwgMHg2NywgMHg2OSwgMHg2MywgMHg2MSwgMHg2QywKKyAgICAweDZFLCAweDZGLCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM3LCAweDM0LCAweDIwLAorICAgIDB4MkYsIDB4NzIsIDB4NjUsIDB4NjcsIDB4NjksIDB4NzMsIDB4NzQsIDB4NjUsIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNywgMHgzNSwgMHgyMCwgMHgyRiwgMHg2RCwgMHg2MSwgMHg2MywgMHg3MiwgMHg2RiwgMHg2RSwgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM3LCAweDM2LCAweDIwLCAweDJGLCAweDY0LCAweDY1LCAweDY3LAorICAgIDB4NzIsIDB4NjUsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzcsIDB4MzcsIDB4MjAsCisgICAgMHgyRiwgMHg3MCwgMHg2QywgMHg3NSwgMHg3MywgMHg2RCwgMHg2OSwgMHg2RSwgMHg3NSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM3LCAweDM4LCAweDIwLCAweDJGLCAweDc0LCAweDc3LCAweDZGLCAweDczLCAweDc1LCAweDcwLCAweDY1LCAweDcyLAorICAgIDB4NjksIDB4NkYsIDB4NzIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzcsIDB4MzksIDB4MjAsCisgICAgMHgyRiwgMHg3NCwgMHg2OCwgMHg3MiwgMHg2NSwgMHg2NSwgMHg3MywgMHg3NSwgMHg3MCwgMHg2NSwgMHg3MiwgMHg2OSwgMHg2RiwgMHg3MiwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM4LCAweDMwLCAweDIwLCAweDJGLCAweDYxLCAweDYzLCAweDc1LCAweDc0LAorICAgIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzgsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NkQsCisgICAgMHg3NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOCwgMHgzMiwgMHgyMCwgMHgyRiwgMHg3MCwKKyAgICAweDYxLCAweDcyLCAweDYxLCAweDY3LCAweDcyLCAweDYxLCAweDcwLCAweDY4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLAorICAgIDB4MjAsIDB4MzEsIDB4MzgsIDB4MzMsIDB4MjAsIDB4MkYsIDB4NzAsIDB4NjUsIDB4NzIsIDB4NjksIDB4NkYsIDB4NjQsIDB4NjMsIDB4NjUsIDB4NkUsIDB4NzQsCisgICAgMHg2NSwgMHg3MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOCwgMHgzNCwKKyAgICAweDIwLCAweDJGLCAweDYzLCAweDY1LCAweDY0LCAweDY5LCAweDZDLCAweDZDLCAweDYxLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzgsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NkYsIDB4NkUsIDB4NjUsIDB4NzMsIDB4NzUsIDB4NzAsIDB4NjUsIDB4NzIsIDB4NjksCisgICAgMHg2RiwgMHg3MiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOCwgMHgzNiwgMHgyMCwgMHgyRiwKKyAgICAweDZGLCAweDcyLCAweDY0LCAweDZELCAweDYxLCAweDczLCAweDYzLCAweDc1LCAweDZDLCAweDY5LCAweDZFLCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzgsIDB4MzcsIDB4MjAsIDB4MkYsIDB4NjcsIDB4NzUsIDB4NjksIDB4NkMsIDB4NkMsIDB4NjUsCisgICAgMHg2RCwgMHg2RiwgMHg3NCwgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDMxLCAweDM4LCAweDM4LCAweDIwLCAweDJGLCAweDZGLCAweDZFLCAweDY1LCAweDcxLCAweDc1LCAweDYxLCAweDcyLCAweDc0LCAweDY1LCAweDcyLAorICAgIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzgsIDB4MzksIDB4MjAsIDB4MkYsIDB4NkYsIDB4NkUsCisgICAgMHg2NSwgMHg2OCwgMHg2MSwgMHg2QywgMHg2NiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOSwKKyAgICAweDMwLCAweDIwLCAweDJGLCAweDc0LCAweDY4LCAweDcyLCAweDY1LCAweDY1LCAweDcxLCAweDc1LCAweDYxLCAweDcyLCAweDc0LCAweDY1LCAweDcyLCAweDczLAorICAgIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzksIDB4MzEsIDB4MjAsIDB4MkYsIDB4NzEsIDB4NzUsCisgICAgMHg2NSwgMHg3MywgMHg3NCwgMHg2OSwgMHg2RiwgMHg2RSwgMHg2NCwgMHg2RiwgMHg3NywgMHg2RSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM5LCAweDMyLCAweDIwLCAweDJGLCAweDQxLCAweDY3LCAweDcyLCAweDYxLCAweDc2LCAweDY1LCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzksIDB4MzMsIDB4MjAsIDB4MkYsIDB4NDEsIDB4NjEsIDB4NjMsIDB4NzUsCisgICAgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOSwgMHgzNCwgMHgyMCwgMHgyRiwKKyAgICAweDQxLCAweDYzLCAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDY2LCAweDZDLCAweDY1LCAweDc4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzksIDB4MzUsIDB4MjAsIDB4MkYsIDB4NDEsIDB4NzQsIDB4NjksIDB4NkMsIDB4NjQsIDB4NjUsIDB4MjAsCisgICAgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOSwgMHgzNiwgMHgyMCwgMHgyRiwgMHg0MSwgMHg2NCwgMHg2OSwKKyAgICAweDY1LCAweDcyLCAweDY1LCAweDczLCAweDY5LCAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLAorICAgIDB4MzksIDB4MzcsIDB4MjAsIDB4MkYsIDB4NDEsIDB4NzIsIDB4NjksIDB4NkUsIDB4NjcsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOSwgMHgzOCwgMHgyMCwgMHgyRiwgMHg0MSwgMHg0NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMxLCAweDM5LCAweDM5LCAweDIwLCAweDJGLCAweDQzLCAweDYzLCAweDY1LCAweDY0LCAweDY5LCAweDZDLCAweDZDLCAweDYxLCAweDIwLAorICAgIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzAsIDB4MzAsIDB4MjAsIDB4MkYsIDB4NDUsIDB4NjcsIDB4NzIsCisgICAgMHg2MSwgMHg3NiwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMCwgMHgzMSwgMHgyMCwKKyAgICAweDJGLCAweDQ1LCAweDYxLCAweDYzLCAweDc1LCAweDc0LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLAorICAgIDB4MzIsIDB4MzAsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NDUsIDB4NjMsIDB4NjksIDB4NzIsIDB4NjMsIDB4NzUsIDB4NkQsIDB4NjYsIDB4NkMsIDB4NjUsIDB4NzgsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMCwgMHgzMywgMHgyMCwgMHgyRiwgMHg0NSwgMHg2NCwKKyAgICAweDY5LCAweDY1LCAweDcyLCAweDY1LCAweDczLCAweDY5LCAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLAorICAgIDB4MzIsIDB4MzAsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NDksIDB4NjcsIDB4NzIsIDB4NjEsIDB4NzYsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMCwgMHgzNSwgMHgyMCwgMHgyRiwgMHg0OSwgMHg2MSwgMHg2MywgMHg3NSwgMHg3NCwgMHg2NSwgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMwLCAweDM2LCAweDIwLCAweDJGLCAweDQ5LCAweDYzLCAweDY5LAorICAgIDB4NzIsIDB4NjMsIDB4NzUsIDB4NkQsIDB4NjYsIDB4NkMsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzMiwgMHgzMCwgMHgzNywgMHgyMCwgMHgyRiwgMHg0OSwgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMwLCAweDM4LCAweDIwLCAweDJGLCAweDQ1LCAweDc0LCAweDY4LAorICAgIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzAsIDB4MzksIDB4MjAsIDB4MkYsIDB4NEUsIDB4NzQsCisgICAgMHg2OSwgMHg2QywgMHg2NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMSwgMHgzMCwKKyAgICAweDIwLCAweDJGLCAweDRGLCAweDY3LCAweDcyLCAweDYxLCAweDc2LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLAorICAgIDB4MjAsIDB4MzIsIDB4MzEsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NEYsIDB4NjEsIDB4NjMsIDB4NzUsIDB4NzQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsCisgICAgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMSwgMHgzMiwgMHgyMCwgMHgyRiwgMHg0RiwgMHg2MywgMHg2OSwgMHg3MiwgMHg2MywgMHg3NSwKKyAgICAweDZELCAweDY2LCAweDZDLCAweDY1LCAweDc4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMxLAorICAgIDB4MzMsIDB4MjAsIDB4MkYsIDB4NEYsIDB4NzQsIDB4NjksIDB4NkMsIDB4NjQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMSwgMHgzNCwgMHgyMCwgMHgyRiwgMHg0RiwgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMxLCAweDM1LCAweDIwLCAweDJGLCAweDZELCAweDc1LAorICAgIDB4NkMsIDB4NzQsIDB4NjksIDB4NzAsIDB4NkMsIDB4NzksIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsCisgICAgMHgzMSwgMHgzNiwgMHgyMCwgMHgyRiwgMHg0RiwgMHg3MywgMHg2QywgMHg2MSwgMHg3MywgMHg2OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMxLCAweDM3LCAweDIwLCAweDJGLCAweDU1LCAweDY3LCAweDcyLCAweDYxLCAweDc2LCAweDY1LCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzEsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NTUsIDB4NjEsIDB4NjMsIDB4NzUsCisgICAgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMSwgMHgzOSwgMHgyMCwgMHgyRiwKKyAgICAweDU1LCAweDYzLCAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDY2LCAweDZDLCAweDY1LCAweDc4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzIsIDB4MzAsIDB4MjAsIDB4MkYsIDB4NTUsIDB4NjQsIDB4NjksIDB4NjUsIDB4NzIsIDB4NjUsIDB4NzMsCisgICAgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMiwgMHgzMSwgMHgyMCwgMHgyRiwKKyAgICAweDU5LCAweDYxLCAweDYzLCAweDc1LCAweDc0LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLAorICAgIDB4MzIsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NTQsIDB4NjgsIDB4NkYsIDB4NzIsIDB4NkUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMiwgMHgzMywgMHgyMCwgMHgyRiwgMHg2NywgMHg2NSwgMHg3MiwgMHg2RCwgMHg2MSwgMHg2RSwgMHg2NCwgMHg2MiwgMHg2QywKKyAgICAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMyLCAweDM0LCAweDIwLCAweDJGLCAweDYxLAorICAgIDB4NjcsIDB4NzIsIDB4NjEsIDB4NzYsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzIsCisgICAgMHgzNSwgMHgyMCwgMHgyRiwgMHg2MSwgMHg2MSwgMHg2MywgMHg3NSwgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMyLCAweDMyLCAweDM2LCAweDIwLCAweDJGLCAweDYxLCAweDYzLCAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDY2LCAweDZDLAorICAgIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzIsIDB4MzcsIDB4MjAsIDB4MkYsCisgICAgMHg2MSwgMHg3NCwgMHg2OSwgMHg2QywgMHg2NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwKKyAgICAweDMyLCAweDM4LCAweDIwLCAweDJGLCAweDYxLCAweDY0LCAweDY5LCAweDY1LCAweDcyLCAweDY1LCAweDczLCAweDY5LCAweDczLCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzIsIDB4MzksIDB4MjAsIDB4MkYsIDB4NjEsIDB4NzIsIDB4NjksIDB4NkUsIDB4NjcsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMywgMHgzMCwgMHgyMCwgMHgyRiwgMHg2MSwgMHg2NSwKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMzLCAweDMxLCAweDIwLCAweDJGLCAweDYzLCAweDYzLAorICAgIDB4NjUsIDB4NjQsIDB4NjksIDB4NkMsIDB4NkMsIDB4NjEsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsCisgICAgMHgzMywgMHgzMiwgMHgyMCwgMHgyRiwgMHg2NSwgMHg2NywgMHg3MiwgMHg2MSwgMHg3NiwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMzLCAweDMzLCAweDIwLCAweDJGLCAweDY1LCAweDYxLCAweDYzLCAweDc1LCAweDc0LCAweDY1LCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzMsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NjUsIDB4NjMsIDB4NjksIDB4NzIsCisgICAgMHg2MywgMHg3NSwgMHg2RCwgMHg2NiwgMHg2QywgMHg2NSwgMHg3OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDMyLCAweDMzLCAweDM1LCAweDIwLCAweDJGLCAweDY1LCAweDY0LCAweDY5LCAweDY1LCAweDcyLCAweDY1LCAweDczLCAweDY5LCAweDczLCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzMsIDB4MzYsIDB4MjAsIDB4MkYsIDB4NjksIDB4NjcsIDB4NzIsIDB4NjEsCisgICAgMHg3NiwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMywgMHgzNywgMHgyMCwgMHgyRiwKKyAgICAweDY5LCAweDYxLCAweDYzLCAweDc1LCAweDc0LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLAorICAgIDB4MzMsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NjksIDB4NjMsIDB4NjksIDB4NzIsIDB4NjMsIDB4NzUsIDB4NkQsIDB4NjYsIDB4NkMsIDB4NjUsIDB4NzgsIDB4MjAsCisgICAgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMywgMHgzOSwgMHgyMCwgMHgyRiwgMHg2OSwgMHg2NCwgMHg2OSwKKyAgICAweDY1LCAweDcyLCAweDY1LCAweDczLCAweDY5LCAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLAorICAgIDB4MzQsIDB4MzAsIDB4MjAsIDB4MkYsIDB4NjUsIDB4NzQsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsCisgICAgMHgzMiwgMHgzNCwgMHgzMSwgMHgyMCwgMHgyRiwgMHg2RSwgMHg3NCwgMHg2OSwgMHg2QywgMHg2NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwKKyAgICAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDM0LCAweDMyLCAweDIwLCAweDJGLCAweDZGLCAweDY3LCAweDcyLCAweDYxLCAweDc2LCAweDY1LCAweDIwLAorICAgIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzQsIDB4MzMsIDB4MjAsIDB4MkYsIDB4NkYsIDB4NjEsIDB4NjMsCisgICAgMHg3NSwgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzNCwgMHgzNCwgMHgyMCwKKyAgICAweDJGLCAweDZGLCAweDYzLCAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDY2LCAweDZDLCAweDY1LCAweDc4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzQsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NkYsIDB4NzQsIDB4NjksIDB4NkMsIDB4NjQsIDB4NjUsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzNCwgMHgzNiwgMHgyMCwgMHgyRiwgMHg2RiwgMHg2NCwKKyAgICAweDY5LCAweDY1LCAweDcyLCAweDY1LCAweDczLCAweDY5LCAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLAorICAgIDB4MzIsIDB4MzQsIDB4MzcsIDB4MjAsIDB4MkYsIDB4NjQsIDB4NjksIDB4NzYsIDB4NjksIDB4NjQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzNCwgMHgzOCwgMHgyMCwgMHgyRiwgMHg2RiwgMHg3MywgMHg2QywgMHg2MSwgMHg3MywgMHg2OCwgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDM0LCAweDM5LCAweDIwLCAweDJGLCAweDc1LCAweDY3LCAweDcyLAorICAgIDB4NjEsIDB4NzYsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzUsIDB4MzAsIDB4MjAsCisgICAgMHgyRiwgMHg3NSwgMHg2MSwgMHg2MywgMHg3NSwgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDMyLCAweDM1LCAweDMxLCAweDIwLCAweDJGLCAweDc1LCAweDYzLCAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDY2LCAweDZDLCAweDY1LCAweDc4LAorICAgIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzUsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NzUsIDB4NjQsCisgICAgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDMyLCAweDM1LCAweDMzLCAweDIwLCAweDJGLCAweDc5LCAweDYxLCAweDYzLCAweDc1LCAweDc0LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzUsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NzQsIDB4NjgsIDB4NkYsIDB4NzIsIDB4NkUsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzNSwgMHgzNSwgMHgyMCwgMHgyRiwgMHg3OSwgMHg2NCwgMHg2OSwgMHg2NSwKKyAgICAweDcyLCAweDY1LCAweDczLCAweDY5LCAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDcyLCAweDY1LCAweDYxLCAweDY0LCAweDZGLCAweDZFLAorICAgIDB4NkMsIDB4NzksIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NTAsIDB4NjEsIDB4NjksIDB4NkUsIDB4NzQsIDB4NTQsIDB4NzksIDB4NzAsCisgICAgMHg2NSwgMHgyMCwgMHgzMCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg1NCwgMHg3OSwgMHg3MCwKKyAgICAweDY1LCAweDIwLCAweDMxLCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLCAweDI0LCAweDQyLCAweDZDLCAweDY1LCAweDZFLCAweDY0LCAweDIwLAorICAgIDB4N0IsIDB4MjAsIDB4MzAsIDB4MkUsIDB4MzEsIDB4MzMsIDB4MzQsIDB4MzksIDB4MjAsIDB4NkQsIDB4NzUsIDB4NkMsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsCisgICAgMHg2OCwgMHgyMCwgMHgzMCwgMHgyRSwgMHgzMywgMHgzOCwgMHgzNCwgMHgzOSwgMHgyMCwgMHg2RCwgMHg3NSwgMHg2QywgMHgyMCwgMHg2MSwgMHg2NCwgMHg2NCwKKyAgICAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDMwLCAweDJFLCAweDMxLCAweDM2LCAweDM0LCAweDM0LCAweDIwLCAweDZELCAweDc1LCAweDZDLAorICAgIDB4MjAsIDB4NjEsIDB4NjQsIDB4NjQsIDB4MjAsIDB4NjEsIDB4NjQsIDB4NjQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjIsIDB4NjksIDB4NkUsIDB4NjQsIDB4MjAsCisgICAgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0RCwgMHg2MSwgMHg3NCwgMHg3MiwgMHg2OSwgMHg3OCwgMHgyMCwKKyAgICAweDVCLCAweDIwLCAweDMwLCAweDJFLCAweDMwLCAweDMwLCAweDMxLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDIwLCAweDMwLCAweDIwLCAweDMwLCAweDIwLAorICAgIDB4MzAsIDB4MkUsIDB4MzAsIDB4MzAsIDB4MzEsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NUQsIDB4MjAsCisgICAgMHg3MiwgMHg2NSwgMHg2MSwgMHg2NCwgMHg2RiwgMHg2RSwgMHg2QywgMHg3OSwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg0NiwgMHg2RiwKKyAgICAweDZFLCAweDc0LCAweDQyLCAweDQyLCAweDZGLCAweDc4LCAweDIwLCAweDdCLCAweDJELCAweDMxLCAweDMxLCAweDM5LCAweDIwLCAweDJELCAweDMyLCAweDM1LAorICAgIDB4MzcsIDB4MjAsIDB4MzEsIDB4MzEsIDB4MzUsIDB4MzAsIDB4MjAsIDB4MzgsIDB4MzcsIDB4MzIsIDB4N0QsIDB4MjAsIDB4NzIsIDB4NjUsIDB4NjEsIDB4NjQsCisgICAgMHg2RiwgMHg2RSwgMHg2QywgMHg3OSwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg0MiwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NCwgMHgyMCwKKyAgICAweDMzLCAweDIwLCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDYyLCAweDY1LCAweDY3LCAweDY5LCAweDZFLAorICAgIDB4MEQsIDB4MkYsIDB4NDYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4NDIsIDB4NDIsIDB4NkYsIDB4NzgsIDB4MjAsIDB4N0IsIDB4N0IsIDB4MjAsIDB4MkQsIDB4MzUsCisgICAgMHgzNSwgMHgyMCwgMHgyRCwgMHgzMSwgMHgzMSwgMHgzMiwgMHgyMCwgMHgyRCwgMHgzMSwgMHgzNiwgMHgzMiwgMHgyMCwgMHgyRCwgMHgzMSwgMHgzNCwgMHgzNSwKKyAgICAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDJELCAweDMyLCAweDM1LCAweDM3LCAweDIwLCAweDJELCAweDMyLCAweDM1LCAweDM3LCAweDIwLCAweDJELAorICAgIDB4MzIsIDB4MzUsIDB4MzcsIDB4MjAsIDB4MkQsIDB4MzIsIDB4MzUsIDB4MzcsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MzQsIDB4MzIsIDB4MzQsCisgICAgMHgyMCwgMHgzMSwgMHgzMSwgMHgzNSwgMHgzNiwgMHgyMCwgMHgzMSwgMHgzMywgMHgzOCwgMHgzOSwgMHgyMCwgMHgzMSwgMHgzOSwgMHgzOCwgMHgzMSwgMHgyMCwKKyAgICAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDM4LCAweDM3LCAweDMyLCAweDIwLCAweDM4LCAweDM3LCAweDMyLCAweDIwLCAweDM4LCAweDM3LCAweDMyLCAweDIwLAorICAgIDB4MzgsIDB4MzcsIDB4MzIsIDB4MjAsIDB4N0QsIDB4N0QsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NTAsIDB4NzIsIDB4NjksIDB4NzYsCisgICAgMHg2MSwgMHg3NCwgMHg2NSwgMHgyMCwgMHgzMSwgMHgzNCwgMHgyMCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwKKyAgICAweDY1LCAweDZFLCAweDY0LCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDI1LCAweDIwLCAweDQzLCAweDZGLCAweDcwLCAweDc5LCAweDcyLCAweDY5LAorICAgIDB4NjcsIDB4NjgsIDB4NzQsIDB4MjAsIDB4MjgsIDB4NjMsIDB4MjksIDB4MjAsIDB4MzEsIDB4MzksIDB4MzksIDB4MzAsIDB4MkQsIDB4MzEsIDB4MzksIDB4MzksCisgICAgMHgzNCwgMHgyMCwgMHg0MSwgMHg2NCwgMHg2RiwgMHg2MiwgMHg2NSwgMHgyMCwgMHg1MywgMHg3OSwgMHg3MywgMHg3NCwgMHg2NSwgMHg2RCwgMHg3MywgMHgyMCwKKyAgICAweDQ5LCAweDZFLCAweDYzLCAweDZGLCAweDcyLCAweDcwLCAweDZGLCAweDcyLCAweDYxLCAweDc0LCAweDY1LCAweDY0LCAweDBELCAweDI1LCAweDIwLCAweDQxLAorICAgIDB4NkMsIDB4NkMsIDB4MjAsIDB4NTIsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4NzMsIDB4MjAsIDB4NTIsIDB4NjUsIDB4NzMsIDB4NjUsIDB4NzIsIDB4NzYsCisgICAgMHg2NSwgMHg2NCwgMHgyRSwgMHgwRCwgMHgyRiwgMHg3MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwKKyAgICAweDc3LCAweDY4LCAweDY1LCAweDcyLCAweDY1LCAweDBELCAweDdCLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDYzLCAweDc1LCAweDcyLCAweDcyLAorICAgIDB4NjUsIDB4NkUsIDB4NzQsIDB4NzMsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzMsIDB4NjUsIDB4NzQsIDB4NzMsCisgICAgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3NCwgMHg3MiwgMHg3NSwgMHg2NSwgMHgyMCwgMHg3MywgMHg2NSwgMHg3NCwKKyAgICAweDczLCAweDY4LCAweDYxLCAweDcyLCAweDY1LCAweDY0LCAweDIwLCAweDczLCAweDY4LCAweDYxLCAweDcyLCAweDY1LCAweDY0LCAweDY0LCAweDY5LCAweDYzLAorICAgIDB4NzQsIDB4MjAsIDB4N0QsIDB4MEQsIDB4N0IsIDB4MjAsIDB4N0IsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NzUsIDB4NzMsIDB4NjUsIDB4NzIsIDB4NjQsIDB4NjksCisgICAgMHg2MywgMHg3NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgwRCwKKyAgICAweDJGLCAweDZELCAweDYxLCAweDZCLCAweDY1LCAweDYyLCAweDZDLCAweDY1LCAweDZFLCAweDY0LCAweDY1LCAweDY0LCAweDY2LCAweDZGLCAweDZFLCAweDc0LAorICAgIDB4MjAsIDB4NzcsIDB4NjgsIDB4NjUsIDB4NzIsIDB4NjUsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MkYsIDB4NkQsIDB4NjEsIDB4NkIsIDB4NjUsIDB4NjIsIDB4NkMsCisgICAgMHg2NSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDJGLCAweDZGLCAweDcwLCAweDY1LCAweDcyLCAweDYxLCAweDc0LCAweDZGLCAweDcyLAorICAgIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NjYsIDB4NjEsCisgICAgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgzMCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDJGLCAweDY5LCAweDZFLCAweDc0LCAweDY1LCAweDY3LCAweDY1LCAweDcyLCAweDc0LAorICAgIDB4NzksIDB4NzAsIDB4NjUsIDB4MjAsIDB4NkUsIDB4NjUsIDB4MEQsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsCisgICAgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgzMSwgMHgzMSwgMHgyMCwgMHg2QywgMHg3NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwKKyAgICAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELAorICAgIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzQsIDB4NzIsIDB4NzUsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsCisgICAgMHgwRCwgMHg3QiwgMHgyMCwgMHgyRiwgMHg2RCwgMHg2MSwgMHg2QiwgMHg2NSwgMHg2MiwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg2NCwgMHg2NiwKKyAgICAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDdCLCAweDBELCAweDMxLCAweDMxLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDBELCAweDMyLCAweDIwLCAweDYzLAorICAgIDB4NkYsIDB4NzAsIDB4NzksIDB4MjAsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsIDB4NjgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsCisgICAgMHgyRiwgMHg1NywgMHg2NSwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg1NiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwgMHg3MiwgMHgyMCwgMHg2NywgMHg2NSwKKyAgICAweDc0LCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDY1LCAweDcxLCAweDBELCAweDdCLCAweDIwLCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjEsIDB4NjQsIDB4NjQsIDB4MjAsIDB4N0QsCisgICAgMHgyMCwgMHg2NiwgMHg2RiwgMHg3MiwgMHg2MSwgMHg2QywgMHg2QywgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHg2MSwgMHg2MiwKKyAgICAweDczLCAweDIwLCAweDJFLCAweDMwLCAweDMwLCAweDMxLCAweDIwLCAweDY3LCAweDc0LCAweDIwLCAweDdELCAweDBELCAweDdCLCAweDIwLCAweDc0LCAweDcyLAorICAgIDB4NzUsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0IsIDB4MjAsIDB4MkYsIDB4NkQsCisgICAgMHg2MSwgMHg2QiwgMHg2NSwgMHg2MiwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg2MywKKyAgICAweDc2LCAweDc4LCAweDIwLCAweDY1LCAweDcyLCAweDcyLCAweDZGLCAweDcyLCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDJGLCAweDcyLCAweDYxLAorICAgIDB4NkUsIDB4NjcsIDB4NjUsIDB4NjMsIDB4NjgsIDB4NjUsIDB4NjMsIDB4NkIsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsCisgICAgMHg2MywgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgwRCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDZELCAweDYxLCAweDc4LCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDY0LCAweDY5LAorICAgIDB4NjMsIDB4NzQsIDB4MjAsIDB4NjIsIDB4NjUsIDB4NjcsIDB4NjksIDB4NkUsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsIDB4NjUsCisgICAgMHgyMCwgMHg3QiwgMHgyMCwgMHgyRiwgMHg0NiwgMHg0OSwgMHg0NCwgMHgyMCwgMHgyRiwgMHg1NSwgMHg2RSwgMHg2OSwgMHg3MSwgMHg3NSwgMHg2NSwgMHg0OSwKKyAgICAweDQ0LCAweDIwLCAweDJGLCAweDU4LCAweDU1LCAweDQ5LCAweDQ0LCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDMzLCAweDIwLCAweDY5LCAweDZFLAorICAgIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4NkYsIDB4NzIsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjYsIDB4NkYsIDB4NzIsIDB4NjEsCisgICAgMHg2QywgMHg2QywgMHgwRCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwKKyAgICAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDBELCAweDdELCAweDIwLAorICAgIDB4NjYsIDB4NkYsIDB4NzIsIDB4NjEsIDB4NkMsIDB4NkMsIDB4MEQsIDB4MkYsIDB4NTgsIDB4NTUsIDB4NDksIDB4NDQsIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjMsCisgICAgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwgMHg2QiwgMHg2RSwgMHg2RiwgMHg3NywgMHg2RSwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwKKyAgICAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDMyLCAweDIwLCAweDY5LCAweDZFLCAweDY0LAorICAgIDB4NjUsIDB4NzgsIDB4MjAsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsIDB4NjgsIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHgzMCwgMHgyMCwgMHg2NywgMHg3NCwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDIwLCAweDYzLAorICAgIDB4NkYsIDB4NzAsIDB4NzksIDB4MEQsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsCisgICAgMHgyMCwgMHg3QiwgMHgyMCwgMHgzNiwgMHgzNSwgMHgzNSwgMHgzMywgMHgzNiwgMHgyMCwgMHg2RCwgMHg3NSwgMHg2QywgMHgyMCwgMHg2MywgMHg3NiwgMHg2OSwKKyAgICAweDIwLCAweDMzLCAweDIwLCAweDYzLCAweDZGLCAweDcwLCAweDc5LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLAorICAgIDB4MzEsIDB4MjAsIDB4NjEsIDB4NjQsIDB4NjQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjYsIDB4NkYsIDB4NzIsIDB4NjEsIDB4NkMsIDB4NkMsIDB4MjAsIDB4NzAsCisgICAgMHg2RiwgMHg3MCwgMHgyMCwgMHgyRiwgMHg1OCwgMHg1NSwgMHg0OSwgMHg0NCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NCwgMHg2NSwKKyAgICAweDY2LCAweDBELCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDdELCAweDIwLAorICAgIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsCisgICAgMHg2RiwgMHg3MCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgwRCwgMHg3QiwgMHgyMCwgMHgyRiwgMHg1MCwKKyAgICAweDcyLCAweDY5LCAweDc2LCAweDYxLCAweDc0LCAweDY1LCAweDIwLCAweDJGLCAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDQ5LCAweDZFLCAweDY2LCAweDZGLAorICAgIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4NkMsIDB4NkYsIDB4NjEsIDB4NjQsIDB4MjAsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHg2RCwgMHg2MSwgMHg3OCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwKKyAgICAweDIwLCAweDYyLCAweDY1LCAweDY3LCAweDY5LCAweDZFLCAweDIwLCAweDdCLCAweDBELCAweDY2LCAweDYxLCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdCLAorICAgIDB4MjAsIDB4MkYsIDB4NTUsIDB4NkUsIDB4NjksIDB4NzEsIDB4NzUsIDB4NjUsIDB4NDksIDB4NDQsIDB4MjAsIDB4MkYsIDB4NTgsIDB4NTUsIDB4NDksIDB4NDQsCisgICAgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgzMywgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3MSwgMHgyMCwKKyAgICAweDZGLCAweDcyLCAweDIwLCAweDdELCAweDIwLCAweDY2LCAweDZGLCAweDcyLCAweDYxLCAweDZDLCAweDZDLCAweDBELCAweDdCLCAweDIwLCAweDcwLCAweDZGLAorICAgIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MjAsIDB4N0QsIDB4MjAsCisgICAgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2NiwgMHg2RiwgMHg3MiwgMHg2MSwgMHg2QywgMHg2QywgMHgyMCwKKyAgICAweDYzLCAweDc1LCAweDcyLCAweDcyLCAweDY1LCAweDZFLCAweDc0LCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDY1LCAweDZFLCAweDY0LCAweDIwLAorICAgIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjYsIDB4NkYsIDB4NzIsIDB4NjEsIDB4NkMsIDB4NkMsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgyRiwgMHg1NywgMHg2NSwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg1NiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwgMHg3MiwgMHgyMCwgMHg2NSwKKyAgICAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDJGLCAweDI0LCAweDQyLCAweDZDLAorICAgIDB4NjUsIDB4NkUsIDB4NjQsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NUIsIDB4MEQsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsCisgICAgMHg2NiwgMHg2MSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2QywKKyAgICAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDMxLCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDJELCAweDMxLCAweDIwLCAweDMxLAorICAgIDB4MjAsIDB4N0IsIDB4MEQsIDB4MzEsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4NkMsCisgICAgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHgzMywgMHgyMCwgMHgyRCwgMHgzMSwgMHgyMCwgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywgMHgyMCwKKyAgICAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMwLCAweDIwLCAweDY1LCAweDcxLAorICAgIDB4MjAsIDB4N0IsIDB4MEQsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4N0IsCisgICAgMHgyMCwgMHgyRiwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2QywgMHg2RiwgMHg2MSwgMHg2NCwgMHgyMCwgMHgzMywgMHgyMCwgMHgzMSwgMHgyMCwKKyAgICAweDcyLCAweDZGLCAweDZDLCAweDZDLCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDBELCAweDJGLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDZDLAorICAgIDB4NkYsIDB4NjEsIDB4NjQsIDB4MjAsIDB4MzMsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NzIsIDB4NkYsIDB4NkMsIDB4NkMsIDB4MEQsIDB4N0QsIDB4MjAsIDB4N0IsCisgICAgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg2NSwgMHg3MSwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwKKyAgICAweDdELCAweDBELCAweDdCLCAweDIwLCAweDMyLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDdCLCAweDIwLCAweDJGLCAweDY1LAorICAgIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NkMsIDB4NkYsIDB4NjEsIDB4NjQsIDB4MjAsIDB4MzQsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NzIsIDB4NkYsIDB4NkMsCisgICAgMHg2QywgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgwRCwgMHgzMywgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywgMHgyMCwKKyAgICAweDJGLCAweDZELCAweDc1LCAweDZDLCAweDIwLCAweDZDLCAweDZGLCAweDYxLCAweDY0LCAweDIwLCAweDMzLCAweDIwLCAweDMxLCAweDIwLCAweDcyLCAweDZGLAorICAgIDB4NkMsIDB4NkMsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4MzEsIDB4MjAsIDB4NjksIDB4NkUsCisgICAgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgyRiwgMHg2MSwgMHg2NCwgMHg2NCwgMHgyMCwgMHg2QywgMHg2RiwgMHg2MSwgMHg2NCwgMHgyMCwKKyAgICAweDMzLCAweDIwLCAweDMxLCAweDIwLCAweDcyLCAweDZGLCAweDZDLCAweDZDLCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDBELCAweDY1LCAweDc4LAorICAgIDB4NjMsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzQsIDB4NzIsIDB4NzUsIDB4NjUsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsCisgICAgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgwRCwgMHg3RCwgMHgyMCwgMHg2NiwgMHg2RiwgMHg3MiwgMHgwRCwKKyAgICAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDdCLCAweDIwLCAweDJGLCAweDYxLCAweDY0LCAweDY0LCAweDIwLCAweDZDLCAweDZGLCAweDYxLCAweDY0LCAweDIwLAorICAgIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MEQsIDB4NUQsIDB4MjAsIDB4NjMsIDB4NzYsIDB4NzgsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4N0IsCisgICAgMHgyMCwgMHgzMiwgMHgyMCwgMHg2MywgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHg2NSwKKyAgICAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDZFLCAweDY1LCAweDIwLCAweDdCLCAweDIwLAorICAgIDB4MkYsIDB4NkQsIDB4NjEsIDB4NkIsIDB4NjUsIDB4NjIsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjQsIDB4NjUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsCisgICAgMHgyMCwgMHg2MywgMHg3NiwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3MiwgMHg3MiwgMHg2RiwgMHg3MiwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHgyRiwKKyAgICAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDYzLCAweDY4LCAweDY1LCAweDYzLCAweDZCLCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDY1LCAweDc4LAorICAgIDB4NjUsIDB4NjMsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MEQsIDB4MzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4MzEsIDB4MjAsIDB4MzMsIDB4MjAsCisgICAgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MywKKyAgICAweDc1LCAweDYyLCAweDIwLCAweDdCLCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM0LCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LAorICAgIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MzMsCisgICAgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwKKyAgICAweDZELCAweDc1LCAweDZDLCAweDIwLCAweDYxLCAweDY0LCAweDY0LCAweDBELCAweDdELCAweDIwLCAweDY2LCAweDZGLCAweDcyLCAweDBELCAweDY1LCAweDc4LAorICAgIDB4NjMsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsCisgICAgMHg3RCwgMHgwRCwgMHg3QiwgMHgyMCwgMHg3QiwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgyMCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDJGLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDc0LCAweDc5LCAweDcwLAorICAgIDB4NjUsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MkYsIDB4NzAsIDB4NjEsIDB4NjMsIDB4NkIsIDB4NjUsCisgICAgMHg2NCwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgyMCwgMHg2NSwgMHg3MSwgMHgyMCwgMHg2RiwgMHg3MiwKKyAgICAweDIwLCAweDdCLCAweDBELCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDMxLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDJGLAorICAgIDB4NDYsIDB4NkYsIDB4NzIsIDB4NjMsIDB4NjUsIDB4NDIsIDB4NkYsIDB4NkMsIDB4NjQsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4N0IsIDB4MEQsIDB4MzUsCisgICAgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHgzMCwgMHgyMCwgMHgzMCwgMHgyMCwgMHgzMSwgMHgyMCwgMHgzMywgMHgyMCwgMHg2OSwKKyAgICAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDMxLCAweDIwLCAweDczLCAweDc1LAorICAgIDB4NjIsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzQsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsCisgICAgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgzMiwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwKKyAgICAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDYxLCAweDY0LCAweDY0LCAweDIwLAorICAgIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsCisgICAgMHgwRCwgMHg3RCwgMHgyMCwgMHg2NiwgMHg2RiwgMHg3MiwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwKKyAgICAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDBELCAweDMyLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LAorICAgIDB4MjAsIDB4MkYsIDB4NDYsIDB4NkYsIDB4NzIsIDB4NjMsIDB4NjUsIDB4NDIsIDB4NkYsIDB4NkMsIDB4NjQsIDB4NTQsIDB4NjgsIDB4NzIsIDB4NjUsIDB4NzMsCisgICAgMHg2OCwgMHg2RiwgMHg2QywgMHg2NCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2NywgMHg3NCwgMHgyMCwgMHgzMywgMHgyMCwgMHg2MywgMHg2RiwKKyAgICAweDcwLCAweDc5LCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDBELCAweDdCLCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLAorICAgIDB4MzEsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsIDB4NjgsIDB4MjAsIDB4NkUsCisgICAgMHg2NSwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg2NiwgMHg2MSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwKKyAgICAweDdCLCAweDBELCAweDc0LCAweDcyLCAweDc1LCAweDY1LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDdCLCAweDIwLCAweDc0LCAweDc5LAorICAgIDB4NzAsIDB4NjUsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MkYsIDB4NjksIDB4NkUsIDB4NzQsIDB4NjUsIDB4NjcsIDB4NjUsIDB4NzIsIDB4NzQsCisgICAgMHg3OSwgMHg3MCwgMHg2NSwgMHgyMCwgMHg2NSwgMHg3MSwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHgyRiwgMHg3MiwgMHg2NSwgMHg2MSwKKyAgICAweDZDLCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDZGLCAweDcyLAorICAgIDB4MjAsIDB4NjEsIDB4NkUsIDB4NjQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjYsIDB4NkYsIDB4NzIsIDB4NjEsIDB4NkMsIDB4NkMsIDB4MEQsIDB4N0QsIDB4MjAsCisgICAgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgwRCwgMHgzMiwgMHgyMCwgMHg2MywgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwKKyAgICAweDM4LCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDY1LCAweDc4LCAweDY1LAorICAgIDB4NjMsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4MzUsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsCisgICAgMHgzNSwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2NSwgMHg2MywgMHgyMCwgMHg3RCwgMHgwRCwgMHg3QiwKKyAgICAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LAorICAgIDB4MjAsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MjAsIDB4MzEsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzgsCisgICAgMHg2MywgMHg2OCwgMHg2NSwgMHg2MywgMHg2QiwgMHgyMCwgMHg3QiwgMHgyMCwgMHg2MywgMHg3NiwgMHg3OCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwKKyAgICAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDMxLCAweDIwLCAweDczLCAweDc1LAorICAgIDB4NjIsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsCisgICAgMHg3QiwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMywgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwKKyAgICAweDYzLCAweDY4LCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MkYsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4MjAsIDB4NjUsCisgICAgMHg3MSwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHgyRiwgMHg3MCwgMHg2MSwgMHg2MywgMHg2QiwgMHg2NSwgMHg2NCwgMHg2MSwgMHg3MiwKKyAgICAweDcyLCAweDYxLCAweDc5LCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDZGLCAweDcyLCAweDIwLCAweDdCLCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzAsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4MzYsIDB4MjAsIDB4NjksCisgICAgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2NSwgMHg2MywgMHgyMCwgMHg3QiwgMHgwRCwgMHgzOSwgMHgyMCwgMHg2OSwgMHg2RSwKKyAgICAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDM5LCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LAorICAgIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MjAsCisgICAgMHgzMiwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHgzMywgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDdELCAweDIwLCAweDY2LCAweDZGLCAweDcyLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLAorICAgIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjksCisgICAgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHgzMywgMHgyMCwgMHg2MywgMHg2RiwgMHg3MCwgMHg3OSwgMHgwRCwgMHgzMSwgMHgyMCwgMHg2OSwKKyAgICAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDJGLCAweDUzLCAweDc0LCAweDY1LCAweDZELCAweDUzLCAweDZFLAorICAgIDB4NjEsIDB4NzAsIDB4NDgsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MkYsIDB4NTMsIDB4NzQsIDB4NjUsCisgICAgMHg2RCwgMHg1MywgMHg2RSwgMHg2MSwgMHg3MCwgMHg1NiwgMHgyMCwgMHg2NSwgMHg3MSwgMHgyMCwgMHg2RiwgMHg3MiwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDMxLCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLAorICAgIDB4N0IsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NkMsIDB4NjUsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjksCisgICAgMHg3NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwKKyAgICAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDMzLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDYzLAorICAgIDB4NjgsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsCisgICAgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHgzMiwgMHgyMCwgMHg2MywgMHg2RiwKKyAgICAweDcwLCAweDc5LCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDdCLCAweDBELCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDMyLCAweDIwLCAweDY5LCAweDZFLAorICAgIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NzAsIDB4NzUsCisgICAgMHg3NCwgMHgyMCwgMHgzMCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgyMCwgMHg2QywgMHg2NSwgMHgyMCwgMHg3QiwgMHgyMCwgMHgzMSwgMHgyMCwKKyAgICAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDdELCAweDBELCAweDdCLCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLAorICAgIDB4MzEsIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsCisgICAgMHg2MywgMHg2OCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHgzMywgMHgyMCwgMHg2OSwgMHg2RSwKKyAgICAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDBELCAweDMzLCAweDIwLCAweDY5LAorICAgIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsCisgICAgMHg3OCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwKKyAgICAweDBELCAweDMzLCAweDIwLCAweDYzLCAweDZGLCAweDcwLCAweDc5LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDBELAorICAgIDB4MzIsIDB4MjAsIDB4NjMsIDB4NkYsIDB4NzAsIDB4NzksIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsCisgICAgMHg3NCwgMHg2OCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHg2QywgMHg3NCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgzMSwgMHgyMCwKKyAgICAweDYxLCAweDY0LCAweDY0LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLAorICAgIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NkMsIDB4NkYsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzMCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHgzMCwgMHgyMCwgMHg2QywgMHg2NSwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMwLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDdCLCAweDIwLCAweDMwLCAweDIwLCAweDY3LCAweDc0LCAweDIwLAorICAgIDB4N0IsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjksIDB4NzQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NjEsIDB4NjQsCisgICAgMHg2NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2NiwgMHg2RiwgMHg3MiwgMHg2MSwgMHg2QywgMHg2QywgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwKKyAgICAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDY1LCAweDc4LAorICAgIDB4NjMsIDB4NjgsIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4NjksIDB4NkUsIDB4NzQsIDB4NjUsIDB4NzIsIDB4NzYsCisgICAgMHg2MSwgMHg2QywgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwKKyAgICAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDIwLCAweDdELCAweDBELCAweDdCLCAweDIwLCAweDJGLCAweDY0LAorICAgIDB4NjksIDB4NjMsIDB4NzQsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MzYsIDB4MjAsIDB4NjMsCisgICAgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwgMHgzMywgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwKKyAgICAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDMyLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LAorICAgIDB4NjUsIDB4NjMsIDB4MjAsIDB4N0QsIDB4MEQsIDB4N0IsIDB4MjAsIDB4MkYsIDB4NkQsIDB4NjEsIDB4NkIsIDB4NjUsIDB4NjIsIDB4NkMsIDB4NjUsIDB4NkUsCisgICAgMHg2NCwgMHg2NSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg2MywgMHg3NiwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3MiwgMHg3MiwgMHg2RiwKKyAgICAweDcyLCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDJGLCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDYzLCAweDY4LCAweDY1LCAweDYzLCAweDZCLAorICAgIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsCisgICAgMHg3MywgMHg2NSwgMHgwRCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwKKyAgICAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDdELCAweDIwLCAweDY2LCAweDZGLCAweDcyLCAweDYxLCAweDZDLCAweDZDLCAweDIwLCAweDcwLCAweDZGLCAweDcwLAorICAgIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0QsIDB4MEQsIDB4NjMsCisgICAgMHg3NSwgMHg3MiwgMHg3MiwgMHg2NSwgMHg2RSwgMHg3NCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHg0MiwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NCwKKyAgICAweDIwLCAweDMyLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDY1LCAweDYzLCAweDBELCAweDYzLCAweDc1LAorICAgIDB4NzIsIDB4NzIsIDB4NjUsIDB4NkUsIDB4NzQsIDB4NjQsIDB4NjksIDB4NjMsIDB4NzQsIDB4MjAsIDB4NjUsIDB4NkUsIDB4NjQsIDB4MEQsIDB4N0QsIDB4MjAsCisgICAgMHg2MiwgMHg2OSwgMHg2RSwgMHg2NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHgyRiwgMHgyNCwgMHg2NiwgMHg2MiwgMHg2NiwgMHgyMCwgMHg3QiwKKyAgICAweDIwLCAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDQ0LCAweDY5LCAweDcyLCAweDY1LCAweDYzLCAweDc0LCAweDZGLCAweDcyLCAweDc5LCAweDIwLCAweDYzLAorICAgIDB4NkYsIDB4NzUsIDB4NkUsIDB4NzQsIDB4NzQsIDB4NkYsIDB4NkQsIDB4NjEsIDB4NzIsIDB4NkIsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjEsIDB4NjQsIDB4NjQsCisgICAgMHgyMCwgMHgyRCwgMHgzMSwgMHgyMCwgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywgMHgyMCwgMHg2QiwgMHg2RSwgMHg2RiwgMHg3NywgMHg2RSwgMHgyMCwgMHg3QiwKKyAgICAweDBELCAweDYzLCAweDZDLCAweDY1LCAweDYxLCAweDcyLCAweDc0LCAweDZGLCAweDZELCAweDYxLCAweDcyLCAweDZCLCAweDIwLCAweDcwLCAweDZGLCAweDcwLAorICAgIDB4MjAsIDB4NjYsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NUQsIDB4MjAsCisgICAgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NiwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg2NSwgMHg3OCwKKyAgICAweDYzLCAweDY4LCAweDIwLCAweDZELCAweDYxLCAweDZCLCAweDY1LCAweDYyLCAweDZDLCAweDY1LCAweDZFLCAweDY0LCAweDY1LCAweDY0LCAweDY2LCAweDZGLAorICAgIDB4NkUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MkYsIDB4NDUsIDB4NkUsIDB4NjMsIDB4NkYsIDB4NjQsIDB4NjksIDB4NkUsIDB4NjcsCisgICAgMHgyMCwgMHg2MywgMHg3NSwgMHg3MiwgMHg3MiwgMHg2NSwgMHg2RSwgMHg3NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHgyRiwgMHg0NSwgMHg2RSwKKyAgICAweDYzLCAweDZGLCAweDY0LCAweDY5LCAweDZFLCAweDY3LCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDIwLCAweDY0LAorICAgIDB4NjUsIDB4NjYsIDB4NjksIDB4NkUsIDB4NjUsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsCisgICAgMHg3MywgMHg2NSwgMHgyMCwgMHg2MywgMHg3NSwgMHg3MiwgMHg3MiwgMHg2NSwgMHg2RSwgMHg3NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHgyRiwKKyAgICAweDUzLCAweDYzLCAweDYxLCAweDZDLCAweDY1LCAweDRELCAweDYxLCAweDc0LCAweDcyLCAweDY5LCAweDc4LCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLAorICAgIDB4NkQsIDB4NjEsIDB4NkIsIDB4NjUsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4NzMsIDB4NjUsIDB4NzQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsCisgICAgMHgwRCwgMHg3RCwgMHgyMCwgMHg2MiwgMHg2OSwgMHg2RSwgMHg2NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwKKyAgICAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LAorICAgIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsIDB4MEQsIDB4MkYsIDB4NEUsIDB4NkYsIDB4NzIsIDB4NkQsIDB4NjEsIDB4NkMsIDB4NjksIDB4N0EsIDB4NjUsCisgICAgMHg0NCwgMHg2NSwgMHg3MywgMHg2OSwgMHg2NywgMHg2RSwgMHg1NiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwgMHg3MiwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NSwKKyAgICAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDM1LCAweDMwLCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDMxLCAweDM0LCAweDMwLCAweDMwLCAweDIwLAorICAgIDB4NjQsIDB4NjksIDB4NzYsIDB4MEQsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MzUsIDB4MzAsIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsCisgICAgMHgzMSwgMHgzNCwgMHgzMCwgMHgzMCwgMHgyMCwgMHg2NCwgMHg2OSwgMHg3NiwgMHgwRCwgMHg3RCwgMHgyMCwgMHg2MiwgMHg2OSwgMHg2RSwgMHg2NCwgMHgyMCwKKyAgICAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLCAweDQzLCAweDZGLCAweDZFLCAweDc2LCAweDY1LCAweDcyLCAweDc0LCAweDQ0LCAweDY1LCAweDczLCAweDY5LAorICAgIDB4NjcsIDB4NkUsIDB4NTYsIDB4NjUsIDB4NjMsIDB4NzQsIDB4NkYsIDB4NzIsIDB4MjAsIDB4N0IsIDB4MEQsIDB4MzEsIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjksCisgICAgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHgzMSwgMHgyMCwgMHgzMiwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwKKyAgICAweDY1LCAweDc4LCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDZELCAweDc1LCAweDZDLCAweDIwLCAweDMzLCAweDIwLCAweDMxLCAweDIwLCAweDcyLAorICAgIDB4NkYsIDB4NkMsIDB4NkMsIDB4MEQsIDB4MzEsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4MzEsIDB4MjAsIDB4MzIsIDB4MjAsCisgICAgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHg2RCwgMHg3NSwgMHg2QywgMHgyMCwgMHgzMywgMHgyMCwKKyAgICAweDMxLCAweDIwLCAweDcyLCAweDZGLCAweDZDLCAweDZDLCAweDBELCAweDMxLCAweDIwLCAweDMyLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LAorICAgIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NkQsIDB4NzUsIDB4NkMsCisgICAgMHgyMCwgMHgzMywgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywgMHgwRCwgMHgzMSwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwKKyAgICAweDc4LCAweDIwLCAweDMxLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDZELCAweDc1LCAweDZDLCAweDIwLCAweDMzLCAweDIwLAorICAgIDB4MzEsIDB4MjAsIDB4NzIsIDB4NkYsIDB4NkMsIDB4NkMsIDB4MEQsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0QsCisgICAgMHgyMCwgMHg2MiwgMHg2OSwgMHg2RSwgMHg2NCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHgyNCwgMHg2RCwgMHg2RCwgMHg2NiwgMHg2NiwKKyAgICAweDVGLCAweDZGLCAweDcyLCAweDY5LCAweDY3LCAweDY2LCAweDY5LCAweDZFLCAweDY0LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDc3LCAweDY4LAorICAgIDB4NjUsIDB4NzIsIDB4NjUsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzMsIDB4NjEsIDB4NzYsIDB4NjUsIDB4MjAsIDB4N0IsCisgICAgMHgyMCwgMHg3MiwgMHg2NSwgMHg3MywgMHg3NCwgMHg2RiwgMHg3MiwgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwKKyAgICAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDdELCAweDBELCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDdCLCAweDIwLCAweDdELCAweDIwLCAweDdCLAorICAgIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsCisgICAgMHgyRiwgMHg3MywgMHg2NSwgMHg3NCwgMHg3MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3NywgMHg2OCwgMHg2NSwgMHg3MiwgMHg2NSwKKyAgICAweDIwLCAweDdCLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDc0LCAweDcyLCAweDc1LCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLAorICAgIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4MkYsCisgICAgMHg2NiwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg3NywgMHg2OCwgMHg2NSwgMHg3MiwgMHg2NSwgMHgyMCwgMHg3MCwKKyAgICAweDZGLCAweDcwLCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDczLCAweDc5LCAweDczLCAweDc0LCAweDY1LCAweDZELCAweDY0LCAweDY5LCAweDYzLAorICAgIDB4NzQsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjMsIDB4NzUsIDB4NzIsCisgICAgMHg3MiwgMHg2NSwgMHg2RSwgMHg3NCwgMHg3MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3RCwKKyAgICAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDc0LCAweDcyLCAweDc1LCAweDY1LCAweDIwLCAweDczLCAweDY1LCAweDc0LCAweDczLCAweDY4LCAweDYxLAorICAgIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4NzMsIDB4NjUsIDB4NzQsIDB4NzMsCisgICAgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwKKyAgICAweDIwLCAweDczLCAweDY4LCAweDYxLCAweDcyLCAweDY1LCAweDY0LCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDBELCAweDdELCAweDIwLCAweDdCLCAweDIwLAorICAgIDB4N0IsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NzUsIDB4NzMsIDB4NjUsIDB4NzIsIDB4NjQsIDB4NjksIDB4NjMsIDB4NzQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksCisgICAgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg2MiwgMHg2NSwgMHg2NywgMHg2OSwgMHg2RSwgMHgwRCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwKKyAgICAweDYyLCAweDY1LCAweDY3LCAweDY5LCAweDZFLCAweDIwLCAweDdCLCAweDIwLCAweDYzLCAweDc1LCAweDcyLCAweDcyLCAweDY1LCAweDZFLCAweDc0LCAweDY0LAorICAgIDB4NjksIDB4NjMsIDB4NzQsIDB4MjAsIDB4NzMsIDB4NjMsIDB4NjgsIDB4NjUsIDB4NjMsIDB4NkIsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjYsCisgICAgMHg2MSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3QiwgMHgwRCwKKyAgICAweDYzLCAweDc1LCAweDcyLCAweDcyLCAweDY1LCAweDZFLCAweDc0LCAweDczLCAweDY4LCAweDYxLCAweDcyLCAweDY1LCAweDY0LCAweDIwLCAweDdCLCAweDIwLAorICAgIDB4N0IsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzQsIDB4NzIsIDB4NzUsIDB4NjUsIDB4MjAsIDB4NzMsIDB4NjUsIDB4NzQsCisgICAgMHg3MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg2NiwgMHg2MSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3MywKKyAgICAweDY1LCAweDc0LCAweDczLCAweDY4LCAweDYxLCAweDcyLCAweDY1LCAweDY0LCAweDIwLCAweDdELCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LAorICAgIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4N0IsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsCisgICAgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgwRCwgMHgyRiwgMHgyNCwKKyAgICAweDZELCAweDZELCAweDY2LCAweDY2LCAweDVGLCAweDZGLCAweDcyLCAweDY5LCAweDY3LCAweDY2LCAweDY5LCAweDZFLCAweDY0LCAweDY2LCAweDZGLCAweDZFLAorICAgIDB4NzQsIDB4MjAsIDB4MkYsIDB4NjYsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4NkMsIDB4NkYsIDB4NjEsIDB4NjQsCisgICAgMHgyMCwgMHgzMywgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2NSwgMHg2MywgMHgwRCwgMHgyRiwgMHg2NiwKKyAgICAweDY5LCAweDZFLCAweDY0LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDdCLCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDQ2LCAweDZGLAorICAgIDB4NkUsIDB4NzQsIDB4NDQsIDB4NjksIDB4NzIsIDB4NjUsIDB4NjMsIDB4NzQsIDB4NkYsIDB4NzIsIDB4NzksIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsCisgICAgMHgyMCwgMHg2QiwgMHg2RSwgMHg2RiwgMHg3NywgMHg2RSwgMHgwRCwgMHg3QiwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg0NiwgMHg2RiwgMHg2RSwKKyAgICAweDc0LCAweDQ0LCAweDY5LCAweDcyLCAweDY1LCAweDYzLCAweDc0LCAweDZGLCAweDcyLCAweDc5LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLAorICAgIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4MkYsIDB4NDYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4NTQsIDB4NzksIDB4NzAsIDB4NjUsIDB4MjAsIDB4NjcsIDB4NjUsCisgICAgMHg3NCwgMHgyMCwgMHgzMywgMHgyMCwgMHg2RSwgMHg2NSwgMHgyMCwgMHg3RCwgMHgwRCwgMHg3QiwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg1MywKKyAgICAweDY4LCAweDYxLCAweDcyLCAweDY1LCAweDY0LCAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDQ0LCAweDY5LCAweDcyLCAweDY1LCAweDYzLCAweDc0LCAweDZGLAorICAgIDB4NzIsIDB4NzksIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NkIsIDB4NkUsIDB4NkYsIDB4NzcsIDB4NkUsIDB4MEQsIDB4N0IsIDB4MjAsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg1MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0NCwgMHg2OSwKKyAgICAweDcyLCAweDY1LCAweDYzLCAweDc0LCAweDZGLCAweDcyLCAweDc5LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDY3LCAweDY1LCAweDc0LAorICAgIDB4MjAsIDB4MkYsIDB4NDYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4NTQsIDB4NzksIDB4NzAsIDB4NjUsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4MzMsCisgICAgMHgyMCwgMHg2RSwgMHg2NSwgMHgyMCwgMHg3RCwgMHgwRCwgMHg3QiwgMHgyMCwgMHg2NiwgMHg2MSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwKKyAgICAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDBELAorICAgIDB4N0IsIDB4MjAsIDB4MjQsIDB4NkQsIDB4NkQsIDB4NjYsIDB4NjYsIDB4NUYsIDB4NkYsIDB4NzIsIDB4NjksIDB4NjcsIDB4NjYsIDB4NjksIDB4NkUsIDB4NjQsCisgICAgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDczLCAweDc0LCAweDcyLCAweDY5LCAweDZFLCAweDY3LCAweDIwLCAweDYzLAorICAgIDB4NzYsIDB4NzMsIDB4MjAsIDB4MjgsIDB4NUYsIDB4MjksIDB4MjAsIDB4NzMsIDB4NjUsIDB4NjEsIDB4NzIsIDB4NjMsIDB4NjgsIDB4MjAsIDB4N0IsIDB4MEQsCisgICAgMHg2MywgMHg3NiwgMHg2RSwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwKKyAgICAweDQ0LCAweDY5LCAweDcyLCAweDY1LCAweDYzLCAweDc0LCAweDZGLCAweDcyLCAweDc5LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDZCLAorICAgIDB4NkUsIDB4NkYsIDB4NzcsIDB4NkUsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NTMsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsCisgICAgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0NCwgMHg2OSwgMHg3MiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwgMHg3MiwgMHg3OSwgMHgyMCwgMHg2NSwgMHg3OCwKKyAgICAweDYzLCAweDY4LCAweDIwLCAweDZCLCAweDZFLCAweDZGLCAweDc3LCAweDZFLCAweDIwLCAweDZGLCAweDcyLCAweDIwLCAweDdCLCAweDBELCAweDc0LCAweDcyLAorICAgIDB4NzUsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsCisgICAgMHg2OCwgMHgyMCwgMHgzNywgMHgyMCwgMHg2MSwgMHg2NCwgMHg2NCwgMHgyMCwgMHg3MywgMHg3NCwgMHg3MiwgMHg2OSwgMHg2RSwgMHg2NywgMHgyMCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMwLCAweDIwLCAweDI4LCAweDI1LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDI1LCAweDI5LCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4NjksIDB4NkUsIDB4NzQsIDB4NjUsIDB4NzIsIDB4NzYsIDB4NjEsIDB4NkMsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MjAsCisgICAgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHgzNiwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDczLCAweDc0LCAweDcyLCAweDY5LCAweDZFLCAweDY3LCAweDIwLCAweDYzLAorICAgIDB4NzYsIDB4NzMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4NjksIDB4NkUsIDB4NzQsIDB4NjUsIDB4NzIsIDB4NzYsIDB4NjEsIDB4NkMsIDB4MEQsIDB4N0IsCisgICAgMHgyMCwgMHg3MywgMHg3NCwgMHg2MSwgMHg3NCwgMHg3NSwgMHg3MywgMHgyMCwgMHg3RCwgMHgyMCwgMHg3MywgMHg3NCwgMHg2RiwgMHg3MCwgMHg3MCwgMHg2NSwKKyAgICAweDY0LCAweDIwLCAweDdCLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDY2LCAweDYxLCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLAorICAgIDB4NjksIDB4NjYsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsCisgICAgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3NCwgMHg3MiwgMHg3NSwgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg2NiwgMHg2MSwKKyAgICAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDY5LAorICAgIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4N0IsIDB4MEQsIDB4MjQsIDB4NkQsIDB4NkQsIDB4NjYsIDB4NjYsIDB4NUYsIDB4NkYsIDB4NzIsCisgICAgMHg2OSwgMHg2NywgMHg2NiwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg2MiwgMHg2NSwgMHg2NywgMHg2OSwgMHg2RSwKKyAgICAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDBELCAweDVCLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDdCLCAweDIwLCAweDI4LCAweDVGLAorICAgIDB4MjksIDB4MjAsIDB4NzMsIDB4NjUsIDB4NjEsIDB4NzIsIDB4NjMsIDB4NjgsIDB4MjAsIDB4N0IsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjMsIDB4NzYsIDB4NzIsCisgICAgMHgyMCwgMHg3RCwgMHgyMCwgMHg3MywgMHg3NCwgMHg2RiwgMHg3MCwgMHg3MCwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwKKyAgICAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDBELCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDcwLCAweDZGLAorICAgIDB4NzAsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsCisgICAgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2OSwgMHg3NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwKKyAgICAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDZDLCAweDZGLCAweDZGLCAweDcwLCAweDIwLCAweDY2LCAweDYxLCAweDZDLAorICAgIDB4NzMsIDB4NjUsIDB4MjAsIDB4MkYsIDB4NDYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4NDksIDB4NkUsIDB4NjYsIDB4NkYsIDB4MjAsIDB4NzcsIDB4NjgsIDB4NjUsCisgICAgMHg3MiwgMHg2NSwgMHgyMCwgMHg3QiwgMHgwRCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0OSwgMHg2RSwgMHg2NiwKKyAgICAweDZGLCAweDIwLCAweDJGLCAweDQyLCAweDZDLCAweDY1LCAweDZFLCAweDY0LCAweDQxLCAweDc4LCAweDY5LCAweDczLCAweDU0LCAweDc5LCAweDcwLCAweDY1LAorICAgIDB4NzMsIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjMsIDB4NkYsIDB4NzAsIDB4NzksIDB4MjAsIDB4NkIsIDB4NkUsIDB4NkYsIDB4NzcsIDB4NkUsIDB4MjAsIDB4N0IsCisgICAgMHgwRCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHg2MywgMHg2RiwgMHg3NSwgMHg2RSwKKyAgICAweDc0LCAweDc0LCAweDZGLCAweDZELCAweDYxLCAweDcyLCAweDZCLCAweDIwLCAweDMyLCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDY1LCAweDcxLAorICAgIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MEQsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsCisgICAgMHg3MCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwKKyAgICAweDIwLCAweDY5LCAweDY2LCAweDIwLCAweDdCLCAweDBELCAweDRFLCAweDZGLCAweDcyLCAweDZELCAweDYxLCAweDZDLCAweDY5LCAweDdBLCAweDY1LCAweDQ0LAorICAgIDB4NjUsIDB4NzMsIDB4NjksIDB4NjcsIDB4NkUsIDB4NTYsIDB4NjUsIDB4NjMsIDB4NzQsIDB4NkYsIDB4NzIsIDB4MEQsIDB4NDMsIDB4NkYsIDB4NkUsIDB4NzYsCisgICAgMHg2NSwgMHg3MiwgMHg3NCwgMHg0NCwgMHg2NSwgMHg3MywgMHg2OSwgMHg2NywgMHg2RSwgMHg1NiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwgMHg3MiwgMHgwRCwKKyAgICAweDVELCAweDIwLCAweDYzLCAweDc1LCAweDcyLCAweDcyLCAweDY1LCAweDZFLCAweDc0LCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDY1LCAweDc4LAorICAgIDB4NjMsIDB4NjgsIDB4MjAsIDB4NkQsIDB4NjEsIDB4NkIsIDB4NjUsIDB4NjIsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjQsIDB4NjUsIDB4NjQsIDB4NjYsIDB4NkYsCisgICAgMHg2RSwgMHg3NCwgMHgwRCwgMHgzMiwgMHgyMCwgMHg2MywgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHgyRiwKKyAgICAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDRFLCAweDYxLCAweDZELCAweDY1LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NjUsIDB4NjYsIDB4NjksIDB4NkUsIDB4NjUsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsCisgICAgMHgyMCwgMHg2MywgMHg2QywgMHg2NSwgMHg2MSwgMHg3MiwgMHg3NCwgMHg2RiwgMHg2RCwgMHg2MSwgMHg3MiwgMHg2QiwgMHgyMCwgMHgyNCwgMHg2RCwgMHg2RCwKKyAgICAweDY2LCAweDY2LCAweDVGLCAweDZGLCAweDcyLCAweDY5LCAweDY3LCAweDY2LCAweDY5LCAweDZFLCAweDY0LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDIwLAorICAgIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4NjUsIDB4NkUsIDB4NjQsIDB4MEQsIDB4N0QsIDB4MjAsIDB4N0IsCisgICAgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHgyNCwgMHg2RCwgMHg2RCwKKyAgICAweDY2LCAweDY2LCAweDVGLCAweDZGLCAweDcyLCAweDY5LCAweDY3LCAweDY2LCAweDY5LCAweDZFLCAweDY0LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDIwLAorICAgIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsCisgICAgMHgyMCwgMHgyNCwgMHg2RCwgMHg2RCwgMHg2NiwgMHg2NiwgMHg1RiwgMHg2RiwgMHg3MiwgMHg2OSwgMHg2NywgMHg2NiwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NiwKKyAgICAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDY5LAorICAgIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjIsIDB4NjksIDB4NkUsIDB4NjQsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksCisgICAgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2NSwgMHg2MywgMHgwRCwgMHgyRiwgMHg1MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwKKyAgICAweDY0LCAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDQ0LCAweDY5LCAweDcyLCAweDY1LCAweDYzLCAweDc0LCAweDZGLCAweDcyLCAweDc5LCAweDIwLCAweDY0LAorICAgIDB4NzUsIDB4NzAsIDB4MjAsIDB4NzcsIDB4NjgsIDB4NjUsIDB4NzIsIDB4NjUsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsCisgICAgMHg2RiwgMHg3MCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgzMCwgMHgyMCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHgzMywgMHgyMCwKKyAgICAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDY1LCAweDYzLCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LAorICAgIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4NjUsIDB4NkUsIDB4NjQsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsCisgICAgMHgyMCwgMHg2NSwgMHg3OCwgMHg2NSwgMHg2MywgMHgwRCwgMHg2MywgMHg3NSwgMHg3MiwgMHg3MiwgMHg2NSwgMHg2RSwgMHg3NCwgMHg2NCwgMHg2OSwgMHg2MywKKyAgICAweDc0LCAweDIwLCAweDY1LCAweDZFLCAweDY0LCAweDBELCAweDYzLCAweDc1LCAweDcyLCAweDcyLCAweDY1LCAweDZFLCAweDc0LCAweDY2LCAweDY5LCAweDZDLAorICAgIDB4NjUsIDB4MjAsIDB4NjUsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsIDB4MEQsIDB4ODAsIDB4MDIsIDB4NkQsIDB4RDksIDB4MDAsIDB4MDAsIDB4RTgsIDB4REMsCisgICAgMHg2MSwgMHg3MiwgMHg4MCwgMHg3MSwgMHhBQiwgMHhENCwgMHhENSwgMHhCQywgMHhEMiwgMHgzMCwgMHhDNCwgMHhFMSwgMHg4NiwgMHhEQywgMHhFMCwgMHg5NiwKKyAgICAweDU0LCAweDFDLCAweDlDLCAweDFGLCAweDJFLCAweDU4LCAweDY5LCAweDQwLCAweDRFLCAweDMzLCAweEY5LCAweENFLCAweEZGLCAweDdELCAweDJGLCAweEJGLAorICAgIDB4RUYsIDB4NUYsIDB4MjYsIDB4QzcsIDB4RTEsIDB4ODQsIDB4ODksIDB4NTQsIDB4QzcsIDB4MDcsIDB4NTUsIDB4MjQsIDB4NEUsIDB4NzMsIDB4NDEsIDB4QjgsCisgICAgMHgyNiwgMHg5NywgMHhFMiwgMHhFOCwgMHhFQSwgMHg5QywgMHhFOSwgMHgxMywgMHgxRCwgMHgwMCwgMHg1NSwgMHg3OCwgMHhBQiwgMHgzRCwgMHhFMSwgMHg5RiwKKyAgICAweEE5LCAweEYyLCAweEZBLCAweEZGLCAweDNCLCAweEVCLCAweDUzLCAweDE3LCAweDRBLCAweDhFLCAweDJGLCAweDMzLCAweEU5LCAweERCLCAweEUwLCAweDM4LAorICAgIDB4NjMsIDB4NDIsIDB4RjQsIDB4MEUsIDB4NUQsIDB4RjIsIDB4NUIsIDB4N0EsIDB4ODgsIDB4MjIsIDB4RUUsIDB4MkIsIDB4NkMsIDB4REMsIDB4QUMsIDB4NTgsCisgICAgMHhBOSwgMHg4RiwgMHg5QiwgMHgwNCwgMHg3MSwgMHg0NCwgMHhFMywgMHhGNiwgMHhFNywgMHg0QSwgMHhCNiwgMHgwQywgMHgwMCwgMHhFNCwgMHg0MiwgMHhFOCwKKyAgICAweDMwLCAweEIxLCAweDMwLCAweDMwLCAweDhBLCAweDNGLCAweDBFLCAweERGLCAweDJDLCAweEU2LCAweDYyLCAweDM1LCAweEY5LCAweDIxLCAweDZELCAweDQyLAorICAgIDB4MEYsIDB4MjMsIDB4QUMsIDB4RUQsIDB4RUMsIDB4NjAsIDB4QTgsIDB4OEEsIDB4NzMsIDB4NzcsIDB4MTQsIDB4NjIsIDB4RTEsIDB4QjIsIDB4MDQsIDB4MDQsCisgICAgMHgyOSwgMHg1RCwgMHg0OSwgMHhCQSwgMHg4QSwgMHg4QiwgMHhDQiwgMHhGMiwgMHgwNCwgMHgyQSwgMHg4RCwgMHhFQiwgMHg5QSwgMHg2NSwgMHhCQSwgMHhGMSwKKyAgICAweEM4LCAweDI0LCAweDJGLCAweDdFLCAweDkwLCAweEQ5LCAweDQ5LCAweDYzLCAweDIzLCAweDczLCAweEY4LCAweDQzLCAweDhGLCAweEMxLCAweEU3LCAweDM3LAorICAgIDB4MzcsIDB4MEIsIDB4OTEsIDB4MTUsIDB4MDgsIDB4OUQsIDB4QTcsIDB4OTAsIDB4QTgsIDB4MjgsIDB4NTAsIDB4QjYsIDB4OTEsIDB4RTYsIDB4RTksIDB4RTIsCisgICAgMHg3OSwgMHgxMSwgMHgxMiwgMHgzNiwgMHhGRiwgMHhENywgMHhDNywgMHg2OSwgMHhFMiwgMHg1QSwgMHg4NiwgMHhEQSwgMHhGQSwgMHg0NywgMHg1OCwgMHg2OSwKKyAgICAweDczLCAweEI1LCAweDQ5LCAweEYzLCAweEI0LCAweDlCLCAweDE1LCAweDE2LCAweDlDLCAweDM1LCAweEY1LCAweERELCAweDJGLCAweEQxLCAweDRBLCAweDk1LAorICAgIDB4MkEsIDB4OTUsIDB4MDQsIDB4NDMsIDB4OEIsIDB4RjIsIDB4NzUsIDB4OTksIDB4QTQsIDB4OTAsIDB4QTYsIDB4QTEsIDB4MEEsIDB4ODcsIDB4MzUsIDB4NzEsCisgICAgMHhFQiwgMHgxNywgMHgxQSwgMHg0NiwgMHg1OSwgMHgzRSwgMHhDNiwgMHhGOCwgMHg5OSwgMHhGNywgMHg2MCwgMHgyQywgMHg2NiwgMHgyNywgMHg0QSwgMHg0OCwKKyAgICAweDYzLCAweDM1LCAweEFELCAweEMxLCAweERGLCAweDE5LCAweDI2LCAweDgxLCAweDY4LCAweDlDLCAweDE3LCAweEQ0LCAweDcxLCAweDc5LCAweEVGLCAweDVCLAorICAgIDB4RTMsIDB4QjUsIDB4QkUsIDB4QTksIDB4RTUsIDB4RDIsIDB4NkMsIDB4QTIsIDB4NjQsIDB4MEEsIDB4MTQsIDB4NDQsIDB4RkUsIDB4NzMsIDB4NkIsIDB4NjksCisgICAgMHhFRiwgMHgzRCwgMHhGMywgMHgwQSwgMHg3OSwgMHg2OCwgMHg1QiwgMHg2MSwgMHg4NiwgMHhBRSwgMHg5QiwgMHg0MiwgMHg4MCwgMHg2RSwgMHhCRiwgMHgyNCwKKyAgICAweDg1LCAweEE5LCAweDg3LCAweDk4LCAweDU5LCAweEJCLCAweDMwLCAweDM2LCAweDM4LCAweDgxLCAweDJBLCAweDgyLCAweEI2LCAweDA1LCAweDE5LCAweDk0LAorICAgIDB4MEEsIDB4ODgsIDB4MjQsIDB4OEEsIDB4NTcsIDB4MEMsIDB4NTEsIDB4NTgsIDB4RTQsIDB4QUUsIDB4MUIsIDB4RTQsIDB4REYsIDB4RDMsIDB4MkYsIDB4OTIsCisgICAgMHhCRSwgMHhCNSwgMHhEQiwgMHg1MSwgMHg1RSwgMHhBMiwgMHhDNCwgMHg1OCwgMHhGMCwgMHg2NCwgMHhGNywgMHg1NywgMHhGQiwgMHg2MSwgMHgzRSwgMHhBQSwKKyAgICAweDQ2LCAweEU2LCAweDMzLCAweDQ2LCAweDZFLCAweDQ1LCAweDRELCAweDMzLCAweDE3LCAweDY2LCAweEU3LCAweEQ3LCAweENFLCAweDkyLCAweEYwLCAweEY2LAorICAgIDB4QjIsIDB4RkIsIDB4NjIsIDB4N0IsIDB4QUQsIDB4N0MsIDB4NjgsIDB4MEEsIDB4OEUsIDB4MTQsIDB4OEYsIDB4QjcsIDB4NDgsIDB4M0QsIDB4ODQsIDB4RUYsCisgICAgMHg0OSwgMHhEQywgMHg1MiwgMHhFMywgMHhBQSwgMHgwNCwgMHhDOSwgMHhGMywgMHgwQiwgMHgyMSwgMHg0MSwgMHg5NiwgMHg0RCwgMHgzNiwgMHhDMywgMHgzRCwKKyAgICAweDU0LCAweEU4LCAweDgyLCAweDY5LCAweEZGLCAweEIxLCAweEE4LCAweEUzLCAweDhBLCAweDM5LCAweERDLCAweEM4LCAweDE0LCAweDBBLCAweDQ5LCAweEFDLAorICAgIDB4OTYsIDB4MzMsIDB4MUUsIDB4MDksIDB4RTgsIDB4NjIsIDB4NjQsIDB4NTcsIDB4ODIsIDB4NjgsIDB4NDYsIDB4QUIsIDB4RTAsIDB4QkIsIDB4Q0YsIDB4Q0YsCisgICAgMHg4RiwgMHhDRiwgMHg5RSwgMHgwOCwgMHhCMCwgMHhBRCwgMHg5OCwgMHg3MSwgMHgzMywgMHgwOCwgMHhFNCwgMHg1QywgMHhDQywgMHg3RiwgMHgxNywgMHgwOSwKKyAgICAweDk4LCAweDY1LCAweEVFLCAweEVELCAweDkzLCAweDg0LCAweEM5LCAweEZELCAweDQ2LCAweDU3LCAweEI0LCAweEYxLCAweDk4LCAweDNBLCAweEI1LCAweEMyLAorICAgIDB4N0YsIDB4RjgsIDB4RkIsIDB4NjAsIDB4NzgsIDB4RDcsIDB4NDcsIDB4RDcsIDB4NjMsIDB4NTgsIDB4NTEsIDB4RTksIDB4REMsIDB4RjEsIDB4MEUsIDB4QjgsCisgICAgMHg1OSwgMHgzQiwgMHg3MiwgMHg4MSwgMHgzMSwgMHhBRiwgMHhDOCwgMHg1QiwgMHgzNSwgMHg0NywgMHhGMSwgMHhCQywgMHhDRCwgMHhFRCwgMHg0NSwgMHhGMSwKKyAgICAweEZDLCAweDZELCAweEZGLCAweDJFLCAweEFBLCAweDZDLCAweEMyLCAweDY1LCAweDVGLCAweDhGLCAweDhGLCAweDk1LCAweDIwLCAweEJBLCAweENBLCAweEY5LAorICAgIDB4NjgsIDB4QTUsIDB4NDcsIDB4N0YsIDB4Q0MsIDB4RDAsIDB4QTYsIDB4M0IsIDB4QUUsIDB4QTIsIDB4RTUsIDB4MTEsIDB4MEQsIDB4NEUsIDB4MjAsIDB4NDQsCisgICAgMHg2QiwgMHg2NCwgMHhEQiwgMHg3NSwgMHg2OCwgMHg5RCwgMHhBNCwgMHhFQywgMHhCMiwgMHgxRCwgMHhERiwgMHg2NiwgMHhDNSwgMHg4OSwgMHg0RiwgMHg5NCwKKyAgICAweDBCLCAweDA2LCAweEQ5LCAweDExLCAweDlDLCAweDgzLCAweDNGLCAweDU1LCAweDIxLCAweEEwLCAweDY1LCAweDJFLCAweDZELCAweDM5LCAweDZGLCAweENBLAorICAgIDB4MDgsIDB4REUsIDB4NjAsIDB4N0YsIDB4NDcsIDB4RTgsIDB4OUQsIDB4QzIsIDB4OUUsIDB4NUYsIDB4ODEsIDB4OUMsIDB4QUEsIDB4QjcsIDB4NDYsIDB4MEEsCisgICAgMHhBQywgMHhBMCwgMHhGRCwgMHgyMiwgMHg1OSwgMHhFNiwgMHhDQiwgMHg3OCwgMHhGNiwgMHgzNywgMHg3QSwgMHhEOCwgMHg2QywgMHg4RCwgMHg2MSwgMHhGMSwKKyAgICAweDEwLCAweEU5LCAweDYwLCAweDc0LCAweDRDLCAweDQzLCAweEIwLCAweDRCLCAweDNDLCAweDBBLCAweDc3LCAweDZBLCAweEYzLCAweEY1LCAweEFFLCAweDE2LAorICAgIDB4MUMsIDB4QkIsIDB4NzUsIDB4REIsIDB4ODEsIDB4OTcsIDB4QTIsIDB4REEsIDB4NkEsIDB4OEMsIDB4RTQsIDB4QkEsIDB4QjQsIDB4QkUsIDB4NkMsIDB4QUQsCisgICAgMHgyNCwgMHgxOCwgMHgzNywgMHgzRiwgMHgwNSwgMHg4QSwgMHg5NiwgMHg5QywgMHg3NSwgMHhEMCwgMHg5NywgMHhDNSwgMHgzQiwgMHhEQiwgMHgyMywgMHhCRiwKKyAgICAweDYyLCAweDc2LCAweEM4LCAweEQzLCAweEZELCAweDA5LCAweDU3LCAweEQ3LCAweDhCLCAweDg1LCAweDFCLCAweDlGLCAweDY1LCAweDc5LCAweDgzLCAweDE2LAorICAgIDB4MTAsIDB4OTIsIDB4RTQsIDB4MTAsIDB4QjMsIDB4NjUsIDB4RUQsIDB4N0IsIDB4NDIsIDB4M0IsIDB4QzYsIDB4MDUsIDB4MDMsIDB4RjcsIDB4RkUsIDB4RUUsCisgICAgMHg0QiwgMHgxRSwgMHg4NywgMHgwNSwgMHg2NSwgMHg0RSwgMHgwMCwgMHhFMiwgMHgzMCwgMHg2NywgMHgwQSwgMHhEQiwgMHhBQiwgMHg1NywgMHgwNCwgMHhCNiwKKyAgICAweDE5LCAweDM5LCAweDI0LCAweEZBLCAweDdGLCAweEI4LCAweEQ5LCAweDA4LCAweDY0LCAweDM4LCAweEZBLCAweDE2LCAweEUxLCAweEYyLCAweDE5LCAweEIyLAorICAgIDB4MTIsIDB4QkIsIDB4NUYsIDB4REIsIDB4RUUsIDB4ODEsIDB4REEsIDB4OTYsIDB4NDEsIDB4ODgsIDB4RTAsIDB4OUIsIDB4NDEsIDB4MjcsIDB4MkMsIDB4OUIsCisgICAgMHhCOCwgMHgyNywgMHg0MSwgMHg3MiwgMHhDMSwgMHhFNSwgMHhEOSwgMHhFNywgMHg4RCwgMHgxRiwgMHg5NCwgMHhGOSwgMHhDRCwgMHgwRiwgMHg2OCwgMHgwRCwKKyAgICAweEQzLCAweDI0LCAweDZCLCAweEJCLCAweEQ1LCAweDY1LCAweDcxLCAweDhCLCAweEU5LCAweDEwLCAweDRGLCAweEVELCAweDU5LCAweENELCAweEVGLCAweDFELAorICAgIDB4MEUsIDB4QTcsIDB4NzAsIDB4QjUsIDB4MUMsIDB4NjIsIDB4RTUsIDB4MDUsIDB4ODgsIDB4MEMsIDB4RjMsIDB4MjYsIDB4NUQsIDB4RDgsIDB4NzgsIDB4QTEsCisgICAgMHhGOSwgMHg3OSwgMHgwNiwgMHg5QywgMHg3QSwgMHg1QSwgMHhFQSwgMHgzMCwgMHhDQSwgMHgxNiwgMHgwRiwgMHg0RSwgMHhCRSwgMHg1RiwgMHg5NywgMHg1OCwKKyAgICAweEFBLCAweDNGLCAweDlCLCAweEIwLCAweDMyLCAweEJFLCAweEM4LCAweDJDLCAweDMyLCAweDcwLCAweEExLCAweEMzLCAweEQ5LCAweDRBLCAweEVCLCAweDAwLAorICAgIDB4QUYsIDB4QjIsIDB4NEUsIDB4NTcsIDB4N0EsIDB4MkUsIDB4RTksIDB4NjgsIDB4QkQsIDB4MjcsIDB4MDksIDB4OTEsIDB4RDYsIDB4REMsIDB4QjUsIDB4MDEsCisgICAgMHg1QywgMHg2RCwgMHgxRiwgMHg5OCwgMHg3QywgMHgyRSwgMHg3MywgMHg0MSwgMHg4QSwgMHgwOSwgMHgxRCwgMHgwMCwgMHhFNiwgMHg1QSwgMHg5QywgMHg0QSwKKyAgICAweDZDLCAweEVGLCAweDU5LCAweDc1LCAweDMwLCAweDcwLCAweDRDLCAweENGLCAweEYxLCAweDdGLCAweDdCLCAweDNGLCAweEZBLCAweDAxLCAweDBGLCAweEVELAorICAgIDB4MjksIDB4MzEsIDB4NUEsIDB4NUUsIDB4NjIsIDB4MEQsIDB4MzcsIDB4NTIsIDB4QUIsIDB4OTIsIDB4MDQsIDB4MjgsIDB4QTYsIDB4QTgsIDB4ODgsIDB4NjMsCisgICAgMHgyNCwgMHgwQSwgMHgzOCwgMHg3RiwgMHgzMiwgMHhDRiwgMHhDNSwgMHhDNiwgMHhDMCwgMHg3QywgMHgwMCwgMHg3NywgMHg2QywgMHg0RiwgMHgzNiwgMHg4MiwKKyAgICAweEVGLCAweDY5LCAweEYwLCAweEVCLCAweENDLCAweDhDLCAweDZELCAweDA4LCAweEZGLCAweENCLCAweDAzLCAweDI5LCAweDhCLCAweEVGLCAweDBGLCAweDQ1LAorICAgIDB4ODEsIDB4QTMsIDB4REYsIDB4MjIsIDB4RUUsIDB4QjQsIDB4NzIsIDB4NTMsIDB4MjAsIDB4REMsIDB4MTksIDB4NkYsIDB4MjEsIDB4RUEsIDB4RjEsIDB4RjEsCisgICAgMHg1MSwgMHg5OCwgMHgzQywgMHhBOCwgMHg0OCwgMHgyRSwgMHg0QywgMHhGOSwgMHhFQiwgMHgxMCwgMHg3MSwgMHhGQSwgMHhGOCwgMHg4NywgMHg2NCwgMHhFMSwKKyAgICAweEJCLCAweEFELCAweEQ4LCAweDEyLCAweEUyLCAweDhBLCAweDFFLCAweEZFLCAweDQ4LCAweDFDLCAweDBDLCAweEE2LCAweDNELCAweEJELCAweDMzLCAweDU0LAorICAgIDB4OEUsIDB4RDksIDB4ODgsIDB4NTMsIDB4NTUsIDB4MEQsIDB4NTUsIDB4NjIsIDB4NEYsIDB4MkQsIDB4MzYsIDB4RTYsIDB4REYsIDB4N0MsIDB4MEYsIDB4QUUsCisgICAgMHgwRSwgMHg3OCwgMHgxMSwgMHhBMywgMHg3MCwgMHg2NSwgMHg0MSwgMHhFOCwgMHg5MSwgMHgzNiwgMHhFRSwgMHhCNiwgMHhERCwgMHhBQiwgMHhCQSwgMHgxRiwKKyAgICAweDBELCAweDA2LCAweDQ4LCAweDFGLCAweEUwLCAweDRDLCAweDEyLCAweEY2LCAweEQyLCAweDM3LCAweEMwLCAweEJELCAweDVELCAweDM0LCAweDI1LCAweEUyLAorICAgIDB4QUIsIDB4OTMsIDB4NEIsIDB4RDYsIDB4MTcsIDB4N0IsIDB4OTUsIDB4RDksIDB4MkIsIDB4RkUsIDB4NjAsIDB4QjAsIDB4MzIsIDB4Q0QsIDB4NUYsIDB4MEYsCisgICAgMHgwQiwgMHg4MSwgMHg1OCwgMHhCQywgMHg5NSwgMHg5QywgMHg0QiwgMHg4MSwgMHhCRiwgMHhEMiwgMHhBMCwgMHg2NCwgMHhEQiwgMHhFOCwgMHhFMCwgMHg2QSwKKyAgICAweDQ5LCAweEZCLCAweEM0LCAweDk5LCAweDU5LCAweDJGLCAweDJCLCAweEVELCAweDIxLCAweDhELCAweEQ3LCAweEE3LCAweDU2LCAweDA0LCAweDY3LCAweEM2LAorICAgIDB4MEMsIDB4ODksIDB4NTgsIDB4MTIsIDB4NUEsIDB4NUMsIDB4MjcsIDB4NjIsIDB4NzksIDB4MEMsIDB4NUUsIDB4QzMsIDB4Q0MsIDB4OTksIDB4NUEsIDB4Q0YsCisgICAgMHg3MSwgMHg5OSwgMHg3NSwgMHgyRSwgMHhCQSwgMHgxQywgMHgyOCwgMHhBQSwgMHg2NCwgMHg2MiwgMHgxNywgMHhGOSwgMHhDRCwgMHgzOCwgMHgxQSwgMHgwQiwKKyAgICAweEUzLCAweEY3LCAweEY3LCAweDk4LCAweDRGLCAweDBELCAweEI1LCAweEYwLCAweDAzLCAweDM3LCAweDY4LCAweDVGLCAweDNELCAweEU4LCAweDEzLCAweDAxLAorICAgIDB4RTIsIDB4MzYsIDB4RjksIDB4QjYsIDB4MjUsIDB4NDEsIDB4REUsIDB4NEMsIDB4NTMsIDB4RDIsIDB4RDUsIDB4QjEsIDB4QTEsIDB4NzcsIDB4MUIsIDB4OUQsCisgICAgMHgzQSwgMHg2NywgMHg5MywgMHhDQiwgMHgwMCwgMHhCOSwgMHhBMCwgMHg1MCwgMHg1NiwgMHgwMCwgMHhGRiwgMHhBNiwgMHhDQywgMHgxNywgMHg1QSwgMHg0QSwKKyAgICAweDVDLCAweDk4LCAweEZBLCAweDk4LCAweDFFLCAweDEyLCAweDYwLCAweDUwLCAweDRCLCAweEE5LCAweDkxLCAweDdFLCAweDI1LCAweDlDLCAweDMwLCAweDkxLAorICAgIDB4QTksIDB4MzksIDB4MjIsIDB4QzMsIDB4RjgsIDB4NkQsIDB4REMsIDB4QzcsIDB4RTcsIDB4MDksIDB4NEEsIDB4NTYsIDB4Q0EsIDB4RDgsIDB4M0IsIDB4NEYsCisgICAgMHg0RCwgMHgyRiwgMHhDMiwgMHgyQiwgMHg5MywgMHgzMiwgMHhFNSwgMHg0NywgMHhFQywgMHgxNCwgMHgwMywgMHhDOCwgMHhCNywgMHhFMiwgMHhBMCwgMHg4NCwKKyAgICAweEY3LCAweDk5LCAweDUxLCAweDg2LCAweDY4LCAweDA4LCAweDk4LCAweDAyLCAweDQxLCAweDI5LCAweDA3LCAweDU2LCAweDU1LCAweEU2LCAweDZDLCAweDc0LAorICAgIDB4QzUsIDB4NjEsIDB4N0IsIDB4REIsIDB4MzMsIDB4MDEsIDB4RjgsIDB4RjAsIDB4QTksIDB4MTgsIDB4RkUsIDB4QzUsIDB4MzUsIDB4OEMsIDB4QjIsIDB4ODAsCisgICAgMHhEQSwgMHhEMCwgMHg4NCwgMHg4QSwgMHhGQywgMHg0QywgMHgzQywgMHgzQSwgMHgxRiwgMHg3MSwgMHhGNCwgMHg0NiwgMHg2MywgMHg2MCwgMHgxMywgMHhGNCwKKyAgICAweDFELCAweDgyLCAweEQ3LCAweEIwLCAweDQ4LCAweDRGLCAweDJFLCAweDc5LCAweEY3LCAweEVDLCAweDA2LCAweDEyLCAweDdBLCAweEQyLCAweDk0LCAweDc0LAorICAgIDB4OTEsIDB4QzksIDB4NjgsIDB4OEEsIDB4RjAsIDB4NjMsIDB4RDksIDB4MTgsIDB4M0MsIDB4OEIsIDB4NTQsIDB4OTQsIDB4MTIsIDB4NEYsIDB4RkUsIDB4OUYsCisgICAgMHg5RCwgMHgxMiwgMHhGQSwgMHhBRCwgMHhFRSwgMHhEMSwgMHhGRCwgMHg1NiwgMHgzMSwgMHgxNywgMHg1QSwgMHhDMywgMHgwOSwgMHhDMSwgMHgzNSwgMHg1MywKKyAgICAweDQxLCAweEVGLCAweEY5LCAweDlCLCAweDdFLCAweEJFLCAweEZDLCAweEE4LCAweDk2LCAweDZFLCAweDhELCAweEZELCAweEI4LCAweDQyLCAweEMzLCAweEE3LAorICAgIDB4NzgsIDB4Q0IsIDB4RjksIDB4OUIsIDB4RkIsIDB4MDEsIDB4Q0IsIDB4OUYsIDB4QTQsIDB4QTIsIDB4MEMsIDB4ODAsIDB4QjcsIDB4NEQsIDB4MDEsIDB4NTAsCisgICAgMHgyRiwgMHhEMywgMHhDMSwgMHhENSwgMHg0QiwgMHgwMSwgMHhFRSwgMHhERiwgMHgwOCwgMHg2QSwgMHhCMiwgMHhDNiwgMHgwOCwgMHg0OSwgMHg3MSwgMHg4OSwKKyAgICAweEIzLCAweEYwLCAweEMxLCAweDUwLCAweDc0LCAweEFDLCAweEZFLCAweDdFLCAweDgyLCAweEU3LCAweEE2LCAweDEwLCAweEYyLCAweDBDLCAweDVBLCAweEVDLAorICAgIDB4QzIsIDB4RTgsIDB4NTUsIDB4NDAsIDB4QjAsIDB4MUUsIDB4N0YsIDB4OTUsIDB4RjcsIDB4MzksIDB4MUMsIDB4QTcsIDB4RUMsIDB4RUIsIDB4ODEsIDB4RjQsCisgICAgMHhDQiwgMHg4MiwgMHgxRCwgMHg5NCwgMHg4QywgMHhCRiwgMHhEQSwgMHhCNywgMHg2NSwgMHg1MSwgMHgwNSwgMHgyMiwgMHg5MiwgMHgzQywgMHg3QSwgMHgzOCwKKyAgICAweEIxLCAweEJCLCAweDE0LCAweEFGLCAweEIxLCAweEZGLCAweDhBLCAweDk4LCAweDI0LCAweDFCLCAweEUwLCAweDUxLCAweDBCLCAweDcyLCAweEQxLCAweDJFLAorICAgIDB4OTcsIDB4RTAsIDB4NEQsIDB4QTIsIDB4RkYsIDB4MEYsIDB4MzAsIDB4QUMsIDB4N0EsIDB4RDIsIDB4ODgsIDB4NkMsIDB4QjQsIDB4Q0UsIDB4NjcsIDB4QzIsCisgICAgMHhGNywgMHgxOCwgMHg5MSwgMHgxRSwgMHgxQywgMHhGNCwgMHhGQSwgMHgwRCwgMHhEQywgMHg0MiwgMHgzQiwgMHhBNCwgMHhCOCwgMHg0OCwgMHhGMywgMHg5OCwKKyAgICAweDk0LCAweDVDLCAweDU3LCAweDk4LCAweEE5LCAweDcxLCAweDE0LCAweDVCLCAweDc5LCAweENGLCAweDMzLCAweEFBLCAweEUxLCAweDE5LCAweDQ5LCAweEZDLAorICAgIDB4MkUsIDB4NjYsIDB4MkMsIDB4NkMsIDB4RUIsIDB4QjgsIDB4NzEsIDB4M0IsIDB4OUMsIDB4MTksIDB4MTQsIDB4NUMsIDB4OTUsIDB4REIsIDB4N0QsIDB4NDcsCisgICAgMHhCOCwgMHg1NCwgMHgxNCwgMHhDOSwgMHhBOCwgMHgzOCwgMHhBMywgMHgzQSwgMHhGOCwgMHg0MCwgMHhENiwgMHg0RiwgMHgzRSwgMHg1MiwgMHg0OCwgMHg2NiwKKyAgICAweEVELCAweEU5LCAweEI4LCAweEI3LCAweDAzLCAweDBFLCAweDRCLCAweDhGLCAweDg0LCAweERGLCAweEEzLCAweEU0LCAweDdBLCAweDk3LCAweEE2LCAweEI4LAorICAgIDB4OUMsIDB4OTcsIDB4QkYsIDB4NzAsIDB4REEsIDB4QUMsIDB4NzEsIDB4MDEsIDB4QUEsIDB4REUsIDB4MEUsIDB4RkIsIDB4RkEsIDB4RjEsIDB4Q0YsIDB4MEQsCisgICAgMHg5QywgMHg5MywgMHhFQiwgMHhFNCwgMHhGNCwgMHhBRiwgMHhCNiwgMHgxRCwgMHgxMCwgMHhCMCwgMHgwQywgMHhEQiwgMHg4MCwgMHhGMiwgMHg5QSwgMHg4QywKKyAgICAweEI1LCAweDVGLCAweDJDLCAweEIxLCAweDY3LCAweEU5LCAweDNBLCAweEQ3LCAweEU0LCAweENGLCAweDIwLCAweEU3LCAweDA2LCAweDg2LCAweEZBLCAweDIzLAorICAgIDB4OEUsIDB4QkYsIDB4ODUsIDB4NDUsIDB4MkEsIDB4NEIsIDB4NTMsIDB4NDUsIDB4RjEsIDB4QTIsIDB4NkMsIDB4MkEsIDB4NEYsIDB4NEQsIDB4NjcsIDB4RUQsCisgICAgMHg3OCwgMHgxNSwgMHgwNiwgMHg0MywgMHg5NCwgMHg0NCwgMHhGQiwgMHgxQywgMHhENSwgMHhEQiwgMHg4OCwgMHg5NSwgMHhENSwgMHg1MywgMHg5MCwgMHhCRCwKKyAgICAweEY4LCAweDdBLCAweEQ4LCAweEVELCAweEUwLCAweDNFLCAweDg2LCAweEM5LCAweDlELCAweEZDLCAweEE3LCAweDI5LCAweDk0LCAweDgyLCAweEMzLCAweDcxLAorICAgIDB4QjQsIDB4RTcsIDB4NzcsIDB4MzUsIDB4NDgsIDB4N0EsIDB4QTAsIDB4NzksIDB4OEEsIDB4NjgsIDB4N0YsIDB4QTIsIDB4REYsIDB4REEsIDB4MzQsIDB4NEQsCisgICAgMHg3MiwgMHhEMiwgMHhCMywgMHg1MSwgMHhBNiwgMHg2NCwgMHg4NCwgMHhGNSwgMHgwMSwgMHg3NCwgMHg4NywgMHg1NywgMHhBMywgMHgzRiwgMHgyNSwgMHgyOCwKKyAgICAweEFBLCAweDg4LCAweDc1LCAweEZDLCAweEU2LCAweDc5LCAweDYyLCAweEJGLCAweEY4LCAweEQ3LCAweEJFLCAweDIyLCAweDEzLCAweEQyLCAweEFELCAweDA4LAorICAgIDB4N0QsIDB4MTUsIDB4RjMsIDB4OUQsIDB4NzQsIDB4QjYsIDB4NDksIDB4NTMsIDB4RTcsIDB4NEMsIDB4RTksIDB4NTcsIDB4ODAsIDB4NUEsIDB4OEYsIDB4NUQsCisgICAgMHg3NSwgMHhERSwgMHgwNCwgMHg1OSwgMHgwQiwgMHg4QywgMHhDNiwgMHgxQiwgMHg3QSwgMHhGQywgMHhGMCwgMHg0MiwgMHhDMiwgMHg2QSwgMHgxNywgMHgzQSwKKyAgICAweDE5LCAweDkyLCAweDY2LCAweEUzLCAweDA0LCAweDI4LCAweDg1LCAweDAyLCAweEEzLCAweDJGLCAweEE4LCAweDNELCAweDkyLCAweDlGLCAweEQ0LCAweERGLAorICAgIDB4MjQsIDB4NTcsIDB4RjksIDB4NjEsIDB4MTAsIDB4RDYsIDB4NkIsIDB4MzIsIDB4NUYsIDB4N0YsIDB4QzYsIDB4REQsIDB4NTgsIDB4NEQsIDB4ODMsIDB4RjksCisgICAgMHgyNywgMHgwRSwgMHhGOSwgMHg2RCwgMHg0RiwgMHgzMCwgMHgzMiwgMHgxMiwgMHg1QSwgMHhDNSwgMHhFQSwgMHg4MywgMHgzNSwgMHgxNCwgMHgyMywgMHg1OCwKKyAgICAweDY2LCAweDc5LCAweDVCLCAweDQ0LCAweDQ0LCAweDlFLCAweEJFLCAweEJGLCAweDJELCAweDAyLCAweDc2LCAweDRBLCAweDU5LCAweDJBLCAweDFGLCAweEM4LAorICAgIDB4RjYsIDB4ODQsIDB4RDEsIDB4ODcsIDB4NTUsIDB4RTUsIDB4M0QsIDB4RjIsIDB4Q0MsIDB4NjMsIDB4RTAsIDB4NDcsIDB4MUYsIDB4MTQsIDB4MDAsIDB4NTYsCisgICAgMHhGMSwgMHhGMSwgMHg3QiwgMHg0NSwgMHhEMiwgMHhFNiwgMHhDOSwgMHgzOCwgMHgxQywgMHhFMSwgMHgyOSwgMHgzRCwgMHhGNCwgMHgxRCwgMHgyQiwgMHgzRSwKKyAgICAweDY3LCAweDlDLCAweDY3LCAweEU0LCAweDgyLCAweDQwLCAweDI5LCAweDU1LCAweEM0LCAweDQ2LCAweEJFLCAweDZCLCAweEE1LCAweDJBLCAweERELCAweEZGLAorICAgIDB4Q0EsIDB4RDAsIDB4QzksIDB4MDUsIDB4MDMsIDB4QTAsIDB4NEYsIDB4MEQsIDB4QTAsIDB4QTUsIDB4MDQsIDB4MjYsIDB4MDIsIDB4OTIsIDB4MTYsIDB4NUMsCisgICAgMHgyRCwgMHg2OCwgMHhERiwgMHgwNiwgMHg4NywgMHg3OSwgMHg3MSwgMHhBMywgMHg0MCwgMHhCNSwgMHhDQywgMHgxRSwgMHg3MSwgMHgzQywgMHg3RiwgMHgxNiwKKyAgICAweEZBLCAweEEwLCAweEE1LCAweDU4LCAweEQ5LCAweDUzLCAweDkzLCAweDMxLCAweDAzLCAweDI4LCAweDBBLCAweDk0LCAweDQxLCAweEMxLCAweEVFLCAweDYxLAorICAgIDB4NDcsIDB4RTAsIDB4MDIsIDB4OEUsIDB4MzksIDB4RUYsIDB4NkQsIDB4QTksIDB4RDMsIDB4MDAsIDB4QTAsIDB4MzAsIDB4OTUsIDB4RjUsIDB4RkMsIDB4QkYsCisgICAgMHhDNywgMHg2QiwgMHg4QSwgMHgzMiwgMHgxNiwgMHg5RSwgMHg1MCwgMHhCMCwgMHhFRiwgMHgwQywgMHhGMywgMHg1NSwgMHg2MSwgMHhEMCwgMHgyMSwgMHhGNywKKyAgICAweDZCLCAweEEwLCAweEI5LCAweEM5LCAweDY5LCAweEU3LCAweDg1LCAweEY4LCAweEU3LCAweDY5LCAweEM0LCAweEI1LCAweDI3LCAweDAxLCAweDFCLCAweEIxLAorICAgIDB4QUQsIDB4MDksIDB4NUEsIDB4RDAsIDB4NDAsIDB4QzAsIDB4MUMsIDB4MzQsIDB4NTEsIDB4MjMsIDB4M0YsIDB4RDIsIDB4RDQsIDB4OTQsIDB4QkEsIDB4NDIsCisgICAgMHhBOCwgMHhDOSwgMHg0QiwgMHg4NCwgMHgyQiwgMHg4MiwgMHhERCwgMHhEQSwgMHgyMiwgMHgxNCwgMHhFMCwgMHgyNCwgMHg1MywgMHgxMiwgMHhEMCwgMHg2NywKKyAgICAweDYyLCAweEMyLCAweDRFLCAweEY2LCAweDdBLCAweEJBLCAweENCLCAweEYxLCAweEYwLCAweEU0LCAweDUxLCAweDJBLCAweEE1LCAweDQ4LCAweDRDLCAweEM2LAorICAgIDB4QzIsIDB4MzAsIDB4MDAsIDB4RUMsIDB4RUUsIDB4RUIsIDB4QkMsIDB4RTksIDB4NzYsIDB4NEUsIDB4MjMsIDB4QjEsIDB4Q0UsIDB4MDUsIDB4NDAsIDB4MUYsCisgICAgMHgyRCwgMHgwRSwgMHhFQiwgMHg4NCwgMHg5NiwgMHgzOCwgMHgxNiwgMHg1QiwgMHhDRiwgMHg0RCwgMHhGQiwgMHgxQSwgMHhCNCwgMHg3NCwgMHg2MSwgMHg3QywKKyAgICAweDRELCAweDY3LCAweDk1LCAweDc5LCAweEI1LCAweDgxLCAweDg4LCAweDMyLCAweERBLCAweDg0LCAweDlELCAweEMxLCAweDUzLCAweDIxLCAweERELCAweDBBLAorICAgIDB4REUsIDB4M0MsIDB4QjMsIDB4QjUsIDB4QjgsIDB4MUEsIDB4RkMsIDB4NzIsIDB4N0EsIDB4QjgsIDB4RUIsIDB4QzgsIDB4RjYsIDB4N0EsIDB4MDAsIDB4REQsCisgICAgMHgyRSwgMHg3RSwgMHg1MiwgMHgwNiwgMHg2NiwgMHgwQywgMHhGRiwgMHgzRiwgMHg4QiwgMHgxNiwgMHg0QiwgMHgxQSwgMHg5QiwgMHgzQywgMHgxNywgMHg1QiwKKyAgICAweEQ4LCAweENCLCAweEEwLCAweENBLCAweEY5LCAweDQxLCAweDM2LCAweEQ2LCAweEE2LCAweDA4LCAweDZELCAweEZDLCAweEQzLCAweDc3LCAweDE0LCAweDU4LAorICAgIDB4RjEsIDB4QjUsIDB4M0UsIDB4NTQsIDB4REIsIDB4QUMsIDB4MDMsIDB4QUMsIDB4MTEsIDB4NUMsIDB4NEQsIDB4QzYsIDB4QjUsIDB4MDMsIDB4NUEsIDB4RkYsCisgICAgMHg1MiwgMHhBOCwgMHhERiwgMHhEQywgMHgzOSwgMHhGMywgMHg2QSwgMHhDOCwgMHhCNCwgMHgyMywgMHgwQiwgMHgwQiwgMHg2NywgMHgxQiwgMHgwMiwgMHhCQSwKKyAgICAweDc5LCAweDAzLCAweDE2LCAweEIyLCAweEE5LCAweEMzLCAweEExLCAweDYyLCAweDZCLCAweDk2LCAweDIzLCAweDE0LCAweDZELCAweDhGLCAweDk0LCAweEYxLAorICAgIDB4RDIsIDB4RUEsIDB4NUIsIDB4M0EsIDB4NDgsIDB4NzksIDB4MUUsIDB4MDIsIDB4Q0UsIDB4RTgsIDB4RjUsIDB4MkMsIDB4NkEsIDB4QjIsIDB4MDgsIDB4NjIsCisgICAgMHhDNiwgMHg4NSwgMHgwOSwgMHg5RSwgMHg1QSwgMHhEMCwgMHhFNSwgMHgzNCwgMHg3NSwgMHg4MSwgMHhGNSwgMHhBNywgMHg1NSwgMHg2QSwgMHgzMSwgMHg2RSwKKyAgICAweDMwLCAweDA4LCAweDFCLCAweEY5LCAweEYxLCAweDVBLCAweDMzLCAweDM2LCAweDNDLCAweDdELCAweEE5LCAweEI1LCAweDkxLCAweDgwLCAweDA2LCAweDM0LAorICAgIDB4NTcsIDB4RDcsIDB4QzUsIDB4QTgsIDB4NzQsIDB4MEYsIDB4MDEsIDB4MjcsIDB4NEMsIDB4ODIsIDB4OTgsIDB4QzYsIDB4NkIsIDB4NEYsIDB4QzUsIDB4N0YsCisgICAgMHhGRiwgMHhBQywgMHgxMywgMHg0QSwgMHhEQSwgMHg3MywgMHg5NywgMHhCRiwgMHhFQSwgMHhBMywgMHhGMiwgMHhCQiwgMHhFOSwgMHg1MSwgMHg3RCwgMHg3RSwKKyAgICAweEU2LCAweEU5LCAweDE1LCAweDg1LCAweDFELCAweDcyLCAweDRBLCAweEI4LCAweEI3LCAweDk5LCAweDNFLCAweDlGLCAweDcxLCAweDhGLCAweDE4LCAweDU2LAorICAgIDB4OUMsIDB4QkYsIDB4NDUsIDB4NTQsIDB4QjgsIDB4MTQsIDB4NUMsIDB4MzksIDB4N0IsIDB4OTMsIDB4RDgsIDB4NDEsIDB4QTcsIDB4MDAsIDB4MUIsIDB4NzQsCisgICAgMHg0NywgMHgyOSwgMHgyOSwgMHhCNCwgMHg0MiwgMHhDRiwgMHgxNywgMHg2OSwgMHg0MywgMHhCMiwgMHgyRSwgMHgzOCwgMHgxRSwgMHgxMSwgMHhBNywgMHg5NywKKyAgICAweDZBLCAweEI0LCAweEI1LCAweERGLCAweDQwLCAweEU2LCAweDc1LCAweDVCLCAweEMwLCAweEYwLCAweDgwLCAweEM2LCAweEZGLCAweDczLCAweEQ1LCAweDQ1LAorICAgIDB4MDMsIDB4MDQsIDB4ODMsIDB4MTcsIDB4RjQsIDB4NjIsIDB4QkUsIDB4RjYsIDB4NEQsIDB4MjUsIDB4ODQsIDB4RDYsIDB4QjIsIDB4RTMsIDB4MzQsIDB4NDksCisgICAgMHhERSwgMHgzRCwgMHg2NywgMHhGOCwgMHg3QSwgMHg3RiwgMHhGQiwgMHhGOSwgMHhFNSwgMHg1RSwgMHhEMSwgMHgzOSwgMHg4QiwgMHg5RCwgMHhGRSwgMHg3RiwKKyAgICAweEUzLCAweDBCLCAweDhCLCAweDQ4LCAweEEwLCAweDlFLCAweDE1LCAweDgyLCAweDU3LCAweEFGLCAweEJBLCAweEZFLCAweDY1LCAweEZFLCAweDA3LCAweDdBLAorICAgIDB4M0IsIDB4NDYsIDB4REUsIDB4OTQsIDB4N0IsIDB4NjksIDB4OUMsIDB4QjAsIDB4NDgsIDB4NjgsIDB4MTQsIDB4NDUsIDB4RjYsIDB4ODUsIDB4QkIsIDB4OTUsCisgICAgMHg5NCwgMHg1RSwgMHgyRCwgMHg2QywgMHgzOCwgMHgyQywgMHhGOCwgMHg2NSwgMHgxMywgMHg4OCwgMHhBNywgMHhFQSwgMHgwNSwgMHhFNywgMHgyNSwgMHhBRiwKKyAgICAweDEzLCAweEM4LCAweDBGLCAweEEzLCAweERCLCAweDFFLCAweDU4LCAweDI4LCAweDk1LCAweEJELCAweDM0LCAweDUwLCAweDA2LCAweEVGLCAweEJCLCAweEM5LAorICAgIDB4OTMsIDB4QTMsIDB4RDQsIDB4MkQsIDB4NEYsIDB4MDcsIDB4NEYsIDB4MUQsIDB4QjgsIDB4QUYsIDB4NDIsIDB4NTksIDB4MzQsIDB4OEEsIDB4MzMsIDB4QjAsCisgICAgMHhENSwgMHg0RSwgMHg1NSwgMHg3OSwgMHgwRSwgMHg1MywgMHhDRCwgMHhBNCwgMHhFMCwgMHg5NiwgMHgyMywgMHg4QiwgMHgxQSwgMHgwNCwgMHhCMCwgMHg0OCwKKyAgICAweDgyLCAweEU4LCAweEVDLCAweEE4LCAweEI4LCAweDUyLCAweEFGLCAweEQwLCAweEZCLCAweEQxLCAweEYxLCAweEQwLCAweDUwLCAweEZDLCAweDdCLCAweDI3LAorICAgIDB4MzgsIDB4RkMsIDB4N0EsIDB4REUsIDB4ODMsIDB4NTAsIDB4N0UsIDB4RDMsIDB4RTYsIDB4RjUsIDB4NDUsIDB4NzYsIDB4QzUsIDB4MkQsIDB4NTAsIDB4QjQsCisgICAgMHg2OSwgMHhGNSwgMHgxMCwgMHg5MSwgMHhCRCwgMHgxOCwgMHhCMSwgMHg0OSwgMHhFNCwgMHg2QSwgMHgxNywgMHg0NSwgMHhCMSwgMHhGMSwgMHgyMCwgMHhDNywKKyAgICAweEUwLCAweEMyLCAweDAyLCAweDJELCAweDNDLCAweDkxLCAweDE2LCAweDI2LCAweDI1LCAweERFLCAweDQ5LCAweDg4LCAweEIzLCAweEQ3LCAweDkxLCAweDdELAorICAgIDB4MjEsIDB4QzEsIDB4MDgsIDB4REMsIDB4RUYsIDB4NTIsIDB4MTUsIDB4RDgsIDB4RTUsIDB4M0IsIDB4NTgsIDB4QzYsIDB4RDksIDB4OTcsIDB4MEUsIDB4N0UsCisgICAgMHhEOCwgMHg5NCwgMHg0RiwgMHhDRSwgMHhDQSwgMHhENywgMHhDNywgMHgzQywgMHhFRiwgMHhEMSwgMHgzNCwgMHgzRCwgMHg3OCwgMHhCNiwgMHg2NywgMHhBNywKKyAgICAweDZBLCAweDEzLCAweDlELCAweDFFLCAweDBBLCAweDUwLCAweDY3LCAweEEwLCAweEJGLCAweDg4LCAweEFBLCAweDM0LCAweEI0LCAweEFBLCAweDQ3LCAweDcxLAorICAgIDB4NDgsIDB4NzgsIDB4MzQsIDB4NDIsIDB4QzgsIDB4MTMsIDB4MUEsIDB4OTYsIDB4M0UsIDB4MjksIDB4RjksIDB4OUIsIDB4RDMsIDB4ODcsIDB4QzAsIDB4NjQsCisgICAgMHhENiwgMHg1QywgMHg3NiwgMHhCRiwgMHhENCwgMHhGMiwgMHg4NSwgMHhFNywgMHhCNiwgMHg2NCwgMHg2OCwgMHg0NywgMHg1NCwgMHhFOCwgMHgxQywgMHgzQSwKKyAgICAweDA2LCAweDA2LCAweDgzLCAweEU2LCAweEYyLCAweDQzLCAweDUzLCAweDJBLCAweDhGLCAweEZFLCAweDhDLCAweDA0LCAweEIwLCAweEFCLCAweDcwLCAweEUwLAorICAgIDB4QzcsIDB4RTMsIDB4NzIsIDB4NEUsIDB4QjgsIDB4MkUsIDB4QTUsIDB4OEYsIDB4MUUsIDB4REIsIDB4ODAsIDB4RTYsIDB4NDYsIDB4REQsIDB4RTUsIDB4NTUsCisgICAgMHhBQiwgMHhCQiwgMHgxQywgMHhCNCwgMHg5OCwgMHhEMywgMHg3OSwgMHhBRiwgMHhCRSwgMHgxMCwgMHg5RSwgMHhCMSwgMHgzMywgMHg0NywgMHhERSwgMHhGMywKKyAgICAweDQ2LCAweDEwLCAweEFCLCAweEJCLCAweEYxLCAweERELCAweDI0LCAweDRFLCAweDkxLCAweEJGLCAweDZFLCAweERELCAweEU1LCAweDg4LCAweDQ2LCAweERCLAorICAgIDB4NDQsIDB4MDcsIDB4NjksIDB4MzgsIDB4MkEsIDB4OEQsIDB4NDgsIDB4RUUsIDB4RjMsIDB4RjAsIDB4QkUsIDB4RUUsIDB4QTQsIDB4NjcsIDB4MDcsIDB4MjUsCisgICAgMHg0RCwgMHgzOSwgMHg3NiwgMHg3NCwgMHgxNywgMHhCQiwgMHg1OSwgMHhBNywgMHg5OSwgMHg0OSwgMHhFNywgMHgyMiwgMHg3MywgMHhDRCwgMHg4MywgMHg0RSwKKyAgICAweEE1LCAweERELCAweDY1LCAweEI3LCAweDM2LCAweDNELCAweERGLCAweDc3LCAweEY5LCAweEIyLCAweDVDLCAweEQ4LCAweEM3LCAweDBDLCAweENGLCAweDdDLAorICAgIDB4MzMsIDB4N0UsIDB4MjgsIDB4MzIsIDB4REQsIDB4QUIsIDB4NUMsIDB4MjcsIDB4ODAsIDB4NTQsIDB4NEMsIDB4Q0YsIDB4RjQsIDB4OTIsIDB4RDUsIDB4RkMsCisgICAgMHgyOCwgMHgxNSwgMHg5MSwgMHg3QiwgMHg3NywgMHgyOCwgMHgwRSwgMHg4NSwgMHg2MywgMHhFMiwgMHgzOCwgMHg2QywgMHgxMCwgMHhBRSwgMHg1NSwgMHhCMSwKKyAgICAweDc2LCAweDY5LCAweENBLCAweDBFLCAweDFFLCAweDg2LCAweDc2LCAweDZCLCAweDQwLCAweEMzLCAweEE5LCAweEQ1LCAweERDLCAweEIzLCAweDJFLCAweEJFLAorICAgIDB4MUYsIDB4RTksIDB4M0EsIDB4MkMsIDB4QjgsIDB4MEIsIDB4RUMsIDB4QjQsIDB4Q0EsIDB4OUUsIDB4NDcsIDB4Q0QsIDB4MEQsIDB4NDksIDB4QzMsIDB4QjksCisgICAgMHgyOCwgMHhEOSwgMHhCRiwgMHhDRCwgMHhCOSwgMHhGQSwgMHg2NiwgMHhDNSwgMHg4OSwgMHhEMywgMHhERiwgMHgwNCwgMHhDMSwgMHgwNiwgMHgzMSwgMHhBRiwKKyAgICAweEE0LCAweEJDLCAweEVFLCAweEVCLCAweDMzLCAweEY2LCAweDJCLCAweDhCLCAweENCLCAweEM0LCAweDUxLCAweDg0LCAweDhELCAweDk0LCAweEZELCAweERDLAorICAgIDB4QTgsIDB4QkMsIDB4MjMsIDB4REUsIDB4NDgsIDB4RjEsIDB4RTYsIDB4MjAsIDB4MjAsIDB4NkUsIDB4ODgsIDB4NkMsIDB4NjksIDB4QTAsIDB4M0QsIDB4M0IsCisgICAgMHg3RiwgMHhFMSwgMHgzNSwgMHgxNiwgMHg3OSwgMHgyMywgMHg4RSwgMHgyMywgMHhFRCwgMHg1NCwgMHg3QSwgMHgxQywgMHg5MCwgMHg2QywgMHgzNSwgMHhEOSwKKyAgICAweDMxLCAweEQ2LCAweDlCLCAweEU2LCAweDE4LCAweDQxLCAweDA3LCAweDRDLCAweDBBLCAweERDLCAweDU3LCAweDhGLCAweEVCLCAweDA0LCAweEEyLCAweEI5LAorICAgIDB4REQsIDB4QzEsIDB4QkQsIDB4RUYsIDB4RDIsIDB4NTEsIDB4M0QsIDB4OUQsIDB4OEIsIDB4M0YsIDB4RUMsIDB4MzQsIDB4RjMsIDB4MEQsIDB4QjMsIDB4QUQsCisgICAgMHhCQywgMHhBRCwgMHg2MiwgMHhBQSwgMHgwMiwgMHhGOCwgMHg3QywgMHgyMSwgMHhEOSwgMHg4RiwgMHg2NSwgMHgwOCwgMHhBMSwgMHgwRSwgMHg1RiwgMHg1RCwKKyAgICAweEE1LCAweDI0LCAweDVFLCAweEY0LCAweDlDLCAweDhBLCAweDI0LCAweEE4LCAweEY3LCAweEY2LCAweDBBLCAweEFELCAweDI4LCAweEFFLCAweDIxLCAweDUwLAorICAgIDB4QTIsIDB4MkIsIDB4MUIsIDB4NkMsIDB4QUYsIDB4REMsIDB4NjMsIDB4QzQsIDB4ODgsIDB4NTQsIDB4QjYsIDB4NzcsIDB4RTAsIDB4QzUsIDB4MjcsIDB4RDYsCisgICAgMHhGMywgMHg5MiwgMHhFMSwgMHg4MSwgMHgxOSwgMHg5OSwgMHgwRSwgMHg4MywgMHgzQSwgMHgxNywgMHgxMCwgMHhGMiwgMHhCNSwgMHg3NCwgMHg5NSwgMHhCMiwKKyAgICAweDg3LCAweDk4LCAweEJDLCAweDc1LCAweEZBLCAweDU0LCAweDJDLCAweDhCLCAweDI2LCAweEFELCAweEU5LCAweEE3LCAweENBLCAweDI4LCAweDg5LCAweEI5LAorICAgIDB4NzcsIDB4NUIsIDB4RjcsIDB4QzIsIDB4NzUsIDB4NDIsIDB4NzMsIDB4NzYsIDB4ODMsIDB4Q0EsIDB4MjYsIDB4RjUsIDB4QjksIDB4NzAsIDB4MjMsIDB4NkYsCisgICAgMHg1RiwgMHgzNSwgMHg5MSwgMHhDRSwgMHg2QSwgMHg1RCwgMHg1NywgMHhCOCwgMHhFMCwgMHgzQywgMHg5MSwgMHg2RiwgMHhDNCwgMHhCNywgMHgzMCwgMHg2RiwKKyAgICAweERELCAweEJELCAweEQ3LCAweDVGLCAweDFBLCAweEQyLCAweEU0LCAweEU3LCAweDBELCAweDJCLCAweDAyLCAweDJGLCAweDYxLCAweDlFLCAweDIyLCAweDRDLAorICAgIDB4RkUsIDB4QkQsIDB4MUEsIDB4REQsIDB4RTUsIDB4NjcsIDB4QTIsIDB4NkYsIDB4OTAsIDB4NEMsIDB4MzEsIDB4NUUsIDB4NkEsIDB4OUYsIDB4OEUsIDB4RTgsCisgICAgMHhDMSwgMHhCMiwgMHg0RSwgMHhFNCwgMHhDQSwgMHgyQiwgMHhCOCwgMHg0QSwgMHhFOCwgMHhGRiwgMHgwNiwgMHg5MSwgMHg3NiwgMHgyRSwgMHg1MSwgMHgzRiwKKyAgICAweDFCLCAweEE1LCAweDJBLCAweDFDLCAweEVCLCAweEQ0LCAweDA3LCAweDAwLCAweDAzLCAweDQwLCAweDMzLCAweDZBLCAweEQ4LCAweEI3LCAweDVBLCAweEYwLAorICAgIDB4RjgsIDB4RjcsIDB4Q0QsIDB4Q0IsIDB4M0QsIDB4QjgsIDB4OTgsIDB4QjQsIDB4NTYsIDB4RTksIDB4MjAsIDB4Q0MsIDB4NDUsIDB4MEYsIDB4QTMsIDB4NzYsCisgICAgMHhCMSwgMHgyRCwgMHg0MSwgMHg5QSwgMHg4OSwgMHgyNCwgMHg3QywgMHhBQywgMHg2MiwgMHhDQywgMHhDRiwgMHhFNSwgMHhBMSwgMHhFQiwgMHg3RSwgMHg0MSwKKyAgICAweDY0LCAweDdELCAweDZELCAweEYxLCAweDA1LCAweEMyLCAweDY1LCAweEU5LCAweEY4LCAweEU4LCAweERCLCAweEEwLCAweEI4LCAweDFBLCAweDg3LCAweDMyLAorICAgIDB4OUMsIDB4RjcsIDB4NDgsIDB4QTQsIDB4ODMsIDB4NjYsIDB4MTIsIDB4QUMsIDB4OUQsIDB4OUQsIDB4RTQsIDB4N0IsIDB4RjQsIDB4N0EsIDB4MkIsIDB4MjgsCisgICAgMHhCNywgMHgxMiwgMHgzQiwgMHhBQywgMHg3RCwgMHhGNCwgMHhCNiwgMHg3MiwgMHg4NywgMHg0QywgMHhGQywgMHg1RiwgMHg3NSwgMHg0QywgMHhFNSwgMHhFMSwKKyAgICAweDZELCAweDEwLCAweEY4LCAweEQ1LCAweEEyLCAweDNGLCAweDA0LCAweEIyLCAweDMzLCAweDZBLCAweDBBLCAweDNDLCAweDQ1LCAweDk1LCAweDc3LCAweDVGLAorICAgIDB4MjAsIDB4OUUsIDB4NzgsIDB4OTEsIDB4RUIsIDB4NzIsIDB4NkIsIDB4OTAsIDB4NzgsIDB4OUMsIDB4NUQsIDB4NDcsIDB4RTQsIDB4OUEsIDB4QzUsIDB4MTAsCisgICAgMHhCOCwgMHhFMSwgMHgxRCwgMHg1QSwgMHg3RCwgMHhGMywgMHg1NSwgMHg4RiwgMHg2NiwgMHg1NCwgMHgxRCwgMHg5NywgMHgwNSwgMHgzRiwgMHhGQywgMHhEQSwKKyAgICAweDI5LCAweDA0LCAweDU3LCAweDNGLCAweEQwLCAweDUyLCAweDEyLCAweDNDLCAweEJBLCAweEY1LCAweDUyLCAweDAyLCAweEU2LCAweDM3LCAweDNBLCAweEY5LAorICAgIDB4QUQsIDB4QjcsIDB4MkYsIDB4ODEsIDB4OEQsIDB4MTQsIDB4Q0MsIDB4MUMsIDB4OEMsIDB4M0EsIDB4OUQsIDB4NTQsIDB4NUQsIDB4NzUsIDB4RUMsIDB4MTUsCisgICAgMHgyOSwgMHhCNCwgMHhDRSwgMHg0NCwgMHhEQSwgMHg3MSwgMHg4QiwgMHhEMSwgMHhCNiwgMHg3NywgMHgwOCwgMHgyRSwgMHg4MCwgMHg0MywgMHg1NywgMHhGNSwKKyAgICAweDk0LCAweDM3LCAweEZDLCAweDExLCAweDFDLCAweDc1LCAweDYyLCAweEExLCAweDE3LCAweEIyLCAweDVFLCAweDU0LCAweEE2LCAweEJELCAweEFGLCAweDBCLAorICAgIDB4QjQsIDB4MzgsIDB4NzcsIDB4RTgsIDB4MDgsIDB4QzcsIDB4OTMsIDB4REQsIDB4OTYsIDB4ODMsIDB4OTEsIDB4MUQsIDB4NEIsIDB4NUYsIDB4RTUsIDB4QjMsCisgICAgMHhDOCwgMHgyOCwgMHhBOSwgMHg1MSwgMHg1RCwgMHhDQiwgMHhDRSwgMHg2RiwgMHg3RSwgMHhDRiwgMHhCRSwgMHg0RCwgMHg1RCwgMHg0NiwgMHhCMCwgMHgwMiwKKyAgICAweEZBLCAweEFGLCAweDZFLCAweDBBLCAweDVCLCAweEE0LCAweDZELCAweDM1LCAweEVCLCAweDc4LCAweDMxLCAweEIzLCAweDM2LCAweDA1LCAweEQyLCAweDg0LAorICAgIDB4QkQsIDB4QjcsIDB4MzgsIDB4NDcsIDB4Q0EsIDB4NDcsIDB4MDcsIDB4QTUsIDB4OUIsIDB4NjcsIDB4NDUsIDB4M0UsIDB4MTAsIDB4ODIsIDB4MDUsIDB4RTcsCisgICAgMHg3QiwgMHg4MCwgMHhBOSwgMHg1NSwgMHgzNCwgMHg0NCwgMHg2QSwgMHhDNywgMHg4NCwgMHgyNCwgMHg0RiwgMHhBQSwgMHhENSwgMHg3RCwgMHg3OCwgMHhGNywKKyAgICAweDE2LCAweDQzLCAweEMxLCAweEQ1LCAweDIwLCAweDgzLCAweEQ3LCAweEIwLCAweDUxLCAweDE0LCAweEM2LCAweEY0LCAweEQ1LCAweENCLCAweDYyLCAweERFLAorICAgIDB4RTQsIDB4QUQsIDB4NDcsIDB4QjUsIDB4RTUsIDB4NTcsIDB4Q0EsIDB4OUQsIDB4NzYsIDB4MTAsIDB4MzUsIDB4REUsIDB4OEYsIDB4REEsIDB4MkIsIDB4MEEsCisgICAgMHhGOCwgMHg2NSwgMHg5MCwgMHhEQiwgMHhGNSwgMHgzRCwgMHgyRSwgMHhERSwgMHgxRiwgMHhGNSwgMHg2QywgMHhGNCwgMHgyQiwgMHgyRSwgMHgxOCwgMHgxQywKKyAgICAweEQ1LCAweDk3LCAweEMyLCAweERFLCAweEMyLCAweEQ4LCAweEUxLCAweDc5LCAweDQzLCAweEM4LCAweEZDLCAweDlBLCAweDJBLCAweEYzLCAweDE0LCAweDI4LAorICAgIDB4MEUsIDB4QjYsIDB4MDgsIDB4RTEsIDB4RTgsIDB4RjEsIDB4NzYsIDB4QjksIDB4QTUsIDB4NTcsIDB4NUMsIDB4ODEsIDB4MTksIDB4MjcsIDB4QTUsIDB4ODAsCisgICAgMHgxNiwgMHgwQSwgMHg1RSwgMHhEQywgMHhDQywgMHhFMSwgMHhCRCwgMHg4QiwgMHhDNSwgMHhFQywgMHgwNywgMHhGRiwgMHg1MywgMHgzQiwgMHhCMSwgMHgxRCwKKyAgICAweEFELCAweDAyLCAweEFCLCAweEI2LCAweDA0LCAweDdCLCAweEExLCAweDJFLCAweDNGLCAweDA3LCAweDE5LCAweEQ1LCAweDgyLCAweERBLCAweDc3LCAweDIyLAorICAgIDB4ODAsIDB4MzEsIDB4MjAsIDB4REEsIDB4ODMsIDB4REIsIDB4NTYsIDB4MjIsIDB4ODgsIDB4ODksIDB4NDQsIDB4NTMsIDB4ODcsIDB4NjcsIDB4QUUsIDB4MzAsCisgICAgMHg1MCwgMHg0QywgMHhEMCwgMHg5MCwgMHg4QiwgMHg0NSwgMHgyMywgMHhDRSwgMHg0MSwgMHgzOSwgMHgwMywgMHhERSwgMHhFNiwgMHhEMywgMHhGQywgMHgyOCwKKyAgICAweDE5LCAweDNFLCAweDBCLCAweEQyLCAweDJFLCAweDk2LCAweEFDLCAweDhELCAweEQwLCAweDhFLCAweDI5LCAweDQ4LCAweDU4LCAweEEyLCAweEQ0LCAweDE3LAorICAgIDB4NjUsIDB4NEIsIDB4NzUsIDB4NEMsIDB4NDgsIDB4NDMsIDB4MzQsIDB4NDMsIDB4M0EsIDB4REQsIDB4Q0UsIDB4QzUsIDB4RjAsIDB4RjQsIDB4NkMsIDB4QjgsCisgICAgMHhERCwgMHhGMywgMHgzRSwgMHgzNCwgMHg1MCwgMHgyQSwgMHg4QywgMHg2QywgMHg5MCwgMHg5NiwgMHgxRSwgMHgyMSwgMHg2MSwgMHgxMywgMHg0MiwgMHhBNSwKKyAgICAweDEyLCAweDBGLCAweDczLCAweDAyLCAweEJBLCAweDlFLCAweEZGLCAweDQ3LCAweDgzLCAweERCLCAweEU0LCAweDE2LCAweDkwLCAweEQ5LCAweDBBLCAweDQwLAorICAgIDB4ODQsIDB4Q0EsIDB4RDIsIDB4MDMsIDB4MDUsIDB4RDgsIDB4NjQsIDB4QjIsIDB4M0QsIDB4OEEsIDB4NDIsIDB4MDIsIDB4OEMsIDB4ODgsIDB4REYsIDB4RUUsCisgICAgMHg1QSwgMHg0NywgMHhGMSwgMHhGNCwgMHg4MiwgMHg2RSwgMHg2MSwgMHhENSwgMHhGNSwgMHhBMywgMHg1OCwgMHgyMSwgMHg2QiwgMHhFRSwgMHg4RiwgMHhFMiwKKyAgICAweEVCLCAweDA3LCAweDM5LCAweEE5LCAweDcxLCAweEZDLCAweDU1LCAweDM5LCAweDM3LCAweDRELCAweEQyLCAweDQxLCAweEM1LCAweDMzLCAweEY3LCAweEY1LAorICAgIDB4RUQsIDB4NjcsIDB4QTcsIDB4NDIsIDB4QUQsIDB4NjEsIDB4RUMsIDB4RTIsIDB4OUQsIDB4QjksIDB4MTMsIDB4NEIsIDB4RjUsIDB4MTQsIDB4QjAsIDB4RTEsCisgICAgMHg0NywgMHgwNiwgMHgyQiwgMHg2NSwgMHhDRCwgMHgwOSwgMHgzMSwgMHg0NiwgMHg0NywgMHhGRSwgMHgxQiwgMHhCNSwgMHhEOCwgMHg1MywgMHgwNCwgMHgyOCwKKyAgICAweDVDLCAweDNGLCAweDQ2LCAweDI4LCAweENELCAweEI5LCAweDg3LCAweDlBLCAweEIwLCAweEUyLCAweDQ5LCAweEE2LCAweENGLCAweDU2LCAweDhELCAweDUyLAorICAgIDB4RDUsIDB4MDUsIDB4Q0QsIDB4MEMsIDB4M0QsIDB4NDUsIDB4MTEsIDB4MTgsIDB4ODQsIDB4MzgsIDB4OTgsIDB4RDQsIDB4RDMsIDB4MkQsIDB4RDAsIDB4MkEsCisgICAgMHhBRCwgMHhGNCwgMHg3QSwgMHhBQiwgMHhCRiwgMHhGNCwgMHhBOCwgMHg5RiwgMHg3QSwgMHhCNywgMHg3MywgMHhDMCwgMHhFQywgMHhGNSwgMHgzRSwgMHg4NywKKyAgICAweDlGLCAweDEyLCAweEVGLCAweEI4LCAweEFDLCAweDE5LCAweDM0LCAweEI5LCAweDcyLCAweEI5LCAweDZCLCAweEYzLCAweEJCLCAweDA4LCAweDhFLCAweDdGLAorICAgIDB4RUMsIDB4MjQsIDB4MUEsIDB4RjQsIDB4MDAsIDB4QzAsIDB4RDQsIDB4MjcsIDB4QjEsIDB4M0IsIDB4MDUsIDB4NjgsIDB4RDQsIDB4MzAsIDB4RDIsIDB4MjEsCisgICAgMHg2MywgMHhEOCwgMHgzMywgMHg2QywgMHhEQywgMHhBOSwgMHgzRSwgMHg3QywgMHhBNCwgMHhFMCwgMHg0MywgMHhDOSwgMHg4MCwgMHhBMywgMHhDQSwgMHgzNSwKKyAgICAweDcyLCAweDEwLCAweEYxLCAweEVBLCAweENELCAweEEyLCAweERCLCAweDAyLCAweDVBLCAweEVFLCAweDUyLCAweDVFLCAweDMxLCAweDMzLCAweDJDLCAweDY4LAorICAgIDB4M0EsIDB4QkUsIDB4MzQsIDB4NUUsIDB4Q0UsIDB4RjIsIDB4MjMsIDB4RTcsIDB4NEQsIDB4Q0YsIDB4NzEsIDB4RDQsIDB4M0UsIDB4OEMsIDB4NEUsIDB4MDgsCisgICAgMHg4MiwgMHhGNSwgMHgwMSwgMHhFOSwgMHhGOCwgMHgzNSwgMHhGQywgMHg4OCwgMHhGRSwgMHhDMSwgMHgxRSwgMHg2NywgMHg5NSwgMHg0NCwgMHg0NSwgMHhGOCwKKyAgICAweDY3LCAweEI4LCAweDkxLCAweEYwLCAweDhFLCAweDZDLCAweEU0LCAweDU3LCAweEE2LCAweERCLCAweDU2LCAweEUzLCAweDZDLCAweDE4LCAweDM3LCAweDBDLAorICAgIDB4NDgsIDB4NDksIDB4QjUsIDB4N0UsIDB4NTEsIDB4N0EsIDB4NDYsIDB4MEUsIDB4RDQsIDB4OEUsIDB4MkIsIDB4OTMsIDB4NjMsIDB4NkIsIDB4RUMsIDB4RTUsCisgICAgMHg1QiwgMHg3MiwgMHg0OSwgMHhCMiwgMHgzRCwgMHgyNCwgMHhBQSwgMHg1OSwgMHhBRiwgMHgxQiwgMHgwQSwgMHg4MiwgMHhFOCwgMHg1NiwgMHhDMSwgMHg1NiwKKyAgICAweDQ2LCAweDlGLCAweEIyLCAweDVCLCAweDhELCAweDRFLCAweDQ1LCAweDM0LCAweDQ5LCAweEU2LCAweERBLCAweEVGLCAweDQzLCAweDUzLCAweDExLCAweDQxLAorICAgIDB4MTIsIDB4ODIsIDB4QjksIDB4QTgsIDB4Q0MsIDB4OTUsIDB4OEUsIDB4NUYsIDB4RDMsIDB4QjksIDB4QTAsIDB4NTMsIDB4QzUsIDB4NkUsIDB4NzUsIDB4QzAsCisgICAgMHg1MCwgMHhGOCwgMHhDOCwgMHhBOCwgMHgxOSwgMHhFRSwgMHgxNywgMHg2RiwgMHhEMCwgMHhCMSwgMHhBNiwgMHhEMywgMHhDNSwgMHgzOSwgMHg1RSwgMHg2OCwKKyAgICAweENBLCAweDdELCAweDE3LCAweDE3LCAweDQ2LCAweDgzLCAweEYzLCAweDg0LCAweDA1LCAweDM2LCAweEI4LCAweEUyLCAweEQ0LCAweDIwLCAweEMwLCAweDg2LAorICAgIDB4Q0UsIDB4QjMsIDB4QzIsIDB4NEQsIDB4RTgsIDB4RTgsIDB4MUEsIDB4N0UsIDB4MDYsIDB4MUMsIDB4RTEsIDB4QTksIDB4NTUsIDB4Q0IsIDB4MkEsIDB4ODgsCisgICAgMHhDNSwgMHg1QSwgMHhFMSwgMHgxNSwgMHg3NCwgMHgxRSwgMHgzMSwgMHgwRSwgMHhDRSwgMHhBOSwgMHg3RCwgMHhBNCwgMHhDQiwgMHhGMSwgMHg3QiwgMHhDRCwKKyAgICAweDU2LCAweDU0LCAweEYyLCAweERDLCAweEQ3LCAweEU4LCAweDU5LCAweDVDLCAweEMxLCAweDQ3LCAweDZELCAweEI1LCAweDNBLCAweEI3LCAweDRGLCAweDMwLAorICAgIDB4OTAsIDB4MTAsIDB4N0YsIDB4RDcsIDB4MTYsIDB4QzIsIDB4RDUsIDB4QTIsIDB4MzYsIDB4MTAsIDB4MUEsIDB4NzEsIDB4MTksIDB4NEEsIDB4NkYsIDB4RkYsCisgICAgMHg1RSwgMHg0RSwgMHhDMSwgMHgyQiwgMHhDMSwgMHg5NiwgMHhFNCwgMHgyQSwgMHgyQSwgMHhFQiwgMHg2MCwgMHg5QywgMHg0QiwgMHgxMSwgMHg5NywgMHhFRCwKKyAgICAweEVBLCAweDZFLCAweDgzLCAweEEzLCAweDhCLCAweDE3LCAweEVCLCAweDQyLCAweEM4LCAweDE4LCAweDQwLCAweDYxLCAweEIwLCAweDI2LCAweDcyLCAweEFDLAorICAgIDB4QTIsIDB4NDksIDB4QTQsIDB4OUMsIDB4RDEsIDB4MzIsIDB4OEUsIDB4Q0YsIDB4ODAsIDB4NzEsIDB4RjEsIDB4MjAsIDB4NDcsIDB4QTUsIDB4MjgsIDB4RDQsCisgICAgMHhDOCwgMHgxRSwgMHhGMSwgMHhCMCwgMHhEMiwgMHgxNSwgMHgyMSwgMHhCRiwgMHg5QywgMHg1NywgMHg4OCwgMHhFRCwgMHgzMCwgMHg2RiwgMHg2OSwgMHgzQSwKKyAgICAweEI0LCAweDE0LCAweDE2LCAweDk4LCAweDE3LCAweEMxLCAweEMyLCAweDM2LCAweDE2LCAweDU0LCAweDAyLCAweEI3LCAweDQyLCAweDBDLCAweDg4LCAweDQ1LAorICAgIDB4NUUsIDB4OTAsIDB4ODksIDB4RDYsIDB4RTMsIDB4REIsIDB4MEYsIDB4RjYsIDB4MDcsIDB4QzgsIDB4NUIsIDB4ODksIDB4OEUsIDB4MjQsIDB4QTAsIDB4OUQsCisgICAgMHhCNywgMHhDNiwgMHhFQywgMHg3RSwgMHhEQiwgMHhDMSwgMHhBQywgMHgzOCwgMHhCMywgMHgyNiwgMHhEOSwgMHhGRSwgMHg4QSwgMHhDMiwgMHg3NiwgMHhERCwKKyAgICAweDAxLCAweDQxLCAweDMwLCAweDJELCAweDc1LCAweERDLCAweEU4LCAweDYwLCAweDBCLCAweEVGLCAweENDLCAweEJBLCAweDQxLCAweDg1LCAweEZDLCAweDM0LAorICAgIDB4NTksIDB4NEMsIDB4QTQsIDB4MTMsIDB4MTAsIDB4N0QsIDB4RjYsIDB4RTAsIDB4MDAsIDB4MTQsIDB4ODYsIDB4OTUsIDB4RjAsIDB4MDAsIDB4NDEsIDB4REYsCisgICAgMHhCRCwgMHhCNSwgMHgwMCwgMHhEQiwgMHhEQywgMHg4RiwgMHg1QiwgMHg3NSwgMHhERSwgMHg1RiwgMHg3NSwgMHhGQywgMHgxMSwgMHg3QSwgMHhDMCwgMHgwRCwKKyAgICAweEEyLCAweERCLCAweEI4LCAweDUzLCAweDU5LCAweDBCLCAweEZFLCAweEFGLCAweDQ1LCAweERELCAweEI3LCAweDcyLCAweDg3LCAweDJDLCAweDRCLCAweDA0LAorICAgIDB4Q0UsIDB4QzMsIDB4MzcsIDB4NTQsIDB4OUQsIDB4NjIsIDB4QzMsIDB4NkEsIDB4NEQsIDB4NzEsIDB4QUIsIDB4RjQsIDB4ODUsIDB4QTUsIDB4ODksIDB4RDEsCisgICAgMHhDOSwgMHhGQiwgMHg4QywgMHgyMywgMHg3MCwgMHgzNiwgMHg3NSwgMHg3NCwgMHg1QSwgMHg2QywgMHhENCwgMHg1MCwgMHg1QywgMHhEMCwgMHg0OSwgMHhDQywKKyAgICAweDlCLCAweDI3LCAweDhDLCAweDk5LCAweEM5LCAweDU1LCAweDlDLCAweDQ4LCAweEQxLCAweDQwLCAweDkxLCAweEQ5LCAweDFGLCAweEEyLCAweDRGLCAweEJCLAorICAgIDB4ODcsIDB4NDIsIDB4QTUsIDB4REEsIDB4QzUsIDB4Q0IsIDB4MTMsIDB4QTQsIDB4OUMsIDB4RkIsIDB4RDEsIDB4RDcsIDB4QjksIDB4OTAsIDB4RUYsIDB4RjUsCisgICAgMHgwMywgMHg5MiwgMHhDRCwgMHg3QiwgMHhGOSwgMHg3NiwgMHhGNCwgMHhGOCwgMHg3NiwgMHgyRSwgMHg5OSwgMHgxMywgMHgzMywgMHg2MSwgMHhFMSwgMHg3MiwKKyAgICAweDkyLCAweDRBLCAweDlFLCAweDhGLCAweDIwLCAweENFLCAweDM3LCAweEM3LCAweDE3LCAweDBGLCAweEZGLCAweDI1LCAweERGLCAweDE2LCAweEQ0LCAweEFGLAorICAgIDB4RDIsIDB4NDcsIDB4NjUsIDB4NEUsIDB4MkIsIDB4MEUsIDB4QkUsIDB4NDUsIDB4NTgsIDB4OEQsIDB4RkEsIDB4N0QsIDB4NTksIDB4OUQsIDB4QUUsIDB4NEUsCisgICAgMHg3RCwgMHg5RiwgMHg4QiwgMHg0MCwgMHg1RSwgMHgxRCwgMHgwQywgMHgyMywgMHhBRSwgMHhDOSwgMHhGRCwgMHg5RSwgMHg2MSwgMHgzOCwgMHhGOCwgMHg4MSwKKyAgICAweEM1LCAweDcxLCAweEQ0LCAweDZCLCAweDI0LCAweEI2LCAweDk2LCAweERDLCAweEM5LCAweDFCLCAweEQxLCAweDdDLCAweDg0LCAweEZELCAweDc5LCAweEVFLAorICAgIDB4N0IsIDB4MzQsIDB4ODIsIDB4QTksIDB4MDEsIDB4QjEsIDB4NzYsIDB4NjEsIDB4NjUsIDB4REEsIDB4NzQsIDB4OTQsIDB4OTMsIDB4MzgsIDB4MUQsIDB4MjMsCisgICAgMHgzRSwgMHg2OSwgMHgyNCwgMHg0QywgMHhBNCwgMHg5RiwgMHg0RCwgMHgwNCwgMHhEQSwgMHg5OSwgMHgzMiwgMHg1NiwgMHg4MSwgMHg4RCwgMHg3NSwgMHhERSwKKyAgICAweDUzLCAweDA5LCAweDUxLCAweDZFLCAweDMxLCAweDgxLCAweDBCLCAweDFCLCAweDE4LCAweEEzLCAweEZGLCAweERGLCAweDc2LCAweDdELCAweDU3LCAweDk3LAorICAgIDB4NjIsIDB4OEMsIDB4NDgsIDB4M0IsIDB4OTksIDB4MUMsIDB4QTIsIDB4OEEsIDB4MTYsIDB4REEsIDB4MkQsIDB4MDcsIDB4RUIsIDB4RTgsIDB4MkYsIDB4QUUsCisgICAgMHg0RSwgMHhDRiwgMHhCNCwgMHhBMSwgMHhBRCwgMHhCMiwgMHhDNSwgMHhFQiwgMHgyQywgMHg2OSwgMHg4QiwgMHgzRiwgMHgwMiwgMHhEOCwgMHg4RSwgMHgxNywKKyAgICAweDVFLCAweEVELCAweDUxLCAweEQ5LCAweDJBLCAweDk1LCAweEFBLCAweDNDLCAweDYxLCAweDE4LCAweDY3LCAweDY5LCAweDhCLCAweDFCLCAweDVELCAweDYwLAorICAgIDB4ODgsIDB4Q0YsIDB4NkMsIDB4NjEsIDB4OTYsIDB4RDUsIDB4MkMsIDB4Q0QsIDB4RjIsIDB4OEEsIDB4QTUsIDB4OEUsIDB4NjYsIDB4QzIsIDB4MTgsIDB4MjcsCisgICAgMHg1MSwgMHhBNiwgMHg0RSwgMHhERSwgMHg5NSwgMHgxOCwgMHhCRCwgMHhDNywgMHhEQywgMHg1MiwgMHg5RiwgMHhDMCwgMHg3NCwgMHhCQSwgMHhEOCwgMHhGMiwKKyAgICAweDFDLCAweDJCLCAweDVDLCAweDAxLCAweDI5LCAweEU0LCAweDlELCAweEVFLCAweEQ1LCAweEY2LCAweEZGLCAweDBFLCAweDdDLCAweDBELCAweDlFLCAweDA3LAorICAgIDB4MjksIDB4RjUsIDB4RUQsIDB4RDcsIDB4MzcsIDB4QTAsIDB4NTcsIDB4MUEsIDB4NTQsIDB4M0UsIDB4MTUsIDB4QjYsIDB4RUMsIDB4OTcsIDB4MjcsIDB4MzIsCisgICAgMHhFQSwgMHgzMiwgMHhDNiwgMHhCNiwgMHhCQiwgMHhGNiwgMHgyRiwgMHgwQywgMHgxMiwgMHg3NCwgMHgwRSwgMHhGQSwgMHg3NSwgMHg5NCwgMHhEMCwgMHgxMSwKKyAgICAweDc5LCAweEVFLCAweEU0LCAweEJELCAweDlDLCAweDBFLCAweDM0LCAweEZBLCAweEE5LCAweDY2LCAweDE0LCAweDg5LCAweERBLCAweDBFLCAweDIwLCAweDY1LAorICAgIDB4NEEsIDB4NjgsIDB4NUIsIDB4RTgsIDB4QUUsIDB4NTEsIDB4NEYsIDB4OUUsIDB4MTgsIDB4NUQsIDB4NkYsIDB4N0MsIDB4MTYsIDB4RDMsIDB4NzYsIDB4NkMsCisgICAgMHhCRSwgMHg1RSwgMHgyRCwgMHg5NSwgMHg5NSwgMHgwQiwgMHgwOCwgMHgwNywgMHgzNSwgMHhEMywgMHgwOSwgMHhDQiwgMHg2OCwgMHgzMSwgMHgxMywgMHgwQywKKyAgICAweDVCLCAweEVELCAweDRBLCAweEUyLCAweDBGLCAweDhCLCAweDVCLCAweDY4LCAweERDLCAweDMzLCAweEE2LCAweDgzLCAweDk4LCAweDZCLCAweDg1LCAweDA2LAorICAgIDB4MTYsIDB4RjMsIDB4RkUsIDB4RUQsIDB4NjAsIDB4NEUsIDB4NTIsIDB4NkQsIDB4NzEsIDB4OTEsIDB4ODgsIDB4NDMsIDB4QkUsIDB4RUYsIDB4QzQsIDB4QUQsCisgICAgMHgxMywgMHg0MiwgMHgxOCwgMHg1MCwgMHg3MSwgMHgzNCwgMHgxQSwgMHgxOCwgMHhFMCwgMHg4MywgMHg1RiwgMHhEMCwgMHhFMywgMHg2OCwgMHhBRCwgMHg4NSwKKyAgICAweEZCLCAweDgxLCAweDlBLCAweENFLCAweDM4LCAweDI1LCAweEZFLCAweERGLCAweEU4LCAweEU5LCAweEU0LCAweDg5LCAweEU5LCAweDM4LCAweDZELCAweDk5LAorICAgIDB4QTQsIDB4N0MsIDB4MDUsIDB4QjYsIDB4QjYsIDB4NUMsIDB4OTYsIDB4NzAsIDB4REUsIDB4NjIsIDB4RTUsIDB4NkYsIDB4OTEsIDB4MTksIDB4RkYsIDB4ODQsCisgICAgMHgxNCwgMHg1RSwgMHhENCwgMHhDQywgMHhFOSwgMHg5OSwgMHg4OSwgMHhGNSwgMHg3MiwgMHg3MiwgMHg4MywgMHg5RCwgMHhFRiwgMHg4QiwgMHhBMywgMHg2MywKKyAgICAweEVBLCAweDc2LCAweDdBLCAweEYyLCAweEQ1LCAweDFELCAweDUwLCAweEM5LCAweDFCLCAweEJDLCAweDRELCAweDc3LCAweEIzLCAweERBLCAweDFFLCAweDhCLAorICAgIDB4MUIsIDB4MzksIDB4MDQsIDB4QjUsIDB4MUEsIDB4NDIsIDB4REQsIDB4MTgsIDB4RTUsIDB4RTMsIDB4NUYsIDB4RkQsIDB4MDUsIDB4OUIsIDB4QkUsIDB4MDEsCisgICAgMHhBNSwgMHhBRCwgMHgwQSwgMHg5QSwgMHg2MiwgMHhCQiwgMHhFMiwgMHg0MywgMHhBQiwgMHgxNCwgMHg5NiwgMHhEMiwgMHhDQywgMHhCRSwgMHhBOSwgMHgwQywKKyAgICAweEU4LCAweEJGLCAweDQwLCAweDA0LCAweDAxLCAweEQ1LCAweDM0LCAweDVGLCAweDI1LCAweDI1LCAweDJCLCAweEQyLCAweDc2LCAweEE0LCAweDYwLCAweDZGLAorICAgIDB4RjIsIDB4RTYsIDB4NUMsIDB4MzUsIDB4NDQsIDB4MDYsIDB4MzYsIDB4OEQsIDB4QkEsIDB4RDUsIDB4RDcsIDB4OUYsIDB4MTMsIDB4QzgsIDB4RjEsIDB4MEIsCisgICAgMHgwQSwgMHg0MCwgMHhFRCwgMHhEMiwgMHg0MCwgMHg5MywgMHhDRSwgMHg0RSwgMHgxNSwgMHg3OCwgMHhGMSwgMHg5MiwgMHg1OSwgMHhEQiwgMHhFOSwgMHgxQiwKKyAgICAweDFFLCAweDkxLCAweEYzLCAweENBLCAweDIyLCAweDAwLCAweDI4LCAweEU2LCAweENFLCAweEYxLCAweDRFLCAweDc3LCAweDJCLCAweEY1LCAweEZDLCAweDJFLAorICAgIDB4OTAsIDB4QUEsIDB4RkEsIDB4NDcsIDB4MDAsIDB4RUMsIDB4NDIsIDB4NDUsIDB4OEIsIDB4RDAsIDB4RDgsIDB4QUEsIDB4MDYsIDB4MEEsIDB4NzksIDB4RDMsCisgICAgMHhCQiwgMHhBRSwgMHhEQSwgMHhFNiwgMHhGMiwgMHg3RSwgMHgxNSwgMHgzNCwgMHhBNywgMHgxMCwgMHhCOSwgMHhBRCwgMHhDNywgMHgyNCwgMHgyNSwgMHhGRiwKKyAgICAweEYxLCAweERELCAweDEyLCAweDY4LCAweEZBLCAweDkzLCAweEFGLCAweDU1LCAweEVCLCAweEVDLCAweEEwLCAweEFCLCAweDQ4LCAweDY2LCAweEJCLCAweDJDLAorICAgIDB4MTUsIDB4OUEsIDB4MzYsIDB4RDksIDB4QzQsIDB4NkMsIDB4NkIsIDB4OUUsIDB4OEIsIDB4NTUsIDB4NjcsIDB4MDMsIDB4RTQsIDB4QUUsIDB4MjMsIDB4QjAsCisgICAgMHg4OSwgMHg5MiwgMHhERCwgMHgwNCwgMHgzQSwgMHhFQiwgMHhGQSwgMHg0MywgMHgwMCwgMHhBNSwgMHgwMywgMHgzMiwgMHgyNSwgMHg4NiwgMHgwMiwgMHgzNywKKyAgICAweENELCAweENBLCAweEYyLCAweDg4LCAweDIyLCAweDQxLCAweDkzLCAweDMxLCAweDc1LCAweDZDLCAweEExLCAweDY2LCAweEQ1LCAweEM4LCAweDI2LCAweDJDLAorICAgIDB4MzAsIDB4NEYsIDB4RUQsIDB4RjIsIDB4MDcsIDB4QTYsIDB4NEYsIDB4ODUsIDB4MEMsIDB4QkMsIDB4RUMsIDB4QTYsIDB4RTUsIDB4OEEsIDB4QkEsIDB4MUMsCisgICAgMHhDQSwgMHhGNiwgMHgyMiwgMHg2NSwgMHhERCwgMHg3QSwgMHg2NSwgMHg4NSwgMHgyQywgMHg1QSwgMHhGMywgMHhEQywgMHhBRCwgMHhCNiwgMHhDMywgMHhGOCwKKyAgICAweDAzLCAweDJBLCAweDBCLCAweDAxLCAweEIyLCAweDM4LCAweDk2LCAweEY3LCAweDJGLCAweEZBLCAweEQ2LCAweDZCLCAweEQ5LCAweDVDLCAweDBDLCAweENELAorICAgIDB4M0YsIDB4RTQsIDB4QjksIDB4OEIsIDB4QTcsIDB4NTEsIDB4MjMsIDB4OEEsIDB4Q0UsIDB4MDgsIDB4RDUsIDB4REIsIDB4MTksIDB4RjYsIDB4RjQsIDB4OTIsCisgICAgMHhGOCwgMHhFMiwgMHg2QiwgMHhCMCwgMHhDNiwgMHgzRCwgMHgyRSwgMHhFNywgMHhGMSwgMHg4NCwgMHhBMSwgMHgxMiwgMHgwNywgMHgxNCwgMHg1MCwgMHhCQiwKKyAgICAweDg2LCAweDhELCAweDU5LCAweEJELCAweDZDLCAweEUzLCAweDNCLCAweEE2LCAweEVGLCAweEY5LCAweEQ0LCAweDNCLCAweDFGLCAweDFELCAweDM5LCAweEJGLAorICAgIDB4QjYsIDB4RkQsIDB4RjIsIDB4MjIsIDB4MDAsIDB4QkMsIDB4RjUsIDB4QTgsIDB4NDgsIDB4RkYsIDB4NjUsIDB4RjQsIDB4RDAsIDB4RDUsIDB4NUUsIDB4NDcsCisgICAgMHg0NywgMHg4MiwgMHhGNiwgMHhDNSwgMHg4OCwgMHg5NSwgMHhFNywgMHg2NSwgMHhBNywgMHg4OSwgMHgyRCwgMHg2QywgMHgxQywgMHhDQSwgMHgyRCwgMHgzMCwKKyAgICAweEU3LCAweEQ1LCAweDc3LCAweEJBLCAweEE0LCAweDA4LCAweDAzLCAweDhCLCAweDJELCAweDJELCAweDVBLCAweEEzLCAweEE1LCAweDFELCAweDAwLCAweDYyLAorICAgIDB4NjEsIDB4QzgsIDB4NkQsIDB4OUIsIDB4RjksIDB4NjEsIDB4RjEsIDB4MEEsIDB4OEMsIDB4MkIsIDB4NDgsIDB4MTAsIDB4NjYsIDB4OUQsIDB4NDEsIDB4QzgsCisgICAgMHg1QSwgMHhFMywgMHg3QywgMHhDMSwgMHgyNCwgMHgwOSwgMHg5MywgMHhFMywgMHg3MSwgMHg1MywgMHgyRCwgMHg0NCwgMHhBNSwgMHg5QSwgMHhFMSwgMHhDRiwKKyAgICAweEJFLCAweDg5LCAweDM1LCAweDFFLCAweDdBLCAweDIyLCAweDcxLCAweEQ0LCAweDY4LCAweDRELCAweDdGLCAweEJELCAweDRELCAweDY3LCAweDc2LCAweDAzLAorICAgIDB4QTgsIDB4NTYsIDB4MTIsIDB4QzcsIDB4NkIsIDB4ODQsIDB4ODEsIDB4QkIsIDB4MEIsIDB4M0EsIDB4NkEsIDB4RTIsIDB4MEYsIDB4OUQsIDB4QTAsIDB4RDYsCisgICAgMHgyRSwgMHg4OCwgMHhBOSwgMHg2NCwgMHhFNywgMHhGMCwgMHgyOCwgMHg3OCwgMHhDRCwgMHgyNiwgMHhCQiwgMHg0QiwgMHhFNSwgMHhGQiwgMHhCOCwgMHhEMSwKKyAgICAweDYzLCAweEEyLCAweDk5LCAweDc2LCAweDUwLCAweENFLCAweEY2LCAweEMxLCAweDk2LCAweEUwLCAweDFBLCAweDRFLCAweDFCLCAweEM2LCAweDA5LCAweDU4LAorICAgIDB4M0IsIDB4RTYsIDB4RkYsIDB4NzUsIDB4OTYsIDB4ODAsIDB4OEQsIDB4ODUsIDB4MkIsIDB4OTAsIDB4MDEsIDB4MDYsIDB4OEQsIDB4QjAsIDB4NDIsIDB4N0UsCisgICAgMHhGNSwgMHgyNSwgMHhBRCwgMHgyNCwgMHhCMSwgMHg4OCwgMHg5QywgMHgxQSwgMHgyNCwgMHg4QSwgMHg2OCwgMHg1QSwgMHhENSwgMHgyNCwgMHg5NCwgMHg3OCwKKyAgICAweEIyLCAweDFBLCAweEI5LCAweEMzLCAweEEyLCAweDE5LCAweDkyLCAweDkxLCAweDFBLCAweDc3LCAweDY2LCAweEQ2LCAweDZCLCAweEY1LCAweDVBLCAweDQ5LAorICAgIDB4QzcsIDB4QUEsIDB4NDQsIDB4NDEsIDB4NDMsIDB4RjMsIDB4RTksIDB4QzMsIDB4NUYsIDB4MTYsIDB4NDMsIDB4N0QsIDB4MTUsIDB4RjUsIDB4MEEsIDB4QzIsCisgICAgMHg4QSwgMHg1MCwgMHg2NCwgMHgwMSwgMHg3QiwgMHg4QywgMHgwOSwgMHg4NSwgMHhERCwgMHgyMiwgMHhFMywgMHg5RSwgMHhBOSwgMHg0NiwgMHgxRSwgMHgwMiwKKyAgICAweEU0LCAweDAxLCAweEIwLCAweDVELCAweEI4LCAweEU4LCAweDE0LCAweEVCLCAweDRFLCAweDI5LCAweDIzLCAweERFLCAweEFFLCAweDYyLCAweDQ1LCAweDAxLAorICAgIDB4QzgsIDB4MjUsIDB4ODcsIDB4MTgsIDB4QjMsIDB4RjksIDB4QUQsIDB4MDMsIDB4M0UsIDB4NTksIDB4NDksIDB4NzEsIDB4QTksIDB4QzcsIDB4MjcsIDB4RDcsCisgICAgMHhCQSwgMHg2NSwgMHhDRCwgMHgyNywgMHgxRSwgMHg1MCwgMHhFMCwgMHhEOCwgMHg4RiwgMHg4NCwgMHg2QiwgMHgwRiwgMHg2QywgMHgxMiwgMHgzNiwgMHgwNCwKKyAgICAweDZCLCAweDVELCAweEUzLCAweDdELCAweEQ1LCAweDUzLCAweEFGLCAweEJDLCAweEIwLCAweDgyLCAweDIxLCAweDU4LCAweEM5LCAweEZGLCAweERGLCAweDg3LAorICAgIDB4MTgsIDB4MDksIDB4NEIsIDB4NzksIDB4NTAsIDB4QjQsIDB4NUYsIDB4OUIsIDB4RjcsIDB4OTQsIDB4QUEsIDB4N0YsIDB4QjUsIDB4MDMsIDB4MjksIDB4NTgsCisgICAgMHg2MCwgMHhENCwgMHhDOSwgMHgzOSwgMHhDMSwgMHg1OCwgMHgyMSwgMHhFOCwgMHhGNSwgMHgyRCwgMHg0OSwgMHg1OCwgMHhCMSwgMHgyNSwgMHhFOSwgMHg4MiwKKyAgICAweDE1LCAweEI3LCAweERELCAweDhFLCAweDNELCAweDI4LCAweDFGLCAweDk3LCAweEU1LCAweERBLCAweDJCLCAweDMzLCAweEI5LCAweDJGLCAweDA4LCAweDI5LAorICAgIDB4ODAsIDB4ODcsIDB4QTIsIDB4QjcsIDB4ODAsIDB4MzMsIDB4MkEsIDB4RTUsIDB4RDUsIDB4NDksIDB4N0IsIDB4ODQsIDB4MTMsIDB4NjYsIDB4N0QsIDB4RTMsCisgICAgMHgxQiwgMHg5MiwgMHg5RiwgMHg5MCwgMHhDRSwgMHg3NCwgMHg2NywgMHg0QywgMHhDMywgMHg3NCwgMHhDMCwgMHg3NSwgMHg4NiwgMHg2MywgMHg0QywgMHg1RSwKKyAgICAweEExLCAweDQyLCAweEFDLCAweEM3LCAweDlCLCAweDY1LCAweDE3LCAweDIzLCAweDZELCAweDUwLCAweDE5LCAweEY5LCAweDk5LCAweDE1LCAweEE4LCAweDczLAorICAgIDB4MEUsIDB4MjgsIDB4QkEsIDB4MkMsIDB4OUEsIDB4QzAsIDB4MzUsIDB4MTMsIDB4MTYsIDB4QkMsIDB4MTIsIDB4MDksIDB4MEYsIDB4RjMsIDB4MEMsIDB4RTMsCisgICAgMHhFMSwgMHgyNywgMHg2MywgMHg3NSwgMHg2MCwgMHhEMywgMHhBOCwgMHhCOSwgMHhBRCwgMHgxMCwgMHgxOCwgMHhDMywgMHg1MiwgMHgzNiwgMHhFRCwgMHhGNCwKKyAgICAweEE0LCAweDIyLCAweDRDLCAweEMwLCAweDI0LCAweDM2LCAweEQ1LCAweEJDLCAweERGLCAweEQ1LCAweDVBLCAweEMyLCAweEExLCAweDIzLCAweDZGLCAweDJGLAorICAgIDB4MUEsIDB4QTIsIDB4MzEsIDB4OTcsIDB4MjQsIDB4QjgsIDB4NjcsIDB4RDcsIDB4NEIsIDB4NTMsIDB4NTAsIDB4MTksIDB4NkEsIDB4REYsIDB4NDAsIDB4MjEsCisgICAgMHhDQiwgMHgyRiwgMHg0MywgMHhEMSwgMHhEMiwgMHg2OCwgMHg2QiwgMHg3NiwgMHgwNywgMHg4QiwgMHhBNCwgMHhDOCwgMHhEMCwgMHg1RSwgMHhBRiwgMHgyMiwKKyAgICAweDUxLCAweDEzLCAweDM0LCAweDFGLCAweDI2LCAweEFDLCAweDdELCAweEMyLCAweDZFLCAweDZELCAweDIxLCAweDk4LCAweEZDLCAweDNCLCAweEMyLCAweDk1LAorICAgIDB4QUQsIDB4NzQsIDB4Q0IsIDB4RjAsIDB4QzAsIDB4QjcsIDB4RDAsIDB4QUUsIDB4ODYsIDB4NDYsIDB4NUQsIDB4ODQsIDB4RUQsIDB4RUIsIDB4QjgsIDB4NjQsCisgICAgMHg2NiwgMHgyQSwgMHhBNywgMHhBMSwgMHhFMywgMHhDQiwgMHg0OCwgMHg3RCwgMHhEOCwgMHgyRSwgMHhDRSwgMHg3QiwgMHgzNywgMHhEMiwgMHgyNCwgMHhCNSwKKyAgICAweDgwLCAweDMxLCAweDBDLCAweDc3LCAweDI0LCAweDRFLCAweDk2LCAweDU5LCAweDk5LCAweDA1LCAweDgwLCAweENGLCAweDEzLCAweDE1LCAweDRBLCAweDk3LAorICAgIDB4NDMsIDB4NkYsIDB4NDUsIDB4QjksIDB4RTgsIDB4NDUsIDB4NDYsIDB4OTAsIDB4OTgsIDB4NDksIDB4QzEsIDB4ODMsIDB4ODUsIDB4NEIsIDB4NjcsIDB4N0UsCisgICAgMHg1OCwgMHg3OCwgMHg5RSwgMHg2OSwgMHg5QywgMHhERiwgMHgxRiwgMHhFQywgMHhDNSwgMHgwMSwgMHhCMywgMHg1RCwgMHg1MSwgMHhGOSwgMHhDRSwgMHg4NCwKKyAgICAweDE5LCAweDVDLCAweDY3LCAweEMxLCAweENFLCAweDI2LCAweDRBLCAweEFELCAweEJGLCAweDIzLCAweDAwLCAweDQzLCAweDc4LCAweDNDLCAweDJBLCAweDBDLAorICAgIDB4QUUsIDB4RkMsIDB4MEEsIDB4OUEsIDB4NDYsIDB4MkQsIDB4MzcsIDB4ODAsIDB4Q0IsIDB4QjIsIDB4QkUsIDB4OEIsIDB4NUQsIDB4QUUsIDB4MjEsIDB4MTEsCisgICAgMHhBQywgMHhERSwgMHg2RiwgMHhDMSwgMHg4RCwgMHhGQiwgMHhBMSwgMHhDRiwgMHhCQSwgMHg3MiwgMHhDRiwgMHg4MSwgMHhENywgMHg3NCwgMHgxQSwgMHgxMCwKKyAgICAweDgyLCAweDJBLCAweDVGLCAweEZCLCAweEUwLCAweDIyLCAweEQ1LCAweDdCLCAweDVBLCAweDYyLCAweEIzLCAweDRCLCAweDVELCAweDk0LCAweDlDLCAweEZFLAorICAgIDB4RkUsIDB4N0UsIDB4RkUsIDB4QzksIDB4MUYsIDB4QTcsIDB4OUIsIDB4QkIsIDB4OEYsIDB4NDIsIDB4MjYsIDB4OEUsIDB4OTYsIDB4NzAsIDB4MkMsIDB4RDAsCisgICAgMHgyMCwgMHhFMywgMHhDNywgMHhDMCwgMHgyOSwgMHg0QywgMHhDRSwgMHgzNywgMHg2NywgMHg3NywgMHg1MSwgMHgyMiwgMHg0MywgMHg4MywgMHhFQSwgMHgzNiwKKyAgICAweDg1LCAweEVBLCAweENELCAweDA4LCAweDI4LCAweEM3LCAweDM2LCAweDhFLCAweEY2LCAweDVGLCAweDM0LCAweDY1LCAweDAyLCAweDYxLCAweEFDLCAweEI1LAorICAgIDB4NDIsIDB4RTMsIDB4RDYsIDB4OEQsIDB4OUIsIDB4RkMsIDB4MkYsIDB4NUEsIDB4QkEsIDB4QzQsIDB4ODQsIDB4MTAsIDB4NDIsIDB4Q0UsIDB4QkIsIDB4OEMsCisgICAgMHg0OCwgMHhGNiwgMHhEMSwgMHgwQSwgMHhEQSwgMHg0NSwgMHg4RCwgMHg0NywgMHg2QywgMHgxOCwgMHhCQiwgMHg4NywgMHhCNiwgMHgzNSwgMHhEQiwgMHhERSwKKyAgICAweDAxLCAweDc5LCAweDVFLCAweDBDLCAweDk0LCAweEZDLCAweEYwLCAweDlCLCAweDYxLCAweDc3LCAweEVGLCAweDZDLCAweDM2LCAweEU5LCAweDg1LCAweDU0LAorICAgIDB4QzgsIDB4MzcsIDB4MUYsIDB4MzUsIDB4ODUsIDB4OEIsIDB4MjIsIDB4NTMsIDB4MDIsIDB4RjQsIDB4QkEsIDB4MDksIDB4NUUsIDB4RDksIDB4NEEsIDB4NzQsCisgICAgMHhFNSwgMHg2MiwgMHg3QywgMHhFMCwgMHg0MSwgMHhDOSwgMHgwMiwgMHhBMiwgMHhBQiwgMHg5RSwgMHgwQiwgMHg1MywgMHhCNywgMHgwNCwgMHhBRiwgMHhCRiwKKyAgICAweDRBLCAweEMzLCAweDg4LCAweDUzLCAweDEzLCAweEU1LCAweEVELCAweEM3LCAweDJELCAweDM1LCAweDRFLCAweDdGLCAweEE1LCAweDM0LCAweEE3LCAweEIzLAorICAgIDB4M0IsIDB4RUIsIDB4N0IsIDB4NjAsIDB4QjEsIDB4MEIsIDB4QjMsIDB4QTAsIDB4MzIsIDB4MDIsIDB4QkIsIDB4MzEsIDB4MzQsIDB4N0IsIDB4RTUsIDB4OTEsCisgICAgMHgxRiwgMHg0OCwgMHhFMCwgMHg3RiwgMHg5NCwgMHg5NSwgMHgzQywgMHhBNCwgMHgzNiwgMHg4NiwgMHgzMSwgMHgzQSwgMHg3NywgMHhBMCwgMHhEQSwgMHg1MCwKKyAgICAweDE1LCAweEI5LCAweDEzLCAweEEwLCAweDM1LCAweDI3LCAweDcwLCAweENDLCAweDE5LCAweEYzLCAweDg5LCAweDIyLCAweDdDLCAweDM1LCAweEYxLCAweEYwLAorICAgIDB4Q0UsIDB4Q0YsIDB4M0IsIDB4MTUsIDB4MzksIDB4QjcsIDB4RTEsIDB4MTEsIDB4QjQsIDB4RkMsIDB4NEUsIDB4MDIsIDB4NjAsIDB4MDUsIDB4QkIsIDB4N0UsCisgICAgMHgwOCwgMHgwMSwgMHg4QiwgMHhCNSwgMHg3NywgMHg4NywgMHg3MCwgMHg2MCwgMHhEQiwgMHgzOCwgMHg1MiwgMHgzMSwgMHg2QiwgMHgxMSwgMHg0MSwgMHhCRiwKKyAgICAweDFCLCAweENCLCAweDY3LCAweDg0LCAweEM5LCAweDdCLCAweEExLCAweEJBLCAweEEzLCAweDJGLCAweDIxLCAweEVDLCAweDBELCAweDg5LCAweDVBLCAweDc1LAorICAgIDB4MzYsIDB4MjAsIDB4ODIsIDB4QzYsIDB4QzEsIDB4OTMsIDB4MTIsIDB4RDYsIDB4MTEsIDB4MjIsIDB4QkYsIDB4OUYsIDB4MEUsIDB4NTksIDB4RkMsIDB4RkIsCisgICAgMHhBMCwgMHgyMCwgMHg0NywgMHhDNywgMHg5QSwgMHg5OCwgMHhCOCwgMHgxRiwgMHg5NSwgMHgxRCwgMHg0QywgMHg1QiwgMHg5NywgMHhFRiwgMHg5MiwgMHg0MCwKKyAgICAweEFCLCAweEI3LCAweDIxLCAweDYwLCAweEU0LCAweDY1LCAweENGLCAweEFDLCAweEQ4LCAweDM0LCAweDkxLCAweDgzLCAweEQyLCAweDcxLCAweEFBLCAweEZDLAorICAgIDB4QUIsIDB4QTgsIDB4RjUsIDB4NkEsIDB4MDUsIDB4ODYsIDB4MDEsIDB4NTYsIDB4NzIsIDB4OEYsIDB4NUIsIDB4QUEsIDB4NTEsIDB4NkIsIDB4M0YsIDB4QTMsCisgICAgMHgzMiwgMHhBMywgMHhFNCwgMHg5OSwgMHhFRCwgMHgzOCwgMHg0MywgMHg0NiwgMHg4RCwgMHg2MSwgMHg4MCwgMHg4OCwgMHhDMywgMHhFRiwgMHhBQSwgMHhGNiwKKyAgICAweEFBLCAweDZGLCAweDM0LCAweEExLCAweEQ3LCAweDgxLCAweDRDLCAweDlDLCAweEQ3LCAweEVDLCAweEUwLCAweDlFLCAweDI2LCAweDZCLCAweDJDLCAweEY4LAorICAgIDB4QzAsIDB4RDUsIDB4MEIsIDB4QTEsIDB4NzMsIDB4QTcsIDB4QkQsIDB4NEIsIDB4NjgsIDB4RDAsIDB4RkIsIDB4NzUsIDB4RjMsIDB4MUMsIDB4OUMsIDB4MjYsCisgICAgMHhDMywgMHg2MCwgMHhCMiwgMHgxMSwgMHg4MSwgMHhGRSwgMHgxMiwgMHgxMywgMHhDNCwgMHg2QiwgMHhFNSwgMHg1MiwgMHg3MiwgMHgwMCwgMHgyNiwgMHg0RSwKKyAgICAweDdBLCAweEZGLCAweDJDLCAweDIwLCAweENCLCAweDMyLCAweEFBLCAweEU0LCAweEVFLCAweDZCLCAweDg5LCAweDUyLCAweEM1LCAweDJCLCAweERDLCAweEZBLAorICAgIDB4MUIsIDB4NTIsIDB4NEQsIDB4OEUsIDB4MDIsIDB4REIsIDB4ODQsIDB4NEUsIDB4N0MsIDB4MzcsIDB4QkEsIDB4RkYsIDB4REMsIDB4OEQsIDB4M0YsIDB4QzYsCisgICAgMHhCRSwgMHg1QywgMHgxRCwgMHg4NSwgMHhGMywgMHhFMywgMHg0QSwgMHg4MywgMHgyOCwgMHg2MSwgMHhCMywgMHhDMCwgMHhGNiwgMHgwNSwgMHg4QiwgMHg4QSwKKyAgICAweEU4LCAweEVELCAweDNFLCAweDkyLCAweDcwLCAweDlBLCAweEZCLCAweEYzLCAweDVCLCAweDM5LCAweDNBLCAweDNCLCAweDNFLCAweDMzLCAweDI1LCAweDAxLAorICAgIDB4MTUsIDB4ODYsIDB4NUIsIDB4MTcsIDB4MTQsIDB4NDIsIDB4QkQsIDB4ODMsIDB4RDUsIDB4OEIsIDB4N0UsIDB4QTgsIDB4RkMsIDB4RjksIDB4MjYsIDB4MUQsCisgICAgMHhFQywgMHhEOSwgMHhFNCwgMHgyNSwgMHhDQywgMHgzQSwgMHgzQSwgMHhENywgMHgwNywgMHg3QywgMHg1OSwgMHg4NywgMHhDMiwgMHg0RiwgMHg3QywgMHg3RSwKKyAgICAweERELCAweDRGLCAweDAyLCAweDRCLCAweDQ2LCAweEJBLCAweEZELCAweDFBLCAweDI2LCAweDQ2LCAweDAxLCAweDNDLCAweDI2LCAweERGLCAweDM4LCAweDAzLAorICAgIDB4QTUsIDB4MEUsIDB4RjAsIDB4OEIsIDB4QzgsIDB4REQsIDB4RTEsIDB4MzcsIDB4RDUsIDB4REIsIDB4NTEsIDB4MUIsIDB4OUMsIDB4N0IsIDB4ODEsIDB4MTIsCisgICAgMHgxNSwgMHhDQSwgMHg2RCwgMHg4NSwgMHhEQiwgMHgwMiwgMHgyQSwgMHhBMywgMHgyQiwgMHg1MiwgMHhBQSwgMHgwNSwgMHhFOSwgMHhDQSwgMHg0MiwgMHhDQSwKKyAgICAweDAxLCAweDRCLCAweEJGLCAweDJDLCAweDgyLCAweDVGLCAweDRFLCAweDlFLCAweEUyLCAweENCLCAweDJELCAweEFELCAweDY0LCAweEM0LCAweEE2LCAweEMxLAorICAgIDB4RkIsIDB4QTgsIDB4QTcsIDB4N0YsIDB4NDYsIDB4QzMsIDB4QTksIDB4RjUsIDB4QzEsIDB4NjgsIDB4NUYsIDB4NTQsIDB4MTgsIDB4MkYsIDB4RDQsIDB4NUEsCisgICAgMHhEMSwgMHg5NCwgMHg3MSwgMHg1MiwgMHg5MCwgMHgzMywgMHhEMCwgMHhEOSwgMHhGMiwgMHgwNSwgMHg4MywgMHgwOCwgMHg0MiwgMHg3NywgMHhFNSwgMHg1NywKKyAgICAweDZELCAweDc4LCAweEI5LCAweDIwLCAweDkyLCAweDFDLCAweEIwLCAweDY0LCAweDM5LCAweEUxLCAweEM4LCAweDI3LCAweDMzLCAweEI2LCAweDI0LCAweDNELAorICAgIDB4OEUsIDB4RTMsIDB4NkQsIDB4NDEsIDB4OUEsIDB4NEMsIDB4MzYsIDB4MTEsIDB4QjIsIDB4N0QsIDB4NUMsIDB4RDMsIDB4NEIsIDB4NTYsIDB4NDIsIDB4MUUsCisgICAgMHhCMywgMHhENCwgMHgxRSwgMHg1NSwgMHhGRSwgMHgwQywgMHgxQiwgMHg5MSwgMHgzMCwgMHg3NCwgMHgzQywgMHgyQywgMHg5OCwgMHg1OCwgMHhENywgMHgwRCwKKyAgICAweEEzLCAweENELCAweDE3LCAweDA3LCAweEJELCAweERDLCAweDMxLCAweDdDLCAweENFLCAweDg5LCAweDlFLCAweERCLCAweERGLCAweDM5LCAweDUyLCAweDlCLAorICAgIDB4OEIsIDB4MDIsIDB4NzgsIDB4QUQsIDB4RDgsIDB4QTcsIDB4QjMsIDB4RTQsIDB4ODEsIDB4RTQsIDB4RkIsIDB4NDEsIDB4RTYsIDB4NjQsIDB4NTYsIDB4OEYsCisgICAgMHg4NiwgMHg4MCwgMHhGNCwgMHg2NywgMHgyMCwgMHg0MCwgMHg3MiwgMHhGRCwgMHhDQywgMHgzNiwgMHgxNSwgMHhEQSwgMHhCNywgMHgyRSwgMHhEOCwgMHg0RiwKKyAgICAweDI1LCAweDU0LCAweDUwLCAweEE5LCAweEQwLCAweDVCLCAweDFBLCAweDdELCAweEIwLCAweEE2LCAweERGLCAweDVELCAweEI0LCAweDFCLCAweDEzLCAweDNBLAorICAgIDB4QTIsIDB4NDYsIDB4RUYsIDB4RTcsIDB4NTMsIDB4NjAsIDB4RjQsIDB4MjAsIDB4RjEsIDB4NTEsIDB4MzEsIDB4NUEsIDB4MzYsIDB4QjEsIDB4QTYsIDB4QTcsCisgICAgMHhEQSwgMHg5RSwgMHgyNiwgMHg3MywgMHhFQywgMHg4QiwgMHg2NSwgMHhEOCwgMHg2NCwgMHg4NSwgMHgyNywgMHg1MSwgMHgyNywgMHhCMSwgMHhFQiwgMHg0QiwKKyAgICAweEJCLCAweDc4LCAweDBDLCAweEQwLCAweEY1LCAweEU0LCAweEVDLCAweDUyLCAweEVCLCAweDBFLCAweEVCLCAweDEzLCAweDNDLCAweDFFLCAweEQ3LCAweDM1LAorICAgIDB4ODgsIDB4NUQsIDB4OTgsIDB4MTEsIDB4OUQsIDB4MEIsIDB4NzUsIDB4RUMsIDB4RUMsIDB4NjcsIDB4NDIsIDB4QjUsIDB4NEMsIDB4RjYsIDB4RjAsIDB4NEMsCisgICAgMHhBMiwgMHhFMSwgMHgzOCwgMHhGNCwgMHg1NSwgMHg5NSwgMHhDQiwgMHg1NCwgMHgwRiwgMHhEMywgMHhFOCwgMHgzQywgMHhGMiwgMHgzOSwgMHg5RSwgMHhENiwKKyAgICAweDM0LCAweDQ2LCAweDIxLCAweDg1LCAweEQ1LCAweDYzLCAweEU4LCAweDRCLCAweDM0LCAweEFBLCAweDMxLCAweDZFLCAweEE3LCAweEQwLCAweEE5LCAweEM3LAorICAgIDB4NTQsIDB4NTQsIDB4NjIsIDB4MDAsIDB4OUIsIDB4QjUsIDB4ODksIDB4OTQsIDB4OEYsIDB4NkMsIDB4MEMsIDB4RDUsIDB4NkMsIDB4MjMsIDB4MTMsIDB4Q0QsCisgICAgMHg1OCwgMHg2RSwgMHhDQSwgMHg5QSwgMHhGMSwgMHgwOCwgMHgyNCwgMHg5NCwgMHhBMywgMHg4MCwgMHhEOSwgMHgyRiwgMHhBOSwgMHgzMiwgMHgxRCwgMHgzQSwKKyAgICAweDNGLCAweDY3LCAweENCLCAweEQ1LCAweDdELCAweDRELCAweDg5LCAweDU2LCAweDVDLCAweEU1LCAweERDLCAweDM3LCAweDk5LCAweDI3LCAweDNFLCAweDY2LAorICAgIDB4ODIsIDB4NTksIDB4M0YsIDB4RjIsIDB4NjgsIDB4RTIsIDB4QzQsIDB4QTksIDB4RTksIDB4RDgsIDB4RkIsIDB4NUUsIDB4OEUsIDB4MjIsIDB4MEUsIDB4NzcsCisgICAgMHg1RiwgMHg2NSwgMHg5QiwgMHg5MSwgMHhEQywgMHg1OSwgMHhDNCwgMHg5MSwgMHgzMCwgMHg0NCwgMHgyNCwgMHg3QSwgMHg3NCwgMHg0OSwgMHhBMywgMHhBMSwKKyAgICAweDRDLCAweDJBLCAweEJGLCAweEMzLCAweEQ3LCAweDIxLCAweDIxLCAweDJBLCAweEE5LCAweDhDLCAweDVGLCAweDQ1LCAweERBLCAweDc4LCAweDVFLCAweDU1LAorICAgIDB4N0YsIDB4N0MsIDB4NDEsIDB4RDMsIDB4NkQsIDB4MEIsIDB4QkUsIDB4ODMsIDB4QTgsIDB4NUUsIDB4MDgsIDB4RjUsIDB4RUMsIDB4Q0MsIDB4RkQsIDB4MjEsCisgICAgMHhCMywgMHgxRCwgMHg2QSwgMHhDQywgMHhGOSwgMHg1MiwgMHhGMywgMHg4OSwgMHg5NiwgMHgyQSwgMHg3MCwgMHhBQiwgMHg2MywgMHg2MiwgMHhBMywgMHhCNCwKKyAgICAweEU3LCAweDcwLCAweEU5LCAweERGLCAweDRDLCAweEVELCAweDUyLCAweEEwLCAweDI0LCAweDM4LCAweDU4LCAweEYxLCAweEM2LCAweDVCLCAweDI4LCAweEEwLAorICAgIDB4OEYsIDB4ODQsIDB4MzYsIDB4NjAsIDB4RkIsIDB4MTcsIDB4QUEsIDB4MjcsIDB4QjEsIDB4QTUsIDB4NzEsIDB4RTgsIDB4MUUsIDB4REYsIDB4QjksIDB4MEEsCisgICAgMHgwRCwgMHgxNSwgMHg4MywgMHhGNiwgMHhFMSwgMHhGMiwgMHg1MSwgMHg4RiwgMHg5MiwgMHg2NywgMHg2MywgMHhBQiwgMHhEMSwgMHgyQSwgMHgyOSwgMHg3NywKKyAgICAweDJELCAweEYwLCAweDFFLCAweDBFLCAweDE5LCAweENDLCAweDRFLCAweDlELCAweDhGLCAweEFBLCAweERFLCAweEMxLCAweDE1LCAweDFBLCAweEJELCAweDE5LAorICAgIDB4NzksIDB4RDAsIDB4NjEsIDB4NTEsIDB4MkQsIDB4MjMsIDB4ODIsIDB4OEUsIDB4MkMsIDB4QTMsIDB4MDAsIDB4OUUsIDB4OTEsIDB4ODMsIDB4RDQsIDB4NjEsCisgICAgMHg2RSwgMHg1MywgMHgxQiwgMHg4MSwgMHhCRCwgMHgwNywgMHg2OSwgMHgyNCwgMHhFNywgMHhGNywgMHhENCwgMHg1QiwgMHg2NSwgMHg3MiwgMHhFMiwgMHgwRiwKKyAgICAweDA1LCAweDQxLCAweEQ1LCAweEQ2LCAweDVFLCAweDlELCAweEYzLCAweEYwLCAweEEwLCAweEY1LCAweDdDLCAweEM5LCAweDJGLCAweDBDLCAweDg3LCAweEVDLAorICAgIDB4MTMsIDB4REIsIDB4NzksIDB4NzAsIDB4ODksIDB4MEMsIDB4NjcsIDB4NDAsIDB4QzksIDB4Q0EsIDB4RjMsIDB4RTAsIDB4RUEsIDB4MTIsIDB4RjEsIDB4OTIsCisgICAgMHhENCwgMHgwMiwgMHg3MSwgMHg3OSwgMHhFNiwgMHhGNywgMHhDNiwgMHhDNSwgMHgyNywgMHg0QSwgMHg5RCwgMHhBQywgMHgzMiwgMHg2QSwgMHg0NCwgMHhEOSwKKyAgICAweDAxLCAweDhELCAweDAxLCAweDFGLCAweDJBLCAweEQ3LCAweEU1LCAweDdGLCAweDMyLCAweDUxLCAweDlGLCAweEI2LCAweDM2LCAweDhBLCAweDk4LCAweDRFLAorICAgIDB4QTEsIDB4MEQsIDB4QTMsIDB4Q0QsIDB4M0MsIDB4RjcsIDB4REYsIDB4MzAsIDB4MEEsIDB4RDksIDB4MkEsIDB4NkEsIDB4RDYsIDB4OTcsIDB4MTQsIDB4MzQsCisgICAgMHgwQywgMHhBMSwgMHhDNSwgMHg4NywgMHgxQiwgMHg2MywgMHg0RCwgMHhCQSwgMHgyMywgMHg5RSwgMHgzRCwgMHg2RSwgMHg0RiwgMHg4MCwgMHgzRCwgMHgzMiwKKyAgICAweDI4LCAweDFELCAweDUxLCAweDhGLCAweDYzLCAweENBLCAweEE2LCAweDVBLCAweDc3LCAweEI4LCAweEI5LCAweEEyLCAweEU1LCAweDA1LCAweDhDLCAweEU5LAorICAgIDB4RTMsIDB4QzcsIDB4QzgsIDB4RjAsIDB4NDMsIDB4MTQsIDB4MjksIDB4N0UsIDB4NzAsIDB4MjMsIDB4NzcsIDB4MTgsIDB4MkQsIDB4M0EsIDB4MjAsIDB4MTQsCisgICAgMHgxRiwgMHgyNiwgMHgwRiwgMHg0NiwgMHgzMywgMHgwQSwgMHg2QSwgMHg2QiwgMHhDQSwgMHg2MiwgMHhCMCwgMHhGMCwgMHhDQiwgMHhCNCwgMHg0OCwgMHhGQSwKKyAgICAweEIyLCAweDg0LCAweDU1LCAweDBCLCAweDQ1LCAweDM1LCAweEMyLCAweDQ3LCAweDY1LCAweDcyLCAweDRCLCAweDc4LCAweDU0LCAweDI5LCAweEQzLCAweEQ2LAorICAgIDB4NDQsIDB4RjksIDB4QTUsIDB4ODMsIDB4QTcsIDB4QTcsIDB4MDQsIDB4MzEsIDB4MzQsIDB4QTgsIDB4M0IsIDB4OEIsIDB4Q0QsIDB4MTMsIDB4QTIsIDB4MDAsCisgICAgMHhDQiwgMHg2MSwgMHg5RCwgMHg5RSwgMHg0MCwgMHhFMSwgMHhEQiwgMHg3NSwgMHg0NywgMHgxMiwgMHhFOCwgMHg4OSwgMHg0QywgMHgzMSwgMHhBNSwgMHg0RCwKKyAgICAweERDLCAweEE1LCAweDZELCAweDc5LCAweDQ3LCAweDNFLCAweDU4LCAweEI1LCAweDkxLCAweDlCLCAweDAyLCAweEVDLCAweDgyLCAweDI4LCAweENGLCAweDExLAorICAgIDB4NUMsIDB4MTIsIDB4RkEsIDB4ODgsIDB4REUsIDB4OUMsIDB4MTUsIDB4NEQsIDB4Q0YsIDB4RDQsIDB4MjQsIDB4QUQsIDB4NUYsIDB4MTYsIDB4RjAsIDB4RDAsCisgICAgMHg4OCwgMHhDMCwgMHhGOSwgMHg3NywgMHg5NywgMHhFMCwgMHhDNSwgMHg2OSwgMHgyMCwgMHgxOCwgMHg0RSwgMHg5QywgMHgyQSwgMHgxOSwgMHg2NiwgMHg0MiwKKyAgICAweEQ1LCAweDVDLCAweEQzLCAweDg3LCAweDZCLCAweEIyLCAweEIwLCAweERFLCAweDc4LCAweEIzLCAweDhDLCAweDVELCAweDkwLCAweEMzLCAweDI1LCAweDNELAorICAgIDB4QTMsIDB4Q0MsIDB4QjAsIDB4NEMsIDB4OTcsIDB4MEYsIDB4NkQsIDB4MjksIDB4MTEsIDB4NDIsIDB4QjMsIDB4ODYsIDB4OTksIDB4ODcsIDB4MzcsIDB4NUEsCisgICAgMHg0NSwgMHg5MywgMHhFMCwgMHg4OCwgMHhDOSwgMHgzNSwgMHgwNSwgMHg0OCwgMHhDQSwgMHg4NCwgMHhBQiwgMHgxMywgMHhGOCwgMHgwNiwgMHhBNCwgMHgwQiwKKyAgICAweDcyLCAweDJBLCAweDhELCAweEVCLCAweEEwLCAweDg5LCAweDNELCAweDBCLCAweDAwLCAweDFBLCAweDE3LCAweDg3LCAweENELCAweDk1LCAweDMwLCAweDJFLAorICAgIDB4QzUsIDB4RjMsIDB4QTYsIDB4NDIsIDB4NUMsIDB4NjMsIDB4N0EsIDB4RjYsIDB4RDAsIDB4RTMsIDB4NkQsIDB4OUMsIDB4QzgsIDB4RjcsIDB4ODMsIDB4QzMsCisgICAgMHhFRCwgMHg5RiwgMHhGQSwgMHhGMCwgMHhDNiwgMHhFMCwgMHhGRSwgMHhDRCwgMHhGQiwgMHhDOCwgMHgxOCwgMHg4MywgMHg3NywgMHhBQSwgMHhEQSwgMHg1OCwKKyAgICAweDE3LCAweEQyLCAweDdCLCAweDczLCAweDYyLCAweDJELCAweEMwLCAweEUxLCAweEY4LCAweEE5LCAweDNFLCAweDA2LCAweDk3LCAweDNGLCAweDlCLCAweEY0LAorICAgIDB4QkIsIDB4MTYsIDB4MjUsIDB4MzEsIDB4NjksIDB4N0MsIDB4RDYsIDB4RDYsIDB4QjMsIDB4MDEsIDB4MzUsIDB4NDEsIDB4NzcsIDB4MjUsIDB4NzEsIDB4REUsCisgICAgMHgyRCwgMHgyQywgMHhFRiwgMHg5RSwgMHg5QSwgMHhENiwgMHg0QywgMHhEOSwgMHg4QywgMHgwQywgMHhEMSwgMHhEOCwgMHhBMiwgMHg0OCwgMHg1OSwgMHg2RCwKKyAgICAweDQxLCAweDE1LCAweEVELCAweEFDLCAweDk4LCAweEE4LCAweDQ3LCAweDNELCAweDRCLCAweDdELCAweEU3LCAweDE0LCAweEI3LCAweEFCLCAweDdGLCAweEE5LAorICAgIDB4Q0QsIDB4QUEsIDB4NDksIDB4NjUsIDB4NDgsIDB4MzQsIDB4OEMsIDB4NjUsIDB4RDYsIDB4MzgsIDB4NUQsIDB4RTEsIDB4MTQsIDB4RkMsIDB4NEYsIDB4RTYsCisgICAgMHhFNCwgMHg4NywgMHgyMSwgMHhFMiwgMHg1NCwgMHgwOCwgMHg5MSwgMHgyMiwgMHhFRCwgMHgzRSwgMHg4NywgMHhFRSwgMHgzMSwgMHg5QSwgMHhDNCwgMHg0MCwKKyAgICAweDc4LCAweDQ2LCAweDJFLCAweEY5LCAweERCLCAweEVELCAweDY0LCAweEQ3LCAweDEwLCAweEE0LCAweDk5LCAweDNFLCAweDQzLCAweDQzLCAweEIyLCAweDU0LAorICAgIDB4MjAsIDB4MjAsIDB4N0QsIDB4OTMsIDB4MzQsIDB4MEQsIDB4MEMsIDB4ODYsIDB4NTIsIDB4MUEsIDB4OUQsIDB4MTksIDB4MTIsIDB4ODgsIDB4REQsIDB4MTQsCisgICAgMHhBRSwgMHg1NywgMHg3MiwgMHg3NSwgMHgyNiwgMHhERiwgMHhDNCwgMHhBMSwgMHg5MCwgMHg0OSwgMHhDNywgMHgwQywgMHhFMSwgMHhBNiwgMHgxMSwgMHgyQywKKyAgICAweDAwLCAweEJGLCAweEI2LCAweEY1LCAweEYyLCAweDIxLCAweDRCLCAweDE0LCAweEI0LCAweDA3LCAweEJFLCAweDA0LCAweDcyLCAweENCLCAweEJFLCAweEI2LAorICAgIDB4MjQsIDB4MjcsIDB4Q0YsIDB4N0QsIDB4NzUsIDB4MkIsIDB4MzEsIDB4RDYsIDB4QTYsIDB4ODQsIDB4NTUsIDB4MTEsIDB4RDcsIDB4OTEsIDB4NUEsIDB4MTUsCisgICAgMHg5QywgMHhCMCwgMHg5RCwgMHg3RSwgMHhCMSwgMHhDNiwgMHhCNywgMHhBNSwgMHhFMCwgMHhCMiwgMHg4OCwgMHg5OCwgMHg5QywgMHgyRiwgMHg2NywgMHgyOSwKKyAgICAweERBLCAweDg4LCAweEM5LCAweEE1LCAweDI3LCAweDUzLCAweDRELCAweDhGLCAweDBCLCAweEY4LCAweDA4LCAweDJDLCAweEU3LCAweDg4LCAweDI2LCAweDlDLAorICAgIDB4RDksIDB4MTAsIDB4RDksIDB4RTQsIDB4REIsIDB4QTQsIDB4RjcsIDB4QUQsIDB4OUYsIDB4NEUsIDB4NjUsIDB4M0UsIDB4RjQsIDB4QTQsIDB4NTcsIDB4MTgsCisgICAgMHgyQywgMHhERCwgMHgwRSwgMHg2RCwgMHgyNiwgMHhBMywgMHhDMiwgMHg2NiwgMHgwRCwgMHg3MSwgMHg3OSwgMHgyMiwgMHg4RSwgMHhENSwgMHg2QSwgMHhGQywKKyAgICAweEY0LCAweDcxLCAweDgzLCAweDI3LCAweEVGLCAweDI0LCAweDUwLCAweEJBLCAweDU0LCAweDFBLCAweEU0LCAweDk4LCAweDg0LCAweDNGLCAweDI3LCAweEUzLAorICAgIDB4MjksIDB4M0UsIDB4NDUsIDB4QzEsIDB4QjEsIDB4MDAsIDB4ODgsIDB4NTQsIDB4NEQsIDB4RjAsIDB4ODcsIDB4N0IsIDB4MzAsIDB4N0IsIDB4QTEsIDB4QzcsCisgICAgMHg2QywgMHhENywgMHg0OCwgMHhBMCwgMHhGRiwgMHhDQiwgMHg4OSwgMHg5MiwgMHg2RCwgMHgwRSwgMHgwNSwgMHgzQSwgMHhDRSwgMHg5NSwgMHgzMCwgMHgyMywKKyAgICAweEQ3LCAweDQyLCAweDc3LCAweEE5LCAweDVFLCAweEY1LCAweEQ5LCAweEVCLCAweDVBLCAweEI3LCAweDgzLCAweEI5LCAweDkxLCAweDE0LCAweDUxLCAweDEzLAorICAgIDB4OTYsIDB4MUUsIDB4MTMsIDB4NUIsIDB4MjgsIDB4NTYsIDB4RkIsIDB4NEMsIDB4NkMsIDB4N0IsIDB4ODcsIDB4NEEsIDB4RjUsIDB4NDQsIDB4RDMsIDB4QzYsCisgICAgMHhDMCwgMHgxNywgMHg3NywgMHg0NSwgMHg2MSwgMHg2MCwgMHg1RSwgMHgxRCwgMHhBNiwgMHgwQywgMHgxOSwgMHg3MCwgMHg5NSwgMHg0NiwgMHg3RCwgMHhEMiwKKyAgICAweDNCLCAweDk0LCAweEQ1LCAweDlFLCAweEQ5LCAweEI5LCAweDFDLCAweDAyLCAweDJELCAweEY1LCAweDUyLCAweEVGLCAweDc3LCAweDg0LCAweDFBLCAweEEwLAorICAgIDB4NjUsIDB4N0EsIDB4NjEsIDB4RkYsIDB4NUEsIDB4REQsIDB4MUUsIDB4QjYsIDB4RDUsIDB4RTcsIDB4RUMsIDB4RjYsIDB4MzMsIDB4NTQsIDB4QjcsIDB4RTcsCisgICAgMHgzMywgMHgzMCwgMHhCMCwgMHhCNCwgMHg2MSwgMHgwRiwgMHhBQSwgMHhGRSwgMHhBQywgMHhEQiwgMHg5RCwgMHgzQSwgMHgyQiwgMHg3OCwgMHg4MiwgMHg5MywKKyAgICAweDhCLCAweDc0LCAweDg2LCAweDZBLCAweDA3LCAweERGLCAweDgyLCAweDFGLCAweDM1LCAweEZBLCAweEZELCAweDY1LCAweDM5LCAweDUyLCAweDg3LCAweEQ5LAorICAgIDB4MjAsIDB4MDUsIDB4RjUsIDB4NTYsIDB4ODUsIDB4NzAsIDB4RkEsIDB4NDYsIDB4NTQsIDB4NTksIDB4RTUsIDB4QTAsIDB4RjMsIDB4MTQsIDB4MDksIDB4OTUsCisgICAgMHg1RiwgMHg5QiwgMHg1NiwgMHg0NSwgMHhBNSwgMHgzMiwgMHg2NCwgMHg4OCwgMHg5OCwgMHg0QSwgMHgxRCwgMHg5MSwgMHhERiwgMHgzMiwgMHgyMiwgMHhBRiwKKyAgICAweENELCAweDNELCAweDhCLCAweDVFLCAweDc3LCAweDU5LCAweDQxLCAweDI1LCAweEEwLCAweENDLCAweDdGLCAweEM2LCAweDZCLCAweDYxLCAweDYwLCAweDBGLAorICAgIDB4Q0QsIDB4MEEsIDB4QzksIDB4NTUsIDB4NkUsIDB4MEUsIDB4QjcsIDB4NkIsIDB4ODUsIDB4QzgsIDB4RDksIDB4RDYsIDB4MjYsIDB4OTMsIDB4MEMsIDB4M0QsCisgICAgMHgxQywgMHhFRSwgMHhFQiwgMHgxOSwgMHg4RiwgMHg5OCwgMHhGMCwgMHg5MCwgMHg4OCwgMHgwNiwgMHgwNSwgMHhGMCwgMHgwRCwgMHhFNywgMHhDOSwgMHg1QiwKKyAgICAweDg2LCAweEUyLCAweDdFLCAweDJDLCAweDRBLCAweEQzLCAweDgwLCAweEI2LCAweDc0LCAweDU0LCAweDdGLCAweDAzLCAweDEyLCAweDM4LCAweEIzLCAweEEyLAorICAgIDB4QkIsIDB4NDMsIDB4MjQsIDB4REEsIDB4NDEsIDB4NkQsIDB4RUUsIDB4OTksIDB4NEQsIDB4RDEsIDB4RUMsIDB4NjksIDB4MzcsIDB4RTcsIDB4NDEsIDB4RjMsCisgICAgMHg5RCwgMHhBQSwgMHhEOCwgMHhDMSwgMHhBNSwgMHhFMCwgMHgxMSwgMHgzRiwgMHg0NywgMHhCNCwgMHgyRSwgMHhBRCwgMHgwOSwgMHg4NCwgMHg1NiwgMHgwRiwKKyAgICAweDRFLCAweDBDLCAweEIxLCAweDc4LCAweEU2LCAweEUwLCAweDMzLCAweEEwLCAweDMyLCAweERBLCAweEY2LCAweDY3LCAweDgwLCAweEYwLCAweEIzLCAweEU5LAorICAgIDB4MkYsIDB4NDEsIDB4MjMsIDB4RjIsIDB4NzksIDB4RTMsIDB4RDIsIDB4NTksIDB4N0EsIDB4MEQsIDB4NEEsIDB4NTgsIDB4MjksIDB4OTAsIDB4OTIsIDB4Q0EsCisgICAgMHg2QywgMHg3MCwgMHgxNSwgMHg0MSwgMHhDQiwgMHg3MiwgMHhGNCwgMHgwOSwgMHg0NywgMHhCOSwgMHhFMiwgMHg5OCwgMHhBQiwgMHgxNSwgMHhDRSwgMHgzRCwKKyAgICAweEE5LCAweDlELCAweDBFLCAweDQ0LCAweERELCAweEE5LCAweDIzLCAweDhFLCAweDBFLCAweDFELCAweDc4LCAweEJDLCAweEVDLCAweDVGLCAweDQ4LCAweDkyLAorICAgIDB4MjIsIDB4RUMsIDB4MkEsIDB4RUQsIDB4OUEsIDB4NDEsIDB4OEQsIDB4MTQsIDB4QzgsIDB4NzcsIDB4NDQsIDB4MzYsIDB4Q0UsIDB4RTYsIDB4RjUsIDB4NzAsCisgICAgMHhGNCwgMHhDMSwgMHg1MCwgMHg0MSwgMHhBQiwgMHg3QiwgMHgyOCwgMHhGRCwgMHhCOSwgMHgwMCwgMHgzOSwgMHg2MywgMHg4RCwgMHgyMCwgMHg3MywgMHg4RSwKKyAgICAweDQyLCAweDdFLCAweEI4LCAweDQwLCAweDdBLCAweEFELCAweDhELCAweDhELCAweDZFLCAweEZBLCAweDkzLCAweDI0LCAweEE1LCAweEY2LCAweEY3LCAweDYxLAorICAgIDB4NzIsIDB4NzUsIDB4RkMsIDB4QkIsIDB4RjUsIDB4RDEsIDB4QkUsIDB4QTAsIDB4MzYsIDB4OTEsIDB4NjEsIDB4ODcsIDB4N0YsIDB4N0YsIDB4RkQsIDB4MkEsCisgICAgMHg5QiwgMHhDOCwgMHgxMiwgMHhFOSwgMHhCMiwgMHhFOSwgMHhGQywgMHhCQiwgMHgwNSwgMHhBMywgMHhBOCwgMHgyMSwgMHg5NywgMHg5QiwgMHg5NiwgMHgzQywKKyAgICAweDQwLCAweDY0LCAweDdGLCAweEEzLCAweDUxLCAweDI3LCAweDNELCAweDZBLCAweEI3LCAweDY3LCAweDE1LCAweDU3LCAweDY4LCAweDRFLCAweDg3LCAweDdELAorICAgIDB4QjUsIDB4MkYsIDB4NDUsIDB4OEYsIDB4NzcsIDB4M0UsIDB4OTIsIDB4OTgsIDB4MTAsIDB4QjcsIDB4NzcsIDB4QTMsIDB4MjcsIDB4MjAsIDB4M0MsIDB4ODIsCisgICAgMHg0MiwgMHgzNywgMHhGMiwgMHhENywgMHhENiwgMHhFNywgMHhCRiwgMHg4RCwgMHhENiwgMHhFRiwgMHg0QiwgMHg1MywgMHhFQywgMHgwRiwgMHhDQywgMHhBNywKKyAgICAweEIwLCAweDkxLCAweDAzLCAweDI3LCAweEFDLCAweEUxLCAweDlBLCAweEE2LCAweDM4LCAweDZFLCAweDY0LCAweEY2LCAweDRFLCAweEU5LCAweEQxLCAweDc4LAorICAgIDB4N0MsIDB4N0EsIDB4RDYsIDB4RjksIDB4MEUsIDB4RUIsIDB4MjQsIDB4MkMsIDB4MDEsIDB4RjMsIDB4QjEsIDB4MzgsIDB4MjIsIDB4MjIsIDB4QkYsIDB4OTEsCisgICAgMHgxOSwgMHg0NCwgMHhDQiwgMHhFQywgMHg4QiwgMHhFRiwgMHg1OSwgMHhGMCwgMHhBOCwgMHgzRCwgMHg1RCwgMHg2NiwgMHg0MywgMHhFRiwgMHg1NiwgMHg2QywKKyAgICAweDFBLCAweDg4LCAweDBBLCAweEE3LCAweDc0LCAweDQ4LCAweDBCLCAweDFBLCAweDlFLCAweDJELCAweEQ1LCAweDBCLCAweENDLCAweDQzLCAweEEzLCAweDA5LAorICAgIDB4QjksIDB4Q0QsIDB4RDcsIDB4ODIsIDB4MEMsIDB4NzMsIDB4MjksIDB4NEYsIDB4RTcsIDB4MEIsIDB4NjksIDB4NjgsIDB4ODIsIDB4MDAsIDB4NjUsIDB4NEQsCisgICAgMHg1RiwgMHhGOCwgMHhFNiwgMHhENywgMHgwMiwgMHgyQSwgMHg4RiwgMHgyMiwgMHg5OSwgMHg1RSwgMHhBQSwgMHgwOCwgMHg0RCwgMHhCRCwgMHg5QSwgMHhDNCwKKyAgICAweEVDLCAweDMyLCAweDBFLCAweDE1LCAweDNGLCAweEI0LCAweDk0LCAweEJGLCAweDAxLCAweDNBLCAweEIxLCAweDBDLCAweDc4LCAweDc3LCAweERGLCAweDcyLAorICAgIDB4NUIsIDB4NzcsIDB4MEQsIDB4MzMsIDB4N0EsIDB4MEIsIDB4QzEsIDB4MUUsIDB4RUQsIDB4OUEsIDB4RTgsIDB4NzIsIDB4NjgsIDB4OEQsIDB4MjQsIDB4RUUsCisgICAgMHg5NywgMHgyNCwgMHhGNiwgMHhDQSwgMHg2RCwgMHhFOCwgMHgzQiwgMHg5RCwgMHhEQSwgMHg5MywgMHg0MCwgMHg4NSwgMHhBMSwgMHg5RCwgMHgxRiwgMHhCOCwKKyAgICAweEM5LCAweEU1LCAweEVBLCAweDU5LCAweEEwLCAweEQ0LCAweDZELCAweENCLCAweDcxLCAweDUyLCAweDc1LCAweDlELCAweEEyLCAweEFGLCAweDkxLCAweDZBLAorICAgIDB4NEUsIDB4MEEsIDB4NkIsIDB4QjUsIDB4NjcsIDB4N0IsIDB4NkMsIDB4QUMsIDB4NUUsIDB4OUIsIDB4MDIsIDB4MjcsIDB4NEIsIDB4M0UsIDB4Q0YsIDB4MTksCisgICAgMHg1NywgMHhDQywgMHg3NCwgMHg0QiwgMHgzMywgMHhBNCwgMHg2QiwgMHgxRSwgMHg1NiwgMHg2RCwgMHgwQiwgMHhBNCwgMHg4NCwgMHhBMywgMHg4MSwgMHhDOSwKKyAgICAweDg5LCAweEY3LCAweDlFLCAweDNGLCAweEZFLCAweDU3LCAweDYwLCAweDRGLCAweDc5LCAweDg0LCAweDUzLCAweEVCLCAweDgwLCAweDhGLCAweEI5LCAweDYzLAorICAgIDB4MjksIDB4NEYsIDB4QkQsIDB4QTAsIDB4MEMsIDB4RjAsIDB4N0YsIDB4MzUsIDB4RUMsIDB4MTgsIDB4QzEsIDB4MjIsIDB4QTMsIDB4NkQsIDB4N0YsIDB4MkUsCisgICAgMHhDQywgMHg0RCwgMHg1MSwgMHhGRCwgMHg3NiwgMHg3NCwgMHgxOCwgMHgxOSwgMHg2NywgMHg2QiwgMHg4MSwgMHgwNywgMHgwNywgMHg1QiwgMHg1RCwgMHhCMywKKyAgICAweDk4LCAweDRELCAweDIzLCAweEI4LCAweDc3LCAweEQxLCAweEVDLCAweDNDLCAweDBFLCAweDEwLCAweEQwLCAweDY1LCAweDk5LCAweDI5LCAweEYxLCAweDQyLAorICAgIDB4ODMsIDB4NTEsIDB4MjYsIDB4MTgsIDB4OEMsIDB4OEUsIDB4NEYsIDB4OEQsIDB4MkEsIDB4MTQsIDB4MzQsIDB4NkEsIDB4QzUsIDB4NzEsIDB4MkYsIDB4NEMsCisgICAgMHhGRiwgMHhCQSwgMHgxMSwgMHhENywgMHg3NiwgMHgxNiwgMHgwMCwgMHhFRSwgMHhCQSwgMHgyNiwgMHhEOSwgMHhDMiwgMHg1MSwgMHhCRCwgMHhDNiwgMHg2NywKKyAgICAweDg1LCAweDU2LCAweDk4LCAweDM2LCAweDEyLCAweEMzLCAweEYxLCAweENDLCAweEZBLCAweEZCLCAweEY2LCAweDVBLCAweEQyLCAweDdBLCAweEZGLCAweDFCLAorICAgIDB4MzMsIDB4RDMsIDB4NzIsIDB4MDUsIDB4MDEsIDB4NjcsIDB4QTIsIDB4NDIsIDB4NDUsIDB4MEMsIDB4NUUsIDB4NDYsIDB4QUQsIDB4MjYsIDB4QTcsIDB4Q0UsCisgICAgMHgzOCwgMHgzMCwgMHhGQiwgMHg5QiwgMHgzOSwgMHg4RCwgMHg0MCwgMHg2MSwgMHhERiwgMHhFNSwgMHhDNSwgMHg4QSwgMHgyNiwgMHhBNiwgMHgzMSwgMHhGQywKKyAgICAweDhCLCAweDBCLCAweDJFLCAweEFELCAweEQ4LCAweEE1LCAweDEyLCAweDkyLCAweEQyLCAweENBLCAweDg2LCAweDczLCAweDUyLCAweEE2LCAweDE5LCAweEU3LAorICAgIDB4NzAsIDB4RDIsIDB4MzEsIDB4MTQsIDB4MUMsIDB4REEsIDB4MjcsIDB4QzksIDB4QjcsIDB4NkMsIDB4OTgsIDB4RTksIDB4RDksIDB4NTksIDB4OEIsIDB4NUYsCisgICAgMHgyNywgMHhBNiwgMHhCMywgMHhBQywgMHg4OSwgMHhGQywgMHg5OSwgMHhGNSwgMHg2QSwgMHg1NiwgMHhDMSwgMHg5OSwgMHhGRSwgMHgwNSwgMHgzQSwgMHgwQSwKKyAgICAweDI3LCAweDFFLCAweEU0LCAweEQyLCAweDc1LCAweDk4LCAweDdDLCAweDAwLCAweDIzLCAweEQwLCAweDE5LCAweDBCLCAweDQ5LCAweEM2LCAweDUyLCAweDQ4LAorICAgIDB4MDMsIDB4QjUsIDB4MjQsIDB4NDAsIDB4MDMsIDB4QTIsIDB4MTgsIDB4QTIsIDB4MEEsIDB4NUQsIDB4ODQsIDB4RjIsIDB4REEsIDB4RjIsIDB4MDEsIDB4RjUsCisgICAgMHhFNywgMHhERCwgMHg1NCwgMHgxRiwgMHg2QywgMHgwNCwgMHhCQSwgMHg3NCwgMHg0NiwgMHgyOSwgMHhBMywgMHgwOCwgMHgxOCwgMHhBMSwgMHhBOSwgMHg4MCwKKyAgICAweEEzLCAweDg1LCAweDQyLCAweDQ5LCAweDMzLCAweDMwLCAweDc5LCAweDA4LCAweDdCLCAweDcyLCAweDMyLCAweEI3LCAweDU5LCAweDg1LCAweEExLCAweEI1LAorICAgIDB4MjksIDB4REYsIDB4NjksIDB4REYsIDB4MkMsIDB4QzMsIDB4NUYsIDB4RDcsIDB4QTcsIDB4RTksIDB4OTcsIDB4NkEsIDB4QTQsIDB4MzgsIDB4OEIsIDB4OEMsCisgICAgMHhERSwgMHhCMiwgMHhBOCwgMHgyNywgMHhGRSwgMHg2RSwgMHhENSwgMHhGRiwgMHhGNiwgMHgwMCwgMHg2NCwgMHhCNywgMHhCRCwgMHgxNCwgMHgzQywgMHhFQywKKyAgICAweDBFLCAweDg2LCAweDgzLCAweDdBLCAweDE2LCAweEVGLCAweDUwLCAweEJCLCAweDNELCAweEJBLCAweEEyLCAweDQzLCAweDE0LCAweDYxLCAweDA2LCAweDhCLAorICAgIDB4ODUsIDB4Q0YsIDB4ODYsIDB4RTYsIDB4QzksIDB4NzcsIDB4QzYsIDB4OUYsIDB4ODQsIDB4RjIsIDB4MUUsIDB4RDgsIDB4NTEsIDB4OUYsIDB4QjYsIDB4QzgsCisgICAgMHgxMSwgMHg1NiwgMHg5QSwgMHg0QiwgMHg4QiwgMHhFQSwgMHg1OCwgMHg2OCwgMHgxOCwgMHg3OCwgMHg0NCwgMHg4QywgMHgzNiwgMHgwQiwgMHhBMCwgMHg0QywKKyAgICAweDc0LCAweDJFLCAweDE0LCAweEJELCAweEU4LCAweDU3LCAweEE5LCAweDFELCAweDRBLCAweDlGLCAweEQ1LCAweDQ0LCAweEIzLCAweDE1LCAweEQ2LCAweEVELAorICAgIDB4QUUsIDB4N0EsIDB4NEUsIDB4N0QsIDB4QTcsIDB4M0MsIDB4MzAsIDB4RkYsIDB4NkYsIDB4MEMsIDB4MjMsIDB4Q0MsIDB4MUIsIDB4OTIsIDB4QzEsIDB4NDgsCisgICAgMHhGOSwgMHg4QywgMHg5NywgMHg0NywgMHgzRSwgMHg1RSwgMHg2NiwgMHg4MywgMHhFOCwgMHhCOSwgMHhGMCwgMHhEMCwgMHgxQiwgMHg3OSwgMHg2OCwgMHgxRCwKKyAgICAweEEyLCAweDM1LCAweEM3LCAweDM0LCAweDA3LCAweDhBLCAweENFLCAweDY4LCAweEJELCAweDlCLCAweDdDLCAweDc2LCAweDM4LCAweDdBLCAweDIzLCAweDlCLAorICAgIDB4MzksIDB4RDcsIDB4MDQsIDB4NEEsIDB4ODIsIDB4QjksIDB4NEIsIDB4Q0YsIDB4QjEsIDB4OUEsIDB4QkEsIDB4NzUsIDB4NkIsIDB4MDQsIDB4RjUsIDB4MjMsCisgICAgMHg4RCwgMHgzNiwgMHg0RiwgMHg5QSwgMHgzRSwgMHg2MCwgMHhEMywgMHhBQSwgMHhGOSwgMHgwRiwgMHgwNSwgMHg1QywgMHhBNywgMHgyOCwgMHg3RSwgMHhCNCwKKyAgICAweENBLCAweDc3LCAweDkyLCAweDlCLCAweDIxLCAweDBDLCAweDk5LCAweDg0LCAweEIwLCAweEIxLCAweEQyLCAweDFDLCAweEY3LCAweDlBLCAweDI0LCAweDBBLAorICAgIDB4RDcsIDB4OEEsIDB4RTMsIDB4MDgsIDB4M0YsIDB4RTEsIDB4NUEsIDB4QzYsIDB4MzIsIDB4Q0YsIDB4RDgsIDB4QkIsIDB4NkYsIDB4ODYsIDB4NjIsIDB4MjgsCisgICAgMHhEQywgMHhDNiwgMHhGNSwgMHgwMCwgMHg4QywgMHhCRSwgMHgxNSwgMHgyNSwgMHg1MywgMHg4NywgMHg4MSwgMHhBRiwgMHhERSwgMHhBQywgMHg2RCwgMHg1OSwKKyAgICAweDBELCAweDUxLCAweDFGLCAweEY5LCAweDc2LCAweEVBLCAweDQ0LCAweDk1LCAweEZCLCAweDFDLCAweEM1LCAweEIwLCAweDBBLCAweDI5LCAweEYyLCAweEFFLAorICAgIDB4OEYsIDB4MDMsIDB4RTcsIDB4NDEsIDB4RDEsIDB4NTQsIDB4OUQsIDB4RDMsIDB4RDIsIDB4QjQsIDB4N0QsIDB4OUEsIDB4QzEsIDB4MDksIDB4REEsIDB4QzUsCisgICAgMHhEOCwgMHgyNiwgMHg1OSwgMHhDNCwgMHgzNSwgMHg2NiwgMHhENywgMHhEMSwgMHhFNSwgMHhBNiwgMHhFRCwgMHhCQiwgMHg4MiwgMHhBRCwgMHg1MCwgMHg0QywKKyAgICAweEUwLCAweDAxLCAweEM5LCAweDU3LCAweDc4LCAweDY2LCAweDhFLCAweDBFLCAweDY5LCAweEZELCAweDhDLCAweEU5LCAweDYzLCAweEEzLCAweDIxLCAweERBLAorICAgIDB4QzgsIDB4NTgsIDB4MUQsIDB4NkIsIDB4NzYsIDB4NkYsIDB4QTQsIDB4OEYsIDB4NDYsIDB4QzgsIDB4MDAsIDB4QjIsIDB4MUUsIDB4RUYsIDB4OTMsIDB4NTQsCisgICAgMHg4OSwgMHhBQiwgMHhEOSwgMHgxOCwgMHgyMywgMHg5NSwgMHhFNiwgMHgyQSwgMHhGOCwgMHhDQywgMHhGMiwgMHg3NCwgMHhFNSwgMHg3MSwgMHg2MCwgMHg4QywKKyAgICAweEExLCAweDBFLCAweDY3LCAweDE0LCAweEJBLCAweEVGLCAweDY5LCAweEM0LCAweDAxLCAweEZFLCAweDkzLCAweDU0LCAweDI2LCAweDBBLCAweEUxLCAweEMyLAorICAgIDB4QzEsIDB4NDcsIDB4QzksIDB4NkEsIDB4RjYsIDB4NkEsIDB4RDgsIDB4QjYsIDB4REQsIDB4RUUsIDB4NjcsIDB4QjUsIDB4QTAsIDB4RDgsIDB4NUYsIDB4NTgsCisgICAgMHg3QiwgMHg0MiwgMHhGRSwgMHhEMywgMHhEMCwgMHhDQiwgMHhGRCwgMHg1RSwgMHgyMiwgMHg0RiwgMHgzMSwgMHhGNywgMHhCQSwgMHgxMiwgMHg2QywgMHhFRiwKKyAgICAweDRBLCAweDc4LCAweDIzLCAweDg1LCAweEEzLCAweEIxLCAweDM1LCAweDU5LCAweDEzLCAweDVELCAweDM1LCAweEEyLCAweDMyLCAweEY0LCAweDZDLCAweDA3LAorICAgIDB4MzMsIDB4NTYsIDB4NTMsIDB4RDksIDB4QjUsIDB4NEIsIDB4NkYsIDB4QzcsIDB4NzMsIDB4MDEsIDB4NjksIDB4NTQsIDB4N0YsIDB4OTUsIDB4OEMsIDB4MTAsCisgICAgMHhENywgMHgxMSwgMHhGMSwgMHhGNSwgMHgwQywgMHgyMSwgMHgxNywgMHhFNSwgMHgyMywgMHgzNCwgMHhEQiwgMHg0RCwgMHhDNSwgMHhBOSwgMHgxOCwgMHg1NCwKKyAgICAweEQwLCAweDc2LCAweEIyLCAweDc0LCAweDY4LCAweDYxLCAweDAwLCAweDhELCAweENBLCAweDNBLCAweDcwLCAweEU0LCAweDM2LCAweERFLCAweDJELCAweDlCLAorICAgIDB4NUYsIDB4QjAsIDB4NEUsIDB4NjYsIDB4MTUsIDB4N0IsIDB4OTIsIDB4MDQsIDB4MzgsIDB4QkQsIDB4QzEsIDB4NjEsIDB4RjIsIDB4MTksIDB4QjksIDB4RDksCisgICAgMHg3MSwgMHhDRiwgMHhGQiwgMHg0RCwgMHgxOSwgMHg5OSwgMHhFNSwgMHgyQSwgMHg1MCwgMHgyNywgMHgyMCwgMHhDMiwgMHgxOCwgMHg3QiwgMHhFOSwgMHhGQSwKKyAgICAweDAyLCAweDEzLCAweDY2LCAweDg5LCAweEU3LCAweDcyLCAweDJBLCAweERDLCAweDI3LCAweDcyLCAweDkxLCAweEU3LCAweENGLCAweDNBLCAweDc2LCAweDZCLAorICAgIDB4RkQsIDB4QUYsIDB4NkMsIDB4NjgsIDB4NTcsIDB4MzgsIDB4RUUsIDB4OTcsIDB4NTUsIDB4MEMsIDB4QkYsIDB4QTYsIDB4QkEsIDB4REQsIDB4QzMsIDB4MkYsCisgICAgMHhERSwgMHhENSwgMHgzOSwgMHg5MSwgMHg4RSwgMHhGQSwgMHhFOCwgMHhGQywgMHg1MiwgMHg4NywgMHg5NCwgMHg4NSwgMHgyNCwgMHgzQSwgMHhERSwgMHgwMywKKyAgICAweEJFLCAweDAyLCAweDFCLCAweDgxLCAweEU4LCAweDFGLCAweEU2LCAweDk2LCAweEFBLCAweDM4LCAweDQyLCAweDQyLCAweDJGLCAweERGLCAweDRGLCAweDEzLAorICAgIDB4NTAsIDB4RDMsIDB4NzcsIDB4RTQsIDB4MkMsIDB4OEUsIDB4OTYsIDB4M0MsIDB4NEEsIDB4NkUsIDB4MzcsIDB4QUYsIDB4RTUsIDB4MDMsIDB4MjcsIDB4NUYsCisgICAgMHg3MSwgMHhFMSwgMHg3OSwgMHhFQSwgMHhGNywgMHhDNSwgMHg3MSwgMHg0RiwgMHhBQywgMHhGRSwgMHgzNiwgMHg0NSwgMHgwQSwgMHg5NiwgMHg2MCwgMHg1OSwKKyAgICAweEQ5LCAweDUyLCAweDlGLCAweDMxLCAweERGLCAweDIwLCAweDZGLCAweDMzLCAweDAzLCAweDNELCAweDUxLCAweDU3LCAweDE4LCAweEMxLCAweEQwLCAweEE0LAorICAgIDB4N0MsIDB4MzMsIDB4MkUsIDB4NTksIDB4MDQsIDB4RjgsIDB4M0MsIDB4RjMsIDB4NTgsIDB4QkIsIDB4MkYsIDB4MTIsIDB4QjEsIDB4MzUsIDB4QzQsIDB4RjYsCisgICAgMHhDNCwgMHg5NSwgMHgzRCwgMHhERiwgMHgxMywgMHgwOSwgMHhGQywgMHhGQiwgMHgzMCwgMHhBMiwgMHhGNiwgMHg5QiwgMHhBRSwgMHhDNCwgMHhBMywgMHhCMywKKyAgICAweDJFLCAweEZFLCAweDI5LCAweDhELCAweDU2LCAweDI0LCAweDM3LCAweEE0LCAweEE0LCAweDFFLCAweEMzLCAweDEzLCAweDZGLCAweDk5LCAweDNELCAweDM1LAorICAgIDB4RjgsIDB4QTAsIDB4MDgsIDB4N0UsIDB4NEMsIDB4N0MsIDB4NTksIDB4ODEsIDB4QzAsIDB4RDgsIDB4OEYsIDB4RjcsIDB4MzMsIDB4OEUsIDB4NjcsIDB4MkYsCisgICAgMHhEMiwgMHgwNCwgMHhFNywgMHg0RCwgMHhCNCwgMHg5MCwgMHgwNywgMHhEMywgMHhGNywgMHg3MywgMHgxOCwgMHgxRCwgMHg2OSwgMHg4OSwgMHg0OSwgMHgxMywKKyAgICAweDA4LCAweDY1LCAweDZGLCAweENBLCAweERDLCAweDhBLCAweDMyLCAweEJDLCAweENGLCAweDVDLCAweDZFLCAweERFLCAweDIzLCAweDgzLCAweDIyLCAweDk0LAorICAgIDB4RUUsIDB4MDIsIDB4QzYsIDB4NDQsIDB4RTgsIDB4REUsIDB4QkQsIDB4QjQsIDB4NzksIDB4RDIsIDB4RjAsIDB4OUUsIDB4NDYsIDB4Q0IsIDB4RjYsIDB4NUIsCisgICAgMHgyQiwgMHhBMywgMHg5NywgMHg5OCwgMHgwNSwgMHg2MCwgMHg4MywgMHhFMywgMHg3NCwgMHhGQSwgMHhBNSwgMHgwQSwgMHgwNCwgMHhFMCwgMHg3NiwgMHhCNSwKKyAgICAweDJCLCAweDE2LCAweEEyLCAweDAwLCAweEUxLCAweDBELCAweEFGLCAweDVDLCAweDhFLCAweEIzLCAweDVFLCAweDI0LCAweEM0LCAweEEzLCAweEI1LCAweDhCLAorICAgIDB4QUMsIDB4NTYsIDB4MTMsIDB4MDksIDB4OEQsIDB4REUsIDB4RTUsIDB4QTEsIDB4ODUsIDB4NDksIDB4NjUsIDB4QjIsIDB4RkYsIDB4RTQsIDB4RjIsIDB4NjEsCisgICAgMHgxMiwgMHhFMiwgMHg0NSwgMHg0OCwgMHg4RCwgMHg4QSwgMHgwMiwgMHg2MCwgMHhCQiwgMHgyRiwgMHhGMywgMHhGRiwgMHgxMCwgMHhDRCwgMHhFMywgMHhBNywKKyAgICAweEU4LCAweEYwLCAweEMxLCAweDE0LCAweEI1LCAweDBELCAweDY1LCAweERFLCAweDM3LCAweDMzLCAweEZDLCAweDJGLCAweDIyLCAweEI5LCAweEJGLCAweEUwLAorICAgIDB4NTYsIDB4MEMsIDB4NDQsIDB4MTgsIDB4RkMsIDB4QUEsIDB4QkEsIDB4QkUsIDB4MjQsIDB4MEUsIDB4QTEsIDB4MzEsIDB4MTcsIDB4N0QsIDB4MkMsIDB4MkEsCisgICAgMHhBMiwgMHhBQSwgMHhGNCwgMHg2NSwgMHg4MSwgMHgxMiwgMHhCNCwgMHg3RSwgMHgwRCwgMHgxMywgMHhFMywgMHg5QiwgMHgzRiwgMHhBRCwgMHhBMSwgMHgyMCwKKyAgICAweDE5LCAweDkxLCAweDM0LCAweDkyLCAweEFELCAweDE1LCAweDVBLCAweDkzLCAweDY1LCAweEMxLCAweERELCAweDEwLCAweENELCAweDZELCAweEFELCAweDk0LAorICAgIDB4MTUsIDB4QTQsIDB4ODgsIDB4MzAsIDB4NEEsIDB4OEIsIDB4OEMsIDB4QjAsIDB4RUIsIDB4QTksIDB4MDQsIDB4OEUsIDB4RUEsIDB4NEEsIDB4QkEsIDB4MjgsCisgICAgMHgxRiwgMHgyOCwgMHhENCwgMHg2NSwgMHg4NSwgMHg0OSwgMHhGNCwgMHg3QywgMHg2OSwgMHgxMywgMHhCNCwgMHgzRSwgMHg4NCwgMHgzNiwgMHg3NywgMHg5RSwKKyAgICAweDcwLCAweDM2LCAweDEyLCAweDUzLCAweDFCLCAweEQ0LCAweEQwLCAweDJBLCAweDE3LCAweERDLCAweDg0LCAweDkzLCAweEMxLCAweERGLCAweEI5LCAweDQ0LAorICAgIDB4NjgsIDB4MEIsIDB4RjUsIDB4RUUsIDB4M0IsIDB4QjIsIDB4QTIsIDB4OEMsIDB4Q0IsIDB4QjYsIDB4QTYsIDB4RDgsIDB4OTcsIDB4QTgsIDB4MkMsIDB4NjEsCisgICAgMHg3QywgMHhCNywgMHgyMSwgMHg1OCwgMHgwNywgMHhDOSwgMHhENCwgMHg1RCwgMHg1NCwgMHgzQSwgMHg3MCwgMHhDOSwgMHhGNCwgMHg1MSwgMHgwMCwgMHhDNiwKKyAgICAweDI1LCAweEZGLCAweDFFLCAweDFELCAweDk0LCAweEJBLCAweDQ4LCAweERFLCAweDVFLCAweDY5LCAweEI0LCAweDg3LCAweDRGLCAweDg3LCAweDgzLCAweDY0LAorICAgIDB4OUEsIDB4REYsIDB4ODMsIDB4OTMsIDB4NTksIDB4MkEsIDB4NDMsIDB4RDcsIDB4Q0UsIDB4MzUsIDB4RTcsIDB4RDUsIDB4NzcsIDB4NzIsIDB4MjMsIDB4QjUsCisgICAgMHhGRiwgMHg1MiwgMHhBNiwgMHgxMSwgMHgyQSwgMHgyOSwgMHgwQSwgMHhDQSwgMHgzQiwgMHhCOCwgMHhCQywgMHhGMywgMHhGRSwgMHgzQSwgMHg2QiwgMHgxQiwKKyAgICAweDEzLCAweEM5LCAweDVELCAweEQxLCAweEY1LCAweEVFLCAweDZBLCAweEM0LCAweDA1LCAweDAzLCAweEFFLCAweDA0LCAweEM1LCAweDM2LCAweDAzLCAweDU2LAorICAgIDB4M0MsIDB4NUQsIDB4RTEsIDB4M0UsIDB4MzIsIDB4NDUsIDB4MTgsIDB4M0MsIDB4OTAsIDB4NDYsIDB4RjMsIDB4QjAsIDB4REEsIDB4RDQsIDB4Q0MsIDB4RTAsCisgICAgMHhFMSwgMHhDRCwgMHg0MCwgMHhBRCwgMHhDMywgMHhGQSwgMHg2QiwgMHgyQiwgMHg3NCwgMHhDNSwgMHgyMCwgMHhDQSwgMHhGNiwgMHhBMiwgMHhBNywgMHhDNiwKKyAgICAweEQzLCAweEEyLCAweDM4LCAweDFFLCAweDVDLCAweDAzLCAweEU1LCAweENDLCAweDNGLCAweDIxLCAweEVELCAweDhFLCAweEFFLCAweDZCLCAweERFLCAweDc1LAorICAgIDB4RjksIDB4NjcsIDB4NjMsIDB4RUEsIDB4OEIsIDB4MTgsIDB4MDYsIDB4N0EsIDB4QkQsIDB4NjcsIDB4MzIsIDB4QTMsIDB4ODksIDB4NkQsIDB4NzEsIDB4MEEsCisgICAgMHg0MywgMHgwMCwgMHg3NCwgMHg2QiwgMHgxOSwgMHg0MiwgMHg4RCwgMHgwQywgMHg5MywgMHhBQywgMHg0RiwgMHg2OSwgMHgzQiwgMHg1QywgMHhCMCwgMHgzNSwKKyAgICAweEFFLCAweDdGLCAweDU0LCAweDQ4LCAweDFBLCAweDQ4LCAweDM2LCAweDRBLCAweEQ0LCAweDYwLCAweDMyLCAweDE2LCAweDIxLCAweDc1LCAweEY2LCAweEFBLAorICAgIDB4M0EsIDB4MzQsIDB4MTQsIDB4QzMsIDB4QzcsIDB4MEQsIDB4QjYsIDB4M0UsIDB4RjgsIDB4N0QsIDB4REUsIDB4MTcsIDB4NDYsIDB4QkQsIDB4QTcsIDB4ODcsCisgICAgMHgwOCwgMHhGNSwgMHgxQiwgMHg2QiwgMHgxMywgMHgwQiwgMHhDRCwgMHhBOSwgMHg0RCwgMHg5QSwgMHhEMiwgMHgzOSwgMHg4MywgMHhDQSwgMHhFOSwgMHg0NywKKyAgICAweEUxLCAweENGLCAweEQ2LCAweDczLCAweEYxLCAweDE1LCAweENDLCAweDUwLCAweDg3LCAweEUyLCAweEIyLCAweDU2LCAweDA0LCAweENDLCAweDIwLCAweDA2LAorICAgIDB4ODcsIDB4M0YsIDB4MTksIDB4OEQsIDB4RTYsIDB4NDUsIDB4NzAsIDB4RjEsIDB4MTMsIDB4QjEsIDB4MzIsIDB4MUMsIDB4QzIsIDB4RkYsIDB4QjksIDB4MkYsCisgICAgMHhDOSwgMHg3NiwgMHgyQywgMHgwRSwgMHg4MSwgMHgxOCwgMHhFRiwgMHgzNCwgMHhBNywgMHhEMCwgMHg4NSwgMHhEMSwgMHgzNywgMHhDMywgMHg4MywgMHg0NCwKKyAgICAweEZCLCAweDM1LCAweDJCLCAweEI4LCAweDM4LCAweDRBLCAweEI4LCAweDQ0LCAweDYxLCAweEUwLCAweDY1LCAweDk3LCAweDkwLCAweDJBLCAweEZCLCAweDA5LAorICAgIDB4NjgsIDB4MUEsIDB4OEEsIDB4RjAsIDB4NTYsIDB4RjcsIDB4RjcsIDB4RTQsIDB4RjUsIDB4MDEsIDB4MzUsIDB4RDIsIDB4OTIsIDB4QjUsIDB4RTAsIDB4ODIsCisgICAgMHgyRCwgMHgzOSwgMHgwMywgMHgxQiwgMHgwQywgMHhEQywgMHgzMCwgMHg4RCwgMHg3RSwgMHg1NSwgMHhCNCwgMHgzOCwgMHgyOSwgMHg5MywgMHhBMCwgMHg5OSwKKyAgICAweDg1LCAweDZFLCAweDhCLCAweDZCLCAweDgyLCAweDZGLCAweDVBLCAweDU3LCAweEMwLCAweDA0LCAweDY4LCAweEUzLCAweDQxLCAweEI2LCAweEY5LCAweDVCLAorICAgIDB4QzcsIDB4RTksIDB4Q0YsIDB4OTYsIDB4MDYsIDB4ODYsIDB4NjMsIDB4OTMsIDB4MTIsIDB4QzEsIDB4RUMsIDB4RjMsIDB4QkIsIDB4MjUsIDB4MzksIDB4OEYsCisgICAgMHgxRiwgMHgwNiwgMHg3MCwgMHgwOCwgMHhDNiwgMHg2MCwgMHg0QywgMHhEMSwgMHg2NywgMHg4OSwgMHg4QSwgMHgxMywgMHg5NywgMHg2NywgMHgxMywgMHg2RSwKKyAgICAweDA4LCAweDJCLCAweEU1LCAweDU5LCAweDVDLCAweEFBLCAweEZGLCAweDRCLCAweEU3LCAweDQ5LCAweDgxLCAweDZFLCAweDQ2LCAweDVFLCAweDlFLCAweDEzLAorICAgIDB4NUMsIDB4NjksIDB4RUIsIDB4OTUsIDB4MzYsIDB4MkEsIDB4NzcsIDB4QkYsIDB4RDIsIDB4QjUsIDB4REMsIDB4NDksIDB4MzMsIDB4NUYsIDB4MTcsIDB4NUQsCisgICAgMHgxRiwgMHgxQywgMHg3OCwgMHg4QiwgMHgzOCwgMHg0RCwgMHg1RCwgMHhDNCwgMHgwMywgMHhGMiwgMHg1OCwgMHhGNCwgMHgwQSwgMHhGRCwgMHhFNCwgMHhFRiwKKyAgICAweDE4LCAweEYwLCAweDhGLCAweDMxLCAweDI5LCAweDVELCAweDY5LCAweEVFLCAweEExLCAweDMxLCAweDM3LCAweEUyLCAweDMxLCAweDVGLCAweEY2LCAweDkyLAorICAgIDB4MzMsIDB4REMsIDB4NzAsIDB4MjgsIDB4RDIsIDB4NkQsIDB4QzcsIDB4ODgsIDB4QzUsIDB4ODYsIDB4NjEsIDB4MEQsIDB4QTksIDB4N0IsIDB4MTUsIDB4QTQsCisgICAgMHhFNSwgMHgzNSwgMHg3QywgMHhGMywgMHhCRCwgMHhFMSwgMHg4MCwgMHhERSwgMHg5RCwgMHg3QSwgMHg3RCwgMHg5OCwgMHgwNiwgMHhGRiwgMHgyMCwgMHg2QSwKKyAgICAweEY0LCAweENELCAweEM4LCAweDk5LCAweDI1LCAweDY0LCAweDgxLCAweEVBLCAweEM4LCAweDdFLCAweDNDLCAweDVCLCAweDI4LCAweDA2LCAweEJELCAweEE1LAorICAgIDB4QTgsIDB4RjgsIDB4OUMsIDB4RjMsIDB4M0QsIDB4NEYsIDB4QjEsIDB4QjUsIDB4MTUsIDB4MUQsIDB4NTAsIDB4MEMsIDB4NDUsIDB4NTUsIDB4NDgsIDB4RUEsCisgICAgMHg0QywgMHg2MiwgMHg1QywgMHgxMSwgMHhGMywgMHhBRSwgMHg3RSwgMHgxMywgMHhBMCwgMHg5RSwgMHg2QSwgMHhCNCwgMHg5OSwgMHg4OCwgMHgwMywgMHg4RiwKKyAgICAweEM3LCAweEFFLCAweDIwLCAweDY3LCAweDJELCAweDRELCAweDg4LCAweDExLCAweEI1LCAweDQxLCAweDBELCAweDM3LCAweEEzLCAweEFCLCAweEQ4LCAweEU0LAorICAgIDB4N0MsIDB4NTksIDB4QzUsIDB4NzEsIDB4NzQsIDB4NUUsIDB4OTUsIDB4QjgsIDB4MzgsIDB4OTUsIDB4NDAsIDB4QUMsIDB4MTUsIDB4RDMsIDB4N0QsIDB4MjEsCisgICAgMHhEMCwgMHhCMywgMHg4MiwgMHg0MCwgMHg1NSwgMHg5MiwgMHg0MywgMHg5MCwgMHhERSwgMHg4MywgMHg2MiwgMHhFNywgMHhENCwgMHg1NiwgMHgzMiwgMHg3MiwKKyAgICAweDUyLCAweDBCLCAweDJFLCAweDA5LCAweDMwLCAweDY0LCAweDRBLCAweEFDLCAweDVBLCAweDY3LCAweDAxLCAweDBBLCAweEJELCAweDIyLCAweEY0LCAweDU4LAorICAgIDB4QjAsIDB4RTUsIDB4NkIsIDB4OTIsIDB4NjksIDB4ODksIDB4NzIsIDB4RTIsIDB4OTEsIDB4NTAsIDB4M0UsIDB4NDcsIDB4QkIsIDB4RTAsIDB4MjMsIDB4NTcsCisgICAgMHhCQywgMHhBNSwgMHg1RCwgMHhFRiwgMHhBNywgMHgzOSwgMHg5NiwgMHgwMCwgMHg5OSwgMHhFNCwgMHgzMCwgMHg4OSwgMHhDRiwgMHgwQywgMHhBNSwgMHgyMiwKKyAgICAweDhGLCAweDc4LCAweDVGLCAweEFBLCAweDY5LCAweDUwLCAweEY2LCAweEI5LCAweDYxLCAweEExLCAweDNFLCAweDFDLCAweDY1LCAweDE1LCAweEQxLCAweDUwLAorICAgIDB4NEIsIDB4REYsIDB4RDAsIDB4QTAsIDB4ODcsIDB4QzIsIDB4RjgsIDB4QjIsIDB4QUEsIDB4MDAsIDB4QjYsIDB4RkQsIDB4N0EsIDB4NEUsIDB4QTYsIDB4RUEsCisgICAgMHhEOCwgMHhDRSwgMHgyMiwgMHgzQywgMHg0MSwgMHhGQSwgMHg2QSwgMHgwNSwgMHhDQSwgMHg1RiwgMHhFQywgMHg5OCwgMHg0RSwgMHhGQywgMHhGMSwgMHgwNiwKKyAgICAweDVFLCAweDA3LCAweEYzLCAweDk4LCAweDczLCAweENGLCAweEJELCAweDE3LCAweEY1LCAweEI1LCAweDVCLCAweDUyLCAweDI5LCAweEVGLCAweENDLCAweEFFLAorICAgIDB4OEMsIDB4OEYsIDB4NkMsIDB4QjAsIDB4ODIsIDB4OUQsIDB4MUMsIDB4MTUsIDB4NjIsIDB4NEMsIDB4RkMsIDB4OTksIDB4RkQsIDB4M0QsIDB4RDEsIDB4N0YsCisgICAgMHgxMywgMHhGRCwgMHg4QSwgMHhEMSwgMHg5NiwgMHg1MCwgMHg5OCwgMHgyRCwgMHgzMCwgMHhFOCwgMHg1NywgMHgwNywgMHhGQywgMHhEMCwgMHgwNiwgMHgyNCwKKyAgICAweEI1LCAweDdBLCAweEM2LCAweEJFLCAweEFBLCAweDFFLCAweEJGLCAweEZGLCAweEM2LCAweDZDLCAweDI0LCAweDcwLCAweEI3LCAweDU5LCAweEMzLCAweERCLAorICAgIDB4QzEsIDB4M0EsIDB4NzksIDB4NkYsIDB4ODMsIDB4Q0IsIDB4NTUsIDB4ODQsIDB4N0UsIDB4MDQsIDB4RjgsIDB4REIsIDB4N0QsIDB4NDEsIDB4QUYsIDB4NUQsCisgICAgMHhEQiwgMHg1QSwgMHhFNiwgMHhDRSwgMHg5QiwgMHg2NiwgMHg2RiwgMHgzOCwgMHhGNCwgMHhFQSwgMHgyMCwgMHgwOSwgMHg3NSwgMHg3NSwgMHhDRCwgMHhGOCwKKyAgICAweDYyLCAweDc0LCAweDdFLCAweDRBLCAweDNFLCAweDJFLCAweEFFLCAweENDLCAweDhELCAweDQ5LCAweEJDLCAweENDLCAweDM0LCAweEU5LCAweDlCLCAweEM3LAorICAgIDB4MDUsIDB4ODEsIDB4OUMsIDB4QkEsIDB4MDAsIDB4RjIsIDB4ODMsIDB4QzUsIDB4RTQsIDB4NzgsIDB4ODUsIDB4RDAsIDB4QzUsIDB4RjMsIDB4MEYsIDB4QjAsCisgICAgMHgxOCwgMHgzMCwgMHg5QiwgMHhBMywgMHg2MiwgMHg5MiwgMHg3MiwgMHhENSwgMHhFQSwgMHhFMSwgMHhDMCwgMHg1QiwgMHhEQSwgMHgwQywgMHhCQywgMHgxOSwKKyAgICAweDQ2LCAweDdGLCAweDAzLCAweEM4LCAweDdCLCAweDMxLCAweDEzLCAweDFCLCAweEEwLCAweDkxLCAweEI0LCAweDk5LCAweEMxLCAweDlELCAweEI4LCAweEU1LAorICAgIDB4MzMsIDB4RDksIDB4NDEsIDB4NTMsIDB4MTksIDB4OTcsIDB4OTksIDB4MjcsIDB4OEMsIDB4OEUsIDB4NUIsIDB4QUEsIDB4MTcsIDB4ODUsIDB4NDIsIDB4QTksCisgICAgMHg0NywgMHgxQywgMHgxOSwgMHgzMywgMHhDQiwgMHg4OCwgMHhCRSwgMHhGNCwgMHg0OCwgMHg0MywgMHg2NiwgMHhFQiwgMHg5RiwgMHhGNiwgMHg5NCwgMHgyQywKKyAgICAweEMyLCAweDc0LCAweEY4LCAweEQ3LCAweDlCLCAweEVCLCAweDJGLCAweDJGLCAweEYzLCAweDUyLCAweDFGLCAweDQ1LCAweDlELCAweDlFLCAweEI0LCAweDg2LAorICAgIDB4NzYsIDB4QUIsIDB4NDMsIDB4QjksIDB4NTIsIDB4MEMsIDB4MEEsIDB4MDYsIDB4RDcsIDB4RjIsIDB4QTUsIDB4RkUsIDB4OUMsIDB4MEQsIDB4OEEsIDB4RTAsCisgICAgMHhBNCwgMHhFQSwgMHg2NSwgMHgzRiwgMHgyQiwgMHg3QywgMHgwMywgMHgzMSwgMHgzQSwgMHg0MCwgMHg5NywgMHhBOCwgMHg1NiwgMHhBMiwgMHhBRCwgMHg2MywKKyAgICAweDdBLCAweEU1LCAweERDLCAweEZELCAweDhELCAweEE5LCAweEYzLCAweDU1LCAweEI1LCAweDE0LCAweEI3LCAweDUxLCAweEJBLCAweDAwLCAweDMyLCAweDQzLAorICAgIDB4MjUsIDB4RUIsIDB4NjEsIDB4NzgsIDB4QTYsIDB4MkEsIDB4RUEsIDB4OUQsIDB4MTUsIDB4NzIsIDB4NUQsIDB4RDAsIDB4MEUsIDB4MEMsIDB4QjQsIDB4QzEsCisgICAgMHg0QiwgMHgxMCwgMHg5QSwgMHhGQiwgMHgxQiwgMHg1NCwgMHgzMywgMHg4RCwgMHgzQSwgMHgwQiwgMHg0MywgMHg1MSwgMHg2QywgMHgyMiwgMHhCOCwgMHgyOSwKKyAgICAweEM1LCAweDExLCAweDFGLCAweDI4LCAweEY1LCAweDgyLCAweDVGLCAweENGLCAweDBBLCAweEIwLCAweEJGLCAweERBLCAweDkwLCAweDEzLCAweENFLCAweDY5LAorICAgIDB4RkYsIDB4MDUsIDB4ODUsIDB4OUQsIDB4ODAsIDB4RjMsIDB4M0QsIDB4NEIsIDB4MjEsIDB4QUIsIDB4RUQsIDB4NzMsIDB4QjksIDB4QzQsIDB4QUQsIDB4NzAsCisgICAgMHhFQSwgMHgxNywgMHgyMCwgMHg3OCwgMHhDQSwgMHhDQywgMHg0RSwgMHg0NywgMHhDQSwgMHgzMCwgMHhBOCwgMHhEQiwgMHgxQywgMHg3QiwgMHg0NiwgMHgzQywKKyAgICAweEMwLCAweEUyLCAweDk2LCAweEY4LCAweDYwLCAweERELCAweDQzLCAweEZFLCAweDQxLCAweDdDLCAweEQyLCAweDdCLCAweEI5LCAweDkwLCAweDk3LCAweEY2LAorICAgIDB4ODYsIDB4NjIsIDB4RDUsIDB4RjMsIDB4NDksIDB4NzgsIDB4ODEsIDB4Q0YsIDB4MEMsIDB4RjEsIDB4MzAsIDB4QzcsIDB4MzcsIDB4MTYsIDB4REUsIDB4QjQsCisgICAgMHg5MywgMHg2QSwgMHhFMCwgMHg5RiwgMHg1QiwgMHgxNywgMHg0MywgMHg2OSwgMHg3RSwgMHg1NCwgMHhCQiwgMHg4MywgMHg0RiwgMHgxQiwgMHhBOSwgMHg3MCwKKyAgICAweDQxLCAweDk3LCAweDVBLCAweDVELCAweDZFLCAweDUxLCAweDFGLCAweEVBLCAweERGLCAweDQ0LCAweEZCLCAweDJELCAweDFFLCAweEI5LCAweEY5LCAweEE0LAorICAgIDB4Q0UsIDB4MTEsIDB4RDUsIDB4NkMsIDB4NDMsIDB4RjUsIDB4RDEsIDB4MjMsIDB4N0IsIDB4N0UsIDB4MzAsIDB4NEIsIDB4ODIsIDB4RjQsIDB4M0YsIDB4OUMsCisgICAgMHg1MywgMHhGNSwgMHhDOCwgMHhGNiwgMHhBMSwgMHhBQiwgMHgzOSwgMHhEMiwgMHgwMSwgMHhENSwgMHhFQSwgMHgwMSwgMHhGRiwgMHg3NSwgMHhGRCwgMHgyMywKKyAgICAweDYzLCAweEJFLCAweDRDLCAweDcwLCAweEMwLCAweEY2LCAweDc4LCAweEVELCAweDgzLCAweDc5LCAweDE5LCAweDMzLCAweDU4LCAweEVBLCAweDczLCAweEM0LAorICAgIDB4RTksIDB4MEUsIDB4RjYsIDB4ODksIDB4M0MsIDB4RDQsIDB4MEMsIDB4RjYsIDB4QkUsIDB4QUMsIDB4ODEsIDB4MzIsIDB4NzAsIDB4MjQsIDB4N0QsIDB4RUEsCisgICAgMHg3MCwgMHhCRiwgMHhDNCwgMHg0NSwgMHg1NiwgMHg4QywgMHg0OSwgMHg5MSwgMHhBNCwgMHgwNCwgMHg3NiwgMHg4NCwgMHg1QiwgMHg0MywgMHgxMSwgMHg3MiwKKyAgICAweDc0LCAweDFDLCAweEY1LCAweEVCLCAweDkzLCAweDQyLCAweDg3LCAweDFELCAweDZCLCAweDE2LCAweDlGLCAweEFELCAweENBLCAweDlCLCAweEQzLCAweDFGLAorICAgIDB4NzgsIDB4MUEsIDB4MEEsIDB4QzUsIDB4N0QsIDB4NDQsIDB4RDIsIDB4REUsIDB4OTEsIDB4MEMsIDB4M0UsIDB4MTIsIDB4NzQsIDB4REYsIDB4OTIsIDB4RjcsCisgICAgMHg5NiwgMHhEMywgMHg2RSwgMHg3NiwgMHhENiwgMHg5OCwgMHg0OCwgMHg3OCwgMHg3NywgMHg5MiwgMHhDOSwgMHg0NSwgMHhEOCwgMHg3NSwgMHhCMywgMHg4NCwKKyAgICAweERDLCAweDFBLCAweDJBLCAweDBFLCAweEFGLCAweEQ4LCAweEIyLCAweDZELCAweDg4LCAweDYwLCAweEVFLCAweDc3LCAweDRBLCAweEZFLCAweDRCLCAweEMxLAorICAgIDB4MkUsIDB4MjcsIDB4NEMsIDB4NEYsIDB4MzEsIDB4NTEsIDB4NUIsIDB4OTIsIDB4NzUsIDB4QzIsIDB4NDEsIDB4N0YsIDB4QjAsIDB4NDMsIDB4MDksIDB4QzcsCisgICAgMHhCQSwgMHhCMCwgMHhCMywgMHg5QiwgMHgyNywgMHgzRCwgMHhENCwgMHgxMCwgMHg1OSwgMHhEMywgMHg0RiwgMHhCOCwgMHg3QywgMHhGRiwgMHhDOCwgMHg0QywKKyAgICAweDA2LCAweENBLCAweEI0LCAweDVDLCAweDM3LCAweEE0LCAweENELCAweDEyLCAweDYwLCAweDVDLCAweDE1LCAweEIyLCAweEEyLCAweEFBLCAweDgxLCAweDFBLAorICAgIDB4MTcsIDB4N0QsIDB4RDksIDB4RjYsIDB4MzEsIDB4RDYsIDB4RUIsIDB4RTcsIDB4RTcsIDB4MTYsIDB4ODUsIDB4MzYsIDB4M0MsIDB4RTMsIDB4NTcsIDB4NzYsCisgICAgMHhBQywgMHgzNSwgMHhFMywgMHhFQywgMHgwRiwgMHhCNywgMHg5QiwgMHhENSwgMHhEMSwgMHg4RSwgMHg2MywgMHg3RiwgMHgxQSwgMHhCOCwgMHgyMywgMHgwMiwKKyAgICAweDUwLCAweDYyLCAweDA2LCAweEJGLCAweEU1LCAweDE0LCAweDJELCAweEVELCAweEYwLCAweDY4LCAweEVGLCAweDhCLCAweDgyLCAweDM1LCAweDI5LCAweDhBLAorICAgIDB4RTEsIDB4NjQsIDB4MTQsIDB4RkIsIDB4QUEsIDB4NEIsIDB4RTMsIDB4MkIsIDB4OTEsIDB4NkEsIDB4MUQsIDB4OEUsIDB4QjIsIDB4NjAsIDB4QzEsIDB4QzQsCisgICAgMHg1QSwgMHgwQiwgMHhBNSwgMHhENiwgMHhBMSwgMHhFOCwgMHg5MSwgMHg5NywgMHhBMSwgMHg1MSwgMHhCRCwgMHg4MSwgMHhEMCwgMHhCNSwgMHg3RiwgMHg2OSwKKyAgICAweDRBLCAweEE4LCAweDVELCAweEI1LCAweDM2LCAweDU1LCAweDIyLCAweEUyLCAweDdFLCAweDFDLCAweDUzLCAweEUyLCAweDVCLCAweDU3LCAweDE3LCAweDYyLAorICAgIDB4OTYsIDB4QzgsIDB4N0UsIDB4MzEsIDB4Q0IsIDB4RTAsIDB4QzYsIDB4NzEsIDB4NUUsIDB4QzEsIDB4QjksIDB4RDYsIDB4NTQsIDB4MjIsIDB4NDksIDB4RUYsCisgICAgMHhERCwgMHg1MCwgMHhCMCwgMHg4OCwgMHhDMCwgMHgwRiwgMHgxNiwgMHhFNywgMHhENiwgMHhCQSwgMHg5QSwgMHgwOCwgMHhBQywgMHhENiwgMHg3OCwgMHhEQSwKKyAgICAweDgwLCAweERGLCAweDdELCAweDY5LCAweDk3LCAweEQ0LCAweEE3LCAweDk3LCAweEZBLCAweERGLCAweDc2LCAweDU0LCAweEU0LCAweDNCLCAweDFELCAweEYxLAorICAgIDB4OTgsIDB4QzQsIDB4NjgsIDB4QTYsIDB4RTgsIDB4MEIsIDB4MjcsIDB4RTEsIDB4MEMsIDB4MkMsIDB4QzIsIDB4OEYsIDB4ODgsIDB4QjMsIDB4MzEsIDB4RkYsCisgICAgMHgzQSwgMHhEQiwgMHg5MCwgMHgxQywgMHg1OSwgMHgyQSwgMHg4OCwgMHg1NCwgMHgyNiwgMHg3RSwgMHhDQiwgMHhGRiwgMHg3MywgMHg5OSwgMHhFNSwgMHhDRiwKKyAgICAweDMxLCAweDhCLCAweDY5LCAweERCLCAweDhGLCAweDI4LCAweDRELCAweDNCLCAweDJGLCAweDYzLCAweEM4LCAweEVCLCAweDYxLCAweDNFLCAweDk1LCAweEJDLAorICAgIDB4OEIsIDB4NUMsIDB4MUMsIDB4Q0EsIDB4RUQsIDB4NDMsIDB4REYsIDB4MUEsIDB4OTQsIDB4RjQsIDB4RjEsIDB4RjIsIDB4N0QsIDB4MzcsIDB4NzEsIDB4QzIsCisgICAgMHgyOCwgMHhFNywgMHhGRSwgMHg2OSwgMHg2OSwgMHgzQiwgMHg2RCwgMHgzMSwgMHgzQSwgMHhFNywgMHgwRiwgMHgyNiwgMHhDRSwgMHhDRCwgMHgxOSwgMHhBNSwKKyAgICAweEUwLCAweDY2LCAweDI5LCAweDU0LCAweDY1LCAweDQzLCAweDQzLCAweEI5LCAweDIyLCAweDg2LCAweDBFLCAweDJFLCAweEQ1LCAweDYzLCAweDU1LCAweEE4LAorICAgIDB4NzgsIDB4MDUsIDB4NTQsIDB4RTMsIDB4MUUsIDB4RUMsIDB4MDEsIDB4NjcsIDB4QjQsIDB4MjIsIDB4RkMsIDB4MTgsIDB4REIsIDB4NTMsIDB4NkYsIDB4OTcsCisgICAgMHhDMCwgMHhFQiwgMHg1OCwgMHg1NywgMHg0OSwgMHhEQywgMHhCRCwgMHg3NiwgMHhDQSwgMHgwMCwgMHg0NiwgMHhFMywgMHg3RiwgMHg0RCwgMHg1MywgMHhBQywKKyAgICAweERDLCAweDc3LCAweEYzLCAweEFGLCAweDRGLCAweDVBLCAweDg1LCAweEM4LCAweDM3LCAweDJCLCAweDQxLCAweDYzLCAweDZGLCAweEQ3LCAweDI1LCAweDYxLAorICAgIDB4NkQsIDB4MDksIDB4OUMsIDB4RUIsIDB4NDMsIDB4RTIsIDB4RTgsIDB4NDksIDB4NzIsIDB4Q0QsIDB4OEUsIDB4MUMsIDB4RDAsIDB4OEUsIDB4RDMsIDB4OTYsCisgICAgMHgxRiwgMHg5OCwgMHhBQSwgMHgyQiwgMHhGNiwgMHg0NywgMHg0RCwgMHg5MiwgMHgyQSwgMHhBQSwgMHg0MSwgMHhBNSwgMHhBOSwgMHg3MSwgMHhGRSwgMHg2QywKKyAgICAweDQzLCAweDdFLCAweEI4LCAweDIxLCAweDRBLCAweDU4LCAweEE0LCAweEY3LCAweDVELCAweEY4LCAweDQ0LCAweEM0LCAweEU4LCAweDlBLCAweEE3LCAweEI5LAorICAgIDB4QUMsIDB4OTcsIDB4RDQsIDB4OEQsIDB4QTYsIDB4QzQsIDB4MDQsIDB4NDMsIDB4MzAsIDB4MjEsIDB4NTQsIDB4MTYsIDB4OTIsIDB4NDksIDB4NzcsIDB4N0QsCisgICAgMHhFQSwgMHhEMSwgMHgxRiwgMHhCNCwgMHg3NSwgMHhGNCwgMHgxRiwgMHg3MywgMHhEMCwgMHhFQSwgMHgwRiwgMHhBNiwgMHg2MCwgMHg0QiwgMHhFOSwgMHhERSwKKyAgICAweDc5LCAweDRDLCAweEZGLCAweEQ5LCAweEFCLCAweDlELCAweEE2LCAweDkyLCAweEU4LCAweDY0LCAweDI1LCAweDJGLCAweDc1LCAweDk3LCAweDVDLCAweDdBLAorICAgIDB4N0UsIDB4RjEsIDB4NUEsIDB4RTEsIDB4NkQsIDB4RDcsIDB4MTYsIDB4NUEsIDB4NDIsIDB4ODMsIDB4NDMsIDB4REQsIDB4OEQsIDB4MjIsIDB4RUIsIDB4RUUsCisgICAgMHg2MywgMHhCMCwgMHg3MywgMHg2NywgMHg4MywgMHgxRSwgMHhGOCwgMHg3QywgMHhCNiwgMHg1QiwgMHhBNSwgMHhGOSwgMHhEMSwgMHhGRiwgMHg4QSwgMHhBRCwKKyAgICAweDlBLCAweDc1LCAweDRBLCAweDNELCAweDM3LCAweDY3LCAweDQwLCAweDc4LCAweEQ1LCAweDJBLCAweEIzLCAweEJFLCAweEYzLCAweDY2LCAweDNGLCAweDUxLAorICAgIDB4OTQsIDB4NzksIDB4MkQsIDB4OTgsIDB4QjcsIDB4MjksIDB4ODEsIDB4OUIsIDB4QzMsIDB4QzQsIDB4MjgsIDB4MzgsIDB4QjMsIDB4OTksIDB4ODQsIDB4QkEsCisgICAgMHg1MCwgMHgxNSwgMHg2NiwgMHg2OCwgMHg0MCwgMHgzRCwgMHhDRCwgMHhBRiwgMHgzQiwgMHhGMywgMHgxRiwgMHhEMSwgMHhFNCwgMHgxNywgMHg4MCwgMHg3NCwKKyAgICAweEUzLCAweDE0LCAweEJGLCAweEIzLCAweDNELCAweEMzLCAweEMyLCAweDA3LCAweDFFLCAweDc0LCAweDU3LCAweDk2LCAweERGLCAweEU0LCAweDYyLCAweEJBLAorICAgIDB4NEMsIDB4NTcsIDB4NDcsIDB4MEEsIDB4MDksIDB4QzIsIDB4NDYsIDB4ODEsIDB4RjUsIDB4QkIsIDB4NzcsIDB4MzQsIDB4NDksIDB4M0IsIDB4QkIsIDB4MDIsCisgICAgMHhEQywgMHhGMSwgMHgxNSwgMHg5OSwgMHgxNSwgMHhCOCwgMHhGMCwgMHhEMiwgMHgyOCwgMHhENSwgMHhDOCwgMHg3OSwgMHhBQiwgMHhBRiwgMHhGOCwgMHg4MywKKyAgICAweEUzLCAweDU3LCAweDlBLCAweDVFLCAweEMwLCAweDBDLCAweDcyLCAweDJFLCAweEQ4LCAweEI3LCAweERFLCAweEFCLCAweDI3LCAweDQ5LCAweEVDLCAweDRFLAorICAgIDB4OEUsIDB4QjAsIDB4NDksIDB4NjUsIDB4REQsIDB4MkYsIDB4NTYsIDB4QTQsIDB4QkUsIDB4MDQsIDB4OTAsIDB4OUMsIDB4Q0EsIDB4NzYsIDB4NUYsIDB4NTksCisgICAgMHg5NCwgMHg5OSwgMHg1RiwgMHg5NywgMHhGRCwgMHhBNywgMHgzOCwgMHhEMiwgMHg3RiwgMHg1MywgMHhCQywgMHg3QiwgMHgwRiwgMHg2RiwgMHhDOSwgMHhFNSwKKyAgICAweDNBLCAweDBGLCAweDk0LCAweDJDLCAweEJBLCAweDg1LCAweDZELCAweEFFLCAweEY3LCAweDIxLCAweDZBLCAweDY0LCAweEZELCAweEFBLCAweDY1LCAweEQ4LAorICAgIDB4MzAsIDB4QjMsIDB4MEEsIDB4NkMsIDB4OTEsIDB4QzYsIDB4QjYsIDB4MjksIDB4OEQsIDB4NjgsIDB4QzcsIDB4MUEsIDB4MDYsIDB4OUMsIDB4NTgsIDB4MzAsCisgICAgMHgzQywgMHhGMiwgMHhDNiwgMHgxNSwgMHhEMywgMHg4QSwgMHhDOSwgMHhBMCwgMHg0RCwgMHg1NiwgMHg4OCwgMHhDNywgMHhDMiwgMHg0RSwgMHg0NywgMHg4NywKKyAgICAweDlGLCAweDIwLCAweDEzLCAweDZDLCAweEVGLCAweEM0LCAweDZELCAweDMxLCAweDQ3LCAweEIzLCAweEVCLCAweEJDLCAweDYxLCAweDExLCAweEUxLCAweEExLAorICAgIDB4RDgsIDB4NkUsIDB4MkIsIDB4NUMsIDB4QzEsIDB4RkQsIDB4QzMsIDB4NzUsIDB4QkYsIDB4NzAsIDB4QkMsIDB4NzcsIDB4NEUsIDB4NDcsIDB4NjUsIDB4RTUsCisgICAgMHhFQywgMHhERCwgMHg3MCwgMHgyNCwgMHg2MywgMHhBOSwgMHhENiwgMHg5QywgMHhBOSwgMHgwQywgMHg4NiwgMHhEQiwgMHhDMCwgMHgzRCwgMHg5NiwgMHg2NSwKKyAgICAweEE0LCAweDlELCAweDg5LCAweEYxLCAweEIxLCAweDY1LCAweDE2LCAweDI5LCAweDNFLCAweDhDLCAweDk3LCAweEMwLCAweDczLCAweEVELCAweEQxLCAweDk2LAorICAgIDB4ODQsIDB4MTcsIDB4OEQsIDB4NjYsIDB4OEUsIDB4N0YsIDB4NDcsIDB4RDEsIDB4NjQsIDB4N0YsIDB4ODMsIDB4NTQsIDB4RTYsIDB4RDMsIDB4QTAsIDB4NkUsCisgICAgMHhCNywgMHhCMCwgMHhBNSwgMHg3RSwgMHg4RSwgMHhGRSwgMHhCRCwgMHhBOSwgMHhERSwgMHgwQiwgMHg3RSwgMHhFOSwgMHg2OCwgMHg4MiwgMHgyQiwgMHg1OSwKKyAgICAweEYyLCAweEEyLCAweDQ1LCAweDg2LCAweDg0LCAweEVGLCAweDA0LCAweDE4LCAweDZFLCAweDVGLCAweDVELCAweDIxLCAweEVELCAweDhCLCAweEFFLCAweDY1LAorICAgIDB4MEEsIDB4QzQsIDB4RDAsIDB4RDgsIDB4MkEsIDB4OUUsIDB4ODEsIDB4ODUsIDB4NzgsIDB4MkIsIDB4NEUsIDB4MTEsIDB4NDcsIDB4QzYsIDB4NjAsIDB4MzEsCisgICAgMHg2MywgMHhCMSwgMHg5QSwgMHhFQiwgMHg1NSwgMHgzNCwgMHg5OCwgMHgyNywgMHg5RSwgMHhDQywgMHg3RCwgMHgyOCwgMHgxQiwgMHhGOSwgMHhGRiwgMHg0RCwKKyAgICAweDE0LCAweEYxLCAweDQ4LCAweDg4LCAweDhDLCAweDI2LCAweERFLCAweDFGLCAweEYzLCAweEUwLCAweENCLCAweEQxLCAweDRBLCAweDA2LCAweDBDLCAweEUwLAorICAgIDB4NzksIDB4MDcsIDB4NkYsIDB4MDEsIDB4RjYsIDB4MEYsIDB4N0IsIDB4NkUsIDB4OUUsIDB4MjEsIDB4MEEsIDB4N0MsIDB4OEQsIDB4REMsIDB4QUIsIDB4RTksCisgICAgMHhEQiwgMHhDQiwgMHhDOCwgMHg2OCwgMHg0RiwgMHgyMCwgMHhCQiwgMHhEQiwgMHhGNiwgMHgzQSwgMHhFQywgMHhENCwgMHg1MiwgMHg2RiwgMHhERiwgMHhGRiwKKyAgICAweDM5LCAweEFCLCAweDMwLCAweEY5LCAweEJGLCAweENCLCAweEM2LCAweEM2LCAweDYzLCAweDZCLCAweEZFLCAweDM4LCAweEY4LCAweDUwLCAweDU2LCAweDAwLAorICAgIDB4MjMsIDB4RjksIDB4QjcsIDB4MzMsIDB4RTIsIDB4OTMsIDB4MEEsIDB4NEEsIDB4QTEsIDB4MjAsIDB4ODUsIDB4RUMsIDB4ODgsIDB4MEUsIDB4ODMsIDB4NTcsCisgICAgMHgyNSwgMHgzOCwgMHg5MSwgMHg0OCwgMHg5OSwgMHgwRCwgMHhBQSwgMHgyOCwgMHhFQSwgMHhCRiwgMHg2NiwgMHgwMSwgMHhDNSwgMHgwOCwgMHhGRiwgMHhDNiwKKyAgICAweDc4LCAweDM3LCAweDM2LCAweDUxLCAweDBCLCAweEYwLCAweDYzLCAweDc0LCAweEM1LCAweDNFLCAweDE0LCAweDlDLCAweEU0LCAweDRCLCAweDNBLCAweDcxLAorICAgIDB4MDIsIDB4OTYsIDB4M0YsIDB4NTYsIDB4RjAsIDB4OUMsIDB4Q0EsIDB4OUMsIDB4QUIsIDB4QTcsIDB4ODYsIDB4N0UsIDB4QjAsIDB4OUUsIDB4RkIsIDB4NTgsCisgICAgMHhERSwgMHhFNSwgMHg2RSwgMHg0NywgMHhFRSwgMHg4MCwgMHgzOSwgMHg1MiwgMHhEOSwgMHhDQSwgMHhFNiwgMHhDOSwgMHhBNywgMHg5QywgMHg4OSwgMHhCMCwKKyAgICAweDUyLCAweDY4LCAweEFCLCAweDRCLCAweDNGLCAweDg2LCAweEQzLCAweDExLCAweEU2LCAweEZDLCAweDJDLCAweDc3LCAweDhDLCAweDVDLCAweDZFLCAweDE5LAorICAgIDB4RDgsIDB4NTMsIDB4OTUsIDB4QTQsIDB4NDYsIDB4MDgsIDB4QUMsIDB4N0QsIDB4NUQsIDB4RkIsIDB4REUsIDB4NkMsIDB4NEQsIDB4NDUsIDB4QTMsIDB4NDEsCisgICAgMHg5RCwgMHhDRSwgMHhDNSwgMHhCMSwgMHg0OSwgMHhCRCwgMHgwNiwgMHhGNiwgMHg3NCwgMHgyRiwgMHg4MiwgMHhGNiwgMHg5MSwgMHg0RCwgMHhERSwgMHg4QSwKKyAgICAweDJELCAweEQ4LCAweEFGLCAweDE3LCAweEZCLCAweEM4LCAweDg1LCAweEUyLCAweDE5LCAweDM5LCAweERELCAweDFCLCAweDU4LCAweDJCLCAweDRGLCAweEI2LAorICAgIDB4RUQsIDB4MzIsIDB4MzUsIDB4RjYsIDB4RUIsIDB4MTIsIDB4Q0UsIDB4N0YsIDB4RDEsIDB4M0MsIDB4RjEsIDB4NkUsIDB4QzQsIDB4RTUsIDB4QkEsIDB4NkUsCisgICAgMHg5MiwgMHhGNywgMHgzNiwgMHhGMCwgMHg4NCwgMHhCMywgMHgzNiwgMHhGRSwgMHg4OSwgMHg0QywgMHhGRSwgMHhBNywgMHg5RCwgMHg3MywgMHg5OCwgMHgyOCwKKyAgICAweEJCLCAweDAxLCAweDVBLCAweDlCLCAweDc2LCAweDZDLCAweDgyLCAweDgxLCAweDU1LCAweDNCLCAweEE5LCAweDQyLCAweEQ3LCAweDdBLCAweDM3LCAweDBDLAorICAgIDB4M0UsIDB4MUQsIDB4NkQsIDB4QjYsIDB4RjgsIDB4RDcsIDB4QTUsIDB4QUMsIDB4NUEsIDB4QkYsIDB4ODMsIDB4MTYsIDB4MTAsIDB4MkIsIDB4MkYsIDB4MjUsCisgICAgMHgyRCwgMHgyOCwgMHg3RiwgMHhEMywgMHhCNCwgMHhDMywgMHg1NCwgMHgxRCwgMHg3RSwgMHgzNiwgMHhGMSwgMHgwMCwgMHg4MCwgMHhENSwgMHg1MCwgMHhBMCwKKyAgICAweEI3LCAweDgxLCAweEFCLCAweDZFLCAweEE5LCAweEVGLCAweDdGLCAweEIyLCAweDFFLCAweEE1LCAweEU0LCAweDYyLCAweDA2LCAweDQ5LCAweEIzLCAweEE4LAorICAgIDB4NjEsIDB4RDIsIDB4NkMsIDB4RUQsIDB4NEIsIDB4RjcsIDB4QUQsIDB4RDMsIDB4NEMsIDB4MUYsIDB4MjMsIDB4QjEsIDB4NUIsIDB4NTQsIDB4MUIsIDB4QTUsCisgICAgMHhBQSwgMHg1RiwgMHg5MiwgMHg2RCwgMHg2RCwgMHgyMywgMHhCMiwgMHg1RiwgMHg3MywgMHhDNSwgMHgxQSwgMHgxRSwgMHhEOSwgMHgxNywgMHhFNSwgMHgxOSwKKyAgICAweEFGLCAweDMwLCAweDlCLCAweDc3LCAweDBELCAweEY1LCAweEM0LCAweEFGLCAweERGLCAweDU3LCAweDcyLCAweDI1LCAweEFFLCAweEE2LCAweDYzLCAweEZELAorICAgIDB4QjMsIDB4QUYsIDB4NzMsIDB4MUIsIDB4MzcsIDB4MTIsIDB4MUYsIDB4NEMsIDB4NjIsIDB4OTMsIDB4QzMsIDB4M0IsIDB4MDcsIDB4NTksIDB4RUEsIDB4ODIsCisgICAgMHhCNSwgMHg0RCwgMHhDRiwgMHg5MCwgMHhDNywgMHgzNiwgMHgwOCwgMHhBNCwgMHhFNywgMHg2OSwgMHhFNSwgMHhGOSwgMHg2RSwgMHg4NCwgMHg2OCwgMHg2RCwKKyAgICAweDJBLCAweDAwLCAweDI3LCAweDNCLCAweDdFLCAweEQ0LCAweDM0LCAweDZCLCAweDFCLCAweEZCLCAweDBDLCAweDhGLCAweEY0LCAweDAzLCAweDMxLCAweDM5LAorICAgIDB4NzksIDB4MDcsIDB4NTMsIDB4MDQsIDB4NTQsIDB4RkEsIDB4NkUsIDB4MjMsIDB4MEQsIDB4OTUsIDB4NkQsIDB4RjksIDB4N0QsIDB4Q0EsIDB4MUIsIDB4MDgsCisgICAgMHhERSwgMHhEOSwgMHhDMCwgMHhGRSwgMHg5OSwgMHg3NiwgMHg4QSwgMHhFNCwgMHg0MSwgMHgzMywgMHg2RiwgMHg4MywgMHhDMSwgMHg1NSwgMHhEQSwgMHhFNywKKyAgICAweDIzLCAweEE0LCAweDU2LCAweDBBLCAweEM1LCAweDA2LCAweDFFLCAweDBELCAweEIxLCAweDdGLCAweDVCLCAweERCLCAweDlBLCAweEU1LCAweDM5LCAweDI4LAorICAgIDB4M0IsIDB4NDEsIDB4QzYsIDB4MjIsIDB4QUMsIDB4MjMsIDB4MDksIDB4NDMsIDB4M0IsIDB4MTYsIDB4RkYsIDB4MDIsIDB4QzksIDB4M0QsIDB4QzMsIDB4NTMsCisgICAgMHgwRSwgMHhGOSwgMHhEQiwgMHg4QSwgMHgzQiwgMHhBMCwgMHhGNSwgMHhDQywgMHg4OSwgMHgyRCwgMHg1OSwgMHhGRiwgMHhCMSwgMHgzOSwgMHhCMSwgMHhCNCwKKyAgICAweDBFLCAweDlDLCAweDk4LCAweDhGLCAweDI3LCAweEY3LCAweDZGLCAweDkxLCAweDhCLCAweDUzLCAweDY3LCAweDhCLCAweEEyLCAweDVFLCAweEMwLCAweDE3LAorICAgIDB4ODQsIDB4M0MsIDB4NzYsIDB4RDIsIDB4QjgsIDB4OUEsIDB4MTAsIDB4OEQsIDB4MEIsIDB4QUUsIDB4M0UsIDB4QTksIDB4NTEsIDB4NTAsIDB4QzEsIDB4OTQsCisgICAgMHgwNSwgMHhCMiwgMHg4QiwgMHg4OCwgMHg2NywgMHhGRSwgMHg3NiwgMHgwRiwgMHhBRiwgMHhENiwgMHg4OCwgMHhGRCwgMHgzOCwgMHg5RiwgMHhGOCwgMHhBOSwKKyAgICAweDI3LCAweEI4LCAweEIzLCAweDk5LCAweDk3LCAweDFBLCAweEQ2LCAweDgyLCAweDhFLCAweDkyLCAweDhFLCAweDg1LCAweDdCLCAweDg1LCAweEQ0LCAweDk0LAorICAgIDB4RjgsIDB4NEYsIDB4OUEsIDB4RjEsIDB4QzgsIDB4RTYsIDB4OUEsIDB4MUYsIDB4QzgsIDB4QTMsIDB4RDcsIDB4ODcsIDB4QUQsIDB4MEMsIDB4RjgsIDB4MzQsCisgICAgMHgwMCwgMHg3RSwgMHgzMCwgMHhDQywgMHhCRSwgMHg4RSwgMHhEOSwgMHg0NCwgMHhGMywgMHhCRiwgMHg5OCwgMHhDRiwgMHhCRiwgMHgwRiwgMHg3OCwgMHhCQSwKKyAgICAweDM5LCAweEQ3LCAweDIwLCAweDk0LCAweDQ2LCAweDRBLCAweEUyLCAweDhBLCAweEIwLCAweDIyLCAweDVDLCAweDhFLCAweDQzLCAweEY4LCAweEMzLCAweDFELAorICAgIDB4NEYsIDB4NkIsIDB4NEEsIDB4MTQsIDB4MjYsIDB4OUEsIDB4RDMsIDB4MTAsIDB4RDQsIDB4RDMsIDB4OTksIDB4QjYsIDB4RDQsIDB4QzgsIDB4NkEsIDB4OEUsCisgICAgMHg1RCwgMHg0NSwgMHgwOSwgMHgxNCwgMHgzMCwgMHgyOCwgMHhFNiwgMHg3NSwgMHhDQiwgMHg0QywgMHgyOCwgMHhCNywgMHgyNywgMHgzNiwgMHg2RCwgMHg0RiwKKyAgICAweEZFLCAweDI1LCAweENCLCAweEQ1LCAweEFGLCAweDBCLCAweEExLCAweDYxLCAweDc3LCAweDdDLCAweDY0LCAweDI4LCAweERCLCAweDc0LCAweDY1LCAweDJDLAorICAgIDB4QTcsIDB4ODgsIDB4M0YsIDB4RjgsIDB4QTAsIDB4RkMsIDB4RDMsIDB4Q0YsIDB4OTksIDB4NEIsIDB4RTgsIDB4REUsIDB4QjcsIDB4MTYsIDB4QTIsIDB4ODAsCisgICAgMHgxNiwgMHg4RiwgMHhCQiwgMHg1MywgMHgyNywgMHg3MiwgMHg2QiwgMHg1MywgMHhBQiwgMHg4MCwgMHhBQiwgMHgzNywgMHhFOCwgMHg3QywgMHgxNiwgMHgzMSwKKyAgICAweEE5LCAweDgxLCAweERGLCAweDM2LCAweEQzLCAweDY5LCAweEQ5LCAweEExLCAweEE5LCAweDRCLCAweDhGLCAweDFGLCAweDg1LCAweDY0LCAweDZFLCAweDRELAorICAgIDB4MzksIDB4NzksIDB4NDcsIDB4ODcsIDB4RjMsIDB4MEIsIDB4QjksIDB4RjksIDB4RTEsIDB4RjcsIDB4NkUsIDB4NUYsIDB4MjksIDB4MEIsIDB4MzIsIDB4RUUsCisgICAgMHhCQSwgMHg3OSwgMHgwMSwgMHgzNCwgMHgxRiwgMHgxQywgMHhGMCwgMHgwMywgMHhFRSwgMHg5NiwgMHgyRiwgMHg3NiwgMHg0RSwgMHgyRSwgMHgwRiwgMHhEMSwKKyAgICAweDhCLCAweDk0LCAweDYxLCAweDlCLCAweDMzLCAweDE2LCAweEZELCAweEE3LCAweDM3LCAweDZGLCAweDZELCAweDZDLCAweDVCLCAweENBLCAweEE0LCAweDlGLAorICAgIDB4MTksIDB4NjksIDB4NEUsIDB4MTcsIDB4RUMsIDB4MDIsIDB4RTYsIDB4NDksIDB4QUEsIDB4N0UsIDB4OEUsIDB4QzAsIDB4RTksIDB4MTUsIDB4NTQsIDB4MkYsCisgICAgMHhBNiwgMHgwMSwgMHhFOSwgMHgyNywgMHg5RiwgMHgyRSwgMHg5RCwgMHg4NSwgMHg0RCwgMHhGRiwgMHgzRSwgMHg3OCwgMHgwQiwgMHgxNCwgMHhBQywgMHgxOSwKKyAgICAweDc4LCAweDMwLCAweENGLCAweEEwLCAweDI0LCAweDAxLCAweDdCLCAweDFELCAweDgyLCAweDQzLCAweDAyLCAweEFDLCAweEY3LCAweDZDLCAweDBDLCAweEE5LAorICAgIDB4QzcsIDB4NzQsIDB4RTMsIDB4OEUsIDB4MTUsIDB4QzEsIDB4RjIsIDB4QUQsIDB4OUQsIDB4NTgsIDB4REEsIDB4NTAsIDB4OTMsIDB4NjksIDB4NEYsIDB4NzQsCisgICAgMHg1QSwgMHhEMiwgMHhCNSwgMHhBMCwgMHgwNiwgMHgwOCwgMHg5RCwgMHhDMCwgMHgwRiwgMHgyNywgMHgyQiwgMHgxOSwgMHg4MiwgMHg0MSwgMHgyNywgMHgzMiwKKyAgICAweDY2LCAweEJDLCAweEFBLCAweDRFLCAweDkwLCAweDQ0LCAweDg4LCAweDMzLCAweDZFLCAweDYwLCAweEJDLCAweDdDLCAweERBLCAweDI5LCAweDA0LCAweDk0LAorICAgIDB4MTksIDB4RjcsIDB4RDgsIDB4NUUsIDB4OTksIDB4N0YsIDB4RUYsIDB4QTgsIDB4QkQsIDB4M0EsIDB4RTAsIDB4NkEsIDB4QjYsIDB4QTgsIDB4MDAsIDB4MTUsCisgICAgMHgyOSwgMHgwNCwgMHhGMSwgMHg0MSwgMHgzRiwgMHgyQiwgMHhGNywgMHg1OSwgMHgzRSwgMHg4RSwgMHhBQiwgMHg4RCwgMHg4NCwgMHgyNiwgMHgyRCwgMHhDMiwKKyAgICAweEFELCAweEE3LCAweDMzLCAweDZDLCAweDA4LCAweENBLCAweEI0LCAweDhBLCAweEY4LCAweDVFLCAweEQ3LCAweDZBLCAweDVCLCAweDkyLCAweENFLCAweDcwLAorICAgIDB4MjMsIDB4MDEsIDB4NTQsIDB4ODgsIDB4REIsIDB4RDcsIDB4RjUsIDB4MjQsIDB4RUQsIDB4QTgsIDB4NDksIDB4REIsIDB4NUMsIDB4NEMsIDB4MjUsIDB4RTEsCisgICAgMHhCQiwgMHhDNywgMHg1RSwgMHgwRCwgMHgwNSwgMHgwQiwgMHhEMCwgMHgyNiwgMHg0RiwgMHgxRCwgMHhFNCwgMHhENiwgMHhFQiwgMHgzOCwgMHgzMCwgMHhDNSwKKyAgICAweDNGLCAweDUwLCAweEIxLCAweDQ2LCAweDkxLCAweDAxLCAweDdBLCAweEUzLCAweDAxLCAweEQxLCAweDE3LCAweDI5LCAweDRCLCAweDU2LCAweDM0LCAweEFDLAorICAgIDB4NzIsIDB4QTAsIDB4QTUsIDB4MEMsIDB4QkIsIDB4NjksIDB4OTMsIDB4M0QsIDB4MzksIDB4RTQsIDB4OEEsIDB4OTQsIDB4MkMsIDB4RDksIDB4RDAsIDB4MjQsCisgICAgMHgyNCwgMHgxQywgMHg2MCwgMHhBOSwgMHg3OSwgMHhENiwgMHhGMiwgMHgzMywgMHhCRCwgMHhCMywgMHg3QSwgMHg2MSwgMHg1NSwgMHg3RiwgMHg2NiwgMHhFRiwKKyAgICAweEM1LCAweEM4LCAweEU3LCAweDYwLCAweEZDLCAweEE1LCAweEFGLCAweDQ0LCAweDM0LCAweDdFLCAweDMwLCAweDE3LCAweEM1LCAweEIxLCAweEM0LCAweDM1LAorICAgIDB4QzcsIDB4NjIsIDB4QkYsIDB4QTQsIDB4NkMsIDB4RDksIDB4RDIsIDB4ODYsIDB4RDcsIDB4RDcsIDB4NDgsIDB4NUMsIDB4OEEsIDB4NjcsIDB4NzYsIDB4RkYsCisgICAgMHhCRSwgMHgzNCwgMHg1QiwgMHg0RSwgMHgyMCwgMHhEOSwgMHg5RiwgMHhCOSwgMHhENCwgMHg5NCwgMHgzMCwgMHgyMiwgMHg2QiwgMHhBOSwgMHgwMSwgMHhCQywKKyAgICAweDdCLCAweEVGLCAweDM1LCAweEJELCAweDdELCAweDE4LCAweDY4LCAweDVCLCAweDFELCAweDRBLCAweEY1LCAweDExLCAweDU3LCAweDFELCAweEUzLCAweDY2LAorICAgIDB4OEMsIDB4QTgsIDB4NDAsIDB4RDksIDB4RkEsIDB4NTUsIDB4QjgsIDB4ODMsIDB4RTksIDB4MkMsIDB4REUsIDB4MEUsIDB4QkEsIDB4RTIsIDB4MTYsIDB4RUYsCisgICAgMHhBNiwgMHhFMywgMHg1RSwgMHhBNiwgMHhEOSwgMHgxRiwgMHgxNywgMHg5NywgMHhDRSwgMHg3OCwgMHhBQywgMHg4QSwgMHhBMCwgMHg1QywgMHg1MSwgMHgyRCwKKyAgICAweEY0LCAweERFLCAweENFLCAweDE0LCAweDU3LCAweEEwLCAweDNBLCAweDM2LCAweDBDLCAweEFCLCAweEY5LCAweEVCLCAweEMwLCAweDkxLCAweDU3LCAweEVELAorICAgIDB4MjEsIDB4M0QsIDB4MzksIDB4ODcsIDB4NjEsIDB4OTMsIDB4OEUsIDB4M0UsIDB4NTUsIDB4M0EsIDB4N0EsIDB4MkYsIDB4MUIsIDB4QTEsIDB4MDAsIDB4ODksCisgICAgMHhCNSwgMHhGNywgMHgxQywgMHhFMCwgMHgwOCwgMHg3NCwgMHgwMCwgMHhEOCwgMHg5QiwgMHg0QSwgMHg3NCwgMHgzNywgMHhFNiwgMHgyNCwgMHhEQiwgMHg3QiwKKyAgICAweEFFLCAweEE5LCAweEY4LCAweDkyLCAweDM1LCAweDQ0LCAweDNBLCAweDBCLCAweERCLCAweEI3LCAweEVELCAweDY1LCAweEFBLCAweDVGLCAweDdGLCAweEUzLAorICAgIDB4MzUsIDB4RDUsIDB4MkQsIDB4MjQsIDB4NzQsIDB4NTMsIDB4QTYsIDB4MUQsIDB4NTUsIDB4NjAsIDB4MUYsIDB4QjYsIDB4MjIsIDB4OUMsIDB4MTQsIDB4QkEsCisgICAgMHg2MywgMHg1MiwgMHg3RiwgMHg4OCwgMHhGOSwgMHg5MCwgMHhCQywgMHhFOSwgMHhEQiwgMHg4MCwgMHhCNSwgMHgwMCwgMHgyQiwgMHgxMiwgMHg1MCwgMHhFNCwKKyAgICAweDEwLCAweEM5LCAweEJCLCAweDE4LCAweDc2LCAweDA2LCAweDhBLCAweDkzLCAweEQzLCAweDBCLCAweEU0LCAweENCLCAweDJFLCAweDVDLCAweEEzLCAweDQyLAorICAgIDB4QzUsIDB4RkYsIDB4Q0YsIDB4OUQsIDB4NTMsIDB4RDEsIDB4NkIsIDB4RTcsIDB4MTAsIDB4N0QsIDB4OUYsIDB4M0MsIDB4QzMsIDB4RjksIDB4QjEsIDB4NUIsCisgICAgMHg4QSwgMHgxNSwgMHg1NiwgMHg2MywgMHhENSwgMHgyNywgMHg0MCwgMHgxRSwgMHgwMSwgMHgxQSwgMHhEQywgMHgwQywgMHg2QiwgMHg3RCwgMHg0MiwgMHg5MSwKKyAgICAweERELCAweDYzLCAweDlELCAweDFBLCAweEE5LCAweEE4LCAweEIwLCAweEM1LCAweEU0LCAweDRBLCAweDc5LCAweDRCLCAweDA0LCAweDI5LCAweERGLCAweDIyLAorICAgIDB4NTksIDB4QzEsIDB4RjMsIDB4QUIsIDB4MDksIDB4MDAsIDB4NTEsIDB4RUUsIDB4M0EsIDB4OTYsIDB4RTEsIDB4N0IsIDB4REIsIDB4QzIsIDB4MzYsIDB4NDEsCisgICAgMHg2MCwgMHhCMSwgMHg4NCwgMHg3NCwgMHg3NiwgMHhCNCwgMHhBMCwgMHhEMiwgMHgyRiwgMHg5NSwgMHg1QSwgMHg4OSwgMHg0MiwgMHhCNywgMHg1NywgMHhDRCwKKyAgICAweEZCLCAweDNFLCAweDVCLCAweDMzLCAweERDLCAweDBBLCAweDYyLCAweDE4LCAweDBGLCAweDk4LCAweDcxLCAweDlCLCAweEU2LCAweDc0LCAweDE5LCAweDM5LAorICAgIDB4RjYsIDB4RkYsIDB4NjksIDB4NEIsIDB4NUMsIDB4MjQsIDB4MTgsIDB4RjksIDB4M0EsIDB4RDUsIDB4NzAsIDB4MUYsIDB4N0IsIDB4NUQsIDB4QUMsIDB4MDEsCisgICAgMHhFOSwgMHhGRSwgMHhDMiwgMHg5RSwgMHhCNSwgMHgyOCwgMHhCMiwgMHhGRiwgMHg1QSwgMHhDQiwgMHhBMiwgMHgxQSwgMHhGMiwgMHhFQSwgMHg3RCwgMHhBMCwKKyAgICAweDdBLCAweENDLCAweDg5LCAweEVCLCAweDBBLCAweDFDLCAweDgxLCAweDJCLCAweDhGLCAweEYzLCAweDJELCAweEY1LCAweDY3LCAweDU4LCAweEY5LCAweDEwLAorICAgIDB4M0EsIDB4OEYsIDB4OUUsIDB4MEEsIDB4MDQsIDB4QUQsIDB4N0YsIDB4QjIsIDB4MkQsIDB4Q0IsIDB4Q0MsIDB4M0QsIDB4ODQsIDB4MzgsIDB4NDYsIDB4MUIsCisgICAgMHg5QSwgMHhFMSwgMHhBQSwgMHhCMiwgMHg3RSwgMHhBNywgMHhGMywgMHg1RSwgMHg0MywgMHg3QiwgMHg2NywgMHg3RiwgMHhDOCwgMHgwRiwgMHg0NSwgMHhDMCwKKyAgICAweEI4LCAweEVFLCAweEU2LCAweDY4LCAweDE2LCAweDFFLCAweEJGLCAweDE0LCAweEE1LCAweEQxLCAweERBLCAweDEyLCAweDdGLCAweDQyLCAweDNCLCAweDE4LAorICAgIDB4RDMsIDB4ODUsIDB4OEEsIDB4RUIsIDB4MkEsIDB4NDcsIDB4Q0YsIDB4RUIsIDB4ODUsIDB4RkIsIDB4QTUsIDB4MTAsIDB4OTgsIDB4NEMsIDB4NTYsIDB4NEIsCisgICAgMHg2MywgMHg4QSwgMHg4NiwgMHhEOSwgMHg5OCwgMHgzNiwgMHhCNSwgMHgyQiwgMHg0QSwgMHhBMSwgMHhDOSwgMHgyQiwgMHg3RiwgMHhGOSwgMHhDOSwgMHgyOSwKKyAgICAweDlDLCAweDkwLCAweEZFLCAweDU4LCAweDJCLCAweDg1LCAweEQ4LCAweDAxLCAweDkzLCAweDBFLCAweDJBLCAweDVCLCAweDBFLCAweENBLCAweEQ2LCAweEI2LAorICAgIDB4OEYsIDB4RTEsIDB4NDksIDB4OUMsIDB4NDksIDB4RUUsIDB4ODMsIDB4QUQsIDB4MjgsIDB4MzMsIDB4OTQsIDB4RkIsIDB4QTksIDB4MkIsIDB4NDcsIDB4MzUsCisgICAgMHhDRiwgMHhCRCwgMHgxRiwgMHgwNiwgMHhGQiwgMHg5RSwgMHg3MCwgMHhBNCwgMHhFQywgMHgyNiwgMHg3OSwgMHgzNiwgMHgzRiwgMHg2NywgMHhDRiwgMHg3MSwKKyAgICAweDYxLCAweDAwLCAweDM1LCAweEQ4LCAweEIyLCAweDNCLCAweDAzLCAweDAyLCAweEQ3LCAweDgwLCAweDY5LCAweEUzLCAweDIyLCAweDVGLCAweDU3LCAweEQ2LAorICAgIDB4MEEsIDB4MTIsIDB4NzcsIDB4QkIsIDB4NTEsIDB4OTMsIDB4QUMsIDB4QkYsIDB4OEEsIDB4REMsIDB4ODgsIDB4NDgsIDB4NzcsIDB4NUYsIDB4RDksIDB4NDAsCisgICAgMHgwMSwgMHg5MywgMHg4MywgMHhBRCwgMHg3MSwgMHgzMiwgMHhGQSwgMHhGOCwgMHhGNywgMHgxRCwgMHg4MSwgMHhFMiwgMHg2QiwgMHhCOSwgMHgzOSwgMHhFMywKKyAgICAweEI3LCAweDRDLCAweDIyLCAweEVBLCAweDM4LCAweDFCLCAweEY1LCAweDAzLCAweDlELCAweEJDLCAweDVBLCAweDgxLCAweEE1LCAweDg3LCAweEI4LCAweDhELAorICAgIDB4OTEsIDB4NTksIDB4QTgsIDB4QkUsIDB4QjAsIDB4NDcsIDB4NjgsIDB4MTQsIDB4NzAsIDB4QzIsIDB4RTAsIDB4NjUsIDB4QkEsIDB4NEIsIDB4RjQsIDB4MTgsCisgICAgMHg3RSwgMHhERCwgMHhERCwgMHg2QiwgMHhFMiwgMHhFMSwgMHg5NSwgMHgxNCwgMHhBMCwgMHgzRSwgMHgyNiwgMHhBNSwgMHg0MywgMHg1NCwgMHg1MSwgMHhGRSwKKyAgICAweDI2LCAweDI0LCAweDkwLCAweEEzLCAweDMyLCAweEIzLCAweEU2LCAweEI0LCAweDhELCAweEYwLCAweDdBLCAweDc3LCAweDc2LCAweDJFLCAweEUxLCAweDBCLAorICAgIDB4MzIsIDB4NDQsIDB4N0IsIDB4NUYsIDB4NkIsIDB4M0YsIDB4M0MsIDB4MUUsIDB4MDMsIDB4MEMsIDB4NDksIDB4NkUsIDB4MjIsIDB4NUIsIDB4MTgsIDB4NUYsCisgICAgMHg0OSwgMHg3MiwgMHhEQSwgMHgzRSwgMHhCNCwgMHhCOCwgMHhBNCwgMHhFNCwgMHhCOSwgMHhFRCwgMHhBQSwgMHhDNiwgMHhBQiwgMHhCMSwgMHg2OSwgMHg4MCwKKyAgICAweDU1LCAweENELCAweDlDLCAweERGLCAweDAzLCAweEMxLCAweDI0LCAweEVDLCAweEE3LCAweEExLCAweDhDLCAweDE1LCAweDZDLCAweDFCLCAweDNCLCAweEJBLAorICAgIDB4QTUsIDB4Q0YsIDB4REYsIDB4N0IsIDB4MzgsIDB4ODEsIDB4REYsIDB4NDAsIDB4RjEsIDB4QTQsIDB4MDMsIDB4N0IsIDB4NTcsIDB4QUQsIDB4NzUsIDB4OTYsCisgICAgMHhFOSwgMHhDMiwgMHhFRSwgMHg3NiwgMHg5MCwgMHg4MSwgMHgzRSwgMHhFOCwgMHhEMywgMHgyMywgMHg5QiwgMHg5NiwgMHgzRSwgMHhGNiwgMHhGOCwgMHhGRSwKKyAgICAweEM1LCAweDUyLCAweEEzLCAweEJCLCAweDY4LCAweDk4LCAweEZGLCAweDkyLCAweEU3LCAweEVELCAweEMxLCAweERELCAweEY4LCAweDZDLCAweEM1LCAweEJDLAorICAgIDB4QzQsIDB4NkEsIDB4NTAsIDB4NTMsIDB4OTUsIDB4MjgsIDB4MUQsIDB4OEQsIDB4ODQsIDB4OTAsIDB4RUUsIDB4QjAsIDB4MjcsIDB4NEMsIDB4RTksIDB4N0MsCisgICAgMHgyRSwgMHg0NiwgMHg5NCwgMHhGNSwgMHhFMywgMHhCQiwgMHhFQiwgMHg5RiwgMHg2RSwgMHhEMSwgMHg2QiwgMHg2RiwgMHg4MywgMHhDQiwgMHgyQSwgMHg1QSwKKyAgICAweDIyLCAweEFDLCAweDY3LCAweEU0LCAweDVDLCAweEY5LCAweDU3LCAweDIwLCAweDQyLCAweEE3LCAweEE2LCAweDg5LCAweDIyLCAweDA4LCAweDY4LCAweDkyLAorICAgIDB4NjQsIDB4MUIsIDB4NEIsIDB4ODIsIDB4RDMsIDB4NjIsIDB4RTYsIDB4ODAsIDB4QUMsIDB4ODQsIDB4MzYsIDB4MTksIDB4MjQsIDB4NTUsIDB4MDIsIDB4NEMsCisgICAgMHg3OSwgMHgzMiwgMHhBRCwgMHgyMiwgMHhGNCwgMHhFMCwgMHg0NiwgMHg3QiwgMHg4QiwgMHg5NiwgMHg5QSwgMHhFQywgMHhDNywgMHg2NywgMHhBMSwgMHgyMSwKKyAgICAweDhGLCAweDVDLCAweDQ4LCAweEZDLCAweDUyLCAweEM3LCAweDMzLCAweEE4LCAweDIyLCAweEEwLCAweDNELCAweDcyLCAweDQ0LCAweDdFLCAweEVCLCAweDhGLAorICAgIDB4MTksIDB4QkUsIDB4NTQsIDB4OTgsIDB4OTYsIDB4OTEsIDB4QTIsIDB4Q0EsIDB4NzIsIDB4QTYsIDB4QUUsIDB4NUUsIDB4QTgsIDB4QTYsIDB4QzksIDB4MTQsCisgICAgMHhCMywgMHgwOSwgMHhBNCwgMHgyQiwgMHgzQiwgMHhGOCwgMHgxMywgMHgxMywgMHgxRCwgMHg1MSwgMHhEQywgMHg5MywgMHgzNywgMHgxQiwgMHhGQywgMHgxOCwKKyAgICAweEY5LCAweEE0LCAweEZBLCAweDU3LCAweDNFLCAweDhELCAweEY3LCAweEYwLCAweEQ4LCAweEJGLCAweDhELCAweDgzLCAweDNGLCAweDlCLCAweDVBLCAweDczLAorICAgIDB4NjMsIDB4ODIsIDB4NTYsIDB4OTQsIDB4MkUsIDB4MDIsIDB4NjIsIDB4NjEsIDB4MDEsIDB4M0MsIDB4MjAsIDB4ODYsIDB4NDQsIDB4Q0EsIDB4RjgsIDB4QjcsCisgICAgMHgyRCwgMHhEQSwgMHg5OSwgMHgyNSwgMHhENywgMHgxNiwgMHhFMSwgMHhFQiwgMHg3MSwgMHhFQiwgMHgxNiwgMHhCQywgMHhFQiwgMHgyRiwgMHg5MywgMHg2RCwKKyAgICAweDlGLCAweEQyLCAweEQwLCAweEU4LCAweEQ0LCAweERELCAweDcwLCAweDhBLCAweDJFLCAweDgyLCAweEY2LCAweDIzLCAweEYzLCAweDExLCAweDUzLCAweEM1LAorICAgIDB4RTMsIDB4ODcsIDB4MDYsIDB4RjksIDB4RTYsIDB4MEEsIDB4RUUsIDB4QkEsIDB4N0IsIDB4MkMsIDB4MDMsIDB4QkIsIDB4NTksIDB4NjAsIDB4MUUsIDB4RDIsCisgICAgMHg1NSwgMHg0MywgMHhFNiwgMHhDMSwgMHgwQywgMHg5RSwgMHg4QSwgMHgzQSwgMHg2OSwgMHhFQiwgMHgwRiwgMHg5RSwgMHgzNCwgMHgzRCwgMHg0OCwgMHg1RCwKKyAgICAweEI0LCAweEMxLCAweEMwLCAweEVGLCAweDUwLCAweDBFLCAweEM2LCAweDRBLCAweEZCLCAweEFDLCAweDVGLCAweDA1LCAweDAzLCAweDM5LCAweERFLCAweDNDLAorICAgIDB4MDksIDB4RjQsIDB4MjksIDB4QzksIDB4NjIsIDB4OTAsIDB4RkIsIDB4MEYsIDB4NzgsIDB4NjYsIDB4MzEsIDB4MDYsIDB4MkQsIDB4RTQsIDB4MUQsIDB4NEEsCisgICAgMHg4MCwgMHhGMCwgMHg5RSwgMHgzMywgMHhCRSwgMHg4OSwgMHgzNSwgMHg4RiwgMHg1RCwgMHhDMCwgMHg4NiwgMHgwQiwgMHhDRiwgMHg0QiwgMHhFMCwgMHhGOCwKKyAgICAweEVGLCAweDQzLCAweDY5LCAweDNELCAweDBELCAweEY3LCAweDc0LCAweEMwLCAweDQyLCAweDNBLCAweDg3LCAweDQ0LCAweDFELCAweEU0LCAweDE1LCAweDgyLAorICAgIDB4NTQsIDB4MTMsIDB4Q0IsIDB4MDUsIDB4RkQsIDB4MUQsIDB4RTEsIDB4MzQsIDB4OTcsIDB4OTEsIDB4RkIsIDB4NEIsIDB4OUYsIDB4QjgsIDB4NDIsIDB4QUMsCisgICAgMHg5QywgMHg5NywgMHgwMSwgMHgyNiwgMHgzOCwgMHg3NiwgMHhDNSwgMHg5NCwgMHhDRiwgMHhBMCwgMHhBMywgMHgxOCwgMHgxRCwgMHg0QywgMHgxMCwgMHg2MywKKyAgICAweEVFLCAweDIwLCAweDZBLCAweEFELCAweEZELCAweDg1LCAweENGLCAweDAwLCAweDlFLCAweDNELCAweDYzLCAweEU5LCAweDdGLCAweDczLCAweDMwLCAweDY1LAorICAgIDB4MzksIDB4RjQsIDB4NUMsIDB4MjUsIDB4RTUsIDB4NjQsIDB4ODAsIDB4RTMsIDB4NDIsIDB4MDQsIDB4Q0UsIDB4MjUsIDB4Q0IsIDB4NEIsIDB4N0MsIDB4NDcsCisgICAgMHgwOSwgMHg3NiwgMHgxQiwgMHg5MiwgMHhGQSwgMHgxRSwgMHg1MCwgMHg2NiwgMHg4NywgMHgyNCwgMHg5QiwgMHgxMiwgMHg3NywgMHg5QiwgMHhDMCwgMHg2RSwKKyAgICAweDI2LCAweEM4LCAweDI5LCAweDExLCAweDI5LCAweDZFLCAweEVDLCAweDEzLCAweDgzLCAweDdCLCAweEQ0LCAweDczLCAweERFLCAweDg2LCAweDAwLCAweDA4LAorICAgIDB4RDAsIDB4RDUsIDB4QTEsIDB4RDAsIDB4Q0IsIDB4QkYsIDB4MDUsIDB4MUMsIDB4QkMsIDB4QkQsIDB4NkYsIDB4NjUsIDB4NjksIDB4NDUsIDB4MjIsIDB4RkYsCisgICAgMHhCRCwgMHgwRiwgMHgwMiwgMHhDMCwgMHhGQywgMHg5QiwgMHg2OCwgMHg0QSwgMHhDMCwgMHg2MCwgMHhBNCwgMHg5RSwgMHg0MCwgMHg1MCwgMHhDNSwgMHhEMiwKKyAgICAweDc2LCAweDA4LCAweDdFLCAweDU4LCAweEI3LCAweEUyLCAweDRGLCAweEEyLCAweENCLCAweDBCLCAweEEyLCAweDU2LCAweDEwLCAweEFGLCAweDQwLCAweEE5LAorICAgIDB4RjEsIDB4ODksIDB4NzcsIDB4RDYsIDB4RTgsIDB4RDUsIDB4MDcsIDB4OUEsIDB4NzcsIDB4NEQsIDB4NDQsIDB4RkUsIDB4MTgsIDB4NzEsIDB4Q0MsIDB4NEQsCisgICAgMHgxQSwgMHgyMCwgMHg1QywgMHgxQiwgMHg0NCwgMHg3QiwgMHgxRSwgMHhCNCwgMHgyNSwgMHgyQywgMHhERiwgMHhFNSwgMHg0NywgMHhENCwgMHhBMCwgMHhDNywKKyAgICAweEIxLCAweDJFLCAweERBLCAweEZBLCAweEIxLCAweDc2LCAweEJCLCAweEZELCAweEEwLCAweDAyLCAweEVCLCAweDRELCAweDA0LCAweDAwLCAweENBLCAweEFGLAorICAgIDB4NDUsIDB4ODMsIDB4NTgsIDB4QzYsIDB4NTIsIDB4NzEsIDB4NUEsIDB4M0QsIDB4M0MsIDB4RjcsIDB4RjIsIDB4MjksIDB4QTYsIDB4QTIsIDB4QTQsIDB4RjMsCisgICAgMHhDMCwgMHgzMCwgMHhFMCwgMHg2MSwgMHhCMiwgMHg1NSwgMHg3OCwgMHgyQywgMHg1NywgMHg4NCwgMHhCNCwgMHgzMywgMHhCMywgMHhGOCwgMHhEOSwgMHg1NywKKyAgICAweDgxLCAweDM3LCAweEE3LCAweEMxLCAweDE0LCAweDNGLCAweDFDLCAweDlCLCAweDBCLCAweDQ0LCAweDk5LCAweERCLCAweDdDLCAweDBFLCAweDg3LCAweEYyLAorICAgIDB4QUMsIDB4QTYsIDB4NzEsIDB4RkQsIDB4QzksIDB4MjksIDB4MkUsIDB4M0MsIDB4NjcsIDB4MkMsIDB4N0YsIDB4QjIsIDB4RjcsIDB4Q0IsIDB4MDcsIDB4ODIsCisgICAgMHg1NCwgMHhDOCwgMHg5MiwgMHgxQSwgMHg5NCwgMHhFQiwgMHg0NiwgMHg5NiwgMHg3RCwgMHhCQiwgMHgwOCwgMHg3MCwgMHg4QywgMHg4RSwgMHg1RiwgMHg3RiwKKyAgICAweDJGLCAweEFGLCAweEFBLCAweEYzLCAweDZBLCAweDJCLCAweEE5LCAweEY4LCAweERDLCAweDkyLCAweDIwLCAweDlGLCAweEM1LCAweEZDLCAweDE4LCAweEVELAorICAgIDB4MDMsIDB4ODUsIDB4QjEsIDB4ODYsIDB4RjIsIDB4NzQsIDB4OTMsIDB4ODEsIDB4NUQsIDB4MDcsIDB4NDgsIDB4RTQsIDB4RUQsIDB4REMsIDB4NjcsIDB4NEYsCisgICAgMHgxMiwgMHhBMCwgMHgzQiwgMHgyQSwgMHg4NSwgMHg0QywgMHgwNCwgMHhDNywgMHhGQSwgMHg4NywgMHhDMSwgMHgyNSwgMHgyMCwgMHg5NiwgMHgxNywgMHg1RCwKKyAgICAweDg5LCAweEM0LCAweDBFLCAweDM2LCAweDlCLCAweEE2LCAweDkyLCAweDcwLCAweEZDLCAweEY1LCAweDFBLCAweDVDLCAweEFELCAweEVELCAweEQ4LCAweEZELAorICAgIDB4REQsIDB4NjcsIDB4QzYsIDB4M0EsIDB4RjAsIDB4NUIsIDB4MTYsIDB4REYsIDB4NEUsIDB4M0YsIDB4QkYsIDB4RjksIDB4NDcsIDB4OUYsIDB4MDEsIDB4NDcsCisgICAgMHg3MywgMHhFMSwgMHg1QSwgMHgzOCwgMHg3RSwgMHhDMCwgMHhBOSwgMHgxOCwgMHg3MCwgMHgwMCwgMHg4OCwgMHhGRiwgMHgyMSwgMHgyQiwgMHgxMiwgMHhGNCwKKyAgICAweEM1LCAweDRFLCAweEM2LCAweDgwLCAweDdELCAweEM0LCAweDExLCAweEI5LCAweEMzLCAweEY5LCAweDVDLCAweDY5LCAweDJBLCAweDYwLCAweDZGLCAweEUwLAorICAgIDB4QzYsIDB4NzksIDB4M0QsIDB4MTUsIDB4QzIsIDB4RTcsIDB4MjMsIDB4REEsIDB4RkIsIDB4OUIsIDB4QUIsIDB4MTMsIDB4MUQsIDB4NkQsIDB4QkQsIDB4QzIsCisgICAgMHg2RiwgMHgzRCwgMHhGNywgMHg0NCwgMHhCRCwgMHg1MSwgMHhGOCwgMHhBNiwgMHhEMSwgMHg0NywgMHg3RCwgMHg4QywgMHhBOCwgMHg1MiwgMHg1NiwgMHhGNywKKyAgICAweDAxLCAweDA0LCAweEQ1LCAweDIyLCAweEU4LCAweDE2LCAweDIxLCAweDYxLCAweDI3LCAweEM4LCAweEUyLCAweEY5LCAweEExLCAweDU1LCAweDQ0LCAweDVGLAorICAgIDB4OEYsIDB4QzMsIDB4MjIsIDB4MjIsIDB4M0EsIDB4Q0EsIDB4MkIsIDB4MDUsIDB4MzEsIDB4Q0YsIDB4ODgsIDB4OEUsIDB4M0IsIDB4QjAsIDB4OTksIDB4MUMsCisgICAgMHhBQSwgMHg5NiwgMHhGOSwgMHhEQiwgMHg0MSwgMHg5MSwgMHg2NCwgMHgwRSwgMHhFMSwgMHhGMSwgMHhFMCwgMHhCMCwgMHg1MCwgMHg2MiwgMHg1RCwgMHg2QiwKKyAgICAweDM2LCAweEE3LCAweDU5LCAweEQ5LCAweDJCLCAweDc3LCAweDM2LCAweEEyLCAweDE4LCAweEY0LCAweDY3LCAweDc0LCAweEI4LCAweDA5LCAweDg4LCAweDkxLAorICAgIDB4MzgsIDB4OUEsIDB4MDEsIDB4N0QsIDB4REUsIDB4REYsIDB4QzMsIDB4QkIsIDB4MDgsIDB4NTksIDB4RTksIDB4QUQsIDB4QTAsIDB4RUUsIDB4QzAsIDB4NEIsCisgICAgMHhDMiwgMHhCQywgMHhCMCwgMHhBQiwgMHg0QywgMHgzMiwgMHhDQiwgMHg5MiwgMHhDOSwgMHg5NywgMHgwRCwgMHhDRiwgMHg0MywgMHg4MywgMHg5RCwgMHhFRCwKKyAgICAweDQwLCAweDk4LCAweDhFLCAweDFCLCAweDJELCAweDY3LCAweDY4LCAweDdDLCAweDY4LCAweDhBLCAweDM4LCAweDcxLCAweEM4LCAweENCLCAweDgxLCAweDMyLAorICAgIDB4OTUsIDB4ODYsIDB4OUUsIDB4NzcsIDB4NUYsIDB4OUUsIDB4ODUsIDB4RUUsIDB4NjMsIDB4QzYsIDB4NDEsIDB4NDksIDB4RDIsIDB4OTgsIDB4QjAsIDB4NTIsCisgICAgMHg0MSwgMHhERSwgMHg1OSwgMHg1NCwgMHg0MSwgMHg2NCwgMHg2RiwgMHhFNSwgMHgxRSwgMHg3MywgMHgxNSwgMHhBNiwgMHgyMSwgMHg1MSwgMHg0QSwgMHg2NiwKKyAgICAweEFDLCAweEIzLCAweDBCLCAweDY5LCAweDRDLCAweEEzLCAweEU1LCAweEZBLCAweEU1LCAweEUzLCAweEE5LCAweEY1LCAweDlBLCAweDNBLCAweDU0LCAweDA0LAorICAgIDB4ODIsIDB4ODksIDB4RjAsIDB4MzMsIDB4OEYsIDB4NUMsIDB4MEUsIDB4MUUsIDB4ODAsIDB4MTcsIDB4OEEsIDB4MEUsIDB4MkYsIDB4RjgsIDB4MkQsIDB4RjMsCisgICAgMHg4NCwgMHhERSwgMHhBNywgMHg3NiwgMHgxRiwgMHg0QSwgMHgzOSwgMHhDQSwgMHg2QywgMHg4RSwgMHhBNiwgMHgyNywgMHg0QiwgMHg4QywgMHhDOCwgMHhFMywKKyAgICAweEZGLCAweDYwLCAweEQ5LCAweEUwLCAweEMyLCAweDkwLCAweEQ3LCAweDhFLCAweDI4LCAweEE0LCAweEQ0LCAweEM5LCAweEE5LCAweDA1LCAweDI3LCAweEQxLAorICAgIDB4N0QsIDB4MEMsIDB4RUEsIDB4OUYsIDB4NEIsIDB4NDUsIDB4QzUsIDB4MzQsIDB4REEsIDB4RTQsIDB4QUMsIDB4NTEsIDB4MjMsIDB4Q0MsIDB4QjAsIDB4NzYsCisgICAgMHg0MSwgMHg5MSwgMHg5MiwgMHg2QiwgMHg3RSwgMHgxOSwgMHhERCwgMHg3QywgMHg4RCwgMHgzRCwgMHhCOSwgMHhBMSwgMHhCMywgMHg3NywgMHhFQiwgMHhENSwKKyAgICAweDYyLCAweEFGLCAweDQ1LCAweDlDLCAweEJELCAweDNCLCAweEQ0LCAweDg0LCAweEFFLCAweEE3LCAweDhELCAweDNFLCAweDQ3LCAweEUxLCAweEZCLCAweDZDLAorICAgIDB4RDUsIDB4MjcsIDB4QzYsIDB4MzksIDB4MUYsIDB4NzQsIDB4NUMsIDB4NEQsIDB4OTUsIDB4RTQsIDB4N0EsIDB4NzksIDB4QTksIDB4OUQsIDB4MjksIDB4MDIsCisgICAgMHhDMCwgMHhDOCwgMHhBMSwgMHgzMywgMHhCOCwgMHhERiwgMHgyQSwgMHgyRSwgMHhEQywgMHg2RiwgMHg5OSwgMHg5QywgMHg0OSwgMHhBMywgMHg0QywgMHgyQSwKKyAgICAweDJBLCAweEZBLCAweDRCLCAweDU2LCAweEU4LCAweDg0LCAweDIxLCAweEJFLCAweDZBLCAweERBLCAweDZCLCAweDcxLCAweDk4LCAweDIwLCAweDUyLCAweDMyLAorICAgIDB4RjMsIDB4QTksIDB4RkEsIDB4MzYsIDB4QzEsIDB4NDIsIDB4NTgsIDB4M0IsIDB4REQsIDB4NUYsIDB4MDUsIDB4NzMsIDB4NUYsIDB4M0EsIDB4RUIsIDB4QzksCisgICAgMHg3QSwgMHg4QSwgMHg4NCwgMHhDMSwgMHhERSwgMHg1MCwgMHg2NywgMHgxQywgMHg3QiwgMHg5OCwgMHhDRSwgMHhEOSwgMHg5QywgMHgxMiwgMHg4MSwgMHg5OSwKKyAgICAweEE1LCAweDZCLCAweDI3LCAweDhFLCAweDMyLCAweDQzLCAweDEyLCAweEM5LCAweEUxLCAweDdBLCAweDlBLCAweDRELCAweEY2LCAweDM2LCAweEFFLCAweEY4LAorICAgIDB4OTksIDB4NEEsIDB4QzIsIDB4OTAsIDB4NzcsIDB4NzksIDB4RUYsIDB4MTAsIDB4MUEsIDB4NEQsIDB4RDYsIDB4NzEsIDB4NkYsIDB4RkIsIDB4QjgsIDB4ODMsCisgICAgMHg0RSwgMHgzRiwgMHhGMywgMHhGOSwgMHhFNSwgMHhFQiwgMHhFQiwgMHhGOSwgMHg2RSwgMHgxQywgMHg4OSwgMHg0NywgMHg1MiwgMHhFRCwgMHgzRiwgMHg0RCwKKyAgICAweEVGLCAweDI2LCAweEE3LCAweDNDLCAweDRCLCAweDQ2LCAweDlBLCAweDMyLCAweDFFLCAweDgwLCAweDcwLCAweEJDLCAweDVDLCAweEYyLCAweDgwLCAweDZFLAorICAgIDB4NjIsIDB4N0MsIDB4QUUsIDB4ODAsIDB4QkIsIDB4ODEsIDB4ODIsIDB4MjcsIDB4Q0QsIDB4QTAsIDB4ODYsIDB4MzQsIDB4RDAsIDB4ODAsIDB4MUUsIDB4NDIsCisgICAgMHhGRSwgMHgxQiwgMHhBNCwgMHg0MiwgMHhDMCwgMHg2NywgMHg0RCwgMHhCQiwgMHhGQywgMHgwOCwgMHgyMCwgMHgwMywgMHg2RCwgMHg2MiwgMHgyRiwgMHhGMiwKKyAgICAweDBDLCAweDU3LCAweDc3LCAweDZBLCAweEMxLCAweDUxLCAweDY2LCAweDc0LCAweDhELCAweDk0LCAweEUxLCAweEY5LCAweEY2LCAweEM1LCAweDc4LCAweENELAorICAgIDB4Q0MsIDB4NjgsIDB4QzYsIDB4NTksIDB4MkUsIDB4M0MsIDB4OTQsIDB4NDksIDB4NzYsIDB4NzQsIDB4RDgsIDB4NjcsIDB4NDEsIDB4RjYsIDB4MzAsIDB4RjIsCisgICAgMHg4MywgMHhGMSwgMHhBOCwgMHgzMSwgMHg3QiwgMHg4NiwgMHg2NSwgMHhFRCwgMHg1RiwgMHhEMywgMHhGMywgMHg5QSwgMHhGMywgMHg3QywgMHg1NywgMHgxMywKKyAgICAweDU3LCAweDJDLCAweDAwLCAweDQ5LCAweEI2LCAweDk2LCAweEI1LCAweDBCLCAweDEzLCAweEU2LCAweDJCLCAweDE3LCAweEZBLCAweDY2LCAweEZGLCAweDQwLAorICAgIDB4RjksIDB4NTUsIDB4RjMsIDB4NjEsIDB4QjIsIDB4ODUsIDB4QTYsIDB4QTcsIDB4QzMsIDB4OTUsIDB4RkMsIDB4NjksIDB4NDgsIDB4MTYsIDB4OEUsIDB4NjEsCisgICAgMHg4NCwgMHg2MSwgMHhDQiwgMHhGNSwgMHg1QywgMHg1MSwgMHg4RSwgMHgyMiwgMHhDMSwgMHgyNiwgMHgzRiwgMHg2NSwgMHg1OSwgMHhEMiwgMHgwNSwgMHgyMywKKyAgICAweEFCLCAweEZCLCAweDE4LCAweDA5LCAweEZGLCAweDkxLCAweDE1LCAweDIxLCAweDNFLCAweEZELCAweEEzLCAweDc0LCAweDMzLCAweEI0LCAweDMyLCAweDQ5LAorICAgIDB4QTksIDB4M0QsIDB4NzMsIDB4NDYsIDB4QTYsIDB4RjIsIDB4MjAsIDB4NEYsIDB4OTMsIDB4RDgsIDB4ODMsIDB4QzAsIDB4QTEsIDB4OTAsIDB4MjgsIDB4QkQsCisgICAgMHg1OCwgMHg5NCwgMHg1MywgMHg1QSwgMHhGMSwgMHgxRiwgMHhDNywgMHg3NCwgMHg5RSwgMHg2QSwgMHg2QSwgMHhEMywgMHgxMSwgMHg3QSwgMHgwMiwgMHgwNiwKKyAgICAweDFGLCAweDlDLCAweDg0LCAweDQzLCAweEFFLCAweEUwLCAweDkyLCAweDM2LCAweEQxLCAweDkzLCAweDgxLCAweDI2LCAweERDLCAweDMxLCAweDZDLCAweDBBLAorICAgIDB4RDcsIDB4NUIsIDB4MzksIDB4RjIsIDB4OEIsIDB4RDMsIDB4QUYsIDB4RDksIDB4OUQsIDB4QjIsIDB4QkIsIDB4MkIsIDB4RkMsIDB4MEQsIDB4MEIsIDB4N0EsCisgICAgMHg3MSwgMHhFQSwgMHg1RSwgMHhDOSwgMHhDNSwgMHg3OCwgMHhERiwgMHhCNCwgMHg2NiwgMHhBQSwgMHhCOCwgMHg0OSwgMHgzRSwgMHgzQywgMHg5RCwgMHg2OSwKKyAgICAweEExLCAweEMyLCAweEVELCAweDI0LCAweENFLCAweENCLCAweDFELCAweDY2LCAweDA1LCAweDZCLCAweEFGLCAweDM4LCAweDBFLCAweEUyLCAweDUyLCAweDI2LAorICAgIDB4MzYsIDB4OUEsIDB4NzgsIDB4Q0MsIDB4QjEsIDB4RjUsIDB4NjcsIDB4QzksIDB4QTAsIDB4NEMsIDB4NDcsIDB4ODIsIDB4QzAsIDB4OTQsIDB4RDUsIDB4NTcsCisgICAgMHg2MywgMHhENSwgMHhBNiwgMHg3RSwgMHg3QSwgMHg2OCwgMHhDQSwgMHg2MiwgMHhBMSwgMHg1RCwgMHhENSwgMHgyMSwgMHg3RCwgMHg4NCwgMHgxRSwgMHhBMSwKKyAgICAweEI1LCAweDNBLCAweEUzLCAweEQ0LCAweDA2LCAweDlCLCAweEVDLCAweEVELCAweDE5LCAweEUzLCAweEQzLCAweENBLCAweDkwLCAweDhDLCAweEI3LCAweDZFLAorICAgIDB4REMsIDB4MUIsIDB4NTgsIDB4RUQsIDB4M0IsIDB4MUIsIDB4NTUsIDB4RTksIDB4QUEsIDB4RUQsIDB4QjksIDB4MzYsIDB4NzQsIDB4NDYsIDB4MjQsIDB4QTgsCisgICAgMHgzMCwgMHgzMiwgMHhFOSwgMHgxQywgMHg1NiwgMHhGRSwgMHg4MCwgMHhGNiwgMHg2MiwgMHg0NCwgMHg5OSwgMHgyMiwgMHg4QywgMHhFQiwgMHgzMywgMHg4RCwKKyAgICAweDZGLCAweEIyLCAweEY5LCAweEFBLCAweDRELCAweDg1LCAweDY0LCAweDlGLCAweENFLCAweDlBLCAweDAyLCAweDk4LCAweDMwLCAweDk0LCAweDVGLCAweDk1LAorICAgIDB4RDQsIDB4RDksIDB4REUsIDB4QzEsIDB4M0IsIDB4QzIsIDB4NzQsIDB4ODQsIDB4RTQsIDB4MEMsIDB4M0YsIDB4QjYsIDB4RkMsIDB4NUUsIDB4Q0EsIDB4MjIsCisgICAgMHhGRSwgMHhFRCwgMHhBQywgMHg1OSwgMHgwOCwgMHhDRCwgMHg5MCwgMHg1QSwgMHhDQiwgMHgxMiwgMHg4RSwgMHhFNCwgMHhENiwgMHg4NywgMHgzQiwgMHg3NSwKKyAgICAweEI4LCAweEI4LCAweDhGLCAweEZDLCAweDIwLCAweDVGLCAweDFCLCAweDkwLCAweENGLCAweDYwLCAweEYzLCAweEYyLCAweEJFLCAweDg2LCAweEY0LCAweDQ3LAorICAgIDB4NTAsIDB4MTMsIDB4Q0UsIDB4RjcsIDB4QkQsIDB4MUIsIDB4NTEsIDB4RTUsIDB4NzUsIDB4MkEsIDB4REIsIDB4MjcsIDB4QTQsIDB4MzAsIDB4RjQsIDB4RTUsCisgICAgMHg3NSwgMHhDMiwgMHgyRiwgMHg2NSwgMHhDOCwgMHhBRiwgMHg2NSwgMHhGRSwgMHg4MywgMHg4MiwgMHgxRCwgMHgzQiwgMHhBNiwgMHhBMywgMHg2MiwgMHhFNywKKyAgICAweDc2LCAweEQxLCAweDAzLCAweDgyLCAweDYwLCAweEI2LCAweDUwLCAweEU1LCAweEUwLCAweEYxLCAweEI2LCAweDFGLCAweDFDLCAweEZFLCAweDAzLCAweDVGLAorICAgIDB4MzMsIDB4MTMsIDB4RkEsIDB4MDEsIDB4RjQsIDB4NTYsIDB4NDUsIDB4QjEsIDB4RDksIDB4NTgsIDB4OEQsIDB4QzQsIDB4RTQsIDB4QUUsIDB4NjgsIDB4RDEsCisgICAgMHg1RCwgMHhBMCwgMHg0NywgMHg0QiwgMHgzQiwgMHhDRiwgMHg2MCwgMHg5NCwgMHhCRSwgMHg4QiwgMHhGQywgMHhDOCwgMHg4RSwgMHgyQSwgMHgxQywgMHhERiwKKyAgICAweDA5LCAweDEwLCAweDI2LCAweDkyLCAweDMwLCAweDlELCAweDE1LCAweDY3LCAweDM1LCAweEQxLCAweEQ5LCAweEFELCAweDA5LCAweDUwLCAweDAyLCAweEE5LAorICAgIDB4QzcsIDB4RDUsIDB4Q0EsIDB4OEUsIDB4ODgsIDB4RDcsIDB4MTcsIDB4NTAsIDB4MEIsIDB4NzYsIDB4QTQsIDB4MjEsIDB4Q0QsIDB4RTIsIDB4NkMsIDB4QkEsCisgICAgMHgzNiwgMHgzOSwgMHg2RCwgMHhCNCwgMHhEMCwgMHhGQSwgMHg4QSwgMHg2NywgMHg2OCwgMHgzRCwgMHhGMSwgMHg4RCwgMHgzQSwgMHhCNywgMHg2MSwgMHgwNiwKKyAgICAweDJBLCAweDlELCAweDNCLCAweEIwLCAweDlCLCAweEQxLCAweEExLCAweDBBLCAweDVBLCAweEJELCAweDQ1LCAweEQ5LCAweDA2LCAweDE3LCAweEZELCAweDI0LAorICAgIDB4NjMsIDB4N0UsIDB4MjEsIDB4NzYsIDB4ODUsIDB4OUIsIDB4NTYsIDB4NEUsIDB4NUEsIDB4REEsIDB4OTgsIDB4MkMsIDB4NjMsIDB4NEMsIDB4MDEsIDB4QzMsCisgICAgMHgxRSwgMHhFOSwgMHhBNywgMHhFQiwgMHhCOCwgMHg4RSwgMHhFMiwgMHgyQiwgMHhCNCwgMHhGRiwgMHg2QiwgMHgwOSwgMHg2MSwgMHhGQiwgMHhFOSwgMHhDQywKKyAgICAweERBLCAweEU5LCAweEVDLCAweEE1LCAweEZGLCAweDQzLCAweDY4LCAweDdFLCAweEZFLCAweDRELCAweDY5LCAweDQ5LCAweEY3LCAweEYyLCAweDk5LCAweEJELAorICAgIDB4NTYsIDB4MTgsIDB4QjYsIDB4NzksIDB4OTgsIDB4NDAsIDB4NkQsIDB4QzEsIDB4NjAsIDB4RjgsIDB4MDksIDB4MTQsIDB4NEMsIDB4QkQsIDB4RDMsIDB4QjgsCisgICAgMHhGMywgMHgwQSwgMHg3QywgMHhGMiwgMHg5OCwgMHg1OCwgMHg2MSwgMHhBNiwgMHgzMCwgMHg5NSwgMHhFQSwgMHhCOCwgMHg5MSwgMHhGMiwgMHhEMCwgMHgzMCwKKyAgICAweDY4LCAweDYyLCAweDI1LCAweEVGLCAweEZDLCAweDRGLCAweEMzLCAweDVBLCAweDQwLCAweDNDLCAweEM5LCAweENFLCAweEQ5LCAweDMxLCAweEE0LCAweEJCLAorICAgIDB4MjcsIDB4NTksIDB4QUEsIDB4MzAsIDB4RDgsIDB4NzEsIDB4RDIsIDB4OTUsIDB4REMsIDB4NzYsIDB4NTcsIDB4Q0UsIDB4MzUsIDB4MUIsIDB4NTEsIDB4MDQsCisgICAgMHg3RiwgMHg0MiwgMHgzQywgMHhGNSwgMHgzQSwgMHhDOCwgMHhFNywgMHgxNSwgMHgzNiwgMHg4RSwgMHg2OSwgMHgxRiwgMHg1RSwgMHgwOCwgMHg0MCwgMHgwRSwKKyAgICAweDYzLCAweDEyLCAweDkyLCAweDFFLCAweDc4LCAweEY0LCAweDQ5LCAweEQwLCAweDBBLCAweDkwLCAweEJFLCAweDQxLCAweDNCLCAweEJDLCAweDhCLCAweDUwLAorICAgIDB4ODksIDB4RkMsIDB4ODgsIDB4NkMsIDB4M0MsIDB4MDAsIDB4RkMsIDB4QzAsIDB4M0EsIDB4NTIsIDB4NTksIDB4NDIsIDB4QTksIDB4QzQsIDB4MzUsIDB4NzEsCisgICAgMHg3RSwgMHg1RCwgMHg3MywgMHg1MywgMHgyOCwgMHhENywgMHhBNCwgMHg1OCwgMHgwOSwgMHg1MiwgMHgwRiwgMHhGMSwgMHhENSwgMHhDQiwgMHhENiwgMHgzQywKKyAgICAweDZDLCAweDVFLCAweEY2LCAweEYzLCAweDBGLCAweEU2LCAweDA3LCAweEYwLCAweDI1LCAweEIwLCAweDc2LCAweDVBLCAweEYwLCAweDUzLCAweDcwLCAweEZCLAorICAgIDB4RjMsIDB4M0EsIDB4REUsIDB4NTIsIDB4OTcsIDB4NEMsIDB4MUYsIDB4MzQsIDB4N0IsIDB4RUUsIDB4RDksIDB4NEMsIDB4RkYsIDB4QUQsIDB4NTMsIDB4QzYsCisgICAgMHhCQSwgMHg3NCwgMHg4MiwgMHgyMSwgMHg4MSwgMHgyRSwgMHgwMCwgMHgxOSwgMHgzMiwgMHhBQSwgMHgzRSwgMHg1MiwgMHgwRSwgMHg1MywgMHg0MCwgMHgxQSwKKyAgICAweDYzLCAweEM0LCAweDc0LCAweEY1LCAweEEyLCAweDMzLCAweDJELCAweEFCLCAweDNGLCAweEU0LCAweDU2LCAweEZFLCAweDFELCAweDkxLCAweEYzLCAweDhGLAorICAgIDB4NDYsIDB4MjEsIDB4MTAsIDB4MUQsIDB4MzgsIDB4M0QsIDB4NzEsIDB4ODUsIDB4NkMsIDB4RDMsIDB4NDQsIDB4REEsIDB4M0QsIDB4N0MsIDB4NjksIDB4RUIsCisgICAgMHg5MiwgMHhERiwgMHhFMSwgMHg2QywgMHg4MiwgMHg4OCwgMHhGNSwgMHgxNSwgMHgyRCwgMHhCMiwgMHgwRiwgMHgyRCwgMHhCRiwgMHg1NiwgMHg2RSwgMHg4QSwKKyAgICAweEM4LCAweDg3LCAweDIwLCAweEEyLCAweEE3LCAweEJDLCAweEZGLCAweDJBLCAweDRBLCAweDFGLCAweDJDLCAweDVCLCAweDBBLCAweDg0LCAweDQxLCAweDgyLAorICAgIDB4REUsIDB4RTIsIDB4NjQsIDB4MEIsIDB4NDIsIDB4QTYsIDB4NzYsIDB4NDQsIDB4OTMsIDB4REMsIDB4RDYsIDB4REYsIDB4MjYsIDB4OTUsIDB4ODksIDB4RUYsCisgICAgMHg3NiwgMHg3NCwgMHgzNCwgMHg5MywgMHg0NSwgMHg0OSwgMHhCMSwgMHhCNCwgMHgwQiwgMHgyRiwgMHhGNiwgMHg2RiwgMHhFMCwgMHhDOSwgMHg5OSwgMHg0NywKKyAgICAweEIxLCAweDc2LCAweDFBLCAweEJELCAweDdFLCAweENELCAweDA0LCAweDdFLCAweEJBLCAweDUwLCAweEE2LCAweEI3LCAweEM4LCAweDMxLCAweDJDLCAweDE2LAorICAgIDB4MEUsIDB4QjksIDB4OEEsIDB4OTYsIDB4QzQsIDB4NDUsIDB4QjQsIDB4MDYsIDB4Q0UsIDB4RkYsIDB4NzMsIDB4ODAsIDB4RUQsIDB4MjQsIDB4RDAsIDB4OUUsCisgICAgMHhBOSwgMHgyNCwgMHgxQiwgMHg3OSwgMHgyNSwgMHhBOSwgMHgzRCwgMHg4NiwgMHgxOSwgMHg2OCwgMHhCRiwgMHgzMSwgMHg4MywgMHgzQywgMHgxMiwgMHhCMCwKKyAgICAweDVCLCAweDIzLCAweDNCLCAweDA3LCAweDIzLCAweDgxLCAweEFGLCAweERELCAweDYyLCAweEU4LCAweDU1LCAweDJELCAweDM2LCAweEE1LCAweDE2LCAweEIxLAorICAgIDB4QTQsIDB4RkIsIDB4MjAsIDB4MUEsIDB4MTAsIDB4M0EsIDB4MEUsIDB4N0UsIDB4OTcsIDB4RkMsIDB4MjksIDB4MDYsIDB4NzgsIDB4QzEsIDB4NjMsIDB4QjMsCisgICAgMHg2RiwgMHg2NCwgMHhCRSwgMHg3MCwgMHg4QiwgMHg0MywgMHg3MCwgMHhFQiwgMHhFQiwgMHhFOSwgMHhFRiwgMHg3QywgMHhDMywgMHg1OSwgMHgxQiwgMHhDQywKKyAgICAweEFCLCAweDVCLCAweEUwLCAweEJGLCAweEY0LCAweEM2LCAweEQ0LCAweEU1LCAweDA3LCAweENGLCAweEFCLCAweDVFLCAweEU4LCAweDJGLCAweDY4LCAweEQ5LAorICAgIDB4RjYsIDB4M0EsIDB4MzYsIDB4MDgsIDB4RTMsIDB4RjYsIDB4QUUsIDB4N0IsIDB4QzUsIDB4N0EsIDB4RjEsIDB4MTYsIDB4QzgsIDB4NDYsIDB4NTksIDB4RUEsCisgICAgMHhEOSwgMHhBRCwgMHg2NSwgMHg3NCwgMHhFNywgMHg2MywgMHhBOCwgMHhGNCwgMHg1RSwgMHgwMSwgMHg5MSwgMHhFNywgMHhFQiwgMHhBMiwgMHgwQiwgMHg5MiwKKyAgICAweDNDLCAweDI4LCAweDUwLCAweDlBLCAweDU0LCAweDc2LCAweDRBLCAweEVDLCAweDM4LCAweDBFLCAweDUyLCAweDAyLCAweEY0LCAweEM4LCAweDgyLCAweEM1LAorICAgIDB4N0QsIDB4MkQsIDB4MzksIDB4NkIsIDB4MzAsIDB4QjMsIDB4NjgsIDB4ODcsIDB4N0IsIDB4MEEsIDB4NUMsIDB4MTQsIDB4REYsIDB4NUQsIDB4RjksIDB4RjgsCisgICAgMHg3RSwgMHg4MSwgMHg2RCwgMHg3NiwgMHgyNywgMHg3OCwgMHgzMywgMHhCQywgMHg5QiwgMHg5RSwgMHhFRSwgMHhERCwgMHhGQiwgMHgyNCwgMHgxQiwgMHhCRCwKKyAgICAweDQ5LCAweDRCLCAweDVFLCAweEVBLCAweEM5LCAweERELCAweDJBLCAweDA0LCAweDJELCAweEVCLCAweEIzLCAweEJELCAweDIyLCAweERDLCAweDYxLCAweEMzLAorICAgIDB4OTUsIDB4QjcsIDB4OTUsIDB4OTIsIDB4REMsIDB4MzIsIDB4MzksIDB4QzAsIDB4MTgsIDB4QzEsIDB4NDMsIDB4M0IsIDB4MjAsIDB4MjAsIDB4MzIsIDB4MEEsCisgICAgMHhCMCwgMHg1MSwgMHg3MCwgMHgyMSwgMHg1OSwgMHg2NCwgMHg4RSwgMHgzNSwgMHhGQSwgMHhENiwgMHhGOCwgMHg3NSwgMHg1NiwgMHg1OSwgMHg5NiwgMHhBOCwKKyAgICAweEVFLCAweDNGLCAweEYxLCAweDQ5LCAweDY0LCAweEYxLCAweDhGLCAweDdDLCAweDJCLCAweEI5LCAweDc0LCAweEMwLCAweDAzLCAweDU1LCAweEJGLCAweDk1LAorICAgIDB4OUMsIDB4MzEsIDB4ODAsIDB4REEsIDB4MzcsIDB4NjEsIDB4OTksIDB4MjgsIDB4OEEsIDB4NDUsIDB4MzgsIDB4RjQsIDB4MjMsIDB4QzcsIDB4NTUsIDB4MTMsCisgICAgMHg3OSwgMHgwMSwgMHhFMiwgMHgxRCwgMHhGQywgMHg3NiwgMHg2NCwgMHgyMCwgMHg0QiwgMHg2MywgMHg3NCwgMHgwQiwgMHg0MCwgMHg4QywgMHgxMSwgMHg1MiwKKyAgICAweEJGLCAweEQxLCAweDFDLCAweEFGLCAweDMyLCAweEFELCAweDkyLCAweDExLCAweDUwLCAweDYxLCAweDU3LCAweDFBLCAweERELCAweDdBLCAweDRCLCAweDU0LAorICAgIDB4QzMsIDB4NTcsIDB4MkEsIDB4QzMsIDB4RjYsIDB4NEMsIDB4REYsIDB4ODIsIDB4NkIsIDB4NUUsIDB4RDksIDB4N0YsIDB4MDYsIDB4NTIsIDB4MUQsIDB4RTMsCisgICAgMHg3OCwgMHg0RSwgMHg2QywgMHhDMywgMHgxNCwgMHg3MywgMHhGMSwgMHgxMCwgMHg3RCwgMHhEQywgMHhCRSwgMHhFMCwgMHgzMCwgMHg3NSwgMHhDRiwgMHgyNCwKKyAgICAweDE4LCAweDQ0LCAweEEyLCAweDYxLCAweEM1LCAweDM2LCAweEQ4LCAweDQ0LCAweDVFLCAweDU3LCAweDNBLCAweDJDLCAweEZBLCAweERGLCAweDZGLCAweDBCLAorICAgIDB4NzUsIDB4NjksIDB4QjcsIDB4ODIsIDB4NTMsIDB4NzgsIDB4MjMsIDB4OEEsIDB4NDYsIDB4NjUsIDB4RkYsIDB4MDQsIDB4QzgsIDB4QkYsIDB4N0QsIDB4RjAsCisgICAgMHg3OSwgMHhERSwgMHgzNiwgMHg3OCwgMHgyQiwgMHhERiwgMHgzMCwgMHgxNiwgMHgyNSwgMHg3MSwgMHhEQywgMHhFMywgMHgwMiwgMHhENywgMHg0OSwgMHhGNywKKyAgICAweDA4LCAweEI0LCAweDlCLCAweEMxLCAweEVFLCAweDczLCAweEE1LCAweDM1LCAweDQzLCAweDlFLCAweEIwLCAweEVBLCAweDExLCAweDgyLCAweEM0LCAweEMwLAorICAgIDB4MTQsIDB4MUQsIDB4MDAsIDB4REMsIDB4QjQsIDB4NDMsIDB4NDEsIDB4QzIsIDB4MjIsIDB4QTMsIDB4QkQsIDB4MUIsIDB4NDEsIDB4RUYsIDB4OUUsIDB4M0YsCisgICAgMHgzQSwgMHg1MCwgMHg4RSwgMHgwRSwgMHhFQiwgMHgwOCwgMHg1QywgMHhBQywgMHg2NiwgMHgwNSwgMHgxOSwgMHhGMCwgMHhDRCwgMHgzRCwgMHg4NCwgMHhCOCwKKyAgICAweDA0LCAweDBBLCAweDIyLCAweDY5LCAweEQyLCAweEUxLCAweDQxLCAweDlBLCAweDlCLCAweEZBLCAweEFELCAweEI5LCAweDg0LCAweDA4LCAweEZGLCAweEVDLAorICAgIDB4NTAsIDB4OUIsIDB4RDIsIDB4NTUsIDB4RjYsIDB4MjEsIDB4QTgsIDB4NEEsIDB4RjcsIDB4MTksIDB4QzQsIDB4RTksIDB4MUIsIDB4RTcsIDB4RDYsIDB4OTcsCisgICAgMHgwRiwgMHhDQiwgMHhBMywgMHhFMSwgMHhGNSwgMHhFQiwgMHg0OCwgMHgzOCwgMHg4RCwgMHhDRCwgMHg2QywgMHgxNCwgMHhDOCwgMHgzMCwgMHhERCwgMHhDNiwKKyAgICAweDNELCAweEEwLCAweERCLCAweDQ2LCAweEIxLCAweDA3LCAweDg5LCAweDM4LCAweEY3LCAweDJFLCAweDMwLCAweDdGLCAweEQ4LCAweDkzLCAweDkyLCAweDMyLAorICAgIDB4MEIsIDB4RDgsIDB4OEIsIDB4QzgsIDB4NUEsIDB4MUEsIDB4NjAsIDB4QUMsIDB4RDEsIDB4NDEsIDB4RUMsIDB4QjUsIDB4QjUsIDB4RTMsIDB4N0IsIDB4REUsCisgICAgMHgzQSwgMHgzMywgMHgyNCwgMHg1RSwgMHgwNiwgMHg4NSwgMHgyQiwgMHg2NSwgMHg3NCwgMHhCQSwgMHg0MCwgMHg3RCwgMHg2MCwgMHg4NywgMHhEMywgMHhCRSwKKyAgICAweEQ5LCAweDg4LCAweEY4LCAweDM2LCAweEE1LCAweDgzLCAweEI4LCAweDgzLCAweDYyLCAweDQ0LCAweDIwLCAweDJGLCAweENCLCAweEM3LCAweEExLCAweDU3LAorICAgIDB4QTgsIDB4MzIsIDB4NjAsIDB4QUIsIDB4OTcsIDB4NkYsIDB4NzAsIDB4MDcsIDB4MkIsIDB4NDEsIDB4NzEsIDB4RjgsIDB4Q0UsIDB4Q0QsIDB4NzMsIDB4NEMsCisgICAgMHhCOSwgMHgwNCwgMHgxNCwgMHg5RSwgMHhDMiwgMHg1QSwgMHg2RiwgMHgxNCwgMHhEMCwgMHg4MywgMHgxMCwgMHhBRSwgMHgyRiwgMHg2NywgMHgxMCwgMHg0NiwKKyAgICAweDVGLCAweDZELCAweDQwLCAweEY1LCAweDJGLCAweDc3LCAweDUwLCAweDgyLCAweDY1LCAweDE2LCAweEFCLCAweDgyLCAweDNGLCAweEJBLCAweEYxLCAweEJDLAorICAgIDB4NTMsIDB4MkQsIDB4ODYsIDB4QUEsIDB4OTYsIDB4NDAsIDB4MTQsIDB4NkQsIDB4MzgsIDB4NEQsIDB4MzcsIDB4RDAsIDB4MEUsIDB4RkYsIDB4MkQsIDB4QkUsCisgICAgMHgzMSwgMHgwNCwgMHhDMywgMHg3OCwgMHg1NiwgMHgyOCwgMHg3QSwgMHg5MiwgMHhCNiwgMHhGRCwgMHg5RCwgMHgyRCwgMHg2NSwgMHgxRSwgMHg5MCwgMHhGRSwKKyAgICAweDMwLCAweDBFLCAweEM2LCAweDdCLCAweDA4LCAweDI3LCAweDJFLCAweERDLCAweDNBLCAweEVELCAweDA3LCAweDc0LCAweEYwLCAweEYyLCAweDA5LCAweEU5LAorICAgIDB4MUQsIDB4OTYsIDB4NUIsIDB4QjIsIDB4NEQsIDB4MzcsIDB4NDEsIDB4QTksIDB4QjQsIDB4QTMsIDB4NzEsIDB4MkEsIDB4QUIsIDB4MTUsIDB4NEYsIDB4MzEsCisgICAgMHg4NSwgMHhDMiwgMHhEOSwgMHgxMCwgMHgyMiwgMHgxMCwgMHhGRiwgMHhBRiwgMHhEMSwgMHgwOCwgMHgzNiwgMHgwRiwgMHgwNSwgMHgyQSwgMHhBOSwgMHhFMiwKKyAgICAweEJBLCAweDBFLCAweDA3LCAweEFCLCAweEFDLCAweDAxLCAweENGLCAweEM2LCAweEI4LCAweEU5LCAweDYxLCAweDQ1LCAweEZCLCAweDNGLCAweDk0LCAweDVBLAorICAgIDB4MEMsIDB4NkQsIDB4N0IsIDB4MEUsIDB4NTcsIDB4NUQsIDB4OUQsIDB4RUIsIDB4OTYsIDB4MEMsIDB4MUQsIDB4QzEsIDB4MTMsIDB4MjQsIDB4NDksIDB4QjgsCisgICAgMHhBNywgMHhFOSwgMHg1QywgMHg5RSwgMHhFRCwgMHhBRCwgMHhGMywgMHg1NiwgMHhFRCwgMHg5MSwgMHhBMCwgMHhBMSwgMHg3MiwgMHg1MSwgMHhERSwgMHhDRCwKKyAgICAweENDLCAweDA1LCAweDg5LCAweEQ0LCAweDAxLCAweEE0LCAweDgwLCAweDBELCAweDRFLCAweDVBLCAweEE5LCAweDVGLCAweEVBLCAweDcxLCAweDI3LCAweDg0LAorICAgIDB4RTYsIDB4NzAsIDB4MUQsIDB4QTIsIDB4QzksIDB4NEMsIDB4NEMsIDB4MDgsIDB4QUIsIDB4RDEsIDB4NzMsIDB4OUIsIDB4NUQsIDB4RTAsIDB4QjcsIDB4NUQsCisgICAgMHhERSwgMHgxRiwgMHg0OSwgMHg3NSwgMHhEMSwgMHg5MiwgMHg1QiwgMHg1MiwgMHg1OCwgMHgzQSwgMHhDRSwgMHhBMCwgMHgyNSwgMHgxRiwgMHhBNywgMHhCMSwKKyAgICAweEY3LCAweERELCAweDY4LCAweEQ1LCAweEE3LCAweEI2LCAweEFBLCAweEVDLCAweDU3LCAweDkzLCAweDYxLCAweEY1LCAweDY3LCAweDlFLCAweDVCLCAweDlDLAorICAgIDB4QjgsIDB4RTAsIDB4MEEsIDB4QzUsIDB4MzQsIDB4MzUsIDB4MjUsIDB4REMsIDB4NEIsIDB4QzUsIDB4Q0YsIDB4MjAsIDB4NDcsIDB4ODQsIDB4NTMsIDB4REQsCisgICAgMHgwQiwgMHg4MywgMHg3MCwgMHhENiwgMHhGNywgMHgyQywgMHhGMywgMHg1NSwgMHgzQSwgMHg1MiwgMHhCQywgMHg0OCwgMHgwRiwgMHhDQSwgMHhGRCwgMHg0RiwKKyAgICAweDkxLCAweDc5LCAweDU3LCAweERELCAweDQ2LCAweEI1LCAweEYyLCAweEE4LCAweDE2LCAweEMwLCAweDA2LCAweDlCLCAweEFGLCAweDAyLCAweDEyLCAweDE1LAorICAgIDB4QjYsIDB4QjAsIDB4NDgsIDB4MUUsIDB4OTUsIDB4QTQsIDB4MzYsIDB4QkIsIDB4RDYsIDB4RjgsIDB4QkEsIDB4MUQsIDB4NzAsIDB4NTAsIDB4MjMsIDB4QTgsCisgICAgMHhGNiwgMHhCQiwgMHg2MSwgMHg0NiwgMHg5MSwgMHgyNCwgMHgxNiwgMHg0RSwgMHgwMiwgMHhEOCwgMHg3MywgMHgwMSwgMHg3OCwgMHhERCwgMHg0MiwgMHg3QSwKKyAgICAweEE2LCAweDRGLCAweEZFLCAweDk0LCAweEY2LCAweEVBLCAweDFFLCAweDYyLCAweEIwLCAweEFDLCAweEU0LCAweDk0LCAweDA5LCAweDBELCAweDQzLCAweEY0LAorICAgIDB4QTAsIDB4QTgsIDB4N0EsIDB4QUEsIDB4MUMsIDB4MjgsIDB4NDksIDB4RDcsIDB4Q0MsIDB4OEIsIDB4NTUsIDB4RjMsIDB4RDMsIDB4OTksIDB4OUIsIDB4RUMsCisgICAgMHg0MSwgMHg2QiwgMHg4NiwgMHg4NSwgMHg2NSwgMHgxQiwgMHhDMiwgMHgyRSwgMHhEMiwgMHhGNiwgMHg0NiwgMHg5RiwgMHg0NiwgMHhGRiwgMHg5QSwgMHg1RiwKKyAgICAweEFGLCAweDZGLCAweDIyLCAweDI5LCAweDU5LCAweDQwLCAweEU0LCAweDJELCAweEJFLCAweDRBLCAweDhFLCAweEYwLCAweDJCLCAweDQ4LCAweDVGLCAweEMxLAorICAgIDB4NzYsIDB4QTUsIDB4MkYsIDB4RUUsIDB4MDMsIDB4RUIsIDB4Q0YsIDB4QTcsIDB4MkUsIDB4QjAsIDB4MjcsIDB4RDcsIDB4NDksIDB4QjEsIDB4QjQsIDB4MDEsCisgICAgMHg0NiwgMHgwMCwgMHg3MiwgMHhDQywgMHg5OCwgMHhENywgMHhBMywgMHhCQywgMHg0RSwgMHhGMSwgMHgzMiwgMHgzRCwgMHhGMSwgMHgyOSwgMHg5OCwgMHhBNCwKKyAgICAweDM5LCAweEQwLCAweEQ5LCAweEQ5LCAweDJBLCAweDk5LCAweDE0LCAweDY5LCAweEUxLCAweDk5LCAweDcwLCAweEM4LCAweEVFLCAweDVELCAweEM5LCAweEMzLAorICAgIDB4OTIsIDB4RjMsIDB4QjYsIDB4RTcsIDB4QTcsIDB4MTQsIDB4QzMsIDB4QzQsIDB4QkIsIDB4MDUsIDB4NDQsIDB4REQsIDB4REMsIDB4NzcsIDB4REIsIDB4MDAsCisgICAgMHg3MywgMHhDOSwgMHgwQiwgMHgxNywgMHgzOCwgMHhBRiwgMHhDQiwgMHg3RSwgMHg1RiwgMHg0RCwgMHgzRiwgMHg3OSwgMHgxNiwgMHgxMCwgMHg3NSwgMHg3OSwKKyAgICAweDY5LCAweDE2LCAweEFDLCAweDdFLCAweEFBLCAweDczLCAweEM3LCAweDcxLCAweEY2LCAweDAxLCAweDQ1LCAweEMyLCAweEE5LCAweEI4LCAweEMyLCAweDc3LAorICAgIDB4ODgsIDB4NDUsIDB4M0EsIDB4Q0MsIDB4OUUsIDB4MDIsIDB4RjUsIDB4Q0MsIDB4NTgsIDB4NEIsIDB4OTgsIDB4OUIsIDB4QTQsIDB4N0YsIDB4OUYsIDB4QjIsCisgICAgMHhFOSwgMHg4RiwgMHgwRiwgMHgyMSwgMHhBMiwgMHhBMywgMHgzMCwgMHgyNCwgMHg5NiwgMHg4RSwgMHg0NSwgMHhDQSwgMHg3RSwgMHg4OCwgMHg5MiwgMHg4QSwKKyAgICAweDgxLCAweEM1LCAweEI1LCAweDg0LCAweDk5LCAweDk4LCAweDJELCAweDk3LCAweEFGLCAweDc1LCAweDdELCAweDBFLCAweENCLCAweDI4LCAweDk2LCAweEQ1LAorICAgIDB4NEQsIDB4RkUsIDB4REQsIDB4MzAsIDB4RTEsIDB4QzMsIDB4MTksIDB4M0QsIDB4MDQsIDB4NUEsIDB4RUEsIDB4MDksIDB4ODIsIDB4NjYsIDB4NTEsIDB4RTIsCisgICAgMHhFOSwgMHgwMywgMHhBMywgMHhDMiwgMHhGNywgMHg3MiwgMHg3RiwgMHhFMCwgMHgxMywgMHhGNiwgMHgyOSwgMHgxNSwgMHhFOSwgMHg1MSwgMHhGMywgMHgxMiwKKyAgICAweEUxLCAweEIxLCAweEM4LCAweEM5LCAweDRGLCAweEUwLCAweDQ0LCAweEE3LCAweEU4LCAweDgwLCAweDQyLCAweDgyLCAweDk4LCAweDFELCAweEE5LCAweDBGLAorICAgIDB4MTcsIDB4MjksIDB4RUYsIDB4RDYsIDB4QUIsIDB4NkQsIDB4NUYsIDB4OUQsIDB4RDMsIDB4NjMsIDB4NjEsIDB4RjMsIDB4NjMsIDB4MDIsIDB4QzAsIDB4RjUsCisgICAgMHhCNSwgMHg3NSwgMHg1MiwgMHg5RiwgMHgwQiwgMHhFRCwgMHg4RSwgMHgzNywgMHgxQywgMHhDNCwgMHgzMywgMHgwMiwgMHhEOCwgMHhGNSwgMHhFNCwgMHg1NywKKyAgICAweDBGLCAweEQ0LCAweDdGLCAweDA3LCAweEZCLCAweDdCLCAweDk4LCAweDkyLCAweDcxLCAweDE3LCAweDQ1LCAweEIwLCAweDAzLCAweEQzLCAweDYyLCAweEZGLAorICAgIDB4NjUsIDB4REMsIDB4NUIsIDB4QTQsIDB4QTEsIDB4OEEsIDB4M0YsIDB4RjgsIDB4MEYsIDB4MzQsIDB4RjgsIDB4REYsIDB4NTksIDB4NjAsIDB4RTQsIDB4QzEsCisgICAgMHgxNiwgMHhDNywgMHhBRSwgMHg0NiwgMHg4OCwgMHgzMywgMHg5RSwgMHhFMCwgMHhEMCwgMHhCNiwgMHgyMSwgMHhCNiwgMHg0QiwgMHg3NywgMHhCMCwgMHgxMiwKKyAgICAweDNBLCAweDE1LCAweDE1LCAweDIxLCAweDVFLCAweEM3LCAweEM1LCAweEUzLCAweDkwLCAweDRFLCAweDc5LCAweDk2LCAweDFDLCAweENBLCAweEVBLCAweEMzLAorICAgIDB4MkQsIDB4MEIsIDB4OEMsIDB4Q0UsIDB4M0UsIDB4NTQsIDB4N0EsIDB4NDQsIDB4QkEsIDB4RTQsIDB4Q0MsIDB4MjMsIDB4MTQsIDB4RUEsIDB4NzMsIDB4OTYsCisgICAgMHg4OCwgMHg1NCwgMHg5OSwgMHhEOCwgMHg3QiwgMHgxMCwgMHhCOCwgMHhCOSwgMHhEMiwgMHhBNCwgMHg1NywgMHg2MywgMHgzNSwgMHhEQiwgMHg4QSwgMHhGQiwKKyAgICAweEJFLCAweDU3LCAweEEzLCAweDlCLCAweDBCLCAweDM5LCAweDM1LCAweDA4LCAweDAzLCAweDlBLCAweDIyLCAweDU1LCAweDA0LCAweEUyLCAweDE0LCAweEJGLAorICAgIDB4QTEsIDB4Q0EsIDB4MTUsIDB4QUMsIDB4QTYsIDB4NkUsIDB4RjcsIDB4RUMsIDB4N0IsIDB4RTQsIDB4RTcsIDB4OUMsIDB4MjIsIDB4NEMsIDB4MjUsIDB4NzcsCisgICAgMHg3NywgMHgyMywgMHhFRiwgMHhGOCwgMHhCMywgMHg1MiwgMHg4OCwgMHhCMiwgMHg4NSwgMHg2NSwgMHhGQywgMHhBRSwgMHhDQSwgMHhBQiwgMHg0NCwgMHg3NywKKyAgICAweDVCLCAweDA5LCAweEMwLCAweEMzLCAweEIxLCAweDQ2LCAweEFGLCAweEVCLCAweEVGLCAweDUwLCAweEM0LCAweDQ3LCAweDBFLCAweEFDLCAweEVGLCAweDIyLAorICAgIDB4QUYsIDB4MjQsIDB4NTMsIDB4NTEsIDB4NTIsIDB4QjksIDB4NTUsIDB4RDcsIDB4QTgsIDB4MUEsIDB4MUEsIDB4QzUsIDB4REMsIDB4NjQsIDB4RDQsIDB4MEMsCisgICAgMHgxNSwgMHgzNywgMHgyMywgMHhDNSwgMHhEOSwgMHgyQywgMHgwMiwgMHhDNSwgMHg1MywgMHg5RCwgMHhCNCwgMHgwQywgMHgyNywgMHhCOCwgMHgwMCwgMHhBMywKKyAgICAweDJFLCAweDM4LCAweEFELCAweEU4LCAweEQwLCAweDUyLCAweEIwLCAweDM3LCAweDlBLCAweEM4LCAweDgxLCAweDMzLCAweDg3LCAweDM3LCAweDBDLCAweEI4LAorICAgIDB4MTcsIDB4NDUsIDB4OEEsIDB4QUMsIDB4QjEsIDB4RUYsIDB4QTQsIDB4QTEsIDB4MTAsIDB4NEUsIDB4ODgsIDB4MTMsIDB4MTAsIDB4MjgsIDB4RjAsIDB4MjIsCisgICAgMHg1NSwgMHgxOCwgMHg5NiwgMHhCMSwgMHhEQywgMHg1NCwgMHg3QiwgMHhDMywgMHg3QSwgMHhBMSwgMHg4QywgMHg1OCwgMHgxNCwgMHg5RCwgMHhCNCwgMHhDNSwKKyAgICAweDk4LCAweEE5LCAweEJGLCAweEI2LCAweDI3LCAweDRGLCAweDdBLCAweDFDLCAweEY0LCAweDAzLCAweDZCLCAweDYwLCAweDkxLCAweEIwLCAweDFFLCAweDlBLAorICAgIDB4M0IsIDB4MkIsIDB4NDAsIDB4MzAsIDB4MjIsIDB4M0YsIDB4NjEsIDB4MTYsIDB4OEUsIDB4NEQsIDB4QzAsIDB4OEYsIDB4RUQsIDB4QTUsIDB4NEYsIDB4NzMsCisgICAgMHgxMCwgMHg0QSwgMHhEMiwgMHg3MywgMHhDNSwgMHhGOCwgMHg5NSwgMHgyNSwgMHhCMCwgMHhCQywgMHgwMSwgMHgxNCwgMHgzNywgMHgwRCwgMHg3NCwgMHg0NSwKKyAgICAweEFBLCAweEQ2LCAweDIxLCAweDRCLCAweDdELCAweDU1LCAweDkzLCAweDE2LCAweDAyLCAweEJCLCAweEJELCAweDc3LCAweDRGLCAweEVFLCAweEVBLCAweDI5LAorICAgIDB4M0MsIDB4REYsIDB4NDUsIDB4OUEsIDB4OUIsIDB4NzMsIDB4QkMsIDB4MDEsIDB4RjcsIDB4MTgsIDB4NTMsIDB4MUEsIDB4NzMsIDB4MkIsIDB4M0YsIDB4NzgsCisgICAgMHg2OSwgMHhCOCwgMHg0NSwgMHgxNiwgMHg5RiwgMHg3NiwgMHgwOSwgMHg5MSwgMHgwNCwgMHgyMSwgMHg2QiwgMHg4MiwgMHhDRiwgMHhGQiwgMHgwQywgMHhGMiwKKyAgICAweDE1LCAweDZBLCAweERELCAweDY3LCAweDJDLCAweDIxLCAweDM5LCAweDA2LCAweDEzLCAweDZDLCAweEQ3LCAweDU4LCAweDU0LCAweEJBLCAweEFDLCAweDhELAorICAgIDB4MUEsIDB4MTMsIDB4OEYsIDB4NEYsIDB4QzMsIDB4RTgsIDB4MEEsIDB4Q0MsIDB4QTAsIDB4MjUsIDB4QzUsIDB4QkQsIDB4NDksIDB4OTUsIDB4NkQsIDB4OTUsCisgICAgMHhBOCwgMHg2RiwgMHhDQSwgMHg4NSwgMHg0RiwgMHhBMSwgMHg5NCwgMHg0NSwgMHg4NiwgMHhFMiwgMHhCQSwgMHhENiwgMHhFMywgMHhGQSwgMHg5MSwgMHhGNSwKKyAgICAweDAzLCAweEEyLCAweDJDLCAweENELCAweDU0LCAweDM3LCAweDYxLCAweEE2LCAweDM0LCAweEUwLCAweDhELCAweDFDLCAweEQ0LCAweEM5LCAweDMxLCAweDRCLAorICAgIDB4MTMsIDB4MDQsIDB4QTYsIDB4NTIsIDB4RkMsIDB4OEYsIDB4NEYsIDB4ODEsIDB4MEEsIDB4MTUsIDB4QjAsIDB4QjAsIDB4MzMsIDB4MkYsIDB4MkEsIDB4RkMsCisgICAgMHhGRiwgMHg5NSwgMHg4NywgMHg2NiwgMHhGRCwgMHgxOSwgMHhERSwgMHg3NywgMHg0QywgMHhGOSwgMHgzQSwgMHg1RCwgMHgzNCwgMHg1RCwgMHg0NywgMHgwQiwKKyAgICAweDMzLCAweDU1LCAweDlCLCAweDkwLCAweDEzLCAweDJDLCAweEUzLCAweEQ4LCAweEE5LCAweERCLCAweEFBLCAweEEwLCAweDRGLCAweDdGLCAweDIwLCAweEY2LAorICAgIDB4OEMsIDB4NUEsIDB4NDgsIDB4OEYsIDB4ODgsIDB4OTUsIDB4NTEsIDB4MTEsIDB4OTUsIDB4ODgsIDB4MTMsIDB4MzEsIDB4NEQsIDB4NkYsIDB4QTIsIDB4NUEsCisgICAgMHgxQiwgMHhFNSwgMHgxNiwgMHg2RSwgMHg5QywgMHgyNCwgMHhBMiwgMHg4MiwgMHg2OSwgMHhBQywgMHgwQSwgMHg1NCwgMHg4QiwgMHgxMiwgMHg2NCwgMHg0RCwKKyAgICAweEM0LCAweDUxLCAweDdGLCAweEVBLCAweDRDLCAweDQ0LCAweDU4LCAweEYyLCAweEExLCAweDFFLCAweEJGLCAweDAyLCAweDE1LCAweDc1LCAweDRDLCAweDRBLAorICAgIDB4RUIsIDB4NEYsIDB4NzcsIDB4RTUsIDB4QjEsIDB4M0MsIDB4MjYsIDB4NEYsIDB4MjEsIDB4QjksIDB4QUQsIDB4NzAsIDB4MzYsIDB4NEMsIDB4MDIsIDB4MTAsCisgICAgMHg1NSwgMHgyOSwgMHg3QywgMHhBMSwgMHgwMSwgMHg5RiwgMHhEOSwgMHg2NywgMHhBQiwgMHhFRSwgMHg5MywgMHhENSwgMHg5MSwgMHhERiwgMHhDNSwgMHgxOCwKKyAgICAweDQ4LCAweDlCLCAweDlELCAweDNDLCAweENCLCAweENGLCAweDA2LCAweDIxLCAweEE3LCAweDVCLCAweEU1LCAweDgzLCAweDNCLCAweDU0LCAweENDLCAweDA0LAorICAgIDB4NDMsIDB4NjMsIDB4NjAsIDB4NjYsIDB4NjAsIDB4MEYsIDB4QTIsIDB4MjMsIDB4QUUsIDB4RTEsIDB4NTUsIDB4NzgsIDB4MDksIDB4NjIsIDB4NTEsIDB4MEYsCisgICAgMHhBRSwgMHhGMSwgMHhFNSwgMHhCRSwgMHhDQiwgMHg0RSwgMHg4MywgMHhCMSwgMHhCOCwgMHg0NSwgMHgwRSwgMHg4NSwgMHg1NCwgMHg2OSwgMHhDQywgMHhGRCwKKyAgICAweDdDLCAweDVDLCAweDk1LCAweEJCLCAweDQ2LCAweEY1LCAweDIxLCAweEI5LCAweDg2LCAweDhDLCAweDcxLCAweDEwLCAweEYzLCAweDZDLCAweDFFLCAweEU1LAorICAgIDB4QkIsIDB4NUIsIDB4Q0EsIDB4MzgsIDB4QUUsIDB4RjEsIDB4QjgsIDB4NzMsIDB4REIsIDB4MTYsIDB4MzAsIDB4MjgsIDB4QjYsIDB4MTgsIDB4QjQsIDB4RjQsCisgICAgMHgwMSwgMHgwQSwgMHg5OSwgMHhDQywgMHgwMSwgMHgxNCwgMHg4MCwgMHhDMSwgMHhDMSwgMHhFRCwgMHhDNCwgMHhFMywgMHhFNiwgMHg5MiwgMHg2MSwgMHg3RSwKKyAgICAweDE4LCAweDQ0LCAweEIyLCAweDQxLCAweEU2LCAweDQxLCAweEM1LCAweEZCLCAweDA3LCAweDc1LCAweEQzLCAweEZCLCAweEE3LCAweEE5LCAweEU3LCAweDNCLAorICAgIDB4QUEsIDB4RkUsIDB4QjgsIDB4MTYsIDB4MzQsIDB4OUIsIDB4QTksIDB4RUIsIDB4NzUsIDB4QkEsIDB4RTYsIDB4MTksIDB4MjEsIDB4NEIsIDB4M0UsIDB4RjksCisgICAgMHhGRiwgMHhDNywgMHgwMywgMHgyMiwgMHg0MiwgMHhDNCwgMHgwMywgMHgzOCwgMHg4MywgMHhBOSwgMHhCMCwgMHhDRSwgMHhCNywgMHgzMiwgMHg4RSwgMHg5OSwKKyAgICAweDE4LCAweDhBLCAweDNFLCAweEM5LCAweDM4LCAweDIzLCAweDdFLCAweDIxLCAweDBBLCAweEJELCAweDJBLCAweDA3LCAweDNDLCAweDA1LCAweEE2LCAweDFFLAorICAgIDB4NUEsIDB4NTYsIDB4RDgsIDB4QzgsIDB4RTcsIDB4NUYsIDB4NUQsIDB4NkQsIDB4NEYsIDB4QTYsIDB4NkYsIDB4QjYsIDB4RTEsIDB4RUUsIDB4NjUsIDB4NkEsCisgICAgMHg5RiwgMHhBMSwgMHhEOCwgMHg2OSwgMHhDMCwgMHg5RSwgMHg2RCwgMHg0RiwgMHg2NCwgMHg3OCwgMHgzNCwgMHgyMSwgMHg1NiwgMHg0NiwgMHg5OCwgMHhDNCwKKyAgICAweDIzLCAweEU3LCAweDRELCAweDI1LCAweDI0LCAweDUwLCAweDg2LCAweEZDLCAweEVELCAweEI5LCAweDMyLCAweDFELCAweDgxLCAweDBFLCAweEUxLCAweEZELAorICAgIDB4MDEsIDB4NjcsIDB4MDcsIDB4RDgsIDB4RjAsIDB4MTUsIDB4RkMsIDB4NjcsIDB4NjIsIDB4MjQsIDB4RDcsIDB4QjMsIDB4QUUsIDB4NDgsIDB4MjYsIDB4RTIsCisgICAgMHhCRCwgMHg5OCwgMHg1MSwgMHhFMiwgMHgyOCwgMHhDNywgMHg1NCwgMHgzMCwgMHhDMCwgMHg3QywgMHhGRiwgMHhBNywgMHg4QSwgMHg0MywgMHgxOSwgMHhFMCwKKyAgICAweEVGLCAweDE3LCAweDFELCAweEYyLCAweDE1LCAweEQ1LCAweDhFLCAweDU1LCAweEFBLCAweDhCLCAweDk4LCAweDEzLCAweEY4LCAweEFBLCAweENCLCAweEI4LAorICAgIDB4NDQsIDB4NzQsIDB4OEUsIDB4NTQsIDB4MzgsIDB4QTksIDB4QjcsIDB4MkUsIDB4Q0UsIDB4NjksIDB4RUUsIDB4MTIsIDB4MTMsIDB4RUIsIDB4QTQsIDB4NzMsCisgICAgMHhFMCwgMHgyMiwgMHgwRCwgMHgxRCwgMHgzOCwgMHhBNSwgMHg1MSwgMHg2OCwgMHhGQywgMHg4RCwgMHgxRiwgMHhGOCwgMHg5NywgMHhFOSwgMHhEOSwgMHhGNiwKKyAgICAweEM0LCAweDBFLCAweDE5LCAweDhDLCAweEI4LCAweEI0LCAweEUwLCAweEI3LCAweDlDLCAweDg4LCAweDk3LCAweDQ1LCAweEE1LCAweDA5LCAweEVDLCAweDI4LAorICAgIDB4NkMsIDB4ODQsIDB4RTYsIDB4QTIsIDB4NzksIDB4RDIsIDB4ODIsIDB4MDgsIDB4M0UsIDB4QTQsIDB4RDUsIDB4MjcsIDB4NkUsIDB4MkMsIDB4MDAsIDB4M0IsCisgICAgMHgyQywgMHg2OSwgMHg1QywgMHg5RiwgMHgyMywgMHg5OCwgMHgxNCwgMHg0NCwgMHg3MywgMHgxQywgMHgyQiwgMHg0MiwgMHg2OSwgMHhBRSwgMHg3NywgMHhGMywKKyAgICAweEE4LCAweDhELCAweEM1LCAweEEwLCAweDc1LCAweEQ2LCAweERGLCAweERBLCAweEMxLCAweDcyLCAweDc3LCAweDVGLCAweDI1LCAweDdBLCAweDc2LCAweDgwLAorICAgIDB4OEMsIDB4NzgsIDB4NUQsIDB4RDQsIDB4MTMsIDB4QTcsIDB4NEMsIDB4NzIsIDB4QjgsIDB4OEMsIDB4MEYsIDB4RTEsIDB4MTAsIDB4RTIsIDB4MDAsIDB4QkEsCisgICAgMHhFOSwgMHg3QSwgMHg1MCwgMHg4MSwgMHhEQiwgMHg2MCwgMHg5OCwgMHgzOSwgMHg5MCwgMHg1OCwgMHg1QiwgMHg4RSwgMHhBNywgMHg5NiwgMHg1NiwgMHhCNSwKKyAgICAweDBBLCAweEM3LCAweDcyLCAweDVBLCAweDI2LCAweDUzLCAweDIzLCAweDk5LCAweDUyLCAweENCLCAweEQ1LCAweEZFLCAweEM5LCAweEY4LCAweEUzLCAweDc4LAorICAgIDB4MTYsIDB4ODAsIDB4RkUsIDB4Q0MsIDB4NkEsIDB4NEYsIDB4NEIsIDB4MEMsIDB4Q0EsIDB4NzIsIDB4Q0MsIDB4RjcsIDB4MjMsIDB4Q0EsIDB4MEUsIDB4MEUsCisgICAgMHg1QywgMHhENywgMHhBMiwgMHhBNSwgMHhBOSwgMHg4RCwgMHhDMSwgMHhFOSwgMHg3MywgMHg3QiwgMHg4NCwgMHhENiwgMHg4NiwgMHg0OSwgMHg0NSwgMHhEMiwKKyAgICAweEQ0LCAweDA1LCAweEVCLCAweEE4LCAweEQyLCAweDVBLCAweDY5LCAweDBGLCAweENCLCAweDk5LCAweDM5LCAweDI2LCAweERELCAweDRGLCAweERDLCAweDQyLAorICAgIDB4RkQsIDB4OEYsIDB4QzgsIDB4MEIsIDB4MjksIDB4QjgsIDB4ODMsIDB4M0QsIDB4QjgsIDB4OTYsIDB4NkMsIDB4OEEsIDB4NUUsIDB4QzUsIDB4MjgsIDB4NjAsCisgICAgMHhFMywgMHhDOCwgMHg5RiwgMHhGQSwgMHgwQywgMHhDNywgMHhBQiwgMHg2NywgMHg4RCwgMHgyMywgMHgwRiwgMHgzNSwgMHhBQiwgMHhDRiwgMHhCRiwgMHg3RCwKKyAgICAweEMyLCAweEY2LCAweDMzLCAweEM4LCAweEVELCAweDUzLCAweDg2LCAweDc3LCAweDI4LCAweDBCLCAweEQ1LCAweDQ3LCAweDNFLCAweDE3LCAweDU0LCAweDlGLAorICAgIDB4NDksIDB4RDcsIDB4MjksIDB4NjksIDB4NTcsIDB4QzAsIDB4NzAsIDB4QzksIDB4MEUsIDB4QzEsIDB4M0EsIDB4NzcsIDB4NEEsIDB4OTEsIDB4MkUsIDB4MjMsCisgICAgMHhGMSwgMHgxMywgMHhEMCwgMHg2MSwgMHg4RiwgMHhBMywgMHg2QSwgMHhERSwgMHgwMSwgMHg2QSwgMHhDMiwgMHg0QiwgMHg4RiwgMHhDRCwgMHg1RCwgMHg5OCwKKyAgICAweDcwLCAweDZELCAweEFDLCAweEUzLCAweEZELCAweDE3LCAweDc3LCAweDM3LCAweDgxLCAweDRDLCAweDMxLCAweEMwLCAweDkzLCAweDc0LCAweDI3LCAweDc5LAorICAgIDB4QTMsIDB4NjUsIDB4N0YsIDB4MzUsIDB4MzEsIDB4OUYsIDB4NEUsIDB4MjEsIDB4MTMsIDB4Q0UsIDB4N0UsIDB4QUIsIDB4MDEsIDB4ODUsIDB4MUQsIDB4NjYsCisgICAgMHg5NSwgMHhGNSwgMHgwQywgMHgxOSwgMHg4QiwgMHgwNiwgMHgzRCwgMHhCMywgMHgxNCwgMHhEOSwgMHg2NCwgMHgyQiwgMHg0NiwgMHhCNSwgMHg4QSwgMHg0NywKKyAgICAweDBBLCAweDk4LCAweDZELCAweDRFLCAweDdDLCAweEU2LCAweDI2LCAweEM4LCAweEZBLCAweEFCLCAweDkwLCAweEZCLCAweDRGLCAweDA0LCAweENDLCAweEIyLAorICAgIDB4MEMsIDB4OUQsIDB4NjIsIDB4NDUsIDB4NTUsIDB4ODksIDB4NEEsIDB4NTUsIDB4OUIsIDB4NzYsIDB4NzEsIDB4MUQsIDB4OTAsIDB4RTQsIDB4Q0YsIDB4NDYsCisgICAgMHhGQywgMHgyRiwgMHg5MiwgMHg4OCwgMHg5QiwgMHhGQSwgMHhGMCwgMHhDRSwgMHhCMSwgMHg1NiwgMHhCNSwgMHhENywgMHg2NSwgMHhCRiwgMHg4QSwgMHg2MywKKyAgICAweDVFLCAweDBFLCAweDA1LCAweERBLCAweEQ5LCAweEZGLCAweDI2LCAweEZELCAweDJBLCAweEEwLCAweDk4LCAweDcwLCAweDMyLCAweEJDLCAweEJDLCAweDkzLAorICAgIDB4MjIsIDB4OEMsIDB4NkUsIDB4QjEsIDB4MzYsIDB4RTgsIDB4OUQsIDB4N0YsIDB4QkMsIDB4REUsIDB4REQsIDB4MEEsIDB4M0YsIDB4NkQsIDB4RUEsIDB4QTIsCisgICAgMHhEQSwgMHhBQywgMHg3QiwgMHg3NywgMHg0RSwgMHg2RCwgMHg3QSwgMHg3MSwgMHhFRiwgMHg0OSwgMHg2RSwgMHgzMSwgMHhEMSwgMHhENiwgMHhDOSwgMHgxNSwKKyAgICAweEJBLCAweDFFLCAweDE4LCAweDk4LCAweDkyLCAweEYxLCAweDIxLCAweDIzLCAweEMwLCAweEI1LCAweDlDLCAweDM3LCAweDE1LCAweDk3LCAweEE2LCAweDQ4LAorICAgIDB4MDksIDB4NkQsIDB4NDYsIDB4NkMsIDB4NDUsIDB4MDYsIDB4QzUsIDB4MjcsIDB4NjQsIDB4NTQsIDB4NzgsIDB4RjUsIDB4RkYsIDB4RDMsIDB4RDMsIDB4QUUsCisgICAgMHhDOCwgMHg2RSwgMHhGQywgMHg1OSwgMHhCMSwgMHhEOSwgMHgyNiwgMHhFOCwgMHhFRSwgMHgzQywgMHgxRCwgMHhDNywgMHhDRiwgMHhDMCwgMHhFMCwgMHhBQiwKKyAgICAweERDLCAweDEwLCAweDc0LCAweDQ4LCAweEJBLCAweEMyLCAweENBLCAweEExLCAweDlDLCAweEZCLCAweDg3LCAweDk5LCAweDdBLCAweDZCLCAweDM3LCAweDVDLAorICAgIDB4NkYsIDB4OUYsIDB4OTcsIDB4Q0IsIDB4OTAsIDB4NEYsIDB4QkMsIDB4MjYsIDB4MTUsIDB4QUMsIDB4MEQsIDB4QzYsIDB4NzIsIDB4RjYsIDB4MjksIDB4RjgsCisgICAgMHhERCwgMHg1NywgMHg2OCwgMHg0NiwgMHgzNSwgMHg2MCwgMHhEOCwgMHgxNiwgMHhFNywgMHgzRiwgMHhDNywgMHhFQywgMHhERSwgMHg2QiwgMHg4QywgMHhGMCwKKyAgICAweDNELCAweDRBLCAweDE3LCAweDU4LCAweDU1LCAweEQ1LCAweEU4LCAweEE4LCAweDRBLCAweDYyLCAweDQ4LCAweDhCLCAweDUyLCAweEJELCAweDEzLCAweDAwLAorICAgIDB4RjcsIDB4NDQsIDB4RDEsIDB4NzgsIDB4M0MsIDB4MUQsIDB4QUMsIDB4MzQsIDB4RUUsIDB4QTUsIDB4OUIsIDB4Q0MsIDB4NkQsIDB4QUQsIDB4MzAsIDB4MzEsCisgICAgMHhGQywgMHg4MSwgMHg5MSwgMHg1MCwgMHgyNiwgMHgyQSwgMHg0OCwgMHgzMCwgMHgyMCwgMHhCNywgMHhBQSwgMHg4NywgMHgwMiwgMHg5OSwgMHhCMiwgMHhFNCwKKyAgICAweEFDLCAweDgzLCAweDcxLCAweDU5LCAweERDLCAweEQ5LCAweDVELCAweDZDLCAweEIxLCAweDAzLCAweDMyLCAweDk3LCAweDk3LCAweEVFLCAweEZELCAweENDLAorICAgIDB4QzQsIDB4RjMsIDB4REQsIDB4OTQsIDB4QzYsIDB4NDMsIDB4QjksIDB4QjcsIDB4MUQsIDB4MkYsIDB4OUMsIDB4OUQsIDB4N0YsIDB4OTEsIDB4NTEsIDB4MUEsCisgICAgMHgzNSwgMHhBRiwgMHhEOCwgMHg1MCwgMHhGQiwgMHhCRiwgMHhEMCwgMHhBMCwgMHgyOCwgMHgzOSwgMHg2RiwgMHg0NywgMHg5NiwgMHg1NywgMHg3RCwgMHg1MiwKKyAgICAweDVDLCAweENELCAweEM5LCAweDdGLCAweEJCLCAweDJDLCAweDE1LCAweEZFLCAweDJBLCAweDNBLCAweEZELCAweDIzLCAweEIyLCAweDkxLCAweDZGLCAweEM3LAorICAgIDB4M0MsIDB4QjIsIDB4OTEsIDB4QjksIDB4NTksIDB4QUEsIDB4MkUsIDB4OTYsIDB4NDUsIDB4QzUsIDB4MzAsIDB4QUMsIDB4MDMsIDB4NDIsIDB4NzgsIDB4RkQsCisgICAgMHg0NiwgMHhEMiwgMHgyRiwgMHg3QSwgMHg0NiwgMHg1NSwgMHgyNiwgMHg0OSwgMHgzOCwgMHg0QywgMHhBMSwgMHhEMiwgMHg3OCwgMHgxNywgMHhENiwgMHgzRCwKKyAgICAweDAwLCAweENCLCAweEY3LCAweEIyLCAweDY4LCAweDdELCAweDRBLCAweERBLCAweDJFLCAweDU0LCAweEY2LCAweDZDLCAweENGLCAweERFLCAweDhGLCAweEY3LAorICAgIDB4RkEsIDB4RjgsIDB4ODcsIDB4MzgsIDB4Q0EsIDB4RUEsIDB4RDIsIDB4MUYsIDB4RUQsIDB4MDQsIDB4RDAsIDB4RTksIDB4MTIsIDB4Q0YsIDB4MTEsIDB4MTgsCisgICAgMHhBRiwgMHhGMywgMHg0RSwgMHgxMywgMHgzRCwgMHhCQywgMHgzMCwgMHhCNCwgMHgxNSwgMHg3MSwgMHg4QiwgMHgyRCwgMHg2MywgMHhDQSwgMHg1MywgMHg4QywKKyAgICAweDIwLCAweDZELCAweDBDLCAweDRFLCAweEY4LCAweDEwLCAweEQyLCAweDFBLCAweEMxLCAweDBDLCAweEU4LCAweENGLCAweEUxLCAweEE4LCAweDkzLCAweDdFLAorICAgIDB4OEIsIDB4MzIsIDB4OUQsIDB4NDcsIDB4MDMsIDB4MkIsIDB4OTIsIDB4MjcsIDB4NzMsIDB4RTksIDB4MzksIDB4QkQsIDB4OUYsIDB4N0IsIDB4NzYsIDB4OEIsCisgICAgMHgzQywgMHg2NiwgMHhBMSwgMHgzRSwgMHg0QiwgMHg2OSwgMHgzNiwgMHg3MSwgMHg5MywgMHgwMiwgMHg0NywgMHg1RSwgMHgzRCwgMHg4RiwgMHgyOCwgMHg3MiwKKyAgICAweDE1LCAweDg1LCAweDY0LCAweDFDLCAweDhGLCAweDJGLCAweDU4LCAweDhGLCAweERELCAweDI1LCAweDg0LCAweDcwLCAweDBBLCAweEQ0LCAweDhBLCAweDNBLAorICAgIDB4MDIsIDB4MDgsIDB4QzYsIDB4OTEsIDB4QkQsIDB4RTksIDB4QTksIDB4NjYsIDB4RDAsIDB4OUYsIDB4RTUsIDB4MkYsIDB4Q0YsIDB4QTIsIDB4OTQsIDB4N0UsCisgICAgMHhCOCwgMHg5MSwgMHgzMSwgMHg5MCwgMHhDOCwgMHgwNiwgMHg5QiwgMHg5MSwgMHhDRCwgMHhFNywgMHhERCwgMHgxRCwgMHg2RiwgMHg1NywgMHg0MCwgMHg1OSwKKyAgICAweDY0LCAweDk1LCAweDQ5LCAweEFBLCAweEE2LCAweDQ4LCAweDJGLCAweDA5LCAweDc4LCAweEU4LCAweEE1LCAweENGLCAweDQxLCAweDhDLCAweDIzLCAweDM4LAorICAgIDB4RUIsIDB4QTYsIDB4OTMsIDB4N0YsIDB4MzMsIDB4RTEsIDB4MzgsIDB4MDIsIDB4NjQsIDB4OEMsIDB4NkEsIDB4NDAsIDB4OTMsIDB4RDAsIDB4NEQsIDB4QTksCisgICAgMHg5QSwgMHg0QywgMHhFNCwgMHgyRiwgMHg4QywgMHhDNCwgMHhGRSwgMHgwMCwgMHhCNiwgMHg2QywgMHhEMiwgMHg1NSwgMHhBOCwgMHhCNiwgMHhGMSwgMHg0NCwKKyAgICAweDQzLCAweDA3LCAweDUzLCAweDM4LCAweDEyLCAweEQzLCAweEEzLCAweDI1LCAweDc2LCAweDEzLCAweDdFLCAweDgxLCAweDM5LCAweEFCLCAweDg3LCAweDkwLAorICAgIDB4MTUsIDB4RUMsIDB4ODEsIDB4QzQsIDB4MzcsIDB4MDgsIDB4MTgsIDB4REMsIDB4RUQsIDB4RTUsIDB4RjAsIDB4QTUsIDB4NjgsIDB4NDEsIDB4NTIsIDB4OTIsCisgICAgMHhGQSwgMHg1MywgMHg3MCwgMHhGNiwgMHhBMCwgMHhEQywgMHhFRiwgMHhDRiwgMHg2QywgMHgzRiwgMHhERSwgMHg3MiwgMHgzMywgMHgzRiwgMHg0MywgMHg4NCwKKyAgICAweEIwLCAweEEwLCAweEM1LCAweEVGLCAweDFCLCAweDQ1LCAweDYzLCAweDAwLCAweDZCLCAweERBLCAweDNFLCAweENELCAweDg0LCAweDE5LCAweEQ0LCAweEQ5LAorICAgIDB4MEQsIDB4OEMsIDB4MjcsIDB4RjAsIDB4NkUsIDB4QTIsIDB4MDMsIDB4RDUsIDB4RkQsIDB4RDcsIDB4OEYsIDB4NDMsIDB4NDYsIDB4NUUsIDB4MzgsIDB4OTEsCisgICAgMHg3QiwgMHgyRSwgMHhCOCwgMHg2NSwgMHhDRCwgMHgxNiwgMHhDMiwgMHhCOSwgMHg1MCwgMHg5NywgMHgxQywgMHhBRiwgMHgzQSwgMHhFMCwgMHhBOSwgMHg0NCwKKyAgICAweEU3LCAweEY2LCAweDVFLCAweDQwLCAweDQxLCAweDU1LCAweERELCAweDA1LCAweEQ5LCAweEZDLCAweDUwLCAweEIxLCAweDFELCAweDUxLCAweEVFLCAweEIwLAorICAgIDB4OEEsIDB4NTIsIDB4MzgsIDB4NzcsIDB4NTksIDB4MzYsIDB4REUsIDB4QjIsIDB4QjksIDB4MjgsIDB4MDcsIDB4RTAsIDB4QzgsIDB4NDQsIDB4ODAsIDB4NkQsCisgICAgMHg5MSwgMHg3MiwgMHg2NSwgMHhEOCwgMHhDNiwgMHhBMiwgMHhGRiwgMHhGNiwgMHg2MSwgMHgzNywgMHgyMiwgMHgxQiwgMHg5OCwgMHg2NSwgMHhGOSwgMHg5NiwKKyAgICAweERCLCAweEY5LCAweDMzLCAweEU3LCAweEFFLCAweDI1LCAweDA3LCAweEMyLCAweDAxLCAweDU0LCAweEYzLCAweEEzLCAweEZELCAweEM4LCAweDI1LCAweDhFLAorICAgIDB4N0IsIDB4N0YsIDB4NDksIDB4RDEsIDB4NTUsIDB4QTMsIDB4MTcsIDB4NTgsIDB4NTMsIDB4RjAsIDB4MEYsIDB4Q0EsIDB4MUYsIDB4NkQsIDB4RUYsIDB4MjgsCisgICAgMHg0NiwgMHgwQiwgMHgzNSwgMHgyMSwgMHg2NiwgMHg2QywgMHg0RiwgMHgwMSwgMHg3OSwgMHg5MiwgMHhEMiwgMHgxNiwgMHgzQywgMHgyQywgMHhCRSwgMHg4OCwKKyAgICAweDJFLCAweDA5LCAweEMzLCAweDhFLCAweDhFLCAweDYyLCAweDBGLCAweDVFLCAweDRELCAweDNDLCAweDBDLCAweEZFLCAweDAyLCAweDFBLCAweDAyLCAweEIxLAorICAgIDB4RjQsIDB4ODYsIDB4Q0EsIDB4MTcsIDB4MEUsIDB4NTcsIDB4MDAsIDB4MzUsIDB4NkMsIDB4QTYsIDB4QkYsIDB4MjksIDB4MzUsIDB4MjQsIDB4NzgsIDB4MzAsCisgICAgMHg5MCwgMHhGMywgMHhCRSwgMHgwQiwgMHg5RCwgMHg4OCwgMHg3OSwgMHgxNCwgMHg5MiwgMHgzMiwgMHg4RiwgMHhBMCwgMHhDMSwgMHhGNywgMHg5OCwgMHhGQSwKKyAgICAweDlCLCAweDYyLCAweDcwLCAweDg0LCAweEE2LCAweDVBLCAweEE2LCAweDAzLCAweEQwLCAweDlGLCAweEU5LCAweDZBLCAweDlGLCAweDNBLCAweEQ0LCAweEI3LAorICAgIDB4RTIsIDB4ODMsIDB4NkEsIDB4NUIsIDB4OTQsIDB4NDQsIDB4MDEsIDB4OTksIDB4MkYsIDB4N0YsIDB4NTksIDB4QTksIDB4RjIsIDB4QUQsIDB4NzQsIDB4MTUsCisgICAgMHhDNywgMHgzMSwgMHgyMiwgMHgxMywgMHg3NiwgMHhGNCwgMHgzRCwgMHg0QSwgMHgwNywgMHhBNywgMHhDMCwgMHg4OSwgMHhGQywgMHg3QSwgMHg4MywgMHg2RCwKKyAgICAweEIxLCAweEY4LCAweEEzLCAweDFGLCAweEI5LCAweDNCLCAweENDLCAweDgxLCAweDMyLCAweDM3LCAweDY1LCAweDQ2LCAweDJELCAweEFGLCAweDlBLCAweDRFLAorICAgIDB4OTYsIDB4MTQsIDB4M0QsIDB4NTcsIDB4OUMsIDB4RjEsIDB4OTIsIDB4QjMsIDB4MEUsIDB4NTQsIDB4NEYsIDB4RjAsIDB4QTAsIDB4NzAsIDB4NjYsIDB4NjUsCisgICAgMHgzNiwgMHg4RCwgMHgxMSwgMHhEMCwgMHhCRCwgMHhENiwgMHhFQiwgMHg0OSwgMHg3NiwgMHg3OSwgMHhCNCwgMHhCNywgMHg5MSwgMHhBQSwgMHgyMSwgMHgyRCwKKyAgICAweEJBLCAweDE5LCAweDFDLCAweERDLCAweDkwLCAweDE2LCAweEVDLCAweEI3LCAweDA5LCAweEZGLCAweDFGLCAweEM4LCAweEU1LCAweDc1LCAweERCLCAweDQyLAorICAgIDB4MzUsIDB4NTMsIDB4MDcsIDB4NzcsIDB4MUYsIDB4MEMsIDB4QTMsIDB4NzcsIDB4RDAsIDB4Q0EsIDB4REUsIDB4QzUsIDB4QjgsIDB4MTUsIDB4QTYsIDB4QUIsCisgICAgMHg1RSwgMHgyQiwgMHhDOSwgMHgzQSwgMHgxQiwgMHhEQywgMHhEQiwgMHg0RiwgMHgxQywgMHhBNywgMHhGNywgMHhENywgMHhCRiwgMHgyNywgMHgwNywgMHgwQywKKyAgICAweEY3LCAweEZELCAweDY0LCAweEYxLCAweEExLCAweDg5LCAweDUwLCAweEU4LCAweEE1LCAweDk0LCAweDEyLCAweEJDLCAweDBCLCAweDgyLCAweDNBLCAweERCLAorICAgIDB4RTQsIDB4Q0MsIDB4OEMsIDB4NjEsIDB4NUQsIDB4QjYsIDB4RDAsIDB4MzgsIDB4QzYsIDB4RjIsIDB4RTMsIDB4RTgsIDB4NkUsIDB4REUsIDB4QTgsIDB4NUUsCisgICAgMHgxMywgMHgwNSwgMHgwOCwgMHgxNywgMHgxRiwgMHhFNSwgMHgwNCwgMHg1MSwgMHg3RSwgMHhCOCwgMHg2NywgMHg1NSwgMHhFQSwgMHgzRiwgMHgwOSwgMHg1MywKKyAgICAweEUwLCAweDAyLCAweEQ0LCAweEQ3LCAweEU1LCAweDRCLCAweDcxLCAweDBDLCAweDI4LCAweEYwLCAweDg0LCAweDlBLCAweDNDLCAweDVFLCAweDNELCAweEEyLAorICAgIDB4NzksIDB4REUsIDB4NzUsIDB4OEIsIDB4Q0YsIDB4QTYsIDB4NjksIDB4REMsIDB4QUIsIDB4MTMsIDB4OTIsIDB4RkUsIDB4REEsIDB4RUMsIDB4ODksIDB4N0MsCisgICAgMHg4OCwgMHg2NiwgMHg5NCwgMHgxNCwgMHhEMiwgMHhEQiwgMHhDQywgMHg1RSwgMHg1RCwgMHg1RCwgMHhENiwgMHg2NCwgMHg4NSwgMHgxNywgMHg5QSwgMHg0OCwKKyAgICAweEQzLCAweENDLCAweEQ3LCAweDRDLCAweDQzLCAweDQwLCAweDEzLCAweDU2LCAweDNDLCAweDI3LCAweDI4LCAweERCLCAweERGLCAweEY5LCAweDdELCAweDEwLAorICAgIDB4RTUsIDB4QjQsIDB4QUIsIDB4NjIsIDB4NzksIDB4MDgsIDB4RkEsIDB4OUUsIDB4Q0UsIDB4QjIsIDB4OTIsIDB4MjcsIDB4MDUsIDB4OEYsIDB4NkMsIDB4N0IsCisgICAgMHhDRCwgMHhDNiwgMHhBRCwgMHg3QSwgMHhCRCwgMHg4OSwgMHgwNCwgMHgyMSwgMHgzMiwgMHg1MiwgMHhGOCwgMHg1QiwgMHhCMSwgMHg1MywgMHg1QywgMHgwQiwKKyAgICAweDQzLCAweDBFLCAweEQyLCAweDJELCAweDEzLCAweEM5LCAweEZELCAweDMzLCAweEI3LCAweDVELCAweDkxLCAweEM1LCAweEM4LCAweDMzLCAweEI4LCAweERELAorICAgIDB4MjksIDB4OUQsIDB4NUQsIDB4QzQsIDB4NUEsIDB4RjksIDB4NEEsIDB4MUEsIDB4QUYsIDB4M0YsIDB4NDAsIDB4MEQsIDB4NTMsIDB4NjQsIDB4ODUsIDB4NTEsCisgICAgMHhDNCwgMHhDRCwgMHhBMywgMHgyRSwgMHg2OCwgMHg1NywgMHhGRCwgMHg0RSwgMHhGNiwgMHg0MywgMHg4RiwgMHg3RCwgMHgyRSwgMHgzRCwgMHg0NCwgMHgxNCwKKyAgICAweEIwLCAweEYxLCAweEIzLCAweDY1LCAweDk1LCAweDNFLCAweDIwLCAweEUxLCAweDE5LCAweENDLCAweEZCLCAweDU0LCAweEE3LCAweDg5LCAweDdGLCAweEY0LAorICAgIDB4RDcsIDB4NEQsIDB4NjEsIDB4MDAsIDB4QTAsIDB4OUMsIDB4OTcsIDB4MDMsIDB4QTAsIDB4MEUsIDB4OTUsIDB4Q0QsIDB4RjQsIDB4RjUsIDB4RjksIDB4Q0EsCisgICAgMHgyRSwgMHgzRiwgMHgyMywgMHg4NiwgMHhGRSwgMHhDRiwgMHhBQSwgMHg3MCwgMHgyNiwgMHg4RSwgMHg4MCwgMHg3RiwgMHhCQywgMHg3MSwgMHgxNiwgMHg0MCwKKyAgICAweDkyLCAweDRELCAweEIzLCAweEY3LCAweDgyLCAweDU1LCAweDYwLCAweDIwLCAweEEyLCAweDc5LCAweDg4LCAweDU1LCAweDUyLCAweEQyLCAweEQ4LCAweDYyLAorICAgIDB4MUIsIDB4NEIsIDB4QkQsIDB4M0QsIDB4OTUsIDB4MzUsIDB4M0IsIDB4OTAsIDB4OTgsIDB4RTUsIDB4OTAsIDB4ODMsIDB4QjksIDB4NjgsIDB4RjAsIDB4RDMsCisgICAgMHhGRiwgMHgyMCwgMHhCOSwgMHgxOSwgMHhDQiwgMHhFMSwgMHhENiwgMHgzMCwgMHg2OSwgMHhERiwgMHhFQiwgMHg1OSwgMHhERiwgMHg4OSwgMHg3NywgMHhEMSwKKyAgICAweDQ5LCAweDhDLCAweDVBLCAweDRFLCAweDhELCAweEQ5LCAweDYzLCAweEFGLCAweEFBLCAweDJFLCAweEYxLCAweDkzLCAweDlDLCAweEFBLCAweEIyLCAweDdELAorICAgIDB4NkMsIDB4MkMsIDB4NjksIDB4MUUsIDB4REEsIDB4OUMsIDB4MjQsIDB4QUEsIDB4NTYsIDB4NjYsIDB4MTksIDB4MDMsIDB4QkUsIDB4MjEsIDB4OUQsIDB4RjQsCisgICAgMHgzNiwgMHg2NSwgMHg1QSwgMHgwMiwgMHg2QiwgMHg5MSwgMHg0MSwgMHhGNywgMHgwNywgMHg2OCwgMHgyNiwgMHhFQSwgMHgzMywgMHgxQSwgMHg3OSwgMHg5RCwKKyAgICAweEVGLCAweDdBLCAweEFGLCAweDlCLCAweDY2LCAweDhCLCAweEEyLCAweEE3LCAweDhDLCAweDE3LCAweDMzLCAweEEwLCAweDY0LCAweDJELCAweDNFLCAweDg0LAorICAgIDB4QkMsIDB4MTMsIDB4NzQsIDB4NTIsIDB4RjksIDB4MjUsIDB4MjIsIDB4NjcsIDB4OUEsIDB4QzMsIDB4OEMsIDB4MDQsIDB4NTYsIDB4NjYsIDB4RDYsIDB4NTUsCisgICAgMHhCNywgMHhGNSwgMHg1MCwgMHhEQywgMHgyMiwgMHhCNiwgMHgwRCwgMHg4MCwgMHg0OSwgMHhEOSwgMHhDOCwgMHg0OCwgMHgzQywgMHhFQiwgMHgzNywgMHg0MiwKKyAgICAweDlFLCAweDJGLCAweEU0LCAweEQ1LCAweEEzLCAweEQ1LCAweEJGLCAweEQ5LCAweEJDLCAweDNELCAweDk5LCAweDAzLCAweEJFLCAweDBDLCAweDUzLCAweDE4LAorICAgIDB4OTMsIDB4MEQsIDB4Q0UsIDB4NTksIDB4QjQsIDB4MDgsIDB4RkEsIDB4OTMsIDB4OTMsIDB4QUQsIDB4RUMsIDB4MjQsIDB4QzEsIDB4NzYsIDB4MDcsIDB4MDYsCisgICAgMHhGQiwgMHg3OCwgMHg5MywgMHg0MCwgMHhCMCwgMHg0MCwgMHg3QywgMHhCQSwgMHg0RSwgMHhCRSwgMHg5MywgMHgwNCwgMHhENSwgMHhGNiwgMHg2RCwgMHg3MiwKKyAgICAweDg0LCAweDA5LCAweDJELCAweDhBLCAweDVDLCAweDg2LCAweEYzLCAweEMwLCAweDZCLCAweDUzLCAweEU2LCAweERELCAweEEwLCAweDM0LCAweDQxLCAweDJCLAorICAgIDB4NDYsIDB4N0MsIDB4RTMsIDB4NzYsIDB4MzIsIDB4RDMsIDB4M0EsIDB4OEMsIDB4NDYsIDB4OUMsIDB4OTgsIDB4RkYsIDB4M0QsIDB4NUYsIDB4RDUsIDB4QjAsCisgICAgMHhBMSwgMHhGMiwgMHgwQSwgMHhBRSwgMHg1MiwgMHgzRCwgMHhEMSwgMHg3MSwgMHhCQSwgMHg1QiwgMHgwOSwgMHhCNCwgMHg1MiwgMHg2NSwgMHhFOCwgMHgxNSwKKyAgICAweDgwLCAweEQ1LCAweDU5LCAweDY4LCAweDY4LCAweEVDLCAweDJCLCAweDgwLCAweDcyLCAweERBLCAweENCLCAweEVCLCAweDY4LCAweEJDLCAweDY4LCAweEQwLAorICAgIDB4MTksIDB4QkMsIDB4NUUsIDB4RUQsIDB4MUYsIDB4ODAsIDB4OEYsIDB4RDEsIDB4NzYsIDB4NDQsIDB4NDYsIDB4NkUsIDB4RDksIDB4NzgsIDB4OTEsIDB4RUQsCisgICAgMHg3MSwgMHg5QiwgMHg0QSwgMHhDRiwgMHgxQiwgMHgxRCwgMHhERSwgMHhDMiwgMHg0QSwgMHhFQywgMHhGMSwgMHgyRSwgMHhDMCwgMHhDMywgMHhFQSwgMHg3RSwKKyAgICAweDc2LCAweDFGLCAweDc0LCAweENFLCAweDlELCAweEYxLCAweDZCLCAweDk0LCAweDIxLCAweDA2LCAweDAwLCAweDU4LCAweDFFLCAweDM3LCAweDZCLCAweEZCLAorICAgIDB4QjYsIDB4NDUsIDB4QjQsIDB4NzEsIDB4MzUsIDB4NzQsIDB4MjAsIDB4ODMsIDB4QTEsIDB4RDgsIDB4M0EsIDB4MUYsIDB4QTQsIDB4MTcsIDB4NzEsIDB4RUIsCisgICAgMHgxMCwgMHg5MywgMHhEMCwgMHhENywgMHg2QywgMHhEMiwgMHg0MywgMHhGMiwgMHhGMywgMHg2NiwgMHhDMSwgMHg1NSwgMHgwNywgMHgwMCwgMHg1NCwgMHhBMSwKKyAgICAweDRBLCAweDRFLCAweDU1LCAweEQ5LCAweDlELCAweDFELCAweEIwLCAweDNGLCAweDJFLCAweDYwLCAweEYxLCAweDVGLCAweDMwLCAweDFFLCAweDY2LCAweEQ4LAorICAgIDB4RTksIDB4Q0QsIDB4OTksIDB4MEIsIDB4NzIsIDB4MzUsIDB4OTksIDB4NTUsIDB4MUUsIDB4NEEsIDB4RDcsIDB4QTMsIDB4MDIsIDB4ODcsIDB4MjcsIDB4NzYsCisgICAgMHg1QSwgMHg4RCwgMHhCQywgMHgzRCwgMHhBQSwgMHhENiwgMHhEQSwgMHhGQSwgMHg0MywgMHhFNywgMHhENCwgMHhDRCwgMHg5MiwgMHhGMCwgMHhBQiwgMHhFQiwKKyAgICAweDlGLCAweEQyLCAweEM4LCAweEE0LCAweDNBLCAweEY2LCAweDFGLCAweEFFLCAweEJDLCAweDc5LCAweERELCAweERELCAweDk4LCAweEU2LCAweEE1LCAweDExLAorICAgIDB4NTMsIDB4MzUsIDB4MjQsIDB4RUUsIDB4NTUsIDB4QzYsIDB4ODYsIDB4MTcsIDB4NTUsIDB4NTcsIDB4OEEsIDB4Q0IsIDB4QUMsIDB4OUIsIDB4QTMsIDB4QkEsCisgICAgMHgyNSwgMHgyNCwgMHhCNiwgMHgxNCwgMHhDMiwgMHg0MiwgMHhCMiwgMHhERSwgMHg0MiwgMHgwQSwgMHgyMywgMHg1OCwgMHhDRSwgMHhCRiwgMHgyMSwgMHgyQSwKKyAgICAweERCLCAweEYxLCAweEJELCAweDc4LCAweEQ0LCAweDE4LCAweENDLCAweEZFLCAweDQ5LCAweEFFLCAweDA0LCAweEQ3LCAweDk0LCAweDU4LCAweDcxLCAweDZFLAorICAgIDB4OEYsIDB4M0IsIDB4RTEsIDB4QkYsIDB4NkEsIDB4OUMsIDB4NzMsIDB4ODgsIDB4OUQsIDB4RDcsIDB4QUIsIDB4N0MsIDB4RTYsIDB4QUMsIDB4MzEsIDB4RkIsCisgICAgMHhCMCwgMHg4MCwgMHhENywgMHg0NywgMHg4RSwgMHgzMiwgMHg4MSwgMHg2MSwgMHhDRiwgMHhDRiwgMHg0MSwgMHgyQiwgMHhBOCwgMHg4NCwgMHgyRCwgMHg0RiwKKyAgICAweDY0LCAweDg5LCAweEMzLCAweEM4LCAweEVFLCAweEZBLCAweEY1LCAweDZFLCAweEI5LCAweDYyLCAweDM4LCAweEJDLCAweEJBLCAweEZGLCAweDI2LCAweDc1LAorICAgIDB4QjQsIDB4RjMsIDB4MzQsIDB4QjQsIDB4OTQsIDB4RDEsIDB4MzEsIDB4NTcsIDB4ODcsIDB4REYsIDB4OTMsIDB4QkMsIDB4MjcsIDB4RTUsIDB4MzQsIDB4RUYsCisgICAgMHhGNSwgMHg1MCwgMHhEMSwgMHg1MiwgMHg1MywgMHgzNiwgMHhBRCwgMHg3RiwgMHhGMSwgMHg3QSwgMHgwQywgMHhBQiwgMHgyOSwgMHgxNywgMHgwQSwgMHhENCwKKyAgICAweEQxLCAweDE4LCAweEEwLCAweEM1LCAweEQ5LCAweEM5LCAweEZCLCAweEM2LCAweDA4LCAweDQ3LCAweEQ4LCAweDJELCAweDhCLCAweEE2LCAweDA2LCAweEEwLAorICAgIDB4QzEsIDB4RjMsIDB4RjQsIDB4NTAsIDB4NjUsIDB4MEYsIDB4RjIsIDB4MUIsIDB4MDQsIDB4NDgsIDB4M0UsIDB4OUIsIDB4QzQsIDB4NzAsIDB4NkEsIDB4Q0MsCisgICAgMHhFNiwgMHg3QywgMHg2RCwgMHgxRiwgMHgzRiwgMHgzQiwgMHg1QiwgMHhCRSwgMHg4NywgMHg2MCwgMHgzMSwgMHgwOSwgMHgzRiwgMHhGNiwgMHgzNywgMHhGMywKKyAgICAweEQ5LCAweEI4LCAweDEzLCAweDIwLCAweDM4LCAweDQxLCAweEYxLCAweEY1LCAweEUxLCAweDJBLCAweERCLCAweDMzLCAweEU0LCAweEZBLCAweENFLCAweDE1LAorICAgIDB4QTAsIDB4OUQsIDB4NTksIDB4MkMsIDB4MDUsIDB4OTIsIDB4QzAsIDB4ODcsIDB4QkUsIDB4M0MsIDB4MjEsIDB4NTMsIDB4RUYsIDB4RjgsIDB4NjMsIDB4QjUsCisgICAgMHg3RiwgMHg2NywgMHg3QSwgMHhBMywgMHg1RSwgMHg3NiwgMHg3NSwgMHg3OSwgMHg5MCwgMHgxNSwgMHhBOCwgMHg4QiwgMHgwNiwgMHhCNCwgMHg5MSwgMHg2QiwKKyAgICAweERFLCAweDM3LCAweDBELCAweDMxLCAweDQwLCAweEUxLCAweDdFLCAweEM0LCAweDFGLCAweDAwLCAweERELCAweEJBLCAweDYyLCAweDAwLCAweEVBLCAweDkwLAorICAgIDB4RTUsIDB4RjIsIDB4RUUsIDB4NzEsIDB4MkUsIDB4MUMsIDB4QTMsIDB4RkEsIDB4QkEsIDB4OUMsIDB4NjQsIDB4RkYsIDB4MTEsIDB4MDcsIDB4RDIsIDB4RTcsCisgICAgMHgwMCwgMHhGMSwgMHgwOCwgMHhBQSwgMHg4RSwgMHgxQSwgMHg1NSwgMHgyOSwgMHhGQiwgMHhGQiwgMHgxNywgMHgxMSwgMHhDNywgMHhBMywgMHhBMCwgMHg3RCwKKyAgICAweDEwLCAweDRFLCAweDAyLCAweEZBLCAweEJCLCAweDEyLCAweDNELCAweDc0LCAweEEyLCAweDg0LCAweEU3LCAweEJELCAweDc4LCAweDc3LCAweDFFLCAweDk3LAorICAgIDB4QzksIDB4MzMsIDB4MkIsIDB4MTksIDB4NUIsIDB4NUQsIDB4REQsIDB4RjIsIDB4RTEsIDB4RDYsIDB4QjMsIDB4MDgsIDB4MEQsIDB4RTAsIDB4NTYsIDB4NzEsCisgICAgMHg5RCwgMHhFMiwgMHgwQywgMHhCOSwgMHg2MCwgMHhDNCwgMHgwQywgMHg5MCwgMHg1NCwgMHgwNywgMHhEQywgMHgwMywgMHg5MiwgMHhDNiwgMHgyMCwgMHgzOCwKKyAgICAweDNELCAweDNELCAweEM1LCAweEM5LCAweEY2LCAweDAyLCAweDg0LCAweDdELCAweDg0LCAweDVDLCAweDZBLCAweDYwLCAweEU1LCAweEVGLCAweEJDLCAweDU0LAorICAgIDB4NzEsIDB4MEMsIDB4RDMsIDB4RjcsIDB4RUQsIDB4M0QsIDB4NzYsIDB4MEYsIDB4MTksIDB4MTUsIDB4NTAsIDB4NTMsIDB4QjQsIDB4ODEsIDB4OEQsIDB4MEUsCisgICAgMHhDRiwgMHhBMSwgMHg1OSwgMHg4RCwgMHhFRiwgMHhGMiwgMHgyOSwgMHgyMSwgMHhGMiwgMHg2NCwgMHhDRSwgMHg5QywgMHhFMiwgMHg5NiwgMHg0QSwgMHgwQywKKyAgICAweDFCLCAweDcxLCAweDdBLCAweDcyLCAweDQ1LCAweDI0LCAweDY4LCAweEM3LCAweEQwLCAweDZCLCAweEQyLCAweDNCLCAweDVCLCAweDE2LCAweEVDLCAweEZFLAorICAgIDB4NDAsIDB4ODQsIDB4NzIsIDB4RDcsIDB4MzUsIDB4N0MsIDB4QTgsIDB4ODAsIDB4OEMsIDB4QkEsIDB4REEsIDB4NTYsIDB4QTMsIDB4QTksIDB4QzEsIDB4Q0MsCisgICAgMHg5OCwgMHg2QywgMHgyMCwgMHg0MiwgMHhCQiwgMHhCNywgMHgxQiwgMHgwQywgMHhDRiwgMHg5OCwgMHg3NywgMHg3MSwgMHgwNywgMHgxRCwgMHhEQSwgMHg2NiwKKyAgICAweEEzLCAweEQ3LCAweEUxLCAweDJGLCAweEIwLCAweDcwLCAweDdCLCAweDUzLCAweEE5LCAweDgwLCAweDc2LCAweDE2LCAweDRFLCAweEIzLCAweDgyLCAweDBBLAorICAgIDB4MzMsIDB4RDAsIDB4MzAsIDB4MkYsIDB4NzYsIDB4ODksIDB4ODAsIDB4NzYsIDB4MjUsIDB4ODUsIDB4QTEsIDB4MjksIDB4OTcsIDB4RkEsIDB4RTMsIDB4QUUsCisgICAgMHg2RSwgMHg0NCwgMHhCRCwgMHhBMiwgMHg2QSwgMHhBNSwgMHhDQSwgMHg5QywgMHgxMywgMHg3QSwgMHhBRSwgMHg1MSwgMHg4RCwgMHg3QywgMHhDOCwgMHhFMSwKKyAgICAweEU2LCAweEE4LCAweDM2LCAweDAxLCAweDM0LCAweDFELCAweEE2LCAweDQwLCAweDkzLCAweEYyLCAweDJGLCAweDdGLCAweENELCAweDI5LCAweEI1LCAweDVCLAorICAgIDB4MTUsIDB4RUUsIDB4NTksIDB4NjMsIDB4RTYsIDB4RDcsIDB4NzcsIDB4QkIsIDB4NzcsIDB4MEEsIDB4MjUsIDB4NEQsIDB4RjMsIDB4OUQsIDB4MjMsIDB4MEMsCisgICAgMHhENCwgMHg2RCwgMHhCQiwgMHgxMSwgMHg5NiwgMHg0RSwgMHg5NiwgMHgxNSwgMHhERSwgMHhGRSwgMHhFNiwgMHgxQSwgMHhEMiwgMHgxMCwgMHhFMiwgMHhBNCwKKyAgICAweDZCLCAweDJGLCAweDk5LCAweEI1LCAweEZBLCAweEFDLCAweEM1LCAweEI2LCAweDkwLCAweEZBLCAweDZDLCAweDkwLCAweDE2LCAweDQ1LCAweEI2LCAweDkzLAorICAgIDB4NzEsIDB4NkIsIDB4ODAsIDB4RTEsIDB4OUMsIDB4NjUsIDB4MEQsIDB4MDUsIDB4ODQsIDB4QjAsIDB4MUIsIDB4QUMsIDB4NEUsIDB4QUUsIDB4NkEsIDB4NDIsCisgICAgMHg4MCwgMHhGNSwgMHhENywgMHhBQSwgMHg0MywgMHg5MywgMHhFMSwgMHgzRSwgMHg1MSwgMHg3MSwgMHg1QiwgMHg2RSwgMHhBNywgMHg5RiwgMHg1NiwgMHg5QSwKKyAgICAweEZDLCAweEZELCAweDNCLCAweEE1LCAweDA3LCAweDdDLCAweEY2LCAweDY1LCAweDIyLCAweEVBLCAweDhFLCAweDUyLCAweEFBLCAweDUxLCAweDVBLCAweDQxLAorICAgIDB4NEEsIDB4MTksIDB4N0YsIDB4OTIsIDB4MTgsIDB4MEMsIDB4MDQsIDB4NkEsIDB4RkIsIDB4MjMsIDB4MzAsIDB4RUMsIDB4RjUsIDB4NUIsIDB4NEUsIDB4RUEsCisgICAgMHhFOCwgMHg0RCwgMHgzRCwgMHg4NywgMHhBRSwgMHhFNywgMHg3QywgMHg5QSwgMHg5RiwgMHhDMCwgMHhBQywgMHhCOCwgMHgyOCwgMHhDMiwgMHhDOCwgMHg5RCwKKyAgICAweEI5LCAweDQ1LCAweDlFLCAweDRDLCAweEM2LCAweDdGLCAweDM0LCAweDE1LCAweDJGLCAweDU4LCAweEU1LCAweDEwLCAweDc1LCAweDVBLCAweDQ0LCAweEIyLAorICAgIDB4QjYsIDB4MkIsIDB4RjUsIDB4MUQsIDB4OEYsIDB4RjcsIDB4RDgsIDB4RjUsIDB4QjIsIDB4RjUsIDB4QUEsIDB4ODgsIDB4MTYsIDB4RDAsIDB4MjYsIDB4RjQsCisgICAgMHgzMiwgMHhGQywgMHg4RSwgMHg2MCwgMHhFNywgMHg0MSwgMHg2RiwgMHg5QSwgMHhDQSwgMHg1MSwgMHg4RSwgMHg0NSwgMHhGNiwgMHgzOSwgMHhGRiwgMHg4QywKKyAgICAweDQ4LCAweDYxLCAweDQwLCAweEUxLCAweEM5LCAweDQ1LCAweDgyLCAweDA0LCAweEVGLCAweEIyLCAweDU5LCAweDMwLCAweEE0LCAweDJDLCAweDYyLCAweEQ5LAorICAgIDB4MkQsIDB4REQsIDB4QUIsIDB4QUQsIDB4MTgsIDB4ODEsIDB4MTksIDB4ODEsIDB4Q0EsIDB4Q0EsIDB4NzUsIDB4QjMsIDB4RDAsIDB4MzcsIDB4MEYsIDB4RTksCisgICAgMHg1RCwgMHg1NCwgMHg4RSwgMHgwQiwgMHhCMiwgMHg1NSwgMHgyQSwgMHg5OCwgMHhDMCwgMHg3NSwgMHg1QSwgMHhFQiwgMHg5RCwgMHgxMSwgMHgzRiwgMHgyMCwKKyAgICAweEUyLCAweDNFLCAweEIwLCAweEI3LCAweENBLCAweEIxLCAweEQ4LCAweDMwLCAweDY2LCAweDRDLCAweEJDLCAweEVBLCAweDhGLCAweDc2LCAweDMwLCAweEM0LAorICAgIDB4OUQsIDB4MDMsIDB4MjEsIDB4OTMsIDB4RUYsIDB4NTQsIDB4MDYsIDB4RUMsIDB4OTMsIDB4RkEsIDB4ODksIDB4NDgsIDB4QzcsIDB4OUMsIDB4MDYsIDB4MjIsCisgICAgMHg3NywgMHhCRCwgMHhEMSwgMHg1RSwgMHhDRiwgMHg2MCwgMHhENiwgMHhBNSwgMHgxNywgMHg5QSwgMHg3NSwgMHg1MCwgMHhGMywgMHg5NywgMHhENCwgMHg4RSwKKyAgICAweEUzLCAweDE3LCAweDQxLCAweEZELCAweEMwLCAweDNCLCAweEJCLCAweDhBLCAweEE3LCAweDJCLCAweDk4LCAweEY2LCAweEJELCAweEU3LCAweDE0LCAweDJELAorICAgIDB4RTksIDB4RUYsIDB4QzksIDB4MEIsIDB4NkUsIDB4Q0MsIDB4RTMsIDB4MTcsIDB4RjMsIDB4QjgsIDB4REYsIDB4MDYsIDB4M0EsIDB4RTEsIDB4QjMsIDB4NTgsCisgICAgMHgyMiwgMHgzRCwgMHhFRiwgMHhFQSwgMHhCQSwgMHhGMSwgMHg5RCwgMHg0RiwgMHhEQiwgMHhDQywgMHgwQywgMHhFRCwgMHg1NywgMHgzOSwgMHg4MCwgMHgzQSwKKyAgICAweDNCLCAweEJDLCAweEVFLCAweDI5LCAweDA0LCAweDM0LCAweEE1LCAweDA4LCAweEU5LCAweERGLCAweDk2LCAweEQzLCAweDUzLCAweEM1LCAweDRFLCAweEY2LAorICAgIDB4MzgsIDB4QUQsIDB4Q0EsIDB4NTMsIDB4NzcsIDB4NTksIDB4RjEsIDB4ODAsIDB4OUYsIDB4QTgsIDB4QjYsIDB4REEsIDB4NUEsIDB4NTYsIDB4QUEsIDB4ODQsCisgICAgMHg2QywgMHgwRSwgMHhBOCwgMHhCMiwgMHgxMCwgMHgzNywgMHhDOCwgMHg2QSwgMHhEOCwgMHg0RCwgMHg3OCwgMHhBRSwgMHgzNiwgMHhEMCwgMHhEQywgMHhFNywKKyAgICAweDFELCAweDhFLCAweDU3LCAweEFDLCAweERELCAweDE1LCAweEFCLCAweEI1LCAweDMwLCAweDNDLCAweEU3LCAweEU2LCAweDUxLCAweEQzLCAweDI2LCAweEY2LAorICAgIDB4MTMsIDB4MUQsIDB4QzgsIDB4RkMsIDB4MjgsIDB4ODMsIDB4NUUsIDB4NjQsIDB4QTYsIDB4Q0EsIDB4QTcsIDB4NjcsIDB4RTYsIDB4MzQsIDB4MTksIDB4NjYsCisgICAgMHhDOCwgMHgwNywgMHhCNiwgMHg3NCwgMHhCMiwgMHg1OSwgMHhBRSwgMHhEQSwgMHgzNiwgMHgzRiwgMHgxRiwgMHhGNiwgMHg4MSwgMHhFQiwgMHhDNywgMHhCMywKKyAgICAweDZELCAweDFGLCAweDg3LCAweEE4LCAweDkwLCAweDM3LCAweEQ1LCAweDg1LCAweEMzLCAweDE3LCAweEM1LCAweEU1LCAweEU4LCAweENFLCAweDgzLCAweEI1LAorICAgIDB4NzMsIDB4NDksIDB4QTcsIDB4MkIsIDB4OTEsIDB4MjgsIDB4MkQsIDB4MkEsIDB4QzIsIDB4MjIsIDB4QTcsIDB4MzEsIDB4MTgsIDB4QTYsIDB4QTQsIDB4OEMsCisgICAgMHg0NSwgMHg2OCwgMHhBNSwgMHg5NSwgMHhBNCwgMHg5MSwgMHhBMywgMHhFRSwgMHg0RSwgMHgyRCwgMHhFNywgMHhFQiwgMHgyMCwgMHg4RSwgMHhFNSwgMHhGNiwKKyAgICAweDlFLCAweDUzLCAweDE1LCAweENFLCAweEE5LCAweDIxLCAweDE4LCAweEUzLCAweDlCLCAweDc1LCAweDMyLCAweDAyLCAweDNELCAweEZDLCAweDJDLCAweDlELAorICAgIDB4ODUsIDB4NkEsIDB4QjIsIDB4QjksIDB4NUQsIDB4M0EsIDB4RDEsIDB4ODUsIDB4RkIsIDB4RDgsIDB4QjgsIDB4OEIsIDB4NDgsIDB4MDksIDB4RDMsIDB4RkQsCisgICAgMHhFRCwgMHgxMSwgMHhBQSwgMHg5MCwgMHhCNSwgMHgyNSwgMHhDOCwgMHhCOSwgMHhBNSwgMHg0OSwgMHhFOSwgMHgxRSwgMHhEMCwgMHg0MywgMHhCQSwgMHg3QSwKKyAgICAweDQ5LCAweEI3LCAweEUzLCAweDg3LCAweEJFLCAweEUwLCAweEY0LCAweDgzLCAweERBLCAweDgyLCAweDRGLCAweDlFLCAweEMxLCAweDU1LCAweDU3LCAweEYyLAorICAgIDB4NTgsIDB4MjAsIDB4NjMsIDB4Q0YsIDB4MkMsIDB4MzQsIDB4NjEsIDB4NkMsIDB4MTUsIDB4RUYsIDB4MTEsIDB4QjMsIDB4N0UsIDB4QTYsIDB4MTMsIDB4RDksCisgICAgMHgyRiwgMHhEMSwgMHhBRCwgMHg2MSwgMHhERSwgMHg2OSwgMHhCOSwgMHg5RCwgMHgxQSwgMHgyNCwgMHg3MiwgMHg1RCwgMHg0RSwgMHhBMCwgMHhCNCwgMHg3RSwKKyAgICAweEU5LCAweDE0LCAweDc3LCAweDRDLCAweEQ2LCAweEFFLCAweEY2LCAweDM1LCAweDY5LCAweDJELCAweDI4LCAweDk4LCAweDI5LCAweDczLCAweERFLCAweDFELAorICAgIDB4M0QsIDB4MTAsIDB4NTAsIDB4OEMsIDB4NTUsIDB4M0QsIDB4MjcsIDB4ODksIDB4NTcsIDB4MUYsIDB4N0IsIDB4NjIsIDB4RDksIDB4MTIsIDB4RjcsIDB4OEQsCisgICAgMHhEMywgMHgwRiwgMHg2QiwgMHg5OCwgMHg2QSwgMHg2NCwgMHhGNywgMHg2MiwgMHhGQiwgMHg2OSwgMHg2RCwgMHgxNCwgMHhGMSwgMHhGNSwgMHg2RCwgMHg1RSwKKyAgICAweEMxLCAweDc5LCAweDNDLCAweDFELCAweERFLCAweDQ1LCAweDk1LCAweEU0LCAweDEwLCAweDcwLCAweDY4LCAweDc4LCAweDBGLCAweDcwLCAweEJFLCAweEFDLAorICAgIDB4RkUsIDB4RDMsIDB4NkUsIDB4NUIsIDB4OUYsIDB4N0UsIDB4MkMsIDB4RDMsIDB4MEUsIDB4QzIsIDB4NkEsIDB4OTYsIDB4NEQsIDB4MTEsIDB4RUEsIDB4NjIsCisgICAgMHg2RiwgMHhBQywgMHhBQiwgMHhFNywgMHg4RSwgMHgwRiwgMHhDNCwgMHhGQiwgMHgyMywgMHgwNiwgMHg3RSwgMHgwQSwgMHg4NywgMHg4RSwgMHg4RCwgMHhBOCwKKyAgICAweEU5LCAweDkwLCAweDJELCAweEEyLCAweEJGLCAweDBCLCAweDRDLCAweDRDLCAweDkxLCAweEUxLCAweDdGLCAweDU1LCAweDdDLCAweDAxLCAweDk0LCAweEUzLAorICAgIDB4QTEsIDB4MDgsIDB4QTAsIDB4NTIsIDB4OEEsIDB4MkIsIDB4MEYsIDB4NUQsIDB4RDUsIDB4NzAsIDB4NUYsIDB4NjUsIDB4MUMsIDB4QjksIDB4OUIsIDB4MEMsCisgICAgMHgyQiwgMHhENiwgMHg4RSwgMHg5NSwgMHgyOSwgMHg2QywgMHg2OSwgMHg2MywgMHhFQSwgMHg1MCwgMHhCMSwgMHgyRiwgMHhBRSwgMHgwNiwgMHgxNCwgMHhERCwKKyAgICAweDQ0LCAweDM4LCAweDU5LCAweEY0LCAweDM1LCAweEM2LCAweDVCLCAweEU5LCAweEE4LCAweDQyLCAweDEwLCAweEIxLCAweDNDLCAweDU2LCAweDc2LCAweDMzLAorICAgIDB4ODEsIDB4ODgsIDB4OUQsIDB4NUIsIDB4NzEsIDB4RUIsIDB4QTgsIDB4NzgsIDB4QTIsIDB4QzYsIDB4MzcsIDB4M0UsIDB4NzUsIDB4REIsIDB4NEYsIDB4QjUsCisgICAgMHhFNiwgMHg5RSwgMHg1MywgMHg2QywgMHg2NiwgMHg2NSwgMHg0QywgMHg5RiwgMHhGNywgMHg1MiwgMHg3QSwgMHgyNCwgMHg1QiwgMHgxQywgMHhEMSwgMHg2QiwKKyAgICAweEZFLCAweEQ0LCAweDA1LCAweDIyLCAweDVELCAweDRBLCAweDg1LCAweDg4LCAweDgyLCAweEY2LCAweEY3LCAweDI1LCAweEY1LCAweEVELCAweEYwLCAweENDLAorICAgIDB4NDcsIDB4REUsIDB4NzksIDB4OUEsIDB4ODgsIDB4QkUsIDB4QTEsIDB4OTQsIDB4RjEsIDB4NEUsIDB4MkMsIDB4RkEsIDB4OEMsIDB4RTUsIDB4RTAsIDB4OEMsCisgICAgMHhBMSwgMHg4NiwgMHhGRiwgMHgyQiwgMHgwQSwgMHg4NCwgMHgxQywgMHhCQiwgMHgzOCwgMHg0OSwgMHg5NCwgMHgzMywgMHhCRCwgMHhCQSwgMHhBQiwgMHg4QiwKKyAgICAweDY2LCAweDZELCAweDJDLCAweDA4LCAweDc4LCAweDIxLCAweEI3LCAweERGLCAweEFELCAweDE3LCAweDIzLCAweENGLCAweDQyLCAweDRFLCAweEJELCAweDRGLAorICAgIDB4MUIsIDB4NTAsIDB4OUEsIDB4NTUsIDB4NjAsIDB4MUQsIDB4MUQsIDB4NTIsIDB4QUMsIDB4M0EsIDB4NzAsIDB4OEUsIDB4MjAsIDB4NEMsIDB4NzQsIDB4N0YsCisgICAgMHhCRSwgMHhDMSwgMHhGQiwgMHhGNywgMHgwRSwgMHgwMywgMHg5MCwgMHgzNiwgMHgyNSwgMHgwOCwgMHgxMCwgMHhBRCwgMHgwMiwgMHhBQiwgMHgwRSwgMHhEMCwKKyAgICAweDNFLCAweEEzLCAweEY4LCAweDhELCAweDA2LCAweDczLCAweDA5LCAweDA3LCAweDgxLCAweDFCLCAweDA3LCAweDE1LCAweDU2LCAweDEzLCAweEI0LCAweDVBLAorICAgIDB4QkQsIDB4ODgsIDB4QjUsIDB4QTgsIDB4NjQsIDB4QzIsIDB4OEMsIDB4MjAsIDB4REQsIDB4QTUsIDB4RDEsIDB4M0YsIDB4NDMsIDB4RUEsIDB4RDEsIDB4NjQsCisgICAgMHg3MCwgMHg3OCwgMHg2NiwgMHgwRiwgMHgxNCwgMHhDOCwgMHgxMywgMHgzMCwgMHg3NCwgMHhFRSwgMHgyRCwgMHg4QywgMHhEMywgMHgzOSwgMHgzQiwgMHhEQSwKKyAgICAweDIxLCAweDY0LCAweDY2LCAweDBFLCAweEMwLCAweEMyLCAweENGLCAweEY5LCAweDI3LCAweERELCAweDk1LCAweERDLCAweEE3LCAweDJBLCAweDcyLCAweEUyLAorICAgIDB4MkMsIDB4NjAsIDB4NkYsIDB4OTMsIDB4NDUsIDB4MzYsIDB4NTgsIDB4N0IsIDB4RDIsIDB4NDcsIDB4ODgsIDB4REYsIDB4Q0QsIDB4RDcsIDB4NzYsIDB4RUMsCisgICAgMHhBNiwgMHgyQywgMHhFNCwgMHg1RSwgMHhEOSwgMHg3NCwgMHhCRCwgMHgwNiwgMHhDNywgMHhCRCwgMHhCQiwgMHgwOSwgMHg4NywgMHg5NywgMHgyRSwgMHgyQiwKKyAgICAweDU1LCAweDQ4LCAweEMxLCAweENELCAweDU4LCAweEIwLCAweDMzLCAweDMxLCAweEQ4LCAweDE5LCAweDU2LCAweDRBLCAweDU3LCAweDMzLCAweEVBLCAweDg2LAorICAgIDB4QTcsIDB4NjgsIDB4MkEsIDB4QkIsIDB4MTUsIDB4QzksIDB4QjUsIDB4OUMsIDB4Q0UsIDB4NzcsIDB4ODIsIDB4RDUsIDB4NTYsIDB4RTIsIDB4OEMsIDB4QTAsCisgICAgMHhDMywgMHg4NiwgMHgwQSwgMHg2MSwgMHhFNCwgMHhGOCwgMHhGNiwgMHgxRiwgMHhBNiwgMHhFMSwgMHhENywgMHg5NiwgMHhDOSwgMHhENywgMHhENywgMHgxMiwKKyAgICAweEI4LCAweDJFLCAweEZCLCAweDMxLCAweDhELCAweEZBLCAweDEzLCAweDRDLCAweEU3LCAweDgyLCAweDkwLCAweEJDLCAweDQxLCAweEE1LCAweDlCLCAweDU1LAorICAgIDB4MjQsIDB4RjUsIDB4Q0UsIDB4QTYsIDB4M0QsIDB4MjQsIDB4Q0YsIDB4QjEsIDB4NjYsIDB4RjksIDB4NTEsIDB4MkMsIDB4ODYsIDB4Q0QsIDB4NjcsIDB4ODIsCisgICAgMHgzRiwgMHhBOSwgMHgyOSwgMHg2QiwgMHgzMywgMHgwMCwgMHhEMiwgMHhCQiwgMHg3NSwgMHgxMiwgMHhFQywgMHg4RiwgMHgwRSwgMHg0NSwgMHgyQSwgMHg1QywKKyAgICAweDJELCAweDc5LCAweEM4LCAweEZELCAweDg0LCAweEU4LCAweDI5LCAweDYxLCAweDczLCAweEZGLCAweDlGLCAweEIzLCAweDIzLCAweDlDLCAweEQ1LCAweDU2LAorICAgIDB4NDcsIDB4NzIsIDB4NzEsIDB4RjMsIDB4NjksIDB4QzUsIDB4RDUsIDB4NDgsIDB4NkIsIDB4MTIsIDB4QkYsIDB4OTMsIDB4QjAsIDB4MkYsIDB4NkYsIDB4MzEsCisgICAgMHhGNiwgMHhDRCwgMHg1MywgMHhBQiwgMHg5RiwgMHhBMywgMHg2MSwgMHg2MCwgMHgwOSwgMHg0NCwgMHgyNywgMHgxOCwgMHg3NSwgMHg5MCwgMHhGQSwgMHg3MiwKKyAgICAweDc3LCAweEM5LCAweEM3LCAweEZDLCAweDJGLCAweDM3LCAweDlBLCAweEMyLCAweDk0LCAweEU5LCAweEUwLCAweDU1LCAweDQ0LCAweDE1LCAweDhBLCAweEZDLAorICAgIDB4RTIsIDB4NjgsIDB4OTMsIDB4NjksIDB4NjgsIDB4NzksIDB4QzMsIDB4NDksIDB4RjcsIDB4NkIsIDB4Q0EsIDB4RTMsIDB4RjQsIDB4NTEsIDB4REIsIDB4MDUsCisgICAgMHg2NiwgMHhCRiwgMHg5NSwgMHg4MCwgMHg5QiwgMHhFQSwgMHhFRCwgMHhFNywgMHg5QSwgMHhCNiwgMHhGRiwgMHhBMSwgMHhCQiwgMHgyRCwgMHg0QiwgMHhGOSwKKyAgICAweEQxLCAweEFDLCAweDhDLCAweDFCLCAweDhBLCAweEY1LCAweEVFLCAweDM3LCAweERGLCAweEM4LCAweEVBLCAweDczLCAweDIzLCAweDc0LCAweEFFLCAweENFLAorICAgIDB4NUYsIDB4OUIsIDB4MDgsIDB4M0QsIDB4RDksIDB4NDAsIDB4RjIsIDB4MEIsIDB4MEQsIDB4MEQsIDB4OEQsIDB4NkQsIDB4NUMsIDB4QUIsIDB4N0IsIDB4QjMsCisgICAgMHgxMiwgMHg3RSwgMHhBMSwgMHhENSwgMHhFQSwgMHhENSwgMHhBOCwgMHgxMywgMHhGOSwgMHg3MSwgMHhFMiwgMHgzQSwgMHg1QiwgMHgzNSwgMHg4QywgMHg3QSwKKyAgICAweDZGLCAweDUyLCAweEIwLCAweEI4LCAweDBGLCAweDc4LCAweDMwLCAweEYzLCAweEQ1LCAweDhBLCAweDkzLCAweEY2LCAweDI0LCAweDc1LCAweEJFLCAweDE4LAorICAgIDB4QjEsIDB4ODEsIDB4NkEsIDB4QzMsIDB4Q0MsIDB4NUIsIDB4MjMsIDB4NTUsIDB4OUQsIDB4RUIsIDB4NUYsIDB4MjUsIDB4NzYsIDB4NUMsIDB4Q0QsIDB4OUUsCisgICAgMHg1OCwgMHgxMiwgMHhGRCwgMHg0OSwgMHhDNSwgMHg0NiwgMHhEMywgMHg1RCwgMHg0NSwgMHhBRCwgMHhDRCwgMHhDMSwgMHg0QSwgMHhBMiwgMHg3QiwgMHhGNywKKyAgICAweDVELCAweDEzLCAweDk3LCAweENGLCAweEI0LCAweDk0LCAweEFBLCAweENELCAweEM5LCAweERDLCAweDlDLCAweEU0LCAweEIxLCAweDY3LCAweEUxLCAweDdELAorICAgIDB4MTEsIDB4NjQsIDB4MkUsIDB4MTMsIDB4NTksIDB4NzAsIDB4QjksIDB4MjcsIDB4MzMsIDB4NzcsIDB4QjcsIDB4QzEsIDB4QTYsIDB4NTQsIDB4QUEsIDB4NDMsCisgICAgMHg5NCwgMHhBMSwgMHgwNiwgMHhBNCwgMHhERSwgMHg4RiwgMHgwQSwgMHg5QiwgMHhENSwgMHg0MCwgMHhCRiwgMHg3RSwgMHg2OSwgMHhBQSwgMHg1QywgMHgwQSwKKyAgICAweERDLCAweDkzLCAweEZELCAweDA1LCAweDA0LCAweDZGLCAweDlELCAweDFGLCAweDQyLCAweDdELCAweDJBLCAweDYwLCAweDc3LCAweDg3LCAweEY0LCAweDUyLAorICAgIDB4QUIsIDB4QzMsIDB4RDUsIDB4ODgsIDB4RjUsIDB4ODksIDB4QTAsIDB4QzcsIDB4NkEsIDB4NDgsIDB4QjksIDB4NzUsIDB4RTUsIDB4MzksIDB4N0EsIDB4MzksCisgICAgMHhDMSwgMHgyNSwgMHhDNiwgMHhGOCwgMHhGNiwgMHg5NiwgMHg3QiwgMHgwRiwgMHg0QiwgMHhCQywgMHgzNywgMHg0NiwgMHg5RCwgMHhBNywgMHhBNSwgMHhERCwKKyAgICAweDcxLCAweDk5LCAweERBLCAweDEyLCAweDg4LCAweDE4LCAweDgwLCAweDA0LCAweEY5LCAweDVCLCAweERFLCAweDAxLCAweDJDLCAweEEyLCAweDk3LCAweERGLAorICAgIDB4QzksIDB4QzMsIDB4QzgsIDB4QUIsIDB4MTgsIDB4ODAsIDB4M0QsIDB4REEsIDB4RDAsIDB4RDYsIDB4OUMsIDB4REMsIDB4RTYsIDB4QTEsIDB4MDgsIDB4RDgsCisgICAgMHg2MywgMHhDMCwgMHgyOCwgMHg2RSwgMHg2MSwgMHgzMywgMHgzRiwgMHg0NCwgMHhEMCwgMHg4QiwgMHhCOSwgMHg0RCwgMHhCNSwgMHg5OSwgMHg1MywgMHhFOSwKKyAgICAweDIwLCAweDAyLCAweDJGLCAweDQwLCAweEQ2LCAweDE2LCAweDMyLCAweDFFLCAweEU3LCAweDZELCAweDIwLCAweENBLCAweDczLCAweEM3LCAweENBLCAweDNBLAorICAgIDB4M0MsIDB4MEMsIDB4RkUsIDB4QkIsIDB4RTgsIDB4QjQsIDB4NUYsIDB4ODUsIDB4QTYsIDB4MzMsIDB4OUMsIDB4M0QsIDB4NEIsIDB4RDksIDB4OTQsIDB4QUEsCisgICAgMHg1RCwgMHgyMywgMHhERSwgMHhDNywgMHg4RiwgMHhERSwgMHhGMywgMHg5NCwgMHg1NCwgMHg1NiwgMHgzNiwgMHg5QSwgMHg1MiwgMHgxOCwgMHg2QSwgMHg5MSwKKyAgICAweDBFLCAweDAwLCAweEQ0LCAweDJGLCAweEJCLCAweDJBLCAweDJFLCAweEVCLCAweDExLCAweDA1LCAweEE1LCAweEIzLCAweEE5LCAweDlBLCAweEIxLCAweDk2LAorICAgIDB4QUIsIDB4QkIsIDB4NUYsIDB4NTUsIDB4OUYsIDB4OUUsIDB4REIsIDB4NDQsIDB4NDQsIDB4RTcsIDB4MTksIDB4MkYsIDB4NDIsIDB4QUEsIDB4NjYsIDB4QTEsCisgICAgMHg4RSwgMHhGQywgMHg0RiwgMHhENSwgMHhCQywgMHg2QywgMHg3MCwgMHg2NSwgMHgwNSwgMHg0RiwgMHgwQSwgMHhENCwgMHhEMSwgMHgxMSwgMHhBOCwgMHgyNCwKKyAgICAweDRBLCAweERELCAweDZDLCAweDcwLCAweEE0LCAweDYyLCAweEM2LCAweDE3LCAweEIxLCAweDU1LCAweEYxLCAweDJELCAweDdCLCAweDNELCAweDhGLCAweEY5LAorICAgIDB4QjYsIDB4ODYsIDB4RUYsIDB4RDcsIDB4RjIsIDB4NzAsIDB4MkMsIDB4RjAsIDB4ODIsIDB4M0YsIDB4MkUsIDB4MDUsIDB4QzYsIDB4RkUsIDB4RDYsIDB4MTQsCisgICAgMHhGQSwgMHg0MywgMHhDRSwgMHgzQSwgMHhEOSwgMHhDMywgMHgxOCwgMHg0MiwgMHhGOCwgMHhFMywgMHg5MiwgMHg1OSwgMHg5MCwgMHg1QywgMHhFMSwgMHhCRSwKKyAgICAweDMwLCAweDM2LCAweEVGLCAweDE1LCAweDlFLCAweEZCLCAweDFGLCAweEQwLCAweDgyLCAweENGLCAweDM0LCAweEI4LCAweDQ0LCAweEYzLCAweDZDLCAweDk4LAorICAgIDB4MTMsIDB4OUEsIDB4MjUsIDB4RUMsIDB4RDcsIDB4OEMsIDB4MUIsIDB4N0QsIDB4OTIsIDB4OTEsIDB4QkIsIDB4MzksIDB4RDksIDB4NUMsIDB4NzYsIDB4QkEsCisgICAgMHg1RCwgMHg4QiwgMHhBMywgMHhGMywgMHg0OCwgMHg3MiwgMHg3RCwgMHhBRSwgMHg2RSwgMHgyQiwgMHg0MSwgMHg2RCwgMHhDQSwgMHhEQywgMHhCQSwgMHhENCwKKyAgICAweDAxLCAweDQ3LCAweDVFLCAweDkyLCAweERBLCAweDhGLCAweDA2LCAweEFGLCAweEI1LCAweDc2LCAweERFLCAweEEyLCAweEMwLCAweDY0LCAweDFBLCAweEIzLAorICAgIDB4NUYsIDB4QTEsIDB4MTYsIDB4Q0YsIDB4NzcsIDB4NDgsIDB4MUUsIDB4NUMsIDB4N0YsIDB4Q0QsIDB4MDMsIDB4QTEsIDB4MkYsIDB4ODMsIDB4OEMsIDB4MUIsCisgICAgMHg2QiwgMHhGRCwgMHg5QiwgMHg2NywgMHgzMiwgMHg3RSwgMHhCRSwgMHg5RSwgMHhFMCwgMHg4MiwgMHg3NSwgMHg3RSwgMHhBQywgMHhENywgMHgzRiwgMHgyNiwKKyAgICAweDUzLCAweEI4LCAweDgzLCAweDE1LCAweDE2LCAweDQ5LCAweDcwLCAweDAxLCAweDZGLCAweDIyLCAweDNELCAweDlCLCAweDU2LCAweDYxLCAweDk2LCAweDU5LAorICAgIDB4MDUsIDB4OTgsIDB4MEYsIDB4QTUsIDB4NzYsIDB4MjYsIDB4NUQsIDB4RkUsIDB4OTIsIDB4MEUsIDB4RjQsIDB4QUMsIDB4NzMsIDB4NDAsIDB4RUYsIDB4RUIsCisgICAgMHg1NiwgMHgxNCwgMHhDRCwgMHg4RCwgMHg5NCwgMHg4RSwgMHgzNCwgMHhCRiwgMHg1QiwgMHhBMCwgMHhEMCwgMHhFMywgMHhCQSwgMHhGMywgMHgxRiwgMHgwRCwKKyAgICAweDQwLCAweEQwLCAweEU0LCAweDUzLCAweDAwLCAweENCLCAweDMwLCAweDRBLCAweDhDLCAweEEyLCAweDk1LCAweENDLCAweEIwLCAweDM2LCAweEUzLCAweDUxLAorICAgIDB4MTksIDB4MDAsIDB4QkUsIDB4ODYsIDB4OTEsIDB4N0YsIDB4MTUsIDB4MUIsIDB4RjEsIDB4OUQsIDB4MzcsIDB4OUMsIDB4MjQsIDB4Q0IsIDB4N0YsIDB4RkIsCisgICAgMHg5NiwgMHgyMiwgMHg0OSwgMHhDMCwgMHg1RiwgMHgxMiwgMHhFOCwgMHg5NywgMHgwMCwgMHhDQiwgMHgwOSwgMHgyQiwgMHgxMCwgMHg4MiwgMHg4OCwgMHhFQSwKKyAgICAweDgzLCAweDc5LCAweDUwLCAweEE1LCAweDc4LCAweDQwLCAweDYxLCAweEQzLCAweEI3LCAweDI4LCAweDU1LCAweEM5LCAweDE2LCAweEZBLCAweDMxLCAweEEwLAorICAgIDB4MzgsIDB4Q0UsIDB4ODksIDB4MzYsIDB4QTMsIDB4NzUsIDB4QzAsIDB4MTMsIDB4RjAsIDB4QjEsIDB4RDksIDB4MEIsIDB4ODMsIDB4OTIsIDB4ODQsIDB4RUMsCisgICAgMHhGOCwgMHg0MiwgMHgyNiwgMHhGOCwgMHhBMSwgMHhERSwgMHg0RiwgMHhDMSwgMHhFOSwgMHgyMiwgMHg3NCwgMHhBMSwgMHgxMSwgMHg5MywgMHgzRiwgMHg5OCwKKyAgICAweDVDLCAweDdELCAweDg0LCAweEMxLCAweDY2LCAweEQwLCAweERDLCAweDdFLCAweDVBLCAweDlCLCAweEYxLCAweEJELCAweDQ2LCAweEJBLCAweDJCLCAweEQ5LAorICAgIDB4Q0EsIDB4ODAsIDB4REEsIDB4M0QsIDB4MDQsIDB4RTEsIDB4QkUsIDB4NzQsIDB4MUYsIDB4ODMsIDB4NkMsIDB4RDEsIDB4MUMsIDB4QzUsIDB4NkYsIDB4MUQsCisgICAgMHgxRSwgMHhGMywgMHgyOSwgMHg5MywgMHgxMiwgMHhGQiwgMHgxOSwgMHhDRiwgMHhCNywgMHhBMCwgMHhGNiwgMHgyMSwgMHgyNCwgMHg1RSwgMHgxRCwgMHhEOSwKKyAgICAweDFDLCAweDY2LCAweDIxLCAweEU5LCAweEM4LCAweDU0LCAweERCLCAweDVCLCAweDgxLCAweDRCLCAweERCLCAweEUwLCAweDM2LCAweDg4LCAweEM1LCAweDVGLAorICAgIDB4MEIsIDB4QTIsIDB4QkQsIDB4OEQsIDB4NkIsIDB4MTQsIDB4NDYsIDB4QTAsIDB4RTAsIDB4MzcsIDB4MUQsIDB4MTEsIDB4QjAsIDB4MTUsIDB4NTMsIDB4RjUsCisgICAgMHhCRiwgMHhGOCwgMHgwRiwgMHg2RSwgMHhDQiwgMHg0MiwgMHhFMiwgMHhGQywgMHhFNSwgMHhCQiwgMHhGQiwgMHg4RiwgMHg5OCwgMHgyMywgMHgyMSwgMHhDMiwKKyAgICAweDY5LCAweDZELCAweDEzLCAweDJBLCAweDU1LCAweEVGLCAweDMyLCAweEJGLCAweDlFLCAweEMzLCAweDc0LCAweDU1LCAweDBELCAweEEzLCAweEY4LCAweDU2LAorICAgIDB4QzAsIDB4RTEsIDB4MjUsIDB4OTEsIDB4NzgsIDB4NzksIDB4NkQsIDB4RUEsIDB4RUIsIDB4Q0YsIDB4NDgsIDB4ODIsIDB4QjAsIDB4RUIsIDB4NDQsIDB4MEMsCisgICAgMHhCNiwgMHhGNiwgMHgyMSwgMHg5RCwgMHhEMiwgMHhGNCwgMHg2NywgMHhDMSwgMHg5MywgMHg1NSwgMHg0OCwgMHgzNSwgMHhCMywgMHhFMCwgMHg2MiwgMHg4NiwKKyAgICAweDlDLCAweDVDLCAweEYxLCAweDRDLCAweEI1LCAweDJBLCAweEFGLCAweDNELCAweDQyLCAweEZELCAweDZGLCAweDk1LCAweDRGLCAweDAwLCAweEU5LCAweDQyLAorICAgIDB4MjAsIDB4NkUsIDB4OEIsIDB4NTEsIDB4RkYsIDB4RDQsIDB4RDgsIDB4Q0UsIDB4NzYsIDB4RTQsIDB4RTgsIDB4OUYsIDB4MkIsIDB4MEUsIDB4NDcsIDB4MTIsCisgICAgMHhDNCwgMHhFRiwgMHhBQiwgMHg5MSwgMHhDRiwgMHgzNywgMHg0RiwgMHg1MiwgMHgyOSwgMHg3NSwgMHhDMywgMHhDMCwgMHhCOCwgMHhGNCwgMHgwNCwgMHg5RSwKKyAgICAweEE5LCAweDg2LCAweDZCLCAweDkzLCAweDIxLCAweDdBLCAweDExLCAweDI2LCAweDMzLCAweEMwLCAweDBBLCAweDdCLCAweEVELCAweDBGLCAweDJCLCAweDlGLAorICAgIDB4OTEsIDB4RTMsIDB4MTksIDB4NDcsIDB4RDgsIDB4RDgsIDB4MEQsIDB4Q0IsIDB4NkQsIDB4QzAsIDB4QUMsIDB4RUIsIDB4RUIsIDB4NTksIDB4QTYsIDB4NDQsCisgICAgMHg1NiwgMHhFMywgMHg5NSwgMHhCNiwgMHgyQSwgMHhCQSwgMHhCQywgMHg2NSwgMHg1QiwgMHgwQywgMHg5RSwgMHgwNCwgMHhERSwgMHg2NSwgMHg4RSwgMHgyOSwKKyAgICAweDczLCAweDE4LCAweDBCLCAweEM3LCAweEEzLCAweDc2LCAweDQzLCAweEQ0LCAweDA3LCAweEYwLCAweDNCLCAweDA5LCAweENDLCAweEY3LCAweDEwLCAweDU3LAorICAgIDB4OUMsIDB4MDUsIDB4MkEsIDB4QzUsIDB4OEMsIDB4NTMsIDB4RTMsIDB4QTksIDB4QTYsIDB4MjAsIDB4MEIsIDB4NzEsIDB4QUYsIDB4NEIsIDB4OTUsIDB4OEYsCisgICAgMHhCMSwgMHhBNiwgMHg5NiwgMHhEQywgMHhGQywgMHg4NSwgMHhDNSwgMHg5NCwgMHhCRiwgMHg4NiwgMHhBNiwgMHg4OCwgMHhDOSwgMHhFQiwgMHgwNCwgMHgyQSwKKyAgICAweDNCLCAweEY4LCAweDE3LCAweDA3LCAweDdELCAweDBGLCAweDg5LCAweDQ0LCAweDNELCAweDk3LCAweEExLCAweDhBLCAweDRFLCAweDJFLCAweDhGLCAweDlDLAorICAgIDB4QjgsIDB4NkMsIDB4QTAsIDB4NTAsIDB4NUQsIDB4QzQsIDB4MjIsIDB4REYsIDB4RjAsIDB4NUEsIDB4RDIsIDB4RjQsIDB4M0YsIDB4MjAsIDB4RkQsIDB4QUEsCisgICAgMHg2RSwgMHgwNCwgMHhGMywgMHhGQSwgMHgyRSwgMHg1RCwgMHg2RiwgMHg2QiwgMHgyQSwgMHhFOSwgMHg3NywgMHgxNiwgMHg2NSwgMHhCNywgMHgxQiwgMHhEQywKKyAgICAweDhGLCAweDU4LCAweDJGLCAweDMyLCAweDlELCAweDU3LCAweEI3LCAweDY0LCAweEQwLCAweDc3LCAweDZFLCAweEU3LCAweDAzLCAweDM5LCAweEIwLCAweERGLAorICAgIDB4MTksIDB4OTcsIDB4MjksIDB4Q0EsIDB4RkUsIDB4RkMsIDB4QjYsIDB4MjEsIDB4RDAsIDB4MkMsIDB4MDcsIDB4MzYsIDB4MUQsIDB4NzIsIDB4MDcsIDB4OUIsCisgICAgMHhFQiwgMHhFRCwgMHgxQiwgMHhCOSwgMHhEMywgMHg4NywgMHhGOCwgMHgzMywgMHg5NCwgMHg0MiwgMHhBRiwgMHg5MSwgMHg3QywgMHg0MywgMHg5MSwgMHhBRiwKKyAgICAweDMzLCAweDIyLCAweDVFLCAweDQ4LCAweEU2LCAweDczLCAweEY2LCAweEI2LCAweDAwLCAweEFDLCAweDI5LCAweDg4LCAweENCLCAweDQ1LCAweDMxLCAweDNELAorICAgIDB4RjgsIDB4MjQsIDB4OTgsIDB4M0YsIDB4RDksIDB4MjEsIDB4QUEsIDB4NkQsIDB4Q0EsIDB4NDksIDB4NTMsIDB4QzUsIDB4MjAsIDB4NDgsIDB4QTcsIDB4Q0UsCisgICAgMHg1QiwgMHg5QywgMHgyMywgMHg1NCwgMHg1MSwgMHhGQywgMHhCNiwgMHg3QSwgMHg2MSwgMHg0RSwgMHhERSwgMHhFMiwgMHg4MiwgMHhFOCwgMHhFMCwgMHhFQywKKyAgICAweEUzLCAweDY1LCAweEE2LCAweEI1LCAweDVFLCAweDBGLCAweDVBLCAweERDLCAweEIyLCAweDlELCAweDRCLCAweDVELCAweDM1LCAweDcxLCAweERCLCAweDlGLAorICAgIDB4OUQsIDB4NUYsIDB4QjYsIDB4NTYsIDB4MTcsIDB4MDIsIDB4NjksIDB4NjUsIDB4MUMsIDB4NUUsIDB4QzIsIDB4ODEsIDB4MEQsIDB4NUQsIDB4NEEsIDB4MEYsCisgICAgMHgyNSwgMHg4OSwgMHg2MCwgMHgwNiwgMHhFQiwgMHhFQiwgMHgxQywgMHg4RCwgMHg4QywgMHgyRiwgMHhCRCwgMHhEMiwgMHg2OCwgMHhCNiwgMHhFNSwgMHg4NiwKKyAgICAweENBLCAweEVDLCAweDg1LCAweDNGLCAweDY5LCAweDkwLCAweDQ1LCAweEMzLCAweDcwLCAweDU3LCAweDcyLCAweDNFLCAweENELCAweEFBLCAweEFFLCAweEEyLAorICAgIDB4NDYsIDB4RUUsIDB4NzAsIDB4QkUsIDB4MzAsIDB4RUMsIDB4NkYsIDB4QTUsIDB4QzIsIDB4Q0QsIDB4NUIsIDB4MUMsIDB4OUEsIDB4NEQsIDB4QUEsIDB4MjMsCisgICAgMHhFNCwgMHhDNywgMHg0RiwgMHg5QiwgMHhGMiwgMHgxOSwgMHg2NywgMHgxNCwgMHgzMiwgMHg2NiwgMHhEOCwgMHhGMiwgMHgwRCwgMHhENiwgMHg2MiwgMHhFQywKKyAgICAweDk1LCAweEY1LCAweDUwLCAweEYzLCAweDk4LCAweDc1LCAweEZBLCAweEUyLCAweENBLCAweDVELCAweDNGLCAweDI4LCAweDdELCAweEQwLCAweEUyLCAweDM0LAorICAgIDB4NDAsIDB4N0IsIDB4QjUsIDB4MDcsIDB4MUYsIDB4NTIsIDB4RUYsIDB4MkMsIDB4M0QsIDB4QUIsIDB4M0EsIDB4NzIsIDB4NDUsIDB4QzUsIDB4NDcsIDB4ODMsCisgICAgMHhGQSwgMHg1QywgMHhFMywgMHg2NiwgMHg3NywgMHg0RiwgMHg4OSwgMHg3QywgMHhGRSwgMHg5QywgMHhEQiwgMHg0RSwgMHhBNCwgMHhCOSwgMHhFNiwgMHhFOCwKKyAgICAweDc4LCAweDUwLCAweDQzLCAweDIwLCAweDhCLCAweDhDLCAweDc4LCAweDI3LCAweDg4LCAweDlBLCAweDQwLCAweDg5LCAweDM2LCAweDRCLCAweDA4LCAweDJFLAorICAgIDB4QzIsIDB4NjAsIDB4NTEsIDB4OUMsIDB4RTgsIDB4OTYsIDB4OTMsIDB4OEIsIDB4NjksIDB4RjcsIDB4MkEsIDB4N0UsIDB4OUUsIDB4RjcsIDB4NEMsIDB4RkMsCisgICAgMHhEMiwgMHhGNSwgMHg5NywgMHhDMiwgMHg0OSwgMHg5RCwgMHgxQiwgMHhCMCwgMHhBQSwgMHg2MSwgMHg1MCwgMHhEOSwgMHgwNiwgMHhFNywgMHg5RSwgMHg2MSwKKyAgICAweDA2LCAweEI3LCAweEQ2LCAweERFLCAweDY0LCAweDJBLCAweDlELCAweDFFLCAweEYzLCAweEZCLCAweEQ0LCAweEMxLCAweDQ5LCAweDEzLCAweDRDLCAweEM4LAorICAgIDB4MUMsIDB4ODQsIDB4MEMsIDB4RDksIDB4RjgsIDB4NzAsIDB4N0EsIDB4NTcsIDB4N0IsIDB4RTUsIDB4QUEsIDB4RDcsIDB4MEMsIDB4RDgsIDB4OTAsIDB4QkIsCisgICAgMHgxMCwgMHg3RCwgMHg2OCwgMHg3NiwgMHhEOSwgMHg3MCwgMHhCRSwgMHg4OSwgMHg3NSwgMHhGOSwgMHhFNiwgMHg2NywgMHgwNiwgMHgxRSwgMHg0MywgMHhBRiwKKyAgICAweDQ0LCAweEIwLCAweDBDLCAweEM4LCAweDY5LCAweDlCLCAweDA3LCAweDQyLCAweEFGLCAweEIyLCAweDg3LCAweENFLCAweDM5LCAweEM2LCAweEZFLCAweENGLAorICAgIDB4RjksIDB4M0YsIDB4RDAsIDB4QjYsIDB4QzUsIDB4M0MsIDB4QzQsIDB4QzksIDB4MTUsIDB4MDQsIDB4QTcsIDB4NEIsIDB4QjIsIDB4QzIsIDB4MUYsIDB4NTIsCisgICAgMHgwOCwgMHg1RSwgMHhCQiwgMHgxQywgMHg4NywgMHgwQywgMHhGMywgMHhGMiwgMHgzRCwgMHhFMiwgMHhDMywgMHhFQywgMHhGRCwgMHhBNiwgMHg5OSwgMHg2QiwKKyAgICAweDZELCAweDJGLCAweEM2LCAweEUwLCAweDI0LCAweEU1LCAweENELCAweEY1LCAweDBDLCAweDQzLCAweERELCAweERBLCAweDg1LCAweEVGLCAweERELCAweDQ3LAorICAgIDB4REQsIDB4QjAsIDB4RTUsIDB4NTYsIDB4OEUsIDB4QzcsIDB4M0UsIDB4MjAsIDB4MjksIDB4MEYsIDB4MzYsIDB4NkMsIDB4NUMsIDB4MzksIDB4OUMsIDB4NjAsCisgICAgMHg5QiwgMHg0MiwgMHhERSwgMHg0MCwgMHg2RSwgMHhDMCwgMHgyNywgMHg3NiwgMHg2OCwgMHg1QywgMHgzNSwgMHhFNSwgMHg1NywgMHgxRSwgMHgyNywgMHgzOCwKKyAgICAweDNDLCAweDU5LCAweDE3LCAweDNFLCAweEMxLCAweDc3LCAweDA2LCAweDQ1LCAweEJELCAweDVFLCAweEZELCAweDEzLCAweDcyLCAweDJFLCAweENELCAweDYyLAorICAgIDB4MjgsIDB4NjMsIDB4QUYsIDB4NjEsIDB4MjYsIDB4NjcsIDB4MDcsIDB4MEYsIDB4QzMsIDB4RkUsIDB4QkIsIDB4OTksIDB4MTcsIDB4NkYsIDB4QkIsIDB4ODIsCisgICAgMHhDQywgMHg2RSwgMHg5OSwgMHhGMSwgMHg3MCwgMHhBRCwgMHg0QiwgMHg3OCwgMHgxQywgMHg0NCwgMHg3OCwgMHgzNiwgMHgwNSwgMHgwMSwgMHgzOCwgMHgxRSwKKyAgICAweDhFLCAweEIxLCAweENFLCAweDJGLCAweEQyLCAweDlGLCAweDA5LCAweDRGLCAweDAxLCAweEIxLCAweDEyLCAweERELCAweDhFLCAweDk0LCAweDUxLCAweDQzLAorICAgIDB4Q0QsIDB4NDgsIDB4RTQsIDB4NjIsIDB4NzEsIDB4QTUsIDB4NjQsIDB4REQsIDB4QjUsIDB4MjUsIDB4MkIsIDB4NjcsIDB4OTcsIDB4MTcsIDB4QzgsIDB4RTUsCisgICAgMHhEMSwgMHg1MiwgMHgwRSwgMHgyRSwgMHhEMSwgMHg3RCwgMHhBMSwgMHgwQywgMHgyRSwgMHgxNiwgMHg5MSwgMHhDMiwgMHg1RCwgMHhFMCwgMHgxNiwgMHg0MSwKKyAgICAweDkxLCAweEE5LCAweDI3LCAweDg0LCAweDM2LCAweDFDLCAweEMyLCAweEFDLCAweDEwLCAweDY5LCAweDFFLCAweDVFLCAweDgzLCAweEU0LCAweEEyLCAweDlCLAorICAgIDB4RUUsIDB4NEYsIDB4QUUsIDB4RTUsIDB4QUYsIDB4ODMsIDB4NkMsIDB4RDcsIDB4RjgsIDB4MjQsIDB4NDEsIDB4MzMsIDB4MkIsIDB4MDIsIDB4RDgsIDB4QkUsCisgICAgMHg3NywgMHg4RCwgMHhDNCwgMHg4NiwgMHhCQSwgMHgyRiwgMHhFNiwgMHgwRiwgMHg0NiwgMHhFOCwgMHg4MywgMHgzOCwgMHg4RSwgMHgxNywgMHgwMiwgMHg5OCwKKyAgICAweEY3LCAweDNCLCAweEEwLCAweDBDLCAweERELCAweDM0LCAweDI1LCAweDBDLCAweDE5LCAweDk0LCAweDE4LCAweEY5LCAweEE3LCAweENELCAweDMzLCAweEVELAorICAgIDB4RDEsIDB4QTksIDB4OEIsIDB4QjcsIDB4RUYsIDB4NkIsIDB4RjAsIDB4MUQsIDB4NzEsIDB4MjIsIDB4NkQsIDB4QzUsIDB4NUIsIDB4RjAsIDB4Q0EsIDB4MDgsCisgICAgMHhFMCwgMHhCRSwgMHg3NSwgMHg3NiwgMHg1RSwgMHg1MCwgMHg2OCwgMHhBMywgMHhDMSwgMHgzOSwgMHgwOCwgMHgxOCwgMHg4NSwgMHhBOCwgMHhDNiwgMHhERSwKKyAgICAweDUwLCAweDBFLCAweEYwLCAweDM4LCAweDhCLCAweEE5LCAweDE2LCAweEZCLCAweDJELCAweDY5LCAweDE2LCAweEEyLCAweDU1LCAweDNELCAweDQ4LCAweDgyLAorICAgIDB4RDMsIDB4MTQsIDB4Q0EsIDB4NzYsIDB4MjYsIDB4QTMsIDB4NjEsIDB4NTYsIDB4QzEsIDB4MEUsIDB4RjcsIDB4QUUsIDB4NjEsIDB4QzQsIDB4RUMsIDB4QjgsCisgICAgMHgxRCwgMHg3QywgMHg4RSwgMHg0QSwgMHg5RiwgMHhDNCwgMHg2MiwgMHhCOCwgMHg1QSwgMHg0MiwgMHg1RSwgMHhBOSwgMHg1RSwgMHgyMCwgMHgwNiwgMHg2NiwKKyAgICAweEJELCAweDUzLCAweDQ5LCAweDg0LCAweDhDLCAweEU3LCAweEE0LCAweEIzLCAweEY4LCAweDI1LCAweEEzLCAweEY4LCAweDQ5LCAweDhCLCAweDhGLCAweDY2LAorICAgIDB4RUYsIDB4QzksIDB4QkYsIDB4ODgsIDB4NUEsIDB4RTksIDB4MjIsIDB4REQsIDB4MzgsIDB4RUUsIDB4RUQsIDB4N0IsIDB4QjcsIDB4MEMsIDB4MEEsIDB4RUMsCisgICAgMHgyNiwgMHg3MiwgMHg1QSwgMHhFOCwgMHhBRiwgMHg2MiwgMHhBRSwgMHgwMSwgMHhGQSwgMHhBMCwgMHg5MSwgMHg1MiwgMHg1NSwgMHg0OSwgMHgwOSwgMHg1QSwKKyAgICAweDRFLCAweEM0LCAweEI0LCAweDc4LCAweDhDLCAweEFFLCAweDRGLCAweEVELCAweDMyLCAweDg4LCAweDU1LCAweEUxLCAweDQwLCAweERBLCAweDc3LCAweDFBLAorICAgIDB4MTcsIDB4MDAsIDB4OUMsIDB4MTQsIDB4QjksIDB4NTIsIDB4OTQsIDB4QjMsIDB4MDIsIDB4OTEsIDB4MDMsIDB4OTAsIDB4RjQsIDB4RjEsIDB4NEMsIDB4NTIsCisgICAgMHg2QywgMHg1MiwgMHgzOSwgMHhDNSwgMHg5MiwgMHhDRSwgMHg5MSwgMHg0MiwgMHgyNywgMHhBRSwgMHgxNiwgMHg0NCwgMHhDRiwgMHhFNCwgMHhCOCwgMHg1MSwKKyAgICAweDM5LCAweDAzLCAweEMwLCAweEVFLCAweENFLCAweEFCLCAweDlGLCAweDc2LCAweDc1LCAweDUzLCAweENELCAweDVFLCAweDg4LCAweDU0LCAweDlGLCAweDYxLAorICAgIDB4NzAsIDB4RkEsIDB4REQsIDB4MzYsIDB4RkEsIDB4MzcsIDB4MzUsIDB4NkQsIDB4RjQsIDB4MEYsIDB4MjksIDB4QzIsIDB4MjIsIDB4NDAsIDB4N0IsIDB4ODYsCisgICAgMHg3RSwgMHhDRSwgMHg5QSwgMHhFRCwgMHgxQSwgMHhEQywgMHg0OSwgMHhERSwgMHg3QSwgMHhDRCwgMHhDQiwgMHgwRiwgMHhBQiwgMHhGQywgMHg5NywgMHhDOCwKKyAgICAweDhCLCAweDNBLCAweDBBLCAweEFCLCAweDIzLCAweDZELCAweEZDLCAweEU5LCAweEM0LCAweDMwLCAweDQ2LCAweDMwLCAweDgyLCAweDE0LCAweEZCLCAweEJBLAorICAgIDB4NzcsIDB4NkYsIDB4MTYsIDB4MzIsIDB4RDcsIDB4RTgsIDB4QUEsIDB4NzksIDB4M0QsIDB4MEIsIDB4OTEsIDB4MTEsIDB4NDUsIDB4NTcsIDB4MDUsIDB4NzksCisgICAgMHg5OSwgMHgxMiwgMHg1NSwgMHgzNiwgMHg1QiwgMHgwNiwgMHhDQSwgMHhBQSwgMHg4MiwgMHg1MSwgMHg4NCwgMHg4QiwgMHgyMCwgMHhFOSwgMHg2QSwgMHgzQSwKKyAgICAweDE3LCAweDMwLCAweDMwLCAweEZELCAweDk5LCAweEVDLCAweEJELCAweDU0LCAweENDLCAweDNBLCAweEMwLCAweEZGLCAweDVDLCAweDQ5LCAweEUwLCAweDZDLAorICAgIDB4OTksIDB4MEYsIDB4NDgsIDB4Q0QsIDB4NzAsIDB4NjIsIDB4N0IsIDB4NjksIDB4OTIsIDB4MzQsIDB4MkQsIDB4NDQsIDB4NjMsIDB4MjMsIDB4OUUsIDB4MUYsCisgICAgMHgxNywgMHg3QiwgMHgyQSwgMHhGNSwgMHgwNiwgMHgwMiwgMHgyNCwgMHgyMSwgMHg1MSwgMHgyRSwgMHgwMiwgMHgyRCwgMHgyMywgMHg1MSwgMHg3QywgMHg4RSwKKyAgICAweEQzLCAweDMyLCAweEUyLCAweDI4LCAweDNCLCAweDZCLCAweDBFLCAweDVCLCAweDRCLCAweEQ1LCAweDJCLCAweDM4LCAweDFFLCAweDVDLCAweEM5LCAweDMxLAorICAgIDB4ODgsIDB4ODUsIDB4QjksIDB4RDMsIDB4NkYsIDB4MzcsIDB4QUYsIDB4OTMsIDB4ODAsIDB4RDYsIDB4MTksIDB4MzEsIDB4OUEsIDB4OTgsIDB4NDUsIDB4RjksCisgICAgMHg3NCwgMHgzMCwgMHg5OSwgMHg1NiwgMHgyOSwgMHhGMywgMHhGQSwgMHgzMywgMHg2QSwgMHhCQiwgMHg3MCwgMHg1OCwgMHg1MywgMHgwRSwgMHgxNywgMHgyNywKKyAgICAweERELCAweDNELCAweEU4LCAweDA3LCAweDg1LCAweDJBLCAweENCLCAweDMzLCAweDYwLCAweDIzLCAweEIwLCAweEU5LCAweDYwLCAweDdDLCAweEYxLCAweDQ3LAorICAgIDB4NjksIDB4RTEsIDB4NjksIDB4NTcsIDB4M0UsIDB4OEMsIDB4NDksIDB4MzAsIDB4QTMsIDB4N0EsIDB4RDYsIDB4NzksIDB4MUYsIDB4RjksIDB4Q0YsIDB4MUMsCisgICAgMHhFMSwgMHg1NiwgMHhGMSwgMHg5MiwgMHhDMCwgMHg2NiwgMHhDNywgMHg2NywgMHhGMCwgMHhDNiwgMHg3OCwgMHg2QSwgMHg0OCwgMHgyNiwgMHhENCwgMHhFOSwKKyAgICAweEZBLCAweDUwLCAweDhCLCAweEM0LCAweEIxLCAweDE5LCAweDk2LCAweDFGLCAweDBDLCAweDY3LCAweDBBLCAweEIwLCAweDRCLCAweDc1LCAweDFDLCAweEJBLAorICAgIDB4ODYsIDB4NDIsIDB4RTMsIDB4MkUsIDB4MEMsIDB4RjgsIDB4RkMsIDB4MTksIDB4NjYsIDB4N0IsIDB4NTEsIDB4REIsIDB4M0UsIDB4QkIsIDB4QTIsIDB4QzAsCisgICAgMHhCRiwgMHgzMSwgMHg5QSwgMHg4QSwgMHgzRSwgMHg0RiwgMHgyNCwgMHhBMCwgMHhEMywgMHhEQSwgMHgxNSwgMHgzNSwgMHg5MSwgMHgxMCwgMHgzRiwgMHgxQiwKKyAgICAweDQwLCAweDlBLCAweDc5LCAweEI3LCAweEU0LCAweDhCLCAweDlFLCAweEJCLCAweEQ4LCAweDk4LCAweDMxLCAweDhDLCAweDY5LCAweERFLCAweDI1LCAweEZELAorICAgIDB4MEUsIDB4ODcsIDB4QzMsIDB4RDksIDB4OEMsIDB4QUQsIDB4QzAsIDB4OTUsIDB4MTksIDB4MTUsIDB4MTgsIDB4RTEsIDB4QkQsIDB4QjEsIDB4NEYsIDB4RDQsCisgICAgMHg5NCwgMHgwOSwgMHgzQiwgMHhENSwgMHgwNywgMHhDMSwgMHg3MiwgMHhFRSwgMHgzMywgMHhBMiwgMHg5RSwgMHhBQSwgMHgwNSwgMHg0RSwgMHhEMywgMHhEMywKKyAgICAweDQzLCAweDQzLCAweEI5LCAweEU2LCAweEJFLCAweENGLCAweEU4LCAweEU0LCAweDAwLCAweDExLCAweDVELCAweEEyLCAweDk3LCAweEFFLCAweDFGLCAweDNDLAorICAgIDB4M0MsIDB4MEYsIDB4QTUsIDB4MDYsIDB4RTUsIDB4RjgsIDB4REUsIDB4OTQsIDB4MDAsIDB4QTAsIDB4OTksIDB4RDIsIDB4NEMsIDB4MTMsIDB4MDUsIDB4MDksCisgICAgMHhCOCwgMHgwOCwgMHg2MSwgMHgzQSwgMHg2NywgMHhCQiwgMHg3NywgMHhBOCwgMHg2OSwgMHhBMywgMHg4RiwgMHhGNCwgMHhGMiwgMHgyQSwgMHg2QSwgMHg4OCwKKyAgICAweDlFLCAweEZELCAweDgxLCAweEYxLCAweDdCLCAweEE3LCAweEZBLCAweDE1LCAweENGLCAweDMyLCAweDA0LCAweDIyLCAweEQzLCAweDYyLCAweDRDLCAweEY0LAorICAgIDB4NjUsIDB4NzYsIDB4NUMsIDB4ODUsIDB4NUUsIDB4OTgsIDB4MTgsIDB4NkEsIDB4RjgsIDB4OTUsIDB4QzEsIDB4MkEsIDB4OEUsIDB4RkYsIDB4Q0QsIDB4NDgsCisgICAgMHg4RSwgMHg1OCwgMHhFNiwgMHhDQSwgMHg4QSwgMHg4RSwgMHhBMiwgMHgwRCwgMHgzMywgMHgzNSwgMHhBMCwgMHhEMywgMHhDNiwgMHgyOCwgMHg3MiwgMHg2MywKKyAgICAweEI0LCAweENCLCAweDBBLCAweEIxLCAweDQ3LCAweEY4LCAweEZDLCAweEYxLCAweEMzLCAweDdBLCAweEFELCAweDU2LCAweDUxLCAweDRELCAweEU1LCAweDUzLAorICAgIDB4QjEsIDB4M0YsIDB4QzQsIDB4MkMsIDB4N0UsIDB4OTMsIDB4RUIsIDB4NzEsIDB4OTEsIDB4MDYsIDB4N0MsIDB4QzcsIDB4NEUsIDB4MUYsIDB4QzAsIDB4M0MsCisgICAgMHg3MCwgMHg3QywgMHg1NCwgMHg3QSwgMHhBNywgMHg0NiwgMHg5MiwgMHgzMywgMHgzQywgMHg5OSwgMHgzMiwgMHgwNywgMHhBRSwgMHg3RiwgMHhEOSwgMHhGMCwKKyAgICAweEVFLCAweDRFLCAweDI2LCAweEVFLCAweEQ3LCAweDY3LCAweENELCAweEU2LCAweDQ3LCAweEQxLCAweDFDLCAweDE3LCAweDcxLCAweDY4LCAweEFBLCAweDA3LAorICAgIDB4QTQsIDB4RjQsIDB4RDAsIDB4ODcsIDB4QTMsIDB4NjUsIDB4MkQsIDB4QTgsIDB4M0EsIDB4MDYsIDB4N0IsIDB4MjMsIDB4NkMsIDB4QTcsIDB4RDMsIDB4NEIsCisgICAgMHhFMywgMHg0NiwgMHg2QywgMHgzMSwgMHg1QiwgMHg0RiwgMHg4RiwgMHhCRiwgMHhFQiwgMHgxNywgMHg2OCwgMHgwNSwgMHhGMywgMHgzRCwgMHhEOSwgMHhBMSwKKyAgICAweDdCLCAweDA1LCAweDdFLCAweDA1LCAweDE0LCAweEVGLCAweDAwLCAweEUyLCAweEY2LCAweEQzLCAweEYxLCAweDRDLCAweDYwLCAweEM5LCAweDcxLCAweEJELAorICAgIDB4OEIsIDB4NDcsIDB4ODQsIDB4MjQsIDB4OTksIDB4OTQsIDB4OTksIDB4MDMsIDB4QjcsIDB4RTcsIDB4MUUsIDB4OEEsIDB4NTYsIDB4RTAsIDB4Q0IsIDB4RDgsCisgICAgMHgxMiwgMHg3MywgMHgwOCwgMHgzRCwgMHgzMSwgMHhDRiwgMHhFMiwgMHg0NiwgMHhCRiwgMHgxNiwgMHg2MiwgMHgxMywgMHhBMywgMHgzQiwgMHg2MiwgMHgyQSwKKyAgICAweDZDLCAweEY0LCAweDc3LCAweDkwLCAweDA0LCAweDdBLCAweDk1LCAweDJDLCAweDYxLCAweEQwLCAweEE0LCAweDg0LCAweDNGLCAweDMyLCAweDQ4LCAweEJBLAorICAgIDB4RTUsIDB4Q0QsIDB4MzksIDB4RjUsIDB4NUQsIDB4NUEsIDB4M0UsIDB4MEEsIDB4NEMsIDB4QkYsIDB4MEEsIDB4RUMsIDB4Q0YsIDB4MEIsIDB4RjIsIDB4RUEsCisgICAgMHgzOCwgMHgxNywgMHgzNiwgMHhEQiwgMHhENiwgMHgyRCwgMHg0OCwgMHg3OCwgMHhCQiwgMHgyMCwgMHg1RiwgMHg1RiwgMHhERiwgMHg2MywgMHg2RCwgMHhGNSwKKyAgICAweDNELCAweDc0LCAweEE4LCAweEUxLCAweEU0LCAweDRDLCAweDg3LCAweDY1LCAweDc4LCAweDFCLCAweDVCLCAweEM2LCAweEVFLCAweDM3LCAweDY5LCAweDM5LAorICAgIDB4OEMsIDB4RDYsIDB4M0MsIDB4MjQsIDB4NkIsIDB4RkUsIDB4NEEsIDB4QzksIDB4MTMsIDB4RjgsIDB4MzMsIDB4MkMsIDB4REIsIDB4QTMsIDB4N0EsIDB4RTMsCisgICAgMHg2QywgMHg3NiwgMHgxOCwgMHgwMSwgMHg2MiwgMHg5NSwgMHg2NywgMHg0QSwgMHhCNSwgMHhFNywgMHhGNCwgMHhENywgMHg2MywgMHg3NCwgMHgyRiwgMHhFMCwKKyAgICAweDU3LCAweDNCLCAweDNDLCAweDMzLCAweEM2LCAweDA2LCAweDAzLCAweEQ3LCAweDkzLCAweDBGLCAweDhELCAweERELCAweDU3LCAweEMzLCAweDBDLCAweDUwLAorICAgIDB4QkMsIDB4MDgsIDB4RjYsIDB4OTgsIDB4QTEsIDB4MDQsIDB4MUQsIDB4QzgsIDB4NDYsIDB4MDIsIDB4MkUsIDB4MkQsIDB4M0QsIDB4RjEsIDB4Q0QsIDB4NEIsCisgICAgMHg5QiwgMHgzRiwgMHgwQywgMHhCQywgMHhEMywgMHgyRiwgMHg4NywgMHhFNywgMHg1MCwgMHhBMSwgMHg3QiwgMHg5NCwgMHhDNSwgMHhDRCwgMHhFQywgMHhFOSwKKyAgICAweDI5LCAweEU3LCAweDZDLCAweEQ0LCAweEMxLCAweDE4LCAweEE0LCAweENBLCAweDRGLCAweDAwLCAweDRFLCAweEY5LCAweDM2LCAweDg5LCAweEZELCAweDA3LAorICAgIDB4NDcsIDB4RTYsIDB4RDUsIDB4QjcsIDB4QUEsIDB4MzQsIDB4N0MsIDB4MTYsIDB4N0IsIDB4Q0IsIDB4NDksIDB4OTIsIDB4RjIsIDB4MDMsIDB4NjYsIDB4OEUsCisgICAgMHhFRiwgMHgxMSwgMHhGQywgMHg4RiwgMHgyNiwgMHhBNSwgMHg3OCwgMHg5QSwgMHg0QiwgMHgyOSwgMHhDNywgMHg5OCwgMHgxNSwgMHhBMSwgMHgzNSwgMHg1OCwKKyAgICAweDBDLCAweEQ1LCAweEY4LCAweDZGLCAweDUwLCAweDFDLCAweERDLCAweDQxLCAweDIwLCAweENDLCAweDJBLCAweDQyLCAweEUxLCAweEVGLCAweDI4LCAweDIyLAorICAgIDB4NjcsIDB4ODksIDB4NzEsIDB4NUIsIDB4OUIsIDB4QkEsIDB4OTIsIDB4RUQsIDB4MUMsIDB4QjYsIDB4OUMsIDB4ODksIDB4RDQsIDB4MDAsIDB4MjEsIDB4RDMsCisgICAgMHhGMSwgMHhEOSwgMHgzRSwgMHg5QiwgMHg1NSwgMHg3MSwgMHhGNywgMHg3NSwgMHgyNiwgMHg1QSwgMHgxMywgMHg2NSwgMHhCRiwgMHg2RSwgMHg0NiwgMHg5MCwKKyAgICAweDg1LCAweDdCLCAweEQ3LCAweEQ0LCAweERDLCAweDkwLCAweDIzLCAweDRDLCAweDgzLCAweDEyLCAweDg3LCAweDdELCAweDhELCAweEYyLCAweDM5LCAweDRFLAorICAgIDB4OUEsIDB4QTAsIDB4NEEsIDB4REUsIDB4QUIsIDB4Q0EsIDB4QTcsIDB4Q0IsIDB4QkQsIDB4MUEsIDB4QTUsIDB4M0YsIDB4NTQsIDB4MTIsIDB4OTIsIDB4NkYsCisgICAgMHhFRiwgMHgzNywgMHg4OCwgMHhERCwgMHg1MiwgMHhEQiwgMHhEMCwgMHg4RiwgMHhFQSwgMHhDRCwgMHg4OCwgMHg2OSwgMHg4QywgMHg0NCwgMHg2QSwgMHhGMywKKyAgICAweEQwLCAweDYxLCAweDhCLCAweDIwLCAweDkxLCAweDE3LCAweDMyLCAweDMyLCAweEJFLCAweDM5LCAweDQyLCAweEU3LCAweDFDLCAweDNFLCAweDhBLCAweDAyLAorICAgIDB4NTgsIDB4OTUsIDB4NzYsIDB4NDUsIDB4M0EsIDB4MDYsIDB4MjgsIDB4RTAsIDB4N0EsIDB4NDcsIDB4MjMsIDB4ODcsIDB4QjEsIDB4NUYsIDB4RjAsIDB4RTEsCisgICAgMHgyRCwgMHgxOCwgMHhBNCwgMHg5QiwgMHhFNywgMHg5MCwgMHhCMywgMHhGQywgMHg5NiwgMHgyRCwgMHhBQSwgMHgwNCwgMHg3MiwgMHgzOSwgMHhDQSwgMHhGNiwKKyAgICAweDhCLCAweEZFLCAweDVELCAweEY4LCAweEFBLCAweEZGLCAweEJFLCAweDk0LCAweEUzLCAweEVGLCAweEYyLCAweDc0LCAweDIyLCAweEQ0LCAweDhDLCAweDgyLAorICAgIDB4MkMsIDB4NzMsIDB4OEIsIDB4QjgsIDB4MzksIDB4MzUsIDB4Q0YsIDB4Q0IsIDB4NDgsIDB4RTgsIDB4QUMsIDB4MDUsIDB4NDksIDB4RUUsIDB4MDgsIDB4MzAsCisgICAgMHhGRiwgMHg5OSwgMHg0OCwgMHhFMSwgMHg2NiwgMHhERCwgMHgwMSwgMHhEOSwgMHgzOSwgMHgyMiwgMHhERSwgMHgyQywgMHgxQywgMHg0NywgMHgwOCwgMHhBMywKKyAgICAweDk3LCAweEZFLCAweDAyLCAweDhDLCAweDZCLCAweDlFLCAweEJGLCAweEM0LCAweDQ2LCAweEFCLCAweDk0LCAweDZELCAweDg2LCAweEMyLCAweDQ1LCAweDk1LAorICAgIDB4QjksIDB4MUQsIDB4MTUsIDB4ODksIDB4QTksIDB4NzYsIDB4N0EsIDB4REQsIDB4MTEsIDB4REMsIDB4NTQsIDB4NEUsIDB4MzcsIDB4OTYsIDB4MUUsIDB4MzcsCisgICAgMHhFMiwgMHhCNCwgMHhFMCwgMHhEOCwgMHhCNiwgMHhCQywgMHhGOCwgMHhBNCwgMHg0NywgMHhDNSwgMHg2RSwgMHgzMywgMHg4RiwgMHhDMiwgMHg1QywgMHgzQiwKKyAgICAweDhFLCAweDUxLCAweDAxLCAweDEwLCAweEYxLCAweDA4LCAweDEwLCAweEQ4LCAweDQ3LCAweDM4LCAweEY0LCAweDI4LCAweDIyLCAweDBFLCAweDIxLCAweDk2LAorICAgIDB4OEIsIDB4ODksIDB4QTYsIDB4NDMsIDB4NkIsIDB4REEsIDB4QkMsIDB4RDUsIDB4REMsIDB4NzQsIDB4NzQsIDB4QzYsIDB4NjQsIDB4Q0EsIDB4NkEsIDB4NDIsCisgICAgMHg3QywgMHgyNCwgMHg4MCwgMHg0MCwgMHgxRiwgMHg4MiwgMHgxOSwgMHgyNSwgMHhCNywgMHg5NywgMHg0MCwgMHg3OCwgMHgxNiwgMHgxOCwgMHg3MSwgMHg1QywKKyAgICAweDQ0LCAweENELCAweDFCLCAweDlGLCAweEM5LCAweEUwLCAweEE2LCAweDNGLCAweEY0LCAweEFBLCAweDJCLCAweDRFLCAweEMyLCAweDEyLCAweDI0LCAweDNGLAorICAgIDB4OTgsIDB4QUQsIDB4NTQsIDB4ODQsIDB4QUYsIDB4NzIsIDB4QTksIDB4QkYsIDB4NjEsIDB4ODUsIDB4QTEsIDB4OTUsIDB4RDgsIDB4QzEsIDB4NzIsIDB4NEIsCisgICAgMHgwMiwgMHgyMSwgMHgzOCwgMHg3RSwgMHgyOSwgMHhBOCwgMHg5MCwgMHhCQSwgMHg5QSwgMHhGOSwgMHg0RCwgMHhCNCwgMHhGQywgMHhBQywgMHhCOCwgMHgyNywKKyAgICAweDc3LCAweEEwLCAweEJFLCAweDFFLCAweDQ1LCAweEZFLCAweDJCLCAweDQ5LCAweDhFLCAweDQ4LCAweDY2LCAweEQ1LCAweDk3LCAweDFCLCAweDIxLCAweDY1LAorICAgIDB4NEYsIDB4QTUsIDB4N0UsIDB4RjgsIDB4N0UsIDB4ODksIDB4QjYsIDB4MUIsIDB4NEYsIDB4QjEsIDB4MkUsIDB4QzIsIDB4ODQsIDB4NTAsIDB4QjYsIDB4QzcsCisgICAgMHhENSwgMHhCQywgMHhFRSwgMHg4NiwgMHhCRSwgMHhCNywgMHgyNywgMHhEQiwgMHhFOCwgMHhGMywgMHg0OSwgMHgwMiwgMHhCRiwgMHhCMSwgMHgzMywgMHg3MSwKKyAgICAweDVELCAweEEzLCAweDNELCAweDI4LCAweDdFLCAweDI0LCAweDc2LCAweDBFLCAweDI5LCAweEFBLCAweDY1LCAweEM4LCAweDBCLCAweEQyLCAweEUxLCAweEYxLAorICAgIDB4MzYsIDB4MDMsIDB4MkMsIDB4MjgsIDB4OTIsIDB4M0EsIDB4NDIsIDB4NUEsIDB4RjgsIDB4MjAsIDB4RUUsIDB4NDMsIDB4QjYsIDB4NTYsIDB4MTIsIDB4QTksCisgICAgMHgyQiwgMHg4QSwgMHhDNSwgMHg1RCwgMHg3QiwgMHg3NywgMHg3NiwgMHhDMywgMHg5QiwgMHg4MCwgMHhEOSwgMHgzMCwgMHg3RiwgMHhFNSwgMHgwRiwgMHgyQiwKKyAgICAweDZBLCAweDg3LCAweDI5LCAweEVGLCAweDUxLCAweEVELCAweDhDLCAweDI3LCAweDJELCAweEQzLCAweDlFLCAweEVDLCAweDRELCAweDNBLCAweERBLCAweDY1LAorICAgIDB4QjYsIDB4MTcsIDB4RDEsIDB4NzMsIDB4RUUsIDB4RTcsIDB4OTQsIDB4MDcsIDB4MTIsIDB4NzksIDB4OUYsIDB4RjQsIDB4QTAsIDB4MEMsIDB4N0YsIDB4OTUsCisgICAgMHhCQiwgMHgyOCwgMHhGOSwgMHhFMywgMHg1RiwgMHg0NiwgMHhCNSwgMHhDNiwgMHgwQywgMHg0QSwgMHgxOCwgMHhDQiwgMHg3OSwgMHhBNiwgMHg5MCwgMHgzNiwKKyAgICAweEM1LCAweEY3LCAweDA4LCAweDM2LCAweEQyLCAweEU3LCAweDczLCAweDIxLCAweDU5LCAweDhGLCAweEY1LCAweEM4LCAweDg5LCAweEIxLCAweDA5LCAweDExLAorICAgIDB4MDMsIDB4Q0QsIDB4QTQsIDB4QjcsIDB4NjQsIDB4MDQsIDB4NEEsIDB4RjQsIDB4NjksIDB4MDYsIDB4ODksIDB4NjYsIDB4OUUsIDB4QjEsIDB4OTYsIDB4MUMsCisgICAgMHg1NSwgMHgyMiwgMHgzRiwgMHg3MCwgMHhCRSwgMHg3MiwgMHgzRCwgMHg3QywgMHhCQywgMHgxOCwgMHg4RiwgMHhFRiwgMHg2OSwgMHg5MSwgMHg3NiwgMHg3NSwKKyAgICAweDIxLCAweDIwLCAweDAxLCAweEFCLCAweDQ0LCAweDYwLCAweDEzLCAweDZBLCAweEJDLCAweEI1LCAweDBCLCAweDk1LCAweDNFLCAweEU0LCAweEEzLCAweDRFLAorICAgIDB4MTgsIDB4RDYsIDB4QkMsIDB4NTEsIDB4M0MsIDB4RTIsIDB4M0QsIDB4NzEsIDB4NzAsIDB4RkIsIDB4QkYsIDB4QUQsIDB4NUYsIDB4NTcsIDB4QjYsIDB4NkUsCisgICAgMHg5RiwgMHhCRSwgMHg3MCwgMHg2OSwgMHg1MywgMHhFRSwgMHgzNCwgMHg1MywgMHg5RCwgMHhFNSwgMHhCRCwgMHg1MSwgMHg5RCwgMHgxRCwgMHhFQSwgMHhCQywKKyAgICAweEQ4LCAweDg5LCAweDk4LCAweEMxLCAweDI2LCAweENGLCAweDBGLCAweDY1LCAweDcxLCAweEZFLCAweDNCLCAweDg5LCAweDlCLCAweDVFLCAweEFGLCAweDZDLAorICAgIDB4RkQsIDB4QjIsIDB4NTMsIDB4ODgsIDB4NDIsIDB4N0MsIDB4RkIsIDB4ODcsIDB4NDksIDB4NjksIDB4NEQsIDB4N0QsIDB4QzksIDB4NzYsIDB4QTcsIDB4ODQsCisgICAgMHgxMCwgMHhGRiwgMHhGOCwgMHg2MywgMHg2NCwgMHhCMSwgMHhGMiwgMHg3RCwgMHg3MiwgMHg3OSwgMHhEOCwgMHhGMSwgMHg4QiwgMHhCNiwgMHhBMywgMHg4MCwKKyAgICAweEVGLCAweDE1LCAweDkyLCAweDQwLCAweEJFLCAweDAxLCAweDA1LCAweENCLCAweEE4LCAweDA3LCAweDBDLCAweEUwLCAweEVFLCAweDhGLCAweEVBLCAweEY2LAorICAgIDB4NjIsIDB4OUIsIDB4NEMsIDB4ODksIDB4QzQsIDB4MEQsIDB4QkMsIDB4NTUsIDB4MzIsIDB4OTEsIDB4Q0MsIDB4NjgsIDB4RDcsIDB4NDAsIDB4NTQsIDB4MTMsCisgICAgMHgxRCwgMHhEOSwgMHg5NiwgMHg0OSwgMHhCNiwgMHg2MywgMHhDQiwgMHhGMywgMHgzRSwgMHg0QywgMHhBMSwgMHhFMywgMHhEQSwgMHhEMSwgMHg3QywgMHg4OCwKKyAgICAweDJELCAweEI1LCAweEVELCAweDZGLCAweDlELCAweDg1LCAweDkxLCAweDNBLCAweDVCLCAweDgwLCAweEJCLCAweEI4LCAweDNCLCAweDdFLCAweEQyLCAweDRCLAorICAgIDB4RTEsIDB4REYsIDB4MkEsIDB4MzIsIDB4NUIsIDB4MkMsIDB4RUQsIDB4QjQsIDB4MzksIDB4RDIsIDB4NDYsIDB4QjksIDB4M0YsIDB4NEYsIDB4OTgsIDB4QjUsCisgICAgMHhCNywgMHhCNywgMHgxNiwgMHhFOSwgMHhCMSwgMHgyQSwgMHhENSwgMHgzQSwgMHgxQiwgMHhDMSwgMHhDNCwgMHhBNCwgMHhFQiwgMHgxNSwgMHg4NiwgMHg4NiwKKyAgICAweDJFLCAweDUxLCAweEE2LCAweENFLCAweDlELCAweEVCLCAweDQ3LCAweDE1LCAweDdGLCAweDM3LCAweDFCLCAweDNFLCAweDI2LCAweEVELCAweDE3LCAweEU0LAorICAgIDB4MjMsIDB4RTIsIDB4N0UsIDB4REEsIDB4MDMsIDB4QzgsIDB4OTQsIDB4RTAsIDB4NTAsIDB4NkMsIDB4OEMsIDB4NjgsIDB4Q0UsIDB4MDQsIDB4MjQsIDB4N0YsCisgICAgMHg2NywgMHgwRCwgMHgyRiwgMHg3NywgMHhGNywgMHgwNywgMHg3NSwgMHgzMywgMHhGRSwgMHg0QywgMHgxQiwgMHgyQywgMHg1MywgMHgxOSwgMHg0NywgMHhGQSwKKyAgICAweDRFLCAweDFGLCAweDVELCAweDJFLCAweDgwLCAweDJFLCAweDlFLCAweEU1LCAweEE2LCAweDRFLCAweDQxLCAweDQ1LCAweDhDLCAweDYzLCAweEE0LCAweDRDLAorICAgIDB4NUUsIDB4MTksIDB4MDQsIDB4NTEsIDB4NkEsIDB4QUYsIDB4NkUsIDB4NEYsIDB4QkIsIDB4QTgsIDB4QUIsIDB4ODcsIDB4RDQsIDB4RDcsIDB4OTksIDB4NTksCisgICAgMHg3NywgMHg1NCwgMHgwRSwgMHgxMCwgMHhFOCwgMHg3QiwgMHhDNSwgMHg3QiwgMHg2RCwgMHgxMywgMHhBOCwgMHg1OCwgMHhCNywgMHg2NywgMHhENiwgMHgyMywKKyAgICAweEYxLCAweDk3LCAweEM2LCAweEIxLCAweEZFLCAweDgzLCAweEU4LCAweEJCLCAweEMxLCAweEQyLCAweDI2LCAweDgzLCAweERELCAweDhFLCAweDg2LCAweDRGLAorICAgIDB4NjksIDB4RTUsIDB4QzQsIDB4NzIsIDB4NTYsIDB4OTgsIDB4MEEsIDB4QjEsIDB4NTgsIDB4MDMsIDB4NEUsIDB4MTQsIDB4Q0QsIDB4MjUsIDB4NjUsIDB4RUYsCisgICAgMHgzMSwgMHhEMCwgMHg2OCwgMHg0NSwgMHg5QywgMHg0MiwgMHg4NCwgMHhCOCwgMHhDOSwgMHg4RiwgMHhCMCwgMHhGOCwgMHhGMSwgMHhEMiwgMHg0NSwgMHg3NSwKKyAgICAweEQzLCAweDRGLCAweDEzLCAweDUyLCAweEQzLCAweDhGLCAweEYzLCAweDhBLCAweDNGLCAweDczLCAweEYwLCAweDU2LCAweDI0LCAweDFCLCAweDc3LCAweEZDLAorICAgIDB4RTQsIDB4Q0MsIDB4NDIsIDB4NTcsIDB4OEYsIDB4RjgsIDB4RTgsIDB4NEMsIDB4NTMsIDB4NUYsIDB4MjIsIDB4MzUsIDB4REQsIDB4NkUsIDB4MzMsIDB4MTEsCisgICAgMHhDOCwgMHhCMiwgMHhFQiwgMHhGRiwgMHg5QiwgMHgwRiwgMHhDNywgMHgyMCwgMHhFRCwgMHg2RiwgMHg3MCwgMHhDOCwgMHg4RCwgMHgxRSwgMHhERSwgMHgyRiwKKyAgICAweDBFLCAweDE5LCAweDUwLCAweEEyLCAweEYxLCAweDRGLCAweDkwLCAweDU2LCAweDA3LCAweDYzLCAweDBBLCAweDhELCAweEUyLCAweDZFLCAweEFFLCAweDk1LAorICAgIDB4NjgsIDB4Q0EsIDB4RUEsIDB4NzgsIDB4MEMsIDB4QjEsIDB4QTQsIDB4MzAsIDB4MTQsIDB4NzcsIDB4NDgsIDB4MEMsIDB4NTEsIDB4RDksIDB4RTUsIDB4MzAsCisgICAgMHg3QywgMHhDRSwgMHg3NywgMHhCQSwgMHhDNywgMHgzNCwgMHg5RCwgMHgyNSwgMHg0RCwgMHhDRiwgMHgyMSwgMHhFMiwgMHhDRiwgMHg1MCwgMHhCQSwgMHgyQSwKKyAgICAweDMyLCAweEM3LCAweDY2LCAweDA3LCAweEJBLCAweDQ2LCAweEU2LCAweDY5LCAweERFLCAweDQ2LCAweERGLCAweDAzLCAweDI4LCAweDUxLCAweEZFLCAweDExLAorICAgIDB4MUMsIDB4MzMsIDB4QkMsIDB4NEYsIDB4RDQsIDB4MkUsIDB4QzMsIDB4N0EsIDB4RUQsIDB4MkEsIDB4Q0UsIDB4Q0EsIDB4MzQsIDB4RTgsIDB4NEYsIDB4NjUsCisgICAgMHg4RSwgMHhGMywgMHg3NywgMHgwNSwgMHg2NywgMHhGQiwgMHhENSwgMHgxRCwgMHg1QywgMHg5NCwgMHhCNSwgMHgyNywgMHhBOSwgMHg2MSwgMHhGNywgMHg5OSwKKyAgICAweDE1LCAweDc3LCAweDJCLCAweEEwLCAweEIxLCAweEI0LCAweDNCLCAweDcyLCAweDMzLCAweDY3LCAweEE3LCAweDcwLCAweEZCLCAweDYwLCAweDcyLCAweDA0LAorICAgIDB4QzQsIDB4ODgsIDB4NEMsIDB4QTUsIDB4MUMsIDB4RUYsIDB4MTcsIDB4NjYsIDB4NzQsIDB4QUUsIDB4QkMsIDB4MDEsIDB4QzMsIDB4MkYsIDB4MEQsIDB4RDYsCisgICAgMHgxMiwgMHhERiwgMHg0RiwgMHgyQywgMHg2MywgMHhDMSwgMHg3OSwgMHhGOCwgMHg1MCwgMHhDOSwgMHg1MiwgMHgzNCwgMHhBMCwgMHg2RSwgMHg3MywgMHhCQSwKKyAgICAweDVBLCAweDMxLCAweDIyLCAweEYzLCAweEM1LCAweDk4LCAweEIwLCAweDE4LCAweEQ4LCAweDdCLCAweDJCLCAweDA2LCAweDQ3LCAweDlELCAweDUwLCAweEU2LAorICAgIDB4MTYsIDB4QkYsIDB4NTksIDB4QzksIDB4MzQsIDB4RjAsIDB4NTEsIDB4NTgsIDB4NjAsIDB4RDgsIDB4RUUsIDB4ODMsIDB4QzgsIDB4OEIsIDB4MUUsIDB4OTIsCisgICAgMHg4RiwgMHhGMCwgMHhERiwgMHgxMiwgMHg2MSwgMHhDQywgMHg2OSwgMHgyMSwgMHg2OCwgMHhFOCwgMHg3OCwgMHhCOCwgMHhGMiwgMHhGMCwgMHhERSwgMHhFNywKKyAgICAweEFCLCAweDhBLCAweEE0LCAweDM4LCAweDMyLCAweDA2LCAweEFFLCAweENELCAweDUzLCAweDkyLCAweEU0LCAweDlCLCAweDJDLCAweEMxLCAweDYzLCAweDMwLAorICAgIDB4MjksIDB4QjUsIDB4MTIsIDB4MjEsIDB4OTksIDB4Q0EsIDB4OTksIDB4OTQsIDB4OTIsIDB4NzEsIDB4RkIsIDB4MEEsIDB4MzEsIDB4RUYsIDB4QkYsIDB4RTIsCisgICAgMHg1MiwgMHgyQiwgMHhBNSwgMHhDRSwgMHgxNiwgMHg1RCwgMHgxNSwgMHg0QSwgMHgyNSwgMHhDRiwgMHg3NCwgMHg5NiwgMHg5QSwgMHg5NSwgMHgyMSwgMHgyQywKKyAgICAweEVBLCAweEI3LCAweEExLCAweEFFLCAweEQ0LCAweDE1LCAweDI5LCAweDM4LCAweEY5LCAweDdCLCAweDZDLCAweEQ3LCAweDNBLCAweDUyLCAweEZELCAweDYwLAorICAgIDB4QTIsIDB4RDAsIDB4RUUsIDB4QTUsIDB4REYsIDB4NEMsIDB4QzYsIDB4QkYsIDB4MzAsIDB4ODIsIDB4MjAsIDB4QjYsIDB4NzMsIDB4NTgsIDB4QzgsIDB4N0IsCisgICAgMHhBOCwgMHhFQSwgMHgwMSwgMHg5QiwgMHhFQSwgMHgwMiwgMHg4OSwgMHhEMCwgMHg4MywgMHg3MSwgMHgxNCwgMHg5OCwgMHhCMCwgMHg2RSwgMHg1QiwgMHg4MCwKKyAgICAweEI0LCAweEJBLCAweDRELCAweEM1LCAweDk1LCAweDc3LCAweDVBLCAweDQ0LCAweDU2LCAweDc0LCAweDEyLCAweDQ4LCAweEJDLCAweEFFLCAweDkyLCAweENGLAorICAgIDB4NUEsIDB4RjksIDB4NjIsIDB4RTgsIDB4NzIsIDB4QTUsIDB4NzIsIDB4NUIsIDB4NTgsIDB4QzYsIDB4MTQsIDB4MjksIDB4RjEsIDB4QzQsIDB4RDYsIDB4QzYsCisgICAgMHg3NSwgMHg3MSwgMHg5QywgMHhDNCwgMHg3RCwgMHhDNSwgMHg5MywgMHgyNiwgMHhBMiwgMHg5QiwgMHgxQywgMHgzMCwgMHhFOCwgMHg0MSwgMHhDNywgMHgwMywKKyAgICAweDY2LCAweDk4LCAweDJDLCAweDEwLCAweDM0LCAweDZBLCAweDBFLCAweEMyLCAweDM1LCAweDUzLCAweEFBLCAweDE3LCAweDNFLCAweEY0LCAweENCLCAweDlDLAorICAgIDB4QzQsIDB4MUUsIDB4QjQsIDB4NzksIDB4MEIsIDB4QTAsIDB4NDEsIDB4NEIsIDB4QzYsIDB4QjQsIDB4QUMsIDB4NUYsIDB4REEsIDB4NDgsIDB4MDEsIDB4MEQsCisgICAgMHhCRiwgMHhERiwgMHg2QSwgMHgwRSwgMHg0MiwgMHgxNiwgMHhGQywgMHg5NywgMHg1OCwgMHg5OCwgMHgwNCwgMHhEQSwgMHg0NiwgMHgxRSwgMHgzNywgMHg1NSwKKyAgICAweDc3LCAweDJBLCAweEI4LCAweDU4LCAweDZCLCAweDlFLCAweDU1LCAweDJFLCAweEY2LCAweDUyLCAweDE3LCAweDM4LCAweEUxLCAweEE3LCAweEQ5LCAweEEwLAorICAgIDB4MDgsIDB4RjMsIDB4M0UsIDB4MEIsIDB4RTQsIDB4MTAsIDB4MzcsIDB4MkEsIDB4MTYsIDB4NTQsIDB4NjMsIDB4MUUsIDB4NUEsIDB4NDMsIDB4QzcsIDB4REUsCisgICAgMHhBMywgMHhFOSwgMHgzQiwgMHg4NSwgMHgzQSwgMHhGQiwgMHgwMywgMHhFOSwgMHhERSwgMHhEOSwgMHgxQywgMHhERCwgMHg5QiwgMHg1NiwgMHg0RiwgMHg3MCwKKyAgICAweDc3LCAweERELCAweEYzLCAweEJBLCAweDBGLCAweEE0LCAweDBGLCAweDEyLCAweDVBLCAweDFDLCAweEY0LCAweDMyLCAweEU4LCAweDU4LCAweDZDLCAweDIzLAorICAgIDB4QzUsIDB4NDYsIDB4MkUsIDB4MUMsIDB4Q0EsIDB4RTAsIDB4OTksIDB4MjcsIDB4NzcsIDB4QzgsIDB4MTQsIDB4RDMsIDB4MzQsIDB4QTQsIDB4RUEsIDB4REQsCisgICAgMHg3NiwgMHgzQywgMHg5MSwgMHgzOSwgMHg5NiwgMHgyQSwgMHhFRSwgMHg2MywgMHgwNSwgMHg2QSwgMHgyRCwgMHg2NSwgMHg0OCwgMHg4OCwgMHhFNiwgMHg5RCwKKyAgICAweDI2LCAweEUzLCAweDk1LCAweEQ2LCAweEZDLCAweDg2LCAweEM4LCAweDQxLCAweEI1LCAweDE0LCAweDk5LCAweDJDLCAweDM1LCAweDhDLCAweEJELCAweEE4LAorICAgIDB4MjgsIDB4MUQsIDB4RjcsIDB4NzQsIDB4MDAsIDB4MzYsIDB4Q0EsIDB4RTgsIDB4QkIsIDB4MjgsIDB4MzUsIDB4MDMsIDB4MTAsIDB4MjMsIDB4RUMsIDB4ODIsCisgICAgMHg0QywgMHgzMiwgMHg1OSwgMHhBQiwgMHg2QiwgMHgwMSwgMHgyQiwgMHg0MiwgMHhFQiwgMHg2NywgMHg0RCwgMHg0OSwgMHg4MCwgMHg0NywgMHg3QywgMHhEMCwKKyAgICAweEZFLCAweDQ4LCAweEI1LCAweEM4LCAweEIzLCAweEYzLCAweDA2LCAweDM3LCAweDEzLCAweDY1LCAweEYxLCAweDUzLCAweDlDLCAweDI0LCAweDAwLCAweDI5LAorICAgIDB4NDEsIDB4OEUsIDB4OTcsIDB4RTcsIDB4NDcsIDB4MjEsIDB4RjgsIDB4QjYsIDB4RUYsIDB4QzEsIDB4MDgsIDB4QUMsIDB4OEIsIDB4RjMsIDB4REYsIDB4RDEsCisgICAgMHg5QiwgMHhFRCwgMHgxNiwgMHhFQSwgMHg1QywgMHgzQywgMHgzOSwgMHhGNiwgMHhCOSwgMHgwRiwgMHgwRCwgMHhDMSwgMHgwQywgMHg3OSwgMHhCNCwgMHhGQSwKKyAgICAweEVDLCAweDdGLCAweEQyLCAweEUwLCAweDgwLCAweEVDLCAweEYxLCAweDg4LCAweEJFLCAweDY4LCAweEE4LCAweEQxLCAweDM4LCAweEI1LCAweEZFLCAweEI1LAorICAgIDB4RUQsIDB4MUEsIDB4QjEsIDB4OEQsIDB4QkMsIDB4NTAsIDB4OUIsIDB4QTUsIDB4NDAsIDB4NDUsIDB4QjQsIDB4OTQsIDB4MjUsIDB4RjgsIDB4QTUsIDB4RUIsCisgICAgMHg4OCwgMHgwMCwgMHhDOCwgMHhDQSwgMHhCQSwgMHg4NiwgMHhGNiwgMHhCNiwgMHhEQSwgMHhDMCwgMHhGMywgMHg0MiwgMHhEQSwgMHhFNCwgMHgxNiwgMHhCMSwKKyAgICAweDNBLCAweEMxLCAweEFCLCAweDI5LCAweEY4LCAweEQyLCAweENGLCAweEI2LCAweDI0LCAweEJELCAweEU5LCAweEE3LCAweDE4LCAweEE3LCAweEVELCAweDgwLAorICAgIDB4MEIsIDB4MEEsIDB4OTEsIDB4RDcsIDB4OEMsIDB4QzksIDB4NjAsIDB4NUYsIDB4NzMsIDB4QkUsIDB4N0MsIDB4MTIsIDB4MjYsIDB4RUQsIDB4QzUsIDB4QTQsCisgICAgMHg1NSwgMHg4MywgMHg1NSwgMHg5MywgMHg3NCwgMHhGNywgMHgxQiwgMHgwNSwgMHg4QiwgMHhCQSwgMHg4OCwgMHgxRCwgMHg0MiwgMHg5QSwgMHgxNSwgMHg3OCwKKyAgICAweDlGLCAweEU5LCAweDYyLCAweDk1LCAweDY1LCAweEQ1LCAweDE2LCAweDAyLCAweDFGLCAweENBLCAweDEzLCAweEE4LCAweDUyLCAweDg0LCAweEJGLCAweEFELAorICAgIDB4RTUsIDB4REQsIDB4REIsIDB4MTgsIDB4QjUsIDB4MzcsIDB4OEQsIDB4NzAsIDB4NUUsIDB4RjksIDB4RTMsIDB4QzIsIDB4MzMsIDB4MUYsIDB4Q0MsIDB4OTcsCisgICAgMHg1MiwgMHgzNSwgMHgxMywgMHhEOSwgMHhEMCwgMHgyOSwgMHg0NCwgMHgwQiwgMHhEOCwgMHhCRCwgMHhCMiwgMHg5MywgMHg2QywgMHgyQywgMHhBQywgMHg3QiwKKyAgICAweDE0LCAweDk0LCAweDY3LCAweENDLCAweDY1LCAweDVFLCAweDc4LCAweDUzLCAweDgyLCAweDcyLCAweEZFLCAweEZCLCAweEQ5LCAweDA0LCAweDVGLCAweDkwLAorICAgIDB4NkMsIDB4QjAsIDB4RkIsIDB4ODAsIDB4NkMsIDB4N0QsIDB4MEIsIDB4NjIsIDB4OEIsIDB4N0IsIDB4NzMsIDB4N0QsIDB4MUYsIDB4NkIsIDB4OTMsIDB4N0QsCisgICAgMHgwNywgMHg2NiwgMHg5OCwgMHhCQiwgMHhCMiwgMHg0OSwgMHhCMywgMHgzNCwgMHgxMCwgMHhCQiwgMHgyMywgMHgyQiwgMHgxNCwgMHhBMCwgMHhCNCwgMHg0QSwKKyAgICAweEMxLCAweDU2LCAweDdCLCAweDQ3LCAweEQ0LCAweDQ5LCAweDk3LCAweDRELCAweDY5LCAweDlDLCAweEZDLCAweDdDLCAweEYyLCAweDg3LCAweEY0LCAweDhCLAorICAgIDB4QTQsIDB4RDYsIDB4RjgsIDB4QUUsIDB4M0IsIDB4OEYsIDB4OUEsIDB4NUIsIDB4OTAsIDB4MjksIDB4OUMsIDB4RDksIDB4RTIsIDB4QTksIDB4QTIsIDB4NjAsCisgICAgMHg1MiwgMHg0QSwgMHgxRiwgMHhFNSwgMHg2RSwgMHg3QywgMHg0OSwgMHhFQywgMHg4MywgMHhBOCwgMHgwRSwgMHg3OSwgMHg1QiwgMHgwQSwgMHgxRiwgMHg1MywKKyAgICAweERCLCAweDZDLCAweEVGLCAweDc4LCAweDJELCAweDUyLCAweEJBLCAweDAwLCAweDNBLCAweDQ5LCAweEIyLCAweEIxLCAweDU2LCAweDFDLCAweDNCLCAweDdFLAorICAgIDB4OTksIDB4OUMsIDB4MjAsIDB4QjcsIDB4QzcsIDB4OUUsIDB4OEIsIDB4OEMsIDB4ODgsIDB4RjIsIDB4MTUsIDB4RkYsIDB4NEYsIDB4MDYsIDB4RjQsIDB4MUIsCisgICAgMHg2RiwgMHgwMiwgMHgxRSwgMHgzQSwgMHgyOSwgMHhBMCwgMHg3QiwgMHhGQSwgMHgyQywgMHgyNiwgMHg1OCwgMHhFMywgMHg3NSwgMHg1RiwgMHhCOCwgMHg5NCwKKyAgICAweDI3LCAweDcwLCAweEY2LCAweEE1LCAweDc5LCAweDUxLCAweDBGLCAweDcyLCAweDUyLCAweDgxLCAweERDLCAweERDLCAweDc0LCAweDkzLCAweEFGLCAweEI0LAorICAgIDB4QjUsIDB4OUYsIDB4RjIsIDB4MDMsIDB4NEYsIDB4NzksIDB4MEEsIDB4QzUsIDB4QjksIDB4QzcsIDB4M0UsIDB4MTIsIDB4NTMsIDB4M0EsIDB4NjMsIDB4NkEsCisgICAgMHg4QSwgMHgyNywgMHhCNiwgMHg5RCwgMHg0QywgMHg4NCwgMHg4NywgMHg5MiwgMHhCRiwgMHg3RCwgMHg0OSwgMHg1MiwgMHhBRiwgMHgxMCwgMHhDRCwgMHg2QywKKyAgICAweDU4LCAweEM1LCAweEYwLCAweEZFLCAweDU5LCAweDVDLCAweEE4LCAweDVBLCAweERFLCAweDBFLCAweDE5LCAweDIzLCAweDNGLCAweDAxLCAweDg3LCAweEZELAorICAgIDB4OTUsIDB4QTgsIDB4NjEsIDB4OTAsIDB4MDYsIDB4NDksIDB4NzcsIDB4RDgsIDB4QUQsIDB4QzQsIDB4NUQsIDB4NzIsIDB4NjUsIDB4NUQsIDB4MkEsIDB4NDgsCisgICAgMHg3MCwgMHhFMSwgMHgzNywgMHgyQywgMHgyMCwgMHg1MCwgMHgyNCwgMHhDNCwgMHhFNywgMHg3NCwgMHg5MSwgMHgzMCwgMHg5MSwgMHgwRSwgMHhBMywgMHg4QiwKKyAgICAweDczLCAweDZDLCAweDMxLCAweEUxLCAweEFGLCAweEM3LCAweDhDLCAweDM3LCAweEY4LCAweDIyLCAweDcxLCAweDM2LCAweENBLCAweEUwLCAweEUxLCAweDQxLAorICAgIDB4RjYsIDB4NzQsIDB4MjYsIDB4MTcsIDB4MDgsIDB4QzIsIDB4RDksIDB4QjUsIDB4Q0UsIDB4NEEsIDB4NjcsIDB4MTcsIDB4QzIsIDB4NTQsIDB4QTAsIDB4MUYsCisgICAgMHgyMiwgMHhGRiwgMHg4RCwgMHhCNiwgMHg2MCwgMHgyNiwgMHg3QiwgMHg3QiwgMHgwNSwgMHgwRCwgMHg2OSwgMHhBRSwgMHg2RiwgMHgwOSwgMHg3OCwgMHg5RCwKKyAgICAweEQwLCAweDJDLCAweDU5LCAweEIxLCAweEU3LCAweEFCLCAweDlGLCAweDVGLCAweDBDLCAweEI3LCAweEI0LCAweDk4LCAweDQ3LCAweDg1LCAweDI4LCAweDI0LAorICAgIDB4NzQsIDB4MDUsIDB4NzksIDB4QzgsIDB4MzcsIDB4REIsIDB4MkQsIDB4NzEsIDB4QkEsIDB4NzAsIDB4MjQsIDB4MUQsIDB4QzYsIDB4NEMsIDB4MjMsIDB4RjYsCisgICAgMHhGRSwgMHhFNSwgMHg0NywgMHgzMywgMHhBMiwgMHhBRSwgMHg0NCwgMHhCMSwgMHg2NCwgMHg1RCwgMHhBQiwgMHhBMywgMHhENSwgMHhGMSwgMHg5MSwgMHgxMiwKKyAgICAweEExLCAweDEyLCAweDQyLCAweEZDLCAweEY1LCAweEU3LCAweDE1LCAweDU3LCAweDFGLCAweDNGLCAweDA4LCAweDdGLCAweEQ0LCAweDVELCAweDBCLCAweDk3LAorICAgIDB4NDMsIDB4MEIsIDB4RjMsIDB4MzYsIDB4NTQsIDB4RjYsIDB4MEEsIDB4NTQsIDB4RTQsIDB4NzcsIDB4QkUsIDB4REYsIDB4OEEsIDB4Q0EsIDB4QzIsIDB4NDMsCisgICAgMHg1RiwgMHg0QSwgMHgzMiwgMHhCQywgMHg5QSwgMHgyMCwgMHgyNywgMHhCMywgMHhCOSwgMHgyRiwgMHhBNywgMHg5MiwgMHg4RSwgMHhERCwgMHgxMiwgMHgxNSwKKyAgICAweDI3LCAweDVBLCAweDBELCAweEQ2LCAweDVFLCAweEM3LCAweERFLCAweEZCLCAweDc4LCAweEU2LCAweDYzLCAweDVFLCAweDA3LCAweDM1LCAweEM3LCAweEFFLAorICAgIDB4MDQsIDB4QzAsIDB4MTQsIDB4REIsIDB4MjYsIDB4NDUsIDB4NEQsIDB4NTcsIDB4OTEsIDB4NEEsIDB4QjUsIDB4REUsIDB4RjgsIDB4NDAsIDB4RTEsIDB4RTQsCisgICAgMHg2QywgMHgzMiwgMHhDQywgMHgzNywgMHg0NCwgMHgzNCwgMHgwNSwgMHhDOCwgMHhDMywgMHg0OSwgMHgyOCwgMHhGQSwgMHhFRCwgMHg5MywgMHgwOCwgMHgxMCwKKyAgICAweEE4LCAweDhCLCAweDAwLCAweDhDLCAweDRELCAweEY1LCAweDIzLCAweEIxLCAweDQ3LCAweDJFLCAweDJFLCAweDZCLCAweEM4LCAweDE4LCAweDg5LCAweDg2LAorICAgIDB4NTksIDB4QkEsIDB4QzcsIDB4M0YsIDB4MUMsIDB4RDUsIDB4MjQsIDB4MzUsIDB4QkMsIDB4MzcsIDB4NDYsIDB4N0YsIDB4QjMsIDB4N0UsIDB4RUYsIDB4MzUsCisgICAgMHhBOSwgMHgxQywgMHgyRCwgMHg4RiwgMHgxMCwgMHgxMSwgMHgwNywgMHg4QiwgMHg1QywgMHgxQywgMHg0QywgMHg0MiwgMHhDNiwgMHhFNiwgMHgxNywgMHgzMiwKKyAgICAweEYxLCAweEJGLCAweDYxLCAweDdBLCAweDc1LCAweDNFLCAweDAyLCAweDU4LCAweEUxLCAweDZCLCAweDU5LCAweDFFLCAweEZGLCAweDE2LCAweEM4LCAweDY1LAorICAgIDB4QUYsIDB4RjEsIDB4QjEsIDB4MTQsIDB4ODYsIDB4ODQsIDB4QzEsIDB4MDMsIDB4N0EsIDB4NzUsIDB4N0IsIDB4OUUsIDB4NkIsIDB4RDIsIDB4NEMsIDB4MzksCisgICAgMHhEMCwgMHgwMSwgMHg3MSwgMHhCNywgMHhGQSwgMHgzNiwgMHg3OCwgMHg1OSwgMHhCNSwgMHhGMCwgMHg2MywgMHhGMSwgMHgyNCwgMHhEMSwgMHgxMCwgMHgzNywKKyAgICAweDkyLCAweEY2LCAweDBGLCAweDU4LCAweDdBLCAweEM3LCAweENFLCAweEI1LCAweEM5LCAweDc5LCAweDFDLCAweDM4LCAweDM2LCAweDA3LCAweDM0LCAweDk5LAorICAgIDB4Q0UsIDB4QzQsIDB4OTcsIDB4OTgsIDB4N0MsIDB4QTAsIDB4QTcsIDB4RDAsIDB4MDQsIDB4MkIsIDB4NUYsIDB4MTAsIDB4QzksIDB4RTgsIDB4N0EsIDB4RjYsCisgICAgMHg1QywgMHhGQywgMHhBQywgMHhGNCwgMHg2RiwgMHgyRSwgMHg2QiwgMHhCNywgMHhFOCwgMHhDNSwgMHgyNiwgMHhDNSwgMHhCMSwgMHgzOCwgMHg4RSwgMHg1QiwKKyAgICAweDgxLCAweDkwLCAweDFDLCAweDM4LCAweEI4LCAweDhGLCAweEQwLCAweDgyLCAweDFCLCAweEYwLCAweDRBLCAweDBDLCAweDQ2LCAweDhCLCAweEVELCAweDQ5LAorICAgIDB4MjEsIDB4RDksIDB4NkQsIDB4MTcsIDB4MjksIDB4QTEsIDB4QkIsIDB4NTksIDB4REUsIDB4OTgsIDB4MjQsIDB4REYsIDB4QUUsIDB4MDcsIDB4QzUsIDB4OTIsCisgICAgMHhEMiwgMHhDOSwgMHg5MiwgMHgwMCwgMHg4RiwgMHhCMCwgMHhCMCwgMHgzNiwgMHg1OCwgMHhGQSwgMHhCOCwgMHhCMCwgMHg0MywgMHgxNywgMHhCMCwgMHhBMywKKyAgICAweDNCLCAweEFGLCAweDM5LCAweEI4LCAweDMxLCAweDhBLCAweDM4LCAweEJGLCAweEQyLCAweEVFLCAweDA2LCAweDBCLCAweEI2LCAweDk5LCAweDAwLCAweDQxLAorICAgIDB4RjUsIDB4NzIsIDB4OUEsIDB4OUMsIDB4MUYsIDB4QkEsIDB4RkIsIDB4MjIsIDB4QjMsIDB4QTUsIDB4OEEsIDB4MTEsIDB4N0IsIDB4RjIsIDB4NTMsIDB4RUIsCisgICAgMHg5MCwgMHg2MCwgMHg3MiwgMHgzQywgMHhDMywgMHg1NiwgMHhBQywgMHhCRCwgMHhFMiwgMHhGQSwgMHhCRiwgMHgzNywgMHhCOCwgMHg5RiwgMHhERCwgMHg0RSwKKyAgICAweEYxLCAweDA1LCAweDlFLCAweDY1LCAweDNCLCAweDQ1LCAweDg5LCAweEE1LCAweEQzLCAweEEzLCAweEJBLCAweEQ0LCAweDFDLCAweENBLCAweDBDLCAweENFLAorICAgIDB4REMsIDB4NUMsIDB4NjYsIDB4RkUsIDB4NEIsIDB4NDQsIDB4MUEsIDB4QzksIDB4QjAsIDB4NTIsIDB4MDIsIDB4Q0QsIDB4NDcsIDB4ODksIDB4OTAsIDB4MkUsCisgICAgMHhBNCwgMHgzRiwgMHhFQywgMHg5MCwgMHhDRCwgMHg4NCwgMHhGMywgMHg1OCwgMHg2QiwgMHgyNCwgMHhCQSwgMHgwMywgMHhCQywgMHg1NywgMHgxQiwgMHhBMiwKKyAgICAweEFDLCAweEYyLCAweDgwLCAweDBGLCAweDI2LCAweDA0LCAweDU5LCAweEEyLCAweDc0LCAweDA3LCAweDAzLCAweEZELCAweEM0LCAweDU3LCAweDI5LCAweENGLAorICAgIDB4OTAsIDB4RjcsIDB4RDMsIDB4NTgsIDB4NEEsIDB4NzEsIDB4NjksIDB4N0MsIDB4N0YsIDB4NTIsIDB4NzcsIDB4MUIsIDB4MEQsIDB4RkYsIDB4MEEsIDB4NTksCisgICAgMHg4MCwgMHg0RSwgMHgzRiwgMHhFOCwgMHg4MiwgMHhCNiwgMHhBNSwgMHg2OCwgMHg5QywgMHg2MiwgMHgzQSwgMHg2QywgMHg3MSwgMHgzQSwgMHhDQSwgMHgyMywKKyAgICAweDZFLCAweDAzLCAweEIxLCAweDUwLCAweDMyLCAweDEzLCAweDI3LCAweDgxLCAweENCLCAweDY4LCAweDQyLCAweDdELCAweDMyLCAweDIzLCAweDRGLCAweDg1LAorICAgIDB4MzksIDB4NzYsIDB4OEMsIDB4OEYsIDB4QjAsIDB4NzMsIDB4RDMsIDB4RUQsIDB4NTYsIDB4RjAsIDB4QzYsIDB4NjYsIDB4MDEsIDB4MTMsIDB4QjQsIDB4MTMsCisgICAgMHg5NSwgMHg4RSwgMHg0OSwgMHgyMiwgMHg0RiwgMHg1RCwgMHhGRiwgMHhEQiwgMHhBRSwgMHg1MCwgMHg3MSwgMHg2RSwgMHhDMiwgMHhBMiwgMHhBNywgMHg3MCwKKyAgICAweEVFLCAweERCLCAweEI1LCAweDE4LCAweDFFLCAweDRDLCAweDBGLCAweDU3LCAweEM3LCAweDRFLCAweDQ2LCAweERELCAweDc4LCAweDVGLCAweDFBLCAweEVFLAorICAgIDB4MDIsIDB4QUMsIDB4ODAsIDB4RTQsIDB4QTgsIDB4MzgsIDB4NjcsIDB4QUQsIDB4NUMsIDB4RjcsIDB4MDAsIDB4QzUsIDB4Q0EsIDB4MEIsIDB4NTIsIDB4NDksCisgICAgMHg5NCwgMHg0MywgMHg5NywgMHg5MCwgMHg0NiwgMHhGNSwgMHgxQSwgMHhBNSwgMHgyMSwgMHg3RSwgMHgwNSwgMHhBQywgMHhGMSwgMHg5NywgMHg2NiwgMHg0MiwKKyAgICAweEZCLCAweDVELCAweDRGLCAweDcxLCAweDRCLCAweDhFLCAweDNFLCAweEMzLCAweDlFLCAweDE0LCAweEY3LCAweEFELCAweERFLCAweDM0LCAweEVCLCAweDlDLAorICAgIDB4MDYsIDB4QjEsIDB4OEEsIDB4RTIsIDB4OUQsIDB4QTYsIDB4MjUsIDB4RkQsIDB4MUIsIDB4NjksIDB4REYsIDB4NDEsIDB4NjAsIDB4QkYsIDB4QTQsIDB4MDQsCisgICAgMHg1QywgMHhGNywgMHg3NiwgMHhGRCwgMHgyMiwgMHgzMCwgMHgwQywgMHg2MywgMHhEQiwgMHhBRCwgMHg0MiwgMHhBOCwgMHgwQSwgMHg5NywgMHhFNywgMHhGMCwKKyAgICAweDU3LCAweDlELCAweDE3LCAweDZCLCAweDM3LCAweDVELCAweDM1LCAweEM5LCAweDVGLCAweEFDLCAweEY2LCAweEI4LCAweDg5LCAweDQxLCAweEIwLCAweDZGLAorICAgIDB4NDksIDB4QTgsIDB4NDcsIDB4NjEsIDB4QjEsIDB4NjMsIDB4NjUsIDB4NDAsIDB4MDcsIDB4RDgsIDB4QzUsIDB4NUEsIDB4NUQsIDB4MUQsIDB4ODIsIDB4N0YsCisgICAgMHhDQywgMHg2QSwgMHhGMiwgMHhBMSwgMHgzNiwgMHgzQywgMHhDMCwgMHg1MSwgMHg2RSwgMHhEMywgMHg0QiwgMHgzNiwgMHhFMCwgMHgwNywgMHhDRSwgMHhBMywKKyAgICAweDlCLCAweEIxLCAweDEzLCAweDA0LCAweDMyLCAweDg3LCAweDc1LCAweDRBLCAweDE2LCAweDM0LCAweEI0LCAweDc1LCAweDBGLCAweDc1LCAweDMzLCAweDdDLAorICAgIDB4RUMsIDB4MDIsIDB4MzUsIDB4QTksIDB4NDksIDB4MzksIDB4RjYsIDB4MjQsIDB4MDMsIDB4NzMsIDB4Q0UsIDB4NTQsIDB4NDUsIDB4MDIsIDB4NkMsIDB4MEEsCisgICAgMHg1MywgMHgyQiwgMHg3MywgMHgzOCwgMHgzQywgMHg4MSwgMHg1NiwgMHhBNywgMHhCQiwgMHhGMiwgMHg3MywgMHgwRiwgMHhDNywgMHhCNywgMHgwRSwgMHhBQSwKKyAgICAweDQ1LCAweDYyLCAweEE2LCAweDI5LCAweDhDLCAweEM5LCAweDBELCAweDQ1LCAweDBFLCAweEJELCAweERCLCAweEQ4LCAweDcxLCAweDVDLCAweEQ3LCAweDE4LAorICAgIDB4RkMsIDB4QjAsIDB4NjEsIDB4ODksIDB4QTIsIDB4MjIsIDB4RjQsIDB4RjUsIDB4NDgsIDB4MzgsIDB4RTgsIDB4N0YsIDB4MTcsIDB4NUMsIDB4ODIsIDB4RjYsCisgICAgMHgyRCwgMHgxRiwgMHgyOCwgMHg4NSwgMHhEOSwgMHhCNywgMHgxNiwgMHhBNCwgMHg1MiwgMHg2RiwgMHgzQSwgMHhGMSwgMHhFRSwgMHhBNywgMHgyRCwgMHg5OSwKKyAgICAweDcxLCAweEFELCAweEFBLCAweDE1LCAweDI0LCAweEQ4LCAweDg2LCAweDFELCAweDc4LCAweDkwLCAweDBCLCAweDRDLCAweDRFLCAweDc4LCAweEMxLCAweEMyLAorICAgIDB4RDcsIDB4RUQsIDB4RTYsIDB4QjQsIDB4RjAsIDB4QUMsIDB4MkEsIDB4RkQsIDB4RTYsIDB4NzUsIDB4QkEsIDB4Q0EsIDB4MEMsIDB4QUQsIDB4RDYsIDB4M0QsCisgICAgMHgzOCwgMHg0RCwgMHgxRiwgMHhFOSwgMHg3RCwgMHg4NywgMHhBOCwgMHhDQSwgMHgxMywgMHgxQSwgMHhGQSwgMHg3MiwgMHg1MywgMHg4RSwgMHhCMiwgMHgyRiwKKyAgICAweEUzLCAweEFELCAweEFBLCAweDhFLCAweDdBLCAweEJBLCAweDZBLCAweEJDLCAweDJDLCAweDhFLCAweEJBLCAweEQ1LCAweDBCLCAweDNFLCAweDJGLCAweDRELAorICAgIDB4QjMsIDB4QzQsIDB4RjYsIDB4NkYsIDB4MDEsIDB4RUYsIDB4OTAsIDB4NjAsIDB4QzksIDB4M0QsIDB4RDIsIDB4OTMsIDB4NDUsIDB4MDMsIDB4Q0IsIDB4NjUsCisgICAgMHgxMSwgMHhFMSwgMHhBRCwgMHg3QSwgMHg5MCwgMHhDRSwgMHhGQSwgMHg0MSwgMHgwNSwgMHg0NSwgMHg1NSwgMHgxMCwgMHhFOSwgMHg0NCwgMHhCRiwgMHg1OSwKKyAgICAweDU4LCAweEMyLCAweDcxLCAweERCLCAweDAwLCAweEJBLCAweDBDLCAweDMyLCAweDA4LCAweEY5LCAweEIxLCAweDU4LCAweEZBLCAweEU2LCAweDQ1LCAweEZELAorICAgIDB4MEIsIDB4QkMsIDB4MjMsIDB4QjcsIDB4ODIsIDB4RTEsIDB4ODksIDB4M0EsIDB4MUYsIDB4QTEsIDB4REEsIDB4RDIsIDB4MjcsIDB4N0EsIDB4MEMsIDB4MTgsCisgICAgMHhBMSwgMHgxRCwgMHgwMiwgMHhEMCwgMHg1OSwgMHhFRSwgMHhBOCwgMHg0MiwgMHhGNCwgMHg2NywgMHgwMiwgMHgwQSwgMHhDMSwgMHhCMCwgMHhDMiwgMHgzRSwKKyAgICAweDhFLCAweDg2LCAweEFELCAweEI1LCAweDNCLCAweDc4LCAweDA1LCAweEJFLCAweDUxLCAweDEyLCAweEJGLCAweDUwLCAweDU4LCAweEJELCAweEYzLCAweDk0LAorICAgIDB4RkIsIDB4MDIsIDB4MDQsIDB4MzgsIDB4NUYsIDB4RkQsIDB4REMsIDB4N0QsIDB4Q0IsIDB4REEsIDB4MjYsIDB4MzYsIDB4NzksIDB4NUMsIDB4ODksIDB4NTIsCisgICAgMHhCOCwgMHhGOCwgMHg5NiwgMHg0QiwgMHhBOSwgMHg0OSwgMHg0MywgMHhCNSwgMHgzMiwgMHgyMiwgMHg0MCwgMHgyNywgMHg2NywgMHhGRSwgMHg0NiwgMHhCOSwKKyAgICAweDBCLCAweDE3LCAweDc1LCAweDRCLCAweEVCLCAweDA4LCAweEExLCAweERFLCAweEM2LCAweDdFLCAweEQ1LCAweEFGLCAweDRBLCAweDY5LCAweEFBLCAweDhDLAorICAgIDB4QTEsIDB4NzQsIDB4MzMsIDB4NTQsIDB4MzMsIDB4NDcsIDB4NjIsIDB4MDAsIDB4RTgsIDB4NjMsIDB4NzYsIDB4NEMsIDB4RTcsIDB4NzYsIDB4RUUsIDB4NzgsCisgICAgMHg1QSwgMHhCOCwgMHg0NCwgMHg0QSwgMHg4RiwgMHgwRCwgMHhENywgMHgzMiwgMHhDNCwgMHhCOSwgMHhCMCwgMHgxQSwgMHhGOSwgMHg1OCwgMHg4RiwgMHg5RSwKKyAgICAweDA2LCAweDlGLCAweDg3LCAweDlELCAweDI5LCAweDFFLCAweEJGLCAweEE1LCAweEZELCAweEE2LCAweENELCAweEY5LCAweEQ4LCAweDZELCAweDAxLCAweENDLAorICAgIDB4MEYsIDB4RjYsIDB4NTIsIDB4Q0IsIDB4RkEsIDB4RTAsIDB4QTUsIDB4MkQsIDB4Q0MsIDB4QjksIDB4QTAsIDB4QjEsIDB4OUQsIDB4RDMsIDB4MDksIDB4MjQsCisgICAgMHgzNCwgMHhENywgMHgwMSwgMHgxNSwgMHgzRCwgMHhFQiwgMHgwRiwgMHgwNywgMHhBQywgMHgzQSwgMHg5NCwgMHhDQywgMHhBQSwgMHg1MiwgMHgxRSwgMHhCRCwKKyAgICAweDRDLCAweDQ5LCAweENELCAweDIyLCAweDg1LCAweDg5LCAweDQ3LCAweDI3LCAweDIxLCAweDRFLCAweDk2LCAweDQxLCAweDk0LCAweDZGLCAweEZGLCAweDJFLAorICAgIDB4NjksIDB4M0EsIDB4NkIsIDB4QTcsIDB4NzQsIDB4QkEsIDB4OUIsIDB4RUIsIDB4MjUsIDB4NUUsIDB4QTksIDB4NUEsIDB4RTAsIDB4NjYsIDB4NTksIDB4RjYsCisgICAgMHgxOCwgMHg1QiwgMHg3NywgMHhERiwgMHg4RSwgMHg1NiwgMHg2NywgMHg1MiwgMHgyQywgMHhEQSwgMHgwQywgMHhCMCwgMHhGMiwgMHhGOCwgMHhCOSwgMHhFMiwKKyAgICAweDgwLCAweEI0LCAweDJBLCAweDZFLCAweEZGLCAweDgxLCAweEMyLCAweDcyLCAweDdDLCAweEVFLCAweDcxLCAweEM3LCAweDA2LCAweEY1LCAweDYxLCAweEFDLAorICAgIDB4RkMsIDB4NzcsIDB4ODQsIDB4RDQsIDB4RUIsIDB4NDEsIDB4OTUsIDB4N0YsIDB4RUUsIDB4RDAsIDB4REQsIDB4OTEsIDB4MjAsIDB4QUUsIDB4RjksIDB4QkUsCisgICAgMHhGOCwgMHgzMCwgMHhGMywgMHgyNSwgMHg1NywgMHhBNCwgMHgxRCwgMHhEQiwgMHgwRiwgMHhEMywgMHg1QSwgMHhBNywgMHg5MywgMHgxQiwgMHg4MywgMHg0QiwKKyAgICAweDYyLCAweEQ0LCAweDRDLCAweEExLCAweEQ2LCAweDM0LCAweDBELCAweEJDLCAweDM2LCAweDAwLCAweDM1LCAweDY1LCAweDYxLCAweDE0LCAweDQ4LCAweDAzLAorICAgIDB4NEIsIDB4QjUsIDB4QkIsIDB4RkEsIDB4NUQsIDB4QjAsIDB4MkQsIDB4Q0EsIDB4OEUsIDB4NTQsIDB4MkEsIDB4QkEsIDB4NzcsIDB4QTQsIDB4RTQsIDB4OTQsCisgICAgMHgzMSwgMHgyMSwgMHgwQiwgMHhEQiwgMHgwNCwgMHhBMiwgMHg2QiwgMHhFQiwgMHg4MCwgMHhGMiwgMHg3MSwgMHhEOSwgMHgyRSwgMHhEQSwgMHg4QywgMHg2MSwKKyAgICAweEE1LCAweDc5LCAweDQ4LCAweDdGLCAweDcwLCAweEZCLCAweDA0LCAweEY1LCAweEI4LCAweEEwLCAweENELCAweDFELCAweEIwLCAweEJGLCAweDYyLCAweDI5LAorICAgIDB4QzEsIDB4QUIsIDB4QjEsIDB4QTEsIDB4RDgsIDB4NkUsIDB4NDgsIDB4QzcsIDB4MEIsIDB4MjAsIDB4MUEsIDB4RjYsIDB4RDYsIDB4QjIsIDB4MzcsIDB4RDIsCisgICAgMHhBMywgMHhDQywgMHg4NCwgMHgzMywgMHhCRCwgMHg5MCwgMHhGRSwgMHgyMywgMHgxMCwgMHg5QSwgMHg0MSwgMHgwQSwgMHhCQSwgMHhCMywgMHhFNiwgMHg3NSwKKyAgICAweDYyLCAweDdELCAweDkxLCAweDgyLCAweDFDLCAweDQ1LCAweEJCLCAweDI0LCAweEQzLCAweDY3LCAweERBLCAweEIyLCAweEE1LCAweEU1LCAweDBGLCAweERGLAorICAgIDB4MEIsIDB4NTgsIDB4REEsIDB4MjUsIDB4RUIsIDB4MDIsIDB4NjYsIDB4RTEsIDB4NUMsIDB4RUEsIDB4M0UsIDB4NkIsIDB4MzIsIDB4RkYsIDB4RkEsIDB4OEEsCisgICAgMHg2RiwgMHg5MSwgMHgyMywgMHgzRSwgMHg1MiwgMHhENSwgMHg4NCwgMHgzMCwgMHhBNCwgMHgxNSwgMHhCNSwgMHgwNCwgMHhDQywgMHhDRSwgMHgxMCwgMHg5RiwKKyAgICAweDA0LCAweEQyLCAweDUzLCAweDk0LCAweEI5LCAweDAxLCAweDcxLCAweDBELCAweEEyLCAweEEwLCAweENCLCAweDhGLCAweDlDLCAweEEzLCAweDQ5LCAweDZDLAorICAgIDB4MkEsIDB4M0UsIDB4ODgsIDB4QzMsIDB4MzksIDB4MDUsIDB4OTksIDB4NTcsIDB4QUUsIDB4RUEsIDB4MzgsIDB4NzgsIDB4RjksIDB4NEMsIDB4NDksIDB4MUQsCisgICAgMHhDRSwgMHgzMiwgMHgxMCwgMHg0QSwgMHgxMCwgMHgyNCwgMHg1RCwgMHgxNiwgMHhCRSwgMHg4MiwgMHg0MCwgMHgyOCwgMHhDNSwgMHhDNCwgMHhDOSwgMHg0RSwKKyAgICAweEUwLCAweEY5LCAweDY4LCAweEI4LCAweDgzLCAweDY4LCAweEFDLCAweDJGLCAweDc0LCAweEIxLCAweDlCLCAweDUyLCAweEZDLCAweDBELCAweDMxLCAweEJCLAorICAgIDB4RjIsIDB4QjAsIDB4MjQsIDB4OTQsIDB4NzgsIDB4OEMsIDB4MzksIDB4RUMsIDB4QTcsIDB4REUsIDB4M0YsIDB4RjQsIDB4QzcsIDB4QzgsIDB4NEEsIDB4M0IsCisgICAgMHgzNywgMHg0MiwgMHg0MSwgMHg0NiwgMHg0QiwgMHg1RCwgMHg1MywgMHg2QywgMHg0NSwgMHhCMiwgMHgyQSwgMHg2RSwgMHg2QSwgMHg0QSwgMHg4RiwgMHhERCwKKyAgICAweDU2LCAweDFFLCAweEFBLCAweEIyLCAweDQxLCAweDYwLCAweERDLCAweEU3LCAweDQ1LCAweDg2LCAweEZELCAweEUyLCAweENFLCAweEQ5LCAweDlCLCAweDk4LAorICAgIDB4MzksIDB4NEUsIDB4QkUsIDB4MkIsIDB4ODksIDB4MkUsIDB4RUYsIDB4Q0IsIDB4RTQsIDB4NEQsIDB4Q0QsIDB4MDAsIDB4MEEsIDB4OEUsIDB4NjksIDB4QUQsCisgICAgMHgzNiwgMHgwQSwgMHhCQiwgMHhDQywgMHg1RSwgMHg4RiwgMHg1RCwgMHgxMiwgMHgzMCwgMHg2RSwgMHhFRiwgMHhBRSwgMHg0RSwgMHhBRCwgMHhGRSwgMHhGOCwKKyAgICAweDNELCAweDcxLCAweDYxLCAweDc1LCAweDM3LCAweDVCLCAweDYxLCAweEM3LCAweDFCLCAweDM4LCAweEZCLCAweDE2LCAweDE5LCAweEQ3LCAweDgyLCAweDVGLAorICAgIDB4OTgsIDB4NEUsIDB4REYsIDB4N0UsIDB4QUQsIDB4MjQsIDB4MzgsIDB4NkUsIDB4Q0YsIDB4QTYsIDB4RDAsIDB4OTMsIDB4QkUsIDB4NzAsIDB4MTYsIDB4MUMsCisgICAgMHgwMSwgMHgyOSwgMHhBOSwgMHg2NywgMHhEOSwgMHgwOCwgMHgyMiwgMHg0OCwgMHhERCwgMHgxRSwgMHg4MiwgMHgxMywgMHhCNywgMHhBNywgMHhGRCwgMHg3NCwKKyAgICAweEFFLCAweEEyLCAweEU0LCAweEVBLCAweDYwLCAweEI4LCAweEQxLCAweDQzLCAweERBLCAweDM1LCAweEZGLCAweDc2LCAweEY4LCAweEY1LCAweDkxLCAweDVGLAorICAgIDB4QjcsIDB4RUYsIDB4MjEsIDB4ODEsIDB4QTEsIDB4OEIsIDB4ODgsIDB4RTcsIDB4NEUsIDB4QTQsIDB4MTIsIDB4REMsIDB4M0MsIDB4MzUsIDB4QTgsIDB4OUQsCisgICAgMHgyNywgMHg3OCwgMHgxRiwgMHg0OCwgMHhFNywgMHg1NCwgMHg0QywgMHg5OCwgMHg3QiwgMHgxMywgMHgxRiwgMHg0MiwgMHhENCwgMHgzNiwgMHg1NSwgMHhEQiwKKyAgICAweDk2LCAweDc0LCAweEU0LCAweERBLCAweEYyLCAweEUzLCAweENDLCAweEMxLCAweEM4LCAweDIzLCAweDRELCAweDkwLCAweDUxLCAweDc3LCAweDBCLCAweEEzLAorICAgIDB4NEQsIDB4MEMsIDB4REQsIDB4MTksIDB4ODcsIDB4MTMsIDB4MTUsIDB4REIsIDB4NEYsIDB4MzksIDB4OEIsIDB4NDgsIDB4MjUsIDB4ODUsIDB4M0IsIDB4MDIsCisgICAgMHgxRSwgMHg3MywgMHg4MywgMHhFRiwgMHhCRCwgMHg1QSwgMHgxMywgMHgwNiwgMHhBRCwgMHhBQiwgMHg5MCwgMHhEOSwgMHg5RiwgMHhCQywgMHg1OSwgMHhFNywKKyAgICAweDBBLCAweEE4LCAweEI2LCAweEVGLCAweEFELCAweEI1LCAweDM3LCAweDdCLCAweDlELCAweEFBLCAweEFDLCAweDlDLCAweEM3LCAweDBGLCAweDdCLCAweDM0LAorICAgIDB4NzgsIDB4ODMsIDB4NTEsIDB4Q0IsIDB4NUIsIDB4RDMsIDB4RkUsIDB4MTQsIDB4MEUsIDB4QjEsIDB4MzEsIDB4QUIsIDB4NzgsIDB4OUYsIDB4REUsIDB4M0YsCisgICAgMHhERiwgMHgwNSwgMHg5NiwgMHhBNCwgMHhBMywgMHg0NCwgMHgzQiwgMHg1RiwgMHgyMCwgMHg4MCwgMHg1QywgMHhFNSwgMHgwMiwgMHhGRiwgMHhEMiwgMHhEMywKKyAgICAweEI5LCAweDBBLCAweEZELCAweDM5LCAweDk3LCAweDM5LCAweDY4LCAweDQzLCAweDJFLCAweDczLCAweDE4LCAweDI5LCAweEZDLCAweDlCLCAweDJELCAweDAzLAorICAgIDB4NEIsIDB4OTMsIDB4RDAsIDB4NTcsIDB4ODIsIDB4ODIsIDB4MTQsIDB4NEMsIDB4RDMsIDB4ODcsIDB4MjEsIDB4MzksIDB4OUUsIDB4MkIsIDB4MTUsIDB4NkMsCisgICAgMHhDRSwgMHhCNiwgMHhCNCwgMHg2OSwgMHgxNywgMHhFOSwgMHhENSwgMHhBMCwgMHg2NywgMHhFRCwgMHg0NywgMHhBRiwgMHhBRSwgMHhGRCwgMHhCQywgMHhBNiwKKyAgICAweEFBLCAweEMzLCAweEVBLCAweDg2LCAweEY1LCAweDVFLCAweDJBLCAweEE5LCAweDQxLCAweEY5LCAweDRELCAweDcwLCAweDc3LCAweDQzLCAweEJGLCAweDMxLAorICAgIDB4Q0MsIDB4MDIsIDB4MDYsIDB4MzEsIDB4Q0IsIDB4OUMsIDB4NDcsIDB4RDYsIDB4QUYsIDB4NzksIDB4NUIsIDB4RTMsIDB4MEIsIDB4QTksIDB4Q0IsIDB4QkYsCisgICAgMHg0MiwgMHhDNCwgMHgzRSwgMHhDMiwgMHgxMywgMHgzRCwgMHg1QiwgMHg1QywgMHgyMywgMHg4MiwgMHhGMywgMHg1NywgMHgwOCwgMHhBNywgMHgwQSwgMHgwNiwKKyAgICAweDczLCAweEMzLCAweDEzLCAweDg2LCAweEUwLCAweDI0LCAweEFDLCAweDQ1LCAweEE2LCAweDkzLCAweDJELCAweDY5LCAweEE0LCAweDEzLCAweDI4LCAweDE4LAorICAgIDB4N0QsIDB4OTIsIDB4RkIsIDB4NTEsIDB4M0YsIDB4OUIsIDB4NjIsIDB4RkQsIDB4NTEsIDB4QTksIDB4REEsIDB4RkMsIDB4NEEsIDB4QTAsIDB4OUQsIDB4RkMsCisgICAgMHgxNSwgMHhFMSwgMHhGQSwgMHgxOSwgMHgwOCwgMHhEMywgMHhCNywgMHhFMywgMHgxRiwgMHhBNSwgMHg1MywgMHhBMSwgMHhGRSwgMHhGRiwgMHhBNSwgMHhGMywKKyAgICAweDI4LCAweDlELCAweDI2LCAweDEyLCAweEVELCAweEQyLCAweDNDLCAweEZBLCAweDdFLCAweDdDLCAweDIwLCAweDhELCAweDlELCAweDRFLCAweEQ4LCAweDZBLAorICAgIDB4QkQsIDB4RUUsIDB4RjgsIDB4MzEsIDB4MjksIDB4REYsIDB4MzYsIDB4QzcsIDB4MkIsIDB4NUYsIDB4NDUsIDB4QjcsIDB4OUIsIDB4QUUsIDB4MzMsIDB4OTUsCisgICAgMHhFMywgMHhFMywgMHg5RiwgMHgwQywgMHg5QywgMHhFQiwgMHhDRSwgMHhEMywgMHhGMiwgMHgwNSwgMHgzRCwgMHhEQywgMHgwQSwgMHhENSwgMHg3QywgMHhGOCwKKyAgICAweDRBLCAweERBLCAweEVCLCAweEE5LCAweDQ3LCAweDkwLCAweEExLCAweDJCLCAweDNFLCAweEUzLCAweDQ2LCAweEZFLCAweDQ0LCAweEU0LCAweDkwLCAweDU1LAorICAgIDB4RDcsIDB4M0MsIDB4MzYsIDB4QUYsIDB4Q0UsIDB4NDIsIDB4MUMsIDB4QzgsIDB4RDcsIDB4RjIsIDB4QUIsIDB4MDIsIDB4NEUsIDB4NkYsIDB4M0YsIDB4QTUsCisgICAgMHg3MSwgMHg5QiwgMHhCNCwgMHg2NywgMHg2NSwgMHgxNywgMHgwNiwgMHg0QywgMHg3QSwgMHgwRSwgMHhGNSwgMHgyMiwgMHg0NiwgMHgxMSwgMHg1NSwgMHgyMSwKKyAgICAweEQ4LCAweDI3LCAweDE2LCAweDFELCAweEI0LCAweEYxLCAweEE4LCAweDVCLCAweDlELCAweEE0LCAweDRCLCAweEQ2LCAweEVDLCAweEM3LCAweDIwLCAweDM3LAorICAgIDB4OTMsIDB4MjAsIDB4NDAsIDB4MTIsIDB4ODgsIDB4OUEsIDB4RTksIDB4REEsIDB4NjMsIDB4MUEsIDB4QTQsIDB4QTYsIDB4RTEsIDB4M0UsIDB4MDQsIDB4RTIsCisgICAgMHg5QywgMHg3NCwgMHhERiwgMHg3QywgMHg0QywgMHgzNCwgMHhFRCwgMHg1OCwgMHhBQywgMHg2QiwgMHg1NSwgMHg4NSwgMHg5QSwgMHhDNiwgMHg5RSwgMHgzRiwKKyAgICAweDAwLCAweDJGLCAweDJFLCAweDAzLCAweEVELCAweDQ4LCAweERELCAweEMyLCAweDQ5LCAweEY1LCAweDJCLCAweDY0LCAweDc2LCAweEQ3LCAweEY1LCAweDJGLAorICAgIDB4QzMsIDB4RTAsIDB4RTgsIDB4NTYsIDB4NEQsIDB4RDQsIDB4NjQsIDB4MUIsIDB4QkIsIDB4RDMsIDB4MUIsIDB4MjEsIDB4MUYsIDB4MDEsIDB4NEMsIDB4MzIsCisgICAgMHhEMiwgMHhDQywgMHhGRCwgMHhGNSwgMHgzOCwgMHg5OSwgMHhCQywgMHg0MCwgMHgwNSwgMHhFMiwgMHgwMiwgMHhDQiwgMHgyOCwgMHg5MiwgMHhFNSwgMHg1RCwKKyAgICAweEZGLCAweDJBLCAweEJDLCAweEZGLCAweDk4LCAweDAxLCAweDdDLCAweEVGLCAweDA0LCAweDM2LCAweDUwLCAweEZDLCAweDYxLCAweDM1LCAweEM2LCAweEMxLAorICAgIDB4QjIsIDB4MUIsIDB4Q0QsIDB4OEMsIDB4MzgsIDB4NDIsIDB4QkQsIDB4OEYsIDB4ODQsIDB4MDYsIDB4QkUsIDB4NEMsIDB4M0YsIDB4QkUsIDB4RjAsIDB4QTIsCisgICAgMHgwQSwgMHg5MiwgMHg0RSwgMHhENCwgMHg4NywgMHg3RSwgMHg4QSwgMHgxMSwgMHgwQiwgMHg3NSwgMHhGNiwgMHg1QSwgMHhCRCwgMHgzQiwgMHhCNSwgMHg5QiwKKyAgICAweEZGLCAweDM5LCAweDVFLCAweDdFLCAweDNDLCAweEExLCAweEJELCAweDc2LCAweEFGLCAweENCLCAweDFCLCAweEE1LCAweDQ4LCAweDM1LCAweDgzLCAweDg5LAorICAgIDB4Q0YsIDB4QjQsIDB4MTgsIDB4MzcsIDB4RkIsIDB4OTUsIDB4MzQsIDB4NEYsIDB4MzksIDB4MjksIDB4MTcsIDB4OUMsIDB4QkIsIDB4REMsIDB4RjcsIDB4NjgsCisgICAgMHgxQiwgMHhGQiwgMHg5NSwgMHg0MiwgMHhFRCwgMHhBNiwgMHhGRSwgMHhFMiwgMHhCRSwgMHgwNiwgMHhEQiwgMHhFMSwgMHg2QiwgMHhDOSwgMHg1NCwgMHgyRiwKKyAgICAweEEzLCAweDc1LCAweDkxLCAweEJFLCAweEUwLCAweDU1LCAweDZCLCAweEE1LCAweEQ4LCAweDBFLCAweEQwLCAweEQwLCAweDA4LCAweDY0LCAweEVFLCAweEZDLAorICAgIDB4RUUsIDB4N0UsIDB4MzksIDB4QUMsIDB4OTQsIDB4OUMsIDB4M0YsIDB4NzcsIDB4RjIsIDB4REEsIDB4RjUsIDB4QkUsIDB4OUYsIDB4OTEsIDB4NjMsIDB4NjgsCisgICAgMHhCNiwgMHhFMiwgMHgwNiwgMHhBRCwgMHg4QiwgMHgxQiwgMHhEQiwgMHhFOSwgMHgwRCwgMHg4NywgMHg2RiwgMHg3OCwgMHg2QiwgMHg1MSwgMHg4NiwgMHhFMSwKKyAgICAweDQ0LCAweDkxLCAweEQ3LCAweDYyLCAweDFELCAweDdGLCAweDg4LCAweEU4LCAweDJBLCAweEFELCAweDE5LCAweDAxLCAweDAyLCAweDc2LCAweDA1LCAweDQzLAorICAgIDB4QkUsIDB4MUEsIDB4QjgsIDB4MzYsIDB4QzIsIDB4MEQsIDB4MjQsIDB4OTAsIDB4MkUsIDB4MTMsIDB4Q0YsIDB4RkMsIDB4MEMsIDB4M0UsIDB4MTgsIDB4OUQsCisgICAgMHhCRiwgMHgxNiwgMHgxRSwgMHhBQiwgMHgyMiwgMHg1QiwgMHhGOCwgMHg3MiwgMHhFMCwgMHhERiwgMHhGOSwgMHg1MSwgMHg3MywgMHhCMiwgMHg1NCwgMHg5OSwKKyAgICAweDMyLCAweDAwLCAweDRFLCAweDA2LCAweDNGLCAweEFBLCAweDFGLCAweEU1LCAweDZDLCAweEYwLCAweDFELCAweEY1LCAweEEwLCAweDEwLCAweDJCLCAweDYzLAorICAgIDB4MUMsIDB4NjUsIDB4QUEsIDB4QzYsIDB4OEMsIDB4OEQsIDB4N0QsIDB4RTUsIDB4QTgsIDB4OTgsIDB4QkQsIDB4MEUsIDB4RTQsIDB4Q0YsIDB4MDYsIDB4MjgsCisgICAgMHg4QSwgMHhDMywgMHhGQiwgMHgxNiwgMHgyQSwgMHgyOSwgMHhFNywgMHhDQSwgMHhEQywgMHhDQywgMHhBQiwgMHhCMywgMHhGMSwgMHg3QiwgMHg4NywgMHg3NiwKKyAgICAweEJBLCAweEIzLCAweEEyLCAweDcwLCAweDQ3LCAweDA4LCAweDUyLCAweDJGLCAweDNBLCAweEE2LCAweDMwLCAweDBGLCAweEE4LCAweDY2LCAweDMyLCAweEMzLAorICAgIDB4MEIsIDB4N0YsIDB4MTksIDB4MjQsIDB4MEEsIDB4RTMsIDB4NjksIDB4MDksIDB4RDQsIDB4OTAsIDB4MTQsIDB4RTgsIDB4RjUsIDB4RDMsIDB4QUIsIDB4N0MsCisgICAgMHhCNCwgMHhCNCwgMHgyQiwgMHg0QywgMHhCOCwgMHg0NCwgMHg5MCwgMHhDRiwgMHhFNCwgMHhCMSwgMHg1QywgMHhFRSwgMHgwRSwgMHhDMSwgMHgxOSwgMHhGRiwKKyAgICAweDEwLCAweEM2LCAweDlBLCAweEQ1LCAweDMyLCAweDkwLCAweDY5LCAweDlELCAweENGLCAweEQ0LCAweDdCLCAweDY1LCAweDM5LCAweDU5LCAweDE5LCAweDk3LAorICAgIDB4MzAsIDB4QjgsIDB4MDAsIDB4RDEsIDB4RTIsIDB4ODIsIDB4NjEsIDB4QkYsIDB4OUMsIDB4NkUsIDB4MDUsIDB4NkEsIDB4QjQsIDB4MzYsIDB4NDIsIDB4QzIsCisgICAgMHg3QSwgMHhCOSwgMHg5NiwgMHg2RSwgMHg2MiwgMHg5QywgMHg2OCwgMHgxMSwgMHg3MSwgMHg4NywgMHg2NCwgMHg4NywgMHg5NiwgMHg4MCwgMHg1NiwgMHg2NywKKyAgICAweEZDLCAweERCLCAweDcxLCAweDUxLCAweDg3LCAweDRDLCAweDVDLCAweEZELCAweEEyLCAweDkwLCAweEQyLCAweDBFLCAweDlDLCAweDUyLCAweEQyLCAweEU3LAorICAgIDB4NDksIDB4MDcsIDB4NTYsIDB4MTIsIDB4QTYsIDB4RDgsIDB4OEEsIDB4MUMsIDB4QUQsIDB4QUYsIDB4QTcsIDB4MjAsIDB4NTYsIDB4MUYsIDB4RDAsIDB4Q0QsCisgICAgMHg5MywgMHhCRSwgMHg0RiwgMHhGQiwgMHg2MCwgMHhBMywgMHgxMCwgMHhCNSwgMHg3OSwgMHhCNSwgMHg3RSwgMHg3OSwgMHhGNSwgMHgyRiwgMHg1NywgMHhDMiwKKyAgICAweERELCAweDIzLCAweDIzLCAweDRFLCAweDkxLCAweEMyLCAweEJELCAweDgxLCAweERBLCAweDQ4LCAweDg4LCAweEEzLCAweERDLCAweDJBLCAweEYwLCAweEJFLAorICAgIDB4MDgsIDB4MDAsIDB4RTcsIDB4QzYsIDB4QTQsIDB4NjYsIDB4MTYsIDB4MzAsIDB4NDAsIDB4QTUsIDB4RjEsIDB4NDAsIDB4MUMsIDB4NTcsIDB4NUYsIDB4MUQsCisgICAgMHg5NiwgMHg3NiwgMHhGMiwgMHhFMywgMHg3MSwgMHhENCwgMHgyRSwgMHg3NiwgMHg5MCwgMHgzMiwgMHg0RiwgMHgyRiwgMHhGNSwgMHhFRCwgMHg1OSwgMHgyRiwKKyAgICAweDIwLCAweDk3LCAweDdBLCAweDFGLCAweEUxLCAweEUwLCAweEU0LCAweDFFLCAweDkzLCAweEYzLCAweDc5LCAweDhCLCAweENELCAweDBCLCAweDg0LCAweDkxLAorICAgIDB4REYsIDB4MzUsIDB4N0MsIDB4N0YsIDB4RUUsIDB4QzksIDB4NjEsIDB4RjEsIDB4RkQsIDB4QkYsIDB4RkIsIDB4QTAsIDB4MDksIDB4N0EsIDB4QTEsIDB4RkYsCisgICAgMHhENiwgMHgxMywgMHgxNCwgMHhENywgMHhFQiwgMHgzNywgMHgyNiwgMHgzMSwgMHg5OCwgMHgxNiwgMHhEOCwgMHhBNywgMHhDRSwgMHg2QywgMHg2NCwgMHg3MSwKKyAgICAweEUwLCAweEUzLCAweDVDLCAweDMzLCAweDk3LCAweDlFLCAweDFBLCAweDI1LCAweDEzLCAweEJGLCAweDA1LCAweDA0LCAweDBELCAweDExLCAweEYzLCAweDE5LAorICAgIDB4MjAsIDB4NDMsIDB4N0IsIDB4N0QsIDB4OEEsIDB4NUYsIDB4ODksIDB4MDUsIDB4QUMsIDB4NTksIDB4QkMsIDB4REEsIDB4NDUsIDB4NTcsIDB4MzAsIDB4QTMsCisgICAgMHg2OCwgMHg5RiwgMHgxOCwgMHgwQiwgMHg5QSwgMHg0MSwgMHg3RSwgMHg3QiwgMHg4NSwgMHg4RSwgMHgzNywgMHhBRSwgMHgyRCwgMHhERSwgMHg3QywgMHhFOCwKKyAgICAweEI1LCAweDM3LCAweEE3LCAweEI5LCAweEYwLCAweEE5LCAweEE0LCAweDU1LCAweDgzLCAweDNGLCAweDhGLCAweDFFLCAweDAxLCAweDBDLCAweEY5LCAweDlFLAorICAgIDB4NDMsIDB4NUMsIDB4NjAsIDB4M0YsIDB4MjYsIDB4RTQsIDB4QkIsIDB4OEIsIDB4QUMsIDB4NjEsIDB4RkYsIDB4MkYsIDB4NDMsIDB4MUUsIDB4NkIsIDB4MEIsCisgICAgMHhGQiwgMHhDOSwgMHg2QSwgMHg4QywgMHgyMiwgMHgzNiwgMHhDMSwgMHgyMSwgMHg3NywgMHg0NCwgMHhGRiwgMHgyQywgMHhGOCwgMHhDRiwgMHgyOSwgMHg5RiwKKyAgICAweDZGLCAweDNFLCAweDQzLCAweDJCLCAweEUyLCAweDNGLCAweDhFLCAweDBGLCAweEMxLCAweDM4LCAweDJFLCAweDdELCAweDI1LCAweDc2LCAweDFBLCAweDEwLAorICAgIDB4MTksIDB4RUUsIDB4MzcsIDB4MDUsIDB4RUIsIDB4N0EsIDB4NEYsIDB4MDcsIDB4RDgsIDB4MUQsIDB4MEYsIDB4RjMsIDB4NTAsIDB4NDMsIDB4NEUsIDB4NjcsCisgICAgMHg4NSwgMHgyNiwgMHgxNiwgMHhFNSwgMHgzOCwgMHgzRCwgMHgzRiwgMHhFQiwgMHg0QywgMHg4NywgMHg1RSwgMHhERSwgMHg5RSwgMHhEMiwgMHg4MiwgMHgwNCwKKyAgICAweDVCLCAweDY5LCAweDEyLCAweEVBLCAweEI0LCAweDhELCAweDczLCAweEUwLCAweEE5LCAweDFBLCAweEVCLCAweDE5LCAweDg5LCAweEVBLCAweEJGLCAweDZFLAorICAgIDB4QkEsIDB4NkQsIDB4OUQsIDB4MkIsIDB4MEIsIDB4NkEsIDB4NjQsIDB4NTAsIDB4OUIsIDB4NzksIDB4MzAsIDB4QjMsIDB4MTIsIDB4MzAsIDB4ODksIDB4OTIsCisgICAgMHgwQiwgMHhGOCwgMHg4OCwgMHgzMSwgMHg3RSwgMHhCNywgMHhEMCwgMHgyRCwgMHg4NCwgMHhGRCwgMHg3RCwgMHhFMCwgMHgwOCwgMHgzOSwgMHg4NCwgMHg0NSwKKyAgICAweEQyLCAweDVFLCAweDFGLCAweDQyLCAweEVFLCAweDJDLCAweEYzLCAweEU1LCAweEJBLCAweEI1LCAweEE1LCAweDUwLCAweEFCLCAweEQyLCAweEVCLCAweEVCLAorICAgIDB4NzIsIDB4OUEsIDB4RTcsIDB4MTgsIDB4N0EsIDB4NDEsIDB4RkUsIDB4OEEsIDB4QkIsIDB4NEYsIDB4MEIsIDB4MkIsIDB4QjcsIDB4RjAsIDB4MTIsIDB4MTIsCisgICAgMHg1OCwgMHhDQywgMHhDMSwgMHg4OCwgMHg5RSwgMHgyMCwgMHhGMiwgMHhGQSwgMHgwRiwgMHhFNSwgMHgzNiwgMHhBRCwgMHg2NCwgMHgwNSwgMHhCNCwgMHgxQywKKyAgICAweEE0LCAweEQ4LCAweDYwLCAweDM2LCAweDdDLCAweEQ4LCAweDFGLCAweEVELCAweEFBLCAweDUxLCAweDYwLCAweDJGLCAweDFGLCAweDc2LCAweDgwLCAweEI5LAorICAgIDB4MDIsIDB4QUEsIDB4MkMsIDB4MTQsIDB4MTcsIDB4RTYsIDB4RDIsIDB4RkUsIDB4MjYsIDB4QkEsIDB4RDIsIDB4RTUsIDB4Q0IsIDB4MEIsIDB4N0QsIDB4QkUsCisgICAgMHhDQywgMHgwOSwgMHhEOSwgMHhFRSwgMHg4RCwgMHgyMywgMHg1MiwgMHhGQiwgMHg1NCwgMHhGNCwgMHg5RSwgMHgzQiwgMHgyQSwgMHhFQSwgMHg5MSwgMHg0MCwKKyAgICAweDZFLCAweDNCLCAweDAzLCAweEMwLCAweDgyLCAweDNELCAweDM1LCAweDcyLCAweEFELCAweEM1LCAweEI5LCAweDUzLCAweEExLCAweDgyLCAweDRFLCAweEU5LAorICAgIDB4QjYsIDB4OTksIDB4MTYsIDB4RjcsIDB4RTQsIDB4OTgsIDB4OTMsIDB4NzAsIDB4QUIsIDB4RUIsIDB4OTEsIDB4QzYsIDB4N0UsIDB4NzAsIDB4NUQsIDB4NDcsCisgICAgMHhDRiwgMHg3MSwgMHg1QywgMHhDQiwgMHg2MSwgMHg5MCwgMHhEQSwgMHhEOCwgMHhGMSwgMHg0MSwgMHhBNSwgMHg4NSwgMHhBMiwgMHg0QSwgMHg5QSwgMHgxNSwKKyAgICAweEEzLCAweDlELCAweDRBLCAweEM5LCAweDQyLCAweDlBLCAweDQxLCAweDY3LCAweDY4LCAweDAyLCAweEMxLCAweDhELCAweDVGLCAweEQ1LCAweDdGLCAweERGLAorICAgIDB4OEYsIDB4MDgsIDB4RTksIDB4OTYsIDB4RjksIDB4OEEsIDB4NDMsIDB4MzAsIDB4QTYsIDB4MkYsIDB4NDYsIDB4MzEsIDB4Q0MsIDB4NzMsIDB4MTYsIDB4MzEsCisgICAgMHhGNSwgMHg1NiwgMHgxOSwgMHg3QiwgMHg5OSwgMHhDMSwgMHhGMCwgMHhBMywgMHg1NCwgMHg5MCwgMHhGRiwgMHgxRSwgMHg4MSwgMHhDQiwgMHg4OCwgMHg1MCwKKyAgICAweDY0LCAweDlGLCAweDIzLCAweEZDLCAweEI1LCAweDEyLCAweDI0LCAweERDLCAweEQyLCAweDZCLCAweDIyLCAweDVDLCAweEVELCAweEEzLCAweEYyLCAweDhCLAorICAgIDB4MEUsIDB4RTksIDB4RDQsIDB4OEIsIDB4QUYsIDB4OTQsIDB4MEIsIDB4QTQsIDB4N0IsIDB4MjUsIDB4ODgsIDB4RDgsIDB4NEEsIDB4NUUsIDB4MzMsIDB4ODUsCisgICAgMHg1QiwgMHhEMCwgMHhENCwgMHg1MCwgMHhBNCwgMHhCMiwgMHhFNSwgMHgxOCwgMHg3QiwgMHg3QiwgMHhFRSwgMHhDQiwgMHhGMCwgMHhEQSwgMHhGNSwgMHgxOCwKKyAgICAweEQ4LCAweDVDLCAweDIyLCAweDBCLCAweDExLCAweERFLCAweDAyLCAweDFGLCAweEY4LCAweEM2LCAweDBELCAweDc1LCAweDM2LCAweENBLCAweDgyLCAweENFLAorICAgIDB4NDYsIDB4MzEsIDB4OEMsIDB4NUUsIDB4NkEsIDB4MjgsIDB4M0UsIDB4RDUsIDB4M0YsIDB4QjcsIDB4MTYsIDB4MzEsIDB4MTMsIDB4NkEsIDB4MTQsIDB4NTksCisgICAgMHg4OCwgMHg2QSwgMHg1NSwgMHg2NSwgMHg4QSwgMHgyMSwgMHhENSwgMHg0OCwgMHhEMywgMHg0QSwgMHhEMSwgMHg3MCwgMHhGNCwgMHgzQiwgMHg3MiwgMHhDMiwKKyAgICAweDhELCAweDFFLCAweDI4LCAweEFGLCAweDQxLCAweDdCLCAweEMyLCAweDBDLCAweDgyLCAweDZDLCAweDNELCAweEQ5LCAweDI1LCAweDQ4LCAweDZDLCAweEQ5LAorICAgIDB4NDksIDB4MEYsIDB4OEEsIDB4REYsIDB4MjcsIDB4NkUsIDB4MUUsIDB4MjEsIDB4QjcsIDB4NjUsIDB4NUEsIDB4OEYsIDB4ODksIDB4NEUsIDB4M0YsIDB4ODIsCisgICAgMHg0NywgMHhCRiwgMHg3QywgMHgyMSwgMHg5MSwgMHg3NSwgMHgxMCwgMHg1NSwgMHg1NCwgMHgyMSwgMHg5NSwgMHhFMywgMHhEQywgMHg0RiwgMHgxMiwgMHgwQywKKyAgICAweDFCLCAweDU1LCAweEMyLCAweEJFLCAweDg1LCAweDYwLCAweDU3LCAweEIzLCAweDcwLCAweDMxLCAweDU0LCAweEQzLCAweDUzLCAweDg0LCAweEI2LCAweDkzLAorICAgIDB4QjUsIDB4NjgsIDB4QzIsIDB4MTQsIDB4ODAsIDB4QzksIDB4OTEsIDB4MzIsIDB4ODcsIDB4OTYsIDB4RkEsIDB4MjAsIDB4MDMsIDB4QzIsIDB4QkUsIDB4QzIsCisgICAgMHg0MiwgMHhEQywgMHg0RCwgMHgyOCwgMHhDNCwgMHhDMSwgMHg5NSwgMHg1RCwgMHhDRiwgMHg0RCwgMHhGRSwgMHhGQSwgMHgwOSwgMHg0MywgMHg0RiwgMHhDMiwKKyAgICAweDMwLCAweDY1LCAweEM0LCAweDU1LCAweERFLCAweDA1LCAweDZDLCAweDI5LCAweEZBLCAweERELCAweDlDLCAweDE3LCAweDlGLCAweDA1LCAweDg5LCAweEQ5LAorICAgIDB4QTgsIDB4OTcsIDB4NDYsIDB4OEMsIDB4ODUsIDB4ODEsIDB4RkMsIDB4OTksIDB4NzIsIDB4NEYsIDB4MEEsIDB4QTAsIDB4OEYsIDB4RjMsIDB4MjUsIDB4ODksCisgICAgMHhCQSwgMHhERCwgMHg2MywgMHg1MywgMHg2QiwgMHhBNywgMHgxNSwgMHgyMCwgMHgxNCwgMHg5MiwgMHg4OCwgMHg1MSwgMHgyMywgMHg4MiwgMHhBMywgMHg5RCwKKyAgICAweDBELCAweEMyLCAweDc5LCAweEI3LCAweEEzLCAweDE4LCAweDg4LCAweEM5LCAweEUwLCAweEIwLCAweDU2LCAweDhGLCAweDE2LCAweDE2LCAweDM2LCAweEFBLAorICAgIDB4NDAsIDB4QzksIDB4NjEsIDB4NDEsIDB4MzAsIDB4ODIsIDB4NjUsIDB4MkYsIDB4ODEsIDB4NTcsIDB4RDMsIDB4ODYsIDB4OTAsIDB4MDUsIDB4QzQsIDB4NDQsCisgICAgMHgwNCwgMHgxMiwgMHhDOCwgMHgxQiwgMHhCOCwgMHg0RCwgMHg2QSwgMHgwNiwgMHgxQiwgMHg5RiwgMHhFRiwgMHhDMCwgMHhBMywgMHhFOSwgMHg5QiwgMHhFQSwKKyAgICAweDcwLCAweEMwLCAweENFLCAweDczLCAweDg5LCAweDVGLCAweDZELCAweDBDLCAweDlCLCAweDRDLCAweDNCLCAweDk2LCAweEIyLCAweDhCLCAweDZCLCAweEY1LAorICAgIDB4MDcsIDB4MDAsIDB4RTQsIDB4MzAsIDB4RUQsIDB4RTAsIDB4QjYsIDB4RjAsIDB4QjUsIDB4RjgsIDB4MUQsIDB4RkIsIDB4Q0MsIDB4QzksIDB4MTAsIDB4NjYsCisgICAgMHg1QiwgMHhFMCwgMHgxNSwgMHhGQiwgMHgxRCwgMHhCNywgMHg1QywgMHg2NywgMHg3RiwgMHg1MiwgMHhENSwgMHhBMCwgMHhGMCwgMHg5QSwgMHg2RCwgMHgzNywKKyAgICAweEE3LCAweDFCLCAweEJELCAweDFGLCAweDdCLCAweEY5LCAweDgyLCAweDExLCAweDk4LCAweDdELCAweDI3LCAweDBCLCAweEY1LCAweDMxLCAweDVGLCAweDIwLAorICAgIDB4OEQsIDB4NDcsIDB4QTAsIDB4QjQsIDB4RDMsIDB4NTksIDB4NEIsIDB4MTcsIDB4RjksIDB4QTIsIDB4MzgsIDB4NjYsIDB4MzEsIDB4M0YsIDB4MDIsIDB4Q0QsCisgICAgMHg1RCwgMHhCRSwgMHg1QiwgMHgwNiwgMHgxNywgMHhENywgMHhFQywgMHhDNCwgMHhEMSwgMHg2NywgMHg5NywgMHg0OSwgMHhCQSwgMHgxRCwgMHhFNSwgMHhDRCwKKyAgICAweDhFLCAweENGLCAweDBELCAweENELCAweDZCLCAweEFCLCAweDlBLCAweERBLCAweDJGLCAweDNGLCAweDYyLCAweERGLCAweEZBLCAweEU1LCAweEVDLCAweDUwLAorICAgIDB4NkQsIDB4NjIsIDB4Q0IsIDB4MEYsIDB4NTMsIDB4QzcsIDB4OEEsIDB4MzMsIDB4RjUsIDB4QjIsIDB4OEQsIDB4RkQsIDB4ODUsIDB4MzEsIDB4MDYsIDB4RTMsCisgICAgMHhDRSwgMHg3NywgMHhCNiwgMHg4QiwgMHgyQSwgMHhDNywgMHhDMiwgMHg3MiwgMHhENSwgMHhBOSwgMHgwNiwgMHhCRiwgMHhBRiwgMHg3NiwgMHg2RiwgMHhDMiwKKyAgICAweDYyLCAweDMxLCAweDlBLCAweDg5LCAweDg3LCAweEU3LCAweDU0LCAweEQ0LCAweDhGLCAweDMyLCAweDMxLCAweDQwLCAweEU4LCAweEFGLCAweDgyLCAweDZDLAorICAgIDB4NjksIDB4MTgsIDB4MTksIDB4MjUsIDB4NzQsIDB4RjAsIDB4RDEsIDB4RUIsIDB4NDMsIDB4NzEsIDB4NTAsIDB4MjAsIDB4Q0QsIDB4ODQsIDB4RTksIDB4OTQsCisgICAgMHg4NiwgMHgxNywgMHhBMCwgMHhGOSwgMHhCOCwgMHg2NSwgMHhGRSwgMHg0OCwgMHg4MSwgMHg1NywgMHhDRSwgMHgwRiwgMHhBNywgMHhGMywgMHgyOCwgMHgzRiwKKyAgICAweDAyLCAweDBELCAweEQ5LCAweDc4LCAweDdBLCAweDJGLCAweDlGLCAweDM2LCAweEFELCAweDhELCAweDQ3LCAweDc2LCAweDUxLCAweEE3LCAweDk1LCAweEYyLAorICAgIDB4RTMsIDB4MjAsIDB4REIsIDB4NTcsIDB4N0YsIDB4QTksIDB4MjYsIDB4MjksIDB4RjEsIDB4MEYsIDB4RjcsIDB4QUIsIDB4MkYsIDB4N0IsIDB4MkYsIDB4RUIsCisgICAgMHg5NiwgMHg2QywgMHhGRCwgMHhBQSwgMHgyNSwgMHgyMSwgMHgzNSwgMHgzOCwgMHg4OSwgMHhGRiwgMHhBRSwgMHhDRCwgMHg1RiwgMHhBMCwgMHhGRSwgMHgwRiwKKyAgICAweDU3LCAweDcwLCAweEMwLCAweDY1LCAweDQ5LCAweEE2LCAweDVFLCAweDNGLCAweEI1LCAweDI0LCAweDhBLCAweDQ2LCAweDMyLCAweEExLCAweDEyLCAweEMwLAorICAgIDB4NzksIDB4MEIsIDB4RDYsIDB4RTQsIDB4MjYsIDB4MjEsIDB4OTAsIDB4MjUsIDB4QjYsIDB4ODEsIDB4RTUsIDB4ODQsIDB4QjksIDB4NEUsIDB4NzgsIDB4RkYsCisgICAgMHg0NCwgMHhCNywgMHhEQiwgMHhENSwgMHhFMiwgMHg5QiwgMHg0NiwgMHhCRiwgMHhCOSwgMHg1RiwgMHhDNSwgMHg3MCwgMHhDQywgMHhEMywgMHhBMiwgMHg3NywKKyAgICAweEFFLCAweEFDLCAweENFLCAweDUyLCAweDA4LCAweDUyLCAweDM0LCAweDZDLCAweDQxLCAweERBLCAweEQ2LCAweDAzLCAweDg3LCAweDcxLCAweEZCLCAweEQ2LAorICAgIDB4MkIsIDB4RkMsIDB4NjQsIDB4ODksIDB4OUYsIDB4NUQsIDB4MUMsIDB4NEUsIDB4RUUsIDB4MkYsIDB4RTUsIDB4QUMsIDB4MDEsIDB4MzEsIDB4NDYsIDB4NjMsCisgICAgMHgxMiwgMHg0NSwgMHg3OSwgMHg0MSwgMHg5MywgMHgwQywgMHgxQSwgMHg2QiwgMHgzRSwgMHg3MywgMHgyNSwgMHhDRSwgMHhEOSwgMHgzNSwgMHg4NywgMHhCRCwKKyAgICAweDlGLCAweDMwLCAweEJDLCAweDgyLCAweEE4LCAweDQ3LCAweENFLCAweDhGLCAweDQ4LCAweDc3LCAweDI2LCAweDcxLCAweENCLCAweDlCLCAweEQzLCAweDFBLAorICAgIDB4NzksIDB4MkEsIDB4MjksIDB4NzgsIDB4N0MsIDB4NkQsIDB4NUEsIDB4NzIsIDB4MDEsIDB4MEIsIDB4RTEsIDB4NDYsIDB4MzIsIDB4NjUsIDB4OUQsIDB4MkIsCisgICAgMHhENCwgMHhENiwgMHgyOCwgMHgxRiwgMHhCMiwgMHgyMywgMHhBOSwgMHhGNiwgMHg2MiwgMHgyRiwgMHhDRCwgMHg5OSwgMHg2QywgMHg1RCwgMHgwMywgMHg1RCwKKyAgICAweEEwLCAweDdBLCAweEM0LCAweDA1LCAweDgyLCAweDcxLCAweEIzLCAweEMzLCAweDJCLCAweDlCLCAweEM1LCAweDQ3LCAweDIyLCAweDg0LCAweDI5LCAweDIzLAorICAgIDB4QjcsIDB4N0QsIDB4QUYsIDB4RkEsIDB4QjcsIDB4MDAsIDB4MTAsIDB4QzksIDB4QUIsIDB4Q0YsIDB4RDYsIDB4RUEsIDB4MjQsIDB4RTMsIDB4NEEsIDB4MjksCisgICAgMHhERSwgMHhENCwgMHg5MywgMHg5NSwgMHg0NCwgMHhDNSwgMHhENywgMHhFQywgMHhBOSwgMHgyQywgMHgzMSwgMHg4MiwgMHgxMiwgMHg3RSwgMHgyMSwgMHg0NywKKyAgICAweDFDLCAweDVBLCAweEQ1LCAweEExLCAweDE5LCAweDlBLCAweDU3LCAweDQyLCAweDQ2LCAweDcwLCAweDk0LCAweDZBLCAweEMwLCAweEM2LCAweDY2LCAweEE5LAorICAgIDB4ODgsIDB4QjYsIDB4NTIsIDB4NUUsIDB4QjgsIDB4QjMsIDB4MDksIDB4ODQsIDB4RjUsIDB4MEIsIDB4RjEsIDB4MkUsIDB4ODksIDB4MEIsIDB4MDEsIDB4RDAsCisgICAgMHg0MCwgMHhGQywgMHg5NywgMHhDNCwgMHhFNCwgMHhGMCwgMHg5OSwgMHgxRSwgMHg0OCwgMHhBNSwgMHgyMCwgMHgwQiwgMHg0RiwgMHhGNCwgMHhBNywgMHg2RSwKKyAgICAweEI1LCAweDc4LCAweEI4LCAweDgwLCAweEZCLCAweDVDLCAweDUxLCAweDZCLCAweEUzLCAweDRFLCAweDk0LCAweEYzLCAweDk0LCAweEFDLCAweENDLCAweEJCLAorICAgIDB4QTQsIDB4MzksIDB4NzgsIDB4NjcsIDB4RjksIDB4NDMsIDB4NzMsIDB4NjMsIDB4NkUsIDB4QzAsIDB4NTEsIDB4RkIsIDB4RUEsIDB4RUUsIDB4ODUsIDB4NTcsCisgICAgMHhENCwgMHgxNiwgMHhFQiwgMHhCMCwgMHgzNiwgMHgxRSwgMHgyQSwgMHg4MCwgMHg4QSwgMHg2MywgMHg3QiwgMHg5MSwgMHhCMCwgMHg2QSwgMHhBNywgMHhDNSwKKyAgICAweDU5LCAweDkzLCAweDA0LCAweDFFLCAweDQ0LCAweDUyLCAweDAyLCAweEIyLCAweEJCLCAweEVGLCAweDIzLCAweDA3LCAweDJGLCAweDQxLCAweDkzLCAweDgwLAorICAgIDB4NEEsIDB4M0UsIDB4MkIsIDB4NEEsIDB4ODMsIDB4NzksIDB4NjUsIDB4MUUsIDB4MDIsIDB4NTgsIDB4RDUsIDB4M0UsIDB4NTEsIDB4RkYsIDB4NUYsIDB4OEEsCisgICAgMHgzRSwgMHgwOSwgMHg5MCwgMHgwMiwgMHhBRiwgMHg1NywgMHhDRiwgMHgwRiwgMHgzMCwgMHg3OCwgMHgyRiwgMHgwRCwgMHg1MCwgMHg1MSwgMHhBOSwgMHgyNCwKKyAgICAweEQyLCAweDEwLCAweEI1LCAweEUyLCAweDNFLCAweEQ1LCAweDUzLCAweEEyLCAweEQ5LCAweEM2LCAweDlDLCAweEJDLCAweEVCLCAweDI2LCAweEFCLCAweEVFLAorICAgIDB4M0IsIDB4MEUsIDB4MjYsIDB4MDMsIDB4NTQsIDB4NzMsIDB4MEUsIDB4NTgsIDB4REEsIDB4OTIsIDB4MDAsIDB4QTcsIDB4MkEsIDB4REMsIDB4QTcsIDB4RDIsCisgICAgMHg0QiwgMHg3OCwgMHgyMCwgMHg4OCwgMHg1RCwgMHgxMSwgMHg0MywgMHgxNSwgMHg2NywgMHhCNSwgMHhDMiwgMHgzMSwgMHg3OCwgMHhENywgMHhDQiwgMHg1QSwKKyAgICAweDFBLCAweDA0LCAweDM4LCAweEFGLCAweDFBLCAweERCLCAweDI0LCAweDkwLCAweDVGLCAweEYwLCAweEIzLCAweDExLCAweEI5LCAweDY4LCAweDlBLCAweDhCLAorICAgIDB4MUIsIDB4MjgsIDB4Q0EsIDB4NTEsIDB4NjMsIDB4OEMsIDB4RDIsIDB4NzAsIDB4QTksIDB4OEIsIDB4NDIsIDB4NjksIDB4ODYsIDB4MkUsIDB4NDYsIDB4NUYsCisgICAgMHg4NSwgMHhBNywgMHg4MCwgMHg0RCwgMHg3MCwgMHgxRSwgMHhBRSwgMHgwOCwgMHhEMiwgMHhGQywgMHhDRiwgMHg1RSwgMHhEQiwgMHg0MSwgMHg5RiwgMHgyMSwKKyAgICAweEVGLCAweEE2LCAweDY0LCAweDM4LCAweEU3LCAweDczLCAweEVGLCAweEVBLCAweEY5LCAweDMxLCAweDYxLCAweDY3LCAweEVGLCAweEQ1LCAweDIxLCAweDQ0LAorICAgIDB4RDksIDB4MjgsIDB4QjAsIDB4NkQsIDB4RDYsIDB4MTEsIDB4RjksIDB4MjgsIDB4MDIsIDB4OTksIDB4ODQsIDB4MTEsIDB4OEEsIDB4RkIsIDB4NTYsIDB4RjgsCisgICAgMHgzNywgMHg5OCwgMHhEQywgMHg5MCwgMHgyMiwgMHgxMywgMHhFMywgMHgzNywgMHhCRiwgMHg5QSwgMHhENCwgMHgwNSwgMHhCRiwgMHg2OSwgMHg3NiwgMHhFMSwKKyAgICAweDcwLCAweDkwLCAweDgxLCAweDcyLCAweEE1LCAweDdBLCAweDE5LCAweDZCLCAweDY4LCAweDEzLCAweEYxLCAweDA1LCAweEE0LCAweEZCLCAweEJBLCAweDZGLAorICAgIDB4MTMsIDB4Q0IsIDB4MTUsIDB4QTQsIDB4NUQsIDB4MDksIDB4NDcsIDB4NEEsIDB4RDAsIDB4NTAsIDB4MzQsIDB4MDAsIDB4NDUsIDB4QjgsIDB4REYsIDB4NUUsCisgICAgMHg4OSwgMHgwMiwgMHg1MCwgMHg0MiwgMHg2NSwgMHhERiwgMHhCNywgMHg0NiwgMHg1OSwgMHgzNSwgMHg4MSwgMHhEOSwgMHg3RCwgMHhCNiwgMHgxRSwgMHg4NCwKKyAgICAweDQxLCAweDA4LCAweEJBLCAweEZBLCAweDJCLCAweEJCLCAweDg1LCAweDkyLCAweDBBLCAweDlDLCAweDlGLCAweDlFLCAweDhGLCAweEUyLCAweDdBLCAweEY3LAorICAgIDB4NkYsIDB4NUQsIDB4OEQsIDB4MEIsIDB4QTgsIDB4RTEsIDB4MDIsIDB4OTQsIDB4NTQsIDB4NzYsIDB4RkIsIDB4RDAsIDB4ODAsIDB4RUEsIDB4NjYsIDB4MTcsCisgICAgMHhFNSwgMHg3NiwgMHg5NiwgMHhGOSwgMHhDMSwgMHhCMSwgMHhBNiwgMHg3QiwgMHgzQywgMHg3QywgMHhBOCwgMHgwQiwgMHg0RSwgMHgyOCwgMHg4QiwgMHg0NiwKKyAgICAweEZFLCAweDBCLCAweENDLCAweDU3LCAweDQxLCAweDU0LCAweDM3LCAweDQ5LCAweDI4LCAweDE5LCAweEQ4LCAweDQzLCAweEJGLCAweDU5LCAweDc2LCAweDU5LAorICAgIDB4MzcsIDB4NzEsIDB4RDUsIDB4MTksIDB4OTksIDB4RDIsIDB4QTMsIDB4RDgsIDB4MEEsIDB4MDksIDB4NTgsIDB4RjQsIDB4RUUsIDB4QzYsIDB4RjQsIDB4NDcsCisgICAgMHhENywgMHhCMywgMHhCNCwgMHg0MiwgMHg3NCwgMHg3MSwgMHgyMywgMHhGOCwgMHhFMCwgMHg3NiwgMHhBMSwgMHg5MSwgMHgyOCwgMHhFOCwgMHhFNiwgMHhGRCwKKyAgICAweDM4LCAweDEzLCAweDAyLCAweEQwLCAweDA3LCAweDRDLCAweDA2LCAweDFCLCAweEI4LCAweDE4LCAweEE1LCAweEIzLCAweDBGLCAweEJGLCAweDA2LCAweEJCLAorICAgIDB4NDAsIDB4RDcsIDB4RTIsIDB4RTEsIDB4NTQsIDB4QUMsIDB4M0YsIDB4NDAsIDB4NUUsIDB4NjgsIDB4MDgsIDB4QTYsIDB4RjIsIDB4N0IsIDB4QTcsIDB4OTcsCisgICAgMHhGRSwgMHgwNSwgMHg3NSwgMHg0MSwgMHg5OSwgMHhCQiwgMHhDQiwgMHgyRCwgMHhDOSwgMHhFOSwgMHg0MSwgMHg2OSwgMHhBNSwgMHg2OSwgMHg1MSwgMHhDMCwKKyAgICAweDg1LCAweEQ5LCAweDNELCAweDgyLCAweDA5LCAweEY4LCAweDkxLCAweENCLCAweEUxLCAweDg5LCAweEE2LCAweEQxLCAweDMwLCAweEJGLCAweEY3LCAweEZDLAorICAgIDB4NUUsIDB4MjMsIDB4QkIsIDB4NjYsIDB4NjUsIDB4MTcsIDB4MkIsIDB4OTYsIDB4RjIsIDB4QTAsIDB4RjMsIDB4QTAsIDB4REEsIDB4RjIsIDB4NUIsIDB4MkEsCisgICAgMHhEQSwgMHgyMCwgMHgyNSwgMHgxQywgMHg3QiwgMHgzRSwgMHg0MiwgMHhFQywgMHhGQywgMHhBMCwgMHg3NSwgMHgxQywgMHhEQSwgMHg5NiwgMHgzNywgMHg0MCwKKyAgICAweEY5LCAweEQ3LCAweDZDLCAweEE1LCAweDJELCAweEUxLCAweDlDLCAweDY5LCAweDdELCAweEIzLCAweDA3LCAweDhFLCAweEM3LCAweEU4LCAweDhBLCAweDI0LAorICAgIDB4REYsIDB4NzcsIDB4MTgsIDB4NEMsIDB4Q0MsIDB4QUUsIDB4MUEsIDB4NUYsIDB4RjksIDB4QzQsIDB4MjEsIDB4NzcsIDB4RkEsIDB4MkIsIDB4QTcsIDB4MkMsCisgICAgMHhDMywgMHhCNCwgMHg4NSwgMHgzQiwgMHgyRCwgMHgzNCwgMHhGNywgMHgyRCwgMHhGQSwgMHhFOCwgMHg0MiwgMHhEQSwgMHg3RCwgMHg0QiwgMHgxOCwgMHg0MCwKKyAgICAweEM2LCAweEM2LCAweDRCLCAweEU0LCAweENFLCAweDY0LCAweDk3LCAweDQ2LCAweEMxLCAweEEwLCAweDMyLCAweDFDLCAweEE0LCAweEJCLCAweEEwLCAweDZDLAorICAgIDB4NDksIDB4RTksIDB4ODAsIDB4NDYsIDB4MDgsIDB4QTgsIDB4MUIsIDB4MzAsIDB4NUUsIDB4NzksIDB4NTQsIDB4NzQsIDB4RTIsIDB4MEMsIDB4QzMsIDB4RDUsCisgICAgMHg1QywgMHgyNywgMHhEMCwgMHgwQywgMHgzMCwgMHhEQywgMHgyNCwgMHg0NywgMHg1MSwgMHg3OCwgMHhGNSwgMHg0MiwgMHgzNywgMHhFMiwgMHgxMywgMHg0RCwKKyAgICAweDZCLCAweDFDLCAweDNCLCAweDkyLCAweEY2LCAweDcwLCAweEVFLCAweDI5LCAweDA0LCAweERGLCAweDYxLCAweDY4LCAweDdFLCAweEM5LCAweEYyLCAweEE4LAorICAgIDB4OUIsIDB4MEEsIDB4RDMsIDB4QzgsIDB4MkUsIDB4MzQsIDB4OUIsIDB4MzUsIDB4RTEsIDB4RDQsIDB4N0YsIDB4MTUsIDB4MUIsIDB4NzcsIDB4REUsIDB4RjYsCisgICAgMHgxNywgMHg0NCwgMHhFOCwgMHhEQSwgMHhERiwgMHg1RCwgMHhFMSwgMHhFRSwgMHhBMiwgMHg0QiwgMHhCRSwgMHg3RSwgMHg2OSwgMHhGQSwgMHgwMSwgMHgyNywKKyAgICAweDNGLCAweDJDLCAweEE2LCAweDU5LCAweDRDLCAweDYzLCAweDY4LCAweDQ4LCAweDY2LCAweEM5LCAweDQzLCAweEFCLCAweDJBLCAweDQ0LCAweDIwLCAweEM3LAorICAgIDB4MDQsIDB4MjksIDB4MEEsIDB4QTUsIDB4ODMsIDB4OEMsIDB4RDcsIDB4ODQsIDB4RTAsIDB4ODcsIDB4QkIsIDB4MTYsIDB4QkYsIDB4QzMsIDB4QkQsIDB4QzksCisgICAgMHg4NCwgMHg0MSwgMHgxNSwgMHg5QSwgMHhEQywgMHg2NywgMHhEOCwgMHgwOCwgMHhCMSwgMHg4OSwgMHhFMSwgMHhEQywgMHg0QywgMHg2NiwgMHhGQSwgMHg2NCwKKyAgICAweDFFLCAweDIxLCAweEM4LCAweDg5LCAweDFGLCAweEMzLCAweDc0LCAweDgyLCAweEI5LCAweDg4LCAweDJCLCAweDA1LCAweEE0LCAweDk1LCAweEIyLCAweDUwLAorICAgIDB4RTYsIDB4QzIsIDB4ODUsIDB4QzYsIDB4NEIsIDB4RTEsIDB4N0UsIDB4QjAsIDB4NjMsIDB4MjksIDB4OUMsIDB4MkUsIDB4NTEsIDB4NTIsIDB4QjgsIDB4QjksCisgICAgMHhDNiwgMHgwMCwgMHhFMSwgMHg3QywgMHhBOCwgMHhGRCwgMHg0MSwgMHg2RCwgMHhGMCwgMHg2RSwgMHgyMCwgMHg1MywgMHhCNiwgMHgyRSwgMHgyQSwgMHg0MiwKKyAgICAweEQ3LCAweERGLCAweDBGLCAweEE1LCAweDRFLCAweDc3LCAweEM5LCAweEVGLCAweEJBLCAweDcxLCAweEE3LCAweDUxLCAweDM5LCAweEIxLCAweERCLCAweEY2LAorICAgIDB4ODEsIDB4NjcsIDB4MEUsIDB4ODcsIDB4ODcsIDB4RTYsIDB4NDcsIDB4ODksIDB4QzcsIDB4RjMsIDB4REQsIDB4QjQsIDB4NkMsIDB4QTUsIDB4NTMsIDB4ODMsCisgICAgMHhCRiwgMHhENywgMHhFQywgMHhCRSwgMHhFRCwgMHg4QSwgMHhBRCwgMHhFMiwgMHgzMSwgMHg0MywgMHg5RSwgMHgyQywgMHhCRSwgMHhBRCwgMHgwRiwgMHg2MCwKKyAgICAweEE5LCAweEVBLCAweEIyLCAweDk1LCAweDBCLCAweEJFLCAweDEzLCAweDNDLCAweDk4LCAweDlDLCAweEVELCAweDBBLCAweDA0LCAweDM2LCAweEJELCAweDdBLAorICAgIDB4OUYsIDB4MjEsIDB4NDEsIDB4MTcsIDB4QTQsIDB4ODksIDB4MDEsIDB4NjIsIDB4RDUsIDB4M0MsIDB4Q0YsIDB4RjksIDB4RDcsIDB4NjgsIDB4NEIsIDB4M0EsCisgICAgMHhGNCwgMHg4OSwgMHgxMCwgMHgwOCwgMHgxMCwgMHgwQywgMHhDNSwgMHg3QywgMHhBRCwgMHg5NywgMHgyNCwgMHg3QywgMHhGNSwgMHg1MiwgMHhCNiwgMHg2NSwKKyAgICAweEVFLCAweDNGLCAweDc2LCAweDgxLCAweDQxLCAweERGLCAweDE5LCAweDhDLCAweDc1LCAweDFELCAweDhFLCAweDA5LCAweENBLCAweDYwLCAweEJELCAweDI5LAorICAgIDB4OTEsIDB4NjgsIDB4MkMsIDB4NEMsIDB4MjMsIDB4OTAsIDB4NzUsIDB4MjcsIDB4N0YsIDB4QTUsIDB4NDAsIDB4QjgsIDB4QUMsIDB4RTgsIDB4RkMsIDB4REIsCisgICAgMHhDQiwgMHhERCwgMHgyQSwgMHhGQSwgMHg4QSwgMHg3NiwgMHgzRCwgMHg5RCwgMHhGNywgMHg3NCwgMHgxNiwgMHg3QywgMHgzMSwgMHg2QSwgMHg4OCwgMHg5MywKKyAgICAweDk1LCAweEQ2LCAweDVGLCAweEU4LCAweEJFLCAweDFCLCAweDBDLCAweDRELCAweDY1LCAweEMxLCAweEY2LCAweDBELCAweDhFLCAweEM5LCAweDcxLCAweDEzLAorICAgIDB4NjEsIDB4MjYsIDB4QkQsIDB4QjUsIDB4RkQsIDB4MTYsIDB4REYsIDB4RTEsIDB4MkUsIDB4MzYsIDB4OEMsIDB4QTgsIDB4NTEsIDB4QjcsIDB4OUIsIDB4QjEsCisgICAgMHg2OSwgMHgzNSwgMHhEMSwgMHhGNiwgMHgwOSwgMHgzRCwgMHgwOSwgMHhCNywgMHhERCwgMHhBQywgMHgzOSwgMHhCRCwgMHgzRiwgMHgxRCwgMHhBNiwgMHhCOCwKKyAgICAweEEyLCAweEU4LCAweDcwLCAweDE3LCAweDlGLCAweDQ5LCAweEY5LCAweDI5LCAweDQ4LCAweERGLCAweEEzLCAweEJGLCAweDk1LCAweDhDLCAweEQyLCAweDhFLAorICAgIDB4MzIsIDB4RDEsIDB4REQsIDB4OTgsIDB4NDksIDB4QzgsIDB4QkMsIDB4QTIsIDB4QUQsIDB4OTksIDB4NUEsIDB4QjQsIDB4MzMsIDB4NTEsIDB4M0QsIDB4QjgsCisgICAgMHg2RSwgMHhBMywgMHg3MiwgMHhERCwgMHhFRiwgMHg0NSwgMHg1MSwgMHhFQywgMHgwNiwgMHg4RCwgMHhGRSwgMHgxNSwgMHhBOSwgMHg3NiwgMHg2OSwgMHhBMSwKKyAgICAweEFGLCAweDc1LCAweDFCLCAweEU3LCAweDhFLCAweERFLCAweDRCLCAweEY3LCAweDQ5LCAweERDLCAweDY2LCAweEFBLCAweEJFLCAweERBLCAweDAxLCAweDE4LAorICAgIDB4QTcsIDB4MkEsIDB4MTEsIDB4QTMsIDB4MTYsIDB4RjcsIDB4MjksIDB4MkMsIDB4OTcsIDB4Q0MsIDB4MkIsIDB4NTQsIDB4QkMsIDB4RUYsIDB4OUYsIDB4OTQsCisgICAgMHhDOCwgMHhBNCwgMHhCOCwgMHg4NywgMHgwMSwgMHgzRiwgMHgwQywgMHg2OSwgMHhENSwgMHhFOSwgMHhCOSwgMHg3MSwgMHgzMCwgMHg5QiwgMHhBQywgMHgxQiwKKyAgICAweDFGLCAweEIyLCAweEMwLCAweDY3LCAweDUyLCAweDc4LCAweDkxLCAweEJBLCAweDNGLCAweDJGLCAweEMzLCAweDVDLCAweDgwLCAweDM5LCAweDcwLCAweDFDLAorICAgIDB4N0UsIDB4MDcsIDB4NzEsIDB4NzAsIDB4OUQsIDB4OTUsIDB4NkQsIDB4RTIsIDB4MEEsIDB4NUQsIDB4MUUsIDB4MTksIDB4MDYsIDB4OUEsIDB4ODUsIDB4RTEsCisgICAgMHgyRSwgMHhENSwgMHhGQSwgMHgwMiwgMHgyRSwgMHgzMiwgMHg1MywgMHhBRCwgMHgwNSwgMHgyRiwgMHhFQywgMHgwOCwgMHg3RSwgMHhERCwgMHg3MSwgMHg5RCwKKyAgICAweDM0LCAweEZDLCAweDlELCAweDBELCAweDQ0LCAweDRFLCAweDNFLCAweDIwLCAweDAwLCAweEE4LCAweDc2LCAweDAyLCAweEY4LCAweEJGLCAweDZCLCAweDlGLAorICAgIDB4NEEsIDB4NjAsIDB4OTksIDB4QTEsIDB4NzQsIDB4NEIsIDB4QjksIDB4OTEsIDB4MTYsIDB4NEQsIDB4NDEsIDB4QzUsIDB4QTEsIDB4MzMsIDB4RDMsIDB4OTAsCisgICAgMHg4QSwgMHgyRiwgMHg4MywgMHg5MiwgMHg4QiwgMHg1MywgMHgxRCwgMHgyOSwgMHg4RiwgMHg5NywgMHhEOCwgMHhBMCwgMHg0OCwgMHg2MywgMHhCNCwgMHg0MywKKyAgICAweDIwLCAweDgyLCAweEM3LCAweEMyLCAweDBBLCAweDdGLCAweEZCLCAweDA3LCAweDc0LCAweDMxLCAweDU0LCAweDJBLCAweENCLCAweENBLCAweDdFLCAweEQ2LAorICAgIDB4OTEsIDB4NkIsIDB4ODIsIDB4NzMsIDB4NTEsIDB4NjYsIDB4N0IsIDB4REYsIDB4NjMsIDB4NTMsIDB4MDgsIDB4RkMsIDB4MTcsIDB4MjAsIDB4QTksIDB4ODcsCisgICAgMHgxRCwgMHgyNCwgMHhEMCwgMHg0NCwgMHg0NSwgMHhCQywgMHg4MCwgMHg4MCwgMHg0QiwgMHg1MiwgMHg5MCwgMHg0RSwgMHhBNSwgMHhERiwgMHhEMSwgMHgzRiwKKyAgICAweEE5LCAweENDLCAweEQ3LCAweEQ5LCAweEFELCAweDFGLCAweDY1LCAweDYzLCAweEE2LCAweDU3LCAweDg1LCAweDM5LCAweDk4LCAweDMzLCAweEU4LCAweEJDLAorICAgIDB4RjUsIDB4RTIsIDB4RDIsIDB4NEIsIDB4RjcsIDB4RUEsIDB4NjEsIDB4RTMsIDB4RkEsIDB4RjMsIDB4NzMsIDB4NkMsIDB4QTIsIDB4MEEsIDB4MjYsIDB4Q0IsCisgICAgMHgwOSwgMHgyRSwgMHhDNCwgMHgwMywgMHgzOCwgMHg5NywgMHg3QSwgMHgzQSwgMHhDNywgMHhCMCwgMHgwQywgMHgzNSwgMHg2RCwgMHg3MywgMHgxNCwgMHg3MCwKKyAgICAweDAxLCAweEY2LCAweDhGLCAweDY3LCAweEJBLCAweEQ5LCAweDRFLCAweEFGLCAweEVBLCAweDk2LCAweDNELCAweEM2LCAweDdFLCAweEU3LCAweDJCLCAweDI5LAorICAgIDB4MjcsIDB4QUIsIDB4RkEsIDB4QTgsIDB4MDgsIDB4QjEsIDB4MDEsIDB4MjAsIDB4RjMsIDB4RDEsIDB4NDUsIDB4MzUsIDB4MzMsIDB4NTYsIDB4MjYsIDB4ODEsCisgICAgMHgwMCwgMHhCMiwgMHg0MSwgMHgwMSwgMHgxQSwgMHg3MSwgMHgyOCwgMHgzNSwgMHhGNCwgMHg0MywgMHgyRiwgMHg0OCwgMHg1OSwgMHg2OSwgMHgyMiwgMHg1QSwKKyAgICAweDg5LCAweDhELCAweEM3LCAweDM4LCAweDVGLCAweDEyLCAweDQwLCAweDY1LCAweDdCLCAweDg5LCAweDA2LCAweDc2LCAweDc0LCAweDA4LCAweEU1LCAweEZDLAorICAgIDB4ODMsIDB4NjEsIDB4MkIsIDB4QUYsIDB4QjQsIDB4RTAsIDB4RTQsIDB4NTEsIDB4NEQsIDB4RjcsIDB4MzEsIDB4MDksIDB4MEEsIDB4QzAsIDB4QjksIDB4NDcsCisgICAgMHgyMywgMHhDQiwgMHhGNywgMHg5MCwgMHg4NiwgMHg2NSwgMHgyNywgMHhGMywgMHg2NSwgMHhCRiwgMHg1MiwgMHhBRiwgMHg0QSwgMHgzRSwgMHhCRiwgMHgwQywKKyAgICAweDlFLCAweEM5LCAweDZELCAweDRELCAweEQ2LCAweDY0LCAweDc3LCAweDU5LCAweDJCLCAweDg4LCAweDZCLCAweEQ3LCAweDdFLCAweEJGLCAweDhGLCAweDUzLAorICAgIDB4NDgsIDB4RDgsIDB4OUUsIDB4NkUsIDB4N0UsIDB4MTYsIDB4NjAsIDB4NEMsIDB4RTksIDB4MzMsIDB4ODMsIDB4MDEsIDB4NzQsIDB4Q0QsIDB4MUYsIDB4OEIsCisgICAgMHg0RiwgMHgzQSwgMHhFQSwgMHhDQywgMHg0NSwgMHhFRSwgMHg4RiwgMHhFQSwgMHgwQywgMHg0MCwgMHg3NiwgMHhBNywgMHhERiwgMHg2OSwgMHhGRSwgMHhENCwKKyAgICAweEQzLCAweDIzLCAweDkzLCAweDA3LCAweDc3LCAweDhELCAweENELCAweDIwLCAweEU5LCAweDcxLCAweEI3LCAweEZBLCAweEZCLCAweDI3LCAweDZELCAweDBBLAorICAgIDB4QkMsIDB4MUUsIDB4RkUsIDB4NDksIDB4MkIsIDB4MTUsIDB4NjgsIDB4OUIsIDB4NTgsIDB4M0EsIDB4QTcsIDB4QzUsIDB4QjgsIDB4MTcsIDB4QTMsIDB4QUEsCisgICAgMHhDRiwgMHhGNywgMHg5MSwgMHgyRSwgMHhGMiwgMHhGQywgMHhBNCwgMHhEQywgMHg1MCwgMHhCMywgMHgxOSwgMHg1QywgMHg4NSwgMHhBMiwgMHg4OSwgMHg4QywKKyAgICAweEJCLCAweDlBLCAweDEyLCAweDQ1LCAweEM5LCAweDA2LCAweDM2LCAweEEzLCAweDEwLCAweDNGLCAweDRBLCAweDBFLCAweDA4LCAweDdGLCAweEY5LCAweDQ1LAorICAgIDB4MDksIDB4QkMsIDB4RDUsIDB4QUMsIDB4NTYsIDB4NkYsIDB4QjQsIDB4QzEsIDB4MTUsIDB4NEUsIDB4RDQsIDB4NTUsIDB4RDEsIDB4RjQsIDB4OTcsIDB4MTksCisgICAgMHg3RSwgMHg4OCwgMHg0RSwgMHhBNywgMHg5NSwgMHg1QiwgMHg4OSwgMHhGOSwgMHg0QSwgMHg3QSwgMHhERCwgMHg2OSwgMHhCOSwgMHhFRiwgMHhCNiwgMHgxRCwKKyAgICAweDY4LCAweDk4LCAweEFCLCAweEJFLCAweEY5LCAweDEwLCAweDEyLCAweDc5LCAweEMwLCAweDJFLCAweDA4LCAweDhCLCAweEQ0LCAweEZFLCAweEZCLCAweDMzLAorICAgIDB4RjUsIDB4MTcsIDB4NkYsIDB4NzEsIDB4NzEsIDB4RDksIDB4OTUsIDB4MDgsIDB4QkMsIDB4MDUsIDB4NzEsIDB4NkEsIDB4NTQsIDB4OTksIDB4ODAsIDB4OTQsCisgICAgMHg4QSwgMHg5MiwgMHgyQiwgMHgxQSwgMHg1MiwgMHg2MCwgMHg1MywgMHhBQywgMHhCMCwgMHg1OCwgMHhFMSwgMHg5NywgMHhDNiwgMHhBQiwgMHgxQSwgMHg4MSwKKyAgICAweDg5LCAweEJFLCAweDYwLCAweEIxLCAweDE2LCAweDc5LCAweEVELCAweDNELCAweEU1LCAweDMxLCAweEEyLCAweDM1LCAweDc0LCAweDI2LCAweEFFLCAweEZGLAorICAgIDB4RUIsIDB4N0QsIDB4NjIsIDB4RDAsIDB4MDgsIDB4MDAsIDB4NDQsIDB4OUMsIDB4QkEsIDB4MjIsIDB4MUYsIDB4NEQsIDB4MTIsIDB4MUMsIDB4RjYsIDB4RUYsCisgICAgMHg0MywgMHgzMSwgMHhCQSwgMHg4MCwgMHhCNywgMHgyMSwgMHgyQywgMHhBQSwgMHgwQywgMHg0NywgMHhBQSwgMHg1MCwgMHhDOSwgMHhFNSwgMHg5QiwgMHg2RiwKKyAgICAweEFGLCAweDY5LCAweDkyLCAweEQ2LCAweDcyLCAweDczLCAweEFFLCAweDJELCAweDdCLCAweDYwLCAweDkxLCAweDBCLCAweEM1LCAweDQ4LCAweDRELCAweEU0LAorICAgIDB4MUIsIDB4OTIsIDB4QzUsIDB4NjAsIDB4ODEsIDB4RjUsIDB4OTYsIDB4RDUsIDB4MTksIDB4NzIsIDB4MzksIDB4RjYsIDB4QzcsIDB4NDcsIDB4ODEsIDB4M0MsCisgICAgMHgyRSwgMHg1RCwgMHhEQSwgMHhCRSwgMHhBRSwgMHhGMCwgMHgwNCwgMHg0MCwgMHgyQywgMHgwRiwgMHg5OCwgMHg5MSwgMHgyQSwgMHhCMywgMHgyQiwgMHg5MCwKKyAgICAweENELCAweDMxLCAweDkyLCAweDc1LCAweDlBLCAweDkzLCAweDUxLCAweDgzLCAweDc0LCAweENELCAweEZFLCAweDUzLCAweDAwLCAweDk5LCAweEFFLCAweDQ5LAorICAgIDB4NDcsIDB4NEIsIDB4NEYsIDB4MDQsIDB4NzAsIDB4RUUsIDB4NTgsIDB4NEQsIDB4ODQsIDB4OTcsIDB4N0MsIDB4NzUsIDB4NDYsIDB4QkMsIDB4NjQsIDB4QzcsCisgICAgMHg4NSwgMHhBOSwgMHgwQSwgMHg3RCwgMHg1QywgMHg2QywgMHg5QSwgMHgyMSwgMHgwQiwgMHgyQSwgMHgxNiwgMHhGNiwgMHg5NiwgMHhFNiwgMHgzNSwgMHg2QiwKKyAgICAweDU5LCAweEIxLCAweEJCLCAweEY3LCAweEMyLCAweDI0LCAweDMzLCAweDUyLCAweDc5LCAweDU1LCAweDMzLCAweDhELCAweEU2LCAweEQwLCAweEQ4LCAweEE3LAorICAgIDB4RTUsIDB4MTgsIDB4NUYsIDB4RjMsIDB4RTEsIDB4RTQsIDB4MjMsIDB4RkYsIDB4QkYsIDB4MTYsIDB4REMsIDB4RkUsIDB4NUYsIDB4MzIsIDB4OTksIDB4MkIsCisgICAgMHgyMiwgMHgxQSwgMHg3NywgMHgyQSwgMHhBRCwgMHgwNCwgMHgwNywgMHgzQywgMHgxNSwgMHhCRiwgMHg5OSwgMHg1MywgMHg5QywgMHgyOSwgMHgyQiwgMHg2NywKKyAgICAweEFGLCAweERELCAweDUxLCAweDg5LCAweDAzLCAweDg1LCAweEZGLCAweDY0LCAweDJFLCAweDFELCAweDBCLCAweDAzLCAweDMyLCAweEI5LCAweDUxLCAweEI4LAorICAgIDB4RTQsIDB4OUYsIDB4NTQsIDB4NDksIDB4QzQsIDB4MzIsIDB4MEYsIDB4OTksIDB4MzQsIDB4QjMsIDB4NTEsIDB4RTksIDB4MkQsIDB4NzUsIDB4RjMsIDB4RjgsCisgICAgMHgwNCwgMHg4NiwgMHg2QiwgMHg4NCwgMHhCMCwgMHg5NywgMHg5NSwgMHhGNCwgMHgzOCwgMHg0QywgMHg4QywgMHg4OCwgMHg0OSwgMHg0OCwgMHg5RSwgMHg1OSwKKyAgICAweDBFLCAweDhCLCAweEIxLCAweEUxLCAweDQxLCAweDY2LCAweDEwLCAweDk0LCAweDU5LCAweEY5LCAweDZFLCAweDc4LCAweENDLCAweDExLCAweDgwLCAweDkyLAorICAgIDB4MzMsIDB4N0UsIDB4NkEsIDB4QjgsIDB4QzksIDB4MzMsIDB4RTgsIDB4REQsIDB4MUIsIDB4M0YsIDB4NzQsIDB4NzksIDB4NDIsIDB4NUMsIDB4OTMsIDB4MDAsCisgICAgMHg0QiwgMHg2OCwgMHhEQSwgMHg3MCwgMHg4QSwgMHhCNSwgMHgyNCwgMHhGRCwgMHg2QiwgMHgxNCwgMHhGOCwgMHgxQSwgMHgyNiwgMHg2QSwgMHgyMSwgMHgzNiwKKyAgICAweDdDLCAweEY2LCAweDQ5LCAweDQ0LCAweEI0LCAweEE2LCAweDU5LCAweEYzLCAweDAwLCAweDc2LCAweEM1LCAweDhBLCAweDMwLCAweEY0LCAweDlDLCAweDEzLAorICAgIDB4QzksIDB4QjIsIDB4Q0UsIDB4RjEsIDB4M0YsIDB4QUIsIDB4NzUsIDB4RDYsIDB4NEYsIDB4MzYsIDB4RUEsIDB4ODYsIDB4MTIsIDB4N0EsIDB4OUEsIDB4NTQsCisgICAgMHg2OCwgMHhFQSwgMHgxMywgMHhGNCwgMHgzOSwgMHhDMSwgMHhDNSwgMHg3MCwgMHgyMiwgMHg3OSwgMHgyMSwgMHgwRCwgMHg3QiwgMHg0NywgMHgwMiwgMHg5NywKKyAgICAweDE0LCAweEZGLCAweEQyLCAweEJFLCAweDk5LCAweDg0LCAweDBGLCAweDNFLCAweERGLCAweEE1LCAweDY0LCAweDk4LCAweERGLCAweEY4LCAweEFBLCAweEEyLAorICAgIDB4RDIsIDB4RUQsIDB4RTgsIDB4NkUsIDB4NDEsIDB4RjQsIDB4MDQsIDB4M0MsIDB4RTgsIDB4MzksIDB4ODAsIDB4MDcsIDB4QkEsIDB4N0EsIDB4Q0YsIDB4NjksCisgICAgMHgzMiwgMHhEQiwgMHg3QiwgMHg3MiwgMHg1NiwgMHhFNCwgMHgxQSwgMHhBOSwgMHg4NywgMHhCMiwgMHgzMiwgMHgzRiwgMHhEOSwgMHhGNCwgMHgzRiwgMHg0QiwKKyAgICAweDA0LCAweEYyLCAweEUxLCAweDU1LCAweEQwLCAweEVELCAweDVELCAweEQ5LCAweDU3LCAweDdBLCAweDA0LCAweDA4LCAweDA1LCAweDY4LCAweDE1LCAweDdCLAorICAgIDB4NDEsIDB4NjEsIDB4NzMsIDB4NTIsIDB4N0MsIDB4QzksIDB4MjMsIDB4MzAsIDB4N0EsIDB4MkYsIDB4QTQsIDB4REYsIDB4NTMsIDB4RUIsIDB4OTksIDB4QUYsCisgICAgMHgyOCwgMHg4OSwgMHg0NywgMHgxMCwgMHhDNSwgMHhGRCwgMHhFMCwgMHg3MiwgMHhBMywgMHg1RCwgMHhFMSwgMHgwMiwgMHgyMiwgMHg0OSwgMHgyNSwgMHhERiwKKyAgICAweDAwLCAweDcxLCAweDI2LCAweEU3LCAweEM1LCAweDE2LCAweDZDLCAweDVGLCAweDI0LCAweDdGLCAweEJGLCAweDEyLCAweDJFLCAweDcxLCAweEYxLCAweDU0LAorICAgIDB4MTUsIDB4RTMsIDB4NzYsIDB4REEsIDB4MjcsIDB4NDEsIDB4OEUsIDB4RjgsIDB4QTAsIDB4QzAsIDB4RjksIDB4NUYsIDB4NkQsIDB4NEYsIDB4QzUsIDB4NEIsCisgICAgMHg1OCwgMHhCNSwgMHhBQiwgMHhDNCwgMHg0MCwgMHhBNCwgMHg4OSwgMHgzMiwgMHgwOCwgMHg2MywgMHg1RiwgMHg2OCwgMHg5MywgMHg1NiwgMHgxQywgMHgxRiwKKyAgICAweDZGLCAweERFLCAweEYxLCAweDYzLCAweDI4LCAweDJFLCAweDg4LCAweDUyLCAweDEwLCAweDNDLCAweEZDLCAweEVGLCAweDAzLCAweDg3LCAweDkxLCAweEE1LAorICAgIDB4MjIsIDB4MDYsIDB4NTgsIDB4ODgsIDB4NEYsIDB4MkMsIDB4MEIsIDB4MTEsIDB4RkMsIDB4MjEsIDB4MjMsIDB4QjgsIDB4NkEsIDB4QkQsIDB4MjEsIDB4NUIsCisgICAgMHgwQywgMHg1OSwgMHgyRCwgMHg2QywgMHg4MywgMHg2RiwgMHg3QywgMHhGOCwgMHg0RCwgMHg3RiwgMHg2MiwgMHhCQywgMHhEMSwgMHg3RCwgMHgzOSwgMHg2RSwKKyAgICAweDc4LCAweENCLCAweDg4LCAweEYyLCAweDk4LCAweERDLCAweEJFLCAweENFLCAweDM4LCAweDQ1LCAweEY1LCAweEU5LCAweDNGLCAweDU4LCAweDU0LCAweDYyLAorICAgIDB4QjQsIDB4MTUsIDB4RTYsIDB4RjcsIDB4RTMsIDB4Q0EsIDB4OTEsIDB4MDUsIDB4MzUsIDB4OEMsIDB4NkEsIDB4RTYsIDB4MDgsIDB4RkMsIDB4MDUsIDB4NkQsCisgICAgMHg2NCwgMHgzMSwgMHg0QiwgMHhBNCwgMHg2MSwgMHgyMSwgMHg5OSwgMHg0RCwgMHg1MSwgMHhGNSwgMHg5OCwgMHgwNywgMHg2NSwgMHgzRiwgMHhEMCwgMHg2QSwKKyAgICAweDhGLCAweERCLCAweDhCLCAweEIyLCAweDBFLCAweDQzLCAweDc1LCAweDQ5LCAweDVELCAweDU3LCAweEFGLCAweDk4LCAweDUxLCAweEE4LCAweDI4LCAweDYyLAorICAgIDB4OEIsIDB4QkEsIDB4NDcsIDB4NjAsIDB4OTAsIDB4Q0MsIDB4QzgsIDB4QzIsIDB4OEQsIDB4QTcsIDB4QzAsIDB4RDUsIDB4ODAsIDB4NkQsIDB4NTQsIDB4N0YsCisgICAgMHhDRCwgMHhDNiwgMHhFNiwgMHgwOCwgMHgyMywgMHg4NCwgMHg2OSwgMHg3OSwgMHgyOSwgMHg4RiwgMHg0NywgMHhCNywgMHg4NSwgMHg3OCwgMHg4RiwgMHgyOSwKKyAgICAweEUxLCAweDUzLCAweDUwLCAweEU0LCAweDFCLCAweDc3LCAweDY2LCAweDEwLCAweDYzLCAweEJGLCAweEE0LCAweEMyLCAweERGLCAweEIzLCAweDJDLCAweDg3LAorICAgIDB4MjEsIDB4MzQsIDB4RTQsIDB4RTYsIDB4RTQsIDB4NkYsIDB4MkYsIDB4NUQsIDB4NUUsIDB4NDUsIDB4Q0YsIDB4MzEsIDB4N0MsIDB4NEEsIDB4NUUsIDB4OTksCisgICAgMHhCOSwgMHg4MSwgMHhBRiwgMHg5QywgMHhDRCwgMHgyNCwgMHg2QiwgMHgzMywgMHhFNiwgMHg4RCwgMHhCOCwgMHhCOCwgMHhBMCwgMHhERSwgMHgxNSwgMHg0MSwKKyAgICAweEZBLCAweEJBLCAweDIxLCAweEZDLCAweDVELCAweEQwLCAweDg1LCAweDNFLCAweEQyLCAweDA2LCAweDQzLCAweDNFLCAweDkzLCAweEQ2LCAweDgzLCAweDU4LAorICAgIDB4NzQsIDB4NTcsIDB4RTAsIDB4QkQsIDB4MTEsIDB4NEUsIDB4RjQsIDB4MTcsIDB4RUEsIDB4MUMsIDB4OEIsIDB4MjIsIDB4QjcsIDB4NkUsIDB4ODksIDB4OTIsCisgICAgMHhDOCwgMHg0OCwgMHhGOSwgMHg4OCwgMHhFQSwgMHg0NiwgMHg4MywgMHg1NCwgMHg3NiwgMHg5NCwgMHhGRCwgMHg1OCwgMHhEMywgMHhBNywgMHhEMywgMHgyNCwKKyAgICAweEFGLCAweEM5LCAweDA1LCAweDY0LCAweDc2LCAweEM5LCAweEM1LCAweEE2LCAweDQxLCAweDJFLCAweEQ3LCAweEFBLCAweDM3LCAweDcyLCAweDdBLCAweDdDLAorICAgIDB4MUIsIDB4NjksIDB4QkQsIDB4QTQsIDB4RDIsIDB4NDMsIDB4OUQsIDB4QzYsIDB4RTQsIDB4MjAsIDB4OEYsIDB4MDgsIDB4MzEsIDB4RTcsIDB4NkUsIDB4RDQsCisgICAgMHhGQiwgMHgyRCwgMHg4NSwgMHgzRCwgMHg1QSwgMHgyMSwgMHhFQywgMHgwMywgMHhCNSwgMHg2NiwgMHhGRSwgMHhGMCwgMHgyNCwgMHgyQSwgMHhCRiwgMHgzMiwKKyAgICAweDZELCAweDVDLCAweDRELCAweDlDLCAweDRCLCAweDIyLCAweDQ5LCAweEVDLCAweDcyLCAweDlCLCAweDlBLCAweDM2LCAweDAzLCAweDkxLCAweDhDLCAweDdDLAorICAgIDB4QjksIDB4RTksIDB4OEQsIDB4NzIsIDB4RTAsIDB4QjAsIDB4NTIsIDB4NjMsIDB4MkUsIDB4REIsIDB4OUMsIDB4MEQsIDB4NTUsIDB4MzMsIDB4QTUsIDB4MTcsCisgICAgMHg3QSwgMHgyRCwgMHhBRiwgMHg3NSwgMHg2OSwgMHg1MCwgMHg3RCwgMHhEQywgMHhFRSwgMHgyNiwgMHhDNiwgMHhFMywgMHgyNiwgMHhGOSwgMHg1OSwgMHhGOSwKKyAgICAweDEwLCAweDQyLCAweDFFLCAweEM3LCAweDNFLCAweDExLCAweENCLCAweEZBLCAweDRFLCAweEU2LCAweEFCLCAweDZFLCAweEE5LCAweDFDLCAweEQxLCAweDc2LAorICAgIDB4MjAsIDB4QjYsIDB4RDYsIDB4QkQsIDB4RDMsIDB4Q0EsIDB4OUMsIDB4ODIsIDB4MzMsIDB4QjgsIDB4NUUsIDB4RUQsIDB4Q0EsIDB4MkMsIDB4NTAsIDB4QzMsCisgICAgMHg1OCwgMHgxMywgMHg3QSwgMHhBNywgMHhGMCwgMHg5MiwgMHg4OSwgMHgwNCwgMHhGOCwgMHgyNywgMHg5OCwgMHhFMiwgMHgxQywgMHhGMiwgMHhEQSwgMHhGNiwKKyAgICAweDRELCAweEMwLCAweDZBLCAweDFDLCAweEM1LCAweEE1LCAweDc5LCAweDZCLCAweDg0LCAweDM3LCAweDA1LCAweDkwLCAweDZBLCAweDBFLCAweDJCLCAweEFGLAorICAgIDB4OTYsIDB4OUUsIDB4NDUsIDB4REIsIDB4NzksIDB4REEsIDB4MkYsIDB4NDYsIDB4NUYsIDB4RTIsIDB4RTgsIDB4QTYsIDB4QzYsIDB4MDAsIDB4RjIsIDB4OEYsCisgICAgMHhDMiwgMHhBMCwgMHhGOSwgMHgzMiwgMHg1MywgMHg2MywgMHhGOSwgMHhFRCwgMHg5QywgMHgwRiwgMHgyOSwgMHg4RiwgMHg1RCwgMHg2QywgMHg1NiwgMHhFOSwKKyAgICAweEJGLCAweDUyLCAweEIxLCAweEI1LCAweEQzLCAweDhBLCAweEU0LCAweEU2LCAweDFELCAweEIyLCAweEM5LCAweDBFLCAweDhGLCAweDI4LCAweEIwLCAweEJGLAorICAgIDB4NjgsIDB4OTEsIDB4ODcsIDB4OEUsIDB4MzAsIDB4NkEsIDB4RjYsIDB4NUUsIDB4NDQsIDB4ODEsIDB4M0UsIDB4QUEsIDB4QzIsIDB4OTMsIDB4OUQsIDB4NDEsCisgICAgMHhBRSwgMHg1NCwgMHhGMSwgMHg5NiwgMHg0MCwgMHgzMCwgMHg1RiwgMHhBRCwgMHg0NCwgMHhDRiwgMHhCNCwgMHgzNCwgMHg4NiwgMHhFMiwgMHhGNCwgMHg5NywKKyAgICAweDE0LCAweDIxLCAweDFELCAweEE1LCAweDU4LCAweEFGLCAweDdCLCAweDMyLCAweDVELCAweDYzLCAweDlBLCAweDlELCAweDJBLCAweDdDLCAweERBLCAweEFELAorICAgIDB4RDUsIDB4QjIsIDB4QTgsIDB4MEQsIDB4OEYsIDB4REEsIDB4NDQsIDB4Q0UsIDB4QjYsIDB4QTAsIDB4QzMsIDB4M0MsIDB4NzMsIDB4QzUsIDB4OEMsIDB4OUIsCisgICAgMHg2MiwgMHgwQywgMHhGMiwgMHg3OSwgMHgzQywgMHg3OCwgMHhGOCwgMHhDMywgMHhDNCwgMHg0QiwgMHhBRSwgMHgyOSwgMHg1QSwgMHgzMCwgMHhDOSwgMHhCOSwKKyAgICAweDZBLCAweEU0LCAweDUyLCAweDA5LCAweEUxLCAweDA5LCAweDYwLCAweDhCLCAweDU2LCAweDkwLCAweDg0LCAweEUyLCAweDVBLCAweDA3LCAweDg4LCAweDI1LAorICAgIDB4MDMsIDB4QjcsIDB4NUIsIDB4ODYsIDB4MUUsIDB4NjgsIDB4MkMsIDB4MjUsIDB4NUQsIDB4RkUsIDB4QjksIDB4NUEsIDB4RjAsIDB4REMsIDB4ODEsIDB4MUYsCisgICAgMHhFRSwgMHhGNywgMHgxMSwgMHg5NCwgMHg2NywgMHg4NSwgMHgxMywgMHhFQywgMHg2NSwgMHhFQywgMHg4MywgMHg1MywgMHg4MSwgMHg1NywgMHhFQiwgMHg5NSwKKyAgICAweEY1LCAweENFLCAweEZGLCAweDI2LCAweERFLCAweDg1LCAweERELCAweDdELCAweEEzLCAweEZCLCAweEEyLCAweEI5LCAweEQ5LCAweDMzLCAweDgyLCAweDBELAorICAgIDB4NDMsIDB4QzksIDB4MUIsIDB4NzIsIDB4MTQsIDB4MzksIDB4MjQsIDB4NTcsIDB4MkEsIDB4OEUsIDB4MzYsIDB4QTYsIDB4ODYsIDB4Q0MsIDB4RTgsIDB4MUYsCisgICAgMHg2QiwgMHhBRCwgMHg3QiwgMHgwRSwgMHg4OSwgMHhGOSwgMHgxQywgMHhCQiwgMHg2RSwgMHg0MywgMHg5OSwgMHhENSwgMHhBQSwgMHg1OSwgMHhERiwgMHg2MywKKyAgICAweDEyLCAweDI5LCAweDU2LCAweENELCAweDU1LCAweDU2LCAweEZDLCAweDNFLCAweEMyLCAweDM4LCAweEQ0LCAweDY1LCAweDU5LCAweEU4LCAweDZFLCAweDMxLAorICAgIDB4RkUsIDB4QTgsIDB4MTgsIDB4QUEsIDB4QjQsIDB4NEMsIDB4NzIsIDB4M0MsIDB4QjIsIDB4QkQsIDB4QTcsIDB4NTQsIDB4OEIsIDB4NTMsIDB4RjgsIDB4RjcsCisgICAgMHhCOCwgMHg4MCwgMHhDRSwgMHgwNiwgMHg4OSwgMHg1RSwgMHg5RCwgMHgxOSwgMHgyOSwgMHhERSwgMHg3MywgMHgwMSwgMHhDRiwgMHgwQywgMHhEMiwgMHhGOCwKKyAgICAweEUzLCAweDJCLCAweDNELCAweDdDLCAweDg0LCAweEZGLCAweDRELCAweEUzLCAweDJFLCAweDMzLCAweDZGLCAweDQ3LCAweDFFLCAweDk3LCAweEIzLCAweDU1LAorICAgIDB4MEIsIDB4NUMsIDB4RTMsIDB4QUIsIDB4OUMsIDB4Q0IsIDB4NDAsIDB4ODIsIDB4RDYsIDB4QTMsIDB4NDcsIDB4OEIsIDB4RkYsIDB4QjEsIDB4MjYsIDB4NDQsCisgICAgMHhFMywgMHg3RSwgMHgzOSwgMHhEQiwgMHhERCwgMHgxQiwgMHgzNSwgMHhFNiwgMHg2RSwgMHhGMiwgMHg0OCwgMHg1NywgMHgwOSwgMHgwMiwgMHhCNiwgMHhBNCwKKyAgICAweEQ0LCAweEI5LCAweDdFLCAweDIwLCAweDkzLCAweDhGLCAweDU5LCAweEU3LCAweDJELCAweDBELCAweEI4LCAweDgyLCAweDlBLCAweEE0LCAweEM3LCAweEIyLAorICAgIDB4MkEsIDB4MzEsIDB4ODgsIDB4NTIsIDB4OTgsIDB4REYsIDB4NEMsIDB4RjYsIDB4RDQsIDB4QjQsIDB4RDIsIDB4NzEsIDB4NDEsIDB4QUEsIDB4MzcsIDB4NTIsCisgICAgMHgzNCwgMHg3MCwgMHg1MSwgMHg5QiwgMHgzMywgMHgyRCwgMHhBMywgMHg3MSwgMHgzRSwgMHhCNCwgMHhDMiwgMHg1QiwgMHhFQywgMHhDNCwgMHhENCwgMHg1MSwKKyAgICAweEY1LCAweDhBLCAweEQ4LCAweEIyLCAweDg3LCAweEFFLCAweDQxLCAweEMyLCAweEJBLCAweDBCLCAweDQzLCAweEVBLCAweDgzLCAweEQ4LCAweDMyLCAweDk3LAorICAgIDB4NUMsIDB4Q0EsIDB4RjYsIDB4QkQsIDB4NjUsIDB4ODksIDB4RjcsIDB4OTIsIDB4OEUsIDB4RjksIDB4OTcsIDB4N0YsIDB4RjcsIDB4MTcsIDB4MjgsIDB4NDcsCisgICAgMHg0NSwgMHhCMywgMHhFQiwgMHg3MSwgMHg4NiwgMHgxNiwgMHg0MCwgMHg4NiwgMHgyOCwgMHg0MywgMHgzMywgMHg5MiwgMHgxMSwgMHgwNiwgMHhFRCwgMHgyNiwKKyAgICAweDVELCAweDhGLCAweDM1LCAweEFCLCAweEE3LCAweEY2LCAweDZDLCAweENFLCAweDI5LCAweDYyLCAweEQ2LCAweEJFLCAweDE2LCAweEEzLCAweDZCLCAweDM0LAorICAgIDB4QUUsIDB4NDAsIDB4RUQsIDB4MjUsIDB4MkEsIDB4QTcsIDB4ODQsIDB4MUEsIDB4N0YsIDB4QjAsIDB4QkUsIDB4MkUsIDB4MDksIDB4OEEsIDB4MDYsIDB4OTAsCisgICAgMHgxMSwgMHgyRCwgMHg1NCwgMHg4OCwgMHgyQywgMHgyMywgMHg3OCwgMHg0QSwgMHg3OSwgMHgxMywgMHgzOSwgMHhFQSwgMHhDNSwgMHg0RiwgMHgwNSwgMHgzMCwKKyAgICAweDQ2LCAweEJCLCAweDM4LCAweEYxLCAweDQ3LCAweDM2LCAweEJGLCAweEFGLCAweEQxLCAweDdFLCAweDNBLCAweDdCLCAweDMxLCAweDU0LCAweDIyLCAweDJGLAorICAgIDB4M0QsIDB4QTYsIDB4QUIsIDB4MTAsIDB4MUEsIDB4M0IsIDB4NzYsIDB4OUEsIDB4RUQsIDB4Q0MsIDB4RDIsIDB4RDMsIDB4MjksIDB4QTUsIDB4OTAsIDB4RUIsCisgICAgMHg1NywgMHgxNSwgMHgxRCwgMHhDOCwgMHhCNiwgMHhDRCwgMHhEMCwgMHgxMSwgMHg0NCwgMHgyQywgMHg3QiwgMHhDRiwgMHg0MiwgMHhBMCwgMHg3NiwgMHhFMiwKKyAgICAweDE0LCAweDQzLCAweEMwLCAweEJELCAweDUzLCAweDIyLCAweDM3LCAweDRFLCAweDgzLCAweEQyLCAweDkxLCAweDQ3LCAweERELCAweENCLCAweDhFLCAweDVBLAorICAgIDB4QjAsIDB4QTYsIDB4QjAsIDB4MTMsIDB4ODQsIDB4ODEsIDB4NkEsIDB4NTksIDB4QzQsIDB4QzksIDB4NTgsIDB4MUEsIDB4M0IsIDB4NDEsIDB4MDksIDB4MkIsCisgICAgMHhDMSwgMHhDQiwgMHgzOSwgMHg5OCwgMHhFOCwgMHhERCwgMHgxQiwgMHg0NSwgMHg1RiwgMHhCNiwgMHg4NiwgMHg2QiwgMHg0MSwgMHg3QywgMHgzMiwgMHhEQywKKyAgICAweDBFLCAweDAzLCAweEU3LCAweEYzLCAweEI5LCAweDY1LCAweDhFLCAweDNBLCAweDY5LCAweDY3LCAweDhFLCAweEUyLCAweDZELCAweDZGLCAweEI3LCAweEE3LAorICAgIDB4MkEsIDB4OTMsIDB4OUQsIDB4RUEsIDB4QTcsIDB4MkUsIDB4ODIsIDB4ODgsIDB4NjcsIDB4QzYsIDB4OTEsIDB4MzYsIDB4REMsIDB4OTMsIDB4NDcsIDB4OUEsCisgICAgMHhDRCwgMHhGOSwgMHhGNiwgMHhGQSwgMHgyQSwgMHgzQSwgMHg4NSwgMHhEMSwgMHg2NiwgMHg0OCwgMHhGQywgMHgxQSwgMHg5RSwgMHg2NCwgMHg2QywgMHgyMCwKKyAgICAweEQ0LCAweDE5LCAweDA3LCAweERBLCAweEUzLCAweEMzLCAweDU0LCAweEQyLCAweDQ1LCAweEI1LCAweDQ3LCAweDEwLCAweDJBLCAweEI0LCAweDAwLCAweERGLAorICAgIDB4MDYsIDB4RjYsIDB4RTQsIDB4QkYsIDB4NDcsIDB4NkMsIDB4NjEsIDB4REQsIDB4RDcsIDB4M0MsIDB4RTIsIDB4MjcsIDB4M0EsIDB4NEUsIDB4RUUsIDB4Q0EsCisgICAgMHgwNywgMHgwMywgMHg3RSwgMHhGQywgMHg0MSwgMHg5NCwgMHgzQiwgMHhBOCwgMHhENSwgMHgyOCwgMHg2NSwgMHhCRSwgMHg1NSwgMHgyOCwgMHg2OSwgMHgxMCwKKyAgICAweEYzLCAweDkxLCAweENFLCAweEY4LCAweDg0LCAweDY1LCAweDQ1LCAweERDLCAweEIwLCAweDU0LCAweDc5LCAweDFBLCAweDE3LCAweDYwLCAweDYxLCAweEJELAorICAgIDB4QjYsIDB4MkMsIDB4OTMsIDB4MjEsIDB4OEUsIDB4MTksIDB4MzUsIDB4MjcsIDB4OUIsIDB4NUUsIDB4RkUsIDB4OEQsIDB4QjQsIDB4MUEsIDB4RDYsIDB4RDEsCisgICAgMHhCMiwgMHhDRSwgMHhDNiwgMHgyMCwgMHg2QiwgMHg5MiwgMHhFQywgMHg3OCwgMHhGOCwgMHg3RCwgMHg5MywgMHgyMiwgMHhGMCwgMHhENSwgMHhENCwgMHg1QiwKKyAgICAweDQxLCAweEYzLCAweEMyLCAweDMyLCAweEI3LCAweDU4LCAweDVFLCAweDQwLCAweDlFLCAweDBGLCAweDkzLCAweDJBLCAweEJDLCAweEJDLCAweEQ1LCAweDMzLAorICAgIDB4MjcsIDB4MTMsIDB4MEUsIDB4NEIsIDB4OUIsIDB4OEYsIDB4M0QsIDB4NzcsIDB4MDIsIDB4MjQsIDB4QTQsIDB4NzIsIDB4QUUsIDB4NzcsIDB4RTQsIDB4MUEsCisgICAgMHhFOCwgMHhBMywgMHg4OCwgMHg3QywgMHhEQywgMHgxNSwgMHgyMywgMHg2MiwgMHhEMSwgMHg1MywgMHhGOCwgMHgyRiwgMHg0MiwgMHhBQiwgMHhDMSwgMHhGOSwKKyAgICAweDQzLCAweDRGLCAweDVFLCAweEFELCAweDQ0LCAweEQzLCAweDhCLCAweDM2LCAweDM5LCAweDVDLCAweEFCLCAweDUyLCAweDNELCAweEVCLCAweDg2LCAweDAwLAorICAgIDB4NDksIDB4MTgsIDB4M0MsIDB4M0MsIDB4NUEsIDB4MkIsIDB4RDAsIDB4RDQsIDB4RUYsIDB4RDksIDB4RUEsIDB4QzUsIDB4NTEsIDB4NTMsIDB4QkQsIDB4QkQsCisgICAgMHhCRSwgMHg0MiwgMHgzNywgMHgzNywgMHg3NCwgMHg4OSwgMHhCQiwgMHgxRCwgMHg2RSwgMHgyRCwgMHg0MiwgMHhEMywgMHg3MywgMHgyOCwgMHg0NywgMHgyRiwKKyAgICAweEZELCAweDJDLCAweEMwLCAweEUwLCAweEJFLCAweEZELCAweDdELCAweDRFLCAweDhBLCAweEQ4LCAweEM2LCAweEUwLCAweEZFLCAweEY1LCAweEUwLCAweDMzLAorICAgIDB4MkQsIDB4QjIsIDB4MzgsIDB4QUMsIDB4ODMsIDB4REYsIDB4NkQsIDB4N0YsIDB4MjksIDB4QUEsIDB4MEMsIDB4MTIsIDB4NzQsIDB4QzAsIDB4NUIsIDB4QjYsCisgICAgMHg3RSwgMHg3RiwgMHgwNywgMHg4MywgMHhDOSwgMHg3MCwgMHgyRSwgMHg4OSwgMHg4NiwgMHgxMywgMHhFNiwgMHhCQSwgMHg4MywgMHhFNiwgMHg0MSwgMHhBMiwKKyAgICAweEMyLCAweEZGLCAweEU0LCAweDMzLCAweDc3LCAweEQ4LCAweDQyLCAweDgwLCAweDQ2LCAweERCLCAweDBDLCAweDAyLCAweEYxLCAweDRELCAweEFELCAweDgyLAorICAgIDB4MEUsIDB4NkYsIDB4RTIsIDB4NzYsIDB4M0YsIDB4NUUsIDB4MTYsIDB4MjMsIDB4RjgsIDB4QzksIDB4OEQsIDB4NTUsIDB4OTEsIDB4QkEsIDB4NTIsIDB4RUYsCisgICAgMHg4QSwgMHg0OSwgMHgwRSwgMHgzMywgMHg3QSwgMHhGNiwgMHhCNSwgMHg2MiwgMHhEMywgMHg3OSwgMHhDNCwgMHg5OSwgMHg0OSwgMHhFOSwgMHg4MSwgMHhDMSwKKyAgICAweEY5LCAweDNGLCAweDc1LCAweDlFLCAweDI0LCAweDE0LCAweDlBLCAweDlELCAweDcwLCAweDYyLCAweDA0LCAweDZBLCAweEI0LCAweDNDLCAweEE5LCAweERCLAorICAgIDB4NDYsIDB4NUMsIDB4M0MsIDB4REUsIDB4QTMsIDB4RjQsIDB4Q0UsIDB4OUQsIDB4NEMsIDB4ODQsIDB4NjksIDB4REEsIDB4MEUsIDB4MjksIDB4ODYsIDB4OEYsCisgICAgMHhGMCwgMHhEMSwgMHgzQSwgMHgzMywgMHhFNCwgMHhFRSwgMHhGQywgMHg4RCwgMHhBOSwgMHg1MSwgMHgzQywgMHg2MCwgMHgyNywgMHg2MSwgMHgzRiwgMHg5MCwKKyAgICAweEU0LCAweEM5LCAweDcxLCAweEUxLCAweEVCLCAweEY5LCAweDA0LCAweEVCLCAweEEzLCAweEI4LCAweEFELCAweDA0LCAweDgyLCAweDJCLCAweDQwLCAweDEzLAorICAgIDB4NDYsIDB4QzAsIDB4NDcsIDB4NzIsIDB4QzcsIDB4MzcsIDB4RDUsIDB4Q0YsIDB4MEUsIDB4OTMsIDB4NTgsIDB4MkMsIDB4RUQsIDB4MDMsIDB4NjgsIDB4RTIsCisgICAgMHg3OCwgMHhGRCwgMHg3MCwgMHhFOCwgMHg1MywgMHgyNywgMHgwNiwgMHg3MCwgMHg3QSwgMHg3RiwgMHg4NSwgMHhFRiwgMHgyQiwgMHg5OCwgMHg3RiwgMHhGRCwKKyAgICAweDM0LCAweDJCLCAweEFDLCAweEEwLCAweDQ2LCAweDM1LCAweDU2LCAweDc1LCAweDk2LCAweDBCLCAweEY5LCAweEVDLCAweEU0LCAweDlCLCAweEJELCAweDFFLAorICAgIDB4RTAsIDB4OTQsIDB4NjcsIDB4ODYsIDB4RDMsIDB4QkIsIDB4RTQsIDB4NTMsIDB4ODIsIDB4MjgsIDB4MjksIDB4QzIsIDB4MUIsIDB4M0YsIDB4NzksIDB4ODYsCisgICAgMHg0NCwgMHg2QSwgMHg1MCwgMHgxRSwgMHhDRSwgMHgxQiwgMHhDQywgMHg4QywgMHgxMywgMHg0OSwgMHgzMiwgMHhFMywgMHhFNiwgMHhEMSwgMHg1QiwgMHhERCwKKyAgICAweDU5LCAweDMzLCAweDc1LCAweDk1LCAweEYyLCAweEMxLCAweEM1LCAweDc3LCAweDA4LCAweDgxLCAweDQ3LCAweDM5LCAweENELCAweEJBLCAweDc4LCAweEExLAorICAgIDB4NDcsIDB4RDQsIDB4MkMsIDB4REUsIDB4OUYsIDB4QjAsIDB4MjAsIDB4NTUsIDB4QTEsIDB4NEIsIDB4RDksIDB4MEEsIDB4QTgsIDB4OUMsIDB4RkUsIDB4OEMsCisgICAgMHg1RiwgMHg4MCwgMHgyQiwgMHg5MCwgMHg1RCwgMHg4NiwgMHhCNSwgMHg5MSwgMHgzMSwgMHg1QywgMHgzNCwgMHg0QSwgMHhDOCwgMHgyNywgMHhGRiwgMHgyRCwKKyAgICAweERBLCAweEE4LCAweEEzLCAweEJFLCAweDlBLCAweEIzLCAweDI0LCAweDhBLCAweEI0LCAweDFDLCAweENDLCAweEMxLCAweDgwLCAweDc1LCAweEVCLCAweDg4LAorICAgIDB4NzksIDB4QTIsIDB4MjAsIDB4RDksIDB4N0UsIDB4MTMsIDB4Q0MsIDB4NkUsIDB4RTksIDB4MkUsIDB4QTAsIDB4M0EsIDB4NDYsIDB4MkYsIDB4QTEsIDB4OTksCisgICAgMHhERSwgMHg1NywgMHhFNCwgMHgzMywgMHgxMCwgMHhCMiwgMHhDOCwgMHhFNSwgMHhDRiwgMHhDMCwgMHg3NSwgMHg5RSwgMHhGNywgMHhCOSwgMHg3NCwgMHhBOCwKKyAgICAweEQwLCAweDU2LCAweEZGLCAweDg2LCAweDk1LCAweDczLCAweEUxLCAweDM2LCAweEY1LCAweEVELCAweDg5LCAweDBDLCAweDM1LCAweDI1LCAweERGLCAweDA1LAorICAgIDB4REIsIDB4QUEsIDB4MDksIDB4NTQsIDB4MjksIDB4RjQsIDB4OTYsIDB4RDEsIDB4ODIsIDB4NTAsIDB4QzIsIDB4NjAsIDB4MkMsIDB4RTQsIDB4Q0IsIDB4ODYsCisgICAgMHhCRSwgMHhBQiwgMHhCMSwgMHgwNSwgMHgxRCwgMHg4NSwgMHhBNiwgMHg3NiwgMHhBMywgMHhFMiwgMHg0RSwgMHg3NCwgMHg3MSwgMHhFQiwgMHg2NSwgMHhBMSwKKyAgICAweDUzLCAweEY2LCAweDMyLCAweDY3LCAweDNBLCAweDU2LCAweDJBLCAweEUzLCAweEUxLCAweDhFLCAweDc1LCAweENGLCAweEUwLCAweEIyLCAweEJCLCAweDQwLAorICAgIDB4MEEsIDB4RDEsIDB4OTMsIDB4ODMsIDB4QTAsIDB4MjEsIDB4MjksIDB4NzcsIDB4QzEsIDB4OEQsIDB4NjcsIDB4NjcsIDB4MjcsIDB4RjAsIDB4QjEsIDB4OUIsCisgICAgMHgxQywgMHhEMiwgMHgzRiwgMHg5MywgMHg2MywgMHg4NiwgMHgzOCwgMHgxMiwgMHhCNiwgMHgzMywgMHg2RCwgMHhBQiwgMHg1QiwgMHgxNiwgMHhGMiwgMHhCNSwKKyAgICAweEFELCAweDMwLCAweEQ2LCAweERELCAweEE3LCAweEExLCAweDlGLCAweERELCAweDUyLCAweEVFLCAweEVBLCAweDUwLCAweEQ0LCAweDM2LCAweDFFLCAweDlDLAorICAgIDB4MkIsIDB4RDAsIDB4NDUsIDB4RUYsIDB4N0UsIDB4NDMsIDB4QzcsIDB4NzIsIDB4QkIsIDB4NTUsIDB4RjcsIDB4RjYsIDB4MzIsIDB4RTgsIDB4QzQsIDB4QUUsCisgICAgMHg0OCwgMHgxQSwgMHg2QSwgMHg4RCwgMHhFMSwgMHhBMCwgMHhCQywgMHg4MywgMHgwRiwgMHg0QSwgMHhBQywgMHg5QywgMHg2RiwgMHg5OCwgMHg1NiwgMHg4QSwKKyAgICAweDY2LCAweDczLCAweDE1LCAweDA3LCAweEE2LCAweDQ2LCAweEQxLCAweDZCLCAweDA3LCAweDFDLCAweDM2LCAweDFFLCAweEM5LCAweDQ4LCAweDhBLCAweDA1LAorICAgIDB4QzIsIDB4MUQsIDB4OUQsIDB4NTQsIDB4MzcsIDB4MzQsIDB4OEYsIDB4NEIsIDB4RDcsIDB4NjMsIDB4MUYsIDB4QzMsIDB4MDIsIDB4QzIsIDB4MTEsIDB4NzAsCisgICAgMHg0MCwgMHg2MSwgMHg0RiwgMHhFMSwgMHgxNywgMHg2MywgMHhERiwgMHgyMSwgMHg1MCwgMHg3RCwgMHgwOCwgMHgwMiwgMHhCNiwgMHg5NywgMHgxMSwgMHgyRSwKKyAgICAweEY1LCAweEU2LCAweDBDLCAweDk0LCAweDEwLCAweDMxLCAweDVBLCAweDUxLCAweDVELCAweDAwLCAweDg0LCAweEMyLCAweDg2LCAweDkwLCAweEQ0LCAweEFFLAorICAgIDB4MzQsIDB4QjcsIDB4MUUsIDB4OTcsIDB4ODAsIDB4M0YsIDB4ODUsIDB4NTIsIDB4MkQsIDB4N0EsIDB4QkQsIDB4MzIsIDB4MDMsIDB4MkIsIDB4OUYsIDB4RjUsCisgICAgMHhDQSwgMHg4NSwgMHg2RCwgMHg5QSwgMHhGMywgMHg2NSwgMHhBRiwgMHhFMiwgMHg2MCwgMHhERiwgMHg4QywgMHg0RiwgMHgxOCwgMHhEMSwgMHg4NSwgMHhEMywKKyAgICAweDAxLCAweDZCLCAweDA3LCAweEEwLCAweDU0LCAweEI2LCAweENCLCAweDI1LCAweEIzLCAweDkyLCAweDk2LCAweEM1LCAweDBCLCAweEU4LCAweEI0LCAweEE0LAorICAgIDB4NjAsIDB4MjMsIDB4ODEsIDB4NDcsIDB4QkEsIDB4QUQsIDB4MzEsIDB4MDUsIDB4NTgsIDB4M0QsIDB4QzQsIDB4QTksIDB4RjcsIDB4QUIsIDB4OUUsIDB4OUYsCisgICAgMHhBRiwgMHg3RSwgMHhBQSwgMHgyMCwgMHhCNSwgMHhBNCwgMHhBNSwgMHg5QSwgMHg0NiwgMHhGNywgMHhDQywgMHhFOCwgMHhGRSwgMHg2QiwgMHg5MywgMHgwNywKKyAgICAweDdCLCAweDQzLCAweDlGLCAweDc5LCAweDU1LCAweDRFLCAweEFCLCAweENELCAweEVGLCAweDNBLCAweEExLCAweDhFLCAweEM0LCAweERFLCAweDYyLCAweDVGLAorICAgIDB4MEEsIDB4RkYsIDB4QzcsIDB4MUIsIDB4NEUsIDB4NTMsIDB4NTAsIDB4MzYsIDB4OTMsIDB4MUMsIDB4NDcsIDB4RjIsIDB4NkEsIDB4NTgsIDB4RDAsIDB4QkYsCisgICAgMHg3MCwgMHg4QiwgMHg0NSwgMHgzNCwgMHgzNCwgMHgzMywgMHg5RSwgMHg0NCwgMHhCOSwgMHg2NCwgMHhFRCwgMHg5QiwgMHg2RCwgMHgwNywgMHg1RiwgMHg4QywKKyAgICAweDEyLCAweEVGLCAweERDLCAweDI2LCAweEZGLCAweDRDLCAweENFLCAweENFLCAweDhELCAweEI5LCAweDkxLCAweEM3LCAweDgyLCAweEJGLCAweDA4LCAweDIzLAorICAgIDB4QTgsIDB4OUEsIDB4OEUsIDB4MjEsIDB4OEMsIDB4REUsIDB4MUMsIDB4OTIsIDB4NUIsIDB4QjAsIDB4NzAsIDB4NjksIDB4NDIsIDB4RDYsIDB4QjksIDB4OTQsCisgICAgMHgxQSwgMHhBMiwgMHgxMiwgMHg5MSwgMHhGMSwgMHg1NCwgMHg4MCwgMHgwMiwgMHgwQywgMHhEMiwgMHg1NCwgMHgxNywgMHg0QywgMHgyOSwgMHhFQSwgMHgzMSwKKyAgICAweEMxLCAweDYwLCAweDk0LCAweDlGLCAweDQ0LCAweERGLCAweDdCLCAweDM4LCAweEZFLCAweEQ0LCAweDMyLCAweDM2LCAweDZDLCAweEQ0LCAweDZBLCAweEQxLAorICAgIDB4M0QsIDB4NkMsIDB4NzMsIDB4NzcsIDB4ODEsIDB4REMsIDB4RTIsIDB4OUQsIDB4NDgsIDB4NUEsIDB4QjIsIDB4OTUsIDB4MjgsIDB4NDAsIDB4NUYsIDB4RjUsCisgICAgMHg2QywgMHg5QSwgMHg2MywgMHg0QiwgMHgyNCwgMHhENSwgMHhFMywgMHgyNSwgMHg3NSwgMHhENCwgMHhBQywgMHg4NywgMHhBNCwgMHg1NSwgMHg5NywgMHhBNywKKyAgICAweEIwLCAweEQ3LCAweDA2LCAweDEwLCAweEQ1LCAweDBGLCAweEM5LCAweDhGLCAweEM3LCAweDZDLCAweDYzLCAweDQ5LCAweDgxLCAweDE0LCAweDI0LCAweEIwLAorICAgIDB4MkMsIDB4QUEsIDB4REUsIDB4MDEsIDB4QjAsIDB4NEUsIDB4MkMsIDB4RDgsIDB4QjcsIDB4REYsIDB4MjQsIDB4MjEsIDB4RjgsIDB4MDcsIDB4RjYsIDB4MzYsCisgICAgMHg5MywgMHgwOSwgMHg2NiwgMHgxRCwgMHhCRiwgMHg2RCwgMHg3NiwgMHhBNywgMHhEQywgMHhBMiwgMHg2NywgMHhBQSwgMHg5RSwgMHgwNCwgMHhCNCwgMHg5QywKKyAgICAweEU5LCAweEJDLCAweDc4LCAweERDLCAweEVDLCAweDFELCAweDRELCAweEVELCAweDVGLCAweDlGLCAweEFBLCAweEZGLCAweDc1LCAweDI0LCAweDNBLCAweDk1LAorICAgIDB4RjgsIDB4QTIsIDB4QzAsIDB4MzgsIDB4NzMsIDB4RUYsIDB4RkYsIDB4MTEsIDB4NzEsIDB4REUsIDB4QkIsIDB4NzYsIDB4MTksIDB4QkEsIDB4QjksIDB4QjAsCisgICAgMHhBNiwgMHgxQiwgMHgwRiwgMHgzMywgMHhGQSwgMHgzQiwgMHhCNSwgMHg0RCwgMHgzMiwgMHg5RiwgMHgxNSwgMHgwOSwgMHhDMywgMHgyMiwgMHhDRSwgMHg3MywKKyAgICAweDMxLCAweERELCAweDIzLCAweEJGLCAweDFFLCAweDk5LCAweDU3LCAweDZELCAweDBCLCAweERGLCAweEY4LCAweEZELCAweEFDLCAweDQxLCAweEE3LCAweDkxLAorICAgIDB4OEIsIDB4NzAsIDB4NUMsIDB4NDEsIDB4MDIsIDB4NzcsIDB4NTIsIDB4MUQsIDB4QUMsIDB4QkYsIDB4QkQsIDB4MDMsIDB4QTMsIDB4NUEsIDB4QzQsIDB4NjEsCisgICAgMHhBOCwgMHhFMSwgMHgwMCwgMHhFMSwgMHg3NywgMHgxNCwgMHg3RSwgMHg1RiwgMHhERiwgMHgxMSwgMHg4MCwgMHg0MCwgMHhCQSwgMHhBMSwgMHgwNywgMHg5RiwKKyAgICAweEM3LCAweEVELCAweEM2LCAweDc3LCAweEY0LCAweDE0LCAweDU1LCAweDk5LCAweDU2LCAweDE1LCAweDZDLCAweEY5LCAweDM0LCAweDAyLCAweDI4LCAweDY5LAorICAgIDB4ODEsIDB4REQsIDB4MEQsIDB4OUUsIDB4NUIsIDB4MzUsIDB4RUEsIDB4MUQsIDB4OUMsIDB4QTksIDB4QkIsIDB4ODIsIDB4NzksIDB4MUIsIDB4RTcsIDB4RjUsCisgICAgMHhGOCwgMHhGRCwgMHgxNCwgMHhDOCwgMHhEQywgMHhFOCwgMHg3QSwgMHg2RCwgMHg3QiwgMHhBMSwgMHgzNSwgMHg3QywgMHgwQiwgMHgxMywgMHgxQiwgMHgwOCwKKyAgICAweDJFLCAweDhCLCAweDA0LCAweDI3LCAweDE2LCAweDA0LCAweEZDLCAweDZDLCAweEU0LCAweDFFLCAweDI5LCAweDA2LCAweEYxLCAweDA1LCAweENELCAweDZDLAorICAgIDB4MTAsIDB4QjEsIDB4QkEsIDB4QjksIDB4N0YsIDB4OTcsIDB4REQsIDB4OEMsIDB4QTUsIDB4NTEsIDB4QjgsIDB4RDUsIDB4RTgsIDB4RTksIDB4RUEsIDB4MjMsCisgICAgMHg1RCwgMHgyQywgMHg2QSwgMHhDMiwgMHg3NCwgMHg3RiwgMHg4MSwgMHhCNiwgMHg0NywgMHhGOSwgMHhBNSwgMHg5NCwgMHg1NywgMHgzMSwgMHgzQiwgMHhDRSwKKyAgICAweENCLCAweDEzLCAweEE3LCAweEVELCAweDlBLCAweDI5LCAweDMzLCAweDRGLCAweEUyLCAweEI1LCAweEFBLCAweDQxLCAweDM3LCAweDZGLCAweEY0LCAweDgyLAorICAgIDB4NjUsIDB4NUYsIDB4NUQsIDB4QUUsIDB4NEQsIDB4OTIsIDB4RDksIDB4MDMsIDB4Q0MsIDB4NzEsIDB4QTcsIDB4NkQsIDB4NjgsIDB4NDYsIDB4ODcsIDB4QTAsCisgICAgMHg3OSwgMHgyOCwgMHg5QywgMHg0QSwgMHgzOSwgMHg3RiwgMHg1RSwgMHhBMiwgMHhENSwgMHhCNCwgMHg4QiwgMHgzNSwgMHgwNywgMHg0OSwgMHg2NiwgMHg0NywKKyAgICAweDA4LCAweEZCLCAweEZGLCAweEU0LCAweDQ0LCAweDA2LCAweDNCLCAweDdELCAweDk5LCAweEVELCAweEU2LCAweDlELCAweERELCAweDlCLCAweDg2LCAweDI3LAorICAgIDB4NEQsIDB4M0EsIDB4NDYsIDB4NDIsIDB4REEsIDB4RUMsIDB4Q0QsIDB4RUEsIDB4MUUsIDB4NEYsIDB4REEsIDB4NUYsIDB4NUYsIDB4MEUsIDB4MEMsIDB4Q0YsCisgICAgMHg2NSwgMHg2NCwgMHgzNCwgMHgyOSwgMHg0RSwgMHgxNCwgMHg0QiwgMHg4QSwgMHg5QSwgMHgyQywgMHhGNiwgMHg4MCwgMHhCQywgMHg0QiwgMHhBRCwgMHhCOSwKKyAgICAweDI0LCAweEMzLCAweDU2LCAweDJFLCAweDVFLCAweDNELCAweEJELCAweEUwLCAweDQ4LCAweDk2LCAweDMwLCAweDAxLCAweEQ3LCAweDRBLCAweEVBLCAweDBCLAorICAgIDB4Q0QsIDB4RjIsIDB4RkEsIDB4OTksIDB4NjcsIDB4QTMsIDB4OTgsIDB4MDEsIDB4RDUsIDB4MTksIDB4MEQsIDB4RDUsIDB4NkUsIDB4QjMsIDB4MTgsIDB4MDUsCisgICAgMHg2MiwgMHg1QywgMHg3NSwgMHhCMywgMHhDMiwgMHg2MCwgMHhDRiwgMHhGNSwgMHgyMiwgMHg0MiwgMHgzMiwgMHg3MywgMHg5OSwgMHgxRCwgMHgzMSwgMHg5NCwKKyAgICAweEU2LCAweDM3LCAweEM4LCAweDc0LCAweDQxLCAweEYxLCAweEJELCAweDQ2LCAweEJBLCAweDBCLCAweDJBLCAweEE3LCAweDRBLCAweDI4LCAweEI4LCAweDI1LAorICAgIDB4NDgsIDB4OTksIDB4RUYsIDB4RTEsIDB4RTcsIDB4NEQsIDB4RUIsIDB4NTMsIDB4QkEsIDB4NzYsIDB4QTIsIDB4MTUsIDB4MUIsIDB4RkUsIDB4ODAsIDB4NkYsCisgICAgMHg2NiwgMHg4MSwgMHgxNSwgMHg5OSwgMHg2QiwgMHgxQywgMHgxMiwgMHhCNiwgMHg2MSwgMHg1MiwgMHhDRCwgMHhCQSwgMHg0NywgMHg3OSwgMHgwRCwgMHg5QSwKKyAgICAweEVFLCAweEE5LCAweDNFLCAweEZCLCAweEJELCAweDU2LCAweEE3LCAweEJDLCAweDQxLCAweEYxLCAweDE3LCAweDAwLCAweEM1LCAweDBFLCAweDU4LCAweEE3LAorICAgIDB4NzEsIDB4NDIsIDB4N0QsIDB4NEEsIDB4QUYsIDB4M0MsIDB4OEUsIDB4QTYsIDB4NzcsIDB4NkYsIDB4MzUsIDB4RUMsIDB4OTIsIDB4OEEsIDB4QzksIDB4Q0MsCisgICAgMHhCMCwgMHg1OCwgMHg3NCwgMHhDRSwgMHhEMywgMHhCQiwgMHhBMCwgMHhDMSwgMHhDRCwgMHgxMiwgMHhGMiwgMHg4MSwgMHgxQywgMHhBNCwgMHgyNiwgMHg3QywKKyAgICAweDkyLCAweDhBLCAweDI3LCAweDE5LCAweDNDLCAweDQ0LCAweDJBLCAweDdELCAweDBFLCAweEQzLCAweEVBLCAweDE1LCAweDNBLCAweEY5LCAweDRCLCAweEJGLAorICAgIDB4OTksIDB4OEEsIDB4N0YsIDB4QUIsIDB4MTMsIDB4MjQsIDB4NjUsIDB4NDYsIDB4OTQsIDB4MjksIDB4QkQsIDB4QjcsIDB4MkEsIDB4RUUsIDB4NjUsIDB4RUYsCisgICAgMHgwMiwgMHgzNCwgMHgyMCwgMHhGNCwgMHhEMiwgMHhBRiwgMHhDNCwgMHgxMCwgMHg5MywgMHgwNSwgMHhENSwgMHg4MiwgMHg3MSwgMHg3QywgMHhGOCwgMHg5RCwKKyAgICAweDQzLCAweDcyLCAweDA5LCAweEJCLCAweDhDLCAweEMzLCAweDYwLCAweDIxLCAweDQwLCAweENCLCAweDk3LCAweEEzLCAweDQ3LCAweEUxLCAweERGLCAweDE4LAorICAgIDB4NUUsIDB4MjIsIDB4MkYsIDB4OTUsIDB4NDksIDB4M0YsIDB4ODksIDB4NTAsIDB4RkQsIDB4MDgsIDB4M0QsIDB4QzIsIDB4RTIsIDB4NUQsIDB4NUEsIDB4QTMsCisgICAgMHhGMiwgMHgwOSwgMHg0RiwgMHgwQywgMHg1NSwgMHgzOCwgMHg2OSwgMHhGOCwgMHgzOSwgMHhDMywgMHg5NCwgMHhGNywgMHg1NSwgMHg3MSwgMHhBOSwgMHhDNywKKyAgICAweDBGLCAweDJDLCAweDhFLCAweDNDLCAweDcwLCAweDg2LCAweDU3LCAweDZGLCAweENGLCAweDVELCAweEU5LCAweDRCLCAweDRGLCAweDgwLCAweDdFLCAweDE1LAorICAgIDB4NDIsIDB4NDMsIDB4N0IsIDB4RUMsIDB4Q0QsIDB4NEUsIDB4OTIsIDB4OEQsIDB4NUMsIDB4ODksIDB4RDIsIDB4MDgsIDB4NUEsIDB4MzIsIDB4MEYsIDB4NkUsCisgICAgMHgwRCwgMHgwOSwgMHgyOSwgMHgwMiwgMHg2RiwgMHhBMCwgMHgyRSwgMHg4RSwgMHg1QywgMHgxMCwgMHgxNiwgMHgxRSwgMHg4MiwgMHhERiwgMHhEMywgMHhDRCwKKyAgICAweEI1LCAweDkzLCAweEQ2LCAweDIxLCAweDdCLCAweDk2LCAweEM1LCAweEZDLCAweDc5LCAweDIxLCAweDg4LCAweDk5LCAweEM5LCAweDNDLCAweDc1LCAweDk4LAorICAgIDB4MTMsIDB4NjcsIDB4NjIsIDB4RkQsIDB4NzAsIDB4QjAsIDB4NTgsIDB4REEsIDB4Q0YsIDB4REMsIDB4OUUsIDB4OTIsIDB4NUYsIDB4ODQsIDB4M0IsIDB4MEUsCisgICAgMHhEOCwgMHhFMCwgMHhDRiwgMHhGMywgMHg5MCwgMHg5RSwgMHhGQywgMHg0MCwgMHhDNywgMHg1OCwgMHgyRiwgMHgxMSwgMHg1NSwgMHg5RCwgMHg3QSwgMHhFOSwKKyAgICAweDlELCAweDVDLCAweEQ3LCAweERGLCAweEVGLCAweEM1LCAweDg3LCAweDdFLCAweEM1LCAweDE0LCAweEE3LCAweENFLCAweEU2LCAweERCLCAweDgzLCAweEQ0LAorICAgIDB4M0EsIDB4RjcsIDB4ODYsIDB4RDAsIDB4RTYsIDB4MkIsIDB4RkYsIDB4OEIsIDB4ODAsIDB4RjgsIDB4RDYsIDB4RkUsIDB4NTUsIDB4ODIsIDB4RDcsIDB4NUIsCisgICAgMHhFQiwgMHgyOSwgMHg5QywgMHgxRCwgMHhDRCwgMHg2OSwgMHgxRCwgMHhGMiwgMHhCNSwgMHg0NCwgMHgwOSwgMHhBRCwgMHgxRCwgMHg0MCwgMHhERCwgMHhDMSwKKyAgICAweEZCLCAweERGLCAweDc5LCAweENBLCAweEE0LCAweDYxLCAweEFDLCAweDM5LCAweDgwLCAweDY2LCAweEI4LCAweDM3LCAweDkxLCAweEY2LCAweDIzLCAweEVCLAorICAgIDB4ODIsIDB4NDksIDB4MDUsIDB4NDEsIDB4NzIsIDB4OTgsIDB4QTYsIDB4MUMsIDB4MjEsIDB4QjEsIDB4NjQsIDB4OTAsIDB4REMsIDB4NjgsIDB4MDAsIDB4MkUsCisgICAgMHg2MSwgMHgyQSwgMHg4MCwgMHg5MSwgMHhFQiwgMHhDQSwgMHgwNCwgMHgzRCwgMHg4RSwgMHg3MCwgMHgyMSwgMHg2MCwgMHgxRSwgMHgxMSwgMHg2OSwgMHg0QSwKKyAgICAweDNCLCAweDA5LCAweDg0LCAweDkwLCAweDk4LCAweDc4LCAweEYwLCAweDlELCAweDVBLCAweDkyLCAweDcxLCAweEMzLCAweEI3LCAweDRCLCAweDQyLCAweDk4LAorICAgIDB4OEUsIDB4QjYsIDB4MkIsIDB4MzksIDB4NTksIDB4NUYsIDB4QzEsIDB4MDQsIDB4QzYsIDB4OEYsIDB4NkIsIDB4MzMsIDB4RjcsIDB4OUUsIDB4MEIsIDB4MzIsCisgICAgMHgzNSwgMHg2MCwgMHg1NywgMHgyMywgMHhBMSwgMHhDQiwgMHg3MywgMHg4MiwgMHhFQSwgMHgwNSwgMHgzRCwgMHhEQywgMHhGNSwgMHgzNiwgMHgxQiwgMHg1RSwKKyAgICAweDE4LCAweDFGLCAweDM3LCAweDE0LCAweEQ3LCAweDA2LCAweEFFLCAweERELCAweDQ2LCAweDE1LCAweDgyLCAweEEyLCAweDlDLCAweEFBLCAweDQxLCAweEZFLAorICAgIDB4MjgsIDB4QjgsIDB4M0UsIDB4MkEsIDB4N0QsIDB4NzgsIDB4QjgsIDB4MjcsIDB4RTcsIDB4NjUsIDB4NTIsIDB4N0QsIDB4OTMsIDB4OUYsIDB4MTMsIDB4OUEsCisgICAgMHgyMiwgMHhGMSwgMHhGNSwgMHhCMywgMHgyQSwgMHgzNywgMHhCNiwgMHg4MSwgMHhGNywgMHg1RCwgMHg0QywgMHhBMywgMHg2NSwgMHgyOCwgMHgxMywgMHg5RSwKKyAgICAweDQxLCAweEQ4LCAweEM0LCAweEE4LCAweDEwLCAweEQ1LCAweDVELCAweEIwLCAweEJBLCAweEU1LCAweERGLCAweEYzLCAweEZGLCAweDQ5LCAweEQxLCAweEVELAorICAgIDB4OUQsIDB4OUUsIDB4RkEsIDB4MTksIDB4RjcsIDB4NDEsIDB4REIsIDB4QzEsIDB4QkUsIDB4OEUsIDB4NzIsIDB4QUQsIDB4QjIsIDB4RDUsIDB4N0EsIDB4OTMsCisgICAgMHg2RiwgMHhGNywgMHgyNSwgMHhCOSwgMHg2MiwgMHhCNSwgMHhBOSwgMHgzQiwgMHg3OSwgMHhGNiwgMHhBOCwgMHg1NiwgMHg0QSwgMHg4RiwgMHg5OCwgMHg5RSwKKyAgICAweEM3LCAweDRGLCAweDQyLCAweDQ5LCAweEIzLCAweDc1LCAweEZBLCAweDczLCAweERELCAweDM3LCAweENBLCAweENFLCAweEVBLCAweDVFLCAweEYwLCAweDg0LAorICAgIDB4ODgsIDB4NkYsIDB4NTQsIDB4NTQsIDB4QTUsIDB4QTAsIDB4MUQsIDB4RjksIDB4RTcsIDB4NEUsIDB4Q0IsIDB4RDYsIDB4MEEsIDB4QjQsIDB4ODQsIDB4QkYsCisgICAgMHhEMCwgMHgyRSwgMHgyQywgMHhGOSwgMHgxMiwgMHgzMywgMHgyOCwgMHg5MSwgMHg0MCwgMHgzRSwgMHhDOSwgMHgxOCwgMHg5RSwgMHg4NCwgMHg3NiwgMHhEQiwKKyAgICAweEVCLCAweDIxLCAweDYyLCAweDM1LCAweEFFLCAweDk4LCAweDIwLCAweDk3LCAweDJCLCAweDhELCAweDZCLCAweDg2LCAweDczLCAweDkxLCAweDAwLCAweDBDLAorICAgIDB4QTAsIDB4RjEsIDB4QUIsIDB4QjcsIDB4NjUsIDB4OTQsIDB4N0EsIDB4ODAsIDB4MDksIDB4MjgsIDB4OTAsIDB4MEIsIDB4QUYsIDB4MUMsIDB4NzIsIDB4Q0QsCisgICAgMHg5MywgMHg3QywgMHhEQSwgMHhDNywgMHhFMCwgMHg4NSwgMHg3MiwgMHgzRiwgMHgwQSwgMHhBQSwgMHgxRSwgMHhFNywgMHhCRiwgMHhFQSwgMHg4NCwgMHhFMSwKKyAgICAweEY5LCAweEI4LCAweDJCLCAweDQxLCAweDRFLCAweDMwLCAweDIzLCAweDk5LCAweDQ3LCAweEU0LCAweDZDLCAweDQ1LCAweDg2LCAweDUxLCAweEIyLCAweEIxLAorICAgIDB4MkEsIDB4MTEsIDB4MUIsIDB4M0UsIDB4RDEsIDB4NUEsIDB4QzQsIDB4NkMsIDB4RUYsIDB4MzcsIDB4QkMsIDB4QUUsIDB4MTAsIDB4MEMsIDB4MjgsIDB4QjAsCisgICAgMHgxNCwgMHg2QiwgMHhCNywgMHgzNCwgMHgxMiwgMHgyMSwgMHgxMiwgMHg1RCwgMHhGQywgMHgxOSwgMHg4MCwgMHg3MiwgMHgwQiwgMHhGMywgMHgyNywgMHg4QiwKKyAgICAweDNGLCAweDE0LCAweDdCLCAweEQ1LCAweDY2LCAweEYyLCAweDBGLCAweEVGLCAweDJFLCAweEM2LCAweDg3LCAweDQ5LCAweDYxLCAweEQxLCAweEU2LCAweEE1LAorICAgIDB4MDAsIDB4RjksIDB4MUEsIDB4MTEsIDB4QjIsIDB4M0IsIDB4QUMsIDB4NzcsIDB4QkYsIDB4RkIsIDB4NkIsIDB4QjEsIDB4OUMsIDB4MjUsIDB4MEQsIDB4NjgsCisgICAgMHgyQywgMHgyQywgMHhBOCwgMHhFOCwgMHg2NywgMHhFNywgMHhBRiwgMHgzMiwgMHgwMywgMHg2QywgMHhBQiwgMHhGMiwgMHgyNywgMHg1NSwgMHhENiwgMHhDQSwKKyAgICAweDM2LCAweEM0LCAweDJBLCAweEQ3LCAweDc0LCAweDdGLCAweEQ1LCAweEU1LCAweDRFLCAweDJGLCAweDk3LCAweEE4LCAweDIxLCAweDcxLCAweEUwLCAweEQ3LAorICAgIDB4OTYsIDB4RDMsIDB4MTQsIDB4QTIsIDB4M0QsIDB4NkMsIDB4QzAsIDB4ODYsIDB4MTcsIDB4ODAsIDB4QTAsIDB4OUIsIDB4OTYsIDB4M0YsIDB4NDIsIDB4NDUsCisgICAgMHhDRiwgMHgzNCwgMHgyNCwgMHg5QywgMHhFRiwgMHg4QSwgMHhBMiwgMHgzMywgMHhCNywgMHhFQiwgMHhGNywgMHhCMSwgMHhFMSwgMHhFOSwgMHg5RiwgMHhEQiwKKyAgICAweEE5LCAweDgwLCAweEQwLCAweEE4LCAweEJDLCAweDZBLCAweDQ5LCAweDg2LCAweDY5LCAweEFGLCAweDIxLCAweDgyLCAweDlCLCAweEYxLCAweDkwLCAweDEyLAorICAgIDB4OTIsIDB4N0MsIDB4Q0UsIDB4NTYsIDB4QjcsIDB4MzEsIDB4RkYsIDB4NjgsIDB4RTEsIDB4NUQsIDB4NTQsIDB4MTcsIDB4QkMsIDB4MDYsIDB4NDYsIDB4NTYsCisgICAgMHhFMywgMHg0QSwgMHgzNiwgMHhBQiwgMHg3RCwgMHhCQywgMHhFOCwgMHgzNCwgMHgzMiwgMHg3OSwgMHhFQiwgMHg5NiwgMHhGQywgMHhBNSwgMHgxNywgMHg3MiwKKyAgICAweDUwLCAweDYzLCAweENCLCAweDZDLCAweDRELCAweDBELCAweEJELCAweEVDLCAweDc4LCAweEM3LCAweDczLCAweDk3LCAweDdGLCAweEE2LCAweEY1LCAweENFLAorICAgIDB4RkMsIDB4QzcsIDB4MjgsIDB4NTksIDB4NjIsIDB4QUYsIDB4Q0MsIDB4OUYsIDB4RkIsIDB4NEYsIDB4OEQsIDB4QkUsIDB4QzYsIDB4RUYsIDB4Q0YsIDB4OTIsCisgICAgMHhERSwgMHg1NiwgMHgwNiwgMHhGMCwgMHhCNiwgMHhFRSwgMHg3RiwgMHhGRSwgMHg5MCwgMHg1OSwgMHhGRiwgMHhGMSwgMHhCMiwgMHg3QSwgMHg2NywgMHhBOSwKKyAgICAweDE2LCAweDBCLCAweEI5LCAweERCLCAweEY4LCAweDVCLCAweEFCLCAweDZDLCAweEQwLCAweDRGLCAweDZBLCAweEIxLCAweDQyLCAweDM5LCAweDJELCAweDcxLAorICAgIDB4MzEsIDB4MzAsIDB4ODMsIDB4QzQsIDB4M0QsIDB4NUQsIDB4QjcsIDB4NkEsIDB4RTUsIDB4RTAsIDB4MUEsIDB4MDcsIDB4QzgsIDB4QTEsIDB4Q0MsIDB4NUMsCisgICAgMHg4QiwgMHgwRSwgMHhEQSwgMHhCQSwgMHhDNSwgMHgwRSwgMHgxRCwgMHg2RCwgMHg4QywgMHgyNSwgMHg1NiwgMHhBQSwgMHhBMiwgMHhDMywgMHgxQywgMHhCMSwKKyAgICAweERFLCAweDVFLCAweEFBLCAweENBLCAweDUzLCAweEY4LCAweDc4LCAweDY5LCAweDUxLCAweDY5LCAweDAzLCAweEE0LCAweDBGLCAweEI3LCAweEE3LCAweEFBLAorICAgIDB4QjYsIDB4NDQsIDB4NTksIDB4OUYsIDB4QjgsIDB4NDUsIDB4NDgsIDB4MTksIDB4NUYsIDB4MjksIDB4NjQsIDB4NjYsIDB4QTcsIDB4N0IsIDB4N0YsIDB4NzksCisgICAgMHhGOCwgMHg5RCwgMHgxNSwgMHg0OCwgMHgzNCwgMHg1NywgMHhBMSwgMHgyNSwgMHgyNywgMHhDRSwgMHhCRiwgMHhEMSwgMHhDOCwgMHg1RSwgMHg5NiwgMHhCRiwKKyAgICAweEM5LCAweEQyLCAweEM3LCAweDA4LCAweDc1LCAweERCLCAweDhELCAweDU1LCAweDI2LCAweDkyLCAweDJDLCAweEIyLCAweDg3LCAweEIxLCAweDE1LCAweDM3LAorICAgIDB4MjIsIDB4OUIsIDB4NjEsIDB4QkMsIDB4QTgsIDB4QzcsIDB4N0UsIDB4QzMsIDB4OTgsIDB4ODksIDB4QkMsIDB4NDQsIDB4NkIsIDB4MTMsIDB4OTMsIDB4MzAsCisgICAgMHhDRCwgMHg1QiwgMHgzNSwgMHhCNCwgMHg5RiwgMHg1QywgMHhCNSwgMHgyRSwgMHhCMSwgMHgyMywgMHgyMCwgMHhBOCwgMHhGMywgMHhBMywgMHg1QSwgMHgwMSwKKyAgICAweDI5LCAweDI0LCAweDU0LCAweDIwLCAweEVGLCAweDI3LCAweENELCAweEYzLCAweDU2LCAweEUwLCAweDZCLCAweDAyLCAweDIzLCAweDBBLCAweEQ5LCAweDZBLAorICAgIDB4QTYsIDB4MjMsIDB4RTEsIDB4QzMsIDB4OTYsIDB4RUUsIDB4MDYsIDB4MTEsIDB4NTMsIDB4OUUsIDB4RDYsIDB4ODAsIDB4QzEsIDB4NjgsIDB4MTUsIDB4QTQsCisgICAgMHgyNCwgMHg4RiwgMHhCRiwgMHhCMiwgMHg0OSwgMHhDMSwgMHgyRSwgMHhFMiwgMHg2QiwgMHhEMiwgMHg0OCwgMHg0NSwgMHgzQywgMHhBNiwgMHhGOCwgMHg2QywKKyAgICAweEMwLCAweDU1LCAweDUxLCAweEM0LCAweEFDLCAweDUyLCAweDhELCAweDQ0LCAweEVGLCAweEJDLCAweDA0LCAweDA1LCAweDY5LCAweDVDLCAweDg3LCAweDk5LAorICAgIDB4MEMsIDB4MjcsIDB4RkIsIDB4MDIsIDB4NkUsIDB4RDEsIDB4RjcsIDB4NUUsIDB4MDcsIDB4MTEsIDB4MjYsIDB4NUEsIDB4NTksIDB4NUEsIDB4RjgsIDB4NTQsCisgICAgMHgxMiwgMHg4OCwgMHgyMCwgMHhCQiwgMHgzOCwgMHg5MiwgMHg0OSwgMHhGMCwgMHhFNSwgMHg4MiwgMHhBMywgMHhGNiwgMHhFRSwgMHhCRCwgMHhENywgMHhDQywKKyAgICAweDU4LCAweERDLCAweDNCLCAweDhBLCAweDEzLCAweEU4LCAweDVGLCAweDU4LCAweDBDLCAweDEyLCAweDY0LCAweDNDLCAweEFGLCAweDkyLCAweEMwLCAweEM5LAorICAgIDB4MTEsIDB4RTksIDB4QzEsIDB4QjgsIDB4RTcsIDB4RkEsIDB4MDksIDB4QUUsIDB4NjEsIDB4QTMsIDB4NzAsIDB4NEMsIDB4MDcsIDB4NDUsIDB4N0MsIDB4NjEsCisgICAgMHg4MiwgMHgxQiwgMHg2NCwgMHg0QywgMHgwRiwgMHg3RCwgMHhDMiwgMHhDNSwgMHhEOSwgMHg5MiwgMHgwMCwgMHgzNSwgMHhDQywgMHgzNCwgMHgwNywgMHhCQSwKKyAgICAweERELCAweDUyLCAweEUzLCAweDY3LCAweDc2LCAweEM2LCAweDhCLCAweEQ1LCAweDUxLCAweEU3LCAweEIzLCAweDU3LCAweDdELCAweEY2LCAweEEzLCAweDgyLAorICAgIDB4RUEsIDB4N0QsIDB4ODgsIDB4MDksIDB4NjcsIDB4NDksIDB4MkIsIDB4MzcsIDB4MDQsIDB4MUUsIDB4QkYsIDB4ODMsIDB4NzYsIDB4QkEsIDB4N0YsIDB4QjQsCisgICAgMHhDMSwgMHg4RiwgMHhDRCwgMHhEMywgMHgwNCwgMHhEMiwgMHg4OSwgMHg1RiwgMHgwRSwgMHhBNywgMHg0MywgMHg0RiwgMHg4QSwgMHg0QSwgMHg5OCwgMHg0OCwKKyAgICAweDc0LCAweDgzLCAweDBCLCAweDJFLCAweDZFLCAweEM0LCAweEFGLCAweDI5LCAweDM4LCAweEJBLCAweEQxLCAweDY3LCAweEVBLCAweDk2LCAweDEwLCAweDM1LAorICAgIDB4NjksIDB4RkYsIDB4RDIsIDB4NDMsIDB4MDAsIDB4MkUsIDB4OUQsIDB4NjAsIDB4MDgsIDB4MDQsIDB4REYsIDB4RkIsIDB4Q0QsIDB4NkMsIDB4OTgsIDB4Q0UsCisgICAgMHg3MywgMHg5QSwgMHhGNCwgMHg0NiwgMHgyMywgMHgyMiwgMHg1OCwgMHgwQywgMHgxRiwgMHhFMSwgMHg1QSwgMHg0MywgMHg3NiwgMHgxOCwgMHg4MSwgMHhFMywKKyAgICAweEY0LCAweEJFLCAweDk1LCAweEJGLCAweDYxLCAweDg4LCAweDE2LCAweEY0LCAweDdCLCAweDAxLCAweEVCLCAweEQ0LCAweDg1LCAweEI5LCAweEMyLCAweDBDLAorICAgIDB4MjIsIDB4MDIsIDB4MjcsIDB4OEQsIDB4QjUsIDB4N0YsIDB4QzgsIDB4QTksIDB4QUEsIDB4OEEsIDB4RjcsIDB4OTEsIDB4N0EsIDB4NEEsIDB4MjAsIDB4MzcsCisgICAgMHhCNywgMHhCRSwgMHgxNSwgMHg2RSwgMHg0OCwgMHgyQywgMHg1MCwgMHhFMywgMHhBRSwgMHgyQiwgMHhBRSwgMHgxRSwgMHg1QywgMHg1OSwgMHg5QSwgMHgzNiwKKyAgICAweDQ2LCAweDg1LCAweDA0LCAweEU4LCAweDUxLCAweEVELCAweDFGLCAweEIwLCAweDM4LCAweEUzLCAweEM3LCAweDVELCAweDlBLCAweEQxLCAweDA3LCAweDg1LAorICAgIDB4RUQsIDB4REMsIDB4M0MsIDB4OTksIDB4MzUsIDB4MDMsIDB4NTcsIDB4ODUsIDB4RTIsIDB4ODMsIDB4RkIsIDB4MDYsIDB4ODEsIDB4MDgsIDB4REEsIDB4RjIsCisgICAgMHhGQSwgMHhGNCwgMHg5RSwgMHg1RiwgMHgyRiwgMHg4MiwgMHhDMiwgMHhCQSwgMHhFMywgMHgwNCwgMHg0MiwgMHg1OSwgMHg0QiwgMHhCRCwgMHhFQiwgMHhGRCwKKyAgICAweDhGLCAweDVELCAweDM0LCAweDM3LCAweDg2LCAweDA2LCAweDZCLCAweENDLCAweDhDLCAweDQ4LCAweDdDLCAweDE0LCAweEU5LCAweDQ4LCAweEY1LCAweDI4LAorICAgIDB4NTEsIDB4RjMsIDB4N0UsIDB4QzksIDB4QzgsIDB4NzMsIDB4ODgsIDB4OEIsIDB4MDMsIDB4QUQsIDB4RUEsIDB4MzcsIDB4M0YsIDB4MDIsIDB4OTUsIDB4QjgsCisgICAgMHg2QSwgMHgyOCwgMHhGQywgMHg0MiwgMHhEOSwgMHhBRCwgMHhGQywgMHg0QywgMHhFOCwgMHhFQSwgMHhEQywgMHg0QiwgMHhEMywgMHg5QywgMHg3NCwgMHgwOSwKKyAgICAweDQ0LCAweDc0LCAweDgxLCAweEI2LCAweDM2LCAweDk2LCAweDA3LCAweEZCLCAweDQ4LCAweEY1LCAweEJBLCAweDIxLCAweEE1LCAweEQ0LCAweENBLCAweDQ4LAorICAgIDB4MUUsIDB4NjMsIDB4RjQsIDB4OEMsIDB4MTYsIDB4NEMsIDB4REYsIDB4QzIsIDB4QUEsIDB4MTEsIDB4MDIsIDB4Q0YsIDB4RTgsIDB4MjgsIDB4RUYsIDB4QjksCisgICAgMHg1NywgMHg3MCwgMHg2QywgMHgyQywgMHg0MywgMHgxOCwgMHg2RCwgMHhCRCwgMHgyRCwgMHhGNCwgMHgyMCwgMHg1NCwgMHgyQSwgMHhGMywgMHhBRSwgMHg1NywKKyAgICAweDQ2LCAweEE0LCAweDBFLCAweEM4LCAweDE4LCAweEIzLCAweDM3LCAweDZFLCAweEZGLCAweDk5LCAweDZBLCAweDI2LCAweEY4LCAweDdFLCAweENGLCAweDhCLAorICAgIDB4REIsIDB4NDMsIDB4RjMsIDB4MTAsIDB4MzAsIDB4QTcsIDB4MjcsIDB4OTYsIDB4MDcsIDB4OEYsIDB4NTAsIDB4RTAsIDB4NDUsIDB4NDEsIDB4MTYsIDB4QTYsCisgICAgMHhDMSwgMHgxQiwgMHhDQiwgMHg5NywgMHgwMCwgMHg4MSwgMHg5RCwgMHgzQSwgMHgxQSwgMHgxRSwgMHhBMCwgMHgxMSwgMHhGQSwgMHhCQywgMHg4OSwgMHhGNSwKKyAgICAweDA3LCAweDY2LCAweDkzLCAweDRFLCAweEM0LCAweDkwLCAweEY3LCAweEExLCAweDY1LCAweDAwLCAweERFLCAweDM5LCAweDlBLCAweEVELCAweENDLCAweEVBLAorICAgIDB4NzAsIDB4NTcsIDB4ODMsIDB4NjIsIDB4NjgsIDB4RTAsIDB4OUMsIDB4MEEsIDB4QzUsIDB4MkYsIDB4NkUsIDB4NzUsIDB4QjksIDB4OTMsIDB4MTUsIDB4NjIsCisgICAgMHhBQywgMHg3QywgMHg4QiwgMHgyMywgMHgzMiwgMHhGNCwgMHhDOSwgMHg5NywgMHhCQSwgMHg3RCwgMHg3RCwgMHg5RCwgMHgxOSwgMHgxMywgMHg0QiwgMHg2RSwKKyAgICAweEVGLCAweERFLCAweDJCLCAweDlCLCAweDMwLCAweDlCLCAweDMwLCAweEE4LCAweDIyLCAweEJDLCAweDdCLCAweDYzLCAweEM4LCAweDA4LCAweDg0LCAweEE2LAorICAgIDB4NjYsIDB4RTAsIDB4ODcsIDB4MEMsIDB4NEEsIDB4MUIsIDB4QzMsIDB4RTIsIDB4RTQsIDB4M0IsIDB4NDUsIDB4MjEsIDB4NDUsIDB4MzYsIDB4MDUsIDB4OTgsCisgICAgMHg0MSwgMHhFMSwgMHgwMywgMHg4MiwgMHg5NSwgMHg2OSwgMHgwQywgMHg2RCwgMHg0QSwgMHgxMywgMHg5NCwgMHgxNSwgMHg2NiwgMHg5QywgMHgyRiwgMHhBNSwKKyAgICAweDkzLCAweDNGLCAweDU5LCAweEUwLCAweDg2LCAweEVELCAweDEzLCAweEQ1LCAweDlBLCAweDBBLCAweEVCLCAweDBDLCAweDU4LCAweEQxLCAweEJCLCAweDlDLAorICAgIDB4RDksIDB4MTYsIDB4M0MsIDB4QzcsIDB4NDcsIDB4N0EsIDB4MkIsIDB4NjIsIDB4QzUsIDB4MjksIDB4MDgsIDB4MDMsIDB4QzYsIDB4Q0UsIDB4N0IsIDB4QUIsCisgICAgMHg5QiwgMHg5NiwgMHg2OSwgMHg0MiwgMHg5QSwgMHgyNywgMHgyMywgMHgwRSwgMHhBQywgMHg2OSwgMHhEQSwgMHg4NCwgMHhEMywgMHhDQywgMHhGRiwgMHg1NSwKKyAgICAweDU4LCAweDMwLCAweDQ1LCAweEZELCAweEJFLCAweEEyLCAweDI1LCAweEUxLCAweDY2LCAweEY5LCAweDcwLCAweEFFLCAweDFFLCAweEMzLCAweDNFLCAweEM2LAorICAgIDB4RjgsIDB4RjIsIDB4MEQsIDB4QTYsIDB4NDksIDB4MUYsIDB4NzMsIDB4ODIsIDB4QkUsIDB4NzQsIDB4OEMsIDB4M0IsIDB4RDcsIDB4RjEsIDB4REEsIDB4OTQsCisgICAgMHg0MSwgMHgyMCwgMHhENCwgMHg0NSwgMHhEOCwgMHhCNCwgMHg0NCwgMHg5NywgMHg4NSwgMHgxMiwgMHhFOSwgMHhCNCwgMHg0QSwgMHhERiwgMHhENCwgMHhFRCwKKyAgICAweEE1LCAweDdELCAweENELCAweDE1LCAweDA4LCAweEQyLCAweDdDLCAweDQ2LCAweEY0LCAweDM0LCAweDBDLCAweDBDLCAweDU2LCAweDRBLCAweEZBLCAweERCLAorICAgIDB4OEIsIDB4QzIsIDB4QjMsIDB4MEYsIDB4QjQsIDB4RUIsIDB4MjYsIDB4QjYsIDB4QTcsIDB4MEEsIDB4MEMsIDB4QjcsIDB4MTksIDB4MEEsIDB4MkMsIDB4MjcsCisgICAgMHhDOSwgMHgxQiwgMHg4MywgMHg0QiwgMHgzMiwgMHhBRSwgMHhCRSwgMHgxMSwgMHhBMywgMHhCQywgMHgzRCwgMHg5NCwgMHgyQiwgMHhDOCwgMHhDQiwgMHg1RCwKKyAgICAweDFGLCAweEE2LCAweDdDLCAweEI2LCAweDRDLCAweDVFLCAweENGLCAweEE0LCAweDUxLCAweDkwLCAweERCLCAweEUyLCAweEJBLCAweDRELCAweDE0LCAweDlELAorICAgIDB4MjIsIDB4MUUsIDB4ODIsIDB4MkUsIDB4MjgsIDB4QjksIDB4OTQsIDB4ODMsIDB4NDYsIDB4NjMsIDB4RDYsIDB4RUEsIDB4MTQsIDB4MDMsIDB4REUsIDB4NzQsCisgICAgMHgwOSwgMHhENCwgMHgyMSwgMHgwNywgMHhGQSwgMHhFQiwgMHgzNiwgMHhCNSwgMHg3NiwgMHg3RCwgMHg5OCwgMHhCQywgMHgzQSwgMHg5RSwgMHhENCwgMHhCMywKKyAgICAweDI0LCAweDM1LCAweDg3LCAweDBDLCAweDcwLCAweDA5LCAweDdDLCAweEU0LCAweDcwLCAweDQ2LCAweDZDLCAweDhDLCAweDE5LCAweEQwLCAweDQyLCAweEU5LAorICAgIDB4MjQsIDB4MkYsIDB4Q0EsIDB4MTYsIDB4QUQsIDB4MjEsIDB4RDEsIDB4MTYsIDB4REYsIDB4MDEsIDB4RUMsIDB4MjMsIDB4Q0EsIDB4RTMsIDB4ODEsIDB4RDIsCisgICAgMHg1MywgMHgyMCwgMHg3RSwgMHhBMSwgMHg5OSwgMHg4RSwgMHg4OCwgMHg1RCwgMHg3MywgMHhGOCwgMHhEOSwgMHgwRSwgMHgzNywgMHhCNCwgMHhGMywgMHhFOSwKKyAgICAweDY2LCAweDdCLCAweDJELCAweEEwLCAweDVCLCAweDRCLCAweDI4LCAweEU1LCAweEUzLCAweDZDLCAweEEyLCAweDgyLCAweDZDLCAweEE5LCAweEU3LCAweDFDLAorICAgIDB4RDMsIDB4MzMsIDB4MkMsIDB4QjQsIDB4N0QsIDB4OTUsIDB4RUEsIDB4OUYsIDB4MjAsIDB4RUYsIDB4MDIsIDB4MzgsIDB4MjYsIDB4M0MsIDB4NUYsIDB4MzksCisgICAgMHhCQiwgMHhGQSwgMHg3NSwgMHgxMCwgMHhCRSwgMHgwMCwgMHgxQSwgMHg0QiwgMHhFOCwgMHhCQywgMHgxQiwgMHhDRSwgMHgwMiwgMHg1OSwgMHg5NywgMHgzNiwKKyAgICAweEQ5LCAweEU5LCAweDAzLCAweDJCLCAweDFBLCAweDU0LCAweDM1LCAweDMxLCAweDlFLCAweDU5LCAweERFLCAweDQ2LCAweDU2LCAweDVELCAweEY2LCAweEI1LAorICAgIDB4OTEsIDB4QkMsIDB4NTIsIDB4QjYsIDB4QjUsIDB4OUEsIDB4RjYsIDB4OEIsIDB4NUIsIDB4RTQsIDB4N0QsIDB4NEYsIDB4RDYsIDB4NzQsIDB4MkEsIDB4N0QsCisgICAgMHhDMywgMHg4NSwgMHg1MCwgMHhGNCwgMHhDRCwgMHgzQSwgMHg4MSwgMHgzQywgMHgyQywgMHhBNSwgMHhGNSwgMHhBRiwgMHhFMiwgMHhBOSwgMHg5RiwgMHg5NywKKyAgICAweEU1LCAweDdCLCAweDY3LCAweDY0LCAweDQ2LCAweEQ0LCAweDdDLCAweDFBLCAweDQxLCAweEQ0LCAweDJELCAweDdDLCAweEUzLCAweEQ5LCAweEZBLCAweDJBLAorICAgIDB4REUsIDB4ODMsIDB4MTcsIDB4RUMsIDB4NzgsIDB4MDIsIDB4N0QsIDB4QUYsIDB4NEEsIDB4MDYsIDB4NTMsIDB4RTMsIDB4NDQsIDB4MEIsIDB4MDYsIDB4RUMsCisgICAgMHhENCwgMHhBNywgMHhBNSwgMHg4NywgMHgwOSwgMHgyMywgMHg0NCwgMHg3NiwgMHgzRCwgMHhENCwgMHhBNSwgMHhFRiwgMHg1QywgMHg3NSwgMHgzQSwgMHhGNywKKyAgICAweDk5LCAweEM4LCAweDIxLCAweDZBLCAweEZCLCAweEJGLCAweDBELCAweDA4LCAweEYwLCAweEVFLCAweEQ2LCAweDdFLCAweEY4LCAweDY3LCAweDAyLCAweDg3LAorICAgIDB4Q0EsIDB4OTQsIDB4MjcsIDB4NEQsIDB4MEMsIDB4NUYsIDB4QTEsIDB4OTQsIDB4QzksIDB4MUYsIDB4RTEsIDB4NEIsIDB4OTMsIDB4MkQsIDB4NDAsIDB4RTAsCisgICAgMHgyNSwgMHg1QSwgMHhEQiwgMHgyOCwgMHhCRSwgMHg3RiwgMHhGRCwgMHgwRCwgMHg2RCwgMHgyMiwgMHhGNCwgMHgzMSwgMHhFNSwgMHgxQywgMHg4NCwgMHg3MSwKKyAgICAweDA5LCAweDVGLCAweDFELCAweDc4LCAweEU5LCAweDY0LCAweEQ5LCAweEI5LCAweDgyLCAweDdELCAweEY1LCAweDlCLCAweDczLCAweDRGLCAweDc0LCAweDhCLAorICAgIDB4QTEsIDB4QjMsIDB4QzIsIDB4MDEsIDB4MzAsIDB4MUUsIDB4MjAsIDB4NzIsIDB4QjksIDB4QjgsIDB4OTIsIDB4MUEsIDB4RkUsIDB4MzQsIDB4RjgsIDB4NUYsCisgICAgMHg2OSwgMHhFQywgMHgwOSwgMHg0MSwgMHg1MCwgMHg3NywgMHg0NCwgMHhGOSwgMHg2OCwgMHhFNCwgMHhFQywgMHhDNywgMHhCNSwgMHhBMywgMHg0NSwgMHg2QiwKKyAgICAweDAzLCAweEM0LCAweEU4LCAweEEwLCAweDUzLCAweEYyLCAweDk0LCAweEI5LCAweDQ5LCAweEEwLCAweDZELCAweDExLCAweEJBLCAweDFDLCAweDg5LCAweDg3LAorICAgIDB4MDgsIDB4NzIsIDB4QzAsIDB4RTMsIDB4N0IsIDB4MEMsIDB4OEQsIDB4MTgsIDB4REQsIDB4QjAsIDB4M0IsIDB4MEUsIDB4QzIsIDB4MEUsIDB4QkIsIDB4NEIsCisgICAgMHg2MSwgMHgyMiwgMHg0OCwgMHg2NCwgMHg2OSwgMHg1NCwgMHhFOCwgMHgyOSwgMHg5NCwgMHg4NCwgMHhFNSwgMHhENywgMHgxQSwgMHg1RiwgMHg0QiwgMHhCQywKKyAgICAweEFELCAweDM1LCAweDgyLCAweEYxLCAweEZELCAweDQwLCAweDE0LCAweEFFLCAweEQwLCAweDI4LCAweDBFLCAweEU5LCAweEVFLCAweDJFLCAweDg4LCAweEZGLAorICAgIDB4RDEsIDB4QzksIDB4QzUsIDB4MzYsIDB4MzksIDB4RkIsIDB4OUYsIDB4QzksIDB4ODUsIDB4OTcsIDB4MkEsIDB4NTgsIDB4MDcsIDB4RDksIDB4NkUsIDB4NkUsCisgICAgMHg4MywgMHgwOSwgMHg2RCwgMHhDNiwgMHg5MiwgMHgxQywgMHhCRiwgMHg1MCwgMHhFMywgMHhDQiwgMHhBRCwgMHg1MCwgMHgzQywgMHhEQiwgMHhGOSwgMHhFMywKKyAgICAweDMyLCAweDUxLCAweDU4LCAweDIwLCAweEU2LCAweEQ4LCAweENBLCAweDUwLCAweEY3LCAweDUwLCAweDA1LCAweEFGLCAweEI2LCAweEY3LCAweEFCLCAweDNFLAorICAgIDB4NDgsIDB4QjcsIDB4QTQsIDB4QjEsIDB4NTIsIDB4MzIsIDB4MkEsIDB4RDYsIDB4QzIsIDB4NzgsIDB4NjIsIDB4MDUsIDB4MzQsIDB4OTYsIDB4NjEsIDB4RjEsCisgICAgMHgyMSwgMHgxNCwgMHg2OSwgMHg2RiwgMHgxMCwgMHg5NiwgMHhERCwgMHhFMiwgMHgxRCwgMHhFQiwgMHhFNSwgMHg0RiwgMHhBMCwgMHg2NywgMHhBOCwgMHg0NiwKKyAgICAweDUyLCAweEJELCAweDJGLCAweEE1LCAweDU5LCAweEY4LCAweENCLCAweEIyLCAweDUxLCAweDA5LCAweEQzLCAweDEzLCAweDlDLCAweDM3LCAweEQzLCAweDlCLAorICAgIDB4RDQsIDB4NUMsIDB4OEUsIDB4RjksIDB4RjIsIDB4RTQsIDB4QkYsIDB4NjksIDB4QTIsIDB4QjIsIDB4MDYsIDB4QzEsIDB4RjUsIDB4NjUsIDB4QjksIDB4MEEsCisgICAgMHhDNiwgMHg3MywgMHg3NywgMHhFRiwgMHg0RSwgMHg1MCwgMHgyRCwgMHgyQywgMHhFRSwgMHhGRiwgMHhFOSwgMHg2MSwgMHg4QSwgMHgwNywgMHhDOSwgMHg2NCwKKyAgICAweDQ4LCAweDI3LCAweDRCLCAweENFLCAweEUxLCAweDgwLCAweENDLCAweDE0LCAweDhGLCAweDQyLCAweDkyLCAweDRELCAweDZGLCAweDg3LCAweDQ4LCAweDkwLAorICAgIDB4MjksIDB4RjQsIDB4NEUsIDB4NzIsIDB4MkMsIDB4Q0MsIDB4MUEsIDB4REQsIDB4OTYsIDB4REEsIDB4RkUsIDB4RDcsIDB4Q0IsIDB4RUUsIDB4NkYsIDB4QTQsCisgICAgMHhBMCwgMHhDQiwgMHhFRSwgMHg3RiwgMHhCMywgMHgyMSwgMHg1NCwgMHhCQSwgMHg2RiwgMHhDOSwgMHg1MywgMHg2NiwgMHg3QiwgMHgzOCwgMHhFQywgMHhGNCwKKyAgICAweDVGLCAweEEwLCAweDk5LCAweDIzLCAweDVGLCAweDc5LCAweEQ3LCAweDA4LCAweENDLCAweDc0LCAweERBLCAweDAyLCAweEExLCAweEZDLCAweDAxLCAweEYwLAorICAgIDB4RjYsIDB4QTksIDB4OUMsIDB4QTUsIDB4ODUsIDB4QzYsIDB4N0UsIDB4RjYsIDB4MEYsIDB4NTMsIDB4MTEsIDB4OTEsIDB4OTIsIDB4NkQsIDB4NjAsIDB4QzcsCisgICAgMHg2MywgMHhENSwgMHgxQywgMHg4NCwgMHg3RSwgMHg5MSwgMHhEQSwgMHg5NywgMHg1QiwgMHhEOCwgMHgzRCwgMHhCRiwgMHg4MywgMHhDMywgMHg0MiwgMHhDMSwKKyAgICAweERCLCAweEI2LCAweEUzLCAweEZCLCAweDlGLCAweDQwLCAweDM2LCAweDZFLCAweEI5LCAweDhGLCAweDQ0LCAweEI4LCAweDczLCAweDJDLCAweDE0LCAweEJELAorICAgIDB4NkMsIDB4NUUsIDB4NzEsIDB4NzYsIDB4RDIsIDB4QjksIDB4QTIsIDB4MEIsIDB4RUMsIDB4RDQsIDB4OTcsIDB4OUEsIDB4MUYsIDB4Q0YsIDB4MEMsIDB4M0QsCisgICAgMHg1RiwgMHg0OSwgMHgyNCwgMHgwOCwgMHgzQywgMHhFQywgMHhDRSwgMHhBMywgMHgxNiwgMHhGQywgMHg3QiwgMHhEOSwgMHg5OCwgMHg3MywgMHhFRiwgMHg3NCwKKyAgICAweDc2LCAweDBFLCAweDUxLCAweDk0LCAweEJDLCAweDE4LCAweDcxLCAweEFCLCAweDQzLCAweEE4LCAweDI3LCAweEExLCAweDVELCAweDY5LCAweDIzLCAweEI1LAorICAgIDB4NUMsIDB4RkIsIDB4RkIsIDB4RDEsIDB4QkUsIDB4NTksIDB4OUMsIDB4MzUsIDB4MUIsIDB4NUQsIDB4NDksIDB4NTgsIDB4RUIsIDB4MDYsIDB4RkIsIDB4MEUsCisgICAgMHhGQywgMHgzQiwgMHg0QiwgMHg0NywgMHhGOSwgMHg4MCwgMHhEMiwgMHg1MCwgMHg5NywgMHhBMSwgMHhGQiwgMHgyRiwgMHgwRCwgMHg2NSwgMHg3QSwgMHgzMCwKKyAgICAweEEzLCAweDMzLCAweDA0LCAweDQ0LCAweDBCLCAweDRBLCAweDg4LCAweEVCLCAweDU5LCAweDFBLCAweEE1LCAweDk2LCAweDhDLCAweDA5LCAweDFFLCAweDI2LAorICAgIDB4NkEsIDB4ODksIDB4NzQsIDB4MEMsIDB4OTcsIDB4REUsIDB4NTEsIDB4MUMsIDB4NDksIDB4MTYsIDB4OTksIDB4REUsIDB4ODAsIDB4OTUsIDB4REEsIDB4MEIsCisgICAgMHhENiwgMHgwQiwgMHg4NSwgMHg4MywgMHgxMywgMHg3MCwgMHhDQywgMHg2MCwgMHhFMywgMHgyNCwgMHhEQSwgMHhCMSwgMHhFOSwgMHg4RSwgMHgyOSwgMHgwNCwKKyAgICAweDY4LCAweEU3LCAweDg1LCAweDBGLCAweDc4LCAweDlELCAweDY5LCAweDlBLCAweDNBLCAweEZDLCAweDFCLCAweDM0LCAweDY1LCAweDlELCAweDBELCAweDg0LAorICAgIDB4RjUsIDB4MjEsIDB4MzAsIDB4RjYsIDB4REYsIDB4NEUsIDB4QzUsIDB4RUIsIDB4OEMsIDB4OUEsIDB4NUYsIDB4MDAsIDB4REUsIDB4MTksIDB4MkIsIDB4MUYsCisgICAgMHg3QywgMHg4NiwgMHg3RCwgMHg0MywgMHhBMiwgMHg0MywgMHhDNSwgMHhBOSwgMHhERCwgMHg4NCwgMHgxOCwgMHg5MCwgMHhBQiwgMHg0QywgMHhEMywgMHgwQiwKKyAgICAweDAxLCAweEE2LCAweENDLCAweDA0LCAweDI0LCAweEYwLCAweDBDLCAweDNBLCAweDhCLCAweDIwLCAweDM2LCAweDFDLCAweEJGLCAweDQwLCAweDVFLCAweDFGLAorICAgIDB4NzAsIDB4N0QsIDB4NjksIDB4QUEsIDB4RjYsIDB4QTgsIDB4N0IsIDB4MEYsIDB4NTUsIDB4NEMsIDB4NjMsIDB4QjgsIDB4MjgsIDB4OEIsIDB4OUYsIDB4QjEsCisgICAgMHhGOSwgMHg4NCwgMHgyMCwgMHg3QywgMHhGRCwgMHg0MSwgMHg5NCwgMHhBQSwgMHg5MiwgMHhFMCwgMHg0RSwgMHg2NiwgMHg3QiwgMHg0RCwgMHhCRiwgMHg5NiwKKyAgICAweEEzLCAweEU5LCAweDlCLCAweEVDLCAweEQ1LCAweDc1LCAweDhCLCAweDA4LCAweDhBLCAweDFBLCAweEZGLCAweDBDLCAweEYzLCAweDlELCAweEZDLCAweDkyLAorICAgIDB4NjEsIDB4MTksIDB4NDEsIDB4NUEsIDB4NTIsIDB4NUUsIDB4QzIsIDB4OTEsIDB4RkUsIDB4RDgsIDB4OEYsIDB4RjIsIDB4RDYsIDB4MEIsIDB4NzMsIDB4NEIsCisgICAgMHgxRiwgMHg2MywgMHgzMCwgMHhDNSwgMHg4RSwgMHg4NSwgMHg4QywgMHhFMiwgMHhFQSwgMHhFMSwgMHhEQywgMHhCQywgMHhEQSwgMHhGNywgMHhBMSwgMHhCQSwKKyAgICAweDNGLCAweENDLCAweEQ3LCAweEFDLCAweEY4LCAweEFELCAweEI4LCAweDUzLCAweDgyLCAweDNCLCAweEQzLCAweDY5LCAweEMxLCAweERELCAweEI3LCAweEQ1LAorICAgIDB4ODksIDB4ODksIDB4NTAsIDB4RjcsIDB4NzMsIDB4NTYsIDB4QTcsIDB4QzUsIDB4MDUsIDB4QjUsIDB4RUUsIDB4RTYsIDB4NEEsIDB4MjIsIDB4RjgsIDB4MzMsCisgICAgMHhFQiwgMHhFRCwgMHhGMiwgMHhERSwgMHg3MywgMHgwMiwgMHg5NSwgMHgzQywgMHgwRSwgMHg0RSwgMHg1QiwgMHgwQiwgMHhFNywgMHg2QywgMHhGNywgMHhFMSwKKyAgICAweEY4LCAweDY3LCAweDhBLCAweERGLCAweDQxLCAweDNGLCAweENDLCAweDVFLCAweDBDLCAweEQ2LCAweDZFLCAweDk2LCAweEJGLCAweDk1LCAweDcxLCAweDRDLAorICAgIDB4NzksIDB4N0MsIDB4M0IsIDB4ODgsIDB4NDYsIDB4NzMsIDB4OTYsIDB4QTIsIDB4REEsIDB4NkMsIDB4NzEsIDB4RUMsIDB4NTQsIDB4MTQsIDB4NzksIDB4MUUsCisgICAgMHg0NywgMHhGOCwgMHg5NCwgMHg2MywgMHgyOCwgMHg0QSwgMHhGQiwgMHhCQiwgMHg4MiwgMHg2NiwgMHg5MSwgMHg5OSwgMHgwRSwgMHhCRSwgMHhCQiwgMHgzMywKKyAgICAweDRELCAweDU1LCAweEUyLCAweDA4LCAweENBLCAweEU3LCAweDUyLCAweDRBLCAweEVELCAweDY0LCAweEZGLCAweERELCAweEY3LCAweEY5LCAweEVBLCAweDdELAorICAgIDB4RDAsIDB4QkQsIDB4QjksIDB4QUMsIDB4NjIsIDB4M0IsIDB4QkMsIDB4QzYsIDB4NDcsIDB4RUYsIDB4RUMsIDB4QTAsIDB4NkQsIDB4N0QsIDB4MEYsIDB4RDgsCisgICAgMHhDNiwgMHgxMCwgMHg5MCwgMHgyOSwgMHhDQiwgMHhGMywgMHhBMSwgMHhDMiwgMHgyQiwgMHgxRCwgMHhERCwgMHg0MywgMHg2QSwgMHg0OSwgMHhDQiwgMHgxRiwKKyAgICAweDhDLCAweDI5LCAweEM0LCAweDRBLCAweEFCLCAweENCLCAweEQzLCAweDg5LCAweEY2LCAweDI0LCAweDczLCAweEEzLCAweEEwLCAweDVDLCAweDlFLCAweEUyLAorICAgIDB4OTMsIDB4MkMsIDB4MTgsIDB4NkEsIDB4QTEsIDB4MDcsIDB4NUEsIDB4NzcsIDB4QUEsIDB4MjYsIDB4MzgsIDB4MkMsIDB4RjAsIDB4QTksIDB4RkMsIDB4NkMsCisgICAgMHg5NCwgMHhCRSwgMHhBRiwgMHgyMCwgMHhDQSwgMHg4QiwgMHhCMSwgMHg3QiwgMHg5QSwgMHgzQSwgMHhCRCwgMHgwQiwgMHhGNSwgMHgwMywgMHg3MywgMHg2RCwKKyAgICAweDZGLCAweDE1LCAweEIxLCAweDhGLCAweDg1LCAweERFLCAweDI0LCAweDQ3LCAweDk0LCAweDFCLCAweDk0LCAweDI1LCAweEE1LCAweDg1LCAweDMxLCAweDMzLAorICAgIDB4NzUsIDB4QTksIDB4MEUsIDB4MTYsIDB4OTAsIDB4MTIsIDB4OTEsIDB4NzIsIDB4MEYsIDB4MUUsIDB4NDcsIDB4N0IsIDB4NDIsIDB4QjQsIDB4OTksIDB4OUUsCisgICAgMHhEQSwgMHhEOCwgMHhEOSwgMHhCNCwgMHgyQywgMHhBNCwgMHgwNiwgMHgwNSwgMHgyRiwgMHg4MywgMHhGNiwgMHhFNywgMHg2RCwgMHg3QSwgMHg5RSwgMHg0MCwKKyAgICAweENFLCAweDkxLCAweDM3LCAweDZDLCAweDJBLCAweDkwLCAweDg3LCAweDVELCAweDNFLCAweEFBLCAweERCLCAweDQ1LCAweDU1LCAweEVDLCAweDc5LCAweDAzLAorICAgIDB4MDMsIDB4MjIsIDB4M0IsIDB4NjEsIDB4NzMsIDB4QkQsIDB4NTMsIDB4RjMsIDB4NUEsIDB4OUIsIDB4RDQsIDB4QjQsIDB4MEUsIDB4MkMsIDB4NjgsIDB4NUYsCisgICAgMHg1RCwgMHgxQiwgMHhDQywgMHhENiwgMHgxMSwgMHg3QiwgMHhBMCwgMHg0QSwgMHhCNiwgMHhEMCwgMHg1NiwgMHhEMCwgMHgyNiwgMHhDMSwgMHhGRSwgMHgzQiwKKyAgICAweDA1LCAweDIwLCAweDA1LCAweEMwLCAweEJBLCAweEY0LCAweEI3LCAweDJCLCAweDU1LCAweEU3LCAweDY5LCAweDY3LCAweEIyLCAweDdBLCAweEI1LCAweDU5LAorICAgIDB4NzgsIDB4QjQsIDB4M0UsIDB4ODAsIDB4MDgsIDB4MjAsIDB4RDgsIDB4NzUsIDB4MjgsIDB4RjEsIDB4MjEsIDB4RkUsIDB4QTMsIDB4ODYsIDB4RDEsIDB4MjEsCisgICAgMHg3NiwgMHgxRiwgMHhBNiwgMHg5NSwgMHg2MCwgMHhBNywgMHg1RSwgMHhCNSwgMHg2OCwgMHgyNSwgMHhCNywgMHgwMiwgMHg1NiwgMHhEQSwgMHhGOCwgMHg2RCwKKyAgICAweEUzLCAweDc5LCAweDMxLCAweDYzLCAweDc2LCAweEM0LCAweDlCLCAweDE2LCAweDA4LCAweENBLCAweEE4LCAweEJBLCAweEEwLCAweDVBLCAweDlBLCAweDc2LAorICAgIDB4M0QsIDB4MDksIDB4ODAsIDB4NTQsIDB4ODksIDB4NTAsIDB4RkMsIDB4NEYsIDB4MDQsIDB4NTIsIDB4MkMsIDB4QUIsIDB4MDEsIDB4M0IsIDB4NTIsIDB4QTcsCisgICAgMHg3RSwgMHg0RiwgMHgwQywgMHgwOCwgMHhFMiwgMHgxOCwgMHg2RiwgMHhDNiwgMHhERiwgMHg3NywgMHgwOSwgMHhFNCwgMHgyMSwgMHg1RSwgMHhENywgMHhFMiwKKyAgICAweDRBLCAweDE1LCAweDFDLCAweEI1LCAweEZELCAweDZGLCAweDRELCAweEM2LCAweEM4LCAweDk3LCAweDI2LCAweDlGLCAweDdDLCAweDk3LCAweEU4LCAweDA1LAorICAgIDB4NEMsIDB4ODksIDB4QzMsIDB4QTYsIDB4ODksIDB4MzgsIDB4MTEsIDB4QUIsIDB4RUMsIDB4N0UsIDB4RjQsIDB4NEMsIDB4RTEsIDB4M0EsIDB4MzcsIDB4MjQsCisgICAgMHg1NywgMHhEOSwgMHg5MywgMHhDRSwgMHg5RSwgMHhDOCwgMHgyMiwgMHg3OCwgMHhCQiwgMHhEQiwgMHgzNSwgMHg5OSwgMHhGQiwgMHg4MiwgMHhGNCwgMHg1NiwKKyAgICAweDNCLCAweDRCLCAweDcyLCAweEUzLCAweEYxLCAweDQ4LCAweEYzLCAweEZFLCAweDRCLCAweDA4LCAweEFCLCAweDMzLCAweEY3LCAweDMwLCAweDU3LCAweEIxLAorICAgIDB4OUUsIDB4RjAsIDB4RTEsIDB4Q0QsIDB4MTEsIDB4N0QsIDB4RDIsIDB4MUIsIDB4MzMsIDB4RTgsIDB4MjIsIDB4RjIsIDB4QTQsIDB4OTAsIDB4QjcsIDB4RDEsCisgICAgMHhGQSwgMHhBOSwgMHhCMywgMHgyMywgMHgwRiwgMHgwRiwgMHhGNCwgMHg1NiwgMHg5QywgMHgxNSwgMHgzMSwgMHg1OSwgMHgyQywgMHg2RiwgMHhFNCwgMHhENiwKKyAgICAweDNBLCAweEI0LCAweDA2LCAweENGLCAweDgwLCAweERELCAweEFFLCAweDZGLCAweDlCLCAweDU0LCAweDc0LCAweDMxLCAweDY2LCAweEY1LCAweDFGLCAweDQxLAorICAgIDB4MEIsIDB4NEIsIDB4MTksIDB4MTEsIDB4QTcsIDB4N0IsIDB4NTgsIDB4MjksIDB4OTYsIDB4ODMsIDB4NDQsIDB4NTQsIDB4NjMsIDB4QUYsIDB4MDksIDB4NkIsCisgICAgMHhBNCwgMHhGRSwgMHgwMywgMHhDQywgMHhBOCwgMHhDQSwgMHg0QSwgMHhEQywgMHhEOSwgMHg5NSwgMHg1NiwgMHhFQiwgMHgyRSwgMHg3OSwgMHg3QywgMHhDRSwKKyAgICAweERDLCAweDE0LCAweDI2LCAweEY1LCAweDk0LCAweDlELCAweDlELCAweEQxLCAweDk1LCAweDA5LCAweDhCLCAweDJFLCAweDIxLCAweEEwLCAweDk2LCAweEM1LAorICAgIDB4NEUsIDB4MDksIDB4QTAsIDB4MzUsIDB4OTIsIDB4QUEsIDB4OTUsIDB4M0MsIDB4MzAsIDB4RTcsIDB4QzcsIDB4NkEsIDB4N0IsIDB4QjEsIDB4NjIsIDB4MDEsCisgICAgMHg3RCwgMHg2MiwgMHg3OCwgMHg3NywgMHg2MiwgMHhFNiwgMHgwOCwgMHg2MywgMHg3NywgMHg1RSwgMHhFMSwgMHgwQSwgMHhGRCwgMHhCNSwgMHgwOCwgMHhFMSwKKyAgICAweEVELCAweDc5LCAweDI3LCAweEQ5LCAweEI4LCAweDFELCAweEI2LCAweEJBLCAweDNELCAweDZDLCAweEEwLCAweEI1LCAweEE2LCAweEUxLCAweDkyLCAweDE4LAorICAgIDB4MTUsIDB4QzksIDB4MjUsIDB4MjUsIDB4RjYsIDB4MjEsIDB4N0EsIDB4NEUsIDB4MkUsIDB4MTgsIDB4MDgsIDB4OEQsIDB4NTQsIDB4NzksIDB4MzUsIDB4RUQsCisgICAgMHg3NiwgMHgyRiwgMHgzOSwgMHhCMSwgMHgzOCwgMHgzOCwgMHg5RiwgMHhCNiwgMHhGNCwgMHgyRCwgMHhCRiwgMHg1NSwgMHg2NCwgMHgzRiwgMHhFQiwgMHg0OSwKKyAgICAweDE3LCAweDVELCAweEVDLCAweDA3LCAweEMxLCAweDA4LCAweDRFLCAweDc1LCAweEU3LCAweEU4LCAweEY3LCAweEEzLCAweEI1LCAweDYzLCAweDAxLCAweDI3LAorICAgIDB4Q0YsIDB4RjUsIDB4MzksIDB4REQsIDB4NjUsIDB4MzgsIDB4NEMsIDB4RDQsIDB4RTMsIDB4QUEsIDB4QUQsIDB4NTUsIDB4RDMsIDB4M0MsIDB4NkUsIDB4QzQsCisgICAgMHg5OSwgMHgwOSwgMHgzRSwgMHhEMSwgMHhBNSwgMHgwQiwgMHhFRiwgMHhGMiwgMHgwOCwgMHhBMSwgMHhCRSwgMHhEOCwgMHhFMCwgMHg3QywgMHg1OCwgMHhCOSwKKyAgICAweDlFLCAweDJFLCAweDk1LCAweDRBLCAweEFBLCAweDFELCAweEVFLCAweEUzLCAweDJGLCAweDZBLCAweEUyLCAweDk0LCAweDcwLCAweEM0LCAweDFDLCAweDA3LAorICAgIDB4Q0MsIDB4NzYsIDB4RTAsIDB4NDAsIDB4RUEsIDB4NkQsIDB4QjQsIDB4ODMsIDB4QTAsIDB4NkEsIDB4OTcsIDB4NzYsIDB4ODQsIDB4MTEsIDB4NDAsIDB4OUYsCisgICAgMHhDQSwgMHgxOCwgMHgwMCwgMHg2RiwgMHg3RCwgMHgwNywgMHhCRSwgMHhDOSwgMHhGQywgMHgyRCwgMHhENywgMHhBRiwgMHg2MCwgMHg3NiwgMHhDOSwgMHhEOCwKKyAgICAweDI4LCAweEMyLCAweEM4LCAweEE4LCAweEQ3LCAweDYwLCAweDkwLCAweDY0LCAweDZDLCAweEVELCAweEVFLCAweEZELCAweDJDLCAweEQxLCAweDNGLCAweDM1LAorICAgIDB4RDQsIDB4Q0IsIDB4QTAsIDB4MzQsIDB4QUEsIDB4QjAsIDB4M0EsIDB4OTEsIDB4MDcsIDB4MUIsIDB4RDQsIDB4QjUsIDB4MzMsIDB4RDIsIDB4RDMsIDB4OUQsCisgICAgMHgwOCwgMHhDRCwgMHg0NSwgMHgwMSwgMHg4MywgMHgwNCwgMHhCMSwgMHhFNywgMHgwQywgMHgxQSwgMHg1NywgMHg5RiwgMHhCQiwgMHhFRCwgMHgzNywgMHg0NiwKKyAgICAweEIxLCAweDE2LCAweDg3LCAweDNDLCAweDIwLCAweERFLCAweDYzLCAweDEwLCAweEFGLCAweDJELCAweDc3LCAweDcxLCAweDU2LCAweEVGLCAweDdDLCAweDE0LAorICAgIDB4RDAsIDB4RTMsIDB4MUUsIDB4RkIsIDB4MUYsIDB4NzcsIDB4MTgsIDB4MUUsIDB4QTgsIDB4RDMsIDB4NDAsIDB4QTcsIDB4RDcsIDB4MUYsIDB4MzYsIDB4N0QsCisgICAgMHg4NywgMHgxQywgMHg0MiwgMHhGNiwgMHgyRiwgMHg1MSwgMHhBRiwgMHg2OSwgMHgyQywgMHhDRiwgMHg3OSwgMHgxMSwgMHhEMSwgMHgxNywgMHg0NywgMHhEMywKKyAgICAweDQ0LCAweDg2LCAweDlELCAweDJCLCAweDQ0LCAweEEzLCAweDc0LCAweDFDLCAweDgzLCAweDc1LCAweEFCLCAweEQxLCAweEE1LCAweEZFLCAweDE0LCAweDBBLAorICAgIDB4NDEsIDB4NzYsIDB4ODksIDB4MUIsIDB4MDgsIDB4NEYsIDB4MjksIDB4MzAsIDB4ODIsIDB4RDEsIDB4RkUsIDB4RDYsIDB4MEIsIDB4NzEsIDB4Q0QsIDB4MkMsCisgICAgMHg4RSwgMHgzMSwgMHg2OSwgMHhBRiwgMHhEOCwgMHg2NywgMHhBNiwgMHgxQSwgMHg4RSwgMHgyQSwgMHhENCwgMHhGMSwgMHg4MywgMHhDMywgMHhFQywgMHgwOCwKKyAgICAweDc2LCAweDI3LCAweEEzLCAweEI1LCAweEY2LCAweDdCLCAweEMyLCAweDZGLCAweEVBLCAweEQwLCAweDUyLCAweDZDLCAweDZFLCAweDJGLCAweDE4LCAweEJCLAorICAgIDB4MjMsIDB4MTAsIDB4M0UsIDB4N0YsIDB4MzcsIDB4OTAsIDB4ODksIDB4N0UsIDB4RjQsIDB4QkEsIDB4NDcsIDB4MDksIDB4Q0UsIDB4ODAsIDB4MzQsIDB4NUQsCisgICAgMHgyMCwgMHg4NywgMHgxRiwgMHg3NiwgMHgzMCwgMHhCRiwgMHhDMywgMHhGQywgMHgzQywgMHhCMywgMHg4OCwgMHg4OSwgMHhDOSwgMHgzRCwgMHhBNCwgMHhGNCwKKyAgICAweENFLCAweDdFLCAweDkzLCAweEE2LCAweDg4LCAweEZBLCAweEFDLCAweDMyLCAweDY0LCAweDE5LCAweDc2LCAweEU3LCAweEUwLCAweEFFLCAweDRCLCAweDRGLAorICAgIDB4QzMsIDB4QUMsIDB4ODIsIDB4RDksIDB4REIsIDB4M0QsIDB4QkUsIDB4M0UsIDB4NTgsIDB4NEIsIDB4QkYsIDB4RDAsIDB4MTcsIDB4NDMsIDB4RUMsIDB4MTcsCisgICAgMHhFQSwgMHhGQSwgMHhBOSwgMHg2RiwgMHg5QSwgMHgzMywgMHhDMiwgMHhCOSwgMHhEQywgMHhGRiwgMHg4MCwgMHgxNCwgMHg5RCwgMHhENiwgMHhBMSwgMHg0MSwKKyAgICAweDdGLCAweEZFLCAweDA4LCAweDU3LCAweDIxLCAweEQ2LCAweEVCLCAweEVELCAweEVGLCAweEEyLCAweEFELCAweDVELCAweDlFLCAweEM1LCAweDMxLCAweEM2LAorICAgIDB4QkUsIDB4NzMsIDB4QjksIDB4N0QsIDB4NTgsIDB4MTIsIDB4MjgsIDB4MzUsIDB4MEEsIDB4QjcsIDB4NTYsIDB4OUEsIDB4MjMsIDB4NjEsIDB4MEIsIDB4M0IsCisgICAgMHg4RCwgMHgyMCwgMHgzNSwgMHhDNywgMHhCRiwgMHhCMSwgMHhDRSwgMHgzMywgMHgyOCwgMHhFQywgMHgyRiwgMHg3MSwgMHg0OSwgMHhFMSwgMHg5MCwgMHgzNiwKKyAgICAweDUzLCAweDlELCAweDE5LCAweEIxLCAweEJCLCAweEZGLCAweEY0LCAweDUwLCAweDg5LCAweEU4LCAweDY5LCAweDg4LCAweEFGLCAweEI2LCAweDU4LCAweDQ2LAorICAgIDB4REYsIDB4NzMsIDB4RUMsIDB4NUIsIDB4ODIsIDB4QTYsIDB4REMsIDB4MTgsIDB4NzEsIDB4ODEsIDB4RTMsIDB4MDMsIDB4MjUsIDB4NzEsIDB4MEUsIDB4MEIsCisgICAgMHhCNSwgMHg2MywgMHg2NywgMHgxQSwgMHhEMSwgMHgxMywgMHgwQSwgMHhFNSwgMHhGRiwgMHg0QiwgMHg5NywgMHhFQSwgMHhCQiwgMHg3NSwgMHhENywgMHgzMSwKKyAgICAweENELCAweDRCLCAweDA2LCAweEJELCAweDZFLCAweEIxLCAweEExLCAweEQ5LCAweDMwLCAweDUyLCAweDhGLCAweEY0LCAweDRDLCAweDUxLCAweDE2LCAweDcyLAorICAgIDB4NzMsIDB4ODEsIDB4NDgsIDB4ODgsIDB4M0YsIDB4OUIsIDB4ODAsIDB4NDAsIDB4REQsIDB4RTcsIDB4QTQsIDB4OTgsIDB4QzMsIDB4QjYsIDB4N0EsIDB4RjksCisgICAgMHg5MSwgMHhBMSwgMHhCMSwgMHhCQiwgMHgxRCwgMHgxNiwgMHgzRCwgMHgxMywgMHhGOSwgMHg3RCwgMHhEOSwgMHgzMSwgMHhFNiwgMHgxOSwgMHg4MywgMHhDRiwKKyAgICAweEE2LCAweDU5LCAweEM5LCAweDhGLCAweEY3LCAweDFFLCAweEEzLCAweDlDLCAweDJCLCAweDY1LCAweDlELCAweDIxLCAweDVCLCAweDdDLCAweEE0LCAweDRELAorICAgIDB4MDcsIDB4MjQsIDB4OTksIDB4QTIsIDB4NTEsIDB4REYsIDB4NEQsIDB4NUYsIDB4QjYsIDB4QjAsIDB4MTcsIDB4QUEsIDB4RUYsIDB4MTYsIDB4QUIsIDB4NDUsCisgICAgMHhBQSwgMHhEMiwgMHhBMCwgMHhCQywgMHgwOSwgMHgxQiwgMHg5QSwgMHgzQywgMHgyNywgMHg4NiwgMHhFMCwgMHhBRCwgMHg5RSwgMHhFNCwgMHg0RCwgMHg3MywKKyAgICAweDA5LCAweDg4LCAweENDLCAweDU1LCAweDJBLCAweDhBLCAweDMzLCAweDI5LCAweDg0LCAweEQxLCAweDhELCAweEY2LCAweEU2LCAweERGLCAweDI3LCAweDcwLAorICAgIDB4QTAsIDB4RDYsIDB4NUIsIDB4MzEsIDB4RUUsIDB4N0UsIDB4N0EsIDB4MzEsIDB4ODcsIDB4RjIsIDB4Q0MsIDB4NEMsIDB4QkUsIDB4NjMsIDB4QzEsIDB4NDEsCisgICAgMHhDNiwgMHgzOSwgMHhGQSwgMHgzQiwgMHg5QSwgMHg2MCwgMHgwNSwgMHgyOSwgMHhERiwgMHg5MSwgMHg5RSwgMHgzQiwgMHg3QiwgMHhEQiwgMHg4RiwgMHg2RSwKKyAgICAweEZCLCAweDBGLCAweEYxLCAweDIwLCAweEM3LCAweDA4LCAweDQ3LCAweDJBLCAweDE0LCAweEI0LCAweDdDLCAweDkzLCAweEVCLCAweDYzLCAweEUzLCAweDAzLAorICAgIDB4QzcsIDB4NEQsIDB4OUYsIDB4N0QsIDB4MjksIDB4N0YsIDB4QzMsIDB4MDMsIDB4NDQsIDB4ODksIDB4MjIsIDB4OEQsIDB4MkQsIDB4RjEsIDB4ODYsIDB4Q0IsCisgICAgMHgyOCwgMHhCRSwgMHgzOSwgMHhBQywgMHgxNiwgMHhCQiwgMHg3MywgMHhCMiwgMHg0NCwgMHhDNiwgMHhBNSwgMHg2MywgMHgwNiwgMHhFMiwgMHhFRCwgMHg3NiwKKyAgICAweDk1LCAweDczLCAweDAyLCAweENFLCAweDZBLCAweDdFLCAweDU1LCAweDJELCAweDJBLCAweDFELCAweDc4LCAweDMwLCAweDNCLCAweDBBLCAweEFCLCAweDNBLAorICAgIDB4REIsIDB4MjEsIDB4RDgsIDB4NkQsIDB4QTQsIDB4QkUsIDB4QUQsIDB4MDcsIDB4RDEsIDB4MDgsIDB4QUMsIDB4MjYsIDB4QkMsIDB4NEYsIDB4NTAsIDB4MzEsCisgICAgMHhBMiwgMHhEQSwgMHgxOCwgMHg3NSwgMHhBMiwgMHhFOSwgMHgxRCwgMHg5MywgMHhCNiwgMHgzNCwgMHgwMSwgMHhBNSwgMHhFOSwgMHhCRSwgMHg5NCwgMHg3QiwKKyAgICAweDMzLCAweDYxLCAweDdDLCAweDcxLCAweEUzLCAweDcyLCAweDc4LCAweDQ1LCAweDNELCAweDJBLCAweDdBLCAweDg3LCAweDVCLCAweDhELCAweDRFLCAweEY4LAorICAgIDB4NzksIDB4MDEsIDB4RjYsIDB4NDksIDB4NUIsIDB4OUIsIDB4QkQsIDB4QjgsIDB4QzgsIDB4QUUsIDB4QkQsIDB4QzIsIDB4NUQsIDB4MTQsIDB4OEIsIDB4NTEsCisgICAgMHg0RiwgMHg4NiwgMHg1NiwgMHhCMiwgMHhEOCwgMHhGNSwgMHg1QywgMHgwRiwgMHgzOCwgMHhEQywgMHgzMCwgMHgxNSwgMHgyQiwgMHg2QSwgMHgxNSwgMHg5OCwKKyAgICAweDA4LCAweDIzLCAweDVBLCAweEVBLCAweDFFLCAweENBLCAweEM3LCAweEFDLCAweDc0LCAweDI2LCAweEQwLCAweDdDLCAweEM2LCAweDc1LCAweDFBLCAweDY3LAorICAgIDB4MUUsIDB4RDMsIDB4RDMsIDB4MjYsIDB4OUYsIDB4ODIsIDB4MkUsIDB4OTAsIDB4NUQsIDB4NTAsIDB4RDEsIDB4NEYsIDB4MkIsIDB4NzksIDB4NUMsIDB4Q0UsCisgICAgMHg0QSwgMHg4RiwgMHg5RiwgMHhCQiwgMHg2MCwgMHhENCwgMHgyMSwgMHg5MiwgMHg2MywgMHgzRSwgMHhCQywgMHg3NywgMHg1NywgMHgwRSwgMHhDMCwgMHg1NiwKKyAgICAweDYyLCAweDZGLCAweDQ3LCAweDc1LCAweDg4LCAweEYwLCAweDg3LCAweEEzLCAweENDLCAweDFGLCAweDEyLCAweENDLCAweEEyLCAweDBCLCAweDc0LCAweDE5LAorICAgIDB4RUUsIDB4RDYsIDB4MkYsIDB4NUMsIDB4MzQsIDB4MDYsIDB4NTAsIDB4N0QsIDB4QkIsIDB4QjYsIDB4MjEsIDB4REIsIDB4QjQsIDB4QjEsIDB4OEMsIDB4ODgsCisgICAgMHg0MiwgMHg4RSwgMHgzQiwgMHhCRiwgMHg4OSwgMHg1RiwgMHg4OSwgMHg3NywgMHg1QSwgMHg0NiwgMHhFNCwgMHgwMiwgMHhFNCwgMHg0OCwgMHhCQiwgMHhBOSwKKyAgICAweDNGLCAweDA5LCAweEFBLCAweDFGLCAweDYyLCAweDk4LCAweEY4LCAweEU2LCAweENELCAweDYyLCAweENCLCAweEY3LCAweEQwLCAweDFELCAweEE0LCAweDdBLAorICAgIDB4MTgsIDB4MEEsIDB4MEQsIDB4NDQsIDB4NkMsIDB4MTQsIDB4REIsIDB4OTcsIDB4OTQsIDB4Q0EsIDB4OTgsIDB4N0YsIDB4NjAsIDB4MzYsIDB4MUUsIDB4MTMsCisgICAgMHg1MiwgMHhFOCwgMHg3RiwgMHgxOCwgMHhFRSwgMHg5OSwgMHhGQSwgMHhDQiwgMHgyMywgMHg1RCwgMHhCMSwgMHgyQiwgMHhBMSwgMHhGRSwgMHhENiwgMHhCMCwKKyAgICAweDc3LCAweDEzLCAweEU0LCAweDU1LCAweENDLCAweDU2LCAweEZBLCAweDhFLCAweDI5LCAweDI1LCAweEE5LCAweERGLCAweDgxLCAweDU4LCAweEVFLCAweEI2LAorICAgIDB4M0IsIDB4QzIsIDB4MjksIDB4QjQsIDB4MUUsIDB4NzIsIDB4Q0EsIDB4NTUsIDB4RDMsIDB4N0IsIDB4QTYsIDB4REQsIDB4NDgsIDB4OTYsIDB4M0IsIDB4NzYsCisgICAgMHgzQSwgMHg0MSwgMHhGMywgMHgyQSwgMHg5NCwgMHgxMywgMHhGMywgMHg1MSwgMHhDMywgMHgwMCwgMHgwOSwgMHg0RiwgMHg4OCwgMHhCQSwgMHgyNCwgMHhEMSwKKyAgICAweDE0LCAweDEyLCAweDE0LCAweDJELCAweEMxLCAweEFCLCAweDNCLCAweDIxLCAweDU0LCAweDhCLCAweDRDLCAweERDLCAweDE3LCAweDA4LCAweDFFLCAweEU4LAorICAgIDB4ODMsIDB4NEEsIDB4M0UsIDB4MjUsIDB4MEUsIDB4N0IsIDB4QkMsIDB4RDUsIDB4QzcsIDB4Q0EsIDB4MTMsIDB4MzEsIDB4MUIsIDB4RDgsIDB4OEYsIDB4RTIsCisgICAgMHg0QSwgMHgyMywgMHgyNCwgMHhBOSwgMHg2OSwgMHhGNCwgMHg4RSwgMHg2NSwgMHhCMiwgMHhFRiwgMHhBMSwgMHg4MywgMHhGRiwgMHhCRiwgMHgwMSwgMHhFNywKKyAgICAweDhCLCAweEZDLCAweEQxLCAweDkyLCAweDkxLCAweENGLCAweDNELCAweEI3LCAweDQ5LCAweDNCLCAweEY1LCAweDgxLCAweDU0LCAweEIxLCAweEZGLCAweEI2LAorICAgIDB4RDksIDB4MkMsIDB4MzEsIDB4QTEsIDB4QzAsIDB4OEYsIDB4NTYsIDB4NTQsIDB4NTIsIDB4NUIsIDB4N0QsIDB4ODAsIDB4NjEsIDB4NDQsIDB4NDQsIDB4OEMsCisgICAgMHhDNCwgMHhGQSwgMHg4RSwgMHg1OSwgMHhERSwgMHhBMSwgMHhDNSwgMHhGQiwgMHhGNywgMHg0MCwgMHhFNywgMHhENiwgMHgwNiwgMHg1NSwgMHhDMywgMHgxOSwKKyAgICAweDczLCAweDIxLCAweEZELCAweDg2LCAweDhDLCAweDY4LCAweDFCLCAweDM3LCAweDdBLCAweEM5LCAweEM0LCAweDcwLCAweDA3LCAweDM4LCAweDE1LCAweDAzLAorICAgIDB4QTcsIDB4MkEsIDB4QkQsIDB4MzcsIDB4OEEsIDB4RDAsIDB4NjMsIDB4MTMsIDB4NjYsIDB4RUEsIDB4OUQsIDB4NjUsIDB4NjcsIDB4ODcsIDB4NzgsIDB4RTgsCisgICAgMHhEMiwgMHg3RSwgMHhEQiwgMHg5MCwgMHhBMiwgMHhBQywgMHg5RiwgMHhBQywgMHg3QSwgMHg4MSwgMHhGMSwgMHg1RiwgMHg0QywgMHg2QywgMHg1MywgMHgwQywKKyAgICAweEQ1LCAweDlFLCAweDY0LCAweDFELCAweEQxLCAweDg1LCAweDVELCAweDY1LCAweDU0LCAweDlDLCAweEU1LCAweDIwLCAweEY3LCAweEU1LCAweDlDLCAweDAzLAorICAgIDB4MjksIDB4NzEsIDB4OUEsIDB4RTQsIDB4QzcsIDB4RDEsIDB4OTEsIDB4MDcsIDB4NjYsIDB4NjAsIDB4ODksIDB4MzcsIDB4RjksIDB4M0YsIDB4NTgsIDB4N0QsCisgICAgMHgwNywgMHgwNiwgMHhDQywgMHhFRSwgMHgwNSwgMHg0OSwgMHhFQSwgMHg1MCwgMHhENywgMHg0QSwgMHg3NiwgMHg2MywgMHgxNiwgMHg2NiwgMHhFMywgMHgxRCwKKyAgICAweERDLCAweENBLCAweDNCLCAweDBCLCAweDg5LCAweDRDLCAweEY4LCAweDA0LCAweEQyLCAweDUwLCAweDYyLCAweDJDLCAweDFCLCAweDdFLCAweDYyLCAweDhCLAorICAgIDB4N0IsIDB4NTUsIDB4NjgsIDB4M0YsIDB4QUMsIDB4RDAsIDB4NUUsIDB4QjQsIDB4RjgsIDB4MjUsIDB4RTUsIDB4RUEsIDB4NDAsIDB4QTQsIDB4MDYsIDB4N0IsCisgICAgMHhBMywgMHhDNiwgMHg4QiwgMHhFMSwgMHg0QSwgMHg4MywgMHg0QiwgMHhDQywgMHg5QywgMHhEQSwgMHg3QywgMHg5RiwgMHhGNiwgMHhFNywgMHg3QSwgMHhDMiwKKyAgICAweERELCAweDlFLCAweDJGLCAweEI0LCAweDNBLCAweDA3LCAweEJBLCAweDQ3LCAweDgzLCAweDQzLCAweDc5LCAweEJFLCAweDY5LCAweDE5LCAweDAyLCAweDQ4LAorICAgIDB4MDMsIDB4MjIsIDB4MTAsIDB4QUUsIDB4OTksIDB4ODAsIDB4RUUsIDB4QjAsIDB4REUsIDB4QkEsIDB4QzEsIDB4NTEsIDB4NEIsIDB4RjQsIDB4MkUsIDB4NjEsCisgICAgMHhCMCwgMHhGOSwgMHgxQiwgMHg4OCwgMHg2RCwgMHg5MiwgMHg4QiwgMHgzNiwgMHgzMCwgMHg5MiwgMHgzMiwgMHgwQSwgMHhFOCwgMHhBNSwgMHg3OSwgMHhBQywKKyAgICAweDI3LCAweDE4LCAweEU5LCAweDY3LCAweDRCLCAweEJDLCAweDEyLCAweEU1LCAweEIzLCAweDY2LCAweDE5LCAweEQ4LCAweEZDLCAweDYyLCAweDU1LCAweEYwLAorICAgIDB4NTksIDB4RkIsIDB4NTgsIDB4NTcsIDB4MTUsIDB4QjksIDB4MTUsIDB4ODksIDB4MzIsIDB4QUEsIDB4QTEsIDB4MEYsIDB4QzcsIDB4RDgsIDB4RkIsIDB4RDUsCisgICAgMHg2RSwgMHg5NCwgMHhCOCwgMHhFMywgMHhDNywgMHg3QiwgMHg3NiwgMHgyNSwgMHgwRCwgMHhCMSwgMHhENywgMHgyRCwgMHgyNiwgMHg1RSwgMHhDQSwgMHg4OCwKKyAgICAweEEzLCAweDk2LCAweEQ4LCAweDFDLCAweEJDLCAweDMxLCAweDM0LCAweDZBLCAweEJBLCAweDk5LCAweDY0LCAweDUxLCAweEVGLCAweDRDLCAweEI0LCAweDZBLAorICAgIDB4MDYsIDB4RUIsIDB4NEYsIDB4OTgsIDB4OTUsIDB4NTYsIDB4NzUsIDB4NkYsIDB4NzQsIDB4ODYsIDB4MjIsIDB4NTMsIDB4OUMsIDB4MEEsIDB4MUUsIDB4NEQsCisgICAgMHhGMCwgMHhCMCwgMHhENSwgMHgxQiwgMHg4NSwgMHg4RiwgMHhENiwgMHgzNywgMHhFMSwgMHgyNSwgMHg2NiwgMHg1RSwgMHhFOSwgMHg4OSwgMHg4RiwgMHg1MSwKKyAgICAweDUxLCAweDhELCAweDc2LCAweDk5LCAweEQ3LCAweEJDLCAweDE3LCAweEVFLCAweEY2LCAweDZCLCAweDNGLCAweENGLCAweDU2LCAweDMxLCAweDUwLCAweDc3LAorICAgIDB4ODQsIDB4MUUsIDB4RkIsIDB4NEQsIDB4NUEsIDB4MzUsIDB4QkUsIDB4RTMsIDB4QUYsIDB4ODgsIDB4QzMsIDB4QUMsIDB4MjIsIDB4REYsIDB4NTYsIDB4NTgsCisgICAgMHgzNCwgMHg1MiwgMHg4QSwgMHhDQSwgMHhFNywgMHg5RCwgMHg3NiwgMHhENCwgMHhCOCwgMHg4NiwgMHhGQiwgMHhEOSwgMHhCRCwgMHg1OSwgMHhFQywgMHg4NCwKKyAgICAweDI5LCAweDA2LCAweDBFLCAweDY1LCAweDY1LCAweDE4LCAweDUwLCAweDU3LCAweEU1LCAweENDLCAweEEyLCAweEJCLCAweDFBLCAweDg1LCAweEY2LCAweEZELAorICAgIDB4QkEsIDB4NDAsIDB4QTgsIDB4MUUsIDB4NTIsIDB4QUQsIDB4MzYsIDB4MTIsIDB4QzcsIDB4RjEsIDB4OUIsIDB4RUEsIDB4NTAsIDB4QTAsIDB4RkEsIDB4OTksCisgICAgMHg1NCwgMHhGNSwgMHhEMCwgMHhGQSwgMHhEQSwgMHhFQywgMHg3MCwgMHhDOCwgMHgyMSwgMHhBMCwgMHhFQSwgMHhFRiwgMHhDMCwgMHg1MSwgMHgyNiwgMHgzQSwKKyAgICAweDEzLCAweEQ2LCAweDRDLCAweDk1LCAweEM1LCAweDA3LCAweEExLCAweEE4LCAweDNCLCAweDYzLCAweDhBLCAweDRFLCAweEFFLCAweEU4LCAweEE0LCAweDY4LAorICAgIDB4OEUsIDB4QTMsIDB4MTMsIDB4RDksIDB4MTMsIDB4REYsIDB4QTIsIDB4QjMsIDB4RUYsIDB4OUYsIDB4NEUsIDB4MEQsIDB4MDAsIDB4QjIsIDB4QzIsIDB4NDAsCisgICAgMHhCRSwgMHgwRCwgMHhEMSwgMHg1OSwgMHgyMCwgMHgxRiwgMHgyNywgMHgyRCwgMHg5OSwgMHhFRSwgMHgxRCwgMHgwNSwgMHhENywgMHg3RCwgMHgyQSwgMHhBMywKKyAgICAweDg2LCAweDQ0LCAweDU0LCAweDI4LCAweDhBLCAweDMxLCAweDFDLCAweDY2LCAweEZCLCAweDlGLCAweDY4LCAweEU4LCAweENBLCAweEVCLCAweDc0LCAweDlBLAorICAgIDB4QUMsIDB4NzcsIDB4MkYsIDB4RjQsIDB4Q0YsIDB4OUQsIDB4NDgsIDB4QTksIDB4OEYsIDB4QjIsIDB4OUYsIDB4NzQsIDB4OUYsIDB4NzUsIDB4RTMsIDB4ODgsCisgICAgMHg0MiwgMHhCMSwgMHg1RiwgMHg3QywgMHhFRSwgMHhFRCwgMHg3RSwgMHg1QSwgMHhCMCwgMHg2MiwgMHhDRCwgMHgyRiwgMHg5NSwgMHg2OCwgMHgyRiwgMHhGMiwKKyAgICAweDU4LCAweDI5LCAweDhBLCAweDIyLCAweDMxLCAweEM4LCAweDgyLCAweDc1LCAweDUxLCAweDlCLCAweEY3LCAweEUzLCAweDU5LCAweDUyLCAweEQ5LCAweDVCLAorICAgIDB4REUsIDB4NDksIDB4NTQsIDB4MjIsIDB4RDEsIDB4RjIsIDB4RjYsIDB4QjAsIDB4MEIsIDB4QjgsIDB4NEUsIDB4MDgsIDB4NDMsIDB4RjksIDB4RUEsIDB4OTgsCisgICAgMHhCNCwgMHhFMywgMHgxMCwgMHhCNywgMHg4QiwgMHg3OSwgMHgyQywgMHg4NiwgMHhBQywgMHg3NSwgMHg4MCwgMHg2QSwgMHhDMiwgMHgxOCwgMHg0MywgMHgwNiwKKyAgICAweDVFLCAweEI5LCAweDgwLCAweEE5LCAweDg3LCAweDAyLCAweDlBLCAweEY1LCAweDU3LCAweDczLCAweEEyLCAweDY4LCAweDQ5LCAweDRFLCAweEVGLCAweDJELAorICAgIDB4NDgsIDB4N0YsIDB4MEIsIDB4MEMsIDB4OTEsIDB4MzUsIDB4OEEsIDB4MjAsIDB4N0YsIDB4QjIsIDB4RDgsIDB4N0EsIDB4ODgsIDB4NzAsIDB4QzMsIDB4QTcsCisgICAgMHgzNywgMHhDNCwgMHg2OCwgMHgyMSwgMHgzRSwgMHg1NSwgMHg5MSwgMHg4OCwgMHgwNywgMHgyQywgMHgwRiwgMHhDNiwgMHhCMywgMHg0OSwgMHg3RiwgMHg4NSwKKyAgICAweEZCLCAweEZGLCAweDJELCAweDdFLCAweDc4LCAweDEzLCAweEI3LCAweEQ1LCAweDY5LCAweDIxLCAweEI3LCAweDdDLCAweEFGLCAweDIwLCAweDE0LCAweEZELAorICAgIDB4RDksIDB4OUMsIDB4QTgsIDB4QjIsIDB4MkYsIDB4RkUsIDB4MjgsIDB4OEIsIDB4RjMsIDB4NjYsIDB4RjAsIDB4QTUsIDB4RUQsIDB4OEUsIDB4MUIsIDB4MUMsCisgICAgMHhGOCwgMHgyNCwgMHg2NywgMHhCNywgMHhFNiwgMHgwNiwgMHgzMywgMHhDNiwgMHg2MCwgMHgyOCwgMHg2QSwgMHhFNiwgMHhCOCwgMHhBMSwgMHhDRiwgMHg5QiwKKyAgICAweDE1LCAweDQxLCAweEE0LCAweDdBLCAweDdGLCAweEFELCAweEY0LCAweDhBLCAweDFGLCAweEUxLCAweDc3LCAweDA3LCAweDUxLCAweDY2LCAweDhDLCAweDZCLAorICAgIDB4MzUsIDB4ODEsIDB4NjAsIDB4NjYsIDB4OEQsIDB4NTgsIDB4QTEsIDB4REYsIDB4QUEsIDB4MEMsIDB4M0IsIDB4OUEsIDB4NzAsIDB4MEYsIDB4MUYsIDB4MDYsCisgICAgMHg2NywgMHhDMiwgMHgwQywgMHg2RSwgMHhEMSwgMHhGQywgMHg5MywgMHg1QywgMHhDNywgMHgxRiwgMHgxOSwgMHg1OSwgMHg3MCwgMHg2QywgMHg1QywgMHhDOCwKKyAgICAweEZBLCAweDlDLCAweEZCLCAweEIyLCAweDQ2LCAweDk4LCAweDVGLCAweDFGLCAweDgwLCAweDdCLCAweDhELCAweDE2LCAweDJELCAweDJBLCAweDAzLCAweEY2LAorICAgIDB4MjcsIDB4Q0IsIDB4MTEsIDB4QUUsIDB4OUQsIDB4RTUsIDB4MzYsIDB4REQsIDB4MjAsIDB4NTIsIDB4NTMsIDB4RDcsIDB4NjYsIDB4MjIsIDB4NEYsIDB4NTEsCisgICAgMHhFMSwgMHgyQiwgMHg3RSwgMHhGMSwgMHg5QSwgMHhBQywgMHhCQywgMHg4QSwgMHg2RCwgMHg3OCwgMHg2MCwgMHg2MiwgMHgyMCwgMHhCMywgMHhBMiwgMHgxRSwKKyAgICAweEE1LCAweDY4LCAweDFBLCAweDI5LCAweDQ1LCAweDI1LCAweDdFLCAweEY4LCAweDUwLCAweDYyLCAweEVELCAweDRFLCAweDA2LCAweDQ0LCAweDJBLCAweDc5LAorICAgIDB4RjQsIDB4NTIsIDB4RDAsIDB4NEYsIDB4MkMsIDB4MkYsIDB4QzYsIDB4RkYsIDB4NzQsIDB4RTIsIDB4NUIsIDB4MTMsIDB4NEMsIDB4OTksIDB4QjUsIDB4N0QsCisgICAgMHgwRCwgMHgwMSwgMHg2NiwgMHg3NywgMHgzQywgMHg3NCwgMHgzOCwgMHgxMSwgMHhGRSwgMHgxRiwgMHgzMSwgMHhBQSwgMHhGNCwgMHhBRiwgMHg0MiwgMHg3RCwKKyAgICAweEM3LCAweDYyLCAweEExLCAweEEyLCAweEJCLCAweEZFLCAweEU5LCAweDg5LCAweDhGLCAweDNELCAweDBCLCAweEU0LCAweEEwLCAweDVCLCAweEExLCAweDE4LAorICAgIDB4ODcsIDB4MzYsIDB4QTAsIDB4NzUsIDB4MDYsIDB4QTgsIDB4ODMsIDB4MDAsIDB4RjMsIDB4NUIsIDB4ODMsIDB4M0UsIDB4NDIsIDB4RkEsIDB4MDksIDB4NEMsCisgICAgMHgzNSwgMHgyNywgMHhBNywgMHhCMCwgMHgwMCwgMHhEQSwgMHg4QywgMHg4RSwgMHgxQSwgMHg1MSwgMHg5QiwgMHg1QSwgMHg4RiwgMHgwNSwgMHg5QSwgMHhCRCwKKyAgICAweENCLCAweDEwLCAweDEyLCAweDRELCAweDE3LCAweEU1LCAweDc4LCAweERGLCAweEU3LCAweDQ5LCAweDVELCAweEIwLCAweDc4LCAweDVGLCAweDQ0LCAweEUxLAorICAgIDB4REIsIDB4RTksIDB4ODQsIDB4RDksIDB4OTAsIDB4QUQsIDB4QkUsIDB4ODYsIDB4OTUsIDB4ODEsIDB4QzEsIDB4Q0QsIDB4MUIsIDB4RDQsIDB4Q0UsIDB4NkQsCisgICAgMHg1RSwgMHhCMywgMHg1MiwgMHhCMSwgMHg2NywgMHg1RSwgMHhGMiwgMHhFNCwgMHhDNSwgMHhDQiwgMHg1QywgMHhDNiwgMHg1NywgMHhCRSwgMHgxQywgMHgwRSwKKyAgICAweERFLCAweDdCLCAweEQzLCAweEIzLCAweDAxLCAweERDLCAweDFGLCAweDExLCAweDEyLCAweEZDLCAweDYyLCAweDlCLCAweEZELCAweEY4LCAweDhDLCAweERDLAorICAgIDB4RTQsIDB4MzUsIDB4MjIsIDB4NjEsIDB4MEUsIDB4QTAsIDB4ODAsIDB4RjksIDB4NDgsIDB4RkMsIDB4MUMsIDB4MzYsIDB4MkEsIDB4MDIsIDB4NEEsIDB4REMsCisgICAgMHg1NSwgMHhFMiwgMHgzNSwgMHhDOCwgMHhCNCwgMHgyRSwgMHhFRCwgMHg0MywgMHgxMSwgMHgzMSwgMHg2QywgMHhGQiwgMHg3NywgMHg2OCwgMHg1RSwgMHhDNiwKKyAgICAweDcyLCAweDM3LCAweDA4LCAweDVBLCAweEM0LCAweDk4LCAweDIzLCAweDlFLCAweDBBLCAweEUzLCAweDgyLCAweDFCLCAweENBLCAweERFLCAweDNGLCAweEJFLAorICAgIDB4RjAsIDB4NzQsIDB4NkMsIDB4OUUsIDB4MTYsIDB4OUIsIDB4NDEsIDB4QzksIDB4NzksIDB4QjksIDB4ODIsIDB4OUQsIDB4NjYsIDB4NjAsIDB4MDksIDB4QkQsCisgICAgMHg0NiwgMHgyRiwgMHhEQywgMHhGOCwgMHhDOSwgMHhCOCwgMHgwQiwgMHhCNiwgMHhFQiwgMHgzMCwgMHhEMSwgMHhBRCwgMHg5MywgMHhCNCwgMHhFMywgMHhEMSwKKyAgICAweEU2LCAweDM1LCAweEUxLCAweDZCLCAweEM3LCAweDQ5LCAweDQ3LCAweEFFLCAweEYxLCAweDdBLCAweDdBLCAweDJFLCAweEFFLCAweEY4LCAweEVDLCAweDVELAorICAgIDB4NjIsIDB4NjcsIDB4RkQsIDB4OUQsIDB4MTgsIDB4NzQsIDB4QkEsIDB4QTYsIDB4QTgsIDB4QTgsIDB4NkUsIDB4RDgsIDB4QkYsIDB4MjQsIDB4Q0EsIDB4NzQsCisgICAgMHg1MSwgMHhFMSwgMHg2QSwgMHg4QiwgMHhBQywgMHg5NiwgMHg0MywgMHhDNSwgMHg3NSwgMHg2MCwgMHhBRSwgMHhBOSwgMHhDQywgMHg4OSwgMHgwNiwgMHhBOSwKKyAgICAweDZDLCAweEVBLCAweDQ3LCAweDUzLCAweDYwLCAweDIxLCAweDdBLCAweDM4LCAweEQ0LCAweEU0LCAweDhBLCAweEU2LCAweDg2LCAweEFCLCAweDM2LCAweDM5LAorICAgIDB4MkYsIDB4RUEsIDB4MDgsIDB4QzEsIDB4MzIsIDB4REEsIDB4QTIsIDB4QzQsIDB4RDUsIDB4QjIsIDB4QzAsIDB4MTIsIDB4MzcsIDB4OUUsIDB4REMsIDB4QkEsCisgICAgMHhDNCwgMHhGNiwgMHg4RCwgMHhERiwgMHhBMSwgMHg5QSwgMHgzQiwgMHg3MCwgMHhFOSwgMHg5RiwgMHg0RSwgMHhEMSwgMHhFMSwgMHgyNywgMHg1MiwgMHgyNywKKyAgICAweDY5LCAweDU3LCAweEZGLCAweDYzLCAweEY2LCAweDY4LCAweEY1LCAweEYxLCAweDQyLCAweDMxLCAweEU1LCAweDA1LCAweEQyLCAweEI3LCAweEI1LCAweDIxLAorICAgIDB4QjksIDB4Q0UsIDB4NUQsIDB4RDQsIDB4QkIsIDB4RkUsIDB4QzUsIDB4MDksIDB4OEUsIDB4OTgsIDB4QUEsIDB4RTcsIDB4OUQsIDB4RTQsIDB4OTIsIDB4NDIsCisgICAgMHg3QywgMHgyRiwgMHhDMiwgMHhDOCwgMHgwNSwgMHhFMCwgMHhGNywgMHhDNSwgMHhENSwgMHhGQSwgMHhDNywgMHg5RSwgMHg3NSwgMHgzMiwgMHg3QSwgMHg3QywKKyAgICAweDE4LCAweDA4LCAweEI4LCAweDkwLCAweERFLCAweDA5LCAweEYxLCAweDE1LCAweEE1LCAweDZGLCAweEZDLCAweEUyLCAweEFELCAweDk3LCAweDlBLCAweDYzLAorICAgIDB4NTUsIDB4REIsIDB4MkUsIDB4MEEsIDB4RkMsIDB4MkMsIDB4M0IsIDB4RDAsIDB4NDcsIDB4QzQsIDB4RjEsIDB4MDYsIDB4MzIsIDB4RjAsIDB4NUQsIDB4QzksCisgICAgMHhDOSwgMHg4NywgMHgxMywgMHhDMCwgMHg2NywgMHhDNCwgMHg4QiwgMHg3NiwgMHg4MCwgMHg2MiwgMHg2MCwgMHhDOSwgMHgzQiwgMHgwQywgMHg4MSwgMHg1MSwKKyAgICAweDAwLCAweEZELCAweEY2LCAweDlCLCAweEU0LCAweEY5LCAweEMxLCAweDAzLCAweEJCLCAweDBGLCAweDVELCAweEUzLCAweEFDLCAweEU2LCAweDFGLCAweDQ5LAorICAgIDB4QjUsIDB4M0MsIDB4M0UsIDB4NjAsIDB4QzcsIDB4QzUsIDB4RDMsIDB4QjgsIDB4QUYsIDB4MDcsIDB4REYsIDB4NjAsIDB4NEIsIDB4MTksIDB4QjUsIDB4OTAsCisgICAgMHgzMywgMHg0MSwgMHg2MSwgMHg3NSwgMHhEQiwgMHg1MCwgMHhENCwgMHhCNiwgMHg2MywgMHhGQSwgMHhGOSwgMHg4MywgMHgwNiwgMHhCQywgMHg0RSwgMHhGMiwKKyAgICAweDUzLCAweEYwLCAweERDLCAweEI4LCAweEQ1LCAweDlCLCAweDYzLCAweEVFLCAweEYzLCAweDkyLCAweDY4LCAweEJCLCAweENCLCAweEMzLCAweDA4LCAweDdFLAorICAgIDB4MTIsIDB4NEEsIDB4OEEsIDB4NDgsIDB4RjksIDB4RUQsIDB4QTcsIDB4NkEsIDB4Q0UsIDB4REUsIDB4MEQsIDB4N0EsIDB4RUQsIDB4MkUsIDB4QTQsIDB4NzUsCisgICAgMHg2QywgMHg5NCwgMHhCMywgMHgwQSwgMHhGMSwgMHgzRSwgMHhBNCwgMHhFNiwgMHg4RiwgMHgzNCwgMHgxMywgMHgwRSwgMHhDNywgMHhDRSwgMHg2QiwgMHg4MiwKKyAgICAweDVELCAweEQzLCAweEQyLCAweDc5LCAweDdCLCAweDZGLCAweEI1LCAweDAwLCAweDhCLCAweEQ2LCAweDQ3LCAweDk1LCAweDk4LCAweERELCAweDU2LCAweEJDLAorICAgIDB4OEMsIDB4NDAsIDB4M0IsIDB4NUEsIDB4NjUsIDB4ODgsIDB4OUYsIDB4RjUsIDB4NkYsIDB4OTYsIDB4MzIsIDB4NDAsIDB4MzEsIDB4QUMsIDB4M0YsIDB4MTgsCisgICAgMHgyMiwgMHhFMiwgMHhEQiwgMHhEMSwgMHhGNywgMHhBRCwgMHg0OCwgMHgyMCwgMHgzMSwgMHg4RCwgMHgzRiwgMHhEMCwgMHhDOSwgMHg4OCwgMHg3RiwgMHg5NCwKKyAgICAweDM0LCAweDY5LCAweEJDLCAweEVFLCAweEIyLCAweDVCLCAweDQyLCAweDgyLCAweDMxLCAweEJDLCAweDgzLCAweEJELCAweDJDLCAweDVBLCAweDU3LCAweDc0LAorICAgIDB4OTQsIDB4MjksIDB4QzQsIDB4RDAsIDB4MTgsIDB4OEIsIDB4MkMsIDB4QUEsIDB4MDksIDB4MTQsIDB4OTksIDB4MzMsIDB4RDAsIDB4REEsIDB4RDgsIDB4Q0QsCisgICAgMHhFRCwgMHg3NSwgMHhCRCwgMHg2OSwgMHhBQSwgMHgzNCwgMHhEOCwgMHg0QiwgMHgzRCwgMHhDMiwgMHhDMCwgMHg2OSwgMHg3RiwgMHgyRiwgMHgwQiwgMHhERSwKKyAgICAweDIzLCAweEVFLCAweEIxLCAweDdDLCAweEQ4LCAweDVBLCAweDdDLCAweDBDLCAweDQ1LCAweDg5LCAweDA4LCAweDIxLCAweEU0LCAweDIzLCAweDk5LCAweDc1LAorICAgIDB4RkMsIDB4MEMsIDB4RjEsIDB4NTksIDB4MTksIDB4MDcsIDB4QTksIDB4QTksIDB4NUUsIDB4NDgsIDB4RUIsIDB4Q0QsIDB4MTAsIDB4NjEsIDB4QzIsIDB4RUIsCisgICAgMHg2MCwgMHg3NCwgMHgzNCwgMHg4MCwgMHhDMiwgMHhBQSwgMHhFRiwgMHgzNSwgMHg1NSwgMHgxOSwgMHg4QSwgMHg5NSwgMHhFNCwgMHg0QSwgMHg4OCwgMHg5RSwKKyAgICAweDcwLCAweDczLCAweDE3LCAweEE1LCAweDc1LCAweEI2LCAweEJDLCAweDVFLCAweDVFLCAweEFDLCAweDg4LCAweEE4LCAweDRFLCAweDU0LCAweDcxLCAweDRGLAorICAgIDB4QjgsIDB4ODQsIDB4QzIsIDB4QTMsIDB4QjUsIDB4OUQsIDB4NkMsIDB4QTIsIDB4OUIsIDB4NkMsIDB4NkYsIDB4QTYsIDB4RDgsIDB4RTYsIDB4ODMsIDB4NUQsCisgICAgMHhDMywgMHgwMSwgMHgyRiwgMHhCNSwgMHhFMCwgMHhGRiwgMHg2MiwgMHg1MiwgMHhENCwgMHg3MSwgMHg4RCwgMHgyRCwgMHg3MiwgMHg1NywgMHhGOSwgMHg5MCwKKyAgICAweEE3LCAweDc2LCAweDNELCAweDQ3LCAweDc2LCAweERFLCAweDdFLCAweDFCLCAweEZCLCAweEE0LCAweDQ0LCAweDdBLCAweEUxLCAweEJDLCAweEI5LCAweDcyLAorICAgIDB4M0MsIDB4NDIsIDB4QzYsIDB4MjYsIDB4MEYsIDB4NzAsIDB4RjEsIDB4QTYsIDB4NTgsIDB4OTEsIDB4QjEsIDB4RTcsIDB4QTEsIDB4NzAsIDB4MTMsIDB4NzUsCisgICAgMHhGRSwgMHgyQywgMHhDMiwgMHgxMSwgMHg0OCwgMHgxOSwgMHg3MiwgMHhERiwgMHhEMiwgMHgxRSwgMHg1QSwgMHgzNSwgMHhDOSwgMHgyQiwgMHhFNiwgMHg4RSwKKyAgICAweEM2LCAweDEwLCAweDlFLCAweDZGLCAweDY3LCAweENGLCAweDQwLCAweEI4LCAweDdELCAweDYwLCAweDhBLCAweEQ5LCAweDA5LCAweDU5LCAweEZELCAweDA0LAorICAgIDB4NTEsIDB4RUIsIDB4RTcsIDB4MTgsIDB4OEEsIDB4NzcsIDB4MkMsIDB4OTQsIDB4QTMsIDB4QTIsIDB4ODIsIDB4RjIsIDB4NTAsIDB4QTYsIDB4RDksIDB4OUMsCisgICAgMHg1NSwgMHg2NSwgMHg5NCwgMHhFOSwgMHg2NywgMHhDNCwgMHhFMSwgMHgzNCwgMHgwNCwgMHgyMiwgMHgzRiwgMHg1MCwgMHhBQiwgMHgxRiwgMHgwQiwgMHg5NCwKKyAgICAweENDLCAweDUxLCAweDM1LCAweDI4LCAweEY5LCAweDg4LCAweEEwLCAweEEwLCAweEEzLCAweEYxLCAweDk3LCAweDAwLCAweEMyLCAweDlDLCAweDM1LCAweDAxLAorICAgIDB4QzEsIDB4MUIsIDB4MDEsIDB4NDksIDB4NDQsIDB4NEMsIDB4MDYsIDB4QzksIDB4MzUsIDB4QTIsIDB4RUEsIDB4OTMsIDB4MjYsIDB4RjAsIDB4Q0EsIDB4MDcsCisgICAgMHg3RSwgMHgxRSwgMHhCQiwgMHhDQiwgMHgwMywgMHgyNywgMHgzNSwgMHgyRCwgMHhGMSwgMHhFMCwgMHgxNSwgMHgxRCwgMHhCRSwgMHhDRSwgMHg4OSwgMHgzQSwKKyAgICAweDY1LCAweERBLCAweDVCLCAweEI4LCAweDNDLCAweEY3LCAweEYxLCAweDNDLCAweERDLCAweEZBLCAweEFBLCAweEQwLCAweDQzLCAweDcyLCAweDczLCAweDk0LAorICAgIDB4NzIsIDB4RDIsIDB4MTAsIDB4ODIsIDB4MzIsIDB4MTAsIDB4QjYsIDB4MDUsIDB4MjUsIDB4MTYsIDB4MjUsIDB4RDIsIDB4MTAsIDB4NzMsIDB4RkQsIDB4OTcsCisgICAgMHg3QiwgMHg3RCwgMHgzMSwgMHgyNSwgMHg4OSwgMHgyNiwgMHg4MywgMHhGOCwgMHg3OCwgMHgxQiwgMHgzMiwgMHhGRiwgMHgzNSwgMHgxOSwgMHg5MSwgMHg2OCwKKyAgICAweDNGLCAweDFGLCAweDc4LCAweDM4LCAweDgzLCAweEEwLCAweDQ5LCAweDYzLCAweDRGLCAweDcwLCAweDA0LCAweEFELCAweDU3LCAweEJDLCAweDlELCAweDZGLAorICAgIDB4QkUsIDB4REEsIDB4NTYsIDB4RDEsIDB4RkYsIDB4QzIsIDB4MjUsIDB4QTEsIDB4RjUsIDB4MzksIDB4QjMsIDB4QTgsIDB4NjksIDB4MEEsIDB4RDIsIDB4QjEsCisgICAgMHhBMCwgMHg0RiwgMHgxNiwgMHhCMywgMHgxNSwgMHhGNCwgMHhERCwgMHg1OSwgMHg4QywgMHhEMywgMHg1NiwgMHhERiwgMHgxMSwgMHg1MCwgMHgzMywgMHg2RCwKKyAgICAweDE1LCAweEI5LCAweENDLCAweDg5LCAweEM5LCAweDgxLCAweEMyLCAweDdBLCAweENELCAweDFGLCAweDA0LCAweDE3LCAweERCLCAweDJCLCAweDgwLCAweEZBLAorICAgIDB4QzgsIDB4MDAsIDB4OTQsIDB4QjEsIDB4NDEsIDB4NDIsIDB4QTgsIDB4MEYsIDB4NkQsIDB4NzIsIDB4Q0IsIDB4QTksIDB4QkEsIDB4QkMsIDB4MTksIDB4NUUsCisgICAgMHg0MiwgMHg3MCwgMHg5NCwgMHgxQiwgMHhBNCwgMHgxNiwgMHg4NiwgMHgwNCwgMHhGNywgMHgwNiwgMHg2RSwgMHhDMiwgMHg0QSwgMHhCRSwgMHhENSwgMHgyNywKKyAgICAweDJBLCAweDYxLCAweDFGLCAweDU2LCAweDM0LCAweDMxLCAweDhELCAweDU5LCAweDU3LCAweDJCLCAweDg2LCAweDAxLCAweEMzLCAweDk0LCAweDYyLCAweDhBLAorICAgIDB4OUMsIDB4MTgsIDB4QjUsIDB4REQsIDB4NTIsIDB4QkMsIDB4ODUsIDB4QjUsIDB4MDksIDB4MjUsIDB4QkMsIDB4MzYsIDB4MDUsIDB4M0YsIDB4RTQsIDB4QTgsCisgICAgMHhDOSwgMHg0QSwgMHhBMSwgMHg3QywgMHhFQiwgMHhDMSwgMHgxMiwgMHg2NCwgMHgwNSwgMHhENCwgMHg2QSwgMHgyRCwgMHg0MSwgMHhCQywgMHhDMywgMHhGNSwKKyAgICAweDU3LCAweDAwLCAweDRBLCAweEIwLCAweEZGLCAweEQzLCAweEQyLCAweDUxLCAweDc2LCAweDcxLCAweDBFLCAweEM0LCAweDc4LCAweDAxLCAweEQ4LCAweEMxLAorICAgIDB4Q0EsIDB4QTQsIDB4MUIsIDB4QkIsIDB4QjUsIDB4OTksIDB4NTAsIDB4QzcsIDB4QjksIDB4Q0QsIDB4NzQsIDB4QUIsIDB4MDksIDB4ODksIDB4MDcsIDB4NTQsCisgICAgMHgzQSwgMHhFQSwgMHg3NiwgMHhBNSwgMHhBNywgMHhFOSwgMHg5NiwgMHgzRCwgMHg4QSwgMHhGRSwgMHgyNCwgMHg0NiwgMHg3QSwgMHg0RiwgMHg1NywgMHg4QiwKKyAgICAweDZELCAweDVCLCAweEIyLCAweDEyLCAweENBLCAweDA5LCAweDdCLCAweDQ1LCAweDRELCAweEMxLCAweDAzLCAweDdBLCAweDI3LCAweEZCLCAweDJDLCAweEUyLAorICAgIDB4OTUsIDB4QzYsIDB4MTcsIDB4NDYsIDB4N0IsIDB4NDgsIDB4RkIsIDB4OEYsIDB4NzgsIDB4NUIsIDB4QzgsIDB4M0UsIDB4NTQsIDB4NTEsIDB4OTksIDB4NzEsCisgICAgMHhFMywgMHhDNywgMHg5MiwgMHhFRCwgMHg5OSwgMHhCNCwgMHg4QSwgMHg5OCwgMHg4NiwgMHhBOCwgMHg5MSwgMHgxRCwgMHgzNiwgMHhCNiwgMHhCMiwgMHhDNywKKyAgICAweDlDLCAweEQ2LCAweDY4LCAweDRELCAweDQ1LCAweDlCLCAweDRELCAweDM3LCAweEI1LCAweEEwLCAweENFLCAweDMwLCAweDAwLCAweDEzLCAweDVBLCAweDQ5LAorICAgIDB4RTQsIDB4NTIsIDB4NDUsIDB4N0QsIDB4MzAsIDB4RUEsIDB4NzQsIDB4QkUsIDB4RUUsIDB4NDEsIDB4NDMsIDB4QkMsIDB4QjUsIDB4QzksIDB4MEMsIDB4NDAsCisgICAgMHg3RiwgMHg3NSwgMHhDNiwgMHg1NywgMHg1NiwgMHg5QSwgMHg5MCwgMHhGNiwgMHg1NiwgMHgzNSwgMHg4MywgMHg5OSwgMHg4MCwgMHgwOCwgMHg2OSwgMHgwOCwKKyAgICAweEIyLCAweDU5LCAweDlGLCAweDc5LCAweDUxLCAweDVELCAweDlBLCAweEUxLCAweENBLCAweDE2LCAweDE3LCAweDI4LCAweEZFLCAweDJCLCAweEQxLCAweDlGLAorICAgIDB4MUIsIDB4MjUsIDB4NjIsIDB4QzAsIDB4NUEsIDB4RjYsIDB4MjYsIDB4MTEsIDB4NkUsIDB4RDcsIDB4RTEsIDB4QkEsIDB4NUMsIDB4QjgsIDB4MDQsIDB4N0EsCisgICAgMHg1NSwgMHhEMywgMHgxNiwgMHg1OSwgMHg1QywgMHgzNywgMHgyNiwgMHhEMCwgMHhCNiwgMHgwOSwgMHhFRCwgMHg1NywgMHg4OCwgMHg1NiwgMHgyMSwgMHg1QywKKyAgICAweDkxLCAweEI2LCAweEVCLCAweEU0LCAweEMyLCAweDcwLCAweDhELCAweDJGLCAweDVBLCAweDlGLCAweDA3LCAweDVCLCAweDU3LCAweDM4LCAweDlFLCAweDNBLAorICAgIDB4NDksIDB4REYsIDB4NjcsIDB4MTgsIDB4QTUsIDB4NTAsIDB4OTAsIDB4REMsIDB4QkQsIDB4QTEsIDB4QTYsIDB4RTUsIDB4MzMsIDB4MjUsIDB4RDcsIDB4QTAsCisgICAgMHgyNSwgMHg3MSwgMHg2MywgMHhEMywgMHg4QiwgMHg4OSwgMHhFMiwgMHhDMCwgMHhDNSwgMHhDOCwgMHg1MSwgMHhGMSwgMHg5QiwgMHgyMywgMHhENywgMHgzNSwKKyAgICAweEFDLCAweDA0LCAweEQ2LCAweDhCLCAweDVBLCAweERGLCAweDlBLCAweDlELCAweDk4LCAweDVFLCAweDVCLCAweEQwLCAweDJCLCAweDI4LCAweERGLCAweDg5LAorICAgIDB4MUIsIDB4ODUsIDB4QzUsIDB4QjIsIDB4REQsIDB4NDMsIDB4RUYsIDB4MTQsIDB4OTksIDB4NzQsIDB4OEIsIDB4QUIsIDB4NDksIDB4NDUsIDB4QTcsIDB4NTcsCisgICAgMHhCRiwgMHhDRCwgMHg3RSwgMHg4MCwgMHhERiwgMHgwQywgMHgxQiwgMHgwNSwgMHhCMiwgMHgxRSwgMHhEMCwgMHhGRCwgMHg3MiwgMHgzRSwgMHgyNSwgMHhEMiwKKyAgICAweEUxLCAweDBCLCAweDFDLCAweDE3LCAweDZDLCAweDVCLCAweDYxLCAweEMwLCAweDg0LCAweENELCAweEZBLCAweEI2LCAweDA3LCAweDBBLCAweEJFLCAweDJCLAorICAgIDB4RjcsIDB4M0UsIDB4RUEsIDB4MkIsIDB4MEIsIDB4NTIsIDB4MzMsIDB4MEEsIDB4MzcsIDB4QzMsIDB4NDgsIDB4MEEsIDB4OTMsIDB4OUMsIDB4RjcsIDB4NTIsCisgICAgMHg0NSwgMHg5QiwgMHhFNSwgMHgwNCwgMHhFRCwgMHgzQiwgMHg1QSwgMHhGRiwgMHg4RSwgMHg0QSwgMHhGRSwgMHhENSwgMHg3NiwgMHgwNCwgMHhFRCwgMHhBMiwKKyAgICAweEFFLCAweDM2LCAweDZBLCAweENDLCAweDYyLCAweDdGLCAweEIyLCAweEJFLCAweDNBLCAweDMwLCAweDAyLCAweDU5LCAweEYzLCAweDJGLCAweERGLCAweDk0LAorICAgIDB4MEQsIDB4MDMsIDB4MjIsIDB4QjYsIDB4NjUsIDB4REYsIDB4MjYsIDB4OEEsIDB4Q0UsIDB4OUYsIDB4MzIsIDB4NEIsIDB4OEQsIDB4NEUsIDB4M0IsIDB4MzcsCisgICAgMHgyNCwgMHgwMCwgMHgwRiwgMHhCNywgMHhGNCwgMHg0QiwgMHgyRiwgMHgwQiwgMHhGOSwgMHg5NCwgMHgxNCwgMHg0MSwgMHg5NCwgMHhEMCwgMHg2NiwgMHg4MCwKKyAgICAweDY2LCAweDlGLCAweDA0LCAweDc0LCAweEI4LCAweDkwLCAweDM1LCAweEVFLCAweENDLCAweDRCLCAweEE3LCAweEQ0LCAweDQyLCAweDdELCAweEQ2LCAweDIzLAorICAgIDB4M0MsIDB4MkEsIDB4OEEsIDB4QjYsIDB4QUMsIDB4MTksIDB4OTIsIDB4MzcsIDB4RDksIDB4NDYsIDB4REYsIDB4RTEsIDB4NzUsIDB4MkQsIDB4MDUsIDB4MDIsCisgICAgMHhCMSwgMHhDQSwgMHgzNCwgMHgzNCwgMHgxQiwgMHhCNCwgMHg2NywgMHgxRiwgMHg1NiwgMHhCRCwgMHg1NSwgMHhDRCwgMHhFQywgMHg5RSwgMHgzRCwgMHg0RSwKKyAgICAweDgzLCAweDkwLCAweDVELCAweDY2LCAweEJBLCAweEE2LCAweDc2LCAweDdFLCAweDJFLCAweEFBLCAweDkyLCAweEQyLCAweDgwLCAweEM1LCAweDI1LCAweDBELAorICAgIDB4OTEsIDB4RjUsIDB4OUIsIDB4NTQsIDB4NkYsIDB4MDUsIDB4Q0UsIDB4RTMsIDB4NEEsIDB4NTUsIDB4Q0IsIDB4QTYsIDB4REQsIDB4NEMsIDB4OTEsIDB4OTIsCisgICAgMHhBMCwgMHgxQywgMHg4MywgMHhCRCwgMHgyOCwgMHgwNSwgMHhCOSwgMHhGQywgMHg3NSwgMHg0MiwgMHhFRiwgMHhCMSwgMHg3RCwgMHgyQSwgMHgxNywgMHgzRSwKKyAgICAweDdBLCAweEIzLCAweEI1LCAweENCLCAweEQ5LCAweDQzLCAweDBGLCAweEFELCAweDRELCAweDM2LCAweDcwLCAweDRFLCAweDM5LCAweDNDLCAweDkxLCAweEY2LAorICAgIDB4MDUsIDB4REIsIDB4MEEsIDB4NDMsIDB4REMsIDB4NUIsIDB4QUYsIDB4NEMsIDB4MzQsIDB4NzIsIDB4OUIsIDB4RjEsIDB4MkQsIDB4ODksIDB4MEYsIDB4ODUsCisgICAgMHgxQywgMHg5MCwgMHg4QiwgMHg5MCwgMHg4NCwgMHhDQywgMHgxRCwgMHhEMCwgMHhBRSwgMHhGNiwgMHg1OCwgMHgyMCwgMHgzOCwgMHhFOSwgMHg0NCwgMHgxNiwKKyAgICAweEI2LCAweENCLCAweDkwLCAweDVDLCAweDc2LCAweDkxLCAweEI3LCAweDFCLCAweDE1LCAweEI2LCAweEVGLCAweEIxLCAweDMxLCAweEFFLCAweEQwLCAweDlFLAorICAgIDB4NzgsIDB4MzcsIDB4QkMsIDB4NjksIDB4M0IsIDB4MkMsIDB4MjIsIDB4ODksIDB4MTAsIDB4RTUsIDB4QkYsIDB4QTUsIDB4QUEsIDB4MzIsIDB4MEYsIDB4NUYsCisgICAgMHhFRCwgMHg3QSwgMHg4NSwgMHhDMiwgMHgyNSwgMHgwRSwgMHg4QywgMHg4RCwgMHhFQiwgMHg4RCwgMHhFNywgMHgzMywgMHg4NCwgMHg5QiwgMHg0NywgMHhDNSwKKyAgICAweEQ2LCAweDQ5LCAweEFCLCAweDFELCAweEExLCAweDBBLCAweDg0LCAweDE0LCAweDFBLCAweDkwLCAweEQ4LCAweDExLCAweDc4LCAweDRBLCAweDFBLCAweDAxLAorICAgIDB4RTIsIDB4MjcsIDB4QzksIDB4NDksIDB4NjEsIDB4ODIsIDB4NjIsIDB4QTIsIDB4RTAsIDB4RTQsIDB4REYsIDB4OTksIDB4QzUsIDB4NUEsIDB4N0IsIDB4NTQsCisgICAgMHg3QiwgMHg3NywgMHhDOSwgMHhGOCwgMHhBNCwgMHhCNSwgMHhBMiwgMHhBMCwgMHgwOSwgMHg0MiwgMHg5RiwgMHg0NywgMHg4MiwgMHg2QywgMHg3OSwgMHhFRCwKKyAgICAweDVGLCAweDc5LCAweEJELCAweDBDLCAweDczLCAweDg0LCAweDg4LCAweDA1LCAweDE2LCAweDE3LCAweDA4LCAweDlELCAweDNDLCAweENBLCAweENCLCAweDU1LAorICAgIDB4RDQsIDB4MTQsIDB4MTYsIDB4RDMsIDB4ODMsIDB4QUUsIDB4MzksIDB4MUQsIDB4M0QsIDB4MTksIDB4NTEsIDB4MUEsIDB4NDUsIDB4MzIsIDB4MTksIDB4QTAsCisgICAgMHhGMCwgMHhDMCwgMHhCMCwgMHgyNywgMHg0RCwgMHhDNiwgMHg2RiwgMHg3NSwgMHg1MiwgMHg1OSwgMHgxNCwgMHg1MCwgMHhGNywgMHhERiwgMHg2QSwgMHg1MSwKKyAgICAweEU1LCAweEIwLCAweERDLCAweEU4LCAweDI3LCAweDJFLCAweDQ5LCAweDdBLCAweDUzLCAweDk2LCAweDJDLCAweDI4LCAweDlBLCAweDY1LCAweDc1LCAweDY1LAorICAgIDB4QkUsIDB4MzUsIDB4MUIsIDB4NkQsIDB4MUMsIDB4OTAsIDB4Q0EsIDB4ODAsIDB4NDIsIDB4QkYsIDB4QTQsIDB4NDUsIDB4QTIsIDB4NUMsIDB4OTMsIDB4RkMsCisgICAgMHhCNSwgMHg2MywgMHgzMCwgMHhCMiwgMHhBNywgMHg3QiwgMHgyMCwgMHgzRiwgMHgwRiwgMHg1RSwgMHhFMSwgMHg0MSwgMHg2MSwgMHg3OSwgMHhCQywgMHhCMSwKKyAgICAweDA3LCAweDY5LCAweDJGLCAweEE5LCAweDQ4LCAweDk5LCAweEVFLCAweEQzLCAweDQ2LCAweEZGLCAweDUxLCAweDU0LCAweDMxLCAweEI1LCAweEMxLCAweENFLAorICAgIDB4ODcsIDB4MjAsIDB4QjksIDB4MEYsIDB4NDcsIDB4NzcsIDB4NDYsIDB4QjMsIDB4NTcsIDB4QUQsIDB4M0MsIDB4MUUsIDB4MDMsIDB4RDAsIDB4QTUsIDB4M0QsCisgICAgMHg2NiwgMHhCMywgMHhDNSwgMHgyOCwgMHgyRSwgMHgwNiwgMHhGNiwgMHgwMiwgMHg0OSwgMHg5RCwgMHhGOSwgMHhGNSwgMHgyOSwgMHg2OSwgMHhGOCwgMHgxNiwKKyAgICAweDBBLCAweDJGLCAweEI3LCAweENELCAweEU4LCAweERCLCAweDVGLCAweEEyLCAweDEyLCAweEFCLCAweDdDLCAweDA5LCAweDI0LCAweDgxLCAweDlDLCAweDA0LAorICAgIDB4MjcsIDB4NTEsIDB4NjYsIDB4NEQsIDB4REMsIDB4RTUsIDB4MjQsIDB4RTksIDB4RTQsIDB4NTMsIDB4QTksIDB4OEIsIDB4NDEsIDB4MjUsIDB4NDcsIDB4MkIsCisgICAgMHgyQiwgMHhDNiwgMHhBMCwgMHg0MSwgMHg4MSwgMHhFQiwgMHhEMSwgMHhDNiwgMHhCMywgMHg3NywgMHg5NywgMHg5MCwgMHgyNSwgMHgxNSwgMHhGQSwgMHhCMiwKKyAgICAweDM3LCAweDlGLCAweEU0LCAweEUzLCAweEIyLCAweDExLCAweEVCLCAweEYyLCAweDcyLCAweDYyLCAweEM2LCAweDhBLCAweDAwLCAweEYzLCAweDk5LCAweDgzLAorICAgIDB4MTEsIDB4MjYsIDB4NjQsIDB4ODIsIDB4QTYsIDB4QTIsIDB4OEIsIDB4RjIsIDB4QjAsIDB4Q0UsIDB4QUUsIDB4NDksIDB4RTEsIDB4MTYsIDB4QzEsIDB4NkYsCisgICAgMHg4MSwgMHg4OSwgMHg2MSwgMHg2RiwgMHg5RSwgMHgwQSwgMHgwNywgMHhCMywgMHhEQiwgMHg2MiwgMHg0NSwgMHhFRiwgMHg1NCwgMHg2QywgMHg5RiwgMHg5NSwKKyAgICAweEM1LCAweDUwLCAweEVGLCAweEQ3LCAweDgxLCAweDBCLCAweDhGLCAweDY3LCAweDE1LCAweEU0LCAweERGLCAweEM2LCAweEZCLCAweEQ1LCAweDE3LCAweDhGLAorICAgIDB4OTAsIDB4MjcsIDB4RTUsIDB4M0IsIDB4ODYsIDB4RjQsIDB4QkMsIDB4RjEsIDB4OUQsIDB4MUQsIDB4MDcsIDB4QjEsIDB4M0QsIDB4NDUsIDB4RTQsIDB4NjIsCisgICAgMHg3NiwgMHg2QiwgMHhGQywgMHgyQywgMHhFNSwgMHgzMSwgMHg3RSwgMHgxRCwgMHg2NiwgMHgwQiwgMHg4NSwgMHgyNywgMHg4MCwgMHhGOCwgMHhDQiwgMHhCOCwKKyAgICAweDJBLCAweEE0LCAweDIzLCAweDRCLCAweDNELCAweEI3LCAweEUzLCAweDEwLCAweDRELCAweEI4LCAweEQxLCAweEE5LCAweDEwLCAweDMzLCAweDg0LCAweEYxLAorICAgIDB4MDcsIDB4MjgsIDB4RTAsIDB4ODksIDB4NEQsIDB4OUMsIDB4NEYsIDB4QTMsIDB4ODQsIDB4RkEsIDB4MzAsIDB4QkMsIDB4MzgsIDB4NzIsIDB4OTEsIDB4NTksCisgICAgMHhENSwgMHg2NiwgMHg0OSwgMHgyRSwgMHg2MiwgMHg2OSwgMHg3QSwgMHg2RSwgMHhDQiwgMHgzRiwgMHgxOCwgMHg5QSwgMHgyNCwgMHg4QSwgMHg4QSwgMHg3MiwKKyAgICAweDFFLCAweDJGLCAweEY1LCAweEQ1LCAweDIzLCAweDVELCAweDg1LCAweDU4LCAweDIyLCAweDFELCAweDIzLCAweDQ0LCAweDgyLCAweDk0LCAweDg1LCAweDY2LAorICAgIDB4MDcsIDB4NEMsIDB4MUMsIDB4ODUsIDB4RjgsIDB4MUMsIDB4MjgsIDB4MEEsIDB4MDksIDB4MzksIDB4NzksIDB4RkYsIDB4Q0MsIDB4RjAsIDB4MjAsIDB4ODQsCisgICAgMHhDQSwgMHg4OCwgMHg3NywgMHg4RiwgMHhDMywgMHg1OCwgMHg1NiwgMHhERCwgMHhCOSwgMHgwNiwgMHgxQywgMHgwRCwgMHhGQiwgMHg5QiwgMHgxMCwgMHhFMSwKKyAgICAweERCLCAweDIzLCAweDg0LCAweEYwLCAweEIwLCAweDc2LCAweEMwLCAweDBDLCAweEY4LCAweDI4LCAweDEzLCAweEU3LCAweDRFLCAweERELCAweEMzLCAweDFBLAorICAgIDB4QkQsIDB4OUYsIDB4NUIsIDB4NDcsIDB4RUMsIDB4MjIsIDB4MDEsIDB4MEEsIDB4OEUsIDB4RkMsIDB4NEEsIDB4MzYsIDB4RjcsIDB4QzYsIDB4RkMsIDB4MzMsCisgICAgMHgxRSwgMHgyOSwgMHhCQiwgMHgzNCwgMHhEMCwgMHhBOSwgMHg5QSwgMHg1NywgMHgxNywgMHg4RSwgMHgwMiwgMHgxQywgMHg0NCwgMHhCOCwgMHgzMywgMHgyNCwKKyAgICAweEQ2LCAweDhELCAweEI2LCAweDNGLCAweERCLCAweDFCLCAweEFELCAweEM1LCAweDVBLCAweDk4LCAweDg4LCAweEU2LCAweDdELCAweDlDLCAweDJGLCAweEU3LAorICAgIDB4MEUsIDB4MTQsIDB4RDMsIDB4QTEsIDB4OUEsIDB4OTgsIDB4QjgsIDB4NTQsIDB4RTIsIDB4OTAsIDB4OTcsIDB4NUUsIDB4NDgsIDB4REUsIDB4Q0YsIDB4M0IsCisgICAgMHg0RiwgMHg1NywgMHg5MiwgMHg2NiwgMHgyRCwgMHhCNCwgMHhBNywgMHg3MSwgMHg0RCwgMHgwOCwgMHhCNywgMHhBMywgMHhGMSwgMHg1QSwgMHhBQSwgMHg3RSwKKyAgICAweEFELCAweEFELCAweEFDLCAweEQyLCAweEJELCAweDI3LCAweDQxLCAweDUxLCAweEMxLCAweEVBLCAweDRGLCAweEUwLCAweDBELCAweEM3LCAweDNCLCAweDIwLAorICAgIDB4ODQsIDB4MTgsIDB4N0IsIDB4QkIsIDB4NzgsIDB4QjcsIDB4Q0IsIDB4NkUsIDB4NUIsIDB4ODMsIDB4QkYsIDB4NTksIDB4NzIsIDB4MkYsIDB4NzQsIDB4MzIsCisgICAgMHhBNiwgMHg1NSwgMHg4MSwgMHg2QiwgMHhGQSwgMHhFMCwgMHhBNywgMHg2OCwgMHgwRCwgMHhCNSwgMHhDRiwgMHgwMiwgMHhDQiwgMHhERCwgMHhGMCwgMHg2OSwKKyAgICAweEIxLCAweDc0LCAweDRBLCAweDUzLCAweDc3LCAweEY3LCAweEQxLCAweEMyLCAweENFLCAweDJBLCAweDU5LCAweEZELCAweDAxLCAweEJELCAweEQ5LCAweDUwLAorICAgIDB4M0UsIDB4QzQsIDB4RTYsIDB4RTAsIDB4MEMsIDB4NjIsIDB4NDQsIDB4NjQsIDB4RUUsIDB4NzAsIDB4OUYsIDB4NjksIDB4ODEsIDB4MEQsIDB4Q0UsIDB4NDIsCisgICAgMHg4NywgMHgzQSwgMHhGMiwgMHgzQSwgMHg2QiwgMHg3OCwgMHhEQSwgMHg0MiwgMHg5OSwgMHgzMywgMHhDOSwgMHhFQiwgMHgzQiwgMHg5QywgMHhFRCwgMHgzQiwKKyAgICAweEM3LCAweEYyLCAweDY1LCAweEQxLCAweDMyLCAweEIyLCAweDNGLCAweDlELCAweDgwLCAweEVDLCAweEFDLCAweDdELCAweDA0LCAweEYxLCAweEU5LCAweEJBLAorICAgIDB4NTIsIDB4NEEsIDB4NzQsIDB4NzAsIDB4OEMsIDB4Q0YsIDB4QjEsIDB4QjksIDB4OTEsIDB4OEMsIDB4NEYsIDB4MTIsIDB4MEQsIDB4QzIsIDB4N0EsIDB4MkYsCisgICAgMHhCOCwgMHg4NiwgMHhGMiwgMHg5QiwgMHg0RCwgMHg1OCwgMHhFMCwgMHhBMCwgMHgyRSwgMHhFQSwgMHg4MiwgMHgxNywgMHhDMSwgMHg3RSwgMHg0OCwgMHhCRSwKKyAgICAweDU2LCAweEE1LCAweEM3LCAweEI5LCAweDg4LCAweEY1LCAweDI2LCAweEE2LCAweEMxLCAweDYwLCAweDgzLCAweEJDLCAweDQwLCAweDdDLCAweDM2LCAweDJCLAorICAgIDB4MzIsIDB4NTcsIDB4MjUsIDB4QkUsIDB4ODgsIDB4MzgsIDB4MkIsIDB4OEQsIDB4QkUsIDB4QTAsIDB4RTAsIDB4NjQsIDB4MEQsIDB4MDYsIDB4MkMsIDB4RDUsCisgICAgMHg4OCwgMHgzMSwgMHhDQywgMHg3OSwgMHg0OSwgMHg4MSwgMHgxOSwgMHhFNSwgMHgzNiwgMHg0MywgMHgzRCwgMHg3NCwgMHhBMywgMHgyMCwgMHg1OSwgMHgzQywKKyAgICAweEZELCAweDVCLCAweDVDLCAweDM1LCAweDRELCAweEYxLCAweDkwLCAweDI2LCAweDhBLCAweDA2LCAweEI1LCAweDc2LCAweDg3LCAweDFELCAweEM2LCAweDdELAorICAgIDB4OTMsIDB4OEEsIDB4MzUsIDB4NjIsIDB4MTIsIDB4MjMsIDB4N0UsIDB4RDcsIDB4MzMsIDB4NEMsIDB4NzMsIDB4RUIsIDB4MDEsIDB4NkQsIDB4Q0IsIDB4QUYsCisgICAgMHhFNSwgMHhGMiwgMHg1RCwgMHg2QywgMHg0OCwgMHg3MywgMHg4RSwgMHg3OCwgMHhBNiwgMHhBMSwgMHgxMSwgMHhBQywgMHg5MSwgMHhBMSwgMHg2RCwgMHgxMywKKyAgICAweEFFLCAweDJCLCAweEE3LCAweDdCLCAweDAzLCAweERBLCAweDE2LCAweDdBLCAweEUzLCAweDZBLCAweDUzLCAweEYxLCAweDgyLCAweDFGLCAweEQwLCAweDI5LAorICAgIDB4QTYsIDB4OTksIDB4QjAsIDB4QzEsIDB4MUEsIDB4MjgsIDB4QkMsIDB4MDgsIDB4QzcsIDB4NkMsIDB4M0UsIDB4RDgsIDB4M0IsIDB4N0QsIDB4MzEsIDB4NEYsCisgICAgMHhCOSwgMHhDQywgMHgxRiwgMHg4RiwgMHgwNiwgMHg4NSwgMHhERSwgMHg5NywgMHhCRCwgMHg3QSwgMHgwMiwgMHhBNCwgMHgxNiwgMHgwRSwgMHg4RiwgMHhGMiwKKyAgICAweDYxLCAweEFFLCAweDAyLCAweEEyLCAweDQzLCAweDg0LCAweEUwLCAweDlFLCAweDFFLCAweEE5LCAweERCLCAweEYwLCAweDdBLCAweEMzLCAweEEwLCAweERELAorICAgIDB4OTMsIDB4RTksIDB4ODQsIDB4OEQsIDB4QzMsIDB4NzksIDB4OUMsIDB4RTUsIDB4NjgsIDB4QkMsIDB4NjMsIDB4QjgsIDB4ODIsIDB4QTAsIDB4OTQsIDB4N0QsCisgICAgMHg3RiwgMHg1QiwgMHg3MywgMHgxMywgMHgwQiwgMHg3QSwgMHg0NiwgMHhCRSwgMHhFRiwgMHg3MCwgMHg2NCwgMHhCOSwgMHgyNiwgMHhCMCwgMHg4NiwgMHhCQiwKKyAgICAweDMzLCAweDhBLCAweENDLCAweDgxLCAweDA0LCAweDhFLCAweDYyLCAweDdBLCAweDM0LCAweEZBLCAweDI1LCAweDE0LCAweDBGLCAweDBBLCAweEQ0LCAweDBCLAorICAgIDB4Q0YsIDB4RDYsIDB4OTIsIDB4MDUsIDB4ODgsIDB4MkMsIDB4MkQsIDB4MjYsIDB4REYsIDB4MDgsIDB4RDYsIDB4MTksIDB4NkEsIDB4QUIsIDB4NzQsIDB4MkMsCisgICAgMHhCMCwgMHgwOCwgMHg2QiwgMHhBQiwgMHg4NywgMHhFQSwgMHg2QSwgMHg0OCwgMHhCOCwgMHg3MywgMHhCNiwgMHgxNiwgMHgzMCwgMHgzMywgMHhFNywgMHg0QiwKKyAgICAweDgxLCAweEJELCAweEVFLCAweDY3LCAweDMxLCAweDgzLCAweDRCLCAweENGLCAweDgzLCAweDIyLCAweDA1LCAweDhBLCAweDgxLCAweEVCLCAweEZBLCAweDc1LAorICAgIDB4QkIsIDB4NTQsIDB4OEUsIDB4NzgsIDB4NUIsIDB4NzYsIDB4NzAsIDB4M0YsIDB4N0QsIDB4M0YsIDB4QUEsIDB4NkMsIDB4NjksIDB4N0YsIDB4MTksIDB4NjgsCisgICAgMHhCMywgMHg2OCwgMHg1MSwgMHhEMSwgMHg2MSwgMHhENSwgMHgzQywgMHgyQywgMHg2QiwgMHhDNSwgMHg5NiwgMHhFMCwgMHhEQSwgMHgyNiwgMHg2MywgMHhDNSwKKyAgICAweDBFLCAweEExLCAweEY1LCAweDU5LCAweEQ1LCAweDc4LCAweDg3LCAweDgxLCAweEVGLCAweDg3LCAweDAxLCAweDg4LCAweEQ0LCAweEUxLCAweEJELCAweEI4LAorICAgIDB4OTYsIDB4MUQsIDB4NUQsIDB4ODUsIDB4MUMsIDB4NkYsIDB4NTMsIDB4RUQsIDB4NkEsIDB4NkEsIDB4QzAsIDB4MkEsIDB4QjIsIDB4RjEsIDB4NkMsIDB4N0EsCisgICAgMHg5MiwgMHhGNSwgMHg3MCwgMHg2RCwgMHg5NCwgMHhENSwgMHg4NywgMHg1NywgMHhFMywgMHgyNiwgMHhDRCwgMHhEQSwgMHg1MiwgMHg1QywgMHgyMiwgMHgwMywKKyAgICAweEJELCAweEY2LCAweDYwLCAweEE2LCAweEM5LCAweDY0LCAweEYwLCAweEM2LCAweDExLCAweEE0LCAweDk2LCAweEIxLCAweDI3LCAweDhCLCAweDhFLCAweDk5LAorICAgIDB4M0UsIDB4QzIsIDB4QzEsIDB4NDMsIDB4RDQsIDB4MTAsIDB4N0QsIDB4Q0MsIDB4OUYsIDB4RTQsIDB4N0MsIDB4QTYsIDB4MTAsIDB4MUUsIDB4RTUsIDB4NTksCisgICAgMHgzNywgMHg1OCwgMHhGMCwgMHhCMywgMHhGNiwgMHg0RiwgMHg4QiwgMHg0MSwgMHhEQiwgMHg2NSwgMHgwMSwgMHhERCwgMHhFMywgMHhBQiwgMHhCRCwgMHg0QywKKyAgICAweDRDLCAweDY5LCAweDJCLCAweDgyLCAweEJBLCAweDgwLCAweERFLCAweDlFLCAweDRELCAweEFDLCAweDg2LCAweERGLCAweDM0LCAweERCLCAweERGLCAweDFDLAorICAgIDB4QkEsIDB4MjUsIDB4MDMsIDB4RDAsIDB4NUUsIDB4MjksIDB4MjksIDB4NEUsIDB4RkMsIDB4RjYsIDB4QzAsIDB4MTAsIDB4MDMsIDB4Q0EsIDB4QjAsIDB4QTMsCisgICAgMHgyMiwgMHhCMCwgMHg0NiwgMHhBQSwgMHhDMywgMHhCQiwgMHhGMSwgMHhDNiwgMHg3QywgMHhCMSwgMHhDMiwgMHg3MCwgMHhDRCwgMHhBQywgMHhFMCwgMHg2QiwKKyAgICAweERELCAweDE0LCAweEVDLCAweEFELCAweDgwLCAweDA5LCAweEY5LCAweEJELCAweDFGLCAweDRBLCAweEQ3LCAweDIwLCAweEZBLCAweDE1LCAweENGLCAweERELAorICAgIDB4RTUsIDB4NjUsIDB4MkEsIDB4MDYsIDB4QkQsIDB4ODgsIDB4QzAsIDB4MTIsIDB4NzQsIDB4QzQsIDB4OEIsIDB4M0MsIDB4NTAsIDB4OEQsIDB4NzMsIDB4QzMsCisgICAgMHhGMCwgMHgzNiwgMHg0MCwgMHg2NCwgMHgzOSwgMHg0QywgMHg3OCwgMHg5MiwgMHhEOCwgMHhEQywgMHg5MywgMHgyQSwgMHhDMCwgMHg5MSwgMHgxNiwgMHhCMCwKKyAgICAweDk2LCAweDg4LCAweDcwLCAweDg1LCAweDg2LCAweEVGLCAweDM4LCAweEY1LCAweDhFLCAweDcwLCAweDYzLCAweDNDLCAweEU4LCAweERCLCAweDI2LCAweERGLAorICAgIDB4M0YsIDB4RUUsIDB4MDEsIDB4QjEsIDB4RjYsIDB4RjYsIDB4OEUsIDB4MUEsIDB4RUUsIDB4NkYsIDB4NDIsIDB4OUIsIDB4NzYsIDB4MDgsIDB4RjIsIDB4RTQsCisgICAgMHhCNSwgMHhEOCwgMHg0NSwgMHg1NSwgMHhDRSwgMHhGMywgMHg4OSwgMHhFQywgMHgyRCwgMHgwMCwgMHhGNywgMHhDMSwgMHhFRCwgMHg0RCwgMHhEMCwgMHgwNCwKKyAgICAweEMxLCAweEIyLCAweDkyLCAweEUxLCAweEU1LCAweEVFLCAweDQ0LCAweEZELCAweDc5LCAweEMxLCAweDQ1LCAweEFELCAweDFGLCAweDk5LCAweDQ5LCAweEI5LAorICAgIDB4QzMsIDB4NzksIDB4QUYsIDB4RkMsIDB4MDksIDB4MzEsIDB4M0YsIDB4QkUsIDB4MTUsIDB4MzcsIDB4QjcsIDB4OUIsIDB4QTIsIDB4RDUsIDB4RDcsIDB4REQsCisgICAgMHgxQiwgMHhCQywgMHg2OSwgMHhBMywgMHgyNywgMHg4QSwgMHg3QywgMHhBQSwgMHhDNiwgMHgzMSwgMHgyQSwgMHhBOSwgMHg2RiwgMHhBMSwgMHgzRCwgMHhGRSwKKyAgICAweEI2LCAweDQwLCAweEQwLCAweDk2LCAweEJGLCAweEVDLCAweDM3LCAweEIxLCAweDVDLCAweDhFLCAweEE4LCAweEY3LCAweDRCLCAweDlELCAweDYyLCAweDVDLAorICAgIDB4MzMsIDB4NEUsIDB4NTQsIDB4REEsIDB4NjYsIDB4RjIsIDB4RkYsIDB4RUUsIDB4RTIsIDB4MTksIDB4RjMsIDB4NDcsIDB4NzQsIDB4RDIsIDB4QzgsIDB4OEQsCisgICAgMHhEQiwgMHg2NywgMHhFQywgMHg3NywgMHhENywgMHhDMCwgMHgxRiwgMHhDNywgMHg0RCwgMHg3RCwgMHgwMywgMHhEMSwgMHhFQiwgMHhERCwgMHg0MywgMHhEMSwKKyAgICAweDI1LCAweEQ4LCAweDI5LCAweDE4LCAweENBLCAweEU1LCAweEYzLCAweDg5LCAweDg2LCAweEEwLCAweDA5LCAweEQxLCAweDRFLCAweDBDLCAweDY5LCAweDQ3LAorICAgIDB4MUIsIDB4ODksIDB4OUIsIDB4QjIsIDB4RTksIDB4RTMsIDB4N0UsIDB4OUMsIDB4RTQsIDB4Q0QsIDB4RTgsIDB4MEEsIDB4NzAsIDB4RjAsIDB4OTUsIDB4ODEsCisgICAgMHg3MCwgMHhGNSwgMHhBRCwgMHg2RSwgMHhEOSwgMHg0MSwgMHgyRCwgMHhDRCwgMHhFQywgMHhBMywgMHgxMCwgMHgxOCwgMHhGMSwgMHgzNCwgMHhEMywgMHhDMSwKKyAgICAweDg1LCAweDVELCAweDA3LCAweEU1LCAweDhDLCAweDZBLCAweEVGLCAweENDLCAweEIwLCAweEE3LCAweDAwLCAweEU4LCAweDUzLCAweDVELCAweEQ1LCAweEU1LAorICAgIDB4NDcsIDB4NjAsIDB4OTQsIDB4QUIsIDB4NDMsIDB4MjYsIDB4Q0QsIDB4MEUsIDB4MDIsIDB4RDMsIDB4OEMsIDB4RjEsIDB4OEYsIDB4QUMsIDB4MjMsIDB4MEYsCisgICAgMHhERiwgMHhCMSwgMHgzQSwgMHg4RiwgMHg5OSwgMHhBRiwgMHg4OSwgMHhBQywgMHg1QiwgMHhBRSwgMHg2QywgMHg0MCwgMHg2RCwgMHhDMSwgMHgyMCwgMHgyQSwKKyAgICAweDAxLCAweEZCLCAweEM2LCAweDAyLCAweDE5LCAweEMxLCAweDg5LCAweDk4LCAweDQxLCAweDI0LCAweDlGLCAweENGLCAweEEyLCAweDQzLCAweDE1LCAweDNGLAorICAgIDB4QTcsIDB4OEYsIDB4NkYsIDB4QzYsIDB4NDcsIDB4OTEsIDB4MEEsIDB4QkEsIDB4N0IsIDB4RDMsIDB4NUUsIDB4RDIsIDB4QjMsIDB4NzAsIDB4MDAsIDB4ODYsCisgICAgMHhBRCwgMHhENiwgMHhGNCwgMHhDNCwgMHgxRCwgMHg3NiwgMHg5MCwgMHgyNiwgMHg0NywgMHhFMywgMHg2OSwgMHhBNSwgMHg4RSwgMHgyRSwgMHhCRiwgMHhBOCwKKyAgICAweDlELCAweDcyLCAweDg0LCAweDQxLCAweEMzLCAweDhFLCAweDRBLCAweDZCLCAweEU1LCAweEE1LCAweEIzLCAweDA1LCAweDY3LCAweERDLCAweDVGLCAweEFGLAorICAgIDB4RjAsIDB4MDYsIDB4MDgsIDB4OUMsIDB4OEUsIDB4MTAsIDB4REMsIDB4NzMsIDB4OTgsIDB4NzMsIDB4OUEsIDB4OUIsIDB4QTYsIDB4M0QsIDB4Q0YsIDB4QzIsCisgICAgMHgyRSwgMHg3RiwgMHgzNywgMHhGOCwgMHhDMiwgMHhDNiwgMHg0NSwgMHg2RCwgMHhEMywgMHgwMSwgMHg0OCwgMHg1NSwgMHg0RSwgMHg2MiwgMHhFRiwgMHg2NywKKyAgICAweEQ2LCAweEFDLCAweDdGLCAweDZFLCAweDlDLCAweDBBLCAweDFGLCAweDVELCAweDlGLCAweEI0LCAweDU1LCAweDRGLCAweEVCLCAweDlELCAweEZDLCAweERELAorICAgIDB4OTIsIDB4NDUsIDB4MUQsIDB4QUUsIDB4QkQsIDB4Q0EsIDB4Q0IsIDB4MDQsIDB4QjksIDB4MTgsIDB4M0EsIDB4QkIsIDB4MkIsIDB4OEMsIDB4OEEsIDB4ODAsCisgICAgMHg0RCwgMHgxQSwgMHgyNCwgMHgzOSwgMHhEQSwgMHgxMCwgMHg5NCwgMHhEQSwgMHhDOSwgMHg0QiwgMHgyRiwgMHgwRiwgMHg4NiwgMHgyNCwgMHgwQiwgMHg1MSwKKyAgICAweEY1LCAweDU3LCAweEJBLCAweDU3LCAweDIzLCAweDRELCAweDAzLCAweEFBLCAweEE0LCAweEMwLCAweDIzLCAweDdELCAweEY5LCAweDEzLCAweDAyLCAweDMwLAorICAgIDB4NDIsIDB4NEQsIDB4REEsIDB4RTAsIDB4NUUsIDB4MTEsIDB4OEUsIDB4QTcsIDB4MjEsIDB4MjAsIDB4RUEsIDB4MUYsIDB4MjYsIDB4RjEsIDB4NUMsIDB4Q0QsCisgICAgMHg5QywgMHg2RiwgMHgxRSwgMHhDQywgMHhFOCwgMHgyMywgMHhBNCwgMHhERCwgMHg0MCwgMHgzNiwgMHhGQywgMHg4QSwgMHg5NSwgMHg4MCwgMHhGRCwgMHg5MSwKKyAgICAweEQzLCAweDhGLCAweDYxLCAweDc1LCAweDZCLCAweDA5LCAweEY4LCAweDBBLCAweEJFLCAweDk0LCAweDI1LCAweDlDLCAweDAyLCAweEZELCAweDY1LCAweDUwLAorICAgIDB4NkYsIDB4OTAsIDB4QTUsIDB4OUUsIDB4REUsIDB4RDgsIDB4OTgsIDB4OTAsIDB4QkEsIDB4MDYsIDB4RUYsIDB4RjYsIDB4REMsIDB4MzcsIDB4NEYsIDB4NDYsCisgICAgMHgzRiwgMHhGNCwgMHhEMSwgMHg5MSwgMHhCMiwgMHgwRCwgMHhBNywgMHg1NiwgMHg3OCwgMHg3NiwgMHgzNSwgMHhFNywgMHgyRCwgMHg2NiwgMHgyQSwgMHhGOCwKKyAgICAweDVCLCAweEM1LCAweDFGLCAweDQxLCAweEIxLCAweDg5LCAweEI2LCAweDdDLCAweDQzLCAweDY4LCAweDhFLCAweDE5LCAweDQ0LCAweDAzLCAweDhDLCAweEQwLAorICAgIDB4Q0EsIDB4RUYsIDB4NjQsIDB4MzQsIDB4ODcsIDB4QzQsIDB4RUIsIDB4RDQsIDB4Q0QsIDB4MzMsIDB4MDcsIDB4NzEsIDB4NTcsIDB4QTcsIDB4REMsIDB4RTUsCisgICAgMHg2NSwgMHgyRSwgMHhEOSwgMHhFMSwgMHg3RiwgMHhBQSwgMHhDQSwgMHgxMSwgMHhFQywgMHhERiwgMHg4MywgMHhBQiwgMHhCRCwgMHg5QywgMHgyNywgMHhBQiwKKyAgICAweDVDLCAweDM0LCAweDZBLCAweDQ5LCAweERGLCAweEFELCAweDY4LCAweEZBLCAweDYxLCAweDM5LCAweERDLCAweDQ5LCAweDdELCAweEY1LCAweDc2LCAweEMyLAorICAgIDB4M0YsIDB4RDQsIDB4NDgsIDB4QTIsIDB4OUMsIDB4MkQsIDB4NTAsIDB4OTQsIDB4M0UsIDB4RjcsIDB4QjMsIDB4QkEsIDB4NzEsIDB4MjMsIDB4OUYsIDB4NjMsCisgICAgMHg1RiwgMHg2RCwgMHg0RCwgMHg4OSwgMHhBNSwgMHgzNywgMHgwMywgMHhEQiwgMHg3OSwgMHg4NywgMHgyNywgMHg5RSwgMHgxNSwgMHg2NSwgMHgxQywgMHg5RiwKKyAgICAweDYxLCAweDJCLCAweDM3LCAweEZGLCAweDg3LCAweEY0LCAweDE4LCAweEY4LCAweEJFLCAweEFBLCAweDFELCAweDRFLCAweEJDLCAweDAyLCAweDI2LCAweDFBLAorICAgIDB4QTUsIDB4M0UsIDB4NTIsIDB4OTcsIDB4MjEsIDB4RTEsIDB4RDIsIDB4REEsIDB4QzAsIDB4MkQsIDB4OEQsIDB4NEIsIDB4NTcsIDB4RkMsIDB4MDgsIDB4QUEsCisgICAgMHg3QywgMHg1OSwgMHhGOSwgMHhCRiwgMHgzQSwgMHhGMSwgMHg5NiwgMHg4MywgMHhBMiwgMHg1OSwgMHg3MCwgMHhBNCwgMHgwNiwgMHgxMywgMHg2QiwgMHgxNSwKKyAgICAweEE4LCAweENCLCAweEM4LCAweDBCLCAweDg1LCAweDMxLCAweDQyLCAweDNFLCAweDNFLCAweDgzLCAweDBDLCAweEFGLCAweDQwLCAweEFDLCAweEJFLCAweDZDLAorICAgIDB4NkUsIDB4MTcsIDB4OUEsIDB4QzYsIDB4NDUsIDB4Q0UsIDB4MUIsIDB4MUIsIDB4QkMsIDB4OTQsIDB4QkYsIDB4QTIsIDB4NTMsIDB4NUIsIDB4REYsIDB4OTUsCisgICAgMHhFRiwgMHg2QSwgMHg0MSwgMHg5MywgMHhDNCwgMHg1OCwgMHhFOSwgMHgyMCwgMHg2OCwgMHgyOCwgMHhCMSwgMHhBMywgMHg4MCwgMHg4MCwgMHg0OCwgMHhFRiwKKyAgICAweDdBLCAweDdDLCAweDExLCAweDMzLCAweDYyLCAweDE4LCAweEI3LCAweDQxLCAweDUyLCAweDM2LCAweEQ1LCAweEI2LCAweEMwLCAweDk1LCAweEQ3LCAweDcxLAorICAgIDB4MDAsIDB4MEIsIDB4MEEsIDB4ODYsIDB4RTcsIDB4MTMsIDB4OEQsIDB4RTYsIDB4NzMsIDB4MzMsIDB4QjUsIDB4OEIsIDB4RUUsIDB4QzMsIDB4Q0EsIDB4MjQsCisgICAgMHgxMiwgMHg5NiwgMHg4OSwgMHg5MSwgMHg5MCwgMHg5NSwgMHhDQSwgMHgyNCwgMHgzMCwgMHhEQiwgMHgyNSwgMHg5QiwgMHgxQiwgMHhGMiwgMHgxMywgMHhDQSwKKyAgICAweEMzLCAweDNBLCAweDhBLCAweDdFLCAweEVBLCAweEY5LCAweDdELCAweEIxLCAweEYwLCAweDY5LCAweEY4LCAweEQ5LCAweEEwLCAweEVFLCAweDNDLCAweEY4LAorICAgIDB4MDIsIDB4MzcsIDB4OTMsIDB4QjUsIDB4RTMsIDB4RDksIDB4N0IsIDB4NTQsIDB4RjEsIDB4M0EsIDB4OUQsIDB4MjAsIDB4QjAsIDB4RDIsIDB4QzYsIDB4QUUsCisgICAgMHg2MSwgMHgyNiwgMHg5MCwgMHg0QywgMHhBNSwgMHg5RCwgMHgyMCwgMHhFMSwgMHhFRiwgMHg0QSwgMHgwNywgMHhGNiwgMHhBRiwgMHhFOSwgMHgyOCwgMHhGNSwKKyAgICAweDlCLCAweDQ3LCAweERFLCAweEQxLCAweDY1LCAweDc2LCAweDBDLCAweDcwLCAweDQwLCAweEJDLCAweEE2LCAweEE0LCAweEUxLCAweEYyLCAweEVFLCAweDBCLAorICAgIDB4QUEsIDB4RjMsIDB4M0EsIDB4OEUsIDB4NEYsIDB4N0QsIDB4OUYsIDB4OTcsIDB4QjYsIDB4NjUsIDB4NTQsIDB4MTYsIDB4ODgsIDB4QUYsIDB4NUMsIDB4Q0QsCisgICAgMHhFMywgMHg2NiwgMHhFQiwgMHhCMiwgMHhBMiwgMHhBMiwgMHg1QiwgMHhFOSwgMHgwQSwgMHg1NCwgMHg5QiwgMHgwRSwgMHg1MCwgMHg0RiwgMHg4OSwgMHhBRCwKKyAgICAweDY3LCAweDExLCAweDQ4LCAweDMzLCAweDA4LCAweDQ3LCAweEE2LCAweEUxLCAweEI0LCAweDAzLCAweEY1LCAweDY1LCAweDJCLCAweEQxLCAweEY3LCAweEM3LAorICAgIDB4NDgsIDB4M0QsIDB4MUEsIDB4MzMsIDB4QTYsIDB4MUUsIDB4NzEsIDB4MUMsIDB4MDIsIDB4MEEsIDB4NDcsIDB4OUMsIDB4RTEsIDB4OTcsIDB4QjMsIDB4MTQsCisgICAgMHhENCwgMHhFQSwgMHhGQSwgMHhGOSwgMHhGRiwgMHgzNSwgMHg2NywgMHhBQSwgMHhDMywgMHgyRSwgMHg3OCwgMHgzMywgMHgzRCwgMHgwMywgMHgxNywgMHg3OCwKKyAgICAweDBCLCAweEM3LCAweDY4LCAweEMxLCAweDE5LCAweDRELCAweDIxLCAweEZFLCAweEQ3LCAweDg0LCAweEI4LCAweEEwLCAweDUwLCAweDM2LCAweEU2LCAweDk4LAorICAgIDB4RTcsIDB4NUMsIDB4RjIsIDB4MEMsIDB4QUMsIDB4OEQsIDB4OUUsIDB4QjQsIDB4QzQsIDB4RkIsIDB4MjksIDB4NTAsIDB4OUYsIDB4RjcsIDB4MjcsIDB4RUIsCisgICAgMHgyMiwgMHhEQiwgMHhEMSwgMHgxOSwgMHg4RSwgMHgxQywgMHhDNCwgMHg4QywgMHg4NCwgMHhGOCwgMHgwRCwgMHhCNCwgMHgxRiwgMHg4MCwgMHg5MSwgMHg3MCwKKyAgICAweEUxLCAweEZDLCAweDY0LCAweEUyLCAweDVCLCAweEQ4LCAweDA3LCAweDY3LCAweDg3LCAweEEyLCAweDdFLCAweDM3LCAweEU0LCAweDdBLCAweEJGLCAweDg3LAorICAgIDB4RTQsIDB4MUYsIDB4MDUsIDB4QUUsIDB4MjUsIDB4QTUsIDB4OEMsIDB4Q0UsIDB4QjUsIDB4NUYsIDB4ODcsIDB4NzcsIDB4Q0YsIDB4OEUsIDB4MTgsIDB4QTcsCisgICAgMHhBQiwgMHg0RSwgMHgxNiwgMHhCMSwgMHhGQywgMHg3MCwgMHg5QywgMHgwMCwgMHg0RCwgMHhDNiwgMHg5RiwgMHg5MiwgMHgzRiwgMHg0MiwgMHhBRiwgMHhCNCwKKyAgICAweEQwLCAweDM2LCAweDEzLCAweEYwLCAweEEzLCAweEZFLCAweDBFLCAweDRCLCAweEEzLCAweEI5LCAweEQ2LCAweEYwLCAweDVGLCAweEQzLCAweDI5LCAweERELAorICAgIDB4QjAsIDB4MjcsIDB4NDksIDB4MTMsIDB4OUYsIDB4MkIsIDB4RjgsIDB4Q0IsIDB4NjIsIDB4QzIsIDB4QkYsIDB4ODAsIDB4MUQsIDB4NjIsIDB4MjMsIDB4NUIsCisgICAgMHhDRSwgMHgxOSwgMHg2RiwgMHhFMSwgMHhBQSwgMHhEOSwgMHg5OSwgMHgwRiwgMHg0OCwgMHg3MiwgMHhGRSwgMHhFRiwgMHg1MiwgMHg1OCwgMHgzOSwgMHhGNiwKKyAgICAweDRBLCAweDk4LCAweDRBLCAweEVGLCAweENGLCAweEEzLCAweDcxLCAweDkyLCAweEM2LCAweEM2LCAweDhGLCAweDM5LCAweEVELCAweDdELCAweDBCLCAweDZDLAorICAgIDB4NjIsIDB4RTEsIDB4QTgsIDB4MEUsIDB4NjIsIDB4RjcsIDB4NTksIDB4RDYsIDB4QjAsIDB4NjcsIDB4ODIsIDB4MTIsIDB4NUMsIDB4QTksIDB4QkMsIDB4NTIsCisgICAgMHg3RiwgMHhDRiwgMHhEMywgMHgzMywgMHg3QSwgMHg5OCwgMHhGRSwgMHg4RSwgMHg3MCwgMHgzMSwgMHhCOSwgMHg4MiwgMHgzNywgMHhEMiwgMHgzNywgMHhDOSwKKyAgICAweEVFLCAweDFDLCAweEJDLCAweDc2LCAweDBCLCAweEJELCAweDk1LCAweEQ0LCAweEQwLCAweDlDLCAweEVFLCAweDlGLCAweDhBLCAweDlDLCAweEEwLCAweDM0LAorICAgIDB4RkUsIDB4OEQsIDB4NjQsIDB4RjAsIDB4REEsIDB4MDIsIDB4MTcsIDB4QTMsIDB4MjYsIDB4NjgsIDB4NEIsIDB4RTgsIDB4NTQsIDB4RjcsIDB4RTEsIDB4OTQsCisgICAgMHg2RCwgMHhBOSwgMHg1RSwgMHg4QiwgMHg4NiwgMHgxMywgMHhEQiwgMHg1QywgMHgwQywgMHhGMCwgMHgzQywgMHg0MCwgMHg0RiwgMHgwRCwgMHgxNSwgMHhENywKKyAgICAweEU3LCAweDQ4LCAweDNGLCAweEM2LCAweDMzLCAweDI0LCAweDMwLCAweDgzLCAweDUwLCAweDMwLCAweEJDLCAweEQ3LCAweEU1LCAweDI1LCAweDMyLCAweDExLAorICAgIDB4RDAsIDB4QTcsIDB4RTMsIDB4N0MsIDB4NEQsIDB4RTQsIDB4NDYsIDB4RTMsIDB4Q0IsIDB4RjcsIDB4MDQsIDB4NDksIDB4RkYsIDB4NUYsIDB4MEMsIDB4RkUsCisgICAgMHgzNiwgMHhFRSwgMHgzOSwgMHg0NiwgMHg1QiwgMHg0MSwgMHg3RCwgMHgxQiwgMHhGMCwgMHhDRiwgMHg5MCwgMHhFRiwgMHg3MiwgMHg2RSwgMHg2MSwgMHhFNSwKKyAgICAweDI2LCAweEM3LCAweEM1LCAweDZBLCAweENBLCAweDQwLCAweDdBLCAweDMwLCAweDhFLCAweDBBLCAweDJGLCAweERELCAweDY0LCAweDk1LCAweEY3LCAweDE5LAorICAgIDB4NkQsIDB4MEYsIDB4REIsIDB4ODAsIDB4RkIsIDB4OUUsIDB4NkIsIDB4MzYsIDB4RDYsIDB4MUUsIDB4MEEsIDB4MzQsIDB4N0EsIDB4OEIsIDB4MUIsIDB4QjksCisgICAgMHhBOCwgMHhCQiwgMHg0OSwgMHg2NywgMHhDQSwgMHg3RSwgMHhENiwgMHgyNywgMHg2RiwgMHhBQywgMHhFRCwgMHgyNSwgMHg4OSwgMHhGRCwgMHhCNCwgMHgxMSwKKyAgICAweDJGLCAweDQzLCAweDc0LCAweDQwLCAweDJELCAweDczLCAweDIwLCAweEExLCAweDk0LCAweDlFLCAweDc5LCAweDVELCAweDIwLCAweDg4LCAweEQ1LCAweDFGLAorICAgIDB4MTMsIDB4MTAsIDB4MzUsIDB4N0EsIDB4NEMsIDB4RjAsIDB4NUIsIDB4MDksIDB4OTYsIDB4NzUsIDB4NkYsIDB4NUYsIDB4RUQsIDB4OUQsIDB4NjgsIDB4QkQsCisgICAgMHgwRCwgMHg3NywgMHg1QywgMHg4NSwgMHgxMywgMHgzQSwgMHgxMSwgMHgwRCwgMHgwQSwgMHg5MCwgMHg5OCwgMHg4RiwgMHhDRSwgMHg0QywgMHhFNSwgMHg0NiwKKyAgICAweDQwLCAweDg2LCAweDc1LCAweEE1LCAweDQ5LCAweDVDLCAweDEyLCAweDU3LCAweEY4LCAweDQ4LCAweDg2LCAweEQ0LCAweDgxLCAweEE0LCAweDQ3LCAweDM5LAorICAgIDB4MTksIDB4NDIsIDB4MjMsIDB4NDQsIDB4N0YsIDB4NTcsIDB4OUMsIDB4OTUsIDB4QTEsIDB4RkQsIDB4M0UsIDB4QTYsIDB4MjksIDB4ODQsIDB4RjYsIDB4OEYsCisgICAgMHg4NywgMHg3OSwgMHg4QiwgMHhGNiwgMHg0NSwgMHg1QSwgMHg5QiwgMHg3RSwgMHhCQiwgMHhDMSwgMHhEMywgMHhCNywgMHhFNCwgMHgxOCwgMHhCMCwgMHg2MSwKKyAgICAweDc3LCAweEI0LCAweDEyLCAweDI1LCAweEVFLCAweDZDLCAweDNELCAweDZDLCAweEE5LCAweEZFLCAweDY3LCAweERFLCAweENDLCAweDhGLCAweDExLCAweEMxLAorICAgIDB4OEEsIDB4RDYsIDB4NzIsIDB4QUMsIDB4NDUsIDB4NzcsIDB4RUYsIDB4RDMsIDB4OTYsIDB4NDEsIDB4QTcsIDB4QzEsIDB4OTIsIDB4MTUsIDB4OTMsIDB4NDQsCisgICAgMHgxOCwgMHgwOCwgMHgxNCwgMHg3QywgMHhBQiwgMHhDRSwgMHhCRiwgMHhGQSwgMHg4OSwgMHhFRiwgMHhBRCwgMHgwOSwgMHg5QSwgMHhCOSwgMHg4QSwgMHg3RCwKKyAgICAweEQ1LCAweEEyLCAweDgyLCAweDkwLCAweDEwLCAweDRFLCAweEQ2LCAweENDLCAweDA0LCAweDQzLCAweDIxLCAweDZCLCAweERGLCAweEU0LCAweDU2LCAweEU5LAorICAgIDB4N0QsIDB4MTcsIDB4Q0QsIDB4QzEsIDB4M0EsIDB4QzAsIDB4QTEsIDB4ODMsIDB4Q0UsIDB4QzgsIDB4OTAsIDB4MkUsIDB4QTYsIDB4NzMsIDB4NDQsIDB4NzIsCisgICAgMHgxMCwgMHg3QiwgMHgwMywgMHhEQiwgMHgyRiwgMHhDQSwgMHg5QywgMHg3MSwgMHg0NCwgMHgwNiwgMHhBQywgMHhDQiwgMHg0QSwgMHgwOSwgMHhGMCwgMHgwOCwKKyAgICAweDFDLCAweDk5LCAweDQ5LCAweDEzLCAweDE5LCAweDZFLCAweEVFLCAweDRDLCAweEEyLCAweEU0LCAweEI4LCAweEEwLCAweDM2LCAweEUyLCAweDlDLCAweDEzLAorICAgIDB4N0UsIDB4NkMsIDB4OUIsIDB4M0MsIDB4NzQsIDB4NUEsIDB4NTAsIDB4OTAsIDB4OEMsIDB4RTEsIDB4MjQsIDB4NzYsIDB4MTQsIDB4RjcsIDB4MkUsIDB4NzcsCisgICAgMHgyNCwgMHg2NCwgMHhGQSwgMHgzNywgMHgwQywgMHhFMSwgMHg5MCwgMHhEQiwgMHhCNCwgMHg0QywgMHg5RSwgMHhDNSwgMHgyNiwgMHhBOCwgMHhFRCwgMHgwMiwKKyAgICAweDcyLCAweDRELCAweEY0LCAweDkxLCAweDk0LCAweERGLCAweDc3LCAweDNCLCAweDk2LCAweEI5LCAweDQyLCAweDM0LCAweEQyLCAweEI3LCAweDFFLCAweDQ5LAorICAgIDB4QkQsIDB4MjksIDB4QkIsIDB4M0MsIDB4QzYsIDB4NUIsIDB4M0YsIDB4MTUsIDB4RTUsIDB4OEYsIDB4MEUsIDB4MjMsIDB4QTUsIDB4RDUsIDB4NzMsIDB4MDYsCisgICAgMHg2RiwgMHhFRiwgMHg3MywgMHg1MSwgMHhCMiwgMHhDOCwgMHhENCwgMHg0NCwgMHhGQywgMHgyNSwgMHg5NSwgMHhBOSwgMHg0NCwgMHg1NywgMHhCNywgMHg4MCwKKyAgICAweDA3LCAweEIwLCAweENFLCAweDU4LCAweDEyLCAweEZGLCAweEQzLCAweEQ5LCAweDEzLCAweERELCAweDExLCAweDI2LCAweDVCLCAweEMzLCAweDVCLCAweEVFLAorICAgIDB4QTksIDB4NTMsIDB4MTksIDB4RTksIDB4MzEsIDB4OUMsIDB4MUIsIDB4M0EsIDB4MkEsIDB4OUYsIDB4RDksIDB4N0MsIDB4N0EsIDB4NTUsIDB4NTIsIDB4NDAsCisgICAgMHhFMCwgMHhFQywgMHgxMSwgMHgzOSwgMHg3RSwgMHgwOSwgMHhENywgMHhFNywgMHhDRiwgMHhDNywgMHg2NywgMHhEQiwgMHhERSwgMHgwMiwgMHg5MiwgMHhFRiwKKyAgICAweDQ3LCAweDJDLCAweDU0LCAweEZELCAweEU0LCAweDM3LCAweEM2LCAweDlGLCAweDUxLCAweDY2LCAweDk2LCAweDg0LCAweDE5LCAweDk0LCAweDkwLCAweEU2LAorICAgIDB4NEUsIDB4NDMsIDB4MkEsIDB4QjksIDB4MTMsIDB4NDAsIDB4OUMsIDB4RTksIDB4ODksIDB4QTIsIDB4MkIsIDB4OEUsIDB4OEMsIDB4MzksIDB4NDIsIDB4NDIsCisgICAgMHhGOCwgMHhEOSwgMHg1QSwgMHg4NiwgMHgwRSwgMHhBNiwgMHgzQSwgMHg5RSwgMHhBOCwgMHhBNSwgMHgyMywgMHgxOSwgMHg1OCwgMHhEQiwgMHg0QywgMHg0NiwKKyAgICAweENBLCAweDI2LCAweDUwLCAweDBCLCAweEQyLCAweDZBLCAweDlCLCAweEJFLCAweDYzLCAweDU1LCAweEY0LCAweDQyLCAweEQ4LCAweDIwLCAweENELCAweDU1LAorICAgIDB4MDEsIDB4QTAsIDB4M0QsIDB4RTMsIDB4OTcsIDB4MjMsIDB4MTQsIDB4RjEsIDB4NkEsIDB4MkEsIDB4NUEsIDB4QTksIDB4QkQsIDB4MDEsIDB4NUUsIDB4NTYsCisgICAgMHg4RiwgMHhDNywgMHgzMSwgMHg2RiwgMHhCQiwgMHg3OCwgMHg4OCwgMHgwMSwgMHhGMCwgMHgwMCwgMHhEMiwgMHgxQiwgMHg0MCwgMHg2RCwgMHg1MCwgMHhEMCwKKyAgICAweENCLCAweDQ0LCAweDM1LCAweDNBLCAweEJDLCAweEJCLCAweDZGLCAweDZDLCAweEY0LCAweERCLCAweDZGLCAweDU0LCAweDI3LCAweDhDLCAweDBBLCAweDVBLAorICAgIDB4RTgsIDB4NTYsIDB4QzksIDB4MjgsIDB4NDQsIDB4QkMsIDB4RjcsIDB4NzAsIDB4RjAsIDB4OTUsIDB4MTcsIDB4QTEsIDB4MEIsIDB4OTEsIDB4REYsIDB4ODAsCisgICAgMHhGOCwgMHhGMywgMHhGOSwgMHhCOSwgMHgxQywgMHhFQiwgMHg4MSwgMHgzMSwgMHgxOCwgMHhFMiwgMHhCNiwgMHhGOCwgMHg4MCwgMHg2NCwgMHg2MSwgMHgxRiwKKyAgICAweEQ5LCAweDE0LCAweDZDLCAweDY0LCAweEU4LCAweERCLCAweDQ1LCAweDVFLCAweDE2LCAweEQ0LCAweERCLCAweEM5LCAweDEzLCAweDcwLCAweDRCLCAweDBFLAorICAgIDB4NDAsIDB4ODAsIDB4QjksIDB4Q0EsIDB4OUUsIDB4QjcsIDB4ODUsIDB4ODgsIDB4REEsIDB4RjgsIDB4MTMsIDB4RkUsIDB4NTEsIDB4MjgsIDB4QjksIDB4NkUsCisgICAgMHg2NSwgMHg5MiwgMHhBQSwgMHg0NSwgMHg2OCwgMHhDNiwgMHg4MiwgMHhDQywgMHhCQSwgMHgyOCwgMHg2RSwgMHhDRiwgMHg1NCwgMHg3QSwgMHhCNCwgMHg4QSwKKyAgICAweDhBLCAweDkyLCAweDNDLCAweDJGLCAweDU1LCAweDZBLCAweEUzLCAweDIzLCAweDI3LCAweDRCLCAweEZBLCAweDEzLCAweDU4LCAweEI1LCAweEFFLCAweDlELAorICAgIDB4QTMsIDB4NzcsIDB4MjUsIDB4RkEsIDB4NzAsIDB4NTksIDB4NUEsIDB4MzQsIDB4NEMsIDB4RjEsIDB4QTksIDB4OUEsIDB4MzcsIDB4MkIsIDB4RUYsIDB4QTAsCisgICAgMHg4NSwgMHhCNywgMHg5NywgMHg3NCwgMHgwNCwgMHhEMCwgMHgwOCwgMHhGRSwgMHgwMSwgMHg3QiwgMHgzMywgMHg0NCwgMHhCOCwgMHg0NCwgMHgxMiwgMHhFNiwKKyAgICAweDFELCAweENGLCAweEUwLCAweDhELCAweERFLCAweDkyLCAweDkzLCAweDQ5LCAweEI4LCAweDJCLCAweDY1LCAweDBELCAweDM4LCAweDU1LCAweDNCLCAweDkwLAorICAgIDB4ODksIDB4MDEsIDB4NDAsIDB4RUIsIDB4RjEsIDB4MzMsIDB4NUMsIDB4MzYsIDB4QUEsIDB4RjcsIDB4ODQsIDB4NzUsIDB4OEEsIDB4QjEsIDB4RTQsIDB4NjgsCisgICAgMHg2RiwgMHgzQywgMHg3QywgMHg4NCwgMHg3MSwgMHgwNiwgMHg1NywgMHhDNCwgMHg4MywgMHg5RiwgMHg2QSwgMHg5NiwgMHg4RiwgMHhFQiwgMHhBNiwgMHg1OSwKKyAgICAweEJCLCAweDJELCAweDY4LCAweDM1LCAweDhGLCAweEJGLCAweDhELCAweEZFLCAweEM4LCAweEJDLCAweEE3LCAweDQxLCAweDk3LCAweDE3LCAweDQ5LCAweDgyLAorICAgIDB4NkUsIDB4NEQsIDB4QjAsIDB4RTgsIDB4QzksIDB4MTAsIDB4NTcsIDB4N0IsIDB4OUMsIDB4MDMsIDB4REQsIDB4OTAsIDB4RTMsIDB4MTUsIDB4MzAsIDB4OUEsCisgICAgMHg2NiwgMHhBQiwgMHhGOCwgMHg5QSwgMHg2OSwgMHhCRSwgMHg2RSwgMHg3NCwgMHgzQywgMHhGNCwgMHhERCwgMHgwRCwgMHg3NywgMHg3NywgMHgzMCwgMHgyQywKKyAgICAweDNDLCAweDJCLCAweDdFLCAweDAxLCAweDkwLCAweEZELCAweEQ3LCAweEYxLCAweDg3LCAweDAzLCAweDYxLCAweDg3LCAweDhCLCAweDQ2LCAweDVDLCAweDAyLAorICAgIDB4MjAsIDB4NUMsIDB4QjAsIDB4OEMsIDB4NTYsIDB4NTEsIDB4QTMsIDB4RkUsIDB4MTUsIDB4MjgsIDB4MjQsIDB4QzcsIDB4NDMsIDB4RTksIDB4MTUsIDB4NDMsCisgICAgMHhBNywgMHhENywgMHgyMSwgMHgxMiwgMHg4OCwgMHhENSwgMHgzMiwgMHhBRSwgMHgwNCwgMHhDOCwgMHgzRSwgMHgyOCwgMHg3RSwgMHgwOCwgMHhENCwgMHg5NywKKyAgICAweDVFLCAweENGLCAweDYwLCAweEYxLCAweDQyLCAweDk2LCAweDJCLCAweEVELCAweEFFLCAweDcxLCAweDQzLCAweEQwLCAweDA0LCAweDQ4LCAweDY1LCAweDAzLAorICAgIDB4OUEsIDB4RkEsIDB4NzcsIDB4NDUsIDB4NUEsIDB4RkMsIDB4NDgsIDB4MTIsIDB4MTYsIDB4Q0YsIDB4QUYsIDB4MTMsIDB4RTQsIDB4MDMsIDB4Q0MsIDB4OEYsCisgICAgMHhGNCwgMHhCNSwgMHg2OCwgMHhCMywgMHhGNSwgMHg1MywgMHgxMywgMHg0MiwgMHgyNiwgMHg4RiwgMHhCNSwgMHg3MSwgMHg4RSwgMHg5QiwgMHhCMywgMHgyRSwKKyAgICAweEY2LCAweDlGLCAweDFFLCAweDRBLCAweEJDLCAweEI5LCAweEQ4LCAweEE1LCAweDc3LCAweENFLCAweDk1LCAweDk0LCAweEUzLCAweDlGLCAweEQ4LCAweEFELAorICAgIDB4NTMsIDB4NzksIDB4MDMsIDB4QTYsIDB4NTcsIDB4RjcsIDB4MTMsIDB4RDUsIDB4NjYsIDB4MjUsIDB4NjYsIDB4ODgsIDB4NzgsIDB4RjcsIDB4RjYsIDB4MzUsCisgICAgMHhGOSwgMHhDQywgMHg3RiwgMHhDNiwgMHgzNiwgMHhBRCwgMHhDMiwgMHg3MCwgMHgzNCwgMHg5NCwgMHhBQSwgMHhFRCwgMHhDQSwgMHg0QSwgMHgxNCwgMHgxNiwKKyAgICAweEY2LCAweDZFLCAweDQ2LCAweEU4LCAweDMyLCAweDYzLCAweERGLCAweDg4LCAweDY2LCAweDY1LCAweDZFLCAweEEzLCAweENGLCAweERCLCAweDFFLCAweDVCLAorICAgIDB4RkQsIDB4Q0IsIDB4QjEsIDB4OTksIDB4NEEsIDB4NjUsIDB4RDMsIDB4MjQsIDB4RDgsIDB4QzksIDB4QTEsIDB4QUEsIDB4MDYsIDB4QTksIDB4NEMsIDB4RjUsCisgICAgMHg3QywgMHg5RSwgMHg5OCwgMHg3NywgMHgxMiwgMHhDMiwgMHhBOSwgMHhGOSwgMHg4RCwgMHg1RiwgMHg0MywgMHgxQiwgMHg5RCwgMHhFQiwgMHhEMiwgMHgyOCwKKyAgICAweDJDLCAweDU0LCAweDYwLCAweDk3LCAweDVBLCAweDcwLCAweDI4LCAweDc4LCAweENBLCAweDQzLCAweEQxLCAweEJBLCAweEEzLCAweDVGLCAweDQ5LCAweDZBLAorICAgIDB4MEMsIDB4MkEsIDB4NTMsIDB4MDksIDB4RjgsIDB4NUUsIDB4ODksIDB4NUMsIDB4NkEsIDB4NUQsIDB4MkEsIDB4OEIsIDB4NTgsIDB4N0QsIDB4MTksIDB4MUEsCisgICAgMHhGMSwgMHgxQiwgMHg1QSwgMHgxMiwgMHhFNywgMHgwOSwgMHg5QywgMHg4OCwgMHhENSwgMHhENywgMHgxNSwgMHhGQiwgMHhERiwgMHg2MiwgMHhBOSwgMHg1NCwKKyAgICAweEQ3LCAweEQ1LCAweDdBLCAweDJCLCAweEJGLCAweENBLCAweDBCLCAweEI5LCAweDA3LCAweEI0LCAweEM5LCAweDE3LCAweDgxLCAweDMzLCAweDA3LCAweDI1LAorICAgIDB4RTIsIDB4MEEsIDB4NkMsIDB4RjQsIDB4RDEsIDB4RjcsIDB4RjcsIDB4NjUsIDB4REUsIDB4NzEsIDB4MDAsIDB4NzIsIDB4OUMsIDB4MkEsIDB4QkMsIDB4MzEsCisgICAgMHhDMCwgMHg5NCwgMHg4NSwgMHg5MywgMHg5QywgMHg2NSwgMHhBNiwgMHhGMSwgMHgyRiwgMHgwMSwgMHg4QiwgMHhEOCwgMHg2NiwgMHgzRSwgMHg5NiwgMHhCNiwKKyAgICAweDk2LCAweEEwLCAweDc4LCAweEEzLCAweDg1LCAweDM1LCAweDZDLCAweDNBLCAweDM3LCAweDA5LCAweDc2LCAweDEyLCAweEIxLCAweEE4LCAweEM1LCAweEUzLAorICAgIDB4NTMsIDB4RkIsIDB4MTcsIDB4QjQsIDB4MTAsIDB4RDEsIDB4MEYsIDB4RkEsIDB4RTcsIDB4NDIsIDB4NTgsIDB4MjAsIDB4NzIsIDB4NzksIDB4QzIsIDB4OTQsCisgICAgMHhBRiwgMHhGNywgMHg3RCwgMHgzNSwgMHhEMywgMHg0OCwgMHgyMywgMHg2NywgMHgwRiwgMHhENywgMHg2NSwgMHhFMCwgMHg0OCwgMHgwNSwgMHg3RSwgMHgwOSwKKyAgICAweEU2LCAweDBBLCAweDRCLCAweEQyLCAweEIwLCAweEI5LCAweDg0LCAweDEyLCAweEFGLCAweDRCLCAweDkyLCAweERELCAweDMwLCAweDRCLCAweDlGLCAweERDLAorICAgIDB4RDUsIDB4NUQsIDB4RDQsIDB4NUEsIDB4MTMsIDB4RTYsIDB4QjcsIDB4MTgsIDB4MTgsIDB4QzAsIDB4NTIsIDB4MTgsIDB4QkYsIDB4QzIsIDB4QjgsIDB4N0QsCisgICAgMHgyQiwgMHgyQSwgMHgzNiwgMHg3QSwgMHg2MywgMHg2RSwgMHhGNywgMHg1OSwgMHg2MSwgMHhDMywgMHg5NywgMHgzMSwgMHhERCwgMHg2MSwgMHgxNSwgMHgxQiwKKyAgICAweDMwLCAweEMzLCAweERELCAweEY1LCAweDUxLCAweDJGLCAweDc3LCAweEI0LCAweDU0LCAweDZFLCAweDRELCAweDk4LCAweDEzLCAweERCLCAweDNFLCAweDRDLAorICAgIDB4QTksIDB4Q0YsIDB4NzcsIDB4QzgsIDB4MkQsIDB4OEUsIDB4NDksIDB4REEsIDB4NjcsIDB4QkEsIDB4NkMsIDB4MzcsIDB4NTQsIDB4QUIsIDB4NTUsIDB4ODAsCisgICAgMHgxNSwgMHg5NCwgMHg1RiwgMHhCNiwgMHg0RCwgMHg2QiwgMHhCMywgMHhBMywgMHgxMywgMHhCRCwgMHg3QywgMHg0NywgMHhFMywgMHhBNSwgMHg3MCwgMHg5QiwKKyAgICAweEVDLCAweDVDLCAweDk0LCAweDYwLCAweEM5LCAweEVBLCAweEQ2LCAweDY0LCAweEVFLCAweDNCLCAweDhGLCAweDRFLCAweEUyLCAweDA3LCAweDYxLCAweEM2LAorICAgIDB4QTQsIDB4NjQsIDB4OEEsIDB4QTEsIDB4RjksIDB4NTcsIDB4QzIsIDB4RUEsIDB4ODksIDB4OTUsIDB4MTIsIDB4NjcsIDB4RTAsIDB4QzYsIDB4Q0YsIDB4NDQsCisgICAgMHg0MCwgMHg5OCwgMHg4RSwgMHhCNywgMHhERiwgMHhGRiwgMHhDQiwgMHhBQSwgMHhFRiwgMHhDNSwgMHg3MiwgMHg4RCwgMHhENCwgMHhDNywgMHg1OCwgMHg2MCwKKyAgICAweDlELCAweEUxLCAweEQ2LCAweDFELCAweDNBLCAweDEyLCAweEJBLCAweDVFLCAweEE5LCAweEFCLCAweDIxLCAweEI5LCAweDJFLCAweEUwLCAweDA0LCAweDQ3LAorICAgIDB4MUIsIDB4QjIsIDB4MzcsIDB4MjgsIDB4RUQsIDB4N0YsIDB4N0QsIDB4MjQsIDB4NjMsIDB4MkQsIDB4OTgsIDB4MDQsIDB4NEQsIDB4MUUsIDB4NkIsIDB4RTcsCisgICAgMHgxMSwgMHgxQywgMHhFRCwgMHhCMSwgMHgwMiwgMHg2NCwgMHg2MywgMHg1MSwgMHg3MSwgMHg2RSwgMHhCMSwgMHgzRCwgMHhBRCwgMHhFMSwgMHhFQiwgMHgzQiwKKyAgICAweDIzLCAweDUxLCAweEUzLCAweDQ1LCAweEE0LCAweDgzLCAweEIyLCAweDgzLCAweEQ5LCAweDQzLCAweDVDLCAweEY2LCAweDk5LCAweERFLCAweEM4LCAweEQyLAorICAgIDB4QjcsIDB4MTEsIDB4MjYsIDB4RjMsIDB4RUEsIDB4NjksIDB4RkUsIDB4NTQsIDB4MjIsIDB4MzMsIDB4Q0QsIDB4REUsIDB4RTQsIDB4MkYsIDB4NjUsIDB4MTksCisgICAgMHhBMCwgMHgzRSwgMHhEQiwgMHg0RSwgMHhCMCwgMHg0QSwgMHhGQSwgMHg1NywgMHg0NywgMHgxMywgMHg4NCwgMHg3QiwgMHg3MywgMHgzQiwgMHg4RSwgMHhCMSwKKyAgICAweDhBLCAweDFDLCAweDgwLCAweDBDLCAweDlELCAweDY3LCAweEYzLCAweEQ1LCAweDAwLCAweEQ3LCAweERBLCAweDkyLCAweEE1LCAweEY3LCAweEU0LCAweDhELAorICAgIDB4NjAsIDB4NDgsIDB4RDIsIDB4NUMsIDB4RjYsIDB4OUEsIDB4MEQsIDB4OTQsIDB4RTQsIDB4MTksIDB4NzUsIDB4Q0YsIDB4RTIsIDB4Q0QsIDB4MjIsIDB4RDUsCisgICAgMHg4NywgMHg5QywgMHgzNiwgMHg2NSwgMHhDNywgMHgzNiwgMHgwRCwgMHg1QiwgMHg1QywgMHg3QSwgMHgwOCwgMHhDNywgMHg5OCwgMHhGNSwgMHhBRSwgMHgwNCwKKyAgICAweDQ1LCAweENFLCAweDMyLCAweDFBLCAweDI1LCAweEM5LCAweDFGLCAweDJFLCAweDk2LCAweDk1LCAweDYyLCAweDk3LCAweDRDLCAweDI3LCAweDgyLCAweEI5LAorICAgIDB4MEEsIDB4RkEsIDB4MEQsIDB4RTMsIDB4RjEsIDB4RUEsIDB4RDYsIDB4NTksIDB4M0EsIDB4NkMsIDB4OUIsIDB4MjgsIDB4Q0EsIDB4OEEsIDB4MTksIDB4NzksCisgICAgMHg1QywgMHhFOSwgMHhGRiwgMHhGRCwgMHg5MywgMHg1NCwgMHgyNiwgMHhGNCwgMHgwOSwgMHg1OCwgMHhCOSwgMHg0MSwgMHg5MCwgMHgyQywgMHg3NCwgMHg5OCwKKyAgICAweDQ1LCAweDlBLCAweDcxLCAweDEyLCAweDA2LCAweDUyLCAweEFBLCAweDMxLCAweEFELCAweEVBLCAweDk3LCAweDgxLCAweDMzLCAweEQ2LCAweEEzLCAweDU0LAorICAgIDB4Q0EsIDB4OUQsIDB4NUUsIDB4RjEsIDB4ODcsIDB4REQsIDB4QUIsIDB4MUUsIDB4RjEsIDB4MUIsIDB4QTQsIDB4RkQsIDB4NzQsIDB4NjAsIDB4OTMsIDB4RDYsCisgICAgMHgwMSwgMHg5RiwgMHg1QywgMHgyRCwgMHg3RCwgMHhFNywgMHhCOCwgMHg3NiwgMHgzNiwgMHg4MCwgMHhEMCwgMHg2MywgMHgyNywgMHhDOCwgMHg5NCwgMHgxNSwKKyAgICAweDRCLCAweDFDLCAweEMyLCAweDZCLCAweDY3LCAweDIzLCAweEVDLCAweEFDLCAweEQyLCAweEVCLCAweEM1LCAweDVELCAweDc4LCAweDgxLCAweEQ2LCAweDMwLAorICAgIDB4REQsIDB4QTYsIDB4MkMsIDB4RUUsIDB4MTYsIDB4REEsIDB4OEIsIDB4QTAsIDB4OUQsIDB4MjAsIDB4RjgsIDB4NjIsIDB4ODcsIDB4NkQsIDB4QzIsIDB4OUMsCisgICAgMHg4MCwgMHg1MywgMHgzQywgMHgyMCwgMHgwNiwgMHg3OCwgMHg3MSwgMHhENywgMHhBNiwgMHgwRCwgMHhFQSwgMHhBOCwgMHg1OCwgMHhBNiwgMHgyMSwgMHg3NywKKyAgICAweENCLCAweEQwLCAweDZGLCAweDA1LCAweDdBLCAweDQ3LCAweDFDLCAweEZCLCAweEEwLCAweDRELCAweEQ4LCAweDIyLCAweEQxLCAweEUzLCAweDlCLCAweDE0LAorICAgIDB4OTgsIDB4RjQsIDB4QUUsIDB4MjAsIDB4RUMsIDB4NjQsIDB4RDksIDB4QzYsIDB4QkYsIDB4QjEsIDB4NDAsIDB4MUEsIDB4NEMsIDB4NjYsIDB4QzMsIDB4MkIsCisgICAgMHhDMCwgMHhFNywgMHhEMywgMHg2MSwgMHg0QywgMHg2RCwgMHhGOCwgMHg1RCwgMHhDOSwgMHgzMywgMHg5MiwgMHhDNCwgMHgxRCwgMHhBMywgMHhGNSwgMHg2OSwKKyAgICAweDEwLCAweEYzLCAweDRCLCAweDMxLCAweDFDLCAweDFELCAweDExLCAweDhFLCAweEIwLCAweEY4LCAweEQ5LCAweDNBLCAweEJGLCAweDA2LCAweEMxLCAweEIwLAorICAgIDB4MjcsIDB4OEIsIDB4QjYsIDB4OUUsIDB4N0MsIDB4NkUsIDB4MjcsIDB4MTUsIDB4RjEsIDB4RTAsIDB4RTcsIDB4MzEsIDB4ODcsIDB4MTAsIDB4OTQsIDB4MkMsCisgICAgMHgwRCwgMHhDNiwgMHg3NSwgMHg1NCwgMHhEMiwgMHg1QSwgMHhFNCwgMHgyNSwgMHhBNywgMHhCOSwgMHgxNiwgMHg0QSwgMHg5MywgMHg4RSwgMHgxRCwgMHg4NCwKKyAgICAweDA2LCAweERDLCAweDg0LCAweERFLCAweDU3LCAweDlELCAweEY3LCAweEMxLCAweDY4LCAweDA4LCAweDY3LCAweEZELCAweDVDLCAweDM4LCAweDJBLCAweEM5LAorICAgIDB4OTksIDB4MjgsIDB4RUMsIDB4NUQsIDB4QjQsIDB4MkEsIDB4Q0EsIDB4QjMsIDB4QkMsIDB4OTIsIDB4MEMsIDB4RkMsIDB4QzksIDB4RUQsIDB4MjIsIDB4NTIsCisgICAgMHg3OSwgMHhDNCwgMHgwNCwgMHgzRiwgMHhEMCwgMHg3RCwgMHg0QiwgMHhFMCwgMHgwQywgMHgwRiwgMHg4MiwgMHgwMCwgMHhCOCwgMHgzOCwgMHg3MCwgMHgwNiwKKyAgICAweEM1LCAweDM0LCAweDFFLCAweDBELCAweDk2LCAweDdFLCAweERDLCAweDk0LCAweDdFLCAweDY0LCAweDQ3LCAweEE5LCAweDYyLCAweEFFLCAweEEzLCAweDhCLAorICAgIDB4NkUsIDB4MEIsIDB4MUQsIDB4QjksIDB4OEYsIDB4RTgsIDB4QUEsIDB4NTcsIDB4RDcsIDB4RTMsIDB4NjUsIDB4MTUsIDB4MjgsIDB4ODgsIDB4RjUsIDB4MjEsCisgICAgMHhGMywgMHgzOCwgMHhBNCwgMHhGQywgMHhEQiwgMHgwOSwgMHhDMSwgMHg3QSwgMHg3QiwgMHhBNywgMHhGRiwgMHgwQiwgMHhBMywgMHgxOCwgMHhBMiwgMHg0MiwKKyAgICAweDI4LCAweDIyLCAweEIyLCAweDk1LCAweDI1LCAweDU2LCAweDA4LCAweEZGLCAweDNELCAweEI1LCAweEYxLCAweDQxLCAweDQ0LCAweDM0LCAweDY0LCAweDY3LAorICAgIDB4MkMsIDB4RDUsIDB4RjAsIDB4NDAsIDB4OUIsIDB4ODIsIDB4MTgsIDB4QUUsIDB4OEUsIDB4NzQsIDB4RkUsIDB4NkQsIDB4Q0MsIDB4M0UsIDB4MDIsIDB4MTMsCisgICAgMHg0MSwgMHhDMywgMHgzMiwgMHgzMywgMHg3NiwgMHgzQSwgMHg0QSwgMHg1QiwgMHhFRCwgMHhGQywgMHg2NCwgMHhGQiwgMHgxNywgMHgyQSwgMHhCMSwgMHg5QiwKKyAgICAweEY2LCAweEI5LCAweDQ1LCAweDgzLCAweEJDLCAweDQyLCAweDEyLCAweEFCLCAweDkxLCAweEZELCAweDJBLCAweDM0LCAweEU3LCAweDU2LCAweEJBLCAweEI4LAorICAgIDB4NjksIDB4ODEsIDB4QkEsIDB4MzAsIDB4NkMsIDB4OEMsIDB4NEIsIDB4QUIsIDB4MUQsIDB4NDcsIDB4NTcsIDB4QUEsIDB4RTcsIDB4M0YsIDB4MjUsIDB4MjUsCisgICAgMHg3RSwgMHg2QSwgMHgyRCwgMHgzNSwgMHg2MSwgMHhCMCwgMHhDMSwgMHhBQywgMHg4MSwgMHhGRSwgMHhCNSwgMHgyOCwgMHg3RSwgMHhGRiwgMHg2QiwgMHg2QiwKKyAgICAweDcxLCAweEJBLCAweDYwLCAweDBDLCAweDU2LCAweENDLCAweDZELCAweEEyLCAweDIzLCAweEIyLCAweDJCLCAweEZCLCAweENCLCAweDE2LCAweDI1LCAweEZFLAorICAgIDB4NkMsIDB4QUMsIDB4ODEsIDB4MkUsIDB4QUMsIDB4MTEsIDB4QjIsIDB4NzksIDB4QzgsIDB4N0EsIDB4NDQsIDB4MEIsIDB4ODIsIDB4RjgsIDB4QzYsIDB4RTAsCisgICAgMHgyRCwgMHg5MiwgMHg1OCwgMHg3MywgMHhBRiwgMHg4QSwgMHhENywgMHgzRCwgMHgyQywgMHgwNSwgMHgwOSwgMHg1NCwgMHgyRiwgMHhERSwgMHgxMiwgMHgxNywKKyAgICAweEM1LCAweEIxLCAweDMyLCAweEZBLCAweDU4LCAweEU0LCAweDBGLCAweDc0LCAweDFFLCAweEFBLCAweEFDLCAweDNCLCAweDM1LCAweERGLCAweDkyLCAweDlDLAorICAgIDB4QjIsIDB4QzIsIDB4QTYsIDB4OTAsIDB4NkQsIDB4RDQsIDB4RUIsIDB4MTMsIDB4QTgsIDB4RUEsIDB4QzIsIDB4NjEsIDB4RUQsIDB4NjcsIDB4NjUsIDB4NDQsCisgICAgMHhBRCwgMHg0NiwgMHgyOCwgMHgxMSwgMHgwRiwgMHg0NiwgMHgwNCwgMHg0OSwgMHhFNiwgMHgyRSwgMHgxQSwgMHhENiwgMHg2NywgMHg3MiwgMHg3QywgMHgwRCwKKyAgICAweDZBLCAweDhBLCAweEZBLCAweERCLCAweDk0LCAweDY2LCAweDg0LCAweEYxLCAweDMxLCAweDNGLCAweDM4LCAweDFDLCAweDA0LCAweENGLCAweDA5LCAweDUyLAorICAgIDB4MkYsIDB4REIsIDB4RjYsIDB4NkYsIDB4RUIsIDB4NjksIDB4MDMsIDB4MTAsIDB4OTIsIDB4QTAsIDB4OTUsIDB4MEEsIDB4RTUsIDB4NTIsIDB4NEEsIDB4OUIsCisgICAgMHhENywgMHg3NiwgMHgwNSwgMHg4MCwgMHgwNywgMHgwOSwgMHg0QSwgMHgzQSwgMHgzNywgMHhDRCwgMHhCMywgMHg3MywgMHg2NCwgMHgxRiwgMHhBQiwgMHgxNCwKKyAgICAweDU3LCAweEEwLCAweEZGLCAweDlCLCAweDBELCAweDM0LCAweDU2LCAweDBBLCAweDc5LCAweDc5LCAweDIwLCAweDdDLCAweDRBLCAweDUyLCAweEQ4LCAweEI0LAorICAgIDB4MjIsIDB4NDUsIDB4ODgsIDB4OTAsIDB4QTAsIDB4MzUsIDB4MzYsIDB4NzEsIDB4OUIsIDB4RDgsIDB4MkUsIDB4QzUsIDB4ODksIDB4MjAsIDB4NTQsIDB4MzYsCisgICAgMHg3QSwgMHg0NywgMHgwMywgMHg0NSwgMHhGOCwgMHhCMiwgMHgyMCwgMHhEMCwgMHhCQywgMHg4NCwgMHgwNSwgMHg0MCwgMHhEQiwgMHhENCwgMHhEMCwgMHgxQywKKyAgICAweDlFLCAweEYwLCAweDM3LCAweDAyLCAweDMxLCAweEQ5LCAweERFLCAweEJDLCAweEJELCAweDg3LCAweDNFLCAweEE3LCAweDJBLCAweEQ5LCAweDdFLCAweDhCLAorICAgIDB4QkQsIDB4RUYsIDB4NjcsIDB4QzQsIDB4MDYsIDB4MDAsIDB4NDMsIDB4QTcsIDB4ODksIDB4RTYsIDB4QTgsIDB4N0IsIDB4QkQsIDB4MDMsIDB4Q0IsIDB4QzgsCisgICAgMHgyRiwgMHg0NiwgMHhFRiwgMHhBNSwgMHhFRiwgMHgxNiwgMHg3RCwgMHhFMywgMHhFOSwgMHg2MywgMHhDQywgMHg4OSwgMHhGQywgMHhFNSwgMHgxNCwgMHg0MCwKKyAgICAweDNBLCAweDVBLCAweEM4LCAweEJDLCAweEY2LCAweEQ5LCAweDNELCAweEFDLCAweDgyLCAweEI1LCAweDdGLCAweEI3LCAweEU0LCAweDhGLCAweDVDLCAweDBBLAorICAgIDB4NUYsIDB4NkUsIDB4MEMsIDB4RjEsIDB4N0UsIDB4QUQsIDB4MTIsIDB4RkEsIDB4NEUsIDB4MDEsIDB4QzUsIDB4NjIsIDB4QkYsIDB4MTAsIDB4MjcsIDB4RTcsCisgICAgMHg3MiwgMHhDMCwgMHhDMywgMHhBNiwgMHg4QiwgMHhGNywgMHhEOCwgMHhBNSwgMHg1MiwgMHgyMCwgMHhBMywgMHhFRSwgMHg3MCwgMHhCMCwgMHhGNiwgMHhFMiwKKyAgICAweDZBLCAweDhELCAweDI5LCAweDczLCAweDE3LCAweEJELCAweDY4LCAweDQ1LCAweDI1LCAweDUzLCAweDY4LCAweEM1LCAweDFCLCAweEQ1LCAweEMxLCAweEZGLAorICAgIDB4MzgsIDB4MTcsIDB4MjUsIDB4NDcsIDB4MEMsIDB4MkUsIDB4RDQsIDB4M0UsIDB4RjcsIDB4OTEsIDB4MzYsIDB4MzUsIDB4QUQsIDB4NzIsIDB4QkUsIDB4NUEsCisgICAgMHgxOSwgMHgwNCwgMHg5NywgMHg3NywgMHg1MSwgMHg1RCwgMHgyRSwgMHg1MSwgMHhBNywgMHhDMywgMHgyMiwgMHhFRSwgMHhFNiwgMHhDOSwgMHg5QSwgMHgzQiwKKyAgICAweDlELCAweEEyLCAweDg0LCAweERFLCAweDJCLCAweDc2LCAweDYyLCAweDAwLCAweDJDLCAweDRGLCAweEE1LCAweDEyLCAweEM1LCAweDQzLCAweDhCLCAweEQwLAorICAgIDB4MTMsIDB4OUUsIDB4ODgsIDB4M0QsIDB4MzMsIDB4QzMsIDB4RjQsIDB4NDEsIDB4NkQsIDB4MDAsIDB4M0IsIDB4QzMsIDB4RTEsIDB4QTEsIDB4MEEsIDB4NkEsCisgICAgMHg2MywgMHhFOCwgMHg0MiwgMHg4OSwgMHgwNSwgMHhBRiwgMHhBQSwgMHgyQiwgMHgwNywgMHgyNSwgMHg1QiwgMHhFMSwgMHhBQSwgMHhDNiwgMHhBNywgMHhCRCwKKyAgICAweDcyLCAweEM1LCAweDE3LCAweDc1LCAweDUzLCAweDYxLCAweDIwLCAweDc2LCAweDE0LCAweENDLCAweDdBLCAweDA2LCAweEY1LCAweDIxLCAweEQyLCAweDhGLAorICAgIDB4OEYsIDB4MTgsIDB4NUMsIDB4NTAsIDB4QUEsIDB4OTgsIDB4QTQsIDB4QjksIDB4N0UsIDB4QkYsIDB4RDYsIDB4QkEsIDB4RUEsIDB4OUQsIDB4NjQsIDB4RjMsCisgICAgMHgzMSwgMHg0RCwgMHg0OCwgMHgxOCwgMHg1OCwgMHhGMCwgMHgwNywgMHgyMywgMHhENiwgMHgzRSwgMHhDQSwgMHhCNCwgMHg1NCwgMHhFNiwgMHgwNCwgMHgxOSwKKyAgICAweDE4LCAweEQ1LCAweEM3LCAweDU0LCAweDg1LCAweDc1LCAweEE2LCAweDU4LCAweDBFLCAweEVCLCAweDc0LCAweEQ2LCAweEY2LCAweEFGLCAweEI0LCAweDlELAorICAgIDB4NzAsIDB4RjAsIDB4N0IsIDB4ODgsIDB4OEIsIDB4OEIsIDB4NjQsIDB4MkMsIDB4MjAsIDB4NDAsIDB4OTgsIDB4NUUsIDB4MkMsIDB4NjQsIDB4QzYsIDB4OTgsCisgICAgMHgyNiwgMHgxRCwgMHg5NCwgMHg5MCwgMHgwMSwgMHgwMywgMHg2NiwgMHg1RCwgMHg2RCwgMHhDMCwgMHhCQiwgMHg1QSwgMHhDNCwgMHhGMCwgMHgwQiwgMHg3OCwKKyAgICAweDRFLCAweDJFLCAweDg5LCAweEEyLCAweDg2LCAweDQxLCAweDkwLCAweDdCLCAweDFELCAweDJDLCAweDc2LCAweDE3LCAweEU1LCAweDM5LCAweEU5LCAweEY3LAorICAgIDB4MDAsIDB4QzAsIDB4NkIsIDB4MUYsIDB4N0UsIDB4QzEsIDB4QzIsIDB4MTUsIDB4QTgsIDB4QTMsIDB4RjYsIDB4N0MsIDB4RjYsIDB4MTksIDB4M0YsIDB4RTAsCisgICAgMHhDRSwgMHhFRiwgMHg1QywgMHg3QiwgMHg2MywgMHg2MywgMHhCRSwgMHg2NCwgMHgzMywgMHgwRSwgMHgwMywgMHhGRSwgMHhGOSwgMHgwMywgMHhEOSwgMHhGNywKKyAgICAweERGLCAweDk5LCAweDM3LCAweDcwLCAweEFFLCAweDZCLCAweDkwLCAweDJBLCAweDk5LCAweDE0LCAweDFELCAweDBDLCAweDgzLCAweDZBLCAweEM5LCAweEVBLAorICAgIDB4MzQsIDB4OEMsIDB4QUMsIDB4NTEsIDB4MzAsIDB4MDQsIDB4NEEsIDB4NzEsIDB4QTgsIDB4OEUsIDB4QzYsIDB4RDgsIDB4MTksIDB4NzAsIDB4QjAsIDB4RTQsCisgICAgMHg4MCwgMHg1NSwgMHg1MiwgMHgwOSwgMHg1RSwgMHg1OCwgMHgyMiwgMHhGRiwgMHg4MCwgMHhDMSwgMHhBRSwgMHgwQSwgMHg4NywgMHhDNywgMHhCRSwgMHhDNywKKyAgICAweDk1LCAweEVBLCAweDk4LCAweDVBLCAweEMwLCAweDY3LCAweEEzLCAweERBLCAweDY4LCAweEVGLCAweEJBLCAweDQ4LCAweEYxLCAweEEwLCAweDJDLCAweDMzLAorICAgIDB4NTYsIDB4MUEsIDB4NDUsIDB4QjgsIDB4QTMsIDB4NzAsIDB4QTgsIDB4RDMsIDB4QjIsIDB4Q0YsIDB4MUMsIDB4QzAsIDB4MDIsIDB4MUUsIDB4REEsIDB4MTQsCisgICAgMHgwQiwgMHgyQywgMHgwMywgMHhFQSwgMHhFQywgMHgyRSwgMHgyQiwgMHgyMSwgMHgxQywgMHhFMSwgMHg5OSwgMHhERiwgMHg0NiwgMHhEMSwgMHhDMSwgMHhFOSwKKyAgICAweDAwLCAweDkwLCAweEI2LCAweDdELCAweDc5LCAweEEyLCAweDQyLCAweEY3LCAweDBFLCAweDY3LCAweEUzLCAweDhCLCAweEUxLCAweDQyLCAweDI2LCAweDdBLAorICAgIDB4NjksIDB4ODIsIDB4OUQsIDB4NUMsIDB4MjYsIDB4RkUsIDB4RTIsIDB4NkQsIDB4NTEsIDB4NDgsIDB4NzQsIDB4NEEsIDB4RTEsIDB4QTcsIDB4NzcsIDB4MDcsCisgICAgMHgwOSwgMHhBMywgMHgzMCwgMHgwQiwgMHg0OCwgMHg0RiwgMHg2NCwgMHhCMSwgMHg4NCwgMHg5MSwgMHhGRiwgMHg4MSwgMHhGRiwgMHg1QywgMHg5NCwgMHgwOCwKKyAgICAweDQ0LCAweEE4LCAweEQ2LCAweDgwLCAweDVCLCAweDI2LCAweEY3LCAweDVBLCAweERDLCAweEYwLCAweEMxLCAweDZELCAweEVELCAweEFGLCAweEMzLCAweDhELAorICAgIDB4RkEsIDB4NTQsIDB4RTQsIDB4QjEsIDB4OEYsIDB4MDMsIDB4NDUsIDB4MDEsIDB4NjMsIDB4NzIsIDB4MTcsIDB4ODEsIDB4MjEsIDB4MUQsIDB4MUUsIDB4RjMsCisgICAgMHgxOSwgMHgyQSwgMHhEMiwgMHg0MywgMHg0QywgMHg2RSwgMHhDOCwgMHg4MywgMHgxMywgMHgxMywgMHg0QSwgMHgwMCwgMHg3RSwgMHhFRiwgMHgyRCwgMHgwNiwKKyAgICAweDA3LCAweDQwLCAweDgxLCAweDBBLCAweEMzLCAweEU4LCAweDEzLCAweEY2LCAweERDLCAweEQ3LCAweDJDLCAweEVCLCAweEVDLCAweDdDLCAweEY5LCAweDdCLAorICAgIDB4QzksIDB4RDEsIDB4NzksIDB4M0EsIDB4MTgsIDB4NzQsIDB4RkYsIDB4RTgsIDB4QjMsIDB4QUMsIDB4MDYsIDB4REMsIDB4NjgsIDB4MDcsIDB4MzUsIDB4MEEsCisgICAgMHg0NSwgMHg2NywgMHg1QiwgMHhDOCwgMHgxQywgMHgzRCwgMHg0RiwgMHg3NywgMHhDRCwgMHgxRCwgMHhFRiwgMHgyRSwgMHhCRCwgMHhBNywgMHgyRSwgMHhENCwKKyAgICAweEQ3LCAweDJFLCAweDMyLCAweEVDLCAweDg5LCAweDQyLCAweDQ2LCAweDRCLCAweDY4LCAweDYwLCAweDg2LCAweDcyLCAweEE5LCAweDlCLCAweEMzLCAweDM2LAorICAgIDB4REUsIDB4MDAsIDB4QkYsIDB4Q0YsIDB4NEEsIDB4RkQsIDB4MkMsIDB4OTgsIDB4RUUsIDB4OTgsIDB4NkYsIDB4RDcsIDB4QTcsIDB4N0IsIDB4RTQsIDB4REEsCisgICAgMHhGNiwgMHhFMiwgMHg2RSwgMHgzMywgMHgyOSwgMHg3RiwgMHg3RSwgMHhBMCwgMHhFOSwgMHg2QSwgMHgwNywgMHg2OSwgMHhBOCwgMHhGMywgMHg2NSwgMHhDNiwKKyAgICAweDhGLCAweDlELCAweDQzLCAweDg4LCAweERCLCAweEY5LCAweDdBLCAweDgxLCAweDdDLCAweDhGLCAweEYwLCAweDk5LCAweEM3LCAweDRBLCAweDMwLCAweEMwLAorICAgIDB4NUMsIDB4MTUsIDB4MjEsIDB4MDAsIDB4QzcsIDB4MTksIDB4MjMsIDB4NDgsIDB4RDcsIDB4NEUsIDB4NjQsIDB4OEMsIDB4QTQsIDB4MjYsIDB4OTQsIDB4ODAsCisgICAgMHgyNCwgMHhDMSwgMHhDMSwgMHg4NywgMHhDOSwgMHg1NSwgMHg1MSwgMHg5MCwgMHg3RiwgMHg5QSwgMHhEQiwgMHgyQSwgMHg3RSwgMHg1NiwgMHhDQSwgMHhFMSwKKyAgICAweERGLCAweDgxLCAweEQ5LCAweDhCLCAweDc4LCAweEFCLCAweDdDLCAweDY1LCAweDA0LCAweDY5LCAweDQ5LCAweDZDLCAweDQyLCAweDhELCAweDQ4LCAweDI0LAorICAgIDB4MUMsIDB4QjcsIDB4OEEsIDB4NTgsIDB4QUEsIDB4MTgsIDB4OEUsIDB4RjMsIDB4RDEsIDB4NzMsIDB4QjIsIDB4MjAsIDB4RDksIDB4NDYsIDB4MEMsIDB4NUEsCisgICAgMHhCRSwgMHg3NiwgMHgyRSwgMHg4NiwgMHg5RiwgMHhENSwgMHgxNSwgMHhBOSwgMHg3QywgMHgyNCwgMHgwOSwgMHgwNSwgMHgwRiwgMHhGMCwgMHgzRSwgMHhCOSwKKyAgICAweDlBLCAweDEyLCAweDFBLCAweERDLCAweDQxLCAweDVBLCAweDlGLCAweDUwLCAweDNDLCAweDc2LCAweEU1LCAweDIxLCAweDk4LCAweDMzLCAweDFBLCAweEExLAorICAgIDB4OTAsIDB4MkMsIDB4RjAsIDB4MjIsIDB4MUEsIDB4M0QsIDB4MjAsIDB4MjQsIDB4QzQsIDB4OTYsIDB4QzksIDB4MTMsIDB4RDUsIDB4OEQsIDB4ODEsIDB4ODksCisgICAgMHhBMSwgMHg2MSwgMHg4OCwgMHhBQSwgMHhFQywgMHg4QywgMHhEQywgMHgzMSwgMHg3RSwgMHgzQSwgMHhGRCwgMHg2QSwgMHhCRiwgMHg4RiwgMHg5NywgMHgwMywKKyAgICAweDY3LCAweDU4LCAweDMxLCAweEQzLCAweDJELCAweDYzLCAweEZDLCAweDY3LCAweDhELCAweDE0LCAweEMzLCAweEVCLCAweEI3LCAweEY4LCAweDNFLCAweDg1LAorICAgIDB4RDMsIDB4OEYsIDB4OUUsIDB4RDcsIDB4QjQsIDB4ODYsIDB4M0MsIDB4REIsIDB4RDIsIDB4NUYsIDB4MEQsIDB4RDIsIDB4QjIsIDB4RDEsIDB4RkMsIDB4QTUsCisgICAgMHg5NSwgMHg0RSwgMHg4MCwgMHg5RSwgMHg0RSwgMHg4RCwgMHg5MywgMHhBRCwgMHhCMywgMHhDQSwgMHg4QSwgMHhFMCwgMHhCQywgMHg1NCwgMHg3RiwgMHhENiwKKyAgICAweEIxLCAweDc0LCAweEMwLCAweEU4LCAweDRBLCAweEY1LCAweEM3LCAweDcyLCAweEE3LCAweEI3LCAweDQyLCAweDRELCAweEQ5LCAweDYwLCAweDE1LCAweEVCLAorICAgIDB4QjYsIDB4MjksIDB4MDIsIDB4MUYsIDB4ODMsIDB4NzgsIDB4NTgsIDB4MDksIDB4OUUsIDB4NTAsIDB4QTMsIDB4MzksIDB4QzYsIDB4MjIsIDB4MUUsIDB4RDEsCisgICAgMHhFNiwgMHhCOSwgMHg1QSwgMHhBMywgMHg2RiwgMHg4MCwgMHg0MywgMHhBOSwgMHg1OCwgMHgwQiwgMHg4QywgMHg2MCwgMHhGNCwgMHhDMiwgMHhEMiwgMHgwRiwKKyAgICAweDlDLCAweDc4LCAweEZFLCAweEIxLCAweDMzLCAweDAxLCAweDY3LCAweEZGLCAweEVDLCAweDkzLCAweEMxLCAweDZDLCAweDc3LCAweDA0LCAweDFFLCAweEQ3LAorICAgIDB4RDIsIDB4NjUsIDB4REQsIDB4RjUsIDB4QUYsIDB4NkQsIDB4QzIsIDB4MDQsIDB4MzMsIDB4RjksIDB4MzgsIDB4OEYsIDB4RjMsIDB4Q0YsIDB4ODAsIDB4N0QsCisgICAgMHg0NiwgMHhGQSwgMHg1MywgMHg1OCwgMHgzMCwgMHhBNiwgMHgwQiwgMHg0NywgMHhBRSwgMHhGMCwgMHhDQiwgMHgzMSwgMHhBMiwgMHhDMiwgMHhCNCwgMHhCOSwKKyAgICAweEEzLCAweDhDLCAweEEzLCAweEFBLCAweDQ4LCAweEY1LCAweDBFLCAweDhFLCAweDQ1LCAweDkyLCAweDEyLCAweEZCLCAweDE3LCAweDhGLCAweEMzLCAweDJDLAorICAgIDB4OEQsIDB4QTcsIDB4OTMsIDB4MkEsIDB4QjMsIDB4NzYsIDB4N0IsIDB4OEQsIDB4RTYsIDB4NjYsIDB4QkYsIDB4OUEsIDB4ODgsIDB4NjQsIDB4OTEsIDB4MkMsCisgICAgMHhENSwgMHg5RCwgMHhFNiwgMHgyOCwgMHhENiwgMHg5MSwgMHg0OCwgMHhBQywgMHg1RCwgMHhDQiwgMHhFMSwgMHg5QiwgMHgxRSwgMHg5QywgMHg3MywgMHhGNCwKKyAgICAweENCLCAweDU0LCAweDNELCAweDcyLCAweEVELCAweEEwLCAweEZBLCAweDk3LCAweDAwLCAweENCLCAweDMyLCAweDY5LCAweENDLCAweEI3LCAweDAwLCAweDYxLAorICAgIDB4RTgsIDB4OTcsIDB4NzgsIDB4NzksIDB4QkEsIDB4M0QsIDB4N0IsIDB4OTgsIDB4QTgsIDB4QkYsIDB4QTAsIDB4RjIsIDB4M0IsIDB4MjMsIDB4MjIsIDB4MDIsCisgICAgMHgxMCwgMHgxNiwgMHhCMiwgMHg5MywgMHhFMSwgMHg3NCwgMHg5NSwgMHg2NSwgMHhFNSwgMHg1RiwgMHg1MywgMHhFQywgMHg3MCwgMHg5RiwgMHg5RiwgMHhCNiwKKyAgICAweERELCAweDBCLCAweEZGLCAweEI0LCAweDQ4LCAweDM0LCAweDFGLCAweEExLCAweEY2LCAweEJGLCAweDYxLCAweDM2LCAweDRCLCAweEYyLCAweENELCAweEU0LAorICAgIDB4RDYsIDB4ODgsIDB4MDgsIDB4NEEsIDB4MTcsIDB4RTksIDB4MzMsIDB4QzYsIDB4Q0EsIDB4NDQsIDB4RDYsIDB4MDAsIDB4QTEsIDB4NkQsIDB4MkMsIDB4RkQsCisgICAgMHgwOSwgMHg4MCwgMHg1MSwgMHhCOCwgMHhEQywgMHhBMSwgMHhGOSwgMHg3RCwgMHg1NSwgMHg4NywgMHhFMSwgMHg1MiwgMHg2NiwgMHhGMywgMHhBNSwgMHhGNywKKyAgICAweDBFLCAweDYxLCAweEZDLCAweDdCLCAweEE1LCAweEMwLCAweDI2LCAweDgyLCAweDM3LCAweDdBLCAweDJELCAweEJGLCAweEVBLCAweDBFLCAweEJELCAweEYzLAorICAgIDB4Q0QsIDB4NTAsIDB4NEMsIDB4N0UsIDB4MEYsIDB4RDIsIDB4Q0MsIDB4OTAsIDB4ODEsIDB4MjUsIDB4MjgsIDB4QUYsIDB4RDUsIDB4N0UsIDB4ODksIDB4QTUsCisgICAgMHhBOCwgMHgxOCwgMHgyQywgMHg2QiwgMHg1MywgMHgwNywgMHg1MSwgMHhFNSwgMHgwOSwgMHgwNywgMHgzRSwgMHhDRiwgMHg1OCwgMHhCOCwgMHg0OSwgMHhDQSwKKyAgICAweEU3LCAweEEzLCAweDM2LCAweDg4LCAweEFELCAweDQ2LCAweEY0LCAweDhGLCAweEE5LCAweDU1LCAweDUzLCAweDAyLCAweEVELCAweDhELCAweEZFLCAweDUwLAorICAgIDB4MjAsIDB4RDYsIDB4NUUsIDB4RDQsIDB4RUIsIDB4MkIsIDB4MzQsIDB4M0QsIDB4MDQsIDB4ODQsIDB4MzksIDB4MjAsIDB4MTYsIDB4Q0QsIDB4REYsIDB4NDAsCisgICAgMHgwNiwgMHgyRSwgMHhFMSwgMHhCNywgMHg4MSwgMHgxMywgMHhFMywgMHhDMiwgMHg5NCwgMHg1QSwgMHhGRiwgMHhFNCwgMHg0RCwgMHhCQywgMHgxQSwgMHg4MCwKKyAgICAweDlBLCAweDE3LCAweEJELCAweDFDLCAweEQzLCAweDJCLCAweDNDLCAweERFLCAweEU0LCAweDc3LCAweEE2LCAweDU5LCAweDQ4LCAweDVBLCAweDFDLCAweEUxLAorICAgIDB4ODEsIDB4ODksIDB4QUYsIDB4MzQsIDB4QkMsIDB4MkYsIDB4QzIsIDB4NjksIDB4MzksIDB4OUUsIDB4RTksIDB4RUYsIDB4OUIsIDB4NzIsIDB4NTYsIDB4MTksCisgICAgMHg5MCwgMHg1RSwgMHg1NCwgMHgwOSwgMHhGNywgMHg1RCwgMHhCRiwgMHgwNCwgMHg0RiwgMHg0RCwgMHg5QSwgMHgwQiwgMHg5MywgMHg1NSwgMHgwOSwgMHhEQiwKKyAgICAweDYzLCAweEIxLCAweEYzLCAweDdDLCAweEQ4LCAweEIwLCAweDhBLCAweDY5LCAweDQzLCAweDFFLCAweDExLCAweDNCLCAweDU3LCAweDZDLCAweDBCLCAweDA0LAorICAgIDB4QzgsIDB4MzgsIDB4RkYsIDB4MUYsIDB4MTEsIDB4MDcsIDB4RjcsIDB4MDUsIDB4OUUsIDB4MTUsIDB4M0UsIDB4RjksIDB4MzcsIDB4MzQsIDB4NjYsIDB4MzMsCisgICAgMHgwQiwgMHgzMywgMHgwMSwgMHhCRSwgMHg3QiwgMHhENiwgMHhEQSwgMHg1NCwgMHgzOCwgMHhBOSwgMHg1QiwgMHg4MiwgMHg4MywgMHhDQywgMHg5MSwgMHhENCwKKyAgICAweDg5LCAweEEyLCAweDNGLCAweDg4LCAweDQ2LCAweDRBLCAweDM4LCAweEU3LCAweDIzLCAweDAzLCAweENCLCAweDgwLCAweDNCLCAweEZBLCAweEZFLCAweEI5LAorICAgIDB4MUUsIDB4RTksIDB4MkQsIDB4M0MsIDB4NjQsIDB4NjAsIDB4MkQsIDB4QjYsIDB4QUMsIDB4QkEsIDB4QUIsIDB4RDYsIDB4NTEsIDB4MTUsIDB4QjIsIDB4MUEsCisgICAgMHhCNiwgMHg5OCwgMHhCQiwgMHg2NywgMHgyRCwgMHgwNCwgMHhCQiwgMHg3OCwgMHg2RCwgMHhFNSwgMHhGQiwgMHg5NSwgMHg4QiwgMHhFNSwgMHhDQywgMHhBRCwKKyAgICAweEU0LCAweDE1LCAweEJCLCAweDVGLCAweEYwLCAweDU2LCAweDQxLCAweDA2LCAweDRELCAweDIxLCAweDEwLCAweDYxLCAweDNDLCAweDYzLCAweEFDLCAweDU5LAorICAgIDB4ODMsIDB4MkQsIDB4NEYsIDB4MEUsIDB4NTIsIDB4REIsIDB4MEEsIDB4OUQsIDB4M0IsIDB4Q0IsIDB4NjEsIDB4QUEsIDB4NEQsIDB4ODQsIDB4QjIsIDB4QzIsCisgICAgMHhGQywgMHg3RSwgMHg2NywgMHhEMywgMHg4NiwgMHgzRSwgMHg4MywgMHhGMiwgMHg2QiwgMHgxQywgMHg4RCwgMHhEMiwgMHg2QywgMHg1NSwgMHg4MCwgMHgxNCwKKyAgICAweDU0LCAweEM5LCAweDE0LCAweDdFLCAweDE0LCAweEQ5LCAweDJBLCAweEVFLCAweDUzLCAweEFFLCAweEI4LCAweDI3LCAweEIzLCAweDM0LCAweDAyLCAweEQyLAorICAgIDB4RkUsIDB4QTMsIDB4QzgsIDB4NzUsIDB4ODEsIDB4NkUsIDB4QzcsIDB4Q0UsIDB4ODMsIDB4RDUsIDB4Q0IsIDB4REYsIDB4NUMsIDB4RUQsIDB4RDIsIDB4NUEsCisgICAgMHhDQywgMHhBOSwgMHg0RSwgMHhEMSwgMHgwQSwgMHg1MCwgMHgwQywgMHg5RCwgMHg4NCwgMHg3OSwgMHg4NCwgMHg2RCwgMHhBNCwgMHg0MSwgMHg1MywgMHg2OSwKKyAgICAweDBFLCAweDZDLCAweDdELCAweDE5LCAweDY2LCAweDFELCAweDA1LCAweENFLCAweEY4LCAweEJFLCAweENDLCAweEY4LCAweEM1LCAweDIyLCAweDBCLCAweDhBLAorICAgIDB4MTIsIDB4QzEsIDB4QjYsIDB4RjEsIDB4OTYsIDB4QzcsIDB4RUEsIDB4REMsIDB4QUUsIDB4OEQsIDB4RTksIDB4NEEsIDB4ODgsIDB4OEIsIDB4QzAsIDB4QTksCisgICAgMHhCRCwgMHhFNywgMHhBNCwgMHg2MSwgMHgzQywgMHhFNywgMHg4QSwgMHhCNSwgMHg2MCwgMHg1QywgMHhBMywgMHgwMiwgMHg2MywgMHg2QSwgMHgzRCwgMHhFMywKKyAgICAweEJCLCAweDI1LCAweDYyLCAweEE2LCAweEMxLCAweEZBLCAweDM3LCAweDEwLCAweDUxLCAweDI0LCAweDg1LCAweDdBLCAweDJGLCAweDAzLCAweDA3LCAweDM1LAorICAgIDB4MEUsIDB4REYsIDB4RkUsIDB4QTEsIDB4ODEsIDB4MDYsIDB4Q0MsIDB4QzQsIDB4QkEsIDB4RkEsIDB4RTcsIDB4OTIsIDB4MUUsIDB4Q0EsIDB4QjIsIDB4MkMsCisgICAgMHg2OSwgMHg5MiwgMHhBRCwgMHgxMCwgMHhERiwgMHgxNCwgMHhCQSwgMHhDMCwgMHhEMSwgMHhFMCwgMHg4MCwgMHg1NiwgMHg2MywgMHhGNywgMHgwMiwgMHg2MywKKyAgICAweDlCLCAweDJDLCAweEVBLCAweEU2LCAweDA3LCAweDE0LCAweDc3LCAweDMwLCAweEQ5LCAweDlBLCAweEE1LCAweEVGLCAweEU4LCAweEYxLCAweDY5LCAweEE5LAorICAgIDB4OEIsIDB4NzQsIDB4RDYsIDB4Q0IsIDB4NEEsIDB4QUIsIDB4M0UsIDB4RDAsIDB4MDUsIDB4Q0YsIDB4QzcsIDB4Q0IsIDB4NUYsIDB4NzcsIDB4NjEsIDB4MEIsCisgICAgMHhGMywgMHhFRiwgMHg4NCwgMHg0MiwgMHg2MywgMHgxQSwgMHgwOCwgMHg5MCwgMHgzOCwgMHhDQywgMHhDQywgMHg3NywgMHg3MywgMHhGNCwgMHgxMCwgMHgxNiwKKyAgICAweDNCLCAweDg4LCAweDZBLCAweDM2LCAweDdGLCAweDNELCAweDFCLCAweDQ3LCAweEE4LCAweDQzLCAweDEzLCAweERFLCAweDBGLCAweDNFLCAweEY4LCAweDMyLAorICAgIDB4RUIsIDB4RTAsIDB4MTMsIDB4M0YsIDB4RTksIDB4NDUsIDB4NjQsIDB4MTcsIDB4QUQsIDB4MUQsIDB4OTQsIDB4MDAsIDB4ODksIDB4NUIsIDB4REQsIDB4MUIsCisgICAgMHhEOCwgMHhDQywgMHgzQywgMHgyQSwgMHg0OCwgMHhCMywgMHhGOCwgMHhCOCwgMHhGMSwgMHhDMSwgMHgzRCwgMHgzNiwgMHg0NSwgMHhCNiwgMHhEQywgMHgyOSwKKyAgICAweDQ3LCAweDhGLCAweDFELCAweDVCLCAweDNDLCAweDExLCAweEYxLCAweEVDLCAweEEwLCAweEI2LCAweDc0LCAweEJGLCAweEYwLCAweDU1LCAweEM2LCAweDUyLAorICAgIDB4NjUsIDB4MjQsIDB4NkUsIDB4NzUsIDB4RTUsIDB4QzAsIDB4M0QsIDB4RTEsIDB4MzQsIDB4NTAsIDB4QjIsIDB4QjEsIDB4RDIsIDB4QzQsIDB4NjksIDB4QUIsCisgICAgMHgzMSwgMHhCNSwgMHhGRCwgMHgxMCwgMHhBRCwgMHgxMCwgMHgwMCwgMHgxOCwgMHg4NywgMHgwQiwgMHg2MywgMHhFQywgMHg3NCwgMHg3MiwgMHgwNywgMHhDQywKKyAgICAweDZCLCAweEQ4LCAweDQ2LCAweDY5LCAweDRBLCAweDNBLCAweEQxLCAweDJCLCAweDI1LCAweDZDLCAweEY3LCAweDQ1LCAweDg0LCAweDFELCAweDk3LCAweDYzLAorICAgIDB4NzAsIDB4NjgsIDB4RjQsIDB4OEIsIDB4MzMsIDB4NEEsIDB4RTUsIDB4MTYsIDB4ODEsIDB4RDIsIDB4NTAsIDB4MkIsIDB4RDgsIDB4NTEsIDB4RUMsIDB4MzMsCisgICAgMHhEQiwgMHhDOCwgMHhDMCwgMHg1MCwgMHhFMywgMHhGMCwgMHgxQiwgMHg1NywgMHhGQywgMHhDOSwgMHg3RCwgMHg3QSwgMHhDNCwgMHhBNCwgMHhGMywgMHgzOSwKKyAgICAweDczLCAweEFCLCAweEFFLCAweDQyLCAweDcxLCAweDRCLCAweEYwLCAweEQxLCAweEFELCAweEY0LCAweDY3LCAweDNBLCAweDlFLCAweEZELCAweEE5LCAweEE3LAorICAgIDB4MjIsIDB4RjksIDB4MDYsIDB4OTMsIDB4RUUsIDB4QkEsIDB4OTYsIDB4QjQsIDB4MzEsIDB4NjksIDB4NDEsIDB4OEEsIDB4NkQsIDB4OEQsIDB4N0MsIDB4QkEsCisgICAgMHgwMywgMHhCQiwgMHg1NiwgMHg5MSwgMHhBQSwgMHg2MywgMHg1OCwgMHhDMCwgMHg5OSwgMHg2MSwgMHhGOCwgMHg4MywgMHg2NSwgMHg5RCwgMHgwQiwgMHg5NSwKKyAgICAweDY0LCAweDZELCAweEQ2LCAweDI0LCAweDlELCAweDUyLCAweDZGLCAweDRBLCAweDQ2LCAweERELCAweDc3LCAweDA5LCAweDEwLCAweDRCLCAweDRGLCAweDk0LAorICAgIDB4ODIsIDB4M0UsIDB4QTYsIDB4QjQsIDB4NDgsIDB4RTksIDB4OUQsIDB4NUUsIDB4OEQsIDB4NzksIDB4MzYsIDB4REQsIDB4NEEsIDB4RjQsIDB4MjMsIDB4NzksCisgICAgMHgxMCwgMHgzOCwgMHhGNCwgMHg0RCwgMHg1MywgMHhBNCwgMHhCOSwgMHhEMSwgMHhDMywgMHhGMywgMHg3OSwgMHgzMSwgMHhDMywgMHg2MywgMHhCRCwgMHg3MSwKKyAgICAweDBCLCAweDZBLCAweDBDLCAweDVGLCAweDA4LCAweDZFLCAweEI1LCAweDM2LCAweDg5LCAweDAzLCAweDE2LCAweDVELCAweDI2LCAweENFLCAweDlDLCAweEJGLAorICAgIDB4OEYsIDB4N0UsIDB4OEQsIDB4OUEsIDB4MEIsIDB4MDEsIDB4NzcsIDB4RDEsIDB4OTQsIDB4QTksIDB4MzksIDB4MDQsIDB4MjAsIDB4MDIsIDB4RjAsIDB4OTAsCisgICAgMHg0QSwgMHg4OSwgMHhGMCwgMHg2RiwgMHgyMiwgMHhEOSwgMHhDNSwgMHgwNSwgMHhERCwgMHgyQSwgMHhCNywgMHhEQSwgMHg3OCwgMHg5QSwgMHgyQywgMHhFQiwKKyAgICAweEEwLCAweDQzLCAweEU4LCAweEFCLCAweDgyLCAweEE0LCAweEYyLCAweDVGLCAweEEyLCAweEZBLCAweEMzLCAweDMwLCAweDNFLCAweDc1LCAweENFLCAweDJBLAorICAgIDB4RkMsIDB4NUIsIDB4NDYsIDB4ODcsIDB4OTQsIDB4QzgsIDB4NkUsIDB4M0EsIDB4OTcsIDB4MDcsIDB4MzEsIDB4MUQsIDB4ODAsIDB4RTAsIDB4RDgsIDB4QzcsCisgICAgMHg4MCwgMHg0MywgMHg0NywgMHhDNSwgMHhBMywgMHhCRCwgMHhGQSwgMHg0NywgMHg2QiwgMHgwOSwgMHgyMSwgMHhGOCwgMHgyRCwgMHhBMCwgMHhGRSwgMHg0MSwKKyAgICAweDc4LCAweEMxLCAweDQ0LCAweDU0LCAweEU1LCAweEFELCAweDFFLCAweENGLCAweDlCLCAweDY3LCAweEVELCAweDI3LCAweDVDLCAweDc2LCAweDFBLCAweDE2LAorICAgIDB4MDgsIDB4OEEsIDB4NzAsIDB4N0QsIDB4NzQsIDB4OTMsIDB4MEIsIDB4MDEsIDB4N0EsIDB4M0UsIDB4NUUsIDB4MTUsIDB4QkQsIDB4NEIsIDB4RkMsIDB4MjksCisgICAgMHgzNCwgMHgxMSwgMHg0MywgMHg5NSwgMHgwRiwgMHhFNywgMHg1MCwgMHhDQywgMHhBRCwgMHhFMywgMHhENCwgMHgxRiwgMHg1MywgMHg1QiwgMHg4NSwgMHg1MiwKKyAgICAweDcyLCAweDNDLCAweDY1LCAweDJGLCAweEZBLCAweDM0LCAweEQ3LCAweDFDLCAweEFGLCAweDgxLCAweDc0LCAweDdGLCAweENELCAweDJDLCAweDE0LCAweDA4LAorICAgIDB4RDYsIDB4NzIsIDB4QTYsIDB4QkYsIDB4N0YsIDB4NUIsIDB4MjMsIDB4NzQsIDB4NTUsIDB4RkQsIDB4QkYsIDB4NTgsIDB4NEMsIDB4MUYsIDB4MjYsIDB4NEMsCisgICAgMHg3NywgMHhEQSwgMHgwQiwgMHgxMSwgMHhERCwgMHgxMSwgMHg5OSwgMHgxMCwgMHhCNiwgMHg5QSwgMHhFNSwgMHg3NywgMHhBNSwgMHg2MywgMHg4MSwgMHhGNywKKyAgICAweDJCLCAweDlELCAweDhFLCAweEQxLCAweEZFLCAweEY4LCAweDhELCAweDhFLCAweDI0LCAweDEyLCAweDVCLCAweDdELCAweDNBLCAweERELCAweDQ5LCAweEFELAorICAgIDB4MDYsIDB4RUUsIDB4MUYsIDB4OEMsIDB4OTUsIDB4OUEsIDB4OEYsIDB4MkMsIDB4RUYsIDB4RjUsIDB4ODUsIDB4NjEsIDB4QUYsIDB4MDksIDB4QjAsIDB4MjcsCisgICAgMHgxNiwgMHg0OCwgMHhDNiwgMHgzNywgMHgyRCwgMHgwQSwgMHgxNywgMHhDNCwgMHhEQSwgMHg1MywgMHg1MSwgMHhFQiwgMHg0MiwgMHg5NSwgMHhDQSwgMHgxNCwKKyAgICAweDMyLCAweDkzLCAweDVCLCAweDQwLCAweDkyLCAweDA4LCAweDZBLCAweEU5LCAweEIzLCAweDY2LCAweDlELCAweEUwLCAweDgxLCAweDU3LCAweDlBLCAweDM4LAorICAgIDB4NEEsIDB4MjMsIDB4RkUsIDB4OEYsIDB4MDIsIDB4NjUsIDB4MzMsIDB4MzUsIDB4NTUsIDB4QjgsIDB4QjIsIDB4MzQsIDB4OUQsIDB4RDIsIDB4REMsIDB4RDcsCisgICAgMHhGNCwgMHgxOSwgMHgxRCwgMHg4MywgMHgyQSwgMHg5MSwgMHhGMCwgMHg4NCwgMHhENiwgMHg3RiwgMHg0NSwgMHg2MywgMHg2RSwgMHg0RiwgMHgwRSwgMHg3RSwKKyAgICAweDU5LCAweEJDLCAweDIyLCAweDkyLCAweEQ0LCAweEM1LCAweENGLCAweEU4LCAweEVELCAweDE1LCAweDhDLCAweEI1LCAweEFBLCAweDQzLCAweDE3LCAweEUwLAorICAgIDB4NDYsIDB4MDQsIDB4N0EsIDB4ODAsIDB4MTUsIDB4MEEsIDB4NDAsIDB4RTgsIDB4NkUsIDB4NEUsIDB4NTMsIDB4MTAsIDB4N0UsIDB4QjEsIDB4NzEsIDB4NDMsCisgICAgMHgyMCwgMHgxNCwgMHhBMywgMHhGNSwgMHhEMiwgMHgwNCwgMHgzNywgMHg5MCwgMHhBOCwgMHhCRiwgMHg0QywgMHg0RSwgMHgxRSwgMHhCNywgMHhDRSwgMHgwRiwKKyAgICAweDBDLCAweEQxLCAweDgyLCAweDY0LCAweDRCLCAweDc5LCAweDQ3LCAweDEyLCAweEU2LCAweDdBLCAweDRFLCAweEMxLCAweEFELCAweEZELCAweEZFLCAweDMxLAorICAgIDB4MDksIDB4MzYsIDB4NDEsIDB4MjQsIDB4MEEsIDB4Q0YsIDB4MjAsIDB4MEMsIDB4QzMsIDB4MDQsIDB4NTcsIDB4MzksIDB4REQsIDB4OUMsIDB4M0UsIDB4MkUsCisgICAgMHhFRCwgMHhBRCwgMHg5NiwgMHgyMCwgMHhCRCwgMHhDNiwgMHhCNywgMHgxOCwgMHhFQywgMHgwMywgMHgyRSwgMHhGQywgMHg0NSwgMHg5MywgMHhEMiwgMHgwOSwKKyAgICAweDEzLCAweEFFLCAweEI4LCAweDIyLCAweEZCLCAweDRCLCAweEI0LCAweDdELCAweDBGLCAweDVFLCAweDlGLCAweEUxLCAweEZCLCAweDk0LCAweEE0LCAweEM3LAorICAgIDB4MDcsIDB4OUUsIDB4NzIsIDB4NDgsIDB4N0YsIDB4RUMsIDB4QzUsIDB4MEEsIDB4MTksIDB4RDUsIDB4NTQsIDB4MkIsIDB4NzcsIDB4MTYsIDB4MEEsIDB4REMsCisgICAgMHgyMiwgMHhDNywgMHgwMywgMHgxMiwgMHg5RSwgMHgxMSwgMHhBQywgMHg3MCwgMHg0NCwgMHgxRCwgMHhBNCwgMHhDNSwgMHhFMiwgMHgxOSwgMHg5QiwgMHhFMywKKyAgICAweERDLCAweDA1LCAweDM2LCAweDMwLCAweDkyLCAweENDLCAweEMzLCAweEY3LCAweENGLCAweEQ1LCAweDY3LCAweDNDLCAweEY3LCAweDk5LCAweDM3LCAweDE2LAorICAgIDB4QjMsIDB4MzgsIDB4MzgsIDB4RUUsIDB4NjYsIDB4N0MsIDB4ODAsIDB4RkQsIDB4MDIsIDB4OTQsIDB4RkEsIDB4MUYsIDB4MTAsIDB4RDksIDB4QTgsIDB4NDUsCisgICAgMHg1OCwgMHg5MSwgMHg4NSwgMHhEQSwgMHgxRiwgMHhGMiwgMHg2QiwgMHhFMywgMHg4RiwgMHgwOSwgMHhCOCwgMHhBMSwgMHgxNywgMHhBMiwgMHhGMCwgMHg3NSwKKyAgICAweDVCLCAweDVELCAweEVDLCAweDM5LCAweDg2LCAweDBDLCAweDg4LCAweEFFLCAweEY2LCAweDk5LCAweDdGLCAweDU1LCAweDcwLCAweDUyLCAweEYwLCAweDYzLAorICAgIDB4NjYsIDB4NzUsIDB4ODAsIDB4RjQsIDB4ODcsIDB4MTMsIDB4MDEsIDB4MjYsIDB4ODIsIDB4MzksIDB4RTMsIDB4MkYsIDB4RTIsIDB4NUYsIDB4Q0YsIDB4RkMsCisgICAgMHgyMiwgMHgyOCwgMHhFOSwgMHg3NSwgMHg4RiwgMHhDRCwgMHg3QSwgMHgwMywgMHg3NywgMHhCMCwgMHg0RSwgMHgxOSwgMHgwMywgMHg3MywgMHgyQiwgMHhGQiwKKyAgICAweDg3LCAweEY0LCAweDk0LCAweDE4LCAweEY4LCAweEY3LCAweENCLCAweDk0LCAweDdDLCAweEI5LCAweDU0LCAweEQ1LCAweEVELCAweEM1LCAweDQ3LCAweDNCLAorICAgIDB4MTIsIDB4QTEsIDB4NjUsIDB4MDUsIDB4MzksIDB4NDUsIDB4NUEsIDB4NTEsIDB4NzUsIDB4M0IsIDB4QzgsIDB4ODQsIDB4NkYsIDB4MUYsIDB4NUQsIDB4NkMsCisgICAgMHg3RSwgMHhCRSwgMHhFMiwgMHg0MiwgMHgxQSwgMHhEOCwgMHg3NCwgMHgwRCwgMHgxNywgMHg2MiwgMHg5QiwgMHhCRSwgMHhERiwgMHg1NSwgMHgxNSwgMHg1MCwKKyAgICAweEM0LCAweERGLCAweDk1LCAweDkyLCAweDlELCAweENELCAweEEyLCAweDNGLCAweDM4LCAweDVDLCAweDA5LCAweDUxLCAweEJCLCAweEY0LCAweEQ4LCAweEU5LAorICAgIDB4RUYsIDB4QjAsIDB4ODgsIDB4MEMsIDB4OTIsIDB4N0YsIDB4Q0IsIDB4MDEsIDB4OTEsIDB4MTMsIDB4N0EsIDB4NDQsIDB4QTEsIDB4OTgsIDB4MkUsIDB4MEUsCisgICAgMHgxMiwgMHg2MywgMHhBNywgMHhCQywgMHhEMywgMHgwQywgMHgwNywgMHhFMCwgMHhENCwgMHg3MiwgMHhGNSwgMHg0NSwgMHhDRSwgMHg0NCwgMHg0RCwgMHhGOCwKKyAgICAweDc2LCAweEY5LCAweDFBLCAweDFDLCAweEY1LCAweDgwLCAweEIyLCAweDkzLCAweDIzLCAweDkzLCAweDlCLCAweEVFLCAweDk5LCAweDM1LCAweEU0LCAweEJCLAorICAgIDB4RTksIDB4NEQsIDB4NzIsIDB4RkMsIDB4QTAsIDB4RTYsIDB4N0IsIDB4MjcsIDB4NjcsIDB4MTEsIDB4ODgsIDB4OUIsIDB4QUEsIDB4MzgsIDB4OEQsIDB4NkMsCisgICAgMHgzMywgMHg1MiwgMHg1RCwgMHhENiwgMHgyMiwgMHhGNCwgMHhCQywgMHhEMSwgMHhDRCwgMHg5QywgMHg3NCwgMHgzQSwgMHhFQSwgMHgyQiwgMHhCMCwgMHgyMCwKKyAgICAweDJFLCAweEFBLCAweDc1LCAweEYyLCAweEQ2LCAweERBLCAweEZCLCAweDkzLCAweERCLCAweDcxLCAweEI2LCAweDA3LCAweEQ5LCAweDg1LCAweENBLCAweEJCLAorICAgIDB4NDUsIDB4OTcsIDB4MDAsIDB4NDIsIDB4QTgsIDB4RDEsIDB4QTMsIDB4NDQsIDB4MTMsIDB4NjYsIDB4QUYsIDB4MEEsIDB4QTAsIDB4RUIsIDB4MkYsIDB4QTMsCisgICAgMHgyNywgMHg2NCwgMHg3OCwgMHg0NiwgMHg5QywgMHhFNCwgMHg5OSwgMHhBNSwgMHg0NywgMHg5NiwgMHhDMSwgMHhEMSwgMHg5OSwgMHg1QywgMHg5QSwgMHg2QSwKKyAgICAweEJBLCAweDVFLCAweEM2LCAweEJBLCAweEVCLCAweDYzLCAweDE5LCAweDZGLCAweEM5LCAweERCLCAweDM2LCAweEQ4LCAweEFELCAweDU4LCAweDQ0LCAweDMwLAorICAgIDB4OEYsIDB4NTksIDB4MTksIDB4NDIsIDB4QUYsIDB4NkEsIDB4MUIsIDB4OEEsIDB4QzksIDB4QTIsIDB4QUUsIDB4MDAsIDB4NUQsIDB4NUEsIDB4MDksIDB4MzMsCisgICAgMHhBQywgMHgwMiwgMHhEQSwgMHg2NCwgMHhBRiwgMHhERCwgMHhERiwgMHgxNSwgMHgyQSwgMHhBMiwgMHhEMiwgMHhBMSwgMHhBNiwgMHg5MywgMHg1QywgMHhFMSwKKyAgICAweDEwLCAweEMzLCAweDZBLCAweDEwLCAweEE1LCAweDk3LCAweDJELCAweDZELCAweEQ5LCAweEE5LCAweEI1LCAweDM2LCAweDcxLCAweDU0LCAweEM0LCAweEVGLAorICAgIDB4QzgsIDB4QzYsIDB4MTcsIDB4MzAsIDB4REQsIDB4Q0YsIDB4OTYsIDB4ODYsIDB4QzgsIDB4NjMsIDB4NjAsIDB4MjEsIDB4QUIsIDB4M0QsIDB4QkEsIDB4NDAsCisgICAgMHg4RiwgMHgzMCwgMHgxNiwgMHhCRSwgMHhEOSwgMHhERiwgMHg3RSwgMHgxMywgMHhDQiwgMHhCRiwgMHhGNywgMHgwRSwgMHgzMywgMHgzMSwgMHgxOCwgMHhFRCwKKyAgICAweDFFLCAweDQ3LCAweEQ4LCAweEYyLCAweENGLCAweDQyLCAweEM4LCAweEYzLCAweDJDLCAweDIwLCAweDAwLCAweEIxLCAweDhGLCAweEI5LCAweDFGLCAweEVBLAorICAgIDB4ODIsIDB4MTEsIDB4MDMsIDB4OEQsIDB4QjUsIDB4MjUsIDB4QjQsIDB4ODQsIDB4NzksIDB4OTcsIDB4REMsIDB4NTYsIDB4M0MsIDB4OEIsIDB4NDEsIDB4OUEsCisgICAgMHgwMSwgMHg2MywgMHg3QSwgMHhGNywgMHg2NiwgMHgwRiwgMHgwNSwgMHhGNywgMHg0QSwgMHhEQywgMHgwNSwgMHgwMywgMHgyOSwgMHg1QywgMHhGMSwgMHg4OSwKKyAgICAweDhELCAweDM4LCAweDE5LCAweDQ4LCAweDM4LCAweEJFLCAweDgyLCAweENELCAweDA0LCAweDE2LCAweEVDLCAweEQ2LCAweDY4LCAweEI4LCAweDAwLCAweDNELAorICAgIDB4QzYsIDB4NkUsIDB4REEsIDB4MTAsIDB4MEYsIDB4MTIsIDB4MTksIDB4MTgsIDB4QUUsIDB4MjQsIDB4MjksIDB4MkUsIDB4RDEsIDB4NUQsIDB4RDMsIDB4QTIsCisgICAgMHg3QSwgMHg4QSwgMHgxMCwgMHgyMCwgMHhCNSwgMHg4QSwgMHhENCwgMHg0MSwgMHg2NiwgMHg4RSwgMHgwMCwgMHg5RSwgMHgyOSwgMHgxMSwgMHgzQSwgMHhCRCwKKyAgICAweEVBLCAweDY2LCAweEE2LCAweDE4LCAweDg3LCAweEQzLCAweEVFLCAweDBGLCAweDE3LCAweEU1LCAweDVCLCAweEI5LCAweDE2LCAweDU2LCAweDIyLCAweERELAorICAgIDB4OUMsIDB4QjYsIDB4MDIsIDB4QkQsIDB4NkMsIDB4MTksIDB4QkEsIDB4ODUsIDB4MUYsIDB4NDQsIDB4QjcsIDB4ODgsIDB4NDMsIDB4NDUsIDB4QkUsIDB4MjksCisgICAgMHg2NSwgMHhBMiwgMHhCRSwgMHhDMSwgMHg0RSwgMHhDRiwgMHgyNSwgMHg1MywgMHhENiwgMHhDMiwgMHg1MywgMHg1OSwgMHhGOSwgMHhBMywgMHhDMywgMHg1MiwKKyAgICAweDlDLCAweEVFLCAweEUwLCAweDkyLCAweDM5LCAweDIwLCAweDk3LCAweEEwLCAweEY3LCAweDhDLCAweDU4LCAweDhCLCAweDdBLCAweEVBLCAweDA1LCAweDdCLAorICAgIDB4NkIsIDB4OTIsIDB4NjUsIDB4QUMsIDB4NjMsIDB4OUMsIDB4MTEsIDB4MDYsIDB4QjUsIDB4MkYsIDB4QzIsIDB4NUQsIDB4OTcsIDB4NTUsIDB4ODgsIDB4MjUsCisgICAgMHgzQywgMHgzNywgMHhFOCwgMHg4RCwgMHhCRSwgMHhCMiwgMHgzQywgMHhGQiwgMHhDNSwgMHgwRCwgMHhEOSwgMHg2QiwgMHhBNiwgMHg3RiwgMHhENCwgMHhENywKKyAgICAweEI5LCAweEI4LCAweDU2LCAweEMzLCAweDlCLCAweEEwLCAweDc1LCAweDdCLCAweDNELCAweDVELCAweEY0LCAweDUzLCAweEVELCAweEY3LCAweEJGLCAweEE3LAorICAgIDB4RDksIDB4RDgsIDB4MEMsIDB4MTQsIDB4NEYsIDB4RDYsIDB4QTQsIDB4QUMsIDB4QjMsIDB4MzMsIDB4NDQsIDB4NjIsIDB4MDQsIDB4NTIsIDB4QjQsIDB4QTIsCisgICAgMHhFMywgMHgxRSwgMHg0NiwgMHg3MywgMHg3OCwgMHg5MiwgMHg2NiwgMHgyNCwgMHhFQiwgMHg0MywgMHg0NiwgMHhFQywgMHg2QywgMHgxRCwgMHg3QiwgMHhBMSwKKyAgICAweDBCLCAweDU1LCAweENCLCAweEExLCAweEY3LCAweDdGLCAweENBLCAweDc4LCAweDQ2LCAweDIyLCAweDhGLCAweEQ3LCAweEIyLCAweDQyLCAweDg2LCAweDRBLAorICAgIDB4RTksIDB4Q0MsIDB4RkMsIDB4NzcsIDB4ODgsIDB4ODQsIDB4OTUsIDB4MEEsIDB4MjQsIDB4OEIsIDB4QjUsIDB4QzIsIDB4NjYsIDB4NkIsIDB4QTMsIDB4OTEsCisgICAgMHg0NywgMHhGRCwgMHg1QiwgMHg4NywgMHg5QiwgMHhFMCwgMHhCRiwgMHhCMCwgMHg0OSwgMHgzOCwgMHhEOSwgMHg2RCwgMHgwNSwgMHg3QSwgMHg1MywgMHhGRiwKKyAgICAweERDLCAweEU4LCAweDlDLCAweEI5LCAweEFGLCAweDU5LCAweEZELCAweEU1LCAweEQ0LCAweEUzLCAweDNBLCAweDU4LCAweENELCAweEE3LCAweDlDLCAweDZGLAorICAgIDB4RTAsIDB4MTksIDB4MTcsIDB4QjQsIDB4MTQsIDB4RkQsIDB4MTYsIDB4RDUsIDB4MzksIDB4NzcsIDB4OEYsIDB4Q0UsIDB4N0YsIDB4QzAsIDB4RjEsIDB4NUYsCisgICAgMHhFMSwgMHg2OSwgMHgyNiwgMHg4OSwgMHg0QywgMHg0MywgMHhDQSwgMHhENywgMHgzNywgMHg1MSwgMHgxMiwgMHg2QiwgMHg0NSwgMHgzRCwgMHg4QiwgMHhEOSwKKyAgICAweEQ3LCAweDhCLCAweERCLCAweDIyLCAweDMzLCAweDc5LCAweDM0LCAweDU2LCAweEU3LCAweERDLCAweDAwLCAweEJELCAweEQxLCAweDk4LCAweDUyLCAweEFDLAorICAgIDB4MUQsIDB4NDcsIDB4NjksIDB4RkYsIDB4ODgsIDB4QkYsIDB4MTUsIDB4M0YsIDB4N0QsIDB4REYsIDB4MTIsIDB4MjYsIDB4RjcsIDB4MUYsIDB4QkQsIDB4RDQsCisgICAgMHgxMywgMHg1MiwgMHg4NiwgMHhCNSwgMHgyRiwgMHg0RiwgMHgwRiwgMHhEMiwgMHg0NCwgMHg2QSwgMHhCNywgMHg3MSwgMHg2NywgMHg2OSwgMHgyRSwgMHg3NiwKKyAgICAweDU2LCAweDgyLCAweEZBLCAweDg4LCAweDhCLCAweEUyLCAweDgwLCAweDQ1LCAweDMxLCAweDRFLCAweEU4LCAweEVGLCAweEZDLCAweDQ4LCAweEVBLCAweDJFLAorICAgIDB4MTAsIDB4OUMsIDB4NzMsIDB4MTIsIDB4ODksIDB4QTYsIDB4MTcsIDB4M0EsIDB4RkUsIDB4MkUsIDB4NEMsIDB4MzMsIDB4OTcsIDB4NTQsIDB4M0MsIDB4OEQsCisgICAgMHgwRiwgMHhBQywgMHhBNSwgMHhEMCwgMHg3MSwgMHg2MiwgMHg3MywgMHg5NywgMHhGOCwgMHhFRCwgMHhENSwgMHhDRiwgMHhDNSwgMHgxOCwgMHg2NywgMHgxQSwKKyAgICAweDFDLCAweEUyLCAweEE2LCAweDJFLCAweEQxLCAweDUxLCAweDc0LCAweDU3LCAweEQzLCAweEU4LCAweDZFLCAweDYwLCAweDAwLCAweDk2LCAweDJELCAweDNFLAorICAgIDB4N0YsIDB4RDMsIDB4MDUsIDB4QjAsIDB4MjIsIDB4QzIsIDB4MEYsIDB4RjQsIDB4NjksIDB4NzMsIDB4QUYsIDB4QzIsIDB4MDIsIDB4MjIsIDB4NDAsIDB4RjksCisgICAgMHg2RiwgMHgzNSwgMHgxMywgMHgwNCwgMHhBNCwgMHg0OCwgMHhEMywgMHhFNywgMHhFRSwgMHg4OCwgMHhDNCwgMHgwMywgMHhENSwgMHgwRCwgMHg5MCwgMHg0OCwKKyAgICAweDk3LCAweDhBLCAweDlELCAweDEyLCAweDAyLCAweEU5LCAweDA0LCAweEQ0LCAweDJBLCAweEE2LCAweDEzLCAweEY2LCAweDA0LCAweDNDLCAweDc2LCAweDBELAorICAgIDB4MzcsIDB4QkIsIDB4RjUsIDB4OEEsIDB4MTIsIDB4MDQsIDB4M0EsIDB4RkUsIDB4QUMsIDB4QTcsIDB4OEQsIDB4QjgsIDB4NkUsIDB4QzQsIDB4QTUsIDB4MjYsCisgICAgMHg4NCwgMHhGRiwgMHhFQSwgMHg4MSwgMHg4RCwgMHgzMywgMHgyRCwgMHhGMCwgMHg5RCwgMHgwQiwgMHhGQiwgMHgwNCwgMHg3QiwgMHg0NiwgMHg3MSwgMHg1NywKKyAgICAweEEwLCAweDI0LCAweEQ5LCAweEY2LCAweDhBLCAweDQ0LCAweDE2LCAweEUxLCAweDdGLCAweDI4LCAweEQyLCAweEM1LCAweEMyLCAweEVGLCAweDhELCAweEE5LAorICAgIDB4NjMsIDB4OEIsIDB4NkIsIDB4OTgsIDB4NTAsIDB4MUEsIDB4QjQsIDB4NjYsIDB4RkIsIDB4Q0QsIDB4M0QsIDB4MUUsIDB4NzksIDB4ODYsIDB4MjIsIDB4QTMsCisgICAgMHhCMywgMHg3OCwgMHhCRiwgMHgwRCwgMHgyRSwgMHg2NiwgMHg0NSwgMHgwQSwgMHhBMCwgMHg1OCwgMHhFOSwgMHg0RCwgMHg1MiwgMHg1RSwgMHg5RSwgMHgwNywKKyAgICAweEFELCAweDA1LCAweDNELCAweDM1LCAweDE3LCAweEEyLCAweDY1LCAweDBDLCAweEZFLCAweDgwLCAweDU2LCAweDgxLCAweDhDLCAweDVELCAweDA4LCAweDBCLAorICAgIDB4MTUsIDB4NzUsIDB4MEUsIDB4ODgsIDB4MTksIDB4MzQsIDB4MkQsIDB4QjcsIDB4ODgsIDB4OTIsIDB4NkMsIDB4QzksIDB4RjMsIDB4REYsIDB4MTksIDB4QjYsCisgICAgMHg2RCwgMHhBQiwgMHg1OCwgMHgxMywgMHg2RSwgMHhDRSwgMHhDOSwgMHg5QSwgMHgwNywgMHhGOSwgMHgzNCwgMHg5QywgMHg1QywgMHg5RSwgMHgzMywgMHg4RiwKKyAgICAweDExLCAweENBLCAweEE1LCAweDFELCAweEQ0LCAweERBLCAweEM3LCAweDhDLCAweDNCLCAweDYxLCAweEJGLCAweDhELCAweENCLCAweDY5LCAweEZGLCAweDM2LAorICAgIDB4OEUsIDB4MEMsIDB4QUQsIDB4RjQsIDB4MzIsIDB4QzMsIDB4MjAsIDB4NTcsIDB4Q0UsIDB4MTksIDB4QUQsIDB4NjEsIDB4QjAsIDB4MkMsIDB4QjAsIDB4Q0QsCisgICAgMHhBNCwgMHhCRCwgMHhFMCwgMHhGQywgMHg3MywgMHgzRiwgMHhBNiwgMHhFOSwgMHg3MiwgMHg2RSwgMHhCOCwgMHg4NCwgMHgyRiwgMHg2QSwgMHhFOCwgMHhBRiwKKyAgICAweDU4LCAweEM2LCAweDY0LCAweEQ3LCAweEEwLCAweDNGLCAweDM2LCAweDYzLCAweDk1LCAweDcyLCAweDA2LCAweDhCLCAweEE3LCAweEU1LCAweEI0LCAweDI1LAorICAgIDB4QzcsIDB4QjcsIDB4QjcsIDB4QkQsIDB4RkEsIDB4RjIsIDB4Q0QsIDB4MjgsIDB4REQsIDB4QzIsIDB4ODAsIDB4N0IsIDB4NDUsIDB4RkEsIDB4OEQsIDB4Q0YsCisgICAgMHhEMiwgMHg1RSwgMHhCOCwgMHgwQywgMHhBMSwgMHg0MCwgMHhDNywgMHg0MCwgMHhDQiwgMHgwRCwgMHhGNCwgMHg2MSwgMHhBQywgMHgyMCwgMHg0NSwgMHg1OCwKKyAgICAweEI3LCAweDU2LCAweDJBLCAweEU2LCAweDJFLCAweDY0LCAweEZGLCAweEMzLCAweEM3LCAweEUxLCAweEY2LCAweEIzLCAweEU4LCAweDQyLCAweDNGLCAweEI1LAorICAgIDB4MjYsIDB4NEYsIDB4NDksIDB4MDIsIDB4MzksIDB4OTEsIDB4MkMsIDB4NDksIDB4NzAsIDB4REEsIDB4ODcsIDB4ODYsIDB4QTQsIDB4MjksIDB4MzYsIDB4NjIsCisgICAgMHhGOCwgMHgyRiwgMHhCRCwgMHhEMCwgMHhGMSwgMHgwQiwgMHhEMywgMHhFQiwgMHg4QSwgMHg2OCwgMHgxMywgMHhENiwgMHg5QywgMHhDOCwgMHg3OCwgMHgyOCwKKyAgICAweEJELCAweEFBLCAweERGLCAweEVBLCAweDcyLCAweENELCAweDAzLCAweDgzLCAweEU5LCAweEJCLCAweDNDLCAweDZGLCAweDc1LCAweDFGLCAweEFGLCAweDY3LAorICAgIDB4NDcsIDB4NUUsIDB4MDEsIDB4QzEsIDB4ODgsIDB4RTksIDB4OUIsIDB4QjAsIDB4RjksIDB4NjUsIDB4RjYsIDB4OEQsIDB4NzksIDB4MkEsIDB4QTksIDB4QzksCisgICAgMHgzQywgMHhGMywgMHgyNCwgMHgxOSwgMHgyMiwgMHg4MSwgMHgzMiwgMHg5RSwgMHhCRSwgMHhGQSwgMHhCNCwgMHg1MywgMHgxNywgMHg2NCwgMHgwMiwgMHg4QywKKyAgICAweDdDLCAweDE4LCAweDIxLCAweDAxLCAweEYyLCAweDE0LCAweEU4LCAweDZFLCAweEFFLCAweDNFLCAweEFFLCAweDYwLCAweEIxLCAweDRDLCAweDUxLCAweDlCLAorICAgIDB4QkEsIDB4MjgsIDB4MjQsIDB4QTAsIDB4QjksIDB4RkMsIDB4RUEsIDB4RTUsIDB4OUMsIDB4QTcsIDB4MTgsIDB4RTIsIDB4MzUsIDB4MDUsIDB4MDcsIDB4MTksCisgICAgMHhBRCwgMHhFOCwgMHgwMiwgMHg3MSwgMHgxNywgMHg1MywgMHgyMCwgMHg0QSwgMHhDRCwgMHgzMywgMHhDNiwgMHhCMywgMHg3MCwgMHg5RiwgMHg0NiwgMHgyNCwKKyAgICAweEVCLCAweEE4LCAweDE4LCAweDI0LCAweDk5LCAweEQ0LCAweDg3LCAweDE2LCAweDAwLCAweEJFLCAweEY0LCAweDQxLCAweDZDLCAweEJGLCAweDQ1LCAweEUzLAorICAgIDB4RjcsIDB4NkYsIDB4RDEsIDB4MEEsIDB4NEEsIDB4NkEsIDB4MjMsIDB4NUQsIDB4MEIsIDB4RkEsIDB4QjUsIDB4NzEsIDB4OTcsIDB4RTIsIDB4NkIsIDB4RDMsCisgICAgMHg4MSwgMHhCOSwgMHg0OSwgMHhCQywgMHhDNCwgMHgzQywgMHhCMiwgMHgwQywgMHgxNSwgMHg3NywgMHg4RSwgMHg1QSwgMHhDMCwgMHg4OSwgMHg1RiwgMHg5QSwKKyAgICAweDkzLCAweDlBLCAweDc1LCAweEIyLCAweEE0LCAweEUyLCAweDdFLCAweDVBLCAweDlDLCAweDBBLCAweDdFLCAweDhDLCAweERELCAweDlGLCAweDMxLCAweDEwLAorICAgIDB4OTUsIDB4OEQsIDB4NTcsIDB4MEUsIDB4QjcsIDB4REQsIDB4OEIsIDB4RTcsIDB4MzksIDB4QUMsIDB4NzksIDB4MTEsIDB4NTEsIDB4M0MsIDB4QkIsIDB4MjEsCisgICAgMHg1OCwgMHhENywgMHgyMywgMHhGQSwgMHg2MywgMHhGRCwgMHgyMSwgMHg4NSwgMHgzRiwgMHg1RiwgMHg4NSwgMHhGMCwgMHgzQywgMHhGOCwgMHhFOSwgMHg0MCwKKyAgICAweDcyLCAweDkyLCAweDc5LCAweENGLCAweDIxLCAweDE0LCAweEVELCAweEFCLCAweEI5LCAweEMzLCAweENGLCAweDEwLCAweDg1LCAweDI4LCAweDNCLCAweDgxLAorICAgIDB4QjYsIDB4NkUsIDB4OTksIDB4MTgsIDB4N0MsIDB4RDksIDB4MzYsIDB4MTEsIDB4MjIsIDB4NkMsIDB4RjgsIDB4ODMsIDB4QjIsIDB4NTEsIDB4RDMsIDB4RjcsCisgICAgMHg0MiwgMHgzNywgMHhENCwgMHhCQSwgMHg4NSwgMHhCNywgMHg5RSwgMHg2QywgMHg2MSwgMHhCMywgMHhEQiwgMHg2RiwgMHg3OSwgMHhGMiwgMHgzNCwgMHhBNywKKyAgICAweDI5LCAweDNDLCAweEU5LCAweDJCLCAweDJCLCAweDBCLCAweEY0LCAweDVGLCAweDQ3LCAweDk2LCAweDE0LCAweDM2LCAweEE0LCAweDJGLCAweDY3LCAweDU0LAorICAgIDB4NzcsIDB4NDgsIDB4MkIsIDB4NUYsIDB4NEEsIDB4MUYsIDB4QjIsIDB4RTUsIDB4RkYsIDB4MzgsIDB4RTQsIDB4RTIsIDB4QUUsIDB4NzYsIDB4QjEsIDB4NjYsCisgICAgMHg3RiwgMHgwMSwgMHhFOCwgMHgzMSwgMHhBNCwgMHgyNCwgMHhCQSwgMHg5NSwgMHhBQiwgMHgwQSwgMHg5QiwgMHgxRiwgMHhDNCwgMHgwNCwgMHg1OSwgMHg5QywKKyAgICAweDBELCAweEQwLCAweDNELCAweDJFLCAweDdGLCAweENFLCAweEJFLCAweEQyLCAweDkzLCAweDJBLCAweEIwLCAweDk1LCAweDIyLCAweEE1LCAweEU5LCAweEU0LAorICAgIDB4Q0EsIDB4RTIsIDB4NDksIDB4MTUsIDB4REYsIDB4NjQsIDB4NjUsIDB4RTQsIDB4RTUsIDB4QzgsIDB4NjUsIDB4QTMsIDB4MTgsIDB4NTMsIDB4MzYsIDB4RDQsCisgICAgMHg4QiwgMHhDNywgMHg5NywgMHhFMSwgMHg0RSwgMHhEOSwgMHg5MiwgMHhFNywgMHg0QSwgMHgwMSwgMHgyRiwgMHg5MywgMHhCMCwgMHgwOSwgMHg0MCwgMHg0RSwKKyAgICAweDVBLCAweDU4LCAweDdGLCAweDJELCAweERCLCAweDdFLCAweEE1LCAweEFCLCAweDhBLCAweEExLCAweEZELCAweDRDLCAweDlDLCAweDU1LCAweDBGLCAweDQ3LAorICAgIDB4NjQsIDB4MDIsIDB4ODAsIDB4Q0IsIDB4NTcsIDB4NTAsIDB4RUMsIDB4RkUsIDB4QjcsIDB4REMsIDB4RDIsIDB4MjEsIDB4RDcsIDB4MEIsIDB4RjUsIDB4MEYsCisgICAgMHhEMywgMHhCMiwgMHgxMCwgMHhERiwgMHg4RCwgMHg4QiwgMHg5MSwgMHhFMCwgMHg5QywgMHg0NCwgMHg1OSwgMHgwRSwgMHgwOCwgMHhGMiwgMHhBQiwgMHg5NCwKKyAgICAweDc1LCAweEYzLCAweDU2LCAweDk2LCAweEYwLCAweDNFLCAweDY1LCAweEEwLCAweEJBLCAweDRDLCAweDEwLCAweDIwLCAweEI3LCAweEY0LCAweDJFLCAweEVDLAorICAgIDB4RTIsIDB4QzQsIDB4MDMsIDB4N0QsIDB4RkIsIDB4RDksIDB4NzksIDB4Q0MsIDB4ODgsIDB4MUYsIDB4NzcsIDB4RTgsIDB4OUQsIDB4MUIsIDB4ODksIDB4Q0QsCisgICAgMHhCQiwgMHgzRCwgMHg2MywgMHgzRCwgMHhDQywgMHg5NSwgMHg4QywgMHhGQSwgMHg1QywgMHg3OSwgMHhDMiwgMHhFMSwgMHg4MywgMHg2NCwgMHhFMCwgMHhCMywKKyAgICAweDUyLCAweDM4LCAweDkwLCAweDQ5LCAweDJBLCAweDAyLCAweDFBLCAweDlGLCAweDg1LCAweEM0LCAweDQ1LCAweDU5LCAweEUyLCAweEUxLCAweEY2LCAweDdCLAorICAgIDB4NjEsIDB4QUYsIDB4MEEsIDB4QkEsIDB4QTMsIDB4OEYsIDB4QTAsIDB4MkQsIDB4RUUsIDB4N0MsIDB4QkUsIDB4NTQsIDB4NDAsIDB4MTUsIDB4QjUsIDB4ODcsCisgICAgMHhBMSwgMHhFRiwgMHg3RSwgMHgwOSwgMHgzOCwgMHg1MSwgMHhFRCwgMHgyRCwgMHhERSwgMHhEQiwgMHg0MSwgMHhDNiwgMHhFRSwgMHg4OCwgMHhBRCwgMHgxRiwKKyAgICAweDlDLCAweDFDLCAweEVDLCAweDcwLCAweDM5LCAweDM4LCAweDQ1LCAweEI4LCAweDAxLCAweEI2LCAweDU4LCAweDg1LCAweDYxLCAweDQ4LCAweDNBLCAweENCLAorICAgIDB4RTksIDB4OTcsIDB4QjMsIDB4OTYsIDB4OEMsIDB4MEIsIDB4RDcsIDB4MzMsIDB4NzMsIDB4NzMsIDB4N0YsIDB4MUQsIDB4ODUsIDB4RkYsIDB4RTksIDB4OUUsCisgICAgMHhDRSwgMHhEMSwgMHgxRSwgMHhGRCwgMHgxQiwgMHg3QSwgMHg2MywgMHgzMywgMHgxMCwgMHg0NywgMHg5NiwgMHhCQSwgMHgwQSwgMHg4RSwgMHhGNiwgMHg0QywKKyAgICAweDcwLCAweEMxLCAweEUxLCAweEZELCAweDE5LCAweDVBLCAweEUwLCAweDE5LCAweEU4LCAweEQ5LCAweDBDLCAweDMxLCAweDhFLCAweEE3LCAweDQyLCAweDlELAorICAgIDB4NTAsIDB4QjIsIDB4QzksIDB4MjAsIDB4RTgsIDB4NjIsIDB4RDIsIDB4MjcsIDB4NjcsIDB4OEUsIDB4QjYsIDB4MzMsIDB4OEMsIDB4RDksIDB4MzgsIDB4ODUsCisgICAgMHhEQywgMHg0RCwgMHhDRiwgMHg3MiwgMHhGMywgMHhDRiwgMHhBRiwgMHhCNiwgMHgwMCwgMHhGMCwgMHg1NCwgMHhBRSwgMHgyNywgMHhFQywgMHg4MCwgMHgyOCwKKyAgICAweDRCLCAweDRCLCAweEE4LCAweDU3LCAweDVDLCAweEMzLCAweEVFLCAweDNBLCAweDFGLCAweDc3LCAweEFDLCAweDlFLCAweEE5LCAweDExLCAweDcxLCAweDIzLAorICAgIDB4NUIsIDB4RkIsIDB4RjYsIDB4ODAsIDB4MEUsIDB4ODAsIDB4Q0IsIDB4QzcsIDB4RTgsIDB4MUYsIDB4OEIsIDB4MDksIDB4NDUsIDB4QTAsIDB4RjYsIDB4NzAsCisgICAgMHhEMSwgMHgzRCwgMHg5RCwgMHg0NiwgMHgwMCwgMHg4MCwgMHgzRSwgMHg3OSwgMHgxRiwgMHg0QywgMHhGMiwgMHg0RiwgMHhDQywgMHg4QiwgMHg5RiwgMHg2MywKKyAgICAweENDLCAweDAxLCAweDYyLCAweEQzLCAweDMwLCAweDdELCAweEIxLCAweDc0LCAweEI4LCAweEY1LCAweEIxLCAweDBGLCAweDEzLCAweDU3LCAweEY3LCAweDcwLAorICAgIDB4N0YsIDB4MTYsIDB4NkMsIDB4MjcsIDB4MTcsIDB4MTYsIDB4NDksIDB4RTYsIDB4NUYsIDB4ODcsIDB4QTIsIDB4NTIsIDB4MEUsIDB4OUMsIDB4RjksIDB4QTksCisgICAgMHhFRSwgMHg5MSwgMHhGMCwgMHhCMSwgMHg5QywgMHgzMiwgMHgxMywgMHg2NywgMHgwOCwgMHhGQSwgMHgwQywgMHg2MiwgMHhCRiwgMHgxMSwgMHhCMiwgMHg4MSwKKyAgICAweDlGLCAweEZGLCAweEMxLCAweDBDLCAweEY5LCAweDg0LCAweEJBLCAweDg1LCAweDJFLCAweEMyLCAweEJDLCAweEMwLCAweDU5LCAweDFFLCAweDU2LCAweDYyLAorICAgIDB4NTgsIDB4MzksIDB4MzgsIDB4NkIsIDB4RkMsIDB4QzUsIDB4QzQsIDB4OUEsIDB4OTcsIDB4QkMsIDB4MTUsIDB4QTMsIDB4MkUsIDB4OTAsIDB4RDIsIDB4OEUsCisgICAgMHgxOCwgMHhERiwgMHg1MSwgMHgzOSwgMHg2MSwgMHg5OSwgMHhFNCwgMHgyRCwgMHhBOSwgMHg1MCwgMHg3MCwgMHgwQiwgMHgwRiwgMHg0MSwgMHgyMCwgMHg4OSwKKyAgICAweDM3LCAweEZDLCAweEU1LCAweEQ3LCAweDNCLCAweDU3LCAweEY1LCAweDk0LCAweDY5LCAweDRDLCAweEVDLCAweDU2LCAweDFCLCAweDlCLCAweEEzLCAweDczLAorICAgIDB4QzIsIDB4NkYsIDB4QTgsIDB4RkYsIDB4RjIsIDB4RUMsIDB4RDAsIDB4RDksIDB4NzksIDB4OUYsIDB4MzksIDB4MEIsIDB4N0MsIDB4RjIsIDB4RTIsIDB4NUUsCisgICAgMHg1MiwgMHg3QSwgMHhFMCwgMHg4MSwgMHhFMywgMHg1NCwgMHhDNiwgMHgyRCwgMHg4NiwgMHgyNywgMHg4RCwgMHgwNCwgMHhDMywgMHg2MywgMHgyRSwgMHgyNSwKKyAgICAweDZFLCAweDA1LCAweDhGLCAweEZCLCAweENBLCAweDg5LCAweDE4LCAweDRELCAweDlCLCAweEI5LCAweDIwLCAweEExLCAweDE1LCAweEEyLCAweDMzLCAweDU2LAorICAgIDB4QUIsIDB4M0YsIDB4MkQsIDB4MTQsIDB4NUEsIDB4MDQsIDB4NUQsIDB4QkIsIDB4N0UsIDB4RTgsIDB4RjcsIDB4NEIsIDB4RDYsIDB4NDksIDB4RTgsIDB4QUYsCisgICAgMHhFNSwgMHgxMCwgMHgxRiwgMHg5MSwgMHg2OCwgMHg3QywgMHhBMCwgMHg1NSwgMHgyNCwgMHg3NSwgMHg0NiwgMHhBRiwgMHhFMSwgMHhDRCwgMHg3NSwgMHgwRCwKKyAgICAweDM2LCAweEM3LCAweEFCLCAweDIxLCAweEFDLCAweEE4LCAweDFDLCAweEYwLCAweDY5LCAweDZGLCAweDM4LCAweDVFLCAweDY3LCAweDdELCAweDk5LCAweDcyLAorICAgIDB4QjksIDB4MzksIDB4RTksIDB4RkIsIDB4Q0YsIDB4Q0MsIDB4MjQsIDB4OEMsIDB4NjMsIDB4NkIsIDB4NkQsIDB4QkQsIDB4MEMsIDB4RkYsIDB4NUEsIDB4MkQsCisgICAgMHhEMCwgMHgzRiwgMHg2MiwgMHhFOSwgMHhGRSwgMHhDMywgMHg1MCwgMHgxOCwgMHhDMSwgMHhFOSwgMHgwNywgMHhFOCwgMHhFNSwgMHgyRSwgMHhBNSwgMHg5OCwKKyAgICAweDUzLCAweDI3LCAweDRBLCAweDNELCAweEM5LCAweEFGLCAweDFCLCAweDVFLCAweDQxLCAweDRGLCAweDY3LCAweEZFLCAweDg0LCAweEJCLCAweDc0LCAweDBDLAorICAgIDB4NkMsIDB4ODgsIDB4MDIsIDB4RkEsIDB4MzcsIDB4NkEsIDB4QUQsIDB4QkMsIDB4MDgsIDB4REIsIDB4RTgsIDB4RjIsIDB4Q0QsIDB4QTQsIDB4RjAsIDB4RkMsCisgICAgMHhDQywgMHhBRCwgMHhCNSwgMHhFNywgMHg5NSwgMHg2MSwgMHg5MywgMHg5OSwgMHhGMSwgMHhBMywgMHgwNiwgMHhDQywgMHgwMSwgMHg4RCwgMHg0NSwgMHg5RSwKKyAgICAweEUxLCAweEE2LCAweDE1LCAweERDLCAweDRBLCAweDk5LCAweDBGLCAweDE1LCAweDM0LCAweDFFLCAweDdFLCAweDRGLCAweEU1LCAweDQyLCAweEVDLCAweEU5LAorICAgIDB4RDMsIDB4QTMsIDB4QUQsIDB4QUIsIDB4OTYsIDB4NUIsIDB4ODksIDB4OTQsIDB4MTIsIDB4RDMsIDB4QjEsIDB4NjQsIDB4NjksIDB4NUIsIDB4NTUsIDB4QzYsCisgICAgMHg4QywgMHg3NywgMHhEMCwgMHg5RCwgMHgwRCwgMHhGMywgMHgzNiwgMHg3OSwgMHg0OSwgMHg1MCwgMHhFOSwgMHhCQywgMHg2MSwgMHg2MiwgMHhGQSwgMHg2NywKKyAgICAweERFLCAweDAwLCAweDg3LCAweEM1LCAweDk1LCAweDAyLCAweEJELCAweEFDLCAweDdGLCAweDNDLCAweDkyLCAweDQ5LCAweDE1LCAweEZFLCAweEI0LCAweDlELAorICAgIDB4NDQsIDB4RDksIDB4MTksIDB4MTAsIDB4ODgsIDB4REUsIDB4QkIsIDB4QzksIDB4RTEsIDB4RUYsIDB4QzAsIDB4RDYsIDB4NjAsIDB4QzcsIDB4MUQsIDB4OEIsCisgICAgMHhFOCwgMHhFMywgMHhEMSwgMHhFOCwgMHgyOCwgMHg1RCwgMHhFQywgMHg0OSwgMHhFQSwgMHg3OSwgMHhFNCwgMHg2MSwgMHg2MSwgMHg3QywgMHg4MSwgMHhCRiwKKyAgICAweDZELCAweEExLCAweDg5LCAweDgwLCAweDYzLCAweDgzLCAweDY1LCAweEYyLCAweDVDLCAweEY2LCAweEJCLCAweEFELCAweEQ0LCAweDNCLCAweDJGLCAweEZFLAorICAgIDB4NkYsIDB4MEEsIDB4RDYsIDB4NkUsIDB4MkQsIDB4NkUsIDB4MzQsIDB4QjksIDB4MEIsIDB4RTIsIDB4MTIsIDB4OEIsIDB4NDAsIDB4RkUsIDB4MEUsIDB4MjQsCisgICAgMHg2QywgMHg2NywgMHhERSwgMHgyNSwgMHhDRCwgMHg0OCwgMHgzNCwgMHg4QSwgMHg1QiwgMHgwRCwgMHg5QiwgMHhDNCwgMHhEMywgMHgxQywgMHhFNiwgMHg5RCwKKyAgICAweDhDLCAweDc3LCAweEIwLCAweDJCLCAweDBDLCAweDc3LCAweDJDLCAweDBELCAweEJFLCAweEFELCAweEUxLCAweDlELCAweDlGLCAweDEwLCAweDg0LCAweDM0LAorICAgIDB4MzksIDB4NTIsIDB4QjAsIDB4QjgsIDB4MUMsIDB4MDIsIDB4MjQsIDB4M0MsIDB4RDgsIDB4ODAsIDB4RDQsIDB4NDAsIDB4NjMsIDB4NTksIDB4RTYsIDB4NkMsCisgICAgMHgwRiwgMHhGQSwgMHhFQiwgMHhBRSwgMHhEQywgMHg2NywgMHg0NywgMHgwMywgMHgyNSwgMHg4MCwgMHhDRCwgMHg0QiwgMHgyMSwgMHg3NywgMHgxNywgMHhCQiwKKyAgICAweDE5LCAweDhDLCAweEMxLCAweDA5LCAweDdFLCAweDBGLCAweDdELCAweEQ3LCAweDUwLCAweEY5LCAweEMzLCAweEFBLCAweDA1LCAweDEwLCAweERELCAweDZCLAorICAgIDB4RDIsIDB4OTYsIDB4NDYsIDB4MTQsIDB4QzIsIDB4QTUsIDB4RDcsIDB4RjgsIDB4RUQsIDB4REEsIDB4NTgsIDB4NTMsIDB4QzMsIDB4OEYsIDB4QUIsIDB4NDcsCisgICAgMHg5MSwgMHg5NSwgMHg0OCwgMHgwQywgMHhERSwgMHhFRCwgMHg5OSwgMHgwNCwgMHgzQSwgMHhDNywgMHhDQywgMHhCNSwgMHgxQywgMHhBQywgMHgyOSwgMHhBRSwKKyAgICAweEZBLCAweEE2LCAweEE1LCAweDU3LCAweDY1LCAweDEyLCAweDg2LCAweEJFLCAweDcyLCAweEZCLCAweDA2LCAweDkzLCAweDQ5LCAweEQwLCAweDUzLCAweDQzLAorICAgIDB4RDAsIDB4RDQsIDB4QzcsIDB4MkYsIDB4OEEsIDB4MTMsIDB4RUMsIDB4OTUsIDB4M0IsIDB4MTgsIDB4RDMsIDB4NjcsIDB4MkIsIDB4QTYsIDB4Q0YsIDB4MEIsCisgICAgMHhFNiwgMHg0NywgMHhGOSwgMHgzQSwgMHgzMiwgMHg0MSwgMHgyNywgMHhDOCwgMHhEQiwgMHhENywgMHhDNywgMHhFRCwgMHhCNywgMHhDRiwgMHg3NSwgMHhGMSwKKyAgICAweDI5LCAweEM3LCAweDI4LCAweDk3LCAweDA3LCAweEJBLCAweDc0LCAweDJDLCAweDVBLCAweEFFLCAweDZFLCAweDM5LCAweDUxLCAweEYzLCAweEQyLCAweDA3LAorICAgIDB4RTIsIDB4ODIsIDB4RkEsIDB4RTAsIDB4RDAsIDB4MjIsIDB4NkIsIDB4QzcsIDB4REEsIDB4OTAsIDB4MEQsIDB4MUIsIDB4QjUsIDB4MTcsIDB4OEEsIDB4RkEsCisgICAgMHg5RSwgMHhCNSwgMHgxQSwgMHhCRCwgMHg2RiwgMHg2NCwgMHgwMiwgMHhGNSwgMHgxNCwgMHhCNCwgMHg2MywgMHg2NCwgMHhGQiwgMHg0MiwgMHg5OSwgMHg0MiwKKyAgICAweERFLCAweDZBLCAweDZDLCAweEFCLCAweDVCLCAweEU1LCAweEM0LCAweDYyLCAweDI1LCAweDY2LCAweDgzLCAweEMzLCAweDZBLCAweDY0LCAweDRBLCAweEQwLAorICAgIDB4QTcsIDB4NEYsIDB4NjYsIDB4MjEsIDB4RjksIDB4N0MsIDB4Q0MsIDB4MTUsIDB4NUYsIDB4NjksIDB4QjMsIDB4MkUsIDB4ODMsIDB4MjYsIDB4MTIsIDB4QzcsCisgICAgMHhFMCwgMHhFNCwgMHhBRSwgMHg5MiwgMHg0NCwgMHhBNCwgMHgxRiwgMHhFRSwgMHhCQywgMHgwNiwgMHhBRiwgMHhDNCwgMHg1QSwgMHgxNCwgMHg4OSwgMHhDRiwKKyAgICAweDQ2LCAweEMyLCAweEE4LCAweDgwLCAweDk4LCAweEY2LCAweENDLCAweEE4LCAweDdFLCAweERFLCAweDk0LCAweDMxLCAweDM2LCAweEJGLCAweDgwLCAweEE5LAorICAgIDB4NDksIDB4NjIsIDB4RjksIDB4NEIsIDB4MDksIDB4RkYsIDB4MjksIDB4Q0MsIDB4QjYsIDB4NUEsIDB4ODQsIDB4QkMsIDB4Q0IsIDB4RjQsIDB4QkIsIDB4MTksCisgICAgMHhDMSwgMHhBNywgMHgwOSwgMHg2MCwgMHhGOSwgMHhENCwgMHgwRiwgMHg4NCwgMHhFMCwgMHhERiwgMHg5QSwgMHgwRCwgMHhDQywgMHhDQSwgMHgxNCwgMHg2OCwKKyAgICAweDM5LCAweDc0LCAweDEwLCAweDYzLCAweDEzLCAweEMwLCAweEFFLCAweEQyLCAweDJCLCAweDNDLCAweDZFLCAweEMyLCAweDI5LCAweDUxLCAweEM5LCAweEFGLAorICAgIDB4MEUsIDB4MDksIDB4ODcsIDB4QUQsIDB4ODIsIDB4OEEsIDB4QTYsIDB4MEYsIDB4MDIsIDB4NEIsIDB4QUQsIDB4MUYsIDB4NjMsIDB4RUUsIDB4QUUsIDB4NTcsCisgICAgMHhFMCwgMHhFNSwgMHg1MSwgMHhDQywgMHg4QywgMHg5QSwgMHg5RSwgMHg0RiwgMHg2NywgMHhGQiwgMHhENCwgMHg5RiwgMHhBNSwgMHgxOCwgMHgxMywgMHg5RiwKKyAgICAweDI0LCAweEY0LCAweDlFLCAweDJCLCAweDUyLCAweEMwLCAweDA4LCAweEU4LCAweDc3LCAweEVBLCAweEJCLCAweDAxLCAweDVBLCAweDc3LCAweDQ2LCAweEVGLAorICAgIDB4MTAsIDB4QUMsIDB4QTQsIDB4NzAsIDB4NTYsIDB4OTgsIDB4NUEsIDB4QkYsIDB4NEEsIDB4ODIsIDB4NzIsIDB4OTYsIDB4QjksIDB4QjEsIDB4NjEsIDB4NzgsCisgICAgMHg2RCwgMHg2RSwgMHhBRCwgMHg2NiwgMHg2QywgMHg2NywgMHhCMywgMHg0NSwgMHg4RiwgMHhGOCwgMHhGRCwgMHgxRSwgMHhBQSwgMHg3QSwgMHgxMywgMHgwQywKKyAgICAweDM1LCAweDFBLCAweDlGLCAweDY5LCAweDVFLCAweDEzLCAweDhBLCAweEI1LCAweEU3LCAweDE3LCAweDU4LCAweDdBLCAweEY1LCAweEIzLCAweDA2LCAweDQ4LAorICAgIDB4MTYsIDB4NTUsIDB4REMsIDB4RDgsIDB4QjcsIDB4NzAsIDB4M0QsIDB4QjEsIDB4MDQsIDB4MTMsIDB4QTEsIDB4MjEsIDB4NjAsIDB4RjIsIDB4MTUsIDB4QTgsCisgICAgMHgwOSwgMHgyQSwgMHhEMiwgMHhCQywgMHg2NywgMHhBRCwgMHgyMywgMHgwMSwgMHg4RSwgMHg5MSwgMHhFMiwgMHg0QywgMHg3MywgMHg0MSwgMHhBNCwgMHgyOSwKKyAgICAweDlBLCAweDA5LCAweEZELCAweEM2LCAweDhDLCAweEMyLCAweDBELCAweDYyLCAweEZFLCAweDcwLCAweDUzLCAweDhCLCAweDcyLCAweDA3LCAweDI2LCAweDczLAorICAgIDB4QzEsIDB4RUQsIDB4MDcsIDB4RTAsIDB4RDMsIDB4MDIsIDB4OUMsIDB4MTAsIDB4MzAsIDB4ODMsIDB4ODMsIDB4NTAsIDB4REEsIDB4MTEsIDB4MzYsIDB4OEIsCisgICAgMHgyMiwgMHhFNiwgMHhGMywgMHg5MCwgMHhERSwgMHg5MCwgMHg4NywgMHg2RiwgMHgxMCwgMHg0MSwgMHgzQiwgMHg2RSwgMHg0MSwgMHg4NywgMHgwQSwgMHg1NiwKKyAgICAweDI3LCAweDk1LCAweENBLCAweEZFLCAweEM4LCAweEUwLCAweDE1LCAweEQyLCAweEVFLCAweEI4LCAweEJGLCAweDM1LCAweDRGLCAweDhCLCAweEYzLCAweEJBLAorICAgIDB4MzcsIDB4NkYsIDB4MTYsIDB4NjEsIDB4ODAsIDB4N0UsIDB4OTUsIDB4NTAsIDB4MjcsIDB4N0EsIDB4NDYsIDB4MEYsIDB4QkYsIDB4REMsIDB4NzQsIDB4QjEsCisgICAgMHg3MywgMHhFMCwgMHg1MCwgMHg4NiwgMHg2RiwgMHg5MiwgMHhCNiwgMHg0MSwgMHg1QiwgMHgyRSwgMHhFMSwgMHhDQSwgMHg4RSwgMHhEQiwgMHg4RSwgMHhFQywKKyAgICAweEQxLCAweDhDLCAweEY0LCAweDc0LCAweDdDLCAweDlDLCAweDFFLCAweDI0LCAweDYwLCAweEY0LCAweEQzLCAweDVCLCAweEEwLCAweDNCLCAweEUyLCAweDVCLAorICAgIDB4MTcsIDB4QkIsIDB4N0QsIDB4OTcsIDB4NTcsIDB4MkEsIDB4MDksIDB4OUEsIDB4MUQsIDB4NUMsIDB4MDIsIDB4NjMsIDB4NEEsIDB4QzAsIDB4MEUsIDB4QTEsCisgICAgMHhBMCwgMHg5NiwgMHhFNSwgMHg0RCwgMHg2RCwgMHg5MSwgMHgzQywgMHg2OSwgMHg1OSwgMHg4MCwgMHg0MSwgMHg3RCwgMHhGNywgMHg1MywgMHg5MywgMHg1MiwKKyAgICAweDU4LCAweEY5LCAweDExLCAweDMzLCAweEZGLCAweERCLCAweDdGLCAweDI2LCAweDVFLCAweDkwLCAweDVCLCAweEI1LCAweDQyLCAweDE2LCAweEUwLCAweDA1LAorICAgIDB4NEUsIDB4NUIsIDB4MjMsIDB4QUUsIDB4MzUsIDB4N0QsIDB4OTUsIDB4NzksIDB4NEMsIDB4RDEsIDB4NzcsIDB4NDcsIDB4NzcsIDB4OUIsIDB4NjMsIDB4RUQsCisgICAgMHg4NiwgMHg2RSwgMHg2RiwgMHg3NiwgMHg1NCwgMHg3QywgMHg0QSwgMHg5RCwgMHgwRiwgMHhBRSwgMHhFNywgMHg0MSwgMHhCRCwgMHgyMCwgMHgxRiwgMHgwNCwKKyAgICAweEY0LCAweEE4LCAweDkwLCAweDQ4LCAweEY3LCAweDU5LCAweEY3LCAweDE0LCAweENGLCAweDFELCAweDE4LCAweEU1LCAweDU0LCAweDI1LCAweDRELCAweDg3LAorICAgIDB4RTQsIDB4NjEsIDB4ODQsIDB4N0IsIDB4QjUsIDB4Q0IsIDB4RjUsIDB4NzAsIDB4NzgsIDB4ODAsIDB4RjEsIDB4NTIsIDB4ODksIDB4MkQsIDB4RUEsIDB4NzIsCisgICAgMHhCMywgMHhFNywgMHg3RCwgMHgyNCwgMHg1OSwgMHhCNywgMHgyMiwgMHg0OSwgMHg5RiwgMHhEQSwgMHg3RCwgMHg4MSwgMHg4NiwgMHhBQiwgMHhEMywgMHg4MCwKKyAgICAweDE4LCAweDU1LCAweEY1LCAweDIxLCAweEM2LCAweEU0LCAweDlFLCAweEU1LCAweEJCLCAweDEyLCAweDhELCAweDNFLCAweEQxLCAweEVFLCAweDMzLCAweDU2LAorICAgIDB4Q0YsIDB4MjQsIDB4MzcsIDB4NjUsIDB4NzMsIDB4NDEsIDB4NjMsIDB4REQsIDB4MjEsIDB4NEMsIDB4ODUsIDB4QTMsIDB4QjEsIDB4NzQsIDB4NjcsIDB4RkMsCisgICAgMHg2MCwgMHhDOSwgMHgxNCwgMHgwRCwgMHg0RiwgMHgzMSwgMHgxNSwgMHg4NywgMHg3MCwgMHhFQSwgMHgxOCwgMHg5QywgMHhFOSwgMHgxMywgMHgwOSwgMHg2QSwKKyAgICAweEM1LCAweEUyLCAweDAxLCAweDA4LCAweEYzLCAweDJBLCAweEUwLCAweDI4LCAweDQyLCAweDFCLCAweDgwLCAweDMwLCAweEMzLCAweDg3LCAweEY4LCAweDMxLAorICAgIDB4QkMsIDB4MEMsIDB4QzcsIDB4QkEsIDB4NjEsIDB4NzcsIDB4ODUsIDB4QzcsIDB4OUIsIDB4NTYsIDB4MjksIDB4NDgsIDB4Q0YsIDB4NjUsIDB4MTgsIDB4MDUsCisgICAgMHgyRiwgMHg4RSwgMHgyMywgMHgzRCwgMHhBMywgMHgzNCwgMHhCMiwgMHgxNywgMHhBQiwgMHg0MiwgMHhFNiwgMHg4OCwgMHg4QywgMHg5NiwgMHhCNSwgMHg1RiwKKyAgICAweDQ0LCAweDIwLCAweDQ3LCAweEFCLCAweDFGLCAweDAyLCAweEUzLCAweERGLCAweEYyLCAweEVGLCAweEJFLCAweDVBLCAweEE4LCAweDg3LCAweDk4LCAweDU3LAorICAgIDB4Q0UsIDB4NzMsIDB4NzUsIDB4QUUsIDB4QTEsIDB4NTEsIDB4MTYsIDB4RUMsIDB4NUEsIDB4MEYsIDB4RkEsIDB4RjAsIDB4QzYsIDB4ODAsIDB4RkUsIDB4N0YsCisgICAgMHhFNCwgMHgzQiwgMHgwMiwgMHgyNywgMHg5RCwgMHg3NSwgMHhFMywgMHg0MSwgMHg4QywgMHg1QywgMHg1QiwgMHgyMCwgMHg0MCwgMHgyMiwgMHhCRiwgMHgwOSwKKyAgICAweDc5LCAweDYzLCAweEI0LCAweERDLCAweDA2LCAweDQ0LCAweEU0LCAweDVCLCAweDA5LCAweDU4LCAweEM5LCAweDUxLCAweDM4LCAweDlELCAweDA3LCAweDEwLAorICAgIDB4OTgsIDB4NzUsIDB4NkEsIDB4M0IsIDB4ODcsIDB4MDAsIDB4NzYsIDB4OUQsIDB4NkMsIDB4RTksIDB4QjAsIDB4OTQsIDB4MUUsIDB4NTAsIDB4NDgsIDB4MjYsCisgICAgMHg1RSwgMHhGQiwgMHgyRCwgMHgxMCwgMHg1NCwgMHg4RSwgMHhBMiwgMHg1MCwgMHgwMywgMHhDNiwgMHg3OCwgMHg1NSwgMHg4NiwgMHg0RSwgMHhENCwgMHg0QiwKKyAgICAweEZDLCAweDE1LCAweDYxLCAweDRDLCAweDcyLCAweEZCLCAweENFLCAweDIxLCAweEM1LCAweDg5LCAweDIzLCAweDAwLCAweDE2LCAweDYzLCAweDczLCAweEFELAorICAgIDB4QjAsIDB4RTEsIDB4OTQsIDB4MzYsIDB4NDMsIDB4RkUsIDB4QTQsIDB4MzcsIDB4MzQsIDB4M0YsIDB4RTIsIDB4QjksIDB4NzUsIDB4MkQsIDB4OTUsIDB4NzIsCisgICAgMHgyQywgMHhDOCwgMHg4QSwgMHhDNSwgMHg0QiwgMHgwMywgMHg4QywgMHhBNCwgMHhFOCwgMHg3OSwgMHgxNSwgMHgzOCwgMHgyNCwgMHg4RCwgMHg5MiwgMHgwQiwKKyAgICAweDkxLCAweEE0LCAweEYzLCAweDk0LCAweDU4LCAweDM1LCAweEQ2LCAweDZELCAweDE0LCAweDNFLCAweDc4LCAweDRFLCAweDE3LCAweDIxLCAweDgwLCAweDVELAorICAgIDB4OTUsIDB4RjAsIDB4NzMsIDB4N0UsIDB4QTIsIDB4REEsIDB4M0QsIDB4RDQsIDB4MzMsIDB4RjQsIDB4MEEsIDB4ODAsIDB4NEEsIDB4NUMsIDB4ODMsIDB4OTEsCisgICAgMHg2RSwgMHhFNywgMHgxMywgMHg3MywgMHgyNiwgMHg5NCwgMHgxNywgMHhENCwgMHgxMywgMHhCRCwgMHg4QiwgMHg3NCwgMHgyNSwgMHgwNiwgMHgzNCwgMHhBOCwKKyAgICAweDk4LCAweDk5LCAweDk0LCAweDFGLCAweEM3LCAweERDLCAweDNGLCAweDM2LCAweEY4LCAweDI0LCAweDU3LCAweDFFLCAweEI3LCAweDlELCAweDI5LCAweEE0LAorICAgIDB4QjYsIDB4MjcsIDB4MUIsIDB4MzEsIDB4RjMsIDB4MjEsIDB4ODAsIDB4NjAsIDB4NTEsIDB4RjEsIDB4NjYsIDB4MTAsIDB4QkQsIDB4MTUsIDB4RjUsIDB4QkIsCisgICAgMHg0NywgMHg1MCwgMHhDRCwgMHhDNywgMHhFQywgMHgwNSwgMHg0OCwgMHhDQiwgMHg4NCwgMHg3MCwgMHhCMCwgMHg1OCwgMHg1RiwgMHg1MywgMHgyQSwgMHgyQiwKKyAgICAweDAyLCAweDQyLCAweDVDLCAweDc4LCAweDFDLCAweDdDLCAweDU2LCAweEEyLCAweEYyLCAweDRCLCAweEEwLCAweDk0LCAweDhBLCAweDg0LCAweEIwLCAweDJELAorICAgIDB4OUIsIDB4RjUsIDB4QTgsIDB4QzIsIDB4RTIsIDB4RTMsIDB4MjAsIDB4QzUsIDB4QUUsIDB4RDYsIDB4NEYsIDB4MTcsIDB4REYsIDB4NTIsIDB4NDcsIDB4OEUsCisgICAgMHg2RiwgMHg2RCwgMHg0MSwgMHhEQiwgMHg1OSwgMHhGMCwgMHhDNSwgMHg5RCwgMHg2RCwgMHhCRCwgMHhBMCwgMHhDOSwgMHg5RCwgMHg3MiwgMHgyRCwgMHgyRSwKKyAgICAweDUxLCAweDEwLCAweEFDLCAweDM3LCAweDAxLCAweEE3LCAweEQ3LCAweDRFLCAweEYzLCAweDk2LCAweEQ2LCAweDc5LCAweEZELCAweEEwLCAweEM0LCAweDNGLAorICAgIDB4MzgsIDB4NjgsIDB4QTQsIDB4MTksIDB4MDEsIDB4RTYsIDB4MEIsIDB4OTYsIDB4MzIsIDB4QTMsIDB4NDgsIDB4OEIsIDB4NEYsIDB4NzcsIDB4NTYsIDB4OTgsCisgICAgMHhCNiwgMHg4NSwgMHg3MywgMHhBOSwgMHgyQiwgMHgwNCwgMHhFRCwgMHgyRiwgMHgxMywgMHg2QSwgMHgzMiwgMHgwQywgMHhBQiwgMHg1MSwgMHg1NCwgMHhCRSwKKyAgICAweDBCLCAweDdGLCAweEJELCAweDkzLCAweDRFLCAweEIxLCAweEJCLCAweEE5LCAweEE4LCAweEQ0LCAweDUzLCAweDY0LCAweDgzLCAweDQ5LCAweDYzLCAweDY0LAorICAgIDB4NUIsIDB4RDcsIDB4QjUsIDB4MDIsIDB4REQsIDB4MTMsIDB4M0YsIDB4RkQsIDB4NjQsIDB4RjUsIDB4QzMsIDB4MTgsIDB4OTcsIDB4QzcsIDB4Q0YsIDB4OTYsCisgICAgMHgxMSwgMHg2MywgMHhCMywgMHgyMCwgMHgxNSwgMHg4MSwgMHgzRCwgMHg5QSwgMHg1MiwgMHg5OSwgMHhGMiwgMHhCRSwgMHg3NiwgMHhEMSwgMHgxRiwgMHhGNiwKKyAgICAweDBFLCAweEQzLCAweDdDLCAweDU1LCAweDQyLCAweDU1LCAweDk0LCAweDVFLCAweDEwLCAweDk2LCAweDM3LCAweDRDLCAweDJFLCAweEFDLCAweDlFLCAweDMwLAorICAgIDB4NDAsIDB4QjksIDB4RDAsIDB4RkMsIDB4ODEsIDB4QTIsIDB4ODcsIDB4MzQsIDB4NzQsIDB4ODIsIDB4QTIsIDB4ODgsIDB4REQsIDB4MzAsIDB4NEQsIDB4NTAsCisgICAgMHhBNiwgMHgwRSwgMHgwQywgMHg1MCwgMHgwQywgMHhCNywgMHhCNiwgMHhDMiwgMHgzMywgMHg3RCwgMHg3MywgMHg4QywgMHg2NiwgMHg5MCwgMHhDMiwgMHg0MiwKKyAgICAweDg3LCAweDM1LCAweEQ1LCAweDRELCAweEI3LCAweEVFLCAweDFELCAweDBELCAweEI0LCAweEZDLCAweEQ0LCAweDNCLCAweEQ5LCAweEE3LCAweEYxLCAweDJELAorICAgIDB4MDIsIDB4MTYsIDB4ODksIDB4MUIsIDB4MzIsIDB4QjIsIDB4NEQsIDB4MzgsIDB4NjEsIDB4NkMsIDB4RDMsIDB4M0IsIDB4NTMsIDB4QkYsIDB4MUUsIDB4NDYsCisgICAgMHhBOCwgMHg2QiwgMHgxQSwgMHg4MywgMHhCOCwgMHgzQSwgMHgyQywgMHhDRCwgMHg2RSwgMHhCRiwgMHhCQiwgMHhERCwgMHg0MiwgMHg3MSwgMHhCOSwgMHg3MSwKKyAgICAweDkzLCAweDRDLCAweDNCLCAweDI0LCAweDNCLCAweEJELCAweDZBLCAweDc4LCAweDkzLCAweDQyLCAweDZCLCAweDVBLCAweDI0LCAweENGLCAweDQxLCAweDEwLAorICAgIDB4QUQsIDB4MDUsIDB4M0IsIDB4N0UsIDB4OTAsIDB4MkMsIDB4QTcsIDB4OUMsIDB4NkIsIDB4QjUsIDB4RTAsIDB4NUUsIDB4QjUsIDB4QTAsIDB4M0MsIDB4Q0IsCisgICAgMHhEMCwgMHhDQiwgMHg0OCwgMHg3NSwgMHhFMywgMHgxNywgMHg4NiwgMHg0MiwgMHg1QSwgMHhGNywgMHgyRSwgMHg0QywgMHg2QywgMHhGMiwgMHgyMSwgMHgzNywKKyAgICAweEVFLCAweEI0LCAweEU1LCAweDMwLCAweDZCLCAweEExLCAweDRCLCAweDMxLCAweERCLCAweDhDLCAweDg2LCAweEY5LCAweDVDLCAweERBLCAweERBLCAweDQ0LAorICAgIDB4OTUsIDB4RUEsIDB4MjYsIDB4OTYsIDB4RDYsIDB4MjYsIDB4QUUsIDB4MjMsIDB4MTEsIDB4RUIsIDB4MjEsIDB4MzQsIDB4RkYsIDB4QjIsIDB4OEMsIDB4OUUsCisgICAgMHg5QiwgMHhCRCwgMHgyNywgMHhGQiwgMHgwOSwgMHgwRiwgMHhFMywgMHg1MCwgMHg3MywgMHg4RSwgMHhBQywgMHhFMCwgMHgwNSwgMHgyMiwgMHgyMCwgMHhENSwKKyAgICAweEY3LCAweDRFLCAweDcyLCAweEQwLCAweDRFLCAweEY3LCAweEM1LCAweEM5LCAweEU3LCAweDI1LCAweDdGLCAweEY5LCAweDkxLCAweDE5LCAweDY4LCAweDAzLAorICAgIDB4MTcsIDB4MDQsIDB4RDIsIDB4QkEsIDB4NEQsIDB4OTQsIDB4QUYsIDB4OTUsIDB4QkMsIDB4ODEsIDB4NTcsIDB4QjYsIDB4RDksIDB4NTYsIDB4OEYsIDB4NjcsCisgICAgMHg0MCwgMHgyNCwgMHg2RCwgMHhFQywgMHhENSwgMHhEMSwgMHgxRSwgMHgyRSwgMHhGQywgMHhFOCwgMHhCQSwgMHhBQiwgMHg4MCwgMHg2MywgMHgzNSwgMHhDMywKKyAgICAweDM4LCAweDE4LCAweDk4LCAweDcxLCAweDU1LCAweEE3LCAweEM4LCAweDA5LCAweEFFLCAweEEzLCAweEEzLCAweDM3LCAweEEzLCAweDk2LCAweENFLCAweDhGLAorICAgIDB4MEYsIDB4MTIsIDB4NTMsIDB4RjUsIDB4OEUsIDB4MDIsIDB4QjEsIDB4QkMsIDB4NTYsIDB4MUUsIDB4NjcsIDB4NzEsIDB4RkUsIDB4QUIsIDB4RjAsIDB4MDQsCisgICAgMHg1QiwgMHg4NywgMHg5MywgMHg5MiwgMHhCMiwgMHhBQywgMHg0NywgMHhCNiwgMHhFRiwgMHhCRCwgMHg1NSwgMHgxRCwgMHgzMCwgMHhDQiwgMHhBNiwgMHg2MCwKKyAgICAweDEzLCAweDEzLCAweEZFLCAweDgyLCAweDRFLCAweDA2LCAweEE4LCAweEFCLCAweDJCLCAweDQwLCAweDJFLCAweDdDLCAweDY2LCAweDhGLCAweENDLCAweDQwLAorICAgIDB4MzYsIDB4MjAsIDB4RTksIDB4QUYsIDB4QzYsIDB4M0EsIDB4RTIsIDB4RTIsIDB4RkUsIDB4MDEsIDB4OTcsIDB4N0UsIDB4Q0EsIDB4ODIsIDB4MjAsIDB4NTgsCisgICAgMHg1RSwgMHhCNSwgMHgxMCwgMHhFMSwgMHg5OSwgMHhFMywgMHg0RiwgMHg4MiwgMHhFMywgMHg0RCwgMHgzNSwgMHhCNiwgMHg3QiwgMHgyOCwgMHgzNywgMHgwMiwKKyAgICAweDI2LCAweDAwLCAweEExLCAweDZDLCAweDdCLCAweEExLCAweDQ4LCAweDRGLCAweENCLCAweDU1LCAweDI1LCAweEI4LCAweDZCLCAweERELCAweEIxLCAweEFFLAorICAgIDB4QTAsIDB4RDMsIDB4QTEsIDB4OEIsIDB4ODQsIDB4OUUsIDB4RjIsIDB4QjgsIDB4NTMsIDB4REMsIDB4RTAsIDB4RTQsIDB4NkMsIDB4NUMsIDB4NjMsIDB4QTgsCisgICAgMHhENywgMHg0RiwgMHgxQywgMHhCNiwgMHg3MywgMHhGOSwgMHg1MCwgMHhBNywgMHg5OSwgMHgzMCwgMHg0MiwgMHgzRSwgMHg2MCwgMHg0OSwgMHg2QSwgMHg3RiwKKyAgICAweDZGLCAweDBBLCAweDgzLCAweEFELCAweDk5LCAweDkwLCAweDAwLCAweEMzLCAweDVBLCAweEZELCAweDgzLCAweERBLCAweERFLCAweDBBLCAweDM3LCAweEMwLAorICAgIDB4N0YsIDB4QzYsIDB4OTYsIDB4NjEsIDB4OUEsIDB4RjgsIDB4QkYsIDB4QkYsIDB4NDUsIDB4MzMsIDB4M0MsIDB4MTcsIDB4NDgsIDB4N0IsIDB4NTQsIDB4QjgsCisgICAgMHgzOCwgMHhBRCwgMHg4OCwgMHhENywgMHg3QywgMHgxQiwgMHgwOCwgMHgwNCwgMHhBOSwgMHg4OCwgMHhERCwgMHgxQSwgMHg3QiwgMHg1MywgMHhFRiwgMHg4RiwKKyAgICAweDQ5LCAweEJDLCAweEJDLCAweDY0LCAweDk4LCAweDE3LCAweEEwLCAweEIyLCAweEFFLCAweDYzLCAweDVCLCAweDMzLCAweEUzLCAweEVELCAweDkzLCAweDg4LAorICAgIDB4NUQsIDB4QjksIDB4M0YsIDB4RjIsIDB4OEEsIDB4RDMsIDB4MzgsIDB4RDksIDB4RDYsIDB4QzksIDB4RkUsIDB4MTMsIDB4OTIsIDB4M0IsIDB4RjAsIDB4QTUsCisgICAgMHhFNCwgMHgxQSwgMHgwOSwgMHgyOCwgMHg3MCwgMHgyNywgMHgxQSwgMHhCNSwgMHg5OSwgMHhCQSwgMHgzOSwgMHgyQSwgMHhCQSwgMHg4RSwgMHhBRSwgMHg3OSwKKyAgICAweDZBLCAweDIxLCAweEY3LCAweEI3LCAweDdELCAweDE2LCAweDM0LCAweEE0LCAweDVELCAweDBFLCAweDk3LCAweEY1LCAweEZDLCAweDFBLCAweDg4LCAweEVFLAorICAgIDB4NEEsIDB4OUUsIDB4QjksIDB4NjQsIDB4MkIsIDB4RkYsIDB4ODksIDB4QzIsIDB4NDUsIDB4MzQsIDB4RTcsIDB4QzQsIDB4RTAsIDB4RkMsIDB4OUUsIDB4RjgsCisgICAgMHhGNiwgMHg4OSwgMHg1RSwgMHg2OCwgMHg1MywgMHhFQywgMHhGMCwgMHg5OCwgMHg2MywgMHg1RSwgMHg1MywgMHhBMCwgMHhCRSwgMHg0MiwgMHg4RSwgMHhEOSwKKyAgICAweDcwLCAweDVELCAweDNDLCAweEM1LCAweDExLCAweDExLCAweDIwLCAweEMxLCAweDlCLCAweEY0LCAweDZFLCAweDYxLCAweDYzLCAweDRBLCAweEIzLCAweEU3LAorICAgIDB4NUYsIDB4OTEsIDB4QzksIDB4MkMsIDB4RkYsIDB4MUUsIDB4Q0UsIDB4MjUsIDB4RkUsIDB4MjYsIDB4NkEsIDB4QTQsIDB4MDYsIDB4RTMsIDB4MzAsIDB4Q0YsCisgICAgMHhGQywgMHg5RCwgMHhFOCwgMHgwRCwgMHhGRCwgMHg0MSwgMHhDNiwgMHg5RiwgMHgyMCwgMHgyRSwgMHhCMCwgMHgyNCwgMHg5QiwgMHhBMSwgMHhCMiwgMHgzMCwKKyAgICAweDc1LCAweDNGLCAweEZDLCAweDMzLCAweDY4LCAweDhFLCAweDk3LCAweDMzLCAweEU1LCAweEZFLCAweEY4LCAweEVDLCAweDI4LCAweEFDLCAweEQ0LCAweDUyLAorICAgIDB4QTUsIDB4OTcsIDB4MjMsIDB4OUIsIDB4ODksIDB4REYsIDB4NDIsIDB4MzgsIDB4QTIsIDB4RDksIDB4MzgsIDB4N0MsIDB4NTksIDB4NTgsIDB4NzgsIDB4MkQsCisgICAgMHg2NCwgMHgzRSwgMHhBQywgMHhBNCwgMHgyRiwgMHgzMCwgMHg1NSwgMHhEMiwgMHhFMywgMHg0QywgMHg0RSwgMHhBNSwgMHhFQywgMHg0RSwgMHg1QSwgMHhGOSwKKyAgICAweEFBLCAweEI2LCAweEI5LCAweEJBLCAweEZBLCAweDIzLCAweDQxLCAweDlELCAweENBLCAweDU0LCAweERBLCAweDkwLCAweERELCAweEM0LCAweDY4LCAweDE2LAorICAgIDB4MkUsIDB4NEYsIDB4QjUsIDB4REMsIDB4OUEsIDB4MjUsIDB4QkYsIDB4OEIsIDB4QzAsIDB4NzksIDB4MEQsIDB4Q0YsIDB4QjcsIDB4QkUsIDB4REUsIDB4OTUsCisgICAgMHg1OSwgMHhGMCwgMHgyOCwgMHg4QSwgMHgxNCwgMHhEOSwgMHg5MCwgMHg2NiwgMHhBQSwgMHhFQiwgMHg1RiwgMHg2NCwgMHg2MSwgMHhEMSwgMHg3RSwgMHg0QywKKyAgICAweDQ1LCAweDhFLCAweDk4LCAweDExLCAweDdBLCAweDg0LCAweDgxLCAweDBBLCAweEQyLCAweEJBLCAweDVELCAweDcyLCAweDA5LCAweEEwLCAweDA1LCAweDFFLAorICAgIDB4MTYsIDB4RDQsIDB4NEEsIDB4OTEsIDB4RUUsIDB4RDgsIDB4NEEsIDB4MDYsIDB4NEIsIDB4NUMsIDB4RUMsIDB4NzksIDB4MjgsIDB4QTMsIDB4QjMsIDB4ODEsCisgICAgMHg0QywgMHg5MCwgMHhGMSwgMHhCMiwgMHgyOSwgMHgwMiwgMHgyQiwgMHhGMiwgMHg0NCwgMHg5RiwgMHhEOSwgMHg2RCwgMHg2NiwgMHgzMywgMHg3OCwgMHg3MywKKyAgICAweDIzLCAweDVELCAweDI2LCAweDJDLCAweDg2LCAweDQzLCAweDlFLCAweDY5LCAweDBBLCAweDk3LCAweDAxLCAweDhGLCAweDY0LCAweERBLCAweEY5LCAweENDLAorICAgIDB4QzcsIDB4QTAsIDB4NTksIDB4RjAsIDB4NjAsIDB4RDksIDB4NDYsIDB4QUEsIDB4NzcsIDB4OUYsIDB4RkMsIDB4RjMsIDB4QkEsIDB4NjYsIDB4RDQsIDB4QkUsCisgICAgMHg2OSwgMHg5QiwgMHhBRSwgMHgzQywgMHhCNiwgMHg1NywgMHg4QSwgMHgzMCwgMHg1MywgMHhFQywgMHhDNiwgMHhGOCwgMHgxNCwgMHg3NiwgMHg4NCwgMHg3NiwKKyAgICAweDdGLCAweDUzLCAweEE4LCAweDE0LCAweDhBLCAweDU1LCAweEFFLCAweDg5LCAweEU4LCAweDRELCAweDhDLCAweDY5LCAweEMyLCAweDU2LCAweEI3LCAweDY0LAorICAgIDB4MkEsIDB4NTcsIDB4OUEsIDB4NzYsIDB4QzUsIDB4NzcsIDB4OEEsIDB4QzgsIDB4MDEsIDB4MjksIDB4QjYsIDB4QjIsIDB4QTksIDB4NTAsIDB4NDMsIDB4Q0QsCisgICAgMHgyMiwgMHhEMCwgMHhFOCwgMHhERSwgMHg2QiwgMHhCOSwgMHg4NywgMHgxOCwgMHg3MCwgMHhFRiwgMHhDQiwgMHg3MiwgMHhBQSwgMHgxOCwgMHhCNiwgMHg0MiwKKyAgICAweENFLCAweEJELCAweEM0LCAweDM0LCAweDdDLCAweDZFLCAweEE3LCAweDZGLCAweDYzLCAweDI5LCAweDE2LCAweDk3LCAweDNBLCAweDE5LCAweDExLCAweEVGLAorICAgIDB4QjYsIDB4NDcsIDB4RjAsIDB4MDEsIDB4QUEsIDB4MjUsIDB4NEEsIDB4NTAsIDB4NjcsIDB4Q0MsIDB4NjAsIDB4RjIsIDB4MzYsIDB4MDYsIDB4ODUsIDB4N0EsCisgICAgMHg5OSwgMHg1MCwgMHgxMSwgMHgyNCwgMHhERCwgMHhBNSwgMHhDMSwgMHgxQSwgMHhBNiwgMHg3NiwgMHg2MiwgMHhCQiwgMHhCNiwgMHgzNCwgMHhCOCwgMHg5MCwKKyAgICAweDM3LCAweDM1LCAweEFBLCAweDk2LCAweEYzLCAweEM1LCAweEEyLCAweDVFLCAweDVELCAweDRGLCAweDlDLCAweDlGLCAweDk1LCAweDk5LCAweEVGLCAweERFLAorICAgIDB4Q0MsIDB4ODksIDB4QzUsIDB4MkUsIDB4NzMsIDB4QzcsIDB4RjcsIDB4QUMsIDB4RkIsIDB4ODcsIDB4OTUsIDB4RkUsIDB4MjAsIDB4OTksIDB4MkIsIDB4NjIsCisgICAgMHg1RCwgMHhEQywgMHg2MSwgMHgzQiwgMHgxMCwgMHg3QSwgMHg1QywgMHhGNSwgMHgwOSwgMHhDQiwgMHhFMCwgMHhCMSwgMHg0MSwgMHhCMCwgMHg3QSwgMHg5MCwKKyAgICAweDQ5LCAweDY1LCAweDJELCAweDNGLCAweDdELCAweDEwLCAweDZDLCAweERELCAweDVGLCAweDA0LCAweDIxLCAweDcwLCAweENBLCAweDEzLCAweDQyLCAweDJCLAorICAgIDB4NzEsIDB4MzAsIDB4RTksIDB4NDAsIDB4ODAsIDB4QjQsIDB4REQsIDB4QkYsIDB4REYsIDB4MEQsIDB4MTEsIDB4MjEsIDB4QzEsIDB4RTQsIDB4NTEsIDB4QzgsCisgICAgMHg0OCwgMHhBQywgMHgzNywgMHhEMywgMHhERSwgMHgzMiwgMHhCRSwgMHhDRiwgMHg2MSwgMHhGNiwgMHg4QSwgMHhFQiwgMHg4QywgMHhFMSwgMHhGNywgMHgxRCwKKyAgICAweENELCAweEFBLCAweDI0LCAweDY4LCAweDRDLCAweEExLCAweDMzLCAweDhBLCAweDBCLCAweEE1LCAweEE0LCAweEM2LCAweDk0LCAweENELCAweDFFLCAweDA3LAorICAgIDB4NjIsIDB4QjksIDB4M0IsIDB4M0UsIDB4RDYsIDB4MTMsIDB4NkYsIDB4NTQsIDB4RDksIDB4OTMsIDB4MDIsIDB4RDksIDB4MUUsIDB4NzIsIDB4OUMsIDB4NkMsCisgICAgMHhDOSwgMHg5NywgMHhFRiwgMHhCNiwgMHg5NiwgMHhEQSwgMHg5MywgMHg3RSwgMHg4RCwgMHg0RiwgMHg4OCwgMHgwQiwgMHhBNCwgMHg3RSwgMHhGOSwgMHgwQSwKKyAgICAweDdFLCAweEQzLCAweDJELCAweDhELCAweDE1LCAweENBLCAweEM0LCAweDE0LCAweERDLCAweDBFLCAweDFCLCAweDkzLCAweDAyLCAweEM1LCAweDdFLCAweDMxLAorICAgIDB4QzgsIDB4Q0MsIDB4NTksIDB4OTIsIDB4OUYsIDB4NjYsIDB4NDMsIDB4QTUsIDB4NTEsIDB4RkEsIDB4NzYsIDB4OTIsIDB4REUsIDB4MjAsIDB4Q0YsIDB4NUQsCisgICAgMHgyOCwgMHhBQSwgMHg0RSwgMHg4MCwgMHg2MSwgMHg2RCwgMHhFMiwgMHgzQywgMHhEMywgMHhBRSwgMHg1NSwgMHhFQywgMHhEMSwgMHhDMiwgMHgzMCwgMHhFQSwKKyAgICAweEUzLCAweEQ3LCAweDlELCAweENFLCAweDAxLCAweDY0LCAweEQ0LCAweDg1LCAweDk1LCAweEMwLCAweDkxLCAweEJELCAweEI3LCAweEFGLCAweDc4LCAweERCLAorICAgIDB4QUMsIDB4M0MsIDB4Q0YsIDB4MTgsIDB4RTMsIDB4MDcsIDB4NkMsIDB4RDQsIDB4ODUsIDB4RDksIDB4MDQsIDB4RjUsIDB4RkEsIDB4NDMsIDB4MUMsIDB4MjcsCisgICAgMHg4NSwgMHgxQSwgMHhGMSwgMHg4NiwgMHhFNSwgMHhFRSwgMHgzNiwgMHg4MywgMHgxOCwgMHhFNCwgMHg0MCwgMHg4OCwgMHg2NywgMHhBNCwgMHhGOSwgMHgwRSwKKyAgICAweDJDLCAweDZGLCAweEE5LCAweEIyLCAweEQ4LCAweDU4LCAweDg5LCAweEMxLCAweEY1LCAweDVDLCAweEMwLCAweDc5LCAweERCLCAweEYwLCAweEEzLCAweDkyLAorICAgIDB4RUQsIDB4QkIsIDB4N0YsIDB4NzYsIDB4RUUsIDB4N0QsIDB4NjAsIDB4NUQsIDB4MDUsIDB4QjUsIDB4QkEsIDB4NEMsIDB4NkEsIDB4NTgsIDB4OEEsIDB4QkQsCisgICAgMHhGMywgMHg2OSwgMHg2OCwgMHg0RiwgMHhERSwgMHhFMywgMHg3RiwgMHhGMiwgMHgwNSwgMHg0MiwgMHhDNiwgMHhEQywgMHg3RCwgMHgwNCwgMHg0OCwgMHgzQiwKKyAgICAweDFGLCAweDk5LCAweDdFLCAweDZDLCAweDFFLCAweDkxLCAweDg2LCAweEM4LCAweERGLCAweDEwLCAweDkyLCAweDNGLCAweEJELCAweEMzLCAweDQzLCAweDM5LAorICAgIDB4RTMsIDB4QzEsIDB4MzAsIDB4N0IsIDB4QkQsIDB4MDIsIDB4MUYsIDB4MTYsIDB4RUYsIDB4NzIsIDB4MDcsIDB4OTksIDB4QjEsIDB4M0IsIDB4NkEsIDB4MkMsCisgICAgMHhCRSwgMHg0MSwgMHgzOCwgMHhDNiwgMHhCRiwgMHhBMCwgMHhBNCwgMHhGNCwgMHhGRiwgMHg2NSwgMHg0RCwgMHhGMCwgMHg3NiwgMHhGMiwgMHgyRiwgMHgwMiwKKyAgICAweDg3LCAweDAyLCAweDEzLCAweEZELCAweDE5LCAweEM2LCAweDRGLCAweDZCLCAweDU3LCAweDQ1LCAweENFLCAweERFLCAweEVDLCAweDI0LCAweDlFLCAweDI5LAorICAgIDB4MEQsIDB4OUMsIDB4RjQsIDB4MTYsIDB4N0EsIDB4MTMsIDB4MzMsIDB4QjksIDB4MUMsIDB4OUUsIDB4QzEsIDB4NkIsIDB4RTMsIDB4QUQsIDB4RkQsIDB4MDYsCisgICAgMHg1MiwgMHhERiwgMHg4QiwgMHhBRSwgMHgzNSwgMHhBNiwgMHgxQiwgMHhFNywgMHg5MywgMHgyNCwgMHhCNSwgMHg1RiwgMHhEMSwgMHg3NywgMHhENSwgMHgzRSwKKyAgICAweEM0LCAweDlGLCAweDJGLCAweDhBLCAweDVDLCAweDFDLCAweDM1LCAweEFFLCAweDA4LCAweEJFLCAweDIyLCAweDEwLCAweDU0LCAweERELCAweDZDLCAweEM0LAorICAgIDB4MUEsIDB4REQsIDB4RDEsIDB4MDQsIDB4MTYsIDB4MDQsIDB4M0QsIDB4N0IsIDB4NjUsIDB4OTIsIDB4QUMsIDB4NEIsIDB4NTEsIDB4NTEsIDB4MTIsIDB4OTYsCisgICAgMHhBQiwgMHgxMCwgMHgwNSwgMHg3OCwgMHhEOCwgMHg3NywgMHg2RCwgMHg0NiwgMHgzQSwgMHg1MCwgMHgzQiwgMHhCOCwgMHhCOSwgMHhGNSwgMHg2NCwgMHgxMywKKyAgICAweERBLCAweEFELCAweDE3LCAweDJBLCAweEQ1LCAweEFBLCAweDQwLCAweDU2LCAweDdGLCAweEM1LCAweEY0LCAweDczLCAweEU1LCAweEZDLCAweDc3LCAweDk2LAorICAgIDB4RkQsIDB4QzUsIDB4OTYsIDB4Q0UsIDB4NjgsIDB4MkMsIDB4OTUsIDB4REIsIDB4MEIsIDB4OTgsIDB4QUMsIDB4OTksIDB4M0YsIDB4RjksIDB4MjIsIDB4M0QsCisgICAgMHhBMiwgMHhEQywgMHg1OSwgMHgzMCwgMHhCRiwgMHg0MCwgMHgxRiwgMHg3MywgMHhCOSwgMHhCQSwgMHhFMywgMHgwOSwgMHhGMiwgMHhERCwgMHg1MSwgMHg5NywKKyAgICAweDQ2LCAweDJFLCAweEI1LCAweDFFLCAweEEzLCAweDRELCAweDYyLCAweDlGLCAweDIwLCAweENBLCAweEY1LCAweEMzLCAweEY1LCAweDE0LCAweEM0LCAweEQ1LAorICAgIDB4NUMsIDB4MDYsIDB4OUEsIDB4RDcsIDB4OUIsIDB4OTMsIDB4RDMsIDB4MEIsIDB4QTQsIDB4REUsIDB4Q0QsIDB4QUEsIDB4QkMsIDB4RkEsIDB4OTEsIDB4RDgsCisgICAgMHhGNSwgMHhBMiwgMHhDMSwgMHgzMSwgMHhDRCwgMHgxNiwgMHhFMywgMHg1QywgMHhGQiwgMHgzMywgMHg0QywgMHgzMywgMHgwMiwgMHhEMSwgMHgxNywgMHg2OSwKKyAgICAweDI5LCAweEUxLCAweDk0LCAweDk3LCAweEM5LCAweDZDLCAweDBGLCAweDczLCAweDVELCAweENFLCAweEJDLCAweEYxLCAweDc2LCAweENFLCAweDIyLCAweEJDLAorICAgIDB4QjUsIDB4MTEsIDB4QUYsIDB4NUQsIDB4MEYsIDB4NzgsIDB4NTQsIDB4MkUsIDB4NDUsIDB4REIsIDB4MDIsIDB4NTgsIDB4N0MsIDB4RTMsIDB4MzksIDB4OTksCisgICAgMHg3NCwgMHg5RCwgMHgxMSwgMHhGRCwgMHhGNiwgMHg4NywgMHgxMCwgMHg0NywgMHhBOSwgMHhGMywgMHgzQiwgMHgwOCwgMHg2RSwgMHhCQywgMHgwQywgMHg4RSwKKyAgICAweDU0LCAweDVFLCAweDA0LCAweDU4LCAweEY2LCAweEQ5LCAweDY2LCAweEVDLCAweEQ5LCAweDExLCAweDZELCAweDM1LCAweEFCLCAweEI0LCAweEU1LCAweERDLAorICAgIDB4RjAsIDB4QjYsIDB4MUUsIDB4NzEsIDB4QUMsIDB4NUQsIDB4OTIsIDB4QzEsIDB4NUMsIDB4QjEsIDB4QzcsIDB4RDAsIDB4MEIsIDB4MTAsIDB4NkUsIDB4RTIsCisgICAgMHgzMiwgMHhBNiwgMHg4OSwgMHg0MiwgMHhBRCwgMHhBNiwgMHg1QywgMHhCQSwgMHhBRCwgMHhCMiwgMHgwRiwgMHg0NywgMHg4QywgMHhFRiwgMHhERCwgMHg4OCwKKyAgICAweEVBLCAweDA0LCAweDcwLCAweEI1LCAweEZBLCAweEQ3LCAweDIyLCAweDc4LCAweEQ4LCAweENCLCAweDIwLCAweERELCAweEU0LCAweEZFLCAweDg0LCAweDY4LAorICAgIDB4RkQsIDB4ODYsIDB4MUUsIDB4RTMsIDB4ODcsIDB4N0IsIDB4NzQsIDB4NjEsIDB4QjIsIDB4MDMsIDB4QzUsIDB4QTUsIDB4MDYsIDB4RUQsIDB4NEUsIDB4ODcsCisgICAgMHg0RSwgMHgzMSwgMHgwQywgMHgwQSwgMHgyQiwgMHg0OSwgMHgyNSwgMHhEMSwgMHgzMywgMHhGRiwgMHhGRSwgMHhBQywgMHg1RSwgMHgxRiwgMHhCMiwgMHg4RCwKKyAgICAweEMwLCAweDBELCAweDY3LCAweEFELCAweDkyLCAweDY0LCAweDEyLCAweENELCAweDRDLCAweDgwLCAweDY4LCAweDhCLCAweDkxLCAweEEzLCAweEJELCAweDg4LAorICAgIDB4QTYsIDB4MEYsIDB4RUMsIDB4NEQsIDB4MjYsIDB4MUYsIDB4RDYsIDB4QjEsIDB4OEMsIDB4NUQsIDB4NkIsIDB4MjUsIDB4N0EsIDB4OTgsIDB4QTcsIDB4MzAsCisgICAgMHg1NywgMHg3RCwgMHg5RCwgMHgzMSwgMHg4QiwgMHhFMCwgMHg2MSwgMHhCQywgMHhBMSwgMHhCNSwgMHhCNiwgMHhEMywgMHgyMSwgMHhBRiwgMHgyNiwgMHg3QywKKyAgICAweDUzLCAweEMyLCAweEZCLCAweDNFLCAweDgyLCAweEVDLCAweEIzLCAweDE3LCAweDAyLCAweDgyLCAweEQ3LCAweDAwLCAweDgyLCAweDBBLCAweDI4LCAweDRCLAorICAgIDB4REUsIDB4NTUsIDB4OEUsIDB4OUUsIDB4NDIsIDB4QjUsIDB4OTMsIDB4QTYsIDB4MEMsIDB4NTQsIDB4MDksIDB4NTksIDB4RDAsIDB4MDIsIDB4NjgsIDB4QkUsCisgICAgMHgwMCwgMHgwQywgMHg4RiwgMHg1MCwgMHg3MywgMHhFOSwgMHgxOSwgMHgwMywgMHhCQiwgMHg0NywgMHg2NSwgMHhERSwgMHg4NSwgMHgyMywgMHg4QywgMHhEQywKKyAgICAweEJCLCAweDVBLCAweEI1LCAweDU5LCAweEM3LCAweEEzLCAweDFBLCAweERGLCAweDEwLCAweDFFLCAweDJDLCAweDEwLCAweEQ3LCAweDM2LCAweEFFLCAweDFFLAorICAgIDB4MjcsIDB4NzgsIDB4NEQsIDB4RUUsIDB4RTYsIDB4QzAsIDB4MzAsIDB4QzMsIDB4NTcsIDB4MEIsIDB4NUYsIDB4RkYsIDB4NUEsIDB4QjEsIDB4MDUsIDB4NzMsCisgICAgMHhGNiwgMHg0RCwgMHgxQywgMHgzRSwgMHgxOCwgMHgzRiwgMHgwMSwgMHg0MywgMHg0NywgMHgyMywgMHhFMiwgMHgwRiwgMHhBOSwgMHgxQywgMHhERSwgMHhDNSwKKyAgICAweEFBLCAweDJCLCAweDI0LCAweEFCLCAweDhGLCAweEUwLCAweEVDLCAweDNBLCAweDU3LCAweEJELCAweEJELCAweDQ3LCAweEY0LCAweDg2LCAweDUzLCAweDdBLAorICAgIDB4QzMsIDB4MzIsIDB4MjAsIDB4NzgsIDB4M0UsIDB4MEEsIDB4REIsIDB4QkQsIDB4MzMsIDB4QTQsIDB4NjIsIDB4NTcsIDB4NTUsIDB4NUIsIDB4QjMsIDB4MzMsCisgICAgMHg0OCwgMHgyRSwgMHgyNCwgMHhDRCwgMHg1NCwgMHhCOSwgMHhENiwgMHg3QiwgMHg3MywgMHg1MSwgMHhEQiwgMHg0NSwgMHhDNSwgMHg5MSwgMHhERiwgMHg0OSwKKyAgICAweEMwLCAweDgzLCAweDIyLCAweDJDLCAweDA4LCAweDlBLCAweEU3LCAweDI0LCAweDMxLCAweEVGLCAweERBLCAweDdFLCAweDU0LCAweEUxLCAweEFGLCAweDQzLAorICAgIDB4QjMsIDB4QkIsIDB4NTcsIDB4NzksIDB4NEEsIDB4MDcsIDB4Q0MsIDB4NTAsIDB4NkQsIDB4MkYsIDB4MzIsIDB4NDYsIDB4MDAsIDB4RTAsIDB4Q0EsIDB4NEEsCisgICAgMHhFNiwgMHgyQywgMHhFNiwgMHhDRCwgMHg0MSwgMHgyMywgMHhFMywgMHhCOSwgMHgyRiwgMHg2QSwgMHg5QiwgMHhCNywgMHhERSwgMHgxNywgMHg1MCwgMHhFQSwKKyAgICAweDM4LCAweDU4LCAweDk3LCAweDQwLCAweDM0LCAweDRBLCAweDlBLCAweDU3LCAweDVFLCAweDY4LCAweDFBLCAweEEzLCAweEY5LCAweDUzLCAweEIzLCAweEMzLAorICAgIDB4NUYsIDB4QzUsIDB4MjAsIDB4MzcsIDB4QzksIDB4NTksIDB4RkMsIDB4RTQsIDB4RkMsIDB4M0YsIDB4RDQsIDB4NUIsIDB4QkEsIDB4RjgsIDB4QjQsIDB4QUQsCisgICAgMHg1MCwgMHg2NSwgMHhBRSwgMHhEQywgMHg1RCwgMHhFNiwgMHhGOSwgMHg5NSwgMHhGMiwgMHhBQywgMHg0MSwgMHhDMiwgMHg5NiwgMHgwRiwgMHgzRiwgMHgxRiwKKyAgICAweEUzLCAweDMzLCAweDdBLCAweDBCLCAweDEzLCAweDJELCAweDY4LCAweDM0LCAweEFBLCAweDIzLCAweDVCLCAweEM5LCAweDgxLCAweDlELCAweEQxLCAweDk3LAorICAgIDB4NEEsIDB4NUEsIDB4NTUsIDB4RDYsIDB4RjksIDB4Q0UsIDB4N0YsIDB4QTIsIDB4MDUsIDB4MDAsIDB4NjMsIDB4RjgsIDB4RjgsIDB4RTIsIDB4RDQsIDB4NDMsCisgICAgMHgyQiwgMHg5MiwgMHg2MywgMHg0OSwgMHgzQiwgMHhFMCwgMHgwNSwgMHg2MCwgMHhCQSwgMHgyOSwgMHgxRiwgMHgyMCwgMHgwOSwgMHgzRSwgMHhCOSwgMHg1NiwKKyAgICAweEY4LCAweDhELCAweEJDLCAweDIzLCAweEFBLCAweEM4LCAweERCLCAweEFFLCAweEY3LCAweEVELCAweDE1LCAweDZFLCAweEZFLCAweEE4LCAweEJBLCAweEZDLAorICAgIDB4RDUsIDB4NUIsIDB4ODUsIDB4Q0MsIDB4NzgsIDB4QzYsIDB4NTAsIDB4QTEsIDB4OTYsIDB4RTgsIDB4MEQsIDB4NTYsIDB4QkQsIDB4NDUsIDB4MzUsIDB4RkIsCisgICAgMHhGMywgMHhGMCwgMHgxRiwgMHg4NywgMHg5MCwgMHhEOCwgMHgxQiwgMHg0OSwgMHgzQiwgMHg4QiwgMHhCNiwgMHg0NCwgMHhGNSwgMHgwOCwgMHhBNywgMHhDQiwKKyAgICAweEU2LCAweDI5LCAweDcyLCAweDAxLCAweEM1LCAweDczLCAweDA3LCAweEQzLCAweDZGLCAweDhBLCAweDA4LCAweEJDLCAweDM1LCAweDA3LCAweDdCLCAweEU4LAorICAgIDB4M0YsIDB4ODUsIDB4RTQsIDB4NjMsIDB4MjMsIDB4RjIsIDB4OTksIDB4OTksIDB4NTIsIDB4NkQsIDB4NEYsIDB4RUMsIDB4QUUsIDB4OTIsIDB4OEEsIDB4QjEsCisgICAgMHg1RCwgMHg2MiwgMHgyMCwgMHhGRSwgMHhDNiwgMHg4QiwgMHg1QiwgMHhBMSwgMHhEOSwgMHgyMSwgMHgxRSwgMHhCNSwgMHgyNiwgMHg2QywgMHg1MywgMHg5MiwKKyAgICAweDlDLCAweDgyLCAweDY2LCAweENELCAweEEwLCAweDJFLCAweEQyLCAweDcyLCAweEUyLCAweEVCLCAweEIxLCAweDIxLCAweENELCAweEM2LCAweEMyLCAweEIwLAorICAgIDB4QjgsIDB4MTMsIDB4OTYsIDB4MUIsIDB4RjMsIDB4NUUsIDB4RjgsIDB4NDYsIDB4QTIsIDB4QTcsIDB4NzMsIDB4RkIsIDB4NjcsIDB4Q0IsIDB4NUUsIDB4MjQsCisgICAgMHgxRSwgMHgxQSwgMHg0MCwgMHhBMiwgMHg5NiwgMHg5RSwgMHg3MiwgMHg0NCwgMHgzRiwgMHhGQSwgMHg0QywgMHgwMywgMHg5QiwgMHgyQiwgMHgwRSwgMHg0NCwKKyAgICAweERCLCAweDBGLCAweDJGLCAweDU1LCAweDgyLCAweEFGLCAweDA4LCAweDI3LCAweDg1LCAweEZCLCAweEZFLCAweDU1LCAweDA4LCAweDI4LCAweDg1LCAweDA0LAorICAgIDB4OTIsIDB4MEQsIDB4QzcsIDB4MjUsIDB4NDgsIDB4MkMsIDB4MkEsIDB4NDksIDB4MzEsIDB4NTIsIDB4NjUsIDB4QjQsIDB4QjQsIDB4RjIsIDB4QzAsIDB4RDIsCisgICAgMHg2NCwgMHgwQywgMHhCMCwgMHhFQiwgMHhDMywgMHg2RiwgMHgxMSwgMHhGNiwgMHhCMywgMHg4QiwgMHhCMSwgMHhBOCwgMHgxRiwgMHhCMiwgMHg2OSwgMHg0NiwKKyAgICAweDdFLCAweDE1LCAweEZFLCAweENDLCAweEUyLCAweDFBLCAweEY5LCAweDFGLCAweDdCLCAweDY1LCAweERELCAweEE2LCAweEQ5LCAweDEwLCAweDAzLCAweEQ1LAorICAgIDB4MzcsIDB4OEMsIDB4MjUsIDB4NDEsIDB4MEIsIDB4RkYsIDB4RkYsIDB4RjgsIDB4NDYsIDB4Q0UsIDB4OEEsIDB4N0EsIDB4OUYsIDB4NzQsIDB4NjEsIDB4RDgsCisgICAgMHhENCwgMHg2NCwgMHhFNiwgMHhGMSwgMHg0NiwgMHhDNiwgMHgwNCwgMHhDMCwgMHhFQSwgMHhEQiwgMHgxMCwgMHg0MCwgMHg2QiwgMHg5QiwgMHhEMCwgMHhDMSwKKyAgICAweDQ1LCAweDgzLCAweDFDLCAweDc0LCAweEE4LCAweDNCLCAweDVGLCAweEM5LCAweDQ1LCAweDY5LCAweDcwLCAweDkwLCAweEJELCAweDkzLCAweDc5LCAweDgyLAorICAgIDB4NzEsIDB4OTYsIDB4NzUsIDB4MjMsIDB4MDEsIDB4OUEsIDB4M0IsIDB4MEUsIDB4Q0EsIDB4N0QsIDB4REUsIDB4NjYsIDB4NDksIDB4NTcsIDB4MTEsIDB4QjIsCisgICAgMHhCRiwgMHhCNCwgMHg3RSwgMHgzMywgMHhFQiwgMHhBNCwgMHg0RSwgMHhFMCwgMHgzMywgMHhDQywgMHg0NCwgMHg2RiwgMHg4OSwgMHhFQywgMHhEMCwgMHg3RCwKKyAgICAweDc1LCAweDc5LCAweDQxLCAweDk2LCAweDM3LCAweDlELCAweDVBLCAweDgyLCAweDdBLCAweEFBLCAweEU4LCAweDFBLCAweDQzLCAweEEzLCAweEU4LCAweDFBLAorICAgIDB4MjQsIDB4MTQsIDB4MjksIDB4ODQsIDB4RTAsIDB4MkUsIDB4RDAsIDB4N0YsIDB4QUMsIDB4MzUsIDB4NTIsIDB4RjIsIDB4RTUsIDB4RDUsIDB4QTksIDB4N0IsCisgICAgMHg5RiwgMHg1NSwgMHhGMywgMHhGMSwgMHhDQiwgMHgzMSwgMHgzQywgMHhERiwgMHgyMiwgMHg0QSwgMHgxQSwgMHg0NywgMHhCNywgMHg1RSwgMHgzQSwgMHg4QywKKyAgICAweDFBLCAweEYyLCAweEU3LCAweDBDLCAweDlBLCAweEM4LCAweEU0LCAweEY5LCAweEY5LCAweDMwLCAweEM3LCAweDAwLCAweDlGLCAweDU3LCAweEVGLCAweDY3LAorICAgIDB4QjQsIDB4MzYsIDB4MEEsIDB4RjksIDB4QjQsIDB4M0YsIDB4RTYsIDB4MjAsIDB4NjYsIDB4MzYsIDB4ODgsIDB4NjAsIDB4MTksIDB4NzQsIDB4OEIsIDB4MjksCisgICAgMHg1NSwgMHg2NCwgMHhGMiwgMHg2QywgMHg5RCwgMHgzQiwgMHhGNCwgMHhFOSwgMHhDOCwgMHg3NCwgMHg0OCwgMHg0OCwgMHhDQSwgMHg1NiwgMHhGRiwgMHg3NCwKKyAgICAweEU3LCAweDM5LCAweDk4LCAweEQ5LCAweDFELCAweENFLCAweDIyLCAweDk4LCAweDM1LCAweEI2LCAweEY1LCAweEE4LCAweDcwLCAweDUxLCAweEE4LCAweDUzLAorICAgIDB4NkMsIDB4RUIsIDB4QjcsIDB4OTksIDB4REYsIDB4OTcsIDB4MzQsIDB4M0MsIDB4NTEsIDB4NzQsIDB4NEUsIDB4MUUsIDB4QjksIDB4RjQsIDB4MTEsIDB4QjYsCisgICAgMHgzQiwgMHhBQywgMHg1RiwgMHgzMiwgMHhBMywgMHhCOCwgMHgzRSwgMHhCMywgMHg3OCwgMHg0NSwgMHhFQiwgMHgwOCwgMHhCMiwgMHhBQiwgMHhBOCwgMHhEOSwKKyAgICAweEJELCAweDMyLCAweDk1LCAweEQyLCAweDVDLCAweEFFLCAweEYyLCAweDg2LCAweDgyLCAweDFBLCAweDUzLCAweEJCLCAweDk3LCAweEE0LCAweDhFLCAweDRFLAorICAgIDB4RDQsIDB4MUIsIDB4M0QsIDB4NUIsIDB4NzAsIDB4NEEsIDB4Q0UsIDB4N0EsIDB4MUEsIDB4QkQsIDB4QUUsIDB4RjAsIDB4RTQsIDB4RjIsIDB4QzAsIDB4OUQsCisgICAgMHgwMCwgMHhCQSwgMHhENywgMHhBRiwgMHhGNiwgMHg2MywgMHg3RCwgMHg3QywgMHhBMCwgMHg1OCwgMHgyOSwgMHg0NSwgMHhCRiwgMHg5NiwgMHg4RiwgMHg1RCwKKyAgICAweEUxLCAweDc5LCAweDc1LCAweDUyLCAweDk4LCAweEJGLCAweDhFLCAweDJDLCAweDlCLCAweEFFLCAweEE1LCAweDFCLCAweDJBLCAweEIwLCAweDhBLCAweDg5LAorICAgIDB4MjUsIDB4RkUsIDB4NEQsIDB4REEsIDB4MTIsIDB4RkUsIDB4QTUsIDB4MTEsIDB4QzMsIDB4NzIsIDB4RUIsIDB4RTUsIDB4OTEsIDB4RTAsIDB4RDgsIDB4N0UsCisgICAgMHg5QiwgMHhEMSwgMHgyRCwgMHhBNSwgMHgyNSwgMHgzRCwgMHgxOCwgMHg1MywgMHg2OCwgMHg1QywgMHgyMiwgMHg3RCwgMHgxOCwgMHgwQSwgMHgxMiwgMHgzRCwKKyAgICAweDQwLCAweDA4LCAweDQwLCAweDU5LCAweEE2LCAweDEyLCAweDVGLCAweDFDLCAweDNBLCAweEM1LCAweEY1LCAweERCLCAweEY2LCAweDhELCAweDA0LCAweDkwLAorICAgIDB4RjksIDB4QjcsIDB4NDMsIDB4NkQsIDB4ODgsIDB4NDIsIDB4MEYsIDB4NUYsIDB4OTcsIDB4RDAsIDB4NkUsIDB4MUIsIDB4QTMsIDB4RUQsIDB4MEUsIDB4RUEsCisgICAgMHg2OCwgMHhERSwgMHg5QywgMHg0MiwgMHg5MSwgMHhFMywgMHhDMiwgMHhGQywgMHhCMywgMHgwNiwgMHg3RiwgMHg1NSwgMHg0MywgMHgwNywgMHgxQiwgMHg3NiwKKyAgICAweEMyLCAweDhGLCAweEZFLCAweDU1LCAweEE5LCAweDA4LCAweDgzLCAweDdGLCAweEM1LCAweEQ5LCAweDY5LCAweEFCLCAweDkxLCAweENDLCAweDY4LCAweDZDLAorICAgIDB4N0MsIDB4Q0EsIDB4NDUsIDB4OTksIDB4NzIsIDB4MTUsIDB4RjEsIDB4NTAsIDB4NDcsIDB4QzYsIDB4MTAsIDB4QUQsIDB4QjIsIDB4OTEsIDB4OTMsIDB4RUEsCisgICAgMHgwMiwgMHg1NywgMHg3MywgMHg5NiwgMHg5MSwgMHhCMywgMHhEMSwgMHgwNiwgMHgzMywgMHgyRiwgMHg3MywgMHhCMCwgMHg5RiwgMHhCMSwgMHhDMywgMHg0NCwKKyAgICAweDQ4LCAweDNGLCAweEIwLCAweDk5LCAweEQ0LCAweEU1LCAweDg5LCAweDAzLCAweEM2LCAweDEwLCAweDMxLCAweEJBLCAweEQ0LCAweEQwLCAweDkzLCAweDkxLAorICAgIDB4QkMsIDB4MjEsIDB4RkEsIDB4RUEsIDB4NEIsIDB4QjEsIDB4MUEsIDB4MDEsIDB4ODgsIDB4MEMsIDB4MzAsIDB4MDMsIDB4NzgsIDB4OEQsIDB4RjYsIDB4RjUsCisgICAgMHg5OSwgMHg1NywgMHgxQiwgMHgwMCwgMHhCQiwgMHgwOCwgMHgzMSwgMHgyMywgMHhBNCwgMHhBRCwgMHg2OCwgMHg1OSwgMHg4MCwgMHhFNSwgMHg1MiwgMHg1OSwKKyAgICAweDMyLCAweEUwLCAweEMyLCAweDkzLCAweDNCLCAweDk5LCAweEMyLCAweDBFLCAweDAzLCAweDQ2LCAweDRBLCAweDVFLCAweDEyLCAweDI0LCAweDdGLCAweEU4LAorICAgIDB4MzUsIDB4QTUsIDB4QTMsIDB4MUEsIDB4QjYsIDB4RjYsIDB4QTUsIDB4QkUsIDB4RUEsIDB4OTMsIDB4MDQsIDB4RkEsIDB4MDYsIDB4MEEsIDB4OUIsIDB4RUIsCisgICAgMHgwRCwgMHg5QywgMHg1MiwgMHg1NywgMHhDNywgMHg4OCwgMHg1OSwgMHhBRiwgMHgyQSwgMHg3MiwgMHg1OSwgMHg3QywgMHhCMywgMHhGQywgMHg5MiwgMHgxQiwKKyAgICAweDZFLCAweEU0LCAweDc2LCAweDFGLCAweEQ1LCAweEZDLCAweDRBLCAweEYxLCAweDJCLCAweEVGLCAweDY0LCAweEY4LCAweDQ4LCAweDE3LCAweDQzLCAweDdFLAorICAgIDB4MUEsIDB4QzAsIDB4QUUsIDB4M0IsIDB4QzEsIDB4QzIsIDB4MzcsIDB4MkUsIDB4REMsIDB4MTYsIDB4QUIsIDB4OEYsIDB4RTcsIDB4NTQsIDB4OUQsIDB4N0MsCisgICAgMHhGRCwgMHgzOCwgMHhDMCwgMHhFNywgMHg3RiwgMHhGOSwgMHg1RSwgMHg1NCwgMHg1NiwgMHg1MSwgMHhFOSwgMHgzNywgMHg5NSwgMHg4QSwgMHg5RSwgMHhGMCwKKyAgICAweDhGLCAweDg2LCAweDU3LCAweEU4LCAweDQ5LCAweDFDLCAweENFLCAweDI2LCAweDI5LCAweDk0LCAweDhDLCAweDMxLCAweDM1LCAweEIzLCAweEQ1LCAweDdBLAorICAgIDB4MjIsIDB4MzYsIDB4RkIsIDB4OEEsIDB4NjUsIDB4MjEsIDB4RUQsIDB4MDIsIDB4MEQsIDB4OTcsIDB4OTIsIDB4RDUsIDB4MzcsIDB4NkUsIDB4MjUsIDB4QUMsCisgICAgMHgyMywgMHhDMiwgMHg5MiwgMHhDRiwgMHhGNCwgMHgxMSwgMHg5QiwgMHgwNCwgMHg1OCwgMHgzMSwgMHg5QywgMHhCNiwgMHhGQSwgMHhGOCwgMHg2MCwgMHhERiwKKyAgICAweEExLCAweEUwLCAweDUzLCAweDVGLCAweDc4LCAweDVELCAweDI3LCAweDAyLCAweEQ3LCAweDYwLCAweEQzLCAweDc4LCAweEY2LCAweEY4LCAweDBELCAweEE3LAorICAgIDB4OUYsIDB4MDcsIDB4OTEsIDB4QUIsIDB4REMsIDB4QjYsIDB4QjQsIDB4OEUsIDB4RDMsIDB4Q0UsIDB4NDQsIDB4MzAsIDB4RUUsIDB4RUMsIDB4OTQsIDB4MzIsCisgICAgMHhCMCwgMHgwQywgMHg0OSwgMHgwNywgMHg4OCwgMHg3NiwgMHg2NywgMHhDMCwgMHhENywgMHg0NiwgMHg4NCwgMHgxRiwgMHgwNywgMHhCQSwgMHgxQSwgMHhENiwKKyAgICAweEI5LCAweDNCLCAweEJGLCAweEQxLCAweDgxLCAweEYwLCAweEUwLCAweEI4LCAweEI0LCAweEU4LCAweDAwLCAweDIwLCAweDc0LCAweEEyLCAweDJELCAweDI1LAorICAgIDB4NDAsIDB4RTYsIDB4OTcsIDB4MEMsIDB4Q0EsIDB4Q0YsIDB4RTYsIDB4Q0QsIDB4NDcsIDB4OUEsIDB4QUMsIDB4RDgsIDB4NjgsIDB4OTYsIDB4ODAsIDB4M0YsCisgICAgMHgxQywgMHgyRSwgMHgyMiwgMHg4RiwgMHgzNCwgMHgzNywgMHhDQywgMHg3QSwgMHhDNSwgMHgzMCwgMHgyNCwgMHhCNywgMHg5OCwgMHgyNSwgMHg2MiwgMHg0MSwKKyAgICAweDZDLCAweDlCLCAweDM4LCAweDUxLCAweDkxLCAweDk5LCAweDk4LCAweDYxLCAweDU0LCAweEU3LCAweDU2LCAweEQwLCAweDc2LCAweDRELCAweEZCLCAweEVCLAorICAgIDB4RTMsIDB4N0EsIDB4ODUsIDB4Q0YsIDB4MTgsIDB4MzEsIDB4NkQsIDB4RDgsIDB4NTgsIDB4MTcsIDB4NDAsIDB4MTgsIDB4OUYsIDB4RUQsIDB4MDEsIDB4QkYsCisgICAgMHg2OCwgMHg2RCwgMHg1RSwgMHgzRCwgMHhFNywgMHgwMiwgMHgzNywgMHhGOCwgMHgxMSwgMHg3MSwgMHgyRCwgMHgxQSwgMHhENCwgMHg3RSwgMHhDNiwgMHhCRCwKKyAgICAweDQ4LCAweEI5LCAweEU1LCAweEYxLCAweEY1LCAweDlDLCAweDZCLCAweDM0LCAweEM0LCAweEI4LCAweEIyLCAweDI0LCAweDA0LCAweDlFLCAweEZDLCAweDAyLAorICAgIDB4OTksIDB4NUUsIDB4RjYsIDB4M0IsIDB4MzcsIDB4QUEsIDB4QTYsIDB4NTQsIDB4QUIsIDB4MzQsIDB4NDYsIDB4MjYsIDB4RjUsIDB4QzcsIDB4NUUsIDB4MDYsCisgICAgMHhGQSwgMHg2RSwgMHg2RSwgMHhCMSwgMHg2RSwgMHhCQywgMHhGMSwgMHg2NCwgMHhEQiwgMHg4NiwgMHgwNywgMHg2OSwgMHgzNSwgMHg1MSwgMHg3MiwgMHhDRSwKKyAgICAweDhCLCAweDNDLCAweEU1LCAweDFELCAweEIwLCAweDU0LCAweENELCAweERFLCAweDI5LCAweDUyLCAweDcyLCAweDdGLCAweERGLCAweEEwLCAweEU3LCAweDc1LAorICAgIDB4REEsIDB4RUQsIDB4MDUsIDB4RTksIDB4NUUsIDB4RkUsIDB4N0YsIDB4RTUsIDB4RUYsIDB4M0IsIDB4MjEsIDB4MEUsIDB4RDAsIDB4MDgsIDB4RTcsIDB4N0YsCisgICAgMHg3NywgMHg2OSwgMHhGMywgMHg1RCwgMHgwMCwgMHhCMSwgMHg1MSwgMHhDNCwgMHgwQywgMHhCQSwgMHg4RCwgMHhDMiwgMHg1RSwgMHgzNiwgMHhFOSwgMHhGNywKKyAgICAweENDLCAweDUwLCAweEVFLCAweEQ4LCAweEY5LCAweDVFLCAweDUzLCAweDI2LCAweDQ5LCAweDdCLCAweEFELCAweEUyLCAweDgwLCAweERGLCAweEJFLCAweDBELAorICAgIDB4RDEsIDB4NkEsIDB4ODYsIDB4MzUsIDB4MzQsIDB4NkQsIDB4MzUsIDB4NkQsIDB4MkYsIDB4QTksIDB4QUMsIDB4MTQsIDB4RTcsIDB4MDYsIDB4QjUsIDB4NzUsCisgICAgMHhFRCwgMHg1QSwgMHhGNSwgMHg1QiwgMHhFMSwgMHhBNSwgMHg2NCwgMHg1NSwgMHgwRiwgMHg3MiwgMHgxQSwgMHg0MywgMHg3MCwgMHg0OCwgMHg2QiwgMHgxMywKKyAgICAweEMxLCAweDE4LCAweDJDLCAweDUwLCAweEM3LCAweENGLCAweDdELCAweDY5LCAweDJDLCAweDIwLCAweEQzLCAweEVFLCAweEUwLCAweEI3LCAweDI5LCAweDk3LAorICAgIDB4QjIsIDB4ODksIDB4RjgsIDB4QUYsIDB4NEIsIDB4NEQsIDB4QkIsIDB4NDQsIDB4RkIsIDB4QzYsIDB4MjgsIDB4MUQsIDB4RDMsIDB4MDUsIDB4RDIsIDB4RjUsCisgICAgMHg1OSwgMHgyRCwgMHg5MiwgMHg3RCwgMHhFQywgMHhCMCwgMHg4MSwgMHg3NiwgMHg3NiwgMHg3QSwgMHhGOCwgMHgwOSwgMHg4RSwgMHg2NywgMHg1QSwgMHhBQywKKyAgICAweDc3LCAweDRDLCAweDY0LCAweDRELCAweDZCLCAweDYxLCAweEU5LCAweDI3LCAweDg1LCAweDkxLCAweDU3LCAweEY5LCAweDQ1LCAweEYwLCAweEZDLCAweENDLAorICAgIDB4MTEsIDB4MEUsIDB4NkQsIDB4ODQsIDB4OEYsIDB4MjEsIDB4RTQsIDB4QjIsIDB4QTcsIDB4N0IsIDB4OUIsIDB4MzEsIDB4RjksIDB4RUYsIDB4NDUsIDB4RTEsCisgICAgMHgzRiwgMHg3NCwgMHgxMCwgMHhFQSwgMHhGNSwgMHhCRiwgMHg2NSwgMHg3RSwgMHhDOCwgMHhDRiwgMHgwMSwgMHhCRCwgMHg0MCwgMHg0MSwgMHgzMiwgMHg5RCwKKyAgICAweDNFLCAweEMwLCAweDAwLCAweEMxLCAweDlFLCAweDZBLCAweEUyLCAweDU0LCAweEExLCAweDBELCAweEIzLCAweDg0LCAweDNBLCAweEQ0LCAweDA4LCAweEM3LAorICAgIDB4NEQsIDB4NkEsIDB4MDEsIDB4QzUsIDB4RDMsIDB4QjksIDB4ODAsIDB4QjksIDB4M0MsIDB4RDEsIDB4ODEsIDB4QjcsIDB4NUQsIDB4OEQsIDB4MzcsIDB4RDQsCisgICAgMHgzQywgMHg1QSwgMHhEQywgMHhDOSwgMHhERCwgMHg4NCwgMHg0RiwgMHg1NiwgMHhCQywgMHhDQywgMHhBNSwgMHgwRCwgMHg5QSwgMHg1MywgMHg5RCwgMHhDQywKKyAgICAweDdBLCAweDUyLCAweEE3LCAweEFFLCAweDNBLCAweDdGLCAweDRFLCAweEUxLCAweDYzLCAweEFFLCAweEZGLCAweDBFLCAweEE3LCAweDdBLCAweDNCLCAweDA1LAorICAgIDB4MEEsIDB4NTMsIDB4QzUsIDB4QUMsIDB4RDMsIDB4NTgsIDB4QjUsIDB4QjYsIDB4RTEsIDB4QzEsIDB4OEIsIDB4MUMsIDB4RUYsIDB4NzcsIDB4RUIsIDB4MkEsCisgICAgMHhBRiwgMHg0MSwgMHhEQSwgMHg0RCwgMHhCQywgMHhDNSwgMHgzNywgMHgyNywgMHhDRCwgMHgyMCwgMHhCRCwgMHhBOSwgMHg4MywgMHg2NCwgMHhBNiwgMHgyOCwKKyAgICAweERFLCAweDFDLCAweEQ3LCAweDdBLCAweDk4LCAweEVBLCAweDU1LCAweDNELCAweEUyLCAweDU5LCAweDJGLCAweDRFLCAweDk2LCAweEVFLCAweEIyLCAweEFGLAorICAgIDB4QUEsIDB4RDMsIDB4QzcsIDB4MDMsIDB4RUIsIDB4NDcsIDB4MzcsIDB4RjUsIDB4M0MsIDB4NkEsIDB4MDcsIDB4ODgsIDB4MjAsIDB4OUQsIDB4MkEsIDB4RDgsCisgICAgMHhFRCwgMHgwRiwgMHgzOCwgMHhCNywgMHg1NSwgMHgzRSwgMHg5OSwgMHg2NywgMHg4QSwgMHg4MCwgMHgwRiwgMHgyMCwgMHgzOCwgMHhDMiwgMHgzRSwgMHgyMSwKKyAgICAweDY1LCAweDA3LCAweDYyLCAweDdELCAweDU2LCAweEUyLCAweDYxLCAweDNFLCAweDFGLCAweDI5LCAweDIwLCAweDA2LCAweDJFLCAweEI0LCAweEVBLCAweDIzLAorICAgIDB4NzIsIDB4OTEsIDB4QjYsIDB4MkIsIDB4NzgsIDB4QjEsIDB4MDEsIDB4RjAsIDB4MjUsIDB4MEUsIDB4NkYsIDB4RDAsIDB4M0EsIDB4OTgsIDB4MTQsIDB4NEIsCisgICAgMHhGNywgMHgxOCwgMHgyNywgMHg3MCwgMHhCRiwgMHg4OSwgMHgyOSwgMHhGMiwgMHgwQywgMHhGQSwgMHhBQywgMHgyNiwgMHg3MywgMHhCQywgMHhBQSwgMHgyMSwKKyAgICAweDVDLCAweDBBLCAweEM0LCAweEY2LCAweDk1LCAweDEwLCAweEEzLCAweDkwLCAweDQ2LCAweDQ5LCAweDVDLCAweDUzLCAweDI1LCAweDk1LCAweDkzLCAweDgwLAorICAgIDB4MEYsIDB4RjMsIDB4QjUsIDB4QTEsIDB4N0YsIDB4MjcsIDB4RDUsIDB4RjIsIDB4OUQsIDB4NDEsIDB4QTAsIDB4MzQsIDB4QUIsIDB4REMsIDB4RDIsIDB4OEYsCisgICAgMHhBNCwgMHhCQywgMHhFOCwgMHg1NCwgMHgwNiwgMHg2MCwgMHgxMywgMHg2RCwgMHg5QiwgMHg3NCwgMHg1NywgMHg4MiwgMHgxQywgMHgwRCwgMHgxRiwgMHhEQiwKKyAgICAweDU0LCAweEMzLCAweDRGLCAweDBDLCAweEMzLCAweDk5LCAweDBGLCAweEY2LCAweDZCLCAweDZBLCAweDcyLCAweDRGLCAweDJDLCAweDAxLCAweDBDLCAweDkxLAorICAgIDB4REMsIDB4MDYsIDB4MDUsIDB4QTcsIDB4Q0MsIDB4RDQsIDB4NkMsIDB4QjMsIDB4MzUsIDB4QUYsIDB4MTAsIDB4REUsIDB4RUUsIDB4RTYsIDB4NDIsIDB4OTMsCisgICAgMHgxMSwgMHg0MSwgMHg2NiwgMHg4NiwgMHgyRiwgMHhENiwgMHhDRiwgMHhDMywgMHhBNywgMHg2MSwgMHgyNCwgMHhEMCwgMHhDOCwgMHg5RCwgMHg4QiwgMHgwMSwKKyAgICAweDY4LCAweEY3LCAweDU0LCAweDEwLCAweDVDLCAweEU3LCAweDAxLCAweDQ5LCAweEEzLCAweDRELCAweDVELCAweDk3LCAweEVBLCAweDc5LCAweEE4LCAweEZBLAorICAgIDB4MDksIDB4MEYsIDB4QUQsIDB4OTMsIDB4MTYsIDB4Q0QsIDB4NzUsIDB4NkIsIDB4NzAsIDB4NzksIDB4REIsIDB4QzMsIDB4QzgsIDB4MDQsIDB4RTEsIDB4RDYsCisgICAgMHhEQSwgMHgxMSwgMHg4RSwgMHg0QiwgMHhCNiwgMHg2RSwgMHg2MCwgMHg1RCwgMHgyMSwgMHhBQSwgMHhCMCwgMHhDMCwgMHhBMCwgMHhDRCwgMHhDNywgMHg4MSwKKyAgICAweDkyLCAweDBGLCAweEYzLCAweEJDLCAweEEzLCAweDgwLCAweDVDLCAweDU0LCAweENBLCAweDA1LCAweDlDLCAweDc1LCAweDVCLCAweDgwLCAweDNFLCAweDY2LAorICAgIDB4NzYsIDB4NjUsIDB4QUEsIDB4OTYsIDB4RTMsIDB4NkUsIDB4OUEsIDB4NkMsIDB4MDksIDB4RUMsIDB4NzQsIDB4RjMsIDB4OTUsIDB4N0EsIDB4QTgsIDB4MEYsCisgICAgMHg0RCwgMHgwOCwgMHgxQiwgMHgzOSwgMHg3RiwgMHhBMywgMHgyNywgMHhBMywgMHg1MCwgMHg0RiwgMHhDQSwgMHgxQSwgMHhEQSwgMHg0MCwgMHhGRSwgMHg2RiwKKyAgICAweDYzLCAweEZCLCAweEI2LCAweEJDLCAweDAzLCAweDhGLCAweEJELCAweDRBLCAweDk1LCAweEUyLCAweEExLCAweENFLCAweDFFLCAweEZBLCAweEU2LCAweEYwLAorICAgIDB4NkQsIDB4NjUsIDB4N0UsIDB4MDMsIDB4NkMsIDB4RUYsIDB4MTAsIDB4ODgsIDB4MkYsIDB4QzMsIDB4MzUsIDB4RkMsIDB4NjcsIDB4REIsIDB4RUYsIDB4RjMsCisgICAgMHhBMSwgMHhCQywgMHg1QiwgMHgxMiwgMHg5QywgMHg0QywgMHhGRiwgMHhEOSwgMHg1RSwgMHg1MywgMHg0RSwgMHhFQywgMHg5QywgMHg2NywgMHg5RiwgMHhFRCwKKyAgICAweDI0LCAweDc1LCAweDlELCAweEM1LCAweEUwLCAweENCLCAweDc0LCAweDg5LCAweDBELCAweDBCLCAweDNCLCAweDg1LCAweDI0LCAweDEyLCAweEFBLCAweEY4LAorICAgIDB4MjIsIDB4MzIsIDB4QUMsIDB4REQsIDB4M0IsIDB4QzYsIDB4OTAsIDB4NkYsIDB4RUYsIDB4QkIsIDB4NzIsIDB4RUYsIDB4Q0EsIDB4MEQsIDB4QjEsIDB4NDksCisgICAgMHgzMCwgMHg5QiwgMHhFMywgMHhCQywgMHg1MCwgMHg4RCwgMHg4RCwgMHhFMCwgMHgyMSwgMHg3OSwgMHg2NCwgMHg4OSwgMHgwMSwgMHg1OSwgMHhFRiwgMHhENiwKKyAgICAweDBDLCAweDgzLCAweEVELCAweEE0LCAweDIzLCAweENCLCAweDQxLCAweEM1LCAweDRELCAweDEwLCAweEM0LCAweENGLCAweEMyLCAweDJGLCAweEM3LCAweEEzLAorICAgIDB4RDksIDB4MDMsIDB4RjUsIDB4MTEsIDB4RDQsIDB4MkMsIDB4QzUsIDB4MzEsIDB4NjIsIDB4RjYsIDB4QUYsIDB4OTAsIDB4MzksIDB4M0QsIDB4QzgsIDB4Q0IsCisgICAgMHg5RiwgMHg5OCwgMHhDRCwgMHgwMCwgMHhCRCwgMHgwRSwgMHg4MCwgMHhFNCwgMHhERiwgMHhFNywgMHg2NiwgMHgwMCwgMHgxOSwgMHhBNCwgMHg4RCwgMHg0MCwKKyAgICAweDFBLCAweDFFLCAweEVELCAweDJCLCAweEQyLCAweEFCLCAweERDLCAweDZFLCAweDBGLCAweDBBLCAweEQ0LCAweEQ3LCAweDQ0LCAweEM3LCAweDc0LCAweDg1LAorICAgIDB4QzIsIDB4RjIsIDB4NjMsIDB4OTYsIDB4NjIsIDB4OTAsIDB4NTYsIDB4MEQsIDB4M0IsIDB4MjcsIDB4MUEsIDB4QjEsIDB4QkYsIDB4OUYsIDB4NTgsIDB4MDcsCisgICAgMHhGMSwgMHhGNSwgMHgzRSwgMHhBRiwgMHgwNywgMHgwMCwgMHg3NiwgMHhBOSwgMHhCNywgMHgzOCwgMHg3QSwgMHhCQywgMHhGOCwgMHhENywgMHg4MywgMHhGNywKKyAgICAweDE3LCAweDlGLCAweEQ1LCAweEQ1LCAweDBBLCAweDM0LCAweEJFLCAweDA3LCAweDI4LCAweEZCLCAweEE5LCAweDAwLCAweEMzLCAweDJBLCAweEQwLCAweDMyLAorICAgIDB4QzYsIDB4QUQsIDB4NEEsIDB4NTgsIDB4NUUsIDB4RDksIDB4QUQsIDB4NEQsIDB4ODYsIDB4MTQsIDB4MUQsIDB4M0UsIDB4RUIsIDB4RTksIDB4RTUsIDB4N0QsCisgICAgMHhEMCwgMHg5NSwgMHgzMywgMHg1NCwgMHhFQywgMHhDMSwgMHg3MiwgMHg4QiwgMHhEMSwgMHg1QSwgMHgyMywgMHhCRiwgMHhCOCwgMHhEMCwgMHg4NSwgMHg2RSwKKyAgICAweDM4LCAweDkzLCAweEQ3LCAweEQ0LCAweEU5LCAweDdDLCAweDAzLCAweEM3LCAweDIxLCAweDNGLCAweDM4LCAweDM2LCAweEZCLCAweEY1LCAweEFELCAweEY0LAorICAgIDB4Q0EsIDB4MUEsIDB4MDMsIDB4ODIsIDB4OUIsIDB4M0IsIDB4RUIsIDB4QjAsIDB4MEYsIDB4RTEsIDB4RUYsIDB4OTgsIDB4NkQsIDB4NzYsIDB4OEMsIDB4MUUsCisgICAgMHhEQywgMHhCQSwgMHg0NSwgMHhFMCwgMHhFOSwgMHhBRSwgMHhDNywgMHhDOSwgMHhBQywgMHg5MSwgMHhFNywgMHhCNSwgMHhEMSwgMHgxOCwgMHhGQSwgMHg1NiwKKyAgICAweDVBLCAweEExLCAweDkyLCAweEY5LCAweDJDLCAweDlDLCAweDA2LCAweDRGLCAweDM0LCAweERELCAweDgwLCAweEI1LCAweEY0LCAweDVGLCAweDdFLCAweEUwLAorICAgIDB4QUYsIDB4QUIsIDB4REUsIDB4OTUsIDB4NzIsIDB4N0YsIDB4Q0QsIDB4NUQsIDB4MjksIDB4NTQsIDB4NkEsIDB4QTgsIDB4MTMsIDB4NUIsIDB4REIsIDB4Q0IsCisgICAgMHgzMCwgMHhFRSwgMHg1NiwgMHhEMywgMHg0NSwgMHg4RSwgMHhDQiwgMHg1OSwgMHhEQSwgMHgwNywgMHhFRCwgMHhFQywgMHg0MywgMHg1RSwgMHgxNywgMHg0NCwKKyAgICAweEFGLCAweEJDLCAweDgxLCAweDVDLCAweDRCLCAweERCLCAweEFFLCAweEEwLCAweDQ2LCAweDE5LCAweEE4LCAweDYxLCAweDM1LCAweDlGLCAweDE3LCAweEIzLAorICAgIDB4QUYsIDB4Q0MsIDB4MjIsIDB4QzYsIDB4MEIsIDB4NzgsIDB4NTgsIDB4RTksIDB4ODcsIDB4RTIsIDB4MkQsIDB4OTYsIDB4RjAsIDB4QTksIDB4NjIsIDB4MTIsCisgICAgMHgzNSwgMHhEMCwgMHg0NiwgMHg2QywgMHg2MSwgMHhBRSwgMHhCOSwgMHg1RCwgMHg1QSwgMHhERSwgMHg4QiwgMHg3RiwgMHhBQywgMHg5RSwgMHgyOSwgMHhBMSwKKyAgICAweEVBLCAweEM3LCAweDFCLCAweDI0LCAweDlFLCAweDA4LCAweDQ4LCAweEJELCAweDIzLCAweEY2LCAweEFCLCAweDRFLCAweEU5LCAweERFLCAweEFGLCAweDRDLAorICAgIDB4NzksIDB4Q0MsIDB4NTIsIDB4QjIsIDB4QUMsIDB4RjQsIDB4MDEsIDB4QTksIDB4QTgsIDB4MDIsIDB4OUIsIDB4MTQsIDB4ODYsIDB4NEIsIDB4RUUsIDB4OTQsCisgICAgMHhBOCwgMHgzNCwgMHg2QywgMHgwMCwgMHg0RiwgMHg0QywgMHhFMSwgMHg2RCwgMHhGOSwgMHgxOSwgMHg4RiwgMHgzNiwgMHg1RSwgMHgyMiwgMHg1RCwgMHhCNywKKyAgICAweDAzLCAweDYyLCAweDdDLCAweDRELCAweEM0LCAweEYwLCAweDRDLCAweDNDLCAweDVGLCAweEJELCAweDBFLCAweEIwLCAweDc0LCAweDE0LCAweDA4LCAweEVFLAorICAgIDB4MEUsIDB4MDYsIDB4NjUsIDB4QUIsIDB4NjksIDB4N0EsIDB4NzAsIDB4NjcsIDB4QzIsIDB4MTIsIDB4MDQsIDB4NDUsIDB4RjIsIDB4QzgsIDB4RDcsIDB4ODAsCisgICAgMHg3RiwgMHhEQiwgMHhCNSwgMHhEMCwgMHhGNywgMHhBQiwgMHg2MiwgMHg3QSwgMHhGQSwgMHhENiwgMHgxQSwgMHg5RSwgMHgxNCwgMHg0QywgMHg0QSwgMHg2QywKKyAgICAweDc1LCAweDgxLCAweDM3LCAweEVGLCAweDY4LCAweDRBLCAweDVELCAweDIzLCAweERELCAweDdFLCAweEY1LCAweERELCAweDlFLCAweEVGLCAweEIzLCAweEM4LAorICAgIDB4M0YsIDB4MTgsIDB4NjUsIDB4NDIsIDB4MTQsIDB4NjgsIDB4NzcsIDB4NTYsIDB4MjQsIDB4OEMsIDB4QUQsIDB4N0EsIDB4QzMsIDB4MUQsIDB4QjMsIDB4QUEsCisgICAgMHgzQywgMHg5MCwgMHgzOCwgMHg2NSwgMHhBMiwgMHg2QSwgMHg0MiwgMHhEOSwgMHg0RCwgMHhBMSwgMHhBQSwgMHgwNCwgMHhBNSwgMHhFNiwgMHgzNiwgMHhGNCwKKyAgICAweEEzLCAweDE4LCAweEEzLCAweDlCLCAweDhDLCAweDlBLCAweDVFLCAweEFGLCAweDZELCAweERDLCAweDZBLCAweEQzLCAweDYxLCAweEI3LCAweDU5LCAweDJDLAorICAgIDB4RjQsIDB4RTEsIDB4MTYsIDB4RkYsIDB4RkMsIDB4M0QsIDB4QkMsIDB4MkYsIDB4RDYsIDB4QzEsIDB4RUUsIDB4QkQsIDB4OUIsIDB4NDgsIDB4MTEsIDB4OTAsCisgICAgMHg3QiwgMHhFRCwgMHg1OCwgMHg5QiwgMHg4NCwgMHg1NywgMHg4NSwgMHhCMywgMHhCMywgMHg2NSwgMHgxNCwgMHgwOCwgMHgxNCwgMHg4RiwgMHg3MSwgMHhGMiwKKyAgICAweDUwLCAweDM4LCAweDdDLCAweENFLCAweEVFLCAweDQ3LCAweEJELCAweEZELCAweDI3LCAweDZCLCAweDA3LCAweEI3LCAweEIyLCAweEJCLCAweDA1LCAweEIwLAorICAgIDB4NEYsIDB4QjUsIDB4OTQsIDB4QTAsIDB4MzAsIDB4ODksIDB4OTcsIDB4RDIsIDB4MkUsIDB4RTEsIDB4Q0MsIDB4QUMsIDB4REEsIDB4OTUsIDB4MkYsIDB4MkUsCisgICAgMHhERCwgMHhBOSwgMHhBOSwgMHhEMCwgMHhDNiwgMHhDMywgMHg3NywgMHhCOCwgMHhCQSwgMHgxOSwgMHhEMiwgMHg2NiwgMHg5MSwgMHhCNiwgMHhBOCwgMHg0RCwKKyAgICAweDM0LCAweEM1LCAweEUzLCAweEM5LCAweDRCLCAweDhDLCAweDQ5LCAweDY4LCAweEQyLCAweDQ3LCAweEM1LCAweDhDLCAweDEwLCAweEU0LCAweEJCLCAweDQwLAorICAgIDB4MDQsIDB4N0IsIDB4MjYsIDB4MzQsIDB4NzUsIDB4NTMsIDB4QzUsIDB4QTUsIDB4NTcsIDB4OTEsIDB4MTEsIDB4ODEsIDB4NDksIDB4NzksIDB4MEYsIDB4RTksCisgICAgMHg5NSwgMHgzMywgMHg2QywgMHhGMiwgMHgyRiwgMHgyQSwgMHgwNywgMHg0MywgMHg3MSwgMHhBRCwgMHg3QiwgMHgyQywgMHg5OSwgMHhGRCwgMHg0RSwgMHhDMCwKKyAgICAweDhDLCAweEM4LCAweDY5LCAweDEyLCAweEY5LCAweDFGLCAweDExLCAweEZBLCAweDI4LCAweDgwLCAweEM3LCAweEVFLCAweDUwLCAweDYzLCAweDZELCAweDA4LAorICAgIDB4ODgsIDB4OUQsIDB4NkMsIDB4MkUsIDB4MDUsIDB4NTQsIDB4QzIsIDB4MEIsIDB4MjYsIDB4NjksIDB4QUIsIDB4QTUsIDB4QUQsIDB4QzEsIDB4RkQsIDB4RDksCisgICAgMHgxRCwgMHhFNiwgMHg4NSwgMHhENSwgMHg3MSwgMHhCNiwgMHhBOSwgMHhFOSwgMHgxMCwgMHhCNywgMHgyRiwgMHgxRSwgMHgxMiwgMHg5QywgMHg0MSwgMHgxNCwKKyAgICAweEFGLCAweEUwLCAweDA3LCAweDhDLCAweEYyLCAweEEzLCAweDdGLCAweEE0LCAweDk0LCAweDkxLCAweEY5LCAweDQxLCAweDYyLCAweDhCLCAweEU5LCAweEE0LAorICAgIDB4MTEsIDB4NzgsIDB4OUQsIDB4NzUsIDB4MzMsIDB4MDEsIDB4QkQsIDB4N0YsIDB4MUUsIDB4NEYsIDB4MkYsIDB4ODAsIDB4N0EsIDB4RjksIDB4NzAsIDB4ODQsCisgICAgMHhFNiwgMHg0NSwgMHhERSwgMHg3NiwgMHhEOCwgMHgzNiwgMHg1QywgMHhDMSwgMHhCOSwgMHg0MiwgMHg1OSwgMHg4NSwgMHg5QywgMHg2MCwgMHg1RiwgMHgyOSwKKyAgICAweDAzLCAweDM0LCAweEU4LCAweDY1LCAweEVCLCAweDk5LCAweDdCLCAweENELCAweDNBLCAweDlDLCAweEI2LCAweDlFLCAweEE5LCAweEJBLCAweDdELCAweDZELAorICAgIDB4OUQsIDB4MjcsIDB4REQsIDB4QkUsIDB4RDQsIDB4RjksIDB4QjUsIDB4RjgsIDB4NjYsIDB4RDUsIDB4QUMsIDB4MjcsIDB4OUQsIDB4OEYsIDB4NzIsIDB4MDQsCisgICAgMHgxRCwgMHhBMywgMHg5MSwgMHg5RSwgMHgzQywgMHhCQSwgMHg0QiwgMHhGNywgMHg1OCwgMHgwNiwgMHhCRCwgMHhFNiwgMHg4RiwgMHhCNSwgMHhBNSwgMHg4RiwKKyAgICAweDdGLCAweDFDLCAweEY5LCAweEQ5LCAweDJFLCAweEQ2LCAweEIwLCAweDUyLCAweDJELCAweDIzLCAweDhCLCAweDhFLCAweEQ3LCAweEU4LCAweEZGLCAweDVFLAorICAgIDB4MDQsIDB4NEEsIDB4QzQsIDB4REEsIDB4OTUsIDB4QTQsIDB4OTEsIDB4RkYsIDB4Q0IsIDB4MzYsIDB4MzgsIDB4RUUsIDB4NDcsIDB4QjcsIDB4NTEsIDB4Q0QsCisgICAgMHg4MCwgMHgzNywgMHgwRCwgMHgwNiwgMHhCNiwgMHg1NiwgMHgxOSwgMHhGQiwgMHhBRiwgMHg0RSwgMHg5NCwgMHg1NywgMHgxMiwgMHhDQywgMHg0NiwgMHhENCwKKyAgICAweDE2LCAweDU5LCAweEY0LCAweDgzLCAweEVGLCAweDNDLCAweDdDLCAweEUzLCAweDUwLCAweDYxLCAweDY5LCAweEIzLCAweEM3LCAweEI1LCAweDk2LCAweERCLAorICAgIDB4ODksIDB4NkMsIDB4MjcsIDB4QTYsIDB4NDgsIDB4NjcsIDB4OUYsIDB4RTgsIDB4MzEsIDB4MDEsIDB4NkQsIDB4MTYsIDB4RDQsIDB4OEEsIDB4RkYsIDB4OTMsCisgICAgMHg0NywgMHg5RCwgMHhDNiwgMHgyQywgMHg1MywgMHgxOCwgMHgwMSwgMHgwOSwgMHgwOSwgMHgzNSwgMHhGRCwgMHhBQSwgMHg0MywgMHgxQiwgMHhDMCwgMHhENywKKyAgICAweDlELCAweDg0LCAweDAxLCAweDRELCAweDA4LCAweDUxLCAweDc2LCAweEYwLCAweDIxLCAweDIxLCAweDc0LCAweDFELCAweEI2LCAweDk3LCAweDBDLCAweEVFLAorICAgIDB4QzgsIDB4Q0EsIDB4MDAsIDB4ODcsIDB4NTIsIDB4RDksIDB4NTAsIDB4RDMsIDB4ODQsIDB4QzksIDB4RjYsIDB4QjMsIDB4M0UsIDB4NjksIDB4QjgsIDB4N0EsCisgICAgMHhERiwgMHgxMCwgMHgwMiwgMHhFOSwgMHhCMSwgMHg0RSwgMHhGNywgMHg4MSwgMHg2RCwgMHgzQSwgMHg2RSwgMHg1QiwgMHgxNCwgMHg3OCwgMHhCRiwgMHgwRSwKKyAgICAweDUwLCAweEI4LCAweDYzLCAweDhCLCAweDFGLCAweDVGLCAweEVCLCAweEVBLCAweDVDLCAweEJCLCAweEU4LCAweDg3LCAweDA3LCAweDYwLCAweDUwLCAweDEzLAorICAgIDB4RTEsIDB4MzYsIDB4RDksIDB4NTQsIDB4RUEsIDB4REQsIDB4OUIsIDB4OUIsIDB4NTMsIDB4RUYsIDB4RkQsIDB4RDYsIDB4OTIsIDB4ODgsIDB4OTAsIDB4NTAsCisgICAgMHgxOCwgMHhEMiwgMHhBQSwgMHg2NywgMHhGRiwgMHhGNCwgMHg5NSwgMHgwNiwgMHhDNCwgMHgzNiwgMHhCMSwgMHgzOCwgMHg3NCwgMHhBQSwgMHhGRCwgMHgwNSwKKyAgICAweEM4LCAweDBFLCAweDU5LCAweEIzLCAweEJBLCAweEQzLCAweDgzLCAweDg0LCAweDNCLCAweDk2LCAweDlFLCAweDhELCAweEY0LCAweEUyLCAweENBLCAweDJBLAorICAgIDB4NzcsIDB4MEIsIDB4RDYsIDB4RTEsIDB4MkUsIDB4MzcsIDB4ODgsIDB4MEUsIDB4RDksIDB4MTMsIDB4QzgsIDB4RjgsIDB4NkQsIDB4RkMsIDB4NzAsIDB4OTUsCisgICAgMHhGNSwgMHg4MywgMHgwMiwgMHhBMiwgMHgwRiwgMHg3NSwgMHhENCwgMHhFMCwgMHhFQywgMHhGRCwgMHg0QSwgMHg4MiwgMHhERCwgMHg4NywgMHgxRCwgMHhDNCwKKyAgICAweDU3LCAweDk2LCAweDU0LCAweERCLCAweDM2LCAweDA3LCAweDExLCAweDBDLCAweDBCLCAweDk0LCAweEQwLCAweEY0LCAweDk3LCAweDc1LCAweEY5LCAweDFELAorICAgIDB4QzQsIDB4NUQsIDB4MzQsIDB4MTksIDB4MzgsIDB4RTEsIDB4MkEsIDB4MjMsIDB4QkQsIDB4M0IsIDB4RTYsIDB4OEYsIDB4QzIsIDB4MEEsIDB4MkIsIDB4MUQsCisgICAgMHhGRCwgMHgyRSwgMHg2OCwgMHhCQywgMHgxMSwgMHhBNCwgMHhBMSwgMHg4NywgMHg5OCwgMHg0RSwgMHg3MSwgMHgxQywgMHhCRSwgMHgxOSwgMHgzRiwgMHhGQywKKyAgICAweDE3LCAweDI0LCAweDUyLCAweEE1LCAweEEzLCAweDE2LCAweEQxLCAweEFELCAweDBGLCAweEY4LCAweDU3LCAweDlGLCAweDdCLCAweDhFLCAweEQwLCAweEMyLAorICAgIDB4M0YsIDB4NzgsIDB4NDMsIDB4REMsIDB4NTgsIDB4RUEsIDB4RTIsIDB4NUIsIDB4NzEsIDB4NjYsIDB4NDYsIDB4MjAsIDB4MjgsIDB4MDEsIDB4RkMsIDB4NDEsCisgICAgMHhBRiwgMHgxOSwgMHg1NSwgMHhBOCwgMHg4RiwgMHhCMCwgMHgwOCwgMHg5MSwgMHg5QywgMHhBNSwgMHg0QywgMHgxMCwgMHhBMSwgMHhENSwgMHg2QywgMHg5RSwKKyAgICAweDg1LCAweDY4LCAweDU1LCAweDVFLCAweDA3LCAweDdCLCAweEY2LCAweEEzLCAweDkxLCAweEVDLCAweDExLCAweEE3LCAweEU3LCAweDJDLCAweDZELCAweEY4LAorICAgIDB4NzMsIDB4MjYsIDB4NTMsIDB4QjUsIDB4NDQsIDB4MkMsIDB4N0UsIDB4OUIsIDB4REQsIDB4NzgsIDB4MjQsIDB4QkEsIDB4QjksIDB4RTUsIDB4QjIsIDB4RDEsCisgICAgMHgwRSwgMHhFNiwgMHhDOCwgMHg0RCwgMHgxRiwgMHgxNCwgMHgzMiwgMHg3NiwgMHgxQywgMHhCQywgMHhFNSwgMHgxRiwgMHhDNiwgMHg4MSwgMHgwRSwgMHgzOCwKKyAgICAweEQ5LCAweEIwLCAweEMzLCAweDg5LCAweEU3LCAweDUxLCAweEUyLCAweDZELCAweEI1LCAweDRDLCAweDEwLCAweDNCLCAweEFFLCAweDlGLCAweDA3LCAweDZDLAorICAgIDB4ODgsIDB4NTIsIDB4MDksIDB4MDYsIDB4QTUsIDB4NUMsIDB4MUEsIDB4MkQsIDB4MkYsIDB4M0YsIDB4OTAsIDB4MkQsIDB4QjksIDB4QjcsIDB4ODUsIDB4MkYsCisgICAgMHhDMCwgMHhFMCwgMHg2MCwgMHg0QSwgMHg3RCwgMHgyNCwgMHhDMywgMHhDRCwgMHg5QywgMHgxNSwgMHgzNywgMHg1QSwgMHhGMCwgMHg1NiwgMHg1OCwgMHg5QiwKKyAgICAweEE2LCAweEI2LCAweDBBLCAweEVELCAweDlFLCAweDIxLCAweEYzLCAweEE4LCAweDUzLCAweDc4LCAweDhDLCAweEI0LCAweDg0LCAweDQxLCAweDAyLCAweEM0LAorICAgIDB4QjcsIDB4RjUsIDB4NEIsIDB4QjIsIDB4OTgsIDB4OUQsIDB4ODksIDB4QjgsIDB4QUQsIDB4RTMsIDB4NUUsIDB4ODQsIDB4QjksIDB4REIsIDB4QzcsIDB4QTgsCisgICAgMHhDOSwgMHgyMCwgMHg5MSwgMHgwNSwgMHg4RSwgMHg0QiwgMHg2RiwgMHg3NCwgMHgxRCwgMHhDOSwgMHg2RCwgMHgyQSwgMHg0QSwgMHhGMSwgMHg1RSwgMHhEMSwKKyAgICAweDZCLCAweEZBLCAweEYyLCAweDRCLCAweEM2LCAweDcyLCAweEI1LCAweDk5LCAweDA1LCAweEVGLCAweEZGLCAweEUzLCAweDAwLCAweDk3LCAweEUxLCAweEI2LAorICAgIDB4MDcsIDB4MUYsIDB4QkMsIDB4OTUsIDB4Q0QsIDB4MUYsIDB4REMsIDB4RDUsIDB4OTMsIDB4NjIsIDB4N0MsIDB4QTAsIDB4RUMsIDB4Q0UsIDB4OUEsIDB4QzQsCisgICAgMHg1NSwgMHg5QywgMHg3OSwgMHgyMywgMHgyQSwgMHg2MSwgMHgxNywgMHg0NiwgMHg4NiwgMHg5RSwgMHg4MSwgMHhDNSwgMHg0MCwgMHgwRCwgMHg2MywgMHhCQywKKyAgICAweEFDLCAweDUyLCAweEU4LCAweDY5LCAweEJFLCAweDdDLCAweDc2LCAweEU4LCAweDEyLCAweEIzLCAweDY2LCAweDNGLCAweEU3LCAweEI5LCAweDk3LCAweEYwLAorICAgIDB4MzIsIDB4RDksIDB4QzYsIDB4QkYsIDB4RjMsIDB4MTIsIDB4QzksIDB4OUUsIDB4OTMsIDB4RDgsIDB4RjQsIDB4MkUsIDB4MTcsIDB4NTQsIDB4QTcsIDB4MzIsCisgICAgMHhFMiwgMHhGNiwgMHg2QywgMHhCRSwgMHhDQSwgMHhCQSwgMHg4RCwgMHg3NiwgMHgxMSwgMHhBMiwgMHg0OCwgMHhCNywgMHg0RSwgMHg4NCwgMHg0MiwgMHhFNSwKKyAgICAweEY0LCAweEFGLCAweDEyLCAweDRGLCAweDU2LCAweDk4LCAweDdCLCAweEYzLCAweEUwLCAweDIyLCAweDk0LCAweDFBLCAweDY0LCAweEEzLCAweERELCAweDI2LAorICAgIDB4MTMsIDB4NzMsIDB4OTYsIDB4ODQsIDB4NDYsIDB4QjUsIDB4OTgsIDB4RTQsIDB4OTEsIDB4RUMsIDB4RjMsIDB4MDYsIDB4MzcsIDB4MjEsIDB4NzksIDB4NzcsCisgICAgMHg5MSwgMHgwMiwgMHgyRSwgMHgxOCwgMHhFMCwgMHg2MCwgMHg3NSwgMHhCOCwgMHhDNSwgMHhBRCwgMHg5RCwgMHhCMywgMHg1NiwgMHg4QiwgMHg5MiwgMHgwRSwKKyAgICAweDAxLCAweEFCLCAweDkxLCAweEYyLCAweERDLCAweDQxLCAweEJDLCAweDI1LCAweENFLCAweDE2LCAweDMxLCAweDFCLCAweDI0LCAweDUyLCAweEQ5LCAweDAyLAorICAgIDB4MjUsIDB4NEUsIDB4NjQsIDB4OEEsIDB4MTEsIDB4MTUsIDB4QjksIDB4MjAsIDB4MzMsIDB4MDEsIDB4RDAsIDB4NEYsIDB4NkIsIDB4MDQsIDB4NjcsIDB4MzIsCisgICAgMHhCOSwgMHhFQywgMHhEMCwgMHg3NywgMHhGQywgMHg1MSwgMHgwRiwgMHg5RSwgMHg1QywgMHhGNSwgMHgzQywgMHgxOCwgMHgwQSwgMHhGMiwgMHhEMywgMHg0RSwKKyAgICAweDJDLCAweDNCLCAweEE3LCAweEMwLCAweDQzLCAweDMzLCAweEU4LCAweDU5LCAweDQwLCAweEI3LCAweEFGLCAweDc1LCAweDM4LCAweERDLCAweDFELCAweEYzLAorICAgIDB4NzcsIDB4QUQsIDB4RDksIDB4RjcsIDB4M0EsIDB4NUQsIDB4RjQsIDB4RDQsIDB4QjUsIDB4NTQsIDB4MTUsIDB4NzMsIDB4N0IsIDB4RTcsIDB4QTMsIDB4MkIsCisgICAgMHgyMiwgMHhFOSwgMHgwOSwgMHgyQywgMHhERSwgMHg2MCwgMHgyQSwgMHg1QiwgMHhCQiwgMHhEOSwgMHhBMSwgMHhGNiwgMHgxRSwgMHg2OSwgMHgzOCwgMHhDMiwKKyAgICAweDRCLCAweENELCAweEVDLCAweEEyLCAweEEzLCAweDFELCAweEJBLCAweEJFLCAweDBDLCAweEE0LCAweDQyLCAweDAxLCAweEU5LCAweDFDLCAweDRBLCAweEM2LAorICAgIDB4Q0YsIDB4RjgsIDB4OUEsIDB4MUIsIDB4MkIsIDB4MkIsIDB4NDQsIDB4ODEsIDB4NTAsIDB4NjksIDB4ODUsIDB4MDgsIDB4REQsIDB4RTcsIDB4QkUsIDB4RjksCisgICAgMHhCRiwgMHg2NSwgMHg1OSwgMHhCMywgMHg4MCwgMHg1QywgMHg4NSwgMHg1RCwgMHg2OCwgMHgwNSwgMHhCQSwgMHhBMSwgMHhEQywgMHgzMiwgMHg5QywgMHhBOSwKKyAgICAweDk4LCAweDdELCAweDNCLCAweDRFLCAweDAzLCAweEE0LCAweDI4LCAweDBBLCAweDNGLCAweEIzLCAweDA5LCAweEE4LCAweDBDLCAweDVBLCAweDkyLCAweEEzLAorICAgIDB4REYsIDB4QUUsIDB4NjksIDB4QkUsIDB4NUQsIDB4RkEsIDB4NzUsIDB4NDksIDB4QTQsIDB4NUMsIDB4RTUsIDB4QkIsIDB4Q0QsIDB4N0MsIDB4RDgsIDB4NUEsCisgICAgMHhBQSwgMHg3NywgMHg3QywgMHg4MSwgMHhFMywgMHhDQSwgMHhCOSwgMHg3QywgMHhDOCwgMHhGOSwgMHg4MywgMHg4QiwgMHg4NCwgMHhCNywgMHhFNiwgMHhFRiwKKyAgICAweDUyLCAweEYwLCAweEM1LCAweEI4LCAweEFGLCAweDdGLCAweEE2LCAweEEwLCAweDRFLCAweEUwLCAweDFBLCAweDQxLCAweDkzLCAweDAxLCAweEY3LCAweEJFLAorICAgIDB4MEUsIDB4NTgsIDB4NzMsIDB4RkEsIDB4NDMsIDB4RTcsIDB4QzAsIDB4NzIsIDB4MkIsIDB4NEYsIDB4NEEsIDB4ODAsIDB4QkEsIDB4QzcsIDB4MkUsIDB4MTksCisgICAgMHg0QywgMHhCNSwgMHhGMSwgMHhGRCwgMHg5NywgMHgxMSwgMHg4QSwgMHhEMywgMHhCNywgMHhDOSwgMHg3MywgMHg2RCwgMHgwNCwgMHg5RSwgMHhBQSwgMHhDMiwKKyAgICAweEQzLCAweEVFLCAweEI5LCAweEMwLCAweDk4LCAweDA2LCAweDlELCAweEE1LCAweDZCLCAweDE5LCAweDVCLCAweDk1LCAweDEzLCAweDZDLCAweDI3LCAweDlFLAorICAgIDB4NzcsIDB4RkIsIDB4NjYsIDB4N0IsIDB4N0YsIDB4MUUsIDB4OUQsIDB4NUQsIDB4MzgsIDB4MzAsIDB4QjYsIDB4N0UsIDB4QTksIDB4MEQsIDB4RjYsIDB4OEIsCisgICAgMHhBRSwgMHg1OCwgMHg5NCwgMHhBMywgMHgzQiwgMHg2NywgMHg5NSwgMHhBRCwgMHhDRCwgMHhFRSwgMHgzNywgMHhCNiwgMHg0QSwgMHhDMSwgMHg2OCwgMHgyQiwKKyAgICAweDY5LCAweDVGLCAweDQ2LCAweDlGLCAweDdELCAweDI5LCAweDUyLCAweEVGLCAweDdBLCAweENGLCAweEIyLCAweDI4LCAweDhDLCAweENFLCAweDNELCAweDcxLAorICAgIDB4QkMsIDB4MEYsIDB4NDYsIDB4N0YsIDB4QzIsIDB4QjksIDB4ODYsIDB4ODQsIDB4OUIsIDB4NDUsIDB4MjEsIDB4OTYsIDB4MDEsIDB4MUQsIDB4RDcsIDB4MDMsCisgICAgMHg0OCwgMHhDNSwgMHhCQiwgMHg1NSwgMHgzMCwgMHgxOCwgMHg4QSwgMHhEQSwgMHhFOCwgMHhGQSwgMHg3MiwgMHg5NCwgMHhFMCwgMHhEOCwgMHgxMywgMHhGMSwKKyAgICAweDhCLCAweDRDLCAweEMzLCAweEQ1LCAweDZELCAweDc0LCAweDkyLCAweEQwLCAweDIxLCAweERFLCAweEFGLCAweDM4LCAweDk5LCAweEIzLCAweDdELCAweENCLAorICAgIDB4QjMsIDB4RjQsIDB4M0MsIDB4QzgsIDB4QzMsIDB4RkEsIDB4QjYsIDB4M0YsIDB4RjgsIDB4M0UsIDB4MzAsIDB4ODIsIDB4NTUsIDB4N0YsIDB4NjQsIDB4NzEsCisgICAgMHhFRSwgMHg2MiwgMHg2QiwgMHhGQSwgMHgxRCwgMHg5NywgMHg3RSwgMHhCQywgMHg4OSwgMHhDRCwgMHgzQywgMHg3MiwgMHg2QSwgMHhFQSwgMHhFMCwgMHhERSwKKyAgICAweEI3LCAweDEwLCAweDYyLCAweDE2LCAweDAwLCAweDJBLCAweEQ5LCAweDAyLCAweDQ3LCAweDUxLCAweEFBLCAweDU2LCAweDhELCAweDFGLCAweEM5LCAweDA0LAorICAgIDB4MzMsIDB4ODcsIDB4RTMsIDB4MUYsIDB4MEYsIDB4MTksIDB4QkMsIDB4NTQsIDB4MTcsIDB4OUEsIDB4M0EsIDB4ODgsIDB4NDgsIDB4ODEsIDB4QzAsIDB4NjgsCisgICAgMHhDNywgMHg5NiwgMHhCQiwgMHhCNywgMHgyNCwgMHg3QiwgMHhGMiwgMHhBMCwgMHg0NSwgMHg2NSwgMHgzMCwgMHg0QSwgMHhEQSwgMHg3MCwgMHg3OCwgMHg3NywKKyAgICAweEM4LCAweDBFLCAweDk4LCAweDdCLCAweDRFLCAweEMzLCAweDA0LCAweDQxLCAweERELCAweDlCLCAweEEzLCAweEVELCAweDFBLCAweDg4LCAweDFFLCAweDJBLAorICAgIDB4Q0YsIDB4OEEsIDB4QjcsIDB4RDcsIDB4ODYsIDB4MkYsIDB4QzEsIDB4QkYsIDB4NjcsIDB4QzIsIDB4NjUsIDB4NzAsIDB4REMsIDB4NzcsIDB4N0IsIDB4QzUsCisgICAgMHhGQSwgMHgwMywgMHg1NywgMHg0MiwgMHhBRCwgMHg5MiwgMHhDRiwgMHhDQiwgMHhEMCwgMHgxMSwgMHgxMSwgMHg5RSwgMHg5MywgMHg1QiwgMHhDQiwgMHg3OCwKKyAgICAweEMyLCAweDU1LCAweEQ2LCAweEFELCAweDk1LCAweDNBLCAweDQ1LCAweDMyLCAweDQyLCAweDhGLCAweEIxLCAweDE4LCAweDE3LCAweEFGLCAweEYyLCAweDk0LAorICAgIDB4MjEsIDB4MDgsIDB4NTgsIDB4MTMsIDB4MTksIDB4OEYsIDB4MTIsIDB4NTEsIDB4QjcsIDB4OTUsIDB4MjYsIDB4OEUsIDB4RDYsIDB4OUEsIDB4ODIsIDB4NzgsCisgICAgMHg0RCwgMHg1OCwgMHhFRiwgMHhDMCwgMHg4OSwgMHgwRCwgMHhGNywgMHhCNiwgMHhDRiwgMHg0NiwgMHgyOCwgMHgzQywgMHg5NywgMHg2OCwgMHgzMiwgMHhDNSwKKyAgICAweDA5LCAweDI1LCAweDE4LCAweEU1LCAweDlFLCAweDc0LCAweDBFLCAweDczLCAweEQ4LCAweDk4LCAweEM2LCAweDJELCAweENBLCAweEU0LCAweERGLCAweDJCLAorICAgIDB4OEEsIDB4RTEsIDB4MTUsIDB4OEQsIDB4OUYsIDB4NzAsIDB4QzAsIDB4ODEsIDB4Q0MsIDB4OUIsIDB4NEIsIDB4MEEsIDB4QTUsIDB4MEEsIDB4ODIsIDB4NUYsCisgICAgMHhDMCwgMHg1NSwgMHg3MywgMHg0NywgMHgwRCwgMHhFRSwgMHg1OSwgMHhGRCwgMHhFNSwgMHhERCwgMHg1MiwgMHg3NCwgMHhBMiwgMHgwRiwgMHhGMSwgMHhGQywKKyAgICAweEU5LCAweDE0LCAweDlDLCAweEY3LCAweDAzLCAweDNGLCAweEMzLCAweEY1LCAweEZELCAweDdELCAweDFDLCAweEI0LCAweDYyLCAweDhFLCAweERELCAweDAxLAorICAgIDB4NzcsIDB4OTYsIDB4NEQsIDB4MjMsIDB4NUQsIDB4MzcsIDB4ODgsIDB4ODMsIDB4MzMsIDB4QjAsIDB4NzUsIDB4MUUsIDB4OUQsIDB4MTUsIDB4QjUsIDB4OUYsCisgICAgMHg3OCwgMHgwNCwgMHg5MiwgMHg5RSwgMHg1NCwgMHg0MCwgMHgxMCwgMHg0RSwgMHhGRiwgMHg1QiwgMHhGMywgMHhGOCwgMHhGQywgMHg2NywgMHhFRiwgMHg4NSwKKyAgICAweDFELCAweEZGLCAweDBCLCAweDJGLCAweDVELCAweDU0LCAweEUxLCAweEVBLCAweDhDLCAweEI4LCAweDQxLCAweDcxLCAweDkxLCAweDJELCAweEVCLCAweDE0LAorICAgIDB4NzgsIDB4NzgsIDB4MjUsIDB4OTUsIDB4NzMsIDB4NzAsIDB4RUQsIDB4MjQsIDB4MkYsIDB4OTcsIDB4NTEsIDB4RTAsIDB4OEUsIDB4NkUsIDB4NDMsIDB4MTIsCisgICAgMHgyQiwgMHhDRiwgMHg4OCwgMHhERSwgMHhBMSwgMHhCMCwgMHhEQiwgMHg3RiwgMHgxQywgMHhBMSwgMHg3NSwgMHhEOSwgMHg1NCwgMHgxRCwgMHg5RSwgMHhFMSwKKyAgICAweDk1LCAweDY4LCAweDdFLCAweEQ0LCAweDQ3LCAweEQxLCAweDQyLCAweDYxLCAweDYwLCAweEQ5LCAweERFLCAweDI1LCAweEMwLCAweEQxLCAweDVBLCAweEI2LAorICAgIDB4NzIsIDB4RjUsIDB4MzcsIDB4RjgsIDB4NzMsIDB4QzIsIDB4MDUsIDB4RTMsIDB4RTEsIDB4M0IsIDB4NTUsIDB4MjksIDB4Q0IsIDB4QjAsIDB4MkQsIDB4QkQsCisgICAgMHg2QSwgMHhGOCwgMHg2NywgMHhGNiwgMHhDRCwgMHg4QiwgMHhFMywgMHg4MCwgMHg0OSwgMHgyNCwgMHgzOCwgMHgyMiwgMHgyRSwgMHhBNiwgMHg2OCwgMHgyNSwKKyAgICAweDQxLCAweENBLCAweEVGLCAweDBGLCAweDMzLCAweDUzLCAweEMwLCAweEJCLCAweDc0LCAweEVBLCAweEM2LCAweEM1LCAweEE1LCAweDVGLCAweDA3LCAweEU2LAorICAgIDB4M0IsIDB4QjQsIDB4QTAsIDB4NDMsIDB4RkMsIDB4QTksIDB4MjgsIDB4OUIsIDB4RDIsIDB4MTEsIDB4NTcsIDB4NjEsIDB4RDksIDB4NzksIDB4NjMsIDB4NUUsCisgICAgMHg3QSwgMHg3RSwgMHg5QSwgMHhERiwgMHg3NywgMHg3MCwgMHgwRSwgMHgwQywgMHhEQSwgMHhENiwgMHhDRSwgMHg2QiwgMHg5MiwgMHg3MSwgMHg5NCwgMHg5QiwKKyAgICAweDJCLCAweEVFLCAweDNCLCAweDk5LCAweENCLCAweDgyLCAweDE5LCAweDU1LCAweDBFLCAweDNFLCAweEEzLCAweEFGLCAweDFELCAweEY0LCAweDA1LCAweDFFLAorICAgIDB4NTAsIDB4OEYsIDB4MEUsIDB4NzIsIDB4NkUsIDB4MTYsIDB4MjgsIDB4RTMsIDB4RDEsIDB4QjIsIDB4NTcsIDB4QkUsIDB4NTQsIDB4OUYsIDB4RTgsIDB4N0YsCisgICAgMHhCRSwgMHhDMiwgMHgwNywgMHgyMiwgMHhEMCwgMHgzRSwgMHhFNCwgMHgxQSwgMHg1MCwgMHhCNSwgMHg3OCwgMHg0OCwgMHg5MywgMHhDMywgMHg3RSwgMHhBOCwKKyAgICAweDYyLCAweEQxLCAweDkyLCAweDI5LCAweDUyLCAweDcwLCAweEM1LCAweDYyLCAweDVGLCAweDQ0LCAweEU4LCAweEQ1LCAweDI3LCAweDVBLCAweDA3LCAweEJFLAorICAgIDB4RTIsIDB4MDEsIDB4Q0IsIDB4OUYsIDB4RkYsIDB4RDQsIDB4MDIsIDB4MTUsIDB4RDgsIDB4OUUsIDB4QjYsIDB4MTksIDB4NUEsIDB4OTQsIDB4MkMsIDB4NzQsCisgICAgMHhDOSwgMHhFRSwgMHgwQiwgMHgwRCwgMHg1NywgMHgzMiwgMHgwRSwgMHgzQywgMHg3NSwgMHhDMywgMHhFRSwgMHhDNCwgMHg0OCwgMHgxMywgMHhCMywgMHhEMSwKKyAgICAweDVGLCAweEI0LCAweEFBLCAweEU0LCAweDZGLCAweEU5LCAweDk4LCAweEQ4LCAweDAyLCAweEY0LCAweDAwLCAweEY1LCAweEE1LCAweDUyLCAweEVELCAweDI3LAorICAgIDB4M0UsIDB4NDAsIDB4QjEsIDB4ODQsIDB4ODEsIDB4M0UsIDB4NzksIDB4RjAsIDB4RjQsIDB4MDksIDB4MzQsIDB4MzYsIDB4MDEsIDB4RjMsIDB4RDUsIDB4NUQsCisgICAgMHg2OCwgMHhFOCwgMHhFMCwgMHhFRiwgMHgzNiwgMHhBNiwgMHg2NywgMHhCQSwgMHhENywgMHhFMiwgMHhDNywgMHgwNiwgMHg2QSwgMHg0MywgMHhDRCwgMHhDNSwKKyAgICAweEQyLCAweDc4LCAweDQ1LCAweDhBLCAweEU4LCAweDhELCAweDVGLCAweDQxLCAweDEwLCAweENBLCAweDM4LCAweDhCLCAweDZELCAweDkxLCAweEYxLCAweDA1LAorICAgIDB4MDYsIDB4REUsIDB4NTEsIDB4RTgsIDB4RjksIDB4QzMsIDB4NjgsIDB4RUUsIDB4MkQsIDB4NDgsIDB4MDksIDB4NTgsIDB4MkUsIDB4MDgsIDB4MTgsIDB4MEIsCisgICAgMHhEMywgMHg2NCwgMHg2QiwgMHhEMywgMHhCMywgMHhDNCwgMHg2NiwgMHhCNywgMHgyOSwgMHg0QiwgMHhEQiwgMHg0NywgMHg0MCwgMHhCMiwgMHhDNywgMHhCRCwKKyAgICAweDQ4LCAweDIxLCAweEEwLCAweENGLCAweEJDLCAweDIzLCAweEExLCAweDMxLCAweDQyLCAweDQ4LCAweDNFLCAweEIyLCAweEFGLCAweDZGLCAweDI1LCAweDk1LAorICAgIDB4ODksIDB4Q0MsIDB4OEYsIDB4QzAsIDB4NEYsIDB4QTYsIDB4MzcsIDB4Q0UsIDB4MEEsIDB4RjcsIDB4RjUsIDB4OTMsIDB4QkUsIDB4OTgsIDB4NUUsIDB4NUMsCisgICAgMHgzNywgMHgyQiwgMHhCRCwgMHgxNCwgMHhEMywgMHhGNywgMHgxRiwgMHgzOCwgMHgyNywgMHhBOCwgMHhEMSwgMHg1NSwgMHgxOCwgMHhERCwgMHgxNiwgMHhGMSwKKyAgICAweDNCLCAweEMxLCAweDIwLCAweDc1LCAweDIxLCAweDMwLCAweDBCLCAweEMzLCAweEMxLCAweEQ5LCAweDc4LCAweDlFLCAweDdBLCAweERELCAweEQwLCAweDM2LAorICAgIDB4RUYsIDB4OTcsIDB4RkMsIDB4NjEsIDB4NDUsIDB4OUIsIDB4NDksIDB4OEQsIDB4NzMsIDB4NzAsIDB4QzUsIDB4RUMsIDB4QjAsIDB4NDUsIDB4NzgsIDB4MDksCisgICAgMHg4NSwgMHg0MiwgMHg2OCwgMHg5RiwgMHg3RiwgMHg1MCwgMHgzNSwgMHhFNCwgMHgyQSwgMHg1RiwgMHhFQiwgMHgzMCwgMHhCNSwgMHgwMSwgMHgwRiwgMHg1QiwKKyAgICAweDJCLCAweDQ4LCAweEFFLCAweEQ0LCAweDQxLCAweDAwLCAweDY5LCAweDU4LCAweDdELCAweENBLCAweDIzLCAweDBCLCAweEMwLCAweDMyLCAweERDLCAweDU0LAorICAgIDB4QkEsIDB4MjYsIDB4MjIsIDB4QjUsIDB4QjEsIDB4REIsIDB4RjksIDB4NUUsIDB4ODEsIDB4NkUsIDB4NDgsIDB4QjgsIDB4NzAsIDB4NjYsIDB4QUEsIDB4N0UsCisgICAgMHg2QiwgMHg0MiwgMHhCNCwgMHg1MSwgMHgyNSwgMHhCNSwgMHgwRCwgMHgxQiwgMHg0NSwgMHg0QiwgMHg2QywgMHgzMSwgMHg0NSwgMHhBMywgMHg5MSwgMHg1NiwKKyAgICAweDE4LCAweDJFLCAweDM0LCAweDFBLCAweDY3LCAweDg3LCAweEE4LCAweEM5LCAweDZCLCAweDcyLCAweEQ4LCAweEU1LCAweDkxLCAweDJELCAweDcxLCAweEQ4LAorICAgIDB4QzgsIDB4QTQsIDB4OTUsIDB4QjEsIDB4RkQsIDB4RjgsIDB4MEYsIDB4RUEsIDB4MDgsIDB4NEYsIDB4MTEsIDB4MkEsIDB4MzksIDB4RTcsIDB4RjYsIDB4NTAsCisgICAgMHhDQywgMHhGNywgMHg2NCwgMHhBMSwgMHg2NiwgMHhFNywgMHhBOSwgMHhERCwgMHg0OSwgMHhBQiwgMHhCRiwgMHg1QiwgMHg5OSwgMHgxNCwgMHhFMiwgMHhENiwKKyAgICAweDkxLCAweDNBLCAweDcwLCAweDA4LCAweDY3LCAweDg3LCAweDdDLCAweEI3LCAweDc2LCAweDIxLCAweEU1LCAweDIzLCAweDMyLCAweDlGLCAweDZGLCAweDg4LAorICAgIDB4QkIsIDB4MTAsIDB4QjYsIDB4QkUsIDB4QTIsIDB4QjEsIDB4M0UsIDB4REEsIDB4NjQsIDB4NUMsIDB4MjUsIDB4MEIsIDB4MEYsIDB4OTQsIDB4MzksIDB4MEUsCisgICAgMHgyMSwgMHg5MSwgMHgwMSwgMHg2MCwgMHg4QywgMHg5QiwgMHgzRCwgMHg5RSwgMHhFQiwgMHgzQywgMHgwNSwgMHgyOCwgMHg2NiwgMHg1OCwgMHg5QSwgMHg3RCwKKyAgICAweEEzLCAweDJDLCAweDQyLCAweDEzLCAweEQ3LCAweDUyLCAweDA5LCAweDBBLCAweDEyLCAweDE0LCAweEIxLCAweDA1LCAweDRELCAweDdDLCAweEU0LCAweDA0LAorICAgIDB4MkMsIDB4QzgsIDB4OTMsIDB4OTgsIDB4QkIsIDB4OTAsIDB4N0MsIDB4REUsIDB4MzEsIDB4RDEsIDB4MjEsIDB4NUMsIDB4MjEsIDB4NzUsIDB4OTQsIDB4NjQsCisgICAgMHg2MiwgMHgzMywgMHhCOSwgMHhDRiwgMHhEMSwgMHg1QywgMHg3NywgMHhDMCwgMHhBQiwgMHgwQSwgMHhGOCwgMHgwMywgMHgwMCwgMHgzNSwgMHhBMSwgMHhFOSwKKyAgICAweDhELCAweEI1LCAweDQzLCAweDZGLCAweDk0LCAweDgyLCAweEFBLCAweENFLCAweEIzLCAweDVFLCAweDZDLCAweDEzLCAweDQ1LCAweDZGLCAweEQ1LCAweEU4LAorICAgIDB4MTIsIDB4RkEsIDB4NEMsIDB4NjgsIDB4M0QsIDB4MDQsIDB4NTcsIDB4NzcsIDB4ODcsIDB4MUQsIDB4RkMsIDB4QTYsIDB4MTksIDB4QzIsIDB4MDksIDB4NUIsCisgICAgMHg2NSwgMHhENywgMHg4NiwgMHhFMiwgMHg4RSwgMHgxNCwgMHg1MiwgMHg5MiwgMHhBNSwgMHhDOSwgMHhDQSwgMHhGRCwgMHg0MiwgMHg1NCwgMHgxMiwgMHhGMywKKyAgICAweEI5LCAweDg3LCAweDExLCAweDcxLCAweDcwLCAweDhELCAweDk4LCAweDg1LCAweEJCLCAweDkyLCAweDM2LCAweDQyLCAweDQyLCAweDRGLCAweDJELCAweERCLAorICAgIDB4OEEsIDB4NzcsIDB4MkEsIDB4OTMsIDB4OEQsIDB4RjYsIDB4ODcsIDB4NUQsIDB4OEYsIDB4NTIsIDB4OTEsIDB4NUEsIDB4NTAsIDB4QzIsIDB4OUQsIDB4RTMsCisgICAgMHg4QywgMHhBNiwgMHhEMiwgMHg0QywgMHhERiwgMHhFNiwgMHhFQywgMHhGNywgMHg2RSwgMHg0QywgMHhBRiwgMHg4MCwgMHgyOCwgMHhGMSwgMHgxQSwgMHg4MCwKKyAgICAweDI1LCAweDE1LCAweDI3LCAweEZGLCAweEIyLCAweDZDLCAweDNBLCAweDQ5LCAweEMxLCAweEY0LCAweDhGLCAweENELCAweDgyLCAweDhBLCAweEM3LCAweDlGLAorICAgIDB4M0QsIDB4MzIsIDB4NkQsIDB4REQsIDB4MzYsIDB4REIsIDB4MkYsIDB4MjYsIDB4NjAsIDB4MkYsIDB4MjEsIDB4OTEsIDB4QkMsIDB4OEMsIDB4NTMsIDB4N0MsCisgICAgMHg3NiwgMHhFRiwgMHg4RiwgMHhFNywgMHhFNiwgMHgxRCwgMHhBOSwgMHgzMiwgMHgyQywgMHgyMywgMHg4MSwgMHhGOSwgMHgwNywgMHg4OCwgMHhCMywgMHhENywKKyAgICAweEJFLCAweDgzLCAweDFBLCAweEU0LCAweDAyLCAweDVBLCAweDI5LCAweDcyLCAweDczLCAweDJBLCAweDZBLCAweEJFLCAweDU3LCAweDNBLCAweDA1LCAweDg5LAorICAgIDB4RDEsIDB4RDgsIDB4MjYsIDB4OUIsIDB4Q0YsIDB4MDEsIDB4OUYsIDB4QTQsIDB4QUIsIDB4QzEsIDB4NTMsIDB4NjIsIDB4ODMsIDB4RTksIDB4M0QsIDB4RTUsCisgICAgMHg3QywgMHhBNCwgMHgyQSwgMHg5OCwgMHg5NSwgMHg1NywgMHgxOSwgMHg0NSwgMHhFMywgMHg1NCwgMHg0MywgMHhENCwgMHgzOSwgMHg1MSwgMHgzQiwgMHgyNywKKyAgICAweDhFLCAweEI5LCAweDMzLCAweDkwLCAweEVGLCAweDBFLCAweEFELCAweEQyLCAweEU2LCAweDdBLCAweDJBLCAweDAwLCAweEVCLCAweDg0LCAweDNDLCAweEU4LAorICAgIDB4OTcsIDB4MUYsIDB4MEEsIDB4QUIsIDB4NTYsIDB4MEYsIDB4OUQsIDB4QjcsIDB4RDEsIDB4NjcsIDB4NjQsIDB4MjQsIDB4RjksIDB4ODksIDB4RTEsIDB4QjYsCisgICAgMHgxQiwgMHhFRSwgMHhCNywgMHhBOCwgMHhERCwgMHgwMywgMHg0MCwgMHhCMCwgMHhFQiwgMHgyRCwgMHgyOSwgMHg1MywgMHg4MSwgMHg4QiwgMHgwQywgMHg2NywKKyAgICAweDUzLCAweDVFLCAweEQzLCAweEQ1LCAweEM1LCAweEU2LCAweDdDLCAweDEyLCAweEU2LCAweEJCLCAweDM0LCAweDI0LCAweEYxLCAweDVCLCAweDA1LCAweEJBLAorICAgIDB4NkUsIDB4MTYsIDB4QTcsIDB4QTksIDB4MzEsIDB4RkIsIDB4NDcsIDB4RTEsIDB4RkUsIDB4NjcsIDB4MDcsIDB4RjksIDB4OTYsIDB4MzQsIDB4NUEsIDB4M0UsCisgICAgMHg5NSwgMHhBRCwgMHg2NCwgMHgxNiwgMHhFOSwgMHhEOCwgMHg3MiwgMHg1OCwgMHg5MCwgMHg2NywgMHg1MiwgMHhGRSwgMHgwOCwgMHg4MywgMHgzNSwgMHhFQiwKKyAgICAweDhBLCAweDhDLCAweEYyLCAweEQwLCAweEFBLCAweDc5LCAweDQyLCAweDMzLCAweDEzLCAweDhELCAweDM0LCAweDc2LCAweEZELCAweDM5LCAweDJDLCAweEVDLAorICAgIDB4Q0EsIDB4NzQsIDB4MDcsIDB4QzEsIDB4RTIsIDB4NDcsIDB4RjQsIDB4NUMsIDB4NjUsIDB4OTksIDB4RTQsIDB4QkEsIDB4QzksIDB4NDEsIDB4QTQsIDB4NDgsCisgICAgMHg1MSwgMHhFRiwgMHg5OSwgMHg1RSwgMHg5OSwgMHg0RiwgMHg3NCwgMHg1NiwgMHg0QywgMHhBNiwgMHhGQSwgMHhDNywgMHg0QywgMHhDMiwgMHhBRCwgMHhBNCwKKyAgICAweDNDLCAweEY2LCAweEQ0LCAweDhDLCAweEI2LCAweDkxLCAweDZCLCAweEI0LCAweENFLCAweEZCLCAweDM0LCAweEY3LCAweEUzLCAweEY2LCAweDExLCAweEUyLAorICAgIDB4NTYsIDB4M0UsIDB4QTIsIDB4NjAsIDB4QTMsIDB4NDcsIDB4NTksIDB4M0UsIDB4REYsIDB4NkEsIDB4MTMsIDB4QjgsIDB4RUQsIDB4MDMsIDB4OEIsIDB4NTQsCisgICAgMHgxMiwgMHhEMSwgMHgyOSwgMHhGRCwgMHgwNiwgMHgyNiwgMHgwMywgMHhGNSwgMHgyNSwgMHg2OSwgMHgwNSwgMHg2RCwgMHg3MywgMHhFNiwgMHgxRCwgMHgyOCwKKyAgICAweEMwLCAweDZGLCAweDc1LCAweDY3LCAweENFLCAweEM0LCAweEY3LCAweDMxLCAweEJCLCAweDIxLCAweDYxLCAweEIxLCAweEM0LCAweDVELCAweDM2LCAweDUwLAorICAgIDB4RUMsIDB4QkUsIDB4MjMsIDB4RUUsIDB4NDcsIDB4NjIsIDB4ODIsIDB4NkIsIDB4RTksIDB4NzksIDB4Q0UsIDB4QUYsIDB4NzYsIDB4NkEsIDB4RDEsIDB4RkMsCisgICAgMHg3OSwgMHg1RSwgMHhFOCwgMHgxRSwgMHhEOCwgMHg4RiwgMHhGOSwgMHg2MywgMHg1RiwgMHgwOSwgMHgxQSwgMHgyMSwgMHg5MywgMHgwOSwgMHg5MCwgMHgxNSwKKyAgICAweDYyLCAweERFLCAweDY5LCAweDY1LCAweDhELCAweEEzLCAweEFDLCAweDc5LCAweDcxLCAweEExLCAweEJCLCAweEE5LCAweENGLCAweDQ1LCAweDg5LCAweDE1LAorICAgIDB4MUIsIDB4N0QsIDB4NDksIDB4MzcsIDB4NTYsIDB4MkQsIDB4NTIsIDB4RjEsIDB4NjYsIDB4OEYsIDB4MDMsIDB4QTEsIDB4RTMsIDB4OTMsIDB4OEMsIDB4QUMsCisgICAgMHhCMywgMHg3NywgMHg4OSwgMHg2OSwgMHg0MSwgMHgyMywgMHhFNCwgMHgxNywgMHhFRSwgMHg4RSwgMHg3MywgMHgwNiwgMHhFNCwgMHhEQywgMHg5NSwgMHg0OSwKKyAgICAweEE2LCAweDMwLCAweENELCAweDFCLCAweDMwLCAweDQyLCAweEQ5LCAweDA2LCAweEY5LCAweDVDLCAweDhBLCAweDUwLCAweEJCLCAweEEwLCAweEE4LCAweEVGLAorICAgIDB4RDMsIDB4QTEsIDB4ODMsIDB4RjEsIDB4QzEsIDB4NzcsIDB4NEMsIDB4NEIsIDB4N0IsIDB4Q0MsIDB4RUYsIDB4RTQsIDB4QjQsIDB4NEQsIDB4NTAsIDB4MDEsCisgICAgMHgxQiwgMHg0NCwgMHgzMywgMHhGRCwgMHhFRiwgMHhCNSwgMHgxMCwgMHg3MiwgMHg5MiwgMHgzRSwgMHg5NiwgMHg2MSwgMHhBQiwgMHgyMCwgMHg3QywgMHgzOCwKKyAgICAweENCLCAweEQ3LCAweDc5LCAweEEzLCAweDdBLCAweDM1LCAweDg3LCAweEZBLCAweEM2LCAweDVFLCAweEI4LCAweDlFLCAweDJDLCAweEU1LCAweDk2LCAweEJBLAorICAgIDB4NkUsIDB4RjEsIDB4QzMsIDB4NjMsIDB4OTIsIDB4NjUsIDB4RUUsIDB4MDUsIDB4NUIsIDB4MTMsIDB4RkEsIDB4RTgsIDB4OEIsIDB4RTcsIDB4Q0IsIDB4NzMsCisgICAgMHhCOSwgMHhDOSwgMHgwRiwgMHg2MCwgMHhDNiwgMHgzNiwgMHgxRCwgMHg4RiwgMHg5QywgMHhDMCwgMHg4MywgMHgxQSwgMHhCNCwgMHgzNCwgMHhERSwgMHhGNiwKKyAgICAweDEzLCAweDRFLCAweDU4LCAweDE1LCAweDNELCAweEQ2LCAweDIxLCAweDVGLCAweEU2LCAweDIxLCAweDI1LCAweDE1LCAweDA3LCAweEVGLCAweEQ3LCAweDA2LAorICAgIDB4NUQsIDB4OUEsIDB4NTksIDB4QzIsIDB4OUYsIDB4MkQsIDB4NUEsIDB4RTQsIDB4MjEsIDB4MTksIDB4MDIsIDB4RjIsIDB4MDEsIDB4NUUsIDB4QzIsIDB4ODAsCisgICAgMHhBQiwgMHg4RCwgMHg5NiwgMHgzOCwgMHgwRiwgMHg0MywgMHg3MSwgMHg2MSwgMHgxNywgMHg3MiwgMHgxRSwgMHgxNiwgMHgzRSwgMHg0QiwgMHhFMSwgMHhBMCwKKyAgICAweEI1LCAweDIyLCAweEZCLCAweDc0LCAweEVELCAweDRGLCAweEVGLCAweDRFLCAweDU2LCAweDhBLCAweDUyLCAweDVELCAweDc2LCAweDYwLCAweDlELCAweEUyLAorICAgIDB4OEIsIDB4QzAsIDB4RUMsIDB4RjMsIDB4MDUsIDB4MkYsIDB4NTksIDB4RTUsIDB4QzAsIDB4NjgsIDB4MDIsIDB4RTksIDB4NzcsIDB4MTcsIDB4ODYsIDB4N0QsCisgICAgMHhDNiwgMHg3MSwgMHhBNywgMHhGMSwgMHg0NCwgMHg1MCwgMHhCMywgMHhGQiwgMHhCNiwgMHgyNywgMHgyMywgMHg1NywgMHg1RSwgMHhDQSwgMHgxOCwgMHhBQSwKKyAgICAweEE3LCAweDdDLCAweENELCAweEU3LCAweEVBLCAweEI5LCAweEE5LCAweEI4LCAweEEwLCAweDk5LCAweEYwLCAweEVELCAweEYxLCAweEY4LCAweDRELCAweDExLAorICAgIDB4RkEsIDB4MDQsIDB4NzUsIDB4QTcsIDB4NDEsIDB4QzUsIDB4QjMsIDB4RkIsIDB4MzcsIDB4NDYsIDB4MTQsIDB4QkYsIDB4ODksIDB4QUIsIDB4MzMsIDB4NTUsCisgICAgMHg4NiwgMHg5MiwgMHgzNiwgMHgyRiwgMHhGNiwgMHhGMSwgMHg3QiwgMHg2MCwgMHg4RCwgMHhBOSwgMHg4NSwgMHg0OCwgMHhGNSwgMHg0OSwgMHg0NiwgMHhEOSwKKyAgICAweEIzLCAweDE4LCAweEI5LCAweDFFLCAweDNGLCAweDA5LCAweDg3LCAweDMzLCAweDIzLCAweDcyLCAweEU4LCAweDRGLCAweDQ4LCAweEM5LCAweEQ3LCAweDMwLAorICAgIDB4MUMsIDB4RjAsIDB4N0IsIDB4ODgsIDB4RjksIDB4QUUsIDB4NUMsIDB4MjMsIDB4NDIsIDB4QzgsIDB4M0QsIDB4RDQsIDB4QTQsIDB4QTksIDB4OEYsIDB4QkEsCisgICAgMHg5RSwgMHhGRCwgMHg2RiwgMHhDNywgMHgxMCwgMHg0RiwgMHhGRCwgMHhBNSwgMHhBQywgMHhBNCwgMHhCRiwgMHhEQiwgMHgxRCwgMHhGQiwgMHg2NywgMHhBQSwKKyAgICAweDQ3LCAweEUxLCAweDhFLCAweDQ3LCAweENDLCAweDUxLCAweEUzLCAweEFELCAweDgwLCAweDYzLCAweDJBLCAweDVBLCAweEVGLCAweDNCLCAweDZCLCAweDdFLAorICAgIDB4NUIsIDB4QzYsIDB4NkYsIDB4ODQsIDB4M0UsIDB4RDksIDB4QUUsIDB4M0EsIDB4N0IsIDB4MkYsIDB4RUQsIDB4MjMsIDB4NTcsIDB4NTYsIDB4NTksIDB4NUEsCisgICAgMHgzNSwgMHgxMSwgMHgwRCwgMHhGRCwgMHg0MywgMHgwNiwgMHg2QywgMHhCMywgMHgyNiwgMHhEQSwgMHhCNCwgMHhFQSwgMHg4NCwgMHg5NCwgMHhCOCwgMHg0RiwKKyAgICAweDYwLCAweEFDLCAweDNGLCAweDJFLCAweDlELCAweEYwLCAweDFCLCAweEQ1LCAweENBLCAweEY2LCAweDk3LCAweDgyLCAweDdBLCAweDQ1LCAweDc2LCAweENDLAorICAgIDB4RjIsIDB4NjMsIDB4M0UsIDB4RUQsIDB4ODAsIDB4NjMsIDB4QjIsIDB4MUUsIDB4MTgsIDB4MjEsIDB4ODUsIDB4ODQsIDB4ODksIDB4RjgsIDB4QjAsIDB4MzEsCisgICAgMHg0RiwgMHgxMiwgMHg3NiwgMHg4RSwgMHgzQiwgMHgzMiwgMHg1NCwgMHg1NywgMHg5NSwgMHgyNiwgMHgwRSwgMHhCMCwgMHgyOCwgMHg2NSwgMHhDMywgMHgzMSwKKyAgICAweDE4LCAweDVCLCAweEQxLCAweDhFLCAweDMyLCAweDUzLCAweDQwLCAweDU3LCAweEQ1LCAweDkwLCAweDE2LCAweEU2LCAweDIzLCAweEFFLCAweEFGLCAweDU5LAorICAgIDB4RDEsIDB4OEIsIDB4REMsIDB4M0QsIDB4MzQsIDB4QTUsIDB4NTYsIDB4Q0EsIDB4NjEsIDB4RjIsIDB4RUUsIDB4RjQsIDB4RDIsIDB4NjcsIDB4ODIsIDB4NTQsCisgICAgMHg1RiwgMHg1QSwgMHgwNSwgMHg5NCwgMHgyNCwgMHhERiwgMHhEOSwgMHhFMywgMHg3MiwgMHgyMCwgMHgzMCwgMHg2QywgMHg1OCwgMHgyNSwgMHg2NiwgMHgxMiwKKyAgICAweDgxLCAweDc1LCAweDQ2LCAweDUxLCAweEFCLCAweENCLCAweDBGLCAweEVDLCAweDc3LCAweDg0LCAweDNELCAweEIxLCAweEE3LCAweDRBLCAweEY1LCAweDM1LAorICAgIDB4QUYsIDB4RjIsIDB4MDEsIDB4NkMsIDB4N0YsIDB4NDIsIDB4QTksIDB4MjgsIDB4NzYsIDB4RTQsIDB4NkUsIDB4RjIsIDB4NEIsIDB4N0UsIDB4RDAsIDB4N0QsCisgICAgMHg1NywgMHgyRSwgMHgyNSwgMHg0RiwgMHg5MCwgMHg4QSwgMHg3NCwgMHhCMiwgMHg4NywgMHg0QywgMHg5QywgMHg3NSwgMHg1QSwgMHhCRSwgMHhFRiwgMHg0NiwKKyAgICAweEExLCAweDBELCAweDIwLCAweEY1LCAweDk0LCAweDdBLCAweEE3LCAweDcyLCAweDBBLCAweDZFLCAweEJDLCAweDgwLCAweDAxLCAweDE0LCAweDAyLCAweDAwLAorICAgIDB4MDAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgwRCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDBELCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MEQsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgwRCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDBELCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MEQsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgwRCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDBELCAweDYzLCAweDZDLCAweDY1LCAweDYxLCAweDcyLCAweDc0LCAweDZGLAorICAgIDB4NkQsIDB4NjEsIDB4NzIsIDB4NkIsIDB4MEQsIDB4ODAsIDB4MDMsCit9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNlcmlmLmMgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U2VyaWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2IxMmVkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNlcmlmLmMKQEAgLTAsMCArMSwyNDQyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTZXJpZkZvbnREYXRhIFsxOTQ2OV0gPSB7MHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0LCAweDIsIDB4MCwgMHgxLCAweDEsIDB4MSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NjgsIDB4NzIsIDB4NmYsIDB4NmQsIDB4NTMsIDB4NjUsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2NiwgMHg0ZiwgMHg1NCwgMHg0NiwgMHgwLCAweDEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MjYsIDB4ZjgsIDB4MTAsIDB4MCwgMHhmOCwgMHgxYywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MWQsIDB4MiwgMHhmOCwgMHgxZCwgMHgzLCAweGY4LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmYiwgMHgzYywgMHhmYiwgMHg4ZSwgMHhmYSwgMHg3YywgMHhmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4NSwgMHgxYywgMHg3LCAweDlmLCAweGYsIDB4MWMsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDExLCAweGI2LCAweDFjLCAweDQ0LCAweGEzLCAweDEyLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDEsIDB4MSwgMHg1LCAweDJmLCAweDNlLCAweDQ1LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NmYsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDQzLCAweDY4LCAweDcyLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MjAsIDB4NTMsIDB4NjUsIDB4NzIsIDB4NjksIDB4NjYsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg1NCwgMHg0NiwgMHgwLCAweDdiLCAweDIsIDB4MCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg5LCAweDAsIDB4MTEsIDB4MCwgMHgyNCwgMHgwLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0YSwgMHgwLCAweDU0LCAweDAsIDB4NjAsIDB4MCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NzEsIDB4MCwgMHg4NiwgMHgwLCAweDkxLCAweDAsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGI5LCAweDAsIDB4YzEsIDB4MCwgMHhlMiwgMHgwLCAweGZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhiLCAweDEsIDB4MWQsIDB4MSwgMHgyNSwgMHgxLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg0ZSwgMHgxLCAweDU1LCAweDEsIDB4NjgsIDB4MSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4N2YsIDB4MSwgMHg5MCwgMHgxLCAweDk0LCAweDEsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGE5LCAweDEsIDB4YjksIDB4MSwgMHhjNiwgMHgxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgxNCwgMHgyLCAweDFhLCAweDIsIDB4MzQsIDB4MiwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4NDgsIDB4MiwgMHg1OSwgMHgyLCAweDYzLCAweDIsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDg0LCAweDIsIDB4ODksIDB4MiwgMHg5MiwgMHgyLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhiNiwgMHgyLCAweGMyLCAweDIsIDB4ZTYsIDB4MiwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4ZmUsIDB4MywgMHgxMSwgMHgzLCAweDE5LCAweDMsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDIzLCAweDMsIDB4MmEsIDB4MywgMHg0OSwgMHgzLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg3MSwgMHgzLCAweDhlLCAweDMsIDB4OWMsIDB4MywgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YTgsIDB4MywgMHhjMCwgMHgzLCAweGQ4LCAweDMsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDMsIDB4ZmUsIDB4NCwgMHgyLCAweDQsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDJhLCAweDQsIDB4MzAsIDB4NCwgMHg0NCwgMHg0LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg2MiwgMHg0LCAweDY5LCAweDQsIDB4N2IsIDB4NCwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4OTgsIDB4NCwgMHhhMywgMHg0LCAweGIzLCAweDQsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGJmLCAweDQsIDB4YzUsIDB4NCwgMHhjYiwgMHg0LCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhlNywgMHg0LCAweGYxLCAweDQsIDB4ZmIsIDB4NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgxOSwgMHg1LCAweDIyLCAweDUsIDB4MjgsIDB4NSwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4M2IsIDB4NSwgMHgzZiwgMHg1LCAweDRjLCAweDUsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDVlLCAweDUsIDB4NjIsIDB4NSwgMHg2ZSwgMHg1LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg3NywgMHg1LCAweDgyLCAweDUsIDB4OGQsIDB4NSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OTksIDB4NSwgMHg5ZSwgMHg1LCAweGEzLCAweDUsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGI3LCAweDUsIDB4YzEsIDB4NSwgMHhjYiwgMHg1LCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkYywgMHg1LCAweGU1LCAweDUsIDB4ZWUsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MCwgMHg2LCAweDUsIDB4NiwgMHhjLCAweDYsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDE4LCAweDYsIDB4MWQsIDB4NiwgMHgyMSwgMHgyMSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NWYsIDB4NmMsIDB4MmEsIDB4MWQsIDB4YiwgMHgxNSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MmUsIDB4MjIsIDB4MWQsIDB4YiwgMHhlYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OTEsIDB4OWYsIDB4OTgsIDB4YTIsIDB4MWEsIDB4OGYsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg2YiwgMHg3ZCwgMHg4NCwgMHg4YiwgMHg3NCwgMHg3NCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MzYsIDB4MWQsIDB4MjYsIDB4YSwgMHgzZSwgMHg3YSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3MCwgMHgxZCwgMHg4OCwgMHg3ZiwgMHg2YywgMHg3YywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDgyLCAweDZjLCAweDc0LCAweDc1LCAweDFiLCAweDY2LCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YmEsIDB4MWYsIDB4OGQsIDB4NywgMHhhZCwgMHg5NiwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJiLCAweGJkLCAweDFlLCAweDJhLCAweGEsIDB4YiwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGZiLCAweDExLCAweGY3LCAweDNiLCAweDUsIDB4NGQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MzcsIDB4MWQsIDB4NGUsIDB4ZmIsIDB4NGQsIDB4ZmIsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHgzOSwgMHgyYiwgMHhhLCAweGIsIDB4MmQsIDB4YSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDFkLCAweDljLCAweDU3LCAweGEsIDB4MjQsIDB4MWQsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGVmLCAweGZiLCAweDI5LCAweDFlLCAweGIsIDB4NzAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFmLCAweDY5LCAweDFkLCAweGY3LCAweGYsIDB4NjEsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMCwgMHgzNCwgMHhhLCAweDMyLCAweDcxLCAweDFkLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4YSwgMHhiLCAweDRjLCAweDc0LCAweDcyLCAweDE5LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4N2EsIDB4N2YsIDB4MmUsIDB4YSwgMHhiLCAweDE1LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHhkLCAweGYyLCAweGY3LCAweGUsIDB4MjQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDYsIDB4YiwgMHg2ZCwgMHgxYiwgMHg0OSwgMHg4MiwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDFmLCAweGY3LCAweGRhLCAweGZiLCAweDI2LCAweDdkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg4OSwgMHhhYiwgMHg3ZiwgMHg0ZiwgMHgxYSwgMHhmYiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4MjEsIDB4ZDksIDB4NzMsIDB4YjQsIDB4YiwgMHgyZSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGZiLCAweDdjLCAweDUwLCAweDFkLCAweGIsIDB4MTUsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg5OSwgMHg3NiwgMHg0MSwgMHgxYSwgMHhmYiwgMHhjMiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4OGIsIDB4ZmIsIDB4NTcsIDB4ZjcsIDB4OGMsIDB4ZjcsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmNywgMHg1MCwgMHhkYiwgMHgxZSwgMHhmNywgMHg4ZiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4OWMsIDB4YTQsIDB4ZDgsIDB4OTMsIDB4MWUsIDB4YiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDc4LCAweDE1LCAweGZiLCAweDFiLCAweGU1LCAweDI0LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZjcsIDB4MWYsIDB4ZWUsIDB4ZjcsIDB4MjUsIDB4MmQsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNywgMHhmYiwgMHgxYSwgMHgzOSwgMHhmYiwgMHgxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHgxZSwgMHhlNSwgMHhiLCAweDViLCAweGEsIDB4ZjcsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg4NSwgMHhhLCAweGY3LCAweGU2LCAweDI5LCAweDFkLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHgxNiwgMHhmNywgMHg4MSwgMHg5YSwgMHg2LCAweDQ2LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4YTYsIDB4Y2QsIDB4MWEsIDB4ZjcsIDB4ZWQsIDB4NywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweGIsIDB4MmQsIDB4MWQsIDB4NGYsIDB4M2YsIDB4ZmIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHgxZCwgMHhhMCwgMHgxZSwgMHhmNywgMHgxYiwgMHg0ZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4OCwgMHhmNywgMHgyMywgMHg1LCAweGZjLCAweGE3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHhhLCAweDg2LCAweDgzLCAweDcwLCAweDc1LCAweDFlLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NzAsIDB4N2UsIDB4NzUsIDB4MWIsIDB4NjYsIDB4NmUsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhhZiwgMHg5NiwgMHhjMywgMHhmNywgMHgyYiwgMHhiZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweGEsIDB4YiwgMHg3ZCwgMHgxZCwgMHhhMSwgMHhhMSwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHgzOSwgMHgxZCwgMHg4YiwgMHhkYywgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDcsIDB4ZjcsIDB4MjQsIDB4ODksIDB4ZGUsIDB4OGEsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg5NywgMHgzYiwgMHgxOSwgMHhiLCAweGU5LCAweGY3LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4Y2IsIDB4NiwgMHhmNywgMHgxNywgMHg4MCwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDJkLCAweDFiLCAweDNiLCAweGZiLCAweDEwLCAweGIsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgzOSwgMHhhLCAweGIsIDB4YjgsIDB4ZjcsIDB4M2QsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDYsIDB4MjYsIDB4NWYsIDB4NTksIDB4NmQsIDB4ZmIsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgyOSwgMHg4YiwgMHhiLCAweDNiLCAweDFkLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxNSwgMHhiMywgMHg2LCAweGZiLCAweDI3LCAweGY3LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiLCAweGFhLCAweGIxLCAweDM3LCAweGEsIDB4YmYsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGJkLCAweGFjLCAweGIwLCAweDFlLCAweGIsIDB4OGUsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlMywgMHg5YiwgMHhiMiwgMHhiMCwgMHhjMiwgMHgxYiwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDNlLCAweDViLCAweDkyLCAweDFmLCAweGIsIDB4ZmIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDQ0LCAweDU3LCAweDFkLCAweDFmLCAweDk0LCAweDg2LCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4MWEsIDB4YiwgMHgzLCAweDk0LCAweDE2LCAweGY4LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhMywgMHhmNywgMHg0NCwgMHg1LCAweDc0LCAweDYsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg2ZSwgMHg0YSwgMHhmYiwgMHgxNywgMHgxYiwgMHhmYiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjgsIDB4NDQsIDB4ZjgsIDB4ZjUsIDB4NSwgMHg5YSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDcsIDB4NzcsIDB4ZmIsIDB4M2YsIDB4NSwgMHhhNSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4OTgsIDB4YTEsIDB4Y2QsIDB4ZjcsIDB4MjMsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg2LCAweGZjLCAweDQ5LCAweGZjLCAweGY1LCAweDUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIzLCAweGY3LCAweDksIDB4MTUsIDB4M2IsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4ODAsIDB4MTgsIDB4OTksIDB4NmMsIDB4YmIsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgxYSwgMHg3YiwgMHg2MywgMHhmYiwgMHgxZSwgMHg1NywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YTcsIDB4YTcsIDB4NzYsIDB4NTUsIDB4MWQsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGI5LCAweGY3LCAweDJjLCAweGZiLCAweDM4LCAweDk4LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OTAsIDB4OGYsIDB4OTIsIDB4OTgsIDB4NmYsIDB4YjMsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHgxZiwgMHg3NSwgMHhhOSwgMHg2NCwgMHhiNywgMHg3NSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NjUsIDB4YWQsIDB4NGQsIDB4MWQsIDB4NzIsIDB4OTksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmIsIDB4N2EsIDB4MWUsIDB4ZjcsIDB4NiwgMHg4YywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDc4LCAweGY3LCAweDMsIDB4YiwgMHg3YSwgMHhhZSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGE4LCAweGEwLCAweDdjLCAweDUyLCAweDFkLCAweDYzLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ODEsIDB4NzAsIDB4MWIsIDB4N2MsIDB4YiwgMHgzYywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4N2UsIDB4YTUsIDB4OTIsIDB4OTEsIDB4ODgsIDB4MWQsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDJhLCAweDM1LCAweGEsIDB4ZmIsIDB4ODcsIDB4NywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDdjLCAweDZlLCAweDg5LCAweDFlLCAweGIsIDB4NTEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDk4LCAweDcxLCAweDg0LCAweDgzLCAweDg3LCAweDhhLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OGEsIDB4ODcsIDB4ODgsIDB4OGEsIDB4ODksIDB4NjQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NDcsIDB4YSwgMHg4OCwgMHhhLCAweGUsIDB4MTUsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDVjLCAweDE2LCAweDQzLCAweGEsIDB4ZSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZmLCAweDc4LCAweDcsIDB4YWEsIDB4YjEsIDB4ODksIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmYiwgMHg3NiwgMHhmYiwgMHgyOCwgMHhmNywgMHg3MiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4OGMsIDB4YjksIDB4OGQsIDB4MWUsIDB4OWUsIDB4ZmIsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDEsIDB4YTgsIDB4ZTUsIDB4ZjcsIDB4OTksIDB4ZTUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDFkLCAweGIsIDB4N2IsIDB4YTAsIDB4YTAsIDB4YWUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhhYSwgMHg3MSwgMHhhNSwgMHg2ZCwgMHg2ZCwgMHhiLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YTEsIDB4YTUsIDB4YWIsIDB4MWEsIDB4YTgsIDB4NmYsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHg1ZiwgMHg1NSwgMHg3NSwgMHg0MiwgMHg2OSwgMHgxZSwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDUsIDB4YTQsIDB4OWQsIDB4OWYsIDB4YWIsIDB4YmIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHg5YSwgMHg3MywgMHg3MSwgMHg2NSwgMHg1YywgMHg3MiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDFmLCAweGUsIDB4ZTIsIDB4ODEsIDB4YzUsIDB4ZjcsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZiwgMHg3MywgMHhhMywgMHhiLCAweDc4LCAweDcsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhhMywgMHg3MCwgMHgyMCwgMHgxYSwgMHhmYiwgMHg5OCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWYsIDB4YiwgMHg3ZSwgMHgxYiwgMHg4NSwgMHg4NiwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDdlLCAweGE3LCAweDYzLCAweDlkLCAweDczLCAweDFmLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4YjIsIDB4NWYsIDB4YTEsIDB4NmQsIDB4YiwgMHhhYSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweDlkLCAweGQzLCAweDY1LCAweGEsIDB4YiwgMHg4ZCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDliLCAweDllLCAweDhhLCAweGIsIDB4MzMsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NmYsIDB4NmYsIDB4NzYsIDB4NjIsIDB4MWQsIDB4YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTEsIDB4ZjgsIDB4MjksIDB4NSwgMHg5YSwgMHhmYiwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ODgsIDB4ZmIsIDB4YSwgMHg1LCAweDlkLCAweDYsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg5OSwgMHhhZCwgMHhkNCwgMHgxYiwgMHhmNywgMHgxNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OWUsIDB4ZmMsIDB4MjksIDB4NSwgMHhiLCAweDYzLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4NmYsIDB4YWEsIDB4YTUsIDB4OWUsIDB4YTEsIDB4YTAsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEsIDB4MywgMHg5YiwgMHgxNiwgMHhmNywgMHhiMCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzYsIDB4ZGEsIDB4ZjcsIDB4NTgsIDB4ZjcsIDB4MTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhmYiwgMHgzMywgMHhmNywgMHgxLCAweGZiLCAweDg0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YTIsIDB4NzgsIDB4NiwgMHhkOCwgMHhiLCAweDUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDZhLCAweDgzLCAweDYwLCAweDhiLCAweDg2LCAweDc1LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4MzIsIDB4MWIsIDB4ZmIsIDB4NDAsIDB4ZmIsIDB4M2MsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweGZiLCAweDc0LCAweGZiLCAweDhkLCAweGY3LCAweDQxLCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzUsIDB4YiwgMHg3YiwgMHhhLCAweGY3LCAweDE3LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4NzcsIDB4ZjcsIDB4OCwgMHhiNCwgMHhmNywgMHg5NCwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ODAsIDB4MWQsIDB4ZjcsIDB4NmMsIDB4YjQsIDB4YiwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY4LCAweDM1LCAweDc3LCAweGIsIDB4ZjEsIDB4MywgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY4LCAweGFlLCAweDYsIDB4YmIsIDB4ZjcsIDB4NDIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDYsIDB4ZmIsIDB4MTcsIDB4NTIsIDB4NGIsIDB4ODcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHgxYiwgMHgzOCwgMHg3OSwgMHhiLCAweDc4LCAweDcsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg5YSwgMHg4OCwgMHhmMSwgMHhmYiwgMHgyYSwgMHhmNywgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDU0LCAweDE4LCAweGZiLCAweDM4LCAweDcsIDB4M2YsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHgyOSwgMHg4OSwgMHgxZSwgMHhiLCAweDZiLCAweGFjLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4YjMsIDB4MWIsIDB4ZjcsIDB4MWYsIDB4ZDIsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3LCAweGY3LCAweDE5LCAweDNmLCAweGRkLCAweDMyLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4NWEsIDB4NmYsIDB4YiwgMHg5ZiwgMHhkOSwgMHgxYSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDcsIDB4ZGIsIDB4YiwgMHhmNywgMHg2OSwgMHhmNywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM3LCAweGIsIDB4NzUsIDB4NmYsIDB4MWUsIDB4YiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDUsIDB4NTgsIDB4NjksIDB4NjYsIDB4NjAsIDB4NDMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHg0NiwgMHhkNywgMHhmNywgMHg3LCAweGY3LCAweDI3LCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YjAsIDB4YzAsIDB4YiwgMHgxNSwgMHg2ZiwgMHhhMiwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGE3LCAweGEyLCAweGEyLCAweGE3LCAweGE3LCAweDc0LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NmYsIDB4NzQsIDB4NzQsIDB4NmYsIDB4MWUsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDJjLCAweGQxLCAweGIsIDB4NywgMHg4OSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDhhLCAweGEzLCAweDFiLCAweGY0LCAweGNiLCAweDlkLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4MWYsIDB4OWMsIDB4OWIsIDB4YjcsIDB4YjQsIDB4ZDksIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDcsIDB4ZDIsIDB4OTcsIDB4YTIsIDB4ZDcsIDB4OTEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhmYiwgMHhhYSwgMHg3OCwgMHg3LCAweGQ1LCAweDg1LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NDEsIDB4MWEsIDB4YiwgMHgxNSwgMHhiYywgMHg2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4ZjksIDB4NDYsIDB4NSwgMHg1ZCwgMHg2LCAweGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHhmNywgMHg0OSwgMHhmNywgMHgyNiwgMHhiLCAweDcwLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4YTYsIDB4YTYsIDB4YTIsIDB4YTEsIDB4YTYsIDB4YTYsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg3MCwgMHg3MCwgMHg3NSwgMHg3NCwgMHg3MCwgMHgxZSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4N2EsIDB4NWEsIDB4N2QsIDB4NWIsIDB4NmYsIDB4MWQsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg4MiwgMHhhLCAweGIsIDB4NmYsIDB4YTEsIDB4N2QsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhhMSwgMHhhNywgMHhhNywgMHg3NCwgMHhhMiwgMHg2ZiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDc0LCAweDZmLCAweDFlLCAweGIsIDB4NmYsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHgxZCwgMHg5NSwgMHgxZCwgMHg3NCwgMHg2ZiwgMHgxZSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4YTEsIDB4N2QsIDB4MWQsIDB4OWYsIDB4YTEsIDB4YTcsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhhMSwgMHg2ZiwgMHg2ZiwgMHg3NSwgMHg2MiwgMHgxZCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4MTksIDB4N2IsIDB4NywgMHg4YywgMHhiLCAweDE1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NywgMHg2ZCwgMHhiLCAweGZiLCAweDc4LCAweGZiLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4YiwgMHhmYiwgMHgzLCAweGZiLCAweDMsIDB4MjUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDljLCAweGNmLCAweDhmLCAweDFlLCAweDllLCAweGZiLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NywgMHg2MCwgMHhhLCAweGIsIDB4ZmIsIDB4MjMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhmYiwgMHgxYSwgMHg4YiwgMHg2NiwgMHg3NiwgMHg3NywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDc4LCAweDFlLCAweGUsIDB4NmMsIDB4N2QsIDB4ODQsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg4MCwgMHgxZiwgMHhmYiwgMHgyMywgMHhiLCAweDgxLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjQsIDB4NzcsIDB4ZjcsIDB4OGMsIDB4OTAsIDB4YSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NmMsIDB4NDMsIDB4NDQsIDB4ZmIsIDB4ZiwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGZiLCAweGIsIDB4ZTIsIDB4ZjcsIDB4NjgsIDB4YiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDY5LCAweGI3LCAweDFiLCAweGE2LCAweDllLCAweDljLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4NzgsIDB4OWMsIDB4NzAsIDB4MWYsIDB4YiwgMHhjMiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGMyLCAweGMyLCAweDVlLCAweGI4LCAweDU0LCAweGIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg0NiwgMHg3NywgMHgxLCAweGIsIDB4MSwgMHhhZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YiwgMHg4ZiwgMHg3OCwgMHgxYiwgMHgyYSwgMHg2MCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDQxLCAweGMyLCAweDY2LCAweGM5LCAweDY4LCAweDFmLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhhNywgMHhhNywgMHhiLCAweDcsIDB4ZjcsIDB4MjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhkMCwgMHhmNSwgMHhhYywgMHg4ZiwgMHhhZiwgMHg4ZiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YjYsIDB4MWIsIDB4YmQsIDB4YTEsIDB4NWMsIDB4NmQsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg1OSwgMHg1OSwgMHg1MywgMHgxZiwgMHhiLCAweGY4LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NiwgMHhiLCAweDZlLCAweDg5LCAweDc2LCAweGIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxZSwgMHg3YywgMHhmNywgMHg2NCwgMHg5YSwgMHg3LCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4N2YsIDB4YiwgMHgxNSwgMHhhOCwgMHg2LCAweDljLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg4NywgMHgxZSwgMHhlLCAweGJiLCAweGY3LCAweGNhLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4NTEsIDB4ZDcsIDB4NTQsIDB4ZGMsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDUsIDB4NzYsIDB4NiwgMHg4MCwgMHg4OSwgMHg3YywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGIsIDB4ZTIsIDB4ODEsIDB4ZDAsIDB4ZjcsIDB4NjQsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDhmLCAweDhjLCAweDhlLCAweDFlLCAweGIsIDB4MWEsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHg3LCAweGIsIDB4NzYsIDB4ZjksIDB4MmEsIDB4NzcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDZmLCAweDFlLCAweGE0LCAweDdkLCAweDUsIDB4YjIsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhiLCAweGY3LCAweDYzLCAweDk4LCAweDc2LCAweGY4LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhhNywgMHhiLCAweGI2LCAweDI4LCAweGVlLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4ZWUsIDB4ZDksIDB4ZGEsIDB4NjAsIDB4YiwgMHhmYiwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDYzLCAweGFiLCAweGY4LCAweGUsIDB4YzcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDFhLCAweDg0LCAweDhlLCAweDg3LCAweDkzLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhmYiwgMHgzMCwgMHg3NiwgMHhmOSwgMHhlOSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3MywgMHhmOCwgMHg1YSwgMHg3NiwgMHhmNywgMHg4NywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YiwgMHg3MywgMHhmOCwgMHhhNCwgMHg3NiwgMHhmNywgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4YiwgMHg3MywgMHhmYiwgMHgzMCwgMHhhNCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGE0LCAweDEsIDB4YiwgMHhhOCwgMHg3MywgMHhhMywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDc0LCAweDczLCAweDZlLCAweGIsIDB4YTEsIDB4M2QsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGIsIDB4MWEsIDB4OTIsIDB4ODgsIDB4OGYsIDB4ODMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweDFmLCAweGU4LCAweGY3LCAweDFmLCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmYiwgMHg0MiwgMHg4YiwgMHhiLCAweGY3LCAweDViLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YiwgMHhhNywgMHhhNywgMHhhMCwgMHhiLCAweDEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4NiwgMHgwLCAweDY4LCAweDAsIDB4MCwgMHg5LCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg3YywgMHgwLCAweDAsIDB4NDIsIDB4MjAsIDB4MCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg2NCwgMHgwLCAweDAsIDB4YTAsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4MCwgMHgwLCAweDgzLCAweDAsIDB4MCwgMHhhYSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4YiwgMHgwLCAweDAsIDB4NmEsIDB4MCwgMHgwLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGE1LCAweDAsIDB4MCwgMHg4MCwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgwLCAweDAsIDB4OWMsIDB4MCwgMHgwLCAweGE0LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE5LCAweDAsIDB4MCwgMHg3ZCwgMHgwLCAweDAsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NzMsIDB4MCwgMHgwLCAweDcyLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDAsIDB4MCwgMHg5NiwgMHgwLCAweDAsIDB4OGYsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NzgsIDB4MCwgMHgwLCAweDllLCAweDAsIDB4MCwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhhMywgMHgwLCAweDAsIDB4N2IsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MCwgMHgwLCAweGFiLCAweDEsIDB4MCwgMHhiMCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhZCwgMHgwLCAweDAsIDB4YWYsIDB4MCwgMHgwLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGIxLCAweDAsIDB4MCwgMHhiNSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHgyLCAweDAsIDB4YjksIDB4MCwgMHgwLCAweGI2LCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDlhLCAweDAsIDB4MCwgMHhiYSwgMHgwLCAweDAsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YmIsIDB4MSwgMHgwLCAweGJmLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDAsIDB4MCwgMHhhOCwgMHgwLCAweDAsIDB4OGQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzQsIDB4MCwgMHgwLCAweGMxLCAweDIsIDB4MCwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg5ZCwgMHgwLCAweDAsIDB4OTUsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4MCwgMHgwLCAweGM4LCAweDEsIDB4MCwgMHhjZCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjYSwgMHgwLCAweDAsIDB4Y2MsIDB4MCwgMHgwLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGNlLCAweDAsIDB4MCwgMHhkMiwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHgyLCAweDAsIDB4ZDYsIDB4MCwgMHgwLCAweGQzLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE3LCAweDAsIDB4MCwgMHhkNywgMHgwLCAweDAsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4ZDgsIDB4MSwgMHgwLCAweGRjLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDAsIDB4MCwgMHg5ZiwgMHgwLCAweDAsIDB4OTMsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZTEsIDB4MCwgMHgwLCAweGRlLCAweDIsIDB4MCwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhhMiwgMHgwLCAweDAsIDB4ZTMsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4MCwgMHgwLCAweDhjLCAweDAsIDB4MCwgMHg5MiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4ZSwgMHgwLCAweDAsIDB4OTQsIDB4MCwgMHgwLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGRkLCAweDAsIDB4MCwgMHhjNiwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHgwLCAweDAsIDB4NjUsIDB4MCwgMHgwLCAweDdlLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDg4LCAweDAsIDB4MCwgMHg4MSwgMHgxLCAweDAsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4ODcsIDB4MCwgMHgwLCAweDdmLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDAsIDB4MCwgMHg2ZiwgMHgwLCAweDAsIDB4ODksIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NDEsIDB4MCwgMHgwLCAweDgsIDB4MCwgMHgwLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDY5LCAweDAsIDB4MCwgMHg3NywgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHgwLCAweDAsIDB4NzAsIDB4MSwgMHgwLCAweDc0LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc5LCAweDEsIDB4MCwgMHg2YiwgMHgxLCAweDAsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDEsIDB4ODcsIDB4MCwgMHgwLCAweDk5LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDAsIDB4MCwgMHg2ZCwgMHgxLCAweDAsIDB4ZTYsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MSwgMHgwLCAweDMsIDB4MCwgMHg1LCAweDAsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDYxLCAweDAsIDB4Y2MsIDB4MSwgMHg1MSwgMHgxLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg5NywgMHgyLCAweGFhLCAweDIsIDB4ZGQsIDB4MywgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YjgsIDB4MywgMHhkZCwgMHg0LCAweDAsIDB4NCwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MWYsIDB4NCwgMHgzNCwgMHg0LCAweDdlLCAweDQsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDMsIDB4NSwgMHg3MSwgMHg1LCAweGExLCAweDYsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDcyLCAweDYsIDB4OWIsIDB4NywgMHgxMCwgMHg3LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg5OCwgMHg3LCAweGY2LCAweDgsIDB4MWEsIDB4OCwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NWQsIDB4OCwgMHhjNSwgMHg5LCAweDdlLCAweDksIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDRhLCAweGEsIDB4N2UsIDB4YSwgMHhiNSwgMHhhLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1NCwgMHhiLCAweGMxLCAweGMsIDB4OSwgMHhjLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg1ZiwgMHhjLCAweGQzLCAweGMsIDB4ZjQsIDB4ZCwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4NjcsIDB4ZCwgMHg4ZiwgMHhkLCAweGM2LCAweGUsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGE0LCAweGUsIDB4ZmUsIDB4ZiwgMHg0NCwgMHhmLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhhMywgMHgxMCwgMHgzMCwgMHgxMCwgMHhiMCwgMHgxMCwgMHhmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDYsIDB4MTEsIDB4MjcsIDB4MTEsIDB4M2UsIDB4MTEsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHg3ZiwgMHgxMSwgMHg4ZiwgMHgxMSwgMHhhYiwgMHgxMiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4NTQsIDB4MTIsIDB4OTQsIDB4MTMsIDB4MywgMHgxMywgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDZiLCAweDE0LCAweDFhLCAweDE0LCAweDg3LCAweDE0LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZCwgMHgxNSwgMHg5MCwgMHgxNSwgMHhiMiwgMHgxNiwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDZhLCAweDE2LCAweGE3LCAweDE2LCAweGViLCAweDE3LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4YjAsIDB4MTgsIDB4MTcsIDB4MTgsIDB4NWYsIDB4MTgsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhkYiwgMHgxOSwgMHg2ZSwgMHgxOSwgMHhmNCwgMHgxYSwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDI4LCAweDFhLCAweDc5LCAweDFhLCAweDkxLCAweDFhLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MWMsIDB4MWIsIDB4NWUsIDB4MWIsIDB4ZTEsIDB4MWMsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHgxMCwgMHgxZCwgMHg5NCwgMHgxZCwgMHhhZSwgMHgxZSwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDc1LCAweDFlLCAweGNlLCAweDFmLCAweDQ0LCAweDFmLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODEsIDB4MWYsIDB4ZjksIDB4MjAsIDB4OSwgMHgyMCwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDdiLCAweDIwLCAweDk5LCAweDIwLCAweGI2LCAweDIwLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4MmYsIDB4MjEsIDB4NWUsIDB4MjEsIDB4NzEsIDB4MjEsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhjZiwgMHgyMiwgMHg4LCAweDIyLCAweDM0LCAweDIyLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4OGMsIDB4MjIsIDB4YmEsIDB4MjMsIDB4MjAsIDB4MjMsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHg1OCwgMHgyMywgMHg2YiwgMHgyMywgMHhiNywgMHgyMywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGZmLCAweDI0LCAweGIxLCAweDI1LCAweGUsIDB4MjUsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHgzYywgMHgyNSwgMHg0ZiwgMHgyNSwgMHg4MywgMHgyNSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGMxLCAweDI1LCAweGY1LCAweDI2LCAweDI2LCAweDI2LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4OTksIDB4MjYsIDB4YTEsIDB4MjYsIDB4YTksIDB4MjYsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhmMywgMHgyNywgMHgyMywgMHgyNywgMHg1YiwgMHgyNywgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDMyLCAweDI4LCAweDQ0LCAweDI4LCAweDVhLCAweDI4LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4YWMsIDB4MjgsIDB4ZjAsIDB4MjksIDB4NzIsIDB4MjksIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhmNSwgMHgyYSwgMHg2LCAweDJhLCAweDMxLCAweDJhLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4YzAsIDB4MmIsIDB4NjUsIDB4MmIsIDB4YzEsIDB4MmIsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmNiwgMHgyYywgMHhlLCAweDJjLCAweDJkLCAweDJjLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NDQsIDB4MmMsIDB4NTAsIDB4MmMsIDB4NmEsIDB4MmMsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHgyOSwgMHgyZCwgMHg1YSwgMHgyZCwgMHg5YiwgMHgyZCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGZhLCAweDJlLCAweDJlLCAweDJlLCAweDYwLCAweDJlLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4ZWMsIDB4MmUsIDB4ZmEsIDB4MmYsIDB4ZiwgMHgyZiwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDUxLCAweDJmLCAweDkwLCAweDJmLCAweGFlLCAweDJmLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4ZTgsIDB4MzAsIDB4MjIsIDB4MzAsIDB4ZGEsIDB4MzEsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhiZCwgMHgzMiwgMHgyYywgMHgzMiwgMHg2OCwgMHgzMiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweDk5LCAweDMzLCAweGMsIDB4MzMsIDB4MWIsIDB4MzMsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHg0YSwgMHgzMywgMHg1YiwgMHgzMywgMHg5MSwgMHgzMywgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweGU5LCAweDM0LCAweDQsIDB4MzQsIDB4ZCwgMHgzNCwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDM3LCAweDM0LCAweDRlLCAweDM0LCAweDZmLCAweDM0LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4YTEsIDB4MzQsIDB4ZGMsIDB4MzUsIDB4NzUsIDB4MzYsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHg1MSwgMHgzNiwgMHg4NSwgMHgzNywgMHgzYSwgMHgzNywgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDcwLCAweDM3LCAweDhiLCAweDM4LCAweDFhLCAweDM4LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4ZDIsIDB4MzksIDB4NWMsIDB4MzksIDB4ZGQsIDB4MjAsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGUsIDB4NzMsIDB4ODIsIDB4ZjUsIDB4ZjgsIDB4ZDcsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDE2LCAweGY3LCAweDAsIDB4MTQsIDB4MjAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmNywgMHg0NCwgMHgxNSwgMHg5YywgMHg2LCAweGExLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4YTIsIDB4ZjcsIDB4ZSwgMHhkOCwgMHgxYSwgMHhjYSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDVkLCAweDVmLCAweDgyLCAweDU4LCAweDRlLCAweDNkLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTAsIDB4YTEsIDB4ZmIsIDB4NGUsIDB4MWUsIDB4NWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHgxNSwgMHg2ZSwgMHhhMywgMHg3MywgMHhhOCwgMHhhOCwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGE4LCAweGE4LCAweDcxLCAweGE0LCAweDZlLCAweDZlLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NmUsIDB4MWUsIDB4ZSwgMHhiZSwgMHhmOCwgMHg1OCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg5LCAweDc3LCAweDEsIDB4ZDgsIDB4ZTAsIDB4ZGYsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweGFhLCAweGY4LCAweDQzLCAweDE1LCAweDQ0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzZCwgMHgxNiwgMHg0NCwgMHhhLCAweGUsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2ZCwgMHhiZCwgMHhmNywgMHgyMSwgMHhiYywgMHhmNywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweDhkLCAweGY4LCAweDg1LCAweDE3LCAweGRlLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NiwgMHhhZiwgMHhmNywgMHg2ZCwgMHg1LCAweGY3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2YiwgMHhmYiwgMHg2ZCwgMHg1LCAweGMxLCAweDYsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2ZCwgMHg1LCAweGY3LCAweDEsIDB4YmQsIDB4MjYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGY3LCAweDIxLCAweDUsIDB4ZjcsIDB4MywgMHhiYywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YWIsIDB4ZjcsIDB4NjEsIDB4NSwgMHg1NSwgMHg2LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjEsIDB4NSwgMHhmYiwgMHgxYywgMHg2LCAweGFhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NSwgMHg1NCwgMHg2LCAweDZiLCAweGZiLCAweDYxLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjLCAweDVhLCAweGY3LCAweDcsIDB4NiwgMHg3NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDUsIDB4ZmIsIDB4ZiwgMHg1OSwgMHhmNywgMHg3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg2MCwgMHhjOCwgMHhiZCwgMHgxNSwgMHg5ZiwgMHhmNywgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MWMsIDB4NiwgMHg3OCwgMHhmYiwgMHgyMSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg0OSwgMHg3NiwgMHhlMywgMHhhNywgMHhmOCwgMHhmNCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDc3LCAweDEyLCAweGI3LCAweDlhLCAweGY3LCAweDNmLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4OWEsIDB4MTcsIDB4YjcsIDB4YmUsIDB4MTUsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhjNywgMHg2OSwgMHhlZSwgMHgxYiwgMHgzNCwgMHhhZCwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjQsIDB4OTksIDB4ZTMsIDB4YjgsIDB4ZjcsIDB4NywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDAsIDB4NGIsIDB4YWUsIDB4ZmIsIDB4MTUsIDB4ZDUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YSwgMHg3LCAweGJlLCAweGQ1LCAweDcwLCAweGZiLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHgxZiwgMHg5YSwgMHhmNywgMHgzLCAweDYsIDB4YjIsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHg5OSwgMHg1YywgMHgxYiwgMHhjYSwgMHg2OSwgMHg0YywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTMsIDB4NTgsIDB4MzksIDB4NDQsIDB4MjksIDB4ZTIsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHg1OCwgMHgxZiwgMHhmYiwgMHhhZSwgMHg3LCAweDJkLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4ZjAsIDB4NzUsIDB4MWYsIDB4N2MsIDB4NiwgMHhmNywgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDc2LCAweDE1LCAweDEzLCAweDY0LCAweDRmLCAweGIzLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4YzAsIDB4MWEsIDB4YTEsIDB4OTEsIDB4ZGUsIDB4ZWMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhmYywgMHhmNSwgMHgxNSwgMHhmNywgMHg5ZCwgMHg3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4Y2EsIDB4NjQsIDB4YmUsIDB4NmIsIDB4NDQsIDB4MWEsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHg3YywgMHg2YSwgMHg4NSwgMHgxZSwgMHhlLCAweGY4LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4YTksIDB4NmUsIDB4NzYsIDB4ZjcsIDB4YzQsIDB4YTksIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhmNywgMHg5MSwgMHhhOSwgMHg5YywgMHg3NywgMHgxMiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGY3LCAweDI0LCAweGQzLCAweGRlLCAweGQ0LCAweGY3LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4MTMsIDB4NzcsIDB4YzAsIDB4ZjcsIDB4MzQsIDB4ODIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg3NCwgMHhmOCwgMHgyOCwgMHhmOSwgMHgyOSwgMHg2YSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MTMsIDB4YmIsIDB4YzAsIDB4ZmMsIDB4OTQsIDB4ZmIsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgzYywgMHhiNiwgMHgyNSwgMHhmMSwgMHhmMSwgMHhiNSwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweGRiLCAweDYwLCAweGYwLCAweDI3LCAweDFlLCAweDhhLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHg2MCwgMHgyNiwgMHgzYSwgMHgxZiwgMHhkNCwgMHg4YywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDk2LCAweGVmLCAweGM4LCAweDFlLCAweDhjLCAweDYsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHgyNiwgMHg1OCwgMHg1YiwgMHg4MiwgMHgyNCwgMHg0ZCwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGYwLCAweGJlLCAweDFmLCAweGY3LCAweGJmLCAweGZiLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4M2MsIDB4YjYsIDB4MjUsIDB4ZjEsIDB4ZjAsIDB4YjYsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhkYiwgMHg2MCwgMHhmMSwgMHgyNywgMHgxZSwgMHg4YSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4NjAsIDB4MjUsIDB4M2EsIDB4MWYsIDB4ZDQsIDB4OGMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg5NiwgMHhlZSwgMHhjNywgMHgxZSwgMHg4YywgMHg2LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4MjYsIDB4NTgsIDB4NWEsIDB4ODIsIDB4MjQsIDB4NGUsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhmMSwgMHhiZCwgMHgxZiwgMHhlLCAweGY4LCAweDM5LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NTcsIDB4ZDIsIDB4ZjgsIDB4NCwgMHg3NywgMHhmNywgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDEyLCAweGI1LCAweGU3LCAweGNmLCAweGRhLCAweDhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4OGIsIDB4YzAsIDB4MTMsIDB4N2YsIDB4ZjcsIDB4ZDUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHgxNSwgMHg3NywgMHhiNCwgMHg3NywgMHhiZiwgMHhiYiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGIwLCAweGE0LCAweGI0LCAweGI2LCAweGFmLCAweDY5LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4MzEsIDB4NWMsIDB4NzAsIDB4N2QsIDB4MWUsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGU2LCAweDE1LCAweDZkLCAweGE4LCAweGM3LCAweDRlLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZjUsIDB4YjcsIDB4ZjcsIDB4MSwgMHg4ZiwgMHg4YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDk2LCAweDUsIDB4NmQsIDB4NzMsIDB4NzcsIDB4NzQsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0MSwgMHg0NywgMHhkYywgMHg5OSwgMHg4MiwgMHgxZiwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJkLCAweGFmLCAweGMzLCAweGJlLCAweGIxLCAweGFmLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4YTAsIDB4ZmIsIDB4NmMsIDB4NzYsIDB4NywgMHhiMCwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDdjLCAweDY1LCAweDFhLCAweDU1LCAweDRkLCAweDNjLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MWUsIDB4NTgsIDB4YzksIDB4NWUsIDB4ZDMsIDB4NjcsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGNiLCAweGE5LCAweGU2LCAweGI3LCAweGVkLCAweDFhLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4YjcsIDB4NDIsIDB4MjYsIDB4NTcsIDB4MzYsIDB4NDMsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg2YSwgMHhhMSwgMHg0ZSwgMHgxZSwgMHgyMywgMHg0ZiwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDIzLCAweDFhLCAweGZiLCAweDE3LCAweGYzLCAweDcxLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YiwgMHhjYSwgMHhjMywgMHhhZSwgMHhiMywgMHgxZSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDE1LCAweDEzLCAweGJmLCAweDUxLCAweDQ2LCAweDVhLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MWIsIDB4NDQsIDB4NTEsIDB4Y2IsIDB4ZDgsIDB4ZTMsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhiOCwgMHhhOCwgMHgxZiwgMHhiNSwgMHgzYiwgMHhiZiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDQ1LCAweDgsIDB4ZSwgMHhmYiwgMHg0NSwgMHhmOCwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDg5LCAweDc3LCAweDEsIDB4YmIsIDB4ZTAsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGY4LCAweDQzLCAweDE1LCAweDQ0LCAweGEsIDB4ZSwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGJiLCAweGRjLCAweDMsIDB4ZjcsIDB4YmIsIDB4ZmIsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg5NywgMHg5YiwgMHg1LCAweGZiLCAweDI0LCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHhmNywgMHg2NiwgMHhmMSwgMHgxYSwgMHhmNywgMHg5MiwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweGQ1LCAweGM2LCAweDFlLCAweDgyLCAweDliLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHgyZiwgMHgyZiwgMHhmYiwgMHgyYSwgMHhmYiwgMHg0MCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDczLCAweGVhLCAweDI3LCAweGY3LCAweDJjLCAweGZiLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDkwLCAweDFkLCAweGY3LCAweDVlLCAweGRlLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhmYiwgMHgzNSwgMHgxNSwgMHg5NCwgMHg3YiwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4ZjcsIDB4MSwgMHhlNywgMHhmNywgMHgxOSwgMHhmNywgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDczLCAweDJmLCAweGY3LCAweDAsIDB4ZmIsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgwLCAweDFlLCAweDdmLCAweDdiLCAweDUsIDB4ZjcsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkLCAweDhlLCAweGZiLCAweDVlLCAweDI1LCAweDFhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4ZmIsIDB4MjcsIDB4ZmIsIDB4MzEsIDB4NzEsIDB4NzksIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY4LCAweDY1LCAweDkwLCAweDhiLCAweGY3LCAweGYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDc2LCAweGE5LCAweDc3LCAweGI3LCAweGY3LCAweDEzLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzMsIDB4YTksIDB4MTMsIDB4MmMsIDB4ZjcsIDB4ODQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHgxNSwgMHg4YywgMHg4NCwgMHg1LCAweDk0LCAweDRmLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4NmMsIDB4MWEsIDB4NzIsIDB4OWQsIDB4N2QsIDB4OWMsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhhMiwgMHg5ZSwgMHgxZSwgMHhhOSwgMHg2ZiwgMHg5OCwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDkyLCAweDcsIDB4OTIsIDB4ODgsIDB4NSwgMHg3MSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDNlLCAweGI3LCAweDFiLCAweDllLCAweDljLCAweDk3LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4YzQsIDB4YzYsIDB4NDAsIDB4NmMsIDB4M2EsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4MywgMHg5MCwgMHg1LCAweGYyLCAweGNjLCAweGM3LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4MWEsIDB4YTcsIDB4NzMsIDB4OTMsIDB4N2YsIDB4NjYsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHg2NiwgMHg0YSwgMHgxZSwgMHg4NCwgMHg4NywgMHg1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4YTUsIDB4NywgMHhiZiwgMHhhNiwgMHhiYiwgMHhhNiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDgzLCAweGE1LCAweDcxLCAweDg0LCAweDZkLCAweDhiLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NWYsIDB4YTQsIDB4N2UsIDB4M2EsIDB4MWEsIDB4N2UsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDJjLCAweDhjLCAweGMxLCAweDVlLCAweDFiLCAweDcwLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4ODQsIDB4NTEsIDB4ZTEsIDB4YTEsIDB4Y2YsIDB4NjAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg4NCwgMHg1LCAweDM3LCAweDUxLCAweDNhLCAweGFjLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ODAsIDB4OTMsIDB4NzYsIDB4YTUsIDB4YTIsIDB4OTAsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhhYywgMHgxZSwgMHgxMywgMHgyYywgMHhhNCwgMHhhNywgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGJlLCAweGFkLCAweDgsIDB4ZSwgMHhmNywgMHg2MywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDg5LCAweGIzLCAweDEsIDB4ZjcsIDB4OWEsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGE5LCAweGY3LCAweDdjLCAweDE1LCAweGY3LCAweDdjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YjUsIDB4ZjcsIDB4N2MsIDB4ZjcsIDB4N2EsIDB4YjMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHhmNywgMHg3ZSwgMHg2MSwgMHhmYiwgMHg3ZSwgMHhmYiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHgyMCwgMHg3ZiwgMHhmNywgMHg2LCAweDM4LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4ODAsIDB4ZDUsIDB4ZmIsIDB4ZSwgMHgxNSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDUsIDB4M2YsIDB4YSwgMHg3OSwgMHg2MCwgMHg1ZiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGFhLCAweDk1LCAweDFlLCAweDEzLCAweDQwLCAweDhjLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4OTQsIDB4MzgsIDB4MWQsIDB4ZSwgMHg3MywgMHhmNywgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDEsIDB4YjIsIDB4ZjcsIDB4NTYsIDB4MTUsIDB4ZjcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhmYiwgMHg4YSwgMHg2LCAweGUsIDB4MjAsIDB4ODAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDEsIDB4ZDEsIDB4ZjcsIDB4MywgMHgzLCAweGQxLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NDMsIDB4MWQsIDB4ZSwgMHgzYywgMHg5MiwgMHg3YSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweGY3LCAweGJiLCAweDMsIDB4ODMsIDB4N2QsIDB4MTUsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDkzLCAweGY5LCAweDQ2LCAweDUsIDB4NjYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4N2QsIDB4YTUsIDB4ZjksIDB4MTIsIDB4YTUsIDB4MSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweGY3LCAweDk4LCAweGViLCAweDMsIDB4ZjcsIDB4YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDE1LCAweGNmLCAweDhkLCAweGY3LCAweDhmLCAweGY3LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTQsIDB4OGQsIDB4ZmIsIDB4OGYsIDB4NDcsIDB4M2MsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4NCwgMHhmYiwgMHgxNCwgMHhmYiwgMHgxNCwgMHg4OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweGRjLCAweDFlLCAweDJiLCAweDE2LCAweGZiLCAweGQsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3NCwgMHhmNywgMHg0YywgMHhmNywgMHg0YywgMHhiNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGY3LCAweGQsIDB4ZjcsIDB4YSwgMHg2MSwgMHhmNywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRjLCAweGZiLCAweDRjLCAweDYxLCAweGZiLCAweDc3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxZSwgMHhlLCAweGEwLCAweDc2LCAweGY5LCAweDM4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHg2OSwgMHhlMSwgMHgzLCAweGY3LCAweDMsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhZiwgMHg5YSwgMHg2LCAweDQwLCAweDc3LCAweDk5LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjgsIDB4Y2UsIDB4NywgMHg4MywgMHg4ZCwgMHhmYiwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDUsIDB4N2QsIDB4NywgMHhhMSwgMHhjMywgMHg4YiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDFiLCAweGFkLCAweDhiLCAweDcxLCAweDc2LCAweDFmLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NywgMHg0MSwgMHg1ZiwgMHg3ZiwgMHg1MSwgMHg4OSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OGIsIDB4ZDcsIDB4ZjgsIDB4YTIsIDB4ZDUsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGUxLCAweDMsIDB4YTksIDB4MTYsIDB4ZjgsIDB4MWEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGY3LCAweDFkLCAweDdlLCAweDkwLCAweDUsIDB4NGMsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg4OCwgMHg2NiwgMHgxYiwgMHhmYiwgMHg3NywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZjcsIDB4NDQsIDB4NSwgMHhiNywgMHhiYSwgMHhkZiwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweDFhLCAweGY3LCAweDQsIDB4MzEsIDB4Y2YsIDB4MzAsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg1YiwgMHhmYiwgMHgyYiwgMHg2ZCwgMHgxZSwgMHhhMSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YzEsIDB4YTEsIDB4YTksIDB4ZDcsIDB4ZTYsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGE0LCAweDJmLCAweDU4LCAweDQwLCAweDYwLCAweDMxLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4MWYsIDB4ZmIsIDB4NDYsIDB4ZmIsIDB4NTEsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4YWYsIDB4ZjgsIDB4ZTYsIDB4YzcsIDB4MTIsIDB4ZjcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHg1MSwgMHhkMywgMHgxMywgMHhkMCwgMHhmNywgMHgyZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDE1LCAweGQwLCAweDhkLCAweGE0LCAweDg4LCAweGFmLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhjYiwgMHg2YSwgMHg5NywgMHgyYiwgMHg3MiwgMHgxYSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDUyLCAweDJlLCAweDZlLCAweDczLCAweDk4LCAweDk5LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OTksIDB4NzQsIDB4NzUsIDB4OWEsIDB4NzQsIDB4MWIsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg4NCwgMHg2ZiwgMHg1NywgMHhlMiwgMHg4NiwgMHhhMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGY3LCAweGMsIDB4Y2QsIDB4ZjcsIDB4MjIsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHhjNCwgMHg2MSwgMHg5ZCwgMHgxZiwgMHgxMywgMHg2MCwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGJhLCAweGI2LCAweGMxLCAweDFhLCAweGI0LCAweDcwLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTUsIDB4NDgsIDB4ZmIsIDB4MywgMHg2YywgMHhmYiwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDFlLCAweDljLCAweDg3LCAweDUsIDB4YTcsIDB4OWEsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHhlNiwgMHgxYiwgMHhkNSwgMHhhZCwgMHg1NiwgMHg1OCwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDYzLCAweDMwLCAweDZlLCAweDFmLCAweGUsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMSwgMHhjYiwgMHhmOCwgMHg1YiwgMHg3NywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZDksIDB4MywgMHg5NywgMHhmNywgMHgzMSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGZiLCAweDMxLCAweGQ4LCAweGY3LCAweDMxLCAweGYxLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4ZjgsIDB4NWIsIDB4NWYsIDB4NiwgMHhmYiwgMHhjZSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDUsIDB4YjMsIDB4MTYsIDB4ZjcsIDB4ODIsIDB4ZjcsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDhkLCAweGZiLCAweGYyLCAweDYsIDB4ZSwgMHg3ZCwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGNkLCAweGRhLCAweDEyLCAweGY3LCAweGY4LCAweGQxLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4ZjgsIDB4NzksIDB4MTUsIDB4YjUsIDB4ZTMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRlLCAweDYsIDB4OTYsIDB4OWUsIDB4OGIsIDB4OTQsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiMSwgMHhkYSwgMHg4MiwgMHg5YywgMHg1LCAweDdjLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ODAsIDB4NzEsIDB4MWIsIDB4ZmIsIDB4NjEsIDB4NiwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDg0LCAweDUsIDB4ODQsIDB4ODgsIDB4OGUsIDB4ODUsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgwLCAweDg3LCAweGY3LCAweDQ1LCAweDY5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4MWEsIDB4ZmIsIDB4ZSwgMHg0MSwgMHg1MywgMHg0YSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDliLCAweDliLCAweDc1LCAweDFlLCAweDEzLCAweGMwLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NzQsIDB4OWEsIDB4NmMsIDB4MWIsIDB4NjMsIDB4OGIsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg2NywgMHhiYSwgMHg3MywgMHhkYSwgMHgxZiwgMHgxMywgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMyLCAweGY3LCAweDIsIDB4ZjUsIDB4ZjcsIDB4MTksIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg5ZSwgMHg2MCwgMHhiZiwgMHgxZiwgMHgxMywgMHg0MCwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDJkLCAweDk5LCAweDNiLCAweDk5LCAweDgsIDB4ZSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGY3LCAweGU2LCAweGI4LCAweGY3LCAweGIyLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhlOCwgMHhmNywgMHg3NywgMHhlNSwgMHgzLCAweGY3LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZCwgMHgxNSwgMHg5ZSwgMHhmNywgMHhlLCAweGY2LCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDYsIDB4YTcsIDB4ODksIDB4YWYsIDB4MTgsIDB4ZmIsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHhmYiwgMHgzZSwgMHhmYiwgMHg0MCwgMHhmYiwgMHg1ZiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY2LCAweGYxLCAweDQwLCAweGY3LCAweGEsIDB4ZjcsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhmNywgMHgzMywgMHhkNCwgMHhmNywgMHgxYSwgMHg0NCwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDUzLCAweDY0LCAweDg2LCAweDY3LCAweDVlLCAweDFlLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjEsIDB4MTUsIDB4YzcsIDB4OTAsIDB4OWUsIDB4OTcsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhNywgMHg5ZiwgMHhiYywgMHg5NywgMHhhZCwgMHgxYiwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDMxLCAweDI0LCAweGZiLCAweDUsIDB4NjQsIDB4NTcsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg0MywgMHhjMSwgMHhmNywgMHgzYywgMHgxZiwgMHhlLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4ZTgsIDB4ZDUsIDB4MSwgMHg5ZiwgMHhmOCwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4NDAsIDB4ODMsIDB4MTUsIDB4Y2MsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGY5LCAweDIyLCAweDUsIDB4OWIsIDB4ZmMsIDB4NiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZmIsIDB4MjcsIDB4OWMsIDB4ODMsIDB4NSwgMHhiZiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGE4LCAweGNjLCAweDFiLCAweGY3LCAweDYzLCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGE3LCAweGY5LCAweGUsIDB4YTcsIDB4MTIsIDB4ZDYsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhkMSwgMHhmNywgMHg2MCwgMHhkMCwgMHg0YywgMHhkNywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweGY3LCAweDZjLCAweGY3LCAweGNjLCAweDE1LCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhiYiwgMHg2ZCwgMHg0MSwgMHgxYSwgMHg0NSwgMHg1MiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDNhLCAweDVkLCAweGNjLCAweGQ4LCAweGU2LCAweGJmLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4YTUsIDB4MWUsIDB4NzEsIDB4OWYsIDB4MTUsIDB4MzIsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg2YywgMHgzNCwgMHgxYSwgMHgzZCwgMHhjZCwgMHgzOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweGY3LCAweDNhLCAweGI2LCAweGY3LCAweDQsIDB4YmYsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHhjNSwgMHhmYiwgMHgxYSwgMHhlYiwgMHgxZSwgMHgxMywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGE4LCAweGQ3LCAweGI1LCAweGU3LCAweDFhLCAweGQ3LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4ZmIsIDB4NSwgMHgzNSwgMHgyNiwgMHg1NSwgMHgyNiwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDY5LCAweGRmLCAweDQxLCAweDFlLCAweGQ2LCAweGM0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4YTIsIDB4MmUsIDB4YzQsIDB4ZDksIDB4MWEsIDB4YmIsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhkNiwgMHhkOCwgMHhiOCwgMHg1NSwgMHg1NCwgMHgzMywgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDY1LCAweDcyLCAweDFlLCAweGUsIDB4OGIsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhiNiwgMHhmOCwgMHgxOSwgMHhhNywgMHgxLCAweGE5LCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODgsIDB4ZTgsIDB4MywgMHhjNiwgMHg3NSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDliLCAweGY3LCAweDI3LCAweGY3LCAweDUxLCAweGY3LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZGYsIDB4NzMsIDB4YzcsIDB4NjMsIDB4YmIsIDB4MWUsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg1NCwgMHhhOCwgMHg0ZSwgMHgxYiwgMHhmYiwgMHgxNywgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDIzLCAweGZiLCAweDExLCAweDFhLCAweDM4LCAweGJhLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4YmUsIDB4YmYsIDB4OTIsIDB4YjAsIDB4YjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4YSwgMHg4MywgMHg3MywgMHg1OCwgMHhmYiwgMHg3OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDYyLCAweDE5LCAweGY3LCAweGM3LCAweGY3LCAweGY5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NGEsIDB4ODIsIDB4NWIsIDB4MjAsIDB4NzYsIDB4ZWUsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg5MywgMHhiYiwgMHg5YywgMHhhZSwgMHgxZSwgMHhhZiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGE0LCAweGI2LCAweDFiLCAweGNkLCAweGFkLCAweDViLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4MWYsIDB4OWEsIDB4NTYsIDB4OGMsIDB4NTksIDB4ODksIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGUsIDB4M2MsIDB4ODAsIDB4ZjcsIDB4MywgMHhmNywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMsIDB4OGIsIDB4NzcsIDB4MSwgMHhkYywgMHhmNywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhkYywgMHhmOCwgMHgyNiwgMHgxNSwgMHg0MywgMHgxZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQsIDB4NDMsIDB4MWQsIDB4ZSwgMHgzYywgMHhmYiwgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4MjgsIDB4NzYsIDB4ZjcsIDB4OCwgMHg3NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGY3LCAweDQsIDB4MTIsIDB4ZGIsIDB4ZjcsIDB4NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZjcsIDB4MWYsIDB4MTMsIDB4OTQsIDB4ZWQsIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDk0LCAweDc4LCAweDUsIDB4MTMsIDB4NzQsIDB4YWMsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHhjYywgMHhkMSwgMHgxYSwgMHhkZiwgMHg1MCwgMHg5NywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDViLCAweDg1LCAweDU0LCAweDY2LCAweGEzLCAweDc5LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OTYsIDB4OTQsIDB4OGMsIDB4OGUsIDB4MWUsIDB4OGMsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4YywgMHg4ZCwgMHgxYiwgMHgxMywgMHgxOCwgMHgzOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4ZjgsIDB4YTEsIDB4MTUsIDB4MTMsIDB4MTAsIDB4NmMsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhhYSwgMHgxZSwgMHgxMywgMHg5OCwgMHhhYSwgMHhhNCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGFhLCAweDcyLCAweGE0LCAweDZjLCAweDZjLCAweDcyLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4MWYsIDB4ZSwgMHg4YywgMHgxZCwgMHhmOCwgMHg5MCwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGNhLCAweDMsIDB4YTcsIDB4ZjcsIDB4ODEsIDB4MTUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhmYiwgMHg4OSwgMHg1LCAweGI4LCAweDcsIDB4ZmMsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YywgMHhmOCwgMHg1MSwgMHhmNywgMHg2YiwgMHg1LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYywgMHg5MCwgMHhmYiwgMHg4YywgMHg1LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhmNywgMHhjLCAweGNkLCAweGY3LCAweDFhLCAweGNkLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MTIsIDB4MTMsIDB4YTAsIDB4YTksIDB4ZjcsIDB4ZWUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg4YywgMHhiMywgMHhmYywgMHg4YywgMHg2LCAweGZiLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmOCwgMHg4YywgMHg2LCAweDEzLCAweGMwLCAweGI2LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NywgMHhlLCAweDhjLCAweDFkLCAweDhiLCAweDMsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHgxNSwgMHhmOCwgMHg5MCwgMHhmNywgMHg4OSwgMHg1LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYywgMHg5MCwgMHhmNywgMHg4YywgMHg1LCAweDVkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1MSwgMHhmYiwgMHg2YiwgMHhmYywgMHg1MSwgMHhmYiwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHhlMiwgMHg4MywgMHhmNCwgMHhmNywgMHhmZSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYzLCAweGE5LCAweDEyLCAweGNmLCAweGJlLCAweGY3LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4MTcsIDB4ZjcsIDB4NzcsIDB4ZjcsIDB4MzgsIDB4MTUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDk5LCAweGUxLCAweGE1LCAweGIzLCAweGMyLCAweGNiLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhhZSwgMHhiOCwgMHhkMSwgMHhiZSwgMHgxYSwgMHhmMSwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGZiLCAweDQsIDB4NDYsIDB4MmQsIDB4NTYsIDB4MjYsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg2ZSwgMHhiMywgMHhhNywgMHg5NiwgMHhhMywgMHg5YywgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDk3LCAweDgyLCAweDk1LCAweDFlLCAweDgxLCAweDk3LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OTksIDB4MWEsIDB4YWMsIDB4YmUsIDB4YjEsIDB4YjUsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg0OCwgMHg0ZiwgMHg2MywgMHg3OCwgMHg0NiwgMHg3OSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDY5LCAweDNkLCAweDczLCAweDQ2LCAweDUwLCAweDFhLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHgxNSwgMHg2ZSwgMHhhMiwgMHg3NCwgMHhhOCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGEyLCAweGE4LCAweDFlLCAweDEzLCAweDgwLCAweDk0LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHhmOCwgMHhjOCwgMHg3ZCwgMHhiMiwgMHhmNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4N2YsIDB4YjcsIDB4ZjcsIDB4N2EsIDB4YjcsIDB4ZjcsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHgxMiwgMHhmNywgMHg4LCAweGRmLCAweGY3LCAweGQsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhkLCAweGIzLCAweDEzLCAweGJmLCAweGY4LCAweDFjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MTUsIDB4ZjcsIDB4ZCwgMHhlNCwgMHhkMywgMHhiYiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDc0LCAweDYxLCAweDVhLCAweDdkLCAweDYzLCAweDdlLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NGUsIDB4NzIsIDB4NmEsIDB4NmQsIDB4NmYsIDB4MWIsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhhMywgMHhjNywgMHgxZiwgMHhmNywgMHgyMiwgMHg1MiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDhhLCAweGEzLCAweDUxLCAweGNkLCAweDFiLCAweGY3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhmNywgMHgxYywgMHhmMSwgMHhmNywgMHgzZCwgMHhmYiwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEyLCAweGZiLCAweDRjLCAweGZiLCAweDVhLCAweGZiLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjUsIDB4ZmIsIDB4NmMsIDB4ZmIsIDB4MWEsIDB4ZjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDU3LCAweGY3LCAweDk5LCAweGQ5LCAweGQ5LCAweGFiLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4MWYsIDB4N2YsIDB4YTksIDB4NSwgMHg3MSwgMHg1MiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDMyLCAweDFiLCAweGZiLCAweDQyLCAweGZiLCAweDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHgyMywgMHhmNywgMHg3MiwgMHhmNywgMHgxNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4MmQsIDB4ZjcsIDB4NGIsIDB4ZjQsIDB4ZmIsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2LCAweDFmLCAweDEzLCAweGRmLCAweDM1LCAweDVhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzYSwgMHg1ZSwgMHg5MSwgMHhiYywgMHg5YSwgMHg4ZSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGY3LCAweDljLCAweDUsIDB4NDYsIDB4NiwgMHg4MCwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MTMsIDB4MzIsIDB4YTMsIDB4N2UsIDB4N2YsIDB4YTcsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgxYiwgMHg0ZCwgMHhmYiwgMHgzZSwgMHg0NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4Y2YsIDB4ODAsIDB4YTcsIDB4YzUsIDB4YjksIDB4YmYsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHgxZiwgMHhlLCAweDVjLCAweDFkLCAweDEsIDB4OWEsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YSwgMHg5ZSwgMHg2LCAweDc2LCAweDUxLCAweGE0LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4MWYsIDB4YmQsIDB4ZjcsIDB4MTksIDB4NSwgMHhmNywgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YmEsIDB4MjcsIDB4OTMsIDB4N2QsIDB4OGYsIDB4N2IsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDk2LCAweDYwLCAweDc0LCAweDY2LCAweDFiLCAweDc4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4OWUsIDB4NywgMHg3MywgMHg2OCwgMHhhMSwgMHhiOCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZiLCAweDk4LCAweGY4LCAweGUwLCAweDUsIDB4NzcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDc3LCAweGZjLCAweGFiLCAweDc4LCAweDcxLCAweDdjLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NWMsIDB4NmMsIDB4N2IsIDB4MmUsIDB4YSwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4OGIsIDB4YjAsIDB4ZjcsIDB4YjUsIDB4YjIsIDB4ZjcsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHgxMiwgMHhmNywgMHg1LCAweGYxLCAweGY3LCAweDg2LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4ZjcsIDB4NywgMHgxMywgMHhmNCwgMHg5YywgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDYsIDB4ZjcsIDB4NzIsIDB4OWYsIDB4ZjcsIDB4MWUsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHgzYiwgMHhiYiwgMHgzNCwgMHg5ZCwgMHgxZiwgMHg4ZCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjgsIDB4YjgsIDB4OTYsIDB4ZTMsIDB4YTEsIDB4ZjcsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDJmLCAweGZiLCAweDQzLCAweDk5LCAweDM0LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YWMsIDB4NzgsIDB4NiwgMHhkYSwgMHg5YywgMHg2NiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZjLCAweDg2LCAweDcsIDB4NmMsIDB4N2YsIDB4NjcsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHgxZSwgMHhmNywgMHg1YSwgMHhmNywgMHhjNywgMHgxNSwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDg2LCAweDgxLCAweGFkLCAweDFmLCAweDEzLCAweGY0LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4YmMsIDB4NmEsIDB4MzksIDB4MWEsIDB4ZmIsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDgyLCAweDQ5LCAweDUxLCAweDc5LCAweDk5LCAweGIwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTksIDB4NCwgMHhmNywgMHg3MCwgMHg3LCAweDlhLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4OWYsIDB4MWUsIDB4OTUsIDB4OTksIDB4OGMsIDB4YTAsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmOCwgMHhkMiwgMHhmMywgMHg3OCwgMHhmYiwgMHhiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYiwgMHhiLCAweDg5LCAweDZmLCAweDFmLCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHg3ZCwgMHhiNywgMHhmOCwgMHgzOSwgMHg3NywgMHhmNywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDEsIDB4YTcsIDB4ZjcsIDB4OCwgMHgzLCAweGY4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4MTUsIDB4NzcsIDB4MWQsIDB4ZjcsIDB4NTcsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweGY3LCAweDJkLCAweGY3LCAweGYsIDB4ZDMsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhhNCwgMHgxZiwgMHhhMiwgMHg2LCAweDgyLCAweGY3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4MWQsIDB4ZjcsIDB4NGMsIDB4ZTEsIDB4ZjcsIDB4MTEsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgxZiwgMHhlLCAweGY4LCAweDEsIDB4OGIsIDB4YjAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhiMCwgMHgxLCAweGYzLCAweGYxLCAweGY3LCAweGYzLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ODUsIDB4OTYsIDB4NzIsIDB4NjcsIDB4MWEsIDB4ZmMsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDZjLCAweDdmLCAweDY5LCAweDNmLCAweDg3LCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4ZDAsIDB4MTUsIDB4ZjgsIDB4N2MsIDB4NywgMHg5ZiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDhiLCAweGEsIDB4ZmIsIDB4YTgsIDB4ZmIsIDB4OGEsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHg4YywgMHgxZSwgMHg1YiwgMHg4YywgMHg3ZiwgMHg5YiwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGUsIDB4N2IsIDB4YSwgMHhmNywgMHhiNSwgMHhiNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGIxLCAweDEyLCAweGVlLCAweGYxLCAweGY3LCAweDljLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4NjIsIDB4YSwgMHg5NiwgMHhiNCwgMHgxZiwgMHhmNywgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjcsIDB4MmUsIDB4ODksIDB4ZGUsIDB4OGEsIDB4OWEsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHgzYiwgMHgxOSwgMHg2ZiwgMHhhLCAweDQ0LCAweDgwLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MzIsIDB4MWIsIDB4ZmIsIDB4MmUsIDB4ZjcsIDB4NjgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDk3LCAweDk1LCAweDMzLCAweDFkLCAweDYsIDB4MTMsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3LCAweGNhLCAweDg2LCAweGEzLCAweDcxLCAweDZiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4N2QsIDB4NywgMHg2NCwgMHg3NCwgMHg2ZSwgMHg0YiwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDk5LCAweDFkLCAweGY3LCAweDdiLCAweDc3LCAweGY3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhmNywgMHg5YSwgMHhiMSwgMHgxLCAweGVlLCAweGYxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4YTIsIDB4YjQsIDB4YTQsIDB4MywgMHg5NywgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDllLCAweDYsIDB4NDQsIDB4OGUsIDB4NzcsIDB4YTEsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmNywgMHg2NSwgMHg3LCAweGY3LCAweDI1LCAweDg5LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4YTMsIDB4ODEsIDB4OTYsIDB4MzcsIDB4MTksIDB4NmYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDgxLCAweDc5LCAweDc3LCAweDM5LCAweDFiLCAweGZiLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjgsIDB4NiwgMHhhOSwgMHg5MiwgMHg5OSwgMHhhNCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFjLCAweDRlLCAweGEsIDB4ZjcsIDB4MjMsIDB4ZmMsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2LCAweGNhLCAweDg2LCAweGEzLCAweDcxLCAweDZiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NjEsIDB4NywgMHg0NSwgMHg3ZiwgMHg3MSwgMHg0MCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY4LCAweDEsIDB4N2QsIDB4YjMsIDB4ZjcsIDB4Y2EsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhZSwgMHhiMywgMHgxLCAweGFiLCAweGY3LCAweDYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhlYywgMHgzLCAweGY4LCAweDVhLCAweGY3LCAweGU0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4ODYsIDB4OWYsIDB4N2IsIDB4NDksIDB4OTgsIDB4YSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDc0LCAweDQ3LCAweGZiLCAweDJmLCAweDIzLCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0OSwgMHhmNywgMHg5MSwgMHhmNywgMHgyNywgMHhjYSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIwLCAweGJmLCAweDI4LCAweDQzLCAweGE2LCAweDFlLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4MywgMHhmNywgMHg2NywgMHg1LCAweDc1LCAweDYsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg2YSwgMHg4NiwgMHg4MywgMHg2YiwgMHg1ZCwgMHhhYywgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDY4LCAweGZiLCAweDE2LCAweGZiLCAweDNiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZmIsIDB4ODAsIDB4ZjcsIDB4MmEsIDB4ZmIsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGY3LCAweDIsIDB4ZjcsIDB4MTksIDB4YzUsIDB4OTksIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1MywgMHg3LCAweGQyLCAweGE1LCAweDk3LCAweGI3LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OWQsIDB4ZmIsIDB4OTMsIDB4NywgMHhlLCAweDgwLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4Y2YsIDB4YjcsIDB4ZjcsIDB4YzMsIDB4NzcsIDB4MSwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweGY3LCAweGMzLCAweGYxLCAweDMsIDB4OWUsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHg5ZSwgMHg2LCAweDNkLCAweDkwLCAweDgxLCAweGIzLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4NGQsIDB4ZjcsIDB4YzMsIDB4ZmIsIDB4NGQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDg3LCAweDZiLCAweDM3LCAweDg3LCAweDFlLCAweDc4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4OWUsIDB4NywgMHgzZCwgMHg5MCwgMHg4MSwgMHhhZSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY4LCAweDM2LCAweDY3LCAweDFkLCAweGZiLCAweDRjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZjcsIDB4NGMsIDB4NjcsIDB4MWQsIDB4ZmMsIDB4MzEsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDg3LCAweDZiLCAweDM3LCAweDg0LCAweDFkLCAweDczLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjksIDB4MmEsIDB4NDIsIDB4YSwgMHhlLCAweGFiLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZSwgMHhmOCwgMHhkNCwgMHg3NywgMHgxLCAweGY3LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4MywgMHhkZSwgMHhmOSwgMHgxNywgMHgxNSwgMHhkYywgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDczLCAweDQ0LCAweDFhLCAweGZjLCAweDUzLCAweDcsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3ZCwgMHg3MywgMHg3NSwgMHg4YSwgMHhhOCwgMHhhMywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDljLCAweDg0LCAweDdlLCAweDk5LCAweDZmLCAweDFiLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4NmQsIDB4NzgsIDB4N2QsIDB4OTEsIDB4N2IsIDB4OWIsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg3ZiwgMHg5NiwgMHhhNCwgMHg3ZSwgMHhiNSwgMHgxYiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIxLCAweDhlLCAweGY3LCAweDU2LCAweDFmLCAweGY3LCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhkNSwgMHg5OSwgMHhhMCwgMHhkOSwgMHg5MCwgMHgxZSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIzLCAweDcsIDB4ZSwgMHhmOCwgMHgxLCAweDgzLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDEwLCAweGYxLCAweDMsIDB4YWQsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg5ZSwgMHg2LCAweDNkLCAweDhmLCAweDdmLCAweGE1LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4NDUsIDB4NywgMHhhNSwgMHhhMCwgMHhmNSwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YWQsIDB4NjksIDB4ZWIsIDB4MjQsIDB4NmMsIDB4MWEsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg4YSwgMHg1NiwgMHg4OSwgMHgxZSwgMHg3OCwgMHhmNywgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDcsIDB4NTIsIDB4ODksIDB4NjcsIDB4YmUsIDB4NGIsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3ZCwgMHhmNywgMHg4ZSwgMHgxOCwgMHhmNywgMHg1MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGQyLCAweGQxLCAweGEwLCAweDhlLCAweGM3LCAweDkwLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZmIsIDB4OWEsIDB4NzgsIDB4NywgMHhiYywgMHg4OSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDcwLCAweDFhLCAweDY5LCAweDZlLCAweDcwLCAweGZiLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWYsIDB4MWUsIDB4ZjcsIDB4NTcsIDB4NywgMHhkNSwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGQ5LCAweDkwLCAweDFlLCAweDllLCAweGZiLCAweGIwLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhjZiwgMHg4NiwgMHhhMSwgMHg3YSwgMHgzZCwgMHgxYSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDcsIDB4NDMsIDB4N2YsIDB4NzEsIDB4M2QsIDB4ODQsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MiwgMHg4YiwgMHhiMiwgMHhmNywgMHgxYiwgMHg3NywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDc3LCAweDEsIDB4ZjcsIDB4MTMsIDB4NWQsIDB4MWQsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHgxZiwgMHhmOCwgMHg1OSwgMHg3LCAweGRhLCAweDczLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NTksIDB4NywgMHg2OCwgMHg3NCwgMHg2YiwgMHg0YiwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY4LCAweGE4LCAweDgzLCAweGEsIDB4MSwgMHhmNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4ZjgsIDB4OWQsIDB4ZjEsIDB4MywgMHg1ZiwgMHhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4OGQsIDB4NywgMHhmNywgMHg4ZCwgMHhmYywgMHhiNiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4NiwgMHhmNywgMHg5MiwgMHhmOCwgMHhjZCwgMHg1LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NTcsIDB4NiwgMHg0ZSwgMHg3ZSwgMHg2OSwgMHgzZCwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDc4LCAweGY3LCAweGFjLCAweDllLCAweDcsIDB4NGIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg5ZSwgMHhkOCwgMHgxYSwgMHhmOCwgMHg0NiwgMHg3LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4OTEsIDB4Y2EsIDB4OTAsIDB4MWUsIDB4OWUsIDB4ZmIsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGZiLCAweDcxLCAweGZjLCAweDhkLCAweGZiLCAweDdiLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NSwgMHhmYiwgMHg1YywgMHg3OCwgMHg2LCAweGQ1LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4ODMsIDB4M2QsIDB4MWEsIDB4ZmMsIDB4MjAsIDB4NzgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjgsIDB4MSwgMHg5NSwgMHg3NiwgMHhhYiwgMHg4YSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY3LCAweDEsIDB4YjcsIDB4ZjgsIDB4MzMsIDB4YjcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg1ZiwgMHhhLCAweGY4LCAweDEwLCAweDhkLCAweDcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHgzYSwgMHhhLCAweGUsIDB4NWIsIDB4YSwgMHg4NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTQsIDB4NzAsIDB4YSwgMHhmYiwgMHgxZCwgMHg2OSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGYsIDB4NjEsIDB4MWQsIDB4ZjcsIDB4MTAsIDB4NjEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4NDQsIDB4MWQsIDB4ZDYsIDB4ZjEsIDB4ZjEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDMyLCAweDcxLCAweDFkLCAweDNhLCAweDcyLCAweDFkLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzAsIDB4MWUsIDB4ZSwgMHg5OSwgMHgxZCwgMHhmNywgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGY3LCAweGJkLCAweGIwLCAweDZkLCAweGEsIDB4YTUsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmNywgMHgzNywgMHg2NiwgMHgxZCwgMHhmNywgMHgxMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweGMwLCAweGZiLCAweDFlLCAweDFlLCAweGZiLCAweDljLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhkNCwgMHg4NCwgMHg5NiwgMHg2ZCwgMHg3NCwgMHgxYSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDhkLCAweGEsIDB4ZjcsIDB4Y2MsIDB4MTUsIDB4ZjcsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGFjLCAweDk2LCAweDk2LCAweGE5LCAweGI3LCAweGY3LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NzQsIDB4MWQsIDB4ZjgsIDB4MSwgMHhmYiwgMHg0NiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMyLCAweGEyLCAweDhiLCAweGY4LCAweGZlLCAweDhiLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhjNCwgMHhmNywgMHg2LCAweGY4LCAweDE2LCAweDlhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MywgMHg4YSwgMHgxNSwgMHhmYiwgMHgzMywgMHhmNywgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI3LCAweDc5LCAweGY3LCAweDMyLCAweDFiLCAweDllLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMiwgMHg5OSwgMHg1MywgMHhiOSwgMHgzZSwgMHhlNywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHg5OCwgMHhmNywgMHgyNCwgMHhmMywgMHhmNywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDdhLCAweGZiLCAweDJkLCAweGY3LCAweDgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhmYiwgMHgzOCwgMHhmYiwgMHgyZCwgMHhmYiwgMHg5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4ZmIsIDB4NjksIDB4ZjcsIDB4YSwgMHgyZSwgMHhlOCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDJhLCAweGY3LCAweGRmLCAweDE1LCAweGY3LCAweDc5LCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4ZjEsIDB4ZjEsIDB4ZjAsIDB4M2EsIDB4ZmIsIDB4NzksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHgyZiwgMHgzMiwgMHhmYiwgMHgzLCAweGZiLCAweDMsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHhmNywgMHg2ZiwgMHgxZSwgMHhlLCAweGY3LCAweGNhLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZjcsIDB4YjMsIDB4YjAsIDB4ZjcsIDB4YWUsIDB4YjAsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweGYxLCAweGY3LCAweDdlLCAweGY3LCAweDEsIDB4MywgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweGE5LCAweDllLCAweDYsIDB4M2IsIDB4OGYsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhjZSwgMHgxYSwgMHhmNywgMHg0ZiwgMHg3LCAweGMzLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODIsIDB4ZmIsIDB4YzgsIDB4NSwgMHhmNywgMHgzNSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NjIsIDB4OGQsIDB4NzMsIDB4OWQsIDB4NzUsIDB4YTYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHhmNywgMHg5MSwgMHgxOCwgMHhiZSwgMHg5NSwgMHhmNywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGY3LCAweDFhLCAweDFhLCAweGY3LCAweDJlLCAweGZiLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MzIsIDB4MWUsIDB4ZmIsIDB4YTgsIDB4NzgsIDB4NiwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDlhLCAweDZmLCAweDZmLCAweDFhLCAweGZjLCAweDYzLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg4NywgMHg2YSwgMHgzYSwgMHg4NiwgMHgxZSwgMHhmNywgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQ4LCAweDE1LCAweGY3LCAweDgwLCAweDcsIDB4YTgsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhjMCwgMHhiNCwgMHhmNywgMHgxNywgMHg4OCwgMHhmYiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIzLCAweGZiLCAweDJhLCAweDg5LCAweDM3LCAweDhhLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHg1YiwgMHg3ZCwgMHhhZiwgMHhmOCwgMHhmNCwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGI1LCAweGExLCAweDk2LCAweGUxLCAweGY3LCAweDc5LCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4YjUsIDB4N2QsIDB4MTUsIDB4YTEsIDB4NiwgMHg5YiwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGEwLCAweDljLCAweDlmLCAweDgwLCAweDgxLCAweGE4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjgsIDB4ODQsIDB4YTAsIDB4YTUsIDB4ODUsIDB4YWIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMywgMHhjZiwgMHhlYiwgMHhlMCwgMHhmMSwgMHgzOCwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGJjLCAweDFmLCAweDM3LCAweGJkLCAweDM3LCAweGI1LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YzksIDB4YmUsIDB4YWEsIDB4YmQsIDB4ZjQsIDB4YjgsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg5YywgMHgxZSwgMHhhNCwgMHg2LCAweDg4LCAweDg2LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4N2QsIDB4NzcsIDB4OTYsIDB4OTQsIDB4NzEsIDB4MWYsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg3NCwgMHg5MiwgMHg3MSwgMHg1NSwgMHhhLCAweDEzLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NiwgMHhlLCAweGY3LCAweDkyLCAweGEwLCAweDc2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhiNSwgMHgxLCAweGY3LCAweDkyLCAweGYxLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHgxNiwgMHhmNywgMHhiOCwgMHg5ZSwgMHg2LCAweDM3LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4YTgsIDB4Y2YsIDB4MWEsIDB4ZjgsIDB4ODksIDB4YzEsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIsIDB4YTcsIDB4NzksIDB4ZmIsIDB4MiwgMHhhMCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDYsIDB4ODUsIDB4ZjcsIDB4M2UsIDB4NSwgMHhmYywgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODUsIDB4ZmIsIDB4M2UsIDB4NSwgMHhhMywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhMSwgMHhhNiwgMHg5ZSwgMHhmNywgMHgyLCAweDFiLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4OGIsIDB4NiwgMHg0ZCwgMHg4OCwgMHg2YiwgMHgzMCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDZlLCAweGEsIDB4MSwgMHhmMywgMHhmMSwgMHhmNywgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDMsIDB4OTksIDB4ZjksIDB4MTcsIDB4MmQsIDB4MWQsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHhmYiwgMHgyNywgMHg0OSwgMHgxZCwgMHhmOCwgMHgxLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjksIDB4MzUsIDB4NzcsIDB4MTIsIDB4OWIsIDB4ZjksIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmOCwgMHg0LCAweDgwLCAweDE1LCAweDlhLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHhmOCwgMHhlOSwgMHg1LCAweDEzLCAweDYwLCAweDk3LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4YTMsIDB4YmIsIDB4OGUsIDB4OCwgMHg5ZSwgMHhmYiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDcsIDB4YjEsIDB4ODksIDB4YWUsIDB4N2UsIDB4NjIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzYSwgMHhmYywgMHgzZSwgMHg1LCAweGZiLCAweDQyLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHg3OSwgMHhiNCwgMHg5YSwgMHgxYSwgMHhhYiwgMHg5ZSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDhlLCAweDFlLCAweDllLCAweGZiLCAweDllLCAweDc4LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg4OSwgMHg5ZiwgMHg3NywgMHg5OCwgMHg2ZiwgMHg4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhkZiwgMHg5NSwgMHg3NiwgMHhmOSwgMHgzNSwgMHg3NywgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDEyLCAweDkwLCAweGZhLCAweDMzLCAweDE3LCAweGY3LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4MTUsIDB4MTMsIDB4ZjAsIDB4OWEsIDB4NiwgMHhmNywgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDNiLCAweGI2LCAweGZiLCAweDEsIDB4ZGQsIDB4ZmIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgyMywgMHgxOSwgMHg5YSwgMHg2LCAweGM2LCAweGY3LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4ZjcsIDB4NjAsIDB4ZDAsIDB4ZjcsIDB4NGUsIDB4OTksIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHhhMywgMHhiYywgMHg5MywgMHg4LCAweDllLCAweGZiLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NywgMHhhZCwgMHg4OCwgMHhhYywgMHg3ZCwgMHg2NCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDgzLCAweDZkLCAweDgzLCAweDc2LCAweDFlLCAweGZiLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkZCwgMHg1LCAweGZiLCAweDI3LCAweGY4LCAweDEwLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OWMsIDB4MWEsIDB4YWYsIDB4YmIsIDB4OTcsIDB4YWEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhmYiwgMHg5ZiwgMHg3OCwgMHg3LCAweGMwLCAweDhhLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4YWMsIDB4MzgsIDB4YWUsIDB4NDMsIDB4MTgsIDB4MjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg1LCAweGZiLCAweDI5LCAweGY4LCAweDE5LCAweDgzLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4MWEsIDB4YTUsIDB4YTEsIDB4OWIsIDB4YjgsIDB4OGQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhmYiwgMHg4OSwgMHg3OCwgMHg3LCAweGM0LCAweDg2LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4YWIsIDB4MzgsIDB4YjEsIDB4MjcsIDB4ZjUsIDB4ZmIsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhmYiwgMHgyZCwgMHg4LCAweGUsIDB4ZjgsIDB4MSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGY5LCAweDQsIDB4OWUsIDB4MSwgMHg5NSwgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDllLCAweDYsIDB4NjQsIDB4NjYsIDB4OWEsIDB4YWIsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhiMiwgMHhhMCwgMHhhNSwgMHgxZiwgMHhmNywgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZWEsIDB4ZmIsIDB4MTYsIDB4NSwgMHg5YiwgMHg3NCwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDc5LCAweDFhLCAweDZjLCAweDcwLCAweDdlLCAweDU5LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZjcsIDB4YmQsIDB4OWUsIDB4NywgMHg1NywgMHg3NywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDY0LCAweDFmLCAweGZiLCAweDU0LCAweGY3LCAweDljLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4ZjcsIDB4NDAsIDB4NSwgMHhlMiwgMHhkMSwgMHhhNSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDFiLCAweDllLCAweGZiLCAweDgyLCAweDc4LCAweDcsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg3ZiwgMHg2YywgMHg3OCwgMHg3YSwgMHg3NywgMHg3NCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZiLCAweDUsIDB4ZmIsIDB4MTQsIDB4NSwgMHhmYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjQsIDB4NzksIDB4YWMsIDB4OWYsIDB4MWEsIDB4YTksIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhiZiwgMHgxZSwgMHg5ZSwgMHhmYiwgMHhjMiwgMHg3OCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4YTAsIDB4N2EsIDB4ZmIsIDB4MmEsIDB4ZjEsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGZiLCAweDJhLCAweDUsIDB4ZmIsIDB4YWMsIDB4ZmIsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg3MCwgMHg1NCwgMHgxYiwgMHhlLCAweGY4LCAweDEsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOSwgMHgyYSwgMHg3MiwgMHhhLCAweGE2LCAweGQzLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGMsIDB4NywgMHhmNywgMHgyOCwgMHhmNywgMHg2YywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweGFjLCAweDk5LCAweGFmLCAweDhmLCAweDE5LCAweDllLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NzgsIDB4NywgMHhhYSwgMHhiMSwgMHg3ZiwgMHg3NSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZjLCAweGZiLCAweDI4LCAweGY3LCAweDY4LCAweDc1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhiOSwgMHg4ZCwgMHgxZSwgMHg5ZSwgMHhmYiwgMHhhYywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YjgsIDB4ODcsIDB4OWEsIDB4N2UsIDB4ZjEsIDB4ZmIsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHhmYiwgMHg0YSwgMHgxOCwgMHhmYiwgMHg0NCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4ODgsIDB4NmYsIDB4MjksIDB4ODksIDB4MWUsIDB4ZSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjgsIDB4ZGUsIDB4YjEsIDB4MSwgMHg5NCwgMHhmOCwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDFkLCAweGUsIDB4OTMsIDB4MWQsIDB4ZTMsIDB4ZDcsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGZiLCAweDMwLCAweDE1LCAweGY3LCAweDY3LCAweGE0LCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg1YSwgMHg4MSwgMHhiMywgMHg5NywgMHgxZiwgMHhmOSwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4OTksIDB4OTUsIDB4YTksIDB4YjgsIDB4MWUsIDB4ZGIsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2NywgMHg2LCAweGUsIDB4M2MsIDB4ZmIsIDB4MjMsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZiwgMHg3YSwgMHgxZCwgMHhmNywgMHg3ZSwgMHhmYiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGI2LCAweDYsIDB4ZmIsIDB4N2MsIDB4ZjksIDB4ZGMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDYsIDB4ZSwgMHg5MywgMHgxZCwgMHhmNywgMHgzZCwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YWQsIDB4ZmIsIDB4MTcsIDB4MTUsIDB4NzIsIDB4ZjcsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHhjNiwgMHhmYiwgMHg2NywgMHg3MiwgMHhkNywgMHg3LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4NjMsIDB4N2YsIDB4MWYsIDB4ZmQsIDB4MzQsIDB4NywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDZkLCAweDVlLCAweDFlLCAweGUsIDB4ZjcsIDB4NCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDc3LCAweDEsIDB4YTMsIDB4ZjcsIDB4YmQsIDB4MTUsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDIzLCAweGY3LCAweGI1LCAweGY3LCAweDIzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NSwgMHhjZiwgMHg2LCAweGZiLCAweDQ4LCAweGY4LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDRkLCAweDYsIDB4ZSwgMHhmYiwgMHgxMSwgMHhiZCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZjgsIDB4ODgsIDB4MywgMHg0MCwgMHg0LCAweDU5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4YmQsIDB4NywgMHhlLCAweDkyLCAweDFkLCAweDllLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MywgMHhmNywgMHg1ZSwgMHhmOCwgMHg4ZiwgMHgxNSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4MWQsIDB4ZjcsIDB4MjQsIDB4NSwgMHhhMiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDk0LCAweGEsIDB4YTYsIDB4NzksIDB4OTcsIDB4N2QsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDFkLCAweDEyLCAweGIwLCAweGUzLCAweDRhLCAweGUzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZGMsIDB4MTMsIDB4ZDQsIDB4ZjcsIDB4YjMsIDB4ZjcsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmYiwgMHgyZiwgMHg3LCAweDVkLCAweDYxLCAweDZlLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NmUsIDB4YWEsIDB4YmEsIDB4MWUsIDB4OGQsIDB4NywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGNkLCAweGY3LCAweDJiLCAweGJkLCAweDFlLCAweDhjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4MTUsIDB4NDMsIDB4OTAsIDB4YjUsIDB4OGEsIDB4MmYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGEsIDB4ZWYsIDB4ZmIsIDB4MjksIDB4MWUsIDB4MTMsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHgxZCwgMHgxMywgMHhiNCwgMHhhYSwgMHhiMSwgMHg5ZCwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGJhLCAweDgwLCAweDQzLCAweDFlLCAweDU4LCAweDcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHg0YiwgMHgzNCwgMHg1ZiwgMHgyNywgMHgxYSwgMHg0OCwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGMxLCAweGMyLCAweGMwLCAweGIzLCAweGFjLCAweGIwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4MSwgMHhhYiwgMHhmOCwgMHhiLCAweGNhLCAweGY3LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhkMCwgMHhkZiwgMHhmNywgMHg3NywgMHhlMywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmQsIDB4ZDEsIDB4MTUsIDB4ZjcsIDB4OTAsIDB4NywgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweDlkLCAweGFiLCAweGU2LCAweGFmLCAweDI0LCAweDJlLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ZmIsIDB4NSwgMHhmYiwgMHg3LCAweDcyLCAweDQ0LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MWUsIDB4ZjcsIDB4YzksIDB4NCwgMHhmNywgMHhjMiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4OGQsIDB4NmIsIDB4MWQsIDB4NmMsIDB4NmQsIDB4MWYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg3LCAweDY2LCAweGY0LCAweDcwLCAweGJkLCAweGY3LCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4ZjcsIDB4MzIsIDB4ZTUsIDB4ZjYsIDB4NTIsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQsIDB4M2YsIDB4NTYsIDB4NTEsIDB4NzQsIDB4ODUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGUyLCAweDgxLCAweGQzLCAweGY4LCAweDUsIDB4YTgsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGQ4LCAweDMsIDB4ZjgsIDB4MzAsIDB4ZjcsIDB4MjcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgxZCwgMHg5MywgMHg3OSwgMHg2ZCwgMHg5MywgMHgxZiwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDk5LCAweDczLCAweGE1LCAweDFiLCAweGE5LCAweDliLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4OWQsIDB4ODEsIDB4YWEsIDB4NmQsIDB4YTAsIDB4MWYsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg1YiwgMHg5YSwgMHg2NywgMHgxYiwgMHhmYiwgMHgwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgzOCwgMHhmYiwgMHgzOCwgMHhmYiwgMHgzMiwgMHhmNiwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweGRjLCAweGNjLCAweGI2LCAweGY3LCAweDYsIDB4YzEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDgxLCAweGJmLCAweGY4LCAweDFhLCAweGE3LCAweGY3LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhhNiwgMHhlMSwgMHhmNywgMHg3NywgMHhkZiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTgsIDB4ZjEsIDB4MTUsIDB4NjcsIDB4ODMsIDB4NjQsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgxYiwgMHg0OSwgMHg0MywgMHhjMywgMHhmNywgMHgyOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGNmLCAweGJjLCAweGMzLCAweGJhLCAweGJjLCAweDZiLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4MWYsIDB4ZmIsIDB4ZTcsIDB4NCwgMHg4ZiwgMHg4OCwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGI5LCAweDliLCAweGJiLCAweDljLCAweDE5LCAweDliLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg4NiwgMHg4YiwgMHhhOSwgMHhiNCwgMHgxYSwgMHhmOCwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ODYsIDB4OGQsIDB4NWIsIDB4N2EsIDB4NWEsIDB4N2QsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHgxZCwgMHg5MywgMHg5NSwgMHg4MiwgMHhhLCAweDZjLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4MjYsIDB4NywgMHhhOCwgMHg2YSwgMHg2ZCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDFiLCAweGZiLCAweDQsIDB4MmMsIDB4ZmIsIDB4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGZiLCAweDYwLCAweGY3LCAweDIzLCAweDc3LCAweGIyLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4YjAsIDB4YTYsIDB4OWQsIDB4MWYsIDB4OGQsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4MWQsIDB4ZjYsIDB4YWYsIDB4MSwgMHhhZSwgMHhkMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweGYxLCAweDMsIDB4MzcsIDB4MWQsIDB4NTgsIDB4ZmIsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMiwgMHhkNywgMHgyZiwgMHgyYiwgMHhhLCAweDNkLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3MywgMHhhMCwgMHg3NiwgMHhmOCwgMHgzNiwgMHhhYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGE3LCAweDEsIDB4ZjIsIDB4ZGYsIDB4MywgMHg5ZiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk4LCAweDlhLCAweDYsIDB4MmYsIDB4OGQsIDB4OGEsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHgxYSwgMHhmNywgMHhjNCwgMHhmNywgMHhlLCAweGFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhmNywgMHg4LCAweDcsIDB4YjAsIDB4OTAsIDB4YmYsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg5OCwgMHg3YSwgMHg3OSwgMHg5NywgMHgxZSwgMHg3NywgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDc3LCAweGExLCAweDFiLCAweDlmLCAweGEyLCAweDk4LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4NWYsIDB4YTYsIDB4NTMsIDB4ZmIsIDB4NDgsIDB4OGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHg1MywgMHgxZiwgMHgzOCwgMHg2YiwgMHhkZSwgMHhmYiwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4M2UsIDB4N2EsIDB4NzgsIDB4NDksIDB4ODgsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZlLCAweGM0LCAweGY3LCAweDI2LCAweGQ0LCAweGU2LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGMsIDB4YjIsIDB4NmUsIDB4YTcsIDB4MSwgMHhhNywgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGRlLCAweGY3LCAweDQ1LCAweGQ4LCAweGE2LCAweGE3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNywgMHg4OSwgMHgxNSwgMHg2YywgMHg2NiwgMHg3OSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDFhLCAweDZiLCAweGExLCAweDY0LCAweGViLCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHhiOCwgMHhiZiwgMHhiOCwgMHg1YSwgMHg4YywgMHg0MSwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDJkLCAweDhlLCAweDc2LCAweDhhLCAweDViLCAweDk2LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhmNywgMHhlYywgMHgxNSwgMHgzYiwgMHhhNiwgMHgzMywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweDkwLCAweGNmLCAweGJlLCAweGJlLCAweDdhLCAweGUzLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NjQsIDB4NzUsIDB4NDcsIDB4MWUsIDB4NzEsIDB4ZmIsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3MCwgMHg5OCwgMHg3MSwgMHg5NywgMHhhNywgMHgxYSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDk2LCAweGU0LCAweGRiLCAweDFlLCAweDRmLCAweGE2LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4YzYsIDB4MWEsIDB4ZjcsIDB4ZiwgMHhlMywgMHhiNywgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGFkLCAweDgzLCAweDdjLCAweGE2LCAweDFlLCAweDgwLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OGMsIDB4OWIsIDB4MWIsIDB4ZDgsIDB4NjQsIDB4MzgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDc0LCAweDk1LCAweDc3LCAweDVhLCAweDFhLCAweGZiLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg2NCwgMHg1MywgMHgxZSwgMHg3ZSwgMHg2OCwgMHg5MCwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDc3LCAweDg4LCAweDYzLCAweDYyLCAweDc4LCAweDFhLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4ODcsIDB4YTgsIDB4MWUsIDB4ZjcsIDB4MTUsIDB4ODUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDg2LCAweDk5LCAweDQxLCAweDZmLCAweDFhLCAweGZiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzYSwgMHg1MywgMHgzMSwgMHgyNiwgMHgzZiwgMHhiNywgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweGJhLCAweGIxLCAweGJlLCAweGIxLCAweDFlLCAweGUsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOCwgMHgyYSwgMHhjMSwgMHhmNywgMHg3MywgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4ZGYsIDB4ZjcsIDB4NGUsIDB4ZGYsIDB4MywgMHg5NCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZjLCAweDlhLCAweDYsIDB4NWEsIDB4OTAsIDB4NzgsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHgxYSwgMHhmNywgMHg3YiwgMHg3LCAweGJiLCAweGI0LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4YTgsIDB4MWIsIDB4YzIsIDB4YTEsIDB4NjQsIDB4NDgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1MCwgMHg3LCAweDNlLCAweDc4LCAweDdjLCAweDVhLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4N2MsIDB4ZjcsIDB4NjgsIDB4OWEsIDB4NywgMHg1OSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDlhLCAweGQ0LCAweDFhLCAweGY3LCAweDUxLCAweDcsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhmNywgMHhiLCAweGZiLCAweGYsIDB4NGYsIDB4NWEsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg2OCwgMHgxZSwgMHg4OSwgMHhmNywgMHhjMiwgMHg2LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4NWIsIDB4N2EsIDB4NTksIDB4N2QsIDB4NWUsIDB4N2UsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg3LCAweDhjLCAweDhlLCAweDk2LCAweDgyLCAweGEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHgxZiwgMHhmYywgMHg1NywgMHg3LCAweDQyLCAweDgxLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4ODQsIDB4MWUsIDB4ZSwgMHg4ZiwgMHhhLCAweGY4LCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4MTIsIDB4ZDksIDB4ZjAsIDB4MzcsIDB4ZGYsIDB4MTMsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgxZCwgMHg1NywgMHg3OCwgMHg1NCwgMHg3OCwgMHg1NywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDdjLCAweDcsIDB4OGQsIDB4OTgsIDB4OWMsIDB4OGQsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgxMywgMHhkMCwgMHg5YiwgMHg5ZSwgMHg4MCwgMHg1MCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY4LCAweDcsIDB4M2QsIDB4N2EsIDB4N2IsIDB4NGQsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgxMywgMHhlMCwgMHhjOSwgMHhmOCwgMHhmZCwgMHg2NCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweGZiLCAweDZlLCAweGFkLCAweGY5LCAweDkxLCAweGYxLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4ZjAsIDB4MmIsIDB4ZGYsIDB4MTMsIDB4ZDAsIDB4YWIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgxNSwgMHg4ZCwgMHg5YSwgMHg5OCwgMHg4ZCwgMHg5OSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDllLCAweDgwLCAweDUwLCAweDFmLCAweGZjLCAweDUsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDhiLCAweDUyLCAweDU5LCAweDc4LCAweDgwLCAweDliLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4MWUsIDB4OTksIDB4N2YsIDB4N2UsIDB4OTksIDB4NzYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3NiwgMHg3YywgMHg3NCwgMHg2NiwgMHhiOSwgMHg3OCwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE1LCAweGI0LCAweGYwLCAweGY3LCAweDksIDB4MWYsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1ZCwgMHg4NSwgMHg4ZSwgMHg1NywgMHg3NywgMHg1NywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDdiLCAweDE5LCAweDEzLCAweGUwLCAweGM3LCAweGY3LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4MWQsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4NTYsIDB4NzcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg3NywgMHgxLCAweGRkLCAweGRmLCAweDMsIDB4OTIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3ZSwgMHg5YSwgMHg2LCAweDc3LCAweDhjLCAweDUsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg3NSwgMHg5ZCwgMHhiNCwgMHgxYSwgMHhmNywgMHgzZiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjcsIDB4MWUsIDB4ZmIsIDB4NGMsIDB4NSwgMHg5NywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDgyLCAweDg0LCAweDFhLCAweDdlLCAweDdlLCAweDg4LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NzgsIDB4N2MsIDB4ZjcsIDB4NmUsIDB4OWEsIDB4NiwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDY0LCAweDkyLCAweDU4LCAweGNiLCAweGZiLCAweDJkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4MTgsIDB4YTgsIDB4YTYsIDB4NSwgMHhmNywgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGE3LCAweDhiLCAweGMwLCAweDFiLCAweDlhLCAweGZiLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NywgMHhiNSwgMHg5MywgMHg4MywgMHg4MCwgMHg4MiwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDdjLCAweDdkLCAweDFmLCAweDYzLCAweDY5LCAweDUwLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NmMsIDB4ODksIDB4OGQsIDB4MTgsIDB4ZjgsIDB4MzQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDhkLCAweDU2LCAweDdhLCAweDU2LCAweDdkLCAweDVhLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4OTMsIDB4OTQsIDB4OGMsIDB4OTgsIDB4MWIsIDB4YjIsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg1ZSwgMHgxZiwgMHhmYywgMHg3MCwgMHg3LCAweDY5LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NDgsIDB4ODAsIDB4MWUsIDB4ZSwgMHg4ZiwgMHhhLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4NzcsIDB4MSwgMHhlZCwgMHhkZiwgMHgzLCAweDllLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODIsIDB4OWEsIDB4NiwgMHg1MSwgMHg4ZSwgMHg3YSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDFhLCAweGY4LCAweGRmLCAweDVkLCAweGEsIDB4ZmMsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDU0LCAweDc3LCAweDc0LCAweDUwLCAweDg0LCAweDFkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4YTAsIDB4NzYsIDB4ZjgsIDB4MmMsIDB4YmYsIDB4MSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGY3LCAweDRjLCAweGRmLCAweGY3LCAweDRjLCAweGRmLCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4OWIsIDB4MTYsIDB4ZjcsIDB4NzIsIDB4OWEsIDB4NiwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDZhLCAweDk4LCAweGNiLCAweDFhLCAweGY3LCAweDk0LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhiOSwgMHhjMSwgMHhkMCwgMHhiZiwgMHg5YywgMHg2NCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDYzLCAweDcsIDB4NGEsIDB4NzQsIDB4N2UsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxZSwgMHg3YywgMHhmNywgMHg3NCwgMHg5YSwgMHg3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NmMsIDB4OWMsIDB4Y2EsIDB4MWEsIDB4ZjcsIDB4OGYsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGExLCAweGFkLCAweGE2LCAweGMyLCAweDFiLCAweGQzLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4NTgsIDB4MWYsIDB4ZmIsIDB4NWQsIDB4NywgMHg0YiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDU5LCAweDg1LCAweDFlLCAweDdjLCAweGY3LCAweDZmLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg3MSwgMHg4ZCwgMHg1LCAweDVmLCAweDkyLCAweDhjLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MWEsIDB4ZjcsIDB4NGQsIDB4NywgMHhkNSwgMHg3ZCwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDNjLCAweDRlLCAweDRmLCAweDczLCAweDc2LCAweDFlLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NmMsIDB4YjUsIDB4NGEsIDB4MWIsIDB4NTUsIDB4NjIsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg1MCwgMHgxZiwgMHhkNiwgMHg3LCAweDg0LCAweDhkLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4NTksIDB4N2MsIDB4NWMsIDB4N2UsIDB4MTksIDB4N2EsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDkzLCAweDk4LCAweDUzLCAweDFkLCAweDRjLCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4NywgMHg0OCwgMHg2ZCwgMHg3ZiwgMHg2MywgMHg4YSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4MmEsIDB4YzIsIDB4NzMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGJlLCAweDFhLCAweGY3LCAweDkxLCAweDdlLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg3LCAweDUwLCAweDcxLCAweDdlLCAweDgyLCAweDFkLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4MWEsIDB4ZjcsIDB4NmYsIDB4NDYsIDB4YSwgMHhlLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4ZjgsIDB4MzUsIDB4YTcsIDB4MSwgMHhiOCwgMHhlNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweGU1LCAweDMsIDB4YTgsIDB4ZjcsIDB4N2EsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhlNSwgMHgyMiwgMHg2NSwgMHgxZCwgMHhmNywgMHgxZCwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweDJkLCAweGU0LCAweGZiLCAweDE3LCAweGZiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MjAsIDB4ZmIsIDB4ZiwgMHgxZSwgMHhlNSwgMHhhMCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweGNhLCAweGQ4LCAweGNhLCAweGU3LCAweGI2LCAweDM3LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzOSwgMHg0YywgMHg1OCwgMHhmYiwgMHhjLCAweDgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4ZDUsIDB4MWUsIDB4ZSwgMHg4ZSwgMHgxZCwgMHgxLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4ZjcsIDB4NzUsIDB4ZTEsIDB4MywgMHhmNywgMHgzMywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDVmLCAweDFkLCAweDc2LCAweDFmLCAweDg5LCAweDhkLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg3LCAweDg1LCAweDhkLCAweDViLCAweDc4LCAweDViLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4N2MsIDB4MTksIDB4N2IsIDB4NywgMHg4YywgMHg5NCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDk0LCAweDFiLCAweGFlLCAweDhlLCAweDdhLCAweDYzLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NWUsIDB4NywgMHg2MCwgMHg4NywgMHg2YywgMHg0OSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDdhLCAweGY3LCAweDg2LCAweDlkLCAweDcsIDB4NDMsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhjNSwgMHgxZiwgMHhmNywgMHg2MywgMHg0LCAweDVhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1OCwgMHg3NiwgMHhmNywgMHg2MywgMHhjOCwgMHhmOCwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDEsIDB4YTMsIDB4ZTEsIDB4ZjcsIDB4N2IsIDB4ZGYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDkwLCAweGZiLCAweDVjLCAweDE1LCAweDdhLCAweGY3LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4NywgMHg1ZSwgMHg5NSwgMHg3OSwgMHg5YiwgMHhjNywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGQxLCAweDcsIDB4ODQsIDB4OGYsIDB4NTEsIDB4NjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDY0LCAweDc0LCAweDk4LCAweDU4LCAweDFiLCAweGZiLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4ZmIsIDB4MiwgMHhmYiwgMHgxZSwgMHhmYiwgMHgyYiwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweGU0LCAweGM4LCAweGQxLCAweGI1LCAweGE5LCAweDljLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZmIsIDB4NDQsIDB4NiwgMHg1OSwgMHg3ZCwgMHg2YSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDFlLCAweGU0LCAweGY3LCAweGRiLCAweDE1LCAweDhhLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4N2IsIDB4NTcsIDB4NzgsIDB4OCwgMHg4NCwgMHg3OSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDdjLCAweDFiLCAweDMyLCAweDY0LCAweGVhLCAweGU3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhjMSwgMHhkNCwgMHhkYywgMHhlYSwgMHg4YywgMHg0NCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4NzMsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4MjEsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhjMSwgMHgxMiwgMHhkNywgMHhkZiwgMHgxMywgMHhkMCwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweDg0LCAweDlhLCAweDYsIDB4NTgsIDB4OGQsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHhkMCwgMHgxYSwgMHhmNywgMHg2YiwgMHg3LCAweGFiLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YTMsIDB4OTgsIDB4OTQsIDB4ODEsIDB4ODIsIDB4OTUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg5NSwgMHg5NSwgMHg4MywgMHg5YywgMHgxYiwgMHgxMywgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDk5LCAweDllLCAweGE0LCAweGFjLCAweDc3LCAweGEwLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjksIDB4NzcsIDB4NDQsIDB4NWMsIDB4MWYsIDB4ODksIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDg2LCAweDhkLCAweDVhLCAweDc3LCAweDU5LCAweDc5LCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4MTksIDB4N2IsIDB4NywgMHg4ZCwgMHg5NCwgMHg5NiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDUwLCAweDFmLCAweGZiLCAweDdlLCAweDcsIDB4NGIsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg1NCwgMHg4MSwgMHgxZSwgMHhlLCAweGFiLCAweDdkLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4M2MsIDB4YTIsIDB4ODcsIDB4NzcsIDB4MTIsIDB4YzksIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZSwgMHhkMSwgMHg1NywgMHg5YSwgMHgxMywgMHhkOCwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDE1LCAweDk5LCAweDkxLCAweDUsIDB4OTQsIDB4OTEsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg5NywgMHgxYiwgMHg5YywgMHg4YywgMHg5ZCwgMHg4NCwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDgsIDB4ODcsIDB4OWEsIDB4OWIsIDB4ODgsIDB4OWQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhkYywgMHhiNSwgMHhlMiwgMHhjNywgMHg2OCwgMHg2NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4ZDQsIDB4YjcsIDB4YjQsIDB4NzYsIDB4MjUsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg5YSwgMHg2LCAweDEzLCAweGI0LCAweGY3LCAweDFkLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg4NywgMHg4OCwgMHg3YywgMHg4NCwgMHg4MiwgMHgxYiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDkxLCAweDkxLCAweDdiLCAweDFmLCAweDhmLCAweDdmLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4MWQsIDB4YzUsIDB4NmEsIDB4NSwgMHgxMywgMHhkOCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDlmLCAweDczLCAweDZiLCAweDFhLCAweDUyLCAweDVjLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3YSwgMHg2LCAweGUsIDB4M2MsIDB4ODEsIDB4YmYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGFiLCAweDEsIDB4ZDEsIDB4ZGYsIDB4MywgMHhmNywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDE1LCAweDdlLCAweDgwLCAweDc5LCAweDc1LCAweDZiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4OGIsIDB4YzYsIDB4YWEsIDB4MWYsIDB4ZjcsIDB4YTgsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHgyNiwgMHhmNywgMHgxMiwgMHg3LCAweDkzLCAweDhiLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MWUsIDB4NjYsIDB4NTYsIDB4N2MsIDB4NmIsIDB4NjUsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDc1LCAweDc1LCAweDc1LCAweDg1LCAweDdmLCAweDFhLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4ODgsIDB4OGQsIDB4OGEsIDB4MWUsIDB4YzAsIDB4ZmIsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDI3LCAweGI0LCAweDcwLCAweGJlLCAweGI5LCAweGJhLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4YTMsIDB4MWUsIDB4ZSwgMHg4MSwgMHhjNywgMHhmOCwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweGEsIDB4ZjcsIDB4ZTYsIDB4ODQsIDB4MTUsIDB4OGQsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg5YywgMHhiMSwgMHg5OSwgMHhjMSwgMHg5OSwgMHgxOSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4NzUsIDB4NTIsIDB4YSwgMHg3ZCwgMHgyYywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGJiLCAweDhmLCAweGIyLCAweGIyLCAweDFlLCAweGI2LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweDkyLCAweDc2LCAweGY4LCAweDY0LCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhmOCwgMHg0NywgMHgxNSwgMHg5ZiwgMHg4YSwgMHg5ZiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDZkLCAweGFmLCAweDQ0LCAweGViLCAweGZiLCAweDcyLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4OCwgMHg2MCwgMHg5YiwgMHg4ZCwgMHg4NywgMHg5NCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDk0LCAweGEyLCAweGE2LCAweDk2LCAweDFmLCAweGY3LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4Y2IsIDB4YTMsIDB4YzYsIDB4OTIsIDB4YTUsIDB4YWQsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHg5YSwgMHhmYiwgMHgxZiwgMHg3YywgMHg3LCAweGE0LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4NzgsIDB4NzQsIDB4MWEsIDB4NjcsIDB4NDQsIDB4ZmIsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgyYiwgMHgxZSwgMHgyNSwgMHhmNywgMHg4YSwgMHg1LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4ODUsIDB4OWEsIDB4OTcsIDB4MWEsIDB4YTQsIDB4YTEsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHg4ZCwgMHgxZSwgMHg5YSwgMHhmYiwgMHg1OCwgMHg3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxLCAweDkyLCAweDc2LCAweGY4LCAweDY0LCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4ZjcsIDB4NDgsIDB4ZjgsIDB4NiwgMHhmNywgMHhmLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4ZjgsIDB4NDcsIDB4MTUsIDB4YTQsIDB4ODksIDB4OTMsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg1YiwgMHhmNywgMHgxYiwgMHhmYiwgMHhlMCwgMHgxOCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDkwLCAweDgxLCAweDkyLCAweDFiLCAweDkxLCAweDkwLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4OTksIDB4MWYsIDB4ZjcsIDB4NCwgMHhmNywgMHg4NCwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgwLCAweDUsIDB4NjcsIDB4OTksIDB4OGQsIDB4ODQsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg5MywgMHg4ZiwgMHg5NSwgMHhiMiwgMHg5YiwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweGU0LCAweDlhLCAweGIwLCAweDkwLCAweDlmLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4MTksIDB4MTMsIDB4NzAsIDB4OWEsIDB4ZmIsIDB4ZiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YTMsIDB4ODYsIDB4OWYsIDB4N2QsIDB4NzMsIDB4MWEsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg3MCwgMHg4MCwgMHg3MiwgMHgxZSwgMHgzMSwgMHhmYiwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGY3LCAweDZhLCAweDUsIDB4N2MsIDB4YjIsIDB4ODUsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHgxYSwgMHhhOCwgMHhhNCwgMHg5OCwgMHhhYywgMHg5MCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGZiLCAweDVmLCAweDdjLCAweDcsIDB4YjQsIDB4ODYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHhiMCwgMHhmYiwgMHg1LCAweDMwLCAweGZiLCAweDViLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4ZjcsIDB4MTQsIDB4NTAsIDB4ZjcsIDB4OSwgMHhhZSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGEyLCAweDk5LCAweGEyLCAweDhkLCAweDFlLCAweDlhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4NywgMHhlLCAweGEwLCAweDc2LCAweGY4LCAweDU5LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4OWMsIDB4ZjcsIDB4MjUsIDB4ZjcsIDB4OCwgMHhmNywgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDljLCAweDE2LCAweGY3LCAweDI1LCAweDlhLCAweDYsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg5NSwgMHg5ZCwgMHg4OSwgMHgxZiwgMHg5NiwgMHg5OSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDk0LCAweDFlLCAweDEzLCAweGYwLCAweGRhLCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmYiwgMHg2LCAweDUsIDB4OGYsIDB4ODYsIDB4OTcsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgxYSwgMHg3NiwgMHg4MiwgMHg3ZCwgMHg2YywgMHg4YSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGY3LCAweDVkLCAweDlhLCAweDcsIDB4N2EsIDB4OGMsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg2NSwgMHhjNSwgMHhmYiwgMHgxNCwgMHhmNywgMHg0ZSwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGY3LCAweDIsIDB4OTMsIDB4OTgsIDB4YTksIDB4YjMsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgxOSwgMHg5YSwgMHhmYiwgMHgzMiwgMHg3YywgMHg3LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4YTIsIDB4ODAsIDB4NzYsIDB4MWEsIDB4ODAsIDB4ODUsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHgzMywgMHgxZSwgMHg3OCwgMHhhOCwgMHg2MiwgMHhjOCwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGEwLCAweGE0LCAweDk3LCAweDlkLCAweDFlLCAweDlhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4N2MsIDB4NywgMHhhYywgMHg4YywgMHg5NywgMHg4MSwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGU5LCAweGZiLCAweDFhLCAweDE4LCAweGZiLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHg2YiwgMHg1ZCwgMHg3ZCwgMHg3ZiwgMHg3MCwgMHg4OCwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OTYsIDB4YSwgMHhmOCwgMHhjYSwgMHg3NywgMHgxMiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGY3LCAweDg2LCAweGExLCAweDE1LCAweDY4LCAweDg1LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZCwgMHg1NywgMHgxYiwgMHgxMywgMHg2MCwgMHg0NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YjQsIDB4OWUsIDB4NGEsIDB4YSwgMHgzZCwgMHhmYiwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGEsIDB4OCwgMHhlLCAweGUyLCAweDYxLCAweGE5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4YTksIDB4NmEsIDB4YSwgMHg3YiwgMHg2YywgMHgyMSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE0LCAweDU2LCAweDFkLCAweGUsIDB4OTIsIDB4YSwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ3LCAweGQ1LCAweDQ3LCAweGQ1LCAweDEzLCAweGUwLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGUsIDB4MTUsIDB4MTMsIDB4ZDAsIDB4ZDAsIDB4NzgsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg0YiwgMHg5OCwgMHhhLCAweGZiLCAweGMsIDB4YzksIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgxZSwgMHg5NiwgMHg3LCAweDQ0LCAweDliLCAweDc3LCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4MWEsIDB4ZjcsIDB4MzgsIDB4NywgMHhkMiwgMHg3ZSwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDljLCAweDFlLCAweDhkLCAweDcsIDB4ZDksIDB4OWQsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhkMiwgMHgxYSwgMHhmNywgMHgzOCwgMHg3LCAweGQwLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4ZDIsIDB4OWIsIDB4MWUsIDB4OTYsIDB4NywgMHgyNCwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGZiLCAweGIsIDB4MWYsIDB4ZmIsIDB4M2IsIDB4NywgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDYxLCAweDQ2LCAweDc5LCAweDFlLCAweGUsIDB4ZmIsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYSwgMHg3NiwgMHhmNywgMHg0NiwgMHg3YSwgMHgxZCwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweDU1LCAweGI0LCAweDMsIDB4ZGEsIDB4ZmIsIDB4M2YsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhmOSwgMHhlMywgMHg2MiwgMHg2LCAweGUsIDB4OTIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NzAsIDB4ZDUsIDB4MywgMHhmNywgMHgxNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDE1LCAweDgwLCAweDcsIDB4ZjIsIDB4YzgsIDB4OWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDFmLCAweGY3LCAweDM4LCAweDcsIDB4Y2IsIDB4OWMsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHg5ZSwgMHgxZSwgMHg0NiwgMHg5ZCwgMHg3YSwgMHhiNSwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDNiLCAweDcsIDB4ZjcsIDB4YiwgMHg0ZSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweDFlLCAweDgwLCAweDcsIDB4ZDIsIDB4N2IsIDB4OWUsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHg5OCwgMHhhLCAweDQ0LCAweDk4LCAweDY0LCAweGQ5LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODksIDB4NywgMHgzZCwgMHg3YSwgMHg3ZSwgMHg2NCwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGEsIDB4NDYsIDB4NzgsIDB4NjEsIDB4NDQsIDB4N2IsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweDRjLCAweGY3LCAweDRiLCAweGNiLCAweDk3LCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhkNywgMHhmNywgMHg0YiwgMHgxNSwgMHhhZSwgMHg5YiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGI3LCAweDFiLCAweGJhLCAweGE3LCAweDc5LCAweDc5LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NzcsIDB4YTgsIDB4YTksIDB4NzcsIDB4YzMsIDB4MWIsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhiYiwgMHhiNSwgMHhhOSwgMHgxZiwgMHg2NywgMHhiZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NzQsIDB4NzIsIDB4NjIsIDB4NjMsIDB4MWIsIDB4NmQsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg5ZSwgMHg2OSwgMHgxZiwgMHg5ZSwgMHg2OSwgMHg2NCwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDFiLCAweDQ4LCAweDY3LCAweDViLCAweDYxLCAweDc1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3MywgMHhmYiwgMHg1OSwgMHg3NiwgMHhmOCwgMHhkNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MSwgMHhlYywgMHhmNywgMHgwLCAweDMsIDB4ZjcsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhYywgMHgxNSwgMHg5OCwgMHg2LCAweGE1LCAweGZiLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4ZmIsIDB4NDgsIDB4NzMsIDB4MWEsIDB4NWEsIDB4N2YsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg2MSwgMHg4MSwgMHhiMiwgMHhiZiwgMHhhNCwgMHhhMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGE0LCAweGY3LCAweDVkLCAweDFlLCAweDVkLCAweGY3LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NmQsIDB4YTMsIDB4NzMsIDB4YTksIDB4YTksIDB4YTMsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhhOSwgMHg3MywgMHhhMywgMHg2ZCwgMHg2ZCwgMHg3MywgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDFlLCAweGUsIDB4ODcsIDB4ZDQsIDB4NTIsIDB4YmYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhhOSwgMHg3MywgMHhhOSwgMHgxMiwgMHhjYSwgMHhkOCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweGY3LCAweGEsIDB4ZmIsIDB4MWUsIDB4MTUsIDB4YWQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGY3LCAweDFlLCAweDUsIDB4ODYsIDB4OWQsIDB4OTksIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgxYiwgMHhlMiwgMHhjNiwgMHhjOCwgMHhmMywgMHhiYSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDkzLCAweDUsIDB4MTMsIDB4NjgsIDB4NDUsIDB4NWQsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg0ZCwgMHgxYiwgMHg3NCwgMHg3YywgMHg5MCwgMHg5MiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGYwLCAweGY3LCAweGI3LCAweDUsIDB4NjcsIDB4OWIsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHhhOCwgMHgxYiwgMHhhMiwgMHg5ZCwgMHg5ZSwgMHhhNSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGFmLCAweDYwLCAweDk5LCAweDFmLCAweGJhLCAweGY3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2OCwgMHg2LCAweDVmLCAweGZiLCAweDEwLCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg4ZSwgMHg3OCwgMHg3YiwgMHg4ZCwgMHg3YiwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDM0LCAweGZiLCAweDcsIDB4ZmIsIDB4ZSwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDNmLCAweGFjLCAweDNjLCAweGRlLCAweDUzLCAweDFlLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4MTUsIDB4NWMsIDB4YjEsIDB4NzYsIDB4YmYsIDB4Y2UsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg5OCwgMHhmNywgMHgxOSwgMHhkZSwgMHhiNSwgMHhiZiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDg3LCAweDg2LCAweDk4LCAweDFlLCAweGUsIDB4ODMsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhkZiwgMHgzNywgMHhmNywgMHgxZSwgMHhmNywgMHg1YSwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweGY3LCAweDI2LCAweDcwLCAweGE2LCAweDEyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhlMCwgMHhmNywgMHgyYiwgMHhlNCwgMHgxMywgMHg1NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGMxLCAweDE1LCAweDZjLCAweGI3LCAweGJhLCAweDZjLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZDcsIDB4ZTksIDB4ZGEsIDB4Y2MsIDB4OTAsIDB4ODgsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxZiwgMHg3NiwgMHg3NSwgMHg0YSwgMHgyZiwgMHgxYiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDkyLCAweGE3LCAweDRkLCAweDFmLCAweGEyLCAweGVkLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4ODksIDB4YzYsIDB4OGEsIDB4YTYsIDB4MTgsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhmYiwgMHgxYiwgMHg2LCAweDg0LCAweGM0LCAweDg3LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4MWEsIDB4YWUsIDB4OTMsIDB4ZjAsIDB4ZTIsIDB4OTcsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg1NywgMHgxZSwgMHgxMywgMHgzYiwgMHg2YSwgMHg4YiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGE0LCAweGEzLCAweDllLCAweGFkLCAweGI5LCAweDVkLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4MjIsIDB4MzEsIDB4NDIsIDB4ZmIsIDB4MzcsIDB4NmIsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg4ZiwgMHg3NiwgMHgxZSwgMHgyMCwgMHg1ZSwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg5MCwgMHg2MCwgMHg5MCwgMHg2OSwgMHg4ZiwgMHg2ZSwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDhmLCAweDZkLCAweDg2LCAweDZmLCAweDgsIDB4OGYsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg4YywgMHg3ZCwgMHgxYiwgMHg1OSwgMHg1ZSwgMHg3MiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGFlLCAweDc5LCAweGFiLCAweGI5LCAweGE1LCAweGE5LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4MWYsIDB4ZmIsIDB4MjAsIDB4OGQsIDB4MTUsIDB4YTgsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhhNywgMHhhMiwgMHhhMCwgMHg4MywgMHg4MiwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDgxLCAweDdiLCAweDVjLCAweDViLCAweDc1LCAweDc5LCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MWUsIDB4ZSwgMHhmNywgMHgxZCwgMHhjNCwgMHhmNywgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDEyLCAweGFmLCAweGNlLCAweDVkLCAweGM4LCAweGY3LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4NWQsIDB4Y2UsIDB4MTMsIDB4ZDQsIDB4ZjcsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDE1LCAweGQzLCAweGM0LCAweGNhLCAweGQ3LCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4ZDYsIDB4YzMsIDB4NGMsIDB4NDMsIDB4NDEsIDB4NTMsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHgxZiwgMHgxMywgMHhkNCwgMHgzZiwgMHg1MiwgMHhjYSwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDQ3LCAweGZiLCAweDhhLCAweDE1LCAweGUyLCAweGUzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhhNSwgMHhiNiwgMHg3ZSwgMHhiNiwgMHgxYiwgMHhiNywgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGEzLCAweGE1LCAweDFmLCAweGU0LCAweDMzLCAweGI2LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4ZTIsIDB4NSwgMHgxMywgMHhlOCwgMHhhNCwgMHhhNywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGI5LCAweDFhLCAweGIzLCAweDdlLCAweGIyLCAweDc1LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZTIsIDB4ZTQsIDB4NjAsIDB4YjYsIDB4MzIsIDB4MzQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDcxLCAweDVmLCAweDk2LCAweDYwLCAweDFiLCAweDYwLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NzQsIDB4NzEsIDB4MWYsIDB4MzQsIDB4ZTIsIDB4NWUsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHgzMiwgMHg1LCAweDEzLCAweGQ0LCAweDc0LCAweDcyLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NjAsIDB4MWEsIDB4NWUsIDB4OTYsIDB4NWUsIDB4YTQsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgzMywgMHgzNCwgMHg1LCAweGUsIDB4YTAsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhiMywgMHhlNSwgMHhiMywgMHhmNywgMHhjYSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTIsIDB4ZTAsIDB4MywgMHhmNywgMHgzLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4OWUsIDB4NiwgMHg1MiwgMHg4YywgMHg3NCwgMHhhMywgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGNhLCAweGY3LCAweDQxLCAweGIzLCAweGZiLCAweDQxLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg5MiwgMHg5OSwgMHg1LCAweGY3LCAweDNhLCAweGIzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4NiwgMHhlNywgMHhmNywgMHg0MiwgMHhhZCwgMHhjZSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGJiLCAweDk0LCAweDE5LCAweDllLCAweGZiLCAweDU3LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhhZSwgMHg4ZSwgMHhhOSwgMHg3NywgMHg3MywgMHgxYSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDdlLCAweDgzLCAweDdjLCAweDFlLCAweGZiLCAweDQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHhmYiwgMHhhLCAweGY3LCAweDY3LCAweDUsIDB4ODMsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg5YywgMHg5NywgMHgxYSwgMHhhMCwgMHg5ZCwgMHg5ZiwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDFlLCAweDllLCAweGZiLCAweDg3LCAweDc4LCAweDcsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhhMCwgMHg1ZiwgMHhiOSwgMHgzOCwgMHhlYSwgMHhmYiwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGZiLCAweDI0LCAweDYzLCAweGY3LCAweDNiLCAweDYsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg1LCAweDNmLCAweGZiLCAweDQyLCAweDYzLCAweGY3LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4NywgMHg1MywgMHg4MywgMHg1ZiwgMHg0NCwgMHg4OSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4MzEsIDB4OTIsIDB4N2EsIDB4MWQsIDB4ZDksIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGQ5LCAweGY4LCAweDFkLCAweDE1LCAweGI3LCAweGY3LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NiwgMHhmZCwgMHg0NiwgMHg0LCAweGI3LCAweGY3LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NiwgMHhlLCAweGZiLCAweDI5LCAweGEwLCAweGY3LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4ZjgsIDB4ZDAsIDB4NzcsIDB4MTIsIDB4Y2IsIDB4YzAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHhlZCwgMHgyYiwgMHhjMywgMHgxMywgMHhmOCwgMHhmNywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweDE1LCAweGUxLCAweDgzLCAweGI3LCAweGNhLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YzYsIDB4NjIsIDB4YzEsIDB4NWIsIDB4YjMsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHg1LCAweDUsIDB4NzIsIDB4YTAsIDB4ODIsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHgxYSwgMHhhMiwgMHg5ZSwgMHhiYSwgMHhjNywgMHhiOSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDc5LCAweDg3LCAweDdmLCAweDg0LCAweDgxLCAweDdmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODMsIDB4ODUsIDB4ODEsIDB4N2UsIDB4MWEsIDB4N2QsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhiMSwgMHhhZSwgMHg5YiwgMHhhMywgMHhhOSwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweGM1LCAweDRlLCAweGJjLCAweDRiLCAweDQyLCAweDQ2LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4NDgsIDB4YjUsIDB4NjgsIDB4YzIsIDB4NWQsIDB4MWUsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg1LCAweDM4LCAweDk1LCAweDU3LCAweDUxLCAweDQxLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4YTgsIDB4NTEsIDB4ZDAsIDB4NTYsIDB4MWUsIDB4ZjcsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0LCAweDliLCAweDdiLCAweDYxLCAweDFhLCAweDU5LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4NWEsIDB4NTQsIDB4NzgsIDB4YWQsIDB4OTYsIDB4MWUsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHg5NSwgMHhhZCwgMHgxYSwgMHg5YywgMHg3YywgMHhhMywgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDZmLCAweDc5LCAweDY3LCAweDUyLCAweGM4LCAweDU2LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4YjgsIDB4Y2EsIDB4Y2EsIDB4YzMsIDB4NzEsIDB4YWMsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgxZSwgMHhmYiwgMHgzZiwgMHhmNywgMHg1NiwgMHgxNSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDlkLCAweGE5LCAweGMyLCAweGY3LCAweDEzLCAweGZiLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg1ZiwgMHg2OSwgMHg3MSwgMHg2NiwgMHg0YywgMHhmYiwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ZDQsIDB4MWUsIDB4ZSwgMHg3MywgMHhmOCwgMHg5ZiwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4OWQsIDB4ZWQsIDB4ZjAsIDB4ZWQsIDB4MywgMHg5ZCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDE1LCAweDZlLCAweDFkLCAweGY3LCAweDViLCAweDE2LCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZSwgMHhmOCwgMHgyNywgMHg3ZCwgMHhiNSwgMHhmNywgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGY3LCAweDlmLCAweDlmLCAweGY3LCAweDI1LCAweGI1LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhjMiwgMHhmMSwgMHhkOCwgMHhmNywgMHg5NywgMHg5YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4YzIsIDB4MywgMHhiMSwgMHhmNywgMHhkZSwgMHgzZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4YSwgMHhmOCwgMHg0YSwgMHgzOCwgMHgxNSwgMHg1ZCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDYzLCAweDQ5LCAweDFiLCAweDI1LCAweDYxLCAweGQ4LCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4MWYsIDB4ZWMsIDB4OGMsIDB4YjYsIDB4ZDMsIDB4ZTgsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHhhNywgMHg1MiwgMHg2MSwgMHg4ZiwgMHgxZiwgMHg5YywgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTksIDB4MzYsIDB4OTQsIDB4NjQsIDB4ZmIsIDB4MmMsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyLCAweDM4LCAweGZiLCAweDIxLCAweGVhLCAweDUyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhjYywgMHhiMCwgMHg5NSwgMHhhNSwgMHhhOCwgMHgxZSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDUsIDB4ZSwgMHgzYSwgMHhmOCwgMHgzMywgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGE3LCAweDEyLCAweDliLCAweGNhLCAweGQ5LCAweGQzLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzIsIDB4ZjgsIDB4YmIsIDB4MTUsIDB4NDgsIDB4NywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDhiLCAweDg0LCAweDgxLCAweDgyLCAweDgsIDB4ODgsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg3OSwgMHg3ZCwgMHgxYiwgMHg3MywgMHg3YiwgMHg5ZCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGEyLCAweGExLCAweGNmLCAweGExLCAweDFmLCAweDkzLCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NWYsIDB4OTIsIDB4YTYsIDB4ODEsIDB4OTcsIDB4MWIsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg4YywgMHhhOCwgMHhhNiwgMHgxZiwgMHg5ZCwgMHg3LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4ODIsIDB4ODUsIDB4N2YsIDB4MWIsIDB4N2UsIDB4OGIsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHgxZiwgMHhmNywgMHg3LCAweDcsIDB4YWMsIDB4ODQsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg0MCwgMHg2OSwgMHg2OCwgMHg2YiwgMHg3ZCwgMHg5NiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDlmLCAweDk3LCAweDk4LCAweDk4LCAweGE1LCAweDg5LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4YTIsIDB4OTcsIDB4N2EsIDB4NTQsIDB4MWUsIDB4MmQsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg3NiwgMHg0ZiwgMHgxYSwgMHgxMywgMHg4MCwgMHg1ZSwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGFlLCAweGFlLCAweGFlLCAweDlmLCAweGFkLCAweDlmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3OSwgMHhhLCAweGI1LCAweGY3LCAweDc3LCAweDUwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhhZiwgMHg5MiwgMHgxYSwgMHg5MiwgMHg4OSwgMHg4ZiwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDc4LCAweGZiLCAweDUxLCAweDUwLCAweGEsIDB4YTUsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg5NiwgMHgxZCwgMHhmNywgMHg2MywgMHhmNywgMHgxNSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY4LCAweGNkLCAweDYzLCAweGIzLCAweDEyLCAweGY4LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4NWUsIDB4YjgsIDB4MTMsIDB4ZDAsIDB4MTMsIDB4YTgsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlZSwgMHgxNSwgMHhmOCwgMHg1ZiwgMHhmYiwgMHg4MiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFhLCAweGZjLCAweDhjLCAweDYsIDB4ZSwgMHhmOCwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGI1LCAweDdkLCAweGY3LCAweDQ5LCAweGY3LCAweGNkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4MTIsIDB4YjEsIDB4YzIsIDB4ZjcsIDB4NDMsIDB4Y2IsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGNlLCAweGY3LCAweDMwLCAweGMyLCAweDEzLCAweDdlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4ZjcsIDB4MmMsIDB4MTUsIDB4ZjcsIDB4MzYsIDB4OWEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDkwLCAweDhjLCAweDk1LCAweGI2LCAweDFhLCAweGRhLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgyZCwgMHhjYiwgMHhhNCwgMHg1MSwgMHhhYiwgMHgxYiwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDYsIDB4NzgsIDB4OWEsIDB4NmMsIDB4YWQsIDB4NzEsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHhkMCwgMHgxOCwgMHhiOCwgMHg5YSwgMHhhZCwgMHhiMSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGNhLCAweDUzLCAweGIxLCAweDUwLCAweDFlLCAweGZiLCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NiwgMHhhMSwgMHg4NywgMHhhNiwgMHg4YiwgMHg3MCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDhkLCAweDcsIDB4NjAsIDB4OGMsIDB4ODEsIDB4NTksIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmNywgMHg1LCAweGY3LCAweDMwLCAweDE1LCAweGY3LCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4NywgMHhiMiwgMHhhYiwgMHg2ZCwgMHg1MiwgMHg1NiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDVhLCAweDFmLCAweGZiLCAweGU1LCAweDkyLCAweDNlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgxMywgMHhiZSwgMHg2OSwgMHhhLCAweGUsIDB4NzMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhjMSwgMHgxLCAweDk2LCAweGY4LCAweGI3LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4YzEsIDB4ZmIsIDB4Y2IsIDB4NiwgMHhlLCAweGI2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YWQsIDB4ZjcsIDB4NmUsIDB4YWQsIDB4MSwgMHhjNCwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY0LCAweGIyLCAweDMsIDB4ZWIsIDB4ZjgsIDB4YTksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhiOSwgMHhiZSwgMHhjNSwgMHhjNSwgMHhiOSwgMHg1OCwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDVkLCAweDU4LCAweDUxLCAweDUxLCAweDVkLCAweGJlLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NjQsIDB4MTYsIDB4M2IsIDB4Y2EsIDB4NGMsIDB4ZGIsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhjYSwgMHhkYiwgMHhkYiwgMHg0YywgMHhjYSwgMHgzYiwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDRjLCAweDNiLCAweDFlLCAweGUsIDB4ZjcsIDB4NjMsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHhjMywgMHg3NywgMHhmNywgMHg0OCwgMHhjZCwgMHg1NCwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNlLCAweDc3LCAweDEyLCAweGY3LCAweDhkLCAweGNkLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MTMsIDB4ZWMsIDB4YTksIDB4MTYsIDB4ZjgsIDB4OGMsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4YywgMHg2LCAweDEzLCAweGVhLCAweGY3LCAweDdiLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YjMsIDB4NiwgMHgxMywgMHhkYSwgMHhmNywgMHgzZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGI2LCAweGZiLCAweDdkLCAweGY3LCAweDNlLCAweDYzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4ZmIsIDB4N2IsIDB4NjAsIDB4ZjcsIDB4N2IsIDB4NywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4ZjcsIDB4YTIsIDB4Y2MsIDB4ZjcsIDB4YWEsIDB4Y2EsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRkLCAweGU3LCAweDMsIDB4OTAsIDB4ZjcsIDB4YTIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MiwgMHg1NiwgMHhhLCAweDY3LCAweDhiLCAweDFkLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4MWQsIDB4MjgsIDB4MjAsIDB4NSwgMHhlLCAweDUyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4ODUsIDB4MWQsIDB4MTMsIDB4ZDAsIDB4ZGYsIDB4ZjgsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhhLCAweDc5LCAweDdjLCAweDk2LCAweDk1LCAweDdkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4N2UsIDB4N2UsIDB4OTQsIDB4N2QsIDB4NjMsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDRlLCAweDFkLCAweDkyLCAweDFkLCAweGU4LCAweGY4LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4YSwgMHhmYiwgMHg1OSwgMHg3NiwgMHhmNywgMHg2NCwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDIyLCAweDc3LCAweDEyLCAweGFmLCAweGU3LCAweDQ3LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ZTMsIDB4ZjcsIDB4NTYsIDB4ZTMsIDB4MTMsIDB4ZWEsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHgxNSwgMHg4ZCwgMHg4ZCwgMHg1LCAweDRmLCAweGFiLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4YWEsIDB4MWIsIDB4YmUsIDB4YmYsIDB4YjksIDB4YmUsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4ZCwgMHg2LCAweDYyLCAweDljLCAweDUzLCAweGJmLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4OTUsIDB4YmEsIDB4YWQsIDB4MWUsIDB4OTMsIDB4NywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDdkLCAweDgzLCAweDdjLCAweDFiLCAweDZiLCAweDhiLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4MWYsIDB4ZjcsIDB4ZmEsIDB4MzMsIDB4ZmIsIDB4ZDksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDdmLCAweDYwLCAweDViLCAweDU4LCAweDFiLCAweDEzLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NmYsIDB4YjEsIDB4YzEsIDB4MWYsIDB4ZjcsIDB4YzYsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgyMCwgMHg3LCAweDEzLCAweGYyLCAweDRkLCAweDczLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4MWEsIDB4NWMsIDB4OTUsIDB4NzMsIDB4YWYsIDB4YWYsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhiYSwgMHgxZSwgMHgxMywgMHhlYSwgMHhjNywgMHg2ZCwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGNkLCAweDFlLCAweGUsIDB4ZWIsIDB4ZmIsIDB4NTcsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHhlNywgMHhhNiwgMHgxLCAweGY3LCAweDdhLCAweGFmLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4MywgMHhmNywgMHg3YSwgMHhmYiwgMHg2YywgMHgxNSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGU3LCAweGU2LCAweGZkLCAweGU3LCAweGFmLCAweGY5LCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4YTYsIDB4ZmIsIDB4ODcsIDB4NiwgMHhmYiwgMHgyMCwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweGZiLCAweDExLCAweGZiLCAweDExLCAweGQ5LCAweDUwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4MWYsIDB4ZSwgMHgyMCwgMHhmNywgMHg3MCwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4NzcsIDB4MSwgMHhkMSwgMHhmNywgMHgzLCAweDMsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MSwgMHgxNSwgMHg0MywgMHgxZCwgMHhlLCAweDczLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ZjcsIDB4MmQsIDB4YzksIDB4NzcsIDB4MSwgMHhmNywgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDMsIDB4ZWIsIDB4MjMsIDB4MTUsIDB4OTIsIDB4ODYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDk4LCAweDljLCAweDhkLCAweDlhLCAweDFiLCAweGEwLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NzUsIDB4NjgsIDB4NzAsIDB4ODEsIDB4NmMsIDB4NzYsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg5MSwgMHg3OSwgMHgxZiwgMHg3ZCwgMHg2YywgMHg1LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4OWUsIDB4ODMsIDB4YjUsIDB4MWIsIDB4YmEsIDB4Y2YsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhiOCwgMHg2OCwgMHhhNCwgMHg2MCwgMHg4MCwgMHg3ZiwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDgwLCAweDFmLCAweGE0LCAweGNjLCAweDUsIDB4NjgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NTIsIDB4ZjcsIDB4YTIsIDB4YTMsIDB4ZjgsIDB4MTIsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDIsIDB4ZGMsIDB4MywgMHhjNCwgMHhmNywgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweGEsIDB4ZmIsIDB4ODYsIDB4NywgMHg2OSwgMHg3MywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDg5LCAweDFlLCAweGUsIDB4NWMsIDB4ZjgsIDB4MWUsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YywgMHhhYywgMHgxLCAweDkxLCAweGQ0LCAweGY3LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4MywgMHg5MSwgMHhmOCwgMHhhOCwgMHgxNSwgMHgzZiwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweGRmLCAweGY3LCAweDEsIDB4YjksIDB4ZGUsIDB4Y2MsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHhiZiwgMHgzNiwgMHgyYSwgMHg1NSwgMHg0YSwgMHgzYywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGE0LCAweDE1LCAweGI3LCAweGFiLCAweGI1LCAweGI0LCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4NjcsIDB4M2YsIDB4NGMsIDB4NjIsIDB4NjIsIDB4NmEsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhlMywgMHhiNSwgMHgxZSwgMHhlLCAweDc5LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhhYywgMHgxNSwgMHg1OCwgMHhhLCAweDdkLCAweDc5LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NmEsIDB4NWQsIDB4OCwgMHg3OCwgMHg3MCwgMHg3YywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDFhLCAweDg0LCAweDhkLCAweDg3LCAweDkzLCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4MTYsIDB4NTgsIDB4YSwgMHg3ZSwgMHg3OSwgMHg1ZSwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDVlLCAweDgsIDB4NzUsIDB4NmQsIDB4N2IsIDB4NzMsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmOCwgMHgxZCwgMHg5MiwgMHg3NiwgMHhhZSwgMHg3NiwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGY3LCAweGYsIDB4YTMsIDB4ZjgsIDB4MTIsIDB4NzcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhkYywgMHhmOCwgMHgzYSwgMHhkMSwgMHgxMywgMHg3ZSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4YmUsIDB4ZmMsIDB4NWIsIDB4ZmIsIDB4MzUsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmYywgMHhiZSwgMHg0NywgMHgxZCwgMHhlLCAweGY4LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4Y2MsIDB4NTEsIDB4NzYsIDB4ZjcsIDB4YjAsIDB4YTMsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhmNywgMHhhMiwgMHg3NywgMHgxMiwgMHhkZiwgMHhkYywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGU3LCAweDEzLCAweDdlLCAweGYwLCAweDdkLCAweDY4LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4OWYsIDB4NDcsIDB4MWQsIDB4MTMsIDB4YmUsIDB4ZjgsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiYSwgMHgxNSwgMHhmNywgMHg5MSwgMHg1NiwgMHhhLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4MWQsIDB4YWEsIDB4N2YsIDB4MWQsIDB4MjksIDB4MjAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjgsIDB4MWQsIDB4OTIsIDB4NzYsIDB4ZjMsIDB4YzQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDg1LCAweDFkLCAweGY3LCAweGMyLCAweGQxLCAweDEzLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4YSwgMHhmYywgMHg1YiwgMHhmYiwgMHgzNSwgMHg2OCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDhmLCAweGZiLCAweDZjLCAweDc3LCAweGEsIDB4N2EsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg5NSwgMHg3ZCwgMHgxZSwgMHg5NCwgMHg3ZSwgMHg3ZSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDYzLCAweGEsIDB4MTMsIDB4ZmEsIDB4NGUsIDB4MWQsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2ZSwgMHhhOSwgMHhmOCwgMHhiOSwgMHhmNCwgMHgxMiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweGFjLCAweGY0LCAweDE3LCAweGY3LCAweDVjLCAweGY3LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NGUsIDB4NjQsIDB4NWEsIDB4NjMsIDB4NTksIDB4MWUsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg1YywgMHg1MywgMHg0MCwgMHgxYSwgMHgyNSwgMHhkMiwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZDAsIDB4ZTksIDB4YjYsIDB4ZjAsIDB4YWQsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg2MywgMHg2ZiwgMHg3NiwgMHg3MywgMHg3YSwgMHg3OSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDk1LCAweDgwLCAweDFlLCAweDk0LCAweDgwLCAweDk1LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4MWEsIDB4NmEsIDB4NjIsIDB4NmYsIDB4NjEsIDB4M2UsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhjNywgMHgxZSwgMHgxMywgMHg1MCwgMHhiMywgMHg5ZSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGIzLCAweDFlLCAweGE3LCAweGNiLCAweDUsIDB4OTEsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhkMCwgMHhjNiwgMHgxYSwgMHg0ZCwgMHhmNywgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4YTIsIDB4NzQsIDB4YTgsIDB4MWUsIDB4YTgsIDB4YTMsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg5NCwgMHgxZCwgMHgxZiwgMHhlLCAweGY4LCAweDEsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHg3MywgMHhiNCwgMHhmOCwgMHgzNSwgMHg3NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDc3LCAweDEsIDB4NTQsIDB4ZjksIDB4NDcsIDB4ZmQsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDVhLCAweDMsIDB4MjAsIDB4MWQsIDB4NTksIDB4ZjgsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHgxZCwgMHg1YywgMHgxZCwgMHhmNywgMHg4MCwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4ZjksIDB4NDcsIDB4ZmIsIDB4OTMsIDB4ZjcsIDB4OTMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGEsIDB4NzksIDB4NWYsIDB4NmIsIDB4MmEsIDB4MWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhmOCwgMHg2MiwgMHgyNCwgMHhhLCAweDVjLCAweDFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NzcsIDB4MSwgMHg1NCwgMHhmOSwgMHg0NywgMHgzLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZmIsIDB4ODUsIDB4ZjgsIDB4NjIsIDB4MjUsIDB4MWQsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDFkLCAweGY4LCAweDdmLCAweGYxLCAweDVhLCAweGJjLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZjksIDB4NDcsIDB4MTMsIDB4ZDAsIDB4MjAsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDc3LCAweDYsIDB4ZmIsIDB4NjQsIDB4ZmMsIDB4N2YsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg2YywgMHgyYSwgMHgxZCwgMHhmYiwgMHg4ZiwgMHhmOCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDFkLCAweDliLCAweGIzLCAweGIwLCAweDFiLCAweGE0LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4ODAsIDB4OWYsIDB4MWYsIDB4MTMsIDB4ZTAsIDB4N2MsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg3YiwgMHhhMSwgMHgxYiwgMHhkOSwgMHg5ZCwgMHhjZiwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NjMsIDB4N2EsIDB4NmYsIDB4ODEsIDB4NzIsIDB4MWIsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg5OCwgMHg5OCwgMHg3MywgMHgxZiwgMHg5NywgMHg3NSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDc3LCAweDU0LCAweGEsIDB4NWMsIDB4MWQsIDB4ZGQsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg4YiwgMHhmNywgMHg1YSwgMHg5OSwgMHhlZSwgMHhlZiwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGZhLCAweDIwLCAweDFkLCAweDY3LCAweGY4LCAweGE0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MWQsIDB4MTMsIDB4ZjYsIDB4ZmIsIDB4NWIsIDB4MTYsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhlLCAweDViLCAweDFkLCAweGY4LCAweDZmLCAweGY3LCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4YjEsIDB4ZjcsIDB4MTgsIDB4ZmIsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHgxMywgMHhlOCwgMHgyMCwgMHgxZCwgMHhmYiwgMHg1NywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDY3LCAweGEsIDB4YWMsIDB4MTYsIDB4YWYsIDB4YTksIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDZkLCAweDY3LCAweDFlLCAweDEzLCAweGYwLCAweDY3LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4YWYsIDB4MWYsIDB4ZSwgMHhmOCwgMHhhOCwgMHg4YiwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcyLCAweGIyLCAweGE5LCAweGIwLCAweGY3LCAweDk4LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4OWYsIDB4MTIsIDB4OGIsIDB4ZjcsIDB4NWIsIDB4ZjcsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhmNywgMHg4NywgMHhhMCwgMHhhYiwgMHhhMiwgMHgxMywgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MTMsIDB4ZWIsIDB4MCwgMHg4YiwgMHg0LCAweGY3LCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4NiwgMHg3ZSwgMHg4ZCwgMHg0OSwgMHg4OSwgMHhhMCwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweGFhLCAweGE1LCAweGI3LCAweGJhLCAweGU0LCAweDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmYiwgMHgyMiwgMHg2LCAweDQ0LCAweDdiLCAweDc4LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MWUsIDB4N2EsIDB4ODksIDB4NSwgMHg3OCwgMHhmOCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YjcsIDB4ZjcsIDB4M2MsIDB4NSwgMHg3MywgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg1MiwgMHg2OCwgMHg3NywgMHgyMiwgMHgxYiwgMHgzZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4ODgsIDB4OTYsIDB4Y2MsIDB4MWYsIDB4ZjcsIDB4NmIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHg3LCAweGUyLCAweDkwLCAweDVjLCAweDU2LCAweDkxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4ZjcsIDB4N2UsIDB4NzYsIDB4NiwgMHg0NCwgMHg4NSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGZiLCAweDMsIDB4MWIsIDB4ZmIsIDB4MywgMHhmNywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTgsIDB4OWIsIDB4OGMsIDB4OTYsIDB4MWUsIDB4ZTIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweGI0LCAweDg0LCAweDI5LCAweDk2LCAweDFmLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjEsIDB4ZmMsIDB4YzgsIDB4NiwgMHgxMywgMHhmNywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDcsIDB4YzgsIDB4YTgsIDB4ODAsIDB4NzMsIDB4ODMsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg4NywgMHg4MywgMHgxZiwgMHhmYiwgMHg4OSwgMHhmYywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDQ2LCAweDc5LCAweDdlLCAweDY4LCAweDg1LCAweDE5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ZjcsIDB4YWMsIDB4MTUsIDB4ZjcsIDB4MzAsIDB4ZjcsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDhlLCAweGZiLCAweGNkLCAweDYsIDB4ZSwgMHhmNywgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDU2LCAweDc2LCAweGY3LCAweDVkLCAweGI3LCAweGY4LCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MSwgMHhhNywgMHhmNywgMHg4LCAweGY3LCAweGE0LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4YTIsIDB4MywgMHhmNywgMHhhZSwgMHg4ZSwgMHhhLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4Y2UsIDB4YTksIDB4YmYsIDB4MWEsIDB4YzMsIDB4NTQsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHg3ZiwgMHgxZSwgMHhhMCwgMHhjMSwgMHhmNywgMHgzMiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweGY2LCAweDhjLCAweDhkLCAweDE5LCAweDc5LCAweDlkLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxZCwgMHhmNywgMHgyNCwgMHhiNywgMHhjYiwgMHhiMiwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGI0LCAweGI1LCAweGM1LCAweDlmLCAweGJkLCAweDFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhkMywgMHgzMSwgMHgyMiwgMHhhNCwgMHgxZiwgMHhhMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4ZjcsIDB4N2YsIDB4NTksIDB4MWQsIDB4MWYsIDB4OGMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDMzLCAweDkyLCAweDg2LCAweDUsIDB4YWIsIDB4OTQsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4NiwgMHhhLCAweDVhLCAweDFkLCAweGY3LCAweDc4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4N2YsIDB4YSwgMHgxNywgMHg5NywgMHgxNiwgMHhmOCwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MTMsIDB4ZmYsIDB4ODAsIDB4MjMsIDB4MWQsIDB4ZjcsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg1MCwgMHgyNywgMHgxZCwgMHg1YSwgMHgxZCwgMHhmNywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4N2YsIDB4YSwgMHgzLCAweGY3LCAweDdjLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4MjEsIDB4MWQsIDB4ZmMsIDB4MywgMHhmZCwgMHhmNywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NWEsIDB4MWQsIDB4ZjcsIDB4NzQsIDB4NzcsIDB4MSwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MywgMHhmNywgMHgyYSwgMHgzOCwgMHhhLCAweGZiLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmUsIDB4YSwgMHgyYywgMHhhLCAweDdiLCAweGEsIDB4ZjcsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhmNywgMHg5NCwgMHhiMSwgMHhkMywgMHhmMCwgMHgxMiwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweDVkLCAweGYwLCAweGVlLCAweGYwLCAweDk0LCAweGEyLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmEsIDB4OTcsIDB4MTYsIDB4ZjgsIDB4YjAsIDB4NiwgMHgzNiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDdiLCAweDI2LCAweGEsIDB4MTMsIDB4MTYsIDB4M2UsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDEzLCAweGY2LCAweGY3LCAweDIzLCAweGY5LCAweDkxLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4MWQsIDB4ZjcsIDB4NWMsIDB4MTYsIDB4NmMsIDB4MWQsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDgzLCAweGEsIDB4ZjcsIDB4OGMsIDB4NDIsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGY5LCAweDUwLCAweDJkLCAweGEsIDB4ODksIDB4ODEsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg1NywgMHhhLCAweDczLCAweDgzLCAweGEsIDB4ZjcsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGY3LCAweDcsIDB4ZjEsIDB4MywgMHhlOCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDIxLCAweDFkLCAweGZiLCAweDcyLCAweGZkLCAweGY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmYsIDB4OWUsIDB4NiwgMHg0MSwgMHg4ZCwgMHg3MSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGE2LCAweDljLCAweGQ0LCAweDhlLCAweDFlLCAweDllLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NzgsIDB4NywgMHg0OSwgMHhhLCAweGUsIDB4NzMsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDg4LCAweDc3LCAweDEsIDB4ZjcsIDB4NywgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OTYsIDB4MzgsIDB4YSwgMHhmYiwgMHgxMCwgMHhmZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4Y2IsIDB4OWUsIDB4NiwgMHg0MSwgMHg4ZCwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDFkLCAweGFiLCAweDljLCAweGQ0LCAweDhlLCAweDFlLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4Y2IsIDB4NzgsIDB4NywgMHhkZSwgMHg4NywgMHhhMCwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDg5LCAweDFkLCAweDQ0LCAweDc4LCAweDcwLCAweDM2LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHg3MywgMHhhMCwgMHg3NiwgMHhmOSwgMHgxNywgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTIsIDB4YWQsIDB4ZWQsIDB4N2EsIDB4ZjEsIDB4MTMsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHgxNiwgMHhmNywgMHhiZCwgMHg5ZSwgMHg2LCAweDEzLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4YSwgMHgxMywgMHhiMCwgMHg5ZSwgMHhmYiwgMHhiZCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4NzgsIDB4NywgMHgxMywgMHhjOCwgMHg0OSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4OTEsIDB4NCwgMHg2ZCwgMHgxZCwgMHhmNywgMHg1YiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDFkLCAweGUsIDB4ZjgsIDB4MSwgMHg4YiwgMHhiMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGI3LCAweGY3LCAweDllLCAweGIwLCAweDEsIDB4ZjMsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2LCAweDU4LCAweDFkLCAweDk2LCAweDcxLCAweDQxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGMsIDB4MzQsIDB4NWYsIDB4ZTIsIDB4ZmIsIDB4NTgsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDdmLCAweDZkLCAweDNmLCAweDFlLCAweGY3LCAweDUyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4MTUsIDB4ZjcsIDB4MjYsIDB4YjcsIDB4ZmIsIDB4MjYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHg2LCAweGJlLCAweDhiLCAweGFiLCAweDhiLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhmYiwgMHg4YSwgMHg4YiwgMHg0YiwgMHg1YiwgMHg3ZiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDFlLCAweGUsIDB4ZjgsIDB4MSwgMHg5NSwgMHg3NiwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDQ5LCAweDc3LCAweGY4LCAweDg5LCAweDc3LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4MTIsIDB4ZjcsIDB4MSwgMHhiNywgMHhmOCwgMHgzMywgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDdlLCAweDVmLCAweGEsIDB4ZjgsIDB4MTAsIDB4OGQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGJlLCAweDNhLCAweGEsIDB4MTMsIDB4N2UsIDB4ZjcsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg2OSwgMHg0YywgMHhhLCAweDlkLCAweDY3LCAweDFmLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NzUsIDB4OTEsIDB4NzYsIDB4NTQsIDB4YSwgMHgzMCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhkLCAweGY4LCAweDEwLCAweDI3LCAweDFkLCAweDMwLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjAsIDB4ZjgsIDB4MTAsIDB4MjQsIDB4YSwgMHg1YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjYsIDB4NzcsIDB4NzQsIDB4YSwgMHhmNywgMHg2MiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4YmMsIDB4ZmMsIDB4YjgsIDB4MjksIDB4MWQsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweGEsIDB4Y2YsIDB4ZjUsIDB4ODUsIDB4YSwgMHhmNywgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGEsIDB4ZmIsIDB4MTcsIDB4NjksIDB4MWQsIDB4ZjcsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgxZCwgMHhmNywgMHg4LCAweDYxLCAweGEsIDB4ZmIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDFkLCAweGRjLCAweGYxLCAweGYxLCAweGY3LCAweDMsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgxZCwgMHgzMiwgMHg3MiwgMHgxZCwgMHhlNCwgMHhmNywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGJiLCAweGY4LCAweDMxLCAweDRjLCAweGEsIDB4OTEsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhMywgMHg1YywgMHg3NSwgMHg5MSwgMHg3NiwgMHg1NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4YSwgMHhjNiwgMHhlZiwgMHg3YiwgMHgxZCwgMHhjYSwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweGVmLCAweGNhLCAweDlhLCAweGEsIDB4YWQsIDB4ZjcsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhhLCAweGZiLCAweDFmLCAweDY5LCAweDFkLCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4MWQsIDB4ZjcsIDB4ZiwgMHgzNCwgMHhhLCAweDMzLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MzksIDB4NWUsIDB4YSwgMHhjYSwgMHhmOCwgMHg1MiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGEsIDB4ZjcsIDB4NWMsIDB4MTYsIDB4MzAsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjMsIDB4YTgsIDB4NzYsIDB4YWMsIDB4NzYsIDB4ZjgsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHgxMywgMHhhMCwgMHhjNSwgMHhjMywgMHgxNSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGY3LCAweDU5LCAweGY3LCAweDU5LCAweDUsIDB4MTMsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2MSwgMHhmYiwgMHg2MSwgMHhhNywgMHhhNiwgMHhmYiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYyLCAweGY3LCAweDU5LCAweGY3LCAweDU4LCAweDZmLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTksIDB4ZmIsIDB4NTksIDB4ZmIsIDB4NTgsIDB4ZjcsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg2ZSwgMHhmNywgMHg1NywgMHhmYiwgMHg1NywgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxLCAweDUwLCAweDc2LCAweGNkLCAweGFmLCAweGY4LCAweGZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4YzUsIDB4NzcsIDB4NzQsIDB4YSwgMHhmNywgMHg2ZiwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweGM4LCAweGY4LCAweDU4LCAweDUsIDB4YTgsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg0MSwgMHgyZSwgMHgxYSwgMHhmYiwgMHg3MCwgMHgyNSwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMsIDB4NTcsIDB4NTcsIDB4OWYsIDB4YjksIDB4NjUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhhZSwgMHgxNSwgMHg2ZSwgMHhiYywgMHg3YSwgMHhkOSwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDc4LCAweGY3LCAweDMsIDB4ZDIsIDB4ZjEsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHg3OCwgMHg1ZCwgMHhiMywgMHgxZSwgMHhmYywgMHg1MiwgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDE1LCAweGJjLCAweDYsIDB4ZGEsIDB4ZjcsIDB4OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4YmUsIDB4YzgsIDB4N2EsIDB4Y2MsIDB4MWIsIDB4ZjcsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNiwgMHhmNywgMHgxMCwgMHhmNywgMHg2OSwgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweGVkLCAweDQ1LCAweGM1LCAweDFmLCAweGUzLCAweGY3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1YSwgMHg2LCAweDQzLCAweDIwLCAweDUsIDB4YWMsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHg5YiwgMHg0ZCwgMHgxYiwgMHhmYiwgMHgzOCwgMHhmYiwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGZiLCAweDdhLCAweGZiLCAweGIsIDB4YjgsIDB4MjQsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHgxZiwgMHhlLCAweDdjLCAweGEsIDB4ZjcsIDB4ZmQsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDk5LCAweGY5LCAweDE3LCAweDE1LCAweGQ3LCAweDk5LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4MWYsIDB4ZmIsIDB4YzYsIDB4NywgMHg0YSwgMHg4YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGY3LCAweDhjLCAweGY3LCAweDk3LCAweDhiLCAweGY3LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4MWUsIDB4ZjcsIDB4OGYsIDB4NywgMHhmNCwgMHg5YywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDhjLCAweDFlLCAweDllLCAweGZiLCAweDdjLCAweDc4LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHg4YSwgMHhhMywgMHg2ZCwgMHgyMCwgMHgxYSwgMHhmYiwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZmIsIDB4MTEsIDB4NGYsIDB4MzEsIDB4OTgsIDB4MWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhjOCwgMHgxZSwgMHhmNywgMHhjYSwgMHg3LCAweGQyLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4ZGEsIDB4OGMsIDB4MWUsIDB4ODgsIDB4YSwgMHhmOCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDNhLCAweDFkLCAweDczLCAweDg3LCAweDhiLCAweDdiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4OGEsIDB4ODEsIDB4MWQsIDB4OWMsIDB4NTcsIDB4YSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4ZjYsIDB4YjcsIDB4MywgMHhmOCwgMHg0LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4MjEsIDB4MWQsIDB4ZmMsIDB4ODksIDB4ZmIsIDB4NzQsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg2ZSwgMHhhLCAweGY3LCAweDg4LCAweDc3LCAweDEsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHhmNywgMHhmNiwgMHhiNywgMHgzLCAweGY3LCAweDYyLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHhkMCwgMHhmYiwgMHg4NywgMHgzMiwgMHgxZCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4N2QsIDB4YjcsIDB4ZjgsIDB4ZjksIDB4OTcsIDB4YSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweDEyLCAweGY3LCAweDEzLCAweGYxLCAweDdhLCAweGVlLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4YjQsIDB4YjcsIDB4MTMsIDB4Y2IsIDB4OTksIDB4ZjksIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHgxZCwgMHgxMywgMHhiYiwgMHg5ZSwgMHhmYiwgMHg3YywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4Y2IsIDB4NTAsIDB4MWQsIDB4NGYsIDB4M2YsIDB4ZmIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhhLCAweDEzLCAweGJiLCAweDg4LCAweGEsIDB4MTMsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiNywgMHhmNywgMHg1YSwgMHhmNywgMHhmLCAweDRhLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MSwgMHg4MywgMHhhLCAweGY3LCAweDhjLCAweDcyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhkZSwgMHgxYSwgMHhmNywgMHgzZiwgMHg3ZSwgMHgxZCwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDVlLCAweDFkLCAweGY3LCAweDYsIDB4ZjksIDB4NTAsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDViLCAweDkzLCAweDllLCAweGY3LCAweDI1LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTUsIDB4YjEsIDB4ZjcsIDB4MzQsIDB4NzcsIDB4NmQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGU5LCAweDFhLCAweGFjLCAweDY2LCAweDFkLCAweGY3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhjZCwgMHhmYiwgMHgyZSwgMHgxZSwgMHgzYiwgMHg2LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4OWEsIDB4OTcsIDB4ZGEsIDB4OTIsIDB4OCwgMHg5ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDc4LCAweDcsIDB4ZDQsIDB4ODQsIDB4OTYsIDB4N2YsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmYywgMHgzYiwgMHg4ZCwgMHhhLCAweGY3LCAweDRhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTgsIDB4NywgMHhhYywgMHg5NiwgMHg4YiwgMHhhOSwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI2LCAweDhhLCAweDc0LCAweDFkLCAweDgyLCAweGE4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4ZjksIDB4MTAsIDB4YTYsIDB4MTIsIDB4ZDQsIDB4ZGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhlMiwgMHg1YywgMHhlOSwgMHgxMywgMHg3OCwgMHg5NywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweGY4LCAweGI5LCAweDYsIDB4OWIsIDB4OGQsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHhiYiwgMHhiMywgMHg1ZiwgMHgyZCwgMHgxZSwgMHhmYiwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEwLCAweGMxLCAweDY5LCAweDFhLCAweDZlLCAweGM0LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4NjUsIDB4MWUsIDB4MTMsIDB4YjQsIDB4OWMsIDB4N2QsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHgyMywgMHgxYSwgMHgzOCwgMHg4MiwgMHg0NiwgMHg1NCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDkyLCAweDk5LCAweDg3LCAweDFlLCAweDg5LCAweDkzLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OGEsIDB4OTcsIDB4OCwgMHg5ZiwgMHg4OSwgMHg3YywgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDFiLCAweDcxLCAweDc4LCAweDc3LCAweDZlLCAweDc1LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4ZGQsIDB4ZjcsIDB4MSwgMHhjZiwgMHhlZiwgMHhlNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGZiLCAweDQsIDB4YmUsIDB4NDYsIDB4OGQsIDB4MWYsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDEzLCAweDc4LCAweGY3LCAweDMsIDB4YmIsIDB4YTIsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHgxYSwgMHhmNiwgMHgyYywgMHhiMywgMHg0MywgMHhmYiwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweGZiLCAweDNhLCAweDRjLCAweDFlLCAweGZiLCAweGZjLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg3MywgMHg4MCwgMHg2NiwgMHg4OCwgMHgxZSwgMHhlLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZjcsIDB4NmUsIDB4NzcsIDB4MTIsIDB4YjAsIDB4ZTMsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhmNywgMHgzMCwgMHhkYywgMHgxMywgMHhkYSwgMHgzNCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGQ2LCAweGZiLCAweDgsIDB4NjcsIDB4NDQsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg4YywgMHg2ZiwgMHhhYSwgMHhhNSwgMHhhNCwgMHg5NywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk0LCAweDgwLCAweGE0LCAweDlhLCAweDFhLCAweDEzLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YjEsIDB4MzcsIDB4YSwgMHhjYiwgMHg4OSwgMHhhLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4YTQsIDB4MWUsIDB4NmQsIDB4ZjgsIDB4NDYsIDB4MjcsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHgxZCwgMHhmNywgMHg2ZSwgMHg3NywgMHgxLCAweGFhLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2MsIDB4ZGMsIDB4MywgMHgzNCwgMHgxZCwgMHhmYiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NDQsIDB4NjMsIDB4N2IsIDB4YTQsIDB4NmYsIDB4YWEsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHhhMSwgMHhhMCwgMHgxZSwgMHhiMiwgMHg3LCAweGFhLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4YSwgMHhiMywgMHg2NiwgMHhjMSwgMHhlOSwgMHhiMSwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGE0LCAweDFlLCAweGZiLCAweDFmLCAweGY4LCAweDQ2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4MjgsIDB4NSwgMHhhMiwgMHhhMiwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDlhLCAweDFiLCAweGFiLCAweDhjLCAweDZmLCAweDg3LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4N2YsIDB4ODAsIDB4ODQsIDB4MWYsIDB4ZmIsIDB4MmUsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4NGYsIDB4MWQsIDB4ZjcsIDB4NmEsIDB4NzcsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGNlLCAweGY4LCAweDhmLCAweDI1LCAweDFkLCAweGViLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4MjksIDB4YSwgMHg0ZiwgMHgxZCwgMHhkMywgMHhmNSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YzQsIDB4ZjgsIDB4YTgsIDB4ODMsIDB4MWQsIDB4OTYsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHgxYiwgMHg5NywgMHg5OCwgMHg4NCwgMHg0NSwgMHgxZCwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDkxLCAweDdmLCAweDFmLCAweGEzLCAweDVjLCAweDc3LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4MWIsIDB4NDgsIDB4NmQsIDB4NGQsIDB4NWYsIDB4ODMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3YSwgMHhmYiwgMHg5YywgMHgyOSwgMHhhLCAweDRmLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4ZWUsIDB4MTIsIDB4YjAsIDB4ZTMsIDB4NDYsIDB4ZTMsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhmMCwgMHhlYSwgMHgzYSwgMHhkYywgMHgxMywgMHhkOCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIzLCAweGY3LCAweGEwLCAweDI4LCAweDFkLCAweDEzLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgzZSwgMHgxZCwgMHgxMywgMHhiOCwgMHg4MCwgMHgzYywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGQzLCAweDAsIDB4ZmIsIDB4NmIsIDB4ZjgsIDB4ODgsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhlMiwgMHg4MSwgMHhjNSwgMHhmNywgMHg5NSwgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGEzLCAweGNkLCAweGFkLCAweGY3LCAweDE3LCAweGFkLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZTMsIDB4NjQsIDB4ZTMsIDB4M2QsIDB4YWQsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDk4LCAweGFlLCAweDEzLCAweGRhLCAweDQwLCAweGY3LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTAsIDB4MjQsIDB4MWQsIDB4MTMsIDB4ZGMsIDB4ODAsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGViLCAweGZiLCAweDI5LCAweGZiLCAweDgsIDB4NWMsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHgxZCwgMHgxZSwgMHg5NCwgMHg4NiwgMHg5YSwgMHg5YSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGJhLCAweDQwLCAweGFhLCAweGIxLCAweDk5LCAweGFjLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4NTcsIDB4NDMsIDB4MWUsIDB4N2IsIDB4NGYsIDB4YSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweGEsIDB4YmQsIDB4YWMsIDB4YjAsIDB4MWUsIDB4MTMsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmYiwgMHgzOSwgMHhmOCwgMHhhZSwgMHg2NywgMHhhLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4YWYsIDB4YTgsIDB4OTMsIDB4YSwgMHg2ZSwgMHg2NywgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGE4LCAweGFmLCAweDFlLCAweGUsIDB4ZjcsIDB4Y2EsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg1YiwgMHhjZSwgMHhmNywgMHg3MCwgMHhhOSwgMHg4OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDczLCAweGEzLCAweDEyLCAweGIxLCAweGUyLCAweDRhLCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4ZGMsIDB4MTMsIDB4NmQsIDB4ZjcsIDB4YzYsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3MSwgMHg5YywgMHhhOSwgMHg1MiwgMHhlMSwgMHgxYiwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDk4LCAweGY3LCAweDI2LCAweGM4LCAweDFmLCAweDdmLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1NiwgMHg2YSwgMHg1OSwgMHg1ZiwgMHg1NCwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDhiLCAweGY3LCAweGQsIDB4ZWUsIDB4MWYsIDB4ZjcsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweDkzLCAweGJkLCAweDdjLCAweGY3LCAweDE5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4NTgsIDB4NmQsIDB4N2YsIDB4NmEsIDB4NjIsIDB4MWUsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2ZSwgMHhhMywgMHg0OSwgMHgxYiwgMHgzNSwgMHg0MywgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDY1LCAweGE0LCAweDgwLCAweDljLCAweGJhLCAweDhiLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4MWYsIDB4MTMsIDB4YWQsIDB4YTgsIDB4OWUsIDB4YTQsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHg4OSwgMHg1NywgMHgyNCwgMHg4NywgMHgxZSwgMHhmYiwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDQxLCAweDZkLCAweDMxLCAweDFhLCAweDYxLCAweGFiLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4ZWUsIDB4OTIsIDB4YjcsIDB4YjIsIDB4YmEsIDB4MWUsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHgxNSwgMHg3ZCwgMHg1MiwgMHg1ZCwgMHg2NCwgMHg1NCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGE1LCAweGNhLCAweGE0LCAweGE3LCAweGY3LCAweGYsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4YywgMHg1NywgMHg1LCAweDhjLCAweDQ0LCAweDlkLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4MWEsIDB4YzksIDB4ZjcsIDB4NjUsIDB4MTUsIDB4YjUsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHhkZCwgMHhkZSwgMHgxYiwgMHhkMywgMHg5MCwgMHgzNywgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4ZTIsIDB4ZmIsIDB4NTYsIDB4NzYsIDB4ZjcsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHhmNywgMHg5MSwgMHhmNywgMHgyNSwgMHg2ZSwgMHhhOCwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGQ4LCAweGY3LCAweDMxLCAweGQ2LCAweDEzLCAweGRjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4OGUsIDB4YSwgMHhjYiwgMHhjZiwgMHhhYSwgMHhiZiwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGEyLCAweDUyLCAweDdmLCAweDFmLCAweGExLCAweGM1LCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4YzIsIDB4YjgsIDB4YmEsIDB4ZWUsIDB4MTksIDB4NjMsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg3OSwgMHg2ZCwgMHg5MywgMHgxZiwgMHgxMywgMHhlYywgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDljLCAweDczLCAweGE1LCAweDFiLCAweGE5LCAweDliLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4Y2EsIDB4MzMsIDB4YjEsIDB4NGUsIDB4ZmIsIDB4MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4MzgsIDB4ZmIsIDB4MzgsIDB4ZmIsIDB4MzAsIDB4ZjMsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHg4OSwgMHgxZiwgMHg2NSwgMHgyZSwgMHg5MiwgMHg4NiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4OTQsIDB4YmQsIDB4OGQsIDB4ODYsIDB4YSwgMHhlMiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGY3LCAweDRmLCAweGFiLCAweGY3LCAweGQsIDB4YWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg3NywgMHgxMiwgMHhhMywgMHhkMCwgMHhmNywgMHg2OCwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDI2LCAweDFkLCAweDEzLCAweDdjLCAweDNkLCAweDFkLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjQsIDB4MjcsIDB4MWQsIDB4ODcsIDB4MWQsIDB4ZjcsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhmNywgMHg2ZSwgMHg3NywgMHgxLCAweGFjLCAweGQwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4ZjEsIDB4MywgMHgyOCwgMHhhLCAweGZiLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHgyNCwgMHhhLCAweDg3LCAweDFkLCAweGY3LCAweDExLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmEsIDB4NzcsIDB4MSwgMHhhNCwgMHhkMCwgMHhmNywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweDMsIDB4MjgsIDB4YSwgMHhmYiwgMHg4MCwgMHhmNywgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDFkLCAweGUsIDB4ZTIsIDB4ODEsIDB4ZDAsIDB4ZjcsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhmNywgMHgxZCwgMHhhZiwgMHhjYSwgMHhlZiwgMHgxMiwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDc3LCAweGVkLCAweGYwLCAweGVkLCAweDEzLCAweGZhLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhmNiwgMHhmYiwgMHg3OSwgMHhmNywgMHhhNiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGEsIDB4OGYsIDB4YSwgMHhmOSwgMHgzYSwgMHgyNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzMsIDB4ZjgsIDB4ODAsIDB4MjcsIDB4MWQsIDB4OGYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDNhLCAweDI3LCAweGEsIDB4YmQsIDB4ZjgsIDB4ODAsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDhmLCAweGEsIDB4ZjksIDB4MzYsIDB4MjcsIDB4YSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDgwLCAweDI1LCAweDFkLCAweGUsIDB4OGYsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGVlLCAweDEsIDB4ODIsIDB4ZWQsIDB4OTEsIDB4ZGYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHgyMywgMHhhLCAweDcyLCAweGY4LCAweGMyLCAweDE1LCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg1YiwgMHgxNiwgMHg2YiwgMHhhLCAweGUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDc2LCAweDc3LCAweDEsIDB4YTgsIDB4ZTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhlNSwgMHgzLCAweGY3LCAweGIsIDB4ZjcsIDB4YWEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHhjMywgMHhiZiwgMHhjYSwgMHhkNCwgMHhkMSwgMHgzZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGZiLCAweDIzLCAweDQ4LCAweDY1LCAweDU4LCAweGZiLCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhmNywgMHg0YywgMHhkNywgMHgxZSwgMHhmNywgMHg4OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDE1LCAweGI0LCAweDYwLCAweDY5LCAweDliLCAweDYxLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTksIDB4MzgsIDB4ZmIsIDB4MSwgMHhmYiwgMHgxNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGU2LCAweDI0LCAweDY1LCAweDFkLCAweGY3LCAweDMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4ZjcsIDB4YiwgMHg1ZSwgMHhmNywgMHhkLCAweDJlLCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZTYsIDB4YmIsIDB4NmEsIDB4YTksIDB4MmMsIDB4NTksIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg1NywgMHhhNSwgMHg1MCwgMHg4ZiwgMHgxOSwgMHg2MSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDg0LCAweGI4LCAweDZkLCAweGIzLCAweDZlLCAweDE5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHg0YiwgMHhhYywgMHg2ZCwgMHhmNywgMHhmLCAweGNjLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4YWUsIDB4NTQsIDB4OTUsIDB4NGYsIDB4MTksIDB4ZSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY4LCAweDI5LCAweGMyLCAweGQ2LCAweGYyLCAweDczLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhiNiwgMHgxYSwgMHhmNywgMHg4YywgMHg3ZSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4NywgMHgzZiwgMHg3MSwgMHg3YywgMHg4MiwgMHgxZCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweDFhLCAweGY3LCAweDU4LCAweDQ2LCAweGEsIDB4ZDAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHgxNSwgMHhhOCwgMHg2LCAweGIwLCAweDhlLCAweGFjLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MWIsIDB4YTYsIDB4OWYsIDB4NzksIDB4ODIsIDB4YTAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhhYSwgMHhhMiwgMHg3ZSwgMHg5ZSwgMHgxYiwgMHhkOSwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDY1LCAweGEsIDB4NWUsIDB4ODMsIDB4N2EsIDB4ODAsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3NywgMHg3MiwgMHg5OCwgMHg5NSwgMHg3NCwgMHgxZiwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDc2LCAweDljLCAweDc0LCAweDU0LCAweGEsIDB4NzEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZlLCAweDc3LCAweDEsIDB4YjksIDB4ZTUsIDB4ZjcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHgzLCAweDJmLCAweDFkLCAweGE2LCAweDE1LCAweGYzLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4Y2EsIDB4ZTcsIDB4YmUsIDB4MzQsIDB4ODAsIDB4YSwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDU4LCAweGZiLCAweGMsIDB4NzYsIDB4ZjcsIDB4MzcsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmNywgMHgzYiwgMHhmNywgMHg5MCwgMHgzYiwgMHgxZCwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDg2LCAweDk0LCAweGEsIDB4OWMsIDB4NTcsIDB4YSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NmUsIDB4NzcsIDB4MSwgMHhhOCwgMHhlNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGU1LCAweDMsIDB4YTgsIDB4ZjcsIDB4N2IsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhlNSwgMHgyMSwgMHg2NSwgMHgxZCwgMHhmNywgMHgxYywgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweDJkLCAweGU1LCAweGZiLCAweDE3LCAweGZiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MjEsIDB4ZmIsIDB4ZiwgMHgxZSwgMHhlNSwgMHhhZCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweGM5LCAweGNhLCAweGNhLCAweGU3LCAweGI3LCAweDMwLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzYiwgMHg1MywgMHg1OCwgMHhmYiwgMHhjLCAweDgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4ZDUsIDB4MWUsIDB4YzUsIDB4ZjcsIDB4ODYsIDB4MjQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGEsIDB4ZjcsIDB4NmEsIDB4NzcsIDB4NGMsIDB4MWQsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmMywgMHhjMiwgMHhkMSwgMHhjYSwgMHhlNywgMHhiZSwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGEsIDB4NDQsIDB4NDksIDB4NTgsIDB4ZmIsIDB4YywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNhLCAweGQ1LCAweDFlLCAweDczLCAweGY3LCAweDhkLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZSwgMHg3MSwgMHhhLCAweGQzLCAweGY1LCAweDRjLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4MTUsIDB4ZjMsIDB4YzIsIDB4YmYsIDB4Y2EsIDB4ZTcsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxLCAweDgwLCAweGEsIDB4NDgsIDB4NjUsIDB4NTgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDc0LCAweGY3LCAweDRjLCAweGQ1LCAweDFlLCAweDY5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4MTUsIDB4YTgsIDB4NiwgMHg5MSwgMHg5YywgMHg5YiwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDdlLCAweDgsIDB4NzEsIDB4ZDEsIDB4YjAsIDB4NzEsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg3YSwgMHg2MywgMHg3YywgMHg3YSwgMHg3MSwgMHg5MiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NTEsIDB4NTAsIDB4YWQsIDB4NzYsIDB4NTQsIDB4YSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4Y2EsIDB4ZWYsIDB4MTIsIDB4YTgsIDB4ZTUsIDB4NzksIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhlZiwgMHg3NywgMHhlNSwgMHgxMywgMHhmMiwgMHgyZiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDE1LCAweGYzLCAweGMyLCAweGQ2LCAweGNhLCAweGU3LCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4ODAsIDB4YSwgMHg0OCwgMHg0NiwgMHg1OCwgMHhmYiwgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4ZjcsIDB4MzUsIDB4ZDUsIDB4MWUsIDB4MTMsIDB4ZWMsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkNCwgMHgxNSwgMHgzMCwgMHhhLCAweGY3LCAweDViLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4YSwgMHhlLCAweGY3LCAweDYzLCAweDk2LCAweDc2LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YjksIDB4ZjcsIDB4YSwgMHg4YiwgMHhjZCwgMHg1NSwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg1LCAweDc3LCAweDEyLCAweGY3LCAweDc2LCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhlMSwgMHgxMywgMHhlZSwgMHhhOSwgMHhmNywgMHg3YywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDhjLCAweGI2LCAweGZjLCAweDhjLCAweDYsIDB4ZjcsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiMSwgMHgxNSwgMHgxMywgMHhmNSwgMHg2YywgMHhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4NCwgMHg2YywgMHhhLCAweGUsIDB4MzAsIDB4NzYsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhmOCwgMHgzMiwgMHhhNywgMHhlNiwgMHg3NywgMHgxLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjcsIDB4OTksIDB4ZTUsIDB4MywgMHhmNywgMHg0NywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDM1LCAweGY3LCAweGM2LCAweDUsIDB4YTUsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg0ZiwgMHg0YiwgMHgxYSwgMHhmYiwgMHgyMywgMHg0OCwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDY3LCAweDcwLCAweDliLCAweGE1LCAweDc3LCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZmIsIDB4NDAsIDB4MTUsIDB4YjAsIDB4NiwgMHhjYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4NSwgMHg3ZCwgMHhhOCwgMHhhYSwgMHg4NCwgMHhhZCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJjLCAweGQxLCAweGY3LCAweDFmLCAweGVlLCAweGU3LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4NGUsIDB4YjEsIDB4MWYsIDB4Y2MsIDB4ZjcsIDB4MTEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDYsIDB4NTIsIDB4ZmIsIDB4MSwgMHg1LCAweDk3LCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4OTEsIDB4NjgsIDB4MWIsIDB4ZmIsIDB4MWEsIDB4MzksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGZiLCAweGYsIDB4MzYsIDB4YWYsIDB4NDIsIDB4YzcsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhYywgMHhjYiwgMHgxNSwgMHg2YywgMHhjNiwgMHg4MywgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDFhLCAweGYzLCAweGMyLCAweGJmLCAweGNhLCAweGFiLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4NzQsIDB4YTEsIDB4MWUsIDB4ZSwgMHg3NiwgMHgxZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGUxLCAweDE1LCAweDJlLCAweDcsIDB4OGQsIDB4ODgsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDE5LCAweDIyLCAweGEsIDB4NTcsIDB4ZjgsIDB4MzksIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg3NiwgMHgxZCwgMHhmNywgMHg0NSwgMHhmOCwgMHg4ZiwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDliLCAweGZkLCAweDJkLCAweDI1LCAweGEsIDB4ZSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGY4LCAweDI0LCAweDc3LCAweGY3LCAweDg4LCAweDkwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhmOCwgMHg4ZiwgMHgyNSwgMHgxZCwgMHhmNywgMHhkLCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4MjUsIDB4YSwgMHhlLCAweDgxLCAweGM3LCAweGY4LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTIsIDB4MjcsIDB4ZWYsIDB4MTIsIDB4ZDIsIDB4ZGYsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHhlZCwgMHhlZiwgMHg0OSwgMHhkZiwgMHgxMywgMHhkMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDgxLCAweDI1LCAweGEsIDB4MTMsIDB4YWMsIDB4ZmIsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhkOCwgMHgxNSwgMHgzMCwgMHhhLCAweGY3LCAweDVhLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4YSwgMHhlLCAweDk2LCAweGEsIDB4ZjgsIDB4YzIsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MSwgMHg3NywgMHgxMiwgMHhmNywgMHhlOCwgMHhmNywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDkwLCAweDQwLCAweDFkLCAweDEzLCAweDc4LCAweDQxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOCwgMHhmNywgMHg0NiwgMHgyNCwgMHhhLCAweDhlLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzMsIDB4NzcsIDB4MSwgMHhkNiwgMHhkZiwgMHhmNywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDMsIDB4OTAsIDB4ZmIsIDB4NWIsIDB4MTUsIDB4NzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg5ZCwgMHg3LCAweDQzLCAweDdiLCAweGEwLCAweGNiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4NywgMHg1ZiwgMHgxZCwgMHg3NSwgMHgxZiwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDUsIDB4OGMsIDB4ZjcsIDB4YmIsIDB4NiwgMHg4NiwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDFkLCAweDc2LCAweDZkLCAweDFmLCAweGZkLCAweDRhLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg4NywgMHg2YywgMHg0OSwgMHg4NywgMHgxZSwgMHhmNywgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGIzLCAweDE1LCAweDVhLCAweGEsIDB4OTYsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGY3LCAweDUwLCAweDI3LCAweGVmLCAweDEyLCAweGYxLCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4ZWQsIDB4MTMsIDB4YWMsIDB4NDAsIDB4MWQsIDB4MTMsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhhLCAweGZiLCAweDliLCAweGY3LCAweDg4LCAweDE1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4NGIsIDB4YSwgMHg4ZiwgMHhhLCAweGY4LCAweDYwLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweGY3LCAweDkyLCAweDhiLCAweDllLCAweGY5LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHgxLCAweGVlLCAweDVkLCAweDFkLCAweDliLCAweGQ0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDAsIDB4NywgMHhmNywgMHgyZiwgMHhlOSwgMHg1LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHgyZiwgMHgyYywgMHg1LCAweGY3LCAweDUwLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHg3MywgMHgxZCwgMHhmYiwgMHg4OCwgMHg3LCAweDM0LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1YSwgMHg3LCAweGUyLCAweGMwLCAweDUsIDB4ZmIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4MzMsIDB4N2EsIDB4YSwgMHhlLCAweDhmLCAweGEsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDliLCAweGI3LCAweDc3LCAweDEsIDB4ZTEsIDB4ZGYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDE2LCAweGY3LCAweDg0LCAweDlhLCAweDYsIDB4NTEsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg5ZCwgMHhjNSwgMHgxYSwgMHhmNywgMHhjZCwgMHg3LCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NSwgMHhiNywgMHg3LCAweDNlLCAweDU2LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg1ZCwgMHhhLCAweGZiLCAweDQwLCAweDcsIDB4M2MsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDVmLCAweDcsIDB4ZGEsIDB4YmYsIDB4NSwgMHhmYiwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NTcsIDB4NzcsIDB4NzQsIDB4NTAsIDB4ODQsIDB4MWQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg4NSwgMHhiMCwgMHg2YywgMHhiMiwgMHhmNywgMHhiNiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDllLCAweGE5LCAweDZkLCAweGFmLCAweDZiLCAweGFmLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4ZjcsIDB4NCwgMHhmNywgMHhiNSwgMHhlZiwgMHhmNywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDEzLCAweGE3LCAweDAsIDB4ZjgsIDB4YTcsIDB4ZjcsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgyYywgMHg4OCwgMHg4YSwgMHg4MSwgMHhhNCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDgxLCAweDlmLCAweDZkLCAweDkwLCAweDVhLCAweDgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg4MCwgMHhhMSwgMHhmNywgMHg3ZSwgMHg3NSwgMHg2LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ODUsIDB4OGIsIDB4ZmIsIDB4NjcsIDB4MWIsIDB4ZjcsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDllLCAweDhmLCAweDkwLCAweGY3LCAweDQsIDB4ZjcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDg0LCAweDI5LCAweDk2LCAweDFlLCAweGEyLCAweGY3LCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZGEsIDB4NiwgMHg2NCwgMHg2NiwgMHg4ZCwgMHg4YywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGFiLCAweDAsIDB4OGQsIDB4NmUsIDB4NzcsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHgxYiwgMHhmYiwgMHg0YSwgMHhmYiwgMHgxZiwgMHgyNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweGZiLCAweDY0LCAweGY3LCAweDE4LCAweGZiLCAweDQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhhOSwgMHhhOCwgMHg4ZCwgMHg4YywgMHhhOSwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDAsIDB4OGQsIDB4YTksIDB4YWEsIDB4OGMsIDB4YTksIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmMiwgMHg2LCAweGI3LCAweGY3LCAweDNjLCAweDUsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDUyLCAweGZiLCAweDIsIDB4NWUsIDB4N2IsIDB4NWIsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMCwgMHg4OSwgMHgxOCwgMHg2NywgMHg3NywgMHg4ZCwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDI3LCAweGJhLCAweDE1LCAweDEzLCAweGIzLCAweDAsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg1YywgMHgzNywgMHhmYiwgMHgyMywgMHg1YiwgMHhmNywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNkLCAweGY3LCAweDM0LCAweGJmLCAweGY3LCAweDIyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZTMsIDB4OTYsIDB4NTQsIDB4NTksIDB4MWUsIDB4ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ODEsIDB4YTUsIDB4NzEsIDB4Y2UsIDB4ZjcsIDB4NjYsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYSwgMHhhOCwgMHgxMiwgMHhhOSwgMHhlNSwgMHhmNywgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGY3LCAweDMzLCAweGVhLCAweDEzLCAweDdlLCAweGY4LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4MTUsIDB4NGMsIDB4YTQsIDB4YjMsIDB4NmIsIDB4Y2MsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHhiYywgMHhkZCwgMHhjZSwgMHhhYSwgMHgxZiwgMHg4MCwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NmUsIDB4NzYsIDB4NjAsIDB4NTAsIDB4NGIsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweDg1LCAweGY3LCAweDMyLCAweGJmLCAweDg5LCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4NiwgMHhmNywgMHgzNiwgMHhmYiwgMHhhLCAweGFhLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4NmEsIDB4NWUsIDB4NmMsIDB4NzQsIDB4MWUsIDB4ZDAsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg5MiwgMHg2ZSwgMHgxYiwgMHhmYiwgMHg0MywgMHg2ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweDUwLCAweGZiLCAweDNlLCAweGY3LCAweDgsIDB4NGUsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhkNSwgMHg4ZiwgMHhlNiwgMHhiOCwgMHgxZiwgMHhmYiwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU4LCAweDE1LCAweGY3LCAweGMsIDB4Y2MsIDB4YTksIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweDkyLCAweGZiLCAweDNjLCAweDUyLCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4ZmIsIDB4NiwgMHg3MSwgMHgzZiwgMHgzZCwgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ZjcsIDB4NGMsIDB4ZGMsIDB4MWUsIDB4ZjcsIDB4YmYsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhhOCwgMHg4ZCwgMHhmNCwgMHhkYywgMHhiYywgMHhhNywgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDFlLCAweDcwLCAweDcsIDB4ZSwgMHhmNywgMHg1YiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDdkLCAweDc2LCAweGY5LCAweDFjLCAweGI0LCAweGY3LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4ZDIsIDB4ZTEsIDB4ZjcsIDB4N2QsIDB4ZjAsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhkMywgMHg3ZSwgMHgxNSwgMHhhMSwgMHg2LCAweDliLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YTAsIDB4MWUsIDB4MTMsIDB4YmMsIDB4YTksIDB4YjIsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHgxYiwgMHhmNywgMHgyMywgMHhjZiwgMHhlYiwgMHhlMCwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGM0LCAweDM1LCAweGJkLCAweDFmLCAweDNhLCAweGJhLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4ZDQsIDB4MWEsIDB4YzksIDB4YmUsIDB4YWEsIDB4YmQsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHgzMSwgMHgzOSwgMHg5YywgMHgxZSwgMHhhNCwgMHg2LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4MWQsIDB4NzIsIDB4NWYsIDB4YWQsIDB4NGYsIDB4NTUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDYsIDB4MTMsIDB4N2MsIDB4ZjcsIDB4NjEsIDB4ZjgsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhhLCAweGFiLCAweDgxLCAweGExLCAweDkwLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4NzcsIDB4ZjcsIDB4YjAsIDB4YTIsIDB4OTcsIDB4NzcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg3NywgMHgxMiwgMHhmNywgMHhhYywgMHhkMSwgMHgxMywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDg3LCAweDE1LCAweDk4LCAweDYsIDB4OTQsIDB4OTEsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg5NywgMHgxYiwgMHg5YiwgMHg4YywgMHg5ZSwgMHg4NCwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDgsIDB4MTMsIDB4YjYsIDB4ODcsIDB4OWEsIDB4OWIsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHgxYiwgMHhjYiwgMHhkZSwgMHhiNSwgMHhlMiwgMHhjNywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGEsIDB4YjcsIDB4YjgsIDB4NzYsIDB4MjUsIDB4YTEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg2LCAweDEzLCAweGFlLCAweDg3LCAweGY3LCAweDFkLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg2LCAweDg3LCAweDg4LCAweDdjLCAweDg0LCAweDgyLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4ODAsIDB4OTEsIDB4OTEsIDB4N2MsIDB4MWYsIDB4MTMsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg3ZiwgMHg3YiwgMHg3YywgMHgxZCwgMHhlNSwgMHg1OCwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDZiLCAweDFhLCAweDUyLCAweDVhLCAweDk1LCAweGEsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweDc2LCAweGY3LCAweDMsIDB4ZjcsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDgwLCAweDFkLCAweGY5LCAweDE3LCAweDk3LCAweGEsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHgxMiwgMHhmNywgMHg2OSwgMHhlZCwgMHg4ZiwgMHhmMSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDEzLCAweGNjLCAweDY4LCAweGEsIDB4YTMsIDB4ZGQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NSwgMHg3ZSwgMHgxZCwgMHgxMywgMHgzYywgMHg0YiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4MTMsIDB4NGMsIDB4NWUsIDB4MWQsIDB4OGEsIDB4ZjksIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxMywgMHg5YSwgMHg2ZiwgMHg5ZiwgMHgzNSwgMHgxZCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDFkLCAweGY3LCAweDViLCAweDE2LCAweDZmLCAweDlmLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NzcsIDB4NjIsIDB4MWQsIDB4ZSwgMHg3YiwgMHhhLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ZjgsIDB4ZjIsIDB4YjEsIDB4ZjcsIDB4NzQsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGE1LCAweGY4LCAweDk5LCAweGEyLCAweDNmLCAweDFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ZjksIDB4NTQsIDB4MzEsIDB4YSwgMHhlMiwgMHg4YiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDFhLCAweGE5LCAweGY3LCAweDc0LCAweDc3LCAweDZhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg2YywgMHgyMSwgMHgxYiwgMHhmYiwgMHgxMywgMHg1NiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM4LCAweGY4LCAweDgwLCAweDMxLCAweGEsIDB4ZmIsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhmOCwgMHhiMSwgMHhhYSwgMHhmNywgMHg4NCwgMHhhOCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4ZjgsIDB4YywgMHgxNSwgMHhmNywgMHhkLCAweDYsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgzLCAweDUsIDB4MzgsIDB4ODQsIDB4NzksIDB4MzAsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg4MCwgMHg4MywgMHg5MSwgMHg5MiwgMHgxZiwgMHg5NSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDllLCAweDFhLCAweGEyLCAweDdkLCAweDk5LCAweDc1LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4ODMsIDB4NjcsIDB4NjUsIDB4YTgsIDB4NmIsIDB4YmQsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhmMSwgMHhmNywgMHg0MywgMHhhYywgMHgxZSwgMHg5YSwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweGU0LCAweDljLCAweGY3LCAweGMsIDB4OCwgMHhmNywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg5NSwgMHhhYSwgMHg1LCAweGZiLCAweDEyLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg5NywgMHg5OSwgMHhmNywgMHgwLCAweGNjLCAweDFiLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4ODksIDB4ODAsIDB4MWYsIDB4ODIsIDB4N2UsIDB4N2YsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg3ZiwgMHg5NywgMHg3NSwgMHhhNCwgMHhhMywgMHhhMiwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGE4LCAweDZjLCAweGIwLCAweDU3LCAweGZiLCAweDI2LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NmYsIDB4NTksIDB4ODQsIDB4MWUsIDB4ZmIsIDB4OSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg5MSwgMHhhLCAweDk2LCAweGY4LCAweDhmLCAweDJiLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZiwgMHhmNywgMHgzYiwgMHg1LCAweDQ5LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGEsIDB4ZjcsIDB4MWIsIDB4ZjgsIDB4OGYsIDB4MzEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGY4LCAweDhmLCAweGMwLCAweGYzLCAweDc3LCAweDEsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgyYywgMHgxNSwgMHg2ZSwgMHg5YiwgMHhmYiwgMHgxNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjcsIDB4MTQsIDB4OWEsIDB4ZjcsIDB4MTIsIDB4YWEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg2LCAweDRlLCAweDgyLCAweDVjLCAweDYwLCAweDUzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4NjYsIDB4YjYsIDB4YzgsIDB4ODEsIDB4MWYsIDB4ZSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDlmLCAweGVmLCAweDEsIDB4ZjcsIDB4YSwgMHhlZCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YSwgMHhmOCwgMHhkMSwgMHgxNSwgMHgzNiwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhmOCwgMHg5NCwgMHhhZCwgMHhmNywgMHgxNywgMHhhZCwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGY3LCAweDViLCAweDY5LCAweGFkLCAweDEzLCAweGUwLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZjcsIDB4MTUsIDB4NTUsIDB4YjUsIDB4NWUsIDB4YzQsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg1MywgMHg2MCwgMHg1ZCwgMHg1NSwgMHgxZSwgMHhhZCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGEzLCAweDlmLCAweGI0LCAweGI4LCAweDFlLCAweDEzLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4YTgsIDB4NmQsIDB4NjcsIDB4NjcsIDB4NmUsIDB4NmUsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg3OCwgMHhiNCwgMHhhNCwgMHgxZiwgMHhlLCAweDczLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4NzYsIDB4ZjcsIDB4MzksIDB4NzcsIDB4MSwgMHhjYiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4YywgMHgxNiwgMHg3MiwgMHg3YiwgMHg2YywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDFhLCAweDZkLCAweGEwLCAweDY1LCAweGM1LCAweGI0LCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4YzIsIDB4OWEsIDB4MWUsIDB4N2IsIDB4OTIsIDB4NSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDY4LCAweDdiLCAweDZlLCAweDFiLCAweDczLCAweDc5LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YWIsIDB4YTgsIDB4YWEsIDB4OWQsIDB4OTksIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGY4LCAweGE4LCAweGY1LCAweDEsIDB4OGMsIDB4ZjgsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhhOCwgMHg2LCAweDkxLCAweDljLCAweDk4LCAweGI5LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4OCwgMHg2YywgMHhlNSwgMHg5ZiwgMHg3NywgMHg1MiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDYzLCAweDdjLCAweDc5LCAweDcxLCAweDkzLCAweDgsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg1ZSwgMHhhNiwgMHg3NiwgMHg1NCwgMHhhLCAweDczLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ZjcsIDB4M2YsIDB4MSwgMHg4OCwgMHhmOCwgMHg4ZiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDYsIDB4ZjcsIDB4MmMsIDB4MjIsIDB4MWQsIDB4OTQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHgxNSwgMHhiNSwgMHg2LCAweGY3LCAweDJjLCAweDIyLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4YSwgMHhhLCAweGY4LCAweDg4LCAweGI0LCAweGZjLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweGY5LCAweDE3LCAweDhhLCAweGEsIDB4ZmEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhmZSwgMHg3YywgMHg2LCAweGUsIDB4OTEsIDB4MWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGY3LCAweDFmLCAweDMsIDB4ZjcsIDB4ODAsIDB4ZjksIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1MSwgMHhhLCAweDZiLCAweDk5LCAweDcxLCAweDg0LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4ODksIDB4ODYsIDB4MWUsIDB4ODksIDB4ODcsIDB4ODcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg2NCwgMHhhLCAweGUsIDB4OTEsIDB4MWQsIDB4ZGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgzLCAweGY1LCAweGY4LCAweDQ1LCAweDE1LCAweDNjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHg3YywgMHhhNSwgMHg5MiwgMHg5MiwgMHg5MSwgMHg4YywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDU0LCAweDFkLCAweDczLCAweGZiLCAweGMsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg3NiwgMHhhNywgMHg3NiwgMHhmMywgMHg3NywgMHgxMiwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFmLCAweDEzLCAweGQ4LCAweGVjLCAweGZiLCAweGUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg3OCwgMHg1LCAweDNjLCAweGEsIDB4YWQsIDB4N2UsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg5MiwgMHg1YywgMHhhLCAweGUyLCAweGY4LCAweDQ1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHgxOCwgMHg3NywgMHgxLCAweGI2LCAweDk3LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHgzOCwgMHhmOSwgMHgyNSwgMHgxNSwgMHg0OCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdjLCAweDE2LCAweDQ4LCAweDFkLCAweGUsIDB4ZTIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg3NiwgMHhmNywgMHgxOCwgMHhmNywgMHgzLCAweDEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHgxZCwgMHgzLCAweGM0LCAweGY4LCAweDQ1LCAweDQ4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4NSwgMHg3OCwgMHg0OCwgMHhhLCAweGUsIDB4ZTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDc2LCAweGY3LCAweDE4LCAweGY3LCAweDMsIDB4MzgsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhiOCwgMHg5NywgMHgxZCwgMHgxMywgMHhkOCwgMHhjYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MTUsIDB4OTQsIDB4NzgsIDB4NSwgMHg0NiwgMHgxZCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDMzLCAweGEsIDB4ZjcsIDB4N2MsIDB4MTYsIDB4OTQsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGE5LCAweDk1LCAweGRkLCAweGNkLCAweGQyLCAweDFhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZGUsIDB4NTEsIDB4OTgsIDB4NzQsIDB4NzIsIDB4NmEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg2MywgMHhhZSwgMHg3ZSwgMHhhNSwgMHg5MiwgMHg5MSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4MTQsIDB4NzYsIDB4ZjgsIDB4YmQsIDB4ZTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg3NywgMHgxLCAweGY3LCAweDg0LCAweGEyLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHhmYiwgMHgyOSwgMHgxNSwgMHhhMCwgMHg2LCAweDhjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4NSwgMHhmNywgMHhmLCAweGEwLCAweGVjLCAweDllLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NjEsIDB4YjYsIDB4OGIsIDB4ZWIsIDB4YjksIDB4MWEsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHhhMiwgMHg4NCwgMHg5YywgMHg4NCwgMHg4LCAweDgyLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ODMsIDB4YTQsIDB4MWIsIDB4OWQsIDB4YTQsIDB4OTQsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHg3NCwgMHg5NywgMHg3OSwgMHg3MiwgMHg3ZCwgMHg4MSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDFmLCAweDc5LCAweDgzLCAweDc1LCAweDg0LCAweDYzLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhjMiwgMHg5MiwgMHhhYSwgMHg5MywgMHhhMSwgMHgxZSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDk2LCAweDk4LCAweGE1LCAweDFhLCAweGE0LCAweDc1LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NzEsIDB4NzYsIDB4NzUsIDB4NzIsIDB4NzEsIDB4OTYsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg3MSwgMHgxZSwgMHg5MywgMHg3NSwgMHg5MiwgMHg2YywgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDVmLCAweDhjLCAweDczLCAweDk0LCAweDc4LCAweDk0LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg3OSwgMHg3ZSwgMHg5MywgMHg3NSwgMHgxYiwgMHg3OSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDZjLCAweDY4LCAweGEyLCAweDgyLCAweDlkLCAweGExLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OTIsIDB4OWMsIDB4MWYsIDB4OWUsIDB4OTMsIDB4YTIsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHg4ZSwgMHg4LCAweDVkLCAweDhiLCAweDJiLCAweDYxLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OWMsIDB4NjQsIDB4YTIsIDB4MmEsIDB4OGQsIDB4ZmIsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZSwgMHhmYiwgMHg1NywgMHg3NiwgMHhmNywgMHgzOCwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDc2LCAweGY4LCAweDUwLCAweGUxLCAweGY3LCAweDM4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4Y2YsIDB4ZjcsIDB4NTQsIDB4NGYsIDB4ZWYsIDB4NGYsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhmNywgMHg1NCwgMHgxMywgMHhkOSwgMHgwLCAweGY3LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MTMsIDB4ZGEsIDB4MCwgMHg3NiwgMHhhLCAweDEzLCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhiNywgMHhhYywgMHhhZCwgMHhiYywgMHgxYiwgMHg4YywgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDUyLCAweDYzLCAweDFhLCAweDEzLCAweGRjLCAweDAsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3MiwgMHhhOCwgMHhhOCwgMHhhMCwgMHhhNCwgMHhhOSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGI5LCAweDAsIDB4YjMsIDB4NjIsIDB4YzQsIDB4OGMsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3OCwgMHgxZCwgMHg1ZiwgMHg2YSwgMHg2OSwgMHg1YSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRjLCAweDAsIDB4OGYsIDB4YjMsIDB4OTgsIDB4YTEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg4LCAweDY3LCAweGI2LCAweDgwLCAweGM2LCAweGMxLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4OTYsIDB4YzYsIDB4YWYsIDB4YjYsIDB4MWUsIDB4MTMsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDZkLCAweGEwLCAweDdlLCAweGExLCAweDg3LCAweGIzLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkYSwgMHgwLCAweDc4LCAweDFkLCAweDEzLCAweGRjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg2YSwgMHg2OSwgMHg1YSwgMHgxYiwgMHg4YSwgMHhiOSwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGIzLCAweDFhLCAweDEzLCAweGQ4LCAweDgwLCAweGE5LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NmUsIDB4NmUsIDB4NzYsIDB4NzIsIDB4NmQsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHgwLCAweDYzLCAweGI0LCAweDUyLCAweDhhLCAweDVkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YSwgMHhiNywgMHhhYywgMHhhZCwgMHhiYywgMHgxYiwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDdlLCAweDc1LCAweDZkLCAweDc2LCAweDgsIDB4MTMsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhhZiwgMHg2MCwgMHg5NiwgMHg1MCwgMHg1NSwgMHgxYSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDUwLCAweDY3LCAweDYwLCAweDFlLCAweDEzLCAweGQ5LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg3NiwgMHg5OCwgMHg3NSwgMHg4ZiwgMHg2MywgMHg4LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHhmNywgMHg2ZCwgMHg3NiwgMHhmNywgMHhhMiwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ZjcsIDB4ZGYsIDB4MTUsIDB4NDAsIDB4YzcsIDB4NGYsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhjNywgMHhjOCwgMHhkNSwgMHhkNiwgMHg0ZiwgMHhjNywgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDUwLCAweDRmLCAweDQwLCAweDFlLCAweGUsIDB4ZjksIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhmNywgMHgzLCAweDEsIDB4ZjcsIDB4MywgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzAsIDB4ZjcsIDB4NSwgMHhmNywgMHg3MCwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4NzAsIDB4ZjcsIDB4MywgMHhiNiwgMHgxNSwgMHg2NSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweGEsIDB4NzIsIDB4OTksIDB4YSwgMHhmNywgMHhlMCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweGFlLCAweDgxLCAweGEsIDB4NzEsIDB4OTksIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDE2LCAweDY1LCAweGFlLCAweDRkLCAweDFkLCAweDcxLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweGY5LCAweDE3LCAweDdmLCAweGE4LCAweDZmLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4Y2QsIDB4YTcsIDB4OTAsIDB4YTgsIDB4ZjcsIDB4OWIsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg3NywgMHgxMiwgMHhiMiwgMHhkNCwgMHhmNywgMHgxZiwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGQ0LCAweGY3LCAweDFmLCAweGQ0LCAweGE5LCAweGQzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZDQsIDB4MTMsIDB4NzcsIDB4ZjAsIDB4ZjcsIDB4ZSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGFhLCAweDc0LCAweGY4LCAweDI3LCAweGY5LCAweDI5LCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4NSwgMHgxMywgMHhiYiwgMHhmMCwgMHhmYywgMHg3OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDE1LCAweDNlLCAweDhkLCAweDFkLCAweGVkLCAweDI4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4NiwgMHgyOCwgMHg2MCwgMHgyOSwgMHgzYiwgMHgxZiwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDE1LCAweGJlLCAweDk1LCAweGVjLCAweGM3LCAweDFlLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjOCwgMHg5MiwgMHgyOCwgMHg1OSwgMHg1ZCwgMHg4NCwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDUwLCAweDdmLCAweGYwLCAweGJiLCAweDFmLCAweGY3LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjksIDB4MTUsIDB4M2QsIDB4YjYsIDB4MjgsIDB4ZWYsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhlZSwgMHhkOSwgMHhkYSwgMHg2MCwgMHhlZSwgMHgyOSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDYsIDB4MjcsIDB4NjAsIDB4MjgsIDB4M2MsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHgxNiwgMHgzZCwgMHg4ZCwgMHgxZCwgMHhlZSwgMHgyOCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDYsIDB4MjgsIDB4NjAsIDB4MjgsIDB4M2MsIDB4MWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg4YywgMHgxNSwgMHhiZCwgMHg5NCwgMHhlZCwgMHhjOCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDYsIDB4YzgsIDB4OTIsIDB4MjcsIDB4NWEsIDB4NWQsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHg0ZiwgMHg0ZCwgMHg4MiwgMHhmMCwgMHhiYiwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweDE2LCAweGJkLCAweDk2LCAweGVkLCAweGM2LCAweDFlLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjOSwgMHg5MiwgMHgyNywgMHg1YSwgMHg1ZCwgMHg4MywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDRlLCAweDgxLCAweGVmLCAweGJjLCAweDFmLCAweGUsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhhLCAweGNhLCAweGY3LCAweDc3LCAweDQyLCAweDFkLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YjEsIDB4YmMsIDB4YWIsIDB4YjYsIDB4OCwgMHhhNSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGFhLCAweDkxLCAweDk2LCAweDFkLCAweDczLCAweDc5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhhYywgMHgxNSwgMHhmNywgMHg2NywgMHhmNywgMHg1MSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NWUsIDB4ZmIsIDB4MmQsIDB4ZjcsIDB4MzcsIDB4NTEsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg3YSwgMHg2MSwgMHg1NSwgMHg2YSwgMHg1ZSwgMHg4LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4NzksIDB4NzEsIDB4OGYsIDB4MWQsIDB4ZmIsIDB4NTIsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHgxZCwgMHhmYiwgMHgzYywgMHhmOCwgMHg4NywgMHgzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3ZCwgMHgxNSwgMHhmOCwgMHg1NiwgMHhmOSwgMHg0NiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4NiwgMHhmYywgMHg1OSwgMHhmZCwgMHg0NiwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxLCAweDhiLCAweGMzLCAweGY3LCAweDU3LCAweGIzLCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ZjcsIDB4NmMsIDB4YjEsIDB4MSwgMHhmNywgMHgyNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MmYsIDB4ZjcsIDB4NCwgMHhmOCwgMHgxNCwgMHhhNSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2EsIDB4ZjcsIDB4OGYsIDB4MTUsIDB4ZmIsIDB4MmEsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZSwgMHgyNiwgMHhmNywgMHgxNSwgMHgxYiwgMHhmNywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4YzksIDB4ZDksIDB4YzUsIDB4MWYsIDB4NzcsIDB4OTUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDU2LCAweDU5LCAweDU5LCAweDUxLCAweDFiLCAweGZiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOCwgMHhjOCwgMHhmNywgMHgxYSwgMHg4YSwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDYsIDB4OTksIDB4YjMsIDB4NSwgMHhmYiwgMHhkMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4YWIsIDB4ODksIDB4YTUsIDB4OGYsIDB4YWEsIDB4OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweDYsIDB4OWEsIDB4YjMsIDB4NSwgMHhmYiwgMHhlZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTYsIDB4ZjEsIDB4ZTAsIDB4ZjUsIDB4OGMsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHhiYSwgMHg1MSwgMHgyYywgMHgxZiwgMHhhNSwgMHhmNywgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTQsIDB4NDksIDB4NjQsIDB4OWYsIDB4MjMsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhmYiwgMHg3LCAweDY4LCAweGZiLCAweDZmLCAweDRkLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHg2LCAweDdjLCAweDYzLCAweDUsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDg4LCAweDZkLCAweDhhLCAweDZlLCAweDhkLCAweDZkLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1LCAweDYsIDB4N2MsIDB4NjMsIDB4NSwgMHhlLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg5NiwgMHg5ZiwgMHg4YSwgMHg3NiwgMHhmOCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDEyLCAweGY3LCAweDNiLCAweGQyLCAweGY3LCAweDhlLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZDAsIDB4ZDIsIDB4MTMsIDB4YmMsIDB4ZjcsIDB4OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDE1LCAweGY3LCAweDNmLCAweDlmLCAweDYsIDB4NTcsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg5NSwgMHhiYiwgMHgxYSwgMHhmNywgMHhjMCwgMHhiZCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4OWMsIDB4NmMsIDB4NjYsIDB4OTQsIDB4MWYsIDB4OWYsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlZCwgMHgzMywgMHg5ZiwgMHg2LCAweGIwLCAweDk0LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YjUsIDB4MWIsIDB4YmMsIDB4ZmIsIDB4YzAsIDB4NiwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDgxLCAweDU3LCAweDg1LCAweDFlLCAweGY3LCAweGQzLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MTcsIDB4OWYsIDB4NiwgMHg1ZSwgMHg4ZiwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGI3LCAweDFhLCAweGY3LCAweDY1LCAweDhkLCAweDcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhmNywgMHgyOSwgMHhmYiwgMHhjNiwgMHg1LCAweDk2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYywgMHhmNywgMHhjOCwgMHg1LCAweDhkLCAweGZiLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhiYywgMHg1YiwgMHg4ZSwgMHg4MSwgMHg1NywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDc3LCAweGY3LCAweDNlLCAweDlmLCAweDcsIDB4NTcsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg5NSwgMHhiYiwgMHgxYSwgMHhmNywgMHg4OSwgMHg3LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OWQsIDB4YjcsIDB4OGQsIDB4MWUsIDB4OWYsIDB4MjQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM0LCAweGZiLCAweGM5LCAweGZiLCAweDJlLCAweGY3LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHhkLCAweDc3LCAweDYsIDB4YTgsIDB4YTcsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg5NywgMHgxZiwgMHhmYiwgMHg4MywgMHg3LCAweDVmLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NWYsIDB4ODQsIDB4MWQsIDB4ZjcsIDB4NjMsIDB4ZjcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHgxMiwgMHgxMywgMHg4MCwgMHhhOSwgMHhmNywgMHg3MCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDhjLCAweGJhLCAweGZjLCAweDhjLCAweDYsIDB4ZSwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY4LCAweDM2LCAweGFiLCAweGY3LCAweDY0LCAweGE0LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhkZiwgMHhmNywgMHg0ZiwgMHhkZiwgMHgzLCAweGFhLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzEsIDB4OWEsIDB4NiwgMHg0OCwgMHg4ZSwgMHg4OSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDFhLCAweGY3LCAweGQ0LCAweDcsIDB4YTAsIDB4ZjcsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDhhLCAweDk4LCAweDFmLCAweGFjLCAweDg2LCAweDhlLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MWEsIDB4ZmIsIDB4OTIsIDB4NywgMHg0ZiwgMHg4OSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweDg3LCAweDFlLCAweDdjLCAweGY3LCAweDcwLCAweDlhLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg4ZiwgMHg3YiwgMHg5ZiwgMHhjZiwgMHgxYSwgMHhmNywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YTQsIDB4OGMsIDB4YjQsIDB4OGMsIDB4YWIsIDB4MWUsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg1LCAweDg1LCAweDZhLCAweDYwLCAweDg3LCAweDY2LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzEsIDB4NiwgMHg4YSwgMHhjZSwgMHg4YiwgMHhiYSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDgsIDB4YTgsIDB4OTcsIDB4YWQsIDB4YWUsIDB4YmEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg5ZCwgMHg3YSwgMHg3OCwgMHg5OSwgMHgxZiwgMHg3NCwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDcyLCAweGE4LCAweDFiLCAweDllLCAweDliLCAweDljLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4NGUsIDB4OWYsIDB4NGEsIDB4ZmIsIDB4MjAsIDB4NDIsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOCwgMHg4NiwgMHgxZiwgMHg0NiwgMHg2YiwgMHhjZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDYsIDB4NTEsIDB4NzgsIDB4NzQsIDB4NWEsIDB4OGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDk5LCAweDFkLCAweGY4LCAweDM2LCAweGFiLCAweGY3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4MSwgMHhmMCwgMHhkZiwgMHhmNywgMHg1MCwgMHhkZiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MTYsIDB4ZjcsIDB4NzQsIDB4OWEsIDB4NiwgMHg2MSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDlhLCAweGMyLCAweDFhLCAweGY3LCAweGRkLCAweGY3LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZDgsIDB4NywgMHg0ZCwgMHg2YSwgMHg3ZCwgMHg2OSwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDdjLCAweGY3LCAweDZiLCAweDlhLCAweDcsIDB4NTEsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHhhNiwgMHhiOSwgMHgxYSwgMHhmOCwgMHhlMiwgMHg3LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NSwgMHg4YSwgMHg3ZiwgMHg1ZCwgMHg3MywgMHg3ZCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDdlLCAweDk0LCAweDkyLCAweDc2LCAweDFmLCAweDkwLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4OGYsIDB4NzEsIDB4MWIsIDB4NjEsIDB4ZmIsIDB4MTEsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2YSwgMHg4YSwgMHgxZiwgMHg0NCwgMHg2YiwgMHhkMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDYsIDB4NjksIDB4NzgsIDB4NjcsIDB4NTksIDB4ODcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZCwgMHhmOCwgMHg0NywgMHgxNSwgMHhlNSwgMHg4OSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgsIDB4ZDEsIDB4MWIsIDB4YTksIDB4OTYsIDB4NzgsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHgxZiwgMHg3OSwgMHg5NywgMHg5NywgMHg3YSwgMHhhOSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDhlLCAweDhmLCAweDhlLCAweDhlLCAweDFmLCAweGZiLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlLCAweDdkLCAweDk5LCAweGY4LCAweDU2LCAweDk1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4OTksIDB4NiwgMHhmYiwgMHg2ZSwgMHg4YywgMHg3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MzksIDB4NjMsIDB4ZmYsIDB4YywgMHg5LCAweGE3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhiLCAweGE3LCAweDkzLCAweDhkLCAweDhlLCAweGMsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDkxLCAweDk3LCAweGMsIDB4ZCwgMHhmOCwgMHg4OCwgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGY5LCAweDE1LCAweGI2LCAweDEzLCAweDAsIDB4N2IsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MSwgMHgwLCAweDM2LCAweDAsIDB4M2YsIDB4MCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NjksIDB4MCwgMHg2YywgMHgwLCAweDc1LCAweDAsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDk2LCAweDAsIDB4OWIsIDB4MCwgMHhhNiwgMHgwLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjYywgMHgwLCAweGQzLCAweDAsIDB4ZGMsIDB4MCwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZmYsIDB4MSwgMHg3LCAweDEsIDB4MWIsIDB4MSwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MzcsIDB4MSwgMHg0MywgMHgxLCAweDY1LCAweDEsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDc5LCAweDEsIDB4N2UsIDB4MSwgMHg4OSwgMHgxLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhkYSwgMHgxLCAweGUwLCAweDEsIDB4ZTcsIDB4MiwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MjksIDB4MiwgMHgzNCwgMHgyLCAweDNjLCAweDIsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDVmLCAweDIsIDB4NzgsIDB4MiwgMHg5MSwgMHgyLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhjYywgMHgyLCAweGQyLCAweDIsIDB4ZTAsIDB4MiwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4ZmUsIDB4MywgMHhjLCAweDMsIDB4MTQsIDB4MywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4MjgsIDB4MywgMHgzNCwgMHgzLCAweDQ3LCAweDMsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDc0LCAweDMsIDB4N2IsIDB4MywgMHg5YiwgMHgzLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhiZSwgMHgzLCAweGNjLCAweDMsIDB4ZDcsIDB4MywgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjksIDB4MywgMHhmZiwgMHg0LCAweDE0LCAweDQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDI4LCAweDQsIDB4MmYsIDB4NCwgMHgzNiwgMHg0LCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg1MywgMHg0LCAweDVmLCAweDQsIDB4NjUsIDB4NCwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ODUsIDB4NCwgMHg5MCwgMHg0LCAweGEyLCAweDQsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGJkLCAweDQsIDB4Y2YsIDB4NCwgMHhlMSwgMHg0LCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhlZiwgMHg0LCAweGY1LCAweDQsIDB4ZmIsIDB4NSwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgxNSwgMHg1LCAweDFjLCAweDUsIDB4MjYsIDB4NSwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NDQsIDB4NSwgMHg0ZCwgMHg1LCAweDU0LCAweDUsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDVmLCAweDUsIDB4NjgsIDB4NSwgMHg2YiwgMHg1LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg4MCwgMHg1LCAweDg1LCAweDUsIDB4OTEsIDB4NSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OWIsIDB4NSwgMHhhNiwgMHg1LCAweGFhLCAweDUsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGJhLCAweDUsIDB4YmYsIDB4NSwgMHhjNCwgMHg1LCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkOCwgMHg1LCAweGRmLCAweDUsIDB4ZTksIDB4NSwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4NiwgMHgwLCAweDYsIDB4OSwgMHg2LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxYiwgMHg2LCAweDIzLCAweDYsIDB4MmMsIDB4NiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MzgsIDB4NiwgMHgzZCwgMHg2LCAweDQxLCAweDYsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHgxNiwgMHhmNywgMHg1YSwgMHg5ZSwgMHg2LCAweDc2LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4YjUsIDB4OTYsIDB4OGUsIDB4OTksIDB4OTAsIDB4OTgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhmNiwgMHg1LCAweGY3LCAweDlhLCAweDYsIDB4YjQsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDkxLCAweDdkLCAweDk4LCAweDZhLCAweDdiLCAweDFhLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4ODAsIDB4NjYsIDB4MWUsIDB4NzgsIDB4ZjcsIDB4OTMsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDVmLCAweDhlLCAweDdkLCAweGEwLCAweDZiLCAweGQ0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4ZjgsIDB4YzIsIDB4MTgsIDB4YiwgMHgyMCwgMHhhLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg2NCwgMHhmYywgMHg3ZiwgMHhiLCAweDMyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2YiwgMHg1MiwgMHhhLCAweDczLCAweDJjLCAweDFkLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4YjksIDB4YmQsIDB4YjIsIDB4MWUsIDB4YiwgMHgzLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZmIsIDB4MmYsIDB4NTQsIDB4NSwgMHg3YywgMHg3LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4OTgsIDB4NTMsIDB4MWQsIDB4NTAsIDB4MWYsIDB4ZmIsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDNkLCAweDdhLCAweDdiLCAweDRkLCAweDg4LCAweDFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHgxZCwgMHhlLCAweDE1LCAweDg3LCAweGEsIDB4OCwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MmUsIDB4NywgMHhiLCAweDZmLCAweGEsIDB4NDQsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg3MywgMHgzMiwgMHgxYiwgMHhmYiwgMHgyNCwgMHhmNywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YzIsIDB4OTcsIDB4YTIsIDB4MzMsIDB4MWQsIDB4NzgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGEsIDB4ZmMsIDB4M2MsIDB4NywgMHhiLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhkZiwgMHgyMywgMHhhLCAweGIsIDB4MjYsIDB4MWQsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhiLCAweDI4LCAweDFkLCAweDEzLCAweGQ2LCAweDNlLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmEsIDB4M2MsIDB4MWQsIDB4ZSwgMHg4YywgMHhmYiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDQzLCAweDkwLCAweGI1LCAweDgwLCAweDJmLCAweGEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMsIDB4ZjcsIDB4MjQsIDB4YzUsIDB4ZjcsIDB4MWMsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHgxZiwgMHg3YiwgMHg5MiwgMHg1LCAweDY2LCAweDc0LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4MzIsIDB4MWIsIDB4NDksIDB4M2EsIDB4YWEsIDB4ZjcsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxZiwgMHhiLCAweDE1LCAweGY4LCAweGIwLCAweDYsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhlLCAweDNhLCAweDFkLCAweDcyLCAweDg4LCAweDhiLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NmMsIDB4YiwgMHg3YiwgMHg4YSwgMHg4LCAweGY3LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODIsIDB4MTUsIDB4ZjcsIDB4NywgMHhmNywgMHhhNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZmIsIDB4YTcsIDB4NSwgMHhiLCAweDlkLCAweDFiLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4OGMsIDB4YmMsIDB4YjUsIDB4MWYsIDB4YTUsIDB4NywgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDdlLCAweDgxLCAweDc2LCAweDFiLCAweGIsIDB4NmYsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHgxZCwgMHg3NSwgMHg2MiwgMHgxZCwgMHhiLCAweDE1LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgxMSwgMHhmNywgMHgzYiwgMHg1LCAweDY5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlLCAweDI0LCAweGZiLCAweGQsIDB4ZjIsIDB4NSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg5OSwgMHg3LCAweDRmLCAweDg5LCAweDg5LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4MWEsIDB4ZjcsIDB4ZWIsIDB4ZmIsIDB4MzIsIDB4N2EsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweDg5LCAweDhmLCAweDZjLCAweDYzLCAweDFhLCAweGIsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg4ZSwgMHg4YywgMHgzOCwgMHgxZCwgMHhiLCAweDYxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgwLCAweDQ0LCAweDFkLCAweGQ0LCAweGYxLCAweGYxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhiLCAweDE1LCAweGY3LCAweDUzLCAweGEzLCAweDYsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg3OCwgMHg5YSwgMHhhOCwgMHgxYSwgMHhmNywgMHhlMSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4OGUsIDB4ZmIsIDB4YSwgMHg1NCwgMHg1LCAweDc0LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhhZiwgMHg4YiwgMHg4YiwgMHg5MywgMHgxYiwgMHg5MiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDdlLCAweDFmLCAweGIsIDB4NmYsIDB4YTAsIDB4NzUsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhhMSwgMHg0MSwgMHgxZCwgMHhiLCAweDlkLCAweGFjLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4ODAsIDB4NDMsIDB4MWUsIDB4NGUsIDB4NGYsIDB4YSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NjMsIDB4MjUsIDB4MWQsIDB4YiwgMHg5MiwgMHg5MiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDc4LCAweDdiLCAweDVlLCAweDQ5LCAweDYxLCAweDFmLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0YywgMHhmYywgMHhiOCwgMHg1LCAweDljLCAweGY4LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg5LCAweGFiLCAweDk5LCAweGNhLCAweDkyLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZmIsIDB4N2YsIDB4NzgsIDB4NywgMHhjZiwgMHg4NiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGZiLCAweDcsIDB4MWEsIDB4ZmIsIDB4ZDgsIDB4ODksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDEzLCAweGY4LCAweDc1LCAweDUsIDB4ZmIsIDB4M2YsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIzLCAweDliLCAweDg2LCAweDU5LCAweGI0LCAweDFmLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NzgsIDB4YSwgMHhiLCAweGZiLCAweDcsIDB4ZjcsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDg4LCAweDkyLCAweDg0LCAweDliLCAweDk4LCAweDFhLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4OTYsIDB4YTIsIDB4OGMsIDB4MWUsIDB4OWEsIDB4ZmIsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg3LCAweDk4LCAweDg5LCAweGE1LCAweDdjLCAweDk3LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgzZiwgMHhhLCAweDdjLCAweDYwLCAweDYzLCAweGIsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg3NSwgMHhhMSwgMHg2ZiwgMHg2ZiwgMHhiLCAweDE1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4ZjcsIDB4MmEsIDB4ZmIsIDB4MmQsIDB4ZjcsIDB4NTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhmNywgMHgyOSwgMHhmNywgMHgyZCwgMHhmNywgMHg1MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweGZiLCAweDI5LCAweGY3LCAweDJmLCAweGZiLCAweDUzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4ZmIsIDB4MmEsIDB4ZmIsIDB4MmYsIDB4ZmIsIDB4NTMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgxNiwgMHhmNywgMHgzNSwgMHhmNywgMHgxMiwgMHhmNywgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM3LCAweGY3LCAweDM0LCAweGY3LCAweDExLCAweGZiLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzYsIDB4YiwgMHhhOSwgMHg5NSwgMHhkZCwgMHhjZCwgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGRlLCAweDUxLCAweDk4LCAweDc0LCAweDcyLCAweDZhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg4YiwgMHhhOCwgMHhhOCwgMHgxZiwgMHhmNywgMHg1NywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4OGIsIDB4YiwgMHg0NSwgMHhhLCAweDlhLCAweGI0LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4YSwgMHhiLCAweDc3LCAweDEsIDB4ZjcsIDB4NywgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OWQsIDB4MTYsIDB4ZjcsIDB4YmQsIDB4OWUsIDB4NiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4OWUsIDB4ZmIsIDB4YmQsIDB4NzgsIDB4NywgMHg0OSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg2ZiwgMHhhMCwgMHg3NiwgMHhhNywgMHhhNywgMHhhMSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGE3LCAweDc1LCAweDU1LCAweDFkLCAweGIsIDB4YTAsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGMyLCAweGExLCAweGY3LCAweDMsIDB4YTcsIDB4MWEsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhhMywgMHg3OCwgMHg3NywgMHg3NCwgMHg3MywgMHg3MCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGZiLCAweDMsIDB4OTUsIDB4NTQsIDB4MWUsIDB4YiwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDlkLCAweDcwLCAweDFiLCAweDVkLCAweDg5LCAweDY1LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4YTIsIDB4NmIsIDB4YmQsIDB4ZDYsIDB4YjcsIDB4Y2QsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhiZSwgMHgxZiwgMHhmNywgMHgyZSwgMHhmOCwgMHgyMiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmNywgMHhmLCAweDQ0LCAweGE2LCAweDVkLCAweDUwLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NWQsIDB4NWEsIDB4MWUsIDB4ZGEsIDB4NywgMHg4NCwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDdhLCAweDVjLCAweDdjLCAweDVlLCAweDdlLCAweDE5LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg4ZCwgMHg4ZiwgMHg5NiwgMHg1MywgMHgxZCwgMHg0YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDgyLCAweDcsIDB4NTAsIDB4N2EsIDB4NzQsIDB4NWMsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiLCAweGZiLCAweDQyLCAweDhiLCAweGY3LCAweDFmLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4Y2EsIDB4NywgMHhkMiwgMHg5NywgMHhhMiwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDFlLCAweGIsIDB4MTUsIDB4NDYsIDB4MWQsIDB4MzMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZGUsIDB4ODcsIDB4OTksIDB4NzUsIDB4NDEsIDB4ODksIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg3ZiwgMHg3MCwgMHgzNiwgMHg4OSwgMHgxZSwgMHhiLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4OGQsIDB4MTksIDB4OWEsIDB4ZmIsIDB4MWIsIDB4N2MsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDhjLCAweDliLCAweDc3LCAweDc4LCAweDFhLCAweDgyLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ODEsIDB4NzAsIDB4MWUsIDB4YiwgMHgzNiwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4MTYsIDB4MzYsIDB4YSwgMHhlLCAweDgzLCAweDFkLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4YjEsIDB4MWIsIDB4OTcsIDB4OTgsIDB4ODYsIDB4NDUsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg5OSwgMHhiLCAweDJhLCAweGEsIDB4NDAsIDB4YSwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI5LCAweGIsIDB4NiwgMHhmNywgMHgzLCAweGE1LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4OWEsIDB4MWYsIDB4YTQsIDB4YiwgMHg3LCAweGZiLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4MzQsIDB4NjksIDB4MjcsIDB4MWEsIDB4NDgsIDB4YiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDk2LCAweDlhLCAweGFjLCAweGI2LCAweGE5LCAweGIzLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhiMiwgMHhiLCAweDgyLCAweDllLCAweDUsIDB4NmQsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHg0OSwgMHg0NCwgMHgxYSwgMHgzOCwgMHhjNSwgMHg3ZSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGFjLCAweDlhLCAweGI2LCAweGIzLCAweGIsIDB4NywgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDgxLCAweDgyLCAweDgzLCAweDFlLCAweDc1LCAweDcwLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmOCwgMHgzMSwgMHhlNSwgMHgxNSwgMHhmNywgMHg0OCwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGU1LCAweGMyLCAweGM0LCAweDU0LCAweGY3LCAweDk2LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg1ZiwgMHhmYiwgMHg5ZSwgMHg1LCAweGI4LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MTksIDB4ZjcsIDB4NDQsIDB4NSwgMHg4ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDYsIDB4YiwgMHgxYiwgMHg0OCwgMHg2ZCwgMHg0ZCwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGEsIDB4MWIsIDB4MzEsIDB4MzAsIDB4NTMsIDB4ZmIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweGNiLCAweDVmLCAweGU3LCAweDU2LCAweDFmLCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4OWIsIDB4NjksIDB4NTIsIDB4MWEsIDB4NTUsIDB4NjMsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhmYiwgMHgxYiwgMHg1OCwgMHhmNywgMHgxNiwgMHhiYSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGIsIDB4NiwgMHhiMCwgMHhlMCwgMHg3YSwgMHg5MiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDdmLCAweDg5LCAweDczLCAweDhhLCAweDE5LCAweGZiLCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUxLCAweGUwLCAweDUsIDB4YTgsIDB4YTcsIDB4YzIsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHgxYSwgMHhjZSwgMHg1MiwgMHhiNCwgMHg0OCwgMHg0MCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4N2QsIDB4OTcsIDB4N2QsIDB4YSwgMHhmNywgMHg2NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDUsIDB4YTksIDB4NWQsIDB4ZmIsIDB4MmMsIDB4ZjcsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHgxZCwgMHhiLCAweDQxLCAweDhkLCAweDczLCAweDYwLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OWMsIDB4ZDQsIDB4OGUsIDB4MWUsIDB4YiwgMHhmNywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YjEsIDB4OTEsIDB4YzMsIDB4YTcsIDB4YWYsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDkwLCAweGZiLCAweDM2LCAweDc0LCAweGZiLCAweDQyLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NmEsIDB4NTQsIDB4NWMsIDB4YjYsIDB4YTIsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDEsIDB4N2QsIDB4YWYsIDB4ZjgsIDB4ZmUsIDB4YWYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDFkLCAweDEzLCAweGI4LCAweDU0LCAweDFkLCAweDcsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg1NiwgMHg3YSwgMHg1NiwgMHg3ZCwgMHg1NiwgMHg2ZiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDk0LCAweDhjLCAweDk4LCAweDFiLCAweGIyLCAweDkxLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4MWYsIDB4YiwgMHg3MiwgMHgxZCwgMHhlYywgMHhmNywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGIsIDB4OTcsIDB4MTYsIDB4ZjcsIDB4N2YsIDB4OWUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDhlLCAweDc2LCAweGFiLCAweGYyLCAweDFhLCAweGIsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHhhMywgMHg3YiwgMHgzYywgMHgxYSwgMHhiLCAweGZiLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzgsIDB4ZmIsIDB4MzcsIDB4YiwgMHg5NywgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDYsIDB4MzksIDB4MWQsIDB4YiwgMHgxYiwgMHg3NSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDdhLCAweDViLCAweGM4LCAweDg4LCAweDlhLCAweGY3LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4ZGQsIDB4YmMsIDB4ZDcsIDB4NTYsIDB4YTksIDB4NmEsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiLCAweDFiLCAweDg0LCAweDg0LCAweDkwLCAweDk0LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YjgsIDB4Y2QsIDB4YjUsIDB4MWYsIDB4YiwgMHhhZCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDZlLCAweDYsIDB4YiwgMHhhNywgMHg1YSwgMHhhOSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDAsIDB4Y2IsIDB4NSwgMHg2NiwgMHhhMSwgMHg4NSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDFhLCAweGE1LCAweGEwLCAweGIyLCAweGMyLCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhiNywgMHg1ZiwgMHhjMiwgMHg3OSwgMHgxZCwgMHg1NCwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDU0LCAweDFlLCAweGIsIDB4ZjcsIDB4NmEsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHg5ZSwgMHg2LCAweDMxLCAweDhjLCAweDdlLCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhmYiwgMHgxMywgMHhmYiwgMHgyMiwgMHhmYiwgMHgzMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGZiLCAweDEzLCAweGY3LCAweDIyLCAweGY3LCAweDM0LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxLCAweGMwLCAweDlkLCAweDMsIDB4YTYsIDB4MTYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDYsIDB4OTksIDB4ZjcsIDB4MWIsIDB4NzksIDB4OGYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDdiLCAweGIsIDB4NmYsIDB4YTAsIDB4NzYsIDB4OWEsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg0MSwgMHgxZCwgMHhiLCAweGEzLCAweDllLCAweDllLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4NzgsIDB4OWUsIDB4NzMsIDB4NzMsIDB4NzgsIDB4NzgsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg5ZSwgMHg3OCwgMHhhMywgMHgxZiwgMHhiLCAweDEsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHhmNywgMHg3YiwgMHhmNywgMHgxLCAweDMsIDB4OWIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhYywgMHg5ZSwgMHg2LCAweDNlLCAweDhkLCAweDdhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxLCAweDdkLCAweGI3LCAweGY5LCAweGMsIDB4NzcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGY3LCAweDdjLCAweDc0LCAweDYsIDB4YiwgMHgxNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGY3LCAweDI2LCAweGIsIDB4ODEsIDB4YTcsIDB4ZjgsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhiLCAweDc3LCAweDEsIDB4ZjcsIDB4Y2YsIDB4ZjEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGEsIDB4YiwgMHgxLCAweGRiLCAweGRmLCAweGY3LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4MywgMHg5YiwgMHgxNiwgMHhmNywgMHg2YSwgMHg5YSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4OGUsIDB4N2QsIDB4YiwgMHg3YiwgMHgxZCwgMHhmOCwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGEsIDB4YiwgMHg1LCAweDgyLCAweDk4LCAweDgzLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4MWEsIDB4YTcsIDB4YTQsIDB4YiwgMHg1YSwgMHg2YSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDFiLCAweDcwLCAweDc4LCAweDdhLCAweDcxLCAweDcxLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4YTYsIDB4MWYsIDB4YiwgMHgxNSwgMHhhMiwgMHg4ZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4ODgsIDB4YjcsIDB4NmEsIDB4NTgsIDB4MWEsIDB4NzIsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg0ZiwgMHhiLCAweDcsIDB4ZmIsIDB4MCwgMHg3NiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDg2LCAweDFlLCAweGIsIDB4YzEsIDB4NzYsIDB4ZjgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGIsIDB4NzQsIDB4NzgsIDB4NGIsIDB4ODcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY3LCAweDkyLCAweDhiLCAweGIxLCAweGIsIDB4NmUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhjLCAweDc3LCAweDEsIDB4ZjMsIDB4ZjEsIDB4YiwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4NywgMHhiMCwgMHhiMSwgMHhhYSwgMHg5ZiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGM2LCAweDlkLCAweDY3LCAweDRlLCAweDFmLCAweGIsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHhmNywgMHg5YywgMHhhMiwgMHhhYywgMHhhNCwgMHhiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZmIsIDB4MjMsIDB4YiwgMHg3YiwgMHhhMCwgMHhhMCwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGIwLCAweGFhLCAweDcwLCAweGE1LCAweDZkLCAweDZkLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg5MSwgMHgxYiwgMHhiNywgMHg4YiwgMHhiLCAweGEwLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4YiwgMHgxMiwgMHhiMCwgMHhlMywgMHg0NiwgMHhlMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGRjLCAweDEzLCAweGRhLCAweGIsIDB4NzQsIDB4YSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NjUsIDB4MWEsIDB4NGYsIDB4M2UsIDB4OTcsIDB4NjAsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweGJhLCAweDljLCAweGIxLCAweDlhLCAweGMxLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg5ZSwgMHhmYiwgMHhhZiwgMHg3LCAweGIsIDB4NjYsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHg5OSwgMHhiLCAweGY3LCAweDVkLCAweGJjLCAweDEyLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4ZjcsIDB4NWQsIDB4NCwgMHhiLCAweGJhLCAweGY3LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NSwgMHhmYiwgMHgyLCAweGZiLCAweDRmLCAweGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhmNywgMHhhMCwgMHg3MCwgMHgxZCwgMHhiLCAweDcsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg2YSwgMHgzNywgMHg4NSwgMHgxZSwgMHhmNywgMHg0ZSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWIsIDB4MTUsIDB4ODAsIDB4YTAsIDB4YTcsIDB4ODYsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiLCAweDNjLCAweGEwLCAweDc2LCAweGIsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweGRmLCAweGY3LCAweDQ2LCAweGRmLCAweDMsIDB4YiwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGE0LCAweDc2LCAweGY3LCAweDNiLCAweDc3LCAweDEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGYsIDB4ZmIsIDB4MzQsIDB4NzYsIDB4ZjksIDB4ZjEsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGE5LCAweGFmLCAweGFmLCAweGE5LCAweDZkLCAweDY3LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4YiwgMHg4ZiwgMHg3YiwgMHgxYiwgMHg2YywgMHg4YSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGIsIDB4N2IsIDB4NjksIDB4MjksIDB4NzgsIDB4ZTIsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxZSwgMHhiLCAweGZiLCAweDZlLCAweGRmLCAweDM3LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmNywgMHg1NCwgMHhmYiwgMHg0MSwgMHg3NywgMHhiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzgsIDB4NywgMHhiLCAweDcyLCAweDZiLCAweDFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2LCAweDMsIDB4YgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRTZXJpZkJvbGQuYyBiL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRTZXJpZkJvbGQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTg3OWJkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNlcmlmQm9sZC5jCkBAIC0wLDAgKzEsMjQzMyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworY29uc3QgdW5zaWduZWQgY2hhciBnX0ZveGl0U2VyaWZCb2xkRm9udERhdGEgWzE5Mzk1XSA9IHsweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0LCAweDIsIDB4MCwgMHgxLCAweDEsIDB4MSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg2OCwgMHg3MiwgMHg2ZiwgMHg2ZCwgMHg1MywgMHg2NSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2NiwgMHg0ZiwgMHg1NCwgMHg0NiwgMHgyZCwgMHg0MiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NCwgMHgwLCAweDEsIDB4MSwgMHgxLCAweDI2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDAsIDB4ZjgsIDB4MWMsIDB4MSwgMHhmOCwgMHgxZCwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDFlLCAweDMsIDB4ZjgsIDB4MTQsIDB4NCwgMHhmYiwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4ZSwgMHhmYSwgMHg3YywgMHhmYSwgMHhkLCAweDUsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg2NywgMHhmLCAweDFjLCAweDgsIDB4YmUsIDB4MTEsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4NDQsIDB4OGUsIDB4MTIsIDB4MCwgMHg0LCAweDEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDJmLCAweDQzLCAweDUyLCAweDQ1LCAweDc1LCAweDcyLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDY1LCAweDcyLCAweDY5LCAweDY2LCAweDIwLCAweDRmLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDIwLCAweDQyLCAweDZmLCAweDZjLCAweDY0LCAweDQzLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDZGLCAweDZELCAweDIwLCAweDUzLCAweDY1LCAweDcyLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDIwLCAweDRmLCAweDU0LCAweDQ2LCAweDAsIDB4N2IsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDEsIDB4MCwgMHhmLCAweDAsIDB4NGYsIDB4MCwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDYyLCAweDAsIDB4NmQsIDB4MCwgMHg3OCwgMHgwLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YmIsIDB4MCwgMHhiZSwgMHgwLCAweGM3LCAweDAsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhkYywgMHgwLCAweGVmLCAweDAsIDB4ZjgsIDB4MSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MTIsIDB4MSwgMHgzOCwgMHgxLCAweDQ1LCAweDEsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg1YSwgMHgxLCAweDZiLCAweDEsIDB4NzMsIDB4MSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDg3LCAweDEsIDB4OGIsIDB4MSwgMHg5YiwgMHgxLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YWIsIDB4MSwgMHhiNiwgMHgxLCAweGNlLCAweDEsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmMywgMHgxLCAweGZhLCAweDIsIDB4MjEsIDB4MiwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDM4LCAweDIsIDB4NDEsIDB4MiwgMHg0YiwgMHgyLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4OTQsIDB4MiwgMHhhMiwgMHgyLCAweGFkLCAweDIsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhkNSwgMHgyLCAweGUwLCAweDIsIDB4ZWMsIDB4MiwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDgsIDB4MywgMHgxMCwgMHgzLCAweDE3LCAweDMsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgyOSwgMHgzLCAweDMwLCAweDMsIDB4MzcsIDB4MywgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDQ4LCAweDMsIDB4NTMsIDB4MywgMHg2MSwgMHgzLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4N2YsIDB4MywgMHg4NywgMHgzLCAweDhmLCAweDMsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg5ZCwgMHgzLCAweGIyLCAweDMsIDB4YjYsIDB4MywgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGM2LCAweDMsIDB4Y2YsIDB4MywgMHhkNSwgMHgzLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZWYsIDB4MywgMHhmZSwgMHg0LCAweDksIDB4NCwgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDFiLCAweDQsIDB4MmQsIDB4NCwgMHgzNSwgMHg0LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NDcsIDB4NCwgMHg0ZCwgMHg0LCAweDVlLCAweDQsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg3OSwgMHg0LCAweDg5LCAweDQsIDB4OTgsIDB4NCwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGFlLCAweDQsIDB4YjMsIDB4NCwgMHhiOCwgMHg0LCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZDQsIDB4NCwgMHhlMSwgMHg0LCAweGVlLCAweDQsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmNSwgMHg1LCAweDEsIDB4NSwgMHhiLCAweDUsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgxNywgMHg1LCAweDIwLCAweDUsIDB4MmIsIDB4NSwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDQxLCAweDUsIDB4NDgsIDB4NSwgMHg0ZCwgMHg1LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NTQsIDB4NSwgMHg1ZSwgMHg1LCAweDY4LCAweDUsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg3YywgMHg1LCAweDg2LCAweDUsIDB4OTAsIDB4NSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDllLCAweDUsIDB4YTcsIDB4NSwgMHhiMCwgMHg1LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YzAsIDB4NSwgMHhjNiwgMHg1LCAweGNiLCAweDUsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4M2EsIDB4YSwgMHgyMCwgMHhhLCAweDdmLCAweDZkLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDU1LCAweDgzLCAweDE5LCAweDMxLCAweDFkLCAweDNjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4MjksIDB4MWIsIDB4NGEsIDB4NzgsIDB4OTcsIDB4YjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODYsIDB4NywgMHhlZSwgMHhiNCwgMHg2ZCwgMHhmYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHgxZiwgMHhhZiwgMHhmNywgMHhlNiwgMHg2NywgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDdjLCAweDYyLCAweDcyLCAweDJiLCAweDFiLCAweGY3LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YjYsIDB4OWQsIDB4OWUsIDB4YzIsIDB4ZjcsIDB4MWIsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4ZmIsIDB4MjIsIDB4YTIsIDB4MWUsIDB4YWUsIDB4ZjcsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4ZDUsIDB4NTMsIDB4MWQsIDB4ZmMsIDB4ODEsIDB4NywgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg5YiwgMHg1MiwgMHg4NSwgMHgxZSwgMHhiLCAweDE1LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGEsIDB4YiwgMHgzMiwgMHgxZCwgMHgzMSwgMHhhLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGZiLCAweDMsIDB4ZmIsIDB4MTAsIDB4NTEsIDB4M2EsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgyOSwgMHhhLCAweDgwLCAweDdmLCAweGEsIDB4OWEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4N2MsIDB4MWYsIDB4YiwgMHgyNywgMHgxZCwgMHg2OSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDg0LCAweDkzLCAweDdmLCAweDM4LCAweGEsIDB4YiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHg2YywgMHhiYiwgMHhhMywgMHhkMSwgMHg5MCwgMHhjYywgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4YSwgMHhiNywgMHgxNSwgMHg3YiwgMHg3ZCwgMHg3NCwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgxYiwgMHg2NywgMHg3YywgMHhhZiwgMHhhYSwgMHhlMiwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhhMiwgMHg5MCwgMHgxZiwgMHhiLCAweDVlLCAweDhjLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGIyLCAweDFhLCAweGY3LCAweGZjLCAweGZiLCAweDVkLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YWQsIDB4ODgsIDB4YTcsIDB4OGEsIDB4NTQsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4NywgMHg3OCwgMHg3OCwgMHg3MiwgMHg3MiwgMHg2NSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg4YSwgMHhiNiwgMHhhNywgMHgxZiwgMHhmNywgMHhlNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhiLCAweDIyLCAweDFkLCAweGUsIDB4NGUsIDB4YSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweDI5LCAweDJlLCAweGEsIDB4YiwgMHg2NywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhhLCAweGE4LCAweGE4LCAweGFmLCAweGFmLCAweDZlLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NmUsIDB4NjEsIDB4MWQsIDB4YiwgMHgzNCwgMHhhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDFkLCAweGIsIDB4NjQsIDB4OGYsIDB4ODMsIDB4YTEsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjgsIDB4NiwgMHhmYiwgMHg1NCwgMHg2OSwgMHg3LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDlhLCAweDg0LCAweDVlLCAweDFhLCAweGIsIDB4MTUsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZjcsIDB4NjYsIDB4MTYsIDB4MmUsIDB4MWQsIDB4ZSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg2ZiwgMHhhZiwgMHhhZiwgMHhhOCwgMHhhNywgMHhhZiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg2ZiwgMHgxZCwgMHhiLCAweGY3LCAweGViLCAweGJmLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDcsIDB4YzQsIDB4OWUsIDB4OTksIDB4OGMsIDB4MjgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDMzLCAweGJjLCAweDMxLCAweGVmLCAweGVmLCAweGJjLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGUzLCAweDVhLCAweGU1LCAweDI3LCAweDI3LCAweDVhLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDFlLCAweGY3LCAweDYsIDB4MTYsIDB4ZDAsIDB4OGIsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4YWUsIDB4OGIsIDB4MzYsIDB4NDYsIDB4NDYsIDB4OGIsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NjgsIDB4OGIsIDB4ZTAsIDB4ZDAsIDB4MWUsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhmNywgMHg1ZCwgMHgxNSwgMHhlOSwgMHhmNywgMHg4NywgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4NywgMHg1LCAweGUsIDB4MTUsIDB4NmYsIDB4OTEsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4ZDEsIDB4MWIsIDB4YjgsIDB4YjAsIDB4YTMsIDB4YWMsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YiwgMHhjMCwgMHhhOSwgMHhmNywgMHg1LCAweDNkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1NCwgMHg4ZiwgMHg2MywgMHg4ZSwgMHhjYiwgMHgxYSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg3LCAweGNmLCAweGJiLCAweDhjLCAweGJhLCAweDhkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGIsIDB4NWMsIDB4YSwgMHhmNywgMHg4YiwgMHg3NywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIsIDB4OTQsIDB4MWEsIDB4MTMsIDB4YmMsIDB4M2IsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg4YywgMHgyNCwgMHhhLCAweGUsIDB4MmEsIDB4YSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg4NSwgMHg5MiwgMHg5NCwgMHgxYSwgMHhiLCAweDE2LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGUsIDB4NzMsIDB4OTksIDB4NSwgMHg3NCwgMHg3OCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg1MCwgMHgxYiwgMHgyYywgMHg3NSwgMHhmMSwgMHhlMCwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiLCAweDRlLCAweDRjLCAweDQ3LCAweGMxLCAweDhiLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDlhLCAweGIxLCAweDlkLCAweGIsIDB4M2IsIDB4YSwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIsIDB4NjUsIDB4MWQsIDB4ZjcsIDB4N2YsIDB4NDUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNSwgMHg1ZiwgMHgxZCwgMHhiLCAweDlhLCAweDFhLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDkxLCAweGQwLCAweDFlLCAweGFlLCAweGZiLCAweGUzLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YmUsIDB4ODgsIDB4YTMsIDB4NjAsIDB4OTAsIDB4ODIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4ZmIsIDB4ZDYsIDB4MTgsIDB4YiwgMHhmYywgMHgzMSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4OSwgMHhhOSwgMHg2LCAweDRiLCAweDg1LCAweDliLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweGRiLCAweDQ2LCAweGEsIDB4ZmIsIDB4NjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg4NywgMHg3NCwgMHg0MCwgMHg4YywgMHgxZSwgMHhiLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDkyLCAweDcwLCAweDUzLCAweDNhLCAweDUyLCAweDZmLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGIsIDB4MTUsIDB4MmEsIDB4MWQsIDB4ZjcsIDB4NjYsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MTUsIDB4MmUsIDB4Y2EsIDB4MzYsIDB4ZjAsIDB4ZjAsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4ZTgsIDB4ZTgsIDB4NGMsIDB4ZTAsIDB4MjYsIDB4MjYsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4MmUsIDB4MWUsIDB4ZjcsIDB4ZSwgMHgxNiwgMHhiZCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHhiNSwgMHhiNSwgMHg4YiwgMHgyNywgMHg1OSwgMHg1OSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg2MSwgMHg2MSwgMHg4YiwgMHhlZiwgMHhiZCwgMHgxZSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE0LCAweGY3LCAweDhjLCAweDdiLCAweDlhLCAweDNkLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFkLCAweDcsIDB4MzgsIDB4NzMsIDB4ODksIDB4NDYsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YiwgMHgzMywgMHgxZCwgMHg1ZCwgMHg2NywgMHhiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDYwLCAweGZiLCAweDEzLCAweDYzLCAweDIzLCAweDFhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YjUsIDB4NiwgMHg5ZCwgMHg4YywgMHg5YiwgMHhhOCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiLCAweDFiLCAweGZiLCAweDUyLCAweDcxLCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDVkLCAweDhiLCAweDM1LCAweGY3LCAweDNmLCAweDM5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE4LCAweDRjLCAweGJhLCAweDczLCAweDQ4LCAweDFhLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDI4LCAweGZiLCAweGMsIDB4ZmIsIDB4MTMsIDB4NWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmMCwgMHg3NywgMHgxZSwgMHg2NCwgMHg2LCAweGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4Y2IsIDB4ZjcsIDB4ZCwgMHhlMywgMHhmNywgMHgxLCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDY5LCAweDljLCAweDFmLCAweGZiLCAweDdiLCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4YTEsIDB4YzEsIDB4MWEsIDB4Y2MsIDB4YzIsIDB4YTksIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YSwgMHhiZCwgMHhmYiwgMHg3LCAweDQ1LCAweDlkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDYsIDB4YiwgMHgxZSwgMHhhZCwgMHhmYiwgMHg4ZSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGE0LCAweDg3LCAweDkwLCAweDhiLCAweDk3LCAweDc0LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYiwgMHg1ZiwgMHg3ZCwgMHhkMywgMHhmNywgMHg0ZiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNCwgMHhhYSwgMHhiLCAweGE1LCAweDliLCAweGI5LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDVjLCAweGEzLCAweDRkLCAweDNlLCAweDU5LCAweDU2LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFlLCAweDlmLCAweDg0LCAweDUsIDB4OWEsIDB4OTUsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4YjEsIDB4MWIsIDB4YmIsIDB4YTAsIDB4NzEsIDB4NjgsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4N2MsIDB4NmMsIDB4ODIsIDB4MWYsIDB4YiwgMHg1NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDVhLCAweDc3LCAweGIsIDB4NDksIDB4MWQsIDB4ZjcsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4OTgsIDB4YSwgMHgxNywgMHg0ZCwgMHhhLCAweGIsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmIsIDB4NjksIDB4NywgMHhhNCwgMHg4YSwgMHhhOSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHgxYSwgMHhiLCAweDhiLCAweGFlLCAweGY4LCAweGYyLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4OTYsIDB4ODMsIDB4NSwgMHhhNywgMHg5NCwgMHhiOSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgxYSwgMHg3MywgMHgxZCwgMHgxZSwgMHg3YiwgMHg2NiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweGI0LCAweGExLCAweDg5LCAweDk3LCAweDFiLCAweGIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4NzgsIDB4MzEsIDB4NjgsIDB4ODQsIDB4MWYsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHg3OCwgMHhhYywgMHg5MywgMHgxZCwgMHhiLCAweDEyLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI2LCAweGY3LCAweGUsIDB4ZjcsIDB4MWUsIDB4YiwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGI5LCAweDg4LCAweGI1LCAweDkzLCAweDQ5LCAweDFhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4ODUsIDB4ODEsIDB4NmIsIDB4NjYsIDB4MWIsIDB4YiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDhiLCAweDcyLCAweGEsIDB4YiwgMHgxNSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIsIDB4NWEsIDB4YSwgMHhmNywgMHg2OCwgMHhmNywgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHgxZCwgMHhmNywgMHgzZiwgMHg2NiwgMHgxZCwgMHhiLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY3LCAweDg0LCAweDQ1LCAweGEsIDB4ZmIsIDB4MmEsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4YiwgMHg1ZCwgMHg5MCwgMHg4OCwgMHhhOCwgMHhhMiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5NSwgMHg3LCAweDk0LCAweGI2LCAweGJjLCAweGIzLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZTYsIDB4M2IsIDB4YTAsIDB4NjMsIDB4MmYsIDB4NjUsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4N2UsIDB4MWUsIDB4YTMsIDB4NiwgMHhiZCwgMHhhMywgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5YSwgMHgxYiwgMHhjZCwgMHg5NiwgMHg0ZiwgMHg3YSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGZiLCAweDcwLCAweDY4LCAweDcsIDB4YiwgMHhhZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhmNywgMHhmNiwgMHhmNywgMHg0NSwgMHhiLCAweGE0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGY3LCAweDMxLCAweGY3LCAweDI3LCAweGIsIDB4ZmIsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTUsIDB4ZmIsIDB4MzUsIDB4YiwgMHhmNywgMHg2MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhmNywgMHgyOSwgMHhiLCAweGFlLCAweDEsIDB4ZjQsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4OWUsIDB4MTYsIDB4ZjgsIDB4ZDYsIDB4NiwgMHhiNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg1LCAweDZlLCAweDYsIDB4ZmIsIDB4NSwgMHg1ZCwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDZlLCAweDY3LCAweDFlLCAweGIsIDB4NjMsIDB4MWQsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4NWIsIDB4NjcsIDB4NjMsIDB4NWUsIDB4MWUsIDB4ZSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhhZiwgMHg2NCwgMHgxZCwgMHhiLCAweDY2LCAweGJiLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweGFmLCAweGJiLCAweGI5LCAweDY1LCAweGIsIDB4ZmIsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2YsIDB4ODUsIDB4YiwgMHhmNywgMHgyMCwgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhiLCAweGI5LCAweGI0LCAweDYzLCAweGJhLCAweDFiLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGEyLCAweGE2LCAweGE2LCAweDcxLCAweGEyLCAweDcyLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDYyLCAweDYzLCAweDVkLCAweDFiLCAweGIsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4ZjcsIDB4MzUsIDB4MTIsIDB4OTksIDB4NzcsIDB4YSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhhLCAweDEzLCAweGU4LCAweGIsIDB4ZjcsIDB4NGQsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZWYsIDB4YWUsIDB4NiwgMHg0NSwgMHg5MiwgMHg3NSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdlLCAweDY2LCAweDcsIDB4NzIsIDB4ODEsIDB4ODIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4MWIsIDB4YiwgMHhmNywgMHhmLCAweDk4LCAweDgsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhiLCAweDY3LCAweGE3LCAweDZkLCAweGFmLCAweGFmLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGFmLCAweGFmLCAweDcwLCAweGE3LCAweDY3LCAweDY3LCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDY3LCAweDFlLCAweGIsIDB4NjcsIDB4YTYsIDB4ODEsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NjEsIDB4MWQsIDB4YiwgMHg2NywgMHhhNywgMHg3NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGE4LCAweGFmLCAweGFmLCAweDcwLCAweDZmLCAweDFkLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4YSwgMHg2ZiwgMHg2MSwgMHgxZCwgMHhiLCAweGZiLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFmLCAweDM0LCAweGIsIDB4YTUsIDB4ZjcsIDB4ZTMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWEsIDB4ZjcsIDB4MmEsIDB4ZmIsIDB4MzAsIDB4ZjcsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWEsIDB4ZjcsIDB4MjksIDB4YiwgMHg5YiwgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhhZSwgMHg2LCAweDQxLCAweDkzLCAweDc2LCAweDhiLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY4LCAweDJkLCAweDhkLCAweDcsIDB4YiwgMHg2MiwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg3ZiwgMHg3MywgMHg3YiwgMHg5MiwgMHg5MiwgMHg3OCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDM1LCAweDM0LCAweGU5LCAweGUyLCAweGI0LCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGY3LCAweDk4LCAweDU3LCAweDYsIDB4NGYsIDB4NDMsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHgxNiwgMHhmNywgMHg4NywgMHhhZCwgMHg2LCAweDVkLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweGE4LCAweGEyLCAweDFhLCAweGY3LCAweGRhLCAweGIsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MTUsIDB4Y2QsIDB4NiwgMHhmOCwgMHg2MCwgMHhmOSwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDQ5LCAweDYsIDB4ZSwgMHhhOSwgMHgzMCwgMHhmMSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHgxZiwgMHhhOSwgMHhiMSwgMHhiLCAweDE1LCAweGY3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4YiwgMHgxNSwgMHhmNywgMHgyNiwgMHhiMCwgMHhiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweGZiLCAweGE2LCAweDE1LCAweDY5LCAweGY3LCAweGE1LCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NWMsIDB4OGQsIDB4NmMsIDB4YiwgMHg4ZiwgMHg4NSwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg3ZSwgMHg4MiwgMHg4MCwgMHgxZSwgMHhmYiwgMHg1ZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHg1LCAweGIsIDB4YWUsIDB4NzgsIDB4MTUsIDB4YjIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg4ZiwgMHg5MCwgMHg5ZCwgMHhhMCwgMHgxYiwgMHg5OCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweGJiLCAweGJhLCAweGM2LCAweGM1LCAweDViLCAweGJjLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDVhLCAweDViLCAweDUwLCAweGIsIDB4MmUsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM2LCAweDMsIDB4YiwgMHhmYiwgMHgzMCwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjLCAweGY3LCAweDFlLCAweGY3LCAweDM4LCAweDFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4YSwgMHhhNywgMHhhOCwgMHhhZiwgMHhhZiwgMHg2ZiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIsIDB4OGIsIDB4YWQsIDB4ZjgsIDB4OCwgMHhjZSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDQ0LCAweDc3LCAweDEsIDB4YiwgMHhmNywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlMCwgMHg5YiwgMHgxNiwgMHg5OSwgMHhhLCAweGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjcsIDB4ZSwgMHhmNywgMHgxZiwgMHhmYiwgMHhmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGIsIDB4ZjcsIDB4OGIsIDB4ZjcsIDB4NDEsIDB4NmMsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YTQsIDB4ZjcsIDB4MjEsIDB4YiwgMHhmYiwgMHg1ZiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHhlOCwgMHg3NiwgMHhmNywgMHgyLCAweGFiLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ZDMsIDB4ZmIsIDB4NTMsIDB4NjksIDB4NiwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweGJmLCAweDE1LCAweGIsIDB4ZDYsIDB4OGIsIDB4YWUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxZSwgMHhlLCAweGExLCAweDhhLCAweDhhLCAweGFmLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGY3LCAweDQwLCAweGEyLCAweGIsIDB4ZmIsIDB4OTEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4NzYsIDB4ZjksIDB4ZmQsIDB4NzcsIDB4MSwgMHhiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4NmMsIDB4NmYsIDB4NDksIDB4NTQsIDB4NzYsIDB4NjksIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg1NSwgMHg4YiwgMHg1YSwgMHhjMywgMHg5MywgMHhjNywgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhkMywgMHhiLCAweGQ0LCAweDkwLCAweDI4LCAweDM3LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGZiLCAweDFiLCAweDM5LCAweGIsIDB4ZmIsIDB4Y2UsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4YjYsIDB4ZjksIDB4NzksIDB4YjYsIDB4MSwgMHhiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGZiLCAweDI3LCAweDc2LCAweGY5LCAweGYyLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmOSwgMHgxOCwgMHhhYywgMHhiLCAweDg2LCAweDg0LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDgxLCAweGE1LCAweGFlLCAweDdmLCAweGIsIDB4ZmIsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4YzUsIDB4NjgsIDB4NiwgMHhiMiwgMHhiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDFiLCAweDQ4LCAweDc1LCAweDkzLCAweGJiLCAweDFmLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg3MywgMHg4MCwgMHg2NywgMHg2MywgMHgxZSwgMHhlLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRkLCAweDc3LCAweDEsIDB4YiwgMHhmNywgMHg4YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGIsIDB4ZjcsIDB4MTYsIDB4MTIsIDB4YiwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg2LCAweDAsIDB4NjgsIDB4MCwgMHgwLCAweDksIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg3YywgMHgwLCAweDAsIDB4NDIsIDB4MjAsIDB4MCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NjQsIDB4MCwgMHgwLCAweGEwLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgwLCAweDAsIDB4ODMsIDB4MCwgMHgwLCAweGFhLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4YiwgMHgwLCAweDAsIDB4NmEsIDB4MCwgMHgwLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhhNSwgMHgwLCAweDAsIDB4ODAsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDAsIDB4MCwgMHg5YywgMHgwLCAweDAsIDB4YTQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE5LCAweDAsIDB4MCwgMHg3ZCwgMHgwLCAweDAsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDczLCAweDAsIDB4MCwgMHg3MiwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4MCwgMHgwLCAweDk2LCAweDAsIDB4MCwgMHg4ZiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NzgsIDB4MCwgMHgwLCAweDllLCAweDAsIDB4MCwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YTMsIDB4MCwgMHgwLCAweDdiLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgwLCAweDAsIDB4YWIsIDB4MSwgMHgwLCAweGIwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhZCwgMHgwLCAweDAsIDB4YWYsIDB4MCwgMHgwLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhiMSwgMHgwLCAweDAsIDB4YjUsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDIsIDB4MCwgMHhiOSwgMHgwLCAweDAsIDB4YjYsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDlhLCAweDAsIDB4MCwgMHhiYSwgMHgwLCAweDAsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGJiLCAweDEsIDB4MCwgMHhiZiwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4MCwgMHgwLCAweGE4LCAweDAsIDB4MCwgMHg4ZCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzQsIDB4MCwgMHgwLCAweGMxLCAweDIsIDB4MCwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4OWQsIDB4MCwgMHgwLCAweDk1LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHgwLCAweDAsIDB4YzgsIDB4MSwgMHgwLCAweGNkLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjYSwgMHgwLCAweDAsIDB4Y2MsIDB4MCwgMHgwLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhjZSwgMHgwLCAweDAsIDB4ZDIsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweDIsIDB4MCwgMHhkNiwgMHgwLCAweDAsIDB4ZDMsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE3LCAweDAsIDB4MCwgMHhkNywgMHgwLCAweDAsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGQ4LCAweDEsIDB4MCwgMHhkYywgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4MCwgMHgwLCAweDlmLCAweDAsIDB4MCwgMHg5MywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZTEsIDB4MCwgMHgwLCAweGRlLCAweDIsIDB4MCwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YTIsIDB4MCwgMHgwLCAweGUzLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHgwLCAweDAsIDB4OGMsIDB4MCwgMHgwLCAweDkyLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4ZSwgMHgwLCAweDAsIDB4OTQsIDB4MCwgMHgwLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhkZCwgMHgwLCAweDAsIDB4YzYsIDB4MSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweDAsIDB4MCwgMHg2NSwgMHgwLCAweDAsIDB4N2UsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDg4LCAweDAsIDB4MCwgMHg4MSwgMHgxLCAweDAsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDg3LCAweDAsIDB4MCwgMHg3ZiwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4MCwgMHgwLCAweDZmLCAweDAsIDB4MCwgMHg4OSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NDEsIDB4MCwgMHgwLCAweDgsIDB4MCwgMHgwLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg2OSwgMHgwLCAweDAsIDB4NzcsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDAsIDB4MCwgMHg3MCwgMHgxLCAweDAsIDB4NzQsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc5LCAweDEsIDB4MCwgMHg2YiwgMHgxLCAweDAsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgxLCAweDg3LCAweDAsIDB4MCwgMHg5OSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4MCwgMHgwLCAweDZkLCAweDEsIDB4MCwgMHhlNiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MSwgMHgwLCAweDQsIDB4MCwgMHg3LCAweDAsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg3OCwgMHgwLCAweGVjLCAweDEsIDB4NzQsIDB4MSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDYxLCAweDIsIDB4OGMsIDB4MiwgMHhiYSwgMHgyLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZTQsIDB4NCwgMHgxMCwgMHg0LCAweDNlLCAweDQsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg1OSwgMHg0LCAweDc0LCAweDQsIDB4YzUsIDB4NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDRjLCAweDUsIDB4YjUsIDB4NSwgMHhmMywgMHg2LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjQsIDB4NiwgMHhkYSwgMHg3LCAweDVjLCAweDcsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlMSwgMHg4LCAweDI4LCAweDgsIDB4NDUsIDB4OCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDgzLCAweDgsIDB4ZjQsIDB4OSwgMHhhZCwgMHg5LCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NGEsIDB4YSwgMHhhOSwgMHhhLCAweGVlLCAweGIsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhhYiwgMHhjLCAweDIzLCAweGMsIDB4OGMsIDB4YywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGU0LCAweGQsIDB4NTAsIDB4ZCwgMHg3NSwgMHhkLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MCwgMHhlLCAweDIwLCAweGUsIDB4N2QsIDB4ZSwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweDUwLCAweGYsIDB4NzgsIDB4ZiwgMHhiYiwgMHgxMCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDQ2LCAweDEwLCAweGMwLCAweDExLCAweDNkLCAweDExLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDY1LCAweDExLCAweDg2LCAweDExLCAweGExLCAweDExLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweGUzLCAweDExLCAweGVmLCAweDExLCAweGY3LCAweDEyLCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDllLCAweDEyLCAweGUyLCAweDEzLCAweDQ5LCAweDEzLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGNjLCAweDE0LCAweDkxLCAweDE0LCAweGMzLCAweDE0LCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDUwLCAweDE1LCAweGI5LCAweDE1LCAweGQ3LCAweDE2LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGFjLCAweDE2LCAweGViLCAweDE3LCAweDIzLCAweDE3LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGUwLCAweDE4LCAweDYzLCAweDE4LCAweGFjLCAweDE4LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGVmLCAweDE5LCAweDZjLCAweDE5LCAweGU2LCAweDE5LCAweGZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDI1LCAweDFhLCAweDc0LCAweDFhLCAweDhmLCAweDFhLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDIxLCAweDFiLCAweDcwLCAweDFiLCAweGY4LCAweDFjLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDIwLCAweDFkLCAweDlmLCAweDFkLCAweGMxLCAweDFlLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDllLCAweDFmLCAweDE5LCAweDFmLCAweDkwLCAweDFmLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGU1LCAweDIwLCAweDc5LCAweDIwLCAweDhhLCAweDIwLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGZmLCAweDIxLCAweDMwLCAweDIxLCAweDUxLCAweDIxLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGVjLCAweDIyLCAweDI4LCAweDIyLCAweDMyLCAweDIyLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDgwLCAweDIyLCAweGI4LCAweDIyLCAweGU0LCAweDIzLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDYwLCAweDIzLCAweDk4LCAweDI0LCAweGIsIDB4MjQsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4MmYsIDB4MjQsIDB4NDEsIDB4MjQsIDB4N2MsIDB4MjQsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4ZDksIDB4MjUsIDB4NzgsIDB4MjYsIDB4NiwgMHgyNiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHgyMiwgMHgyNiwgMHgzNiwgMHgyNiwgMHg2MCwgMHgyNiwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHg2ZiwgMHgyNiwgMHg3YywgMHgyNiwgMHhhZSwgMHgyNiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHgzNSwgMHgyNywgMHg1NywgMHgyNywgMHg2YSwgMHgyNywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhlNiwgMHgyOCwgMHg1LCAweDI4LCAweDM1LCAweDI4LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweGJhLCAweDI4LCAweGNlLCAweDI4LCAweGUyLCAweDI5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4M2EsIDB4MjksIDB4ZGQsIDB4MmEsIDB4ODEsIDB4MmEsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4YjgsIDB4MmEsIDB4ZDgsIDB4MmIsIDB4MjgsIDB4MmIsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4OGUsIDB4MmMsIDB4NDMsIDB4MmMsIDB4OWYsIDB4MmMsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4Y2EsIDB4MmMsIDB4ZWEsIDB4MmQsIDB4ZiwgMHgyZCwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg0OCwgMHgyZCwgMHg2ZCwgMHgyZCwgMHg5MCwgMHgyZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDUxLCAweDJlLCAweGEzLCAweDJlLCAweGIxLCAweDJlLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweGU5LCAweDJmLCAweDYsIDB4MmYsIDB4MzgsIDB4MmYsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4ZGUsIDB4MmYsIDB4ZmUsIDB4MzAsIDB4MTUsIDB4MzAsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4NzgsIDB4MzAsIDB4YTksIDB4MzAsIDB4Y2QsIDB4MzAsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MTQsIDB4MzEsIDB4NDYsIDB4MzEsIDB4ZTAsIDB4MzIsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzIsIDB4YTEsIDB4MzMsIDB4MTksIDB4MzMsIDB4NGYsIDB4MzMsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4OTMsIDB4MzQsIDB4MTYsIDB4MzQsIDB4MjEsIDB4MzQsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4NjQsIDB4MzQsIDB4ODUsIDB4MzQsIDB4Y2MsIDB4MzUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHgzOSwgMHgzNSwgMHg1MiwgMHgzNSwgMHg2MCwgMHgzNSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHg5NSwgMHgzNSwgMHhhMSwgMHgzNSwgMHhiMCwgMHgzNSwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhmMywgMHgzNiwgMHhjLCAweDM2LCAweGIwLCAweDM3LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDM4LCAweDM3LCAweDViLCAweDM3LCAweDk2LCAweDM3LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGRmLCAweDM3LCAweGY4LCAweDM4LCAweDg2LCAweDM5LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDNmLCAweDM5LCAweGE1LCAweDNhLCAweDAsIDB4ZmMsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYywgMHgyMSwgMHhlLCAweGZiLCAweGNlLCAweDdlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGY4LCAweGFiLCAweDc3LCAweDEsIDB4ZGMsIDB4ZjcsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhkYywgMHhkMiwgMHgxNSwgMHg1YywgMHhiMCwgMHg2NCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHg1YywgMHg1YiwgMHg2NiwgMHg2MywgMHg1ZSwgMHgxZSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNywgMHgxNSwgMHhhOCwgMHg2LCAweDk0LCAweGU1LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweDk2LCAweGI3LCAweDgsIDB4OWYsIDB4ZGQsIDB4OWYsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MWEsIDB4Y2IsIDB4NjksIDB4YWYsIDB4NTgsIDB4NTcsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NGIsIDB4NTQsIDB4OWYsIDB4NzAsIDB4OWYsIDB4MzgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NWYsIDB4OTUsIDB4NGYsIDB4OTQsIDB4MzMsIDB4OCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGY4LCAweDNkLCAweDc2LCAweGY3LCAweGIzLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4ZjcsIDB4MTUsIDB4ZjcsIDB4MTcsIDB4ZjcsIDB4MTUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMywgMHhmOCwgMHgyOCwgMHgxNSwgMHg2ZSwgMHhhLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGZiLCAweGMsIDB4OWMsIDB4NDMsIDB4MWUsIDB4ZjcsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4NmUsIDB4YSwgMHgxZSwgMHg4YSwgMHg3NCwgMHhhNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDljLCAweDQzLCAweDgsIDB4ZSwgMHhhMCwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHhjYywgMHg0YSwgMHhkNCwgMHhmNywgMHgyMCwgMHhkNCwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhmNywgMHg2NiwgMHg3NywgMHgxMiwgMHgxMywgMHhiNCwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhjZSwgMHg2LCAweGJiLCAweGY3LCAweDY2LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4NiwgMHg1ZCwgMHhmYiwgMHg2NiwgMHg1LCAweGNlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4ZjcsIDB4NjYsIDB4NSwgMHhmMCwgMHg2LCAweDEzLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGNjLCAweDUsIDB4MzUsIDB4NiwgMHhhZCwgMHhmNywgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGRiLCAweDYsIDB4OGMsIDB4Y2IsIDB4NSwgMHg0NywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGY3LCAweDY2LCAweDUsIDB4NDksIDB4NiwgMHg1YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg1LCAweGZiLCAweDIyLCAweDYsIDB4YjksIDB4ZjcsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0OSwgMHg2LCAweDVjLCAweGZiLCAweDY2LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2LCAweDhhLCAweDRiLCAweDUsIDB4ZjIsIDB4NiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYiwgMHg1LCAweDI4LCAweDYsIDB4OGEsIDB4NGEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHg2LCAweGRjLCAweGNjLCAweDE1LCAweGFiLCAweGY3LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4MjUsIDB4NiwgMHg2OSwgMHhmYiwgMHgyYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4M2QsIDB4NzYsIDB4ZjksIDB4ZTUsIDB4NzcsIDB4MTIsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4YmMsIDB4YzMsIDB4ZTksIDB4ZjcsIDB4MiwgMHgxNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhhOSwgMHgxNSwgMHhmNywgMHg3MCwgMHg3LCAweGM1LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDc4LCAweDUxLCAweDFhLCAweDJlLCAweDQ5LCAweDdmLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDFlLCAweGZiLCAweDczLCAweDk4LCAweDE1LCAweGQzLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDgwLCAweGNmLCAweDg4LCAweDgsIDB4MjgsIDB4YzIsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgxMywgMHg3OCwgMHhmMCwgMHg5YywgMHhmMSwgMHhhZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHgxYSwgMHhmNywgMHhlLCAweDJjLCAweGJkLCAweGZiLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MWUsIDB4ZjcsIDB4NmIsIDB4NywgMHhlYiwgMHg3YiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHg5NiwgMHg2NCwgMHg4LCAweGFhLCAweGY3LCAweDIxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4OWMsIDB4NjgsIDB4YTAsIDB4MmIsIDB4OTksIDB4OCwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHgzZCwgMHg3LCAweDM3LCAweDg3LCAweDI2LCAweDU0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4MWEsIDB4ZmIsIDB4ZCwgMHhmNywgMHg1LCAweDUwLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDFlLCAweGZiLCAweDhmLCAweDcsIDB4NTQsIDB4OTUsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4NjcsIDB4ZjcsIDB4MTQsIDB4NmMsIDB4OGQsIDB4MTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4ZjcsIDB4OTMsIDB4MTUsIDB4ODAsIDB4OGYsIDB4M2QsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4MWEsIDB4YzksIDB4YmIsIDB4OWYsIDB4YjQsIDB4OTQsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHhmNSwgMHg3ZCwgMHhiOSwgMHhmNywgMHg5YSwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhiZSwgMHhmNywgMHg5NywgMHhiYSwgMHg5OSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweGY3LCAweDYsIDB4ZjcsIDB4NTYsIDB4YWMsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHhmNywgMHg1NCwgMHhhYywgMHgzLCAweGY4LCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM4LCAweDQxLCAweDFkLCAweGZkLCAweDIyLCAweGY3LCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDFkLCAweGI5LCAweDc2LCAweDFkLCAweGY3LCAweDRlLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDNlLCAweGYwLCAweGY4LCAweGQxLCAweGFjLCAweDEyLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFmLCAweGY3LCAweGUsIDB4ZjcsIDB4MjQsIDB4OGIsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4ZjcsIDB4MjQsIDB4MTMsIDB4N2MsIDB4ZjgsIDB4NmYsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NWMsIDB4YjEsIDB4YzYsIDB4NjIsIDB4YzksIDB4MWIsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4OWQsIDB4YjEsIDB4YjEsIDB4MWYsIDB4MTMsIDB4N2UsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YTUsIDB4YzAsIDB4OGMsIDB4OGMsIDB4NzcsIDB4OTcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4N2YsIDB4NzcsIDB4N2IsIDB4NzIsIDB4MWIsIDB4NWMsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4YzEsIDB4NjEsIDB4MWYsIDB4YzEsIDB4ZDAsIDB4OTYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZTQsIDB4OWMsIDB4YTYsIDB4OWEsIDB4OTQsIDB4YjgsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhhZCwgMHhmYiwgMHg2NiwgMHg2OSwgMHg3LCAweGJmLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDg5LCAweDY2LCAweDFhLCAweDViLCAweDVmLCAweDVmLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDFlLCAweGZiLCAweDJiLCAweGY3LCAweDZhLCAweDUsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4ZTIsIDB4YjYsIDB4ZGQsIDB4MWEsIDB4YzEsIDB4NjEsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4ZmIsIDB4MzQsIDB4MjUsIDB4ZmIsIDB4MmMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4ZjcsIDB4YywgMHgxZSwgMHg0OSwgMHg2YiwgMHhmYiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhmYiwgMHgxNywgMHgxYSwgMHhmYiwgMHhiLCAweGVhLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweGYxLCAweGRjLCAweGM1LCAweGE5LCAweGIyLCAweDFlLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDE1LCAweDEzLCAweGJjLCAweDc3LCAweDcwLCAweDZiLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDFiLCAweDJkLCAweDQ4LCAweGY3LCAweDE3LCAweGNmLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGEzLCAweGMwLCAweGE5LCAweDFmLCAweGUzLCAweGZiLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDNmLCAweGIxLCAweDU5LCAweDgsIDB4NTQsIDB4ZjcsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzMsIDB4YTgsIDB4NTksIDB4Y2UsIDB4YmUsIDB4MWEsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4OTYsIDB4YTQsIDB4YzQsIDB4YWQsIDB4NDEsIDB4NTksIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4N2IsIDB4NzAsIDB4ODIsIDB4MWUsIDB4ZSwgMHhmYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDNkLCAweDc2LCAweGY3LCAweGIzLCAweDc3LCAweDEsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4MywgMHhmNywgMHhiLCAweGY4LCAweDI4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDYsIDB4OWMsIDB4ZDMsIDB4YTYsIDB4ZjcsIDB4NCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhiNiwgMHg3MiwgMHhiMCwgMHg2MywgMHg2MywgMHg3MywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg3NCwgMHhhNiwgMHhmYiwgMHg0LCAweDljLCAweDQzLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OTIsIDB4MWQsIDB4YmYsIDB4ZjcsIDB4NSwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGZiLCAweDIwLCAweDE1LCAweDJhLCAweGM2LCAweDU5LCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE0LCAweDFhLCAweGY3LCAweGM1LCAweGNiLCAweGI2LCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDFlLCAweGE2LCAweDcsIDB4NTQsIDB4NzIsIDB4ZmIsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NiwgMHhmYiwgMHhiOCwgMHgxYSwgMHgzOSwgMHhhNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhmNywgMHg3YywgMHhmYiwgMHgxMSwgMHgxZSwgMHhlLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY3LCAweDQyLCAweGY3LCAweDUsIDB4MywgMHhhNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHgxNSwgMHg3MCwgMHg3LCAweGMyLCAweGE0LCAweGY3LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweGY3LCAweGI4LCAweDFhLCAweGRkLCAweDZmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGZiLCAweDdjLCAweGY3LCAweDExLCAweDFlLCAweDZmLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4NTAsIDB4YmQsIDB4NGUsIDB4ZmIsIDB4YTQsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4NGIsIDB4NTUsIDB4MzgsIDB4NTMsIDB4MWUsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg3NiwgMHhmNCwgMHg3NiwgMHhhMywgMHg3NiwgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDhiLCAweDc3LCAweDEyLCAweGY3LCAweDVkLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGJjLCAweGY3LCAweDg1LCAweGY4LCAweDU1LCAweDE1LCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDc4LCAweDg2LCAweDdkLCAweDFlLCAweDgwLCAweDZhLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDY0LCAweDFhLCAweDY5LCAweGEyLCAweDc2LCAweGE0LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGEwLCAweGFhLCAweDFlLCAweDhhLCAweGE4LCAweDdiLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGIzLCAweDg2LCAweDlhLCAweDg3LCAweDlmLCAweDg5LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDkwLCAweDE4LCAweGExLCAweDgwLCAweDk0LCAweDg1LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDkzLCAweDgxLCAweDk0LCAweDdkLCAweDlhLCAweDc2LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4OTksIDB4YTEsIDB4N2YsIDB4OWUsIDB4MWIsIDB4YTUsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4YWMsIDB4YzYsIDB4NTYsIDB4N2YsIDB4NGUsIDB4OTcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4OGYsIDB4NzgsIDB4OTAsIDB4NzksIDB4OTUsIDB4OCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGEyLCAweDliLCAweDllLCAweDkxLCAweDliLCAweDhlLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweGEwLCAweDg1LCAweGEyLCAweDk0LCAweDgsIDB4YTcsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YTEsIDB4YTAsIDB4MWEsIDB4YTQsIDB4NzksIDB4YTIsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4ODYsIDB4NmQsIDB4NjQsIDB4NmIsIDB4MWUsIDB4N2YsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4N2IsIDB4NzUsIDB4N2IsIDB4ODMsIDB4OGUsIDB4MTgsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4OTQsIDB4YTAsIDB4OTQsIDB4OWMsIDB4OCwgMHg5NiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg5OSwgMHhhOCwgMHgxYSwgMHhhZCwgMHg3MSwgMHg5ZiwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3MywgMHg3OCwgMHg2ZCwgMHg2YywgMHg5YSwgMHg3YywgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHgxZSwgMHg5NCwgMHg3YSwgMHg5MCwgMHg3NSwgMHg2NywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg4OCwgMHg2ZiwgMHg5OCwgMHg3ZCwgMHg5YywgMHg3ZiwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhhYywgMHg3MywgMHg4NiwgMHhhYywgMHg1OCwgMHgxYiwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg4MCwgMHg2NiwgMHg2OCwgMHg5YSwgMHg4MSwgMHhhNSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg5ZCwgMHg4OCwgMHhhMSwgMHg4YSwgMHhhNCwgMHg4NywgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhhMCwgMHg4NSwgMHhhMiwgMHg4MCwgMHg4YSwgMHg4NCwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3OSwgMHg3OCwgMHg4NSwgMHg3YSwgMHg4OSwgMHg4LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDdiLCAweDhiLCAweDdiLCAweDFiLCAweDZlLCAweDZhLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDg5LCAweDFmLCAweDEzLCAweGRjLCAweDcxLCAweDhhLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGE2LCAweDFiLCAweGI2LCAweDhmLCAweGFiLCAweGIyLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk3LCAweDk5LCAweDlhLCAweDlhLCAweGEyLCAweDlhLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgzZSwgMHhhMCwgMHg3NiwgMHhmNywgMHg3NCwgMHhjNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3NywgMHgxMiwgMHhmNywgMHg4MSwgMHhlNSwgMHgzZiwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmMCwgMHhhYywgMHhmNywgMHg3NiwgMHgxNSwgMHgxMywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2ZSwgMHhmYiwgMHg3NiwgMHhjYiwgMHhmNywgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhjNiwgMHhmYiwgMHg3MiwgMHhmNywgMHg3MSwgMHg0YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhmYiwgMHg2ZSwgMHg2LCAweGUsIDB4ZmMsIDB4MjEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4ODMsIDB4YSwgMHhiMiwgMHg3NywgMHhhLCAweDEzLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGZiLCAweDM0LCAweDE1LCAweDk3LCAweDc3LCAweDUsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4ZjcsIDB4NywgMHgzZCwgMHhhLCAweDVkLCAweDY3LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDRjLCAweGI5LCAweDdiLCAweGE3LCAweDFlLCAweDEzLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGExLCAweDkyLCAweDcwLCAweDUzLCAweDM3LCAweDUwLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFmLCAweGUsIDB4ZmIsIDB4Y2UsIDB4ZjcsIDB4M2YsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgxLCAweGI3LCAweGY3LCAweDNmLCAweDE1LCAweGY3LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgsIDB4ZmIsIDB4ODcsIDB4NiwgMHhlLCAweGZjLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDkzLCAweGEsIDB4ZDIsIDB4NjIsIDB4MWQsIDB4ZmMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg3NiwgMHhmOSwgMHg0YiwgMHg3NywgMHhhZSwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhjMCwgMHg4NCwgMHg3OCwgMHgxNSwgMHhkMywgMHg2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGY3LCAweDc4LCAweGY5LCAweDVhLCAweDUsIDB4M2IsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdlLCAweGE3LCAweGY5LCAweDE5LCAweGE3LCAweDEsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzIsIDB4ZjcsIDB4MWMsIDB4ZjcsIDB4MzIsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhmNywgMHg3MiwgMHgxNSwgMHhmNywgMHg3OSwgMHg3LCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGY3LCAweDEyLCAweGNlLCAweGJiLCAweGEwLCAweDUxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDFlLCAweGZiLCAweDc5LCAweDcsIDB4M2MsIDB4OGYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4NDMsIDB4NTcsIDB4N2IsIDB4Y2IsIDB4ZjcsIDB4MjMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzIsIDB4ZjcsIDB4MiwgMHgxNSwgMHhmYiwgMHg1ZCwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNCwgMHhmNywgMHgxNCwgMHhmNywgMHgyMCwgMHhlMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhmNywgMHg0OCwgMHhmNywgMHg4NCwgMHhmYiwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4MjIsIDB4MjYsIDB4ZmIsIDB4MTAsIDB4MjMsIDB4ZmIsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHg4YiwgMHhhZCwgMHhmOSwgMHgyMiwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRlLCAweGY3LCAweDI4LCAweDMsIDB4Y2MsIDB4MTYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhhZCwgMHg2LCAweDI4LCAweDgyLCAweGE2LCAweGNlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGM0LCAweDdhLCAweDcsIDB4ZmIsIDB4OTAsIDB4ZmIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDcxLCAweDcsIDB4OTgsIDB4YWQsIDB4YWQsIDB4OTcsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YjIsIDB4OGIsIDB4NWYsIDB4NzIsIDB4MWYsIDB4ZmMsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDRkLCAweDg2LCAweDY1LCAweGZiLCAweDgsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmNywgMHgxOSwgMHhmOCwgMHg4LCAweDc2LCAweGU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MSwgMHhmNywgMHhjMCwgMHhmNywgMHgxYywgMHgzLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY4LCAweDM0LCAweDYsIDB4YjgsIDB4ZjcsIDB4NjcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2LCAweDQ3LCAweDZmLCAweDgyLCAweDgxLCAweDIxLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIxLCAweDYsIDB4ZjcsIDB4YTgsIDB4ZjcsIDB4OWIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4YTgsIDB4MWEsIDB4ZjcsIDB4MmMsIDB4ZmIsIDB4ZiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHhmYiwgMHgyMSwgMHg1MCwgMHhmYiwgMHgyNywgMHg1MiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhNywgMHg2LCAweGRmLCAweGIwLCAweGM5LCAweDkxLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGYyLCAweDliLCAweDI3LCAweDZmLCAweGZiLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhmYiwgMHgxOCwgMHhmYiwgMHgzNiwgMHhmYiwgMHg0MSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDdkLCAweGJkLCAweDU5LCAweGY3LCAweDI4LCAweGY4LCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDEyLCAweGY3LCAweGY2LCAweGY3LCAweDYsIDB4MTMsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmQsIDB4ZjcsIDB4ZjgsIDB4MTUsIDB4ZDcsIDB4NzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4NjEsIDB4ZmIsIDB4MTksIDB4MWEsIDB4MzEsIDB4NTcsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4NmQsIDB4NzQsIDB4YTIsIDB4YTMsIDB4NzIsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4YTQsIDB4NzEsIDB4NmUsIDB4YTUsIDB4NjAsIDB4MWIsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NzQsIDB4NmEsIDB4NGMsIDB4ZDIsIDB4NmUsIDB4ZGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZjcsIDB4ZCwgMHhmNywgMHhlLCAweGY3LCAweDIwLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGQzLCAweDNjLCAweGE4LCAweDFmLCAweGI3LCAweGE2LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGQ4LCAweDFhLCAweGU4LCAweDQzLCAweGI1LCAweDJiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4M2UsIDB4MzEsIDB4NGMsIDB4NmUsIDB4MWUsIDB4YTAsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhhMywgMHg5YSwgMHhhZSwgMHhjNywgMHhkMCwgMHgxYiwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg1ZiwgMHg1MCwgMHgzMCwgMHgzOSwgMHg3MiwgMHg1YiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweGEwLCAweDc2LCAweGY3LCAweDI0LCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4Y2YsIDB4NzYsIDB4ZjcsIDB4MWYsIDB4NzcsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhmNywgMHgyMywgMHgzLCAweDllLCAweGY3LCAweDI0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhjLCAweGZiLCAweDI0LCAweGY3LCAweDI1LCAweGY3LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGY3LCAweDMsIDB4NGMsIDB4ZjgsIDB4NDUsIDB4MzEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhmYiwgMHhlLCAweGZiLCAweDEwLCAweGZiLCAweDNiLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIyLCAweDgsIDB4YjQsIDB4ODksIDB4MTUsIDB4ZjcsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmEsIDB4NSwgMHg4ZCwgMHhmYiwgMHhiYSwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4YzgsIDB4NGUsIDB4ZjcsIDB4MjgsIDB4ZjcsIDB4NTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZGMsIDB4ZjcsIDB4MTMsIDB4MTIsIDB4ZjgsIDB4OSwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiOCwgMHhiZSwgMHhmNywgMHhkZiwgMHgxNSwgMHhkMywgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHg4NiwgMHhjZSwgMHg2ZCwgMHg4LCAweGMwLCAweDc0LCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDRlLCAweDFhLCAweDM5LCAweDQ5LCAweDc1LCAweDY5LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGEwLCAweGEwLCAweDZkLCAweDFlLCAweDEzLCAweDc4LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDZiLCAweGEyLCAweDY4LCAweDFiLCAweDYwLCAweDc4LCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDUyLCAweGNkLCAweDZjLCAweGQ4LCAweGY3LCAweDRhLCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIsIDB4ZjcsIDB4MTcsIDB4ZWQsIDB4NTAsIDB4Y2EsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4MWYsIDB4NDgsIDB4YjEsIDB4NGQsIDB4OTEsIDB4MzAsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4ZTYsIDB4MTgsIDB4ZjcsIDB4YWEsIDB4NiwgMHhiNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg1LCAweGZiLCAweGQ2LCAweDYsIDB4ZSwgMHg3ZSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmZSwgMHhiOCwgMHhmNywgMHg5ZiwgMHg3NywgMHgxLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweGY3LCAweDFlLCAweGY3LCAweDJjLCAweDMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4ZjksIDB4MmEsIDB4MTUsIDB4YTUsIDB4NywgMHhmYiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhmYiwgMHgyMiwgMHhmYiwgMHg1NCwgMHhmYiwgMHg0YSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4NCwgMHhmNywgMHgxZiwgMHg1MiwgMHhlNSwgMHhmNywgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhmNywgMHgzZSwgMHhjMSwgMHhmNywgMHg0MCwgMHhmYiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDQ2LCAweDViLCAweDc5LCAweDg0LCAweDgxLCAweDczLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGY3LCAweDRjLCAweGY3LCAweGUsIDB4YzEsIDB4ZWYsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmYiwgMHhhOCwgMHhmYiwgMHhiZiwgMHgxNSwgMHg5NywgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg4YywgMHg5YiwgMHgxYiwgMHhkMCwgMHg5YiwgMHgzZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHgzYywgMHg4YiwgMHg0YywgMHg0ZSwgMHg0ZCwgMHg3YywgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1OSwgMHhhYywgMHg5MywgMHhjMywgMHg4YywgMHg4YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGEwLCAweDc2LCAweGY4LCAweDZmLCAweDc2LCAweGUwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDEsIDB4ZjcsIDB4MjcsIDB4MTYsIDB4ZWEsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHhmOSwgMHgzOCwgMHg1LCAweGZjLCAweDM0LCAweDYsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NzIsIDB4NSwgMHhhZSwgMHg2LCAweGUwLCAweGExLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGE1LCAweDFiLCAweGY3LCAweDRmLCAweDYsIDB4ZSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhmOSwgMHgxNCwgMHhhOCwgMHgxMiwgMHhhNywgMHhmNywgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4ZjcsIDB4MTUsIDB4ZjcsIDB4MzksIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTksIDB4ZjcsIDB4YiwgMHgxMywgMHhkNCwgMHhmNywgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzYSwgMHgxNSwgMHg4MSwgMHg5MCwgMHhmYiwgMHhjLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDFhLCAweGI0LCAweGIwLCAweGIzLCAweGJjLCAweGQ1LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDU4LCAweDRmLCAweDc5LCAweDczLCAweDc0LCAweDZjLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGMsIDB4MjksIDB4MTUsIDB4MTMsIDB4ZTgsIDB4NDgsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NjQsIDB4ZmIsIDB4MSwgMHgxYSwgMHhmYiwgMHgyLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGY3LCAweDAsIDB4ZjcsIDB4MjMsIDB4ZTcsIDB4ZDksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4ZTgsIDB4NGIsIDB4ZDEsIDB4MzUsIDB4YmUsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4YzIsIDB4OWQsIDB4ZGMsIDB4YTksIDB4ZTAsIDB4MWEsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4ZTksIDB4ZmIsIDB4MmMsIDB4ZmIsIDB4MzQsIDB4NTQsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4MzgsIDB4Y2IsIDB4NGUsIDB4ZDYsIDB4NjEsIDB4MWUsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4MTUsIDB4MTMsIDB4ZTgsIDB4Y2YsIDB4NWUsIDB4Y2MsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4MWEsIDB4NzEsIDB4ODQsIDB4MzAsIDB4MzIsIDB4NGEsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4ZDMsIDB4ZDQsIDB4YTAsIDB4YWEsIDB4YTksIDB4YjgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg5MywgMHg3NiwgMHhmNywgMHg5ZiwgMHhiOCwgMHhmNywgMHhmZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHgxLCAweGE1LCAweGY3LCAweDJjLCAweGY3LCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDMsIDB4YWEsIDB4N2UsIDB4MTUsIDB4ZjcsIDB4YzAsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjIsIDB4ZjcsIDB4NTQsIDB4ZjcsIDB4NGEsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4ZmIsIDB4MWYsIDB4YzQsIDB4MzEsIDB4ZmIsIDB4NDgsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2UsIDB4NTUsIDB4ZmIsIDB4NDAsIDB4ZjcsIDB4NCwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhhZSwgMHhhNSwgMHg4ZSwgMHg5YiwgMHhhYSwgMHgxZSwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1MSwgMHhmYiwgMHg5LCAweDU4LCAweDI3LCAweDc3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTgsIDB4ZjcsIDB4YmYsIDB4MTUsIDB4ODMsIDB4OGEsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4N2IsIDB4MWIsIDB4NDYsIDB4N2IsIDB4ZDcsIDB4ZjcsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4OTAsIDB4Y2EsIDB4YzgsIDB4YzksIDB4OTUsIDB4NDIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4NzQsIDB4ODUsIDB4NjMsIDB4ODgsIDB4N2IsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjZSwgMHg3ZSwgMHhmNywgMHgzYSwgMHhmNywgMHgyZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHgxLCAweGRkLCAweGY3LCAweDNkLCAweDMsIDB4ZGQsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4MWQsIDB4YWYsIDB4NWMsIDB4NWIsIDB4NjcsIDB4NjYsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4ZDYsIDB4NCwgMHg4NiwgMHhhLCAweGFjLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDY3LCAweDY5LCAweDVlLCAweDFlLCAweGUsIDB4ZmIsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzMsIDB4NzYsIDB4ZjcsIDB4ZTMsIDB4ZjcsIDB4MmMsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzksIDB4MTIsIDB4ZGQsIDB4ZjcsIDB4M2QsIDB4NTYsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZTgsIDB4ZTQsIDB4ZmIsIDB4MzIsIDB4MTUsIDB4OTYsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgzMywgMHgxZCwgMHgxZSwgMHgxMywgMHhmMCwgMHg1ZCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg1NywgMHgzYywgMHhkMiwgMHg4YiwgMHg4ZSwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhhZiwgMHg4ZCwgMHg5MSwgMHg4MCwgMHg4MCwgMHgxYSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHg1MiwgMHg2ZiwgMHg3OCwgMHgxZSwgMHgxMywgMHhmMCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhiYSwgMHgxNSwgMHg4NiwgMHhhLCAweGFkLCAweDVjLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDY4LCAweDVlLCAweDFlLCAweGUsIDB4OTUsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHgxNSwgMHhmOCwgMHg5MCwgMHhmYiwgMHg3MywgMHg1LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZmMsIDB4MzgsIDB4ZjcsIDB4NTMsIDB4ZjgsIDB4MzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NSwgMHhkNCwgMHg3LCAweGZjLCAweDkwLCAweGZiLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHgzZSwgMHhmNiwgMHhkZiwgMHhmNywgMHhlLCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGNmLCAweDEyLCAweDEzLCAweGEwLCAweGFjLCAweGY3LCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweDhjLCAweGNmLCAweGZjLCAweDhjLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4NCwgMHhmOCwgMHg4YywgMHg2LCAweDEzLCAweGMwLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDhjLCAweDcsIDB4ZSwgMHg5NSwgMHhhLCAweDgzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDkwLCAweGY3LCAweDczLCAweDUsIDB4ZDcsIDB4NywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhmNywgMHg3MywgMHg1LCAweDNmLCAweDcsIDB4ZjgsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGIsIDB4ZmMsIDB4MzcsIDB4ZmIsIDB4NTAsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGY3LCAweDNkLCAweGY4LCAweDg1LCAweGFmLCAweDEyLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE3LCAweDY5LCAweGY3LCAweDNkLCAweDcwLCAweGY3LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGU4LCAweGY3LCAweDczLCAweGY3LCAweDdiLCAweDE1LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZTIsIDB4OWEsIDB4OTAsIDB4ZGUsIDB4YmUsIDB4MWUsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4YjQsIDB4YmIsIDB4Y2IsIDB4MWEsIDB4ZjcsIDB4MzMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4OTYsIDB4NmMsIDB4ZmIsIDB4MzgsIDB4NmQsIDB4MjUsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4OWUsIDB4NjEsIDB4YmUsIDB4OWYsIDB4YjQsIDB4OTcsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4N2YsIDB4OTcsIDB4ODEsIDB4OTYsIDB4MWUsIDB4ODMsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4OTMsIDB4OTgsIDB4MWEsIDB4YjAsIDB4YmQsIDB4OGUsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4OTMsIDB4MmYsIDB4NjEsIDB4NTEsIDB4N2IsIDB4NjUsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MWUsIDB4NzEsIDB4NTksIDB4NmQsIDB4NjUsIDB4OWIsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgxMywgMHhkMCwgMHg0NiwgMHhmYiwgMHgzNCwgMHgxNSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg2NiwgMHhiYiwgMHhiOSwgMHhiMSwgMHhhZiwgMHhiYiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhiMiwgMHg1ZCwgMHg1YiwgMHg2NiwgMHg2MywgMHg1ZSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweGFmLCAweDZkLCAweGI5LCAweGY3LCAweDEzLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGJiLCAweGY3LCAweGEyLCAweGJiLCAweGY3LCAweDIzLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGViLCAweGU3LCAweGY3LCAweDI1LCAweGQ4LCAweGY4LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4MTMsIDB4YmYsIDB4ZjgsIDB4MjAsIDB4ZjcsIDB4YWMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZCwgMHhlMywgMHhkMSwgMHhiYywgMHhhOSwgMHg5OSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHgxZSwgMHgxMywgMHhhZiwgMHhmYiwgMHgyNSwgMHg3ZCwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHg1ZiwgMHgxYiwgMHg2OSwgMHg2ZiwgMHhhOCwgMHhjNywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMywgMHg0YiwgMHgxNSwgMHg3ZSwgMHg4YSwgMHhhMywgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHgxYiwgMHhmNywgMHhmLCAweGNmLCAweGY3LCAweDFmLCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQyLCAweGZiLCAweDI4LCAweGY3LCAweDE2LCAweGZiLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVmLCAweGZiLCAweDQxLCAweGZiLCAweDI5LCAweGZiLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFlLCAweGY3LCAweGEsIDB4ZmIsIDB4NWQsIDB4ZjcsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4ZDEsIDB4YTcsIDB4YWIsIDB4Y2QsIDB4MWYsIDB4N2UsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg3MCwgMHg1MCwgMHg1NSwgMHg3NSwgMHgzMCwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhmYiwgMHhkLCAweGY3LCAweDI1LCAweGY3LCAweDI4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGY3LCAweDFhLCAweGYzLCAweGY3LCAweDJhLCAweGY3LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweGZiLCAweDI4LCAweGZiLCAweDksIDB4MWYsIDB4MTMsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NTksIDB4ZmIsIDB4YiwgMHgzZCwgMHg2MCwgMHg4ZiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg4ZSwgMHgxZSwgMHhjZCwgMHhmNywgMHg5OCwgMHg1LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODAsIDB4NjMsIDB4NSwgMHhhNSwgMHg3ZCwgMHg4MCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHgxYiwgMHhmYiwgMHgxZSwgMHg0YSwgMHhmYiwgMHgzNiwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHgwLCAweGZiLCAweDQsIDB4ZDEsIDB4NzIsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4MWUsIDB4YzgsIDB4OTAsIDB4YmEsIDB4YmQsIDB4OTYsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhlLCAweDRiLCAweDFkLCAweDEyLCAweDk0LCAweGY3LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDlhLCAweDEzLCAweGYwLCAweDk0LCAweDE2LCAweDNhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZTgsIDB4MjAsIDB4YSwgMHg1LCAweDEzLCAweGYwLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDg4LCAweDg2LCAweDU1LCAweDgzLCAweDgsIDB4MTMsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4MWQsIDB4OWYsIDB4OGIsIDB4YjUsIDB4ZjcsIDB4YzEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OWIsIDB4YjMsIDB4MTIsIDB4ZjMsIDB4ZjcsIDB4MzQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4ZjcsIDB4MzksIDB4ZmIsIDB4MWUsIDB4ZjcsIDB4NDAsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4ZjcsIDB4OWMsIDB4ZjcsIDB4ZWIsIDB4MTUsIDB4YTksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHg4OCwgMHhlMywgMHg3YywgMHhmYiwgMHgyMywgMHgxYSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHgzYywgMHhmYiwgMHgyLCAweDYxLCAweDc5LCAweDliLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweGEyLCAweDQsIDB4ZjcsIDB4NjMsIDB4NywgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4YywgMHhhYywgMHhiZSwgMHgxYiwgMHgxMywgMHhmOCwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg1OSwgMHg0NSwgMHgyNSwgMHg3NSwgMHg2MiwgMHhmYiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHg4YywgMHhmYywgMHg5LCAweDE1LCAweGY3LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MTMsIDB4ZjQsIDB4ZjcsIDB4NjcsIDB4ZDEsIDB4ZWQsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NiwgMHgyMiwgMHhjMSwgMHgzNywgMHg5OSwgMHgxZiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDEzLCAweGY4LCAweGI1LCAweDk4LCAweGY3LCAweDUsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MywgMHgxYSwgMHhmNywgMHgzMCwgMHhmYiwgMHg2MCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHgxZSwgMHhmYiwgMHhjOSwgMHg1MywgMHgxZCwgMHhmYywgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDRlLCAweDZiLCAweDhhLCAweDUzLCAweDhiLCAweDFkLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGJiLCAweDdkLCAweGEsIDB4ZmIsIDB4NDQsIDB4ZjcsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MmIsIDB4YWUsIDB4MTMsIDB4ZTYsIDB4ZjksIDB4MjUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4MTUsIDB4MmUsIDB4MzgsIDB4MzgsIDB4NmQsIDB4M2QsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZWEsIDB4ZmIsIDB4MjgsIDB4NjQsIDB4ZjcsIDB4NDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4ZjcsIDB4M2QsIDB4YjQsIDB4ZjcsIDB4MzEsIDB4ZjcsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NiwgMHhkMywgMHhmYiwgMHg5LCAweDM0LCAweGFlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDYsIDB4MTMsIDB4ZDYsIDB4NmEsIDB4MWQsIDB4ODMsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OTIsIDB4N2MsIDB4MWYsIDB4MTMsIDB4ZTYsIDB4OTksIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4YTIsIDB4NGUsIDB4MWIsIDB4MTMsIDB4ZWEsIDB4ZmIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmUsIDB4ZmIsIDB4MzAsIDB4ZmIsIDB4NWYsIDB4ZmIsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4ZmIsIDB4MzgsIDB4ZjcsIDB4N2QsIDB4ZjcsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4Y2EsIDB4ZGUsIDB4ZDQsIDB4MWYsIDB4ZSwgMHg4YSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHhiOCwgMHhmOCwgMHhkZiwgMHhiNywgMHgxMiwgMHhlYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHhmNywgMHg5NSwgMHhmNywgMHg0MiwgMHgxMywgMHhiOCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHhkMCwgMHg2LCAweGY3LCAweDkwLCAweGY3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzgsIDB4ZjcsIDB4NGMsIDB4ZjcsIDB4MmUsIDB4MzAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4OTUsIDB4MWQsIDB4ODcsIDB4YjcsIDB4ODksIDB4NGUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NmQsIDB4NywgMHg2NiwgMHg3NywgMHg2ZSwgMHg0YywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4OSwgMHhjZCwgMHgxNSwgMHhmOCwgMHg2ZCwgMHg3LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGZiLCAweDU1LCAweDMwLCAweDFmLCAweDEzLCAweDc4LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MWUsIDB4ZSwgMHg5ZiwgMHg4YiwgMHhiNCwgMHhmNywgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhmNywgMHhhMSwgMHhiNywgMHgxMiwgMHhmMywgMHhmNywgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNiwgMHhhNSwgMHhmNywgMHg2LCAweGE0LCAweDE3LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweDNjLCAweGEsIDB4N2IsIDB4MjksIDB4MWIsIDB4NGEsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4YjcsIDB4MWYsIDB4ZjcsIDB4N2MsIDB4NywgMHhlZSwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhmYiwgMHgxMSwgMHg5NywgMHgxZiwgMHhhNSwgMHhmNywgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg2LCAweGZiLCAweDEwLCAweDdjLCAweDU4LCAweDcyLCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGY3LCAweDYzLCAweDcsIDB4YjYsIDB4OWQsIDB4OWUsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWIsIDB4ZDIsIDB4N2MsIDB4ZmIsIDB4MjIsIDB4YTIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ZjcsIDB4NWQsIDB4ZmMsIDB4ZDUsIDB4NiwgMHgxMywgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg3LCAweGI5LCAweDg4LCAweGI1LCAweDg5LCAweDQ5LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDZkLCAweDcsIDB4NGQsIDB4NmMsIDB4OTEsIDB4NTIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NjcsIDB4OGIsIDB4YWUsIDB4ZjcsIDB4YmEsIDB4YWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4NzYsIDB4YzUsIDB4NzYsIDB4ZjcsIDB4YywgMHhiNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweGY3LCAweDM2LCAweGY3LCAweDJkLCAweGE0LCAweGY3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MywgMHg5YiwgMHgxNiwgMHhmNywgMHhmYywgMHhhZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDhlLCAweDYzLCAweDgzLCAweGNkLCAweDFhLCAweGY3LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjcsIDB4MTIsIDB4OWIsIDB4NDIsIDB4MzksIDB4OTYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ZjcsIDB4ZTYsIDB4NzIsIDB4NiwgMHgzYiwgMHg3ZCwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHhmYiwgMHgxMCwgMHgxYiwgMHhmNywgMHg2ZCwgMHg3LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDk0LCAweGMxLCAweGY3LCAweDQwLCAweGE2LCAweDU2LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDFlLCAweGEzLCAweGY3LCAweDVkLCAweGZjLCAweGNiLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YmEsIDB4ODgsIDB4YjQsIDB4OTMsIDB4NDksIDB4MWEsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NywgMHg0ZCwgMHg2YywgMHg5MiwgMHg1MiwgMHg4YiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHg3OCwgMHhhYywgMHhmNywgMHg4MiwgMHhhZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg3NiwgMHhmNywgMHg2MCwgMHhhYywgMHg4OCwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhmNywgMHg0NSwgMHhmNywgMHhiZiwgMHhmNywgMHgzMCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHhmOCwgMHgzMCwgMHhmNywgMHg5MCwgMHgxNSwgMHhkMCwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg3ZCwgMHg0YiwgMHgxYSwgMHgzOCwgMHg3LCAweDYwLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDMzLCAweGZiLCAweDUxLCAweDg1LCAweGY3LCAweDhiLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQwLCAweGI1LCAweGY3LCAweDJlLCAweGY3LCAweDI1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZDMsIDB4ZmIsIDB4OSwgMHgzNCwgMHhhZSwgMHgxZSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGVlLCAweDZhLCAweDFkLCAweDg0LCAweDgxLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDdmLCAweDFmLCAweDEzLCAweGY2LCAweDk5LCAweDZjLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDRhLCAweDFiLCAweGZiLCAweDZjLCAweGZiLCAweDI4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGZiLCAweDU5LCAweGZiLCAweDQyLCAweGY3LCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4ZjcsIDB4OGUsIDB4ZTIsIDB4ZjcsIDB4MTEsIDB4YTcsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4MWYsIDB4ZjcsIDB4MTMsIDB4NywgMHhkZCwgMHhhMywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHg5MiwgMHgxZSwgMHhhZSwgMHhmYiwgMHhlYiwgMHg3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4ZGEsIDB4YmEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4YWUsIDB4MSwgMHhmNSwgMHhmNywgMHgzNiwgMHhmNywgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxZCwgMHhhMCwgMHgxNiwgMHhmNywgMHhlNSwgMHhhZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDkxLCAweDY2LCAweDhmLCAweGM4LCAweDFhLCAweGY3LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg1LCAweGZiLCAweDcwLCAweDcsIDB4NGUsIDB4NjYsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4ODUsIDB4MWUsIDB4NjgsIDB4ZjcsIDB4ZTgsIDB4YWUsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg5MiwgMHg2OCwgMHg4ZiwgMHhjNywgMHgxYSwgMHhmOCwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGNjLCAweGI4LCAweDhlLCAweGI2LCAweDhlLCAweDFlLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGU4LCAweDY4LCAweDcsIDB4YjcsIDB4ODgsIDB4YjksIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4MWEsIDB4ZmIsIDB4NTksIDB4ZmIsIDB4ODUsIDB4ZjcsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhjZCwgMHhiOSwgMHg4ZCwgMHhiNywgMHg4ZSwgMHgxZSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlNSwgMHg2OCwgMHg3LCAweGI1LCAweDg3LCAweGI2LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDdlLCAweGEsIDB4NTAsIDB4NmIsIDB4ODYsIDB4NTYsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg1YywgMHhhLCAweDI3LCAweGEsIDB4ZSwgMHgyYiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhhYywgMHhmOSwgMHg3LCAweGFlLCAweDEsIDB4NjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4ZjcsIDB4MTEsIDB4N2YsIDB4MWQsIDB4ZjcsIDB4MTMsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MTUsIDB4YzQsIDB4ODksIDB4YjcsIDB4N2YsIDB4NDcsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NWUsIDB4NywgMHg2YywgMHg4YiwgMHg1MywgMHg0YSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg5OSwgMHg5YywgMHg5YiwgMHg5NCwgMHg5MiwgMHg5MywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg5MCwgMHg5MiwgMHg5MCwgMHg5NCwgMHg5YiwgMHgxYSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg5ZiwgMHg3NSwgMHg2ZSwgMHg2MSwgMHg3NSwgMHg1NCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhmYiwgMHgyLCAweGY3LCAweDJhLCAweGYyLCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGY0LCAweDFlLCAweGY4LCAweDVlLCAweDcsIDB4ZDAsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4YzQsIDB4OGYsIDB4MWUsIDB4YWUsIDB4ZmIsIDB4ZjQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweDE3LCAweDRlLCAweDFkLCAweDEsIDB4ZjcsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxZCwgMHhhOSwgMHgxNiwgMHhmNywgMHhlNSwgMHhhZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDkyLCAweDY4LCAweDhmLCAweGM3LCAweDFhLCAweGY3LCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YTYsIDB4YTQsIDB4ZjcsIDB4NGEsIDB4ZmIsIDB4NmQsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4ODQsIDB4N2IsIDB4MzEsIDB4OGMsIDB4MTksIDB4NjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4YWUsIDB4NywgMHg3NywgMHg4YywgMHg3ZCwgMHg4ZCwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHhmYiwgMHhjNSwgMHhmOCwgMHg0LCAweDE4LCAweGY3LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQwLCAweGJiLCAweGIyLCAweGY0LCAweDkxLCAweDgsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjUsIDB4NjgsIDB4NywgMHhmNywgMHgwLCAweDhhLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDU1LCAweDU1LCAweGZiLCAweDZkLCAweGZiLCAweDY0LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZhLCAweDcsIDB4ZTEsIDB4YWQsIDB4ODMsIDB4YzIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YWUsIDB4ZmIsIDB4ZTYsIDB4NjgsIDB4NywgMHhiOSwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHg3ZSwgMHg0OSwgMHgxYSwgMHhmYywgMHg1OSwgMHg3LCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDg3LCAweDU0LCAweDhiLCAweDFkLCAweDlmLCAweDhiLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGVjLCAweDYwLCAweDFkLCAweDQyLCAweDk2LCAweDFkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDcsIDB4Y2YsIDB4YWEsIDB4OTksIDB4ZDEsIDB4MWUsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZjEsIDB4NjgsIDB4NywgMHhiOCwgMHhiNCwgMHg3YiwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYywgMHg2MiwgMHg3LCAweDRlLCAweDYxLCAweDkxLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGEsIDB4ZjcsIDB4YmQsIDB4OGIsIDB4YWUsIDB4ZjgsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MTIsIDB4YjIsIDB4ZjcsIDB4MTcsIDB4NGEsIDB4YjUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4ZjcsIDB4MmYsIDB4MTMsIDB4ZDgsIDB4OTksIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YWUsIDB4NiwgMHgzOCwgMHg5MCwgMHg3OSwgMHg5MCwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmOCwgMHg2NCwgMHg4ZCwgMHg3LCAweDEzLCAweGU4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweGZjLCAweGQ3LCAweDUsIDB4YTYsIDB4NiwgMHhmNywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhlNiwgMHg1LCAweDhkLCAweGZjLCAweDc4LCAweDYsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4ODgsIDB4NGYsIDB4ODUsIDB4MWUsIDB4NjgsIDB4ZjcsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NywgMHg0OSwgMHg5NCwgMHg3NSwgMHg3ZCwgMHhkYiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0YiwgMHg3LCAweGUxLCAweGFiLCAweDhkLCAweGMzLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGFlLCAweGZiLCAweDkwLCAweDcsIDB4MTMsIDB4ZDAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4ZmMsIDB4NmMsIDB4ZmIsIDB4NWMsIDB4ZjgsIDB4NmMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5MSwgMHg2OCwgMHg2LCAweGQyLCAweDg2LCAweDlkLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDFhLCAweGZjLCAweDViLCAweDcsIDB4NTEsIDB4N2UsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4OGIsIDB4YSwgMHhkNiwgMHg4ZSwgMHg3NiwgMHhiMiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhiNSwgMHg3NiwgMHhmNywgMHg5LCAweGFlLCAweDEyLCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGY4LCAweDQzLCAweGI3LCAweDEzLCAweDdjLCAweDcyLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGJjLCAweDM3LCAweGEsIDB4ZSwgMHg1MSwgMHgxZCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGY3LCAweDQ1LCAweGY3LCAweGY2LCAweDQ4LCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4NzgsIDB4YSwgMHhmYiwgMHg3YiwgMHgzYywgMHgxZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg1ZSwgMHhhLCAweGY3LCAweDIxLCAweDVlLCAweDFkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGZiLCAweDZlLCAweDFlLCAweGUsIDB4NjcsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzMsIDB4YWUsIDB4ZjcsIDB4YjksIDB4YjgsIDB4MSwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNiwgMHhmNywgMHgzYSwgMHhmNywgMHg0MCwgMHgzLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweGUyLCAweGFlLCAweDYsIDB4NDYsIDB4OTQsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ZGMsIDB4MWEsIDB4ZjcsIDB4NGUsIDB4NywgMHhmNywgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHhiNiwgMHhmNywgMHgyMywgMHhmNywgMHgzZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg5ZCwgMHgzYiwgMHgxZiwgMHhmYiwgMHhkNiwgMHg2OCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDg2LCAweGFhLCAweDg2LCAweDYyLCAweDFhLCAweGZjLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4MzEsIDB4NjQsIDB4OTMsIDB4NWUsIDB4MWUsIDB4ZjcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YzMsIDB4MTUsIDB4ZjcsIDB4OTYsIDB4NywgMHhhMSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg5OCwgMHhhZCwgMHgxYiwgMHhkZCwgMHhhZiwgMHg2ZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDEwLCAweDVlLCAweDZlLCAweGZiLCAweGQsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhmNywgMHgxNywgMHhmYiwgMHg0NCwgMHhmNywgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHgxZCwgMHg1YSwgMHhhLCAweGY3LCAweGE1LCAweDg5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFmLCAweGY3LCAweDUsIDB4ZjUsIDB4NjgsIDB4ZTEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4YzEsIDB4OWYsIDB4OWEsIDB4YjEsIDB4MWYsIDB4ODUsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4NmQsIDB4MmYsIDB4YTQsIDB4NTUsIDB4ZjcsIDB4OCwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYiwgMHhiMiwgMHhmMSwgMHhmNywgMHgxMiwgMHhmNywgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmNywgMHg2ZSwgMHhmYiwgMHgzNSwgMHhmNywgMHgyMCwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmYiwgMHgxMywgMHhmYiwgMHg3YiwgMHhmYiwgMHgxNCwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMywgMHhmNywgMHgzNSwgMHg1YiwgMHgxZSwgMHg0ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHg3OSwgMHgxZCwgMHhmNywgMHg0NywgMHg2NiwgMHgxZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHg3OCwgMHhhLCAweGZiLCAweDdjLCAweDY1LCAweDFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGUyLCAweDFlLCAweGUsIDB4ZDYsIDB4YTAsIDB4NzYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHhiNywgMHg2OCwgMHhhZSwgMHgxMiwgMHhmNywgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGY3LCAweDRiLCAweGY3LCAweDNmLCAweDEzLCAweGQ4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweGY3LCAweGVkLCAweDE1LCAweGY3LCAweDg5LCAweDcsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OGQsIDB4OTYsIDB4YzIsIDB4MWIsIDB4ZGIsIDB4YjQsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4ZmIsIDB4MTYsIDB4NTcsIDB4NzUsIDB4ZmIsIDB4MTcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4OGUsIDB4ZmIsIDB4ZWQsIDB4MTUsIDB4ZjcsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NiwgMHg0OSwgMHg5NCwgMHg3NSwgMHg4ZSwgMHhkYiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZSwgMHhhNiwgMHg3LCAweGY3LCAweDYzLCAweGZiLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4NjEsIDB4YWUsIDB4NiwgMHg3ZiwgMHg3NywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg3ZCwgMHgxZiwgMHhmYiwgMHg1OCwgMHhmNywgMHhhNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDljLCAweGYyLCAweGE4LCAweGY3LCAweGYsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZmIsIDB4NjgsIDB4OTUsIDB4NDUsIDB4MWUsIDB4ZmIsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhiOCwgMHg2OCwgMHg3LCAweGM0LCAweDg3LCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDYwLCAweDFhLCAweGZjLCAweDYyLCAweDcsIDB4M2EsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4NDcsIDB4ODMsIDB4MWUsIDB4ZSwgMHgzMCwgMHg3OCwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgxYSwgMHhhYSwgMHg4YywgMHg4ZSwgMHhhLCAweDEzLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDFkLCAweDk3LCAweDk0LCAweDFkLCAweGM0LCAweDFiLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDEzLCAweGI4LCAweDg1LCAweGEsIDB4NzcsIDB4NzUsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4NzMsIDB4MWYsIDB4MTMsIDB4ZDgsIDB4OTQsIDB4NzAsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4NmUsIDB4NDYsIDB4MWQsIDB4ZSwgMHg5ZiwgMHg4YiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2MSwgMHg3NiwgMHhmNywgMHgzZCwgMHhhYiwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDdmLCAweDFkLCAweGY3LCAweDMwLCAweDE2LCAweGY3LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDYsIDB4NDEsIDB4OTAsIDB4NzMsIDB4OGQsIDB4ZTAsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OTksIDB4NywgMHhkMCwgMHg4NywgMHhmMiwgMHg4NiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNCwgMHg4LCAweGE4LCAweDYsIDB4ODksIDB4ZjcsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYywgMHhlZiwgMHhmYiwgMHg1ZCwgMHhhOCwgMHg2LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM0LCAweGYyLCAweDkwLCAweGQxLCAweDhmLCAweDgsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4NywgMHgzNywgMHg3MywgMHg4OSwgMHg0MiwgMHg4YiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhhLCAweDYzLCAweGEsIDB4OWIsIDB4ZjksIDB4MTUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ODUsIDB4YTUsIDB4OGMsIDB4MzcsIDB4MWEsIDB4ZmIsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHg0ZCwgMHhmNywgMHgxYywgMHg1MCwgMHhmNywgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNiwgMHhmNiwgMHhlNiwgMHhmNywgMHgyZCwgMHgxZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHg3LCAweGNkLCAweGEyLCAweDlhLCAweDQzLCAweGEsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4MWEsIDB4ZmIsIDB4ZGIsIDB4NywgMHg0YiwgMHg4OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmYiwgMHg0NCwgMHhmYiwgMHgyNCwgMHg4YiwgMHhmNywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHgxZSwgMHhmNywgMHhkYiwgMHg3LCAweGUzLCAweGFhLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweDhlLCAweDFlLCAweGFlLCAweGZiLCAweGU2LCAweDcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHg4ZSwgMHg3NiwgMHhmOSwgMHgyNywgMHhhZSwgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDc5LCAweDE1LCAweGE2LCAweDYsIDB4ZjcsIDB4NzgsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4YTEsIDB4YzMsIDB4OTgsIDB4OWUsIDB4YzIsIDB4OTIsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZmIsIDB4NjksIDB4NjgsIDB4NywgMHhjNCwgMHg4OCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg2NCwgMHgxYSwgMHhmYiwgMHgyNywgMHhmYywgMHgxOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIxLCAweGY3LCAweGU5LCAweDc3LCAweGFiLCAweDllLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweGEyLCAweDhiLCAweGNhLCAweDhmLCAweDFlLCAweGFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweDY4LCAweDcsIDB4YjYsIDB4ODQsIDB4OWEsIDB4ODgsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4OCwgMHhlLCAweGY3LCAweGY1LCAweDkxLCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDc2LCAweGY3LCAweDUwLCAweGFlLCAweDEsIDB4ZjcsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4MTUsIDB4YTcsIDB4NiwgMHhmNywgMHg0YSwgMHhmOCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDkyLCAweDYsIDB4ZjcsIDB4M2MsIDB4ZmMsIDB4NjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg2LCAweGY3LCAweDVjLCAweGY4LCAweGU0LCAweDk3LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGEzLCAweGFlLCAweDhlLCAweDE5LCAweGFlLCAweGZiLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDcsIDB4YWQsIDB4ODksIDB4YWUsIDB4OGEsIDB4NjIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YSwgMHhmYywgMHg4LCAweDUsIDB4ODksIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweGY0LCAweDgzLCAweDk5LCAweDk3LCAweDFhLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDhjLCAweGI2LCAweDhlLCAweDFlLCAweGFlLCAweGZiLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDcsIDB4YmIsIDB4ODksIDB4OTYsIDB4ODAsIDB4OTgsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MzUsIDB4MTgsIDB4ZmIsIDB4OSwgMHhmYiwgMHhjNSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDYsIDB4ZmIsIDB4ZiwgMHhmOCwgMHg4LCAweDg4LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDFhLCAweGIwLCAweGE3LCAweDhkLCAweGFmLCAweDhlLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGZiLCAweGJhLCAweDY4LCAweDcsIDB4YjUsIDB4ODUsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4OWMsIDB4NWIsIDB4OCwgMHhlLCAweGQ2LCAweDRlLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4OWIsIDB4ZjksIDB4M2YsIDB4MywgMHg5YiwgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhhZSwgMHg2LCAweDY4LCAweDhlLCAweDU1LCAweDhmLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDIwLCAweGY3LCAweDU2LCAweDUsIDB4ZjcsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0NiwgMHg5NiwgMHg3YiwgMHg4MSwgMHgxYSwgMHg3MCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg1NywgMHg4OCwgMHgxZSwgMHg2OCwgMHhmNywgMHhlOCwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDZmLCAweDhkLCAweDdiLCAweDhkLCAweDU2LCAweGRkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGY3LCAweGE1LCAweDE4LCAweGY3LCAweDMyLCAweGY3LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDljLCAweGU2LCAweDkzLCAweDgsIDB4YWUsIDB4ZmIsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NywgMHhiNywgMHg4OCwgMHhhNywgMHg4YSwgMHg2YywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg4YiwgMHg5NSwgMHhmYiwgMHg2LCAweGZiLCAweDMyLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEsIDB4ZjcsIDB4M2MsIDB4ODgsIDB4ODcsIDB4OTgsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4OWYsIDB4OGIsIDB4YzYsIDB4OGYsIDB4MWUsIDB4YWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4NjgsIDB4NywgMHhiNSwgMHg4OSwgMHg5YywgMHg3MiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhmNywgMHg1YSwgMHhmYiwgMHhhZCwgMHgxOCwgMHhmYiwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2NywgMHg2MiwgMHg1NSwgMHg1YiwgMHg4YiwgMHg3MiwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhlLCAweGQ2LCAweDRlLCAweDFkLCAweDEsIDB4ZjcsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzYsIDB4ZjcsIDB4MWQsIDB4ZjcsIDB4ZSwgMHgzLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDhkLCAweGRlLCAweDFhLCAweGY3LCAweDQyLCAweDY2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4N2YsIDB4N2EsIDB4NmUsIDB4ZmIsIDB4MzgsIDB4ZmIsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4NDIsIDB4MWQsIDB4ZSwgMHg4YywgMHhhLCAweDEsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDkxLCAweDFkLCAweGNlLCAweGYzLCAweDMsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjksIDB4MTUsIDB4ZjcsIDB4N2UsIDB4YjYsIDB4M2IsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg4YSwgMHhhMCwgMHhhYiwgMHgxZiwgMHhmOCwgMHhmZSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweDk2LCAweDk2LCAweGMzLCAweDFlLCAweGNhLCAweGI2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDYsIDB4ZSwgMHhmYywgMHg1LCAweGZiLCAweGEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjEsIDB4NzYsIDB4ZjksIDB4NWEsIDB4NzcsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhmYiwgMHgxZiwgMHgxNSwgMHhjZiwgMHg2LCAweGZiLCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGQyLCAweDUsIDB4NDQsIDB4NiwgMHhlLCAweDkxLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM2LCAweGYzLCAweDMsIDB4YWIsIDB4MjEsIDB4MTUsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2UsIDB4ZjksIDB4Y2YsIDB4ZmIsIDB4N2UsIDB4NjAsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhjMywgMHg5NiwgMHg4MCwgMHg1MCwgMHgxZiwgMHhmYywgMHhmZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDZhLCAweDhiLCAweDc3LCAweDU5LCAweDFlLCAweGUsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTAsIDB4NzYsIDB4ZjgsIDB4MSwgMHg3NywgMHgxLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGNiLCAweDE1LCAweGU0LCAweDYsIDB4ZjcsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4ZjcsIDB4MTUsIDB4ZmIsIDB4YTAsIDB4NSwgMHhlNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ2LCAweGY4LCAweDEsIDB4NSwgMHgzYiwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTEsIDB4YmQsIDB4MSwgMHg0MCwgMHg0LCAweDU5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGJkLCAweDcsIDB4ZSwgMHg5MCwgMHhhLCAweGY3LCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGE0LCAweDI2LCAweGEsIDB4N2QsIDB4ZDEsIDB4NWEsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMiwgMHhhNCwgMHhmNywgMHgyNiwgMHhmYiwgMHgxMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhmNywgMHg4LCAweGY3LCAweDFlLCAweDEzLCAweDY2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGMzLCAweDMyLCAweDFkLCAweDEzLCAweDI2LCAweDMxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4YjYsIDB4ZmIsIDB4MywgMHhmYiwgMHgxMCwgMHg1YiwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHgxZSwgMHhiMiwgMHg2ZCwgMHg5MywgMHhhMCwgMHgxYSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg5YiwgMHhhYywgMHg5ZiwgMHhhZiwgMHhkNSwgMHg4ZiwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHgxZSwgMHg1MywgMHg3LCAweDQ0LCAweDFkLCAweDEzLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDFkLCAweGUsIDB4MzAsIDB4N2QsIDB4YWIsIDB4ODEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NDQsIDB4YzEsIDB4ZjcsIDB4NWYsIDB4NzcsIDB4MTIsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4MzcsIDB4ZjcsIDB4MjcsIDB4MTMsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4N2UsIDB4MTUsIDB4OTcsIDB4NiwgMHhkYSwgMHhjMywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGJjLCAweDVlLCAweGI5LCAweGIyLCAweDdmLCAweGFhLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM5LCAweGQ4LCAweGY3LCAweDUsIDB4ZjcsIDB4MTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4NDYsIDB4ZjcsIDB4OCwgMHhmYiwgMHhiLCAweDQ2LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDc5LCAweDdhLCAweDFmLCAweGY3LCAweDk3LCAweGZiLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDcsIDB4YWYsIDB4ODQsIDB4OWUsIDB4ODcsIDB4NWMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4N2MsIDB4ZjcsIDB4MWYsIDB4ZmMsIDB4N2IsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NywgMHhhMSwgMHg5NCwgMHg5YSwgMHhiMCwgMHhiOSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHg5MSwgMHhmYiwgMHgxYSwgMHg1MCwgMHgxZiwgMHgxMywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMSwgMHg2OCwgMHg1OCwgMHg0ZiwgMHg1NCwgMHg3ZSwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHgxZSwgMHhlLCAweGZiLCAweDVmLCAweDdkLCAweGNlLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY3LCAweDEyLCAweGY3LCAweDEwLCAweDEzLCAweGI4LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGY3LCAweDEsIDB4MTUsIDB4NzAsIDB4NzMsIDB4NzEsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4MWIsIDB4M2QsIDB4NGQsIDB4YjUsIDB4ZjcsIDB4MjAsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjUsIDB4OGMsIDB4OTEsIDB4ZjAsIDB4ZDksIDB4MWIsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4ODIsIDB4NmQsIDB4MWYsIDB4MTMsIDB4ZDgsIDB4OGYsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4YjAsIDB4NDQsIDB4MmQsIDB4ZmIsIDB4MjIsIDB4NjIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4ZmIsIDB4MWYsIDB4ZTEsIDB4ZmIsIDB4MiwgMHhmNywgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHhjZCwgMHhiMywgMHhjYywgMHhiOSwgMHgxZSwgMHhlLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGMzLCAweGY4LCAweGIsIDB4YzMsIDB4ZjcsIDB4M2QsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YTQsIDB4ZjcsIDB4MjgsIDB4ZjcsIDB4MzcsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZjcsIDB4ZTcsIDB4YmYsIDB4MTUsIDB4NGEsIDB4NywgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg5NCwgMHg4YywgMHhmNywgMHgxMCwgMHg5YSwgMHg4LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGFjLCAweDcsIDB4NTIsIDB4OGQsIDB4ODksIDB4YTgsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjgsIDB4YzksIDB4ZmIsIDB4NmIsIDB4NjksIDB4NywgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhhMCwgMHg4YSwgMHg1NiwgMHgxYSwgMHhmYiwgMHg0MSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDczLCAweDY5LCAweGFmLCAweDRmLCAweDFiLCAweDJkLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweGZiLCAweDQyLCAweGZiLCAweDI2LCAweGU3LCAweDJkLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweGE3LCAweGE3LCAweGIxLCAweGFmLCAweDFmLCAweDEzLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGM3LCAweDE1LCAweDgwLCAweDY2LCAweDUwLCAweDVkLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGY3LCAweDEyLCAweGM1LCAweGVjLCAweDk5LCAweGU5LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGExLCAweDRlLCAweDhhLCAweDFlLCAweGUsIDB4NDksIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4YSwgMHgxNywgMHhmNywgMHgzOCwgMHhmNywgMHhhZSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlMCwgMHhmNywgMHgxZSwgMHhhOSwgMHhhMSwgMHhiMCwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhmYiwgMHg2LCAweDVkLCAweDhjLCAweDFlLCAweGZiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDE1LCAweGY3LCAweDkwLCAweDYsIDB4MTMsIDB4ZjAsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ZjcsIDB4NDIsIDB4ZmIsIDB4NDIsIDB4MWUsIDB4MTMsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4MWQsIDB4ZSwgMHhmYiwgMHhjZSwgMHg4YiwgMHhhZCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiNywgMHhjZiwgMHhmNywgMHgzNiwgMHg2YywgMHhhYSwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHhmNywgMHgxZiwgMHgxMywgMHhkOCwgMHg5OSwgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhhZCwgMHg2LCAweDRhLCAweDhkLCAweDdhLCAweDlhLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweGQ3LCAweGUyLCAweGI3LCAweDM0LCAweGY3LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhhNiwgMHg4NiwgMHhiZCwgMHhiYiwgMHg5NywgMHhhMywgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHgxZSwgMHg3YywgMHg3NSwgMHg3YiwgMHg3MCwgMHgxYSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHg3NywgMHg5YywgMHg2OSwgMHhiNSwgMHhiMywgMHhhMiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhkMCwgMHg0MCwgMHhhYSwgMHg0ZSwgMHhmYiwgMHg0OSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOSwgMHgyYSwgMHgxZSwgMHg1MiwgMHg1ZiwgMHhjNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHg2LCAweDU2LCAweDc0LCAweDg4LCAweDY5LCAweDg3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4NjIsIDB4ZjcsIDB4M2EsIDB4ZmIsIDB4MmQsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHhmNywgMHhiLCAweGUyLCAweGE3LCAweGY3LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDgyLCAweGFhLCAweDEyLCAweGE3LCAweGUzLCAweDNjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4ZmIsIDB4OSwgMHhmNywgMHgxZCwgMHhmNywgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg2OSwgMHhkYSwgMHgxMywgMHg3YSwgMHgyMCwgMHhmNywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDE1LCAweDUzLCAweDg2LCAweDY3LCAweDcxLCAweDYzLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDc5LCAweDIwLCAweDUzLCAweGQ1LCAweDY0LCAweGY3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweGY3LCAweDE4LCAweGE2LCAweGY3LCAweDEwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZmIsIDB4NywgMHg5NSwgMHg1YSwgMHg4YywgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg0MCwgMHhmYiwgMHgxZiwgMHg4ZCwgMHg3MSwgMHg4YywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhOSwgMHhiMCwgMHg5ZiwgMHg5ZSwgMHhlYywgMHg4YiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhhOCwgMHgxZSwgMHhkMywgMHhhMiwgMHhhYywgMHhjOSwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhjNywgMHg2ZCwgMHg5ZSwgMHg4MSwgMHg5NSwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHgyMCwgMHhkZCwgMHhjMCwgMHhmYiwgMHgxNywgMHg2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGMwLCAweDliLCAweDYzLCAweDY3LCAweDkxLCAweDY3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFkLCAweDQ5LCAweDM3LCAweDNiLCAweDQzLCAweGJiLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDcwLCAweDFmLCAweDg5LCAweDcsIDB4NjAsIDB4N2YsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NGMsIDB4MWEsIDB4NTcsIDB4YWMsIDB4N2MsIDB4YjgsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4N2EsIDB4MjAsIDB4YWEsIDB4N2QsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4NiwgMHhiZiwgMHhhNywgMHg3YywgMHg2NywgMHg0NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4YiwgMHg2MywgMHg3YSwgMHgyZSwgMHg4YSwgMHhjYiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg5YiwgMHhhNSwgMHhhMCwgMHgxZiwgMHgxMywgMHg3NCwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhmNywgMHhmZCwgMHgxNSwgMHhjYSwgMHg5MCwgMHhkMSwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHg4YiwgMHgzMywgMHg1ZSwgMHg1MiwgMHg4OCwgMHg0NSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg4NCwgMHhjNSwgMHhkMCwgMHgxZSwgMHhlLCAweDMwLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY3LCAweDVmLCAweDc3LCAweDEsIDB4YmIsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmMsIDB4OGEsIDB4YSwgMHg5YiwgMHg0MSwgMHhhLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDljLCAweDFmLCAweDc2LCAweGEsIDB4NTcsIDB4NjAsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NWIsIDB4MWUsIDB4ZjcsIDB4YWQsIDB4ZmIsIDB4NTQsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhiMiwgMHg4MywgMHg5OSwgMHg4OCwgMHg1YywgMHgxYSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3LCAweDVhLCAweDdhLCAweDhhLCAweDY3LCAweDhiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4YSwgMHgxMiwgMHhiNSwgMHhmNywgMHgyZiwgMHhmYiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZiwgMHhmYiwgMHgyNiwgMHg4NCwgMHgxZCwgMHgxMywgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhhLCAweDEzLCAweGQwLCAweGI3LCAweGY4LCAweGQ3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGFiLCAweDY5LCAweGI5LCAweGI2LCAweGFkLCAweGFjLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDY5LCAweGFlLCAweDYwLCAweDVlLCAweDZhLCAweDY3LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4ZmIsIDB4Y2UsIDB4ZmIsIDB4NWYsIDB4ZjcsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZDYsIDB4ZjcsIDB4MmYsIDB4MTIsIDB4ZWEsIDB4ZjcsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjcsIDB4ZjcsIDB4MWYsIDB4MTMsIDB4ZDAsIDB4YzUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4MTUsIDB4YWUsIDB4ODgsIDB4YTcsIDB4OGEsIDB4NTQsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2MSwgMHg4MywgMHg2OSwgMHg2MywgMHg4OCwgMHg2ZSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg5MywgMHg5MiwgMHg5NSwgMHg5MSwgMHg5NiwgMHgxZSwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg5MCwgMHg5NSwgMHg5NiwgMHgxYSwgMHhhMCwgMHg3OSwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg2MSwgMHg3NywgMHg2YywgMHg2ZiwgMHg0MSwgMHhkNiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmNywgMHg0YiwgMHg4ZiwgMHhmNywgMHgyOCwgMHhjNCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1ZiwgMHhmYiwgMHg1ZSwgMHg3LCAweDEzLCAweGUwLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJjLCAweDE1LCAweDYwLCAweGFhLCAweDY5LCAweGI5LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGFjLCAweGI3LCAweGI2LCAweDY4LCAweGFlLCAweDYwLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDY3LCAweDYxLCAweDFlLCAweGUsIDB4MzAsIDB4OGIsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4M2YsIDB4NzcsIDB4ZjcsIDB4N2YsIDB4NzcsIDB4MSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhhLCAweGExLCAweDE2LCAweDk5LCAweGEsIDB4NWIsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4OTQsIDB4YjcsIDB4MWEsIDB4ZjMsIDB4NywgMHhhMiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY1LCAweGZiLCAweDFlLCAweDk4LCAweDc3LCAweDgwLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDZmLCAweDg4LCAweDdkLCAweDFlLCAweDY5LCAweGY3LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDcsIDB4ODMsIDB4ODQsIDB4OGMsIDB4OTksIDB4ODEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTYsIDB4ZjcsIDB4OTYsIDB4YTUsIDB4YWEsIDB4YzEsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4OWQsIDB4MTksIDB4YTcsIDB4YTIsIDB4OWUsIDB4OGYsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OCwgMHhhYywgMHhmYiwgMHg2YSwgMHg2YSwgMHg3LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDk2LCAweDg5LCAweDc3LCAweDFhLCAweGZiLCAweDI5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDUsIDB4ZjgsIDB4NDMsIDB4ZmIsIDB4NGYsIDB4NjksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg4YiwgMHg1YywgMHg4MCwgMHgxZiwgMHhmYywgMHg3ZSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDgzLCAweDY3LCAweDYzLCAweDFlLCAweGUsIDB4ZmMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhhZCwgMHhmOSwgMHgxNiwgMHg3NywgMHgxMiwgMHhjMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHgxMiwgMHg4NCwgMHgxZCwgMHgxMywgMHhkMCwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhhYSwgMHhhOCwgMHgxZiwgMHhmOCwgMHhkYSwgMHg4ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDdlLCAweDk3LCAweDFkLCAweGY3LCAweDRlLCAweDgyLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDc2LCAweGQzLCAweDc3LCAweDEyLCAweGQyLCAweGY3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFlLCAweDUzLCAweGEsIDB4MTQsIDB4ZSwgMHgxMywgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHgxNiwgMHhmNywgMHg4NCwgMHhhZCwgMHg2LCAweDY0LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGExLCAweGFhLCAweDFhLCAweGY3LCAweDk1LCAweDcsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4YmQsIDB4YjYsIDB4YzIsIDB4OGIsIDB4NTgsIDB4NmIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4N2MsIDB4NywgMHg3NCwgMHg4YiwgMHg2YywgMHg1YiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg2OSwgMHhmNywgMHg3ZSwgMHhhZCwgMHg3LCAweDY1LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweGExLCAweGFiLCAweDFhLCAweGY3LCAweDk1LCAweDcsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4YmQsIDB4YjUsIDB4YzEsIDB4OGIsIDB4NTcsIDB4NmMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4N2MsIDB4NywgMHg3MywgMHg4YiwgMHg2YywgMHg1YSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg2OSwgMHhmNywgMHg4MiwgMHhhZCwgMHg3LCAweDU5LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGFhLCAweGE0LCAweDFhLCAweGY3LCAweDg1LCAweDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgzYywgMHhhYSwgMHg1NCwgMHg1MSwgMHg1ZSwgMHg2ZiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHgxZSwgMHhhYiwgMHg3YywgMHg3MiwgMHhjMiwgMHgzMCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiZSwgMHgzNywgMHg1ZiwgMHg0ZiwgMHg3MywgMHg3ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxZCwgMHhhOCwgMHg4NywgMHhhNSwgMHg4OCwgMHg1NywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhNiwgMHg3LCAweDVhLCAweDc1LCAweDg2LCAweDZhLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDMwLCAweDgyLCAweDFkLCAweDRjLCAweDc2LCAweGQzLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGNkLCAweGY3LCAweDFmLCAweGZiLCAweDE3LCAweDg1LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGNhLCAweGEwLCAweDE2LCAweGY3LCAweDg1LCAweGFkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YzYsIDB4NTksIDB4MWQsIDB4MWUsIDB4MTMsIDB4YzksIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NTQsIDB4NmYsIDB4MWYsIDB4NGYsIDB4YSwgMHg4ZCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhhMywgMHgxYSwgMHg3NiwgMHhhLCAweDFlLCAweDEzLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDYwLCAweDRmLCAweDczLCAweDdkLCAweDFmLCAweDg4LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGM2LCAweGIzLCAweDg1LCAweDk4LCAweDgzLCAweDVlLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGE2LCAweDcsIDB4NWEsIDB4N2EsIDB4ODcsIDB4NjcsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2NSwgMHhhLCAweDEyLCAweGE0LCAweGY3LCAweDI3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGY3LCAweDI3LCAweGZiLCAweDFiLCAweGY3LCAweDI3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweGY3LCAweDQwLCAweGY3LCAweDdjLCAweDc4LCAweDFkLCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDFlLCAweDEzLCAweGU4LCAweGM4LCAweDljLCAweDRkLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzksIDB4NDYsIDB4M2IsIDB4OGIsIDB4ZjYsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHgyNywgMHgxNiwgMHhmYiwgMHgxNiwgMHhlMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDcwLCAweGEsIDB4ZjYsIDB4NmYsIDB4YSwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDFkLCAweGZiLCAweDQsIDB4ZmIsIDB4MTUsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhhLCAweDdmLCAweDc3LCAweDEyLCAweGQ2LCAweGY3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMsIDB4ZjcsIDB4MjgsIDB4MjEsIDB4ZjcsIDB4MjgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4ODEsIDB4YSwgMHgxZSwgMHgxMywgMHhmNSwgMHg5MCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg3NSwgMHhjOCwgMHg4YiwgMHgxZiwgMHg3YSwgMHgxZCwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHg1OCwgMHhhLCAweDdhLCAweDFmLCAweDg5LCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4Y2QsIDB4ZmIsIDB4NTUsIDB4NjksIDB4NywgMHhiOSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg3YywgMHg2NSwgMHgxYSwgMHhmYywgMHg3NSwgMHg5MiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGZiLCAweDRjLCAweDc2LCAweGY3LCAweDUzLCAweGMxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGFiLCAweDEsIDB4YWQsIDB4ZjcsIDB4MjYsIDB4ZjcsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4YSwgMHhmNywgMHhlYSwgMHhlZCwgMHgxNSwgMHg4ZCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHg1NiwgMHgxYiwgMHg0OSwgMHg2ZiwgMHhjNywgMHhmNywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHg5MSwgMHhmNywgMHgxNCwgMHhkZSwgMHhiOSwgMHhhNiwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgxZiwgMHg0MiwgMHhmYywgMHhhNywgMHgxNSwgMHg2OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhhZCwgMHg3LCAweDY3LCAweDkyLCAweDc4LCAweDhlLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY4LCAweGRlLCAweDdjLCAweDcsIDB4M2QsIDB4NTIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg2NywgMHg2YywgMHhhNCwgMHg1NywgMHgxYiwgMHhmYiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHhmYiwgMHgxMSwgMHhmYiwgMHhhLCAweGZiLCAweDNmLCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweGVmLCAweGE4LCAweGJjLCAweDk2LCAweGI4LCAweGI0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJmLCAweDcsIDB4NWUsIDB4NzksIDB4ODksIDB4NTQsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHhmYiwgMHg1ZiwgMHg4YiwgMHhhZCwgMHhmNywgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNSwgMHg0NSwgMHg3NiwgMHhhNSwgMHg3NiwgMHhkNSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhkZSwgMHhmNywgMHgxZiwgMHgxMywgMHg5YywgMHhhOCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5ZSwgMHhhZCwgMHg2LCAweDRlLCAweDhlLCAweDdmLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDFhLCAweGY3LCAweDVhLCAweDcsIDB4ZDQsIDB4YjcsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4OWMsIDB4OTMsIDB4NzksIDB4N2IsIDB4OTgsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4N2UsIDB4OTYsIDB4OTksIDB4N2YsIDB4YTUsIDB4MWIsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4YjQsIDB4YTUsIDB4YTMsIDB4N2MsIDB4YzEsIDB4NDcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YWMsIDB4NGEsIDB4NWUsIDB4NGYsIDB4NmMsIDB4NzYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4ZGEsIDB4ZmIsIDB4NTEsIDB4NzMsIDB4NiwgMHhhOSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHg4NiwgMHg1OSwgMHgxYSwgMHhmYiwgMHhiMCwgMHg3LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDg3LCAweDZiLCAweDhiLCAweDFkLCAweGZiLCAweDk2LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDdmLCAweDc2LCAweGY3LCAweGZjLCAweDc2LCAweGY3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4ODksIDB4NzcsIDB4MTIsIDB4YTQsIDB4ZWYsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4MTMsIDB4NzYsIDB4YTQsIDB4N2UsIDB4MTUsIDB4YWUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg5NSwgMHg5MSwgMHg5MywgMHg5NiwgMHgxYiwgMHg4ZCwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4OCwgMHg5MSwgMHgxZiwgMHgxMywgMHhiNiwgMHg4MywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg3YiwgMHhiMCwgMHgxYiwgMHhlOCwgMHhkOCwgMHhjNiwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHg1MiwgMHhhZiwgMHg1MiwgMHhhNiwgMHgxZiwgMHg0ZiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg5ZSwgMHhiZiwgMHgxYSwgMHhhYSwgMHhhNCwgMHhhNSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhiNCwgMHg2MCwgMHg0NCwgMHhhMCwgMHgxZSwgMHhhZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGFlLCAweGY3LCAweDI1LCAweDZiLCAweDcsIDB4ODMsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4N2YsIDB4NzksIDB4MWIsIDB4ODMsIDB4ODAsIDB4OGYsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4MWYsIDB4MTMsIDB4YjYsIDB4OTEsIDB4N2EsIDB4NzUsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4MWIsIDB4MmYsIDB4NDYsIDB4NTAsIDB4MzMsIDB4NDEsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4YzUsIDB4NmUsIDB4MWYsIDB4YzksIDB4NmMsIDB4Y2IsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4MWEsIDB4NmQsIDB4NzMsIDB4NjcsIDB4NTksIDB4ZmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhmNCwgMHhhNiwgMHg4NSwgMHgxZSwgMHg2NSwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4Y2UsIDB4N2YsIDB4ZDIsIDB4ZjcsIDB4ZmEsIDB4YjcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4NzcsIDB4MTIsIDB4YzAsIDB4ZjcsIDB4MWYsIDB4ZmIsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZiwgMHgxMywgMHhmMCwgMHhmNywgMHhjNywgMHhmNywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDc2LCAweDgwLCAweDdhLCAweDZjLCAweDZlLCAweDFiLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDYzLCAweDhjLCAweGE3LCAweDliLCAweDFmLCAweGY3LCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGI3LCAweDJkLCAweGY3LCAweDNkLCAweDcyLCAweDcsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4NWUsIDB4NWYsIDB4NTYsIDB4NWUsIDB4OCwgMHg3MCwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjZSwgMHg3LCAweDc2LCAweDhjLCAweDhmLCAweDJkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MWIsIDB4ZTUsIDB4YWYsIDB4ZDAsIDB4YjYsIDB4YTAsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgzMCwgMHg3ZCwgMHhjYywgMHhmOCwgMHgyZSwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHg4NSwgMHgxZCwgMHgxMywgMHhmMCwgMHg3MSwgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDI1LCAweDFkLCAweGUsIDB4OTIsIDB4NzYsIDB4ZjgsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4MSwgMHhhMCwgMHhmOCwgMHg2NCwgMHgzLCAweGY3LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDE1LCAweGE1LCAweDYsIDB4ZjcsIDB4MzQsIDB4ZjgsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YmQsIDB4OTksIDB4OGQsIDB4YTMsIDB4OGUsIDB4MTksIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MzgsIDB4ZmIsIDB4NmQsIDB4NSwgMHgzMywgMHhmNywgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4ZSwgMHg4ZiwgMHgxYSwgMHhhMiwgMHg5ZiwgMHg4YywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg0OCwgMHgxZCwgMHhlLCAweGQ2LCAweDkyLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDc2LCAweGY3LCAweDQwLCAweDc3LCAweDEsIDB4ZjgsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWIsIDB4MywgMHhmNywgMHg3OCwgMHg3ZCwgMHgxNSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweGUsIDB4ZjcsIDB4YzMsIDB4NSwgMHg5MCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweGZiLCAweGMzLCAweDUsIDB4YTIsIDB4NiwgMHhmNywgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxYiwgMHg5YywgMHhiNywgMHg5OSwgMHg4ZCwgMHg5ZSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhhZCwgMHhmYiwgMHgxYiwgMHg2OSwgMHg3LCAweGE3LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDg5LCAweDZiLCAweDFhLCAweDc1LCAweDU4LCAweGZiLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4M2YsIDB4MWUsIDB4ODksIDB4NiwgMHg3OSwgMHhkOSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjLCAweGEwLCAweDFhLCAweGEwLCAweGExLCAweDhkLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDFlLCAweGFkLCAweGZiLCAweDdlLCAweDY5LCAweDcsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4OTYsIDB4OGIsIDB4OTQsIDB4NzYsIDB4OTAsIDB4N2YsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4OTUsIDB4NjksIDB4NDcsIDB4ZmIsIDB4M2YsIDB4MTgsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWEsIDB4NjksIDB4Y2QsIDB4YTAsIDB4MWEsIDB4YTUsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4OTksIDB4OGQsIDB4MWUsIDB4YWQsIDB4ZmIsIDB4NzIsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhhNSwgMHg4NiwgMHg5MCwgMHg4ZSwgMHhhNSwgMHg0YSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4M2YsIDB4YWQsIDB4MSwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2YSwgMHgzLCAweDk5LCAweDE2LCAweGY3LCAweDNkLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4N2EsIDB4OGMsIDB4NWIsIDB4OTAsIDB4OWEsIDB4OWYsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhhMCwgMHhjYywgMHhlNSwgMHg4YiwgMHgxYSwgMHg4YiwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHhhMCwgMHg2YywgMHgxZSwgMHg5NCwgMHg3ZSwgMHg2YiwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg4YSwgMHg4LCAweDY5LCAweGY3LCAweDg1LCAweGFkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4OGYsIDB4ODMsIDB4OGUsIDB4ODIsIDB4OTgsIDB4ZmIsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmUsIDB4MTgsIDB4ZjAsIDB4ZjcsIDB4OCwgMHg5ZCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHg5NywgMHhhNywgMHg4ZiwgMHgxOSwgMHhhZCwgMHhmYiwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg3LCAweGIyLCAweDg4LCAweDk3LCAweDhhLCAweDc2LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDhiLCAweDk1LCAweDQxLCAweDJjLCAweDFlLCAweDdjLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweGNmLCAweDljLCAweDFhLCAweDliLCAweGEyLCAweDhmLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGFkLCAweGZiLCAweDhlLCAweDY5LCAweDcsIDB4YTYsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4ODIsIDB4OWMsIDB4NzEsIDB4ZjcsIDB4MTQsIDB4ZmIsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZmIsIDB4MTcsIDB4ZmIsIDB4M2YsIDB4ODgsIDB4OTQsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4OCwgMHhlLCAweGZiLCAweDYxLCAweGY3LCAweDIzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDc3LCAweDEsIDB4ZjcsIDB4ODAsIDB4N2UsIDB4MTUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4NSwgMHg3NSwgMHg4NCwgMHgyYiwgMHhhLCAweGUsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MSwgMHhiMSwgMHhhZiwgMHg4NywgMHhhLCAweDY1LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDZiLCAweDhiLCAweDYyLCAweDhjLCAweGY3LCAweDdmLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDE4LCAweGE1LCAweGZjLCAweGIsIDB4NywgMHg4NCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHg1LCAweGFmLCAweDYsIDB4YTUsIDB4ZjcsIDB4MSwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmNywgMHhhLCAweDhjLCAweGZiLCAweDdlLCAweGZjLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGUsIDB4OGQsIDB4MWQsIDB4ZjcsIDB4MTUsIDB4ZjQsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHhmNywgMHg5OSwgMHgxNSwgMHhlMiwgMHg3OCwgMHg5ZiwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHgxYSwgMHhmYiwgMHgzZiwgMHg3LCAweGZiLCAweGQsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ZjcsIDB4MTksIDB4MWUsIDB4OTcsIDB4NywgMHgzYSwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhiMywgMHhkMCwgMHgxYSwgMHhmNywgMHgzZiwgMHg3LCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweGIzLCAweDJhLCAweDlkLCAweDFlLCAweDhkLCAweDcsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWMsIDB4YTUsIDB4ZDIsIDB4MWEsIDB4ZjcsIDB4NDcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhhNCwgMHhiOCwgMHhkYywgMHg5YSwgMHgxZSwgMHg5NywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE5LCAweDNkLCAweDc3LCAweGZiLCAweGUsIDB4MWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NywgMHg0OSwgMHg3NywgMHg2YywgMHgzNCwgMHg3OCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZjLCAweDNmLCAweGZiLCAweDI5LCAweDc2LCAweGY3LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDVhLCAweDc3LCAweDEsIDB4Y2QsIDB4ZTMsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4MywgMHhkOCwgMHhmYiwgMHgzZSwgMHgxNSwgMHhkMCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHg0NiwgMHg2LCAweGUsIDB4OGQsIDB4MWQsIDB4ZjcsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4MywgMHhjMSwgMHhmYiwgMHgzNywgMHgxNSwgMHg3ZiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE5LCAweGQ5LCAweDk5LCAweGY3LCAweGUsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4NywgMHhjZCwgMHg5ZiwgMHhiOCwgMHhlMiwgMHg5ZSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHg5ZSwgMHg3NywgMHhhYSwgMHhjZCwgMHgxYSwgMHhmNywgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGY3LCAweGQsIDB4M2QsIDB4OWYsIDB4ZmIsIDB4MTksIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NywgMHhkYywgMHg3ZCwgMHhhNCwgMHg1ZCwgMHg0NiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0NywgMHg3LCAweDQ0LCAweDljLCAweDcxLCAweGVjLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDg5LCAweDcsIDB4MmEsIDB4NzksIDB4N2EsIDB4NjMsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZmIsIDB4M2YsIDB4NywgMHg0NSwgMHg3MiwgMHg2NCwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgxZSwgMHhlLCAweGZiLCAweDEzLCAweGY3LCAweDQxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDEsIDB4YTgsIDB4ZjgsIDB4NjIsIDB4MywgMHhjYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHgxNSwgMHhhZSwgMHg5YiwgMHhhMywgMHhiMCwgMHhiNywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhhYSwgMHg3ZSwgMHg3YywgMHhhOCwgMHgxZiwgMHg3OCwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg3NiwgMHhiOSwgMHgxYiwgMHhjOSwgMHhhYywgMHhiNywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHgxZiwgMHg2NywgMHhkMSwgMHg1LCAweDY4LCAweDc0LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDYzLCAweDFiLCAweDZlLCAweDY4LCAweDliLCAweDliLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDlkLCAweDY0LCAweDYzLCAweDlkLCAweDZhLCAweDFiLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDVmLCAweDYxLCAweDc1LCAweDFmLCAweGUsIDB4ZmIsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGEsIDB4NzYsIDB4ZjgsIDB4YWIsIDB4ZjcsIDB4M2QsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4ZjcsIDB4M2QsIDB4MjksIDB4YTgsIDB4MTMsIDB4ZTAsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzUsIDB4MTUsIDB4NWQsIDB4YjEsIDB4NjQsIDB4YmEsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4YjMsIDB4YjgsIDB4YmEsIDB4NjcsIDB4YjAsIDB4NWIsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NjcsIDB4NWIsIDB4MWUsIDB4MTMsIDB4ZDAsIDB4ZDIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4MTUsIDB4ODQsIDB4NDQsIDB4ODMsIDB4NTcsIDB4ODIsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg3NSwgMHgyMCwgMHg3MywgMHg3MSwgMHg0ZSwgMHgxYSwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg2OCwgMHhiZSwgMHhiZiwgMHhhYywgMHhhZSwgMHhjYiwgMHhjOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhhNCwgMHg3NSwgMHhmNSwgMHgxZSwgMHg4MiwgMHhiNCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg4NCwgMHhkMywgMHg4LCAweGUsIDB4ZmIsIDB4YiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNywgMHg3NiwgMHhmNywgMHhlMywgMHg3NiwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhmNywgMHg3LCAweDc3LCAweDEsIDB4YzAsIDB4ZjcsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTMsIDB4ZjcsIDB4ZiwgMHgzLCAweGY3LCAweDc1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDE1LCAweDc3LCAweGIxLCAweDgwLCAweGJlLCAweGM0LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDkwLCAweGY3LCAweDFjLCAweGRiLCAweDljLCAweGE0LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDFlLCAweDg4LCAweDcsIDB4ZmIsIDB4NTMsIDB4ZmMsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YjMsIDB4NiwgMHhiYSwgMHhmNywgMHgxOSwgMHg1LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDljLCAweDg5LCAweDlkLCAweDFiLCAweGFjLCAweGUyLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweGQxLCAweDFmLCAweDc5LCAweDlkLCAweDUsIDB4NzQsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NzAsIDB4NGYsIDB4MWIsIDB4NmIsIDB4NzAsIDB4OTgsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4MWYsIDB4ZGQsIDB4ZjcsIDB4N2EsIDB4NSwgMHg3ZCwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg4NSwgMHg5YiwgMHgxYiwgMHg4ZiwgMHhjOSwgMHg4YiwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHg3MCwgMHhhOCwgMHg2NywgMHg5ZCwgMHgxZiwgMHhiYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHg1LCAweDYzLCAweDYsIDB4NWYsIDB4ZmIsIDB4ZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDc4LCAweDc3LCAweDhlLCAweDc4LCAweDFiLCAweGZiLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTAsIDB4MzksIDB4ZmIsIDB4M2IsIDB4ZmIsIDB4NywgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhkMywgMHg2YywgMHgxZiwgMHhlLCAweDdkLCAweGFhLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEyLCAweDIzLCAweDc2LCAweGY3LCAweDE3LCAweGI5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGNjLCAweGY3LCAweDEyLCAweGY3LCAweDRkLCAweDZkLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGEwLCAweGFiLCAweGJmLCAweGY3LCAweDEyLCAweDEzLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGY3LCAweDcxLCAweGJjLCAweDE1LCAweDU0LCAweGM2LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweGFhLCAweDFiLCAweGY3LCAweDcsIDB4OTYsIDB4ZjcsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHg5MSwgMHgxZiwgMHg3NCwgMHg2LCAweDYwLCAweDgwLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDNmLCAweDFiLCAweDdmLCAweDZjLCAweDhkLCAweDlmLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGEyLCAweGM2LCAweDhhLCAweGM1LCAweDg3LCAweGM0LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHhjYywgMHhmYiwgMHg2LCAweDYsIDB4ODcsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4ZjcsIDB4M2YsIDB4YTMsIDB4MWEsIDB4YWMsIDB4OTYsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4YjcsIDB4OGIsIDB4NjksIDB4N2YsIDB4MWUsIDB4MTMsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4MzcsIDB4ODksIDB4YTQsIDB4NzIsIDB4YWQsIDB4MWIsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YWQsIDB4YjEsIDB4OTcsIDB4OGIsIDB4ZjAsIDB4ZmIsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmQsIDB4NWMsIDB4ZmIsIDB4YSwgMHgzYywgMHg2NSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg5MiwgMHg2NSwgMHgxZiwgMHgzYiwgMHg0YSwgMHg2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDAsIDB4ZWQsIDB4NiwgMHg5YiwgMHg1ZCwgMHhhMywgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg1YywgMHg4LCAweDhmLCAweDdjLCAweDgwLCAweDhlLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDI2LCAweDg3LCAweDQ2LCAweDcwLCAweDQzLCAweGNjLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGQyLCAweGE5LCAweGI0LCAweGEwLCAweDliLCAweDFmLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDE1LCAweDEzLCAweDlkLCAweDgwLCAweDcxLCAweDg0LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDU1LCAweDFiLCAweDdhLCAweDY2LCAweDk0LCAweGIzLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweGIxLCAweGI4LCAweGIyLCAweDllLCAweDdhLCAweDdjLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4ZjcsIDB4MzgsIDB4ZDQsIDB4ZjcsIDB4NWIsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhkOCwgMHhlMywgMHhmNywgMHgzMSwgMHhlMywgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGY3LCAweGU2LCAweDE1LCAweGNhLCAweGJiLCAweGJmLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGJiLCAweDU3LCAweDRjLCAweDRhLCAweDViLCAweDUyLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDViLCAweGM0LCAweGNjLCAweDFlLCAweDM5LCAweGZiLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGUxLCAweGUzLCAweDUsIDB4NzgsIDB4YTcsIDB4YjMsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4MWIsIDB4YjYsIDB4YjMsIDB4OWEsIDB4OWUsIDB4YTcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4MzMsIDB4YmYsIDB4YmYsIDB4MzMsIDB4ZTMsIDB4NSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg5NywgMHhiMywgMHhiNiwgMHgxYSwgMHhiNiwgMHg3ZCwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhhNywgMHgxZSwgMHhlMywgMHhlMywgMHg1NywgMHhiZCwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHg1LCAweDllLCAweDZmLCAweDY1LCAweDk1LCAweDVlLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDYzLCAweDgxLCAweDc4LCAweDZmLCAweDFmLCAweDM1LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDU5LCAweGUzLCAweDMzLCAweDUsIDB4NzgsIDB4NzEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NjAsIDB4MWEsIDB4NjAsIDB4OTgsIDB4NjUsIDB4YTAsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MzMsIDB4MzMsIDB4NSwgMHhlLCAweDhiLCAweGFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YmQsIDB4ZTgsIDB4YmQsIDB4ZjcsIDB4YjksIDB4YWYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZCwgMHhmNywgMHgxNiwgMHhlMCwgMHhmNywgMHgxMywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweDE2LCAweGY3LCAweGRmLCAweGFlLCAweDYsIDB4NGIsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4OGQsIDB4ZGQsIDB4MWEsIDB4YjIsIDB4ZjcsIDB4MWIsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWIsIDB4Y2UsIDB4NywgMHg4ZiwgMHg5NiwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGJkLCAweGZiLCAweDMsIDB4NiwgMHhmNywgMHgxMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg5YywgMHhhYywgMHhhYSwgMHg4ZCwgMHg5YiwgMHg4ZCwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhmYiwgMHg2MSwgMHg2NywgMHg3LCAweGI1LCAweDg5LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDY0LCAweDFhLCAweDIxLCAweGZiLCAweDkyLCAweDUsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg1NSwgMHhmNywgMHgyLCAweDUxLCAweGY3LCAweDE0LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGEzLCAweDlkLCAweDkzLCAweGM2LCAweDFlLCAweGFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDY3LCAweDcsIDB4YjgsIDB4ODksIDB4YTMsIDB4NzQsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4ZjcsIDB4MiwgMHhmYiwgMHg4OSwgMHgxOCwgMHgyOCwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMCwgMHg2LCAweDk2LCAweDc2LCAweDUsIDB4NTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NTksIDB4ZjcsIDB4MWIsIDB4NjQsIDB4NywgMHgzOSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg0YSwgMHg4YiwgMHgxZCwgMHhmYywgMHgzZiwgMHg4ZCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1ZCwgMHg3NiwgMHhmNywgMHhhNiwgMHg3NywgMHgxLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDNlLCAweGNlLCAweDMsIDB4ZDgsIDB4ZjgsIDB4MzUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4ZjcsIDB4YTYsIDB4NDksIDB4NiwgMHhmZCwgMHg1YSwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGY3LCAweGFlLCAweDQ4LCAweDYsIDB4ZSwgMHhmYiwgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGY3LCAweDkzLCAweGE0LCAweGY3LCAweDJkLCAweDc3LCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGY3LCAweDZhLCAweDc3LCAweDEyLCAweGIzLCAweGQ2LCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDVjLCAweGY3LCAweDE0LCAweGY3LCAweDAsIDB4ZTAsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4ODAsIDB4ZjcsIDB4YzUsIDB4ZjcsIDB4MjQsIDB4MTUsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4ZTgsIDB4OGUsIDB4ZjcsIDB4NiwgMHhmNywgMHgzOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhkYywgMHhlNCwgMHgxYSwgMHhiOSwgMHhhNywgMHhhNSwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhhMSwgMHg3ZCwgMHg4NCwgMHg4NCwgMHg4MCwgMHg4MiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxZSwgMHg4MSwgMHg4MiwgMHg4MSwgMHg3ZiwgMHg3YywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhhOCwgMHg2YywgMHhhYywgMHg5YSwgMHhiYiwgMHg5YSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg2NywgMHhkMCwgMHhmYiwgMHg3LCAweDFlLCAweDEzLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDNmLCAweDQ4LCAweDU5LCAweDM4LCAweDUxLCAweGJiLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDVmLCAweDFmLCAweDg5LCAweDg5LCAweDUsIDB4MTMsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NjIsIDB4OGUsIDB4MmEsIDB4ODcsIDB4ZmIsIDB4ZiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhiOSwgMHg2YiwgMHhmNywgMHhlLCAweDI0LCAweDFlLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDljLCAweDdjLCAweDYyLCAweDFhLCAweDY1LCAweDcxLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDUxLCAweDg0LCAweGEyLCAweDkxLCAweDkxLCAweDk0LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDkxLCAweDFlLCAweDk4LCAweDkzLCAweDlhLCAweDk1LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDEzLCAweGY5LCAweDgwLCAweGExLCAweDc1LCAweGFjLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDdjLCAweDVlLCAweDc5LCAweDQ2LCAweGUwLCAweDZhLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGZhLCAweDgwLCAweGY2LCAweGM3LCAweGM2LCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweDYxLCAweGJhLCAweDUyLCAweGIxLCAweDFmLCAweGZiLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU3LCAweDE1LCAweGI4LCAweGIxLCAweDk1LCAweDlkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDhjLCAweDgwLCAweGJhLCAweGUyLCAweDMzLCAweDg5LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGIxLCAweDY0LCAweDkwLCAweDgwLCAweDcwLCAweDFhLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDZhLCAweDYyLCAweDZiLCAweDZjLCAweGE0LCAweGEzLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDQ4LCAweGMzLCAweDc1LCAweDlmLCAweGI4LCAweDFhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4Y2UsIDB4ZjgsIDB4YWQsIDB4ZjcsIDB4MTYsIDB4MSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHhhLCAweGUsIDB4ZWYsIDB4NzgsIDB4YmYsIDB4ZjcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhmNywgMHhiMCwgMHg3NiwgMHhlMCwgMHhhMiwgMHhmNiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGFlLCAweGQyLCAweGY3LCAweDcsIDB4ZjEsIDB4ZjcsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ZjcsIDB4MTIsIDB4ZDIsIDB4MywgMHg3MSwgMHgxZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHhmNywgMHg1YSwgMHhmNywgMHg1YiwgMHhmYiwgMHgyOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg1NSwgMHhhLCAweGZiLCAweDFmLCAweGZiLCAweDM5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGZiLCAweGMsIDB4ZmIsIDB4MWUsIDB4ODAsIDB4MWQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4M2MsIDB4MTUsIDB4NTgsIDB4NzQsIDB4NjQsIDB4NjMsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MmUsIDB4NmEsIDB4ZDcsIDB4ZjQsIDB4OGMsIDB4MWYsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4YjIsIDB4ZDYsIDB4ZGQsIDB4MWIsIDB4ZDIsIDB4YTYsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4OTUsIDB4MWYsIDB4OWUsIDB4ZDMsIDB4NiwgMHg5NCwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg3YiwgMHg5MCwgMHgxZSwgMHg5NCwgMHg3MCwgMHg3MSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHgxYiwgMHhmYiwgMHgzYiwgMHg1MiwgMHhmYiwgMHg1LCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFlLCAweGVmLCAweDQ5LCAweGY3LCAweDEzLCAweGJhLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDhmLCAweDllLCAweDFmLCAweDljLCAweDkyLCAweDk1LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDk3LCAweDliLCAweGQ1LCAweDE4LCAweGUsIDB4ZmIsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzYsIDB4NzYsIDB4ZjcsIDB4YTAsIDB4YTIsIDB4MTIsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4MzYsIDB4ZTAsIDB4ZDYsIDB4ZWIsIDB4MTMsIDB4ZDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4ZjgsIDB4NGEsIDB4MTUsIDB4N2IsIDB4OGYsIDB4OTAsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MWIsIDB4YTgsIDB4YTMsIDB4OTksIDB4OWYsIDB4OWQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4OTcsIDB4NSwgMHg3YSwgMHg3YSwgMHg4NSwgMHg5ZiwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmNywgMHgzMCwgMHg3LCAweGM0LCAweDUxLCAweGE0LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDYyLCAweDY3LCAweDY1LCAweDYyLCAweGFmLCAweDhiLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDk1LCAweGEyLCAweDk2LCAweDFlLCAweDllLCAweDc3LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDFhLCAweDk0LCAweDlhLCAweDk3LCAweGEzLCAweGI4LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDZkLCAweDFlLCAweDZkLCAweDcsIDB4MTMsIDB4ZTgsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MzcsIDB4NzMsIDB4NGQsIDB4MWEsIDB4MTMsIDB4YTgsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4NzksIDB4YWIsIDB4OWEsIDB4YjksIDB4OGQsIDB4YjIsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODgsIDB4YTYsIDB4MTUsIDB4ODEsIDB4ODQsIDB4N2MsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4MWIsIDB4NzYsIDB4ODEsIDB4YTEsIDB4OWQsIDB4YmYsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OTYsIDB4OGUsIDB4MWYsIDB4ZSwgMHg4MiwgMHhhLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmYsIDB4ZjcsIDB4OTIsIDB4MywgMHhhMiwgMHhmNywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHhhLCAweDgyLCAweDk1LCAweDliLCAweDdkLCAweDk2LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDkwLCAweDhmLCAweDk5LCAweDc3LCAweDFkLCAweGUxLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDFhLCAweDk1LCAweDg4LCAweDdiLCAweDFkLCAweGY3LCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDg4LCAweGEsIDB4ODIsIDB4OTUsIDB4OWMsIDB4N2QsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4OTEsIDB4OGYsIDB4NzUsIDB4YSwgMHg5NSwgMHg4NiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhlLCAweDNlLCAweGY3LCAweDE1LCAweDc2LCAweGY3LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweDEyLCAweGY4LCAweDU0LCAweGU2LCAweDQ0LCAweGQwLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweGFjLCAweGY3LCAweGRmLCAweDE1LCAweDEzLCAweGQwLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGZiLCAweDczLCAweGQwLCAweGY3LCAweGI3LCAweGZjLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhlZiwgMHg3OCwgMHhiZiwgMHg1NywgMHhmNywgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhmNywgMHg1MSwgMHg4NSwgMHg3NiwgMHhmNywgMHhlZiwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhhNSwgMHhkMiwgMHhmNywgMHgzZSwgMHhkYiwgMHhlNCwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNSwgMHhkMiwgMHgxMywgMHhhZiwgMHg4MCwgMHg3MSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNCwgMHhmNywgMHg1YSwgMHhmNywgMHg1YiwgMHhmYiwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZCwgMHg1NSwgMHhhLCAweGZiLCAweDFiLCAweGZiLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM4LCAweGZiLCAweGMsIDB4ZmIsIDB4MjIsIDB4ODAsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHhmYiwgMHg0YSwgMHgxNSwgMHhmNywgMHg0MCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDVmLCAweDgwLCAweDlkLCAweDcsIDB4NWMsIDB4OGUsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4YjAsIDB4MWEsIDB4ZjQsIDB4YjAsIDB4NywgMHgxMywgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgzYSwgMHhjMCwgMHhjOSwgMHgzNSwgMHg4OCwgMHgxYiwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg2LCAweGZiLCAweDE0LCAweGY3LCAweDNiLCAweDUsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YWIsIDB4YjAsIDB4YmEsIDB4MWEsIDB4Y2YsIDB4NTYsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4MWUsIDB4ZmIsIDB4NTUsIDB4NzksIDB4NiwgMHhiYSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg4NywgMHg2NSwgMHgxYSwgMHhmYiwgMHg5MywgMHg3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDgwLCAweDY2LCAweDhjLCAweDg3LCAweDVjLCAweDg4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGFmLCAweDgwLCAweGY3LCAweDEyLCAweGY3LCAweDNmLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNjLCAweGFmLCAweDcsIDB4YWYsIDB4YTQsIDB4NzcsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4N2MsIDB4NjAsIDB4NWMsIDB4MWYsIDB4ZSwgMHhmYiwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhjOSwgMHhkMywgMHgxLCAweDhjLCAweGY4LCAweGM5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGRlLCAweGQzLCAweGZiLCAweGRlLCAweDYsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmOCwgMHgyNiwgMHhhZiwgMHhmNywgMHg2YSwgMHhhZiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGI0LCAweGY3LCAweDY5LCAweGI0LCAweDMsIDB4ZWQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MTUsIDB4YzQsIDB4YjgsIDB4YmQsIDB4YzQsIDB4YzQsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4NTIsIDB4NTIsIDB4NWUsIDB4NTksIDB4NTIsIDB4NTIsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YzQsIDB4MWUsIDB4NjIsIDB4MTYsIDB4M2IsIDB4Y2EsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4ZGIsIDB4Y2EsIDB4Y2EsIDB4ZGIsIDB4ZGIsIDB4NGMsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4M2IsIDB4NGMsIDB4NGMsIDB4M2IsIDB4MWUsIDB4ZSwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhlMSwgMHhmNywgMHg1MSwgMHhlMywgMHgzYiwgMHhjZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg3NywgMHgxMiwgMHhmNywgMHg4NSwgMHhlMywgMHgzZSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkNCwgMHhmNywgMHg5MCwgMHhmNywgMHgxMiwgMHgxNSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGI0LCAweGY3LCAweDMxLCAweGY3LCAweDZmLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZmLCAweGY3LCAweDMxLCAweDQ5LCAweGZiLCAweDMxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDQ5LCAweGY3LCAweDZmLCAweDcsIDB4ZmIsIDB4NmYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4MTUsIDB4ZjgsIDB4OGMsIDB4NiwgMHgxMywgMHhkOCwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4YywgMHg3LCAweGUsIDB4ZmIsIDB4ZWYsIDB4ZjcsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4ZjcsIDB4OWQsIDB4Y2YsIDB4MTIsIDB4ZjcsIDB4NGMsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZjcsIDB4YTcsIDB4NCwgMHhmNywgMHhhMiwgMHg2LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweDUsIDB4N2IsIDB4NiwgMHg2MiwgMHg3OSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg0NiwgMHgxYiwgMHgyZiwgMHg2LCAweGY3LCAweDI1LCAweGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGU3LCAweGFhLCAweDVhLCAweDFkLCAweDFmLCAweDQ0LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDIyLCAweDIzLCAweDFlLCAweGUsIDB4ZmIsIDB4ZWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4NzYsIDB4ZjgsIDB4OCwgMHhiYiwgMHgxMiwgMHhmNywgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHg1YSwgMHhkNiwgMHgxMywgMHhkMCwgMHhlNywgMHhmOCwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhhLCAweDcwLCAweGI2LCAweDU2LCAweDlkLCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGE3LCAweDlhLCAweDRhLCAweDFkLCAweGUsIDB4OTAsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHhmOCwgMHhhNCwgMHg1NiwgMHgxZCwgMHhmNywgMHgxZSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGEzLCAweDlhLCAweDlmLCAweDk3LCAweGE3LCAweDFhLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDkzLCAweDc5LCAweDgxLCAweDczLCAweDg5LCAweDcxLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4MzAsIDB4ZmIsIDB4NGQsIDB4NzYsIDB4ZjksIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4YWMsIDB4ZjcsIDB4MTQsIDB4MmMsIDB4ZjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4ZjcsIDB4MWYsIDB4MTMsIDB4ZDgsIDB4ZjcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4MTUsIDB4OGQsIDB4OGQsIDB4NSwgMHg3NywgMHhhMywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhiOSwgMHgxYiwgMHhiMiwgMHhhYSwgMHg5ZCwgMHhhZCwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg2NCwgMHhhMCwgMHhiMSwgMHg3ZSwgMHhiNiwgMHgxYiwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg5ZiwgMHhhOCwgMHhhYiwgMHgxZiwgMHhhMywgMHg3LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDgzLCAweDg5LCAweDgzLCAweDhjLCAweDgsIDB4N2MsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4OTksIDB4YWEsIDB4MWEsIDB4ZjcsIDB4ZmMsIDB4ZmIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZmIsIDB4NywgMHg3ZCwgMHg3NywgMHg2YSwgMHg3ZSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg2ZiwgMHg2YywgMHg5ZiwgMHhjMSwgMHgxZiwgMHhmNywgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZiwgMHhmYywgMHg5LCAweDcsIDB4NTYsIDB4ODUsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NmEsIDB4MWUsIDB4MTMsIDB4ZTgsIDB4ODIsIDB4NjQsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzQsIDB4MWEsIDB4NWQsIDB4OWUsIDB4NmIsIDB4YmMsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YWIsIDB4YjksIDB4YTgsIDB4N2YsIDB4YTcsIDB4ODIsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODYsIDB4OWQsIDB4ODcsIDB4OWUsIDB4ODksIDB4OWYsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDIwLCAweGZiLCAweDU0LCAweDc2LCAweGY5LCAweGQ5LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGExLCAweDEyLCAweGY3LCAweDlhLCAweGJjLCAweGUzLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGQ4LCAweGY3LCAweDk4LCAweGZiLCAweDY5LCAweDE1LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGQ5LCAweGVkLCAweGZkLCAweGQ5LCAweDYsIDB4MTMsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4ZjksIDB4N2EsIDB4NiwgMHhlMSwgMHg5NywgMHhhNCwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhMSwgMHhmYiwgMHhiMiwgMHg3LCAweGZiLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4NjcsIDB4ZmIsIDB4NGUsIDB4ZmIsIDB4MzMsIDB4ZjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmNywgMHgyNiwgMHgxZiwgMHhlLCAweGZjLCAweDIxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDkzLCAweGEsIDB4ZjcsIDB4ZTAsIDB4NjIsIDB4MWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ZmIsIDB4NTksIDB4NzYsIDB4ZjcsIDB4NmUsIDB4NzcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWQsIDB4ZTgsIDB4MTcsIDB4ZjcsIDB4MzMsIDB4MTYsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4NGYsIDB4MWQsIDB4MTMsIDB4NjAsIDB4YjEsIDB4ZjcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHhkYywgMHhjOCwgMHg0YiwgMHhhNywgMHg1MiwgMHg3YSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhjYiwgMHg1LCAweGUsIDB4ZmIsIDB4ZWYsIDB4ZjcsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4YmQsIDB4YTksIDB4ZjcsIDB4YzMsIDB4NzcsIDB4MSwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHgzLCAweGE5LCAweGY3LCAweGY3LCAweDE1LCAweGY3LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDYsIDB4NGIsIDB4ODUsIDB4OWIsIDB4YjMsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4NDYsIDB4YSwgMHhmYiwgMHgxNywgMHg3LCAweDY1LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDQwLCAweDhjLCAweDFlLCAweGUsIDB4ZmIsIDB4ZDEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4OWYsIDB4ZjcsIDB4OGUsIDB4YTAsIDB4MSwgMHg5ZCwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHhlZCwgMHgzLCAweGY3LCAweDcsIDB4ZjgsIDB4YjIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4OTcsIDB4YWMsIDB4YjEsIDB4YjEsIDB4OTYsIDB4NmEsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4ODYsIDB4NWIsIDB4NWYsIDB4NWYsIDB4ODUsIDB4YmIsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MmEsIDB4MTYsIDB4M2IsIDB4YzUsIDB4NGEsIDB4ZTQsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4Y2MsIDB4ZGIsIDB4ZGUsIDB4NGUsIDB4Y2EsIDB4MzUsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4NGMsIDB4MzgsIDB4MWUsIDB4ZSwgMHg4MiwgMHhhLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI1LCAweGY3LCAweDFjLCAweDE3LCAweGY3LCAweDI1LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ODEsIDB4OTEsIDB4ODcsIDB4OTEsIDB4OTcsIDB4OWYsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OTIsIDB4NGMsIDB4YSwgMHhmNywgMHg1OCwgMHgxNiwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHgzNSwgMHgyMCwgMHg2ZSwgMHgxYSwgMHg4MCwgMHg4ZiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg5NiwgMHg5ZCwgMHg5OSwgMHg5MywgMHg5NSwgMHg0YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZjIsIDB4OTQsIDB4NzYsIDB4YWMsIDB4NzYsIDB4ZTIsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZSwgMHhhOSwgMHhiNCwgMHg3NiwgMHhmNywgMHgxLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE3LCAweDc3LCAweDEyLCAweGY2LCAweGViLCAweGY4LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDEzLCAweDdmLCAweDgwLCAweGY4LCAweDUzLCAweGUyLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDM3LCAweDIzLCAweDUwLCAweDM4LCAweDczLCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4ODAsIDB4ZmIsIDB4YzAsIDB4ZmIsIDB4MzksIDB4NjksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhkZiwgMHgzZSwgMHgxZCwgMHhlLCAweGYyLCAweDhiLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDc2LCAweGY3LCAweGIzLCAweGE5LCAweGIzLCAweGNmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDc3LCAweDEyLCAweGQzLCAweGViLCAweGY4LCAweDdmLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDdlLCAweGY3LCAweDE4LCAweDdmLCAweDY5LCAweGEsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4M2UsIDB4MWQsIDB4MTMsIDB4YmUsIDB4ZjgsIDB4NzYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4MTUsIDB4ZjcsIDB4YTIsIDB4NiwgMHhhOSwgMHhmNywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDcxLCAweDYsIDB4NjIsIDB4NzksIDB4ODUsIDB4ODUsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4M2YsIDB4OTAsIDB4NiwgMHhlOCwgMHhlMiwgMHg1LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweDhiLCAweGI4LCAweDlkLCAweDVhLCAweDFkLCAweDQ0LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDIyLCAweDIzLCAweDFmLCAweGUsIDB4ZjIsIDB4OTQsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4Y2QsIDB4ZjgsIDB4N2IsIDB4YmIsIDB4MTIsIDB4ZjcsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4NWEsIDB4ZDYsIDB4ZjcsIDB4YWUsIDB4ZTgsIDB4MTMsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDAsIDB4N2YsIDB4NjksIDB4YSwgMHhmYywgMHg4OSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg0MCwgMHhhLCAweDZmLCAweGI2LCAweDViLCAweDliLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDcsIDB4MTMsIDB4ZjQsIDB4YTMsIDB4OTgsIDB4NGEsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZDksIDB4ZmMsIDB4MzEsIDB4NzQsIDB4MWQsIDB4MzUsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4MzUsIDB4NzMsIDB4YSwgMHhlLCAweGZiLCAweDVkLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDg4LCAweGY3LCAweDNhLCAweDEyLCAweGMyLCAweGY3LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGY3LCAweDNkLCAweDY5LCAweGY3LCAweDE3LCAweDEzLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGQwLCAweGY3LCAweDhiLCAweGY3LCAweDk1LCAweDE1LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDU5LCAweDZhLCAweDU2LCAweDY4LCAweDgsIDB4NTgsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4NjgsIDB4NDAsIDB4MWEsIDB4ZmIsIDB4MzMsIDB4ZjcsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4YWEsIDB4ZjcsIDB4MzgsIDB4YTksIDB4ZjEsIDB4YjQsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4YjUsIDB4NTgsIDB4NzcsIDB4NjIsIDB4N2YsIDB4NTcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4N2YsIDB4OTUsIDB4ODAsIDB4MWUsIDB4OTMsIDB4ODIsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4N2UsIDB4MWEsIDB4NjYsIDB4NTksIDB4ODgsIDB4ODIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ZTQsIDB4YjUsIDB4Y2YsIDB4YTEsIDB4YjUsIDB4OWYsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YTIsIDB4YjYsIDB4YTQsIDB4YWUsIDB4N2EsIDB4Y2MsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlOCwgMHgyNywgMHhmNywgMHgzNywgMHgxNSwgMHg1ZCwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhiOSwgMHhiYiwgMHhiMCwgMHhiMywgMHhiOCwgMHhiYSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHg1YiwgMHg1ZCwgMHg2NSwgMHg2YSwgMHg1YiwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDFkLCAweGY3LCAweDkxLCAweDc3LCAweDEsIDB4ZjgsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg3NiwgMHgyNCwgMHgxZCwgMHhmYiwgMHg3NywgMHhmZCwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgxZCwgMHg0YiwgMHgxZCwgMHhmNywgMHg5MSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE2LCAweGY5LCAweDc2LCAweDIyLCAweDFkLCAweGZjLCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZlLCAweDEzLCAweDIwLCAweDFkLCAweDRiLCAweDFkLCAweGY3LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZjcsIDB4NGUsIDB4ZjksIDB4NzYsIDB4MjksIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YmYsIDB4ZmUsIDB4MjYsIDB4MjAsIDB4MWQsIDB4NTQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg5ZCwgMHhkOSwgMHg4MCwgMHhkOSwgMHgxMiwgMHgxMywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHhmOSwgMHg4YiwgMHg0NSwgMHgxZCwgMHhhMSwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg4MCwgMHhhMywgMHgxZiwgMHgxMywgMHhlMCwgMHg3ZSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg3YywgMHhhMSwgMHgxYiwgMHgxMywgMHhkMCwgMHg0NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGUwLCAweDU0LCAweDFkLCAweDZiLCAweDc3LCAweDk2LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDFmLCAweDEzLCAweGQwLCAweDk4LCAweDc0LCAweDc1LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDUwLCAweDFkLCAweGZiLCAweDM3LCAweGZkLCAweDhiLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDRiLCAweDFkLCAweGQ4LCAweGY3LCAweDE2LCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4ZjcsIDB4MTMsIDB4OGIsIDB4ZGUsIDB4OGIsIDB4ZjcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4ZSwgMHhmNywgMHg0ZSwgMHhmOSwgMHhjMCwgMHgxNSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHg2NiwgMHgxNiwgMHg2ZSwgMHgxZCwgMHhmYywgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZCwgMHhjMCwgMHgyMCwgMHgxZCwgMHg1NCwgMHhhLCAweGY4LCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGJhLCAweGJiLCAweGY3LCAweDE1LCAweGJiLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4YmIsIDB4OGIsIDB4ZjcsIDB4OSwgMHg4YiwgMHhiYiwgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGY3LCAweDg0LCAweGY5LCAweGQwLCAweDE1LCAweDRmLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGM1LCAweDdkLCAweDFkLCAweDFlLCAweGJiLCAweDE2LCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGE1LCAweGFjLCAweGFjLCAweGE1LCAweDcxLCAweDZhLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDcyLCAweDZhLCAweDZhLCAweDcyLCAweGE0LCAweGFjLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGFiLCAweGZkLCAweGQwLCAweDIwLCAweDFkLCAweGY3LCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGFlLCAweDY4LCAweGI3LCAweGY3LCAweDk3LCAweGIzLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweGY3LCAweGEwLCAweGI4LCAweDEyLCAweGY4LCAweDQ0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDEzLCAweGFjLCAweDhmLCAweDE2LCAweGY3LCAweDYyLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NTksIDB4OTEsIDB4NjYsIDB4OGYsIDB4YWMsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmNywgMHg3NSwgMHg1LCAweGY3LCAweDUyLCAweGZiLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NjQsIDB4N2QsIDB4NzUsIDB4NDEsIDB4ODgsIDB4MWUsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4Y2EsIDB4NywgMHhiNCwgMHhmNywgMHg2NywgMHg1LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4N2UsIDB4NjAsIDB4NDQsIDB4NmIsIDB4NmMsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4NjEsIDB4NWUsIDB4NjIsIDB4ODEsIDB4MjEsIDB4MWIsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4OWUsIDB4YWUsIDB4MWYsIDB4ZjcsIDB4N2QsIDB4NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHg4NiwgMHg4YSwgMHg1NiwgMHg5YiwgMHgyOCwgMHg4LCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGU2LCAweDZhLCAweDYsIDB4NmYsIDB4ZmIsIDB4MTQsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4ZmIsIDB4OSwgMHg4MCwgMHg4LCAweGY3LCAweDgyLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OGIsIDB4OTYsIDB4ZGQsIDB4ZjcsIDB4NDQsIDB4OTAsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4OWUsIDB4MWUsIDB4YWUsIDB4ZjcsIDB4NWQsIDB4ZmQsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg2LCAweGJmLCAweDg5LCAweGFlLCAweDg1LCAweDZjLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGJjLCAweGZjLCAweGFjLCAweDUsIDB4MTMsIDB4YWMsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4ODQsIDB4OTMsIDB4NjcsIDB4ODQsIDB4OCwgMHhmNywgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjOCwgMHgxNSwgMHhmNywgMHgzNSwgMHhmNywgMHhhYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGZiLCAweGFjLCAweDYsIDB4ZSwgMHhkNiwgMHhmYiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHgzMywgMHhiNSwgMHg4YiwgMHhiOSwgMHg3ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU3LCAweGU4LCAweDEzLCAweGZiLCAweGY3LCAweGM0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDE1LCAweDdiLCAweDY2LCAweDUsIDB4N2IsIDB4YjQsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OTcsIDB4MWIsIDB4YjEsIDB4ZWMsIDB4OTMsIDB4ZGMsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4YTAsIDB4NTgsIDB4N2UsIDB4ODMsIDB4ODksIDB4ODgsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OWYsIDB4YjgsIDB4ZjcsIDB4MTEsIDB4OGMsIDB4ZDgsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4ZGQsIDB4MTksIDB4NmQsIDB4YTQsIDB4NSwgMHgyZSwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg2ZCwgMHgzZCwgMHgxYiwgMHhmYiwgMHgyYSwgMHg1ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhmNywgMHgxMiwgMHhmNywgMHgzZCwgMHhhYSwgMHhmNywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNiwgMHhmNywgMHg2LCAweGRkLCAweGZiLCAweDksIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MWYsIDB4YWUsIDB4NiwgMHgxMywgMHhmNywgMHg2YSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg2YywgMHg5ZCwgMHg5OSwgMHg2MSwgMHgxZiwgMHgxMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg3MCwgMHg2YiwgMHg5MywgMHg2OCwgMHgxYiwgMHhmYiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNCwgMHhmYiwgMHgzMCwgMHhmYiwgMHg1ZiwgMHhmYiwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweGZiLCAweDMwLCAweGY3LCAweDY2LCAweDdhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDNjLCAweDk2LCAweDgzLCAweDUsIDB4OGQsIDB4OTMsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4OTgsIDB4MWIsIDB4YTUsIDB4OWYsIDB4ODAsIDB4NzIsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MWYsIDB4ZSwgMHg1NSwgMHgxZCwgMHg5YiwgMHgxNiwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHhmMCwgMHhmOSwgMHg1MywgMHgyNiwgMHhhLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY3LCAweDk4LCAweGY5LCAweDc2LCAweDIyLCAweDFkLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweGZlLCAweDEzLCAweDE1LCAweDIxLCAweDFkLCAweGUsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg4MiwgMHg3MiwgMHhhLCAweGY3LCAweDQwLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDI5LCAweDFkLCAweGZiLCAweGFhLCAweGZlLCAweDI2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDFkLCAweGUsIDB4OWYsIDB4OGIsIDB4YWEsIDB4ZjcsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4ZjcsIDB4YWIsIDB4YWQsIDB4ZDIsIDB4OWEsIDB4MWQsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzYsIDB4MmMsIDB4ZjcsIDB4MTYsIDB4ZGEsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4YWYsIDB4MTMsIDB4ZjksIDB4OWIsIDB4MTYsIDB4MjEsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjYsIDB4ZjcsIDB4MmYsIDB4ZjksIDB4OWQsIDB4MTUsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZjcsIDB4NjUsIDB4MzgsIDB4MWQsIDB4MzUsIDB4MWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4ZjksIDB4NTMsIDB4MjYsIDB4YSwgMHgzNSwgMHgxZCwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg1MywgMHgyOCwgMHgxZCwgMHg1YywgMHhhLCAweGY3LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDI3LCAweGEsIDB4OTEsIDB4ZjksIDB4NTMsIDB4MjksIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1YywgMHhhLCAweGQyLCAweDlhLCAweDFkLCAweDlmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDYyLCAweGY3LCAweDM2LCAweDYyLCAweGY3LCAweDE2LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDlmLCAweDE2LCAweGY3LCAweGYyLCAweGFlLCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4MzQsIDB4MWQsIDB4NywgMHgxMywgMHhmNCwgMHhmYiwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg2LCAweDEzLCAweGU4LCAweDRiLCAweGEsIDB4MTMsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NjQsIDB4ODcsIDB4NTUsIDB4ODYsIDB4MWUsIDB4OGYsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4NDAsIDB4MWQsIDB4OGEsIDB4MWQsIDB4ZjcsIDB4YjcsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTEsIDB4YWQsIDB4MSwgMHhlYywgMHhmNywgMHgzNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhmNywgMHg0MiwgMHgzLCAweGY3LCAweDk3LCAweGY3LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDYsIDB4YmEsIDB4ZmIsIDB4NiwgMHhmNywgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDhjLCAweDFkLCAweGZiLCAweDY5LCAweDMwLCAweDg0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4ODksIDB4MzAsIDB4MTUsIDB4ZjcsIDB4ZDAsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MCwgMHhmNywgMHgwLCAweGY3LCAweDJlLCAweGY3LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJlLCAweDMwLCAweGY3LCAweDRjLCAweDk1LCAweDFkLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDRlLCAweDFmLCAweGZiLCAweDY3LCAweDMwLCAweDVjLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDdmLCAweDcsIDB4NjYsIDB4NzcsIDB4NzgsIDB4NGMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhkNiwgMHg4ZSwgMHg3NiwgMHhmOSwgMHgyNywgMHhhZSwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHgxMiwgMHhmMiwgMHhiNywgMHhmOCwgMHg0NCwgMHhiNywgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHgxZCwgMHgzNywgMHhhLCAweGY3LCAweDM3LCAweGY5LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDFkLCAweDEzLCAweDMwLCAweGE4LCAweGEyLCAweDgxLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDFmLCAweDdlLCAweGE0LCAweGEzLCAweDdjLCAweGFhLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweGEsIDB4MTMsIDB4MTAsIDB4NzQsIDB4NzYsIDB4OTgsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4MWYsIDB4OTcsIDB4NzQsIDB4NzEsIDB4OTYsIDB4NmEsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZSwgMHg1MSwgMHgxZCwgMHhmNywgMHg3YywgMHg3NywgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmYiwgMHg0OCwgMHg3OCwgMHhhLCAweGZiLCAweDdiLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGY3LCAweDIxLCAweDVlLCAweGEsIDB4ZjcsIDB4MjEsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZmIsIDB4MTgsIDB4ZmIsIDB4NmUsIDB4MWUsIDB4ZjgsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyMSwgMHgyNiwgMHhhLCAweDUxLCAweDFkLCAweGY3LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4YWUsIDB4ZjcsIDB4NDUsIDB4ZjcsIDB4ZjYsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHhhNiwgMHhmOCwgMHgyNiwgMHgyOCwgMHgxZCwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg1NywgMHgxZCwgMHhmYiwgMHg0OSwgMHg3OCwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDU4LCAweDFkLCAweGY3LCAweDIwLCAweDVlLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4NWUsIDB4MWQsIDB4ZmIsIDB4MTgsIDB4ZmIsIDB4NmUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGUsIDB4ZjgsIDB4MjEsIDB4MjksIDB4MWQsIDB4ZSwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhjZCwgMHhkOSwgMHg2ZSwgMHhkOSwgMHgxMiwgMHg1YywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkYywgMHhmNywgMHg2OCwgMHhmNywgMHhlYSwgMHg3OSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZSwgMHg2NiwgMHgxZCwgMHhmYiwgMHg0OSwgMHg3OCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDdhLCAweDY1LCAweDFkLCAweGY3LCAweDg1LCAweDQ1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmIsIDB4NWYsIDB4MWQsIDB4ZjcsIDB4MjAsIDB4NWUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMiwgMHhmYiwgMHg1NSwgMHg5NiwgMHhhLCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweGY4LCAweDM1LCAweDQ1LCAweDFkLCAweGE5LCAweGExLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGExLCAweDFmLCAweDEzLCAweGVjLCAweDdlLCAweGE0LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGFhLCAweDFiLCAweDEzLCAweGRjLCAweDQ0LCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4NTQsIDB4MWQsIDB4NzUsIDB4NzYsIDB4OTgsIDB4OTcsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4ZGMsIDB4OTcsIDB4NzQsIDB4NzAsIDB4OTcsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4MWQsIDB4ZSwgMHg1MSwgMHgxZCwgMHhjMywgMHhmNywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGFlLCAweGY3LCAweDQ1LCAweDk0LCAweGY3LCAweDE0LCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweDkzLCAweDMwLCAweGEsIDB4ZjcsIDB4NGUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4MTUsIDB4NmQsIDB4YSwgMHhmNywgMHg2NSwgMHgxNiwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4M2UsIDB4YjAsIDB4NzYsIDB4ZjgsIDB4NmUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhiYiwgMHhjYSwgMHgxNSwgMHhiOCwgMHg1YywgMHhmNywgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NiwgMHhmNywgMHg1NCwgMHhmYiwgMHg1NiwgMHhiOCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1NCwgMHhmNywgMHg1MSwgMHhmNywgMHg1NCwgMHhmNywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHhiNywgMHhmYiwgMHg1MSwgMHhmYiwgMHg1MiwgMHhmYiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1MiwgMHg1YiwgMHg1ZSwgMHhmNywgMHg1MywgMHhmYiwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4ZjcsIDB4MTcsIDB4NTYsIDB4NzYsIDB4YzIsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4MWQsIDB4YjksIDB4NzcsIDB4NWEsIDB4YSwgMHhkYywgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhiZCwgMHg2LCAweGQyLCAweGYzLCAweDUsIDB4NmIsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4N2EsIDB4ZDIsIDB4MWIsIDB4ZjcsIDB4NjEsIDB4ZjcsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4NjYsIDB4ZjcsIDB4MTIsIDB4NTUsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4YzgsIDB4MWYsIDB4ZDksIDB4ZjcsIDB4NywgMHg1LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NGMsIDB4MmUsIDB4NSwgMHhhYSwgMHg1NiwgMHg0YywgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHgxYiwgMHg5NiwgMHhhLCAweGZiLCAweGQsIDB4YmQsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4NGMsIDB4MWYsIDB4Y2UsIDB4ZWUsIDB4MTUsIDB4NzYsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ZGMsIDB4YjUsIDB4MWEsIDB4ZjcsIDB4MjYsIDB4YjAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4ZjcsIDB4MjAsIDB4Y2EsIDB4YjQsIDB4NjgsIDB4NTUsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4OWYsIDB4ZmMsIDB4NjUsIDB4MTUsIDB4ZjcsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzgsIDB4NSwgMHg5ZSwgMHg1MywgMHg5MiwgMHg0MCwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgzNCwgMHg4NSwgMHhmYiwgMHg3OSwgMHhmYiwgMHgzZiwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhiMSwgMHhiZiwgMHg3MiwgMHgxZSwgMHhlLCAweDZiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGIsIDB4NzcsIDB4NjMsIDB4YSwgMHg5YiwgMHhmOSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhhLCAweGY4LCAweDIwLCAweGM5LCAweDI2LCAweGEsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg4YiwgMHg3NywgMHg2MywgMHhhLCAweGY3LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDc2LCAweDIyLCAweDFkLCAweGZjLCAweDQxLCAweGZiLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGEsIDB4ZSwgMHg2YiwgMHhhLCAweGY3LCAweDgyLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweGEsIDB4ZjcsIDB4NzAsIDB4ZjksIDB4NzYsIDB4MjksIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZGEsIDB4ZmIsIDB4YTUsIDB4MjEsIDB4YSwgMHhlLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZDIsIDB4OWEsIDB4MWQsIDB4ZWQsIDB4ZjcsIDB4MzMsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTYsIDB4YzgsIDB4ZjcsIDB4MTYsIDB4OWMsIDB4YjcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4OWIsIDB4ZjksIDB4MTUsIDB4MjEsIDB4YSwgMHgxMywgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1ZSwgMHhmNywgMHgxYywgMHgxNSwgMHgyYSwgMHgxZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHgzOCwgMHgxZCwgMHhkNiwgMHg0ZSwgMHgxZCwgMHhmNywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGY3LCAweGFhLCAweDdmLCAweDFkLCAweDY5LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweGRlLCAweDFhLCAweGY3LCAweDRjLCAweDY2LCAweGEsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NjQsIDB4MWEsIDB4ZmIsIDB4MzIsIDB4ZmIsIDB4YTAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNCwgMHhmNywgMHg4MiwgMHg3YiwgMHhhNCwgMHgzZCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNywgMHg3LCAweDM4LCAweDczLCAweDkzLCAweDQ2LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweDMsIDB4ZjksIDB4NTgsIDB4MjgsIDB4MWQsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4NzYsIDB4YjEsIDB4NzYsIDB4ZjcsIDB4NDEsIDB4YWUsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZjcsIDB4YTYsIDB4YWUsIDB4NjgsIDB4ZjcsIDB4NDEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4ZjcsIDB4MzksIDB4OGYsIDB4NzcsIDB4MTIsIDB4ZWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4ZmIsIDB4MjYsIDB4ZjcsIDB4MzYsIDB4ZjcsIDB4MjksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZmIsIDB4M2YsIDB4ZjcsIDB4NDAsIDB4MTMsIDB4YTIsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OWEsIDB4ZjcsIDB4NjQsIDB4MTUsIDB4ZjcsIDB4OTgsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg5OSwgMHg2MCwgMHhhMSwgMHg4YywgMHg5OCwgMHg5OCwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgxMywgMHg5MiwgMHg1MCwgMHhkZCwgMHhhZiwgMHg2ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDFmLCAweDEzLCAweGEyLCAweGEwLCAweGZiLCAweDEwLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGZiLCAweGQsIDB4MWUsIDB4MTMsIDB4NTIsIDB4NjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ZmIsIDB4NjQsIDB4MTUsIDB4ZjcsIDB4ZTIsIDB4YWUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg5MiwgMHhhMCwgMHg0NiwgMHg5NCwgMHg3OCwgMHg4MywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgxMywgMHhhMiwgMHhhMCwgMHhjMywgMHg3LCAweDEzLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGY3LCAweDNjLCAweDhhLCAweGY3LCAweDNlLCAweGI4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDFhLCAweDEzLCAweDk5LCAweDYwLCAweGRmLCAweDYwLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDc5LCAweDFlLCAweDEzLCAweDk5LCAweGEwLCAweDQ5LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZGMsIDB4OWUsIDB4OGIsIDB4ZDAsIDB4OTUsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4NjAsIDB4YWUsIDB4ZmIsIDB4ZTIsIDB4NjgsIDB4NywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhhMCwgMHhjMCwgMHg4NiwgMHhhYSwgMHg4YSwgMHgzNywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg0NiwgMHg3LCAweDMxLCAweDcwLCAweDllLCAweDUyLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4MzAsIDB4N2YsIDB4YWUsIDB4NmUsIDB4ZjcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4NzYsIDB4ZjgsIDB4OSwgMHhhZCwgMHhmNywgMHg5NCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhkMSwgMHhmNywgMHgxZiwgMHhmNywgMHgxNiwgMHhmNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMiwgMHhmNywgMHgyNiwgMHgxMywgMHg5ZSwgMHg5ZSwgMHgxNiwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDEzLCAweDVkLCAweGIwLCAweDkxLCAweDk5LCAweDkxLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY4LCAweDJlLCAweDcsIDB4ZjQsIDB4ZGQsIDB4ZGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmNywgMHgzMSwgMHhiZSwgMHgyYSwgMHg1NSwgMHgzYiwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHgzMiwgMHg3YSwgMHgxZSwgMHg4OSwgMHg3LCAweGY3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGM3LCAweDUzLCAweGZiLCAweDMsIDB4MWEsIDB4MzYsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NTcsIDB4NjgsIDB4MWUsIDB4MTMsIDB4OWUsIDB4N2YsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ODQsIDB4N2QsIDB4OGEsIDB4NmUsIDB4ODksIDB4MTgsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4OTQsIDB4OWUsIDB4NzksIDB4MWYsIDB4MTMsIDB4M2UsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ODMsIDB4OWIsIDB4YTAsIDB4MWEsIDB4YTgsIDB4OWYsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YWQsIDB4OTcsIDB4NzIsIDB4NzUsIDB4MWUsIDB4N2YsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODEsIDB4MWEsIDB4N2QsIDB4OTYsIDB4ODgsIDB4OTcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OTAsIDB4ODgsIDB4YTQsIDB4N2UsIDB4YmIsIDB4OCwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHg4ZCwgMHhhNywgMHhhYiwgMHgxYSwgMHhmNywgMHgyZSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg0OSwgMHg4ZSwgMHgxZSwgMHhhZCwgMHg3LCAweDEzLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDkxLCAweDg2LCAweGI2LCAweGRmLCAweDFhLCAweGVkLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDYyLCAweDU1LCAweDg3LCAweDU3LCAweDcyLCAweDhhLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDVlLCAweGZjLCAweGRlLCAweDcsIDB4ZSwgMHg5MiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDUyLCAweDFkLCAweDEzLCAweGQ4LCAweGY3LCAweGJhLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGEsIDB4ODQsIDB4OTMsIDB4ODYsIDB4OTIsIDB4OTQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjgsIDB4M2IsIDB4MWQsIDB4NzEsIDB4ZjcsIDB4YWYsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg5MiwgMHg1MCwgMHhhLCAweGQ3LCAweDc2LCAweGY3LCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDUyLCAweDFkLCAweDEzLCAweGRlLCAweGY3LCAweDM3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDIyLCAweDFkLCAweDg1LCAweGZkLCAweDksIDB4MzcsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmUsIDB4M2IsIDB4MWQsIDB4ZSwgMHg5MiwgMHg1MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdiLCAweDc3LCAweDUyLCAweDFkLCAweDEzLCAweGRjLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGE0LCAweDI5LCAweDFkLCAweGVjLCAweGZkLCAweDFjLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGEyLCAweDgxLCAweDk3LCAweDgyLCAweDk2LCAweDFlLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDg2LCAweDkxLCAweDM2LCAweDFkLCAweDkyLCAweDUwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZDksIDB4NmUsIDB4ZDksIDB4NTIsIDB4MWQsIDB4MTMsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4ZjgsIDB4YjksIDB4NDUsIDB4MWQsIDB4YTcsIDB4YTIsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4YTEsIDB4MWYsIDB4MTMsIDB4ZDYsIDB4N2QsIDB4YTcsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4YTUsIDB4MWIsIDB4MTMsIDB4Y2UsIDB4NDQsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHg1NCwgMHgxZCwgMHg3MSwgMHg3MywgMHg5NiwgMHg5NywgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhjZSwgMHg5OCwgMHg3MSwgMHg3MiwgMHg5OCwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHgxZCwgMHhmNywgMHg3ZCwgMHhmYywgMHg4MSwgMHgyMywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg4MSwgMHg5OCwgMHg4MiwgMHg5NSwgMHgxZSwgMHg4NSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg5MSwgMHg5NCwgMHgxYSwgMHgxMywgMHhiNiwgMHgzYiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDg2LCAweDI0LCAweGEsIDB4ZSwgMHg5MiwgMHg1MCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweGY3LCAweDE2LCAweDUyLCAweDFkLCAweDEzLCAweGRjLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGEsIDB4OTQsIDB4ZmMsIDB4YjYsIDB4MjMsIDB4MWQsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4OTcsIDB4ODMsIDB4OTUsIDB4MWUsIDB4ODUsIDB4OTIsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4MzYsIDB4MWQsIDB4OTIsIDB4NzYsIDB4ZjcsIDB4YmIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4YzEsIDB4YmIsIDB4NWIsIDB4ZjcsIDB4MzgsIDB4ZmIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4LCAweDhiLCAweGJjLCAweDEyLCAweGE0LCAweGY3LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGY3LCAweDM4LCAweGZiLCAweDgsIDB4ZjcsIDB4MzksIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4MCwgMHhmNywgMHgxZCwgMHg5NCwgMHhhLCAweDEzLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDdkLCAweDFkLCAweDFmLCAweGY3LCAweDMxLCAweGZjLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDFkLCAweDNiLCAweDFkLCAweGZiLCAweDAsIDB4ZjgsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YWIsIDB4YTUsIDB4YTUsIDB4YWIsIDB4YWIsIDB4YTUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4NmIsIDB4NzEsIDB4NzEsIDB4NmIsIDB4NmIsIDB4NzEsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MWUsIDB4ZSwgMHhkNiwgMHg3ZCwgMHhjYSwgMHg0YywgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NCwgMHhiMCwgMHg4YSwgMHhmNywgMHg1MSwgMHg2YiwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhhYywgMHhmNywgMHgyOSwgMHhmYiwgMHgxOCwgMHhmNywgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2LCAweGY3LCAweDFlLCAweGY3LCAweDFkLCAweGY3LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NmQsIDB4ODAsIDB4ZjcsIDB4ZTUsIDB4ZDYsIDB4MTUsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4Y2YsIDB4ODYsIDB4YjAsIDB4MWIsIDB4ZGUsIDB4Y2UsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4YzEsIDB4MWYsIDB4NzYsIDB4OWEsIDB4NSwgMHg3MiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg1YywgMHg0MiwgMHgxYiwgMHhmYiwgMHgzLCAweDhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4YjksIDB4MWYsIDB4YTIsIDB4ZjcsIDB4OTYsIDB4NywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg4MCwgMHhmNywgMHg0MSwgMHg4YywgMHhmYiwgMHgxLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDFiLCAweDRiLCAweDY1LCAweDczLCAweDcwLCAweDcxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDc2LCAweDY2LCAweGE5LCAweDI5LCAweDFiLCAweDI3LCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDQ3LCAweDVmLCAweGFlLCAweDc3LCAweGE4LCAweGI4LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGIzLCAweGExLCAweDgzLCAweDk1LCAweDg0LCAweDkzLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDkyLCAweDg0LCAweDkxLCAweDk3LCAweDFhLCAweDEzLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGExLCAweGFmLCAweDk3LCAweGE4LCAweGRiLCAweDg5LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDFlLCAweDNiLCAweDcsIDB4ZmIsIDB4NDUsIDB4NTIsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4MjMsIDB4MWEsIDB4NDYsIDB4YjYsIDB4NjcsIDB4ZDcsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4YmMsIDB4YWQsIDB4YWQsIDB4MWUsIDB4NjgsIDB4OTcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NmUsIDB4NzksIDB4OGEsIDB4NzgsIDB4MWIsIDB4NWUsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4YTcsIDB4ZGIsIDB4Y2IsIDB4YTcsIDB4YzIsIDB4OWUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWUsIDB4YjAsIDB4MTUsIDB4Y2IsIDB4OGIsIDB4ZTksIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4OWMsIDB4NjcsIDB4MzIsIDB4MWUsIDB4NmEsIDB4NywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVmLCAweGZiLCAweDU5LCAweDc2LCAweGY3LCAweDYzLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDFkLCAweGVhLCAweGU4LCAweDRlLCAweGY3LCAweDEwLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGY3LCAweDQ0LCAweDJiLCAweDE1LCAweDRmLCAweDFkLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4OGUsIDB4ZGEsIDB4YzcsIDB4NDksIDB4YTYsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4MWYsIDB4YTEsIDB4YmUsIDB4ZDMsIDB4OGYsIDB4YzcsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4YzgsIDB4MTksIDB4NzksIDB4OWQsIDB4NSwgMHg3MCwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg2ZSwgMHg1MiwgMHgxYiwgMHgzZCwgMHg0ZSwgMHhkYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHhiOCwgMHg5OCwgMHhmNywgMHhmLCAweGQ5LCAweDFmLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweDlhLCAweDlmLCAweDgyLCAweDZkLCAweDhmLCAweDFkLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDQ0LCAweDFmLCAweDEzLCAweDRhLCAweDJkLCAweGZiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGZiLCAweDU5LCAweGZiLCAweDcsIDB4ZDYsIDB4MjcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg4MCwgMHgxZiwgMHhlLCAweDRjLCAweDFkLCAweDc4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NWIsIDB4OTQsIDB4MWUsIDB4ZmIsIDB4MWMsIDB4NzksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkOCwgMHgyYiwgMHgxZCwgMHhkZSwgMHhmNywgMHhhZiwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDRjLCAweDFkLCAweDg2LCAweGZiLCAweDksIDB4NjAsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4MjMsIDB4ODAsIDB4YSwgMHgxZSwgMHgxMywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHgxZCwgMHg3NiwgMHhmNywgMHhhZiwgMHgyOCwgMHgxZCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhkNywgMHg4MywgMHgxZCwgMHhhNCwgMHg4YSwgMHhhLCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ODIsIDB4ZmIsIDB4NCwgMHg1YiwgMHg5MiwgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg4MCwgMHhhLCAweDM0LCAweGEsIDB4MWUsIDB4MzksIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MSwgMHhmNywgMHhhZiwgMHgyOSwgMHgxZCwgMHhlLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGNiLCAweGY3LCAweDE2LCAweDk4LCAweGEsIDB4MjEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZGIsIDB4ZjcsIDB4MTYsIDB4MTMsIDB4ZmEsIDB4NGQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhmYiwgMHg0LCAweDViLCAweDkyLCAweDFlLCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGEsIDB4MmIsIDB4MWQsIDB4MTMsIDB4ZjYsIDB4ZmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmOSwgMHg0MCwgMHgxZCwgMHgzZSwgMHhhLCAweGZiLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NWIsIDB4N2EsIDB4ODgsIDB4NjcsIDB4ODIsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjgsIDB4ODIsIDB4MjksIDB4YSwgMHg4MSwgMHg3ZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDdjLCAweGE0LCAweDdjLCAweDFmLCAweGUsIDB4M2UsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhOSwgMHg3LCAweDViLCAweDdhLCAweDhiLCAweDY3LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGFlLCAweGY4LCAweDgyLCAweDU2LCAweDFkLCAweGY3LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDUsIDB4YTMsIDB4OWEsIDB4OWMsIDB4OTUsIDB4YTcsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4NmIsIDB4MmMsIDB4YSwgMHhlLCAweDVkLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg4MywgMHgxZCwgMHhkMCwgMHg4YSwgMHhhLCAweDY3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDU2LCAweDFkLCAweGY3LCAweDMsIDB4ZWQsIDB4ZjcsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHg1LCAweGM0LCAweDYsIDB4ZmIsIDB4MTAsIDB4ZjcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyZiwgMHg2LCAweDQ2LCAweGZkLCAweDU0LCAweDE1LCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHhmYywgMHg1LCAweGEwLCAweDc2LCAweGY4LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDFkLCAweDY3LCAweGY3LCAweDEzLCAweDc1LCAweGY3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweGY3LCAweDEzLCAweDEzLCAweGQwLCAweDQ5LCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4NTcsIDB4ZjgsIDB4Y2QsIDB4MTUsIDB4NmMsIDB4MWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4MTYsIDB4NmMsIDB4MWQsIDB4ZSwgMHg2NSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDc3LCAweDEyLCAweDVkLCAweDFkLCAweGZiLCAweDFjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDEzLCAweGY4LCAweGY3LCAweDQwLCAweGY3LCAweDgzLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGU0LCAweGQ1LCAweGM4LCAweDljLCAweDVhLCAweDY0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NDYsIDB4M2IsIDB4OGIsIDB4ZjcsIDB4NiwgMHhmNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGY0LCAweGY3LCAweDNjLCAweGY3LCAweDU1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDczLCAweDZiLCAweDk0LCAweDZhLCAweDFiLCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDIyLCAweGZiLCAweDE1LCAweGZiLCAweDE2LCAweGUyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4ZjcsIDB4MWYsIDB4MWYsIDB4MTMsIDB4ZjgsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4ZjYsIDB4ZjcsIDB4MjYsIDB4ZjcsIDB4MzYsIDB4NGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4M2IsIDB4YzYsIDB4MWYsIDB4ZTcsIDB4YmEsIDB4NWEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4NWQsIDB4NTUsIDB4YTgsIDB4NTEsIDB4OTgsIDB4NWIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4NWQsIDB4NzIsIDB4YjgsIDB4ODMsIDB4YjksIDB4NzgsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4MTksIDB4ZmIsIDB4OSwgMHg1MCwgMHhiYiwgMHg2YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGMzLCAweGIxLCAweDY2LCAweGE5LCAweDVjLCAweDlkLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGUsIDB4MzAsIDB4ODIsIDB4MWQsIDB4ZDUsIDB4ZDksIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4MTIsIDB4ZDUsIDB4NTMsIDB4YSwgMHgxMywgMHhkYywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhhLCAweDhkLCAweDhiLCAweGFhLCAweGEzLCAweDFhLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzYsIDB4NjAsIDB4NGYsIDB4NzMsIDB4N2QsIDB4MWUsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4YjMsIDB4ODUsIDB4OTgsIDB4ODMsIDB4NWUsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4NywgMHg1YSwgMHg3YSwgMHg4YSwgMHg2NywgMHg4NCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhmOCwgMHg5NywgMHg0NSwgMHgxZCwgMHhhNiwgMHhhMywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhhMywgMHgxZiwgMHgxMywgMHhlYywgMHg3ZSwgMHhhNiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhhNCwgMHgxYiwgMHgxMywgMHgxMCwgMHg0MiwgMHhhLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweGEsIDB4NmQsIDB4NTAsIDB4MWQsIDB4ZSwgMHg2NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweDk4LCAweDFkLCAweDVkLCAweDFkLCAweDMsIDB4ZjcsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTAsIDB4NzgsIDB4MWQsIDB4ZDcsIDB4ZDUsIDB4YzgsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NjQsIDB4YSwgMHgyNywgMHg0NiwgMHgzYiwgMHg4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmNywgMHgwLCAweDFlLCAweGZiLCAweDI3LCAweDc1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE2LCAweGUyLCAweGZiLCAweDYsIDB4NzAsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDZmLCAweGEsIDB4ZjIsIDB4NzAsIDB4MWQsIDB4ZmIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNSwgMHgxZSwgMHhmNywgMHg4ZCwgMHhmNywgMHhiZSwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg0OSwgMHhkNywgMHg2NCwgMHhiZCwgMHg3MCwgMHhhNiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDZjLCAweDdjLCAweDhjLCAweDgwLCAweDFiLCAweDY1LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGEsIDB4YTUsIDB4NzUsIDB4YTQsIDB4N2IsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhhLCAweGQ3LCAweDc2LCAweGY3LCAweDRkLCAweDMyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4YmYsIDB4MjgsIDB4MWQsIDB4NjUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHg3NiwgMHhmNywgMHg0NCwgMHgzMiwgMHhhLCAweGM0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDYwLCAweGEsIDB4NjUsIDB4YSwgMHhkNSwgMHhkOSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHgxMiwgMHg1ZCwgMHgxZCwgMHgxMywgMHhkYywgMHgyNSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGY3LCAweGQ0LCAweDQ1LCAweDFkLCAweGE3LCAweGE2LCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGE0LCAweDFmLCAweDEzLCAweGVjLCAweDdmLCAweGE0LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGEzLCAweDFiLCAweDEzLCAweDEwLCAweDQyLCAweGEsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4YSwgMHg2ZSwgMHg1MCwgMHgxZCwgMHhlLCAweDY1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4ZjcsIDB4MTUsIDB4MTIsIDB4YTQsIDB4ZjcsIDB4MjcsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4ZGMsIDB4ZjcsIDB4MTUsIDB4MzAsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjIsIDB4MjUsIDB4YSwgMHgxMywgMHhlYywgMHhjMywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweDJkLCAweDFkLCAweDNlLCAweDZjLCAweGVmLCAweDI3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGU1LCAweGUyLCAweDQwLCAweGNiLCAweGVmLCAweGY3LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGVmLCAweDEyLCAweGY3LCAweDY1LCAweGY3LCAweDJkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGVmLCAweDEzLCAweDVhLCAweGFkLCAweGY3LCAweDcxLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDhiLCAweGNiLCAweGZjLCAweDhiLCAweDYsIDB4MTMsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWQsIDB4ZmIsIDB4OWUsIDB4MTUsIDB4NmMsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg0LCAweDZjLCAweGEsIDB4ZSwgMHg0NCwgMHg3NiwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhmNywgMHhkOSwgMHg3NiwgMHhmNywgMHhkLCAweGFhLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweGEyLCAweGY3LCAweDI3LCAweGZiLCAweDI1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGY3LCAweDMxLCAweGY3LCAweDI3LCAweDEzLCAweGZkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweGY3LCAweDIzLCAweDE1LCAweDEzLCAweGZiLCAweDhhLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGE0LCAweGE5LCAweDFhLCAweGY3LCAweDYsIDB4OTAsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4YWQsIDB4OWYsIDB4NzgsIDB4NjIsIDB4OTYsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4ZmIsIDB4ODMsIDB4NSwgMHhmYiwgMHgyMSwgMHhmYiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhiYSwgMHg2LCAweGNhLCAweGY0LCAweDUsIDB4N2EsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4ODEsIDB4YjMsIDB4MWIsIDB4ZjcsIDB4MWMsIDB4ZTQsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4ZGUsIDB4NjksIDB4ZDcsIDB4NTUsIDB4YjYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDQsIDB4ZjcsIDB4ZiwgMHg1LCAweDVkLCAweDYsIDB4NGYsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5YiwgMHg2ZSwgMHg2NywgMHg5NCwgMHg2NCwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgzNCwgMHhmYiwgMHhjLCAweGZiLCAweDE1LCAweDNlLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGMxLCAweDVlLCAweDFmLCAweGQ0LCAweGI3LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGY3LCAweDg1LCAweDUsIDB4OGQsIDB4NiwgMHg4YywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg2NywgMHg2NywgMHgxYSwgMHhmYiwgMHgxMywgMHg4MywgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHg2NCwgMHg3NywgMHhhMywgMHhiMiwgMHg4MSwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDdkLCAweGNjLCAweGY4LCAweDJlLCAweDc3LCAweGY3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4MWQsIDB4Y2MsIDB4NTMsIDB4YSwgMHgzLCAweDg5LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDg5LCAweGEsIDB4OGQsIDB4MjgsIDB4YSwgMHg1YiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHgyNiwgMHhhLCAweDMwLCAweDdkLCAweGNjLCAweGY4LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGY3LCAweDAsIDB4OTgsIDB4MWQsIDB4Y2MsIDB4NTMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDcxLCAweGEsIDB4MjcsIDB4MWQsIDB4NmMsIDB4NywgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg5MywgMHg3YywgMHgzOCwgMHhhLCAweGZiLCAweDJjLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDI4LCAweDFkLCAweDMwLCAweDdkLCAweGNjLCAweGY4LCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGY3LCAweDAsIDB4ODMsIDB4MWQsIDB4Y2MsIDB4NTMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDJmLCAweDFkLCAweGZiLCAweDg0LCAweGY4LCAweDcwLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGUsIDB4MzAsIDB4N2QsIDB4Y2MsIDB4ZjgsIDB4N2EsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4Y2MsIDB4ZjcsIDB4MWYsIDB4MjYsIDB4ZjcsIDB4MTMsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTMsIDB4MjksIDB4ZjcsIDB4MWYsIDB4MTMsIDB4ZTQsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MTMsIDB4ZDgsIDB4ZmIsIDB4ODQsIDB4ZjgsIDB4YmEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MWQsIDB4ZjcsIDB4NjYsIDB4MTYsIDB4NmQsIDB4MWQsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2MSwgMHhmNywgMHgyMywgMHhmOCwgMHg5ZiwgMHg3NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDc2LCAweGY3LCAweDRkLCAweDc3LCAweDEyLCAweDliLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4ZSwgMHhmOCwgMHg2NCwgMHhmYiwgMHgyYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHgxMywgMHg4YSwgMHgxMywgMHg0LCAweGY3LCAweDgwLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDQwLCAweDcyLCAweDJmLCAweGEsIDB4NSwgMHgxMywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhiZCwgMHg5YywgMHg4ZCwgMHhhMSwgMHg4ZSwgMHg4LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDRkLCAweDFkLCAweDEzLCAweGZhLCAweDM2LCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmNywgMHgxNCwgMHgyOCwgMHgxZCwgMHg3YywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDc3LCAweDEsIDB4ZDYsIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4MywgMHg4MSwgMHhhLCAweDkwLCAweDFkLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGEwLCAweGIzLCAweDdiLCAweDFlLCAweDdhLCAweDFkLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDU4LCAweGEsIDB4N2MsIDB4MWYsIDB4ODksIDB4ZjcsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTYsIDB4NjksIDB4NiwgMHhhZiwgMHg4NCwgMHg5ZSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHgxYSwgMHhmZCwgMHg0ZCwgMHg5MiwgMHhhLCAweGZiLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIzLCAweGY4LCAweGVjLCAweGY3LCAweDE1LCAweDEyLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU2LCAweGZiLCAweDE1LCAweGY3LCAweDE1LCAweGRjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweGU4LCAweGY3LCAweDgwLCAweDdlLCAweDE1LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDJiLCAweGEsIDB4MTMsIDB4ZDgsIDB4YTIsIDB4ZjcsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4MWQsIDB4NWQsIDB4YSwgMHgxLCAweGQwLCAweDhhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4YSwgMHhlLCAweDlmLCAweDhiLCAweGFhLCAweGY4LCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDFkLCAweDM4LCAweDk2LCAweDFkLCAweGY3LCAweDU5LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZiwgMHhkNywgMHg1LCAweGM4LCAweDcsIDB4ZmIsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHg1LCAweGY3LCAweDZhLCAweDcsIDB4YzcsIDB4YWEsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4OGUsIDB4MWUsIDB4YWUsIDB4ZmIsIDB4ZjEsIDB4NjgsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHg4OCwgMHhiNCwgMHg3ZSwgMHg0OSwgMHgxYSwgMHhmYiwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDNhLCAweDVhLCAweDUsIDB4NGUsIDB4NywgMHhkYywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDI1LCAweDcsIDB4NjIsIDB4NmQsIDB4ODcsIDB4NTMsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYywgMHg1LCAweDhiLCAweGFkLCAweGY5LCAweDE2LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4Y2UsIDB4OGEsIDB4YSwgMHg5YiwgMHgxNiwgMHg5OSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDgxLCAweGFhLCAweGE4LCAweDFmLCAweGY3LCAweGQxLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4ZGIsIDB4NSwgMHhiZCwgMHg3LCAweDJhLCAweDNiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmIsIDB4OGQsIDB4YSwgMHhmYiwgMHg2OCwgMHg3LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDUsIDB4NTksIDB4NywgMHhlNCwgMHhkMywgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDk3LCAweDFkLCAweGY3LCAweGY1LCAweDhiLCAweGE2LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDc4LCAweDc2LCAweGY3LCAweGU2LCAweGFjLCAweGY3LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDczLCAweGFiLCAweDEyLCAweGExLCAweGY3LCAweDNlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGY3LCAweDJmLCAweDEzLCAweDk3LCAweGY4LCAweDZjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDE1LCAweGZiLCAweDE0LCAweDhiLCAweDUyLCAweDIxLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGE3LCAweGY3LCAweGExLCAweGY3LCAweDksIDB4OWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4ZjcsIDB4MzUsIDB4ZWUsIDB4OGIsIDB4NTEsIDB4MzAsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmYsIDB4ZmIsIDB4M2UsIDB4MTUsIDB4ZjcsIDB4YywgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NiwgMHgzMywgMHg5OCwgMHgxZiwgMHhhYywgMHhmNywgMHhlNiwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDIsIDB4NzMsIDB4OGQsIDB4NjUsIDB4ZmIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHg4ZCwgMHg3LCAweDEzLCAweDliLCAweGEzLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGM0LCAweGY3LCAweDQzLCAweDk5LCAweDQyLCAweDJlLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGFmLCAweGY3LCAweDVkLCAweGZjLCAweDMwLCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4NzksIDB4ZmIsIDB4NCwgMHg5MywgMHg3OSwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHg1NywgMHhmYiwgMHg4NiwgMHgyYywgMHhmYiwgMHg3OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhmYiwgMHhmLCAweGY3LCAweDVlLCAweDFmLCAweDEzLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGE3LCAweDkwLCAweGNmLCAweDFiLCAweGY4LCAweDQyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4ZjcsIDB4NjcsIDB4NSwgMHg3MCwgMHg2LCAweDEzLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMzLCAweDQ3LCAweDJjLCAweDdhLCAweDJiLCAweDFiLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGEyLCAweGE0LCAweDFmLCAweGUsIDB4ZDYsIDB4N2QsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4ZDMsIDB4ZjcsIDB4NGYsIDB4YjAsIDB4ZjcsIDB4MzYsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YTEsIDB4ZjcsIDB4MjUsIDB4ZjcsIDB4MWMsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTgsIDB4ZjcsIDB4MTEsIDB4MTMsIDB4N2UsIDB4ZjgsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWUsIDB4MTUsIDB4ZTAsIDB4OGMsIDB4OGIsIDB4ZDgsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YzQsIDB4OGYsIDB4NGUsIDB4MjYsIDB4OGUsIDB4MWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZmIsIDB4OGMsIDB4MTUsIDB4N2EsIDB4OWEsIDB4YTUsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4MWIsIDB4ZjYsIDB4YmUsIDB4ZDQsIDB4YmQsIDB4YWUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4OWIsIDB4NSwgMHg2YSwgMHg2ZSwgMHg2ZSwgMHg2OSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgxLCAweDg3LCAweGY3LCAweGUsIDB4Y2MsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjcsIDB4OTAsIDB4NiwgMHhmNywgMHhlLCAweDg5LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweGZiLCAweDI4LCAweDFiLCAweDRlLCAweDVkLCAweDZmLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDFmLCAweDliLCAweDdiLCAweDZhLCAweGFjLCAweDM4LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE5LCAweDM1LCAweGZiLCAweDIsIDB4ZmIsIDB4MWMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhkOSwgMHhmYiwgMHhjLCAweGY3LCAweDIxLCAweGUyLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDljLCAweDlmLCAweDFmLCAweDQwLCAweGY3LCAweDcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmUsIDB4NGIsIDB4N2MsIDB4NDYsIDB4NTcsIDB4NWUsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZjcsIDB4NjcsIDB4ZjcsIDB4M2UsIDB4YTUsIDB4YmEsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4OTksIDB4NjYsIDB4MmIsIDB4MWUsIDB4ZSwgMHgzMCwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhmOCwgMHg3NiwgMHg3NiwgMHhmNywgMHg0ZCwgMHhhYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg4ZSwgMHhhLCAweDE3LCAweDdjLCAweDFkLCAweDk4LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGMzLCAweDFiLCAweDEzLCAweGZjLCAweDQ3LCAweDFkLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDg1LCAweGEsIDB4ODAsIDB4N2QsIDB4OTAsIDB4OTEsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OTUsIDB4NzEsIDB4NjgsIDB4OTcsIDB4NWEsIDB4NDYsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTksIDB4ZjgsIDB4OTIsIDB4MzUsIDB4YSwgMHhmYiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhhZCwgMHg3ZiwgMHg3NiwgMHhmOCwgMHg1OSwgMHhhYywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhlZiwgMHhmNywgMHgxZSwgMHhlYiwgMHgxMywgMHg3OCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHgxNSwgMHhhNCwgMHg2LCAweDlmLCAweDk1LCAweDkxLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDFiLCAweDkwLCAweDlmLCAweDgyLCAweDgzLCAweGE0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGI4LCAweDg1LCAweDlmLCAweGE0LCAweDg1LCAweGExLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGQ1LCAweGM2LCAweGVhLCAweDFmLCAweGY3LCAweDM4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDc0LCAweGYxLCAweDFhLCAweGFhLCAweGEyLCAweGE1LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGJlLCAweDYwLCAweDQ0LCAweGEwLCAweDFlLCAweGE0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDc1LCAweDYsIDB4ODMsIDB4ODgsIDB4ODcsIDB4N2YsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ODEsIDB4N2IsIDB4OTEsIDB4OTEsIDB4NzcsIDB4MWYsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NzYsIDB4OTAsIDB4NzUsIDB4MWIsIDB4MmYsIDB4NDgsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4MWYsIDB4ZmIsIDB4MmUsIDB4ZjcsIDB4ODIsIDB4OTEsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NmQsIDB4NzYsIDB4NjcsIDB4NTksIDB4ZmIsIDB4MywgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHhhNiwgMHg4NSwgMHgxZSwgMHg2ZiwgMHg2LCAweDEzLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGYsIDB4ZjgsIDB4YywgMHgzNSwgMHhhLCAweGQ2LCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGQzLCAweGY3LCAweDE1LCAweDEyLCAweGY3LCAweDY4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDRjLCAweGY3LCAweDM2LCAweDc5LCAweGY3LCAweDE1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDY5LCAweDFkLCAweDhkLCAweGRlLCAweDFhLCAweGY3LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjcsIDB4NGIsIDB4ZjcsIDB4YzEsIDB4OWYsIDB4YWIsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4YSwgMHhiMCwgMHg4OSwgMHg2NCwgMHgxYSwgMHhmYiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhMCwgMHg1LCAweDQyLCAweDFkLCAweDEzLCAweGY0LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDlkLCAweDJkLCAweDFkLCAweDhjLCAweGEsIDB4ZjcsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhhNywgMHhmOCwgMHhmMiwgMHgzLCAweDM5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTcsIDB4ZjksIDB4NjYsIDB4MzUsIDB4YSwgMHg4NywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHg4MywgMHgxZCwgMHhiMSwgMHhhNSwgMHg4NywgMHhhLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDFkLCAweDYxLCAweDhiLCAweDYyLCAweDhjLCAweGY3LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDI3LCAweDE4LCAweGE1LCAweGZjLCAweDcsIDB4NywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMiwgMHg1LCAweGE1LCAweDYsIDB4YTUsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg4YiwgMHhmNywgMHhhLCAweDhjLCAweGZiLCAweDdlLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDE4LCAweGY3LCAweDJmLCAweGY4LCAweDg4LCAweDM1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWEsIDB4NzYsIDB4ZjgsIDB4YjksIDB4YjksIDB4ZjcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWYsIDB4NmQsIDB4YTksIDB4MTIsIDB4OGIsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHhmNywgMHgxZiwgMHgxMywgMHhkYywgMHhkNSwgMHhmOCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg4LCAweDYsIDB4N2UsIDB4ZmMsIDB4MmEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg4OCwgMHg2NSwgMHg3NCwgMHg3MywgMHgxYiwgMHg3ZiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg5MiwgMHgxZiwgMHg5OCwgMHg5ZCwgMHg4ZCwgMHhhNSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHg3MCwgMHg5YSwgMHg3MCwgMHg3NiwgMHg2YSwgMHg3ZSwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhhMCwgMHg1ZiwgMHhkMywgMHgxZSwgMHgxMywgMHg1NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhjNCwgMHhmNywgMHgyMywgMHhmNywgMHgyNSwgMHg5ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhlMiwgMHg4YSwgMHhjNiwgMHg5MywgMHhmNywgMHg3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZSwgMHhiOSwgMHhmYiwgMHhlLCAweGU1LCAweDYsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZjcsIDB4MywgMHhjYywgMHg5ZSwgMHg4ZSwgMHg3ZSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4NSwgMHg3OSwgMHg3NywgMHg3NiwgMHgxYSwgMHgxMywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhhNSwgMHg3OCwgMHhhOCwgMHhhOCwgMHhhMiwgMHhhNywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgxMywgMHg2MCwgMHg5YSwgMHg3ZCwgMHhjYiwgMHgyYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg3MywgMHhmYiwgMHg1NCwgMHg0MSwgMHg3ZiwgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweDYsIDB4ZSwgMHhmYiwgMHhjZSwgMHhmOCwgMHhiOSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg4OSwgMHhmOCwgMHhhNCwgMHg2MCwgMHhhLCAweGZiLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGI5LCAweDgzLCAweDFkLCAweGY3LCAweGMsIDB4ZjgsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4YSwgMHg1MSwgMHg2LCAweGZiLCAweDMsIDB4MjgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhlZSwgMHg1LCAweDUyLCAweDYsIDB4ZSwgMHhmYiwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhhNCwgMHhkNywgMHgzZiwgMHhmNywgMHgzNywgMHgxMiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg5YSwgMHhmOSwgMHg0NywgMHgxNSwgMHgyMSwgMHhjNSwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhlYywgMHhjMiwgMHhjYSwgMHhlZiwgMHgxZSwgMHg1ZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDgwLCAweDZjLCAweDgzLCAweDdjLCAweDUzLCAweDM3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDQwLCAweDMwLCAweDdmLCAweGM2LCAweGE3LCAweDg2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4Y2UsIDB4ZjgsIDB4YWQsIDB4ZjcsIDB4MTYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHhmNywgMHgxMywgMHgzLCAweGYyLCAweGY4LCAweGVmLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGE2LCAweDZlLCAweGIwLCAweGFlLCAweGE3LCAweGE4LCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDZmLCAweGE2LCAweDY4LCAweDY3LCAweDZmLCAweDZmLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4ZmIsIDB4Y2UsIDB4ZjgsIDB4YTMsIDB4ZjcsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OSwgMHhmNywgMHg5LCAweGZiLCAweDksIDB4ZjcsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YzcsIDB4ZjcsIDB4M2EsIDB4ZmIsIDB4OSwgMHhmNywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDksIDB4ZjcsIDB4MzgsIDB4MTMsIDB4OTAsIDB4YzcsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHgyNCwgMHhjNSwgMHhiYiwgMHhiYSwgMHhjNiwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhiYywgMHg1MSwgMHgxZiwgMHgxMywgMHg5MCwgMHg1MSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg1MCwgMHgxZiwgMHgxMywgMHg0OCwgMHhiYywgMHgxNiwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg3MSwgMHhhYiwgMHhhYiwgMHhhNSwgMHhhNSwgMHhhYiwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhhNiwgMHg2YiwgMHg2YiwgMHg3MCwgMHg3MCwgMHg2YiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweGNlLCAweGZiLCAweDQxLCAweGQwLCAweGY3LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4ZTUsIDB4ZGYsIDB4MywgMHhmNywgMHgzMSwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1YiwgMHg1ZiwgMHg3OCwgMHg1ZSwgMHg1ZSwgMHgxYSwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHg3ZCwgMHhiMywgMHhhZCwgMHhjOSwgMHhhNiwgMHhiYiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3NSwgMHhhMSwgMHg1LCAweDdkLCAweDc1LCAweDdlLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDFiLCAweDYzLCAweDcyLCAweDlkLCAweGJhLCAweGE0LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDhmLCAweDllLCAweDFmLCAweGUsIDB4ZmIsIDB4Y2UsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4ZDksIDB4NmUsIDB4ZDksIDB4MTIsIDB4MTMsIDB4ODAsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YjcsIDB4MTUsIDB4YjUsIDB4NiwgMHgxMywgMHg0MCwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg5YiwgMHhhYSwgMHhhYiwgMHgxYiwgMHhiNSwgMHhhNCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhhMywgMHgxZiwgMHg4MCwgMHg5ZSwgMHg5ZCwgMHg4MiwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0MiwgMHhhLCAweDc0LCAweDc0LCAweDkyLCAweDk0LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk5LCAweDY4LCAweDZjLCAweDllLCAweDdhLCAweDFiLCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDJmLCAweDY4LCAweDg0LCAweDFmLCAweGUsIDB4ZmIsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YTQsIDB4ZjcsIDB4NGQsIDB4MSwgMHg3ZSwgMHhmOCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjMCwgMHg2LCAweGY3LCAweDI1LCAweDIzLCAweGEsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzEsIDB4MTUsIDB4YzEsIDB4MjIsIDB4YSwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGU1LCAweDEsIDB4ZjcsIDB4NDksIDB4NCwgMHhmOCwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhmYywgMHg4OCwgMHg2LCAweGUsIDB4ZjcsIDB4ZjUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4ZTUsIDB4MSwgMHhmNywgMHg0OSwgMHg0LCAweGZhLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGZlLCAweDdjLCAweDYsIDB4ZSwgMHhmYiwgMHhjZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDgzLCAweGEsIDB4ZDEsIDB4Y2YsIDB4NDcsIDB4ZjcsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4ZjcsIDB4OGIsIDB4ZjksIDB4MzEsIDB4MTUsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhNSwgMHg0ZCwgMHhkNCwgMHhiOSwgMHhiMiwgMHhhOSwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHg1ZCwgMHg5YiwgMHg2ZiwgMHgxZSwgMHgxMywgMHhlMCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4ZmIsIDB4Y2UsIDB4ZjgsIDB4ZCwgMHg3YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweGY3LCAweGY4LCAweDE1LCAweDQ3LCAweGEsIDB4ZmIsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzMsIDB4N2IsIDB4YSwgMHhlMSwgMHhmYiwgMHgzMiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg3NSwgMHg1LCAweDQ3LCAweGEsIDB4ZjcsIDB4ZjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4ZjcsIDB4NDIsIDB4NzcsIDB4MTIsIDB4YWIsIDB4Y2YsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGMsIDB4ZTEsIDB4Y2YsIDB4NDcsIDB4ZjcsIDB4NGMsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZjcsIDB4NjUsIDB4ZjksIDB4MzEsIDB4MTUsIDB4NTcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlNCwgMHg2OCwgMHhhLCAweGY3LCAweGEyLCAweDE2LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4ZTgsIDB4NjgsIDB4YSwgMHhlLCAweGY4LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MWQsIDB4ZjcsIDB4YzIsIDB4ZjcsIDB4ZjgsIDB4MTUsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhlNCwgMHgzZiwgMHgxZCwgMHhmYiwgMHg5NywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1ZiwgMHhhLCAweDEzLCAweGQ4LCAweDNmLCAweDFkLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzMsIDB4NjgsIDB4MWQsIDB4ZjcsIDB4YjcsIDB4ZmIsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NTYsIDB4YSwgMHgxMywgMHhlNCwgMHgzZiwgMHgxZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHgxNiwgMHg1NiwgMHhhLCAweDEzLCAweGQ4LCAweDNmLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4NSwgMHg3NiwgMHhmOCwgMHhhZSwgMHhmNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHg3NywgMHgxMiwgMHhmNywgMHg1NiwgMHhmNywgMHg1LCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDEzLCAweGU4LCAweGY3LCAweDg0LCAweGZiLCAweDFhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDYsIDB4OTAsIDB4ZjcsIDB4MmUsIDB4OTAsIDB4ZjcsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4ZjYsIDB4OTEsIDB4OTgsIDB4MTksIDB4OGUsIDB4OTEsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4OGQsIDB4ZjcsIDB4MjUsIDB4OCwgMHhhOCwgMHhhMCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg5ZCwgMHgxZiwgMHg3ZiwgMHhhNCwgMHg5ZiwgMHg3ZCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhhYSwgMHg5ZiwgMHhhOCwgMHhhNywgMHhhNCwgMHg3YywgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg3MSwgMHg3OSwgMHg3ZCwgMHg3ZiwgMHg2ZiwgMHgxZiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg3NiwgMHg4NCwgMHg2ZCwgMHg4NywgMHg4YSwgMHhiMywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg5MywgMHg5ZiwgMHg4LCAweDEzLCAweGYwLCAweDk5LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDliLCAweGIxLCAweDFhLCAweGJiLCAweDVmLCAweDhmLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDdkLCAweDZhLCAweDcxLCAweDY3LCAweGEwLCAweDg0LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDFlLCAweDEzLCAweGU4LCAweDkxLCAweDc4LCAweDhmLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDFhLCAweDZkLCAweDhkLCAweDc4LCAweDkyLCAweDdiLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4OTgsIDB4NzAsIDB4N2MsIDB4OWEsIDB4NmIsIDB4MWIsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NzIsIDB4NzIsIDB4NmYsIDB4OWYsIDB4NmUsIDB4YWEsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OWEsIDB4OTgsIDB4YTgsIDB4MWYsIDB4OWEsIDB4OTIsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4YTksIDB4OGQsIDB4OCwgMHhmYiwgMHgyNiwgMHg1MywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg4NSwgMHgxZSwgMHg4ZSwgMHg4MywgMHhiNywgMHhmYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweGZiLCAweDE0LCAweDgsIDB4ZSwgMHhmNywgMHg4MywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg4NywgMHg2MCwgMHg2MywgMHg1NSwgMHg2MywgMHgxYSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg2ZiwgMHhhYywgMHhhYywgMHhhMSwgMHhhNywgMHhhYiwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHhjMSwgMHg4NywgMHhiNiwgMHgxZSwgMHg2NywgMHgxZCwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhhMCwgMHhhOSwgMHhhNywgMHg5ZSwgMHg4LCAweDVjLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweGI5LCAweGJiLCAweDFhLCAweGJiLCAweDhmLCAweGI5LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDFlLCAweDZmLCAweDllLCAweDc2LCAweGE5LCAweDg4LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NjcsIDB4MWQsIDB4OGYsIDB4YjYsIDB4YjMsIDB4YzEsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YWIsIDB4NzUsIDB4YTcsIDB4NmEsIDB4NmEsIDB4NzUsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4NjMsIDB4YjMsIDB4NTUsIDB4OGYsIDB4NjAsIDB4MWUsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg4OCwgMHg2OSwgMHg3NiwgMHg2ZCwgMHg2ZiwgMHg3OCwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDY3LCAweDhmLCAweDVkLCAweDViLCAweDFhLCAweDViLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDVjLCAweDY3LCAweDFlLCAweGE3LCAweDc4LCAweGEwLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDY5LCAweDgsIDB4NjcsIDB4YSwgMHhlLCAweGZiLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZmLCAweDc2LCAweGY3LCAweGFjLCAweDc3LCAweDEsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTYsIDB4MTUsIDB4M2MsIDB4Y2IsIDB4NGUsIDB4ZDcsIDB4ZGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4YzgsIDB4ZGEsIDB4ZDgsIDB4NGUsIDB4Y2EsIDB4M2MsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4NGMsIDB4M2UsIDB4MWUsIDB4ZSwgMHhmNywgMHhmNSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZCwgMHgxLCAweGRkLCAweGY3LCAweDNkLCAweGY3LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNkLCAweGY3LCAweDM4LCAweGY3LCAweDNkLCAweDE0LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGQ0LCAweDE1LCAweDRhLCAweGEsIDB4ZjcsIDB4ZTEsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4YSwgMHhmNywgMHhlMSwgMHgxNiwgMHg0YSwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZjUsIDB4N2QsIDB4YTMsIDB4ODcsIDB4NzYsIDB4ZjcsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4OGEsIDB4NzYsIDB4YjgsIDB4NzYsIDB4ZjcsIDB4YzgsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NzcsIDB4MTIsIDB4YTMsIDB4OTcsIDB4YSwgMHhhMSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGFmLCAweDk3LCAweGEsIDB4MTMsIDB4YWQsIDB4ZjgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWMsIDB4ZjcsIDB4MzgsIDB4MTUsIDB4MzAsIDB4MWQsIDB4ZjcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MzAsIDB4MWQsIDB4MTMsIDB4OWQsIDB4ZjgsIDB4ZmQsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTIsIDB4MTUsIDB4MzAsIDB4MWQsIDB4MTMsIDB4NmIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NzYsIDB4MWQsIDB4ZmIsIDB4Y2UsIDB4ODIsIDB4YSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGY3LCAweDc1LCAweDg4LCAweGEsIDB4ODEsIDB4OTUsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4OTYsIDB4MWIsIDB4OTEsIDB4OTAsIDB4NzUsIDB4YSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg4ZSwgMHg4NSwgMHg4MCwgMHg3OSwgMHg3ZSwgMHg4MiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHg1ZiwgMHhmYiwgMHgzOCwgMHg1LCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ODIsIDB4YSwgMHgxLCAweGY3LCAweDI2LCAweDkxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4OTEsIDB4ODgsIDB4OTEsIDB4OTYsIDB4OWQsIDB4OTksIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4NTksIDB4YSwgMHg5NSwgMHg4MSwgMHg3YiwgMHg5OCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg4NCwgMHg4NywgMHg4NiwgMHg3ZSwgMHg2ZCwgMHhlNiwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg2MiwgMHgxZiwgMHhlLCAweGZjLCAweDc0LCAweDk0LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDUwLCAweDc3LCAweDEsIDB4ZmIsIDB4MiwgMHg3ZiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0YiwgMHhmOSwgMHg1MCwgMHg1LCAweDUzLCAweDYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4ZmQsIDB4NTAsIDB4NSwgMHhlLCAweGQ2LCAweDhiLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNlLCAweGIzLCAweGU0LCAweGIzLCAweGUzLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGFiLCAweDEsIDB4ZjYsIDB4ZjcsIDB4M2IsIDB4MywgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5YSwgMHgxNSwgMHhlZCwgMHg2LCAweGZiLCAweDJhLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweGZiLCAweDQsIDB4ZjcsIDB4MTUsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmMywgMHhjMCwgMHhlMiwgMHhjNSwgMHgxZiwgMHg3NywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDY0LCAweDUxLCAweDRjLCAweDc4LCAweDUxLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MmMsIDB4Y2EsIDB4ZjYsIDB4ODQsIDB4MWYsIDB4ZjcsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg5OSwgMHhiMywgMHg1LCAweGZiLCAweGM3LCAweDYsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4OGEsIDB4OWEsIDB4OWEsIDB4MWEsIDB4OTksIDB4OGIsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4OWEsIDB4MWUsIDB4ZjcsIDB4ZDksIDB4NiwgMHg5YSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweGUzLCAweDYsIDB4ZjcsIDB4MjAsIDB4OTgsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4ZjUsIDB4MWIsIDB4ZjcsIDB4MTEsIDB4YzgsIDB4NGEsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4MWYsIDB4YTUsIDB4ZjcsIDB4MjYsIDB4NiwgMHhhNCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhhMCwgMHgyMywgMHgxYiwgMHhmYiwgMHgxOCwgMHhmYiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhmYiwgMHg4MSwgMHg0ZCwgMHgxZiwgMHgzNCwgMHg2LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDUsIDB4ZWIsIDB4NiwgMHg4YSwgMHg3ZCwgMHg4YSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHgxYSwgMHg3YywgMHg4YiwgMHg3YywgMHg4YywgMHg3YiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHg2LCAweGUsIDB4ZjcsIDB4ZjUsIDB4ZjcsIDB4YTQsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4NzYsIDB4ZjgsIDB4OCwgMHhhYywgMHg3MywgMHhhMywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMiwgMHhlOCwgMHhmNywgMHg4YSwgMHhhOCwgMHhmNywgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHgxMywgMHg5ZSwgMHhmNywgMHgwLCAweGY3LCAweGE0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU2LCAweGFjLCAweDYsIDB4NTcsIDB4OGYsIDB4OGMsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MWEsIDB4ZjcsIDB4YmYsIDB4YjksIDB4NywgMHhiMywgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg2OCwgMHg5MywgMHgxZiwgMHhhMiwgMHhlMywgMHhmYiwgMHhmZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhhMiwgMHg2LCAweGFlLCAweDkzLCAweDljLCAweGE4LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGI5LCAweGZiLCAweGJmLCAweDYsIDB4NjMsIDB4OGMsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4ODcsIDB4MWUsIDB4ZjcsIDB4ZTUsIDB4NmEsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4YWMsIDB4NiwgMHg1YywgMHg4ZSwgMHg4NiwgMHg5MSwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmNywgMHg1YiwgMHg4ZCwgMHg3LCAweDEzLCAweDZlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGZiLCAweGI4LCAweDUsIDB4OTgsIDB4NiwgMHhmNywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiYSwgMHg1LCAweDhkLCAweGZiLCAweDY4LCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NjMsIDB4OGQsIDB4ODcsIDB4NTcsIDB4ODcsIDB4MWUsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTYsIDB4YWMsIDB4NywgMHg1NywgMHg4ZiwgMHg4YywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHgxYSwgMHhmNywgMHg4NiwgMHg3LCAweGFiLCAweDkyLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDhkLCAweDFlLCAweGFjLCAweGZiLCAweGEsIDB4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmYiwgMHhiNSwgMHhmYiwgMHgyMiwgMHhmNywgMHhiNSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFmLCAweDZhLCAweDYsIDB4YTgsIDB4YTYsIDB4ODEsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4MWYsIDB4ZmIsIDB4ODEsIDB4NywgMHg1OSwgMHg4NiwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg4OCwgMHgxZSwgMHhlLCAweDNlLCAweGY3LCAweDY1LCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YWMsIDB4ZjcsIDB4NjUsIDB4MTUsIDB4ZjgsIDB4OGMsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4OGMsIDB4NiwgMHhlLCAweDMwLCAweDhiLCAweGFkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGI3LCAweGY3LCAweDVjLCAweGE5LCAweDEyLCAweGQyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDFlLCAweGY3LCAweDEwLCAweGZiLCAweDEwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGY4LCAweDc1LCAweDFkLCAweGYzLCAweDcsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4N2UsIDB4NzYsIDB4MWYsIDB4ZmIsIDB4YjgsIDB4NywgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg2ZSwgMHg1ZCwgMHg4NywgMHg2YSwgMHhhLCAweDEzLCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDhjLCAweDgwLCAweDlmLCAweGFmLCAweDFhLCAweGY4LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ODYsIDB4NTYsIDB4NDksIDB4ODQsIDB4NTcsIDB4MWIsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgxNSwgMHg4OCwgMHhkMiwgMHhlMCwgMHhiNywgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg4MiwgMHgxZSwgMHg4NywgMHg4MiwgMHg3ZiwgMHg3MywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhiYywgMHg4NCwgMHg5OSwgMHgxZSwgMHgxMywgMHhmOCwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHg4YywgMHhjNywgMHhkZiwgMHhmYiwgMHgzYSwgMHg5MiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2YywgMHg4NywgMHhmYiwgMHgzOCwgMHg0OSwgMHg4YSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4MzAsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4MzUsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTksIDB4YWMsIDB4OGEsIDB4NzcsIDB4MTIsIDB4ZDIsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhkYywgMHg3NSwgMHgxZCwgMHhmNywgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHg3LCAweDc4LCAweDhhLCAweDZiLCAweDVkLCAweDg1LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NTksIDB4OGYsIDB4OGMsIDB4YjYsIDB4OTUsIDB4MWEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4NzgsIDB4NywgMHg1YywgMHg2ZCwgMHg1LCAweDEzLCAweGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDQ3LCAweDRlLCAweDhiLCAweDg3LCAweDFiLCAweGZiLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweGZiLCAweDFhLCAweDJiLCAweDg5LCAweDdhLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4ZjgsIDB4M2YsIDB4MTUsIDB4YzksIDB4NywgMHhjNiwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHhkZCwgMHhhZSwgMHg5YywgMHg4NCwgMHg3YiwgMHgxZSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg3OSwgMHg3ZCwgMHgxYSwgMHg3OCwgMHg5NywgMHg3YywgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHgxZSwgMHgyOSwgMHg3LCAweGUsIDB4NzgsIDB4OWUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4OTcsIDB4ZjcsIDB4NWYsIDB4OWEsIDB4NiwgMHhmNywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg3LCAweDFlLCAweGEwLCAweDM5LCAweDYzLCAweGZmLCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHhiNSwgMHhhLCAweGY3LCAweDFkLCAweGIsIDB4OGMsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY4LCAweDg4LCAweDE0LCAweGY5LCAweDFiLCAweDE1LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDAsIDB4N2EsIDB4MiwgMHgwLCAweDEsIDB4MCwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDZlLCAweDAsIDB4NzQsIDB4MCwgMHg4MSwgMHgwLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YjIsIDB4MCwgMHhiNSwgMHgwLCAweGNmLCAweDAsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhlMywgMHgwLCAweGVjLCAweDAsIDB4ZmEsIDB4MSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZiwgMHgxLCAweDFhLCAweDEsIDB4NDAsIDB4MSwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDY2LCAweDEsIDB4NmUsIDB4MSwgMHg3MywgMHgxLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4OTIsIDB4MSwgMHhhNSwgMHgxLCAweGRjLCAweDEsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgyMSwgMHgyLCAweDJjLCAweDIsIDB4MzgsIDB4MiwgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDRmLCAweDIsIDB4NWYsIDB4MiwgMHg4OCwgMHgyLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4YmYsIDB4MiwgMHhjNCwgMHgyLCAweGNkLCAweDIsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhlMCwgMHgyLCAweGY0LCAweDIsIDB4ZmIsIDB4MywgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZSwgMHgzLCAweDIwLCAweDMsIDB4MjgsIDB4MywgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDQ3LCAweDMsIDB4NGMsIDB4MywgMHg1OCwgMHgzLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4NmYsIDB4MywgMHg3OCwgMHgzLCAweDdmLCAweDMsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg5ZiwgMHgzLCAweGFjLCAweDMsIDB4YmIsIDB4MywgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGUyLCAweDMsIDB4ZTcsIDB4MywgMHhmNCwgMHgzLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MSwgMHg0LCAweDgsIDB4NCwgMHgxMiwgMHg0LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MWUsIDB4NCwgMHgyNywgMHg0LCAweDMwLCAweDQsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgzYywgMHg0LCAweDQ3LCAweDQsIDB4NWIsIDB4NCwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDcxLCAweDQsIDB4NzgsIDB4NCwgMHg3ZiwgMHg0LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4OWEsIDB4NCwgMHhhYywgMHg0LCAweGIyLCAweDQsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhjMSwgMHg0LCAweGNiLCAweDQsIDB4ZGIsIDB4NCwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGU4LCAweDQsIDB4ZjEsIDB4NCwgMHhmNiwgMHg0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OSwgMHg1LCAweDE3LCAweDUsIDB4MWYsIDB4NSwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDM5LCAweDUsIDB4M2UsIDB4NSwgMHg0MiwgMHg1LCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NWEsIDB4NSwgMHg2MCwgMHg1LCAweDY2LCAweDUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg3YywgMHg1LCAweDg3LCAweDUsIDB4OTIsIDB4NSwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDllLCAweDUsIDB4YTIsIDB4NSwgMHhhNSwgMHg1LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YjksIDB4NSwgMHhjMywgMHg1LCAweGNkLCAweDUsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkZSwgMHg1LCAweGU1LCAweDUsIDB4ZWUsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDAsIDB4NiwgMHg5LCAweDYsIDB4ZiwgMHg2LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MTksIDB4OWIsIDB4OWIsIDB4YWEsIDB4YTcsIDB4ZDMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzUsIDB4NiwgMHg5OSwgMHg2YiwgMHhhYiwgMHg0YiwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2YSwgMHg3OSwgMHg4YSwgMHg0ZCwgMHg4NiwgMHgxZSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkOCwgMHhhZSwgMHg3LCAweDViLCAweDg5LCAweDg3LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGFhLCAweGZiLCAweDlmLCAweGY4LCAweGZjLCAweDE4LCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4OGYsIDB4ZmMsIDB4ZjgsIDB4YiwgMHgxNSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHhhNSwgMHg5NiwgMHgzNywgMHgxYSwgMHhmYiwgMHhlNSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRkLCAweGY3LCAweDMwLCAweDUwLCAweGY3LCAweDFjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGQyLCAweGRkLCAweGY3LCAweDM2LCAweDFlLCAweGY3LCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4Y2QsIDB4YTIsIDB4OTAsIDB4NDMsIDB4YSwgMHg3ZCwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmYiwgMHhlNSwgMHg3LCAweDRiLCAweDdlLCAweGZiLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ0LCAweGZiLCAweDI0LCAweDk2LCAweGY3LCAweDFlLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweGU1LCAweDcsIDB4ZTMsIDB4YWEsIDB4N2YsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4MWUsIDB4YWUsIDB4ZmIsIDB4ZTYsIDB4NywgMHhiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjIsIDB4MjMsIDB4YSwgMHhiLCAweGUzLCAweDUsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4OWIsIDB4OTUsIDB4YTcsIDB4MWEsIDB4YWYsIDB4NmMsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiLCAweDQ0LCAweDFkLCAweDI2LCAweDFkLCAweGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZjcsIDB4NzksIDB4NzgsIDB4MWQsIDB4ZWUsIDB4ZDUsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4NTAsIDB4NjQsIDB4YSwgMHgzNiwgMHg0NiwgMHgzYiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHhmNywgMHgwLCAweDFlLCAweGZiLCAweDI3LCAweDE2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGUyLCAweGZiLCAweDUsIDB4NzAsIDB4YSwgMHhmNywgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGEsIDB4ZjQsIDB4NzAsIDB4MWQsIDB4ZmIsIDB4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxZSwgMHhiLCAweDI0LCAweDFkLCAweGUsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDdmLCAweDFkLCAweDlmLCAweDE2LCAweGY3LCAweGYyLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MzQsIDB4MWQsIDB4ZmIsIDB4ZjIsIDB4NjgsIDB4NywgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDRkLCAweDY0LCAweDg3LCAweDU1LCAweDg2LCAweDFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4MWQsIDB4MjUsIDB4MWQsIDB4YiwgMHg1NiwgMHgxZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHgzMSwgMHg1LCAweDk4LCAweDgwLCAweDc3LCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDFiLCAweDY1LCAweGIsIDB4MjMsIDB4MWQsIDB4YTEsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4ODMsIDB4OTUsIDB4MWUsIDB4YiwgMHgyZiwgMHhhLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDljLCAweDhkLCAweGExLCAweDhlLCAweDE5LCAweDRkLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGEsIDB4YiwgMHg5MywgMHg3OSwgMHg4MSwgMHg3OCwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg3NCwgMHgxZSwgMHhiLCAweDJjLCAweDFkLCAweGZiLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NWIsIDB4N2EsIDB4OGIsIDB4NjcsIDB4ODIsIDB4MWUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGM0LCAweDYsIDB4ZmIsIDB4ZiwgMHhmNywgMHg0NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDYsIDB4YiwgMHg3MiwgMHg0ZiwgMHg2OSwgMHgxYiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg5NywgMHg5MCwgMHgxZiwgMHg4ZiwgMHg4ZSwgMHg5MCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg5ZCwgMHg4MCwgMHhhYywgMHg1ZSwgMHg0ZiwgMHg4NSwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg2YiwgMHhhNiwgMHg1ZCwgMHhjYywgMHhlOSwgMHhhMCwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHhiZCwgMHgxZSwgMHhmNywgMHgyOSwgMHhmOCwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDQ4LCAweGEsIDB4ZmIsIDB4NDQsIDB4NzgsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgzYywgMHgxZCwgMHhmNywgMHgyNSwgMHg1ZSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDVlLCAweDFkLCAweGZiLCAweDFkLCAweGZiLCAweDZlLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4N2MsIDB4YTAsIDB4NSwgMHg2YywgMHg2YywgMHg4MCwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHgxYSwgMHhmNywgMHg5OSwgMHg3LCAweGU5LCAweGIsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg1ZCwgMHgxZCwgMHgzLCAweDI1LCAweGEsIDB4YiwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDJkLCAweGEsIDB4YiwgMHhmYiwgMHg3LCAweDMwLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI4LCAweGZiLCAweDNmLCAweGYxLCAweDQxLCAweGYwLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGFiLCAweGU4LCAweGM4LCAweGIsIDB4NTIsIDB4YSwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDQsIDB4MjgsIDB4ZmIsIDB4NCwgMHhlZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDYsIDB4ZSwgMHgzYywgMHhmYiwgMHg3NywgMHg1LCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYzLCAweDgwLCAweDliLCAweDk1LCAweDFhLCAweGEzLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGE1LCAweDhkLCAweDQ4LCAweDFkLCAweGIsIDB4ZjgsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4YjIsIDB4NSwgMHhhNywgMHhmOCwgMHhjZSwgMHg2LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGFiLCAweGQzLCAweDk0LCAweDFlLCAweGFlLCAweGZiLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDcsIDB4ZGMsIDB4ODUsIDB4OTcsIDB4NzQsIDB4NGYsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YzMsIDB4ODksIDB4NywgMHhmYiwgMHhlZiwgMHhmOCwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDY3LCAweDcyLCAweDYsIDB4OTgsIDB4OWIsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4YzMsIDB4MWYsIDB4ZmMsIDB4NjQsIDB4NywgMHg0OSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg0ZiwgMHg4NCwgMHgxZSwgMHhiLCAweDYzLCAweDFhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDcsIDB4NDQsIDB4YWQsIDB4NGEsIDB4ZjEsIDB4Y2UsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4YTQsIDB4YTgsIDB4MWUsIDB4YiwgMHhhNywgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHg2LCAweGE1LCAweGY3LCAweDg1LCAweDUsIDB4NjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHhmYiwgMHg2NiwgMHgyOSwgMHg4YywgMHhmYiwgMHg3MywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmLCAweGY5LCAweDUsIDB4MTgsIDB4OWIsIDB4ZmMsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg3NiwgMHhmYiwgMHg2MiwgMHg1LCAweGIxLCAweDYsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4OWQsIDB4ZGQsIDB4ZDYsIDB4YTIsIDB4YWMsIDB4OTUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZjcsIDB4M2QsIDB4OTAsIDB4ZmMsIDB4MTIsIDB4ZmQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhiLCAweGY3LCAweDVmLCAweGFlLCAweDYsIDB4NjksIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4OGUsIDB4YjEsIDB4MWEsIDB4YiwgMHg5YiwgMHhiNiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhkNSwgMHg4NSwgMHg1NSwgMHg1OCwgMHgxZSwgMHg1MywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjgsIDB4ZGQsIDB4NiwgMHhiMywgMHhmNywgMHg2NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDYsIDB4ZmIsIDB4MmIsIDB4NGMsIDB4MjUsIDB4YiwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMiwgMHgxYSwgMHhiZiwgMHg2ZSwgMHhjOSwgMHg0MiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGEsIDB4ZjcsIDB4MCwgMHg5OCwgMHgxZCwgMHhkMCwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDliLCAweDE2LCAweDk5LCAweGEsIDB4MmMsIDB4MWQsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhlZSwgMHgxNSwgMHg3MiwgMHg5ZiwgMHg2MywgMHhiNiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhhOCwgMHhhZSwgMHhhZiwgMHg2ZSwgMHhhOSwgMHg2OCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg2MywgMHg3MiwgMHgxZSwgMHhmNywgMHg2NiwgMHgxNiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg2MywgMHhiNiwgMHhiMCwgMHhhNywgMHhhOCwgMHhhZSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhhOSwgMHg2OCwgMHg2MSwgMHg3NywgMHg2MywgMHg3MiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDE1LCAweGJjLCAweDdiLCAweGRjLCAweDcyLCAweDNiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDZhLCAweDdhLCAweDZiLCAweDc2LCAweDdjLCAweDliLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDFlLCAweDk5LCAweDdiLCAweDc4LCAweDk5LCAweDcxLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDg1LCAweDc4LCAweDdkLCAweDc3LCAweDFhLCAweDU1LCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDk0LCAweGY3LCAweDksIDB4ZGEsIDB4ZDQsIDB4ZGYsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxNiwgMHhmNywgMHg4NSwgMHhhZCwgMHg2LCAweDU5LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDhjLCAweDU0LCAweDZmLCAweDFlLCAweDRmLCAweGEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhhLCAweDU0LCAweDFkLCAweGIsIDB4YzIsIDB4OTMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4MWQsIDB4ZTEsIDB4ODcsIDB4OTcsIDB4YiwgMHhlNCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhhZSwgMHg5NCwgMHgxZiwgMHg2MCwgMHg2LCAweGIsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4NDUsIDB4MTYsIDB4ZmIsIDB4NjYsIDB4ZjcsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg4MCwgMHg3LCAweGZiLCAweDM4LCAweDRhLCAweDUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg5MywgMHhhMSwgMHhhMSwgMHg5MiwgMHg5NSwgMHgxYiwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg3MSwgMHg3YywgMHgxZiwgMHhiLCAweDVmLCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4M2YsIDB4MWQsIDB4ZSwgMHhmNywgMHg0NSwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGY3LCAweGU0LCAweDc5LCAweDFkLCAweGY3LCAweDQ0LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGIsIDB4OWIsIDB4MTYsIDB4MzMsIDB4YSwgMHhiLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDY0LCAweGJiLCAweGJhLCAweGIxLCAweGIxLCAweGJiLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweGIwLCAweDVjLCAweDViLCAweDY3LCAweDY1LCAweDVlLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YjksIDB4ODgsIDB4YmEsIDB4ODksIDB4NDksIDB4N2UsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDU5LCAweGEsIDB4OTQsIDB4ODEsIDB4N2IsIDB4OTksIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ODUsIDB4ODYsIDB4ODcsIDB4N2QsIDB4NmQsIDB4ZTYsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NjIsIDB4MWYsIDB4YiwgMHhmNywgMHgzOCwgMHhmNywgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgxZSwgMHhhZCwgMHhhMSwgMHhiMCwgMHhkYiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDFkLCAweGY3LCAweDQsIDB4YiwgMHhmYiwgMHg3YywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDdkLCAweDdhLCAweDZhLCAweDg4LCAweDZhLCAweGEsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3NiwgMHhmNywgMHhiYiwgMHhmNywgMHg1NCwgMHg2YiwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDlmLCAweDhiLCAweGFhLCAweGY3LCAweGJlLCAweGFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDc2LCAweGM1LCAweDc2LCAweGY3LCAweDE2LCAweGFkLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZTcsIDB4NiwgMHhmNywgMHhmLCAweGY3LCAweDQ0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmNywgMHgxZiwgMHhmNywgMHgxZSwgMHhmNywgMHgxZiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDFkLCAweGY3LCAweDM2LCAweGIyLCAweGIsIDB4ZmIsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWEsIDB4ZmIsIDB4MmEsIDB4ZmIsIDB4MzEsIDB4ZmIsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZDIsIDB4MTYsIDB4ZjcsIDB4MzksIDB4ZjcsIDB4YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHgzMSwgMHhmNywgMHgzMSwgMHhmNywgMHhiLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NzUsIDB4NSwgMHg0MywgMHgxZCwgMHg2ZSwgMHg1NywgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHg3YSwgMHhhNywgMHgxZSwgMHhiLCAweDViLCAweGEsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4ZDQsIDB4YjksIDB4YWYsIDB4YTksIDB4YmYsIDB4Y2EsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NmYsIDB4MWUsIDB4YiwgMHgxYSwgMHhmNywgMHgzNCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGFkLCAweGE3LCAweDcwLCAweGMzLCAweDFiLCAweGYxLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGY3LCAweDM5LCAweGY3LCAweDM2LCAweDI4LCAweGQ5LCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweDZkLCAweDVlLCAweDZhLCAweGIsIDB4MWUsIDB4ZjcsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzgsIDB4NSwgMHg4ZiwgMHg3LCAweGZiLCAweDYyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDUsIDB4YiwgMHgxLCAweDVjLCAweDFkLCAweDMsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhhMSwgMHg1LCAweDU2LCAweDZkLCAweGZiLCAweDUsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4MWEsIDB4NTcsIDB4YiwgMHhmYiwgMHg5NiwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhiLCAweGZjLCAweDUsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YiwgMHhmNywgMHg2NiwgMHhmNywgMHg2ZSwgMHhmYiwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDQzLCAweDFkLCAweDZkLCAweDU3LCAweDRjLCAweGI5LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDFlLCAweGIsIDB4NGUsIDB4YSwgMHhmMSwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDdlLCAweDFkLCAweGE4LCAweDY3LCAweDY3LCAweGIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OGUsIDB4MTksIDB4NWIsIDB4MWQsIDB4YmEsIDB4ODgsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGVkLCAweGY3LCAweDMzLCAweGY3LCAweGQ2LCAweGI3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYiwgMHgyZSwgMHhmYiwgMHgxMywgMHg4MywgMHhiLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGY4LCAweDNkLCAweGFhLCAweGIsIDB4NywgMHhmNywgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjMSwgMHg5ZiwgMHhhYiwgMHhhOCwgMHg2MiwgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4NjIsIDB4YjMsIDB4NWMsIDB4MWIsIDB4NzIsIDB4NzEsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzAsIDB4YTUsIDB4NzQsIDB4YTQsIDB4MWYsIDB4YmEsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4YjksIDB4MWIsIDB4YiwgMHg3NywgMHg3NSwgMHg4NCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhkYywgMHhjNCwgMHhhNywgMHg5ZSwgMHgxZiwgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDYsIDB4ZjgsIDB4NGIsIDB4ZjksIDB4NTAsIDB4NSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIsIDB4MWUsIDB4NjksIDB4ZjcsIDB4N2YsIDB4YWQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGQ2LCAweDc4LCAweGJjLCAweGY4LCAweGY3LCAweGFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4YTEsIDB4NzUsIDB4YTcsIDB4YTcsIDB4YTEsIDB4YTEsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4NzUsIDB4YTEsIDB4NmYsIDB4NmYsIDB4NzUsIDB4NzUsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YiwgMHg2NywgMHhhNywgMHg4MSwgMHgxZCwgMHg2ZiwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHgxZSwgMHhiLCAweGI0LCAweDYsIDB4OWMsIDB4ZDMsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YywgMHhhMiwgMHgxYSwgMHhiNiwgMHg3MiwgMHhhOCwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg3MywgMHg2ZSwgMHg2MCwgMHhiLCAweGY3LCAweDE5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDJkLCAweGIsIDB4ZjcsIDB4MWYsIDB4ZjcsIDB4MWMsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg4OSwgMHgxZCwgMHg0YSwgMHg4OSwgMHhhLCAweDhjLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGIsIDB4NzcsIDB4MSwgMHhmMywgMHhmNywgMHgzNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhhZiwgMHgzLCAweGIsIDB4OCwgMHhhNiwgMHg4YywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxOSwgMHhmNywgMHgzZSwgMHg1LCAweDhkLCAweGZiLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFiLCAweDYsIDB4YiwgMHg2ZSwgMHhhZiwgMHhhZiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDk4LCAweDc3LCAweDFkLCAweGUzLCAweGY2LCAweGE4LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4N2MsIDB4NywgMHhmNywgMHgyLCAweDNjLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGIsIDB4ZjcsIDB4NGMsIDB4NDcsIDB4Y2YsIDB4YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHgzNCwgMHg4NSwgMHhiLCAweDY2LCAweDE1LCAweGY3LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YzEsIDB4ODgsIDB4N2UsIDB4ZjcsIDB4NDIsIDB4ZmIsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YiwgMHgxZiwgMHg1MiwgMHg1ZiwgMHhjNCwgMHhmYiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDU3LCAweDc2LCAweDg4LCAweDY3LCAweDg2LCAweDFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4YSwgMHhkYSwgMHg3NywgMHhhLCAweDEzLCAweGUwLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4ZmIsIDB4NGMsIDB4NzYsIDB4ZjcsIDB4NTQsIDB4YzIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3NiwgMHhhMCwgMHhjNCwgMHhiLCAweGY4LCAweDUyLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYwLCAweGFjLCAweDg4LCAweDc3LCAweDEyLCAweGJjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGIsIDB4MWEsIDB4ZmMsIDB4NjQsIDB4NywgMHhiLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDc0LCAweGIsIDB4NjYsIDB4MTUsIDB4ZjcsIDB4OTUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg3NiwgMHhmNywgMHg0MiwgMHhmYiwgMHg0MiwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGYyLCAweDE1LCAweGY3LCAweDg3LCAweDcsIDB4OTksIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4YjgsIDB4YiwgMHhjNCwgMHg3NiwgMHhmOCwgMHhmLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NzYsIDB4ZjcsIDB4ZTMsIDB4NzcsIDB4MTIsIDB4YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHgzMywgMHg0YiwgMHhmYiwgMHg0LCAweDViLCAweDgyLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGIsIDB4ZjcsIDB4NmQsIDB4NjMsIDB4NywgMHg3OCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg3YywgMHg3NCwgMHgxYiwgMHhiLCAweDVjLCAweGFmLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGJhLCAweGIxLCAweGIwLCAweGJiLCAweGI5LCAweDY1LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhhMCwgMHgxNiwgMHhmOCwgMHgxMywgMHg2LCAweDliLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDUsIDB4YiwgMHgxNSwgMHhmNywgMHg2MiwgMHhmYiwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGIsIDB4NywgMHhjNCwgMHg5ZSwgMHg5OSwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDMsIDB4YiwgMHg4NCwgMHgxZSwgMHhlLCAweDlmLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGY4LCAweDQ3LCAweDc3LCAweGY3LCAweDUzLCAweGFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTIsIDB4NjksIDB4NywgMHhiYywgMHg4ZCwgMHg1YywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiLCAweDc3LCAweDEyLCAweGI3LCAweGY3LCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ZjcsIDB4YiwgMHhiLCAweDc0LCAweDkzLCAweDk1LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk5LCAweDZmLCAweDc2LCAweDljLCAweGIsIDB4ZmIsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YjksIDB4OTgsIDB4MWQsIDB4YiwgMHhmNywgMHg3NCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg2NSwgMHgzMywgMHgyMCwgMHg2ZSwgMHgxYSwgMHhiLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4ODEsIDB4ODEsIDB4NWQsIDB4OGIsIDB4YSwgMHhmNywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGI0LCAweGY3LCAweDNkLCAweDMsIDB4YjQsIDB4YiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkLCAweDE1LCAweDRmLCAweGJjLCAweDVkLCAweGM1LCAweDFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4OTgsIDB4NzYsIDB4ZjgsIDB4OWUsIDB4NzcsIDB4MSwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGZiLCAweDU1LCAweGZiLCAweDM1LCAweGZiLCAweDE3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGIsIDB4ZjcsIDB4NiwgMHhkMSwgMHhmNywgMHg2LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YTQsIDB4ZjcsIDB4MWYsIDB4YiwgMHhmNywgMHg4MywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNlcmlmQm9sZEl0YWxpYy5jIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNlcmlmQm9sZEl0YWxpYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZjg2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U2VyaWZCb2xkSXRhbGljLmMKQEAgLTAsMCArMSwyNjAwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTZXJpZkJvbGRJdGFsaWNGb250RGF0YSBbMjA3MzNdID0gezB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDQsIDB4MiwgMHgwLCAweDEsIDB4MSwgMHgxLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDUzLCAweDY1LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDY2LCAweDRmLCAweDU0LCAweDQ2LCAweDJkLCAweDQyLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDY0LCAweDQ5LCAweDc0LCAweDYxLCAweDZjLCAweDY5LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MSwgMHgxLCAweDEsIDB4MjksIDB4ZjgsIDB4MTAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxYywgMHgxLCAweGY4LCAweDFkLCAweDIsIDB4ZjgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmOCwgMHgxNCwgMHg0LCAweDdkLCAweGMsIDB4MiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhmYiwgMHg4ZSwgMHhmYSwgMHg2ZSwgMHhmOSwgMHhmOSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDYsIDB4ZjYsIDB4ZiwgMHgxYywgMHg4LCAweDRkLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDFjLCAweDRhLCAweDY0LCAweDEyLCAweDAsIDB4NCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4NSwgMHgyZiwgMHg0YSwgMHg1OSwgMHg0NSwgMHg3NSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHg0MywgMHg2OCwgMHg3MiwgMHg2ZiwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHg1MywgMHg2NSwgMHg3MiwgMHg2OSwgMHg2NiwgMHgyMCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg0NiwgMHgyMCwgMHg0MiwgMHg2ZiwgMHg2YywgMHg2NCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHg3NCwgMHg2MSwgMHg2YywgMHg2OSwgMHg2MywgMHg0MywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2RiwgMHg2RCwgMHgyMCwgMHg1MywgMHg2NSwgMHg3MiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgyMCwgMHg0ZiwgMHg1NCwgMHg0NiwgMHgwLCAweDcxLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgxLCAweDAsIDB4ZiwgMHgwLCAweDE4LCAweDAsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgzMCwgMHgwLCAweDQzLCAweDAsIDB4NTAsIDB4MCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDYxLCAweDAsIDB4NmQsIDB4MCwgMHg4NCwgMHgwLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YzIsIDB4MCwgMHhlMCwgMHgwLCAweGUzLCAweDAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhLCAweDEsIDB4MTcsIDB4MSwgMHgxZiwgMHgxLCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4MzksIDB4MSwgMHg0YSwgMHgxLCAweDZmLCAweDEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg4OSwgMHgxLCAweGFiLCAweDEsIDB4YjgsIDB4MSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY0LCAweDEsIDB4ZmUsIDB4MiwgMHhlLCAweDIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgyNiwgMHgyLCAweDM1LCAweDIsIDB4NDcsIDB4MiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDVmLCAweDIsIDB4NmMsIDB4MiwgMHg3NSwgMHgyLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4OGQsIDB4MiwgMHg5NiwgMHgyLCAweGE0LCAweDIsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHhiZCwgMHgyLCAweGNhLCAweDIsIDB4ZDMsIDB4MiwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGZiLCAweDMsIDB4NSwgMHgzLCAweGIsIDB4MywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDJlLCAweDMsIDB4MzYsIDB4MywgMHgzZSwgMHgzLCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4NGIsIDB4MywgMHg1MiwgMHgzLCAweDZjLCAweDMsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg4MCwgMHgzLCAweDg0LCAweDMsIDB4OGIsIDB4MywgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGE0LCAweDMsIDB4YWQsIDB4MywgMHhiOSwgMHgzLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZDMsIDB4MywgMHhlNywgMHgzLCAweGVlLCAweDMsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg1LCAweDQsIDB4ZCwgMHg0LCAweDEyLCAweDQsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgzMCwgMHg0LCAweDM0LCAweDQsIDB4MzksIDB4NCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDU5LCAweDQsIDB4NjgsIDB4NCwgMHg3MSwgMHg0LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4N2UsIDB4NCwgMHg4MywgMHg0LCAweDg4LCAweDQsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhhMywgMHg0LCAweGFhLCAweDQsIDB4YjcsIDB4NCwgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGM0LCAweDQsIDB4ZDAsIDB4NCwgMHhkNiwgMHg0LCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZGYsIDB4NCwgMHhlYSwgMHg0LCAweGY1LCAweDQsIDB4ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyLCAweDUsIDB4YywgMHg1LCAweDE2LCAweDUsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyYSwgMHg1LCAweDJlLCAweDUsIDB4MzcsIDB4NSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDQ5LCAweDUsIDB4NGQsIDB4NSwgMHg1MywgMHg1LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NWQsIDB4NSwgMHg2MiwgMHg2NiwgMHhhOSwgMHg2ZCwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhhOSwgMHhhOSwgMHgzNiwgMHgxZCwgMHg2ZCwgMHg2ZCwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiLCAweGUyLCAweDUsIDB4YTIsIDB4OTgsIDB4OWIsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4MWQsIDB4YiwgMHgxNSwgMHhiYywgMHgyMSwgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4NzksIDB4OWMsIDB4YTIsIDB4OTAsIDB4OGQsIDB4OTEsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4M2YsIDB4YSwgMHg1YywgMHg2OSwgMHg4NSwgMHg1ZSwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhhLCAweGIsIDB4MTUsIDB4ZjcsIDB4NTgsIDB4YWUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHgxZCwgMHhmNywgMHg3OCwgMHhmNywgMHg2OSwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHhmNywgMHg4NywgMHg3NCwgMHgxZCwgMHhlLCAweGEyLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDZmLCAweDlhLCAweDc2LCAweDc1LCAweDc2LCAweDc0LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDFlLCAweGIsIDB4ZjcsIDB4MjcsIDB4NSwgMHg5OCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhhMCwgMHgzMCwgMHgxZCwgMHhiLCAweDdiLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgyNiwgMHgxZCwgMHhiLCAweDQ0LCAweGEsIDB4ZmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg3YSwgMHg0YSwgMHg2ZiwgMHhhLCAweDI3LCAweGEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjOSwgMHg4YiwgMHg2MCwgMHg2YiwgMHgxZiwgMHg1ZCwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhNSwgMHgzOCwgMHhhLCAweGNkLCAweGY3LCAweDc4LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFmLCAweDk3LCAweDg0LCAweDU1LCAweGEsIDB4YiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhlLCAweDE1LCAweDQzLCAweGIyLCAweDUxLCAweGQ3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZDksIDB4ZjcsIDB4ZiwgMHhmMywgMHhkNiwgMHg2MywgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhmYiwgMHgwLCAweDNhLCAweGZiLCAweGUsIDB4MjEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHhlMywgMHgxNSwgMHhhYywgMHg5NSwgMHhhMCwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHgxYiwgMHhhNCwgMHg5MiwgMHg3NCwgMHg3NiwgMHg2YiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHg4MSwgMHg2OSwgMHgxZiwgMHg2YywgMHg4MiwgMHg3OSwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgxYiwgMHg3NSwgMHg4MSwgMHg5ZSwgMHg5ZSwgMHhhYywgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMiwgMHg5NSwgMHhhZCwgMHgxZiwgMHhiLCAweGY3LCAweGIyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDE1LCAweDhkLCAweDhhLCAweDUsIDB4ODEsIDB4NmQsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NjAsIDB4MWEsIDB4NTMsIDB4YmYsIDB4OGIsIDB4OWEsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZWEsIDB4YWQsIDB4OWUsIDB4MWUsIDB4NzYsIDB4OTgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4ZCwgMHhiLCAweDJiLCAweGEsIDB4ZSwgMHg4MywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg3OSwgMHg3YiwgMHgxYSwgMHg1NywgMHhiYiwgMHg3ZCwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhjNCwgMHhkNSwgMHhiZiwgMHhhYywgMHgxZSwgMHg3NiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGIsIDB4ZmIsIDB4NWEsIDB4ZmIsIDB4MjcsIDB4NmEsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4ZWUsIDB4ZGUsIDB4YmUsIDB4ZGUsIDB4YjcsIDB4YTUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjYsIDB4OGMsIDB4MTUsIDB4YiwgMHg3MCwgMHgxYiwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg3MywgMHg3NiwgMHg3NiwgMHhhMCwgMHg3YSwgMHg5OCwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiLCAweDQwLCAweDFkLCAweDgzLCAweDk2LCAweDg5LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHhhYiwgMHhjOCwgMHhmNywgMHg2NywgMHhiMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHgxZiwgMHg0NywgMHg3YiwgMHgyZCwgMHg4MiwgMHg2MywgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDcwLCAweDcsIDB4YTgsIDB4YiwgMHg2NSwgMHgxZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgyNSwgMHhhLCAweGIsIDB4NzQsIDB4M2QsIDB4ZmIsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4MWEsIDB4NzMsIDB4OTYsIDB4NjAsIDB4YzUsIDB4ZDUsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4ZDksIDB4YmUsIDB4MWUsIDB4YiwgMHhmNywgMHg4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDE1LCAweDcwLCAweGY3LCAweDJmLCAweDZiLCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGJhLCAweDY2LCAweDgxLCAweDU1LCAweDgyLCAweDUxLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NzAsIDB4NywgMHhiMiwgMHg5NSwgMHg4YiwgMHhmYiwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHgxZiwgMHg5MywgMHg2NywgMHhiMCwgMHhmYiwgMHg0OCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhiLCAweGIwLCAweGIwLCAweDZkLCAweGE5LCAweDY2LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjgsIDB4YmUsIDB4NiwgMHhjNiwgMHhmNywgMHg1NiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg1LCAweGZiLCAweDEyLCAweDQ2LCAweGZiLCAweDQsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHgxYiwgMHhiLCAweDFiLCAweDYzLCAweDdlLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDcwLCAweGExLCAweDZhLCAweGIwLCAweGVlLCAweGUzLCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNkLCAweGYxLCAweDFmLCAweDk0LCAweDlhLCAweGY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY0LCAweGY3LCAweDksIDB4MWEsIDB4YWMsIDB4NmQsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4NmIsIDB4NzMsIDB4NmMsIDB4NzIsIDB4YiwgMHg4MywgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmOCwgMHhlNCwgMHgxOCwgMHg3MiwgMHg2LCAweGZjLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4ZTQsIDB4YiwgMHhmNywgMHgzZiwgMHhmNywgMHgyZCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhlMiwgMHhmOCwgMHgyOCwgMHhmNywgMHg0YywgMHhmMywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHg3NiwgMHhmYiwgMHg4LCAweDJkLCAweGZjLCAweDE5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDUwLCAweDVlLCAweGIwLCAweDU1LCAweDFkLCAweGQyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGY3LCAweDNiLCAweGY3LCAweDhkLCAweGY3LCAweDQ1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweGY3LCAweDU2LCAweGY3LCAweDQyLCAweGZiLCAweDE5LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDFkLCAweGZiLCAweDc4LCAweGZiLCAweDg5LCAweDFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiZSwgMHg2LCAweDM1LCAweDRlLCAweGEsIDB4YiwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg1MywgMHg1NSwgMHg3MywgMHgxYiwgMHg4NSwgMHgzMiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MWIsIDB4ZTIsIDB4YTEsIDB4ZGYsIDB4YWUsIDB4OTQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NiwgMHg3OCwgMHg4MiwgMHg4MSwgMHg3NCwgMHg2OSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDFmLCAweGRkLCAweGY3LCAweGI2LCAweDljLCAweGNiLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweGJlLCAweDhlLCAweDE5LCAweGFlLCAweGZiLCAweGNiLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxYiwgMHg4NSwgMHg4OCwgMHg5MCwgMHg5NCwgMHgyOCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDNjLCAweDQxLCAweDFmLCAweGE2LCAweDg2LCAweGI2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDUsIDB4ZmMsIDB4YjAsIDB4NjgsIDB4NiwgMHhjOSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDllLCAweDYxLCAweGJhLCAweGIyLCAweGE5LCAweGE5LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDZjLCAweGFhLCAweDY1LCAweDVlLCAweDc2LCAweDYxLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGIsIDB4NjUsIDB4YTgsIDB4NmUsIDB4YjEsIDB4YjEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YjEsIDB4YjEsIDB4NmQsIDB4YTksIDB4NjUsIDB4NjUsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NjUsIDB4MWUsIDB4YiwgMHgxNSwgMHg2MiwgMHhhOSwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhiLCAweGU5LCAweGY3LCAweGM4LCAweDdkLCAweDhhLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDMyLCAweDg3LCAweDZkLCAweGEsIDB4YWQsIDB4YiwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhiNCwgMHhhYywgMHhhYiwgMHhiNSwgMHhiNCwgMHg2YSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDQyLCAweDFkLCAweGY3LCAweDY4LCAweDE2LCAweDQyLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ODksIDB4N2YsIDB4MWYsIDB4ZmIsIDB4MTQsIDB4ZmMsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NTIsIDB4NzYsIDB4ODIsIDB4NjAsIDB4ODUsIDB4MTksIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhkMCwgMHhmNywgMHg5LCAweDUsIDB4ZjcsIDB4NmIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY3LCAweDc3LCAweDcwLCAweGEsIDB4OGUsIDB4ODgsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YjYsIDB4YjQsIDB4OWIsIDB4NGEsIDB4YSwgMHhiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGZiLCAweDY1LCAweDUsIDB4MjEsIDB4NmUsIDB4NjQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4MjMsIDB4MWIsIDB4YiwgMHg2NSwgMHhmYiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNSwgMHhmYiwgMHgzYywgMHhmYiwgMHgyZSwgMHgxZSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGRkLCAweDYsIDB4ZjcsIDB4MzYsIDB4ZjcsIDB4NDIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg2LCAweGZiLCAweDFiLCAweGIsIDB4MSwgMHhmNywgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMSwgMHgxNSwgMHg3MiwgMHg4OCwgMHhiLCAweDg4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4NjIsIDB4ZjcsIDB4YiwgMHhiLCAweDJhLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDkyLCAweGFiLCAweDFmLCAweDdmLCAweDU3LCAweDE1LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDk4LCAweDg1LCAweGE0LCAweDFiLCAweGY3LCAweDIyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDU2LCAweGY3LCAweDJmLCAweGU3LCAweDU4LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDYwLCAweDU0LCAweDcwLCAweDNjLCAweGIsIDB4ZjcsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGEsIDB4MTUsIDB4ZjcsIDB4NTUsIDB4YTksIDB4Y2IsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhhLCAweGY4LCAweDQ3LCAweDc3LCAweGIsIDB4MSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHgzLCAweGY3LCAweDgsIDB4YiwgMHg1OCwgMHg4YiwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhlZSwgMHhhZSwgMHgxLCAweDc1LCAweDE2LCAweGY4LCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YzYsIDB4ZjcsIDB4NTYsIDB4NzMsIDB4OTAsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHg0NiwgMHhmYiwgMHg0LCAweDYxLCAweGZiLCAweGMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxYiwgMHgyOSwgMHg3OCwgMHhmYiwgMHg4LCAweDg5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZWYsIDB4MWUsIDB4ZmIsIDB4MjQsIDB4YzQsIDB4MTUsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhiMSwgMHg5MCwgMHgxOSwgMHg2MSwgMHhhLCAweGIsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZmIsIDB4NjQsIDB4NjgsIDB4NywgMHhiLCAweDdlLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDc2LCAweGY4LCAweDQ2LCAweGIsIDB4MSwgMHhmNywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMSwgMHgzLCAweGY3LCAweDUsIDB4YzgsIDB4MTUsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4ZjcsIDB4NDIsIDB4YTIsIDB4YmIsIDB4MWUsIDB4YjEsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4YjgsIDB4YjIsIDB4MWIsIDB4YTEsIDB4OWQsIDB4YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDc3LCAweGY5LCAweDY3LCAweDViLCAweGEsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MmMsIDB4M2IsIDB4MWQsIDB4YiwgMHg1OCwgMHgxZCwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg3NywgMHhiLCAweDc3LCAweDUyLCAweDFkLCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmYiwgMHg2ZiwgMHhmYiwgMHg1ZiwgMHhiLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDYsIDB4YmUsIDB4ZjcsIDB4NiwgMHg1LCAweDdiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NzUsIDB4N2IsIDB4ODAsIDB4NTcsIDB4MWIsIDB4MzQsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHhmLCAweGIsIDB4MjYsIDB4MWQsIDB4ZSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHgyNiwgMHgzMCwgMHhmMCwgMHg1LCAweDU5LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhjNSwgMHg2LCAweGY4LCAweDQ3LCAweGY5LCAweDQ4LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NTEsIDB4NywgMHhiLCAweGY3LCAweDE5LCAweDFhLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGIsIDB4Y2UsIDB4YWEsIDB4OTcsIDB4YWQsIDB4YTQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4NTQsIDB4YTUsIDB4NjEsIDB4NDcsIDB4NjIsIDB4NjIsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4MWUsIDB4OTksIDB4N2UsIDB4NSwgMHhiLCAweDFmLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIzLCAweGZiLCAweDZiLCAweGY4LCAweDY1LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4NjgsIDB4NiwgMHhjMCwgMHg4NiwgMHg5NiwgMHg4ZiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHhiLCAweGM3LCAweDc5LCAweGFkLCAweGY5LCAweGQsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYywgMHgxNCwgMHg5NywgMHg3NiwgMHhiLCAweDFmLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDdlLCAweDk0LCAweDc5LCAweDFiLCAweDczLCAweDdlLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDg0LCAweDkwLCAweDY0LCAweGRkLCAweGYwLCAweGU0LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NmUsIDB4N2UsIDB4Y2IsIDB4ZjgsIDB4ZSwgMHhhYywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDFhLCAweDYyLCAweGEsIDB4YiwgMHgxZSwgMHhhZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg2OCwgMHg3LCAweGJiLCAweDg0LCAweDkyLCAweDhhLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGUzLCAweGZiLCAweDk2LCAweDE4LCAweGIsIDB4MTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ZjcsIDB4NjksIDB4MTUsIDB4ZjcsIDB4MjgsIDB4ZjcsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MWQsIDB4ZSwgMHg3NywgMHg0ZCwgMHgxZCwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDM1LCAweGUxLCAweGIsIDB4ZWYsIDB4ZjcsIDB4ZGUsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NjYsIDB4ODMsIDB4MmMsIDB4N2QsIDB4MTksIDB4ODksIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhhOCwgMHhiMywgMHhiLCAweDE1LCAweGNiLCAweGY3LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YTAsIDB4OGYsIDB4OTEsIDB4YTIsIDB4YjIsIDB4MWIsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4MjMsIDB4NzYsIDB4YiwgMHhhNywgMHg4OCwgMHg1LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDk4LCAweGIwLCAweGI0LCAweDFiLCAweGY3LCAweDI1LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjgsIDB4YiwgMHgxNSwgMHhjMSwgMHg1NCwgMHhjNCwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHg1NiwgMHg4LCAweGIsIDB4YzAsIDB4NzYsIDB4ZjgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhiLCAweDliLCAweGI1LCAweDFiLCAweGY3LCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YjAsIDB4ZmIsIDB4ODcsIDB4NSwgMHhiLCAweGY3LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDYsIDB4YiwgMHg0YSwgMHhjMSwgMHg4YiwgMHg5YiwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhkOCwgMHhjMSwgMHhhYiwgMHgxZSwgMHg3NSwgMHg5OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4N2QsIDB4NGUsIDB4ODMsIDB4NDEsIDB4ODMsIDB4NmQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHg4YywgMHhhOCwgMHg4YiwgMHg2OSwgMHhiLCAweDI4LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweDUsIDB4NTksIDB4NiwgMHhlLCAweGZiLCAweDZlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGY3LCAweDcsIDB4ZjcsIDB4NWYsIDB4NzcsIDB4ZjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhiLCAweDFhLCAweGMzLCAweGVlLCAweGJlLCAweDllLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGIsIDB4ZjcsIDB4MCwgMHhhNSwgMHhhMSwgMHhiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDhiLCAweDg1LCAweDg5LCAweDg1LCAweDFlLCAweGZiLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDY1LCAweGIsIDB4NDUsIDB4MWQsIDB4YWMsIDB4NjIsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgzYiwgMHgxZCwgMHhlLCAweGZiLCAweGRkLCAweGY4LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGIsIDB4NSwgMHhiNCwgMHg5NiwgMHhhYiwgMHg4OCwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgzNSwgMHg4YywgMHhiLCAweDFmLCAweGFiLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGY3LCAweDdlLCAweDUsIDB4NmQsIDB4NiwgMHg3YiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGEsIDB4YWMsIDB4YTksIDB4OGQsIDB4NjgsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiLCAweDQwLCAweGQ2LCAweGIsIDB4NjksIDB4YTksIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4YjEsIDB4YTQsIDB4YTYsIDB4YjgsIDB4YjcsIDB4YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmMSwgMHhmNywgMHhkLCAweGY3LCAweDEwLCAweGY3LCAweGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhlMywgMHg4YiwgMHhmNywgMHgyOSwgMHhmYiwgMHgyMiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHhjOCwgMHhiLCAweGZiLCAweDYxLCAweGIwLCAweGY3LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGY4LCAweDUsIDB4ZDIsIDB4YiwgMHgxYiwgMHg4NSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDIxLCAweDk3LCAweDc2LCAweGE5LCAweDc2LCAweGY4LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGIsIDB4ODMsIDB4OTMsIDB4MWIsIDB4OTAsIDB4OGYsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MWYsIDB4YiwgMHhjNywgMHg4YiwgMHhhZSwgMHg2ZSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgxZCwgMHhhZSwgMHhiLCAweDgzLCAweDFkLCAweDEyLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjksIDB4NTMsIDB4NzcsIDB4MSwgMHhiLCAweDE1LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGIsIDB4N2UsIDB4YTgsIDB4ZjgsIDB4MzMsIDB4YTgsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhhZiwgMHhhMSwgMHhhNCwgMHhiLCAweDEsIDB4MCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MCwgMHg2OCwgMHgwLCAweDAsIDB4OSwgMHgzNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDAsIDB4MCwgMHg0MiwgMHgyMCwgMHgwLCAweDY3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg2NCwgMHgwLCAweDAsIDB4YTAsIDB4MCwgMHgwLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg4MywgMHgwLCAweDAsIDB4YWEsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDAsIDB4MCwgMHg2YSwgMHgwLCAweDAsIDB4OTcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE1LCAweDAsIDB4MCwgMHg4MCwgMHgwLCAweDAsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDljLCAweDAsIDB4MCwgMHhhNCwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4MCwgMHgwLCAweDdkLCAweDAsIDB4MCwgMHg5OCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NzMsIDB4MCwgMHgwLCAweDcyLCAweDAsIDB4MCwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4OTYsIDB4MCwgMHgwLCAweDhmLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHgwLCAweDAsIDB4OWUsIDB4MCwgMHgwLCAweDliLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhMywgMHgwLCAweDAsIDB4N2IsIDB4MCwgMHgwLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhhYiwgMHgxLCAweDAsIDB4YjAsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDAsIDB4MCwgMHhhZiwgMHgwLCAweDAsIDB4OGEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGIxLCAweDAsIDB4MCwgMHhiNSwgMHgwLCAweDAsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgwLCAweGI5LCAweDAsIDB4MCwgMHhiNiwgMHgyLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4MCwgMHgwLCAweGJhLCAweDAsIDB4MCwgMHhiZSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YmIsIDB4MSwgMHgwLCAweGJmLCAweDAsIDB4MCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YTgsIDB4MCwgMHgwLCAweDhkLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHgwLCAweDAsIDB4YzEsIDB4MiwgMHgwLCAweGM1LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg5ZCwgMHgwLCAweDAsIDB4OTUsIDB4MCwgMHgwLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhjOCwgMHgxLCAweDAsIDB4Y2QsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDAsIDB4MCwgMHhjYywgMHgwLCAweDAsIDB4OTAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGNlLCAweDAsIDB4MCwgMHhkMiwgMHgwLCAweDAsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgwLCAweGQ2LCAweDAsIDB4MCwgMHhkMywgMHgyLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4MCwgMHgwLCAweGQ3LCAweDAsIDB4MCwgMHhkYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZDgsIDB4MSwgMHgwLCAweGRjLCAweDAsIDB4MCwgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4OWYsIDB4MCwgMHgwLCAweDkzLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHgwLCAweDAsIDB4ZGUsIDB4MiwgMHgwLCAweGUyLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhMiwgMHgwLCAweDAsIDB4ZTMsIDB4MCwgMHgwLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg4YywgMHgwLCAweDAsIDB4OTIsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDAsIDB4MCwgMHg5NCwgMHgwLCAweDAsIDB4YzAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGRkLCAweDAsIDB4MCwgMHhjNiwgMHgxLCAweDAsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDY1LCAweDAsIDB4MCwgMHg3ZSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4MCwgMHgwLCAweDgxLCAweDEsIDB4MCwgMHg4NCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ODcsIDB4MCwgMHgwLCAweDdmLCAweDAsIDB4MCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NmYsIDB4MCwgMHgwLCAweDg5LCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHgwLCAweDAsIDB4OCwgMHgwLCAweDAsIDB4NzUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDY5LCAweDAsIDB4MCwgMHg3NywgMHgwLCAweDAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDcwLCAweDEsIDB4MCwgMHg3NCwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4MSwgMHgwLCAweDZiLCAweDEsIDB4MCwgMHg2MywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ODcsIDB4MCwgMHgwLCAweDk5LCAweDAsIDB4MCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NmQsIDB4MSwgMHgwLCAweGU2LCAweDIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDAsIDB4NCwgMHgwLCAweDcsIDB4MCwgMHg1ZSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDEsIDB4MTQsIDB4MSwgMHhhOSwgMHgxLCAweGUzLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4MiwgMHhlNCwgMHgzLCAweDE3LCAweDMsIDB4NDksIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHg0LCAweDUxLCAweDQsIDB4ODAsIDB4NCwgMHg5NiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDQsIDB4YjksIDB4NSwgMHgzLCAweDUsIDB4NDQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg2LCAweDIsIDB4NiwgMHg0NywgMHg2LCAweDk4LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg3LCAweDJlLCAweDcsIDB4YWUsIDB4OCwgMHhlLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4OCwgMHg4YiwgMHg4LCAweGFmLCAweDgsIDB4ZDEsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHg5LCAweDU3LCAweGEsIDB4MTEsIDB4YSwgMHgzYiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGIsIDB4MTcsIDB4YiwgMHg1NywgMHhiLCAweDc2LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4YywgMHg1YSwgMHhjLCAweGRhLCAweGQsIDB4MTUsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhkLCAweGVkLCAweGUsIDB4MTQsIDB4ZSwgMHg5NCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGYsIDB4MTQsIDB4ZiwgMHg2YywgMHgxMCwgMHg3LCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDEwLCAweGZmLCAweDExLCAweDQxLCAweDExLCAweDhjLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweDEyLCAweDU5LCAweDEyLCAweGQ1LCAweDEzLCAweDE5LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweDRkLCAweDEzLCAweDY0LCAweDEzLCAweDk1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDEzLCAweGMyLCAweDEzLCAweGU0LCAweDE0LCAweDFjLCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDE0LCAweGJjLCAweDE1LCAweDM4LCAweDE1LCAweDcwLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweDE2LCAweDliLCAweDE2LCAweGZmLCAweDE3LCAweDFlLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDE3LCAweGQwLCAweDE4LCAweDAsIDB4MTgsIDB4YTAsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4MTksIDB4MTAsIDB4MTksIDB4NDUsIDB4MTksIDB4YjIsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4MWEsIDB4NjQsIDB4MWEsIDB4YWIsIDB4MWEsIDB4ZDksIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4MWIsIDB4YTUsIDB4MWMsIDB4MzEsIDB4MWMsIDB4NTMsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MWMsIDB4ZjUsIDB4MWQsIDB4MTAsIDB4MWQsIDB4NmEsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MWUsIDB4MywgMHgxZSwgMHg3OSwgMHgxZiwgMHgzMSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHgyMCwgMHgzMCwgMHgyMCwgMHg1ZiwgMHgyMSwgMHgyOCwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHgyMSwgMHhkZiwgMHgyMiwgMHg0ZCwgMHgyMiwgMHg4MSwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHgyMywgMHg1NSwgMHgyMywgMHg2OSwgMHgyMywgMHg5YywgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHgyMywgMHhmZiwgMHgyNCwgMHgzMiwgMHgyNCwgMHg0NCwgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHgyNSwgMHgxMCwgMHgyNSwgMHgyMCwgMHgyNSwgMHg1NywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgyNSwgMHhjYSwgMHgyNSwgMHhmNCwgMHgyNiwgMHgyZSwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHgyNiwgMHhkMywgMHgyNywgMHgzNCwgMHgyNywgMHg1MSwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgyNywgMHg2ZiwgMHgyNywgMHhjYywgMHgyNywgMHhmNSwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyOCwgMHhjNiwgMHgyOSwgMHg1ZCwgMHgyOSwgMHg5YiwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHgyYSwgMHg3LCAweDJhLCAweDM2LCAweDJhLCAweDU4LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDJhLCAweGFiLCAweDJhLCAweGQxLCAweDJiLCAweDI5LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDJiLCAweDhjLCAweDJiLCAweDk0LCAweDJiLCAweGE1LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweDJiLCAweGY1LCAweDJjLCAweDI1LCAweDJjLCAweGE0LCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDJjLCAweGY3LCAweDJkLCAweDI0LCAweDJkLCAweDU5LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDJlLCAweDEzLCAweDJlLCAweGI1LCAweDJlLCAweGRlLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweDJmLCAweGIsIDB4MmYsIDB4NDUsIDB4MmYsIDB4NjcsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4MzAsIDB4OGEsIDB4MzEsIDB4ZSwgMHgzMSwgMHgxYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHgzMSwgMHgzYywgMHgzMSwgMHg1ZiwgMHgzMSwgMHg2ZSwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHgzMSwgMHhhMiwgMHgzMSwgMHhjYiwgMHgzMiwgMHgzMSwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgzMiwgMHg5NCwgMHgzMiwgMHhiYSwgMHgzMiwgMHhjNywgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNCwgMHgzMywgMHgxNSwgMHgzMywgMHg0NywgMHgzMywgMHhiZSwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHgzMywgMHhmMCwgMHgzNCwgMHg2LCAweDM0LCAweDIyLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDM0LCAweDdmLCAweDM0LCAweGJiLCAweDM0LCAweGMyLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MzUsIDB4NTAsIDB4MzYsIDB4MywgMHgzNiwgMHg5YSwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHgzNywgMHg5YywgMHgzOCwgMHhiLCAweDM4LCAweDE5LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDM4LCAweGVlLCAweDM4LCAweGZlLCAweDM5LCAweGEsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4MzksIDB4NDksIDB4MzksIDB4NzAsIDB4MzksIDB4YTMsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4M2EsIDB4OSwgMHgzYSwgMHgxYSwgMHgzYSwgMHgyYywgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHgzYSwgMHg3ZiwgMHgzYSwgMHhhOSwgMHgzYSwgMHhlMiwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHgzYiwgMHg1YiwgMHgzYiwgMHhmYiwgMHgzYywgMHhkYiwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgzZCwgMHgzNCwgMHgzZCwgMHg2NywgMHgzZCwgMHg3YywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgzZCwgMHhhYSwgMHgzZSwgMHgzMCwgMHgzZSwgMHhkNiwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHgzZiwgMHg5YiwgMHg0MCwgMHg0NywgMHhmYywgMHgzMCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDMwLCAweGUsIDB4ZmIsIDB4YTUsIDB4NzIsIDB4ZjcsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTgsIDB4ZjcsIDB4MjQsIDB4ZjgsIDB4YjAsIDB4NzcsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4Y2UsIDB4ZjcsIDB4MjgsIDB4MTMsIDB4YTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4ZjcsIDB4NjgsIDB4MTUsIDB4YTgsIDB4ODMsIDB4ZDIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4ZDgsIDB4ZjcsIDB4MmYsIDB4OTcsIDB4YTksIDB4MTksIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4OTEsIDB4YTAsIDB4OWQsIDB4MWEsIDB4MTMsIDB4OTgsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4YTgsIDB4NmIsIDB4NTAsIDB4NmIsIDB4MzgsIDB4NjEsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4N2EsIDB4ZmIsIDB4NywgMHg4MCwgMHhmYiwgMHgxNSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg4LCAweDI3LCAweGZiLCAweDJmLCAweDE1LCAweDEzLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGE4LCAweDZjLCAweGI3LCAweGI4LCAweGE5LCAweGFkLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDZhLCAweGFmLCAweDYwLCAweDZhLCAweDY0LCAweDcwLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4MjAsIDB4ZjgsIDB4MzcsIDB4NzYsIDB4ZjcsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHgxYywgMHhmOCwgMHgyMiwgMHgxNSwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGRlLCAweGY3LCAweDRlLCAweDUsIDB4OTEsIDB4OTksIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4OWUsIDB4MWEsIDB4YTQsIDB4N2UsIDB4YTIsIDB4NjYsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NjgsIDB4NjUsIDB4ODgsIDB4MWUsIDB4ZjcsIDB4OTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MTUsIDB4YjEsIDB4NiwgMHhlMCwgMHhmNywgMHg0ZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDk4LCAweDhlLCAweDlkLCAweDljLCAweDFhLCAweGE2LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDZiLCAweDY1LCAweDcwLCAweDY4LCAweDY1LCAweDg4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4NjYsIDB4Y2EsIDB4NGMsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWEsIDB4ZDQsIDB4NGMsIDB4Y2EsIDB4ZjcsIDB4NjYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4YjQsIDB4NzUsIDB4MTYsIDB4ZTAsIDB4ZjcsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyYiwgMHg2LCAweDlmLCAweGNhLCAweDUsIDB4ZjEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhmNywgMHgyZSwgMHg1LCAweDI1LCAweDYsIDB4OWYsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHgzLCAweDYsIDB4ZGMsIDB4ZjcsIDB4NjYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHg2LCAweDNiLCAweGZiLCAweDY2LCAweDUsIDB4ZjcsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhkYywgMHhmNywgMHg2NiwgMHg1LCAweGQxLCAweDYsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjYsIDB4NSwgMHhkZCwgMHg2LCAweDc3LCAweDRjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4NiwgMHgxMywgMHhjYywgMHg0YiwgMHhmYiwgMHgyZSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweDYsIDB4NzcsIDB4NGMsIDB4NSwgMHgyYSwgMHg2LCAweDM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY2LCAweDUsIDB4NDQsIDB4NiwgMHhlMCwgMHhmNywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDE0LCAweDYsIDB4MzYsIDB4ZmIsIDB4NjYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzLCAweGY3LCAweGE1LCAweDE1LCAweGY3LCAweDE0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4ZjcsIDB4MmUsIDB4NSwgMHhmYiwgMHgxNCwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4NzYsIDB4ZjAsIDB4YWEsIDB4ZjgsIDB4ZjEsIDB4YWMsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhkYSwgMHhlZSwgMHhmNywgMHgyNSwgMHhmNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjcsIDB4MTMsIDB4OTIsIDB4MTUsIDB4NjIsIDB4OTYsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4NGEsIDB4YzcsIDB4YjUsIDB4ZjcsIDB4MjIsIDB4MTgsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4OGUsIDB4MmUsIDB4OTgsIDB4NTcsIDB4ZDgsIDB4NjgsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZjcsIDB4OTksIDB4NSwgMHgyMCwgMHhkOCwgMHg3MiwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHgxYSwgMHhlNywgMHhjZiwgMHhjMywgMHhmNywgMHgxOSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg4YSwgMHg4YSwgMHg5OCwgMHgxZSwgMHg5ZCwgMHhjYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDYsIDB4NzcsIDB4NDMsIDB4YjUsIDB4ODYsIDB4Y2MsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4NzMsIDB4MTksIDB4NjEsIDB4ZmIsIDB4MTksIDB4NzYsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4YjgsIDB4OGQsIDB4ZTEsIDB4MzMsIDB4YTMsIDB4MTksIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NzksIDB4NSwgMHhkYiwgMHg0NiwgMHhjNywgMHg0NiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmYiwgMHgxLCAweDIyLCAweDUwLCAweGZiLCAweDI5LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDI2LCAweDUsIDB4NTcsIDB4NiwgMHhmNywgMHgyYSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHgxNSwgMHhjMiwgMHhmNywgMHg2OSwgMHg1LCAweDhlLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDhhLCAweDdjLCAweDFiLCAweDQ1LCAweDY4LCAweDQ4LCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDlhLCAweDcxLCAweGMyLCAweDY0LCAweDFmLCAweDRkLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDE1LCAweGUyLCAweGJkLCAweGM1LCAweGRhLCAweGM2LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDY4LCAweGE4LCAweDFmLCAweGUsIDB4ZjcsIDB4M2YsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4ODUsIDB4NzYsIDB4ZjcsIDB4ZTMsIDB4YTEsIDB4ZjcsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4OGMsIDB4NzcsIDB4MTIsIDB4ZjcsIDB4MCwgMHhkZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHhkZiwgMHhjOSwgMHhkZiwgMHhmNywgMHgyMCwgMHhkZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHg4MCwgMHhmOCwgMHhlNCwgMHg3ZCwgMHgzYiwgMHhhLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4ZjcsIDB4YzgsIDB4M2IsIDB4YSwgMHgxMywgMHg2ZiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhiYSwgMHhmNywgMHhkZiwgMHgxNSwgMHg0ZiwgMHg2LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweGZkLCAweDQ4LCAweDUsIDB4YzcsIDB4NiwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NzksIDB4ZDEsIDB4NDUsIDB4ZGMsIDB4NGUsIDB4NzYsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4YzAsIDB4YWYsIDB4ZjgsIDB4NzQsIDB4YWMsIDB4MTIsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4ZDYsIDB4ZjcsIDB4ZCwgMHhmNywgMHhlLCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGExLCAweDEzLCAweDNmLCAweDgwLCAweGY4LCAweDFhLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweDRmLCAweDgwLCAweDczLCAweGEzLCAweGI2LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDFiLCAweDEzLCAweDNmLCAweDgwLCAweGUzLCAweGI5LCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGFlLCAweDFmLCAweDcxLCAweGEwLCAweDUsIDB4MTMsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4NzAsIDB4N2YsIDB4NzUsIDB4ODAsIDB4NzIsIDB4MWIsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4YWMsIDB4YjAsIDB4NzMsIDB4MWYsIDB4ZTMsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg4MSwgMHhhMywgMHhhNiwgMHhiNCwgMHhiYSwgMHg5YiwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg5MywgMHg4LCAweGFlLCAweGZiLCAweDY4LCAweDY4LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ODYsIDB4YTgsIDB4ODksIDB4NmEsIDB4MWEsIDB4NjgsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NmIsIDB4NjMsIDB4MWUsIDB4NmUsIDB4YjUsIDB4NWMsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4ZGMsIDB4OCwgMHhiOCwgMHg5ZSwgMHhmNywgMHgxZCwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHgxYSwgMHhjMiwgMHg1ZCwgMHhjNSwgMHgyZSwgMHhmYiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDJiLCAweGZiLCAweDIsIDB4NmEsIDB4OTEsIDB4NmIsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4MWUsIDB4ZmIsIDB4NSwgMHg0ZCwgMHhmYiwgMHgxMywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNCwgMHgxYSwgMHgxMywgMHgzZiwgMHg4MCwgMHhmYiwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMywgMHg3OCwgMHhiNywgMHhiOCwgMHhkOSwgMHg5MiwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHgxZSwgMHg2ZiwgMHhhZiwgMHgxNSwgMHgxMywgMHg4ZiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg3NCwgMHg2YywgMHg3YSwgMHg2MCwgMHgxYiwgMHgzMCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHhjMCwgMHhlOCwgMHhjMywgMHhhYywgMHhjNiwgMHhhOSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHgzZiwgMHg4MCwgMHhhYiwgMHhmYiwgMHgyMSwgMHhiOCwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg1OSwgMHg4LCAweDhmLCAweGY3LCAweGY2LCAweDE1LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDg3LCAweGE1LCAweGEzLCAweDFhLCAweGM4LCAweDkyLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGI0LCAweDlkLCAweDViLCAweDZiLCAweDY2LCAweDc4LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDViLCAweDFlLCAweGUsIDB4ZmMsIDB4MTQsIDB4ZjgsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4YjMsIDB4NzcsIDB4MSwgMHhmNywgMHgyMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDMsIDB4ZjcsIDB4M2IsIDB4ZjgsIDB4MjIsIDB4MTUsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGUsIDB4NSwgMHg5MiwgMHg5OCwgMHg5MCwgMHg5YywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhNiwgMHg3ZiwgMHhhNCwgMHg2NCwgMHg2NCwgMHg3MSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg4OCwgMHgxZSwgMHg3NiwgMHhmYiwgMHg2YSwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4YSwgMHhhNywgMHhlOSwgMHgzLCAweGY3LCAweDNlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweDE1LCAweGEyLCAweDlhLCAweDUsIDB4NzAsIDB4YmIsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjYsIDB4ZjcsIDB4MTUsIDB4MWEsIDB4ZjcsIDB4ZDAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4ZjcsIDB4ZSwgMHhkNywgMHhjZiwgMHgxZSwgMHg3OSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDlmLCAweGZiLCAweDRjLCAweDZjLCAweGZiLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE0LCAweDFhLCAweGZiLCAweDUxLCAweGYwLCAweDJmLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDFlLCAweGUsIDB4ODQsIDB4YSwgMHhmNywgMHg0NSwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDVmLCAweGZiLCAweDMzLCAweDE1LCAweGY3LCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGRkLCAweGY3LCAweDIsIDB4ZjcsIDB4NjUsIDB4MWEsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4ZjcsIDB4NTcsIDB4NGMsIDB4ZWEsIDB4MWUsIDB4YTIsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkZiwgMHgyMiwgMHhjNiwgMHhmYiwgMHgxOSwgMHhmYiwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmYiwgMHg1ZSwgMHhmYiwgMHhiLCAweGZiLCAweDMwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGZiLCAweDksIDB4MWUsIDB4ZSwgMHhmNywgMHhhMiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhmNywgMHgwLCAweGMxLCAweGY1LCAweGRmLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjksIDB4ZWUsIDB4ZTksIDB4YmQsIDB4MywgMHhmNywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1NCwgMHgxNSwgMHg2ZSwgMHg3OCwgMHg3YywgMHg3NywgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg4LCAweDc2LCAweDdiLCAweDc3LCAweDY1LCAweDZiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDcyLCAweDliLCAweGFhLCAweGJjLCAweGFhLCAweDkyLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDFmLCAweGFiLCAweDhlLCAweGFhLCAweDhlLCAweDlhLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4OTQsIDB4NywgMHg3YiwgMHg5NiwgMHg2MywgMHg5NCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4LCAweDU3LCAweDkzLCAweDY2LCAweDg3LCAweGJkLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDk3LCAweGEyLCAweGI2LCAweGE3LCAweDk4LCAweDZmLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDFlLCAweGE0LCAweDZjLCAweGE0LCAweDcwLCAweDk4LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDkwLCAweDE4LCAweGI0LCAweDgxLCAweGEwLCAweDgwLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDgwLCAweDllLCAweDgyLCAweDlhLCAweGEzLCAweDFhLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGE4LCAweGIwLCAweGE3LCAweGEwLCAweDc1LCAweDZjLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDdkLCAweDgwLCAweDc4LCAweDFlLCAweDgwLCAweDc4LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDYwLCAweDFhLCAweDk3LCAweDg2LCAweGFhLCAweGEwLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDliLCAweGEyLCAweDE5LCAweGE4LCAweDlmLCAweDk2LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDFiLCAweGFlLCAweDlhLCAweDZjLCAweDdiLCAweDViLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDVlLCAweDg4LCAweDFmLCAweDcwLCAweDhhLCAweDZlLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDdiLCAweDgsIDB4ODEsIDB4NywgMHg5YywgMHg3ZiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHhhZiwgMHg4OCwgMHg4LCAweGI3LCAweDg4LCAweGJkLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDFhLCAweDVmLCAweDVlLCAweDg2LCAweDg2LCAweDZjLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGIwLCAweDcwLCAweDFlLCAweDc4LCAweGE0LCAweDdmLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDk4LCAweDgzLCAweDg1LCAweDE4LCAweDY4LCAweDkzLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDc4LCAweDFlLCAweDk3LCAweDcwLCAweDk1LCAweDdlLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDZmLCAweDdiLCAweDcxLCAweDZjLCAweDcyLCAweDcyLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDhhLCAweDFlLCAweDhhLCAweGEyLCAweDk5LCAweDlhLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDgsIDB4OTQsIDB4OWUsIDB4OTUsIDB4YTMsIDB4YWYsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgyZiwgMHhhMCwgMHg3NiwgMHhmNywgMHg3MCwgMHhjYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg3NywgMHgxMiwgMHhmNywgMHg4MywgMHhlNSwgMHgzYiwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmMCwgMHhhYywgMHhmNywgMHg3MCwgMHgxNSwgMHgxMywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YywgMHhmYiwgMHg3MCwgMHhjYiwgMHhmNywgMHg3MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhjYywgMHhmYiwgMHg3NCwgMHhmNywgMHg3MSwgMHg0YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhmYiwgMHg2YywgMHg2LCAweGUsIDB4ZmMsIDB4MzAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4NjIsIDB4YSwgMHg3ZiwgMHg2ZCwgMHgxZCwgMHgxMywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg4MSwgMHhhLCAweGRmLCAweDYyLCAweDFkLCAweDlhLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGUwLCAweDYyLCAweDZlLCAweDZjLCAweDYxLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDdkLCAweDliLCAweDdmLCAweDFmLCAweDEzLCAweGQwLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDlmLCAweDgxLCAweDc1LCAweDFhLCAweDUzLCAweDI4LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDgxLCAweDFlLCAweGUsIDB4ZmIsIDB4ZGQsIDB4ZjcsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OCwgMHgxLCAweDhkLCAweGY3LCAweDNhLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDYsIDB4YTQsIDB4ZjcsIDB4OCwgMHg1LCAweGZiLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhmYywgMHgzMCwgMHg3ZSwgMHhmNywgMHgyOCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweGY3LCAweDI4LCAweDMsIDB4ODIsIDB4YzgsIDB4M2MsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgxNCwgMHg4ZSwgMHg4ZCwgMHgxZCwgMHg4ZCwgMHg3OSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlOCwgMHhmOSwgMHg1MywgMHg1LCAweDQ1LCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4ZmQsIDB4NTMsIDB4NSwgMHhlLCAweDdkLCAweGE4LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGE4LCAweDEsIDB4ZjgsIDB4YSwgMHhmMiwgMHgzLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYzLCAweDE1LCAweDMwLCAweGE0LCAweGZiLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGY3LCAweDM4LCAweGY3LCAweDI0LCAweGY3LCAweDgyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGY3LCAweDE1LCAweDRiLCAweGViLCAweDMyLCAweGZiLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE0LCAweGZiLCAweGEyLCAweGZiLCAweDYyLCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGY3LCAweDgxLCAweDE1LCAweGQ1LCAweGEyLCAweGI2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGM0LCAweDFiLCAweGIwLCAweDk4LCAweDZiLCAweDVhLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGZjLCAweDdlLCAweGZiLCAweDgsIDB4ZmIsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhmOCwgMHgyZCwgMHg5ZiwgMHg5MSwgMHgxZiwgMHhlLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGY5LCAweDFlLCAweDc3LCAweDEsIDB4OTAsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4YWMsIDB4NiwgMHg1MywgMHg2MCwgMHg4ZSwgMHhhOSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4ZiwgMHg4YywgMHg5MCwgMHgxZiwgMHhmNywgMHgzYSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHg0OSwgMHg3YiwgMHg1MiwgMHg3ZCwgMHhmYiwgMHgyNywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHg4OSwgMHg3NCwgMHg1LCAweDhlLCAweDlmLCAweGE2LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDFiLCAweDkzLCAweGFlLCAweDhhLCAweDc0LCAweDg4LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDhhLCAweDg3LCAweDFmLCAweGZiLCAweDE4LCAweGZjLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDYxLCAweDRjLCAweDg4LCAweDVlLCAweDhhLCAweDE5LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZjcsIDB4MywgMHhkYiwgMHg3NywgMHhmOCwgMHgzYSwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweGNjLCAweGY3LCAweDFhLCAweDMsIDB4NzAsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MywgMHg2LCAweGRhLCAweGY3LCAweDUzLCAweDUsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg0ZCwgMHg2OSwgMHg3MywgMHg3OSwgMHgzYSwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHg2LCAweGY3LCAweDU4LCAweGY3LCAweDNiLCAweDUsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4ZDcsIDB4ZDUsIDB4ZGEsIDB4MWEsIDB4ZjcsIDB4MTEsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4MjIsIDB4ZmIsIDB4MTEsIDB4NDksIDB4MjIsIDB4NTAsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YTEsIDB4N2YsIDB4NSwgMHhhMCwgMHg5OSwgMHhiNiwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHgxYiwgMHhlOCwgMHg4YiwgMHgzNiwgMHg3OCwgMHgzZSwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHg1MiwgMHg0NSwgMHgxZiwgMHg1YSwgMHg1MCwgMHg4YiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0YiwgMHhmYiwgMHg0YiwgMHg4LCAweGUsIDB4N2UsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4NzcsIDB4ZjgsIDB4OTEsIDB4ZDIsIDB4MTIsIDB4ZjcsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZiwgMHgzNCwgMHhmNywgMHgxNSwgMHgxMywgMHhmMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhmNywgMHhlZiwgMHgxNSwgMHhlZiwgMHhjNCwgMHg2NiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg1OCwgMHgzMSwgMHg1MSwgMHg2OCwgMHg3NiwgMHhhNCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxZiwgMHhhMiwgMHg3OCwgMHg3YiwgMHhhMiwgMHg3NCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg2MywgMHg4NCwgMHg1NiwgMHg4MCwgMHg5MiwgMHg0YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhmNywgMHgzMCwgMHhmNywgMHgxOCwgMHhlYywgMHhmNywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHg2YSwgMHhjMSwgMHg1ZiwgMHhhYiwgMHgxZiwgMHgxMywgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHhiZSwgMHg5YywgMHhiNywgMHhiNSwgMHgxYSwgMHhlNywgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHg0YSwgMHgyMywgMHg0YywgMHg0NiwgMHg0YiwgMHg2MywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3ZSwgMHg1LCAweGFlLCAweGE2LCAweGE2LCAweGIzLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGM5LCAweGEyLCAweDY1LCAweDYzLCAweGZiLCAweDksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4NjMsIDB4NWYsIDB4ODMsIDB4MWYsIDB4ZSwgMHhhMCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYSwgMHhlZCwgMHhmOCwgMHg0NywgMHg3NywgMHgxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweGY3LCAweDE0LCAweGY3LCAweGQsIDB4Y2QsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHhmNywgMHgyYSwgMHgxNSwgMHg2MiwgMHhmYiwgMHgyYSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweDYsIDB4YjUsIDB4ZjcsIDB4MmEsIDB4NSwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGE2LCAweGVkLCAweDUsIDB4NDYsIDB4NiwgMHhmNywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDQ3LCAweDUsIDB4NDksIDB4NiwgMHhmYywgMHgzYywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg2ZiwgMHgyMiwgMHg1LCAweGY3LCAweGVmLCAweGY4LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OGQsIDB4ODksIDB4M2QsIDB4ZmIsIDB4YTcsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg2LCAweGUsIDB4N2UsIDB4YjMsIDB4NjMsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGQsIDB4ZjcsIDB4NCwgMHhkNywgMHhmNywgMHgxLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGM3LCAweGY0LCAweDEzLCAweGI4LCAweGQ0LCAweGY4LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MmEsIDB4ZGYsIDB4MzgsIDB4MjUsIDB4NDAsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4M2QsIDB4NmQsIDB4N2YsIDB4YTYsIDB4YTQsIDB4N2IsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzgsIDB4YTIsIDB4N2QsIDB4N2EsIDB4YTAsIDB4NjgsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NmMsIDB4N2IsIDB4NWYsIDB4NmQsIDB4YWMsIDB4NWQsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjksIDB4ZjcsIDB4MjUsIDB4ZWQsIDB4ZjcsIDB4M2MsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4ZjcsIDB4MjAsIDB4ZmIsIDB4MjQsIDB4MWYsIDB4YWQsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg5MiwgMHg2LCAweGFmLCAweGY3LCAweDEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhZiwgMHg2LCAweGUsIDB4N2MsIDB4YWIsIDB4ZjgsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhmNywgMHg5NiwgMHg3NywgMHgxLCAweGEyLCAweGY3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzQsIDB4ZjcsIDB4MTAsIDB4MywgMHhmNywgMHg3YiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHgxNSwgMHhiYiwgMHhlZSwgMHhkZCwgMHhlOCwgMHhmNywgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg4NSwgMHhhMywgMHgxOCwgMHhmYiwgMHhkZCwgMHg1YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhmYiwgMHg4YywgMHhmYiwgMHg0YSwgMHgxYSwgMHgzZiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMCwgMHhmNywgMHgzMiwgMHhmNywgMHhmLCAweGY3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHhmNywgMHgzMCwgMHhmNywgMHgxMCwgMHg0YiwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg2ZSwgMHg2ZCwgMHg4OCwgMHg4MiwgMHg3MywgMHgxZSwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjZSwgMHgxNSwgMHhjNywgMHhhMSwgMHhkOCwgMHhhMCwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhkZSwgMHhhYiwgMHg4ZCwgMHg5MywgMHhiNywgMHgxYiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg1OCwgMHg3NywgMHgzZiwgMHg1OSwgMHhmYiwgMHgxYywgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgxZiwgMHg1YywgMHg3OSwgMHg3MiwgMHg3MywgMHg2YywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg4YSwgMHhjMCwgMHhhNCwgMHgxZiwgMHhlLCAweGEwLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGMwLCAweGY3LCAweDUsIDB4MSwgMHhkZSwgMHhmOCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDI0LCAweDE2LCAweGY4LCAweDExLCAweGY5LCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmMsIDB4MTEsIDB4NiwgMHgzNCwgMHhmYiwgMHg1MiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDYsIDB4YzgsIDB4YWUsIDB4YTMsIDB4OWIsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHhmLCAweDYsIDB4ZmIsIDB4ZDYsIDB4ZmMsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweDdlLCAweGE5LCAweGY5LCAweGQsIDB4YWMsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4ZWMsIDB4OTQsIDB4ZjcsIDB4MywgMHhlMSwgMHhmNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGU4LCAweDEzLCAweGY4LCAweGY3LCAweDRiLCAweGY3LCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDU5LCAweDdhLCAweGZiLCAweDE2LCAweDVlLCAweGZiLCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDZiLCAweDliLCAweGZiLCAweDE3LCAweGY3LCAweDQ5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4ZjEsIDB4ZGQsIDB4ZjcsIDB4MTEsIDB4ZTUsIDB4NTAsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4YTgsIDB4MWUsIDB4OTAsIDB4NywgMHgxMywgMHhmNCwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhjZCwgMHhiNiwgMHhlMiwgMHgxYSwgMHhmNywgMHgxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4YWIsIDB4NTUsIDB4ZmIsIDB4MiwgMHgzOCwgMHgzOSwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHhiNCwgMHg0MywgMHhhYywgMHg2OCwgMHgxZSwgMHhhNSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxMywgMHhmOCwgMHhkNywgMHgzMSwgMHhhMCwgMHg3MSwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg0YywgMHg2NSwgMHg0YSwgMHg0NywgMHgzOSwgMHg3OSwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhlYSwgMHhiZSwgMHhiZCwgMHhjNSwgMHhiMiwgMHgxZSwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHgxNSwgMHg1YiwgMHhiOCwgMHg2MSwgMHhiNywgMHhjOCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhhMiwgMHhjMiwgMHhjNiwgMHgxZSwgMHgxMywgMHhmNCwgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHg2NSwgMHg0NSwgMHg0YiwgMHg2NSwgMHg2NSwgMHg2OCwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweDk2LCAweDc2LCAweGY3LCAweDkzLCAweDc3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweGFiLCAweDEsIDB4ZjcsIDB4NDUsIDB4ZjcsIDB4ZjgsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4OWUsIDB4ZjcsIDB4MWMsIDB4YWYsIDB4ZDEsIDB4MWUsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YTYsIDB4YTgsIDB4YWQsIDB4MWIsIDB4YmUsIDB4OGEsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4ODgsIDB4ODgsIDB4MmUsIDB4NjMsIDB4MjUsIDB4MWYsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4N2MsIDB4ODYsIDB4NmMsIDB4MWIsIDB4N2MsIDB4NTksIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4MWYsIDB4ZmIsIDB4NGIsIDB4ZmMsIDB4MiwgMHgxNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhiZSwgMHhmNywgMHhkLCAweGY3LCAweGE3LCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDE4LCAweDU3LCAweGUwLCAweGZiLCAweDIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4MzQsIDB4ZmIsIDB4MmYsIDB4ZmIsIDB4OCwgMHgyOCwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhlNiwgMHhhNiwgMHg5YiwgMHg5MSwgMHg5MywgMHg5ZCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhmYiwgMHg5LCAweDIxLCAweDJjLCAweGZiLCAweDksIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhlLCAweGZiLCAweGRkLCAweDdlLCAweGY3LCAweDI2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGY3LCAweDI3LCAweDEyLCAweGEyLCAweGY3LCAweDI4LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI4LCAweDEzLCAweGUwLCAweGEyLCAweGM4LCAweDQzLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDYyLCAweDYwLCAweDZjLCAweDZiLCAweDYzLCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGU4LCAweGY3LCAweGQ5LCAweDQzLCAweDFkLCAweGFiLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDZjLCAweDZhLCAweDYzLCAweDFlLCAweGUsIDB4ZmIsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzYsIDB4NzYsIDB4ZjcsIDB4ZDAsIDB4NzcsIDB4ZjcsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4MSwgMHhhMiwgMHg2ZCwgMHgxZCwgMHg0YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHgzLCAweDcyLCAweGZiLCAweDMzLCAweDE1LCAweDllLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlLCAweGJjLCAweGM0LCAweDFhLCAweGEyLCAweDc5LCAweDkzLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDFlLCAweDdhLCAweDk3LCAweDdiLCAweDk5LCAweGFhLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGE4LCAweGFhLCAweGI0LCAweGE3LCAweGM1LCAweDdhLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE4LCAweGZiLCAweDQ0LCAweDM3LCAweDdjLCAweDg3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweGY4LCAweGNkLCAweDE1LCAweGIzLCAweGFhLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGI0LCAweGFjLCAweDZiLCAweDYyLCAweDYwLCAweDZhLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDVmLCAweDZkLCAweGFjLCAweGI0LCAweDFlLCAweGUsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NzYsIDB4ZjgsIDB4OWUsIDB4NzcsIDB4MSwgMHhhYSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgzLCAweGY4LCAweDdkLCAweDgzLCAweDE1LCAweGNmLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NiwgMHhmNywgMHg1NSwgMHhmOCwgMHgzOCwgMHhmNywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGNmLCAweDcsIDB4ZmMsIDB4OTAsIDB4ZmIsIDB4N2QsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg3LCAweGUsIDB4MmYsIDB4ZjEsIDB4ZTUsIDB4ZGQsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4Y2YsIDB4MTIsIDB4MTMsIDB4YTAsIDB4ZGUsIDB4ZjcsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjgsIDB4NWEsIDB4Y2YsIDB4ZmMsIDB4NWEsIDB4NiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhiOCwgMHgxNSwgMHhmOCwgMHg1YSwgMHg2LCAweDEzLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweGZjLCAweDVhLCAweDcsIDB4ZSwgMHgyZiwgMHg5OCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg5ZSwgMHg3NywgMHgxLCAweGY4LCAweGFmLCAweGY3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGMzLCAweDcsIDB4ZmMsIDB4NWUsIDB4ZjcsIDB4N2QsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHg3LCAweGY4LCAweDYsIDB4ZmIsIDB4NTUsIDB4ZmMsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTUsIDB4NSwgMHg0NywgMHg3LCAweGUsIDB4N2UsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4ZjcsIDB4ZjUsIDB4ZjcsIDB4NTgsIDB4NmMsIDB4YWEsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4ZjcsIDB4MjgsIDB4ZmIsIDB4MCwgMHhmNywgMHhlLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweDEzLCAweGNjLCAweGY3LCAweDNiLCAweGY3LCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGE4LCAweDg0LCAweGEzLCAweGM2LCAweDlhLCAweGFhLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDE5LCAweGY3LCAweDE5LCAweGUyLCAweGM2LCAweGJjLCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGJhLCAweDY1LCAweGVjLCAweGZiLCAweDI5LCAweGZiLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NGQsIDB4NDcsIDB4NjcsIDB4YTUsIDB4NmQsIDB4YWUsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YTQsIDB4YWQsIDB4OWYsIDB4ODMsIDB4OTgsIDB4ODMsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODQsIDB4OTQsIDB4ODUsIDB4OTIsIDB4OTQsIDB4MWEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4YTAsIDB4YjYsIDB4OWMsIDB4YTcsIDB4YWEsIDB4YTgsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4NTUsIDB4NzEsIDB4NTksIDB4M2MsIDB4MmUsIDB4MWUsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4ODQsIDB4NTksIDB4ODgsIDB4NmEsIDB4OCwgMHgzMywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHgzYywgMHhhLCAweGY3LCAweDNlLCAweDc5LCAweGI5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YjAsIDB4NjYsIDB4YmIsIDB4NWMsIDB4NzcsIDB4ZTcsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTQsIDB4YmIsIDB4ZjcsIDB4MTcsIDB4YjIsIDB4MTIsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjcsIDB4YSwgMHhkNywgMHhmOCwgMHhjLCAweGI5LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGMwLCAweGY3LCAweGYwLCAweGY3LCAweGFhLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ZTMsIDB4ZDAsIDB4YmIsIDB4YTgsIDB4OWEsIDB4NzUsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjIsIDB4NDAsIDB4NDUsIDB4NWYsIDB4NmEsIDB4NmYsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4MWUsIDB4ZjcsIDB4MjIsIDB4NGMsIDB4MTUsIDB4N2UsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4Y2YsIDB4ZjcsIDB4ZCwgMHhjZiwgMHhmNywgMHgxZSwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHhmYiwgMHgyNywgMHhmNywgMHgxNSwgMHhmYiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1YywgMHhmYiwgMHg0MCwgMHhmYiwgMHgyOCwgMHhmYiwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZCwgMHhmNywgMHg4LCAweGZiLCAweDVhLCAweGY3LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweGQxLCAweGE3LCAweGFhLCAweGNjLCAweDFlLCAweDdlLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NzAsIDB4NTAsIDB4NTcsIDB4NzYsIDB4MzAsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4ZmIsIDB4YywgMHhmNywgMHgyNSwgMHhmNywgMHgyNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhmNywgMHgxOSwgMHhmMSwgMHhmNywgMHgyOCwgMHhmNywgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHhmYiwgMHgyNiwgMHhmYiwgMHg4LCAweDFmLCAweDEzLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDM0LCAweDU5LCAweGZiLCAweGEsIDB4M2UsIDB4NmMsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OWYsIDB4OTIsIDB4OGMsIDB4OTEsIDB4OGMsIDB4OTIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4ZjcsIDB4OTUsIDB4NSwgMHg0NCwgMHg2LCAweDgwLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YTQsIDB4N2QsIDB4ODEsIDB4YTYsIDB4NWIsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NGIsIDB4ZmIsIDB4MzUsIDB4M2YsIDB4MWYsIDB4MTMsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4ZmIsIDB4MywgMHhkMCwgMHg3MywgMHhhOCwgMHhjNywgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHg5YiwgMHg5NiwgMHgxZSwgMHhlLCAweDUxLCAweDFkLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZjksIDB4MjgsIDB4MywgMHhmNywgMHgxNSwgMHgxNiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDVmLCAweDc2LCAweDllLCAweDlmLCAweDkwLCAweDhkLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDkyLCAweDNmLCAweGEsIDB4NWIsIDB4NjksIDB4ODMsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4YSwgMHg2OCwgMHg3LCAweGY4LCAweGMsIDB4ZjgsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzQsIDB4MWQsIDB4ZmIsIDB4NGQsIDB4NiwgMHhlLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGFiLCAweGY3LCAweGM2LCAweGE5LCAweGY3LCAweGExLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY4LCAweDNlLCAweGY3LCAweDJkLCAweDI1LCAweGVhLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI3LCAweDEzLCAweGYwLCAweDczLCAweDE2LCAweGY3LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4M2EsIDB4YmUsIDB4ZjcsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjEsIDB4MzgsIDB4YTcsIDB4NTgsIDB4OWIsIDB4MWYsIDB4OGQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlNCwgMHhjZCwgMHg5YiwgMHhmNywgMHhjLCAweGFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4MWEsIDB4ZjcsIDB4MWYsIDB4ZmIsIDB4NDUsIDB4OGMsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4YTQsIDB4NjgsIDB4NiwgMHhiNSwgMHhhYSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgxZiwgMHhmYiwgMHgxOSwgMHhmYywgMHg3NiwgMHg3YSwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg4NiwgMHg2OCwgMHg4NiwgMHgxOSwgMHhmNywgMHhiOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgxNSwgMHgxMywgMHhmMCwgMHhkMywgMHhkOSwgMHg3NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDVmLCAweDcyLCAweGZiLCAweDE4LCAweGZiLCAweDFiLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDk1LCAweGE0LCAweDkzLCAweDhjLCAweDkzLCAweDhmLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGQ1LCAweGY3LCAweGE2LCAweDE1LCAweGM4LCAweGY3LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OWYsIDB4OTAsIDB4OTEsIDB4YTMsIDB4YjEsIDB4MWIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4ZDEsIDB4OWYsIDB4NTUsIDB4NTUsIDB4ZmIsIDB4MzgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg4ZSwgMHgzYiwgMHgxZiwgMHhlLCAweDkwLCAweDc5LCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGZiLCAweGFlLCAweDEsIDB4YWIsIDB4ZjcsIDB4MmUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhiNiwgMHhmNywgMHgyZCwgMHgxNSwgMHgyZiwgMHg0MiwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgzYywgMHgxYiwgMHg3ZCwgMHhmYiwgMHgxNiwgMHg5ZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhmNywgMHg0NSwgMHhmMywgMHhmNywgMHg4MywgMHhmNywgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhjNSwgMHg0OSwgMHgzMiwgMHg3ZiwgMHg4YSwgMHg3ZSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg4MSwgMHgxZCwgMHg4MSwgMHg4MywgMHg3ZSwgMHg3NSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg3ZiwgMHg4ZiwgMHg5MCwgMHg3YywgMHgxZiwgMHg5NCwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg5NiwgMHg1NCwgMHgxYiwgMHhmYiwgMHg4NywgMHhmYiwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3OSwgMHhmYiwgMHg3MiwgMHhmYiwgMHg0OSwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHhmNywgMHgxNiwgMHhmNywgMHgxNiwgMHhlNiwgMHhkMywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHgxZiwgMHhlLCAweGM3LCAweDhiLCAweGFkLCAweGY4LCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDEsIDB4ZjgsIDB4YWUsIDB4ZjcsIDB4MjcsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHhmNywgMHgxMiwgMHgxNSwgMHhmNywgMHgxNCwgMHhmOCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgxZCwgMHhmYiwgMHgyYywgMHgyYywgMHgyNSwgMHg2MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHhmYiwgMHg5NywgMHg2MSwgMHg3ZCwgMHg5OSwgMHhhMywgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5ZCwgMHg3NywgMHhhLCAweDhjLCAweGY3LCAweDEzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDVkLCAweGEsIDB4NzcsIDB4ODMsIDB4NzIsIDB4ZmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgzNywgMHgxZSwgMHg3NSwgMHgzZCwgMHg2YiwgMHg4MywgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg4LCAweGUsIDB4NTEsIDB4YSwgMHgxLCAweDcwLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDFkLCAweDU1LCAweDdkLCAweDk1LCAweDljLCAweDk4LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDkwLCAweDllLCAweDdlLCAweGEsIDB4ZjcsIDB4NCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg0YywgMHg3ZSwgMHg4OSwgMHg3ZCwgMHg4OSwgMHg3YiwgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4OTAsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4ZTYsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OWYsIDB4YWIsIDB4MSwgMHg3ZSwgMHgxNiwgMHhmNywgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDkwLCAweGFlLCAweDUsIDB4NWQsIDB4NzEsIDB4OTYsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4OGIsIDB4OGYsIDB4OGMsIDB4OGYsIDB4MWYsIDB4Y2IsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NSwgMHhmNywgMHgyLCAweGE2LCAweDZjLCAweDRlLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDdkLCAweDg5LCAweDdjLCAweDRjLCAweGEsIDB4NSwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg3ZiwgMHg3NSwgMHhmYiwgMHgyMiwgMHgxYiwgMHhjOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg1LCAweGFiLCAweDk0LCAweDk2LCAweDk3LCAweGIyLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ5LCAweDhiLCAweDM2LCAweDQ3LCAweDFmLCAweGE2LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGY3LCAweDUyLCAweDUsIDB4ZmMsIDB4YTksIDB4NjgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg4NSwgMHhhNCwgMHg4NywgMHg3YSwgMHg4YiwgMHhhLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDE0LCAweGZjLCAweDk0LCAweDgyLCAweDY3LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDYzLCAweDg0LCAweDE5LCAweGUsIDB4YzcsIDB4NzksIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YTYsIDB4YWYsIDB4ZjcsIDB4ZDMsIDB4YWYsIDB4MSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMCwgMHgzLCAweGY4LCAweDM3LCAweGY3LCAweGJhLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDg3LCAweGFhLCAweDg4LCAweDY1LCAweDFhLCAweDg0LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDg5LCAweDgxLCAweDFlLCAweDg0LCAweDY4LCAweDYwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDg3LCAweDg0LCAweDgsIDB4NzQsIDB4N2QsIDB4NjAsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4MWIsIDB4NmEsIDB4ZmIsIDB4MTQsIDB4YmQsIDB4ZjcsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjcsIDB4ZjQsIDB4ZjcsIDB4NTksIDB4ZjcsIDB4MzQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhiYiwgMHgzYiwgMHgyNiwgMHgxZiwgMHhhOCwgMHg4NywgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MSwgMHg1LCAweDZjLCAweDYsIDB4ODEsIDB4ODYsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NmYsIDB4MWIsIDB4N2UsIDB4ODAsIDB4OTAsIDB4OTAsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OTQsIDB4NzMsIDB4NjgsIDB4OTYsIDB4NDcsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4ZmIsIDB4MzQsIDB4ZmIsIDB4ODgsIDB4ZmIsIDB4NWMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4ZjcsIDB4MWMsIDB4MzksIDB4ZjcsIDB4MzksIDB4ZDcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhhNCwgMHhhNCwgMHhjMSwgMHgxZiwgMHg5NywgMHg5NCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0OSwgMHg5ZCwgMHhkMCwgMHg5MywgMHg4YSwgMHhjMCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhhZiwgMHhmYiwgMHhiMywgMHg3LCAweGUsIDB4ZjcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhhZSwgMHhmNywgMHhiYSwgMHhiNywgMHhmNywgMHg5OSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDczLCAweDE2LCAweDc1LCAweDFkLCAweDVlLCAweDhlLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGE1LCAweDFhLCAweDhmLCAweDhjLCAweDhmLCAweDhjLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGNkLCAweGY3LCAweDg2LCAweDUsIDB4ZjcsIDB4ODMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhmYiwgMHg4NiwgMHg4MywgMHg2YiwgMHg3OSwgMHg3YSwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxOSwgMHg2OCwgMHhmNywgMHhkMSwgMHhhZSwgMHg3LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDY0LCAweDk3LCAweGE3LCAweDFhLCAweDhlLCAweDhiLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDhmLCAweDFlLCAweGY3LCAweDE5LCAweGY4LCAweDc5LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGE0LCAweDg1LCAweGIzLCAweDkxLCAweDE5LCAweDYxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4ODMsIDB4YTEsIDB4N2IsIDB4NzQsIDB4MWEsIDB4ODYsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4OGEsIDB4ODYsIDB4MWUsIDB4NTIsIDB4ZmIsIDB4NWIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4MywgMHg2LCAweGMxLCAweGY3LCAweDViLCAweDliLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDhiLCAweGMzLCAweDhkLCAweDgyLCAweGEsIDB4YmUsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4N2IsIDB4NzQsIDB4MWEsIDB4ODYsIDB4OGEsIDB4ODYsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4MWUsIDB4ZmIsIDB4MTgsIDB4ZmMsIDB4NzksIDB4ODAsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4ODYsIDB4NjYsIDB4ODUsIDB4MTksIDB4ZSwgMHhmYiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NiwgMHhmOSwgMHhlLCAweGFlLCAweDEsIDB4NmIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4MWQsIDB4NjAsIDB4OGQsIDB4NmUsIDB4OWIsIDB4YTQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OGIsIDB4OTAsIDB4OGMsIDB4OTAsIDB4MWUsIDB4ZjcsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NzcsIDB4OWEsIDB4YmUsIDB4OWUsIDB4OGQsIDB4NTYsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4ODYsIDB4YTAsIDB4NzUsIDB4ODgsIDB4N2EsIDB4OGEsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ODYsIDB4OGEsIDB4ODcsIDB4ZmIsIDB4MTgsIDB4ZmMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ODAsIDB4NjEsIDB4NzAsIDB4ODEsIDB4NjAsIDB4ODUsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDQ1LCAweGY3LCAweDNmLCAweGY4LCAweGNjLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGY3LCAweDEzLCAweGZiLCAweDEzLCAweGY4LCAweGNlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweGY3LCAweDc3LCAweGY5LCAweGUsIDB4MTUsIDB4YmQsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4N2MsIDB4NzMsIDB4OGIsIDB4YSwgMHg4NCwgMHgxZSwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgyZCwgMHg1LCAweGZiLCAweGIsIDB4NmIsIDB4NWQsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MWIsIDB4ODEsIDB4ODYsIDB4OTIsIDB4OTksIDB4OTgsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OTIsIDB4OTIsIDB4MWYsIDB4OTIsIDB4OTIsIDB4OTAsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4MWEsIDB4YWYsIDB4NmUsIDB4YTUsIDB4NjgsIDB4NjgsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NjAsIDB4NGUsIDB4ZDEsIDB4NjQsIDB4ZGMsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4ZTUsIDB4ZjEsIDB4YTYsIDB4MWUsIDB4ZjcsIDB4MCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg1LCAweDEzLCAweGQwLCAweDllLCAweGM0LCAweDlhLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDkzLCAweDgsIDB4YWUsIDB4ZmIsIDB4YmQsIDB4NywgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweGEwLCAweDc2LCAweGY5LCAweDMxLCAweDc3LCAweDEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4YjUsIDB4YWUsIDB4NiwgMHg2NCwgMHg3MCwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHg5MCwgMHg4YywgMHg5MCwgMHg4YywgMHg5MSwgMHgxZiwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3OSwgMHg5MywgMHg4OSwgMHg1LCAweGY3LCAweDEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4OTcsIDB4NzQsIDB4ODgsIDB4MWEsIDB4NzQsIDB4ODQsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4ODQsIDB4MWUsIDB4NjgsIDB4ZjcsIDB4YWMsIDB4YWUsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg4ZSwgMHg3NCwgMHg4ZCwgMHg3ZCwgMHhhOSwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkYywgMHgxOCwgMHhmNywgMHg2YywgMHhmNywgMHg1MCwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHg5OCwgMHg4YywgMHhhZiwgMHg5MCwgMHgxOSwgMHhhZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg2OCwgMHg3LCAweGIyLCAweDg3LCAweDljLCAweDg5LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDcyLCAweGZiLCAweDc4LCAweGZiLCAweDQ0LCAweDY0LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDg2LCAweDhjLCAweGM3LCAweGY3LCAweDcxLCAweDliLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDhiLCAweGJkLCAweDhmLCAweDE5LCAweGFlLCAweGZiLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDcsIDB4YmQsIDB4ODQsIDB4YTQsIDB4N2MsIDB4NzQsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NzksIDB4NGIsIDB4NzAsIDB4ODgsIDB4NjgsIDB4ODYsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1MywgMHgxZCwgMHg1NSwgMHg3ZSwgMHg5NiwgMHg5ZCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5NiwgMHg4ZSwgMHg5OCwgMHgxZiwgMHhmNywgMHgxNSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg5YiwgMHhjNywgMHhhOCwgMHg4YSwgMHhjMywgMHg4ZSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGJmLCAweDg0LCAweGEyLCAweDdiLCAweDc1LCAweDdjLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDUyLCAweDc2LCAweDgyLCAweDYwLCAweDg1LCAweDE5LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzcsIDB4OGIsIDB4YWUsIDB4NzEsIDB4NzYsIDB4ZjcsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ZjgsIDB4ODUsIDB4NzcsIDB4MTIsIDB4MTMsIDB4YjAsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4NjMsIDB4YWUsIDB4NiwgMHg1MCwgMHg3OSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhhNSwgMHg5MywgMHhhYiwgMHg5MywgMHhhNywgMHgxZiwgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgwLCAweDUsIDB4OGQsIDB4NiwgMHgxMywgMHg3MCwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhiZSwgMHg1LCAweGE3LCAweDYsIDB4ZjgsIDB4NywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHg4ZCwgMHg4OSwgMHhmYiwgMHhmLCAweGZjLCAweDQ3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjAsIDB4N2IsIDB4NTAsIDB4NmYsIDB4NzgsIDB4NTMsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHg2OCwgMHhmNywgMHhjYywgMHhhZSwgMHg3LCAweDU1LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGEwLCAweDk4LCAweDhmLCAweDljLCAweDkwLCAweDlmLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGYsIDB4ZjgsIDB4NTEsIDB4OWIsIDB4YzksIDB4YTQsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4OTEsIDB4MTksIDB4YWUsIDB4ZmIsIDB4NjgsIDB4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhmYywgMHg3MSwgMHg2ZiwgMHhhLCAweDU1LCAweGY4LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4NzEsIDB4NjgsIDB4NiwgMHhjMCwgMHg4OSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg2YywgMHgxYSwgMHhmYiwgMHhjLCAweGZjLCAweDM5LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFlLCAweDdmLCAweDkyLCAweDVhLCAweDdmLCAweDE5LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4MWQsIDB4MTIsIDB4MTMsIDB4YTAsIDB4NzAsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4YWUsIDB4NiwgMHg1MSwgMHg3OSwgMHg5ZCwgMHhiMCwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg5YiwgMHg5MCwgMHg5YywgMHgxZiwgMHhmNCwgMHhmOCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDEzLCAweDYwLCAweDU5LCAweGEsIDB4OGQsIDB4OTYsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4OTMsIDB4MWIsIDB4YWYsIDB4OTcsIDB4NzIsIDB4NmIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4NmEsIDB4ODMsIDB4NzEsIDB4NjQsIDB4MWQsIDB4ZmIsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NTcsIDB4MTgsIDB4MTMsIDB4YTAsIDB4NmQsIDB4MjEsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NTUsIDB4N2UsIDB4OCwgMHhlLCAweGM3LCAweDc5LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGYsIDB4YWQsIDB4MSwgMHg0ZCwgMHhhLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4ZjcsIDB4MmEsIDB4MTUsIDB4ZTcsIDB4ZTAsIDB4ZjgsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGMsIDB4ZjMsIDB4OGUsIDB4MjEsIDB4NzYsIDB4ZmIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhmYywgMHgxYywgMHhmYiwgMHg0NiwgMHg1MCwgMHg1YywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHgxZCwgMHhkNCwgMHhmYiwgMHgxNCwgMHhmNywgMHgzYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHhmNywgMHg0MywgMHhmNywgMHg5ZSwgMHhmNywgMHg1NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhmYiwgMHgxYiwgMHhkMCwgMHhmYiwgMHgxLCAweGZiLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVkLCAweGZiLCAweDdkLCAweGZiLCAweDg5LCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4ZDYsIDB4YWIsIDB4ZjcsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MSwgMHhmOCwgMHg2NywgMHhmNywgMHgyNiwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGY3LCAweGY2LCAweDZmLCAweDFkLCAweDIzLCAweDU0LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIzLCAweDFmLCAweGZiLCAweGJjLCAweGZiLCAweGY2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGJhLCAweGFlLCAweDYsIDB4NWEsIDB4NzgsIDB4YTMsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OGUsIDB4OTgsIDB4OGUsIDB4OTksIDB4MWYsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NSwgMHhmNywgMHgyNywgMHhmNywgMHg2MywgMHhhNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhmNywgMHgxMiwgMHgyMCwgMHhhYSwgMHgyMSwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg2OCwgMHg2LCAweGJlLCAweDg0LCAweGEzLCAweDg4LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGEsIDB4ODYsIDB4MWUsIDB4ZmIsIDB4ZiwgMHhmYywgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg0ZCwgMHg2YSwgMHg2YSwgMHg2MywgMHg4NCwgMHgxOSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGZiLCAweDY0LCAweGU4LCAweDVkLCAweGY3LCAweDQ2LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGY5LCAweGUsIDB4YWQsIDB4MTIsIDB4NGQsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhmNywgMHgzZiwgMHhmNywgMHgyYSwgMHgxNSwgMHhlNywgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgyZCwgMHhmNywgMHg0YywgMHhmMywgMHg4YywgMHgyMywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4LCAweDJkLCAweGZjLCAweDFkLCAweGZiLCAweDQ2LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGFjLCAweGVmLCAweDFlLCAweGZiLCAweDIzLCAweGZiLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDk5LCAweDczLCAweDUsIDB4YTIsIDB4YzQsIDB4YWQsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MWIsIDB4YmUsIDB4YWUsIDB4N2IsIDB4N2UsIDB4YjYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmMsIDB4ODEsIDB4YWIsIDB4YWYsIDB4ODMsIDB4YmMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjAsIDB4ZDIsIDB4ZTMsIDB4YzgsIDB4YjcsIDB4MWYsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4NSwgMHg1OCwgMHg2YiwgMHg1MSwgMHg3MywgMHg0ZSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg2YywgMHg4ZSwgMHg5NCwgMHg3MCwgMHgxZiwgMHg1NywgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg5MywgMHg2OSwgMHg4ZiwgMHg4LCAweDY2LCAweDkwLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDhmLCAweDFhLCAweDkwLCAweGFhLCAweGE4LCAweDlhLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweDg2LCAweGY3LCAweDU5LCAweGY3LCAweDkxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGY3LCAweDQyLCAweGZiLCAweDE5LCAweGNlLCAweDVkLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDdkLCAweGZiLCAweDg5LCAweDM4LCAweGJjLCAweDI3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NmMsIDB4MWYsIDB4OTUsIDB4ODcsIDB4OGIsIDB4OGIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4ODgsIDB4ODUsIDB4OGIsIDB4OGIsIDB4ZmIsIDB4NDAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4OCwgMHhlLCAweDkwLCAweGEwLCAweDc2LCAweGY5LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDEsIDB4ZjgsIDB4NmMsIDB4ZjcsIDB4MmIsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhmNywgMHhmZiwgMHgxNSwgMHhjNywgMHhmNywgMHg3YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDkwLCAweDkyLCAweGEwLCAweGFjLCAweDFiLCAweGNiLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDRmLCAweDI1LCAweDNiLCAweDUwLCAweGZiLCAweGIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YzIsIDB4ZmIsIDB4ZmYsIDB4OGUsIDB4MWQsIDB4NjYsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4YjAsIDB4OTQsIDB4OGQsIDB4OTUsIDB4OGUsIDB4OTgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZjcsIDB4NzQsIDB4NSwgMHhhOCwgMHg2LCAweGY2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweDUsIDB4ZjcsIDB4NWUsIDB4YWUsIDB4NiwgMHg1YiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg4ZCwgMHg3NSwgMHhjYywgMHgzOCwgMHhmNywgMHg4MCwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHhhMCwgMHhjOCwgMHhkZiwgMHhkNywgMHgxYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhmYiwgMHg0NCwgMHg4YiwgMHg0ZiwgMHgxZSwgMHhmYiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg2LCAweGJmLCAweDg0LCAweGEyLCAweDgyLCAweDc3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDhhLCAweDg3LCAweDhhLCAweDg0LCAweDFlLCAweGZiLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDcwLCAweDdiLCAweDUyLCAweDc3LCAweDgxLCAweDVmLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGUsIDB4MjEsIDB4NzksIDB4YWQsIDB4ZjksIDB4ZSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg4NSwgMHgxZCwgMHgxMywgMHhkOCwgMHg4ZCwgMHg3OSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg2LCAweGEyLCAweDk2LCAweDhmLCAweDk3LCAweGE0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDlhLCAweDg0LCAweDgzLCAweGEyLCAweDFmLCAweDgyLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDgwLCAweGI0LCAweDFiLCAweGY3LCAweDMwLCAweGU1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZjcsIDB4MTgsIDB4ZDMsIDB4NTQsIDB4YzIsIDB4NTEsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NGIsIDB4YmUsIDB4NDcsIDB4YjYsIDB4YzIsIDB4MWEsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4ZWEsIDB4ZjEsIDB4ZjcsIDB4NiwgMHhhNiwgMHhmYiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDFlLCAweGE2LCAweDg3LCAweDUsIDB4MTMsIDB4YjgsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWQsIDB4NSwgMHg2ZCwgMHg2LCAweDcyLCAweDdlLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDg3LCAweDFiLCAweDdjLCAweDdhLCAweDkyLCAweDkyLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGQ4LCAweDkzLCAweDc0LCAweDcwLCAweDkzLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDE5LCAweDM4LCAweDJiLCAweDI2LCAweDNiLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGM4LCAweDYzLCAweDFmLCAweGM4LCAweDYzLCAweGM5LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweDFhLCAweDc3LCAweDdlLCAweGZiLCAweDI2LCAweGZiLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4ZmIsIDB4NSwgMHg5YiwgMHhmNywgMHg0MCwgMHgxZSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg1LCAweGUsIDB4NTgsIDB4NTgsIDB4YSwgMHgxLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweGRmLCAweDYsIDB4OGQsIDB4YWUsIDB4NSwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg5MSwgMHhhOSwgMHg5NCwgMHg4ZSwgMHg5NywgMHg4ZiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHgxZSwgMHhmOCwgMHhhMywgMHg1LCAweGMwLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGZiLCAweDI5LCAweDFmLCAweGE2LCAweDg5LCAweGFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDUsIDB4ZmMsIDB4YmIsIDB4NiwgMHg2NSwgMHhmYiwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg4NCwgMHg1LCAweGYxLCAweGJlLCAweGQyLCAweGI0LCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDI2LCAweGZjLCAweGEzLCAweDc4LCAweDQ2LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDVlLCAweDhkLCAweDE5LCAweGUsIDB4YzcsIDB4NzksIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZTksIDB4YWQsIDB4MSwgMHhjZSwgMHhmNywgMHgxZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweGY5LCAweGUsIDB4MTUsIDB4YzksIDB4ODMsIDB4OTYsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4NWQsIDB4MjMsIDB4ZmIsIDB4YTgsIDB4MzgsIDB4YSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiYiwgMHg5OSwgMHhiYywgMHg5ZCwgMHg5YiwgMHg1NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDkzLCAweDkzLCAweDhiLCAweDkyLCAweDFiLCAweGJhLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDcyLCAweDg1LCAweDhhLCAweDg1LCAweDhhLCAweDg2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGZiLCAweGJiLCAweDUsIDB4MjEsIDB4NmYsIDB4NjUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYiwgMHgyMywgMHgxYiwgMHgyOCwgMHg3MywgMHhiNywgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg5YiwgMHhiYiwgMHg5NywgMHhiNywgMHgzZSwgMHgxZCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDg3LCAweDc2LCAweGY3LCAweDUzLCAweDc3LCAweGIyLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDVjLCAweGFlLCAweDEyLCAweGQzLCAweGY5LCAweDFlLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweDEzLCAweGI4LCAweGY3LCAweDdiLCAweDc5LCAweDE1LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjgsIDB4MWQsIDB4ZjgsIDB4ZjgsIDB4OTEsIDB4OTQsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YjAsIDB4OTYsIDB4MTksIDB4YWUsIDB4ZmIsIDB4NTQsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhiYSwgMHg4NywgMHg5ZCwgMHg4YSwgMHg2YywgMHgxYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHhmYywgMHgzMSwgMHg2ZiwgMHhhLCAweDU4LCAweGY4LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OGEsIDB4OTYsIDB4OGIsIDB4OTQsIDB4OTIsIDB4MWEsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4OGQsIDB4YmIsIDB4OGYsIDB4MWUsIDB4NjEsIDB4YSwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg5MywgMHg4MiwgMHg5NCwgMHg1MSwgMHg4LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4OGUsIDB4NzYsIDB4ZjcsIDB4OGIsIDB4NzcsIDB4ZjgsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MSwgMHhmNywgMHg3MCwgMHg3OSwgMHgxNSwgMHhhOCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDdiLCAweGY4LCAweDdhLCAweDUsIDB4OGQsIDB4NiwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg3YSwgMHg1LCAweGE4LCAweDYsIDB4ZjcsIDB4YTgsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4YWIsIDB4Y2IsIDB4YWEsIDB4OTgsIDB4YWEsIDB4OTAsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4ZmIsIDB4NGYsIDB4NjgsIDB4NywgMHhiOCwgMHg4ZSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3NCwgMHgxYSwgMHg3ZCwgMHg4NiwgMHg3YSwgMHg4MSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHgyZSwgMHhmYiwgMHhkOCwgMHg2ZiwgMHhhLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI4LCAweDUsIDB4ODgsIDB4YTQsIDB4ODksIDB4YTAsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YWEsIDB4OTksIDB4OWIsIDB4YmIsIDB4OGMsIDB4MWUsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YTEsIDB4NjksIDB4NywgMHhiZSwgMHg4MywgMHg5ZiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHgxYSwgMHhmYiwgMHgyOCwgMHhmYiwgMHhjOCwgMHg2ZiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGY3LCAweGUwLCAweDUsIDB4OGEsIDB4OTQsIDB4OGIsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4MWEsIDB4YjAsIDB4YTgsIDB4OTQsIDB4YWIsIDB4OGUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZmIsIDB4YTksIDB4NjksIDB4NywgMHhjYiwgMHg4MCwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg5NiwgMHg0MywgMHg4LCAweGUsIDB4OTAsIDB4NTgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDczLCAweDE2LCAweGY3LCAweDZhLCAweGFlLCAweDYsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NTcsIDB4OTAsIDB4YWUsIDB4MWEsIDB4ZjcsIDB4NDIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NSwgMHg5NSwgMHg2MywgMHhiYSwgMHgyMCwgMHg2MCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2YiwgMHg4OSwgMHg2NywgMHg4OCwgMHgxZSwgMHg2OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHhhZSwgMHg3LCAweDNmLCAweDkyLCAweDdlLCAweGEyLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDQxLCAweGY3LCAweDc3LCAweDE4LCAweGY3LCAweDViLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweGJmLCAweGMxLCAweGEzLCAweDhlLCAweGEyLCAweDhmLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGZiLCAweDVmLCAweDY4LCAweDcsIDB4YWMsIDB4ODgsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4N2IsIDB4MWEsIDB4ODcsIDB4OGEsIDB4ODcsIDB4ODcsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4MzgsIDB4ZmIsIDB4M2EsIDB4NSwgMHg3YywgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHhkYSwgMHg5ZSwgMHgxYSwgMHhhZCwgMHg5YSwgMHhhMiwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHgxZSwgMHhhZSwgMHhmYiwgMHhjNSwgMHg2OCwgMHg3LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweGEzLCAweDgzLCAweDlhLCAweDU5LCAweGRmLCAweGZiLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDRmLCAweDRjLCAweGZiLCAweDMsIDB4ZmIsIDB4YywgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg3NSwgMHg3OCwgMHg4NCwgMHg4NywgMHg2YywgMHg4MiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NTgsIDB4NTgsIDB4YSwgMHgxLCAweGQ0LCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweGFlLCAweDYsIDB4NWQsIDB4OGQsIDB4NmMsIDB4OGMsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YzcsIDB4ZjcsIDB4NzksIDB4NmEsIDB4YSwgMHhjNCwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHg4MCwgMHg3OCwgMHgxYSwgMHg4MSwgMHg4NywgMHg3ZiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHgxZSwgMHhmYiwgMHgyZiwgMHhmYiwgMHg2YSwgMHg0OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg4ZCwgMHg4MywgMHg4MSwgMHhhNSwgMHgxOSwgMHg4NywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg5NiwgMHg5MiwgMHgxYSwgMHhhNiwgMHhhOCwgMHg5NCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHgxZCwgMHg0ZiwgMHhmYiwgMHg2MiwgMHg3OSwgMHg0YiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg1MSwgMHg4NiwgMHgxOSwgMHhlLCAweDU4LCAweDU4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4YSwgMHhlLCAweGZiLCAweGRkLCAweGZiLCAweDMzLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDdiLCAweGI4LCAweDEsIDB4NjYsIDB4ZmIsIDB4MzMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmYsIDB4NiwgMHg5MiwgMHhiOCwgMHg1LCAweDNiLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NzYsIDB4OGIsIDB4YTMsIDB4MWYsIDB4ZjcsIDB4MzIsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4NSwgMHhjNiwgMHg5OSwgMHg4YSwgMHg4ZiwgMHhiMCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHg2LCAweDkyLCAweGI4LCAweDUsIDB4ZmIsIDB4NWMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZjLCAweDE0LCAweGZiLCAweDFjLCAweDc2LCAweGY3LCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDFkLCAweGY3LCAweDFlLCAweGZiLCAweDMxLCAweDE1LCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MzIsIDB4ZjksIDB4ZGUsIDB4NSwgMHg1MCwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZGQsIDB4ZmIsIDB4MzEsIDB4YjgsIDB4ZjksIDB4NzksIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg2NCwgMHhmYiwgMHg0LCAweDE1LCAweDg0LCAweDVlLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWIsIDB4NiwgMHhmNywgMHg1YywgMHhmOSwgMHhkMywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcwLCAweDYsIDB4ODQsIDB4NWUsIDB4NSwgMHhkOSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweGEzLCAweDg4LCAweDc1LCAweDFmLCAweGZiLCAweDMxLCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDUsIDB4NTEsIDB4N2QsIDB4ODksIDB4ODYsIDB4NjYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgyZiwgMHhmNywgMHhkOSwgMHg3NiwgMHhmOCwgMHgxLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4Y2UsIDB4ZjcsIDB4YzQsIDB4MTUsIDB4ZTQsIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHhhMSwgMHhmNywgMHgxNSwgMHhmYiwgMHhhMSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweDYsIDB4ZmIsIDB4NDYsIDB4ZjgsIDB4MSwgMHg1LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhmYiwgMHgxMSwgMHhiZCwgMHgxLCAweDQwLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4ZjgsIDB4ODgsIDB4YmQsIDB4NywgMHhlLCAweDdmLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ5LCAweDc3LCAweDEsIDB4ZjcsIDB4OTAsIDB4ZjgsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4YSwgMHhmYiwgMHgzLCAweGY3LCAweDI3LCAweDUsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4N2EsIDB4YTAsIDB4NzAsIDB4MWIsIDB4NzAsIDB4NzgsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4NzYsIDB4YTAsIDB4NzgsIDB4OTgsIDB4ODIsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHgxZCwgMHhiNSwgMHg4NSwgMHg3NywgMHg3NCwgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweGY3LCAweDhlLCAweGY3LCAweDcsIDB4MTUsIDB4MmUsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4OTgsIDB4NzEsIDB4YSwgMHg5MCwgMHg5NCwgMHg0NCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MywgMHg2LCAweDdhLCAweDRkLCAweDZmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YTgsIDB4YTQsIDB4ODcsIDB4OGEsIDB4YjYsIDB4NGYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZSwgMHhmYiwgMHgzMywgMHgyZiwgMHgxZCwgMHhjYywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4NCwgMHhkZiwgMHg5NCwgMHhhZCwgMHgzOSwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YWMsIDB4ZjgsIDB4YSwgMHhjZiwgMHhmNywgMHg4MSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweGQzLCAweGY3LCAweDExLCAweDMsIDB4ZjcsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YywgMHgxNSwgMHg4OSwgMHg4ZCwgMHhlMywgMHhmNywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg3NywgMHgxZCwgMHg2NSwgMHhmYiwgMHgyZCwgMHhmYywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgxYSwgMHg3NywgMHhjMSwgMHg2MywgMHhlMCwgMHhmNywgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYywgMHhmNywgMHgzZSwgMHhmNywgMHgzZCwgMHhkOSwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHg0ZCwgMHg0YywgMHg2NCwgMHg2MywgMHg1ZCwgMHg2OSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhmYiwgMHhkOSwgMHgxNSwgMHg4YywgMHhjNywgMHhmNywgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHhiOSwgMHg4YiwgMHg1OCwgMHg3YSwgMHgzNiwgMHg0YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhmYiwgMHg1LCAweDg2LCAweDcwLCAweDhiLCAweGFhLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4NmUsIDB4N2UsIDB4Y2IsIDB4ZjcsIDB4OGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4NmEsIDB4YWMsIDB4MTIsIDB4ODYsIDB4ZjcsIDB4MTQsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4ZjcsIDB4ZDIsIDB4ZjcsIDB4MjEsIDB4MTUsIDB4NTEsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NmIsIDB4NWUsIDB4MWIsIDB4NmUsIDB4NWYsIDB4OTUsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4YzcsIDB4ZjcsIDB4NmQsIDB4ZTIsIDB4OTQsIDB4OTksIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ODMsIDB4ODUsIDB4ODMsIDB4ODUsIDB4ODEsIDB4MWYsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4ODcsIDB4ODEsIDB4N2UsIDB4MWEsIDB4MTMsIDB4ZDAsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NjcsIDB4YjcsIDB4M2MsIDB4ZmIsIDB4MWUsIDB4ZmIsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4M2MsIDB4ZmIsIDB4MmQsIDB4ZmIsIDB4MywgMHhkZSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHhmNSwgMHhiZSwgMHhkMywgMHhjYiwgMHhiOCwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGQzLCAweDVhLCAweDc2LCAweGY4LCAweDQzLCAweGI1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDc3LCAweDEyLCAweDc2LCAweGY3LCAweDEwLCAweDEzLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhlLCAweGY3LCAweDcsIDB4MTUsIDB4ODQsIDB4NmMsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4N2IsIDB4MWEsIDB4NGUsIDB4YzAsIDB4OGIsIDB4OTIsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZTIsIDB4YjIsIDB4YTMsIDB4MWUsIDB4NzUsIDB4OWIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg5MCwgMHg1NSwgMHg0YiwgMHg3NiwgMHgxYiwgMHg4NiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5NCwgMHgxZiwgMHhmNywgMHgzYywgMHhmOSwgMHg2LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDVkLCAweDgwLCAweGZiLCAweDE0LCAweDgxLCAweDZkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4OWUsIDB4ODUsIDB4NzMsIDB4N2MsIDB4NzIsIDB4MzUsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4MWYsIDB4OTksIDB4N2QsIDB4ODMsIDB4OWUsIDB4NjAsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OCwgMHhmYiwgMHgzNywgMHhmYiwgMHg1NSwgMHhmYiwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhiOCwgMHg1ZiwgMHhhMiwgMHgzOCwgMHhkZSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhkOSwgMHhiYywgMHhhOCwgMHgxZSwgMHhmYiwgMHgyNSwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhjZiwgMHhmNywgMHg4MCwgMHhlMiwgMHhiMCwgMHg5OCwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg2ZSwgMHg0NywgMHhmYiwgMHhhYywgMHgyYywgMHg2MywgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg5MCwgMHgxZSwgMHhlLCAweGZiLCAweDZlLCAweDdlLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDIxLCAweGFjLCAweDEsIDB4OTAsIDB4ZjcsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4ZTcsIDB4MywgMHg1MCwgMHgxZCwgMHhmNywgMHg3LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGQzLCAweDQ3LCAweDkzLCAweDY4LCAweGZiLCAweDM3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGZiLCAweDU1LCAweGZiLCAweDFjLCAweGZiLCAweDQsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4MzUsIDB4YSwgMHg4ZSwgMHhkYSwgMHg5ZSwgMHg4ZCwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHhhLCAweDY1LCAweDgyLCAweDU3LCAweDcwLCAweDNhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDY4LCAweDFmLCAweGUsIDB4ZmIsIDB4ZGQsIDB4ZmIsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4ZjgsIDB4ZDksIDB4YjUsIDB4ZjcsIDB4NzAsIDB4YTgsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhmOCwgMHgyYiwgMHgxNSwgMHhkNCwgMHg2LCAweDc2LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweGZiLCAweDU3LCAweDcwLCAweGZiLCAweDksIDB4OCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHg2ZSwgMHg3YywgMHg1NiwgMHg1YiwgMHgxYiwgMHg4MCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg5MiwgMHg4ZSwgMHg4ZiwgMHg5MCwgMHg4ZiwgMHg5MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5MiwgMHg4ZiwgMHg5MywgMHg5NiwgMHgxYSwgMHhhZiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg3ZSwgMHg3NCwgMHg2ZiwgMHg3OSwgMHg2YywgMHg0ZiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhiZiwgMHhmNywgMHg0MywgMHhiMywgMHhmNywgMHg2NywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhlMSwgMHgxZSwgMHhlNSwgMHg2LCAweDk0LCAweGI1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4NiwgMHhmNywgMHgzLCAweGE2LCAweGFhLCAweGY3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4MWIsIDB4OTMsIDB4OTQsIDB4ODgsIDB4ODAsIDB4ODgsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ODcsIDB4ODQsIDB4MWYsIDB4ODcsIDB4ODQsIDB4ODcsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4MWEsIDB4NmUsIDB4YTAsIDB4NzYsIDB4YTYsIDB4YTMsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4YjIsIDB4OWYsIDB4ODEsIDB4YzcsIDB4MzMsIDB4ZmIsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4ZmIsIDB4NSwgMHhmYiwgMHgxYywgMHg2OCwgMHgxZSwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZmIsIDB4NWYsIDB4YWQsIDB4ZjcsIDB4NGMsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzMsIDB4YWEsIDB4NzQsIDB4NzcsIDB4ZjcsIDB4YjYsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4NTcsIDB4ZTIsIDB4ZjcsIDB4N2IsIDB4ZjcsIDB4MSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5LCAweDEzLCAweGRlLCAweGQ5LCAweDkzLCAweDE1LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NGMsIDB4N2IsIDB4NDgsIDB4N2EsIDB4NDIsIDB4MWEsIDB4M2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4NzAsIDB4ZGIsIDB4ZjcsIDB4M2YsIDB4ZDMsIDB4ZGEsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4NDQsIDB4YTYsIDB4M2QsIDB4YTAsIDB4MWUsIDB4MzAsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4OTcsIDB4OWIsIDB4MWEsIDB4OTYsIDB4OTksIDB4YTIsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4ZWQsIDB4OTIsIDB4OTIsIDB4OGEsIDB4ODgsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODgsIDB4OTMsIDB4OTMsIDB4OGEsIDB4OTYsIDB4MWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHgzLCAweGNjLCAweGY3LCAweDQsIDB4OWYsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4ODcsIDB4OWEsIDB4MWYsIDB4Y2UsIDB4YzMsIDB4ZmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDllLCAweDczLCAweDY3LCAweDk5LCAweDViLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDNmLCAweDI1LCAweDNlLCAweDU0LCAweGE4LCAweDY0LCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFmLCAweDRiLCAweDY4LCAweDZiLCAweDc5LCAweDVlLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGI3LCAweDdiLCAweDlhLCAweDg2LCAweDFlLCAweDEzLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDdkLCAweDE1LCAweGE3LCAweGY3LCAweDExLCAweDYzLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDMyLCAweDgxLCAweDVlLCAweDQwLCAweDc1LCAweGFiLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGQ0LCAweGI2LCAweDkwLCAweDFmLCAweGIxLCAweGY3LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDEzLCAweGVkLCAweGFjLCAweGE3LCAweGY3LCAweDJhLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDk1LCAweDY4LCAweDcwLCAweDViLCAweDY4LCAweGZiLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDVmLCAweDhiLCAweGI5LCAweDlkLCAweDFlLCAweGUsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZjcsIDB4ODEsIDB4NzcsIDB4MTIsIDB4MTMsIDB4NzAsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4YSwgMHhhNCwgMHhlMywgMHhhZSwgMHhmNywgMHhhLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDgsIDB4YjYsIDB4YTcsIDB4YmUsIDB4ZGEsIDB4YjUsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OGYsIDB4N2MsIDB4ODMsIDB4N2QsIDB4NzAsIDB4NDQsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4MWYsIDB4NzgsIDB4NGYsIDB4NzksIDB4NGUsIDB4NjgsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjAsIDB4NmEsIDB4YTEsIDB4NmYsIDB4YjYsIDB4ZGQsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4Y2IsIDB4YjQsIDB4MWUsIDB4NzUsIDB4OWEsIDB4NSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg1MywgMHg0ZCwgMHg4ZiwgMHhhLCAweDkwLCAweDk2LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGM1LCAweGExLCAweGNiLCAweDFmLCAweGEzLCAweGQwLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDlmLCAweDFhLCAweGRhLCAweDUzLCAweDliLCAweDc1LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDZmLCAweGZiLCAweDI2LCAweDI5LCAweDFlLCAweDg5LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweGY4LCAweDJlLCAweDQwLCAweDdjLCAweDUzLCAweDgzLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDgyLCAweDFkLCAweDY2LCAweDFkLCAweGY4LCAweGMzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDRkLCAweDFkLCAweDUzLCAweDU1LCAweDczLCAweDg4LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDk1LCAweDMyLCAweDFkLCAweGE5LCAweDhiLCAweDZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDFkLCAweGZiLCAweDIsIDB4ZjgsIDB4N2YsIDB4MTUsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZSwgMHhmYywgMHgxNCwgMHhmYiwgMHg0ZSwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhmNywgMHgxYSwgMHgxLCAweGFhLCAweGY4LCAweDJiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDk5LCAweDg1LCAweDcyLCAweDFmLCAweDIzLCAweGZjLCAweDM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MzYsIDB4NzUsIDB4N2MsIDB4NWQsIDB4NjcsIDB4MWIsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4OTIsIDB4OTAsIDB4OGYsIDB4OGUsIDB4OTAsIDB4OGYsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGYsIDB4OTEsIDB4OGYsIDB4OTEsIDB4OTcsIDB4MWEsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4OTQsIDB4ODAsIDB4NzMsIDB4NzIsIDB4NzYsIDB4NmIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NWEsIDB4ZTAsIDB4ZTQsIDB4ZDYsIDB4YzksIDB4ZjcsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4MWUsIDB4ZjcsIDB4NiwgMHhmOCwgMHg0YSwgMHg0NSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg4OSwgMHhmYiwgMHhlLCAweDgwLCAweDE5LCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NGMsIDB4MTUsIDB4NDEsIDB4MWQsIDB4ZSwgMHg4MywgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg3NiwgMHhmOCwgMHg1NSwgMHg3NywgMHhmNywgMHhhMiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHgxMywgMHg3MCwgMHg3NCwgMHgxNiwgMHhmNywgMHhlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4ZjcsIDB4NTAsIDB4YjIsIDB4YTYsIDB4NSwgMHgxMywgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlLCAweGExLCAweGEzLCAweDI2LCAweGQ5LCAweDFiLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGRiLCAweGI3LCAweGEzLCAweDFmLCAweDc1LCAweDk2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4N2YsIDB4NzQsIDB4NjAsIDB4NzEsIDB4MWIsIDB4NjksIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4ZjcsIDB4MzIsIDB4NmMsIDB4MWYsIDB4Y2EsIDB4YzIsIDB4ZDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4YTIsIDB4ODUsIDB4YWYsIDB4OTAsIDB4MTksIDB4YWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NjgsIDB4NywgMHhhNSwgMHhhNCwgMHg4OSwgMHg3NCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhmLCAweDM5LCAweDY1LCAweDZkLCAweDFmLCAweDg5LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUsIDB4ZjgsIDB4NWIsIDB4NGMsIDB4N2YsIDB4MzgsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4ODUsIDB4ODIsIDB4MWQsIDB4NjYsIDB4MWQsIDB4ZjksIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4MWQsIDB4NTQsIDB4NTUsIDB4NzMsIDB4MWIsIDB4ODQsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OTUsIDB4OWYsIDB4OWIsIDB4YzUsIDB4OTEsIDB4YTEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjUsIDB4ZjgsIDB4OWYsIDB4N2YsIDB4YSwgMHhhYywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHgxZiwgMHg1YywgMHhmYiwgMHgyMiwgMHhmYywgMHg1NCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg3ZCwgMHg4YiwgMHg1NiwgMHhjZiwgMHhkYiwgMHhiNywgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhiNywgMHgxZSwgMHhlLCAweGY3LCAweDgsIDB4OTcsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4NzYsIDB4ZjgsIDB4MTksIDB4ZDQsIDB4MTIsIDB4MTMsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4ODMsIDB4YSwgMHhmOCwgMHgwLCAweGU4LCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OTIsIDB4MWIsIDB4YjgsIDB4NGQsIDB4ZmIsIDB4MmUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NDEsIDB4MWYsIDB4ZjcsIDB4YywgMHg2LCAweGJkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDk5LCAweGI4LCAweGIwLCAweGNiLCAweDhlLCAweDkxLCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUsIDB4YWQsIDB4OGMsIDB4OCwgMHg5NCwgMHg5MSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg3ZCwgMHg2YiwgMHgzOCwgMHg3MiwgMHgzYywgMHgxZiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg3ZCwgMHg1NywgMHg2ZSwgMHgxYSwgMHgxMywgMHhhMCwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHg4YiwgMHg5YywgMHhkYiwgMHhiOSwgMHhkOSwgMHhjMCwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3NSwgMHg5OCwgMHg1LCAweDczLCAweDg4LCAweDU3LCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDFiLCAweDg2LCAweDg3LCAweDkwLCAweDk0LCAweDlkLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGEwLCAweGM3LCAweDFmLCAweGEyLCAweGNlLCAweGE0LCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDFhLCAweGI3LCAweDczLCAweGFlLCAweDU0LCAweDM5LCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDNhLCAweDU4LCAweDFlLCAweDhhLCAweDhkLCAweDUsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4OTksIDB4YWQsIDB4YjIsIDB4MWEsIDB4Y2UsIDB4NGUsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4MzIsIDB4NGEsIDB4MjcsIDB4MzIsIDB4NTEsIDB4MWUsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4YzcsIDB4ZjcsIDB4NGUsIDB4NDYsIDB4N2IsIDB4NzIsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4ODIsIDB4NmQsIDB4YSwgMHg5YSwgMHhiMiwgMHg4ZSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHg2MCwgMHg2YSwgMHg1ZSwgMHhmYiwgMHgxZiwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2NSwgMHgxZSwgMHhlLCAweDg5LCAweDFkLCAweDEyLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDc4LCAweGEsIDB4YWYsIDB4NmQsIDB4MmUsIDB4MzAsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NzcsIDB4NGYsIDB4NzgsIDB4NTAsIDB4NmMsIDB4MWEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NzYsIDB4MWQsIDB4NmEsIDB4ODEsIDB4NjIsIDB4NjEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ODQsIDB4ODYsIDB4OTAsIDB4OTcsIDB4OTksIDB4OWYsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4YzksIDB4MWYsIDB4YTEsIDB4Y2QsIDB4YTMsIDB4ZDQsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4YSwgMHgxMywgMHg2MCwgMHg4OCwgMHhhLCAweGUsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4ZjgsIDB4MzUsIDB4YTgsIDB4NTIsIDB4MWQsIDB4ZTEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4YmYsIDB4ZjcsIDB4YWYsIDB4ZjcsIDB4MCwgMHhhNSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg1OSwgMHg0MCwgMHg0ZiwgMHhmYiwgMHhhYSwgMHgyYiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHhiZCwgMHg5ZiwgMHgxZSwgMHhmYiwgMHhiLCAweGJkLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGQ3LCAweDU2LCAweGRkLCAweGY3LCAweDM0LCAweGY3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQwLCAweGY3LCAweDI5LCAweGY3LCAweDFhLCAweGZiLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4NjUsIDB4ZmIsIDB4MzIsIDB4ZmIsIDB4MTcsIDB4ZmIsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmUsIDB4MWUsIDB4ZSwgMHg4NywgMHgxZCwgMHg1OSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2YiwgMHg0MywgMHg0NCwgMHhmYiwgMHg4YSwgMHg0ZiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHgxZiwgMHg4OCwgMHg4ZSwgMHhhZCwgMHhmMiwgMHg0NCwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg4NywgMHgzOCwgMHg4MSwgMHg2ZCwgMHhhLCAweGFmLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDcyLCAweDc1LCAweDRhLCAweGZiLCAweDg1LCAweDRmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDFmLCAweDY5LCAweDgzLCAweDZkLCAweDg3LCAweGEsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4YWIsIDB4YTEsIDB4YTgsIDB4ZTMsIDB4OTMsIDB4YWMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHg2MSwgMHhiMCwgMHhmNywgMHgyZiwgMHhkMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhiNiwgMHg3ZSwgMHg3NywgMHgxMiwgMHg4YywgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkOCwgMHhmMywgMHhmYiwgMHgzYywgMHgxNSwgMHg2NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhiMCwgMHg3LCAweDY4LCAweDZkLCAweDhiLCAweGE5LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweGY4LCAweDM3LCAweGIxLCAweGY3LCAweDI3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEsIDB4NiwgMHg3ZCwgMHg1NCwgMHg2ZiwgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGFiLCAweDg2LCAweDg0LCAweGFmLCAweDRiLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGZiLCAweDIyLCAweGZiLCAweDYwLCAweGZiLCAweDExLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGZiLCAweDUsIDB4ZjQsIDB4ZDQsIDB4YjgsIDB4YzUsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4MWYsIDB4OGQsIDB4ODksIDB4NGYsIDB4ZmIsIDB4NzcsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NmQsIDB4OGUsIDB4NTcsIDB4ODgsIDB4MTksIDB4YTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4MTUsIDB4ZDYsIDB4ZGMsIDB4ZjcsIDB4NjcsIDB4ZGQsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4NzAsIDB4NzQsIDB4NTQsIDB4NGEsIDB4ZmIsIDB4OTMsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4OGIsIDB4YmMsIDB4YTQsIDB4MWUsIDB4ZSwgMHhmYiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NiwgMHhmOCwgMHg2MiwgMHg3NywgMHgxLCAweDc2LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YWIsIDB4ZTgsIDB4OTUsIDB4YmIsIDB4YTUsIDB4Y2UsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhhMSwgMHhiZiwgMHhlZiwgMHhhNywgMHgxYiwgMHg5MSwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg4MywgMHg5MiwgMHgxZiwgMHg4MSwgMHg5NCwgMHg5OCwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHgxYiwgMHhhYSwgMHhhNywgMHhhNiwgMHhiOSwgMHhjZCwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4NywgMHg0OSwgMHg1MCwgMHhmYiwgMHhjLCAweDUxLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGMzLCAweGY3LCAweDQ2LCAweDQ4LCAweDdhLCAweDZjLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweDgyLCAweDZkLCAweGEsIDB4YWYsIDB4OWQsIDB4ODksIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4NWEsIDB4ZmIsIDB4M2MsIDB4NTYsIDB4ZmIsIDB4NDgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHhhNSwgMHg5MywgMHg3NiwgMHhmOCwgMHg1MSwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg3NywgMHgxMiwgMHg4ZSwgMHhhNiwgMHhmNywgMHgyZCwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhhOCwgMHgxMywgMHhkYywgMHg4NSwgMHhhLCAweDk2LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDg2LCAweDk3LCAweDFmLCAweDg2LCAweDlhLCAweDljLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDFiLCAweGNiLCAweGU0LCAweGIwLCAweGVjLCAweGJhLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDZjLCAweGIzLCAweDFmLCAweDY2LCAweGJiLCAweDYyLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDFhLCAweDkwLCAweDg3LCAweGJjLCAweGMwLCAweGM2LCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDU5LCAweDkzLCAweDFlLCAweGE2LCAweDg5LCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4NzksIDB4YSwgMHg3YiwgMHg4MiwgMHg5MSwgMHg5MCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg5MSwgMHg4MCwgMHg3ZSwgMHg5MCwgMHg3MiwgMHgxYiwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHg2NywgMHgzMiwgMHg2MiwgMHhhYSwgMHg1ZiwgMHhhYiwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhZSwgMHg1YywgMHhiMSwgMHg1YywgMHg2MCwgMHgxYSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2ZCwgMHg2NSwgMHg4MiwgMHg0MywgMHg3YywgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4MWQsIDB4ZjgsIDB4MzQsIDB4YjUsIDB4ZjcsIDB4MjUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHg1ZiwgMHhmNywgMHgyMSwgMHgxNSwgMHg3OSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg0ZSwgMHg3MiwgMHgxYiwgMHg4NCwgMHg4NywgMHg4ZiwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhjMSwgMHhmNywgMHg0MywgMHhhYywgMHhmNywgMHhlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGI1LCAweDQzLCAweDYsIDB4YjIsIDB4ZjcsIDB4MjUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg2LCAweDQ3LCAweDIxLCAweDNmLCAweDZjLCAweDY0LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NjgsIDB4YmUsIDB4NywgMHg1ZiwgMHhmYiwgMHgzMiwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYSwgMHg2MiwgMHgxYSwgMHg4NCwgMHg4YiwgMHg0ZiwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHhiYywgMHhkOSwgMHhjNSwgMHhiMCwgMHgxZSwgMHhlLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YWMsIDB4NzcsIDB4MTIsIDB4MTMsIDB4YzAsIDB4MmMsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4NGQsIDB4NzMsIDB4MWIsIDB4ODQsIDB4ODcsIDB4OTEsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4YSwgMHg2MywgMHhhMCwgMHhjMiwgMHhhZiwgMHg5NiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhhMCwgMHg0NCwgMHgxZCwgMHhhMSwgMHg4OCwgMHg3MSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg1MCwgMHg3OSwgMHg0ZiwgMHgxZiwgMHg3OCwgMHg0ZCwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHg2OCwgMHg0NywgMHhhLCAweGUsIDB4ZmIsIDB4NmUsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4NmYsIDB4NzcsIDB4MSwgMHhkYSwgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGY3LCAweDksIDB4MywgMHhlMCwgMHg3ZSwgMHgxNSwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDNlLCAweGY3LCAweDMyLCAweGY3LCAweGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4ZWYsIDB4MWEsIDB4YjYsIDB4NjgsIDB4YTQsIDB4NmYsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NzMsIDB4NmEsIDB4NzYsIDB4OTUsIDB4N2QsIDB4OTUsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OTcsIDB4N2QsIDB4OTcsIDB4ODAsIDB4NzksIDB4MWEsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NjAsIDB4MjMsIDB4ZmIsIDB4OCwgMHgxZSwgMHhmNywgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHhjZiwgMHg3NSwgMHhkYiwgMHgxZSwgMHg0ZiwgMHg3YywgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg1NCwgMHg4MywgMHg4LCAweDcwLCAweDcsIDB4YWEsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4NmEsIDB4MWYsIDB4ODYsIDB4OGMsIDB4ODUsIDB4ODQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg5MCwgMHg5MywgMHg3NiwgMHhmNywgMHg1ZiwgMHg3NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHg3NywgMHgxLCAweGUwLCAweGY3LCAweGIsIDB4ZjcsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4MywgMHhlYSwgMHg3ZSwgMHgxNSwgMHhhNiwgMHg2LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQsIDB4ZGIsIDB4ZjcsIDB4MjIsIDB4OTQsIDB4OWUsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg2LCAweDhmLCAweDVkLCAweDljLCAweGZiLCAweDY3LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDgsIDB4YTYsIDB4NiwgMHhiNSwgMHhiNywgMHhmNywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4NSwgMHhmNywgMHgxMSwgMHgxYSwgMHhiOSwgMHg2NiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2YSwgMHg3NCwgMHg2YiwgMHg3MCwgMHg3NywgMHg5NSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg3ZCwgMHgxZSwgMHg5NSwgMHg3ZCwgMHg5NiwgMHg3ZCwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2MiwgMHgzNywgMHgyYSwgMHg2OCwgMHg2MiwgMHgxZSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlMCwgMHg1LCAweDcwLCAweDYsIDB4NTIsIDB4MzAsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4NTgsIDB4MzAsIDB4OCwgMHg4OSwgMHg2LCAweGY3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweGQzLCAweDc3LCAweGQ1LCAweDFlLCAweDVlLCAweDgyLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDRiLCAweDgyLCAweDgsIDB4NzAsIDB4NywgMHhhYiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg2OSwgMHgxZiwgMHg4NSwgMHg4YywgMHg4NCwgMHg4MywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDkzLCAweDc2LCAweGU5LCAweDc3LCAweGI0LCAweDc3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDc3LCAweDEsIDB4ZjcsIDB4NDEsIDB4ZjcsIDB4MjIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YSwgMHg5ZiwgMHhhYiwgMHg2NiwgMHhiYSwgMHgxYiwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhkZiwgMHhiMSwgMHhhNSwgMHgxZiwgMHg3NiwgMHg5OSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDc2LCAweDc1LCAweDc1LCAweDc4LCAweDFiLCAweDc4LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGIwLCAweDgzLCAweDFmLCAweDZiLCAweGY3LCAweDMwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4OTksIDB4YjYsIDB4ZDYsIDB4YWUsIDB4MWIsIDB4OTcsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4ODYsIDB4OTMsIDB4MWYsIDB4ODYsIDB4OTIsIDB4OTMsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4MWIsIDB4YWMsIDB4YTMsIDB4YTUsIDB4YTUsIDB4YTMsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4NmEsIDB4NTcsIDB4NjksIDB4NmEsIDB4MjIsIDB4NDEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ZDksIDB4ODIsIDB4YWIsIDB4NzcsIDB4YTcsIDB4ZmIsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MTgsIDB4NzAsIDB4NywgMHg4YywgMHg5NSwgMHg5OCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHgxYiwgMHg5ZSwgMHhhNCwgMHg4YiwgMHg0OCwgMHg5OCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhmYiwgMHgyZSwgMHg1LCAweDM0LCAweDU1LCAweDdjLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDFiLCAweDdmLCAweDg1LCAweDkxLCAweDkxLCAweDgxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDgzLCAweDgxLCAweDkwLCAweDdiLCAweDFiLCAweDY4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDczLCAweDdiLCAweDk0LCAweDVmLCAweGMwLCAweGMyLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGRkLCAweGIxLCAweDFmLCAweGUsIDB4NzksIDB4MWQsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkYywgMHhjYiwgMHgzLCAweDQ1LCAweGEsIDB4OTUsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4MWUsIDB4OTMsIDB4N2UsIDB4N2QsIDB4OTMsIDB4NzksIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NmEsIDB4OTksIDB4ODAsIDB4OTksIDB4ODEsIDB4MWUsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4OTksIDB4ODMsIDB4NzUsIDB4N2EsIDB4YSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDUyLCAweDc2LCAweGY4LCAweDQ2LCAweGU4LCAweDEsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MTUsIDB4YTcsIDB4YjEsIDB4OGIsIDB4OGIsIDB4OWEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4YTQsIDB4NzksIDB4NzgsIDB4YTgsIDB4MWYsIDB4NzUsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4NzMsIDB4YzAsIDB4NzYsIDB4YSwgMHg3ZiwgMHg4ZSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg4NSwgMHgxZiwgMHg5MSwgMHg4MiwgMHg5MiwgMHg4NiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg4NCwgMHg4MywgMHg4MywgMHg3ZSwgMHg2ZiwgMHg4MSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg3YSwgMHgxZSwgMHg3YSwgMHhhYiwgMHg3MiwgMHhiMSwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg4MCwgMHhhLCAweGZiLCAweDJiLCAweDcwLCAweDFkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDUsIDB4ZSwgMHg4YSwgMHhhLCAweDEyLCAweGE3LCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGYxLCAweDEzLCAweGUwLCAweGY3LCAweDY5LCAweGZiLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDQ3LCAweDk1LCAweDdlLCAweGFkLCAweGFmLCAweDFhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGM1LCAweGM2LCAweGY3LCAweDJmLCAweGMwLCAweDFhLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDliLCAweDQ3LCAweDljLCAweDFlLCAweDhkLCAweDcsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YTYsIDB4YTUsIDB4OWQsIDB4ZDIsIDB4YjgsIDB4ZjcsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4OWQsIDB4ZDEsIDB4YWUsIDB4YjgsIDB4ZTAsIDB4OWEsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MTgsIDB4ZmIsIDB4MTksIDB4MzcsIDB4NzcsIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHgxZiwgMHg1ZCwgMHhmYiwgMHg0NywgMHg3YSwgMHg0OSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHgyZiwgMHg3OCwgMHgxOSwgMHhjNCwgMHg3ZCwgMHhhNiwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHgxYSwgMHgxMywgMHhlMCwgMHg2NCwgMHg0ZSwgMHhmYiwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHgxYSwgMHg0YiwgMHhiMiwgMHg2ZiwgMHhmNywgMHgyMywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZjLCAweDRlLCAweGZiLCAweDNiLCAweDc2LCAweGY3LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDFkLCAweGIwLCAweGUzLCAweDMsIDB4ZjcsIDB4NWQsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4MTUsIDB4Y2YsIDB4NiwgMHhmYiwgMHg3OSwgMHhmZCwgMHhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDQ3LCAweDYsIDB4ZSwgMHg4YSwgMHhhLCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmMSwgMHg2ZCwgMHhmMywgMHgzLCAweGZiLCAweDEyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDE1LCAweGUwLCAweDliLCAweGFkLCAweGIxLCAweDllLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGY3LCAweDNmLCAweDE4LCAweDllLCAweGQzLCAweGE2LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweDllLCAweDgsIDB4OGQsIDB4NywgMHg0NywgMHg5YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhiNiwgMHhjMCwgMHhjNiwgMHhmNywgMHgyZiwgMHhjNiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg3ZSwgMHhhZCwgMHg0NywgMHg5NiwgMHgxZSwgMHg4ZSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY3LCAweDIzLCAweGIyLCAweDZkLCAweDRiLCAweDFmLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweGZiLCAweDNlLCAweDYzLCAweDFhLCAweDYwLCAweGE2LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDdjLCAweDFlLCAweDJlLCAweDc4LCAweDcxLCAweDVlLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDVkLCAweGZiLCAweDNmLCAweDE4LCAweGZiLCAweGQsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4N2MsIDB4ZmIsIDB4MTksIDB4MWIsIDB4ZSwgMHgyZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhkZiwgMHg0OCwgMHg3NiwgMHhhMiwgMHg3NiwgMHhkMSwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg3NywgMHgxMiwgMHgxMywgMHg1MCwgMHhlZiwgMHhmNywgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhhZSwgMHg5YiwgMHhhMywgMHhiMCwgMHhiNywgMHgxYiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg3YywgMHg3YiwgMHhhYSwgMHgxZiwgMHgxMywgMHg4OCwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhhZCwgMHg3OCwgMHhiNiwgMHgxYiwgMHhjOSwgMHhhYywgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhhOSwgMHgxZiwgMHg2NywgMHhkMSwgMHg1LCAweDY4LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDY2LCAweDYzLCAweDFiLCAweDZlLCAweDY4LCAweDliLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDFmLCAweDEzLCAweDMwLCAweDlkLCAweDY0LCAweDYzLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDFiLCAweDQ4LCAweDY3LCAweDVmLCAweDYxLCAweDc1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4YTUsIDB4ZmIsIDB4NGMsIDB4NzYsIDB4ZjgsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjQsIDB4MSwgMHg5ZSwgMHhmNywgMHgyOSwgMHg5NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHgzLCAweGY3LCAweDU1LCAweGY3LCAweGE3LCAweDE1LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM5LCAweDNhLCAweGZiLCAweDJmLCAweDdiLCAweDZkLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4N2EsIDB4ODYsIDB4N2EsIDB4N2MsIDB4MWEsIDB4NWQsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4YWUsIDB4YzYsIDB4OWUsIDB4YzEsIDB4YjUsIDB4OGUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4ZjcsIDB4NywgMHhhNCwgMHhmNywgMHgzMiwgMHg5ZiwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDVmLCAweGY3LCAweDJkLCAweDE1LCAweDYzLCAweGFiLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweGIzLCAweGFiLCAweGFiLCAweGIzLCAweGIzLCAweDZiLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDYzLCAweDZiLCAweDZiLCAweDYzLCAweDFlLCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3NiwgMHhmNywgMHgyYiwgMHg3NiwgMHhmOCwgMHg0ZiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1LCAweDc3LCAweDEsIDB4OTcsIDB4ZjcsIDB4MTMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2YSwgMHhjNCwgMHgxNSwgMHg2MywgMHg5YywgMHg4NiwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHgxYSwgMHhjZSwgMHhjYSwgMHhmNywgMHg2OCwgMHhkZSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4MiwgMHg4NCwgMHgxZSwgMHhmYiwgMHgyOSwgMHhmYywgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1ZCwgMHhmYiwgMHgxNiwgMHg1LCAweGFkLCAweDYsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4ZGQsIDB4OTgsIDB4YjYsIDB4YzgsIDB4YjUsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4NzAsIDB4OWQsIDB4NmIsIDB4NWIsIDB4NjQsIDB4NjMsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MTksIDB4ZTcsIDB4ZjcsIDB4OWEsIDB4NSwgMHg4NSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg4NiwgMHg5ZCwgMHgxYiwgMHhhYSwgMHhhYiwgMHhhNSwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg3OSwgMHhhOSwgMHg2OCwgMHg5YywgMHgxZiwgMHhiOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg1LCAweDY4LCAweDYsIDB4NjIsIDB4ZmIsIDB4OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDgxLCAweDgxLCAweDhjLCAweDdmLCAweDFiLCAweGZiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI2LCAweGZiLCAweDJlLCAweGZiLCAweDMyLCAweGZiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4NjEsIDB4YzEsIDB4MWYsIDB4ZSwgMHg3ZiwgMHhhYSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHgyMywgMHhmNywgMHg0MiwgMHhmYiwgMHgyYywgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHg3NywgMHhjMiwgMHg3NywgMHhmNywgMHg0MywgMHhjNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhhZCwgMHgxMiwgMHg2YiwgMHhhOSwgMHgxMywgMHg0ZiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzMCwgMHhiYywgMHgxNSwgMHg2ZSwgMHhhYiwgMHhiOCwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHgxYiwgMHhlNywgMHhiOSwgMHhkMCwgMHhlZCwgMHg5ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2LCAweDY3LCAweDdiLCAweDdmLCAweDcwLCAweDQ2LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDRhLCAweGE1LCAweDkxLCAweDdjLCAweDFmLCAweGFkLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGRlLCAweDk1LCAweGJkLCAweDgsIDB4ZjcsIDB4NywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGM3LCAweDUsIDB4ZmIsIDB4NiwgMHg2LCAweGIyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDUsIDB4YmMsIDB4OTQsIDB4YTAsIDB4YTcsIDB4YWEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4ODcsIDB4NzMsIDB4NzMsIDB4ODYsIDB4MWYsIDB4ODksIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ODIsIDB4ODMsIDB4MWEsIDB4NjcsIDB4YWIsIDB4N2MsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YWMsIDB4YTIsIDB4YjcsIDB4Y2MsIDB4NGYsIDB4YTYsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4ZmIsIDB4MzcsIDB4N2QsIDB4ZmIsIDB4YmYsIDB4NTksIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4NiwgMHg4MSwgMHg0ZiwgMHg1LCAweGY3LCAweDEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg1NiwgMHg4NiwgMHg0ZCwgMHg4NSwgMHg1YywgMHg4LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDgwLCAweDkzLCAweDc4LCAweDdkLCAweDkxLCAweDZiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDVkLCAweDZkLCAweDUwLCAweDFmLCAweDEzLCAweDFmLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGFmLCAweDY0LCAweGJlLCAweGNhLCAweGEyLCAweGFmLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDFlLCAweDYwLCAweGI0LCAweDE1LCAweDEzLCAweDhmLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDg1LCAweDdiLCAweDY1LCAweDY2LCAweDFiLCAweDc1LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGFkLCAweGI3LCAweGFhLCAweDk0LCAweDlmLCAweGE5LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDdmLCAweDk4LCAweDFmLCAweGUsIDB4ZDIsIDB4NzYsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZjcsIDB4NjUsIDB4ZDUsIDB4ZDQsIDB4NzcsIDB4MSwgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhmNywgMHg1ZCwgMHhkYSwgMHgzLCAweGY3LCAweDFjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDE1LCAweGNhLCAweGJlLCAweGJmLCAweGNiLCAweGNkLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweDRjLCAweDRhLCAweDViLCAweDU0LCAweDQ4LCAweDRhLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGNjLCAweDFlLCAweDM5LCAweGZiLCAweDhlLCAweDE1LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDUsIDB4NzgsIDB4YTcsIDB4YjMsIDB4N2MsIDB4YjYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4YjEsIDB4OWEsIDB4OWUsIDB4YTcsIDB4MWYsIDB4ZTEsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4YmYsIDB4MzQsIDB4ZTMsIDB4NSwgMHhhMCwgMHhhNiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhiNiwgMHgxYSwgMHhiNiwgMHg3ZCwgMHhiMSwgMHg3OCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlMywgMHhlMywgMHg1NywgMHhiZCwgMHgzNCwgMHgzNSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDZlLCAweDY3LCAweDk1LCAweDVmLCAweDFiLCAweDYyLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDc4LCAweDZmLCAweDFmLCAweDM1LCAweGUxLCAweDU3LCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDMzLCAweDUsIDB4NzgsIDB4NzAsIDB4N2MsIDB4NjQsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NjAsIDB4OTgsIDB4NjUsIDB4YTAsIDB4NmYsIDB4MWUsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NSwgMHhlLCAweDhiLCAweGE0LCAweGY3LCAweDFmLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGJkLCAweGY3LCAweGMyLCAweGE0LCAweDEsIDB4YjksIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZDYsIDB4YTQsIDB4NiwgMHg1OSwgMHg4ZCwgMHg2YywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHgxYSwgMHhhOCwgMHg5OCwgMHhiNiwgMHg5MSwgMHhhMiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYywgMHg2LCAweDk5LCAweGJkLCAweDUsIDB4ZmIsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhMCwgMHhkOSwgMHg1LCAweGY3LCAweDJhLCAweDYsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4NSwgMHhmYiwgMHgxYiwgMHg2LCAweGY3LCAweDMwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDkwLCAweDFkLCAweGI4LCAweDkzLCAweDE5LCAweGE0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDcyLCAweDcsIDB4YzcsIDB4YTEsIDB4N2MsIDB4NzksIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4ODAsIDB4ODQsIDB4ODAsIDB4MWYsIDB4ZmIsIDB4MmIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NSwgMHg3NCwgMHhjMSwgMHg1NiwgMHhmNywgMHg1NCwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhhMiwgMHg5NywgMHg5OCwgMHhjYSwgMHgxZSwgMHhhNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg3MiwgMHg3LCAweGMwLCAweDg0LCAweDhhLCAweDkyLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGQ4LCAweGZiLCAweDliLCAweDE4LCAweGZiLCAweDExLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NTksIDB4NSwgMHhmNywgMHgyMiwgMHg2LCAweDc1LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4MjEsIDB4NiwgMHg3ZCwgMHg1OSwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweDYsIDB4NzAsIDB4MmMsIDB4N2YsIDB4NjIsIDB4NzEsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4ODYsIDB4MTksIDB4ZSwgMHhmYywgMHg0ZSwgMHgzZSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHg3NiwgMHhmNywgMHg5NiwgMHg3NywgMHhhZCwgMHg3NywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg3NywgMHgxMiwgMHhjZCwgMHhlMywgMHgxMywgMHhkYywgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmNSwgMHgxNSwgMHhjZiwgMHg2LCAweGVmLCAweGY3LCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NDMsIDB4NiwgMHhmYiwgMHg3OCwgMHhmZCwgMHhhMywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg2LCAweDEzLCAweGVjLCAweGViLCAweGY3LCAweGU2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4NiwgMHhlLCAweGZiLCAweGUsIDB4NzYsIDB4YTIsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTksIDB4YTYsIDB4ZjcsIDB4OTAsIDB4YTQsIDB4ZjcsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4MTIsIDB4YWYsIDB4ZjcsIDB4NiwgMHg5ZCwgMHhkMSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHg5ZSwgMHhkMiwgMHgxMywgMHg3ZiwgMHg4MCwgMHhmNywgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkLCAweDE1LCAweDhkLCAweDhmLCAweDUsIDB4ODgsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OGEsIDB4OTcsIDB4MWIsIDB4YzYsIDB4YzUsIDB4YmMsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4NjIsIDB4YzEsIDB4NzgsIDB4YTMsIDB4MWYsIDB4MjYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg2NywgMHhiNSwgMHhiNCwgMHgxYSwgMHhiMCwgMHhhMywgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhhZiwgMHhhNywgMHg3YywgMHg3ZiwgMHg4MiwgMHg4MywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg4NCwgMHgxZSwgMHg4MCwgMHg4NCwgMHg4MiwgMHg4MSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg3MCwgMHhhMywgMHg3MSwgMHhhYSwgMHhhMCwgMHhiMCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhiNywgMHg2MiwgMHhjMCwgMHgyNywgMHgzNywgMHg0OSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHg0YiwgMHhiNywgMHg1NiwgMHg5NiwgMHg4MCwgMHgxZSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg1LCAweDhmLCAweDdlLCAweDZkLCAweDhkLCAweDg2LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDAsIDB4NmUsIDB4ZmIsIDB4MmIsIDB4MjgsIDB4ZGUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTYsIDB4ZmIsIDB4MzQsIDB4OWUsIDB4NzcsIDB4NjMsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4NGYsIDB4N2QsIDB4NzAsIDB4NzUsIDB4NWYsIDB4OTUsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OTMsIDB4OGYsIDB4OTQsIDB4OTMsIDB4MWUsIDB4OTQsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4OTQsIDB4YTIsIDB4MWEsIDB4YjQsIDB4NjYsIDB4OTUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NmUsIDB4NzYsIDB4NjQsIDB4MWUsIDB4MTMsIDB4YmYsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4YzQsIDB4NWIsIDB4ZTMsIDB4ZTIsIDB4ZDgsIDB4YzQsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4NjQsIDB4YjksIDB4NzcsIDB4YTQsIDB4MWUsIDB4M2IsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ODgsIDB4OGUsIDB4NGIsIDB4Y2YsIDB4YmUsIDB4MWEsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YTAsIDB4YWIsIDB4YzIsIDB4ZjcsIDB4NCwgMHhmYiwgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg2MCwgMHg2OSwgMHg3OCwgMHg3MiwgMHg2ZSwgMHg3YSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHg1NiwgMHgxZSwgMHhlLCAweGZiLCAweGRkLCAweGY4LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE2LCAweDEsIDB4YjgsIDB4ZjcsIDB4MTYsIDB4ZGYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4MywgMHhiOCwgMHhmOCwgMHhlMiwgMHgxNSwgMHg0YiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY4LCAweDE2LCAweDRiLCAweGEsIDB4ZSwgMHhlMCwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhmNywgMHg0LCAweGEyLCAweGUyLCAweDc3LCAweGY3LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGYwLCAweGI5LCAweDEsIDB4OWYsIDB4YzgsIDB4NTgsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4ZTAsIDB4ZjgsIDB4MWMsIDB4YzgsIDB4MywgMHhhOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHgxNSwgMHhmNywgMHg1NywgMHhmNywgMHgyYiwgMHhmNywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NSwgMHhmNywgMHg1NSwgMHhmNywgMHgyYiwgMHhmYiwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1OCwgMHhmYiwgMHg1OCwgMHhmYiwgMHgyYiwgMHhmYiwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1NSwgMHhmYiwgMHg1NSwgMHhmYiwgMHgyYiwgMHhmNywgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1OCwgMHgxZSwgMHhjOCwgMHgxNiwgMHhmYiwgMHgzOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmYiwgMHgyMSwgMHhmNywgMHgzMSwgMHhmNywgMHgzMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHgyMCwgMHhmNywgMHgzOCwgMHhmNywgMHgzOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHgyMywgMHhmYiwgMHgzMSwgMHhmYiwgMHgzMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHhmYiwgMHgyMywgMHhmYiwgMHgzNywgMHgxZSwgMHhmOCwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHgxNSwgMHg3YSwgMHg0MywgMHg1LCAweDcwLCAweDZlLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDQ4LCAweDFiLCAweGZiLCAweGMsIDB4MmQsIDB4YzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4ZTAsIDB4YzgsIDB4ZjcsIDB4MywgMHhmNywgMHgzMiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg4MiwgMHg4MiwgMHhhNiwgMHgxZiwgMHg5YSwgMHg4NiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg4MiwgMHgxYSwgMHg0NCwgMHg3YSwgMHg3LCAweGI2LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGJhLCAweDNmLCAweDFiLCAweDJmLCAweDYxLCAweDNlLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGE4LCAweDQzLCAweGVmLCAweGNjLCAweGJhLCAweGIyLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDFmLCAweGUsIDB4ZmMsIDB4MjAsIDB4ZjgsIDB4MjQsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NzYsIDB4ZjcsIDB4OTcsIDB4YTYsIDB4MTIsIDB4OWIsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzAsIDB4ZjcsIDB4NTQsIDB4ZjgsIDB4NmYsIDB4MTUsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ODgsIDB4ODEsIDB4ODEsIDB4MWEsIDB4NmMsIDB4YWEsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4YjMsIDB4YjAsIDB4YjgsIDB4YWEsIDB4YTAsIDB4MWUsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4NSwgMHg3ZiwgMHg4NSwgMHg2ZiwgMHg2ZSwgMHg3ZiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4OSwgMHg4ZCwgMHg5MSwgMHhhMSwgMHg5OCwgMHhiMiwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHgxZiwgMHhiOSwgMHhmNywgMHgyMCwgMHgzZiwgMHg4OCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg2ZiwgMHhhLCAweDlhLCAweDg4LCAweDg0LCAweGE1LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDM5LCAweDJjLCAweGZiLCAweGIsIDB4MzMsIDB4MWYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4NzcsIDB4OTIsIDB4NTEsIDB4Y2MsIDB4YzEsIDB4YWMsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4OWEsIDB4MWUsIDB4MmIsIDB4MTYsIDB4YjgsIDB4YzUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4YmEsIDB4OTQsIDB4OTUsIDB4N2YsIDB4N2EsIDB4NjMsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjQsIDB4NTIsIDB4ODgsIDB4NzgsIDB4OGYsIDB4YTcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3MiwgMHgxZCwgMHg5NywgMHhmNywgMHg2ZCwgMHg3MSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg5NCwgMHg5NiwgMHg4MiwgMHg5MywgMHgxYiwgMHg5MSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg5OCwgMHgxZiwgMHg0MSwgMHg4ZCwgMHhhLCAweGUzLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NGQsIDB4ODIsIDB4NzEsIDB4MWQsIDB4ODAsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OGEsIDB4MWQsIDB4NDEsIDB4OGQsIDB4YSwgMHhlMywgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHgxYSwgMHg5NCwgMHg4OCwgMHg4ZSwgMHg4NiwgMHg3OSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg3YiwgMHg2YywgMHhhLCAweGUsIDB4NTMsIDB4ZjcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4NWQsIDB4Y2UsIDB4NDgsIDB4ZTUsIDB4MSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhlNSwgMHg0MywgMHhkMywgMHgzLCAweGJlLCAweGY3LCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweDQ0LCAweGZiLCAweDVkLCAweGQzLCAweGY3LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDhjLCAweDYsIDB4ZSwgMHhlMCwgMHg3OSwgMHhiOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGY3LCAweDRlLCAweGY3LCAweDNkLCAweGEwLCAweGY3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MSwgMHhhOSwgMHhjOCwgMHhmNywgMHgzYSwgMHhkMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGQ0LCAweGY3LCAweDI3LCAweGM4LCAweDMsIDB4YTksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MTUsIDB4ZmIsIDB4NTgsIDB4ZjcsIDB4MmIsIDB4ZmIsIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTUsIDB4ZjcsIDB4NTUsIDB4ZjcsIDB4MmIsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTgsIDB4ZjcsIDB4NTgsIDB4ZmIsIDB4MmIsIDB4ZjcsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTUsIDB4ZmIsIDB4NTUsIDB4ZmIsIDB4MmIsIDB4ZmIsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTcsIDB4MWUsIDB4YzgsIDB4MTYsIDB4ZjcsIDB4MzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4MzIsIDB4ZjcsIDB4MzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4ZmIsIDB4MjQsIDB4ZmIsIDB4MzgsIDB4ZmIsIDB4MzgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4ZmIsIDB4MWYsIDB4ZmIsIDB4MzIsIDB4ZmIsIDB4MzEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4MzgsIDB4MWUsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0YywgMHgxNSwgMHhmNywgMHgzYSwgMHg5YiwgMHg2LCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDhjLCAweDhjLCAweGI1LCAweDFhLCAweGYxLCAweGI3LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4YzgsIDB4YzgsIDB4NDAsIDB4ODksIDB4MWIsIDB4ZDEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhhNSwgMHg2ZSwgMHhhZCwgMHgzNywgMHhmNywgMHg5LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4OWEsIDB4YWMsIDB4YjMsIDB4YmQsIDB4MWEsIDB4Y2MsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4NGQsIDB4MWUsIDB4ZmIsIDB4NGIsIDB4N2IsIDB4NiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg4OSwgMHg4YSwgMHg2MiwgMHgxYSwgMHhmYiwgMHg4ZCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDhkLCAweDhhLCAweDVhLCAweDg2LCAweDFlLCAweGY3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2UsIDB4MTUsIDB4ZjcsIDB4M2QsIDB4YjMsIDB4NywgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg3OCwgMHg1MSwgMHg1NiwgMHg3NywgMHg2NCwgMHg1YiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweGRkLCAweGY4LCAweGJkLCAweGQxLCAweDEsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4YmQsIDB4MTUsIDB4ZjcsIDB4ZDgsIDB4NiwgMHg5ZCwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweGQ3LCAweDYsIDB4ZSwgMHhmYiwgMHg5YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgMHg3NiwgMHhmNywgMHhiMiwgMHg3NywgMHgxLCAweGRlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDE1LCAweDNjLCAweGNiLCAweDQ5LCAweGRhLCAweGRhLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGRhLCAweGRhLCAweDRiLCAweGNkLCAweDNjLCAweDNjLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDNjLCAweDFlLCAweGIxLCAweDhhLCAweDE1LCAweDUxLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweGM1LCAweGM1LCAweGJhLCAweGI3LCAweGM1LCAweGM1LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDUxLCAweDUxLCAweDVkLCAweDVlLCAweDUxLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4OGIsIDB4ZTQsIDB4YjIsIDB4NzcsIDB4ZjcsIDB4MzYsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4YzksIDB4ZjcsIDB4MzgsIDB4NzcsIDB4MTIsIDB4ZjcsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4M2UsIDB4Y2MsIDB4MTMsIDB4ZWEsIDB4ZjcsIDB4OTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4MTUsIDB4Y2MsIDB4NiwgMHgxMywgMHhkYSwgMHhmNywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MCwgMHhjOSwgMHhmYiwgMHg3MCwgMHhmNywgMHgzOCwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzOCwgMHhmYiwgMHg2ZiwgMHg0ZCwgMHhmNywgMHg2ZiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZmLCAweGZiLCAweGFjLCAweDE1LCAweGY4LCAweDhjLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZWMsIDB4Y2YsIDB4ZmMsIDB4OGMsIDB4NywgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZlLCAweGY3LCAweGE2LCAweGQwLCAweGY3LCAweGFiLCAweGM4LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4ZjcsIDB4YTYsIDB4NWUsIDB4MWQsIDB4ZWYsIDB4NSwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhiYywgMHhiZCwgMHg1MiwgMHhhLCAweDZkLCAweDY2LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDZiLCAweDY4LCAweDhiLCAweDg0LCAweGZiLCAweDgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg4LCAweGUsIDB4ZmIsIDB4ZmUsIDB4ZjcsIDB4YjIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MywgMHhiZSwgMHgxMiwgMHhmNywgMHg2NiwgMHhkZiwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHgxMywgMHhlMCwgMHhmNywgMHgyLCAweGY4LCAweDc1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweGFlLCAweDY5LCAweDRmLCAweDY5LCAweDY2LCAweDRmLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDgyLCAweDhmLCAweDk3LCAweDgzLCAweDY3LCAweDFkLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweGJjLCAweDc0LCAweGEzLCAweDZlLCAweDllLCAweDFmLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDYzLCAweDFkLCAweDY5LCAweGEsIDB4ZSwgMHg3ZiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0OSwgMHg3NywgMHgxLCAweGY3LCAweDFmLCAweGY4LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGJkLCAweDYsIDB4ZjcsIDB4MmIsIDB4MjEsIDB4MWQsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhmYiwgMHg0ZSwgMHg3NiwgMHhmNywgMHg2MywgMHhkMSwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHgxMSwgMHg3NywgMHhmNywgMHhmOSwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHhmNywgMHhiLCAweDEzLCAweGRjLCAweGY3LCAweGFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MTUsIDB4ODMsIDB4NmMsIDB4ODksIDB4N2MsIDB4N2EsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4YTEsIDB4NmIsIDB4YjMsIDB4ZGEsIDB4YmEsIDB4ZDYsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MWUsIDB4NzYsIDB4OWIsIDB4NSwgMHgxMywgMHhiYywgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg2YiwgMHg2NywgMHg3OSwgMHgxYiwgMHg4MCwgMHg4NSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg5MywgMHgxZiwgMHhmMywgMHhmNywgMHhlNCwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDYsIDB4NTgsIDB4ZmIsIDB4MzgsIDB4NSwgMHhmYiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDQyLCAweDJlLCAweDUzLCAweDFiLCAweDZlLCAweDk1LCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDkxLCAweDFmLCAweGU4LCAweGY3LCAweGNjLCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4ZmIsIDB4MWIsIDB4NiwgMHhmYiwgMHgzLCAweGZjLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1ZiwgMHhmYiwgMHgxMiwgMHg4MSwgMHg1NCwgMHg2NCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHhhMCwgMHg3OSwgMHhhOSwgMHhiMywgMHhhNywgMHhhZSwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHg4NywgMHhjMCwgMHg5YywgMHhiZCwgMHgxZSwgMHg3YSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg4NCwgMHhhZSwgMHgxYiwgMHhjMCwgMHhjZCwgMHhkMiwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHgxZiwgMHhlLCAweGZiLCAweDU3LCAweDc2LCAweGY5LCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDEyLCAweGIyLCAweGY3LCAweDY0LCAweDQyLCAweGU0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweGU0LCAweDEzLCAweGQ4LCAweGY3LCAweDExLCAweGZiLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGJjLCAweDYsIDB4ZjcsIDB4ODUsIDB4ZjksIDB4ZGMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHg2LCAweGZiLCAweDg1LCAweGZkLCAweGRjLCAweDUsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHg2OSwgMHhmOSwgMHg3ZSwgMHg1LCAweGVkLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDliLCAweGU1LCAweDFiLCAweDkwLCAweDlkLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4NiwgMHgxMywgMHhlOCwgMHhmYiwgMHg2NCwgMHhmYiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMwLCAweGZiLCAweDFjLCAweGZiLCAweDEzLCAweGYwLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDg5LCAweDFmLCAweGUsIDB4ZmMsIDB4MzAsIDB4ZjcsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4MSwgMHhiZSwgMHhmNywgMHgyOCwgMHgzLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGRmLCAweDNjLCAweGEsIDB4ZmIsIDB4ZGQsIDB4ZmIsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4ODAsIDB4ZDgsIDB4NDksIDB4ZDgsIDB4ZjQsIDB4NzcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NTAsIDB4YjQsIDB4OTAsIDB4MTUsIDB4NDksIDB4MmEsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NSwgMHgxMywgMHhiMCwgMHg3ZCwgMHhhLCAweDcyLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDZlLCAweDdiLCAweDg2LCAweGEsIDB4OWYsIDB4NzksIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YzAsIDB4ZTksIDB4YTMsIDB4Y2EsIDB4YmYsIDB4NWUsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4N2QsIDB4N2UsIDB4OGIsIDB4ODksIDB4ODMsIDB4MWYsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4NSwgMHhlLCAweGZiLCAweGZlLCAweGY3LCAweGJiLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE3LCAweDc2LCAweGY3LCAweGJmLCAweDc3LCAweDEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MTQsIDB4OGMsIDB4YSwgMHg2MiwgMHg3MSwgMHg5MSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHgxZiwgMHg5ZCwgMHhiOSwgMHhjNywgMHhmNywgMHgyMSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHg1ZSwgMHg4MiwgMHg2NiwgMHg4MywgMHgyYywgMHg3ZCwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHgxOCwgMHhhOCwgMHhiMywgMHg5MywgMHg3MSwgMHg3YywgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZiwgMHg3YiwgMHg2ZSwgMHgxZiwgMHg3MCwgMHg3ZCwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg3MywgMHgxYiwgMHhlLCAweGZiLCAweGZlLCAweGY4LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGY3LCAweDg5LCAweDlmLCAweDEsIDB4ZjcsIDB4OWUsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHgxZCwgMHhmOCwgMHg1ZiwgMHgxNSwgMHhiMiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYiwgMHhkMiwgMHg5NSwgMHg5OCwgMHg4NSwgMHg2ZCwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhmYiwgMHgzOCwgMHg0ZCwgMHg2ZiwgMHg4YiwgMHhhNiwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgzYSwgMHhhOSwgMHgxNSwgMHg1MiwgMHhiZSwgMHg2YiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHhkZSwgMHhmMiwgMHhlNSwgMHhkYiwgMHgzZiwgMHg5NywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHgzNCwgMHgyNCwgMHgyZSwgMHgxZSwgMHhlLCAweDcyLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGViLCAweDQ5LCAweDFkLCAweDk1LCAweDgyLCAweDgwLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDg4LCAweDFkLCAweDg4LCAweDdlLCAweDFmLCAweGZiLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDAsIDB4NzAsIDB4YSwgMHg4ZiwgMHg4OCwgMHg5MCwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhiNSwgMHg5YSwgMHg0YSwgMHhhLCAweDk1LCAweDgyLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDgzLCAweDg4LCAweDFkLCAweDg4LCAweDdlLCAweDFmLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4MWQsIDB4ZjgsIDB4YTcsIDB4NzcsIDB4YTIsIDB4NzcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzAsIDB4ZjgsIDB4MTEsIDB4ZTMsIDB4MTUsIDB4ZjcsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHg5MCwgMHg3MCwgMHgzMywgMHg1LCAweGUxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzAsIDB4NDgsIDB4YSwgMHhmYywgMHgzOSwgMHhmYiwgMHgzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgxZCwgMHhmYywgMHhjOCwgMHhmYywgMHgyYSwgMHg4YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDdlLCAweDkyLCAweGEyLCAweDkzLCAweDhlLCAweDk1LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDFmLCAweDEzLCAweDg4LCAweDZlLCAweDFkLCAweDk0LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGEsIDB4ZTMsIDB4OGIsIDB4ZDAsIDB4NGQsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4NzcsIDB4ZjcsIDB4OTIsIDB4YzgsIDB4ZjcsIDB4YTMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4NzcsIDB4MTIsIDB4MTMsIDB4NzgsIDB4ZjcsIDB4ZCwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgxZCwgMHgxMywgMHhiNCwgMHhmYiwgMHgyNCwgMHhmZCwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHgxZCwgMHhlZSwgMHg1LCAweGI2LCAweGFhLCAweGJjLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGEsIDB4NjMsIDB4NjYsIDB4NjEsIDB4MWYsIDB4NmIsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4OGIsIDB4ZmIsIDB4OCwgMHhmYiwgMHgyLCAweDgsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4ZjcsIDB4OTYsIDB4OGMsIDB4YSwgMHg1ZiwgMHg3YywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg5NCwgMHg4ZCwgMHg5NiwgMHg4ZiwgMHg5OSwgMHgxZiwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg5MywgMHg3MSwgMHg2YiwgMHhhLCAweDg2LCAweDFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4NzcsIDB4ZjcsIDB4ODAsIDB4ZjcsIDB4NWIsIDB4NWIsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4NzcsIDB4MTIsIDB4ZjcsIDB4NWMsIDB4ZGYsIDB4NGUsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzksIDB4MCwgMHhmNywgMHgyMSwgMHg3ZCwgMHg2MSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg3MCwgMHhmYiwgMHg1YiwgMHgxNSwgMHhjYywgMHhhZSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg1YywgMHg2YywgMHg2MSwgMHg2NSwgMHg3ZSwgMHg4MCwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg4NiwgMHg2NywgMHgxZCwgMHhkMSwgMHhlMSwgMHhiYywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg2ZSwgMHg5ZSwgMHgxZiwgMHgxMywgMHg5MiwgMHg4MCwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHgxMywgMHg5NCwgMHg4MCwgMHg2OSwgMHhhLCAweDEzLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZjcsIDB4YjAsIDB4ZmMsIDB4MmIsIDB4MTUsIDB4ZjcsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHg5OSwgMHgwLCAweDcwLCAweDMzLCAweDUsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHg3OSwgMHgwLCAweDQ4LCAweGEsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhhYSwgMHg2YywgMHhmNywgMHg1OCwgMHhmNywgMHhmNSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHgxMiwgMHhhOSwgMHhmNywgMHgxMywgMHhmNywgMHg4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDEzLCAweDc4LCAweGY3LCAweGM0LCAweGY3LCAweGEzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDUwLCAweDdjLCAweDZjLCAweDYwLCAweDZmLCAweDgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4MzQsIDB4NTAsIDB4NWEsIDB4M2QsIDB4MWEsIDB4NWMsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4ZjcsIDB4MjksIDB4ZjcsIDB4MSwgMHhjYiwgMHhjOSwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg3MSwgMHhhOSwgMHg2OCwgMHg2YiwgMHg2ZSwgMHg3MiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg5MywgMHg3ZiwgMHg5MiwgMHg4MSwgMHgxZSwgMHg5MiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg4MywgMHg4MiwgMHgxYSwgMHgxMywgMHhiOCwgMHg3NiwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg2ZiwgMHg2YywgMHg2NCwgMHg5YiwgMHhjZCwgMHhjMSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHhkNiwgMHhlOCwgMHgxZSwgMHhjOCwgMHhkNywgMHg5MiwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhhYywgMHg4LCAweDRmLCAweGY3LCAweDJlLCAweDNjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4MWQsIDB4ZjcsIDB4ODUsIDB4NzcsIDB4MSwgMHhmOCwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg2NywgMHg3YiwgMHhhLCAweGZiLCAweDIsIDB4ZjcsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5OCwgMHg4MCwgMHg3OCwgMHhhMSwgMHgzMCwgMHgxZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHhmZCwgMHhjMCwgMHgzMywgMHhhLCAweDUxLCAweDFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDc3LCAweDEsIDB4ZjcsIDB4Y2IsIDB4ZjksIDB4NjcsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZmMsIDB4ODgsIDB4ZmQsIDB4ZWEsIDB4MzMsIDB4YSwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHg3ZSwgMHg1YSwgMHgxZCwgMHhmYywgMHg1YSwgMHhmZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgyNCwgMHgxZCwgMHg1NiwgMHhhLCAweGY4LCAweDRkLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDgzLCAweDFkLCAweDVlLCAweGQ2LCAweDEyLCAweDEzLCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDkzLCAweGY5LCAweDdjLCAweDE1LCAweDEzLCAweGU4LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDk0LCAweGEzLCAweGFjLCAweDFiLCAweGFjLCAweGEyLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGEwLCAweDFmLCAweDEzLCAweGYwLCAweDdmLCAweGE2LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweGE2LCAweDFiLCAweGUxLCAweGEzLCAweGRlLCAweGFmLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDYyLCAweDYsIDB4NzgsIDB4ODIsIDB4ODIsIDB4NzQsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4N2MsIDB4NzMsIDB4OTYsIDB4OTYsIDB4NzAsIDB4MWYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NmYsIDB4OTQsIDB4NzAsIDB4MWIsIDB4MjgsIDB4NzksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg4OCwgMHgxZiwgMHgzNSwgMHhmZCwgMHg3YywgMHgxNSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDIzLCAweDFkLCAweDY4LCAweDcsIDB4ZjgsIDB4YywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxNSwgMHg3NCwgMHgxZCwgMHhmYiwgMHg0ZCwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4YSwgMHhmOCwgMHg1OSwgMHg3NywgMHhiYSwgMHhmNywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkLCAweGY3LCAweDFhLCAweDEyLCAweGY3LCAweDgwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGJkLCAweGY3LCAweDFhLCAweDEzLCAweGVlLCAweGY3LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGFmLCAweDE1LCAweDEzLCAweGY2LCAweDIwLCAweDFkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDJiLCAweGEsIDB4ZmMsIDB4OGEsIDB4ZmQsIDB4YWYsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NTEsIDB4MWQsIDB4YjgsIDB4YmIsIDB4ZjcsIDB4MSwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweGIwLCAweGJiLCAweGY3LCAweDgsIDB4YmMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiMCwgMHhmOSwgMHhjMiwgMHgxNSwgMHg0ZiwgMHhiOSwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHhjNiwgMHhiYiwgMHhiYSwgMHhjNiwgMHhjNiwgMHg1YiwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHg1MCwgMHg1YywgMHg1YiwgMHg1ZSwgMHhhLCAweGZjLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweGMyLCAweDI0LCAweDFkLCAweGY3LCAweGFlLCAweDhiLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDczLCAweGIyLCAweGI3LCAweGFiLCAweGY3LCAweDlmLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4NGIsIDB4YWIsIDB4MTUsIDB4YWMsIDB4OTAsIDB4OGEsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZDMsIDB4ZjgsIDB4MiwgMHhmOCwgMHg1YiwgMHgxOCwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg5MiwgMHg5OSwgMHg5OCwgMHgxYSwgMHhhMCwgMHg2ZCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHgxZSwgMHhhYywgMHhmOCwgMHhlMSwgMHg3LCAweDVlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDczLCAweDkwLCAweDUsIDB4ZjcsIDB4MTQsIDB4MzksIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4NTYsIDB4ODcsIDB4ODAsIDB4NzYsIDB4ODYsIDB4MWUsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4N2YsIDB4ZjAsIDB4ODgsIDB4YzAsIDB4OTgsIDB4YjMsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4YTUsIDB4ODcsIDB4NDIsIDB4ZmIsIDB4YTUsIDB4NzIsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ZTksIDB4NzcsIDB4YjYsIDB4ZmIsIDB4ZiwgMHg4OCwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhmYiwgMHg4NSwgMHg1LCAweDg5LCAweDgyLCAweDhhLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDFhLCAweDZmLCAweDlkLCAweDdkLCAweGE3LCAweGY3LCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweGJhLCAweGY3LCAweGMsIDB4ZDMsIDB4MWUsIDB4YTUsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZmIsIDB4NTgsIDB4NSwgMHhmYywgMHhhMywgMHhhYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDkzLCAweDlhLCAweDkwLCAweDliLCAweGM1LCAweGI5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDE4LCAweGZiLCAweDU0LCAweDYsIDB4ZmIsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg1LCAweDgyLCAweDdlLCAweDg2LCAweDgwLCAweDgxLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGEwLCAweDdlLCAweGI1LCAweDFlLCAweDZiLCAweGZiLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ZjgsIDB4NjIsIDB4ZjcsIDB4YmEsIDB4MTUsIDB4ZTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4NSwgMHg3ZiwgMHg2LCAweGZiLCAweDkxLCAweGZiLCAweGQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHg5MCwgMHhmYiwgMHg2ZSwgMHhiNCwgMHhmNywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhhZSwgMHhiZiwgMHhmOCwgMHhhZiwgMHhhZSwgMHgxLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJlLCAweGVmLCAweGI4LCAweGY3LCAweGExLCAweGFiLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDMsIDB4ZjcsIDB4N2YsIDB4MmYsIDB4MTUsIDB4OTgsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg4ZiwgMHg5NCwgMHg5NCwgMHg4YywgMHg5MywgMHgxYiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg3MiwgMHg3ZiwgMHg3MCwgMHg3NCwgMHg3ZCwgMHg2YywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg5MSwgMHg5NiwgMHg3NCwgMHgxZiwgMHg3NSwgMHg2YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDliLCAweGEzLCAweDdhLCAweGJlLCAweDFiLCAweGMwLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGNhLCAweGMzLCAweDU4LCAweGEwLCAweDY1LCAweDgwLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDg5LCAweDg0LCAweDFmLCAweGFhLCAweGI5LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHhkYiwgMHhkNiwgMHhkMywgMHhiYiwgMHgxZiwgMHg2ZCwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDJlLCAweDQzLCAweDQ5LCAweDcyLCAweDNkLCAweDFiLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE2LCAweDhiLCAweGY3LCAweDQ3LCAweGY3LCAweDQ1LCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk3LCAweGY3LCAweDM1LCAweGUzLCAweGM1LCAweDRkLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDhhLCAweDgwLCAweDg5LCAweDgwLCAweDgxLCAweDFkLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDdlLCAweDc0LCAweDFiLCAweDdlLCAweDc3LCAweDkzLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDFmLCAweDkyLCAweDczLCAweDZjLCAweDkxLCAweDYzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDg3LCAweGZiLCAweDQ0LCAweGZiLCAweDc0LCAweGZiLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQwLCAweGY3LCAweDE1LCAweDM2LCAweGY3LCAweDExLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NTEsIDB4YSwgMHg3MywgMHhhLCAweGY4LCAweDNjLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDI3LCAweDFkLCAweGZiLCAweGQyLCAweGZkLCAweGMwLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDFkLCAweDU3LCAweDdiLCAweDk0LCAweDliLCAweDk4LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDkwLCAweDlmLCAweDdlLCAweGEsIDB4ZjcsIDB4MSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg0ZiwgMHg3ZCwgMHg4YSwgMHg3YiwgMHg4OCwgMHg3OSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDUsIDB4M2EsIDB4NjAsIDB4N2MsIDB4NzIsIDB4ZmIsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NjUsIDB4YSwgMHg5MywgMHg3MywgMHgxZCwgMHg4YiwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg4NSwgMHg5NiwgMHg4NywgMHg0MywgMHhhLCAweGUsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3MywgMHhhLCAweGY3LCAweGNiLCAweGY5LCAweDY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDYsIDB4ZjcsIDB4MmIsIDB4ZTEsIDB4NSwgMHhhMiwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg5NywgMHgyNSwgMHgxZCwgMHhmYywgMHg2MCwgMHhmZCwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgzNywgMHgxZCwgMHg1NSwgMHg3ZCwgMHg5NSwgMHg5YywgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg5YiwgMHg5MCwgMHg5ZSwgMHg3ZSwgMHhhLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4NzAsIDB4NGQsIDB4N2UsIDB4ODksIDB4N2MsIDB4ODksIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4YSwgMHg2MCwgMHgzYSwgMHg3YywgMHg3MSwgMHhmYiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgxOSwgMHg2NSwgMHhhLCAweDk1LCAweDczLCAweDFkLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDFkLCAweGUsIDB4NTEsIDB4YSwgMHhmNywgMHg3OCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmYywgMHgzMiwgMHhmZSwgMHgxNSwgMHgxNSwgMHgzNywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg3YywgMHg5NSwgMHg5YywgMHg5OCwgMHg5MSwgMHg5YiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHgxZiwgMHhjYSwgMHhmNywgMHg3YiwgMHg1LCAweGY3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4NmUsIDB4NDksIDB4N2YsIDB4ODksIDB4N2UsIDB4ODksIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4YSwgMHhlLCAweDUxLCAweGEsIDB4YzUsIDB4ZjcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHg4NiwgMHhmNywgMHgxYiwgMHhkOCwgMHhmNywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDcwLCAweDE2LCAweDM3LCAweDFkLCAweDU2LCAweDdjLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDk4LCAweDkzLCAweDliLCAweDkwLCAweDlmLCAweDdlLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MywgMHhhYywgMHg3MCwgMHg0ZCwgMHg3ZSwgMHg4OSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3YSwgMHgyYSwgMHhhLCAweGY3LCAweGExLCAweGY5LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDFkLCAweDY4LCAweGEsIDB4NzMsIDB4YSwgMHg2YiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHgxZCwgMHg0YSwgMHg3ZiwgMHg5YSwgMHhhMSwgMHg5NywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg4ZSwgMHg5NSwgMHg0MSwgMHhhLCAweGM2LCAweDliLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDdmLCAweDg2LCAweDdjLCAweDQ3LCAweDFkLCAweGY3LCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDQ0LCAweDJhLCAweDFkLCAweDY4LCAweGEsIDB4NzMsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NCwgMHhmOSwgMHg2NywgMHg3YiwgMHhhLCAweGY3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDUsIDB4YTEsIDB4OTgsIDB4OWUsIDB4OWMsIDB4MjUsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZGEsIDB4ZmQsIDB4ZWEsIDB4OGUsIDB4MWQsIDB4NGUsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4OWYsIDB4OTgsIDB4OTEsIDB4OWEsIDB4OGUsIDB4OTYsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhjNiwgMHg5YiwgMHg3ZiwgMHg3OSwgMHg3ZiwgMHg4NiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHgxZCwgMHhlLCAweDY4LCAweGEsIDB4ZjcsIDB4NzgsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHhiLCAweGY5LCAweDY3LCAweDE1LCAweGM0LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4ZWEsIDB4ZTMsIDB4MmMsIDB4M2IsIDB4MWQsIDB4ZmIsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmUsIDB4MTUsIDB4OGUsIDB4MWQsIDB4NGUsIDB4N2IsIDB4OTgsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4OTEsIDB4OWEsIDB4OGUsIDB4OTYsIDB4NDYsIDB4YSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGM2LCAweGY3LCAweDFhLCAweDEsIDB4ZjIsIDB4ZjcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmMiwgMHhmOSwgMHhiMCwgMHgxNSwgMHg0MSwgMHgxZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgxNiwgMHg0MSwgMHgxZCwgMHhmYiwgMHhlYSwgMHhmZCwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHgxZCwgMHg0YSwgMHg3ZiwgMHg5YSwgMHhhMSwgMHg5NywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg4ZSwgMHg5NSwgMHg0NiwgMHhhLCAweGM3LCAweDhiLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGJiLCAweGI3LCAweGY3LCAweDlkLCAweGFhLCAweDEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4ZjcsIDB4MjcsIDB4MywgMHhmNywgMHg5OCwgMHhmNywgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHhlLCAweDYsIDB4OTcsIDB4YjcsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDYsIDB4YzgsIDB4ZjcsIDB4NzcsIDB4ODAsIDB4MWQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NWIsIDB4MjUsIDB4NjAsIDB4ZmIsIDB4ZDEsIDB4ZmIsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4N2QsIDB4OWEsIDB4YTMsIDB4OWEsIDB4OGYsIDB4OWMsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg5MSwgMHhmNywgMHgxMywgMHhmNywgMHg2ZSwgMHg1ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDgyLCAweDc1LCAweDVhLCAweGZiLCAweDRhLCAweDFlLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4N2YsIDB4NWYsIDB4NSwgMHhmMSwgMHg2LCAweDg2LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDVjLCAweDY3LCAweGZiLCAweGYsIDB4NmYsIDB4MmQsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4NmEsIDB4ODYsIDB4OCwgMHhlLCAweDhiLCAweDFkLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDFkLCAweDEzLCAweGIwLCAweDcwLCAweDE2LCAweGY3LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDYsIDB4NTIsIDB4NzcsIDB4OWUsIDB4YWYsIDB4YTcsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4OTMsIDB4YTYsIDB4MWYsIDB4ZWUsIDB4ZjcsIDB4ZjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3MCwgMHg1OSwgMHhhLCAweGMyLCAweGEwLCAweDc4LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDg1LCAweDY4LCAweDgzLCAweDZmLCAweDY0LCAweDFkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ZmMsIDB4MmYsIDB4MTgsIDB4MTMsIDB4YTgsIDB4NjMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODAsIDB4OTMsIDB4NTksIDB4N2YsIDB4OCwgMHhmNywgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg1OSwgMHg1MCwgMHhhLCAweGE4LCAweGEyLCAweDdmLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDFmLCAweDEzLCAweGIwLCAweDgwLCAweGExLCAweGEyLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDNkLCAweDFkLCAweDdjLCAweDczLCAweDk2LCAweDk2LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDk1LCAweDcxLCAweDZlLCAweDk1LCAweDcwLCAweDU0LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDFkLCAweGY4LCAweDNkLCAweGY4LCAweDk2LCAweDJhLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDFkLCAweGY3LCAweGVmLCAweGY4LCAweDk2LCAweDI2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MWQsIDB4ZjcsIDB4NmEsIDB4MjUsIDB4YSwgMHhmNywgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg5NiwgMHg1YiwgMHhhLCAweGVjLCAweGUzLCAweDJhLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDY1LCAweDFkLCAweGM3LCAweDhjLCAweDFkLCAweDRkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZGMsIDB4M2EsIDB4MWQsIDB4ZjcsIDB4ODAsIDB4ZjgsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4YSwgMHhhNCwgMHhhMiwgMHg3ZiwgMHg4MCwgMHhhNCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhlYywgMHg4MCwgMHhhMywgMHhhNCwgMHg4MSwgMHhhOCwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg3YywgMHg3MiwgMHg5NiwgMHg5NiwgMHg3MCwgMHgxZiwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg2ZiwgMHg5NSwgMHg3MCwgMHg1NCwgMHgxZCwgMHg2NSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhmNywgMHgxYSwgMHgxMiwgMHhhNiwgMHhmNywgMHgyNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGY3LCAweDFhLCAweGQ4LCAweGY3LCAweDFhLCAweDMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweDEzLCAweGZhLCAweDNhLCAweDFkLCAweGY3LCAweDljLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweDJlLCAweGEsIDB4MTMsIDB4ZmMsIDB4ZjcsIDB4NjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MmYsIDB4YjAsIDB4NzYsIDB4ZjgsIDB4NmUsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhjNywgMHgxNSwgMHhiNywgMHg1ZiwgMHhmNywgMHg1NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhmNywgMHg1MywgMHhmYiwgMHg1NCwgMHhiYSwgMHhiYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhmNywgMHg1MiwgMHhmNywgMHg1NSwgMHhmNywgMHg1NiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhmYiwgMHg1MCwgMHhmYiwgMHg1MiwgMHhmYiwgMHg1MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHg1ZCwgMHg1YywgMHhmNywgMHg1MSwgMHhmYiwgMHg1MSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YzcsIDB4MjMsIDB4NzYsIDB4ZjYsIDB4YWQsIDB4ZjksIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhkYSwgMHg3NywgMHgxLCAweDRkLCAweGEsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhkOCwgMHgxNSwgMHg4MywgMHg5ZiwgMHg4OCwgMHhhMiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhlYiwgMHhlNCwgMHhmOCwgMHgyOSwgMHhmNywgMHg0OSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg4MywgMHg3ZSwgMHg5YSwgMHgxZSwgMHhmYiwgMHhiZSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHgxNSwgMHhmNywgMHhkOSwgMHhmOCwgMHhiZiwgMHg1LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDhlLCAweDZmLCAweDc5LCAweDFhLCAweGZiLCAweDIsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4MjIsIDB4ZmIsIDB4NDcsIDB4NzIsIDB4NzQsIDB4OTEsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4MWUsIDB4ZmIsIDB4MjMsIDB4ZmIsIDB4MzcsIDB4MTUsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhkMSwgMHhmNywgMHhjLCAweDUsIDB4ODMsIDB4YTMsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4YWEsIDB4MWIsIDB4ZjcsIDB4OGQsIDB4ZjcsIDB4NDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4ZjcsIDB4NTYsIDB4ZjcsIDB4MiwgMHg1NiwgMHhjZSwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgxZiwgMHhjYSwgMHhmNywgMHgwLCAweDUsIDB4NWEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHgyZiwgMHg1LCAweDk0LCAweDcwLCAweDY3LCAweDhmLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDZmLCAweGZiLCAweDU3LCAweGZiLCAweDdkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDQ2LCAweGFmLCAweDM2LCAweGRjLCAweDYxLCAweDFmLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4YSwgMHg3MywgMHhhLCAweGIwLCAweGY3LCAweDFlLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ZjksIDB4ZSwgMHgyOSwgMHgxZCwgMHhjMywgMHg5ZSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg2ZSwgMHg4NCwgMHg2OCwgMHg4NCwgMHg3MCwgMHg0YSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg2ZiwgMHhiNCwgMHhjMSwgMHhiNSwgMHg5YSwgMHhiZCwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHgzZSwgMHgxZCwgMHhmNywgMHhmNiwgMHhjMSwgMHgyYSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhhLCAweDczLCAweGEsIDB4Y2UsIDB4ZjcsIDB4MWUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgzMiwgMHhmOSwgMHg2NywgMHgyMiwgMHgxZCwgMHhmYywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3MCwgMHgyOSwgMHgxZCwgMHhjMywgMHg5ZSwgMHg3OSwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg4NCwgMHg2OCwgMHg4NCwgMHg3MCwgMHg0YSwgMHgxZCwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhiMSwgMHhiZiwgMHhiNiwgMHg5OSwgMHhiZiwgMHg5OSwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHgxZCwgMHhlLCAweDcyLCAweGEsIDB4ZjcsIDB4NzgsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhjZSwgMHhmNywgMHgxZSwgMHgzLCAweGY3LCAweGEyLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDQyLCAweGEsIDB4ZmIsIDB4ZTAsIDB4ZmIsIDB4OWIsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4YzAsIDB4YTEsIDB4N2IsIDB4NmIsIDB4NmUsIDB4ODUsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NmUsIDB4NGEsIDB4MWQsIDB4MzAsIDB4NmIsIDB4YjEsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4OTksIDB4YzAsIDB4OTksIDB4YmMsIDB4M2UsIDB4MWQsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhhLCAweGM2LCAweGY3LCAweDFhLCAweDEsIDB4ZjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4Y2EsIDB4ZjcsIDB4MWEsIDB4YmEsIDB4ZjcsIDB4MWEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHhmOSwgMHhlLCAweDI5LCAweDFkLCAweGM0LCAweDlkLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDZmLCAweDg0LCAweDZhLCAweDg0LCAweDcwLCAweDRhLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweDZlLCAweGIzLCAweGMxLCAweGI1LCAweDlhLCAweGJlLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDNlLCAweDFkLCAweGY3LCAweDYzLCAweGY3LCAweDEyLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NjksIDB4MmQsIDB4MWQsIDB4NTgsIDB4NTgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHhhLCAweGQ0LCAweDE2LCAweGY3LCAweGQ2LCAweGFlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4NzAsIDB4OTgsIDB4YWIsIDB4OTksIDB4OGQsIDB4OWIsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4MWYsIDB4YmYsIDB4ZjcsIDB4NDksIDB4NmEsIDB4YSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg3ZSwgMHg3OSwgMHg4MSwgMHg4NywgMHg3ZSwgMHg4MCwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHgyZiwgMHhmYiwgMHg2OSwgMHg1LCAweDRiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDgxLCAweDgyLCAweGE3LCAweDFhLCAweGEyLCAweDk0LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDZhLCAweDFkLCAweDU1LCAweGZiLCAweDRlLCAweDc5LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDc0LCAweDUxLCAweDg2LCAweDE5LCAweGY3LCAweGIxLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDI2LCAweGEsIDB4NTgsIDB4OGIsIDB4YWUsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4ZjcsIDB4YjQsIDB4YWIsIDB4NmIsIDB4ZjcsIDB4M2IsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4M2YsIDB4ZjcsIDB4MjYsIDB4MTMsIDB4ZTgsIDB4ZjcsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmYsIDB4NmYsIDB4MWQsIDB4MzMsIDB4NjIsIDB4NDAsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4NzgsIDB4OGMsIDB4OGYsIDB4NzcsIDB4MWYsIDB4ZmIsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NmYsIDB4MTUsIDB4ZjcsIDB4YmEsIDB4YWUsIDB4NiwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg5ZSwgMHhhMiwgMHg5NCwgMHg4ZCwgMHg5NCwgMHg4ZCwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhMiwgMHhkZiwgMHg1LCAweDg3LCAweGIwLCAweDlhLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDFiLCAweGY3LCAweDFhLCAweGY3LCAweDEzLCAweGNlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweGY3LCAweDEyLCAweDIwLCAweGFhLCAweDIxLCAweDFmLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTksIDB4ZTUsIDB4YTMsIDB4OGYsIDB4YjMsIDB4OTEsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkOCwgMHg4YywgMHhhZSwgMHg1LCAweGZiLCAweGJhLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YmYsIDB4OWYsIDB4N2YsIDB4NzcsIDB4N2MsIDB4ODgsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4NzUsIDB4MWYsIDB4ZmIsIDB4ZiwgMHhmYywgMHg0YiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg3NCwgMHg4OCwgMHg2MywgMHg4NCwgMHgxOSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGY3LCAweDE2LCAweGNhLCAweGFkLCAweGY5LCAweDFjLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY3LCAweGNmLCAweGY3LCAweGMsIDB4NDIsIDB4ZjcsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmMCwgMHhmNywgMHgyMiwgMHg5YSwgMHgxNSwgMHg4MiwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg3ZSwgMHhiNiwgMHgxYiwgMHhmNywgMHhiLCAweGY2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDEyLCAweGU5LCAweDRjLCAweGIxLCAweDNkLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDhkLCAweDcsIDB4MTMsIDB4ZTgsIDB4Y2EsIDB4YTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhiZiwgMHhmNywgMHgyLCAweDFhLCAweGQ0LCAweDRmLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGZiLCAweDJlLCAweDQzLCAweGZiLCAweDMzLCAweGZiLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDFlLCAweDQ5LCAweGZiLCAweGZmLCAweDZkLCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDVjLCAweDgsIDB4ODAsIDB4ODIsIDB4NzEsIDB4N2EsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ODQsIDB4ODcsIDB4OGYsIDB4OTQsIDB4OTYsIDB4OTMsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OTUsIDB4MWYsIDB4OGQsIDB4OTAsIDB4OGQsIDB4OTEsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YjAsIDB4NmIsIDB4OTIsIDB4N2UsIDB4NTUsIDB4OGIsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NjcsIDB4YWEsIDB4NjQsIDB4Y2MsIDB4ZjcsIDB4YSwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkLCAweGY3LCAweDQ5LCAweGI0LCAweDFlLCAweGU2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDUsIDB4ZjcsIDB4MywgMHhhNCwgMHhhOCwgMHhjMiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiYSwgMHg4YywgMHg0NywgMHg3NSwgMHg0ZCwgMHg3OSwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHgxZiwgMHg4NCwgMHg2YSwgMHg1LCAweDEzLCAweGYwLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGFhLCAweDVmLCAweDNhLCAweDFhLCAweDViLCAweDZkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDNmLCAweDdhLCAweDc4LCAweDkzLCAweDlhLCAweDgwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NTgsIDB4MWQsIDB4YjUsIDB4ODUsIDB4NzcsIDB4ZjcsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4YSwgMHg2ZiwgMHg4MSwgMHg2MiwgMHg2MiwgMHg3NiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg4NiwgMHg4ZiwgMHg5NSwgMHg0NCwgMHhhLCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg2LCAweDc4LCAweDRkLCAweDZmLCAweGEsIDB4MTMsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4YSwgMHgzMCwgMHhhLCAweGY3LCAweDc0LCAweGY4LCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDFkLCAweDViLCAweDFkLCAweGY3LCAweDkzLCAweDM0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4ODAsIDB4NWYsIDB4NjMsIDB4NzcsIDB4M2YsIDB4MWQsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4MzAsIDB4YSwgMHhmNywgMHhkLCAweGY4LCAweDI1LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NWIsIDB4MWQsIDB4ZjcsIDB4OGMsIDB4MzQsIDB4YSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDhmLCAweDk1LCAweDI4LCAweDFkLCAweDEzLCAweGFjLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YTEsIDB4ZjgsIDB4MjUsIDB4NDIsIDB4YSwgMHhlLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGU5LCAweDhjLCAweDFkLCAweDc2LCAweGY3LCAweGYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MjgsIDB4YSwgMHgxMywgMHg5YSwgMHg2ZSwgMHg4MCwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg3OCwgMHgzZiwgMHgxZCwgMHgxMywgMHhhNiwgMHgzMCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGY4LCAweDNhLCAweDUwLCAweGEsIDB4YTUsIDB4YTIsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4YTEsIDB4MWYsIDB4MTMsIDB4YWEsIDB4N2YsIDB4YTYsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YTUsIDB4M2QsIDB4MWQsIDB4N2IsIDB4NzEsIDB4OTgsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4MWYsIDB4OTUsIDB4NzIsIDB4NzAsIDB4OTMsIDB4NzIsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NWIsIDB4MWQsIDB4ZGEsIDB4ZjcsIDB4MWEsIDB4NzQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg4ZSwgMHhhLCAweDEzLCAweDZmLCAweDI4LCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4NmUsIDB4ODAsIDB4NWYsIDB4NjMsIDB4NzcsIDB4M2YsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YWYsIDB4MzAsIDB4YSwgMHhhNiwgMHhmOCwgMHg2ZCwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDNhLCAweGEsIDB4NTgsIDB4MWQsIDB4YjAsIDB4NjYsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4YmMsIDB4NWEsIDB4ZjcsIDB4MzksIDB4ZmIsIDB4OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGZiLCAweDgsIDB4ZjcsIDB4MzgsIDB4NWIsIDB4YmIsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgzLCAweGY3LCAweDM3LCAweGZiLCAweDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmYiwgMHg4LCAweGY3LCAweDNhLCAweDU5LCAweGJkLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGU0LCAweDI4LCAweGEsIDB4MTMsIDB4OTksIDB4NjQsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg4ZiwgMHg5NSwgMHgyOCwgMHgxZCwgMHgzMCwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4ZjgsIDB4OGYsIDB4MTUsIDB4YzYsIDB4YmEsIDB4YmIsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MTMsIDB4YWEsIDB4YzgsIDB4YzYsIDB4YmIsIDB4NWIsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4NWIsIDB4NWMsIDB4NTAsIDB4MWYsIDB4MTMsIDB4YTQsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4NWMsIDB4YmEsIDB4YzYsIDB4MWYsIDB4MTMsIDB4YWEsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4OGMsIDB4MTUsIDB4NmIsIDB4YTUsIDB4NzEsIDB4YWIsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YTUsIDB4YWIsIDB4YWIsIDB4NzEsIDB4YTUsIDB4NmIsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NzEsIDB4NmIsIDB4MWUsIDB4ZSwgMHhjNywgMHg3ZSwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhkMiwgMHg1YSwgMHg3NiwgMHhmNywgMHhhLCAweDc3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAweDc3LCAweGY3LCAweDc1LCAweGIzLCAweDZkLCAweGE5LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweDg2LCAweGY3LCAweDEyLCAweGY4LCAweDYyLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDljLCAweGMwLCAweGY3LCAweGFjLCAweGY3LCAweDgsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NiwgMHg1YiwgMHg5NCwgMHg5YSwgMHgzYSwgMHhmNywgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHgxNywgMHhjNCwgMHhmNywgMHgxOSwgMHg4ZCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg2ZiwgMHg5YywgMHg1LCAweDdhLCAweDgyLCAweDYwLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ0LCAweDFiLCAweDUxLCAweDgyLCAweGM1LCAweGE0LCAweDliLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDhlLCAweDlhLCAweDFmLCAweGIyLCAweDk0LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4YjAsIDB4Y2UsIDB4ZDQsIDB4ZDIsIDB4MWEsIDB4YzgsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4NTMsIDB4NjgsIDB4NjMsIDB4ODMsIDB4NTYsIDB4NjEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OGQsIDB4OWQsIDB4YzYsIDB4NSwgMHgxMywgMHgzOSwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHg4ZSwgMHg3NiwgMHg0ZCwgMHg1LCAweDg4LCAweDYsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4N2YsIDB4YWYsIDB4NGQsIDB4MWIsIDB4ZmIsIDB4MTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4ZmIsIDB4NWUsIDB4ZmIsIDB4MjEsIDB4MjYsIDB4YzksIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4ZWEsIDB4YmUsIDB4ZGYsIDB4YjcsIDB4YTUsIDB4MWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4OGQsIDB4MTUsIDB4MTMsIDB4NWMsIDB4YzAsIDB4ZTksIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjMsIDB4ZDcsIDB4YjAsIDB4OTksIDB4NzEsIDB4NjYsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4ZmIsIDB4OGQsIDB4MmIsIDB4NjcsIDB4N2QsIDB4YTgsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4YjgsIDB4ZWIsIDB4MTUsIDB4OTAsIDB4OWMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg5YSwgMHhjMCwgMHhjMSwgMHg5YiwgMHhiNSwgMHhmNywgMHgyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHgxYiwgMHhhYywgMHg4YiwgMHg2ZiwgMHg3ZCwgMHhmYiwgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIyLCAweDU3LCAweDZmLCAweDFmLCAweGUsIDB4ZmIsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NmUsIDB4YjQsIDB4ZDgsIDB4ZjcsIDB4MmIsIDB4ZmIsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHhlMywgMHg3NiwgMHhmNywgMHhjZSwgMHhmNywgMHgzNCwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHgxMiwgMHg3MywgMHhmNywgMHgxNCwgMHgxMywgMHhiYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDdmLCAweDE1LCAweDU0LCAweDNiLCAweDk4LCAweDdmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4Y2EsIDB4N2QsIDB4YSwgMHg3NCwgMHg3YywgMHg2YywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg4NiwgMHhhLCAweGExLCAweDc5LCAweGJmLCAweDFiLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweDllLCAweGNhLCAweDFmLCAweDEzLCAweGJhLCAweGM3LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDczLCAweDgyLCAweDgzLCAweDhhLCAweDg5LCAweDgyLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGJmLCAweGUwLCAweDk2LCAweGNiLCAweGNiLCAweGI0LCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDZmLCAweDlkLCAweDUsIDB4MTMsIDB4YzYsIDB4NTEsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NmIsIDB4NWUsIDB4MWIsIDB4NmUsIDB4NWYsIDB4YWEsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4ZGEsIDB4ZjcsIDB4NTgsIDB4ZTIsIDB4OTQsIDB4OTksIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ODYsIDB4ODgsIDB4ODUsIDB4ODcsIDB4ODQsIDB4MWYsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4ODMsIDB4N2UsIDB4N2EsIDB4MWEsIDB4MTMsIDB4YmEsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NjAsIDB4YjcsIDB4M2MsIDB4ZmIsIDB4MWUsIDB4ZmIsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmUsIDB4ZmIsIDB4MmQsIDB4MjMsIDB4ZDMsIDB4NGMsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZSwgMHgyZiwgMHhhLCAweGY3LCAweDJhLCAweGY3LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGI2LCAweDYsIDB4ZmIsIDB4MSwgMHg1ZiwgMHgxZCwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGJlLCAweGY3LCAweGMyLCAweDE1LCAweGI4LCAweDVhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MWQsIDB4ZjcsIDB4NzgsIDB4MjIsIDB4YSwgMHg1YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHgxNSwgMHhjMCwgMHg2LCAweGY3LCAweDE3LCAweGU4LCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDUsIDB4YmQsIDB4NiwgMHgzNSwgMHg0ZSwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MWQsIDB4YzcsIDB4ZjcsIDB4MTksIDB4MTIsIDB4OTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4NjksIDB4ZjcsIDB4MTksIDB4ZDMsIDB4ZTcsIDB4MmYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MTMsIDB4ZjQsIDB4MjAsIDB4YSwgMHgxMywgMHhlYSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhhLCAweDE1LCAweDY3LCAweGEsIDB4ZjcsIDB4NjUsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4YSwgMHhlLCAweDY2LCAweDFkLCAweGY5LCAweDU2LCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDc0LCAweGY4LCAweDE5LCAweDdiLCAweGEsIDB4ZmIsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHgxZCwgMHg2NiwgMHgxZCwgMHhmOSwgMHg1NiwgMHg2YywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHg1NSwgMHg4ZiwgMHhhLCAweDkwLCAweDk0LCAweDI0LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4ZjgsIDB4MTksIDB4MjYsIDB4YSwgMHg2NiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg0ZiwgMHg2YywgMHgxZCwgMHg1NCwgMHg1NSwgMHg3MywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHgzMiwgMHhhLCAweGZiLCAweDg0LCAweGY4LCAweDE5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDYsIDB4ZjcsIDB4MTYsIDB4ZTgsIDB4ZTQsIDB4MmUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHg2LCAweDM0LCAweDRlLCAweGEsIDB4ZSwgMHg2NiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhhNiwgMHhmNywgMHgxYSwgMHgxLCAweDljLCAweGY3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweGY3LCAweDFhLCAweDMsIDB4ZjcsIDB4NmMsIDB4ZjcsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NzEsIDB4ODgsIDB4NTEsIDB4NTYsIDB4NzQsIDB4MWIsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4OTAsIDB4OTQsIDB4MjQsIDB4YSwgMHhmYiwgMHg3MSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgyZSwgMHhhLCAweGY3LCAweDY1LCAweDJkLCAweDFkLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweGY4LCAweDM1LCAweDZlLCAweGEsIDB4ZjcsIDB4MmUsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg2YiwgMHg3YiwgMHgxZCwgMHg3ZCwgMHg1OSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhmYiwgMHhhYSwgMHgyYiwgMHg1NywgMHg4YiwgMHhmNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDFlLCAweGY3LCAweDc3LCAweGY3LCAweDllLCAweDE1LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDZmLCAweDk3LCAweDczLCAweDFiLCAweGZiLCAweDI4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGZiLCAweDJlLCAweGZiLCAweDJlLCAweDJiLCAweGQ5LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGY3LCAweDJmLCAweGY3LCAweDE1LCAweGY3LCAweDQ1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGUwLCAweDY2LCAweGRkLCAweDUyLCAweGM4LCAweDFmLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweDY5LCAweGFiLCAweDIwLCAweDUyLCAweDY0LCAweGFiLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDVjLCAweDkxLCAweDE5LCAweDVmLCAweDcwLCAweGIxLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDczLCAweGFmLCAweDY4LCAweDE5LCAweGZiLCAweGUsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4NmMsIDB4ZjcsIDB4YiwgMHhjOSwgMHg1LCAweGFlLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDU2LCAweDU2LCAweDFhLCAweGUsIDB4MjEsIDB4OTcsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4NzYsIDB4ZjgsIDB4NjIsIDB4NzcsIDB4ZjcsIDB4MWUsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4NzAsIDB4NzgsIDB4YSwgMHg5OCwgMHg5NywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxZiwgMHg3NSwgMHgzMywgMHhmYiwgMHg2ZiwgMHg0NCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiMCwgMHg3NiwgMHgxZCwgMHg2OCwgMHg4MCwgMHg2MCwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg4OCwgMHgxZCwgMHg5MSwgMHg5NiwgMHgxZiwgMHhhOCwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2OCwgMHhjYywgMHg0ZiwgMHhhLCAweDEzLCAweDcwLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4MmIsIDB4ZjgsIDB4YWQsIDB4NTAsIDB4YSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg4MSwgMHg4MSwgMHhhMSwgMHgxZiwgMHg3ZiwgMHhhNCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHhhNywgMHgzZCwgMHgxZCwgMHg3YywgMHg3NCwgMHg5NSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHgxZiwgMHg5NSwgMHg3MSwgMHg2ZCwgMHg5NiwgMHg3MCwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg3ZSwgMHhhOCwgMHhmOCwgMHgzMywgMHhhOCwgMHhmNywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhhLCAweGY3LCAweGRkLCAweGY4LCAweGUsIDB4MmEsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YTgsIDB4ZjgsIDB4MzMsIDB4NmUsIDB4YSwgMHhlMywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweGFiLCAweDdiLCAweDFkLCAweDdmLCAweDU5LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGZiLCAweGFhLCAweDM2LCAweGEsIDB4ZjcsIDB4NDAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4ZjcsIDB4MWEsIDB4ZmIsIDB4YiwgMHg5ZCwgMHg0YiwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3NiwgMHhmOCwgMHhlLCAweDI2LCAweGEsIDB4OGYsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2EsIDB4MzcsIDB4YSwgMHhmNywgMHgxMywgMHhmOCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweGEsIDB4ZSwgMHg4ZiwgMHgxZCwgMHhkNywgMHg4YywgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHgxZCwgMHgxMywgMHhkYywgMHgyMywgMHhhLCAweGY3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDIzLCAweDUwLCAweGEsIDB4YTksIDB4YTAsIDB4ODEsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MWYsIDB4MTMsIDB4ZWMsIDB4ODAsIDB4YTIsIDB4YTIsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4M2QsIDB4MWQsIDB4N2MsIDB4NzQsIDB4OTUsIDB4OTYsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OTUsIDB4NzAsIDB4NmQsIDB4OTYsIDB4NzAsIDB4NTQsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4MWQsIDB4YzgsIDB4ZjcsIDB4MWEsIDB4MTIsIDB4ODgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg5MywgMHhmNywgMHgxYSwgMHhjYiwgMHhmNywgMHhiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4MWEsIDB4MTMsIDB4ZmMsIDB4MjMsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmOCwgMHg1NiwgMHgyZSwgMHhhLCAweDEzLCAweGZhLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MmYsIDB4NmUsIDB4ZWYsIDB4MjcsIDB4ZjcsIDB4MjgsIDB4ZTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4MzYsIDB4ZDAsIDB4ZjUsIDB4ZjcsIDB4MjgsIDB4MjcsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4NjcsIDB4ZjcsIDB4MjgsIDB4ZmIsIDB4YywgMHhlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg1YSwgMHhhYywgMHhmNywgMHg2OCwgMHgxNSwgMHhmOCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhmYywgMHg4YywgMHg2LCAweDEzLCAweGE1LCAweGY3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDk4LCAweDE1LCAweDY2LCAweGEsIDB4ZjgsIDB4NjQsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHhhLCAweGUsIDB4MjksIDB4NzYsIDB4ZjUsIDB4YTgsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ZjgsIDB4OCwgMHhhOCwgMHhlYywgMHg1YywgMHgxZCwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhhLCAweGY3LCAweGIwLCAweGY3LCAweDAsIDB4OTgsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4ODEsIDB4OTQsIDB4MWUsIDB4ZmIsIDB4NTEsIDB4ZmIsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4YSwgMHg2MSwgMHg0MCwgMHgxNSwgMHg0MywgMHhmYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGIzLCAweDYsIDB4Y2IsIDB4ZjcsIDB4NiwgMHg1LCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDlkLCAweDg4LCAweDljLCAweDFiLCAweGY3LCAweDM0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweGY3LCAweDQwLCAweGY3LCAweDI5LCAweGRhLCAweDYyLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDlkLCAweDFmLCAweGNjLCAweGY3LCAweDgsIDB4NSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDUwLCAweDIzLCAweDUsIDB4OTAsIDB4NzksIDB4NzEsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4MWIsIDB4ZmIsIDB4MzIsIDB4ZmIsIDB4YiwgMHhmYiwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZSwgMHg0ZCwgMHhhYiwgMHg1ZiwgMHhiOCwgMHg3NCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhhNiwgMHgxNSwgMHhmNywgMHg1NSwgMHhmNywgMHhlYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDhhLCAweDhiLCAweDg3LCAweDg4LCAweDFhLCAweDQwLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGFhLCAweDJiLCAweDc3LCAweDdmLCAweDkyLCAweDk2LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGUsIDB4NjQsIDB4YSwgMHhmNywgMHhhMCwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDFkLCAweDU0LCAweDRlLCAweDhmLCAweGEsIDB4OTEsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4YSwgMHg3OSwgMHg4NiwgMHg5NywgMHg5YSwgMHg5ZSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHgyZCwgMHhhLCAweGNmLCAweGY3LCAweGZkLCAweDJhLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGEsIDB4ZjcsIDB4YTAsIDB4NzcsIDB4MSwgMHgyOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDliLCAweDllLCAweDk0LCAweGE0LCAweDJkLCAweGEsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZmQsIDB4MjYsIDB4YSwgMHg2NCwgMHhhLCAweGY3LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4MjksIDB4YSwgMHg5NSwgMHg5YSwgMHg5ZSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHgyZCwgMHhhLCAweGZiLCAweDFhLCAweGY3LCAweGZkLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHg2NCwgMHhhLCAweGU3LCAweGY3LCAweDFhLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmMsIDB4OGUsIDB4YSwgMHgzLCAweDI5LCAweGEsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4OWUsIDB4OTQsIDB4YTUsIDB4MmQsIDB4YSwgMHhmYiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0NSwgMHgyZSwgMHhhLCAweDNhLCAweGEsIDB4NzksIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTMsIDB4NzcsIDB4MSwgMHgzNSwgMHgxZCwgMHg1NSwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg3MCwgMHg3YiwgMHg3ZSwgMHg5MywgMHg5MywgMHg3ZSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg3YywgMHg3YywgMHg5NSwgMHg3NywgMHgzOCwgMHgxZCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg3ZSwgMHg5NywgMHg4MiwgMHgxZSwgMHg5YSwgMHg3ZiwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg3MiwgMHg3YSwgMHhhLCAweDViLCAweGY4LCAweDI3LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ODcsIDB4MWQsIDB4ZjcsIDB4ODEsIDB4NzcsIDB4NTksIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NmIsIDB4NDMsIDB4NDQsIDB4ZmIsIDB4ODYsIDB4NGYsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4MWYsIDB4ODgsIDB4OGUsIDB4ZWEsIDB4ZjcsIDB4ZTgsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MWQsIDB4MWEsIDB4N2UsIDB4ZmIsIDB4ZSwgMHhmYywgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhmYiwgMHg4OCwgMHgxZSwgMHg0ZCwgMHg3YiwgMHg3NSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDc3LCAweGE5LCAweGFiLCAweGExLCAweDllLCAweGM3LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDFmLCAweGUsIDB4ZmIsIDB4NmUsIDB4ZmIsIDB4NjEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmNywgMHg2NSwgMHg3NywgMHhmNywgMHhmZiwgMHg3NywgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYSwgMHgxMiwgMHhlYiwgMHg4ZSwgMHhhLCAweGZiLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4MTMsIDB4ZmEsIDB4NDUsIDB4YSwgMHg5NCwgMHg5NCwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg5NCwgMHg3ZCwgMHg3ZSwgMHg5MywgMHg3OCwgMHgzOCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg5OCwgMHg3ZSwgMHg5OCwgMHg4MiwgMHgxZSwgMHg5OSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg4NCwgMHg3NCwgMHg3YSwgMHhhLCAweGZiLCAweDI3LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDJlLCAweGEsIDB4MTMsIDB4ZmMsIDB4M2EsIDB4YSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmOCwgMHg2YiwgMHgzYywgMHgxZCwgMHhlLCAweDUzLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDdkLCAweDk2LCAweDljLCAweDk0LCAweDhlLCAweDk3LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDFmLCAweGJkLCAweGY3LCAweDRkLCAweGY3LCAweDI4LCAweGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGQxLCAweGZiLCAweDJhLCAweDNhLCAweGM3LCAweGY3LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGM3LCAweGE3LCAweDk0LCAweGMzLCAweDhlLCAweDgyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4ODQsIDB4YTMsIDB4NzksIDB4NzQsIDB4MWEsIDB4ODMsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODksIDB4ODMsIDB4MWUsIDB4M2UsIDB4ZmIsIDB4YTgsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4NzUsIDB4NDUsIDB4ZjMsIDB4YzMsIDB4NjksIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg1MiwgMHg3NiwgMHg4YywgMHg2MCwgMHg4NSwgMHgxOSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDFkLCAweGY5LCAweDU4LCAweDc3LCAweDEsIDB4ZjcsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjEsIDB4MTUsIDB4NzEsIDB4ODgsIDB4NTIsIDB4NTYsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg5MCwgMHg5NCwgMHg5ZiwgMHg5YiwgMHhjNSwgMHg5MSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjNCwgMHhmNywgMHg2MSwgMHhlMSwgMHhiYSwgMHg5ZSwgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHg1YywgMHhkMCwgMHhmNywgMHg4ZSwgMHg3ZiwgMHhhLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDhiLCAweDZjLCAweDFhLCAweDc2LCAweDZmLCAweDI4LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDFlLCAweDNkLCAweDYwLCAweDc4LCAweDQ1LCAweGQ4LCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NjUsIDB4ZmIsIDB4MWQsIDB4NmQsIDB4ZmIsIDB4MSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg3ZCwgMHg4NSwgMHg1NiwgMHhjZiwgMHhkYiwgMHhiZCwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhiNywgMHgxZSwgMHhlLCAweGY3LCAweGFlLCAweDgzLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGFiLCAweGY3LCAweGM0LCAweGFkLCAweGY3LCAweDlmLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGFiLCAweDEyLCAweGEyLCAweGY3LCAweDIxLCAweDEzLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGUxLCAweGY3LCAweGU0LCAweDE1LCAweGRlLCAweDhhLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDQ4LCAweDFhLCAweDgzLCAweDg4LCAweDZiLCAweDhhLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGE2LCAweDg2LCAweGQzLCAweGY3LCAweGE0LCAweDcwLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDU0LCAweDcxLCAweDVhLCAweGZiLCAweDFlLCAweDhjLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweGY3LCAweDcwLCAweDUsIDB4YWMsIDB4OTQsIDB4OGYsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4MWIsIDB4ZjcsIDB4NDQsIDB4ODEsIDB4MzAsIDB4NGQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ODUsIDB4YjksIDB4ZjcsIDB4NTMsIDB4NSwgMHhmYiwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDc4LCAweDZkLCAweDhkLCAweDhkLCAweDcxLCAweDFmLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDhkLCAweDcwLCAweDczLCAweDhkLCAweDgyLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGZiLCAweGM5LCAweGZiLCAweDYsIDB4ZmIsIDB4ZTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHhlYiwgMHhmYiwgMHhiLCAweGY3LCAweDNjLCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDkyLCAweDUsIDB4MTMsIDB4NzQsIDB4ZDUsIDB4OGMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiYywgMHg2LCAweGM3LCAweGY3LCAweDU2LCAweDcwLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NDYsIDB4NjcsIDB4NDAsIDB4MjksIDB4ZmIsIDB4MTQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4NzAsIDB4OGUsIDB4YTksIDB4OTIsIDB4OGMsIDB4OTQsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4MWYsIDB4ZmIsIDB4MTksIDB4YWIsIDB4MTUsIDB4MTMsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4N2EsIDB4NzMsIDB4NjUsIDB4NGIsIDB4MWIsIDB4ZmIsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhmMiwgMHhhYiwgMHhmNywgMHhlLCAweGRmLCAweGY3LCAweGZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDUwLCAweDhjLCAweDFmLCAweDllLCAweGM0LCAweDhiLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDgxLCAweDY3LCAweDg5LCAweDgzLCAweDFmLCAweGUsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YTgsIDB4NmUsIDB4Y2EsIDB4ZjgsIDB4MTMsIDB4YTgsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4ZjcsIDB4OSwgMHgxMywgMHg3MCwgMHhmOCwgMHgzOSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgxNSwgMHhmNywgMHg2YSwgMHhkMiwgMHhhZiwgMHg4YiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg5ZSwgMHg5YSwgMHg3YywgMHg3MCwgMHg4OSwgMHg4YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmYiwgMHgzOSwgMHg2NCwgMHgxZiwgMHgyMCwgMHhmYiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1YywgMHhiMywgMHhiOCwgMHg4MSwgMHhhNywgMHgxYiwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhiZCwgMHhlMiwgMHhiNiwgMHgxZiwgMHg2ZiwgMHg5YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDZhLCAweDcwLCAweDY1LCAweDRmLCAweDFiLCAweDYwLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGJjLCAweDk4LCAweDhlLCAweDk5LCAweDkwLCAweDk4LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweGEyLCAweGY3LCAweDMyLCAweGIzLCAweGY3LCAweGQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4NTAsIDB4OWYsIDB4NTQsIDB4NDksIDB4NjAsIDB4NjksIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MWUsIDB4YTQsIDB4N2EsIDB4NzAsIDB4YjAsIDB4NDIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDksIDB4ZmIsIDB4NCwgMHhmYiwgMHg1YywgMHgyMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOSwgMHhmNywgMHgxOSwgMHg4NiwgMHhhNSwgMHhhZiwgMHhkMCwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhiNywgMHgxZiwgMHhmYiwgMHg1MywgMHhjNywgMHgxNSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYSwgMHhmNywgMHgxZSwgMHg4YSwgMHg4NywgMHgxZSwgMHhiOSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhjMSwgMHhiYiwgMHgxYiwgMHhjMywgMHg4YywgMHg1NiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhiMCwgMHg1NiwgMHg1MSwgMHhmYiwgMHhiNiwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg4MCwgMHhiMSwgMHhiZCwgMHgxZSwgMHhlLCAweDIxLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGY5LCAweGUsIDB4YWUsIDB4ODcsIDB4NzcsIDB4ZjcsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4MWQsIDB4MTMsIDB4ZGMsIDB4OGQsIDB4NzksIDB4MTUsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhMiwgMHg5NSwgMHg5MCwgMHg5NywgMHhhNCwgMHgxYiwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHg3ZSwgMHg4MSwgMHhhZCwgMHgxZiwgMHg4NCwgMHhhMSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHhhOSwgMHgxYiwgMHhmNywgMHgyZiwgMHhlMiwgMHhkYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhkOSwgMHg0ZCwgMHhjOCwgMHg0ZCwgMHhjMiwgMHgxZiwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHg0ZiwgMHhiYiwgMHhiZiwgMHgxYSwgMHg5NiwgMHg4MywgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMSwgMHhmNywgMHg2LCAweGExLCAweGZiLCAweDIsIDB4NTMsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YTYsIDB4ODcsIDB4NSwgMHgxMywgMHhiYywgMHhiMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg1LCAweDZkLCAweDYsIDB4NzEsIDB4N2YsIDB4NmYsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4MWIsIDB4N2IsIDB4NzYsIDB4OTMsIDB4OTMsIDB4NzMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZGMsIDB4OTIsIDB4NzUsIDB4NzIsIDB4OTIsIDB4NzAsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWEsIDB4M2EsIDB4MmIsIDB4MjYsIDB4M2UsIDB4YzIsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4NWIsIDB4MWYsIDB4Y2IsIDB4NTYsIDB4Y2YsIDB4NWIsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NzcsIDB4ODIsIDB4MjEsIDB4ZmIsIDB4NCwgMHg2MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDliLCAweGY3LCAweDQwLCAweDhhLCAweDFlLCAweDZlLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4OTQsIDB4ZjgsIDB4OTksIDB4MTUsIDB4ZGQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYSwgMHhmNywgMHg0MiwgMHg1LCAweDUzLCAweDYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHg3OCwgMHgxZCwgMHhmYiwgMHhhNSwgMHg5MywgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHhhYywgMHg4YSwgMHg3NywgMHhmNywgMHg4ZCwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHhmNiwgMHgxMywgMHhkOCwgMHg4NSwgMHhhLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDg1LCAweDg1LCAweDlhLCAweDFmLCAweDg3LCAweDk3LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDllLCAweDFiLCAweGNiLCAweGU5LCAweGIwLCAweGVjLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGI3LCAweDZjLCAweGIzLCAweDFmLCAweDY2LCAweGJhLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGFkLCAweDFhLCAweDkwLCAweDg1LCAweGJjLCAweGMwLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDQ2LCAweDU5LCAweDkzLCAweDFlLCAweGE2LCAweDg5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjgsIDB4NzksIDB4YSwgMHg3YSwgMHg4MiwgMHg5MCwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxZiwgMHgxMywgMHhkOCwgMHg5MCwgMHg4MCwgMHg3ZCwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHgxYiwgMHg0YSwgMHgzZSwgMHg2NywgMHgzMiwgMHg0ZSwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhiYywgMHg0YywgMHgxZiwgMHhhNCwgMHg2YiwgMHg5ZiwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHgxYSwgMHg3MCwgMHg3ZCwgMHg3NywgMHg2NiwgMHg4MiwgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhhLCAweGY3LCAweDZhLCAweGY4LCAweGE1LCAweDYwLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDhiLCAweGE0LCAweGY4LCAweGZmLCAweGE0LCAweGM1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDEsIDB4ZjcsIDB4NzQsIDB4ZjcsIDB4MWIsIDB4ZDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MywgMHhkNCwgMHgxNiwgMHhmNywgMHhkNiwgMHhhNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDY3LCAweDk1LCAweGFjLCAweDkzLCAweDhkLCAweDk1LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDFmLCAweGJmLCAweGY3LCAweDY3LCAweGY3LCAweDUyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDkwLCAweDFkLCAweGI2LCAweDkzLCAweDE5LCAweGE0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDcyLCAweDcsIDB4YmMsIDB4ODksIDB4OWYsIDB4N2MsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NzksIDB4ODAsIDB4NzQsIDB4N2EsIDB4NzIsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZmIsIDB4NGUsIDB4NSwgMHg0YiwgMHhmNywgMHg1YywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhhNywgMHgxYSwgMHhhMiwgMHg5NywgMHhhOSwgMHhjNSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhmYiwgMHhhZiwgMHg3MiwgMHg3LCAweGJiLCAweDg0LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDlkLCAweDU0LCAweGUzLCAweGZiLCAweGFhLCAweDE4LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZjLCAweDc5LCAweDRiLCAweDcyLCAweDg4LCAweDUxLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGY3LCAweDJiLCAweGY5LCAweDk1LCAweDQ2LCAweDFkLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweGEsIDB4ZjcsIDB4NzgsIDB4NzcsIDB4M2UsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhmOSwgMHg0MCwgMHg2MCwgMHhhLCAweGZiLCAweGE1LCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY4LCAweDQzLCAweGViLCAweGY3LCAweDg1LCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NzUsIDB4MTUsIDB4YTcsIDB4YjEsIDB4OTIsIDB4OGEsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YTUsIDB4YTQsIDB4NzgsIDB4NzgsIDB4YTgsIDB4MWYsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4YjIsIDB4NzQsIDB4YmYsIDB4NzYsIDB4YSwgMHg3ZSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg4ZiwgMHg4NSwgMHgxZiwgMHg5MCwgMHg4MywgMHg5MiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHgxYSwgMHg4NCwgMHg4MywgMHg4MywgMHg3ZSwgMHg3MSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhhOCwgMHg3YywgMHgxZSwgMHg3YSwgMHhhZCwgMHg3MywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhhNCwgMHg4MCwgMHhhLCAweGZiLCAweDJlLCAweDcwLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGY2LCAweDUsIDB4ZjcsIDB4NzMsIDB4ZjgsIDB4OTksIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgzMCwgMHhmNywgMHgyNywgMHhmOCwgMHgyOSwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiLCAweGY3LCAweDI4LCAweDZkLCAweGE5LCAweDEyLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweGY3LCAweDUsIDB4MTMsIDB4ZDgsIDB4ZDksIDB4ZjgsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjQsIDB4NiwgMHgzZiwgMHhmYywgMHgyMiwgMHg4ZiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg2OSwgMHg4LCAweDg1LCAweDgyLCAweDc3LCAweDg1LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDgxLCAweDgzLCAweDhmLCAweDk0LCAweDkxLCAweDk0LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDk2LCAweDFmLCAweDkxLCAweDkzLCAweDkwLCAweDk1LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDljLCAweDdlLCAweGFjLCAweDY0LCAweDVjLCAweDgwLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDQ4LCAweGMwLCAweDcyLCAweGMzLCAweGY3LCAweDcsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjcsIDB4YzgsIDB4YzEsIDB4MWUsIDB4YTYsIDB4ZjcsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHg4LCAweDYsIDB4OTQsIDB4YjcsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDYsIDB4ZjcsIDB4MWYsIDB4YTIsIDB4OWIsIDB4ZWQsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4OTcsIDB4OTcsIDB4ODYsIDB4ODEsIDB4ODYsIDB4ODYsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODYsIDB4MWYsIDB4ODMsIDB4ODMsIDB4ODEsIDB4ODEsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4MTMsIDB4ZTgsIDB4NjYsIDB4YWEsIDB4N2UsIDB4OWQsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4YzAsIDB4OTUsIDB4YmEsIDB4NWMsIDB4YjEsIDB4NGYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4NjQsIDB4ZmIsIDB4NTQsIDB4NDAsIDB4NzIsIDB4MWUsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweDdmLCAweDFkLCAweGY3LCAweDQyLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ZjgsIDB4OTgsIDB4NWIsIDB4YSwgMHhlNiwgMHhlMywgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHgxZCwgMHg3ZiwgMHgxZCwgMHhmNywgMHg0MiwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNiLCAweGY4LCAweDk4LCAweDYwLCAweDFkLCAweGZiLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDk4LCAweGQzLCAweDQzLCAweGY3LCAweDM2LCAweDEsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4M2EsIDB4MTUsIDB4YjYsIDB4NiwgMHg1NywgMHg5MCwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhkMywgMHgxYiwgMHhlNSwgMHg5ZSwgMHhjMywgMHhhZCwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhiMiwgMHg2LCAweDg1LCAweDgwLCAweGZiLCAweDMwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGZiLCAweDFmLCAweDg5LCAweGY3LCAweGEsIDB4YjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHhkZCwgMHhmOCwgMHhhMSwgMHhmNywgMHgxNiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU3LCAweGY3LCAweDE2LCAweDMsIDB4ZjcsIDB4MzcsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4MTUsIDB4NGIsIDB4YSwgMHhlLCAweGZiLCAweGRkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGJjLCAweGY3LCAweGIsIDB4YmIsIDB4MSwgMHhmNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGY3LCAweDE1LCAweGJjLCAweDMsIDB4ZjcsIDB4MTMsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHgxNSwgMHg0ZiwgMHhiYiwgMHg1YywgMHhjNiwgMHhjNSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhjNiwgMHhjNSwgMHg1YiwgMHhiYiwgMHg1MSwgMHg1MCwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg1ZSwgMHhhLCAweGUsIDB4ZmIsIDB4ZGQsIDB4ZmIsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4ZjcsIDB4MjgsIDB4NzcsIDB4MSwgMHg2MywgMHhkZiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGI3LCAweDE1LCAweDYzLCAweDVmLCAweDZmLCAweDVlLCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDQ2LCAweGQyLCAweDdkLCAweGIzLCAweGFkLCAweGM5LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGExLCAweDFlLCAweDcxLCAweDk5LCAweDUsIDB4ODEsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ODEsIDB4NzQsIDB4MWIsIDB4NjMsIDB4NzIsIDB4OWQsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OTgsIDB4YjIsIDB4OGYsIDB4OWUsIDB4MWYsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHhmOCwgMHhiMiwgMHhmNiwgMHgzMCwgMHg3NiwgMHhhNiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhkNiwgMHg0MSwgMHhjZiwgMHgxMiwgMHgxMywgMHgzMCwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhiMywgMHgxNSwgMHhhZiwgMHg2LCAweDEzLCAweDQ4LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDkzLCAweGEwLCAweGE5LCAweDFiLCAweGE1LCAweGExLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDlmLCAweDFmLCAweDEzLCAweDgwLCAweDgxLCAweGEwLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweGE1LCAweDFiLCAweGQ5LCAweDlmLCAweGQ2LCAweGFiLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDY2LCAweDYsIDB4N2EsIDB4ODMsIDB4ODIsIDB4NzYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4N2UsIDB4NzQsIDB4OTUsIDB4OTUsIDB4NzIsIDB4MWYsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NzIsIDB4OTQsIDB4NzMsIDB4MWIsIDB4MTMsIDB4MzAsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4MjMsIDB4ODksIDB4MWYsIDB4ZSwgMHhmYiwgMHhkZCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhmNywgMHg0OSwgMHgxLCAweGQwLCAweGY4LCAweDk4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDYsIDB4ZjcsIDB4MmQsIDB4MjEsIDB4MWQsIDB4ZDAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4MTUsIDB4YmEsIDB4NWEsIDB4YSwgMHhmNywgMHg0NiwgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHhlNiwgMHgxLCAweDgwLCAweGY3LCAweDQ2LCAweDE1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweGM3LCAweGZjLCAweDU1LCAweDYsIDB4ZSwgMHhmNywgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NiwgMHhjOCwgMHg0ZSwgMHhlNiwgMHgxLCAweGY3LCAweDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZmEsIDB4NTMsIDB4YzgsIDB4ZmUsIDB4NTMsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGRkLCAweDY5LCAweDFkLCAweGY3LCAweDE0LCAweGUxLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMwLCAweDEzLCAweGUwLCAweGY3LCAweGUwLCAweGY5LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDVjLCAweGEsIDB4YzYsIDB4N2IsIDB4YTYsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4YjQsIDB4YTgsIDB4YWIsIDB4YjUsIDB4YTksIDB4N2MsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4OTcsIDB4MWYsIDB4MTMsIDB4ZTAsIDB4NzksIDB4OTgsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4YTEsIDB4N2EsIDB4MWQsIDB4ZSwgMHhmYiwgMHhkZCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhmNywgMHgyNiwgMHg2ZCwgMHgxZCwgMHgxMywgMHhkMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY4LCAweDUsIDB4MTUsIDB4NDksIDB4YSwgMHgxMywgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg2ZSwgMHg2YiwgMHg2MSwgMHg2YiwgMHg5YywgMHg3ZCwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxZiwgMHgxMywgMHhkMCwgMHg5ZCwgMHg3ZiwgMHg5ZCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhhLCAweGUsIDB4ZmIsIDB4ZGQsIDB4ZmIsIDB4MzUsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiNiwgMHg2ZCwgMHgxZCwgMHgxMywgMHhkMCwgMHg4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHgxNSwgMHg5OCwgMHg3MywgMHg1LCAweDQ5LCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4NjIsIDB4NmUsIDB4NmIsIDB4NjEsIDB4NmYsIDB4OTgsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4ODAsIDB4MWYsIDB4MTMsIDB4ZDAsIDB4OWUsIDB4N2MsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NzMsIDB4NTQsIDB4YSwgMHhlLCAweDY5LCAweDFkLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDM1LCAweGY3LCAweDMwLCAweGVmLCAweGUxLCAweDM1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDEzLCAweGQ4LCAweGY3LCAweDk1LCAweGY5LCAweDI5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweGEsIDB4YWIsIDB4NzksIDB4OWEsIDB4N2EsIDB4OTcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZTQsIDB4NzksIDB4OTcsIDB4N2EsIDB4OTQsIDB4YTAsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZjcsIDB4OTQsIDB4MTYsIDB4NjMsIDB4YSwgMHhhOCwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg3YiwgMHg5NywgMHgxZSwgMHgxMywgMHhlOCwgMHg3OCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg5MywgMHhhMiwgMHg3YSwgMHgxZCwgMHhlLCAweDY5LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweDZkLCAweDFkLCAweGVmLCAweDZkLCAweDFkLCAweDEzLCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQ2LCAweGY4LCAweDUsIDB4MTUsIDB4NDAsIDB4YSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YywgMHg5YywgMHg3YiwgMHg5YywgMHg3ZiwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg5ZCwgMHg3ZSwgMHg5ZCwgMHg4MSwgMHg4OSwgMHhhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDczLCAweDE1LCAweDQwLCAweGEsIDB4NmQsIDB4NjEsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4N2MsIDB4OWIsIDB4N2YsIDB4MWYsIDB4MTMsIDB4ZDgsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4OWYsIDB4ODEsIDB4NzUsIDB4NTQsIDB4YSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDYyLCAweGEsIDB4ODIsIDB4NmQsIDB4MWQsIDB4ZWYsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MTMsIDB4ZTQsIDB4ZjcsIDB4NWIsIDB4ZmIsIDB4MzIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NzMsIDB4NSwgMHg0MCwgMHhhLCAweDZjLCAweDYxLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDdjLCAweDlkLCAweDdmLCAweDFmLCAweDEzLCAweGQ0LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDljLCAweDgyLCAweDg5LCAweGEsIDB4ZmIsIDB4OTQsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NzMsIDB4NSwgMHg0MCwgMHhhLCAweDZjLCAweDYxLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDdjLCAweDljLCAweDdmLCAweDFmLCAweDEzLCAweGQ4LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDllLCAweDgyLCAweDc1LCAweDU0LCAweGEsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHg3NiwgMHhmOCwgMHhiNywgMHhmMywgMHg0YywgMHhhMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg3NywgMHgxMiwgMHgxMywgMHhiMCwgMHhmNywgMHgzMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHgxNSwgMHhhMiwgMHg2LCAweGIxLCAweGY3LCAweDFlLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRkLCAweGQwLCAweGU2LCAweDgsIDB4ODEsIDB4OTksIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4YmUsIDB4MWEsIDB4OWIsIDB4OGQsIDB4OWEsIDB4OGYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YTksIDB4OGQsIDB4YTEsIDB4ODQsIDB4OWQsIDB4ODIsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkMCwgMHg3ZiwgMHhhMiwgMHg5ZCwgMHg3YywgMHhhMiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhiYSwgMHg5MCwgMHhiYSwgMHg5MCwgMHg4YiwgMHhiYSwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3YSwgMHg3ZSwgMHg4MCwgMHg3MywgMHgxZiwgMHgxMywgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg3YSwgMHg3NywgMHg4NCwgMHg2ZSwgMHgxYiwgMHg4ZiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHhhYywgMHg5ZSwgMHhhMiwgMHg4LCAweGE2LCAweGFkLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGE5LCAweDFhLCAweDlkLCAweDgwLCAweGFmLCAweDVkLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDczLCAweDY4LCAweDZjLCAweDk2LCAweDZmLCAweDkxLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDkwLCAweDcyLCAweDhhLCAweDczLCAweDgwLCAweDcyLCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDc1LCAweDk0LCAweDc4LCAweDk0LCAweDgsIDB4MTMsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NzYsIDB4NzksIDB4OTYsIDB4NzAsIDB4MWIsIDB4ODEsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4NTcsIDB4NzIsIDB4OWUsIDB4NzQsIDB4YWEsIDB4YWIsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OTYsIDB4OWYsIDB4MWYsIDB4MTMsIDB4YjAsIDB4OWMsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4OTMsIDB4YWEsIDB4OGEsIDB4ODgsIDB4NjcsIDB4NmMsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4NWYsIDB4OTUsIDB4ZmIsIDB4YSwgMHgxOCwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDc2LCAweGY3LCAweDU3LCAweGY0LCAweGY3LCAweGI5LCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU3LCAweDc3LCAweDEsIDB4ZDksIDB4ZjcsIDB4MTIsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4YWYsIDB4ZjcsIDB4MTIsIDB4MTQsIDB4ZSwgMHhmNywgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgxNSwgMHg3MywgMHg0MCwgMHgzYiwgMHg1OSwgMHg1MSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhhMSwgMHg3MywgMHhhYSwgMHhiOSwgMHhhNiwgMHhiOCwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhZCwgMHg4MCwgMHhhYywgMHhhZCwgMHgxYSwgMHg5YywgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg4ZSwgMHg5YiwgMHgxZSwgMHg4YSwgMHhjMSwgMHhiOCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHgxYiwgMHhhOSwgMHhhMSwgMHhhMiwgMHhhOCwgMHhhYSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg2ZSwgMHgxZiwgMHg4YywgMHg2YywgMHg1MCwgMHg1ZSwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg5YywgMHhiZSwgMHhhYiwgMHhhMywgMHhiYiwgMHhhMCwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDllLCAweDc5LCAweGExLCAweGFlLCAweDFhLCAweGMyLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGI2LCAweDllLCAweDFlLCAweDc0LCAweGEwLCAweDdiLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDFhLCAweDk3LCAweDhkLCAweDk2LCAweDhlLCAweDk3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGNkLCAweDU4LCAweDkyLCAweGFkLCAweDFmLCAweGFjLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGFkLCAweGFjLCAweDcwLCAweDllLCAweDZiLCAweDVkLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDhjLCAweDVhLCAweDFmLCAweGEzLCAweGQ2LCAweGRiLCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDFhLCAweGFhLCAweDc1LCAweGEzLCAweDZjLCAweDVkLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDYxLCAweDFlLCAweDY5LCAweDk2LCAweDZhLCAweDY5LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDg3LCAweDdhLCAweDg4LCAweDdiLCAweDFlLCAweDhjLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGI1LCAweDU2LCAweDFiLCAweDZkLCAweDc1LCAweDc0LCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGE1LCAweDc1LCAweGE4LCAweDFmLCAweDhhLCAweGFhLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweGJlLCAweDFiLCAweDdhLCAweDU4LCAweDZiLCAweDczLCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDgsIDB4YTYsIDB4NzgsIDB4OWQsIDB4NzUsIDB4NjgsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NWYsIDB4NmYsIDB4NjAsIDB4NzgsIDB4MWUsIDB4YTIsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4N2EsIDB4NjksIDB4MWEsIDB4N2YsIDB4ODksIDB4ODAsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4MWUsIDB4NjIsIDB4NDksIDB4YmUsIDB4ODQsIDB4NjksIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4NzYsIDB4NzgsIDB4NjksIDB4NmEsIDB4YTYsIDB4NzgsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4YWYsIDB4YjcsIDB4OGEsIDB4YmMsIDB4MWYsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhmNywgMHg1OCwgMHg3NiwgMHhmNywgMHhjNCwgMHg3NywgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGFjLCAweGY3LCAweGU2LCAweDE1LCAweDNjLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweGQ5LCAweGQ5LCAweGNhLCAweGM5LCAweGQ5LCAweGQ5LCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDNkLCAweDNjLCAweDRlLCAweDRjLCAweDNkLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTYsIDB4N2UsIDB4ZjcsIDB4MjgsIDB4MSwgMHhiMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhmNywgMHg0OSwgMHhmNywgMHgyYSwgMHhmNywgMHg0OSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHgxNCwgMHg3MCwgMHhiMywgMHhjOCwgMHgxNSwgMHg2MiwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHgxZCwgMHg2YSwgMHg2OSwgMHg2MywgMHgxZSwgMHhmNywgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHg2MiwgMHhhYiwgMHg3ZCwgMHgxZCwgMHg2YSwgMHg2OSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmNywgMHhkZiwgMHgxNiwgMHg2MiwgMHhhOSwgMHg2YSwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhhZSwgMHhhYiwgMHhiNSwgMHhiNCwgMHg2OCwgMHg1MywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGU2LCAweDdkLCAweGE1LCAweDg1LCAweDc2LCAweGY3LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGY3LCAweGM2LCAweGE1LCAweDhjLCAweDc3LCAweDEyLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGY3LCAweGU2LCAweGY3LCAweDgsIDB4MmIsIDB4MWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MzMsIDB4MmIsIDB4MWQsIDB4ZmQsIDB4NjksIDB4ZjcsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4MWQsIDB4MTMsIDB4NjgsIDB4ZmIsIDB4MzAsIDB4ZmMsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YzcsIDB4NiwgMHhmOCwgMHhlOSwgMHhmOSwgMHg0OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDYsIDB4ZSwgMHhmYiwgMHhkZCwgMHg3MiwgMHgxZCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2ZCwgMHg3MSwgMHgxZCwgMHg4MCwgMHg5NSwgMHg5NiwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHg0MiwgMHg4ZCwgMHhhLCAweGUyLCAweDVmLCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkZCwgMHg3MiwgMHgxZCwgMHhmNywgMHgzMCwgMHg0OSwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg4MiwgMHg3ZiwgMHg5MywgMHg4MywgMHgxYiwgMHg4NiwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg3ZiwgMHgxZiwgMHhlLCAweGZjLCAweDgzLCAweDkyLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDRkLCAweDc3LCAweDEsIDB4ZmIsIDB4MSwgMHg3ZCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0NSwgMHhmOSwgMHg0YiwgMHg1LCAweDhkLCAweDRmLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NDUsIDB4ZmQsIDB4NGQsIDB4NSwgMHhlLCAweDkwLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGY3LCAweDYwLCAweGI0LCAweGVmLCAweGI0LCAweGY3LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDEsIDB4ZjcsIDB4NCwgMHhmNywgMHgyNiwgMHhmNywgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHgzLCAweGIzLCAweGY3LCAweDhmLCAweDE1LCAweGZiLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFhLCAweDNkLCAweGY3LCAweDQsIDB4ZjcsIDB4YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhiYiwgMHhkZSwgMHhjNSwgMHgxZSwgMHg2ZCwgMHhhMSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDYzLCAweGZiLCAweDIsIDB4NTksIDB4NTcsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1NSwgMHhjMywgMHhmNywgMHgyOCwgMHg4YywgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHg2LCAweDk3LCAweGI0LCAweDUsIDB4ZmIsIDB4YzUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg5NiwgMHhiOSwgMHg5NCwgMHhhNywgMHgxZSwgMHhmNywgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDk5LCAweGI0LCAweDUsIDB4ZmIsIDB4YzIsIDB4NiwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhlMywgMHhmNywgMHgxZiwgMHhmMSwgMHgxYiwgMHhmNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDUxLCAweDJlLCAweDFmLCAweGFlLCAweGY3LCAweDIyLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4NjMsIDB4NzksIDB4YTYsIDB4MmMsIDB4MWIsIDB4NTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NTUsIDB4ZmIsIDB4NTgsIDB4NDksIDB4MWYsIDB4ZmIsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3ZSwgMHg2MiwgMHg1LCAweGY3LCAweDE0LCAweDYsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4ODMsIDB4NjEsIDB4ODksIDB4NmUsIDB4OCwgMHgyYSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDYyLCAweDUsIDB4ZSwgMHhmNywgMHhlNiwgMHhmNywgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg4OSwgMHg3NiwgMHhmOCwgMHgxNCwgMHhhMSwgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhkOSwgMHhmNywgMHg4ZCwgMHhhNiwgMHhmNywgMHhjYywgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiYywgMHhmNywgMHhhLCAweGY3LCAweDlkLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGEwLCAweDYsIDB4NTgsIDB4OTAsIDB4OGMsIDB4OGMsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4YzksIDB4YmMsIDB4NywgMHhiMywgMHg5ZCwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg5MywgMHgxZiwgMHhhMCwgMHhlMywgMHhmYiwgMHhmMiwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg2LCAweGFmLCAweDkzLCAweDlkLCAweGE5LCAweGIzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGZiLCAweGM5LCAweDYsIDB4NWQsIDB4OGMsIDB4OGEsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4MWUsIDB4ZjcsIDB4ZDksIDB4NzYsIDB4MTUsIDB4ZjcsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NiwgMHg1ZSwgMHg4ZiwgMHg4NCwgMHg4YywgMHhiYSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3NywgMHg4ZCwgMHg3LCAweDEzLCAweDdjLCAweGY3LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGMyLCAweDUsIDB4OTYsIDB4NiwgMHhmNywgMHgyYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHg1LCAweDhkLCAweGZiLCAweDc5LCAweDYsIDB4MTMsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4OGQsIDB4OGEsIDB4NTcsIDB4ODYsIDB4MWUsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4YTAsIDB4NywgMHg1OCwgMHg5MCwgMHg4YywgMHg4YywgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmNywgMHg5NSwgMHg3LCAweGFkLCAweDk2LCAweDlmLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDlmLCAweGZiLCAweDEsIDB4NywgMHhmYiwgMHgzMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmYiwgMHgyYSwgMHhmNywgMHhjMiwgMHg1LCAweGZiLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDYsIDB4YTgsIDB4YTcsIDB4NzYsIDB4NmMsIDB4OTgsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OTcsIDB4NywgMHg1YywgMHg4NCwgMHg4YSwgMHg1ZSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDUzLCAweGY3LCAweDY1LCAweGM5LCAweDRkLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YmUsIDB4ZjcsIDB4NjUsIDB4MTUsIDB4ZjgsIDB4OGMsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4OGMsIDB4NiwgMHhlLCAweDIxLCAweGZiLCAweDYxLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRiLCAweDc2LCAweGY4LCAweDM0LCAweGI1LCAweGYxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDZkLCAweGE5LCAweDEyLCAweDEzLCAweGU4LCAweDljLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDE1LCAweGQ2LCAweDYsIDB4MmYsIDB4ZmMsIDB4MmYsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOSwgMHg2ZCwgMHg3ZSwgMHg2OSwgMHg1ZCwgMHgxYiwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg5MSwgMHg4ZSwgMHg5MywgMHg5MiwgMHg4ZSwgMHg5MCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4ZiwgMHg5MCwgMHg4ZSwgMHg5MSwgMHg5NiwgMHgxYSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg5ZSwgMHg2ZSwgMHg4MCwgMHg2NywgMHg4NCwgMHg1OSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHg2YiwgMHhjMiwgMHhlZCwgMHhkZiwgMHhmNywgMHgxMywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHgxZSwgMHhmMSwgMHhmOCwgMHgyZiwgMHg1LCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NDYsIDB4ZmIsIDB4YTEsIDB4NSwgMHg4NSwgMHg3NCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg3MSwgMHgxYSwgMHg2NSwgMHg5YiwgMHg2YiwgMHhiYywgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHhiMywgMHhlYiwgMHhjOCwgMHgxZSwgMHg3NSwgMHg5OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDgzLCAweDVmLCAweDQ4LCAweDc0LCAweDFiLCAweDgwLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDk5LCAweGE4LCAweDliLCAweGJjLCAweDhlLCAweDk5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGY3LCAweGFmLCAweDUsIDB4OGEsIDB4NzYsIDB4ZmIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg3MiwgMHgxYiwgMHhmYiwgMHhhLCAweDYsIDB4ZjcsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4YWEsIDB4ZGMsIDB4ZWUsIDB4MWIsIDB4YTQsIDB4OGIsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4ODQsIDB4ODIsIDB4ODUsIDB4ODUsIDB4ODAsIDB4MWYsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4ODgsIDB4ODMsIDB4N2YsIDB4MWEsIDB4MTMsIDB4ZjAsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NmYsIDB4YjAsIDB4YTgsIDB4YTcsIDB4OWYsIDB4YjAsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4YWQsIDB4NDcsIDB4ZmIsIDB4NGEsIDB4NWMsIDB4ZmIsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OSwgMHg2MywgMHgxZSwgMHgzZiwgMHg2LCAweGUsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjEsIDB4YWUsIDB4ZjcsIDB4NGEsIDB4NzYsIDB4ZjgsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4ZjcsIDB4NzYsIDB4YTgsIDB4MSwgMHg5ZiwgMHhmOCwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhkNSwgMHg2LCAweDJmLCAweGZjLCAweDI2LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg3MiwgMHg3YywgMHg0YiwgMHg2MSwgMHgxYiwgMHg3YSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg5MSwgMHg5MSwgMHg5MCwgMHg5MCwgMHg4ZiwgMHg5MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5MSwgMHg4ZSwgMHg5MSwgMHg5NiwgMHgxYSwgMHhhNSwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg2ZiwgMHg4NSwgMHg1YywgMHg4YiwgMHg1NywgMHg0MSwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg5ZCwgMHhmMywgMHhkMSwgMHhiYSwgMHhmNywgMHgzNywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlZSwgMHhmOCwgMHgyNiwgMHg1LCAweGY3LCAweDI3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZmIsIDB4ZDUsIDB4NSwgMHg4OSwgMHg4MSwgMHg4OSwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxYSwgMHg2OCwgMHg5YywgMHg2ZSwgMHhjMSwgMHhkNywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhkMSwgMHhiOCwgMHgxZSwgMHg3NywgMHg5NiwgMHg1LCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDY0LCAweDUxLCAweDcyLCAweDFiLCAweDdkLCAweDg3LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDkxLCAweDhkLCAweDkyLCAweDhkLCAweDkxLCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweGY4LCAweGVlLCAweDI4LCAweDdmLCAweDUsIDB4ODcsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4NmMsIDB4MWIsIDB4ZmIsIDB4NDUsIDB4NjEsIDB4ZmIsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YSwgMHg2NiwgMHgxZiwgMHg0MSwgMHg2LCAweGY3LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGUzLCAweGEwLCAweGFiLCAweGY3LCAweDFlLCAweGU5LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDk2LCAweDdlLCAweDg1LCAweDg3LCAweDg0LCAweDg0LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDFmLCAweDg3LCAweDg0LCAweDg3LCAweDgyLCAweDgxLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDk4LCAweDgwLCAweDkzLCAweDg1LCAweDFlLCAweDZkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NSwgMHhlLCAweDc5LCAweDlkLCAweGY4LCAweDU0LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYzLCAweDliLCAweDk4LCAweDkxLCAweDYsIDB4ZmIsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4ZjcsIDB4NjAsIDB4OGIsIDB4ZjcsIDB4OWMsIDB4OTQsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhMCwgMHgzOSwgMHg2MywgMHhmZiwgMHhjLCAweDksIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHhjLCAweGIsIDB4OGMsIDB4YywgMHhlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDE0LCAweGY5LCAweDJhLCAweDE1LCAweGI3LCAweDEzLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4MiwgMHgwLCAweDEsIDB4MCwgMHgyOSwgMHgwLCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4M2IsIDB4MCwgMHg1OCwgMHgwLCAweDYxLCAweDAsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg5ZSwgMHgwLCAweGFiLCAweDAsIDB4YjYsIDB4MCwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGQ2LCAweDAsIDB4ZGEsIDB4MCwgMHhlYSwgMHgwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4ZmYsIDB4MSwgMHg2LCAweDEsIDB4MTAsIDB4MSwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDJlLCAweDEsIDB4NTgsIDB4MSwgMHg2MiwgMHgxLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ODksIDB4MSwgMHg5NiwgMHgxLCAweGE4LCAweDEsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhiOSwgMHgxLCAweGYzLCAweDEsIDB4ZmQsIDB4MiwgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4NDEsIDB4MiwgMHg0YSwgMHgyLCAweDUxLCAweDIsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg2NSwgMHgyLCAweDczLCAweDIsIDB4N2QsIDB4MiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDkyLCAweDIsIDB4OWUsIDB4MiwgMHhjNCwgMHgyLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4ZTAsIDB4MiwgMHhmMiwgMHgyLCAweGZiLCAweDMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDksIDB4MywgMHgyOCwgMHgzLCAweDMyLCAweDMsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg1OCwgMHgzLCAweDYwLCAweDMsIDB4NjgsIDB4MywgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDc0LCAweDMsIDB4N2IsIDB4MywgMHg4MSwgMHgzLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4OWQsIDB4MywgMHhhMywgMHgzLCAweGIwLCAweDMsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhkYywgMHgzLCAweGVhLCAweDMsIDB4ZWUsIDB4MywgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGZhLCAweDQsIDB4NCwgMHg0LCAweGIsIDB4NCwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDI0LCAweDQsIDB4MzIsIDB4NCwgMHgzNywgMHg0LCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4NTMsIDB4NCwgMHg2MiwgMHg0LCAweDZjLCAweDQsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg3NiwgMHg0LCAweDdhLCAweDQsIDB4ODMsIDB4NCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDkyLCAweDQsIDB4OTcsIDB4NCwgMHg5YywgMHg0LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4YWYsIDB4NCwgMHhiZCwgMHg0LCAweGM4LCAweDQsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhkZCwgMHg0LCAweGUxLCAweDQsIDB4ZWQsIDB4NCwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGZmLCAweDUsIDB4OSwgMHg1LCAweDE0LCAweDUsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyNCwgMHg1LCAweDI5LCAweDUsIDB4MzMsIDB4NSwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDQ3LCAweDUsIDB4NTEsIDB4NSwgMHg1YSwgMHg1LCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NjcsIDB4NSwgMHg2ZCwgMHg1LCAweDczLCAweDUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg3ZiwgMHg1LCAweDgzLCAweDUsIDB4ODcsIDB4NTAsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4YzIsIDB4MWEsIDB4ZDMsIDB4NDcsIDB4OWQsIDB4NjgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4ZmIsIDB4MTMsIDB4ZmIsIDB4NGIsIDB4ZmIsIDB4MWMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhkZiwgMHg1ZiwgMHgzNSwgMHhhLCAweDk4LCAweGRhLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDhkLCAweDNkLCAweGEsIDB4NzIsIDB4ODIsIDB4NTcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4ZmIsIDB4MTcsIDB4NjgsIDB4MWYsIDB4YiwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDIxLCAweDFkLCAweGIsIDB4NzcsIDB4MSwgMHg5MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHgzZiwgMHhlNywgMHgzLCAweDIwLCAweGEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4LCAweGUzLCAweDkwLCAweGEsIDB4ZjcsIDB4YWIsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4N2IsIDB4NTksIDB4NDAsIDB4NTEsIDB4ZmIsIDB4YTYsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgzYywgMHhmNywgMHgyOSwgMHhmNywgMHgxYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGExLCAweDRiLCAweDFkLCAweGIsIDB4MzIsIDB4MWQsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4OGEsIDB4NmIsIDB4MzQsIDB4MWQsIDB4YiwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweGEsIDB4MywgMHhmNywgMHgzZiwgMHhmNywgMHgyYywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNywgMHhlMiwgMHhmOCwgMHgyOSwgMHhmNywgMHg0YywgMHhmMywgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHg3NiwgMHhmYiwgMHg4LCAweDJkLCAweGZjLCAweDFhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDUwLCAweDVlLCAweGFmLCAweDU1LCAweDFkLCAweGQyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweDNiLCAweGY3LCAweDhkLCAweGY3LCAweDQ1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGY3LCAweDU2LCAweGY3LCAweDQyLCAweGZiLCAweDE5LCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDFkLCAweGZiLCAweDc5LCAweGZiLCAweDg5LCAweDFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4MWQsIDB4ZSwgMHhhNCwgMHg4NywgMHg4MCwgMHhiNiwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHhlLCAweGZiLCAweDI5LCAweDJmLCAweDFkLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGMsIDB4ZjcsIDB4NiwgMHgxNSwgMHg4ZCwgMHg4YywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDFkLCAweGIsIDB4MmMsIDB4MWQsIDB4NTQsIDB4NGQsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg5MSwgMHg5OCwgMHgzMSwgMHhhLCAweDc5LCAweDg2LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4YSwgMHg2MCwgMHgzYSwgMHg3YywgMHg3MSwgMHhmYiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHgxOSwgMHg2NSwgMHhhLCAweDkzLCAweDczLCAweDFkLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDFkLCAweGIsIDB4MTYsIDB4MjAsIDB4MWQsIDB4YiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDRlLCAweDkwLCAweDdjLCAweDhmLCAweDM5LCAweDFkLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDdiLCAweDk3LCAweDZlLCAweDgyLCAweDE5LCAweGIsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4MWYsIDB4NDQsIDB4MWQsIDB4ODksIDB4YTEsIDB4OGEsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4NDAsIDB4ZmIsIDB4NGEsIDB4NDYsIDB4NDcsIDB4YSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDIwLCAweDFkLCAweGIsIDB4NjgsIDB4MWQsIDB4ZjcsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIDB4YSwgMHhiLCAweGNjLCAweGRiLCAweGY3LCAweDg0LCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGE3LCAweDM5LCAweGEsIDB4YiwgMHhhYiwgMHhkZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg5ZiwgMHhkMSwgMHgxZiwgMHhmYiwgMHhhLCAweDYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4NzQsIDB4M2MsIDB4NWUsIDB4M2EsIDB4OCwgMHg3MywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHgyYywgMHg2MywgMHgxYiwgMHhiLCAweDg3LCAweDhmLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGEsIDB4YiwgMHgxNSwgMHhmNywgMHg1OCwgMHhhZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDc1LCAweDk4LCAweGExLCAweDkyLCAweDhjLCAweDkzLCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDQ4LCAweDFkLCAweDlhLCAweDIwLCAweDhiLCAweDk1LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDVhLCAweDY5LCAweDg0LCAweDVlLCAweDU3LCAweGEsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4N2QsIDB4OGUsIDB4MzksIDB4MWQsIDB4NjcsIDB4NTAsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4NmYsIDB4ODQsIDB4NmIsIDB4MWQsIDB4NzcsIDB4NzQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg2YywgMHgyOCwgMHhhLCAweDEzLCAweDljLCAweGIsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MCwgMHhiZiwgMHhlMiwgMHhiZSwgMHhhYSwgMHgxZSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg1LCAweDY2LCAweDcyLCAweDY3LCAweDU1LCAweDU1LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDVjLCAweGIsIDB4MmIsIDB4NTcsIDB4OGIsIDB4YmYsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4YiwgMHhiZCwgMHgxNSwgMHgyYiwgMHhkOSwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHhmNywgMHgzNCwgMHhmNywgMHgxMCwgMHhiLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4ZjcsIDB4YiwgMHhmNywgMHg2MiwgMHhmNywgMHhiLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4YSwgMHhiLCAweDM1LCAweDFhLCAweGZiLCAweGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg1NywgMHhmNiwgMHhmNywgMHg2NSwgMHhiNCwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZiwgMHhiMywgMHgxZSwgMHhiLCAweDg0LCAweDYxLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGZiLCAweDgzLCAweDM0LCAweDdkLCAweDZkLCAweDk2LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGIsIDB4ZjcsIDB4NjQsIDB4MmQsIDB4MWQsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkNywgMHhmNywgMHgxMiwgMHhmNiwgMHhkMSwgMHg1ZiwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhmYiwgMHg4LCAweDQwLCAweGZiLCAweGMsIDB4MjAsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4NTEsIDB4ZDgsIDB4MWYsIDB4OGUsIDB4YTUsIDB4MTUsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4OWMsIDB4YTEsIDB4YWIsIDB4YTUsIDB4ZTQsIDB4OTUsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4YWQsIDB4OTUsIDB4OWIsIDB4ZDYsIDB4YjgsIDB4MWIsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4N2IsIDB4NzYsIDB4NjUsIDB4NzAsIDB4MzYsIDB4N2YsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NjgsIDB4ODEsIDB4N2YsIDB4NDYsIDB4NWQsIDB4MWIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg2MiwgMHhhOSwgMHg3ZCwgMHgxZCwgMHg2YywgMHg2OSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDhmLCAweDlkLCAweDFmLCAweDkyLCAweGFiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDliLCAweGJlLCAweGY3LCAweDIyLCAweGM5LCAweDFiLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGIsIDB4MSwgMHg4MCwgMHgxNiwgMHhmOCwgMHg4ZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGY3LCAweDU2LCAweDcwLCAweDkwLCAweDUsIDB4ZmIsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4ZmIsIDB4MWMsIDB4NmIsIDB4MjQsIDB4MWIsIDB4NDUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0NiwgMHhmOCwgMHhlNywgMHg1LCAweGIyLCAweGZjLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4NTIsIDB4ZmIsIDB4NDYsIDB4YTcsIDB4ODcsIDB4NSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhjOCwgMHhkYywgMHhmNywgMHgyNCwgMHgxYiwgMHhkOSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDQ2LCAweGZjLCAweGU3LCAweDUsIDB4YiwgMHg0OCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHgyMSwgMHg4YSwgMHg5NCwgMHg3NywgMHgxYSwgMHhiLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4ZTgsIDB4NjIsIDB4NmUsIDB4YiwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhmOCwgMHg1YiwgMHg5YywgMHhjYSwgMHhhNiwgMHg4ZiwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHhiLCAweDViLCAweGEsIDB4ZTgsIDB4ZTMsIDB4MmUsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4YiwgMHg2YiwgMHgxYSwgMHhmYiwgMHgxOSwgMHhmYywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg0ZCwgMHg3NCwgMHg4OCwgMHg2MywgMHg4NCwgMHgxOSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDlmLCAweGNjLCAweDk5LCAweGJhLCAweDFmLCAweGQyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGIsIDB4MzUsIDB4MWQsIDB4NTMsIDB4NGIsIDB4NGMsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4N2QsIDB4YiwgMHg0MSwgMHhhLCAweGM3LCAweDlhLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDdmLCAweDg2LCAweDdkLCAweDQ3LCAweDFkLCAweGUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4OGIsIDB4NTQsIDB4ZDgsIDB4ZDcsIDB4YjUsIDB4YzUsIDB4ZjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4MWUsIDB4YiwgMHhhNywgMHhlMywgMHg1LCAweGI3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YzgsIDB4NSwgMHg1ZSwgMHg2LCAweGQ5LCAweGY3LCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NWQsIDB4NiwgMHhmYiwgMHhhYSwgMHhmYiwgMHg5MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDg1LCAweDE1LCAweGY3LCAweDQ4LCAweGY3LCAweDNhLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDUsIDB4OGMsIDB4NiwgMHg1OCwgMHhmYiwgMHgzOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NzUsIDB4YSwgMHhkZSwgMHg2MiwgMHgxZCwgMHg5YiwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiLCAweGEwLCAweDFlLCAweGJkLCAweGFmLCAweGRjLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGFmLCAweDgsIDB4OTQsIDB4NywgMHg1NSwgMHhjMiwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHg1YSwgMHhjMCwgMHg4LCAweGIsIDB4NjcsIDB4YTgsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4YWYsIDB4YTgsIDB4YTgsIDB4YWYsIDB4YWYsIDB4NmUsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NjcsIDB4NmUsIDB4NmUsIDB4NjcsIDB4MWUsIDB4YiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg4NiwgMHhkNSwgMHhmNywgMHhhNSwgMHg2ZiwgMHg4ZiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGY3LCAweDI0LCAweGY4LCAweGMsIDB4ZjcsIDB4MjQsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MiwgMHg1LCAweDNhLCAweDYsIDB4YiwgMHgxYSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg4ZCwgMHg3MywgMHgzNCwgMHg1NSwgMHgzOCwgMHgyMSwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4OCwgMHg4ZCwgMHhjNywgMHhmNywgMHg0ZSwgMHg1LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweDI4LCAweDgyLCAweDc1LCAweDFiLCAweDcwLCAweDcsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4OGIsIDB4NzEsIDB4MWYsIDB4YiwgMHgxNSwgMHhiMywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDkzLCAweDk0LCAweGEzLCAweGFjLCAweDFiLCAweGIsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4YWIsIDB4ZjcsIDB4YzYsIDB4YWIsIDB4ZjcsIDB4OWYsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhjNCwgMHgxYSwgMHhiYSwgMHg2NSwgMHhjMCwgMHg0NywgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg0ZCwgMHg2NywgMHg3OSwgMHgxZSwgMHg5ZCwgMHg4MCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDk0LCAweGE1LCAweGIyLCAweGJhLCAweDFiLCAweGM2LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDdmLCAweDY3LCAweDZhLCAweGIsIDB4YWMsIDB4NjIsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NjksIDB4NjMsIDB4MWUsIDB4ZSwgMHgxYSwgMHg1MywgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg3OCwgMHg4MSwgMHgxZSwgMHhiLCAweGJkLCAweDk2LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweGIsIDB4OTAsIDB4OGIsIDB4YWUsIDB4ZjcsIDB4NDEsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxZSwgMHg2OCwgMHhmNywgMHhjNCwgMHhhZSwgMHg3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4YWUsIDB4ZjgsIDB4ZWIsIDB4YWUsIDB4YiwgMHhmNywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhiOSwgMHg1LCAweGE3LCAweDYsIDB4ZjcsIDB4MjMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4YjIsIDB4ZjcsIDB4MWUsIDB4OTUsIDB4ODMsIDB4YzAsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4YWUsIDB4ZmIsIDB4NjUsIDB4NjgsIDB4NywgMHhiLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHgxNSwgMHhjNCwgMHg2LCAweGY3LCAweDE3LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4YTMsIDB4NSwgMHg3YywgMHg4NywgMHhmYiwgMHg0NCwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOSwgMHgxYSwgMHgzYiwgMHhiLCAweGY3LCAweDNiLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQ4LCAweGZiLCAweDYsIDB4ZWQsIDB4ZmIsIDB4NGYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjYsIDB4NjgsIDB4NiwgMHhjOSwgMHg4MiwgMHg5NiwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHgxYSwgMHhiLCAweDUwLCAweDFlLCAweGJiLCAweDE2LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGE1LCAweGFiLCAweGFiLCAweGE1LCAweDcxLCAweDZiLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDcxLCAweDZiLCAweDZiLCAweDcxLCAweGE1LCAweGFiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZGMsIDB4YWYsIDB4MWEsIDB4OTQsIDB4ODcsIDB4OGUsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NjEsIDB4NjEsIDB4N2MsIDB4NmMsIDB4YSwgMHhiLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFkLCAweDc4LCAweDFkLCAweGFlLCAweGZiLCAweGJlLCAweDY4LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3NiwgMHhmNywgMHhkMCwgMHg3NywgMHgxMiwgMHhiLCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YzMsIDB4N2IsIDB4YTYsIDB4YjQsIDB4YWIsIDB4YWIsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgyMSwgMHg4MiwgMHhkMywgMHhmOCwgMHgxNiwgMHg3NywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM4LCAweGY3LCAweDczLCAweDUsIDB4YTcsIDB4OTMsIDB4YiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg3NSwgMHhhNywgMHhhNywgMHhhMSwgMHhhMSwgMHhhNywgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHhhMSwgMHg2ZiwgMHg2ZiwgMHg3NSwgMHg3NSwgMHg2ZiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDY2LCAweGE4LCAweDZlLCAweGIwLCAweGIwLCAweGE5LCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDFkLCAweDZlLCAweDZkLCAweDY2LCAweDFlLCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4NTgsIDB4YSwgMHhiLCAweDllLCAweDljLCAweDllLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweDFiLCAweGIzLCAweDk4LCAweDZlLCAweDc0LCAweDRjLCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDZlLCAweDg2LCAweDFmLCAweGIsIDB4ZjcsIDB4NTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OTAsIDB4MWQsIDB4YjYsIDB4OTMsIDB4NTcsIDB4MWQsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg1OSwgMHhmYiwgMHgyYywgMHg2NywgMHhmYiwgMHg2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDdiLCAweDY4LCAweDhhLCAweDczLCAweDFiLCAweGUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NTksIDB4NjcsIDB4M2EsIDB4NGYsIDB4NTksIDB4NjcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDE5LCAweDcwLCAweDcsIDB4YiwgMHhhOCwgMHhmNywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHgxZCwgMHhiLCAweDUsIDB4ODksIDB4NiwgMHhiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDQ5LCAweDM0LCAweDNhLCAweDY3LCAweDFhLCAweDgyLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4ODAsIDB4NjAsIDB4NjIsIDB4NzcsIDB4ODgsIDB4MWQsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHg3OSwgMHhjMywgMHhmOCwgMHhlOCwgMHhhZSwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDc3LCAweDEsIDB4YiwgMHgxMiwgMHg3NiwgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4OWEsIDB4OGYsIDB4ZjcsIDB4NDQsIDB4YiwgMHgxYiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhjMywgMHhhYywgMHhiNCwgMHg2NywgMHg5OCwgMHg3OSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg3MCwgMHg3NCwgMHhiLCAweDkxLCAweGEwLCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGZiLCAweDEyLCAweDE1LCAweGY3LCAweGIyLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4YiwgMHg4NSwgMHg4MywgMHhhLCAweGY3LCAweGU4LCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweGJkLCAweGE0LCAweDFiLCAweGIsIDB4YTIsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2ZSwgMHg2LCAweDdhLCAweDgxLCAweDg4LCAweDg3LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGIsIDB4MWEsIDB4NjcsIDB4NjIsIDB4M2MsIDB4NWYsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YiwgMHgxNSwgMHhiOCwgMHg2LCAweGIsIDB4OGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4N2MsIDB4MWUsIDB4NzAsIDB4OGUsIDB4NzUsIDB4ZmIsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiLCAweDhkLCAweDkzLCAweDk0LCAweDhkLCAweDk5LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDhiLCAweDZiLCAweDg3LCAweDcxLCAweGIsIDB4MWYsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2IsIDB4NSwgMHhiLCAweDNjLCAweDdjLCAweDU5LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweDg0LCAweDZkLCAweGEsIDB4YTksIDB4YiwgMHhmNywgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlMywgMHgxOCwgMHg5NSwgMHhmYiwgMHhjYywgMHg3LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZmIsIDB4MzIsIDB4MTUsIDB4OTgsIDB4NzMsIDB4NSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIsIDB4MTksIDB4YWUsIDB4ZmIsIDB4ZDEsIDB4NjgsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDE2LCAweGY3LCAweGQsIDB4NiwgMHhiLCAweGZiLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMyLCAweDc2LCAweGY5LCAweGY0LCAweDc3LCAweDEsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHg3ZSwgMHgxNSwgMHg5YywgMHg5MCwgMHg5ZiwgMHg4ZSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiLCAweDkyLCAweDk1LCAweDc1LCAweDFmLCAweDc1LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODQsIDB4OWMsIDB4YiwgMHg4YiwgMHg2OSwgMHgxYiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZCwgMHhiMCwgMHg3LCAweDY4LCAweGIsIDB4NzIsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzksIDB4NTgsIDB4ZmIsIDB4NTMsIDB4MWUsIDB4YiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhhLCAweGIsIDB4ZmIsIDB4Y2UsIDB4ZmIsIDB4M2EsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4ZmQsIDB4NzcsIDB4YiwgMHgxYSwgMHg4NywgMHg4YSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhiLCAweDE1LCAweGY3LCAweDc0LCAweDllLCAweDYsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MCwgMHg1LCAweGM2LCAweGNkLCAweGIsIDB4ZjcsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZjcsIDB4MWEsIDB4YiwgMHg3NCwgMHg4OCwgMHgxZCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGNiLCAweGJkLCAweGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNlcmlmSXRhbGljLmMgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U2VyaWZJdGFsaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmY3Nzg0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNlcmlmSXRhbGljLmMKQEAgLTAsMCArMSwyNjYyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCitjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTZXJpZkl0YWxpY0ZvbnREYXRhIFsyMTIyN10gPSB7MHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg0LCAweDIsIDB4MCwgMHgxLCAweDEsIDB4MSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDUzLCAweDY1LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4NjYsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MmQsIDB4NDksIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YywgMHg2OSwgMHg2MywgMHgwLCAweDEsIDB4MSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4ZjgsIDB4MTAsIDB4MCwgMHhmOCwgMHgxYywgMHgxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MiwgMHhmOCwgMHgxZSwgMHgzLCAweGY4LCAweDE4LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlMSwgMHg1YSwgMHg0ZiwgMHhjLCAweDIsIDB4ZmIsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4ZSwgMHhmYSwgMHg3MSwgMHhmOSwgMHhmOCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZiwgMHhmOCwgMHg5MywgMHgxMSwgMHhiMCwgMHgxYywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDEyLCAweDAsIDB4NCwgMHgxLCAweDEsIDB4NSwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDU0LCAweDQ1LCAweDc1LCAweDcyLCAweDZmLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDY4LCAweDcyLCAweDZmLCAweDZkLCAweDIwLCAweDUzLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NjksIDB4NjYsIDB4MjAsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHg3NCwgMHg2MSwgMHg2YywgMHg2OSwgMHg2MywgMHg0MywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDZGLCAweDZELCAweDIwLCAweDUzLCAweDY1LCAweDcyLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4MjAsIDB4NGYsIDB4NTQsIDB4NDYsIDB4MCwgMHgwLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDEsIDB4NiwgMHgwLCAweDY4LCAweDAsIDB4MCwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4MCwgMHg3YywgMHgwLCAweDAsIDB4NDIsIDB4MjAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDAsIDB4MCwgMHg2NCwgMHgwLCAweDAsIDB4YTAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NjYsIDB4MCwgMHgwLCAweDgzLCAweDAsIDB4MCwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg4YiwgMHgwLCAweDAsIDB4NmEsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MCwgMHgwLCAweGE1LCAweDAsIDB4MCwgMHg4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhMSwgMHgwLCAweDAsIDB4OWMsIDB4MCwgMHgwLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweGE5LCAweDAsIDB4MCwgMHg3ZCwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHgwLCAweDAsIDB4NzMsIDB4MCwgMHgwLCAweDcyLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDg1LCAweDAsIDB4MCwgMHg5NiwgMHgwLCAweDAsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NzgsIDB4MCwgMHgwLCAweDllLCAweDAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDAsIDB4MCwgMHhhMywgMHgwLCAweDAsIDB4N2IsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YWUsIDB4MCwgMHgwLCAweGFiLCAweDEsIDB4MCwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhhZCwgMHgwLCAweDAsIDB4YWYsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MCwgMHgwLCAweGIxLCAweDAsIDB4MCwgMHhiNSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhiMiwgMHgyLCAweDAsIDB4YjksIDB4MCwgMHgwLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgwLCAweDlhLCAweDAsIDB4MCwgMHhiYSwgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHgwLCAweDAsIDB4YmIsIDB4MSwgMHgwLCAweGJmLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGJkLCAweDAsIDB4MCwgMHhhOCwgMHgwLCAweDAsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4YzQsIDB4MCwgMHgwLCAweGMxLCAweDIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM1LCAweDAsIDB4MCwgMHg5ZCwgMHgwLCAweDAsIDB4OTUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4Y2IsIDB4MCwgMHgwLCAweGM4LCAweDEsIDB4MCwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHhjYSwgMHgwLCAweDAsIDB4Y2MsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MCwgMHgwLCAweGNlLCAweDAsIDB4MCwgMHhkMiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjZiwgMHgyLCAweDAsIDB4ZDYsIDB4MCwgMHgwLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgwLCAweGE3LCAweDAsIDB4MCwgMHhkNywgMHgwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHgwLCAweDAsIDB4ZDgsIDB4MSwgMHgwLCAweGRjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGRhLCAweDAsIDB4MCwgMHg5ZiwgMHgwLCAweDAsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4ZTEsIDB4MCwgMHgwLCAweGRlLCAweDIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDAsIDB4MCwgMHhhMiwgMHgwLCAweDAsIDB4ZTMsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OTEsIDB4MCwgMHgwLCAweDhjLCAweDAsIDB4MCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg4ZSwgMHgwLCAweDAsIDB4OTQsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4MCwgMHgwLCAweGRkLCAweDAsIDB4MCwgMHhjNiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhlNCwgMHgwLCAweDAsIDB4NjUsIDB4MCwgMHgwLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDg4LCAweDAsIDB4MCwgMHg4MSwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHgwLCAweDAsIDB4ODcsIDB4MCwgMHgwLCAweDdmLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDg2LCAweDAsIDB4MCwgMHg2ZiwgMHgwLCAweDAsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDAsIDB4NDEsIDB4MCwgMHgwLCAweDgsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4MCwgMHgwLCAweDY5LCAweDAsIDB4MCwgMHg3NywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg3NiwgMHgwLCAweDAsIDB4NzAsIDB4MSwgMHgwLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHgwLCAweDc5LCAweDEsIDB4MCwgMHg2YiwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgwLCAweDEsIDB4ODcsIDB4MCwgMHgwLCAweDk5LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE2LCAweDAsIDB4MCwgMHg2ZCwgMHgxLCAweDAsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDAsIDB4MSwgMHgwLCAweDMsIDB4MCwgMHg1LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHgwLCAweDgyLCAweDAsIDB4ZjgsIDB4MSwgMHg4YywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4MiwgMHg3MywgMHgyLCAweGEwLCAweDIsIDB4ZDksIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDMsIDB4ZWQsIDB4NCwgMHgxYSwgMHg0LCAweDQ5LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg0LCAweDZkLCAweDQsIDB4ODgsIDB4NCwgMHhjZiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4NSwgMHg3MCwgMHg1LCAweGUzLCAweDYsIDB4MmEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDYsIDB4ZDMsIDB4NiwgMHhmZiwgMHg3LCAweDdkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHg3LCAweGZlLCAweDgsIDB4NDYsIDB4OCwgMHg3MSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OCwgMHhiNSwgMHg5LCAweDJjLCAweDksIDB4ZTYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweGEsIDB4YjYsIDB4YSwgMHhlNCwgMHhiLCAweDJlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHhiLCAweGY1LCAweGMsIDB4NmUsIDB4YywgMHhmNywgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4ZCwgMHg4NywgMHhlLCAweGIsIDB4ZSwgMHgzYSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4ZiwgMHgxZiwgMHhmLCAweDYyLCAweGYsIDB4YzgsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHgxMCwgMHhjNiwgMHgxMSwgMHgyLCAweDExLCAweDRkLCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4MTEsIDB4ZjYsIDB4MTIsIDB4NzUsIDB4MTIsIDB4ZjYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHgxMywgMHg1OSwgMHgxMywgMHg4NSwgMHgxMywgMHhhMywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweDEzLCAweGY5LCAweDE0LCAweGEsIDB4MTQsIDB4MjYsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHgxNCwgMHhkMywgMHgxNSwgMHgxMSwgMHgxNSwgMHg5ZSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVhLCAweDE2LCAweDZlLCAweDE3LCAweDFhLCAweDE3LCAweDhlLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4MTgsIDB4MzMsIDB4MTgsIDB4YTksIDB4MTgsIDB4ZTEsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxOSwgMHhhYiwgMHgxOSwgMHhlYSwgMHgxYSwgMHgyYSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDFhLCAweGYxLCAweDFiLCAweDUzLCAweDFiLCAweGIxLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4MWMsIDB4NTYsIDB4MWMsIDB4ZjEsIDB4MWQsIDB4OTUsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHgxZSwgMHgxOSwgMHgxZSwgMHg3NSwgMHgxZSwgMHg4YiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDFmLCAweDM2LCAweDFmLCAweDgxLCAweDFmLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4MjEsIDB4YywgMHgyMSwgMHhhMSwgMHgyMSwgMHhjMCwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDIyLCAweGE1LCAweDIzLCAweDRjLCAweDIzLCAweGMzLCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgyNCwgMHgyNSwgMHgyNSwgMHgxMywgMHgyNSwgMHgyYSwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDI1LCAweDlhLCAweDI1LCAweGI2LCAweDI1LCAweGZkLCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4MjYsIDB4OTgsIDB4MjYsIDB4ZDAsIDB4MjYsIDB4ZGYsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHgyNywgMHg3MywgMHgyNywgMHhiMSwgMHgyNywgMHhjNCwgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDI4LCAweDg4LCAweDI4LCAweGQxLCAweDI5LCAweDMxLCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4MjksIDB4OGMsIDB4MjksIDB4YzMsIDB4MjksIDB4ZmQsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHgyYSwgMHg4OSwgMHgyYiwgMHgyZiwgMHgyYiwgMHg5MSwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDJiLCAweGYzLCAweDJjLCAweDEyLCAweDJjLCAweDMzLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4MmMsIDB4NWUsIDB4MmMsIDB4NzQsIDB4MmMsIDB4ODksIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYywgMHgyZCwgMHg4NSwgMHgyZCwgMHg5NiwgMHgyZCwgMHhhOSwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDJkLCAweGZkLCAweDJlLCAweDFmLCAweDJlLCAweDYxLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4MmYsIDB4NSwgMHgyZiwgMHgxYywgMHgyZiwgMHgyZiwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDJmLCAweGM4LCAweDMwLCAweDQzLCAweDMwLCAweGZiLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSwgMHgzMSwgMHgxYiwgMHgzMSwgMHgzNSwgMHgzMSwgMHg1ZCwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDMxLCAweGJkLCAweDMyLCAweDYyLCAweDMyLCAweGQ1LCAweDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4MzMsIDB4MmMsIDB4MzMsIDB4NTAsIDB4MzMsIDB4NzMsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHgzMywgMHhhZiwgMHgzMywgMHhiZSwgMHgzMywgMHhkYiwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDM0LCAweDhiLCAweDM0LCAweGE2LCAweDM0LCAweGMwLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4MzUsIDB4MTMsIDB4MzUsIDB4MzMsIDB4MzUsIDB4NjQsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHgzNSwgMHhmMCwgMHgzNSwgMHhmZSwgMHgzNiwgMHgyNCwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweDM2LCAweDk1LCAweDM2LCAweGUwLCAweDM3LCAweDNlLCAweDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4MzcsIDB4OTMsIDB4MzcsIDB4ZGQsIDB4MzgsIDB4OTksIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHgzOSwgMHg3ZCwgMHgzOSwgMHhlNSwgMHgzYSwgMHg2NiwgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDNhLCAweGM4LCAweDNiLCAweDRjLCAweDNiLCAweDY3LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4M2IsIDB4YWQsIDB4M2IsIDB4YmQsIDB4M2MsIDB4ZiwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDNjLCAweDVlLCAweDNjLCAweDdlLCAweDNjLCAweDkyLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4M2MsIDB4Y2QsIDB4M2MsIDB4ZmQsIDB4M2QsIDB4MWUsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHgzZCwgMHg5OSwgMHgzZCwgMHhkMiwgMHgzZSwgMHg3NSwgMHgzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDNmLCAweDdhLCAweDNmLCAweGI1LCAweDNmLCAweGVkLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg0MCwgMHgyNywgMHg0MCwgMHgzYywgMHg0MCwgMHhiYSwgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDQxLCAweDZkLCAweDQyLCAweDM2LCAweDQzLCAweDcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDIwLCAweGUsIDB4NzMsIDB4OGUsIDB4ZjQsIDB4ZjgsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhiMiwgMHhmNCwgMHgxNywgMHhmNywgMHhjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4MTUsIDB4OWMsIDB4ODcsIDB4YzUsIDB4ZjcsIDB4MzIsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4LCAweGI3LCAweGY3LCAweDEwLCAweDE5LCAweDkyLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OWIsIDB4OWEsIDB4MWEsIDB4YTYsIDB4NmUsIDB4OTksIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgxMywgMHhhMCwgMHg3MSwgMHg3NywgMHg2ZCwgMHg2NCwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDZmLCAweGZiLCAweDEwLCAweDc2LCAweGZiLCAweDE4LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzUsIDB4OCwgMHgzYSwgMHhmYiwgMHgyMCwgMHgxNSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDg1LCAweGEsIDB4NzQsIDB4NzMsIDB4NmUsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGY4LCAweDRlLCAweDc2LCAweGY3LCAweDg5LCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNCwgMHhhMCwgMHhmNywgMHgzMiwgMHhhMCwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4ZjgsIDB4MzksIDB4MTUsIDB4YTAsIDB4NiwgMHhhOCwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGY2LCAweGFjLCAweDFhLCAweDljLCAweDdmLCAweDllLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NzEsIDB4YmMsIDB4YSwgMHhmYiwgMHg0NywgMHgxNiwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTcsIDB4Y2MsIDB4YzEsIDB4ZWUsIDB4YmIsIDB4MWEsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg5ZCwgMHg3YSwgMHg3MiwgMHg3NiwgMHhiYywgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NiwgMHhmNywgMHg1ZiwgMHhiMiwgMHg2NCwgMHhjMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGMxLCAweDYzLCAweGIzLCAweGY3LCAweDY4LCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4ZjgsIDB4NjQsIDB4MTMsIDB4YjYsIDB4OWMsIDB4MTYsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGQ2LCAweGY3LCAweDVmLCAweDUsIDB4ZjcsIDB4NDIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGZiLCAweDVmLCAweDUsIDB4YjIsIDB4NiwgMHhkNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDUsIDB4ZjQsIDB4NiwgMHgxMywgMHhjZSwgMHg5NiwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MjYsIDB4NiwgMHhjZSwgMHhmNywgMHg0YSwgMHg1LCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg5NiwgMHhiMywgMHg1LCAweDJiLCAweDYsIDB4ZGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg1LCAweDYyLCAweDYsIDB4M2IsIDB4ZmIsIDB4NjgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQxLCAweDYsIDB4ZGEsIDB4ZjcsIDB4NjgsIDB4NSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4M2IsIDB4ZmIsIDB4NjgsIDB4NSwgMHgyMiwgMHg2LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4NSwgMHhlZSwgMHg2LCAweDQ5LCAweGZiLCAweDRhLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHg2LCAweDgwLCAweDY0LCAweDUsIDB4ZTcsIDB4NiwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDE1LCAweGNlLCAweGY3LCAweDRhLCAweDUsIDB4ZjcsIDB4NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDQ3LCAweGZiLCAweDRhLCAweDUsIDB4ZSwgMHg0NywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweDc2LCAweGE0LCAweDc2LCAweGY5LCAweDE1LCAweGE2LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4YTIsIDB4ZDksIDB4ZjcsIDB4YWIsIDB4ZDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHhmNywgMHhhZSwgMHhmOCwgMHgzOCwgMHgxNSwgMHg2MSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGFiLCAweGMxLCAweDFhLCAweGQ1LCAweGM1LCAweGFhLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4NywgMHhmYywgMHhmYywgMHgxNSwgMHhjZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDUsIDB4YzIsIDB4NWQsIDB4YWYsIDB4NmQsIDB4NDgsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNCwgMHhmYiwgMHgxNCwgMHg4MSwgMHg2YywgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGI1LCAweDE1LCAweDk3LCAweDgwLCAweGJmLCAweDY1LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NzUsIDB4MzAsIDB4MTgsIDB4YWUsIDB4NiwgMHgxMywgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGU0LCAweDUsIDB4MTMsIDB4NWUsIDB4ZjcsIDB4NTYsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNiwgMHhlNCwgMHhkYiwgMHg1ZSwgMHhiOSwgMHgyYSwgMHhkNSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGY3LCAweDgxLCAweDUsIDB4YWQsIDB4N2QsIDB4YmUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHgxYSwgMHg5YSwgMHg4OSwgMHhhNywgMHhmNywgMHg2LCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NTAsIDB4OWIsIDB4NzgsIDB4OGYsIDB4MTksIDB4OWIsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDY5LCAweDYsIDB4N2EsIDB4NGMsIDB4NSwgMHgxMywgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGUsIDB4MmIsIDB4NTgsIDB4ZmIsIDB4MCwgMHg0NCwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweGQxLCAweDVjLCAweDFmLCAweDQ2LCAweGZiLCAweGJkLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4ODIsIDB4Y2MsIDB4ODIsIDB4ZDUsIDB4MTksIDB4N2IsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4ZjgsIDB4NzAsIDB4YjAsIDB4YSwgMHhkNSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4MWUsIDB4ZDAsIDB4YSwgMHgxMywgMHhiNywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDk3LCAweGY3LCAweDksIDB4MzAsIDB4YSwgMHhmYywgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDExLCAweDMwLCAweGEsIDB4MTMsIDB4NmYsIDB4ODAsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgzMywgMHgxNSwgMHhiYSwgMHg2LCAweGY5LCAweDQ4LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4NSwgMHg1YywgMHg2LCAweGUsIDB4ZjgsIDB4MzksIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHg1YiwgMHhiYywgMHhmOCwgMHgxLCAweGFhLCAweGY3LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MTIsIDB4ZDcsIDB4ZTksIDB4ZjcsIDB4MmUsIDB4ZGMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGQwLCAweDEzLCAweDdlLCAweGY4LCAweDVkLCAweGM4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmUsIDB4NmQsIDB4YTMsIDB4YjMsIDB4NWEsIDB4ZDUsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhiNiwgMHhhNSwgMHhiNSwgMHhhZCwgMHgxZiwgMHg4MCwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4N2YsIDB4N2IsIDB4NzYsIDB4NzksIDB4NjksIDB4MWIsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHhhNiwgMHhjZSwgMHg2NiwgMHgxZiwgMHhjMiwgMHhkMiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDlhLCAweDlmLCAweDgsIDB4YjAsIDB4YTYsIDB4OWYsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHgxYiwgMHg5YywgMHhmYiwgMHg0ZCwgMHg3OCwgMHg3LCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4N2IsIDB4NzAsIDB4NjEsIDB4NzEsIDB4NmEsIDB4NWYsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg2MCwgMHhjZCwgMHg2YiwgMHhmNywgMHhiLCAweDdmLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhjNywgMHhhOSwgMHhmNywgMHg0LCAweGMzLCAweGU2LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4NjEsIDB4YjcsIDB4NTAsIDB4MzAsIDB4NDUsIDB4M2IsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHg3ZSwgMHg4YywgMHg4MiwgMHg5MSwgMHg0ZSwgMHgxZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDUyLCAweGZiLCAweDEwLCAweDU1LCAweGZiLCAweDE1LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWEsIDB4ZjcsIDB4MTQsIDB4NzUsIDB4YmQsIDB4ZGIsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhjMCwgMHhkZSwgMHgxZSwgMHg3OCwgMHhhOCwgMHgxNSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDUyLCAweDdkLCAweDY4LCAweDFiLCAweDQ4LCAweDRjLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4ZjcsIDB4OSwgMHhmNywgMHgzNiwgMHhjOCwgMHg4YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDQ1LCAweGIyLCAweGZiLCAweDEzLCAweGI5LCAweDUxLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhmNywgMHhlNiwgMHgxNSwgMHg4OCwgMHhhNSwgMHg4OSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDFhLCAweGMyLCAweDk0LCAweGQzLCAweGM0LCAweDliLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4NTMsIDB4MzgsIDB4NWMsIDB4NmUsIDB4NGYsIDB4NjUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweDIzLCAweGY4LCAweDRlLCAweDc2LCAweGY3LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHgxOCwgMHhhMCwgMHgzLCAweGY3LCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MzksIDB4MTUsIDB4YTAsIDB4NiwgMHhiNCwgMHhlMywgMHhiYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGE4LCAweDFhLCAweDljLCAweDgwLCAweGEwLCAweDc1LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4N2UsIDB4NzIsIDB4ODQsIDB4MWUsIDB4ODIsIDB4NmIsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjLCAweDg2LCAweDU0LCAweDgsIDB4ZSwgMHg3MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweDc2LCAweGY5LCAweGU2LCAweDc3LCAweDEsIDB4YjUsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDIxLCAweGZiLCAweDQ5LCAweDE1LCAweDlkLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0YywgMHhmNywgMHg5LCAweDljLCAweGY3LCAweDUzLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4MjEsIDB4ZWIsIDB4ZjcsIDB4N2MsIDB4ZjUsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3ZSwgMHg5YSwgMHg1LCAweGZiLCAweDRhLCAweGZiLCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2QsIDB4ZmIsIDB4MzAsIDB4ZmIsIDB4MzksIDB4MWEsIDB4NGIsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYSwgMHhlOSwgMHhmYiwgMHgzNCwgMHgxZSwgMHhlLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzYsIDB4NzYsIDB4ZjksIDB4ZTgsIDB4NzcsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhkMywgMHgxNywgMHg5YiwgMHhmYiwgMHgzOSwgMHgxNSwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDUsIDB4MTMsIDB4NjAsIDB4ZjcsIDB4MjgsIDB4ZjcsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZjcsIDB4M2EsIDB4ZjcsIDB4NTEsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHg3MCwgMHhmNywgMHgxNCwgMHg0MywgMHhmNywgMHg5LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ODYsIDB4YmQsIDB4MmIsIDB4OTgsIDB4ZmIsIDB4MWIsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZiwgMHgxOSwgMHg3NSwgMHhmYiwgMHg0NywgMHg0MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDIwLCAweDI5LCAweDgsIDB4ZSwgMHhmNywgMHgzNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4NjYsIDB4NzYsIDB4ZjgsIDB4MTAsIDB4NzYsIDB4ZTAsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg3NywgMHgxMiwgMHhmNywgMHhjMSwgMHg5ZCwgMHgxMywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMwLCAweGY4LCAweDUyLCAweDE1LCAweDhjLCAweDczLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4ODQsIDB4NzMsIDB4OCwgMHg4MiwgMHg2YywgMHg3ZSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDFhLCAweDEzLCAweDZjLCAweDcyLCAweDlkLCAweDc5LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWUsIDB4OWMsIDB4YTYsIDB4OGMsIDB4MWUsIDB4OGMsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg5OSwgMHg4MiwgMHhiMCwgMHg4LCAweDg3LCAweDlkLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YWMsIDB4MWEsIDB4YTIsIDB4N2UsIDB4OWMsIDB4N2UsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4LCAweDY1LCAweGI2LCAweDkyLCAweDZjLCAweGFiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWUsIDB4OWEsIDB4YTMsIDB4YjEsIDB4NjIsIDB4ODcsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHgxZiwgMHg3OSwgMHg5MCwgMHg3NiwgMHg5NywgMHg3NiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDlkLCAweGEzLCAweDk0LCAweGEwLCAweDkxLCAweDgsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhiMiwgMHg4MiwgMHhiYiwgMHgxYSwgMHg5ZSwgMHg3YSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDZmLCAweDdiLCAweDZmLCAweDZmLCAweDcwLCAweDFlLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NjYsIDB4NzEsIDB4ODksIDB4MWIsIDB4YjAsIDB4OGUsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg5OCwgMHgxZSwgMHg5NSwgMHhhNywgMHg5NCwgMHhhMSwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDEzLCAweGI0LCAweGE3LCAweDdhLCAweDk5LCAweDdhLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4N2IsIDB4NzAsIDB4NzYsIDB4OTUsIDB4N2EsIDB4OTMsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4ZiwgMHg3OCwgMHg4ZiwgMHg3MywgMHg2YSwgMHgxYSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDc4LCAweDlhLCAweDdjLCAweDk5LCAweDgsIDB4YWUsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHhhNCwgMHg2YiwgMHgxYiwgMHg3NCwgMHg4MCwgMHg3NywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGIzLCAweDkwLCAweGMyLCAweDdjLCAweDFmLCAweDlkLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4ODQsIDB4YWMsIDB4NzgsIDB4NzAsIDB4NzksIDB4NzEsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg4NSwgMHg4LCAweDU2LCAweDdkLCAweDY2LCAweDhmLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ODEsIDB4OTYsIDB4NzQsIDB4YTMsIDB4YTgsIDB4OWMsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhhNSwgMHgxZSwgMHhhNCwgMHhhNiwgMHhhNywgMHg5NywgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDgsIDB4ZSwgMHhmNywgMHhkMiwgMHhhMCwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweGI0LCAweGY3LCAweDczLCAweDc3LCAweDEyLCAweGY3LCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2QsIDB4NTMsIDB4YjUsIDB4MTMsIDB4ZjAsIDB4ZTEsIDB4ZjcsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxMywgMHhlOCwgMHhmNywgMHg3OSwgMHhmYiwgMHg4NiwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg2LCAweGY3LCAweDdkLCAweGI0LCAweGZiLCAweDdkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NjEsIDB4ZmIsIDB4NzMsIDB4ZmIsIDB4NzksIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZmIsIDB4MCwgMHg3NiwgMHhmNywgMHg3YSwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGMwLCAweGEsIDB4MTMsIDB4ZTAsIDB4ODcsIDB4ZmIsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDk0LCAweDdhLCAweDUsIDB4YzgsIDB4YSwgMHg4MywgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDYxLCAweDc1LCAweDk3LCAweDgxLCAweDk3LCAweDgzLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZDAsIDB4OTcsIDB4ODMsIDB4OTcsIDB4ODQsIDB4N2EsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg1NCwgMHg2NiwgMHg3NywgMHg3ZSwgMHgxZSwgMHhlLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTQsIDB4Y2EsIDB4MSwgMHhiYywgMHhmNywgMHg3ZCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4ZjcsIDB4NTQsIDB4MTUsIDB4ZjcsIDB4NmUsIDB4NiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDUsIDB4ZmIsIDB4NmQsIDB4NiwgMHhlLCAweDIwLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MywgMHgxLCAweGE2LCAweGY3LCAweDMsIDB4MywgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDg0LCAweGEsIDB4M2MsIDB4OGUsIDB4NzYsIDB4ZjksIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweDc3LCAweGY4LCAweGIsIDB4MywgMHg3NywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY4LCAweDJhLCAweGY5LCAweDQwLCAweDUsIDB4NWYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDJiLCAweGZkLCAweDQwLCAweDUsIDB4ZSwgMHg4NCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDcsIDB4YTcsIDB4MSwgMHhhYiwgMHhkYSwgMHhmNywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweDMsIDB4ZjcsIDB4MywgMHhmNywgMHgzMCwgMHgxNSwgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGY4LCAweDFmLCAweGY3LCAweDI5LCAweGUxLCAweDhiLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4ZmIsIDB4NDMsIDB4MzUsIDB4ZmIsIDB4ZDQsIDB4ZmIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg1NCwgMHg5ZSwgMHhmNywgMHg4LCAweDFlLCAweDNjLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MjMsIDB4YzQsIDB4MjAsIDB4ZjMsIDB4ZjcsIDB4M2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYywgMHhmNywgMHg3YywgMHhmNywgMHg1YSwgMHhlZCwgMHg3MCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGZiLCAweDE5LCAweGZiLCAweDFmLCAweGZiLCAweDNhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4ZmIsIDB4YTIsIDB4MWUsIDB4ZSwgMHhhMCwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDc3LCAweDEsIDB4YmMsIDB4ZjcsIDB4ZjgsIDB4MywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweGFiLCAweDlhLCAweDYsIDB4NWUsIDB4NmMsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg4ZiwgMHg4YiwgMHg4ZiwgMHg4YywgMHg5MCwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGY4LCAweGM5LCAweDUsIDB4OGUsIDB4OTUsIDB4OGUsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHgxYSwgMHg4ZiwgMHg4YSwgMHg4ZCwgMHg4OCwgMHg4MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDZkLCAweDgzLCAweDVjLCAweDFlLCAweDdjLCAweDcsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg5ZSwgMHg4YywgMHg5OSwgMHgxYiwgMHhhNywgMHg5NywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDgzLCAweDg3LCAweDdkLCAweDg4LCAweDgwLCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZmMsIDB4NzYsIDB4NSwgMHg1ZSwgMHg3ZSwgMHg1MiwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDFiLCAweGUsIDB4OGIsIDB4ZDcsIDB4ZjgsIDB4YTMsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY4LCAweDIsIDB4ZTEsIDB4MywgMHg5NywgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYsIDB4YmQsIDB4ZjcsIDB4MTgsIDB4N2EsIDB4OTIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDdhLCAweDcxLCAweDcwLCAweDQ5LCAweDFiLCAweGZiLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4NiwgMHhmNywgMHg1NCwgMHhmNywgMHg1NCwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4ZjcsIDB4MTAsIDB4YTQsIDB4YjgsIDB4Y2UsIDB4MWEsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhlNywgMHgyMSwgMHg3MiwgMHhmYiwgMHgxNywgMHg4NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDU1LCAweDFlLCAweGEwLCAweDg0LCAweDUsIDB4YTQsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhkMCwgMHhlNSwgMHgxYiwgMHhkOCwgMHhiOSwgMHg0ZiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweDg3LCAweDUxLCAweGZiLCAweDIwLCAweGZiLCAweDI5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjYsIDB4ZmIsIDB4NmQsIDB4NSwgMHhlLCAweDg0LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4ZjcsIDB4MCwgMHhmNywgMHg5OCwgMHg5YiwgMHhmNywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDEyLCAweGY3LCAweGVlLCAweGRiLCAweDViLCAweGUyLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4ZmQsIDB4MTUsIDB4ZWMsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHg2NiwgMHhmYiwgMHgyMCwgMHgxYSwgMHhmYiwgMHgxMiwgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDY5LCAweDZmLCAweDc2LCAweDljLCAweDljLCAweDc2LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzQsIDB4OWQsIDB4NzYsIDB4NzYsIDB4OWQsIDB4NzQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg4MSwgMHg2ZiwgMHg3NiwgMHg1ZSwgMHhjMiwgMHg3ZCwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweDM0LCAweGY3LCAweDRkLCAweGU2LCAweGY3LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MywgMHhmNywgMHgyLCAweDQ2LCAweGE5LCAweDcxLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGUsIDB4NywgMHhmNCwgMHhiMiwgMHhiZCwgMHhhZSwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGRlLCAweDQzLCAweGI1LCAweDQxLCAweDUyLCAweDQwLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NzIsIDB4MWUsIDB4OWIsIDB4ODYsIDB4NSwgMHg5ZiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweGJhLCAweGNhLCAweDFiLCAweGIxLCAweGJjLCAweDczLCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MCwgMHhmYiwgMHgxZiwgMHg1ZiwgMHgyNywgMHg3ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4M2MsIDB4Y2EsIDB4ZjgsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHg4YywgMHhmOCwgMHg3MiwgMHgxNywgMHhjYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDE1LCAweDhmLCAweDcsIDB4ZjcsIDB4YzQsIDB4ZjcsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDhmLCAweDYsIDB4MTMsIDB4ZjAsIDB4MjgsIDB4ZmIsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweGE1LCAweDRjLCAweDE1LCAweGY3LCAweDk3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhmYiwgMHgzYywgMHg1LCAweGRhLCAweDYsIDB4YjYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHg1LCAweGVmLCAweDYsIDB4OTksIDB4Y2MsIDB4NSwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MTMsIDB4MzAsIDB4ZjcsIDB4MTAsIDB4ZjgsIDB4NTEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDYsIDB4ZmMsIDB4MzUsIDB4ZmMsIDB4NGQsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4YjUsIDB4ZjgsIDB4YzQsIDB4ZDIsIDB4MSwgMHhmNywgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweDMsIDB4ZjcsIDB4MTcsIDB4ZjgsIDB4M2IsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDcyLCAweGYyLCAweDdmLCAweGZiLCAweDJkLCAweDFhLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4ZmIsIDB4MywgMHgyOSwgMHg2ZiwgMHg3NywgMHg5YSwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDFlLCAweDk4LCAweDc5LCAweDdhLCAweDk4LCAweDc1LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NzYsIDB4N2YsIDB4NmUsIDB4NmYsIDB4YTksIDB4NmYsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NywgMHhmNiwgMHhmNywgMHgyZSwgMHhmNywgMHgxNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDMxLCAweGM5LCAweGZiLCAweDE2LCAweGE1LCAweDFmLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4NSwgMHhmNywgMHg3YSwgMHg2LCAweGEyLCAweGQyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5NCwgMHg2LCAweDIzLCAweGZiLCAweDc4LCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGE1LCAweGY4LCAweDExLCAweGFmLCAweGY3LCAweDhlLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhYywgMHhkNywgMHhmNywgMHg5YiwgMHhlNCwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4ZjgsIDB4NGEsIDB4MTUsIDB4YmQsIDB4YTMsIDB4ZjcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRhLCAweGY3LCAweDQ0LCAweDFiLCAweDhhLCAweDliLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjNSwgMHhmYiwgMHg0ZCwgMHhmYiwgMHhhMiwgMHhmYiwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM4LCAweGVlLCAweDU2LCAweGRjLCAweGY3LCAweDNlLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2QsIDB4ZjAsIDB4ZjcsIDB4MjIsIDB4MjYsIDB4YmYsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2ZCwgMHg4MywgMHg3ZSwgMHg2ZiwgMHgxZiwgMHgyYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDE1LCAweDliLCAweDk1LCAweGY3LCAweDhjLCAweGY3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4YjUsIDB4NTEsIDB4MzksIDB4MzEsIDB4NTUsIDB4ZmIsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2LCAweDI5LCAweDhiLCAweGY3LCAweDQsIDB4YTUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDk4LCAweDc2LCAweGY4LCAweGVkLCAweGQ0LCAweDEsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1YywgMHgzLCAweGRhLCAweDgzLCAweDE1LCAweGQxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxOCwgMHhmOSwgMHgyYywgMHg4NSwgMHg5NSwgMHg1LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg2LCAweDNhLCAweGZiLCAweDFjLCAweDk5LCAweDgyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhhZCwgMHhiMCwgMHhhYiwgMHhkMywgMHgxYiwgMHhmNywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OGQsIDB4ODgsIDB4NSwgMHhlLCAweDg0LCAweGExLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YTIsIDB4MTIsIDB4YTksIDB4Y2YsIDB4YjMsIDB4ZDksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhkNiwgMHg3OCwgMHhjZiwgMHgxMywgMHhmOCwgMHhmNywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGZjLCAweDE1LCAweDczLCAweDg0LCAweGZiLCAweDNmLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjUsIDB4MWEsIDB4NmQsIDB4YTAsIDB4ZmIsIDB4MWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhmNywgMHgxYSwgMHhkYiwgMHhlMSwgMHhlMSwgMHhkOSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweDQwLCAweGQ2LCAweDFlLCAweDEzLCAweGY0LCAweGMyLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHhiMSwgMHhlYywgMHgxYSwgMHhmNywgMHgyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhhYSwgMHg0OSwgMHgyZCwgMHgzNCwgMHg1YSwgMHgyNCwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDVjLCAweGM4LCAweDRhLCAweDFlLCAweGExLCAweDdiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjgsIDB4ZWMsIDB4MjcsIDB4YTQsIDB4NmUsIDB4NGEsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHgzZCwgMHg2NCwgMHg1NSwgMHgzNSwgMHg1NiwgMHhjNywgMHhkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweGY3LCAweGYsIDB4YzIsIDB4YTUsIDB4OTMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHhjMiwgMHgxNSwgMHgyYywgMHhlMSwgMHg4YiwgMHhhYSwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGNlLCAweGIxLCAweGI3LCAweGNiLCAweDFlLCAweDEzLCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4YTUsIDB4NDgsIDB4NWIsIDB4MzgsIDB4NTAsIDB4NmQsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgxZiwgMHhlLCAweDhmLCAweDc2LCAweGY3LCAweDkzLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MiwgMHhhNSwgMHgxLCAweGQwLCAweGUzLCAweGY3LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDYsIDB4MywgMHhhMiwgMHg4YywgMHgxNSwgMHg3OSwgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4ZjcsIDB4Y2YsIDB4ZjcsIDB4NDIsIDB4ZjcsIDB4YmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHgzYiwgMHhkNSwgMHgyNCwgMHhmYiwgMHg5LCAweGZiLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMCwgMHhmYiwgMHgxZCwgMHhmYiwgMHhiLCAweGNkLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4YjcsIDB4YjcsIDB4OWUsIDB4YTUsIDB4YjMsIDB4MWYsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg1LCAweDUxLCAweDgwLCAweGZiLCAweDU0LCAweGZiLCAweDVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4MWIsIDB4ZjcsIDB4MWEsIDB4ZjgsIDB4MmYsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhiYiwgMHhmNywgMHgyNSwgMHhmNywgMHg1LCAweGVlLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MCwgMHg2NCwgMHg3MCwgMHg3YiwgMHhmYiwgMHg0LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4MWUsIDB4NjAsIDB4NmYsIDB4NTMsIDB4N2EsIDB4NmMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg4NywgMHhmNywgMHg3LCAweGFiLCAweDFmLCAweGUsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhmNywgMHgyLCAweGY3LCAweDdjLCAweGY3LCAweDIsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHhmNywgMHgyLCAweDgyLCAweGY3LCAweDIsIDB4MTMsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHhiNywgMHg4YSwgMHhhLCAweDEzLCAweGQwLCAweGYwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWEsIDB4OGEsIDB4YSwgMHhlLCAweDczLCAweGY3LCAweGRkLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgxMiwgMHhmNywgMHgyOSwgMHhmNywgMHg0LCAweGZiLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzLCAweDEzLCAweGEwLCAweGE2LCAweGZiLCAweDQsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg3YSwgMHg1LCAweDEzLCAweGMwLCAweGM4LCAweGEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg3YywgMHg2MSwgMHg3MywgMHg5OSwgMHg4MywgMHg5OCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDk1LCAweDg0LCAweDk1LCAweDg0LCAweDdjLCAweDFhLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4NjYsIDB4NzcsIDB4N2UsIDB4MWUsIDB4ZjcsIDB4ZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDE1LCAweDZjLCAweGE0LCAweDcyLCAweGFhLCAweGFhLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4YWEsIDB4YWEsIDB4NzIsIDB4YTQsIDB4NmMsIDB4NmMsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2YywgMHgxZSwgMHhlLCAweGY3LCAweGQyLCAweDk4LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NzYsIDB4ZjgsIDB4ODUsIDB4NzcsIDB4MSwgMHhmNywgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDU5LCAweDMsIDB4ZGYsIDB4ZjcsIDB4ODgsIDB4MTUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhmYiwgMHg5MCwgMHg1LCAweGI1LCAweDcsIDB4ZmMsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2ZiwgMHhmOCwgMHg0ZSwgMHhmNywgMHg2ZiwgMHg1LCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYywgMHg5MCwgMHhmYiwgMHg5MCwgMHg1LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHhmNywgMHhjLCAweGNlLCAweGY3LCAweDE4LCAweGNlLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MTIsIDB4MTMsIDB4YTAsIDB4ZTEsIDB4ZjcsIDB4ZWUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg4YywgMHhiMywgMHhmYywgMHg4YywgMHg2LCAweGZiLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmOCwgMHg4YywgMHg2LCAweDEzLCAweGMwLCAweGIwLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NywgMHhlLCAweGY3LCAweGQyLCAweDk4LCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4NzcsIDB4MSwgMHhkZiwgMHg4MywgMHgxNSwgMHhiNSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NGUsIDB4ZjcsIDB4NmYsIDB4ZmMsIDB4NGUsIDB4ZjcsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGI1LCAweDcsIDB4ZjgsIDB4OTAsIDB4ZmIsIDB4OTAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDcsIDB4ZSwgMHg3ZiwgMHhmMywgMHhmOCwgMHhiYSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY3LCAweDE4LCAweGYzLCAweDU3LCAweGNiLCAweGY3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4MTMsIDB4ZDgsIDB4ZjcsIDB4NWIsIDB4ZjcsIDB4NDQsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg4OSwgMHg1LCAweGQzLCAweGRiLCAweGQ2LCAweGI1LCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YmYsIDB4YjQsIDB4ZGQsIDB4YzEsIDB4ZTMsIDB4MWEsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhjMCwgMHgyYiwgMHg0NCwgMHg0OSwgMHg2NCwgMHg0NCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDc3LCAweGEzLCAweDk1LCAweGFjLCAweDk0LCAweGE5LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4OTIsIDB4ODUsIDB4OTIsIDB4MWUsIDB4ODUsIDB4OTIsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg5NywgMHgxYSwgMHhiYSwgMHhjYywgMHg4YiwgMHg5MCwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDUwLCAweDcyLCAweDQ0LCAweDYyLCAweDVlLCAweDViLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NTcsIDB4NTUsIDB4NTEsIDB4MzQsIDB4NDEsIDB4MWEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHg0OCwgMHhmYiwgMHgxYywgMHgxNSwgMHgxMywgMHhkOCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDc0LCAweGE4LCAweDFlLCAweDEzLCAweGU4LCAweGE4LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YTgsIDB4MWYsIDB4MTMsIDB4ZDgsIDB4YTgsIDB4NzQsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgxZSwgMHgxMywgMHhlOCwgMHg2ZSwgMHg3NCwgMHg3NCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4ZjgsIDB4YzcsIDB4NzksIDB4YjIsIDB4ZWQsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHhiNiwgMHhmNywgMHhiMywgMHhiNywgMHhmNywgMHhmLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4YSwgMHhkZSwgMHhmNywgMHhjLCAweGQyLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiMywgMHgxMywgMHhiZiwgMHhmOCwgMHgxYywgMHhmNywgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweGMsIDB4ZTMsIDB4ZDMsIDB4YmIsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhhOCwgMHg5OCwgMHg3NSwgMHg2MSwgMHgxZiwgMHgyYSwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGZiLCAweDYsIDB4NjEsIDB4MWIsIDB4NjgsIDB4NzAsIDB4YTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHgxZiwgMHhmNywgMHgyMSwgMHg1MywgMHgxNSwgMHg3ZiwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDUxLCAweGNkLCAweDFiLCAweGY3LCAweGEsIDB4Y2UsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmMCwgMHhmNywgMHgzYiwgMHhmYiwgMHgyMywgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRiLCAweGZiLCAweDU4LCAweGZiLCAweDNhLCAweGZiLCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjksIDB4ZmIsIDB4MTksIDB4ZjcsIDB4NSwgMHhmYiwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk3LCAweGQ4LCAweGQ5LCAweGFiLCAweGE5LCAweGNhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4YTgsIDB4NSwgMHg3MSwgMHg1MiwgMHg0ZCwgMHg3MSwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDQxLCAweGZiLCAweDcsIDB4ZjcsIDB4MWMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhmNywgMHg3MSwgMHhmNywgMHgxMywgMHhmNywgMHg4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZjcsIDB4NGEsIDB4ZjMsIDB4ZmIsIDB4MjksIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGRmLCAweDM1LCAweDViLCAweGZiLCAweDgsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg5MCwgMHhiYiwgMHg5YSwgMHg4ZiwgMHgxZSwgMHhjYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDUsIDB4NDYsIDB4NiwgMHg4MSwgMHg1YywgMHg1LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4ODAsIDB4YTcsIDB4NWMsIDB4MWIsIDB4ZmIsIDB4MTksIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzYywgMHg0NSwgMHgxZiwgMHgxMywgMHgwLCAweGZiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHg4MSwgMHhhNiwgMHgxZSwgMHhjNSwgMHg4YSwgMHhiOCwgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDljLCAweDgsIDB4ZSwgMHg1YSwgMHhhLCAweDEsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZiwgMHhmNywgMHg5OCwgMHhmNywgMHgzYywgMHgzLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4OWIsIDB4YSwgMHg1ZCwgMHg3ZSwgMHg5ZSwgMHhhNSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDkxLCAweGQyLCAweGY3LCAweDE2LCAweDFmLCAweGY3LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhMSwgMHhmYiwgMHgxMiwgMHg4YiwgMHg3NCwgMHg4YSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDcxLCAweDc3LCAweDU3LCAweDFlLCAweDdiLCAweGY3LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NywgMHg1MSwgMHg4NywgMHhhNiwgMHhjOCwgMHg4MCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweGY4LCAweGM4LCAweDUsIDB4NzEsIDB4NiwgMHhmYiwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGI3LCAweDUsIDB4NTksIDB4NmUsIDB4NzAsIDB4NTQsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0NSwgMHhhLCAweGUsIDB4ZjcsIDB4OTIsIDB4ODYsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhhOSwgMHhmNywgMHhjMSwgMHhhYiwgMHhmNywgMHg5OCwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY3LCAweDUxLCAweGYwLCAweGY3LCAweDIxLCAweGY3LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHhmMCwgMHgxMywgMHg3YywgMHg4MywgMHgxNiwgMHhmNywgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MTQsIDB4ZjcsIDB4MWQsIDB4YzksIDB4ZjcsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHg0NSwgMHhhOSwgMHg1NiwgMHhhMiwgMHgxZiwgMHg4ZCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmEsIDB4ZTksIDB4OWUsIDB4ZDksIDB4YjYsIDB4ZTUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3LCAweDJiLCAweGFkLCAweDIzLCAweDFlLCAweGZiLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NiwgMHhkZiwgMHg4MSwgMHg1MSwgMHg1MiwgMHg3YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUsIDB4ZmMsIDB4NDcsIDB4N2YsIDB4NWQsIDB4NjcsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg4YSwgMHgxOSwgMHgxMywgMHg3YywgMHhmNywgMHg0YSwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDllLCAweGJjLCAweGY3LCAweDM3LCAweDlhLCAweGNiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2EsIDB4YTYsIDB4NWUsIDB4M2QsIDB4MjgsIDB4NTIsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMSwgMHg2ZSwgMHg2ZCwgMHg5YywgMHhiMSwgMHgxZiwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFhLCAweDE1LCAweGI1LCAweGY3LCAweDMzLCAweDUsIDB4ZWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg4MywgMHg5MCwgMHhkMSwgMHgxYiwgMHgxMywgMHhiYSwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDY3LCAweDQ3LCAweGZiLCAweDIwLCAweGZiLCAweGQsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhLCAweDFmLCAweGUsIDB4ZjcsIDB4Y2EsIDB4NzksIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHhhLCAweDEzLCAweGIwLCAweGY5LCAweDIwLCAweGY4LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YjgsIDB4YSwgMHg3ZSwgMHg3NCwgMHg5MywgMHg5MiwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGQwLCAweDkwLCAweDc1LCAweDcwLCAweDhmLCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4YSwgMHhmYiwgMHg1YywgMHhmNywgMHgyNiwgMHg0NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZjcsIDB4MjYsIDB4ZTQsIDB4ZjQsIDB4YjcsIDB4YjAsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4ZjgsIDB4MSwgMHg4YiwgMHhhOSwgMHhmOCwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDEyLCAweGY4LCAweGUxLCAweGY3LCAweDMsIDB4MTcsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDFmLCAweDEzLCAweGUwLCAweGY0LCAweDRkLCAweGY3LCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4N2EsIDB4MWUsIDB4ZmIsIDB4YWEsIDB4N2IsIDB4NiwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDQ1LCAweDU5LCAweDdkLCAweDFmLCAweGZiLCAweDcsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHg1LCAweDRkLCAweDdhLCAweDcwLCAweDc1LCAweDYzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWYsIDB4ZjcsIDB4MzAsIDB4MTUsIDB4ZjcsIDB4NCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDUsIDB4OTksIDB4OGYsIDB4OTUsIDB4YTQsIDB4YzQsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDU5LCAweDc5LCAweDlkLCAweGE1LCAweGE2LCAweDk3LCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4YWUsIDB4MWYsIDB4ZSwgMHhmNywgMHg5MiwgMHg4YiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI5LCAweGFjLCAweDZjLCAweGU5LCAweGEsIDB4MTIsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHhmLCAweDEzLCAweGQ4LCAweDhiLCAweGEsIDB4NzQsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhiNCwgMHg5MCwgMHg4YiwgMHg5NiwgMHg4ZCwgMHg5MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGI4LCAweDhlLCAweDk2LCAweDg1LCAweDc5LCAweGNiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4OCwgMHhmNywgMHgzNywgMHg4YiwgMHg3ZCwgMHg2MywgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ODUsIDB4ODAsIDB4ZmIsIDB4MzUsIDB4MWIsIDB4YjcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHg1LCAweGNlLCAweDlkLCAweDgxLCAweGE4LCAweGU5LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2UsIDB4OWEsIDB4NmYsIDB4NjcsIDB4N2MsIDB4OGIsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3NiwgMHg2MywgMHhhLCAweGMyLCAweDljLCAweDcwLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ODcsIDB4NzQsIDB4ODQsIDB4NzQsIDB4MWYsIDB4ZmIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDNhLCAweDUsIDB4NDcsIDB4NzksIDB4NjQsIDB4N2IsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhlLCAweDdkLCAweGEsIDB4ZjcsIDB4ZGMsIDB4ZTksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjcsIDB4NjQsIDB4ZWUsIDB4MywgMHg5MywgMHgxNiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDliLCAweDYsIDB4NDksIDB4OGEsIDB4ODAsIDB4YjYsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHhjNCwgMHhmNywgMHg2OSwgMHgxOCwgMHhlMywgMHhkMSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRmLCAweDc2LCAweDg2LCAweDc0LCAweDg4LCAweDdkLCAweDFmLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4ZDcsIDB4ZjcsIDB4N2UsIDB4NzksIDB4OTAsIDB4NSwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDdhLCAweDhkLCAweGZiLCAweDJkLCAweDFiLCAweGI2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4NSwgMHhlNCwgMHhhMywgMHg4YiwgMHg5NCwgMHhkYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI4LCAweGFmLCAweDdlLCAweDRjLCAweDdkLCAweDg5LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4N2QsIDB4MWYsIDB4YTAsIDB4ODksIDB4YWIsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZjLCAweDg2LCAweDdiLCAweDYsIDB4YzIsIDB4OWIsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg3OCwgMHg4NywgMHg3NCwgMHg4NSwgMHg3NiwgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZmMsIDB4MmEsIDB4NzUsIDB4M2EsIDB4ODcsIDB4ODQsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxOSwgMHhlLCAweGI2LCAweGEsIDB4YjAsIDB4ZjgsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHgxLCAweGJmLCAweGY3LCAweDIsIDB4MywgMHhmOCwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMzLCAweDE1LCAweGI5LCAweGEwLCAweDcxLCAweDY5LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ODQsIDB4OGEsIDB4ODQsIDB4MWYsIDB4ODgsIDB4N2IsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNywgMHg2ZSwgMHg3NCwgMHg4LCAweDc0LCAweDZlLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NTgsIDB4MWIsIDB4ZmIsIDB4M2UsIDB4NmIsIDB4ZjcsIDB4MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHhmNywgMHgzOCwgMHhlZCwgMHhmNywgMHg4YiwgMHhmNywgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweGY3LCAweDEsIDB4NmEsIDB4ZmIsIDB4MTcsIDB4MWYsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHhiYywgMHhmNywgMHg1OSwgMHg3YywgMHg4ZiwgMHg1LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4N2QsIDB4NzcsIDB4NjQsIDB4MWIsIDB4N2MsIDB4NzAsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg2NywgMHgxZiwgMHg5MiwgMHg3MCwgMHg2YiwgMHg5MSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGZiLCAweDZhLCAweGZiLCAweDUzLCAweGZiLCAweDU5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NjAsIDB4YTgsIDB4ZmIsIDB4NmIsIDB4ZjcsIDB4OWMsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHhhMSwgMHhiMywgMHhjYiwgMHgxZiwgMHhiOCwgMHhmNywgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4Y2IsIDB4OWMsIDB4YWEsIDB4OWQsIDB4YzAsIDB4MWIsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5ZSwgMHg3LCAweGUsIDB4ZjgsIDB4MSwgMHhhMCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI5LCAweGI1LCAweGY3LCAweGQyLCAweDc3LCAweDEyLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGEsIDB4ZmIsIDB4OGEsIDB4ZjksIDB4OWIsIDB4ZmIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YiwgMHgxMywgMHhmNCwgMHg4MywgMHgxNiwgMHhmNywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDYsIDB4NjgsIDB4NmQsIDB4OWEsIDB4YjEsIDB4OTIsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg4ZCwgMHg5NCwgMHgxZiwgMHgxMywgMHhlOCwgMHhjNywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDUsIDB4ZjcsIDB4YjEsIDB4NiwgMHg1MCwgMHhmYiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NGIsIDB4NzksIDB4NTUsIDB4NzcsIDB4NjgsIDB4MWIsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDY0LCAweDZiLCAweDliLCAweGI0LCAweDkyLCAweDhjLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4OTMsIDB4MWYsIDB4ZjcsIDB4MywgMHhmOCwgMHgzYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHhhOSwgMHhhYSwgMHg4ZCwgMHhhZSwgMHgxYiwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YmIsIDB4OWIsIDB4NzMsIDB4NmMsIDB4NzgsIDB4ODcsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg3NywgMHgxZiwgMHg2MiwgMHhmYiwgMHgyZSwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4NiwgMHhiNSwgMHhmNywgMHgyZSwgMHg1LCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhiZiwgMHg4ZCwgMHhhOSwgMHgxYiwgMHhjNCwgMHhhLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4NzQsIDB4NmMsIDB4NzgsIDB4ODYsIDB4NzYsIDB4ODUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHg0LCAweGZjLCAweDNhLCAweDUsIDB4NGQsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg3NSwgMHg2OSwgMHgxYiwgMHhlLCAweDczLCAweGNiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHhmOCwgMHgxYywgMHgzLCAweDgzLCAweDE2LCAweGY3LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NiwgMHg1OSwgMHg3ZCwgMHhhNCwgMHhhYSwgMHg5ZSwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDkwLCAweDlkLCAweDFmLCAweGY3LCAweDEsIDB4ZjgsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGVjLCAweGE2LCAweGEyLCAweDlkLCAweGI2LCAweDFiLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiOSwgMHg5ZCwgMHg3NiwgMHg3MiwgMHg3NiwgMHg4OCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDc0LCAweDFmLCAweDIwLCAweGZjLCAweDFjLCAweDUsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg3OCwgMHg3YywgMHg1YywgMHgxYiwgMHhlLCAweGUyLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NmMsIDB4ZjcsIDB4MjIsIDB4ZjgsIDB4YTUsIDB4NzcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHhlOCwgMHgxMywgMHhiMCwgMHhmNywgMHg4MSwgMHhmOSwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGMzLCAweDlkLCAweDc2LCAweDZkLCAweDc4LCAweDg2LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4NzUsIDB4MWYsIDB4ZmIsIDB4MTUsIDB4ZmMsIDB4NWIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDg1LCAweDgyLCAweDY5LCAweDY5LCAweDFiLCAweDZhLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4YTIsIDB4OGMsIDB4MWYsIDB4OTEsIDB4OGMsIDB4OTIsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgxMywgMHg3MCwgMHhhNCwgMHg3NSwgMHhhMSwgMHg3MSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDc0LCAweDZjLCAweDRlLCAweGM3LCAweDcwLCAweGMwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4YjIsIDB4ZjMsIDB4ZjUsIDB4YTgsIDB4MWUsIDB4ZWEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHg1LCAweGQ5LCAweGEyLCAweDk5LCAweGIwLCAweGMwLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4ZmIsIDB4OTIsIDB4NywgMHhlLCAweGY3LCAweGNhLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4ZTYsIDB4YjAsIDB4ZjcsIDB4YWEsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGY5LCAweDVmLCAweDMsIDB4OTIsIDB4MTYsIDB4ZjcsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg2LCAweDUyLCAweDdlLCAweDlkLCAweGFhLCAweDlhLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OTEsIDB4YTAsIDB4MWYsIDB4YzcsIDB4ZjcsIDB4NmYsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhmNywgMHg3LCAweGZiLCAweDVhLCAweDUsIDB4OWEsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg2YywgMHg3MywgMHgxYSwgMHg3MywgMHg3YiwgMHg3OSwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDdiLCAweGY3LCAweGE3LCAweDliLCAweDcsIDB4NWQsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhiYywgMHg2ZiwgMHgxZiwgMHhmYiwgMHg0MiwgMHhmNywgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGMwLCAweGY3LCAweDc2LCAweDUsIDB4OTAsIDB4OTIsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhhOCwgMHgxYiwgMHg5YiwgMHhmYiwgMHg3MiwgMHg3YiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4OTcsIDB4ODMsIDB4N2EsIDB4NzIsIDB4M2YsIDB4NGIsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHgxZiwgMHhmYiwgMHgyNCwgMHgyNiwgMHg4NSwgMHg4YywgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMxLCAweDUsIDB4ZTAsIDB4YTMsIDB4YTUsIDB4OWYsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhjNCwgMHhhLCAweGMzLCAweGEwLCAweDdiLCAweDcwLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4NzYsIDB4ODQsIDB4NzMsIDB4MWYsIDB4ZmIsIDB4NywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDUsIDB4MzgsIDB4NzQsIDB4ODEsIDB4NzUsIDB4NTIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDZlLCAweGEsIDB4NTgsIDB4NTksIDB4OGIsIDB4YjIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg5MCwgMHg4ZCwgMHg5MSwgMHgxZiwgMHhmNywgMHhkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NSwgMHhjZCwgMHg5ZCwgMHhhNSwgMHhiMSwgMHhjZCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweGEsIDB4YzcsIDB4OWMsIDB4NzksIDB4NmUsIDB4N2IsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg4NSwgMHg3NSwgMHgxZiwgMHhmYiwgMHhmLCAweGZjLCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0ZCwgMHg3YSwgMHg2YSwgMHg3ZiwgMHg2YywgMHgxYiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NzAsIDB4Y2IsIDB4YSwgMHg3OSwgMHhmYSwgMHhmLCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4ZjcsIDB4NDksIDB4ZjcsIDB4MjAsIDB4ZjcsIDB4YTUsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGU0LCAweGEsIDB4NTUsIDB4N2QsIDB4YTQsIDB4YWIsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgMHhhNiwgMHg5MiwgMHhhMywgMHgxZiwgMHhmNSwgMHhmOCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OGYsIDB4NiwgMHhjNywgMHhmYywgMHhhYywgMHg1LCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmOCwgMHg4LCAweGY4LCAweGJkLCAweDUsIDB4OGUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGMsIDB4ZmMsIDB4NDUsIDB4NSwgMHg1NywgMHg3ZCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDMyLCAweDFiLCAweGU2LCAweGEsIDB4NGQsIDB4N2EsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg5YywgMHg5MiwgMHg5ZiwgMHg5MSwgMHhhMSwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYsIDB4ZjgsIDB4NGYsIDB4NSwgMHhjYSwgMHg5YywgMHhhOCwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweDFiLCAweDliLCAweGZiLCAweDNiLCAweDcsIDB4ZmIsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg3ZCwgMHg1LCAweDg4LCAweDYsIDB4NTQsIDB4ZjgsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDQ5LCAweDdiLCAweDYsIDB4YzIsIDB4OWUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg4MiwgMHg4MCwgMHg2YywgMHg4MCwgMHg2MywgMHgxZiwgMHgyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDgsIDB4NSwgMHhmYiwgMHg4LCAweDZhLCAweDZiLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MWIsIDB4ZSwgMHhmNywgMHhjYSwgMHg5MSwgMHg3NiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDMyLCAweDc3LCAweGY4LCAweDk3LCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWEsIDB4YWEsIDB4MTMsIDB4NzgsIDB4NzcsIDB4ZTQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDdiLCAweGExLCAweGFhLCAweGE5LCAweDlhLCAweGIwLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4MWYsIDB4ZWUsIDB4ZjcsIDB4ZmUsIDB4NSwgMHg4ZiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjgsIDB4ZjcsIDB4NzgsIDB4ZmMsIDB4YjQsIDB4NSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MjQsIDB4ZjgsIDB4OGIsIDB4NSwgMHhmNywgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4YTAsIDB4YTcsIDB4YmIsIDB4MWIsIDB4ZWIsIDB4YSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YzMsIDB4OWEsIDB4NzcsIDB4NmQsIDB4NzksIDB4N2MsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg2NywgMHgxZiwgMHgzMywgMHhmYiwgMHhkZSwgMHg1LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg2MiwgMHhmOCwgMHg4MywgMHg1LCAweGZiLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NiwgMHhiNCwgMHhhNywgMHg3OCwgMHg2NiwgMHg5YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIsIDB4ZmMsIDB4MzUsIDB4NSwgMHhmYiwgMHgxNiwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDc5LCAweDVmLCAweDFiLCAweGUsIDB4YmYsIDB4YSwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YzcsIDB4ZjcsIDB4NzMsIDB4MTUsIDB4ZmIsIDB4NTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg1OCwgMHhlMCwgMHhmNywgMHg3NCwgMHhmNywgMHg1MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweGY3LCAweDVkLCAweGY3LCAweDNjLCAweDI0LCAweGQ0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHhmYiwgMHg0NywgMHhmYiwgMHg4MSwgMHhmYiwgMHg3MiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDFlLCAweGY0LCAweDVkLCAweDE1LCAweGY3LCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHhkYSwgMHhmNywgMHg1YSwgMHhlYSwgMHhhNiwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGZiLCAweGUsIDB4MzAsIDB4ZmIsIDB4ZTUsIDB4ZmIsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxNiwgMHg4NiwgMHhmNywgMHgxZiwgMHhhMiwgMHgxZSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4YSwgMHhmNywgMHhjNSwgMHhhZiwgMHhmNywgMHhhZSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjgsIDB4OGEsIDB4ZjIsIDB4MywgMHg4YiwgMHg0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OWIsIDB4NiwgMHg1OSwgMHg3ZCwgMHg5ZCwgMHhhYSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGExLCAweDkyLCAweGE0LCAweDFmLCAweGJiLCAweGY3LCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg4NiwgMHhhMSwgMHg5OSwgMHg4OCwgMHhkMSwgMHgxYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGM0LCAweGY3LCAweGUsIDB4ZDUsIDB4ZjcsIDB4MmIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHg4YywgMHg1ZiwgMHgxZiwgMHhmYiwgMHg4YywgMHg3YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4OWMsIDB4NzksIDB4NzAsIDB4NzYsIDB4ODMsIDB4NmYsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHgxZiwgMHgyMiwgMHhmYywgMHgxNCwgMHg1LCAweDRiLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4NTgsIDB4NGIsIDB4MWIsIDB4ZjcsIDB4OGYsIDB4ZjcsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHhhLCAweDliLCAweGE5LCAweDFiLCAweGY3LCAweDIsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg0MSwgMHhmYiwgMHgxZiwgMHgyOCwgMHg3MCwgMHgzYSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDhlLCAweDhlLCAweDc4LCAweDFmLCAweGUsIDB4ZjgsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDRhLCAweGNmLCAweDczLCAweGY3LCAweDJmLCAweDZhLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZmMsIDB4YWMsIDB4MTIsIDB4ODYsIDB4YSwgMHgxMywgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweGZiLCAweDJlLCAweDE1LCAweDk1LCAweDdjLCAweDUsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhhYywgMHg5MSwgMHhhYSwgMHgxYiwgMHhhZCwgMHhhYywgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGIyLCAweDFmLCAweDEzLCAweGJjLCAweDgxLCAweGFlLCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4YmMsIDB4MWIsIDB4YmEsIDB4ZjcsIDB4MjgsIDB4YTUsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMiwgMHgxZiwgMHg3YywgMHg5NiwgMHg1LCAweDYyLCAweDYzLCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MjYsIDB4MWIsIDB4NzUsIDB4NzIsIDB4OTEsIDB4OTIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHgzYywgMHg1YSwgMHg5OCwgMHg1MywgMHg5YywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweGM4LCAweGM0LCAweDE4LCAweGFlLCAweGEsIDB4ZjcsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHhhLCAweGZiLCAweDY2LCAweGZiLCAweDcxLCAweGZiLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4NDQsIDB4ZGIsIDB4N2MsIDB4MWYsIDB4MmEsIDB4MzYsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg0NCwgMHg1OCwgMHg4LCAweGY1LCAweGY3LCAweGViLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTYsIDB4ZWYsIDB4ZjcsIDB4Y2UsIDB4ZjcsIDB4NWEsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg0NSwgMHgzMCwgMHhmYiwgMHhlLCAweDJiLCAweGZiLCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWYsIDB4ZmIsIDB4MTYsIDB4OGIsIDB4ZjcsIDB4MjksIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDdkLCAweGEsIDB4ZjcsIDB4ZTEsIDB4YTcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhhOSwgMHgxLCAweGY4LCAweDc3LCAweGY0LCAweDMsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHg4OCwgMHg5YiwgMHg2LCAweDViLCAweDc4LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4OWEsIDB4OGYsIDB4YTAsIDB4OTIsIDB4YTMsIDB4MWYsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NSwgMHhjYywgMHg4NiwgMHhmNywgMHhmLCAweGZiLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHgyOCwgMHg5YiwgMHg2LCAweDU3LCAweDc0LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4N2UsIDB4MWYsIDB4MzMsIDB4ZjcsIDB4N2UsIDB4NSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIzLCAweGM0LCAweGY3LCAweGIsIDB4ZjcsIDB4MjQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg4YiwgMHg2NywgMHgxZiwgMHhmYiwgMHg4YywgMHg3YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4OWYsIDB4N2IsIDB4NzIsIDB4NzksIDB4ODUsIDB4NzQsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHgxZiwgMHhmYiwgMHg3LCAweGZjLCAweDMwLCAweDUsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg4MCwgMHg2MiwgMHg0ZiwgMHgxYiwgMHhmNywgMHg5NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweDE1LCAweGNjLCAweGY3LCAweDc5LCAweDUsIDB4OWQsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg5NSwgMHhiOCwgMHgxYiwgMHhjNCwgMHhjOSwgMHg3NCwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDY2LCAweDNkLCAweGZiLCAweDI0LCAweDcwLCAweDgzLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4NzMsIDB4MWYsIDB4ZSwgMHg3OSwgMHhhZSwgMHg3NiwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDc2LCAweGY5LCAweDFjLCAweGFjLCAweDhjLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4MzAsIDB4YjksIDB4YSwgMHg5YywgMHg4NCwgMHg4MywgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweDkwLCAweDgxLCAweGE0LCAweGE4LCAweDgwLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4YSwgMHgxMywgMHg0OCwgMHhiMywgMHhmNywgMHg1YiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NiwgMHg3OSwgMHg3ZiwgMHg3OCwgMHg4MywgMHg3NCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDdiLCAweDk0LCAweDkyLCAweDcyLCAweDFmLCAweDEzLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4N2IsIDB4NzcsIDB4OGYsIDB4NzAsIDB4NjQsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWIsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4ZmUsIDB4YWUsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDE2LCAweGY3LCAweGI2LCAweDliLCAweDYsIDB4NDksIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhhYywgMHg5YywgMHg5MSwgMHhhMCwgMHg5MiwgMHhhMywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFhLCAweGY4LCAweDdjLCAweDUsIDB4ZjcsIDB4MTIsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgzYywgMHg3ZiwgMHg4YSwgMHg3ZCwgMHg4OSwgMHg3YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDg5LCAweGI3LCAweGY3LCAweDM3LCAweDUsIDB4ZmMsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDYxLCAweGZiLCAweDJlLCAweDlkLCAweDg3LCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGM1LCAweGJkLCAweDhiLCAweGY3LCAweDE2LCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZmMsIDB4N2MsIDB4NSwgMHg0OSwgMHg3OSwgMHg2MCwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDFiLCAweGUsIDB4YWEsIDB4YSwgMHg3NywgMHgxLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjgsIDB4YSwgMHhmNywgMHg1YiwgMHgzLCAweGY3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MTEsIDB4MTUsIDB4YmUsIDB4YTIsIDB4N2IsIDB4NjcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHgyOCwgMHhmYiwgMHhhZiwgMHg3YywgMHhhLCAweGY3LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4ZjcsIDB4MCwgMHhmNywgMHgyOSwgMHhiNywgMHgxZSwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUzLCAweDUsIDB4OWQsIDB4OTAsIDB4YTcsIDB4YjgsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhlYiwgMHhhLCAweDdiLCAweDcsIDB4YWUsIDB4YWEsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHg3OSwgMHgzZCwgMHhmYiwgMHhiMiwgMHg4MywgMHg2YywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDZmLCAweDU2LCAweGZiLCAweDksIDB4ZmIsIDB4MWEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHg0MCwgMHhhYiwgMHhlNCwgMHhjMSwgMHhlZiwgMHhmNywgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGI4LCAweDFmLCAweGFmLCAweDk3LCAweGIwLCAweDliLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZDIsIDB4YSwgMHhlLCAweGY3LCAweDkyLCAweDhlLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MzMsIDB4NzcsIDB4MSwgMHhkNywgMHhmOCwgMHhmOCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODQsIDB4NzksIDB4MTUsIDB4OWUsIDB4NiwgMHhmNywgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDk0LCAweDUsIDB4OTUsIDB4OTEsIDB4Y2EsIDB4ZjcsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHgxYiwgMHg5YiwgMHhmYiwgMHg0ZSwgMHg3YiwgMHg3LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4NzUsIDB4NzksIDB4NjksIDB4NmUsIDB4NWIsIDB4N2QsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHg2MiwgMHhmYiwgMHhmOCwgMHg1LCAweDg2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHhmNywgMHhmYiwgMHg1LCAweDg3LCAweGExLCAweDg1LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MWEsIDB4YjEsIDB4OWMsIDB4YWIsIDB4Y2MsIDB4MWUsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4NSwgMHg3YiwgMHg3LCAweGJjLCAweDhlLCAweDc1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHg5ZiwgMHgxZiwgMHhlLCAweGY4LCAweDcwLCAweDhlLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MzMsIDB4NzcsIDB4MSwgMHhkMiwgMHhmOSwgMHhkNywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjgsIDB4NzksIDB4MTUsIDB4OWUsIDB4NiwgMHhmNywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDVhLCAweDUsIDB4OTAsIDB4NiwgMHhiZCwgMHhmYywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OWYsIDB4NiwgMHhmNywgMHhjMCwgMHhmOCwgMHhkMSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4YTYsIDB4YTksIDB4YTksIDB4YTAsIDB4MWIsIDB4OWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg3YiwgMHg3LCAweGJlLCAweDk5LCAweDczLCAweDc1LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4N2EsIDB4ODksIDB4ODcsIDB4MWYsIDB4ZmIsIDB4NTgsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1LCAweDg4LCAweDYsIDB4NWMsIDB4ZjgsIDB4MjQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDhiLCAweDkwLCAweDhmLCAweDFhLCAweGFhLCAweGIyLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MWUsIDB4OWIsIDB4ZmIsIDB4ODIsIDB4N2IsIDB4NywgMHhjNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDc0LCAweDVlLCAweDkwLCAweDFmLCAweDkyLCAweDUwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4ZmIsIDB4ZWIsIDB4NSwgMHg4OCwgMHg2LCAweDg3LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4ZjcsIDB4ZmQsIDB4NSwgMHg4YSwgMHg5MywgMHg4YiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDFhLCAweGI0LCAweGI4LCAweDljLCAweGFhLCAweDFlLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODAsIDB4N2IsIDB4NywgMHhjMSwgMHg5OCwgMHg1ZiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDFmLCAweGUsIDB4ZjcsIDB4OTIsIDB4Y2IsIDB4YSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDQwLCAweDMsIDB4NmUsIDB4MTYsIDB4ZjcsIDB4NmEsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDYxLCAweDc1LCAweDlhLCAweGEwLCAweDk4LCAweDkxLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4OWMsIDB4MWYsIDB4ZjcsIDB4MmIsIDB4ZjcsIDB4NDAsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0NywgMHg1LCAweDhmLCAweDgxLCAweDhkLCAweDgxLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NzMsIDB4NzksIDB4NzYsIDB4NTEsIDB4MWUsIDB4ZTYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDY3LCAweDk1LCAweGNiLCAweDcyLCAweDFmLCAweDI1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4ZjcsIDB4NGQsIDB4ZjcsIDB4NjgsIDB4NSwgMHhiZSwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweGE1LCAweDk2LCAweDFiLCAweDliLCAweGZiLCAweDY0LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhiNCwgMHg5ZSwgMHg3ZCwgMHg3OCwgMHg3ZSwgMHg4NSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDdjLCAweDFmLCAweGZiLCAweDI1LCAweGZiLCAweDNiLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjcsIDB4NSwgMHg4MiwgMHhhMCwgMHg4NiwgMHg5ZSwgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGE0LCAweGExLCAweDliLCAweGJiLCAweDFlLCAweDliLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4N2IsIDB4NywgMHhjMiwgMHhhMiwgMHg3NiwgMHgzZiwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGU1LCAweGZiLCAweDc3LCAweGZiLCAweDMyLCAweGZiLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4N2MsIDB4N2EsIDB4N2EsIDB4MTksIDB4NTMsIDB4NTMsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg3YSwgMHgxYiwgMHhlLCAweGY3LCAweDViLCAweGNiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHhhLCAweDU4LCAweDZkLCAweDk5LCAweGIzLCAweDk0LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OGUsIDB4OTcsIDB4MWYsIDB4YzEsIDB4ZjcsIDB4NjEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhmNywgMHhhMiwgMHg1LCAweGIzLCAweGFiLCAweGE5LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4MWIsIDB4ZTgsIDB4YSwgMHhhYSwgMHhhNywgMHg3ZCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDg5LCAweDgzLCAweDg3LCAweDgxLCAweDFmLCAweDdhLCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MiwgMHhmYiwgMHgxNiwgMHg1ZSwgMHg1MywgMHg3MywgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGY1LCAweDg1LCAweGE1LCAweDgsIDB4ODksIDB4OTIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg5MSwgMHgxYSwgMHhhYSwgMHhhZiwgMHg5YywgMHhhZCwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YWYsIDB4YTMsIDB4ODIsIDB4NTIsIDB4OWIsIDB4MWYsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhMSwgMHg1MiwgMHhmYiwgMHg1ZSwgMHg1LCAweDQ5LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4NzksIDB4NjcsIDB4MWIsIDB4ZSwgMHhmNywgMHg1YiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGY4LCAweGQ5LCAweGFmLCAweDUwLCAweGEsIDB4ZSwgMHhlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YTAsIDB4ZjgsIDB4NiwgMHgzLCAweGEwLCAweGZiLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4NTAsIDB4NiwgMHg5MiwgMHhhNiwgMHg1LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg2YiwgMHg2OCwgMHg5MiwgMHhiNSwgMHg5NywgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGY5LCAweDNhLCAweDUsIDB4YTYsIDB4OTEsIDB4YTMsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHgxYiwgMHhiZiwgMHg2LCAweDkyLCAweGE2LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHg2LCAweGUsIDB4M2MsIDB4ZmIsIDB4MTMsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHg3NiwgMHhmOSwgMHg0YiwgMHg3NywgMHgxLCAweDU0LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgzLCAweGY3LCAweDZiLCAweGZiLCAweDI4LCAweDE1LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg0MSwgMHhmOSwgMHhjMiwgMHg1LCAweDY2LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGUxLCAweGEsIDB4OTcsIDB4ZjgsIDB4NiwgMHgzLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTIsIDB4MTUsIDB4ODQsIDB4NzAsIDB4NSwgMHhmNywgMHg0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4NTksIDB4ZjksIDB4YzQsIDB4NSwgMHhmYiwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODQsIDB4NzAsIDB4NSwgMHhiYSwgMHg2LCAweGFhLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4NjAsIDB4ODEsIDB4MWYsIDB4ZmIsIDB4MzUsIDB4ZmQsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDc5LCAweDg3LCAweDdkLCAweDc5LCAweDY1LCAweDFiLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHhmOSwgMHgyZSwgMHg3NywgMHhhMiwgMHg3NiwgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGY3LCAweDQxLCAweDEzLCAweDYwLCAweGY3LCAweGMxLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhhMCwgMHhjZiwgMHg2LCAweGY3LCAweDIzLCAweGY3LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4ZmIsIDB4YjIsIDB4NSwgMHhjZiwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4ZjgsIDB4MSwgMHg1LCAweDRmLCAweDYsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweGJkLCAweDEsIDB4OTQsIDB4NDAsIDB4MTUsIDB4ODIsIDB4NTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY4LCAweDgwLCAweDYsIDB4OTMsIDB4YmQsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4ZjgsIDB4OTUsIDB4NzYsIDB4ZjcsIDB4NDAsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGFjLCAweGY4LCAweDgwLCAweGI3LCAweGEsIDB4ZmIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIyLCAweGM1LCAweGEsIDB4NzksIDB4OTIsIDB4NTYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDdhLCAweDgwLCAweGEsIDB4ODAsIDB4YmMsIDB4ZjgsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgxMiwgMHg5YywgMHhkZiwgMHhmNywgMHg1OCwgMHhkNCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDE3LCAweGY3LCAweGQyLCAweGY3LCAweDFmLCAweDYxLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHhiNSwgMHhiNiwgMHhhZCwgMHhiMCwgMHhkNSwgMHhjNywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGY4LCAweDM4LCAweGEsIDB4NDUsIDB4OGEsIDB4N2EsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDg5LCAweDYsIDB4YTcsIDB4NmQsIDB4YWYsIDB4NWYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGEsIDB4YTgsIDB4YTEsIDB4NmUsIDB4NWIsIDB4MjksIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2MiwgMHgyMSwgMHg3MCwgMHg2YSwgMHg5ZCwgMHhjMCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ODAsIDB4YTIsIDB4N2YsIDB4YTIsIDB4ZjgsIDB4NSwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweGJjLCAweGY3LCAweDRmLCAweDc3LCAweDEyLCAweGEyLCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWIsIDB4ZTAsIDB4MTMsIDB4N2UsIDB4ZjcsIDB4MSwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY0LCAweGViLCAweGY3LCAweDg2LCAweGY3LCAweDIsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg1NSwgMHg2YywgMHgxZSwgMHgxMywgMHhiZSwgMHgzNywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY3LCAweGZiLCAweDFkLCAweDVjLCAweDhiLCAweGE1LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OGMsIDB4ZjgsIDB4ZWEsIDB4MTUsIDB4YjgsIDB4OWMsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg3YiwgMHg4NSwgMHg3NSwgMHg4NCwgMHg3MywgMHgxZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweGZjLCAweDg5LCAweDUsIDB4ODcsIDB4NywgMHg3NSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGMwLCAweGY3LCAweDJkLCAweGY3LCAweDNiLCAweGY3LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzIsIDB4ZDQsIDB4NWEsIDB4YmIsIDB4NDUsIDB4MzEsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHg1NywgMHg2YSwgMHgxZSwgMHg4OSwgMHg4YywgMHhhZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YjUsIDB4ZjcsIDB4NDQsIDB4YTEsIDB4ZGQsIDB4MTksIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg1NywgMHg4MSwgMHg1OCwgMHg4NCwgMHg1OSwgMHg4NSwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZTIsIDB4ODAsIDB4YWYsIDB4ZjgsIDB4MWYsIDB4YTAsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGUxLCAweGY3LCAweDcyLCAweGUyLCAweDMsIDB4ZjcsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHgxNSwgMHg2MywgMHg2NywgMHg1YywgMHg2MiwgMHg0ZiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRlLCAweDZkLCAweGI4LCAweGQ4LCAweGViLCAweGQwLCAweGRiLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg4OSwgMHg4NSwgMHg4OCwgMHg4NCwgMHgxZiwgMHg4NywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDdmLCAweDdiLCAweGEzLCAweGEsIDB4ZmIsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhmYiwgMHgyMSwgMHhmYiwgMHgxOSwgMHhkZSwgMHg3MiwgMHhjYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweGM1LCAweGQ2LCAweGFiLCAweGE0LCAweDFlLCAweGUsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg2ZiwgMHg3NiwgMHhmOCwgMHg4YSwgMHhhMiwgMHhkMywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDlhLCAweGUyLCAweDEzLCAweGI4LCAweGYxLCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlNiwgMHhlYSwgMHhmNywgMHg2OSwgMHhmNywgMHg0LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4NjIsIDB4NzQsIDB4ZmIsIDB4MTAsIDB4MjksIDB4ZmIsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg0ZSwgMHg4YiwgMHhjNSwgMHg5YywgMHgxZSwgMHhmNywgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDE1LCAweDgzLCAweDY4LCAweDg3LCAweDc0LCAweDc0LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzgsIDB4NzYsIDB4OTMsIDB4NzIsIDB4YjIsIDB4YWMsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhjZSwgMHhiNiwgMHgxZSwgMHg3ZiwgMHg5NSwgMHg1LCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NzcsIDB4NzQsIDB4NzcsIDB4MWIsIDB4ODEsIDB4ODMsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg5YiwgMHhmNywgMHhkLCAweGY4LCAweDNlLCAweGI2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4MWYsIDB4ODYsIDB4OTAsIDB4NTgsIDB4ODAsIDB4NTgsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg4NiwgMHgxOSwgMHg3YSwgMHg3LCAweGIzLCAweDlhLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NzksIDB4ODUsIDB4NzQsIDB4ODQsIDB4NzIsIDB4MWYsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOSwgMHg4OSwgMHg4OSwgMHg1LCAweGExLCAweDg3LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4NTMsIDB4MWIsIDB4MTMsIDB4MzgsIDB4ZmIsIDB4YiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweGZiLCAweDQ4LCAweGZiLCAweDJiLCAweDFmLCAweDEzLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4YTAsIDB4NDgsIDB4ZGUsIDB4YmQsIDB4YzMsIDB4OWQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGQzLCAweDFlLCAweGUsIDB4ZTIsIDB4ODAsIDB4YjgsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhhMiwgMHgxMiwgMHhhYSwgMHhlMiwgMHhmNywgMHg3OCwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGY3LCAweDE3LCAweGY3LCAweDVhLCAweDE1LCAweGEwLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlNSwgMHhhZSwgMHhkMSwgMHhkNywgMHhjMSwgMHgxYiwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDZlLCAweDc2LCAweDgzLCAweDgyLCAweGZiLCAweGMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg2MSwgMHgxZiwgMHg4NCwgMHg3NSwgMHgxNSwgMHhmNywgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGVkLCAweGUyLCAweGRhLCAweDFhLCAweGI3LCAweDZjLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4MWUsIDB4MTMsIDB4YTAsIDB4ZmIsIDB4MjEsIDB4ZmIsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHhhLCAweDFmLCAweDczLCAweGEsIDB4NjEsIDB4NTcsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHg5ZiwgMHg4YywgMHg5NSwgMHg5MCwgMHhhMCwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4ZmIsIDB4NjMsIDB4YTAsIDB4ZjgsIDB4ZDAsIDB4YWIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHhhMSwgMHgxMiwgMHhmNywgMHhlZCwgMHhkYSwgMHgxMywgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGY4LCAweDE2LCAweDE1LCAweGU1LCAweDYsIDB4MzgsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHg1LCAweDYzLCAweDgzLCAweDcxLCAweGZiLCAweGUsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3ZiwgMHg4NCwgMHg5MywgMHg5MywgMHg4ZiwgMHg4YywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDhlLCAweDFmLCAweDhlLCAweDhmLCAweDhlLCAweDhmLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YTQsIDB4NzEsIDB4OTcsIDB4N2QsIDB4NjgsIDB4OGEsIDB4NjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxZSwgMHgxMywgMHhmMCwgMHg2NSwgMHhiNywgMHg3NiwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDksIDB4YzQsIDB4ZjcsIDB4MzUsIDB4ZjcsIDB4ZSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGNlLCAweGY3LCAweGNhLCAweDUsIDB4ZjcsIDB4MSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4YWIsIDB4NSwgMHhmYiwgMHgwLCAweDYsIDB4YmUsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhmNywgMHg0ZiwgMHhkZCwgMHgxYiwgMHg5OCwgMHg5NSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDg2LCAweDg5LCAweDg4LCAweDg5LCAweDg4LCAweDFmLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ODgsIDB4ODUsIDB4N2YsIDB4MWEsIDB4ODAsIDB4OTEsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhhMiwgMHg5ZCwgMHg5ZiwgMHg5ZiwgMHg5ZiwgMHg3YiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweGZiLCAweDEyLCAweDU0LCAweGZiLCAweDQzLCAweDM2LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MmYsIDB4NiwgMHhlLCAweGZiLCAweDUyLCAweGExLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4YTAsIDB4ZjcsIDB4OGIsIDB4YTEsIDB4MTIsIDB4OTMsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhkOSwgMHhmNywgMHgyYiwgMHhjNywgMHg2YSwgMHhkYSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGY3LCAweDExLCAweGIyLCAweDE1LCAweDM3LCAweDU0LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4NTIsIDB4MWEsIDB4NTQsIDB4YzAsIDB4NTMsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFkLCAweGQ5LCAweGM4LCAweGUwLCAweGM2LCAweDY0LCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4OWYsIDB4MWUsIDB4NGYsIDB4YTYsIDB4NDUsIDB4OTMsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg5OCwgMHhhMSwgMHhhNiwgMHg5OSwgMHgxZSwgMHg5OCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDk4LCAweDFiLCAweDEzLCAweGZhLCAweGUzLCAweGVhLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4OWYsIDB4ODgsIDB4OWYsIDB4ODUsIDB4OWUsIDB4MWYsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDEzLCAweGE4LCAweGIyLCAweDRlLCAweDcsIDB4N2MsIDB4NjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg1MCwgMHgxYiwgMHgzOSwgMHhmYiwgMHg4LCAweDUxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHg0NiwgMHhiNiwgMHg3MywgMHhhZiwgMHg3YiwgMHgxZiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDYwLCAweDZlLCAweDZjLCAweDFhLCAweDc4LCAweDlhLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4ODIsIDB4MWUsIDB4YTEsIDB4ODAsIDB4MTUsIDB4OTIsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHg2MywgMHg5ZCwgMHg4MiwgMHg4LCAweDEzLCAweGZjLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4YWYsIDB4N2EsIDB4NWUsIDB4MWEsIDB4NTksIDB4NWEsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg3YywgMHgyYSwgMHg5YSwgMHhkZCwgMHg4YSwgMHgxZSwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGJmLCAweGM3LCAweGE0LCAweDFlLCAweGE2LCAweGY3LCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MTMsIDB4YTAsIDB4Y2UsIDB4YjcsIDB4ZjEsIDB4ZDgsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmYSwgMHhiNSwgMHg5YSwgMHg2ZSwgMHg2NCwgMHgzOCwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJiLCAweDQ5LCAweDVlLCAweDdhLCAweGFjLCAweGI4LCAweDFmLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhhLCAweGY3LCAweDg2LCAweDc3LCAweDEyLCAweGY4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHgxMywgMHg3MCwgMHg5ZSwgMHgxNiwgMHhkNiwgMHg2LCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTIsIDB4OTksIDB4YzIsIDB4YjksIDB4Y2YsIDB4OCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGUwLCAweGY3LCAweDUsIDB4YmQsIDB4MWIsIDB4OWIsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3YSwgMHgxZiwgMHg3ZSwgMHgzOSwgMHhmYiwgMHhiMywgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDEzLCAweGIwLCAweDcwLCAweDk4LCAweDc4LCAweGFiLCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4YzksIDB4YmYsIDB4YWYsIDB4MWUsIDB4MTMsIDB4MTAsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHg1LCAweDViLCAweDY1LCAweDczLCAweDZjLCAweDc3LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODMsIDB4OTIsIDB4OTcsIDB4MWYsIDB4MTMsIDB4MzgsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhmNywgMHg5NCwgMHhhZSwgMHgxYSwgMHhjYywgMHg1ZCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDMxLCAweDI1LCAweGZiLCAweDJlLCAweDU5LCAweDZjLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OGQsIDB4ZjcsIDB4YSwgMHhmOCwgMHg0YiwgMHg4NiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDdmLCAweDU2LCAweDgyLCAweDU3LCAweDg1LCAweDE5LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhiNywgMHg5YywgMHg5NCwgMHg0ZiwgMHg4MSwgMHg3YSwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDZkLCAweDFmLCAweGUsIDB4ZDcsIDB4YSwgMHhmOCwgMHhjNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDEyLCAweGJjLCAweGQ2LCAweGIwLCAweGYyLCAweDE3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4ZjcsIDB4NiwgMHg0YSwgMHhhLCAweGU3LCAweGY3LCAweGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODgsIDB4OGQsIDB4NSwgMHg4NCwgMHg2NCwgMHgzMiwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDFiLCAweDEzLCAweGYwLCAweDdiLCAweDcsIDB4YzIsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3NiwgMHgxZiwgMHg2ZiwgMHg0MCwgMHg0YiwgMHhhLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODYsIDB4MTUsIDB4NmUsIDB4YTAsIDB4ODUsIDB4YSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDZlLCAweDFlLCAweGUsIDB4M2MsIDB4ZmIsIDB4NjMsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhmMiwgMHhmOSwgMHgyNCwgMHhmMSwgMHgxMiwgMHhmYiwgMHgxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGY3LCAweDZkLCAweGYxLCAweDEzLCAweGI4LCAweGQ0LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4MTUsIDB4YzcsIDB4OGMsIDB4OTksIDB4OGMsIDB4NjEsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHhmYiwgMHhmZiwgMHg1LCAweDNlLCAweDc4LCAweDcyLCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4MWIsIDB4ODIsIDB4ODAsIDB4OGMsIDB4OTUsIDB4OTEsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4ZSwgMHg4ZiwgMHgxZiwgMHg4ZSwgMHg4ZiwgMHg4ZiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDFhLCAweDEzLCAweDc4LCAweGEwLCAweDc3LCAweDlhLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4ODcsIDB4NjgsIDB4ODcsIDB4NWEsIDB4YjgsIDB4N2MsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHhjNSwgMHhkNiwgMHhmNywgMHgzNCwgMHhiNCwgMHgxZSwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDJmLCAweDg4LCAweDhkLCAweDUsIDB4ODQsIDB4NjQsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg2OCwgMHgxYiwgMHhmMCwgMHhmNywgMHg0ZiwgMHgxNSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDc0LCAweGE3LCAweGE3LCAweGEyLCAweGEyLCAweGE3LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4YTIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4NzQsIDB4NmYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGUyLCAweDk1LCAweDc2LCAweGFiLCAweDc2LCAweGY5LCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YmEsIDB4NzcsIDB4MTIsIDB4OTksIDB4ZjgsIDB4NTMsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg5OSwgMHgxNiwgMHhkNiwgMHg2LCAweGJiLCAweGY3LCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4YWIsIDB4OTUsIDB4NmQsIDB4YjEsIDB4MzMsIDB4OTcsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHgxMywgMHhiMCwgMHg1MCwgMHhhOSwgMHg5ZCwgMHg3NCwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGI3LCAweGE4LCAweGIwLCAweGQzLCAweGIxLCAweDFmLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NSwgMHg1OSwgMHg2ZSwgMHg4MSwgMHg3OSwgMHg3NSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDc4LCAweGI5LCAweGY3LCAweDNmLCAweDQzLCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHgxZSwgMHhiNSwgMHhhYiwgMHhiOCwgMHgxYiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDliLCAweGZiLCAweDRiLCAweDdiLCAweDcsIDB4YTYsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg3OCwgMHg2YywgMHhmYiwgMHgxNCwgMHgyYiwgMHg1NCwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDg5LCAweDhkLCAweGY3LCAweGIsIDB4ZjgsIDB4NTksIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg1LCAweDdmLCAweDU3LCAweDM2LCAweDdjLCAweDc4LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4MCwgMHg3YiwgMHg3LCAweGE1LCAweGIyLCAweDgyLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2MsIDB4NzMsIDB4M2EsIDB4ODIsIDB4NjcsIDB4MWYsIDB4ZSwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDc2LCAweGY5LCAweDM1LCAweDc3LCAweGJhLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4ZDgsIDB4MTcsIDB4ZjcsIDB4NzgsIDB4ZDMsIDB4YSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDk5LCAweDkxLCAweDk2LCAweDkzLCAweGE2LCAweDhkLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjcsIDB4MmIsIDB4ZjgsIDB4ZDcsIDB4ODYsIDB4OTAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDU3LCAweDNkLCAweDdjLCAweDcxLCAweDFiLCAweDEzLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NywgMHhhNSwgMHhiMSwgMHg4MiwgMHg3MSwgMHgxZiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIxLCAweGZjLCAweDk0LCAweDc2LCAweGI1LCAweGEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDk3LCAweDc2LCAweGE5LCAweDc2LCAweGY4LCAweDE5LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4MTMsIDB4NjAsIDB4OTcsIDB4MTYsIDB4ZDYsIDB4NiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUsIDB4OWYsIDB4Y2QsIDB4YjMsIDB4YzcsIDB4OCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGQ3LCAweGYwLCAweGI4LCAweDFiLCAweDk0LCAweDk4LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzgsIDB4NDYsIDB4ZmIsIDB4OGEsIDB4NzEsIDB4MmEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHg2LCAweGE4LCAweGY3LCAweDUsIDB4OWMsIDB4Y2EsIDB4YmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHg4LCAweGJjLCAweGFhLCAweGQzLCAweGUzLCAweGI0LCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OTQsIDB4ODMsIDB4N2MsIDB4MWYsIDB4NzcsIDB4M2QsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg3MCwgMHgxYSwgMHgxMywgMHhhMCwgMHg3ZCwgMHg4YiwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGMzLCAweGJkLCAweGMzLCAweGM1LCAweGI0LCAweDFlLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4NSwgMHg1YywgMHg2NSwgMHg3MSwgMHg2YiwgMHg3OCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDg4LCAweDhlLCAweDljLCAweDFmLCAweDk5LCAweGRjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4YWQsIDB4MWEsIDB4YjMsIDB4NzQsIDB4YTYsIDB4NjcsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHgzMywgMHhmYiwgMHg4LCAweDQ1LCAweDFlLCAweDg5LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5OSwgMHhiMywgMHhhMiwgMHhkZSwgMHg5OSwgMHgxYSwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGEyLCAweDY1LCAweDM3LCAweDI0LCAweGZiLCAweDJmLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4MWUsIDB4ODksIDB4OGQsIDB4YzMsIDB4ZjcsIDB4NWEsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg1NiwgMHg4MCwgMHg1NiwgMHg4MSwgMHg1NSwgMHg4MSwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDAsIDB4N2IsIDB4NywgMHhiYywgMHg5NiwgMHg3NSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweDYwLCAweDc1LCAweDNkLCAweGZiLCAweDlhLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4MWUsIDB4ZSwgMHhiZSwgMHhhLCAweDEyLCAweGY3LCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4MTMsIDB4NzAsIDB4ODksIDB4YSwgMHgxMywgMHg5MCwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4YjAsIDB4NTEsIDB4YSwgMHgxMywgMHgwLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhjMSwgMHg5MywgMHg3NiwgMHg3YywgMHgxZiwgMHgxMywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDRhLCAweGZiLCAweDc0LCAweDZjLCAweGZiLCAweDUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDgwLCAweGEwLCAweGY4LCAweDJlLCAweGEwLCAweDkyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhmNywgMHgxYiwgMHgxNSwgMHgzOCwgMHhiYSwgMHg0YywgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJkLCAweGY3LCAweDFiLCAweGY3LCAweDQ3LCAweGY3LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHg2YSwgMHhkZiwgMHhmYiwgMHg4LCAweGZiLCAweDI2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4ZmIsIDB4MzMsIDB4ZmIsIDB4MjcsIDB4MWUsIDB4ZGYsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHhhLCAweGU0LCAweGY3LCAweDU5LCAweGY3LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhhMywgMHg1ZCwgMHg1NywgMHgyMCwgMHgzZSwgMHhmYiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDYsIDB4NTksIDB4NmIsIDB4YjEsIDB4YzQsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQ4LCAweDc2LCAweGY3LCAweDY3LCAweDc2LCAweGY4LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4NDgsIDB4YSwgMHg3MywgMHgxZiwgMHg4OSwgMHg4ZCwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweDUsIDB4OTYsIDB4OGUsIDB4ODgsIDB4OGQsIDB4ODgsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZiwgMHg3NSwgMHg1LCAweDEzLCAweDgwLCAweDhkLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhiOSwgMHg5ZSwgMHg4MSwgMHg3OSwgMHg3NiwgMHgyOSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZlLCAweDcwLCAweGZiLCAweDQsIDB4MWYsIDB4NmIsIDB4ODMsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYSwgMHhhLCAweDYxLCAweDc1LCAweDhiLCAweGQxLCAweDk0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4OWYsIDB4OWIsIDB4ZDMsIDB4OTQsIDB4YWQsIDB4OCwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTAsIDB4NzYsIDB4ZjcsIDB4NWEsIDB4YzAsIDB4ZjgsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDEsIDB4YTQsIDB4ZTEsIDB4ZjcsIDB4YTEsIDB4OTksIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJhLCAweGZiLCAweDU1LCAweDE1LCAweDdiLCAweGY3LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4NywgMHg2ZSwgMHg1YywgMHg5YSwgMHhiNSwgMHg5NywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDMwLCAweGY4LCAweGM0LCAweDUsIDB4NDIsIDB4NiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDUsIDB4ODksIDB4NiwgMHhhNSwgMHg4NSwgMHg3YiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDFiLCAweGZiLCAweDE2LCAweGZiLCAweDM1LCAweGZiLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWQsIDB4NDcsIDB4YTUsIDB4NTIsIDB4ZDgsIDB4ZTQsIDB4YzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYywgMHhkOCwgMHhjMCwgMHgxZiwgMHg4ZCwgMHg4OSwgMHgzYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDUsIDB4NWUsIDB4N2QsIDB4NmMsIDB4NzksIDB4NTQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhmNywgMHhjOSwgMHgxNSwgMHhmNywgMHg4LCAweGY3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0ZiwgMHhlOCwgMHhhYSwgMHhhOCwgMHg3NiwgMHg1ZSwgMHgyOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDAsIDB4ZmIsIDB4NjksIDB4MjIsIDB4NjgsIDB4NzYsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHgxZSwgMHhlLCAweGFiLCAweGEwLCAweDc2LCAweGY4LCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhiOCwgMHhmOCwgMHgzLCAweDMsIDB4YjgsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHg2LCAweGI0LCAweGY3LCAweDE5LCAweDk5LCAweGI4LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4OCwgMHg5YSwgMHg5MywgMHhjNywgMHhmNywgMHgzLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4OTcsIDB4OGQsIDB4ODMsIDB4ODIsIDB4OGYsIDB4MWYsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg5MiwgMHg4MSwgMHhhMSwgMHgxYiwgMHg5NiwgMHhhZiwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGFkLCAweDcyLCAweDlhLCAweDc0LCAweDRjLCAweDM5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg0NiwgMHg3MCwgMHgxZiwgMHg4MywgMHg3NywgMHg4OSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGY3LCAweDViLCAweDg4LCAweDhkLCAweDUsIDB4ODQsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHg3NywgMHg3YywgMHgxYiwgMHg3YSwgMHg3LCAweDhkLCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OGUsIDB4OTYsIDB4MWIsIDB4YTMsIDB4OTQsIDB4N2EsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg4MywgMHg2ZCwgMHg4NCwgMHg3MiwgMHgxZiwgMHhlLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4YTAsIDB4ODksIDB4NzYsIDB4ZjgsIDB4NDMsIDB4YTIsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxMiwgMHhmNywgMHgxLCAweGQ0LCAweGI5LCAweGQ3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4YzIsIDB4YSwgMHg5YSwgMHg5YSwgMHg4NiwgMHg4NiwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDEzLCAweGFjLCAweDg2LCAweDlhLCAweDk5LCAweDg3LCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YzMsIDB4ZTgsIDB4YTQsIDB4ZjcsIDB4MSwgMHhiMywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDZlLCAweGIyLCAweDFmLCAweDZiLCAweGI2LCAweDY5LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4MWEsIDB4YmMsIDB4YWIsIDB4OTQsIDB4YTEsIDB4Y2MsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHg1YSwgMHgxZSwgMHg5YiwgMHg2LCAweDEzLCAweDljLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3ZCwgMHg4MiwgMHg4ZSwgMHg4ZiwgMHg4MCwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDkwLCAweDdlLCAweDdkLCAweDkwLCAweDczLCAweDFiLCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4M2IsIDB4NmMsIDB4NjUsIDB4YTgsIDB4NjAsIDB4YTksIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhOSwgMHg2MSwgMHhhOSwgMHg2MiwgMHg2YSwgMHhiNCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhkNywgMHhhLCAweGY4LCAweDIwLCAweGFiLCAweGY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhiMCwgMHhmNywgMHg5NywgMHgzLCAweGY3LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHgxNSwgMHg2YiwgMHg3MiwgMHg2OCwgMHg1YywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDg2LCAweDgwLCAweDhlLCAweDk3LCAweDk3LCAweGE2LCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4ZjcsIDB4NzQsIDB4MWYsIDB4ZTEsIDB4NiwgMHg5MCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MzksIDB4NiwgMHhhOSwgMHhmNywgMHg2LCAweDUsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHg4OSwgMHg5MiwgMHg4NCwgMHgxYiwgMHg4MiwgMHg4NywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDg3LCAweDFmLCAweDZmLCAweDY4LCAweDU4LCAweDUzLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4OCwgMHg2YiwgMHg3YSwgMHg3NSwgMHg5MSwgMHg2ZCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDYsIDB4NDUsIDB4ZmIsIDB4OWMsIDB4NSwgMHg4NywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDRlLCAweDdjLCAweDFhLCAweDZkLCAweGE3LCAweDgxLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4YjIsIDB4YjcsIDB4ZDgsIDB4YmUsIDB4MWUsIDB4ZSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDZiLCAweDc2LCAweGY4LCAweDU4LCAweGE5LCAweGEsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhhMCwgMHhmNywgMHhlMCwgMHhmNywgMHg3NywgMHgxNSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI4LCAweDRkLCAweGEsIDB4NzIsIDB4YSwgMHg4MCwgMHg4YSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDlhLCAweDk5LCAweGI3LCAweDkwLCAweDlmLCAweDQyLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHg3YywgMHg4ZiwgMHg5ZSwgMHg5NywgMHhhYSwgMHhmNywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4ZjcsIDB4ODYsIDB4MWYsIDB4ODgsIDB4OGQsIDB4NSwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDM3LCAweDdjLCAweDdiLCAweDFiLCAweDEzLCAweDUwLCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHg2MCwgMHhhNiwgMHhhLCAweGUyLCAweDhlLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NWYsIDB4NzcsIDB4MTIsIDB4ZjcsIDB4MWMsIDB4ZDIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhiZSwgMHgxNywgMHhmNywgMHg2MywgMHhkMSwgMHgxNSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDgzLCAweGY3LCAweDMyLCAweDY5LCAweGY3LCAweDE3LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg4NiwgMHg4YSwgMHg4YywgMHg4MSwgMHg4NywgMHhmYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4N2QsIDB4MWIsIDB4N2UsIDB4NywgMHhiYywgMHhhMiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQsIDB4YTAsIDB4MWYsIDB4OWIsIDB4MzQsIDB4OTEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg2ZSwgMHgxYSwgMHg3YSwgMHg4YiwgMHg3ZSwgMHg5NCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDUwLCAweDlhLCAweDlkLCAweDlmLCAweGQyLCAweGNkLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4YWUsIDB4ZjcsIDB4MjksIDB4ZjcsIDB4NDYsIDB4ZTcsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHg3MywgMHhhNSwgMHg2YSwgMHg3NywgMHg3YiwgMHg3ZCwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDkzLCAweDgwLCAweDk0LCAweDgzLCAweDFlLCAweDk3LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ODUsIDB4NzUsIDB4MWEsIDB4NTksIDB4M2IsIDB4ZmIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDUwLCAweDFlLCAweGUsIDB4ZjcsIDB4Y2EsIDB4OGUsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg1ZSwgMHg3NywgMHhhMCwgMHg3NywgMHgxMiwgMHhmNywgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4ZjcsIDB4MzgsIDB4Y2EsIDB4ZjcsIDB4NDksIDB4YmIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHhmNywgMHg1MiwgMHhmNywgMHgxNSwgMHgxNSwgMHg5ZCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweDc5LCAweGYwLCAweDFlLCAweGMxLCAweDgxLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4ODUsIDB4ODIsIDB4MjksIDB4NzMsIDB4NzcsIDB4MWIsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGM0LCAweDljLCAweDhlLCAweDMwLCAweDk0LCAweDFmLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTQsIDB4OWMsIDB4M2YsIDB4ZmIsIDB4MmYsIDB4MWEsIDB4N2QsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg2YSwgMHg5OCwgMHgxYiwgMHg5YSwgMHg5MiwgMHhhMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGVjLCAweDFmLCAweGI4LCAweGRhLCAweGEzLCAweGI1LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4OCwgMHg4ZCwgMHg2LCAweGE4LCAweGZiLCAweGQwLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg4YywgMHg4YiwgMHg3ZCwgMHg5NiwgMHgxYiwgMHg5NiwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGJiLCAweGIzLCAweDFmLCAweGI5LCAweGMxLCAweGY3LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTcsIDB4ZTIsIDB4MWEsIDB4YTgsIDB4N2IsIDB4YTYsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg4MiwgMHg3OSwgMHg3YSwgMHg3YSwgMHg5NiwgMHg4MiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDFlLCAweDk2LCAweDgxLCAweDk1LCAweDgxLCAweDc5LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4M2UsIDB4MmEsIDB4MzMsIDB4ZmIsIDB4MSwgMHgxZSwgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGZiLCAweDUsIDB4MTMsIDB4ZGMsIDB4OGQsIDB4OGEsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg4NCwgMHgxYiwgMHg4NSwgMHg4OCwgMHg4NywgMHg4NiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZiLCAweDUzLCAweGZiLCAweGMyLCAweDUsIDB4ZSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGMyLCAweGY4LCAweDIxLCAweDc3LCAweDEsIDB4NzAsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHgzLCAweGY3LCAweDYyLCAweGY3LCAweDQ0LCAweDE1LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YywgMHg1LCAweDU2LCAweDk4LCAweDlhLCAweDdkLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YTIsIDB4YTgsIDB4OGIsIDB4ZjcsIDB4NiwgMHhkMiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDkzLCAweDUsIDB4NmQsIDB4NzAsIDB4NzcsIDB4NjYsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3NywgMHg4NCwgMHhhNCwgMHg5YiwgMHg4NywgMHgxZiwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDY5LCAweGY3LCAweDFjLCAweDlkLCAweDFhLCAweDhiLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZCwgMHhhOCwgMHg5NiwgMHg5MiwgMHg4NywgMHg4NywgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDg3LCAweDkzLCAweDkzLCAweDg2LCAweDk3LCAweDFiLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OWUsIDB4OWQsIDB4YTMsIDB4NzUsIDB4OTcsIDB4NzgsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg0ZSwgMHgzOSwgMHg1NywgMHgxZiwgMHg4MCwgMHhjMiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4NzksIDB4N2MsIDB4OGIsIDB4NzUsIDB4MWIsIDB4NmIsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg4MiwgMHg3MCwgMHgxZiwgMHg4ZiwgMHg3YywgMHg1LCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4OTksIDB4OGUsIDB4OTQsIDB4MWIsIDB4YTYsIDB4OTcsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg5NCwgMHgxZiwgMHg4YywgMHg4NiwgMHhhNSwgMHhmYiwgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4MWEsIDB4ZmIsIDB4MTcsIDB4MzEsIDB4NzEsIDB4NjksIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg4MiwgMHg4MiwgMHg5MCwgMHg5MCwgMHg4MSwgMHgxZiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDgxLCAweDhmLCAweDgwLCAweDFiLCAweDc1LCAweDdmLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4NzMsIDB4OWIsIDB4NzgsIDB4YWMsIDB4YWEsIDB4OTcsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg5YywgMHgxZiwgMHhhZCwgMHhiMCwgMHhiNSwgMHhjMSwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweDgsIDB4ZSwgMHhlMiwgMHhmYiwgMHg0ZCwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDc3LCAweDEyLCAweGY4LCAweDFkLCAweGM3LCAweGEsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg1ZCwgMHhmNywgMHgxMSwgMHg3ZSwgMHg3ZSwgMHhmYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDg2LCAweDFiLCAweDEzLCAweGUwLCAweDk4LCAweGEsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHhlMiwgMHhhLCAweGFlLCAweGZiLCAweDJmLCAweDdhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg4NSwgMHg5MCwgMHg5MSwgMHg4MywgMHgxZiwgMHg5MywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDk0LCAweDdhLCAweDk2LCAweGEsIDB4NzAsIDB4YSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDgzLCAweDk3LCAweDgzLCAweDFmLCAweDlhLCAweDgyLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4NzQsIDB4YTcsIDB4YSwgMHhlLCAweGFiLCAweDRmLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NTUsIDB4YzcsIDB4MSwgMHhiYSwgMHhhLCAweGIxLCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4NzQsIDB4YjIsIDB4MWYsIDB4NzgsIDB4YWMsIDB4YWQsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhhZiwgMHhhLCAweDgxLCAweDhlLCAweDgzLCAweDhlLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGYsIDB4ODMsIDB4OGYsIDB4ODUsIDB4ODUsIDB4MWEsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg4OCwgMHg3ZiwgMHg4MSwgMHg3NCwgMHg4YiwgMHhhYywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGNlLCAweDVmLCAweDUwLCAweGFjLCAweDZiLCAweDFiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4ZjcsIDB4ZWMsIDB4NSwgMHhjYSwgMHhhLCAweDhlLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZGQsIDB4MWUsIDB4ZjcsIDB4MWMsIDB4NiwgMHhlLCAweGRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiZSwgMHhkNiwgMHg4MiwgMHhkNiwgMHgxMywgMHhlMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweGZiLCAweDNhLCAweDE1LCAweDZiLCAweDkzLCAweDc2LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MWEsIDB4MTMsIDB4ZDAsIDB4YjMsIDB4Y2QsIDB4ZjcsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHgxYSwgMHhiMywgMHg2OSwgMHg5YiwgMHg3OCwgMHg5MywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDhkLCAweGNmLCAweDljLCAweGEyLCAweGIyLCAweDllLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4YjgsIDB4ZjcsIDB4M2MsIDB4NSwgMHhlNiwgMHhhMywgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGFiLCAweDFiLCAweDhlLCAweDk2LCAweDUsIDB4MmYsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHhmYiwgMHhjLCAweDY5LCAweDFmLCAweDVhLCAweGZiLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NGIsIDB4NzcsIDB4NWUsIDB4NDUsIDB4NzksIDB4MTksIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg5NCwgMHg3OCwgMHg2ZCwgMHgxYSwgMHgxMywgMHhlMCwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ5LCAweGZiLCAweDQ5LCAweDVhLCAweDFhLCAweDU0LCAweGFhLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4MWUsIDB4ZSwgMHgzOSwgMHhmYiwgMHgyNywgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGUwLCAweGEsIDB4OWEsIDB4ZmIsIDB4M2MsIDB4MTUsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDZjLCAweGY5LCAweGQ2LCAweDUsIDB4NjIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZGQsIDB4YSwgMHhmNywgMHhhNiwgMHhkNiwgMHg0MiwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGQwLCAweDg3LCAweGZiLCAweDNhLCAweDE1LCAweDg4LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlNywgMHhjOSwgMHg5YSwgMHhmNywgMHhjLCAweGFjLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4ZjcsIDB4M2UsIDB4OWMsIDB4Y2IsIDB4YTAsIDB4YjgsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHgxOSwgMHg2MCwgMHg5OSwgMHg4MiwgMHg5ZSwgMHhhOSwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGUwLCAweGM0LCAweGNkLCAweGY3LCAweDQ5LCAweGJjLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4NmMsIDB4YTYsIDB4MmQsIDB4MWUsIDB4ODgsIDB4ODAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGFhLCAweDczLCAweDVkLCAweDFmLCAweDEzLCAweGQwLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4ZmIsIDB4NjEsIDB4NjIsIDB4MWEsIDB4NjMsIDB4YWQsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg4MywgMHgxZSwgMHg4YSwgMHg4OSwgMHg0NywgMHg3YSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDc4LCAweDQzLCAweDE5LCAweDVlLCAweGZiLCAweDNjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg3MywgMHg1NiwgMHg2OSwgMHg2YiwgMHgxYiwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4ZjcsIDB4NGYsIDB4Y2IsIDB4NWMsIDB4NzYsIDB4ZDMsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg3NywgMHgxMiwgMHhiMywgMHhmOCwgMHg2MiwgMHgxMywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGY3LCAweDRiLCAweDE1LCAweGFlLCAweDliLCAweGEzLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4MWIsIDB4YjksIDB4YTksIDB4N2QsIDB4N2IsIDB4YTcsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg5OCwgMHg3OSwgMHhhYywgMHhhOSwgMHg3NywgMHhiZCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGFjLCAweGI3LCAweGI1LCAweGE5LCAweDFmLCAweDY3LCAweGJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2OCwgMHg3NCwgMHg3MiwgMHg2NiwgMHg2MywgMHgxYiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDk5LCAweDliLCAweDZjLCAweDFmLCAweDEzLCAweDY4LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4NjYsIDB4OWYsIDB4NWYsIDB4MWIsIDB4NDgsIDB4NjcsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg3NSwgMHgxZiwgMHhlLCAweGFiLCAweGZiLCAweDRjLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZDAsIDB4ZjUsIDB4MSwgMHhmNywgMHg2YywgMHhmNSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmMsIDB4ZjgsIDB4MzgsIDB4MTUsIDB4NmUsIDB4YTMsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhhOCwgMHhhMywgMHhhMywgMHhhOCwgMHhhOCwgMHg3MywgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDZlLCAweDczLCAweDczLCAweDZlLCAweDFlLCAweDk0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4MTUsIDB4NTEsIDB4ZmIsIDB4MzIsIDB4NTgsIDB4ZmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGZiLCAweDEwLCAweDgsIDB4ODQsIDB4NzgsIDB4ODUsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgxYSwgMHg3NSwgMHg5ZSwgMHg3NiwgMHg5ZCwgMHhiNSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGMwLCAweDk2LCAweDFlLCAweGE1LCAweGY3LCAweDEwLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTgsIDB4YWQsIDB4ZjcsIDB4MzUsIDB4OCwgMHhlLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ODAsIDB4NzYsIDB4ZjgsIDB4M2MsIDB4YTIsIDB4MTIsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHgxMywgMHhiMCwgMHhmNywgMHgxZCwgMHhmYiwgMHgyMywgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YmEsIDB4ZjcsIDB4MTksIDB4NSwgMHhmNywgMHgxNiwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweGE1LCAweGE1LCAweDFmLCAweDdiLCAweDk1LCAweDUsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg1NywgMHg2MSwgMHg1NywgMHgxYiwgMHgxMywgMHg3MCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDhjLCAweDhlLCAweDgxLCAweDFmLCAweGY3LCAweDFkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4NSwgMHg5YywgMHg5ZCwgMHg4NSwgMHg3ZCwgMHg4MiwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDg3LCAweDgxLCAweDFmLCAweDg4LCAweDgyLCAweDg3LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4OTcsIDB4YSwgMHhhOSwgMHg3NCwgMHhiZCwgMHgzZSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGY3LCAweGMsIDB4NSwgMHg2ZCwgMHg2LCAweDYxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHg1LCAweDEzLCAweDUwLCAweGZiLCAweDEyLCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzIsIDB4ZmIsIDB4MWIsIDB4MWYsIDB4MTMsIDB4NzAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGQzLCAweDYzLCAweGFmLCAweDFlLCAweDljLCAweGJiLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4OWUsIDB4N2UsIDB4YWYsIDB4YmUsIDB4MWEsIDB4ZjIsIDB4ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYiwgMHhkZiwgMHgxZSwgMHhlLCAweDdiLCAweGExLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4YTksIDB4YTcsIDB4ZjcsIDB4NjEsIDB4YjUsIDB4ZjcsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHgxMiwgMHgxMywgMHhiOCwgMHhmNywgMHgzNCwgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4OTYsIDB4NjMsIDB4OGIsIDB4OGIsIDB4NzYsIDB4MWIsIDB4NDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg1ZiwgMHg3OSwgMHg1OSwgMHhhNywgMHg3NywgMHhiMiwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGFmLCAweGE2LCAweGExLCAweDFmLCAweDRlLCAweGQ2LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4YWEsIDB4MWIsIDB4ZjMsIDB4YWQsIDB4ZTUsIDB4OTIsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4MCwgMHg5NCwgMHg1LCAweDEzLCAweDc4LCAweDcwLCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4ODQsIDB4NjgsIDB4MWIsIDB4NTYsIDB4NTUsIDB4OWQsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHgxZiwgMHhiOCwgMHhlYywgMHg5MSwgMHhhNCwgMHhhNCwgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZjcsIDB4MTIsIDB4NiwgMHg5MiwgMHhiNSwgMHg1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHg2LCAweDlkLCAweGVkLCAweDk2LCAweGM5LCAweGEzLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhhMSwgMHg5NSwgMHg5YiwgMHhhYywgMHhiNCwgMHgxYiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDdlLCAweDZjLCAweDhmLCAweDFmLCAweDZkLCAweDhlLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4YTQsIDB4MWIsIDB4OWUsIDB4OWYsIDB4OTMsIDB4YWQsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHhiMCwgMHg1MCwgMHhmYiwgMHgzZSwgMHg1NiwgMHhmYiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweDgyLCAweDFmLCAweGZiLCAweDIsIDB4NiwgMHg4MiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4NSwgMHg2LCAweDYxLCAweGZiLCAweDk0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjgsIDB4NmMsIDB4ODMsIDB4NjcsIDB4NzEsIDB4NzMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg3ZiwgMHhhMCwgMHg5YiwgMHg5MCwgMHg4ZSwgMHhiMywgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweDk5LCAweDgxLCAweDdjLCAweGEwLCAweDFmLCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHhjNCwgMHhmNywgMHhhNCwgMHhjNCwgMHgxLCAweGM0LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OWMsIDB4YzgsIDB4MywgMHhmNywgMHhhLCAweGY3LCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDMsIDB4YzQsIDB4Y2EsIDB4ZDcsIDB4ZDYsIDB4YzMsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg0MSwgMHg1MywgMHg0YywgMHg0MCwgMHgzZiwgMHg1MiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDFlLCAweDQ3LCAweGZiLCAweDhhLCAweDE1LCAweGUyLCAweGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg3MywgMHhhNSwgMHhiOSwgMHg3ZiwgMHhiNywgMHgxYiwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDk3LCAweGEzLCAweGE0LCAweDFmLCAweGU0LCAweDMzLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4MzQsIDB4ZTIsIDB4NSwgMHhhMiwgMHhhNiwgMHg5NywgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDFhLCAweGI2LCAweDgwLCAweGI2LCAweDczLCAweGE2LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4ZTQsIDB4NjAsIDB4YjYsIDB4MzIsIDB4MzQsIDB4NSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweDVmLCAweDk2LCAweDYwLCAweDFiLCAweDYwLCAweDVmLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NzEsIDB4MWYsIDB4MzQsIDB4ZTIsIDB4NWUsIDB4NjAsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHg1LCAweDczLCAweDcxLCAweDdmLCAweDVmLCAweDVmLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4OTcsIDB4NjAsIDB4YTMsIDB4NzEsIDB4MWUsIDB4MzMsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4NGEsIDB4YjMsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhmNywgMHhjMSwgMHg3NywgMHgxLCAweGJmLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4OWIsIDB4NiwgMHg1MywgMHg2YSwgMHhhMCwgMHhiNywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweDkxLCAweDhkLCAweDkxLCAweDFmLCAweDkyLCAweGE3LCAweDhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4OTksIDB4YjcsIDB4OCwgMHhmNywgMHg0OCwgMHg2LCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4NSwgMHhmYiwgMHg0OCwgMHg2LCAweGEzLCAweGRkLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4NSwgMHhmNywgMHgzZSwgMHg2LCAweDk3LCAweGIzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyYiwgMHg2LCAweGY3LCAweDMyLCAweGY3LCAweDc0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhhYiwgMHhhYSwgMHhhMCwgMHg5NSwgMHgxYiwgMHhlOCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4YWIsIDB4N2MsIDB4NzQsIDB4ODQsIDB4ODksIDB4ODMsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHgxZiwgMHg3NywgMHg2NCwgMHgzNSwgMHhmYiwgMHgxYSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDcyLCAweGU3LCAweDYxLCAweGY1LCAweDg2LCAweGE1LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg5NSwgMHg4YSwgMHg5NCwgMHg5MywgMHgxYSwgMHhhYSwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweGJmLCAweGNkLCAweGEsIDB4YTMsIDB4YjcsIDB4OGQsIDB4NDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHgxZiwgMHhkNCwgMHhmYiwgMHg2ZiwgMHg1LCAweGZiLCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg3ZiwgMHg2MywgMHg1LCAweGY3LCAweDM3LCAweDYsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3NCwgMHgzYiwgMHg1LCAweGZiLCAweDM4LCAweDYsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg1LCAweGY3LCAweDM5LCAweDYsIDB4NzMsIDB4MzksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweDc3LCAweDUwLCAweDdhLCAweDZhLCAweDFiLCAweGUsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhlMCwgMHhhLCAweGY3LCAweDM2LCAweGY4LCAweDFjLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4NiwgMHhkZCwgMHhmNywgMHhhNiwgMHg1LCAweDY1LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1ZCwgMHhmZCwgMHg0MCwgMHgxNSwgMHhiNSwgMHg2LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTMsIDB4NSwgMHg1ZSwgMHg2LCAweGUsIDB4ZmIsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhmNywgMHg3OCwgMHhhMCwgMHhmNywgMHg5ZiwgMHhhMCwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM4LCAweDdjLCAweGEwLCAweDEyLCAweGMwLCAweGYyLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4YjAsIDB4YzgsIDB4YjUsIDB4YzUsIDB4YWIsIDB4YzUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHhjMCwgMHhmNywgMHhhZSwgMHhmMywgMHgxNSwgMHg4ZCwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODYsIDB4OTYsIDB4OTAsIDB4ODksIDB4YTAsIDB4MWIsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHhjMiwgMHhkMSwgMHhjNSwgMHg3MCwgMHhiMywgMHg3ZCwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZiLCAweGYsIDB4ZjcsIDB4MmEsIDB4NSwgMHg3YywgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGEzLCAweGE3LCAweDFhLCAweGNhLCAweGJhLCAweGEwLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4YTMsIDB4N2MsIDB4N2IsIDB4ODEsIDB4ODAsIDB4ODIsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHgxZSwgMHg4MywgMHg4MSwgMHg4NSwgMHg4MCwgMHg3YiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGYzLCAweGMwLCAweDc5LCAweDk4LCAweDcxLCAweGFjLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4YjcsIDB4YTAsIDB4YzAsIDB4NWMsIDB4YjksIDB4MzgsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg2MSwgMHgzNywgMHg1ZSwgMHhhMywgMHg2MCwgMHhiNiwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDg5LCAweDg4LCAweDUsIDB4OTUsIDB4NzYsIDB4NzAsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHgxYiwgMHg1NSwgMHg1NywgMHg1YSwgMHgzZCwgMHg2MCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweGI5LCAweDU2LCAweDFmLCAweGQ3LCAweDM0LCAweDUsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg5MiwgMHg3NiwgMHg2ZiwgMHgxYSwgMHg1YSwgMHg2NiwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ3LCAweDY3LCAweDZiLCAweDllLCAweDljLCAweDk1LCAweDk1LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OTQsIDB4MWUsIDB4MTMsIDB4ZWQsIDB4YzAsIDB4OTYsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg5NywgMHhhNCwgMHgxYSwgMHhhZCwgMHg3MywgMHg5NSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDhiLCAweDUxLCAweDgwLCAweDVjLCAweGJhLCAweDUxLCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZGEsIDB4YmUsIDB4ZGYsIDB4YmUsIDB4NzYsIDB4YTUsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHgxZSwgMHgxMywgMHhlYiwgMHhjMCwgMHhmYiwgMHgxYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDE1LCAweGI1LCAweGFlLCAweGEzLCAweGE5LCAweGE5LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NGEsIDB4YmUsIDB4MWUsIDB4YmYsIDB4NDksIDB4OTAsIDB4NmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgxYSwgMHg1OCwgMHg1ZiwgMHg3OCwgMHg3NSwgMHg1MiwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE3LCAweGQxLCAweDFlLCAweGUsIDB4NzMsIDB4ZjgsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHgxLCAweGY2LCAweGM2LCAweGEsIDB4MywgMHhmNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDIzLCAweGEsIDB4ZjgsIDB4MjcsIDB4NzksIDB4YjUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDlmLCAweGY3LCAweGVmLCAweDlmLCAweGYwLCAweGI1LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHhjMiwgMHhlYSwgMHhkOCwgMHhmNywgMHg4OSwgMHg5YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGMyLCAweDMsIDB4YjQsIDB4ZjcsIDB4ZDcsIDB4MTUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhmNywgMHgyOSwgMHhmYiwgMHgyYywgMHhmNywgMHg1NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweGY3LCAweDI3LCAweGY3LCAweDJjLCAweGY3LCAweDUxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4ZmIsIDB4MjcsIDB4ZjcsIDB4MmUsIDB4ZmIsIDB4NTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhmYiwgMHgyOSwgMHhmYiwgMHgyZSwgMHhmYiwgMHg1MSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDE2LCAweGY3LCAweDMzLCAweGY3LCAweDExLCAweGY3LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzUsIDB4ZjcsIDB4MzIsIDB4ZjcsIDB4MTAsIDB4ZmIsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNCwgMHhmYiwgMHgzMywgMHhmYiwgMHgxMSwgMHhmYiwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMxLCAweGZiLCAweDM0LCAweGZiLCAweDEyLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzMsIDB4MWUsIDB4ZjgsIDB4NDcsIDB4NDIsIDB4MTUsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2NiwgMHg1YSwgMHg0OSwgMHgxYiwgMHgyNiwgMHg2MiwgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweDhjLCAweDFmLCAweGViLCAweDhjLCAweGI1LCAweGQyLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZDgsIDB4YTYsIDB4NWQsIDB4NjEsIDB4OTAsIDB4MWYsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHg2LCAweDkzLCAweDg2LCAweDkzLCAweDdiLCAweDkwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4NzEsIDB4NzIsIDB4OTUsIDB4NTksIDB4MWIsIDB4ZmIsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHhmYiwgMHgxLCAweDM5LCAweGZiLCAweDIwLCAweGVhLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NiwgMHhiOSwgMHhiMiwgMHg5NSwgMHg5MiwgMHg5ZSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDhmLCAweDk0LCAweDhlLCAweDhjLCAweDk3LCAweDljLCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZSwgMHgzYSwgMHhmOCwgMHgyYSwgMHhhZCwgMHhmNywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweGI1LCAweGQ0LCAweGY3LCAweDI2LCAweGFmLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4ZjcsIDB4ODcsIDB4ZjgsIDB4N2EsIDB4MTUsIDB4ODAsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg3ZSwgMHg3ZCwgMHgxYSwgMHg4MSwgMHg5MCwgMHg3YiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGExLCAweGExLCAweGI3LCAweGIyLCAweDFlLCAweDEzLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4OTUsIDB4NSwgMHg2ZiwgMHg3MSwgMHg3ZSwgMHg4MCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDg2LCAweDhlLCAweDlhLCAweDk5LCAweDhlLCAweDFmLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4OTAsIDB4YTksIDB4YmEsIDB4ZjcsIDB4M2EsIDB4OGQsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg4YSwgMHgxOCwgMHg3ZiwgMHg2NCwgMHg1LCAweDg5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg4OSwgMHg3YSwgMHhhNCwgMHg2NSwgMHgxYiwgMHgzNSwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMsIDB4MzMsIDB4NzksIDB4OTIsIDB4NTYsIDB4ZDEsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg5ZCwgMHhjYSwgMHhiNywgMHgxZiwgMHhmYiwgMHgxMiwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGJkLCAweGNjLCAweGY3LCAweGYsIDB4ZDIsIDB4OTgsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg2NCwgMHg4NywgMHgxZSwgMHg1YSwgMHg4NiwgMHg1NywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4NGEsIDB4MWIsIDB4ODMsIDB4NzcsIDB4OTUsIDB4YWUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGNlLCAweGEsIDB4YzAsIDB4ZjcsIDB4NmMsIDB4NjgsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDc4LCAweGJiLCAweDc1LCAweGJkLCAweDFmLCAweDgxLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4YTMsIDB4ODEsIDB4OWUsIDB4YTEsIDB4YTIsIDB4OWUsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg5YywgMHg4LCAweGQ2LCAweGRjLCAweDk5LCAweGEyLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4YSwgMHhmNywgMHgzNiwgMHg4MiwgMHg2OCwgMHhhLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YzIsIDB4NzMsIDB4YzAsIDB4MWYsIDB4ODIsIDB4OWYsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg4MiwgMHg5YywgMHhhMiwgMHhhMywgMHg5ZiwgMHhhMCwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDgsIDB4ZDQsIDB4ZDksIDB4OTgsIDB4YTIsIDB4OTksIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4ZjcsIDB4ZDIsIDB4ZjcsIDB4MTUsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHhiMSwgMHgxMiwgMHhmOCwgMHg5MiwgMHhjZiwgMHg2ZCwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGUwLCAweGUxLCAweGY3LCAweGYwLCAweDE1LCAweDEzLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NjIsIDB4ZmIsIDB4ODQsIDB4YjUsIDB4ZjcsIDB4YWEsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg2LCAweGUsIDB4ZjgsIDB4MjcsIDB4NzksIDB4YjUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDlhLCAweDdjLCAweGY3LCAweDM1LCAweGZiLCAweDM1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4ZmIsIDB4M2UsIDB4ZjcsIDB4M2UsIDB4ZjcsIDB4M2IsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg1MSwgMHhiNSwgMHg3MSwgMHhiNSwgMHgxMiwgMHhiNCwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGMyLCAweGY3LCAweDM2LCAweGNiLCAweGYzLCAweGNlLCAweDRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ZjcsIDB4MmUsIDB4YzIsIDB4MTMsIDB4OTIsIDB4NzQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHhmNywgMHhkOSwgMHgxNSwgMHgxMywgMHg5NCwgMHg3NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGI0LCAweDcsIDB4MTMsIDB4OTIsIDB4NmMsIDB4YjEsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg1MiwgMHg1NiwgMHg3OCwgMHg2NSwgMHg1YSwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweGI0LCAweGZiLCAweGUyLCAweDE2LCAweGZiLCAweDUxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4ZmIsIDB4MmUsIDB4ZjcsIDB4NTQsIDB4ZjcsIDB4NTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhmNywgMHgyZiwgMHhmNywgMHg1MSwgMHgxZSwgMHgxMywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGY3LCAweDUxLCAweGZiLCAweDI3LCAweGY3LCAweDJiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4MWUsIDB4MTMsIDB4OTIsIDB4YjQsIDB4ZmIsIDB4NTQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhmYiwgMHgyYywgMHhmYiwgMHg1MSwgMHgxZiwgMHhjMiwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDkxLCAweDc0LCAweGY3LCAweDMzLCAweGY3LCAweDExLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAsIDB4ZjcsIDB4MzUsIDB4ZjcsIDB4MzIsIDB4ZjcsIDB4MTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHgzNCwgMHhmYiwgMHgzMywgMHhmYiwgMHgxMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGZiLCAweDMxLCAweDFlLCAweDEzLCAweDkyLCAweGI0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4ZmIsIDB4MTIsIDB4ZjcsIDB4MjIsIDB4ZjcsIDB4MzMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxMSwgMHhmYiwgMHg0NywgMHgxNSwgMHhmNywgMHgzNCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YzIsIDB4NzQsIDB4OWEsIDB4NywgMHg1OSwgMHg5MCwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGI2LCAweDFhLCAweDEzLCAweGEyLCAweDc0LCAweGVkLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgyZSwgMHhjYSwgMHhhNCwgMHg0NywgMHhhYiwgMHgxYiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MTMsIDB4OGEsIDB4NzQsIDB4OTQsIDB4NywgMHg3OCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGFkLCAweDcxLCAweGFmLCAweDUyLCAweGQ5LCAweDE4LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4NmMsIDB4YjgsIDB4OWEsIDB4YWQsIDB4YjEsIDB4YmUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOSwgMHg1NCwgMHhhNywgMHg1MCwgMHgxZSwgMHhmYiwgMHg0MywgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YmMsIDB4ODYsIDB4OGEsIDB4OGMsIDB4NWYsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg3LCAweDYwLCAweDhjLCAweDhiLCAweDVhLCAweDg2LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3MywgMHhmOCwgMHhhOCwgMHhiZSwgMHgxLCAweGVlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4MywgMHhlZSwgMHhmOCwgMHhhOCwgMHgxNSwgMHhmNywgMHhiZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OTgsIDB4YmUsIDB4NSwgMHhmYiwgMHhiZiwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhmOCwgMHgxYSwgMHhhZCwgMHhmNywgMHg2ZSwgMHhhZCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4YjIsIDB4ZjcsIDB4NjQsIDB4YjIsIDB4MywgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGFiLCAweDE1LCAweGM1LCAweGI5LCAweGJjLCAweGM1LCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4NWMsIDB4NTEsIDB4NTEsIDB4NWQsIDB4NTQsIDB4NTEsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhjMCwgMHhjNSwgMHgxZSwgMHg2NCwgMHgxNiwgMHgzYiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGRiLCAweGRiLCAweGNhLCAweGNlLCAweGRiLCAweGRiLCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4M2IsIDB4M2IsIDB4NGMsIDB4NGUsIDB4M2IsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQyLCAweDhiLCAweGNlLCAweGY3LCAweDY5LCAweGNmLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZjcsIDB4M2MsIDB4NzcsIDB4MTIsIDB4ZjcsIDB4YzUsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhiNiwgMHgxMywgMHhkOCwgMHhlMSwgMHgxNiwgMHhmOCwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGZjLCAweDhjLCAweDYsIDB4MTMsIDB4YjgsIDB4ZjcsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDEzLCAweGI0LCAweGY3LCAweDdiLCAweGZiLCAweDNmLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2YsIDB4ZjcsIDB4N2EsIDB4YjgsIDB4ZmIsIDB4N2EsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHg2MCwgMHhmYiwgMHgzYywgMHhmYiwgMHg3YiwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgMHhmNywgMHhhMywgMHhjMCwgMHhmNywgMHhjMSwgMHhiZSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4ZjcsIDB4YTMsIDB4YzEsIDB4YSwgMHg3NywgMHg3ZSwgMHg2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDI5LCAweDk1LCAweGEsIDB4YzIsIDB4NDYsIDB4NzksIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3NSwgMHhhLCAweGUsIDB4NTIsIDB4ZjcsIDB4YTAsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhkOCwgMHhmNywgMHgyNCwgMHg5NCwgMHg4MiwgMHhmNywgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGFiLCAweDEyLCAweGY3LCAweDgyLCAweGNhLCAweDZlLCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NTQsIDB4ZjcsIDB4MTEsIDB4ZjgsIDB4N2QsIDB4MTUsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHg3OSwgMHgzNywgMHg0NywgMHg0ZSwgMHg3NywgMHg3NSwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDk1LCAweDk1LCAweDgzLCAweDFmLCAweDk4LCAweDgxLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NzAsIDB4MWIsIDB4MTMsIDB4YWMsIDB4NmMsIDB4ODgsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDdiLCAweDkzLCAweDFmLCAweDg3LCAweDhkLCAweDUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhjOSwgMHhhLCAweDY2LCAweDVhLCAweDcyLCAweDY3LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODMsIDB4YSwgMHg3MywgMHhmOCwgMHg5NywgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDc3LCAweDEsIDB4ZjcsIDB4NDgsIDB4YWQsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweGViLCAweDlmLCAweGEsIDB4OWQsIDB4OWMsIDB4OWEsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg3ZCwgMHg5YywgMHg3NiwgMHg4MCwgMHg3NiwgMHg3ZCwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHhmYiwgMHg1MCwgMHg3NiwgMHhmNywgMHg1YiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDEzLCAweDc3LCAweDEsIDB4NmQsIDB4ZjQsIDB4ZjcsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHgzLCAweGQ5LCAweGM3LCAweDE1LCAweDRmLCAweDlkLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4YWEsIDB4MWIsIDB4YmUsIDB4Y2MsIDB4YjksIDB4YmUsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4ZCwgMHg2LCAweDg5LCAweDgxLCAweDg1LCAweDc3LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NjgsIDB4OWQsIDB4NzUsIDB4YWYsIDB4YWYsIDB4YTksIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHhiNywgMHgxZSwgMHg4ZSwgMHg5NCwgMHg1LCAweDc2LCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ODYsIDB4N2MsIDB4MWIsIDB4NjcsIDB4OTgsIDB4YjQsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHgxZiwgMHhkOSwgMHhmNywgMHhlNCwgMHg1LCAweDMzLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHhmYiwgMHhjMywgMHg1LCAweDcyLCAweDdhLCAweDUzLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4MWIsIDB4NGYsIDB4NzcsIDB4YjgsIDB4YzEsIDB4OTYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhmNywgMHhiMCwgMHg1LCAweDMzLCAweDYsIDB4MzYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDg0LCAweDZiLCAweDdmLCAweDY4LCAweDdjLCAweDZhLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NmMsIDB4NzMsIDB4NjYsIDB4NWEsIDB4MWEsIDB4NzIsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhhNywgMHhjYiwgMHg5MiwgMHhmNywgMHgwLCAweGFmLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4YjQsIDB4OGYsIDB4YjYsIDB4MWUsIDB4ZSwgMHhmNywgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDU3LCAweDc2LCAweGY5LCAweGU3LCAweGE2LCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmYiwgMHg2YywgMHgxNSwgMHhhZiwgMHg2LCAweGY3LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4ZTcsIDB4NSwgMHhlNiwgMHg2LCAweGZiLCAweDg4LCAweGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4NSwgMHhhZSwgMHg2LCAweGY3LCAweDg4LCAweGY5LCAweGU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhjYywgMHg2LCAweDkzLCAweGE2LCAweDUsIDB4ZmIsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDhhLCAweDVjLCAweGZiLCAweDQ0LCAweDRjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhlZCwgMHg3YSwgMHhlNywgMHgxZiwgMHhlLCAweDIwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4ZjcsIDB4MywgMHgxLCAweGQxLCAweGY3LCAweDMsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGY3LCAweDkyLCAweDg0LCAweGEsIDB4NzMsIDB4ZmIsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHhmNywgMHg0OSwgMHg3NywgMHgxLCAweGY3LCAweDAsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGRjLCAweDE2LCAweDRjLCAweDIxLCAweDk0LCAweDgzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg5NiwgMHg5YiwgMHg4ZSwgMHg5OSwgMHgxYiwgMHhhMCwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDc0LCAweDZmLCAweDZiLCAweDdjLCAweDY4LCAweDc4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OTUsIDB4N2MsIDB4MWYsIDB4N2EsIDB4NmUsIDB4NSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGFmLCAweDgzLCAweGFmLCAweDFiLCAweGM2LCAweGM0LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4YjUsIDB4NjcsIDB4YTQsIDB4NjQsIDB4ODAsIDB4ODAsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4MSwgMHgxZiwgMHhiNywgMHhjZCwgMHg1LCAweGUsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhMywgMHg5YiwgMHhmNywgMHg2LCAweDc2LCAweGY3LCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhiNiwgMHhmNywgMHg3ZiwgMHgzLCAweGI2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4MTUsIDB4ZjcsIDB4NDksIDB4OWIsIDB4NiwgMHg2OCwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDliLCAweDljLCAweDk2LCAweGE0LCAweDk2LCAweGFlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4ZjcsIDB4OWMsIDB4NSwgMHg4ZSwgMHg5MiwgMHg4YywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDFhLCAweDhlLCAweDg5LCAweDhkLCAweDg3LCAweDgzLCAweDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4ODgsIDB4NmUsIDB4MWUsIDB4NzgsIDB4NywgMHg4YywgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDhiLCAweDkzLCAweDFiLCAweDk3LCAweDkxLCAweDg2LCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4OGEsIDB4ODEsIDB4ODgsIDB4ODQsIDB4MWYsIDB4NGMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg3MywgMHgzYiwgMHg4MywgMHg4NCwgMHg0ZiwgMHg3YiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NWMsIDB4ZjcsIDB4YjksIDB4YTMsIDB4ZTQsIDB4YTMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhhMSwgMHg4YywgMHhhMSwgMHgxLCAweGNlLCAweGQ0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4ZDQsIDB4MywgMHhjZSwgMHhmOCwgMHg4MiwgMHgxNSwgMHhlMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGU5LCAweGVmLCAweGQ4LCAweGE0LCAweDU5LCAweDYzLCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4MjIsIDB4MjMsIDB4NDMsIDB4NmIsIDB4YjAsIDB4YmUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNCwgMHg4MSwgMHgxNSwgMHg2YywgMHg5NywgMHg3NCwgMHhhNywgMHhjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI0LCAweGY3LCAweGIsIDB4YmUsIDB4YTYsIDB4ODQsIDB4YTYsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg1YiwgMHhmYiwgMHg0LCAweDUxLCAweDFlLCAweGUsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGMyLCAweGY4LCAweDFjLCAweDMsIDB4ZjcsIDB4ZmYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHgxNSwgMHg0OSwgMHhhLCAweGZiLCAweDM2LCAweDE2LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweGQ5LCAweGEsIDB4ZjcsIDB4MTAsIDB4OWIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHg3NywgMHgxMiwgMHhhYywgMHhmOSwgMHg1MywgMHgxMywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweGEsIDB4MTMsIDB4YmMsIDB4OTQsIDB4YSwgMHgxMywgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGIyLCAweGZiLCAweDMxLCAweDhjLCAweGEsIDB4ZmMsIDB4YzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgyOSwgMHgxNSwgMHhmNywgMHg0OSwgMHg2LCAweDEzLCAweDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NywgMHgxMywgMHgxYywgMHg3MSwgMHg3NCwgMHg5NSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDhiLCAweDhkLCAweGY0LCAweGY3LCAweGU0LCAweDFmLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OGQsIDB4OGYsIDB4OGYsIDB4MWEsIDB4OGUsIDB4OGEsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHhkYywgMHhhLCAweDhjLCAweDljLCAweDk3LCAweDhiLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YTcsIDB4ODAsIDB4NzIsIDB4N2QsIDB4ODcsIDB4MWYsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhhNywgMHg4NSwgMHg3OCwgMHg3MSwgMHg3ZiwgMHg2OSwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweGUsIDB4ZjgsIDB4MWQsIDB4OGIsIDB4YzAsIDB4NjEsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgwLCAweGJmLCAweGY3LCAweGEyLCAweDc3LCAweDEyLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODMsIDB4ZmIsIDB4MjQsIDB4YmUsIDB4ZjgsIDB4OGMsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3NiwgMHhmNywgMHgxNSwgMHg4MSwgMHg4YywgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4ZmIsIDB4MTIsIDB4ZmQsIDB4MzgsIDB4YzEsIDB4YSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDYwLCAweDFiLCAweGZiLCAweDAsIDB4OTUsIDB4YSwgMHhjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDc5LCAweDM2LCAweDg4LCAweDc1LCAweGEsIDB4ZmMsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MSwgMHgxNSwgMHhmNywgMHg0OCwgMHg2LCAweDEzLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg3LCAweDEzLCAweDE4LCAweDcyLCAweDZlLCAweDk2LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4MWYsIDB4YzgsIDB4ZjcsIDB4NWQsIDB4YmEsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHgxYSwgMHg4ZSwgMHg4ZCwgMHg5MywgMHg4NCwgMHhkYywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4OGMsIDB4NSwgMHg5OSwgMHg4ZiwgMHg4NiwgMHg4MiwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDg4LCAweDJmLCAweGZiLCAweGIwLCAweDFmLCAweDg1LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4N2YsIDB4NjksIDB4ODcsIDB4OCwgMHhlLCAweGQ5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlYSwgMHhmNywgMHg0ZiwgMHgxMiwgMHhmNywgMHg2ZSwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGNlLCAweDEzLCAweDc4LCAweDY3LCAweGEsIDB4OTQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGI4LCAweGZiLCAweGIxLCAweGZiLCAweDMxLCAweDhjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4MiwgMHhmYiwgMHg0ZiwgMHgxNSwgMHhjMywgMHhjNCwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweDQ3LCAweDRlLCAweDc3LCAweDc1LCAweDdhLCAweDdmLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4N2YsIDB4MWYsIDB4OTYsIDB4ODAsIDB4ODAsIDB4OTUsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg2OCwgMHg4YiwgMHhhNSwgMHhhLCAweDc3LCAweDk1LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzQsIDB4YzksIDB4YSwgMHgxZSwgMHgxMywgMHg0LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NzIsIDB4NjcsIDB4N2IsIDB4MWYsIDB4ODMsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGExLCAweDEyLCAweGE1LCAweGQ1LCAweGY3LCAweDJjLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4ZjUsIDB4MTMsIDB4ZTAsIDB4ZjcsIDB4YjAsIDB4ZjcsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3MywgMHgyNiwgMHg1NCwgMHg1ZiwgMHg2MCwgMHg2OCwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4MzksIDB4NmEsIDB4NmMsIDB4NDUsIDB4MWEsIDB4NDEsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhlYiwgMHgxZSwgMHhkMiwgMHhjZCwgMHhiMiwgMHhkMiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGE3LCAweDczLCAweDgxLCAweDZkLCAweDg2LCAweDZkLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ODEsIDB4OGYsIDB4ODEsIDB4MWYsIDB4OGYsIDB4ODEsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg3ZiwgMHgxYSwgMHg1YywgMHg0YSwgMHg4YiwgMHg4NiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGM2LCAweGE0LCAweGQ2LCAweGJhLCAweGJhLCAweGJjLCAweGMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YmEsIDB4YmYsIDB4YmIsIDB4YzYsIDB4OTMsIDB4ZWEsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGQwLCAweDY0LCAweGY3LCAweDFiLCAweDE1LCAweDZlLCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4YSwgMHg3MywgMHg3MywgMHg2ZSwgMHgxZSwgMHhlLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg1OCwgMHgxNiwgMHg5YiwgMHhhLCAweDVmLCAweDdkLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4OWQsIDB4OTMsIDB4YTgsIDB4Y2YsIDB4ZjcsIDB4YSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcwLCAweDYsIDB4YTIsIDB4ZmIsIDB4MTgsIDB4OGIsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHgxYSwgMHg2NiwgMHg3NCwgMHg3NCwgMHg1MywgMHgyNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4ZjgsIDB4NGUsIDB4YjcsIDB4YSwgMHhmYiwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4YzUsIDB4YSwgMHg3OSwgMHg4ZCwgMHg1NiwgMHhhLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4ODAsIDB4YSwgMHg4OCwgMHhhLCAweGY3LCAweGQzLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4N2YsIDB4YSwgMHhmYywgMHhhMywgMHhmZCwgMHhmMSwgMHhlNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NjQsIDB4NzgsIDB4OWYsIDB4YTMsIDB4OWUsIDB4OTQsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhhMCwgMHg4MSwgMHhhLCAweGExLCAweGZiLCAweDExLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODIsIDB4MWEsIDB4NjEsIDB4NzgsIDB4NzEsIDB4NGYsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4NWEsIDB4YSwgMHhmNywgMHg3NSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4ZjgsIDB4ZmIsIDB4MywgMHhmNywgMHg3ZiwgMHg0NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NGYsIDB4ZmQsIDB4ZmQsIDB4ZTcsIDB4YSwgMHg2MywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGE0LCAweDllLCAweDk0LCAweGExLCAweDk2LCAweGEwLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhMywgMHhmYiwgMHgxNiwgMHg4YSwgMHg4MiwgMHg4MywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDcxLCAweDcwLCAweDU2LCAweDM1LCAweGEsIDB4ODIsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHgxOSwgMHhmNywgMHg3NiwgMHhmNywgMHg4YiwgMHg0YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg1YSwgMHhhLCAweGRmLCAweGFjLCAweGEsIDB4MTMsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4MywgMHhmOSwgMHg2ZCwgMHg2NSwgMHhhLCAweDczLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NzEsIDB4MWYsIDB4MTMsIDB4ZTgsIDB4OTUsIDB4NzMsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg3MSwgMHg2YywgMHhhLCAweGZiLCAweGI2LCAweGZkLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4YSwgMHg2NCwgMHg3OCwgMHg5ZCwgMHhhNCwgMHg5ZSwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDk2LCAweGEwLCAweDgxLCAweGEsIDB4YTEsIDB4ZmIsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4MSwgMHg4NCwgMHgxYSwgMHg2MSwgMHg3MCwgMHg3MiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweGEsIDB4ZSwgMHg1YSwgMHhhLCAweGQzLCAweGVkLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YSwgMHhjNiwgMHhhLCAweDMsIDB4NTgsIDB4MTYsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDY1LCAweDc3LCAweGEwLCAweDlmLCAweGEzLCAweDk0LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4YTEsIDB4ODEsIDB4YSwgMHhhMSwgMHhmYiwgMHhmLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4ODQsIDB4MWEsIDB4NjAsIDB4NzIsIDB4NzIsIDB4NTUsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweGYsIDB4ZjgsIDB4OGYsIDB4MjMsIDB4YSwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YWUsIDB4ZjcsIDB4M2EsIDB4YWIsIDB4YSwgMHhmNywgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDU4LCAweGY3LCAweDRmLCAweGY3LCAweDI4LCAweGFkLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzksIDB4YWIsIDB4YSwgMHhmNywgMHgzYSwgMHgxMywgMHhmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGY3LCAweGIwLCAweGY5LCAweGEzLCAweDE1LCAweDU0LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4YzIsIDB4MWUsIDB4MTMsIDB4ZTcsIDB4MjAsIDB4YzIsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhjMiwgMHhjMiwgMHg1ZSwgMHhiOCwgMHg1NCwgMHgxZiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweDgwLCAweDU0LCAweDVlLCAweDVlLCAweDU0LCAweDFmLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4YjMsIDB4YSwgMHgxMywgMHhlYiwgMHg0MCwgMHhlNSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4NSwgMHhmZCwgMHhhMywgMHhlNywgMHhhLCAweDY1LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4OWYsIDB4YTMsIDB4OTQsIDB4OWYsIDB4OTYsIDB4YTEsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGExLCAweGZiLCAweGYsIDB4OGMsIDB4N2YsIDB4ODQsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHg3MiwgMHg3MiwgMHg1NSwgMHgyNywgMHhhLCAweGUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg4YiwgMHhhYywgMHhmNywgMHg1ZCwgMHhiMCwgMHhjNCwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MSwgMHhmOSwgMHg4OCwgMHg5ZCwgMHgzLCAweDcwLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4YSwgMHg2ZSwgMHg2YSwgMHg5YiwgMHhhMiwgMHhiMiwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGFkLCAweGJhLCAweDFmLCAweGY3LCAweDUyLCAweDYsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzNCwgMHg3ZiwgMHg2MywgMHg3YiwgMHg3ZiwgMHg1NCwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDdiLCAweGY4LCAweDg2LCAweDcsIDB4Y2IsIDB4ZjcsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg5MCwgMHg1LCAweGZiLCAweDMsIDB4NDIsIDB4NDksIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyMSwgMHgxYiwgMHg2ZCwgMHg2LCAweDY1LCAweDgxLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4OWQsIDB4YmEsIDB4ZjcsIDB4MzYsIDB4YTAsIDB4ZDYsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHg2LCAweGViLCAweGExLCAweDg0LCAweDVkLCAweDdiLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4ODgsIDB4N2IsIDB4MWYsIDB4OWMsIDB4ODcsIDB4ZDAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3OSwgMHg4ZiwgMHg1LCAweDJlLCAweDYwLCAweDdjLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmQsIDB4MWIsIDB4YzgsIDB4ZjcsIDB4NzIsIDB4NSwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDk0LCAweDhiLCAweGM3LCAweDFiLCAweGY3LCAweDRlLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4MmEsIDB4MWYsIDB4OWMsIDB4ODksIDB4YWMsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZjLCAweDk5LCAweDdjLCAweDYsIDB4YmQsIDB4ODcsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg3MiwgMHgxYSwgMHg3ZCwgMHg3YSwgMHg3OCwgMHg3YywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZjLCAweDE2LCAweGZjLCAweDc3LCAweDcxLCAweDZiLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NzMsIDB4ODUsIDB4MTksIDB4ZjcsIDB4YTgsIDB4ZjcsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg5NywgMHhmNywgMHhkZSwgMHg1LCAweDkxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhmYiwgMHhkZSwgMHg1LCAweGUsIDB4ZjcsIDB4Y2EsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg3NiwgMHhmNywgMHg1ZCwgMHhiNiwgMHhkNCwgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4ZjcsIDB4OTAsIDB4MjEsIDB4MTUsIDB4OTMsIDB4ODMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDk3LCAweDliLCAweDhlLCAweDlhLCAweDFiLCAweGExLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NzQsIDB4NmUsIDB4NjcsIDB4N2QsIDB4NjcsIDB4N2EsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZSwgMHhhLCAweGEzLCAweGIwLCAweDgzLCAweGFmLCAweDFiLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4YTMsIDB4Y2EsIDB4YjUsIDB4NjcsIDB4YTQsIDB4NjQsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg4YiwgMHg4OCwgMHg4MCwgMHgxZiwgMHhhYywgMHhiZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWQsIDB4ZGUsIDB4ZjQsIDB4YjUsIDB4YWYsIDB4NmYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDg4LCAweDUsIDB4MTMsIDB4ZDgsIDB4YjgsIDB4YSwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDkyLCAweDkxLCAweDcwLCAweDFmLCAweDEzLCAweGU4LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NmUsIDB4OTAsIDB4NmEsIDB4ZDUsIDB4YSwgMHhmYiwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweDNhLCAweGY3LCAweDUsIDB4MWYsIDB4ZSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NzMsIDB4NzcsIDB4MSwgMHhmOCwgMHgyNCwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM2LCAweGEwLCAweDMsIDB4OGIsIDB4YSwgMHg2OCwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGIyLCAweDkwLCAweDhjLCAweDkwLCAweDhjLCAweDkxLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4OTcsIDB4OTksIDB4M2MsIDB4YSwgMHg3ZiwgMHg4MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDc0LCAweGEsIDB4ZjcsIDB4NTAsIDB4ODYsIDB4NzYsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhhLCAweGY4LCAweDQyLCAweGY5LCAweDQ0LCAweGI3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxLCAweGY3LCAweDIyLCAweGM1LCAweGEsIDB4NzcsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhhLCAweGEwLCAweDdhLCAweDgwLCAweGEsIDB4OGQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDczLCAweDc3LCAweDEsIDB4ZjgsIDB4ZGEsIDB4YTAsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGRkLCAweGY5LCAweDU2LCAweDllLCAweGEsIDB4ZjcsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHg5ZiwgMHhhLCAweDk4LCAweDk3LCAweDQ3LCAweGEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHg5ZCwgMHhhLCAweGZjLCAweDc5LCAweGZkLCAweGYxLCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg5MiwgMHg4YiwgMHhhYywgMHhmNywgMHhiYiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk5LCAweGFjLCAweDg5LCAweGJlLCAweGQxLCAweGEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg5ZiwgMHhmNywgMHgzNiwgMHhhMCwgMHgzLCAweGY3LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIDB4YSwgMHhmYywgMHgzNiwgMHhmZCwgMHhmZCwgMHgzNCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4YSwgMHhjZSwgMHhlZCwgMHgxLCAweGY3LCAweDllLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzLCAweDhhLCAweDE2LCAweDMyLCAweGEsIDB4N2YsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyZiwgMHg3NCwgMHhhLCAweGY3LCAweDUwLCAweDg2LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4NDEsIDB4YSwgMHhmNywgMHg5ZiwgMHhmOSwgMHg4NSwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NzMsIDB4OTksIDB4YSwgMHg4MywgMHgxNiwgMHgyYSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmUsIDB4ZjksIDB4NDQsIDB4NzcsIDB4YSwgMHg3MywgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NjYsIDB4ZjksIDB4NTYsIDB4OWUsIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGVlLCAweDlmLCAweGEsIDB4OWIsIDB4OTksIDB4NDcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDgwLCAweDlkLCAweGEsIDB4ZmIsIDB4ZjIsIDB4ZmQsIDB4ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgyYSwgMHhhLCAweGUsIDB4NzMsIDB4OWEsIDB4YSwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGEsIDB4ODMsIDB4ZjgsIDB4NDUsIDB4MywgMHhmNywgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGEsIDB4ZmIsIDB4YmMsIDB4ZmQsIDB4ZmQsIDB4MTUsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4NzMsIDB4ODcsIDB4YSwgMHhlMiwgMHhlZCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWQsIDB4YzYsIDB4YSwgMHgzLCAweDgzLCAweDE2LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgyNSwgMHhmOSwgMHg4NSwgMHgyMywgMHhhLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg4YiwgMHhhOSwgMHhmNywgMHhiYywgMHhiNSwgMHhmNywgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDEsIDB4ZjcsIDB4NTgsIDB4ZWUsIDB4ZjcsIDB4YmEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDMsIDB4YjEsIDB4YSwgMHhmNCwgMHg0ZCwgMHhmNywgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDdhLCAweDFmLCAweGZiLCAweGFhLCAweDdiLCAweDYsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg3NiwgMHg2ZCwgMHg3YSwgMHg4NywgMHg3OSwgMHg4NiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDVkLCAweGZiLCAweDM4LCAweDUsIDB4MzEsIDB4NiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDUsIDB4ZTUsIDB4NiwgMHg1ZCwgMHhmYiwgMHgzOCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4NmYsIDB4ODYsIDB4NWUsIDB4NDgsIDB4MWIsIDB4ZjcsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjYSwgMHgxNSwgMHhmNywgMHgyZCwgMHg2LCAweDk3LCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgyZCwgMHg2LCAweGI4LCAweGY3LCAweDM5LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHg5YSwgMHg4ZSwgMHhhZiwgMHhjYywgMHhiMiwgMHhhLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4OWIsIDB4YTUsIDB4YTIsIDB4OTcsIDB4YWEsIDB4OTUsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweGY3LCAweGNhLCAweDkxLCAweDc2LCAweGFmLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MWUsIDB4ZjcsIDB4MmYsIDB4ZmIsIDB4MmMsIDB4NzcsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNywgMHg1NiwgMHhmMiwgMHg4NSwgMHg3NywgMHgxMiwgMHgxMywgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweGU0LCAweGEsIDB4NTYsIDB4N2MsIDB4YTAsIDB4YWIsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg5ZSwgMHg5MSwgMHhhMSwgMHgxZiwgMHhmNywgMHgwLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4NSwgMHg4ZiwgMHg2LCAweDEzLCAweGEyLCAweGY3LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4YjQsIDB4NSwgMHg5ZCwgMHg2LCAweGY3LCAweDJjLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4YTIsIDB4ZGIsIDB4OWMsIDB4YTIsIDB4YzMsIDB4OTcsIDB4MTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg1YSwgMHhlYiwgMHhhLCAweDcsIDB4MTMsIDB4NjIsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGJkLCAweDliLCAweDc0LCAweDZkLCAweDc4LCAweDg3LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4NzcsIDB4MWYsIDB4MjksIDB4ZmMsIDB4MiwgMHg1LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHg1YSwgMHhmYiwgMHg2MiwgMHhmOCwgMHg4MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzUsIDB4NiwgMHgxMywgMHg2MiwgMHg3YiwgMHg3LCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4NzgsIDB4NjYsIDB4OWMsIDB4MWYsIDB4ZmIsIDB4MTMsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg3NiwgMHgzZiwgMHg3OCwgMHg2ZCwgMHg1NCwgMHg4MywgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGJkLCAweGY5LCAweDVkLCAweDYwLCAweGEsIDB4OWQsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg4MCwgMHhhOCwgMHgxZiwgMHgxMywgMHg1YSwgMHg4MCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDgxLCAweDcxLCAweGEsIDB4NzcsIDB4NzQsIDB4OTYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHgxZiwgMHgxMywgMHg1NCwgMHg5NSwgMHg3MywgMHg3MSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGQ2LCAweGEsIDB4YmYsIDB4YSwgMHhmNywgMHg2NiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YzcsIDB4ZjcsIDB4NzcsIDB4MjQsIDB4YSwgMHhmNywgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDcxLCAweDc3LCAweGEsIDB4YmYsIDB4YSwgMHhmNywgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweGEsIDB4ZjgsIDB4MzMsIDB4ZjksIDB4NTYsIDB4NWUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDk1LCAweGZkLCAweGUsIDB4MjQsIDB4YSwgMHhlLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhYywgMHhmOCwgMHhmNywgMHhiMSwgMHg2YywgMHhhYywgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweGY3LCAweDNkLCAweGE4LCAweGEsIDB4ZjcsIDB4ZDUsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZjLCAweDM2LCAweGZkLCAweDFhLCAweDI0LCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweGEsIDB4YWMsIDB4ZjgsIDB4ZmYsIDB4YWMsIDB4ZDAsIDB4ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg3NywgMHgxMiwgMHg4NiwgMHhhLCAweDEzLCAweGVjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4ZjksIDB4NmQsIDB4NjAsIDB4YSwgMHg5YywgMHhhNiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweGE2LCAweDFmLCAweDdmLCAweGE5LCAweGE5LCAweDdmLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MTMsIDB4ZGMsIDB4NDMsIDB4YSwgMHg3OCwgMHg3NCwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDcyLCAweDFmLCAweDEzLCAweGVjLCAweDk2LCAweDczLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4NzAsIDB4NmMsIDB4YSwgMHhmYiwgMHg5MywgMHhmYywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI0LCAweGEsIDB4ZSwgMHhiNiwgMHhhLCAweGFjLCAweGY4LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4ZjcsIDB4MTQsIDB4ZWQsIDB4MTIsIDB4YzcsIDB4ZjQsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGVkLCAweDYyLCAweGY0LCAweDEzLCAweGY0LCAweGM3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MjQsIDB4YSwgMHhmNywgMHg0MCwgMHhmOCwgMHhiMiwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MTMsIDB4ZjgsIDB4MjUsIDB4YSwgMHhmNywgMHhkMiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGI0LCAweDc2LCAweGY4LCAweDU2LCAweDc3LCAweGIyLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4MWUsIDB4ZjgsIDB4MjYsIDB4MTMsIDB4OTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGM0LCAweDE1LCAweGE3LCAweDcwLCAweGY3LCAweDU3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NSwgMHgxMywgMHg1OCwgMHhmNywgMHg1NywgMHhmYiwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweGE4LCAweGZiLCAweDU3LCAweGY3LCAweDU2LCAweGY3LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWEsIDB4NSwgMHgxMywgMHhhOCwgMHg2ZSwgMHhhOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweGZiLCAweDVhLCAweGZiLCAweDU4LCAweGY3LCAweDU4LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4ZjcsIDB4NTYsIDB4ZmIsIDB4NTgsIDB4NSwgMHhlLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgzNywgMHg3NiwgMHhlMiwgMHhhYywgMHhmOCwgMHhmZSwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMzLCAweGE4LCAweGEsIDB4ZjcsIDB4NTIsIDB4ZDUsIDB4MTUsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYSwgMHg4YiwgMHhlNSwgMHg5OCwgMHgxYSwgMHhmNywgMHgxMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY3LCAweGFmLCAweGY3LCAweDNjLCAweGFmLCAweGE3LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4OWUsIDB4MWUsIDB4ZmIsIDB4ZGYsIDB4ZmMsIDB4YzcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmNywgMHhmOCwgMHhhNiwgMHg1LCAweDlkLCAweDZmLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzksIDB4NjIsIDB4MWEsIDB4ZmIsIDB4MSwgMHhmYiwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4ZmIsIDB4NDQsIDB4NjUsIDB4NzEsIDB4OTcsIDB4OWMsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHgyNiwgMHhmYiwgMHgyOSwgMHgxNSwgMHhiNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDUsIDB4ZjcsIDB4MCwgMHg1LCAweDdlLCAweGE5LCAweGFkLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4MWIsIDB4YWUsIDB4YSwgMHhmNywgMHg4NCwgMHhmNywgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDY1LCAweGNkLCAweDUzLCAweGIyLCAweDFmLCAweGNiLCAweGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg1ZiwgMHg2LCAweDU3LCAweDNkLCAweDUsIDB4OWEsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg5MiwgMHg2NiwgMHgxYiwgMHhmYiwgMHg0NywgMHhmYiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDZlLCAweGZiLCAweDcxLCAweDIxLCAweGI1LCAweDRiLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MWYsIDB4ZSwgMHhhYSwgMHhhLCAweDc3LCAweGY3LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YTMsIDB4NzcsIDB4MTIsIDB4Y2MsIDB4YSwgMHgxMywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEzLCAweGY5LCAweDExLCAweDI5LCAweGEsIDB4ZjgsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGI3LCAweGEsIDB4MjAsIDB4ZjcsIDB4MjIsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGEyLCAweDc5LCAweDc1LCAweDkyLCAweDU2LCAweGEsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg4MCwgMHhhLCAweGFhLCAweGEsIDB4NzcsIDB4ZjcsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGNjLCAweGEsIDB4MywgMHhmOCwgMHgzMywgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDVlLCAweGEsIDB4ZmMsIDB4NTIsIDB4ZmIsIDB4NzQsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4YWEsIDB4YSwgMHhiZSwgMHhkMSwgMHhhLCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgzLCAweGY3LCAweGM2LCAweDQ2LCAweGEsIDB4ZmIsIDB4ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4MCwgMHgyOSwgMHhhLCAweGUsIDB4YjYsIDB4YSwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGZhLCAweGRmLCAweGEsIDB4ZjEsIDB4ZTUsIDB4ZjcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhhLCAweDEzLCAweGNlLCAweGY3LCAweDEzLCAweGY5LCAweDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4YSwgMHgxMywgMHhiZSwgMHhlYiwgMHhhLCAweDcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHgzNywgMHhhLCAweDEzLCAweGJlLCAweGQyLCAweGEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhmNywgMHg4OSwgMHhmNywgMHg4LCAweDE1LCAweDEzLCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4YSwgMHhmNywgMHg1YiwgMHg5OSwgMHhhLCAweGNmLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg2OSwgMHg5YywgMHhiYSwgMHg5MiwgMHg4YywgMHg5MSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDFmLCAweDkxLCAweGE3LCAweDkyLCAweGExLCAweGI4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4ZjcsIDB4NmYsIDB4ZjcsIDB4YTIsIDB4MTgsIDB4YWIsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg5MywgMHhhNiwgMHg5OCwgMHg4LCAweGU4LCAweGEsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg4NiwgMHg2NywgMHg2MiwgMHhmYiwgMHgxZiwgMHhmYiwgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweDUzLCAweDFmLCAweDczLCAweGU3LCAweDZjLCAweGY1LCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4OCwgMHg4OSwgMHg5NSwgMHg4YiwgMHg5MywgMHg5MiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGFhLCAweDk4LCAweGIwLCAweDhlLCAweGNkLCAweGEsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg4OCwgMHg0YywgMHg5ZCwgMHgxZiwgMHhkOCwgMHhmYiwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGZiLCAweDVlLCAweDUsIDB4NDksIDB4NzgsIDB4NTcsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHgxYiwgMHhmNywgMHhhNiwgMHhmOSwgMHg0NiwgMHg5ZSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2YsIDB4ZjUsIDB4OWYsIDB4YSwgMHg5MSwgMHg5MiwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ODMsIDB4ODcsIDB4OWQsIDB4YSwgMHhlLCAweDdkLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZSwgMHhiMCwgMHhmNywgMHhhZCwgMHhhOSwgMHg2ZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDEyLCAweGY4LCAweDY2LCAweGYyLCAweDEzLCAweGU4LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHhmNywgMHg4OSwgMHg5YiwgMHg2LCAweDU1LCAweDdlLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4OTYsIDB4OGUsIDB4OTgsIDB4OGYsIDB4OTksIDB4MWYsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHg1LCAweDg0LCAweGFlLCAweGFkLCAweDg4LCAweGFiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmQsIDB4ZjcsIDB4MSwgMHhkYiwgMHhmNywgMHg4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmIsIDB4ZmIsIDB4M2IsIDB4OGMsIDB4NWYsIDB4MWYsIDB4NTMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweGM5LCAweDk0LCAweGFmLCAweGE2LCAweDliLCAweGFiLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4MTMsIDB4ZDgsIDB4OWIsIDB4ZmIsIDB4ODIsIDB4N2IsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDg2LCAweGE1LCAweDdlLCAweDY2LCAweDFhLCAweDdkLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4ODUsIDB4NzQsIDB4MWUsIDB4ZmIsIDB4NywgMHhmYywgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDRiLCAweDdiLCAweDdmLCAweDU4LCAweDgzLCAweDE5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ZjcsIDB4NTcsIDB4ZDgsIDB4YSwgMHg5YywgMHhhOSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIsIDB4YTksIDB4NjAsIDB4NDEsIDB4ZmIsIDB4MWYsIDB4MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHgzOCwgMHg2ZiwgMHg3MCwgMHg4ZCwgMHg4ZCwgMHg3NSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4NjMsIDB4YTMsIDB4NzMsIDB4ZjMsIDB4ZGIsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgyNSwgMHhhMiwgMHgxMiwgMHhmOCwgMHgzLCAweGUyLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4MTMsIDB4YjQsIDB4YTIsIDB4ODcsIDB4MTUsIDB4MmMsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHgzNywgMHg0YywgMHgxYiwgMHg3ZCwgMHg4NywgMHg4ZiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDhlLCAweDhmLCAweDhlLCAweDkyLCAweDFmLCAweDhlLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4OTMsIDB4OTIsIDB4MWEsIDB4MTMsIDB4NzQsIDB4OTQsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHg2YywgMHg3NCwgMHg3OSwgMHg4MCwgMHg2YSwgMHg2NSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGI1LCAweGY3LCAweGUsIDB4YmYsIDB4ZjcsIDB4NDQsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHgxZSwgMHhmNywgMHgzLCAweGY4LCAweDNlLCAweDUsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhiOSwgMHhmNywgMHg0NCwgMHhlMSwgMHgxYiwgMHhiNCwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDViLCAweDRkLCAweDdiLCAweDNmLCAweDRiLCAweDZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4ODAsIDB4N2EsIDB4ODksIDB4N2YsIDB4OGEsIDB4OCwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDg1LCAweDhkLCAweDdjLCAweDFhLCAweDgwLCAweDk1LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4OGEsIDB4MWUsIDB4MTMsIDB4YjgsIDB4YWIsIDB4ODgsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHhmYiwgMHgxLCAweDFhLCAweDQwLCAweDYxLCAweGZiLCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4N2UsIDB4ODYsIDB4OTQsIDB4OGYsIDB4OTEsIDB4OGYsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg5MiwgMHgxZSwgMHg4ZSwgMHg5MCwgMHg4ZCwgMHg5MSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGEwLCAweDdmLCAweDllLCAweDcxLCAweDczLCAweDc3LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NTgsIDB4YmEsIDB4N2IsIDB4YWEsIDB4ZjcsIDB4MjgsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0YiwgMHhkNiwgMHhkYywgMHg1ZSwgMHhjNiwgMHgzYywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDhlLCAweDcsIDB4MTMsIDB4YjQsIDB4YzksIDB4YTEsIDB4ZjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhmMywgMHgxYSwgMHhjNywgMHg2NCwgMHhkMSwgMHgyOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDQ4LCAweGZiLCAweDIwLCAweGZiLCAweDc0LCAweDU4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhhMSwgMHhhLCAweDMzLCAweGEsIDB4MTMsIDB4YjgsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDliLCAweGY4LCAweDEzLCAweDc4LCAweGEsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGY3LCAweDljLCAweGY4LCAweDgyLCAweDdmLCAweGEsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg5MiwgMHgyMiwgMHhhLCAweDEzLCAweGI4LCAweDI4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDc2LCAweGEsIDB4OGIsIDB4YmUsIDB4ZjcsIDB4M2QsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg5YywgMHhkZiwgMHgxMywgMHg3YywgMHhmNywgMHg0MywgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4N2QsIDB4ZmMsIDB4OWUsIDB4MjIsIDB4YSwgMHgxMywgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweGEsIDB4ZSwgMHg3NiwgMHhhLCAweGRhLCAweGFjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhkZiwgMHgxMywgMHhiNiwgMHhmNywgMHg0YywgMHhmOCwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweGEsIDB4NzQsIDB4OTcsIDB4OTYsIDB4NzEsIDB4MWYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg5NSwgMHg3MywgMHg3MSwgMHg5NSwgMHg3MSwgMHg2YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWEsIDB4ZmMsIDB4ZSwgMHgyMiwgMHhhLCAweDEzLCAweGI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4YSwgMHhlLCAweDc2LCAweGEsIDB4Y2UsIDB4ZWQsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhkZiwgMHhlNSwgMHhjNiwgMHhhLCAweDEzLCAweDdlLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhiZSwgMHgyOCwgMHhhLCAweGU1LCAweGY4LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4YSwgMHg3NiwgMHhhLCAweGJlLCAweGFjLCAweDhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4ZmIsIDB4MTcsIDB4ZjcsIDB4M2EsIDB4MTIsIDB4OWMsIDB4ZGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZiwgMHhmNywgMHgzOCwgMHhhYiwgMHhhLCAweGY3LCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzYsIDB4NDAsIDB4MzMsIDB4YSwgMHgxMywgMHhiNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4YSwgMHhmNywgMHgxZiwgMHhmOCwgMHg3NiwgMHgxNSwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDVmLCAweGMyLCAweDFlLCAweDEzLCAweGI2LCAweDQwLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4YjcsIDB4YzIsIDB4YzIsIDB4NWUsIDB4YjgsIDB4NTQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiNywgMHgwLCAweDU0LCAweDVmLCAweDVlLCAweDU0LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4OGEsIDB4MTUsIDB4YjMsIDB4YSwgMHgxMywgMHhiYSwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGEsIDB4ZSwgMHhmNywgMHhjYSwgMHg4MCwgMHhiZCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQsIDB4YTQsIDB4NzcsIDB4OWYsIDB4MTIsIDB4YTIsIDB4ZTEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhlMywgMHhmNywgMHg0ZSwgMHhjZCwgMHgxMywgMHhiYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGY3LCAweDIwLCAweDE1LCAweDkwLCAweDYsIDB4ODksIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg4NSwgMHg4MiwgMHgxYSwgMHg0OSwgMHhhYiwgMHg0ZCwgMHhkOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGViLCAweGU1LCAweGYxLCAweDk1LCAweDkxLCAweDFlLCAweDgxLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0OCwgMHg0OCwgMHg1OCwgMHg4MSwgMHg3NiwgMHgxYiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGQ2LCAweGE4LCAweGEzLCAweDhjLCAweDhkLCAweDkwLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjcsIDB4YSwgMHhhZCwgMHhmNywgMHgyMCwgMHhiMiwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGM3LCAweDUwLCAweDlkLCAweDc1LCAweDY0LCAweDYyLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NjUsIDB4MWUsIDB4ODksIDB4OGQsIDB4OWYsIDB4YzMsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg3OCwgMHg2MCwgMHg1LCAweGEzLCAweDgwLCAweDgxLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4MWIsIDB4ZmIsIDB4MTIsIDB4ZmIsIDB4MmIsIDB4ZmIsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOCwgMHg1YywgMHg5YSwgMHg1MCwgMHhkMywgMHhkNywgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRhLCAweGQzLCAweGJjLCAweDFmLCAweGZiLCAweDRkLCAweDY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4ZWUsIDB4ZjcsIDB4NmYsIDB4ZTksIDB4OTksIDB4YWQsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHgyNywgMHgyMCwgMHhmYiwgMHg3NCwgMHgyOSwgMHgxZSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDY5LCAweDg5LCAweGFhLCAweGFkLCAweDFmLCAweGY3LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MSwgMHgxNSwgMHhmNywgMHgxZCwgMHhiNSwgMHhjNywgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDFiLCAweDEzLCAweGMsIDB4OWIsIDB4OWYsIDB4N2MsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg1OSwgMHg0MCwgMHhmYiwgMHgxYywgMHg2ZiwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4ZmIsIDB4NmQsIDB4YWYsIDB4ZGMsIDB4YWQsIDB4YzMsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxZiwgMHhhMCwgMHgxLCAweGE1LCAweGUxLCAweGQ3LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4ZTIsIDB4MywgMHhmMCwgMHgyOCwgMHgxNSwgMHg5NCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4OTEsIDB4OTUsIDB4OTgsIDB4OGMsIDB4OTcsIDB4MWIsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3ZSwgMHg3MiwgMHg2ZSwgMHg2OSwgMHg3ZCwgMHg2NywgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweGRlLCAweGEsIDB4YTIsIDB4YWYsIDB4ODMsIDB4YWYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNiwgMHhjNSwgMHhhMiwgMHhjYiwgMHhiNCwgMHg2OSwgMHhhNSwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDdmLCAweDhiLCAweDg4LCAweDgwLCAweDFmLCAweGIxLCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWIsIDB4OTEsIDB4YzAsIDB4ZDEsIDB4YTMsIDB4YTksIDB4MTksIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg1LCAweDYzLCAweDY3LCAweDVjLCAweDYyLCAweDRmLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGUsIDB4NjksIDB4YjgsIDB4ZDgsIDB4ZWIsIDB4ZDQsIDB4ZGIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDg2LCAweDgyLCAweDg3LCAweDgwLCAweDFmLCAweDg4LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4ODEsIDB4ODAsIDB4YTMsIDB4YSwgMHhmYiwgMHgyMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJkLCAweGZiLCAweDIxLCAweGZiLCAweGEsIDB4ZDAsIDB4NmEsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxZSwgMHhlLCAweGUyLCAweDgwLCAweGI4LCAweGY3LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4OGMsIDB4YTIsIDB4ZjcsIDB4NzMsIDB4NzcsIDB4MSwgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweDMsIDB4ZjcsIDB4MTcsIDB4ZjcsIDB4NWEsIDB4MTUsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHg1LCAweDJkLCAweGEsIDB4ZjcsIDB4NjgsIDB4ZjcsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHhhLCAweGUyLCAweDgwLCAweGI4LCAweGY4LCAweGQsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3YSwgMHg3NywgMHgxMiwgMHhhYSwgMHhlMCwgMHhmNywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDE3LCAweGY3LCAweDgwLCAweGFkLCAweGEsIDB4ZjcsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg5ZiwgMHhhLCAweDk2LCAweDk5LCAweDQ3LCAweGEsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg5ZCwgMHhhLCAweGZiLCAweDlhLCAweGZjLCAweDU1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YjcsIDB4NSwgMHgzZCwgMHhhLCAweDEzLCAweGQwLCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4YWQsIDB4NTgsIDB4MWUsIDB4NWIsIDB4YSwgMHgxZiwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHhlMiwgMHg4MCwgMHhiOCwgMHhmNywgMHhmMywgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweGEyLCAweDhiLCAweGJlLCAweGYzLCAweGNjLCAweDhiLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhYSwgMHhlMCwgMHhmNywgMHg3YiwgMHhjYywgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4NTUsIDB4YSwgMHhmYiwgMHg0MSwgMHhmYywgMHg2MywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGI3LCAweDUsIDB4MmQsIDB4YSwgMHhlLCAweGUyLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4ZjgsIDB4ZCwgMHhhMiwgMHg3YiwgMHhhMiwgMHhjZSwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGFhLCAweGUwLCAweGIwLCAweGM2LCAweGEsIDB4MTMsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNywgMHhmNywgMHg1YSwgMHgxNSwgMHg5YywgMHhiNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmUsIDB4MmQsIDB4YSwgMHhhOCwgMHhmOCwgMHgxMSwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZDcsIDB4YSwgMHhmOSwgMHgzNywgMHhlMywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4ZjcsIDB4NiwgMHgyYywgMHhhLCAweDlkLCAweGY4LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4YSwgMHhmYiwgMHgzLCAweGY3LCAweDIzLCAweGM1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg5MSwgMHg1NiwgMHhhLCAweDllLCAweDdiLCAweDgwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHhhLCAweGY5LCAweDM3LCAweGUzLCAweGEsIDB4ZjcsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhhLCAweGY3LCAweDNhLCAweGVmLCAweDlmLCAweGEsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg0NywgMHhhLCAweDdkLCAweDgxLCAweDlkLCAweGEsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhhYSwgMHgyYywgMHhhLCAweGUsIDB4ZDcsIDB4YSwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGUzLCAweGEsIDB4YWQsIDB4NTUsIDB4YSwgMHhhYSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDJjLCAweGEsIDB4ZSwgMHhkNywgMHhhLCAweGY4LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4MSwgMHhiYywgMHhmMiwgMHhmMiwgMHhlZCwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4ZjcsIDB4NiwgMHgyYywgMHhhLCAweGZiLCAweDQ5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NTgsIDB4YSwgMHhmNywgMHg1ZCwgMHgxNiwgMHgyMCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg4MCwgMHhhMCwgMHhmNywgMHg0NiwgMHhhMCwgMHhmOCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweGE2LCAweGRmLCAweGY3LCAweGE1LCAweGRlLCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MywgMHhmMiwgMHgxNSwgMHhmNywgMHhhLCAweGU2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4ZjcsIDB4NCwgMHhiYiwgMHhhMSwgMHg1ZiwgMHg1NywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweGZiLCAweDYzLCAweGZiLCAweDYsIDB4NTksIDB4NmQsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHgxZSwgMHhmNywgMHhhZiwgMHhmNywgMHhiNSwgMHgxNSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDZhLCAweDllLCAweDY2LCAweDFiLCAweGZiLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4ZmIsIDB4MzUsIDB4ZmIsIDB4MjcsIDB4MzgsIDB4YjgsIDB4NGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNSwgMHhmNywgMHgyZCwgMHhmNywgMHgxYywgMHhmNywgMHg0MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweGVjLCAweDY3LCAweGNlLCAweDU5LCAweGMxLCAweDFmLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4NmIsIDB4YTcsIDB4MjgsIDB4NjAsIDB4NjQsIDB4YWMsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHg2MywgMHg5MywgMHgxOSwgMHg2OCwgMHg3YSwgMHhhZiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDZiLCAweGFiLCAweDZjLCAweDE5LCAweGZiLCAweGYsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg2ZSwgMHhmNywgMHg5LCAweGJlLCAweGFmLCAweDVlLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4OTQsIDB4NDUsIDB4MTksIDB4ZSwgMHhiZSwgMHhhLCAweGRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4YSwgMHhmNywgMHhmZCwgMHhkYywgMHgxMywgMHg2YSwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YzMsIDB4YSwgMHgxMywgMHhhYSwgMHg1MSwgMHhhLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhjMSwgMHg5MiwgMHg3NiwgMHg3YywgMHgxZiwgMHgxMywgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDRiLCAweGZiLCAweDc0LCAweDZjLCAweGZiLCAweDUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxYiwgMHhhMiwgMHhhLCAweGE3LCAweDFmLCAweDgwLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTcsIDB4YSwgMHg3NywgMHg3MiwgMHg5OCwgMHg5NiwgMHg3MCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweDZhLCAweDk1LCAweDc0LCAweDcyLCAweDk0LCAweDcyLCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhNCwgMHhhLCAweGE2LCAweGY3LCAweDE5LCAweDI2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5MSwgMHhmNywgMHhmYywgMHhiNywgMHhhLCAweGZiLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyNiwgMHhjNSwgMHhhLCAweDdiLCAweDhlLCAweDU2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg3ZSwgMHg4MCwgMHhhLCAweGE0LCAweGEsIDB4ZjcsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhhLCAweGY3LCAweDMzLCAweGVkLCAweDlmLCAweGEsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg0NywgMHhhLCAweDc3LCAweDdmLCAweDlkLCAweGEsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmYywgMHg5NSwgMHgyNiwgMHhhLCAweGUsIDB4ODAsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxOCwgMHhhMCwgMHg4YywgMHhhMCwgMHg4YiwgMHhiZSwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNjLCAweDhiLCAweDc3LCAweDkyLCAweGEsIDB4ZjcsIDB4MzksIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGZiLCAweGJiLCAweGZjLCAweGE0LCAweDI2LCAweGEsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGEwLCAweGY4LCAweDIxLCAweGEwLCAweGU3LCAweGFjLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhkZiwgMHhmNywgMHhhNSwgMHhkZiwgMHgxMywgMHhlZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweGY4LCAweDk5LCAweDYwLCAweGEsIDB4OWMsIDB4YTYsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhhNywgMHgxZiwgMHg4MCwgMHhhOCwgMHhhOSwgMHg3ZiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDQzLCAweGEsIDB4NzcsIDB4NzQsIDB4OTcsIDB4OTYsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHhkNiwgMHg5NSwgMHg3MywgMHg3MSwgMHg5NSwgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGEsIDB4ZmIsIDB4MjIsIDB4ZmMsIDB4MTQsIDB4MjYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ODAsIDB4YTAsIDB4ZjgsIDB4MjUsIDB4YTAsIDB4ZDcsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhhNiwgMHhkZiwgMHhkYiwgMHhlZCwgMHhlYSwgMHhkZiwgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDEzLCAweGZjLCAweGE2LCAweGY3LCAweDE5LCAweDI2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhmOCwgMHgzZCwgMHg1OCwgMHhhLCAweDEzLCAweGZhLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHhkMiwgMHg4MCwgMHhmNywgMHgzLCAweGY3LCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZCwgMHg1MywgMHhiOSwgMHhmNywgMHgxNiwgMHhmNywgMHgzLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWYsIDB4ZjcsIDB4MywgMHgyMywgMHhlMSwgMHgxMywgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweGY3LCAweDdhLCAweDE1LCAweGY4LCAweDhjLCAweGI5LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NiwgMHhmNywgMHg4YiwgMHhmNywgMHgyZiwgMHgxNSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDhlLCAweGEsIDB4OGQsIDB4ZmMsIDB4NGUsIDB4MTUsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGUsIDB4ODIsIDB4YTIsIDB4ZjgsIDB4MjgsIDB4YTEsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhkZiwgMHhmNywgMHhhNSwgMHhkZiwgMHgxNywgMHhmNywgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDE1LCAweDc4LCAweDljLCAweDgyLCAweDk3LCAweGQ3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4ZDgsIDB4ZjcsIDB4NjIsIDB4ZjcsIDB4MWYsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhmYywgMHgyOCwgMHgxNSwgMHhmNywgMHg1MiwgMHhmOCwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YWEsIDB4NjcsIDB4ODgsIDB4NzEsIDB4NTgsIDB4MWEsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHhmYiwgMHg5YywgMHhmYiwgMHg0NywgMHgxZSwgMHg2MCwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDRiLCAweGZiLCAweDE3LCAweDUsIDB4YWUsIDB4NiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYwLCAweGM4LCAweGY3LCAweDEyLCAweDUsIDB4MTMsIDB4NTAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhmNywgMHgwLCAweGY3LCAweDU0LCAweGY3LCAweDAsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhjNiwgMHg0NCwgMHg5YywgMHgxZiwgMHhjNSwgMHhmNywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2OSwgMHg2LCAweDU0LCAweGZiLCAweDYsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCAweGZiLCAweDNiLCAweGZiLCAweDI0LCAweGZiLCAweDM0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4MWYsIDB4MTMsIDB4MCwgMHg1MywgMHhhMSwgMHg0YywgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDFlLCAweGUsIDB4YTAsIDB4YSwgMHhmNywgMHhkZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDNiLCAweGEsIDB4YWUsIDB4ZjcsIDB4OWQsIDB4YjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQsIDB4ZjcsIDB4MjUsIDB4YzUsIDB4YSwgMHg3YSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweGEsIDB4OWQsIDB4N2QsIDB4ODAsIDB4YSwgMHhhMCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OTIsIDB4ZjgsIDB4ODIsIDB4N2UsIDB4YSwgMHgzYiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDNiLCAweGEsIDB4ZSwgMHg4MiwgMHhiYSwgMHg2ZiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDRmLCAweGM3LCAweGY3LCAweDNkLCAweGE5LCAweGEsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhiMCwgMHhmNywgMHgzOSwgMHhmOCwgMHg4MCwgMHgxNSwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MTMsIDB4YmMsIDB4MzksIDB4YSwgMHg5MiwgMHhmYywgMHg0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweGEsIDB4MTMsIDB4YWMsIDB4MmUsIDB4YSwgMHgxMywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweGEsIDB4ODIsIDB4YmEsIDB4NmYsIDB4NzYsIDB4ZjgsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHgxMiwgMHhiNSwgMHhkOCwgMHhjOSwgMHhjNiwgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4ZjcsIDB4ZGQsIDB4ZjcsIDB4NzcsIDB4NTMsIDB4YSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDJiLCAweGEsIDB4MTMsIDB4N2MsIDB4NWQsIDB4YSwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4MjgsIDB4ZjcsIDB4ZGUsIDB4MjMsIDB4YSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDYyLCAweGI4LCAweGY4LCAweGVlLCAweDc3LCAweGY3LCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MTIsIDB4ZjgsIDB4MTYsIDB4YzcsIDB4YSwgMHhkYiwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweGY3LCAweDUsIDB4N2UsIDB4MWIsIDB4NzksIDB4M2QsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHg1YiwgMHgxZiwgMHg5OCwgMHhhLCAweDllLCAweDRmLCAweGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhZiwgMHhmYiwgMHgzMiwgMHg3YSwgMHhhLCAweDg0LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4OTEsIDB4ODQsIDB4MWYsIDB4OTMsIDB4ODEsIDB4N2YsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg5NiwgMHhhLCAweDFmLCAweDEzLCAweDcwLCAweDcwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg5OSwgMHg4MiwgMHg5OSwgMHg4MywgMHgxZiwgMHg5OCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDg0LCAweDc3LCAweGE3LCAweGEsIDB4NmYsIDB4ZjgsIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHhhLCAweGUsIDB4ZmIsIDB4NGMsIDB4NzYsIDB4ZjcsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOCwgMHgyZCwgMHhiNiwgMHhmNywgMHg4NiwgMHg3NywgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NzcsIDB4MWYsIDB4ODksIDB4OGQsIDB4OTEsIDB4OWMsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjZSwgMHg4ZSwgMHg5NywgMHgxOSwgMHgxMywgMHg5MCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDU4LCAweDgxLCAweDU4LCAweDg0LCAweDU5LCAweDg1LCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4NywgMHhiYSwgMHg5YSwgMHg3ZCwgMHg3NSwgMHg3YSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDg1LCAweDc1LCAweDFmLCAweDZhLCAweGZiLCAweDksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweGZjLCAweDY0LCAweDc2LCAweDM1LCAweDgsIDB4NmIsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHhkYSwgMHhhLCAweDc0LCAweDY2LCAweDkwLCAweGI5LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ZTUsIDB4OTMsIDB4YWYsIDB4MWYsIDB4ZSwgMHhlMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDc2LCAweGY5LCAweDFiLCAweDc3LCAweGUyLCAweGVkLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4YzYsIDB4YSwgMHg1NCwgMHhiMywgMHgxMywgMHhmNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDljLCAweGQzLCAweDE1LCAweDZhLCAweGY3LCAweDNmLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNiwgMHg3ZCwgMHg1ZSwgMHhmNywgMHhmLCAweDdlLCAweDFiLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4M2QsIDB4N2MsIDB4NWIsIDB4ODMsIDB4OCwgMHgxMywgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGEsIDB4OWYsIDB4NDMsIDB4ZTIsIDB4YSwgMHhhZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDdhLCAweGEsIDB4ODIsIDB4ODMsIDB4OTMsIDB4OTIsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg5MiwgMHg4MiwgMHg4MCwgMHg5MSwgMHg3ZCwgMHg5NiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4NzQsIDB4NzAsIDB4YSwgMHg3NSwgMHg5NywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDgzLCAweDFmLCAweDk5LCAweDgyLCAweDlhLCAweDg0LCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YSwgMHhmYiwgMHhkLCAweGY4LCAweDc5LCAweDU4LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhmOCwgMHgyNSwgMHhhLCAweGQ3LCAweGEsIDB4ZjgsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhhLCAweGY3LCAweDcyLCAweGY3LCAweDYsIDB4M2YsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDg0LCAweDM4LCAweDdiLCAweDY1LCAweDg5LCAweDE5LCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhlLCAweDZlLCAweGEsIDB4NTQsIDB4NWUsIDB4OGIsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhhYywgMHhlNCwgMHhhYiwgMHhmNywgMHgxMSwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweGRlLCAweDk5LCAweGJjLCAweGZiLCAweDIzLCAweDM2LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzEsIDB4YWEsIDB4ZjUsIDB4OWIsIDB4ODIsIDB4YzgsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhjNCwgMHhhLCAweGMzLCAweDlmLCAweDc4LCAweDZlLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4NzcsIDB4ODUsIDB4NzYsIDB4MWYsIDB4NGYsIDB4ZmIsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHg1MCwgMHg3ZSwgMHg1YiwgMHhlZSwgMHhjNiwgMHg1YywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDdhLCAweDRkLCAweDc5LCAweDdlLCAweDVhLCAweDgyLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhkNywgMHhhLCAweGY5LCAweDRhLCAweDc3LCAweDEsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHgzLCAweGY3LCAweDc0LCAweGQzLCAweGEsIDB4N2UsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHg5NywgMHg5YywgMHg5NCwgMHhhMCwgMHg4ZCwgMHg5MiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweGY3LCAweGFmLCAweGVjLCAweGJkLCAweDk3LCAweGI5LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4Y2MsIDB4ZjcsIDB4OGUsIDB4ODYsIDB4OTAsIDB4NTcsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHg4MiwgMHg1NywgMHg4NSwgMHgxOSwgMHg3YiwgMHg3LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4ODIsIDB4NzEsIDB4ODEsIDB4NmYsIDB4ZmIsIDB4MCwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDEsIDB4MWYsIDB4NDMsIDB4NjcsIDB4N2YsIDB4NWQsIDB4ZDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHg1LCAweDYyLCAweGZiLCAweDI4LCAweDZiLCAweGZiLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhiNSwgMHhhLCAweGY4LCAweGRmLCAweDgzLCAweGFiLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4ZjcsIDB4YmIsIDB4ZTksIDB4YSwgMHg3OCwgMHhhYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweGY3LCAweDAsIDB4MTMsIDB4YjQsIDB4ZjksIDB4ODQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHgxNSwgMHg5ZiwgMHg4OSwgMHhjZCwgMHhmNywgMHg3YSwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDUsIDB4MzcsIDB4NjQsIDB4N2IsIDB4ODAsIDB4ZmIsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhjYiwgMHhmNywgMHg3NywgMHg1LCAweDlhLCAweDhmLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWMsIDB4YTYsIDB4MWIsIDB4ZWIsIDB4NiwgMHhmNywgMHhjLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4MzgsIDB4MWYsIDB4OWIsIDB4NiwgMHhhYSwgMHhmNywgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmMsIDB4NSwgMHg2LCAweDdiLCAweDcxLCAweDhmLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4MWYsIDB4MTMsIDB4YWMsIDB4OGYsIDB4NmUsIDB4NmQsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHgxYiwgMHhmYiwgMHg1ZSwgMHhmYiwgMHg1MywgMHhmYiwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDg4LCAweGZiLCAweDE0LCAweGYwLCAweDI3LCAweGY3LCAweGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhhZSwgMHg4ZCwgMHg4ZCwgMHhhZCwgMHgxZiwgMHgxMywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGFlLCAweGFlLCAweDhkLCAweGIzLCAweDFiLCAweGY3LCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjYywgMHhmNywgMHgzYSwgMHg3YiwgMHg5MSwgMHg1LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4NTYsIDB4NDIsIDB4ZmIsIDB4MzcsIDB4MWIsIDB4NDYsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHhhZSwgMHg5OSwgMHg5NSwgMHhhZCwgMHg5MCwgMHg5ZiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGY3LCAweDUyLCAweDUsIDB4ZjcsIDB4MWYsIDB4YTcsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHgxZiwgMHg4NywgMHg3MSwgMHg4ZiwgMHhhMCwgMHg4NSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZmIsIDB4YmEsIDB4NzIsIDB4MTUsIDB4MTMsIDB4YWMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweDZkLCAweDcyLCAweDRiLCAweDIxLCAweDFiLCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4ZjcsIDB4MjAsIDB4YjYsIDB4ZjcsIDB4NDUsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDhlLCAweGY3LCAweDQyLCAweGNhLCAweGI1LCAweDZjLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4N2UsIDB4NjIsIDB4ODQsIDB4NzAsIDB4MWYsIDB4ZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDdmLCAweGEwLCAweDc2LCAweGI1LCAweDc3LCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4YTIsIDB4MTIsIDB4OWYsIDB4ZGUsIDB4MTMsIDB4NTgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhjMywgMHgxNSwgMHg2MiwgMHg5ZSwgMHhiMywgMHg3MCwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGUwLCAweGQ2LCAweGNmLCAweGIxLCAweGIwLCAweDFmLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4NSwgMHg1ZiwgMHg1MiwgMHg2MywgMHg2YywgMHg1OSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDU0LCAweDk5LCAweGNmLCAweGEwLCAweDhkLCAweGFmLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4MWYsIDB4OTMsIDB4OTcsIDB4ZjAsIDB4OGEsIDB4ZTUsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweGI3LCAweGFiLCAweDllLCAweGI2LCAweGE2LCAweDFhLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ZDQsIDB4NDksIDB4NjEsIDB4NWMsIDB4ODYsIDB4NDAsIDB4M2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg5MywgMHg4OSwgMHg3MywgMHhkMywgMHgzMiwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4MjksIDB4ZmIsIDB4MzcsIDB4ZmIsIDB4MWUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHgzOCwgMHhmYiwgMHgzLCAweGRmLCAweDYzLCAweGMyLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4YWMsIDB4YWQsIDB4YWUsIDB4MWUsIDB4ZmIsIDB4NWMsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg1LCAweGUxLCAweGY3LCAweDU3LCAweGU2LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4NjEsIDB4NmUsIDB4MWUsIDB4MTMsIDB4OTgsIDB4NjYsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhjMSwgMHhmYiwgMHhlLCAweDQ2LCAweDhiLCAweGQ2LCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZjcsIDB4YjIsIDB4ZWEsIDB4MTUsIDB4ZjcsIDB4OCwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweGVhLCAweGMxLCAweDFiLCAweGEyLCAweDkzLCAweDcwLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4ODMsIDB4NWMsIDB4NTQsIDB4NjAsIDB4MWYsIDB4NmEsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg4NCwgMHg0NCwgMHg3NSwgMHg4LCAweGUsIDB4NzksIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg3NiwgMHhmOSwgMHgxYywgMHhhYywgMHg4YywgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweDlmLCAweGM3LCAweGUzLCAweDEzLCAweDZjLCAweGI5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHg4NSwgMHg4MywgMHg5ZSwgMHgxZiwgMHgxMywgMHhhYywgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGFhLCAweDdmLCAweGIyLCAweDZkLCAweGEsIDB4MTMsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhmNywgMHg1YiwgMHg1LCAweDc0LCAweDYsIDB4NzgsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg4NSwgMHg3OCwgMHgxYiwgMHg3OCwgMHg3NSwgMHg5MSwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDFmLCAweDEzLCAweGFjLCAweDkxLCAweDc5LCAweDdkLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4NjQsIDB4YSwgMHgxMywgMHg2YywgMHhmNywgMHg5OCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDUyLCAweGEsIDB4YWIsIDB4OTMsIDB4NzYsIDB4ZjgsIDB4NDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhmNywgMHg3MCwgMHg3NywgMHgxMiwgMHhmNywgMHgxLCAweGQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4ZjcsIDB4MjgsIDB4MjUsIDB4ZDcsIDB4MTMsIDB4ZjQsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDk5LCAweDlhLCAweDg3LCAweDg2LCAweDk5LCAweDFmLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4OWIsIDB4ODYsIDB4OWEsIDB4MWIsIDB4YzMsIDB4ZTgsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweGI1LCAweDZkLCAweGI2LCAweDZkLCAweGIzLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4YjQsIDB4NmMsIDB4YjIsIDB4YWIsIDB4MWEsIDB4YmMsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhhMSwgMHgxZSwgMHgxMywgMHhmOCwgMHhjYywgMHhhOCwgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDFmLCAweDliLCAweDYsIDB4YmIsIDB4YSwgMHg3YiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDkwLCAweDdlLCAweDFmLCAweDhmLCAweDgwLCAweDdlLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4MWIsIDB4MjEsIDB4N2QsIDB4M2IsIDB4NmMsIDB4NjMsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHhhYSwgMHg2MCwgMHgxZiwgMHgxMywgMHhmNCwgMHhhOCwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDY1LCAweDZiLCAweGI0LCAweGEsIDB4ZjcsIDB4NjUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg1MiwgMHhhLCAweGY3LCAweDViLCAweGEwLCAweDc2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4ZGYsIDB4YSwgMHhmNywgMHg4ZCwgMHhjNiwgMHhhLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4Y2YsIDB4YSwgMHg1MSwgMHg4ZiwgMHg2YywgMHg5MCwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDk0LCAweDhkLCAweDk2LCAweDhmLCAweDk4LCAweDFlLCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjEsIDB4ZjcsIDB4NmYsIDB4ZjcsIDB4YTIsIDB4YWIsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg5MywgMHhhNiwgMHg5OCwgMHgxOSwgMHgxMywgMHhiYywgMHg5YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUxLCAweDcsIDB4MTMsIDB4Y2MsIDB4N2IsIDB4NywgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweGE2LCAweDg2LCAweDczLCAweDFhLCAweDg0LCAweDg5LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4ODAsIDB4MWUsIDB4N2MsIDB4NjQsIDB4ZmIsIDB4YywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFjLCAweDVlLCAweDUzLCAweDczLCAweGU3LCAweDZlLCAweGYwLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4OCwgMHg4OCwgMHg5NiwgMHg4YiwgMHg5NCwgMHg5MywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGEzLCAweDk1LCAweGI4LCAweDFlLCAweDEzLCAweGJjLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODMsIDB4NywgMHgxMywgMHhjYywgMHg3YiwgMHg3LCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4OTMsIDB4OGEsIDB4OWIsIDB4NTIsIDB4ZDgsIDB4ZmIsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg0YiwgMHhmYiwgMHg1ZSwgMHg3OCwgMHg0OSwgMHg2NywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDg3LCAweDE5LCAweGY3LCAweDNmLCAweGY5LCAweDg1LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YmMsIDB4MjEsIDB4YSwgMHhmNywgMHg1YiwgMHg4YiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGQ5LCAweGFmLCAweGY3LCAweDcwLCAweDc3LCAweDUwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlMywgMHhmOSwgMHg0NiwgMHg1MiwgMHhhLCAweGFiLCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4NTAsIDB4YzcsIDB4ZjcsIDB4N2QsIDB4NzcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkOCwgMHhkMCwgMHgxNywgMHhiYSwgMHhhLCAweGFjLCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4NzcsIDB4YWMsIDB4MWYsIDB4NzQsIDB4YjIsIDB4YjIsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhhZiwgMHhhLCAweDgyLCAweDhkLCAweDg1LCAweDhlLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGYsIDB4ODIsIDB4OTAsIDB4ODQsIDB4ODQsIDB4MWEsIDB4N2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg4OCwgMHg3ZiwgMHg4MSwgMHg3OCwgMHg4YiwgMHhhYywgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDU3LCAweGNlLCAweDdhLCAweDllLCAweDQ5LCAweDk5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4ZjcsIDB4ZWMsIDB4MTgsIDB4Y2EsIDB4YSwgMHhjMywgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDhlLCAweGIxLCAweDFiLCAweGY3LCAweDFjLCAweDYsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHgzOCwgMHhmNywgMHgxMCwgMHg1MiwgMHhhLCAweGZiLCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4ZjgsIDB4YTcsIDB4YTksIDB4ZjcsIDB4OGYsIDB4YTgsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGRmLCAweGY3LCAweGQxLCAweGRjLCAweDMsIDB4ZjcsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDgsIDB4MTUsIDB4ZjcsIDB4NCwgMHg2LCAweDY3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4NSwgMHhmYiwgMHg4LCAweDdlLCAweDgwLCAweDM5LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ODUsIDB4N2UsIDB4OGYsIDB4OTcsIDB4OTEsIDB4OGYsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg5MSwgMHgxZiwgMHg4ZiwgMHg5MSwgMHg4ZSwgMHg5MiwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDljLCAweDdjLCAweGEwLCAweDczLCAweDg1LCAweDY0LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4NmQsIDB4YTQsIDB4NjksIDB4YzIsIDB4ZjcsIDB4MTgsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MiwgMHhiMiwgMHg5MCwgMHgxZSwgMHhiMiwgMHhmNywgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZjcsIDB4ZSwgMHg2LCAweDkyLCAweGE5LCAweDUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHg2LCAweGY3LCAweDM0LCAweDlmLCAweDk5LCAweGU2LCAweGNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4OTcsIDB4OTIsIDB4ODQsIDB4ODUsIDB4ODUsIDB4ODgsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg4NSwgMHgxZiwgMHg4OCwgMHg4NiwgMHg4OCwgMHg4NiwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDcyLCAweGEyLCAweDdkLCAweDljLCAweGE1LCAweDlhLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YmUsIDB4NTksIDB4OWQsIDB4NmQsIDB4ZmIsIDB4MiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIwLCAweGZiLCAweDIwLCAweDc3LCAweDFlLCAweGZiLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4NzMsIDB4ZjgsIDB4OTUsIDB4NzYsIDB4ZDEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU2LCAweGY4LCAweDgwLCAweDE1LCAweGI0LCAweDYsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHhlMCwgMHgyMywgMHg1LCAweGIxLCAweDYsIDB4MzMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg1LCAweDVhLCAweDYsIDB4ZSwgMHg3MywgMHhmOCwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGQxLCAweGEsIDB4ZjcsIDB4ZCwgMHhmNywgMHhjNSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmQsIDB4ZjgsIDB4ODAsIDB4N2IsIDB4YSwgMHg2NiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWUsIDB4MjIsIDB4MmYsIDB4ZjQsIDB4NSwgMHg2NSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHg3MywgMHhmOCwgMHg4MCwgMHhjMywgMHhmMSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OSwgMHhhOSwgMHgzLCAweGY3LCAweDksIDB4ZjksIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg2MSwgMHg4YywgMHhmYiwgMHg4LCAweGY3LCAweDE5LCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ZDIsIDB4ZTIsIDB4OTksIDB4MWUsIDB4NmQsIDB4NiwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDZiLCAweDI5LCAweDI4LCAweDFiLCAweDI4LCAweDgxLCAweGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4MWYsIDB4ZSwgMHg3MywgMHhmOCwgMHg5MCwgMHhlZCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NjMsIDB4ZWQsIDB4MywgMHhmNywgMHg2MywgMHhmOCwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweGEsIDB4ZSwgMHg3MywgMHhmOCwgMHg4MCwgMHhhZCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM5LCAweGFiLCAweGEsIDB4ZjcsIDB4MzksIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhhZSwgMHg2OCwgMHhmNywgMHgzYiwgMHhmYiwgMHgxOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweGZiLCAweDE4LCAweGY3LCAweDM5LCAweDZhLCAweGFjLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4ODAsIDB4ZjcsIDB4MmYsIDB4ZjgsIDB4ZTMsIDB4MTUsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHg1ZiwgMHhjMiwgMHgxZSwgMHgxMywgMHg5OSwgMHgwLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4YjcsIDB4YzIsIDB4YzIsIDB4NWQsIDB4YjgsIDB4NTQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg0NCwgMHg4MCwgMHg1NCwgMHg1ZiwgMHg1ZSwgMHg1NCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDE2LCAweGFmLCAweGE4LCAweGE5LCAweGFmLCAweGFmLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NjcsIDB4NjcsIDB4NmMsIDB4NmUsIDB4NjcsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHg4MCwgMHhlNSwgMHhhLCAweGUsIDB4NzMsIDB4ZmIsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhmNywgMHgzOSwgMHg3NywgMHgxLCAweDc3LCAweGM1LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhiMywgMHgxNSwgMHg2ZSwgMHg3MSwgMHg1YSwgMHg0NCwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDU5LCAweGEzLCAweDc2LCAweGFhLCAweGJiLCAweGU4LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4YTMsIDB4MWUsIDB4NzUsIDB4OWMsIDB4NSwgMHg2ZiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDcyLCAweDc0LCAweDFiLCAweDdkLCAweDgxLCAweDk0LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4YTIsIDB4YzUsIDB4YTUsIDB4YjEsIDB4MWYsIDB4ZSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDljLCAweGYyLCAweDEyLCAweGVmLCAweGEyLCAweGEsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxMywgMHg4MCwgMHg4MCwgMHhhNywgMHg1NywgMHhhLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzUsIDB4OTUsIDB4OTYsIDB4NzIsIDB4MWYsIDB4OTYsIDB4NzIsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg3MCwgMHhkNiwgMHhhLCAweDczLCAweGY4LCAweDgyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4MSwgMHhlOCwgMHhmOCwgMHgxZCwgMHgzLCAweGU4LCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgzNiwgMHhlZSwgMHg5ZiwgMHhhLCAweDlhLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDcsIDB4YSwgMHg3YSwgMHg4MCwgMHg5ZCwgMHhhLCAweDljLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4NWUsIDB4YSwgMHhlLCAweGY3LCAweDU5LCAweGFkLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MSwgMHg4NSwgMHhmNywgMHg1OSwgMHgxNSwgMHhmOCwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4OTUsIDB4YWQsIDB4NSwgMHhmYywgMHg4OSwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhhOCwgMHhmNywgMHg1OSwgMHhiMSwgMHg2NSwgMHhiOSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ZjcsIDB4NTksIDB4MTUsIDB4ZmEsIDB4ZCwgMHg2LCAweDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjEsIDB4NSwgMHhmZSwgMHhkLCAweDYsIDB4ZSwgMHg3MywgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4M2YsIDB4Y2IsIDB4NGIsIDB4ZjcsIDB4NSwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGY3LCAweGNhLCAweGY5LCAweDFkLCAweDE1LCAweDc5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHg5MywgMHhiNSwgMHhhMCwgMHg4MCwgMHg5NiwgMHg3ZiwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGUwLCAweDdlLCAweDk2LCAweDdlLCAweDkzLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YSwgMHhlLCAweDczLCAweDkxLCAweGEsIDB4ZjcsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2LCAweDRiLCAweGNiLCAweDEzLCAweGUwLCAweGY3LCAweDM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4NDgsIDB4MTUsIDB4ZWEsIDB4YSwgMHhjOCwgMHg5YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4NjksIDB4ODMsIDB4NWMsIDB4ODQsIDB4NjEsIDB4NzYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg5NywgMHg4MSwgMHgxZSwgMHgxMywgMHhkMCwgMHg5OCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDgyLCAweDc5LCAweDFhLCAweDY2LCAweDU0LCAweDY4LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4MWUsIDB4ZSwgMHg3MywgMHhmYiwgMHgxNSwgMHhmNywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGQyLCAweGMwLCAweGEsIDB4MTMsIDB4YzAsIDB4YjcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDE1LCAweDZiLCAweGEsIDB4NzQsIDB4OTgsIDB4N2YsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxZSwgMHgxMywgMHhhMCwgMHg5NiwgMHg4MiwgMHg5NiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDgyLCAweGEsIDB4ZSwgMHhmNywgMHg1YiwgMHg5MSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2EsIDB4Y2IsIDB4NGIsIDB4ZjcsIDB4NCwgMHhlYywgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGY3LCAweDQsIDB4MTMsIDB4ZDQsIDB4ZjcsIDB4YzUsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZCwgMHgxNSwgMHg3OSwgMHhhLCAweGI4LCAweDkzLCAweGI1LCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2UsIDB4OTcsIDB4N2UsIDB4OTUsIDB4MWUsIDB4MTMsIDB4ZTQsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg4MCwgMHg5NCwgMHg5YiwgMHhiZCwgMHhhLCAweGY3LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4NzksIDB4YSwgMHhiOCwgMHg5MywgMHhiNSwgMHhhMywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDdlLCAweDk2LCAweDFlLCAweDEzLCAweGQ4LCAweDgwLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4OTMsIDB4OWIsIDB4YmQsIDB4YSwgMHhlLCAweGY3LCAweDViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4YSwgMHhmNywgMHg0NiwgMHhjMCwgMHhhLCAweGVjLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgxMywgMHhlNCwgMHhmNywgMHgzNCwgMHhmOCwgMHg0OCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweGEsIDB4NzUsIDB4OTYsIDB4ODAsIDB4OTcsIDB4ODEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkOCwgMHg5NywgMHg4MSwgMHg5OCwgMHg4MiwgMHg3YSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NmUsIDB4N2EsIDB4MTUsIDB4NTksIDB4YSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDgwLCAweDk2LCAweDgyLCAweDFlLCAweDEzLCAweGQ0LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4OWEsIDB4ODIsIDB4NzgsIDB4ODIsIDB4YSwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4ZmIsIDB4MTUsIDB4ZjcsIDB4N2EsIDB4MTIsIDB4ZGYsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGVjLCAweGMwLCAweGEsIDB4MTMsIDB4ZDAsIDB4YzQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweDE1LCAweDZiLCAweGEsIDB4NzUsIDB4OTcsIDB4N2YsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHgxZSwgMHgxMywgMHhiMCwgMHg5NywgMHg4MSwgMHg5NywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweDgyLCAweGEsIDB4ZjcsIDB4NjUsIDB4MTYsIDB4NmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweDk5LCAweDgwLCAweDk4LCAweDgwLCAweDFlLCAweDEzLCAweGE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTYsIDB4ODIsIDB4OTUsIDB4ODMsIDB4N2IsIDB4ODIsIDB4YSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4M2UsIDB4YTAsIDB4ZjcsIDB4NmYsIDB4NzcsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHhlNCwgMHgxNywgMHhmNywgMHgzMSwgMHhmYiwgMHgzMywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDYsIDB4YmIsIDB4ZjcsIDB4NjYsIDB4OTcsIDB4YzEsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxLCAweGE5LCAweGI3LCAweDE5LCAweDgxLCAweDhlLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4YjcsIDB4MWEsIDB4YTcsIDB4OGUsIDB4YTksIDB4OTEsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiYywgMHhhNywgMHg4MiwgMHg4MiwgMHhhMCwgMHgxZiwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDk3LCAweDg1LCAweDlhLCAweDFiLCAweGE4LCAweDliLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4MWYsIDB4MTMsIDB4ZTAsIDB4OWYsIDB4N2MsIDB4OWYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg3ZSwgMHg4NCwgMHg4MywgMHg3YSwgMHgxZSwgMHg4NCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDgzLCAweDVmLCAweDFiLCAweDk2LCAweGMzLCAweDlkLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4OWYsIDB4OCwgMHg5YSwgMHg5ZiwgMHg5NywgMHg5OCwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGIwLCAweDc3LCAweDllLCAweDc2LCAweDc0LCAweDcyLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjcsIDB4N2EsIDB4OGUsIDB4N2YsIDB4OGQsIDB4N2UsIDB4MWUsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHg4ZCwgMHg3ZiwgMHg3YywgMHgxYSwgMHg3OCwgMHg4OCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDY2LCAweDFlLCAweDYwLCAweDc1LCAweDkyLCAweDkzLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OTIsIDB4N2EsIDB4N2UsIDB4OTMsIDB4NzIsIDB4MWIsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3NywgMHg3NywgMHg3NiwgMHg5YiwgMHg3NiwgMHhhOCwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDkzLCAweDkzLCAweDllLCAweDFmLCAweDkzLCAweDllLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4YjMsIDB4MWIsIDB4N2YsIDB4NDUsIDB4NzMsIDB4NTUsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg5OSwgMHhmYiwgMHgyMCwgMHg3NiwgMHg1NiwgMHg2MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDgsIDB4ZSwgMHhmYiwgMHg1NywgMHg3NiwgMHhmNywgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweDc0LCAweDc2LCAweGIyLCAweDc2LCAweGY4LCAweDU4LCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2UsIDB4NzcsIDB4MTIsIDB4ZDgsIDB4ZTAsIDB4ZjcsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHgxMywgMHg5ZiwgMHhmNywgMHgzMCwgMHg3OSwgMHgxNSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDViLCAweDRjLCAweDRhLCAweDViLCAweDFhLCAweDc5LCAweDk5LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4YWEsIDB4YTAsIDB4YTMsIDB4ZGIsIDB4YWIsIDB4OGUsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHhhOSwgMHgxZSwgMHhjMiwgMHhiOCwgMHg2ZiwgMHhhZiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDllLCAweDlhLCAweGEwLCAweDlmLCAweDc4LCAweDliLCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NjYsIDB4NjcsIDB4NzEsIDB4NTAsIDB4MWIsIDB4OWIsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhiNSwgMHhiMCwgMHhhNCwgMHg4LCAweDg0LCAweDlkLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWUsIDB4MWEsIDB4ZDAsIDB4YjMsIDB4ZWUsIDB4YzMsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3ZiwgMHg5ZSwgMHg4NSwgMHg5YSwgMHhhMiwgMHgxYSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDljLCAweDhmLCAweDliLCAweDFlLCAweGM5LCAweGIxLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4MWIsIDB4OWYsIDB4OWYsIDB4OWEsIDB4YTAsIDB4OWUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg3OSwgMHgxZiwgMHg2NiwgMHg1YiwgMHg2ZiwgMHg1YywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweGJiLCAweGNhLCAweGNjLCAweGJiLCAweDFhLCAweDlkLCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4NzgsIDB4NmMsIDB4NzYsIDB4NzMsIDB4M2IsIDB4MWUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHg2YiwgMHg4OCwgMHg2YiwgMHg4MiwgMHg2ZCwgMHgxZSwgMHg1NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVlLCAweGE3LCAweDY3LCAweDFiLCAweDc2LCAweDc4LCAweDdjLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4YWYsIDB4NzcsIDB4OWUsIDB4N2IsIDB4OWUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhhZiwgMHhhNSwgMHhjNiwgMHgxYiwgMHg3YiwgMHg2MywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDY2LCAweDcyLCAweDgsIDB4OTIsIDB4NzksIDB4OGUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHgxYSwgMHg0NiwgMHg2MywgMHgyOCwgMHg1MywgMHg2MiwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGNmLCAweDk3LCAweDc4LCAweDkxLCAweDdjLCAweDc0LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4ODcsIDB4N2EsIDB4ODcsIDB4N2IsIDB4MWUsIDB4NGQsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg2OCwgMHgxYiwgMHgxMywgMHg5ZiwgMHg3NywgMHg3NywgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDc4LCAweDlmLCAweDdhLCAweDlkLCAweDFmLCAweGIwLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YmEsIDB4MWIsIDB4ZSwgMHg4NCwgMHhmNywgMHg2OCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweDc2LCAweGY3LCAweDg3LCAweDc3LCAweGFkLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4ZjcsIDB4OGEsIDB4MTMsIDB4OTgsIDB4YzAsIDB4ZjcsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxMywgMHg1OCwgMHg0NywgMHhjMSwgMHg1NCwgMHhjZiwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweGMzLCAweGNlLCAweDFlLCAweDEzLCAweGE4LCAweGNlLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4NDcsIDB4NDcsIDB4NTYsIDB4NTYsIDB4NDgsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGE4LCAweDgwLCAweGVmLCAweDEyLCAweGM0LCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNSwgMHhlZiwgMHhmNywgMHgzYiwgMHhlZiwgMHgyYywgMHhmNywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmMsIDB4ZWYsIDB4NDksIDB4ZjcsIDB4MywgMHgxMywgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGIyLCAweDE1LCAweDhmLCAweGEsIDB4MTMsIDB4ZDIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHgxNiwgMHg4ZiwgMHhhLCAweDEzLCAweGNjLCAweGY3LCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4NmYsIDB4YTAsIDB4NzUsIDB4YTcsIDB4YTcsIDB4YTIsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhhNywgMHg3NCwgMHhhMSwgMHg2ZiwgMHg2ZiwgMHg3NiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDFlLCAweGUsIDB4ZjksIDB4MTcsIDB4YjAsIDB4YSwgMHhjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQwLCAweGEsIDB4NzUsIDB4ZDAsIDB4YSwgMHhiMSwgMHhkMCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YjUsIDB4ZTAsIDB4ZjksIDB4NDIsIDB4ZjcsIDB4OSwgMHgzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmMsIDB4MjcsIDB4YmMsIDB4MzAsIDB4YSwgMHhmYiwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDExLCAweDZhLCAweGEsIDB4MWUsIDB4MTMsIDB4YjYsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhhLCAweDEzLCAweDZlLCAweGUwLCAweDUzLCAweGZjLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4YjUsIDB4NiwgMHhmOCwgMHhhZCwgMHhmOSwgMHg0OCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4NiwgMHhlLCAweDczLCAweGIwLCAweGY4LCAweDIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJlLCAweGY3LCAweDdhLCAweDMsIDB4YmUsIDB4ZjcsIDB4NmMsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDk2LCAweDYzLCAweGVmLCAweDZjLCAweGM4LCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4ZjcsIDB4MTYsIDB4OWUsIDB4YWEsIDB4OWMsIDB4NjksIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NzMsIDB4Y2UsIDB4YSwgMHhjNywgMHhmNywgMHg3MiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NWEsIDB4ZjcsIDB4NzMsIDB4MTUsIDB4ZmIsIDB4MTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHg3NywgMHg2YywgMHg3YSwgMHg0NCwgMHhhLCAweDgwLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4YWEsIDB4NGUsIDB4MWYsIDB4ZSwgMHhmYiwgMHg1MiwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDQyLCAweDc3LCAweDEsIDB4ODIsIDB4ODEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHg2LCAweGY3LCAweDM2LCAweGY5LCAweDQyLCAweDUsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4OGIsIDB4YjgsIDB4ZjcsIDB4NjUsIDB4YjEsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhmNywgMHg2YiwgMHhiMCwgMHgxLCAweGY3LCAweDRlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHg4YSwgMHhhMiwgMHgzLCAweGNlLCAweGY3LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZmIsIDB4NDEsIDB4ZjQsIDB4M2EsIDB4ZjYsIDB4ZjYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhiYSwgMHhkZiwgMHhiZiwgMHgxZSwgMHg3YSwgMHg5NCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NjMsIDB4MjYsIDB4NjQsIDB4NTcsIDB4MWIsIDB4ZmIsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhiZiwgMHhmNywgMHgzMSwgMHgxZiwgMHhmNywgMHhhYywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4YjEsIDB4NSwgMHhmYiwgMHhiNywgMHg2LCAweGE1LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4OTQsIDB4YTcsIDB4MWUsIDB4ZjcsIDB4YjUsIDB4NiwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDUsIDB4ZmIsIDB4YjUsIDB4NiwgMHhkNSwgMHg5NywgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIxLCAweGYxLCAweDFiLCAweGY3LCAweDYsIDB4OTEsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHgxZiwgMHhhMiwgMHhmNywgMHgyMiwgMHg2LCAweDllLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4YTUsIDB4MmMsIDB4MWIsIDB4NTIsIDB4ZmIsIDB4NDQsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1OCwgMHg0OSwgMHgxZiwgMHgyOCwgMHg2LCAweDdlLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlYiwgMHg2LCAweDgzLCAweDZlLCAweDgzLCAweDZmLCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4OCwgMHg0YSwgMHg2LCAweDdlLCAweDY1LCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDMsIDB4ZjcsIDB4OGQsIDB4OWYsIDB4OGEsIDB4NzYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHg5ZiwgMHgxMiwgMHhmNywgMHgzYiwgMHhkMiwgMHhmNywgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE1LCAweGY3LCAweGQwLCAweGQyLCAweDEzLCAweGJjLCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZCwgMHgxNSwgMHhmNywgMHgzZiwgMHg5ZiwgMHg2LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OGQsIDB4OTUsIDB4YmIsIDB4MWEsIDB4ZjcsIDB4YzAsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGI0LCAweDljLCAweDZjLCAweDY2LCAweDk0LCAweDFmLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4ZmIsIDB4ZWQsIDB4MzMsIDB4OWYsIDB4NiwgMHhiMCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGFhLCAweGI1LCAweDFiLCAweGJjLCAweGZiLCAweGMwLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg4ZCwgMHg4MSwgMHg1NywgMHg4NSwgMHgxZSwgMHhmNywgMHhkMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDE1LCAweGY3LCAweDE3LCAweDlmLCAweDYsIDB4NWUsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHhhNiwgMHhiNywgMHgxYSwgMHhmNywgMHg2NSwgMHg4ZCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4N2MsIDB4ZjcsIDB4MjksIDB4ZmIsIDB4YzYsIDB4NSwgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MmMsIDB4ZjcsIDB4YzgsIDB4NSwgMHg4ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDYsIDB4MTMsIDB4YmMsIDB4NWIsIDB4OGUsIDB4ODEsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgxZSwgMHg3NywgMHhmNywgMHgzZSwgMHg5ZiwgMHg3LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OGQsIDB4OTUsIDB4YmIsIDB4MWEsIDB4ZjcsIDB4ODksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDk3LCAweDlkLCAweGI3LCAweDhkLCAweDFlLCAweDlmLCAweDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHgzNCwgMHhmYiwgMHhjOSwgMHhmYiwgMHgyZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDUsIDB4ZmIsIDB4ZCwgMHg3NywgMHg2LCAweGE4LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NmQsIDB4OTcsIDB4MWYsIDB4ZmIsIDB4ODMsIDB4NywgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDcwLCAweDVmLCAweDg3LCAweDFlLCAweGUsIDB4ZjcsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHhmNywgMHg3MCwgMHgxNSwgMHhmOCwgMHg5NiwgMHhiNSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2LCAweDYsIDB4ZSwgMHhmYiwgMHg2MywgMHhhMywgMHg3MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZjMsIDB4NzYsIDB4ZjgsIDB4MmMsIDB4YWIsIDB4ZjcsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgxMiwgMHgxMywgMHhiOCwgMHhiOCwgMHhmOCwgMHgyMCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUyLCAweDYsIDB4ODEsIDB4NzUsIDB4NTMsIDB4ZmIsIDB4YjMsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzLCAweDgsIDB4NTUsIDB4ODAsIDB4NzAsIDB4MjIsIDB4NTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3NywgMHg4NywgMHg4ZSwgMHg5NSwgMHg5MCwgMHg4ZSwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDkzLCAweDFmLCAweDEzLCAweDc4LCAweDhkLCAweDkxLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OTEsIDB4MWEsIDB4OTgsIDB4ODIsIDB4YTMsIDB4NzAsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg2OCwgMHg3YywgMHg3YSwgMHg5OCwgMHg1ZSwgMHhjYywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4YzMsIDB4ZjcsIDB4MzQsIDB4ZjcsIDB4ZiwgMHhhNywgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGY3LCAweGQ0LCAweDUsIDB4ZjcsIDB4MmYsIDB4NiwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDg3LCAweDg2LCAweDg4LCAweDhiLCAweDg3LCAweDhhLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4NmUsIDB4MjAsIDB4NTMsIDB4ZmIsIDB4NTIsIDB4NjYsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg5ZCwgMHg3NywgMHhhYSwgMHhiOCwgMHhiNywgMHhiOSwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDFlLCAweDdiLCAweDk0LCAweDUsIDB4NzgsIDB4N2IsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg3OCwgMHgxYiwgMHg4NiwgMHg4NCwgMHg4ZCwgMHg5NCwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweGY3LCAweGNlLCAweDkyLCAweGE3LCAweDFmLCAweDkwLCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OTEsIDB4OGEsIDB4OGUsIDB4ODYsIDB4OGUsIDB4MTgsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg4OSwgMHg4OSwgMHg3YiwgMHgxZiwgMHg4OSwgMHg3YiwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDZmLCAweDFiLCAweGZiLCAweDJhLCAweDYsIDB4ZjcsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhhNywgMHhmMCwgMHhlYSwgMHgxYiwgMHg5ZiwgMHg5YSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDg2LCAweDg4LCAweDg3LCAweDg4LCAweDg1LCAweDFmLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODcsIDB4ODMsIDB4N2QsIDB4MWEsIDB4NzAsIDB4OWIsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg5ZiwgMHhhNSwgMHg5OSwgMHhiMiwgMHhiYSwgMHg1NSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGZiLCAweDM3LCAweDU4LCAweGZiLCAweDMxLCAweDJiLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4MzQsIDB4NiwgMHhlLCAweGZiLCAweDYwLCAweGE0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4NzYsIDB4ZjgsIDB4MjksIDB4YWIsIDB4ZjcsIDB4N2MsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmYiwgMHgyMSwgMHhkMywgMHgxNywgMHhmNywgMHg2YywgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDE1LCAweGQyLCAweDlkLCAweGIwLCAweGY3LCAweDM1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgxYiwgMHgxMywgMHhmOCwgMHhhOSwgMHg5NywgMHg3ZCwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDg2LCAweDdmLCAweDgxLCAweDdkLCAweDFhLCAweDg1LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4OGUsIDB4ODUsIDB4MWUsIDB4OGUsIDB4ODUsIDB4OGUsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg4NSwgMHg2NywgMHhmYiwgMHgyNCwgMHgxOCwgMHhmYiwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweDE1LCAweGU0LCAweDYsIDB4ODcsIDB4NzksIDB4NWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2NCwgMHhmYiwgMHg0ZSwgMHg4LCAweDRlLCAweDdlLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4NTcsIDB4MWIsIDB4NzUsIDB4ODgsIDB4OGYsIDB4OTQsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg5MiwgMHg4ZCwgMHg5MiwgMHgxZiwgMHg4ZCwgMHg5MSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDkyLCAweDFhLCAweDllLCAweDdjLCAweDljLCAweDc3LCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4NmMsIDB4NzcsIDB4N2UsIDB4OTQsIDB4NWIsIDB4ZDEsIDB4ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZSwgMHhmNywgMHgzLCAweGY3LCAweDQ3LCAweGIzLCAweDFlLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4Y2EsIDB4NSwgMHhmNywgMHgzYSwgMHg2LCAweDdhLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4ZmIsIDB4NjcsIDB4NTMsIDB4MWEsIDB4NmEsIDB4OWUsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHhhZCwgMHhiMCwgMHg5YywgMHhlMywgMHhjOSwgMHgxZSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDUsIDB4NzAsIDB4NzQsIDB4NjcsIDB4NjEsIDB4NzksIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg4NCwgMHg4ZCwgMHg5NSwgMHgxZiwgMHgxMywgMHgzMCwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFkLCAweGY4LCAweGMwLCAweDk0LCAweGFjLCAweDFlLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OGMsIDB4OTAsIDB4OGYsIDB4MWEsIDB4OTAsIDB4ODksIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4NywgMHg4NSwgMHg4OCwgMHg4OSwgMHg4NCwgMHgxZSwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDg0LCAweDg4LCAweDgzLCAweDFiLCAweDgzLCAweDdkLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4N2IsIDB4MWYsIDB4OGQsIDB4N2IsIDB4N2EsIDB4OGUsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgyZSwgMHg0YSwgMHhmYiwgMHgxZSwgMHhmYiwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4MWYsIDB4MzAsIDB4NiwgMHhlLCAweDc5LCAweDlkLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4OTgsIDB4ZjcsIDB4NjgsIDB4OWMsIDB4OTEsIDB4OTIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY0LCAweDhmLCAweGY4LCAweDZjLCAweDhkLCAweDcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHgzOSwgMHg2MywgMHhmZiwgMHhjLCAweDksIDB4YWEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweGIsIDB4ZjgsIDB4ODgsIDB4MTQsIDB4ZjcsIDB4ZjksIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHgxMywgMHgwLCAweGNkLCAweDIsIDB4MCwgMHgxLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHgwLCAweDE3LCAweDAsIDB4MzEsIDB4MCwgMHgzNCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjEsIDB4MCwgMHg2NywgMHgwLCAweDljLCAweDAsIDB4YTUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDAsIDB4YmYsIDB4MCwgMHhmMywgMHgxLCAweGYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDEsIDB4MjcsIDB4MSwgMHgyYywgMHgxLCAweDRlLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHgxLCAweDU5LCAweDEsIDB4NmIsIDB4MSwgMHg3MiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4MSwgMHhhMiwgMHgxLCAweGI4LCAweDEsIDB4ZGYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweDIsIDB4MiwgMHgyLCAweDIxLCAweDIsIDB4MmEsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDIsIDB4NTcsIDB4MiwgMHg2MywgMHgyLCAweDZlLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHgyLCAweDk5LCAweDIsIDB4YWUsIDB4MiwgMHhiZCwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTMsIDB4MiwgMHhlYSwgMHgyLCAweGVmLCAweDIsIDB4ZjcsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDMsIDB4NTMsIDB4MywgMHg2MiwgMHgzLCAweDcxLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHgzLCAweDhmLCAweDMsIDB4YTAsIDB4MywgMHhhZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4NCwgMHgxZiwgMHg0LCAweDJjLCAweDQsIDB4MzIsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweDQsIDB4NDQsIDB4NCwgMHg0YywgMHg0LCAweDUxLCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg0LCAweDYxLCAweDQsIDB4NmEsIDB4NCwgMHg3MSwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4NCwgMHg4ZCwgMHg0LCAweDlkLCAweDQsIDB4YTcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweDQsIDB4YmIsIDB4NCwgMHhjOCwgMHg0LCAweGQ0LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHg1LCAweDMsIDB4NSwgMHhhLCAweDUsIDB4MmQsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDUsIDB4NTMsIDB4NSwgMHg1ZSwgMHg1LCAweDY0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg1LCAweDhjLCAweDUsIDB4YWMsIDB4NSwgMHhjYywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGQsIDB4NSwgMHhlMiwgMHg1LCAweGVjLCAweDUsIDB4ZjYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4NiwgMHgxZSwgMHg2LCAweDI2LCAweDYsIDB4MzYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDYsIDB4NTUsIDB4NiwgMHg2NCwgMHg2LCAweDZkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg2LCAweDdiLCAweDYsIDB4OGIsIDB4NiwgMHg5YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4NiwgMHhhNywgMHg2LCAweGFmLCAweDYsIDB4YzMsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDYsIDB4ZTIsIDB4NiwgMHhlOCwgMHg2LCAweGVjLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3LCAweGEsIDB4NywgMHgxZCwgMHg3LCAweDIyLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHg3LCAweDM2LCAweDcsIDB4NDgsIDB4NywgMHg1YSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NywgMHg2NywgMHg3LCAweDZmLCAweDcsIDB4NzUsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDcsIDB4OTcsIDB4NywgMHhhMSwgMHg3LCAweGFiLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHg3LCAweGJjLCAweDcsIDB4YzEsIDB4NywgMHhjNiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2IsIDB4NywgMHhjZiwgMHg3LCAweGQzLCAweDcsIDB4ZDcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDcsIDB4ZWUsIDB4NywgMHhmMywgMHg3LCAweGZjLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDgsIDB4MTYsIDB4OCwgMHgxOSwgMHg4LCAweDIyLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHg4LCAweDJkLCAweDgsIDB4MzMsIDB4OCwgMHgzYSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4OCwgMHg0NiwgMHg4LCAweDRiLCAweDgsIDB4NTksIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDgsIDB4NzUsIDB4OCwgMHg4MywgMHg4LCAweDkxLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg4LCAweGFiLCAweDgsIDB4YWYsIDB4OCwgMHhiMywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4OCwgMHhjZCwgMHg4LCAweGRhLCAweDgsIDB4ZTcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweDgsIDB4ZmMsIDB4OSwgMHg0LCAweDksIDB4YiwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4OSwgMHgxYywgMHg5LCAweDI4LCAweDksIDB4MzQsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDksIDB4M2UsIDB4OSwgMHg0MiwgMHg5LCAweDRkLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHg5LCAweDYwLCAweDksIDB4NmIsIDB4OSwgMHg2ZiwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4OSwgMHg3ZCwgMHg5LCAweDg0LCAweDksIDB4OGIsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDksIDB4OTUsIDB4OSwgMHg5YSwgMHg5LCAweGE0LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg5LCAweGI4LCAweDksIDB4YmIsIDB4OSwgMHhiZiwgMHg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4OSwgMHhkMSwgMHg5LCAweGRhLCAweDksIDB4ZTMsIDB4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweDksIDB4ZjUsIDB4OSwgMHhmZSwgMHhhLCAweDcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweGEsIDB4MTksIDB4YSwgMHgxZiwgMHhhLCAweDI1LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYiwgMHhhLCAweDMxLCAweGEsIDB4MzcsIDB4YSwgMHgzYiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEsIDB4YSwgMHg0NiwgMHhhLCAweDRhLCAweGEsIDB4NGUsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDcwLCAweGExLCAweDc1LCAweGE2LCAweGE2LCAweGExLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4YTYsIDB4NzUsIDB4YTEsIDB4NzAsIDB4NzAsIDB4NzUsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHgxZSwgMHhiLCAweDIwLCAweGEsIDB4MjUsIDB4YSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NzEsIDB4YjUsIDB4YjYsIDB4YWQsIDB4YWYsIDB4ZDUsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgzOCwgMHhhLCAweDQ3LCAweDg3LCAweDdiLCAweDUyLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg2LCAweGE0LCAweDZhLCAweGIyLCAweDVmLCAweGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDE1LCAweDIxLCAweGEsIDB4MTUsIDB4ZmIsIDB4NTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg1NCwgMHhlMCwgMHhhZSwgMHhhLCAweGY3LCAweDg0LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHg2ZSwgMHhmYiwgMHg3MSwgMHgxZSwgMHhmNCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGViLCAweGY3LCAweGRkLCAweGY3LCAweDVlLCAweGVmLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDgsIDB4ZmIsIDB4MTcsIDB4MmUsIDB4MmIsIDB4ZmIsIDB4ZGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHhmYiwgMHgxNiwgMHg4YiwgMHhmNywgMHgxYSwgMHhkOSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4ZjcsIDB4NWMsIDB4MTYsIDB4MjAsIDB4YSwgMHhlLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4YjgsIDB4NGUsIDB4ZjUsIDB4ZjcsIDB4MmQsIDB4ZjcsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0OSwgMHhmNywgMHhmLCAweGNkLCAweDZjLCAweGRkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmYiwgMHgyNiwgMHhmYiwgMHgyOCwgMHhmYiwgMHgzNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3LCAweDFlLCAweGRmLCAweDhhLCAweDE1LCAweGM5LCAweGU2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4NCwgMHhiOCwgMHhhNCwgMHg3ZCwgMHhmYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4M2MsIDB4ZmIsIDB4N2UsIDB4ZmIsIDB4NiwgMHg1OSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGU2LCAweDFlLCAweGIsIDB4MzUsIDB4YSwgMHg4MywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDE5LCAweDQ1LCAweGEsIDB4YiwgMHgzNiwgMHhhLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4N2MsIDB4NGQsIDB4MmUsIDB4MmMsIDB4ZmIsIDB4NjcsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg2YSwgMHg5ZCwgMHhjMCwgMHgxZSwgMHhiLCAweDNhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYiwgMHhhLCAweDM3LCAweGEsIDB4ZDIsIDB4YSwgMHhiLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4OWIsIDB4NiwgMHg1OCwgMHg4ZiwgMHg3YywgMHhhMSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDllLCAweDkyLCAweGExLCAweDkwLCAweDlmLCAweDFlLCAweGY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MWIsIDB4YTMsIDB4ZTEsIDB4OTAsIDB4YTAsIDB4Y2UsIDB4OTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHg5MywgMHhhLCAweGJjLCAweDg1LCAweDljLCAweDc2LCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NzksIDB4ODcsIDB4NzYsIDB4ODUsIDB4NzYsIDB4MWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGZjLCAweDFiLCAweDczLCAweDM2LCAweDg3LCAweDc3LCAweDRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4MTksIDB4YiwgMHg3MiwgMHhhLCAweDcwLCAweGE4LCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OTAsIDB4NDIsIDB4YSwgMHg3OSwgMHg4NywgMHg5YSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweDhjLCAweDk0LCAweGU2LCAweGY3LCAweGZiLCAweDFmLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NTksIDB4ODIsIDB4NTksIDB4ODUsIDB4OCwgMHhiLCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg1LCAweDg0LCAweDY0LCAweDJjLCAweDc5LCAweDcxLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4YSwgMHhiLCAweDNkLCAweGEsIDB4YjcsIDB4NzAsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHg1YiwgMHhhLCAweDFlLCAweDU0LCAweGEsIDB4YiwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NWQsIDB4YSwgMHhiLCAweGU1LCAweDRkLCAweGI5LCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MSwgMHgzYSwgMHhmYiwgMHgxMSwgMHgyNywgMHgxZSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweDE1LCAweGQxLCAweGMwLCAweGY3LCAweDRjLCAweGQ2LCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4NjUsIDB4NmYsIDB4NGUsIDB4NTYsIDB4ZmIsIDB4NGYsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg3YiwgMHhhOSwgMHhhOSwgMHgxZSwgMHhiLCAweDZhLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHhhLCAweGIsIDB4MTUsIDB4YjIsIDB4NiwgMHgzOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg0ZSwgMHhhLCAweDY5LCAweDZjLCAweDk3LCAweGIwLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGIsIDB4OTEsIDB4OGQsIDB4OTIsIDB4MWYsIDB4OGUsIDB4OTcsIDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhhLCAweGIsIDB4ZjcsIDB4ZDIsIDB4ZjcsIDB4MWYsIDB4MjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIsIDB4MTUsIDB4MzIsIDB4YSwgMHg3ZSwgMHg4MCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJlLCAweDc0LCAweGEsIDB4ZjcsIDB4MmYsIDB4YTksIDB4N2QsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg4YSwgMHg3ZCwgMHg4YSwgMHg3YSwgMHg0MSwgMHhhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3YiwgMHhmNywgMHg4YSwgMHg5YiwgMHg3LCAweDUxLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4YTAsIDB4N2YsIDB4ZDEsIDB4MmMsIDB4ZjgsIDB4YzAsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHg2LCAweGZiLCAweGNlLCAweGZjLCAweGIzLCAweDVhLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4YiwgMHg2ZSwgMHg4ZSwgMHgzMiwgMHhlZiwgMHhjNywgMHhjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGY3LCAweGUsIDB4ZGUsIDB4MWUsIDB4ZmIsIDB4NmIsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhlNSwgMHhlNSwgMHhmNywgMHg3MCwgMHhmNywgMHg5LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg3LCAweGIxLCAweGE5LCAweDdhLCAweDVmLCAweDc5LCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZDYsIDB4ODIsIDB4NmMsIDB4MWYsIDB4NWYsIDB4N2UsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZSwgMHhmYiwgMHgxZSwgMHgxYiwgMHg0YiwgMHg0MCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU0LCAweGMxLCAweGY0LCAweGY3LCAweGU4LCAweDk3LCAweGI5LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4OTMsIDB4YTQsIDB4YTIsIDB4YzUsIDB4MWIsIDB4YiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDUsIDB4NWYsIDB4NWUsIDB4NzcsIDB4NzIsIDB4N2MsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDkxLCAweDkyLCAweGFhLCAweGU3LCAweGY3LCAweGU5LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MWYsIDB4YiwgMHhmNywgMHgxZCwgMHhmMywgMHhkZCwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4YWYsIDB4NiwgMHgzMywgMHhmNywgMHgzZCwgMHg1LCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhiLCAweDE1LCAweGM1LCAweDg2LCAweDljLCAweDdmLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4MjcsIDB4ZmIsIDB4YWUsIDB4N2MsIDB4YSwgMHhmNywgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweGUzLCAweGY3LCAweDE5LCAweGIyLCAweDFlLCAweGY1LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg5NSwgMHhhZSwgMHg5NywgMHg5YywgMHhjNiwgMHg5NiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4NTMsIDB4YSwgMHgyZSwgMHhhLCAweDEzLCAweDc4LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiLCAweGI0LCAweGI5LCAweGY3LCAweDQyLCAweDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHg4YiwgMHg4NiwgMHg1YSwgMHg0MCwgMHhhLCAweGIsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHhkOSwgMHhlMSwgMHhjMSwgMHgxYiwgMHg5ZSwgMHg5OCwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDgzLCAweDgxLCAweGZiLCAweDEwLCAweGZiLCAweDYyLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODQsIDB4NzUsIDB4MTUsIDB4YTcsIDB4OGYsIDB4NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweGEyLCAweGVkLCAweGRjLCAweGRhLCAweDFhLCAweGIsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGMyLCAweDkwLCAweDdjLCAweDc2LCAweDFmLCAweDZmLCAweDNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4YSwgMHhiLCAweDRhLCAweGEsIDB4OGYsIDB4OTksIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHhmNywgMHhkNiwgMHg4OCwgMHg4ZCwgMHhiLCAweDdiLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4ODcsIDB4N2MsIDB4MWYsIDB4OWYsIDB4ODYsIDB4Y2YsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YywgMHg3OSwgMHg4ZiwgMHg4MSwgMHg3NSwgMHg4MiwgMHg3OCwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDE5LCAweDZjLCAweDc1LCAweGIsIDB4NjMsIDB4YSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDVkLCAweDUwLCAweDc5LCAweDFmLCAweGZiLCAweDksIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHg3YSwgMHg0ZCwgMHg3NiwgMHg3YSwgMHg1YSwgMHg4MiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MWYsIDB4ZGEsIDB4ZjcsIDB4YmYsIDB4NSwgMHg0MSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4MjAsIDB4NzUsIDB4NGMsIDB4NWEsIDB4NDEsIDB4OCwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDRjLCAweDJkLCAweDYwLCAweDFiLCAweGIsIDB4YjgsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMCwgMHhjZSwgMHg5NiwgMHgxZiwgMHg2ZiwgMHg2LCAweDc2LCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4NzQsIDB4NjUsIDB4MWIsIDB4YiwgMHgxYSwgMHg4NiwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweDkxLCAweDk0LCAweGQwLCAweGM5LCAweGE3LCAweGFiLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YTYsIDB4YmYsIDB4YjEsIDB4YTgsIDB4YTIsIDB4OCwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4ODQsIDB4OTcsIDB4NWYsIDB4YzEsIDB4N2IsIDB4OWQsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDdjLCAweDU2LCAweGQ5LCAweDdlLCAweDFiLCAweDgzLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODksIDB4YiwgMHhmNywgMHg3NiwgMHhmNywgMHg4YSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHhmOSwgMHg1NCwgMHgzMSwgMHhhLCAweGIsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg5ZCwgMHg3YywgMHg5YywgMHg3NiwgMHg4MCwgMHhiLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZiwgMHhlNSwgMHgxNywgMHhmNywgMHg5LCAweGI4LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4YjMsIDB4ZjcsIDB4MWMsIDB4YTQsIDB4Y2IsIDB4MWUsIDB4Y2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHhjNSwgMHhiOSwgMHhiYSwgMHgxYiwgMHhjYywgMHg4YywgMHg1MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGZiLCAweGIsIDB4MzEsIDB4ZmIsIDB4NGUsIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDcyLCAweDk2LCAweGE1LCAweDFmLCAweDdkLCAweDY0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4YTIsIDB4OWYsIDB4ODYsIDB4YTQsIDB4MWIsIDB4ZjcsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzNCwgMHhmNywgMHgzYSwgMHhmNywgMHgyZiwgMHhkMywgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM2LCAweDMyLCAweDM5LCAweDUyLCAweDQyLCAweDY4LCAweGIsIDB4NzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3OCwgMHg3NywgMHg3YiwgMHg3YSwgMHg4LCAweDQwLCAweDNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NzQsIDB4N2QsIDB4NDQsIDB4YSwgMHg4NCwgMHg5ZCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDVhLCAweDFmLCAweDk1LCAweDczLCAweDk3LCAweDc0LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4OCwgMHhiLCAweDE1LCAweDUxLCAweDYyLCAweDZlLCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4MWIsIDB4ODIsIDB4ODQsIDB4OTMsIDB4OTIsIDB4OTcsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhiLCAweGZiLCAweDgyLCAweDVjLCAweDFhLCAweDc5LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4YmEsIDB4YzMsIDB4YjcsIDB4YzIsIDB4YzYsIDB4YjIsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDE1LCAweGY3LCAweDI5LCAweGY3LCAweDk3LCAweDUsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGI3LCAweGZiLCAweDk3LCAweDUsIDB4YiwgMHg3NCwgMHgzOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDM3LCAweDc5LCAweDFhLCAweDdjLCAweDhkLCAweDY2LCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YTUsIDB4YTUsIDB4ZTYsIDB4Y2EsIDB4MWUsIDB4YiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDYsIDB4YzksIDB4ZjcsIDB4MzYsIDB4N2IsIDB4OTMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDQ0LCAweDYwLCAweDY1LCAweGZiLCAweDU1LCAweDFiLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1ZCwgMHhmNywgMHgzYywgMHhmYiwgMHg0LCAweGQ2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YywgMHhmYiwgMHg0NywgMHhmYiwgMHg3OCwgMHhiLCAweDEsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmOCwgMHgzLCAweDg1LCAweDE2LCAweGY4LCAweDhkLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmNywgMHgzYywgMHg3OCwgMHg4ZSwgMHg1LCAweDI0LCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4NmIsIDB4ZmIsIDB4MzgsIDB4MWIsIDB4ZmIsIDB4MmIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDc3LCAweGY4LCAweGVmLCAweDUsIDB4OTksIDB4ZmMsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDVkLCAweGZiLCAweDI2LCAweDllLCAweDg2LCAweDUsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhhYiwgMHhiOSwgMHhmNywgMHgyZCwgMHgxYiwgMHhmNywgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmMsIDB4NzMsIDB4ZmMsIDB4ZWYsIDB4NSwgMHhiLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NmQsIDB4YjksIDB4YzEsIDB4YWUsIDB4YjksIDB4Y2UsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3ZCwgMHg5OCwgMHg1LCAweDVjLCAweDY2LCAweDcyLCAweDZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MWIsIDB4ODksIDB4N2QsIDB4OGQsIDB4OWEsIDB4MWYsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhmNywgMHg4YiwgMHhiNiwgMHgxYSwgMHhiNSwgMHg3NCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDM4LCAweDJmLCAweGZiLCAweDFmLCAweDQxLCAweDVjLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OGQsIDB4Y2IsIDB4ZjcsIDB4NjUsIDB4ODgsIDB4OGQsIDB4NTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHg1NSwgMHg4MSwgMHg1NSwgMHg4MSwgMHgxOSwgMHhiLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2NywgMHg2LCAweGZiLCAweDIyLCAweDIyLCAweDMxLCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg2NiwgMHg2LCAweGUsIDB4MTUsIDB4OGUsIDB4NiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHg3MywgMHhhLCAweDU3LCAweDVmLCAweGI0LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4OGUsIDB4OTgsIDB4OTAsIDB4OTksIDB4MWYsIDB4YiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDMxLCAweGEsIDB4YiwgMHg4NCwgMHgxYiwgMHg3NSwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDc3LCAweDdhLCAweGIsIDB4YTcsIDB4ODAsIDB4NzEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MTUsIDB4MjAsIDB4YSwgMHhiLCAweGVhLCAweGEsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHhhLCAweGFiLCAweDY5LCAweDgzLCAweDVlLCAweDgzLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3ZCwgMHhhLCAweGY3LCAweDc2LCAweGFmLCAweGY4LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4YiwgMHhmYiwgMHgyMSwgMHhmYiwgMHgzNiwgMHg1YywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmYiwgMHgzYywgMHhmYiwgMHgyMywgMHg0YywgMHhhYiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweGVmLCAweGU2LCAweGU3LCAweDliLCAweDk2LCAweGIsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGI0LCAweDliLCAweDgxLCAweDZlLCAweDFmLCAweDcwLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODYsIDB4NWYsIDB4MWEsIDB4YiwgMHg5ZSwgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2IsIDB4ZjAsIDB4OWYsIDB4YSwgMHg5NSwgMHg5NywgMHg0NywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4ODIsIDB4OWQsIDB4YSwgMHhiLCAweDYwLCAweGZiLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmQsIDB4ZmIsIDB4NGYsIDB4ZmIsIDB4MjcsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDYsIDB4YTcsIDB4OTIsIDB4OWMsIDB4OWUsIDB4YTcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDE1LCAweDdiLCAweDRlLCAweDg2LCAweDc1LCAweDc0LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4OGIsIDB4YiwgMHg1ZiwgMHg5ZSwgMHg3YywgMHhhZiwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweGY3LCAweDExLCAweGY3LCAweDUsIDB4Y2YsIDB4MWUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGEwLCAweDg5LCAweGFhLCAweGY3LCAweDJkLCAweDUsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg3YiwgMHg2LCAweGIsIDB4MWIsIDB4MmUsIDB4M2MsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHg0YSwgMHg5MCwgMHg4MCwgMHhmNywgMHgxZSwgMHhmYiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGFjLCAweDY4LCAweGIwLCAweDZjLCAweDRiLCAweDFhLCAweDU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MzksIDB4MmQsIDB4MzEsIDB4NTMsIDB4ZGEsIDB4ZTQsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg5MCwgMHg4YywgMHg5MywgMHgxZSwgMHg3NywgMHg4ZCwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg2NiwgMHhhLCAweGE4LCAweDFmLCAweDgwLCAweGE3LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg3NywgMHhiLCAweDYwLCAweGEsIDB4OWQsIDB4YTgsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHhiLCAweGY4LCAweDY0LCAweGY3LCAweDI3LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4ZjcsIDB4NDksIDB4OGQsIDB4ODksIDB4OGMsIDB4OGMsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0OCwgMHg1LCAweGZiLCAweDQ1LCAweDYxLCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4NiwgMHg2YiwgMHgyMiwgMHg1LCAweGNhLCAweDYsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHg1LCAweGM1LCAweDYsIDB4YiwgMHgxNSwgMHg5MiwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDU1LCAweDliLCAweDc5LCAweDgsIDB4N2EsIDB4OWEsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZCwgMHg5OCwgMHgxYiwgMHg5MywgMHg4YiwgMHg5MSwgMHg4ZCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4OTAsIDB4ODksIDB4OGUsIDB4ODUsIDB4ODIsIDB4NDYsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2YiwgMHgxZSwgMHg2YywgMHg3MCwgMHg1NywgMHg2NSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDgsIDB4YiwgMHgxNSwgMHg0NSwgMHhiOSwgMHg1MCwgMHhkNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRlLCAweGYwLCAweGVkLCAweGY3LCAweGMsIDB4YiwgMHg5NCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NTksIDB4YSwgMHhiLCAweDFiLCAweDQxLCAweDdhLCAweDQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4ODEsIDB4MWYsIDB4YiwgMHgxYiwgMHhmNywgMHgxOSwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweGU5LCAweGNkLCAweDc3LCAweGIzLCAweDJlLCAweGU2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4ZTEsIDB4N2UsIDB4YTIsIDB4YmEsIDB4MWEsIDB4Y2UsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhjMiwgMHhmNywgMHhkLCAweDhmLCAweDIyLCAweDUyLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ODgsIDB4NSwgMHhiLCAweGY3LCAweDViLCAweDhiLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZmQsIDB4NzcsIDB4MSwgMHg4MywgMHhmOCwgMHhjYiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4MTYsIDB4ZjgsIDB4OTEsIDB4NiwgMHhjNSwgMHhmNywgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDkxLCAweDUsIDB4ZmIsIDB4MjYsIDB4NDksIDB4M2EsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhkLCAweDFiLCAweGIsIDB4MWYsIDB4N2EsIDB4OTksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDViLCAweDQ1LCAweDQ0LCAweGZiLCAweDUsIDB4MWIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDU0LCAweGRlLCAweGY3LCAweDE3LCAweGY3LCAweDI3LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODYsIDB4ZjcsIDB4NWMsIDB4ZjcsIDB4MjMsIDB4OTYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2ZiwgMHgxZiwgMHhiLCAweGY3LCAweGIsIDB4ZjcsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2NiwgMHhmNywgMHhiLCAweGFmLCAweDc3LCAweGE1LCAweDY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4ODAsIDB4NzYsIDB4N2QsIDB4YiwgMHg5ZCwgMHgxYiwgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHg3ZCwgMHg5NCwgMHg1LCAweDVmLCAweDY4LCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4NzgsIDB4MWIsIDB4YiwgMHg3ZiwgMHg5NywgMHg1LCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTksIDB4NjEsIDB4NjksIDB4NTUsIDB4MWIsIDB4YiwgMHgxYiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQwLCAweDUsIDB4ZDUsIDB4YTAsIDB4ODIsIDB4OTgsIDB4ZTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiLCAweDJkLCAweDY4LCAweDFlLCAweDk4LCAweDgzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg5NCwgMHhhNCwgMHhiNSwgMHhjNSwgMHgxYiwgMHhiYSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDZkLCAweDdjLCAweDhhLCAweDY3LCAweDJmLCAweDMyLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTksIDB4ZmIsIDB4MTYsIDB4NSwgMHhiLCAweDgwLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzYsIDB4ZjgsIDB4NDEsIDB4YTEsIDB4YiwgMHhiNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MiwgMHhmNywgMHgyMiwgMHhjNSwgMHhhLCAweDc4LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4YSwgMHg5ZiwgMHg3YSwgMHg4MCwgMHhhLCAweGI3LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyLCAweGY3LCAweDIzLCAweGM1LCAweGEsIDB4NzgsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhhLCAweDlmLCAweDdiLCAweDgwLCAweGEsIDB4ODIsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDUyLCAweDZmLCAweDQyLCAweDRmLCAweDQ4LCAweDFhLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NmIsIDB4YWQsIDB4OTMsIDB4YiwgMHg2NSwgMHgxYSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDVhLCAweDcyLCAweDZlLCAweDFlLCAweDYzLCAweDY5LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4N2IsIDB4MWIsIDB4YiwgMHgxNSwgMHhiOSwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4ZjcsIDB4M2QsIDB4NSwgMHhiLCAweDI2LCAweDFhLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmNywgMHgzLCAweDU0LCAweGYxLCAweGIsIDB4ZjcsIDB4OTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NiwgMHhiLCAweDllLCAweGEsIDB4ZjcsIDB4MzgsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhhLCAweDk4LCAweDk5LCAweDQ3LCAweGEsIDB4N2MsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHhhLCAweGIsIDB4OWUsIDB4YSwgMHhmNywgMHgzYSwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGEsIDB4OTYsIDB4OTcsIDB4NDcsIDB4YSwgMHg3ZSwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGEsIDB4YiwgMHg5MCwgMHg4NywgMHgxZiwgMHhlLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZjIsIDB4NSwgMHhmNywgMHg3MCwgMHg2LCAweGIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg1NCwgMHg2OSwgMHg3NywgMHg3ZSwgMHgxZSwgMHhiLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIDB4NSwgMHg5NCwgMHg5NSwgMHhhMiwgMHhhNiwgMHhiNCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGFhLCAweDdlLCAweDYzLCAweDUxLCAweDMxLCAweDcxLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4MWYsIDB4ZSwgMHgxNSwgMHg2YywgMHhhMywgMHg3MywgMHhhYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweGE0LCAweGEzLCAweGFhLCAweGFhLCAweDcyLCAweGE0LCAweDZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NzMsIDB4NzIsIDB4NmMsIDB4MWUsIDB4ZSwgMHg3NCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweGEzLCAweGEyLCAweGE4LCAweGE4LCAweDczLCAweGEzLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4YiwgMHhjNywgMHhmNCwgMHhmOCwgMHg0MSwgMHhmNCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4YSwgMHg3NywgMHhiLCAweDVhLCAweGEsIDB4ZjcsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweDU4LCAweGY4LCAweGZiLCAweDMsIDB4YiwgMHg5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGQ2LCAweDYsIDB4YjQsIDB4ZjcsIDB4MWMsIDB4OTksIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOCwgMHhkMCwgMHg4LCAweGMzLCAweGIwLCAweGM5LCAweGUxLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4YiwgMHgxNSwgMHg2ZCwgMHhhNCwgMHg3MiwgMHhhOSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGE0LCAweGE5LCAweGE5LCAweDcyLCAweGE0LCAweDZkLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NzIsIDB4NmQsIDB4MWUsIDB4YiwgMHg4YSwgMHgxNiwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4YiwgMHgxNSwgMHhiZSwgMHg2LCAweGY4LCAweDViLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4NSwgMHg1OCwgMHg2LCAweGIsIDB4ZjcsIDB4OTIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHhmNywgMHhiYiwgMHhlOSwgMHhhLCAweGIsIDB4YTMsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhhMywgMHhhMywgMHg3OCwgMHg5ZSwgMHg3MywgMHg3MywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDczLCAweDczLCAweDllLCAweDc4LCAweGEzLCAweDFmLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHhhMSwgMHg3NSwgMHhhNywgMHhhNywgMHhhMSwgMHhhMSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDc1LCAweGExLCAweDZmLCAweDZmLCAweDc1LCAweDc1LCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4YiwgMHgxLCAweDg2LCAweGEsIDB4MywgMHhiLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4NzYsIDB4ZjcsIDB4N2EsIDB4NzcsIDB4MTIsIDB4YiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ZGYsIDB4ZjcsIDB4YTUsIDB4ZGYsIDB4MywgMHhiLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OGIsIDB4N2IsIDB4NywgMHhiLCAweDk0LCAweGI2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg2LCAweGRhLCAweGY3LCAweDk3LCAweDUsIDB4NjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGEzLCAweGZiLCAweDk3LCAweDUsIDB4YiwgMHg2LCAweDg5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4ZjcsIDB4NiwgMHhmNywgMHgyLCAweDUsIDB4ZGIsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhhMywgMHhiMywgMHgxYSwgMHhiNCwgMHg2NCwgMHhiLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4N2EsIDB4N2EsIDB4NzYsIDB4NjEsIDB4YjYsIDB4ODgsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDFhLCAweDc0LCAweDlhLCAweDdkLCAweGE0LCAweGE0LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YTcsIDB4YiwgMHg3YSwgMHg3LCAweDhlLCAweDk3LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OWEsIDB4MWIsIDB4YzQsIDB4YiwgMHg4NywgMHhhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIDB4NzcsIDB4MSwgMHhiLCAweGEwLCAweDc2LCAweGY5LCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhmNywgMHg0ZiwgMHg5YiwgMHg2LCAweGIsIDB4Y2UsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHg3MiwgMHhiLCAweDg1LCAweDg1LCAweDFlLCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZSwgMHg2LCAweGIsIDB4NSwgMHg5NiwgMHg5MiwgMHhiLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4NmYsIDB4NzYsIDB4ZjksIDB4MzcsIDB4YTksIDB4YSwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGI4LCAweGIsIDB4NzYsIDB4YSwgMHhmNywgMHg3MywgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweDljLCAweGRmLCAweDEzLCAweDc4LCAweGIsIDB4ZjgsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHhhLCAweGIsIDB4OTcsIDB4YSwgMHhhYSwgMHg3MiwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGZiLCAweDI4LCAweGIsIDB4ODAsIDB4YTAsIDB4ZjgsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhmNywgMHg3MywgMHg3NywgMHg5MiwgMHhhLCAweGIsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg2YywgMHhhZiwgMHg4MywgMHhiMiwgMHhmNywgMHgxMCwgMHhjNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweGNlLCAweGNkLCAweDYwLCAweDljLCAweGIsIDB4NjIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MWEsIDB4NTYsIDB4M2MsIDB4ZmIsIDB4MWIsIDB4NjAsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhiLCAweDc3LCAweDkwLCAweGEsIDB4YiwgMHg3NywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGQ4LCAweGY3LCAweDNlLCAweGIsIDB4YjYsIDB4YSwgMHhiNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGEsIDB4YiwgMHhmYiwgMHgxNywgMHhmNywgMHgxNywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweGIsIDB4YzcsIDB4NGYsIDB4ZjIsIDB4OGMsIDB4NzcsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY4LCAweDgyLCAweDllLCAweGEsIDB4YiwgMHhmNywgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDU4LCAweGIsIDB4MWIsIDB4YmUsIDB4YjYsIDB4YjAsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHg3MiwgMHg5MCwgMHg4MiwgMHg3NCwgMHg3ZiwgMHg3ZCwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4N2YsIDB4OWYsIDB4ODksIDB4NzYsIDB4ZjcsIDB4ZTUsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjYywgMHg5ZiwgMHg4ZSwgMHg3NywgMHgxMiwgMHhiLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4OTEsIDB4NiwgMHhmNywgMHhiYSwgMHhmNywgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRkLCAweGY3LCAweDVlLCAweGIsIDB4MWIsIDB4ZjcsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZCwgMHhmYiwgMHhmLCAweDI2LCAweDRlLCAweDZhLCAweGZiLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4Y2YsIDB4YiwgMHhhZiwgMHhhOCwgMHhhOSwgMHhhZiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDZkLCAweDY3LCAweDY3LCAweDZkLCAweDZlLCAweDY3LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHgxYSwgMHg2YSwgMHg3YiwgMHg1YiwgMHg1MywgMHgzYSwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU3LCAweGI3LCAweDg0LCAweDFlLCAweDdiLCAweDYsIDB4YiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDhmLCAweDY5LCAweGI3LCAweGM5LCAweGIyLCAweGJiLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmUsIDB4MWUsIDB4ZSwgMHhmOCwgMHgxLCAweDc5LCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHg2LCAweGIsIDB4YjAsIDB4ZjcsIDB4NWIsIDB4NSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ODEsIDB4ODYsIDB4N2IsIDB4N2YsIDB4NmUsIDB4MWIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDdjLCAweDE1LCAweDlkLCAweDYsIDB4OTgsIDB4OGYsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHhhNywgMHgxYiwgMHg5YSwgMHhiLCAweDg5LCAweDg3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4ODIsIDB4NSwgMHg5NiwgMHg5OCwgMHg5YSwgMHg5MiwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGIsIDB4OWYsIDB4ZjcsIDB4MWYsIDB4NSwgMHg3ZCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODYsIDB4N2IsIDB4ODEsIDB4N2EsIDB4MWIsIDB4YiwgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDg0LCAweDFlLCAweDgyLCAweDZiLCAweDgyLCAweGZiLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg1NCwgMHg4LCAweGIsIDB4MWEsIDB4YjAsIDB4YzIsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZiwgMHg5OCwgMHgxZSwgMHhiLCAweDk3LCAweDc2LCAweGE5LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MWEsIDB4YmUsIDB4YiwgMHhiNiwgMHhhLCAweGFjLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmUsIDB4YWMsIDB4YiwgMHhmNywgMHg0LCAweDRiLCAweGNiLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHg3YiwgMHg2LCAweGFjLCAweGRhLCAweDgwLCAweDkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg3NiwgMHg3ZiwgMHhiLCAweDliLCAweDdlLCAweDE1LCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHg5NiwgMHg5MSwgMHg5OSwgMHg5NSwgMHg5OSwgMHgxYiwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OTEsIDB4N2QsIDB4NzksIDB4MWYsIDB4NjMsIDB4NDEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg3MywgMHgxYSwgMHhiLCAweDliLCAweGZiLCAweGE1LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhiLCAweDUsIDB4YTIsIDB4NzksIDB4YiwgMHhlZCwgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweGIsIDB4YjMsIDB4MTcsIDB4ZjcsIDB4OWMsIDB4ZDMsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHhmNywgMHg0NCwgMHg1LCAweGIsIDB4ZWEsIDB4YSwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGEsIDB4YTgsIDB4NjksIDB4YiwgMHhjZiwgMHhhMiwgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweGI5LCAweDFhLCAweGJjLCAweDU5LCAweGEzLCAweDViLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhmYiwgMHhiMCwgMHg3LCAweDZjLCAweGZiLCAweDcsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg1LCAweGIsIDB4ODcsIDB4YSwgMHgxLCAweGIsIDB4ZjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNSwgMHhmOCwgMHg0ZSwgMHhmNywgMHgxNywgMHhiLCAweDFlLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODMsIDB4N2IsIDB4NywgMHhiLCAweGM1LCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHg3NywgMHgxLCAweGIsIDB4ZDksIDB4MTYsIDB4ZjcsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg2LCAweGIsIDB4YzksIDB4ZjcsIDB4NDcsIDB4YzksIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNkLCAweDc3LCAweDEsIDB4YiwgMHg5YiwgMHhmYiwgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YiwgMHhmNywgMHhmLCAweDE1LCAweDRjLCAweDVhLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NzIsIDB4MWIsIDB4YiwgMHhmOCwgMHhlZiwgMHhhZiwgMHg4OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEyLCAweGNkLCAweGY3LCAweDQsIDB4YiwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGZiLCAweDQ1LCAweGZiLCAweDcxLCAweGZiLCAweDU1LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhhLCAweGUsIDB4M2MsIDB4OTUsIDB4NzYsIDB4YiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweGY3LCAweDhjLCAweDUsIDB4OTcsIDB4OGUsIDB4OTIsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDFkLCAweDk2LCAweDc2LCAweGFhLCAweDc2LCAweGY0LCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg2NiwgMHg1NiwgMHgxYiwgMHg3YiwgMHhmNywgMHg2MSwgMHg5YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YiwgMHhmNywgMHg0NSwgMHhmNywgMHgxNiwgMHg5ZCwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDdjLCAweGIsIDB4ODIsIDB4MzAsIDB4NzksIDB4ODcsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3OCwgMHg3LCAweGIsIDB4YjYsIDB4ZmIsIDB4MzAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHhmNCwgMHg3NywgMHgxMiwgMHhiLCAweDkwLCAweDk0LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4N2EsIDB4NmUsIDB4NSwgMHg3ZSwgMHhiLCAweGY3LCAweDQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzksIDB4NzcsIDB4ZTIsIDB4ZWQsIDB4MTIsIDB4YiwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDQwLCAweDc3LCAweDEsIDB4ZjQsIDB4Y2QsIDB4MywgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4ZmIsIDB4MmQsIDB4YTYsIDB4ZjksIDB4OGUsIDB4YTYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MzAsIDB4YTcsIDB4MWYsIDB4OWIsIDB4NTUsIDB4YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YmMsIDB4ZDYsIDB4MywgMHhiLCAweDE2LCAweGY3LCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4NiwgMHhiLCAweDY3LCAweDZlLCAweGE4LCAweGFmLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3YiwgMHhmNywgMHhhNSwgMHg5YiwgMHg3LCAweGIsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhhLCAweGIsIDB4OWIsIDB4ZmIsIDB4NTEsIDB4N2IsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4YWMsIDB4ZjcsIDB4OTcsIDB4YWMsIDB4YiwgMHhjNCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweGIsIDB4OWIsIDB4ZmIsIDB4NWIsIDB4YiwgMHgxYiwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U2VyaWZNTS5jIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNlcmlmTU0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDA2MmNkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9mb250ZGF0YS9jaHJvbWVmb250ZGF0YS9Gb3hpdFNlcmlmTU0uYwpAQCAtMCwwICsxLDcwOTcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKK2NvbnN0IHVuc2lnbmVkIGNoYXIgZ19Gb3hpdFNlcmlmTU1Gb250RGF0YSBbMTEzNDE3XSA9IHsKKyAgICAweDgwLCAweDAxLCAweEQ2LCAweDI5LCAweDAwLCAweDAwLCAweDI1LCAweDIxLCAweDUwLCAweDUzLCAweDJELCAweDQxLCAweDY0LCAweDZGLCAweDYyLCAweDY1LAorICAgIDB4NDYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MkQsIDB4MzEsIDB4MkUsIDB4MzAsIDB4M0EsIDB4MjAsIDB4NDMsIDB4NjgsIDB4NzIsIDB4NmYsIDB4NmQsIDB4NjUsIDB4NTMsCisgICAgMHg2NSwgMHg3MiwgMHg2OSwgMHg2NiwgMHg0RCwgMHg0RCwgMHgyMCwgMHgzMCwgMHgzMCwgMHgzMSwgMHgyRSwgMHgzMCwgMHgzMCwgMHgzMCwgMHgwRCwgMHgyNSwKKyAgICAweDI1LCAweDQzLCAweDcyLCAweDY1LCAweDYxLCAweDc0LCAweDY5LCAweDZGLCAweDZFLCAweDQ0LCAweDYxLCAweDc0LCAweDY1LCAweDNBLCAweDIwLCAweDU0LAorICAgIDB4NzUsIDB4NjUsIDB4MjAsIDB4NEYsIDB4NjMsIDB4NzQsIDB4MjAsIDB4MzMsIDB4MzEsIDB4MjAsIDB4MzAsIDB4MzEsIDB4M0EsIDB4MzMsIDB4MzQsIDB4M0EsCisgICAgMHgzMiwgMHgzMiwgMHgyMCwgMHgzMiwgMHgzMCwgMHgzMCwgMHgzNiwgMHgwRCwgMHgyNSwgMHgyNSwgMHg1NiwgMHg0RCwgMHg3NSwgMHg3MywgMHg2MSwgMHg2NywKKyAgICAweDY1LCAweDNBLCAweDIwLCAweDMxLCAweDMyLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDIwLCAweDMxLCAweDM1LCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MEQsIDB4MzEsIDB4MzcsIDB4MjAsIDB4NjQsIDB4NjksIDB4NjMsIDB4NzQsIDB4MjAsIDB4NjIsIDB4NjUsIDB4NjcsIDB4NjksIDB4NkUsIDB4MEQsIDB4MkYsCisgICAgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0OSwgMHg2RSwgMHg2NiwgMHg2RiwgMHgyMCwgMHgzMSwgMHgzNCwgMHgyMCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwKKyAgICAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDYyLCAweDY1LCAweDY3LCAweDY5LCAweDZFLCAweDBELCAweDJGLCAweDc2LCAweDY1LCAweDcyLCAweDczLAorICAgIDB4NjksIDB4NkYsIDB4NkUsIDB4MjAsIDB4MjgsIDB4MzAsIDB4MzAsIDB4MzEsIDB4MkUsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MjksIDB4MjAsIDB4NzIsIDB4NjUsCisgICAgMHg2MSwgMHg2NCwgMHg2RiwgMHg2RSwgMHg2QywgMHg3OSwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg0RSwgMHg2RiwgMHg3NCwgMHg2OSwKKyAgICAweDYzLCAweDY1LCAweDIwLCAweDI4LCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsCisgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLAorICAgIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjksIDB4MjAsIDB4NzIsIDB4NjUsIDB4NjEsIDB4NjQsIDB4NkYsIDB4NkUsIDB4NkMsIDB4NzksIDB4MjAsIDB4NjQsIDB4NjUsCisgICAgMHg2NiwgMHgwRCwgMHgyRiwgMHg0NiwgMHg3NSwgMHg2QywgMHg2QywgMHg0RSwgMHg2MSwgMHg2RCwgMHg2NSwgMHgyMCwgMHgyOCwgMHg0MywgMHg2OCwgMHg3MiwKKyAgICAweDZmLCAweDZkLCAweDY1LCAweDIwLCAweDUzLCAweDY1LCAweDcyLCAweDY5LCAweDY2LCAweDIwLCAweDRELCAweDRELCAweDI5LCAweDIwLCAweDcyLCAweDY1LCAweDYxLAorICAgIDB4NjQsIDB4NkYsIDB4NkUsIDB4NkMsIDB4NzksIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NDYsIDB4NjEsIDB4NkQsIDB4NjksIDB4NkMsCisgICAgMHg3OSwgMHg0RSwgMHg2MSwgMHg2RCwgMHg2NSwgMHgyMCwgMHgyOCwgMHg0MywgMHg2OCwgMHg3MiwgMHg2ZiwgMHg2ZCwgMHg2NSwgMHgyMCwgMHg1MywgMHg2NSwgMHg3MiwKKyAgICAweDY5LCAweDY2LCAweDIwLCAweDRELCAweDRELCAweDI5LCAweDIwLCAweDcyLCAweDY1LCAweDYxLCAweDY0LCAweDZGLCAweDZFLCAweDZDLCAweDc5LCAweDIwLAorICAgIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NDksIDB4NzQsIDB4NjEsIDB4NkMsIDB4NjksIDB4NjMsIDB4NDEsIDB4NkUsIDB4NjcsIDB4NkMsIDB4NjUsCisgICAgMHgyMCwgMHgzMCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg2OSwgMHg3MywgMHg0NiwgMHg2OSwgMHg3OCwgMHg2NSwgMHg2NCwgMHg1MCwKKyAgICAweDY5LCAweDc0LCAweDYzLCAweDY4LCAweDIwLCAweDY2LCAweDYxLCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLAorICAgIDB4NTUsIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzIsIDB4NkMsIDB4NjksIDB4NkUsIDB4NjUsIDB4NTAsIDB4NkYsIDB4NzMsIDB4NjksIDB4NzQsIDB4NjksIDB4NkYsCisgICAgMHg2RSwgMHgyMCwgMHgyRCwgMHgzMSwgMHgzMCwgMHgzMCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg1NSwgMHg2RSwgMHg2NCwgMHg2NSwKKyAgICAweDcyLCAweDZDLCAweDY5LCAweDZFLCAweDY1LCAweDU0LCAweDY4LCAweDY5LCAweDYzLCAweDZCLCAweDZFLCAweDY1LCAweDczLCAweDczLCAweDIwLCAweDM1LAorICAgIDB4MzAsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NTcsIDB4NjUsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4MjAsIDB4MjgsIDB4NDEsCisgICAgMHg2QywgMHg2QywgMHgyOSwgMHgyMCwgMHg3MiwgMHg2NSwgMHg2MSwgMHg2NCwgMHg2RiwgMHg2RSwgMHg2QywgMHg3OSwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwKKyAgICAweDBELCAweDJGLCAweDQyLCAweDZDLCAweDY1LCAweDZFLCAweDY0LCAweDQ0LCAweDY1LCAweDczLCAweDY5LCAweDY3LCAweDZFLCAweDUwLCAweDZGLCAweDczLAorICAgIDB4NjksIDB4NzQsIDB4NjksIDB4NkYsIDB4NkUsIDB4NzMsIDB4MjAsIDB4NUIsIDB4NUIsIDB4MzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NUQsIDB4NUIsIDB4MzEsCisgICAgMHgyMCwgMHgzMCwgMHgyMCwgMHg1RCwgMHg1QiwgMHgzMCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg1RCwgMHg1QiwgMHgzMSwgMHgyMCwgMHgzMSwgMHgyMCwgMHg1RCwKKyAgICAweDVELCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLCAweDQyLCAweDZDLCAweDY1LCAweDZFLCAweDY0LCAweDQ0LCAweDY1LCAweDczLCAweDY5LAorICAgIDB4NjcsIDB4NkUsIDB4NEQsIDB4NjEsIDB4NzAsIDB4MjAsIDB4NUIsIDB4NUIsIDB4NUIsIDB4MzEsIDB4MzEsIDB4MzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NUQsCisgICAgMHg1QiwgMHgzNywgMHgzOSwgMHgzMCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg1RCwgMHg1RCwgMHg1QiwgMHg1QiwgMHgzMSwgMHgzMCwgMHgzMCwgMHgyMCwgMHgzMCwKKyAgICAweDIwLCAweDVELCAweDVCLCAweDM5LCAweDMwLCAweDMwLCAweDIwLCAweDMxLCAweDIwLCAweDVELCAweDVELCAweDVELCAweDIwLCAweDY0LCAweDY1LCAweDY2LAorICAgIDB4MEQsIDB4MkYsIDB4NDIsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjQsIDB4NDEsIDB4NzgsIDB4NjksIDB4NzMsIDB4NTQsIDB4NzksIDB4NzAsIDB4NjUsIDB4NzMsCisgICAgMHgyMCwgMHg1QiwgMHgyRiwgMHg1NywgMHg2NSwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHgyMCwgMHgyRiwgMHg1NywgMHg2OSwgMHg2NCwgMHg3NCwgMHg2OCwKKyAgICAweDIwLCAweDVELCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDY1LCAweDZFLCAweDY0LCAweDIwLCAweDcyLCAweDY1LCAweDYxLCAweDY0LCAweDZGLAorICAgIDB4NkUsIDB4NkMsIDB4NzksIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NTcsIDB4NjUsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4NTYsCisgICAgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwgMHg3MiwgMHgyMCwgMHg1QiwgMHgzMCwgMHgyRSwgMHgzMiwgMHgzNywgMHgzMCwgMHgzMiwgMHgyMCwgMHgzMCwgMHgyRSwKKyAgICAweDMxLCAweDMwLCAweDM0LCAweDM4LCAweDIwLCAweDMwLCAweDJFLCAweDM0LCAweDM1LCAweDMwLCAweDM0LCAweDIwLCAweDMwLCAweDJFLCAweDMxLCAweDM3LAorICAgIDB4MzQsIDB4MzYsIDB4MjAsIDB4NUQsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NDYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4NEUsIDB4NjEsCisgICAgMHg2RCwgMHg2NSwgMHgyMCwgMHgyRiwgMHg0MywgMHg2OCwgMHg3MiwgMHg2ZiwgMHg2ZCwgMHg2NSwgMHg1MywgMHg2NSwgMHg3MiwgMHg2OSwgMHg2NiwgMHg0RCwgMHg0RCwKKyAgICAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLCAweDQ1LCAweDZFLCAweDYzLCAweDZGLCAweDY0LCAweDY5LCAweDZFLCAweDY3LCAweDIwLCAweDMyLAorICAgIDB4MzUsIDB4MzYsIDB4MjAsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4MEQsIDB4MzAsIDB4MjAsIDB4MzEsIDB4MjAsIDB4MzIsIDB4MzUsIDB4MzUsCisgICAgMHgyMCwgMHg3QiwgMHgzMSwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHgyRiwKKyAgICAweDJFLCAweDZFLCAweDZGLCAweDc0LCAweDY0LCAweDY1LCAweDY2LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDIwLCAweDdELCAweDIwLCAweDY2LCAweDZGLAorICAgIDB4NzIsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzMsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NzMsIDB4NzAsIDB4NjEsIDB4NjMsIDB4NjUsIDB4MjAsCisgICAgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMywgMHgzMywgMHgyMCwgMHgyRiwgMHg2NSwgMHg3OCwgMHg2MywgMHg2QywKKyAgICAweDYxLCAweDZELCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMzLCAweDM0LCAweDIwLCAweDJGLCAweDcxLAorICAgIDB4NzUsIDB4NkYsIDB4NzQsIDB4NjUsIDB4NjQsIDB4NjIsIDB4NkMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsCisgICAgMHgzMywgMHgzNSwgMHgyMCwgMHgyRiwgMHg2RSwgMHg3NSwgMHg2RCwgMHg2MiwgMHg2NSwgMHg3MiwgMHg3MywgMHg2OSwgMHg2NywgMHg2RSwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMzLCAweDM2LCAweDIwLCAweDJGLCAweDY0LCAweDZGLCAweDZDLCAweDZDLCAweDYxLAorICAgIDB4NzIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzMsIDB4MzcsIDB4MjAsIDB4MkYsIDB4NzAsIDB4NjUsCisgICAgMHg3MiwgMHg2MywgMHg2NSwgMHg2RSwgMHg3NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMywgMHgzOCwKKyAgICAweDIwLCAweDJGLCAweDYxLCAweDZELCAweDcwLCAweDY1LCAweDcyLCAweDczLCAweDYxLCAweDZFLCAweDY0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzMsIDB4MzksIDB4MjAsIDB4MkYsIDB4NzEsIDB4NzUsIDB4NkYsIDB4NzQsIDB4NjUsIDB4NzMsIDB4NjksIDB4NkUsCisgICAgMHg2NywgMHg2QywgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNCwgMHgzMCwgMHgyMCwgMHgyRiwKKyAgICAweDcwLCAweDYxLCAweDcyLCAweDY1LCAweDZFLCAweDZDLCAweDY1LCAweDY2LCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzQsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NzAsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NkUsIDB4NzIsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNCwgMHgzMiwgMHgyMCwgMHgyRiwgMHg2MSwgMHg3MywgMHg3NCwKKyAgICAweDY1LCAweDcyLCAweDY5LCAweDczLCAweDZCLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM0LCAweDMzLAorICAgIDB4MjAsIDB4MkYsIDB4NzAsIDB4NkMsIDB4NzUsIDB4NzMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzQsCisgICAgMHgzNCwgMHgyMCwgMHgyRiwgMHg2MywgMHg2RiwgMHg2RCwgMHg2RCwgMHg2MSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDM0LCAweDM1LCAweDIwLCAweDJGLCAweDY4LCAweDc5LCAweDcwLCAweDY4LCAweDY1LCAweDZFLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzQsIDB4MzYsIDB4MjAsIDB4MkYsIDB4NzAsIDB4NjUsIDB4NzIsIDB4NjksIDB4NkYsIDB4NjQsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNCwgMHgzNywgMHgyMCwgMHgyRiwgMHg3MywgMHg2QywgMHg2MSwgMHg3MywgMHg2OCwKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM0LCAweDM4LCAweDIwLCAweDJGLCAweDdBLCAweDY1LCAweDcyLAorICAgIDB4NkYsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzQsIDB4MzksIDB4MjAsIDB4MkYsIDB4NkYsIDB4NkUsCisgICAgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNSwgMHgzMCwgMHgyMCwgMHgyRiwgMHg3NCwgMHg3NywKKyAgICAweDZGLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM1LCAweDMxLCAweDIwLCAweDJGLCAweDc0LCAweDY4LAorICAgIDB4NzIsIDB4NjUsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzUsIDB4MzIsIDB4MjAsIDB4MkYsCisgICAgMHg2NiwgMHg2RiwgMHg3NSwgMHg3MiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNSwgMHgzMywgMHgyMCwKKyAgICAweDJGLCAweDY2LCAweDY5LCAweDc2LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM1LCAweDM0LAorICAgIDB4MjAsIDB4MkYsIDB4NzMsIDB4NjksIDB4NzgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzUsIDB4MzUsCisgICAgMHgyMCwgMHgyRiwgMHg3MywgMHg2NSwgMHg3NiwgMHg2NSwgMHg2RSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDM1LCAweDM2LCAweDIwLCAweDJGLCAweDY1LCAweDY5LCAweDY3LCAweDY4LCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzUsIDB4MzcsIDB4MjAsIDB4MkYsIDB4NkUsIDB4NjksIDB4NkUsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNSwgMHgzOCwgMHgyMCwgMHgyRiwgMHg2MywgMHg2RiwgMHg2QywgMHg2RiwgMHg2RSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwKKyAgICAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM1LCAweDM5LCAweDIwLCAweDJGLCAweDczLCAweDY1LCAweDZELCAweDY5LCAweDYzLCAweDZGLCAweDZDLAorICAgIDB4NkYsIDB4NkUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzYsIDB4MzAsIDB4MjAsIDB4MkYsIDB4NkMsCisgICAgMHg2NSwgMHg3MywgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNiwgMHgzMSwgMHgyMCwgMHgyRiwKKyAgICAweDY1LCAweDcxLCAweDc1LCAweDYxLCAweDZDLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM2LCAweDMyLAorICAgIDB4MjAsIDB4MkYsIDB4NjcsIDB4NzIsIDB4NjUsIDB4NjEsIDB4NzQsIDB4NjUsIDB4NzIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHgzNiwgMHgzMywgMHgyMCwgMHgyRiwgMHg3MSwgMHg3NSwgMHg2NSwgMHg3MywgMHg3NCwgMHg2OSwgMHg2RiwgMHg2RSwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM2LCAweDM0LCAweDIwLCAweDJGLCAweDYxLCAweDc0LCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzYsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NDEsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNiwgMHgzNiwgMHgyMCwgMHgyRiwgMHg0MiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDM2LCAweDM3LCAweDIwLCAweDJGLCAweDQzLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLAorICAgIDB4MzYsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NDQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzYsIDB4MzksCisgICAgMHgyMCwgMHgyRiwgMHg0NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNywgMHgzMCwgMHgyMCwgMHgyRiwKKyAgICAweDQ2LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM3LCAweDMxLCAweDIwLCAweDJGLCAweDQ3LCAweDIwLAorICAgIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzcsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NDgsIDB4MjAsIDB4NzAsIDB4NzUsCisgICAgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNywgMHgzMywgMHgyMCwgMHgyRiwgMHg0OSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwKKyAgICAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM3LCAweDM0LCAweDIwLCAweDJGLCAweDRBLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzcsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NEIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsCisgICAgMHgzNywgMHgzNiwgMHgyMCwgMHgyRiwgMHg0QywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNywgMHgzNywKKyAgICAweDIwLCAweDJGLCAweDRELCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM3LCAweDM4LCAweDIwLCAweDJGLAorICAgIDB4NEUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzcsIDB4MzksIDB4MjAsIDB4MkYsIDB4NEYsIDB4MjAsCisgICAgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOCwgMHgzMCwgMHgyMCwgMHgyRiwgMHg1MCwgMHgyMCwgMHg3MCwgMHg3NSwKKyAgICAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM4LCAweDMxLCAweDIwLCAweDJGLCAweDUxLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzgsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NTIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHgzOCwgMHgzMywgMHgyMCwgMHgyRiwgMHg1MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDM4LCAweDM0LCAweDIwLCAweDJGLCAweDU0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM4LCAweDM1LAorICAgIDB4MjAsIDB4MkYsIDB4NTUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzgsIDB4MzYsIDB4MjAsIDB4MkYsCisgICAgMHg1NiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOCwgMHgzNywgMHgyMCwgMHgyRiwgMHg1NywgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM4LCAweDM4LCAweDIwLCAweDJGLCAweDU4LCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzgsIDB4MzksIDB4MjAsIDB4MkYsIDB4NTksIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOSwgMHgzMCwgMHgyMCwgMHgyRiwgMHg1QSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDM5LCAweDMxLCAweDIwLCAweDJGLCAweDYyLCAweDcyLCAweDYxLCAweDYzLCAweDZCLCAweDY1LCAweDc0LCAweDZDLCAweDY1LCAweDY2LAorICAgIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzksIDB4MzIsIDB4MjAsIDB4MkYsIDB4NjIsIDB4NjEsCisgICAgMHg2MywgMHg2QiwgMHg3MywgMHg2QywgMHg2MSwgMHg3MywgMHg2OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDM5LCAweDMzLCAweDIwLCAweDJGLCAweDYyLCAweDcyLCAweDYxLCAweDYzLCAweDZCLCAweDY1LCAweDc0LCAweDcyLCAweDY5LCAweDY3LCAweDY4LCAweDc0LAorICAgIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzksIDB4MzQsIDB4MjAsIDB4MkYsIDB4NjEsIDB4NzMsIDB4NjMsCisgICAgMHg2OSwgMHg2OSwgMHg2MywgMHg2OSwgMHg3MiwgMHg2MywgMHg3NSwgMHg2RCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDM5LCAweDM1LCAweDIwLCAweDJGLCAweDc1LCAweDZFLCAweDY0LCAweDY1LCAweDcyLCAweDczLCAweDYzLCAweDZGLCAweDcyLCAweDY1LCAweDIwLAorICAgIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzksIDB4MzYsIDB4MjAsIDB4MkYsIDB4NjcsIDB4NzIsIDB4NjEsIDB4NzYsCisgICAgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzOSwgMHgzNywgMHgyMCwgMHgyRiwgMHg2MSwgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM5LCAweDM4LCAweDIwLCAweDJGLCAweDYyLCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzksIDB4MzksIDB4MjAsIDB4MkYsIDB4NjMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMCwgMHgzMCwgMHgyMCwgMHgyRiwgMHg2NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMwLCAweDMxLCAweDIwLCAweDJGLCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzAsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NjYsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzMSwgMHgzMCwgMHgzMywgMHgyMCwgMHgyRiwgMHg2NywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDMxLCAweDMwLCAweDM0LCAweDIwLCAweDJGLCAweDY4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLAorICAgIDB4MzAsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NjksIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzAsCisgICAgMHgzNiwgMHgyMCwgMHgyRiwgMHg2QSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMCwgMHgzNywKKyAgICAweDIwLCAweDJGLCAweDZCLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMwLCAweDM4LCAweDIwLAorICAgIDB4MkYsIDB4NkMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzAsIDB4MzksIDB4MjAsIDB4MkYsCisgICAgMHg2RCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMSwgMHgzMCwgMHgyMCwgMHgyRiwgMHg2RSwKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMxLCAweDMxLCAweDIwLCAweDJGLCAweDZGLCAweDIwLAorICAgIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzEsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NzAsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMSwgMHgzMywgMHgyMCwgMHgyRiwgMHg3MSwgMHgyMCwgMHg3MCwgMHg3NSwKKyAgICAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMxLCAweDM0LCAweDIwLCAweDJGLCAweDcyLCAweDIwLCAweDcwLCAweDc1LCAweDc0LAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzEsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NzMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMSwgMHgzNiwgMHgyMCwgMHgyRiwgMHg3NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMxLCAweDM3LCAweDIwLCAweDJGLCAweDc1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzEsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NzYsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzMSwgMHgzMSwgMHgzOSwgMHgyMCwgMHgyRiwgMHg3NywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDMxLCAweDMyLCAweDMwLCAweDIwLCAweDJGLCAweDc4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLAorICAgIDB4MzIsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NzksIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzIsCisgICAgMHgzMiwgMHgyMCwgMHgyRiwgMHg3QSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMiwgMHgzMywKKyAgICAweDIwLCAweDJGLCAweDYyLCAweDcyLCAweDYxLCAweDYzLCAweDY1LCAweDZDLCAweDY1LCAweDY2LCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzIsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NjIsIDB4NjEsIDB4NzIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsCisgICAgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMiwgMHgzNSwgMHgyMCwgMHgyRiwgMHg2MiwgMHg3MiwgMHg2MSwgMHg2MywgMHg2NSwgMHg3MiwKKyAgICAweDY5LCAweDY3LCAweDY4LCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMyLCAweDM2LAorICAgIDB4MjAsIDB4MkYsIDB4NjEsIDB4NzMsIDB4NjMsIDB4NjksIDB4NjksIDB4NzQsIDB4NjksIDB4NkMsIDB4NjQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsCisgICAgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMiwgMHgzOCwgMHgyMCwgMHgyRiwgMHg0NSwgMHg3NSwgMHg3MiwgMHg2RiwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMzLCAweDMwLCAweDIwLCAweDJGLCAweDcxLCAweDc1LCAweDZGLCAweDc0LAorICAgIDB4NjUsIDB4NzMsIDB4NjksIDB4NkUsIDB4NjcsIDB4NkMsIDB4NjIsIDB4NjEsIDB4NzMsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzMywgMHgzMSwgMHgyMCwgMHgyRiwgMHg2NiwgMHg2QywgMHg2RiwgMHg3MiwgMHg2OSwgMHg2RSwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMzLCAweDMyLCAweDIwLCAweDJGLCAweDcxLCAweDc1LCAweDZGLCAweDc0LAorICAgIDB4NjUsIDB4NjQsIDB4NjIsIDB4NkMsIDB4NjIsIDB4NjEsIDB4NzMsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzMSwgMHgzMywgMHgzMywgMHgyMCwgMHgyRiwgMHg2NSwgMHg2QywgMHg2QywgMHg2OSwgMHg3MCwgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMzLCAweDM0LCAweDIwLCAweDJGLCAweDY0LCAweDYxLCAweDY3LCAweDY3LAorICAgIDB4NjUsIDB4NzIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzMsIDB4MzUsIDB4MjAsIDB4MkYsCisgICAgMHg2NCwgMHg2MSwgMHg2NywgMHg2NywgMHg2NSwgMHg3MiwgMHg2NCwgMHg2MiwgMHg2QywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMxLCAweDMzLCAweDM2LCAweDIwLCAweDJGLCAweDYzLCAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDY2LCAweDZDLCAweDY1LAorICAgIDB4NzgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzMsIDB4MzcsIDB4MjAsIDB4MkYsIDB4NzAsCisgICAgMHg2NSwgMHg3MiwgMHg3NCwgMHg2OCwgMHg2RiwgMHg3NSwgMHg3MywgMHg2MSwgMHg2RSwgMHg2NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMzLCAweDM4LCAweDIwLCAweDJGLCAweDUzLCAweDYzLCAweDYxLCAweDcyLCAweDZGLCAweDZFLCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzMsIDB4MzksIDB4MjAsIDB4MkYsIDB4NjcsIDB4NzUsIDB4NjksIDB4NkMsCisgICAgMHg3MywgMHg2OSwgMHg2RSwgMHg2NywgMHg2QywgMHg2QywgMHg2NSwgMHg2NiwgMHg3NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMxLCAweDM0LCAweDMwLCAweDIwLCAweDJGLCAweDRGLCAweDQ1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzQsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NzEsIDB4NzUsIDB4NkYsIDB4NzQsIDB4NjUsIDB4NkMsIDB4NjUsIDB4NjYsIDB4NzQsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNCwgMHgzNiwgMHgyMCwgMHgyRiwgMHg3MSwgMHg3NSwKKyAgICAweDZGLCAweDc0LCAweDY1LCAweDcyLCAweDY5LCAweDY3LCAweDY4LCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLAorICAgIDB4MjAsIDB4MzEsIDB4MzQsIDB4MzcsIDB4MjAsIDB4MkYsIDB4NzEsIDB4NzUsIDB4NkYsIDB4NzQsIDB4NjUsIDB4NjQsIDB4NjIsIDB4NkMsIDB4NkMsIDB4NjUsCisgICAgMHg2NiwgMHg3NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNCwgMHgzOCwgMHgyMCwgMHgyRiwKKyAgICAweDcxLCAweDc1LCAweDZGLCAweDc0LCAweDY1LCAweDY0LCAweDYyLCAweDZDLCAweDcyLCAweDY5LCAweDY3LCAweDY4LCAweDc0LCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzQsIDB4MzksIDB4MjAsIDB4MkYsIDB4NjIsIDB4NzUsIDB4NkMsIDB4NkMsIDB4NjUsCisgICAgMHg3NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNSwgMHgzMCwgMHgyMCwgMHgyRiwgMHg2NSwKKyAgICAweDZFLCAweDY0LCAweDYxLCAweDczLCAweDY4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM1LAorICAgIDB4MzEsIDB4MjAsIDB4MkYsIDB4NjUsIDB4NkQsIDB4NjQsIDB4NjEsIDB4NzMsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNSwgMHgzMiwgMHgyMCwgMHgyRiwgMHg3NCwgMHg2OSwgMHg2QywgMHg2NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwKKyAgICAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM1LCAweDMzLCAweDIwLCAweDJGLCAweDc0LCAweDcyLCAweDYxLCAweDY0LCAweDY1LCAweDZELAorICAgIDB4NjEsIDB4NzIsIDB4NkIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzUsIDB4MzQsIDB4MjAsCisgICAgMHgyRiwgMHg3MywgMHg2MywgMHg2MSwgMHg3MiwgMHg2RiwgMHg2RSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDMxLCAweDM1LCAweDM1LCAweDIwLCAweDJGLCAweDY3LCAweDc1LCAweDY5LCAweDZDLCAweDczLCAweDY5LCAweDZFLCAweDY3LCAweDZDLCAweDcyLCAweDY5LAorICAgIDB4NjcsIDB4NjgsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzUsIDB4MzYsIDB4MjAsCisgICAgMHgyRiwgMHg2RiwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNSwgMHgzOSwgMHgyMCwKKyAgICAweDJGLCAweDU5LCAweDY0LCAweDY5LCAweDY1LCAweDcyLCAweDY1LCAweDczLCAweDY5LCAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LAorICAgIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzYsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NkMsIDB4NjEsIDB4NkQsIDB4NjQsIDB4NkYsCisgICAgMHg3NywgMHg2RSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNiwgMHgzMiwgMHgyMCwgMHgyRiwKKyAgICAweDYzLCAweDY1LCAweDZFLCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM2LCAweDMzLAorICAgIDB4MjAsIDB4MkYsIDB4NzMsIDB4NzQsIDB4NjUsIDB4NzIsIDB4NkMsIDB4NjksIDB4NkUsIDB4NjcsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNiwgMHgzNCwgMHgyMCwgMHgyRiwgMHg2MywgMHg3NSwgMHg3MiwgMHg3MiwgMHg2NSwgMHg2RSwgMHg2MywgMHg3OSwKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM2LCAweDM1LCAweDIwLCAweDJGLCAweDc5LCAweDY1LAorICAgIDB4NkUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzYsIDB4MzYsIDB4MjAsIDB4MkYsIDB4NjIsCisgICAgMHg3MiwgMHg2RiwgMHg2QiwgMHg2NSwgMHg2RSwgMHg2MiwgMHg2MSwgMHg3MiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDMxLCAweDM2LCAweDM3LCAweDIwLCAweDJGLCAweDczLCAweDY1LCAweDYzLCAweDc0LCAweDY5LCAweDZGLCAweDZFLCAweDIwLCAweDcwLCAweDc1LAorICAgIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzYsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NjQsIDB4NjksIDB4NjUsIDB4NzIsIDB4NjUsCisgICAgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNiwgMHgzOSwgMHgyMCwKKyAgICAweDJGLCAweDYzLCAweDZGLCAweDcwLCAweDc5LCAweDcyLCAweDY5LCAweDY3LCAweDY4LCAweDc0LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LAorICAgIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzcsIDB4MzAsIDB4MjAsIDB4MkYsIDB4NkYsIDB4NzIsIDB4NjQsIDB4NjYsIDB4NjUsIDB4NkQsIDB4NjksIDB4NkUsCisgICAgMHg2OSwgMHg2RSwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNywgMHgzMSwgMHgyMCwKKyAgICAweDJGLCAweDY3LCAweDc1LCAweDY5LCAweDZDLCAweDZDLCAweDY1LCAweDZELCAweDZGLCAweDc0LCAweDZDLCAweDY1LCAweDY2LCAweDc0LCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzcsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NkMsIDB4NkYsIDB4NjcsIDB4NjksCisgICAgMHg2MywgMHg2MSwgMHg2QywgMHg2RSwgMHg2RiwgMHg3NCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwKKyAgICAweDM3LCAweDM0LCAweDIwLCAweDJGLCAweDcyLCAweDY1LCAweDY3LCAweDY5LCAweDczLCAweDc0LCAweDY1LCAweDcyLCAweDY1LCAweDY0LCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzcsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NkQsIDB4NjEsIDB4NjMsIDB4NzIsCisgICAgMHg2RiwgMHg2RSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNywgMHgzNiwgMHgyMCwgMHgyRiwKKyAgICAweDY0LCAweDY1LCAweDY3LCAweDcyLCAweDY1LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLAorICAgIDB4MzcsIDB4MzcsIDB4MjAsIDB4MkYsIDB4NzAsIDB4NkMsIDB4NzUsIDB4NzMsIDB4NkQsIDB4NjksIDB4NkUsIDB4NzUsIDB4NzMsIDB4MjAsIDB4NzAsIDB4NzUsCisgICAgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzNywgMHgzOCwgMHgyMCwgMHgyRiwgMHg3NCwgMHg3NywgMHg2RiwgMHg3MywgMHg3NSwKKyAgICAweDcwLCAweDY1LCAweDcyLCAweDY5LCAweDZGLCAweDcyLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLAorICAgIDB4MzcsIDB4MzksIDB4MjAsIDB4MkYsIDB4NzQsIDB4NjgsIDB4NzIsIDB4NjUsIDB4NjUsIDB4NzMsIDB4NzUsIDB4NzAsIDB4NjUsIDB4NzIsIDB4NjksIDB4NkYsCisgICAgMHg3MiwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOCwgMHgzMCwgMHgyMCwgMHgyRiwgMHg2MSwKKyAgICAweDYzLCAweDc1LCAweDc0LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM4LCAweDMxLAorICAgIDB4MjAsIDB4MkYsIDB4NkQsIDB4NzUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzgsIDB4MzIsCisgICAgMHgyMCwgMHgyRiwgMHg3MCwgMHg2MSwgMHg3MiwgMHg2MSwgMHg2NywgMHg3MiwgMHg2MSwgMHg3MCwgMHg2OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwKKyAgICAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM4LCAweDMzLCAweDIwLCAweDJGLCAweDcwLCAweDY1LCAweDcyLCAweDY5LCAweDZGLCAweDY0LCAweDYzLAorICAgIDB4NjUsIDB4NkUsIDB4NzQsIDB4NjUsIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsCisgICAgMHgzMSwgMHgzOCwgMHgzNCwgMHgyMCwgMHgyRiwgMHg2MywgMHg2NSwgMHg2NCwgMHg2OSwgMHg2QywgMHg2QywgMHg2MSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwKKyAgICAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM4LCAweDM1LCAweDIwLCAweDJGLCAweDZGLCAweDZFLCAweDY1LCAweDczLCAweDc1LCAweDcwLAorICAgIDB4NjUsIDB4NzIsIDB4NjksIDB4NkYsIDB4NzIsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzgsCisgICAgMHgzNiwgMHgyMCwgMHgyRiwgMHg2RiwgMHg3MiwgMHg2NCwgMHg2RCwgMHg2MSwgMHg3MywgMHg2MywgMHg3NSwgMHg2QywgMHg2OSwgMHg2RSwgMHg2NSwgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM4LCAweDM3LCAweDIwLCAweDJGLCAweDY3LCAweDc1LCAweDY5LAorICAgIDB4NkMsIDB4NkMsIDB4NjUsIDB4NkQsIDB4NkYsIDB4NzQsIDB4NzIsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOCwgMHgzOCwgMHgyMCwgMHgyRiwgMHg2RiwgMHg2RSwgMHg2NSwgMHg3MSwgMHg3NSwgMHg2MSwgMHg3MiwKKyAgICAweDc0LCAweDY1LCAweDcyLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM4LCAweDM5LCAweDIwLAorICAgIDB4MkYsIDB4NkYsIDB4NkUsIDB4NjUsIDB4NjgsIDB4NjEsIDB4NkMsIDB4NjYsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHgzMSwgMHgzOSwgMHgzMCwgMHgyMCwgMHgyRiwgMHg3NCwgMHg2OCwgMHg3MiwgMHg2NSwgMHg2NSwgMHg3MSwgMHg3NSwgMHg2MSwgMHg3MiwgMHg3NCwKKyAgICAweDY1LCAweDcyLCAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM5LCAweDMxLCAweDIwLAorICAgIDB4MkYsIDB4NzEsIDB4NzUsIDB4NjUsIDB4NzMsIDB4NzQsIDB4NjksIDB4NkYsIDB4NkUsIDB4NjQsIDB4NkYsIDB4NzcsIDB4NkUsIDB4MjAsIDB4NzAsIDB4NzUsCisgICAgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOSwgMHgzMiwgMHgyMCwgMHgyRiwgMHg0MSwgMHg2NywgMHg3MiwgMHg2MSwgMHg3NiwKKyAgICAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM5LCAweDMzLCAweDIwLCAweDJGLCAweDQxLAorICAgIDB4NjEsIDB4NjMsIDB4NzUsIDB4NzQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzksCisgICAgMHgzNCwgMHgyMCwgMHgyRiwgMHg0MSwgMHg2MywgMHg2OSwgMHg3MiwgMHg2MywgMHg3NSwgMHg2RCwgMHg2NiwgMHg2QywgMHg2NSwgMHg3OCwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDM5LCAweDM1LCAweDIwLCAweDJGLCAweDQxLCAweDc0LCAweDY5LCAweDZDLAorICAgIDB4NjQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzksIDB4MzYsIDB4MjAsIDB4MkYsCisgICAgMHg0MSwgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMxLCAweDM5LCAweDM3LCAweDIwLCAweDJGLCAweDQxLCAweDcyLCAweDY5LCAweDZFLCAweDY3LCAweDIwLCAweDcwLCAweDc1LCAweDc0LAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MzksIDB4MzgsIDB4MjAsIDB4MkYsIDB4NDEsIDB4NDUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsCisgICAgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgzOSwgMHgzOSwgMHgyMCwgMHgyRiwgMHg0MywgMHg2MywgMHg2NSwgMHg2NCwgMHg2OSwgMHg2QywKKyAgICAweDZDLCAweDYxLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMwLCAweDMwLCAweDIwLCAweDJGLAorICAgIDB4NDUsIDB4NjcsIDB4NzIsIDB4NjEsIDB4NzYsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsCisgICAgMHgzMCwgMHgzMSwgMHgyMCwgMHgyRiwgMHg0NSwgMHg2MSwgMHg2MywgMHg3NSwgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMwLCAweDMyLCAweDIwLCAweDJGLCAweDQ1LCAweDYzLCAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDY2LAorICAgIDB4NkMsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzAsIDB4MzMsIDB4MjAsCisgICAgMHgyRiwgMHg0NSwgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMwLCAweDM0LCAweDIwLCAweDJGLCAweDQ5LCAweDY3LCAweDcyLCAweDYxLCAweDc2LCAweDY1LCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzAsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NDksIDB4NjEsIDB4NjMsIDB4NzUsCisgICAgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMCwgMHgzNiwgMHgyMCwgMHgyRiwKKyAgICAweDQ5LCAweDYzLCAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDY2LCAweDZDLCAweDY1LCAweDc4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELAorICAgIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzAsIDB4MzcsIDB4MjAsIDB4MkYsIDB4NDksIDB4NjQsIDB4NjksIDB4NjUsIDB4NzIsIDB4NjUsIDB4NzMsCisgICAgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMCwgMHgzOCwgMHgyMCwgMHgyRiwKKyAgICAweDQ1LCAweDc0LCAweDY4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMwLCAweDM5LCAweDIwLAorICAgIDB4MkYsIDB4NEUsIDB4NzQsIDB4NjksIDB4NkMsIDB4NjQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsCisgICAgMHgzMiwgMHgzMSwgMHgzMCwgMHgyMCwgMHgyRiwgMHg0RiwgMHg2NywgMHg3MiwgMHg2MSwgMHg3NiwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwKKyAgICAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMxLCAweDMxLCAweDIwLCAweDJGLCAweDRGLCAweDYxLCAweDYzLCAweDc1LCAweDc0LCAweDY1LCAweDIwLAorICAgIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzEsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NEYsIDB4NjMsIDB4NjksCisgICAgMHg3MiwgMHg2MywgMHg3NSwgMHg2RCwgMHg2NiwgMHg2QywgMHg2NSwgMHg3OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwKKyAgICAweDIwLCAweDMyLCAweDMxLCAweDMzLCAweDIwLCAweDJGLCAweDRGLCAweDc0LCAweDY5LCAweDZDLCAweDY0LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzEsIDB4MzQsIDB4MjAsIDB4MkYsIDB4NEYsIDB4NjQsIDB4NjksIDB4NjUsIDB4NzIsIDB4NjUsCisgICAgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMSwgMHgzNSwgMHgyMCwKKyAgICAweDJGLCAweDZELCAweDc1LCAweDZDLCAweDc0LCAweDY5LCAweDcwLCAweDZDLCAweDc5LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzEsIDB4MzYsIDB4MjAsIDB4MkYsIDB4NEYsIDB4NzMsIDB4NkMsIDB4NjEsIDB4NzMsIDB4NjgsIDB4MjAsIDB4NzAsIDB4NzUsCisgICAgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMSwgMHgzNywgMHgyMCwgMHgyRiwgMHg1NSwgMHg2NywgMHg3MiwgMHg2MSwgMHg3NiwKKyAgICAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMxLCAweDM4LCAweDIwLCAweDJGLCAweDU1LAorICAgIDB4NjEsIDB4NjMsIDB4NzUsIDB4NzQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzEsCisgICAgMHgzOSwgMHgyMCwgMHgyRiwgMHg1NSwgMHg2MywgMHg2OSwgMHg3MiwgMHg2MywgMHg3NSwgMHg2RCwgMHg2NiwgMHg2QywgMHg2NSwgMHg3OCwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMyLCAweDMwLCAweDIwLCAweDJGLCAweDU1LCAweDY0LCAweDY5LCAweDY1LAorICAgIDB4NzIsIDB4NjUsIDB4NzMsIDB4NjksIDB4NzMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzIsCisgICAgMHgzMSwgMHgyMCwgMHgyRiwgMHg1OSwgMHg2MSwgMHg2MywgMHg3NSwgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMyLCAweDMyLCAweDMyLCAweDIwLCAweDJGLCAweDU0LCAweDY4LCAweDZGLCAweDcyLCAweDZFLCAweDIwLCAweDcwLCAweDc1LCAweDc0LAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzIsIDB4MzMsIDB4MjAsIDB4MkYsIDB4NjcsIDB4NjUsIDB4NzIsIDB4NkQsIDB4NjEsIDB4NkUsCisgICAgMHg2NCwgMHg2MiwgMHg2QywgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMiwgMHgzNCwKKyAgICAweDIwLCAweDJGLCAweDYxLCAweDY3LCAweDcyLCAweDYxLCAweDc2LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLAorICAgIDB4MjAsIDB4MzIsIDB4MzIsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NjEsIDB4NjEsIDB4NjMsIDB4NzUsIDB4NzQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsCisgICAgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMiwgMHgzNiwgMHgyMCwgMHgyRiwgMHg2MSwgMHg2MywgMHg2OSwgMHg3MiwgMHg2MywgMHg3NSwKKyAgICAweDZELCAweDY2LCAweDZDLCAweDY1LCAweDc4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMyLAorICAgIDB4MzcsIDB4MjAsIDB4MkYsIDB4NjEsIDB4NzQsIDB4NjksIDB4NkMsIDB4NjQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsCisgICAgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMiwgMHgzOCwgMHgyMCwgMHgyRiwgMHg2MSwgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywKKyAgICAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMyLCAweDM5LCAweDIwLCAweDJGLCAweDYxLCAweDcyLAorICAgIDB4NjksIDB4NkUsIDB4NjcsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzMsIDB4MzAsIDB4MjAsCisgICAgMHgyRiwgMHg2MSwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMywgMHgzMSwgMHgyMCwKKyAgICAweDJGLCAweDYzLCAweDYzLCAweDY1LCAweDY0LCAweDY5LCAweDZDLCAweDZDLCAweDYxLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzMsIDB4MzIsIDB4MjAsIDB4MkYsIDB4NjUsIDB4NjcsIDB4NzIsIDB4NjEsIDB4NzYsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsCisgICAgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMywgMHgzMywgMHgyMCwgMHgyRiwgMHg2NSwgMHg2MSwgMHg2MywgMHg3NSwgMHg3NCwKKyAgICAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMzLCAweDM0LCAweDIwLCAweDJGLCAweDY1LAorICAgIDB4NjMsIDB4NjksIDB4NzIsIDB4NjMsIDB4NzUsIDB4NkQsIDB4NjYsIDB4NkMsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzMywgMHgzNSwgMHgyMCwgMHgyRiwgMHg2NSwgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwKKyAgICAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDMzLCAweDM2LCAweDIwLCAweDJGLCAweDY5LAorICAgIDB4NjcsIDB4NzIsIDB4NjEsIDB4NzYsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzMsCisgICAgMHgzNywgMHgyMCwgMHgyRiwgMHg2OSwgMHg2MSwgMHg2MywgMHg3NSwgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMyLCAweDMzLCAweDM4LCAweDIwLCAweDJGLCAweDY5LCAweDYzLCAweDY5LCAweDcyLCAweDYzLCAweDc1LCAweDZELCAweDY2LCAweDZDLAorICAgIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzMsIDB4MzksIDB4MjAsIDB4MkYsCisgICAgMHg2OSwgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDMyLCAweDM0LCAweDMwLCAweDIwLCAweDJGLCAweDY1LCAweDc0LCAweDY4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LAorICAgIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzQsIDB4MzEsIDB4MjAsIDB4MkYsIDB4NkUsIDB4NzQsIDB4NjksIDB4NkMsIDB4NjQsIDB4NjUsIDB4MjAsIDB4NzAsCisgICAgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzNCwgMHgzMiwgMHgyMCwgMHgyRiwgMHg2RiwgMHg2NywgMHg3MiwgMHg2MSwKKyAgICAweDc2LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDM0LCAweDMzLCAweDIwLCAweDJGLAorICAgIDB4NkYsIDB4NjEsIDB4NjMsIDB4NzUsIDB4NzQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsCisgICAgMHgzNCwgMHgzNCwgMHgyMCwgMHgyRiwgMHg2RiwgMHg2MywgMHg2OSwgMHg3MiwgMHg2MywgMHg3NSwgMHg2RCwgMHg2NiwgMHg2QywgMHg2NSwgMHg3OCwgMHgyMCwKKyAgICAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDM0LCAweDM1LCAweDIwLCAweDJGLCAweDZGLCAweDc0LCAweDY5LAorICAgIDB4NkMsIDB4NjQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzQsIDB4MzYsIDB4MjAsCisgICAgMHgyRiwgMHg2RiwgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwKKyAgICAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDM0LCAweDM3LCAweDIwLCAweDJGLCAweDY0LCAweDY5LCAweDc2LCAweDY5LCAweDY0LCAweDY1LCAweDIwLCAweDcwLAorICAgIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzQsIDB4MzgsIDB4MjAsIDB4MkYsIDB4NkYsIDB4NzMsIDB4NkMsIDB4NjEsCisgICAgMHg3MywgMHg2OCwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzNCwgMHgzOSwgMHgyMCwgMHgyRiwKKyAgICAweDc1LCAweDY3LCAweDcyLCAweDYxLCAweDc2LCAweDY1LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLAorICAgIDB4MzUsIDB4MzAsIDB4MjAsIDB4MkYsIDB4NzUsIDB4NjEsIDB4NjMsIDB4NzUsIDB4NzQsIDB4NjUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzNSwgMHgzMSwgMHgyMCwgMHgyRiwgMHg3NSwgMHg2MywgMHg2OSwgMHg3MiwgMHg2MywgMHg3NSwgMHg2RCwgMHg2NiwKKyAgICAweDZDLCAweDY1LCAweDc4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDM1LCAweDMyLCAweDIwLAorICAgIDB4MkYsIDB4NzUsIDB4NjQsIDB4NjksIDB4NjUsIDB4NzIsIDB4NjUsIDB4NzMsIDB4NjksIDB4NzMsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgzNSwgMHgzMywgMHgyMCwgMHgyRiwgMHg3OSwgMHg2MSwgMHg2MywgMHg3NSwgMHg3NCwgMHg2NSwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMyLCAweDM1LCAweDM0LCAweDIwLCAweDJGLCAweDc0LCAweDY4LCAweDZGLCAweDcyLAorICAgIDB4NkUsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzIsIDB4MzUsIDB4MzUsIDB4MjAsIDB4MkYsIDB4NzksCisgICAgMHg2NCwgMHg2OSwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MywgMHg2OSwgMHg3MywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg3MiwgMHg2NSwgMHg2MSwKKyAgICAweDY0LCAweDZGLCAweDZFLCAweDZDLCAweDc5LCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLCAweDUwLCAweDYxLCAweDY5LCAweDZFLCAweDc0LAorICAgIDB4NTQsIDB4NzksIDB4NzAsIDB4NjUsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NDYsIDB4NkYsIDB4NkUsIDB4NzQsCisgICAgMHg1NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgyMCwgMHgzMSwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHgyNCwgMHg0MiwgMHg2QywgMHg2NSwKKyAgICAweDZFLCAweDY0LCAweDIwLCAweDdCLCAweDIwLCAweDMwLCAweDJFLCAweDMxLCAweDMwLCAweDM0LCAweDM4LCAweDIwLCAweDZELCAweDc1LCAweDZDLCAweDIwLAorICAgIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MzAsIDB4MkUsIDB4MzQsIDB4MzUsIDB4MzAsIDB4MzQsIDB4MjAsIDB4NkQsIDB4NzUsIDB4NkMsIDB4MjAsCisgICAgMHg2MSwgMHg2NCwgMHg2NCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHgzMCwgMHgyRSwgMHgzMSwgMHgzNywgMHgzNCwgMHgzNiwgMHgyMCwKKyAgICAweDZELCAweDc1LCAweDZDLCAweDIwLCAweDYxLCAweDY0LCAweDY0LCAweDIwLCAweDYxLCAweDY0LCAweDY0LCAweDIwLCAweDdELCAweDIwLCAweDYyLCAweDY5LAorICAgIDB4NkUsIDB4NjQsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NDYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4NEQsIDB4NjEsIDB4NzQsIDB4NzIsCisgICAgMHg2OSwgMHg3OCwgMHgyMCwgMHg1QiwgMHgyMCwgMHgzMCwgMHgyRSwgMHgzMCwgMHgzMCwgMHgzMSwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgyMCwgMHgzMCwKKyAgICAweDIwLCAweDMwLCAweDIwLCAweDMwLCAweDJFLCAweDMwLCAweDMwLCAweDMxLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDIwLCAweDMwLCAweDIwLCAweDMwLAorICAgIDB4MjAsIDB4NUQsIDB4MjAsIDB4NzIsIDB4NjUsIDB4NjEsIDB4NjQsIDB4NkYsIDB4NkUsIDB4NkMsIDB4NzksIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsCisgICAgMHgyRiwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0MiwgMHg0MiwgMHg2RiwgMHg3OCwgMHgyMCwgMHg3QiwgMHgyRCwgMHgzMSwgMHgzNSwgMHgzNywgMHgyMCwKKyAgICAweDJELCAweDMyLCAweDM1LCAweDM3LCAweDIwLCAweDMxLCAweDMxLCAweDM5LCAweDM0LCAweDIwLCAweDM4LCAweDM3LCAweDMyLCAweDdELCAweDIwLCAweDcyLAorICAgIDB4NjUsIDB4NjEsIDB4NjQsIDB4NkYsIDB4NkUsIDB4NkMsIDB4NzksIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4NDIsIDB4NkMsIDB4NjUsCisgICAgMHg2RSwgMHg2NCwgMHgyMCwgMHgzMywgMHgyMCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2MiwgMHg2NSwKKyAgICAweDY3LCAweDY5LCAweDZFLCAweDBELCAweDJGLCAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDQyLCAweDQyLCAweDZGLCAweDc4LCAweDIwLCAweDdCLCAweDdCLAorICAgIDB4MjAsIDB4MkQsIDB4MzEsIDB4MzMsIDB4MzUsIDB4MjAsIDB4MkQsIDB4MzIsIDB4MzMsIDB4MzYsIDB4MjAsIDB4MkQsIDB4MzEsIDB4MzMsIDB4MzUsIDB4MjAsCisgICAgMHgyRCwgMHgzMiwgMHgzMCwgMHgzMSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgyRCwgMHgzMiwgMHgzNSwgMHgzNywgMHgyMCwgMHgyRCwgMHgzMiwKKyAgICAweDM1LCAweDM3LCAweDIwLCAweDJELCAweDMyLCAweDM1LCAweDM3LCAweDIwLCAweDJELCAweDMyLCAweDM1LCAweDM3LCAweDIwLCAweDdELCAweDIwLCAweDdCLAorICAgIDB4MjAsIDB4MzUsIDB4MzgsIDB4MzIsIDB4MjAsIDB4MzEsIDB4MzIsIDB4MzEsIDB4MzcsIDB4MjAsIDB4MzEsIDB4MzIsIDB4MzcsIDB4MzQsIDB4MjAsIDB4MzEsCisgICAgMHgzOSwgMHgzMiwgMHgzMiwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgzOCwgMHgzNywgMHgzMiwgMHgyMCwgMHgzOCwgMHgzNywgMHgzMiwgMHgyMCwKKyAgICAweDM4LCAweDM3LCAweDMyLCAweDIwLCAweDM4LCAweDM3LCAweDMyLCAweDIwLCAweDdELCAweDdELCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDJGLAorICAgIDB4NTAsIDB4NzIsIDB4NjksIDB4NzYsIDB4NjEsIDB4NzQsIDB4NjUsIDB4MjAsIDB4MzEsIDB4MzQsIDB4MjAsIDB4NjQsIDB4NjksIDB4NjMsIDB4NzQsIDB4MjAsCisgICAgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHg2NSwgMHg2RSwgMHg2NCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyNSwgMHgyMCwgMHg0MywgMHg2RiwKKyAgICAweDcwLCAweDc5LCAweDcyLCAweDY5LCAweDY3LCAweDY4LCAweDc0LCAweDIwLCAweDI4LCAweDYzLCAweDI5LCAweDIwLCAweDMxLCAweDM5LCAweDM5LCAweDMwLAorICAgIDB4MkQsIDB4MzEsIDB4MzksIDB4MzksIDB4MzQsIDB4MjAsIDB4NDEsIDB4NjQsIDB4NkYsIDB4NjIsIDB4NjUsIDB4MjAsIDB4NTMsIDB4NzksIDB4NzMsIDB4NzQsCisgICAgMHg2NSwgMHg2RCwgMHg3MywgMHgyMCwgMHg0OSwgMHg2RSwgMHg2MywgMHg2RiwgMHg3MiwgMHg3MCwgMHg2RiwgMHg3MiwgMHg2MSwgMHg3NCwgMHg2NSwgMHg2NCwKKyAgICAweDBELCAweDI1LCAweDIwLCAweDQxLCAweDZDLCAweDZDLCAweDIwLCAweDUyLCAweDY5LCAweDY3LCAweDY4LCAweDc0LCAweDczLCAweDIwLCAweDUyLCAweDY1LAorICAgIDB4NzMsIDB4NjUsIDB4NzIsIDB4NzYsIDB4NjUsIDB4NjQsIDB4MkUsIDB4MEQsIDB4MkYsIDB4NzMsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsIDB4NjQsCisgICAgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHg3NywgMHg2OCwgMHg2NSwgMHg3MiwgMHg2NSwgMHgwRCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwKKyAgICAweDYzLCAweDc1LCAweDcyLCAweDcyLCAweDY1LCAweDZFLCAweDc0LCAweDczLCAweDY4LCAweDYxLCAweDcyLCAweDY1LCAweDY0LCAweDIwLCAweDdCLCAweDIwLAorICAgIDB4NzMsIDB4NjUsIDB4NzQsIDB4NzMsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NzQsIDB4NzIsIDB4NzUsIDB4NjUsCisgICAgMHgyMCwgMHg3MywgMHg2NSwgMHg3NCwgMHg3MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwKKyAgICAweDY0LCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDdELCAweDBELCAweDdCLCAweDIwLCAweDdCLCAweDIwLCAweDdELCAweDIwLCAweDc1LCAweDczLAorICAgIDB4NjUsIDB4NzIsIDB4NjQsIDB4NjksIDB4NjMsIDB4NzQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgwRCwgMHgyRiwgMHg2RCwgMHg2MSwgMHg2QiwgMHg2NSwgMHg2MiwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg2NCwKKyAgICAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDc3LCAweDY4LCAweDY1LCAweDcyLCAweDY1LCAweDIwLCAweDdCLCAweDIwLCAweDJGLCAweDZELCAweDYxLAorICAgIDB4NkIsIDB4NjUsIDB4NjIsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjQsIDB4NjUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4NjcsIDB4NjUsCisgICAgMHg3NCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgyMCwgMHgyRiwgMHg2RiwgMHg3MCwgMHg2NSwgMHg3MiwKKyAgICAweDYxLCAweDc0LCAweDZGLCAweDcyLCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDdCLCAweDBELCAweDcwLCAweDZGLAorICAgIDB4NzAsIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NjcsIDB4NjUsCisgICAgMHg3NCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgyMCwgMHgyRiwgMHg2OSwgMHg2RSwgMHg3NCwgMHg2NSwKKyAgICAweDY3LCAweDY1LCAweDcyLCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDZFLCAweDY1LCAweDBELCAweDdCLCAweDIwLCAweDcwLCAweDZGLCAweDcwLAorICAgIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MzEsIDB4MzEsIDB4MjAsIDB4NkMsIDB4NzQsCisgICAgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywKKyAgICAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDc0LCAweDcyLCAweDc1LCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LAorICAgIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0IsIDB4MjAsIDB4MkYsIDB4NkQsIDB4NjEsIDB4NkIsIDB4NjUsIDB4NjIsIDB4NkMsIDB4NjUsIDB4NkUsCisgICAgMHg2NCwgMHg2NSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg3QiwgMHgwRCwgMHgzMSwgMHgzMSwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwKKyAgICAweDBELCAweDMyLCAweDIwLCAweDYzLCAweDZGLCAweDcwLCAweDc5LCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDY1LAorICAgIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MkYsIDB4NTcsIDB4NjUsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4NTYsIDB4NjUsIDB4NjMsIDB4NzQsIDB4NkYsCisgICAgMHg3MiwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHg2NSwgMHg3MSwgMHgwRCwKKyAgICAweDdCLCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMwLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDdCLCAweDIwLCAweDYxLAorICAgIDB4NjQsIDB4NjQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjYsIDB4NkYsIDB4NzIsIDB4NjEsIDB4NkMsIDB4NkMsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NzMsIDB4NzUsCisgICAgMHg2MiwgMHgyMCwgMHg2MSwgMHg2MiwgMHg3MywgMHgyMCwgMHgyRSwgMHgzMCwgMHgzMCwgMHgzMSwgMHgyMCwgMHg2NywgMHg3NCwgMHgyMCwgMHg3RCwgMHgwRCwKKyAgICAweDdCLCAweDIwLCAweDc0LCAweDcyLCAweDc1LCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDBELAorICAgIDB4N0IsIDB4MjAsIDB4MkYsIDB4NkQsIDB4NjEsIDB4NkIsIDB4NjUsIDB4NjIsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjQsIDB4NjUsIDB4NjQsIDB4NjYsIDB4NkYsCisgICAgMHg2RSwgMHg3NCwgMHgyMCwgMHg2MywgMHg3NiwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3MiwgMHg3MiwgMHg2RiwgMHg3MiwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwKKyAgICAweDIwLCAweDJGLCAweDcyLCAweDYxLCAweDZFLCAweDY3LCAweDY1LCAweDYzLCAweDY4LCAweDY1LCAweDYzLCAweDZCLCAweDIwLCAweDY3LCAweDY1LCAweDc0LAorICAgIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MEQsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsCisgICAgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2RCwgMHg2MSwgMHg3OCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwKKyAgICAweDY4LCAweDIwLCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDYyLCAweDY1LCAweDY3LCAweDY5LCAweDZFLCAweDIwLCAweDdCLCAweDBELCAweDY2LAorICAgIDB4NjEsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MkYsIDB4NDYsIDB4NDksIDB4NDQsIDB4MjAsIDB4MkYsIDB4NTUsIDB4NkUsIDB4NjksCisgICAgMHg3MSwgMHg3NSwgMHg2NSwgMHg0OSwgMHg0NCwgMHgyMCwgMHgyRiwgMHg1OCwgMHg1NSwgMHg0OSwgMHg0NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwKKyAgICAweDMzLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDZGLCAweDcyLCAweDIwLCAweDdELCAweDIwLAorICAgIDB4NjYsIDB4NkYsIDB4NzIsIDB4NjEsIDB4NkMsIDB4NkMsIDB4MEQsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsCisgICAgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywKKyAgICAweDY1LCAweDBELCAweDdELCAweDIwLCAweDY2LCAweDZGLCAweDcyLCAweDYxLCAweDZDLCAweDZDLCAweDBELCAweDJGLCAweDU4LCAweDU1LCAweDQ5LCAweDQ0LAorICAgIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjMsIDB4NkYsIDB4NzAsIDB4NzksIDB4MjAsIDB4NkIsIDB4NkUsIDB4NkYsIDB4NzcsIDB4NkUsIDB4MjAsIDB4N0IsIDB4MEQsCisgICAgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHgzMiwKKyAgICAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDczLCAweDc1LAorICAgIDB4NjIsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NjcsIDB4NzQsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NjUsIDB4NzgsIDB4NjMsCisgICAgMHg2OCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHg2MSwgMHg3MiwgMHg3MiwKKyAgICAweDYxLCAweDc5LCAweDIwLCAweDYzLCAweDZGLCAweDcwLCAweDc5LCAweDBELCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDMyLCAweDIwLCAweDY5LAorICAgIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MzYsIDB4MzUsIDB4MzUsIDB4MzMsIDB4MzYsIDB4MjAsIDB4NkQsIDB4NzUsIDB4NkMsCisgICAgMHgyMCwgMHg2MywgMHg3NiwgMHg2OSwgMHgyMCwgMHgzMywgMHgyMCwgMHg2MywgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgyMCwKKyAgICAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDMxLCAweDIwLCAweDYxLCAweDY0LCAweDY0LCAweDIwLCAweDdELCAweDIwLCAweDY2LCAweDZGLCAweDcyLCAweDYxLAorICAgIDB4NkMsIDB4NkMsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4MkYsIDB4NTgsIDB4NTUsIDB4NDksIDB4NDQsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsCisgICAgMHg2OCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3MCwgMHg2RiwKKyAgICAweDcwLCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDBELCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDcwLAorICAgIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsCisgICAgMHg3QiwgMHgyMCwgMHgyRiwgMHg1MCwgMHg3MiwgMHg2OSwgMHg3NiwgMHg2MSwgMHg3NCwgMHg2NSwgMHgyMCwgMHgyRiwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwKKyAgICAweDQ5LCAweDZFLCAweDY2LCAweDZGLCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDZDLCAweDZGLCAweDYxLAorICAgIDB4NjQsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4NkQsIDB4NjEsIDB4NzgsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsIDB4NjgsIDB4MjAsCisgICAgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHg2MiwgMHg2NSwgMHg2NywgMHg2OSwgMHg2RSwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NiwgMHg2MSwgMHg2QywKKyAgICAweDczLCAweDY1LCAweDIwLCAweDdCLCAweDIwLCAweDJGLCAweDU1LCAweDZFLCAweDY5LCAweDcxLCAweDc1LCAweDY1LCAweDQ5LCAweDQ0LCAweDIwLCAweDJGLAorICAgIDB4NTgsIDB4NTUsIDB4NDksIDB4NDQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsCisgICAgMHgyMCwgMHg2NSwgMHg3MSwgMHgyMCwgMHg2RiwgMHg3MiwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2NiwgMHg2RiwgMHg3MiwgMHg2MSwgMHg2QywgMHg2QywgMHgwRCwKKyAgICAweDdCLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDY0LCAweDY1LAorICAgIDB4NjYsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjYsIDB4NkYsIDB4NzIsCisgICAgMHg2MSwgMHg2QywgMHg2QywgMHgyMCwgMHg2MywgMHg3NSwgMHg3MiwgMHg3MiwgMHg2NSwgMHg2RSwgMHg3NCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwKKyAgICAweDY1LCAweDZFLCAweDY0LCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDBELCAweDdELCAweDIwLCAweDY2LCAweDZGLCAweDcyLCAweDYxLCAweDZDLCAweDZDLAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MkYsIDB4NTcsIDB4NjUsIDB4NjksIDB4NjcsIDB4NjgsIDB4NzQsIDB4NTYsIDB4NjUsIDB4NjMsIDB4NzQsCisgICAgMHg2RiwgMHg3MiwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDJGLCAweDI0LCAweDQyLCAweDZDLCAweDY1LCAweDZFLCAweDY0LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDVCLCAweDBELCAweDY1LAorICAgIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwKKyAgICAweDJELCAweDMxLCAweDIwLCAweDMxLCAweDIwLCAweDdCLCAweDBELCAweDMxLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY0LAorICAgIDB4NzUsIDB4NzAsIDB4MjAsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsIDB4NjgsIDB4MjAsIDB4MzMsIDB4MjAsIDB4MkQsIDB4MzEsIDB4MjAsIDB4NzIsCisgICAgMHg2RiwgMHg2QywgMHg2QywgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDMwLCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDdCLCAweDBELCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDMxLCAweDIwLCAweDY5LCAweDZFLCAweDY0LAorICAgIDB4NjUsIDB4NzgsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MkYsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NkMsIDB4NkYsIDB4NjEsIDB4NjQsIDB4MjAsCisgICAgMHgzMywgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg3MCwKKyAgICAweDZGLCAweDcwLCAweDIwLCAweDZDLCAweDZGLCAweDYxLCAweDY0LCAweDIwLCAweDMzLCAweDIwLCAweDMxLCAweDIwLCAweDcyLCAweDZGLCAweDZDLCAweDZDLAorICAgIDB4MEQsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4N0IsIDB4MjAsCisgICAgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3RCwgMHgwRCwgMHg3QiwgMHgyMCwgMHgzMiwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwKKyAgICAweDdCLCAweDIwLCAweDJGLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDZDLCAweDZGLCAweDYxLCAweDY0LCAweDIwLCAweDM0LCAweDIwLCAweDMxLAorICAgIDB4MjAsIDB4NzIsIDB4NkYsIDB4NkMsIDB4NkMsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MEQsIDB4MzMsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NzIsCisgICAgMHg2RiwgMHg2QywgMHg2QywgMHgyMCwgMHgyRiwgMHg2RCwgMHg3NSwgMHg2QywgMHgyMCwgMHg2QywgMHg2RiwgMHg2MSwgMHg2NCwgMHgyMCwgMHgzMywgMHgyMCwKKyAgICAweDMxLCAweDIwLCAweDcyLCAweDZGLCAweDZDLCAweDZDLCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDBELAorICAgIDB4MzEsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MkYsIDB4NjEsIDB4NjQsIDB4NjQsIDB4MjAsIDB4NkMsCisgICAgMHg2RiwgMHg2MSwgMHg2NCwgMHgyMCwgMHgzMywgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwKKyAgICAweDY2LCAweDBELCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDc0LCAweDcyLCAweDc1LCAweDY1LCAweDIwLAorICAgIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0QsIDB4MjAsCisgICAgMHg2NiwgMHg2RiwgMHg3MiwgMHgwRCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgyRiwgMHg2MSwgMHg2NCwgMHg2NCwgMHgyMCwgMHg2QywKKyAgICAweDZGLCAweDYxLCAweDY0LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDBELCAweDVELCAweDIwLCAweDYzLCAweDc2LCAweDc4LCAweDIwLCAweDY0LAorICAgIDB4NjUsIDB4NjYsIDB4MEQsIDB4N0IsIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjMsIDB4NkYsIDB4NzAsIDB4NzksIDB4MjAsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsCisgICAgMHg3NCwgMHg2OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHg2RSwKKyAgICAweDY1LCAweDIwLCAweDdCLCAweDIwLCAweDJGLCAweDZELCAweDYxLCAweDZCLCAweDY1LCAweDYyLCAweDZDLCAweDY1LCAweDZFLCAweDY0LCAweDY1LCAweDY0LAorICAgIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4NjMsIDB4NzYsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzIsIDB4NzIsIDB4NkYsIDB4NzIsIDB4NjQsIDB4NjksCisgICAgMHg2MywgMHg3NCwgMHgyMCwgMHgyRiwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHg2MywgMHg2OCwgMHg2NSwgMHg2MywgMHg2QiwgMHgyMCwgMHg2NywgMHg2NSwKKyAgICAweDc0LCAweDIwLCAweDY1LCAweDc4LCAweDY1LCAweDYzLCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDBELCAweDMwLCAweDIwLCAweDMwLCAweDIwLAorICAgIDB4MzEsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsIDB4NjgsCisgICAgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzNCwgMHgyMCwgMHg2OSwKKyAgICAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDY1LCAweDc4LAorICAgIDB4NjMsIDB4NjgsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsCisgICAgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2RCwgMHg3NSwgMHg2QywgMHgyMCwgMHg2MSwgMHg2NCwgMHg2NCwgMHgwRCwgMHg3RCwgMHgyMCwgMHg2NiwgMHg2RiwKKyAgICAweDcyLCAweDBELCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLAorICAgIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0QsIDB4MEQsIDB4N0IsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4NzQsIDB4NzksCisgICAgMHg3MCwgMHg2NSwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgyRiwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2MSwKKyAgICAweDc5LCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDJGLCAweDcwLAorICAgIDB4NjEsIDB4NjMsIDB4NkIsIDB4NjUsIDB4NjQsIDB4NjEsIDB4NzIsIDB4NzIsIDB4NjEsIDB4NzksIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4MjAsIDB4NjUsCisgICAgMHg3MSwgMHgyMCwgMHg2RiwgMHg3MiwgMHgyMCwgMHg3QiwgMHgwRCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwKKyAgICAweDY1LCAweDc4LCAweDIwLCAweDJGLCAweDQ2LCAweDZGLCAweDcyLCAweDYzLCAweDY1LCAweDQyLCAweDZGLCAweDZDLCAweDY0LCAweDIwLCAweDY1LCAweDcxLAorICAgIDB4MjAsIDB4N0IsIDB4MEQsIDB4MzUsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4MzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4MzEsCisgICAgMHgyMCwgMHgzMywgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwKKyAgICAweDMxLCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDdCLCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDM0LCAweDIwLCAweDY5LCAweDZFLAorICAgIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MzIsCisgICAgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwKKyAgICAweDYxLCAweDY0LCAweDY0LCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LAorICAgIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjYsIDB4NkYsIDB4NzIsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsCisgICAgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgwRCwgMHgzMiwgMHgyMCwgMHg2OSwKKyAgICAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDJGLCAweDQ2LCAweDZGLCAweDcyLCAweDYzLCAweDY1LCAweDQyLCAweDZGLCAweDZDLCAweDY0LCAweDU0LAorICAgIDB4NjgsIDB4NzIsIDB4NjUsIDB4NzMsIDB4NjgsIDB4NkYsIDB4NkMsIDB4NjQsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4NjcsIDB4NzQsIDB4MjAsCisgICAgMHgzMywgMHgyMCwgMHg2MywgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgwRCwgMHg3QiwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwKKyAgICAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDMxLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDZDLCAweDY1LCAweDZFLCAweDY3LAorICAgIDB4NzQsIDB4NjgsIDB4MjAsIDB4NkUsIDB4NjUsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsCisgICAgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgwRCwgMHg3NCwgMHg3MiwgMHg3NSwgMHg2NSwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwKKyAgICAweDdCLCAweDIwLCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDJGLCAweDY5LCAweDZFLCAweDc0LCAweDY1LAorICAgIDB4NjcsIDB4NjUsIDB4NzIsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsCisgICAgMHgyRiwgMHg3MiwgMHg2NSwgMHg2MSwgMHg2QywgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgyMCwgMHg2NSwgMHg3MSwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywKKyAgICAweDY4LCAweDIwLCAweDZGLCAweDcyLCAweDIwLCAweDYxLCAweDZFLCAweDY0LCAweDIwLCAweDdELCAweDIwLCAweDY2LCAweDZGLCAweDcyLCAweDYxLCAweDZDLAorICAgIDB4NkMsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MEQsIDB4MzIsIDB4MjAsIDB4NjMsCisgICAgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwgMHgzOCwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwKKyAgICAweDIwLCAweDY1LCAweDc4LCAweDY1LCAweDYzLCAweDIwLCAweDdCLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDM1LCAweDIwLCAweDY5LCAweDZFLAorICAgIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4MzUsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsCisgICAgMHgyMCwgMHg3RCwgMHgwRCwgMHg3QiwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2QywgMHg2NSwKKyAgICAweDZFLCAweDY3LCAweDc0LCAweDY4LCAweDIwLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDIwLCAweDMxLCAweDIwLCAweDY5LCAweDZFLCAweDY0LAorICAgIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzgsIDB4NjMsIDB4NjgsIDB4NjUsIDB4NjMsIDB4NkIsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjMsIDB4NzYsIDB4NzgsIDB4MjAsCisgICAgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwKKyAgICAweDMxLCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDMwLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDMxLCAweDIwLCAweDY1LAorICAgIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsCisgICAgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg3NCwKKyAgICAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDJGLCAweDYxLCAweDcyLCAweDcyLCAweDYxLCAweDc5LCAweDc0LCAweDc5LAorICAgIDB4NzAsIDB4NjUsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4MkYsIDB4NzAsIDB4NjEsIDB4NjMsIDB4NkIsCisgICAgMHg2NSwgMHg2NCwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2MSwgMHg3OSwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgyMCwgMHg2NSwgMHg3MSwgMHgyMCwgMHg2RiwKKyAgICAweDcyLCAweDIwLCAweDdCLCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDMwLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LAorICAgIDB4MjAsIDB4MzYsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsIDB4MjAsIDB4N0IsIDB4MEQsCisgICAgMHgzOSwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHgzOSwgMHgyMCwgMHg2OSwKKyAgICAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDY1LCAweDYzLCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDIwLCAweDdELAorICAgIDB4MjAsIDB4NjksIDB4NjYsIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4MzMsIDB4MjAsIDB4MzEsIDB4MjAsCisgICAgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHg3RCwgMHgyMCwgMHg2NiwgMHg2RiwgMHg3MiwgMHgyMCwgMHg2NSwKKyAgICAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDcwLCAweDZGLCAweDcwLAorICAgIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjMsIDB4NkYsIDB4NzAsIDB4NzksCisgICAgMHgwRCwgMHgzMSwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgyRiwgMHg1MywgMHg3NCwKKyAgICAweDY1LCAweDZELCAweDUzLCAweDZFLCAweDYxLCAweDcwLCAweDQ4LCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLAorICAgIDB4MkYsIDB4NTMsIDB4NzQsIDB4NjUsIDB4NkQsIDB4NTMsIDB4NkUsIDB4NjEsIDB4NzAsIDB4NTYsIDB4MjAsIDB4NjUsIDB4NzEsIDB4MjAsIDB4NkYsIDB4NzIsCisgICAgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHgzMSwgMHgyMCwKKyAgICAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDdCLCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMwLCAweDIwLCAweDZDLCAweDY1LCAweDIwLCAweDdCLAorICAgIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjksIDB4NzQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHgzMywgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwKKyAgICAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDMzLAorICAgIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsCisgICAgMHgzMiwgMHgyMCwgMHg2MywgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwgMHg2NSwgMHg3MSwgMHgyMCwgMHg3QiwgMHgwRCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwKKyAgICAweDMyLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDMyLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLAorICAgIDB4MzAsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MjAsIDB4MzAsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MjAsIDB4NkMsIDB4NjUsIDB4MjAsCisgICAgMHg3QiwgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHg3RCwgMHgwRCwgMHg3QiwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwKKyAgICAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDMxLCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDMzLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LAorICAgIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsCisgICAgMHgzMywgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwKKyAgICAweDBELCAweDMzLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDMzLCAweDIwLAorICAgIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsCisgICAgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgwRCwgMHgzMywgMHgyMCwgMHg2MywgMHg2RiwgMHg3MCwgMHg3OSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgyMCwKKyAgICAweDcwLCAweDZGLCAweDcwLCAweDBELCAweDMyLCAweDIwLCAweDYzLCAweDZGLCAweDcwLCAweDc5LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLAorICAgIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsIDB4NjgsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsIDB4NkMsIDB4NzQsIDB4MjAsCisgICAgMHg3QiwgMHgyMCwgMHgzMSwgMHgyMCwgMHg2MSwgMHg2NCwgMHg2NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwKKyAgICAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDZDLCAweDZGLCAweDZGLCAweDcwLCAweDIwLCAweDcwLCAweDZGLCAweDcwLAorICAgIDB4MEQsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NkMsIDB4NjUsIDB4MjAsCisgICAgMHg3QiwgMHgwRCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg3QiwgMHgyMCwgMHgzMCwKKyAgICAweDIwLCAweDY3LCAweDc0LCAweDIwLCAweDdCLCAweDIwLCAweDY1LCAweDc4LCAweDY5LCAweDc0LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDIwLAorICAgIDB4MzEsIDB4MjAsIDB4NjEsIDB4NjQsIDB4NjQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjYsIDB4NkYsIDB4NzIsIDB4NjEsIDB4NkMsIDB4NkMsIDB4MEQsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMiwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwKKyAgICAweDY4LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDY5LCAweDZFLAorICAgIDB4NzQsIDB4NjUsIDB4NzIsIDB4NzYsIDB4NjEsIDB4NkMsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsCisgICAgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3MCwgMHg3NSwgMHg3NCwgMHgyMCwgMHg3RCwgMHgwRCwKKyAgICAweDdCLCAweDIwLCAweDJGLCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDdCLAorICAgIDB4MjAsIDB4MzYsIDB4MjAsIDB4NjMsIDB4NkYsIDB4NzAsIDB4NzksIDB4MjAsIDB4MzMsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NzIsIDB4NkYsIDB4NkMsIDB4NkMsCisgICAgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHgzMiwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwKKyAgICAweDc4LCAweDIwLCAweDY1LCAweDc4LCAweDY1LCAweDYzLCAweDIwLCAweDdELCAweDBELCAweDdCLCAweDIwLCAweDJGLCAweDZELCAweDYxLCAweDZCLCAweDY1LAorICAgIDB4NjIsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjQsIDB4NjUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4NjMsIDB4NzYsIDB4NzgsIDB4MjAsCisgICAgMHg2NSwgMHg3MiwgMHg3MiwgMHg2RiwgMHg3MiwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHgyRiwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHg2MywKKyAgICAweDY4LCAweDY1LCAweDYzLCAweDZCLCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDY1LCAweDc4LCAweDY1LCAweDYzLCAweDIwLCAweDdELCAweDIwLAorICAgIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsCisgICAgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2NiwgMHg2RiwgMHg3MiwgMHg2MSwgMHg2QywgMHg2QywKKyAgICAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDcwLCAweDZGLCAweDcwLAorICAgIDB4MjAsIDB4N0QsIDB4MEQsIDB4NjMsIDB4NzUsIDB4NzIsIDB4NzIsIDB4NjUsIDB4NkUsIDB4NzQsIDB4NjQsIDB4NjksIDB4NjMsIDB4NzQsIDB4MjAsIDB4NDIsCisgICAgMHg2QywgMHg2NSwgMHg2RSwgMHg2NCwgMHgyMCwgMHgzMiwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2NSwKKyAgICAweDYzLCAweDBELCAweDYzLCAweDc1LCAweDcyLCAweDcyLCAweDY1LCAweDZFLCAweDc0LCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDY1LCAweDZFLAorICAgIDB4NjQsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjIsIDB4NjksIDB4NkUsIDB4NjQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MEQsIDB4MkYsIDB4MjQsIDB4NjYsCisgICAgMHg2MiwgMHg2NiwgMHgyMCwgMHg3QiwgMHgyMCwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0NCwgMHg2OSwgMHg3MiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwKKyAgICAweDcyLCAweDc5LCAweDIwLCAweDYzLCAweDZGLCAweDc1LCAweDZFLCAweDc0LCAweDc0LCAweDZGLCAweDZELCAweDYxLCAweDcyLCAweDZCLCAweDIwLCAweDMzLAorICAgIDB4MjAsIDB4NjEsIDB4NjQsIDB4NjQsIDB4MjAsIDB4MkQsIDB4MzEsIDB4MjAsIDB4NzIsIDB4NkYsIDB4NkMsIDB4NkMsIDB4MjAsIDB4NkIsIDB4NkUsIDB4NkYsCisgICAgMHg3NywgMHg2RSwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2MywgMHg2QywgMHg2NSwgMHg2MSwgMHg3MiwgMHg3NCwgMHg2RiwgMHg2RCwgMHg2MSwgMHg3MiwgMHg2QiwKKyAgICAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDY2LCAweDY5LCAweDZFLCAweDY0LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDdELCAweDIwLAorICAgIDB4N0IsIDB4MEQsIDB4NUQsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NjYsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsCisgICAgMHg3NCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2RCwgMHg2MSwgMHg2QiwgMHg2NSwgMHg2MiwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NCwKKyAgICAweDY1LCAweDY0LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDBELCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDJGLCAweDQ1LCAweDZFLCAweDYzLCAweDZGLAorICAgIDB4NjQsIDB4NjksIDB4NkUsIDB4NjcsIDB4MjAsIDB4NjMsIDB4NzUsIDB4NzIsIDB4NzIsIDB4NjUsIDB4NkUsIDB4NzQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsCisgICAgMHgyMCwgMHgyRiwgMHg0NSwgMHg2RSwgMHg2MywgMHg2RiwgMHg2NCwgMHg2OSwgMHg2RSwgMHg2NywgMHgyMCwgMHg2NywgMHg2NSwgMHg3NCwgMHgyMCwgMHg3MCwKKyAgICAweDc1LCAweDc0LCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDY5LCAweDZFLCAweDY1LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDBELCAweDdELCAweDIwLAorICAgIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4NjMsIDB4NzUsIDB4NzIsIDB4NzIsIDB4NjUsIDB4NkUsIDB4NzQsIDB4NjYsIDB4NkYsCisgICAgMHg2RSwgMHg3NCwgMHgyMCwgMHgyRiwgMHg1MywgMHg2MywgMHg2MSwgMHg2QywgMHg2NSwgMHg0RCwgMHg2MSwgMHg3NCwgMHg3MiwgMHg2OSwgMHg3OCwgMHgyMCwKKyAgICAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDZELCAweDYxLCAweDZCLCAweDY1LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDczLCAweDY1LCAweDc0LAorICAgIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjIsIDB4NjksIDB4NkUsIDB4NjQsIDB4MjAsIDB4NzAsIDB4NzUsIDB4NzQsIDB4MjAsCisgICAgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwKKyAgICAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDY1LCAweDc4LCAweDY1LCAweDYzLCAweDBELCAweDJGLCAweDRFLCAweDZGLCAweDcyLCAweDZELCAweDYxLAorICAgIDB4NkMsIDB4NjksIDB4N0EsIDB4NjUsIDB4NDQsIDB4NjUsIDB4NzMsIDB4NjksIDB4NjcsIDB4NkUsIDB4NTYsIDB4NjUsIDB4NjMsIDB4NzQsIDB4NkYsIDB4NzIsCisgICAgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHgzMSwgMHgzMSwgMHgzMCwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwKKyAgICAweDM2LCAweDM4LCAweDMwLCAweDIwLCAweDY0LCAweDY5LCAweDc2LCAweDBELCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDMxLCAweDMwLCAweDMwLAorICAgIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsIDB4MzgsIDB4MzAsIDB4MzAsIDB4MjAsIDB4NjQsIDB4NjksIDB4NzYsIDB4MEQsIDB4N0QsIDB4MjAsIDB4NjIsCisgICAgMHg2OSwgMHg2RSwgMHg2NCwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2NiwgMHgwRCwgMHgyRiwgMHg0MywgMHg2RiwgMHg2RSwgMHg3NiwgMHg2NSwgMHg3MiwgMHg3NCwKKyAgICAweDQ0LCAweDY1LCAweDczLCAweDY5LCAweDY3LCAweDZFLCAweDU2LCAweDY1LCAweDYzLCAweDc0LCAweDZGLCAweDcyLCAweDIwLCAweDdCLCAweDBELCAweDMxLAorICAgIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsIDB4MzEsIDB4MjAsIDB4MzIsCisgICAgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg3MywgMHg3NSwgMHg2MiwgMHgyMCwgMHg2RCwgMHg3NSwgMHg2QywgMHgyMCwgMHgzMywKKyAgICAweDIwLCAweDMxLCAweDIwLCAweDcyLCAweDZGLCAweDZDLCAweDZDLCAweDBELCAweDMxLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLAorICAgIDB4MzEsIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NzMsIDB4NzUsIDB4NjIsIDB4MjAsIDB4NkQsIDB4NzUsCisgICAgMHg2QywgMHgyMCwgMHgzMywgMHgyMCwgMHgzMSwgMHgyMCwgMHg3MiwgMHg2RiwgMHg2QywgMHg2QywgMHgwRCwgMHgzMSwgMHgyMCwgMHgzMiwgMHgyMCwgMHg2OSwKKyAgICAweDZFLCAweDY0LCAweDY1LCAweDc4LCAweDIwLCAweDczLCAweDc1LCAweDYyLCAweDIwLCAweDMxLCAweDIwLCAweDY5LCAweDZFLCAweDY0LCAweDY1LCAweDc4LAorICAgIDB4MjAsIDB4NkQsIDB4NzUsIDB4NkMsIDB4MjAsIDB4MzMsIDB4MjAsIDB4MzEsIDB4MjAsIDB4NzIsIDB4NkYsIDB4NkMsIDB4NkMsIDB4MEQsIDB4MzEsIDB4MjAsCisgICAgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHgzMSwgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2RCwgMHg3NSwKKyAgICAweDZDLCAweDIwLCAweDMzLCAweDIwLCAweDMxLCAweDIwLCAweDcyLCAweDZGLCAweDZDLCAweDZDLCAweDBELCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDcwLAorICAgIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjIsIDB4NjksIDB4NkUsIDB4NjQsIDB4MjAsIDB4NjQsIDB4NjUsIDB4NjYsIDB4MEQsIDB4MkYsIDB4MjQsCisgICAgMHg2RCwgMHg2RCwgMHg2NiwgMHg2NiwgMHg1RiwgMHg2RiwgMHg3MiwgMHg2OSwgMHg2NywgMHg2NiwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwKKyAgICAweDc0LCAweDIwLCAweDc3LCAweDY4LCAweDY1LCAweDcyLCAweDY1LCAweDIwLCAweDdCLCAweDBELCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDczLCAweDYxLAorICAgIDB4NzYsIDB4NjUsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzIsIDB4NjUsIDB4NzMsIDB4NzQsIDB4NkYsIDB4NzIsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsCisgICAgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3RCwgMHgwRCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3QiwKKyAgICAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDY0LCAweDY1LCAweDY2LCAweDIwLCAweDdELCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LAorICAgIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4MkYsIDB4NzMsIDB4NjUsIDB4NzQsIDB4NzMsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4NzcsCisgICAgMHg2OCwgMHg2NSwgMHg3MiwgMHg2NSwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3NCwgMHg3MiwgMHg3NSwgMHg2NSwgMHgyMCwKKyAgICAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDY2LCAweDYxLCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLAorICAgIDB4NzMsIDB4NjUsIDB4MEQsIDB4MkYsIDB4NjYsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4NzcsIDB4NjgsIDB4NjUsCisgICAgMHg3MiwgMHg2NSwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg3MywgMHg3OSwgMHg3MywgMHg3NCwgMHg2NSwKKyAgICAweDZELCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDdCLCAweDBELCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDdCLAorICAgIDB4MjAsIDB4NjMsIDB4NzUsIDB4NzIsIDB4NzIsIDB4NjUsIDB4NkUsIDB4NzQsIDB4NzMsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4N0IsCisgICAgMHgyMCwgMHg3QiwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3NCwgMHg3MiwgMHg3NSwgMHg2NSwgMHgyMCwgMHg3MywgMHg2NSwKKyAgICAweDc0LCAweDczLCAweDY4LCAweDYxLCAweDcyLCAweDY1LCAweDY0LCAweDIwLCAweDdCLCAweDIwLCAweDY2LCAweDYxLCAweDZDLCAweDczLCAweDY1LCAweDIwLAorICAgIDB4NzMsIDB4NjUsIDB4NzQsIDB4NzMsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsCisgICAgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgwRCwKKyAgICAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDdCLCAweDIwLCAweDdELCAweDIwLCAweDc1LCAweDczLCAweDY1LCAweDcyLCAweDY0LCAweDY5LCAweDYzLCAweDc0LAorICAgIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4NjIsIDB4NjUsIDB4NjcsIDB4NjksIDB4NkUsIDB4MEQsCisgICAgMHg3RCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg2MiwgMHg2NSwgMHg2NywgMHg2OSwgMHg2RSwgMHgyMCwgMHg3QiwgMHgyMCwgMHg2MywgMHg3NSwgMHg3MiwgMHg3MiwKKyAgICAweDY1LCAweDZFLCAweDc0LCAweDY0LCAweDY5LCAweDYzLCAweDc0LCAweDIwLCAweDczLCAweDYzLCAweDY4LCAweDY1LCAweDYzLCAweDZCLCAweDIwLCAweDdELAorICAgIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsCisgICAgMHg2NSwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2MywgMHg3NSwgMHg3MiwgMHg3MiwgMHg2NSwgMHg2RSwgMHg3NCwgMHg3MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwKKyAgICAweDY0LCAweDIwLCAweDdCLCAweDIwLCAweDdCLCAweDIwLCAweDdELCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDc0LCAweDcyLCAweDc1LCAweDY1LAorICAgIDB4MjAsIDB4NzMsIDB4NjUsIDB4NzQsIDB4NzMsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsCisgICAgMHg3MywgMHg2NSwgMHgyMCwgMHg3MywgMHg2NSwgMHg3NCwgMHg3MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3RCwKKyAgICAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDBELCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDdCLCAweDIwLCAweDdELCAweDIwLAorICAgIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsIDB4NzMsCisgICAgMHg2NSwgMHgwRCwgMHgyRiwgMHgyNCwgMHg2RCwgMHg2RCwgMHg2NiwgMHg2NiwgMHg1RiwgMHg2RiwgMHg3MiwgMHg2OSwgMHg2NywgMHg2NiwgMHg2OSwgMHg2RSwKKyAgICAweDY0LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDJGLCAweDY2LCAweDY5LCAweDZFLCAweDY0LCAweDY2LCAweDZGLCAweDZFLCAweDc0LCAweDIwLAorICAgIDB4NkMsIDB4NkYsIDB4NjEsIDB4NjQsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsCisgICAgMHg2MywgMHgwRCwgMHgyRiwgMHg2NiwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NCwgMHg3NSwKKyAgICAweDcwLCAweDIwLCAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDQ0LCAweDY5LCAweDcyLCAweDY1LCAweDYzLCAweDc0LCAweDZGLCAweDcyLCAweDc5LCAweDIwLAorICAgIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsIDB4MjAsIDB4NkIsIDB4NkUsIDB4NkYsIDB4NzcsIDB4NkUsIDB4MEQsIDB4N0IsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0NCwgMHg2OSwgMHg3MiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwgMHg3MiwgMHg3OSwgMHgyMCwgMHg2NSwKKyAgICAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDJGLCAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDU0LCAweDc5LCAweDcwLAorICAgIDB4NjUsIDB4MjAsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NkUsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MEQsIDB4N0IsIDB4MjAsIDB4NjQsCisgICAgMHg3NSwgMHg3MCwgMHgyMCwgMHg1MywgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0NCwgMHg2OSwgMHg3MiwKKyAgICAweDY1LCAweDYzLCAweDc0LCAweDZGLCAweDcyLCAweDc5LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDZCLCAweDZFLCAweDZGLCAweDc3LAorICAgIDB4NkUsIDB4MEQsIDB4N0IsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4NTMsIDB4NjgsIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsIDB4NDYsIDB4NkYsCisgICAgMHg2RSwgMHg3NCwgMHg0NCwgMHg2OSwgMHg3MiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwgMHg3MiwgMHg3OSwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwKKyAgICAweDIwLCAweDY3LCAweDY1LCAweDc0LCAweDIwLCAweDJGLCAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDU0LCAweDc5LCAweDcwLCAweDY1LCAweDIwLCAweDY3LAorICAgIDB4NjUsIDB4NzQsIDB4MjAsIDB4MzMsIDB4MjAsIDB4NkUsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MEQsIDB4N0IsIDB4MjAsIDB4NjYsIDB4NjEsIDB4NkMsIDB4NzMsCisgICAgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwKKyAgICAweDZDLCAweDczLCAweDY1LCAweDBELCAweDdCLCAweDIwLCAweDI0LCAweDZELCAweDZELCAweDY2LCAweDY2LCAweDVGLCAweDZGLCAweDcyLCAweDY5LCAweDY3LAorICAgIDB4NjYsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsCisgICAgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHg3MywgMHg3NCwgMHg3MiwgMHg2OSwKKyAgICAweDZFLCAweDY3LCAweDIwLCAweDYzLCAweDc2LCAweDczLCAweDIwLCAweDI4LCAweDVGLCAweDI5LCAweDIwLCAweDczLCAweDY1LCAweDYxLCAweDcyLCAweDYzLAorICAgIDB4NjgsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NjMsIDB4NzYsIDB4NkUsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsIDB4NjQsIDB4NzUsIDB4NzAsIDB4MjAsCisgICAgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0NCwgMHg2OSwgMHg3MiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwgMHg3MiwgMHg3OSwgMHgyMCwgMHg2NSwgMHg3OCwKKyAgICAweDYzLCAweDY4LCAweDIwLCAweDZCLCAweDZFLCAweDZGLCAweDc3LCAweDZFLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDUzLCAweDY4LAorICAgIDB4NjEsIDB4NzIsIDB4NjUsIDB4NjQsIDB4NDYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4NDQsIDB4NjksIDB4NzIsIDB4NjUsIDB4NjMsIDB4NzQsIDB4NkYsIDB4NzIsCisgICAgMHg3OSwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwgMHg2QiwgMHg2RSwgMHg2RiwgMHg3NywgMHg2RSwgMHgyMCwgMHg2RiwgMHg3MiwgMHgyMCwKKyAgICAweDdCLCAweDBELCAweDc0LCAweDcyLCAweDc1LCAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDdCLCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDZDLAorICAgIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsIDB4NjgsIDB4MjAsIDB4MzcsIDB4MjAsIDB4NjEsIDB4NjQsIDB4NjQsIDB4MjAsIDB4NzMsIDB4NzQsIDB4NzIsIDB4NjksCisgICAgMHg2RSwgMHg2NywgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHgzMCwgMHgyMCwgMHgyOCwgMHgyNSwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyNSwKKyAgICAweDI5LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDY5LCAweDZFLCAweDc0LCAweDY1LCAweDcyLCAweDc2LCAweDYxLCAweDZDLCAweDBELCAweDY0LCAweDc1LAorICAgIDB4NzAsIDB4MjAsIDB4MzIsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4MzYsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjMsIDB4NjgsCisgICAgMHgyMCwgMHg2NCwgMHg3NSwgMHg3MCwgMHgyMCwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NywgMHg3NCwgMHg2OCwgMHgyMCwgMHg3MywgMHg3NCwgMHg3MiwgMHg2OSwKKyAgICAweDZFLCAweDY3LCAweDIwLCAweDYzLCAweDc2LCAweDczLCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDY5LCAweDZFLCAweDc0LCAweDY1LCAweDcyLCAweDc2LAorICAgIDB4NjEsIDB4NkMsIDB4MEQsIDB4N0IsIDB4MjAsIDB4NzMsIDB4NzQsIDB4NjEsIDB4NzQsIDB4NzUsIDB4NzMsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NzMsIDB4NzQsCisgICAgMHg2RiwgMHg3MCwgMHg3MCwgMHg2NSwgMHg2NCwgMHgyMCwgMHg3QiwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg2NiwgMHg2MSwgMHg2QywgMHg3MywKKyAgICAweDY1LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDIwLCAweDdCLCAweDBELCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDcwLCAweDZGLCAweDcwLAorICAgIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzQsIDB4NzIsIDB4NzUsIDB4NjUsIDB4MjAsIDB4N0QsIDB4MjAsCisgICAgMHg3QiwgMHgyMCwgMHg2NiwgMHg2MSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwKKyAgICAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDdCLCAweDBELCAweDI0LCAweDZELCAweDZELCAweDY2LAorICAgIDB4NjYsIDB4NUYsIDB4NkYsIDB4NzIsIDB4NjksIDB4NjcsIDB4NjYsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MjAsIDB4NjIsCisgICAgMHg2NSwgMHg2NywgMHg2OSwgMHg2RSwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgwRCwgMHg1QiwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywgMHg2OCwgMHgyMCwKKyAgICAweDdCLCAweDIwLCAweDI4LCAweDVGLCAweDI5LCAweDIwLCAweDczLCAweDY1LCAweDYxLCAweDcyLCAweDYzLCAweDY4LCAweDIwLCAweDdCLCAweDIwLCAweDdCLAorICAgIDB4MjAsIDB4NjMsIDB4NzYsIDB4NzIsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NzMsIDB4NzQsIDB4NkYsIDB4NzAsIDB4NzAsIDB4NjUsIDB4NjQsIDB4MjAsIDB4N0IsCisgICAgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3MCwgMHg2RiwgMHg3MCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg3QiwgMHgwRCwgMHg2NSwgMHg3OCwgMHg2MywKKyAgICAweDY4LCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LAorICAgIDB4NkMsIDB4NzMsIDB4NjUsIDB4MEQsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjksIDB4NzQsCisgICAgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2QywgMHg2RiwgMHg2RiwgMHg3MCwKKyAgICAweDIwLCAweDY2LCAweDYxLCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDJGLCAweDQ2LCAweDZGLCAweDZFLCAweDc0LCAweDQ5LCAweDZFLCAweDY2LCAweDZGLAorICAgIDB4MjAsIDB4NzcsIDB4NjgsIDB4NjUsIDB4NzIsIDB4NjUsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NDYsIDB4NkYsIDB4NkUsCisgICAgMHg3NCwgMHg0OSwgMHg2RSwgMHg2NiwgMHg2RiwgMHgyMCwgMHgyRiwgMHg0MiwgMHg2QywgMHg2NSwgMHg2RSwgMHg2NCwgMHg0MSwgMHg3OCwgMHg2OSwgMHg3MywKKyAgICAweDU0LCAweDc5LCAweDcwLCAweDY1LCAweDczLCAweDIwLCAweDMyLCAweDIwLCAweDYzLCAweDZGLCAweDcwLCAweDc5LCAweDIwLCAweDZCLCAweDZFLCAweDZGLAorICAgIDB4NzcsIDB4NkUsIDB4MjAsIDB4N0IsIDB4MEQsIDB4NjcsIDB4NjUsIDB4NzQsIDB4MjAsIDB4NkMsIDB4NjUsIDB4NkUsIDB4NjcsIDB4NzQsIDB4NjgsIDB4MjAsCisgICAgMHg2MywgMHg2RiwgMHg3NSwgMHg2RSwgMHg3NCwgMHg3NCwgMHg2RiwgMHg2RCwgMHg2MSwgMHg3MiwgMHg2QiwgMHgyMCwgMHgzMiwgMHgyMCwgMHg3MywgMHg3NSwKKyAgICAweDYyLCAweDIwLCAweDY1LCAweDcxLCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDcwLCAweDZGLCAweDcwLCAweDBELCAweDdELCAweDIwLAorICAgIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0QsIDB4MjAsIDB4NjksIDB4NjYsIDB4NjUsIDB4NkMsCisgICAgMHg3MywgMHg2NSwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHgyMCwgMHg3QiwgMHgwRCwgMHg0RSwgMHg2RiwgMHg3MiwgMHg2RCwgMHg2MSwgMHg2QywKKyAgICAweDY5LCAweDdBLCAweDY1LCAweDQ0LCAweDY1LCAweDczLCAweDY5LCAweDY3LCAweDZFLCAweDU2LCAweDY1LCAweDYzLCAweDc0LCAweDZGLCAweDcyLCAweDBELAorICAgIDB4NDMsIDB4NkYsIDB4NkUsIDB4NzYsIDB4NjUsIDB4NzIsIDB4NzQsIDB4NDQsIDB4NjUsIDB4NzMsIDB4NjksIDB4NjcsIDB4NkUsIDB4NTYsIDB4NjUsIDB4NjMsCisgICAgMHg3NCwgMHg2RiwgMHg3MiwgMHgwRCwgMHg1RCwgMHgyMCwgMHg2MywgMHg3NSwgMHg3MiwgMHg3MiwgMHg2NSwgMHg2RSwgMHg3NCwgMHg2NCwgMHg2OSwgMHg2MywKKyAgICAweDc0LCAweDIwLCAweDY1LCAweDc4LCAweDYzLCAweDY4LCAweDIwLCAweDZELCAweDYxLCAweDZCLCAweDY1LCAweDYyLCAweDZDLCAweDY1LCAweDZFLCAweDY0LAorICAgIDB4NjUsIDB4NjQsIDB4NjYsIDB4NkYsIDB4NkUsIDB4NzQsIDB4MEQsIDB4MzIsIDB4MjAsIDB4NjMsIDB4NkYsIDB4NzAsIDB4NzksIDB4MjAsIDB4NjUsIDB4NzgsCisgICAgMHg2MywgMHg2OCwgMHgyMCwgMHgyRiwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0RSwgMHg2MSwgMHg2RCwgMHg2NSwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2MywKKyAgICAweDY4LCAweDIwLCAweDcwLCAweDc1LCAweDc0LCAweDBELCAweDY0LCAweDY1LCAweDY2LCAweDY5LCAweDZFLCAweDY1LCAweDY2LCAweDZGLCAweDZFLCAweDc0LAorICAgIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NjMsIDB4NkMsIDB4NjUsIDB4NjEsIDB4NzIsIDB4NzQsIDB4NkYsIDB4NkQsIDB4NjEsIDB4NzIsIDB4NkIsCisgICAgMHgyMCwgMHgyNCwgMHg2RCwgMHg2RCwgMHg2NiwgMHg2NiwgMHg1RiwgMHg2RiwgMHg3MiwgMHg2OSwgMHg2NywgMHg2NiwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NiwKKyAgICAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDIwLCAweDY1LCAweDZFLCAweDY0LAorICAgIDB4MEQsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsCisgICAgMHgyMCwgMHgyNCwgMHg2RCwgMHg2RCwgMHg2NiwgMHg2NiwgMHg1RiwgMHg2RiwgMHg3MiwgMHg2OSwgMHg2NywgMHg2NiwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NiwKKyAgICAweDZGLCAweDZFLCAweDc0LCAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDBELCAweDdELCAweDIwLCAweDdCLAorICAgIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4MjQsIDB4NkQsIDB4NkQsIDB4NjYsIDB4NjYsIDB4NUYsIDB4NkYsIDB4NzIsIDB4NjksIDB4NjcsIDB4NjYsCisgICAgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHgyMCwgMHg3RCwgMHgyMCwgMHg2OSwgMHg2NiwgMHg2NSwgMHg2QywgMHg3MywgMHg2NSwKKyAgICAweDIwLCAweDdELCAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDBELCAweDdELCAweDIwLCAweDYyLCAweDY5LCAweDZFLCAweDY0LAorICAgIDB4MjAsIDB4MzMsIDB4MjAsIDB4NjksIDB4NkUsIDB4NjQsIDB4NjUsIDB4NzgsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsIDB4MEQsIDB4MkYsIDB4NTMsCisgICAgMHg2OCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2NCwgMHg0NiwgMHg2RiwgMHg2RSwgMHg3NCwgMHg0NCwgMHg2OSwgMHg3MiwgMHg2NSwgMHg2MywgMHg3NCwgMHg2RiwKKyAgICAweDcyLCAweDc5LCAweDIwLCAweDY0LCAweDc1LCAweDcwLCAweDIwLCAweDc3LCAweDY4LCAweDY1LCAweDcyLCAweDY1LCAweDIwLCAweDdCLCAweDIwLCAweDcwLAorICAgIDB4NkYsIDB4NzAsIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4N0QsIDB4MjAsIDB4N0IsIDB4MjAsIDB4MzAsIDB4MjAsIDB4NjQsIDB4NjksIDB4NjMsCisgICAgMHg3NCwgMHgyMCwgMHgzMywgMHgyMCwgMHg2OSwgMHg2RSwgMHg2NCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg2NSwgMHg3OCwgMHg2NSwgMHg2MywgMHgyMCwgMHg3RCwKKyAgICAweDIwLCAweDY5LCAweDY2LCAweDY1LCAweDZDLCAweDczLCAweDY1LCAweDBELCAweDY1LCAweDZFLCAweDY0LCAweDIwLCAweDY1LCAweDc4LCAweDY1LCAweDYzLAorICAgIDB4MjAsIDB4NzAsIDB4NkYsIDB4NzAsIDB4MjAsIDB4NjUsIDB4NzgsIDB4NjUsIDB4NjMsIDB4MEQsIDB4NjMsIDB4NzUsIDB4NzIsIDB4NzIsIDB4NjUsIDB4NkUsCisgICAgMHg3NCwgMHg2NCwgMHg2OSwgMHg2MywgMHg3NCwgMHgyMCwgMHg2NSwgMHg2RSwgMHg2NCwgMHgwRCwgMHg2MywgMHg3NSwgMHg3MiwgMHg3MiwgMHg2NSwgMHg2RSwKKyAgICAweDc0LCAweDY2LCAweDY5LCAweDZDLCAweDY1LCAweDIwLCAweDY1LCAweDY1LCAweDc4LCAweDY1LCAweDYzLCAweDBELCAweDgwLCAweDAyLCAweDBCLCAweDhGLAorICAgIDB4MDEsIDB4MDAsIDB4RTgsIDB4REMsIDB4NjEsIDB4NzIsIDB4ODAsIDB4NzEsIDB4QUIsIDB4RDQsIDB4RDUsIDB4QkMsIDB4RDIsIDB4MzAsIDB4QzQsIDB4RTEsCisgICAgMHg4NiwgMHhEQywgMHhFMCwgMHg5NiwgMHg1NCwgMHgxQywgMHg5QywgMHgxRiwgMHgyRSwgMHg1OCwgMHg2OSwgMHg0MCwgMHg0RSwgMHgzMywgMHhGOSwgMHhDRSwKKyAgICAweEZGLCAweDdELCAweDJGLCAweEJGLCAweEVGLCAweDVGLCAweDI2LCAweEM3LCAweEUxLCAweDg0LCAweDg5LCAweDU0LCAweEM3LCAweDA3LCAweDU1LCAweDI0LAorICAgIDB4NEUsIDB4NzMsIDB4NDEsIDB4QjgsIDB4MjYsIDB4OTcsIDB4RTIsIDB4RTgsIDB4RUEsIDB4OUMsIDB4RTksIDB4MTMsIDB4MUQsIDB4MDAsIDB4NTUsIDB4NzgsCisgICAgMHhBQiwgMHgzRCwgMHhFMSwgMHg5RiwgMHhBOSwgMHhGMiwgMHhGQSwgMHhGRiwgMHgzQiwgMHhFQiwgMHg1MywgMHgxNywgMHg0QSwgMHg4RSwgMHgyRiwgMHgzMywKKyAgICAweEU5LCAweERCLCAweEUwLCAweDM4LCAweDYzLCAweDQyLCAweEY0LCAweDBFLCAweDVELCAweEYyLCAweDVCLCAweDdBLCAweDg4LCAweDIyLCAweEVFLCAweDJCLAorICAgIDB4NkMsIDB4REMsIDB4QUMsIDB4NTgsIDB4QTksIDB4OEYsIDB4OUIsIDB4MDQsIDB4NzEsIDB4NDQsIDB4RTMsIDB4RjYsIDB4RTcsIDB4NEEsIDB4QjYsIDB4MEMsCisgICAgMHgwMCwgMHhFNCwgMHg0MiwgMHhFOCwgMHgzMCwgMHhCMSwgMHgzMCwgMHgzMCwgMHg4QSwgMHgzRiwgMHgwRSwgMHhERiwgMHgyQywgMHhFNiwgMHg2MiwgMHgzNSwKKyAgICAweEY5LCAweDIxLCAweDZELCAweDQyLCAweDBGLCAweDIzLCAweEFDLCAweEVELCAweEVDLCAweDYwLCAweEE4LCAweDhBLCAweDczLCAweDc3LCAweDE0LCAweDYyLAorICAgIDB4RTEsIDB4QjIsIDB4MDQsIDB4MDQsIDB4MjksIDB4NUQsIDB4NDksIDB4QkEsIDB4OEEsIDB4OEIsIDB4Q0IsIDB4RjIsIDB4MDQsIDB4MkEsIDB4OEQsIDB4RUIsCisgICAgMHg5QSwgMHg2NSwgMHhCQSwgMHhGMSwgMHhDOCwgMHgyNCwgMHgyRiwgMHg3RSwgMHg5MCwgMHhEOSwgMHg0OSwgMHg2MywgMHgyMywgMHg3MywgMHhGOCwgMHg0MywKKyAgICAweDhGLCAweEMxLCAweEU3LCAweDM3LCAweDM3LCAweDBCLCAweDkxLCAweDE1LCAweDA4LCAweDlELCAweEE3LCAweDkwLCAweEE4LCAweDI4LCAweDUwLCAweEI2LAorICAgIDB4OTEsIDB4RTYsIDB4RTgsIDB4M0IsIDB4MzcsIDB4MjIsIDB4QzAsIDB4MDcsIDB4MTQsIDB4REMsIDB4QkMsIDB4RUEsIDB4QTEsIDB4REMsIDB4M0QsIDB4MjIsCisgICAgMHg5OCwgMHgzQiwgMHgzNSwgMHg2MSwgMHg2QSwgMHhENywgMHhGMSwgMHgwMywgMHgzNSwgMHgwQiwgMHg0QSwgMHg0MCwgMHhCMiwgMHhBQSwgMHhFNSwgMHgwRSwKKyAgICAweEYwLCAweDk0LCAweDZDLCAweDc3LCAweEM1LCAweDY3LCAweDczLCAweDBELCAweDBELCAweEU2LCAweDc2LCAweEE2LCAweDk1LCAweDEzLCAweDBBLCAweEJFLAorICAgIDB4QzgsIDB4QzcsIDB4QjgsIDB4QzQsIDB4NkIsIDB4RkEsIDB4QkMsIDB4REEsIDB4REQsIDB4ODgsIDB4MkMsIDB4NzQsIDB4NTgsIDB4NTgsIDB4OUIsIDB4MkIsCisgICAgMHhFQSwgMHg4NywgMHhFMSwgMHgyMywgMHgyQywgMHg2MCwgMHg1OCwgMHgwQywgMHg2MiwgMHgzNSwgMHhCNywgMHhENywgMHhFOCwgMHhDNiwgMHg2QSwgMHgyQSwKKyAgICAweDcyLCAweDkwLCAweDFGLCAweDNELCAweDBELCAweDc2LCAweDU5LCAweDMwLCAweDBFLCAweDdFLCAweDA0LCAweEZGLCAweERFLCAweDRBLCAweEE2LCAweEQ4LAorICAgIDB4ODgsIDB4MjUsIDB4NzUsIDB4NzYsIDB4MzAsIDB4Q0YsIDB4OEMsIDB4OUUsIDB4OEUsIDB4QTQsIDB4MTQsIDB4MTAsIDB4N0YsIDB4MkYsIDB4QzQsIDB4QTgsCisgICAgMHgwRiwgMHhDQSwgMHhBRiwgMHhDQiwgMHg1NCwgMHgzOSwgMHg4NywgMHgxQSwgMHg4MSwgMHg3MSwgMHhGQiwgMHhBNSwgMHgwOCwgMHgxNywgMHg0RiwgMHg1MywKKyAgICAweEI4LCAweEVDLCAweEUyLCAweEQzLCAweEJGLCAweEJELCAweEJBLCAweDkzLCAweDc1LCAweEZGLCAweDhGLCAweEI5LCAweDY2LCAweDEyLCAweDAyLCAweDIxLAorICAgIDB4ODcsIDB4NkQsIDB4QjAsIDB4REMsIDB4MkQsIDB4MzcsIDB4MjIsIDB4QjcsIDB4ODgsIDB4QjQsIDB4RDMsIDB4OEYsIDB4OEIsIDB4MjQsIDB4RUYsIDB4NzYsCisgICAgMHhGMywgMHhCNCwgMHg5MSwgMHg1OCwgMHg5NSwgMHhGRiwgMHg0MSwgMHhEOCwgMHhGQSwgMHhGQSwgMHhEOCwgMHhFOCwgMHg2OCwgMHhBOSwgMHhBOCwgMHg1QiwKKyAgICAweDU5LCAweDJDLCAweEYwLCAweDMwLCAweEExLCAweEQwLCAweDQ0LCAweDhBLCAweDgxLCAweEY1LCAweEU2LCAweDkyLCAweDFFLCAweEFFLCAweEU4LCAweDI2LAorICAgIDB4QTQsIDB4RDksIDB4QjcsIDB4MDUsIDB4NUEsIDB4OUMsIDB4QTEsIDB4QzcsIDB4OTgsIDB4QUEsIDB4RkEsIDB4MjUsIDB4OTEsIDB4MTEsIDB4NEQsIDB4NjEsCisgICAgMHhDQiwgMHg1MCwgMHgyRSwgMHhGQywgMHhGQywgMHg0NCwgMHg2MywgMHgwMiwgMHgwOCwgMHhDQiwgMHhBOSwgMHgxNywgMHgxMCwgMHgzQiwgMHhDMywgMHhBMSwKKyAgICAweDJBLCAweDYwLCAweEIxLCAweDc5LCAweDg0LCAweDk1LCAweDgzLCAweEQwLCAweEIxLCAweEYxLCAweERDLCAweDlGLCAweEJFLCAweEIyLCAweEJDLCAweDkwLAorICAgIDB4RDEsIDB4RTQsIDB4RjIsIDB4NDIsIDB4RDUsIDB4MDgsIDB4MEIsIDB4RDQsIDB4QjEsIDB4NEMsIDB4NzMsIDB4OEQsIDB4MEMsIDB4RDEsIDB4NjksIDB4QzgsCisgICAgMHgxRSwgMHhCNiwgMHg4NCwgMHg1RiwgMHhEOSwgMHgyRCwgMHhBQiwgMHgyQSwgMHg2QiwgMHhCQiwgMHg0OCwgMHgzRiwgMHhCNiwgMHhGQiwgMHgwOCwgMHgyRiwKKyAgICAweDU3LCAweDExLCAweEFCLCAweDQyLCAweDU0LCAweEM5LCAweEQ3LCAweEIxLCAweEY4LCAweDI4LCAweEJBLCAweENELCAweDY4LCAweEY5LCAweDBELCAweEUwLAorICAgIDB4RDEsIDB4MjYsIDB4Q0UsIDB4QTAsIDB4MjQsIDB4NTYsIDB4NjMsIDB4QjcsIDB4QTEsIDB4QzYsIDB4ODUsIDB4RDgsIDB4NTUsIDB4MTgsIDB4NjAsIDB4MjUsCisgICAgMHg1NSwgMHgwQiwgMHhDNiwgMHg5QiwgMHhDNCwgMHgyOCwgMHgwQywgMHgzNywgMHhFMCwgMHg5QSwgMHg3NCwgMHg1MiwgMHgwRCwgMHg3NiwgMHg1RiwgMHg0MSwKKyAgICAweERDLCAweEVBLCAweEQ4LCAweDM1LCAweDFBLCAweEI3LCAweDQ5LCAweEMzLCAweDVDLCAweDZELCAweEQwLCAweDgzLCAweDdBLCAweDRGLCAweEMxLCAweENCLAorICAgIDB4MTIsIDB4QUIsIDB4MjcsIDB4NEIsIDB4Q0YsIDB4N0YsIDB4RjgsIDB4MDEsIDB4QzEsIDB4OEQsIDB4MTMsIDB4MzQsIDB4NjIsIDB4RkYsIDB4RTAsIDB4NUMsCisgICAgMHg1NiwgMHhDRSwgMHg0RSwgMHgzRCwgMHgzNCwgMHgzNywgMHhBQywgMHhGQiwgMHhCMCwgMHgzRSwgMHgwNSwgMHhBNiwgMHgyQiwgMHhGNiwgMHgyQywgMHhBMiwKKyAgICAweDQ2LCAweDY1LCAweDZBLCAweEFGLCAweDNFLCAweEQ2LCAweDVBLCAweDkyLCAweDIyLCAweEZGLCAweDUxLCAweEYzLCAweDE5LCAweDI3LCAweDM5LCAweEIzLAorICAgIDB4MzIsIDB4N0YsIDB4OTQsIDB4N0EsIDB4NkIsIDB4NTYsIDB4RjgsIDB4QjgsIDB4QTUsIDB4NzAsIDB4QjEsIDB4M0YsIDB4MTUsIDB4MTUsIDB4RjYsIDB4NjEsCisgICAgMHg0QiwgMHg4OCwgMHhCMCwgMHgxMiwgMHhFMCwgMHg0RiwgMHg2RiwgMHhFOSwgMHhDQiwgMHgyQywgMHg3MiwgMHgwMSwgMHhCMSwgMHhEQiwgMHg4NSwgMHg3OCwKKyAgICAweDNDLCAweDBGLCAweEQyLCAweDNCLCAweDU0LCAweDhFLCAweDI5LCAweDIxLCAweDY2LCAweEJBLCAweDgwLCAweEM2LCAweDA1LCAweDVFLCAweEQxLCAweEQ5LAorICAgIDB4OTMsIDB4Q0QsIDB4NjMsIDB4QTAsIDB4OTUsIDB4QkIsIDB4MjYsIDB4QTMsIDB4MzYsIDB4MTIsIDB4MkQsIDB4MUMsIDB4RTQsIDB4RUEsIDB4OTgsIDB4RTYsCisgICAgMHhEQywgMHg5RiwgMHhENiwgMHg2MSwgMHhGOCwgMHg3MSwgMHgxNCwgMHhGRSwgMHhGOCwgMHgxMCwgMHhCOSwgMHgyNCwgMHgzNiwgMHhGOSwgMHhCMywgMHg2QywKKyAgICAweDBGLCAweEMzLCAweDI4LCAweDQ2LCAweDQzLCAweDE5LCAweEFGLCAweEE3LCAweEIxLCAweEVDLCAweDRBLCAweDg4LCAweDdDLCAweEU3LCAweDg1LCAweDgxLAorICAgIDB4MjMsIDB4NjksIDB4RjMsIDB4MjEsIDB4OTAsIDB4RUIsIDB4M0QsIDB4QjEsIDB4NzMsIDB4NEEsIDB4QjIsIDB4RjIsIDB4NTUsIDB4MzAsIDB4RjgsIDB4MDIsCisgICAgMHg3OSwgMHg3NiwgMHgxRCwgMHhGQiwgMHgwQSwgMHg0MCwgMHgwNiwgMHg2MSwgMHhDQywgMHhDQiwgMHg0NywgMHg5NCwgMHgxQSwgMHg3NCwgMHg3MCwgMHg4RiwKKyAgICAweDFCLCAweDkzLCAweDE2LCAweDI0LCAweEFBLCAweDMyLCAweEQ0LCAweEIwLCAweEVFLCAweENBLCAweEVFLCAweDBELCAweDI3LCAweDcxLCAweDBELCAweEU4LAorICAgIDB4Q0MsIDB4RDcsIDB4MkEsIDB4MjgsIDB4QTUsIDB4QzQsIDB4RDgsIDB4REQsIDB4MEIsIDB4MTYsIDB4NzQsIDB4RjcsIDB4RTMsIDB4NjEsIDB4MDYsIDB4MzcsCisgICAgMHgyNCwgMHgxQywgMHgwMCwgMHgxNCwgMHgwQywgMHgzMiwgMHg3RiwgMHg4OCwgMHg3NSwgMHhGOSwgMHg5QiwgMHhGQSwgMHgzQiwgMHhDQSwgMHhGNiwgMHg1MSwKKyAgICAweEQyLCAweEFCLCAweEQ1LCAweDNGLCAweDIxLCAweENELCAweDUxLCAweDNELCAweDNELCAweEI0LCAweDgxLCAweEY5LCAweDMzLCAweDc5LCAweEU5LCAweDYyLAorICAgIDB4OUYsIDB4OTMsIDB4NUYsIDB4QTgsIDB4NzcsIDB4MjYsIDB4NzUsIDB4MDEsIDB4NDAsIDB4RDMsIDB4RTMsIDB4QkQsIDB4NjgsIDB4OEQsIDB4MUIsIDB4Q0MsCisgICAgMHhFNywgMHg3OSwgMHhCMiwgMHgzRSwgMHg2MSwgMHhCNiwgMHgwMCwgMHhGMCwgMHgwQSwgMHg1OCwgMHhGMiwgMHhDMSwgMHg0QywgMHg1QSwgMHhBNCwgMHg4NiwKKyAgICAweEQ0LCAweENBLCAweENCLCAweDE1LCAweENDLCAweEQxLCAweDE2LCAweDc0LCAweDcwLCAweEYzLCAweENCLCAweEJBLCAweDBFLCAweDhBLCAweERCLCAweEVCLAorICAgIDB4NEYsIDB4M0QsIDB4MEMsIDB4M0MsIDB4RkUsIDB4NDAsIDB4N0QsIDB4NDYsIDB4QzAsIDB4MEUsIDB4MEUsIDB4MTgsIDB4NjQsIDB4NjksIDB4QUIsIDB4RUYsCisgICAgMHgwMCwgMHg2OCwgMHg4MywgMHg5NSwgMHhGRiwgMHgzMiwgMHhGMywgMHgxMywgMHg3OCwgMHg4QywgMHgxRSwgMHhGOSwgMHhBOCwgMHhFOCwgMHgyRCwgMHg1RiwKKyAgICAweDA0LCAweEI4LCAweDE1LCAweDIyLCAweDc2LCAweERELCAweDQ2LCAweENGLCAweDY5LCAweEE0LCAweENFLCAweDVCLCAweDIwLCAweDc3LCAweEEwLCAweDIyLAorICAgIDB4MjQsIDB4RTUsIDB4REUsIDB4QjgsIDB4RjMsIDB4NDQsIDB4NUIsIDB4QzksIDB4RUYsIDB4NDcsIDB4RkQsIDB4M0EsIDB4MDIsIDB4QUYsIDB4MzEsIDB4NkMsCisgICAgMHgwMiwgMHg0QSwgMHgwMiwgMHgzQywgMHg2NSwgMHg1QSwgMHgwQiwgMHg2MywgMHhCMCwgMHgxMSwgMHhCQiwgMHgwNywgMHgzQywgMHhGQywgMHhGQSwgMHhBRCwKKyAgICAweDkzLCAweDQ2LCAweDExLCAweDZELCAweDY4LCAweEZGLCAweEI3LCAweEM3LCAweDU4LCAweDJGLCAweDdDLCAweDIzLCAweDYyLCAweEQ3LCAweEQ5LCAweEY5LAorICAgIDB4N0EsIDB4OEEsIDB4RDMsIDB4MTEsIDB4NTgsIDB4QUMsIDB4NDMsIDB4MEQsIDB4QTAsIDB4NzcsIDB4OEQsIDB4ODgsIDB4RDUsIDB4MzQsIDB4RDEsIDB4QjksCisgICAgMHgyRSwgMHg0QSwgMHg4QywgMHhEQywgMHhBMCwgMHg3MSwgMHhCOSwgMHhCMiwgMHgxOCwgMHhDNSwgMHg3NCwgMHgxRSwgMHg0OCwgMHg5RSwgMHg3MCwgMHgwQSwKKyAgICAweDdFLCAweDlCLCAweDcxLCAweEZBLCAweEM3LCAweDRELCAweDNDLCAweDZFLCAweDE5LCAweDg4LCAweEYwLCAweEUyLCAweEE1LCAweDk5LCAweDNELCAweDg1LAorICAgIDB4QkIsIDB4RTEsIDB4REEsIDB4ODIsIDB4N0IsIDB4QTksIDB4QkEsIDB4NTksIDB4MEUsIDB4MDMsIDB4MjYsIDB4M0IsIDB4ODMsIDB4QzgsIDB4ODEsIDB4MzYsCisgICAgMHg3MCwgMHhBNCwgMHgxMSwgMHg5NywgMHg5NywgMHhCNiwgMHg0NywgMHg3RCwgMHg4MSwgMHgwMiwgMHg0NSwgMHgxQywgMHg3NiwgMHgzMywgMHg5OCwgMHg4NCwKKyAgICAweEZFLCAweEZFLCAweDY1LCAweERFLCAweDM3LCAweDMxLCAweEU3LCAweEQ5LCAweDZGLCAweERDLCAweEFDLCAweEMxLCAweDFDLCAweDFGLCAweEE0LCAweDA4LAorICAgIDB4OTgsIDB4NDcsIDB4RDMsIDB4NTMsIDB4RjksIDB4MjQsIDB4NkUsIDB4MjYsIDB4OTksIDB4N0MsIDB4RjIsIDB4Q0YsIDB4MkEsIDB4QzgsIDB4Q0MsIDB4QUQsCisgICAgMHgxNywgMHgwOSwgMHhFMywgMHgxQiwgMHg2NiwgMHhBQywgMHgyNCwgMHg2RiwgMHhFMCwgMHg4OCwgMHgxNCwgMHhDNCwgMHg4QSwgMHhGMiwgMHhGQSwgMHg5MywKKyAgICAweEU5LCAweDQ4LCAweEI1LCAweEE0LCAweDUyLCAweEY5LCAweERFLCAweDU0LCAweEY1LCAweEY0LCAweDIwLCAweDk1LCAweDQ1LCAweENFLCAweDM3LCAweDJFLAorICAgIDB4OUUsIDB4MEEsIDB4QzcsIDB4ODksIDB4RjIsIDB4MDAsIDB4NjQsIDB4NkQsIDB4QkMsIDB4QUYsIDB4OUYsIDB4NTIsIDB4QkMsIDB4QTAsIDB4MTcsIDB4RTMsCisgICAgMHgyMCwgMHg0MiwgMHhBQiwgMHhCRiwgMHhGQiwgMHgyQSwgMHg3RiwgMHg1MSwgMHhBQywgMHhDQywgMHg0MCwgMHhFRiwgMHg2RCwgMHhGMiwgMHhCQywgMHgzRCwKKyAgICAweEUyLCAweERDLCAweDk5LCAweDBDLCAweDJELCAweEJDLCAweDQ3LCAweDFELCAweDk4LCAweDAyLCAweDBCLCAweEIyLCAweEUyLCAweEEyLCAweDAzLCAweDQ3LAorICAgIDB4M0MsIDB4MTcsIDB4NjksIDB4RDYsIDB4MDksIDB4QTQsIDB4OEIsIDB4OUYsIDB4NjMsIDB4NDAsIDB4RDgsIDB4NUYsIDB4NjcsIDB4QjMsIDB4OTUsIDB4MjgsCisgICAgMHgxNiwgMHhBRiwgMHg2NywgMHg5NywgMHgzQSwgMHg2NywgMHgyOSwgMHg2NywgMHgzQywgMHhGMSwgMHg5RCwgMHgyNCwgMHgzNCwgMHhFMywgMHg0NywgMHgxNCwKKyAgICAweEM2LCAweDk0LCAweEEwLCAweDFGLCAweEI3LCAweDY0LCAweDlELCAweDdFLCAweDM4LCAweEI4LCAweDcwLCAweEQyLCAweDRBLCAweDc0LCAweDU0LCAweEE0LAorICAgIDB4NjQsIDB4MzQsIDB4MjcsIDB4M0IsIDB4QjcsIDB4OTgsIDB4MTgsIDB4MDcsIDB4MUYsIDB4NEUsIDB4MDAsIDB4ODYsIDB4OTEsIDB4NkEsIDB4NzEsIDB4MDksCisgICAgMHg3MiwgMHg2QiwgMHg0MiwgMHg0RiwgMHgxMSwgMHg2MiwgMHhEQywgMHgwQiwgMHgxNSwgMHgwQywgMHg3NCwgMHgwQiwgMHg2RCwgMHhGRiwgMHhDMiwgMHgyOCwKKyAgICAweDk4LCAweDk3LCAweDMzLCAweDY1LCAweEQ2LCAweEJCLCAweDgzLCAweDRFLCAweDRCLCAweEUyLCAweENGLCAweDdFLCAweDk4LCAweDRCLCAweEFELCAweDU1LAorICAgIDB4RjIsIDB4MUEsIDB4RUYsIDB4MTUsIDB4MDUsIDB4QTYsIDB4QjYsIDB4RjQsIDB4REQsIDB4OTcsIDB4QUEsIDB4ODEsIDB4NkQsIDB4ODQsIDB4ODYsIDB4MTcsCisgICAgMHhBMCwgMHhBNSwgMHgxRCwgMHhDMywgMHg4QywgMHhFQSwgMHgyOCwgMHhDRSwgMHg2OSwgMHhDQywgMHg1NiwgMHgxNSwgMHhGQSwgMHhEMywgMHhFQywgMHgxMiwKKyAgICAweENELCAweDhBLCAweDk4LCAweEQ1LCAweDEzLCAweEU5LCAweDcyLCAweEJGLCAweDAxLCAweENFLCAweEJBLCAweEY3LCAweENBLCAweDg1LCAweDhDLCAweDY0LAorICAgIDB4NTUsIDB4NjAsIDB4QkEsIDB4NjEsIDB4RjAsIDB4REUsIDB4OTcsIDB4RDksIDB4MTUsIDB4Q0YsIDB4RTIsIDB4OUMsIDB4QTMsIDB4OUEsIDB4NUYsIDB4OUYsCisgICAgMHhGRSwgMHhEMywgMHhDNywgMHg1QSwgMHhGNCwgMHg0NCwgMHg2OSwgMHg3RiwgMHg2MywgMHg0MSwgMHg5NywgMHgzMywgMHhENywgMHg0MSwgMHhERiwgMHg5QiwKKyAgICAweDNGLCAweDAzLCAweDIzLCAweDRBLCAweDg0LCAweDdCLCAweDRFLCAweEI5LCAweDk0LCAweDNELCAweEJELCAweDMyLCAweDU2LCAweDFDLCAweDQ3LCAweDdBLAorICAgIDB4RjAsIDB4RUQsIDB4OUQsIDB4OTksIDB4MjQsIDB4MDksIDB4QzYsIDB4NTAsIDB4QzAsIDB4OTgsIDB4RUEsIDB4RkUsIDB4NzAsIDB4OEIsIDB4REYsIDB4QjgsCisgICAgMHg1RSwgMHg3RCwgMHg2NCwgMHgyQywgMHhEQywgMHhCNSwgMHg1RiwgMHhDQSwgMHhGNiwgMHg3QiwgMHgwMiwgMHg4OCwgMHhBMiwgMHg4MiwgMHhEMiwgMHgxNCwKKyAgICAweDBFLCAweEE0LCAweDE0LCAweDNCLCAweDRBLCAweDk1LCAweDE0LCAweDVFLCAweEQ5LCAweEZCLCAweDQ3LCAweDVGLCAweDM2LCAweDlGLCAweDg1LCAweEMyLAorICAgIDB4OTQsIDB4MTUsIDB4QjksIDB4QzAsIDB4MDEsIDB4MDgsIDB4ODYsIDB4NzUsIDB4MUUsIDB4ODgsIDB4MkQsIDB4NUEsIDB4MzksIDB4QzEsIDB4REUsIDB4QzEsCisgICAgMHg4QiwgMHgzMiwgMHhDNCwgMHhFNywgMHgxOSwgMHhBNiwgMHhGRSwgMHhGQywgMHg2MiwgMHhFOSwgMHhDRiwgMHgzRSwgMHgxMSwgMHhEMSwgMHg1RSwgMHgyNCwKKyAgICAweDY2LCAweDIzLCAweDVCLCAweDhGLCAweDQyLCAweDgzLCAweEQ2LCAweDNFLCAweDJBLCAweEU1LCAweEYyLCAweEUzLCAweDZBLCAweDY5LCAweDQwLCAweEJFLAorICAgIDB4RDQsIDB4RkEsIDB4ODMsIDB4QzYsIDB4RTgsIDB4MkIsIDB4MzUsIDB4RkUsIDB4MUEsIDB4RDEsIDB4RjMsIDB4MzcsIDB4OUEsIDB4ODgsIDB4QTAsIDB4QzksCisgICAgMHg1NSwgMHgxMywgMHg0QiwgMHhDMCwgMHhFQywgMHg0NSwgMHhENywgMHg0OCwgMHgxNiwgMHgyOCwgMHg5OSwgMHhFNCwgMHgzQiwgMHg3NywgMHhGMiwgMHhCOSwKKyAgICAweDI3LCAweDM0LCAweDRGLCAweEFCLCAweDE4LCAweDg3LCAweDYzLCAweEU1LCAweEY1LCAweDY4LCAweDU3LCAweDlELCAweDVDLCAweEFELCAweDUzLCAweEQ3LAorICAgIDB4MjUsIDB4QjMsIDB4OTksIDB4NUQsIDB4NzAsIDB4RTAsIDB4RjYsIDB4NzIsIDB4QkUsIDB4RDksIDB4NUUsIDB4ODIsIDB4RkIsIDB4RDAsIDB4NzIsIDB4RjUsCisgICAgMHg2RSwgMHg4NiwgMHhFRiwgMHg3QywgMHhEOCwgMHgyMywgMHgxRSwgMHg4NSwgMHgyMCwgMHg3QywgMHhFQSwgMHgyQywgMHg4RSwgMHgwOSwgMHgyQSwgMHg5QiwKKyAgICAweDczLCAweDYyLCAweEQzLCAweDk2LCAweEFBLCAweEUwLCAweDQ1LCAweDFFLCAweDYzLCAweDU3LCAweEI3LCAweDZBLCAweEI3LCAweEI4LCAweEZFLCAweDAxLAorICAgIDB4ODUsIDB4OTMsIDB4RUIsIDB4N0IsIDB4MjUsIDB4NDEsIDB4RTUsIDB4N0QsIDB4RTUsIDB4MjAsIDB4NTAsIDB4MTUsIDB4OTIsIDB4MDYsIDB4RkUsIDB4RkEsCisgICAgMHgzRiwgMHg5MywgMHgxNiwgMHhDNSwgMHg2RiwgMHg0QSwgMHhERiwgMHhCMywgMHhCOSwgMHg0MywgMHgxNywgMHgzMiwgMHhBRiwgMHg4MSwgMHgzQiwgMHg2MSwKKyAgICAweDE5LCAweERFLCAweENELCAweEJCLCAweDdFLCAweDI0LCAweDc0LCAweERELCAweEVCLCAweEFFLCAweEVBLCAweDY0LCAweDM0LCAweDU5LCAweDMwLCAweDMxLAorICAgIDB4ODQsIDB4MTUsIDB4NzcsIDB4MzAsIDB4MEEsIDB4QjYsIDB4NUQsIDB4RDksIDB4M0EsIDB4NDcsIDB4RDIsIDB4OUQsIDB4QTksIDB4NTcsIDB4NkYsIDB4MUQsCisgICAgMHgzRSwgMHg0NywgMHg4MiwgMHhBRCwgMHg4MCwgMHg0QywgMHgxMSwgMHg2NCwgMHg0QSwgMHhBNSwgMHgyOCwgMHhBRSwgMHhEMywgMHg1MiwgMHgxMywgMHgyMywKKyAgICAweEVGLCAweDc0LCAweDlELCAweDA1LCAweEJELCAweENBLCAweDlELCAweEFGLCAweDY5LCAweDU1LCAweEU4LCAweDk2LCAweERCLCAweDM1LCAweDUyLCAweDc1LAorICAgIDB4MEQsIDB4N0EsIDB4MTksIDB4M0UsIDB4RTksIDB4MTEsIDB4RjEsIDB4ODQsIDB4NUUsIDB4QjUsIDB4MUYsIDB4RDgsIDB4RjQsIDB4QTMsIDB4MjUsIDB4MkEsCisgICAgMHg3RiwgMHhBRiwgMHg0NCwgMHhEMCwgMHhBQywgMHg3RiwgMHg5QywgMHg4NywgMHhCMSwgMHgxMSwgMHg0OCwgMHg2OSwgMHg5RiwgMHgzQywgMHg2MCwgMHhDNCwKKyAgICAweDM4LCAweDQwLCAweEJGLCAweDQzLCAweEEyLCAweEU0LCAweDM3LCAweEMzLCAweDdFLCAweEIxLCAweDUxLCAweDgyLCAweDkzLCAweEZFLCAweDdGLCAweEQxLAorICAgIDB4MzAsIDB4RDgsIDB4QkYsIDB4RDgsIDB4NkQsIDB4N0EsIDB4RTgsIDB4MzgsIDB4RkEsIDB4RTUsIDB4NEIsIDB4NDIsIDB4MkMsIDB4MjQsIDB4RjMsIDB4QTEsCisgICAgMHg3RCwgMHhFMywgMHhFNywgMHg5QSwgMHg2QiwgMHg1MywgMHgzQywgMHhBQywgMHgwMCwgMHg2QSwgMHhCNSwgMHhGOSwgMHgxMCwgMHhENSwgMHgzRCwgMHgxMSwKKyAgICAweEU0LCAweDFELCAweDUxLCAweEEyLCAweDQwLCAweEM0LCAweDQ4LCAweERDLCAweDFDLCAweDMwLCAweEE4LCAweDFGLCAweDg5LCAweEUyLCAweDUzLCAweDI1LAorICAgIDB4RjIsIDB4REEsIDB4RTMsIDB4QTQsIDB4RDYsIDB4QkIsIDB4NzIsIDB4NUEsIDB4MEYsIDB4M0YsIDB4OTgsIDB4RTQsIDB4MjcsIDB4RjIsIDB4QzYsIDB4ODIsCisgICAgMHg1QiwgMHg2NCwgMHg4QSwgMHgzRCwgMHgyOSwgMHg5QSwgMHhCRiwgMHg2QSwgMHgwRCwgMHg2MSwgMHhBMSwgMHhDRiwgMHg0RiwgMHgwMCwgMHhFMCwgMHhFMiwKKyAgICAweDlBLCAweDQ1LCAweEY3LCAweERCLCAweDM4LCAweDBELCAweDM4LCAweDdDLCAweDk4LCAweDIwLCAweEI2LCAweEE4LCAweDAwLCAweEZFLCAweEI1LCAweENELAorICAgIDB4QkIsIDB4QzIsIDB4OEEsIDB4REYsIDB4QTMsIDB4MjMsIDB4ODcsIDB4NzcsIDB4N0YsIDB4MzMsIDB4MzYsIDB4QjIsIDB4QzMsIDB4OTAsIDB4QUEsIDB4NDksCisgICAgMHg5MiwgMHg3MSwgMHhFQiwgMHhGRSwgMHhDRCwgMHgzMiwgMHhEMSwgMHhBQiwgMHgyMiwgMHhCMywgMHhDNiwgMHg0QiwgMHgxMiwgMHg3RSwgMHg1MywgMHhBQSwKKyAgICAweENGLCAweEM3LCAweDAxLCAweERBLCAweDM4LCAweDJBLCAweDBBLCAweDU0LCAweEZDLCAweDg4LCAweDQxLCAweDE1LCAweDA0LCAweDI3LCAweDAyLCAweDhDLAorICAgIDB4MEYsIDB4NkQsIDB4QzIsIDB4Q0YsIDB4REEsIDB4RjgsIDB4M0MsIDB4RjcsIDB4NTgsIDB4RTIsIDB4NzAsIDB4MUEsIDB4N0UsIDB4QkUsIDB4MzksIDB4RUUsCisgICAgMHhDMiwgMHg3QSwgMHhENSwgMHg1MiwgMHg0QiwgMHg2MiwgMHg4NCwgMHhERSwgMHg5MSwgMHg0NiwgMHhEQywgMHgzQSwgMHg2NywgMHg0QSwgMHhFNiwgMHg0RCwKKyAgICAweDgyLCAweEZBLCAweDYwLCAweEUyLCAweDM0LCAweDI2LCAweDFBLCAweEQ4LCAweDBELCAweEExLCAweDU3LCAweDYyLCAweDA0LCAweDM4LCAweDUyLCAweDRELAorICAgIDB4QTYsIDB4OEIsIDB4QzIsIDB4MEUsIDB4Q0UsIDB4MjYsIDB4MjgsIDB4MzEsIDB4NTMsIDB4QzYsIDB4NjMsIDB4NUEsIDB4NzUsIDB4NDUsIDB4NjUsIDB4REEsCisgICAgMHg0QiwgMHg4RCwgMHg3NywgMHhCMCwgMHgwNiwgMHgyOCwgMHgzNiwgMHg0MywgMHgxRCwgMHhBMywgMHhDNywgMHgzMywgMHgyOCwgMHg4RCwgMHg3MCwgMHhCNSwKKyAgICAweDBELCAweDI0LCAweDI1LCAweDUwLCAweEEyLCAweEVCLCAweDUwLCAweDYxLCAweDk4LCAweDNELCAweDhDLCAweENELCAweERDLCAweDE3LCAweDNGLCAweEU0LAorICAgIDB4REQsIDB4NDYsIDB4M0EsIDB4RDAsIDB4QTYsIDB4NzgsIDB4RDcsIDB4ODUsIDB4NjMsIDB4QzgsIDB4M0EsIDB4NTQsIDB4REIsIDB4RDUsIDB4QjksIDB4N0MsCisgICAgMHg0QiwgMHhGRCwgMHgxRSwgMHhBMiwgMHhCRCwgMHg5NywgMHgyMiwgMHgwOSwgMHgwNiwgMHg4RiwgMHhBNSwgMHg0OSwgMHgwNiwgMHgyOSwgMHg3MSwgMHgxMywKKyAgICAweDY5LCAweENFLCAweEVDLCAweDc1LCAweEU5LCAweDkzLCAweDU4LCAweDgwLCAweDA1LCAweEZGLCAweEJGLCAweDFELCAweDQ4LCAweENFLCAweDM0LCAweERDLAorICAgIDB4MDMsIDB4NDAsIDB4QjksIDB4NkYsIDB4NDAsIDB4OTQsIDB4MkMsIDB4MzAsIDB4RDAsIDB4NkYsIDB4MzUsIDB4QzAsIDB4NDYsIDB4RTUsIDB4RDEsIDB4RkYsCisgICAgMHg0NCwgMHg4MywgMHgyQywgMHg2RCwgMHg2QywgMHhCMiwgMHgwNCwgMHhEOCwgMHhCMCwgMHgxRSwgMHgyQywgMHhGOCwgMHg3MSwgMHhBNCwgMHhBMSwgMHg2MCwKKyAgICAweDIzLCAweDhGLCAweDE5LCAweEY3LCAweDU4LCAweDI5LCAweDQyLCAweDlGLCAweDI0LCAweDE4LCAweDJCLCAweEQzLCAweEYwLCAweDMxLCAweDQ1LCAweEIxLAorICAgIDB4QTMsIDB4NUUsIDB4QTEsIDB4QzksIDB4NTIsIDB4RUUsIDB4RTYsIDB4RjUsIDB4MEEsIDB4QkIsIDB4RUIsIDB4NkIsIDB4MDksIDB4RTksIDB4QTcsIDB4ODQsCisgICAgMHhCNiwgMHgxQywgMHhFMywgMHhBMywgMHgwQiwgMHg3RSwgMHg4QSwgMHgwQiwgMHhEMCwgMHg0QywgMHhFOSwgMHg1MCwgMHg0NSwgMHgzNCwgMHgyMSwgMHgxQiwKKyAgICAweDU1LCAweDBFLCAweDEyLCAweDFBLCAweDc0LCAweERFLCAweDI4LCAweEVCLCAweDIwLCAweDY2LCAweDEzLCAweEJCLCAweEVBLCAweEM3LCAweERBLCAweENGLAorICAgIDB4QjQsIDB4MTYsIDB4NTcsIDB4NjUsIDB4MEEsIDB4QUQsIDB4OTgsIDB4RjcsIDB4MDMsIDB4MUUsIDB4RjUsIDB4RDksIDB4RkMsIDB4M0UsIDB4NTksIDB4RUMsCisgICAgMHg3QSwgMHgyQiwgMHg0NiwgMHhDMCwgMHgxMywgMHgxOSwgMHhEOCwgMHhGRCwgMHhGNywgMHgwRCwgMHg2MSwgMHhGQywgMHg0MSwgMHgyQSwgMHg1QywgMHhDNywKKyAgICAweDg0LCAweDk1LCAweEVGLCAweDMxLCAweDlGLCAweDFGLCAweDg0LCAweDUzLCAweDdFLCAweEE4LCAweDM3LCAweDA0LCAweDFELCAweDFELCAweDA4LCAweEQ1LAorICAgIDB4RTUsIDB4NEIsIDB4MEMsIDB4MDYsIDB4Q0MsIDB4MTQsIDB4MTksIDB4QTksIDB4NEQsIDB4NzUsIDB4MDYsIDB4NDksIDB4NDgsIDB4QzksIDB4REIsIDB4M0YsCisgICAgMHgxQiwgMHhCMSwgMHgwRCwgMHgxOSwgMHg3MSwgMHhFQiwgMHgxMywgMHhFMSwgMHgyNiwgMHhBRiwgMHhDMCwgMHhEOSwgMHg4NywgMHhDMywgMHhEOCwgMHg2OCwKKyAgICAweDhBLCAweDNDLCAweDk2LCAweDZCLCAweERFLCAweDk0LCAweDNELCAweDYwLCAweDBCLCAweDI0LCAweDhGLCAweDBDLCAweEUxLCAweEEzLCAweEE3LCAweDA1LAorICAgIDB4NDAsIDB4QjcsIDB4MjQsIDB4MzUsIDB4ODIsIDB4NDUsIDB4QTAsIDB4RTAsIDB4MjYsIDB4RDIsIDB4RkEsIDB4QUIsIDB4NTksIDB4MzMsIDB4NEUsIDB4OTUsCisgICAgMHhEMiwgMHhGQSwgMHg3MiwgMHg4MiwgMHgyQywgMHgwMCwgMHgyRiwgMHhFMCwgMHhFNSwgMHg0OSwgMHgxNiwgMHgzMCwgMHgwQywgMHgzQSwgMHhDMSwgMHhEQywKKyAgICAweDExLCAweDcwLCAweDU5LCAweEY5LCAweDk4LCAweDgxLCAweEJCLCAweDlGLCAweDYwLCAweEVCLCAweEIwLCAweEFELCAweDVCLCAweDY1LCAweDdBLCAweEM0LAorICAgIDB4M0UsIDB4RTcsIDB4NkEsIDB4M0QsIDB4RDIsIDB4N0QsIDB4MDIsIDB4RDMsIDB4QTgsIDB4OTgsIDB4RTUsIDB4RjEsIDB4RjUsIDB4RTEsIDB4Q0YsIDB4RkEsCisgICAgMHg3MSwgMHg1MCwgMHhBQSwgMHg4QSwgMHhCMSwgMHg0MywgMHhEQywgMHgzQSwgMHgwRSwgMHhDMiwgMHg3NywgMHhGMywgMHg5NSwgMHgzOSwgMHg4MiwgMHgxRCwKKyAgICAweDRELCAweDg4LCAweEZELCAweEE2LCAweDU1LCAweDAyLCAweDVDLCAweDgwLCAweDFFLCAweDg0LCAweDkxLCAweDVDLCAweDdELCAweDYzLCAweDM2LCAweDQyLAorICAgIDB4NjgsIDB4QTgsIDB4MTUsIDB4NzIsIDB4NDAsIDB4QzAsIDB4RjUsIDB4NTIsIDB4QzgsIDB4OUIsIDB4QjgsIDB4QUQsIDB4MDAsIDB4Q0IsIDB4NEIsIDB4MEEsCisgICAgMHg4NywgMHg1NCwgMHg5NiwgMHg0OCwgMHg0NywgMHg3RCwgMHgzOSwgMHhDQSwgMHgxRCwgMHhGMCwgMHg4MywgMHg2MywgMHg5QSwgMHg3RiwgMHhFOSwgMHhCNSwKKyAgICAweDVBLCAweDExLCAweDJGLCAweDk0LCAweDMwLCAweDlGLCAweDFELCAweEQ2LCAweEQ1LCAweDk4LCAweENCLCAweDgwLCAweDdCLCAweDgyLCAweDJCLCAweEMwLAorICAgIDB4QTAsIDB4NzMsIDB4QkQsIDB4MTcsIDB4MzMsIDB4RTQsIDB4M0IsIDB4RTAsIDB4RTUsIDB4MjAsIDB4NTksIDB4RTYsIDB4OTQsIDB4RjgsIDB4RDUsIDB4NDEsCisgICAgMHgyMSwgMHgyRCwgMHhBRCwgMHhGMCwgMHgxMCwgMHgwOCwgMHg3OSwgMHg2MCwgMHgyRiwgMHg3RSwgMHgyNiwgMHg4MiwgMHhFOCwgMHhBMiwgMHg0MSwgMHg3OSwKKyAgICAweEU3LCAweEY2LCAweDA2LCAweEMwLCAweEIyLCAweDU5LCAweEY5LCAweDVCLCAweDFCLCAweDIwLCAweDEyLCAweEEwLCAweEY1LCAweEQ4LCAweDBGLCAweDFGLAorICAgIDB4QTYsIDB4OTYsIDB4MEEsIDB4NjksIDB4M0IsIDB4MkIsIDB4RDEsIDB4OTUsIDB4MTgsIDB4N0YsIDB4QTQsIDB4MUIsIDB4NEIsIDB4RTQsIDB4ODIsIDB4REEsCisgICAgMHg1MCwgMHg0MSwgMHhBNiwgMHgzMCwgMHgwRCwgMHhDMCwgMHg2OCwgMHhFQywgMHhBOSwgMHg0MywgMHgyRSwgMHgxNywgMHgxMywgMHgwQiwgMHgyMSwgMHgwMCwKKyAgICAweDQyLCAweEY1LCAweENFLCAweDJGLCAweDEwLCAweDgxLCAweDNELCAweDZGLCAweERCLCAweERFLCAweDgxLCAweEQxLCAweDEwLCAweERFLCAweDRFLCAweDAyLAorICAgIDB4OTgsIDB4ODUsIDB4MjksIDB4ODEsIDB4NTksIDB4QzQsIDB4MjQsIDB4ODIsIDB4MjUsIDB4RjAsIDB4M0QsIDB4OTMsIDB4QjMsIDB4MDgsIDB4QzksIDB4QzUsCisgICAgMHgzRCwgMHhBMSwgMHg5NywgMHhBRSwgMHgyRCwgMHhFMywgMHg5MywgMHhBQywgMHhCQiwgMHhCMiwgMHgwNiwgMHhDNiwgMHg1NCwgMHg1OCwgMHgxQywgMHg5QSwKKyAgICAweDM3LCAweDZCLCAweERFLCAweEVBLCAweDYzLCAweERFLCAweDNGLCAweDA3LCAweDc2LCAweEZGLCAweDhFLCAweDQxLCAweDRELCAweDJFLCAweDA0LCAweDU0LAorICAgIDB4N0QsIDB4REYsIDB4N0YsIDB4MjYsIDB4NkEsIDB4RDIsIDB4NUQsIDB4QkIsIDB4MTksIDB4NUYsIDB4MkIsIDB4MDksIDB4RjQsIDB4MTUsIDB4N0QsIDB4NUUsCisgICAgMHhCNSwgMHg0OCwgMHhFRSwgMHhGMSwgMHgxNywgMHhDMCwgMHgzMiwgMHhFNiwgMHgxNCwgMHgyQywgMHgyRCwgMHhGMywgMHhERCwgMHhEQSwgMHhGRCwgMHhDNSwKKyAgICAweDJELCAweDA1LCAweEIzLCAweDdELCAweDY5LCAweDQyLCAweEY0LCAweDRGLCAweERDLCAweEVFLCAweDI3LCAweDZDLCAweDEwLCAweDU5LCAweENCLCAweDYzLAorICAgIDB4RjYsIDB4RTksIDB4QzIsIDB4M0IsIDB4OEEsIDB4RDAsIDB4QTgsIDB4MTAsIDB4NzAsIDB4RjEsIDB4MzUsIDB4MkIsIDB4M0QsIDB4OEUsIDB4QUUsIDB4QkQsCisgICAgMHhEMywgMHhCNywgMHhFMiwgMHg5RSwgMHgzQSwgMHhENywgMHhCRCwgMHhGNSwgMHgzOCwgMHgzMiwgMHg5MCwgMHg0RiwgMHhFMiwgMHg0MiwgMHhCNywgMHg3MywKKyAgICAweEUwLCAweEZFLCAweDgzLCAweEVBLCAweDI1LCAweDg3LCAweEZCLCAweEI3LCAweEU3LCAweDMxLCAweDY2LCAweEVCLCAweEFBLCAweENDLCAweDQwLCAweDRGLAorICAgIDB4MzUsIDB4MTgsIDB4MjEsIDB4RkYsIDB4MzEsIDB4M0MsIDB4NjEsIDB4OEMsIDB4RUMsIDB4QjQsIDB4MjAsIDB4RDAsIDB4RkUsIDB4MUMsIDB4ODEsIDB4NTMsCisgICAgMHhCMCwgMHg2RiwgMHg3NiwgMHhGNywgMHgwRiwgMHg3RiwgMHg1MSwgMHg1MSwgMHg0MCwgMHhBRSwgMHgzNSwgMHg4NCwgMHg4NCwgMHhBOSwgMHgzNSwgMHg5QywKKyAgICAweEMwLCAweDNDLCAweDBELCAweDdFLCAweDczLCAweDVCLCAweEE3LCAweEU2LCAweDI4LCAweDYyLCAweDZDLCAweDUzLCAweDY4LCAweDJELCAweDcyLCAweEExLAorICAgIDB4MEYsIDB4NjMsIDB4Q0IsIDB4NzksIDB4NzksIDB4RTUsIDB4QTUsIDB4MjQsIDB4Q0YsIDB4NkEsIDB4NjAsIDB4NkMsIDB4MEUsIDB4RjMsIDB4NTIsIDB4NUIsCisgICAgMHhERiwgMHhBNCwgMHgyNiwgMHg3QywgMHhDMiwgMHhGMywgMHhEMSwgMHgyMCwgMHg4QSwgMHg4QywgMHg4MCwgMHgwNCwgMHg3NywgMHhDRSwgMHgwQywgMHhFMCwKKyAgICAweEEzLCAweDhDLCAweEU1LCAweEMyLCAweERFLCAweDYwLCAweEMxLCAweDM1LCAweDE4LCAweEE4LCAweDk0LCAweENGLCAweEVBLCAweDgxLCAweEQ4LCAweEU5LAorICAgIDB4MjIsIDB4OTMsIDB4REIsIDB4N0EsIDB4QUEsIDB4NTEsIDB4QUQsIDB4RTUsIDB4NDQsIDB4NkIsIDB4MzEsIDB4RkYsIDB4MDQsIDB4RTEsIDB4QjYsIDB4RTMsCisgICAgMHg1NSwgMHhGQSwgMHhFRiwgMHgxNywgMHhFNywgMHg5NCwgMHgzNywgMHhERiwgMHg4OSwgMHhENSwgMHgyOSwgMHgwNywgMHg5NiwgMHhDNywgMHg3NiwgMHhFNSwKKyAgICAweDIxLCAweEQ3LCAweEUyLCAweEIzLCAweEE0LCAweDc3LCAweDZGLCAweEU0LCAweDFFLCAweEFELCAweDAzLCAweDY0LCAweEY1LCAweDM4LCAweDMzLCAweEM1LAorICAgIDB4NzQsIDB4MkUsIDB4QTEsIDB4RjEsIDB4QkIsIDB4QUYsIDB4MUIsIDB4MjQsIDB4OEIsIDB4RUUsIDB4NDYsIDB4ODYsIDB4MjUsIDB4QUQsIDB4OTUsIDB4NUUsCisgICAgMHgyOCwgMHgxRiwgMHhFOSwgMHgyQywgMHhDRCwgMHhDOSwgMHg4NSwgMHhGQywgMHg1QiwgMHg3NCwgMHgzRiwgMHhGMywgMHhGOSwgMHgyQiwgMHg1QywgMHgyMywKKyAgICAweDVDLCAweEQwLCAweEJBLCAweEJBLCAweDdFLCAweDhDLCAweEEwLCAweEE5LCAweDU2LCAweEEwLCAweDU1LCAweEE1LCAweDM2LCAweDdELCAweEI4LCAweDhCLAorICAgIDB4QTYsIDB4NDYsIDB4NjIsIDB4MUMsIDB4MUUsIDB4N0UsIDB4N0MsIDB4RTMsIDB4QzMsIDB4RUEsIDB4MzMsIDB4OEUsIDB4MjgsIDB4OUEsIDB4QTgsIDB4QjYsCisgICAgMHg4RSwgMHhDMywgMHhBNCwgMHgwRiwgMHg0QSwgMHgyMywgMHhGRiwgMHg2RiwgMHgzQiwgMHgyQSwgMHhCRSwgMHg2NSwgMHg5NywgMHgxMCwgMHgzMCwgMHgxMiwKKyAgICAweEMwLCAweEE2LCAweDNBLCAweDM0LCAweEUzLCAweDZDLCAweEE4LCAweDExLCAweEVELCAweDc4LCAweDYwLCAweEUyLCAweEFFLCAweEM4LCAweDJFLCAweEUzLAorICAgIDB4RUEsIDB4QjksIDB4M0UsIDB4QUIsIDB4QkQsIDB4MTUsIDB4NDksIDB4OUMsIDB4NzUsIDB4RDcsIDB4NDksIDB4RTMsIDB4NUMsIDB4RTksIDB4QTIsIDB4OEEsCisgICAgMHgwQywgMHhCRSwgMHg3NCwgMHg4MSwgMHgxRCwgMHhFMCwgMHhDQSwgMHgxMiwgMHgzRSwgMHg4QSwgMHgyMywgMHhGMiwgMHg3QiwgMHg1RCwgMHhGMCwgMHhGNywKKyAgICAweDBFLCAweDFCLCAweDczLCAweEY2LCAweDVFLCAweDhDLCAweEUwLCAweDhFLCAweDU3LCAweEQ1LCAweDAxLCAweDU2LCAweDVFLCAweDNCLCAweDdDLCAweEM4LAorICAgIDB4RjcsIDB4RTQsIDB4NjEsIDB4NzAsIDB4NUQsIDB4NEYsIDB4QzMsIDB4MDEsIDB4MjYsIDB4MkEsIDB4NzEsIDB4MjYsIDB4NTAsIDB4OUIsIDB4NjUsIDB4QTEsCisgICAgMHg0OSwgMHhCRSwgMHg1MCwgMHg0QywgMHg0NCwgMHgzQywgMHg1QiwgMHgwOSwgMHgzQiwgMHgzOSwgMHgzMiwgMHgzNCwgMHg4MiwgMHgzQiwgMHhCRiwgMHg3NCwKKyAgICAweDZCLCAweDM3LCAweDU5LCAweEY0LCAweDEzLCAweDIxLCAweDMwLCAweDg2LCAweDZELCAweDk0LCAweERFLCAweDJGLCAweDVGLCAweDY5LCAweDA3LCAweDMyLAorICAgIDB4RkYsIDB4MTQsIDB4ODgsIDB4NDYsIDB4QTQsIDB4QjEsIDB4OUUsIDB4NjksIDB4NUEsIDB4QjcsIDB4OTEsIDB4NDEsIDB4MkEsIDB4NjIsIDB4M0MsIDB4ODEsCisgICAgMHhFMSwgMHg0QSwgMHg0NywgMHg5RCwgMHg2MSwgMHhCMiwgMHg0NiwgMHgyRCwgMHgwNCwgMHgzRiwgMHhEOSwgMHg1NywgMHhGMiwgMHhBQiwgMHhDOSwgMHg0RiwKKyAgICAweEIzLCAweENFLCAweDExLCAweDJBLCAweDc3LCAweDc2LCAweDQ5LCAweDFCLCAweDdFLCAweDFELCAweEI3LCAweEIzLCAweDFELCAweEI3LCAweDg0LCAweDVBLAorICAgIDB4QzUsIDB4Q0MsIDB4MUYsIDB4OUMsIDB4ODIsIDB4NkQsIDB4RTAsIDB4NjIsIDB4MDMsIDB4RUUsIDB4QTksIDB4OUEsIDB4MDUsIDB4MjYsIDB4MEEsIDB4RUIsCisgICAgMHgwRCwgMHg1NSwgMHgwMSwgMHg1OSwgMHg3MSwgMHgxMCwgMHhCOSwgMHg1MywgMHgyMCwgMHg2NSwgMHg3QiwgMHg0MiwgMHg5MCwgMHgzNywgMHgzNiwgMHg1QSwKKyAgICAweEMyLCAweEJBLCAweDkxLCAweDIwLCAweEUwLCAweDg5LCAweEE5LCAweDY1LCAweDJELCAweDY3LCAweDgzLCAweDVELCAweDVBLCAweEI5LCAweDZCLCAweDI3LAorICAgIDB4MTMsIDB4NTEsIDB4QTgsIDB4MDAsIDB4OUUsIDB4OTgsIDB4RTksIDB4NjIsIDB4RDEsIDB4NTUsIDB4N0QsIDB4MzcsIDB4MUUsIDB4QjUsIDB4QTMsIDB4MTcsCisgICAgMHg5QiwgMHg0NSwgMHhEOCwgMHg2MCwgMHgwMiwgMHhBQywgMHhGQywgMHgyQiwgMHhBOSwgMHhBQywgMHg2NiwgMHg3OSwgMHhGOSwgMHgwQywgMHhCQywgMHhENCwKKyAgICAweDUwLCAweDE1LCAweDhCLCAweDQ4LCAweEIxLCAweDZBLCAweEI0LCAweEVELCAweEI3LCAweEZFLCAweEU4LCAweDlFLCAweDNCLCAweEUzLCAweDFDLCAweEE1LAorICAgIDB4MjEsIDB4MTUsIDB4MDYsIDB4NjYsIDB4MkYsIDB4QkIsIDB4MDUsIDB4MzMsIDB4RTQsIDB4NUEsIDB4MTcsIDB4NUQsIDB4RjcsIDB4QjksIDB4MkYsIDB4M0EsCisgICAgMHgyQiwgMHg4MywgMHhGRiwgMHhBQywgMHhCNiwgMHg2NSwgMHg5MiwgMHhFRiwgMHg2RSwgMHgxQywgMHg4QSwgMHg2QywgMHg3MiwgMHg1MiwgMHgzMiwgMHhBNiwKKyAgICAweDVBLCAweDE2LCAweDc1LCAweEVFLCAweEE5LCAweDk1LCAweDg0LCAweDMzLCAweDM0LCAweDVFLCAweDcxLCAweDY2LCAweDQwLCAweEI5LCAweEZGLCAweDhCLAorICAgIDB4RDUsIDB4NTAsIDB4ODEsIDB4QUYsIDB4MjcsIDB4QzgsIDB4NTgsIDB4RUUsIDB4MEQsIDB4RTcsIDB4NkQsIDB4RUIsIDB4MjQsIDB4QTIsIDB4M0YsIDB4REEsCisgICAgMHgxQSwgMHhENCwgMHhCRSwgMHgzQiwgMHgwMiwgMHg3QiwgMHgxQywgMHg1QSwgMHhBRiwgMHgxRCwgMHhFMywgMHg0QiwgMHg5RiwgMHhCQywgMHg3OCwgMHg1QiwKKyAgICAweDBCLCAweDkxLCAweDczLCAweDc4LCAweDY0LCAweEQ5LCAweDc3LCAweEM3LCAweDZFLCAweDRCLCAweDk0LCAweDVGLCAweEU5LCAweDhELCAweDhGLCAweDQ5LAorICAgIDB4REMsIDB4NDgsIDB4RUUsIDB4NTgsIDB4ODYsIDB4MDQsIDB4NjMsIDB4RUIsIDB4MEQsIDB4MzksIDB4MzEsIDB4ODEsIDB4QjQsIDB4QTgsIDB4MTYsIDB4QjMsCisgICAgMHg3RiwgMHg2MCwgMHg3RiwgMHg5NCwgMHhFRSwgMHgwNiwgMHg1MywgMHgzOCwgMHgxMCwgMHgwRiwgMHg5MywgMHg3RiwgMHgxMiwgMHgxRiwgMHg3NiwgMHgyOCwKKyAgICAweEE3LCAweDNFLCAweDQ2LCAweDEwLCAweDhDLCAweDI4LCAweDUzLCAweENGLCAweDlGLCAweDgzLCAweDdGLCAweDBDLCAweEQ4LCAweEQ2LCAweDUyLCAweEYzLAorICAgIDB4RTgsIDB4RDIsIDB4MjEsIDB4QTYsIDB4NEEsIDB4RUUsIDB4OEIsIDB4RjcsIDB4NUIsIDB4MTksIDB4OTAsIDB4NkQsIDB4MzUsIDB4ODMsIDB4QUYsIDB4M0YsCisgICAgMHg0OSwgMHg3MSwgMHhCMSwgMHgzRSwgMHhEMSwgMHg5OCwgMHg2MCwgMHg3NywgMHgwNSwgMHgzNiwgMHhBNSwgMHhGRiwgMHg4MiwgMHgzNywgMHgxNCwgMHg0OSwKKyAgICAweDYyLCAweDk4LCAweEIzLCAweDA1LCAweEY1LCAweEFDLCAweEUyLCAweENDLCAweDQ3LCAweDA5LCAweDk0LCAweDhBLCAweDU5LCAweDAwLCAweDIzLCAweEY0LAorICAgIDB4NkQsIDB4MDgsIDB4RTIsIDB4QUQsIDB4N0EsIDB4RjAsIDB4Q0MsIDB4OTcsIDB4NjgsIDB4RjcsIDB4MjEsIDB4NUMsIDB4NDMsIDB4RDQsIDB4MUYsIDB4MTYsCisgICAgMHgxQSwgMHhDNiwgMHg2NSwgMHhGRSwgMHg5NiwgMHhCNCwgMHg3QywgMHgyQywgMHg3OSwgMHg5RSwgMHhFQywgMHhENCwgMHg5NiwgMHhBRiwgMHgwRSwgMHgzNSwKKyAgICAweDI0LCAweDA2LCAweDAzLCAweDhFLCAweDlBLCAweDRFLCAweEE1LCAweEE3LCAweENELCAweDM1LCAweDMyLCAweEQyLCAweDMwLCAweDE1LCAweEFDLCAweEVELAorICAgIDB4REYsIDB4RjEsIDB4ODMsIDB4MzksIDB4MTcsIDB4QkIsIDB4OUIsIDB4OTAsIDB4RUQsIDB4RkIsIDB4NjQsIDB4RTksIDB4NTUsIDB4MDksIDB4NDksIDB4ODYsCisgICAgMHg3QSwgMHg5QSwgMHg0MywgMHgxMywgMHhCMSwgMHhEMiwgMHhDNywgMHhDNywgMHhDNiwgMHhBMSwgMHg5OSwgMHhDOCwgMHg1MSwgMHg0QSwgMHg1RiwgMHg5RCwKKyAgICAweDZGLCAweEE2LCAweENELCAweDk3LCAweDMwLCAweEU5LCAweDU1LCAweDBCLCAweDZGLCAweDBGLCAweDRBLCAweDQzLCAweDZFLCAweDcxLCAweEU2LCAweENGLAorICAgIDB4M0EsIDB4N0MsIDB4QzksIDB4NzgsIDB4NzAsIDB4RkUsIDB4QkQsIDB4MEEsIDB4MDAsIDB4RUMsIDB4QTYsIDB4N0YsIDB4ODMsIDB4RkEsIDB4QkUsIDB4RDQsCisgICAgMHhERiwgMHhCMCwgMHg4NiwgMHg0MSwgMHgxMiwgMHg1MywgMHgxQiwgMHg0RiwgMHg3QywgMHgxRSwgMHg2MCwgMHgyQSwgMHhDMSwgMHgyMCwgMHg3QSwgMHgwMCwKKyAgICAweEVELCAweDZDLCAweDY2LCAweDIzLCAweDFGLCAweDc5LCAweEMzLCAweDNFLCAweDAxLCAweDc0LCAweEE3LCAweDYwLCAweDdELCAweDFGLCAweDI5LCAweDkzLAorICAgIDB4MDMsIDB4RjAsIDB4NjQsIDB4RjYsIDB4NkYsIDB4NTYsIDB4OEUsIDB4NzUsIDB4NTcsIDB4MjUsIDB4NzAsIDB4REMsIDB4RDIsIDB4RDIsIDB4MjgsIDB4MzcsCisgICAgMHhBOCwgMHgwNSwgMHg5QiwgMHhCMCwgMHhBRCwgMHgxQSwgMHgyRCwgMHg4NiwgMHhBOSwgMHg1MCwgMHhCOCwgMHhFMywgMHhGNiwgMHhBMiwgMHgzRSwgMHgxNywKKyAgICAweDVCLCAweDc4LCAweDY1LCAweEMwLCAweDYxLCAweDk1LCAweDBFLCAweDI3LCAweDM5LCAweDcyLCAweDZBLCAweDlFLCAweENCLCAweDhFLCAweEFELCAweEVDLAorICAgIDB4MEMsIDB4RkMsIDB4REIsIDB4OUEsIDB4OUEsIDB4MTIsIDB4MzEsIDB4MTYsIDB4NjgsIDB4NEYsIDB4ODMsIDB4NzksIDB4MTEsIDB4M0QsIDB4NzUsIDB4RUQsCisgICAgMHgyRCwgMHhFQSwgMHg5MiwgMHg4RSwgMHhERSwgMHhBQywgMHgwNywgMHg1NSwgMHhGMSwgMHhFNCwgMHgzMCwgMHg2QywgMHhGQywgMHg1QywgMHg4OCwgMHgxRiwKKyAgICAweDc3LCAweDk0LCAweEM4LCAweDg3LCAweDczLCAweEIyLCAweEI2LCAweDlGLCAweDJBLCAweDA1LCAweDcxLCAweERFLCAweDhFLCAweEYyLCAweEVCLCAweDNBLAorICAgIDB4REIsIDB4QkUsIDB4NDYsIDB4RkEsIDB4MTEsIDB4QTEsIDB4Q0EsIDB4MUEsIDB4QjMsIDB4NjUsIDB4QUMsIDB4NDIsIDB4ODUsIDB4RDUsIDB4MEIsIDB4MjMsCisgICAgMHg1NywgMHhBNSwgMHg1MywgMHhFOSwgMHg1OCwgMHgzMCwgMHhFMCwgMHhGOSwgMHgyMywgMHhGMCwgMHg3NSwgMHgyQSwgMHhGNSwgMHgyQiwgMHg5QSwgMHgyNSwKKyAgICAweDk2LCAweEQ3LCAweDFFLCAweDcxLCAweDMxLCAweEM3LCAweEE3LCAweEIwLCAweDZCLCAweDNGLCAweDI2LCAweEY4LCAweDhELCAweEY5LCAweDFFLCAweDE1LAorICAgIDB4ODMsIDB4QjgsIDB4RkYsIDB4QzYsIDB4QUEsIDB4QTYsIDB4NDIsIDB4QUMsIDB4OTAsIDB4ODIsIDB4QTIsIDB4NTAsIDB4N0YsIDB4MUYsIDB4QzMsIDB4OTksCisgICAgMHhEQywgMHgyNywgMHhENywgMHhBQSwgMHg2NSwgMHgxMywgMHgwOCwgMHhBMiwgMHg2NiwgMHg1MSwgMHg3RCwgMHhDNywgMHg3RSwgMHhBRSwgMHgxQSwgMHgzMywKKyAgICAweDJCLCAweDcyLCAweEYzLCAweEY0LCAweDI1LCAweEQ5LCAweEVFLCAweEYxLCAweDA3LCAweDBGLCAweEMzLCAweDg3LCAweERGLCAweDJCLCAweDBDLCAweEM4LAorICAgIDB4NEQsIDB4MkUsIDB4RUIsIDB4QTMsIDB4OTMsIDB4QjIsIDB4QkIsIDB4QUEsIDB4NjEsIDB4RTEsIDB4NzEsIDB4MEQsIDB4NTMsIDB4RTIsIDB4RjUsIDB4N0UsCisgICAgMHhGNywgMHgwOCwgMHgwNiwgMHhBRCwgMHgzRSwgMHhFNywgMHhBNiwgMHhCOSwgMHgzQiwgMHhDOSwgMHg2OCwgMHg1RCwgMHhCOCwgMHg3RCwgMHhDMSwgMHgzMSwKKyAgICAweDlCLCAweDcwLCAweEMyLCAweDJCLCAweDU3LCAweDI2LCAweDU0LCAweDY3LCAweDNELCAweDE0LCAweDI2LCAweENGLCAweEIwLCAweEVDLCAweEQ2LCAweDAwLAorICAgIDB4RTMsIDB4M0YsIDB4MjYsIDB4Q0EsIDB4RUYsIDB4QjgsIDB4MUEsIDB4RkQsIDB4RTQsIDB4MDYsIDB4RTksIDB4NDEsIDB4RjIsIDB4QUQsIDB4MkUsIDB4MTYsCisgICAgMHgxMSwgMHgwQSwgMHg5OCwgMHg0QiwgMHgwMSwgMHg2NywgMHg3NiwgMHg5OSwgMHhBRSwgMHg1OCwgMHhGNCwgMHhBRCwgMHhDMiwgMHhDOCwgMHg1NiwgMHgyNiwKKyAgICAweDUwLCAweEIyLCAweDc3LCAweDRCLCAweDMyLCAweDcxLCAweDE2LCAweDEzLCAweEM3LCAweEFFLCAweEUzLCAweERFLCAweDFDLCAweDZELCAweDU0LCAweDRDLAorICAgIDB4ODksIDB4QTQsIDB4ODEsIDB4MTgsIDB4NTMsIDB4QzMsIDB4MDEsIDB4Q0QsIDB4Q0YsIDB4ODUsIDB4RkIsIDB4M0EsIDB4OTcsIDB4RDUsIDB4MjUsIDB4NTYsCisgICAgMHgzOSwgMHg4OSwgMHhFRiwgMHg1MiwgMHhCQiwgMHgwMiwgMHhDOCwgMHgyMywgMHhERCwgMHgwNCwgMHgzNiwgMHg4NSwgMHhBMiwgMHgzMywgMHhFNCwgMHg0RiwKKyAgICAweDQxLCAweEM4LCAweEU5LCAweDhCLCAweENFLCAweEQ1LCAweEIwLCAweERCLCAweEYzLCAweEI0LCAweEMzLCAweDdDLCAweDcwLCAweDI5LCAweDBGLCAweEI2LAorICAgIDB4M0MsIDB4QjEsIDB4RDMsIDB4MEMsIDB4RDUsIDB4MDYsIDB4NTYsIDB4MkUsIDB4NTcsIDB4RDEsIDB4OTAsIDB4QUIsIDB4NUQsIDB4RTgsIDB4RTYsIDB4RDYsCisgICAgMHg5NCwgMHg1OCwgMHhFMiwgMHhBOCwgMHg5MiwgMHg0MiwgMHhGOCwgMHhENCwgMHhENywgMHgyRiwgMHgxRiwgMHgxNiwgMHg5MiwgMHgwQywgMHhENSwgMHg4RSwKKyAgICAweDY5LCAweDk4LCAweEE5LCAweDQ4LCAweEExLCAweDZFLCAweDk0LCAweDhDLCAweDY2LCAweDMwLCAweEEzLCAweDUyLCAweDUwLCAweDdBLCAweDI5LCAweDk2LAorICAgIDB4QjAsIDB4MkIsIDB4MTYsIDB4M0UsIDB4MkMsIDB4NTYsIDB4QTQsIDB4OUYsIDB4ODUsIDB4OTYsIDB4NTYsIDB4MjUsIDB4OTgsIDB4NTYsIDB4QUEsIDB4RkIsCisgICAgMHhFRSwgMHg0QSwgMHgzMSwgMHhEOSwgMHhENywgMHhCMywgMHgzNywgMHhFNCwgMHgxRCwgMHg0OSwgMHgzRCwgMHhBNywgMHhGNywgMHg5MywgMHgzMSwgMHg2RCwKKyAgICAweDk5LCAweDI0LCAweEU1LCAweDMwLCAweDhGLCAweEI0LCAweDg5LCAweDU2LCAweDFGLCAweEI3LCAweDA5LCAweDRGLCAweDcxLCAweERCLCAweDRELCAweDAyLAorICAgIDB4NDAsIDB4N0IsIDB4RUEsIDB4NzUsIDB4MzgsIDB4MkMsIDB4Q0QsIDB4RTIsIDB4OUYsIDB4NjAsIDB4QzgsIDB4NEEsIDB4ODQsIDB4MkYsIDB4OUQsIDB4RkYsCisgICAgMHg3NSwgMHhFRCwgMHgzMiwgMHhCQSwgMHhCNywgMHhGNCwgMHhDOCwgMHgwRSwgMHhDRiwgMHhDNSwgMHgzMSwgMHg4QSwgMHhBMCwgMHhGNywgMHhDOSwgMHgwNywKKyAgICAweDU0LCAweDQ0LCAweDkwLCAweEMxLCAweDFDLCAweDQ2LCAweDQ5LCAweEVFLCAweDMzLCAweDBFLCAweEI0LCAweDg3LCAweDRCLCAweDlFLCAweDNDLCAweEYwLAorICAgIDB4QUQsIDB4MEIsIDB4QTUsIDB4QTQsIDB4MjgsIDB4NDMsIDB4RTYsIDB4MzQsIDB4RDMsIDB4RDAsIDB4RjQsIDB4ODgsIDB4MUUsIDB4REUsIDB4NkUsIDB4NTAsCisgICAgMHg4MSwgMHgwRSwgMHgyNCwgMHhFNSwgMHg4NywgMHhBNCwgMHhBQiwgMHg2NywgMHhEMSwgMHg5MSwgMHhEMiwgMHhCOCwgMHg1NywgMHhBNiwgMHg4NiwgMHg0QSwKKyAgICAweDQ3LCAweDQ1LCAweDM5LCAweDZCLCAweDFFLCAweDJCLCAweENGLCAweENELCAweEUyLCAweDFCLCAweEJGLCAweDc1LCAweEMyLCAweEQ0LCAweDVBLCAweDY4LAorICAgIDB4OEYsIDB4QzYsIDB4REMsIDB4NjQsIDB4QkIsIDB4QkUsIDB4NzEsIDB4MzgsIDB4OUQsIDB4NEIsIDB4QkUsIDB4NEUsIDB4RjYsIDB4MkQsIDB4QUMsIDB4NUQsCisgICAgMHgyMywgMHg2QiwgMHhDMywgMHg5NiwgMHg1MSwgMHg0RCwgMHgxMCwgMHg3MCwgMHg4MywgMHhDQSwgMHg2OSwgMHg5MSwgMHg1MiwgMHgzRSwgMHg0NiwgMHgwMywKKyAgICAweDkzLCAweEMzLCAweEUwLCAweDEwLCAweERGLCAweDI0LCAweDdGLCAweDlCLCAweDg2LCAweEQ2LCAweDVCLCAweDk1LCAweEQ0LCAweENGLCAweEVELCAweDE0LAorICAgIDB4Q0QsIDB4NTMsIDB4ODIsIDB4OTcsIDB4NkMsIDB4ODEsIDB4OUMsIDB4M0YsIDB4NkIsIDB4RkEsIDB4OUIsIDB4NDQsIDB4MUIsIDB4MjksIDB4Q0EsIDB4NjYsCisgICAgMHhEOSwgMHgyMiwgMHhCMSwgMHhERSwgMHhGRSwgMHgzQSwgMHhFMiwgMHgwQywgMHhENSwgMHg2MiwgMHhEQiwgMHgwMCwgMHgxMiwgMHg1OSwgMHg3NCwgMHhFNiwKKyAgICAweDhDLCAweDIyLCAweDdCLCAweDExLCAweDdGLCAweDU5LCAweEIzLCAweDBBLCAweDJDLCAweDc2LCAweDVGLCAweDcxLCAweDMxLCAweEEyLCAweEQ4LCAweDQyLAorICAgIDB4MjgsIDB4RjMsIDB4MjQsIDB4QzUsIDB4RjYsIDB4ODUsIDB4NjAsIDB4MzIsIDB4QzEsIDB4OTEsIDB4RDcsIDB4OTUsIDB4NjEsIDB4NzAsIDB4NTEsIDB4OUEsCisgICAgMHg0RSwgMHg2MiwgMHg4QSwgMHhDRiwgMHhCRCwgMHg5OCwgMHgwMCwgMHhBMCwgMHgxMiwgMHhCNSwgMHhCNiwgMHg5MCwgMHhDNywgMHg2RSwgMHhDMywgMHg0QSwKKyAgICAweDhFLCAweDJGLCAweDUwLCAweEFELCAweEMwLCAweDI2LCAweDEyLCAweEY0LCAweDY4LCAweDFELCAweDUxLCAweDcyLCAweDE0LCAweDA2LCAweEI3LCAweDdBLAorICAgIDB4Q0EsIDB4MzcsIDB4OEYsIDB4MzksIDB4MDEsIDB4NzYsIDB4RTUsIDB4RTQsIDB4RjEsIDB4Q0EsIDB4REEsIDB4NkEsIDB4NkIsIDB4N0MsIDB4N0QsIDB4RDksCisgICAgMHhBOSwgMHgzOSwgMHhCQiwgMHg1MCwgMHg3OSwgMHgwMiwgMHhENiwgMHhBMSwgMHgxMiwgMHhFNywgMHhFNiwgMHg5QSwgMHgxQiwgMHhGNCwgMHg4OSwgMHg0OCwKKyAgICAweDI5LCAweDg4LCAweEE3LCAweEM4LCAweEU5LCAweEVGLCAweEIxLCAweDI4LCAweDE4LCAweDIyLCAweDRCLCAweDZBLCAweDk2LCAweEFGLCAweDA2LCAweDNCLAorICAgIDB4RTAsIDB4OEUsIDB4OUIsIDB4MkMsIDB4QzEsIDB4N0IsIDB4RDksIDB4ODcsIDB4NzIsIDB4QTUsIDB4QzgsIDB4RkUsIDB4MzAsIDB4OUMsIDB4MjQsIDB4NzksCisgICAgMHhBRCwgMHgwNCwgMHhCQiwgMHgzOCwgMHhBOSwgMHhCOCwgMHgyOSwgMHgwMSwgMHg0MSwgMHhDMywgMHg0MCwgMHhEOSwgMHhFNiwgMHhFNCwgMHhEMywgMHg5NywKKyAgICAweEUyLCAweDQyLCAweEJGLCAweDc5LCAweDU5LCAweDdCLCAweEFGLCAweDMxLCAweDBDLCAweEYzLCAweEQxLCAweDcyLCAweEE0LCAweDlELCAweDM2LCAweEQ5LAorICAgIDB4REIsIDB4MEMsIDB4MEYsIDB4Q0MsIDB4M0EsIDB4OEMsIDB4QUYsIDB4NzEsIDB4QjcsIDB4NDYsIDB4MkYsIDB4MjYsIDB4N0QsIDB4MUUsIDB4MjUsIDB4QzksCisgICAgMHg4RSwgMHhBMywgMHg5QiwgMHhDRiwgMHg3RiwgMHhDNCwgMHg5NiwgMHhCNiwgMHhDNywgMHgwNSwgMHg2MiwgMHgwOCwgMHg0OSwgMHgzQywgMHhGQywgMHgyNCwKKyAgICAweEFBLCAweDE2LCAweEVCLCAweDNDLCAweEU2LCAweDA0LCAweDU3LCAweEQxLCAweEEzLCAweDgxLCAweDZFLCAweEQ0LCAweDY0LCAweEY1LCAweEM2LCAweDI0LAorICAgIDB4MDYsIDB4OUUsIDB4QTQsIDB4NzYsIDB4M0UsIDB4NjIsIDB4MzEsIDB4NTQsIDB4QzgsIDB4QzcsIDB4QUEsIDB4MzEsIDB4QzYsIDB4RjAsIDB4NzEsIDB4MUIsCisgICAgMHhFNywgMHgwOCwgMHhGRiwgMHgzQSwgMHg3QSwgMHhEMywgMHg1MSwgMHg1QSwgMHhFOCwgMHhBNiwgMHhENCwgMHhBQSwgMHg2RSwgMHgyMCwgMHgzNywgMHgyOCwKKyAgICAweDBELCAweDBBLCAweENDLCAweDI1LCAweDZDLCAweDFFLCAweDc2LCAweDhDLCAweEM1LCAweENBLCAweERBLCAweDZDLCAweDI0LCAweDE3LCAweEQ0LCAweEIwLAorICAgIDB4NDUsIDB4M0UsIDB4RDcsIDB4MjUsIDB4QjgsIDB4MDMsIDB4RUQsIDB4QTIsIDB4REEsIDB4ODIsIDB4MDgsIDB4OEYsIDB4MTAsIDB4M0YsIDB4MTMsIDB4NDMsCisgICAgMHgwNywgMHgzRiwgMHg4QywgMHhGOSwgMHhFNSwgMHhENSwgMHhCMCwgMHgzNSwgMHgwMSwgMHgxMywgMHg2MSwgMHgzOCwgMHg5NywgMHhDQSwgMHhCNCwgMHhGRSwKKyAgICAweDFCLCAweDFGLCAweDQ0LCAweEVDLCAweEZCLCAweEFCLCAweDA3LCAweEI2LCAweDNGLCAweDIxLCAweDgwLCAweDZBLCAweDhELCAweEJBLCAweDhBLCAweDFELAorICAgIDB4RUEsIDB4RUYsIDB4QTAsIDB4RUIsIDB4QkMsIDB4MjYsIDB4MzcsIDB4NEYsIDB4QTYsIDB4MTYsIDB4RjgsIDB4QTIsIDB4OTAsIDB4M0UsIDB4RjcsIDB4MDYsCisgICAgMHhEOCwgMHg0QywgMHgyMSwgMHg5NCwgMHgyQywgMHg1RiwgMHg0OSwgMHgwNSwgMHgxMiwgMHhGOCwgMHhBOCwgMHhBNSwgMHgxNCwgMHg0MCwgMHhCRSwgMHg0MCwKKyAgICAweDAxLCAweEY1LCAweDIzLCAweEUxLCAweEVFLCAweEY2LCAweDVCLCAweEMwLCAweEU2LCAweDc2LCAweEVGLCAweDFELCAweDA1LCAweEE4LCAweDc3LCAweEYyLAorICAgIDB4NUQsIDB4OTEsIDB4QkEsIDB4NjIsIDB4QjgsIDB4REQsIDB4RjAsIDB4RkMsIDB4NUIsIDB4QTksIDB4QjIsIDB4MjUsIDB4REQsIDB4MEUsIDB4MDgsIDB4RkEsCisgICAgMHhFOCwgMHg1QywgMHhDQSwgMHg0MywgMHgwRCwgMHhEMCwgMHg2NSwgMHgwOCwgMHgyMywgMHhBNywgMHgyQSwgMHgyQywgMHhFNiwgMHg2RiwgMHhCNiwgMHgwQSwKKyAgICAweEU3LCAweEVELCAweDg2LCAweDgwLCAweDUwLCAweDk0LCAweDU4LCAweDBELCAweDExLCAweDU3LCAweEVELCAweEI5LCAweEQ1LCAweDdDLCAweDMzLCAweENELAorICAgIDB4NDQsIDB4OUEsIDB4MTcsIDB4RkIsIDB4NzQsIDB4RjMsIDB4QjEsIDB4MkQsIDB4OUYsIDB4MzgsIDB4NUUsIDB4NkEsIDB4OUEsIDB4QUUsIDB4NUYsIDB4N0IsCisgICAgMHhBRCwgMHg0RiwgMHg5QywgMHg4RSwgMHgxRSwgMHgzQSwgMHg3NSwgMHg0RiwgMHgzMCwgMHhDRiwgMHhGNywgMHgxQywgMHg4MiwgMHgzNCwgMHhDNiwgMHgzRSwKKyAgICAweEU3LCAweDVCLCAweDhCLCAweDJDLCAweEQ4LCAweEZFLCAweERCLCAweDMzLCAweDI3LCAweEJCLCAweDJFLCAweDI0LCAweEIwLCAweERBLCAweDc0LCAweEQzLAorICAgIDB4OTQsIDB4ODUsIDB4NzgsIDB4MzYsIDB4NDAsIDB4MkQsIDB4RUUsIDB4NDAsIDB4NEEsIDB4RUQsIDB4MDAsIDB4NEMsIDB4REIsIDB4RjksIDB4NDksIDB4MkYsCisgICAgMHhFQywgMHgwMywgMHg5OSwgMHg2MywgMHhERCwgMHg5RSwgMHhCNywgMHhBMywgMHgzQiwgMHhFMSwgMHhGMiwgMHgwRSwgMHg1RCwgMHg1OCwgMHhEOCwgMHgzMywKKyAgICAweEU5LCAweEU0LCAweDBBLCAweEQyLCAweDgzLCAweEEwLCAweDNGLCAweDgwLCAweDlBLCAweDAxLCAweEM1LCAweDhELCAweEYzLCAweDE0LCAweEM4LCAweDBGLAorICAgIDB4RTQsIDB4QjgsIDB4QUQsIDB4Q0QsIDB4M0UsIDB4NTAsIDB4NDMsIDB4MTcsIDB4QzEsIDB4NTgsIDB4OEQsIDB4NjQsIDB4MDMsIDB4QjEsIDB4RTUsIDB4NDIsCisgICAgMHhDOCwgMHgzNCwgMHg2QSwgMHhGQiwgMHg3NCwgMHgxOCwgMHhBMCwgMHhEOSwgMHgzRCwgMHgwMSwgMHhENywgMHgyRiwgMHg1MSwgMHgwRiwgMHhEOCwgMHgyOSwKKyAgICAweDc0LCAweEIxLCAweEY4LCAweDk5LCAweENBLCAweDc0LCAweEIyLCAweEYxLCAweEI2LCAweDdCLCAweDUzLCAweDEwLCAweENFLCAweDczLCAweEY2LCAweDMyLAorICAgIDB4M0YsIDB4MDUsIDB4NkUsIDB4QzcsIDB4QUQsIDB4MjcsIDB4MzQsIDB4RDQsIDB4QjksIDB4MUQsIDB4MzQsIDB4NUQsIDB4RUMsIDB4ODgsIDB4NDYsIDB4MjIsCisgICAgMHg5MCwgMHg5NCwgMHhBRiwgMHgxQSwgMHg1MSwgMHgzMywgMHgxMCwgMHhCNywgMHhCRiwgMHhCRSwgMHgwQSwgMHhDRCwgMHgxRSwgMHhFOCwgMHg5NSwgMHg3OCwKKyAgICAweDYxLCAweDE3LCAweDYzLCAweDhGLCAweDNBLCAweEUyLCAweDMwLCAweDU5LCAweDNGLCAweEJGLCAweEQ4LCAweEEzLCAweDg1LCAweEVGLCAweDNELCAweDFELAorICAgIDB4RDIsIDB4NEYsIDB4N0IsIDB4QjMsIDB4RDcsIDB4MTQsIDB4OTEsIDB4NjUsIDB4QzIsIDB4M0EsIDB4NjYsIDB4QkMsIDB4RkYsIDB4RkQsIDB4QzIsIDB4MTIsCisgICAgMHg0QSwgMHhBRiwgMHhDNCwgMHhDQywgMHg3OCwgMHgxRiwgMHhBMSwgMHhBQiwgMHg1NCwgMHhCNywgMHhEQiwgMHgzQiwgMHgwNywgMHg0NSwgMHgwOSwgMHg5MywKKyAgICAweDQ1LCAweDQwLCAweDJGLCAweEEwLCAweDY4LCAweDczLCAweDU0LCAweDI3LCAweDk2LCAweEI0LCAweDJFLCAweDg4LCAweEMyLCAweEY3LCAweDk4LCAweDlFLAorICAgIDB4Q0EsIDB4QkYsIDB4RjQsIDB4RUMsIDB4MEEsIDB4QjYsIDB4OEYsIDB4MzMsIDB4MDgsIDB4NUMsIDB4OTEsIDB4MUIsIDB4OUYsIDB4NTUsIDB4REYsIDB4RjksCisgICAgMHgwNCwgMHg1RCwgMHhGMCwgMHgzQSwgMHhFMSwgMHhGRiwgMHg5MywgMHgzQSwgMHhBNywgMHhCQiwgMHgyNCwgMHg3NSwgMHhBMywgMHgwRCwgMHg5NSwgMHg3RCwKKyAgICAweDY2LCAweDExLCAweDRELCAweDBDLCAweENELCAweDhBLCAweDk4LCAweEEzLCAweEM0LCAweDM4LCAweDg4LCAweDAwLCAweEQzLCAweDdGLCAweEE4LCAweDdELAorICAgIDB4RTYsIDB4MTQsIDB4RjAsIDB4QTUsIDB4RjIsIDB4NUUsIDB4QTAsIDB4RTIsIDB4RDQsIDB4M0UsIDB4RkEsIDB4MDAsIDB4RDQsIDB4NUQsIDB4MDEsIDB4NUQsCisgICAgMHg1NSwgMHhGOSwgMHhBNCwgMHhDOCwgMHg0OSwgMHg1OSwgMHgxNiwgMHhGQSwgMHhDNSwgMHg1MSwgMHgxNSwgMHhEQywgMHhDMywgMHgxRSwgMHhENSwgMHhFRCwKKyAgICAweEU0LCAweEJCLCAweDE0LCAweEEwLCAweEYzLCAweDY4LCAweEQ1LCAweDYwLCAweEUwLCAweDQyLCAweEI0LCAweDMwLCAweDgyLCAweEQ4LCAweEQ2LCAweDNFLAorICAgIDB4RUMsIDB4RTcsIDB4QUQsIDB4M0MsIDB4NjksIDB4NjEsIDB4MjgsIDB4OEUsIDB4OEMsIDB4MDQsIDB4RjEsIDB4QTAsIDB4MUUsIDB4QkQsIDB4REYsIDB4QkUsCisgICAgMHhGRCwgMHhBRSwgMHhEOSwgMHg2NSwgMHg2NiwgMHgzMywgMHgwRiwgMHhCMCwgMHg4RCwgMHhFOSwgMHg0NiwgMHhGRCwgMHhENSwgMHhGOSwgMHgyMCwgMHgxOCwKKyAgICAweDdGLCAweEY3LCAweDIwLCAweDNGLCAweEUyLCAweDdBLCAweDM4LCAweDE0LCAweEJCLCAweDFBLCAweEMzLCAweENBLCAweEFCLCAweDU2LCAweDVCLCAweDE3LAorICAgIDB4MUIsIDB4MUEsIDB4QzMsIDB4MDAsIDB4OTcsIDB4NjksIDB4OUIsIDB4NUQsIDB4QkQsIDB4NEQsIDB4MjIsIDB4NzcsIDB4MzYsIDB4NjUsIDB4RDcsIDB4MDQsCisgICAgMHg4RiwgMHg1QiwgMHg3NiwgMHhCMiwgMHg2QiwgMHgyMywgMHg1MiwgMHhBMiwgMHgwMiwgMHhDNCwgMHg5OCwgMHgxNiwgMHhFMywgMHhGNywgMHgyQiwgMHhGQywKKyAgICAweDM2LCAweDk0LCAweDkxLCAweDBCLCAweDBCLCAweDgyLCAweDdGLCAweEM2LCAweDcwLCAweDhDLCAweDgwLCAweDM2LCAweDQ4LCAweDRGLCAweDhDLCAweDE1LAorICAgIDB4QjksIDB4MDYsIDB4NEMsIDB4MEIsIDB4NzksIDB4QTAsIDB4MzcsIDB4N0QsIDB4MTgsIDB4QkIsIDB4ODMsIDB4OEMsIDB4QTYsIDB4RjAsIDB4MDIsIDB4N0QsCisgICAgMHhBRSwgMHhEMSwgMHg4RCwgMHhGNywgMHgxMSwgMHgxNCwgMHg2OSwgMHgyRCwgMHhFRSwgMHg4NSwgMHg0NywgMHg1MiwgMHg0NCwgMHg5NSwgMHhEOCwgMHg4QiwKKyAgICAweDkxLCAweDA0LCAweDFBLCAweDBELCAweDBBLCAweEU5LCAweDYxLCAweDM1LCAweDE0LCAweEI3LCAweDNELCAweDc3LCAweEQzLCAweDdCLCAweDk3LCAweEUyLAorICAgIDB4NTQsIDB4MzcsIDB4Q0QsIDB4NzcsIDB4NDksIDB4NTIsIDB4MkIsIDB4RjUsIDB4MEEsIDB4QTIsIDB4Q0QsIDB4OUEsIDB4NTEsIDB4MTcsIDB4N0YsIDB4RDIsCisgICAgMHg5RCwgMHg2NSwgMHgwRiwgMHgwRiwgMHg1NCwgMHhFQywgMHgwMCwgMHg3MSwgMHg4OSwgMHg1QiwgMHhBQywgMHg3QywgMHg1OSwgMHg1NSwgMHhBMywgMHhFQSwKKyAgICAweDI3LCAweEYxLCAweDQ3LCAweDc5LCAweEY1LCAweERELCAweDBGLCAweEQ5LCAweDE0LCAweERCLCAweDAwLCAweEUxLCAweEEyLCAweDRELCAweDkyLCAweERBLAorICAgIDB4MEIsIDB4RUYsIDB4NDEsIDB4MjksIDB4MUUsIDB4RkIsIDB4MzcsIDB4QUMsIDB4MDgsIDB4NUQsIDB4QjcsIDB4NzUsIDB4N0IsIDB4NjMsIDB4QzksIDB4NDcsCisgICAgMHgwQiwgMHgxMywgMHg2NiwgMHgzOSwgMHhBMSwgMHg1OCwgMHg4MiwgMHhBMywgMHg4RCwgMHg4QiwgMHhBRiwgMHhGOSwgMHgyMSwgMHg4NCwgMHhFMSwgMHhCRCwKKyAgICAweDQ5LCAweEQ0LCAweEY0LCAweDQzLCAweDdGLCAweDlBLCAweENGLCAweDU5LCAweEYyLCAweEE1LCAweDJDLCAweDRELCAweDg1LCAweEI1LCAweEZELCAweDk1LAorICAgIDB4RTgsIDB4NDUsIDB4RDIsIDB4RTgsIDB4OEEsIDB4RTQsIDB4QTksIDB4NDEsIDB4NkIsIDB4OTksIDB4QkUsIDB4MEQsIDB4RjEsIDB4QjIsIDB4NTcsIDB4NjEsCisgICAgMHg3QiwgMHg2RCwgMHgwOSwgMHg1MywgMHgyNiwgMHhDQywgMHgyOCwgMHgyQywgMHg4MiwgMHgwOCwgMHhGQiwgMHhEQywgMHhBOSwgMHg4QSwgMHhFQywgMHg3NiwKKyAgICAweEUzLCAweDRELCAweERFLCAweEFDLCAweDNFLCAweDU0LCAweEFDLCAweEM3LCAweDUwLCAweDkyLCAweDhBLCAweDE5LCAweDNBLCAweEYzLCAweEZBLCAweEYwLAorICAgIDB4QzEsIDB4N0UsIDB4RUUsIDB4NjksIDB4MEUsIDB4QjUsIDB4MzUsIDB4OUQsIDB4OTMsIDB4NEIsIDB4QUUsIDB4QTksIDB4OTcsIDB4MDksIDB4MzQsIDB4OUIsCisgICAgMHg4RSwgMHgzQywgMHhCNCwgMHgyQSwgMHgxRCwgMHg1OSwgMHhGOSwgMHgxQywgMHg4MiwgMHgyNSwgMHgxNCwgMHhDQiwgMHhDNCwgMHg4OSwgMHhBNSwgMHhENSwKKyAgICAweDYyLCAweEQ5LCAweEM0LCAweEQ1LCAweEZGLCAweEY1LCAweEZGLCAweDlBLCAweEE4LCAweDA1LCAweDk1LCAweEUxLCAweEFDLCAweEFGLCAweDYxLCAweDFCLAorICAgIDB4NTcsIDB4NzcsIDB4QjAsIDB4MkMsIDB4NjgsIDB4RTYsIDB4M0YsIDB4MUIsIDB4NjMsIDB4RkYsIDB4QzMsIDB4MzMsIDB4MDQsIDB4OEEsIDB4MEIsIDB4NTQsCisgICAgMHg3RCwgMHgzNiwgMHhBRSwgMHhBRSwgMHgzRiwgMHhEMywgMHhBNiwgMHg4MywgMHg2NSwgMHhBNCwgMHhGRSwgMHgzQywgMHgyOSwgMHhEQiwgMHg4MSwgMHg5OSwKKyAgICAweEY5LCAweDdBLCAweDlCLCAweEJCLCAweEE3LCAweDg2LCAweDZCLCAweERGLCAweDY3LCAweDA4LCAweDIzLCAweDg4LCAweDYyLCAweEUzLCAweDA4LCAweDVDLAorICAgIDB4MjMsIDB4NzMsIDB4MEMsIDB4MDEsIDB4OTYsIDB4QjAsIDB4OTksIDB4QzAsIDB4OEQsIDB4RDUsIDB4REIsIDB4Q0UsIDB4NEMsIDB4MUYsIDB4RTQsIDB4RkQsCisgICAgMHgxOSwgMHgyRSwgMHhENywgMHgyMCwgMHg4MSwgMHg0RSwgMHgyMiwgMHg0RSwgMHhBRCwgMHgwMiwgMHg4NiwgMHgxQywgMHhFRiwgMHgyQywgMHhFQywgMHhDRiwKKyAgICAweEQwLCAweDdFLCAweEZCLCAweDAyLCAweEUxLCAweEUxLCAweEZELCAweEU1LCAweEI5LCAweEJDLCAweEU1LCAweDEyLCAweEEzLCAweENBLCAweEU4LCAweDg4LAorICAgIDB4NDUsIDB4MDMsIDB4MTUsIDB4MEUsIDB4QTAsIDB4QzIsIDB4MUEsIDB4QjcsIDB4MTMsIDB4QjMsIDB4NTIsIDB4M0MsIDB4ODcsIDB4MTgsIDB4OTUsIDB4M0YsCisgICAgMHg1NiwgMHg5QywgMHgzMSwgMHg1MiwgMHgyQSwgMHg1RCwgMHg1NywgMHhEMywgMHhBMSwgMHg0MSwgMHgyQiwgMHg4MiwgMHgxMSwgMHgyMywgMHhDMiwgMHg0RCwKKyAgICAweEU4LCAweEU1LCAweEMzLCAweEJBLCAweDU5LCAweDZCLCAweDMyLCAweEJFLCAweDIyLCAweDM3LCAweEI4LCAweEM5LCAweDExLCAweDg4LCAweDVDLCAweDdFLAorICAgIDB4OTQsIDB4NUYsIDB4REEsIDB4QjUsIDB4QzUsIDB4QUIsIDB4QTgsIDB4RDcsIDB4OTgsIDB4MkUsIDB4NEEsIDB4QkMsIDB4NUIsIDB4RDAsIDB4N0QsIDB4M0UsCisgICAgMHhBMywgMHg0MywgMHhFOCwgMHhBQiwgMHg5RiwgMHhBNywgMHg0NCwgMHgwMiwgMHgwNywgMHhFOSwgMHg3OCwgMHg1MCwgMHhCNCwgMHgwQSwgMHhFOSwgMHg1RCwKKyAgICAweERCLCAweDIzLCAweDFFLCAweDFELCAweDBBLCAweENCLCAweDk1LCAweEUyLCAweERCLCAweENDLCAweDQyLCAweDQwLCAweDUyLCAweDZDLCAweDVDLCAweEY2LAorICAgIDB4QkQsIDB4ODAsIDB4NTEsIDB4NEMsIDB4NTYsIDB4NTQsIDB4QjYsIDB4QzksIDB4QjIsIDB4OUYsIDB4NzAsIDB4NjYsIDB4RTYsIDB4NDgsIDB4RDUsIDB4QzMsCisgICAgMHg3RCwgMHg5NCwgMHg3MywgMHhBQSwgMHg1MCwgMHgxMCwgMHgzRCwgMHg1MywgMHgwNCwgMHg4NSwgMHhDMSwgMHg0RSwgMHg3NywgMHgzQSwgMHg5MCwgMHgzQiwKKyAgICAweEJBLCAweDlGLCAweDM3LCAweDgwLCAweERBLCAweEYyLCAweDBCLCAweEIxLCAweEJDLCAweDMwLCAweDk0LCAweEM2LCAweEI3LCAweDM5LCAweDhELCAweERELAorICAgIDB4MzIsIDB4QTIsIDB4NzEsIDB4ODMsIDB4NzQsIDB4RTgsIDB4MUYsIDB4QjYsIDB4OTIsIDB4RDUsIDB4QkUsIDB4RTYsIDB4NEIsIDB4OUYsIDB4QzUsIDB4NDAsCisgICAgMHg1QSwgMHgyMywgMHhEQiwgMHgzQywgMHhCMCwgMHhBRiwgMHgxNCwgMHg0NywgMHg5RiwgMHg2NiwgMHg1MywgMHgwRCwgMHgzRSwgMHg0MywgMHg1RCwgMHhGMywKKyAgICAweEU2LCAweDE4LCAweDAzLCAweDQ3LCAweEUzLCAweDFBLCAweEY1LCAweDk2LCAweDUzLCAweENBLCAweEZFLCAweDFCLCAweDA3LCAweDg4LCAweEJELCAweDZELAorICAgIDB4RTQsIDB4RjEsIDB4ODYsIDB4NDMsIDB4RUUsIDB4MDksIDB4NkUsIDB4M0EsIDB4ODEsIDB4QjcsIDB4NkIsIDB4NTYsIDB4NkIsIDB4MDQsIDB4MjUsIDB4NTcsCisgICAgMHg3OSwgMHg1RSwgMHhEMywgMHhBQiwgMHhBMSwgMHhCQiwgMHg2MCwgMHhCOCwgMHg0QSwgMHhEQiwgMHgwOSwgMHhGQSwgMHgzRiwgMHgxQSwgMHgzRiwgMHgwNSwKKyAgICAweDFBLCAweERBLCAweEZBLCAweDVFLCAweEI4LCAweDU1LCAweERCLCAweERDLCAweEQ3LCAweDBBLCAweDEwLCAweDg5LCAweEFGLCAweDcwLCAweEEzLCAweDcwLAorICAgIDB4QzYsIDB4REEsIDB4QjYsIDB4OEMsIDB4MDQsIDB4MjcsIDB4RDgsIDB4RUYsIDB4NDQsIDB4NTUsIDB4OEYsIDB4MDcsIDB4QUYsIDB4RDUsIDB4MjIsIDB4REEsCisgICAgMHgzRCwgMHg2NywgMHg5QywgMHhDOCwgMHhFOCwgMHgyRCwgMHhFMSwgMHhGNywgMHgyRCwgMHhGRSwgMHhGRSwgMHhBOSwgMHgyNywgMHg0MywgMHhBQSwgMHhCOCwKKyAgICAweDgxLCAweDc4LCAweEJDLCAweDdGLCAweDc3LCAweEJDLCAweEM4LCAweDgzLCAweDBELCAweEY4LCAweDhELCAweDgxLCAweEQ4LCAweEQ0LCAweDFFLCAweEI5LAorICAgIDB4NUMsIDB4OTEsIDB4MTksIDB4NDEsIDB4MTMsIDB4QTUsIDB4NDQsIDB4QzgsIDB4NjAsIDB4MUYsIDB4MDgsIDB4REYsIDB4NUUsIDB4RkEsIDB4QjEsIDB4RUEsCisgICAgMHg0NiwgMHgwMSwgMHgxRSwgMHhFMiwgMHg2RCwgMHg2MywgMHhGOCwgMHg3RSwgMHhENiwgMHhCQiwgMHgxNywgMHhDOSwgMHg4MCwgMHg3NiwgMHg0MCwgMHg4NywKKyAgICAweENGLCAweDFBLCAweDY5LCAweDUzLCAweDQwLCAweEE0LCAweDQ0LCAweEExLCAweDU2LCAweEQxLCAweDI4LCAweDVGLCAweDYwLCAweDEyLCAweDdBLCAweEJELAorICAgIDB4MDIsIDB4RTMsIDB4RTEsIDB4RkYsIDB4QTQsIDB4Q0IsIDB4QTAsIDB4MUUsIDB4REMsIDB4NUMsIDB4NkMsIDB4REIsIDB4RjcsIDB4MDUsIDB4NTUsIDB4QzAsCisgICAgMHhFNSwgMHhBQiwgMHg1NywgMHhGOCwgMHhCNCwgMHhGRiwgMHgyMCwgMHhEOSwgMHgzRCwgMHhFQiwgMHgwMiwgMHgxQywgMHg2NywgMHgzMSwgMHhDNywgMHhCNCwKKyAgICAweDJELCAweDVDLCAweDRBLCAweDlGLCAweEYxLCAweDE4LCAweDk3LCAweDI3LCAweDVCLCAweDFBLCAweDcyLCAweERELCAweDZBLCAweDhFLCAweDI5LCAweEJCLAorICAgIDB4MjYsIDB4RTgsIDB4M0UsIDB4Q0IsIDB4RjYsIDB4NDgsIDB4MTksIDB4QzEsIDB4RDIsIDB4MTgsIDB4MjgsIDB4OTIsIDB4Q0EsIDB4MzAsIDB4RTYsIDB4NTksCisgICAgMHhCQiwgMHgzNCwgMHhFNCwgMHg0QywgMHgzQiwgMHhEOCwgMHg3RCwgMHgwNiwgMHhBMCwgMHhEOCwgMHg4NSwgMHhENiwgMHgwNiwgMHgxRiwgMHhFOSwgMHgwNCwKKyAgICAweDI3LCAweDc4LCAweDhGLCAweENBLCAweEZDLCAweDU2LCAweDY4LCAweEU0LCAweEE1LCAweDI1LCAweEUwLCAweDRDLCAweEEwLCAweEJDLCAweDM2LCAweEVELAorICAgIDB4QkYsIDB4QUQsIDB4QzMsIDB4QTAsIDB4MkUsIDB4ODMsIDB4QjMsIDB4NzksIDB4ODAsIDB4NEYsIDB4QzIsIDB4ODAsIDB4OTMsIDB4QzcsIDB4QzQsIDB4OEMsCisgICAgMHhGRSwgMHg2NCwgMHhFQywgMHhGRSwgMHgyNCwgMHhGMSwgMHg1QywgMHhDNSwgMHg1MSwgMHg1MSwgMHgxMywgMHhDMCwgMHg1RSwgMHg2MSwgMHg2MSwgMHg1RCwKKyAgICAweDVDLCAweEFCLCAweDUwLCAweDcyLCAweDc5LCAweDkxLCAweEEzLCAweEI2LCAweDE3LCAweDhELCAweDJGLCAweEI1LCAweEE3LCAweDNCLCAweDE5LCAweDhBLAorICAgIDB4NUUsIDB4MTQsIDB4MTMsIDB4RTQsIDB4REMsIDB4OEUsIDB4OTIsIDB4RTEsIDB4NTEsIDB4RkYsIDB4OTgsIDB4QzUsIDB4QUMsIDB4QTIsIDB4NUYsIDB4QzAsCisgICAgMHhBNSwgMHg0NiwgMHg3NywgMHg2NCwgMHg5RiwgMHhEOCwgMHg4MiwgMHgwRCwgMHg1NCwgMHgzQSwgMHhENywgMHg3NywgMHhDOSwgMHhCRSwgMHgwRSwgMHhGNiwKKyAgICAweDA1LCAweEYwLCAweDE3LCAweEYxLCAweDFFLCAweEJGLCAweDAwLCAweDU3LCAweEFFLCAweEFBLCAweEU4LCAweEIzLCAweEVFLCAweEY4LCAweDJCLCAweDRBLAorICAgIDB4MDIsIDB4NzksIDB4QzAsIDB4M0MsIDB4RjgsIDB4N0EsIDB4NTYsIDB4QTgsIDB4NjksIDB4RkYsIDB4NjQsIDB4N0MsIDB4MDIsIDB4NzYsIDB4MjYsIDB4OTMsCisgICAgMHg5NSwgMHgwMiwgMHhEOSwgMHgxRSwgMHhBNiwgMHg2QSwgMHg2OSwgMHgzQywgMHgwMCwgMHg3OCwgMHg4RCwgMHg3MSwgMHg3QywgMHg4MywgMHhEMCwgMHgzOCwKKyAgICAweEQ3LCAweDY1LCAweDk0LCAweEJELCAweEQzLCAweDdCLCAweEYwLCAweEMzLCAweDI2LCAweDk2LCAweDI3LCAweDIzLCAweENBLCAweEMwLCAweDMzLCAweDc0LAorICAgIDB4RTEsIDB4NkQsIDB4M0UsIDB4NjEsIDB4RjgsIDB4RjgsIDB4NDksIDB4MEIsIDB4NzksIDB4OTAsIDB4OTAsIDB4Q0EsIDB4RDQsIDB4NUIsIDB4N0QsIDB4OUIsCisgICAgMHg3NSwgMHhGOSwgMHgwOCwgMHgzNiwgMHg4QiwgMHgyRSwgMHhBNSwgMHg1MCwgMHhCOCwgMHg3RSwgMHgzQSwgMHhFRCwgMHgwOSwgMHhFRCwgMHgwQywgMHgxQywKKyAgICAweEI4LCAweERELCAweDVFLCAweDEzLCAweDBBLCAweDBCLCAweDVDLCAweEZCLCAweDc1LCAweDQxLCAweDk4LCAweDJCLCAweEM5LCAweEFCLCAweEM5LCAweDE0LAorICAgIDB4REEsIDB4RkUsIDB4MzQsIDB4NzIsIDB4QjksIDB4N0MsIDB4ODYsIDB4ODksIDB4MEUsIDB4MkUsIDB4NTgsIDB4QzMsIDB4QzEsIDB4RDUsIDB4MkIsIDB4NjYsCisgICAgMHgyNiwgMHhEMiwgMHhCRiwgMHhCRiwgMHg5NiwgMHgzMywgMHgzMCwgMHhDRSwgMHg1RCwgMHg4NywgMHgwMiwgMHhFMiwgMHgyMCwgMHg3MSwgMHhFQywgMHgyNCwKKyAgICAweEFELCAweDQwLCAweEZFLCAweEVGLCAweDUyLCAweEQxLCAweDg0LCAweDcyLCAweENELCAweENELCAweDNDLCAweERCLCAweEE3LCAweDk0LCAweDBGLCAweEFELAorICAgIDB4NEMsIDB4NjcsIDB4M0YsIDB4MTMsIDB4MTYsIDB4NEIsIDB4NkIsIDB4MjYsIDB4OTIsIDB4M0YsIDB4QjIsIDB4QUUsIDB4QTQsIDB4NUYsIDB4QkIsIDB4NjUsCisgICAgMHgwQiwgMHgxMywgMHhFMiwgMHhCOSwgMHg4NywgMHhBNywgMHhCMiwgMHgxNCwgMHhDMCwgMHgyQSwgMHg2NiwgMHg1QiwgMHg5OSwgMHg2QywgMHhDNiwgMHg5OCwKKyAgICAweEMyLCAweEI2LCAweDFCLCAweDA1LCAweDE0LCAweEQ2LCAweEM5LCAweDVCLCAweDMzLCAweEUxLCAweDE0LCAweDM1LCAweDgyLCAweEY5LCAweDUwLCAweEY2LAorICAgIDB4RkQsIDB4QTAsIDB4MTUsIDB4NkQsIDB4QjEsIDB4NTksIDB4NEEsIDB4NTEsIDB4OUQsIDB4ODEsIDB4RDQsIDB4MUMsIDB4RTIsIDB4MzEsIDB4REQsIDB4RDAsCisgICAgMHhGRiwgMHhDOCwgMHg5QSwgMHg3QiwgMHg5RiwgMHhFRCwgMHhENCwgMHgzMywgMHhERiwgMHhCQSwgMHg1OCwgMHg5RSwgMHgzNiwgMHhDMSwgMHg2OSwgMHhBMiwKKyAgICAweEUyLCAweDkzLCAweEM3LCAweDIxLCAweDhELCAweDA3LCAweEZELCAweEEyLCAweDM3LCAweEE5LCAweERDLCAweDI4LCAweDdGLCAweDE2LCAweEExLCAweDBFLAorICAgIDB4MDAsIDB4NUUsIDB4MEQsIDB4MDEsIDB4Q0IsIDB4MzYsIDB4OTcsIDB4RDUsIDB4QzEsIDB4RjIsIDB4OTMsIDB4QzcsIDB4OEEsIDB4QUUsIDB4QTcsIDB4RTYsCisgICAgMHhCRSwgMHgwQiwgMHhBOCwgMHgzRSwgMHhBMiwgMHgyNiwgMHhERiwgMHg2MiwgMHgxMywgMHhFRiwgMHhCOCwgMHg5QSwgMHhEQSwgMHhENCwgMHg0RCwgMHhEMCwKKyAgICAweDc4LCAweDAyLCAweDU0LCAweDc4LCAweEVFLCAweDVBLCAweDZGLCAweEFCLCAweEQyLCAweDZELCAweDk0LCAweEJDLCAweEU5LCAweEQzLCAweDcxLCAweDNCLAorICAgIDB4NTksIDB4NzMsIDB4QkUsIDB4MzIsIDB4N0UsIDB4N0MsIDB4NjksIDB4NUMsIDB4RkMsIDB4QTMsIDB4ODYsIDB4ODYsIDB4NTksIDB4ODMsIDB4MzQsIDB4RDgsCisgICAgMHhDOSwgMHg2NiwgMHg4QywgMHhFQiwgMHg1NiwgMHhFMCwgMHhEMCwgMHhDMiwgMHhEMSwgMHgwOCwgMHgzNSwgMHhBQiwgMHg2RiwgMHgwNCwgMHhBQSwgMHhCNCwKKyAgICAweDVDLCAweDRELCAweDQxLCAweDcxLCAweDBBLCAweEI4LCAweDNFLCAweDhDLCAweEFGLCAweDczLCAweEYwLCAweEY3LCAweEQyLCAweDI4LCAweDJBLCAweDIwLAorICAgIDB4RDYsIDB4QzYsIDB4MjEsIDB4MkUsIDB4QjgsIDB4RjMsIDB4REUsIDB4ODQsIDB4RkQsIDB4MUMsIDB4MTAsIDB4MzYsIDB4M0EsIDB4M0IsIDB4MjcsIDB4OTcsCisgICAgMHg5MywgMHhCQiwgMHgwRiwgMHhCRSwgMHg0RSwgMHhENCwgMHg0NCwgMHhBMSwgMHgzRiwgMHg1MywgMHgzMCwgMHg2OCwgMHg1OCwgMHhBNSwgMHhGOSwgMHgyNywKKyAgICAweEY1LCAweEZGLCAweDNGLCAweEMxLCAweDlELCAweDg5LCAweDU3LCAweEU4LCAweEY5LCAweDNFLCAweDY2LCAweDgyLCAweDU3LCAweDdCLCAweDAwLCAweEQ2LAorICAgIDB4NDYsIDB4NkUsIDB4NDIsIDB4OTgsIDB4NkQsIDB4Q0IsIDB4OTksIDB4NzEsIDB4NzQsIDB4QjksIDB4MkEsIDB4NjUsIDB4NTQsIDB4Q0UsIDB4REQsIDB4MTAsCisgICAgMHhEMywgMHhCQiwgMHhBNiwgMHg0RCwgMHhDQSwgMHgzQiwgMHg0RSwgMHg0RCwgMHg1QywgMHhGOCwgMHg4MCwgMHg0NSwgMHhFRCwgMHgwRCwgMHhCQiwgMHgxRiwKKyAgICAweEM4LCAweERELCAweDY5LCAweDMzLCAweDEzLCAweDZELCAweDQ3LCAweDNGLCAweDI5LCAweDUxLCAweDFDLCAweEY5LCAweEQ5LCAweDk1LCAweDY0LCAweDI5LAorICAgIDB4NUMsIDB4RUMsIDB4N0EsIDB4OEIsIDB4MTQsIDB4MDcsIDB4QTAsIDB4NDMsIDB4MUUsIDB4NUIsIDB4N0EsIDB4NUUsIDB4REEsIDB4N0IsIDB4QTcsIDB4QzksCisgICAgMHg3QiwgMHhEQywgMHg3MiwgMHhGNSwgMHg5MCwgMHhGMiwgMHg3RCwgMHhGOSwgMHg1OSwgMHhFMiwgMHhFMywgMHg3NCwgMHhFRSwgMHg4QiwgMHhCQywgMHg4NywKKyAgICAweDE1LCAweDI0LCAweDZELCAweDVDLCAweDM5LCAweEE2LCAweEUyLCAweDFFLCAweEE5LCAweDRELCAweEI3LCAweDM5LCAweDM5LCAweDc1LCAweDUwLCAweEY5LAorICAgIDB4MDUsIDB4ODgsIDB4RDIsIDB4QjUsIDB4N0MsIDB4REIsIDB4OUEsIDB4NEQsIDB4NzUsIDB4NTIsIDB4QUIsIDB4NDUsIDB4MkYsIDB4MEIsIDB4NzcsIDB4MTEsCisgICAgMHhFRiwgMHhFNiwgMHgyMiwgMHg4NiwgMHhBOSwgMHhCNywgMHgxNCwgMHgwOCwgMHhBOSwgMHhCMiwgMHg1MiwgMHg1NCwgMHgyRiwgMHgwMSwgMHgzMiwgMHg4OSwKKyAgICAweDNDLCAweEJFLCAweEMyLCAweEY2LCAweDdELCAweDM0LCAweEJFLCAweEQxLCAweERCLCAweEUzLCAweDc0LCAweDZGLCAweDlCLCAweDU5LCAweEY5LCAweDg2LAorICAgIDB4MEYsIDB4RTEsIDB4QTgsIDB4N0YsIDB4NjQsIDB4MkQsIDB4RTAsIDB4NzMsIDB4OUEsIDB4Q0YsIDB4QjMsIDB4RjcsIDB4N0MsIDB4N0QsIDB4RTcsIDB4RjQsCisgICAgMHhGQiwgMHg3MCwgMHhGNCwgMHhGRiwgMHg4MiwgMHgxMywgMHgzMSwgMHg0NywgMHg2NiwgMHhBQywgMHg5MywgMHgzQywgMHg1RSwgMHg1OSwgMHgxQiwgMHhFRSwKKyAgICAweEVFLCAweDYzLCAweDM5LCAweEY2LCAweEVELCAweDk3LCAweEFDLCAweDE3LCAweDYzLCAweDkwLCAweEYyLCAweDk5LCAweENCLCAweEMxLCAweDhDLCAweDM3LAorICAgIDB4NDIsIDB4RTEsIDB4NTgsIDB4RjEsIDB4OTEsIDB4Q0EsIDB4OUUsIDB4NDMsIDB4MDEsIDB4MTcsIDB4QTQsIDB4RDUsIDB4REIsIDB4NDgsIDB4MjYsIDB4MkIsCisgICAgMHhCOSwgMHg5MSwgMHhFMCwgMHg0MiwgMHhDMCwgMHhCMiwgMHg5QywgMHg1NSwgMHhENiwgMHgwQiwgMHhGMiwgMHhDNCwgMHgwMywgMHgzQiwgMHg4QiwgMHhEMiwKKyAgICAweDQyLCAweEZCLCAweERELCAweERELCAweEI4LCAweDIyLCAweDAxLCAweDEwLCAweEM0LCAweEU5LCAweEE4LCAweDg4LCAweEE0LCAweDk4LCAweDVBLCAweEJGLAorICAgIDB4MjAsIDB4RUIsIDB4NkIsIDB4MEQsIDB4NkMsIDB4QjUsIDB4MkMsIDB4ODIsIDB4QTgsIDB4QzUsIDB4RTQsIDB4QzIsIDB4MzgsIDB4NzcsIDB4NUUsIDB4NDMsCisgICAgMHg3MywgMHg3NSwgMHgwMywgMHg2RCwgMHhEQywgMHhEMywgMHhFNCwgMHgwMSwgMHhGRCwgMHg1QSwgMHgyNSwgMHhENywgMHhGMiwgMHg3RiwgMHhDNywgMHhGNywKKyAgICAweDUzLCAweDk0LCAweDMyLCAweDExLCAweEExLCAweDcwLCAweDQ2LCAweDYxLCAweDMzLCAweDM5LCAweDczLCAweEZCLCAweEI5LCAweDkzLCAweEQxLCAweDU5LAorICAgIDB4OTIsIDB4RTgsIDB4Q0IsIDB4NEEsIDB4MTcsIDB4QjksIDB4QjgsIDB4NzUsIDB4QTgsIDB4Q0MsIDB4MTQsIDB4RDksIDB4RDYsIDB4NEQsIDB4RjcsIDB4NzEsCisgICAgMHhCNiwgMHgzRCwgMHhEQywgMHg1NiwgMHgxRSwgMHg1RCwgMHg1MywgMHg4MywgMHhFRSwgMHhFQSwgMHg1QywgMHhDRSwgMHhBMCwgMHhEQywgMHg3MywgMHg0RCwKKyAgICAweEU1LCAweDZELCAweDFELCAweDhDLCAweDZCLCAweEUxLCAweEQ5LCAweDI3LCAweEFFLCAweDcwLCAweDYxLCAweEVFLCAweDhDLCAweDNCLCAweDgzLCAweDZBLAorICAgIDB4OTQsIDB4NzAsIDB4MjgsIDB4QjEsIDB4ODMsIDB4MDMsIDB4NkUsIDB4MEEsIDB4RTksIDB4QTcsIDB4MTUsIDB4NDIsIDB4NkYsIDB4MTEsIDB4OTUsIDB4MUQsCisgICAgMHgwNSwgMHg2MywgMHgyMCwgMHhBOCwgMHhGQSwgMHg5QSwgMHg0RiwgMHg5QiwgMHhDRCwgMHhBRiwgMHhEQSwgMHhBMiwgMHg3NiwgMHgxMiwgMHg0MSwgMHhCMSwKKyAgICAweDM4LCAweENDLCAweDQzLCAweEZCLCAweDg4LCAweEI3LCAweEI0LCAweEFCLCAweEMwLCAweDYwLCAweDEzLCAweEMzLCAweDhELCAweDk4LCAweDY3LCAweDUxLAorICAgIDB4MzUsIDB4Q0UsIDB4OTEsIDB4OEQsIDB4RjYsIDB4MDYsIDB4QTEsIDB4RTUsIDB4QjMsIDB4MzYsIDB4MUMsIDB4RTIsIDB4RUEsIDB4NTgsIDB4NzUsIDB4N0EsCisgICAgMHhEMSwgMHg1QSwgMHhGMiwgMHhFNiwgMHg5NywgMHgxNywgMHg4MiwgMHgwNywgMHg4RCwgMHhCRCwgMHg3MywgMHhGMCwgMHgyQiwgMHgyMywgMHgzNywgMHhEQSwKKyAgICAweEY3LCAweEUwLCAweENFLCAweEYwLCAweEZCLCAweDUyLCAweEE1LCAweDRFLCAweDYyLCAweEY3LCAweERGLCAweEM2LCAweDA3LCAweDU2LCAweEYwLCAweDRCLAorICAgIDB4NzUsIDB4RDIsIDB4MDUsIDB4QzIsIDB4RDgsIDB4RTIsIDB4NjAsIDB4REUsIDB4MDIsIDB4MjEsIDB4NjUsIDB4NjgsIDB4MzgsIDB4NUUsIDB4QTQsIDB4NEEsCisgICAgMHg5MSwgMHg1MSwgMHgxMiwgMHg3MSwgMHhBNCwgMHgzMiwgMHg1MiwgMHhGRCwgMHgzNCwgMHg1QywgMHhDNCwgMHgwRCwgMHgzOCwgMHg2NiwgMHgyMiwgMHhDNSwKKyAgICAweEQ1LCAweDI4LCAweEQyLCAweEIyLCAweDRBLCAweDc2LCAweDlBLCAweDA0LCAweEFELCAweDkwLCAweDM0LCAweENGLCAweDQ0LCAweDU2LCAweEYwLCAweDEwLAorICAgIDB4MDQsIDB4MTYsIDB4MjUsIDB4M0MsIDB4MDUsIDB4NkYsIDB4M0QsIDB4QkQsIDB4REMsIDB4NTYsIDB4MTUsIDB4RTgsIDB4NTEsIDB4QzQsIDB4QjMsIDB4N0UsCisgICAgMHhCNiwgMHhCQywgMHgwMCwgMHgyMCwgMHhFQSwgMHgyMSwgMHg5RCwgMHg5QiwgMHg4RiwgMHhCQiwgMHg3NiwgMHg3MCwgMHgxNiwgMHg0NSwgMHgyMywgMHhERSwKKyAgICAweEMzLCAweEE1LCAweEI3LCAweDE4LCAweDJFLCAweDkzLCAweDVCLCAweDY1LCAweDUzLCAweDM1LCAweERDLCAweEVELCAweDU1LCAweDAxLCAweDg5LCAweEE2LAorICAgIDB4MkEsIDB4MjYsIDB4REUsIDB4MzEsIDB4NjgsIDB4NkQsIDB4NjUsIDB4QTMsIDB4NDAsIDB4QjAsIDB4QzksIDB4QzksIDB4ODMsIDB4RUYsIDB4QjUsIDB4OTUsCisgICAgMHg5OCwgMHhDNSwgMHhENiwgMHgzNSwgMHhFNywgMHgyNSwgMHg3OSwgMHg1RSwgMHhGRSwgMHg1RiwgMHg1RiwgMHgzMiwgMHg1RiwgMHhGOCwgMHgxOSwgMHg0MSwKKyAgICAweEI4LCAweDk3LCAweDczLCAweEVFLCAweEFDLCAweDZBLCAweDhGLCAweDdDLCAweDQ4LCAweEVDLCAweDAyLCAweDQ4LCAweDE3LCAweDBDLCAweDYwLCAweDg3LAorICAgIDB4OUEsIDB4NEUsIDB4QzUsIDB4QUUsIDB4M0MsIDB4QTUsIDB4QkUsIDB4MTgsIDB4MzQsIDB4QzYsIDB4REYsIDB4NzksIDB4MUIsIDB4M0QsIDB4NEUsIDB4RUMsCisgICAgMHg5OCwgMHhFNSwgMHg1OSwgMHgxQiwgMHhBQywgMHhCRiwgMHhDMywgMHg0QSwgMHhGNCwgMHg4NCwgMHg5NywgMHgyMSwgMHhDQSwgMHhBMiwgMHhCMywgMHhGMywKKyAgICAweEU0LCAweDJCLCAweDc4LCAweEI5LCAweDUxLCAweDQzLCAweDJBLCAweDFDLCAweDQ3LCAweEMxLCAweDU0LCAweDNCLCAweDBBLCAweDc1LCAweDE2LCAweDU4LAorICAgIDB4NkUsIDB4N0IsIDB4NzMsIDB4QkYsIDB4QUQsIDB4RUEsIDB4RDYsIDB4ODYsIDB4RjksIDB4MUIsIDB4MDYsIDB4NUIsIDB4MUMsIDB4MzQsIDB4QzAsIDB4RUUsCisgICAgMHg0MSwgMHgwNSwgMHhCMSwgMHg4RCwgMHhFNiwgMHgyQiwgMHg2MSwgMHhCMSwgMHgyNCwgMHgxNywgMHg4OSwgMHhCMSwgMHg0MywgMHhDRiwgMHhBRSwgMHhDMCwKKyAgICAweDIxLCAweDc2LCAweDIzLCAweEM3LCAweEE1LCAweEU3LCAweERFLCAweDQ0LCAweDlGLCAweDEyLCAweDhCLCAweDZDLCAweEJDLCAweDE5LCAweDgyLCAweENBLAorICAgIDB4MjMsIDB4MzksIDB4OUUsIDB4RUMsIDB4NEUsIDB4Q0UsIDB4MEYsIDB4MDEsIDB4NTEsIDB4MEQsIDB4RkUsIDB4NjIsIDB4OUUsIDB4ODAsIDB4RjQsIDB4NjksCisgICAgMHhCMywgMHg3QSwgMHhCQywgMHg2MywgMHg5NiwgMHg2MCwgMHhEMywgMHhFQSwgMHhGQiwgMHhDNCwgMHhFRSwgMHgxQiwgMHgzNCwgMHg4NiwgMHhBMCwgMHg3QywKKyAgICAweDJDLCAweEFFLCAweDZELCAweDcxLCAweDMwLCAweDU5LCAweDIyLCAweDJDLCAweDI0LCAweEUzLCAweDdCLCAweDQ2LCAweDdELCAweDE4LCAweEUxLCAweEJBLAorICAgIDB4NUQsIDB4QzAsIDB4MTUsIDB4NjcsIDB4MEEsIDB4MDQsIDB4NjIsIDB4QzEsIDB4OEMsIDB4NUMsIDB4QzUsIDB4MkUsIDB4MTksIDB4QjMsIDB4OEEsIDB4NDEsCisgICAgMHhCRSwgMHgyQSwgMHg3NiwgMHgyMiwgMHg4QywgMHg3NiwgMHhBMiwgMHg0NSwgMHhEQiwgMHhCNywgMHg3RSwgMHgxRCwgMHhCMCwgMHg3NiwgMHgzNywgMHg1OSwKKyAgICAweERDLCAweDIyLCAweDQ3LCAweDdELCAweEFCLCAweDM0LCAweDRELCAweDVGLCAweDQxLCAweENFLCAweDg5LCAweDVELCAweDg0LCAweEYxLCAweEJFLCAweDkwLAorICAgIDB4MjUsIDB4RDMsIDB4QUMsIDB4RUUsIDB4OUYsIDB4MkEsIDB4MUUsIDB4NUMsIDB4RTIsIDB4MTksIDB4NzYsIDB4NkYsIDB4QTIsIDB4NUMsIDB4MjgsIDB4QUMsCisgICAgMHg5OSwgMHhCRCwgMHg1OSwgMHg4NiwgMHgwOCwgMHgzNiwgMHgwQywgMHhCOCwgMHgzRSwgMHhEMSwgMHg5OCwgMHg1RCwgMHg2MiwgMHg5NCwgMHg4RiwgMHhCMSwKKyAgICAweEEzLCAweEU0LCAweEZELCAweDU2LCAweDA5LCAweDk1LCAweENCLCAweEZELCAweDc5LCAweDdDLCAweDZBLCAweDc4LCAweDgxLCAweDE5LCAweDNDLCAweDM0LAorICAgIDB4OEEsIDB4M0IsIDB4NDcsIDB4MTAsIDB4NDgsIDB4QkMsIDB4MjIsIDB4M0QsIDB4RUIsIDB4NkEsIDB4RTcsIDB4MkUsIDB4QjAsIDB4RTEsIDB4NDIsIDB4NTUsCisgICAgMHhFNCwgMHgyRCwgMHg5OCwgMHhEMSwgMHg3QiwgMHg5QywgMHhEMiwgMHg1RSwgMHg2RiwgMHg1MiwgMHgzMywgMHgxRSwgMHhCQiwgMHg2MiwgMHhCQSwgMHhCOCwKKyAgICAweEZCLCAweDJCLCAweDUyLCAweEUxLCAweDNELCAweEEwLCAweEI0LCAweERELCAweDA1LCAweEFDLCAweEE2LCAweERDLCAweDNBLCAweDA3LCAweDBGLCAweEIwLAorICAgIDB4NzgsIDB4NUUsIDB4OTMsIDB4REUsIDB4QkQsIDB4MkEsIDB4MzQsIDB4OTIsIDB4RTAsIDB4RjAsIDB4QkMsIDB4MzIsIDB4QjEsIDB4RUMsIDB4QUUsIDB4RDYsCisgICAgMHgxMCwgMHgzNywgMHg0OCwgMHg4OSwgMHg1MCwgMHg3NCwgMHgyNCwgMHhFRiwgMHhDMiwgMHg1QSwgMHhGQSwgMHhGMSwgMHhDQSwgMHg1RCwgMHgxMiwgMHhGOSwKKyAgICAweDAwLCAweENFLCAweDk1LCAweEE1LCAweDlBLCAweEMxLCAweDM4LCAweDQyLCAweDI3LCAweEU2LCAweEQzLCAweEQ2LCAweEUxLCAweDIwLCAweERFLCAweDZFLAorICAgIDB4OTYsIDB4MUQsIDB4MUEsIDB4MDIsIDB4QzMsIDB4MEUsIDB4MTAsIDB4M0UsIDB4NTUsIDB4MjcsIDB4NzgsIDB4RkEsIDB4QTEsIDB4MkIsIDB4MjUsIDB4NkQsCisgICAgMHgzMCwgMHg5NywgMHhBNSwgMHhBNiwgMHhBMCwgMHg5RCwgMHhERSwgMHgxMiwgMHgyQiwgMHhEQSwgMHg4MiwgMHhGOSwgMHhFOSwgMHhGNSwgMHg0RiwgMHhCOSwKKyAgICAweDMwLCAweDQ0LCAweDU3LCAweDkyLCAweEM3LCAweDY0LCAweEZFLCAweDc3LCAweEY3LCAweDBBLCAweDRDLCAweEMwLCAweDk2LCAweERELCAweDc5LCAweEZELAorICAgIDB4Q0MsIDB4RTcsIDB4RkUsIDB4NkEsIDB4OEYsIDB4NjksIDB4MzQsIDB4MzcsIDB4QjQsIDB4NDEsIDB4QUEsIDB4NzIsIDB4NzQsIDB4QzYsIDB4REEsIDB4Q0QsCisgICAgMHg3RSwgMHg3MiwgMHgxNCwgMHg5MiwgMHgyRCwgMHhBMSwgMHg3NywgMHhBRCwgMHgxQywgMHhERiwgMHg5OSwgMHg3OSwgMHg2QywgMHhFRSwgMHhEQSwgMHgwRiwKKyAgICAweDRDLCAweDQ1LCAweDkzLCAweDUyLCAweEM5LCAweDgzLCAweDA3LCAweDU3LCAweDFBLCAweEUyLCAweEUwLCAweEU2LCAweDNGLCAweDkxLCAweDdGLCAweDcyLAorICAgIDB4MEUsIDB4MkYsIDB4QzksIDB4MjEsIDB4MDksIDB4QjYsIDB4NjYsIDB4RUEsIDB4QjIsIDB4OEQsIDB4RkIsIDB4M0UsIDB4RDIsIDB4N0MsIDB4QTQsIDB4QjUsCisgICAgMHhFOSwgMHhGRiwgMHgzNSwgMHhGQiwgMHgxQSwgMHg5MiwgMHg4MSwgMHhFQSwgMHgxRCwgMHgwOCwgMHgwMSwgMHg2RiwgMHg3RSwgMHgwMiwgMHg1NSwgMHg1RSwKKyAgICAweDExLCAweDUxLCAweEQxLCAweDM3LCAweDM1LCAweEQ3LCAweDk2LCAweEFELCAweEFDLCAweEU0LCAweDczLCAweDNCLCAweDYzLCAweDFBLCAweDU3LCAweENCLAorICAgIDB4RjgsIDB4RjcsIDB4ODQsIDB4QzUsIDB4MTAsIDB4ODQsIDB4MUYsIDB4MzAsIDB4NEUsIDB4OEUsIDB4REEsIDB4QTAsIDB4QkUsIDB4RDEsIDB4MzgsIDB4QzUsCisgICAgMHg3QiwgMHgwOCwgMHgzQywgMHg5RCwgMHhBMywgMHgwOSwgMHg5RiwgMHg2NCwgMHhFNCwgMHgxMiwgMHhCQSwgMHg1NCwgMHg0NSwgMHgyRCwgMHgzMiwgMHgyQSwKKyAgICAweDE0LCAweENDLCAweDc1LCAweEY1LCAweEUwLCAweEVCLCAweDA1LCAweDg3LCAweDlCLCAweEU0LCAweDgzLCAweDUyLCAweDY3LCAweEM0LCAweEI3LCAweDlFLAorICAgIDB4OTcsIDB4MzgsIDB4QzcsIDB4MzUsIDB4N0YsIDB4RjYsIDB4MzQsIDB4MDgsIDB4M0YsIDB4MTIsIDB4NjUsIDB4ODgsIDB4NTcsIDB4OEUsIDB4NjAsIDB4NzYsCisgICAgMHhDQiwgMHgwMCwgMHg0RCwgMHhGNCwgMHg4OCwgMHgxMiwgMHhGNiwgMHgzQywgMHgyRSwgMHhBMSwgMHg4RiwgMHhEOCwgMHhBOCwgMHgyOSwgMHgzQiwgMHhCMCwKKyAgICAweEU5LCAweDVDLCAweDMyLCAweDM2LCAweDlDLCAweEFGLCAweDkwLCAweDlGLCAweDcyLCAweEEyLCAweDk2LCAweDY1LCAweDE3LCAweDYxLCAweDA2LCAweDYzLAorICAgIDB4MkIsIDB4OUUsIDB4NTcsIDB4QTYsIDB4QTcsIDB4MUUsIDB4QjcsIDB4RDksIDB4RUIsIDB4QzIsIDB4MkEsIDB4NjQsIDB4QTMsIDB4MEIsIDB4MkEsIDB4OUEsCisgICAgMHg5QiwgMHg4NywgMHgxMywgMHgyNSwgMHgyQywgMHg3QywgMHhFRCwgMHg4RiwgMHgyMSwgMHgwNCwgMHgxMywgMHg0QSwgMHhGMSwgMHhCOSwgMHhEMiwgMHgwRCwKKyAgICAweEFGLCAweDk1LCAweDg1LCAweDc3LCAweDBDLCAweDk0LCAweDc3LCAweEFGLCAweDAzLCAweEE2LCAweEE3LCAweDNCLCAweDA2LCAweERGLCAweDYxLCAweDA4LAorICAgIDB4MzYsIDB4MDEsIDB4NDksIDB4NkQsIDB4N0YsIDB4MzQsIDB4NEYsIDB4NTYsIDB4MTcsIDB4NTAsIDB4QjUsIDB4QjQsIDB4RTcsIDB4RTcsIDB4QUUsIDB4RjUsCisgICAgMHg2MSwgMHhCNSwgMHhFQiwgMHhGRCwgMHg0MCwgMHgxNSwgMHgzNywgMHg5QywgMHhGMCwgMHhBMCwgMHg0NywgMHg4OSwgMHg0NSwgMHgyQiwgMHgxNiwgMHg0OSwKKyAgICAweDk4LCAweEQwLCAweEY3LCAweDdGLCAweDdBLCAweEJDLCAweDYwLCAweEExLCAweEJELCAweDdBLCAweEIxLCAweDc1LCAweEJELCAweDU1LCAweEQ2LCAweDJELAorICAgIDB4MTksIDB4NUEsIDB4NTEsIDB4MDksIDB4QTYsIDB4QTUsIDB4MTksIDB4OTgsIDB4QzIsIDB4QTMsIDB4QTAsIDB4NDAsIDB4NEYsIDB4MUEsIDB4MjMsIDB4MDQsCisgICAgMHg1NSwgMHg0NiwgMHhBNywgMHgxRSwgMHhFOCwgMHgzMywgMHhFMSwgMHg5MCwgMHgxMywgMHg3NCwgMHg3NCwgMHgxNSwgMHhBMSwgMHhDRSwgMHg0NywgMHg5QywKKyAgICAweDYyLCAweDdELCAweDQ2LCAweDNFLCAweEU2LCAweDJBLCAweDUxLCAweEM0LCAweDEyLCAweEIzLCAweDZCLCAweDRBLCAweDFBLCAweEJELCAweEUxLCAweDEwLAorICAgIDB4OEQsIDB4NjQsIDB4OEEsIDB4QTgsIDB4MUQsIDB4NUYsIDB4MkUsIDB4MkYsIDB4MkYsIDB4MzQsIDB4RDMsIDB4RUYsIDB4NDgsIDB4MUMsIDB4NUUsIDB4QUUsCisgICAgMHhBMSwgMHg1MywgMHhEQiwgMHhENSwgMHg1NiwgMHg4RCwgMHhEMiwgMHgxMCwgMHhEQiwgMHgxQiwgMHg2QSwgMHg2NCwgMHg4NiwgMHg0NCwgMHgyNywgMHhDNSwKKyAgICAweEQwLCAweEUwLCAweEQwLCAweDk0LCAweDZGLCAweERDLCAweDVBLCAweDBELCAweDYwLCAweDkzLCAweEZBLCAweDU0LCAweDY1LCAweEUwLCAweEE4LCAweDE0LAorICAgIDB4REIsIDB4REYsIDB4OUYsIDB4N0IsIDB4QkIsIDB4RkEsIDB4RjcsIDB4RDUsIDB4NDksIDB4N0UsIDB4QjEsIDB4MzgsIDB4MkYsIDB4NDksIDB4MDIsIDB4RjYsCisgICAgMHgxNSwgMHhCNywgMHg2RiwgMHgyNSwgMHhGQSwgMHhEQiwgMHhFNCwgMHgxQSwgMHhCOSwgMHhDRiwgMHg1RiwgMHhBMSwgMHg2QywgMHg3RCwgMHg3MSwgMHhFRCwKKyAgICAweENDLCAweEFCLCAweDc2LCAweDRFLCAweEUyLCAweEM4LCAweDQ0LCAweDFBLCAweEY5LCAweEFBLCAweDYzLCAweDUxLCAweEEwLCAweDQ3LCAweEU5LCAweDYyLAorICAgIDB4QUQsIDB4NDgsIDB4MjUsIDB4MTUsIDB4QkQsIDB4NkIsIDB4QTgsIDB4RjIsIDB4NjksIDB4MTAsIDB4MEEsIDB4QTksIDB4NTYsIDB4Q0EsIDB4Q0EsIDB4RjQsCisgICAgMHhDRCwgMHg3RCwgMHg1NSwgMHgwOSwgMHhEQiwgMHgzQywgMHgzNCwgMHg5QiwgMHhFRCwgMHgzQSwgMHgzQSwgMHhGOSwgMHhBNCwgMHhCMiwgMHhGNCwgMHhDRSwKKyAgICAweEQ1LCAweDQ2LCAweDc3LCAweDM0LCAweEEzLCAweDk2LCAweEE4LCAweDBFLCAweEExLCAweEI1LCAweEQzLCAweDY5LCAweDY4LCAweEY1LCAweEIzLCAweDE3LAorICAgIDB4OTksIDB4MzAsIDB4QkUsIDB4MDMsIDB4QjAsIDB4ODksIDB4MUQsIDB4NzUsIDB4QTQsIDB4RjcsIDB4NzksIDB4RjYsIDB4N0QsIDB4QTAsIDB4MjQsIDB4Q0QsCisgICAgMHhFMCwgMHgwQSwgMHg5MiwgMHg0RCwgMHhFNCwgMHhGNywgMHgyOCwgMHhFNywgMHg1MiwgMHgwQywgMHgyOCwgMHg2MiwgMHhCQSwgMHgyNCwgMHhENiwgMHhBNCwKKyAgICAweDAyLCAweEZGLCAweEQxLCAweDZCLCAweERFLCAweDBDLCAweEI5LCAweEExLCAweEJDLCAweEJELCAweDJDLCAweDdELCAweEY2LCAweEZGLCAweDJDLCAweDhELAorICAgIDB4ODMsIDB4MDgsIDB4NjIsIDB4QzUsIDB4NkIsIDB4OUYsIDB4MTEsIDB4QTIsIDB4N0QsIDB4QjcsIDB4OTAsIDB4MzgsIDB4MDgsIDB4QjksIDB4REMsIDB4NDYsCisgICAgMHhBMywgMHhEMSwgMHhEMSwgMHhFNSwgMHgzNiwgMHhDMywgMHhFRSwgMHg1RiwgMHg4MiwgMHg2MywgMHg0RSwgMHg2NiwgMHgzMCwgMHgzOCwgMHhDOCwgMHg0MCwKKyAgICAweDJFLCAweEI4LCAweDgyLCAweEFFLCAweDk1LCAweENGLCAweDQ1LCAweDFBLCAweEY5LCAweDJBLCAweDg1LCAweDlDLCAweDY2LCAweDk2LCAweDdELCAweDY5LAorICAgIDB4QzUsIDB4RTcsIDB4MTMsIDB4RDYsIDB4ODYsIDB4MzksIDB4MTQsIDB4RTMsIDB4MUIsIDB4QkYsIDB4NzgsIDB4NUIsIDB4RkIsIDB4NkEsIDB4ODgsIDB4MUEsCisgICAgMHhDQSwgMHgyMSwgMHg2QywgMHhFMywgMHg4MCwgMHhDRSwgMHg2MSwgMHgzRiwgMHgxMywgMHg3QSwgMHhGRCwgMHgxNiwgMHg0RiwgMHgzMiwgMHhFMCwgMHhCOCwKKyAgICAweDc2LCAweDZELCAweDFELCAweDQ2LCAweEI5LCAweEY0LCAweEExLCAweDA1LCAweDUzLCAweDVFLCAweDk2LCAweDQyLCAweEYzLCAweEY1LCAweEE2LCAweEFGLAorICAgIDB4ODcsIDB4NzgsIDB4Q0YsIDB4M0QsIDB4ODQsIDB4QjEsIDB4RkMsIDB4OTcsIDB4MUYsIDB4ODYsIDB4NzksIDB4MUUsIDB4Q0UsIDB4RUYsIDB4MjEsIDB4MTMsCisgICAgMHg1RiwgMHhEMywgMHgyMywgMHhEMywgMHg1MiwgMHhFNywgMHgzMSwgMHgzNywgMHg0MCwgMHgwOCwgMHhCNywgMHg2QywgMHg1MCwgMHhDQSwgMHg4MiwgMHhCNSwKKyAgICAweDQ3LCAweDA0LCAweDk4LCAweDVGLCAweDI4LCAweEFBLCAweDM5LCAweDc2LCAweEZBLCAweDE4LCAweEFELCAweDA4LCAweDU3LCAweDlGLCAweEZFLCAweDdCLAorICAgIDB4NkYsIDB4MkIsIDB4NDYsIDB4ODMsIDB4NkMsIDB4REUsIDB4OTAsIDB4Q0IsIDB4NDEsIDB4NDAsIDB4MjIsIDB4MjQsIDB4NEIsIDB4ODIsIDB4MjMsIDB4NzIsCisgICAgMHhDMCwgMHgyOCwgMHg3OSwgMHhBQywgMHhFOCwgMHhGNSwgMHg5NiwgMHhDMiwgMHhDMSwgMHg3NiwgMHg2QywgMHg1QiwgMHhCQSwgMHhGQiwgMHg2MCwgMHgxMiwKKyAgICAweEExLCAweEYxLCAweDU5LCAweEU5LCAweDcwLCAweDk3LCAweDVDLCAweEQzLCAweDZELCAweDNDLCAweEMyLCAweDE4LCAweEE0LCAweDMwLCAweDM3LCAweEYwLAorICAgIDB4QUMsIDB4OTIsIDB4QjMsIDB4QzMsIDB4MUYsIDB4QUEsIDB4NzMsIDB4MDMsIDB4MEEsIDB4OUYsIDB4MDEsIDB4NUYsIDB4NEMsIDB4NjgsIDB4M0EsIDB4QTUsCisgICAgMHhCMCwgMHhCOSwgMHhCQiwgMHg4NywgMHhBNCwgMHg3NiwgMHg5QiwgMHgzNiwgMHhEMCwgMHgzNSwgMHg2OCwgMHgyNiwgMHhFRSwgMHg3NiwgMHg4MiwgMHhEQSwKKyAgICAweDgxLCAweDE2LCAweEZCLCAweDgyLCAweEQyLCAweDlELCAweENELCAweDRGLCAweDNBLCAweEFELCAweEEzLCAweEMyLCAweEJELCAweDlFLCAweDYwLCAweDM5LAorICAgIDB4MzAsIDB4MUIsIDB4OUQsIDB4NEYsIDB4QUQsIDB4MEMsIDB4ODgsIDB4NTQsIDB4NTcsIDB4NjQsIDB4RkQsIDB4QkIsIDB4NjMsIDB4MzcsIDB4N0EsIDB4QjAsCisgICAgMHg3RSwgMHg0QywgMHg2OSwgMHg0QywgMHg2RCwgMHg3OCwgMHg4NCwgMHg2OSwgMHg1OSwgMHhGMiwgMHhBRiwgMHhGRCwgMHg3NiwgMHg2NywgMHgwRCwgMHgxQSwKKyAgICAweDQwLCAweEI0LCAweDRBLCAweEU3LCAweERCLCAweDlELCAweEQ3LCAweEQ4LCAweDY2LCAweEM3LCAweDhELCAweEFELCAweDRDLCAweEUyLCAweDlELCAweDFBLAorICAgIDB4NjMsIDB4QTIsIDB4NTYsIDB4RDksIDB4NDAsIDB4NkQsIDB4N0IsIDB4RTAsIDB4MEYsIDB4NzgsIDB4QUEsIDB4ODgsIDB4QTcsIDB4QTgsIDB4NjIsIDB4RTMsCisgICAgMHg3RSwgMHhFOSwgMHg4QywgMHg2NSwgMHhCNSwgMHg1NiwgMHgyQSwgMHgxRSwgMHg1QywgMHhERiwgMHhDNCwgMHgzQywgMHhDMywgMHg1RCwgMHg0NiwgMHgwMCwKKyAgICAweEYxLCAweDhBLCAweDBCLCAweDdDLCAweDU4LCAweDk0LCAweEE0LCAweDVCLCAweEFBLCAweDNBLCAweDcyLCAweDBELCAweEU5LCAweDU5LCAweDk5LCAweDg3LAorICAgIDB4MDYsIDB4RTgsIDB4QzksIDB4NEYsIDB4QzUsIDB4NTQsIDB4MTAsIDB4MDAsIDB4QUUsIDB4NDUsIDB4Q0YsIDB4RTcsIDB4ODEsIDB4RTUsIDB4QzQsIDB4ODUsCisgICAgMHg3MCwgMHhENiwgMHhEOSwgMHg2MCwgMHg5RCwgMHgxOSwgMHg1RiwgMHhDOSwgMHhCRSwgMHgzRCwgMHhCNywgMHgyNCwgMHhCNCwgMHg3QiwgMHgwOCwgMHhGQiwKKyAgICAweEE0LCAweDlFLCAweDM2LCAweDI2LCAweEEwLCAweEYyLCAweDg2LCAweEU5LCAweDY3LCAweDEwLCAweEY2LCAweDhFLCAweEU5LCAweEVCLCAweEEzLCAweEIzLAorICAgIDB4NzUsIDB4ODMsIDB4MzgsIDB4QTcsIDB4NDUsIDB4ODEsIDB4RjAsIDB4RjMsIDB4NjIsIDB4MTgsIDB4MDIsIDB4RjEsIDB4OTUsIDB4OEMsIDB4RUEsIDB4MzksCisgICAgMHhEMiwgMHhCNywgMHgxMSwgMHhDMCwgMHgwNiwgMHgxMSwgMHgwNywgMHg0MiwgMHg1NCwgMHhFNSwgMHgyQiwgMHhDOCwgMHhENSwgMHg4QywgMHgwOCwgMHgyNSwKKyAgICAweEUxLCAweEQwLCAweDhELCAweDdFLCAweDYxLCAweDI4LCAweDc5LCAweDZBLCAweDJCLCAweDMzLCAweEQ5LCAweEU5LCAweDZCLCAweDA0LCAweDk1LCAweDFFLAorICAgIDB4RTAsIDB4QTEsIDB4QTQsIDB4MzIsIDB4NzEsIDB4MEUsIDB4Q0QsIDB4Q0IsIDB4ODAsIDB4QjgsIDB4MzgsIDB4NzksIDB4RjAsIDB4OUUsIDB4NTgsIDB4NUUsCisgICAgMHhGNiwgMHgzNSwgMHhDQywgMHhDNSwgMHhCOSwgMHhDNywgMHg3MywgMHhDRiwgMHgxMywgMHhFQSwgMHg3NywgMHgxOCwgMHhENCwgMHgzNywgMHg0NiwgMHgxQiwKKyAgICAweDY2LCAweEVELCAweDY4LCAweEVBLCAweDFCLCAweDM4LCAweENGLCAweEFELCAweDY0LCAweDI4LCAweDFDLCAweDA0LCAweDgxLCAweDUyLCAweDAzLCAweDhGLAorICAgIDB4QzcsIDB4NDUsIDB4QUUsIDB4NTIsIDB4RDQsIDB4MjMsIDB4MjcsIDB4REIsIDB4MkMsIDB4OTgsIDB4RTgsIDB4NzQsIDB4RTYsIDB4QTcsIDB4MUUsIDB4NkUsCisgICAgMHgzMSwgMHgxMCwgMHhGNSwgMHhCQiwgMHgxQSwgMHhBMCwgMHg1RiwgMHg2QywgMHhBRSwgMHgzOCwgMHhENywgMHhDNiwgMHhBMiwgMHg3NywgMHg2QSwgMHg0NywKKyAgICAweDkyLCAweEM1LCAweEMzLCAweEUzLCAweDEyLCAweENFLCAweDlBLCAweENCLCAweDFGLCAweDc1LCAweEVELCAweDFDLCAweDE2LCAweDMwLCAweEI4LCAweENDLAorICAgIDB4NEUsIDB4QjEsIDB4QTUsIDB4Q0UsIDB4ODUsIDB4RDMsIDB4MkUsIDB4QzEsIDB4MTMsIDB4M0QsIDB4MzIsIDB4QkUsIDB4QkIsIDB4MjIsIDB4NzcsIDB4OUIsCisgICAgMHgxMywgMHgxMCwgMHgyQywgMHg1MywgMHg5NiwgMHgyNCwgMHgwMiwgMHhBMSwgMHg2QiwgMHhCMSwgMHhFRiwgMHhDOCwgMHhFOSwgMHhGMCwgMHgyQSwgMHg4NywKKyAgICAweEVGLCAweEUzLCAweEJGLCAweEQ4LCAweEIzLCAweDE2LCAweEMyLCAweDZDLCAweEZFLCAweEMyLCAweEFDLCAweDkxLCAweDI4LCAweDRGLCAweDMxLCAweEE4LAorICAgIDB4QUYsIDB4NTEsIDB4MUMsIDB4QjcsIDB4MzcsIDB4QTcsIDB4NkUsIDB4NzcsIDB4MzcsIDB4NzgsIDB4MkIsIDB4NzQsIDB4NzgsIDB4RUYsIDB4MDksIDB4OUIsCisgICAgMHg1NSwgMHgzMCwgMHg0RSwgMHgyMywgMHhGRSwgMHhDRSwgMHg2MiwgMHhDRSwgMHg5MiwgMHgzOCwgMHg0OSwgMHg2RiwgMHg1RCwgMHhERCwgMHhDRCwgMHgwOSwKKyAgICAweDlFLCAweEVCLCAweEM1LCAweENDLCAweDlCLCAweEMyLCAweEU0LCAweEJGLCAweDEyLCAweDQ3LCAweEZBLCAweEE1LCAweEI2LCAweDg5LCAweDA5LCAweDI1LAorICAgIDB4REEsIDB4MzMsIDB4M0EsIDB4RkQsIDB4NzcsIDB4QjIsIDB4N0EsIDB4QjMsIDB4NzcsIDB4QzEsIDB4ODgsIDB4ODgsIDB4OEUsIDB4QzUsIDB4ODEsIDB4QTYsCisgICAgMHg1RSwgMHg2OSwgMHhFMSwgMHhBNCwgMHhCMCwgMHg0QSwgMHg5OSwgMHg1OSwgMHhBMCwgMHhDNywgMHgxMSwgMHg5RSwgMHhCQywgMHg2MywgMHg2MiwgMHg0MywKKyAgICAweEMwLCAweDJDLCAweDMzLCAweDYzLCAweDZCLCAweDUxLCAweENFLCAweERDLCAweDE1LCAweDhDLCAweDU5LCAweDQ2LCAweDZELCAweDkxLCAweDk4LCAweDFCLAorICAgIDB4NTksIDB4QTUsIDB4NDgsIDB4RjEsIDB4MDQsIDB4OEUsIDB4MDYsIDB4QTYsIDB4NUQsIDB4MzAsIDB4QjYsIDB4QUYsIDB4QkYsIDB4ODQsIDB4NzgsIDB4MDYsCisgICAgMHg4QiwgMHg3OSwgMHg2OSwgMHhCNSwgMHgxOSwgMHg1QSwgMHg4NSwgMHhENiwgMHhGNCwgMHg2QiwgMHhENCwgMHgwRCwgMHg4MCwgMHhEQiwgMHhDRiwgMHhDNiwKKyAgICAweENBLCAweEUxLCAweDQ4LCAweDNDLCAweDk3LCAweDE5LCAweDVFLCAweDRCLCAweEU2LCAweDVDLCAweDZELCAweEFGLCAweEEwLCAweEJFLCAweEY2LCAweDUwLAorICAgIDB4NEMsIDB4RTIsIDB4NTgsIDB4REQsIDB4RTcsIDB4Q0QsIDB4MjgsIDB4NzAsIDB4NTQsIDB4M0IsIDB4NTAsIDB4OTcsIDB4MjAsIDB4QjEsIDB4MTksIDB4RjIsCisgICAgMHgwOSwgMHgwQiwgMHhCQiwgMHhDRiwgMHgzNSwgMHhEQSwgMHgzNiwgMHhBQiwgMHgxMiwgMHhCQSwgMHhBRiwgMHhGRiwgMHhGNCwgMHg2QywgMHg4NywgMHhBNywKKyAgICAweEI5LCAweDdDLCAweDAyLCAweEI3LCAweEM3LCAweDE2LCAweDdFLCAweDNFLCAweEYxLCAweDMzLCAweDlFLCAweDYwLCAweDlDLCAweDNGLCAweENDLCAweEFDLAorICAgIDB4MDEsIDB4NEMsIDB4MTMsIDB4RjAsIDB4NDMsIDB4QkYsIDB4MjEsIDB4NjAsIDB4RTksIDB4QkEsIDB4MzQsIDB4MkIsIDB4MDgsIDB4RDIsIDB4RkUsIDB4MEYsCisgICAgMHg3MywgMHg1MiwgMHhBRSwgMHhBMiwgMHg1NCwgMHg1MSwgMHg5MCwgMHhEMiwgMHg5RSwgMHhFOSwgMHg2MiwgMHhBQywgMHgzNywgMHgzOSwgMHgyQSwgMHhBRCwKKyAgICAweDBBLCAweDFDLCAweEZFLCAweDA5LCAweDMwLCAweERELCAweDlDLCAweDJGLCAweDUyLCAweEZELCAweDhGLCAweDQxLCAweEY5LCAweENFLCAweEFFLCAweEI4LAorICAgIDB4NjYsIDB4QjYsIDB4NDQsIDB4MUEsIDB4ODIsIDB4NTMsIDB4MzMsIDB4NDgsIDB4QTYsIDB4OEQsIDB4RUYsIDB4RTgsIDB4ODAsIDB4QzMsIDB4MEUsIDB4RDcsCisgICAgMHg4MCwgMHhDNiwgMHgxMywgMHgxRiwgMHg0QywgMHg5OSwgMHg0MywgMHg1NiwgMHg0NSwgMHgzNSwgMHg1NCwgMHgzMywgMHg2OCwgMHgxRiwgMHhFRiwgMHg3RiwKKyAgICAweEIyLCAweEIxLCAweEY1LCAweDdFLCAweDdFLCAweDA4LCAweERFLCAweEQyLCAweDVCLCAweDUyLCAweDg5LCAweDIwLCAweERGLCAweEQ5LCAweDVBLCAweDY0LAorICAgIDB4NzEsIDB4MzcsIDB4NzksIDB4OTgsIDB4NjksIDB4MTAsIDB4RjYsIDB4QTIsIDB4NUYsIDB4QkUsIDB4NzEsIDB4MzUsIDB4RTAsIDB4ODgsIDB4NzQsIDB4N0EsCisgICAgMHhCNSwgMHg4MSwgMHgyRSwgMHg0RSwgMHg3MSwgMHg3RiwgMHg1QSwgMHgzQSwgMHg4QSwgMHhDRSwgMHhCRSwgMHhDNSwgMHg0MCwgMHg4RiwgMHhDNSwgMHgyRSwKKyAgICAweEE1LCAweDlBLCAweDRELCAweDc0LCAweEU0LCAweDczLCAweEM3LCAweDk2LCAweDk3LCAweDg0LCAweDdFLCAweDkwLCAweDQ0LCAweDgzLCAweDI0LCAweEVFLAorICAgIDB4ODMsIDB4NDIsIDB4QTMsIDB4Q0MsIDB4MUMsIDB4N0EsIDB4NEQsIDB4MjcsIDB4MEIsIDB4ODAsIDB4RDAsIDB4QTQsIDB4QUMsIDB4OUIsIDB4MUUsIDB4Q0IsCisgICAgMHhGQywgMHg3RiwgMHgxMiwgMHgzMSwgMHg0MSwgMHgzRCwgMHgwNiwgMHg0QSwgMHhCQywgMHhGNiwgMHgyMiwgMHhGMSwgMHhDOCwgMHhGMCwgMHg5QywgMHgxQSwKKyAgICAweDhELCAweDk2LCAweDVBLCAweEE3LCAweEI0LCAweDZCLCAweDQ1LCAweEJDLCAweDRELCAweDMyLCAweEMxLCAweDlDLCAweEM2LCAweEEwLCAweENFLCAweEVELAorICAgIDB4N0IsIDB4OTcsIDB4NTksIDB4N0YsIDB4NDIsIDB4MzIsIDB4MjIsIDB4QTMsIDB4MTgsIDB4RkQsIDB4NjUsIDB4QkMsIDB4MkMsIDB4QzMsIDB4RUEsIDB4RTgsCisgICAgMHhCRCwgMHhDMSwgMHhGRiwgMHhFMSwgMHgyMCwgMHhBQiwgMHhDMCwgMHg2QSwgMHhEQSwgMHhGOSwgMHgzQSwgMHg4NSwgMHg3OSwgMHg3QSwgMHgxMCwgMHhCOSwKKyAgICAweEEwLCAweDdBLCAweEFBLCAweEFELCAweEYxLCAweDhELCAweDY3LCAweDhGLCAweDU5LCAweEUwLCAweDEwLCAweDRBLCAweDYyLCAweEE3LCAweEQxLCAweDhELAorICAgIDB4RjksIDB4MjYsIDB4QkUsIDB4MDAsIDB4NDIsIDB4ODEsIDB4QTAsIDB4MUYsIDB4RkYsIDB4Q0UsIDB4QUUsIDB4QUYsIDB4MUMsIDB4NTYsIDB4OTIsIDB4NDgsCisgICAgMHg2NSwgMHhFNywgMHgyQSwgMHhDNiwgMHhFMiwgMHg3OCwgMHhERSwgMHhBMiwgMHg4NywgMHg1QywgMHg4OSwgMHgzRSwgMHgzOCwgMHhDNCwgMHgzMCwgMHhCNCwKKyAgICAweDA3LCAweDc1LCAweDdBLCAweDAxLCAweDc2LCAweENELCAweDk1LCAweEQyLCAweEExLCAweDRDLCAweDM3LCAweEI1LCAweEE1LCAweDJCLCAweEU1LCAweDA5LAorICAgIDB4OEIsIDB4NDUsIDB4NUMsIDB4NzcsIDB4OUYsIDB4RTgsIDB4QUIsIDB4QjksIDB4RDYsIDB4QjAsIDB4OTEsIDB4NTcsIDB4QTYsIDB4OUUsIDB4NUQsIDB4MDEsCisgICAgMHhCNSwgMHhFMiwgMHhFNSwgMHgxMSwgMHhDNSwgMHg3NywgMHhDMSwgMHgxMSwgMHg1NCwgMHg5NywgMHg0NSwgMHg0RiwgMHg4RSwgMHg3NSwgMHhCNCwgMHhBMywKKyAgICAweEQ3LCAweEY0LCAweDBGLCAweENDLCAweDY5LCAweEFBLCAweEIyLCAweEFDLCAweEI0LCAweDkyLCAweEQ0LCAweDY2LCAweEI4LCAweEExLCAweDkxLCAweEEyLAorICAgIDB4NzQsIDB4RUYsIDB4QkUsIDB4MUQsIDB4REYsIDB4QkQsIDB4RjksIDB4MjYsIDB4MzQsIDB4MUQsIDB4NzEsIDB4N0MsIDB4NTQsIDB4MTQsIDB4NDIsIDB4NDAsCisgICAgMHg5NCwgMHg0QiwgMHhBMiwgMHhGMiwgMHgxQywgMHhENiwgMHg4NiwgMHgzMiwgMHgyMiwgMHg2NCwgMHhFNCwgMHgxMywgMHg4RCwgMHg2QSwgMHhBMiwgMHgxQywKKyAgICAweEIwLCAweDNGLCAweDc4LCAweEE5LCAweDU2LCAweDYxLCAweEZCLCAweDU2LCAweEVFLCAweDNELCAweDI2LCAweDJBLCAweDFDLCAweDdFLCAweDRELCAweDIyLAorICAgIDB4RDQsIDB4RkEsIDB4QTYsIDB4QkEsIDB4N0UsIDB4MkQsIDB4OUIsIDB4NkMsIDB4RjcsIDB4NjQsIDB4MjAsIDB4Q0EsIDB4RDYsIDB4ODksIDB4NDksIDB4OTIsCisgICAgMHhGRiwgMHgyQSwgMHhCQiwgMHhBOCwgMHg4QSwgMHhFNSwgMHg5MCwgMHhFQSwgMHgyMCwgMHgwNywgMHhGRiwgMHhFNywgMHhGNSwgMHhENiwgMHg5NiwgMHg3NywKKyAgICAweEUyLCAweEVCLCAweEM0LCAweEQyLCAweDUxLCAweDE5LCAweDc0LCAweDgzLCAweEUyLCAweEEzLCAweEMyLCAweDc3LCAweEY5LCAweDJFLCAweDczLCAweDk1LAorICAgIDB4ODYsIDB4NzYsIDB4ODIsIDB4NkYsIDB4QjYsIDB4NEEsIDB4MEIsIDB4NkEsIDB4OTUsIDB4Q0EsIDB4REQsIDB4N0YsIDB4NjYsIDB4MTcsIDB4MDksIDB4RTEsCisgICAgMHhEOSwgMHhEMSwgMHhBMCwgMHhFNywgMHgyNSwgMHg2NCwgMHhDQiwgMHhCNiwgMHg5QSwgMHgwRiwgMHgzMywgMHgwRiwgMHhGQiwgMHhCMywgMHg1MiwgMHg3OCwKKyAgICAweDAwLCAweDRFLCAweEZCLCAweEZGLCAweEM5LCAweDU1LCAweDJBLCAweDY2LCAweDhCLCAweEM3LCAweDlCLCAweDRCLCAweDk0LCAweEZCLCAweDVFLCAweDc3LAorICAgIDB4NTQsIDB4MDgsIDB4OTQsIDB4QzMsIDB4N0MsIDB4RkIsIDB4NjMsIDB4RjAsIDB4N0MsIDB4N0MsIDB4RDUsIDB4QzQsIDB4RTIsIDB4QUUsIDB4OUYsIDB4OEUsCisgICAgMHg3RiwgMHhBMiwgMHg0MywgMHgxMCwgMHg2RSwgMHgxQywgMHg5QywgMHhDNywgMHg2MiwgMHgxRSwgMHg1OCwgMHg4NywgMHhGRSwgMHg4MCwgMHgwRiwgMHg1MywKKyAgICAweDQwLCAweDFFLCAweEM5LCAweEE1LCAweEUxLCAweENELCAweEZDLCAweDY1LCAweDc1LCAweDVCLCAweEM4LCAweDRCLCAweDE4LCAweDBDLCAweDcxLCAweDcwLAorICAgIDB4RjYsIDB4MEUsIDB4NzAsIDB4RTYsIDB4OUMsIDB4RTAsIDB4RjMsIDB4RkUsIDB4MkEsIDB4QTIsIDB4NTgsIDB4MjMsIDB4ODAsIDB4ODUsIDB4QUQsIDB4QTAsCisgICAgMHg2NSwgMHhBMiwgMHg2MiwgMHhCNiwgMHhCNSwgMHgwQSwgMHg3OCwgMHgzRSwgMHhGOSwgMHg0NiwgMHg4NSwgMHgyMiwgMHhBNSwgMHhCRCwgMHg2MywgMHhCMywKKyAgICAweDU2LCAweDc1LCAweDk5LCAweEQ2LCAweDg3LCAweEZCLCAweDZBLCAweEI2LCAweEIxLCAweDAyLCAweDNCLCAweEIxLCAweDEwLCAweDMyLCAweDE5LCAweDcxLAorICAgIDB4MzIsIDB4RDQsIDB4MTIsIDB4RkIsIDB4NDksIDB4QkMsIDB4NTEsIDB4MDksIDB4QzcsIDB4MkYsIDB4RkYsIDB4QjgsIDB4QTIsIDB4RTMsIDB4MUQsIDB4Q0EsCisgICAgMHg3NCwgMHhDMSwgMHg0MSwgMHhDMywgMHhFRiwgMHgzRiwgMHhEQywgMHg0RCwgMHg0MCwgMHhFQSwgMHhGNywgMHhCQiwgMHgwNSwgMHg5MSwgMHgxMSwgMHg3OCwKKyAgICAweDk5LCAweEI0LCAweEE0LCAweEQ5LCAweDM5LCAweDE3LCAweDg3LCAweERGLCAweDI1LCAweERCLCAweEUwLCAweDczLCAweEE2LCAweEU5LCAweDNELCAweDI3LAorICAgIDB4NDQsIDB4Q0QsIDB4NEYsIDB4QjEsIDB4OEUsIDB4MUEsIDB4OTAsIDB4OTQsIDB4MDcsIDB4QzksIDB4M0UsIDB4OTMsIDB4NDYsIDB4REIsIDB4MDUsIDB4MDYsCisgICAgMHhGOCwgMHg2NCwgMHg1RCwgMHg3OCwgMHhCRiwgMHg3RCwgMHg3MywgMHg1OSwgMHg2OSwgMHg1QywgMHg2QywgMHgxQSwgMHhFMSwgMHg4NiwgMHg5RSwgMHg2OSwKKyAgICAweDNDLCAweDNCLCAweDUxLCAweDA5LCAweEU2LCAweDQzLCAweEQzLCAweDJCLCAweEE4LCAweDQ3LCAweDM3LCAweEFFLCAweDlDLCAweEJBLCAweDZDLCAweDNDLAorICAgIDB4MkMsIDB4NDYsIDB4NjAsIDB4MjQsIDB4NjksIDB4RTgsIDB4Q0UsIDB4RjUsIDB4NDAsIDB4Q0EsIDB4NzIsIDB4N0UsIDB4MkUsIDB4QUEsIDB4NkYsIDB4NjAsCisgICAgMHg3RSwgMHg3OSwgMHg1MywgMHhGQywgMHgwOSwgMHgzMCwgMHgzRSwgMHgyRCwgMHg2MCwgMHgyMSwgMHhCQSwgMHg2OCwgMHg1NCwgMHg0OSwgMHg5MSwgMHg3NiwKKyAgICAweDUzLCAweDYwLCAweDIzLCAweEU1LCAweEM4LCAweDlCLCAweEE0LCAweDRDLCAweDY0LCAweEQ1LCAweDAyLCAweDQ2LCAweDk1LCAweEQ5LCAweDcyLCAweDNDLAorICAgIDB4MzAsIDB4RTgsIDB4RjEsIDB4NTMsIDB4NTMsIDB4QzcsIDB4OEUsIDB4OTAsIDB4RjQsIDB4MzQsIDB4RjMsIDB4MEMsIDB4M0YsIDB4NzIsIDB4Q0EsIDB4MUQsCisgICAgMHg3NSwgMHg3MiwgMHhCRSwgMHg0NiwgMHg4QSwgMHhDMCwgMHhEMywgMHgwNiwgMHg5MywgMHg3MiwgMHhCMCwgMHhCRiwgMHhEMCwgMHg3NywgMHg5OSwgMHgwNiwKKyAgICAweDdCLCAweERGLCAweDZGLCAweDEwLCAweEZCLCAweEM2LCAweDFELCAweDU1LCAweDY2LCAweDJGLCAweDgxLCAweDgzLCAweDcyLCAweDNGLCAweDMwLCAweDYwLAorICAgIDB4RkEsIDB4MzQsIDB4RTksIDB4Q0YsIDB4QjMsIDB4MEYsIDB4OTUsIDB4QkQsIDB4RTQsIDB4OUYsIDB4REYsIDB4NTMsIDB4NkUsIDB4MDAsIDB4QzksIDB4MDcsCisgICAgMHg3RSwgMHg5QiwgMHg3OSwgMHhCRCwgMHhEMiwgMHhFMiwgMHg3NywgMHg4MCwgMHhCNCwgMHhGMywgMHg5QSwgMHg0NiwgMHgyMCwgMHg4QywgMHgyMSwgMHgwQSwKKyAgICAweEVBLCAweEZFLCAweDA3LCAweDYxLCAweDU4LCAweEI4LCAweDM4LCAweDQ3LCAweEY1LCAweDc1LCAweDVCLCAweDMzLCAweDc4LCAweDlFLCAweDY2LCAweERGLAorICAgIDB4MzAsIDB4QUQsIDB4RDgsIDB4RUQsIDB4NUQsIDB4NzMsIDB4NzUsIDB4NkQsIDB4NEUsIDB4NjMsIDB4OEIsIDB4MzUsIDB4NEYsIDB4Q0EsIDB4NzUsIDB4NTgsCisgICAgMHhEQiwgMHhFQSwgMHgyQSwgMHhFMiwgMHhCMSwgMHhFMSwgMHgxNSwgMHg2QywgMHg2OSwgMHg0NiwgMHhDOCwgMHhEOSwgMHg2NywgMHgxNSwgMHg0QiwgMHhDRSwKKyAgICAweEI0LCAweDA0LCAweDlCLCAweDlELCAweENBLCAweEI3LCAweDVFLCAweDRCLCAweEEzLCAweDZDLCAweEQxLCAweEZGLCAweDRBLCAweDcxLCAweDcxLCAweDlDLAorICAgIDB4MTEsIDB4ODcsIDB4NUUsIDB4OUUsIDB4NUQsIDB4QTksIDB4MDUsIDB4MUYsIDB4RDgsIDB4OTYsIDB4QTksIDB4M0YsIDB4RkEsIDB4RUIsIDB4MEEsIDB4OTEsCisgICAgMHg0NCwgMHhERCwgMHhDRiwgMHg5MywgMHhENSwgMHgwQSwgMHg4MCwgMHg5QywgMHhBOCwgMHhDQiwgMHgyQSwgMHg3RiwgMHgwMywgMHg0NSwgMHg0MywgMHhBNywKKyAgICAweEMzLCAweDU5LCAweEZGLCAweEZDLCAweEZGLCAweDQ0LCAweDI0LCAweEIxLCAweDAyLCAweEJCLCAweDQyLCAweENGLCAweDQ1LCAweEM5LCAweEY0LCAweEFFLAorICAgIDB4MjMsIDB4NUQsIDB4QjIsIDB4MEIsIDB4REUsIDB4QUQsIDB4N0UsIDB4RDYsIDB4MUMsIDB4NzUsIDB4RkUsIDB4OTAsIDB4Q0YsIDB4NDksIDB4QjEsIDB4NTEsCisgICAgMHgzNiwgMHgzQSwgMHg0OCwgMHhEMiwgMHhDRSwgMHhBQSwgMHg0MCwgMHgyRCwgMHhFOSwgMHg3MCwgMHg4NSwgMHhDQywgMHg2NiwgMHhCNSwgMHgyQSwgMHg4NSwKKyAgICAweEEyLCAweDFFLCAweDE4LCAweDE4LCAweEE3LCAweDZBLCAweDg5LCAweDM5LCAweDFFLCAweDU2LCAweDdFLCAweEE3LCAweEM3LCAweDlGLCAweDlCLCAweEZBLAorICAgIDB4NTgsIDB4NEEsIDB4MDgsIDB4MEUsIDB4NzgsIDB4ODEsIDB4ODQsIDB4QjMsIDB4NjYsIDB4QTQsIDB4OEIsIDB4MjAsIDB4RjIsIDB4QjAsIDB4NDgsIDB4QTQsCisgICAgMHhFNCwgMHhBMSwgMHhDMiwgMHgwNSwgMHhCNywgMHgxOSwgMHhGRSwgMHg3MSwgMHhFRiwgMHhDQiwgMHgzMCwgMHg4QywgMHhDMiwgMHgzQiwgMHhFNCwgMHg3OCwKKyAgICAweDFDLCAweDkyLCAweDUxLCAweDk2LCAweEMxLCAweDg5LCAweEEzLCAweDcxLCAweDlBLCAweDZELCAweEY1LCAweDM1LCAweEE2LCAweEVFLCAweDcxLCAweEUyLAorICAgIDB4MTIsIDB4NTUsIDB4ODgsIDB4NjEsIDB4MTAsIDB4NTAsIDB4NDcsIDB4NTMsIDB4M0QsIDB4QkEsIDB4MEYsIDB4NkEsIDB4RTksIDB4NUMsIDB4OEIsIDB4MEYsCisgICAgMHg4QiwgMHhBQywgMHhDRCwgMHgyMCwgMHhBRSwgMHg1QiwgMHg5QSwgMHg4MCwgMHhCNCwgMHg5QywgMHgyNywgMHg1RCwgMHg0NywgMHhENiwgMHgwMywgMHhGRSwKKyAgICAweDY4LCAweDM4LCAweEJDLCAweDM0LCAweDFCLCAweEZELCAweDYyLCAweENGLCAweDlBLCAweEMwLCAweEM5LCAweDdDLCAweEFCLCAweEY1LCAweDg1LCAweDFELAorICAgIDB4ODEsIDB4NDEsIDB4NkQsIDB4QjMsIDB4NjIsIDB4NzIsIDB4NEEsIDB4NkYsIDB4REQsIDB4QTgsIDB4QjQsIDB4QUUsIDB4RUEsIDB4RTAsIDB4RUQsIDB4NTcsCisgICAgMHg4MiwgMHgwQSwgMHg3RSwgMHhEMSwgMHgzQiwgMHg3RSwgMHhBNSwgMHg0MywgMHg5RSwgMHg1RiwgMHg3MywgMHg5MiwgMHhFRiwgMHhBQSwgMHhDNSwgMHhBQiwKKyAgICAweEE5LCAweDA3LCAweEQ1LCAweEI1LCAweDMyLCAweDlFLCAweEQzLCAweDY2LCAweEEzLCAweDk4LCAweERDLCAweEY1LCAweDEyLCAweEI2LCAweDg5LCAweEUwLAorICAgIDB4NTgsIDB4RTMsIDB4MjYsIDB4NjIsIDB4REMsIDB4QTIsIDB4QjksIDB4NTgsIDB4N0MsIDB4NDIsIDB4QTcsIDB4RkIsIDB4OUUsIDB4MTIsIDB4RDksIDB4NTAsCisgICAgMHg1NSwgMHhGRCwgMHg2NCwgMHhDNywgMHhGQywgMHhBMSwgMHgxMiwgMHg5OCwgMHg0MywgMHhFRSwgMHg2MiwgMHhCQywgMHg3NSwgMHgzQiwgMHg1RCwgMHhFMSwKKyAgICAweEZGLCAweEFGLCAweDI5LCAweDRELCAweDgxLCAweDZBLCAweEIyLCAweDEzLCAweDJELCAweEU5LCAweDlDLCAweDY1LCAweDkwLCAweDFBLCAweEJFLCAweDA2LAorICAgIDB4NjksIDB4OUQsIDB4QzcsIDB4RjUsIDB4OTgsIDB4RUIsIDB4QTQsIDB4MTMsIDB4NjcsIDB4REQsIDB4QTQsIDB4N0UsIDB4MjMsIDB4NTYsIDB4OTIsIDB4MzEsCisgICAgMHg2MiwgMHhBMywgMHhERCwgMHg3QiwgMHhCOSwgMHgxQywgMHhEMSwgMHgwRSwgMHhFRiwgMHgxQSwgMHhCNSwgMHg5NCwgMHhGNCwgMHgxMCwgMHhENCwgMHgyMSwKKyAgICAweDc2LCAweDE0LCAweEMxLCAweDJELCAweDVDLCAweDJGLCAweDcxLCAweDg2LCAweDk0LCAweDg0LCAweDQxLCAweDZBLCAweDFGLCAweEEyLCAweDc1LCAweEZGLAorICAgIDB4MzQsIDB4MEIsIDB4Q0EsIDB4RDQsIDB4MTEsIDB4N0YsIDB4QjcsIDB4RDAsIDB4QUIsIDB4N0UsIDB4QjksIDB4MTMsIDB4MjYsIDB4MUIsIDB4NjAsIDB4NDgsCisgICAgMHg2MiwgMHgyQSwgMHhGNywgMHgxOCwgMHgyNCwgMHhERiwgMHg1MSwgMHg2QiwgMHgzNCwgMHg2MSwgMHg5OSwgMHgyNywgMHgwMywgMHg5NSwgMHg2QywgMHhBQSwKKyAgICAweDgxLCAweEZBLCAweDk0LCAweEFCLCAweDlFLCAweDM0LCAweEE1LCAweEM1LCAweDhDLCAweEE2LCAweDZBLCAweDQzLCAweDJELCAweDVGLCAweDk5LCAweEU1LAorICAgIDB4MDAsIDB4RTUsIDB4NTEsIDB4NzEsIDB4MTksIDB4QTYsIDB4RjUsIDB4MzYsIDB4MUUsIDB4MjEsIDB4RjIsIDB4MjYsIDB4RTQsIDB4N0EsIDB4MTgsIDB4NzYsCisgICAgMHgxMCwgMHhFOSwgMHhFMCwgMHg5RSwgMHg1NCwgMHgyRCwgMHhGQSwgMHg4MywgMHg5RiwgMHg0MSwgMHg3QywgMHgwRSwgMHhBNywgMHhDOSwgMHhERCwgMHg1OCwKKyAgICAweDczLCAweDE4LCAweENCLCAweDI2LCAweDYwLCAweEU4LCAweDkwLCAweEMxLCAweDRELCAweDBCLCAweDAxLCAweDAxLCAweEQ4LCAweDU3LCAweEVELCAweDc4LAorICAgIDB4RjksIDB4MjgsIDB4MEQsIDB4QTcsIDB4MUYsIDB4NjYsIDB4OTksIDB4MEEsIDB4MTcsIDB4OEMsIDB4QTcsIDB4QzEsIDB4RDIsIDB4NTEsIDB4NEMsIDB4MkUsCisgICAgMHg3QywgMHgzRiwgMHhFMCwgMHgyRiwgMHg2NiwgMHg2RCwgMHg2OCwgMHgyQiwgMHhFMCwgMHgxNywgMHgyRiwgMHgyMSwgMHhFNSwgMHg0QSwgMHhEOSwgMHg0NiwKKyAgICAweDM5LCAweEE0LCAweEQ1LCAweDJFLCAweEY3LCAweDZGLCAweEFELCAweEE5LCAweDEzLCAweEFFLCAweDk3LCAweEYzLCAweEZDLCAweENFLCAweERBLCAweDRDLAorICAgIDB4MzUsIDB4RjEsIDB4MTksIDB4Q0MsIDB4MjcsIDB4QTQsIDB4NUMsIDB4RjksIDB4REQsIDB4MTksIDB4ODQsIDB4RjIsIDB4MzUsIDB4REQsIDB4M0QsIDB4N0EsCisgICAgMHhEMCwgMHg5RiwgMHhBNSwgMHg4MSwgMHhGQiwgMHg2NiwgMHg2RSwgMHg3MSwgMHg4MywgMHg4OCwgMHg0NywgMHhBNSwgMHhGNywgMHhFOCwgMHgxOSwgMHg1QiwKKyAgICAweDkzLCAweEUwLCAweDFBLCAweEU0LCAweEVELCAweDU2LCAweEM1LCAweENDLCAweDhELCAweENCLCAweDUwLCAweDQxLCAweDBCLCAweEVBLCAweDJELCAweDJGLAorICAgIDB4QkEsIDB4OEEsIDB4QTMsIDB4NjQsIDB4NDYsIDB4NUYsIDB4MjcsIDB4MjIsIDB4MTcsIDB4RDksIDB4Q0MsIDB4RDYsIDB4QUQsIDB4MzIsIDB4RTYsIDB4MTksCisgICAgMHgzNSwgMHhEMiwgMHgzQywgMHg1NCwgMHhCNSwgMHgxNCwgMHhDOCwgMHgzQywgMHg2NSwgMHg5RiwgMHhBNCwgMHgyQSwgMHg0NCwgMHhCQSwgMHhGMywgMHhFNSwKKyAgICAweEJBLCAweDEwLCAweDNCLCAweEQ2LCAweDY3LCAweEZCLCAweDk0LCAweDk5LCAweDlBLCAweEQ3LCAweDM3LCAweDk2LCAweEM2LCAweDZCLCAweEQ3LCAweEJBLAorICAgIDB4NTgsIDB4ODIsIDB4RUQsIDB4NDksIDB4RDgsIDB4NkEsIDB4NTgsIDB4REIsIDB4MDQsIDB4NzgsIDB4NjIsIDB4OEQsIDB4MzAsIDB4Q0EsIDB4QTAsIDB4QjgsCisgICAgMHhERSwgMHhDRCwgMHgwNiwgMHg3RCwgMHhGMywgMHhFOCwgMHhGOCwgMHg1NCwgMHhENywgMHhENCwgMHg4RCwgMHhGQiwgMHhEMCwgMHhCOSwgMHgwOCwgMHhFMywKKyAgICAweENFLCAweDgxLCAweDdDLCAweENGLCAweDcxLCAweDQxLCAweDAzLCAweDFCLCAweDlBLCAweEVELCAweDVDLCAweDcxLCAweEI1LCAweDdCLCAweDU2LCAweERDLAorICAgIDB4MEIsIDB4MUYsIDB4RjEsIDB4QUYsIDB4NTUsIDB4RTIsIDB4MzcsIDB4NDQsIDB4NDIsIDB4NjksIDB4MjcsIDB4REIsIDB4Q0UsIDB4NUUsIDB4QzEsIDB4OEEsCisgICAgMHgyMCwgMHgzMCwgMHhCRCwgMHg3RiwgMHg3MSwgMHgyQywgMHgxQSwgMHgyNiwgMHg3QywgMHhGOCwgMHhFRiwgMHg3MiwgMHg2QiwgMHg4NywgMHhCNywgMHgxMywKKyAgICAweDlCLCAweDM5LCAweEJDLCAweEJELCAweDY3LCAweEVDLCAweDU0LCAweEE5LCAweEIwLCAweDVDLCAweDExLCAweEMzLCAweDYwLCAweEE3LCAweDJGLCAweDZELAorICAgIDB4QkMsIDB4RUIsIDB4OTksIDB4ODIsIDB4NDcsIDB4RUUsIDB4RDQsIDB4RUUsIDB4ODUsIDB4QTUsIDB4RjYsIDB4RUIsIDB4NTksIDB4QTEsIDB4QzAsIDB4MEUsCisgICAgMHhDMSwgMHgxQywgMHgxQiwgMHg5RiwgMHhDNywgMHhBRCwgMHhGMSwgMHgxQywgMHgzNSwgMHg3NywgMHgwNiwgMHg0MiwgMHhENywgMHhCMiwgMHg5OCwgMHgwRCwKKyAgICAweDg2LCAweEYxLCAweDcxLCAweDkzLCAweEVELCAweDI5LCAweDEwLCAweEMxLCAweDY0LCAweEExLCAweDBELCAweDVGLCAweDIxLCAweDhFLCAweDlCLCAweDdCLAorICAgIDB4MTYsIDB4RjgsIDB4QUEsIDB4NkUsIDB4MzksIDB4MzgsIDB4NzEsIDB4QjAsIDB4REEsIDB4NkYsIDB4RjcsIDB4NzQsIDB4QkQsIDB4QUIsIDB4RjIsIDB4NEMsCisgICAgMHhCMiwgMHg5RSwgMHgxRSwgMHgxRCwgMHhCMCwgMHg3NSwgMHg5NywgMHhEMywgMHgyMiwgMHgwMywgMHgzRCwgMHhCOSwgMHgyNCwgMHgxNiwgMHgxNiwgMHg4OCwKKyAgICAweDk1LCAweDE3LCAweDlELCAweDY3LCAweDE5LCAweEMxLCAweDZGLCAweDQwLCAweEMyLCAweDYxLCAweDUyLCAweEM4LCAweDI3LCAweDM5LCAweDc1LCAweEU1LAorICAgIDB4OTMsIDB4RDUsIDB4NzEsIDB4ODksIDB4M0UsIDB4NzksIDB4MDgsIDB4NDksIDB4NEIsIDB4MDIsIDB4RDksIDB4OEQsIDB4RDgsIDB4NUIsIDB4MTksIDB4MzUsCisgICAgMHgzNCwgMHg1RiwgMHgzMiwgMHg2OCwgMHgwQSwgMHhCQSwgMHhFQSwgMHg5QywgMHhCMywgMHgyMSwgMHgyNSwgMHgyOSwgMHgzRiwgMHhBNSwgMHgxMSwgMHhGOCwKKyAgICAweDc4LCAweEE5LCAweDZFLCAweEVELCAweDdFLCAweDIwLCAweEMzLCAweEE1LCAweEM3LCAweDU2LCAweENFLCAweDI5LCAweDRFLCAweEMwLCAweEE1LCAweDA0LAorICAgIDB4NzMsIDB4MkEsIDB4RTMsIDB4MjIsIDB4RjgsIDB4MzAsIDB4RTUsIDB4MUQsIDB4MEMsIDB4NzYsIDB4MDAsIDB4RjYsIDB4OEYsIDB4RUMsIDB4NzAsIDB4NjUsCisgICAgMHgxOCwgMHg2NCwgMHhDRCwgMHgyMCwgMHgzNywgMHgzNSwgMHg0MywgMHhBMiwgMHhGMCwgMHg2NywgMHgyRCwgMHhERSwgMHg0OSwgMHhFMywgMHg3QSwgMHg2NiwKKyAgICAweDVBLCAweDAxLCAweDg3LCAweDMxLCAweEQ4LCAweDc3LCAweDg1LCAweDM5LCAweDZELCAweEJDLCAweDVBLCAweEYzLCAweDhCLCAweDVDLCAweDdDLCAweDhGLAorICAgIDB4RDgsIDB4NkEsIDB4OTgsIDB4RTYsIDB4OEMsIDB4ODAsIDB4M0EsIDB4NDQsIDB4OUIsIDB4NDQsIDB4RkMsIDB4QTEsIDB4MTMsIDB4RjksIDB4QTYsIDB4MjYsCisgICAgMHgxRCwgMHhDMiwgMHhGOCwgMHg0OSwgMHg5OCwgMHg5NywgMHg0OSwgMHhFRiwgMHgyOCwgMHg1NSwgMHgwQSwgMHgwQiwgMHgwQiwgMHgzRSwgMHgxMiwgMHgyMCwKKyAgICAweDNFLCAweDI1LCAweDU3LCAweEMwLCAweEI0LCAweEIxLCAweEQ4LCAweDg3LCAweDMzLCAweEI3LCAweEI0LCAweEQ4LCAweDk5LCAweDg2LCAweDg1LCAweEIxLAorICAgIDB4Q0QsIDB4QjAsIDB4MzYsIDB4QzEsIDB4RkQsIDB4MUQsIDB4NkUsIDB4NUUsIDB4NkMsIDB4NjUsIDB4MjgsIDB4MzQsIDB4MTMsIDB4MkMsIDB4NjUsIDB4OTEsCisgICAgMHg5OCwgMHg0NiwgMHhDRiwgMHgyNiwgMHg2NiwgMHgwNiwgMHgzNSwgMHgxMCwgMHhFNCwgMHg4MiwgMHg4OSwgMHgyRSwgMHhFMiwgMHg2MiwgMHg2QywgMHhBQSwKKyAgICAweDJCLCAweDk3LCAweEFDLCAweDIzLCAweDY3LCAweDUwLCAweEUxLCAweDg4LCAweEUyLCAweEMyLCAweDAyLCAweENDLCAweDhDLCAweDkzLCAweEFDLCAweDQ2LAorICAgIDB4QjEsIDB4MEQsIDB4NEIsIDB4NjMsIDB4NTMsIDB4QzYsIDB4NzUsIDB4MTcsIDB4QTcsIDB4NjgsIDB4OTgsIDB4QTUsIDB4OEQsIDB4NDQsIDB4NDgsIDB4OUQsCisgICAgMHg3QywgMHhFQiwgMHg3OCwgMHgwNSwgMHg5MywgMHgzMCwgMHg2RSwgMHgxNywgMHhERiwgMHgxQywgMHgzNSwgMHhFRCwgMHg2QSwgMHg3QSwgMHg1MiwgMHgzMSwKKyAgICAweDI3LCAweDJGLCAweDgyLCAweERELCAweDhELCAweDQ2LCAweDE4LCAweENFLCAweEZGLCAweDEzLCAweEY2LCAweDYyLCAweDNFLCAweEIxLCAweEJDLCAweEU1LAorICAgIDB4RjcsIDB4OEUsIDB4QTIsIDB4MDQsIDB4MjIsIDB4M0QsIDB4RkMsIDB4QTcsIDB4MEQsIDB4Q0UsIDB4OTQsIDB4MkMsIDB4NDgsIDB4QTIsIDB4NzgsIDB4N0YsCisgICAgMHgyMiwgMHhCRiwgMHgwOCwgMHg2OSwgMHhERSwgMHg4OSwgMHg1RiwgMHg1NiwgMHhFNCwgMHg4OCwgMHhEQiwgMHhBMSwgMHgwNywgMHhENiwgMHg2RSwgMHhDRSwKKyAgICAweDUwLCAweEYwLCAweEVFLCAweDMxLCAweDUyLCAweDY5LCAweEQzLCAweDg1LCAweDIyLCAweDk2LCAweDkxLCAweEE0LCAweDcxLCAweEE1LCAweEI4LCAweDdDLAorICAgIDB4MEEsIDB4OEQsIDB4NTksIDB4MUYsIDB4NDgsIDB4MkEsIDB4RkEsIDB4REMsIDB4OTQsIDB4NkUsIDB4MzEsIDB4OTIsIDB4ODAsIDB4NEEsIDB4MDUsIDB4RTQsCisgICAgMHgwMCwgMHgwMiwgMHgxOSwgMHgyMywgMHhERCwgMHhBNiwgMHgxMCwgMHgwMywgMHg2QiwgMHgzRCwgMHhDMiwgMHhBRSwgMHgzQywgMHg4NCwgMHg0NCwgMHg4NCwKKyAgICAweDlCLCAweEM5LCAweDdGLCAweDZELCAweEExLCAweEJFLCAweEU4LCAweEU5LCAweDhFLCAweDQzLCAweDE3LCAweDE4LCAweDg1LCAweDE0LCAweDZDLCAweDNFLAorICAgIDB4QjIsIDB4QjgsIDB4ODMsIDB4RkYsIDB4QTgsIDB4RTAsIDB4RjMsIDB4OUMsIDB4QTQsIDB4NzQsIDB4QTIsIDB4N0QsIDB4ODIsIDB4NTgsIDB4QUIsIDB4MEIsCisgICAgMHhEMiwgMHhDOCwgMHgwNywgMHgyOSwgMHg4RCwgMHg2NiwgMHhDRCwgMHg4NiwgMHhGQywgMHhGMCwgMHg3MSwgMHg3QSwgMHg2QSwgMHhGNCwgMHhDNCwgMHhENywKKyAgICAweEVBLCAweDM0LCAweEI4LCAweEY3LCAweENDLCAweEY3LCAweDhGLCAweDI3LCAweEIxLCAweEE3LCAweDNELCAweDMzLCAweEZFLCAweDJGLCAweEExLCAweDgwLAorICAgIDB4NTksIDB4RTksIDB4MEEsIDB4RjUsIDB4M0IsIDB4RUIsIDB4ODQsIDB4NjUsIDB4MzYsIDB4Q0MsIDB4MTYsIDB4NDksIDB4RDgsIDB4Q0UsIDB4NjQsIDB4MjIsCisgICAgMHgxMiwgMHhEQSwgMHgwNCwgMHgyMCwgMHgxNiwgMHg4NSwgMHg4MiwgMHhDMywgMHg1RCwgMHgxNywgMHhFMiwgMHgwMSwgMHhGQiwgMHhCOSwgMHg4MywgMHg1MiwKKyAgICAweDUyLCAweDUwLCAweDNCLCAweDcwLCAweDA3LCAweDg3LCAweEQ1LCAweDJFLCAweEMxLCAweDA5LCAweDA2LCAweDNCLCAweENELCAweDVBLCAweEY4LCAweDkzLAorICAgIDB4QTAsIDB4RDYsIDB4NjcsIDB4NzIsIDB4RDMsIDB4MEEsIDB4MjQsIDB4QjgsIDB4NEQsIDB4OTgsIDB4RTksIDB4QjQsIDB4M0YsIDB4REEsIDB4QjUsIDB4QTQsCisgICAgMHgzMiwgMHg3RCwgMHg4QiwgMHgyNywgMHhGMywgMHhBMCwgMHg4MSwgMHg3MywgMHgxOCwgMHgyQSwgMHhFMCwgMHg1QiwgMHgwOSwgMHg1RiwgMHgwRCwgMHhFNiwKKyAgICAweEU5LCAweDMwLCAweDdGLCAweDAwLCAweDMzLCAweEU1LCAweEUzLCAweDJCLCAweDA1LCAweDVELCAweDI5LCAweDlCLCAweEEyLCAweDkwLCAweEVFLCAweDA5LAorICAgIDB4MDQsIDB4NjIsIDB4MDcsIDB4MzQsIDB4OEQsIDB4OTUsIDB4MDAsIDB4MTcsIDB4NTYsIDB4ODgsIDB4MDUsIDB4RDIsIDB4OEUsIDB4M0YsIDB4NDksIDB4NzQsCisgICAgMHhENywgMHg1OSwgMHg2OSwgMHg5MywgMHhFMiwgMHg4QywgMHhBMSwgMHhDOSwgMHgwRCwgMHhFNywgMHgzQiwgMHg1MSwgMHhCOCwgMHhFNCwgMHhBOCwgMHg3NywKKyAgICAweDU4LCAweDdBLCAweEMyLCAweEM3LCAweDU2LCAweDAxLCAweDBDLCAweDBELCAweDVDLCAweDFGLCAweDAwLCAweDRELCAweDM2LCAweDc0LCAweDJBLCAweEExLAorICAgIDB4RDgsIDB4MDAsIDB4QzIsIDB4QUMsIDB4NjEsIDB4QUMsIDB4QUMsIDB4QzgsIDB4QTQsIDB4MEYsIDB4RTUsIDB4OEMsIDB4Q0YsIDB4OUMsIDB4MkYsIDB4OTMsCisgICAgMHgxQSwgMHg0QSwgMHhEOSwgMHg5NiwgMHg4NywgMHgzMSwgMHg0MiwgMHg1QywgMHg1OSwgMHgxNiwgMHg4OSwgMHhDNCwgMHhENSwgMHg4MCwgMHgwRiwgMHhEMSwKKyAgICAweDJFLCAweDQzLCAweDRFLCAweDhBLCAweEVFLCAweDU1LCAweDQ5LCAweDMyLCAweDE0LCAweDMxLCAweEQ0LCAweDVFLCAweDU4LCAweDRFLCAweEU5LCAweDlBLAorICAgIDB4RTMsIDB4QzIsIDB4N0MsIDB4MEUsIDB4NjIsIDB4RkYsIDB4RDQsIDB4OTMsIDB4RkEsIDB4RjMsIDB4MTYsIDB4N0QsIDB4MzUsIDB4RjgsIDB4N0EsIDB4MUQsCisgICAgMHgyRSwgMHg0QywgMHgxNCwgMHhFQywgMHhFOCwgMHhGQiwgMHgyQSwgMHg3NywgMHgxRCwgMHg3OCwgMHhDQiwgMHhFMCwgMHhDOCwgMHg1MCwgMHhFQiwgMHg5MCwKKyAgICAweDg3LCAweEVFLCAweEE0LCAweEZDLCAweEI0LCAweDFCLCAweDEwLCAweDExLCAweDQ1LCAweDk1LCAweDI2LCAweDRGLCAweENELCAweERDLCAweDNFLCAweDE2LAorICAgIDB4NTMsIDB4QkIsIDB4ODQsIDB4NUMsIDB4OTcsIDB4NUQsIDB4NzIsIDB4QkIsIDB4OTYsIDB4RDEsIDB4NzIsIDB4MDgsIDB4MEUsIDB4QUIsIDB4QTIsIDB4NDAsCisgICAgMHg2MSwgMHg4NCwgMHg0RiwgMHgwOSwgMHgxQSwgMHg1MywgMHhEOCwgMHgzMiwgMHhFQiwgMHg0OCwgMHhFQywgMHg3MiwgMHg2RSwgMHg1RCwgMHg1OSwgMHg0OCwKKyAgICAweDY5LCAweDU3LCAweEQ0LCAweDBGLCAweEE5LCAweEEwLCAweDE5LCAweDRGLCAweDNDLCAweEJCLCAweDVDLCAweDk3LCAweEY0LCAweEYxLCAweDQ4LCAweDEwLAorICAgIDB4NEQsIDB4QzEsIDB4NzQsIDB4Q0IsIDB4NjEsIDB4NEYsIDB4REUsIDB4OEUsIDB4MDQsIDB4MjgsIDB4RjIsIDB4RkMsIDB4NDMsIDB4REQsIDB4N0QsIDB4MUEsCisgICAgMHgzMCwgMHhBNSwgMHhFRCwgMHhGOCwgMHgwMSwgMHg3MCwgMHg3MywgMHhBRSwgMHg1RiwgMHg0MCwgMHhBNiwgMHg4MywgMHhGMCwgMHg1OSwgMHhFMiwgMHhGQiwKKyAgICAweEUzLCAweDQzLCAweEEyLCAweDU0LCAweDdBLCAweDlFLCAweEUyLCAweEVELCAweEYxLCAweEQ0LCAweDgyLCAweDE0LCAweEIzLCAweDg5LCAweDVBLCAweEFFLAorICAgIDB4QUIsIDB4ODMsIDB4MzcsIDB4NzMsIDB4MTQsIDB4RTAsIDB4NDgsIDB4MzcsIDB4MzgsIDB4QTIsIDB4MkIsIDB4NkQsIDB4MjYsIDB4OUEsIDB4RDcsIDB4NDAsCisgICAgMHg2RSwgMHgyOSwgMHhCNCwgMHgxQSwgMHhENCwgMHg4MiwgMHgwNywgMHgxNiwgMHhDMCwgMHgwQywgMHhBRSwgMHg0QSwgMHhBNSwgMHhCMywgMHgwOCwgMHhCRCwKKyAgICAweDNDLCAweDc4LCAweEM5LCAweDY3LCAweDNFLCAweDNELCAweDg1LCAweDM4LCAweEM0LCAweDQ5LCAweDAzLCAweDFDLCAweEU2LCAweDkyLCAweDc3LCAweDVELAorICAgIDB4RDMsIDB4RUMsIDB4NTQsIDB4N0QsIDB4MTgsIDB4MUYsIDB4MDUsIDB4RjMsIDB4QkIsIDB4N0QsIDB4RDIsIDB4QkMsIDB4QjgsIDB4NEQsIDB4RDAsIDB4NkUsCisgICAgMHhENSwgMHgwQSwgMHg1MiwgMHg0RiwgMHg3QSwgMHgyOSwgMHg0QSwgMHgyQywgMHhEQywgMHg2MSwgMHg1RCwgMHg0NCwgMHhFQSwgMHhENywgMHg4OSwgMHg0RCwKKyAgICAweDg5LCAweEIwLCAweDBELCAweDQ0LCAweEM5LCAweDRFLCAweENGLCAweEQ5LCAweEUyLCAweEZBLCAweEM4LCAweEEzLCAweEI4LCAweDJBLCAweDJELCAweDNELAorICAgIDB4MjYsIDB4NjMsIDB4MEQsIDB4QjUsIDB4MjgsIDB4MkEsIDB4QTAsIDB4MkQsIDB4MkYsIDB4QzUsIDB4N0IsIDB4RTgsIDB4QzQsIDB4NTksIDB4N0MsIDB4RUEsCisgICAgMHhGQywgMHgyRSwgMHgzRiwgMHhFMSwgMHg3MywgMHhGMSwgMHgzOCwgMHhBNiwgMHhDMCwgMHgzRSwgMHg3OCwgMHg2OSwgMHhGNiwgMHg3NywgMHg2NCwgMHgxNiwKKyAgICAweDUyLCAweDNBLCAweDBELCAweDFGLCAweDMzLCAweDNFLCAweEU2LCAweDY4LCAweDlCLCAweDMyLCAweDVFLCAweEQ2LCAweDA0LCAweEIxLCAweDg2LCAweDBELAorICAgIDB4NjEsIDB4NDQsIDB4QjksIDB4RjQsIDB4MkYsIDB4RkMsIDB4NTMsIDB4NzgsIDB4RkEsIDB4QjksIDB4MkUsIDB4MzcsIDB4NDIsIDB4NDEsIDB4QzEsIDB4MkUsCisgICAgMHgzRCwgMHhCRiwgMHhBOSwgMHgyQywgMHg2RCwgMHg0OSwgMHg0NCwgMHgwRCwgMHg3RCwgMHgwQywgMHhEMSwgMHg5MSwgMHhGRiwgMHhFNywgMHgwMiwgMHg2QywKKyAgICAweDIwLCAweEI4LCAweEUzLCAweEY1LCAweEQ3LCAweDNGLCAweDZBLCAweDVBLCAweEZCLCAweEE5LCAweDI0LCAweDM4LCAweDA2LCAweDE1LCAweDIyLCAweEFFLAorICAgIDB4RkEsIDB4NEMsIDB4Q0QsIDB4OTQsIDB4REMsIDB4MUMsIDB4M0QsIDB4NzQsIDB4MTUsIDB4ODgsIDB4M0UsIDB4RDMsIDB4NDAsIDB4OEQsIDB4NUUsIDB4QTEsCisgICAgMHhENSwgMHg0QiwgMHgyNSwgMHg1RiwgMHhFNiwgMHgwNiwgMHg5MSwgMHg2OSwgMHgxQSwgMHhCOSwgMHg3MCwgMHg3OSwgMHgwQiwgMHg2NywgMHhBRCwgMHhGOSwKKyAgICAweEI4LCAweDBFLCAweENDLCAweDZGLCAweDJBLCAweDNBLCAweDg5LCAweDE0LCAweDQ4LCAweDA3LCAweDY5LCAweDQzLCAweDRFLCAweEFBLCAweDIxLCAweEIwLAorICAgIDB4NTUsIDB4REMsIDB4QzEsIDB4OUYsIDB4MzYsIDB4MzksIDB4MjksIDB4MzYsIDB4NEIsIDB4MzMsIDB4ODQsIDB4MzUsIDB4MUQsIDB4MTMsIDB4RjUsIDB4NEYsCisgICAgMHg0NiwgMHg2NSwgMHgzMCwgMHhEOSwgMHhGQiwgMHhDOSwgMHg0MywgMHhBQiwgMHg1NCwgMHgyNywgMHg3NywgMHg0RiwgMHhDNywgMHg3MCwgMHgzNSwgMHg3NSwKKyAgICAweEJGLCAweEY1LCAweDY5LCAweDY1LCAweDkzLCAweEI4LCAweDI3LCAweDA3LCAweDEyLCAweDZGLCAweDM0LCAweEU1LCAweDZGLCAweDMxLCAweDgwLCAweEQ1LAorICAgIDB4Q0QsIDB4MEQsIDB4MjYsIDB4MkUsIDB4QzcsIDB4QjMsIDB4RjQsIDB4NjIsIDB4NzksIDB4NUMsIDB4MjAsIDB4OTcsIDB4QjUsIDB4MTcsIDB4NDYsIDB4OEEsCisgICAgMHhGRSwgMHhDNCwgMHgxMSwgMHhCQywgMHg3RSwgMHg2QywgMHhGRiwgMHhGNSwgMHg1RCwgMHgwOCwgMHg5RiwgMHhFOCwgMHg1QSwgMHg2RCwgMHg3OSwgMHgyMiwKKyAgICAweDBGLCAweEZELCAweDBBLCAweEI2LCAweDc2LCAweEM3LCAweDI4LCAweDQzLCAweDYxLCAweDc0LCAweDY5LCAweDdCLCAweDgyLCAweENGLCAweDNBLCAweEIyLAorICAgIDB4QzcsIDB4NTYsIDB4NTEsIDB4NkQsIDB4RTMsIDB4NkMsIDB4NUEsIDB4N0MsIDB4MzgsIDB4NTIsIDB4QUYsIDB4NTYsIDB4NzEsIDB4QkQsIDB4MUUsIDB4QjYsCisgICAgMHg0RCwgMHg3NywgMHg0MywgMHhEOSwgMHg3NiwgMHg5QiwgMHhGNywgMHhEMiwgMHg1RSwgMHhENSwgMHhBRiwgMHgzOSwgMHhBQSwgMHgxNCwgMHg3NCwgMHhBRiwKKyAgICAweEIxLCAweDE1LCAweDVDLCAweEE5LCAweDExLCAweDNDLCAweDYyLCAweEE5LCAweEE3LCAweDkyLCAweEI2LCAweDRGLCAweDk1LCAweENELCAweDI2LCAweDFBLAorICAgIDB4NzUsIDB4MjMsIDB4NEYsIDB4NTUsIDB4MjksIDB4N0UsIDB4NUUsIDB4REMsIDB4MDQsIDB4NTcsIDB4NzAsIDB4QzQsIDB4NEQsIDB4RUIsIDB4N0YsIDB4NTEsCisgICAgMHhCNywgMHg5OSwgMHgwRCwgMHgyMCwgMHg5MiwgMHhBNCwgMHhDOCwgMHg4OCwgMHg3QiwgMHg2RCwgMHhCNCwgMHhDOCwgMHgxQywgMHgxOSwgMHgzNiwgMHhDNywKKyAgICAweEQyLCAweEZBLCAweEMxLCAweDlCLCAweDkyLCAweDE2LCAweDc5LCAweEFELCAweDg4LCAweDlBLCAweENCLCAweDMxLCAweEE0LCAweDkyLCAweEE4LCAweEJDLAorICAgIDB4RjUsIDB4NDYsIDB4RTMsIDB4NzEsIDB4QzQsIDB4RTgsIDB4NjMsIDB4RjUsIDB4ODksIDB4NjgsIDB4MkEsIDB4MjEsIDB4NDEsIDB4NDYsIDB4ODEsIDB4N0EsCisgICAgMHg5OSwgMHhBQywgMHgwNCwgMHhERCwgMHgxOCwgMHg5MSwgMHg0RSwgMHgzRCwgMHgwMiwgMHgwNiwgMHg4QiwgMHg4QSwgMHg2RiwgMHg0NywgMHgzQSwgMHhBNSwKKyAgICAweEQ1LCAweDc1LCAweEUwLCAweDhFLCAweDgxLCAweEI4LCAweDM2LCAweDNELCAweEEwLCAweDM1LCAweDIwLCAweDVGLCAweDBCLCAweDk2LCAweDhFLCAweEQ4LAorICAgIDB4MUQsIDB4NTYsIDB4MkYsIDB4MTQsIDB4ODEsIDB4RTEsIDB4NDAsIDB4MzAsIDB4NzksIDB4ODQsIDB4N0QsIDB4NDksIDB4ODMsIDB4NzEsIDB4QkEsIDB4REMsCisgICAgMHgxNCwgMHgwQiwgMHg2NCwgMHhGQywgMHg1MiwgMHhEOCwgMHhCRSwgMHgzRiwgMHgzNSwgMHg3NCwgMHg0QywgMHg2NCwgMHgxNSwgMHg4RCwgMHg4NCwgMHhGNCwKKyAgICAweEI1LCAweDlELCAweEY5LCAweDE0LCAweDM1LCAweEM5LCAweDcxLCAweDY5LCAweDFDLCAweDFBLCAweDVELCAweDk5LCAweEE0LCAweDQxLCAweEZGLCAweDNCLAorICAgIDB4OTgsIDB4MzAsIDB4NjQsIDB4Q0UsIDB4RjMsIDB4QjMsIDB4QTksIDB4RjcsIDB4RjAsIDB4QUEsIDB4QjIsIDB4NzMsIDB4RjIsIDB4MjksIDB4MDEsIDB4OTUsCisgICAgMHg2QywgMHhGOCwgMHgxNCwgMHgyMSwgMHgxQiwgMHg2RSwgMHg1OCwgMHhENCwgMHg5RSwgMHg3QSwgMHg2MiwgMHg4MiwgMHhCNywgMHhENywgMHhCMywgMHhFRSwKKyAgICAweEVCLCAweDNGLCAweDNELCAweDNELCAweDUyLCAweDlGLCAweEE5LCAweDE1LCAweDVELCAweEI0LCAweEIwLCAweDZELCAweDE3LCAweEM4LCAweDVDLCAweDVGLAorICAgIDB4RjcsIDB4NTUsIDB4QjEsIDB4QTksIDB4QTUsIDB4MjUsIDB4RUYsIDB4ODksIDB4RTIsIDB4N0YsIDB4QkEsIDB4QUEsIDB4REQsIDB4NDAsIDB4NTQsIDB4NkYsCisgICAgMHg2RSwgMHg4NiwgMHgyNywgMHgyNCwgMHgzQiwgMHgxOCwgMHg0OSwgMHhFNiwgMHhEMywgMHg2QiwgMHhERCwgMHg0NCwgMHhDMCwgMHg5NCwgMHhCMCwgMHgxRCwKKyAgICAweDMyLCAweERFLCAweDVCLCAweDNFLCAweEVBLCAweDcyLCAweEI0LCAweDAxLCAweEExLCAweEU0LCAweDU4LCAweDUyLCAweDI2LCAweEQ3LCAweDZGLCAweEM3LAorICAgIDB4ODYsIDB4N0EsIDB4QjcsIDB4NDEsIDB4QzIsIDB4QjAsIDB4NTUsIDB4NTUsIDB4OEYsIDB4MUYsIDB4QTIsIDB4NDMsIDB4NjAsIDB4MkUsIDB4NUEsIDB4NTMsCisgICAgMHhCRiwgMHhBOCwgMHhBQywgMHhENiwgMHg2MywgMHhBOCwgMHgwRSwgMHgyQSwgMHhBMCwgMHg0RiwgMHg4QSwgMHhGMywgMHhGOSwgMHhGNiwgMHgxQywgMHhDMSwKKyAgICAweDFBLCAweDBBLCAweDNELCAweDE2LCAweDJGLCAweEY1LCAweDhBLCAweDZGLCAweEVGLCAweDQxLCAweDA4LCAweEFBLCAweDVDLCAweEZFLCAweEZGLCAweDRBLAorICAgIDB4RkUsIDB4OUQsIDB4MzYsIDB4MUIsIDB4REUsIDB4NEMsIDB4MzYsIDB4OUUsIDB4NTcsIDB4MEYsIDB4NEMsIDB4RDcsIDB4RkMsIDB4OEIsIDB4MDMsIDB4N0UsCisgICAgMHhGQiwgMHg1OSwgMHgzNCwgMHhCQiwgMHgxQywgMHg4RCwgMHhDRiwgMHg1OSwgMHg5RCwgMHg0QywgMHhBNCwgMHgyNiwgMHhEMywgMHg2OCwgMHgzNSwgMHhDRSwKKyAgICAweDgwLCAweENELCAweERCLCAweDZELCAweEUwLCAweDAyLCAweDVBLCAweEFFLCAweDY0LCAweEQ5LCAweDlFLCAweDQ0LCAweDc0LCAweDA4LCAweDcxLCAweDVFLAorICAgIDB4NkQsIDB4OTUsIDB4MEEsIDB4NjAsIDB4NzUsIDB4QUEsIDB4QTcsIDB4QjUsIDB4RDcsIDB4NzUsIDB4NUUsIDB4RDMsIDB4MDUsIDB4QTMsIDB4NTAsIDB4QTEsCisgICAgMHgzMiwgMHgxMywgMHg4QywgMHgyOSwgMHg4MSwgMHg0NSwgMHg3QSwgMHgzOCwgMHg2MSwgMHhCNSwgMHhEMCwgMHg0QywgMHhCNSwgMHg5NSwgMHhENywgMHg5MiwKKyAgICAweDU4LCAweDhDLCAweEY4LCAweDBCLCAweDlELCAweDdDLCAweDMzLCAweDM1LCAweEFFLCAweDhFLCAweDY5LCAweDQ4LCAweDBGLCAweDAzLCAweDc1LCAweDgxLAorICAgIDB4NzgsIDB4RTgsIDB4OTEsIDB4MEQsIDB4RUYsIDB4ODQsIDB4OTEsIDB4NTMsIDB4RjEsIDB4RTYsIDB4RUQsIDB4QzEsIDB4RDcsIDB4MUQsIDB4RDMsIDB4RTAsCisgICAgMHg3MywgMHg5RSwgMHg5NCwgMHhENSwgMHg2OCwgMHhFOSwgMHhCRCwgMHgxMywgMHhBNiwgMHgyMiwgMHg3NiwgMHgxOSwgMHg1RiwgMHgyRCwgMHhBQywgMHhGOSwKKyAgICAweEQ2LCAweDA2LCAweDg4LCAweDFFLCAweDVCLCAweEE1LCAweDAwLCAweDY3LCAweDZGLCAweDBELCAweEQyLCAweEYzLCAweDVELCAweDhELCAweDA2LCAweDkwLAorICAgIDB4RDEsIDB4RjcsIDB4QkUsIDB4MzksIDB4MTksIDB4RDUsIDB4OUUsIDB4NjAsIDB4NkIsIDB4RDQsIDB4NTEsIDB4RTYsIDB4NDYsIDB4QjIsIDB4OTYsIDB4QzQsCisgICAgMHgwMSwgMHhDMywgMHhEMiwgMHhBNSwgMHgzRCwgMHhDRCwgMHg0RiwgMHg5QywgMHhCRCwgMHgzRCwgMHhDMywgMHgwRiwgMHgxRSwgMHg5NCwgMHhBOCwgMHhGRCwKKyAgICAweDI2LCAweEE5LCAweDlDLCAweDRDLCAweEE0LCAweEY4LCAweEJDLCAweEQ4LCAweEIxLCAweEM3LCAweEZFLCAweDVGLCAweDhCLCAweEYyLCAweDYwLCAweDM3LAorICAgIDB4NkQsIDB4RjksIDB4NjIsIDB4RUYsIDB4QUUsIDB4QUQsIDB4MTksIDB4NjksIDB4QUYsIDB4MjAsIDB4MjYsIDB4NDEsIDB4NjAsIDB4RUMsIDB4OEQsIDB4MzIsCisgICAgMHg2QiwgMHgzQiwgMHhBMywgMHhBMiwgMHg2NywgMHhCMCwgMHg2RCwgMHhBMywgMHg0OCwgMHg4QSwgMHhBQSwgMHgwMywgMHhEMywgMHhFNCwgMHhFNywgMHg3NiwKKyAgICAweEEwLCAweDhDLCAweEJFLCAweDUzLCAweEYzLCAweDJFLCAweDk2LCAweDFBLCAweEVCLCAweDFFLCAweDM4LCAweDQ3LCAweDI5LCAweDY0LCAweDhGLCAweERCLAorICAgIDB4MTUsIDB4QUEsIDB4RkYsIDB4RTYsIDB4QzAsIDB4MTYsIDB4MjIsIDB4RDgsIDB4OTUsIDB4MzYsIDB4NTYsIDB4MjgsIDB4NUIsIDB4OTAsIDB4MEMsIDB4OEMsCisgICAgMHhGMywgMHgwMywgMHgwMSwgMHhBMywgMHg1MywgMHgxNywgMHg2MiwgMHgwQywgMHhCNiwgMHhEQywgMHg2NSwgMHhFNCwgMHg3MCwgMHg0OSwgMHhEMiwgMHg3NiwKKyAgICAweDg1LCAweDQ3LCAweDkwLCAweDhCLCAweDg0LCAweEY0LCAweDAwLCAweDEzLCAweDBBLCAweEI2LCAweDNGLCAweEY0LCAweDNFLCAweDY3LCAweDFBLCAweDExLAorICAgIDB4RkYsIDB4QTUsIDB4MjgsIDB4MEYsIDB4MUUsIDB4MEMsIDB4RDUsIDB4RTksIDB4OTksIDB4M0UsIDB4MDksIDB4QjUsIDB4MEIsIDB4ODcsIDB4OUIsIDB4RjEsCisgICAgMHhCMiwgMHg4RCwgMHhGRCwgMHgyNCwgMHg5NSwgMHg0MywgMHg1MiwgMHgxRCwgMHgzOCwgMHhBNywgMHgxQiwgMHg5OCwgMHgzOCwgMHhFQywgMHg2OCwgMHg3QywKKyAgICAweDY5LCAweDQ1LCAweDE3LCAweDIxLCAweDYzLCAweDg1LCAweDE2LCAweEY4LCAweENFLCAweDEwLCAweEE0LCAweEUxLCAweENFLCAweEQ4LCAweDFBLCAweDgyLAorICAgIDB4NkUsIDB4QzcsIDB4MDYsIDB4RDQsIDB4QjAsIDB4NTgsIDB4MDksIDB4MjIsIDB4OTUsIDB4ODQsIDB4MEUsIDB4RDYsIDB4MkUsIDB4MDYsIDB4NzQsIDB4MDcsCisgICAgMHg1RCwgMHgwMSwgMHg4QiwgMHg4OCwgMHg4RCwgMHg2NiwgMHhGNCwgMHgwRCwgMHgzNiwgMHg1MiwgMHg0MSwgMHhDRCwgMHhFNiwgMHgxNywgMHhCRiwgMHhGMiwKKyAgICAweDM3LCAweDUwLCAweDY4LCAweDNBLCAweDVDLCAweDdELCAweDRGLCAweEQ1LCAweEUwLCAweEU3LCAweEIzLCAweDI0LCAweEQzLCAweDJBLCAweDA3LCAweDE4LAorICAgIDB4OUYsIDB4NTMsIDB4OEQsIDB4NTIsIDB4RDYsIDB4OTgsIDB4MjYsIDB4MzAsIDB4QTUsIDB4NDMsIDB4MDQsIDB4N0MsIDB4QjEsIDB4RjMsIDB4OTMsIDB4RTIsCisgICAgMHhFNiwgMHgyMSwgMHgxQiwgMHg5NCwgMHhEQSwgMHhFRSwgMHgyOSwgMHhCMSwgMHhEQiwgMHgwNywgMHgzRCwgMHg5RiwgMHg5QiwgMHgxNCwgMHg4RiwgMHg0RSwKKyAgICAweDlELCAweENCLCAweENFLCAweEE5LCAweDVDLCAweDYwLCAweEIxLCAweEMwLCAweDRDLCAweEI3LCAweDg5LCAweEJBLCAweEQyLCAweDE0LCAweEVFLCAweDk0LAorICAgIDB4QkMsIDB4RDQsIDB4NUQsIDB4OTAsIDB4M0IsIDB4QzYsIDB4QzUsIDB4N0MsIDB4Q0IsIDB4MTMsIDB4QjksIDB4REUsIDB4QTAsIDB4MDYsIDB4MzcsIDB4OTQsCisgICAgMHg3MywgMHhCQywgMHhDOCwgMHhBMCwgMHhEQiwgMHhFMywgMHg1MSwgMHhEMywgMHgzNiwgMHhCNSwgMHg0RSwgMHg0RiwgMHhBMCwgMHhCMCwgMHg3NCwgMHgzOCwKKyAgICAweDc2LCAweEJDLCAweDhBLCAweDk4LCAweDRCLCAweEZBLCAweDAwLCAweDRGLCAweDg5LCAweEE1LCAweDU5LCAweDkyLCAweEM0LCAweEFELCAweDM1LCAweDY3LAorICAgIDB4NjgsIDB4RTUsIDB4N0QsIDB4REQsIDB4NUUsIDB4MUMsIDB4NTAsIDB4MzUsIDB4NEUsIDB4RTEsIDB4RUIsIDB4OUMsIDB4MUEsIDB4RDIsIDB4NEMsIDB4OTgsCisgICAgMHgyNSwgMHgyQSwgMHg0MywgMHg3RSwgMHg3QywgMHg2NCwgMHg0NSwgMHgxQiwgMHgxOSwgMHg5NywgMHhERSwgMHhEMCwgMHhDQiwgMHgyNCwgMHg1QywgMHg0MCwKKyAgICAweDk1LCAweDQ2LCAweDBBLCAweEVDLCAweDE0LCAweDU5LCAweDU1LCAweDEwLCAweDEyLCAweDIzLCAweDFDLCAweEY5LCAweDlFLCAweEI1LCAweEVGLCAweEVBLAorICAgIDB4NkUsIDB4RTQsIDB4NkIsIDB4RjcsIDB4REQsIDB4OTUsIDB4RDIsIDB4OEYsIDB4OTYsIDB4QkEsIDB4REEsIDB4MDQsIDB4ODcsIDB4NDcsIDB4NUIsIDB4MkEsCisgICAgMHhCNiwgMHg3MSwgMHgyQywgMHhFMywgMHhDQSwgMHhDNiwgMHg5NCwgMHhDMCwgMHhBMCwgMHhCOCwgMHgxNywgMHg3OCwgMHgwQSwgMHhGRSwgMHhCOSwgMHgxRSwKKyAgICAweEIzLCAweENCLCAweDIxLCAweDdFLCAweDkwLCAweDAxLCAweEIyLCAweEJELCAweEVFLCAweDgxLCAweEQwLCAweDA1LCAweERFLCAweEMyLCAweEZCLCAweDZFLAorICAgIDB4OTQsIDB4REMsIDB4MjIsIDB4QTAsIDB4MEYsIDB4OEEsIDB4RDUsIDB4QjUsIDB4NTYsIDB4QTUsIDB4QjQsIDB4MzksIDB4Q0QsIDB4MUUsIDB4REIsIDB4NUEsCisgICAgMHhGMiwgMHg5MiwgMHhBOCwgMHg3QiwgMHgxRiwgMHhEQywgMHg0NCwgMHhFNywgMHhGRiwgMHhFMywgMHg1OSwgMHg2OSwgMHgyRCwgMHg1RSwgMHg0NSwgMHg1MywKKyAgICAweDk5LCAweEI2LCAweEMyLCAweDE1LCAweDIxLCAweDY1LCAweDMyLCAweDQzLCAweEZDLCAweEFELCAweDZELCAweDkxLCAweEM5LCAweDA5LCAweDgyLCAweDZCLAorICAgIDB4MkMsIDB4QTgsIDB4MEEsIDB4RTgsIDB4NEEsIDB4RDcsIDB4MTksIDB4MDYsIDB4NTMsIDB4OUEsIDB4MDAsIDB4MEEsIDB4OUUsIDB4MjUsIDB4QTYsIDB4NkUsCisgICAgMHhFMCwgMHg5OCwgMHhDMiwgMHhDOSwgMHhENCwgMHg5OCwgMHgzMiwgMHhFNCwgMHhFRSwgMHgzNywgMHg1RCwgMHgxRiwgMHgxMCwgMHgyMiwgMHhDRCwgMHg5MSwKKyAgICAweEJELCAweDdCLCAweERBLCAweDI3LCAweEI1LCAweDA2LCAweDVBLCAweDlFLCAweDI3LCAweDZDLCAweEJBLCAweDUzLCAweDIwLCAweDEzLCAweEEzLCAweDJFLAorICAgIDB4QUMsIDB4MDUsIDB4OUEsIDB4M0MsIDB4RDEsIDB4RUIsIDB4QTIsIDB4RTgsIDB4N0YsIDB4NEUsIDB4QjAsIDB4RTYsIDB4NUEsIDB4NzMsIDB4NkIsIDB4NUQsCisgICAgMHgzNywgMHg4MCwgMHg2NiwgMHhEMywgMHg1MCwgMHgyMSwgMHhBNiwgMHg5RSwgMHg0MywgMHgxNSwgMHgxNSwgMHg3NywgMHhDNywgMHgwQiwgMHgzMCwgMHgxNiwKKyAgICAweEI2LCAweDhELCAweDM4LCAweDkzLCAweDUzLCAweEY1LCAweDY4LCAweEY0LCAweDM0LCAweDA3LCAweEQxLCAweEJELCAweDEwLCAweERFLCAweERELCAweDRFLAorICAgIDB4ODcsIDB4MzIsIDB4QjYsIDB4QjQsIDB4MzcsIDB4RDEsIDB4QkIsIDB4OEEsIDB4RDIsIDB4NEIsIDB4QkYsIDB4MDQsIDB4NzMsIDB4M0EsIDB4MzYsIDB4NUMsCisgICAgMHg4NywgMHhGNywgMHgwQiwgMHg0MSwgMHgxMSwgMHhGNiwgMHgyNywgMHgyQywgMHhCNiwgMHhDMiwgMHg4QiwgMHhCRSwgMHg2RSwgMHg1RCwgMHgxNywgMHhBNiwKKyAgICAweEVDLCAweDc0LCAweERGLCAweEU0LCAweDg4LCAweERELCAweDlFLCAweEVGLCAweEZELCAweDJCLCAweDI1LCAweEQ5LCAweDNCLCAweDQyLCAweEIxLCAweDJGLAorICAgIDB4MjEsIDB4RTQsIDB4MjksIDB4QzgsIDB4NjksIDB4NDgsIDB4QzgsIDB4QjgsIDB4QjMsIDB4OEMsIDB4MkIsIDB4NEYsIDB4MzEsIDB4QjksIDB4MEMsIDB4QjIsCisgICAgMHhFMSwgMHhFOSwgMHhFMSwgMHhGNCwgMHg3QywgMHhFOSwgMHg3OCwgMHgxRiwgMHhGRiwgMHhCNywgMHg2RCwgMHhGOSwgMHgwMSwgMHhGNSwgMHhEQSwgMHhDQiwKKyAgICAweDM3LCAweDIwLCAweEFFLCAweDI5LCAweEVELCAweEM3LCAweDkzLCAweDI1LCAweEI3LCAweDEwLCAweDQ3LCAweDFFLCAweDA3LCAweDhBLCAweDgyLCAweERDLAorICAgIDB4QjksIDB4OTMsIDB4MzksIDB4QTAsIDB4RDgsIDB4MjQsIDB4NUYsIDB4QTIsIDB4OEMsIDB4RTUsIDB4QjAsIDB4QUMsIDB4OEMsIDB4NjMsIDB4MDksIDB4NTAsCisgICAgMHg0OSwgMHgwNCwgMHgyNywgMHhENSwgMHgyQiwgMHhBNSwgMHhBMSwgMHg4QywgMHg4NiwgMHg4QiwgMHgzRCwgMHgxOSwgMHhDNiwgMHgzOSwgMHg4OCwgMHhCOCwKKyAgICAweEI0LCAweDJCLCAweDRDLCAweDVELCAweDZCLCAweDlDLCAweDM2LCAweEE2LCAweDdBLCAweDFBLCAweEE3LCAweDcxLCAweEU4LCAweDk3LCAweDc4LCAweDFDLAorICAgIDB4MDMsIDB4REEsIDB4MEQsIDB4QTMsIDB4RTksIDB4RjYsIDB4NUYsIDB4NjMsIDB4MkUsIDB4OUIsIDB4NkMsIDB4ODYsIDB4QjksIDB4N0MsIDB4M0QsIDB4RDIsCisgICAgMHhDOSwgMHg5MCwgMHhDQSwgMHg1RiwgMHg0OCwgMHg1RSwgMHgxQywgMHgxMSwgMHg4OCwgMHhDQSwgMHhCRiwgMHg3OSwgMHhCNSwgMHhCRiwgMHgyRCwgMHhFRCwKKyAgICAweEZFLCAweDRELCAweEM2LCAweDJDLCAweEZCLCAweDhFLCAweDBFLCAweDQyLCAweDUzLCAweDhDLCAweEIyLCAweDA3LCAweDkyLCAweEZGLCAweEVDLCAweDZCLAorICAgIDB4QUEsIDB4QzUsIDB4QUUsIDB4MjUsIDB4MDksIDB4RUEsIDB4QkIsIDB4ODIsIDB4NUUsIDB4ODYsIDB4NjMsIDB4RDIsIDB4RjUsIDB4NTksIDB4OEYsIDB4MjYsCisgICAgMHhGNSwgMHg5OCwgMHgxNywgMHhFNCwgMHg2QSwgMHg4OSwgMHgyOCwgMHgyQiwgMHhGNSwgMHg4QSwgMHg1RSwgMHg5NiwgMHgxQywgMHg4RCwgMHhCRSwgMHgzMCwKKyAgICAweDQ3LCAweEU2LCAweDc1LCAweDg0LCAweDc5LCAweEZFLCAweEYxLCAweDM1LCAweERELCAweDcwLCAweDdFLCAweENBLCAweEM5LCAweDFGLCAweEQ4LCAweDAzLAorICAgIDB4MjYsIDB4RUEsIDB4NDgsIDB4MzksIDB4NjgsIDB4RkYsIDB4MzQsIDB4OEIsIDB4NTgsIDB4QzYsIDB4N0MsIDB4NjgsIDB4NTQsIDB4MUEsIDB4MDMsIDB4MTcsCisgICAgMHg1NSwgMHgyMywgMHhGOSwgMHhBOCwgMHg2NiwgMHgwNCwgMHg2QSwgMHhCNCwgMHgzQywgMHhBOSwgMHhEQiwgMHg0NiwgMHg1QywgMHg0OCwgMHhFQiwgMHhCMiwKKyAgICAweDBELCAweDc0LCAweDY3LCAweDMwLCAweEQ2LCAweDJELCAweEZGLCAweDMwLCAweDZELCAweEI1LCAweDY2LCAweDY2LCAweDdDLCAweEUyLCAweDhCLCAweEIwLAorICAgIDB4QjYsIDB4MDgsIDB4RkUsIDB4MkYsIDB4MDUsIDB4QzQsIDB4MjYsIDB4MzMsIDB4MUYsIDB4NDAsIDB4QzMsIDB4MDcsIDB4MDQsIDB4QUUsIDB4RkMsIDB4QzEsCisgICAgMHgyMywgMHhFNSwgMHgzMSwgMHhFQSwgMHgxNiwgMHg2MywgMHhCNSwgMHg5QywgMHhEOCwgMHgyRCwgMHhDMSwgMHhDRSwgMHg0NiwgMHhCQywgMHg0QywgMHg4OCwKKyAgICAweDdDLCAweEJDLCAweDg2LCAweEM1LCAweDg5LCAweDY5LCAweDkzLCAweDEzLCAweDk3LCAweDBDLCAweDA1LCAweEYzLCAweDdDLCAweDlELCAweDIzLCAweEMyLAorICAgIDB4ODEsIDB4MkMsIDB4QjksIDB4OTgsIDB4MDUsIDB4M0QsIDB4MUIsIDB4NjcsIDB4REEsIDB4NTAsIDB4MDQsIDB4RDQsIDB4NzksIDB4OEEsIDB4OTcsIDB4NjMsCisgICAgMHhFNSwgMHhBRiwgMHhBNCwgMHhGRCwgMHgzRCwgMHg0RCwgMHgxNywgMHgzRCwgMHg4QiwgMHg5QywgMHhBOCwgMHhFRiwgMHhBMSwgMHg0MiwgMHg2MiwgMHhGRSwKKyAgICAweEQwLCAweEQzLCAweDg2LCAweEJFLCAweDhELCAweENCLCAweDU0LCAweDAyLCAweENELCAweDRELCAweEJGLCAweEE5LCAweEMyLCAweDc0LCAweEJDLCAweDRDLAorICAgIDB4ODIsIDB4NUEsIDB4MEEsIDB4RjksIDB4QzYsIDB4NkMsIDB4RDEsIDB4NTksIDB4MkIsIDB4OEYsIDB4RUQsIDB4NTEsIDB4QUYsIDB4QTYsIDB4MTcsIDB4NEEsCisgICAgMHhCQiwgMHhCRCwgMHhFNCwgMHgxQiwgMHhBMiwgMHg0MCwgMHhDOSwgMHhBQiwgMHg3RiwgMHhFMCwgMHg1OSwgMHgxOSwgMHg5OCwgMHhDRSwgMHg4NCwgMHg1MSwKKyAgICAweDM1LCAweDNGLCAweDQ5LCAweDBFLCAweDlGLCAweDEzLCAweEQzLCAweDQzLCAweEFGLCAweDk4LCAweEQ3LCAweDhBLCAweDhFLCAweDJFLCAweDg4LCAweDAyLAorICAgIDB4NEMsIDB4MTcsIDB4MDgsIDB4OUYsIDB4RkQsIDB4NEMsIDB4RjcsIDB4OUYsIDB4MzgsIDB4NzQsIDB4NEUsIDB4MzksIDB4Q0YsIDB4OTMsIDB4QzMsIDB4MEEsCisgICAgMHhCMiwgMHg5QiwgMHhCRiwgMHhFNCwgMHhBRSwgMHhBNSwgMHg2RCwgMHg3RiwgMHgxQSwgMHg2MiwgMHgxNiwgMHgwNSwgMHg5QywgMHgxMCwgMHhGNCwgMHg4MSwKKyAgICAweDZGLCAweEE3LCAweERGLCAweEU4LCAweDk1LCAweEM4LCAweDg4LCAweDhBLCAweDExLCAweEVCLCAweDU2LCAweEM2LCAweDI3LCAweEUwLCAweDkyLCAweDQ1LAorICAgIDB4ODcsIDB4NkYsIDB4NjMsIDB4MTEsIDB4MUIsIDB4NUMsIDB4RDgsIDB4NEUsIDB4MTMsIDB4QUEsIDB4QjUsIDB4MDQsIDB4MTUsIDB4Q0QsIDB4RjYsIDB4NjYsCisgICAgMHgxQywgMHg3QywgMHg2MiwgMHgzQSwgMHg2RiwgMHg3MywgMHhDRiwgMHg4QiwgMHhBQiwgMHgzQSwgMHg0MiwgMHg1RSwgMHgxRiwgMHg1OCwgMHgzRSwgMHhGMiwKKyAgICAweDRDLCAweEFGLCAweENCLCAweDdBLCAweDBFLCAweDBDLCAweEFCLCAweEVELCAweDA0LCAweEY2LCAweEMyLCAweDkxLCAweEFDLCAweDhELCAweDMwLCAweEYxLAorICAgIDB4MkEsIDB4NDMsIDB4NTMsIDB4MDIsIDB4NUMsIDB4RjUsIDB4OTIsIDB4MjEsIDB4NTAsIDB4NTYsIDB4MkUsIDB4MzgsIDB4N0MsIDB4NkUsIDB4NDgsIDB4REUsCisgICAgMHg4MSwgMHgwRSwgMHg0MSwgMHgzQiwgMHhBMCwgMHg3NCwgMHhGQywgMHg2MywgMHhDMywgMHgzRCwgMHg4RSwgMHhDOSwgMHgyOCwgMHhBMiwgMHhBMCwgMHg1NywKKyAgICAweDRBLCAweERDLCAweEI1LCAweEFBLCAweDFFLCAweDg2LCAweEEyLCAweDZDLCAweDU1LCAweEY3LCAweEM5LCAweDFGLCAweDI4LCAweDZCLCAweEI1LCAweEQ2LAorICAgIDB4OTgsIDB4MjUsIDB4MzIsIDB4RTAsIDB4QTUsIDB4MjksIDB4QzgsIDB4QTYsIDB4RkUsIDB4OTUsIDB4QzAsIDB4QTUsIDB4RkUsIDB4ODIsIDB4MzIsIDB4RDUsCisgICAgMHhDMCwgMHhGRSwgMHg2MywgMHgzNywgMHhCRCwgMHg1NywgMHg0MiwgMHg1MywgMHhGNiwgMHhGOSwgMHg2QSwgMHgyQywgMHg4OCwgMHg3MSwgMHhEQywgMHhCNSwKKyAgICAweDI4LCAweEYwLCAweDE4LCAweDdFLCAweDQ1LCAweEYwLCAweEIyLCAweDE5LCAweDE1LCAweDFDLCAweDJELCAweDFBLCAweEQyLCAweEY0LCAweEFELCAweERCLAorICAgIDB4QUYsIDB4MjMsIDB4MDcsIDB4QTEsIDB4M0YsIDB4REUsIDB4OTcsIDB4QTUsIDB4MUEsIDB4RDIsIDB4N0UsIDB4NjEsIDB4OEQsIDB4MjMsIDB4NDksIDB4QzYsCisgICAgMHgyMiwgMHgwRSwgMHhFMCwgMHhEOSwgMHg0MCwgMHhDNSwgMHhFMiwgMHhENywgMHgwQywgMHhEQywgMHhEMSwgMHg1MCwgMHg0NSwgMHhDMywgMHg3NCwgMHg2NCwKKyAgICAweEQ0LCAweENDLCAweDExLCAweEVDLCAweDFGLCAweDVFLCAweDdFLCAweDY3LCAweDc2LCAweDczLCAweDNFLCAweDU1LCAweDQzLCAweDQ0LCAweDMxLCAweDFCLAorICAgIDB4QkQsIDB4RjMsIDB4QTksIDB4N0MsIDB4NzIsIDB4Q0UsIDB4ODMsIDB4MkUsIDB4NUQsIDB4MkIsIDB4RjYsIDB4MkMsIDB4QTUsIDB4QjIsIDB4QzYsIDB4QjEsCisgICAgMHg3MSwgMHgxRSwgMHhFQSwgMHgzMywgMHhGMSwgMHg4MywgMHgyQSwgMHgyMSwgMHg2NSwgMHgxMywgMHhGRSwgMHhBMCwgMHgyMSwgMHhCNywgMHg0NCwgMHgwNywKKyAgICAweDA0LCAweEYxLCAweDQ2LCAweDFELCAweEVGLCAweDcxLCAweDgwLCAweDI3LCAweDQyLCAweDVGLCAweDkwLCAweDU1LCAweDU0LCAweDg0LCAweDYwLCAweDM3LAorICAgIDB4Q0YsIDB4RkIsIDB4RkEsIDB4MzYsIDB4NEQsIDB4OTIsIDB4NjMsIDB4ODIsIDB4M0QsIDB4RTgsIDB4QzIsIDB4MDksIDB4RTcsIDB4QkUsIDB4QzMsIDB4N0QsCisgICAgMHg0QywgMHgxNywgMHhGMSwgMHg1QywgMHgwRiwgMHhCNiwgMHg1NywgMHgyNSwgMHg1RCwgMHhDMCwgMHgwQywgMHg2MywgMHhFMSwgMHhGMiwgMHg5RiwgMHg2OSwKKyAgICAweEQ2LCAweDM1LCAweDczLCAweERDLCAweEIzLCAweDFELCAweERBLCAweDcyLCAweDVFLCAweEI3LCAweDEyLCAweDNCLCAweDQzLCAweEY3LCAweEI0LCAweENDLAorICAgIDB4NDgsIDB4QUMsIDB4RTIsIDB4QjMsIDB4RkIsIDB4MTUsIDB4OTEsIDB4MDMsIDB4RkIsIDB4REYsIDB4MkEsIDB4NEQsIDB4NzAsIDB4ODgsIDB4NzUsIDB4MDIsCisgICAgMHgxOCwgMHg1MywgMHhGOSwgMHg5RiwgMHhDMSwgMHg5QywgMHgwQywgMHg1QiwgMHg1QSwgMHg1OSwgMHgxQiwgMHg1RiwgMHg0QSwgMHhFNSwgMHgzOSwgMHgyMCwKKyAgICAweEFELCAweDI4LCAweEM3LCAweDgwLCAweDc3LCAweDEzLCAweDhFLCAweDYxLCAweEJELCAweEU4LCAweDgwLCAweDM3LCAweDQxLCAweDZFLCAweEU3LCAweDc1LAorICAgIDB4Q0EsIDB4NDEsIDB4QzYsIDB4QTksIDB4Q0MsIDB4MUMsIDB4QUYsIDB4RkYsIDB4OTcsIDB4Q0MsIDB4RkUsIDB4RjIsIDB4RUQsIDB4ODUsIDB4RDgsIDB4QjEsCisgICAgMHg0RiwgMHhGMywgMHg3QSwgMHhFNywgMHhGOSwgMHgxOCwgMHg0MSwgMHhENywgMHg0OSwgMHhBMiwgMHgxQiwgMHhCQywgMHhFMiwgMHg4OSwgMHg5MywgMHg1NCwKKyAgICAweDVBLCAweEYxLCAweDVFLCAweEEzLCAweDY2LCAweDUxLCAweDhDLCAweDY2LCAweDdBLCAweEY3LCAweDQ0LCAweEQ3LCAweEZELCAweDkwLCAweEYxLCAweEVFLAorICAgIDB4M0UsIDB4RjYsIDB4MEUsIDB4QTUsIDB4RTksIDB4REIsIDB4RDAsIDB4REIsIDB4NTgsIDB4QTcsIDB4NDUsIDB4QTksIDB4MzQsIDB4RDgsIDB4NDQsIDB4QTMsCisgICAgMHg2NSwgMHgyOSwgMHhDQiwgMHg2MSwgMHg4RSwgMHhBRCwgMHg3RiwgMHg5NSwgMHhCQSwgMHg3MSwgMHhGQiwgMHhCNiwgMHg5MywgMHg1RiwgMHg2RiwgMHhGQywKKyAgICAweEMxLCAweEFBLCAweEU2LCAweDlGLCAweDczLCAweDU1LCAweDY5LCAweEU3LCAweDM1LCAweDEyLCAweENBLCAweDI2LCAweDU2LCAweDM5LCAweDc5LCAweEZCLAorICAgIDB4QUIsIDB4NTMsIDB4MDAsIDB4RjAsIDB4OEYsIDB4NzIsIDB4QkYsIDB4MkQsIDB4MzAsIDB4MDUsIDB4NjcsIDB4NjUsIDB4NEIsIDB4RDMsIDB4NkEsIDB4RjcsCisgICAgMHg4QiwgMHg3OSwgMHg0MSwgMHhGQSwgMHg4OSwgMHgyQSwgMHhEQiwgMHgwQywgMHhBMSwgMHgxMCwgMHhGQywgMHgzQSwgMHgxMiwgMHg2MywgMHg1NSwgMHhCMCwKKyAgICAweDNBLCAweEI1LCAweDMwLCAweERCLCAweDA4LCAweDc2LCAweEFGLCAweEY2LCAweDFBLCAweEQ5LCAweEFFLCAweDUxLCAweDgxLCAweEUzLCAweDg0LCAweDkwLAorICAgIDB4NzAsIDB4MkMsIDB4MUIsIDB4QTcsIDB4NzUsIDB4QTMsIDB4NDQsIDB4RDIsIDB4OUIsIDB4NzEsIDB4N0MsIDB4MzksIDB4MEUsIDB4MUUsIDB4MzIsIDB4N0QsCisgICAgMHg2QiwgMHg0MCwgMHg5MCwgMHhFRSwgMHhFRiwgMHg4NSwgMHhCMywgMHgyMSwgMHg4NiwgMHgyQiwgMHhFNywgMHg1MywgMHg3MCwgMHg3QiwgMHhCNCwgMHhFMiwKKyAgICAweDJELCAweEJFLCAweDFGLCAweDYxLCAweEVBLCAweDdELCAweDMxLCAweDRFLCAweDA3LCAweEI2LCAweEQzLCAweDIwLCAweDgyLCAweDJGLCAweDdFLCAweEVBLAorICAgIDB4NjMsIDB4OEUsIDB4MzEsIDB4RDgsIDB4Q0UsIDB4M0MsIDB4NTAsIDB4NTgsIDB4NTgsIDB4OTksIDB4M0QsIDB4NzcsIDB4MTgsIDB4NkMsIDB4RjYsIDB4NjQsCisgICAgMHhCMiwgMHhCOCwgMHhCRiwgMHgzOSwgMHhFMCwgMHgyQywgMHg0NywgMHhBRiwgMHhCQywgMHhERiwgMHhDOSwgMHhFMywgMHg0QSwgMHg5MiwgMHhCMywgMHhBQiwKKyAgICAweDI4LCAweDRDLCAweDA3LCAweDMyLCAweDUzLCAweERDLCAweDMzLCAweDI1LCAweEM4LCAweEQ2LCAweEFDLCAweEU5LCAweEZGLCAweDE3LCAweEYxLCAweDYzLAorICAgIDB4RDYsIDB4MDMsIDB4NkEsIDB4ODEsIDB4RUUsIDB4M0YsIDB4REEsIDB4QUUsIDB4RDEsIDB4NUQsIDB4QUQsIDB4OTIsIDB4NTEsIDB4OTksIDB4QTgsIDB4NUMsCisgICAgMHhEQSwgMHg0NywgMHgzQSwgMHhEQiwgMHg5NCwgMHg5RCwgMHg4OSwgMHhBMiwgMHgyNCwgMHg4OCwgMHhCMCwgMHhCQiwgMHgyMiwgMHg0NiwgMHg4RiwgMHgwMywKKyAgICAweEIwLCAweDlDLCAweEI5LCAweERFLCAweEQ2LCAweENBLCAweEVBLCAweERFLCAweDZCLCAweDk3LCAweEE5LCAweEIwLCAweEIzLCAweERCLCAweEE2LCAweDVFLAorICAgIDB4QUQsIDB4RUMsIDB4MTIsIDB4MjMsIDB4MDQsIDB4NEQsIDB4N0IsIDB4RjIsIDB4N0MsIDB4MEEsIDB4RTIsIDB4QjMsIDB4QTAsIDB4ODEsIDB4NTgsIDB4OEYsCisgICAgMHhDMCwgMHhBNiwgMHhFOSwgMHhERiwgMHg3RiwgMHhBNywgMHg4OSwgMHg2RSwgMHgyRCwgMHg2OCwgMHgyMywgMHhGMSwgMHgyOSwgMHhCNywgMHhENywgMHhEQywKKyAgICAweDYzLCAweDRBLCAweENCLCAweDgzLCAweDI0LCAweEMwLCAweEU0LCAweDU0LCAweDVDLCAweDY3LCAweDEyLCAweEIzLCAweEZCLCAweDZBLCAweDFFLCAweDM3LAorICAgIDB4RTAsIDB4QkUsIDB4ODUsIDB4REEsIDB4N0MsIDB4QjQsIDB4OEIsIDB4RUMsIDB4RTgsIDB4QkIsIDB4MDgsIDB4ODQsIDB4RDksIDB4OTAsIDB4NEIsIDB4NTYsCisgICAgMHhGQSwgMHgyRiwgMHhBMiwgMHgzNiwgMHhDOCwgMHg5NywgMHhGQywgMHgzRSwgMHhDMCwgMHg5QywgMHgyOCwgMHg1RCwgMHhGRCwgMHg1NCwgMHhEOCwgMHg1MywKKyAgICAweDdELCAweDQxLCAweDRGLCAweDE1LCAweDA5LCAweEE2LCAweDNGLCAweEFGLCAweDEzLCAweDMxLCAweEU2LCAweEU4LCAweDQ1LCAweDhDLCAweDY0LCAweEZDLAorICAgIDB4RjYsIDB4NTMsIDB4MUMsIDB4MkIsIDB4MjUsIDB4REYsIDB4MTUsIDB4OTMsIDB4MDYsIDB4RTEsIDB4MzIsIDB4NDUsIDB4OUEsIDB4MjksIDB4NkIsIDB4RDUsCisgICAgMHgxMSwgMHgyNywgMHhBNywgMHgyRSwgMHg5OCwgMHhBOCwgMHgzMCwgMHhENywgMHg5MywgMHgzNywgMHhERSwgMHhGRSwgMHhDMiwgMHhFNywgMHhDMCwgMHhBRSwKKyAgICAweDVFLCAweDI2LCAweDA0LCAweEE0LCAweDU3LCAweDdBLCAweDNGLCAweEQ3LCAweDBFLCAweEI2LCAweDI3LCAweEUxLCAweENGLCAweEJBLCAweDI3LCAweEMzLAorICAgIDB4ODQsIDB4RkUsIDB4RDUsIDB4NEEsIDB4ODcsIDB4RjAsIDB4QjUsIDB4MUMsIDB4NDQsIDB4M0UsIDB4MTcsIDB4QzksIDB4OTksIDB4OEYsIDB4ODUsIDB4RTYsCisgICAgMHhEQSwgMHg0MSwgMHg5NCwgMHhBQiwgMHg3MSwgMHhDOSwgMHgwQiwgMHg5RSwgMHhBOCwgMHhGMCwgMHg1QSwgMHgwMSwgMHgxNCwgMHg4RSwgMHgxNSwgMHgwNSwKKyAgICAweEI3LCAweEUwLCAweDkwLCAweERELCAweDMzLCAweDlFLCAweDgyLCAweDNCLCAweDE0LCAweDU3LCAweEJELCAweEQxLCAweEM3LCAweEMxLCAweDZELCAweERFLAorICAgIDB4M0YsIDB4NEIsIDB4NEUsIDB4RDYsIDB4RjQsIDB4NDksIDB4RUQsIDB4QUYsIDB4NkMsIDB4NkMsIDB4RTMsIDB4NTEsIDB4MEUsIDB4REYsIDB4MTUsIDB4QUYsCisgICAgMHhDRCwgMHg3RiwgMHhCRiwgMHg2NCwgMHhGNCwgMHg2NiwgMHgwRiwgMHgyNSwgMHg4NiwgMHhEQSwgMHhFRiwgMHhERiwgMHhCQiwgMHg3NSwgMHg5MiwgMHhBRCwKKyAgICAweDcwLCAweDQyLCAweDFFLCAweEM3LCAweDIzLCAweDJDLCAweEMxLCAweDQ5LCAweDRCLCAweDlCLCAweEFDLCAweDdDLCAweDNDLCAweDdELCAweEZBLCAweEEyLAorICAgIDB4ODAsIDB4Q0MsIDB4MEUsIDB4REMsIDB4RDIsIDB4QUQsIDB4REEsIDB4QkQsIDB4RjIsIDB4RkIsIDB4QUQsIDB4Q0EsIDB4OTYsIDB4NjgsIDB4MTksIDB4QUUsCisgICAgMHg3RSwgMHhEQiwgMHg0MywgMHhGMywgMHhFRiwgMHg1MiwgMHgzRiwgMHg5NSwgMHgzRSwgMHg1QywgMHg5QSwgMHg5RSwgMHg1NCwgMHg4RiwgMHg0NywgMHgyNywKKyAgICAweEVDLCAweEMxLCAweEJGLCAweDMxLCAweDdBLCAweERCLCAweDZCLCAweEJFLCAweDQwLCAweDk4LCAweDhBLCAweDMzLCAweEQ4LCAweDQyLCAweDk3LCAweDBDLAorICAgIDB4NTEsIDB4M0IsIDB4RDcsIDB4QjEsIDB4OTUsIDB4RjgsIDB4RUYsIDB4M0IsIDB4QzgsIDB4RDgsIDB4NEMsIDB4OTQsIDB4MEQsIDB4REUsIDB4QzQsIDB4MDksCisgICAgMHg3NywgMHg1MiwgMHg2RSwgMHhGMiwgMHhFRiwgMHg1MCwgMHg5QSwgMHg4MywgMHg0OCwgMHg2RCwgMHg2OSwgMHg5MSwgMHgzMywgMHgxQSwgMHg1NiwgMHg5OCwKKyAgICAweEMwLCAweDEyLCAweDg2LCAweEE4LCAweEUzLCAweERFLCAweDJFLCAweEU5LCAweDQzLCAweEIzLCAweDdBLCAweDcxLCAweDQwLCAweEZBLCAweDM0LCAweEY3LAorICAgIDB4QTYsIDB4QzMsIDB4MkYsIDB4QkIsIDB4MTYsIDB4NkIsIDB4OTEsIDB4MDEsIDB4NTgsIDB4QjAsIDB4OEQsIDB4N0EsIDB4NTQsIDB4NjIsIDB4NTksIDB4M0UsCisgICAgMHhDMywgMHgyRiwgMHgzRCwgMHg0OCwgMHhGQiwgMHg2QywgMHg4NSwgMHhEMywgMHhENywgMHhCMCwgMHhGRCwgMHg0RSwgMHhDQSwgMHgzQSwgMHhFRSwgMHgzNywKKyAgICAweEZGLCAweEExLCAweEE4LCAweEIwLCAweDhGLCAweEY4LCAweDNGLCAweEM3LCAweDg4LCAweDA3LCAweDMwLCAweDFDLCAweDgxLCAweDU2LCAweDYzLCAweEMyLAorICAgIDB4OTcsIDB4MDUsIDB4OEMsIDB4N0EsIDB4MDEsIDB4QkYsIDB4MTQsIDB4NTAsIDB4QTcsIDB4ODcsIDB4OUEsIDB4ODYsIDB4NzksIDB4NTksIDB4NDUsIDB4MEYsCisgICAgMHg3OCwgMHhENCwgMHgwRCwgMHgxRSwgMHgzQiwgMHhFMCwgMHhGMSwgMHgxNCwgMHgxMSwgMHg1NSwgMHgwNCwgMHhFOCwgMHgxMCwgMHgzNCwgMHhEQywgMHhGOCwKKyAgICAweDNDLCAweDEyLCAweEM1LCAweDkzLCAweDY0LCAweDQ3LCAweDcwLCAweDg0LCAweDg5LCAweDVGLCAweEFGLCAweEMzLCAweDZCLCAweEIyLCAweDg5LCAweEFFLAorICAgIDB4RUQsIDB4RjYsIDB4NkEsIDB4NTUsIDB4QzUsIDB4NTAsIDB4QzUsIDB4REUsIDB4MDIsIDB4NzAsIDB4RjksIDB4MDMsIDB4NjcsIDB4QTQsIDB4ODIsIDB4REUsCisgICAgMHgwRCwgMHgzOCwgMHgxOCwgMHhERiwgMHg1RCwgMHgyNCwgMHg4RCwgMHgwMCwgMHg4QSwgMHhGNSwgMHhBMywgMHgwMSwgMHhDNiwgMHhFMywgMHhBNiwgMHgxNywKKyAgICAweDE2LCAweEI5LCAweEExLCAweDhFLCAweDlDLCAweDA4LCAweDlCLCAweDJBLCAweDIwLCAweDIyLCAweDY5LCAweDUwLCAweDkxLCAweDEwLCAweDk4LCAweDJDLAorICAgIDB4MTksIDB4OTQsIDB4RTYsIDB4RTksIDB4MkMsIDB4MEYsIDB4REQsIDB4MEEsIDB4NUEsIDB4RjgsIDB4QUQsIDB4RTUsIDB4QkUsIDB4NjUsIDB4M0MsIDB4RDMsCisgICAgMHg3NSwgMHgxQywgMHg3NSwgMHg3NywgMHhDMiwgMHhGNywgMHgyMywgMHg3RSwgMHg2RSwgMHg2MiwgMHhBRiwgMHhEMiwgMHg1RiwgMHgwMCwgMHhGQywgMHhEMCwKKyAgICAweEY5LCAweEYxLCAweENGLCAweDdFLCAweDExLCAweEU2LCAweEY1LCAweDdFLCAweEMwLCAweDQ2LCAweENBLCAweEVGLCAweDFDLCAweDVGLCAweDYyLCAweDJGLAorICAgIDB4NkQsIDB4RjksIDB4RjQsIDB4ODgsIDB4NjQsIDB4RDIsIDB4RTAsIDB4MUYsIDB4MDQsIDB4MzMsIDB4QjksIDB4QkEsIDB4OTksIDB4QzksIDB4OUUsIDB4RDksCisgICAgMHg0OCwgMHgxMSwgMHg2QiwgMHgyQywgMHgzNSwgMHg3OSwgMHgzNiwgMHg0MCwgMHhERiwgMHhCOCwgMHgzQywgMHgyRiwgMHhBQSwgMHgzNSwgMHg5MSwgMHg0MywKKyAgICAweEQyLCAweDIzLCAweDhGLCAweDFFLCAweDI0LCAweDRFLCAweDI5LCAweEE4LCAweDlGLCAweDNGLCAweEY5LCAweEY0LCAweDVFLCAweEFDLCAweEJGLCAweDM5LAorICAgIDB4RTIsIDB4N0YsIDB4MTIsIDB4NEMsIDB4OTUsIDB4QkMsIDB4Q0UsIDB4NjEsIDB4RjMsIDB4RUYsIDB4RDAsIDB4MzAsIDB4NjAsIDB4NkIsIDB4RkQsIDB4RDYsCisgICAgMHhGOCwgMHgxNSwgMHgyNSwgMHg1NiwgMHg1NywgMHhDMiwgMHhGNSwgMHg4NCwgMHhFNCwgMHhERiwgMHhFOCwgMHgyOCwgMHhCRiwgMHg4MSwgMHg5OCwgMHg1RCwKKyAgICAweEZBLCAweDI4LCAweDY2LCAweEY1LCAweEQ1LCAweDQzLCAweDcxLCAweDE3LCAweEJGLCAweDE5LCAweEEyLCAweDVGLCAweEI2LCAweERCLCAweDE0LCAweDkzLAorICAgIDB4QkMsIDB4MzAsIDB4QzQsIDB4M0UsIDB4MTEsIDB4MDEsIDB4QzUsIDB4MDQsIDB4MzAsIDB4OTAsIDB4QkUsIDB4QTUsIDB4ODUsIDB4QzQsIDB4MUIsIDB4QUQsCisgICAgMHg2OCwgMHhDQSwgMHhCQiwgMHg3QiwgMHg4QiwgMHg0NSwgMHgyOSwgMHhGNCwgMHhBMywgMHhDRSwgMHg3MiwgMHgzNiwgMHg3OSwgMHgxQiwgMHhFNiwgMHg0RCwKKyAgICAweEQ3LCAweDUyLCAweEJBLCAweEQ3LCAweDJFLCAweDYxLCAweDk3LCAweERCLCAweDVCLCAweEE1LCAweDQ3LCAweDFGLCAweDZGLCAweEUwLCAweDI5LCAweDI1LAorICAgIDB4QkMsIDB4QTEsIDB4Q0YsIDB4MTcsIDB4QzUsIDB4MzIsIDB4QUEsIDB4MkIsIDB4QjIsIDB4NTIsIDB4ODksIDB4MzIsIDB4Q0IsIDB4RkIsIDB4MUEsIDB4Q0UsCisgICAgMHg0QSwgMHgyQiwgMHg5OCwgMHg3RiwgMHhCNSwgMHg5QiwgMHg3MiwgMHg0MiwgMHgwOCwgMHhCNCwgMHg1MiwgMHg4MywgMHhCNSwgMHg5OCwgMHg5RCwgMHhBMCwKKyAgICAweDA0LCAweDUwLCAweDNCLCAweEZELCAweDRCLCAweDE4LCAweEFGLCAweDlELCAweEUwLCAweDcwLCAweEU3LCAweDBCLCAweDg0LCAweDA5LCAweDkzLCAweDUxLAorICAgIDB4MzUsIDB4RTEsIDB4QzAsIDB4QjIsIDB4RDMsIDB4RTEsIDB4NjYsIDB4MTcsIDB4QjEsIDB4REMsIDB4RTQsIDB4MUQsIDB4QkYsIDB4RTYsIDB4NzYsIDB4NTMsCisgICAgMHgxQiwgMHgwNSwgMHhCMiwgMHg0NywgMHgwMiwgMHgwQiwgMHhBQiwgMHg3MCwgMHg1MiwgMHgxQiwgMHgxQywgMHg1QiwgMHhBRiwgMHg4NCwgMHgwRiwgMHgxMiwKKyAgICAweENELCAweEI5LCAweDNGLCAweEI5LCAweDE1LCAweEM2LCAweDU2LCAweEJCLCAweEQ3LCAweDgwLCAweEJCLCAweDk0LCAweEZCLCAweEZCLCAweDdDLCAweEI5LAorICAgIDB4Q0YsIDB4QkMsIDB4MEUsIDB4Q0IsIDB4QTgsIDB4N0UsIDB4NEEsIDB4RjMsIDB4QkEsIDB4NzMsIDB4Q0QsIDB4OUUsIDB4MTQsIDB4MEQsIDB4MTIsIDB4MTcsCisgICAgMHg5MSwgMHhGNiwgMHhGNCwgMHg5RCwgMHgxNCwgMHgxMywgMHg5MSwgMHg4RSwgMHg2RCwgMHg2MiwgMHhGMywgMHgyNywgMHhBMSwgMHgwMSwgMHg4NSwgMHhEMiwKKyAgICAweDdBLCAweEY1LCAweDYwLCAweDEzLCAweEVFLCAweERDLCAweDc1LCAweEY5LCAweEZGLCAweDIzLCAweDJELCAweEZFLCAweEU3LCAweDY5LCAweDQwLCAweDhCLAorICAgIDB4MEEsIDB4QTgsIDB4RkYsIDB4ODYsIDB4MkEsIDB4NkQsIDB4MEQsIDB4RDMsIDB4OUQsIDB4MTQsIDB4QTMsIDB4REYsIDB4QjgsIDB4MUMsIDB4NDQsIDB4RTksCisgICAgMHg3RSwgMHg5RCwgMHg3MywgMHg2QiwgMHgwQywgMHhGMiwgMHgwRiwgMHg0NSwgMHhBNSwgMHhDRiwgMHg0NiwgMHhEQSwgMHhEQywgMHhGNiwgMHgyNCwgMHhDNiwKKyAgICAweDcyLCAweEQwLCAweDkxLCAweDZFLCAweDM4LCAweDc2LCAweDFGLCAweEE3LCAweEY5LCAweDhGLCAweDlBLCAweEZDLCAweDE2LCAweDFFLCAweEY3LCAweDZBLAorICAgIDB4ODIsIDB4NDksIDB4MUMsIDB4QzAsIDB4REUsIDB4OEEsIDB4REEsIDB4NjIsIDB4ODYsIDB4MDYsIDB4NkMsIDB4RjYsIDB4OEUsIDB4QTMsIDB4RTEsIDB4NjUsCisgICAgMHgzMiwgMHg3QiwgMHg2NSwgMHgwMCwgMHg5OSwgMHhFQSwgMHhBRiwgMHg4NiwgMHgwMywgMHhERSwgMHhDRSwgMHhGOSwgMHhFNiwgMHhBRSwgMHgxNiwgMHgyRCwKKyAgICAweDlELCAweDkwLCAweEI0LCAweDYzLCAweDk2LCAweEE2LCAweDdFLCAweEVFLCAweDA2LCAweEU3LCAweDY5LCAweDg0LCAweDQwLCAweERFLCAweDk0LCAweDIwLAorICAgIDB4N0MsIDB4Q0YsIDB4MzcsIDB4MjEsIDB4NkUsIDB4M0QsIDB4QjAsIDB4RUQsIDB4OUMsIDB4OUUsIDB4QUUsIDB4NTYsIDB4NUQsIDB4RDcsIDB4NTQsIDB4NTEsCisgICAgMHg4MCwgMHhBNywgMHhDQiwgMHhCOCwgMHhDMiwgMHgwMiwgMHg0NSwgMHhGMywgMHg1QiwgMHgxNSwgMHhBNiwgMHhFQywgMHg1QSwgMHgxMCwgMHhCMiwgMHhDQywKKyAgICAweEM2LCAweDRELCAweENELCAweEU1LCAweEY1LCAweEI1LCAweDg2LCAweEMzLCAweDczLCAweDAwLCAweERCLCAweDVCLCAweEU3LCAweDBFLCAweEY4LCAweDUxLAorICAgIDB4MDUsIDB4NEIsIDB4OTMsIDB4QjMsIDB4RDAsIDB4NzgsIDB4MTIsIDB4MUUsIDB4ODYsIDB4Q0QsIDB4QkIsIDB4RTQsIDB4ODAsIDB4RjcsIDB4NzIsIDB4RjUsCisgICAgMHhDNywgMHg5NSwgMHhGNSwgMHg2MiwgMHhGQSwgMHgyNywgMHg5QiwgMHg5QSwgMHgyNCwgMHhERCwgMHg3RSwgMHhFMywgMHhDRSwgMHg3QywgMHg5NiwgMHgxMywKKyAgICAweDI5LCAweEQyLCAweENELCAweEI1LCAweDMxLCAweEQ4LCAweDhELCAweEU5LCAweDhELCAweDEyLCAweEQ1LCAweDQ5LCAweDc2LCAweEZELCAweENDLCAweENDLAorICAgIDB4OEIsIDB4MzAsIDB4NkQsIDB4N0QsIDB4MzMsIDB4QzEsIDB4MEIsIDB4MEIsIDB4QzgsIDB4RDMsIDB4QTIsIDB4M0EsIDB4OTgsIDB4QUIsIDB4MjAsIDB4NTAsCisgICAgMHgyNSwgMHg0NCwgMHhDNCwgMHgzNCwgMHhDMCwgMHg4MiwgMHg2NCwgMHg5NCwgMHg0NCwgMHgxOSwgMHgzMywgMHhDQiwgMHgxOCwgMHg1QSwgMHg3QiwgMHgzMywKKyAgICAweDM4LCAweEVELCAweEM2LCAweDVGLCAweEQ0LCAweDg1LCAweEQxLCAweDFELCAweERELCAweDFDLCAweEQ3LCAweDQzLCAweEZGLCAweDY3LCAweDI4LCAweEQyLAorICAgIDB4QzEsIDB4OEUsIDB4M0QsIDB4MTksIDB4MjEsIDB4QzEsIDB4OEQsIDB4MDAsIDB4Q0UsIDB4MEMsIDB4MkMsIDB4ODMsIDB4ODksIDB4MTEsIDB4MTQsIDB4QzEsCisgICAgMHg1OSwgMHgyOSwgMHg2MywgMHgyRCwgMHhDNiwgMHg0NiwgMHhEMCwgMHg1MiwgMHhGQiwgMHgwMiwgMHhFQywgMHhGMywgMHg5QywgMHhGMiwgMHg2NCwgMHhCNCwKKyAgICAweDM3LCAweDk5LCAweDVDLCAweEY2LCAweDU3LCAweEM5LCAweDRBLCAweDUxLCAweDE4LCAweDA4LCAweDZFLCAweDhCLCAweDlELCAweEVCLCAweEE1LCAweDhGLAorICAgIDB4RTQsIDB4ODUsIDB4MjksIDB4NEMsIDB4NUYsIDB4RDgsIDB4NDEsIDB4MkEsIDB4NjIsIDB4QUIsIDB4MjUsIDB4NDIsIDB4RUUsIDB4OTAsIDB4NjQsIDB4OEUsCisgICAgMHg5MywgMHg2NCwgMHg4NywgMHg0OSwgMHg5OCwgMHg3QywgMHgwRSwgMHhERiwgMHhBQywgMHhDNSwgMHg3OSwgMHgyRCwgMHhDOCwgMHg1MywgMHg0NSwgMHgyQiwKKyAgICAweENGLCAweDJGLCAweDBCLCAweEI2LCAweDVCLCAweDRDLCAweDQ1LCAweDM4LCAweDk2LCAweEUzLCAweDcwLCAweDkxLCAweDhFLCAweEFDLCAweDUxLCAweDY3LAorICAgIDB4QTIsIDB4REIsIDB4ODMsIDB4NTUsIDB4NEMsIDB4OUQsIDB4RUIsIDB4NDksIDB4RTQsIDB4MzcsIDB4NjgsIDB4OUIsIDB4NTgsIDB4REMsIDB4NEIsIDB4RUMsCisgICAgMHhCNSwgMHhDNCwgMHhEQywgMHgxMywgMHhCMSwgMHg1NCwgMHg5MiwgMHhBNSwgMHg2NywgMHg3NSwgMHg5OCwgMHg0MywgMHg3MSwgMHgyNywgMHhGRiwgMHhBNSwKKyAgICAweDZFLCAweEUzLCAweDEyLCAweDhDLCAweEY2LCAweENCLCAweDE4LCAweDIxLCAweDdDLCAweDBBLCAweDRCLCAweEIzLCAweEE1LCAweEY0LCAweEVBLCAweDA5LAorICAgIDB4MkMsIDB4MUMsIDB4NTcsIDB4QkYsIDB4OEYsIDB4QTYsIDB4OTQsIDB4REQsIDB4MTksIDB4MzUsIDB4NEYsIDB4MTcsIDB4QTcsIDB4NTUsIDB4NDUsIDB4QkQsCisgICAgMHhDOCwgMHgzMiwgMHg3MiwgMHg5RSwgMHgwNSwgMHhENiwgMHhCQSwgMHgzQywgMHg2MCwgMHgyRSwgMHhFNiwgMHg4MywgMHgxMiwgMHhDNCwgMHhFMiwgMHg4MCwKKyAgICAweDAzLCAweERFLCAweEJCLCAweDg4LCAweEZCLCAweDdGLCAweEFELCAweDNCLCAweDlDLCAweEQ4LCAweEQwLCAweDhFLCAweDRDLCAweDUyLCAweDRELCAweDdBLAorICAgIDB4QjgsIDB4ODksIDB4QjAsIDB4QkMsIDB4N0YsIDB4OTQsIDB4ODEsIDB4QkIsIDB4NkMsIDB4RTcsIDB4NUUsIDB4MUMsIDB4RkEsIDB4NjksIDB4ODEsIDB4QjYsCisgICAgMHg0NiwgMHhDMiwgMHgzQiwgMHg3MCwgMHhCOCwgMHgwMiwgMHhBOSwgMHg5RiwgMHgxNywgMHgwRiwgMHhGMiwgMHgzMSwgMHgxNywgMHg4MiwgMHhGRiwgMHgxNywKKyAgICAweDAyLCAweEI5LCAweDE0LCAweEJCLCAweEU3LCAweDFCLCAweDFCLCAweDRCLCAweDkyLCAweDE0LCAweEU0LCAweEU3LCAweDZELCAweDZELCAweDczLCAweEI4LAorICAgIDB4Q0IsIDB4NUQsIDB4OTIsIDB4MjcsIDB4N0QsIDB4REEsIDB4MDAsIDB4NjksIDB4NzAsIDB4MTUsIDB4M0MsIDB4MEYsIDB4RjAsIDB4REUsIDB4NUYsIDB4Q0QsCisgICAgMHgxQSwgMHgxNywgMHg4NiwgMHgyQSwgMHg1OCwgMHhCNSwgMHg0QiwgMHgzRSwgMHhBQiwgMHg0RCwgMHg4RCwgMHg3NSwgMHg0RCwgMHg0MCwgMHg3RiwgMHg4NCwKKyAgICAweDFELCAweDE5LCAweDE3LCAweDFFLCAweDQxLCAweDRDLCAweEI5LCAweEVGLCAweDYxLCAweDQ2LCAweDgwLCAweEFELCAweDVELCAweERCLCAweDAxLCAweDFFLAorICAgIDB4NzMsIDB4RUQsIDB4NDIsIDB4REQsIDB4MzUsIDB4MDcsIDB4OEIsIDB4RDAsIDB4RUMsIDB4MkUsIDB4NzcsIDB4MzUsIDB4QjgsIDB4RkMsIDB4MkUsIDB4RTUsCisgICAgMHg4RCwgMHgzMCwgMHg5NiwgMHgwRCwgMHg4OCwgMHg3RiwgMHg1MiwgMHhFNywgMHg2QiwgMHgxMSwgMHhGMCwgMHhEMiwgMHg2QSwgMHg2RiwgMHg4OSwgMHg2NiwKKyAgICAweDNGLCAweDNBLCAweDk0LCAweDk4LCAweDY0LCAweDBGLCAweDBFLCAweDc3LCAweEYyLCAweDA0LCAweDk2LCAweEQ5LCAweEFBLCAweDM2LCAweDBCLCAweDM5LAorICAgIDB4RUUsIDB4MUYsIDB4MUQsIDB4MTAsIDB4MjMsIDB4RDAsIDB4RkEsIDB4MEIsIDB4RTEsIDB4ODgsIDB4RUQsIDB4OTcsIDB4NzMsIDB4RkYsIDB4Q0MsIDB4QzgsCisgICAgMHhENiwgMHg0OSwgMHg0QSwgMHgyNCwgMHhDMSwgMHg0OSwgMHg3OCwgMHgyNSwgMHg3QSwgMHgyNiwgMHhENCwgMHg2QSwgMHg5RSwgMHg0QywgMHg5OCwgMHhGQSwKKyAgICAweDkwLCAweEI0LCAweEQ0LCAweDA3LCAweEE0LCAweEQyLCAweDVFLCAweDhCLCAweDZELCAweEIxLCAweDAzLCAweEJELCAweENFLCAweDEzLCAweDNCLCAweDNFLAorICAgIDB4NzgsIDB4NEYsIDB4RkUsIDB4Q0IsIDB4QjYsIDB4NTMsIDB4QjcsIDB4MjcsIDB4QUEsIDB4QzQsIDB4MzUsIDB4Q0QsIDB4RDgsIDB4RDksIDB4OTYsIDB4NzgsCisgICAgMHg5QSwgMHgxRCwgMHhFNSwgMHg5NywgMHhBQywgMHhCRSwgMHgzMSwgMHg4QSwgMHg3NywgMHg2NSwgMHg2NywgMHg2MSwgMHgzQSwgMHhGMCwgMHgwRSwgMHgwNCwKKyAgICAweDU0LCAweDFDLCAweEU0LCAweDVGLCAweEVELCAweDA2LCAweEJBLCAweEZCLCAweDM0LCAweDU5LCAweEIyLCAweDkxLCAweDMzLCAweEVELCAweEY0LCAweDUyLAorICAgIDB4RkUsIDB4NDIsIDB4RkIsIDB4QUUsIDB4RUYsIDB4NDYsIDB4RTUsIDB4MDEsIDB4OTUsIDB4NkYsIDB4QjcsIDB4RTYsIDB4OEEsIDB4RUUsIDB4NDUsIDB4RTUsCisgICAgMHhBRiwgMHgxMywgMHg4QiwgMHg3NiwgMHg3NCwgMHhDMywgMHgzMSwgMHgzNiwgMHhEMiwgMHg4NCwgMHgxQywgMHhBOSwgMHg0RCwgMHhGMSwgMHgxRSwgMHhBNywKKyAgICAweDk3LCAweEY0LCAweDRCLCAweEQ2LCAweEEyLCAweEY4LCAweDkwLCAweDMxLCAweDJGLCAweENDLCAweDcwLCAweDlGLCAweDU5LCAweDk4LCAweDZGLCAweDhGLAorICAgIDB4NkYsIDB4ODEsIDB4NDQsIDB4MDEsIDB4NzAsIDB4MjUsIDB4NkIsIDB4NkEsIDB4ODYsIDB4RjksIDB4NzYsIDB4ODcsIDB4MzcsIDB4REIsIDB4MjMsIDB4NUEsCisgICAgMHhFMSwgMHgxQiwgMHg4MywgMHg4QywgMHg4NywgMHgyQywgMHgyMSwgMHhDMiwgMHg4QiwgMHg3NiwgMHgzNywgMHgxQSwgMHg1RCwgMHg5NiwgMHhGQiwgMHg1QiwKKyAgICAweDlFLCAweEY3LCAweEEzLCAweEZELCAweDExLCAweDhGLCAweDg3LCAweDBBLCAweEQ1LCAweEUyLCAweDEzLCAweDMzLCAweENDLCAweDAyLCAweEI1LCAweDlCLAorICAgIDB4MzEsIDB4N0YsIDB4NTAsIDB4NEIsIDB4RUQsIDB4ODgsIDB4NzQsIDB4Q0YsIDB4MEEsIDB4MDQsIDB4MkMsIDB4OTIsIDB4RTIsIDB4RTcsIDB4NzksIDB4MDAsCisgICAgMHg2OCwgMHhGRiwgMHhDMiwgMHg1QiwgMHhBNSwgMHg3NiwgMHg0MCwgMHhEMCwgMHg2MywgMHg1MywgMHgzOSwgMHgyNCwgMHg0OCwgMHhCMiwgMHg5RiwgMHgzNCwKKyAgICAweDc2LCAweEQxLCAweDY4LCAweDc1LCAweDQ3LCAweDBFLCAweDUxLCAweDkwLCAweDAxLCAweDUzLCAweDA1LCAweDNFLCAweDg4LCAweEU4LCAweDFBLCAweDEwLAorICAgIDB4ODUsIDB4NTIsIDB4MkQsIDB4NTcsIDB4MTIsIDB4MTcsIDB4ODMsIDB4NEQsIDB4MTEsIDB4QkIsIDB4NjMsIDB4MEUsIDB4NTksIDB4NjEsIDB4Q0EsIDB4QUMsCisgICAgMHgzRiwgMHhFMCwgMHgxOCwgMHgwNCwgMHg2OCwgMHhEQywgMHg3RCwgMHhDNywgMHhEOCwgMHhGMiwgMHg1RCwgMHhCNiwgMHg3QywgMHg4NiwgMHgwQywgMHgwMywKKyAgICAweEQ2LCAweDdFLCAweEE2LCAweDJDLCAweDAxLCAweDVGLCAweDdFLCAweEZGLCAweDlCLCAweDBDLCAweDI2LCAweEE5LCAweDlDLCAweDVELCAweDlELCAweDAwLAorICAgIDB4Q0QsIDB4NTksIDB4NEMsIDB4M0EsIDB4RDYsIDB4ODIsIDB4ODUsIDB4OEIsIDB4NjUsIDB4NDEsIDB4ODUsIDB4NDAsIDB4RTAsIDB4RTksIDB4MEIsIDB4OTMsCisgICAgMHhFNSwgMHgzMiwgMHgyNCwgMHhEQiwgMHg5NCwgMHg3NCwgMHg5NCwgMHgwNywgMHg0NywgMHgxQiwgMHgwMSwgMHg2RSwgMHg0QiwgMHg1RCwgMHgyNiwgMHgzMSwKKyAgICAweDQyLCAweEJFLCAweDM4LCAweDA4LCAweDJCLCAweDE5LCAweEMxLCAweDUxLCAweENDLCAweDUxLCAweEZDLCAweDYyLCAweEZFLCAweDA5LCAweDA4LCAweEQzLAorICAgIDB4NTgsIDB4NkMsIDB4OEEsIDB4MkQsIDB4MzUsIDB4REUsIDB4ODIsIDB4RDYsIDB4NEYsIDB4RUIsIDB4NjUsIDB4OUYsIDB4QTEsIDB4QzksIDB4QzMsIDB4N0EsCisgICAgMHg3MCwgMHg5RiwgMHhBQSwgMHhGMywgMHg5NywgMHhGMywgMHhFOSwgMHhGQywgMHgzQiwgMHg4NCwgMHgxRCwgMHhFNSwgMHgzNSwgMHhBMCwgMHgwNSwgMHhFRSwKKyAgICAweEFCLCAweDc4LCAweERCLCAweEYwLCAweEFELCAweEVDLCAweDFFLCAweEU5LCAweDg2LCAweDk2LCAweDQ2LCAweDQ1LCAweDQ0LCAweEQ1LCAweDI4LCAweDdELAorICAgIDB4ODMsIDB4QjAsIDB4ODMsIDB4NjksIDB4QkMsIDB4NjAsIDB4NUUsIDB4MTQsIDB4MjgsIDB4Q0EsIDB4QTcsIDB4M0MsIDB4RUYsIDB4REUsIDB4NzQsIDB4ODksCisgICAgMHg2RCwgMHhCRiwgMHgxQiwgMHg4RiwgMHg1OSwgMHg4RSwgMHg5NiwgMHhENSwgMHhDRSwgMHgxOSwgMHg0MSwgMHg5MiwgMHg4OCwgMHgyQSwgMHhFOCwgMHgxQiwKKyAgICAweDFELCAweDlFLCAweEMxLCAweDM0LCAweDJDLCAweDNFLCAweDNGLCAweEJDLCAweDRGLCAweDcyLCAweDYxLCAweDQ0LCAweDIxLCAweENBLCAweDA4LCAweDI2LAorICAgIDB4MEQsIDB4MjgsIDB4REMsIDB4M0QsIDB4NkYsIDB4MzMsIDB4NDksIDB4RTYsIDB4OEIsIDB4RTYsIDB4REQsIDB4MDksIDB4NkIsIDB4MjksIDB4OEIsIDB4QUIsCisgICAgMHhGNiwgMHgyQywgMHgyMywgMHg3RSwgMHgyQiwgMHg1MSwgMHg2MywgMHgwRiwgMHg5NywgMHgyNSwgMHhBMSwgMHgzQywgMHg3NiwgMHgzOSwgMHgzQiwgMHhGQiwKKyAgICAweDc1LCAweDYyLCAweEE0LCAweEY1LCAweEM2LCAweDcyLCAweDVFLCAweEJGLCAweDM4LCAweEExLCAweDhELCAweEIzLCAweDMxLCAweDBFLCAweDAyLCAweDdBLAorICAgIDB4NDIsIDB4REIsIDB4OTIsIDB4RDAsIDB4NDQsIDB4ODUsIDB4OEYsIDB4NkUsIDB4N0IsIDB4Q0EsIDB4RDQsIDB4RTEsIDB4OEIsIDB4QzksIDB4NkEsIDB4QzIsCisgICAgMHgyMCwgMHhGNywgMHg2NywgMHgwMCwgMHgzOSwgMHhEQSwgMHhBQSwgMHhGOSwgMHg1NCwgMHg3NywgMHhEQiwgMHg1NCwgMHg3NiwgMHg3QiwgMHgxNSwgMHhCRiwKKyAgICAweEUzLCAweDhGLCAweDdFLCAweDc1LCAweDA5LCAweDUwLCAweDFELCAweDhBLCAweDgyLCAweDkxLCAweENBLCAweDdFLCAweEYzLCAweDExLCAweEI4LCAweDFCLAorICAgIDB4QTcsIDB4MTEsIDB4MEYsIDB4MjksIDB4QTQsIDB4MzIsIDB4QjcsIDB4QjQsIDB4NjYsIDB4NUEsIDB4Q0UsIDB4QzMsIDB4NzAsIDB4Q0EsIDB4MTksIDB4RjEsCisgICAgMHg3NSwgMHgzMiwgMHgxOCwgMHhDRCwgMHgxMSwgMHhDRCwgMHgyOSwgMHg2RiwgMHg3RCwgMHg5RCwgMHg1NiwgMHgxNywgMHg2RiwgMHhCMiwgMHg4MiwgMHg3NSwKKyAgICAweDlCLCAweEU1LCAweDYwLCAweDVGLCAweDk4LCAweEFGLCAweDJBLCAweDlBLCAweEJBLCAweDk3LCAweDkwLCAweEM1LCAweDk5LCAweDczLCAweEMwLCAweEZELAorICAgIDB4NzAsIDB4QTMsIDB4MTQsIDB4RjcsIDB4RDgsIDB4QUYsIDB4QTQsIDB4MUMsIDB4RUMsIDB4MDQsIDB4MjcsIDB4RDUsIDB4Q0IsIDB4OTUsIDB4QUIsIDB4MUUsCisgICAgMHgxRCwgMHgwMSwgMHgzMywgMHhEQSwgMHhDMSwgMHhGMywgMHhGMywgMHgxNCwgMHgwRSwgMHhFOSwgMHg0MCwgMHhDQSwgMHg4RCwgMHgxNiwgMHhBRiwgMHg2MSwKKyAgICAweDRDLCAweDVCLCAweDk4LCAweDExLCAweEZFLCAweDM5LCAweDg0LCAweDA4LCAweDI5LCAweDBCLCAweDNDLCAweEQxLCAweEM2LCAweDgwLCAweEFCLCAweDhCLAorICAgIDB4NjEsIDB4RDMsIDB4MzYsIDB4ODQsIDB4QUMsIDB4QkUsIDB4RDAsIDB4QzUsIDB4NUQsIDB4RDgsIDB4N0IsIDB4OUIsIDB4RjAsIDB4NzIsIDB4QzAsIDB4MEMsCisgICAgMHhGRCwgMHg1NywgMHg1NywgMHg3NSwgMHgzMSwgMHgwRCwgMHg3RCwgMHg2RSwgMHhBNCwgMHhFOCwgMHhEQywgMHgxNSwgMHg3MywgMHgyMiwgMHgwMCwgMHgyNSwKKyAgICAweENCLCAweENBLCAweDU0LCAweDVBLCAweEIzLCAweDFELCAweDI3LCAweDUyLCAweEU1LCAweEY4LCAweEVBLCAweEE1LCAweEU3LCAweDNFLCAweDI1LCAweDhCLAorICAgIDB4NTgsIDB4MjMsIDB4OTMsIDB4QjYsIDB4OTAsIDB4NjIsIDB4MzIsIDB4RDksIDB4QUEsIDB4RUMsIDB4MzcsIDB4QjYsIDB4QzMsIDB4QTAsIDB4OTIsIDB4RTQsCisgICAgMHhGQiwgMHhGRiwgMHhCMywgMHhGNCwgMHhCRiwgMHg5MCwgMHg1OCwgMHg1MSwgMHg5RiwgMHhBQywgMHhGRCwgMHhBNywgMHg3QiwgMHhFQSwgMHg0NywgMHg2NywKKyAgICAweDVCLCAweDVELCAweDFBLCAweDFELCAweEVELCAweEM4LCAweDgwLCAweDE5LCAweDg2LCAweDk3LCAweDdELCAweDhFLCAweDcwLCAweDFFLCAweDVCLCAweEYxLAorICAgIDB4MDQsIDB4MjEsIDB4QTAsIDB4NDEsIDB4QkUsIDB4NkEsIDB4NkUsIDB4MEQsIDB4MzEsIDB4NjIsIDB4QjcsIDB4RTksIDB4OUYsIDB4Q0YsIDB4MDksIDB4QzIsCisgICAgMHhDMCwgMHhDMCwgMHhBOCwgMHhFMiwgMHg5QSwgMHgwMSwgMHhEQiwgMHgwQywgMHg4QiwgMHhDMywgMHgwNCwgMHhEMywgMHhFNiwgMHhBRSwgMHg1MSwgMHhDRCwKKyAgICAweEE4LCAweDc1LCAweDUxLCAweEM5LCAweDg1LCAweDg3LCAweDM4LCAweDVCLCAweDZGLCAweEQ2LCAweDdDLCAweDJDLCAweDU2LCAweDdCLCAweEUzLCAweDkwLAorICAgIDB4NzIsIDB4QzQsIDB4MTcsIDB4NEQsIDB4NjEsIDB4RTgsIDB4ODIsIDB4MDQsIDB4QjQsIDB4NTQsIDB4MjcsIDB4QTEsIDB4RUEsIDB4NzUsIDB4QjcsIDB4M0EsCisgICAgMHhBNywgMHg1MSwgMHg0MywgMHhCNCwgMHgwQywgMHhDOCwgMHhGQiwgMHg3RCwgMHhCRCwgMHg0NywgMHg0MywgMHhEQywgMHhFMSwgMHg2MCwgMHgwOSwgMHg5NCwKKyAgICAweEYxLCAweERBLCAweDQ1LCAweDZGLCAweDU3LCAweEZCLCAweDY2LCAweEVGLCAweEE0LCAweDE0LCAweDZGLCAweDdBLCAweEFELCAweEFBLCAweEUyLCAweDg1LAorICAgIDB4M0QsIDB4QzUsIDB4RjUsIDB4MTQsIDB4RUIsIDB4N0IsIDB4NjgsIDB4QUUsIDB4NDEsIDB4REYsIDB4QjYsIDB4REQsIDB4ODMsIDB4MTQsIDB4ODMsIDB4QUYsCisgICAgMHg1NCwgMHhGOCwgMHgzNCwgMHhFQSwgMHgwMSwgMHg2MSwgMHg4RCwgMHg5QiwgMHhDQywgMHhFOSwgMHhEQiwgMHg4MSwgMHg2OCwgMHhDMiwgMHg2RiwgMHhEMiwKKyAgICAweEFCLCAweEY5LCAweEYyLCAweEMwLCAweEYxLCAweDI5LCAweDdBLCAweDQ3LCAweDRGLCAweDUyLCAweDUxLCAweERCLCAweERBLCAweDFDLCAweEQzLCAweDVDLAorICAgIDB4RTgsIDB4MkEsIDB4NjgsIDB4RkYsIDB4OTksIDB4RDEsIDB4NkQsIDB4RTgsIDB4QTEsIDB4OTAsIDB4MTcsIDB4MUEsIDB4MkMsIDB4N0QsIDB4QjMsIDB4MUQsCisgICAgMHg4RSwgMHhGNiwgMHg4NCwgMHhFMiwgMHgzRiwgMHgxQSwgMHhEMCwgMHgzRCwgMHhFOCwgMHg1MSwgMHg3QiwgMHhFQSwgMHgzRSwgMHhGRiwgMHgyQiwgMHgyNSwKKyAgICAweEI3LCAweDI3LCAweDNELCAweEEwLCAweDJFLCAweDEwLCAweEQ4LCAweDFDLCAweDk5LCAweEE0LCAweEUwLCAweDc4LCAweEEzLCAweDMwLCAweDhFLCAweDFFLAorICAgIDB4RDIsIDB4RTQsIDB4QTEsIDB4MDgsIDB4MEUsIDB4OUYsIDB4NjAsIDB4MjIsIDB4REUsIDB4QjMsIDB4OEMsIDB4MEYsIDB4QUUsIDB4OTcsIDB4MjEsIDB4MzUsCisgICAgMHhEQywgMHg4RSwgMHgwRCwgMHg2NSwgMHg5OSwgMHhGQSwgMHhBQywgMHg0NiwgMHg3OSwgMHg5NywgMHhFQywgMHg1OCwgMHg3RSwgMHg0MiwgMHg0NSwgMHg1OCwKKyAgICAweDMzLCAweEFGLCAweDJELCAweEU0LCAweDQ1LCAweDlGLCAweDU0LCAweDkzLCAweDM0LCAweENCLCAweEFELCAweDEwLCAweEQ2LCAweDYxLCAweDMzLCAweEI4LAorICAgIDB4NUIsIDB4Q0YsIDB4QjMsIDB4RjQsIDB4NjgsIDB4MTYsIDB4QTUsIDB4OTgsIDB4NTQsIDB4NzUsIDB4OTUsIDB4OEMsIDB4Q0QsIDB4Q0YsIDB4NzQsIDB4MjksCisgICAgMHg3RiwgMHhCNSwgMHhGNywgMHhDOSwgMHg1NiwgMHg2RSwgMHg1QiwgMHhGRiwgMHhFQSwgMHhDQiwgMHg4QSwgMHg1MywgMHgxRSwgMHg3OCwgMHhBMywgMHgyNSwKKyAgICAweDY4LCAweDE1LCAweEU0LCAweEQzLCAweEM0LCAweERGLCAweDkzLCAweDZFLCAweEM4LCAweEFBLCAweDUzLCAweEZBLCAweDNDLCAweDYwLCAweEFDLCAweDBELAorICAgIDB4QTIsIDB4MDEsIDB4RjYsIDB4MzYsIDB4MUUsIDB4ODAsIDB4NjEsIDB4RTEsIDB4ODksIDB4MjksIDB4REMsIDB4MEIsIDB4QzQsIDB4MEQsIDB4QjcsIDB4OEEsCisgICAgMHhEMiwgMHhCMiwgMHg3QywgMHhBRCwgMHg0NywgMHhCNSwgMHhFMCwgMHgxRiwgMHg0OCwgMHgyMSwgMHg1NSwgMHhBQSwgMHg1RiwgMHg3RCwgMHg4NSwgMHg0OCwKKyAgICAweEU4LCAweEQ2LCAweDE5LCAweEJFLCAweEU2LCAweDlDLCAweDYxLCAweDhGLCAweDg5LCAweDM1LCAweDQ5LCAweDZELCAweDJFLCAweDhCLCAweDQ2LCAweDFCLAorICAgIDB4Q0IsIDB4RDgsIDB4MDYsIDB4ODMsIDB4OEIsIDB4NzAsIDB4RUQsIDB4NjYsIDB4MTcsIDB4QUQsIDB4MkMsIDB4RjYsIDB4QzgsIDB4RjMsIDB4MUUsIDB4RTIsCisgICAgMHhDQSwgMHhEQSwgMHgwNCwgMHhBQSwgMHhENCwgMHhBMCwgMHhBNiwgMHg4QiwgMHhDQywgMHgxOSwgMHhGMSwgMHg4NywgMHg5MywgMHgzQSwgMHg2OSwgMHhFRSwKKyAgICAweDgyLCAweDc1LCAweDcxLCAweDhCLCAweDhFLCAweEZELCAweDM5LCAweDRBLCAweDlELCAweDk1LCAweDA3LCAweDgwLCAweDRFLCAweEY2LCAweDI1LCAweEZBLAorICAgIDB4OUMsIDB4NjgsIDB4RjEsIDB4QTYsIDB4ODQsIDB4MjgsIDB4OEMsIDB4NDcsIDB4RkIsIDB4Q0MsIDB4RTUsIDB4N0EsIDB4MkIsIDB4QUMsIDB4M0IsIDB4NTgsCisgICAgMHhFRSwgMHg1MSwgMHgzMSwgMHgxOCwgMHg2RiwgMHhGRCwgMHg1QSwgMHhFNCwgMHhGRSwgMHg4MCwgMHg3NSwgMHg5MiwgMHg2NywgMHhGMSwgMHhGOSwgMHg3OCwKKyAgICAweDczLCAweEYxLCAweDUyLCAweDRFLCAweDlGLCAweEZFLCAweEE3LCAweDE4LCAweDk5LCAweDQ4LCAweDc0LCAweEUzLCAweDk0LCAweDcwLCAweDFBLCAweDlGLAorICAgIDB4Q0QsIDB4MTUsIDB4MzEsIDB4QjMsIDB4NjgsIDB4NEMsIDB4RkEsIDB4RUQsIDB4NDQsIDB4QzIsIDB4OEQsIDB4NzEsIDB4QzAsIDB4QzIsIDB4MUIsIDB4MzksCisgICAgMHg5NywgMHhFMiwgMHhGRiwgMHhBNSwgMHg0RSwgMHgwNywgMHhGMSwgMHhBNywgMHhGRiwgMHhCRiwgMHg4NSwgMHg3OSwgMHgwMCwgMHgyOSwgMHg2MiwgMHhCNywKKyAgICAweDBGLCAweEY5LCAweDZBLCAweEU1LCAweEZFLCAweDA5LCAweEUyLCAweDJCLCAweDc2LCAweDc0LCAweEY2LCAweDQwLCAweEJFLCAweDY0LCAweEU5LCAweEQ0LAorICAgIDB4MjcsIDB4NzQsIDB4NkYsIDB4RUMsIDB4REQsIDB4QkMsIDB4NTMsIDB4Q0QsIDB4OUYsIDB4MTYsIDB4NkIsIDB4OTIsIDB4QUUsIDB4NTksIDB4OUUsIDB4NzQsCisgICAgMHg3MiwgMHgxOCwgMHhBNSwgMHg2OCwgMHhFMCwgMHhBMCwgMHhBRSwgMHgwNiwgMHhEQiwgMHhDNCwgMHhFNSwgMHgzNCwgMHgzNywgMHg4NywgMHhBRCwgMHg4MCwKKyAgICAweDJCLCAweDBGLCAweDg0LCAweDM3LCAweDk5LCAweDk2LCAweDlELCAweEVGLCAweDg3LCAweDNDLCAweEVELCAweDdBLCAweEQ5LCAweEFBLCAweEI4LCAweEM4LAorICAgIDB4N0EsIDB4RDQsIDB4RDAsIDB4MkEsIDB4RDcsIDB4REEsIDB4RUMsIDB4MEIsIDB4ODUsIDB4OEEsIDB4OTMsIDB4ODQsIDB4MzgsIDB4MkQsIDB4M0YsIDB4NkIsCisgICAgMHhFMSwgMHg4QSwgMHg4OCwgMHg1RCwgMHg0QywgMHgyNiwgMHg2OSwgMHhGNSwgMHg0MywgMHg1NSwgMHhCMSwgMHgzMiwgMHhCMiwgMHg3OCwgMHg2NywgMHgzOSwKKyAgICAweEMzLCAweDY0LCAweDRBLCAweDZBLCAweDVCLCAweEEzLCAweDdBLCAweEJDLCAweDhBLCAweDBBLCAweDc2LCAweERCLCAweDY5LCAweDA5LCAweDY2LCAweDJDLAorICAgIDB4MkYsIDB4RDksIDB4MzAsIDB4MEIsIDB4NEUsIDB4QjAsIDB4NzEsIDB4NUUsIDB4REUsIDB4NDgsIDB4NTgsIDB4NkEsIDB4MTAsIDB4NkIsIDB4QjEsIDB4NkQsCisgICAgMHhGOCwgMHhCMywgMHhGOSwgMHhEOSwgMHgyNCwgMHg0MywgMHgwQywgMHhCOSwgMHhBRSwgMHhCNywgMHg5QiwgMHg3NiwgMHgzQSwgMHhCMywgMHhGMSwgMHg2OCwKKyAgICAweDBBLCAweEQ0LCAweEU1LCAweEVDLCAweDMwLCAweDhELCAweDE5LCAweEQwLCAweDE5LCAweDQyLCAweDQyLCAweEY0LCAweEQyLCAweEYwLCAweDNELCAweDQwLAorICAgIDB4NEUsIDB4RjAsIDB4NTIsIDB4OEMsIDB4OUQsIDB4NzcsIDB4RTQsIDB4NUIsIDB4MDQsIDB4MTIsIDB4NEMsIDB4MDgsIDB4QzMsIDB4RjYsIDB4OUEsIDB4NTgsCisgICAgMHgyMCwgMHg0MCwgMHg0QiwgMHgwNiwgMHg4QiwgMHgxQywgMHhENiwgMHgwRSwgMHg3RCwgMHgyQywgMHg4QSwgMHg5RiwgMHhFQywgMHgyNSwgMHhGMCwgMHg2NiwKKyAgICAweDkxLCAweDM0LCAweEJFLCAweEI5LCAweDI3LCAweDAyLCAweEZFLCAweDlDLCAweDFDLCAweDNELCAweDhBLCAweEQ5LCAweDBDLCAweDY0LCAweDk4LCAweEUxLAorICAgIDB4MkMsIDB4OUYsIDB4MjUsIDB4RTksIDB4MEEsIDB4QjcsIDB4QTQsIDB4RTcsIDB4RTEsIDB4NTksIDB4NTEsIDB4MkEsIDB4QzAsIDB4QkYsIDB4NjMsIDB4ODAsCisgICAgMHhFRSwgMHg3MSwgMHgyNSwgMHhEMiwgMHhDQSwgMHgzRSwgMHgyMywgMHhBMiwgMHgwQSwgMHg1RCwgMHg1MywgMHhENSwgMHgzOCwgMHhDNiwgMHg3RSwgMHhCMiwKKyAgICAweEQ2LCAweEExLCAweEIwLCAweDFGLCAweEQwLCAweERBLCAweEE3LCAweDU5LCAweDMzLCAweEY0LCAweDQzLCAweDBBLCAweDlFLCAweENCLCAweDk1LCAweDVDLAorICAgIDB4NTIsIDB4RDUsIDB4MzQsIDB4OUUsIDB4NTIsIDB4QUMsIDB4QzEsIDB4MzYsIDB4ODQsIDB4MUYsIDB4NjIsIDB4MUQsIDB4ODYsIDB4RDYsIDB4QkQsIDB4NTYsCisgICAgMHg5RiwgMHhDQywgMHhBRiwgMHgzMCwgMHhDMCwgMHgzOSwgMHgyOCwgMHgyMiwgMHhEQiwgMHhEQSwgMHhENSwgMHg0QywgMHg0RiwgMHgxQiwgMHgzNiwgMHgxRCwKKyAgICAweDFELCAweEFDLCAweEY0LCAweDk4LCAweEY1LCAweDQ2LCAweDk0LCAweDMyLCAweDgwLCAweDJCLCAweEY4LCAweDE0LCAweEYwLCAweDY4LCAweDkxLCAweDFFLAorICAgIDB4RjYsIDB4NzIsIDB4MUMsIDB4NEEsIDB4RjksIDB4RDYsIDB4QzIsIDB4QTYsIDB4M0EsIDB4ODUsIDB4RTksIDB4RTEsIDB4NzYsIDB4QjUsIDB4QTAsIDB4RUEsCisgICAgMHg0NiwgMHg2QSwgMHgyQywgMHhGOCwgMHg4QiwgMHg4RCwgMHgwQywgMHhEMCwgMHgxRiwgMHg0RiwgMHhEOSwgMHgzOCwgMHg1QiwgMHhGRSwgMHg2RSwgMHg1OSwKKyAgICAweEEzLCAweEI4LCAweEE0LCAweDY4LCAweEVELCAweDAzLCAweDRBLCAweDA2LCAweEQzLCAweEMxLCAweENELCAweDAyLCAweDk1LCAweDI0LCAweDVDLCAweDNELAorICAgIDB4M0IsIDB4RUMsIDB4NUEsIDB4MUMsIDB4NDYsIDB4RDYsIDB4MUIsIDB4QTUsIDB4NDIsIDB4RkQsIDB4MkUsIDB4RTcsIDB4RUEsIDB4NDIsIDB4OTgsIDB4NDIsCisgICAgMHg1MywgMHhCNSwgMHhEOSwgMHhDRSwgMHg1MywgMHhDMSwgMHg4RiwgMHg4MywgMHg0RCwgMHhCMiwgMHhCNiwgMHg5RiwgMHg4RiwgMHhCMSwgMHg4OCwgMHg0RCwKKyAgICAweDQ1LCAweDNELCAweDA4LCAweDAxLCAweDlBLCAweDI4LCAweDdCLCAweDEwLCAweDk3LCAweDZDLCAweDc2LCAweDQ0LCAweEUxLCAweDA3LCAweDA0LCAweDUxLAorICAgIDB4MEUsIDB4NEEsIDB4QzcsIDB4OTgsIDB4RUQsIDB4ODYsIDB4MTcsIDB4NjksIDB4OTAsIDB4MTQsIDB4QTksIDB4RDgsIDB4QjcsIDB4MDcsIDB4MjgsIDB4NEEsCisgICAgMHg3NywgMHgwQiwgMHhGOSwgMHgzRiwgMHgyNywgMHg0RiwgMHhDRiwgMHhBOSwgMHhEQSwgMHhDRSwgMHhDNCwgMHhEQSwgMHgzMCwgMHgwOSwgMHg1NiwgMHg2NCwKKyAgICAweDU1LCAweENFLCAweEQ2LCAweEVBLCAweEU0LCAweDg1LCAweDkyLCAweDk1LCAweDNFLCAweDEyLCAweDVCLCAweEY0LCAweDIxLCAweDkxLCAweENCLCAweEQ5LAorICAgIDB4RkIsIDB4QjcsIDB4MzgsIDB4QkIsIDB4MUQsIDB4RkIsIDB4QUQsIDB4RTksIDB4NTUsIDB4NDAsIDB4OUQsIDB4RjMsIDB4MzAsIDB4QzUsIDB4QTQsIDB4OUUsCisgICAgMHgwMiwgMHhBOCwgMHg5QiwgMHg2RSwgMHgzMCwgMHgwNywgMHgzMiwgMHgxNiwgMHhEOSwgMHhFQiwgMHg4NSwgMHg1NSwgMHhDOCwgMHgzOCwgMHhCQywgMHg4NCwKKyAgICAweDlBLCAweDlELCAweDYxLCAweDFDLCAweDBELCAweEY1LCAweDA3LCAweDA2LCAweEM4LCAweDBCLCAweDczLCAweEMxLCAweEI4LCAweEQyLCAweDg0LCAweEMyLAorICAgIDB4QUYsIDB4Q0EsIDB4QjIsIDB4ODgsIDB4MEEsIDB4RTQsIDB4NzksIDB4ODQsIDB4NUMsIDB4OEIsIDB4RjcsIDB4QjYsIDB4QzQsIDB4NDcsIDB4OTIsIDB4QzksCisgICAgMHhDMSwgMHhCRCwgMHhGNiwgMHg4NCwgMHg3OCwgMHhDMiwgMHg3NCwgMHhDMywgMHhGOCwgMHgzQywgMHgzRiwgMHhENiwgMHgwRSwgMHgwMiwgMHg1RCwgMHgyMiwKKyAgICAweDQyLCAweDdELCAweEQzLCAweEI4LCAweEU5LCAweEJCLCAweDkxLCAweDM2LCAweDMyLCAweDgxLCAweERELCAweDg5LCAweENELCAweDQxLCAweDAwLCAweDM3LAorICAgIDB4NEYsIDB4QTEsIDB4NDgsIDB4MDMsIDB4MkYsIDB4M0QsIDB4NTQsIDB4MzgsIDB4MTcsIDB4N0MsIDB4NTEsIDB4NDAsIDB4OUEsIDB4NDEsIDB4NTcsIDB4M0MsCisgICAgMHhGNCwgMHg1RSwgMHgwRCwgMHhGNiwgMHhBNCwgMHhFNCwgMHhBMiwgMHg5NywgMHgzMCwgMHg3MSwgMHg0MCwgMHhDMywgMHgyMCwgMHg4OCwgMHhFRSwgMHg5NSwKKyAgICAweDdBLCAweEI5LCAweDAzLCAweDlELCAweDU0LCAweDEwLCAweEQxLCAweDVCLCAweEJDLCAweDZELCAweDc5LCAweEZFLCAweEY0LCAweDQ0LCAweDlDLCAweENCLAorICAgIDB4MUUsIDB4QUYsIDB4MEMsIDB4NkIsIDB4QjcsIDB4MTcsIDB4NjAsIDB4OTEsIDB4NDYsIDB4MUYsIDB4OUEsIDB4QTksIDB4RDgsIDB4ODQsIDB4MEQsIDB4NDksCisgICAgMHg2MCwgMHg0QSwgMHg0OCwgMHhERCwgMHg3MywgMHgxRSwgMHhERCwgMHgxNywgMHhBRCwgMHhCOCwgMHgzQywgMHg4QSwgMHhCMywgMHhEMywgMHg0QywgMHgzQywKKyAgICAweDk3LCAweEUzLCAweEQwLCAweDBBLCAweDhELCAweDgzLCAweDdFLCAweDNGLCAweEUyLCAweDAzLCAweEQxLCAweEQzLCAweDkzLCAweEEzLCAweEZGLCAweDNCLAorICAgIDB4MTIsIDB4NjUsIDB4MzYsIDB4RjMsIDB4MjcsIDB4QzEsIDB4MDUsIDB4MjcsIDB4QTIsIDB4MDMsIDB4NzEsIDB4N0MsIDB4QkQsIDB4RUMsIDB4REIsIDB4RTQsCisgICAgMHgzQiwgMHgzMywgMHg1RiwgMHg5MywgMHhCNSwgMHg0MSwgMHhBQywgMHhGOCwgMHg2RCwgMHhENywgMHhDQiwgMHgwNiwgMHgzMywgMHg5QSwgMHgyNSwgMHgyRSwKKyAgICAweEY2LCAweDJGLCAweEY0LCAweDM0LCAweDZGLCAweDVBLCAweDA1LCAweERELCAweDA0LCAweDk1LCAweDMzLCAweDY3LCAweDQ1LCAweEQ4LCAweEQ1LCAweEQ1LAorICAgIDB4RUEsIDB4QzgsIDB4MkYsIDB4OUIsIDB4QzMsIDB4QkUsIDB4RUQsIDB4Q0EsIDB4QzAsIDB4Q0YsIDB4QjYsIDB4RkMsIDB4N0MsIDB4ODgsIDB4MzcsIDB4MUEsCisgICAgMHg3RCwgMHhEQSwgMHg5QiwgMHgwRSwgMHhGQywgMHgzMCwgMHhEOSwgMHgxNywgMHhGMywgMHg0QywgMHgxNCwgMHhGMywgMHhEQSwgMHhGMiwgMHhDRiwgMHhDRCwKKyAgICAweDhBLCAweDQ2LCAweDIzLCAweERBLCAweDc2LCAweEM1LCAweEY5LCAweDA2LCAweEI5LCAweDc5LCAweEQzLCAweDFBLCAweEQyLCAweEE4LCAweDExLCAweDAzLAorICAgIDB4NUQsIDB4NzksIDB4QTksIDB4QTAsIDB4OTMsIDB4MTUsIDB4QzgsIDB4MjcsIDB4QzIsIDB4RDksIDB4N0YsIDB4NzgsIDB4M0UsIDB4ODQsIDB4RDQsIDB4MzcsCisgICAgMHgzOCwgMHg1MiwgMHg5NywgMHhEOCwgMHg1OCwgMHg2NywgMHg2QSwgMHgxMywgMHgwMCwgMHgwMCwgMHgyMCwgMHhGQiwgMHhGMiwgMHhCRCwgMHg1MiwgMHg3MSwKKyAgICAweEU2LCAweDFDLCAweDZDLCAweDk5LCAweEY2LCAweERFLCAweDcyLCAweDg5LCAweENDLCAweDkyLCAweDU3LCAweDEzLCAweDUyLCAweDA0LCAweDg4LCAweEU3LAorICAgIDB4QTUsIDB4QkMsIDB4MzYsIDB4NDYsIDB4M0MsIDB4MDMsIDB4NTksIDB4RkUsIDB4ODYsIDB4OTksIDB4QkMsIDB4NDAsIDB4NzAsIDB4RTksIDB4RjEsIDB4QUEsCisgICAgMHhDQywgMHg0RSwgMHgxNiwgMHhEMiwgMHg0QiwgMHg1NSwgMHhDMCwgMHg0MiwgMHg0MywgMHgzRCwgMHhGMSwgMHgxQSwgMHgzOCwgMHhCOSwgMHg0RiwgMHg5RSwKKyAgICAweDMxLCAweDRFLCAweDg2LCAweDA4LCAweDU3LCAweDk1LCAweDJELCAweEZCLCAweEQ3LCAweDEyLCAweEM0LCAweDExLCAweEMwLCAweDVELCAweDAwLCAweEQwLAorICAgIDB4QjUsIDB4OEQsIDB4RUEsIDB4OEYsIDB4NjYsIDB4RDMsIDB4MDAsIDB4MTcsIDB4ODAsIDB4MUEsIDB4NTQsIDB4MEYsIDB4REUsIDB4NzUsIDB4NDAsIDB4RDUsCisgICAgMHgxQiwgMHg2NCwgMHg4OSwgMHg5NiwgMHhGOSwgMHg5QSwgMHgwRCwgMHg3MCwgMHgyNiwgMHg1MCwgMHgzMSwgMHgzQSwgMHgzQywgMHgwRiwgMHg1RSwgMHhDOCwKKyAgICAweEEzLCAweEI4LCAweDVELCAweDcyLCAweERDLCAweEJBLCAweEIyLCAweEVGLCAweDU4LCAweDg5LCAweDUyLCAweDU1LCAweEY3LCAweDlBLCAweDE3LCAweEU3LAorICAgIDB4NDMsIDB4QzIsIDB4MEYsIDB4M0EsIDB4MTYsIDB4NzUsIDB4RUIsIDB4NDgsIDB4ODcsIDB4MkEsIDB4RjgsIDB4MEUsIDB4QkEsIDB4QkIsIDB4MEQsIDB4QTIsCisgICAgMHg2QywgMHgzNywgMHg3MSwgMHg1MCwgMHhBNCwgMHhCOCwgMHgzRiwgMHg3NywgMHgyQSwgMHhERSwgMHgxMiwgMHgxQiwgMHg4NywgMHgzOSwgMHg5MSwgMHg0MCwKKyAgICAweEE5LCAweDYyLCAweDkzLCAweDg3LCAweDU5LCAweDhGLCAweDFGLCAweDlFLCAweDI3LCAweEQ2LCAweDVGLCAweEE5LCAweDQ1LCAweDY3LCAweEJDLCAweDhDLAorICAgIDB4RTIsIDB4ODQsIDB4NEMsIDB4MjgsIDB4MEEsIDB4N0QsIDB4QkYsIDB4QzAsIDB4MDgsIDB4MUMsIDB4NzIsIDB4ODcsIDB4OTMsIDB4QzQsIDB4QTUsIDB4ODgsCisgICAgMHhGRiwgMHhEOSwgMHgyOSwgMHg2MiwgMHhDOSwgMHgyRiwgMHg5RCwgMHg5NiwgMHg0NCwgMHg3NywgMHhDMSwgMHg5RSwgMHhGNCwgMHhERiwgMHgzNywgMHg1RCwKKyAgICAweDA1LCAweDJGLCAweEQ4LCAweDRBLCAweDQ2LCAweDVELCAweEIyLCAweDBDLCAweEJFLCAweDI4LCAweEE0LCAweDE1LCAweDZCLCAweEMwLCAweEU0LCAweDlBLAorICAgIDB4RkIsIDB4QUUsIDB4Q0IsIDB4MUYsIDB4MTQsIDB4M0YsIDB4NjMsIDB4NjUsIDB4MjQsIDB4RDIsIDB4NDksIDB4NDksIDB4OTAsIDB4MzEsIDB4QkYsIDB4NkYsCisgICAgMHg0RiwgMHg4MywgMHhFMCwgMHhEQiwgMHhGMCwgMHgwQSwgMHhBMCwgMHg3RSwgMHg0NSwgMHg3RiwgMHgxNSwgMHg4NiwgMHg0QSwgMHgwMCwgMHgwNiwgMHg1MiwKKyAgICAweENFLCAweDk0LCAweDgxLCAweDU1LCAweDQ4LCAweDk5LCAweEY4LCAweDJDLCAweEQ1LCAweDE4LCAweDk4LCAweEY1LCAweEI3LCAweDVDLCAweDcxLCAweDExLAorICAgIDB4MTksIDB4QUIsIDB4N0QsIDB4QUQsIDB4MzUsIDB4NjEsIDB4MkIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4RjAsIDB4MzMsIDB4RjIsIDB4NEEsIDB4NzcsIDB4NDQsCisgICAgMHhGMiwgMHg3OSwgMHhBNSwgMHhFMSwgMHg1MywgMHhFRSwgMHg4NCwgMHgxOCwgMHg4QywgMHgxRiwgMHg0MywgMHhBNSwgMHhGNiwgMHhBNywgMHgzRSwgMHg3MywKKyAgICAweDg5LCAweDQyLCAweDlCLCAweDQ1LCAweEE2LCAweDIzLCAweDA5LCAweDhCLCAweDI4LCAweDAyLCAweEY0LCAweDUyLCAweEJBLCAweDJELCAweDlBLCAweDNBLAorICAgIDB4QkMsIDB4NTAsIDB4OEEsIDB4NkQsIDB4RDQsIDB4MEQsIDB4MTksIDB4QUMsIDB4N0YsIDB4MDQsIDB4OTksIDB4RkMsIDB4NUMsIDB4MTUsIDB4RDcsIDB4MzAsCisgICAgMHg5RSwgMHhERSwgMHhDQiwgMHg2MSwgMHg4OSwgMHg1NCwgMHgzNywgMHg2QSwgMHg5RSwgMHgyMSwgMHg2MiwgMHg1RSwgMHgyOCwgMHg0RSwgMHhDRSwgMHg0MSwKKyAgICAweDdELCAweDUwLCAweEZDLCAweDk5LCAweEIwLCAweDQzLCAweDg2LCAweDRBLCAweEFELCAweDJDLCAweDFDLCAweEZDLCAweDM2LCAweEY0LCAweDE2LCAweDhBLAorICAgIDB4MjMsIDB4ODgsIDB4QjgsIDB4MzIsIDB4QjAsIDB4NTMsIDB4M0YsIDB4NTAsIDB4REIsIDB4MDQsIDB4MjAsIDB4OTEsIDB4OUMsIDB4QTksIDB4NzEsIDB4NTcsCisgICAgMHhBQiwgMHg4OSwgMHhFNywgMHhBMCwgMHhBRiwgMHg2NSwgMHhFNCwgMHhERiwgMHgxOSwgMHg3RCwgMHgxQywgMHg5NSwgMHhFQiwgMHg3NiwgMHg5QSwgMHgxRSwKKyAgICAweDg5LCAweEVFLCAweDQ0LCAweDJELCAweENBLCAweEFGLCAweDYzLCAweDMyLCAweDFCLCAweEE2LCAweDBDLCAweDBBLCAweEEwLCAweDlELCAweDc1LCAweEZCLAorICAgIDB4OTgsIDB4NjgsIDB4NDQsIDB4QzcsIDB4MzEsIDB4NEUsIDB4QTQsIDB4MzksIDB4RTQsIDB4NzQsIDB4RDYsIDB4QkIsIDB4RTQsIDB4MjEsIDB4NkYsIDB4QUQsCisgICAgMHg1NywgMHg1NCwgMHgyQywgMHg5RiwgMHgzNSwgMHgwMSwgMHhGMSwgMHgwQSwgMHhFMSwgMHgwNywgMHhGNSwgMHg2MSwgMHg2MCwgMHgwQywgMHhGOCwgMHg5QiwKKyAgICAweDg1LCAweEU5LCAweEM0LCAweEJCLCAweEJELCAweEVDLCAweDQ1LCAweDVCLCAweERELCAweDBCLCAweEVELCAweDBGLCAweDU1LCAweDU0LCAweDdCLCAweDUwLAorICAgIDB4REIsIDB4QzcsIDB4QUMsIDB4MDUsIDB4MTYsIDB4NUUsIDB4NTUsIDB4OUMsIDB4ODMsIDB4QjIsIDB4NkQsIDB4OTUsIDB4NTksIDB4M0IsIDB4Q0EsIDB4QjUsCisgICAgMHgxQiwgMHg4MSwgMHg0RCwgMHhDNiwgMHhDMywgMHg4QiwgMHgyMCwgMHg5NSwgMHg1QywgMHhFNiwgMHgwMywgMHhCRiwgMHhGOCwgMHhBNywgMHgxNiwgMHg4QiwKKyAgICAweDQ5LCAweDYzLCAweERELCAweDcxLCAweDE1LCAweDhCLCAweDY2LCAweEEyLCAweEFCLCAweDQ3LCAweDA2LCAweDc0LCAweEI1LCAweEE4LCAweEM0LCAweDQ5LAorICAgIDB4MzEsIDB4NEYsIDB4RkYsIDB4MDgsIDB4MDgsIDB4QjIsIDB4MkYsIDB4OUUsIDB4NkQsIDB4MTMsIDB4REQsIDB4Q0IsIDB4NTMsIDB4QjAsIDB4NDcsIDB4NjEsCisgICAgMHg0OSwgMHg0NywgMHgxMCwgMHhGRiwgMHg4NywgMHhCMCwgMHgxMCwgMHhEOSwgMHgyMSwgMHhCRCwgMHgwRiwgMHgwMywgMHg5OCwgMHgzQiwgMHgwNywgMHhDNSwKKyAgICAweEM0LCAweDY1LCAweDM5LCAweDc2LCAweENDLCAweDQ0LCAweDYwLCAweENDLCAweDc5LCAweDdCLCAweDU2LCAweDM3LCAweEZFLCAweDMxLCAweEJCLCAweEZCLAorICAgIDB4ODgsIDB4ODIsIDB4Q0QsIDB4QTQsIDB4QTAsIDB4RUQsIDB4MkYsIDB4MEEsIDB4RjgsIDB4NzQsIDB4NEEsIDB4NkYsIDB4QzMsIDB4QjksIDB4MTEsIDB4NzYsCisgICAgMHgwQSwgMHhFQSwgMHgwRiwgMHgxQywgMHhGQywgMHg2QSwgMHg0OSwgMHg2QSwgMHgzOSwgMHgzMiwgMHhGOCwgMHg1QywgMHg0MCwgMHgxQSwgMHhBNSwgMHhFRCwKKyAgICAweDcyLCAweDU4LCAweDZCLCAweEQ2LCAweEEzLCAweDUzLCAweDExLCAweDgyLCAweEI4LCAweDc4LCAweDg1LCAweDM4LCAweEQ4LCAweEZELCAweDE4LCAweDhCLAorICAgIDB4REYsIDB4MEUsIDB4NjIsIDB4QUYsIDB4NkIsIDB4RTQsIDB4NUYsIDB4NDMsIDB4NTUsIDB4NTMsIDB4QjcsIDB4QUEsIDB4NDMsIDB4MzMsIDB4ODksIDB4QTgsCisgICAgMHg2NywgMHg2RSwgMHhEOCwgMHgwQSwgMHhDQywgMHgxRiwgMHg4OSwgMHhEQSwgMHhBNCwgMHgxNiwgMHhBMiwgMHhFMCwgMHhCQSwgMHhGNSwgMHgyMCwgMHgxMCwKKyAgICAweDA1LCAweDQyLCAweDAwLCAweEFELCAweDM5LCAweDQ5LCAweEU5LCAweDNELCAweDBBLCAweERGLCAweDdFLCAweDY1LCAweDE0LCAweEFGLCAweEE4LCAweDVFLAorICAgIDB4RDksIDB4QzIsIDB4MTYsIDB4NEYsIDB4MDcsIDB4MTgsIDB4QTAsIDB4QUQsIDB4MkMsIDB4RDgsIDB4MTksIDB4NkQsIDB4MTEsIDB4OTMsIDB4NjMsIDB4RDcsCisgICAgMHg2RCwgMHgwNSwgMHhBOSwgMHhEQiwgMHhCQSwgMHgwMiwgMHhDOCwgMHgxMCwgMHg2QSwgMHhBNSwgMHg0RiwgMHgzNSwgMHhDNCwgMHgzNSwgMHg3NCwgMHhDNSwKKyAgICAweEJGLCAweDQwLCAweDcxLCAweDkyLCAweERCLCAweDI2LCAweEI2LCAweEVCLCAweEQ4LCAweDE3LCAweDM0LCAweDk1LCAweEVFLCAweDNBLCAweEY2LCAweDMwLAorICAgIDB4NDgsIDB4NkMsIDB4QUQsIDB4ODgsIDB4ODIsIDB4MjIsIDB4NDgsIDB4OUIsIDB4QTMsIDB4REUsIDB4NUEsIDB4NDcsIDB4RUIsIDB4ODAsIDB4NEMsIDB4NzAsCisgICAgMHhGRiwgMHg3QiwgMHg3QywgMHhEOSwgMHhENywgMHg3RSwgMHgwOCwgMHg3NCwgMHg4RiwgMHhDNSwgMHgxNCwgMHhCQywgMHhDMCwgMHg0QiwgMHhGMiwgMHgzRiwKKyAgICAweEZGLCAweDUyLCAweEJDLCAweDIzLCAweEZCLCAweDMwLCAweEE5LCAweDJFLCAweDdBLCAweDkzLCAweDE2LCAweDczLCAweDk5LCAweEY0LCAweEU1LCAweEI3LAorICAgIDB4NUYsIDB4MDEsIDB4REQsIDB4OTYsIDB4MUEsIDB4REIsIDB4MzYsIDB4NzQsIDB4QkUsIDB4RDQsIDB4QUIsIDB4RTIsIDB4MTYsIDB4MjQsIDB4QjIsIDB4MEUsCisgICAgMHgzNiwgMHg0NiwgMHgzNiwgMHg4QywgMHg5MiwgMHhCNywgMHg3OSwgMHg1RSwgMHg4MywgMHgzNywgMHg2QSwgMHgxQSwgMHgxNSwgMHhDRSwgMHg2RCwgMHg2MSwKKyAgICAweEVBLCAweDlELCAweEU2LCAweDY1LCAweDI3LCAweEQ3LCAweEIzLCAweEY0LCAweDZELCAweDU1LCAweEI4LCAweEMwLCAweDQyLCAweDRDLCAweEU4LCAweDM2LAorICAgIDB4MUEsIDB4MEEsIDB4MjEsIDB4NjgsIDB4QjMsIDB4MTcsIDB4QjEsIDB4RUEsIDB4OEQsIDB4NUMsIDB4NTAsIDB4QkUsIDB4QzQsIDB4NDksIDB4QzUsIDB4N0QsCisgICAgMHgxOSwgMHg4MywgMHhGOCwgMHgwMiwgMHg3OCwgMHhBRSwgMHgzQSwgMHg1QSwgMHhCOSwgMHhBMywgMHhBMiwgMHgwRSwgMHhDQywgMHgxMCwgMHgzNiwgMHg0OSwKKyAgICAweDg0LCAweDQ0LCAweEEzLCAweEZFLCAweDVCLCAweDU2LCAweDVDLCAweDEzLCAweDQzLCAweERELCAweDkwLCAweDI5LCAweDY3LCAweDlCLCAweDNFLCAweEQzLAorICAgIDB4OUIsIDB4NjgsIDB4QTcsIDB4QUUsIDB4NTIsIDB4OUMsIDB4MzgsIDB4RjgsIDB4RjEsIDB4MTAsIDB4QjcsIDB4MTksIDB4NzUsIDB4NDMsIDB4MjcsIDB4NzUsCisgICAgMHg3RiwgMHgzMiwgMHg0MCwgMHg0MCwgMHhEQiwgMHhEMiwgMHg3MSwgMHgzNSwgMHg0NSwgMHg2QywgMHg1QiwgMHg0NywgMHg4NCwgMHg1NywgMHg0OSwgMHg3NSwKKyAgICAweEVCLCAweDc1LCAweERFLCAweDkzLCAweEIyLCAweEE3LCAweDk5LCAweDY1LCAweEIxLCAweDM0LCAweEE3LCAweEI3LCAweDY3LCAweDIxLCAweDk1LCAweDU2LAorICAgIDB4MjgsIDB4RjQsIDB4MTYsIDB4RjYsIDB4QTUsIDB4ODYsIDB4MDQsIDB4NjUsIDB4NDQsIDB4NDgsIDB4REUsIDB4MDIsIDB4RTQsIDB4MDgsIDB4NkYsIDB4NTcsCisgICAgMHhBMywgMHhFMSwgMHg0NSwgMHg2OCwgMHhDMiwgMHg5QywgMHg5NiwgMHhGRCwgMHhDQiwgMHg1QiwgMHgxRCwgMHhERiwgMHhCNSwgMHg1MiwgMHhBQywgMHhCNCwKKyAgICAweEU0LCAweDJELCAweDMzLCAweDc2LCAweDNDLCAweDU1LCAweDhBLCAweEQ3LCAweEQ5LCAweDY1LCAweEJELCAweDQ0LCAweDI3LCAweDRGLCAweDdCLCAweDQ4LAorICAgIDB4MDUsIDB4RDUsIDB4M0QsIDB4QjgsIDB4ODcsIDB4N0UsIDB4NDksIDB4RTYsIDB4OTksIDB4MTIsIDB4MjcsIDB4REEsIDB4OEUsIDB4QzksIDB4NDksIDB4NEYsCisgICAgMHhGQywgMHg2MSwgMHhENCwgMHg4QywgMHg2MywgMHhEMSwgMHgyNSwgMHg4QiwgMHgwOSwgMHhBMSwgMHgyMSwgMHg5NiwgMHhEQywgMHhGRiwgMHg3QSwgMHg1RiwKKyAgICAweDk5LCAweEJFLCAweEJDLCAweDA0LCAweDBCLCAweEQxLCAweDBFLCAweDQ0LCAweENFLCAweDJDLCAweEExLCAweDNDLCAweDhGLCAweDQ5LCAweEQ5LCAweEExLAorICAgIDB4RDQsIDB4NEQsIDB4OEUsIDB4MkIsIDB4M0UsIDB4QjQsIDB4MkYsIDB4NTksIDB4REIsIDB4NzEsIDB4OEEsIDB4QTUsIDB4ODUsIDB4RDgsIDB4MzEsIDB4NkEsCisgICAgMHhEMywgMHhFRSwgMHhCRCwgMHgzMiwgMHg5RCwgMHhDQSwgMHg1NSwgMHgxOSwgMHg2QSwgMHg3RiwgMHg0MywgMHhFMCwgMHg1QiwgMHg5MSwgMHgxNCwgMHg0QiwKKyAgICAweDBDLCAweEQyLCAweEExLCAweERBLCAweEU4LCAweDczLCAweEYxLCAweDI0LCAweEI5LCAweEVBLCAweDY5LCAweDc3LCAweEU0LCAweDJBLCAweDdELCAweEM0LAorICAgIDB4RDIsIDB4QjAsIDB4N0YsIDB4QUIsIDB4MjgsIDB4QjEsIDB4RDAsIDB4MzQsIDB4RjEsIDB4ODksIDB4MTgsIDB4NTcsIDB4QjAsIDB4NjUsIDB4NTAsIDB4M0QsCisgICAgMHg1RSwgMHg4MSwgMHhFNSwgMHhFRSwgMHhCRiwgMHhEMSwgMHg1OCwgMHgxRSwgMHhDNiwgMHhBMSwgMHhDRiwgMHhENywgMHgzMSwgMHg0QSwgMHg1RCwgMHg3OCwKKyAgICAweEM2LCAweEVELCAweDdGLCAweENDLCAweEM0LCAweEJELCAweEZCLCAweDZELCAweEY2LCAweEVFLCAweDI2LCAweEY3LCAweEE2LCAweEJFLCAweDA4LCAweDZBLAorICAgIDB4QUQsIDB4MDMsIDB4MjQsIDB4RTAsIDB4NzksIDB4MjQsIDB4RDAsIDB4QzEsIDB4RTksIDB4OUEsIDB4QUYsIDB4OTQsIDB4M0YsIDB4MTAsIDB4MkUsIDB4QzgsCisgICAgMHg5MywgMHgzNCwgMHgwOCwgMHg3MCwgMHhGRiwgMHgyRiwgMHgzMiwgMHg2NiwgMHhBRiwgMHgxOSwgMHhGRCwgMHhGRSwgMHhFQywgMHgyNCwgMHg0NCwgMHg3OSwKKyAgICAweDMwLCAweDQxLCAweDIxLCAweDQ5LCAweEMwLCAweEVGLCAweDMwLCAweDU5LCAweEM1LCAweDVCLCAweEJBLCAweDA0LCAweEFCLCAweDAzLCAweDJGLCAweDUwLAorICAgIDB4NTUsIDB4RjUsIDB4NDgsIDB4OUYsIDB4NDYsIDB4OTgsIDB4RjMsIDB4QzEsIDB4REMsIDB4RkUsIDB4OEYsIDB4RTksIDB4NTksIDB4OUYsIDB4NDksIDB4QjYsCisgICAgMHg2RCwgMHg1MywgMHg5RiwgMHgwNSwgMHgzRSwgMHhFRCwgMHhDRSwgMHhBRSwgMHg0RiwgMHhFOCwgMHgzOCwgMHhFNiwgMHgwRiwgMHg1NSwgMHg5NiwgMHhEMiwKKyAgICAweDUzLCAweDcyLCAweDZDLCAweDgwLCAweDc4LCAweEZCLCAweDdDLCAweERELCAweEQwLCAweDJFLCAweDIzLCAweDFCLCAweDY1LCAweDA4LCAweEYyLCAweDc2LAorICAgIDB4N0MsIDB4MzQsIDB4NkEsIDB4REMsIDB4QTAsIDB4RkIsIDB4RUMsIDB4REYsIDB4NDUsIDB4MUMsIDB4NTMsIDB4NkIsIDB4RkQsIDB4MkMsIDB4OTYsIDB4M0QsCisgICAgMHhGNCwgMHgyOSwgMHg0QywgMHhGOCwgMHg5MiwgMHg5RSwgMHhDNCwgMHg2QiwgMHg5NywgMHhDRCwgMHgxNiwgMHg0RCwgMHhBQiwgMHhCQywgMHgxMiwgMHhFRCwKKyAgICAweDMyLCAweDhDLCAweEFBLCAweDk0LCAweEVDLCAweDNFLCAweEYyLCAweEVDLCAweDI0LCAweDM1LCAweEQwLCAweDk3LCAweEM5LCAweDFFLCAweDRDLCAweDU3LAorICAgIDB4RjMsIDB4QzUsIDB4M0QsIDB4RTksIDB4MTEsIDB4NkIsIDB4QjAsIDB4NjYsIDB4QjQsIDB4NDUsIDB4RTQsIDB4NEMsIDB4RTMsIDB4NUMsIDB4RkEsIDB4MjQsCisgICAgMHgwRiwgMHg3MCwgMHgwOSwgMHhCNSwgMHhGNSwgMHg1QiwgMHg4MCwgMHhCRCwgMHgwQiwgMHgxNCwgMHhCNCwgMHhGNSwgMHg5QiwgMHg1MSwgMHgxMCwgMHg2RCwKKyAgICAweEI4LCAweDI5LCAweDZGLCAweDc0LCAweDg5LCAweDg5LCAweDBFLCAweDI2LCAweDA4LCAweEJGLCAweDNFLCAweEMyLCAweEQ1LCAweDMwLCAweDFELCAweEFDLAorICAgIDB4MzMsIDB4MTksIDB4MTAsIDB4MzIsIDB4NUUsIDB4Q0IsIDB4OUEsIDB4NTAsIDB4NTIsIDB4QjQsIDB4OEYsIDB4QzgsIDB4QTEsIDB4NDQsIDB4QjgsIDB4MkUsCisgICAgMHg4QiwgMHgwRCwgMHg2NywgMHgxRSwgMHg4RiwgMHgzMSwgMHgwMywgMHg5OSwgMHg5NiwgMHhCMiwgMHg3NiwgMHhGMiwgMHhDNywgMHhERiwgMHhDMywgMHg1NSwKKyAgICAweDUyLCAweEUzLCAweDE3LCAweEYxLCAweERGLCAweDc1LCAweDYwLCAweEIwLCAweDQ4LCAweEY4LCAweEMxLCAweERDLCAweEIyLCAweEZDLCAweDhBLCAweDE3LAorICAgIDB4NkEsIDB4RUQsIDB4NTgsIDB4MzMsIDB4MDIsIDB4MjQsIDB4MDcsIDB4ODYsIDB4RDQsIDB4QzAsIDB4RDksIDB4OTYsIDB4M0UsIDB4MDUsIDB4MTAsIDB4NzgsCisgICAgMHg1RCwgMHg2OSwgMHg1NiwgMHg3RiwgMHgxRCwgMHgwOCwgMHgyMCwgMHg0OSwgMHg2RSwgMHg0RiwgMHgyQSwgMHgwQiwgMHhFNiwgMHhGRCwgMHgxRSwgMHgzMiwKKyAgICAweDA4LCAweDA3LCAweDYyLCAweEE3LCAweDlDLCAweEQ1LCAweDM0LCAweEYwLCAweDM3LCAweDEzLCAweDhFLCAweDQzLCAweDEwLCAweDlELCAweEY5LCAweDUxLAorICAgIDB4MzgsIDB4QkIsIDB4NUYsIDB4NjEsIDB4MEEsIDB4MTgsIDB4RDQsIDB4QTQsIDB4RkIsIDB4NjAsIDB4OTMsIDB4RUQsIDB4MEEsIDB4NkYsIDB4OTksIDB4ODksCisgICAgMHhENiwgMHg2MywgMHg1QywgMHgxNSwgMHg2RiwgMHg5MywgMHhEOCwgMHhCMSwgMHhGMiwgMHg5NSwgMHgxMSwgMHhERSwgMHgyMCwgMHhBMiwgMHhFRSwgMHgxRSwKKyAgICAweDg0LCAweERBLCAweDNGLCAweEYxLCAweEU2LCAweDEwLCAweEE0LCAweEE4LCAweDJGLCAweEYxLCAweDZFLCAweDJBLCAweDA3LCAweDRELCAweDhELCAweEU2LAorICAgIDB4MzksIDB4OTYsIDB4OEEsIDB4Q0MsIDB4MDAsIDB4MzMsIDB4M0YsIDB4MEMsIDB4NzcsIDB4NUYsIDB4MkEsIDB4ODUsIDB4MjUsIDB4MjksIDB4MUUsIDB4RjYsCisgICAgMHg2NSwgMHgwRiwgMHgyRCwgMHg1RSwgMHgwNSwgMHhCRiwgMHgzQywgMHgwRSwgMHgwQSwgMHgxNywgMHg5OCwgMHhCOCwgMHhBNCwgMHg0OSwgMHgyOCwgMHhBOSwKKyAgICAweDNCLCAweEVELCAweENFLCAweEYzLCAweDdFLCAweEI2LCAweDM4LCAweDY2LCAweDBBLCAweDMxLCAweDQyLCAweEM3LCAweDJFLCAweDQwLCAweDYzLCAweDE2LAorICAgIDB4QTcsIDB4ODAsIDB4RTgsIDB4MTksIDB4M0EsIDB4NjEsIDB4QzcsIDB4ODQsIDB4QkUsIDB4ODksIDB4NTksIDB4RDAsIDB4MjMsIDB4RDksIDB4QUEsIDB4ODQsCisgICAgMHgyQSwgMHgyNiwgMHg1MywgMHgzMiwgMHgwRCwgMHg2QiwgMHhCQywgMHhCRiwgMHhBRCwgMHhFMSwgMHgwMywgMHg1RiwgMHg0QSwgMHhDNywgMHg1RiwgMHgwMywKKyAgICAweDg4LCAweDBCLCAweDhGLCAweDdBLCAweDUzLCAweEY4LCAweENDLCAweDkyLCAweEFELCAweDU3LCAweDA0LCAweEQ4LCAweEM5LCAweDlGLCAweDUxLCAweEI3LAorICAgIDB4OUMsIDB4NkEsIDB4QUIsIDB4NDUsIDB4MjcsIDB4MEYsIDB4QzYsIDB4MjEsIDB4QkUsIDB4MDEsIDB4NDMsIDB4OEYsIDB4MEMsIDB4NTQsIDB4REQsIDB4QUYsCisgICAgMHhGNiwgMHhGQiwgMHgzMiwgMHhBMywgMHg5NSwgMHhDQywgMHgwOSwgMHhCQywgMHg5OCwgMHhBRCwgMHhFRiwgMHhBOCwgMHhDNSwgMHgzRiwgMHg0NywgMHhGNywKKyAgICAweDQ2LCAweEJGLCAweDJDLCAweEY2LCAweDA1LCAweEZCLCAweEM4LCAweEU4LCAweDU2LCAweDJDLCAweDUwLCAweDg5LCAweERGLCAweDE0LCAweDY3LCAweEUwLAorICAgIDB4RDQsIDB4NDEsIDB4MTIsIDB4ODIsIDB4RDEsIDB4OTQsIDB4NzUsIDB4MDAsIDB4M0UsIDB4RjksIDB4NEYsIDB4Q0IsIDB4MjAsIDB4OUEsIDB4NjIsIDB4MTYsCisgICAgMHhCNCwgMHg1MCwgMHhCNiwgMHg2MywgMHgzQSwgMHg5QywgMHg5MSwgMHgzQywgMHhCQywgMHgwRiwgMHg2QSwgMHhCMCwgMHhFNSwgMHgyRSwgMHhENywgMHhFQSwKKyAgICAweEU3LCAweDg1LCAweEEzLCAweEQ5LCAweEIwLCAweEFCLCAweDhDLCAweDgzLCAweDY5LCAweDYyLCAweDQzLCAweDU2LCAweDFFLCAweERELCAweEExLCAweDU1LAorICAgIDB4ODYsIDB4N0YsIDB4MUYsIDB4Q0IsIDB4MUYsIDB4QTQsIDB4RjIsIDB4NTcsIDB4Q0UsIDB4QjAsIDB4QTIsIDB4MUQsIDB4RkEsIDB4MTcsIDB4NDMsIDB4NDYsCisgICAgMHhGNywgMHhGRCwgMHhBMywgMHg3MiwgMHhGQywgMHg1QywgMHhCQywgMHg5NiwgMHhBOSwgMHhCMywgMHgzOSwgMHhCOSwgMHg1NCwgMHhEMywgMHg3NSwgMHgxMSwKKyAgICAweDc4LCAweEFELCAweDA1LCAweDYxLCAweDBBLCAweEI2LCAweDdFLCAweDk0LCAweENCLCAweDM2LCAweDJGLCAweDAwLCAweEVBLCAweENBLCAweEVBLCAweDVGLAorICAgIDB4MDksIDB4RTgsIDB4REYsIDB4OTgsIDB4QTAsIDB4RkUsIDB4OEIsIDB4OUEsIDB4Q0IsIDB4NUUsIDB4RkMsIDB4NEUsIDB4RDgsIDB4MzAsIDB4OTEsIDB4OTcsCisgICAgMHg5NSwgMHg5MiwgMHg5RSwgMHg1NSwgMHhBQiwgMHg0NSwgMHg0QSwgMHgwRiwgMHhERCwgMHhGRiwgMHg3MywgMHg0RSwgMHgwQywgMHhDMywgMHg2MiwgMHgxMywKKyAgICAweDNBLCAweEM5LCAweEI1LCAweEVGLCAweDg1LCAweEQxLCAweDRELCAweEIzLCAweDdCLCAweEQ1LCAweEE1LCAweDMzLCAweEFGLCAweDlELCAweEJDLCAweDQ3LAorICAgIDB4RTMsIDB4MUUsIDB4QzgsIDB4OTcsIDB4RjQsIDB4QUYsIDB4RTAsIDB4OTYsIDB4ODIsIDB4OEQsIDB4M0UsIDB4RDksIDB4QkUsIDB4MUUsIDB4REIsIDB4MDQsCisgICAgMHhBNiwgMHgzOCwgMHhFNywgMHg2RiwgMHg4RiwgMHhDMSwgMHhDNywgMHg2NywgMHgwRiwgMHg1MCwgMHg0MiwgMHhDRSwgMHgxRiwgMHg0MiwgMHhDQSwgMHgyQywKKyAgICAweDUyLCAweEEwLCAweEVDLCAweEIyLCAweDAyLCAweDU2LCAweDM3LCAweDNCLCAweDk1LCAweDcwLCAweDBGLCAweDAzLCAweDMzLCAweDYxLCAweEU3LCAweERELAorICAgIDB4NkEsIDB4MEEsIDB4MEEsIDB4MjcsIDB4OEMsIDB4MEUsIDB4MTgsIDB4RjAsIDB4MzksIDB4ODMsIDB4ODcsIDB4MTIsIDB4MTgsIDB4MkIsIDB4NTMsIDB4RjQsCisgICAgMHg0MSwgMHgwMSwgMHg1MiwgMHhDRiwgMHhDNywgMHhCRSwgMHg0QSwgMHgxQiwgMHgzQiwgMHg3NywgMHhDRCwgMHhGMiwgMHhFMSwgMHg0RCwgMHhDNSwgMHg3OCwKKyAgICAweDRFLCAweDkzLCAweDlCLCAweEJELCAweEQ2LCAweEZBLCAweEJGLCAweDYwLCAweDQ4LCAweDc2LCAweDE5LCAweDNGLCAweDIyLCAweEFCLCAweEE4LCAweDg0LAorICAgIDB4QTAsIDB4QTcsIDB4OUUsIDB4NDAsIDB4RTMsIDB4QTQsIDB4ODYsIDB4RjEsIDB4NEYsIDB4MzUsIDB4N0YsIDB4RTksIDB4QUQsIDB4NkYsIDB4NDMsIDB4NjIsCisgICAgMHg0RSwgMHg5QiwgMHg5MSwgMHhENywgMHgzQiwgMHg2QywgMHgxQSwgMHg1MSwgMHg2NywgMHhEQiwgMHgxOCwgMHg1MSwgMHg5QywgMHg4RSwgMHhCMCwgMHhCMiwKKyAgICAweEUyLCAweDQ1LCAweEI1LCAweDQ4LCAweDExLCAweDAzLCAweDVDLCAweEYzLCAweDNBLCAweENELCAweDQzLCAweDE0LCAweDQwLCAweEZDLCAweDcyLCAweDhFLAorICAgIDB4NDQsIDB4RjAsIDB4RTYsIDB4RjcsIDB4NjksIDB4RDMsIDB4QzIsIDB4RjksIDB4NUEsIDB4QzcsIDB4NjgsIDB4QjMsIDB4QTAsIDB4NzQsIDB4OTQsIDB4MTIsCisgICAgMHhFQSwgMHg1RiwgMHhGNCwgMHg5MywgMHgyQSwgMHg5QiwgMHg3MSwgMHhGNSwgMHgxOSwgMHg4NywgMHg5OCwgMHhDMiwgMHgwNCwgMHhDMCwgMHg1MiwgMHhDNywKKyAgICAweDJDLCAweDI2LCAweEMxLCAweDkzLCAweERELCAweEIxLCAweEIyLCAweEE4LCAweDY4LCAweEY3LCAweEUzLCAweENFLCAweDIwLCAweDhFLCAweDAyLCAweEJGLAorICAgIDB4MDUsIDB4MDgsIDB4QkQsIDB4NTMsIDB4RDEsIDB4MzEsIDB4MzAsIDB4RDcsIDB4RjIsIDB4N0IsIDB4MTUsIDB4Q0IsIDB4MTAsIDB4NDcsIDB4N0IsIDB4NjYsCisgICAgMHhFRSwgMHg2MywgMHg0NCwgMHgyMSwgMHhBRCwgMHhENywgMHhEQywgMHhEOSwgMHg2MSwgMHhDQiwgMHhDNywgMHg3MSwgMHg4NywgMHgwNiwgMHhFQiwgMHhFMCwKKyAgICAweDZCLCAweDdELCAweDRFLCAweDAxLCAweDA1LCAweDBBLCAweERDLCAweDhGLCAweEYwLCAweDQwLCAweEE3LCAweERGLCAweDE4LCAweEQ2LCAweDcxLCAweDJDLAorICAgIDB4MkUsIDB4ODEsIDB4MDUsIDB4OTUsIDB4NDgsIDB4MjYsIDB4NTIsIDB4QkIsIDB4OUYsIDB4N0QsIDB4RDAsIDB4NTEsIDB4MjgsIDB4QTUsIDB4N0YsIDB4OUYsCisgICAgMHhDNSwgMHgzOCwgMHgzOSwgMHgzQSwgMHhERSwgMHgxRSwgMHg1MywgMHgyRiwgMHgwOCwgMHgxOSwgMHhFMCwgMHg1NiwgMHg4MywgMHgyOCwgMHhCMiwgMHg1QywKKyAgICAweEI0LCAweEVGLCAweDM1LCAweDkwLCAweEUwLCAweEUwLCAweDU0LCAweENDLCAweEU2LCAweEE3LCAweEI0LCAweDgzLCAweDVFLCAweEMwLCAweEM0LCAweEJFLAorICAgIDB4NDYsIDB4MzMsIDB4MTQsIDB4QjEsIDB4MDksIDB4QkIsIDB4RDIsIDB4QjMsIDB4REIsIDB4RTksIDB4QUMsIDB4NjIsIDB4RUYsIDB4NTIsIDB4NDIsIDB4ODIsCisgICAgMHg1RCwgMHg5OSwgMHg4RSwgMHhGRCwgMHgyOCwgMHhBOCwgMHhCNiwgMHhBQSwgMHhDNiwgMHg2OCwgMHg1OCwgMHhERiwgMHg4NywgMHgxMCwgMHgzMiwgMHhEOSwKKyAgICAweEIxLCAweEE3LCAweDQ5LCAweDc2LCAweDJELCAweDQwLCAweERELCAweDZELCAweEIzLCAweDY3LCAweDRDLCAweDU5LCAweEM0LCAweDVDLCAweDY2LCAweDc0LAorICAgIDB4QkUsIDB4MTMsIDB4QzUsIDB4MTksIDB4OTIsIDB4MjMsIDB4M0YsIDB4ODEsIDB4NzQsIDB4QjEsIDB4OUEsIDB4NjUsIDB4NUQsIDB4REQsIDB4MjQsIDB4N0UsCisgICAgMHg2RiwgMHgzQiwgMHhGMSwgMHg0NSwgMHg1NiwgMHg5RCwgMHg2NiwgMHhCMiwgMHg4QiwgMHhENiwgMHg4OSwgMHhFMywgMHhGNywgMHhENywgMHhERCwgMHg0NCwKKyAgICAweDZGLCAweDQxLCAweDUyLCAweDQzLCAweDY2LCAweEUwLCAweEIxLCAweDE4LCAweDM3LCAweEZFLCAweEU0LCAweDk1LCAweDI2LCAweDcxLCAweDI5LCAweDdELAorICAgIDB4QzUsIDB4N0EsIDB4NEEsIDB4NkIsIDB4QjAsIDB4QjEsIDB4M0IsIDB4RjIsIDB4RkEsIDB4NjcsIDB4MUQsIDB4NTcsIDB4QkUsIDB4NTEsIDB4RjAsIDB4NzYsCisgICAgMHgzNywgMHg0NSwgMHg2NSwgMHhGMywgMHgzMCwgMHg3NSwgMHgwQywgMHgyNiwgMHhENSwgMHg2RSwgMHg3QSwgMHhCRCwgMHhCNSwgMHgzMSwgMHhFNywgMHgzMCwKKyAgICAweDE0LCAweDUwLCAweDY0LCAweEI4LCAweDNDLCAweDg5LCAweDQzLCAweEYxLCAweDMyLCAweDdDLCAweDQ1LCAweEUzLCAweEQ4LCAweDUyLCAweEYyLCAweDAwLAorICAgIDB4RDQsIDB4OEQsIDB4NzYsIDB4RDQsIDB4RTYsIDB4NEMsIDB4NkQsIDB4OTgsIDB4N0QsIDB4NTYsIDB4MzcsIDB4MTUsIDB4MUIsIDB4MEYsIDB4NzUsIDB4NjYsCisgICAgMHg4OCwgMHgyOSwgMHhERiwgMHhGQiwgMHhCRiwgMHg5OSwgMHg1MSwgMHg0NiwgMHhEQSwgMHgyMCwgMHhCNCwgMHhEMSwgMHhCOCwgMHgwRCwgMHhFMSwgMHhBOCwKKyAgICAweDgyLCAweDJDLCAweDY5LCAweDdDLCAweDkzLCAweEU3LCAweDUxLCAweDNFLCAweDBGLCAweDI1LCAweERFLCAweDI1LCAweDJGLCAweDhELCAweDI4LCAweDRDLAorICAgIDB4QUYsIDB4MzUsIDB4NEYsIDB4MUMsIDB4NkIsIDB4NEIsIDB4NDMsIDB4QzksIDB4ODIsIDB4QUEsIDB4NUMsIDB4MzEsIDB4RjYsIDB4NEQsIDB4OUYsIDB4M0IsCisgICAgMHgxNywgMHgyNSwgMHgyMSwgMHgwRCwgMHhFNCwgMHg4MSwgMHg0OSwgMHhEMywgMHgwMiwgMHhFRCwgMHhFRSwgMHg3MywgMHhDRCwgMHg1NCwgMHhCRCwgMHhGMSwKKyAgICAweDBFLCAweDMxLCAweDVFLCAweDQ5LCAweDEzLCAweEZFLCAweEFBLCAweEZGLCAweDVELCAweDc3LCAweDY1LCAweDNELCAweDlBLCAweDYyLCAweERFLCAweDUyLAorICAgIDB4NEYsIDB4NEUsIDB4NUMsIDB4QTYsIDB4QTIsIDB4RUEsIDB4QTAsIDB4ODUsIDB4NjksIDB4NkYsIDB4NjQsIDB4MzAsIDB4NzEsIDB4RDcsIDB4RTAsIDB4NUYsCisgICAgMHhGMCwgMHhERiwgMHhCNywgMHhGQywgMHg5MywgMHgwOCwgMHhEQSwgMHg1OCwgMHhBQSwgMHg1MywgMHgxMCwgMHgzRSwgMHgyRiwgMHg0NywgMHg0OCwgMHgxMSwKKyAgICAweEM3LCAweDAyLCAweEIxLCAweEIwLCAweDI1LCAweDQ2LCAweDgzLCAweDg4LCAweDVELCAweEY4LCAweEJCLCAweDQzLCAweDAwLCAweDkxLCAweDg0LCAweDhFLAorICAgIDB4ODAsIDB4RjEsIDB4RTgsIDB4RTgsIDB4OTAsIDB4RTQsIDB4QzgsIDB4NEEsIDB4MTEsIDB4QTAsIDB4OTIsIDB4QUEsIDB4N0UsIDB4QTUsIDB4Q0EsIDB4QTcsCisgICAgMHhCNiwgMHgyMiwgMHg5QSwgMHhCMSwgMHg1NSwgMHg4RSwgMHg2RCwgMHhFNSwgMHg0NywgMHhENiwgMHgyRSwgMHg1OCwgMHg0MiwgMHhDQiwgMHhDNCwgMHgxOSwKKyAgICAweEI1LCAweEZGLCAweEFCLCAweEIxLCAweDhGLCAweDJBLCAweDgxLCAweDk0LCAweDE5LCAweDkxLCAweERBLCAweDNBLCAweDNDLCAweEJCLCAweDc0LCAweDhFLAorICAgIDB4ODQsIDB4MDcsIDB4RDMsIDB4M0IsIDB4NkEsIDB4NUUsIDB4RDAsIDB4NEQsIDB4RDEsIDB4QTAsIDB4RDYsIDB4NUIsIDB4MzIsIDB4N0YsIDB4OTIsIDB4Q0MsCisgICAgMHg1RSwgMHhERiwgMHhDRSwgMHg4OCwgMHhDRCwgMHgyQiwgMHg2QSwgMHg0QiwgMHgzRCwgMHg2OCwgMHg3NSwgMHg3QSwgMHhCMCwgMHhGMSwgMHgzNiwgMHgxQiwKKyAgICAweENBLCAweDk2LCAweEZCLCAweEUzLCAweDc3LCAweDlCLCAweDM4LCAweDgzLCAweDJFLCAweERELCAweDRDLCAweDUzLCAweDM1LCAweDg1LCAweEMyLCAweEUzLAorICAgIDB4Q0YsIDB4QTIsIDB4RjMsIDB4ODUsIDB4NDQsIDB4QTEsIDB4QjIsIDB4OUIsIDB4MEYsIDB4RTksIDB4MkEsIDB4ODIsIDB4RDUsIDB4QjMsIDB4QzMsIDB4RjEsCisgICAgMHgyQiwgMHhFOCwgMHgxQiwgMHgyQywgMHhGRiwgMHg3RCwgMHgzQywgMHhDOSwgMHgyNCwgMHgyNCwgMHgzNSwgMHhDOCwgMHg0MywgMHgxMCwgMHgyQSwgMHg5MiwKKyAgICAweDUzLCAweDI5LCAweDFELCAweDcxLCAweEI4LCAweEZELCAweDdFLCAweDE4LCAweDlCLCAweEJBLCAweDVGLCAweDQzLCAweDlGLCAweDhDLCAweDM1LCAweEI2LAorICAgIDB4MEQsIDB4OTMsIDB4QzEsIDB4QTcsIDB4QjksIDB4MkEsIDB4MDUsIDB4RUIsIDB4NTksIDB4QjQsIDB4QTEsIDB4OTQsIDB4NkMsIDB4OEIsIDB4RDMsIDB4ODIsCisgICAgMHhEMywgMHhGRiwgMHhBNywgMHgzNiwgMHg4QywgMHg3OSwgMHg4RCwgMHhCOSwgMHgxMSwgMHgwNCwgMHg3OCwgMHg0OSwgMHhBOCwgMHhCRSwgMHg3NiwgMHg3QywKKyAgICAweEFFLCAweDlDLCAweEQ4LCAweDI2LCAweDRDLCAweDEyLCAweDA3LCAweDQ1LCAweEUzLCAweDM5LCAweDdBLCAweEVELCAweEZELCAweDFFLCAweEMxLCAweEMyLAorICAgIDB4QkIsIDB4OTAsIDB4QjIsIDB4QTcsIDB4N0EsIDB4REMsIDB4NjUsIDB4NEUsIDB4OTksIDB4NzMsIDB4ODAsIDB4RjgsIDB4OUIsIDB4NkYsIDB4OTMsIDB4NzYsCisgICAgMHgxOCwgMHg3RCwgMHg2OSwgMHg3NSwgMHhBOSwgMHhCMCwgMHg0MiwgMHhEOSwgMHhFQiwgMHgyMSwgMHhGNSwgMHgwQiwgMHgzMywgMHg0NywgMHhERCwgMHhCNCwKKyAgICAweEMxLCAweDM2LCAweERBLCAweDZCLCAweDgyLCAweEUxLCAweDVCLCAweDIxLCAweEExLCAweEI3LCAweDhBLCAweDI5LCAweDczLCAweDY0LCAweDA2LCAweEM5LAorICAgIDB4MEEsIDB4NjcsIDB4ODIsIDB4Q0QsIDB4RDIsIDB4QzksIDB4NUMsIDB4NjIsIDB4NzUsIDB4MDMsIDB4MUEsIDB4RDcsIDB4MzIsIDB4RkUsIDB4ODQsIDB4NEUsCisgICAgMHhCNiwgMHhDRiwgMHg5NywgMHgwRCwgMHg2QywgMHgxMiwgMHgwQSwgMHg1NywgMHhDMywgMHhGMiwgMHg4NywgMHg2QywgMHgxRCwgMHgwNSwgMHgzOSwgMHgwQywKKyAgICAweEM5LCAweERCLCAweEE4LCAweEU1LCAweDJFLCAweDZBLCAweEUwLCAweEFCLCAweEQxLCAweDFDLCAweENDLCAweDE2LCAweEZFLCAweEI3LCAweDQ5LCAweDNDLAorICAgIDB4QzAsIDB4Q0IsIDB4NDMsIDB4NjMsIDB4NzQsIDB4ODksIDB4RDgsIDB4QjYsIDB4QzAsIDB4NjksIDB4ODAsIDB4RjQsIDB4OEUsIDB4ODQsIDB4RTAsIDB4MTAsCisgICAgMHg2MSwgMHgzRSwgMHhGNCwgMHgwNCwgMHhCNSwgMHgwNCwgMHgzNywgMHhBNCwgMHgyMywgMHgzMywgMHhEOCwgMHgzQywgMHgzNSwgMHgyNiwgMHhDOSwgMHhGNiwKKyAgICAweDA2LCAweDg1LCAweDVCLCAweEMyLCAweDhGLCAweDUzLCAweEJBLCAweDQ2LCAweERFLCAweDRDLCAweDdBLCAweENELCAweDhGLCAweEY5LCAweDMxLCAweDhBLAorICAgIDB4MjEsIDB4RDksIDB4REYsIDB4MEMsIDB4MkEsIDB4QzQsIDB4RjAsIDB4MUYsIDB4RjEsIDB4MzcsIDB4RDEsIDB4MUYsIDB4QTUsIDB4MjEsIDB4MjcsIDB4RTgsCisgICAgMHgyQiwgMHhBNiwgMHhCNiwgMHg4OSwgMHgzNCwgMHhGNCwgMHhGMywgMHg3QywgMHgyNCwgMHgwRSwgMHhBNiwgMHhEQiwgMHhCMywgMHg5RCwgMHg2MCwgMHgyOSwKKyAgICAweDNBLCAweEM3LCAweEQ2LCAweEFFLCAweEU3LCAweDk1LCAweEJGLCAweDMwLCAweDExLCAweEE0LCAweDc3LCAweENDLCAweDdDLCAweEU3LCAweDk2LCAweDdFLAorICAgIDB4QUMsIDB4RkMsIDB4RkEsIDB4RkQsIDB4NDEsIDB4QUEsIDB4MEMsIDB4NkMsIDB4NTMsIDB4NTYsIDB4QjYsIDB4NTUsIDB4N0UsIDB4QzMsIDB4QjQsIDB4ODIsCisgICAgMHg0QiwgMHhDMCwgMHg0QSwgMHhGRSwgMHhGNywgMHg1RiwgMHhEMSwgMHhBQiwgMHhEOCwgMHg4OSwgMHgwMCwgMHg0NCwgMHhBQSwgMHhCMSwgMHg2MiwgMHhFRiwKKyAgICAweEQ2LCAweDdGLCAweDFCLCAweDdCLCAweDIyLCAweDQ4LCAweEVBLCAweDAwLCAweDUzLCAweDQ5LCAweEE3LCAweENELCAweEE2LCAweDdCLCAweDYxLCAweEUzLAorICAgIDB4REQsIDB4RkMsIDB4QkYsIDB4QjcsIDB4QjAsIDB4Q0IsIDB4QUUsIDB4QUMsIDB4REUsIDB4OUIsIDB4OTgsIDB4QzgsIDB4ODYsIDB4N0MsIDB4QjIsIDB4RkIsCisgICAgMHhFRCwgMHg3NSwgMHhBNCwgMHgzMCwgMHhCRiwgMHg4QSwgMHg1MiwgMHg5NSwgMHg3RSwgMHhDRiwgMHg0QiwgMHgyOCwgMHhGMiwgMHhBMiwgMHgyRiwgMHhCOSwKKyAgICAweEEyLCAweDI0LCAweDkzLCAweEEzLCAweDg0LCAweENCLCAweDJDLCAweEMwLCAweDdELCAweDJGLCAweDZFLCAweDM1LCAweDMzLCAweDFCLCAweDBGLCAweDZFLAorICAgIDB4RkYsIDB4MzIsIDB4OTIsIDB4MDksIDB4MTcsIDB4MzEsIDB4RTQsIDB4RkMsIDB4MkMsIDB4NkEsIDB4OTMsIDB4MUIsIDB4RkEsIDB4QTQsIDB4ODcsIDB4MDQsCisgICAgMHg5RCwgMHgxRSwgMHhDQywgMHhDMSwgMHhENCwgMHg0MCwgMHg4MywgMHgyMSwgMHhCMywgMHg1RiwgMHgzRiwgMHg2OCwgMHg5QywgMHgzNywgMHg2OCwgMHg0NywKKyAgICAweDZBLCAweDIxLCAweDk4LCAweEJDLCAweDk1LCAweDUwLCAweEJFLCAweEY3LCAweEQ0LCAweDcyLCAweDIwLCAweDcwLCAweDEyLCAweDRGLCAweENCLCAweDc3LAorICAgIDB4QkYsIDB4NjgsIDB4NUEsIDB4Q0UsIDB4QjUsIDB4MTMsIDB4QzYsIDB4MjUsIDB4MzAsIDB4NzUsIDB4QTQsIDB4RjYsIDB4RTksIDB4REMsIDB4RjUsIDB4QzIsCisgICAgMHhCMCwgMHg1NywgMHg1NSwgMHhDMywgMHg2OSwgMHhFNSwgMHhGMSwgMHhCOSwgMHhBRSwgMHg1NSwgMHg2OSwgMHg1NiwgMHg1QSwgMHhCQywgMHhDRSwgMHgwRiwKKyAgICAweDExLCAweDMyLCAweDJBLCAweEU5LCAweDdFLCAweDQwLCAweDQwLCAweENDLCAweERELCAweDA0LCAweDYyLCAweDhCLCAweDNCLCAweDU3LCAweEU1LCAweDQ1LAorICAgIDB4Q0IsIDB4RUUsIDB4RjAsIDB4M0QsIDB4NkEsIDB4QUMsIDB4REQsIDB4ODMsIDB4N0MsIDB4MkYsIDB4NjYsIDB4OUEsIDB4NkMsIDB4M0IsIDB4RDEsIDB4ODAsCisgICAgMHg4NSwgMHhFNiwgMHhFNywgMHhFQSwgMHhFMCwgMHg4OSwgMHgxOSwgMHgwRSwgMHg1QSwgMHhERSwgMHg3RSwgMHg4RiwgMHg2QywgMHgwNSwgMHhCMywgMHhBNSwKKyAgICAweDg5LCAweDA4LCAweDQ1LCAweDYwLCAweEE1LCAweEUwLCAweEI4LCAweEQxLCAweDdELCAweDQ1LCAweEI2LCAweDIzLCAweDE5LCAweDg0LCAweDZBLCAweEMyLAorICAgIDB4MzMsIDB4RDIsIDB4RDgsIDB4OUEsIDB4ODcsIDB4RDAsIDB4RjQsIDB4RUQsIDB4MDYsIDB4MTEsIDB4MDgsIDB4RjEsIDB4RjIsIDB4OTIsIDB4QTUsIDB4NEQsCisgICAgMHhGNiwgMHhFNywgMHhCRiwgMHg4RSwgMHgzRCwgMHgwMSwgMHg2MCwgMHg1MCwgMHhDMCwgMHg0RiwgMHhCQiwgMHgzNywgMHhBQSwgMHg4RSwgMHhFNCwgMHg4MSwKKyAgICAweDlGLCAweEJELCAweERELCAweEEwLCAweEExLCAweDAwLCAweEQ4LCAweDVDLCAweDU1LCAweEIwLCAweENGLCAweDM5LCAweEVGLCAweEEwLCAweEUxLCAweDRGLAorICAgIDB4QTcsIDB4NUQsIDB4NDYsIDB4ODUsIDB4MTEsIDB4OTgsIDB4OEYsIDB4OUUsIDB4RUIsIDB4MTYsIDB4MEQsIDB4RjcsIDB4MEYsIDB4RUUsIDB4OUYsIDB4QkQsCisgICAgMHgyMiwgMHg4NywgMHgwQiwgMHgxMCwgMHgwQiwgMHg5RSwgMHg0RCwgMHhDMSwgMHg1RiwgMHg4MiwgMHhGQSwgMHhFRCwgMHhDQywgMHhBQywgMHhCNCwgMHg2MiwKKyAgICAweENBLCAweDU3LCAweDhCLCAweEU3LCAweDYwLCAweDVCLCAweENGLCAweDlCLCAweDc4LCAweEZCLCAweDhELCAweDEwLCAweENELCAweDMzLCAweDY4LCAweDE5LAorICAgIDB4MjUsIDB4MDAsIDB4Q0IsIDB4RDEsIDB4MTMsIDB4QjQsIDB4QTMsIDB4MjEsIDB4MDcsIDB4NUMsIDB4RUQsIDB4QzUsIDB4QkIsIDB4RkEsIDB4NjAsIDB4OEMsCisgICAgMHhCNywgMHhENCwgMHg0MSwgMHgzOSwgMHgyRCwgMHg5RSwgMHg2OSwgMHgzRSwgMHhDOCwgMHgyNSwgMHgzNCwgMHhBNCwgMHg1QiwgMHg1MiwgMHhCMywgMHhCRCwKKyAgICAweDMzLCAweEM5LCAweDc0LCAweDdCLCAweDdELCAweDQ2LCAweDYxLCAweDlELCAweDlGLCAweDI4LCAweEJDLCAweEU2LCAweDUzLCAweEQzLCAweEVBLCAweDVFLAorICAgIDB4RUYsIDB4RTMsIDB4MkUsIDB4RTgsIDB4NzYsIDB4NjgsIDB4NzUsIDB4ODAsIDB4OTgsIDB4NzgsIDB4OUYsIDB4MjAsIDB4RjgsIDB4NTAsIDB4QjcsIDB4QTEsCisgICAgMHg4OCwgMHgwQywgMHgwQiwgMHhENiwgMHhGNCwgMHg4NCwgMHg3QywgMHhBNSwgMHg3RCwgMHhFRSwgMHhCQiwgMHhENiwgMHg0NywgMHgzMCwgMHg4OSwgMHg1QywKKyAgICAweEY2LCAweEYzLCAweDlGLCAweDgzLCAweDU2LCAweEI1LCAweDQ3LCAweENELCAweDlGLCAweEQ2LCAweDUwLCAweDdBLCAweEQyLCAweEU1LCAweDNDLCAweDM2LAorICAgIDB4MzYsIDB4QkUsIDB4QkIsIDB4QUQsIDB4QjUsIDB4REUsIDB4OTIsIDB4OUYsIDB4QUYsIDB4MDYsIDB4NUUsIDB4M0UsIDB4MzYsIDB4QjksIDB4QzIsIDB4NTMsCisgICAgMHhDQSwgMHgzNSwgMHgyMSwgMHgzRSwgMHg0RiwgMHg4MywgMHg0QywgMHg2QiwgMHg1RSwgMHg4MCwgMHg5OCwgMHgwNSwgMHg0OSwgMHhFNywgMHgxNywgMHhDNiwKKyAgICAweDZFLCAweDI5LCAweDQxLCAweEYxLCAweDUxLCAweEI2LCAweERGLCAweDk3LCAweDlDLCAweDM3LCAweEVCLCAweEQxLCAweDI4LCAweDU3LCAweERELCAweEQ1LAorICAgIDB4NjQsIDB4OTMsIDB4MzEsIDB4ODAsIDB4NjcsIDB4NjcsIDB4NEIsIDB4RjMsIDB4MDgsIDB4MzgsIDB4NkQsIDB4OEEsIDB4MEQsIDB4NTAsIDB4NUQsIDB4MjIsCisgICAgMHgwMywgMHhGMiwgMHg1RiwgMHg3OSwgMHg5OCwgMHg4NywgMHgyRCwgMHgyRCwgMHgzMiwgMHg5MSwgMHhEOSwgMHg3QywgMHgwNywgMHg4QiwgMHhBNSwgMHg4MywKKyAgICAweEMwLCAweDg5LCAweEUxLCAweDlELCAweDc4LCAweEY1LCAweEI4LCAweDg4LCAweDVGLCAweEY2LCAweDVDLCAweDM1LCAweDEzLCAweDJCLCAweDA3LCAweEVBLAorICAgIDB4QUIsIDB4RUQsIDB4OTgsIDB4MUQsIDB4QzIsIDB4NTEsIDB4NTYsIDB4NDEsIDB4OTAsIDB4QTMsIDB4MEQsIDB4QjUsIDB4OTYsIDB4Q0IsIDB4MzQsIDB4MUMsCisgICAgMHg2RSwgMHg0MywgMHg4RiwgMHhCRiwgMHhCNSwgMHg2RiwgMHg1RCwgMHg1RSwgMHg5NCwgMHg5OSwgMHhDMSwgMHhEOSwgMHgxMiwgMHgwRiwgMHgxRCwgMHgxRSwKKyAgICAweDE2LCAweDAxLCAweEE3LCAweDcxLCAweEIxLCAweEY1LCAweDQ5LCAweEUzLCAweDc3LCAweDNELCAweDAyLCAweENGLCAweEUyLCAweDdDLCAweDk2LCAweDc3LAorICAgIDB4OEIsIDB4QTgsIDB4MDEsIDB4RkQsIDB4QzAsIDB4QjUsIDB4NTgsIDB4NkUsIDB4QTIsIDB4NTcsIDB4RkYsIDB4MzEsIDB4MjAsIDB4NUQsIDB4OTAsIDB4NTksCisgICAgMHg1NSwgMHg0MiwgMHhCNSwgMHg1RSwgMHg4RiwgMHg0QywgMHgyMywgMHg1NSwgMHgyMywgMHgyMSwgMHg0QSwgMHg3OSwgMHgzMCwgMHg5QywgMHhGOCwgMHhCOCwKKyAgICAweEQ0LCAweDVGLCAweDIzLCAweDY2LCAweEY0LCAweDAxLCAweDk2LCAweDQzLCAweEY4LCAweDJBLCAweDIwLCAweEZELCAweDA0LCAweDdFLCAweEU0LCAweEMzLAorICAgIDB4NEIsIDB4QzMsIDB4NTcsIDB4ODUsIDB4NjEsIDB4MTUsIDB4NDQsIDB4N0QsIDB4OEIsIDB4REMsIDB4MjksIDB4QTQsIDB4REIsIDB4RTYsIDB4MkQsIDB4Q0MsCisgICAgMHgzRSwgMHgxMiwgMHgwMywgMHhFQiwgMHhDMywgMHhCOSwgMHhEQywgMHhFMCwgMHgxMywgMHg3NCwgMHg0MSwgMHgyQiwgMHhGNiwgMHhFRiwgMHg2NywgMHhERCwKKyAgICAweDFELCAweEVFLCAweDhCLCAweDA3LCAweDMwLCAweDY4LCAweEY4LCAweDU2LCAweDY0LCAweDJCLCAweDRFLCAweEIxLCAweDE5LCAweEUzLCAweEU3LCAweEJFLAorICAgIDB4NzIsIDB4RDksIDB4NTAsIDB4NjksIDB4M0MsIDB4MjEsIDB4REEsIDB4RUUsIDB4NjMsIDB4ODksIDB4NUQsIDB4QjMsIDB4NzksIDB4RDgsIDB4RUYsIDB4MjYsCisgICAgMHhFMiwgMHgxRiwgMHg2NiwgMHgxNywgMHg0QywgMHg3MCwgMHhDRiwgMHhERiwgMHhDMCwgMHg5RiwgMHhFOSwgMHg4RiwgMHhBMiwgMHg4OCwgMHhEQiwgMHhEMiwKKyAgICAweDdGLCAweERGLCAweDMyLCAweEVBLCAweEVGLCAweDgzLCAweDRGLCAweEMzLCAweDZGLCAweDdGLCAweDBELCAweDRGLCAweDYzLCAweDAwLCAweEJBLCAweERELAorICAgIDB4NjAsIDB4MzcsIDB4MjEsIDB4MDIsIDB4QUYsIDB4OTksIDB4RTYsIDB4REMsIDB4MTIsIDB4RjUsIDB4NEYsIDB4Q0UsIDB4OUEsIDB4QzIsIDB4MTksIDB4QjksCisgICAgMHhCMiwgMHg5RSwgMHg4NywgMHg4MywgMHhBOCwgMHgwNiwgMHg1NiwgMHg3RCwgMHhCNywgMHg3RiwgMHg3MywgMHgzOCwgMHhEQywgMHhFOSwgMHhDNywgMHg3NSwKKyAgICAweDYzLCAweENBLCAweDNDLCAweDA3LCAweDA2LCAweDZBLCAweDlFLCAweDk3LCAweDE0LCAweDJFLCAweEVELCAweDQwLCAweDU4LCAweDNELCAweDlGLCAweDUyLAorICAgIDB4OEYsIDB4NTIsIDB4NDAsIDB4M0EsIDB4MkEsIDB4QkIsIDB4M0IsIDB4RTEsIDB4OEIsIDB4RUEsIDB4RDQsIDB4Q0QsIDB4QzAsIDB4RTksIDB4NjgsIDB4MTUsCisgICAgMHg1MywgMHg5MywgMHg1OSwgMHhDMSwgMHgzQSwgMHg1MCwgMHhENiwgMHg5OCwgMHhGNSwgMHg0RSwgMHhCQywgMHg4NywgMHgzRSwgMHgzQSwgMHgyRSwgMHhCMCwKKyAgICAweDAzLCAweDg4LCAweDQwLCAweDVCLCAweDZBLCAweDlCLCAweDZELCAweDNELCAweENCLCAweDZDLCAweDFCLCAweDBBLCAweEFBLCAweDdGLCAweEJDLCAweEUxLAorICAgIDB4NTYsIDB4RjAsIDB4NjIsIDB4MDksIDB4QzQsIDB4MDQsIDB4RkIsIDB4RTIsIDB4NjEsIDB4QUEsIDB4REUsIDB4NzMsIDB4RjMsIDB4MzcsIDB4QTksIDB4NDksCisgICAgMHg5OCwgMHgyOSwgMHgwNSwgMHg2NywgMHg3QywgMHhCOCwgMHg3OCwgMHhGRSwgMHhENiwgMHhGOCwgMHhCRiwgMHg1OSwgMHhENCwgMHhGNSwgMHgyMCwgMHgzNywKKyAgICAweENDLCAweDRDLCAweDVBLCAweEM1LCAweDI2LCAweDE3LCAweDM0LCAweDhELCAweEIwLCAweDMwLCAweDc5LCAweDkyLCAweDY0LCAweEFELCAweEZCLCAweDZELAorICAgIDB4NzMsIDB4RDksIDB4RDIsIDB4NUQsIDB4NEMsIDB4NTIsIDB4ODYsIDB4QjIsIDB4NEEsIDB4RTUsIDB4REUsIDB4RjAsIDB4NTgsIDB4NzIsIDB4RTUsIDB4QjUsCisgICAgMHhDMywgMHg4MywgMHhENCwgMHhGQywgMHg3RSwgMHgyRiwgMHgyRCwgMHhBRCwgMHg5MCwgMHgzNiwgMHhDQywgMHhENiwgMHg0OSwgMHg5MywgMHhGRSwgMHhBMCwKKyAgICAweDdBLCAweEVELCAweDhCLCAweDg1LCAweDczLCAweDY1LCAweDFBLCAweEFELCAweEIyLCAweEQ1LCAweEExLCAweDg2LCAweDhBLCAweDQzLCAweDgxLCAweEQ5LAorICAgIDB4NEYsIDB4QTAsIDB4MDksIDB4NEIsIDB4QkYsIDB4MkMsIDB4QkIsIDB4MTIsIDB4NUMsIDB4RkYsIDB4QjYsIDB4NTYsIDB4MjYsIDB4ODMsIDB4OTgsIDB4N0EsCisgICAgMHgzMSwgMHgxMCwgMHg3MiwgMHg4RiwgMHg0RiwgMHgzOCwgMHg3NSwgMHhBNCwgMHg1RCwgMHhDMywgMHg0OSwgMHg4OCwgMHgwQiwgMHgxNSwgMHg4NiwgMHgyRCwKKyAgICAweDMwLCAweDJGLCAweDhCLCAweEFELCAweEMyLCAweDVCLCAweEJFLCAweEM3LCAweDc5LCAweDA0LCAweDZBLCAweDM2LCAweDJGLCAweEQ4LCAweDI3LCAweEUyLAorICAgIDB4RDksIDB4NTgsIDB4MkEsIDB4MEEsIDB4QTIsIDB4MTQsIDB4Q0IsIDB4NTksIDB4MEYsIDB4REMsIDB4M0MsIDB4N0QsIDB4NTcsIDB4MEYsIDB4NDcsIDB4NTMsCisgICAgMHgxRSwgMHgzRSwgMHg5OSwgMHg2RSwgMHhGNiwgMHgzQiwgMHhFOCwgMHhDRiwgMHhFMywgMHgxMywgMHg1NywgMHgxNCwgMHhGNSwgMHg3QywgMHgyRiwgMHg4QiwKKyAgICAweEQ4LCAweDgzLCAweDNCLCAweDFBLCAweDdELCAweDE1LCAweDBBLCAweDhBLCAweDY3LCAweDBGLCAweDE4LCAweDIxLCAweDA5LCAweDhFLCAweEU3LCAweDRFLAorICAgIDB4QzIsIDB4NjYsIDB4RjksIDB4NTMsIDB4ODIsIDB4MjQsIDB4NTgsIDB4RjgsIDB4M0UsIDB4NDEsIDB4MzQsIDB4NzEsIDB4OEUsIDB4OTksIDB4ODcsIDB4MjcsCisgICAgMHhCOSwgMHgxRiwgMHg4QSwgMHhBRCwgMHg1NiwgMHg1NiwgMHgyRCwgMHg0OSwgMHgwMCwgMHhBNCwgMHhCMiwgMHg4OSwgMHhGQiwgMHg4RiwgMHg1MCwgMHgxMSwKKyAgICAweEVCLCAweDE3LCAweDZBLCAweDUxLCAweDM5LCAweEQwLCAweDIzLCAweDFGLCAweDc2LCAweEQ2LCAweEY4LCAweDQxLCAweDVCLCAweDA5LCAweERGLCAweEVBLAorICAgIDB4OEIsIDB4NEUsIDB4ODYsIDB4NTYsIDB4MTIsIDB4NTYsIDB4OTksIDB4OEQsIDB4MUQsIDB4QzIsIDB4MTUsIDB4N0MsIDB4M0MsIDB4MjcsIDB4QUIsIDB4NkEsCisgICAgMHg0OCwgMHg1QSwgMHgxNCwgMHgyNSwgMHgxRSwgMHg2OSwgMHg5MSwgMHgwMywgMHgyNiwgMHhGMywgMHg4NywgMHhBNSwgMHg2NiwgMHgxNCwgMHg5RSwgMHhFQSwKKyAgICAweDc4LCAweEM3LCAweEVDLCAweDlCLCAweDBBLCAweDQwLCAweDU2LCAweDk0LCAweDc4LCAweDVBLCAweDlELCAweDk5LCAweEFELCAweEQzLCAweEZCLCAweEM5LAorICAgIDB4NUQsIDB4Q0UsIDB4MDUsIDB4QUMsIDB4NkUsIDB4OTUsIDB4NTcsIDB4NkMsIDB4NEUsIDB4MDQsIDB4QjUsIDB4RTQsIDB4M0IsIDB4RUYsIDB4ODIsIDB4NzAsCisgICAgMHgxQiwgMHhDNCwgMHgzOCwgMHg2MywgMHgwQywgMHg2NiwgMHg0NywgMHhCOSwgMHhERiwgMHg0QiwgMHhGNSwgMHhCMSwgMHhBQywgMHhCOSwgMHhCMiwgMHhCNSwKKyAgICAweEYxLCAweEYyLCAweEUwLCAweDY3LCAweDM5LCAweDYyLCAweDFDLCAweDBBLCAweDRGLCAweDEwLCAweEZBLCAweERBLCAweEVDLCAweDVBLCAweEJELCAweDU1LAorICAgIDB4ODIsIDB4QjksIDB4NUYsIDB4QjksIDB4MUMsIDB4N0IsIDB4QzMsIDB4ODgsIDB4N0YsIDB4QjYsIDB4NEEsIDB4NDEsIDB4QTIsIDB4MDIsIDB4RjIsIDB4M0UsCisgICAgMHhFMCwgMHgwRiwgMHgxQywgMHhENiwgMHhDOSwgMHhCNSwgMHg2RiwgMHhGQiwgMHhENywgMHgxNiwgMHg0OSwgMHhCMiwgMHgxNCwgMHhDOSwgMHgyQywgMHgyQiwKKyAgICAweEM2LCAweDQ1LCAweDE5LCAweDg0LCAweDE3LCAweDg3LCAweEUxLCAweERDLCAweDQ5LCAweDQ4LCAweDBCLCAweDY1LCAweDQ3LCAweDJCLCAweEZFLCAweDdDLAorICAgIDB4NzUsIDB4MzAsIDB4RkEsIDB4QjksIDB4NDAsIDB4MUMsIDB4QzIsIDB4QTIsIDB4MTAsIDB4NDMsIDB4REUsIDB4NUUsIDB4RjEsIDB4NEQsIDB4Q0UsIDB4NTYsCisgICAgMHhBOSwgMHg1OSwgMHg1QywgMHg3QywgMHgzNywgMHg5QSwgMHgxNywgMHg4QSwgMHhFQSwgMHgyRCwgMHhGRiwgMHgzMiwgMHhGNywgMHhCNywgMHgwMSwgMHhFRSwKKyAgICAweEI2LCAweEM2LCAweEExLCAweEQ3LCAweEJCLCAweDc5LCAweDg4LCAweDJCLCAweEM2LCAweDUyLCAweDdFLCAweENELCAweDc1LCAweDE5LCAweDg4LCAweEFCLAorICAgIDB4NTEsIDB4NjcsIDB4RkMsIDB4NUMsIDB4MTEsIDB4NzksIDB4NDksIDB4NjYsIDB4RTgsIDB4RTYsIDB4NDgsIDB4NkIsIDB4NzksIDB4MEUsIDB4MzUsIDB4OTMsCisgICAgMHgxRSwgMHhENCwgMHgxRSwgMHhENywgMHhDOCwgMHg3QSwgMHhDRSwgMHgyNCwgMHhGNSwgMHgwMSwgMHg2OSwgMHgxNiwgMHhDMSwgMHhGQiwgMHg4QiwgMHgzNiwKKyAgICAweDlFLCAweDRGLCAweDQyLCAweDBELCAweDdDLCAweEI1LCAweDhFLCAweERBLCAweDJBLCAweDA3LCAweDdELCAweEZGLCAweEIzLCAweDE5LCAweEI2LCAweDMzLAorICAgIDB4RjQsIDB4MkIsIDB4MjUsIDB4RUQsIDB4N0UsIDB4MjEsIDB4QTIsIDB4OUEsIDB4MjYsIDB4MEUsIDB4MEEsIDB4RTAsIDB4OTgsIDB4MUYsIDB4QUQsIDB4NzksCisgICAgMHhBNiwgMHg0QywgMHhGNiwgMHgyRCwgMHhEMSwgMHhFMiwgMHgyQywgMHg0QiwgMHhFQSwgMHhBQiwgMHg1RSwgMHhFQiwgMHg5RSwgMHhCMCwgMHhGNCwgMHhCNSwKKyAgICAweEZDLCAweENDLCAweDY4LCAweEZGLCAweDM1LCAweDFELCAweEJGLCAweEVFLCAweDNCLCAweDIyLCAweEMxLCAweDk1LCAweDRDLCAweDM5LCAweDU1LCAweEU4LAorICAgIDB4RUEsIDB4ODAsIDB4RDQsIDB4OUUsIDB4OUMsIDB4OEQsIDB4RkYsIDB4MjIsIDB4NjAsIDB4QzYsIDB4NTYsIDB4OTYsIDB4ODYsIDB4NDcsIDB4M0MsIDB4QTUsCisgICAgMHhCOCwgMHhENSwgMHgzNSwgMHg5NywgMHhGNywgMHgzNSwgMHhDNywgMHgwOCwgMHg0NywgMHhFMSwgMHhBRCwgMHhDNSwgMHgyOCwgMHg1NCwgMHhDRSwgMHhGMywKKyAgICAweEE5LCAweDZBLCAweDA4LCAweDM4LCAweEU5LCAweDQyLCAweDZBLCAweDJFLCAweEM1LCAweEMwLCAweEEwLCAweEE0LCAweDYyLCAweDdELCAweEUwLCAweDZGLAorICAgIDB4NTYsIDB4MjUsIDB4RUUsIDB4OTAsIDB4RDksIDB4MTcsIDB4MDUsIDB4MUEsIDB4MEMsIDB4QUIsIDB4RDMsIDB4RDIsIDB4QkEsIDB4REUsIDB4QUIsIDB4QkEsCisgICAgMHg4RiwgMHg4NSwgMHgzRSwgMHhBRiwgMHgyRSwgMHhBMSwgMHg1MywgMHgwMiwgMHg4QSwgMHg1NSwgMHg5MSwgMHg4OCwgMHhCOCwgMHg5MiwgMHgzRSwgMHgxMSwKKyAgICAweEVGLCAweEI0LCAweDJCLCAweDgxLCAweEUzLCAweENELCAweDBELCAweEVCLCAweEMyLCAweDVFLCAweDM0LCAweENCLCAweDI3LCAweDU2LCAweDc5LCAweDY5LAorICAgIDB4RDgsIDB4M0EsIDB4QzMsIDB4OTEsIDB4OTQsIDB4NDcsIDB4RTksIDB4RkMsIDB4OTgsIDB4QTYsIDB4NzQsIDB4N0UsIDB4QkUsIDB4OEQsIDB4MDksIDB4QjYsCisgICAgMHg1QywgMHg0NiwgMHhBNCwgMHhEMSwgMHg3QiwgMHhGOCwgMHg3OCwgMHgzMywgMHg4OCwgMHhFRiwgMHhENiwgMHg1NiwgMHg2NiwgMHg4QiwgMHgyNywgMHhCMywKKyAgICAweDU1LCAweDI3LCAweENCLCAweEY1LCAweEQxLCAweDI1LCAweDE1LCAweDk3LCAweDcwLCAweDEzLCAweDA5LCAweDcyLCAweEVCLCAweEUxLCAweEQzLCAweEY5LAorICAgIDB4ODksIDB4NzUsIDB4MjcsIDB4RjUsIDB4QTMsIDB4QTMsIDB4MDAsIDB4RDYsIDB4MTEsIDB4MUIsIDB4MDksIDB4RjksIDB4QjksIDB4MEIsIDB4OEMsIDB4QkEsCisgICAgMHg0MCwgMHhDMCwgMHgzRiwgMHg4NywgMHhDRiwgMHhDNSwgMHhBQiwgMHhCMCwgMHg1MCwgMHg5OSwgMHg3MiwgMHg1RSwgMHhGNiwgMHg3MywgMHg0OCwgMHhFOCwKKyAgICAweDBCLCAweDRDLCAweERFLCAweDQ5LCAweEMwLCAweEQ3LCAweDczLCAweDIxLCAweDIxLCAweDJDLCAweDIyLCAweDRELCAweDlELCAweEY5LCAweDQ4LCAweEEwLAorICAgIDB4ODQsIDB4MUIsIDB4Q0MsIDB4MzQsIDB4MkYsIDB4MUMsIDB4NTgsIDB4N0UsIDB4QzQsIDB4NzUsIDB4QjUsIDB4NzUsIDB4MjgsIDB4QkMsIDB4RjgsIDB4OUMsCisgICAgMHg1RCwgMHhFQSwgMHgzQywgMHg5NCwgMHhGMywgMHg1RiwgMHgwQSwgMHg5MCwgMHg0QywgMHg2NCwgMHhFNCwgMHhDMiwgMHg3MCwgMHg2OSwgMHg3OSwgMHhDNCwKKyAgICAweDI4LCAweERGLCAweDk0LCAweDEwLCAweDQzLCAweDZGLCAweEFELCAweDlBLCAweENDLCAweEYzLCAweDc0LCAweDI4LCAweEJBLCAweERCLCAweDhGLCAweEU1LAorICAgIDB4NUQsIDB4MUYsIDB4MkQsIDB4REIsIDB4MEEsIDB4OTksIDB4MzYsIDB4QTQsIDB4NTAsIDB4OTMsIDB4NTMsIDB4QUMsIDB4MzcsIDB4NzEsIDB4NTksIDB4NjQsCisgICAgMHhGQywgMHhEMSwgMHg4OSwgMHg0RiwgMHg5RSwgMHgzQSwgMHhEQywgMHgyQywgMHhCQiwgMHg3OCwgMHgxRiwgMHgxOSwgMHg2MywgMHhENywgMHhCMiwgMHg1NSwKKyAgICAweEY4LCAweDk2LCAweEZDLCAweDE5LCAweEE2LCAweDQ2LCAweEM1LCAweEZCLCAweENDLCAweDY5LCAweDk3LCAweEQ0LCAweDA4LCAweDNGLCAweEQzLCAweEI3LAorICAgIDB4MjcsIDB4RDAsIDB4NTIsIDB4NDgsIDB4MEQsIDB4NDIsIDB4RTMsIDB4NDksIDB4RkUsIDB4REUsIDB4NEMsIDB4MDQsIDB4M0YsIDB4ODEsIDB4NDgsIDB4NDQsCisgICAgMHg4OCwgMHgyOSwgMHgzOCwgMHgxMSwgMHgyQSwgMHgxRiwgMHgyQiwgMHgzMywgMHgxMywgMHgwRiwgMHgwRiwgMHg0NCwgMHhBQywgMHhFQiwgMHhCQSwgMHhFMSwKKyAgICAweDgzLCAweDE1LCAweDgzLCAweDUyLCAweDUwLCAweEQyLCAweDgwLCAweDI4LCAweEVELCAweDc2LCAweEUzLCAweDU5LCAweEM4LCAweEMxLCAweDhDLCAweDQxLAorICAgIDB4MjIsIDB4QkMsIDB4RDksIDB4NUYsIDB4NTAsIDB4NDAsIDB4RkYsIDB4NUYsIDB4NjYsIDB4NjksIDB4MUIsIDB4RDUsIDB4NDcsIDB4NzYsIDB4NDQsIDB4QzAsCisgICAgMHg4NSwgMHhCNSwgMHg1NSwgMHg3MCwgMHgxMywgMHhBQywgMHhFRSwgMHgxMSwgMHg2MSwgMHhBQywgMHhGRSwgMHgxQSwgMHhBNywgMHg0MywgMHhBOSwgMHg2RCwKKyAgICAweEI3LCAweDk0LCAweDUwLCAweDgxLCAweDhELCAweEJFLCAweENDLCAweENFLCAweEVELCAweDYyLCAweEM0LCAweDFCLCAweDk3LCAweEZELCAweDEwLCAweDE0LAorICAgIDB4RTYsIDB4MEUsIDB4MTEsIDB4MTYsIDB4OTUsIDB4NkEsIDB4NUUsIDB4MEYsIDB4ODcsIDB4ODgsIDB4NzIsIDB4QTcsIDB4MzIsIDB4OUEsIDB4MDUsIDB4QTIsCisgICAgMHhDMCwgMHhEMywgMHgyMywgMHgwQywgMHhDMCwgMHgzNCwgMHg5MywgMHg4MCwgMHg1MSwgMHg0MCwgMHg5QSwgMHgyNSwgMHg0RCwgMHg1RCwgMHg3MCwgMHg4NywKKyAgICAweDRDLCAweENFLCAweDQ1LCAweEUyLCAweDJELCAweDQyLCAweDVBLCAweDM2LCAweDVBLCAweDJBLCAweDY5LCAweEYyLCAweDgxLCAweEEwLCAweDkwLCAweEZGLAorICAgIDB4RUIsIDB4QjUsIDB4NUEsIDB4NkIsIDB4QjUsIDB4OUYsIDB4MTUsIDB4NkEsIDB4MEEsIDB4MzksIDB4RjAsIDB4M0EsIDB4M0YsIDB4QTcsIDB4OEYsIDB4RjUsCisgICAgMHgxQiwgMHg4MSwgMHhBOSwgMHg3RiwgMHhERiwgMHg0OSwgMHhFQSwgMHhDMywgMHg2QiwgMHhDNSwgMHhDMywgMHgyMywgMHhFNSwgMHgwOCwgMHg4RCwgMHhGQywKKyAgICAweERFLCAweDU1LCAweEVBLCAweDY1LCAweEJFLCAweDZFLCAweDE5LCAweEI1LCAweEFDLCAweEQxLCAweEUzLCAweEM4LCAweDcwLCAweDQxLCAweDQwLCAweDI5LAorICAgIDB4Q0MsIDB4RTEsIDB4RUEsIDB4NDcsIDB4QzksIDB4QjQsIDB4QjQsIDB4ODYsIDB4NEMsIDB4Q0MsIDB4NTAsIDB4NTQsIDB4NDYsIDB4QzEsIDB4NUEsIDB4QzAsCisgICAgMHgyMywgMHhFRSwgMHhGMCwgMHg0RSwgMHg3QywgMHhFQSwgMHg1QywgMHgyMiwgMHgzRCwgMHg2RSwgMHgwQywgMHhBMiwgMHgzNCwgMHgxMSwgMHg2OSwgMHg4OSwKKyAgICAweDVBLCAweDk1LCAweEVCLCAweDJBLCAweDc1LCAweDEzLCAweDgxLCAweDhBLCAweDE0LCAweEQwLCAweDlGLCAweDc4LCAweDkwLCAweDNGLCAweEJDLCAweEU2LAorICAgIDB4NjQsIDB4ODIsIDB4N0IsIDB4RjMsIDB4NUUsIDB4NDAsIDB4MTEsIDB4MUIsIDB4RjksIDB4MjEsIDB4NkEsIDB4OEYsIDB4OEIsIDB4NjMsIDB4Q0IsIDB4RDcsCisgICAgMHgxRSwgMHgwMiwgMHgwNSwgMHhDNiwgMHg2OSwgMHhBRiwgMHgwQywgMHgzQiwgMHhBRSwgMHg3QiwgMHg1MywgMHg2RiwgMHg1QiwgMHg5OSwgMHgxRCwgMHg0NiwKKyAgICAweDgxLCAweDk5LCAweEYyLCAweEM2LCAweEVFLCAweERCLCAweDJFLCAweDIzLCAweEMzLCAweEJCLCAweDQ0LCAweEIyLCAweEQzLCAweEM1LCAweDZELCAweDk2LAorICAgIDB4QkEsIDB4N0YsIDB4NzAsIDB4NzgsIDB4QzIsIDB4MzEsIDB4RDgsIDB4RjUsIDB4NDAsIDB4RDgsIDB4QjAsIDB4MkEsIDB4NDgsIDB4MDksIDB4QjUsIDB4OTEsCisgICAgMHg3NywgMHgzNSwgMHg5QiwgMHgyRSwgMHg4NywgMHhFRiwgMHg5RSwgMHgzNywgMHhBMywgMHgyQiwgMHg2OCwgMHhDNCwgMHhBMiwgMHgwMSwgMHg0OCwgMHg1MSwKKyAgICAweDVDLCAweEVGLCAweEU3LCAweDQ3LCAweDk3LCAweDU1LCAweDg1LCAweDI0LCAweENFLCAweDhDLCAweDIwLCAweEZGLCAweDlELCAweDdFLCAweDRELCAweDA5LAorICAgIDB4QzMsIDB4REUsIDB4NTAsIDB4REEsIDB4NTIsIDB4NDEsIDB4Q0UsIDB4NzUsIDB4NTcsIDB4MkMsIDB4REMsIDB4NDUsIDB4MjEsIDB4MzMsIDB4RkIsIDB4OEMsCisgICAgMHg3MiwgMHhBNCwgMHgwMywgMHhGMSwgMHhFQiwgMHg4NiwgMHgwRCwgMHg2MSwgMHhBNywgMHg5NSwgMHhBNCwgMHhFNywgMHhBRCwgMHg1QSwgMHg4OSwgMHhDQiwKKyAgICAweDk5LCAweDAyLCAweEExLCAweEU5LCAweDE2LCAweDY0LCAweDg0LCAweDE4LCAweEY2LCAweDBGLCAweDBFLCAweDI1LCAweDQ1LCAweDIyLCAweDVDLCAweDU2LAorICAgIDB4NTksIDB4NkQsIDB4NjEsIDB4QUQsIDB4QzAsIDB4MDUsIDB4OUEsIDB4NDAsIDB4RDMsIDB4Q0UsIDB4RTcsIDB4QTMsIDB4OTIsIDB4MzgsIDB4M0EsIDB4RUYsCisgICAgMHhBOSwgMHhFMCwgMHgwOCwgMHgzNSwgMHg2RCwgMHg1QiwgMHgzOCwgMHg0MCwgMHgxNSwgMHg2RCwgMHhFMCwgMHg0QSwgMHg0MywgMHg0QiwgMHg2MywgMHhEQSwKKyAgICAweDZBLCAweDA3LCAweDdFLCAweEIxLCAweENELCAweDEyLCAweERDLCAweDA1LCAweEEyLCAweDIzLCAweDU3LCAweDI4LCAweDdBLCAweDBELCAweEI0LCAweDg5LAorICAgIDB4QkQsIDB4QTMsIDB4REIsIDB4RjQsIDB4NzAsIDB4OEIsIDB4MTIsIDB4RkMsIDB4RDAsIDB4NzUsIDB4NDAsIDB4N0QsIDB4OTIsIDB4OEMsIDB4NUMsIDB4RDcsCisgICAgMHhBNywgMHhFNCwgMHg2RCwgMHg3QiwgMHg5MiwgMHg4OSwgMHgwQywgMHhGNCwgMHhGQSwgMHhFNSwgMHg0OSwgMHgxNSwgMHg4MCwgMHg2OCwgMHg4OCwgMHgyNSwKKyAgICAweEM1LCAweDkzLCAweEFGLCAweDc4LCAweDhFLCAweDkyLCAweDMxLCAweEU4LCAweEJBLCAweDlCLCAweEVDLCAweDkzLCAweDJFLCAweDA2LCAweEJDLCAweDg3LAorICAgIDB4MzAsIDB4NkUsIDB4NkYsIDB4NDIsIDB4MzEsIDB4QzYsIDB4Q0QsIDB4RUEsIDB4RTIsIDB4NDMsIDB4REYsIDB4QTYsIDB4MkMsIDB4RkUsIDB4MDUsIDB4NEUsCisgICAgMHg2MywgMHhENiwgMHg2MywgMHhEOCwgMHg0NiwgMHg1NiwgMHhEOCwgMHhCMiwgMHg2RSwgMHg0RiwgMHhEQywgMHhGNSwgMHgyMywgMHhERSwgMHg0OSwgMHhBRCwKKyAgICAweEU4LCAweDJELCAweDAwLCAweEVBLCAweEFELCAweEU2LCAweEU0LCAweDRBLCAweDQ4LCAweDc4LCAweDIwLCAweENDLCAweEMwLCAweDQ3LCAweDIyLCAweEI0LAorICAgIDB4QjMsIDB4QjgsIDB4QUYsIDB4NzEsIDB4MUQsIDB4ODksIDB4NjgsIDB4RDYsIDB4MTgsIDB4NzAsIDB4MzQsIDB4QUQsIDB4RkYsIDB4OTksIDB4QjMsIDB4NDEsCisgICAgMHhENCwgMHg2QiwgMHg5MywgMHhCNSwgMHg0NywgMHg1NCwgMHhCMywgMHg3RCwgMHhGNSwgMHg1RiwgMHhBMywgMHg2RSwgMHg1NCwgMHgxQSwgMHg1OSwgMHgxMSwKKyAgICAweDUzLCAweDgzLCAweEFDLCAweDIzLCAweEMyLCAweDFGLCAweDM5LCAweDY0LCAweDExLCAweDY3LCAweDExLCAweEJGLCAweDUwLCAweERCLCAweDVELCAweDFELAorICAgIDB4NzQsIDB4NDgsIDB4REMsIDB4RjMsIDB4QkUsIDB4NTUsIDB4QUEsIDB4NTMsIDB4REIsIDB4QzgsIDB4NUMsIDB4NzksIDB4RUEsIDB4QjMsIDB4MjgsIDB4N0EsCisgICAgMHhCNiwgMHhEQiwgMHg3MSwgMHg3RiwgMHhENywgMHhDRiwgMHgzOSwgMHg3NywgMHhGRCwgMHhDRSwgMHg4QiwgMHg5RiwgMHgxQSwgMHgyNywgMHgxNCwgMHgzQywKKyAgICAweDc4LCAweDU4LCAweDE4LCAweEU1LCAweDkzLCAweERELCAweDgxLCAweDI0LCAweEY4LCAweEZFLCAweDk3LCAweDNDLCAweEE4LCAweDhGLCAweEZFLCAweDZDLAorICAgIDB4QTEsIDB4REIsIDB4RTIsIDB4Q0YsIDB4NTksIDB4OUIsIDB4MjgsIDB4QzIsIDB4QUIsIDB4NTksIDB4MTMsIDB4OTgsIDB4REQsIDB4MkYsIDB4MDMsIDB4RDAsCisgICAgMHgwNSwgMHg5MywgMHg3MiwgMHg5NywgMHgwNywgMHhBMCwgMHhCQywgMHhDMywgMHg4QiwgMHg0NywgMHhERiwgMHg1NSwgMHgxQywgMHgwRSwgMHg3MCwgMHg2RCwKKyAgICAweEVGLCAweDQ4LCAweDBFLCAweDMzLCAweDBELCAweDVGLCAweDA1LCAweEY1LCAweDk4LCAweEFDLCAweEUzLCAweEVFLCAweDhGLCAweDlELCAweEJELCAweDg0LAorICAgIDB4QjcsIDB4OUMsIDB4OEMsIDB4MDYsIDB4NjAsIDB4ODYsIDB4QjEsIDB4REUsIDB4ODAsIDB4QjMsIDB4QUMsIDB4RDcsIDB4RTgsIDB4MzUsIDB4REMsIDB4NTEsCisgICAgMHg1NywgMHg4RiwgMHhFOCwgMHg3QSwgMHhDOCwgMHhDMiwgMHg0NiwgMHgzQSwgMHgyMiwgMHg0RCwgMHgxNSwgMHg2QiwgMHg5RSwgMHgwQSwgMHhCMywgMHhGRiwKKyAgICAweDExLCAweEQ5LCAweDJELCAweEUwLCAweDVBLCAweDMyLCAweEJCLCAweDBELCAweDcyLCAweDBGLCAweDhCLCAweEIyLCAweEQ5LCAweDg2LCAweDJELCAweDVGLAorICAgIDB4NTcsIDB4OTIsIDB4QkYsIDB4QUYsIDB4MDAsIDB4NUMsIDB4RTIsIDB4NTQsIDB4OTEsIDB4NTEsIDB4MjIsIDB4QTksIDB4M0EsIDB4NDgsIDB4OUYsIDB4OEUsCisgICAgMHhGMCwgMHhBOCwgMHgwNCwgMHgxRiwgMHhEMywgMHg1OCwgMHgwMCwgMHhCMywgMHhEQywgMHg3QiwgMHg5OSwgMHg3NCwgMHgxOCwgMHgxMiwgMHg0NCwgMHgzNSwKKyAgICAweDY1LCAweDFBLCAweDFFLCAweDk1LCAweENDLCAweDczLCAweDUzLCAweEJCLCAweEZDLCAweDkwLCAweDA3LCAweDY4LCAweDJCLCAweDQ2LCAweDY5LCAweEYyLAorICAgIDB4NjgsIDB4NkUsIDB4NjIsIDB4MzEsIDB4NUIsIDB4MTEsIDB4MTAsIDB4OUMsIDB4MTgsIDB4NzAsIDB4MjksIDB4MEQsIDB4MUEsIDB4ODgsIDB4RDgsIDB4QTUsCisgICAgMHhDNiwgMHgyQywgMHhBQSwgMHhCNywgMHg4MCwgMHhDNiwgMHgzNiwgMHhCMCwgMHg0RSwgMHgzQywgMHg2OCwgMHg3NCwgMHhCOCwgMHhGRSwgMHhGNiwgMHg4MiwKKyAgICAweDVELCAweDc0LCAweDcxLCAweEJFLCAweEQxLCAweDNDLCAweEUwLCAweDJELCAweDIwLCAweDNBLCAweDM2LCAweEE5LCAweDg3LCAweDc2LCAweEFBLCAweDE2LAorICAgIDB4QjcsIDB4NkYsIDB4QjgsIDB4NjYsIDB4MDUsIDB4RUIsIDB4NjMsIDB4MTUsIDB4QjYsIDB4REUsIDB4MDEsIDB4NDksIDB4RjUsIDB4MDEsIDB4MzcsIDB4RjAsCisgICAgMHg5OCwgMHgxMSwgMHhDOSwgMHg0MywgMHg1RCwgMHhDQiwgMHgwNCwgMHg0OCwgMHg3NSwgMHhENCwgMHg3MywgMHg5NywgMHhFNiwgMHhENSwgMHhFRiwgMHg5NywKKyAgICAweDhDLCAweEY3LCAweDM3LCAweEM4LCAweERBLCAweEFCLCAweDUzLCAweDEyLCAweDQ0LCAweEY1LCAweDcyLCAweEU3LCAweDU4LCAweEJELCAweDJBLCAweDY1LAorICAgIDB4RTUsIDB4NzksIDB4OEQsIDB4QTUsIDB4NTAsIDB4QkYsIDB4M0UsIDB4M0IsIDB4MzYsIDB4OUQsIDB4NDgsIDB4NzMsIDB4QTAsIDB4MTcsIDB4NEMsIDB4OEUsCisgICAgMHg4MiwgMHg5OCwgMHhEMCwgMHhGRCwgMHhCMSwgMHhEQiwgMHgxNiwgMHhCRSwgMHgwNSwgMHg3MCwgMHhCRSwgMHhFRiwgMHg0MywgMHg4QSwgMHhFOCwgMHhCOCwKKyAgICAweDc5LCAweDgzLCAweEJDLCAweDNCLCAweDIzLCAweDk0LCAweEFELCAweEE4LCAweEQ5LCAweDk4LCAweDc0LCAweDRDLCAweDkxLCAweDQ4LCAweDIyLCAweDk2LAorICAgIDB4N0QsIDB4MEUsIDB4NzgsIDB4RjksIDB4MzUsIDB4QzAsIDB4QUUsIDB4RkQsIDB4MEEsIDB4QjAsIDB4RjAsIDB4NkMsIDB4QTcsIDB4NTEsIDB4NEQsIDB4NDQsCisgICAgMHhEOSwgMHhCRCwgMHg4NCwgMHg3NiwgMHg0OCwgMHg0QSwgMHg2NiwgMHg0MSwgMHg1NSwgMHhBNiwgMHhCRSwgMHhBNCwgMHhBMiwgMHgzRSwgMHhERSwgMHhBMCwKKyAgICAweEU0LCAweDZGLCAweEI5LCAweEIyLCAweEVELCAweDc0LCAweEUyLCAweDM2LCAweDJGLCAweDU0LCAweDY0LCAweDlDLCAweDQxLCAweEU2LCAweEUzLCAweEM4LAorICAgIDB4MzUsIDB4MjMsIDB4RDUsIDB4NjEsIDB4MEUsIDB4MDMsIDB4Q0EsIDB4RkEsIDB4MTcsIDB4RUQsIDB4MDUsIDB4NjksIDB4OUMsIDB4N0EsIDB4NTgsIDB4NEQsCisgICAgMHgxNiwgMHgzNCwgMHgxNSwgMHhBMywgMHg1QiwgMHgwQywgMHg4NywgMHgwRiwgMHgwMiwgMHhEMiwgMHhCMywgMHhBRiwgMHgwMCwgMHhDMiwgMHgxRCwgMHgzOSwKKyAgICAweDg3LCAweDIxLCAweEYzLCAweDlGLCAweDk2LCAweEQyLCAweEExLCAweDhDLCAweEJFLCAweEZCLCAweEY0LCAweEFCLCAweDBCLCAweDY1LCAweDNBLCAweEY5LAorICAgIDB4QjcsIDB4MDAsIDB4OTEsIDB4NTMsIDB4RTYsIDB4RjgsIDB4OUUsIDB4RDMsIDB4NjUsIDB4RkUsIDB4RUIsIDB4MDAsIDB4NkQsIDB4MTUsIDB4MDAsIDB4N0EsCisgICAgMHg0RCwgMHhFOCwgMHhEMiwgMHhGOSwgMHhCNywgMHhCQywgMHg0MSwgMHhCQywgMHg5MCwgMHgyOSwgMHhFRiwgMHg3MiwgMHhBRSwgMHgzOCwgMHhFOCwgMHgyNSwKKyAgICAweDc3LCAweEVDLCAweDU1LCAweEZGLCAweDFELCAweDcxLCAweDc5LCAweDhFLCAweDdGLCAweDMyLCAweDg3LCAweDM5LCAweDQ2LCAweDU4LCAweDA2LCAweDE5LAorICAgIDB4QkIsIDB4QzAsIDB4NzcsIDB4NUEsIDB4M0UsIDB4QjUsIDB4RTIsIDB4MzUsIDB4N0MsIDB4MjQsIDB4QjUsIDB4Q0MsIDB4NjgsIDB4QTMsIDB4MkMsIDB4QzIsCisgICAgMHhGNCwgMHg0OCwgMHgzOSwgMHgyMSwgMHgyNSwgMHg0NiwgMHhFMSwgMHgyQiwgMHgwOCwgMHg4RCwgMHg1RSwgMHhEQywgMHg4NSwgMHg0RSwgMHgwMywgMHg1OSwKKyAgICAweDIxLCAweDQyLCAweDJDLCAweDBGLCAweDY1LCAweEM4LCAweEY5LCAweDI3LCAweDdDLCAweDI4LCAweDBBLCAweEFGLCAweDJFLCAweDg4LCAweDg4LCAweDBFLAorICAgIDB4QjcsIDB4QjcsIDB4QjcsIDB4MDEsIDB4Q0EsIDB4RDgsIDB4MTksIDB4QzgsIDB4NDMsIDB4RTUsIDB4Q0QsIDB4QkIsIDB4QkUsIDB4QzIsIDB4NzQsIDB4REUsCisgICAgMHgxRiwgMHhCQSwgMHgwQiwgMHg0QywgMHg0MCwgMHgzMCwgMHhFQSwgMHhDNCwgMHg3NiwgMHhFNywgMHgzMCwgMHhFOSwgMHhEQSwgMHgxOSwgMHgzMCwgMHgzMywKKyAgICAweDg2LCAweEQ4LCAweEM3LCAweDQ3LCAweEIzLCAweEJCLCAweDdBLCAweDBELCAweDVGLCAweEYxLCAweDQ0LCAweDhBLCAweEU1LCAweDJGLCAweDg2LCAweEM5LAorICAgIDB4Q0YsIDB4NUEsIDB4RjUsIDB4MTIsIDB4QTEsIDB4QzgsIDB4N0IsIDB4NUYsIDB4ODMsIDB4OTgsIDB4OTYsIDB4MkQsIDB4NkEsIDB4OTksIDB4RTgsIDB4RTUsCisgICAgMHhENywgMHg0RSwgMHg2RCwgMHgwQSwgMHg1MSwgMHhDQSwgMHg5MCwgMHg4RiwgMHgxNywgMHg0QSwgMHgwMiwgMHg5NCwgMHhBRiwgMHhCQywgMHhCOSwgMHg2NCwKKyAgICAweDJBLCAweEZELCAweDI5LCAweDg0LCAweDQwLCAweDUzLCAweDcxLCAweEQ2LCAweDg1LCAweEVGLCAweDI2LCAweEQ0LCAweDMzLCAweDZDLCAweDE4LCAweDhDLAorICAgIDB4NEYsIDB4NEEsIDB4RkIsIDB4QTksIDB4QUMsIDB4MjQsIDB4NjMsIDB4RUQsIDB4NjEsIDB4MjAsIDB4OUMsIDB4M0EsIDB4RjAsIDB4Q0YsIDB4NjAsIDB4REIsCisgICAgMHhBMiwgMHhCOCwgMHhCNywgMHg2MSwgMHhCNywgMHgwRSwgMHg2OCwgMHhDMywgMHhDQiwgMHgwOCwgMHg2OSwgMHhBMiwgMHgwOCwgMHg3QiwgMHhCNCwgMHhDQiwKKyAgICAweEJBLCAweDRBLCAweDg5LCAweDI2LCAweDM4LCAweEVELCAweDhELCAweDdCLCAweDU2LCAweDI3LCAweEUxLCAweDAwLCAweEI5LCAweDE4LCAweDdGLCAweERDLAorICAgIDB4NDIsIDB4N0MsIDB4MEQsIDB4RDYsIDB4NTgsIDB4OTMsIDB4QzksIDB4NkYsIDB4NTYsIDB4MjIsIDB4OUEsIDB4OEMsIDB4ODAsIDB4MTksIDB4QkEsIDB4MEYsCisgICAgMHhFMCwgMHg1MiwgMHgyMiwgMHgxRCwgMHg5OCwgMHhBNywgMHg5OCwgMHg4NSwgMHhDRSwgMHgyMSwgMHhFMiwgMHg2RSwgMHg3MCwgMHg5RSwgMHg0RiwgMHhFNSwKKyAgICAweDA0LCAweDM1LCAweEVBLCAweDY2LCAweDg4LCAweDIyLCAweDYzLCAweEI5LCAweDE3LCAweDFBLCAweEZBLCAweDU2LCAweDM1LCAweDA2LCAweEI0LCAweDI3LAorICAgIDB4MkMsIDB4OEYsIDB4RTMsIDB4MTMsIDB4NDcsIDB4Q0MsIDB4QTgsIDB4QzYsIDB4NDYsIDB4NTQsIDB4NTcsIDB4RDgsIDB4NzAsIDB4RkYsIDB4ODYsIDB4NEMsCisgICAgMHhCMywgMHhGMiwgMHgwRSwgMHgyOSwgMHg1RSwgMHhEOCwgMHg4OCwgMHg0QywgMHg1QSwgMHgxNiwgMHgxQSwgMHg3OSwgMHg0MSwgMHg4NywgMHg3MCwgMHg1MiwKKyAgICAweDFFLCAweEJBLCAweDAyLCAweENDLCAweEEzLCAweEM5LCAweEVGLCAweDUzLCAweDEyLCAweDU2LCAweDZELCAweDU1LCAweEJGLCAweDhCLCAweEFGLCAweEZELAorICAgIDB4MTIsIDB4RTAsIDB4MkQsIDB4MjcsIDB4ODMsIDB4OUYsIDB4OEUsIDB4MkUsIDB4MUIsIDB4N0EsIDB4MjIsIDB4NkQsIDB4RjksIDB4NTksIDB4RjksIDB4NjMsCisgICAgMHg3RiwgMHhCMCwgMHhCRiwgMHgwNSwgMHg5NywgMHg3OCwgMHgyRSwgMHg2NywgMHhDMywgMHhBOCwgMHg0QiwgMHgxNiwgMHhDQiwgMHg3MiwgMHg0NywgMHhGRCwKKyAgICAweDBDLCAweDBGLCAweEFFLCAweEM5LCAweEI0LCAweEI2LCAweEU4LCAweDk5LCAweEFBLCAweEEzLCAweDYwLCAweEY0LCAweEQyLCAweDA3LCAweEY1LCAweDgyLAorICAgIDB4REEsIDB4N0IsIDB4RTYsIDB4NkUsIDB4Q0MsIDB4ODUsIDB4RDMsIDB4MkUsIDB4QzEsIDB4MTMsIDB4M0QsIDB4MzIsIDB4QkUsIDB4QkIsIDB4MjUsIDB4QTUsCisgICAgMHgyRSwgMHgwMCwgMHhBQSwgMHgyOCwgMHg2MywgMHgyQiwgMHg2MSwgMHgzRSwgMHg3RiwgMHgzNCwgMHhBMCwgMHg4MywgMHhDRSwgMHhFQywgMHg0NCwgMHg3MiwKKyAgICAweDI5LCAweDFGLCAweDgxLCAweDYyLCAweDhBLCAweEVELCAweDlELCAweDVGLCAweEZELCAweEZFLCAweDE0LCAweDUyLCAweDlDLCAweEZDLCAweEI0LCAweDA0LAorICAgIDB4NzAsIDB4MEEsIDB4MjcsIDB4N0UsIDB4OTQsIDB4NjksIDB4MTMsIDB4ODAsIDB4OTcsIDB4Q0MsIDB4RDIsIDB4NjksIDB4REQsIDB4RDEsIDB4MzgsIDB4RkEsCisgICAgMHg1MSwgMHg4OCwgMHhDMCwgMHg5RCwgMHhCNiwgMHgxNCwgMHhFMywgMHgyMCwgMHhFQiwgMHg2OSwgMHg2MiwgMHhGNCwgMHhCNywgMHgwNywgMHhGMiwgMHg2RiwKKyAgICAweEZFLCAweERBLCAweEUzLCAweEY5LCAweDdBLCAweDY0LCAweDcwLCAweEFELCAweDExLCAweDEwLCAweDU0LCAweDZCLCAweDlGLCAweDhCLCAweDQ4LCAweDlDLAorICAgIDB4MTksIDB4MjcsIDB4ODMsIDB4MjAsIDB4MjksIDB4M0UsIDB4N0MsIDB4NTcsIDB4MEUsIDB4NkUsIDB4NEYsIDB4MEIsIDB4QjcsIDB4QjIsIDB4NkQsIDB4NjEsCisgICAgMHg1MiwgMHhFMCwgMHhFNSwgMHg2NywgMHhEQiwgMHhGOSwgMHg5NiwgMHhCQSwgMHhGMiwgMHhBNiwgMHg0RCwgMHgyQSwgMHg5OCwgMHhERiwgMHgyRiwgMHgwMywKKyAgICAweEQxLCAweDc4LCAweEI0LCAweEY5LCAweDA4LCAweDJBLCAweDdDLCAweEJBLCAweEQ2LCAweDUzLCAweDU3LCAweDZBLCAweDJDLCAweDhELCAweEY0LCAweERDLAorICAgIDB4QTksIDB4MDUsIDB4MDAsIDB4QTYsIDB4OEMsIDB4RkIsIDB4RkYsIDB4NDUsIDB4MTMsIDB4RjQsIDB4RTgsIDB4QkQsIDB4QjUsIDB4RjQsIDB4MUQsIDB4RjcsCisgICAgMHg1RiwgMHgzMiwgMHhDOCwgMHgzMCwgMHgxRiwgMHhENSwgMHgwQSwgMHhDNywgMHhBNCwgMHgyOCwgMHgwNiwgMHhGRiwgMHg0NCwgMHgxOCwgMHg0MywgMHgxQSwKKyAgICAweDhDLCAweDYzLCAweDgxLCAweDJCLCAweDE2LCAweDRDLCAweEU0LCAweEIwLCAweEY0LCAweDlBLCAweDQ5LCAweDA5LCAweDdCLCAweDhCLCAweDZGLCAweDkzLAorICAgIDB4MkUsIDB4RUMsIDB4OEMsIDB4NEYsIDB4NzEsIDB4MDEsIDB4RkYsIDB4NTQsIDB4OTAsIDB4MUIsIDB4NkMsIDB4RjEsIDB4OUIsIDB4QjEsIDB4MDYsIDB4REEsCisgICAgMHhGQywgMHhENCwgMHhENiwgMHhGQiwgMHgxMCwgMHhEQSwgMHg0NiwgMHg4QywgMHgwRSwgMHhBRiwgMHhGOCwgMHgxOSwgMHhDMCwgMHgzNSwgMHhBNSwgMHhEMiwKKyAgICAweDc0LCAweEZELCAweDI1LCAweEVGLCAweERELCAweDJFLCAweDlDLCAweDBCLCAweEUxLCAweDE3LCAweEQ1LCAweDBDLCAweEZCLCAweEMxLCAweEE4LCAweEU2LAorICAgIDB4NEEsIDB4NDQsIDB4MEEsIDB4RjIsIDB4NDgsIDB4QTIsIDB4MDcsIDB4NDIsIDB4M0MsIDB4MzYsIDB4QzUsIDB4RDcsIDB4NDUsIDB4OUQsIDB4REIsIDB4QTYsCisgICAgMHg0QiwgMHgzMCwgMHhDMSwgMHgzQSwgMHhCMCwgMHgzMSwgMHg4OCwgMHgwRSwgMHhCMSwgMHgzOCwgMHg0RSwgMHgzNCwgMHhGOSwgMHgzMywgMHhFMiwgMHg4QSwKKyAgICAweDBCLCAweEY3LCAweDdDLCAweEYxLCAweEUzLCAweDA3LCAweDVBLCAweEEwLCAweDYzLCAweDEyLCAweDIyLCAweEZELCAweDQ0LCAweDhBLCAweEU3LCAweDM1LAorICAgIDB4RjcsIDB4MjQsIDB4QUQsIDB4NkYsIDB4QkEsIDB4QzEsIDB4QTMsIDB4MkYsIDB4NkMsIDB4NTgsIDB4RjMsIDB4RDMsIDB4MTMsIDB4NEQsIDB4MjEsIDB4MEEsCisgICAgMHhBMSwgMHgxQywgMHg1NCwgMHhBQSwgMHg1RSwgMHgzNSwgMHhFRiwgMHgwMCwgMHg0OCwgMHhFOCwgMHhERSwgMHg1NiwgMHhBNCwgMHhGRiwgMHhCQiwgMHhEOSwKKyAgICAweEY5LCAweEE3LCAweDBELCAweDgzLCAweDA4LCAweDhCLCAweDQxLCAweERDLCAweDYzLCAweEE0LCAweDQwLCAweDYyLCAweDQ2LCAweEFELCAweDU3LCAweDQ5LAorICAgIDB4NDMsIDB4NjcsIDB4NkQsIDB4NDMsIDB4MjMsIDB4MTksIDB4N0UsIDB4MTcsIDB4RjYsIDB4RUYsIDB4REUsIDB4MDcsIDB4RjIsIDB4NUQsIDB4MTEsIDB4NzgsCisgICAgMHg0MiwgMHg4RCwgMHgxMSwgMHhFRiwgMHg5RiwgMHg0QSwgMHhBNiwgMHhDRSwgMHg5NSwgMHg5MiwgMHgzNCwgMHgyMCwgMHgwMiwgMHg5NSwgMHhCOSwgMHhBOCwKKyAgICAweDE2LCAweEY1LCAweDVFLCAweDJGLCAweDdDLCAweEY4LCAweEUyLCAweDA3LCAweEI4LCAweEY0LCAweDA3LCAweDMwLCAweDFDLCAweDc3LCAweEQzLCAweDQ2LAorICAgIDB4MTEsIDB4MDcsIDB4OEQsIDB4NkQsIDB4NjksIDB4ODcsIDB4QjQsIDB4OTEsIDB4Q0IsIDB4NzIsIDB4OEUsIDB4MkQsIDB4QUQsIDB4MEUsIDB4Q0QsIDB4OTcsCisgICAgMHg4QywgMHhBNCwgMHgwRCwgMHgwNSwgMHg5MywgMHhBRiwgMHg0MiwgMHhERSwgMHg3NCwgMHhGOCwgMHg5NywgMHgzQiwgMHg3RiwgMHhCRiwgMHg0RCwgMHg2QSwKKyAgICAweDEyLCAweEU0LCAweEUyLCAweEYyLCAweEFGLCAweDZELCAweDFGLCAweDMxLCAweENBLCAweDgxLCAweDMzLCAweDJGLCAweDQyLCAweDQyLCAweENFLCAweDQ4LAorICAgIDB4MzEsIDB4RDksIDB4MDksIDB4MkEsIDB4NzAsIDB4REYsIDB4NzUsIDB4RTMsIDB4OUMsIDB4NDIsIDB4RUYsIDB4OEEsIDB4QjEsIDB4OTYsIDB4NkIsIDB4QTEsCisgICAgMHhCQywgMHgyQywgMHg4NCwgMHg3NywgMHhFOSwgMHgzRCwgMHgxMywgMHgzQywgMHgwNCwgMHg5RiwgMHhDOCwgMHg3MCwgMHhDMywgMHgyNiwgMHhGMCwgMHhFMywKKyAgICAweEM1LCAweDA0LCAweEQzLCAweEVBLCAweDAyLCAweDEwLCAweDdFLCAweEQyLCAweEI1LCAweDMyLCAweDg3LCAweDhELCAweDAyLCAweEE4LCAweDFCLCAweDE5LAorICAgIDB4N0QsIDB4NkEsIDB4NTQsIDB4NDUsIDB4NjIsIDB4MDYsIDB4RDMsIDB4MjgsIDB4MzIsIDB4QUMsIDB4MkEsIDB4MUUsIDB4QTEsIDB4QzMsIDB4NTYsIDB4OTYsCisgICAgMHhDQiwgMHhBNCwgMHgzQSwgMHg2RiwgMHhDQiwgMHgyQiwgMHhCQywgMHhDRiwgMHg3RiwgMHg3NSwgMHhFOSwgMHgwNSwgMHgxMiwgMHgyNCwgMHhDMCwgMHhENCwKKyAgICAweDk3LCAweEFCLCAweENGLCAweDRELCAweDM4LCAweDIzLCAweDg3LCAweEU2LCAweDNELCAweDIyLCAweEU2LCAweDNELCAweEUxLCAweEU3LCAweDQ1LCAweEY2LAorICAgIDB4NjIsIDB4RjMsIDB4QUIsIDB4OUIsIDB4MEMsIDB4MTEsIDB4MjMsIDB4NTcsIDB4NTYsIDB4NTcsIDB4QjcsIDB4RDgsIDB4NTgsIDB4MzcsIDB4NUEsIDB4OEMsCisgICAgMHgxRiwgMHgzMSwgMHhBOCwgMHgyOSwgMHgxQSwgMHgwNCwgMHhFMiwgMHhBNywgMHg0QSwgMHhDNywgMHgyNywgMHhDQywgMHgzOSwgMHgwRSwgMHhFRiwgMHg3RiwKKyAgICAweEQ0LCAweEUxLCAweDQ2LCAweENELCAweENDLCAweDk2LCAweDIyLCAweEJDLCAweDBFLCAweERELCAweERGLCAweENBLCAweERCLCAweDc3LCAweDY1LCAweDQ5LAorICAgIDB4N0MsIDB4MkYsIDB4MkMsIDB4QzAsIDB4OTQsIDB4MDUsIDB4NzEsIDB4QzIsIDB4MjMsIDB4NUUsIDB4NzQsIDB4QzMsIDB4NEUsIDB4NTksIDB4QTksIDB4RTIsCisgICAgMHhEMSwgMHgwRiwgMHgyQiwgMHg2OCwgMHg1RSwgMHg2QywgMHg2QiwgMHgzQywgMHhENCwgMHg3QywgMHg0MiwgMHhFNCwgMHgyNiwgMHg3OSwgMHhBRSwgMHhGQiwKKyAgICAweDE0LCAweDY1LCAweDU2LCAweDc1LCAweDZGLCAweEE2LCAweDcwLCAweEI5LCAweDJFLCAweDI4LCAweDk0LCAweEYxLCAweEQyLCAweEUzLCAweERBLCAweDFDLAorICAgIDB4NEIsIDB4RjIsIDB4NzEsIDB4OEEsIDB4RUQsIDB4RTYsIDB4MjAsIDB4MUMsIDB4RjQsIDB4RUUsIDB4NjMsIDB4QkIsIDB4NzQsIDB4NzMsIDB4NjEsIDB4RDksCisgICAgMHg1NSwgMHg4NCwgMHhFRCwgMHhEOSwgMHg1OSwgMHgxQiwgMHg0NywgMHg4QiwgMHhFNSwgMHhFRiwgMHhCRiwgMHhBNSwgMHg3OCwgMHhCNCwgMHg5OSwgMHg3RSwKKyAgICAweEYzLCAweDMxLCAweDU5LCAweDJBLCAweEM4LCAweDIzLCAweEI5LCAweDBBLCAweDgxLCAweEUyLCAweDRDLCAweDhBLCAweDk3LCAweEJDLCAweDc0LCAweDA4LAorICAgIDB4RTQsIDB4MzUsIDB4MkQsIDB4RDEsIDB4M0MsIDB4QkEsIDB4RjIsIDB4MjAsIDB4NTEsIDB4NzYsIDB4RjgsIDB4RkQsIDB4MjAsIDB4NUQsIDB4RDIsIDB4NjMsCisgICAgMHg3RCwgMHhBMywgMHhFRiwgMHg3RCwgMHg1NiwgMHg0NiwgMHg0NCwgMHg4NiwgMHgyOSwgMHg3MCwgMHhDMywgMHg1RiwgMHgxQiwgMHhDNiwgMHgzRCwgMHg0MiwKKyAgICAweEQzLCAweDY5LCAweDc4LCAweDVDLCAweEQzLCAweEQ0LCAweDc5LCAweDNCLCAweDBCLCAweDgxLCAweDQ4LCAweDAwLCAweEFBLCAweEVBLCAweDRDLCAweDk1LAorICAgIDB4NTYsIDB4MjAsIDB4RTgsIDB4QjEsIDB4QjYsIDB4RTksIDB4QTcsIDB4RDYsIDB4MEYsIDB4NEYsIDB4NUIsIDB4QjEsIDB4QzMsIDB4Q0QsIDB4RjYsIDB4NDMsCisgICAgMHg4MywgMHg2QywgMHg0QywgMHhBMywgMHgxNywgMHg1OCwgMHhBQiwgMHgwNiwgMHg2OCwgMHhCQiwgMHgxNCwgMHg1MCwgMHgwNywgMHhCQywgMHg3QiwgMHg3NSwKKyAgICAweDlCLCAweDVGLCAweDk2LCAweEM2LCAweDc5LCAweEZGLCAweDNDLCAweDZBLCAweDA1LCAweDVCLCAweEE0LCAweDYzLCAweEEzLCAweDkzLCAweDZGLCAweDZGLAorICAgIDB4ODcsIDB4RTgsIDB4QUYsIDB4NDQsIDB4NDgsIDB4MDIsIDB4NDksIDB4NEMsIDB4RUQsIDB4OEMsIDB4M0EsIDB4NTEsIDB4NTAsIDB4NDMsIDB4NkYsIDB4RTYsCisgICAgMHgyQSwgMHg1RSwgMHg0NywgMHgyNSwgMHgwNSwgMHhGQiwgMHg2OCwgMHgxNywgMHgyRCwgMHg5MCwgMHhFQiwgMHhFMiwgMHg3NiwgMHhBQiwgMHg2QiwgMHg5OSwKKyAgICAweEIzLCAweDg0LCAweDU5LCAweEQwLCAweEZELCAweDZBLCAweDYwLCAweDZFLCAweDRGLCAweDQ2LCAweEEwLCAweDM3LCAweEU3LCAweDA2LCAweEI2LCAweDE1LAorICAgIDB4QzksIDB4MDAsIDB4RUMsIDB4MDAsIDB4MzgsIDB4MEEsIDB4OEYsIDB4ODEsIDB4REIsIDB4QUIsIDB4QkEsIDB4RTcsIDB4RDMsIDB4ODgsIDB4RjAsIDB4MUIsCisgICAgMHg1RCwgMHhFOSwgMHg0MSwgMHhBQywgMHhBMCwgMHhCQywgMHg0NywgMHg5MywgMHg3MywgMHgwNCwgMHg3MiwgMHg4OCwgMHg2MywgMHg5MSwgMHhEOCwgMHg2MCwKKyAgICAweDgyLCAweEFBLCAweDJELCAweDQ5LCAweEE0LCAweEZGLCAweEZGLCAweDBDLCAweENGLCAweDE2LCAweDczLCAweDc0LCAweEZFLCAweDVGLCAweDcyLCAweDkwLAorICAgIDB4OEMsIDB4NUUsIDB4ODIsIDB4MkQsIDB4NkUsIDB4REEsIDB4OEIsIDB4MzAsIDB4QTYsIDB4MzksIDB4RkIsIDB4MkEsIDB4OTIsIDB4QzUsIDB4MEQsIDB4NDksCisgICAgMHgzQSwgMHg1OSwgMHgzRSwgMHgwRCwgMHhBNywgMHhCQiwgMHgwQiwgMHgyOCwgMHg0NiwgMHg5OSwgMHg2RSwgMHg3RSwgMHg2QywgMHhENywgMHg2QiwgMHg4OSwKKyAgICAweDhELCAweDFBLCAweDg1LCAweDFELCAweDdFLCAweDFBLCAweEU4LCAweEM4LCAweEVGLCAweDhGLCAweERELCAweDAwLCAweEY4LCAweDRGLCAweEFFLCAweDEyLAorICAgIDB4RjYsIDB4ODgsIDB4OTEsIDB4MzYsIDB4RjksIDB4REIsIDB4MDksIDB4REQsIDB4RjcsIDB4RDUsIDB4QjMsIDB4QzgsIDB4OTAsIDB4MEMsIDB4QzQsIDB4QjAsCisgICAgMHg0NSwgMHhEMiwgMHg5NiwgMHhCRiwgMHg2MSwgMHhFMywgMHhEOCwgMHhEMSwgMHg0RiwgMHhEQiwgMHgxQiwgMHhGNiwgMHhBOCwgMHgwRCwgMHg0MCwgMHhGMCwKKyAgICAweEVGLCAweDIzLCAweDI2LCAweDJGLCAweDI1LCAweEFCLCAweDBFLCAweDE1LCAweEI2LCAweDkwLCAweDFGLCAweEEzLCAweDZCLCAweEVFLCAweDkzLCAweEQ0LAorICAgIDB4NTcsIDB4QTcsIDB4NzgsIDB4MzksIDB4QjQsIDB4NzksIDB4MkIsIDB4OUUsIDB4RTcsIDB4RkEsIDB4MkUsIDB4MUQsIDB4QUEsIDB4NDEsIDB4RUIsIDB4ODcsCisgICAgMHg5OSwgMHg0RSwgMHg3OCwgMHg0MiwgMHg0NywgMHg5RCwgMHg0MywgMHg4MCwgMHg5RiwgMHg1NiwgMHgxMywgMHg1RSwgMHgzRCwgMHg5NSwgMHhGOCwgMHhCNCwKKyAgICAweDc2LCAweDlGLCAweDcyLCAweDgzLCAweDgxLCAweEIxLCAweDc0LCAweERFLCAweDQzLCAweEJFLCAweDkxLCAweDU3LCAweDcxLCAweDkwLCAweDNDLCAweEEwLAorICAgIDB4MUYsIDB4QTAsIDB4ODcsIDB4MDcsIDB4NDcsIDB4REYsIDB4NUMsIDB4RkQsIDB4MjEsIDB4RDYsIDB4NjQsIDB4NEMsIDB4NzIsIDB4RkIsIDB4Q0UsIDB4MjEsCisgICAgMHhDNSwgMHg4OSwgMHgyMywgMHgwQiwgMHhBRSwgMHg3NSwgMHg3MiwgMHg3MywgMHhBNiwgMHhBNiwgMHhCMywgMHhDRSwgMHg5QywgMHhCMSwgMHhBRiwgMHhBQiwKKyAgICAweERGLCAweDA2LCAweDU1LCAweDVGLCAweDBDLCAweDFELCAweDZELCAweDEzLCAweEQxLCAweEQyLCAweEYwLCAweDU0LCAweDAwLCAweEFFLCAweEE2LCAweDUxLAorICAgIDB4RjIsIDB4OEIsIDB4NTAsIDB4RjUsIDB4NUQsIDB4NzYsIDB4QzksIDB4NEQsIDB4NTUsIDB4M0MsIDB4NkYsIDB4QzcsIDB4Q0IsIDB4RDEsIDB4NDMsIDB4RUIsCisgICAgMHg1MiwgMHhDRSwgMHg4NCwgMHgwMCwgMHg5MCwgMHhFQiwgMHhCRCwgMHg1NCwgMHhDOSwgMHgwNCwgMHgzQiwgMHg0QiwgMHhBOSwgMHg1RCwgMHg1MywgMHgwRCwKKyAgICAweEI2LCAweDEzLCAweDU1LCAweEQ0LCAweDM2LCAweEVCLCAweDcxLCAweDIzLCAweDAwLCAweDk4LCAweEIzLCAweEI5LCAweDczLCAweDhCLCAweDBCLCAweEQzLAorICAgIDB4QjksIDB4NjcsIDB4NTAsIDB4MjgsIDB4QkMsIDB4Q0MsIDB4MTYsIDB4RDUsIDB4REUsIDB4NzIsIDB4NUIsIDB4NzUsIDB4N0IsIDB4MTIsIDB4RjYsIDB4M0MsCisgICAgMHg5NCwgMHhBRSwgMHgzRSwgMHhFRiwgMHg0NCwgMHgzQiwgMHg5RSwgMHg4RiwgMHg4MCwgMHgxQywgMHgxOCwgMHg1RiwgMHg5QiwgMHg0MywgMHg0RiwgMHhGNSwKKyAgICAweEIxLCAweEQ3LCAweDhBLCAweDQyLCAweEEwLCAweDUxLCAweDc0LCAweDg2LCAweDBGLCAweDMxLCAweDE4LCAweDZDLCAweDQ3LCAweEY4LCAweEI5LCAweDk3LAorICAgIDB4MEYsIDB4NEIsIDB4NDcsIDB4MTgsIDB4RjYsIDB4NUMsIDB4NzAsIDB4NDksIDB4QkYsIDB4RjUsIDB4MDAsIDB4MDgsIDB4QzYsIDB4RDcsIDB4MDQsIDB4NzksCisgICAgMHhFMiwgMHhFNSwgMHgwNSwgMHhBQSwgMHgwMCwgMHg0QSwgMHhFMCwgMHhBOCwgMHg2MiwgMHhEQywgMHhENywgMHgxNywgMHg3QywgMHg4RCwgMHgxNywgMHgxNCwKKyAgICAweDBBLCAweDE2LCAweDNCLCAweDBCLCAweDcwLCAweDUwLCAweEYwLCAweEI4LCAweDFBLCAweEUwLCAweEI5LCAweDhDLCAweDA0LCAweEYwLCAweEVCLCAweEIxLAorICAgIDB4Q0IsIDB4MTUsIDB4M0MsIDB4RjYsIDB4Q0UsIDB4RUQsIDB4NDAsIDB4QTIsIDB4NDAsIDB4MzYsIDB4M0EsIDB4RjAsIDB4QTgsIDB4MjEsIDB4RjksIDB4MzEsCisgICAgMHg0OSwgMHg4QSwgMHhDOCwgMHgxRCwgMHg1NywgMHg2MywgMHhDMywgMHg0RSwgMHg5OCwgMHgzRSwgMHgyQSwgMHgwQywgMHg0MSwgMHhEOSwgMHgwMSwgMHhGNiwKKyAgICAweEI1LCAweEI0LCAweENELCAweDVDLCAweENFLCAweDFBLCAweDA0LCAweDgxLCAweEM0LCAweDY2LCAweDM4LCAweEFBLCAweDA2LCAweEM5LCAweERBLCAweDQyLAorICAgIDB4OEYsIDB4MjYsIDB4N0QsIDB4QjMsIDB4NTEsIDB4NDMsIDB4OTQsIDB4MUEsIDB4QzYsIDB4OEUsIDB4MkMsIDB4NzgsIDB4QzQsIDB4NEUsIDB4ODgsIDB4NDAsCisgICAgMHhGMywgMHgzOCwgMHg0NywgMHg0RSwgMHgwRiwgMHhBNCwgMHgyOSwgMHhCQywgMHhDMiwgMHgwMiwgMHgxRiwgMHg1OCwgMHg0NCwgMHhGNCwgMHgxQiwgMHg4RCwKKyAgICAweDJCLCAweDgyLCAweDE1LCAweDkyLCAweDgwLCAweEEyLCAweDY1LCAweEJELCAweDUwLCAweDkzLCAweEM1LCAweEY5LCAweEVGLCAweDE4LCAweDgzLCAweDQ1LAorICAgIDB4NTEsIDB4NEEsIDB4NUMsIDB4Q0MsIDB4OUMsIDB4NjksIDB4RjYsIDB4OTYsIDB4OUUsIDB4QzAsIDB4MTQsIDB4MkEsIDB4NDgsIDB4NzIsIDB4QkQsIDB4RUUsCisgICAgMHg5MywgMHg0QiwgMHg1MCwgMHhGRiwgMHhGNCwgMHg2MCwgMHg2MiwgMHgzMywgMHhFMiwgMHgwQiwgMHhEMywgMHg2MywgMHhGRSwgMHhFNiwgMHhFNSwgMHhFOSwKKyAgICAweEIwLCAweDFBLCAweDI1LCAweDdGLCAweDVCLCAweERDLCAweEY3LCAweEEwLCAweDlBLCAweDVCLCAweDYxLCAweDc2LCAweDYxLCAweDVELCAweDFGLCAweEUzLAorICAgIDB4MjQsIDB4MDIsIDB4MTEsIDB4MjgsIDB4OTcsIDB4MEUsIDB4Q0IsIDB4OTUsIDB4MDgsIDB4MUIsIDB4RDEsIDB4QTgsIDB4RDksIDB4RTcsIDB4OTEsIDB4QzYsCisgICAgMHg0NywgMHgzOCwgMHgxMCwgMHhFQywgMHgzMywgMHhFMCwgMHg0NSwgMHhGNCwgMHhFOCwgMHhBRiwgMHhCRCwgMHhDQiwgMHg1QywgMHgzMiwgMHgzOCwgMHgzRCwKKyAgICAweDQ5LCAweEM2LCAweDM2LCAweDYyLCAweEUzLCAweDdELCAweDk0LCAweEM0LCAweDA1LCAweEFGLCAweDQ3LCAweDBCLCAweDAxLCAweDcyLCAweEYxLCAweDc2LAorICAgIDB4MkIsIDB4N0MsIDB4Q0MsIDB4NjIsIDB4QjIsIDB4RjQsIDB4RDQsIDB4RTAsIDB4MTAsIDB4MDIsIDB4MUQsIDB4RkQsIDB4M0IsIDB4RTMsIDB4MEYsIDB4NDYsCisgICAgMHg0NSwgMHgxOCwgMHgxMSwgMHhGNSwgMHhCRiwgMHgxNSwgMHhFQiwgMHhDNywgMHhBNCwgMHgxNSwgMHg5NiwgMHg1MywgMHgwMiwgMHhDMSwgMHhDRCwgMHhCMCwKKyAgICAweEMwLCAweEQ0LCAweEU3LCAweEJDLCAweDQ3LCAweDdGLCAweEUzLCAweEFELCAweDFGLCAweDRBLCAweEZGLCAweDM2LCAweEIyLCAweDgzLCAweDVELCAweDFCLAorICAgIDB4RjEsIDB4MkMsIDB4RTksIDB4RTUsIDB4REEsIDB4MTcsIDB4MEYsIDB4NkMsIDB4NjgsIDB4NTUsIDB4MjMsIDB4RUMsIDB4MjgsIDB4NEMsIDB4MkIsIDB4QzMsCisgICAgMHhDMywgMHhDMiwgMHgyNiwgMHg5RCwgMHhGMCwgMHg2MSwgMHg4QywgMHhEQywgMHhENiwgMHhEQiwgMHhEQiwgMHgzRSwgMHhGMCwgMHgzNywgMHg2NywgMHhCQywKKyAgICAweDY3LCAweEZBLCAweENELCAweDE3LCAweEJDLCAweEJBLCAweEFDLCAweDA1LCAweEExLCAweDUwLCAweDQxLCAweDBCLCAweDE4LCAweDk3LCAweEU5LCAweDdCLAorICAgIDB4RTksIDB4RTUsIDB4QTUsIDB4NzAsIDB4MTQsIDB4MjQsIDB4N0IsIDB4NzUsIDB4NzQsIDB4Q0QsIDB4OUMsIDB4OUIsIDB4QTYsIDB4QzMsIDB4NkIsIDB4MTAsCisgICAgMHg3RiwgMHg5QywgMHg2RiwgMHg4QSwgMHhFNiwgMHhERCwgMHgzMCwgMHhCMCwgMHg3MCwgMHg3RSwgMHg0NiwgMHhCNSwgMHhDNSwgMHhERSwgMHg5NywgMHhFMCwKKyAgICAweDY1LCAweDY0LCAweDY0LCAweDNFLCAweEFELCAweEEzLCAweEE4LCAweDBBLCAweDY5LCAweEM3LCAweDM3LCAweDVFLCAweENFLCAweDE3LCAweEZELCAweDJCLAorICAgIDB4MEMsIDB4QUUsIDB4MDQsIDB4REUsIDB4RkIsIDB4NkEsIDB4OTYsIDB4RDEsIDB4NkMsIDB4MzIsIDB4MDAsIDB4QzgsIDB4QkQsIDB4NEIsIDB4QjYsIDB4OUEsCisgICAgMHhDNSwgMHhGNywgMHhEQSwgMHhCQywgMHhFRCwgMHhBNywgMHgxMSwgMHgwRCwgMHg5MSwgMHg3NSwgMHhDMywgMHhGRiwgMHg3QSwgMHhDOSwgMHgwNiwgMHgxOCwKKyAgICAweDFDLCAweDMxLCAweDkyLCAweEMyLCAweDQ5LCAweDdCLCAweEI0LCAweEM2LCAweEY4LCAweEEzLCAweDQyLCAweEMwLCAweDM3LCAweEJFLCAweEFELCAweDNDLAorICAgIDB4MDYsIDB4RjUsIDB4NzMsIDB4NjIsIDB4QkYsIDB4REUsIDB4MDgsIDB4NzcsIDB4MjksIDB4NTIsIDB4MkUsIDB4MjgsIDB4NTcsIDB4QkYsIDB4RjksIDB4OTgsCisgICAgMHhGQSwgMHhDMywgMHg5RiwgMHhDNCwgMHhGNCwgMHhCMiwgMHhDMiwgMHg5OSwgMHg0RSwgMHg0NSwgMHgzMywgMHg1MCwgMHhCNCwgMHg5QSwgMHg2NSwgMHhDOSwKKyAgICAweEZCLCAweDQwLCAweEMyLCAweDc3LCAweEFDLCAweEM4LCAweDg3LCAweDFDLCAweDlGLCAweDdGLCAweEQ5LCAweDFDLCAweEU3LCAweEMxLCAweDA0LCAweDQ0LAorICAgIDB4QUIsIDB4RkEsIDB4NDcsIDB4NUQsIDB4RTQsIDB4ODksIDB4MkQsIDB4Q0YsIDB4NTIsIDB4QzEsIDB4MjQsIDB4MzAsIDB4M0QsIDB4QUQsIDB4MUIsIDB4MjUsCisgICAgMHgzNCwgMHhBRiwgMHg3NiwgMHhCQSwgMHhFMCwgMHgyNiwgMHhGMiwgMHg2MywgMHhEMCwgMHg2OCwgMHhGQSwgMHgxOCwgMHgwNywgMHhBNCwgMHgzOSwgMHhFRSwKKyAgICAweEYyLCAweEYwLCAweEVDLCAweERELCAweEI0LCAweDk1LCAweDRFLCAweEJGLCAweDQ2LCAweDMxLCAweDM5LCAweEM3LCAweDFELCAweEI2LCAweENCLCAweDVGLAorICAgIDB4QTIsIDB4QTIsIDB4NjIsIDB4ODMsIDB4MTEsIDB4QTUsIDB4RTksIDB4RUQsIDB4OTIsIDB4QzIsIDB4RDgsIDB4NUIsIDB4NjQsIDB4RDksIDB4NjUsIDB4RkUsCisgICAgMHgxOCwgMHhFOCwgMHhCMSwgMHhCRCwgMHhBRCwgMHhGMiwgMHhGOSwgMHhEMCwgMHgxRCwgMHhDQiwgMHg3MSwgMHhEQywgMHg0OSwgMHgzRiwgMHg0RiwgMHhEOSwKKyAgICAweDlFLCAweDE3LCAweDdGLCAweEY2LCAweDQ2LCAweEEwLCAweEZGLCAweDk5LCAweDE3LCAweEEyLCAweEU2LCAweEVCLCAweERFLCAweEI3LCAweEFGLCAweDI2LAorICAgIDB4NEMsIDB4RkQsIDB4REEsIDB4RTEsIDB4RkIsIDB4RUYsIDB4QUEsIDB4QzUsIDB4MkYsIDB4RjksIDB4MzEsIDB4NUMsIDB4RjYsIDB4OTEsIDB4NzAsIDB4REEsCisgICAgMHg2NiwgMHhFRCwgMHhCMywgMHg1MSwgMHg3MiwgMHg5NSwgMHgyOSwgMHgyMiwgMHhBNSwgMHhFMiwgMHg4MiwgMHgwQywgMHg0MywgMHhGRSwgMHg5MiwgMHhGRiwKKyAgICAweDcyLCAweEE4LCAweEQ5LCAweEY1LCAweDZGLCAweENGLCAweDYzLCAweEZDLCAweDc1LCAweEQyLCAweDMzLCAweDQ3LCAweEFELCAweDAxLCAweDg3LCAweEMyLAorICAgIDB4RTYsIDB4REUsIDB4QkIsIDB4QjksIDB4Q0YsIDB4RTIsIDB4MTcsIDB4NTAsIDB4M0EsIDB4NjgsIDB4MzEsIDB4RDEsIDB4QjYsIDB4QzksIDB4M0YsIDB4NDMsCisgICAgMHgyNSwgMHhCQywgMHhCNSwgMHhGMywgMHhDOSwgMHhGOSwgMHhGMywgMHhCMywgMHgxMSwgMHg1RSwgMHhGNiwgMHhFMCwgMHhCRiwgMHhBRiwgMHgxQiwgMHg5MCwKKyAgICAweEEzLCAweDYxLCAweEEzLCAweDM2LCAweEZCLCAweEJGLCAweDBFLCAweDYyLCAweERGLCAweENDLCAweDlCLCAweDUxLCAweDU5LCAweEZFLCAweEE0LCAweEZBLAorICAgIDB4RDEsIDB4M0EsIDB4NEIsIDB4QTUsIDB4OUEsIDB4QTgsIDB4MjEsIDB4MDEsIDB4MUQsIDB4NTIsIDB4QUYsIDB4QkUsIDB4NzQsIDB4MkQsIDB4OEIsIDB4OTEsCisgICAgMHg5MSwgMHg5OCwgMHhDOSwgMHhEMSwgMHg5QywgMHg1QiwgMHgzOCwgMHgxMiwgMHgwMCwgMHgyQiwgMHgxMiwgMHg2RiwgMHg5MiwgMHg3QSwgMHhDNywgMHg0NSwKKyAgICAweDE2LCAweEI4LCAweEE3LCAweEIzLCAweDlGLCAweDQ2LCAweEY5LCAweEFFLCAweEJELCAweDEzLCAweEZCLCAweERELCAweERCLCAweDg2LCAweDhBLCAweDk0LAorICAgIDB4RkIsIDB4MTAsIDB4M0IsIDB4QTMsIDB4NEQsIDB4NEMsIDB4NEQsIDB4REQsIDB4QzIsIDB4MzgsIDB4MjIsIDB4NTgsIDB4QzQsIDB4MzQsIDB4Q0UsIDB4NTgsCisgICAgMHg3OCwgMHg4OSwgMHg3QiwgMHg3NywgMHgyOCwgMHgzMCwgMHhENiwgMHhDNywgMHg0NCwgMHgwNCwgMHg1MiwgMHg3QSwgMHgxOSwgMHgxRSwgMHhGMSwgMHhGRCwKKyAgICAweEQzLCAweDc3LCAweDVGLCAweDUwLCAweDBELCAweEFFLCAweEFFLCAweEVGLCAweDU5LCAweDA2LCAweEY0LCAweDNELCAweDE4LCAweDQzLCAweDM4LCAweDUxLAorICAgIDB4RDYsIDB4M0QsIDB4QzUsIDB4MjMsIDB4MDQsIDB4MUYsIDB4NUIsIDB4MjUsIDB4NEMsIDB4NzQsIDB4QjAsIDB4QzYsIDB4RUIsIDB4NzYsIDB4QkEsIDB4RTgsCisgICAgMHhCMSwgMHhBNywgMHg0NCwgMHhFMiwgMHg1QywgMHhENCwgMHgxOCwgMHgxRCwgMHgzNCwgMHg4RCwgMHhBOCwgMHgwNSwgMHgyNSwgMHgwMywgMHhBMiwgMHhENywKKyAgICAweEEzLCAweDNGLCAweDUwLCAweDA3LCAweDUyLCAweDA5LCAweDJELCAweDg4LCAweEZDLCAweDJDLCAweEYzLCAweEFGLCAweEI0LCAweDg5LCAweDZBLCAweEEwLAorICAgIDB4MjcsIDB4NUYsIDB4RDMsIDB4MkIsIDB4NjMsIDB4OEQsIDB4RDksIDB4NjAsIDB4MUIsIDB4RDMsIDB4MzUsIDB4MTgsIDB4NjEsIDB4OTMsIDB4RjYsIDB4ODIsCisgICAgMHhEOCwgMHhCQywgMHg5RiwgMHg5MCwgMHhCNiwgMHhCMSwgMHhDRiwgMHhGRCwgMHgzQiwgMHhENCwgMHhBOCwgMHgwNywgMHgwRCwgMHg3NiwgMHhGMSwgMHg0NCwKKyAgICAweDRGLCAweDQ1LCAweDEwLCAweDRDLCAweEZCLCAweDkyLCAweDFBLCAweDU2LCAweDQ4LCAweDg3LCAweDE1LCAweDdCLCAweDU1LCAweDNELCAweDEwLCAweENFLAorICAgIDB4RDgsIDB4MDcsIDB4M0EsIDB4NzksIDB4NzIsIDB4MTcsIDB4NUMsIDB4RjIsIDB4OUMsIDB4ODQsIDB4RTEsIDB4NzIsIDB4MzYsIDB4MkEsIDB4RUIsIDB4QkIsCisgICAgMHhFRSwgMHgzRSwgMHhDOCwgMHgxRiwgMHgzMywgMHgyRiwgMHg1MywgMHhERiwgMHg2QiwgMHhFOCwgMHgzRSwgMHgwQSwgMHg1QywgMHgzMiwgMHgzNiwgMHg4MSwKKyAgICAweDc3LCAweDRBLCAweEQ2LCAweEQwLCAweEE4LCAweDE0LCAweEJCLCAweDMyLCAweERDLCAweDhCLCAweDU1LCAweEIyLCAweEVGLCAweEQ0LCAweEU4LCAweENBLAorICAgIDB4RkYsIDB4NTAsIDB4REMsIDB4QkQsIDB4NTUsIDB4QjUsIDB4NUUsIDB4QkUsIDB4MUIsIDB4NzQsIDB4OEEsIDB4NTcsIDB4NUIsIDB4QkMsIDB4Q0MsIDB4MkYsCisgICAgMHhGNiwgMHg3MiwgMHgwQywgMHhBRiwgMHg5RiwgMHgyQSwgMHg5NiwgMHhCRSwgMHhEQywgMHhCQywgMHhGQywgMHgzQSwgMHhBOCwgMHhERiwgMHgzRSwgMHgyRSwKKyAgICAweDc4LCAweEE3LCAweEQ4LCAweEEwLCAweDJBLCAweDk1LCAweDcwLCAweDI0LCAweEJDLCAweDZDLCAweDFBLCAweEZBLCAweEFBLCAweEU2LCAweEUxLCAweDM4LAorICAgIDB4RTQsIDB4OEEsIDB4RDgsIDB4NjMsIDB4MDMsIDB4ODIsIDB4M0MsIDB4RkIsIDB4QTYsIDB4OUUsIDB4QjksIDB4NjksIDB4RjYsIDB4MDQsIDB4NjAsIDB4MzcsCisgICAgMHgwQiwgMHhCQywgMHhFRiwgMHg4NSwgMHg3MCwgMHhENCwgMHhDQiwgMHhCRSwgMHgzRSwgMHhEMywgMHhGMiwgMHg4MSwgMHgzNywgMHg0NSwgMHgxQSwgMHg5NCwKKyAgICAweEI0LCAweDAyLCAweEQ5LCAweEEyLCAweEM4LCAweDFELCAweDkyLCAweEUwLCAweDVDLCAweEE0LCAweDVELCAweDQzLCAweEE1LCAweEZBLCAweDFELCAweEQzLAorICAgIDB4MTgsIDB4MTQsIDB4MEIsIDB4MTgsIDB4ODYsIDB4NzQsIDB4OEUsIDB4MTYsIDB4QjMsIDB4NjUsIDB4RDMsIDB4MjQsIDB4NDUsIDB4NzEsIDB4QTksIDB4MjgsCisgICAgMHg0NiwgMHgyNSwgMHg2OCwgMHgyMSwgMHg5NCwgMHg4RCwgMHhEQiwgMHhDQSwgMHgxMywgMHgzQywgMHgwQywgMHhCMSwgMHhCQiwgMHhGMiwgMHg2RSwgMHhDMiwKKyAgICAweDJELCAweDY3LCAweEJBLCAweDBELCAweEE5LCAweDVCLCAweDNBLCAweEQ3LCAweDQ1LCAweERDLCAweDY4LCAweDk0LCAweDQxLCAweDMwLCAweEMxLCAweEFELAorICAgIDB4MEMsIDB4RUYsIDB4N0UsIDB4QjEsIDB4NjYsIDB4MUUsIDB4RUUsIDB4MEUsIDB4MjMsIDB4QzAsIDB4NkIsIDB4MDgsIDB4RjAsIDB4M0UsIDB4RDAsIDB4QTgsCisgICAgMHhFRiwgMHg2MCwgMHgzNCwgMHhBNywgMHhEQiwgMHg5QSwgMHgzQywgMHhENSwgMHhFRSwgMHgwMiwgMHg0QywgMHgzRSwgMHgxQywgMHg5NCwgMHg3NSwgMHg4RSwKKyAgICAweDk1LCAweEQyLCAweDkxLCAweENELCAweEYwLCAweDIwLCAweDQ5LCAweEJDLCAweDZBLCAweEJDLCAweDI2LCAweDBDLCAweDQwLCAweDU1LCAweDRGLCAweEU0LAorICAgIDB4MjksIDB4QzcsIDB4MkQsIDB4QjAsIDB4NTUsIDB4MjgsIDB4QjEsIDB4QjIsIDB4OTksIDB4MkEsIDB4ODcsIDB4NEEsIDB4MTksIDB4NTgsIDB4N0QsIDB4RUUsCisgICAgMHgyNCwgMHhFNywgMHhFRSwgMHhBNiwgMHg2QSwgMHhCRSwgMHhFMSwgMHg5NiwgMHhCQiwgMHg4MCwgMHhGMCwgMHgxQiwgMHg1NSwgMHg3MSwgMHgwMiwgMHg5RCwKKyAgICAweENBLCAweDhBLCAweDUxLCAweEU0LCAweDFELCAweDM0LCAweDZDLCAweDFELCAweDIyLCAweDkxLCAweDNDLCAweDE5LCAweEJDLCAweDMxLCAweDU5LCAweEEwLAorICAgIDB4RDQsIDB4ODIsIDB4OTYsIDB4QUUsIDB4RTksIDB4MkIsIDB4MjQsIDB4OEUsIDB4RjQsIDB4OTcsIDB4M0IsIDB4RjAsIDB4MDYsIDB4QzMsIDB4NjAsIDB4MTgsCisgICAgMHgwQSwgMHg0NiwgMHhBMywgMHg2OSwgMHhBMywgMHg5QiwgMHgzNSwgMHhBOCwgMHgwNCwgMHhCQywgMHg1QiwgMHg2MCwgMHhFNSwgMHhGNSwgMHgxMCwgMHgyMiwKKyAgICAweDAzLCAweDU5LCAweDEyLCAweDA5LCAweDFCLCAweDI4LCAweDZCLCAweEM0LCAweEYxLCAweDgyLCAweEIxLCAweDcyLCAweDQzLCAweDhCLCAweDBBLCAweDI3LAorICAgIDB4ODQsIDB4N0EsIDB4MzgsIDB4NzIsIDB4NjQsIDB4RkQsIDB4NzQsIDB4MzksIDB4MDIsIDB4QjYsIDB4MTksIDB4RTIsIDB4REQsIDB4MjgsIDB4ODUsIDB4NjEsCisgICAgMHhERSwgMHg0RiwgMHgxNSwgMHgwQiwgMHg5MCwgMHhFMywgMHg4MywgMHhCNSwgMHg4MiwgMHhDNiwgMHhCOSwgMHhBNiwgMHhGRCwgMHg2QiwgMHg4QSwgMHhCMSwKKyAgICAweDlFLCAweEVCLCAweEE5LCAweEZDLCAweEFBLCAweDEwLCAweEM5LCAweDRELCAweDA2LCAweEFCLCAweDUzLCAweDA2LCAweDJGLCAweEY1LCAweDdBLCAweDk0LAorICAgIDB4RkIsIDB4NDUsIDB4MTQsIDB4NTIsIDB4MUQsIDB4RkQsIDB4Q0QsIDB4MkMsIDB4QzcsIDB4N0IsIDB4NkQsIDB4ODksIDB4Q0IsIDB4NTAsIDB4QzQsIDB4NkQsCisgICAgMHg4OSwgMHg5RCwgMHg2NiwgMHg2NiwgMHhGQSwgMHgxNywgMHhENywgMHgwMywgMHhCNCwgMHg2MiwgMHhBQSwgMHg2RiwgMHhFQywgMHhCOSwgMHgzMywgMHhGMSwKKyAgICAweDJBLCAweDdFLCAweDUzLCAweDJDLCAweDg2LCAweDQxLCAweEYyLCAweDczLCAweEUxLCAweEM2LCAweEZCLCAweDZFLCAweDBGLCAweDVCLCAweDMxLCAweDY2LAorICAgIDB4QjMsIDB4NkMsIDB4ODksIDB4QzcsIDB4NDksIDB4MjYsIDB4RTYsIDB4MUIsIDB4MjIsIDB4QjEsIDB4MDEsIDB4QzgsIDB4MDAsIDB4MUQsIDB4RkYsIDB4QUYsCisgICAgMHgzQywgMHg1RiwgMHg0OCwgMHhCMywgMHg1OSwgMHhDQywgMHhBRSwgMHg5NiwgMHgzNiwgMHgzMCwgMHhDQiwgMHhCRiwgMHg2NCwgMHhFQiwgMHg3RCwgMHhDMSwKKyAgICAweEYwLCAweDM2LCAweEE4LCAweDBELCAweEQxLCAweDVELCAweEFCLCAweDMxLCAweDg5LCAweDhFLCAweDQwLCAweDFELCAweEVELCAweDg0LCAweEM5LCAweDA4LAorICAgIDB4NzMsIDB4QjQsIDB4RkUsIDB4MjAsIDB4RUYsIDB4MTUsIDB4MjUsIDB4RDEsIDB4RjgsIDB4QUEsIDB4MjQsIDB4RjksIDB4Q0UsIDB4RUMsIDB4MkIsIDB4MzgsCisgICAgMHgzMCwgMHg5OCwgMHg5NywgMHg3QSwgMHg0MywgMHhFRSwgMHhGQywgMHhDRSwgMHgxQywgMHg5MCwgMHg4NywgMHg0OCwgMHg3RCwgMHg3RiwgMHg5NywgMHhERiwKKyAgICAweDcyLCAweDE4LCAweDE2LCAweEQ3LCAweEQzLCAweEQ3LCAweDY1LCAweEExLCAweEI1LCAweEVDLCAweEMyLCAweEZDLCAweDk1LCAweEMwLCAweDM0LCAweDM0LAorICAgIDB4NTEsIDB4MTUsIDB4RTUsIDB4NzIsIDB4REMsIDB4OUEsIDB4NTYsIDB4NjcsIDB4MDEsIDB4RjgsIDB4OUMsIDB4OTYsIDB4MTIsIDB4OUUsIDB4RjQsIDB4QkQsCisgICAgMHg1QiwgMHhCRSwgMHgxNywgMHhDMiwgMHhDMiwgMHgzMiwgMHg2QSwgMHgwQSwgMHhEMiwgMHg0QSwgMHgwQywgMHhGNiwgMHhBQywgMHgzMywgMHg2NCwgMHg0OCwKKyAgICAweEU3LCAweDM2LCAweDIwLCAweDk5LCAweDRBLCAweENBLCAweEYyLCAweEZDLCAweEM3LCAweDg4LCAweDM0LCAweDY4LCAweDE1LCAweEZDLCAweDI4LCAweDJFLAorICAgIDB4QUMsIDB4RDIsIDB4OUUsIDB4RUUsIDB4MzksIDB4N0EsIDB4QzksIDB4QjQsIDB4ODgsIDB4NjQsIDB4RUEsIDB4MUYsIDB4MjEsIDB4QTIsIDB4NUMsIDB4NUYsCisgICAgMHgyOSwgMHhEMSwgMHg1QiwgMHhFOSwgMHg3RSwgMHg3NiwgMHgyNCwgMHg3QSwgMHgwNSwgMHgwMCwgMHhDRiwgMHg0OSwgMHgwRCwgMHg1MSwgMHgyOCwgMHg2NSwKKyAgICAweDA3LCAweDgyLCAweEMyLCAweDlFLCAweDEzLCAweEVELCAweDRBLCAweDg2LCAweEI2LCAweENBLCAweDc4LCAweDE1LCAweEYwLCAweDJDLCAweDdBLCAweEU1LAorICAgIDB4MDAsIDB4RjUsIDB4NzQsIDB4RkYsIDB4MkUsIDB4NTAsIDB4ODUsIDB4RTAsIDB4NzIsIDB4Q0EsIDB4QjEsIDB4NDEsIDB4QzIsIDB4ODgsIDB4N0YsIDB4MzcsCisgICAgMHg5RiwgMHg0NiwgMHhCMiwgMHgxRiwgMHgyMCwgMHg2OSwgMHg3QiwgMHgxQiwgMHg0NCwgMHhGNiwgMHg1NiwgMHhENywgMHhEQiwgMHhEQiwgMHg1OCwgMHg1RCwKKyAgICAweEYwLCAweERCLCAweDExLCAweDJCLCAweDZFLCAweDMxLCAweEUwLCAweDk1LCAweDhDLCAweEFDLCAweDY0LCAweDdBLCAweERFLCAweDQwLCAweDZCLCAweEE0LAorICAgIDB4NzgsIDB4N0EsIDB4QzEsIDB4QUIsIDB4NkEsIDB4MDMsIDB4NEYsIDB4ODgsIDB4OTYsIDB4MEUsIDB4RjEsIDB4MTQsIDB4NkIsIDB4NjYsIDB4QjcsIDB4OUYsCisgICAgMHg1MSwgMHgyNSwgMHg0RiwgMHg5QSwgMHgyNSwgMHgxOSwgMHhCQSwgMHhFMiwgMHgzMSwgMHhDNSwgMHg2RCwgMHhCMCwgMHgxMSwgMHgyOCwgMHgxRCwgMHhBRiwKKyAgICAweDhCLCAweEVCLCAweDc1LCAweDY5LCAweDg1LCAweEI5LCAweDI3LCAweDQ3LCAweEIxLCAweDg0LCAweDM1LCAweDE5LCAweEM2LCAweEVCLCAweEU5LCAweDRFLAorICAgIDB4M0YsIDB4NjEsIDB4RkQsIDB4QTQsIDB4RUUsIDB4RDIsIDB4QzAsIDB4MzEsIDB4RUMsIDB4MjIsIDB4NTYsIDB4RTUsIDB4QjcsIDB4MjIsIDB4NzYsIDB4MzQsCisgICAgMHgyQSwgMHg3NSwgMHhDMSwgMHg1RCwgMHg3NiwgMHg3QSwgMHhGRSwgMHg0RCwgMHg0OCwgMHgxNywgMHg1MywgMHhFQSwgMHhDRCwgMHgxMywgMHgwOSwgMHhGRiwKKyAgICAweDA0LCAweDlELCAweEIxLCAweDExLCAweDcwLCAweEFGLCAweDlCLCAweDE1LCAweDFCLCAweEI2LCAweDgxLCAweEQ0LCAweEY2LCAweDM4LCAweDcyLCAweDY1LAorICAgIDB4RjUsIDB4RkIsIDB4MDEsIDB4RjUsIDB4QjAsIDB4RDAsIDB4QkEsIDB4Q0EsIDB4RjAsIDB4OEUsIDB4OTQsIDB4ODEsIDB4QjEsIDB4MzksIDB4QkQsIDB4N0YsCisgICAgMHgzQSwgMHgzMywgMHg4OSwgMHgwNCwgMHhFNSwgMHg5NiwgMHg3RSwgMHhGNiwgMHhGQywgMHg0OCwgMHhFNSwgMHg5NiwgMHhDRiwgMHgwNSwgMHhBRSwgMHg4RiwKKyAgICAweDNFLCAweERFLCAweDMwLCAweDkyLCAweEI4LCAweEUwLCAweDIwLCAweDFCLCAweDg2LCAweEMzLCAweDEyLCAweEE4LCAweENBLCAweEQ4LCAweEYzLCAweEY1LAorICAgIDB4QkYsIDB4NTUsIDB4MEQsIDB4OEIsIDB4MjAsIDB4QzgsIDB4OTYsIDB4QjgsIDB4OEUsIDB4NDcsIDB4Q0IsIDB4QzgsIDB4RTIsIDB4NzMsIDB4RjksIDB4MUEsCisgICAgMHhGRCwgMHgwNywgMHg5MCwgMHg3MSwgMHhEQiwgMHhDNCwgMHhBRiwgMHhDRSwgMHhCNCwgMHhCNiwgMHgzQSwgMHg1MywgMHhDQiwgMHgxRiwgMHhDQywgMHg2NywKKyAgICAweEU5LCAweDlFLCAweEQyLCAweDgyLCAweDFGLCAweEUwLCAweDQ2LCAweDQ2LCAweEY4LCAweEU2LCAweDIyLCAweDAxLCAweEU3LCAweDU0LCAweDY2LCAweEIzLAorICAgIDB4NjYsIDB4MkUsIDB4RTMsIDB4MkIsIDB4N0UsIDB4NzgsIDB4NkMsIDB4NjgsIDB4ODEsIDB4REMsIDB4OUUsIDB4NkYsIDB4Q0EsIDB4RDMsIDB4MjUsIDB4OTQsCisgICAgMHgzMCwgMHg4NCwgMHg0RiwgMHgzMiwgMHhENSwgMHgzNywgMHgyMSwgMHgyQywgMHhGNiwgMHhDRSwgMHg4NSwgMHg4MywgMHgyMSwgMHg2RiwgMHhDOSwgMHgwOSwKKyAgICAweEU1LCAweDBBLCAweEU0LCAweDhDLCAweDIyLCAweDY2LCAweEI5LCAweDUwLCAweEZCLCAweEU2LCAweDk3LCAweENGLCAweDc0LCAweDhBLCAweEM3LCAweDY3LAorICAgIDB4Q0IsIDB4MzgsIDB4REEsIDB4ODUsIDB4NDcsIDB4OEIsIDB4RjAsIDB4NjQsIDB4RjMsIDB4RkYsIDB4QTQsIDB4OTEsIDB4MDUsIDB4N0MsIDB4RTgsIDB4RUQsCisgICAgMHg2RiwgMHg5RiwgMHg5MywgMHgzRSwgMHgxOCwgMHhBMiwgMHg0QywgMHg2OCwgMHgwQywgMHg2MiwgMHhFQiwgMHg2RCwgMHgzQSwgMHg0NSwgMHg1MiwgMHhCRiwKKyAgICAweDA1LCAweEMxLCAweEI4LCAweEI1LCAweDBDLCAweEJCLCAweENCLCAweEY3LCAweEE1LCAweDg4LCAweEI0LCAweDk0LCAweDAwLCAweDc3LCAweDkyLCAweDlELAorICAgIDB4QTMsIDB4RkIsIDB4QzIsIDB4MDQsIDB4MTEsIDB4NEYsIDB4OEYsIDB4QTIsIDB4MjIsIDB4RkIsIDB4RUMsIDB4NzEsIDB4Q0EsIDB4NUUsIDB4M0EsIDB4QzIsCisgICAgMHg0MiwgMHgxQywgMHgyQiwgMHg3NCwgMHhDRSwgMHg5RSwgMHg0NiwgMHhGNywgMHhFRiwgMHg0OCwgMHgyNCwgMHhDRiwgMHhCQSwgMHhFMSwgMHgwQSwgMHg5MiwKKyAgICAweEM5LCAweDU5LCAweEY1LCAweDEwLCAweEQ3LCAweDI1LCAweDZFLCAweEFCLCAweDlCLCAweEFCLCAweEQ0LCAweEM2LCAweDE2LCAweDk4LCAweDVCLCAweDMxLAorICAgIDB4ODcsIDB4MzksIDB4MjEsIDB4QTksIDB4MDksIDB4N0YsIDB4NDcsIDB4MEIsIDB4RjQsIDB4RkIsIDB4QTksIDB4RkUsIDB4NjAsIDB4MDcsIDB4MUEsIDB4MzEsCisgICAgMHhFQywgMHg0OCwgMHg2NCwgMHgwRCwgMHg3MywgMHg3MSwgMHhERiwgMHg3OCwgMHhFNiwgMHhCMSwgMHg3NiwgMHhEOSwgMHhFMSwgMHg0QywgMHhDRiwgMHg4MCwKKyAgICAweEJELCAweDU4LCAweDk2LCAweEFGLCAweDNELCAweDNELCAweDgyLCAweDdCLCAweEMwLCAweDE2LCAweEQ3LCAweEQ3LCAweDhDLCAweEJDLCAweDVGLCAweDkxLAorICAgIDB4MzAsIDB4QTMsIDB4NkMsIDB4NUQsIDB4MjUsIDB4Q0YsIDB4QUMsIDB4QTYsIDB4RUMsIDB4Q0YsIDB4NDIsIDB4NDEsIDB4MDUsIDB4QTQsIDB4NzQsIDB4MkUsCisgICAgMHg4MiwgMHhCQSwgMHgyMSwgMHg0MiwgMHg5NSwgMHhERiwgMHhGMiwgMHhENiwgMHgyOSwgMHg1QiwgMHgwNCwgMHhCRCwgMHg0NywgMHg4RSwgMHg0NywgMHhCQSwKKyAgICAweDNGLCAweDk5LCAweDIwLCAweDRELCAweDc0LCAweDU2LCAweEQ2LCAweDQzLCAweDQyLCAweEM0LCAweDM2LCAweDdELCAweDI0LCAweEUzLCAweEM5LCAweEQ4LAorICAgIDB4NjYsIDB4QUIsIDB4M0QsIDB4NjIsIDB4RTIsIDB4QTksIDB4NTEsIDB4M0MsIDB4OUYsIDB4MUEsIDB4QTcsIDB4NkMsIDB4N0YsIDB4NEQsIDB4QzksIDB4RUIsCisgICAgMHgyMSwgMHg2NiwgMHhCQiwgMHg0NiwgMHhBNCwgMHg5NywgMHg1RSwgMHg2RCwgMHhBRCwgMHhENCwgMHg2RiwgMHhGQiwgMHhCMSwgMHhDNiwgMHg2RiwgMHg1MSwKKyAgICAweDJGLCAweDBBLCAweDlBLCAweDk3LCAweDhFLCAweEJCLCAweDgwLCAweEQ3LCAweDE2LCAweDcwLCAweEM0LCAweDk4LCAweEVFLCAweEI5LCAweDY5LCAweDQ4LAorICAgIDB4NDksIDB4QTIsIDB4QkIsIDB4OTMsIDB4OEIsIDB4RTYsIDB4MTAsIDB4Q0IsIDB4QzMsIDB4OEQsIDB4NTcsIDB4MTcsIDB4MEEsIDB4RkUsIDB4MUIsIDB4QjUsCisgICAgMHg0MCwgMHgwNiwgMHg3RCwgMHhFNCwgMHg4OSwgMHg3NiwgMHgxMywgMHgwMSwgMHhCMSwgMHgyRSwgMHgwMSwgMHhENywgMHgyMCwgMHgxRCwgMHg1QiwgMHhFOSwKKyAgICAweDVDLCAweDExLCAweDI0LCAweDc4LCAweEY1LCAweDlGLCAweDAyLCAweEY4LCAweDhCLCAweEE5LCAweDBCLCAweDIyLCAweDQyLCAweDY2LCAweDFBLCAweEZFLAorICAgIDB4MTUsIDB4RjcsIDB4NTEsIDB4OTMsIDB4QjcsIDB4REIsIDB4MDAsIDB4NTIsIDB4MEEsIDB4RjAsIDB4NEEsIDB4QTgsIDB4RTEsIDB4REYsIDB4Q0UsIDB4ODgsCisgICAgMHhCRiwgMHg0NywgMHg0NywgMHg3MywgMHg0OCwgMHgxOSwgMHg4OSwgMHgzQiwgMHhERCwgMHhEMiwgMHg4MiwgMHgxNCwgMHhCNCwgMHg3MCwgMHhGNiwgMHhGMiwKKyAgICAweEMxLCAweDRELCAweDhCLCAweDQ3LCAweDc0LCAweDEyLCAweEMxLCAweDQyLCAweDY5LCAweEUxLCAweEZELCAweDI1LCAweDZGLCAweDYyLCAweEY2LCAweDQxLAorICAgIDB4RjgsIDB4NjAsIDB4ODMsIDB4QjgsIDB4OTEsIDB4MDYsIDB4MDksIDB4NUQsIDB4OTAsIDB4MkUsIDB4NTIsIDB4QjMsIDB4RkMsIDB4MzQsIDB4ODYsIDB4RDcsCisgICAgMHhDOCwgMHgyNywgMHg5NCwgMHhBNCwgMHhCOSwgMHgzMiwgMHg3RSwgMHhBMCwgMHhBNCwgMHhCNCwgMHhFNSwgMHgyRiwgMHgxNCwgMHgzNywgMHg3QiwgMHhGQSwKKyAgICAweDlDLCAweDE1LCAweEQwLCAweEUyLCAweDEzLCAweDRDLCAweDYyLCAweDI0LCAweEU4LCAweDBDLCAweERDLCAweDUyLCAweDEwLCAweEMzLCAweENFLCAweDZGLAorICAgIDB4RTUsIDB4MjEsIDB4NTcsIDB4RjMsIDB4MTcsIDB4RDAsIDB4MEYsIDB4NjcsIDB4OUQsIDB4NTgsIDB4RUEsIDB4ODQsIDB4MTMsIDB4OUUsIDB4RTMsIDB4RUEsCisgICAgMHhGNiwgMHhCQywgMHg1QywgMHg0MCwgMHhDRSwgMHhDQywgMHhBQSwgMHhFOCwgMHg1QiwgMHg0MSwgMHg4NiwgMHg2OCwgMHhENywgMHhDMywgMHgzQiwgMHg2NiwKKyAgICAweEZCLCAweDZCLCAweEMxLCAweEFFLCAweDcyLCAweDI5LCAweEU2LCAweDZDLCAweDJBLCAweDcxLCAweEI0LCAweEM1LCAweDRGLCAweDY5LCAweEJBLCAweDQwLAorICAgIDB4ODAsIDB4NTgsIDB4MDgsIDB4NEYsIDB4OEQsIDB4RTUsIDB4NjksIDB4NDQsIDB4MUIsIDB4QzAsIDB4M0QsIDB4OTcsIDB4QUIsIDB4N0QsIDB4MjMsIDB4RjMsCisgICAgMHg3OSwgMHg0MCwgMHgxQSwgMHg5RCwgMHgwNCwgMHg5OCwgMHgzMSwgMHg2QSwgMHg1RSwgMHg2QywgMHg1OSwgMHgxNywgMHhFQSwgMHgzNCwgMHhFQywgMHgyOSwKKyAgICAweEEyLCAweDdELCAweEM5LCAweDJCLCAweDVCLCAweDc2LCAweDlDLCAweDE1LCAweDIyLCAweDY3LCAweDZDLCAweDA4LCAweDMzLCAweDQxLCAweEM1LCAweDQ2LAorICAgIDB4QTcsIDB4QTYsIDB4MEUsIDB4RUIsIDB4RkIsIDB4OTIsIDB4MTcsIDB4NDEsIDB4QUYsIDB4M0IsIDB4MjIsIDB4OTYsIDB4REUsIDB4MzUsIDB4RDYsIDB4QjYsCisgICAgMHg3QywgMHhFRiwgMHg2QiwgMHhGNiwgMHgxMCwgMHhGQywgMHhFNywgMHhCQywgMHgzOCwgMHhFMiwgMHhCNywgMHhBNiwgMHg5MywgMHgxRiwgMHgxMiwgMHg4NiwKKyAgICAweEY3LCAweDFGLCAweEJFLCAweDQxLCAweDQyLCAweENDLCAweERCLCAweEY4LCAweDUyLCAweENCLCAweEZELCAweEZGLCAweDQwLCAweEMxLCAweDM4LCAweDUwLAorICAgIDB4NkYsIDB4NzIsIDB4NzcsIDB4MkIsIDB4QjEsIDB4MjcsIDB4Q0QsIDB4OUEsIDB4MEYsIDB4NkIsIDB4NUQsIDB4MUUsIDB4RTcsIDB4OUEsIDB4QjksIDB4QTQsCisgICAgMHhBMiwgMHhDMywgMHg4QywgMHgyRCwgMHg3MywgMHhDMSwgMHhGOSwgMHg2QiwgMHg1RSwgMHgwOCwgMHhEOCwgMHg4QiwgMHgxRSwgMHgwNSwgMHgwQSwgMHgwNCwKKyAgICAweEJELCAweDI5LCAweEUyLCAweDU3LCAweDUyLCAweEY3LCAweDIxLCAweEVFLCAweDEwLCAweDM2LCAweDdFLCAweDkwLCAweDA5LCAweDA4LCAweEEzLCAweDQ0LAorICAgIDB4RTEsIDB4Q0EsIDB4Q0YsIDB4NTksIDB4NTMsIDB4REIsIDB4NkUsIDB4NjUsIDB4MjgsIDB4RUUsIDB4RjMsIDB4NjAsIDB4Q0IsIDB4NDcsIDB4ODMsIDB4MTgsCisgICAgMHhEQywgMHgwNSwgMHhBRCwgMHhDQywgMHgwNCwgMHgwOSwgMHg5MSwgMHgwNSwgMHhBRSwgMHg5NiwgMHgyRiwgMHgxMCwgMHgwRSwgMHg1MCwgMHgwQywgMHhGMCwKKyAgICAweDU3LCAweEE4LCAweEVFLCAweDgxLCAweDg5LCAweDRDLCAweDlCLCAweDcyLCAweDEzLCAweEExLCAweEI5LCAweDVBLCAweDlFLCAweDMxLCAweEIyLCAweEE5LAorICAgIDB4ODAsIDB4QTgsIDB4NTEsIDB4RUEsIDB4N0UsIDB4NTksIDB4QTcsIDB4QjksIDB4N0MsIDB4QkUsIDB4ODIsIDB4MTMsIDB4QzcsIDB4MzAsIDB4QUUsIDB4RjksCisgICAgMHhGNSwgMHgyMiwgMHgxNSwgMHhFMSwgMHhDNiwgMHhDMiwgMHgwNiwgMHhEOSwgMHhDOSwgMHhEOSwgMHhGNCwgMHg0QywgMHhCRiwgMHgwQSwgMHgwMiwgMHhEMywKKyAgICAweDRDLCAweDM4LCAweDI4LCAweDYwLCAweDUyLCAweEI5LCAweEY3LCAweDNDLCAweEQ5LCAweDFDLCAweDI4LCAweDk4LCAweDg5LCAweEFDLCAweEJELCAweDgxLAorICAgIDB4MTcsIDB4NUUsIDB4NTksIDB4RjUsIDB4NTUsIDB4QzcsIDB4RUQsIDB4NTgsIDB4MUYsIDB4MjksIDB4RTcsIDB4NTcsIDB4QzEsIDB4MjcsIDB4MEEsIDB4N0UsCisgICAgMHg2NywgMHgwMCwgMHg1NiwgMHhENSwgMHg5MywgMHg5OSwgMHhBNiwgMHg4RSwgMHg3RCwgMHhCMSwgMHhBMCwgMHgxNywgMHg5OCwgMHg4OCwgMHhBOCwgMHg5RCwKKyAgICAweDJELCAweDI3LCAweDZCLCAweDBDLCAweDU5LCAweDVDLCAweDBCLCAweDNDLCAweDZBLCAweDNCLCAweEZELCAweDQ0LCAweDM3LCAweDE4LCAweEFBLCAweDQ5LAorICAgIDB4RTcsIDB4QTEsIDB4QzEsIDB4MjQsIDB4Q0QsIDB4QjYsIDB4QTYsIDB4MkMsIDB4NEQsIDB4MzgsIDB4MUQsIDB4M0EsIDB4MEIsIDB4QTYsIDB4NDIsIDB4ODQsCisgICAgMHg0OCwgMHg2MywgMHhDQiwgMHg1QSwgMHg3NCwgMHhCRiwgMHg2MiwgMHgzQiwgMHg1RSwgMHg1NSwgMHg5NCwgMHhDNywgMHg1MiwgMHg3RCwgMHhEMSwgMHhBNiwKKyAgICAweEZFLCAweDNCLCAweDFBLCAweEU4LCAweDgwLCAweDNELCAweDU3LCAweDlFLCAweDAzLCAweEU0LCAweEE3LCAweEIwLCAweDUyLCAweDg0LCAweDQyLCAweEM0LAorICAgIDB4OTUsIDB4NjMsIDB4QzksIDB4RDIsIDB4NkUsIDB4QTksIDB4NTEsIDB4RTgsIDB4NTEsIDB4OUMsIDB4RkIsIDB4NjcsIDB4RDEsIDB4RjYsIDB4MzcsIDB4QzIsCisgICAgMHg1NiwgMHg2NCwgMHg5NSwgMHg3MCwgMHgwNywgMHgyMywgMHgwQywgMHg3OSwgMHg0QywgMHgyMCwgMHg1MiwgMHg5NCwgMHg2OCwgMHg5QiwgMHhDMywgMHg2NCwKKyAgICAweDdBLCAweEJDLCAweEY2LCAweDU0LCAweDk3LCAweEYwLCAweEVCLCAweDBGLCAweDcxLCAweDhFLCAweDY5LCAweDg1LCAweENDLCAweDJGLCAweDJCLCAweDJGLAorICAgIDB4Q0YsIDB4OEQsIDB4RUEsIDB4MUEsIDB4MDQsIDB4MzcsIDB4NDcsIDB4REEsIDB4RkUsIDB4Q0YsIDB4RDIsIDB4NUUsIDB4QTgsIDB4RTcsIDB4MDMsIDB4MjEsCisgICAgMHhCQSwgMHhGRSwgMHg4OCwgMHgyMSwgMHgzMywgMHgxNywgMHhFMywgMHg3OCwgMHhCMCwgMHhFNCwgMHg3MSwgMHg0NywgMHgxQSwgMHg4OCwgMHg5QiwgMHg0RiwKKyAgICAweDVGLCAweDM4LCAweEY4LCAweDBGLCAweDhGLCAweDgyLCAweDA0LCAweDcyLCAweERDLCAweDFFLCAweDdCLCAweEI2LCAweDkwLCAweDU1LCAweDE5LCAweERFLAorICAgIDB4RDcsIDB4MEUsIDB4RTYsIDB4RUQsIDB4RUUsIDB4OUEsIDB4NDcsIDB4NUEsIDB4NjMsIDB4QzQsIDB4RTYsIDB4MkEsIDB4MDksIDB4QjAsIDB4QzQsIDB4MEEsCisgICAgMHhCQSwgMHg3MCwgMHhGOCwgMHgxOCwgMHgwRiwgMHhFMSwgMHg4NywgMHhBRCwgMHg0MSwgMHhDRSwgMHhCOSwgMHg0QiwgMHg2RSwgMHhGMSwgMHgwQiwgMHgwNCwKKyAgICAweEFDLCAweDZBLCAweDRGLCAweDA5LCAweDQwLCAweERFLCAweDYwLCAweEYyLCAweDEwLCAweEM3LCAweEQ4LCAweDExLCAweEZCLCAweDU4LCAweDRELCAweDhDLAorICAgIDB4NkYsIDB4RDksIDB4RjcsIDB4QTUsIDB4QzMsIDB4MTMsIDB4MTYsIDB4MzksIDB4MjUsIDB4NUEsIDB4MDEsIDB4RTUsIDB4OTIsIDB4MDYsIDB4OEEsIDB4NEEsCisgICAgMHg4OSwgMHhCNSwgMHg0MywgMHg3QSwgMHgzOSwgMHhDMiwgMHgxMiwgMHhDRCwgMHg0NSwgMHg4QiwgMHg4RSwgMHg1OSwgMHgxQywgMHg0RiwgMHg3MiwgMHhBNiwKKyAgICAweEVFLCAweEE0LCAweDg4LCAweDZGLCAweDA0LCAweEU4LCAweDY4LCAweEQxLCAweERDLCAweDkwLCAweDQxLCAweDI4LCAweDhDLCAweDJCLCAweEM5LCAweEYxLAorICAgIDB4OTIsIDB4MDgsIDB4QUMsIDB4N0YsIDB4N0UsIDB4RUUsIDB4N0EsIDB4M0YsIDB4NTQsIDB4RkIsIDB4NDUsIDB4N0YsIDB4NzMsIDB4RjYsIDB4RTUsIDB4RTIsCisgICAgMHhFNCwgMHg4QywgMHgwNSwgMHhBNCwgMHhBRiwgMHg2MywgMHg4NiwgMHhCNCwgMHhBNSwgMHg2QiwgMHgzMywgMHgxOSwgMHgwMCwgMHg3OSwgMHhCMCwgMHg3MywKKyAgICAweDJDLCAweDg5LCAweEZDLCAweDgxLCAweERGLCAweDdFLCAweDVDLCAweDU5LCAweDAyLCAweEYyLCAweEZBLCAweDUyLCAweDlDLCAweDFFLCAweEQ0LCAweEU1LAorICAgIDB4NTYsIDB4OTAsIDB4NTYsIDB4MjMsIDB4M0EsIDB4N0EsIDB4RkQsIDB4NkYsIDB4QjQsIDB4OTgsIDB4OEQsIDB4NDcsIDB4RDcsIDB4NEQsIDB4ODQsIDB4QjksCisgICAgMHgyQSwgMHgwOSwgMHhGMiwgMHg2QywgMHhBQiwgMHgxQywgMHg3MCwgMHhEMSwgMHgwMSwgMHhENSwgMHg2MywgMHhGMCwgMHhERiwgMHgzRiwgMHhDRCwgMHgyNywKKyAgICAweDk0LCAweDM2LCAweEI4LCAweEU4LCAweEI5LCAweEFGLCAweEI3LCAweERELCAweDQxLCAweEUxLCAweDQzLCAweEM3LCAweEU0LCAweEY1LCAweEE4LCAweEI3LAorICAgIDB4RjQsIDB4NTksIDB4OTEsIDB4ODQsIDB4OTYsIDB4MEEsIDB4NkUsIDB4MTMsIDB4QTgsIDB4NDMsIDB4MUMsIDB4QzEsIDB4NEEsIDB4QjYsIDB4NTIsIDB4NkUsCisgICAgMHgzNiwgMHgyMSwgMHgwMiwgMHgxOCwgMHgxNSwgMHhCMSwgMHg2NSwgMHhBNSwgMHhFMSwgMHgwRiwgMHhBNSwgMHgwQywgMHhFMSwgMHhGRiwgMHhFMiwgMHgxMCwKKyAgICAweENDLCAweEJCLCAweEJELCAweDMzLCAweDkxLCAweDczLCAweDdELCAweEEwLCAweDE2LCAweDIzLCAweDM5LCAweDlCLCAweDM2LCAweENGLCAweDk0LCAweDJGLAorICAgIDB4N0MsIDB4QTAsIDB4NjMsIDB4RTgsIDB4M0MsIDB4QjgsIDB4QkUsIDB4QzUsIDB4MDMsIDB4M0QsIDB4MUEsIDB4M0QsIDB4OTcsIDB4MTAsIDB4N0YsIDB4NzksCisgICAgMHg3RiwgMHhDQSwgMHg5NCwgMHg3NywgMHgzMCwgMHgxQSwgMHg1QiwgMHgzQSwgMHhGMSwgMHhBRiwgMHhGMSwgMHhGNCwgMHg0RiwgMHg2OSwgMHhBOCwgMHgwQywKKyAgICAweDdCLCAweDg3LCAweEVELCAweDMwLCAweDk5LCAweEVFLCAweEVFLCAweEQ1LCAweEVGLCAweDI5LCAweDFCLCAweEI5LCAweEMwLCAweDRDLCAweEY2LCAweDQ2LAorICAgIDB4NDYsIDB4RDksIDB4MTIsIDB4OUUsIDB4NzMsIDB4RjYsIDB4NUMsIDB4OEYsIDB4MTIsIDB4MTQsIDB4RjEsIDB4RkMsIDB4NEMsIDB4NDksIDB4RTYsIDB4REYsCisgICAgMHhDRCwgMHg5MiwgMHg4MiwgMHhEQywgMHhENiwgMHhGMSwgMHgyRCwgMHgwNCwgMHgyNywgMHg5NCwgMHg1NSwgMHhGNSwgMHg3RSwgMHhDNSwgMHg4MSwgMHg0QiwKKyAgICAweDg0LCAweEI4LCAweDZGLCAweDQzLCAweEQ0LCAweDRFLCAweDU4LCAweDQ0LCAweDY2LCAweDMxLCAweEM4LCAweEI0LCAweEQ0LCAweDY0LCAweDM3LCAweDcyLAorICAgIDB4QUEsIDB4NDYsIDB4RDAsIDB4N0EsIDB4NDksIDB4OTQsIDB4RUEsIDB4MUUsIDB4RjYsIDB4RUQsIDB4MzEsIDB4RTIsIDB4Q0YsIDB4RDAsIDB4MTIsIDB4NTMsCisgICAgMHg1RiwgMHhDNCwgMHhBOSwgMHhGNCwgMHg3OSwgMHhENSwgMHhCMiwgMHgyRSwgMHhEMiwgMHg3QywgMHhDOSwgMHgxMiwgMHhERSwgMHhGQSwgMHhFRCwgMHg5RSwKKyAgICAweDZCLCAweEZCLCAweDA4LCAweEJFLCAweDYxLCAweDUzLCAweDk2LCAweDFBLCAweEI4LCAweDcxLCAweDJDLCAweDVFLCAweEU1LCAweEY4LCAweEFFLCAweDY4LAorICAgIDB4RjUsIDB4MzksIDB4MTEsIDB4NTMsIDB4REQsIDB4MzAsIDB4NEYsIDB4NDksIDB4Q0IsIDB4NUUsIDB4OUMsIDB4MjAsIDB4MkIsIDB4OTksIDB4NzcsIDB4OEYsCisgICAgMHhBOCwgMHg0NiwgMHg1RiwgMHhEMiwgMHhCQiwgMHgzMSwgMHg4RSwgMHgyQywgMHg4NCwgMHg2MCwgMHg2MywgMHhFQiwgMHhFOSwgMHgwQywgMHgyMCwgMHg5OCwKKyAgICAweEFBLCAweDU4LCAweEY1LCAweDc1LCAweEEwLCAweDJFLCAweEIyLCAweDY1LCAweDc5LCAweEEyLCAweEI5LCAweEFCLCAweEQ5LCAweEU4LCAweEE2LCAweEYzLAorICAgIDB4MUIsIDB4MzQsIDB4MzcsIDB4NzUsIDB4QTQsIDB4RkYsIDB4MDAsIDB4RjgsIDB4QTYsIDB4RjYsIDB4MjYsIDB4QTQsIDB4RkYsIDB4NjMsIDB4MTQsIDB4QjksCisgICAgMHhBNSwgMHhEMCwgMHgxMiwgMHg0NSwgMHgwOCwgMHg4QywgMHg2RSwgMHg3OCwgMHgwQywgMHhDNSwgMHg3NSwgMHhCOCwgMHhFQywgMHg3NywgMHg3MywgMHhFQSwKKyAgICAweDg3LCAweDZGLCAweEFELCAweDRELCAweDk4LCAweENELCAweEM3LCAweEE1LCAweDIwLCAweEMzLCAweDRFLCAweDMxLCAweDc5LCAweDE2LCAweEIwLCAweDJBLAorICAgIDB4OUEsIDB4ODQsIDB4MDIsIDB4QUEsIDB4MDAsIDB4NjAsIDB4QkIsIDB4NTgsIDB4ODQsIDB4QzYsIDB4OTUsIDB4RjMsIDB4RjQsIDB4NkMsIDB4RUIsIDB4RDgsCisgICAgMHhFQywgMHgxQSwgMHhDMywgMHg5MiwgMHhENiwgMHgwOSwgMHg1OCwgMHg1NiwgMHhEQiwgMHg2NCwgMHhGOSwgMHgwMCwgMHgxQSwgMHg0NSwgMHhGNCwgMHgyRiwKKyAgICAweDY1LCAweDcxLCAweDhDLCAweEQwLCAweDlCLCAweEZBLCAweDBCLCAweDdFLCAweERGLCAweDI5LCAweEYxLCAweDkxLCAweEQ1LCAweDMzLCAweEYyLCAweDQ2LAorICAgIDB4QzMsIDB4QkQsIDB4MzAsIDB4RjgsIDB4N0UsIDB4NUEsIDB4QTcsIDB4NkEsIDB4MTksIDB4ODgsIDB4QzMsIDB4RTMsIDB4NUIsIDB4MzcsIDB4QTksIDB4NEMsCisgICAgMHg0RiwgMHhCMywgMHhCRCwgMHhCOCwgMHg2NSwgMHg1NywgMHhDQiwgMHhCRSwgMHg3OSwgMHg4MiwgMHg4OCwgMHhEQSwgMHhCNSwgMHhBQSwgMHg5QSwgMHhEMywKKyAgICAweDA1LCAweEZBLCAweDdBLCAweDdCLCAweEMwLCAweEI5LCAweDMzLCAweEQwLCAweENFLCAweDM0LCAweEVGLCAweDQzLCAweDQxLCAweDM2LCAweDIzLCAweEQ0LAorICAgIDB4OUMsIDB4MUYsIDB4MzUsIDB4NzAsIDB4QzQsIDB4MTgsIDB4ODcsIDB4NTEsIDB4N0IsIDB4OUMsIDB4OEUsIDB4MjQsIDB4N0MsIDB4NzMsIDB4OUYsIDB4NkQsCisgICAgMHhENiwgMHg0QiwgMHhGQSwgMHgyMiwgMHgxRiwgMHg5OSwgMHgyRSwgMHgxRiwgMHhFRSwgMHgxMywgMHhCNCwgMHhBMywgMHhFOCwgMHhDRSwgMHhGNiwgMHhGMywKKyAgICAweDAwLCAweDlCLCAweEUzLCAweERELCAweDBGLCAweDhBLCAweENCLCAweEM1LCAweDQ5LCAweEIxLCAweENBLCAweDNGLCAweDgzLCAweDk2LCAweEI0LCAweEEzLAorICAgIDB4MzcsIDB4NzIsIDB4NDMsIDB4QUQsIDB4MkEsIDB4NzksIDB4QUYsIDB4N0YsIDB4NTYsIDB4MTgsIDB4QjMsIDB4OTUsIDB4QTIsIDB4M0IsIDB4MTUsIDB4OEEsCisgICAgMHg4MiwgMHhGQywgMHhFRCwgMHhEMSwgMHhBMSwgMHg4MSwgMHg0NCwgMHgyMywgMHg4OCwgMHgzOSwgMHg4OSwgMHhEOCwgMHgxMSwgMHg4RiwgMHhBQywgMHg2MiwKKyAgICAweENCLCAweEM5LCAweDlGLCAweDg4LCAweDNDLCAweERELCAweEU4LCAweDRCLCAweEI0LCAweEY0LCAweDk5LCAweEM3LCAweDlFLCAweEQ5LCAweEI3LCAweEJDLAorICAgIDB4NUIsIDB4ODEsIDB4RDksIDB4MEMsIDB4MUMsIDB4QTIsIDB4OEIsIDB4MzYsIDB4M0MsIDB4RTIsIDB4QTksIDB4RDQsIDB4ODEsIDB4MkQsIDB4NUQsIDB4NzIsCisgICAgMHg1QSwgMHhCRiwgMHhCMiwgMHg2MiwgMHg4RSwgMHg0OCwgMHg3NCwgMHg1NiwgMHhCOCwgMHhCOSwgMHg0OCwgMHgwNCwgMHg1MywgMHhDQSwgMHgwRiwgMHgyMCwKKyAgICAweDRFLCAweDI4LCAweEQ0LCAweDBCLCAweEM4LCAweEUwLCAweDNGLCAweDA5LCAweEM1LCAweDhGLCAweDE5LCAweDk5LCAweEIzLCAweDVGLCAweEM0LCAweEM3LAorICAgIDB4NUEsIDB4NjUsIDB4RDYsIDB4MUYsIDB4MjcsIDB4QjAsIDB4RDIsIDB4MjgsIDB4MDMsIDB4N0IsIDB4QUIsIDB4NjIsIDB4NkMsIDB4QUEsIDB4NzgsIDB4QTAsCisgICAgMHgxNSwgMHgwMCwgMHhFOCwgMHgwRSwgMHhBOCwgMHgyOCwgMHhBRiwgMHgxQiwgMHhDRCwgMHgxRSwgMHg1QiwgMHgwOSwgMHgwRSwgMHg0NywgMHgxMCwgMHhBOCwKKyAgICAweDY3LCAweDMyLCAweDFELCAweDA1LCAweDdELCAweEJCLCAweDU3LCAweDgxLCAweDJCLCAweERCLCAweDRCLCAweDZBLCAweDRGLCAweEJGLCAweDlFLCAweDUxLAorICAgIDB4NDUsIDB4QzMsIDB4Q0MsIDB4NzAsIDB4QzYsIDB4OUUsIDB4NzAsIDB4MzAsIDB4ODIsIDB4NjUsIDB4Q0UsIDB4MjMsIDB4Q0QsIDB4NkEsIDB4NEYsIDB4M0IsCisgICAgMHhBNSwgMHg1OCwgMHg2OSwgMHhGRSwgMHgzNywgMHgyNywgMHhFNiwgMHgwMywgMHgwQywgMHg5OSwgMHg4RCwgMHgzMSwgMHhGNSwgMHhDMCwgMHhDOCwgMHhBQywKKyAgICAweDczLCAweENDLCAweDQ4LCAweDg2LCAweEM2LCAweDRCLCAweEM0LCAweEU4LCAweDEzLCAweDBBLCAweEVFLCAweEMwLCAweDE4LCAweEM4LCAweEUzLCAweDAxLAorICAgIDB4OUIsIDB4MkIsIDB4QjUsIDB4NjQsIDB4MDYsIDB4QTksIDB4QjYsIDB4RkQsIDB4QzQsIDB4QzEsIDB4NUQsIDB4NDIsIDB4NDksIDB4RUMsIDB4ODMsIDB4NTMsCisgICAgMHg2MSwgMHhBRiwgMHg3QSwgMHg4RCwgMHg4QywgMHgxRiwgMHg3QywgMHhCRSwgMHhFNSwgMHhBMSwgMHgyQiwgMHg4RSwgMHgyMCwgMHgzMSwgMHg0RiwgMHgzNywKKyAgICAweDZBLCAweDg4LCAweEY4LCAweEJGLCAweDBDLCAweEQ5LCAweEJBLCAweDFCLCAweENCLCAweEM3LCAweDIzLCAweDgxLCAweDg1LCAweDQ3LCAweDkzLCAweEQwLAorICAgIDB4QzAsIDB4MDMsIDB4QkUsIDB4MkUsIDB4M0QsIDB4ODksIDB4RTMsIDB4NzUsIDB4QUIsIDB4NUIsIDB4MzIsIDB4NjUsIDB4ODMsIDB4NDAsIDB4QkYsIDB4MTYsCisgICAgMHhBOSwgMHgyNSwgMHhFNSwgMHg0QSwgMHhGRCwgMHg4NiwgMHhEMiwgMHg1RiwgMHhBMCwgMHhDRiwgMHgxRiwgMHhGRiwgMHg2MywgMHhGRiwgMHg3NSwgMHgyQiwKKyAgICAweEFGLCAweDFBLCAweDBCLCAweDNBLCAweDAzLCAweEUzLCAweDJELCAweDA0LCAweDU3LCAweERGLCAweDU2LCAweDZELCAweDgzLCAweDYxLCAweDgxLCAweEM1LAorICAgIDB4REIsIDB4NTEsIDB4REEsIDB4NzAsIDB4MEIsIDB4NUQsIDB4NUIsIDB4MjEsIDB4QjYsIDB4RjQsIDB4MjAsIDB4MEUsIDB4NDQsIDB4RkQsIDB4N0QsIDB4QTAsCisgICAgMHhEOCwgMHg1QSwgMHhGNCwgMHgxNiwgMHhGMSwgMHg2OSwgMHgxMSwgMHg2QiwgMHgxMywgMHg4RiwgMHhCMywgMHhFQywgMHgxRSwgMHgwQywgMHg3RCwgMHg2MywKKyAgICAweEJGLCAweDk2LCAweERELCAweEEyLCAweDgwLCAweDhGLCAweEU3LCAweDQ3LCAweDU3LCAweDRCLCAweENBLCAweEU1LCAweEYxLCAweEIyLCAweDY2LCAweEI1LAorICAgIDB4REMsIDB4MjcsIDB4NzUsIDB4NzIsIDB4NDksIDB4MEMsIDB4MUUsIDB4NjksIDB4NkQsIDB4M0UsIDB4MzEsIDB4QzQsIDB4MzYsIDB4Q0EsIDB4M0MsIDB4RTksCisgICAgMHg1QiwgMHhDNSwgMHhEQSwgMHg0RSwgMHgyOCwgMHhCQSwgMHgxMiwgMHgzOSwgMHg0MCwgMHg5RSwgMHg5MiwgMHgzRSwgMHg3NywgMHg2MCwgMHhDNywgMHhERiwKKyAgICAweDBGLCAweEU3LCAweERDLCAweDNCLCAweDk3LCAweDM5LCAweEFGLCAweDI0LCAweDQ5LCAweEJBLCAweEIwLCAweEEyLCAweDQ0LCAweDA0LCAweDIwLCAweDNDLAorICAgIDB4RTYsIDB4NDAsIDB4ODcsIDB4MzAsIDB4QzIsIDB4MjcsIDB4MjMsIDB4NjksIDB4NEYsIDB4REUsIDB4MTMsIDB4OTQsIDB4MDksIDB4MTUsIDB4REIsIDB4MzksCisgICAgMHhEQywgMHgwNCwgMHgwNywgMHhFMywgMHgxQiwgMHgwRSwgMHhBQSwgMHg4MCwgMHgwRCwgMHhBNywgMHg1OCwgMHg4NywgMHhEQywgMHgwQywgMHhDMCwgMHhERSwKKyAgICAweDQzLCAweDgxLCAweDcwLCAweDU1LCAweDExLCAweEM4LCAweDY5LCAweDQyLCAweEEyLCAweDcyLCAweDM1LCAweEM0LCAweEI5LCAweDUxLCAweDJBLCAweEQ5LAorICAgIDB4MTksIDB4RUUsIDB4NjgsIDB4RTEsIDB4ODYsIDB4MDIsIDB4NTgsIDB4MjQsIDB4OEQsIDB4RTAsIDB4RjgsIDB4MEQsIDB4MTksIDB4MjEsIDB4MjQsIDB4RjcsCisgICAgMHgyMywgMHgzRCwgMHgwNywgMHhBMCwgMHg1MiwgMHhFMywgMHhFNCwgMHg5OCwgMHhBMywgMHhGRCwgMHgyNSwgMHgwQywgMHg0OCwgMHgyNiwgMHhDMiwgMHg5NywKKyAgICAweEVCLCAweDczLCAweEZCLCAweDAwLCAweDk1LCAweEY5LCAweDEyLCAweDQ1LCAweEQ5LCAweEE4LCAweDQxLCAweEZFLCAweEYwLCAweEQ3LCAweDE4LCAweDdFLAorICAgIDB4NkUsIDB4OUEsIDB4RkEsIDB4NzgsIDB4MTUsIDB4QTYsIDB4NTQsIDB4QjAsIDB4M0EsIDB4OEEsIDB4RkEsIDB4OEYsIDB4RDEsIDB4RTUsIDB4MjIsIDB4QjksCisgICAgMHgxOSwgMHg0MCwgMHhDMSwgMHgxOSwgMHhCQSwgMHg2QiwgMHhENSwgMHgwNCwgMHg2NywgMHg0RSwgMHgxQywgMHhEQSwgMHg4MSwgMHgxNiwgMHgyMiwgMHhFOCwKKyAgICAweEI0LCAweDdDLCAweDk5LCAweEI3LCAweERELCAweDZFLCAweDE5LCAweDE2LCAweEFFLCAweDExLCAweDU4LCAweEU0LCAweDAzLCAweEExLCAweEEyLCAweDZDLAorICAgIDB4REYsIDB4RjMsIDB4MUEsIDB4ODgsIDB4NEIsIDB4QUYsIDB4M0YsIDB4QTIsIDB4QjAsIDB4NTQsIDB4RTcsIDB4NjgsIDB4RTEsIDB4M0IsIDB4QjcsIDB4MkYsCisgICAgMHhGQywgMHhCMywgMHhFNiwgMHg4MCwgMHg2RiwgMHgyQiwgMHg4MiwgMHg3RSwgMHgxNSwgMHg2RSwgMHg2MSwgMHhEMywgMHg1RiwgMHgyNSwgMHhCQiwgMHhFMiwKKyAgICAweEY0LCAweDQxLCAweEQxLCAweEVCLCAweDQ3LCAweDhFLCAweDUwLCAweDBGLCAweDhFLCAweDA0LCAweDgwLCAweEI1LCAweEE3LCAweDlFLCAweEJCLCAweDU1LAorICAgIDB4MDMsIDB4NjksIDB4MTEsIDB4OTgsIDB4QUQsIDB4NjQsIDB4NEUsIDB4NjUsIDB4OUMsIDB4QjIsIDB4MTcsIDB4MkUsIDB4MEEsIDB4RDYsIDB4NEMsIDB4RDksCisgICAgMHg1NSwgMHhGMSwgMHgxMiwgMHgwOCwgMHhCNCwgMHhCNCwgMHg0QywgMHhERSwgMHhFMSwgMHgyNywgMHgxNSwgMHg2NiwgMHgyOCwgMHgyNywgMHg4RSwgMHhERSwKKyAgICAweENFLCAweEYwLCAweDg2LCAweDI4LCAweDJCLCAweDExLCAweDBCLCAweDQ1LCAweDI3LCAweDMxLCAweEUzLCAweDNELCAweDAxLCAweDcxLCAweEJELCAweDIwLAorICAgIDB4NEYsIDB4RTQsIDB4MDMsIDB4QkIsIDB4RkEsIDB4MUIsIDB4NjMsIDB4NjMsIDB4NjIsIDB4NEYsIDB4MEMsIDB4OUQsIDB4NDcsIDB4MjcsIDB4OTcsIDB4MEIsCisgICAgMHgwQSwgMHg1MywgMHg0RSwgMHgwOCwgMHhEQSwgMHg1NSwgMHhERCwgMHgyNywgMHhFQiwgMHg3RCwgMHgzQiwgMHgwNCwgMHgyRSwgMHgyOSwgMHg4RSwgMHg0MCwKKyAgICAweDJGLCAweDZCLCAweENDLCAweDA1LCAweEE4LCAweDJBLCAweDlFLCAweDMzLCAweEY1LCAweEIzLCAweDgyLCAweDA3LCAweDhELCAweDJCLCAweDE2LCAweEExLAorICAgIDB4OEIsIDB4NkYsIDB4QjksIDB4MDYsIDB4NjcsIDB4OEEsIDB4NEIsIDB4OUIsIDB4N0YsIDB4OTIsIDB4MjEsIDB4NjYsIDB4NUYsIDB4ODMsIDB4NTcsIDB4ODEsCisgICAgMHhEMSwgMHg3MSwgMHgwMiwgMHg3QywgMHg5RSwgMHhBMSwgMHhGQiwgMHg2OSwgMHhGNywgMHg3RiwgMHg1NywgMHhBNywgMHg0OSwgMHhCMywgMHg4NiwgMHhBMiwKKyAgICAweDIxLCAweDlDLCAweDcxLCAweEI4LCAweDM5LCAweDQ1LCAweDEyLCAweDQyLCAweDQxLCAweEE0LCAweEYzLCAweDg5LCAweDgwLCAweEY1LCAweDEzLCAweDJGLAorICAgIDB4NzksIDB4REIsIDB4QTAsIDB4MEUsIDB4RUQsIDB4OUEsIDB4NkEsIDB4QTAsIDB4NEMsIDB4MDksIDB4QzksIDB4OTIsIDB4QUMsIDB4MTAsIDB4MkYsIDB4MTAsCisgICAgMHhERiwgMHhFOCwgMHhDQiwgMHgxRCwgMHgwRiwgMHgwRCwgMHhFMSwgMHgyRSwgMHg2MiwgMHg5OSwgMHhBQywgMHhDQiwgMHg1MiwgMHhEMiwgMHgxQiwgMHhBRiwKKyAgICAweEI2LCAweEIwLCAweDc4LCAweEUwLCAweDMxLCAweERDLCAweDZELCAweEJFLCAweDdBLCAweEY5LCAweDAyLCAweEUxLCAweDQ4LCAweEU1LCAweDE0LCAweEQ4LAorICAgIDB4OTAsIDB4OUMsIDB4RTYsIDB4RTMsIDB4RjYsIDB4NkQsIDB4N0IsIDB4RjMsIDB4REIsIDB4NjAsIDB4MDAsIDB4MzksIDB4MzgsIDB4QUIsIDB4RTcsIDB4MTcsCisgICAgMHhFOSwgMHgxNSwgMHhDNiwgMHgzQSwgMHg3RCwgMHg0MCwgMHhERiwgMHhEOSwgMHgwMiwgMHhEQywgMHg4MywgMHg1MCwgMHg3NiwgMHhCMCwgMHgxMiwgMHgxNiwKKyAgICAweDExLCAweDU3LCAweDFELCAweEMxLCAweDIyLCAweEJDLCAweDg4LCAweDQ2LCAweENCLCAweDEzLCAweDVELCAweDhGLCAweDhGLCAweEVELCAweENELCAweEFFLAorICAgIDB4MTUsIDB4QzAsIDB4MkQsIDB4QjAsIDB4MkMsIDB4REEsIDB4RDcsIDB4MzgsIDB4MzUsIDB4MjksIDB4MkQsIDB4RjUsIDB4MEUsIDB4RjAsIDB4RDUsIDB4OTYsCisgICAgMHg3NCwgMHg4MCwgMHg5NiwgMHhBQiwgMHg4MywgMHhBQSwgMHhBOCwgMHhBMSwgMHg1NSwgMHhCNCwgMHg5MCwgMHgzNSwgMHgwRiwgMHg0RiwgMHgxOSwgMHhGOCwKKyAgICAweDUyLCAweDhBLCAweDgxLCAweDRBLCAweERCLCAweDVGLCAweDM0LCAweDI1LCAweEY5LCAweEJCLCAweDQ4LCAweDhCLCAweDY2LCAweDE4LCAweDY0LCAweDMyLAorICAgIDB4QzIsIDB4QUUsIDB4NDQsIDB4OEUsIDB4N0YsIDB4QjEsIDB4N0YsIDB4M0YsIDB4MDksIDB4ODMsIDB4QjQsIDB4MjEsIDB4RUYsIDB4RjYsIDB4NzAsIDB4RjgsCisgICAgMHhFQiwgMHhFNiwgMHg2QSwgMHhGQiwgMHgwQiwgMHg0NiwgMHgyMywgMHgwNSwgMHhFOCwgMHg2RCwgMHgyQiwgMHg4MiwgMHg4NywgMHg4OSwgMHhBNiwgMHg2RCwKKyAgICAweDUzLCAweDg2LCAweEQ2LCAweEFDLCAweDBDLCAweEQzLCAweDZDLCAweDNBLCAweDc3LCAweDRGLCAweDdGLCAweERELCAweDYxLCAweDQ3LCAweDVDLCAweDE3LAorICAgIDB4MDIsIDB4NzksIDB4NDksIDB4MTUsIDB4Q0MsIDB4RTcsIDB4MzMsIDB4RjgsIDB4MDEsIDB4NTEsIDB4NjQsIDB4NDMsIDB4RDcsIDB4MDAsIDB4MjksIDB4MTUsCisgICAgMHg2OSwgMHhEMiwgMHhEQSwgMHhGNiwgMHg2NiwgMHhFMSwgMHg2NSwgMHhDQSwgMHg0MCwgMHhCNSwgMHg4QSwgMHhFMSwgMHgwQiwgMHgxRCwgMHg1NCwgMHgxNywKKyAgICAweEY2LCAweDk1LCAweEQxLCAweEZCLCAweDIxLCAweEQ5LCAweDRCLCAweDM0LCAweEQ4LCAweDBELCAweDQ0LCAweEI3LCAweEVGLCAweDVBLCAweDk0LCAweEZDLAorICAgIDB4RUQsIDB4NzQsIDB4MDEsIDB4RUQsIDB4N0IsIDB4NzAsIDB4NTIsIDB4OEQsIDB4QzksIDB4RjIsIDB4MzMsIDB4NjEsIDB4NzQsIDB4ODMsIDB4QzUsIDB4NEQsCisgICAgMHg3MiwgMHg1MywgMHhGQSwgMHg2OCwgMHhDQSwgMHhBMywgMHg4NSwgMHhFRiwgMHg4QSwgMHg3RSwgMHhFRiwgMHhFQywgMHhGOCwgMHhBQSwgMHgyMiwgMHgyRCwKKyAgICAweDUzLCAweEIyLCAweEE1LCAweENFLCAweDc0LCAweDNELCAweEYxLCAweDg3LCAweENFLCAweEU3LCAweEEwLCAweEFFLCAweEE2LCAweDY4LCAweEIxLCAweEE0LAorICAgIDB4RTEsIDB4M0YsIDB4NjAsIDB4QkMsIDB4OUEsIDB4MDUsIDB4RkYsIDB4MUYsIDB4QTQsIDB4MTIsIDB4N0YsIDB4QzUsIDB4RTcsIDB4ODYsIDB4MTgsIDB4OEEsCisgICAgMHg2NCwgMHg5NCwgMHhEQiwgMHhGQywgMHhCMiwgMHg0QywgMHhGQiwgMHgzRSwgMHgyQSwgMHhCMCwgMHhDNSwgMHg4OCwgMHhGQywgMHgwMCwgMHg2QSwgMHg1RSwKKyAgICAweDMzLCAweDgxLCAweEQ0LCAweDQwLCAweDEyLCAweDQ0LCAweEIwLCAweDI0LCAweEE5LCAweEU2LCAweEZCLCAweDk1LCAweEVGLCAweDU2LCAweEYyLCAweDRCLAorICAgIDB4RjAsIDB4NDYsIDB4OEIsIDB4QkYsIDB4RTYsIDB4OEYsIDB4NzcsIDB4OTAsIDB4MEUsIDB4M0IsIDB4REEsIDB4Q0QsIDB4REMsIDB4NkYsIDB4NzgsIDB4MjUsCisgICAgMHgzNywgMHgyMywgMHg1NSwgMHgzQSwgMHhCQSwgMHgzNSwgMHg3NCwgMHg0MSwgMHgzMSwgMHhFMCwgMHgzNCwgMHhGRiwgMHg4OSwgMHgxNCwgMHg5MiwgMHhDRCwKKyAgICAweDY1LCAweDZFLCAweDIyLCAweDAwLCAweDZDLCAweEZFLCAweDFFLCAweDczLCAweDVDLCAweDU5LCAweEM2LCAweDg4LCAweDMyLCAweEZBLCAweEM0LCAweDlELAorICAgIDB4OEYsIDB4RjAsIDB4NTQsIDB4NkYsIDB4NjQsIDB4QkMsIDB4MTMsIDB4NDQsIDB4OTQsIDB4MDQsIDB4OTIsIDB4REUsIDB4MzAsIDB4Q0EsIDB4OUUsIDB4RTgsCisgICAgMHgyMCwgMHgzQSwgMHgwMywgMHg0MywgMHhGRCwgMHhFMSwgMHg2QiwgMHgxNywgMHgwOSwgMHhDQywgMHhFQywgMHg2MiwgMHgzQiwgMHgxMCwgMHg4RSwgMHg3OSwKKyAgICAweDY0LCAweDE1LCAweDZDLCAweDAxLCAweDA5LCAweDBGLCAweDBELCAweDhFLCAweDc5LCAweEJDLCAweEQ0LCAweEUzLCAweDAxLCAweDJDLCAweEFGLCAweDBDLAorICAgIDB4RjksIDB4NUYsIDB4NTMsIDB4QjgsIDB4QjAsIDB4N0UsIDB4NkQsIDB4QjksIDB4OEQsIDB4MjksIDB4QzksIDB4M0YsIDB4MUUsIDB4ODIsIDB4QjgsIDB4RjAsCisgICAgMHhFQiwgMHhERCwgMHg2QSwgMHhCNCwgMHhCNCwgMHhBRSwgMHg3NCwgMHhDNiwgMHgwQiwgMHg0NSwgMHgxMiwgMHhFQywgMHg5RCwgMHhERCwgMHg3OSwgMHg5NCwKKyAgICAweEMxLCAweDJELCAweDRELCAweDNDLCAweDI1LCAweDc1LCAweEE2LCAweDJFLCAweDdBLCAweDUyLCAweEUxLCAweDMxLCAweEE0LCAweERELCAweDRFLCAweDFCLAorICAgIDB4QkMsIDB4NTQsIDB4ODMsIDB4NTAsIDB4MjcsIDB4QTEsIDB4RjksIDB4QjAsIDB4RkYsIDB4QTEsIDB4NTgsIDB4NzEsIDB4QUQsIDB4NzIsIDB4MDUsIDB4QUIsCisgICAgMHg5MCwgMHhFQywgMHg5OSwgMHg2MywgMHg2OSwgMHg3RiwgMHg4MSwgMHhGMywgMHhFRCwgMHgzMSwgMHg3NiwgMHg1MiwgMHg2QywgMHg1RCwgMHg1NiwgMHhGQSwKKyAgICAweDc0LCAweDI5LCAweEZBLCAweDQwLCAweEQ3LCAweDc4LCAweDc1LCAweDI5LCAweDY2LCAweDI4LCAweDQ2LCAweEIyLCAweDAxLCAweEY2LCAweEFFLCAweDYzLAorICAgIDB4MzcsIDB4QTUsIDB4RjksIDB4OUYsIDB4MEYsIDB4MDgsIDB4NjUsIDB4MjcsIDB4N0QsIDB4NjgsIDB4QjcsIDB4MjgsIDB4RDYsIDB4NUYsIDB4MDQsIDB4NUYsCisgICAgMHhBOCwgMHgzRiwgMHgwRCwgMHgwQiwgMHg0RSwgMHg0QiwgMHg2MCwgMHg3RCwgMHhDQSwgMHhBNCwgMHgyQSwgMHgyMCwgMHg1QywgMHhEMywgMHgwQiwgMHg1OCwKKyAgICAweEZGLCAweDY1LCAweDZGLCAweENGLCAweDVBLCAweDc1LCAweDFBLCAweEI3LCAweDc1LCAweDYyLCAweDBFLCAweEJGLCAweEZBLCAweEQwLCAweEJGLCAweEI5LAorICAgIDB4MTQsIDB4RTksIDB4NTYsIDB4RTcsIDB4MkMsIDB4M0QsIDB4MkMsIDB4N0MsIDB4NUQsIDB4N0UsIDB4QTgsIDB4NEIsIDB4N0YsIDB4NkIsIDB4OTQsIDB4ODQsCisgICAgMHgxNywgMHg4QywgMHg5MCwgMHgyNCwgMHgwNiwgMHhGRCwgMHhFMCwgMHhDRSwgMHhENywgMHgwMywgMHhBQiwgMHgyOSwgMHg5QSwgMHhDRSwgMHgwOSwgMHhBQiwKKyAgICAweEYwLCAweDgzLCAweDIwLCAweDE5LCAweEM0LCAweDA4LCAweEI1LCAweDc0LCAweDQ1LCAweDVDLCAweERCLCAweDk5LCAweEY1LCAweDNELCAweDJBLCAweDlGLAorICAgIDB4NkEsIDB4QjYsIDB4NzAsIDB4QkQsIDB4NkQsIDB4OUMsIDB4OEEsIDB4RjIsIDB4MTgsIDB4NjQsIDB4MTMsIDB4NUQsIDB4OTIsIDB4MDksIDB4NzgsIDB4RDYsCisgICAgMHgwNCwgMHgyQSwgMHhGQiwgMHg3NSwgMHhGNywgMHgwRCwgMHhERSwgMHg5NSwgMHg4MSwgMHg1MiwgMHhCMywgMHg2OSwgMHhGMCwgMHgwRiwgMHg4NCwgMHhBMiwKKyAgICAweEVELCAweDAyLCAweEI1LCAweDc5LCAweDk4LCAweDUxLCAweDY2LCAweDBCLCAweEJELCAweDcyLCAweDZGLCAweEFBLCAweEZFLCAweEFBLCAweDFCLCAweDAzLAorICAgIDB4NEIsIDB4M0QsIDB4MjQsIDB4NTIsIDB4Q0EsIDB4ODEsIDB4NzgsIDB4RkUsIDB4OTEsIDB4QUYsIDB4MzMsIDB4OTAsIDB4MUQsIDB4NDIsIDB4OUIsIDB4MUYsCisgICAgMHhFMCwgMHgyNiwgMHgzOSwgMHgwOSwgMHgyQiwgMHhCRiwgMHg0MSwgMHhERCwgMHhCNCwgMHg5OSwgMHhGNiwgMHgzOSwgMHgyOSwgMHg1QSwgMHhGNiwgMHgyMCwKKyAgICAweDQ2LCAweEIyLCAweDRDLCAweDg5LCAweEY2LCAweDg3LCAweEYwLCAweDkxLCAweDJFLCAweDNDLCAweEUwLCAweDkxLCAweDFFLCAweDRGLCAweDRFLCAweDNFLAorICAgIDB4NDksIDB4QUIsIDB4NzksIDB4NTUsIDB4QTUsIDB4N0QsIDB4RTcsIDB4QUEsIDB4MzUsIDB4MzEsIDB4MUIsIDB4QjEsIDB4NkYsIDB4NzYsIDB4MzAsIDB4QkMsCisgICAgMHhDNiwgMHgzRSwgMHg2QywgMHg5QiwgMHhBQiwgMHg5OSwgMHg4MiwgMHhCNSwgMHhBMiwgMHgzNywgMHhCRCwgMHhBQywgMHgzNywgMHgzOSwgMHhBQiwgMHhBOSwKKyAgICAweENDLCAweEQ5LCAweDY1LCAweEM2LCAweDNELCAweDVFLCAweDhCLCAweDA4LCAweDBCLCAweDBFLCAweEFFLCAweEE4LCAweDQ0LCAweEZDLCAweDMwLCAweDI2LAorICAgIDB4OTIsIDB4M0EsIDB4QUIsIDB4OUUsIDB4QjUsIDB4MTYsIDB4ODUsIDB4RDgsIDB4REEsIDB4NEUsIDB4NTQsIDB4MzYsIDB4NjksIDB4OEUsIDB4NEQsIDB4QjYsCisgICAgMHg2MSwgMHg4MywgMHhBRiwgMHg0NiwgMHg1RiwgMHgxNywgMHg3MSwgMHhGMiwgMHg3QywgMHhEMiwgMHg1MywgMHhEMCwgMHhENywgMHhDMywgMHg1MiwgMHg2QSwKKyAgICAweDhBLCAweDE4LCAweDQwLCAweEI2LCAweDAwLCAweEQ3LCAweDBGLCAweDQxLCAweDBCLCAweEMxLCAweEM1LCAweEMwLCAweEE2LCAweDk4LCAweDU5LCAweDdDLAorICAgIDB4NDUsIDB4MTksIDB4MTEsIDB4REEsIDB4MkMsIDB4RTMsIDB4Q0UsIDB4NTYsIDB4OUUsIDB4QkYsIDB4ODUsIDB4Q0UsIDB4RkEsIDB4RTUsIDB4NjgsIDB4NjYsCisgICAgMHgwNiwgMHhFNiwgMHg1NywgMHg1OCwgMHg3NiwgMHhBRCwgMHhCNiwgMHhDNywgMHhGRSwgMHgyRSwgMHgyRiwgMHhBMSwgMHg2MiwgMHg3RCwgMHg4QywgMHhCOSwKKyAgICAweEM2LCAweEJDLCAweEY5LCAweDBBLCAweDg0LCAweDFBLCAweEI3LCAweEY2LCAweDVDLCAweDc1LCAweDAwLCAweDFGLCAweEEwLCAweDZCLCAweEY5LCAweDU0LAorICAgIDB4NTEsIDB4QjYsIDB4QkQsIDB4QTQsIDB4QzMsIDB4REYsIDB4MjUsIDB4MDcsIDB4OTMsIDB4MzMsIDB4NkIsIDB4OEMsIDB4N0UsIDB4N0MsIDB4QzgsIDB4MTYsCisgICAgMHg3OCwgMHgxQSwgMHhEQSwgMHhDQSwgMHg0OCwgMHg0QSwgMHg3QywgMHg2MSwgMHhBRCwgMHhFRSwgMHgwOCwgMHg1MSwgMHhDQiwgMHhFNCwgMHg5OSwgMHhCMiwKKyAgICAweDJBLCAweDAyLCAweDZGLCAweDBELCAweDg2LCAweDFDLCAweEMxLCAweEQ1LCAweDBDLCAweDU1LCAweDkxLCAweERFLCAweDc3LCAweEYyLCAweEUyLCAweDk2LAorICAgIDB4RUYsIDB4RDcsIDB4MzksIDB4MDgsIDB4NDIsIDB4MjIsIDB4NkQsIDB4MkIsIDB4QTAsIDB4RTQsIDB4QTEsIDB4MzgsIDB4ODYsIDB4NEYsIDB4RTQsIDB4MUEsCisgICAgMHhGMiwgMHgzMCwgMHhDQiwgMHhEOSwgMHgzOCwgMHgxRSwgMHhGMCwgMHgyNywgMHhBQSwgMHgxQSwgMHhBMywgMHhENiwgMHgyQiwgMHhDOCwgMHhFOCwgMHg1RSwKKyAgICAweDMxLCAweEJGLCAweEVCLCAweDNBLCAweDY4LCAweEYyLCAweDk4LCAweDk0LCAweEEwLCAweDhBLCAweDZFLCAweDA3LCAweDJBLCAweDgxLCAweEU3LCAweDAxLAorICAgIDB4RDMsIDB4N0MsIDB4RDgsIDB4NTgsIDB4MTksIDB4OTYsIDB4NTMsIDB4QTgsIDB4M0MsIDB4NzEsIDB4MEUsIDB4NEMsIDB4RkIsIDB4MjQsIDB4N0QsIDB4NjMsCisgICAgMHg0NywgMHg2MSwgMHg5MCwgMHg5NCwgMHg3MSwgMHgxOCwgMHgzOCwgMHgzNSwgMHg4MCwgMHgwMywgMHg0MSwgMHhENCwgMHgzRSwgMHhBOSwgMHgyNywgMHhBRSwKKyAgICAweEI3LCAweDBCLCAweDlBLCAweEQxLCAweERCLCAweEM1LCAweDFGLCAweDM4LCAweDg4LCAweDczLCAweEQyLCAweDNDLCAweEIwLCAweDcyLCAweDYwLCAweDVDLAorICAgIDB4RkQsIDB4RjksIDB4RDMsIDB4M0YsIDB4OTAsIDB4ODksIDB4MkIsIDB4RTIsIDB4NkMsIDB4MDgsIDB4NEUsIDB4QjYsIDB4NEUsIDB4RjEsIDB4NEYsIDB4NUQsCisgICAgMHg4MiwgMHgzQywgMHhDNiwgMHgwOCwgMHg5NiwgMHhBMywgMHhFQiwgMHhGRiwgMHhFQywgMHhGNCwgMHhDNSwgMHhCMSwgMHhDNywgMHgxQiwgMHhGMywgMHg1RSwKKyAgICAweDY3LCAweDZGLCAweDExLCAweEEzLCAweEFDLCAweDE4LCAweEY4LCAweEYzLCAweDBGLCAweDZBLCAweDY0LCAweDAyLCAweDRGLCAweEUyLCAweEU0LCAweDNBLAorICAgIDB4MkEsIDB4MjAsIDB4MjgsIDB4NUIsIDB4NUUsIDB4QUMsIDB4ODMsIDB4OEMsIDB4QTMsIDB4RjEsIDB4NjcsIDB4MEQsIDB4QkEsIDB4OEUsIDB4RUMsIDB4MjUsCisgICAgMHhERSwgMHg3RCwgMHhFRiwgMHhDRiwgMHgyQywgMHgwNiwgMHg3NCwgMHg5RiwgMHg5QSwgMHgzOCwgMHg3MCwgMHg4RCwgMHhEMCwgMHgzRSwgMHhFQSwgMHg5MCwKKyAgICAweDVFLCAweEQxLCAweEFFLCAweERCLCAweDAzLCAweEM3LCAweDhBLCAweEVGLCAweDU1LCAweDU0LCAweDM0LCAweEIyLCAweDE1LCAweDZGLCAweDE3LCAweDYwLAorICAgIDB4MzEsIDB4RTQsIDB4MzIsIDB4MjcsIDB4RjMsIDB4ODIsIDB4QUUsIDB4RkIsIDB4OUUsIDB4NkUsIDB4MjUsIDB4NEEsIDB4OTYsIDB4RkUsIDB4MjMsIDB4NEUsCisgICAgMHhGQiwgMHg0NiwgMHhGQywgMHhCOCwgMHgwMiwgMHhBQiwgMHhENCwgMHhEMywgMHgxRiwgMHgwQiwgMHgyMywgMHg3MiwgMHgxMCwgMHhBRCwgMHg2RiwgMHgxMywKKyAgICAweDU2LCAweEI0LCAweDk1LCAweDIwLCAweEQzLCAweDVBLCAweDQ4LCAweEUwLCAweEM0LCAweEJCLCAweDk2LCAweDRDLCAweDUyLCAweEVBLCAweDI1LCAweDlGLAorICAgIDB4QUUsIDB4RkUsIDB4NDksIDB4M0EsIDB4QTIsIDB4NTQsIDB4OTgsIDB4NTMsIDB4MDYsIDB4RDMsIDB4MUEsIDB4QzIsIDB4NkMsIDB4NUEsIDB4NkQsIDB4RDcsCisgICAgMHgyOCwgMHhERSwgMHg1NCwgMHhEQywgMHhDQywgMHgyRCwgMHg0MiwgMHg0OCwgMHgzRCwgMHgzMywgMHhBNywgMHg5RSwgMHhFRSwgMHg5RSwgMHhBRSwgMHhBQywKKyAgICAweDRELCAweDhCLCAweDBELCAweDk4LCAweDAzLCAweEYwLCAweDRELCAweEY5LCAweDQwLCAweDYyLCAweDEyLCAweDM4LCAweDM0LCAweEE0LCAweDgxLCAweEEzLAorICAgIDB4NTEsIDB4QTIsIDB4REIsIDB4NzYsIDB4REQsIDB4MzMsIDB4RUEsIDB4NkIsIDB4QjEsIDB4NTQsIDB4NkYsIDB4Q0YsIDB4NDIsIDB4NkMsIDB4QUIsIDB4OUQsCisgICAgMHgxNSwgMHg5MywgMHgzQSwgMHgwQywgMHhFQSwgMHhEMCwgMHgwQiwgMHhCQiwgMHg3NywgMHhCMSwgMHhBMCwgMHgyMywgMHhEQSwgMHgxNSwgMHgxMCwgMHhBOSwKKyAgICAweDNFLCAweEU2LCAweDJGLCAweDUyLCAweDQxLCAweDU3LCAweEE4LCAweDg2LCAweEVCLCAweDQzLCAweDk2LCAweDYzLCAweDhELCAweDk4LCAweEUyLCAweEUzLAorICAgIDB4OEYsIDB4MkIsIDB4QTMsIDB4QjQsIDB4QUQsIDB4MkQsIDB4REUsIDB4NzIsIDB4RjAsIDB4MDgsIDB4QkIsIDB4MTksIDB4NDIsIDB4RkIsIDB4QTQsIDB4NTYsCisgICAgMHgxMywgMHhFRiwgMHhGNSwgMHhFMCwgMHg2RCwgMHgyRiwgMHg5RCwgMHg4NywgMHg4MSwgMHgyQywgMHhDQiwgMHhDOSwgMHg3MiwgMHgyMSwgMHgyNywgMHhCNSwKKyAgICAweDIzLCAweEIyLCAweDlGLCAweEM0LCAweDBGLCAweDRFLCAweEJBLCAweDlDLCAweEY0LCAweDg2LCAweEJFLCAweEM3LCAweDlDLCAweEY5LCAweDUzLCAweEE3LAorICAgIDB4RTEsIDB4OTksIDB4QjAsIDB4RjAsIDB4RjksIDB4MzUsIDB4NDcsIDB4MDAsIDB4QjksIDB4QzQsIDB4RUQsIDB4MTEsIDB4MjEsIDB4NUEsIDB4NDgsIDB4QUUsCisgICAgMHg3MSwgMHhDNywgMHhEMywgMHhGQywgMHg3OCwgMHhCQiwgMHg2OSwgMHhFQSwgMHg5QSwgMHhFQSwgMHg2MCwgMHgyQSwgMHg4RCwgMHhFOCwgMHgxNiwgMHgzMywKKyAgICAweDgwLCAweDJGLCAweDM4LCAweEVGLCAweDlFLCAweDA5LCAweDE4LCAweDJELCAweENGLCAweDBGLCAweEQ1LCAweDIzLCAweDhBLCAweEYyLCAweEUwLCAweDJFLAorICAgIDB4NjgsIDB4OTcsIDB4NEYsIDB4MjQsIDB4Q0UsIDB4RDksIDB4RDgsIDB4QzQsIDB4QUUsIDB4Q0MsIDB4OTcsIDB4NTYsIDB4MDEsIDB4MEEsIDB4MkIsIDB4M0EsCisgICAgMHg0MiwgMHg2RCwgMHhCNCwgMHgwNCwgMHhBMiwgMHg0QSwgMHg3OCwgMHg3NywgMHg5RiwgMHhDMiwgMHgxRSwgMHgyNSwgMHgyQywgMHgyRiwgMHg2OSwgMHhDMSwKKyAgICAweDNELCAweDRDLCAweEIyLCAweDhDLCAweDlBLCAweDAyLCAweEI4LCAweDIwLCAweDRFLCAweEJELCAweDdCLCAweDY1LCAweEZDLCAweDdBLCAweERFLCAweDI0LAorICAgIDB4MzAsIDB4MkEsIDB4RjIsIDB4NzksIDB4RDEsIDB4NUUsIDB4NDUsIDB4N0QsIDB4NkQsIDB4NkIsIDB4OTMsIDB4REMsIDB4RjMsIDB4MkEsIDB4RjQsIDB4NDAsCisgICAgMHg2QiwgMHhFMCwgMHgwOCwgMHgwOSwgMHhEMCwgMHgyRSwgMHg5QSwgMHhDQSwgMHg2NCwgMHg0MiwgMHg2MywgMHhGNywgMHg3QiwgMHg4RCwgMHgxNiwgMHg0OSwKKyAgICAweDhGLCAweDAyLCAweEVCLCAweDIyLCAweENCLCAweDhCLCAweEIzLCAweEUxLCAweDNGLCAweDEwLCAweDg5LCAweEFFLCAweDAyLCAweDcyLCAweEEwLCAweDFBLAorICAgIDB4NUUsIDB4RTQsIDB4REQsIDB4ODIsIDB4NzIsIDB4NTAsIDB4NkEsIDB4MDUsIDB4QUIsIDB4MkEsIDB4RkUsIDB4Q0EsIDB4MjcsIDB4NEYsIDB4RjcsIDB4QzYsCisgICAgMHhCRSwgMHhERSwgMHhDNCwgMHg3RCwgMHgwRiwgMHhGNCwgMHg1QywgMHgzOCwgMHg1MCwgMHhEQywgMHgzNywgMHhGMywgMHgxMywgMHhDQSwgMHg1NCwgMHg1NiwKKyAgICAweDMwLCAweDJGLCAweEZGLCAweEIxLCAweEJDLCAweEQxLCAweEVELCAweDE5LCAweEE0LCAweEZDLCAweDg0LCAweEIwLCAweDlFLCAweEMzLCAweDVBLCAweEE3LAorICAgIDB4NjMsIDB4NDMsIDB4N0MsIDB4OEEsIDB4MDYsIDB4NEQsIDB4MDQsIDB4NzIsIDB4MTYsIDB4NkIsIDB4MjIsIDB4QTYsIDB4NzQsIDB4MEUsIDB4MTIsIDB4NDcsCisgICAgMHg1RSwgMHhBMSwgMHg3NCwgMHg3MiwgMHhFRSwgMHg2NSwgMHg5NSwgMHg4RSwgMHgzMCwgMHg2QiwgMHhCRiwgMHg5MiwgMHhFNiwgMHgzRSwgMHhBMCwgMHhCOCwKKyAgICAweDg2LCAweDU1LCAweDU0LCAweEM4LCAweDBBLCAweDIwLCAweEE5LCAweEU5LCAweEFFLCAweDVCLCAweDQ3LCAweDJFLCAweENFLCAweDBBLCAweEQ1LCAweDRCLAorICAgIDB4QUYsIDB4MjIsIDB4QTAsIDB4MjMsIDB4M0UsIDB4NEUsIDB4NzcsIDB4QTcsIDB4NjQsIDB4MDEsIDB4MTUsIDB4NDcsIDB4MjgsIDB4NkEsIDB4RDEsIDB4OTAsCisgICAgMHhDRCwgMHgzMiwgMHg3NCwgMHg3QSwgMHgwMiwgMHg4MCwgMHhFQSwgMHg5MSwgMHgyRSwgMHg2QiwgMHgyMiwgMHg1MiwgMHg2OCwgMHhDMiwgMHg0MCwgMHgxOSwKKyAgICAweENFLCAweEI3LCAweDlBLCAweEEyLCAweEIzLCAweDhBLCAweEY1LCAweEQ4LCAweEQ4LCAweDdCLCAweDNFLCAweDIzLCAweEE5LCAweDMzLCAweDU2LCAweDA2LAorICAgIDB4MUMsIDB4NzQsIDB4NzMsIDB4OTMsIDB4M0UsIDB4OTcsIDB4NUMsIDB4NDEsIDB4NEQsIDB4M0YsIDB4RkYsIDB4OTcsIDB4RDgsIDB4OTQsIDB4MjksIDB4QUYsCisgICAgMHgwNiwgMHhEOSwgMHhDMywgMHhGMSwgMHhENiwgMHg4RCwgMHhBNywgMHhFRSwgMHhBQSwgMHgyNiwgMHhGNywgMHg0RiwgMHg0MywgMHg1RSwgMHg2MCwgMHg4RCwKKyAgICAweDBCLCAweEQ1LCAweEFBLCAweEQ5LCAweDg5LCAweDc5LCAweDA0LCAweDdCLCAweEMzLCAweDkwLCAweDFBLCAweERGLCAweEE3LCAweEIxLCAweEJBLCAweEM1LAorICAgIDB4Q0EsIDB4QUIsIDB4MEMsIDB4QjgsIDB4RTgsIDB4RjAsIDB4NDUsIDB4REMsIDB4ODUsIDB4QjUsIDB4M0IsIDB4QUMsIDB4QTcsIDB4QjIsIDB4NUMsIDB4MjUsCisgICAgMHg1MiwgMHg5MCwgMHgwRCwgMHg0QywgMHhFRiwgMHhGRiwgMHgwNiwgMHgwRiwgMHhFRSwgMHgwRiwgMHg4QSwgMHhFOSwgMHg5MywgMHg2MCwgMHgzRCwgMHg4RCwKKyAgICAweDQ3LCAweEM3LCAweDU1LCAweEQ5LCAweDIzLCAweEFGLCAweDc3LCAweERCLCAweDAxLCAweDY5LCAweEJBLCAweDNELCAweDlCLCAweDYyLCAweDc0LCAweDQ0LAorICAgIDB4OEUsIDB4NjUsIDB4NDAsIDB4NjYsIDB4M0UsIDB4REYsIDB4NTQsIDB4NDUsIDB4OEYsIDB4RjUsIDB4QTgsIDB4OEYsIDB4RDYsIDB4NTEsIDB4NDIsIDB4REUsCisgICAgMHg5RCwgMHgwMiwgMHhEQiwgMHg5MCwgMHhEMywgMHg5MywgMHg4QywgMHhFMCwgMHgwRSwgMHhGQSwgMHgxMSwgMHhDRiwgMHhBOSwgMHhCRCwgMHg5NCwgMHhEQSwKKyAgICAweDBGLCAweDk0LCAweDMzLCAweEY3LCAweEE4LCAweDgwLCAweDYyLCAweDYxLCAweEFDLCAweEU2LCAweDFFLCAweEM2LCAweDgwLCAweDU1LCAweDlELCAweDdDLAorICAgIDB4NUIsIDB4QjgsIDB4QjMsIDB4NjcsIDB4QkIsIDB4NjksIDB4QTYsIDB4NkQsIDB4RTEsIDB4NDIsIDB4RDYsIDB4ODEsIDB4NEUsIDB4MTMsIDB4NjgsIDB4QzAsCisgICAgMHg2QiwgMHgwMSwgMHhFOCwgMHgwRiwgMHhGQiwgMHhENCwgMHgwNywgMHgwOCwgMHhDNywgMHgzMywgMHhBQiwgMHgzQSwgMHg2OCwgMHgyMywgMHgxNCwgMHg4NiwKKyAgICAweEM3LCAweDc2LCAweDEzLCAweEQ1LCAweDM4LCAweEY2LCAweDRDLCAweDkxLCAweDNFLCAweDRGLCAweDEwLCAweEMzLCAweDdBLCAweEQwLCAweDlCLCAweEY2LAorICAgIDB4NTgsIDB4NDIsIDB4RDUsIDB4MTIsIDB4NUEsIDB4Q0UsIDB4NTgsIDB4MUEsIDB4QjAsIDB4QkYsIDB4MjcsIDB4OTYsIDB4RkEsIDB4RTUsIDB4OEMsIDB4NDMsCisgICAgMHhGNywgMHhERSwgMHhCRCwgMHg1RiwgMHhFMywgMHg3OSwgMHg2OSwgMHhEQywgMHg1NywgMHhBNSwgMHgxMiwgMHgyNywgMHg3NywgMHg2MSwgMHg1RSwgMHg5NywKKyAgICAweEQ0LCAweDZGLCAweEY2LCAweDZFLCAweDVCLCAweDQ2LCAweDk4LCAweDhGLCAweDA2LCAweEM5LCAweDU4LCAweEFCLCAweDJELCAweDAyLCAweDhDLCAweDkzLAorICAgIDB4NjEsIDB4N0YsIDB4REYsIDB4MTQsIDB4QjEsIDB4RUMsIDB4RkQsIDB4OTcsIDB4RkUsIDB4ODAsIDB4RDUsIDB4Q0EsIDB4MDgsIDB4NTcsIDB4MjMsIDB4OUYsCisgICAgMHg0OSwgMHgzQSwgMHhFMywgMHg1NiwgMHhEOCwgMHg1QSwgMHgzQywgMHg1MiwgMHg1QSwgMHg0QiwgMHhDMCwgMHg4QywgMHhCMywgMHg3OSwgMHhENywgMHhDNCwKKyAgICAweEZELCAweDQ4LCAweEYzLCAweEVBLCAweDRDLCAweDQwLCAweEY5LCAweDM2LCAweDE1LCAweDQ3LCAweDNCLCAweDE0LCAweDQ4LCAweDUxLCAweEYwLCAweEM2LAorICAgIDB4QkIsIDB4MzAsIDB4QkIsIDB4ODAsIDB4QTMsIDB4NUMsIDB4NkYsIDB4QkQsIDB4QTEsIDB4NEUsIDB4RUMsIDB4NzEsIDB4NTIsIDB4NDQsIDB4OTgsIDB4QjIsCisgICAgMHg4MiwgMHg0OSwgMHgyRCwgMHhFQiwgMHg2MSwgMHgyMiwgMHhFRSwgMHhGQywgMHg2MCwgMHhDQiwgMHgwMSwgMHg1MywgMHhBQSwgMHhGRCwgMHg5QSwgMHhDOCwKKyAgICAweDFCLCAweEU5LCAweEU0LCAweDhDLCAweDJDLCAweDNDLCAweEM4LCAweDBBLCAweDgyLCAweENBLCAweDNDLCAweDkyLCAweEI1LCAweDk2LCAweERBLCAweEYxLAorICAgIDB4NDEsIDB4NzYsIDB4OEQsIDB4MTksIDB4RUQsIDB4M0IsIDB4RUUsIDB4NDQsIDB4QjAsIDB4RDIsIDB4QjMsIDB4RTksIDB4RDUsIDB4OEUsIDB4RDUsIDB4NzAsCisgICAgMHg2NywgMHg3MiwgMHhEMCwgMHgzMywgMHgyQiwgMHhGQywgMHg1MCwgMHg4MywgMHgxQSwgMHg3MiwgMHhBRSwgMHhGRSwgMHhGMCwgMHg4NywgMHgwNywgMHhENywKKyAgICAweDE5LCAweDk3LCAweERCLCAweDk1LCAweEVGLCAweERELCAweEJCLCAweEVDLCAweDNGLCAweEM4LCAweDA4LCAweEJCLCAweDg3LCAweDVDLCAweEIyLCAweDUxLAorICAgIDB4M0YsIDB4RUUsIDB4MjcsIDB4RjQsIDB4QTgsIDB4MkMsIDB4NkMsIDB4M0IsIDB4MEMsIDB4QjksIDB4N0MsIDB4RkIsIDB4NzUsIDB4QTMsIDB4QUUsIDB4MUMsCisgICAgMHhGRCwgMHgxRiwgMHg5OSwgMHhGMiwgMHg1RiwgMHgzMCwgMHgxNiwgMHgwQiwgMHgyNCwgMHhCNywgMHgwMiwgMHhFNSwgMHhERCwgMHg1OSwgMHg4RSwgMHg5OCwKKyAgICAweDkyLCAweDFFLCAweERCLCAweDZDLCAweDZFLCAweENGLCAweDUxLCAweDgxLCAweEUwLCAweEY1LCAweDMyLCAweEFELCAweDVGLCAweENDLCAweEExLCAweDkxLAorICAgIDB4NUYsIDB4MkUsIDB4QUMsIDB4QTAsIDB4QjEsIDB4OUIsIDB4MkYsIDB4QUYsIDB4N0UsIDB4OEUsIDB4MzAsIDB4NzYsIDB4ODIsIDB4RTMsIDB4NzQsIDB4MDEsCisgICAgMHgyQywgMHgyQywgMHhCMywgMHhCMywgMHhBRCwgMHhDMywgMHgzQiwgMHgyQywgMHg0NSwgMHhCMywgMHg0MCwgMHg5NywgMHg0QiwgMHhFQiwgMHhGRCwgMHhDNiwKKyAgICAweDU1LCAweEQ5LCAweDY2LCAweDBBLCAweDRGLCAweDNGLCAweEI0LCAweEU2LCAweDAxLCAweDY4LCAweDlGLCAweDIwLCAweEVDLCAweDk3LCAweEJFLCAweDZDLAorICAgIDB4MDksIDB4RkYsIDB4MjYsIDB4MDksIDB4M0QsIDB4NjYsIDB4MEYsIDB4MTksIDB4MkMsIDB4QUYsIDB4QkQsIDB4QTIsIDB4RjQsIDB4RUEsIDB4RDEsIDB4RjYsCisgICAgMHgzNywgMHg2NCwgMHg4QSwgMHg5RSwgMHg5QSwgMHg3OSwgMHhGQywgMHgyMCwgMHhFQywgMHg1QiwgMHg1OCwgMHg3NCwgMHg4QSwgMHhENywgMHg3OCwgMHg4RSwKKyAgICAweDFGLCAweEJGLCAweEVDLCAweDc4LCAweEMwLCAweDY1LCAweEU4LCAweEQ4LCAweDRBLCAweDcyLCAweEVCLCAweDEzLCAweDRDLCAweEQ4LCAweEU5LCAweDdCLAorICAgIDB4RUMsIDB4NDgsIDB4MDAsIDB4MzMsIDB4NjksIDB4OTIsIDB4REMsIDB4RTksIDB4QkUsIDB4RTUsIDB4QzcsIDB4Q0UsIDB4NTYsIDB4MkUsIDB4OUIsIDB4RDMsCisgICAgMHg0RCwgMHhGRCwgMHhFNywgMHg2OCwgMHhFMSwgMHhDRSwgMHgxOCwgMHg4RCwgMHhEMCwgMHg5MiwgMHgzOSwgMHhFMSwgMHg2OSwgMHg4MywgMHg1NSwgMHg1NCwKKyAgICAweDYyLCAweEU4LCAweDI2LCAweDhCLCAweEFCLCAweEEwLCAweEFDLCAweEIyLCAweEZELCAweEIyLCAweEJCLCAweEIwLCAweEQ0LCAweDFCLCAweEM4LCAweDJGLAorICAgIDB4QTgsIDB4OUUsIDB4OUIsIDB4MjQsIDB4NTYsIDB4QjgsIDB4NkUsIDB4RUUsIDB4MkYsIDB4MzYsIDB4MkUsIDB4RDQsIDB4MkIsIDB4OUEsIDB4MkMsIDB4MDAsCisgICAgMHhFMSwgMHgxOCwgMHg2NywgMHhENiwgMHgxMywgMHgzNSwgMHhGMiwgMHg4RiwgMHg3NywgMHg4OCwgMHgzNiwgMHg0MCwgMHgxRiwgMHg3QiwgMHgxOCwgMHg2QywKKyAgICAweDJCLCAweEU2LCAweDBFLCAweDI2LCAweDMwLCAweDk4LCAweDcxLCAweDIwLCAweEUxLCAweEE1LCAweEY0LCAweDk0LCAweDM2LCAweEVGLCAweDczLCAweDUyLAorICAgIDB4NTksIDB4RjIsIDB4ODcsIDB4NjcsIDB4RkQsIDB4QkEsIDB4NTUsIDB4NDAsIDB4QkUsIDB4M0IsIDB4M0IsIDB4MjUsIDB4ODksIDB4NDAsIDB4NzMsIDB4QkEsCisgICAgMHg2MCwgMHhBRiwgMHg1MCwgMHhCRSwgMHhFQSwgMHhDMywgMHgzMSwgMHgzNCwgMHgzMiwgMHg3MSwgMHhFNCwgMHhFQywgMHgwRSwgMHgyNCwgMHg5RCwgMHg0NiwKKyAgICAweDU2LCAweDMzLCAweEM3LCAweDAxLCAweDk0LCAweEE1LCAweDUxLCAweEQxLCAweEM2LCAweERCLCAweENBLCAweDI2LCAweDhELCAweDg5LCAweEFGLCAweEE5LAorICAgIDB4ODksIDB4N0YsIDB4MjYsIDB4RkIsIDB4NjcsIDB4OTIsIDB4NzMsIDB4MzksIDB4MUEsIDB4MUEsIDB4MUMsIDB4NEUsIDB4RUIsIDB4NzIsIDB4NjgsIDB4OTIsCisgICAgMHg5RiwgMHg3MSwgMHgzNSwgMHgxMywgMHgzOCwgMHgzNiwgMHhGOCwgMHgwRCwgMHhCRiwgMHg5NSwgMHg5RiwgMHgzNSwgMHgwMCwgMHg3OSwgMHg0NywgMHg0MSwKKyAgICAweDYyLCAweDIzLCAweEJBLCAweEY0LCAweENBLCAweEM2LCAweDEyLCAweDdDLCAweDk2LCAweDlELCAweEI4LCAweDQwLCAweDRGLCAweDdFLCAweDMxLCAweDAxLAorICAgIDB4MUUsIDB4QzcsIDB4RkQsIDB4NDksIDB4QjksIDB4QzIsIDB4MkIsIDB4MzUsIDB4MjQsIDB4MkEsIDB4MTMsIDB4ODksIDB4NjIsIDB4NjMsIDB4QkEsIDB4NkMsCisgICAgMHhBOCwgMHg5MywgMHg2RCwgMHg5OSwgMHhFRCwgMHg5QywgMHhFOSwgMHhCMCwgMHhGMSwgMHg4QywgMHg5RCwgMHhBOSwgMHhFRiwgMHhERSwgMHhGMCwgMHg5MiwKKyAgICAweDFBLCAweDNCLCAweEE5LCAweDk0LCAweDM4LCAweDg3LCAweEEyLCAweDUzLCAweDY1LCAweDMxLCAweEFFLCAweDBDLCAweDk2LCAweDY0LCAweEFDLCAweEM4LAorICAgIDB4RjgsIDB4MDMsIDB4NjUsIDB4NTksIDB4NUEsIDB4QUYsIDB4RDcsIDB4OEIsIDB4MEIsIDB4MzEsIDB4RDksIDB4M0EsIDB4MkYsIDB4MUMsIDB4RTMsIDB4NDksCisgICAgMHhGMywgMHhGQSwgMHg4MCwgMHg5RCwgMHgzNCwgMHgwRCwgMHhDMCwgMHhDRSwgMHhCQiwgMHg2RSwgMHg5MCwgMHg2RSwgMHhBNSwgMHhBNywgMHgwRCwgMHhCNCwKKyAgICAweEI4LCAweDA0LCAweDZBLCAweEQ2LCAweDBDLCAweDk1LCAweDc5LCAweDlFLCAweDI3LCAweDQzLCAweERELCAweEQxLCAweDhFLCAweDhGLCAweEUwLCAweDE5LAorICAgIDB4QjUsIDB4QkYsIDB4RDksIDB4MjUsIDB4RUUsIDB4QkIsIDB4M0UsIDB4NzksIDB4MEQsIDB4OUUsIDB4MEIsIDB4MDMsIDB4M0QsIDB4MDksIDB4OUMsIDB4RjEsCisgICAgMHgwMiwgMHgwQSwgMHg4MSwgMHg3QiwgMHhDRSwgMHg5NSwgMHg0NCwgMHg5OSwgMHg3MiwgMHhDNSwgMHgxOCwgMHg0QiwgMHhENCwgMHg5RSwgMHg1RSwgMHg4QiwKKyAgICAweDJELCAweDVGLCAweDFFLCAweDEzLCAweEYxLCAweDk1LCAweENBLCAweDM3LCAweDc1LCAweDQ5LCAweDdELCAweDNBLCAweDFBLCAweDIyLCAweDAyLCAweEFDLAorICAgIDB4M0UsIDB4RkUsIDB4NjIsIDB4RjksIDB4NTksIDB4QjcsIDB4MTEsIDB4ODIsIDB4QjYsIDB4NTUsIDB4ODIsIDB4QzcsIDB4MTMsIDB4QjcsIDB4ODMsIDB4OEMsCisgICAgMHgxRSwgMHg5MCwgMHhCNCwgMHgzRCwgMHg5QiwgMHg1NywgMHhFNywgMHgxRiwgMHg0RSwgMHhCMSwgMHg3MCwgMHhGNCwgMHg5RSwgMHgwNiwgMHgzQiwgMHg5NywKKyAgICAweEY0LCAweEMxLCAweEJBLCAweDNELCAweEFELCAweDUwLCAweDAxLCAweDIxLCAweEJCLCAweDBGLCAweEUxLCAweDYwLCAweDQ5LCAweDI1LCAweDVBLCAweDBGLAorICAgIDB4QTMsIDB4MjQsIDB4MzMsIDB4OTcsIDB4QTQsIDB4QTIsIDB4OEQsIDB4RkUsIDB4OUUsIDB4MTcsIDB4N0QsIDB4NDIsIDB4M0QsIDB4NDAsIDB4QkIsIDB4RTUsCisgICAgMHhGQiwgMHhCMiwgMHhDQSwgMHgyQywgMHg5MywgMHgzOCwgMHgxMywgMHhFQSwgMHg1QywgMHhFQiwgMHg1MywgMHhGRCwgMHhGRSwgMHhEMSwgMHgyQywgMHhCOCwKKyAgICAweEY2LCAweEUyLCAweDBDLCAweERGLCAweEZBLCAweDkzLCAweDJDLCAweDI1LCAweDVDLCAweDYzLCAweDA3LCAweDI3LCAweDExLCAweDRFLCAweDVFLCAweEZBLAorICAgIDB4RDAsIDB4OUQsIDB4MkUsIDB4RTMsIDB4ODUsIDB4QTgsIDB4QzUsIDB4OEIsIDB4N0IsIDB4RkUsIDB4QTAsIDB4OUMsIDB4RkUsIDB4RkUsIDB4RTUsIDB4NjksCisgICAgMHhEOCwgMHg1OSwgMHhBQSwgMHg1MiwgMHg0MCwgMHg3MSwgMHg2QiwgMHgxRCwgMHg1MSwgMHhEQSwgMHgxMywgMHg0OCwgMHhFQywgMHhDRSwgMHgxRSwgMHgyQSwKKyAgICAweEU1LCAweDcwLCAweDY2LCAweEIxLCAweDFGLCAweEE2LCAweDY1LCAweDNFLCAweDk5LCAweDhFLCAweDRCLCAweDRELCAweDdDLCAweDc1LCAweEIxLCAweDQ2LAorICAgIDB4NTEsIDB4MDcsIDB4NkUsIDB4MzEsIDB4N0UsIDB4RTcsIDB4NUQsIDB4RTcsIDB4NjYsIDB4QTYsIDB4NkYsIDB4NjUsIDB4NEUsIDB4QkQsIDB4RUYsIDB4MUUsCisgICAgMHhFQywgMHg5MCwgMHgzNiwgMHhGQSwgMHhEQiwgMHg3MywgMHg1RiwgMHg1NCwgMHg2OCwgMHg5QSwgMHhGRCwgMHhEOSwgMHgzRCwgMHhGMCwgMHhEQywgMHhENSwKKyAgICAweEEzLCAweEJGLCAweDQ1LCAweEJELCAweDI0LCAweDdELCAweEI1LCAweEM0LCAweEM1LCAweDYzLCAweDVGLCAweEJDLCAweDRDLCAweDE5LCAweDFBLCAweEEzLAorICAgIDB4ODQsIDB4NzEsIDB4QkQsIDB4NjMsIDB4OEIsIDB4ODUsIDB4NzEsIDB4MzAsIDB4MkMsIDB4MDAsIDB4NzYsIDB4OTAsIDB4REIsIDB4NDQsIDB4RkMsIDB4ODYsCisgICAgMHg0MCwgMHgxMCwgMHg0QywgMHg0RiwgMHg5RSwgMHhGQiwgMHhDOSwgMHhGMywgMHg2MSwgMHhFRCwgMHg2QSwgMHgzNywgMHg3RiwgMHg3NiwgMHgxRSwgMHg4RCwKKyAgICAweEIyLCAweDMwLCAweDJCLCAweEMxLCAweDlGLCAweDAwLCAweEYwLCAweDU0LCAweDYwLCAweDEzLCAweDc0LCAweDg3LCAweDgzLCAweDkwLCAweENELCAweEYzLAorICAgIDB4NzgsIDB4RDcsIDB4ODQsIDB4QTIsIDB4Q0EsIDB4NDcsIDB4N0YsIDB4MTAsIDB4RDgsIDB4QzUsIDB4RUEsIDB4QTQsIDB4QTcsIDB4NTMsIDB4NDcsIDB4RUYsCisgICAgMHg0MywgMHg0NCwgMHhBNCwgMHhFQiwgMHhENCwgMHg3MywgMHhCOSwgMHgwOCwgMHhCMSwgMHgwNiwgMHhENSwgMHhEMSwgMHhGNSwgMHg5RCwgMHg5MiwgMHgyQywKKyAgICAweEEyLCAweDZDLCAweDY5LCAweDY4LCAweEY2LCAweEQyLCAweEVGLCAweDM1LCAweDFGLCAweDkxLCAweEM4LCAweDhGLCAweDc4LCAweEY1LCAweDJELCAweEI0LAorICAgIDB4ODMsIDB4MkMsIDB4OTcsIDB4M0YsIDB4RjMsIDB4NTEsIDB4NDIsIDB4RTcsIDB4OEMsIDB4RTAsIDB4REMsIDB4MDEsIDB4MzQsIDB4NjYsIDB4MDUsIDB4OUEsCisgICAgMHg2MSwgMHg2RSwgMHg5MCwgMHg1RiwgMHgwQywgMHhDRCwgMHhDOSwgMHg3NCwgMHg4RiwgMHg1QiwgMHhBMCwgMHg0MCwgMHhCNiwgMHhBRiwgMHg0OCwgMHhBQSwKKyAgICAweEQ5LCAweEZBLCAweDA2LCAweDZELCAweENFLCAweDRFLCAweDBFLCAweDYyLCAweDhFLCAweEYzLCAweDIzLCAweEVCLCAweEY1LCAweEU1LCAweDIyLCAweDUwLAorICAgIDB4NzQsIDB4MDYsIDB4MDUsIDB4QTMsIDB4MDAsIDB4RDcsIDB4NUMsIDB4NUUsIDB4NjgsIDB4MUIsIDB4MEYsIDB4QjEsIDB4MzgsIDB4QjAsIDB4NDYsIDB4RTEsCisgICAgMHg3QiwgMHhCNywgMHhBMSwgMHgwRiwgMHg3QiwgMHg5QSwgMHhDMiwgMHhBMywgMHg3OCwgMHgwMywgMHhENSwgMHhBNywgMHg5MywgMHhCMSwgMHg3NiwgMHhFOCwKKyAgICAweEI1LCAweDMyLCAweDhFLCAweDVBLCAweDJFLCAweEEzLCAweENDLCAweEM3LCAweDZCLCAweEFELCAweDg4LCAweEIxLCAweDdDLCAweDY4LCAweEM4LCAweDFBLAorICAgIDB4MDksIDB4QUMsIDB4MTksIDB4QTEsIDB4N0YsIDB4MDAsIDB4QjEsIDB4QzIsIDB4QUIsIDB4MUYsIDB4ODEsIDB4MjksIDB4N0EsIDB4NUMsIDB4RjEsIDB4NTUsCisgICAgMHhGOSwgMHg5NiwgMHg1MiwgMHg1RSwgMHg4QywgMHg1NywgMHg2NSwgMHhEQSwgMHg1QiwgMHhDNiwgMHgwRSwgMHhCMSwgMHhDNiwgMHgwRiwgMHg1MCwgMHg5QywKKyAgICAweDYxLCAweDIwLCAweDdBLCAweDYyLCAweDY4LCAweDUzLCAweDRFLCAweEY5LCAweDQwLCAweEE0LCAweEQ0LCAweDY2LCAweEY4LCAweEM3LCAweDBCLCAweEU2LAorICAgIDB4MDksIDB4QTYsIDB4QkQsIDB4QkYsIDB4QTMsIDB4NTcsIDB4NUUsIDB4RDYsIDB4QTEsIDB4ODQsIDB4NDksIDB4MDUsIDB4NTQsIDB4NjksIDB4QzcsIDB4QTQsCisgICAgMHg2NywgMHgwOCwgMHgzNywgMHgzQSwgMHhEMywgMHhEMywgMHg0MywgMHg4RSwgMHhEMywgMHhEMSwgMHhCRiwgMHhCRCwgMHg2QSwgMHg4RCwgMHgzQSwgMHgxNCwKKyAgICAweDc2LCAweDZGLCAweDA0LCAweERFLCAweDY5LCAweDBELCAweEQ1LCAweDA3LCAweEY0LCAweEVBLCAweDM2LCAweDI4LCAweDlFLCAweDU0LCAweDQ3LCAweDI1LAorICAgIDB4N0QsIDB4MDIsIDB4NTQsIDB4NTMsIDB4RkMsIDB4NjgsIDB4NzIsIDB4NzcsIDB4RTQsIDB4OUUsIDB4NkIsIDB4RjcsIDB4QUMsIDB4RDIsIDB4QkYsIDB4QTcsCisgICAgMHhDNSwgMHgzQywgMHhGNiwgMHg5OSwgMHhFQiwgMHhDNywgMHhBMywgMHgxMSwgMHgzMywgMHhCNiwgMHhCNiwgMHg2MiwgMHg0QSwgMHgzQiwgMHg5MywgMHhDMiwKKyAgICAweEY2LCAweEM3LCAweEYxLCAweDdCLCAweDNGLCAweDZELCAweDJELCAweDEyLCAweDRCLCAweDQ2LCAweEMzLCAweEMyLCAweEM3LCAweDVGLCAweERFLCAweEMwLAorICAgIDB4RkQsIDB4NUUsIDB4Q0QsIDB4M0IsIDB4RDEsIDB4NEMsIDB4NDEsIDB4NzcsIDB4MEEsIDB4NzcsIDB4M0EsIDB4QTgsIDB4QjEsIDB4RUYsIDB4MDIsIDB4NDksCisgICAgMHg1NCwgMHhBMiwgMHgzQiwgMHhBNywgMHg3OSwgMHhFRiwgMHgyQiwgMHg1NiwgMHgzMiwgMHg3RSwgMHg4MSwgMHg3MSwgMHhBNiwgMHg5OSwgMHg1MywgMHg4RCwKKyAgICAweEJGLCAweDA3LCAweDlBLCAweDRCLCAweDcwLCAweDdGLCAweDFELCAweDg0LCAweDk5LCAweENFLCAweDBDLCAweDRGLCAweDdBLCAweDk5LCAweEJBLCAweDk0LAorICAgIDB4NTIsIDB4RkUsIDB4MDYsIDB4REUsIDB4MkEsIDB4RjEsIDB4REYsIDB4NzUsIDB4NDUsIDB4MzgsIDB4MjUsIDB4RDksIDB4QzQsIDB4NkEsIDB4RjEsIDB4NUIsCisgICAgMHgyQiwgMHhBMywgMHg1MCwgMHgwMCwgMHg2OCwgMHhFNywgMHg5QywgMHhCQywgMHg5MCwgMHhEQiwgMHgzOCwgMHhGNywgMHhFQywgMHhCRCwgMHhEQiwgMHgxQiwKKyAgICAweDc3LCAweEZGLCAweEY4LCAweEI4LCAweERCLCAweEU4LCAweEU1LCAweDdGLCAweDcxLCAweEYxLCAweDlCLCAweDgzLCAweDk4LCAweEYzLCAweEUyLCAweDRFLAorICAgIDB4QTYsIDB4QkQsIDB4RTcsIDB4RDcsIDB4RDIsIDB4QkYsIDB4QjEsIDB4ODksIDB4NTQsIDB4M0QsIDB4MzYsIDB4RjAsIDB4NEUsIDB4ODUsIDB4NUYsIDB4MTQsCisgICAgMHhFMywgMHg1OCwgMHg1QiwgMHgyNCwgMHg4NiwgMHg3NSwgMHg4RCwgMHg5OCwgMHgwQywgMHhCQSwgMHg1RCwgMHgyNiwgMHg2MiwgMHhDNCwgMHhDMiwgMHg4NCwKKyAgICAweEE2LCAweEY5LCAweDlCLCAweDQyLCAweDBGLCAweEExLCAweDhELCAweDM5LCAweEYxLCAweDY3LCAweENFLCAweEU3LCAweEI4LCAweDcwLCAweDI0LCAweEI4LAorICAgIDB4RTYsIDB4ODIsIDB4RTgsIDB4QzcsIDB4RjYsIDB4N0IsIDB4RkUsIDB4RDgsIDB4MzgsIDB4Q0YsIDB4MUQsIDB4MEQsIDB4RUEsIDB4N0QsIDB4QkIsIDB4NjUsCisgICAgMHg2MSwgMHg5QiwgMHhGQSwgMHhBMiwgMHhCOCwgMHhBNywgMHg5QiwgMHhBRCwgMHg3NiwgMHgwQiwgMHg5MywgMHgwMCwgMHg1RSwgMHg0MywgMHgxMCwgMHg0QSwKKyAgICAweDVGLCAweDIyLCAweENBLCAweDc0LCAweDhFLCAweEVDLCAweDJCLCAweEI0LCAweDY4LCAweDQ0LCAweDJDLCAweDk1LCAweDRBLCAweERBLCAweERBLCAweEM1LAorICAgIDB4QkUsIDB4OEIsIDB4RkYsIDB4NEMsIDB4QzIsIDB4MEEsIDB4NzQsIDB4RTAsIDB4NkUsIDB4NDUsIDB4QkQsIDB4RDUsIDB4MEEsIDB4NTAsIDB4QjEsIDB4MzMsCisgICAgMHg4RCwgMHg1NywgMHhFOCwgMHhGMCwgMHg3OCwgMHg2RCwgMHgwNSwgMHgyQiwgMHg5QywgMHg1NiwgMHhDNywgMHhCNywgMHhFNCwgMHg2NiwgMHhCOCwgMHg3MiwKKyAgICAweDkwLCAweDkyLCAweEMwLCAweDA3LCAweDdCLCAweDE4LCAweEIxLCAweDE0LCAweDZBLCAweDY0LCAweEVFLCAweEMxLCAweDlGLCAweDBELCAweEI0LCAweDFELAorICAgIDB4RTcsIDB4RjEsIDB4MTcsIDB4NDksIDB4QjEsIDB4ODQsIDB4RDksIDB4MjYsIDB4QTUsIDB4OUEsIDB4RkEsIDB4RjEsIDB4QTMsIDB4NTUsIDB4QzIsIDB4QUEsCisgICAgMHhGNSwgMHhCRSwgMHg0OSwgMHhGNiwgMHg2QywgMHg2NywgMHg5MywgMHgwNCwgMHgwQSwgMHhFMywgMHhDMCwgMHhBMSwgMHg3MiwgMHg4QiwgMHhFNywgMHgwNSwKKyAgICAweEVBLCAweDcwLCAweEVGLCAweDI3LCAweEY0LCAweEMwLCAweEUzLCAweEJFLCAweDU3LCAweEEzLCAweDY2LCAweEFGLCAweDgzLCAweDA0LCAweDBFLCAweEFELAorICAgIDB4MDgsIDB4NzcsIDB4MUYsIDB4QTQsIDB4MUMsIDB4QTUsIDB4RjUsIDB4RUQsIDB4MDMsIDB4QjQsIDB4MEUsIDB4REEsIDB4RUMsIDB4RkQsIDB4OUQsIDB4OEIsCisgICAgMHg4MSwgMHg1QywgMHhERiwgMHhBRSwgMHg1RCwgMHhFQywgMHgwOCwgMHg5NCwgMHg3OCwgMHhBNCwgMHgwRiwgMHgxQSwgMHg3NSwgMHgwQiwgMHgzMiwgMHhFMiwKKyAgICAweDlGLCAweDBCLCAweERGLCAweEQ0LCAweDVELCAweEZFLCAweEY4LCAweDQzLCAweDVFLCAweEM1LCAweEMwLCAweDhDLCAweEJDLCAweEFCLCAweERFLCAweDMzLAorICAgIDB4MzgsIDB4QTAsIDB4NzYsIDB4ODYsIDB4OTQsIDB4RjAsIDB4RjAsIDB4NDAsIDB4RDQsIDB4M0YsIDB4ODIsIDB4RUQsIDB4M0YsIDB4MkMsIDB4NUEsIDB4NkYsCisgICAgMHhCMywgMHhFOSwgMHg0QywgMHg1RCwgMHhFNSwgMHhBQiwgMHhENSwgMHhBQiwgMHg4OSwgMHg5RCwgMHgwQSwgMHgzNywgMHg5RiwgMHhDMCwgMHg4NCwgMHhGNiwKKyAgICAweDgxLCAweEI3LCAweDlCLCAweDVDLCAweDFBLCAweEM0LCAweDQwLCAweDA2LCAweDI5LCAweEM2LCAweDYyLCAweENFLCAweDA3LCAweDFCLCAweDEzLCAweEJBLAorICAgIDB4ODEsIDB4REYsIDB4RUUsIDB4RjksIDB4RDMsIDB4RTcsIDB4QzEsIDB4OUEsIDB4N0MsIDB4NDMsIDB4MEUsIDB4ODMsIDB4QjAsIDB4NEUsIDB4Q0QsIDB4OEUsCisgICAgMHhCNCwgMHgzNCwgMHhCRiwgMHhFRiwgMHg3NCwgMHg0RCwgMHhFMCwgMHhGNCwgMHhCMywgMHgyNSwgMHg5MywgMHhBQywgMHhDRSwgMHgyMCwgMHg3QiwgMHgyMiwKKyAgICAweDZFLCAweEFBLCAweDc1LCAweDE0LCAweENBLCAweEE4LCAweDA5LCAweDJBLCAweENFLCAweEUwLCAweDU3LCAweDVFLCAweDNBLCAweENBLCAweEY1LCAweDExLAorICAgIDB4NUQsIDB4QzYsIDB4MDgsIDB4NkQsIDB4QjEsIDB4RDgsIDB4NEMsIDB4OTAsIDB4NEEsIDB4NUEsIDB4NEIsIDB4MUYsIDB4OTgsIDB4RDYsIDB4ODcsIDB4RjIsCisgICAgMHhENSwgMHg4MiwgMHg4NiwgMHgxNiwgMHhBNSwgMHgwMSwgMHhFQSwgMHhGQywgMHg3OCwgMHhGMywgMHhGOSwgMHhFMiwgMHgzQywgMHg3NCwgMHhDNCwgMHhGQywKKyAgICAweDlCLCAweDhELCAweDJDLCAweDM2LCAweDg3LCAweEU2LCAweDU3LCAweDhDLCAweDVELCAweEVBLCAweDhGLCAweDk2LCAweDg1LCAweDlBLCAweEVGLCAweDE4LAorICAgIDB4MzQsIDB4MzYsIDB4QzAsIDB4NDYsIDB4N0MsIDB4NzcsIDB4RDYsIDB4QkYsIDB4MjUsIDB4QTIsIDB4RTcsIDB4OTUsIDB4RkEsIDB4ODIsIDB4REQsIDB4MTEsCisgICAgMHgyQiwgMHhBQywgMHg5RCwgMHhCOCwgMHg3QiwgMHgyMSwgMHhCNywgMHg1MSwgMHhGQywgMHgyMSwgMHgyNCwgMHhBNSwgMHgyMCwgMHhENCwgMHg4OSwgMHhGMCwKKyAgICAweEZGLCAweDMxLCAweDFCLCAweDNFLCAweDI5LCAweDEwLCAweDAwLCAweEZBLCAweEVBLCAweDZFLCAweEE3LCAweEEwLCAweDRFLCAweDFFLCAweDIxLCAweERGLAorICAgIDB4N0YsIDB4ODQsIDB4MTYsIDB4NzcsIDB4OEIsIDB4RjEsIDB4RkUsIDB4QUIsIDB4NEUsIDB4QkQsIDB4RjQsIDB4QTEsIDB4MkIsIDB4QTMsIDB4OEIsIDB4N0EsCisgICAgMHg0NiwgMHhGMiwgMHhEMywgMHg5MiwgMHgyMywgMHhCQiwgMHgyMywgMHgzMCwgMHgxMCwgMHg3QSwgMHg2OSwgMHgzOCwgMHg2QywgMHhCQSwgMHhGMywgMHhCRCwKKyAgICAweERGLCAweEY2LCAweENFLCAweEM3LCAweDlBLCAweEE3LCAweDIwLCAweEI4LCAweEU5LCAweEU2LCAweDE0LCAweEVFLCAweEZELCAweDNFLCAweDg5LCAweEY4LAorICAgIDB4OTMsIDB4NkYsIDB4N0IsIDB4REUsIDB4RDksIDB4QjQsIDB4M0EsIDB4RUQsIDB4QTksIDB4NEIsIDB4MDUsIDB4MkUsIDB4NEYsIDB4RTQsIDB4MDcsIDB4MEYsCisgICAgMHg0NSwgMHgzRiwgMHg5NSwgMHg2MiwgMHg2QywgMHg0QiwgMHgyMywgMHhBMywgMHhCRiwgMHg3NCwgMHgxMywgMHgxNiwgMHhGRCwgMHg4OCwgMHhEQiwgMHhGOCwKKyAgICAweEM2LCAweEIxLCAweEE2LCAweDcyLCAweDIwLCAweENDLCAweEUyLCAweDY3LCAweDkyLCAweDMwLCAweEUwLCAweDJDLCAweEFGLCAweERBLCAweEQ5LCAweDI3LAorICAgIDB4OTIsIDB4MDEsIDB4OTcsIDB4QUIsIDB4QkUsIDB4Q0IsIDB4MkMsIDB4MEQsIDB4MDEsIDB4NjcsIDB4M0YsIDB4RTMsIDB4N0EsIDB4NUIsIDB4RTAsIDB4MDYsCisgICAgMHgwOCwgMHhCMywgMHgyNSwgMHg0RSwgMHg3OCwgMHg4MCwgMHg3NiwgMHg2NywgMHhGQiwgMHg0QywgMHhEMCwgMHg1RSwgMHhGRCwgMHg1QSwgMHg2NCwgMHhENywKKyAgICAweDBDLCAweDA5LCAweEMyLCAweDIxLCAweDU3LCAweDA2LCAweDYzLCAweDVBLCAweDU5LCAweDJFLCAweEYxLCAweDNGLCAweDA5LCAweDBELCAweDYwLCAweERGLAorICAgIDB4RUQsIDB4REEsIDB4QTcsIDB4NzUsIDB4NzAsIDB4QjcsIDB4RDcsIDB4MEEsIDB4NjYsIDB4MkQsIDB4QUMsIDB4QjgsIDB4MkYsIDB4QTMsIDB4OTYsIDB4MTksCisgICAgMHhCMCwgMHg1QiwgMHgyOSwgMHg5QywgMHg2RSwgMHg1MCwgMHhDMCwgMHgwMCwgMHgxNCwgMHhDNSwgMHgzQiwgMHhBMywgMHg2QywgMHgzQSwgMHg2QSwgMHhBQiwKKyAgICAweDk3LCAweDk2LCAweDQ3LCAweDcyLCAweEU3LCAweDIxLCAweDc0LCAweDhGLCAweEQ5LCAweEI0LCAweENFLCAweERDLCAweDgxLCAweDZFLCAweDQ4LCAweDk2LAorICAgIDB4NTksIDB4QjcsIDB4QzksIDB4RjMsIDB4OTksIDB4RDAsIDB4OEQsIDB4MTAsIDB4M0IsIDB4NjksIDB4RDAsIDB4RjUsIDB4QTcsIDB4MzEsIDB4OUQsIDB4QTgsCisgICAgMHgzNiwgMHg2MywgMHhCNiwgMHhCQywgMHg4QSwgMHhDOSwgMHgwMywgMHgzQSwgMHhDQywgMHhEQywgMHhGQSwgMHg5QSwgMHhBQiwgMHg0NywgMHhDNCwgMHgxOSwKKyAgICAweDgzLCAweEQ2LCAweEQzLCAweDFGLCAweDZFLCAweDYwLCAweEQ5LCAweENDLCAweDk4LCAweEU1LCAweDUzLCAweEM2LCAweEMzLCAweEU4LCAweEE3LCAweEYzLAorICAgIDB4QjksIDB4RjEsIDB4QUMsIDB4QTksIDB4QjksIDB4MDUsIDB4NDcsIDB4NDYsIDB4MjEsIDB4M0YsIDB4MEMsIDB4Q0MsIDB4NjAsIDB4NUMsIDB4RjgsIDB4OUUsCisgICAgMHhBOCwgMHg0MiwgMHg1RCwgMHhEOSwgMHhDOCwgMHhGMywgMHg5RSwgMHg3NSwgMHhBRCwgMHgyMiwgMHg2OCwgMHg2NywgMHgzNywgMHhGMiwgMHg4RiwgMHhEMSwKKyAgICAweDdDLCAweDVELCAweDA3LCAweEQ4LCAweDY5LCAweDZDLCAweDM0LCAweEYwLCAweDdFLCAweDcxLCAweDQ3LCAweDI5LCAweEExLCAweDhELCAweDA3LCAweDNGLAorICAgIDB4NjAsIDB4NzUsIDB4QzgsIDB4MTYsIDB4RUYsIDB4MTEsIDB4RTMsIDB4RkQsIDB4NDgsIDB4MzUsIDB4RUQsIDB4Q0EsIDB4MkMsIDB4MzcsIDB4Q0YsIDB4RUEsCisgICAgMHgzNywgMHg2RCwgMHhBMCwgMHhGRiwgMHg3QSwgMHg0NiwgMHgxNSwgMHg0MSwgMHg2QiwgMHhFMywgMHg0MCwgMHg2RiwgMHgyNywgMHgwMiwgMHhBNCwgMHgyQiwKKyAgICAweDM0LCAweDBCLCAweDA3LCAweEUzLCAweDY5LCAweDRFLCAweEYzLCAweEYzLCAweEFDLCAweDRBLCAweEE3LCAweEU0LCAweEJCLCAweDRFLCAweDhFLCAweEFGLAorICAgIDB4QzAsIDB4NzYsIDB4OUIsIDB4RDMsIDB4QjEsIDB4OTMsIDB4RjMsIDB4ODcsIDB4MzgsIDB4N0IsIDB4MEIsIDB4ODQsIDB4RkEsIDB4REEsIDB4ODUsIDB4MzIsCisgICAgMHgwNiwgMHg3QywgMHhGRCwgMHgyRSwgMHhGMCwgMHg5MCwgMHgzMSwgMHhBRSwgMHgzRSwgMHg5QiwgMHhCRiwgMHgwQSwgMHhERiwgMHhBNCwgMHhBOSwgMHgzQiwKKyAgICAweDQzLCAweDE2LCAweDMxLCAweDA0LCAweEQ2LCAweDJGLCAweDlGLCAweDdBLCAweDc5LCAweEQ1LCAweDc5LCAweDVELCAweDFDLCAweDRBLCAweDZBLCAweDE5LAorICAgIDB4MkEsIDB4RDAsIDB4MDUsIDB4NjksIDB4RkUsIDB4QUMsIDB4NzgsIDB4NDEsIDB4RTcsIDB4RUEsIDB4RTcsIDB4REQsIDB4MjMsIDB4QTcsIDB4N0MsIDB4NTksCisgICAgMHg3RiwgMHg2QiwgMHhEQSwgMHgzMCwgMHg3NywgMHgxNiwgMHhFOCwgMHgwMiwgMHgzRCwgMHhCNCwgMHg0RCwgMHhCMywgMHhDQywgMHg0MSwgMHg1NiwgMHgwNSwKKyAgICAweDFGLCAweEQ3LCAweDA3LCAweDBCLCAweDVCLCAweDMwLCAweDZDLCAweDQ1LCAweDdFLCAweDQxLCAweEU0LCAweDc5LCAweDBCLCAweDVBLCAweDE3LCAweEY1LAorICAgIDB4RDYsIDB4MzAsIDB4OUUsIDB4QUMsIDB4MkYsIDB4NkYsIDB4OTksIDB4MTgsIDB4NEUsIDB4MTEsIDB4MzksIDB4RjQsIDB4MjksIDB4NTUsIDB4ODIsIDB4MDgsCisgICAgMHhGOCwgMHgyRCwgMHhFNiwgMHgwNiwgMHhFOCwgMHgyRCwgMHg2MiwgMHhENSwgMHg2NiwgMHhCNCwgMHg1RSwgMHg2MiwgMHg5NiwgMHgxNiwgMHhBNiwgMHhEOCwKKyAgICAweDY5LCAweDA0LCAweDIzLCAweDM1LCAweEQwLCAweDRGLCAweEEwLCAweDdGLCAweEM1LCAweEU0LCAweDQ5LCAweDZDLCAweDY0LCAweDRBLCAweEQ4LCAweEMzLAorICAgIDB4NEQsIDB4NTEsIDB4QkMsIDB4NDksIDB4MTIsIDB4NzYsIDB4OEEsIDB4RUMsIDB4QjIsIDB4MDMsIDB4OTMsIDB4QjgsIDB4MkQsIDB4NDIsIDB4OTEsIDB4MDksCisgICAgMHhBRSwgMHhDMiwgMHg1MCwgMHhEMiwgMHg3MiwgMHgzQSwgMHgxMSwgMHgyNiwgMHhGOCwgMHg0MywgMHgyQSwgMHhENSwgMHgxMywgMHg0RSwgMHg0RCwgMHgxRSwKKyAgICAweDI4LCAweEU1LCAweEFGLCAweENDLCAweENFLCAweDZELCAweDRBLCAweDA2LCAweEI0LCAweDJFLCAweEY3LCAweDQwLCAweDg5LCAweDMzLCAweDYxLCAweDExLAorICAgIDB4N0EsIDB4NEMsIDB4NzUsIDB4QzUsIDB4N0QsIDB4MkUsIDB4REIsIDB4MUQsIDB4RTcsIDB4QTAsIDB4RDcsIDB4OTYsIDB4REQsIDB4MzcsIDB4RjMsIDB4NDgsCisgICAgMHg2MiwgMHhCQiwgMHhBRiwgMHhCMiwgMHgyQywgMHg1NiwgMHg5OSwgMHgyMCwgMHg0NSwgMHgxQSwgMHgyMCwgMHg5NiwgMHg2RiwgMHg1RSwgMHg3NCwgMHg3QiwKKyAgICAweDA0LCAweERBLCAweDY3LCAweDA1LCAweDBGLCAweDRELCAweEZDLCAweDdFLCAweEUwLCAweDY1LCAweDEzLCAweERCLCAweDA2LCAweDVFLCAweDUwLCAweDkzLAorICAgIDB4QTQsIDB4QTIsIDB4MUQsIDB4MTAsIDB4N0QsIDB4NjEsIDB4MjUsIDB4M0QsIDB4MTksIDB4Q0QsIDB4QzksIDB4NTEsIDB4RTIsIDB4RjEsIDB4NkEsIDB4QkMsCisgICAgMHhDRiwgMHg3RCwgMHhCMywgMHgwRiwgMHg3NywgMHg5OCwgMHg3QSwgMHgwOSwgMHg5QywgMHg0MCwgMHgwMywgMHg0OCwgMHgxNywgMHhFMiwgMHg3NSwgMHgxMCwKKyAgICAweDU5LCAweEFDLCAweDlGLCAweDRBLCAweEVDLCAweDYzLCAweDBGLCAweEQ5LCAweDNBLCAweDc1LCAweDBELCAweENELCAweEQ0LCAweDRFLCAweDdGLCAweEE1LAorICAgIDB4RTMsIDB4RkIsIDB4QTMsIDB4NUUsIDB4MEEsIDB4NkUsIDB4RDIsIDB4RDgsIDB4MDUsIDB4M0QsIDB4ODQsIDB4MjAsIDB4NUUsIDB4Q0UsIDB4QkUsIDB4RkMsCisgICAgMHg5QSwgMHgyOSwgMHg4NSwgMHgwOCwgMHhENiwgMHgwNywgMHgwNywgMHg0QiwgMHgwMSwgMHg2MCwgMHgwNywgMHhFNywgMHhGNSwgMHg4MywgMHg5RSwgMHgzNSwKKyAgICAweDEyLCAweEVGLCAweERELCAweEE2LCAweDk3LCAweDUxLCAweEQxLCAweDM5LCAweDExLCAweDIyLCAweDQ1LCAweEIwLCAweDVELCAweENBLCAweDI5LCAweDY5LAorICAgIDB4MTIsIDB4RTMsIDB4MEMsIDB4QTcsIDB4NDEsIDB4NTcsIDB4OTksIDB4RjIsIDB4RDksIDB4MDUsIDB4QUQsIDB4ODcsIDB4REUsIDB4QzcsIDB4MkMsIDB4QjMsCisgICAgMHgyQiwgMHg2MywgMHg4NywgMHg5RiwgMHhDNSwgMHhFRSwgMHhBQiwgMHhGNSwgMHgyQSwgMHhGMSwgMHg5QiwgMHg1NCwgMHhCNiwgMHg1NCwgMHhDMCwgMHg0MSwKKyAgICAweDg4LCAweDZFLCAweDU0LCAweDYzLCAweDg1LCAweEQzLCAweEZCLCAweEVELCAweEFELCAweDQ1LCAweEVFLCAweDkxLCAweEQzLCAweDY1LCAweDRFLCAweDVELAorICAgIDB4RjcsIDB4RTEsIDB4RjksIDB4NTYsIDB4MjksIDB4MTIsIDB4OUQsIDB4M0MsIDB4RkUsIDB4OTEsIDB4NzYsIDB4QkUsIDB4NDksIDB4RDUsIDB4NjIsIDB4NjEsCisgICAgMHgyNCwgMHg0RiwgMHg1QywgMHg2QiwgMHg5QSwgMHhGQywgMHhEMiwgMHgzMSwgMHg5OCwgMHgyNCwgMHhBNSwgMHg1QSwgMHg3QSwgMHg5OCwgMHhGNSwgMHgwQiwKKyAgICAweEZFLCAweEQ0LCAweDQ0LCAweEYxLCAweEUyLCAweDg4LCAweEU3LCAweDAwLCAweEE3LCAweDU2LCAweEQ2LCAweEM5LCAweEM4LCAweDBDLCAweDY2LCAweDIwLAorICAgIDB4Q0MsIDB4OTIsIDB4M0IsIDB4OEEsIDB4NTAsIDB4NjUsIDB4MDksIDB4NjEsIDB4NTQsIDB4MDYsIDB4QTMsIDB4N0QsIDB4NzMsIDB4RkIsIDB4OUUsIDB4NDUsCisgICAgMHhEOCwgMHg2NywgMHgwRiwgMHg3OSwgMHhGNiwgMHhGOSwgMHhBQiwgMHg3MiwgMHg2MSwgMHhBMCwgMHgzNiwgMHhFMiwgMHg5NSwgMHgzMiwgMHg1OCwgMHhFNiwKKyAgICAweDQ3LCAweEE2LCAweDUzLCAweDI3LCAweDY4LCAweDM2LCAweEI1LCAweDRCLCAweDU5LCAweDYxLCAweDA4LCAweEVBLCAweEU5LCAweEU4LCAweDBBLCAweDI0LAorICAgIDB4RkQsIDB4OTYsIDB4NUEsIDB4MDIsIDB4REIsIDB4QzIsIDB4QjQsIDB4ODgsIDB4RjIsIDB4MTUsIDB4M0MsIDB4REMsIDB4RUYsIDB4NTEsIDB4MzQsIDB4NDMsCisgICAgMHhEMiwgMHhGNCwgMHg5RCwgMHg5RSwgMHhENCwgMHg1QywgMHg5OCwgMHg1QiwgMHhCMiwgMHhCOCwgMHg3MCwgMHgzOSwgMHgyNiwgMHg1RSwgMHg4RCwgMHhBRCwKKyAgICAweDlCLCAweDM3LCAweDE4LCAweEI5LCAweDc0LCAweEFDLCAweEM2LCAweEQwLCAweDA3LCAweDFELCAweDEzLCAweDIwLCAweDY2LCAweDM2LCAweDI4LCAweDUyLAorICAgIDB4NjIsIDB4RDksIDB4MzYsIDB4NTQsIDB4QUUsIDB4MTQsIDB4RjQsIDB4NjIsIDB4NTAsIDB4QTUsIDB4OTYsIDB4OUIsIDB4QkUsIDB4QjgsIDB4MzMsIDB4RkIsCisgICAgMHhEMywgMHhEQywgMHhCMywgMHg3NCwgMHg5MCwgMHgyQiwgMHgzQiwgMHhBQywgMHgyNywgMHhEOCwgMHg4MywgMHg4RSwgMHhGOSwgMHg2RCwgMHgzNSwgMHg0MiwKKyAgICAweEQ1LCAweDYwLCAweDQ2LCAweDMzLCAweDkzLCAweEY4LCAweEI0LCAweDc3LCAweEIwLCAweEJGLCAweENELCAweEFFLCAweDMzLCAweDlDLCAweDhBLCAweDdBLAorICAgIDB4MDYsIDB4MzMsIDB4MDUsIDB4MEMsIDB4MjcsIDB4NjEsIDB4MzAsIDB4MzEsIDB4MTMsIDB4RDMsIDB4MTUsIDB4QjEsIDB4N0MsIDB4MjMsIDB4MjIsIDB4OTksCisgICAgMHhGRiwgMHg0NywgMHhCNCwgMHhBMiwgMHgxRCwgMHgzOSwgMHg5QSwgMHhFMSwgMHg1MiwgMHhDQywgMHgxQSwgMHg1MywgMHhGMywgMHhBNCwgMHhFNywgMHgyQSwKKyAgICAweDRBLCAweDEyLCAweEU1LCAweEE0LCAweDhELCAweDBELCAweEM0LCAweEE2LCAweEZFLCAweDRGLCAweDQ1LCAweDJELCAweDJDLCAweEEyLCAweDY0LCAweDM5LAorICAgIDB4NDEsIDB4QTUsIDB4QzAsIDB4QjcsIDB4ODQsIDB4QTUsIDB4OTgsIDB4NjcsIDB4MkEsIDB4QTksIDB4MkQsIDB4N0IsIDB4QUYsIDB4OEUsIDB4REMsIDB4RTMsCisgICAgMHg1OCwgMHhBQSwgMHgxNywgMHg1QiwgMHhDMywgMHg2OSwgMHhFNywgMHg4OCwgMHg2NCwgMHhCOCwgMHg3MiwgMHg1QSwgMHhBNSwgMHhDRCwgMHgwNywgMHgyNywKKyAgICAweDFCLCAweEMzLCAweDM3LCAweDk5LCAweDlCLCAweDU3LCAweEU3LCAweDFGLCAweDMyLCAweEVELCAweEI1LCAweEQ2LCAweDM5LCAweDVDLCAweDQwLCAweDAzLAorICAgIDB4NkEsIDB4MjAsIDB4NTEsIDB4QzMsIDB4NEUsIDB4MzksIDB4OUMsIDB4NUYsIDB4NzUsIDB4MkIsIDB4RkYsIDB4Q0EsIDB4QTEsIDB4NDMsIDB4ODMsIDB4QzMsCisgICAgMHhBOCwgMHg1RiwgMHgwRSwgMHhDNSwgMHhCRCwgMHg4OCwgMHhFNiwgMHhBOSwgMHg4OSwgMHgwNywgMHg2MCwgMHhBMSwgMHgyMSwgMHg3NiwgMHhGNywgMHhCRSwKKyAgICAweDY1LCAweEJDLCAweDMxLCAweDU5LCAweDg4LCAweDAwLCAweEU1LCAweEE3LCAweEUzLCAweDdBLCAweDYxLCAweEU2LCAweDg3LCAweDVDLCAweDRFLCAweEQxLAorICAgIDB4MjksIDB4REUsIDB4RDYsIDB4NEIsIDB4Q0YsIDB4NjQsIDB4OTMsIDB4MzEsIDB4RTksIDB4NzIsIDB4OTEsIDB4OUYsIDB4QjMsIDB4MUUsIDB4NkUsIDB4OTgsCisgICAgMHgxRCwgMHhGNSwgMHg4RiwgMHhGQSwgMHhGRCwgMHg3QywgMHhBMSwgMHgxNiwgMHgzOSwgMHg3NiwgMHgxNSwgMHg1MiwgMHg5OSwgMHg0MCwgMHg1QSwgMHgyRSwKKyAgICAweDQwLCAweDcxLCAweDA2LCAweDUzLCAweEE5LCAweDg1LCAweDk4LCAweDY3LCAweDVELCAweDM4LCAweDQ1LCAweDUwLCAweEFGLCAweEEzLCAweDI3LCAweDQ2LAorICAgIDB4MTIsIDB4Q0YsIDB4NzksIDB4QzksIDB4MjAsIDB4MzksIDB4RTksIDB4MzcsIDB4QkUsIDB4RDEsIDB4QzMsIDB4OEEsIDB4RkEsIDB4N0UsIDB4NkQsIDB4MzQsCisgICAgMHg3OSwgMHg2NCwgMHg5RiwgMHg1NywgMHg3OCwgMHhGMSwgMHhEMiwgMHg2MSwgMHgyRSwgMHhENCwgMHg4MCwgMHgzQiwgMHhGMywgMHgxMywgMHg5RSwgMHgwNSwKKyAgICAweDE4LCAweDBBLCAweDVDLCAweDdCLCAweDJFLCAweEFBLCAweEI4LCAweEE2LCAweENCLCAweDExLCAweDg1LCAweDQ4LCAweEJBLCAweDc4LCAweDdCLCAweDNBLAorICAgIDB4OEUsIDB4MUEsIDB4OTEsIDB4QjcsIDB4OTcsIDB4NjEsIDB4QjUsIDB4OEUsIDB4RUIsIDB4RDQsIDB4NDYsIDB4RTEsIDB4NjgsIDB4MkUsIDB4NjYsIDB4QzYsCisgICAgMHg4RiwgMHhGMywgMHhDQSwgMHgyOSwgMHg1QiwgMHg3RSwgMHhBQSwgMHgyMiwgMHg3MSwgMHhDQSwgMHg4QSwgMHhCQiwgMHhENSwgMHgwRCwgMHgxNCwgMHhBNSwKKyAgICAweDk4LCAweEQ3LCAweDYzLCAweDYwLCAweEMyLCAweDlBLCAweDMwLCAweEQ2LCAweDVBLCAweEU4LCAweENDLCAweEZBLCAweENDLCAweDA2LCAweDA4LCAweDYzLAorICAgIDB4MUUsIDB4MTYsIDB4NEMsIDB4M0QsIDB4RjUsIDB4NjgsIDB4REQsIDB4REMsIDB4RTIsIDB4RkIsIDB4REUsIDB4M0YsIDB4OTAsIDB4RDYsIDB4N0IsIDB4QzUsCisgICAgMHgwOSwgMHhGNywgMHgzNCwgMHg1QSwgMHgyMywgMHhBMCwgMHg0NSwgMHg4OCwgMHg1QywgMHg4NiwgMHhBNiwgMHgxMiwgMHg3MCwgMHgxRCwgMHhGNCwgMHgzRCwKKyAgICAweEFFLCAweEZDLCAweDQ0LCAweEE3LCAweEIyLCAweEJFLCAweDNGLCAweEVBLCAweEMwLCAweEEyLCAweDI4LCAweDZDLCAweDkxLCAweEEzLCAweEI3LCAweEU5LAorICAgIDB4RjYsIDB4OEYsIDB4NjAsIDB4MjksIDB4REEsIDB4ODksIDB4RjUsIDB4OTUsIDB4ODUsIDB4MkMsIDB4NEQsIDB4MDksIDB4REYsIDB4NTQsIDB4QzgsIDB4OTYsCisgICAgMHhCNSwgMHhENCwgMHgxOCwgMHhBOCwgMHhDQywgMHhDRCwgMHgzRiwgMHhERiwgMHg3MCwgMHgyQiwgMHhEOSwgMHgyOCwgMHhCQywgMHg1MSwgMHg0NCwgMHgwMiwKKyAgICAweDExLCAweEU5LCAweDVELCAweERCLCAweEYwLCAweDI1LCAweDY4LCAweEQzLCAweDJGLCAweDdFLCAweDE3LCAweDBCLCAweDc2LCAweDMxLCAweEY5LCAweDhFLAorICAgIDB4NDYsIDB4NUIsIDB4MjIsIDB4QjksIDB4QjMsIDB4QkYsIDB4REUsIDB4MjQsIDB4MDYsIDB4MjgsIDB4MzcsIDB4MkEsIDB4QjYsIDB4M0QsIDB4QkEsIDB4NEQsCisgICAgMHhEOCwgMHg4RiwgMHhFMCwgMHg1RCwgMHgzOSwgMHg1MiwgMHhBMCwgMHgyRiwgMHhFMSwgMHhERCwgMHg4QiwgMHg5MSwgMHg4NCwgMHhDMiwgMHhEQSwgMHgzOCwKKyAgICAweDJELCAweDYxLCAweEUwLCAweDMxLCAweDAzLCAweDhELCAweEU1LCAweENGLCAweERDLCAweDc0LCAweDg4LCAweDdDLCAweDBDLCAweEY2LCAweDg5LCAweDk5LAorICAgIDB4NzMsIDB4RDEsIDB4N0MsIDB4MDYsIDB4QzEsIDB4NEIsIDB4REUsIDB4QzAsIDB4NjYsIDB4NTMsIDB4QjUsIDB4QTgsIDB4MkUsIDB4RjcsIDB4MDMsIDB4RTYsCisgICAgMHg4OCwgMHg4RCwgMHhDMywgMHg0NiwgMHgwQywgMHhDQSwgMHhFMywgMHgwMywgMHhBMywgMHhFRSwgMHhBOSwgMHg0QywgMHgzRiwgMHhBRiwgMHg4MSwgMHgwNiwKKyAgICAweDJDLCAweEFGLCAweDBELCAweDQzLCAweDJDLCAweEY0LCAweDlCLCAweDQyLCAweEMwLCAweDdCLCAweDhCLCAweEU1LCAweDg5LCAweEI3LCAweDQzLCAweEEyLAorICAgIDB4QkQsIDB4NEUsIDB4OTgsIDB4NDcsIDB4NzQsIDB4MUIsIDB4ODAsIDB4QzMsIDB4OTEsIDB4NDcsIDB4MTEsIDB4QUEsIDB4QzAsIDB4NjAsIDB4OEQsIDB4MTEsCisgICAgMHhGQSwgMHg1RCwgMHhDNywgMHgxQywgMHgzQSwgMHgzRCwgMHhFMywgMHhBNCwgMHgyQSwgMHhCRSwgMHg0QSwgMHhGMSwgMHgzMCwgMHhEOCwgMHhDQywgMHg2NiwKKyAgICAweDE0LCAweDhELCAweEUxLCAweEVGLCAweEI1LCAweENFLCAweEU3LCAweDY1LCAweERCLCAweENDLCAweERGLCAweEU5LCAweDY4LCAweDYxLCAweDJDLCAweDIwLAorICAgIDB4NDksIDB4NUIsIDB4RDUsIDB4OEQsIDB4NjcsIDB4QUEsIDB4MzIsIDB4REYsIDB4MTIsIDB4MzcsIDB4NTMsIDB4M0UsIDB4ODQsIDB4MjUsIDB4QUIsIDB4M0MsCisgICAgMHgwMCwgMHhENywgMHg3MSwgMHg4NywgMHg2OSwgMHhFQywgMHg3MywgMHg2MiwgMHhFRCwgMHg0RCwgMHg3NCwgMHgxRSwgMHgxRSwgMHgyOCwgMHg5OSwgMHg0QSwKKyAgICAweDkyLCAweDQ4LCAweDg4LCAweDYxLCAweDJFLCAweDVCLCAweDY3LCAweDBGLCAweEE2LCAweDQzLCAweEE3LCAweDdGLCAweEU5LCAweEM1LCAweDg3LCAweEI1LAorICAgIDB4MDAsIDB4RTcsIDB4RTgsIDB4RjQsIDB4OUEsIDB4NTEsIDB4NkEsIDB4QTYsIDB4RkUsIDB4Q0QsIDB4NDksIDB4RUQsIDB4NjMsIDB4M0MsIDB4MkQsIDB4NDEsCisgICAgMHgzMSwgMHhEMCwgMHg2RCwgMHgzRSwgMHhDQSwgMHgzMSwgMHgxMCwgMHgwQiwgMHg4QywgMHhCMCwgMHg4NCwgMHhGOSwgMHg1NSwgMHgyMywgMHgzRSwgMHgxOCwKKyAgICAweDQ4LCAweDdCLCAweDkzLCAweEJGLCAweDM0LCAweDlGLCAweDJELCAweDIwLCAweDI0LCAweDVBLCAweDQwLCAweDRDLCAweERGLCAweDk3LCAweEFCLCAweEI5LAorICAgIDB4RjEsIDB4NTQsIDB4Q0YsIDB4MzUsIDB4MTMsIDB4RTgsIDB4NjAsIDB4NzQsIDB4MjEsIDB4NjQsIDB4QjEsIDB4RkUsIDB4RTIsIDB4ODUsIDB4RDQsIDB4NEQsCisgICAgMHg0QSwgMHhBMCwgMHg3NCwgMHhERCwgMHhDMiwgMHgwMywgMHhENywgMHg2MSwgMHg0QywgMHg3NywgMHgwRiwgMHgzOCwgMHhGRSwgMHg0MywgMHhFQiwgMHhERSwKKyAgICAweEVFLCAweDMyLCAweDRELCAweDc5LCAweDUwLCAweEU2LCAweDAyLCAweDJCLCAweDk3LCAweDRDLCAweEFBLCAweDQ2LCAweDMxLCAweDNBLCAweDhELCAweEJELAorICAgIDB4N0YsIDB4NTQsIDB4ODYsIDB4MEEsIDB4NTEsIDB4NUQsIDB4M0QsIDB4NTksIDB4QkIsIDB4N0IsIDB4MDcsIDB4OTksIDB4MEYsIDB4RjAsIDB4NjMsIDB4QUQsCisgICAgMHgzOSwgMHgwQiwgMHg5OSwgMHhEQywgMHgxOCwgMHgyRiwgMHgwMSwgMHgyNiwgMHgxRiwgMHgyOSwgMHhGMSwgMHg4MSwgMHhEOSwgMHg0NiwgMHg2OCwgMHgxMywKKyAgICAweEM4LCAweEU4LCAweEM2LCAweEU3LCAweDdDLCAweDY2LCAweDcyLCAweERGLCAweDMxLCAweEVBLCAweDEzLCAweERGLCAweDNFLCAweDg4LCAweEY3LCAweDM1LAorICAgIDB4QzAsIDB4MjcsIDB4RjEsIDB4QzgsIDB4MDQsIDB4NTUsIDB4OEQsIDB4QzIsIDB4QjMsIDB4ODcsIDB4OTgsIDB4NTEsIDB4NTQsIDB4NDYsIDB4MEMsIDB4NjMsCisgICAgMHhCRSwgMHhEMCwgMHhCQSwgMHg0RCwgMHg2RiwgMHgxQywgMHhERiwgMHhENCwgMHhCMSwgMHg3NiwgMHhDQSwgMHhCMiwgMHg4NSwgMHhGRSwgMHg2NSwgMHhFNiwKKyAgICAweEMwLCAweDBELCAweDU2LCAweEJBLCAweDJELCAweDk5LCAweEZDLCAweDlCLCAweDZELCAweEMyLCAweEZFLCAweDI4LCAweDUzLCAweEVELCAweEUwLCAweEY3LAorICAgIDB4MjAsIDB4NEQsIDB4RDcsIDB4NEQsIDB4RjYsIDB4NUQsIDB4QzYsIDB4NTAsIDB4OEQsIDB4QzEsIDB4MTksIDB4QzcsIDB4MTIsIDB4RjUsIDB4NTMsIDB4RTAsCisgICAgMHhFOCwgMHgwNywgMHhBNSwgMHg0RSwgMHgxOCwgMHhGNywgMHg1RiwgMHhGRSwgMHg0OCwgMHgwMCwgMHgxMiwgMHg1RiwgMHgyMywgMHg0QiwgMHg4MCwgMHgwRCwKKyAgICAweDQzLCAweDExLCAweENBLCAweEFDLCAweEZGLCAweDFGLCAweEI1LCAweDNDLCAweDQzLCAweDIzLCAweDdELCAweDg2LCAweEIzLCAweDU4LCAweDQwLCAweEY0LAorICAgIDB4NDIsIDB4QzEsIDB4RkIsIDB4MjgsIDB4RkQsIDB4ODksIDB4NkIsIDB4OUMsIDB4NDEsIDB4RTUsIDB4NjAsIDB4Q0EsIDB4MTQsIDB4NzYsIDB4QUIsIDB4MzUsCisgICAgMHgwOSwgMHg3NCwgMHhGMCwgMHg4OSwgMHhCQiwgMHg0NywgMHgzQywgMHhCQywgMHhFRCwgMHg5MCwgMHg1QywgMHg3NSwgMHhGRSwgMHgyNCwgMHhEOSwgMHg0MSwKKyAgICAweDkzLCAweEUxLCAweDk4LCAweDhELCAweEE3LCAweDcxLCAweERGLCAweDU0LCAweDRDLCAweDYyLCAweDAyLCAweDdDLCAweDIwLCAweDlFLCAweERCLCAweDU5LAorICAgIDB4QkIsIDB4OTAsIDB4ODksIDB4MkMsIDB4NEQsIDB4OEUsIDB4MjEsIDB4MjUsIDB4NUUsIDB4NkMsIDB4RDgsIDB4MkYsIDB4NEQsIDB4MDMsIDB4OTIsIDB4REYsCisgICAgMHhFMCwgMHhEMywgMHg1NywgMHhBQSwgMHgxMiwgMHhBMSwgMHg4NCwgMHg4OCwgMHg2NSwgMHgyNSwgMHg0QiwgMHhENiwgMHhBMSwgMHg1QywgMHg5RiwgMHhDMCwKKyAgICAweDZFLCAweENFLCAweEQ4LCAweDQ5LCAweEY2LCAweDU0LCAweDIyLCAweDk5LCAweERELCAweDY5LCAweDNELCAweDk3LCAweDU3LCAweDcxLCAweEIxLCAweDhELAorICAgIDB4OTQsIDB4QTIsIDB4M0EsIDB4NTMsIDB4NkMsIDB4RUIsIDB4QjcsIDB4OTAsIDB4RUMsIDB4NEYsIDB4OUMsIDB4MzUsIDB4Q0MsIDB4N0IsIDB4RTEsIDB4RkQsCisgICAgMHg1NCwgMHhFMiwgMHhFOCwgMHhCRCwgMHg5NywgMHhERSwgMHg1QywgMHhFNiwgMHgyRSwgMHhFQSwgMHgxQiwgMHg3MiwgMHhGRiwgMHgzMCwgMHhENSwgMHg2RiwKKyAgICAweDk0LCAweDYwLCAweDQyLCAweDUyLCAweEE3LCAweDcxLCAweEUyLCAweEVBLCAweEE5LCAweERDLCAweEQwLCAweEM0LCAweDVBLCAweDAxLCAweDcwLCAweEZBLAorICAgIDB4MDQsIDB4ODUsIDB4NDUsIDB4MzAsIDB4RkYsIDB4MjMsIDB4MEIsIDB4MzgsIDB4RkIsIDB4QkEsIDB4NjMsIDB4QUIsIDB4QTQsIDB4NTAsIDB4OEYsIDB4NkEsCisgICAgMHg3MywgMHhBQywgMHhGRSwgMHgzMywgMHg5NSwgMHgyMywgMHgxQywgMHhEOCwgMHg1RiwgMHhFRiwgMHg3MSwgMHhDRCwgMHg3MywgMHhDMiwgMHg4NCwgMHg5RSwKKyAgICAweDdELCAweDgxLCAweDNCLCAweEFFLCAweDRELCAweEE4LCAweEI3LCAweEE4LCAweEU4LCAweEY1LCAweDFBLCAweEYwLCAweDAyLCAweDhFLCAweDFDLCAweDVFLAorICAgIDB4M0YsIDB4MDYsIDB4REQsIDB4MkIsIDB4QzgsIDB4MzgsIDB4MDcsIDB4MjksIDB4QUYsIDB4ODAsIDB4REIsIDB4OUUsIDB4Q0QsIDB4OEEsIDB4OUYsIDB4OTYsCisgICAgMHhCNCwgMHgzQSwgMHg5NCwgMHg1MywgMHgyRiwgMHhEQSwgMHhEOCwgMHg1NCwgMHg4OCwgMHg3MywgMHg2MywgMHg0NiwgMHg3MywgMHg5NSwgMHhFMiwgMHhEOCwKKyAgICAweEM1LCAweDMyLCAweDA2LCAweEU3LCAweDdDLCAweEI0LCAweEM3LCAweDA0LCAweDZCLCAweDY2LCAweEUwLCAweDE4LCAweENELCAweDU3LCAweDQ1LCAweDVELAorICAgIDB4NjIsIDB4OEEsIDB4MzksIDB4NEMsIDB4NUYsIDB4NkUsIDB4MkYsIDB4RkMsIDB4NzMsIDB4RkEsIDB4OUUsIDB4QkIsIDB4MjMsIDB4OUUsIDB4Q0IsIDB4NTYsCisgICAgMHgxNSwgMHg2RCwgMHhGMSwgMHhERCwgMHg5OCwgMHgxRSwgMHgzMywgMHg4RSwgMHhDQSwgMHhCNywgMHg2MywgMHgzQiwgMHg2MiwgMHg2OSwgMHg3QiwgMHg2OCwKKyAgICAweDcxLCAweERCLCAweDgwLCAweEExLCAweEQzLCAweDlFLCAweEJCLCAweEM5LCAweDBFLCAweDkwLCAweDRGLCAweEZBLCAweDYxLCAweEZDLCAweEEzLCAweEUxLAorICAgIDB4RkEsIDB4QzMsIDB4MUYsIDB4NjksIDB4QzgsIDB4NEQsIDB4QkYsIDB4QjAsIDB4MUYsIDB4MEMsIDB4QjIsIDB4MzcsIDB4MjgsIDB4RUMsIDB4RjEsIDB4RjcsCisgICAgMHg0MiwgMHg4MCwgMHhENCwgMHg5QiwgMHg0MCwgMHg3RCwgMHhEQSwgMHg4QiwgMHgwNywgMHg2MCwgMHgxOCwgMHgyNiwgMHg1QywgMHg0MiwgMHgxQiwgMHgwNSwKKyAgICAweDgxLCAweDhCLCAweEQwLCAweEExLCAweDcyLCAweDNELCAweENELCAweDQ0LCAweDY2LCAweEQ0LCAweEZELCAweDEwLCAweERGLCAweDc4LCAweDRELCAweEYwLAorICAgIDB4NjEsIDB4MDAsIDB4MDUsIDB4QzEsIDB4RUMsIDB4RjAsIDB4RTgsIDB4NzMsIDB4NTgsIDB4REUsIDB4Q0YsIDB4OTcsIDB4QUYsIDB4NTcsIDB4RkMsIDB4MDcsCisgICAgMHgwQiwgMHgwNiwgMHgwRiwgMHhCQiwgMHhDRCwgMHgwRiwgMHg2MiwgMHgwRSwgMHgzOCwgMHg4MCwgMHg5MywgMHg4NiwgMHg5NSwgMHgxNywgMHg1MiwgMHgyMiwKKyAgICAweEFFLCAweDFBLCAweDNCLCAweDU1LCAweDQyLCAweENFLCAweEYzLCAweEYwLCAweEZELCAweDM0LCAweDJGLCAweDdFLCAweDU3LCAweDcxLCAweEFGLCAweDQ1LAorICAgIDB4NTksIDB4M0UsIDB4NjUsIDB4NEMsIDB4QTYsIDB4MDQsIDB4M0EsIDB4MTksIDB4OTQsIDB4MDAsIDB4RDQsIDB4RUUsIDB4QkIsIDB4M0YsIDB4MDksIDB4ODYsCisgICAgMHg1NywgMHg1MSwgMHhENiwgMHg3MSwgMHgwMywgMHhBOSwgMHhEQiwgMHg1NiwgMHhFRCwgMHg5NCwgMHg4RCwgMHg3NSwgMHhCQiwgMHg1QSwgMHg4RCwgMHgzNSwKKyAgICAweEJBLCAweEVDLCAweERGLCAweDEzLCAweDdBLCAweEFGLCAweDFELCAweDE5LCAweEJFLCAweDJFLCAweDYwLCAweEI4LCAweEVELCAweDBBLCAweEVBLCAweDI2LAorICAgIDB4QTMsIDB4NDgsIDB4RjQsIDB4OEEsIDB4NzEsIDB4MDUsIDB4MzUsIDB4NUEsIDB4NTQsIDB4NzQsIDB4QUEsIDB4QTksIDB4MTUsIDB4OTMsIDB4RUYsIDB4MEUsCisgICAgMHg4MSwgMHgyMywgMHhFOSwgMHg0RSwgMHhEMSwgMHg0RSwgMHg4OCwgMHhDMiwgMHgxRCwgMHhFNiwgMHg1QywgMHhDNCwgMHg1NCwgMHgyQiwgMHhBRSwgMHhCNCwKKyAgICAweEYwLCAweEYwLCAweDRDLCAweDg2LCAweEJBLCAweEIxLCAweERELCAweDAwLCAweEVDLCAweEY2LCAweDdFLCAweDZGLCAweDNGLCAweDQ1LCAweEE3LCAweEE3LAorICAgIDB4MDksIDB4NTgsIDB4NDksIDB4MjIsIDB4QkMsIDB4QjQsIDB4MEMsIDB4MzMsIDB4MjEsIDB4RDYsIDB4MDcsIDB4NDQsIDB4M0MsIDB4QkEsIDB4RkUsIDB4RjgsCisgICAgMHhGOCwgMHgyQiwgMHhBRSwgMHgzMywgMHg1QiwgMHhFNywgMHhGOSwgMHg2NywgMHg2OCwgMHhFMywgMHhFRCwgMHg0MCwgMHgyOCwgMHhGNSwgMHhGRCwgMHg1QywKKyAgICAweEU1LCAweDI1LCAweDIwLCAweDA0LCAweDI5LCAweDlCLCAweEMxLCAweERELCAweDUxLCAweEVDLCAweDU3LCAweDU2LCAweDE2LCAweEE3LCAweDRDLCAweDNELAorICAgIDB4ODAsIDB4QUUsIDB4NjIsIDB4RkUsIDB4QkIsIDB4MkQsIDB4MTcsIDB4NTEsIDB4MDAsIDB4MDEsIDB4NzksIDB4NTMsIDB4RDcsIDB4NzAsIDB4RkEsIDB4ODksCisgICAgMHhFQiwgMHhCNSwgMHgzNywgMHg5MiwgMHgwMywgMHg5QywgMHg4OCwgMHhDMCwgMHhBNiwgMHg2MiwgMHgxNCwgMHhCMiwgMHgwRCwgMHgyMiwgMHhDOCwgMHhEQywKKyAgICAweDQzLCAweDE3LCAweEY4LCAweDcyLCAweEZFLCAweDBCLCAweDg4LCAweEQ2LCAweDk2LCAweDdBLCAweEI1LCAweEYzLCAweEM0LCAweDZGLCAweEVGLCAweEE1LAorICAgIDB4ODcsIDB4QjcsIDB4OEEsIDB4QUQsIDB4NDYsIDB4Q0QsIDB4RkYsIDB4RjIsIDB4MzgsIDB4MTQsIDB4RDgsIDB4RDQsIDB4RDQsIDB4QzUsIDB4OUEsIDB4NUQsCisgICAgMHgzOCwgMHgzRCwgMHg0NCwgMHg1MywgMHhGMywgMHg0MywgMHg3OSwgMHgzRiwgMHhDRCwgMHhDMiwgMHg5MywgMHhCNSwgMHgzNCwgMHg0RiwgMHg1RSwgMHhGQSwKKyAgICAweDRELCAweDY0LCAweDYxLCAweDM5LCAweDBBLCAweERDLCAweDhELCAweEI1LCAweEQzLCAweDgyLCAweEZELCAweDUzLCAweEFELCAweDlCLCAweEM2LCAweDc5LAorICAgIDB4MjQsIDB4MDksIDB4OTEsIDB4OEYsIDB4NjEsIDB4MjUsIDB4MDcsIDB4MjEsIDB4OTcsIDB4NzMsIDB4OTgsIDB4OTgsIDB4QjUsIDB4NDYsIDB4RDEsIDB4RkIsCisgICAgMHhDRSwgMHg5MSwgMHhGNCwgMHhDNiwgMHgzOSwgMHhDNywgMHhCRSwgMHhCRiwgMHg2NSwgMHg5NywgMHg1OSwgMHgyNywgMHgwOCwgMHhEQSwgMHgzMCwgMHg3RCwKKyAgICAweDA1LCAweDZELCAweDA0LCAweEQ4LCAweEEyLCAweERBLCAweDUyLCAweEZBLCAweEMyLCAweDZCLCAweDM3LCAweDIxLCAweEVDLCAweDAzLCAweEVFLCAweDRELAorICAgIDB4ODksIDB4QTcsIDB4ODEsIDB4NTQsIDB4MUEsIDB4QjAsIDB4MkIsIDB4M0UsIDB4QTcsIDB4RTAsIDB4NTQsIDB4RjYsIDB4NUEsIDB4RDYsIDB4NEUsIDB4QTIsCisgICAgMHgyMywgMHgxRCwgMHgxRSwgMHhFMiwgMHg0NiwgMHg4OSwgMHgyMCwgMHhCNSwgMHg2MywgMHg0NCwgMHhGMSwgMHhGNSwgMHg1MCwgMHg2RSwgMHg1RSwgMHhEMSwKKyAgICAweDZBLCAweDM0LCAweEE4LCAweEExLCAweEU4LCAweEM0LCAweDE3LCAweEU4LCAweDRGLCAweEM4LCAweDJFLCAweDY0LCAweDM3LCAweEM2LCAweEVDLCAweERDLAorICAgIDB4NjUsIDB4ODgsIDB4MzgsIDB4NEEsIDB4QkYsIDB4NjEsIDB4QzAsIDB4OEQsIDB4QzYsIDB4RUUsIDB4RkEsIDB4NzcsIDB4NjYsIDB4RTUsIDB4RDEsIDB4MEMsCisgICAgMHg5MiwgMHhDOCwgMHhEOCwgMHhFOSwgMHg5QiwgMHhENiwgMHg5NiwgMHhCOSwgMHg5MywgMHg4NiwgMHhCNywgMHg0MCwgMHgwMiwgMHg3RiwgMHhENSwgMHg1RCwKKyAgICAweDYzLCAweDUzLCAweDU5LCAweENGLCAweEJCLCAweEQxLCAweEU5LCAweDNELCAweEYxLCAweDJDLCAweEMwLCAweEFFLCAweEFELCAweEZDLCAweDY2LCAweEMyLAorICAgIDB4MEUsIDB4MTMsIDB4NzYsIDB4MkIsIDB4QTYsIDB4QjAsIDB4REIsIDB4MzEsIDB4ODksIDB4N0QsIDB4RkUsIDB4NzksIDB4QUEsIDB4NDksIDB4QjEsIDB4OUEsCisgICAgMHhDMSwgMHhGMCwgMHgzOSwgMHgwNSwgMHgwOCwgMHgxQywgMHgxRiwgMHhGQywgMHhBOCwgMHhEQywgMHgxOSwgMHgzRiwgMHhEQSwgMHgyNiwgMHgwOSwgMHgxMSwKKyAgICAweDdELCAweEFELCAweDhELCAweDU1LCAweEMzLCAweDUzLCAweDYxLCAweDE3LCAweDc0LCAweDIxLCAweDdCLCAweDBFLCAweEZDLCAweEJGLCAweEI1LCAweDVCLAorICAgIDB4REMsIDB4MkIsIDB4OEYsIDB4MDUsIDB4NDAsIDB4MzEsIDB4MDUsIDB4QjksIDB4RjUsIDB4OUUsIDB4MjUsIDB4M0QsIDB4OTIsIDB4NEUsIDB4REQsIDB4OEIsCisgICAgMHg0MSwgMHg2MywgMHhDMSwgMHg3QSwgMHg0OCwgMHhDQSwgMHg4QSwgMHhFMiwgMHhBNCwgMHhGQSwgMHhCMCwgMHg4MSwgMHgyRiwgMHgyQSwgMHg1NywgMHg4RCwKKyAgICAweDE4LCAweEUzLCAweDM0LCAweENELCAweDNGLCAweDE2LCAweDdELCAweDY5LCAweDRFLCAweDI3LCAweDg0LCAweDYyLCAweERELCAweDBDLCAweDM3LCAweDgxLAorICAgIDB4NzksIDB4QjAsIDB4NzksIDB4MzgsIDB4NDYsIDB4RUYsIDB4OEIsIDB4QTcsIDB4MkEsIDB4QzEsIDB4Q0EsIDB4NjcsIDB4QjYsIDB4RjcsIDB4OEIsIDB4QjksCisgICAgMHg3NywgMHg5MywgMHg4RiwgMHg1NSwgMHg3NiwgMHgxMCwgMHgxQywgMHgyNywgMHg5MiwgMHg5NCwgMHhDQSwgMHg2NywgMHhEMSwgMHhENCwgMHhCOCwgMHg5NiwKKyAgICAweEVGLCAweEQxLCAweEQyLCAweDMyLCAweEY0LCAweEQ3LCAweDg2LCAweDlDLCAweEJFLCAweEJBLCAweDhFLCAweDA1LCAweERBLCAweDRCLCAweDNELCAweDRBLAorICAgIDB4N0UsIDB4MDksIDB4RTgsIDB4MEMsIDB4RTcsIDB4NTMsIDB4Q0IsIDB4MTYsIDB4QTEsIDB4OUUsIDB4NTYsIDB4Q0QsIDB4RDgsIDB4NkMsIDB4MTQsIDB4NEMsCisgICAgMHgxOSwgMHgwMSwgMHhFRSwgMHg1RSwgMHgwMywgMHgzNCwgMHhCMCwgMHgzRSwgMHgzMCwgMHg2RSwgMHg5NywgMHg3NSwgMHg3RiwgMHgyQiwgMHhGMiwgMHhCQSwKKyAgICAweEIxLCAweDg0LCAweDc2LCAweDc5LCAweEM3LCAweDZFLCAweDQ2LCAweDc5LCAweEMxLCAweDNCLCAweDJGLCAweDE4LCAweDE4LCAweERGLCAweEJDLCAweEFFLAorICAgIDB4RkMsIDB4MUQsIDB4RTIsIDB4QjYsIDB4NzcsIDB4NzIsIDB4NUQsIDB4MDQsIDB4MUUsIDB4NDYsIDB4MjAsIDB4RkYsIDB4NzgsIDB4OUEsIDB4NjQsIDB4RjksCisgICAgMHhFOCwgMHgzNiwgMHgxOSwgMHgxOSwgMHhCQywgMHhGNiwgMHg1NCwgMHg4NCwgMHhBQSwgMHg4RiwgMHhCOSwgMHg3RSwgMHgwNiwgMHg0MCwgMHhGNiwgMHg5NiwKKyAgICAweDBBLCAweEQ5LCAweDAxLCAweDFCLCAweDZDLCAweENDLCAweDBELCAweDYzLCAweDlDLCAweDBBLCAweDEzLCAweEYwLCAweEM2LCAweDE2LCAweDRELCAweEMyLAorICAgIDB4OUYsIDB4QUYsIDB4NkIsIDB4MDcsIDB4OTYsIDB4OTQsIDB4NjksIDB4NUEsIDB4OTAsIDB4NDMsIDB4NTEsIDB4QUUsIDB4RDMsIDB4OTAsIDB4MTAsIDB4NjYsCisgICAgMHhFRSwgMHg5NCwgMHhBMSwgMHg2QywgMHg0MiwgMHg5RiwgMHg2NywgMHgxQywgMHg4NSwgMHg4NiwgMHhCQywgMHg4MSwgMHhGNywgMHg4OCwgMHgzMCwgMHhCOCwKKyAgICAweENBLCAweDQ3LCAweEEyLCAweDA4LCAweEMxLCAweDk5LCAweDlBLCAweDg2LCAweDc5LCAweDUxLCAweDEyLCAweENELCAweEUxLCAweDY5LCAweEFFLCAweEQyLAorICAgIDB4MkMsIDB4RjgsIDB4ODEsIDB4OTIsIDB4NjgsIDB4M0IsIDB4REIsIDB4REEsIDB4RkEsIDB4OTgsIDB4MjksIDB4ODQsIDB4MUMsIDB4RjAsIDB4RkQsIDB4QTEsCisgICAgMHhEQSwgMHg5MCwgMHg2RCwgMHhCMywgMHg3OCwgMHhEMiwgMHgwNCwgMHgxRCwgMHhEMSwgMHg5QiwgMHhCRiwgMHgwQywgMHgxNSwgMHgzNiwgMHg5RCwgMHhDNiwKKyAgICAweEI0LCAweDRELCAweEI1LCAweDkzLCAweEQ5LCAweERGLCAweEJDLCAweDNBLCAweDE2LCAweDJBLCAweDA3LCAweDNDLCAweEIwLCAweDQzLCAweDk1LCAweDZFLAorICAgIDB4MUUsIDB4NjUsIDB4MDksIDB4OEQsIDB4MEQsIDB4MzQsIDB4NDUsIDB4MEUsIDB4RDksIDB4M0UsIDB4NTIsIDB4NjksIDB4OTEsIDB4QzEsIDB4OTAsIDB4Q0EsCisgICAgMHg4RSwgMHgzMywgMHgwMiwgMHhEMywgMHg1NCwgMHhCNSwgMHg2MSwgMHhFOCwgMHhDNiwgMHg1MywgMHgwMSwgMHg0OSwgMHg0RCwgMHgwQiwgMHhBQywgMHgzQSwKKyAgICAweDk1LCAweDFCLCAweDcwLCAweDQzLCAweDYyLCAweDZCLCAweEQ4LCAweDM3LCAweDZDLCAweEU3LCAweEFFLCAweDk0LCAweEU1LCAweEUwLCAweDFELCAweEU4LAorICAgIDB4MUIsIDB4QzEsIDB4NTIsIDB4MkEsIDB4NkIsIDB4NTAsIDB4MzIsIDB4REUsIDB4RjcsIDB4RjgsIDB4Q0UsIDB4NDksIDB4M0UsIDB4RTUsIDB4NzQsIDB4MjksCisgICAgMHgzMywgMHg3NSwgMHhGMCwgMHg2MywgMHg4QSwgMHg0MCwgMHhFMywgMHgxMywgMHg4RiwgMHhFQiwgMHgwOCwgMHgyNCwgMHhCMiwgMHg1QSwgMHg3QSwgMHhBOSwKKyAgICAweEQwLCAweDFGLCAweENFLCAweDhBLCAweDg0LCAweEJBLCAweDhDLCAweDRGLCAweDEwLCAweDc4LCAweEFFLCAweDY0LCAweEMzLCAweEMzLCAweDlBLCAweDg4LAorICAgIDB4NTksIDB4RDIsIDB4Q0QsIDB4NkUsIDB4QzIsIDB4QkMsIDB4NzEsIDB4RUYsIDB4REYsIDB4QUEsIDB4RDQsIDB4NTIsIDB4RjksIDB4MUIsIDB4Q0MsIDB4MTcsCisgICAgMHg1MSwgMHg0NiwgMHg3RSwgMHhCNiwgMHgwRiwgMHg3NywgMHgyNSwgMHgzRiwgMHgyMywgMHgzQiwgMHhEOSwgMHhBNywgMHg4MiwgMHg2QSwgMHhCNCwgMHgxMiwKKyAgICAweDMwLCAweDk2LCAweDI3LCAweDQ3LCAweDlELCAweDcwLCAweEQ2LCAweEU5LCAweDg2LCAweEZBLCAweEJELCAweDlELCAweDk2LCAweEUzLCAweDMwLCAweDBDLAorICAgIDB4MUUsIDB4QkQsIDB4RDksIDB4RUEsIDB4MUUsIDB4NTAsIDB4MTgsIDB4N0YsIDB4N0UsIDB4QkUsIDB4QUUsIDB4OEUsIDB4MTEsIDB4RUEsIDB4REUsIDB4MTcsCisgICAgMHg5NywgMHg5RCwgMHg2MCwgMHgyQiwgMHhBMiwgMHg0NCwgMHgxQiwgMHhDRSwgMHhDNSwgMHgzRSwgMHg2OCwgMHg4OCwgMHgxQiwgMHhERSwgMHgwRSwgMHhGQiwKKyAgICAweEQyLCAweERBLCAweDMwLCAweDFFLCAweDc1LCAweDcwLCAweDg0LCAweDE5LCAweEJELCAweDUwLCAweDhDLCAweDlCLCAweDQ2LCAweDdGLCAweEY0LCAweDI3LAorICAgIDB4MTksIDB4QkYsIDB4NUMsIDB4RkMsIDB4RTMsIDB4Q0YsIDB4MTgsIDB4OUQsIDB4RDEsIDB4MzIsIDB4MzksIDB4MjgsIDB4MUUsIDB4Q0QsIDB4NDcsIDB4RDQsCisgICAgMHgzOCwgMHhCMSwgMHhGOCwgMHgwNiwgMHg0QiwgMHhDNywgMHg0NSwgMHgwQiwgMHgwOSwgMHhBNCwgMHhFMiwgMHhGMSwgMHhDNCwgMHhBOSwgMHgwMCwgMHhFQSwKKyAgICAweDQ0LCAweEY1LCAweDc1LCAweENBLCAweDlGLCAweEQxLCAweDNGLCAweENFLCAweDRELCAweEQwLCAweDQyLCAweDc5LCAweDk1LCAweDc2LCAweEQ5LCAweDdDLAorICAgIDB4RUYsIDB4MEEsIDB4QzYsIDB4MzEsIDB4ODIsIDB4Q0MsIDB4RUEsIDB4NTksIDB4NEIsIDB4NDMsIDB4RDUsIDB4QjYsIDB4MUQsIDB4MDUsIDB4NUUsIDB4NTksCisgICAgMHhBNywgMHgyMSwgMHg0NSwgMHgwRCwgMHg2NSwgMHg1NywgMHgzOCwgMHg3NiwgMHgyMiwgMHgzOSwgMHg4QSwgMHg1RCwgMHhDOCwgMHg5NCwgMHhFMCwgMHg1MSwKKyAgICAweDE5LCAweDY4LCAweDFFLCAweDU4LCAweDVGLCAweEIwLCAweEJBLCAweEMzLCAweDU1LCAweEI0LCAweDg2LCAweDE4LCAweDI0LCAweERFLCAweDJDLCAweDhFLAorICAgIDB4RTIsIDB4QjYsIDB4NjcsIDB4MDQsIDB4RDAsIDB4M0IsIDB4ODQsIDB4MjIsIDB4NTAsIDB4REIsIDB4MDQsIDB4MUUsIDB4RTAsIDB4MTcsIDB4NUYsIDB4RjAsCisgICAgMHhDNywgMHhGRSwgMHgwMiwgMHgxNywgMHhEMCwgMHgwQywgMHg5RCwgMHg0OSwgMHgwMCwgMHg1NCwgMHg3OSwgMHhBMCwgMHhEMCwgMHg5QiwgMHhCRiwgMHhDMiwKKyAgICAweENFLCAweDVFLCAweENDLCAweERFLCAweDY1LCAweEY0LCAweDYyLCAweDcyLCAweDdELCAweDMzLCAweDA4LCAweEY5LCAweDI2LCAweDIyLCAweDg0LCAweEVFLAorICAgIDB4QzgsIDB4MzUsIDB4RDcsIDB4NDIsIDB4MzEsIDB4OEYsIDB4NUMsIDB4MjMsIDB4QUEsIDB4MzcsIDB4QzEsIDB4NzksIDB4QjAsIDB4QUQsIDB4MUUsIDB4M0EsCisgICAgMHhFMywgMHgxQywgMHgxNiwgMHg0OSwgMHg0RCwgMHhFQSwgMHhCMCwgMHgwQSwgMHgwNiwgMHhEMywgMHg1NiwgMHgzMywgMHhENiwgMHhERSwgMHgzRSwgMHhGMywKKyAgICAweDY0LCAweEUyLCAweEI2LCAweEYyLCAweEFDLCAweEE1LCAweDQxLCAweERELCAweDhFLCAweERBLCAweDNFLCAweDU2LCAweDkxLCAweDY2LCAweDFCLCAweDgwLAorICAgIDB4QzMsIDB4MkQsIDB4QUIsIDB4ODQsIDB4QzYsIDB4QkYsIDB4REQsIDB4MTAsIDB4MzYsIDB4MjEsIDB4NjUsIDB4RTUsIDB4QkUsIDB4MkIsIDB4NTQsIDB4Q0MsCisgICAgMHg2RiwgMHhFMCwgMHg3MCwgMHhFNSwgMHg3QSwgMHg3MywgMHhDNywgMHhGOSwgMHg4RiwgMHhCMiwgMHhFQywgMHgxRSwgMHhENiwgMHg1RSwgMHg1NSwgMHg3NCwKKyAgICAweEM1LCAweDE5LCAweDlELCAweDQwLCAweDEzLCAweDdDLCAweEQ0LCAweDg1LCAweDEwLCAweEQ1LCAweDFELCAweDhDLCAweDhGLCAweDI3LCAweDY4LCAweEJDLAorICAgIDB4NzYsIDB4OUUsIDB4MTQsIDB4RkYsIDB4NUQsIDB4RUEsIDB4OEIsIDB4Q0IsIDB4MTYsIDB4QkUsIDB4NEYsIDB4RkIsIDB4MDIsIDB4QUMsIDB4OTcsIDB4MEYsCisgICAgMHgzRSwgMHhCRCwgMHhEMCwgMHgxQSwgMHhDQiwgMHg5MywgMHhEOCwgMHg5OCwgMHhCRCwgMHgxNSwgMHgyNiwgMHg5MSwgMHhCOSwgMHhEMCwgMHhDNiwgMHg4RCwKKyAgICAweDZCLCAweDkxLCAweDgyLCAweDRBLCAweDEwLCAweDc3LCAweEZBLCAweDA0LCAweDYwLCAweENDLCAweEVCLCAweDc2LCAweDE1LCAweDVELCAweDk2LCAweEU2LAorICAgIDB4MTYsIDB4MTksIDB4NzMsIDB4RDIsIDB4QjksIDB4REQsIDB4MjUsIDB4RjcsIDB4RkIsIDB4RkQsIDB4N0EsIDB4RUMsIDB4MUQsIDB4QTQsIDB4NUQsIDB4M0UsCisgICAgMHhBRSwgMHhCQSwgMHhFQiwgMHg4NCwgMHgxRCwgMHg3MywgMHhENCwgMHhFNCwgMHhCNSwgMHhCQywgMHgwRCwgMHg3OSwgMHhDNSwgMHhGNiwgMHhBMywgMHhFOSwKKyAgICAweDAyLCAweDY0LCAweDk2LCAweDY1LCAweDdBLCAweDIzLCAweERFLCAweEZELCAweEVFLCAweDIyLCAweDI0LCAweEZELCAweDFBLCAweDM5LCAweDM3LCAweEQwLAorICAgIDB4NTEsIDB4RUIsIDB4MzUsIDB4M0QsIDB4MzAsIDB4OTAsIDB4RTQsIDB4NzAsIDB4NkEsIDB4NTgsIDB4QjcsIDB4OUEsIDB4RTYsIDB4QjAsIDB4QUUsIDB4N0MsCisgICAgMHg2NCwgMHg2MSwgMHg0MiwgMHg3NCwgMHgwQywgMHhGMywgMHg5RCwgMHhDQywgMHg0MCwgMHg5MiwgMHgyMywgMHhDMSwgMHgyNSwgMHgyRSwgMHgwNywgMHgwRSwKKyAgICAweDc2LCAweDBDLCAweDRDLCAweDNDLCAweEE0LCAweDJBLCAweEU3LCAweDFBLCAweDkxLCAweERFLCAweDE1LCAweEYwLCAweEY0LCAweDA4LCAweDk1LCAweDc3LAorICAgIDB4NTgsIDB4NEIsIDB4RjIsIDB4NDUsIDB4QkUsIDB4N0MsIDB4RTQsIDB4NTEsIDB4NTcsIDB4MjQsIDB4OTIsIDB4OEQsIDB4NUYsIDB4NTAsIDB4QTYsIDB4NzcsCisgICAgMHhGQSwgMHg5RSwgMHhCNCwgMHhBMiwgMHhGOSwgMHhCQSwgMHgzMSwgMHgzNywgMHhEOCwgMHgyRCwgMHhBRiwgMHhDQiwgMHg0NywgMHg5OCwgMHhCMywgMHg2OCwKKyAgICAweEEwLCAweEI3LCAweENBLCAweDJGLCAweDc5LCAweEJBLCAweEI3LCAweDhELCAweDUzLCAweEIzLCAweEFCLCAweERDLCAweDRFLCAweDQ3LCAweDJGLCAweDM1LAorICAgIDB4NEIsIDB4QzcsIDB4QUEsIDB4NjQsIDB4NDksIDB4OUIsIDB4QjIsIDB4OTIsIDB4ODUsIDB4NDMsIDB4MTAsIDB4RTYsIDB4ODQsIDB4OEIsIDB4RjUsIDB4QUUsCisgICAgMHg3NywgMHgyOCwgMHgzMCwgMHg0NiwgMHhGNCwgMHhGQywgMHhFRSwgMHg0NiwgMHg3OCwgMHg3MSwgMHhFMSwgMHhEQSwgMHhBQSwgMHgzMywgMHgyMywgMHg5OCwKKyAgICAweDVFLCAweEYwLCAweEE1LCAweDQxLCAweDc1LCAweDRCLCAweEM5LCAweEJELCAweDRCLCAweDkxLCAweDM4LCAweEVGLCAweDVCLCAweDVELCAweDI5LCAweDlGLAorICAgIDB4QUUsIDB4OTUsIDB4NUYsIDB4REIsIDB4NjAsIDB4REQsIDB4QjksIDB4QkUsIDB4NEQsIDB4N0QsIDB4QTAsIDB4QTQsIDB4QUMsIDB4OUYsIDB4NjUsIDB4NkEsCisgICAgMHhGQSwgMHg4MSwgMHgwMSwgMHhDRiwgMHg4RiwgMHhFMiwgMHgyQywgMHgyNywgMHg2NCwgMHgzQSwgMHg0RCwgMHgyMywgMHhDNywgMHg3QiwgMHg0RiwgMHhDRiwKKyAgICAweEExLCAweERDLCAweDBFLCAweDIxLCAweDgyLCAweDJCLCAweEQ4LCAweDUxLCAweDhCLCAweDM1LCAweDgxLCAweDg3LCAweDlGLCAweEZELCAweDA1LCAweEM1LAorICAgIDB4MTcsIDB4QUYsIDB4OTksIDB4M0QsIDB4MkIsIDB4MjgsIDB4MkQsIDB4ODIsIDB4M0EsIDB4MTMsIDB4NjgsIDB4MzEsIDB4MjEsIDB4NjYsIDB4NTMsIDB4REIsCisgICAgMHgwNywgMHg0NSwgMHhCRCwgMHgyNCwgMHg1MiwgMHhBQSwgMHhDNiwgMHhENCwgMHg3MCwgMHgyNCwgMHhCMSwgMHg2NywgMHg5QSwgMHg5NCwgMHhFQSwgMHhGMCwKKyAgICAweDZCLCAweDY3LCAweDk5LCAweERELCAweDRGLCAweDExLCAweDczLCAweEQyLCAweDA0LCAweEJFLCAweEI1LCAweDc3LCAweEZCLCAweEEyLCAweDMxLCAweENDLAorICAgIDB4RDQsIDB4MUUsIDB4OTEsIDB4MDIsIDB4RDIsIDB4NjIsIDB4RjYsIDB4QjEsIDB4MzIsIDB4MzYsIDB4MTIsIDB4RjgsIDB4NEQsIDB4MUQsIDB4NDcsIDB4MTAsCisgICAgMHhBOCwgMHg2NSwgMHgzNCwgMHg3MSwgMHg0OCwgMHg5RSwgMHgyMiwgMHgyQiwgMHhBMiwgMHg0RiwgMHhGOSwgMHgyQiwgMHhFQiwgMHgwRiwgMHgzMSwgMHg4MCwKKyAgICAweDdFLCAweENBLCAweDRBLCAweENGLCAweDM3LCAweDA4LCAweDIxLCAweDFELCAweEJBLCAweEQ5LCAweDMyLCAweDE0LCAweDNFLCAweEVGLCAweDZDLCAweEZFLAorICAgIDB4QjcsIDB4QTMsIDB4NTYsIDB4MDcsIDB4NjIsIDB4NTAsIDB4QTUsIDB4MjMsIDB4QjQsIDB4NDUsIDB4OUMsIDB4NTEsIDB4REYsIDB4RUIsIDB4OTMsIDB4MUQsCisgICAgMHg0RSwgMHhGRiwgMHgyOSwgMHhCMiwgMHg1MCwgMHhGMCwgMHgyQSwgMHhFRiwgMHhFRSwgMHg3MywgMHg5QiwgMHg1MSwgMHg2OSwgMHgzNCwgMHhBRSwgMHhGNywKKyAgICAweDRBLCAweDRDLCAweDA2LCAweDlELCAweDIwLCAweEM3LCAweDEyLCAweDNGLCAweDMxLCAweEJCLCAweEJDLCAweEQzLCAweDI3LCAweEE5LCAweDg5LCAweEM3LAorICAgIDB4NDIsIDB4MUYsIDB4MkUsIDB4NjAsIDB4RUMsIDB4MjksIDB4MEQsIDB4MTEsIDB4ODgsIDB4RkMsIDB4QjQsIDB4MzEsIDB4MDgsIDB4REQsIDB4NjksIDB4MTUsCisgICAgMHhGMSwgMHg2NCwgMHgyNSwgMHg1MiwgMHg0NiwgMHgwNywgMHhBRSwgMHgzNSwgMHhBQSwgMHg0NiwgMHg4OSwgMHgzQSwgMHhFQSwgMHg3RiwgMHhEQywgMHg2OSwKKyAgICAweDlGLCAweEQ2LCAweEYxLCAweDNDLCAweERDLCAweDZELCAweDAwLCAweDA5LCAweDk1LCAweDlELCAweDcyLCAweDUwLCAweEU3LCAweEQ3LCAweEFDLCAweDdELAorICAgIDB4M0QsIDB4RkQsIDB4MUQsIDB4MDYsIDB4MzgsIDB4QUQsIDB4RDcsIDB4N0EsIDB4RUMsIDB4MDYsIDB4MEYsIDB4MkYsIDB4M0YsIDB4NEYsIDB4RDIsIDB4QzIsCisgICAgMHhBQSwgMHgzMCwgMHg5MiwgMHgxOCwgMHg5MywgMHhFMCwgMHg2NSwgMHhEOSwgMHhEOCwgMHgwMSwgMHg0OCwgMHhGRCwgMHhDMSwgMHhBMywgMHhFNCwgMHhCRCwKKyAgICAweDIxLCAweDA1LCAweDQ1LCAweEEwLCAweENELCAweERDLCAweDg3LCAweDI5LCAweDZFLCAweEUxLCAweDc3LCAweDk4LCAweDRELCAweDA5LCAweDc5LCAweEIyLAorICAgIDB4NjIsIDB4NTEsIDB4NzMsIDB4N0IsIDB4NjEsIDB4MTQsIDB4MUQsIDB4NDEsIDB4QTAsIDB4OTIsIDB4QjksIDB4NkUsIDB4MzIsIDB4QTcsIDB4RDEsIDB4NjgsCisgICAgMHhGQiwgMHg2RCwgMHg0QywgMHg4OCwgMHgzRCwgMHg3QSwgMHg1NCwgMHg4NSwgMHg0OSwgMHg3QywgMHgyNCwgMHhEOSwgMHhGRiwgMHhDNywgMHgwNywgMHg5QywKKyAgICAweEVGLCAweEY2LCAweDE2LCAweDZBLCAweEI2LCAweDFCLCAweEI0LCAweDIzLCAweDcxLCAweDQwLCAweDNCLCAweDBGLCAweEU2LCAweEM2LCAweDM1LCAweDZFLAorICAgIDB4M0IsIDB4QzcsIDB4OEYsIDB4Q0UsIDB4MDgsIDB4RkYsIDB4NkEsIDB4OTQsIDB4Q0IsIDB4QjksIDB4QTUsIDB4MjEsIDB4MzAsIDB4QUMsIDB4RTEsIDB4RTYsCisgICAgMHhCMSwgMHhEQiwgMHgzMSwgMHg4NCwgMHhCMywgMHg1QSwgMHg0MSwgMHg5RiwgMHgxMCwgMHgyMSwgMHg2OCwgMHhDRiwgMHhFRCwgMHg2QiwgMHhCNCwgMHhDRiwKKyAgICAweEFCLCAweDZFLCAweEEyLCAweDA1LCAweEYxLCAweEYxLCAweEVDLCAweEU4LCAweDI5LCAweEY0LCAweEQ5LCAweDk1LCAweDYxLCAweEMyLCAweDJBLCAweENDLAorICAgIDB4RkUsIDB4OUIsIDB4OEQsIDB4NUIsIDB4OTQsIDB4NjAsIDB4OTYsIDB4NTEsIDB4MDIsIDB4M0QsIDB4QjQsIDB4MEYsIDB4QzYsIDB4NTEsIDB4MDUsIDB4N0YsCisgICAgMHhGQiwgMHg0RSwgMHg0RCwgMHgyMSwgMHgzOCwgMHhCRiwgMHhERCwgMHgyRSwgMHgyQSwgMHhCMCwgMHg4NSwgMHhDOCwgMHgxNiwgMHhCOSwgMHg3OCwgMHhBQiwKKyAgICAweEUxLCAweEEwLCAweDU0LCAweDBFLCAweDE5LCAweDg2LCAweENELCAweDM5LCAweEJGLCAweDczLCAweDM4LCAweEZGLCAweEQzLCAweDJGLCAweEY5LCAweEVCLAorICAgIDB4MjEsIDB4QjcsIDB4OUYsIDB4OTYsIDB4OEMsIDB4MTUsIDB4NDQsIDB4MDYsIDB4RUUsIDB4MDQsIDB4MDQsIDB4QUQsIDB4M0MsIDB4Q0EsIDB4MkQsIDB4QjYsCisgICAgMHhBRiwgMHg4RiwgMHg2QiwgMHgxMSwgMHhFNCwgMHgxMiwgMHg0NiwgMHgyQSwgMHg0QSwgMHg5QiwgMHgyRiwgMHg4RiwgMHg2NiwgMHhFQiwgMHgyQiwgMHhBMSwKKyAgICAweEY3LCAweDY1LCAweDkyLCAweDE0LCAweDc4LCAweEY5LCAweEE0LCAweDVBLCAweDhBLCAweDMzLCAweDkyLCAweDg3LCAweDc1LCAweDlGLCAweDBBLCAweDI3LAorICAgIDB4NTMsIDB4QzgsIDB4QjEsIDB4RDUsIDB4QUIsIDB4QTIsIDB4NTYsIDB4QjcsIDB4OEQsIDB4QTQsIDB4QTcsIDB4MkYsIDB4OTUsIDB4QTgsIDB4QzUsIDB4QzYsCisgICAgMHhCMCwgMHhCRSwgMHhBRiwgMHg2OCwgMHg5OSwgMHgyRCwgMHg4NiwgMHgwMSwgMHgzMSwgMHg2QSwgMHg3QSwgMHhFMywgMHhERCwgMHg4NywgMHgwMywgMHgzMSwKKyAgICAweDU3LCAweDMzLCAweDMxLCAweDQ5LCAweDEyLCAweDkwLCAweEVCLCAweDFBLCAweDNDLCAweDY3LCAweDJDLCAweDYwLCAweEI4LCAweEM0LCAweDJDLCAweDZBLAorICAgIDB4RDIsIDB4MUMsIDB4RjUsIDB4MEUsIDB4MkUsIDB4NzEsIDB4MUEsIDB4MTQsIDB4MjUsIDB4RTAsIDB4QUEsIDB4RTIsIDB4RDcsIDB4QjcsIDB4OUQsIDB4Q0UsCisgICAgMHhEQSwgMHgxMiwgMHgwQywgMHg5RCwgMHg4NSwgMHgzNywgMHgwRSwgMHhGMywgMHg4QiwgMHg5RCwgMHhCRiwgMHhFNywgMHhGQiwgMHhBQywgMHg1RCwgMHgzRCwKKyAgICAweDAwLCAweDcyLCAweDRDLCAweEI5LCAweEVFLCAweDdCLCAweEY3LCAweEE2LCAweEM5LCAweEQ0LCAweEU2LCAweDI3LCAweDI0LCAweDMxLCAweEQwLCAweDU2LAorICAgIDB4NTgsIDB4NEIsIDB4MDAsIDB4MDIsIDB4QTAsIDB4MkEsIDB4REEsIDB4QkIsIDB4MjMsIDB4NDMsIDB4ODcsIDB4OEYsIDB4QzAsIDB4QjQsIDB4ODcsIDB4NkYsCisgICAgMHhENCwgMHhGOCwgMHgwRiwgMHgzOCwgMHg2RSwgMHg4MiwgMHhGQywgMHhFMiwgMHgxRSwgMHhENSwgMHg5NiwgMHgwNSwgMHhEMSwgMHgxQSwgMHg5NSwgMHgxQiwKKyAgICAweEU2LCAweEMxLCAweEYwLCAweEExLCAweDhBLCAweDBGLCAweEYwLCAweEQ0LCAweDJELCAweDAzLCAweDVELCAweDJGLCAweENELCAweEY0LCAweDBBLCAweEZGLAorICAgIDB4QkIsIDB4RDIsIDB4NzksIDB4MDYsIDB4QUEsIDB4NjUsIDB4RjEsIDB4NEQsIDB4OEUsIDB4NkUsIDB4MjQsIDB4MDgsIDB4NkQsIDB4QTUsIDB4NjYsIDB4ODQsCisgICAgMHgyOCwgMHgyNSwgMHhFMiwgMHhDMSwgMHhBOCwgMHhGQiwgMHg2RiwgMHgyRSwgMHg5OSwgMHhDMSwgMHhBOCwgMHg5OSwgMHgxNiwgMHhGOCwgMHhDRCwgMHg1RiwKKyAgICAweEY1LCAweDQxLCAweEZCLCAweEQxLCAweEM3LCAweEE2LCAweEY0LCAweDJGLCAweDRBLCAweEFFLCAweDM2LCAweEY4LCAweDlELCAweDIzLCAweDYyLCAweDVDLAorICAgIDB4M0MsIDB4NjIsIDB4RDQsIDB4RjUsIDB4NTIsIDB4NDYsIDB4REUsIDB4MjgsIDB4QjUsIDB4N0QsIDB4RkQsIDB4MjUsIDB4QjQsIDB4NTEsIDB4NzAsIDB4QjMsCisgICAgMHg1RCwgMHg1NiwgMHg5MiwgMHg1MSwgMHg4QywgMHg0QiwgMHg2OSwgMHhFOCwgMHgzNCwgMHg2NiwgMHg0MSwgMHg0RSwgMHgyMiwgMHg3MiwgMHg4MiwgMHgxQSwKKyAgICAweEVCLCAweERFLCAweDU5LCAweDVCLCAweDNDLCAweDBFLCAweDY2LCAweDdGLCAweEI2LCAweEM4LCAweDA3LCAweDJGLCAweDgyLCAweDg5LCAweERBLCAweEM0LAorICAgIDB4OEUsIDB4QzQsIDB4NzAsIDB4QTEsIDB4RUEsIDB4RDMsIDB4QTksIDB4MjgsIDB4RkUsIDB4OUIsIDB4Q0EsIDB4RTgsIDB4ODksIDB4RDEsIDB4RTAsIDB4QzYsCisgICAgMHgzNiwgMHg5MSwgMHgwOSwgMHg5OCwgMHg0RiwgMHgyOCwgMHg5QiwgMHgxMCwgMHg0QiwgMHg4OSwgMHhEQiwgMHhDNCwgMHhDQSwgMHg2MCwgMHg1NywgMHhBMCwKKyAgICAweDBGLCAweDA0LCAweDNGLCAweDFCLCAweDc1LCAweEFFLCAweDVBLCAweDlGLCAweDBBLCAweEZCLCAweENDLCAweDZGLCAweDQ2LCAweEU4LCAweEMxLCAweEIwLAorICAgIDB4OTgsIDB4MUQsIDB4NkIsIDB4QzMsIDB4M0MsIDB4RUEsIDB4ODMsIDB4NUUsIDB4QkYsIDB4MjEsIDB4NUUsIDB4MjgsIDB4M0MsIDB4OEUsIDB4RjQsIDB4NkIsCisgICAgMHhBQSwgMHgzRiwgMHgwRSwgMHhCQywgMHhCNSwgMHhBRCwgMHg2NSwgMHhFRiwgMHhBMywgMHhCMSwgMHg3MywgMHgzQywgMHg1NSwgMHg1MiwgMHhCNiwgMHhCQywKKyAgICAweDVFLCAweEE0LCAweEM2LCAweDI3LCAweDg4LCAweEVCLCAweDM0LCAweEIxLCAweDYxLCAweDVGLCAweDAzLCAweDIwLCAweDY2LCAweDk1LCAweDlCLCAweEM2LAorICAgIDB4OTQsIDB4QzEsIDB4NjUsIDB4QUEsIDB4OEUsIDB4NEUsIDB4NDEsIDB4QjQsIDB4QjIsIDB4NDUsIDB4MDQsIDB4NDIsIDB4QTAsIDB4QzMsIDB4QjEsIDB4RDIsCisgICAgMHg0NiwgMHgwQSwgMHhGRSwgMHg0QSwgMHhERCwgMHhDMywgMHhDMCwgMHgwMSwgMHg2QSwgMHgzRiwgMHhBRiwgMHhGNSwgMHhERSwgMHg5MiwgMHhDMywgMHhGMCwKKyAgICAweEVDLCAweERGLCAweDY5LCAweEVDLCAweDI1LCAweDFGLCAweDQzLCAweDRFLCAweDg3LCAweDgwLCAweEY5LCAweEQ3LCAweDU0LCAweDkyLCAweDhFLCAweDAyLAorICAgIDB4Q0MsIDB4RjAsIDB4NDYsIDB4NzksIDB4OUMsIDB4MkEsIDB4NUYsIDB4Q0YsIDB4MjQsIDB4M0YsIDB4N0YsIDB4RDMsIDB4MkYsIDB4QkUsIDB4NzEsIDB4NTEsCisgICAgMHhDRCwgMHhBQywgMHg3MywgMHhENSwgMHg2MCwgMHg0NCwgMHg3RSwgMHg5NiwgMHhFNiwgMHg1RiwgMHhGRCwgMHgwOCwgMHg0NiwgMHgxNywgMHgxMCwgMHgzQSwKKyAgICAweDcxLCAweEY2LCAweDhFLCAweEFGLCAweDZFLCAweEZDLCAweDRFLCAweDA1LCAweEQxLCAweDQzLCAweEMwLCAweEYxLCAweDc3LCAweEVFLCAweDAyLCAweDk0LAorICAgIDB4OEQsIDB4ODQsIDB4MzIsIDB4QjUsIDB4N0UsIDB4NDAsIDB4M0YsIDB4RjksIDB4NzQsIDB4RjEsIDB4NUIsIDB4Q0MsIDB4REEsIDB4QjUsIDB4NDgsIDB4RUMsCisgICAgMHg1QSwgMHhFQywgMHhDMCwgMHgxRCwgMHg1MCwgMHg5RCwgMHg4NiwgMHg2RiwgMHhCRiwgMHg0MiwgMHhBRSwgMHhFRSwgMHg5MywgMHg0NiwgMHhFRiwgMHhFQywKKyAgICAweDBGLCAweEZFLCAweDEzLCAweDM3LCAweDdELCAweEQzLCAweEY0LCAweEFGLCAweDdGLCAweDZGLCAweDYyLCAweDYxLCAweEEzLCAweDFBLCAweEQxLCAweEVGLAorICAgIDB4OEQsIDB4Q0YsIDB4OUUsIDB4RTMsIDB4NDYsIDB4OEEsIDB4OUYsIDB4MzUsIDB4M0EsIDB4QjQsIDB4QkMsIDB4QTcsIDB4OUYsIDB4M0YsIDB4OTAsIDB4MTYsCisgICAgMHg2NiwgMHhCQiwgMHg2QiwgMHg1QiwgMHg0NywgMHhGOSwgMHhENSwgMHg4MCwgMHg1MywgMHgyNiwgMHg2OSwgMHgwRiwgMHgwRSwgMHg1RCwgMHhBRCwgMHgzRSwKKyAgICAweDQyLCAweDc1LCAweEQxLCAweDY1LCAweDYyLCAweERELCAweEJCLCAweEJCLCAweDBGLCAweDJCLCAweDExLCAweENDLCAweEVFLCAweDFELCAweDQ3LCAweDJFLAorICAgIDB4RDcsIDB4ODMsIDB4NzEsIDB4Q0UsIDB4MjQsIDB4MUMsIDB4QTQsIDB4QzMsIDB4QTEsIDB4MEMsIDB4OUYsIDB4OTksIDB4NTEsIDB4NTksIDB4MzksIDB4OEYsCisgICAgMHgyNCwgMHhEQSwgMHgxNiwgMHhBMSwgMHgxQSwgMHhFMywgMHg2OSwgMHgwNywgMHgyNywgMHg1QiwgMHhBQSwgMHhBNywgMHgyNCwgMHhBMiwgMHhFQiwgMHgyQiwKKyAgICAweDQ5LCAweDI5LCAweDIxLCAweEEwLCAweEEzLCAweEM5LCAweDBELCAweEM3LCAweEI1LCAweDBELCAweERGLCAweEEzLCAweEVELCAweEQ4LCAweDM3LCAweDk3LAorICAgIDB4NDcsIDB4NTYsIDB4QUIsIDB4NkUsIDB4OEMsIDB4NjQsIDB4RTMsIDB4REMsIDB4MkYsIDB4MUMsIDB4MEYsIDB4NDQsIDB4NzEsIDB4MjMsIDB4RjcsIDB4NTksCisgICAgMHgyNiwgMHhBQiwgMHhEQSwgMHg4QywgMHg3RCwgMHg1QSwgMHg4MCwgMHgxNSwgMHgyRCwgMHhBMCwgMHg5MiwgMHg1QywgMHg2QSwgMHg4RiwgMHgwNywgMHg4OCwKKyAgICAweDE0LCAweEVELCAweEFFLCAweDU2LCAweDM1LCAweEY0LCAweDNFLCAweEJGLCAweDY5LCAweDg0LCAweEUwLCAweEFFLCAweDYwLCAweEI5LCAweEY2LCAweDhBLAorICAgIDB4MkIsIDB4NTMsIDB4MjIsIDB4Q0UsIDB4MUMsIDB4OTUsIDB4ODUsIDB4QkMsIDB4RUMsIDB4RTQsIDB4RTMsIDB4RTIsIDB4OTYsIDB4QzAsIDB4Q0YsIDB4QTUsCisgICAgMHg1RCwgMHgyNSwgMHgwQywgMHg4NSwgMHg1MSwgMHgyQSwgMHhDNSwgMHgzOCwgMHgyNSwgMHg5NywgMHhEQywgMHg3QywgMHgxNCwgMHgzOSwgMHgxRiwgMHhCNCwKKyAgICAweDNDLCAweEJGLCAweDY1LCAweDBGLCAweDQxLCAweEQxLCAweEU1LCAweDgxLCAweENBLCAweEYzLCAweEI3LCAweDFDLCAweEM1LCAweEM0LCAweEMwLCAweEI4LAorICAgIDB4QkIsIDB4Q0UsIDB4MzksIDB4N0MsIDB4MkUsIDB4MUYsIDB4MjcsIDB4QUQsIDB4MTYsIDB4OEEsIDB4NjksIDB4NjksIDB4MUQsIDB4M0IsIDB4ODksIDB4NEUsCisgICAgMHhDMywgMHgyOCwgMHgxQywgMHgxQiwgMHg0NywgMHg5OCwgMHhBMywgMHhEQiwgMHhDOSwgMHg2OSwgMHg2RSwgMHgxMSwgMHhENiwgMHhBMCwgMHgwOCwgMHg3NCwKKyAgICAweDhCLCAweDM3LCAweDRCLCAweDY2LCAweDdBLCAweDEyLCAweDcwLCAweDM1LCAweDg0LCAweDM4LCAweDI3LCAweDhGLCAweEFDLCAweEM5LCAweEZGLCAweEZDLAorICAgIDB4QzIsIDB4MUEsIDB4MEYsIDB4NTgsIDB4OEUsIDB4N0UsIDB4RjEsIDB4Q0QsIDB4NzMsIDB4NzQsIDB4MDksIDB4NTcsIDB4MjQsIDB4QkMsIDB4QTMsIDB4MEIsCisgICAgMHhCRCwgMHg2RCwgMHg4RSwgMHg2MywgMHgwOSwgMHgxNSwgMHhCRCwgMHg3RiwgMHgwOSwgMHhEQSwgMHhFMSwgMHgwNiwgMHgzNCwgMHgwQiwgMHg3NCwgMHhCOCwKKyAgICAweEI4LCAweDlELCAweDhBLCAweEZBLCAweDRFLCAweDFFLCAweEY0LCAweDZBLCAweDhDLCAweDRDLCAweEQ2LCAweDM0LCAweDNGLCAweDgyLCAweEQyLCAweDg0LAorICAgIDB4RDUsIDB4REEsIDB4MkQsIDB4REIsIDB4Q0QsIDB4OUYsIDB4MkEsIDB4MUQsIDB4RTgsIDB4MjQsIDB4NDMsIDB4RUMsIDB4OTQsIDB4Q0YsIDB4NTEsIDB4QkYsCisgICAgMHg0OCwgMHg1MCwgMHhDNSwgMHg3MSwgMHg3MywgMHg3OCwgMHgzNSwgMHhEOSwgMHg5OCwgMHgxRSwgMHhDRiwgMHg5NiwgMHgwMiwgMHg3NCwgMHgyOSwgMHhFOSwKKyAgICAweDMwLCAweDAyLCAweDVCLCAweEVDLCAweDY2LCAweEQ4LCAweEQwLCAweEI2LCAweDRELCAweDMzLCAweDNGLCAweDJBLCAweEY0LCAweDJBLCAweEM2LCAweEFELAorICAgIDB4ODIsIDB4OUEsIDB4MUQsIDB4NjIsIDB4RTIsIDB4REEsIDB4MDUsIDB4RTcsIDB4OEMsIDB4NjksIDB4Q0IsIDB4QjQsIDB4QjgsIDB4RDksIDB4RUIsIDB4N0QsCisgICAgMHg0OSwgMHhENiwgMHg1RSwgMHhERCwgMHhBNSwgMHg4NSwgMHhCNSwgMHgzRiwgMHgwOCwgMHhFQiwgMHgzMywgMHhBNiwgMHgyRCwgMHg2OCwgMHgxNywgMHhGMiwKKyAgICAweDIwLCAweDNELCAweEVDLCAweEFDLCAweDcxLCAweDhDLCAweDUxLCAweDdBLCAweDIwLCAweDA1LCAweDYzLCAweEYzLCAweDdBLCAweDk4LCAweDRBLCAweDI2LAorICAgIDB4MkUsIDB4RUMsIDB4RDEsIDB4OUIsIDB4NTAsIDB4N0QsIDB4RUIsIDB4MzcsIDB4RDMsIDB4RDksIDB4MjEsIDB4NkIsIDB4OTcsIDB4MDYsIDB4OUYsIDB4MTAsCisgICAgMHgwQSwgMHg4QiwgMHg1NiwgMHg2RCwgMHg3QiwgMHg3OCwgMHg5RCwgMHhGNiwgMHg4OSwgMHg4QiwgMHhERiwgMHg3QiwgMHgyMSwgMHhGMCwgMHg1NSwgMHg4NSwKKyAgICAweEY4LCAweDIzLCAweEFCLCAweEVBLCAweDVBLCAweEY4LCAweDBDLCAweEI4LCAweEI5LCAweDEzLCAweERBLCAweENDLCAweDBBLCAweDM1LCAweDIxLCAweEFGLAorICAgIDB4NzgsIDB4ODcsIDB4MzMsIDB4NzgsIDB4ODksIDB4MzksIDB4MUUsIDB4MTUsIDB4RDcsIDB4MTQsIDB4NDksIDB4QzksIDB4MTQsIDB4NjAsIDB4MzksIDB4QUMsCisgICAgMHg0QywgMHg3NiwgMHg2NCwgMHhENywgMHhDRiwgMHg4QSwgMHg0QSwgMHhEQSwgMHhGNywgMHgyMCwgMHhDRCwgMHg0NiwgMHhCNCwgMHgzQiwgMHgyMCwgMHg2MCwKKyAgICAweDQzLCAweDZCLCAweDUyLCAweEQ5LCAweDIwLCAweDEwLCAweDhBLCAweEY5LCAweEY3LCAweDM0LCAweERBLCAweDVFLCAweENGLCAweEQxLCAweENDLCAweDYwLAorICAgIDB4MzEsIDB4RjgsIDB4RTUsIDB4NUMsIDB4RjUsIDB4QzgsIDB4Q0IsIDB4M0MsIDB4RjYsIDB4NjMsIDB4RDQsIDB4MjYsIDB4QTEsIDB4NDEsIDB4NzEsIDB4Q0QsCisgICAgMHg3MywgMHg5NywgMHhCRiwgMHgyNywgMHgyQSwgMHgyQywgMHgwQywgMHg3NSwgMHg2RCwgMHg0QSwgMHhBMCwgMHg4QSwgMHgwRCwgMHgwMiwgMHg1MywgMHhCQSwKKyAgICAweDcyLCAweEEzLCAweEUwLCAweEU2LCAweDFBLCAweDg1LCAweEM1LCAweEQ3LCAweEYxLCAweDQ5LCAweDRGLCAweDI0LCAweDE2LCAweDM1LCAweDNGLCAweDBDLAorICAgIDB4MkIsIDB4Q0UsIDB4OUMsIDB4MzUsIDB4MEYsIDB4MjMsIDB4QTMsIDB4N0MsIDB4Q0UsIDB4QzgsIDB4RUQsIDB4MzQsIDB4MkMsIDB4Q0MsIDB4MzMsIDB4MEEsCisgICAgMHg3MywgMHhBMywgMHg1OCwgMHg1MywgMHg3OCwgMHg1NSwgMHhEMSwgMHhDMiwgMHgwOCwgMHhDQSwgMHgwMywgMHhCRSwgMHg2RSwgMHgxRCwgMHg5QywgMHhEMiwKKyAgICAweDY3LCAweDcxLCAweDRELCAweDc3LCAweDlBLCAweDYzLCAweEExLCAweDdDLCAweDMxLCAweDExLCAweDNELCAweERFLCAweEUwLCAweERDLCAweDBELCAweDA2LAorICAgIDB4REQsIDB4QUYsIDB4MTYsIDB4NjUsIDB4RjYsIDB4RjAsIDB4MjcsIDB4MjgsIDB4OUEsIDB4QkEsIDB4RUQsIDB4RTIsIDB4QzIsIDB4MjcsIDB4MkIsIDB4NzQsCisgICAgMHgyRCwgMHhGOCwgMHg2RSwgMHhFMSwgMHgwQywgMHhCMiwgMHhDNywgMHhCRiwgMHhEMywgMHgwQSwgMHg5NCwgMHgwRSwgMHgzQSwgMHhFMSwgMHgwNCwgMHgzNCwKKyAgICAweDk3LCAweEE3LCAweDdFLCAweDAxLCAweEEwLCAweDMxLCAweDg5LCAweDg2LCAweDA1LCAweDI4LCAweDg0LCAweDBDLCAweDNFLCAweEI1LCAweDIyLCAweDI2LAorICAgIDB4NkUsIDB4NTIsIDB4RkQsIDB4M0IsIDB4MzksIDB4NUIsIDB4QjcsIDB4RUMsIDB4NDksIDB4NTAsIDB4MjEsIDB4QTYsIDB4NTgsIDB4MjAsIDB4NTAsIDB4MTEsCisgICAgMHg1RCwgMHg5RSwgMHhGRiwgMHhGNSwgMHg5MywgMHg3NCwgMHgzOSwgMHgyNCwgMHhCRCwgMHhCQSwgMHg1QSwgMHhCNSwgMHg0RSwgMHgzNSwgMHhFQiwgMHgxMywKKyAgICAweDMxLCAweDA0LCAweDNELCAweEFELCAweEJFLCAweEJCLCAweDQzLCAweDI0LCAweEMxLCAweDhGLCAweDJBLCAweDQzLCAweDZELCAweDg1LCAweDZDLCAweDhFLAorICAgIDB4NzgsIDB4NkEsIDB4N0YsIDB4RTMsIDB4NUMsIDB4RTQsIDB4QzEsIDB4NEEsIDB4NjgsIDB4NDYsIDB4QzQsIDB4QTQsIDB4RUIsIDB4OEEsIDB4QjAsIDB4RkIsCisgICAgMHgwMiwgMHhFOSwgMHg3NiwgMHg0OSwgMHgwQywgMHg5MCwgMHgzRiwgMHg0RiwgMHg3OSwgMHgzOSwgMHhBOSwgMHg5MywgMHg2MSwgMHg2NiwgMHg0RiwgMHg2MCwKKyAgICAweDhBLCAweDVDLCAweDkxLCAweENDLCAweDJELCAweDJELCAweDQzLCAweENELCAweDM4LCAweEU3LCAweDZCLCAweEUxLCAweEE1LCAweEE5LCAweDUzLCAweEM5LAorICAgIDB4MEUsIDB4QkIsIDB4MzYsIDB4MTAsIDB4MkMsIDB4REYsIDB4MkUsIDB4QjUsIDB4RDEsIDB4ODEsIDB4Q0MsIDB4NEYsIDB4QUYsIDB4NzcsIDB4MjEsIDB4RkMsCisgICAgMHhBOCwgMHhGQiwgMHg3OCwgMHgzRCwgMHhGMCwgMHgxNiwgMHg3NiwgMHhDRiwgMHg5NywgMHg2NywgMHhFOCwgMHgyQiwgMHgyOSwgMHgwMCwgMHg5MywgMHhBRiwKKyAgICAweDYwLCAweDY2LCAweDM4LCAweDBDLCAweDRBLCAweEVELCAweEFBLCAweEE3LCAweDg5LCAweDNGLCAweEU4LCAweDQwLCAweDlELCAweDAyLCAweEE3LCAweEI3LAorICAgIDB4OTUsIDB4NTEsIDB4QkUsIDB4NTcsIDB4NDUsIDB4QzUsIDB4N0UsIDB4MUUsIDB4QUQsIDB4MDksIDB4NkMsIDB4RDksIDB4ODEsIDB4NTYsIDB4QTIsIDB4OTIsCisgICAgMHg3MiwgMHgxNywgMHhEMiwgMHg4NiwgMHg2MiwgMHg3QSwgMHg2MiwgMHgwQSwgMHhBRSwgMHhFQywgMHgwRCwgMHgyNywgMHgzNSwgMHg0MCwgMHhGQSwgMHhBRSwKKyAgICAweDc4LCAweEVBLCAweDcwLCAweEQ0LCAweEYwLCAweERBLCAweENELCAweDg3LCAweEY1LCAweDlELCAweDVGLCAweDgzLCAweENCLCAweDNCLCAweDA3LCAweDUyLAorICAgIDB4RDAsIDB4QTIsIDB4QjQsIDB4MjIsIDB4OEUsIDB4REYsIDB4QUEsIDB4RjYsIDB4QUIsIDB4MzEsIDB4OTEsIDB4OTAsIDB4QkUsIDB4MjEsIDB4RjksIDB4N0QsCisgICAgMHg4NywgMHgyMywgMHgxQywgMHg1OSwgMHgwMCwgMHgwNSwgMHhGNSwgMHg0RiwgMHg5QiwgMHhCQiwgMHg2RCwgMHg1MCwgMHg3RSwgMHg1NiwgMHg2QiwgMHgzRSwKKyAgICAweEFFLCAweDlCLCAweDZGLCAweEFCLCAweDg4LCAweEVDLCAweEFFLCAweDBGLCAweDZDLCAweDg5LCAweEFCLCAweDI2LCAweDZCLCAweDVBLCAweEQ5LCAweDZELAorICAgIDB4RjEsIDB4MjMsIDB4OUUsIDB4QjMsIDB4RUIsIDB4OTcsIDB4MDgsIDB4RjAsIDB4MEUsIDB4NUMsIDB4ODAsIDB4MDAsIDB4Q0QsIDB4N0EsIDB4NEYsIDB4NjQsCisgICAgMHhGOSwgMHgxQSwgMHg4MCwgMHgwRCwgMHhGQSwgMHgzRCwgMHg0MiwgMHg3MSwgMHgzOSwgMHg4MywgMHgxNSwgMHg4QSwgMHhGRiwgMHg5MSwgMHg5RiwgMHg4MCwKKyAgICAweDBGLCAweDY3LCAweEFBLCAweEJCLCAweEIwLCAweDY3LCAweDQ1LCAweDMwLCAweERELCAweDg2LCAweDhDLCAweDFELCAweEY3LCAweDdBLCAweEIzLCAweDI4LAorICAgIDB4QTEsIDB4RDYsIDB4NTYsIDB4NjMsIDB4RDIsIDB4NzUsIDB4MTAsIDB4RjAsIDB4NzcsIDB4NTMsIDB4MUEsIDB4OTUsIDB4OUEsIDB4NDksIDB4RDcsIDB4M0UsCisgICAgMHhBQSwgMHgyNCwgMHg5MiwgMHgwMiwgMHg5MiwgMHhGNSwgMHg3RCwgMHgyRiwgMHg4RiwgMHgyNCwgMHgzNiwgMHgxMSwgMHg1OSwgMHhDRiwgMHg2MiwgMHhBNiwKKyAgICAweDY5LCAweENELCAweEI1LCAweDY2LCAweDc1LCAweDIwLCAweDE2LCAweDQxLCAweEMxLCAweDRGLCAweEU1LCAweDgxLCAweEM0LCAweEMyLCAweDkxLCAweDY5LAorICAgIDB4QzAsIDB4RjEsIDB4QTMsIDB4MDEsIDB4NkIsIDB4QTksIDB4MEYsIDB4NTUsIDB4MkQsIDB4MjksIDB4RDcsIDB4MUQsIDB4REQsIDB4N0QsIDB4OUUsIDB4Q0YsCisgICAgMHhGNSwgMHgwNSwgMHhGQSwgMHg3QywgMHgxRiwgMHg4QiwgMHhDOSwgMHhDQSwgMHgzNCwgMHg2NiwgMHhFRiwgMHgzQywgMHgyNCwgMHg5QSwgMHhBRSwgMHhDRiwKKyAgICAweENCLCAweDEyLCAweEIxLCAweEU1LCAweDU5LCAweEQ5LCAweDMwLCAweDkwLCAweEIzLCAweEE3LCAweEU5LCAweDM4LCAweDlBLCAweDczLCAweDFDLCAweERFLAorICAgIDB4QkUsIDB4NjIsIDB4NzcsIDB4NUUsIDB4NzUsIDB4QkYsIDB4MzcsIDB4MzksIDB4MjcsIDB4QkEsIDB4OTEsIDB4RUIsIDB4RUQsIDB4QUIsIDB4QjUsIDB4Q0UsCisgICAgMHg4RSwgMHg2RSwgMHhCRCwgMHhENCwgMHg2NCwgMHg2NCwgMHg0NywgMHgxNiwgMHgxNCwgMHg5OCwgMHhDNiwgMHhGMCwgMHhCNiwgMHg0QSwgMHhFOCwgMHhCNywKKyAgICAweDY3LCAweDg2LCAweEM1LCAweENCLCAweENFLCAweEIxLCAweDdCLCAweEMwLCAweERFLCAweDg3LCAweEY3LCAweDhFLCAweEU3LCAweDIxLCAweDNBLCAweDg2LAorICAgIDB4QjUsIDB4OUMsIDB4MzgsIDB4QkEsIDB4NjAsIDB4OTgsIDB4RkEsIDB4OTMsIDB4QkEsIDB4NjMsIDB4RTMsIDB4MEYsIDB4NzQsIDB4QjEsIDB4NkIsIDB4MzksCisgICAgMHg2OCwgMHhCNiwgMHg1MywgMHhCMSwgMHg4QSwgMHhCQiwgMHg3NiwgMHg2NSwgMHg3NCwgMHgxRCwgMHg5OSwgMHhCQSwgMHgwMSwgMHg4QSwgMHhFMywgMHg3QywKKyAgICAweEMwLCAweDczLCAweDJBLCAweDk4LCAweDEzLCAweDBFLCAweDIyLCAweEI0LCAweEY2LCAweEM0LCAweEY5LCAweDg5LCAweEFGLCAweDlCLCAweDUyLCAweDZGLAorICAgIDB4MjgsIDB4RUMsIDB4OEUsIDB4MTMsIDB4QzQsIDB4RDQsIDB4OTcsIDB4NzQsIDB4MkUsIDB4REIsIDB4NkYsIDB4QTgsIDB4NDEsIDB4RTMsIDB4REMsIDB4NkEsCisgICAgMHhFNCwgMHhCOCwgMHgxOCwgMHgyQywgMHgxOSwgMHg1OSwgMHhFMSwgMHg0NSwgMHhDNSwgMHhFRCwgMHg4RiwgMHhDQSwgMHgyNCwgMHgyQSwgMHgzRiwgMHhBRCwKKyAgICAweERBLCAweDk4LCAweEMxLCAweDcwLCAweDdGLCAweEYzLCAweDg3LCAweEUxLCAweEI4LCAweEJDLCAweEY1LCAweEZCLCAweDI5LCAweDdCLCAweDEyLCAweDI2LAorICAgIDB4MjIsIDB4MUEsIDB4NUIsIDB4NTksIDB4MjEsIDB4MjEsIDB4NzksIDB4MzAsIDB4QTcsIDB4NjksIDB4MTMsIDB4RDksIDB4OUUsIDB4NjIsIDB4MDIsIDB4NzcsCisgICAgMHg4NCwgMHhCOSwgMHg4NywgMHhEMywgMHhDQiwgMHgwRSwgMHhCMCwgMHg3MywgMHg1OCwgMHgyMSwgMHhGRSwgMHgxOCwgMHg2QSwgMHg5MiwgMHg5NCwgMHgzMCwKKyAgICAweEVDLCAweDA2LCAweDExLCAweEI5LCAweEM4LCAweDk5LCAweDZCLCAweEU5LCAweEZFLCAweDQ0LCAweDlELCAweDA0LCAweEJBLCAweEM5LCAweDkyLCAweDdFLAorICAgIDB4NDYsIDB4N0IsIDB4ODEsIDB4NEEsIDB4NzAsIDB4NzksIDB4NTYsIDB4N0YsIDB4MzksIDB4OTYsIDB4NTgsIDB4QzYsIDB4MzUsIDB4OEEsIDB4OEYsIDB4OTgsCisgICAgMHg0NywgMHhGOCwgMHhEOSwgMHgxNiwgMHg4MSwgMHhDMSwgMHg3OSwgMHg0MywgMHgwOCwgMHhGOSwgMHg0QSwgMHhDNywgMHhCQSwgMHgzMSwgMHhDQSwgMHhDMywKKyAgICAweDBELCAweEVBLCAweDcxLCAweDQwLCAweDQyLCAweDJFLCAweDI5LCAweEYyLCAweEIxLCAweDk2LCAweEZCLCAweEMwLCAweDk4LCAweDNCLCAweDJGLCAweEIyLAorICAgIDB4OEQsIDB4ODIsIDB4QkEsIDB4QjAsIDB4OEQsIDB4M0QsIDB4NzgsIDB4MTAsIDB4RjIsIDB4MzMsIDB4NTUsIDB4RDIsIDB4MDIsIDB4OTgsIDB4M0EsIDB4RjMsCisgICAgMHg0MywgMHg4RiwgMHg4RCwgMHgyNywgMHhEMCwgMHgxQiwgMHg1MCwgMHgwNCwgMHhCMiwgMHhBOCwgMHg0MiwgMHgzNiwgMHhFNywgMHhEOSwgMHgyQiwgMHg0QSwKKyAgICAweDMzLCAweDlFLCAweEJGLCAweDQ2LCAweDEyLCAweDE3LCAweDgyLCAweDg5LCAweEVBLCAweEFBLCAweDM1LCAweDdGLCAweDNDLCAweDZCLCAweEVDLCAweEMyLAorICAgIDB4ODQsIDB4MzMsIDB4QUIsIDB4MTAsIDB4MjUsIDB4NTksIDB4MEYsIDB4MkIsIDB4OTAsIDB4M0YsIDB4RjQsIDB4MkEsIDB4OTcsIDB4NkYsIDB4RDUsIDB4NkMsCisgICAgMHhFMywgMHgwOCwgMHgwNywgMHhBOSwgMHhGQywgMHg4NCwgMHg3QiwgMHg1MSwgMHgyRiwgMHgyMywgMHgyQSwgMHg2RSwgMHhGMSwgMHgwRiwgMHhFRiwgMHg0OCwKKyAgICAweDlGLCAweDY2LCAweDhGLCAweDVDLCAweDlBLCAweDIxLCAweDg0LCAweEQ3LCAweEIxLCAweDE0LCAweDgyLCAweEEyLCAweEU0LCAweEU2LCAweDcyLCAweDU2LAorICAgIDB4NDYsIDB4Q0IsIDB4MjYsIDB4MkYsIDB4RTIsIDB4NkQsIDB4NUIsIDB4MDcsIDB4QTYsIDB4RjMsIDB4OTQsIDB4MjQsIDB4MjQsIDB4NTgsIDB4NDUsIDB4RjQsCisgICAgMHhCNCwgMHg1NCwgMHg5MCwgMHhGRiwgMHg1OSwgMHgxNywgMHgwNCwgMHhDOCwgMHg5QSwgMHg0RCwgMHg4MiwgMHhFRiwgMHgyNCwgMHhCQiwgMHgyQywgMHgxMSwKKyAgICAweDlGLCAweDJELCAweEQ0LCAweEU1LCAweDBBLCAweDJBLCAweEYwLCAweDk0LCAweDY0LCAweDQ4LCAweEZGLCAweEI0LCAweDdELCAweDAxLCAweDQyLCAweEJFLAorICAgIDB4OEYsIDB4QjIsIDB4MkYsIDB4MkEsIDB4MEEsIDB4MTcsIDB4QjAsIDB4QTIsIDB4MEIsIDB4NUUsIDB4MzIsIDB4MDUsIDB4MkEsIDB4MEEsIDB4RTUsIDB4RjYsCisgICAgMHgzRCwgMHhBOCwgMHgxMiwgMHhCRCwgMHg1QywgMHg0RiwgMHg1OSwgMHg3NiwgMHhBQiwgMHg5QywgMHg4OSwgMHg5OCwgMHhGRCwgMHhDRSwgMHgwQiwgMHhBMSwKKyAgICAweDYyLCAweDRELCAweDNBLCAweDE2LCAweEE1LCAweDgwLCAweDYyLCAweDhCLCAweDUyLCAweEQ0LCAweDJBLCAweDhFLCAweEMwLCAweDE3LCAweEUzLCAweDQyLAorICAgIDB4QTYsIDB4NzAsIDB4NDAsIDB4NkIsIDB4RTgsIDB4RTcsIDB4RDcsIDB4QTcsIDB4NDMsIDB4MTIsIDB4RjYsIDB4QjMsIDB4N0EsIDB4RTIsIDB4RkUsIDB4NDIsCisgICAgMHhCMCwgMHhBRiwgMHgzMywgMHg1NiwgMHgxMCwgMHhCMSwgMHg2OSwgMHgzRCwgMHg3QiwgMHg3RiwgMHhERSwgMHhDNiwgMHhFMSwgMHgwRiwgMHhDQywgMHg1QiwKKyAgICAweEY5LCAweDUzLCAweDA4LCAweDgwLCAweDA1LCAweDMzLCAweEQ4LCAweDA5LCAweDdCLCAweDg3LCAweDcxLCAweEUwLCAweEY1LCAweENBLCAweEI1LCAweEZCLAorICAgIDB4QjQsIDB4M0MsIDB4NEEsIDB4NkIsIDB4MTAsIDB4QkEsIDB4QTYsIDB4RTYsIDB4NjksIDB4RDYsIDB4OEUsIDB4OEMsIDB4NUIsIDB4MzMsIDB4MDcsIDB4RTgsCisgICAgMHgyMiwgMHhCOSwgMHhGOCwgMHgzQywgMHhFRiwgMHhFMCwgMHhEQSwgMHgwNiwgMHg1NCwgMHhDQiwgMHgxNCwgMHhEQiwgMHgyQiwgMHg1MCwgMHg5MiwgMHhCMiwKKyAgICAweDVDLCAweEI4LCAweENCLCAweEI2LCAweDQwLCAweEIxLCAweDkxLCAweEQ0LCAweEQ3LCAweEY5LCAweEMyLCAweDA4LCAweDc3LCAweEM5LCAweEI3LCAweDAwLAorICAgIDB4OUIsIDB4MzIsIDB4MjAsIDB4QzQsIDB4MDgsIDB4MzksIDB4RUUsIDB4RDYsIDB4MzIsIDB4QjgsIDB4NjMsIDB4MEYsIDB4MUEsIDB4NzMsIDB4MzMsIDB4NzMsCisgICAgMHhFMSwgMHhGQiwgMHgwRSwgMHg5NCwgMHg3NSwgMHhDRSwgMHgzNywgMHhBNCwgMHhBRiwgMHhCQywgMHgzOSwgMHhBQiwgMHgyNSwgMHgzNSwgMHhBNywgMHhERiwKKyAgICAweEMyLCAweDlCLCAweEY1LCAweEQ3LCAweDUyLCAweDQ0LCAweERFLCAweDIxLCAweDUwLCAweDVGLCAweDNFLCAweEE2LCAweDM3LCAweDlFLCAweDkxLCAweDU2LAorICAgIDB4MTIsIDB4ODIsIDB4Q0IsIDB4QTAsIDB4QUUsIDB4NkYsIDB4QTgsIDB4ODEsIDB4MEMsIDB4M0IsIDB4QzAsIDB4NEMsIDB4RUUsIDB4NDcsIDB4NTcsIDB4NzksCisgICAgMHhDMSwgMHg0OSwgMHg0QiwgMHg3QSwgMHg5MiwgMHhDNywgMHg5NSwgMHhBNCwgMHhENiwgMHgzRSwgMHgyNSwgMHhFNSwgMHhDRiwgMHg1NSwgMHg2NSwgMHgxMCwKKyAgICAweDUyLCAweDU4LCAweEVBLCAweDRGLCAweEZDLCAweDM0LCAweEIxLCAweDBFLCAweDBFLCAweDJFLCAweDQ1LCAweDRDLCAweEQ3LCAweEI3LCAweDkyLCAweEM0LAorICAgIDB4NzAsIDB4RTUsIDB4MzMsIDB4QTEsIDB4MjIsIDB4NDksIDB4MDQsIDB4RjgsIDB4QUYsIDB4NUUsIDB4NkQsIDB4NEIsIDB4REUsIDB4NzYsIDB4Q0QsIDB4NTAsCisgICAgMHg0MCwgMHhGQiwgMHhGRCwgMHg3QiwgMHhDMywgMHhGMiwgMHhFQSwgMHg0QiwgMHhFQSwgMHhBNywgMHg2NiwgMHg0NCwgMHgyQiwgMHg0RCwgMHgwQywgMHhBMywKKyAgICAweEM0LCAweEFBLCAweDlDLCAweDUwLCAweDM2LCAweDVBLCAweDRELCAweEI3LCAweDA0LCAweDgxLCAweDVDLCAweEJELCAweDQwLCAweDYyLCAweDEyLCAweDZBLAorICAgIDB4NEMsIDB4MTMsIDB4MzUsIDB4NEUsIDB4NDcsIDB4MTYsIDB4RDksIDB4NDMsIDB4RTUsIDB4OEEsIDB4NDQsIDB4NkQsIDB4NDksIDB4NzEsIDB4MzAsIDB4QTksCisgICAgMHg0QywgMHhERSwgMHgzMSwgMHgxRSwgMHgyQSwgMHhFMSwgMHhEQiwgMHhCRiwgMHgxRiwgMHhCNiwgMHg3QywgMHgzNiwgMHhBQSwgMHgwRiwgMHgwMiwgMHhCQSwKKyAgICAweDg1LCAweDg3LCAweEZDLCAweDQ3LCAweDkwLCAweDM0LCAweEQ1LCAweDEzLCAweDlFLCAweDA5LCAweDJCLCAweEMzLCAweEVDLCAweDgzLCAweDgwLCAweDlELAorICAgIDB4RkUsIDB4M0QsIDB4MTgsIDB4QkEsIDB4RkIsIDB4NTEsIDB4OEQsIDB4NzksIDB4RjYsIDB4RkEsIDB4MzgsIDB4NDgsIDB4NjAsIDB4MTQsIDB4Q0MsIDB4NjAsCisgICAgMHg4MSwgMHg1NywgMHhFRSwgMHhBNSwgMHgwNCwgMHgxQiwgMHg0QSwgMHgwRSwgMHg0MywgMHgxNSwgMHgwMCwgMHg1NywgMHhFMiwgMHgwQSwgMHhCQywgMHhGNCwKKyAgICAweDE0LCAweDNCLCAweDk2LCAweDk1LCAweEYzLCAweEZDLCAweDRFLCAweDEzLCAweDZGLCAweDBELCAweDYzLCAweDg1LCAweEQwLCAweEIwLCAweDNCLCAweENBLAorICAgIDB4MEEsIDB4ODAsIDB4M0QsIDB4MTEsIDB4RDEsIDB4N0EsIDB4Q0YsIDB4QjIsIDB4MEIsIDB4RTEsIDB4NjcsIDB4REQsIDB4NDUsIDB4OUIsIDB4RUMsIDB4MzAsCisgICAgMHhENSwgMHhFMywgMHgwNiwgMHhCMywgMHg5NCwgMHhCQiwgMHhDQiwgMHgzMiwgMHhCQSwgMHgxNywgMHhERiwgMHg1RiwgMHgxRiwgMHgzOCwgMHhBRiwgMHhDNiwKKyAgICAweEE5LCAweEI1LCAweDdGLCAweEY2LCAweDg1LCAweEMyLCAweDk5LCAweDMzLCAweDBBLCAweDNGLCAweDdELCAweEIyLCAweDcyLCAweDdELCAweEY3LCAweEY0LAorICAgIDB4MUIsIDB4MTEsIDB4QTEsIDB4N0QsIDB4RjcsIDB4M0QsIDB4N0YsIDB4MEYsIDB4RkEsIDB4QjEsIDB4RUUsIDB4NkMsIDB4QUQsIDB4QTksIDB4RTcsIDB4NDMsCisgICAgMHg1RCwgMHhGRSwgMHhDOSwgMHgzMiwgMHhGNiwgMHhGMSwgMHg5NywgMHhFNywgMHg4NywgMHgxNywgMHg4NSwgMHhCOSwgMHhCQywgMHhDMSwgMHhENSwgMHgyRiwKKyAgICAweEM0LCAweDVBLCAweEJFLCAweDAzLCAweEMzLCAweDQ5LCAweEFCLCAweDlELCAweDQwLCAweEZBLCAweEUxLCAweEJELCAweDFFLCAweDQ0LCAweEU4LCAweDhBLAorICAgIDB4NkUsIDB4OTgsIDB4OTksIDB4NEMsIDB4QzYsIDB4MkIsIDB4RTAsIDB4MTgsIDB4MjYsIDB4ODMsIDB4Q0EsIDB4MDgsIDB4MEIsIDB4REQsIDB4NjksIDB4RDEsCisgICAgMHgzMywgMHhENSwgMHg4RiwgMHhBRCwgMHhCRCwgMHg4NiwgMHhGRSwgMHhDMywgMHgwQywgMHhDMywgMHg5OSwgMHgzRCwgMHg0QiwgMHhCMCwgMHgwQywgMHg3NSwKKyAgICAweDE3LCAweDg5LCAweDZFLCAweDcwLCAweDBDLCAweDIzLCAweEE5LCAweDk5LCAweEQ5LCAweDU5LCAweDA3LCAweDdELCAweDMwLCAweEZDLCAweEM1LCAweDk4LAorICAgIDB4RDAsIDB4RkYsIDB4NUQsIDB4MTAsIDB4OTksIDB4RjQsIDB4QjcsIDB4QzUsIDB4NTYsIDB4RTgsIDB4QTcsIDB4MEQsIDB4MDIsIDB4QjQsIDB4MDQsIDB4RkIsCisgICAgMHg5RSwgMHg5QywgMHg4QiwgMHgwQywgMHgwMywgMHg1NywgMHg0OCwgMHg3MywgMHg1MSwgMHg5QSwgMHg4RSwgMHhCNiwgMHhCOSwgMHgxNSwgMHg1NywgMHhGRCwKKyAgICAweDUyLCAweDFFLCAweDI3LCAweDg3LCAweDY4LCAweENGLCAweDFDLCAweDJCLCAweDE4LCAweDJELCAweERBLCAweDAwLCAweDJGLCAweDcxLCAweEI4LCAweDY2LAorICAgIDB4MzUsIDB4M0YsIDB4NTAsIDB4QzAsIDB4QkMsIDB4RjYsIDB4RjEsIDB4MEUsIDB4RDAsIDB4QUMsIDB4MUMsIDB4RkMsIDB4QUQsIDB4N0MsIDB4RDksIDB4MzYsCisgICAgMHgzRiwgMHgyMCwgMHhDMSwgMHg5NiwgMHg4MywgMHhCMSwgMHgxNCwgMHhBQiwgMHhDNywgMHhENSwgMHgwQSwgMHhGNCwgMHg0MSwgMHg2NSwgMHg3RCwgMHg0QywKKyAgICAweDhELCAweDAzLCAweEIwLCAweDRDLCAweDNFLCAweDE2LCAweDZCLCAweEI3LCAweEY3LCAweDE2LCAweDZCLCAweDJBLCAweDgyLCAweDI3LCAweDVBLCAweDFBLAorICAgIDB4NjAsIDB4RkYsIDB4MjEsIDB4NDcsIDB4MEUsIDB4RjksIDB4NjYsIDB4NzgsIDB4M0QsIDB4MjcsIDB4RTcsIDB4MjIsIDB4OTMsIDB4M0MsIDB4MzksIDB4OUQsCisgICAgMHhBMSwgMHhDMSwgMHg4OSwgMHg2RCwgMHgxNiwgMHhDRiwgMHgxMiwgMHg0MywgMHgyNCwgMHg5QSwgMHg0MCwgMHg3QSwgMHg1QSwgMHhCQSwgMHhBNSwgMHhEMiwKKyAgICAweDFBLCAweDlFLCAweDcxLCAweDFGLCAweDIyLCAweDMzLCAweDIyLCAweEE1LCAweEVBLCAweEEwLCAweEY5LCAweDg4LCAweDU1LCAweDA1LCAweDhELCAweEQ5LAorICAgIDB4MEEsIDB4NDUsIDB4MjEsIDB4OUYsIDB4QTIsIDB4RDcsIDB4MEIsIDB4RTEsIDB4QzEsIDB4M0UsIDB4REYsIDB4ODksIDB4REUsIDB4MjQsIDB4RjksIDB4M0YsCisgICAgMHg5QiwgMHgxRSwgMHhBNiwgMHhCOSwgMHg5NCwgMHg2NywgMHg0RCwgMHhGQiwgMHg5RSwgMHgyNywgMHhBNCwgMHg2RiwgMHhGNSwgMHhDRSwgMHhFQiwgMHg5NywKKyAgICAweERBLCAweEI0LCAweDhBLCAweEZCLCAweEYyLCAweEFELCAweEQyLCAweDJDLCAweDBBLCAweDc2LCAweEYyLCAweEE3LCAweDEzLCAweDBCLCAweDQ3LCAweEUyLAorICAgIDB4RjcsIDB4REEsIDB4NTYsIDB4REYsIDB4ODMsIDB4ODYsIDB4NTksIDB4RTUsIDB4MjIsIDB4NTgsIDB4MkYsIDB4OUUsIDB4OUYsIDB4NTEsIDB4REYsIDB4QTUsCisgICAgMHgzNSwgMHhCMSwgMHhDMSwgMHhDNiwgMHhDRSwgMHhBRiwgMHgyQywgMHhGNywgMHg1RiwgMHhFMSwgMHgzOSwgMHg2QSwgMHg4NywgMHg2NywgMHhCNiwgMHg4NiwKKyAgICAweEM3LCAweDI0LCAweDkzLCAweEVBLCAweDc4LCAweDgwLCAweERELCAweDY2LCAweDk2LCAweDQwLCAweDRFLCAweEQ3LCAweDcyLCAweDE0LCAweDhGLCAweDhFLAorICAgIDB4MkIsIDB4NjIsIDB4NzIsIDB4MDcsIDB4MkYsIDB4MTQsIDB4OUIsIDB4M0QsIDB4N0EsIDB4QjQsIDB4OTAsIDB4MTAsIDB4RjIsIDB4REMsIDB4MUEsIDB4MEYsCisgICAgMHg2OCwgMHhBQywgMHgwMCwgMHgyMSwgMHhBMCwgMHhGNywgMHhFMywgMHgzMSwgMHg2RiwgMHhDOCwgMHg2MiwgMHhERCwgMHgxNiwgMHgxMywgMHhEQiwgMHg1QSwKKyAgICAweDI4LCAweDU2LCAweEU1LCAweDJBLCAweDFELCAweDc0LCAweDdFLCAweDlFLCAweDMzLCAweEMyLCAweEUyLCAweDk2LCAweDJDLCAweDg4LCAweEY1LCAweEE0LAorICAgIDB4NDYsIDB4NDMsIDB4RTUsIDB4OTAsIDB4NjcsIDB4RTIsIDB4QzksIDB4RjQsIDB4QjksIDB4QzYsIDB4NDQsIDB4QUIsIDB4QTIsIDB4OTAsIDB4MjIsIDB4RDIsCisgICAgMHg3RCwgMHhGNywgMHgyMywgMHg1RiwgMHhGNywgMHg5OCwgMHgwOSwgMHgyQSwgMHhCMSwgMHhGNSwgMHhEQywgMHg2MywgMHg1MCwgMHg2OCwgMHhCNSwgMHgwNywKKyAgICAweDIyLCAweDgyLCAweDU5LCAweDQ0LCAweDM0LCAweDdCLCAweDhDLCAweDBBLCAweDE1LCAweDE2LCAweDQ1LCAweDlGLCAweEFFLCAweDI1LCAweDEwLCAweDk0LAorICAgIDB4QjcsIDB4QzUsIDB4NEEsIDB4REMsIDB4NDIsIDB4MUMsIDB4OEEsIDB4QkMsIDB4NzksIDB4RDMsIDB4QjMsIDB4QTcsIDB4NTcsIDB4NzAsIDB4NTIsIDB4QUIsCisgICAgMHgwQSwgMHgxNywgMHgzQiwgMHg4QiwgMHhBRSwgMHg0QiwgMHg2RCwgMHg3QywgMHg0RCwgMHg5NCwgMHgzMCwgMHgxMiwgMHhBQywgMHg5RiwgMHhGMCwgMHgyQywKKyAgICAweEI3LCAweDg0LCAweDRGLCAweEFGLCAweDU0LCAweDlFLCAweDJBLCAweDBCLCAweDc2LCAweDY1LCAweEVCLCAweDRDLCAweDA5LCAweDI2LCAweDUxLCAweEFDLAorICAgIDB4ODUsIDB4QzIsIDB4RDMsIDB4MjcsIDB4RTgsIDB4OTAsIDB4QjEsIDB4QkQsIDB4NzAsIDB4MDAsIDB4QkIsIDB4QkUsIDB4MzIsIDB4OEEsIDB4MDYsIDB4OTAsCisgICAgMHhCNiwgMHg3QSwgMHgyOCwgMHg4QywgMHgxOCwgMHhFMCwgMHhBNywgMHgwQSwgMHg5MywgMHg0RSwgMHgzQiwgMHg5MSwgMHg2MywgMHhCOCwgMHhGOCwgMHhDRCwKKyAgICAweDhELCAweEZELCAweDlDLCAweDgwLCAweDIyLCAweDExLCAweDYwLCAweDE2LCAweDQ3LCAweEFFLCAweDYzLCAweEQyLCAweEVBLCAweDFFLCAweEY2LCAweDA5LAorICAgIDB4MUUsIDB4OEEsIDB4OUIsIDB4QjUsIDB4NzcsIDB4RTQsIDB4NjYsIDB4MkQsIDB4MDQsIDB4ODksIDB4RDgsIDB4QjYsIDB4QUIsIDB4NjgsIDB4NzAsIDB4NjcsCisgICAgMHg0RCwgMHgxNSwgMHg3MCwgMHg2RiwgMHgxQywgMHhCMCwgMHhDMCwgMHgyMywgMHgyNywgMHhEQiwgMHhDQSwgMHg1QSwgMHgxMCwgMHgzNCwgMHg1QSwgMHg2QywKKyAgICAweDJGLCAweDg5LCAweDI3LCAweDQ1LCAweDhELCAweEY0LCAweENELCAweDM4LCAweDI4LCAweDlCLCAweDVDLCAweDY2LCAweEQ0LCAweDhGLCAweDIzLCAweDA4LAorICAgIDB4RjksIDB4OEYsIDB4NjAsIDB4NTgsIDB4NTYsIDB4OTIsIDB4QkIsIDB4QzIsIDB4OEYsIDB4NkUsIDB4QzgsIDB4MTUsIDB4OTIsIDB4OTIsIDB4MzMsIDB4QUQsCisgICAgMHhCNCwgMHg1MCwgMHg3QywgMHgzMSwgMHgzRCwgMHg3NywgMHg5RCwgMHhDRiwgMHgwMSwgMHg5RSwgMHgwOCwgMHhBMSwgMHg2MywgMHhFRSwgMHgzQiwgMHhERCwKKyAgICAweDc5LCAweDY3LCAweDYxLCAweEYwLCAweEIzLCAweDkwLCAweDAwLCAweDVGLCAweDcwLCAweDU4LCAweDg1LCAweDk3LCAweEVELCAweDFGLCAweDVDLCAweDY3LAorICAgIDB4OTYsIDB4NDUsIDB4MzEsIDB4QzUsIDB4Q0YsIDB4REMsIDB4MDAsIDB4NDgsIDB4MzQsIDB4REYsIDB4MEIsIDB4NUIsIDB4RkIsIDB4QzAsIDB4QjMsIDB4M0YsCisgICAgMHg3MiwgMHhGRiwgMHgwRCwgMHgwNSwgMHg0RSwgMHg0RCwgMHg0MiwgMHg2RiwgMHg2NSwgMHg3NSwgMHgxQiwgMHhCNSwgMHhDQSwgMHhCNSwgMHhBNiwgMHg2NywKKyAgICAweDE4LCAweDc3LCAweDUxLCAweDIxLCAweDRELCAweDBCLCAweEMzLCAweDZCLCAweEI3LCAweDcwLCAweDc4LCAweDgxLCAweENDLCAweEIxLCAweEQ4LCAweENELAorICAgIDB4RkEsIDB4QTQsIDB4NDAsIDB4ODAsIDB4RUYsIDB4OTAsIDB4RTYsIDB4NjQsIDB4NEMsIDB4N0UsIDB4QzcsIDB4NUYsIDB4OTAsIDB4RjEsIDB4QTAsIDB4NjYsCisgICAgMHg3QywgMHgwNiwgMHg0RiwgMHhGOSwgMHhEMywgMHg5NiwgMHgzMSwgMHg5NiwgMHg0QiwgMHg5MSwgMHg4QiwgMHg5NCwgMHg0NSwgMHg1OSwgMHhDQiwgMHhFMSwKKyAgICAweDVGLCAweDQ1LCAweEJELCAweERELCAweDI5LCAweEVELCAweDJELCAweEZFLCAweERELCAweDU4LCAweEJDLCAweEVELCAweDRBLCAweDhCLCAweEVFLCAweEY1LAorICAgIDB4RUEsIDB4OUIsIDB4REMsIDB4Q0UsIDB4NTUsIDB4QjYsIDB4OUEsIDB4M0UsIDB4RTAsIDB4RDAsIDB4RTAsIDB4MUUsIDB4REUsIDB4QjQsIDB4MzMsIDB4RjEsCisgICAgMHhBNSwgMHgxQiwgMHgwNywgMHgyQiwgMHg1RiwgMHhBMiwgMHg1OSwgMHgyOCwgMHhENywgMHhDMywgMHgzQiwgMHg1MiwgMHhCRiwgMHg0QywgMHgyRSwgMHhENywKKyAgICAweDg4LCAweDIyLCAweDc3LCAweEQ5LCAweDUxLCAweDI3LCAweDA4LCAweEE0LCAweEM3LCAweEYzLCAweDVCLCAweEYyLCAweDdCLCAweDZELCAweDM0LCAweDZFLAorICAgIDB4ODEsIDB4NTMsIDB4QjIsIDB4QjgsIDB4MEYsIDB4REUsIDB4NTEsIDB4NzUsIDB4MjAsIDB4MzYsIDB4MUUsIDB4ODYsIDB4QjUsIDB4MUQsIDB4Q0YsIDB4Q0EsCisgICAgMHg1RCwgMHhFRiwgMHgwMCwgMHgzRSwgMHg2OCwgMHhENiwgMHg4QywgMHgwOSwgMHhFNiwgMHgxMiwgMHgyRCwgMHg5NywgMHgyNCwgMHhGRCwgMHg2QSwgMHhCMSwKKyAgICAweEQ1LCAweDEzLCAweDE4LCAweDFBLCAweEJGLCAweDhELCAweEU1LCAweDM4LCAweDdFLCAweDU3LCAweDQ3LCAweDA5LCAweEVDLCAweEE5LCAweERGLCAweDk3LAorICAgIDB4REEsIDB4OEMsIDB4OTEsIDB4MkYsIDB4MjksIDB4MkQsIDB4QUMsIDB4OEIsIDB4Q0EsIDB4QzcsIDB4MDMsIDB4RDgsIDB4NjgsIDB4RjksIDB4NzcsIDB4MkUsCisgICAgMHg5RiwgMHg1RiwgMHhDRSwgMHhEOCwgMHhBNCwgMHgzOSwgMHgwRSwgMHg2NCwgMHhCOCwgMHhEOCwgMHgyMSwgMHg3RCwgMHhDRSwgMHg2OCwgMHhBNSwgMHhENSwKKyAgICAweDM4LCAweDc5LCAweDlGLCAweDkwLCAweDQ5LCAweDMzLCAweDcyLCAweDA1LCAweDcyLCAweDRDLCAweDc2LCAweDgzLCAweDM1LCAweEZDLCAweDFBLCAweEUyLAorICAgIDB4RjQsIDB4NjAsIDB4QzgsIDB4QTgsIDB4NTQsIDB4QzMsIDB4QzEsIDB4NEQsIDB4MTcsIDB4RkQsIDB4QUUsIDB4QTksIDB4QTksIDB4MjAsIDB4RkUsIDB4RjksCisgICAgMHgyNSwgMHg0QSwgMHhFMywgMHgyMiwgMHhEQywgMHg3RCwgMHhFMCwgMHhGQywgMHg0NywgMHhGNywgMHhBNiwgMHhGMywgMHgzRiwgMHhDRSwgMHhDOCwgMHgyRSwKKyAgICAweDhCLCAweENFLCAweEZBLCAweDQ2LCAweDhELCAweDM4LCAweDRCLCAweDNDLCAweEI2LCAweDIzLCAweEE5LCAweDJFLCAweDUzLCAweEQ5LCAweEMzLCAweDYwLAorICAgIDB4NjAsIDB4RkYsIDB4MTAsIDB4QzcsIDB4MzgsIDB4NTQsIDB4NUMsIDB4QkQsIDB4M0UsIDB4QjEsIDB4NTIsIDB4MkMsIDB4MzAsIDB4QjMsIDB4NkQsIDB4MTQsCisgICAgMHg1QiwgMHg0RCwgMHhBRCwgMHg2OCwgMHg5RSwgMHhENiwgMHgwQSwgMHg5MSwgMHhGRCwgMHg0MCwgMHg2OSwgMHhFMSwgMHhCMywgMHg3NiwgMHgyMSwgMHg5RCwKKyAgICAweDVELCAweDk3LCAweDlGLCAweDAxLCAweDExLCAweDU1LCAweDlBLCAweDgyLCAweDU3LCAweDFELCAweEQ2LCAweDU1LCAweEU3LCAweDIwLCAweDVFLCAweDEyLAorICAgIDB4MEEsIDB4RDksIDB4QTgsIDB4MjYsIDB4QjksIDB4MUIsIDB4MEEsIDB4RTUsIDB4QjAsIDB4MjUsIDB4NzksIDB4QjIsIDB4OTQsIDB4OUYsIDB4NDMsIDB4QTYsCisgICAgMHhCQSwgMHgyOSwgMHg3RSwgMHg2MSwgMHg0QywgMHg0OCwgMHhFQSwgMHhCRSwgMHhDMSwgMHg1RCwgMHhFOCwgMHhGMCwgMHhFQiwgMHg0QiwgMHhFMSwgMHhGNSwKKyAgICAweDRCLCAweDJELCAweEQzLCAweEFBLCAweDFDLCAweDUxLCAweDAwLCAweDE1LCAweDE2LCAweDY0LCAweEZDLCAweEMzLCAweDJCLCAweEYwLCAweDkxLCAweEJDLAorICAgIDB4RjksIDB4REIsIDB4RTksIDB4ODgsIDB4NzAsIDB4RDMsIDB4NTYsIDB4NDcsIDB4QTMsIDB4NjUsIDB4QTMsIDB4MzQsIDB4NzQsIDB4RDgsIDB4OTcsIDB4MTQsCisgICAgMHg3QiwgMHhBNSwgMHgxRSwgMHgxMiwgMHhENywgMHhBNiwgMHg4OCwgMHgwMCwgMHg5MSwgMHg0OSwgMHhGRSwgMHhEOCwgMHhGMSwgMHgwRiwgMHg1OSwgMHhFMywKKyAgICAweEVELCAweDVELCAweDhFLCAweDM5LCAweDBELCAweDEwLCAweEI1LCAweDQyLCAweDMxLCAweDMxLCAweDZBLCAweDdBLCAweDU2LCAweEQwLCAweDI1LCAweEI2LAorICAgIDB4NDcsIDB4N0QsIDB4QkIsIDB4Q0UsIDB4NDcsIDB4MEEsIDB4QTcsIDB4RkYsIDB4QjksIDB4Q0IsIDB4RUQsIDB4NzksIDB4RkYsIDB4RkUsIDB4MTYsIDB4MEMsCisgICAgMHg1RiwgMHhDNCwgMHhBRiwgMHgzMSwgMHgyQywgMHhBQiwgMHgyMywgMHhBOSwgMHhCQiwgMHgyRSwgMHg5QiwgMHgwOSwgMHhGQSwgMHg1MiwgMHhDNiwgMHg4MCwKKyAgICAweEY4LCAweEI3LCAweDNBLCAweEZELCAweEQyLCAweEFDLCAweEJGLCAweDg3LCAweDc3LCAweDNCLCAweDcxLCAweDI1LCAweENBLCAweERCLCAweEM3LCAweEU5LAorICAgIDB4OTAsIDB4Q0MsIDB4OTgsIDB4NDIsIDB4MzYsIDB4Q0UsIDB4RjUsIDB4OUYsIDB4M0QsIDB4NTIsIDB4REQsIDB4RTgsIDB4QjMsIDB4RkIsIDB4NDYsIDB4OTQsCisgICAgMHhBRSwgMHgxNywgMHhDOCwgMHhBNCwgMHg4NCwgMHhGNywgMHhBNywgMHhEMywgMHhCRCwgMHgzMSwgMHhDRSwgMHg5MCwgMHhBRiwgMHhFNywgMHg4OCwgMHg1OSwKKyAgICAweDA2LCAweDY4LCAweDdGLCAweDA1LCAweEVCLCAweDkzLCAweERDLCAweDE3LCAweDQxLCAweDFDLCAweEUwLCAweDhCLCAweDA4LCAweDk4LCAweENFLCAweDQ1LAorICAgIDB4RjIsIDB4RTUsIDB4OEMsIDB4RjcsIDB4QkEsIDB4QkIsIDB4MkIsIDB4MEQsIDB4MkQsIDB4NzgsIDB4QzcsIDB4MzcsIDB4QjIsIDB4REQsIDB4RTksIDB4ODYsCisgICAgMHg3NSwgMHg5NiwgMHhCNywgMHhCNiwgMHg5MCwgMHgxNCwgMHgwRSwgMHhCOCwgMHg2NSwgMHg3NCwgMHhDOSwgMHg0QSwgMHhBNywgMHg3QiwgMHgzOSwgMHg4OCwKKyAgICAweDYxLCAweDAyLCAweDI0LCAweDU1LCAweDIxLCAweDE0LCAweDlCLCAweDI5LCAweEMzLCAweEIxLCAweDM3LCAweEUzLCAweDQ4LCAweENFLCAweEFFLCAweDQyLAorICAgIDB4MDcsIDB4MkMsIDB4MDgsIDB4QzgsIDB4NkUsIDB4Q0UsIDB4NkYsIDB4RjYsIDB4NDAsIDB4NDAsIDB4QkQsIDB4QzIsIDB4QzksIDB4NzYsIDB4N0IsIDB4MTEsCisgICAgMHhGNywgMHg4MSwgMHhEOSwgMHhFNywgMHg2RCwgMHg0QiwgMHgxQiwgMHhEQiwgMHg5RSwgMHgxMywgMHgzMCwgMHhEQiwgMHg1NSwgMHhCQiwgMHg4NCwgMHhFNywKKyAgICAweDBGLCAweEJBLCAweDEzLCAweDcyLCAweDA0LCAweEJFLCAweDk0LCAweDEzLCAweEI0LCAweEE4LCAweEY0LCAweDIzLCAweDg5LCAweDIwLCAweDFELCAweDVBLAorICAgIDB4QzIsIDB4MjMsIDB4Q0YsIDB4NDEsIDB4MzgsIDB4Q0QsIDB4RkYsIDB4OTMsIDB4NzYsIDB4N0QsIDB4RjYsIDB4OTUsIDB4NUEsIDB4M0MsIDB4MjcsIDB4MjcsCisgICAgMHhFQywgMHg3OSwgMHhBOCwgMHhGNywgMHg0MSwgMHg1QywgMHhBNCwgMHhENywgMHgzNywgMHgwOSwgMHg2RSwgMHhCRCwgMHgxRCwgMHgyQywgMHg1OSwgMHhGRSwKKyAgICAweEQ3LCAweDZCLCAweDczLCAweEMxLCAweDFGLCAweDk3LCAweDVGLCAweDlGLCAweDFFLCAweERFLCAweDIzLCAweDlELCAweEZGLCAweEUyLCAweDgzLCAweDUyLAorICAgIDB4OUUsIDB4QjAsIDB4ODAsIDB4MkQsIDB4MkUsIDB4RTQsIDB4OTksIDB4QjEsIDB4MDIsIDB4MjgsIDB4NjksIDB4RUIsIDB4MEIsIDB4NUUsIDB4RDAsIDB4RUEsCisgICAgMHhCNCwgMHg3NywgMHg5NiwgMHhCRCwgMHg3OSwgMHhFOSwgMHhDQiwgMHgxQiwgMHhCRCwgMHg0RCwgMHgzOSwgMHg4MywgMHg0RSwgMHgyRCwgMHg2MiwgMHg5NCwKKyAgICAweEIyLCAweDI5LCAweEZDLCAweDlFLCAweEMzLCAweDE4LCAweDYwLCAweDhDLCAweEUwLCAweDYwLCAweDQwLCAweDEwLCAweDk3LCAweDE2LCAweEFCLCAweDNBLAorICAgIDB4ODUsIDB4MkQsIDB4RDUsIDB4ODAsIDB4MEMsIDB4REEsIDB4QjcsIDB4NDEsIDB4RTQsIDB4NkEsIDB4MDcsIDB4NzUsIDB4QzUsIDB4NDMsIDB4NDksIDB4NkIsCisgICAgMHhCQiwgMHhBNiwgMHgxMiwgMHg4NCwgMHhCRiwgMHhERCwgMHg0RCwgMHg3NiwgMHhDOCwgMHgwRiwgMHhFQywgMHhDMSwgMHgxQiwgMHhGRSwgMHgyNCwgMHg2NywKKyAgICAweDM3LCAweDA4LCAweDQyLCAweEE1LCAweDYxLCAweDYwLCAweEM5LCAweDJCLCAweDMyLCAweDI1LCAweDg4LCAweEI0LCAweDk5LCAweDY4LCAweDQwLCAweEFELAorICAgIDB4NjgsIDB4NDksIDB4RDUsIDB4NjEsIDB4RjksIDB4QkEsIDB4NUEsIDB4REQsIDB4QjEsIDB4NDcsIDB4QjEsIDB4QTksIDB4NjEsIDB4MzgsIDB4ODcsIDB4QzQsCisgICAgMHg4NiwgMHg4OCwgMHgwQiwgMHg3QiwgMHhBOCwgMHhDRCwgMHhCMCwgMHgzNSwgMHg2MiwgMHhBMiwgMHhEQSwgMHg3QSwgMHgzQywgMHg4NSwgMHgwMCwgMHg2NiwKKyAgICAweDc5LCAweDc0LCAweEZGLCAweDc5LCAweDZGLCAweDZDLCAweDRCLCAweDIxLCAweDY1LCAweDdFLCAweDJGLCAweEZGLCAweDhBLCAweEQ4LCAweEU4LCAweDY5LAorICAgIDB4M0QsIDB4M0QsIDB4RjUsIDB4QjgsIDB4RUYsIDB4OEIsIDB4NkQsIDB4RTgsIDB4NkYsIDB4NjksIDB4MkYsIDB4OEIsIDB4NDksIDB4RDgsIDB4MTAsIDB4RjUsCisgICAgMHg0MiwgMHhCOSwgMHhBNiwgMHgyQSwgMHhDOCwgMHhCMiwgMHhFNywgMHg2QSwgMHgyMCwgMHg4NCwgMHg4OSwgMHgwNywgMHhBMCwgMHhGRiwgMHhDOCwgMHgwRCwKKyAgICAweDhELCAweEVFLCAweEI2LCAweEVELCAweDdCLCAweDAzLCAweDQ2LCAweDM2LCAweEM3LCAweDY5LCAweDhBLCAweDE4LCAweDg4LCAweDVDLCAweEJCLCAweEE5LAorICAgIDB4QzAsIDB4NDAsIDB4NDksIDB4MTYsIDB4QjQsIDB4ODUsIDB4NTAsIDB4ODgsIDB4M0QsIDB4NTAsIDB4N0MsIDB4NTAsIDB4M0IsIDB4MTIsIDB4MTksIDB4RUIsCisgICAgMHg5RSwgMHgxRiwgMHg0NCwgMHgxMSwgMHg4QiwgMHgxQywgMHhGMCwgMHhDRiwgMHhFMSwgMHg3NiwgMHhBNCwgMHhBQiwgMHg0RiwgMHgyRSwgMHg0NiwgMHg0MywKKyAgICAweEE0LCAweEIyLCAweDZFLCAweDc5LCAweDRBLCAweDg5LCAweDE5LCAweDcwLCAweEQ4LCAweEJFLCAweEY1LCAweDhELCAweEFBLCAweDVCLCAweDIzLCAweEI4LAorICAgIDB4QkEsIDB4RkIsIDB4RTYsIDB4QTcsIDB4RjEsIDB4RTgsIDB4QTMsIDB4RjgsIDB4RTcsIDB4MkQsIDB4N0YsIDB4M0IsIDB4N0QsIDB4ODksIDB4NDgsIDB4OTksCisgICAgMHhBQywgMHg1QSwgMHhDMCwgMHg1QiwgMHhDRCwgMHhFMywgMHhDMSwgMHg2NSwgMHg1MiwgMHhCMCwgMHhBNSwgMHhGQywgMHg1QywgMHhBMiwgMHhFQiwgMHhGQiwKKyAgICAweDYxLCAweDA0LCAweEUyLCAweEM5LCAweEQ2LCAweDI0LCAweDI3LCAweDEyLCAweDJGLCAweDNBLCAweDlFLCAweEU2LCAweDk3LCAweDg3LCAweDE5LCAweDRGLAorICAgIDB4QkIsIDB4MDksIDB4ODAsIDB4NEEsIDB4QUQsIDB4OUIsIDB4MTgsIDB4OEUsIDB4NDMsIDB4OTEsIDB4QUYsIDB4MkMsIDB4NTQsIDB4RTgsIDB4REIsIDB4QjgsCisgICAgMHgwQywgMHgxMSwgMHhDNywgMHgyOSwgMHhFNywgMHg3NiwgMHhDRiwgMHhBQSwgMHhDQywgMHg4MywgMHg3NywgMHg0RSwgMHhFNiwgMHg0RCwgMHg3OCwgMHhGRCwKKyAgICAweDFDLCAweDE0LCAweENBLCAweDFGLCAweDBGLCAweEEzLCAweDcwLCAweERCLCAweDMzLCAweDQ0LCAweEYyLCAweDM0LCAweDNGLCAweERCLCAweDVFLCAweDFGLAorICAgIDB4OUIsIDB4MjUsIDB4NDcsIDB4NDQsIDB4NUYsIDB4MDQsIDB4Q0QsIDB4QkEsIDB4NzksIDB4MkEsIDB4MjEsIDB4RDAsIDB4OEIsIDB4NzEsIDB4RjgsIDB4OUYsCisgICAgMHgxNiwgMHg2RCwgMHhFRSwgMHgxQSwgMHhFOSwgMHg2QywgMHg1MiwgMHhEQiwgMHg4RCwgMHgxNywgMHgyOCwgMHhBRCwgMHhGRCwgMHhFRiwgMHg3QiwgMHhBQywKKyAgICAweDUzLCAweDZCLCAweEVELCAweDExLCAweDA0LCAweDgzLCAweEZELCAweDk2LCAweDJFLCAweEIyLCAweDMxLCAweEM2LCAweDBDLCAweDEzLCAweDRDLCAweDIwLAorICAgIDB4NTgsIDB4MTksIDB4REUsIDB4MkYsIDB4OEMsIDB4RjEsIDB4NjMsIDB4NDgsIDB4OEMsIDB4M0EsIDB4RTksIDB4RjgsIDB4ODEsIDB4NzUsIDB4MEQsIDB4MTAsCisgICAgMHgxRSwgMHg3NCwgMHhBNSwgMHg3RSwgMHhGNywgMHhDMywgMHgxMSwgMHhGQiwgMHgyMCwgMHhGMCwgMHhGOSwgMHg3MiwgMHg3QiwgMHg4QiwgMHhGNCwgMHgzQywKKyAgICAweENDLCAweDU0LCAweDVGLCAweEE2LCAweEVGLCAweEE4LCAweDAzLCAweEIzLCAweDdFLCAweDcyLCAweEVCLCAweEEwLCAweDkzLCAweDY3LCAweEFDLCAweDM4LAorICAgIDB4OUYsIDB4RDYsIDB4RUYsIDB4MTYsIDB4MUQsIDB4MzMsIDB4NEIsIDB4QzUsIDB4ODAsIDB4NjAsIDB4NzAsIDB4RjEsIDB4RjgsIDB4MTAsIDB4OTEsIDB4MkQsCisgICAgMHhBNywgMHgwNCwgMHhERCwgMHgwQSwgMHhFQiwgMHhFQywgMHgyRiwgMHhBMywgMHhCOSwgMHg0QiwgMHg3OSwgMHg5NiwgMHgzQywgMHhBNCwgMHhFOCwgMHg0NywKKyAgICAweEE1LCAweERBLCAweEUyLCAweDY1LCAweDk0LCAweEVBLCAweEFBLCAweDMyLCAweDc4LCAweEJELCAweDZGLCAweEEyLCAweDc4LCAweDdELCAweDE1LCAweDdELAorICAgIDB4QzMsIDB4RTgsIDB4MjgsIDB4OTEsIDB4RTQsIDB4M0MsIDB4OTEsIDB4M0MsIDB4QzEsIDB4NDIsIDB4RUEsIDB4MEEsIDB4NTEsIDB4M0UsIDB4NDAsIDB4NEIsCisgICAgMHhBRiwgMHhCNSwgMHhCRiwgMHg1NiwgMHg0MiwgMHhERSwgMHg5OCwgMHhFNSwgMHhDNSwgMHhCNywgMHhGNSwgMHgxNCwgMHgyMiwgMHhEQiwgMHhBNiwgMHhBNCwKKyAgICAweDdFLCAweDg4LCAweEVBLCAweEQxLCAweDJGLCAweDU3LCAweEQwLCAweDNELCAweDE3LCAweDQxLCAweDdELCAweEQ4LCAweDRDLCAweDNELCAweDQ5LCAweEM0LAorICAgIDB4RjMsIDB4MEQsIDB4QzQsIDB4ODAsIDB4QkUsIDB4NkMsIDB4MUEsIDB4MjYsIDB4RUIsIDB4QkYsIDB4RjYsIDB4OTUsIDB4RTcsIDB4OUEsIDB4NDQsIDB4NDEsCisgICAgMHg5MCwgMHgxRiwgMHhEMSwgMHg3MCwgMHg3QiwgMHg2NSwgMHhBMSwgMHgwRiwgMHhBMywgMHhBQSwgMHhCNSwgMHhGMSwgMHhDMCwgMHgzRCwgMHgzMSwgMHg5MiwKKyAgICAweEE3LCAweDJGLCAweEI0LCAweDcyLCAweEFCLCAweDdBLCAweDYxLCAweEI1LCAweDM3LCAweEJGLCAweEMyLCAweEU1LCAweDQxLCAweEJBLCAweDc1LCAweDVELAorICAgIDB4QjMsIDB4NTksIDB4RkEsIDB4OTYsIDB4MDQsIDB4NTksIDB4MkIsIDB4OTYsIDB4MTAsIDB4NzksIDB4NjYsIDB4NzYsIDB4RjcsIDB4NzEsIDB4Q0IsIDB4MzcsCisgICAgMHhGNywgMHg2MCwgMHgxOSwgMHg1OSwgMHgyMSwgMHg1RiwgMHhFRSwgMHg4QiwgMHgyRCwgMHg5MSwgMHgzRCwgMHhFQiwgMHg1NywgMHg2NSwgMHhCNCwgMHgwOSwKKyAgICAweDA5LCAweDM4LCAweEVCLCAweDcwLCAweDk2LCAweDQzLCAweDg3LCAweDgwLCAweDA3LCAweDlGLCAweDBCLCAweDA5LCAweDAzLCAweEY4LCAweDVGLCAweEY0LAorICAgIDB4NUEsIDB4NTMsIDB4NjAsIDB4ODYsIDB4NDgsIDB4OEEsIDB4QjMsIDB4QjYsIDB4MzQsIDB4RTAsIDB4RkMsIDB4RTUsIDB4OTUsIDB4MTIsIDB4RTcsIDB4N0MsCisgICAgMHhFOSwgMHgxNCwgMHg1NiwgMHgyRCwgMHg4RCwgMHg5QywgMHhBOCwgMHg2RiwgMHgyRiwgMHg2NSwgMHgyOSwgMHhCQywgMHhDMiwgMHhFQiwgMHhBOCwgMHhEMiwKKyAgICAweEE5LCAweEQzLCAweDNFLCAweDdFLCAweEVELCAweDI4LCAweDlDLCAweEZELCAweDE1LCAweDVELCAweDY0LCAweDIxLCAweDMwLCAweEFCLCAweEQzLCAweDBDLAorICAgIDB4MEQsIDB4NjMsIDB4NUIsIDB4QzUsIDB4QkUsIDB4MDMsIDB4QjEsIDB4MDMsIDB4N0UsIDB4N0UsIDB4RTUsIDB4Q0MsIDB4MEMsIDB4MUMsIDB4QjgsIDB4NzQsCisgICAgMHg1NywgMHg1OCwgMHgwRSwgMHhBMSwgMHhCRSwgMHhBNywgMHg5MCwgMHgzQiwgMHg5QiwgMHg5OCwgMHhCMiwgMHhDMCwgMHhGMywgMHg5NywgMHg0MSwgMHhCRCwKKyAgICAweDFGLCAweEQ3LCAweDMxLCAweDQyLCAweEI2LCAweEZGLCAweDZELCAweDRCLCAweEVDLCAweDRELCAweDk4LCAweDE1LCAweDcxLCAweDQ2LCAweDRDLCAweDE0LAorICAgIDB4N0IsIDB4NTksIDB4RTIsIDB4ODgsIDB4RTQsIDB4NEUsIDB4RjIsIDB4NzQsIDB4NkYsIDB4NjQsIDB4NEEsIDB4RUUsIDB4NDYsIDB4NDYsIDB4NEYsIDB4QzYsCisgICAgMHhGNSwgMHgzQywgMHgxMiwgMHhDOCwgMHhCRSwgMHg4QywgMHg1NSwgMHgxOSwgMHhDNSwgMHhDMCwgMHg5RiwgMHgzMSwgMHhDNCwgMHhEQSwgMHhDQiwgMHgzQywKKyAgICAweEYzLCAweEM2LCAweDQyLCAweEJDLCAweDNCLCAweDk2LCAweDYyLCAweEI5LCAweDc3LCAweDU0LCAweDQxLCAweEU2LCAweDc0LCAweDgyLCAweEJBLCAweENCLAorICAgIDB4MzIsIDB4N0EsIDB4OEQsIDB4MDUsIDB4QkYsIDB4M0MsIDB4NEEsIDB4OTcsIDB4MkEsIDB4RjcsIDB4RUMsIDB4Q0YsIDB4QTAsIDB4M0UsIDB4NUEsIDB4REMsCisgICAgMHg0MSwgMHgyMywgMHhCMCwgMHhCOCwgMHg1NiwgMHg1NSwgMHhEOCwgMHhDMiwgMHhBNywgMHgzRiwgMHgzMiwgMHgzNywgMHhEMywgMHg2RiwgMHgwMSwgMHhBMiwKKyAgICAweDBFLCAweDI2LCAweEQ3LCAweEI1LCAweEEwLCAweEE1LCAweDM0LCAweDIyLCAweDQ3LCAweEZELCAweEQxLCAweDUyLCAweEYzLCAweEUxLCAweEUwLCAweEFCLAorICAgIDB4RjksIDB4RDAsIDB4OEUsIDB4N0MsIDB4NDIsIDB4MUQsIDB4MTEsIDB4RUEsIDB4QTQsIDB4Q0UsIDB4MzgsIDB4NjgsIDB4REUsIDB4QkMsIDB4QkEsIDB4NkEsCisgICAgMHg1MCwgMHg5MSwgMHg1NCwgMHg4NiwgMHgwRSwgMHg5OCwgMHhBQSwgMHgyQywgMHg1NywgMHg1QywgMHgyQSwgMHg3MCwgMHg1NywgMHg1OCwgMHg2QSwgMHhEMSwKKyAgICAweDlDLCAweEI5LCAweEVCLCAweDVFLCAweEQyLCAweDM1LCAweEQ5LCAweEM1LCAweDJBLCAweDZCLCAweDBDLCAweDYwLCAweDM5LCAweEU0LCAweDRDLCAweENELAorICAgIDB4RjAsIDB4RkIsIDB4RjcsIDB4NTIsIDB4ODYsIDB4NDgsIDB4Q0YsIDB4MjcsIDB4QjQsIDB4OUEsIDB4QzcsIDB4MjAsIDB4QjIsIDB4REQsIDB4NUUsIDB4N0QsCisgICAgMHg0RiwgMHgyQiwgMHhDNSwgMHg5NiwgMHhDNSwgMHhBRSwgMHg2NSwgMHgyNiwgMHhEOSwgMHgxOCwgMHhDNiwgMHhCRSwgMHg1OSwgMHhGRiwgMHg4NSwgMHg1MSwKKyAgICAweDZELCAweEU2LCAweDRFLCAweEVELCAweDI1LCAweDdELCAweDhELCAweDg2LCAweERELCAweEI5LCAweDA2LCAweDdBLCAweDc2LCAweDY2LCAweDY4LCAweDQyLAorICAgIDB4MTMsIDB4NkYsIDB4QzgsIDB4N0QsIDB4RjgsIDB4OUUsIDB4OUIsIDB4NTEsIDB4RkQsIDB4RUUsIDB4MkYsIDB4RjUsIDB4MTksIDB4NUUsIDB4MTQsIDB4NEUsCisgICAgMHhGQiwgMHg2OSwgMHg2OCwgMHhFNiwgMHg5RCwgMHhCNywgMHhENSwgMHgzMSwgMHhCQiwgMHhCNCwgMHg5NiwgMHg0RiwgMHgyNSwgMHg4NiwgMHgyNSwgMHhEQSwKKyAgICAweDk4LCAweEM3LCAweDNBLCAweEQ2LCAweDEwLCAweEQwLCAweEQ0LCAweDUyLCAweDVDLCAweDVFLCAweDRFLCAweEZELCAweEU1LCAweDA0LCAweDZFLCAweDM3LAorICAgIDB4REUsIDB4ODQsIDB4NTUsIDB4NkEsIDB4QjQsIDB4QUEsIDB4QzMsIDB4NTAsIDB4Q0IsIDB4MzYsIDB4M0QsIDB4MEYsIDB4NjgsIDB4MjYsIDB4MkQsIDB4QTAsCisgICAgMHhCQiwgMHhDMywgMHg1OCwgMHg4NSwgMHgzNywgMHhDMywgMHhENSwgMHhDMiwgMHgxMywgMHgxNywgMHgxNSwgMHg1OSwgMHg3NywgMHg0RCwgMHhFRSwgMHg0NCwKKyAgICAweEMyLCAweDFFLCAweDM3LCAweDEwLCAweDQ0LCAweEMzLCAweENELCAweEI1LCAweDlDLCAweEQ3LCAweEUyLCAweDgyLCAweEE5LCAweDc3LCAweDgzLCAweDgzLAorICAgIDB4Q0MsIDB4QjgsIDB4QzEsIDB4QjAsIDB4RDUsIDB4MkQsIDB4RTIsIDB4QzIsIDB4MEQsIDB4MUEsIDB4NDAsIDB4Q0UsIDB4QkYsIDB4NTcsIDB4MzMsIDB4MTksCisgICAgMHhGRiwgMHhCNywgMHg5QywgMHhDMiwgMHhBRiwgMHgzQiwgMHg3QSwgMHg1MSwgMHgxNiwgMHgwQiwgMHg2QywgMHhCMSwgMHg4OSwgMHg0OSwgMHg3RCwgMHgxMSwKKyAgICAweDc4LCAweDc5LCAweDk5LCAweEFGLCAweDY4LCAweEI5LCAweEI3LCAweEE4LCAweEMyLCAweDhDLCAweEQ0LCAweDU0LCAweDJBLCAweENCLCAweEMxLCAweEZBLAorICAgIDB4QkEsIDB4MjMsIDB4MTgsIDB4NDQsIDB4RkIsIDB4RjQsIDB4MEQsIDB4QTksIDB4QkQsIDB4OTMsIDB4MzMsIDB4NTUsIDB4ODUsIDB4QzYsIDB4RDksIDB4RTksCisgICAgMHhDQSwgMHg0OCwgMHg0QywgMHhCRiwgMHhBOCwgMHhBMiwgMHgxOSwgMHg5QywgMHgzOCwgMHhGRCwgMHgzRSwgMHhBNiwgMHg4MywgMHg5QSwgMHhGQywgMHg5NCwKKyAgICAweEY3LCAweEY3LCAweENDLCAweEQ1LCAweDYxLCAweEVELCAweDNDLCAweDAyLCAweDhCLCAweEY0LCAweDRFLCAweEFGLCAweDhBLCAweDM0LCAweEVBLCAweDMwLAorICAgIDB4NEYsIDB4NjUsIDB4MUEsIDB4NzksIDB4OEIsIDB4NjQsIDB4QUIsIDB4OUQsIDB4M0MsIDB4OTAsIDB4NkIsIDB4MUQsIDB4MTcsIDB4OUEsIDB4MDUsIDB4OUQsCisgICAgMHgxMSwgMHhGNiwgMHhDMSwgMHg0NSwgMHg4NiwgMHg4NywgMHhDMCwgMHg3OSwgMHhBQiwgMHg1RCwgMHg5QiwgMHgxRiwgMHhBQSwgMHg4MCwgMHg3RiwgMHg3QywKKyAgICAweDRDLCAweEFELCAweDI2LCAweDQ3LCAweDlCLCAweEI4LCAweDU5LCAweDc5LCAweDE4LCAweDYxLCAweEM3LCAweDI5LCAweDI4LCAweENBLCAweEI1LCAweEM0LAorICAgIDB4NUUsIDB4MTgsIDB4QTQsIDB4MDIsIDB4OTEsIDB4OUMsIDB4QkIsIDB4NjMsIDB4QkIsIDB4QkEsIDB4Q0UsIDB4QkMsIDB4QzQsIDB4QjgsIDB4NjUsIDB4REEsCisgICAgMHhDNCwgMHgzMywgMHhCMiwgMHg0NCwgMHhEQywgMHgyNiwgMHhCOSwgMHg5MSwgMHgzNCwgMHhBNCwgMHg2OSwgMHgwMywgMHg0QiwgMHg1NSwgMHgxMiwgMHhBQiwKKyAgICAweDVFLCAweDIwLCAweDQ5LCAweEZCLCAweDNGLCAweEE0LCAweDY4LCAweDIzLCAweDBGLCAweERGLCAweEI2LCAweEExLCAweDU2LCAweDk4LCAweERELCAweDhCLAorICAgIDB4RTcsIDB4MzMsIDB4RkQsIDB4NUMsIDB4ODAsIDB4NjksIDB4NkUsIDB4MkUsIDB4ODEsIDB4RDQsIDB4NEEsIDB4OEYsIDB4MUEsIDB4RDIsIDB4ODgsIDB4OEMsCisgICAgMHgxQSwgMHhCNywgMHg0MSwgMHhCNCwgMHg5MywgMHg4MiwgMHg0QiwgMHhDOSwgMHhFRCwgMHhGMCwgMHhDNywgMHgyRiwgMHg0QiwgMHhBNCwgMHhCMywgMHhENSwKKyAgICAweDcwLCAweDQ3LCAweDNBLCAweDZGLCAweEJELCAweDQ1LCAweDg1LCAweDRELCAweDkxLCAweERBLCAweDI4LCAweDgzLCAweDZDLCAweERGLCAweDI0LCAweEQ1LAorICAgIDB4RkMsIDB4NEEsIDB4RTIsIDB4RkQsIDB4RDUsIDB4QzIsIDB4NUYsIDB4QzMsIDB4NjksIDB4RjQsIDB4MkEsIDB4MTksIDB4RDIsIDB4MkIsIDB4MTMsIDB4QzMsCisgICAgMHg1NywgMHgwRCwgMHgyOSwgMHhENiwgMHg2RCwgMHhCMSwgMHgxQiwgMHhBOCwgMHgzOCwgMHg3MiwgMHhCQywgMHgwOSwgMHg0RSwgMHg2QiwgMHgyMiwgMHhGMCwKKyAgICAweDg5LCAweDZDLCAweDE5LCAweDdBLCAweDYxLCAweDBDLCAweEM4LCAweEU1LCAweENELCAweDdBLCAweEE4LCAweDQ0LCAweDE1LCAweENGLCAweDlBLCAweDQzLAorICAgIDB4QTcsIDB4RjQsIDB4NzUsIDB4MEIsIDB4RDEsIDB4NjAsIDB4NTcsIDB4RjYsIDB4RjksIDB4RTUsIDB4MTgsIDB4RTgsIDB4ODAsIDB4Q0UsIDB4MDcsIDB4MTcsCisgICAgMHgxNywgMHgyNSwgMHgxRSwgMHhBMSwgMHgxNSwgMHg4QywgMHg3NywgMHgxNCwgMHg0RiwgMHg0QywgMHhBMCwgMHgyMiwgMHg4NSwgMHgxMywgMHg1RiwgMHg1NCwKKyAgICAweDI4LCAweDk4LCAweDIzLCAweDVBLCAweDk1LCAweEMxLCAweEZCLCAweDFGLCAweDY5LCAweDRELCAweEQzLCAweDRDLCAweDQ4LCAweEFDLCAweEQxLCAweEYxLAorICAgIDB4QzYsIDB4MjQsIDB4RkUsIDB4MDIsIDB4MTUsIDB4RkUsIDB4MDAsIDB4MjIsIDB4MTQsIDB4NEEsIDB4NjcsIDB4NUUsIDB4RDMsIDB4RTQsIDB4MzYsIDB4NkIsCisgICAgMHgwNCwgMHhDQSwgMHg5OCwgMHhEQSwgMHg5NywgMHg5RSwgMHg1MiwgMHg5RSwgMHhFNSwgMHg5NCwgMHhBQSwgMHg4NywgMHhFRSwgMHhDQiwgMHgwOCwgMHhDOCwKKyAgICAweEE3LCAweDI0LCAweDQ2LCAweEYyLCAweDIzLCAweDYyLCAweEQxLCAweDlDLCAweEE3LCAweDdGLCAweENDLCAweDkzLCAweEMxLCAweDU4LCAweEZGLCAweEE4LAorICAgIDB4MTcsIDB4QUYsIDB4NTYsIDB4MjgsIDB4MUQsIDB4OUYsIDB4RkIsIDB4MjgsIDB4OTUsIDB4QkUsIDB4NDgsIDB4MzAsIDB4QkIsIDB4RDQsIDB4MEIsIDB4M0YsCisgICAgMHhGMywgMHg1MywgMHgzNCwgMHhGQywgMHg1MCwgMHg1RiwgMHg5MCwgMHg4OSwgMHgyOCwgMHhGRSwgMHg0QywgMHg3RSwgMHgwOCwgMHhGOSwgMHgwQywgMHg1MywKKyAgICAweEQ4LCAweDE2LCAweEY3LCAweDQ0LCAweDg4LCAweDE3LCAweEZELCAweEZELCAweDIxLCAweDBELCAweDUyLCAweEJGLCAweEQ4LCAweDc0LCAweEQ4LCAweENGLAorICAgIDB4N0UsIDB4QjgsIDB4NzAsIDB4OEIsIDB4QTksIDB4QkIsIDB4NUEsIDB4QzksIDB4NzUsIDB4RjIsIDB4QzAsIDB4RDMsIDB4QzUsIDB4RTAsIDB4NjEsIDB4N0IsCisgICAgMHhFRiwgMHhBNSwgMHg1MSwgMHg3MCwgMHgzNywgMHhBMSwgMHhCOCwgMHgwOSwgMHhBQywgMHhGMCwgMHhGNywgMHg0MywgMHhENSwgMHhFOCwgMHhCNSwgMHg3QywKKyAgICAweEU1LCAweEU3LCAweDk3LCAweEM4LCAweDIwLCAweDg4LCAweDUzLCAweEEzLCAweDhGLCAweDJGLCAweDZCLCAweEI0LCAweEQyLCAweEY5LCAweDg4LCAweERFLAorICAgIDB4MTUsIDB4RTMsIDB4ODgsIDB4QTYsIDB4OTQsIDB4QzMsIDB4NTEsIDB4Q0UsIDB4RkYsIDB4MkYsIDB4RjUsIDB4NTksIDB4QjgsIDB4QjQsIDB4NDksIDB4NkEsCisgICAgMHhBRSwgMHg2RSwgMHg4QiwgMHg2MywgMHg3QiwgMHgwOCwgMHhCMCwgMHhENywgMHgwMCwgMHgzQSwgMHhGNiwgMHhCRiwgMHg1NSwgMHg2MywgMHhCMSwgMHgwOSwKKyAgICAweDI0LCAweDE0LCAweDM5LCAweDU2LCAweDYyLCAweDE4LCAweDMzLCAweDY0LCAweDY0LCAweEVGLCAweEFBLCAweEE4LCAweEM5LCAweDM4LCAweDJBLCAweEEyLAorICAgIDB4NzAsIDB4NEEsIDB4NjEsIDB4NjYsIDB4NkYsIDB4RDcsIDB4NzMsIDB4RjcsIDB4RjAsIDB4OEIsIDB4MzQsIDB4QzQsIDB4OTIsIDB4RDEsIDB4NjMsIDB4RkMsCisgICAgMHgwNSwgMHhDNiwgMHhENCwgMHhFNCwgMHg5QiwgMHg4RiwgMHg0RSwgMHgyQSwgMHg1OCwgMHgyQSwgMHhBNywgMHg3QywgMHg0NywgMHgzNCwgMHgwMSwgMHhGMywKKyAgICAweDVELCAweDBGLCAweDk5LCAweEYzLCAweDIxLCAweDg2LCAweEI3LCAweDUyLCAweDhGLCAweDA2LCAweDYwLCAweDFELCAweEM2LCAweEJCLCAweEM0LCAweDVBLAorICAgIDB4OEYsIDB4OUIsIDB4NUUsIDB4NDMsIDB4NEEsIDB4QTQsIDB4MkMsIDB4MUEsIDB4QUQsIDB4QjgsIDB4NzQsIDB4NzksIDB4MkMsIDB4MkQsIDB4M0EsIDB4MzEsCisgICAgMHgyMSwgMHg3RiwgMHg2MywgMHg5MSwgMHgwQywgMHhFRCwgMHhGRiwgMHgzMywgMHhGNCwgMHgyRCwgMHgxOSwgMHhCNiwgMHg4MywgMHhEMywgMHgzMywgMHg3QiwKKyAgICAweEU3LCAweDlDLCAweEYxLCAweDhFLCAweEFGLCAweDU3LCAweDkxLCAweDgxLCAweDNBLCAweDg2LCAweDFELCAweEE4LCAweEM0LCAweDU4LCAweDc4LCAweEE4LAorICAgIDB4RTgsIDB4MzQsIDB4QjksIDB4RTYsIDB4NTcsIDB4ODksIDB4NEUsIDB4RDMsIDB4NzIsIDB4RDMsIDB4RDIsIDB4MDksIDB4OEMsIDB4RjEsIDB4NUIsIDB4RkIsCisgICAgMHg2NCwgMHhEQiwgMHhBNSwgMHgzMiwgMHgxNywgMHg5OSwgMHg2NSwgMHgwOCwgMHgzMSwgMHhBRCwgMHg4OSwgMHg2NCwgMHg2MCwgMHg2MCwgMHhCOCwgMHhGRSwKKyAgICAweDc3LCAweEU1LCAweDMzLCAweDgwLCAweEY4LCAweDQxLCAweDc1LCAweEYwLCAweEFFLCAweDA0LCAweEIzLCAweDQ5LCAweDZDLCAweDI0LCAweDMzLCAweEM4LAorICAgIDB4N0EsIDB4MDksIDB4NDMsIDB4NkQsIDB4MEYsIDB4ODgsIDB4RTYsIDB4Q0QsIDB4MzUsIDB4QTgsIDB4RjIsIDB4QkQsIDB4RUEsIDB4MzksIDB4QTYsIDB4NDYsCisgICAgMHhCNSwgMHgyMSwgMHhENCwgMHhDMCwgMHhGNSwgMHg5MSwgMHhERCwgMHg5QywgMHg1OCwgMHg2OCwgMHgwNCwgMHg5OSwgMHg1OCwgMHgxQywgMHhDMiwgMHgwMywKKyAgICAweEVELCAweDFELCAweENBLCAweDkzLCAweEJBLCAweDE4LCAweDFELCAweERELCAweEI0LCAweEJCLCAweEUyLCAweDFFLCAweDM4LCAweDU5LCAweDA0LCAweDVFLAorICAgIDB4OEUsIDB4RkYsIDB4ODAsIDB4RUMsIDB4QkIsIDB4NTcsIDB4RTQsIDB4QTgsIDB4OUYsIDB4NEQsIDB4QzMsIDB4RTUsIDB4MTUsIDB4NzEsIDB4NTcsIDB4REQsCisgICAgMHgwMiwgMHhCMiwgMHg2NywgMHg1MCwgMHhEMiwgMHhEQiwgMHg5NSwgMHhGRiwgMHgwMywgMHgyQywgMHhERSwgMHhFMywgMHg3OCwgMHg0RiwgMHhGRSwgMHhBOSwKKyAgICAweEFDLCAweEU3LCAweEU5LCAweEM5LCAweEE2LCAweEIwLCAweENGLCAweDk4LCAweDVFLCAweEY3LCAweEQ3LCAweDJDLCAweDkyLCAweDc4LCAweDQ0LCAweEI5LAorICAgIDB4QTAsIDB4MUEsIDB4QTQsIDB4MTcsIDB4QTMsIDB4NTAsIDB4NUUsIDB4N0UsIDB4MUEsIDB4OUYsIDB4MTgsIDB4M0MsIDB4NTMsIDB4OEEsIDB4RkMsIDB4OUMsCisgICAgMHhGMSwgMHg1OCwgMHg1RCwgMHhBMywgMHhENSwgMHgxOCwgMHg2QywgMHhDNywgMHg1NSwgMHgyRiwgMHg0NiwgMHg1RCwgMHhGQiwgMHgzMywgMHg3NSwgMHg1MCwKKyAgICAweDBBLCAweDI4LCAweDM3LCAweDk5LCAweEJELCAweDA2LCAweEFELCAweDE0LCAweDg0LCAweEI1LCAweDlELCAweERGLCAweDA0LCAweDNGLCAweDMzLCAweDI4LAorICAgIDB4MUYsIDB4RDgsIDB4NTcsIDB4QjcsIDB4NkEsIDB4OTAsIDB4MTgsIDB4QzcsIDB4QTYsIDB4MUIsIDB4NTYsIDB4RDEsIDB4QkYsIDB4MjIsIDB4NEUsIDB4MzMsCisgICAgMHg2QSwgMHg3RiwgMHg5NCwgMHhCOCwgMHhBNiwgMHgwQywgMHhBMCwgMHhFMCwgMHg3QywgMHhEMSwgMHhFRSwgMHhEQSwgMHhGRiwgMHhFMCwgMHg5QiwgMHg0MSwKKyAgICAweDc1LCAweEQ3LCAweENBLCAweDk2LCAweDAxLCAweEE5LCAweEFBLCAweEFELCAweDc1LCAweDU0LCAweEJBLCAweDg2LCAweDE0LCAweEYxLCAweDg0LCAweDY2LAorICAgIDB4QzMsIDB4QzgsIDB4NjYsIDB4NzEsIDB4NjMsIDB4MEQsIDB4NEEsIDB4MkMsIDB4ODUsIDB4NEUsIDB4RDcsIDB4NkYsIDB4OUEsIDB4NTksIDB4NTEsIDB4OEEsCisgICAgMHhCNiwgMHhBRiwgMHhGNSwgMHg1RiwgMHgxOCwgMHhBMiwgMHg0OSwgMHhEMCwgMHgzNCwgMHhENCwgMHg1MSwgMHhGOSwgMHg4RCwgMHhBMywgMHg5MSwgMHg1OSwKKyAgICAweDdDLCAweDg3LCAweDlELCAweDMxLCAweDE0LCAweEUwLCAweEYwLCAweDA4LCAweDk1LCAweDJDLCAweDYxLCAweENDLCAweDUzLCAweEUyLCAweDE1LCAweDlELAorICAgIDB4RUUsIDB4QTEsIDB4QzIsIDB4REUsIDB4MkIsIDB4NTMsIDB4QjYsIDB4MjEsIDB4ODgsIDB4RTAsIDB4NUIsIDB4NzcsIDB4MUYsIDB4NTAsIDB4RUYsIDB4RkEsCisgICAgMHhBQSwgMHg0OCwgMHhDRiwgMHg5NywgMHg0MCwgMHgzQiwgMHhDMSwgMHg4MiwgMHgzNCwgMHg2RCwgMHhBQiwgMHhCNCwgMHhBRCwgMHg1QSwgMHhFMywgMHg5OSwKKyAgICAweDc4LCAweEI2LCAweEJELCAweDE2LCAweDM0LCAweDMyLCAweEM5LCAweEEyLCAweEMyLCAweEExLCAweEFCLCAweEIzLCAweEZBLCAweEE2LCAweDYyLCAweDdELAorICAgIDB4QjUsIDB4RjcsIDB4ODksIDB4QUQsIDB4OUEsIDB4QTksIDB4N0UsIDB4MUMsIDB4N0YsIDB4OUMsIDB4NjQsIDB4MzAsIDB4NDcsIDB4OUIsIDB4NkUsIDB4NDgsCisgICAgMHg2MiwgMHgyQywgMHhERSwgMHg5QSwgMHhBRiwgMHgyQSwgMHhFMiwgMHhGMSwgMHg3QiwgMHhFQSwgMHhBMiwgMHhBQSwgMHg3NSwgMHgzQywgMHhCNSwgMHhCMiwKKyAgICAweEM1LCAweDJGLCAweDBGLCAweDUwLCAweDM2LCAweDE1LCAweDEyLCAweDcxLCAweDQ4LCAweDJBLCAweEQyLCAweDczLCAweDAyLCAweEIzLCAweEE4LCAweEJFLAorICAgIDB4MjQsIDB4MTgsIDB4NzksIDB4QjAsIDB4RTAsIDB4MDYsIDB4MDcsIDB4MTMsIDB4RTUsIDB4RjYsIDB4MzIsIDB4OTYsIDB4OUMsIDB4ODgsIDB4NkIsIDB4RjAsCisgICAgMHhGQiwgMHhBOSwgMHgwNCwgMHg1MiwgMHgxOCwgMHg0MSwgMHg5MSwgMHg1RCwgMHg0QywgMHhEQywgMHg5NiwgMHgzNSwgMHg0NSwgMHg4NSwgMHgxRCwgMHgxQywKKyAgICAweERGLCAweDI4LCAweENBLCAweDA3LCAweEM1LCAweDI3LCAweDQ3LCAweEY3LCAweDMwLCAweDZELCAweERGLCAweDI4LCAweDEyLCAweENBLCAweDI4LCAweDMxLAorICAgIDB4NzEsIDB4NzcsIDB4Q0MsIDB4MzUsIDB4MEEsIDB4MkUsIDB4ODEsIDB4RUUsIDB4RDIsIDB4NkYsIDB4MDEsIDB4OTUsIDB4NUEsIDB4OTcsIDB4NDQsIDB4Q0EsCisgICAgMHgxOCwgMHg2OSwgMHhEOSwgMHhBMCwgMHhDOCwgMHg4OCwgMHhGMywgMHgyQiwgMHg3QSwgMHg3RiwgMHhGRCwgMHg1RiwgMHhBNiwgMHg0MiwgMHgzRCwgMHgxQSwKKyAgICAweDM2LCAweDc4LCAweDRELCAweDFCLCAweDU2LCAweDhGLCAweDNBLCAweENCLCAweDY1LCAweDc3LCAweDlFLCAweDc4LCAweDAzLCAweERFLCAweEE5LCAweEU2LAorICAgIDB4MEQsIDB4MDYsIDB4RjYsIDB4NDMsIDB4QzYsIDB4OTQsIDB4Q0IsIDB4MzcsIDB4RUEsIDB4QzEsIDB4OTcsIDB4MDEsIDB4NjksIDB4NDEsIDB4NkQsIDB4NTUsCisgICAgMHg3QywgMHhDOCwgMHg5QywgMHhEMSwgMHg0QSwgMHg2NiwgMHg5RSwgMHg5MCwgMHgwMywgMHhDQSwgMHgyOSwgMHg1MywgMHg2OCwgMHgwRiwgMHg2OSwgMHg2QywKKyAgICAweDdELCAweEVCLCAweEFELCAweEQ5LCAweDFBLCAweEE0LCAweDQ2LCAweEI0LCAweDkyLCAweDlDLCAweDQyLCAweDBFLCAweDlGLCAweDgxLCAweDI5LCAweEEyLAorICAgIDB4REYsIDB4QjAsIDB4MkMsIDB4NEMsIDB4MzIsIDB4QTIsIDB4NTcsIDB4MjUsIDB4MDEsIDB4QjEsIDB4OUMsIDB4MTIsIDB4NTMsIDB4QzcsIDB4RjAsIDB4MEEsCisgICAgMHg2MCwgMHhBNiwgMHg1MSwgMHhDOSwgMHg4RiwgMHhCNCwgMHg1MiwgMHgyMCwgMHg4QSwgMHg2MSwgMHgxNywgMHg3NiwgMHhBMywgMHg4NSwgMHhCOSwgMHg1MSwKKyAgICAweDAyLCAweDBBLCAweDJELCAweDgxLCAweDA3LCAweDkwLCAweDU2LCAweDk2LCAweEE3LCAweEY5LCAweDVBLCAweDM2LCAweDZFLCAweDJBLCAweEE4LCAweDdFLAorICAgIDB4QzEsIDB4RDgsIDB4MjMsIDB4MEUsIDB4ODEsIDB4QkEsIDB4ODUsIDB4REQsIDB4NjAsIDB4NjEsIDB4MjgsIDB4RUYsIDB4OTMsIDB4NEUsIDB4MTIsIDB4OUIsCisgICAgMHgxQSwgMHgwQiwgMHhDNywgMHhFQiwgMHg3QywgMHhFMCwgMHhFRiwgMHgyNCwgMHhBMSwgMHgwQSwgMHg3RCwgMHg5OCwgMHhCOCwgMHg1NSwgMHhGOSwgMHg4OCwKKyAgICAweDQyLCAweEEyLCAweDY5LCAweEM1LCAweDhDLCAweDI0LCAweEUxLCAweEExLCAweEE0LCAweERFLCAweDM0LCAweDZFLCAweDA4LCAweEZELCAweDFGLCAweDI1LAorICAgIDB4MEMsIDB4OTQsIDB4RUYsIDB4MDgsIDB4NjIsIDB4NjMsIDB4NzUsIDB4MDgsIDB4M0UsIDB4NzEsIDB4QUYsIDB4QTYsIDB4RkEsIDB4NUQsIDB4OEUsIDB4QTgsCisgICAgMHgzNywgMHgwMCwgMHhCNywgMHhERiwgMHg0QSwgMHg0RCwgMHg2RSwgMHg5MiwgMHgwQSwgMHg0NSwgMHgwMiwgMHhGOCwgMHhGMCwgMHgwOCwgMHg3NywgMHgzOCwKKyAgICAweDBDLCAweDJCLCAweEFFLCAweDE1LCAweEY4LCAweDQwLCAweDZDLCAweDQwLCAweENDLCAweDA4LCAweDc2LCAweEI0LCAweEQ1LCAweDkyLCAweDU5LCAweDQ5LAorICAgIDB4QTAsIDB4OTgsIDB4RUMsIDB4NjUsIDB4Q0UsIDB4Q0MsIDB4QUYsIDB4OEIsIDB4QzQsIDB4QTksIDB4RTgsIDB4MkIsIDB4MjMsIDB4OTAsIDB4QzAsIDB4MTksCisgICAgMHgxMiwgMHgxNSwgMHgyMywgMHhDRSwgMHhENCwgMHg4MCwgMHgyMiwgMHg4MiwgMHgzMCwgMHg2QSwgMHg1MCwgMHhGQSwgMHg2RCwgMHgzQSwgMHhCRCwgMHg0QiwKKyAgICAweEUxLCAweDVCLCAweDFBLCAweDA3LCAweDg4LCAweDRFLCAweEQwLCAweDQyLCAweEE2LCAweEZELCAweDVFLCAweDNDLCAweDdGLCAweDUzLCAweDIwLCAweERELAorICAgIDB4OUMsIDB4NDYsIDB4RUEsIDB4RTgsIDB4OEQsIDB4NkYsIDB4MTcsIDB4NTcsIDB4NDEsIDB4NTksIDB4RUEsIDB4MjcsIDB4QzcsIDB4NzAsIDB4RkIsIDB4MTIsCisgICAgMHgyRCwgMHg2QywgMHhGNywgMHhFRiwgMHhBNywgMHg2QSwgMHg1QywgMHgxNSwgMHgwOSwgMHhFMywgMHg2MywgMHhGMSwgMHg1QiwgMHhCOCwgMHhFNCwgMHg2OSwKKyAgICAweDkyLCAweDdDLCAweDEzLCAweDkwLCAweEJCLCAweEEzLCAweEU4LCAweEYwLCAweEM5LCAweEYzLCAweEQ1LCAweDI3LCAweEI3LCAweEM0LCAweDJCLCAweEVCLAorICAgIDB4NjYsIDB4MTksIDB4MzYsIDB4OUIsIDB4ODgsIDB4ODgsIDB4RkQsIDB4QkEsIDB4MEYsIDB4MkUsIDB4NjYsIDB4OTgsIDB4OTQsIDB4M0MsIDB4NkYsIDB4MDksCisgICAgMHgwQiwgMHg4OSwgMHgzNSwgMHgzQSwgMHg4QSwgMHg4QSwgMHg3QiwgMHhBNSwgMHgxRiwgMHg5QiwgMHg5RCwgMHg1MywgMHg2NywgMHhFRSwgMHhCQywgMHg4QywKKyAgICAweDYzLCAweDgzLCAweDExLCAweDMxLCAweDg3LCAweDI0LCAweDM2LCAweEJBLCAweDdGLCAweEM1LCAweEEyLCAweDA2LCAweDMzLCAweDEwLCAweDc5LCAweEVDLAorICAgIDB4MDEsIDB4ODksIDB4NDgsIDB4OTYsIDB4MkEsIDB4QzksIDB4MjUsIDB4MEYsIDB4RjMsIDB4OTIsIDB4MUUsIDB4NTIsIDB4OTMsIDB4Q0QsIDB4NjUsIDB4NzEsCisgICAgMHgyQiwgMHg5OCwgMHhFNywgMHhDOCwgMHgyOSwgMHhBMywgMHgyMSwgMHg0MywgMHhGMCwgMHgzNywgMHgzQywgMHgzNiwgMHg4RSwgMHg3RiwgMHhEQywgMHg5NSwKKyAgICAweEExLCAweDU2LCAweEExLCAweDIwLCAweEExLCAweEJDLCAweDVDLCAweDMwLCAweERFLCAweDUyLCAweDU0LCAweEM4LCAweDczLCAweENFLCAweEE2LCAweDMwLAorICAgIDB4NDQsIDB4MEYsIDB4M0YsIDB4QTAsIDB4N0IsIDB4N0UsIDB4MTEsIDB4NjYsIDB4MkUsIDB4RDYsIDB4RDgsIDB4ODUsIDB4NUIsIDB4NTYsIDB4QzEsIDB4RDMsCisgICAgMHhFRSwgMHhGMSwgMHg3RSwgMHhCQSwgMHgwOCwgMHhGMSwgMHhBNCwgMHg0OSwgMHhCMywgMHgwQywgMHg0MSwgMHhBMywgMHhGQywgMHhBRiwgMHhBNiwgMHg5RSwKKyAgICAweDkwLCAweDI1LCAweDQ0LCAweEMyLCAweDM2LCAweDY0LCAweDc0LCAweDM4LCAweEM5LCAweEJDLCAweEE1LCAweEU4LCAweDM2LCAweDJFLCAweDg0LCAweENELAorICAgIDB4RUEsIDB4MjIsIDB4OEEsIDB4MDksIDB4OTQsIDB4QjIsIDB4MzgsIDB4NjcsIDB4QzMsIDB4QkQsIDB4N0MsIDB4NzksIDB4MTIsIDB4M0QsIDB4RTIsIDB4QTAsCisgICAgMHgwQSwgMHgxRiwgMHhDRSwgMHhFNywgMHgxRCwgMHg3QSwgMHhCNSwgMHgyQiwgMHg0RSwgMHg2MiwgMHg4MiwgMHgzNywgMHhFQywgMHhGQiwgMHg3QiwgMHgwNSwKKyAgICAweEFDLCAweEU1LCAweDEwLCAweDYwLCAweDhCLCAweDA5LCAweDdELCAweEM4LCAweDE2LCAweEUwLCAweEZBLCAweDc4LCAweDM1LCAweDEzLCAweEY2LCAweDhELAorICAgIDB4QjAsIDB4MzksIDB4NUYsIDB4QzgsIDB4RjQsIDB4MDgsIDB4Q0YsIDB4MEQsIDB4QTksIDB4QTEsIDB4QzYsIDB4RTAsIDB4REMsIDB4MEEsIDB4NEQsIDB4NTQsCisgICAgMHg2QywgMHg0NywgMHgxNiwgMHhGRCwgMHg2MSwgMHgwOCwgMHhEMywgMHg5MCwgMHhDMywgMHg0QSwgMHhEMiwgMHhFMCwgMHg3RSwgMHhFOSwgMHhCMSwgMHg2MiwKKyAgICAweEJELCAweDE1LCAweDYxLCAweEI4LCAweDZBLCAweEYyLCAweDc2LCAweDY2LCAweEJCLCAweDVDLCAweEI2LCAweDg3LCAweDQwLCAweDhCLCAweEZGLCAweDkwLAorICAgIDB4MUYsIDB4QjcsIDB4NjMsIDB4RjMsIDB4NzMsIDB4RjQsIDB4RTksIDB4RUIsIDB4OTYsIDB4QTksIDB4NzMsIDB4QTUsIDB4RjUsIDB4OTQsIDB4NUUsIDB4MTYsCisgICAgMHg5QiwgMHhCMSwgMHg5RiwgMHgyRiwgMHg2QiwgMHg5RCwgMHgxMywgMHg2RiwgMHgwMSwgMHhENiwgMHhCNiwgMHg3NCwgMHhBNywgMHg4NiwgMHgxOSwgMHg4MiwKKyAgICAweDZGLCAweDUwLCAweDFBLCAweDQ0LCAweDVELCAweDQ3LCAweEM1LCAweEM1LCAweDY2LCAweEVGLCAweDI0LCAweEUzLCAweEE4LCAweDE2LCAweEQzLCAweEVCLAorICAgIDB4MkIsIDB4MDYsIDB4NTQsIDB4REIsIDB4OUIsIDB4MUYsIDB4RkUsIDB4OEQsIDB4MDMsIDB4MUMsIDB4NjMsIDB4NEMsIDB4RkEsIDB4N0UsIDB4QjgsIDB4NUEsCisgICAgMHhBMywgMHg1MCwgMHgyRCwgMHhFMSwgMHgwNCwgMHhFMSwgMHgxNSwgMHgzMSwgMHhGNywgMHhCMywgMHgyMywgMHhENywgMHgwRSwgMHg3OCwgMHg0MiwgMHg0RCwKKyAgICAweDI4LCAweDFGLCAweEYyLCAweDlELCAweEZDLCAweDRBLCAweEVDLCAweEExLCAweEYyLCAweDZFLCAweDQwLCAweEEyLCAweEQ5LCAweEVDLCAweDY3LCAweERCLAorICAgIDB4ODEsIDB4N0MsIDB4RUEsIDB4NzIsIDB4MzgsIDB4QUYsIDB4QTIsIDB4MDYsIDB4Q0MsIDB4QUIsIDB4MjIsIDB4RkEsIDB4NUMsIDB4RjksIDB4QjcsIDB4OUQsCisgICAgMHhFNSwgMHgzNSwgMHgxMSwgMHhFOCwgMHhCMywgMHgwMSwgMHhGQiwgMHhFRiwgMHhFOCwgMHhFNCwgMHgwOCwgMHgzNiwgMHhEQiwgMHhCMywgMHg4MywgMHg4RCwKKyAgICAweEQwLCAweEE5LCAweEZELCAweEZCLCAweDhBLCAweDI4LCAweDYwLCAweEQzLCAweERDLCAweDcyLCAweDUyLCAweDQwLCAweDk3LCAweDUzLCAweEJCLCAweEEyLAorICAgIDB4QUYsIDB4NkYsIDB4MDQsIDB4MkIsIDB4QkUsIDB4OEUsIDB4MTYsIDB4MkQsIDB4MEUsIDB4N0MsIDB4MkEsIDB4RUIsIDB4QzEsIDB4QzgsIDB4NkUsIDB4OTYsCisgICAgMHgyOSwgMHgxRiwgMHg2NCwgMHgyNiwgMHhGRiwgMHg4OSwgMHhGMywgMHgyRCwgMHhGMiwgMHgyNiwgMHhGMCwgMHg3NCwgMHgwRiwgMHg0RCwgMHg3RiwgMHgyRiwKKyAgICAweDYxLCAweDNDLCAweEU5LCAweDAzLCAweDQzLCAweDgyLCAweDI0LCAweDJGLCAweDgwLCAweDQyLCAweDVELCAweEJFLCAweEZBLCAweDEzLCAweDA2LCAweDBGLAorICAgIDB4QTgsIDB4ODIsIDB4NDQsIDB4MDQsIDB4OTcsIDB4QzQsIDB4MjEsIDB4MjEsIDB4NEMsIDB4NEQsIDB4QjQsIDB4MzcsIDB4QjMsIDB4NUQsIDB4RDgsIDB4RjcsCisgICAgMHhEQiwgMHhDMywgMHhDNiwgMHgyMSwgMHg5OCwgMHhGMywgMHgxMSwgMHg3QSwgMHg4RCwgMHhEOSwgMHhFMywgMHhEOSwgMHg3RiwgMHhGNiwgMHhFRCwgMHg0NCwKKyAgICAweENDLCAweENCLCAweDJBLCAweDJELCAweDIyLCAweDNDLCAweDIzLCAweDY0LCAweDI1LCAweEEwLCAweENDLCAweERFLCAweDk5LCAweDAxLCAweEU4LCAweENCLAorICAgIDB4QjQsIDB4RTYsIDB4NEQsIDB4RUIsIDB4NTcsIDB4RUMsIDB4REEsIDB4QjMsIDB4OUEsIDB4N0UsIDB4RjUsIDB4Q0MsIDB4OUIsIDB4OUQsIDB4M0EsIDB4QzgsCisgICAgMHhENCwgMHhBOSwgMHgzOSwgMHg3RCwgMHg2QSwgMHg2MywgMHhDNywgMHg0OCwgMHhGRiwgMHg4RSwgMHgzNiwgMHg4MSwgMHg4QywgMHgyQiwgMHg4RiwgMHgxRSwKKyAgICAweDUyLCAweDQyLCAweEVFLCAweDFDLCAweEJCLCAweEI5LCAweEU5LCAweEM1LCAweEI5LCAweDI3LCAweDQ3LCAweEE3LCAweDkyLCAweDM5LCAweDAxLCAweDNFLAorICAgIDB4MzUsIDB4QTksIDB4NkMsIDB4NDcsIDB4NTUsIDB4NDYsIDB4MDcsIDB4MjgsIDB4ODIsIDB4NUMsIDB4MEEsIDB4QzcsIDB4MDcsIDB4NkEsIDB4RTAsIDB4NTcsCisgICAgMHg5RiwgMHgzQywgMHgwOCwgMHhEQSwgMHhBMiwgMHg1RSwgMHhFOCwgMHhBMSwgMHhCQywgMHhCMiwgMHg0RiwgMHhEMSwgMHhCMCwgMHgyRSwgMHg3MSwgMHhDMiwKKyAgICAweEFDLCAweEE0LCAweEYxLCAweDhCLCAweEUxLCAweEY4LCAweDMwLCAweEQ2LCAweDQ4LCAweEJDLCAweDc5LCAweDc0LCAweEY2LCAweEMzLCAweDNGLCAweDgzLAorICAgIDB4NzUsIDB4QzQsIDB4QzUsIDB4MjAsIDB4RUQsIDB4MDEsIDB4QjYsIDB4QTksIDB4M0IsIDB4MjIsIDB4QzAsIDB4MUYsIDB4QzIsIDB4NDksIDB4RjAsIDB4QTksCisgICAgMHg1RiwgMHg1MywgMHg2RCwgMHg2RCwgMHhCOCwgMHhFMSwgMHg2RCwgMHg5RSwgMHhFOCwgMHhENSwgMHg0NSwgMHgzNCwgMHg2OSwgMHg4NywgMHhGOCwgMHg0MiwKKyAgICAweDc4LCAweDFBLCAweEQwLCAweDA3LCAweDZBLCAweEM2LCAweDlFLCAweDU2LCAweEVCLCAweEE2LCAweEY2LCAweDcxLCAweDg4LCAweDgwLCAweDNBLCAweERELAorICAgIDB4REMsIDB4QzQsIDB4OEUsIDB4QTMsIDB4NzQsIDB4NkQsIDB4MTAsIDB4QkEsIDB4MjYsIDB4OTgsIDB4RTEsIDB4NjgsIDB4NDksIDB4NkEsIDB4ODYsIDB4MEYsCisgICAgMHg2MiwgMHhBNSwgMHg3NSwgMHg4MywgMHhEOSwgMHg1QSwgMHhENiwgMHgzNCwgMHg4MSwgMHg2NSwgMHgxNywgMHhBOSwgMHhEMiwgMHhGMCwgMHgzNSwgMHgzNSwKKyAgICAweDI3LCAweDlELCAweDgxLCAweDcyLCAweEFFLCAweEE0LCAweEMwLCAweEZFLCAweDA5LCAweDk1LCAweEZBLCAweDNELCAweDc4LCAweEVBLCAweDNELCAweEE1LAorICAgIDB4QTksIDB4QjYsIDB4NEIsIDB4OTEsIDB4QkEsIDB4MzEsIDB4NDQsIDB4Q0QsIDB4RDYsIDB4OTQsIDB4N0EsIDB4MzgsIDB4NDAsIDB4NzUsIDB4RDYsIDB4NEMsCisgICAgMHg2RiwgMHgzMCwgMHg4QSwgMHg4RSwgMHhGNiwgMHg3NSwgMHg1MCwgMHg3MCwgMHgxNywgMHgyOCwgMHhFRCwgMHgwQiwgMHhERiwgMHhFQiwgMHg4QiwgMHg5NCwKKyAgICAweDA1LCAweDlCLCAweDg1LCAweDdBLCAweEFBLCAweEU3LCAweDc2LCAweEU0LCAweDVELCAweDlELCAweDJBLCAweDAyLCAweDlBLCAweDk2LCAweDcwLCAweEE0LAorICAgIDB4QzUsIDB4NEQsIDB4OTAsIDB4MTgsIDB4NUQsIDB4MzEsIDB4MkUsIDB4NDksIDB4RkYsIDB4QTksIDB4QkUsIDB4OUQsIDB4OUUsIDB4N0YsIDB4NkUsIDB4MEEsCisgICAgMHgwOCwgMHgwNCwgMHg4MywgMHg0MywgMHhBMSwgMHg1QiwgMHg0NCwgMHhBNCwgMHhBQywgMHg2NiwgMHhFMSwgMHg1QSwgMHhBMywgMHg3MCwgMHhFRCwgMHgwMCwKKyAgICAweDg0LCAweDUzLCAweDBFLCAweDUyLCAweDIyLCAweDI5LCAweDNELCAweDE0LCAweDlELCAweDlDLCAweDFDLCAweEJDLCAweDBBLCAweDE5LCAweEMwLCAweDdCLAorICAgIDB4RUQsIDB4QkMsIDB4NEQsIDB4MTUsIDB4OEIsIDB4RUMsIDB4OTksIDB4RjcsIDB4NjgsIDB4NzYsIDB4Q0QsIDB4M0MsIDB4MTEsIDB4NTcsIDB4MjgsIDB4NDksCisgICAgMHhGMSwgMHgwRiwgMHg3RiwgMHg3NCwgMHgyNCwgMHg0MCwgMHgwNSwgMHg5OCwgMHhGRiwgMHhGNCwgMHhFNywgMHhCNywgMHg4NCwgMHhEQiwgMHg1NSwgMHgwOSwKKyAgICAweEQ2LCAweDBCLCAweEU0LCAweDVCLCAweEY5LCAweEZGLCAweEIxLCAweDJFLCAweDI1LCAweDAwLCAweDNDLCAweDlBLCAweEVFLCAweDFCLCAweDI0LCAweDA3LAorICAgIDB4M0MsIDB4RTEsIDB4QTksIDB4QjEsIDB4OTAsIDB4NDQsIDB4NzMsIDB4MUUsIDB4RDEsIDB4RkEsIDB4MDAsIDB4MzUsIDB4RjUsIDB4NzksIDB4QUIsIDB4REUsCisgICAgMHhCMywgMHg1RSwgMHg2MiwgMHg1NiwgMHgwQiwgMHhDQywgMHhBMywgMHg0OSwgMHg2NywgMHg0NCwgMHg3OSwgMHg4NSwgMHgzQSwgMHg1RCwgMHgyQiwgMHg5RCwKKyAgICAweEEzLCAweDU3LCAweDQ0LCAweDk3LCAweDJBLCAweDUwLCAweDM0LCAweEE5LCAweDJGLCAweDIwLCAweEU3LCAweDU4LCAweDQ5LCAweEY5LCAweDU0LCAweDhGLAorICAgIDB4OUIsIDB4RTEsIDB4Q0MsIDB4NDQsIDB4QzIsIDB4MjcsIDB4QkUsIDB4NjAsIDB4REQsIDB4NkUsIDB4NEQsIDB4RkIsIDB4QTgsIDB4QjcsIDB4NUUsIDB4RkEsCisgICAgMHhCRiwgMHhERSwgMHhGMiwgMHhCMiwgMHhERSwgMHhGOSwgMHg1NSwgMHg0MCwgMHhEMywgMHhCNywgMHg2MywgMHg1NiwgMHg3NCwgMHgyRCwgMHgxMiwgMHgzNywKKyAgICAweDJELCAweEQ2LCAweDdFLCAweDg0LCAweDYzLCAweDNFLCAweEFELCAweDQ0LCAweDY5LCAweDU4LCAweDhELCAweEVFLCAweDlBLCAweEEyLCAweEY3LCAweEZELAorICAgIDB4OTAsIDB4MDUsIDB4RDMsIDB4NTIsIDB4MkMsIDB4NTMsIDB4RkYsIDB4QTAsIDB4QzMsIDB4NDIsIDB4RTksIDB4NkUsIDB4NjEsIDB4NjgsIDB4RTksIDB4ODgsCisgICAgMHgzOSwgMHgzNSwgMHhENywgMHhBMCwgMHgwMywgMHhEQSwgMHg0OSwgMHgwRSwgMHg5QywgMHgwMywgMHhFNCwgMHg4NywgMHg5NSwgMHhBNSwgMHhEOSwgMHhENiwKKyAgICAweDI5LCAweEEyLCAweEZCLCAweDYzLCAweDlFLCAweERFLCAweDdDLCAweDlFLCAweDFFLCAweEFGLCAweDg2LCAweEM4LCAweEQwLCAweDI3LCAweDVFLCAweEUxLAorICAgIDB4RDMsIDB4QzYsIDB4M0EsIDB4NjAsIDB4RDgsIDB4NDMsIDB4RDcsIDB4REMsIDB4RkIsIDB4QzUsIDB4NzIsIDB4QkYsIDB4Q0YsIDB4QkQsIDB4M0EsIDB4MTYsCisgICAgMHhFRiwgMHg3OSwgMHhDNiwgMHgzRSwgMHhCNCwgMHgyNywgMHg0QywgMHg2MCwgMHgyQiwgMHg0QywgMHhBRiwgMHg0NCwgMHgyNiwgMHgxRSwgMHhBQiwgMHhFQywKKyAgICAweEIyLCAweENFLCAweEQ2LCAweEQxLCAweDcxLCAweEZFLCAweDhBLCAweEUyLCAweEE1LCAweDZDLCAweDUzLCAweDg5LCAweDg0LCAweDA4LCAweDhFLCAweDc5LAorICAgIDB4NDEsIDB4RTcsIDB4QkIsIDB4MzYsIDB4OEYsIDB4RkEsIDB4ODEsIDB4RUQsIDB4NkQsIDB4N0IsIDB4NEYsIDB4NEIsIDB4NTIsIDB4QzksIDB4MDMsIDB4ODMsCisgICAgMHg2NSwgMHhDNCwgMHhGMywgMHgyOCwgMHhDMywgMHg0NCwgMHgyNSwgMHg4NSwgMHg1RCwgMHg2RCwgMHgwNywgMHgzOCwgMHhERSwgMHhDMywgMHgzMywgMHg2RSwKKyAgICAweDA5LCAweDE2LCAweDY0LCAweDNGLCAweDJGLCAweDhBLCAweDIyLCAweDUzLCAweEVFLCAweERCLCAweDFCLCAweEYxLCAweDQxLCAweEQyLCAweEU1LCAweDI2LAorICAgIDB4RDIsIDB4RDUsIDB4OUYsIDB4MkIsIDB4MUUsIDB4NzgsIDB4RkUsIDB4ODEsIDB4MDMsIDB4NjgsIDB4NzksIDB4N0MsIDB4RUIsIDB4M0UsIDB4NzEsIDB4RjAsCisgICAgMHg2NCwgMHgyOCwgMHhBMCwgMHgzRSwgMHg1NCwgMHg0NCwgMHgyQiwgMHg1NiwgMHgyMSwgMHgxMSwgMHhENiwgMHhENywgMHgzNSwgMHhCMywgMHhGRCwgMHhDMSwKKyAgICAweEU1LCAweEU2LCAweDEwLCAweEIzLCAweENDLCAweEQ1LCAweDI0LCAweDI1LCAweEUwLCAweEY2LCAweDFBLCAweDBGLCAweEY5LCAweEQ1LCAweDM0LCAweDcyLAorICAgIDB4MjYsIDB4RDEsIDB4OUYsIDB4RkEsIDB4RkEsIDB4NDEsIDB4MUMsIDB4MjIsIDB4OTcsIDB4OTksIDB4MTYsIDB4NDEsIDB4QTgsIDB4REMsIDB4M0IsIDB4NTksCisgICAgMHhDNiwgMHhCMSwgMHg5RSwgMHhCNiwgMHgxMCwgMHhEMSwgMHhEMywgMHgzNiwgMHhDOCwgMHgxMiwgMHg3MywgMHg0RCwgMHg3RCwgMHhEMCwgMHhGRSwgMHhGNSwKKyAgICAweDgyLCAweDBBLCAweDRBLCAweDIwLCAweDVDLCAweEUxLCAweDdGLCAweDE5LCAweEZELCAweDFCLCAweDM0LCAweDE0LCAweEUxLCAweDhBLCAweERCLCAweDAxLAorICAgIDB4OUIsIDB4RjgsIDB4NjgsIDB4NzgsIDB4MkUsIDB4OUIsIDB4NkEsIDB4M0MsIDB4RjUsIDB4ODYsIDB4NjcsIDB4RjcsIDB4NkQsIDB4OTIsIDB4RjMsIDB4RDYsCisgICAgMHgwMCwgMHg3NywgMHg2QiwgMHg1RiwgMHg2MCwgMHgxNiwgMHhFNiwgMHg0MSwgMHhBQiwgMHhGNiwgMHg1MSwgMHhDNSwgMHgwRCwgMHhGMCwgMHg5NiwgMHgxMywKKyAgICAweEJCLCAweDE0LCAweDgyLCAweDQ0LCAweEQxLCAweENDLCAweDg2LCAweERFLCAweEMxLCAweDUxLCAweDg4LCAweEUzLCAweDcyLCAweDAyLCAweDVCLCAweDQxLAorICAgIDB4QTIsIDB4NDMsIDB4MEUsIDB4RUMsIDB4M0IsIDB4RUUsIDB4QUIsIDB4QjcsIDB4RUUsIDB4QUMsIDB4Q0EsIDB4ODQsIDB4NzEsIDB4M0YsIDB4OUYsIDB4QjcsCisgICAgMHg1OSwgMHg0RiwgMHg3QiwgMHgyQywgMHg3NiwgMHgxMCwgMHhGMSwgMHhGOCwgMHhEQywgMHg4OCwgMHg4RCwgMHgwMywgMHg3NiwgMHg2RCwgMHgxRCwgMHg0QiwKKyAgICAweDk4LCAweDA4LCAweDc0LCAweDFELCAweDJFLCAweEQ1LCAweEZDLCAweEYzLCAweDY4LCAweDI3LCAweEIzLCAweEExLCAweDg5LCAweDI2LCAweDVFLCAweDhELAorICAgIDB4NUMsIDB4RTQsIDB4ODYsIDB4OUIsIDB4MTAsIDB4RjAsIDB4ODYsIDB4QzMsIDB4RTAsIDB4NzYsIDB4RkYsIDB4OEIsIDB4OEMsIDB4MzksIDB4MzIsIDB4NEUsCisgICAgMHhGOCwgMHhGMywgMHg4NiwgMHhFNiwgMHgwQywgMHg2QSwgMHgwMCwgMHhFQiwgMHg3RiwgMHhCRCwgMHhERSwgMHg3RiwgMHgwQywgMHg4MCwgMHhCQSwgMHg4QiwKKyAgICAweEVBLCAweDhELCAweDIwLCAweENCLCAweDg2LCAweDgxLCAweDFCLCAweDQ0LCAweDQ5LCAweDY1LCAweEQxLCAweEZBLCAweDEyLCAweEQ4LCAweDFCLCAweEQ3LAorICAgIDB4NkQsIDB4QTcsIDB4RjYsIDB4NTMsIDB4MTksIDB4OEQsIDB4OUEsIDB4MDQsIDB4MzQsIDB4QjIsIDB4MTUsIDB4REQsIDB4RTcsIDB4NDYsIDB4NzUsIDB4QUEsCisgICAgMHg5MCwgMHhFQywgMHg0MSwgMHg5QywgMHg5MywgMHhCQSwgMHhGRCwgMHhGRSwgMHgwOCwgMHhGRCwgMHg4NiwgMHg3MywgMHg3QywgMHg5MywgMHhCNiwgMHhEMCwKKyAgICAweDNFLCAweDE2LCAweDgyLCAweDA1LCAweDAxLCAweEM0LCAweEJFLCAweDlDLCAweDI0LCAweDA1LCAweDk0LCAweDUzLCAweDI1LCAweEJELCAweDY3LCAweDQ4LAorICAgIDB4N0MsIDB4NjYsIDB4REMsIDB4QjYsIDB4OUQsIDB4MjgsIDB4MjYsIDB4MjIsIDB4RkEsIDB4NUQsIDB4RjYsIDB4MzksIDB4MzEsIDB4MUQsIDB4REEsIDB4QUEsCisgICAgMHgxQSwgMHgwNCwgMHg0MCwgMHgzMywgMHg2NywgMHhBNSwgMHg5NywgMHg0OCwgMHhCMSwgMHgwNiwgMHhGQiwgMHg5QSwgMHhFQywgMHhGMCwgMHgwNCwgMHg1RiwKKyAgICAweDExLCAweDI2LCAweDIzLCAweDkzLCAweDkwLCAweDQ4LCAweDcyLCAweDkyLCAweEJELCAweEI4LCAweEE2LCAweEQxLCAweEVFLCAweDcwLCAweEZELCAweEI4LAorICAgIDB4NTMsIDB4OTEsIDB4NjIsIDB4QzEsIDB4NDgsIDB4MEQsIDB4NzAsIDB4QkIsIDB4Q0QsIDB4RDQsIDB4QzMsIDB4QTEsIDB4M0QsIDB4MjQsIDB4NDIsIDB4NTksCisgICAgMHhENiwgMHgzQiwgMHhBMCwgMHhEMCwgMHhBQywgMHg4OSwgMHgwNywgMHg0NSwgMHg2NiwgMHhDOSwgMHgxRCwgMHhCRiwgMHg2NiwgMHhDNCwgMHhGOSwgMHg1RCwKKyAgICAweDkwLCAweDNELCAweDg0LCAweDEwLCAweDYyLCAweDIxLCAweDM3LCAweDc4LCAweDhELCAweDI3LCAweEYyLCAweDAxLCAweEE4LCAweEQwLCAweDJFLCAweDgxLAorICAgIDB4QTAsIDB4REIsIDB4OEQsIDB4ODksIDB4NzgsIDB4MTAsIDB4QkIsIDB4NDksIDB4NjAsIDB4QTAsIDB4NTAsIDB4MTEsIDB4NkIsIDB4MDQsIDB4RjMsIDB4MkUsCisgICAgMHg0MSwgMHhCRiwgMHgwMCwgMHhDNCwgMHhGQSwgMHhBOCwgMHgzQiwgMHg5MywgMHg5QywgMHg5MCwgMHgyOSwgMHhENiwgMHhCRCwgMHhDNCwgMHhFOSwgMHgyNiwKKyAgICAweEUyLCAweERCLCAweEU4LCAweDdFLCAweEQ2LCAweEE3LCAweEU3LCAweDU1LCAweDYxLCAweDVFLCAweDQ2LCAweDgyLCAweDMyLCAweDhELCAweEQ0LCAweDk2LAorICAgIDB4RjUsIDB4NkIsIDB4QjMsIDB4MUQsIDB4MTgsIDB4QTksIDB4QUEsIDB4OEEsIDB4MjIsIDB4NDksIDB4RjcsIDB4QjcsIDB4MzYsIDB4RjcsIDB4RDAsIDB4OTYsCisgICAgMHgyRSwgMHhDNiwgMHg3MywgMHg5OSwgMHg5MywgMHg2MywgMHgxMiwgMHgxOCwgMHhGMywgMHg4MiwgMHg1MCwgMHhFMSwgMHg5NiwgMHgxQiwgMHg3RSwgMHhBOSwKKyAgICAweDI5LCAweEZGLCAweEZBLCAweDc1LCAweDA3LCAweDgyLCAweDdELCAweDk0LCAweDRDLCAweDJELCAweENDLCAweDA2LCAweEFELCAweDQxLCAweEYzLCAweEI1LAorICAgIDB4RjMsIDB4NkUsIDB4QUQsIDB4OEEsIDB4REQsIDB4N0IsIDB4N0YsIDB4RTQsIDB4N0QsIDB4NTgsIDB4QTgsIDB4NkQsIDB4N0MsIDB4RUQsIDB4OUMsIDB4MUIsCisgICAgMHg2MywgMHg5NCwgMHhENiwgMHg4MSwgMHg0MywgMHgxQiwgMHg4QywgMHgxQiwgMHg3RiwgMHhCOSwgMHgxQywgMHhCNCwgMHhENSwgMHhCNywgMHhCRCwgMHhFRCwKKyAgICAweEFBLCAweDhELCAweEU0LCAweDA2LCAweEU4LCAweDg4LCAweERCLCAweEI1LCAweENCLCAweEU5LCAweEE1LCAweDMwLCAweEE2LCAweEQ5LCAweEEwLCAweDk5LAorICAgIDB4NUYsIDB4NTMsIDB4QzUsIDB4OUUsIDB4NEUsIDB4MjksIDB4QkIsIDB4RTUsIDB4QzUsIDB4QTQsIDB4RDksIDB4OTksIDB4ODYsIDB4RjEsIDB4MTEsIDB4RTEsCisgICAgMHg0QSwgMHg1RCwgMHhDQiwgMHhENCwgMHhGNCwgMHhCQywgMHg2NiwgMHg4NywgMHgzMywgMHg5MywgMHg3NiwgMHhCQywgMHgxMCwgMHg0RSwgMHhDMSwgMHhCMywKKyAgICAweDBCLCAweDAwLCAweEY1LCAweDBDLCAweDU3LCAweDlBLCAweEM1LCAweDMwLCAweDQ1LCAweENDLCAweERFLCAweDA4LCAweEYwLCAweDFDLCAweDRDLCAweDZELAorICAgIDB4QTksIDB4RDgsIDB4NkMsIDB4NjUsIDB4N0EsIDB4QzUsIDB4MEEsIDB4RTIsIDB4MEEsIDB4NDcsIDB4QjQsIDB4MkYsIDB4ODIsIDB4MEEsIDB4OEIsIDB4MTIsCisgICAgMHhGNSwgMHhGNSwgMHhDNCwgMHgwOCwgMHgxNywgMHg4OSwgMHg0QiwgMHhFQiwgMHgxMSwgMHg5RSwgMHgxRiwgMHgyRSwgMHgyQSwgMHgyNCwgMHhERiwgMHgxNSwKKyAgICAweEMwLCAweDFCLCAweDA0LCAweENFLCAweDA3LCAweDEwLCAweEI1LCAweDI2LCAweDgxLCAweEM0LCAweDRDLCAweEE1LCAweDE0LCAweDVCLCAweDE3LCAweDU3LAorICAgIDB4MzgsIDB4NjEsIDB4RjksIDB4MkEsIDB4MjUsIDB4MEUsIDB4NTEsIDB4MTUsIDB4NUIsIDB4RUIsIDB4ODUsIDB4RkUsIDB4QUEsIDB4M0UsIDB4QjYsIDB4MTAsCisgICAgMHg2RSwgMHgyMCwgMHhBRiwgMHhBQywgMHhGQSwgMHhFNywgMHg4NiwgMHhGRiwgMHg5NiwgMHhBOSwgMHhCMywgMHhCNywgMHg4NiwgMHhBQywgMHgyQywgMHg1MywKKyAgICAweEQ5LCAweDBBLCAweDdBLCAweDAxLCAweEUxLCAweDU4LCAweEJELCAweDhDLCAweDdDLCAweEIwLCAweDdGLCAweEJCLCAweDcwLCAweDlCLCAweEUxLCAweDlBLAorICAgIDB4QjgsIDB4MEUsIDB4NUQsIDB4QzksIDB4NUQsIDB4OTAsIDB4QkUsIDB4MkYsIDB4OTQsIDB4Q0UsIDB4MkUsIDB4MjgsIDB4RkIsIDB4MDksIDB4RjgsIDB4QzAsCisgICAgMHgxMSwgMHgzMSwgMHgyRiwgMHhFMiwgMHhGRiwgMHhFMSwgMHg2MywgMHhFOCwgMHg1OCwgMHhCOSwgMHg0RCwgMHgyNywgMHgwMiwgMHg3QSwgMHgwNSwgMHhGMCwKKyAgICAweDYxLCAweDcwLCAweDM0LCAweEFBLCAweEI2LCAweENDLCAweEExLCAweEI4LCAweEMzLCAweDUzLCAweEFFLCAweDFCLCAweDBELCAweEI2LCAweDJCLCAweDNELAorICAgIDB4ODQsIDB4NUEsIDB4QzQsIDB4MTIsIDB4REYsIDB4NkMsIDB4NjAsIDB4NzMsIDB4MjgsIDB4RTEsIDB4MDcsIDB4RkYsIDB4MkMsIDB4MDQsIDB4RTgsIDB4RjEsCisgICAgMHg4NiwgMHhDRSwgMHgzOCwgMHgxRSwgMHhERSwgMHgwNiwgMHgxNCwgMHg1OSwgMHgyQSwgMHg5MSwgMHgyNCwgMHg2QywgMHg3MiwgMHg3QSwgMHhCNiwgMHgyQSwKKyAgICAweDFBLCAweDc0LCAweEI2LCAweDVGLCAweDg4LCAweEUzLCAweEMwLCAweEM5LCAweDI4LCAweERFLCAweEU1LCAweDRCLCAweDA4LCAweDdGLCAweEQxLCAweDc1LAorICAgIDB4MkQsIDB4RjYsIDB4OUUsIDB4OTEsIDB4OEQsIDB4RjAsIDB4NzksIDB4NkEsIDB4MEMsIDB4QTIsIDB4MTksIDB4RDQsIDB4REUsIDB4RTYsIDB4NDUsIDB4RkMsCisgICAgMHg2NiwgMHhBMCwgMHhCOCwgMHgyNCwgMHgxRCwgMHg4OCwgMHhERCwgMHgzMSwgMHgyQywgMHg5OSwgMHgwMiwgMHg4NiwgMHhDNywgMHhGNywgMHhBOSwgMHhGRiwKKyAgICAweDE5LCAweDYxLCAweDJFLCAweEZBLCAweENFLCAweEQyLCAweDQ2LCAweEQ1LCAweDg5LCAweEQxLCAweEJDLCAweDNFLCAweDAzLCAweDIxLCAweDEzLCAweDE0LAorICAgIDB4NjUsIDB4MUMsIDB4MTUsIDB4NTQsIDB4QUIsIDB4MjIsIDB4QTAsIDB4NTIsIDB4RUEsIDB4RUMsIDB4QjUsIDB4OEQsIDB4N0IsIDB4QzcsIDB4RkMsIDB4OUEsCisgICAgMHgxQywgMHgzMCwgMHgxRCwgMHg1MCwgMHg2QSwgMHhCNiwgMHhBNCwgMHgwRiwgMHg1NywgMHhFNCwgMHg2QiwgMHhCRCwgMHg2OSwgMHg3OSwgMHhGOCwgMHg3NSwKKyAgICAweDQzLCAweEJFLCAweERDLCAweDVDLCAweEFELCAweEMwLCAweEI4LCAweEVGLCAweEYxLCAweDU3LCAweEI3LCAweEVFLCAweEFCLCAweEJBLCAweDk0LCAweEJELAorICAgIDB4RUUsIDB4NjIsIDB4MEMsIDB4OTksIDB4QzgsIDB4QzEsIDB4N0MsIDB4MDcsIDB4Q0UsIDB4RTAsIDB4NTEsIDB4MzQsIDB4NjcsIDB4OEQsIDB4RkQsIDB4ODksCisgICAgMHg3RSwgMHhGRCwgMHg1NiwgMHhCQywgMHhEMSwgMHgzRSwgMHg0QywgMHgzMCwgMHgxMSwgMHhBNCwgMHgyQywgMHg0RSwgMHg5OCwgMHhBMywgMHhBQywgMHhENCwKKyAgICAweDM0LCAweEU0LCAweEQyLCAweDMwLCAweEE1LCAweEM2LCAweEQ1LCAweEJFLCAweEU5LCAweDkzLCAweDIwLCAweDJFLCAweEQwLCAweEQzLCAweDI3LCAweDZDLAorICAgIDB4MTgsIDB4QjMsIDB4RTQsIDB4MzgsIDB4MDksIDB4OTMsIDB4NDksIDB4RTcsIDB4QjMsIDB4MjUsIDB4REYsIDB4NUYsIDB4ODAsIDB4MzYsIDB4QzQsIDB4NzQsCisgICAgMHgwMywgMHgzQiwgMHgxMiwgMHgwQywgMHg0RSwgMHhBMywgMHg3OSwgMHg0MiwgMHgxNSwgMHhDOCwgMHg3RCwgMHhFMywgMHhDRCwgMHhFRCwgMHgzMCwgMHgzRiwKKyAgICAweDIzLCAweDExLCAweDE1LCAweDM3LCAweEI1LCAweDAzLCAweDA0LCAweDFELCAweEQzLCAweDlFLCAweDZCLCAweDY4LCAweDc4LCAweEU3LCAweEJGLCAweEI2LAorICAgIDB4M0QsIDB4ODksIDB4MjEsIDB4RjksIDB4QUEsIDB4QzQsIDB4RDcsIDB4NTQsIDB4MTcsIDB4RDYsIDB4RjMsIDB4M0UsIDB4REMsIDB4RTksIDB4QjMsIDB4ODcsCisgICAgMHhBMCwgMHgzQiwgMHg2QSwgMHg1NCwgMHhCMCwgMHg2RCwgMHg5RSwgMHhCMCwgMHhDMiwgMHg0OCwgMHhBNywgMHhFOSwgMHgyOSwgMHhFQiwgMHhERiwgMHg4OCwKKyAgICAweEU2LCAweDlGLCAweDRCLCAweDgzLCAweEFGLCAweDI5LCAweDRGLCAweDMwLCAweDYyLCAweDM3LCAweEM1LCAweDIzLCAweEZCLCAweDE5LCAweDA4LCAweDFELAorICAgIDB4RkYsIDB4QTMsIDB4MTksIDB4QjIsIDB4RUIsIDB4QkYsIDB4NjgsIDB4ODgsIDB4QkMsIDB4MUYsIDB4OUEsIDB4RTUsIDB4MkEsIDB4MjQsIDB4NDYsIDB4QzAsCisgICAgMHg4NywgMHg4MiwgMHg3RiwgMHg0OSwgMHg3RiwgMHg3MSwgMHg1MCwgMHg2OSwgMHhENiwgMHg1NywgMHgyNywgMHg1OCwgMHg2NCwgMHhGRCwgMHgwNiwgMHhCOCwKKyAgICAweDA1LCAweDVELCAweDc0LCAweEQwLCAweDMzLCAweEZDLCAweDVBLCAweDM0LCAweDZGLCAweDFFLCAweEIzLCAweDBFLCAweEZFLCAweDZCLCAweDI3LCAweENFLAorICAgIDB4M0EsIDB4NTEsIDB4MkQsIDB4RjUsIDB4NDgsIDB4NEMsIDB4MjcsIDB4MzYsIDB4MjYsIDB4ODcsIDB4RTcsIDB4M0IsIDB4QjYsIDB4NjQsIDB4OTUsIDB4NUMsCisgICAgMHg3MywgMHgzRCwgMHhENCwgMHgyQywgMHg0QywgMHgwMywgMHgwMiwgMHg5RiwgMHgwRSwgMHhCRCwgMHhGMCwgMHhBMywgMHg0QywgMHhFNiwgMHhDOSwgMHhFMSwKKyAgICAweEJFLCAweDRDLCAweDFBLCAweEJELCAweEU4LCAweDM5LCAweDc1LCAweEVDLCAweEFBLCAweDBBLCAweDNELCAweEVELCAweDc3LCAweDU3LCAweDQ0LCAweDkyLAorICAgIDB4RjMsIDB4RTYsIDB4ODYsIDB4RkEsIDB4MTEsIDB4NzUsIDB4N0MsIDB4QTIsIDB4MUEsIDB4RjMsIDB4MzYsIDB4OTUsIDB4QTUsIDB4RTQsIDB4QUIsIDB4NzcsCisgICAgMHg4QSwgMHhBNSwgMHhDRiwgMHg3MiwgMHhBQiwgMHg3QiwgMHhCQywgMHhCNywgMHg0RiwgMHg5QSwgMHhCMywgMHhENiwgMHhFNiwgMHhBNywgMHg3NiwgMHg4RSwKKyAgICAweDQ0LCAweEQzLCAweDRCLCAweDJELCAweEM3LCAweEM5LCAweENBLCAweDFDLCAweEU0LCAweDk0LCAweDg2LCAweDYwLCAweEY5LCAweDlFLCAweEVDLCAweEE5LAorICAgIDB4RDgsIDB4NDcsIDB4RjEsIDB4QUIsIDB4RDcsIDB4MDgsIDB4ODksIDB4NjMsIDB4QTQsIDB4MUQsIDB4NkMsIDB4QzcsIDB4Q0MsIDB4NjIsIDB4QjUsIDB4QzYsCisgICAgMHg5MiwgMHgxQywgMHgxMiwgMHg0OSwgMHgzRSwgMHgzNSwgMHgwMSwgMHg0NCwgMHg2NCwgMHgzRiwgMHhFQywgMHg3MywgMHg3OSwgMHg4OCwgMHhDMiwgMHg1NywKKyAgICAweDM0LCAweDQxLCAweDQ5LCAweDlELCAweEY2LCAweEU5LCAweDRELCAweENDLCAweEUxLCAweDk2LCAweENGLCAweDIxLCAweEE2LCAweEZBLCAweDlFLCAweDFDLAorICAgIDB4REMsIDB4NkEsIDB4MEEsIDB4OTcsIDB4NDYsIDB4OUEsIDB4NEIsIDB4OTcsIDB4N0MsIDB4MjQsIDB4MTAsIDB4ODUsIDB4ODMsIDB4RTcsIDB4MTcsIDB4MzYsCisgICAgMHhCOSwgMHhFNiwgMHg1RCwgMHhBMCwgMHg1NiwgMHhBRCwgMHhCRSwgMHhCNSwgMHg4QiwgMHgzMCwgMHhEMCwgMHhDMCwgMHg2NywgMHgwRSwgMHg3RCwgMHg4NSwKKyAgICAweEQxLCAweDhBLCAweDNCLCAweDlGLCAweEY0LCAweDYzLCAweDY3LCAweEMxLCAweDM3LCAweEVDLCAweEZGLCAweDVGLCAweDYxLCAweDRBLCAweDk4LCAweERDLAorICAgIDB4RjQsIDB4MDEsIDB4NTksIDB4NUYsIDB4QkMsIDB4RjAsIDB4N0QsIDB4M0EsIDB4RDMsIDB4MkYsIDB4MTksIDB4NEYsIDB4QjEsIDB4ODUsIDB4MTgsIDB4M0QsCisgICAgMHg0RiwgMHg5OSwgMHhBMCwgMHg2MSwgMHgzQiwgMHg3QywgMHg1NiwgMHg1NiwgMHgwMCwgMHg1QywgMHg0RSwgMHhEOSwgMHg0OSwgMHg2NiwgMHhERiwgMHhGNSwKKyAgICAweDI4LCAweEEzLCAweDgzLCAweDlFLCAweEFBLCAweEM3LCAweDZELCAweEUxLCAweEY2LCAweEVCLCAweDdELCAweDYxLCAweEZGLCAweEZBLCAweERDLCAweDI2LAorICAgIDB4NDYsIDB4NjksIDB4NjYsIDB4NzcsIDB4MkIsIDB4NjgsIDB4QTksIDB4NjMsIDB4RDAsIDB4NTUsIDB4QTEsIDB4RkYsIDB4RkIsIDB4QzYsIDB4ODcsIDB4RjEsCisgICAgMHgwMSwgMHg4MywgMHg0RCwgMHgxRCwgMHhENiwgMHgyNiwgMHg1MSwgMHgzNiwgMHg3RiwgMHg4NSwgMHg3MywgMHhGNywgMHg3NywgMHhENSwgMHgwMywgMHhDRiwKKyAgICAweDc2LCAweDQwLCAweEE5LCAweERDLCAweDdDLCAweDAzLCAweEZFLCAweDU5LCAweDhDLCAweEY3LCAweDkzLCAweDY0LCAweDdBLCAweDBFLCAweEEzLCAweEI2LAorICAgIDB4NkIsIDB4QUQsIDB4QkQsIDB4RDMsIDB4QjAsIDB4NDMsIDB4QzYsIDB4Q0EsIDB4OUQsIDB4MTAsIDB4MDQsIDB4OTYsIDB4QjEsIDB4Q0UsIDB4RUYsIDB4MUIsCisgICAgMHg4RCwgMHhFMiwgMHg2NywgMHgyMCwgMHg0RiwgMHg5NiwgMHgyRSwgMHg2QywgMHg2RCwgMHgyMSwgMHhFQywgMHg3NCwgMHgwRiwgMHgyMywgMHhBRSwgMHg2MCwKKyAgICAweDkyLCAweEI2LCAweDE5LCAweDUxLCAweEZGLCAweDk2LCAweEE5LCAweEM1LCAweEYxLCAweDA0LCAweDUwLCAweDAyLCAweENFLCAweEIxLCAweDVFLCAweDgzLAorICAgIDB4MDYsIDB4NUMsIDB4NDEsIDB4QjUsIDB4MkUsIDB4QkUsIDB4REUsIDB4QjcsIDB4MzksIDB4NEMsIDB4MjIsIDB4QkIsIDB4OTIsIDB4NEMsIDB4NzQsIDB4NzYsCisgICAgMHg5QywgMHhERCwgMHhFOCwgMHhGNCwgMHhERiwgMHhGRiwgMHhEMywgMHg4RiwgMHg0RCwgMHhFOCwgMHhBRiwgMHhFQSwgMHhBMSwgMHhFQywgMHgwMiwgMHgzMiwKKyAgICAweDM3LCAweEYwLCAweEQ1LCAweEE0LCAweDBBLCAweDRDLCAweDFDLCAweDYwLCAweEU2LCAweDk1LCAweDg0LCAweDlDLCAweEY4LCAweEMwLCAweDE2LCAweDdCLAorICAgIDB4ODgsIDB4RTYsIDB4OTcsIDB4ODIsIDB4MEMsIDB4NkEsIDB4RUMsIDB4RTUsIDB4OEMsIDB4OUIsIDB4RkYsIDB4OTYsIDB4NkQsIDB4RDUsIDB4MDQsIDB4RTcsCisgICAgMHg1OSwgMHhEMCwgMHhCMCwgMHhDRSwgMHg2RiwgMHg5RCwgMHhCQiwgMHg3RSwgMHgwOSwgMHg4MiwgMHhERCwgMHhDMCwgMHhFNSwgMHgzNywgMHhCOSwgMHgwNywKKyAgICAweEYwLCAweDZFLCAweEJBLCAweDhDLCAweDE5LCAweDc3LCAweEE0LCAweDIxLCAweENCLCAweEUxLCAweEZBLCAweDE0LCAweEMyLCAweDY4LCAweEJGLCAweDg2LAorICAgIDB4QzAsIDB4RUUsIDB4QjMsIDB4RUQsIDB4MTcsIDB4OEQsIDB4OTksIDB4NzAsIDB4MDEsIDB4NjEsIDB4QkYsIDB4OTIsIDB4MTgsIDB4QTksIDB4MkMsIDB4RUUsCisgICAgMHg5NCwgMHhCNCwgMHg4OCwgMHgzNSwgMHgyMSwgMHg1NiwgMHhEMSwgMHgwMiwgMHhBOCwgMHhDNCwgMHgxMiwgMHgzNCwgMHg2OSwgMHg3RSwgMHgxQSwgMHhGQywKKyAgICAweDY0LCAweDY2LCAweDMyLCAweDhFLCAweEE0LCAweDFDLCAweEI5LCAweERELCAweDM3LCAweEYwLCAweDUyLCAweEM2LCAweDc2LCAweDVBLCAweEVBLCAweDRGLAorICAgIDB4NDksIDB4RDMsIDB4MUMsIDB4ODMsIDB4OTAsIDB4OTYsIDB4MzUsIDB4NjcsIDB4NjUsIDB4MzgsIDB4ODYsIDB4RTIsIDB4NDUsIDB4QTksIDB4QzQsIDB4MDcsCisgICAgMHg1OSwgMHhBRSwgMHhDQywgMHhENSwgMHhERCwgMHg4OCwgMHhERSwgMHhGMiwgMHg1MiwgMHhEOSwgMHg4OCwgMHgwMiwgMHgxMCwgMHgxMywgMHg2MiwgMHg4QywKKyAgICAweDVBLCAweDMyLCAweDc2LCAweDgwLCAweDMxLCAweEQwLCAweEYyLCAweDkxLCAweDIyLCAweDUxLCAweDI2LCAweDNDLCAweEQ2LCAweEE0LCAweDFBLCAweDYxLAorICAgIDB4NUEsIDB4QjIsIDB4N0QsIDB4RTcsIDB4Q0QsIDB4NzEsIDB4MEIsIDB4MjgsIDB4QjIsIDB4M0YsIDB4QTYsIDB4MzgsIDB4REMsIDB4RDksIDB4NjEsIDB4RDAsCisgICAgMHhFNSwgMHhDOCwgMHgwRiwgMHhGMSwgMHhDOSwgMHgwNCwgMHgwOSwgMHg0QSwgMHg5RiwgMHg5MSwgMHg3QywgMHhFQSwgMHg4OCwgMHg3NCwgMHhDMCwgMHgzMiwKKyAgICAweEIyLCAweENFLCAweEJCLCAweEE3LCAweEUxLCAweDk1LCAweDRFLCAweEVGLCAweEEwLCAweDZGLCAweEUwLCAweDc1LCAweEMzLCAweDlGLCAweDQ0LCAweDAyLAorICAgIDB4RjEsIDB4MDYsIDB4MEIsIDB4RkQsIDB4QzgsIDB4MTEsIDB4MEIsIDB4Q0IsIDB4Q0YsIDB4MTksIDB4RTEsIDB4NjQsIDB4REUsIDB4OEQsIDB4RUUsIDB4OTcsCisgICAgMHgzNywgMHg0OCwgMHg1RiwgMHhGNiwgMHhFNywgMHhDRSwgMHg1QywgMHg3QSwgMHhCNywgMHhDNiwgMHhBQiwgMHg0RiwgMHg5QSwgMHgzMywgMHgyQywgMHhCRiwKKyAgICAweDdBLCAweDJGLCAweEVFLCAweDI4LCAweDkwLCAweEQ2LCAweDZFLCAweDhBLCAweDZELCAweEUwLCAweERFLCAweDBFLCAweDJCLCAweDJCLCAweEUxLCAweDM2LAorICAgIDB4QkEsIDB4RDYsIDB4RTcsIDB4MUEsIDB4M0MsIDB4MkYsIDB4MzQsIDB4RjMsIDB4MzksIDB4RTIsIDB4MjIsIDB4MzMsIDB4OTEsIDB4RUIsIDB4RkYsIDB4MUMsCisgICAgMHgwMCwgMHgwOSwgMHg4MiwgMHhGRSwgMHhBQiwgMHgxRSwgMHgxRiwgMHg0MCwgMHg1RSwgMHgwNSwgMHhGNSwgMHg2QiwgMHhDRCwgMHg1MiwgMHhBQiwgMHhFQSwKKyAgICAweDUyLCAweDkxLCAweDIzLCAweDI2LCAweDkxLCAweDZGLCAweEVGLCAweEEzLCAweDQ2LCAweDcwLCAweEQ5LCAweDAwLCAweDc5LCAweEU2LCAweDA2LCAweDJGLAorICAgIDB4MzEsIDB4MkEsIDB4MzUsIDB4NUYsIDB4MjksIDB4REEsIDB4N0EsIDB4RjYsIDB4RTIsIDB4NUIsIDB4RkEsIDB4NTAsIDB4NUYsIDB4MjcsIDB4RDksIDB4NUUsCisgICAgMHgzRCwgMHg3MiwgMHgyQywgMHhFNSwgMHg2RiwgMHg2QywgMHhGQSwgMHg3MywgMHgyRCwgMHg1QywgMHgwMiwgMHhGRiwgMHg2NCwgMHhGNywgMHhCQiwgMHhDMCwKKyAgICAweDRELCAweDcyLCAweENELCAweDNBLCAweDY4LCAweEE4LCAweEQwLCAweEQ0LCAweEI0LCAweDM2LCAweDI1LCAweDRELCAweEQyLCAweEYyLCAweDcyLCAweDJFLAorICAgIDB4MjksIDB4NkEsIDB4NUMsIDB4QUUsIDB4NTMsIDB4MzYsIDB4MjYsIDB4MjQsIDB4MkQsIDB4NDAsIDB4N0IsIDB4RTIsIDB4OTUsIDB4QjEsIDB4MzgsIDB4Q0MsCisgICAgMHg5OCwgMHhDMywgMHhDQSwgMHhGRCwgMHhEMiwgMHgxNCwgMHgyMCwgMHg2NywgMHg2OSwgMHhGRSwgMHhBOCwgMHgzRiwgMHhFNywgMHhBNCwgMHhGNSwgMHgxMiwKKyAgICAweDcyLCAweDQ1LCAweDM1LCAweDA5LCAweEZCLCAweDQxLCAweDVFLCAweEY3LCAweDE0LCAweEM3LCAweDZCLCAweEY2LCAweDE0LCAweDFCLCAweDNELCAweEI2LAorICAgIDB4MzAsIDB4RTIsIDB4OUUsIDB4REEsIDB4Q0UsIDB4NzEsIDB4RjEsIDB4N0UsIDB4QUIsIDB4RDYsIDB4RTMsIDB4RkUsIDB4ODEsIDB4RkIsIDB4MEIsIDB4NDYsCisgICAgMHhEQiwgMHg5MiwgMHhCRiwgMHgwQywgMHg3OCwgMHg0OCwgMHgyNiwgMHhENywgMHgwNiwgMHhEMiwgMHgyNSwgMHgyNCwgMHgwNywgMHg5NCwgMHhCRCwgMHg0QiwKKyAgICAweDFGLCAweEM0LCAweDk3LCAweDEzLCAweDQ1LCAweEQzLCAweDM0LCAweDdDLCAweDZCLCAweDZGLCAweDJBLCAweEQ3LCAweDRCLCAweDJDLCAweEYzLCAweDRELAorICAgIDB4MzAsIDB4OEUsIDB4NkYsIDB4MDgsIDB4NTksIDB4MjMsIDB4QUQsIDB4M0MsIDB4RTAsIDB4RjgsIDB4RjEsIDB4QzUsIDB4NkQsIDB4RjIsIDB4QjIsIDB4OEMsCisgICAgMHgxQiwgMHhCNCwgMHgwRCwgMHgwNiwgMHhBRSwgMHhCQywgMHg5QSwgMHgyNiwgMHhFOCwgMHgxQiwgMHhCMSwgMHg2OSwgMHg1NywgMHhFOSwgMHg2MSwgMHg5QSwKKyAgICAweERGLCAweEYyLCAweEVBLCAweDQ2LCAweEM4LCAweDFELCAweDQ5LCAweEExLCAweDBGLCAweDdBLCAweDBELCAweEZDLCAweEM3LCAweDQ1LCAweEM1LCAweDhCLAorICAgIDB4QkMsIDB4RjcsIDB4MEIsIDB4N0UsIDB4MjcsIDB4NjAsIDB4NDIsIDB4RDUsIDB4NUMsIDB4N0YsIDB4OTksIDB4NzcsIDB4NTcsIDB4M0EsIDB4OUYsIDB4N0IsCisgICAgMHhDMiwgMHhFMSwgMHhERiwgMHg5NiwgMHhENCwgMHg3MCwgMHgyNSwgMHg1QSwgMHhCQiwgMHhDMCwgMHhFQywgMHhCNCwgMHhDNiwgMHg5MywgMHgyMSwgMHgyOSwKKyAgICAweDk2LCAweEVDLCAweDQ3LCAweDQxLCAweDZDLCAweEUzLCAweDYwLCAweEZDLCAweDQwLCAweDdGLCAweDQ3LCAweDFELCAweDhBLCAweDE5LCAweDJDLCAweEU5LAorICAgIDB4MTAsIDB4MUIsIDB4M0IsIDB4MUEsIDB4MzUsIDB4MjksIDB4RTQsIDB4QTYsIDB4QkMsIDB4NkIsIDB4MzUsIDB4MzcsIDB4RjUsIDB4MzksIDB4Q0QsIDB4MDMsCisgICAgMHg0RSwgMHg5QSwgMHg4OCwgMHhGOCwgMHg4OCwgMHhFMSwgMHgyMCwgMHg2QSwgMHhBMiwgMHg3NywgMHhEMCwgMHhGMCwgMHg4MiwgMHgzRSwgMHgyMywgMHg5NSwKKyAgICAweDFDLCAweDcyLCAweDA2LCAweEY2LCAweDA4LCAweDBBLCAweDc5LCAweDBDLCAweDk2LCAweDBCLCAweDZBLCAweDE5LCAweDEzLCAweDY2LCAweDNGLCAweEEzLAorICAgIDB4QzQsIDB4QkIsIDB4NjMsIDB4MjEsIDB4OEUsIDB4ODMsIDB4RjksIDB4NjEsIDB4ODIsIDB4QzUsIDB4MEUsIDB4NDcsIDB4NzksIDB4OUMsIDB4MDksIDB4N0MsCisgICAgMHhEMiwgMHhFRSwgMHg1MiwgMHgwNiwgMHhEQSwgMHhBRiwgMHg0QSwgMHg2OSwgMHhBQSwgMHg4QywgMHhBMSwgMHg3NCwgMHgzMywgMHg3RSwgMHg1OCwgMHgwQSwKKyAgICAweDVDLCAweEE5LCAweDA4LCAweDhBLCAweDlGLCAweDg5LCAweDNELCAweDcyLCAweEM0LCAweDZCLCAweDI2LCAweEVELCAweENCLCAweDQ2LCAweEZBLCAweDBBLAorICAgIDB4NUMsIDB4NkUsIDB4M0MsIDB4NjYsIDB4MzYsIDB4QzcsIDB4NUIsIDB4RUYsIDB4Q0UsIDB4NTksIDB4OUYsIDB4RjEsIDB4NDEsIDB4RUQsIDB4QTUsIDB4NzAsCisgICAgMHg5NywgMHhGNCwgMHhENywgMHhCNSwgMHg1NiwgMHhGQywgMHhCQywgMHg1MCwgMHhCNiwgMHhCNCwgMHg2MSwgMHhFRCwgMHg4RSwgMHg1RSwgMHhGMCwgMHg1MCwKKyAgICAweEYwLCAweDk2LCAweEY3LCAweDgxLCAweEFELCAweEUyLCAweDhDLCAweEE3LCAweEI4LCAweEM3LCAweDE3LCAweEQ1LCAweDBDLCAweDgwLCAweEI3LCAweDdCLAorICAgIDB4QTQsIDB4RDksIDB4ODksIDB4MDQsIDB4RjIsIDB4N0IsIDB4RjgsIDB4ODksIDB4OEYsIDB4NTgsIDB4OEIsIDB4ODgsIDB4RUYsIDB4NkUsIDB4OUEsIDB4Q0IsCisgICAgMHg2NywgMHhCQSwgMHgzMiwgMHhBNywgMHg2OCwgMHg5MiwgMHgwQSwgMHhENywgMHhDOSwgMHhCOSwgMHg4QiwgMHhFNiwgMHg0NCwgMHgwQywgMHgzOCwgMHgzOSwKKyAgICAweDE0LCAweEJGLCAweDBDLCAweEU0LCAweDY4LCAweDEzLCAweEIyLCAweDJBLCAweDBELCAweDJFLCAweEE4LCAweDUzLCAweDQ2LCAweDNELCAweEY1LCAweEM2LAorICAgIDB4NjcsIDB4OEIsIDB4MkMsIDB4NTAsIDB4OTQsIDB4RDUsIDB4NEEsIDB4QjMsIDB4REEsIDB4QjAsIDB4MUYsIDB4REQsIDB4MTcsIDB4RUQsIDB4RjksIDB4RjUsCisgICAgMHhEQiwgMHgxRiwgMHg5NiwgMHgzMywgMHhFOSwgMHg4MSwgMHgyOCwgMHg4NiwgMHgwNCwgMHhBQSwgMHgwRSwgMHhFRiwgMHg4QiwgMHg2RCwgMHhFMCwgMHhBMiwKKyAgICAweDI2LCAweDM0LCAweEZGLCAweDZELCAweEZFLCAweDU3LCAweEIxLCAweDBBLCAweEU3LCAweEU1LCAweDdELCAweEQ0LCAweDEzLCAweEVGLCAweEM4LCAweERDLAorICAgIDB4RkUsIDB4RkEsIDB4MEEsIDB4RjcsIDB4MzQsIDB4NzUsIDB4MzcsIDB4REMsIDB4QTMsIDB4OTYsIDB4REEsIDB4MTgsIDB4NzUsIDB4QTMsIDB4MkQsIDB4OTMsCisgICAgMHhENCwgMHgyRiwgMHhENywgMHhERSwgMHg0QiwgMHhBMiwgMHg5QywgMHg2QSwgMHgxNSwgMHgzNiwgMHhDNSwgMHgxRiwgMHg2OSwgMHg4MiwgMHgwQywgMHg2NSwKKyAgICAweDhDLCAweDVFLCAweDk2LCAweDA3LCAweEY3LCAweDVELCAweDdCLCAweDIyLCAweDdDLCAweEFCLCAweDBELCAweDkxLCAweEQ3LCAweEFDLCAweEI0LCAweDlGLAorICAgIDB4NDYsIDB4ODIsIDB4ODEsIDB4RjgsIDB4Q0MsIDB4QTYsIDB4ODgsIDB4NkQsIDB4RUEsIDB4MzYsIDB4QjMsIDB4MEIsIDB4QTcsIDB4QzgsIDB4QjYsIDB4QkQsCisgICAgMHhDOCwgMHg3NCwgMHgyNiwgMHgwOSwgMHg1NywgMHhFNCwgMHhCRCwgMHgzOSwgMHg4NiwgMHhEOSwgMHhFRCwgMHgyQSwgMHhBOSwgMHg3NywgMHg2QiwgMHhEMywKKyAgICAweDc3LCAweEY5LCAweDkyLCAweEVCLCAweDFDLCAweEYxLCAweEI4LCAweDk3LCAweEJELCAweDhFLCAweENCLCAweENCLCAweEY3LCAweDFBLCAweEJDLCAweDEyLAorICAgIDB4OTgsIDB4NzksIDB4NTYsIDB4RDQsIDB4MEQsIDB4MzEsIDB4REUsIDB4QkYsIDB4QjksIDB4MTIsIDB4ODIsIDB4QTIsIDB4NjksIDB4N0EsIDB4NTUsIDB4MjMsCisgICAgMHg3MywgMHhGNiwgMHhGOCwgMHhBNiwgMHgxMiwgMHhDQywgMHg1MSwgMHg2NSwgMHhENCwgMHgwMCwgMHhERiwgMHg0NiwgMHhBMCwgMHgzNywgMHhCOCwgMHgxQywKKyAgICAweDM5LCAweEQ4LCAweDczLCAweDY2LCAweENCLCAweDVGLCAweEFFLCAweDY5LCAweDNELCAweEZGLCAweDlCLCAweDEzLCAweDMzLCAweENGLCAweEUwLCAweDE1LAorICAgIDB4RDYsIDB4NzgsIDB4NkIsIDB4RjEsIDB4MEYsIDB4NzcsIDB4RUYsIDB4MzMsIDB4NjQsIDB4MUMsIDB4RDgsIDB4NjAsIDB4MkEsIDB4QzYsIDB4NjIsIDB4RkIsCisgICAgMHhDOSwgMHg4NCwgMHgxMCwgMHhDMiwgMHg3NiwgMHgyNCwgMHg0QywgMHg2RiwgMHhBRiwgMHgyMywgMHg2OCwgMHgzQywgMHg3MSwgMHhCMSwgMHg4MCwgMHg3MSwKKyAgICAweDBDLCAweDg2LCAweEUwLCAweDE1LCAweEJGLCAweEMwLCAweEFBLCAweEIwLCAweDE4LCAweDYxLCAweDQ4LCAweDkzLCAweEZELCAweEFELCAweEM4LCAweEM0LAorICAgIDB4MjMsIDB4MTgsIDB4ODcsIDB4MjEsIDB4MTAsIDB4NTUsIDB4N0EsIDB4MzUsIDB4Q0MsIDB4MDgsIDB4QkUsIDB4MkUsIDB4RTIsIDB4QTUsIDB4OTksIDB4QUIsCisgICAgMHg1NSwgMHg5MCwgMHg0MiwgMHgxOSwgMHg2RSwgMHg2MiwgMHg3OSwgMHg0QSwgMHhFNSwgMHhFMywgMHg3MCwgMHhFRCwgMHg5MSwgMHgzRiwgMHg4NSwgMHgwMiwKKyAgICAweEI0LCAweDBCLCAweEY0LCAweDg0LCAweDg5LCAweDZELCAweDk1LCAweEE0LCAweDJBLCAweDhBLCAweDlFLCAweDUzLCAweENFLCAweDVELCAweENBLCAweEU3LAorICAgIDB4NTgsIDB4QjIsIDB4QjAsIDB4NDAsIDB4MTUsIDB4NUIsIDB4QTgsIDB4NzksIDB4MDIsIDB4QjUsIDB4MEYsIDB4Q0EsIDB4MTksIDB4OEEsIDB4M0YsIDB4MkIsCisgICAgMHhBNCwgMHhFOCwgMHg2NiwgMHgxRCwgMHg3MCwgMHg5NSwgMHhGNywgMHhFNywgMHg0QiwgMHgxQiwgMHgzNywgMHgxOCwgMHhGQiwgMHg0RiwgMHhFRiwgMHg5MywKKyAgICAweERFLCAweENCLCAweDJGLCAweDVFLCAweEQzLCAweEE0LCAweDU2LCAweDk1LCAweEE3LCAweDBGLCAweDg5LCAweEI4LCAweEUyLCAweEM1LCAweDM1LCAweEUwLAorICAgIDB4ODgsIDB4RDQsIDB4MzAsIDB4MDUsIDB4NTYsIDB4Q0MsIDB4OUYsIDB4NkIsIDB4NTgsIDB4QTMsIDB4MTIsIDB4OTgsIDB4OTEsIDB4OTksIDB4RDgsIDB4OUIsCisgICAgMHgxMCwgMHhGQSwgMHhGNSwgMHg1OCwgMHhENiwgMHhEMSwgMHg3QSwgMHhCRiwgMHgxNiwgMHg2RSwgMHg0NSwgMHg3NCwgMHhGMSwgMHg3QSwgMHhDNSwgMHgwOCwKKyAgICAweDM1LCAweDVFLCAweEIyLCAweDg5LCAweDkzLCAweEZBLCAweDMwLCAweEUwLCAweDEzLCAweDk0LCAweEExLCAweDQ1LCAweERGLCAweDI0LCAweDU5LCAweDNCLAorICAgIDB4RTcsIDB4QkEsIDB4MTUsIDB4NUUsIDB4MzIsIDB4NDksIDB4MzcsIDB4MjUsIDB4QzIsIDB4MzIsIDB4MDcsIDB4MDUsIDB4NUQsIDB4MzUsIDB4OUMsIDB4OEUsCisgICAgMHg4QSwgMHg1MywgMHg1NiwgMHhGNywgMHg1MywgMHhDRCwgMHhFNSwgMHg5RCwgMHhFRiwgMHgxRSwgMHg0OSwgMHhDMywgMHgyNCwgMHg2NywgMHg5NiwgMHgxQywKKyAgICAweDk0LCAweERGLCAweDhGLCAweDk4LCAweDFGLCAweDhBLCAweEY2LCAweDhFLCAweDhGLCAweEVELCAweEZELCAweEVFLCAweDRFLCAweEJDLCAweDAwLCAweEU4LAorICAgIDB4OTUsIDB4NTMsIDB4RUYsIDB4MTEsIDB4RDYsIDB4NjUsIDB4RDAsIDB4NTIsIDB4REMsIDB4MDgsIDB4N0MsIDB4QjAsIDB4MzIsIDB4MDEsIDB4QkYsIDB4QjMsCisgICAgMHgxRCwgMHgwRiwgMHg2MiwgMHgzMiwgMHhBMywgMHg3RCwgMHgxOCwgMHg5RSwgMHg5RSwgMHgxOSwgMHg5QiwgMHhGNiwgMHg2OCwgMHhGRiwgMHg2MywgMHhCMywKKyAgICAweDk3LCAweDYxLCAweEQ2LCAweDMxLCAweEZGLCAweDQyLCAweDdBLCAweEU4LCAweENBLCAweDg3LCAweEZBLCAweEQ3LCAweEYwLCAweDZDLCAweDNDLCAweDEzLAorICAgIDB4NkIsIDB4M0UsIDB4MzEsIDB4MTAsIDB4QTksIDB4NTUsIDB4NDYsIDB4NjQsIDB4QUEsIDB4RjYsIDB4QTAsIDB4M0EsIDB4MTYsIDB4MjgsIDB4QkUsIDB4NzEsCisgICAgMHhERSwgMHhFMCwgMHg0NCwgMHg3OCwgMHg1QiwgMHhFNiwgMHhGNiwgMHhBQiwgMHgyRiwgMHg5QiwgMHhFNywgMHg2MSwgMHgwQSwgMHhBNCwgMHgwNCwgMHgyRCwKKyAgICAweEZELCAweEZCLCAweDJFLCAweDVELCAweEQ3LCAweDM2LCAweEM4LCAweDMwLCAweEE4LCAweDkzLCAweEQ4LCAweDE3LCAweDRGLCAweDhGLCAweDRELCAweDhDLAorICAgIDB4OTgsIDB4NTcsIDB4OEMsIDB4NkYsIDB4NDYsIDB4NTcsIDB4QTAsIDB4NEEsIDB4MUEsIDB4REIsIDB4RTcsIDB4M0YsIDB4OTYsIDB4QzcsIDB4NTYsIDB4NDEsCisgICAgMHgwRCwgMHg1NSwgMHg1QiwgMHgzRiwgMHg2NywgMHhEMiwgMHhBQiwgMHhFQywgMHg0QSwgMHg2NiwgMHg2NywgMHg5QSwgMHhGMiwgMHgyRCwgMHg2MywgMHhDNCwKKyAgICAweEI2LCAweDUwLCAweDg2LCAweEI3LCAweDcwLCAweEFBLCAweDE5LCAweDA1LCAweDlBLCAweEE1LCAweDNFLCAweDdCLCAweDg5LCAweDY0LCAweEY5LCAweDk3LAorICAgIDB4MEMsIDB4REIsIDB4M0QsIDB4OTksIDB4OTIsIDB4RjAsIDB4OUEsIDB4NUMsIDB4NjMsIDB4NDYsIDB4NkUsIDB4NTcsIDB4MTUsIDB4RjIsIDB4QzEsIDB4MjQsCisgICAgMHgwOSwgMHhCMCwgMHg5NCwgMHhCNiwgMHgyMiwgMHhBMCwgMHgyMywgMHgzMiwgMHg1MywgMHg5QiwgMHgyNCwgMHg0QiwgMHhDNywgMHg4MywgMHg2RCwgMHhBOSwKKyAgICAweERCLCAweDFFLCAweDFBLCAweEJELCAweDU2LCAweEI3LCAweDEzLCAweEQ4LCAweDkyLCAweDJFLCAweDBDLCAweDE3LCAweEE1LCAweEVGLCAweDRCLCAweDUzLAorICAgIDB4MzYsIDB4QzksIDB4QzQsIDB4RTgsIDB4RkEsIDB4NEQsIDB4RDgsIDB4QTEsIDB4ODEsIDB4RTUsIDB4OUMsIDB4RTgsIDB4NjUsIDB4NjIsIDB4RUYsIDB4NjUsCisgICAgMHhBNiwgMHhBOSwgMHgxQywgMHhCQSwgMHgzMywgMHhFMiwgMHgzRiwgMHhFNywgMHhCNywgMHhENiwgMHgxQSwgMHgwNywgMHhCRSwgMHg1RCwgMHhGNiwgMHg1QywKKyAgICAweDNFLCAweEM0LCAweDQwLCAweEY3LCAweDNGLCAweDhBLCAweEUwLCAweDc3LCAweEMwLCAweDYxLCAweDczLCAweDg2LCAweDI2LCAweDJELCAweDcxLCAweDU0LAorICAgIDB4NTEsIDB4RTUsIDB4NTcsIDB4NUUsIDB4QjcsIDB4NDYsIDB4NTcsIDB4MkEsIDB4RDMsIDB4MjIsIDB4OTAsIDB4MkUsIDB4M0UsIDB4NzUsIDB4RjgsIDB4ODcsCisgICAgMHhCMSwgMHhEMiwgMHgyOSwgMHhDMiwgMHhERCwgMHg5MywgMHg5NCwgMHhEMiwgMHg1RSwgMHhBQywgMHhDQywgMHg5MCwgMHhEMiwgMHhEOCwgMHgyRSwgMHhEMywKKyAgICAweDlCLCAweEU1LCAweDEwLCAweDVCLCAweEU1LCAweDdGLCAweDhFLCAweDM0LCAweDY0LCAweDk3LCAweEI5LCAweEEwLCAweDdFLCAweEQ5LCAweDBFLCAweDdGLAorICAgIDB4QjQsIDB4NkIsIDB4MEMsIDB4RTcsIDB4MzEsIDB4QTQsIDB4MzUsIDB4NDYsIDB4ODIsIDB4N0IsIDB4REIsIDB4NkYsIDB4MEMsIDB4N0QsIDB4RTcsIDB4MjEsCisgICAgMHgzNywgMHgxMCwgMHg1NCwgMHgwMywgMHgwRSwgMHg4MywgMHg3NywgMHhDQiwgMHhEOSwgMHhCQiwgMHgyMywgMHg4NywgMHhGMywgMHhBMCwgMHg2OCwgMHgwNiwKKyAgICAweDY3LCAweEYwLCAweDBBLCAweDZCLCAweEU1LCAweDk4LCAweDA1LCAweDA2LCAweEIxLCAweERDLCAweEI3LCAweEU4LCAweERDLCAweDdCLCAweDJELCAweDlBLAorICAgIDB4RjcsIDB4MUUsIDB4NTMsIDB4QkUsIDB4QkIsIDB4OUQsIDB4OTAsIDB4RDAsIDB4ODAsIDB4QTMsIDB4MDIsIDB4NTMsIDB4REQsIDB4M0IsIDB4OTcsIDB4RjIsCisgICAgMHhDOSwgMHgxQSwgMHg1QSwgMHhBQiwgMHg5RiwgMHg1MywgMHhGQiwgMHhFRCwgMHgxQywgMHg0NCwgMHhFQSwgMHgxMywgMHhFNiwgMHhGRiwgMHgwMywgMHhCMSwKKyAgICAweEFCLCAweDIxLCAweDk0LCAweDdBLCAweDU4LCAweDVGLCAweDJFLCAweDBDLCAweEZGLCAweEMxLCAweDZBLCAweEE4LCAweEQ2LCAweEUzLCAweDExLCAweEM2LAorICAgIDB4OUMsIDB4ODgsIDB4RTUsIDB4RUIsIDB4OTAsIDB4NTAsIDB4NkYsIDB4MzQsIDB4NTksIDB4NjMsIDB4RDYsIDB4QUMsIDB4RkIsIDB4MUMsIDB4NzAsIDB4RUMsCisgICAgMHg3RSwgMHg1MCwgMHhBNiwgMHhEMywgMHg3RSwgMHhGNSwgMHg5OCwgMHg0QiwgMHgyNiwgMHhFRSwgMHgwQiwgMHhCNCwgMHgwNCwgMHhGNiwgMHg3MiwgMHg3NywKKyAgICAweDRBLCAweDcyLCAweDcwLCAweEUzLCAweDhCLCAweEUyLCAweDU1LCAweEQyLCAweDMxLCAweDM5LCAweEY4LCAweEI2LCAweDhELCAweDk3LCAweDU3LCAweDU0LAorICAgIDB4QUUsIDB4MDIsIDB4QzgsIDB4MDAsIDB4NjUsIDB4NDksIDB4RjcsIDB4RjIsIDB4ODgsIDB4RDEsIDB4MDcsIDB4NDYsIDB4NTgsIDB4N0EsIDB4NTIsIDB4NjYsCisgICAgMHgzMiwgMHhFNCwgMHhGNCwgMHg0QiwgMHhEOCwgMHhGQSwgMHhGQiwgMHgxRCwgMHhGNSwgMHhBRiwgMHg2MSwgMHg2MCwgMHg1MiwgMHg0RCwgMHg4NywgMHhDMywKKyAgICAweEJCLCAweDcxLCAweDYwLCAweDQyLCAweDFELCAweEEzLCAweDhDLCAweDU5LCAweEYzLCAweDQ4LCAweEI3LCAweDlELCAweDdFLCAweEUzLCAweEM1LCAweDkxLAorICAgIDB4MjAsIDB4REUsIDB4ODIsIDB4RkQsIDB4QTMsIDB4REUsIDB4RkYsIDB4MEIsIDB4MTIsIDB4NkMsIDB4OUEsIDB4RDQsIDB4MzcsIDB4OTcsIDB4QTEsIDB4MTAsCisgICAgMHgyQywgMHgxQSwgMHg4NCwgMHgxQSwgMHg2NSwgMHhFMCwgMHhCQiwgMHhFRCwgMHgzMSwgMHhEOSwgMHg5RSwgMHg2MywgMHg0OCwgMHgzRiwgMHg3MywgMHhDRCwKKyAgICAweDlELCAweDlDLCAweDFBLCAweDg5LCAweDAxLCAweDg5LCAweDk1LCAweEEwLCAweDAxLCAweEZGLCAweDE1LCAweDJFLCAweEZELCAweDVCLCAweEI3LCAweDU2LAorICAgIDB4NTQsIDB4OUIsIDB4MUEsIDB4RDksIDB4RDgsIDB4NkIsIDB4NEQsIDB4MkIsIDB4RUUsIDB4NjUsIDB4ODIsIDB4RjQsIDB4MTgsIDB4QzAsIDB4OEYsIDB4OTIsCisgICAgMHgwRiwgMHhBOSwgMHg4NSwgMHgzNiwgMHhFMCwgMHhGRiwgMHg1QywgMHg2NywgMHhCQywgMHgxQywgMHg0QywgMHgwNCwgMHgwMCwgMHgxQSwgMHhGRiwgMHgzMywKKyAgICAweEYzLCAweDNDLCAweEI5LCAweDAxLCAweDg1LCAweEY1LCAweDlDLCAweDQyLCAweDQ4LCAweDk4LCAweEQxLCAweDFDLCAweDEyLCAweDEyLCAweDM2LCAweDY5LAorICAgIDB4OUYsIDB4MDAsIDB4OUQsIDB4OTEsIDB4NTUsIDB4RjIsIDB4M0IsIDB4M0MsIDB4NjUsIDB4MUYsIDB4MDgsIDB4NTYsIDB4NDgsIDB4NTcsIDB4NkIsIDB4RTMsCisgICAgMHg4OCwgMHhFRCwgMHgyQSwgMHgxMywgMHg0OCwgMHhDNCwgMHgyQywgMHhENSwgMHg0NiwgMHg1NCwgMHg4QSwgMHhCQywgMHgxQywgMHg0QiwgMHhDRiwgMHgyNywKKyAgICAweDg4LCAweEM5LCAweDc0LCAweENGLCAweEQ1LCAweDgyLCAweDc2LCAweDU3LCAweDc2LCAweDgzLCAweDJDLCAweEE2LCAweDRFLCAweEQ2LCAweEVCLCAweEQwLAorICAgIDB4RUIsIDB4OEMsIDB4MEQsIDB4MDQsIDB4RDYsIDB4QUQsIDB4ODgsIDB4RTMsIDB4N0MsIDB4M0MsIDB4OUMsIDB4QjEsIDB4Q0EsIDB4NEUsIDB4RUYsIDB4OEEsCisgICAgMHg1NywgMHgzQiwgMHg2QywgMHg2OCwgMHgyQywgMHhFRSwgMHhBOSwgMHhFQSwgMHg3MSwgMHhCQiwgMHg4NCwgMHgyQSwgMHhDRiwgMHg2OCwgMHhCRSwgMHg3RiwKKyAgICAweDE2LCAweDc3LCAweDRBLCAweDZELCAweDJGLCAweDlCLCAweDIzLCAweEE3LCAweDY1LCAweDFELCAweDNBLCAweDQzLCAweEUxLCAweEVBLCAweEY4LCAweDBCLAorICAgIDB4NEUsIDB4QTcsIDB4NkEsIDB4OUMsIDB4NjgsIDB4NjUsIDB4ODAsIDB4MzQsIDB4QkYsIDB4OTIsIDB4MzUsIDB4NTIsIDB4NDcsIDB4QTMsIDB4RDEsIDB4MTksCisgICAgMHg1NCwgMHhENCwgMHg2MSwgMHhCMiwgMHg1OSwgMHhDQiwgMHg5OCwgMHgwMSwgMHgyQSwgMHgwMywgMHhBMywgMHgyNiwgMHgxMywgMHhGNCwgMHg4RCwgMHgyRSwKKyAgICAweEE1LCAweEY1LCAweDg5LCAweEExLCAweDI3LCAweDVGLCAweDA4LCAweDlFLCAweERGLCAweDI0LCAweEI2LCAweDFGLCAweDg4LCAweDBGLCAweEE5LCAweEE3LAorICAgIDB4M0YsIDB4OEIsIDB4MTQsIDB4RDYsIDB4QUUsIDB4NTAsIDB4NDMsIDB4NzMsIDB4N0YsIDB4RTUsIDB4NDcsIDB4RkEsIDB4RjYsIDB4QTgsIDB4QzYsIDB4ODUsCisgICAgMHgwMywgMHgyMCwgMHg1QywgMHg5MSwgMHgxMywgMHhCNCwgMHhERiwgMHhEMCwgMHhERSwgMHhENSwgMHhBMywgMHg3QSwgMHg2RiwgMHg4NSwgMHhFNCwgMHg5MiwKKyAgICAweDlCLCAweEVELCAweDNELCAweEU5LCAweDAzLCAweDA4LCAweDQ1LCAweDIxLCAweDEyLCAweDBFLCAweDVBLCAweEVCLCAweDEyLCAweERGLCAweDA3LCAweDcxLAorICAgIDB4RDQsIDB4OTYsIDB4MDYsIDB4MEEsIDB4Q0EsIDB4QTUsIDB4MkQsIDB4N0MsIDB4NkQsIDB4QzgsIDB4MjMsIDB4QUQsIDB4QjksIDB4N0MsIDB4Q0IsIDB4MEEsCisgICAgMHhFQSwgMHgyOSwgMHg3NywgMHg4QywgMHg1RSwgMHg5RCwgMHhFMiwgMHg2NCwgMHhGRSwgMHg0MSwgMHg4OSwgMHgzQSwgMHhFQSwgMHgyNiwgMHg2RiwgMHgyQywKKyAgICAweDFDLCAweDczLCAweDcyLCAweDlBLCAweEE3LCAweDQ2LCAweDY5LCAweEM2LCAweDRELCAweDBCLCAweDdGLCAweDMwLCAweDMzLCAweDFDLCAweDczLCAweDhELAorICAgIDB4NDYsIDB4QzAsIDB4QTIsIDB4RDYsIDB4NEMsIDB4OEUsIDB4OTksIDB4QjIsIDB4MEQsIDB4QzgsIDB4RDYsIDB4NDEsIDB4MDUsIDB4QUUsIDB4MjksIDB4QjIsCisgICAgMHhFRSwgMHgxQywgMHg1OCwgMHgyRSwgMHhCQiwgMHhFMywgMHhDMSwgMHg3OSwgMHg0MCwgMHgzRiwgMHhBNywgMHgxNSwgMHhDOSwgMHhCQiwgMHhBNywgMHhFNCwKKyAgICAweEFGLCAweDdFLCAweEIzLCAweDQzLCAweDVGLCAweEY4LCAweEQwLCAweDc4LCAweDAxLCAweDY4LCAweDQ2LCAweEZBLCAweDgyLCAweDAzLCAweDc3LCAweDcyLAorICAgIDB4MjEsIDB4OUEsIDB4NTEsIDB4MUQsIDB4NUQsIDB4QjUsIDB4QzUsIDB4MjksIDB4NUQsIDB4NzUsIDB4QzYsIDB4M0IsIDB4NkIsIDB4NjgsIDB4N0IsIDB4NkYsCisgICAgMHhGMywgMHhEMiwgMHg5RCwgMHhFNCwgMHg4RSwgMHg2OSwgMHhBMiwgMHg2MywgMHg4QiwgMHhFRSwgMHhGRiwgMHhCNSwgMHgxQSwgMHhCRiwgMHhGRSwgMHhGRCwKKyAgICAweDU5LCAweDE4LCAweDRELCAweEZDLCAweDg2LCAweEVCLCAweDlBLCAweEJGLCAweDUyLCAweEM3LCAweDRCLCAweDc3LCAweDE1LCAweDJBLCAweEY3LCAweDIwLAorICAgIDB4MzcsIDB4RkUsIDB4NzAsIDB4NDMsIDB4RTcsIDB4MjYsIDB4OTEsIDB4QzksIDB4RjgsIDB4MTcsIDB4QTMsIDB4OTYsIDB4QUQsIDB4NTIsIDB4RkMsIDB4NDIsCisgICAgMHhDQiwgMHgwRCwgMHgyRCwgMHgxNiwgMHhDNywgMHgyMywgMHhFMiwgMHgxQSwgMHg1NCwgMHg4RCwgMHhGMSwgMHhBRCwgMHgxRiwgMHhBQiwgMHg3QSwgMHgxMCwKKyAgICAweDcyLCAweDJELCAweDNBLCAweEQ2LCAweEY0LCAweDkzLCAweDUwLCAweDVGLCAweEYwLCAweDkwLCAweEQwLCAweDVELCAweEU2LCAweEM3LCAweDhDLCAweDIyLAorICAgIDB4QTgsIDB4QUUsIDB4OUEsIDB4ODcsIDB4MzUsIDB4NEQsIDB4MUQsIDB4NjYsIDB4MkMsIDB4MkMsIDB4NEMsIDB4NkYsIDB4OEYsIDB4NkIsIDB4MTAsIDB4RTksCisgICAgMHg2NiwgMHhCMiwgMHhBNiwgMHhFOSwgMHg5MiwgMHhDRiwgMHhDNywgMHg2QSwgMHg4NywgMHhBMywgMHg1RiwgMHgxMywgMHgxQSwgMHgzNiwgMHg2OSwgMHg2QSwKKyAgICAweDk0LCAweEE0LCAweENBLCAweEI4LCAweEIyLCAweEQxLCAweEZDLCAweDk3LCAweDYyLCAweDE0LCAweDUwLCAweDJCLCAweEQ2LCAweEVBLCAweDlCLCAweERDLAorICAgIDB4RTIsIDB4RDYsIDB4QzksIDB4MTcsIDB4N0IsIDB4RDcsIDB4QUYsIDB4MEUsIDB4NjIsIDB4NjYsIDB4NUUsIDB4NjcsIDB4NTgsIDB4RTQsIDB4MDksIDB4NjgsCisgICAgMHg2MywgMHgyNiwgMHhGMCwgMHgyMywgMHgzQSwgMHgxOCwgMHhBRSwgMHg0RSwgMHhBRSwgMHgwMywgMHg2RCwgMHhBMCwgMHhCQSwgMHhCNCwgMHhFNSwgMHgyMCwKKyAgICAweDBCLCAweDhCLCAweEIwLCAweDBFLCAweEMxLCAweDA5LCAweDVGLCAweEFBLCAweEQ3LCAweDJCLCAweEQyLCAweDNFLCAweENELCAweEU2LCAweEJFLCAweEZFLAorICAgIDB4MTEsIDB4MTEsIDB4NEIsIDB4NTUsIDB4MDEsIDB4RUYsIDB4MEMsIDB4RkYsIDB4RjQsIDB4NEEsIDB4QkMsIDB4ODcsIDB4MEYsIDB4NzYsIDB4NzMsIDB4NUUsCisgICAgMHhDRCwgMHg0QiwgMHgzRCwgMHhBOSwgMHhBRiwgMHgzRSwgMHg5NiwgMHg4RCwgMHg0OSwgMHhEQywgMHgxNiwgMHgxOCwgMHg3NiwgMHg4QywgMHg5MywgMHhCMiwKKyAgICAweDZGLCAweDcyLCAweDhGLCAweEUwLCAweEJELCAweEY1LCAweEZBLCAweDAxLCAweEVGLCAweDJGLCAweDQ3LCAweEQ5LCAweDZDLCAweEFFLCAweEUyLCAweDM3LAorICAgIDB4QTIsIDB4NDUsIDB4MUYsIDB4RkIsIDB4QTIsIDB4QjQsIDB4QUYsIDB4NzQsIDB4RkMsIDB4RTMsIDB4NkEsIDB4QzgsIDB4NEMsIDB4OUUsIDB4QUEsIDB4RkUsCisgICAgMHg4NiwgMHgyMywgMHhFNywgMHhGRCwgMHg1MSwgMHgzMiwgMHgyNSwgMHhBRSwgMHg1NywgMHhBQiwgMHhFMiwgMHg0NCwgMHhFRSwgMHg2QSwgMHgxQiwgMHg2MSwKKyAgICAweDBGLCAweDBFLCAweDhDLCAweEEwLCAweDg3LCAweDFCLCAweDVGLCAweDY2LCAweDJFLCAweDk3LCAweDExLCAweDI5LCAweEJELCAweDdELCAweEQ5LCAweDQwLAorICAgIDB4OTIsIDB4N0IsIDB4RjgsIDB4MUQsIDB4Q0IsIDB4OTcsIDB4RTgsIDB4N0IsIDB4RTgsIDB4NUMsIDB4MDcsIDB4NjEsIDB4MTksIDB4RDYsIDB4RUUsIDB4OTksCisgICAgMHhEMSwgMHhCRSwgMHgzNiwgMHgxRiwgMHg0MiwgMHhGNywgMHgzMywgMHg5NCwgMHgwMSwgMHhBNCwgMHhFMCwgMHgwQywgMHg5OSwgMHgxRiwgMHgyMSwgMHgzMSwKKyAgICAweDVBLCAweEY5LCAweEExLCAweDk4LCAweEZELCAweDg1LCAweDQ0LCAweEJCLCAweDgyLCAweEI3LCAweDlELCAweEU5LCAweDRGLCAweDRBLCAweEQ5LCAweEJDLAorICAgIDB4OEQsIDB4REQsIDB4MkUsIDB4RjYsIDB4NzUsIDB4MzgsIDB4QzAsIDB4MTIsIDB4MzYsIDB4QTgsIDB4MUYsIDB4NTcsIDB4MzcsIDB4OUYsIDB4NjQsIDB4QjMsCisgICAgMHhGMywgMHhGQSwgMHg1QiwgMHhBOSwgMHg4MSwgMHg4QiwgMHg1RSwgMHgyNSwgMHgzNCwgMHgzOCwgMHgyOCwgMHg3NCwgMHg0RSwgMHg1OCwgMHhBMSwgMHg2QywKKyAgICAweEMyLCAweDU3LCAweDU4LCAweDQwLCAweDIyLCAweDNFLCAweEU4LCAweDQ4LCAweEJBLCAweDZGLCAweDRGLCAweEM5LCAweEM1LCAweDA2LCAweDRELCAweDEyLAorICAgIDB4REMsIDB4NDgsIDB4NjgsIDB4REIsIDB4QzIsIDB4NkEsIDB4MjAsIDB4QTIsIDB4OTksIDB4NEUsIDB4MDgsIDB4MDUsIDB4QjIsIDB4OEUsIDB4QjEsIDB4NjEsCisgICAgMHgyRSwgMHgyNSwgMHg2NywgMHgyNywgMHg2OSwgMHhCOSwgMHgwNCwgMHhEQiwgMHgzQSwgMHg3MywgMHhFQywgMHhBMCwgMHhCNywgMHg3MywgMHg4OCwgMHg3RSwKKyAgICAweDI1LCAweDRCLCAweDMzLCAweDNCLCAweEFDLCAweDdGLCAweDExLCAweDEyLCAweDNBLCAweDQ5LCAweEI1LCAweDNBLCAweDM2LCAweDM5LCAweEQzLCAweENBLAorICAgIDB4MDIsIDB4QTAsIDB4RTQsIDB4RDgsIDB4MTIsIDB4NUMsIDB4OTgsIDB4MjksIDB4NTcsIDB4NjksIDB4MzksIDB4OEUsIDB4MzUsIDB4MTIsIDB4MDcsIDB4ODMsCisgICAgMHhGRSwgMHg3NywgMHhEOCwgMHgzMCwgMHhCNCwgMHgzNCwgMHhEMiwgMHhFNiwgMHhCMSwgMHg5QSwgMHhGRiwgMHhBQywgMHhGQywgMHgwRCwgMHgzQiwgMHg4QSwKKyAgICAweDE4LCAweDFGLCAweEY0LCAweEU4LCAweEJGLCAweEU4LCAweEU0LCAweDI2LCAweEU1LCAweDA3LCAweEIwLCAweEIyLCAweDJCLCAweENCLCAweDE0LCAweEZBLAorICAgIDB4NTMsIDB4MzksIDB4NjQsIDB4NDMsIDB4Q0IsIDB4M0QsIDB4RkMsIDB4NjEsIDB4OTAsIDB4M0EsIDB4RjYsIDB4RTgsIDB4N0IsIDB4MTMsIDB4Q0QsIDB4NkUsCisgICAgMHhBOSwgMHhBNSwgMHg2NiwgMHhEMCwgMHg5RSwgMHhFMiwgMHg1MCwgMHhDNiwgMHhDRiwgMHhGQywgMHgwMywgMHhCMSwgMHhENSwgMHg3RCwgMHgwQSwgMHg2MiwKKyAgICAweDdGLCAweEUyLCAweDNELCAweDlGLCAweDBGLCAweDlGLCAweDI5LCAweDk5LCAweDY1LCAweDEzLCAweDY5LCAweEYyLCAweDg1LCAweDU4LCAweDA3LCAweDFELAorICAgIDB4MDAsIDB4NjYsIDB4OUQsIDB4NEIsIDB4QTgsIDB4QzksIDB4MDcsIDB4MUEsIDB4OEYsIDB4M0UsIDB4RDcsIDB4ODEsIDB4QTYsIDB4REIsIDB4RTksIDB4MzIsCisgICAgMHhCMywgMHhENCwgMHgyOSwgMHg2RCwgMHhCOCwgMHhCQSwgMHg0MSwgMHgwRiwgMHg1MSwgMHhDQiwgMHg1MCwgMHg3NCwgMHg0OCwgMHgwNywgMHg5NywgMHgyNywKKyAgICAweEM5LCAweDIzLCAweDNDLCAweEJELCAweDVCLCAweDBGLCAweDQ2LCAweDA0LCAweDM4LCAweEI1LCAweEMwLCAweEI2LCAweDIwLCAweDAzLCAweEZBLCAweDU2LAorICAgIDB4NTIsIDB4OUUsIDB4MjcsIDB4QUMsIDB4RjEsIDB4RTcsIDB4MzIsIDB4MjUsIDB4NzIsIDB4RkMsIDB4QUIsIDB4RTUsIDB4MUYsIDB4RjAsIDB4NTUsIDB4N0QsCisgICAgMHhFRCwgMHhCOCwgMHgyOCwgMHg5NiwgMHg0NywgMHhFRCwgMHg4NiwgMHg0NSwgMHhDOSwgMHhCQSwgMHhEMSwgMHhGNiwgMHhGQSwgMHhGQywgMHhDNiwgMHhGNiwKKyAgICAweDY3LCAweDQ1LCAweEM0LCAweEE5LCAweDI1LCAweERFLCAweEM3LCAweDNGLCAweDhBLCAweEQ4LCAweDMxLCAweDNDLCAweEI2LCAweEU0LCAweDBELCAweDdCLAorICAgIDB4QkUsIDB4ODksIDB4NUEsIDB4NjksIDB4ODAsIDB4RUIsIDB4NjIsIDB4REUsIDB4QUYsIDB4MDIsIDB4NkUsIDB4RDEsIDB4NEIsIDB4MkMsIDB4N0IsIDB4Q0QsCisgICAgMHg0RCwgMHhGMSwgMHhERiwgMHg1OCwgMHg4MiwgMHhEMCwgMHhFNiwgMHg2RiwgMHhCNywgMHg0NSwgMHg4RSwgMHhERiwgMHhFNiwgMHgzMCwgMHg4NCwgMHhDNCwKKyAgICAweDVELCAweDI2LCAweEMwLCAweDRDLCAweDM5LCAweEM1LCAweDJDLCAweDk5LCAweDM0LCAweDEzLCAweEY1LCAweDMyLCAweEEzLCAweEVFLCAweENGLCAweDU0LAorICAgIDB4NUMsIDB4NTgsIDB4MkIsIDB4NUQsIDB4NTQsIDB4RUYsIDB4RkEsIDB4MTEsIDB4QzQsIDB4QkIsIDB4MUYsIDB4MzQsIDB4N0MsIDB4RTYsIDB4MkYsIDB4RTQsCisgICAgMHhBOSwgMHhEMywgMHg5NSwgMHg4QiwgMHg1OCwgMHhDNywgMHhCNSwgMHhFMiwgMHgyNywgMHhDRSwgMHhGMCwgMHhGOCwgMHhEMSwgMHg5RSwgMHgwRiwgMHg4OCwKKyAgICAweDkzLCAweDNELCAweDkwLCAweDBELCAweDE1LCAweDlBLCAweEMzLCAweEVBLCAweDkxLCAweEY1LCAweEY2LCAweEU0LCAweDNFLCAweDg5LCAweDAxLCAweDhBLAorICAgIDB4NEUsIDB4NkYsIDB4RTMsIDB4MjEsIDB4QjEsIDB4OTMsIDB4MDQsIDB4MzYsIDB4MzAsIDB4MjIsIDB4N0IsIDB4OTIsIDB4N0YsIDB4Q0YsIDB4MDYsIDB4NkIsCisgICAgMHhBNSwgMHg2MCwgMHg4RSwgMHgxNSwgMHg3NywgMHg4RiwgMHg3RSwgMHg5RSwgMHhCMSwgMHhFNiwgMHhGQSwgMHgzMCwgMHg0RCwgMHhEMSwgMHhDNywgMHgyMCwKKyAgICAweEVBLCAweEFGLCAweEQ1LCAweEIyLCAweDU4LCAweEQzLCAweEFBLCAweDc0LCAweEJDLCAweERELCAweDEwLCAweDZGLCAweDU0LCAweEZGLCAweDE1LCAweEQ0LAorICAgIDB4QjAsIDB4MjAsIDB4RDUsIDB4REMsIDB4RjMsIDB4ODksIDB4MjgsIDB4MDQsIDB4NEMsIDB4NjksIDB4N0UsIDB4RTksIDB4QkYsIDB4RTUsIDB4ODMsIDB4MzMsCisgICAgMHg4MSwgMHg2OSwgMHhFNCwgMHhCOCwgMHg0NiwgMHhEOCwgMHgyNiwgMHgyNCwgMHg1MSwgMHhFRSwgMHg1QiwgMHgxRCwgMHg4RSwgMHhBMCwgMHgyQiwgMHhBMiwKKyAgICAweEQ2LCAweDZCLCAweDRDLCAweDdGLCAweEEzLCAweERBLCAweERGLCAweDY0LCAweDRCLCAweDc5LCAweEY4LCAweEVBLCAweDBELCAweDUzLCAweDIwLCAweEI2LAorICAgIDB4NjcsIDB4RTQsIDB4OUYsIDB4QjUsIDB4QjYsIDB4NjMsIDB4MUQsIDB4NkUsIDB4REEsIDB4OTEsIDB4MUMsIDB4OUMsIDB4RTEsIDB4OTYsIDB4MEQsIDB4NjcsCisgICAgMHhENCwgMHhGRSwgMHhFOSwgMHg4MCwgMHhFQSwgMHg0MywgMHhGMywgMHg2QywgMHg3RiwgMHg5RCwgMHgxRSwgMHhDQiwgMHg5QSwgMHhCMCwgMHgyOSwgMHg2MCwKKyAgICAweDY4LCAweDhDLCAweEI5LCAweDFCLCAweDIzLCAweDhFLCAweDg3LCAweEJELCAweDI3LCAweDFBLCAweDkzLCAweENCLCAweEQ1LCAweDNCLCAweDhGLCAweDlCLAorICAgIDB4RjcsIDB4NUYsIDB4RjgsIDB4NUQsIDB4QTAsIDB4OTAsIDB4QzgsIDB4RUMsIDB4REIsIDB4MkUsIDB4Q0MsIDB4QkIsIDB4REEsIDB4NEEsIDB4OEUsIDB4N0UsCisgICAgMHhEOSwgMHg4MCwgMHhDOSwgMHg3QywgMHhFQSwgMHgxNywgMHgzMSwgMHg1MSwgMHgwRSwgMHhCMCwgMHgzRSwgMHhDMiwgMHg0NSwgMHg0MCwgMHg3MCwgMHg3QiwKKyAgICAweEE0LCAweDFCLCAweDI2LCAweDlDLCAweEM0LCAweDM1LCAweDM4LCAweDI0LCAweDIxLCAweDZBLCAweDMzLCAweDU3LCAweDEwLCAweDdCLCAweEUxLCAweDAwLAorICAgIDB4NTEsIDB4MjQsIDB4MjIsIDB4NDYsIDB4QzEsIDB4OTUsIDB4MEYsIDB4OUMsIDB4QzEsIDB4MzgsIDB4NDgsIDB4RDUsIDB4MTksIDB4MDksIDB4NzUsIDB4QkEsCisgICAgMHg4NSwgMHg4QSwgMHg3QiwgMHg1NSwgMHhENSwgMHg4QywgMHhEMywgMHg1MSwgMHg0RCwgMHg5QiwgMHg0OSwgMHhDRCwgMHhBNCwgMHhDQiwgMHgxNCwgMHgxMSwKKyAgICAweEJGLCAweDc4LCAweDUyLCAweEIxLCAweDU4LCAweDI4LCAweDUwLCAweDlCLCAweDgxLCAweDlDLCAweEI0LCAweDZELCAweEQxLCAweEU0LCAweDY3LCAweEVELAorICAgIDB4MTMsIDB4NDcsIDB4RTksIDB4QzQsIDB4REUsIDB4QjIsIDB4QzIsIDB4MzgsIDB4MDYsIDB4NTgsIDB4NDAsIDB4MjAsIDB4ODUsIDB4ODAsIDB4ODEsIDB4RjIsCisgICAgMHg3QSwgMHhDRiwgMHhGQywgMHgyMiwgMHgzMSwgMHgyNywgMHgzMSwgMHgwQSwgMHgzQywgMHhGNSwgMHhBRSwgMHhCRSwgMHg4RCwgMHhERCwgMHg5NCwgMHg4MCwKKyAgICAweDI1LCAweDczLCAweEM1LCAweEZELCAweEVCLCAweEZBLCAweDBDLCAweEE4LCAweDI1LCAweDJELCAweEQ1LCAweDQ4LCAweEYzLCAweDQ4LCAweDU5LCAweDg0LAorICAgIDB4NEMsIDB4NzEsIDB4OEQsIDB4MjgsIDB4QTEsIDB4N0EsIDB4MTksIDB4RjcsIDB4NDUsIDB4QUEsIDB4ODMsIDB4MTUsIDB4RUEsIDB4NDAsIDB4OEYsIDB4MEYsCisgICAgMHg5MCwgMHhFRiwgMHgxRiwgMHg0RSwgMHg4MSwgMHhBQiwgMHhFQiwgMHgwMywgMHg0RiwgMHhENCwgMHg1OSwgMHhDNSwgMHhGQiwgMHgxRSwgMHhGQSwgMHgzRSwKKyAgICAweDQ0LCAweEI1LCAweDQ4LCAweEUyLCAweDcxLCAweDg4LCAweDE4LCAweEYzLCAweDczLCAweDVGLCAweEYzLCAweDlCLCAweDdCLCAweEJGLCAweDE4LCAweDE3LAorICAgIDB4RUIsIDB4NDgsIDB4NUEsIDB4NUMsIDB4Q0UsIDB4NTQsIDB4REEsIDB4ODQsIDB4RTgsIDB4REMsIDB4OUMsIDB4MDMsIDB4QzEsIDB4RDYsIDB4NzAsIDB4QkYsCisgICAgMHg1RiwgMHgzRiwgMHhDMiwgMHgzRSwgMHgwNSwgMHg3MywgMHg4MiwgMHgyQywgMHhCMCwgMHgxOSwgMHhDRiwgMHhEQywgMHg3RCwgMHhEOCwgMHhGNCwgMHgyNywKKyAgICAweDFCLCAweEJFLCAweDI4LCAweDlBLCAweDBDLCAweDIyLCAweDkwLCAweDk0LCAweDYwLCAweDVBLCAweDMwLCAweDFBLCAweEJBLCAweEQzLCAweDJELCAweEVFLAorICAgIDB4RkYsIDB4MUEsIDB4N0EsIDB4NEMsIDB4QzksIDB4N0MsIDB4QjQsIDB4NEMsIDB4QjEsIDB4ODgsIDB4QjksIDB4RjksIDB4RkMsIDB4RTcsIDB4NjIsIDB4MEYsCisgICAgMHg1NCwgMHhCQywgMHg3QSwgMHg0RSwgMHhBNiwgMHhDNiwgMHg3MywgMHhFMiwgMHg0RCwgMHg0OSwgMHg1OSwgMHg4QiwgMHgyQSwgMHg2OSwgMHgwQSwgMHg2MiwKKyAgICAweDFELCAweEE0LCAweDZCLCAweDlDLCAweDkwLCAweDgwLCAweDgyLCAweDAyLCAweDI5LCAweEJELCAweEY0LCAweDA0LCAweDNBLCAweDUyLCAweDI3LCAweDg1LAorICAgIDB4MTYsIDB4ODEsIDB4QjUsIDB4QjksIDB4NEUsIDB4QjUsIDB4QTQsIDB4RDcsIDB4M0IsIDB4MjIsIDB4MDIsIDB4NzEsIDB4ODcsIDB4RjUsIDB4NDIsIDB4OEQsCisgICAgMHg5NSwgMHgxMywgMHhGMiwgMHhCNSwgMHhEMiwgMHhERSwgMHhDNiwgMHhDNCwgMHhEOCwgMHhCOSwgMHgwOSwgMHgzRCwgMHg4OSwgMHg3RSwgMHhGRCwgMHg3MSwKKyAgICAweDk2LCAweDBCLCAweDJDLCAweEJGLCAweEQyLCAweERDLCAweDEyLCAweEUzLCAweEU4LCAweEQzLCAweDRCLCAweEUyLCAweEE4LCAweDk5LCAweDdBLCAweDBFLAorICAgIDB4QUEsIDB4RDgsIDB4ODksIDB4MzQsIDB4NkIsIDB4OEIsIDB4RjksIDB4NTYsIDB4MTIsIDB4MjMsIDB4NUMsIDB4ODAsIDB4Q0MsIDB4ODUsIDB4MTMsIDB4MEQsCisgICAgMHg5RiwgMHg0RCwgMHhCQSwgMHhCQiwgMHg2NiwgMHhFNCwgMHg0NCwgMHg2RCwgMHgzNywgMHhGMiwgMHgyNiwgMHg1NywgMHg0QywgMHgyMSwgMHhFMSwgMHg5OSwKKyAgICAweDk2LCAweEVFLCAweDYxLCAweDgwLCAweEMzLCAweDIyLCAweDUxLCAweDJBLCAweEQ4LCAweDcwLCAweDRCLCAweDEwLCAweDBCLCAweDAzLCAweEY5LCAweDEzLAorICAgIDB4NzIsIDB4NUUsIDB4RDgsIDB4ODUsIDB4ODEsIDB4MzMsIDB4NjYsIDB4OTcsIDB4N0QsIDB4QUMsIDB4MTgsIDB4MDgsIDB4RTgsIDB4MjQsIDB4QzEsIDB4NkMsCisgICAgMHg1RiwgMHhENiwgMHhBMywgMHg5OSwgMHhDNiwgMHg1MCwgMHg1NCwgMHg2MSwgMHg5MCwgMHhGMCwgMHgzQiwgMHhCRiwgMHhGMywgMHgxMiwgMHg3NCwgMHg4QywKKyAgICAweDI0LCAweDM4LCAweEVCLCAweEM1LCAweDdBLCAweEYxLCAweDE0LCAweDMzLCAweDU5LCAweDhFLCAweDU3LCAweDBGLCAweDY2LCAweEY3LCAweDlDLCAweEMyLAorICAgIDB4RTUsIDB4MkEsIDB4MzksIDB4ODgsIDB4RTYsIDB4NUYsIDB4NUMsIDB4ODAsIDB4RDksIDB4REIsIDB4MUQsIDB4ODAsIDB4RjUsIDB4Q0YsIDB4QTksIDB4RkMsCisgICAgMHgyRiwgMHg4MSwgMHgzNywgMHgxMSwgMHg5MCwgMHg4RCwgMHg5MSwgMHhENywgMHg3QSwgMHg3NiwgMHgxOCwgMHgzMSwgMHg4MCwgMHg5NywgMHhBMSwgMHgyNCwKKyAgICAweEIyLCAweDg2LCAweDdGLCAweDAxLCAweDI4LCAweEIyLCAweEEwLCAweDc4LCAweDRGLCAweDMwLCAweENBLCAweDM3LCAweEM0LCAweEZDLCAweENBLCAweEMyLAorICAgIDB4QzQsIDB4RTEsIDB4RDAsIDB4NjIsIDB4OUUsIDB4MTEsIDB4MDAsIDB4MTIsIDB4MjksIDB4RDIsIDB4MUEsIDB4NUIsIDB4N0QsIDB4NTAsIDB4NjksIDB4QkYsCisgICAgMHgzMiwgMHhBMywgMHhGRiwgMHgxMywgMHgyNiwgMHgzMCwgMHg2RCwgMHhCNywgMHhCMiwgMHgyNiwgMHhBQywgMHhFNCwgMHg3NCwgMHg5NCwgMHg5MiwgMHhBMCwKKyAgICAweEZCLCAweDhGLCAweEY0LCAweEIwLCAweDlELCAweEFBLCAweEE0LCAweDAwLCAweDdGLCAweDNCLCAweENDLCAweEM5LCAweEQ0LCAweDY3LCAweENBLCAweEFELAorICAgIDB4QjcsIDB4QjgsIDB4QjksIDB4RDQsIDB4MDEsIDB4MjcsIDB4NkMsIDB4OEUsIDB4OEYsIDB4MTYsIDB4NDEsIDB4MTMsIDB4RTUsIDB4QjUsIDB4ODEsIDB4M0EsCisgICAgMHgyOSwgMHgzQywgMHgyMSwgMHgxNiwgMHgzRSwgMHg0OSwgMHg4QiwgMHgxNSwgMHg1OSwgMHgyMSwgMHg4QiwgMHgxNCwgMHhBQiwgMHg1MywgMHg1OCwgMHg4QSwKKyAgICAweEM2LCAweDAyLCAweDE1LCAweDQxLCAweDM4LCAweDlBLCAweDI1LCAweDQ1LCAweEJDLCAweEY3LCAweDg0LCAweDBCLCAweEQ3LCAweDJGLCAweDk4LCAweDRELAorICAgIDB4QkEsIDB4NTYsIDB4OUYsIDB4M0MsIDB4MEQsIDB4ODYsIDB4MUYsIDB4REMsIDB4NDAsIDB4MkQsIDB4MzEsIDB4QTksIDB4QjAsIDB4QkUsIDB4ODQsIDB4NTEsCisgICAgMHg1OCwgMHhFQywgMHgyRiwgMHhGQiwgMHg0RSwgMHgzNiwgMHgwOSwgMHhBRSwgMHg1QSwgMHg3RSwgMHhBQSwgMHgxRCwgMHhGQywgMHhGNSwgMHg5MSwgMHg5QSwKKyAgICAweDI4LCAweEEyLCAweDU4LCAweDNCLCAweEI2LCAweDlELCAweEI1LCAweDEyLCAweEI3LCAweDcwLCAweDdELCAweDY0LCAweDUyLCAweEIzLCAweEM0LCAweDA3LAorICAgIDB4RkEsIDB4M0EsIDB4QUEsIDB4ODUsIDB4QTQsIDB4MUEsIDB4NEUsIDB4NDcsIDB4QjAsIDB4RDAsIDB4NDQsIDB4NzUsIDB4NzcsIDB4QTIsIDB4RkIsIDB4QjMsCisgICAgMHhFMywgMHgyNywgMHg1NSwgMHhEMCwgMHgxRiwgMHgzQywgMHg5RSwgMHgyQSwgMHhCOSwgMHg0MSwgMHgxRCwgMHg1MCwgMHg5OCwgMHg3RSwgMHhFOSwgMHhDOSwKKyAgICAweEE3LCAweDNDLCAweDBCLCAweEIxLCAweDk2LCAweDc0LCAweEZDLCAweERCLCAweEI2LCAweDM1LCAweEFDLCAweEQzLCAweDg5LCAweENBLCAweDNCLCAweDc5LAorICAgIDB4MzIsIDB4ODEsIDB4NzAsIDB4NUMsIDB4RUUsIDB4MzUsIDB4NzksIDB4NTUsIDB4REMsIDB4NzcsIDB4ODUsIDB4MDEsIDB4NjgsIDB4RTcsIDB4QTQsIDB4QjksCisgICAgMHg5RSwgMHhEQSwgMHg1NSwgMHhBMSwgMHhERiwgMHg5QSwgMHhGNSwgMHhFQSwgMHhGMCwgMHhFMSwgMHg0RiwgMHg1OSwgMHhCNCwgMHgxMywgMHhENywgMHhBQywKKyAgICAweDEyLCAweEY1LCAweDA2LCAweEEyLCAweDgyLCAweDAxLCAweEExLCAweEI1LCAweDA0LCAweDlCLCAweDAwLCAweDYyLCAweDExLCAweEVGLCAweEY5LCAweDgyLAorICAgIDB4OEUsIDB4MDAsIDB4NEQsIDB4MEMsIDB4MTYsIDB4NEMsIDB4MEMsIDB4ODAsIDB4QzcsIDB4MzMsIDB4Q0IsIDB4MEEsIDB4NDMsIDB4QzMsIDB4OTAsIDB4NDcsCisgICAgMHg3OSwgMHhDRCwgMHhFQSwgMHg5NiwgMHhEQywgMHhERSwgMHg3QywgMHhCOSwgMHgxRCwgMHgwQywgMHhCMSwgMHhCQywgMHgwRiwgMHg4QiwgMHg3NiwgMHhFNSwKKyAgICAweEJELCAweEQwLCAweDU5LCAweDc2LCAweDA4LCAweDc5LCAweEU0LCAweEYzLCAweEUxLCAweEIzLCAweDEyLCAweEYxLCAweDk0LCAweDE0LCAweDc5LCAweEJGLAorICAgIDB4QUMsIDB4MjIsIDB4NEUsIDB4NTcsIDB4N0IsIDB4Q0IsIDB4NUIsIDB4QkYsIDB4RTQsIDB4OUQsIDB4MTYsIDB4MTgsIDB4QTIsIDB4QjMsIDB4MkQsIDB4MDQsCisgICAgMHgzQSwgMHgxMSwgMHhDOSwgMHgxOCwgMHg2RCwgMHhDQywgMHg5OSwgMHhCNSwgMHhCNSwgMHgzNiwgMHhGNSwgMHg0OSwgMHg0QiwgMHhFQywgMHg2MCwgMHgzRSwKKyAgICAweDIyLCAweDlBLCAweDczLCAweDYwLCAweDkxLCAweDJGLCAweDRGLCAweDcwLCAweEI3LCAweEE0LCAweDQ4LCAweDYxLCAweENCLCAweDBELCAweDE3LCAweDg0LAorICAgIDB4NjEsIDB4RjEsIDB4QUQsIDB4N0YsIDB4RUUsIDB4RUMsIDB4NzIsIDB4MTgsIDB4NjAsIDB4NkQsIDB4QUMsIDB4RUUsIDB4REIsIDB4QzEsIDB4QzIsIDB4ODEsCisgICAgMHhGMSwgMHgwMywgMHg3NCwgMHhBMiwgMHg1QSwgMHhBOSwgMHhDOCwgMHgwRSwgMHg1MiwgMHg4NSwgMHhERCwgMHgxRCwgMHgxMiwgMHhCRSwgMHgxQywgMHhDNCwKKyAgICAweDU4LCAweDBGLCAweDYyLCAweEVFLCAweDE3LCAweEQ0LCAweEY1LCAweDdGLCAweERCLCAweEY0LCAweDFCLCAweERGLCAweDJELCAweDE4LCAweDZELCAweDBCLAorICAgIDB4NDcsIDB4REIsIDB4RkYsIDB4QUYsIDB4NzAsIDB4RTYsIDB4QTEsIDB4NTIsIDB4NjAsIDB4OUUsIDB4RkMsIDB4ODMsIDB4Q0MsIDB4NzYsIDB4QjMsIDB4QUYsCisgICAgMHhFRCwgMHgyMywgMHgyMSwgMHhCQiwgMHg3RCwgMHhCRSwgMHg3RSwgMHg1OSwgMHg3RiwgMHgzQSwgMHgyMiwgMHgxMCwgMHg4RiwgMHg0MywgMHg0RSwgMHg2NSwKKyAgICAweEM2LCAweEJDLCAweEVCLCAweEUwLCAweDYzLCAweDgyLCAweDc4LCAweEI4LCAweEQ1LCAweEQwLCAweEU3LCAweERBLCAweDQ0LCAweEYyLCAweDFBLCAweEJELAorICAgIDB4NzUsIDB4NDYsIDB4RjcsIDB4MkEsIDB4RkUsIDB4NUYsIDB4MkEsIDB4OTUsIDB4QjMsIDB4NEYsIDB4NTEsIDB4QzIsIDB4RDEsIDB4MjQsIDB4RUEsIDB4ODgsCisgICAgMHgwNiwgMHg4OCwgMHg4RSwgMHhDQiwgMHgzMywgMHhBOCwgMHg3MSwgMHhDMywgMHg4OSwgMHg0RSwgMHhENCwgMHgyNSwgMHhCQywgMHg4NywgMHgxQywgMHgwNSwKKyAgICAweDg3LCAweDc0LCAweEY1LCAweDk5LCAweDkwLCAweDU4LCAweEExLCAweDJFLCAweDE0LCAweDEzLCAweDI1LCAweEQ2LCAweENCLCAweDVDLCAweEU1LCAweEE4LAorICAgIDB4NDYsIDB4QTYsIDB4NzEsIDB4NjgsIDB4NzIsIDB4NjYsIDB4NDgsIDB4RDgsIDB4OTIsIDB4OEYsIDB4NzUsIDB4QUMsIDB4QjcsIDB4MTQsIDB4MzIsIDB4NDIsCisgICAgMHhCOSwgMHg5RCwgMHg1NywgMHhGOSwgMHhEMiwgMHg4RSwgMHg4NSwgMHgyNywgMHg5MiwgMHhBOCwgMHhDQywgMHgxQSwgMHgyNiwgMHgzMywgMHg3NiwgMHgwNiwKKyAgICAweDFBLCAweEI2LCAweDI3LCAweDU2LCAweDVELCAweDhFLCAweERDLCAweDFGLCAweEZDLCAweEJBLCAweDNGLCAweDZBLCAweDY3LCAweEZGLCAweDlCLCAweDE0LAorICAgIDB4RkYsIDB4OTAsIDB4RTcsIDB4OEUsIDB4RUQsIDB4MkQsIDB4OEIsIDB4NUUsIDB4MjIsIDB4ODQsIDB4QTIsIDB4MDYsIDB4OEYsIDB4RkQsIDB4MjUsIDB4MDIsCisgICAgMHhGRCwgMHgzRCwgMHg5MiwgMHg0MSwgMHhFNSwgMHg0OSwgMHgyRCwgMHg0MywgMHg2QSwgMHg5QiwgMHgxRSwgMHhBNSwgMHg0NiwgMHhDOSwgMHhBOSwgMHhEQywKKyAgICAweDJELCAweDhFLCAweDc1LCAweEUyLCAweDFCLCAweDhELCAweDhGLCAweDIzLCAweDU5LCAweDJFLCAweDIxLCAweDVELCAweDNDLCAweDBBLCAweDQxLCAweEM1LAorICAgIDB4MjcsIDB4RDIsIDB4NzYsIDB4OUEsIDB4Q0EsIDB4N0QsIDB4QUMsIDB4NjUsIDB4MzEsIDB4QzgsIDB4QUQsIDB4QjYsIDB4QkQsIDB4MTksIDB4ODgsIDB4MDgsCisgICAgMHg3QSwgMHg5MSwgMHg3NCwgMHhBRCwgMHgyMywgMHgxNCwgMHg2MCwgMHhDMywgMHg5MywgMHhDRSwgMHhGMiwgMHgxMCwgMHhDRiwgMHhFMywgMHhGMSwgMHhGNywKKyAgICAweDNGLCAweEQyLCAweDFGLCAweEQxLCAweDkxLCAweDlCLCAweDlDLCAweEU5LCAweEI5LCAweEQ3LCAweEU1LCAweEZBLCAweDhGLCAweEFELCAweEIxLCAweDk1LAorICAgIDB4MDMsIDB4MjgsIDB4QjQsIDB4MjAsIDB4NDYsIDB4QTIsIDB4QkQsIDB4MjMsIDB4MUEsIDB4MzIsIDB4QjAsIDB4MjMsIDB4NjUsIDB4NTQsIDB4OTMsIDB4ODcsCisgICAgMHg0RiwgMHhGMSwgMHgzQSwgMHhBNywgMHg4QSwgMHhENSwgMHgwRiwgMHg1OSwgMHhDNywgMHhENiwgMHg3RSwgMHhCRSwgMHg2QiwgMHhGQiwgMHg2NiwgMHg4QSwKKyAgICAweDFFLCAweDQ4LCAweEQzLCAweENCLCAweEMzLCAweDc4LCAweEJDLCAweDJBLCAweDA3LCAweDU3LCAweDY2LCAweEQ0LCAweDgzLCAweDk1LCAweEUxLCAweDY3LAorICAgIDB4REEsIDB4RTgsIDB4MEQsIDB4NjgsIDB4ODYsIDB4RTgsIDB4RjcsIDB4QkYsIDB4MDUsIDB4NEYsIDB4QjAsIDB4NDEsIDB4MEMsIDB4RTYsIDB4NzIsIDB4OUMsCisgICAgMHhCNCwgMHhCRiwgMHg5MywgMHg1OSwgMHhFNSwgMHg5NywgMHhBQywgMHg3QiwgMHhCMCwgMHg5MywgMHgwRSwgMHhFQywgMHhFNiwgMHhDMiwgMHhDMSwgMHgwRSwKKyAgICAweDA2LCAweDgxLCAweDY5LCAweEY2LCAweDI3LCAweEU0LCAweENBLCAweDJELCAweEUwLCAweDc2LCAweDlFLCAweDBBLCAweDAzLCAweEUzLCAweDYwLCAweEQxLAorICAgIDB4QUIsIDB4NEMsIDB4NjMsIDB4Q0MsIDB4MDMsIDB4N0UsIDB4QkMsIDB4NEEsIDB4NTgsIDB4NzQsIDB4OTQsIDB4RUYsIDB4OTYsIDB4QjcsIDB4MzMsIDB4RTgsCisgICAgMHg4MCwgMHg1NiwgMHhCRCwgMHhFQywgMHgzRiwgMHhENiwgMHg3NSwgMHg2RiwgMHhGNiwgMHhGRSwgMHg4NSwgMHgwQiwgMHgwQSwgMHgzMCwgMHgzMCwgMHhCRSwKKyAgICAweDBELCAweDdGLCAweDVCLCAweDE1LCAweEQyLCAweDBCLCAweDdELCAweEEzLCAweDJCLCAweEI3LCAweEU3LCAweEU5LCAweDE3LCAweDRDLCAweDk0LCAweEUxLAorICAgIDB4NzAsIDB4RUQsIDB4RjcsIDB4NDAsIDB4OTQsIDB4M0IsIDB4M0EsIDB4Q0EsIDB4Q0UsIDB4RjUsIDB4QjIsIDB4RjMsIDB4OEEsIDB4NjksIDB4NjEsIDB4NTcsCisgICAgMHg1RiwgMHg2NCwgMHhDNSwgMHhCQywgMHgwRiwgMHg3OCwgMHgxNSwgMHg5QywgMHhGOCwgMHgzMCwgMHgzQSwgMHhBNCwgMHhDMiwgMHhEOCwgMHgzNSwgMHhBOCwKKyAgICAweDFCLCAweEZBLCAweDY1LCAweEFFLCAweDc4LCAweDJBLCAweDJCLCAweDBFLCAweDhDLCAweEY3LCAweDdFLCAweDgxLCAweDQzLCAweDBFLCAweDE1LCAweDA1LAorICAgIDB4QzYsIDB4NzYsIDB4N0IsIDB4MjksIDB4QTYsIDB4MjYsIDB4REUsIDB4QTAsIDB4RjAsIDB4MzgsIDB4MzksIDB4OEIsIDB4MzMsIDB4OEQsIDB4MzgsIDB4RDYsCisgICAgMHg4NCwgMHg2OSwgMHg1NSwgMHhGNiwgMHg1QSwgMHg2RSwgMHhCRSwgMHg3RSwgMHgxOCwgMHg0MSwgMHg0QSwgMHg0RCwgMHhGNSwgMHg3QSwgMHg4NiwgMHg4QiwKKyAgICAweENFLCAweDQ4LCAweERELCAweEY1LCAweDgwLCAweEVFLCAweDU3LCAweDA1LCAweDk5LCAweDk3LCAweEE5LCAweENFLCAweDI2LCAweDY4LCAweDIwLCAweEE0LAorICAgIDB4OUMsIDB4ODQsIDB4MDAsIDB4ODgsIDB4MEEsIDB4N0YsIDB4N0IsIDB4NzQsIDB4MTIsIDB4RTYsIDB4NjAsIDB4RjcsIDB4RDksIDB4RTcsIDB4QjQsIDB4NDYsCisgICAgMHg1OSwgMHgxQSwgMHg4NCwgMHgxRSwgMHgwOCwgMHgyMCwgMHgyRSwgMHg3NCwgMHg1MSwgMHhBRSwgMHg5NSwgMHhENywgMHg3NywgMHg1QSwgMHg2QSwgMHg5QiwKKyAgICAweDBCLCAweEZGLCAweEI1LCAweDVELCAweDY1LCAweERDLCAweDM1LCAweDZFLCAweDAwLCAweEFGLCAweDAxLCAweDczLCAweDQxLCAweDgyLCAweDkyLCAweDI5LAorICAgIDB4OUIsIDB4NjcsIDB4MzgsIDB4ODYsIDB4RTQsIDB4MUEsIDB4MkEsIDB4REEsIDB4QkYsIDB4MjMsIDB4RUMsIDB4MTcsIDB4OTcsIDB4MTMsIDB4MUIsIDB4MzIsCisgICAgMHg1OCwgMHgzMSwgMHgyRiwgMHg0RSwgMHg2RCwgMHg4RSwgMHgzOSwgMHg5OSwgMHg3QiwgMHg5RCwgMHhFQiwgMHhCRSwgMHg0NywgMHhDNSwgMHgyMiwgMHg4MSwKKyAgICAweDY0LCAweEFFLCAweDBCLCAweDBELCAweEJDLCAweDMzLCAweDZDLCAweDBCLCAweDMwLCAweERFLCAweEQwLCAweEE0LCAweDhELCAweEIyLCAweDlFLCAweEZCLAorICAgIDB4MDIsIDB4NkMsIDB4REMsIDB4RDMsIDB4M0UsIDB4Q0YsIDB4RDYsIDB4NDksIDB4NzYsIDB4MjIsIDB4RjIsIDB4MjEsIDB4NzYsIDB4MjYsIDB4REUsIDB4MzIsCisgICAgMHg2NSwgMHhBQywgMHgxRSwgMHg2OCwgMHgyRiwgMHhDNSwgMHhGMywgMHg3OCwgMHgwNywgMHgxNSwgMHgwOCwgMHhBRiwgMHg3NCwgMHhEMCwgMHg4MSwgMHgxMywKKyAgICAweDQ1LCAweEFCLCAweDE0LCAweEQ0LCAweDU5LCAweDQ2LCAweDI0LCAweDlGLCAweDc1LCAweDEyLCAweDBFLCAweEJCLCAweERDLCAweDZFLCAweDRELCAweDQ0LAorICAgIDB4RDMsIDB4MjgsIDB4MkQsIDB4NjQsIDB4QTgsIDB4RDYsIDB4NzEsIDB4RTIsIDB4RTAsIDB4OEIsIDB4RDIsIDB4RjQsIDB4QkQsIDB4RkMsIDB4OTcsIDB4MzAsCisgICAgMHgwQywgMHhBQywgMHg1MiwgMHgzQSwgMHgwNiwgMHhFNiwgMHgzQSwgMHgyNCwgMHgwOSwgMHhGNSwgMHhFRSwgMHhEQiwgMHg2QywgMHgwQSwgMHgzNCwgMHhDQywKKyAgICAweEY0LCAweEVGLCAweDk3LCAweDM5LCAweDRCLCAweDBFLCAweDUxLCAweEM0LCAweDNGLCAweDA0LCAweEM2LCAweDc5LCAweEZDLCAweEZDLCAweDJDLCAweDY2LAorICAgIDB4N0MsIDB4NzQsIDB4OUMsIDB4RjYsIDB4NDIsIDB4OTgsIDB4NTcsIDB4RTIsIDB4NzgsIDB4MjQsIDB4NzIsIDB4MEEsIDB4RjIsIDB4M0IsIDB4ODIsIDB4MjIsCisgICAgMHhFNiwgMHgzMywgMHg4MCwgMHhCQywgMHg5QSwgMHhGNSwgMHgwRCwgMHg1OSwgMHg1RCwgMHhFQywgMHgwNCwgMHhEMSwgMHg2MywgMHgzNywgMHg2MSwgMHhCNiwKKyAgICAweEJBLCAweDMwLCAweDUwLCAweDFELCAweEM4LCAweDNCLCAweEY5LCAweDQxLCAweEMxLCAweDRBLCAweDcwLCAweEVGLCAweDAxLCAweDhDLCAweEZELCAweDhDLAorICAgIDB4Q0YsIDB4RTMsIDB4RTEsIDB4MDAsIDB4OTQsIDB4QTAsIDB4QjcsIDB4RTgsIDB4RkEsIDB4QjksIDB4MjksIDB4MzYsIDB4RkQsIDB4OEIsIDB4MzksIDB4ODYsCisgICAgMHgzMiwgMHg0OCwgMHhFNiwgMHhBMSwgMHgzQiwgMHgyQywgMHhCNywgMHhEQiwgMHhGMywgMHg4MSwgMHhBQSwgMHgwNiwgMHg0NSwgMHg3RiwgMHgyRiwgMHgyQiwKKyAgICAweDgyLCAweEM3LCAweEVCLCAweDRBLCAweDI0LCAweDM1LCAweDRGLCAweDc3LCAweDlFLCAweENFLCAweEYxLCAweERFLCAweDAxLCAweENCLCAweDQzLCAweDVCLAorICAgIDB4MzksIDB4M0YsIDB4NDgsIDB4REYsIDB4RUIsIDB4NkUsIDB4MTYsIDB4RkEsIDB4M0IsIDB4OUQsIDB4NzYsIDB4N0UsIDB4RUEsIDB4QjYsIDB4MUIsIDB4NDksCisgICAgMHgyMSwgMHgzNSwgMHgzQywgMHhFQywgMHg5QiwgMHgyMiwgMHg2NSwgMHgyMywgMHg4QywgMHgxQywgMHhBNSwgMHhGMiwgMHhEOSwgMHhBMSwgMHg5QywgMHhFMCwKKyAgICAweDVELCAweDlBLCAweEZDLCAweEUwLCAweDZCLCAweDc4LCAweDQ1LCAweEVGLCAweEJDLCAweENDLCAweDhBLCAweDdDLCAweEUwLCAweDcwLCAweERCLCAweEQ2LAorICAgIDB4QjEsIDB4OUEsIDB4QjMsIDB4OUQsIDB4NDUsIDB4M0IsIDB4OUQsIDB4RTAsIDB4MjMsIDB4ODIsIDB4RjYsIDB4OUQsIDB4NkYsIDB4MEMsIDB4RjUsIDB4N0QsCisgICAgMHhCNywgMHg0MSwgMHg1MSwgMHg0QywgMHgwMiwgMHhCNywgMHg4RCwgMHhCNSwgMHgzMCwgMHg5RiwgMHhGOCwgMHhENywgMHg1MCwgMHg3MiwgMHhGOCwgMHhBRCwKKyAgICAweDJBLCAweDU0LCAweDBGLCAweEY5LCAweDJELCAweDA4LCAweDFDLCAweDMyLCAweDNDLCAweEVFLCAweEIzLCAweDA2LCAweDczLCAweDJCLCAweDI3LCAweEVDLAorICAgIDB4ODEsIDB4QjYsIDB4NzMsIDB4QzIsIDB4QUUsIDB4RjAsIDB4RTAsIDB4MTYsIDB4NTgsIDB4NTUsIDB4NTYsIDB4QzEsIDB4MEUsIDB4ODksIDB4QzIsIDB4QTcsCisgICAgMHhDQSwgMHhGRCwgMHg5QSwgMHgwMiwgMHhDNiwgMHhCNywgMHg2OCwgMHhCRCwgMHgxMCwgMHhGRiwgMHg4MiwgMHg4MSwgMHg1OCwgMHg3NywgMHg5RiwgMHg1NSwKKyAgICAweDYyLCAweEM5LCAweDgwLCAweEU5LCAweDY4LCAweEU0LCAweEJFLCAweDhCLCAweERELCAweEFDLCAweDI4LCAweEY4LCAweEU1LCAweEM2LCAweEM0LCAweDZDLAorICAgIDB4NzcsIDB4QTMsIDB4NEYsIDB4QjQsIDB4M0YsIDB4REMsIDB4NjQsIDB4NzAsIDB4RjgsIDB4MzIsIDB4ODcsIDB4MTksIDB4OTcsIDB4MkYsIDB4RUUsIDB4MDQsCisgICAgMHhFMSwgMHg5MiwgMHg0RSwgMHg3MywgMHgyOCwgMHg2RiwgMHgxQiwgMHg2MiwgMHhDRCwgMHhENiwgMHhEOSwgMHg3QywgMHg2QywgMHg1RCwgMHgwOSwgMHgxRiwKKyAgICAweDlDLCAweDBBLCAweDcyLCAweDZELCAweEU3LCAweDc4LCAweEE0LCAweEE4LCAweEVFLCAweEYwLCAweEExLCAweDNCLCAweDAzLCAweDlFLCAweERGLCAweDE5LAorICAgIDB4NDYsIDB4RDcsIDB4MEIsIDB4OEYsIDB4MUIsIDB4Q0MsIDB4OUMsIDB4RDYsIDB4M0EsIDB4QjYsIDB4OTgsIDB4NDIsIDB4NEMsIDB4N0MsIDB4RDQsIDB4NTksCisgICAgMHhDNCwgMHhCRCwgMHg4NiwgMHg5RSwgMHg3OSwgMHgwMSwgMHgwNSwgMHg3QywgMHhBNywgMHhDNCwgMHhENSwgMHhDNCwgMHhBNCwgMHhENywgMHhCMiwgMHg4QSwKKyAgICAweDE1LCAweDNDLCAweDA4LCAweDEyLCAweEZGLCAweDBFLCAweEYxLCAweDIwLCAweDlBLCAweDVDLCAweDU3LCAweDJBLCAweERFLCAweEYyLCAweDIxLCAweEE3LAorICAgIDB4RkIsIDB4RjIsIDB4QTcsIDB4RTksIDB4MzcsIDB4QTgsIDB4NzMsIDB4NDUsIDB4RTgsIDB4RDQsIDB4QUMsIDB4MkYsIDB4MDYsIDB4QzgsIDB4NkUsIDB4MDQsCisgICAgMHhERSwgMHhGNywgMHhFMiwgMHhGNiwgMHhEMSwgMHhBMywgMHhDMCwgMHg3QiwgMHhEOSwgMHg3NywgMHhFRiwgMHg1MywgMHg3NCwgMHhFQSwgMHhCRSwgMHgyMywKKyAgICAweEQyLCAweDdFLCAweEYwLCAweEYwLCAweDU2LCAweEFDLCAweDk1LCAweDgwLCAweEYzLCAweDUzLCAweEVFLCAweDQ3LCAweDFELCAweDc2LCAweDMwLCAweDIxLAorICAgIDB4QzgsIDB4QUQsIDB4NDYsIDB4NzMsIDB4OEIsIDB4MUYsIDB4NEEsIDB4QjEsIDB4NDgsIDB4NEYsIDB4RTcsIDB4M0IsIDB4OTIsIDB4QzAsIDB4QTcsIDB4NjgsCisgICAgMHhGMywgMHg1MywgMHhDNywgMHhENCwgMHg1MSwgMHhBOCwgMHhGNiwgMHhDOSwgMHg4NSwgMHhBRCwgMHhCRiwgMHhCOSwgMHg2QSwgMHgzMSwgMHgwRSwgMHgwQywKKyAgICAweDdFLCAweDY0LCAweDZGLCAweDUwLCAweDk5LCAweDMxLCAweEU0LCAweDEzLCAweEE2LCAweEJGLCAweEVBLCAweEZGLCAweDA5LCAweDFBLCAweEE3LCAweEQ4LAorICAgIDB4RDYsIDB4NDIsIDB4QTcsIDB4NjIsIDB4NEYsIDB4QUMsIDB4ODcsIDB4NEIsIDB4QkEsIDB4QjcsIDB4QkUsIDB4NTAsIDB4NUEsIDB4MDksIDB4NDMsIDB4RDcsCisgICAgMHg0RiwgMHg5QiwgMHgyNywgMHgwNSwgMHg3OCwgMHhFQiwgMHhCMiwgMHgxNiwgMHg2QywgMHhDQSwgMHgxOCwgMHg0MSwgMHg1OCwgMHhGMiwgMHgyNCwgMHhGOSwKKyAgICAweEVELCAweEJCLCAweEY2LCAweDk2LCAweDJGLCAweEYzLCAweENCLCAweDRBLCAweEU5LCAweEY4LCAweDI1LCAweDRBLCAweDZFLCAweDhFLCAweDMyLCAweEI2LAorICAgIDB4NTEsIDB4MTcsIDB4MjksIDB4OTgsIDB4OUIsIDB4NDEsIDB4RTcsIDB4MjMsIDB4ODAsIDB4RUEsIDB4MTcsIDB4ODQsIDB4QUIsIDB4RjEsIDB4OTQsIDB4ODEsCisgICAgMHhGRSwgMHhCNCwgMHgzMCwgMHhBOCwgMHhGOCwgMHg1OSwgMHgzMywgMHgyOCwgMHhBRSwgMHhGNSwgMHgyNCwgMHgyMCwgMHg3RSwgMHg3OCwgMHg1NCwgMHg3QywKKyAgICAweEQ1LCAweEU5LCAweEJBLCAweEMxLCAweDEyLCAweEEyLCAweDcxLCAweEQ2LCAweDFELCAweDVFLCAweEUyLCAweDVCLCAweEYzLCAweDI2LCAweEFBLCAweDBCLAorICAgIDB4OTYsIDB4NjgsIDB4NDYsIDB4NjMsIDB4MUQsIDB4NzEsIDB4MzgsIDB4OEMsIDB4QjQsIDB4MjksIDB4MTgsIDB4OTIsIDB4MjIsIDB4NkEsIDB4MEEsIDB4NjcsCisgICAgMHg3MCwgMHhDMiwgMHgxNCwgMHhFQywgMHg0RiwgMHgwRiwgMHgzQiwgMHg0MywgMHgyNywgMHg2RiwgMHhGNSwgMHgxQiwgMHhFMCwgMHg3QiwgMHhFQiwgMHgzNSwKKyAgICAweDNBLCAweDZGLCAweDdDLCAweEE1LCAweDlDLCAweEJDLCAweDE3LCAweDJELCAweEY1LCAweEMwLCAweDdELCAweDY3LCAweEUyLCAweEYxLCAweDBELCAweDAwLAorICAgIDB4MDQsIDB4RDQsIDB4NjgsIDB4OUYsIDB4QjgsIDB4NDgsIDB4RkUsIDB4QjYsIDB4QTgsIDB4NkYsIDB4RkQsIDB4Q0IsIDB4MzQsIDB4OTQsIDB4RkEsIDB4MkQsCisgICAgMHhGQSwgMHg0NiwgMHgzRSwgMHgxMSwgMHgyRCwgMHhGNSwgMHhCQiwgMHgyQiwgMHhEMiwgMHg5MiwgMHg5MiwgMHgwRSwgMHgzNywgMHhFQiwgMHg3RSwgMHg4NCwKKyAgICAweEY5LCAweEZELCAweDNCLCAweDIyLCAweEQzLCAweENELCAweEZDLCAweDQ2LCAweEVGLCAweDIxLCAweDM1LCAweDkxLCAweDE5LCAweENGLCAweDFGLCAweEUwLAorICAgIDB4RkUsIDB4NUMsIDB4MUEsIDB4NDksIDB4MzgsIDB4OTUsIDB4RTAsIDB4NDAsIDB4MUQsIDB4NEEsIDB4QjgsIDB4QjcsIDB4QkIsIDB4QjgsIDB4NTIsIDB4MDgsCisgICAgMHgzNywgMHg3MiwgMHhFNCwgMHhGNiwgMHhFOCwgMHg0MiwgMHgwQSwgMHhBQiwgMHgxRSwgMHhGMCwgMHg3NCwgMHg3QiwgMHhGQiwgMHg5RSwgMHg5NCwgMHg0QywKKyAgICAweDg3LCAweEY1LCAweEVFLCAweDBELCAweDlFLCAweDA3LCAweDEwLCAweDc5LCAweDBDLCAweDAyLCAweEE3LCAweEU2LCAweDRBLCAweEJGLCAweEFCLCAweEFELAorICAgIDB4NzEsIDB4NUYsIDB4MzEsIDB4RTEsIDB4RDUsIDB4MzksIDB4MUUsIDB4NzIsIDB4NTMsIDB4OTMsIDB4QTQsIDB4MzgsIDB4QjQsIDB4MDQsIDB4NzksIDB4QTMsCisgICAgMHg3MiwgMHhDRCwgMHhCQywgMHgyOSwgMHgzRSwgMHg5RiwgMHg2MywgMHhGNCwgMHg4NywgMHhCNSwgMHhCOCwgMHg5OSwgMHhGQywgMHg0RSwgMHg5RCwgMHhEMiwKKyAgICAweEQ5LCAweDZGLCAweEQ1LCAweDE2LCAweDFELCAweDAxLCAweEY4LCAweDQzLCAweDIyLCAweDZCLCAweEY5LCAweEY4LCAweEY4LCAweDdFLCAweDAzLCAweEQxLAorICAgIDB4RjAsIDB4QzksIDB4OEIsIDB4OTcsIDB4NzgsIDB4MTIsIDB4RjEsIDB4RTgsIDB4MjMsIDB4ODgsIDB4NTMsIDB4RDMsIDB4NzMsIDB4OEQsIDB4OEQsIDB4NUQsCisgICAgMHg2NCwgMHg3RiwgMHhEOCwgMHg1RSwgMHgxNSwgMHhBNiwgMHg0RSwgMHgzMSwgMHhFNSwgMHg4RiwgMHgxRSwgMHg3QywgMHg4RiwgMHhDNywgMHg2MCwgMHg4NiwKKyAgICAweDJCLCAweDRGLCAweDY5LCAweDBFLCAweDJDLCAweDM5LCAweDhCLCAweEZDLCAweEY0LCAweDVDLCAweEY0LCAweDBBLCAweDYzLCAweDRFLCAweEU1LCAweENBLAorICAgIDB4NDYsIDB4NkIsIDB4MTUsIDB4RjMsIDB4OUIsIDB4N0UsIDB4QkIsIDB4RDksIDB4QTEsIDB4ODcsIDB4NTAsIDB4MzYsIDB4MjMsIDB4RUYsIDB4MzcsIDB4ODgsCisgICAgMHhFMywgMHg4OSwgMHhBQiwgMHg1RiwgMHgwQSwgMHgwNywgMHhCNCwgMHg1RiwgMHhGOCwgMHg0NSwgMHhCQiwgMHhFOCwgMHgxMiwgMHgxMCwgMHhFOCwgMHg5NSwKKyAgICAweEI2LCAweDEzLCAweEVGLCAweDUxLCAweEEyLCAweDI0LCAweDEyLCAweDdGLCAweDZELCAweDA1LCAweDBFLCAweDk0LCAweEY5LCAweDkyLCAweEI4LCAweDJFLAorICAgIDB4NjQsIDB4NDAsIDB4REMsIDB4REEsIDB4REMsIDB4REUsIDB4ODIsIDB4ODEsIDB4OUMsIDB4RTAsIDB4MEEsIDB4MjcsIDB4QzYsIDB4MDYsIDB4QjUsIDB4MDEsCisgICAgMHhCRiwgMHgzNiwgMHg3NiwgMHhGOCwgMHhCMSwgMHhFNSwgMHgzQywgMHg0MiwgMHhDMywgMHgwNywgMHhFNywgMHhCRCwgMHhGQywgMHg3QiwgMHhGRCwgMHg3MCwKKyAgICAweDRDLCAweDE3LCAweDhGLCAweDIxLCAweDlCLCAweEJBLCAweDA2LCAweEZDLCAweDM0LCAweDU2LCAweERELCAweDIzLCAweDdFLCAweDJDLCAweDhELCAweEY4LAorICAgIDB4OTksIDB4RDYsIDB4NjksIDB4REEsIDB4NzUsIDB4NDIsIDB4ODQsIDB4NDMsIDB4REIsIDB4NTEsIDB4MTIsIDB4QTAsIDB4NzgsIDB4RUMsIDB4OTUsIDB4ODcsCisgICAgMHg4NiwgMHg4NCwgMHhDOSwgMHgyMSwgMHhFRiwgMHg4QywgMHgwRCwgMHhFQSwgMHhCQywgMHhFNywgMHg1QSwgMHgyMywgMHgwMSwgMHhCMSwgMHhCRCwgMHg2QSwKKyAgICAweDIzLCAweDQ5LCAweDFDLCAweDQyLCAweEVELCAweDM5LCAweDVELCAweDI2LCAweEVGLCAweDU0LCAweDM2LCAweDVFLCAweEU4LCAweEE4LCAweEIwLCAweEM5LAorICAgIDB4RjIsIDB4MzksIDB4RDAsIDB4NDksIDB4MTAsIDB4ODksIDB4MkEsIDB4RjMsIDB4NEYsIDB4M0IsIDB4M0YsIDB4RjMsIDB4NkYsIDB4OTgsIDB4QzAsIDB4QTIsCisgICAgMHgzNywgMHhDNSwgMHg5OCwgMHhDQiwgMHg3QSwgMHhFNiwgMHg3OCwgMHgxMSwgMHgxNSwgMHg5NywgMHg3NywgMHg3RCwgMHgzNCwgMHhFNSwgMHg2NywgMHg2MSwKKyAgICAweDhCLCAweEM3LCAweDJCLCAweEEyLCAweEU4LCAweDY3LCAweDNGLCAweEJBLCAweEQ2LCAweEVDLCAweEMxLCAweDVCLCAweEY3LCAweDRFLCAweDcwLCAweEMzLAorICAgIDB4MUEsIDB4OTgsIDB4MjAsIDB4MDUsIDB4QkEsIDB4MkQsIDB4MkIsIDB4NzksIDB4QjgsIDB4MTAsIDB4QTMsIDB4NzQsIDB4QzksIDB4NTAsIDB4RUMsIDB4OTAsCisgICAgMHgzQywgMHhBOSwgMHhGOCwgMHhGNywgMHhGOSwgMHg5RiwgMHhGOSwgMHhFMSwgMHg4RSwgMHg5MiwgMHg0MCwgMHhFRSwgMHg2MiwgMHhDRSwgMHgzNiwgMHg3MCwKKyAgICAweDkwLCAweEFBLCAweDNELCAweDE3LCAweERGLCAweDc4LCAweDhELCAweDQ5LCAweEMxLCAweDc3LCAweDlGLCAweEYwLCAweEJDLCAweDhBLCAweEY2LCAweDA2LAorICAgIDB4OTAsIDB4RjUsIDB4MTMsIDB4NTEsIDB4QTcsIDB4MUIsIDB4QjgsIDB4N0IsIDB4MTUsIDB4QUUsIDB4QkEsIDB4NTQsIDB4OTAsIDB4Q0EsIDB4MDEsIDB4MEMsCisgICAgMHhCMCwgMHg4MiwgMHhGMSwgMHhBNiwgMHgzNiwgMHgwRSwgMHgxRiwgMHg0MCwgMHgzOCwgMHgxOSwgMHhFNSwgMHgzRCwgMHgyMiwgMHgxMiwgMHgwQSwgMHhCNywKKyAgICAweDE3LCAweDVELCAweDQ3LCAweDQ2LCAweDg1LCAweEU5LCAweDQwLCAweEMzLCAweDkwLCAweDZELCAweEFFLCAweEJFLCAweDk1LCAweENBLCAweEExLCAweDAwLAorICAgIDB4NDcsIDB4NkMsIDB4NkUsIDB4Q0UsIDB4QkYsIDB4QUIsIDB4MEEsIDB4OUIsIDB4NzMsIDB4ODYsIDB4NEMsIDB4NjQsIDB4NzMsIDB4N0QsIDB4RjQsIDB4MDEsCisgICAgMHhDRiwgMHg0RiwgMHg0RiwgMHhCRCwgMHhGQiwgMHhDNSwgMHgzNywgMHhDMSwgMHg5NSwgMHhBQywgMHhDRSwgMHg1OCwgMHgwQSwgMHg1OCwgMHgyNiwgMHg2NywKKyAgICAweEYyLCAweDBCLCAweDEwLCAweDEzLCAweEM1LCAweDhELCAweDcyLCAweEFDLCAweENFLCAweEMyLCAweDdCLCAweDc0LCAweEI2LCAweDRBLCAweEI2LCAweDBBLAorICAgIDB4OEIsIDB4RDksIDB4MjcsIDB4M0EsIDB4M0QsIDB4MTUsIDB4NDIsIDB4QTQsIDB4RjUsIDB4QzMsIDB4MDQsIDB4OTEsIDB4NjQsIDB4MDUsIDB4RjEsIDB4NDQsCisgICAgMHgyNywgMHg5RCwgMHhCRSwgMHhCNiwgMHgyNCwgMHhEQSwgMHg2OCwgMHg3QiwgMHhEQiwgMHg1QywgMHhGNywgMHgwMiwgMHg3MiwgMHhGNCwgMHhCQywgMHg4OCwKKyAgICAweEY2LCAweDhBLCAweEUxLCAweDQ1LCAweEU4LCAweDlELCAweDA2LCAweDVGLCAweDM3LCAweDYxLCAweEY1LCAweEQ0LCAweEU4LCAweDM3LCAweEFBLCAweEU3LAorICAgIDB4NzksIDB4QUEsIDB4N0MsIDB4MjEsIDB4OTMsIDB4MEMsIDB4NjYsIDB4OTUsIDB4NjMsIDB4RTgsIDB4MjUsIDB4QUQsIDB4Q0IsIDB4QkQsIDB4MjksIDB4OTYsCisgICAgMHg3QSwgMHg4NywgMHg3NiwgMHgxOCwgMHhDNCwgMHg5NywgMHg3NCwgMHgyNCwgMHhGNCwgMHgwMCwgMHgwMCwgMHgwRSwgMHg3RSwgMHhCMSwgMHhBRCwgMHg1RCwKKyAgICAweEYxLCAweDYzLCAweDNDLCAweEYwLCAweEEzLCAweDIxLCAweDkxLCAweDA0LCAweDE1LCAweDVDLCAweENELCAweEVDLCAweEEzLCAweERDLCAweDM5LCAweDdBLAorICAgIDB4ODUsIDB4MTIsIDB4RkMsIDB4NEMsIDB4N0IsIDB4RjYsIDB4MDEsIDB4OUQsIDB4QkMsIDB4NjQsIDB4MzEsIDB4MjcsIDB4RkIsIDB4MjAsIDB4NjksIDB4QjIsCisgICAgMHg5NSwgMHg4QSwgMHhCOCwgMHg1MywgMHgxNSwgMHgwRCwgMHhFOCwgMHgxMiwgMHg0NCwgMHhBNSwgMHg5NiwgMHg5MSwgMHgxOSwgMHhBMSwgMHhCNSwgMHg3NywKKyAgICAweEEyLCAweEQyLCAweDkxLCAweDYzLCAweEIyLCAweDNCLCAweDhDLCAweDI5LCAweDVBLCAweDc3LCAweENCLCAweDlBLCAweDgyLCAweDE3LCAweDdDLCAweEVCLAorICAgIDB4OUEsIDB4OEQsIDB4MUQsIDB4MzgsIDB4RkQsIDB4MEQsIDB4MzMsIDB4NjIsIDB4RDMsIDB4RjEsIDB4OTAsIDB4QTEsIDB4NDEsIDB4OTAsIDB4ODUsIDB4MTAsCisgICAgMHgyOCwgMHgxQywgMHg3MywgMHg3NywgMHhENiwgMHg2NCwgMHhBRSwgMHhERSwgMHgyMSwgMHg1RCwgMHhFNiwgMHhEMCwgMHhCRSwgMHg1OSwgMHhBOCwgMHgwNCwKKyAgICAweEIxLCAweEYxLCAweDcwLCAweEEzLCAweERBLCAweEQ2LCAweEIwLCAweEJDLCAweDdGLCAweDNELCAweDYwLCAweDkxLCAweDM4LCAweEEzLCAweEM5LCAweEMxLAorICAgIDB4QkUsIDB4QTAsIDB4RDYsIDB4NEEsIDB4OEUsIDB4MzMsIDB4RjYsIDB4MUEsIDB4OTksIDB4MjAsIDB4QkYsIDB4RkMsIDB4MzgsIDB4OUYsIDB4RDYsIDB4NjYsCisgICAgMHg2QSwgMHg2MSwgMHhGNywgMHhCMCwgMHgwOSwgMHhDMywgMHhCMiwgMHhEMywgMHhDMSwgMHhBMSwgMHhCMywgMHhCNCwgMHg2QSwgMHhFMywgMHg5NCwgMHhGNSwKKyAgICAweDkyLCAweEQzLCAweEMwLCAweEI2LCAweDEyLCAweDUzLCAweDdBLCAweEFDLCAweDFFLCAweDY5LCAweDU4LCAweDNCLCAweDFDLCAweDBGLCAweDY5LCAweDlFLAorICAgIDB4MEUsIDB4QUEsIDB4RjQsIDB4RjIsIDB4MTIsIDB4QUUsIDB4NjYsIDB4M0IsIDB4NDAsIDB4NEEsIDB4QzMsIDB4MTksIDB4MTUsIDB4REEsIDB4MDgsIDB4NTgsCisgICAgMHg3MywgMHgxQSwgMHg5RCwgMHgxOCwgMHhBRCwgMHhBNywgMHhBMywgMHg2NiwgMHhEMSwgMHg1RCwgMHg5QSwgMHgzNiwgMHg0RSwgMHhGMCwgMHhBNSwgMHg2OSwKKyAgICAweDMzLCAweEQwLCAweDhBLCAweDExLCAweDJFLCAweEJBLCAweDMzLCAweENCLCAweEJFLCAweDRGLCAweDYzLCAweDlELCAweDk3LCAweDUwLCAweDI2LCAweDk2LAorICAgIDB4OEYsIDB4NkYsIDB4NEQsIDB4MzAsIDB4ODAsIDB4NzIsIDB4MjgsIDB4NUUsIDB4QTgsIDB4NzQsIDB4OEUsIDB4NDIsIDB4OUQsIDB4MTUsIDB4REEsIDB4QUMsCisgICAgMHgzNiwgMHg3NCwgMHg5MSwgMHhGQSwgMHgyOSwgMHg4RiwgMHg1NCwgMHhGNSwgMHgwNiwgMHhDQywgMHg4MCwgMHg3OCwgMHhFRCwgMHg3NiwgMHhEQSwgMHgzRCwKKyAgICAweDg2LCAweDlELCAweDlELCAweDNELCAweEE0LCAweEE0LCAweDdFLCAweDlBLCAweDgwLCAweENDLCAweDkwLCAweDdDLCAweDkwLCAweDE0LCAweDhELCAweDMzLAorICAgIDB4MzAsIDB4OEIsIDB4Q0IsIDB4MTcsIDB4MzYsIDB4QkIsIDB4QUYsIDB4QTcsIDB4RTYsIDB4N0MsIDB4QTMsIDB4RTEsIDB4N0QsIDB4QjAsIDB4QTEsIDB4OUEsCisgICAgMHhBNiwgMHgyOCwgMHhGRSwgMHgxMywgMHhBMywgMHhGRiwgMHhFNSwgMHhFOSwgMHhDOSwgMHhCRCwgMHgxRSwgMHhFRiwgMHgyQywgMHhCNiwgMHhGRSwgMHg2RiwKKyAgICAweDZFLCAweERELCAweDk0LCAweEFCLCAweDFDLCAweENFLCAweDZFLCAweDJBLCAweDMwLCAweDA4LCAweDgyLCAweEQzLCAweEQxLCAweEZCLCAweEUzLCAweEM4LAorICAgIDB4NjMsIDB4MjUsIDB4QjIsIDB4RjYsIDB4NjcsIDB4MUQsIDB4NzIsIDB4NTcsIDB4OEIsIDB4RUUsIDB4OUYsIDB4NTYsIDB4MkYsIDB4MTYsIDB4M0UsIDB4OUIsCisgICAgMHhFQywgMHgyNywgMHhERSwgMHgyRSwgMHg4NCwgMHg5NywgMHg2NywgMHhBOSwgMHg2OSwgMHgwRCwgMHhDNSwgMHg1OSwgMHhDMywgMHhDOCwgMHg3NCwgMHhFRSwKKyAgICAweDA0LCAweDg5LCAweEVGLCAweEY2LCAweDRCLCAweEI5LCAweEEyLCAweEU1LCAweDgyLCAweDc4LCAweDFGLCAweDQ5LCAweERCLCAweDAyLCAweEM2LCAweDU2LAorICAgIDB4NEIsIDB4RDYsIDB4MjUsIDB4REIsIDB4QkQsIDB4RjksIDB4OUMsIDB4RkQsIDB4MkUsIDB4RjMsIDB4MDUsIDB4NUEsIDB4NzMsIDB4NjksIDB4MkEsIDB4RTksCisgICAgMHg2MiwgMHhEMiwgMHgxMCwgMHg4MiwgMHg5RCwgMHhDOCwgMHg2QywgMHhEQywgMHhDNiwgMHhGMiwgMHgxOCwgMHgxNywgMHhFQiwgMHgyRiwgMHg5MSwgMHhEQywKKyAgICAweDMwLCAweDU1LCAweERGLCAweEQ4LCAweDdDLCAweEE0LCAweDc5LCAweEUwLCAweEM1LCAweDM3LCAweDlELCAweDIzLCAweEQ1LCAweERGLCAweEE0LCAweEYyLAorICAgIDB4MUIsIDB4NjAsIDB4QjYsIDB4QzcsIDB4NkYsIDB4MjAsIDB4NUMsIDB4RkMsIDB4RjIsIDB4NkQsIDB4MDEsIDB4NzUsIDB4RkIsIDB4NTAsIDB4MDEsIDB4NUQsCisgICAgMHgyNCwgMHg0OCwgMHg1MywgMHhCRiwgMHgyNywgMHg5OSwgMHg3MywgMHgzQSwgMHg0NywgMHhENCwgMHhERCwgMHhCRiwgMHhFNywgMHg0MSwgMHhEMywgMHgxNSwKKyAgICAweDA5LCAweDIxLCAweDI5LCAweERBLCAweEZFLCAweDZBLCAweDhFLCAweDIwLCAweEI4LCAweDg2LCAweEMxLCAweDhELCAweDU0LCAweDc0LCAweEM3LCAweEQ2LAorICAgIDB4NjYsIDB4QTcsIDB4RTUsIDB4NjcsIDB4QjksIDB4RTgsIDB4MEEsIDB4NzQsIDB4M0EsIDB4RjksIDB4NEQsIDB4QUYsIDB4NTQsIDB4MkQsIDB4RjAsIDB4NDQsCisgICAgMHg3OSwgMHgwNCwgMHgwMSwgMHg1NCwgMHg0OSwgMHhGOSwgMHgwNCwgMHgyQSwgMHhFRiwgMHhERCwgMHg1MCwgMHgxOSwgMHhGNiwgMHg1NiwgMHgwQSwgMHgzNCwKKyAgICAweDU4LCAweDIwLCAweDkwLCAweDIzLCAweDk0LCAweDcwLCAweDQzLCAweEJDLCAweEYzLCAweDFFLCAweEMwLCAweDdELCAweEI1LCAweEJELCAweEYwLCAweEJGLAorICAgIDB4QzksIDB4MUYsIDB4OTMsIDB4MTcsIDB4MUQsIDB4NTYsIDB4REYsIDB4QTAsIDB4NDIsIDB4OUMsIDB4QUEsIDB4MzEsIDB4RDEsIDB4RTAsIDB4NzQsIDB4MEQsCisgICAgMHg0MiwgMHgwMiwgMHgzQiwgMHgwNiwgMHhGNiwgMHhDNSwgMHhBOCwgMHhCQiwgMHgxNywgMHg1QywgMHhDRCwgMHg1NiwgMHg3MSwgMHg5RSwgMHhBQSwgMHgxRSwKKyAgICAweEU4LCAweDk2LCAweDRFLCAweDBELCAweDU1LCAweDRFLCAweEEwLCAweDlFLCAweERDLCAweDMwLCAweDNFLCAweDU4LCAweEQzLCAweDYyLCAweEI2LCAweEFCLAorICAgIDB4M0IsIDB4Q0YsIDB4NEQsIDB4MkIsIDB4NEEsIDB4MTcsIDB4MjUsIDB4RkIsIDB4Q0EsIDB4NUUsIDB4MEEsIDB4M0IsIDB4ODIsIDB4MzYsIDB4Q0MsIDB4NkQsCisgICAgMHg1RCwgMHg2NCwgMHg4NiwgMHg1QywgMHg3MywgMHgxRSwgMHg4NiwgMHhEQywgMHgzMiwgMHg1RiwgMHhGNSwgMHgyQSwgMHgyRCwgMHg1OCwgMHg4OSwgMHhEQSwKKyAgICAweDIzLCAweDFBLCAweEFCLCAweDBBLCAweDZFLCAweDVGLCAweEQzLCAweDg0LCAweDMzLCAweDMzLCAweEM3LCAweEZELCAweDQyLCAweEU5LCAweEQzLCAweEJELAorICAgIDB4NTYsIDB4RTMsIDB4NzAsIDB4OEEsIDB4QkEsIDB4OTUsIDB4QUYsIDB4RjYsIDB4MEEsIDB4QTYsIDB4MjIsIDB4NTAsIDB4M0IsIDB4Q0IsIDB4MUEsIDB4RTgsCisgICAgMHg4OCwgMHhERiwgMHhEMywgMHhFOCwgMHg5NCwgMHg4QywgMHhCRiwgMHhDNywgMHgzMiwgMHg0QywgMHgzMSwgMHgwRiwgMHgxRSwgMHgxNCwgMHg5NSwgMHg5QywKKyAgICAweDJFLCAweDA4LCAweDVCLCAweDhCLCAweDYzLCAweDYyLCAweDUxLCAweDVCLCAweEFCLCAweDhCLCAweDgxLCAweDZFLCAweEEyLCAweDlCLCAweEUzLCAweDU2LAorICAgIDB4OUIsIDB4NzgsIDB4NDQsIDB4MDksIDB4Q0MsIDB4RDQsIDB4NjksIDB4QzQsIDB4RjAsIDB4NEYsIDB4N0QsIDB4QTksIDB4MUIsIDB4RTEsIDB4RDcsIDB4RkIsCisgICAgMHhENCwgMHg0NCwgMHgzRiwgMHhGRiwgMHgzRSwgMHhEQiwgMHhFQywgMHhCNywgMHg1MiwgMHg5MSwgMHgwRSwgMHhFNiwgMHhGNywgMHhFRiwgMHgyRiwgMHgzMiwKKyAgICAweDE1LCAweEM1LCAweDI1LCAweEE2LCAweDEwLCAweERGLCAweEQyLCAweDJGLCAweDVFLCAweEQwLCAweDUwLCAweDI4LCAweDQ3LCAweEEyLCAweDkzLCAweDM3LAorICAgIDB4NDIsIDB4MzMsIDB4QzIsIDB4M0UsIDB4MkUsIDB4MUMsIDB4MUEsIDB4NTIsIDB4RTUsIDB4MkMsIDB4NzEsIDB4NkMsIDB4QjUsIDB4NEEsIDB4NzgsIDB4RDIsCisgICAgMHg2MCwgMHhERSwgMHg5RCwgMHgyNiwgMHg4RSwgMHhBQSwgMHgzQywgMHgzMSwgMHhGQSwgMHg1NSwgMHg3OCwgMHg0MSwgMHhEMSwgMHhCQywgMHg5RCwgMHgxOSwKKyAgICAweDg1LCAweDhCLCAweDRDLCAweEY5LCAweDEwLCAweDk1LCAweDBFLCAweDQzLCAweDhBLCAweDM0LCAweDY2LCAweDRBLCAweDVBLCAweDRELCAweEQ5LCAweDRBLAorICAgIDB4RDYsIDB4MTksIDB4MjMsIDB4QzksIDB4NjcsIDB4NkEsIDB4ODEsIDB4MzYsIDB4ODcsIDB4QzIsIDB4NzksIDB4ODksIDB4RTcsIDB4MTcsIDB4OTAsIDB4N0UsCisgICAgMHg1QiwgMHg2MSwgMHg0OSwgMHhEOCwgMHgwNSwgMHhBMCwgMHg0RiwgMHgwOCwgMHg5QSwgMHg3NywgMHg1MywgMHg2RCwgMHg4QywgMHhENSwgMHgzNiwgMHg0RiwKKyAgICAweEU3LCAweDRFLCAweDU2LCAweEI0LCAweEUxLCAweEMwLCAweDUzLCAweEQzLCAweEI4LCAweEJFLCAweEI3LCAweDkwLCAweENBLCAweEZFLCAweEI5LCAweDgwLAorICAgIDB4MEUsIDB4MTMsIDB4QjIsIDB4N0MsIDB4OEYsIDB4NjYsIDB4NDAsIDB4Q0MsIDB4OEIsIDB4QjAsIDB4N0MsIDB4MzIsIDB4ODksIDB4REUsIDB4MkMsIDB4NUQsCisgICAgMHg2QSwgMHhDNSwgMHhFOSwgMHg0QiwgMHgzNiwgMHgzOCwgMHhDRCwgMHg1MSwgMHhFMiwgMHg5NywgMHg5RiwgMHgxMiwgMHg0NSwgMHg5MiwgMHg2OCwgMHgzOCwKKyAgICAweEVELCAweDYyLCAweDZBLCAweEI2LCAweDlBLCAweDM2LCAweDgyLCAweDcyLCAweDQzLCAweDU4LCAweDBGLCAweEE5LCAweEIwLCAweDRGLCAweDEyLCAweEM5LAorICAgIDB4MzIsIDB4MkMsIDB4QzAsIDB4QUYsIDB4RjYsIDB4RTUsIDB4NEQsIDB4NDgsIDB4QkYsIDB4REQsIDB4RUMsIDB4REIsIDB4MjgsIDB4QzksIDB4RDMsIDB4NUIsCisgICAgMHhFMywgMHhGQywgMHg3RSwgMHhBRCwgMHg3NiwgMHgyOCwgMHhENCwgMHgyMywgMHg3MSwgMHg4NSwgMHhBNSwgMHgyMiwgMHhFOSwgMHg5MywgMHg1RSwgMHg0MywKKyAgICAweEI1LCAweDBGLCAweEFFLCAweERGLCAweDhCLCAweDUxLCAweDQxLCAweDg2LCAweEMzLCAweDU1LCAweEU0LCAweDY4LCAweDQzLCAweDI3LCAweDdDLCAweDBDLAorICAgIDB4OEYsIDB4N0YsIDB4QTAsIDB4NUEsIDB4N0EsIDB4RDcsIDB4ODgsIDB4QzMsIDB4OEUsIDB4RjgsIDB4QzAsIDB4RjMsIDB4QjMsIDB4QzksIDB4MTUsIDB4MzQsCisgICAgMHg4MCwgMHgxNiwgMHgzNCwgMHgxMywgMHgxNywgMHg2QSwgMHhEMSwgMHg1OSwgMHgwMywgMHg5NCwgMHg1OSwgMHg3QiwgMHhBMCwgMHhFOCwgMHhFMCwgMHhBNCwKKyAgICAweDE2LCAweEZDLCAweDc2LCAweEYwLCAweDdDLCAweDVBLCAweDAwLCAweDAxLCAweDUwLCAweEU4LCAweDU2LCAweEVGLCAweDE4LCAweEM4LCAweERBLCAweEJDLAorICAgIDB4Q0QsIDB4QjgsIDB4OTIsIDB4QjgsIDB4MjIsIDB4RTMsIDB4QjUsIDB4MTYsIDB4MDUsIDB4MjUsIDB4RTcsIDB4NjUsIDB4M0QsIDB4MUMsIDB4MEYsIDB4MjMsCisgICAgMHhDNSwgMHgyNCwgMHgxNiwgMHg5RSwgMHg3NSwgMHhDQywgMHhGMCwgMHhGOSwgMHgxOSwgMHg0NywgMHg4MywgMHhBMCwgMHg0MiwgMHhCQywgMHgzNiwgMHg5OSwKKyAgICAweDc2LCAweEUwLCAweDI3LCAweEE5LCAweERCLCAweDRBLCAweDZFLCAweDUwLCAweDIyLCAweDk5LCAweDRELCAweERGLCAweDQzLCAweDY5LCAweEEzLCAweDk1LAorICAgIDB4NDgsIDB4OTcsIDB4QzcsIDB4QzUsIDB4NEYsIDB4MUIsIDB4MkEsIDB4MzIsIDB4QkEsIDB4OUYsIDB4QjksIDB4MkQsIDB4MUQsIDB4RTMsIDB4NkUsIDB4NDYsCisgICAgMHgxRiwgMHhCRCwgMHg3QSwgMHg0RiwgMHgyQSwgMHgwNywgMHhCNCwgMHhBMiwgMHhDMiwgMHgzMSwgMHhBOSwgMHg5MywgMHhFOSwgMHg5OCwgMHgzOSwgMHg5MywKKyAgICAweDg5LCAweDUxLCAweDgyLCAweDEwLCAweDk5LCAweEQ1LCAweDY1LCAweDI1LCAweDI3LCAweDM3LCAweEIxLCAweDdFLCAweDk4LCAweDUwLCAweEVDLCAweEE3LAorICAgIDB4MjksIDB4RTAsIDB4QkUsIDB4QTQsIDB4MEMsIDB4RDUsIDB4OUIsIDB4M0QsIDB4QUQsIDB4MDIsIDB4NEQsIDB4ODEsIDB4OTMsIDB4MEYsIDB4QTQsIDB4RDcsCisgICAgMHhGNCwgMHg0OCwgMHhDQywgMHg0RSwgMHhGNiwgMHg2RiwgMHhGMywgMHg1QywgMHhGNiwgMHg1QSwgMHgyRSwgMHgwNSwgMHhGQSwgMHhGQiwgMHgwNCwgMHg4RCwKKyAgICAweDk1LCAweDI5LCAweDk0LCAweDAzLCAweDM0LCAweEYyLCAweDMzLCAweEQ5LCAweDVCLCAweDQ3LCAweDk2LCAweDZDLCAweDBDLCAweEU2LCAweDhFLCAweEYyLAorICAgIDB4RDEsIDB4RjIsIDB4ODMsIDB4NkEsIDB4RjIsIDB4OTUsIDB4NEMsIDB4QkYsIDB4NDYsIDB4QjQsIDB4NDIsIDB4OTUsIDB4REEsIDB4NTksIDB4QkUsIDB4MzIsCisgICAgMHgyRiwgMHhGQiwgMHg3QSwgMHgzMywgMHhBMCwgMHgwOSwgMHhCNiwgMHgzNCwgMHg0OSwgMHg0QiwgMHhBNywgMHg5QiwgMHhGNiwgMHg1NiwgMHhBOSwgMHhCNywKKyAgICAweDVBLCAweDk4LCAweENELCAweDc0LCAweEY5LCAweEJCLCAweEQ5LCAweDFBLCAweDQ2LCAweDg3LCAweDVELCAweEE0LCAweDgxLCAweDI1LCAweEI5LCAweDlFLAorICAgIDB4NTgsIDB4RjcsIDB4QkUsIDB4MTksIDB4NkUsIDB4ODQsIDB4NTAsIDB4N0QsIDB4OTQsIDB4M0IsIDB4NTcsIDB4MEEsIDB4MDUsIDB4ODEsIDB4NDIsIDB4MkYsCisgICAgMHg0MiwgMHg5MCwgMHg5QiwgMHhGMSwgMHhBNywgMHg2NiwgMHhEMCwgMHhENCwgMHhGNiwgMHhEMCwgMHhCNywgMHhFMCwgMHhERiwgMHgyRCwgMHg2RCwgMHg2MCwKKyAgICAweDExLCAweEJFLCAweEM4LCAweEIzLCAweDY1LCAweEVCLCAweDcxLCAweDMzLCAweDc0LCAweEFELCAweEQwLCAweDNCLCAweDVELCAweDA2LCAweDc5LCAweDlCLAorICAgIDB4RDgsIDB4MDMsIDB4QjcsIDB4MjgsIDB4RUMsIDB4MkQsIDB4M0YsIDB4ODIsIDB4RTUsIDB4RDQsIDB4NzMsIDB4MDEsIDB4RTgsIDB4NTEsIDB4RDUsIDB4MDQsCisgICAgMHg0NiwgMHgwRCwgMHhBOSwgMHg0OCwgMHg4MywgMHg3NSwgMHg4OCwgMHg4NywgMHg0RiwgMHhBMywgMHhDNSwgMHhDQywgMHgwRSwgMHgzOSwgMHg0NiwgMHg5RSwKKyAgICAweEU4LCAweEM3LCAweDdDLCAweEMyLCAweEExLCAweEVBLCAweDg5LCAweDA4LCAweEU0LCAweDM3LCAweEFDLCAweEM2LCAweDJCLCAweDUwLCAweDdELCAweDc4LAorICAgIDB4NEYsIDB4NzIsIDB4QzgsIDB4OTYsIDB4REMsIDB4NDgsIDB4QjAsIDB4RUYsIDB4NjksIDB4NzAsIDB4REYsIDB4ODUsIDB4MEEsIDB4RTgsIDB4RUYsIDB4MTQsCisgICAgMHhGOSwgMHg4QywgMHhGRSwgMHg5RSwgMHhCMSwgMHhBNCwgMHg5QiwgMHg1OCwgMHhDMSwgMHg3NywgMHg1RSwgMHg4OCwgMHgzRCwgMHhCMSwgMHgzOSwgMHhDOSwKKyAgICAweEUxLCAweDhCLCAweDRDLCAweDE2LCAweEMyLCAweDEwLCAweEQ3LCAweDRELCAweDExLCAweDExLCAweDNFLCAweEQ5LCAweDYwLCAweEQxLCAweEFCLCAweDE4LAorICAgIDB4OUQsIDB4ODUsIDB4OEUsIDB4RkYsIDB4RkEsIDB4QjYsIDB4MDksIDB4MkIsIDB4RDIsIDB4OUEsIDB4RkQsIDB4NkYsIDB4NUMsIDB4MDUsIDB4NTEsIDB4MDQsCisgICAgMHgwMywgMHgyNSwgMHgzOCwgMHgxMiwgMHhDRCwgMHhGMSwgMHgwQiwgMHgxMCwgMHgyOCwgMHg4QSwgMHgwOSwgMHgyRSwgMHgyQywgMHgzOCwgMHg0MywgMHgxOSwKKyAgICAweDQwLCAweEY4LCAweDQ1LCAweEZGLCAweDgwLCAweDVELCAweEQ0LCAweERCLCAweDUyLCAweDJDLCAweDUxLCAweDc3LCAweEQ3LCAweEIxLCAweEZGLCAweEVELAorICAgIDB4MDYsIDB4OTksIDB4NTYsIDB4NDgsIDB4NTMsIDB4NDAsIDB4RjcsIDB4ODAsIDB4RkIsIDB4OUMsIDB4MEUsIDB4NkYsIDB4MUQsIDB4MjUsIDB4QUEsIDB4NEMsCisgICAgMHg4RSwgMHg5MSwgMHhFNywgMHhDNSwgMHgwQSwgMHhEQiwgMHgzRiwgMHhFQSwgMHg0OCwgMHhCOSwgMHhCMiwgMHhGQSwgMHgzOSwgMHg0NiwgMHg5RSwgMHgzQSwKKyAgICAweEMzLCAweERDLCAweDE1LCAweEY5LCAweENGLCAweDhDLCAweEE3LCAweDE0LCAweEZELCAweDE2LCAweDExLCAweDY5LCAweEM3LCAweEQ5LCAweDJCLCAweDAwLAorICAgIDB4QkEsIDB4RTcsIDB4NDcsIDB4QjUsIDB4RjMsIDB4NzQsIDB4MTQsIDB4MTEsIDB4QzUsIDB4MjksIDB4NUYsIDB4QTAsIDB4RjIsIDB4MEIsIDB4QjUsIDB4NDUsCisgICAgMHhFQiwgMHg4OCwgMHg5NiwgMHgxRiwgMHgyNiwgMHhDQywgMHg0NywgMHhENywgMHg1QSwgMHg5NiwgMHgxQSwgMHhCNSwgMHhENywgMHg2NiwgMHg5OCwgMHhEMCwKKyAgICAweDY1LCAweERDLCAweEUyLCAweDE1LCAweEFGLCAweEFDLCAweDdFLCAweDYwLCAweEJFLCAweDlFLCAweDJELCAweEI1LCAweDlCLCAweEQ5LCAweDE5LCAweDM2LAorICAgIDB4NTMsIDB4MkYsIDB4RTQsIDB4NDAsIDB4RDcsIDB4REMsIDB4ODIsIDB4MTYsIDB4OEIsIDB4OTksIDB4MUIsIDB4QjMsIDB4NUMsIDB4QkIsIDB4NkEsIDB4M0YsCisgICAgMHg5MCwgMHhFNCwgMHhGOCwgMHg1NywgMHhERSwgMHg5RSwgMHg2MywgMHhGRCwgMHg3OCwgMHg0RiwgMHgwQSwgMHgyNiwgMHg3MywgMHgwRSwgMHhEOSwgMHg0NywKKyAgICAweDhCLCAweDUyLCAweEJGLCAweDc3LCAweDc1LCAweDE1LCAweEQyLCAweDcwLCAweERDLCAweDRCLCAweDQ3LCAweDFELCAweDZBLCAweDdBLCAweDVGLCAweEZFLAorICAgIDB4NjQsIDB4ODksIDB4QUIsIDB4QTEsIDB4OTUsIDB4OEYsIDB4MjcsIDB4RDEsIDB4QUQsIDB4NUMsIDB4NkQsIDB4QUIsIDB4QUYsIDB4NTMsIDB4QTUsIDB4N0UsCisgICAgMHhGQywgMHgxNCwgMHgwMiwgMHhFMCwgMHhFQSwgMHgxNCwgMHg2MCwgMHg3MSwgMHgyMCwgMHhCNSwgMHgyQiwgMHgzMywgMHg0NywgMHhFOCwgMHgwNSwgMHg4MiwKKyAgICAweDRCLCAweDg1LCAweEUzLCAweEZFLCAweDlELCAweDIxLCAweDk1LCAweDdGLCAweDE4LCAweDExLCAweEI0LCAweDBELCAweDdGLCAweEI2LCAweEFCLCAweEY0LAorICAgIDB4RjQsIDB4RTcsIDB4NDMsIDB4MjAsIDB4NTAsIDB4MjgsIDB4NzIsIDB4OEIsIDB4MTEsIDB4ODMsIDB4QTUsIDB4QjYsIDB4MUUsIDB4OTQsIDB4RjksIDB4MjUsCisgICAgMHg5NCwgMHgyQiwgMHhCQywgMHhENiwgMHg1NSwgMHg0MSwgMHhFNCwgMHhGMCwgMHhEOSwgMHhGNSwgMHg0RCwgMHgzMCwgMHg0QSwgMHhENCwgMHg5RCwgMHgzQiwKKyAgICAweDIzLCAweEUzLCAweDk1LCAweDJFLCAweEI2LCAweDYwLCAweDBELCAweEFELCAweDI4LCAweEU1LCAweEY5LCAweDZFLCAweDZBLCAweDc0LCAweEI1LCAweDZDLAorICAgIDB4ODgsIDB4NTksIDB4ODcsIDB4MzAsIDB4NEEsIDB4NTQsIDB4RTAsIDB4ODAsIDB4QUEsIDB4MUUsIDB4NzYsIDB4MDIsIDB4MTYsIDB4NTUsIDB4QzUsIDB4RjIsCisgICAgMHhDOCwgMHgzOCwgMHhFMywgMHgyMiwgMHgxMiwgMHg3QSwgMHgxNiwgMHg1MSwgMHhEQiwgMHg1QiwgMHgzOCwgMHhGMywgMHhFMCwgMHhDMSwgMHg0NSwgMHg1NiwKKyAgICAweDZBLCAweEQzLCAweEQzLCAweDI1LCAweDU5LCAweDlBLCAweDdBLCAweDFGLCAweDhBLCAweEY0LCAweEFGLCAweDk4LCAweDRFLCAweEM4LCAweDFELCAweDZBLAorICAgIDB4N0UsIDB4MzQsIDB4NEIsIDB4RDcsIDB4ODUsIDB4MkYsIDB4QkIsIDB4MEYsIDB4N0IsIDB4RDQsIDB4NzYsIDB4NDQsIDB4ODMsIDB4OEEsIDB4NzYsIDB4MDEsCisgICAgMHgzOSwgMHhBRSwgMHg4OCwgMHhBNSwgMHhCMCwgMHhGQywgMHhCRiwgMHhFQSwgMHhEMSwgMHhGRCwgMHg0NCwgMHgyNSwgMHg3MiwgMHhEOSwgMHhCQywgMHgzRiwKKyAgICAweEQ5LCAweEMxLCAweDI5LCAweDQ0LCAweDIyLCAweDBFLCAweDZBLCAweDQ5LCAweEUxLCAweDMyLCAweDIzLCAweEIzLCAweDQ1LCAweDgwLCAweDgxLCAweDlDLAorICAgIDB4MzgsIDB4ODgsIDB4RTcsIDB4MjcsIDB4NjYsIDB4MDksIDB4OTAsIDB4RjIsIDB4QkQsIDB4M0MsIDB4NEIsIDB4MTAsIDB4OTgsIDB4NTIsIDB4NEQsIDB4ODEsCisgICAgMHgyNiwgMHgyNSwgMHhEMywgMHhFMywgMHg2NiwgMHgwMCwgMHgyNywgMHgzOSwgMHhCRiwgMHg2QSwgMHg0MCwgMHgxRCwgMHg4RiwgMHg2RiwgMHgyMSwgMHgxNiwKKyAgICAweDIyLCAweDczLCAweDFFLCAweDlFLCAweDExLCAweEZGLCAweEI4LCAweEM5LCAweDlBLCAweDU2LCAweDM1LCAweDE0LCAweDc4LCAweEJELCAweDFGLCAweDdCLAorICAgIDB4ODksIDB4NDcsIDB4QjYsIDB4NkEsIDB4NTEsIDB4QkMsIDB4MDgsIDB4OUYsIDB4M0QsIDB4Q0YsIDB4MUMsIDB4QzUsIDB4MkMsIDB4ODIsIDB4ODgsIDB4NzIsCisgICAgMHhDQywgMHgzNSwgMHg5QiwgMHhENywgMHgzMSwgMHhGRSwgMHhBRSwgMHg0MCwgMHgyRCwgMHhCRiwgMHgyMSwgMHhDMywgMHhGMSwgMHhBOCwgMHgzOSwgMHhDMCwKKyAgICAweDU5LCAweEI0LCAweDI5LCAweDdDLCAweDVELCAweDVDLCAweDBBLCAweDdDLCAweEQ2LCAweEEyLCAweEI5LCAweDVBLCAweDY5LCAweDNBLCAweEYyLCAweEE1LAorICAgIDB4QjUsIDB4NDAsIDB4NUQsIDB4ODQsIDB4MUUsIDB4OEEsIDB4OTMsIDB4MkIsIDB4NzUsIDB4OEMsIDB4RjAsIDB4N0YsIDB4NTcsIDB4MTIsIDB4QjYsIDB4RjksCisgICAgMHhCQiwgMHhCRSwgMHgyOCwgMHgyMCwgMHg0QiwgMHhCMSwgMHhBOCwgMHg5MCwgMHhFNiwgMHg2QSwgMHhFOSwgMHhCMywgMHhCMiwgMHgxNCwgMHhDRSwgMHhBMCwKKyAgICAweENELCAweDlCLCAweEQyLCAweDhELCAweEVCLCAweDM0LCAweEIyLCAweDcxLCAweDg2LCAweDk2LCAweEZCLCAweDg4LCAweDVFLCAweDlGLCAweDBELCAweEU2LAorICAgIDB4OTksIDB4ODcsIDB4QUIsIDB4QUEsIDB4RjQsIDB4RUEsIDB4RDMsIDB4RkUsIDB4Q0UsIDB4NkQsIDB4MkMsIDB4OTMsIDB4OEEsIDB4MDYsIDB4MTYsIDB4NDcsCisgICAgMHhCQiwgMHhGRiwgMHhFMCwgMHhDNSwgMHgzMSwgMHhGMSwgMHg0NiwgMHgzMSwgMHhCNCwgMHg2RCwgMHhGRSwgMHg5QSwgMHg2MiwgMHhDMCwgMHhEOSwgMHgxNywKKyAgICAweEMyLCAweDM4LCAweDE4LCAweDVDLCAweEJBLCAweDAwLCAweENFLCAweDEwLCAweDg5LCAweDk2LCAweDM2LCAweDgyLCAweDk1LCAweEQ0LCAweDc2LCAweDkwLAorICAgIDB4N0QsIDB4NUQsIDB4NzksIDB4NTksIDB4MjAsIDB4NjMsIDB4QTQsIDB4NUYsIDB4MTAsIDB4NUMsIDB4MDgsIDB4RjQsIDB4NTMsIDB4MzksIDB4QzcsIDB4MTYsCisgICAgMHhCNywgMHhFNywgMHgzNywgMHhDNiwgMHg2NywgMHgyRCwgMHg3NSwgMHhBOSwgMHg4NiwgMHg5NiwgMHgzRCwgMHg1NSwgMHg0NSwgMHhGRSwgMHhGQSwgMHhDNCwKKyAgICAweEZFLCAweDY2LCAweEVBLCAweDUzLCAweEQzLCAweDNDLCAweDQwLCAweEExLCAweDk2LCAweDMxLCAweDBGLCAweDJDLCAweDU2LCAweDgyLCAweEY1LCAweEFELAorICAgIDB4NEIsIDB4NTYsIDB4MUEsIDB4MDQsIDB4NUUsIDB4QzAsIDB4OTIsIDB4RUQsIDB4NzQsIDB4RjEsIDB4OUQsIDB4MTEsIDB4MEYsIDB4OEYsIDB4NjksIDB4OTAsCisgICAgMHg1MywgMHg3OCwgMHg3MSwgMHgwRCwgMHg4QSwgMHg2QywgMHg4RSwgMHhCMCwgMHhBMiwgMHgzMywgMHgzOCwgMHg3RSwgMHgxOCwgMHhDNSwgMHgyOCwgMHhFRSwKKyAgICAweDRGLCAweEU1LCAweDU3LCAweEM1LCAweDVFLCAweDQyLCAweERFLCAweEE4LCAweEI3LCAweDc3LCAweEU1LCAweDVELCAweERELCAweEQ5LCAweEZFLCAweEZGLAorICAgIDB4NjksIDB4RjYsIDB4MEEsIDB4QkYsIDB4RTEsIDB4MjIsIDB4RUMsIDB4MDksIDB4RjMsIDB4MDUsIDB4NjEsIDB4MzEsIDB4NzEsIDB4MzEsIDB4MDYsIDB4MzYsCisgICAgMHg3NiwgMHgzNCwgMHhCNCwgMHg1QiwgMHg0NiwgMHg0QywgMHg3RiwgMHgyNiwgMHgwRiwgMHg5NywgMHg3NSwgMHgzNCwgMHg3NSwgMHgyQiwgMHg4OCwgMHgxQiwKKyAgICAweEVDLCAweEY3LCAweDY1LCAweEY3LCAweDkyLCAweDMwLCAweDA0LCAweEJBLCAweDU2LCAweEJFLCAweDQ0LCAweEY4LCAweDBDLCAweDNBLCAweDI3LCAweEQ5LAorICAgIDB4RTEsIDB4NzAsIDB4MTAsIDB4MTgsIDB4RTgsIDB4RTAsIDB4QjUsIDB4QzYsIDB4MUUsIDB4MEUsIDB4MTEsIDB4N0MsIDB4QjgsIDB4N0MsIDB4M0UsIDB4RDEsCisgICAgMHhERCwgMHhFQiwgMHhBNCwgMHgxNCwgMHgyRiwgMHhDMSwgMHhBQiwgMHg3NywgMHgwRSwgMHg1MSwgMHgyMywgMHhDQywgMHg1RSwgMHgzNCwgMHgxOSwgMHhDOSwKKyAgICAweEJELCAweDgxLCAweDk2LCAweDAwLCAweEQ2LCAweEU5LCAweEFBLCAweDgyLCAweEQzLCAweEU2LCAweDAwLCAweDA5LCAweDNFLCAweEMwLCAweEI2LCAweDRGLAorICAgIDB4RjEsIDB4MzksIDB4MDAsIDB4RjAsIDB4RDYsIDB4QjEsIDB4N0EsIDB4QTIsIDB4RDMsIDB4RDYsIDB4MDgsIDB4NjUsIDB4RTUsIDB4NEEsIDB4ODQsIDB4REEsCisgICAgMHg4NSwgMHgxNywgMHhBQywgMHgxNywgMHgwMywgMHgzNSwgMHgwNywgMHg4RiwgMHhGOSwgMHhCMywgMHhDQywgMHhDOSwgMHgzRSwgMHhGOSwgMHg0RSwgMHhBNCwKKyAgICAweDMwLCAweEUzLCAweEM5LCAweDk2LCAweDhCLCAweDZCLCAweDUzLCAweDRFLCAweDExLCAweEFGLCAweDUzLCAweEFDLCAweDkyLCAweDhFLCAweENDLCAweEZFLAorICAgIDB4Q0EsIDB4MTIsIDB4N0YsIDB4OTIsIDB4MEEsIDB4NjIsIDB4N0EsIDB4MzgsIDB4Q0EsIDB4QUEsIDB4ODksIDB4MEMsIDB4MDAsIDB4OTEsIDB4QTEsIDB4OUYsCisgICAgMHg5NiwgMHgxMywgMHgyQiwgMHg0NiwgMHgwRSwgMHg1OSwgMHhDMCwgMHhGMywgMHg0OSwgMHhEQywgMHhGMCwgMHhGQSwgMHhCRiwgMHg0RCwgMHhFNywgMHhGMywKKyAgICAweDBBLCAweDgyLCAweDEyLCAweDA1LCAweERFLCAweEE1LCAweEE5LCAweDhCLCAweDY3LCAweEQwLCAweEY1LCAweDBCLCAweEVFLCAweEExLCAweDczLCAweDhGLAorICAgIDB4Q0MsIDB4NDcsIDB4NjcsIDB4N0UsIDB4ODMsIDB4NzksIDB4NTYsIDB4MTksIDB4NDksIDB4NUIsIDB4RTAsIDB4MzAsIDB4NUYsIDB4RTYsIDB4Q0IsIDB4NkUsCisgICAgMHhFQywgMHg2OSwgMHgzMSwgMHhCOCwgMHg4NywgMHg2RSwgMHhDMCwgMHhFQSwgMHg3NiwgMHg3OSwgMHgzQSwgMHgxQSwgMHgwNSwgMHg4QiwgMHhEMywgMHhCMSwKKyAgICAweDU2LCAweDU3LCAweDEzLCAweERGLCAweDNBLCAweDZGLCAweDM4LCAweEZGLCAweDNBLCAweEZCLCAweDU5LCAweDM1LCAweDM3LCAweEZBLCAweDkzLCAweEJCLAorICAgIDB4QTMsIDB4MTMsIDB4NjksIDB4QzEsIDB4Q0EsIDB4M0IsIDB4OUMsIDB4NzMsIDB4NTEsIDB4ODEsIDB4MzgsIDB4NTcsIDB4MTIsIDB4NTUsIDB4QTcsIDB4N0YsCisgICAgMHgyNywgMHg4NywgMHg4QiwgMHg0QSwgMHgwQywgMHg3RiwgMHgyRCwgMHg2QywgMHg2RSwgMHhFRCwgMHg2OSwgMHhERCwgMHhDMywgMHgyOSwgMHhEQSwgMHg2NywKKyAgICAweERGLCAweDJFLCAweDlCLCAweDNELCAweEIxLCAweEE3LCAweEZBLCAweDFFLCAweEYwLCAweDA5LCAweEUyLCAweDY5LCAweDRBLCAweDk3LCAweEUwLCAweDYzLAorICAgIDB4OTIsIDB4MTYsIDB4RjEsIDB4N0MsIDB4NzAsIDB4NTAsIDB4NzIsIDB4RkUsIDB4OTYsIDB4OTQsIDB4RTQsIDB4QUIsIDB4NUEsIDB4Q0EsIDB4RUIsIDB4NjksCisgICAgMHgzQywgMHgxMiwgMHhFNSwgMHgxQSwgMHhCOCwgMHgyQywgMHg4QywgMHgyNCwgMHhBMiwgMHhGMywgMHgyQSwgMHhGRiwgMHhBMCwgMHhFQywgMHhFOCwgMHhERSwKKyAgICAweEFGLCAweDRDLCAweEEwLCAweEVCLCAweDRELCAweDEzLCAweDc3LCAweDE5LCAweDIzLCAweEUzLCAweEUyLCAweDcyLCAweEMzLCAweEQ0LCAweDNBLCAweDcwLAorICAgIDB4MUQsIDB4QTcsIDB4RTAsIDB4OTIsIDB4MzgsIDB4OTgsIDB4NjgsIDB4QkIsIDB4ODIsIDB4OTgsIDB4QzcsIDB4MzAsIDB4MzgsIDB4NTAsIDB4MkEsIDB4REYsCisgICAgMHhBRiwgMHg5QywgMHg3RiwgMHhBQiwgMHg4QSwgMHhCQiwgMHg5OCwgMHg2QSwgMHg0OCwgMHg0QSwgMHhFNCwgMHgyOSwgMHgzRiwgMHg1QSwgMHhCRSwgMHg3RCwKKyAgICAweDNELCAweEM4LCAweENCLCAweDEzLCAweDlFLCAweDlELCAweDg2LCAweEM1LCAweDk2LCAweDFDLCAweEI0LCAweEQ2LCAweEJGLCAweDMyLCAweEUyLCAweDRELAorICAgIDB4MUIsIDB4ODYsIDB4MUEsIDB4RkEsIDB4RDAsIDB4RkIsIDB4MjUsIDB4QTIsIDB4QkEsIDB4NkYsIDB4RUUsIDB4MzYsIDB4RjYsIDB4MjQsIDB4RUMsIDB4N0QsCisgICAgMHg4RSwgMHg5NiwgMHhBNCwgMHg5NSwgMHg0QiwgMHgzRiwgMHg1RCwgMHgxRiwgMHgxMSwgMHg5QiwgMHhBRCwgMHg0QiwgMHhDNSwgMHg1QywgMHg4NywgMHg1OCwKKyAgICAweEE0LCAweDU2LCAweEVCLCAweEVBLCAweDk5LCAweEMzLCAweDg1LCAweDExLCAweDAxLCAweDdCLCAweEZELCAweDM5LCAweDMzLCAweEI5LCAweEQ3LCAweERDLAorICAgIDB4MjYsIDB4OTksIDB4Q0QsIDB4QjcsIDB4N0UsIDB4N0UsIDB4NjAsIDB4RTcsIDB4NDQsIDB4MjksIDB4NkMsIDB4MEMsIDB4RkIsIDB4MTMsIDB4NzEsIDB4MkIsCisgICAgMHg1QywgMHgxMywgMHg4OCwgMHhGRCwgMHhCOSwgMHhGNCwgMHg1MywgMHgyMCwgMHhENiwgMHhCQiwgMHhFRiwgMHhGMCwgMHhEQiwgMHg1MywgMHg0QSwgMHhEMCwKKyAgICAweDFCLCAweEYzLCAweDZGLCAweERCLCAweDhFLCAweEY2LCAweEIwLCAweDQ2LCAweDVDLCAweDJBLCAweEFELCAweEZCLCAweDI3LCAweDUyLCAweEU1LCAweEZELAorICAgIDB4M0QsIDB4OUIsIDB4NTYsIDB4OUYsIDB4NDcsIDB4QkEsIDB4QTksIDB4QjcsIDB4QUEsIDB4NUMsIDB4QjIsIDB4RkQsIDB4NEYsIDB4QTgsIDB4QUQsIDB4QTksCisgICAgMHhEQiwgMHhCMiwgMHgzNCwgMHhFNSwgMHg4NiwgMHhDQiwgMHg1RiwgMHhFNywgMHg2NSwgMHhFRSwgMHg5MiwgMHg5RCwgMHgzRSwgMHgzNSwgMHg0MiwgMHgzNSwKKyAgICAweDQ4LCAweDAzLCAweDUyLCAweDMxLCAweDcxLCAweENFLCAweDcyLCAweEVDLCAweDFGLCAweDg4LCAweENFLCAweERDLCAweEIyLCAweDM4LCAweDMyLCAweEVBLAorICAgIDB4MUIsIDB4NzEsIDB4MjIsIDB4RkMsIDB4MTQsIDB4NTMsIDB4RDgsIDB4MkUsIDB4NkIsIDB4RjMsIDB4REIsIDB4RjksIDB4M0YsIDB4MDEsIDB4REMsIDB4RUYsCisgICAgMHhGRSwgMHg3NCwgMHhFNCwgMHhFMSwgMHg3QiwgMHg1NSwgMHgyMSwgMHhCNSwgMHg0MCwgMHg3OCwgMHg4NywgMHg3NiwgMHhGQywgMHhGQSwgMHgzNiwgMHgyNSwKKyAgICAweDQ1LCAweEI5LCAweDQ3LCAweDJBLCAweDY1LCAweDU2LCAweDc1LCAweDhFLCAweERDLCAweDZFLCAweDI3LCAweDJELCAweDQzLCAweDgyLCAweENDLCAweDc2LAorICAgIDB4QTAsIDB4NDgsIDB4MzMsIDB4ODgsIDB4NUIsIDB4NTgsIDB4RjMsIDB4ODMsIDB4NkQsIDB4OEMsIDB4MUUsIDB4RkMsIDB4QTMsIDB4MUEsIDB4QUMsIDB4NzQsCisgICAgMHhCNCwgMHgzOCwgMHg0NywgMHhDQSwgMHgyMCwgMHgwNiwgMHgxNCwgMHhBQiwgMHg1QSwgMHhCRCwgMHg1RSwgMHgzOCwgMHg1QSwgMHgxRSwgMHg4OCwgMHhDNywKKyAgICAweEY5LCAweDY5LCAweDdELCAweEJGLCAweDkxLCAweDJDLCAweDUxLCAweDE4LCAweDk1LCAweEY2LCAweDE5LCAweDk4LCAweDc5LCAweEZDLCAweDY5LCAweEZELAorICAgIDB4RjcsIDB4QTksIDB4MjEsIDB4QTEsIDB4RDQsIDB4QkYsIDB4QzUsIDB4MjEsIDB4RjUsIDB4QkEsIDB4RDIsIDB4OUIsIDB4RjgsIDB4QTUsIDB4NDAsIDB4NTcsCisgICAgMHhEMSwgMHgxMCwgMHg0NywgMHgwRiwgMHg5MywgMHg1MCwgMHgwRiwgMHg1RCwgMHg5NywgMHg5NiwgMHgxNCwgMHgyQiwgMHg3MSwgMHg2MywgMHg4OCwgMHhFQywKKyAgICAweEExLCAweDkyLCAweEYwLCAweDc2LCAweDg2LCAweDVDLCAweENDLCAweDM3LCAweDg2LCAweDA0LCAweEQyLCAweEIwLCAweERELCAweDUzLCAweDgyLCAweEQ2LAorICAgIDB4MjgsIDB4Q0MsIDB4MDUsIDB4NjAsIDB4RTEsIDB4M0YsIDB4MjcsIDB4RDIsIDB4MUMsIDB4ODAsIDB4NjgsIDB4QUEsIDB4QTksIDB4MTYsIDB4Q0QsIDB4RjUsCisgICAgMHg4MiwgMHg1NSwgMHgxMSwgMHhERCwgMHgwNSwgMHgyRCwgMHg1NiwgMHg5RiwgMHhDOSwgMHg5MiwgMHhBMiwgMHhCOCwgMHhERiwgMHhEOSwgMHgzMiwgMHgyOCwKKyAgICAweEQ0LCAweEU5LCAweEVBLCAweDdFLCAweDkzLCAweDVELCAweDMzLCAweDk2LCAweDc3LCAweDgxLCAweENGLCAweDYzLCAweEUyLCAweEM1LCAweEM0LCAweDQxLAorICAgIDB4ODksIDB4MEEsIDB4NjQsIDB4Q0MsIDB4NjgsIDB4RDMsIDB4M0EsIDB4ODAsIDB4MUEsIDB4QUMsIDB4MzYsIDB4REMsIDB4NTAsIDB4OTUsIDB4NUIsIDB4OEEsCisgICAgMHhFNywgMHgyNCwgMHhBRCwgMHg2NSwgMHhDOSwgMHg4NiwgMHgyQSwgMHhDMiwgMHgwQywgMHg0OCwgMHhCMCwgMHhERCwgMHgzMywgMHg1MywgMHgxRiwgMHgwOCwKKyAgICAweDM1LCAweDlCLCAweDkxLCAweDUyLCAweEJCLCAweEE4LCAweDg1LCAweEUyLCAweEE5LCAweDBELCAweDIyLCAweDgwLCAweDFELCAweENBLCAweDU3LCAweEE1LAorICAgIDB4NTIsIDB4RTQsIDB4REEsIDB4MTAsIDB4N0MsIDB4MzEsIDB4REIsIDB4QUEsIDB4MjcsIDB4OTgsIDB4ODUsIDB4QjcsIDB4QzcsIDB4NEUsIDB4RkMsIDB4OUQsCisgICAgMHgzOSwgMHg4QSwgMHgxMCwgMHgzMCwgMHg3OCwgMHg0QiwgMHhCMywgMHgzQywgMHhBRiwgMHhBQiwgMHhFNywgMHhEOSwgMHhCQiwgMHhCNCwgMHgxMSwgMHgzRSwKKyAgICAweDU5LCAweDMyLCAweDJBLCAweEQ4LCAweDg5LCAweEQ4LCAweEY1LCAweEVCLCAweDQ1LCAweEZDLCAweEVGLCAweDhCLCAweDc4LCAweENGLCAweDEwLCAweDFCLAorICAgIDB4Q0YsIDB4NEEsIDB4MkMsIDB4MjQsIDB4NTcsIDB4RUQsIDB4ODIsIDB4MkUsIDB4NEIsIDB4QzksIDB4MUEsIDB4QzgsIDB4MUMsIDB4RDAsIDB4NUQsIDB4RTEsCisgICAgMHg4NywgMHg2RSwgMHhFQSwgMHhFRCwgMHhEOSwgMHgwRCwgMHhDOSwgMHgxQywgMHg1OSwgMHgxNCwgMHg4NSwgMHhGQiwgMHg2MCwgMHhGRSwgMHg2MiwgMHgwNiwKKyAgICAweDRBLCAweEI5LCAweDBGLCAweDBFLCAweDgzLCAweEZFLCAweDE0LCAweDFBLCAweDdGLCAweDZGLCAweEZCLCAweEMwLCAweEJGLCAweDc2LCAweDAyLCAweDNDLAorICAgIDB4QUIsIDB4NTgsIDB4ODYsIDB4QjAsIDB4REEsIDB4NjksIDB4RTcsIDB4RkQsIDB4MkIsIDB4NEMsIDB4NDcsIDB4NjYsIDB4QUIsIDB4QUIsIDB4RkYsIDB4NUQsCisgICAgMHhBMCwgMHhGMiwgMHg5NSwgMHg0NywgMHhDOCwgMHgyMywgMHhCOCwgMHg1OCwgMHhBMiwgMHg3NCwgMHg5RCwgMHg2NSwgMHg2RCwgMHgzRiwgMHhDOSwgMHhEOSwKKyAgICAweEMwLCAweEU5LCAweDhBLCAweDYyLCAweDBBLCAweDZFLCAweDFGLCAweEU3LCAweEQyLCAweDg2LCAweDk3LCAweDI2LCAweEE0LCAweDBBLCAweDlDLCAweDU0LAorICAgIDB4NDQsIDB4QzgsIDB4OEMsIDB4NEUsIDB4M0IsIDB4QTksIDB4RTYsIDB4OTcsIDB4QkUsIDB4QkUsIDB4MTYsIDB4MDksIDB4RTMsIDB4QzcsIDB4Q0EsIDB4NjgsCisgICAgMHg0NywgMHgyNCwgMHg4MCwgMHgyMiwgMHgyNywgMHgwRCwgMHhDNywgMHhFNCwgMHgxMSwgMHg2OCwgMHhEMiwgMHgxQSwgMHg3OSwgMHg2MSwgMHg4OSwgMHg1OSwKKyAgICAweEQ1LCAweEEzLCAweDk5LCAweERGLCAweDlDLCAweDVCLCAweDEwLCAweDU4LCAweDM2LCAweDZELCAweERFLCAweDlGLCAweEI1LCAweEMyLCAweEYyLCAweDlGLAorICAgIDB4NjgsIDB4OTksIDB4OTUsIDB4RDEsIDB4NzksIDB4MDgsIDB4OEYsIDB4RTQsIDB4RUMsIDB4ODIsIDB4N0QsIDB4NzAsIDB4Q0YsIDB4RUEsIDB4NzcsIDB4MDAsCisgICAgMHgwQSwgMHgwQSwgMHhFNiwgMHgzOSwgMHg0NSwgMHg5NiwgMHhCNiwgMHhBMSwgMHhDMCwgMHhBMywgMHhBQSwgMHg2NCwgMHhGOCwgMHgzQiwgMHhEMiwgMHhGNywKKyAgICAweDVDLCAweEFELCAweEMwLCAweDYyLCAweDkzLCAweERBLCAweEFFLCAweDA4LCAweDVGLCAweEI1LCAweDEwLCAweDdGLCAweDE0LCAweEI2LCAweDkxLCAweEMzLAorICAgIDB4RUMsIDB4QkIsIDB4MEYsIDB4MTgsIDB4NEIsIDB4ODgsIDB4QkUsIDB4RkYsIDB4QTIsIDB4RjEsIDB4MDIsIDB4NDgsIDB4MDMsIDB4NkMsIDB4NkEsIDB4NUMsCisgICAgMHhBRSwgMHg3RiwgMHhCQiwgMHhBMywgMHgwMiwgMHgyNSwgMHg2RSwgMHgxMywgMHg5QiwgMHg2NCwgMHg4QywgMHg2QiwgMHgzRCwgMHhDMSwgMHhDNiwgMHhDNywKKyAgICAweEI2LCAweEE4LCAweEYyLCAweDg1LCAweDEyLCAweDg3LCAweEVBLCAweEUwLCAweDA3LCAweDNBLCAweEVFLCAweDJGLCAweEMyLCAweDY4LCAweEI4LCAweDA1LAorICAgIDB4QjUsIDB4NTUsIDB4MTUsIDB4REYsIDB4MjEsIDB4NzgsIDB4OUQsIDB4MjEsIDB4ODAsIDB4RTgsIDB4OTEsIDB4QTQsIDB4OTcsIDB4MUMsIDB4MDgsIDB4REIsCisgICAgMHg2OCwgMHhBOCwgMHhFRiwgMHgyNSwgMHgwMCwgMHhFRSwgMHhBQywgMHhENywgMHg4NywgMHgyNiwgMHhENiwgMHgyNywgMHhCOCwgMHhFNSwgMHg4NSwgMHg3OSwKKyAgICAweDNGLCAweEE0LCAweEU5LCAweEM4LCAweDUxLCAweDQ0LCAweEFGLCAweEFFLCAweDMyLCAweDA4LCAweDU3LCAweDFELCAweEM2LCAweEI3LCAweDRELCAweDQzLAorICAgIDB4REMsIDB4M0QsIDB4MjcsIDB4RDQsIDB4MzQsIDB4NTMsIDB4RUEsIDB4MUEsIDB4RkEsIDB4NTcsIDB4MTEsIDB4MDQsIDB4QzEsIDB4NzAsIDB4N0QsIDB4ODgsCisgICAgMHg5QiwgMHgzNSwgMHhBQSwgMHhCRSwgMHgyMywgMHhENCwgMHgxMCwgMHhGQiwgMHhFQSwgMHg5QywgMHg0QSwgMHhCQywgMHhBNSwgMHhDMCwgMHg0RSwgMHhFMSwKKyAgICAweDJDLCAweDMwLCAweDE1LCAweDFCLCAweEE2LCAweEZBLCAweDdDLCAweDI3LCAweDc4LCAweEEzLCAweDJCLCAweEY3LCAweDkwLCAweDIwLCAweDRCLCAweEIyLAorICAgIDB4QkQsIDB4RUUsIDB4MTEsIDB4RDEsIDB4NTMsIDB4RUIsIDB4QkMsIDB4MzMsIDB4QUQsIDB4ODcsIDB4RDUsIDB4MTUsIDB4NkIsIDB4NjksIDB4RkQsIDB4MjAsCisgICAgMHgzRSwgMHg3NCwgMHhGMywgMHg5RCwgMHgyNCwgMHg5QSwgMHhDNywgMHgzOSwgMHhFQiwgMHhEMiwgMHg4MSwgMHgyNCwgMHg3QSwgMHg3NSwgMHgyMCwgMHgyMCwKKyAgICAweEEzLCAweDJCLCAweEI2LCAweDU5LCAweDYyLCAweDU0LCAweEU0LCAweDZGLCAweDAzLCAweDQxLCAweENELCAweDNBLCAweDEzLCAweDY5LCAweDVDLCAweERBLAorICAgIDB4RDYsIDB4RTEsIDB4NjQsIDB4MTQsIDB4NEYsIDB4MDUsIDB4MDMsIDB4MDQsIDB4NEYsIDB4MUEsIDB4MzgsIDB4RjgsIDB4NDAsIDB4OUUsIDB4QTEsIDB4MzgsCisgICAgMHhEQSwgMHgyMCwgMHhCNSwgMHg1NCwgMHhDNiwgMHgwRCwgMHgxRCwgMHg1OCwgMHhFNCwgMHg0NSwgMHgxMCwgMHhGNSwgMHg5QywgMHhBNiwgMHhBNCwgMHg5MCwKKyAgICAweDY0LCAweDM1LCAweEU2LCAweEYwLCAweEZFLCAweDU4LCAweDQ3LCAweEM2LCAweDg0LCAweEE2LCAweDY5LCAweDYyLCAweENDLCAweEZBLCAweDUwLCAweEZBLAorICAgIDB4QUMsIDB4MjQsIDB4NUUsIDB4NzIsIDB4Q0YsIDB4NEMsIDB4QUYsIDB4Q0YsIDB4RjEsIDB4MTIsIDB4QjgsIDB4NjIsIDB4QTAsIDB4RjEsIDB4QjYsIDB4MzYsCisgICAgMHhGNywgMHgzRSwgMHhENSwgMHgzRiwgMHgyQiwgMHhENSwgMHhDMywgMHg1NywgMHhFNywgMHg4NCwgMHg5RSwgMHhDRSwgMHg0OCwgMHgyMSwgMHg5MCwgMHgwOSwKKyAgICAweDVELCAweDYyLCAweEJCLCAweERDLCAweDVBLCAweDkzLCAweDIwLCAweDZELCAweEYzLCAweDhGLCAweDlDLCAweDUxLCAweDk3LCAweDc0LCAweEM3LCAweDU1LAorICAgIDB4MDgsIDB4RDksIDB4NDIsIDB4MTEsIDB4NzAsIDB4NTUsIDB4MDgsIDB4OTYsIDB4MkQsIDB4QzIsIDB4NUMsIDB4MEIsIDB4MDIsIDB4NkQsIDB4RkMsIDB4M0EsCisgICAgMHhDRCwgMHgyMSwgMHhGMiwgMHg3MiwgMHhENiwgMHg3OCwgMHgzQiwgMHhENSwgMHg1MiwgMHhDOSwgMHhFOSwgMHg5NCwgMHg1MSwgMHgyRiwgMHhCQSwgMHgyNywKKyAgICAweDk5LCAweDZCLCAweEYxLCAweEYyLCAweEZBLCAweEJGLCAweDE1LCAweDY4LCAweEQxLCAweEM2LCAweDhBLCAweDg2LCAweDNBLCAweDUxLCAweDQ1LCAweEIyLAorICAgIDB4RTksIDB4NUQsIDB4RDEsIDB4ODIsIDB4QzMsIDB4MzIsIDB4MjgsIDB4RDMsIDB4OEIsIDB4RkIsIDB4OTAsIDB4NkQsIDB4OTYsIDB4OUUsIDB4NjUsIDB4MDcsCisgICAgMHhFMSwgMHgwNSwgMHgyOCwgMHg1MiwgMHhFNiwgMHg5MywgMHg5MywgMHg0QiwgMHhCMSwgMHg0NCwgMHhFMSwgMHhENSwgMHhCNSwgMHg2NSwgMHgxRCwgMHgxRCwKKyAgICAweDVDLCAweEZBLCAweEIwLCAweENBLCAweEMzLCAweDlELCAweENELCAweEFDLCAweDExLCAweEZGLCAweDgxLCAweDQ0LCAweDkxLCAweEIwLCAweDFDLCAweEM4LAorICAgIDB4NkYsIDB4MjEsIDB4QzIsIDB4NjEsIDB4OTUsIDB4NjEsIDB4NDksIDB4MTksIDB4M0YsIDB4NjcsIDB4OUEsIDB4QzAsIDB4N0YsIDB4RUUsIDB4Q0YsIDB4RTgsCisgICAgMHg1RSwgMHg3NSwgMHgwMywgMHg1NiwgMHg0RCwgMHgyNCwgMHg2MSwgMHhGOSwgMHhEOCwgMHg5OCwgMHhBMSwgMHgyQiwgMHhEMSwgMHg4QywgMHg0MCwgMHg5QiwKKyAgICAweERDLCAweEI2LCAweDVDLCAweEMwLCAweEQ2LCAweDg0LCAweDY3LCAweDJFLCAweDAwLCAweDJBLCAweDg5LCAweENFLCAweDBBLCAweDZELCAweDA2LCAweDIzLAorICAgIDB4NjQsIDB4MTAsIDB4RDUsIDB4RDIsIDB4MTcsIDB4QzUsIDB4RjksIDB4OTgsIDB4RUUsIDB4RTYsIDB4RkMsIDB4MTYsIDB4NkIsIDB4MEUsIDB4QUQsIDB4NDAsCisgICAgMHg0RCwgMHgyRCwgMHg3OCwgMHg5QywgMHg3NSwgMHg2MCwgMHhERCwgMHg1NSwgMHg1QiwgMHg5RiwgMHhERiwgMHhFMCwgMHg3MCwgMHgyQSwgMHg3MiwgMHhGMywKKyAgICAweDEwLCAweDMxLCAweDBGLCAweEI5LCAweEE2LCAweERDLCAweDNFLCAweDBDLCAweDlELCAweDIwLCAweDkxLCAweEE2LCAweDBGLCAweDRFLCAweDQ5LCAweDBELAorICAgIDB4M0QsIDB4MkMsIDB4MkQsIDB4MzMsIDB4MzIsIDB4MzEsIDB4MUUsIDB4RjYsIDB4ODksIDB4RDYsIDB4NjYsIDB4RjAsIDB4OTgsIDB4MUUsIDB4MTEsIDB4MzYsCisgICAgMHhFMiwgMHhGMiwgMHhERSwgMHgwOSwgMHg1RiwgMHg3QiwgMHgyOSwgMHhBMiwgMHg1MSwgMHg0NywgMHhBNiwgMHhBQywgMHgyQiwgMHhFMiwgMHg1QSwgMHhBRSwKKyAgICAweDdGLCAweDM4LCAweEE1LCAweEY2LCAweEZFLCAweDYxLCAweDQyLCAweDcwLCAweEI5LCAweENDLCAweENDLCAweEQ3LCAweDIzLCAweDBGLCAweEJGLCAweENDLAorICAgIDB4ODcsIDB4NDgsIDB4MzEsIDB4MzgsIDB4MUIsIDB4N0EsIDB4NEIsIDB4OUUsIDB4RUIsIDB4MUYsIDB4M0QsIDB4MTYsIDB4NTUsIDB4RkEsIDB4REIsIDB4QzIsCisgICAgMHhBMCwgMHhGRiwgMHhEQywgMHgzNCwgMHg0QiwgMHgwRCwgMHgzQywgMHgzMywgMHg1NSwgMHg4NywgMHg3RSwgMHg3MywgMHhDRCwgMHg2NiwgMHg4QSwgMHg1RCwKKyAgICAweDNGLCAweEU0LCAweEZFLCAweEYxLCAweDU2LCAweEZFLCAweEIxLCAweEIxLCAweDA5LCAweDRFLCAweDFELCAweEE1LCAweEVFLCAweEQ1LCAweDZELCAweDlGLAorICAgIDB4QTMsIDB4QTksIDB4Q0IsIDB4MTYsIDB4RTQsIDB4NjIsIDB4ODcsIDB4MUYsIDB4QjUsIDB4ODgsIDB4RkIsIDB4MkIsIDB4NzcsIDB4QTAsIDB4QjgsIDB4OUQsCisgICAgMHg1MSwgMHgxRiwgMHg4OCwgMHg2MCwgMHg0NSwgMHg2OSwgMHgyQSwgMHg0NiwgMHgxRSwgMHg3QiwgMHg3RiwgMHg2MywgMHg5OCwgMHg1OSwgMHg4QSwgMHg3NSwKKyAgICAweDZDLCAweDRFLCAweEZFLCAweEZELCAweEMxLCAweENCLCAweDY4LCAweDEwLCAweDcxLCAweDM4LCAweDhGLCAweDFBLCAweDUwLCAweEY1LCAweDRBLCAweEUzLAorICAgIDB4ODIsIDB4MjgsIDB4NDYsIDB4NEEsIDB4NzIsIDB4MEEsIDB4ODYsIDB4RjksIDB4RTAsIDB4RjQsIDB4N0UsIDB4Q0IsIDB4M0EsIDB4QjUsIDB4NkMsIDB4NkEsCisgICAgMHg2QiwgMHgxNCwgMHgxQiwgMHgwRSwgMHhBRCwgMHg2MCwgMHhDRSwgMHgzOSwgMHg4RiwgMHg2MiwgMHgzRiwgMHgyQSwgMHgzMywgMHhCQywgMHhGMywgMHgwMywKKyAgICAweDkwLCAweDQwLCAweDNCLCAweDVFLCAweDMwLCAweDc3LCAweEUwLCAweEE0LCAweEFBLCAweDVELCAweEMzLCAweENGLCAweDQzLCAweDBGLCAweEY3LCAweDFDLAorICAgIDB4NEUsIDB4NjAsIDB4ODcsIDB4ODIsIDB4QjYsIDB4NUEsIDB4RjMsIDB4MzUsIDB4MTcsIDB4NDgsIDB4RkIsIDB4OEYsIDB4MzQsIDB4Q0IsIDB4RUQsIDB4NkYsCisgICAgMHhGQywgMHhCOCwgMHg3MywgMHhCQiwgMHgwOSwgMHhDRSwgMHgwNywgMHg4OSwgMHg1OCwgMHhFQiwgMHhDNCwgMHg4MiwgMHg2NywgMHg0NSwgMHhBRCwgMHhDQSwKKyAgICAweEQ5LCAweDQ5LCAweEU0LCAweDAwLCAweEFBLCAweDVBLCAweEVELCAweDYxLCAweEE2LCAweDQ5LCAweDFBLCAweEI2LCAweEM4LCAweDA5LCAweERFLCAweEFBLAorICAgIDB4NjUsIDB4MUEsIDB4MEMsIDB4RjUsIDB4REYsIDB4QTksIDB4MkIsIDB4QjYsIDB4OTEsIDB4RTksIDB4RjAsIDB4MDgsIDB4MkEsIDB4QkIsIDB4NEEsIDB4MDQsCisgICAgMHgzMCwgMHgwQywgMHg3MSwgMHg2NCwgMHhFMiwgMHhDRiwgMHhGMywgMHhENCwgMHgxRSwgMHg5OSwgMHg5QSwgMHgyQiwgMHgxMSwgMHg1RCwgMHgyOSwgMHg2MSwKKyAgICAweEM2LCAweDJDLCAweEMxLCAweEE3LCAweDA1LCAweEU4LCAweDlCLCAweEQwLCAweEU0LCAweEQyLCAweDU2LCAweDk2LCAweDVFLCAweEE5LCAweDI1LCAweDk2LAorICAgIDB4MjUsIDB4QkMsIDB4QkMsIDB4MTIsIDB4RTUsIDB4NTAsIDB4NDcsIDB4NEMsIDB4OEQsIDB4QkYsIDB4QTYsIDB4REEsIDB4MEEsIDB4ODgsIDB4NzAsIDB4MkYsCisgICAgMHg3NCwgMHgyRCwgMHhFOSwgMHhDRCwgMHhEOCwgMHhGNiwgMHhEOSwgMHg3NiwgMHgzNywgMHg5QSwgMHgxRiwgMHgxRCwgMHgzRCwgMHgxMCwgMHhCQSwgMHhEMCwKKyAgICAweDNDLCAweDEzLCAweDU2LCAweDczLCAweDc5LCAweDk3LCAweEI5LCAweDU1LCAweDlELCAweDhCLCAweEYzLCAweEQ1LCAweDg3LCAweDBCLCAweDFELCAweDk3LAorICAgIDB4NTMsIDB4RDAsIDB4RjksIDB4QTksIDB4NzYsIDB4M0IsIDB4REUsIDB4MTgsIDB4M0MsIDB4RTgsIDB4RjAsIDB4ODEsIDB4MTMsIDB4MTYsIDB4NUEsIDB4N0QsCisgICAgMHg1OSwgMHhGMSwgMHg5RSwgMHhFMywgMHhDNSwgMHhCQSwgMHhGQywgMHhCNywgMHg3RSwgMHg1RiwgMHgwNSwgMHhGNCwgMHgzOCwgMHg2QywgMHhBMSwgMHgwOSwKKyAgICAweEFBLCAweDE1LCAweDRDLCAweEM1LCAweEY2LCAweEU3LCAweDI1LCAweDcyLCAweEM0LCAweEFBLCAweDgyLCAweEZFLCAweEVCLCAweDNGLCAweEJDLCAweDZCLAorICAgIDB4MjYsIDB4QjIsIDB4QUQsIDB4ODUsIDB4ODMsIDB4RkIsIDB4RkEsIDB4RDksIDB4MkQsIDB4NzgsIDB4NTAsIDB4QkUsIDB4RjYsIDB4NzAsIDB4QjQsIDB4OEEsCisgICAgMHhEQiwgMHg3MSwgMHhBMiwgMHg2MCwgMHg4MCwgMHg3QSwgMHg5MSwgMHhCMiwgMHg3NCwgMHg1NCwgMHg4MSwgMHhCNSwgMHhGNywgMHg0OCwgMHg3NywgMHg5NiwKKyAgICAweDA1LCAweEQ2LCAweDM0LCAweEMxLCAweDA2LCAweDBFLCAweDM1LCAweDIwLCAweDM5LCAweDI4LCAweDJELCAweDU3LCAweEMxLCAweDc1LCAweEEyLCAweDI2LAorICAgIDB4MEIsIDB4RUIsIDB4NTksIDB4MTIsIDB4MDcsIDB4NDYsIDB4MzUsIDB4MUIsIDB4N0QsIDB4MkEsIDB4NUIsIDB4MEQsIDB4MTksIDB4MUEsIDB4QkQsIDB4MDksCisgICAgMHg1RCwgMHhFRiwgMHg3QSwgMHg3OSwgMHg3RiwgMHhCMSwgMHhENiwgMHg0NSwgMHgwMCwgMHhDMywgMHgzRSwgMHhCMiwgMHhBOSwgMHgwMywgMHgxOSwgMHg0MywKKyAgICAweEMzLCAweDUzLCAweDczLCAweDI0LCAweEEyLCAweEVDLCAweDlCLCAweDg4LCAweDA5LCAweEY0LCAweDVDLCAweEI1LCAweEMwLCAweDY5LCAweDAwLCAweEI2LAorICAgIDB4QjQsIDB4ODAsIDB4REUsIDB4OUEsIDB4N0EsIDB4ODUsIDB4MUQsIDB4QTcsIDB4ODUsIDB4ODEsIDB4M0QsIDB4ODMsIDB4NDEsIDB4ODUsIDB4QTUsIDB4MzIsCisgICAgMHg3QiwgMHg3RCwgMHg0NywgMHhFQiwgMHgzNSwgMHgwNywgMHgzQywgMHhFRCwgMHhCQywgMHg2QiwgMHhFRiwgMHhCMCwgMHgxQSwgMHg2RiwgMHgzMywgMHgwQSwKKyAgICAweDJDLCAweEJBLCAweDU0LCAweEY4LCAweEVFLCAweEE5LCAweEI0LCAweDJBLCAweDE3LCAweDhBLCAweDFFLCAweDZDLCAweDU4LCAweEZCLCAweDA5LCAweEYwLAorICAgIDB4NzYsIDB4MEYsIDB4MDMsIDB4RDMsIDB4MzQsIDB4QzEsIDB4QzIsIDB4QTEsIDB4Q0QsIDB4OTYsIDB4MjEsIDB4RkMsIDB4OUMsIDB4MjEsIDB4M0QsIDB4QjYsCisgICAgMHhBMiwgMHhEMSwgMHhBMiwgMHgwRiwgMHgyNCwgMHhGNiwgMHgzMywgMHhCNCwgMHhCNCwgMHgzNiwgMHhDQSwgMHgxMiwgMHgyNSwgMHg1MiwgMHg4NSwgMHg1QiwKKyAgICAweDA3LCAweDgyLCAweEFGLCAweEI4LCAweDhCLCAweEIxLCAweDM2LCAweDY3LCAweDMyLCAweEFGLCAweDUxLCAweDc0LCAweERFLCAweDE1LCAweDlCLCAweEU3LAorICAgIDB4RDksIDB4NkQsIDB4MkMsIDB4RUEsIDB4REUsIDB4NjgsIDB4OTksIDB4NjYsIDB4MzEsIDB4ODcsIDB4N0QsIDB4RUEsIDB4QTgsIDB4NEQsIDB4RjQsIDB4MDYsCisgICAgMHhCNSwgMHgyOCwgMHhEOCwgMHg5MywgMHhCOCwgMHgzOCwgMHhCMywgMHgyRCwgMHhBMiwgMHhBOCwgMHhDRCwgMHgwMywgMHg5NiwgMHg2MSwgMHhEMSwgMHg3QiwKKyAgICAweDQ5LCAweDExLCAweEU4LCAweEVFLCAweDI1LCAweENFLCAweDQ0LCAweEE3LCAweDc3LCAweEVELCAweDcyLCAweEEzLCAweEY0LCAweEE3LCAweENCLCAweDJELAorICAgIDB4OUQsIDB4QzUsIDB4QkEsIDB4ODksIDB4QkQsIDB4OUEsIDB4QzAsIDB4ODQsIDB4REQsIDB4MTQsIDB4MDksIDB4MUMsIDB4MTEsIDB4MTcsIDB4NEYsIDB4OTksCisgICAgMHgyMywgMHhEQSwgMHhEMiwgMHhENCwgMHg2OCwgMHg0RSwgMHg3QiwgMHhGQywgMHg4NSwgMHgyNCwgMHhFNywgMHgxQSwgMHg3OSwgMHhBNSwgMHg5MSwgMHg5RSwKKyAgICAweEQ4LCAweEJCLCAweDBFLCAweEZBLCAweEM0LCAweDk5LCAweDMxLCAweEZCLCAweDAyLCAweDRDLCAweDE1LCAweEVDLCAweDM4LCAweDZFLCAweEJDLCAweEY4LAorICAgIDB4QTEsIDB4Q0IsIDB4QUQsIDB4OEQsIDB4MTIsIDB4NjYsIDB4OTEsIDB4NjEsIDB4QUYsIDB4QTgsIDB4MDEsIDB4ODYsIDB4RjcsIDB4OEEsIDB4NTQsIDB4MzAsCisgICAgMHg0MCwgMHhERSwgMHgzRiwgMHg4MywgMHhBNCwgMHg5QywgMHg0MywgMHg5OCwgMHg1MCwgMHgyMSwgMHgxMiwgMHhCMywgMHgyMCwgMHg1MywgMHhFNSwgMHg0NiwKKyAgICAweDgyLCAweDdFLCAweERGLCAweDU5LCAweDFFLCAweDE5LCAweDBDLCAweDJCLCAweEZGLCAweDc3LCAweDkyLCAweDI1LCAweEY0LCAweDMxLCAweERBLCAweDgyLAorICAgIDB4REEsIDB4M0EsIDB4NzMsIDB4RjgsIDB4MkUsIDB4ODMsIDB4MzAsIDB4QkYsIDB4MUUsIDB4NDcsIDB4NDYsIDB4MkMsIDB4NjIsIDB4QkEsIDB4QTcsIDB4OTUsCisgICAgMHg1RCwgMHhFMiwgMHhCOCwgMHg3QSwgMHhFMiwgMHgzRiwgMHhEOSwgMHg2QywgMHhFRiwgMHhDOCwgMHg0NywgMHhBNywgMHgxOSwgMHg2MCwgMHg1NiwgMHhDMCwKKyAgICAweDhGLCAweEI0LCAweDhFLCAweDFGLCAweDMzLCAweEFELCAweDJBLCAweDA4LCAweERBLCAweDUzLCAweDUyLCAweDJELCAweDg2LCAweDE0LCAweDZBLCAweEI1LAorICAgIDB4OTQsIDB4RDAsIDB4RkMsIDB4RUUsIDB4RTYsIDB4REQsIDB4NzYsIDB4QzYsIDB4OTEsIDB4Q0EsIDB4M0QsIDB4MDAsIDB4QTQsIDB4NjMsIDB4M0EsIDB4MzgsCisgICAgMHhFNCwgMHg3OSwgMHhERSwgMHg0NCwgMHg0OCwgMHg0MSwgMHg1MCwgMHg5QywgMHgxQSwgMHhDQiwgMHgxNSwgMHg2OCwgMHhENSwgMHhFNSwgMHhFOCwgMHgwMCwKKyAgICAweDY5LCAweDNFLCAweDJCLCAweDgyLCAweDNCLCAweDNELCAweDBBLCAweDhGLCAweDhCLCAweEJFLCAweDk4LCAweDA4LCAweEQ5LCAweDY2LCAweEMzLCAweEYyLAorICAgIDB4QzksIDB4NkUsIDB4REYsIDB4RDAsIDB4REMsIDB4QjEsIDB4MjQsIDB4OTEsIDB4QTgsIDB4NzAsIDB4RkEsIDB4RDIsIDB4RDcsIDB4NDMsIDB4MjUsIDB4RTEsCisgICAgMHgwNCwgMHhEQSwgMHhFRCwgMHg1RCwgMHhCRiwgMHhEMCwgMHgxQSwgMHg4QiwgMHhCRCwgMHgyMiwgMHhBMSwgMHhFQywgMHg5MCwgMHg3NiwgMHhCRiwgMHgwNywKKyAgICAweEUyLCAweEE1LCAweEI0LCAweDRELCAweEVBLCAweDM5LCAweERBLCAweDk1LCAweDJGLCAweEUwLCAweDc3LCAweDIzLCAweDA3LCAweDQ4LCAweDI4LCAweDU3LAorICAgIDB4MzUsIDB4RDcsIDB4MzAsIDB4QzAsIDB4QjIsIDB4RkMsIDB4NkUsIDB4MkIsIDB4MkYsIDB4RjMsIDB4NDQsIDB4OUMsIDB4RDgsIDB4QkYsIDB4RDksIDB4NDQsCisgICAgMHgyRCwgMHg5MiwgMHhERiwgMHg1MSwgMHg3QSwgMHg2RSwgMHhCQiwgMHg2OSwgMHhDOSwgMHhBOCwgMHhDMiwgMHgyNywgMHgxNSwgMHg4RiwgMHg4OCwgMHhFMywKKyAgICAweEZELCAweDk2LCAweEQ0LCAweDFELCAweDFBLCAweEY5LCAweEI3LCAweDJDLCAweDU0LCAweEU1LCAweEE2LCAweDRCLCAweEJDLCAweEMzLCAweDg5LCAweEZELAorICAgIDB4MDksIDB4QUIsIDB4QjksIDB4QjIsIDB4QzIsIDB4RjEsIDB4QjYsIDB4OUUsIDB4RkEsIDB4MkUsIDB4RjEsIDB4NkEsIDB4MkEsIDB4M0YsIDB4M0EsIDB4REMsCisgICAgMHgyMSwgMHg2NiwgMHg3NiwgMHhCNSwgMHg3QywgMHhFQSwgMHhFNSwgMHhFMCwgMHhEOSwgMHhBOSwgMHgxNCwgMHg5MiwgMHhENiwgMHgwRCwgMHgwNCwgMHhCNCwKKyAgICAweDA0LCAweDhBLCAweEY2LCAweEYxLCAweDg1LCAweDY5LCAweEY0LCAweDFGLCAweDhELCAweEJDLCAweDZBLCAweDlCLCAweDdGLCAweDBELCAweDdDLCAweEM3LAorICAgIDB4NEMsIDB4MjYsIDB4NjAsIDB4NEYsIDB4QjAsIDB4MDgsIDB4NUQsIDB4MTUsIDB4NzIsIDB4MDIsIDB4MkUsIDB4RDEsIDB4RjEsIDB4RDEsIDB4RUQsIDB4OEYsCisgICAgMHgwQSwgMHg4QiwgMHg4QSwgMHhEMSwgMHgxOCwgMHgxOCwgMHg3NywgMHg0MCwgMHg0MCwgMHgzNSwgMHgyQiwgMHhEQiwgMHgyOCwgMHg5QiwgMHgwQiwgMHgzMiwKKyAgICAweEJGLCAweDE3LCAweDU0LCAweDNCLCAweEY1LCAweEVGLCAweEVELCAweDZBLCAweDZDLCAweDRELCAweDhDLCAweDI3LCAweEY1LCAweDM2LCAweEQyLCAweDk3LAorICAgIDB4MjAsIDB4M0UsIDB4NzIsIDB4NTAsIDB4OTEsIDB4NzksIDB4OTMsIDB4NTMsIDB4NTMsIDB4QTMsIDB4NTAsIDB4RDMsIDB4MDksIDB4QUYsIDB4MzYsIDB4OTAsCisgICAgMHgwQSwgMHhBQSwgMHhFNiwgMHgxOSwgMHgwNSwgMHg1RCwgMHg1RCwgMHg2RCwgMHgwNCwgMHg5QSwgMHgwOCwgMHg3QSwgMHhEOSwgMHgwNiwgMHg5QywgMHgwMywKKyAgICAweEQ5LCAweDEyLCAweEZBLCAweDM2LCAweDEwLCAweEVCLCAweDlDLCAweDRDLCAweDc0LCAweEVDLCAweDY5LCAweDM2LCAweEIzLCAweDhBLCAweDBDLCAweDIyLAorICAgIDB4QTYsIDB4QjMsIDB4RjEsIDB4QUUsIDB4NzAsIDB4OEIsIDB4QTgsIDB4MzgsIDB4MDgsIDB4MEYsIDB4NDIsIDB4NDAsIDB4ODksIDB4NkQsIDB4MDksIDB4RUMsCisgICAgMHg3MSwgMHg0NCwgMHg4RiwgMHhEMSwgMHhDNywgMHhDQiwgMHg4RiwgMHg0QywgMHhFQywgMHhDOCwgMHg1QiwgMHg3RCwgMHhCMSwgMHg3NywgMHgzNiwgMHg2NiwKKyAgICAweEE2LCAweERGLCAweDI5LCAweDJCLCAweDJGLCAweDVFLCAweDhELCAweDNELCAweEU2LCAweDM4LCAweEMxLCAweDMyLCAweDBCLCAweDY0LCAweDkwLCAweEIxLAorICAgIDB4QTcsIDB4MDMsIDB4NEEsIDB4NDEsIDB4OTQsIDB4RTYsIDB4RkYsIDB4MzcsIDB4MUUsIDB4NzUsIDB4RDQsIDB4MUMsIDB4NzEsIDB4NjMsIDB4QjQsIDB4NjQsCisgICAgMHg5QiwgMHgxQiwgMHg0QywgMHg3QiwgMHhGQiwgMHgxNiwgMHg5NSwgMHg5NSwgMHhEQiwgMHhCNiwgMHgwOCwgMHg5MywgMHg5QiwgMHg3QiwgMHg4NiwgMHhBMCwKKyAgICAweDUzLCAweDI0LCAweDQwLCAweDdGLCAweDJGLCAweEYwLCAweDg2LCAweEU0LCAweDg5LCAweDAyLCAweDg4LCAweEJBLCAweDI1LCAweEU5LCAweEQ5LCAweDQ2LAorICAgIDB4MDgsIDB4MUMsIDB4QkQsIDB4NzMsIDB4ODEsIDB4QkIsIDB4NDgsIDB4NTUsIDB4NjUsIDB4NDYsIDB4OUQsIDB4MDYsIDB4NzUsIDB4OTksIDB4NzUsIDB4N0EsCisgICAgMHgwNiwgMHgzRSwgMHg0QiwgMHgyNSwgMHg4RCwgMHg3QiwgMHg3OCwgMHg4MSwgMHhDNiwgMHg5OCwgMHhBQSwgMHgyMCwgMHgyMiwgMHg4QiwgMHg3NCwgMHg2QiwKKyAgICAweDAxLCAweDFFLCAweDdBLCAweDM2LCAweDM5LCAweEM3LCAweDUzLCAweDA5LCAweDUzLCAweDkyLCAweEYwLCAweDFBLCAweDQ5LCAweDJFLCAweDkxLCAweDI2LAorICAgIDB4MDIsIDB4RUIsIDB4MTQsIDB4RUUsIDB4OEQsIDB4NDgsIDB4QzEsIDB4NzksIDB4MDEsIDB4MUIsIDB4MDMsIDB4MzMsIDB4N0IsIDB4RDEsIDB4QUUsIDB4OTksCisgICAgMHhEOSwgMHhERSwgMHgxNywgMHhBQiwgMHhCRSwgMHhBOCwgMHgzOCwgMHhBRCwgMHg4QiwgMHg4MiwgMHg2MCwgMHg0RSwgMHhGMywgMHhGMCwgMHhCMiwgMHhGQiwKKyAgICAweDUxLCAweDE0LCAweDU3LCAweDlBLCAweEUzLCAweERDLCAweEIwLCAweDVDLCAweDY2LCAweERELCAweEZFLCAweDJBLCAweDVBLCAweDEwLCAweDIzLCAweDJGLAorICAgIDB4QkEsIDB4MDcsIDB4M0MsIDB4NDgsIDB4MzcsIDB4NkEsIDB4MjksIDB4QTUsIDB4NkMsIDB4QzUsIDB4MUUsIDB4Q0YsIDB4MzYsIDB4MUMsIDB4MEIsIDB4NEIsCisgICAgMHgxRiwgMHgzOSwgMHg4QywgMHhBRiwgMHgxNiwgMHg1MCwgMHhFQiwgMHg0MiwgMHgzMCwgMHg1RiwgMHgyMywgMHg3NCwgMHg4NSwgMHg5NCwgMHhGQSwgMHg2OSwKKyAgICAweDUzLCAweDk1LCAweEY4LCAweEFGLCAweDc4LCAweERELCAweDg4LCAweDgyLCAweEM2LCAweEVBLCAweEJCLCAweEIxLCAweEFGLCAweDEyLCAweEU4LCAweDk3LAorICAgIDB4OUEsIDB4QkIsIDB4NzAsIDB4OEMsIDB4NUQsIDB4MEIsIDB4ODksIDB4QjEsIDB4ODYsIDB4MkYsIDB4N0MsIDB4OEIsIDB4NTksIDB4NTcsIDB4MkQsIDB4QzksCisgICAgMHhDOCwgMHg4QSwgMHhEQywgMHhBMSwgMHhDRCwgMHhFMSwgMHg1RCwgMHgxNSwgMHgyRSwgMHg2QywgMHg5QywgMHhBQSwgMHgyMiwgMHgwQSwgMHg5MywgMHg2QiwKKyAgICAweDhCLCAweDlBLCAweERGLCAweEU3LCAweEJFLCAweEQ5LCAweDI5LCAweDAyLCAweDA5LCAweDhBLCAweDdCLCAweDE0LCAweEE0LCAweDg2LCAweEYyLCAweDUwLAorICAgIDB4RkMsIDB4NjQsIDB4QUEsIDB4NjksIDB4QzgsIDB4OEIsIDB4QjcsIDB4QTksIDB4NTUsIDB4RkIsIDB4MUYsIDB4RDQsIDB4MzUsIDB4OTEsIDB4Q0UsIDB4ODEsCisgICAgMHhCQywgMHhDNiwgMHg1NCwgMHgyQSwgMHg4NiwgMHgyRiwgMHgwMiwgMHg5MCwgMHhCNywgMHgwMSwgMHgxNSwgMHgzMSwgMHg2OSwgMHg2NywgMHgxOCwgMHhBMCwKKyAgICAweDJCLCAweDkwLCAweDNBLCAweEE5LCAweEExLCAweDM4LCAweERELCAweEE3LCAweDQyLCAweDkyLCAweEU4LCAweDcxLCAweENFLCAweDMyLCAweDE4LCAweDczLAorICAgIDB4Q0IsIDB4MUQsIDB4QzMsIDB4QTIsIDB4RjgsIDB4MUMsIDB4NkIsIDB4NjAsIDB4RUQsIDB4Q0EsIDB4MEYsIDB4RjYsIDB4QjUsIDB4ODAsIDB4N0EsIDB4N0EsCisgICAgMHgzMywgMHg2RCwgMHhEMSwgMHg2RCwgMHhEMSwgMHg4QywgMHhEMSwgMHg1OCwgMHgzRSwgMHhBNywgMHg3QSwgMHg5NSwgMHgzMCwgMHg2NSwgMHhCRCwgMHgwNywKKyAgICAweDE1LCAweEMxLCAweEZDLCAweEZGLCAweDQxLCAweDkzLCAweDVGLCAweDdDLCAweDdGLCAweDMwLCAweDY2LCAweDUyLCAweDQ0LCAweDE2LCAweDM5LCAweDZELAorICAgIDB4NDIsIDB4OUQsIDB4MEQsIDB4RjEsIDB4NzIsIDB4NjksIDB4MTEsIDB4NTMsIDB4QzMsIDB4QTAsIDB4OUIsIDB4ODksIDB4QjYsIDB4RTQsIDB4OEMsIDB4NEIsCisgICAgMHg4NywgMHg4MCwgMHg5QSwgMHhCNCwgMHgzRSwgMHgzMywgMHg4RCwgMHhBQiwgMHg4MSwgMHgxNSwgMHgwNSwgMHgxOSwgMHg4NywgMHhCMSwgMHhEQSwgMHgwNSwKKyAgICAweDRCLCAweDYwLCAweEJBLCAweDFELCAweEU3LCAweDNCLCAweDdFLCAweDQyLCAweEFCLCAweDVBLCAweEQwLCAweDIxLCAweDMwLCAweEI1LCAweDc4LCAweEI1LAorICAgIDB4QzAsIDB4OEYsIDB4ODMsIDB4MzksIDB4N0EsIDB4N0EsIDB4QUYsIDB4NEYsIDB4OUIsIDB4Q0MsIDB4RDksIDB4REEsIDB4MDEsIDB4OUMsIDB4RkUsIDB4QUQsCisgICAgMHhBQiwgMHhFNywgMHhGNywgMHgyRiwgMHhDMSwgMHhFNiwgMHgzMiwgMHhDNCwgMHg5RiwgMHhDRCwgMHgxMCwgMHhGMiwgMHhBNSwgMHgwRiwgMHhERCwgMHg1NCwKKyAgICAweDk4LCAweEVBLCAweDU3LCAweDdDLCAweDQzLCAweDM5LCAweEFBLCAweDk1LCAweDgzLCAweDdFLCAweDFCLCAweDM0LCAweDNBLCAweDI5LCAweEY3LCAweDA3LAorICAgIDB4QzAsIDB4OEIsIDB4QUYsIDB4NDgsIDB4NzEsIDB4RUQsIDB4RUEsIDB4N0YsIDB4NzMsIDB4RDYsIDB4MEUsIDB4NkQsIDB4OTYsIDB4QzMsIDB4MEYsIDB4OUYsCisgICAgMHhBOSwgMHg1QywgMHg5OCwgMHgwMCwgMHgxNiwgMHhDNCwgMHhDNiwgMHg3MiwgMHhFRiwgMHgwMCwgMHgyNywgMHgwMSwgMHgzMSwgMHg3NSwgMHgxOCwgMHgyOCwKKyAgICAweDc1LCAweEU1LCAweENCLCAweDRELCAweDlFLCAweDI1LCAweENELCAweDcyLCAweEQ4LCAweEFBLCAweDFCLCAweDBCLCAweDM1LCAweDZBLCAweERDLCAweDBBLAorICAgIDB4MTEsIDB4ODUsIDB4MDEsIDB4N0IsIDB4OTQsIDB4MjksIDB4QTgsIDB4NDEsIDB4MjksIDB4RDQsIDB4Q0UsIDB4QkUsIDB4N0IsIDB4MTQsIDB4NDUsIDB4NTIsCisgICAgMHg1NiwgMHhFQiwgMHg0RSwgMHg0NSwgMHgxNCwgMHg2MiwgMHg4NywgMHhBNCwgMHgyOSwgMHgyNCwgMHhGNiwgMHhGOCwgMHg3MCwgMHg3NywgMHgyOSwgMHg2QSwKKyAgICAweEI2LCAweDU2LCAweDQ2LCAweDIwLCAweDVBLCAweDlDLCAweDQ1LCAweDNBLCAweDU0LCAweDZCLCAweEY4LCAweDJCLCAweDRBLCAweENBLCAweDhFLCAweEJCLAorICAgIDB4OTcsIDB4MTUsIDB4QUMsIDB4NkIsIDB4NjAsIDB4MzQsIDB4NzMsIDB4NkYsIDB4MjYsIDB4RUEsIDB4MUYsIDB4MUYsIDB4OEMsIDB4MTAsIDB4NDAsIDB4NDYsCisgICAgMHgxMCwgMHgwOSwgMHgxNiwgMHgzNywgMHgyNiwgMHg4NiwgMHhCMSwgMHhDRiwgMHgyOSwgMHgyOCwgMHg5RiwgMHgxNCwgMHg3NSwgMHg2QywgMHhFRSwgMHg3RiwKKyAgICAweDkyLCAweEZCLCAweDk1LCAweEQ2LCAweEZBLCAweDhGLCAweDEzLCAweDc1LCAweDM3LCAweEE1LCAweENDLCAweDhBLCAweDhFLCAweEQwLCAweDUwLCAweDlELAorICAgIDB4ODAsIDB4M0IsIDB4RDgsIDB4MUUsIDB4NUEsIDB4QTQsIDB4NjYsIDB4QTksIDB4NUQsIDB4QzcsIDB4QjIsIDB4MjUsIDB4M0QsIDB4Q0IsIDB4MzYsIDB4ODIsCisgICAgMHgzNiwgMHg5RiwgMHhDRCwgMHgxMSwgMHgwNywgMHg2QiwgMHg5NCwgMHhFRCwgMHgxRCwgMHhCMiwgMHg1QSwgMHhEOCwgMHgzOSwgMHhFRSwgMHhDOSwgMHg1RiwKKyAgICAweDVBLCAweERDLCAweDJELCAweERFLCAweDc1LCAweDlELCAweDNDLCAweDZFLCAweEEwLCAweEQzLCAweDYxLCAweDk2LCAweDA4LCAweDQ0LCAweDM3LCAweDMxLAorICAgIDB4NjIsIDB4REIsIDB4QzEsIDB4RUMsIDB4NzIsIDB4N0EsIDB4REYsIDB4MjksIDB4RDcsIDB4OTQsIDB4MTAsIDB4NDIsIDB4QTAsIDB4NzcsIDB4QzQsIDB4M0UsCisgICAgMHhBMiwgMHg2RCwgMHg0RCwgMHgwRCwgMHgzRiwgMHhGQSwgMHg5QSwgMHgzQiwgMHgzRCwgMHg3RCwgMHg4NiwgMHhEMSwgMHg5MSwgMHg5NiwgMHgzRiwgMHg2QywKKyAgICAweDlDLCAweEVGLCAweDgzLCAweEU3LCAweDMxLCAweEM5LCAweEVCLCAweDdCLCAweERBLCAweDgyLCAweDdBLCAweEFBLCAweEY5LCAweEQ3LCAweEIyLCAweDU1LAorICAgIDB4MzksIDB4RTgsIDB4RjQsIDB4RUMsIDB4MDYsIDB4RTgsIDB4MUMsIDB4MjIsIDB4NjgsIDB4MTgsIDB4MTAsIDB4OEYsIDB4RjksIDB4MTMsIDB4MEMsIDB4MEUsCisgICAgMHhFQywgMHgyNiwgMHhEQiwgMHgwRCwgMHgwMywgMHhFMSwgMHgyNCwgMHhDMSwgMHg5NywgMHhEQiwgMHgxMywgMHhBMSwgMHgyQywgMHhGQywgMHg2MSwgMHgzMiwKKyAgICAweEM2LCAweDFCLCAweEZCLCAweDRGLCAweDdDLCAweDE4LCAweEQ0LCAweDg1LCAweDFFLCAweDE0LCAweEVFLCAweDQ1LCAweDFBLCAweDBDLCAweEEzLCAweEQwLAorICAgIDB4MkEsIDB4OEYsIDB4NDQsIDB4MTAsIDB4N0YsIDB4MzIsIDB4QzMsIDB4NkUsIDB4RjksIDB4NTcsIDB4NkQsIDB4NTksIDB4NDksIDB4QUEsIDB4RDAsIDB4NUQsCisgICAgMHhCQSwgMHhCNywgMHhBNSwgMHgyOCwgMHhEMywgMHhFOSwgMHgxRSwgMHg5OSwgMHhCMSwgMHg0NiwgMHg0QiwgMHhGNSwgMHg4RCwgMHg0QSwgMHhFMSwgMHgxMSwKKyAgICAweEFGLCAweDlGLCAweEJFLCAweDNBLCAweDIxLCAweEUxLCAweDNGLCAweDhGLCAweDgzLCAweEYwLCAweDJGLCAweDMwLCAweEI2LCAweDU5LCAweDRGLCAweDAzLAorICAgIDB4MTcsIDB4REEsIDB4MzIsIDB4N0YsIDB4MDEsIDB4MEYsIDB4NTgsIDB4QjEsIDB4QUMsIDB4MDQsIDB4QTUsIDB4QzMsIDB4NEQsIDB4NUMsIDB4MTMsIDB4RkQsCisgICAgMHgxNCwgMHg1OCwgMHg4RCwgMHhFRSwgMHg3OCwgMHg4MiwgMHhCRCwgMHhENCwgMHhGRSwgMHhBMywgMHg3RiwgMHhEQywgMHg3OCwgMHg0NCwgMHgwNywgMHgzQSwKKyAgICAweDRBLCAweDY0LCAweDMxLCAweDFBLCAweDdGLCAweEJELCAweDVFLCAweDdELCAweDIwLCAweDk5LCAweDNCLCAweEUzLCAweDJCLCAweDk5LCAweDg5LCAweERBLAorICAgIDB4RUEsIDB4NzMsIDB4MTMsIDB4NUUsIDB4NTMsIDB4NUMsIDB4OTMsIDB4OTMsIDB4RTksIDB4OEIsIDB4RUEsIDB4N0UsIDB4QjUsIDB4QUEsIDB4REQsIDB4QTAsCisgICAgMHg2MywgMHgwQywgMHhCMSwgMHgyRiwgMHgyQywgMHhENywgMHhBQSwgMHgxMywgMHg1MSwgMHg1RCwgMHhBOCwgMHg1QywgMHg5NywgMHg5QSwgMHg5QiwgMHhGMiwKKyAgICAweDcwLCAweDBELCAweEE2LCAweDFDLCAweDZFLCAweEQxLCAweEE1LCAweEJBLCAweEI4LCAweDYyLCAweDc4LCAweDAwLCAweEIxLCAweEU1LCAweDVELCAweEI1LAorICAgIDB4OUYsIDB4RDAsIDB4MEMsIDB4MDYsIDB4NTEsIDB4OUUsIDB4NDEsIDB4RjAsIDB4RTMsIDB4QkEsIDB4NDYsIDB4MzksIDB4ODMsIDB4MzksIDB4QUYsIDB4N0EsCisgICAgMHhERiwgMHg1QywgMHgwRSwgMHhEQiwgMHhFNCwgMHhFQiwgMHg0QywgMHgwRSwgMHg5OSwgMHhDMywgMHhENywgMHg5NSwgMHgzMSwgMHhCRiwgMHhEQiwgMHgyRCwKKyAgICAweEIxLCAweDIxLCAweEE4LCAweERELCAweEI2LCAweEI4LCAweEFFLCAweDA4LCAweDBBLCAweDcxLCAweDIzLCAweEY5LCAweEUxLCAweDU3LCAweEFELCAweEI4LAorICAgIDB4MTksIDB4QkEsIDB4MzksIDB4QjYsIDB4NjUsIDB4QUMsIDB4QzMsIDB4NDIsIDB4NkYsIDB4QjksIDB4NEEsIDB4RDksIDB4QjUsIDB4QjksIDB4QTksIDB4MUUsCisgICAgMHhFNSwgMHhBNywgMHgzRiwgMHhFNiwgMHg0MCwgMHg2MywgMHgwMiwgMHgyRiwgMHhGMiwgMHgwMSwgMHgwRCwgMHgwNywgMHhBMSwgMHgyRiwgMHhDMywgMHg2NSwKKyAgICAweEMwLCAweDU4LCAweDJELCAweDIxLCAweEJDLCAweDRDLCAweDZFLCAweDUxLCAweEY0LCAweEIwLCAweEY0LCAweDg3LCAweDc5LCAweEE1LCAweDc0LCAweDA4LAorICAgIDB4RjcsIDB4RkIsIDB4RjYsIDB4RjksIDB4MTMsIDB4NDksIDB4MTEsIDB4QkMsIDB4MzYsIDB4MTQsIDB4ODcsIDB4MjAsIDB4MDYsIDB4NzQsIDB4QkEsIDB4MUUsCisgICAgMHhDRiwgMHg5MiwgMHhCQywgMHhDMywgMHgyNiwgMHg2RCwgMHhEOSwgMHgwNSwgMHhDNiwgMHgwOCwgMHg5MSwgMHg5NywgMHg4RiwgMHgwRiwgMHhDMSwgMHg5QSwKKyAgICAweDNBLCAweDkxLCAweDlDLCAweDVGLCAweEJFLCAweDUxLCAweDlELCAweDAxLCAweEE0LCAweEYzLCAweEFBLCAweDI2LCAweDVFLCAweDI1LCAweERFLCAweEYyLAorICAgIDB4MDEsIDB4NkIsIDB4ODQsIDB4ODUsIDB4NDYsIDB4QkYsIDB4OEMsIDB4Q0IsIDB4QkMsIDB4MjQsIDB4MzksIDB4ODgsIDB4QjcsIDB4MkUsIDB4NUIsIDB4RDQsCisgICAgMHgzNiwgMHgxMiwgMHhENCwgMHhGRCwgMHhBRSwgMHg4MSwgMHhBMywgMHg5RSwgMHhENiwgMHhFOCwgMHhBMiwgMHg0MCwgMHhCRCwgMHgyMiwgMHhCQSwgMHgwRCwKKyAgICAweDUxLCAweDhDLCAweDY3LCAweEJDLCAweDU0LCAweDEzLCAweDNDLCAweDFELCAweDA1LCAweDIwLCAweEE4LCAweDlELCAweDYxLCAweDBBLCAweDc0LCAweDczLAorICAgIDB4OTksIDB4NUUsIDB4QkQsIDB4QjMsIDB4MTAsIDB4RDksIDB4QzcsIDB4N0MsIDB4NTgsIDB4MjQsIDB4RjUsIDB4OUYsIDB4RkEsIDB4MTMsIDB4MzUsIDB4ODMsCisgICAgMHgxQSwgMHgxNCwgMHgxMywgMHg3QiwgMHgzQiwgMHhCNiwgMHhGNSwgMHgxNiwgMHhCMiwgMHg3NSwgMHhDMiwgMHg5RSwgMHg0MSwgMHg4MywgMHhDNSwgMHg2OCwKKyAgICAweDhDLCAweERGLCAweEZDLCAweEMxLCAweDJFLCAweEFDLCAweEZDLCAweDA4LCAweDFDLCAweEU1LCAweDJELCAweDE1LCAweDBELCAweEI4LCAweEUyLCAweDNGLAorICAgIDB4RDcsIDB4QTEsIDB4NDYsIDB4OUUsIDB4Q0IsIDB4NDYsIDB4NEEsIDB4NEEsIDB4NzEsIDB4ODgsIDB4NEUsIDB4NjEsIDB4MEYsIDB4ODIsIDB4MzQsIDB4RjAsCisgICAgMHhDNSwgMHhFQSwgMHhEMCwgMHgwOCwgMHg5QSwgMHhDRiwgMHhBRSwgMHg5MywgMHhFQiwgMHg2OSwgMHgwNiwgMHgyRCwgMHg5NiwgMHgxRiwgMHg5NiwgMHg3MCwKKyAgICAweERFLCAweDFBLCAweDg3LCAweEEwLCAweDI0LCAweDdFLCAweDFGLCAweDhFLCAweDlDLCAweERCLCAweDc3LCAweEMxLCAweDk1LCAweERDLCAweERFLCAweDlFLAorICAgIDB4RTcsIDB4RUUsIDB4ODUsIDB4RDksIDB4QjQsIDB4RUMsIDB4RDUsIDB4MkEsIDB4REYsIDB4RjcsIDB4Q0QsIDB4QTYsIDB4MkIsIDB4ODEsIDB4RkEsIDB4RTYsCisgICAgMHgxMCwgMHhCMSwgMHgzQiwgMHgwMywgMHgyMywgMHhFMCwgMHhCRCwgMHhBMSwgMHhBNCwgMHg3RiwgMHg4OSwgMHg2OSwgMHg1NSwgMHg3OCwgMHgxNCwgMHhCMSwKKyAgICAweDg2LCAweDA3LCAweDZFLCAweEIwLCAweEIyLCAweEIzLCAweDk2LCAweEZELCAweEEwLCAweDAzLCAweDAwLCAweEMxLCAweEY1LCAweDYwLCAweEFBLCAweDYyLAorICAgIDB4RDQsIDB4QjIsIDB4QzcsIDB4QTMsIDB4OUUsIDB4MjUsIDB4RjUsIDB4RjUsIDB4QjMsIDB4ODUsIDB4MUQsIDB4RDIsIDB4NDcsIDB4REIsIDB4RjMsIDB4MUUsCisgICAgMHg3MCwgMHg4NSwgMHhBQywgMHgzMCwgMHgwMiwgMHg4NywgMHhGNCwgMHhFQiwgMHhCOCwgMHg5OSwgMHhGQiwgMHg2NSwgMHhBQSwgMHg1NiwgMHgzRiwgMHhEQywKKyAgICAweDVDLCAweDUyLCAweDJDLCAweDJBLCAweERFLCAweDIzLCAweEVBLCAweEU3LCAweEQwLCAweDIwLCAweDlDLCAweEYzLCAweDlBLCAweEE5LCAweDE2LCAweDRDLAorICAgIDB4Q0UsIDB4MjksIDB4ODcsIDB4MDgsIDB4NTIsIDB4QTQsIDB4NUQsIDB4M0EsIDB4NEMsIDB4QzYsIDB4MkMsIDB4MTMsIDB4MTYsIDB4OTQsIDB4M0UsIDB4MTQsCisgICAgMHg1QiwgMHg1MCwgMHg5MiwgMHgzNCwgMHhDMiwgMHg2NCwgMHg3QSwgMHg5NSwgMHg4OSwgMHg1QywgMHhDQSwgMHg4MiwgMHhGOCwgMHg1OSwgMHg3QiwgMHgyNywKKyAgICAweEFBLCAweDBGLCAweDY0LCAweDQ1LCAweEJCLCAweEZBLCAweDYxLCAweDMwLCAweDMwLCAweDU3LCAweDZFLCAweDNBLCAweDY5LCAweDFBLCAweDhGLCAweDNFLAorICAgIDB4QjcsIDB4NjMsIDB4Q0IsIDB4ODYsIDB4RjYsIDB4RTIsIDB4QzYsIDB4REYsIDB4RkIsIDB4RTUsIDB4QjcsIDB4RUEsIDB4M0IsIDB4RjUsIDB4MjgsIDB4MzEsCisgICAgMHg2QywgMHg0NCwgMHg1NCwgMHhEMywgMHhFQywgMHgzNywgMHg3NywgMHhCOSwgMHhGNywgMHgwOCwgMHhGMSwgMHgwNSwgMHhEQSwgMHgxNiwgMHhCOCwgMHg5NSwKKyAgICAweDY5LCAweDVFLCAweDg0LCAweDQ5LCAweDMxLCAweEM1LCAweEVDLCAweDA2LCAweDMwLCAweDgyLCAweDUyLCAweEMyLCAweDQ2LCAweEIyLCAweEUzLCAweDQ3LAorICAgIDB4RTYsIDB4NjAsIDB4MTIsIDB4MUMsIDB4OTYsIDB4REMsIDB4QkIsIDB4MDgsIDB4NjAsIDB4NEEsIDB4QzMsIDB4MDEsIDB4NEQsIDB4QkMsIDB4MUEsIDB4NEUsCisgICAgMHhGOCwgMHgzQywgMHgwNiwgMHg2NiwgMHhGMCwgMHg3OCwgMHhCOSwgMHg2RCwgMHgwNCwgMHg2NiwgMHg2MCwgMHhERiwgMHg3RSwgMHg1RiwgMHgyQywgMHgwNywKKyAgICAweDJBLCAweDVBLCAweDRGLCAweDEzLCAweDU5LCAweDQwLCAweDI2LCAweDZGLCAweEM2LCAweDRBLCAweDM3LCAweEU5LCAweDVFLCAweDU4LCAweDQxLCAweEVGLAorICAgIDB4Q0QsIDB4Q0UsIDB4ODksIDB4QUQsIDB4QUIsIDB4NzIsIDB4RUYsIDB4MTYsIDB4OEIsIDB4N0QsIDB4NjYsIDB4MUEsIDB4OTgsIDB4RkMsIDB4OEIsIDB4QzIsCisgICAgMHhGNywgMHhGRCwgMHhDMywgMHhGOSwgMHg1MSwgMHhDRiwgMHgyNiwgMHgwNiwgMHhDNiwgMHgyOCwgMHgyQywgMHgyRSwgMHg4RCwgMHg1MywgMHhCRSwgMHhEOCwKKyAgICAweEE3LCAweDI2LCAweEMzLCAweEQ2LCAweEQ4LCAweDA1LCAweENELCAweDE5LCAweENDLCAweEEzLCAweDIzLCAweDE0LCAweDc0LCAweEMyLCAweDk3LCAweDAxLAorICAgIDB4MUMsIDB4MEIsIDB4OTYsIDB4MjIsIDB4RTIsIDB4OTQsIDB4MjMsIDB4RDgsIDB4QzIsIDB4MUIsIDB4RjcsIDB4MDMsIDB4QjUsIDB4MUUsIDB4MzUsIDB4MkMsCisgICAgMHg5QSwgMHg5QiwgMHhDQywgMHg3QSwgMHgxRiwgMHgwNCwgMHg1MiwgMHgyNiwgMHg2OSwgMHhENywgMHg2QSwgMHgyMSwgMHhFQSwgMHhBOCwgMHgzQSwgMHg2MiwKKyAgICAweDUxLCAweEEyLCAweDAyLCAweEIyLCAweDM3LCAweDEzLCAweEMwLCAweDU3LCAweENDLCAweDFELCAweEM0LCAweEZGLCAweEU2LCAweDkwLCAweEMxLCAweDg2LAorICAgIDB4MjAsIDB4NUIsIDB4MDMsIDB4RUQsIDB4NkYsIDB4MzIsIDB4NzcsIDB4OUEsIDB4ODYsIDB4QjEsIDB4MUMsIDB4ODksIDB4RkIsIDB4OUIsIDB4MkIsIDB4RjQsCisgICAgMHg4NiwgMHhFOSwgMHhCOSwgMHhGMCwgMHgzOSwgMHhGOSwgMHg4NSwgMHg1MSwgMHgwQywgMHg2MiwgMHg5NSwgMHgwMSwgMHgyOCwgMHhENywgMHg2RiwgMHhCNywKKyAgICAweEJGLCAweEM3LCAweDJGLCAweDJGLCAweEY4LCAweEFDLCAweDMxLCAweEQxLCAweEY4LCAweDVELCAweDM3LCAweERDLCAweEJFLCAweDk4LCAweDJELCAweDc2LAorICAgIDB4QzQsIDB4OUMsIDB4MjAsIDB4REEsIDB4QjYsIDB4RjMsIDB4QzMsIDB4QzAsIDB4MzEsIDB4MTQsIDB4QkYsIDB4MkIsIDB4ODcsIDB4MDAsIDB4NjYsIDB4NEEsCisgICAgMHhFMiwgMHg1MCwgMHg0OSwgMHg4NCwgMHgxRSwgMHg5NywgMHg4NSwgMHhCOCwgMHhFRCwgMHgzMywgMHgyQiwgMHhGOCwgMHg1OSwgMHhDOSwgMHgwMywgMHgzRiwKKyAgICAweDVBLCAweDI4LCAweEE3LCAweEI4LCAweEZCLCAweDlGLCAweDJFLCAweDQ0LCAweEZBLCAweDJFLCAweDZELCAweEZGLCAweDQwLCAweDlFLCAweDIxLCAweEU0LAorICAgIDB4MDUsIDB4QjYsIDB4MzEsIDB4NzYsIDB4QUUsIDB4REIsIDB4NzYsIDB4OTYsIDB4ODgsIDB4NEQsIDB4OTYsIDB4Q0UsIDB4MUUsIDB4RDQsIDB4MjIsIDB4OTEsCisgICAgMHhFNCwgMHhBOCwgMHg5MSwgMHg1QiwgMHhFRCwgMHhBNCwgMHgwMywgMHgxMCwgMHgwNiwgMHg4QywgMHgyNCwgMHhFNCwgMHhDNCwgMHg4MCwgMHgxNiwgMHg0RCwKKyAgICAweDUwLCAweEFGLCAweEMxLCAweDY0LCAweDRBLCAweEE0LCAweEI5LCAweDc5LCAweEUzLCAweDM3LCAweDM4LCAweDdELCAweDhBLCAweDg1LCAweDkwLCAweEI3LAorICAgIDB4MUMsIDB4N0QsIDB4MjQsIDB4MjYsIDB4N0YsIDB4NUYsIDB4MEMsIDB4OUQsIDB4QjMsIDB4MkQsIDB4NEQsIDB4QjAsIDB4RUUsIDB4QUMsIDB4OTUsIDB4OEYsCisgICAgMHgyRSwgMHg1QSwgMHhBMiwgMHg3OCwgMHg3RCwgMHgwRCwgMHhEQSwgMHg5OSwgMHg0NywgMHg5MywgMHgxMywgMHhGOSwgMHgwQywgMHhGRiwgMHg1RSwgMHg3MSwKKyAgICAweDk5LCAweDhELCAweEUzLCAweDIxLCAweDAzLCAweDQ0LCAweEY3LCAweDRELCAweDYxLCAweEQwLCAweDFELCAweDQ3LCAweENCLCAweDNELCAweDU3LCAweDRELAorICAgIDB4NDMsIDB4M0MsIDB4MDEsIDB4QkIsIDB4MzMsIDB4QzIsIDB4MDQsIDB4OTEsIDB4NjYsIDB4QzksIDB4QTEsIDB4RjIsIDB4MTgsIDB4NDcsIDB4MEQsIDB4NjAsCisgICAgMHg2MSwgMHg5RiwgMHhBNywgMHgyNywgMHg5OSwgMHhCNSwgMHgyNywgMHg4OCwgMHg2MCwgMHgyQiwgMHg4RCwgMHgzQywgMHg4RiwgMHhENSwgMHg1MywgMHhERCwKKyAgICAweDY0LCAweEM1LCAweDE0LCAweEIzLCAweDc3LCAweDVDLCAweERFLCAweEE5LCAweDkxLCAweDJFLCAweDIzLCAweDgzLCAweDI0LCAweEUzLCAweEU2LCAweDM4LAorICAgIDB4QzUsIDB4Q0IsIDB4OUIsIDB4NEUsIDB4QzQsIDB4RUUsIDB4M0QsIDB4N0QsIDB4NTgsIDB4NkMsIDB4NjAsIDB4MTYsIDB4OTcsIDB4QkMsIDB4RjYsIDB4NDcsCisgICAgMHg3NywgMHg4MywgMHhDRSwgMHhGMSwgMHhBOSwgMHg4RiwgMHhEQSwgMHhGRiwgMHhCMywgMHhFNCwgMHg1MiwgMHg1MCwgMHg2NywgMHhCQSwgMHgxMywgMHgyQSwKKyAgICAweEFCLCAweEI0LCAweDMyLCAweEMwLCAweDRDLCAweEFFLCAweEJDLCAweDkyLCAweDNDLCAweDY1LCAweDk3LCAweEE0LCAweEQ4LCAweDEwLCAweERGLCAweDYwLAorICAgIDB4OTUsIDB4Q0EsIDB4NzQsIDB4MTcsIDB4M0YsIDB4OEEsIDB4QzUsIDB4MkEsIDB4OUYsIDB4QUYsIDB4REIsIDB4QTQsIDB4M0MsIDB4NzcsIDB4MDEsIDB4QTYsCisgICAgMHgwMiwgMHg2NiwgMHgwQywgMHgxNSwgMHgwRiwgMHgwMCwgMHg5MCwgMHhCRCwgMHg5QiwgMHg3NywgMHg1MywgMHhGRCwgMHg5MywgMHg0NCwgMHg2RiwgMHg4NiwKKyAgICAweDUwLCAweDU0LCAweDExLCAweDQwLCAweEJFLCAweDcyLCAweEQyLCAweEU1LCAweDRCLCAweEE0LCAweDEzLCAweDg4LCAweDBELCAweEFBLCAweDg3LCAweEZCLAorICAgIDB4RUQsIDB4NkUsIDB4NjYsIDB4NTksIDB4RkIsIDB4QjgsIDB4QTAsIDB4RkUsIDB4RDEsIDB4MDgsIDB4MjcsIDB4MDcsIDB4QzQsIDB4MzEsIDB4MzEsIDB4OEMsCisgICAgMHg2RiwgMHhFMiwgMHgwQiwgMHgyMywgMHg5NSwgMHg5NiwgMHhGNiwgMHgzQiwgMHhEOSwgMHhENCwgMHhCNiwgMHg1RCwgMHg4NCwgMHhDMiwgMHhDNCwgMHgyMywKKyAgICAweEU5LCAweEYyLCAweEI2LCAweDk2LCAweDlFLCAweEQwLCAweDRBLCAweEUyLCAweDJELCAweEFCLCAweEJCLCAweEIwLCAweEFBLCAweEVDLCAweEZFLCAweDY3LAorICAgIDB4M0EsIDB4RjksIDB4MUEsIDB4QTgsIDB4MzAsIDB4REEsIDB4OUEsIDB4MTcsIDB4RDUsIDB4NDYsIDB4Q0MsIDB4QkEsIDB4RjcsIDB4REEsIDB4OEUsIDB4NTQsCisgICAgMHg0OSwgMHg1OCwgMHhCRSwgMHg5QywgMHgzQiwgMHg3RSwgMHg0RSwgMHhFNCwgMHgwNiwgMHg4RSwgMHgzMiwgMHhCNCwgMHg3QSwgMHhFQSwgMHhGOCwgMHg0MCwKKyAgICAweDc4LCAweEQ0LCAweDYyLCAweEJELCAweEFDLCAweEE3LCAweDlGLCAweDBCLCAweDI3LCAweEM0LCAweDkwLCAweEExLCAweERGLCAweDE1LCAweDY0LCAweEJBLAorICAgIDB4RUMsIDB4Q0IsIDB4NjksIDB4RjcsIDB4QkYsIDB4RTYsIDB4MEQsIDB4ODksIDB4NkUsIDB4NUQsIDB4NjIsIDB4NUQsIDB4RUEsIDB4MDQsIDB4MzcsIDB4MUIsCisgICAgMHg0MCwgMHgwNCwgMHgzNywgMHgzQiwgMHhEMCwgMHhDNiwgMHhFMCwgMHhGQywgMHg2MywgMHhBNiwgMHhBMSwgMHhDOCwgMHhBQiwgMHg0NSwgMHhBNCwgMHhGRCwKKyAgICAweDA1LCAweEZBLCAweDU3LCAweDAxLCAweDVGLCAweDM0LCAweDc2LCAweDBCLCAweENGLCAweEIwLCAweEQzLCAweEZELCAweEVELCAweDY2LCAweEFDLCAweEZCLAorICAgIDB4NjMsIDB4ODksIDB4NTMsIDB4NDYsIDB4NjEsIDB4RkYsIDB4MjIsIDB4NjQsIDB4RUIsIDB4MjAsIDB4NjAsIDB4MDIsIDB4MEIsIDB4NzgsIDB4QTQsIDB4RUMsCisgICAgMHhGOSwgMHgxRCwgMHgzNCwgMHhBQiwgMHg5OCwgMHgzMywgMHhCNywgMHg3NiwgMHg0RCwgMHhEQSwgMHg0QywgMHgzMywgMHg1NywgMHhENiwgMHgyMywgMHg4NCwKKyAgICAweDI1LCAweDc2LCAweDRBLCAweDBCLCAweERELCAweEM1LCAweENELCAweDhCLCAweEZGLCAweEI4LCAweDIyLCAweDM3LCAweDE2LCAweEFCLCAweENFLCAweERELAorICAgIDB4OTIsIDB4REIsIDB4RDEsIDB4MTIsIDB4QjMsIDB4NTIsIDB4RDAsIDB4RTUsIDB4NEUsIDB4QkUsIDB4NjksIDB4QTgsIDB4REYsIDB4MkYsIDB4QUYsIDB4MjIsCisgICAgMHgyOSwgMHhEMCwgMHgyOCwgMHhEMywgMHg4MCwgMHhBMSwgMHgzOSwgMHg1NywgMHg4OCwgMHgxNywgMHhCQSwgMHg2MywgMHg3NSwgMHhENywgMHhCOSwgMHgwNSwKKyAgICAweEJDLCAweDRFLCAweDYwLCAweDAyLCAweEFDLCAweDg0LCAweDk2LCAweEQ5LCAweDIzLCAweDFFLCAweEUzLCAweERBLCAweEQ2LCAweDc0LCAweEMyLCAweENELAorICAgIDB4QTQsIDB4MjIsIDB4NjUsIDB4ODIsIDB4NTAsIDB4MTAsIDB4RkUsIDB4NzYsIDB4RjUsIDB4RTcsIDB4NjEsIDB4MEQsIDB4ODYsIDB4RDksIDB4OEQsIDB4NTYsCisgICAgMHgxMCwgMHg0MywgMHg5QywgMHhGRSwgMHgwNSwgMHgzQSwgMHg1MSwgMHg5MywgMHg4MSwgMHg3NCwgMHhEMiwgMHgxMSwgMHgxMCwgMHg4MiwgMHhGQywgMHg0QywKKyAgICAweEExLCAweDgzLCAweDY0LCAweDIxLCAweDRCLCAweEVCLCAweEE5LCAweDhFLCAweDlBLCAweEI4LCAweEFCLCAweDk1LCAweDE1LCAweDk2LCAweDlELCAweDQ5LAorICAgIDB4OUQsIDB4RkUsIDB4RUMsIDB4QzgsIDB4QzMsIDB4NkIsIDB4QkIsIDB4NEMsIDB4OEUsIDB4NzUsIDB4QkIsIDB4OEMsIDB4NDIsIDB4NzYsIDB4MTgsIDB4OEUsCisgICAgMHg2RiwgMHhFMCwgMHhENiwgMHg3QywgMHgxOSwgMHhEQSwgMHgwOCwgMHhENywgMHhFMSwgMHg3MywgMHg2QywgMHgxOCwgMHgxQiwgMHg5MCwgMHhDRiwgMHg2RSwKKyAgICAweDE4LCAweEU0LCAweDYxLCAweEM3LCAweDFCLCAweEUzLCAweDkzLCAweDIyLCAweDgwLCAweEIwLCAweEU2LCAweDY2LCAweEEwLCAweEY3LCAweDA2LCAweEE5LAorICAgIDB4MUUsIDB4RDgsIDB4NjIsIDB4QzUsIDB4RTMsIDB4NTIsIDB4NTksIDB4RjEsIDB4NzEsIDB4MkEsIDB4M0MsIDB4QzAsIDB4QkMsIDB4MzcsIDB4RjQsIDB4NTEsCisgICAgMHg4QywgMHg4MSwgMHhCNCwgMHg2NSwgMHg5NSwgMHg0QSwgMHg5RCwgMHhCNSwgMHhERiwgMHg1OSwgMHgyQSwgMHgwNiwgMHhBNiwgMHhCMSwgMHgwNSwgMHhDRSwKKyAgICAweEYzLCAweDI0LCAweDdBLCAweDU5LCAweDM3LCAweDc2LCAweDc5LCAweEFCLCAweDg0LCAweDIzLCAweEY5LCAweDVDLCAweEZELCAweDQ4LCAweEEzLCAweEVELAorICAgIDB4NzUsIDB4QjgsIDB4NTgsIDB4MkYsIDB4OEEsIDB4RTcsIDB4QUQsIDB4NzEsIDB4OTQsIDB4NjIsIDB4MjcsIDB4MUMsIDB4QUMsIDB4NUYsIDB4RTMsIDB4OTIsCisgICAgMHgxMiwgMHg2RiwgMHhBRSwgMHhBQywgMHgxMiwgMHhEQSwgMHhBOSwgMHgwMiwgMHg0NSwgMHhENywgMHg2MiwgMHg1MywgMHhFMCwgMHhCOCwgMHhCOSwgMHhBOCwKKyAgICAweDAyLCAweEQ3LCAweEVELCAweEE5LCAweDI2LCAweDhDLCAweDhGLCAweDgyLCAweDc4LCAweDkzLCAweDhELCAweDFFLCAweDhGLCAweDhELCAweEVDLCAweDg5LAorICAgIDB4QkEsIDB4MzcsIDB4NkEsIDB4MzUsIDB4MjEsIDB4NjEsIDB4RDksIDB4RTEsIDB4NTIsIDB4OTUsIDB4NDYsIDB4RDUsIDB4M0EsIDB4REYsIDB4OEIsIDB4QkQsCisgICAgMHg5RiwgMHgzNiwgMHg3MSwgMHg5NSwgMHgwOSwgMHgyOCwgMHg4OCwgMHhCMSwgMHhGMCwgMHg3MCwgMHhDMiwgMHgwMSwgMHhBMSwgMHg0RSwgMHgwQSwgMHhGOCwKKyAgICAweEYyLCAweDI1LCAweDFDLCAweDYwLCAweDNDLCAweEEzLCAweEEwLCAweEZCLCAweDVDLCAweDNFLCAweEY0LCAweDExLCAweENDLCAweDU0LCAweERBLCAweEQ3LAorICAgIDB4ODAsIDB4ODAsIDB4Q0MsIDB4QzIsIDB4QjAsIDB4ODEsIDB4REYsIDB4QzgsIDB4MUMsIDB4OTYsIDB4MDEsIDB4OTUsIDB4MTcsIDB4NEUsIDB4MDEsIDB4N0UsCisgICAgMHg3NiwgMHhGNCwgMHgxQywgMHg2MSwgMHg5OCwgMHg1OCwgMHgyQSwgMHhCRCwgMHgwNCwgMHg3RSwgMHgxNCwgMHg4QSwgMHg4OCwgMHg3NywgMHhCNiwgMHhBRCwKKyAgICAweDA1LCAweDU0LCAweEM3LCAweERBLCAweERELCAweDA4LCAweEJBLCAweDVDLCAweDlGLCAweEM4LCAweDNDLCAweDg3LCAweDI0LCAweEI1LCAweEEwLCAweDUzLAorICAgIDB4QzcsIDB4QkQsIDB4OTIsIDB4NzcsIDB4NUYsIDB4RTgsIDB4MjIsIDB4MzQsIDB4MjcsIDB4OTgsIDB4MTAsIDB4RDcsIDB4NEIsIDB4NzYsIDB4NzcsIDB4MjYsCisgICAgMHgyRCwgMHhEMCwgMHgyNCwgMHgwMywgMHg4RSwgMHgxNSwgMHg1NywgMHhGMiwgMHhDNiwgMHhFRCwgMHgzOSwgMHhCNywgMHhBRCwgMHhFOSwgMHhGQSwgMHgxNCwKKyAgICAweEVELCAweENGLCAweDUwLCAweDlFLCAweDhELCAweEFDLCAweDg3LCAweDRCLCAweDI2LCAweDI4LCAweEU0LCAweDAyLCAweEJFLCAweDI0LCAweDZBLCAweDM5LAorICAgIDB4MTcsIDB4QkUsIDB4OUIsIDB4NzksIDB4QjcsIDB4N0UsIDB4REYsIDB4QTYsIDB4NkUsIDB4N0IsIDB4NTIsIDB4RTYsIDB4MUMsIDB4RDIsIDB4QUQsIDB4Q0UsCisgICAgMHgzMCwgMHhCOSwgMHg5MSwgMHhFNywgMHg2NCwgMHg4QiwgMHhCRCwgMHgxRSwgMHg4RSwgMHg0MCwgMHhFMywgMHg2OSwgMHhBNiwgMHhENCwgMHhCMiwgMHgxOCwKKyAgICAweDQyLCAweDUzLCAweDZDLCAweEU2LCAweDFDLCAweDY5LCAweEY5LCAweDI2LCAweDg0LCAweDRFLCAweDZGLCAweDE2LCAweEQ1LCAweDM5LCAweEI1LCAweDRDLAorICAgIDB4ODYsIDB4QzksIDB4MEQsIDB4MDcsIDB4NkQsIDB4MjUsIDB4NjEsIDB4OUUsIDB4N0QsIDB4REEsIDB4QjcsIDB4MTMsIDB4NzMsIDB4N0IsIDB4QzYsIDB4RjksCisgICAgMHhGOCwgMHgyNSwgMHg5RCwgMHg0NCwgMHhBNiwgMHg3MCwgMHhGRSwgMHg1RiwgMHhDMCwgMHhGQSwgMHg2NCwgMHhFRSwgMHg4NSwgMHg2RCwgMHhBNSwgMHgwQywKKyAgICAweDI4LCAweDY4LCAweDhDLCAweDE3LCAweENFLCAweDNFLCAweDM4LCAweDg2LCAweDgzLCAweDI0LCAweDk3LCAweEEzLCAweEMyLCAweDU0LCAweEY5LCAweDNDLAorICAgIDB4RTcsIDB4M0EsIDB4RTgsIDB4QkMsIDB4NkQsIDB4QjgsIDB4MTcsIDB4N0QsIDB4RjAsIDB4NkMsIDB4RUYsIDB4RkIsIDB4QkIsIDB4QzksIDB4RDcsIDB4NUIsCisgICAgMHhCRiwgMHhCQiwgMHg5OSwgMHg4MywgMHg5NCwgMHgyOSwgMHhFOSwgMHg5RiwgMHhGQywgMHg2RCwgMHhENywgMHhBOCwgMHg2QywgMHg2MiwgMHg0MiwgMHgxOCwKKyAgICAweDk1LCAweDJELCAweDQ0LCAweEZGLCAweEI0LCAweDQ4LCAweDMwLCAweDg4LCAweDI5LCAweDI1LCAweDQxLCAweDgzLCAweDBGLCAweEFFLCAweDlELCAweEUzLAorICAgIDB4RUMsIDB4QjIsIDB4MTgsIDB4MEYsIDB4QkYsIDB4NEYsIDB4MTEsIDB4MUYsIDB4REEsIDB4RjIsIDB4RUMsIDB4NTQsIDB4RTMsIDB4Q0YsIDB4RTksIDB4QUQsCisgICAgMHg0QSwgMHg3RSwgMHhGMCwgMHhERSwgMHhENCwgMHg2NSwgMHgyMSwgMHg2RiwgMHgzQSwgMHhBOCwgMHgyRSwgMHhENSwgMHgwMiwgMHgzOSwgMHgxMSwgMHg0QywKKyAgICAweEE1LCAweDBBLCAweEYxLCAweEU0LCAweDA0LCAweEZFLCAweEM3LCAweEZBLCAweEUyLCAweDJCLCAweDc0LCAweEQzLCAweEJELCAweEIyLCAweDhELCAweEFCLAorICAgIDB4MTgsIDB4NkIsIDB4MjIsIDB4M0IsIDB4NzksIDB4NjcsIDB4ODgsIDB4MEYsIDB4MDUsIDB4QjIsIDB4QTUsIDB4MjYsIDB4OUIsIDB4NUEsIDB4NEUsIDB4OTYsCisgICAgMHhCRSwgMHhFNCwgMHg2MCwgMHg5RiwgMHhENSwgMHg4QywgMHgwRiwgMHg4MSwgMHgxMiwgMHhFRSwgMHg1RSwgMHhBQSwgMHg2MywgMHgxMCwgMHgwQywgMHg4NywKKyAgICAweDQyLCAweDczLCAweEE3LCAweDE2LCAweDk3LCAweDdELCAweDhBLCAweDNFLCAweDZDLCAweEFDLCAweEI4LCAweEFGLCAweDcwLCAweEMyLCAweENBLCAweDk1LAorICAgIDB4RDUsIDB4MDEsIDB4OUEsIDB4M0IsIDB4QjAsIDB4MzYsIDB4QkYsIDB4RUUsIDB4RjksIDB4N0QsIDB4MEIsIDB4QTEsIDB4MjEsIDB4QTYsIDB4NkQsIDB4ODUsCisgICAgMHgxMiwgMHhCMSwgMHhDRiwgMHgxNCwgMHhFOCwgMHhDQywgMHhGQywgMHhDMywgMHhBMiwgMHgxQSwgMHgwOSwgMHgyOCwgMHg0OCwgMHhFQiwgMHhBOCwgMHhCMiwKKyAgICAweDhCLCAweDRELCAweDE3LCAweENELCAweDVDLCAweDQ3LCAweDcwLCAweEI5LCAweDgyLCAweEIwLCAweEZGLCAweEVBLCAweEU4LCAweDNGLCAweDY0LCAweERCLAorICAgIDB4OUEsIDB4MEUsIDB4RkMsIDB4RUQsIDB4MUQsIDB4RDIsIDB4REUsIDB4MDMsIDB4OTIsIDB4OTEsIDB4MTcsIDB4RjEsIDB4NkYsIDB4MzgsIDB4MTQsIDB4RUMsCisgICAgMHg3OSwgMHgxNCwgMHhDRiwgMHhBMCwgMHgyQiwgMHg2MywgMHg2NSwgMHg4NCwgMHgyOCwgMHhEMywgMHhCOCwgMHg3NywgMHg0QywgMHgwQiwgMHg1NSwgMHg0RCwKKyAgICAweEY1LCAweDg5LCAweEVGLCAweEU3LCAweDQxLCAweEMxLCAweDVGLCAweDE4LCAweEFFLCAweDA2LCAweDdGLCAweEE5LCAweDM3LCAweDg0LCAweDM0LCAweDZGLAorICAgIDB4N0MsIDB4QzMsIDB4OUIsIDB4OTYsIDB4NjgsIDB4ODgsIDB4OTEsIDB4OTksIDB4MzUsIDB4MkIsIDB4RkYsIDB4NjIsIDB4RDgsIDB4QzUsIDB4RTAsIDB4NEQsCisgICAgMHg0MCwgMHg3OSwgMHgxRCwgMHgxOCwgMHgzMCwgMHg1OCwgMHg0QiwgMHhGOSwgMHg0OCwgMHhBNywgMHgyNywgMHgwMiwgMHhGNSwgMHg2NywgMHhCMywgMHgxNywKKyAgICAweDRDLCAweDIyLCAweDQ2LCAweDJCLCAweDM5LCAweDIwLCAweDc5LCAweDIyLCAweEU5LCAweDI1LCAweDEzLCAweDFELCAweDI4LCAweDIwLCAweDNFLCAweERBLAorICAgIDB4NDksIDB4NTMsIDB4QTYsIDB4M0QsIDB4N0YsIDB4NzAsIDB4N0IsIDB4QTYsIDB4NzUsIDB4QTksIDB4NDUsIDB4RUIsIDB4M0IsIDB4OEYsIDB4RkUsIDB4MzYsCisgICAgMHhBRCwgMHhCQSwgMHhCRSwgMHg1QiwgMHg1QSwgMHg1QiwgMHg5RSwgMHgyQSwgMHhFQSwgMHgyOCwgMHhGRSwgMHhENSwgMHgyRCwgMHg0QSwgMHg4OSwgMHg3QiwKKyAgICAweDZDLCAweEJFLCAweEY2LCAweEVGLCAweDE5LCAweENELCAweEExLCAweDkwLCAweEQxLCAweDQ0LCAweDEwLCAweDU4LCAweDU4LCAweEQ4LCAweDM5LCAweDUzLAorICAgIDB4MTMsIDB4QTksIDB4QkYsIDB4MDIsIDB4QkMsIDB4N0EsIDB4RDMsIDB4QkMsIDB4RDEsIDB4NjEsIDB4QTQsIDB4Q0MsIDB4NjQsIDB4MEMsIDB4RjMsIDB4NTEsCisgICAgMHg3QywgMHg4QiwgMHgwMywgMHg2NywgMHhCQywgMHhBNCwgMHgwQywgMHgyMCwgMHg1QywgMHhENSwgMHhGMSwgMHhDQSwgMHhGMywgMHg3QiwgMHg5MywgMHg1RCwKKyAgICAweDFELCAweDVCLCAweDJDLCAweEYyLCAweDkyLCAweDNELCAweEY1LCAweDBCLCAweDkwLCAweDRDLCAweDBDLCAweEI2LCAweDFDLCAweDRELCAweDhELCAweDE1LAorICAgIDB4OUMsIDB4OUIsIDB4NDYsIDB4REMsIDB4QzAsIDB4N0QsIDB4MDEsIDB4OTIsIDB4MkIsIDB4N0QsIDB4RUQsIDB4Q0EsIDB4MjcsIDB4RjMsIDB4QTIsIDB4MEYsCisgICAgMHg0NiwgMHg2MiwgMHgwOSwgMHhFQSwgMHg0QiwgMHhCMSwgMHg3MCwgMHg2QywgMHgyNCwgMHg5NiwgMHg5MywgMHhGQiwgMHhBNSwgMHg5NSwgMHhENiwgMHhGNiwKKyAgICAweERELCAweDA0LCAweDM5LCAweDA1LCAweDU4LCAweDVDLCAweEFDLCAweEUyLCAweDEyLCAweEFDLCAweDlDLCAweDdGLCAweDY5LCAweEJCLCAweDBELCAweEQxLAorICAgIDB4RDgsIDB4RTcsIDB4MjYsIDB4NkQsIDB4MzIsIDB4Q0YsIDB4QjcsIDB4MTIsIDB4QzUsIDB4MjEsIDB4NDksIDB4NjQsIDB4Q0MsIDB4MzEsIDB4NzIsIDB4MzMsCisgICAgMHg4RSwgMHgyRiwgMHhDNSwgMHg5RiwgMHg0QywgMHg5MiwgMHg1RSwgMHhEQiwgMHgwMywgMHg4RiwgMHgxRiwgMHgyQSwgMHhCQiwgMHhBNiwgMHg5QywgMHhBMCwKKyAgICAweDFGLCAweEMyLCAweDg5LCAweEIxLCAweEE2LCAweDcwLCAweDMyLCAweDE3LCAweDc0LCAweDM1LCAweDE0LCAweEUyLCAweEY4LCAweDgzLCAweDlELCAweDFFLAorICAgIDB4MDQsIDB4RDcsIDB4MDUsIDB4MzQsIDB4OEUsIDB4QUUsIDB4QTgsIDB4MEEsIDB4MzQsIDB4NzQsIDB4QTcsIDB4NDIsIDB4MUIsIDB4MUYsIDB4OTAsIDB4MzEsCisgICAgMHhBNywgMHg5QSwgMHhGQSwgMHhDNywgMHhEMywgMHg2QywgMHg0NSwgMHhCQSwgMHg0OSwgMHgzQywgMHg0RSwgMHhCQSwgMHg4NSwgMHhGQywgMHgwQiwgMHg4QSwKKyAgICAweDg5LCAweEVGLCAweDZBLCAweEQyLCAweDg4LCAweEYxLCAweEE5LCAweEE0LCAweDU1LCAweDU0LCAweEEwLCAweDM4LCAweDRELCAweEVDLCAweDFCLCAweDlELAorICAgIDB4NzAsIDB4N0YsIDB4OTgsIDB4OUUsIDB4RTAsIDB4N0UsIDB4QzAsIDB4NEYsIDB4RDMsIDB4QTUsIDB4QzUsIDB4NzgsIDB4ODYsIDB4REQsIDB4OTIsIDB4QjUsCisgICAgMHg4QSwgMHhBNSwgMHhGQiwgMHg3NSwgMHg2NCwgMHgwNiwgMHg2NiwgMHhBRiwgMHgwNiwgMHhGMiwgMHhFRiwgMHg3QywgMHg4MiwgMHg2MSwgMHhFMywgMHg4MSwKKyAgICAweDY0LCAweEJDLCAweDUzLCAweDAzLCAweDhCLCAweDYyLCAweDYxLCAweEU3LCAweEZELCAweDc1LCAweDNBLCAweDYzLCAweDlDLCAweDAzLCAweDg0LCAweDAwLAorICAgIDB4QTAsIDB4OTAsIDB4MjcsIDB4QUEsIDB4RjMsIDB4QTcsIDB4RjgsIDB4QjQsIDB4QjUsIDB4RjUsIDB4QzcsIDB4MjIsIDB4REUsIDB4MzUsIDB4OTUsIDB4M0EsCisgICAgMHgzNSwgMHhFNiwgMHg2RCwgMHg4OSwgMHg1OCwgMHgwRCwgMHhCQywgMHhDMiwgMHhDNiwgMHg5NywgMHhCMSwgMHhENCwgMHhBNiwgMHhGMCwgMHg2NSwgMHg2NiwKKyAgICAweDdGLCAweDE5LCAweEFGLCAweDUwLCAweDg4LCAweEI5LCAweDU4LCAweDhDLCAweEMyLCAweEVELCAweDZFLCAweDRBLCAweEY4LCAweEIzLCAweEM3LCAweDA2LAorICAgIDB4MUEsIDB4Q0YsIDB4OTIsIDB4QzQsIDB4OTgsIDB4NDMsIDB4MjcsIDB4MEQsIDB4QTIsIDB4MDEsIDB4NUIsIDB4ODUsIDB4OTgsIDB4OEMsIDB4OUMsIDB4NUUsCisgICAgMHg4MiwgMHgxOSwgMHhBOCwgMHg0RSwgMHhBOCwgMHg2MCwgMHhCMSwgMHhFRSwgMHgxNCwgMHg3MywgMHhDNywgMHg3MCwgMHhBOSwgMHg2RSwgMHgyQSwgMHgzOSwKKyAgICAweDRGLCAweEY2LCAweDRDLCAweDc3LCAweDFGLCAweEIzLCAweDdBLCAweDRCLCAweEFCLCAweEE4LCAweDE0LCAweDhELCAweEYyLCAweEM1LCAweEJDLCAweEUyLAorICAgIDB4RjEsIDB4N0UsIDB4QjgsIDB4QzMsIDB4NkIsIDB4QTIsIDB4RjUsIDB4NjEsIDB4NzksIDB4OTMsIDB4OTgsIDB4QkIsIDB4MTMsIDB4NUYsIDB4N0YsIDB4NjIsCisgICAgMHhBRSwgMHg3NCwgMHhDNiwgMHhGOCwgMHgyMywgMHg0RiwgMHhBNiwgMHg0MSwgMHgwRCwgMHgyMywgMHhGNiwgMHgzRiwgMHhGNSwgMHgyMywgMHhEOSwgMHhFNCwKKyAgICAweENDLCAweDg3LCAweEE1LCAweDNFLCAweEY4LCAweENDLCAweEJDLCAweDRGLCAweDhGLCAweEM4LCAweDVDLCAweEM4LCAweDdELCAweEMxLCAweEM0LCAweDIzLAorICAgIDB4NjYsIDB4NjIsIDB4QTUsIDB4NzUsIDB4QzcsIDB4NDQsIDB4MTUsIDB4ODQsIDB4QzMsIDB4RkMsIDB4MTYsIDB4ODEsIDB4N0YsIDB4RTUsIDB4MEMsIDB4REEsCisgICAgMHhBQywgMHhEOCwgMHg1MywgMHg3MSwgMHg1RCwgMHhCRSwgMHg5MSwgMHhCOCwgMHhGQywgMHgzQiwgMHg4RiwgMHg4OCwgMHgyRCwgMHg2NywgMHhBNCwgMHgxRCwKKyAgICAweDlGLCAweEZCLCAweDEyLCAweEQ3LCAweDFELCAweEYwLCAweDZDLCAweDJGLCAweDJELCAweEEzLCAweDM2LCAweDk3LCAweDFBLCAweEE1LCAweDVELCAweEU3LAorICAgIDB4MTgsIDB4MjEsIDB4MzEsIDB4RkIsIDB4QUIsIDB4MUUsIDB4NzUsIDB4NDEsIDB4NzAsIDB4NEMsIDB4QzQsIDB4QkIsIDB4MDEsIDB4N0IsIDB4NzIsIDB4NTEsCisgICAgMHhBRSwgMHgwQiwgMHhCMywgMHg1OSwgMHg2RCwgMHhBNCwgMHgxRiwgMHhDQiwgMHg2OSwgMHg3QywgMHg3MiwgMHgyOCwgMHhGNiwgMHg4NSwgMHhDMiwgMHhBMSwKKyAgICAweDg4LCAweDRBLCAweDgyLCAweEVBLCAweENGLCAweEJBLCAweDg3LCAweEI3LCAweDEzLCAweDVCLCAweEQwLCAweEZDLCAweDVFLCAweDc3LCAweDRGLCAweDNELAorICAgIDB4OTIsIDB4OUUsIDB4M0YsIDB4QjAsIDB4RTAsIDB4REMsIDB4OUIsIDB4QjgsIDB4NjcsIDB4MTMsIDB4Q0UsIDB4NUQsIDB4MkYsIDB4RTgsIDB4OTYsIDB4RjYsCisgICAgMHgxOCwgMHgyNCwgMHg1MiwgMHg4NywgMHg2RSwgMHg0NiwgMHg1MSwgMHg4MCwgMHgzNywgMHg1NiwgMHhFMiwgMHhFMiwgMHgzRCwgMHgzMywgMHg4MiwgMHgzMSwKKyAgICAweEVGLCAweDBFLCAweEEyLCAweEIyLCAweDU2LCAweEY5LCAweDNGLCAweEJBLCAweDIyLCAweDI2LCAweDk2LCAweDNFLCAweDNELCAweEU2LCAweDM1LCAweDhFLAorICAgIDB4MjQsIDB4MTksIDB4N0QsIDB4MEUsIDB4MEIsIDB4MTAsIDB4NEMsIDB4RkUsIDB4NzQsIDB4NTksIDB4MzIsIDB4OUMsIDB4NjUsIDB4QTcsIDB4QjEsIDB4RUYsCisgICAgMHgwOCwgMHhGOCwgMHgwNywgMHgxQywgMHgxMSwgMHg1MiwgMHhDMCwgMHg4RiwgMHhFMywgMHg5MywgMHg5RSwgMHg1MywgMHgyMywgMHgxMywgMHhBNiwgMHgzRSwKKyAgICAweEIzLCAweEIxLCAweDIwLCAweDI0LCAweEI2LCAweEUxLCAweDIyLCAweEQxLCAweEVELCAweDM2LCAweEQzLCAweDVDLCAweDE4LCAweEM0LCAweEU0LCAweDA5LAorICAgIDB4N0YsIDB4NjAsIDB4NDUsIDB4OUQsIDB4Q0UsIDB4QUUsIDB4REYsIDB4RTIsIDB4RDQsIDB4QzYsIDB4QkEsIDB4NTMsIDB4NkIsIDB4OTcsIDB4QUQsIDB4MkIsCisgICAgMHg2MCwgMHg1NCwgMHg2MCwgMHgyMiwgMHgzQywgMHg0QywgMHgyNSwgMHgyQywgMHg4NywgMHhGOSwgMHg2NCwgMHg1MSwgMHg2MCwgMHgyRSwgMHhFMSwgMHg5MCwKKyAgICAweEFFLCAweENDLCAweDcwLCAweEMxLCAweENBLCAweDYyLCAweDA3LCAweEVGLCAweDYzLCAweDQwLCAweDgwLCAweDdCLCAweEMyLCAweDM1LCAweDU2LCAweEM2LAorICAgIDB4QjgsIDB4MTIsIDB4MEUsIDB4MzQsIDB4RjQsIDB4NTQsIDB4MjgsIDB4NTMsIDB4NTIsIDB4RDQsIDB4NEYsIDB4MEYsIDB4OTgsIDB4NzgsIDB4NzQsIDB4OUEsCisgICAgMHg0QSwgMHgxRSwgMHg3NywgMHgzMSwgMHg0RCwgMHhBQiwgMHg3RCwgMHhERCwgMHgwNywgMHg0RSwgMHg1NywgMHgyNCwgMHhBRSwgMHgzRiwgMHhGMSwgMHgzMCwKKyAgICAweDE5LCAweEE4LCAweDJFLCAweDY2LCAweEIxLCAweDRELCAweDMwLCAweDVCLCAweDI4LCAweEI0LCAweDlGLCAweDQ4LCAweEZGLCAweDU5LCAweDE5LCAweEVELAorICAgIDB4QTEsIDB4NDcsIDB4NUYsIDB4QkYsIDB4QzAsIDB4NkMsIDB4NTAsIDB4Q0EsIDB4N0MsIDB4RjMsIDB4MDEsIDB4NDAsIDB4QUUsIDB4RDIsIDB4MDYsIDB4MjksCisgICAgMHg2OCwgMHhBRiwgMHhEQSwgMHhENSwgMHg0MiwgMHg1QiwgMHg3NSwgMHhBMywgMHhEMCwgMHhDMSwgMHg5NSwgMHg2RCwgMHhCNSwgMHhCNSwgMHgxQywgMHg2MywKKyAgICAweDdELCAweDNGLCAweDhGLCAweDM3LCAweDg0LCAweDY3LCAweDY5LCAweEY5LCAweEY0LCAweDE3LCAweDAzLCAweEFCLCAweEQ4LCAweDc5LCAweDBCLCAweDhGLAorICAgIDB4QjgsIDB4NzgsIDB4NkMsIDB4N0IsIDB4RTYsIDB4NDMsIDB4QTQsIDB4ODcsIDB4MzksIDB4M0UsIDB4NTcsIDB4QzYsIDB4NjksIDB4MTMsIDB4NDEsIDB4OEEsCisgICAgMHgxNCwgMHg1MywgMHhCRCwgMHgxQiwgMHg0NCwgMHg1MSwgMHg5NiwgMHg4NywgMHg0QSwgMHhFQiwgMHhENCwgMHhDQiwgMHhFMSwgMHg2NSwgMHg0QSwgMHgyRiwKKyAgICAweEY2LCAweEFDLCAweDhBLCAweDU4LCAweDk0LCAweDg3LCAweEMwLCAweEI4LCAweDE5LCAweDdGLCAweDg4LCAweEMyLCAweERFLCAweDlBLCAweDhFLCAweDU3LAorICAgIDB4RDcsIDB4RDUsIDB4REIsIDB4OTIsIDB4OEMsIDB4MTYsIDB4QjcsIDB4ODUsIDB4OTMsIDB4RTEsIDB4N0UsIDB4MTYsIDB4ODAsIDB4MjMsIDB4MkIsIDB4NUMsCisgICAgMHg4MywgMHg2MywgMHhCMCwgMHhERCwgMHg4MiwgMHhEQiwgMHgyMSwgMHgxNywgMHgyMiwgMHg1MSwgMHgzNSwgMHhFMywgMHgyMiwgMHgzNiwgMHgyQiwgMHhEQSwKKyAgICAweDVFLCAweEU1LCAweDQ4LCAweEVBLCAweEM1LCAweDIzLCAweDA1LCAweDhFLCAweEQxLCAweEZGLCAweEU2LCAweDgxLCAweEM1LCAweDBCLCAweEUxLCAweDA2LAorICAgIDB4MEUsIDB4RDAsIDB4MkMsIDB4QTYsIDB4NDMsIDB4RjMsIDB4ODksIDB4NUEsIDB4NjcsIDB4QkQsIDB4MzMsIDB4RTYsIDB4QzgsIDB4NUUsIDB4QUMsIDB4ODMsCisgICAgMHhCNSwgMHhEQywgMHgwRSwgMHg5OCwgMHhBQiwgMHgzMiwgMHg1QSwgMHgyNSwgMHhGRCwgMHhFNCwgMHg3NywgMHg0OCwgMHgxMSwgMHhFNiwgMHg4MSwgMHgyMiwKKyAgICAweDI2LCAweDJDLCAweDk1LCAweDNFLCAweERCLCAweDVFLCAweDc0LCAweDZDLCAweDVFLCAweDNCLCAweDU4LCAweDA5LCAweDg5LCAweDNGLCAweDRBLCAweEI4LAorICAgIDB4QUYsIDB4NTMsIDB4RTIsIDB4NDUsIDB4M0IsIDB4NjMsIDB4QjUsIDB4RUUsIDB4MTUsIDB4REYsIDB4MEIsIDB4M0UsIDB4MjksIDB4RjEsIDB4QUYsIDB4NTQsCisgICAgMHg2OSwgMHhCMiwgMHg4OSwgMHhGMywgMHg0MiwgMHg5MiwgMHgxNCwgMHhGMCwgMHhDMCwgMHhDNSwgMHgyNSwgMHg3RiwgMHhERiwgMHg0MiwgMHhERSwgMHhDMSwKKyAgICAweDI5LCAweDYwLCAweDFBLCAweDYyLCAweEZCLCAweDBDLCAweEY4LCAweEM2LCAweDU3LCAweDhCLCAweDFFLCAweDgyLCAweDA2LCAweDM1LCAweEE5LCAweDA2LAorICAgIDB4NDEsIDB4QUMsIDB4NzYsIDB4N0UsIDB4OEMsIDB4ODQsIDB4RTIsIDB4RjksIDB4MTgsIDB4NjksIDB4QzQsIDB4RDIsIDB4QjcsIDB4QjEsIDB4QkUsIDB4REIsCisgICAgMHg4MywgMHg5MiwgMHhBOCwgMHg3RiwgMHgzMiwgMHhDNywgMHhGNCwgMHgwOCwgMHhFMCwgMHgyNiwgMHhCRSwgMHgyRCwgMHg2QiwgMHg3NiwgMHg5RCwgMHg2OCwKKyAgICAweEUzLCAweDRCLCAweEM5LCAweDFBLCAweDBBLCAweEU0LCAweDc3LCAweDE5LCAweEI4LCAweEIyLCAweEJFLCAweDQ2LCAweDJBLCAweDNDLCAweDc2LCAweEI3LAorICAgIDB4NTQsIDB4NkYsIDB4NDEsIDB4NTksIDB4MjEsIDB4N0EsIDB4QTYsIDB4NDQsIDB4Q0UsIDB4NzQsIDB4QTksIDB4RDQsIDB4MTMsIDB4NDcsIDB4RDEsIDB4NTUsCisgICAgMHhBMCwgMHhGMCwgMHg4NSwgMHgyMCwgMHg4MCwgMHhERiwgMHg0RSwgMHg3RCwgMHhGNCwgMHhCMiwgMHhCRSwgMHg3NSwgMHg5QSwgMHhBMiwgMHgxMCwgMHhDMiwKKyAgICAweEZELCAweEIxLCAweEI5LCAweDhFLCAweDE0LCAweDgwLCAweEI2LCAweDVCLCAweDhBLCAweDZBLCAweDgxLCAweDM3LCAweDhDLCAweDAzLCAweDUxLCAweDg1LAorICAgIDB4MjUsIDB4RDcsIDB4ODUsIDB4NkEsIDB4QzgsIDB4MEEsIDB4MUYsIDB4MjQsIDB4QjYsIDB4MkMsIDB4QjAsIDB4MUEsIDB4MjAsIDB4MjMsIDB4Q0IsIDB4QjUsCisgICAgMHhGOCwgMHgxOSwgMHg4OCwgMHg2MywgMHg2NywgMHhCNywgMHhDRCwgMHg1QiwgMHg0RiwgMHgzQywgMHhBQSwgMHhFNiwgMHg5MCwgMHhDQywgMHg2QSwgMHhERCwKKyAgICAweEUwLCAweDUxLCAweDI5LCAweDIyLCAweEZGLCAweDE3LCAweDUzLCAweDYyLCAweDQwLCAweEY0LCAweEI2LCAweDVGLCAweDU1LCAweDY1LCAweDY3LCAweDc5LAorICAgIDB4NUIsIDB4OTgsIDB4QTMsIDB4NTgsIDB4MzUsIDB4QjIsIDB4MjEsIDB4REIsIDB4MEMsIDB4NkMsIDB4MjAsIDB4MDcsIDB4M0EsIDB4NTgsIDB4RTUsIDB4OTYsCisgICAgMHg3RiwgMHhCOSwgMHgxRiwgMHgzMSwgMHg3QSwgMHg4QSwgMHg2NCwgMHhBOCwgMHgwNiwgMHhBQSwgMHg1NiwgMHg1NSwgMHgyRCwgMHgwQiwgMHg4QiwgMHg3MSwKKyAgICAweDc4LCAweDhCLCAweDlGLCAweEMxLCAweDEyLCAweDU0LCAweDAwLCAweDVFLCAweDJFLCAweDc2LCAweDk4LCAweDk5LCAweDc3LCAweEUzLCAweDRELCAweDA4LAorICAgIDB4NDcsIDB4QzIsIDB4RjEsIDB4RkIsIDB4RjksIDB4RTEsIDB4OEQsIDB4NDAsIDB4NzEsIDB4NjcsIDB4RjksIDB4MTUsIDB4MzQsIDB4RUQsIDB4MTAsIDB4NjMsCisgICAgMHg2MywgMHhBMiwgMHgyQSwgMHg1OSwgMHgwQiwgMHgzRSwgMHhBMiwgMHhCNiwgMHhDMiwgMHgwMywgMHgxOSwgMHg4QiwgMHg3QywgMHg3NiwgMHgxNywgMHhFRiwKKyAgICAweDZCLCAweEUzLCAweDFGLCAweEJGLCAweDMyLCAweERDLCAweEY0LCAweDJFLCAweDY5LCAweDE1LCAweDU0LCAweDQwLCAweDc4LCAweDk3LCAweDEzLCAweDJELAorICAgIDB4QjUsIDB4N0QsIDB4MTgsIDB4OTEsIDB4NDAsIDB4ODQsIDB4OEYsIDB4OTIsIDB4NDQsIDB4MzIsIDB4NDIsIDB4OUYsIDB4RDEsIDB4MkQsIDB4RUEsIDB4ODIsCisgICAgMHg0OCwgMHgzOSwgMHg0OSwgMHgxOSwgMHgwNywgMHhDNiwgMHgzMiwgMHg5RiwgMHhENSwgMHg4NywgMHg4MCwgMHg5MiwgMHg3OCwgMHhEQSwgMHg5QSwgMHg5MywKKyAgICAweDkwLCAweDcxLCAweERELCAweEM0LCAweDZELCAweEMzLCAweDc0LCAweEE2LCAweEM5LCAweDg4LCAweDk4LCAweEZGLCAweDhBLCAweDgxLCAweDUwLCAweEFDLAorICAgIDB4NzMsIDB4NDksIDB4MEEsIDB4NzUsIDB4MjcsIDB4MDIsIDB4QUYsIDB4ODEsIDB4QjgsIDB4QUQsIDB4ODMsIDB4QTksIDB4MDgsIDB4MjksIDB4RjAsIDB4NzgsCisgICAgMHg0QSwgMHgzMiwgMHhEQiwgMHgxMCwgMHhBNCwgMHg1RSwgMHhGQSwgMHgzQiwgMHg0OSwgMHhCRCwgMHhBNSwgMHhFMSwgMHhFNiwgMHgwQiwgMHhEQiwgMHg2RiwKKyAgICAweDMxLCAweDE4LCAweERDLCAweEE3LCAweDYzLCAweEQwLCAweEJBLCAweEM3LCAweEEzLCAweDBBLCAweDg4LCAweDc2LCAweEE4LCAweDZDLCAweDRCLCAweEJFLAorICAgIDB4M0EsIDB4RDYsIDB4ODEsIDB4MjAsIDB4RUYsIDB4RDQsIDB4MzYsIDB4NEMsIDB4MkUsIDB4QkQsIDB4MjIsIDB4NTYsIDB4NUUsIDB4RTksIDB4QkIsIDB4MjUsCisgICAgMHg3NSwgMHg1NCwgMHgzMywgMHhGNiwgMHgxQiwgMHg3RiwgMHhEOCwgMHg5NSwgMHg0OSwgMHg5QiwgMHhCMSwgMHgzMCwgMHgzRSwgMHg2RiwgMHgxNywgMHg5MSwKKyAgICAweDQyLCAweDgyLCAweDQyLCAweDgxLCAweDE2LCAweDU2LCAweENGLCAweDJELCAweEMyLCAweDM0LCAweDZDLCAweDM4LCAweEEwLCAweDQyLCAweDE0LCAweDdBLAorICAgIDB4MTMsIDB4OUQsIDB4MzgsIDB4QzEsIDB4NkQsIDB4M0EsIDB4M0QsIDB4MEUsIDB4MjQsIDB4MkMsIDB4MjMsIDB4RTMsIDB4QkMsIDB4MzYsIDB4MkEsIDB4OTcsCisgICAgMHgwNSwgMHg5RSwgMHgzMSwgMHg5QSwgMHhGMiwgMHg4OCwgMHg4NCwgMHhBMiwgMHgyOCwgMHhCOCwgMHhCMywgMHg0MCwgMHgzRSwgMHhFOCwgMHg1RiwgMHg0NCwKKyAgICAweDMyLCAweDdFLCAweEQ3LCAweDY0LCAweEZFLCAweDM3LCAweDUxLCAweDMyLCAweEQxLCAweDU5LCAweDRFLCAweEI4LCAweDk4LCAweEM0LCAweDg3LCAweDUwLAorICAgIDB4QjAsIDB4MEMsIDB4QUQsIDB4RTgsIDB4OTgsIDB4MjAsIDB4QTIsIDB4QUEsIDB4RkMsIDB4OTQsIDB4Q0YsIDB4ODcsIDB4RkIsIDB4NjAsIDB4REIsIDB4QkYsCisgICAgMHg5MywgMHg3RSwgMHhCRCwgMHg1RiwgMHgxMywgMHg2QywgMHhDOSwgMHgwNiwgMHgzNCwgMHhENSwgMHg4QSwgMHhFRCwgMHg1RCwgMHhBQywgMHg3NywgMHhDOSwKKyAgICAweDg0LCAweEQ1LCAweDA1LCAweDYxLCAweDcxLCAweDRFLCAweDY5LCAweEUxLCAweEM2LCAweEZELCAweDEyLCAweDNGLCAweDM3LCAweDNGLCAweEVFLCAweDFELAorICAgIDB4OTMsIDB4NkUsIDB4RjMsIDB4MzIsIDB4MTgsIDB4MjYsIDB4ODcsIDB4MkEsIDB4N0MsIDB4MEYsIDB4NzUsIDB4MUEsIDB4MDYsIDB4NjEsIDB4NzYsIDB4MjIsCisgICAgMHgxOCwgMHgzOSwgMHgyNCwgMHg0OSwgMHhBNywgMHhGNywgMHg4MSwgMHg1MSwgMHgxRSwgMHg4RiwgMHg4NiwgMHg3NiwgMHhFMywgMHhGMiwgMHhGMCwgMHhDRiwKKyAgICAweDhCLCAweEIxLCAweDVFLCAweEZBLCAweEE3LCAweEYzLCAweDBGLCAweDYzLCAweDZCLCAweDRELCAweDBCLCAweDcxLCAweDNBLCAweEFCLCAweDYwLCAweDc2LAorICAgIDB4MDEsIDB4QTUsIDB4MjgsIDB4NEQsIDB4QjQsIDB4QkYsIDB4REIsIDB4OEUsIDB4MkIsIDB4RTEsIDB4RDYsIDB4RTYsIDB4QzgsIDB4OEYsIDB4RTYsIDB4NzksCisgICAgMHhENiwgMHgxOSwgMHhEOSwgMHgzQSwgMHg2RiwgMHgwQywgMHhEQywgMHhDMCwgMHgzMSwgMHg2MSwgMHg3MCwgMHgyMSwgMHhFNCwgMHhGQSwgMHg0MywgMHg0MywKKyAgICAweDAzLCAweEZDLCAweDg4LCAweEE4LCAweDc3LCAweENBLCAweEU2LCAweDc5LCAweDU5LCAweDg0LCAweDVELCAweDJCLCAweDBBLCAweEI3LCAweDEzLCAweDFCLAorICAgIDB4MkMsIDB4RUMsIDB4REQsIDB4OEEsIDB4MjYsIDB4RTksIDB4QjMsIDB4NjksIDB4NEYsIDB4NzIsIDB4Q0IsIDB4ODIsIDB4MkUsIDB4NTQsIDB4MDAsIDB4RDEsCisgICAgMHgxOSwgMHhBNSwgMHgwRiwgMHhCMiwgMHg1RiwgMHhDQSwgMHgzQywgMHhCNiwgMHg1RiwgMHg4QiwgMHhDOCwgMHhENCwgMHgyMSwgMHhDRiwgMHgyNiwgMHg4MywKKyAgICAweDVBLCAweEQyLCAweENBLCAweEZGLCAweDI2LCAweDQ2LCAweDVFLCAweEU4LCAweDJDLCAweDBGLCAweEE3LCAweEJBLCAweDhFLCAweENELCAweEJCLCAweEIwLAorICAgIDB4NzAsIDB4NzgsIDB4QTIsIDB4RjQsIDB4OEYsIDB4OUQsIDB4MEYsIDB4MjMsIDB4MjksIDB4RjQsIDB4QkMsIDB4RkMsIDB4NTQsIDB4MjIsIDB4MDAsIDB4N0IsCisgICAgMHg4OCwgMHgwRiwgMHg4NywgMHgwOCwgMHhGMiwgMHgzNywgMHgzRSwgMHgwNywgMHg0RSwgMHhFRiwgMHhGMywgMHg0RiwgMHg5NiwgMHg3QiwgMHhCMywgMHhBNCwKKyAgICAweDFELCAweDQ1LCAweDNELCAweDg4LCAweDVELCAweEMyLCAweEE4LCAweEZBLCAweDcxLCAweEJFLCAweEE2LCAweDFGLCAweDdFLCAweDc3LCAweEQ1LCAweDQ4LAorICAgIDB4MjMsIDB4NzMsIDB4MUMsIDB4NjIsIDB4RjUsIDB4OTgsIDB4OEUsIDB4QjcsIDB4NjcsIDB4QjEsIDB4QzgsIDB4RkEsIDB4RDcsIDB4Q0IsIDB4MDgsIDB4MEEsCisgICAgMHg2NCwgMHg1NywgMHg5MywgMHg3RSwgMHg4RSwgMHhGMiwgMHgyMCwgMHhBQSwgMHhCNSwgMHgwNiwgMHg4RCwgMHgxMiwgMHhFMiwgMHhCOCwgMHg0RCwgMHhGQywKKyAgICAweEM4LCAweDIzLCAweEFCLCAweDYxLCAweDA1LCAweEU0LCAweDQ2LCAweDg3LCAweDE1LCAweDI1LCAweDIzLCAweDQzLCAweDE1LCAweDMyLCAweDYzLCAweDlFLAorICAgIDB4NzksIDB4RkEsIDB4QkUsIDB4MTAsIDB4MkIsIDB4QTMsIDB4NDksIDB4QTAsIDB4ODAsIDB4QjAsIDB4M0YsIDB4NTAsIDB4NjgsIDB4RjUsIDB4QzAsIDB4N0MsCisgICAgMHg1NSwgMHhBMiwgMHg1OCwgMHg5MiwgMHhENCwgMHhGMywgMHhBMCwgMHhFRSwgMHg4MywgMHgzMywgMHg3MSwgMHhFNiwgMHhBQiwgMHg3NywgMHg0NCwgMHgyNSwKKyAgICAweDVELCAweEJGLCAweDU3LCAweDkxLCAweDI1LCAweDE0LCAweDBDLCAweDVELCAweDA3LCAweEEwLCAweDhGLCAweDgyLCAweDlDLCAweEE4LCAweDMzLCAweDA1LAorICAgIDB4MjUsIDB4NUYsIDB4NkIsIDB4MjAsIDB4QjEsIDB4OTIsIDB4REMsIDB4NEUsIDB4REEsIDB4NkQsIDB4QzQsIDB4ODUsIDB4RTcsIDB4REUsIDB4MDAsIDB4QUQsCisgICAgMHgwRSwgMHg0NSwgMHg5QSwgMHgzRSwgMHhCRiwgMHgxRSwgMHg3QiwgMHhGMSwgMHg5NCwgMHgxMSwgMHg3NywgMHhDRSwgMHhFMiwgMHhGMCwgMHg3QiwgMHg5QSwKKyAgICAweDg1LCAweDQ2LCAweDk4LCAweDI3LCAweDQ0LCAweENDLCAweEM3LCAweDNGLCAweDJELCAweDZGLCAweEUyLCAweEQzLCAweERGLCAweDZFLCAweDZELCAweDc0LAorICAgIDB4RkQsIDB4QzAsIDB4RUYsIDB4OEMsIDB4QTMsIDB4NzEsIDB4RUEsIDB4QTQsIDB4NTYsIDB4NTksIDB4NTcsIDB4MjMsIDB4NzgsIDB4ODcsIDB4MTYsIDB4OEMsCisgICAgMHgxRSwgMHg2MywgMHg5QywgMHhFMiwgMHhBNywgMHgyOCwgMHgyQSwgMHg2NCwgMHhDMCwgMHg5NywgMHgzNCwgMHhCMCwgMHhENSwgMHg3OCwgMHg0QywgMHhDMywKKyAgICAweEIyLCAweDVELCAweDlCLCAweDg5LCAweDNGLCAweEQzLCAweDdFLCAweEQyLCAweDhBLCAweDc4LCAweDhDLCAweDFBLCAweDgyLCAweEIyLCAweEE1LCAweEZELAorICAgIDB4MzcsIDB4RTYsIDB4NjQsIDB4MzIsIDB4RjAsIDB4QzksIDB4REUsIDB4QUYsIDB4QTYsIDB4QkQsIDB4QjksIDB4REQsIDB4RTEsIDB4RjYsIDB4MkQsIDB4QzEsCisgICAgMHgxNywgMHgxNSwgMHhGMSwgMHg3MywgMHhBNCwgMHg0QywgMHg2NSwgMHgxMSwgMHg5MiwgMHhEQywgMHg2MSwgMHhGRCwgMHgwQywgMHg2MCwgMHg0OSwgMHg0MywKKyAgICAweDU0LCAweEFDLCAweEM5LCAweEQ3LCAweEQ1LCAweDg1LCAweDA5LCAweEQ0LCAweDU3LCAweDc0LCAweDE4LCAweEQ2LCAweDUzLCAweEVCLCAweDI2LCAweEFFLAorICAgIDB4MTMsIDB4Q0UsIDB4MEMsIDB4NkYsIDB4N0MsIDB4MTEsIDB4OTAsIDB4MDIsIDB4QjksIDB4NDYsIDB4QjgsIDB4RUMsIDB4MjUsIDB4MzEsIDB4RTIsIDB4QkEsCisgICAgMHhENCwgMHhFNCwgMHgxOSwgMHgxRiwgMHhGOCwgMHhCOSwgMHg2RCwgMHhBNiwgMHg3QSwgMHhFOCwgMHgwMywgMHg5QSwgMHg5NCwgMHg5RiwgMHgyNiwgMHgzQiwKKyAgICAweEUwLCAweDFBLCAweDMyLCAweEFELCAweDczLCAweDNDLCAweEI3LCAweEU0LCAweDMyLCAweDZGLCAweDUxLCAweDNCLCAweDNELCAweDgzLCAweDg2LCAweEQ3LAorICAgIDB4NjIsIDB4NkQsIDB4RjgsIDB4REYsIDB4NUMsIDB4QjIsIDB4NTksIDB4OTIsIDB4QUUsIDB4NTIsIDB4QTcsIDB4RkUsIDB4QTksIDB4OUIsIDB4MEYsIDB4RDgsCisgICAgMHg1QywgMHhDQSwgMHg1MCwgMHhDMywgMHhENywgMHg3QywgMHg4RSwgMHg4MCwgMHgxRSwgMHhDRSwgMHhDOSwgMHg4RSwgMHg2QiwgMHg3QSwgMHg0RiwgMHgxQiwKKyAgICAweDNBLCAweDFFLCAweDkxLCAweDE4LCAweDRDLCAweDAxLCAweDUwLCAweDQ3LCAweDU0LCAweDY1LCAweEYyLCAweDcyLCAweEExLCAweDgzLCAweEUyLCAweDg2LAorICAgIDB4OUIsIDB4OTMsIDB4MDcsIDB4NzUsIDB4RTQsIDB4MzMsIDB4NDcsIDB4QjUsIDB4QkQsIDB4NDIsIDB4QjIsIDB4MzAsIDB4NkIsIDB4NjksIDB4MUYsIDB4RTksCisgICAgMHhCMywgMHg1OCwgMHg5MSwgMHg5NSwgMHg3QiwgMHhFRCwgMHhDMywgMHhGMiwgMHg0NiwgMHgyOCwgMHhCNSwgMHgxOCwgMHgyMSwgMHgyNywgMHg1NywgMHhGMiwKKyAgICAweDM5LCAweEU2LCAweDhBLCAweDI4LCAweEE3LCAweDdELCAweEZCLCAweDAxLCAweEYyLCAweDdCLCAweDU2LCAweDVBLCAweEM0LCAweDg1LCAweDVBLCAweDQxLAorICAgIDB4OTYsIDB4RjcsIDB4RjcsIDB4QzUsIDB4OTEsIDB4QTQsIDB4ODksIDB4OUEsIDB4MDksIDB4OTEsIDB4QkIsIDB4RTksIDB4MjksIDB4OTIsIDB4N0YsIDB4RTYsCisgICAgMHg1QiwgMHg5NCwgMHg4RSwgMHg5MywgMHg0MywgMHg5MCwgMHg1MywgMHgwRiwgMHgxMCwgMHhENywgMHg3RSwgMHgwNCwgMHgyOCwgMHhCNywgMHhGNywgMHgxNCwKKyAgICAweEIzLCAweDQyLCAweDVFLCAweERGLCAweEI1LCAweEFBLCAweEU0LCAweEY3LCAweEVELCAweDk4LCAweDQzLCAweEM2LCAweDhDLCAweEZBLCAweDdDLCAweEIwLAorICAgIDB4NzEsIDB4QjEsIDB4RTksIDB4NjQsIDB4NjUsIDB4QkIsIDB4NTgsIDB4Q0MsIDB4NzMsIDB4NUYsIDB4NkEsIDB4NUEsIDB4ODYsIDB4MkQsIDB4MkUsIDB4ODksCisgICAgMHhCNCwgMHg1QSwgMHhGRSwgMHgxNiwgMHg1QiwgMHg2NCwgMHg1NiwgMHgyNywgMHgzOCwgMHhDMiwgMHgxRCwgMHgxQywgMHhGMCwgMHhDNSwgMHgwQiwgMHg4MCwKKyAgICAweDhELCAweDZGLCAweDJFLCAweDBDLCAweDdCLCAweDU2LCAweEVGLCAweDIzLCAweEU1LCAweEZDLCAweEQyLCAweDU1LCAweEY2LCAweDlDLCAweEY3LCAweDVGLAorICAgIDB4QjUsIDB4RUMsIDB4QjcsIDB4RUUsIDB4QzQsIDB4RUMsIDB4RkUsIDB4RDYsIDB4QUEsIDB4RUMsIDB4MjQsIDB4QjgsIDB4QjcsIDB4OTgsIDB4OEQsIDB4MEIsCisgICAgMHgxMiwgMHgzNiwgMHhBQywgMHg1QiwgMHgzRSwgMHg4NywgMHgyOSwgMHgyMSwgMHg5QywgMHhGRCwgMHg4NCwgMHhGRCwgMHhGNSwgMHgxMCwgMHhBNCwgMHhFOCwKKyAgICAweDFDLCAweDRGLCAweDE2LCAweDQ1LCAweEJGLCAweEM5LCAweDE4LCAweDlGLCAweERFLCAweEYxLCAweDk2LCAweDY0LCAweDU4LCAweDYxLCAweEYxLCAweDQxLAorICAgIDB4ODIsIDB4RTIsIDB4REEsIDB4QTMsIDB4RTQsIDB4ODYsIDB4MEYsIDB4QjcsIDB4Q0EsIDB4MTcsIDB4MTcsIDB4MkEsIDB4N0QsIDB4QUMsIDB4OUYsIDB4QjMsCisgICAgMHg4RSwgMHg2NSwgMHg2MywgMHg4MCwgMHg2NCwgMHg4RSwgMHg2RiwgMHhEQiwgMHhENCwgMHgwNSwgMHg2NSwgMHhFRSwgMHgxMywgMHgxQywgMHhFNiwgMHg1MSwKKyAgICAweDUzLCAweDAxLCAweEExLCAweEUyLCAweEExLCAweDNFLCAweDQ2LCAweDgyLCAweEJCLCAweDRBLCAweDdFLCAweEMxLCAweDRBLCAweDEyLCAweEJCLCAweDU2LAorICAgIDB4QTIsIDB4MkYsIDB4ODEsIDB4QzAsIDB4MEYsIDB4NDcsIDB4N0YsIDB4QTEsIDB4RDksIDB4OEYsIDB4MjEsIDB4QzUsIDB4NDgsIDB4MzQsIDB4RjAsIDB4N0YsCisgICAgMHgwNywgMHhFOCwgMHhCNCwgMHgwQywgMHgzNywgMHhFQSwgMHg0QSwgMHg3NiwgMHg1RSwgMHg5OCwgMHhBMCwgMHg4NywgMHgwOCwgMHhDMSwgMHg1MSwgMHgzRCwKKyAgICAweEVELCAweEM2LCAweEEyLCAweDc1LCAweDkwLCAweEI0LCAweDIzLCAweEZDLCAweDNFLCAweDM2LCAweDRBLCAweDlBLCAweEVBLCAweDI1LCAweDFGLCAweDYyLAorICAgIDB4NDEsIDB4NjksIDB4Q0MsIDB4OEMsIDB4QjAsIDB4QjcsIDB4QUEsIDB4NkIsIDB4NjcsIDB4QzksIDB4ODUsIDB4N0YsIDB4OTIsIDB4QzAsIDB4N0EsIDB4MzAsCisgICAgMHgxOCwgMHgzNSwgMHhDRCwgMHhGRCwgMHg4NSwgMHhDNCwgMHg3MCwgMHgyMywgMHg3NSwgMHg0NSwgMHg2NywgMHg3OSwgMHhBQiwgMHhGRSwgMHg4MywgMHg0QiwKKyAgICAweEM5LCAweDA5LCAweDc4LCAweEYxLCAweDdGLCAweEZBLCAweENDLCAweEYyLCAweDBBLCAweDAzLCAweDBFLCAweDQzLCAweDlBLCAweEQxLCAweEJGLCAweDUzLAorICAgIDB4QTgsIDB4MUUsIDB4MEYsIDB4NzUsIDB4QzksIDB4MTQsIDB4NTQsIDB4MDcsIDB4NkQsIDB4Q0QsIDB4QzcsIDB4QjMsIDB4NUQsIDB4MTQsIDB4ODcsIDB4MjksCisgICAgMHgwQywgMHg0MywgMHhFRCwgMHg5MSwgMHhFMywgMHgwQSwgMHhEMCwgMHg2RiwgMHhBRSwgMHgzQiwgMHhCNSwgMHhBOCwgMHgyOSwgMHgzQywgMHhBNSwgMHg1RSwKKyAgICAweDBBLCAweDUxLCAweEI0LCAweDdGLCAweDNELCAweDE1LCAweENDLCAweDFBLCAweDM1LCAweEZCLCAweEE0LCAweDcwLCAweERDLCAweDRCLCAweDk4LCAweEQ0LAorICAgIDB4QkYsIDB4MjgsIDB4RTYsIDB4MjksIDB4NDIsIDB4NjAsIDB4NzEsIDB4QTcsIDB4QUUsIDB4MDIsIDB4QzAsIDB4RTQsIDB4RUUsIDB4NjEsIDB4NDgsIDB4MDcsCisgICAgMHg4NCwgMHg4NywgMHhBRCwgMHg1RSwgMHg3MCwgMHhBOCwgMHgwMywgMHgzMCwgMHg4MSwgMHhFMywgMHhFMywgMHg1MywgMHgyOCwgMHhGQywgMHgwNiwgMHhGOCwKKyAgICAweDM3LCAweDE5LCAweDY5LCAweEExLCAweEQyLCAweDdBLCAweERCLCAweDkxLCAweEFELCAweEIyLCAweDhFLCAweDUxLCAweEUxLCAweEMwLCAweDBBLCAweEVFLAorICAgIDB4NzAsIDB4M0IsIDB4QjcsIDB4MzcsIDB4OTYsIDB4MDcsIDB4QkMsIDB4NjYsIDB4M0IsIDB4MTAsIDB4NkYsIDB4MTgsIDB4Q0MsIDB4QTgsIDB4OEYsIDB4REQsCisgICAgMHg2QywgMHgzMCwgMHgxOCwgMHhFRiwgMHg5NiwgMHgwOSwgMHhFNSwgMHg4OSwgMHg0NywgMHg4RSwgMHhCQSwgMHg1NywgMHg4RCwgMHg4RiwgMHg2MywgMHg4QSwKKyAgICAweEFCLCAweDMwLCAweEEwLCAweDQ1LCAweDFDLCAweDRDLCAweDBELCAweEIwLCAweDcyLCAweDA5LCAweDBBLCAweEM4LCAweDU2LCAweEQ4LCAweDQ1LCAweDcxLAorICAgIDB4RDMsIDB4QjgsIDB4MDMsIDB4RDMsIDB4Q0QsIDB4OUUsIDB4ODYsIDB4NTMsIDB4QTUsIDB4RDUsIDB4NTgsIDB4QTUsIDB4MDMsIDB4RTMsIDB4RkMsIDB4NUUsCisgICAgMHgxQywgMHg2MywgMHg2NSwgMHhFOSwgMHg3MCwgMHg1MywgMHhGNCwgMHg5OSwgMHg3MSwgMHg3QSwgMHg3NiwgMHgyQywgMHgyQywgMHgzOCwgMHhCRSwgMHg1QSwKKyAgICAweDIwLCAweEZGLCAweEMwLCAweDI1LCAweDE2LCAweDQ2LCAweEE4LCAweDY1LCAweDlCLCAweEUwLCAweEIxLCAweDEwLCAweDdELCAweEIyLCAweDkwLCAweEJDLAorICAgIDB4RTQsIDB4QjUsIDB4MjIsIDB4QzcsIDB4RDYsIDB4OEEsIDB4QkIsIDB4MTksIDB4OUYsIDB4Q0QsIDB4MTEsIDB4NjIsIDB4ODIsIDB4RkMsIDB4OEQsIDB4MzYsCisgICAgMHhFMiwgMHgwOCwgMHhGMCwgMHhERCwgMHg2OCwgMHg2MCwgMHg0OCwgMHgwOSwgMHgxRiwgMHhGMCwgMHhDNSwgMHg1NCwgMHhFOSwgMHg0NywgMHg3RCwgMHg3OSwKKyAgICAweEU2LCAweEM0LCAweEMxLCAweEYxLCAweEZGLCAweDJELCAweDVDLCAweEEzLCAweEZELCAweEYyLCAweEIxLCAweEE3LCAweDg5LCAweEI3LCAweEI5LCAweDdDLAorICAgIDB4NDQsIDB4MjgsIDB4RTUsIDB4ODIsIDB4MzYsIDB4NEQsIDB4NDgsIDB4MzQsIDB4MDEsIDB4NUIsIDB4NDMsIDB4MzYsIDB4MkQsIDB4MDUsIDB4OTMsIDB4RUUsCisgICAgMHhGNSwgMHg5MiwgMHg3MywgMHhERiwgMHhBNiwgMHhCQSwgMHgzRCwgMHg1QiwgMHg5NiwgMHg0OSwgMHg3MywgMHhERiwgMHg3MCwgMHg5QiwgMHg3QSwgMHg3MCwKKyAgICAweDVDLCAweDMwLCAweDE0LCAweEI4LCAweEI3LCAweDQ2LCAweEUwLCAweEQ3LCAweEZGLCAweDVDLCAweDhFLCAweDI3LCAweDM5LCAweDBFLCAweEVFLCAweDk5LAorICAgIDB4MkYsIDB4MDgsIDB4MUUsIDB4OTUsIDB4RDQsIDB4NzAsIDB4QjAsIDB4QzQsIDB4MjgsIDB4ODMsIDB4NzgsIDB4OTIsIDB4OTMsIDB4NDYsIDB4QjksIDB4RjksCisgICAgMHhGRiwgMHg4QywgMHgxNiwgMHhBOSwgMHg2MywgMHg3MSwgMHhBRiwgMHhCRCwgMHg4NCwgMHgxQSwgMHgyNSwgMHhCRSwgMHhFOCwgMHhFMywgMHhCMiwgMHgzMywKKyAgICAweDUxLCAweEI5LCAweEI2LCAweDBFLCAweDEyLCAweEI4LCAweEE3LCAweDZFLCAweDI4LCAweEJDLCAweEEzLCAweDY2LCAweDI0LCAweDQ5LCAweDRELCAweDQ1LAorICAgIDB4QTQsIDB4NUMsIDB4Q0QsIDB4NEQsIDB4MkUsIDB4MTcsIDB4RkIsIDB4QzAsIDB4QjUsIDB4QTcsIDB4NTUsIDB4MzQsIDB4MDgsIDB4RDcsIDB4QzcsIDB4NTQsCisgICAgMHgwQSwgMHhGRSwgMHhFNiwgMHg5OCwgMHg4NSwgMHg2RCwgMHhBRiwgMHg0MiwgMHg3OSwgMHhFRCwgMHgwQSwgMHhGQSwgMHhDRiwgMHhEMywgMHhFMiwgMHg3QywKKyAgICAweEI4LCAweDI0LCAweEE1LCAweEUxLCAweDAxLCAweEE1LCAweDk0LCAweDU1LCAweDYxLCAweEEwLCAweDQ5LCAweDFCLCAweDdDLCAweDcxLCAweEE4LCAweDk2LAorICAgIDB4NUEsIDB4NEMsIDB4RjUsIDB4QzUsIDB4MUUsIDB4OEQsIDB4RDksIDB4MkUsIDB4QkUsIDB4QzQsIDB4MTMsIDB4MjcsIDB4RDAsIDB4QzAsIDB4NjcsIDB4QTcsCisgICAgMHg3NywgMHg4NiwgMHg2MSwgMHhBRSwgMHg3RSwgMHg2OSwgMHg1MywgMHhCNCwgMHg3MCwgMHhDNiwgMHgxRSwgMHg2MiwgMHgxQSwgMHg4QiwgMHhCMywgMHgwQSwKKyAgICAweEM1LCAweERGLCAweEY0LCAweEZBLCAweEVCLCAweEM1LCAweDUwLCAweDdFLCAweERFLCAweEQ1LCAweDE1LCAweEIxLCAweDJFLCAweDA5LCAweDc1LCAweEQ3LAorICAgIDB4OUUsIDB4QjEsIDB4NTgsIDB4NzYsIDB4MkYsIDB4RkUsIDB4ODYsIDB4MEEsIDB4QzIsIDB4MTAsIDB4MUQsIDB4ODQsIDB4REYsIDB4OTQsIDB4MTEsIDB4RDAsCisgICAgMHg4NiwgMHgwNiwgMHhGQSwgMHg5RSwgMHgwMCwgMHhGMCwgMHgyNywgMHg1MSwgMHgwMCwgMHg0MywgMHhBRiwgMHhFQSwgMHgxMywgMHg0RSwgMHhDOCwgMHg0OCwKKyAgICAweDVBLCAweDU3LCAweERCLCAweDVDLCAweDIwLCAweERDLCAweEYzLCAweDdELCAweDJCLCAweDc3LCAweDM1LCAweDIwLCAweEJELCAweDE3LCAweDBDLCAweDNBLAorICAgIDB4MkMsIDB4M0IsIDB4NTgsIDB4N0QsIDB4OUQsIDB4NDAsIDB4QTAsIDB4REYsIDB4RDUsIDB4QkEsIDB4ODQsIDB4QTIsIDB4OUUsIDB4NEMsIDB4ODcsIDB4QTUsCisgICAgMHhGOSwgMHhFRCwgMHhFQSwgMHhFQiwgMHg5OCwgMHgwRCwgMHg4MSwgMHhEOSwgMHhDQiwgMHhFMywgMHhENSwgMHhBMCwgMHhGNywgMHhGRiwgMHgyQSwgMHgyOCwKKyAgICAweEU5LCAweDZGLCAweDA4LCAweEU0LCAweEJBLCAweDc2LCAweDE2LCAweDBBLCAweEY1LCAweDNDLCAweDAxLCAweDExLCAweEIzLCAweEJBLCAweDRDLCAweDdFLAorICAgIDB4QzMsIDB4MUYsIDB4MEIsIDB4OTEsIDB4NjIsIDB4ODIsIDB4REQsIDB4MjksIDB4N0MsIDB4NjAsIDB4NUYsIDB4NTYsIDB4RTUsIDB4NDgsIDB4N0QsIDB4QjgsCisgICAgMHg0QSwgMHhDNywgMHgxRiwgMHg3RCwgMHhENSwgMHhCNywgMHgxNywgMHg5RiwgMHg5MSwgMHhERCwgMHhFMywgMHhFMCwgMHgwNCwgMHgxNCwgMHhGMywgMHg0QywKKyAgICAweEQyLCAweEIzLCAweEMzLCAweEFDLCAweDdGLCAweDYzLCAweDY3LCAweEZBLCAweDFCLCAweDE0LCAweDBFLCAweDJBLCAweDhDLCAweDgyLCAweEQ4LCAweDQ5LAorICAgIDB4OEIsIDB4MjQsIDB4NEIsIDB4RjMsIDB4MjEsIDB4ODYsIDB4MDYsIDB4OTEsIDB4QzksIDB4ODEsIDB4RjksIDB4ODQsIDB4QzYsIDB4MkIsIDB4MTIsIDB4Q0YsCisgICAgMHg5NSwgMHgzMiwgMHg3QSwgMHhGRCwgMHg5QywgMHgxQywgMHhGQywgMHgzQiwgMHgzQiwgMHgwNiwgMHhCQSwgMHgyQywgMHg0NSwgMHg4OCwgMHhEQSwgMHg1QiwKKyAgICAweDVELCAweDkwLCAweERDLCAweDA3LCAweEJELCAweEVDLCAweEFGLCAweEIyLCAweDA2LCAweDk4LCAweDA1LCAweEFDLCAweDFELCAweDQxLCAweEExLCAweEQ1LAorICAgIDB4NzYsIDB4OUQsIDB4N0IsIDB4NTksIDB4ODIsIDB4OUMsIDB4NDYsIDB4MDIsIDB4RjQsIDB4MDMsIDB4QjQsIDB4RkIsIDB4NzAsIDB4NDgsIDB4NzMsIDB4QjIsCisgICAgMHg0QywgMHg4QiwgMHhBNiwgMHhEQiwgMHgxMSwgMHhDNSwgMHg3RSwgMHhGRSwgMHgyMywgMHg0RSwgMHhDMiwgMHgyQiwgMHgwRiwgMHg5NSwgMHg1MSwgMHgyQSwKKyAgICAweDNCLCAweDQ2LCAweDFDLCAweEI3LCAweEJGLCAweDUxLCAweEYwLCAweEE0LCAweEY4LCAweEFELCAweDE2LCAweDk2LCAweEFBLCAweDZELCAweEJFLCAweEZFLAorICAgIDB4NDUsIDB4NDYsIDB4RUYsIDB4OEIsIDB4OTYsIDB4RUQsIDB4RTEsIDB4RTUsIDB4QjUsIDB4RUYsIDB4MjIsIDB4OEMsIDB4QkEsIDB4M0EsIDB4QjAsIDB4MkYsCisgICAgMHg5QSwgMHgzNCwgMHgxNiwgMHg1MiwgMHg1NiwgMHg1QSwgMHgzNiwgMHg4QiwgMHg1MCwgMHg4OSwgMHhCRCwgMHhDMCwgMHhGRSwgMHhBRSwgMHgyQiwgMHhCQiwKKyAgICAweDUzLCAweEFFLCAweDc2LCAweDhELCAweEI2LCAweDkxLCAweDlELCAweDMyLCAweDE4LCAweEY1LCAweEQ3LCAweDFBLCAweEU1LCAweDA0LCAweDA1LCAweEZELAorICAgIDB4REMsIDB4NUIsIDB4NjcsIDB4QkUsIDB4MzQsIDB4MDUsIDB4MDMsIDB4OTAsIDB4RDUsIDB4QkYsIDB4QUEsIDB4MzUsIDB4OEQsIDB4QjcsIDB4NjMsIDB4NzYsCisgICAgMHhDOSwgMHg5OCwgMHgyQiwgMHg5OSwgMHhENiwgMHg1QSwgMHhCNCwgMHgzOSwgMHg0QSwgMHhBQSwgMHhERiwgMHhFQywgMHg4MiwgMHg4MywgMHhDNiwgMHg4MCwKKyAgICAweEExLCAweDg2LCAweDc0LCAweEM4LCAweDhFLCAweDM3LCAweEFCLCAweDdBLCAweEMyLCAweDM1LCAweDk5LCAweDYyLCAweEFELCAweDMwLCAweEQyLCAweDRFLAorICAgIDB4MzAsIDB4QTQsIDB4M0YsIDB4QzYsIDB4MTYsIDB4OUMsIDB4QkYsIDB4RDUsIDB4NUMsIDB4MDgsIDB4RjgsIDB4RjQsIDB4MzUsIDB4MjAsIDB4ODYsIDB4RjQsCisgICAgMHgwQywgMHgxMiwgMHg1NiwgMHhENCwgMHhEQiwgMHg3MywgMHhEQiwgMHg4MiwgMHgzMCwgMHg3MywgMHhEMiwgMHg2MCwgMHhDRiwgMHhGNywgMHhBOCwgMHhGNiwKKyAgICAweEM4LCAweDcxLCAweEIyLCAweDZFLCAweEMzLCAweDY1LCAweDA1LCAweDA3LCAweDZDLCAweDlDLCAweDNGLCAweEQ3LCAweEM5LCAweDZFLCAweDA5LCAweEZGLAorICAgIDB4OUUsIDB4RjAsIDB4NjgsIDB4QjYsIDB4RTAsIDB4REIsIDB4NkEsIDB4MUYsIDB4RTksIDB4QkMsIDB4OEMsIDB4QzEsIDB4RUIsIDB4QzUsIDB4MkEsIDB4OEIsCisgICAgMHg5OSwgMHgyMywgMHhGQywgMHgzNSwgMHhBRiwgMHhDMSwgMHg0QSwgMHhEOCwgMHg2MiwgMHgyOCwgMHg5NSwgMHg0QywgMHhENSwgMHg5MywgMHgyMSwgMHhCQywKKyAgICAweDE5LCAweDUyLCAweEEwLCAweDcxLCAweDNDLCAweDJCLCAweDNGLCAweDg4LCAweDY4LCAweEEwLCAweEUwLCAweDE2LCAweDEwLCAweDg1LCAweENBLCAweERCLAorICAgIDB4NDUsIDB4OTYsIDB4QkQsIDB4NDQsIDB4QjMsIDB4MjQsIDB4RTIsIDB4Q0IsIDB4RTYsIDB4RTcsIDB4QzksIDB4REQsIDB4N0EsIDB4NzgsIDB4OUIsIDB4N0MsCisgICAgMHgxRSwgMHgyOCwgMHgyQiwgMHhDMiwgMHgyQiwgMHg1MywgMHgxMiwgMHhCMiwgMHhENywgMHhCOCwgMHg1OSwgMHg0MSwgMHgxOSwgMHgzRCwgMHhGOSwgMHg2RiwKKyAgICAweDM0LCAweERCLCAweDc2LCAweDQzLCAweDhDLCAweDIxLCAweDJBLCAweEMyLCAweEFCLCAweDRCLCAweDBELCAweEM1LCAweDBBLCAweDkyLCAweDQxLCAweEQyLAorICAgIDB4RDIsIDB4RUIsIDB4NDAsIDB4N0MsIDB4MTQsIDB4NUQsIDB4NzMsIDB4M0QsIDB4NkMsIDB4NDIsIDB4QUMsIDB4RjEsIDB4QzgsIDB4MzcsIDB4Q0QsIDB4QzMsCisgICAgMHhDMCwgMHhERCwgMHhDMCwgMHg0MiwgMHgzNSwgMHg2QSwgMHg5OSwgMHhGMywgMHg3RiwgMHg2MywgMHhFMSwgMHgxNywgMHhCNSwgMHg4RiwgMHhDMywgMHgyQywKKyAgICAweEY1LCAweDY3LCAweDRBLCAweDk2LCAweDI1LCAweERELCAweEM5LCAweDA2LCAweDNBLCAweDg2LCAweDNDLCAweDJCLCAweDIzLCAweDA0LCAweEIwLCAweDUzLAorICAgIDB4M0MsIDB4ODIsIDB4REQsIDB4N0UsIDB4QUUsIDB4MUEsIDB4RjQsIDB4NzYsIDB4NjUsIDB4NTcsIDB4RjEsIDB4N0YsIDB4QkMsIDB4NUMsIDB4RkMsIDB4QjAsCisgICAgMHhCQiwgMHgwNCwgMHgxMywgMHg5QiwgMHg4MSwgMHg5QywgMHg3MCwgMHg4NywgMHhGRSwgMHg2QywgMHhDMiwgMHg5QiwgMHg4OCwgMHg4MywgMHgzQywgMHg0RCwKKyAgICAweDQzLCAweDBCLCAweDY0LCAweEUzLCAweDhDLCAweDc5LCAweDI1LCAweDVELCAweEY3LCAweDIwLCAweENGLCAweEFCLCAweDY1LCAweEMzLCAweDlGLCAweDE3LAorICAgIDB4REEsIDB4NUEsIDB4NkYsIDB4MDIsIDB4ODEsIDB4RUMsIDB4OEEsIDB4MjAsIDB4NTYsIDB4MDksIDB4MzEsIDB4RTIsIDB4MEUsIDB4ODAsIDB4NjgsIDB4RTUsCisgICAgMHhBNywgMHhGRiwgMHg3MCwgMHg5MiwgMHg2OCwgMHgwOSwgMHg3MCwgMHg5MywgMHg5OCwgMHhEMSwgMHg3MywgMHhENCwgMHg0NywgMHhBMiwgMHhEMywgMHg5MSwKKyAgICAweDAwLCAweEFCLCAweEYwLCAweDM1LCAweEQxLCAweEJFLCAweEI4LCAweEM5LCAweDlFLCAweDgyLCAweDM5LCAweDE3LCAweDJFLCAweEI3LCAweDhCLCAweDBDLAorICAgIDB4N0IsIDB4QUYsIDB4ODQsIDB4NUMsIDB4QjUsIDB4MEEsIDB4Q0UsIDB4MzEsIDB4MzAsIDB4RTcsIDB4MzgsIDB4MDYsIDB4QUEsIDB4MTAsIDB4NDgsIDB4MkMsCisgICAgMHhBOCwgMHhFMSwgMHhCRCwgMHhCRCwgMHhFRSwgMHgzRCwgMHhEQSwgMHgxMSwgMHhBMCwgMHgwQywgMHgwNywgMHhGQSwgMHhEMCwgMHg1QiwgMHhBNSwgMHg5MSwKKyAgICAweEU1LCAweDFELCAweDU0LCAweDZBLCAweEJGLCAweDUzLCAweDU2LCAweDU1LCAweDExLCAweEM5LCAweDVDLCAweDg5LCAweEZFLCAweDcyLCAweDVBLCAweEE3LAorICAgIDB4MTUsIDB4OUMsIDB4QkIsIDB4MzcsIDB4NEUsIDB4MTgsIDB4ODksIDB4RUQsIDB4RjIsIDB4ODIsIDB4ODMsIDB4RjEsIDB4NUIsIDB4OUQsIDB4MjcsIDB4M0QsCisgICAgMHhDRiwgMHhGMywgMHgwQiwgMHgwQywgMHhDQiwgMHg1MywgMHhGMywgMHgxMywgMHhBOCwgMHhBMSwgMHg1QSwgMHgwRSwgMHhCMiwgMHgyMSwgMHg4QiwgMHgxNiwKKyAgICAweEQ3LCAweDVFLCAweEFFLCAweEQyLCAweDdCLCAweDNBLCAweDJBLCAweENELCAweDIzLCAweDE0LCAweDBGLCAweEU3LCAweDBELCAweDgxLCAweDgyLCAweEYyLAorICAgIDB4NDEsIDB4OEIsIDB4NzcsIDB4NTMsIDB4MTYsIDB4QUUsIDB4QzcsIDB4REYsIDB4RjcsIDB4RDEsIDB4OTEsIDB4OEIsIDB4NzMsIDB4QTUsIDB4MEUsIDB4OUYsCisgICAgMHhDMywgMHhCRiwgMHgyQywgMHhDMywgMHhFNCwgMHhCNywgMHg2MCwgMHg2MCwgMHhGNywgMHhDQSwgMHg5NSwgMHg2RCwgMHhGQSwgMHg0RiwgMHg2NiwgMHhDMiwKKyAgICAweDk4LCAweEEwLCAweDcyLCAweEM5LCAweDBDLCAweDlFLCAweDZCLCAweEZELCAweDVELCAweDE0LCAweDhCLCAweDlFLCAweDdGLCAweEExLCAweDIwLCAweDQ4LAorICAgIDB4OTksIDB4MDksIDB4REMsIDB4QUEsIDB4QUIsIDB4QjQsIDB4NDYsIDB4MTAsIDB4QUIsIDB4MUIsIDB4NzcsIDB4OTgsIDB4MkYsIDB4N0QsIDB4RTAsIDB4RDQsCisgICAgMHgxOCwgMHg2NCwgMHg0QSwgMHg1QywgMHhCQSwgMHgyMywgMHgzQywgMHg3RSwgMHgyRiwgMHg5NiwgMHgxMywgMHhDNiwgMHg0RCwgMHgzOCwgMHhFRCwgMHhDRSwKKyAgICAweDRELCAweEIzLCAweDAyLCAweDIzLCAweEFFLCAweDlFLCAweEQ4LCAweDhBLCAweEMwLCAweDE3LCAweDM5LCAweDkxLCAweDc1LCAweDMzLCAweDZBLCAweEE5LAorICAgIDB4NzUsIDB4MTIsIDB4RTMsIDB4NjUsIDB4MTksIDB4MzAsIDB4OTgsIDB4MDAsIDB4NEQsIDB4ODIsIDB4REIsIDB4QTMsIDB4QTIsIDB4RTcsIDB4MTEsIDB4NTEsCisgICAgMHg3QSwgMHhBMSwgMHhGRSwgMHhEMiwgMHg0RSwgMHhFQSwgMHhCQiwgMHhDRCwgMHhBMSwgMHgyOSwgMHhCMCwgMHhCMywgMHg2MywgMHgyMywgMHg1NCwgMHgxMSwKKyAgICAweDBCLCAweEYzLCAweEJELCAweDgyLCAweEE0LCAweDYwLCAweEMyLCAweEZFLCAweEU5LCAweDVDLCAweEQ3LCAweEI1LCAweERBLCAweDdELCAweDZDLCAweDNELAorICAgIDB4NTcsIDB4RDEsIDB4RjksIDB4OTAsIDB4MDMsIDB4MEIsIDB4RTgsIDB4QzEsIDB4MjAsIDB4RUUsIDB4NDYsIDB4NjgsIDB4MTgsIDB4OTUsIDB4NjYsIDB4M0MsCisgICAgMHgwMSwgMHgyQSwgMHhFOCwgMHg4NCwgMHhDMSwgMHgyNiwgMHgzQiwgMHgxNSwgMHhCQiwgMHgyMCwgMHg1RSwgMHgzQiwgMHg1NywgMHgwRSwgMHg1OSwgMHhFQSwKKyAgICAweDFDLCAweEQzLCAweDZDLCAweEM3LCAweDM1LCAweEU3LCAweDIzLCAweEZFLCAweDQwLCAweDM3LCAweDg0LCAweDJELCAweDcwLCAweDBGLCAweEU5LCAweDJGLAorICAgIDB4QjIsIDB4MjIsIDB4RUEsIDB4QjksIDB4QjYsIDB4OTMsIDB4REMsIDB4NjcsIDB4RTEsIDB4RkIsIDB4MEUsIDB4MzQsIDB4OTEsIDB4MzUsIDB4NzYsIDB4NTIsCisgICAgMHgwMywgMHgyNywgMHg3OSwgMHg0MiwgMHg1NSwgMHgxRCwgMHg1QiwgMHg4RCwgMHhBQSwgMHgxNywgMHg1QywgMHg2NCwgMHgzRCwgMHg4RCwgMHhBMSwgMHgwNCwKKyAgICAweEJFLCAweDNFLCAweDZELCAweDkyLCAweDZFLCAweEU2LCAweDJDLCAweDBCLCAweDZFLCAweDlCLCAweDhBLCAweDVELCAweDE4LCAweDA1LCAweEI4LCAweEU0LAorICAgIDB4MTgsIDB4NkUsIDB4OUUsIDB4OTAsIDB4NzQsIDB4RDMsIDB4MUQsIDB4MzMsIDB4NEQsIDB4NzIsIDB4RjUsIDB4OTksIDB4RTMsIDB4MkIsIDB4MkEsIDB4MEMsCisgICAgMHgxMSwgMHg1QywgMHg5NCwgMHhCNywgMHg2NiwgMHhDQywgMHhBQywgMHhGMSwgMHgwRCwgMHg4RCwgMHgyMCwgMHhDNSwgMHg3NSwgMHgyMCwgMHg0QywgMHgwQSwKKyAgICAweEI4LCAweEJBLCAweENELCAweDBGLCAweEQ5LCAweEYxLCAweDU5LCAweDZFLCAweEM4LCAweDYzLCAweDVDLCAweDlFLCAweEU1LCAweEJCLCAweDg1LCAweDkzLAorICAgIDB4RkUsIDB4MUYsIDB4RDksIDB4OEMsIDB4ODksIDB4QjQsIDB4N0UsIDB4RDgsIDB4QjUsIDB4QzYsIDB4NjIsIDB4MDMsIDB4RDEsIDB4QUIsIDB4NUYsIDB4RDIsCisgICAgMHhCNCwgMHg0NywgMHhDMCwgMHhDNSwgMHhDOSwgMHg3NSwgMHgxNCwgMHg5MSwgMHgzNywgMHhGRSwgMHgzQiwgMHg3OCwgMHgxRiwgMHg1NiwgMHg4NywgMHgxMywKKyAgICAweEY0LCAweENDLCAweDNBLCAweEJELCAweDJDLCAweEMxLCAweDYxLCAweEY1LCAweEFCLCAweDNBLCAweEU4LCAweDlDLCAweDk3LCAweENBLCAweEFBLCAweEEzLAorICAgIDB4MTIsIDB4QzQsIDB4NzAsIDB4OEYsIDB4MzIsIDB4REQsIDB4RUEsIDB4RTgsIDB4RjgsIDB4OEEsIDB4MDMsIDB4NjUsIDB4ODksIDB4OTksIDB4NTMsIDB4NDUsCisgICAgMHgyOCwgMHhGMywgMHhBOCwgMHhGMywgMHgxNCwgMHg4MCwgMHhCNCwgMHhENiwgMHg0NCwgMHhENCwgMHgwMiwgMHhFRSwgMHg5QywgMHg1OCwgMHg0NiwgMHhDMSwKKyAgICAweDRGLCAweEVFLCAweEZBLCAweENELCAweDYzLCAweDRELCAweDg3LCAweEU2LCAweDIyLCAweDlGLCAweEY5LCAweERBLCAweDc3LCAweEQwLCAweDUxLCAweEFBLAorICAgIDB4MUYsIDB4MkEsIDB4MkYsIDB4NDgsIDB4NjYsIDB4NTUsIDB4RTAsIDB4MkEsIDB4NUYsIDB4RUMsIDB4MTIsIDB4QTYsIDB4MTQsIDB4QUQsIDB4N0QsIDB4REQsCisgICAgMHhDMiwgMHg3QiwgMHgzRSwgMHhFOSwgMHg4RiwgMHgyQywgMHhCOCwgMHg2MCwgMHg3RSwgMHgwMywgMHg3NiwgMHgyOCwgMHg3QywgMHgyMiwgMHgxOCwgMHg2QiwKKyAgICAweDUzLCAweDM5LCAweDIxLCAweDZBLCAweEIyLCAweDA1LCAweDc1LCAweDU4LCAweEI3LCAweEIxLCAweDQ5LCAweDFCLCAweDExLCAweDFELCAweEQ2LCAweEZBLAorICAgIDB4QzgsIDB4MDEsIDB4NzcsIDB4MTIsIDB4MTYsIDB4MTcsIDB4QjgsIDB4NzEsIDB4QzIsIDB4NkYsIDB4MTIsIDB4RTAsIDB4RkEsIDB4QkYsIDB4N0EsIDB4QjMsCisgICAgMHhFMywgMHhEQiwgMHhCNiwgMHgxOSwgMHg3OCwgMHhBRiwgMHgyNSwgMHgxOCwgMHg0RiwgMHg3QSwgMHgyMSwgMHg2MywgMHhGNiwgMHg2OCwgMHgzMywgMHhDQywKKyAgICAweEQ5LCAweDEyLCAweDRBLCAweDM2LCAweDczLCAweDNELCAweDdDLCAweEE0LCAweDZFLCAweDVFLCAweEZELCAweDVFLCAweDBELCAweDQ1LCAweERGLCAweDY4LAorICAgIDB4NjYsIDB4QzYsIDB4M0YsIDB4NDIsIDB4RUYsIDB4RDUsIDB4MEEsIDB4N0QsIDB4NDEsIDB4M0UsIDB4MUIsIDB4NEUsIDB4M0YsIDB4OTMsIDB4NEYsIDB4QUEsCisgICAgMHgwQiwgMHhCNCwgMHgzNCwgMHg2NywgMHhFQywgMHhFRiwgMHgyMywgMHg2QiwgMHg4NywgMHg4QSwgMHhGOSwgMHg2NiwgMHg0OCwgMHgxOSwgMHhGNSwgMHg5MiwKKyAgICAweDU3LCAweEE4LCAweDYwLCAweDUzLCAweEMzLCAweDM3LCAweEYzLCAweDYxLCAweDgyLCAweDQyLCAweEMzLCAweDA5LCAweDk1LCAweEJFLCAweEU5LCAweDFGLAorICAgIDB4QkEsIDB4MUYsIDB4MDEsIDB4QjYsIDB4MzcsIDB4QzcsIDB4RDksIDB4NjUsIDB4QUYsIDB4MkQsIDB4QjQsIDB4NDIsIDB4MjIsIDB4QzAsIDB4NTQsIDB4MUEsCisgICAgMHgzQiwgMHgxMywgMHgwNywgMHgzMCwgMHg5NCwgMHgxNSwgMHgwMSwgMHgxNywgMHgyMSwgMHgzNiwgMHgzQSwgMHg0RiwgMHhDMywgMHg3NiwgMHhDNCwgMHhBOSwKKyAgICAweDY0LCAweDBELCAweEUwLCAweDRGLCAweDkzLCAweENELCAweDVELCAweDdELCAweEQ0LCAweEI2LCAweERFLCAweEFDLCAweDlDLCAweEI2LCAweDc5LCAweDNCLAorICAgIDB4Q0UsIDB4NDksIDB4MzUsIDB4MjEsIDB4RTIsIDB4MjAsIDB4QzIsIDB4MzYsIDB4OUUsIDB4Q0YsIDB4NTEsIDB4NEQsIDB4MUQsIDB4NDEsIDB4MzIsIDB4MDUsCisgICAgMHhCMCwgMHg0NSwgMHg4NSwgMHhFRiwgMHg2OCwgMHg5NCwgMHhFMiwgMHg1NiwgMHg2MSwgMHg3QSwgMHgwOCwgMHhFNywgMHg0NiwgMHgzRSwgMHhCQSwgMHhFQywKKyAgICAweDlFLCAweDgyLCAweDE3LCAweDFCLCAweEU0LCAweEUxLCAweDMyLCAweENELCAweDlDLCAweEY4LCAweEMxLCAweEU1LCAweDFDLCAweDlFLCAweDg0LCAweEJCLAorICAgIDB4MjAsIDB4NzEsIDB4RjUsIDB4NkYsIDB4MEIsIDB4NTUsIDB4NkYsIDB4NEMsIDB4OTYsIDB4MjgsIDB4MDgsIDB4NkUsIDB4NUQsIDB4RjIsIDB4RkUsIDB4RjksCisgICAgMHhFMiwgMHhCQiwgMHhFRiwgMHg1OCwgMHhGQywgMHgzNCwgMHhFRiwgMHhENiwgMHhGNSwgMHhCMiwgMHg3NywgMHg1RiwgMHg2MiwgMHg0RiwgMHg4RiwgMHgzMiwKKyAgICAweEQ3LCAweEFELCAweDE0LCAweDA3LCAweEZDLCAweEFCLCAweDUzLCAweDA2LCAweEM5LCAweDY1LCAweDhBLCAweDBGLCAweERBLCAweERGLCAweDRGLCAweEE0LAorICAgIDB4ODgsIDB4NDUsIDB4RkMsIDB4MTcsIDB4NzQsIDB4MUMsIDB4RTAsIDB4OUYsIDB4QkMsIDB4OTEsIDB4RjMsIDB4N0EsIDB4OUQsIDB4RTgsIDB4OTIsIDB4RDYsCisgICAgMHgzQywgMHg4RSwgMHg3MSwgMHg2NSwgMHgzNCwgMHg2NCwgMHg0QiwgMHhBRSwgMHg0MSwgMHgwNCwgMHgzNywgMHgzRSwgMHhFMywgMHg3OSwgMHhBMSwgMHhENCwKKyAgICAweDRGLCAweDg5LCAweEU4LCAweDNDLCAweDFDLCAweDM2LCAweDQxLCAweDY2LCAweDE0LCAweEE0LCAweENGLCAweEM1LCAweDM4LCAweDU5LCAweEU2LCAweDhDLAorICAgIDB4NzUsIDB4RTcsIDB4NkYsIDB4M0IsIDB4MjAsIDB4MTEsIDB4NDEsIDB4NTUsIDB4MjgsIDB4NjcsIDB4MTIsIDB4RDUsIDB4NjcsIDB4ODEsIDB4QzUsIDB4NzYsCisgICAgMHgwMiwgMHhDMywgMHhDNywgMHgwMywgMHgxQywgMHhDMCwgMHgyRSwgMHhEQywgMHg3RSwgMHhEOSwgMHhBRCwgMHgyNCwgMHhFMCwgMHg3QSwgMHgwNywgMHg4RCwKKyAgICAweEM3LCAweEU1LCAweDJCLCAweDI3LCAweDEzLCAweEFDLCAweDc2LCAweDQ2LCAweDkzLCAweDRCLCAweDNCLCAweDFDLCAweEM3LCAweEQyLCAweDlFLCAweEVGLAorICAgIDB4MzIsIDB4RUEsIDB4M0EsIDB4NDMsIDB4REMsIDB4NzksIDB4RDYsIDB4RTgsIDB4NTIsIDB4ODksIDB4QUIsIDB4RUUsIDB4OUYsIDB4MjIsIDB4QUEsIDB4MDIsCisgICAgMHhENywgMHgwOCwgMHhFMiwgMHg1MCwgMHg5NCwgMHgxNiwgMHgwOSwgMHg0OSwgMHg1QywgMHg3MCwgMHg2MSwgMHg5NywgMHhFQSwgMHg5OSwgMHg0MiwgMHhBQywKKyAgICAweEZCLCAweDk3LCAweEZBLCAweDM1LCAweEExLCAweDgwLCAweEZELCAweDA2LCAweDQ0LCAweEEzLCAweDZGLCAweEZDLCAweDM5LCAweDdBLCAweEEyLCAweDM3LAorICAgIDB4ODcsIDB4M0IsIDB4NzIsIDB4QzIsIDB4N0EsIDB4MkEsIDB4QkEsIDB4NTQsIDB4NkIsIDB4RjksIDB4RkEsIDB4NzUsIDB4NDYsIDB4RTYsIDB4MUIsIDB4M0MsCisgICAgMHhFNywgMHgyMSwgMHhBMCwgMHhERSwgMHhDMSwgMHgyNiwgMHhDNywgMHgzRiwgMHg4QywgMHhBMSwgMHg4QSwgMHhDNSwgMHhCRCwgMHg3RCwgMHhDNiwgMHg3MCwKKyAgICAweEY3LCAweEI2LCAweDZCLCAweDg0LCAweENCLCAweDIwLCAweDRCLCAweDM0LCAweDRELCAweDUwLCAweEE1LCAweEQ4LCAweEYzLCAweDUwLCAweEYyLCAweEU3LAorICAgIDB4RTAsIDB4RTAsIDB4MzIsIDB4MDcsIDB4NUYsIDB4RjYsIDB4ODYsIDB4MDYsIDB4OUQsIDB4MzEsIDB4N0EsIDB4QjAsIDB4NjMsIDB4QjcsIDB4QjMsIDB4MDQsCisgICAgMHg1QiwgMHgzMSwgMHhBNiwgMHg5QiwgMHgyOSwgMHgyNywgMHg5NiwgMHhCMSwgMHg1QSwgMHg0MSwgMHgwOSwgMHhFMywgMHgxMywgMHgzOSwgMHg4RSwgMHgwQywKKyAgICAweDk0LCAweEZGLCAweEQyLCAweDJELCAweDhGLCAweDkxLCAweDczLCAweDQzLCAweEM3LCAweEZBLCAweDY1LCAweDU2LCAweDcwLCAweDk0LCAweDBCLCAweDVGLAorICAgIDB4QTMsIDB4RDEsIDB4Q0IsIDB4NEMsIDB4OTUsIDB4NUYsIDB4NjQsIDB4OEQsIDB4RDIsIDB4N0MsIDB4NjgsIDB4QkEsIDB4MzEsIDB4MEQsIDB4MUMsIDB4NTUsCisgICAgMHhCNiwgMHgyRiwgMHg5NiwgMHhCNywgMHhCMSwgMHg3OSwgMHhERSwgMHg1MCwgMHhCNSwgMHg4RCwgMHg0QywgMHhDNCwgMHhENSwgMHgzQSwgMHhFMiwgMHgxMywKKyAgICAweDgwLCAweDM3LCAweDY4LCAweDUxLCAweERBLCAweDMzLCAweDcwLCAweDk1LCAweDQ5LCAweDU3LCAweEI1LCAweDNGLCAweDNGLCAweDJGLCAweERBLCAweEM1LAorICAgIDB4RTMsIDB4NjMsIDB4OTUsIDB4NjMsIDB4MjksIDB4OTYsIDB4NEEsIDB4RUQsIDB4QjUsIDB4MkYsIDB4N0QsIDB4QzIsIDB4Q0MsIDB4NEMsIDB4ODcsIDB4REUsCisgICAgMHg0OSwgMHhFMiwgMHhDQSwgMHg0NiwgMHg2MCwgMHgzOCwgMHgzMSwgMHhCNCwgMHg2NSwgMHg4NiwgMHgzRiwgMHg5MSwgMHg2MSwgMHg4QywgMHgxMSwgMHgwRiwKKyAgICAweEFGLCAweDZGLCAweEVELCAweEVELCAweDRCLCAweDlGLCAweDMyLCAweEFCLCAweDdBLCAweEJCLCAweDgzLCAweENELCAweEU5LCAweDM2LCAweDU4LCAweDdFLAorICAgIDB4M0QsIDB4Q0QsIDB4RDEsIDB4MDAsIDB4NDEsIDB4ODAsIDB4NDEsIDB4MTQsIDB4RDMsIDB4RjEsIDB4RUEsIDB4MjQsIDB4RjIsIDB4RDcsIDB4NzksIDB4NzEsCisgICAgMHg3MSwgMHgwQiwgMHgyNCwgMHg1RSwgMHgyQiwgMHhBOCwgMHgxNSwgMHhDQSwgMHgyMCwgMHgzNSwgMHhGNSwgMHg4QiwgMHhFRCwgMHhDNiwgMHhENywgMHg3QiwKKyAgICAweEFCLCAweEY1LCAweDc0LCAweDdFLCAweDU1LCAweEVFLCAweENDLCAweDkyLCAweEYwLCAweEJCLCAweDBELCAweEU0LCAweEY3LCAweEQ5LCAweEQ0LCAweDc0LAorICAgIDB4ODksIDB4ODcsIDB4RjIsIDB4RTIsIDB4QUEsIDB4NzMsIDB4REYsIDB4Q0QsIDB4NUMsIDB4RTEsIDB4MEQsIDB4RjEsIDB4REEsIDB4QTksIDB4NjIsIDB4MzMsCisgICAgMHgyMCwgMHg2MSwgMHg1QiwgMHhDNCwgMHgxNywgMHg4QSwgMHhEQSwgMHhBMywgMHhEMSwgMHhBNywgMHhCMSwgMHgyNywgMHhBMSwgMHhENywgMHg0MSwgMHgwMiwKKyAgICAweDA2LCAweDRBLCAweDE4LCAweEM3LCAweERFLCAweDJCLCAweEQyLCAweEY5LCAweEQyLCAweDE2LCAweDQzLCAweDRCLCAweDAyLCAweDBFLCAweEQ2LCAweDJGLAorICAgIDB4MTYsIDB4MjgsIDB4Q0EsIDB4OUMsIDB4MTksIDB4QUUsIDB4MjcsIDB4NjEsIDB4QzgsIDB4MDksIDB4RDYsIDB4QUUsIDB4ODksIDB4OTAsIDB4NTIsIDB4MDQsCisgICAgMHhDMiwgMHgxNywgMHg3RCwgMHgzRCwgMHg0MSwgMHgxOCwgMHgyMCwgMHg3MCwgMHhCNCwgMHhCQSwgMHg4MywgMHg1MSwgMHhFMSwgMHhGMCwgMHgyMywgMHg3RSwKKyAgICAweDlCLCAweDRCLCAweDU2LCAweEM3LCAweDlGLCAweDNELCAweDBELCAweEU2LCAweDkyLCAweEVELCAweEMwLCAweEFELCAweDQ2LCAweEMzLCAweDM1LCAweDk0LAorICAgIDB4RkIsIDB4REIsIDB4M0MsIDB4QjMsIDB4OTUsIDB4OUMsIDB4RkQsIDB4QTIsIDB4OUUsIDB4MjMsIDB4NDksIDB4QTYsIDB4REMsIDB4QTAsIDB4NjMsIDB4QzMsCisgICAgMHg1RCwgMHgzNywgMHhGMSwgMHg5QywgMHg1NywgMHhFNywgMHg1OCwgMHhENSwgMHgyOCwgMHhDNCwgMHg3MywgMHgyQiwgMHhFMywgMHhCRiwgMHgxNCwgMHhEMywKKyAgICAweDgzLCAweEVDLCAweDQ5LCAweDAzLCAweDQyLCAweEQxLCAweDNGLCAweEU2LCAweDIyLCAweEVFLCAweEM1LCAweDIzLCAweDUwLCAweDY0LCAweDVGLCAweEE2LAorICAgIDB4OUYsIDB4OTIsIDB4NUEsIDB4NjksIDB4QzUsIDB4N0QsIDB4NzYsIDB4ODEsIDB4QjksIDB4MEYsIDB4NDMsIDB4MjQsIDB4OTQsIDB4MjAsIDB4RjEsIDB4NTEsCisgICAgMHhGNywgMHgzMCwgMHhGNywgMHg2QSwgMHgzQSwgMHg3MywgMHhFRiwgMHg1QiwgMHgzOSwgMHhEOCwgMHg3NSwgMHgwRiwgMHg3OCwgMHhGQiwgMHg3QSwgMHhGRCwKKyAgICAweEVCLCAweDgwLCAweEU4LCAweEYwLCAweDk4LCAweDRDLCAweEUyLCAweERFLCAweEE5LCAweDVGLCAweDc1LCAweDM2LCAweDYyLCAweDNGLCAweDdCLCAweDY2LAorICAgIDB4RjEsIDB4QTgsIDB4QTcsIDB4NTUsIDB4RDQsIDB4NkMsIDB4MDMsIDB4RTgsIDB4RkYsIDB4RDYsIDB4QkIsIDB4NTAsIDB4MEUsIDB4MzgsIDB4RkIsIDB4RDUsCisgICAgMHhEOSwgMHhCMiwgMHg0QiwgMHhGRCwgMHhDNSwgMHgwNSwgMHgwOCwgMHg4OCwgMHhCQywgMHg5MCwgMHg0NywgMHgxNSwgMHhFMSwgMHg5MiwgMHgwNCwgMHgxOCwKKyAgICAweDA2LCAweDRCLCAweDEzLCAweDEyLCAweDEyLCAweENFLCAweEY2LCAweEE0LCAweDlBLCAweEJDLCAweDFCLCAweDYwLCAweDlFLCAweDQ5LCAweEJBLCAweEM1LAorICAgIDB4NTYsIDB4OUQsIDB4NDcsIDB4MjEsIDB4NUYsIDB4RTUsIDB4MTksIDB4RkMsIDB4NzEsIDB4Q0IsIDB4OEQsIDB4NkYsIDB4OUUsIDB4OTEsIDB4MTgsIDB4NkYsCisgICAgMHg2RSwgMHhGOCwgMHgwNywgMHhFOSwgMHg2QywgMHhCMywgMHg2QiwgMHg5NCwgMHgyQywgMHhDRiwgMHhBQywgMHg1RiwgMHgxQywgMHgxQSwgMHhBMSwgMHhENywKKyAgICAweDhGLCAweDlBLCAweDFCLCAweDQ5LCAweDI4LCAweDIyLCAweEVBLCAweDUyLCAweERFLCAweDBELCAweEI1LCAweEY5LCAweDBFLCAweDA4LCAweEE0LCAweDc4LAorICAgIDB4M0IsIDB4N0YsIDB4MzEsIDB4MUMsIDB4NzUsIDB4OTEsIDB4MEEsIDB4QzQsIDB4MzUsIDB4NjgsIDB4MEQsIDB4REYsIDB4MDAsIDB4RUIsIDB4MzEsIDB4MEMsCisgICAgMHg4NCwgMHg2MiwgMHhFQywgMHhBRiwgMHg4MiwgMHhBRCwgMHg1MiwgMHhBMiwgMHhFMiwgMHgxRiwgMHhGRSwgMHhBQywgMHhCRSwgMHg0RCwgMHhGQiwgMHhDRSwKKyAgICAweDBDLCAweDgyLCAweEU1LCAweDRBLCAweDRELCAweEQ4LCAweDk4LCAweDU3LCAweEZELCAweEU2LCAweDgzLCAweDIxLCAweDk1LCAweDI1LCAweEYzLCAweEFELAorICAgIDB4MkUsIDB4QUQsIDB4NjksIDB4QjksIDB4NEUsIDB4MUUsIDB4NEEsIDB4MjksIDB4RjAsIDB4NzUsIDB4QjIsIDB4RTIsIDB4MDUsIDB4N0EsIDB4NEUsIDB4RjIsCisgICAgMHg3RCwgMHgxQSwgMHhGQiwgMHgwMywgMHhCNCwgMHhFRSwgMHhBMiwgMHg2OSwgMHg0NCwgMHg0MiwgMHg1QywgMHg5NiwgMHhGQiwgMHhFOSwgMHhDNywgMHg0MiwKKyAgICAweDc0LCAweDdBLCAweDJGLCAweERFLCAweENDLCAweEE0LCAweDVDLCAweDI5LCAweEE5LCAweDhDLCAweEI2LCAweDE4LCAweEJELCAweDBGLCAweEI1LCAweEI0LAorICAgIDB4NzksIDB4NjMsIDB4ODcsIDB4QUEsIDB4NjAsIDB4Q0EsIDB4RTksIDB4N0MsIDB4NkEsIDB4QTksIDB4OTQsIDB4MEYsIDB4N0EsIDB4NUIsIDB4RUIsIDB4NEQsCisgICAgMHgxNCwgMHgyNywgMHhDNSwgMHgyNywgMHhEQiwgMHg5OCwgMHg3QSwgMHhCNCwgMHg2QSwgMHg3OSwgMHhDQiwgMHgyNywgMHhFQiwgMHg2RSwgMHg1MSwgMHg5RSwKKyAgICAweDZDLCAweDU1LCAweEZDLCAweDQwLCAweEFGLCAweEJGLCAweDJGLCAweDY2LCAweEVELCAweEUxLCAweEIwLCAweDQ2LCAweDI5LCAweENFLCAweDA0LCAweDkyLAorICAgIDB4RjEsIDB4RjIsIDB4OUMsIDB4QTQsIDB4OUQsIDB4MEMsIDB4RkMsIDB4ODUsIDB4NTcsIDB4QzQsIDB4MUQsIDB4ODUsIDB4MjgsIDB4OEEsIDB4RkQsIDB4QTcsCisgICAgMHhGMSwgMHgzRSwgMHgyNCwgMHgxMCwgMHg5MCwgMHhCRSwgMHg5NywgMHhDRSwgMHgxNSwgMHg3OCwgMHg3QywgMHg0NiwgMHgxMywgMHhCMiwgMHg1RSwgMHg0MiwKKyAgICAweDRELCAweDY3LCAweDVELCAweDFGLCAweDcxLCAweDdBLCAweEIwLCAweEFELCAweEI4LCAweEFBLCAweDhFLCAweEEyLCAweDhFLCAweDFFLCAweDNGLCAweEQxLAorICAgIDB4N0MsIDB4RTQsIDB4NjYsIDB4Q0EsIDB4MDYsIDB4RDcsIDB4QzgsIDB4REMsIDB4OUIsIDB4QzUsIDB4ODcsIDB4MTEsIDB4OTksIDB4OEQsIDB4RUYsIDB4RTksCisgICAgMHhEQSwgMHhCMywgMHgyRiwgMHgyMCwgMHg4RCwgMHg5RiwgMHhCMCwgMHg0QiwgMHhGOCwgMHhERSwgMHg2OCwgMHhDNSwgMHg4OCwgMHhDMiwgMHg1RCwgMHg4NCwKKyAgICAweEI5LCAweEI1LCAweDkwLCAweDdBLCAweDQxLCAweDBDLCAweDMxLCAweDMzLCAweDU1LCAweDlELCAweEQ2LCAweEJFLCAweDg2LCAweDE1LCAweEE5LCAweEUzLAorICAgIDB4RkQsIDB4QjAsIDB4QjksIDB4NzksIDB4RjgsIDB4NUMsIDB4RjQsIDB4NEIsIDB4NDksIDB4NzQsIDB4MjcsIDB4ODEsIDB4QzEsIDB4RUMsIDB4QjQsIDB4MkIsCisgICAgMHg5MSwgMHg3RSwgMHhGMywgMHhDMiwgMHg5RCwgMHg2MiwgMHgzNSwgMHg0OSwgMHhGNCwgMHhFMywgMHg4RSwgMHg0RCwgMHhFRSwgMHg0NCwgMHhCNywgMHhFMiwKKyAgICAweDIwLCAweEIxLCAweDM4LCAweEM1LCAweDMwLCAweEZELCAweDAxLCAweDZDLCAweENDLCAweDZFLCAweDc2LCAweEY5LCAweDZDLCAweDI3LCAweEQxLCAweDBGLAorICAgIDB4NjcsIDB4MDQsIDB4Q0YsIDB4RjEsIDB4MDAsIDB4QjUsIDB4NkEsIDB4RDQsIDB4Q0QsIDB4NTgsIDB4NzYsIDB4QUYsIDB4MUMsIDB4RkYsIDB4NzQsIDB4RDcsCisgICAgMHhBNywgMHg3NywgMHg0NSwgMHhDRCwgMHgzMywgMHg0RSwgMHg0NSwgMHhCRCwgMHhDQywgMHgzOCwgMHg1QywgMHg2QywgMHhGNywgMHg3QywgMHhGNywgMHgyQiwKKyAgICAweENGLCAweDQ1LCAweDJDLCAweEM0LCAweDczLCAweEIxLCAweDJELCAweDJCLCAweEU2LCAweDA2LCAweDBGLCAweDRCLCAweEFCLCAweDQ4LCAweDFFLCAweEYyLAorICAgIDB4NTgsIDB4MEMsIDB4OEIsIDB4NDcsIDB4NEQsIDB4ODEsIDB4MzIsIDB4MjMsIDB4N0YsIDB4N0QsIDB4MkYsIDB4RjQsIDB4ODAsIDB4NDMsIDB4M0UsIDB4OEEsCisgICAgMHhEQywgMHg1RCwgMHgxRiwgMHgyNywgMHhFNiwgMHhBMiwgMHhEQywgMHhDOCwgMHhCNiwgMHhGNywgMHg2MywgMHgwRSwgMHg2RCwgMHhFQiwgMHhFOCwgMHgxNiwKKyAgICAweDUyLCAweDY5LCAweDk3LCAweEYyLCAweDYxLCAweDdCLCAweDJDLCAweDhBLCAweDE1LCAweEQ4LCAweEUxLCAweEU5LCAweDI4LCAweEZGLCAweDU0LCAweDkyLAorICAgIDB4RjMsIDB4Q0IsIDB4NzIsIDB4NzIsIDB4QjUsIDB4MjMsIDB4NDgsIDB4RTksIDB4NTIsIDB4QTMsIDB4QzcsIDB4M0IsIDB4MUQsIDB4MDUsIDB4OTAsIDB4MjYsCisgICAgMHgxMCwgMHhBNCwgMHg0MiwgMHg5QiwgMHhBNSwgMHhBRiwgMHg3RiwgMHg5OSwgMHgzQiwgMHg1QSwgMHg3MCwgMHhBNCwgMHg2QywgMHhGOCwgMHhCNSwgMHhDMywKKyAgICAweDQyLCAweDQ2LCAweDQ3LCAweEVBLCAweDYyLCAweEEwLCAweDhGLCAweDM0LCAweDVGLCAweDVGLCAweDBBLCAweDg4LCAweEI5LCAweDE5LCAweDQ3LCAweEZELAorICAgIDB4OTQsIDB4MDQsIDB4MDUsIDB4N0MsIDB4OEIsIDB4NjUsIDB4QzQsIDB4MUQsIDB4RDIsIDB4RkMsIDB4REQsIDB4MEUsIDB4M0EsIDB4OTIsIDB4OEIsIDB4RTAsCisgICAgMHhDRSwgMHhCRCwgMHhGOSwgMHgxQiwgMHhGQiwgMHg5MSwgMHhEMywgMHg5MCwgMHg4MCwgMHgwOCwgMHg2QiwgMHg5NCwgMHgyMCwgMHhDQywgMHhDOCwgMHhDOSwKKyAgICAweEY5LCAweDYwLCAweDI4LCAweDdELCAweDZGLCAweERBLCAweDVFLCAweDY0LCAweEUwLCAweDFDLCAweDVGLCAweEU5LCAweEI4LCAweEMzLCAweDMzLCAweDE4LAorICAgIDB4QTUsIDB4NjAsIDB4RTQsIDB4RTEsIDB4NDUsIDB4MUIsIDB4RUUsIDB4MjAsIDB4RkYsIDB4NDAsIDB4NTIsIDB4RkIsIDB4M0YsIDB4RDIsIDB4MDMsIDB4MEEsCisgICAgMHg3MSwgMHhEMiwgMHhDRSwgMHhDNSwgMHg4NCwgMHg5OCwgMHgyMSwgMHhFMSwgMHhGOCwgMHgxMywgMHhENiwgMHg3OCwgMHgyMSwgMHg3NSwgMHgzQywgMHgyMiwKKyAgICAweDFBLCAweENDLCAweDY3LCAweDEyLCAweDlCLCAweDMxLCAweDA2LCAweEI3LCAweDVFLCAweEU2LCAweDRCLCAweEMyLCAweDdFLCAweDEyLCAweENBLCAweDZELAorICAgIDB4RDYsIDB4OTUsIDB4NjcsIDB4REMsIDB4RjEsIDB4N0MsIDB4QzgsIDB4QUQsIDB4OTUsIDB4NTMsIDB4MjUsIDB4N0IsIDB4MTYsIDB4RDMsIDB4MEIsIDB4RTQsCisgICAgMHhGNCwgMHgxNywgMHg4NiwgMHhDNiwgMHhBMSwgMHgyQiwgMHgyOCwgMHhBOSwgMHgwMiwgMHgxRCwgMHg0OCwgMHgxNCwgMHg0MiwgMHgwQSwgMHg3NiwgMHg5NSwKKyAgICAweDNELCAweEM0LCAweDJELCAweDc3LCAweDVBLCAweDY3LCAweDZGLCAweERCLCAweDgxLCAweEE0LCAweEE0LCAweDc0LCAweDE5LCAweEEwLCAweEZDLCAweDJGLAorICAgIDB4OUQsIDB4MjYsIDB4NEQsIDB4NDQsIDB4NDQsIDB4REQsIDB4QUUsIDB4Q0IsIDB4ODUsIDB4QkMsIDB4MjEsIDB4QkIsIDB4RkMsIDB4REYsIDB4REIsIDB4NTQsCisgICAgMHhBQSwgMHgyMSwgMHg5NSwgMHgwQywgMHhGRiwgMHgyQywgMHgxNywgMHgzNywgMHg1QSwgMHhGQywgMHg0QSwgMHgzOSwgMHgzNCwgMHhFRCwgMHhFNCwgMHg3MSwKKyAgICAweDg0LCAweDVDLCAweDI4LCAweEVCLCAweDBBLCAweDI1LCAweDE2LCAweEE0LCAweEExLCAweDhCLCAweDYzLCAweEIwLCAweEZCLCAweDI2LCAweEYzLCAweEQxLAorICAgIDB4MzcsIDB4MEUsIDB4NTIsIDB4RjksIDB4NzcsIDB4M0QsIDB4QUEsIDB4NjYsIDB4QzcsIDB4QjksIDB4RUQsIDB4ODQsIDB4ODgsIDB4RkUsIDB4RUYsIDB4MzMsCisgICAgMHg1QSwgMHg2MSwgMHg4NywgMHgwMywgMHgyQSwgMHg4MywgMHhEQiwgMHg0QywgMHg3MywgMHhCRSwgMHhGOSwgMHg2QSwgMHgwNCwgMHgzRiwgMHhFQywgMHg2RSwKKyAgICAweENDLCAweDVELCAweEE1LCAweDhGLCAweEExLCAweENCLCAweDUzLCAweDg2LCAweDgwLCAweEM0LCAweDIxLCAweEJBLCAweEMyLCAweDJELCAweDY1LCAweEU3LAorICAgIDB4RTIsIDB4MzUsIDB4OTcsIDB4MkMsIDB4QTYsIDB4RTIsIDB4MDksIDB4NzYsIDB4MTAsIDB4QTIsIDB4QzAsIDB4MzAsIDB4REYsIDB4OUEsIDB4REMsIDB4MzgsCisgICAgMHgwNiwgMHgzRCwgMHgwNSwgMHgyNiwgMHgxNiwgMHg0RCwgMHhBOCwgMHhBOSwgMHgxRSwgMHgwNywgMHgxRCwgMHg2MiwgMHg2QywgMHhBNSwgMHhDQywgMHhFQiwKKyAgICAweDA1LCAweDIxLCAweDY0LCAweEQ0LCAweDNFLCAweDRCLCAweEIzLCAweDk2LCAweDE0LCAweDc1LCAweEZDLCAweDVDLCAweENBLCAweERCLCAweDFGLCAweERDLAorICAgIDB4NDEsIDB4OUQsIDB4NjAsIDB4MDUsIDB4RjgsIDB4ODksIDB4QzksIDB4N0UsIDB4M0IsIDB4NzQsIDB4NzUsIDB4NDksIDB4MzQsIDB4M0EsIDB4NzQsIDB4NzksCisgICAgMHhERiwgMHgxNiwgMHgzRCwgMHg2RiwgMHhBMSwgMHhGMywgMHgyNiwgMHgyOSwgMHg2MSwgMHg1RiwgMHhCQiwgMHhFQiwgMHg2MiwgMHg0MiwgMHgzQSwgMHg3RiwKKyAgICAweDJGLCAweEM1LCAweDE5LCAweEQ2LCAweDc3LCAweDlFLCAweDFELCAweEY1LCAweDE1LCAweDcxLCAweDZGLCAweDc0LCAweDFFLCAweEU1LCAweEJBLCAweDA4LAorICAgIDB4MjEsIDB4MDcsIDB4NjQsIDB4OUYsIDB4NzgsIDB4NUEsIDB4MTEsIDB4MjAsIDB4RkIsIDB4NDMsIDB4NEYsIDB4NEEsIDB4RkQsIDB4NkEsIDB4MkYsIDB4QjcsCisgICAgMHg2NiwgMHg3QSwgMHhBNSwgMHgyNywgMHhGNywgMHg2RiwgMHgwNSwgMHg4NSwgMHhDQywgMHhDMiwgMHhDNSwgMHhERSwgMHgxOCwgMHg0MywgMHhCOSwgMHg5RiwKKyAgICAweDg0LCAweEJBLCAweDA5LCAweDFBLCAweDBFLCAweDdFLCAweEJFLCAweEJBLCAweEU0LCAweEQ2LCAweDFFLCAweDlFLCAweDgzLCAweDdELCAweDFELCAweEVELAorICAgIDB4REUsIDB4NEQsIDB4OTYsIDB4OTEsIDB4NTAsIDB4MkQsIDB4NTQsIDB4NDYsIDB4OTgsIDB4QzUsIDB4RTIsIDB4RTYsIDB4RTcsIDB4NkYsIDB4QjQsIDB4MDYsCisgICAgMHhGMCwgMHg1NiwgMHg0QywgMHgyQiwgMHhCMSwgMHhFQywgMHhDNCwgMHg5OCwgMHg4NywgMHg3NiwgMHgwMCwgMHhGOCwgMHg0NywgMHg3MCwgMHg0RiwgMHgxMywKKyAgICAweDJDLCAweERFLCAweDc5LCAweDlCLCAweEI1LCAweDkwLCAweEZBLCAweEMzLCAweEFBLCAweDBELCAweEI2LCAweENDLCAweDM3LCAweEIyLCAweDVELCAweEI3LAorICAgIDB4OEIsIDB4MTksIDB4OTYsIDB4MjAsIDB4RkYsIDB4MEMsIDB4MjEsIDB4MjMsIDB4NDEsIDB4QTgsIDB4MTUsIDB4M0YsIDB4MDMsIDB4MDEsIDB4NTcsIDB4QTIsCisgICAgMHg3RiwgMHhGMSwgMHhFNiwgMHg0QiwgMHg1MCwgMHhDMywgMHhENiwgMHhGMywgMHhFRiwgMHhFMCwgMHg3QSwgMHhFRSwgMHg3NiwgMHhBMCwgMHg2NywgMHgyMiwKKyAgICAweDA5LCAweDQ1LCAweDkxLCAweDA3LCAweDg3LCAweDFFLCAweEM2LCAweDJBLCAweDEzLCAweDQ1LCAweDEwLCAweDBFLCAweDcyLCAweDlFLCAweEZCLCAweEEwLAorICAgIDB4OUMsIDB4QTQsIDB4QTMsIDB4RTcsIDB4MTcsIDB4QzUsIDB4OTAsIDB4MzAsIDB4NDIsIDB4ODcsIDB4MUIsIDB4M0EsIDB4QzAsIDB4RDksIDB4QTcsIDB4OUEsCisgICAgMHhFRSwgMHhERSwgMHg0MiwgMHhGRSwgMHg5NiwgMHhEMywgMHg3QSwgMHgzRSwgMHhCRSwgMHhBRiwgMHhFOSwgMHhDRCwgMHhFRiwgMHhBNiwgMHhEOSwgMHhDNiwKKyAgICAweDBFLCAweDJDLCAweEE5LCAweEMxLCAweDZCLCAweDk5LCAweDExLCAweEMyLCAweDkxLCAweDQ1LCAweDBCLCAweEM0LCAweEQwLCAweEMzLCAweEQ3LCAweEY5LAorICAgIDB4MEIsIDB4OUEsIDB4MUUsIDB4MkUsIDB4QzcsIDB4MDEsIDB4MjIsIDB4NkEsIDB4NzUsIDB4NTAsIDB4ODksIDB4NzksIDB4MDcsIDB4MjEsIDB4OEMsIDB4RjksCisgICAgMHhBNiwgMHgxNSwgMHg5NSwgMHhDMCwgMHhFMywgMHhGQywgMHgyMCwgMHg2NSwgMHgzNiwgMHgyRCwgMHg1RiwgMHhBRSwgMHhGRSwgMHhDRSwgMHg5NywgMHg3MSwKKyAgICAweEY1LCAweDNBLCAweEJELCAweENCLCAweEExLCAweDlGLCAweDQ2LCAweEE2LCAweDNBLCAweEE3LCAweDdBLCAweDI2LCAweEEyLCAweERFLCAweDM2LCAweDE5LAorICAgIDB4MTUsIDB4REUsIDB4MTcsIDB4N0UsIDB4RDcsIDB4NUUsIDB4NEEsIDB4RUUsIDB4RTIsIDB4QzksIDB4NTMsIDB4MjUsIDB4NzcsIDB4QzMsIDB4MTgsIDB4QkIsCisgICAgMHhCNCwgMHhBQSwgMHg0MywgMHhGRCwgMHg1QywgMHgyMSwgMHg4QSwgMHgzNywgMHhEQiwgMHgxQywgMHgzRCwgMHgzNiwgMHgyRSwgMHg2RCwgMHhFQSwgMHg2MSwKKyAgICAweDcyLCAweDlFLCAweEYxLCAweDZGLCAweEQxLCAweDE0LCAweEY2LCAweDI5LCAweDRFLCAweEZELCAweEZELCAweDNELCAweDRELCAweEI5LCAweDI1LCAweDRCLAorICAgIDB4MzgsIDB4QTIsIDB4MDAsIDB4RUIsIDB4MTQsIDB4QkEsIDB4RUUsIDB4QjEsIDB4MDMsIDB4ODQsIDB4OTgsIDB4RjQsIDB4Q0YsIDB4MDUsIDB4OUUsIDB4MUMsCisgICAgMHg3QSwgMHg4RiwgMHhBRSwgMHg4NSwgMHg3NiwgMHg1NywgMHhGNCwgMHg4RSwgMHgxNiwgMHgwNiwgMHgzNSwgMHg3NywgMHhCQiwgMHg5MCwgMHg0MSwgMHg5RSwKKyAgICAweENCLCAweDUyLCAweDk3LCAweENBLCAweEMxLCAweDdGLCAweEE5LCAweDAxLCAweDhCLCAweDdELCAweEM0LCAweEI4LCAweEQ5LCAweERDLCAweDAxLCAweDNELAorICAgIDB4NTgsIDB4RjgsIDB4MTAsIDB4RDEsIDB4REYsIDB4MUEsIDB4NkEsIDB4MjcsIDB4RTIsIDB4NjUsIDB4NDcsIDB4MUEsIDB4QzMsIDB4OEMsIDB4REIsIDB4RTQsCisgICAgMHhDNSwgMHg1QywgMHg3MiwgMHgwRCwgMHhBQiwgMHg4NCwgMHg3MSwgMHg1NCwgMHhFMiwgMHgwRiwgMHhCQiwgMHhERSwgMHhFMCwgMHgxRiwgMHhCMSwgMHg3MCwKKyAgICAweDA4LCAweDA5LCAweDZCLCAweDQzLCAweDcyLCAweDc2LCAweDcxLCAweDdDLCAweEE1LCAweDg3LCAweDY1LCAweDExLCAweDdGLCAweEEzLCAweDE3LCAweDkzLAorICAgIDB4MUMsIDB4ODgsIDB4NEMsIDB4NkQsIDB4OUUsIDB4MzYsIDB4MTcsIDB4MzcsIDB4N0YsIDB4MTgsIDB4REUsIDB4NkIsIDB4QzksIDB4RUYsIDB4MDQsIDB4OTUsCisgICAgMHhFNiwgMHgwQSwgMHgyMCwgMHhFRiwgMHgzMCwgMHg1MywgMHhFRCwgMHgwOSwgMHgxRiwgMHgwOCwgMHhBMywgMHg0MiwgMHgxQiwgMHhBNSwgMHg1RiwgMHgyMSwKKyAgICAweDlELCAweEZGLCAweEUxLCAweDEzLCAweDIzLCAweEM5LCAweDM2LCAweEI0LCAweDQzLCAweDFGLCAweDM0LCAweDJBLCAweDE4LCAweEM1LCAweDI2LCAweDQyLAorICAgIDB4Q0IsIDB4RkIsIDB4RjMsIDB4NjcsIDB4QTgsIDB4NUUsIDB4RjYsIDB4MTQsIDB4NTAsIDB4NjgsIDB4QTYsIDB4RjksIDB4NkQsIDB4NzgsIDB4QjUsIDB4RjMsCisgICAgMHg4QSwgMHgxNCwgMHhFMywgMHhGRSwgMHhCNSwgMHg3QywgMHg4OCwgMHgxMSwgMHg1NiwgMHhEQSwgMHg5QSwgMHg2MiwgMHgzMCwgMHg0NiwgMHgzNCwgMHhGQiwKKyAgICAweDlELCAweDk5LCAweEUwLCAweEE2LCAweEIyLCAweDJGLCAweEE2LCAweEYzLCAweDdGLCAweDJELCAweEFDLCAweDcxLCAweDI5LCAweDBBLCAweDNELCAweDg2LAorICAgIDB4QjAsIDB4NzUsIDB4OTcsIDB4QTQsIDB4QzMsIDB4MjgsIDB4OUQsIDB4NkQsIDB4MEYsIDB4QTEsIDB4M0EsIDB4QjEsIDB4QzcsIDB4RUIsIDB4QzUsIDB4M0QsCisgICAgMHgzOCwgMHhFNSwgMHhFRCwgMHhBNiwgMHhEOSwgMHhERiwgMHgyNSwgMHgzOCwgMHg4MSwgMHhCQywgMHhCQSwgMHg3MywgMHg4MCwgMHgwOSwgMHhFRCwgMHg5OCwKKyAgICAweDU5LCAweEI5LCAweEQ5LCAweDcxLCAweEQxLCAweEQ4LCAweDZCLCAweEY3LCAweDA4LCAweEY4LCAweDhFLCAweDBBLCAweEQyLCAweDU3LCAweDY2LCAweEVBLAorICAgIDB4MDIsIDB4NUYsIDB4OEIsIDB4RjMsIDB4QUQsIDB4NjIsIDB4Q0EsIDB4MjUsIDB4ODMsIDB4RDMsIDB4QTQsIDB4MEMsIDB4M0EsIDB4NjgsIDB4OEUsIDB4RkMsCisgICAgMHg4QSwgMHhERSwgMHhEOCwgMHg0MiwgMHg0NywgMHg2QywgMHgzOCwgMHg1NywgMHhFNiwgMHhEMiwgMHg2QiwgMHg0MiwgMHhERCwgMHg2OCwgMHg4RSwgMHhCQSwKKyAgICAweENELCAweEM3LCAweEZCLCAweDFDLCAweDcyLCAweDZFLCAweEU4LCAweDJDLCAweDE2LCAweENGLCAweEIxLCAweEVCLCAweDFGLCAweDA3LCAweEY0LCAweEVCLAorICAgIDB4NTYsIDB4NDQsIDB4RDIsIDB4QTUsIDB4QzgsIDB4Q0IsIDB4OTcsIDB4RDUsIDB4NzEsIDB4QTEsIDB4QUUsIDB4MTEsIDB4MzgsIDB4MkYsIDB4MkUsIDB4QjgsCisgICAgMHgwNiwgMHg4MCwgMHg3MywgMHhBMiwgMHg4MiwgMHhDNiwgMHgwRiwgMHgyNCwgMHg1OCwgMHhEOSwgMHhEQiwgMHg1QSwgMHgxQSwgMHhBQywgMHhDQSwgMHhDQSwKKyAgICAweDZDLCAweEIzLCAweDc0LCAweDU5LCAweDRBLCAweEJDLCAweDQyLCAweDgwLCAweDhELCAweDJBLCAweEY3LCAweDVFLCAweDEyLCAweDdGLCAweDAxLCAweDAxLAorICAgIDB4NkIsIDB4RjQsIDB4MEIsIDB4RkUsIDB4ODMsIDB4RDEsIDB4QzksIDB4OUMsIDB4MTEsIDB4RkUsIDB4N0MsIDB4MTgsIDB4QkQsIDB4RjAsIDB4QjksIDB4OTMsCisgICAgMHhFQSwgMHg1RSwgMHg2RiwgMHg5NSwgMHhBMSwgMHgwNiwgMHg5MCwgMHhBMiwgMHhFQSwgMHhBRCwgMHhBNSwgMHg4NywgMHgyMywgMHg3OCwgMHg5QSwgMHgyMCwKKyAgICAweDUwLCAweEFGLCAweDM4LCAweDE3LCAweDZELCAweDE0LCAweEJCLCAweDY4LCAweDVDLCAweENCLCAweDZFLCAweEM3LCAweEQzLCAweDExLCAweDgxLCAweDQzLAorICAgIDB4RDUsIDB4RTUsIDB4ODcsIDB4RTQsIDB4NEUsIDB4RkIsIDB4RUUsIDB4M0UsIDB4M0EsIDB4NkQsIDB4RUMsIDB4NzksIDB4RTUsIDB4OTAsIDB4NjgsIDB4Q0IsCisgICAgMHhGNywgMHgwMSwgMHhGRiwgMHgyNiwgMHgzQiwgMHg4MiwgMHhCMSwgMHg2NywgMHgwNCwgMHhCNywgMHgzMiwgMHg1MiwgMHhBMCwgMHhGRiwgMHg2MCwgMHg5NywKKyAgICAweDhELCAweEE5LCAweDhDLCAweERDLCAweEYzLCAweDM3LCAweEUxLCAweDg3LCAweDFGLCAweDk1LCAweEFELCAweDE2LCAweDY5LCAweDRCLCAweEYyLCAweDI2LAorICAgIDB4RTQsIDB4NzksIDB4MUMsIDB4M0MsIDB4QTgsIDB4ODcsIDB4NEQsIDB4OUQsIDB4MEQsIDB4QjIsIDB4MDEsIDB4MjksIDB4MjIsIDB4QjYsIDB4MjAsIDB4OEIsCisgICAgMHg2NiwgMHg4QSwgMHgxQSwgMHgwOSwgMHhGNCwgMHhFMSwgMHhBRiwgMHg1MiwgMHhCQSwgMHg2MywgMHhBOSwgMHgzNSwgMHhEMSwgMHgxRCwgMHg0QiwgMHhERCwKKyAgICAweEJFLCAweDMwLCAweDExLCAweDRFLCAweEZFLCAweENELCAweDU3LCAweDU0LCAweEZBLCAweDM5LCAweEI0LCAweDhDLCAweDJCLCAweDBELCAweDgzLCAweDM2LAorICAgIDB4MTgsIDB4ODEsIDB4RTUsIDB4QkEsIDB4MTgsIDB4REYsIDB4NDEsIDB4NUYsIDB4MjEsIDB4MjUsIDB4Q0UsIDB4NDcsIDB4MTEsIDB4NTYsIDB4MjAsIDB4NUQsCisgICAgMHg3MiwgMHhGQSwgMHg1NCwgMHgxRSwgMHhGNSwgMHgwQSwgMHgzMSwgMHg5MiwgMHg4NSwgMHg5NSwgMHgyNiwgMHgxMSwgMHgyNiwgMHgyNCwgMHg2NywgMHg4NCwKKyAgICAweDFBLCAweEEyLCAweDcxLCAweEZCLCAweEFFLCAweDdFLCAweEFFLCAweDI3LCAweEI1LCAweDY0LCAweEYwLCAweEYzLCAweDQwLCAweDU1LCAweDdELCAweERCLAorICAgIDB4RjMsIDB4MjgsIDB4NjIsIDB4REQsIDB4RjAsIDB4RkEsIDB4NDEsIDB4RDcsIDB4Q0EsIDB4MzgsIDB4NzMsIDB4MjUsIDB4RDksIDB4MTMsIDB4M0UsIDB4Q0IsCisgICAgMHhDMiwgMHg0OSwgMHg3OSwgMHgxMCwgMHhFOSwgMHg0MywgMHhDRCwgMHhFQSwgMHg3OCwgMHg2QywgMHg2MSwgMHgzNiwgMHg4NywgMHhGMywgMHgzNywgMHg4MCwKKyAgICAweDA4LCAweDNDLCAweDVCLCAweDQxLCAweDFBLCAweDU5LCAweDNFLCAweEEwLCAweDJELCAweDA3LCAweDAzLCAweDlCLCAweEVFLCAweDQ3LCAweEVDLCAweEI0LAorICAgIDB4QjgsIDB4QjUsIDB4NUMsIDB4NUYsIDB4NzAsIDB4QUIsIDB4MDQsIDB4MTIsIDB4RjcsIDB4NUEsIDB4ODksIDB4QjcsIDB4MDAsIDB4NkEsIDB4MkEsIDB4MzcsCisgICAgMHgxNCwgMHg1NiwgMHhBOCwgMHgwMywgMHg0NSwgMHgzOCwgMHhCQiwgMHhDNSwgMHg3MCwgMHhBQiwgMHg0QiwgMHhCRSwgMHg2RCwgMHhFQSwgMHhBNiwgMHgyNywKKyAgICAweDFGLCAweDE5LCAweDVBLCAweDAyLCAweDEyLCAweEUwLCAweDlFLCAweDgzLCAweEQ5LCAweDc4LCAweDI3LCAweDM0LCAweDZCLCAweDgxLCAweDJBLCAweDgyLAorICAgIDB4NzMsIDB4ODAsIDB4MDYsIDB4N0UsIDB4OUMsIDB4RTIsIDB4RkIsIDB4NkUsIDB4MTIsIDB4QUUsIDB4QTYsIDB4N0UsIDB4OEQsIDB4QkYsIDB4QUMsIDB4NUEsCisgICAgMHg2QywgMHg0OSwgMHg4MSwgMHhFNywgMHgwMywgMHg4QywgMHgzQywgMHgwNSwgMHgwMSwgMHg2MSwgMHg5NiwgMHhEOCwgMHgwNSwgMHg2MiwgMHhGQSwgMHgzNiwKKyAgICAweEJDLCAweDI2LCAweDhFLCAweEIzLCAweDJELCAweDQ5LCAweDgwLCAweDZCLCAweDRELCAweEYxLCAweDYzLCAweDQyLCAweDU2LCAweDUzLCAweEE4LCAweDhFLAorICAgIDB4NjMsIDB4QjIsIDB4Q0YsIDB4MzgsIDB4MzEsIDB4RjAsIDB4NTYsIDB4NkQsIDB4NTgsIDB4NkEsIDB4RUIsIDB4NTksIDB4MDcsIDB4MjcsIDB4MDgsIDB4MUQsCisgICAgMHg2NCwgMHhFMiwgMHg1QSwgMHg2OSwgMHhCRSwgMHg0NywgMHhFOCwgMHhDQSwgMHhFRSwgMHg2NiwgMHgzRCwgMHg5NSwgMHhFMywgMHgwMCwgMHgyNCwgMHhBRiwKKyAgICAweEVBLCAweEY2LCAweEU4LCAweDMwLCAweEIyLCAweDI0LCAweDg1LCAweDMwLCAweDI4LCAweEZCLCAweDQ2LCAweDdBLCAweERDLCAweEMxLCAweDExLCAweEY2LAorICAgIDB4QkUsIDB4QkIsIDB4MTIsIDB4OTIsIDB4OUUsIDB4N0EsIDB4ODUsIDB4MjQsIDB4MjUsIDB4RjEsIDB4RkIsIDB4REUsIDB4RDEsIDB4MUUsIDB4NDYsIDB4Q0UsCisgICAgMHg0RCwgMHhDQywgMHhCNCwgMHg1RCwgMHhEMiwgMHg0MSwgMHg3RiwgMHg0NywgMHg5MiwgMHgxQSwgMHhBRSwgMHhCMywgMHhCNSwgMHgyNiwgMHg5NiwgMHhCMiwKKyAgICAweDM4LCAweDkyLCAweDMzLCAweDY3LCAweDUyLCAweDNELCAweEE5LCAweDNDLCAweEEwLCAweDQ2LCAweDQzLCAweEU4LCAweEVFLCAweDIyLCAweDgyLCAweEQ3LAorICAgIDB4RUMsIDB4QkMsIDB4NzksIDB4OUUsIDB4MEYsIDB4NDcsIDB4MjAsIDB4MzIsIDB4NDgsIDB4N0UsIDB4NzksIDB4MkMsIDB4ODIsIDB4RDcsIDB4NTcsIDB4MzEsCisgICAgMHhEOCwgMHhFOCwgMHhFQywgMHg0RCwgMHg0NCwgMHg3RSwgMHg5MiwgMHhCOCwgMHhBMiwgMHhFMywgMHhDNSwgMHgwOSwgMHg2QywgMHgxMywgMHhGRiwgMHhGMCwKKyAgICAweDM1LCAweDEyLCAweDYzLCAweDQ2LCAweDQ2LCAweDM1LCAweDNGLCAweEM3LCAweDdDLCAweEI4LCAweEVBLCAweEE3LCAweDk2LCAweDlELCAweDE5LCAweEFDLAorICAgIDB4NzIsIDB4NDQsIDB4QTUsIDB4QkMsIDB4NDEsIDB4RDAsIDB4NEQsIDB4QTIsIDB4RDcsIDB4MDAsIDB4MTksIDB4RkYsIDB4RDcsIDB4M0YsIDB4MDksIDB4RUIsCisgICAgMHg1OCwgMHhBQywgMHg4MSwgMHg5RCwgMHhCQiwgMHg4MCwgMHg3NCwgMHhGQSwgMHgyRSwgMHhCQywgMHg2RCwgMHhFNiwgMHhFQiwgMHg5MSwgMHg4MCwgMHg1RiwKKyAgICAweDY3LCAweDAzLCAweDE0LCAweDU0LCAweDY1LCAweDBBLCAweDdELCAweDZDLCAweEMxLCAweEM5LCAweEMwLCAweEY0LCAweEUwLCAweDdCLCAweDZBLCAweDQ1LAorICAgIDB4Q0YsIDB4MTMsIDB4M0UsIDB4MzcsIDB4MDcsIDB4MDMsIDB4NDIsIDB4Q0EsIDB4RTAsIDB4QTIsIDB4RDEsIDB4MDAsIDB4MDAsIDB4MTAsIDB4REUsIDB4RTUsCisgICAgMHg4MSwgMHg5QSwgMHhEMCwgMHgxNCwgMHhGNywgMHg5OCwgMHhBNSwgMHhFMSwgMHhEMywgMHg4NCwgMHhBQywgMHg3MCwgMHhDNiwgMHg3NSwgMHhCNCwgMHgyNywKKyAgICAweEY1LCAweEVCLCAweDA4LCAweDRDLCAweDY0LCAweEMxLCAweDc0LCAweDQ1LCAweEIxLCAweDMwLCAweDQ4LCAweEU0LCAweEFBLCAweDk5LCAweEJELCAweEMwLAorICAgIDB4MjcsIDB4REUsIDB4NTQsIDB4QTQsIDB4QzQsIDB4RkUsIDB4REYsIDB4NjksIDB4RjIsIDB4NDYsIDB4RjgsIDB4N0UsIDB4NzksIDB4OTksIDB4RkUsIDB4RDEsCisgICAgMHg0QSwgMHg3NywgMHg2QywgMHhGQSwgMHgxMywgMHgyQywgMHhEMywgMHg5QiwgMHg0NSwgMHgyRiwgMHg4NiwgMHgwRiwgMHhCNiwgMHhBQSwgMHg3NiwgMHg0MiwKKyAgICAweEU3LCAweDExLCAweDNELCAweEU5LCAweDUyLCAweEMxLCAweDNCLCAweDE3LCAweDY2LCAweDYwLCAweDFDLCAweDY3LCAweEE5LCAweEYwLCAweDgzLCAweEZGLAorICAgIDB4ODAsIDB4NTksIDB4NEYsIDB4QUEsIDB4QzcsIDB4RTcsIDB4OTUsIDB4ODEsIDB4QTAsIDB4RUUsIDB4NUQsIDB4M0QsIDB4MzYsIDB4QTYsIDB4MEIsIDB4ODEsCisgICAgMHhGRCwgMHhEMCwgMHhGMywgMHhFNywgMHg3NiwgMHg3QywgMHgxMSwgMHhCNCwgMHg0RiwgMHg2MiwgMHhENiwgMHgzQSwgMHgxRSwgMHg1RCwgMHhFRCwgMHg5MSwKKyAgICAweEIzLCAweDU1LCAweDJELCAweDgzLCAweEQzLCAweEY0LCAweEM5LCAweDUyLCAweDU5LCAweDZCLCAweEQyLCAweENBLCAweDIyLCAweEM0LCAweDhELCAweDc0LAorICAgIDB4RUMsIDB4MTUsIDB4NDcsIDB4MDMsIDB4MEIsIDB4REQsIDB4MUUsIDB4ODMsIDB4NkEsIDB4RDcsIDB4M0MsIDB4NkYsIDB4NTcsIDB4NjcsIDB4NkIsIDB4NzcsCisgICAgMHg4RCwgMHg2NywgMHg5OCwgMHg4OCwgMHg1RCwgMHgzQywgMHg0QywgMHg1MiwgMHg2QiwgMHhDNSwgMHg4RiwgMHg4MiwgMHgxMCwgMHgxOCwgMHgxMywgMHgzRiwKKyAgICAweEQ0LCAweDY1LCAweDE4LCAweEZDLCAweEZBLCAweEQ3LCAweDk3LCAweEZELCAweDg5LCAweEM0LCAweDgyLCAweDRFLCAweEI2LCAweDQwLCAweEMwLCAweDYyLAorICAgIDB4NjAsIDB4QjksIDB4OTUsIDB4QUIsIDB4ODYsIDB4QjgsIDB4RTEsIDB4MTAsIDB4QkQsIDB4QjMsIDB4RUMsIDB4NTgsIDB4REYsIDB4MTMsIDB4RjQsIDB4NEQsCisgICAgMHgwQSwgMHgxRCwgMHhCOCwgMHg3OCwgMHgyQywgMHgwRCwgMHg3MCwgMHhDMiwgMHhGOSwgMHhCOCwgMHg3OCwgMHgxMCwgMHgwRSwgMHg0RCwgMHhDNiwgMHg3QiwKKyAgICAweEVELCAweDFELCAweEJGLCAweDY0LCAweDRFLCAweEJDLCAweEVBLCAweDBBLCAweDYxLCAweDQ5LCAweENFLCAweDIwLCAweEQxLCAweDIxLCAweDMxLCAweEVDLAorICAgIDB4MzAsIDB4RjksIDB4MzQsIDB4OTQsIDB4NDYsIDB4RjAsIDB4RkYsIDB4NEUsIDB4RkUsIDB4QjgsIDB4NkQsIDB4NzgsIDB4QTUsIDB4MkMsIDB4OTUsIDB4REQsCisgICAgMHg0NSwgMHgxRSwgMHg3MywgMHhBMSwgMHhDMSwgMHg3QiwgMHg2MCwgMHhCRCwgMHg2MiwgMHgyRiwgMHgzMSwgMHg1OSwgMHg2RCwgMHgzRCwgMHgwMCwgMHgwOSwKKyAgICAweDBELCAweDJBLCAweEE0LCAweDg2LCAweEYzLCAweDVBLCAweDEyLCAweEFBLCAweDUwLCAweDcyLCAweDhGLCAweEE2LCAweDk2LCAweEZELCAweDI3LCAweEE1LAorICAgIDB4NTIsIDB4RTMsIDB4RDEsIDB4ODcsIDB4OEMsIDB4MDAsIDB4QUUsIDB4RjksIDB4OTgsIDB4OTgsIDB4MDUsIDB4RDYsIDB4ODksIDB4NTQsIDB4NzEsIDB4N0UsCisgICAgMHg4RiwgMHhBNywgMHhGRSwgMHg0MCwgMHhBQiwgMHhFRSwgMHgwNCwgMHhFMiwgMHhCMiwgMHhCNSwgMHg4OSwgMHhGRCwgMHgzOCwgMHhGMCwgMHhGOSwgMHg2MywKKyAgICAweEFELCAweEJBLCAweDJGLCAweEYyLCAweEYyLCAweEM0LCAweDdCLCAweEY0LCAweEU0LCAweDEwLCAweDI1LCAweDhDLCAweEJELCAweDZBLCAweEYzLCAweDIzLAorICAgIDB4NEIsIDB4QUUsIDB4QjEsIDB4OUIsIDB4ODMsIDB4RjQsIDB4MUQsIDB4MTIsIDB4NTQsIDB4NzIsIDB4QjUsIDB4RDQsIDB4QTAsIDB4RUQsIDB4NEYsIDB4QTAsCisgICAgMHhCQiwgMHhCRCwgMHhFRiwgMHg0RSwgMHhDNywgMHhEQywgMHg1RiwgMHgwNCwgMHg4QiwgMHg0RiwgMHgyOCwgMHgwMiwgMHg2RCwgMHg1NywgMHhFNSwgMHhEMSwKKyAgICAweDQ0LCAweDg2LCAweDI2LCAweEJCLCAweDhFLCAweDIwLCAweEMyLCAweENELCAweEQyLCAweDFFLCAweDQ5LCAweDBFLCAweDcxLCAweDM2LCAweEQ4LCAweDM4LAorICAgIDB4N0YsIDB4MTgsIDB4MDgsIDB4MTYsIDB4OTgsIDB4MTMsIDB4ODQsIDB4MzksIDB4MUMsIDB4MTcsIDB4RUQsIDB4NTIsIDB4RTgsIDB4NDMsIDB4NDgsIDB4NDQsCisgICAgMHgwMCwgMHg3QywgMHg5QywgMHhFOCwgMHg4MCwgMHhGMywgMHg3MSwgMHhEMCwgMHgyRCwgMHhGOCwgMHg2RCwgMHhGRiwgMHg2RSwgMHgwQiwgMHhGNSwgMHg4NiwKKyAgICAweEU4LCAweDY4LCAweDI1LCAweDkwLCAweEMyLCAweDA0LCAweDBDLCAweDMwLCAweDZCLCAweDMxLCAweDNFLCAweDcxLCAweDUxLCAweDk4LCAweEQ2LCAweEQ4LAorICAgIDB4NTAsIDB4QjQsIDB4QUEsIDB4REYsIDB4MDIsIDB4MEMsIDB4NzgsIDB4OEYsIDB4NUUsIDB4MjksIDB4MDIsIDB4QzgsIDB4QjUsIDB4QUQsIDB4NDMsIDB4OUUsCisgICAgMHg1OSwgMHg3RCwgMHhGMSwgMHhCQiwgMHgxRSwgMHhDQywgMHhBMCwgMHg3OCwgMHg1MywgMHhCMSwgMHgxQywgMHg3NywgMHhBQywgMHg1NSwgMHhFMSwgMHg4QywKKyAgICAweEUzLCAweDY1LCAweDI3LCAweDA2LCAweDc5LCAweDYxLCAweDk1LCAweDlELCAweDkzLCAweDA1LCAweEJBLCAweDM1LCAweENGLCAweEFBLCAweDk2LCAweDRGLAorICAgIDB4OUEsIDB4RDEsIDB4NEMsIDB4NzEsIDB4MjcsIDB4QzQsIDB4MDYsIDB4NUEsIDB4QkQsIDB4MzksIDB4MjYsIDB4ODcsIDB4NUYsIDB4M0MsIDB4NjEsIDB4OTQsCisgICAgMHhCOSwgMHg1NSwgMHg0OCwgMHgwMywgMHgwNiwgMHg0NywgMHg4RiwgMHg4MSwgMHg4OCwgMHgxOSwgMHg2MywgMHhFOSwgMHgzRCwgMHg4RSwgMHg2QywgMHg1RiwKKyAgICAweDcyLCAweERFLCAweDQ4LCAweDFCLCAweEZGLCAweDhDLCAweEVDLCAweDJCLCAweEYxLCAweDc1LCAweDY0LCAweDAzLCAweEU3LCAweEEzLCAweEI0LCAweENDLAorICAgIDB4MTksIDB4NDQsIDB4NDIsIDB4OTYsIDB4NUMsIDB4QzQsIDB4MTcsIDB4NkMsIDB4N0EsIDB4MjAsIDB4RkYsIDB4RTMsIDB4RDUsIDB4MkMsIDB4QjYsIDB4NUMsCisgICAgMHgyNywgMHg5NywgMHhCMywgMHg1QiwgMHg3QiwgMHhCQywgMHg2NSwgMHg3NiwgMHhCNSwgMHhGRCwgMHgwNSwgMHhEMiwgMHhBMywgMHhDNSwgMHg3OSwgMHg3NywKKyAgICAweEJGLCAweDc3LCAweDAwLCAweDdELCAweEEwLCAweDBFLCAweDUzLCAweDE1LCAweDJCLCAweEMxLCAweEI3LCAweDQwLCAweEVBLCAweEJDLCAweDM3LCAweEUwLAorICAgIDB4NTIsIDB4MjgsIDB4QUUsIDB4MDMsIDB4NEQsIDB4M0UsIDB4OTUsIDB4MDMsIDB4NjEsIDB4MkIsIDB4NUMsIDB4N0QsIDB4NkUsIDB4NTEsIDB4Q0EsIDB4NDksCisgICAgMHgzNywgMHhBMiwgMHhDRiwgMHhFQSwgMHg0QywgMHg0QiwgMHg0RCwgMHg0MywgMHhDRCwgMHhGNywgMHhCQywgMHhDRSwgMHhFRSwgMHg0RCwgMHhFMiwgMHg5NiwKKyAgICAweDZELCAweEQ2LCAweEUyLCAweDgyLCAweDkyLCAweEZFLCAweDRDLCAweDNFLCAweDk3LCAweEQ1LCAweERBLCAweDQ1LCAweEEzLCAweEIwLCAweEUwLCAweDhDLAorICAgIDB4N0UsIDB4NDUsIDB4RjcsIDB4RTUsIDB4OUUsIDB4QjUsIDB4QTAsIDB4NjMsIDB4RTYsIDB4QzQsIDB4MEMsIDB4MDIsIDB4OTEsIDB4MTcsIDB4NEEsIDB4QzIsCisgICAgMHhEMywgMHhCMSwgMHhEQiwgMHg4NSwgMHhEMSwgMHg5MCwgMHg3RiwgMHgyMSwgMHg0QiwgMHg4RSwgMHhFQSwgMHgxMywgMHg1NSwgMHhFRSwgMHhENSwgMHhBMiwKKyAgICAweEE2LCAweEI5LCAweDA5LCAweDk2LCAweEEyLCAweEY4LCAweENCLCAweENFLCAweEM0LCAweDNCLCAweDFDLCAweDA1LCAweEVCLCAweDAwLCAweDEzLCAweEZDLAorICAgIDB4RkMsIDB4OUYsIDB4QzAsIDB4Q0QsIDB4MkMsIDB4QjAsIDB4QzUsIDB4OEYsIDB4MzgsIDB4RDcsIDB4QUIsIDB4RTQsIDB4ODYsIDB4QjQsIDB4QTMsIDB4NzgsCisgICAgMHgxRiwgMHgzNiwgMHgyMiwgMHhEMiwgMHg4MSwgMHg2QSwgMHhCRCwgMHhBMCwgMHg5RiwgMHg2MSwgMHg5MiwgMHhGOCwgMHg2QSwgMHgyNywgMHg3NSwgMHg3MiwKKyAgICAweDA2LCAweDE2LCAweDY2LCAweDc2LCAweDkwLCAweDkzLCAweDI5LCAweEJELCAweEVCLCAweDlELCAweEE1LCAweDgxLCAweEVGLCAweEVCLCAweDY5LCAweDkzLAorICAgIDB4OEUsIDB4RTgsIDB4MTcsIDB4OEYsIDB4NDIsIDB4MEEsIDB4NEQsIDB4QTAsIDB4MkQsIDB4MjAsIDB4QjMsIDB4MUYsIDB4NkEsIDB4REIsIDB4MjIsIDB4RTksCisgICAgMHgyNCwgMHg2NCwgMHg1MiwgMHgwNiwgMHg2NSwgMHhBNSwgMHhDNSwgMHg4MiwgMHg1OSwgMHg0NywgMHhGNCwgMHhFOSwgMHhCOSwgMHhBMywgMHhCMSwgMHgwMiwKKyAgICAweEZDLCAweDYwLCAweDhCLCAweDQyLCAweEY1LCAweDIzLCAweEQ4LCAweEQ4LCAweDM1LCAweDcwLCAweDM4LCAweEVCLCAweDVELCAweDE1LCAweEVGLCAweEQ2LAorICAgIDB4RDMsIDB4NzUsIDB4ODAsIDB4NkUsIDB4QkEsIDB4MkUsIDB4RDYsIDB4MTEsIDB4NTQsIDB4NkUsIDB4MjQsIDB4QzEsIDB4QzcsIDB4N0EsIDB4RTEsIDB4Q0IsCisgICAgMHhBRSwgMHg2MiwgMHgyNywgMHg0OCwgMHhCNywgMHg5QywgMHhBNywgMHg5RSwgMHgxNSwgMHhGRCwgMHhERSwgMHhDMCwgMHhCRSwgMHhCQiwgMHhDMiwgMHgyRSwKKyAgICAweDRBLCAweDVDLCAweEQ0LCAweDgxLCAweEMwLCAweDkzLCAweDU4LCAweDAwLCAweDlDLCAweEZCLCAweDM2LCAweDI3LCAweEQ3LCAweDcyLCAweDQ2LCAweDlELAorICAgIDB4QUMsIDB4RUYsIDB4RDgsIDB4MTQsIDB4MUMsIDB4NTgsIDB4QzAsIDB4NEUsIDB4RDQsIDB4MTYsIDB4RTEsIDB4NTgsIDB4NTYsIDB4MjUsIDB4QTksIDB4MzgsCisgICAgMHhDRiwgMHgwNiwgMHhBQSwgMHhBMywgMHg0RiwgMHg1MiwgMHg3MCwgMHgwOSwgMHg0MSwgMHg0NCwgMHhEMCwgMHg5OCwgMHg3MywgMHhFRCwgMHgxOCwgMHhCNCwKKyAgICAweERCLCAweDA3LCAweEM5LCAweEI3LCAweEJCLCAweDVBLCAweEQ2LCAweDA4LCAweEU1LCAweDg5LCAweDE5LCAweEQ4LCAweDFBLCAweEI2LCAweDg0LCAweDcyLAorICAgIDB4MUIsIDB4RUEsIDB4MTQsIDB4NzgsIDB4OTYsIDB4QjQsIDB4MkQsIDB4NjEsIDB4MjAsIDB4OEQsIDB4OUEsIDB4RDIsIDB4ODcsIDB4MjMsIDB4MTgsIDB4N0EsCisgICAgMHhBMywgMHg3MCwgMHg0RCwgMHhBNiwgMHhCQiwgMHhFRSwgMHg5OSwgMHg3OCwgMHhEOCwgMHg5NCwgMHhGMSwgMHgzNSwgMHg5MSwgMHg0NSwgMHhEQiwgMHgyQSwKKyAgICAweDhBLCAweERELCAweDhGLCAweEM1LCAweDA1LCAweDE3LCAweEI2LCAweDY5LCAweDRFLCAweEQyLCAweEYwLCAweDE2LCAweDA5LCAweDE0LCAweDY1LCAweEUwLAorICAgIDB4NzYsIDB4NkIsIDB4MzMsIDB4RTgsIDB4NEQsIDB4REYsIDB4QUYsIDB4NUEsIDB4MEMsIDB4RjYsIDB4QjAsIDB4MjksIDB4RUYsIDB4QjksIDB4ODUsIDB4OTYsCisgICAgMHgxNiwgMHhFRCwgMHgwMywgMHg0NSwgMHhGQSwgMHg2RiwgMHgwMywgMHg2NCwgMHg2MiwgMHg2RCwgMHgzMiwgMHg3NSwgMHg4MiwgMHgzMiwgMHgxNCwgMHgyMywKKyAgICAweDVBLCAweDg1LCAweEZGLCAweEZFLCAweDY1LCAweDUyLCAweEJDLCAweEFELCAweDk5LCAweEMyLCAweERBLCAweDhCLCAweDg2LCAweEMwLCAweDJFLCAweDc4LAorICAgIDB4MzgsIDB4REYsIDB4NUUsIDB4ODMsIDB4REUsIDB4RTAsIDB4NzIsIDB4RDUsIDB4OTEsIDB4NkIsIDB4REIsIDB4REYsIDB4N0YsIDB4QTcsIDB4OEIsIDB4QTQsCisgICAgMHg1QiwgMHgxMCwgMHg5MywgMHg0RCwgMHhBNCwgMHhCNCwgMHgyMiwgMHhDMSwgMHhCMywgMHhCRSwgMHg4QiwgMHg1NiwgMHg4MiwgMHhCOSwgMHgzMywgMHg4NSwKKyAgICAweDAxLCAweEZBLCAweEY1LCAweDk1LCAweDlELCAweDBDLCAweEJDLCAweEQ0LCAweEIwLCAweDJGLCAweDk0LCAweEQ5LCAweDJFLCAweERBLCAweEI5LCAweDQ5LAorICAgIDB4QzUsIDB4NTMsIDB4QTIsIDB4RTksIDB4NEQsIDB4ODEsIDB4REUsIDB4QzAsIDB4RjgsIDB4MDEsIDB4NjAsIDB4RUEsIDB4QUEsIDB4NTcsIDB4NjYsIDB4QTUsCisgICAgMHg1RCwgMHg0QiwgMHg2RCwgMHhFQywgMHg4NSwgMHhCRiwgMHgxMCwgMHgxOCwgMHg0MywgMHhEMSwgMHhENywgMHhBMiwgMHhCQSwgMHg3MiwgMHgwOSwgMHg2MywKKyAgICAweDcxLCAweEIyLCAweEEyLCAweDE0LCAweDUyLCAweDk0LCAweEZELCAweDQwLCAweEE2LCAweDg5LCAweDFCLCAweEQ1LCAweDE2LCAweDdELCAweEIxLCAweDIyLAorICAgIDB4MDAsIDB4RjcsIDB4NjIsIDB4MTIsIDB4NUUsIDB4QkIsIDB4QTEsIDB4MDMsIDB4NkMsIDB4M0QsIDB4MzIsIDB4MUMsIDB4RDgsIDB4M0EsIDB4QjUsIDB4MjQsCisgICAgMHhGNiwgMHg2NCwgMHg2NywgMHhDRCwgMHg0NywgMHhFQiwgMHg2QSwgMHhGQiwgMHg5NCwgMHhDRSwgMHhBNiwgMHhGNCwgMHg5RCwgMHgyQiwgMHhCRCwgMHg1MCwKKyAgICAweDJBLCAweDUzLCAweDYzLCAweEVGLCAweDdCLCAweDk0LCAweDY4LCAweDI2LCAweEUyLCAweEQ4LCAweDEzLCAweDVBLCAweEQyLCAweEUzLCAweDFELCAweDAxLAorICAgIDB4RTQsIDB4QjgsIDB4M0MsIDB4NDIsIDB4MDcsIDB4M0IsIDB4MTQsIDB4MDEsIDB4RUIsIDB4MTgsIDB4QkYsIDB4MzksIDB4RDksIDB4QzQsIDB4RDYsIDB4NDEsCisgICAgMHhCMiwgMHhFNywgMHhDRCwgMHgwMiwgMHg4NiwgMHg4QiwgMHhBNywgMHg3NywgMHg1RCwgMHhDOSwgMHg1QywgMHhDMCwgMHhCRSwgMHhERSwgMHgzRCwgMHg2NywKKyAgICAweEEzLCAweEQ3LCAweERBLCAweEI1LCAweDg4LCAweDM5LCAweEVBLCAweDlELCAweDdBLCAweEY3LCAweDk5LCAweDNFLCAweERFLCAweEY5LCAweDM2LCAweDFFLAorICAgIDB4QkIsIDB4QUIsIDB4NjEsIDB4OEMsIDB4QjIsIDB4QjksIDB4NjEsIDB4MTgsIDB4N0QsIDB4NEEsIDB4MzIsIDB4N0UsIDB4Q0MsIDB4NzEsIDB4QkMsIDB4QzYsCisgICAgMHhBQSwgMHhERSwgMHgwOCwgMHhGRiwgMHhFRSwgMHg0NCwgMHg0QiwgMHhENywgMHhDMSwgMHhEQiwgMHhDRSwgMHhGRSwgMHg4OSwgMHg1NiwgMHgwMywgMHhEQSwKKyAgICAweDNBLCAweEY1LCAweEQzLCAweDlELCAweDM5LCAweDYzLCAweDkyLCAweDMzLCAweDUwLCAweDEzLCAweDhCLCAweDdCLCAweDVBLCAweEMwLCAweDc5LCAweEVELAorICAgIDB4NDAsIDB4QUQsIDB4MUIsIDB4NTMsIDB4NTAsIDB4NzQsIDB4MEEsIDB4QTAsIDB4QTcsIDB4NUQsIDB4NUIsIDB4NjEsIDB4ODUsIDB4OTMsIDB4OEEsIDB4QjksCisgICAgMHhBOSwgMHgyQywgMHgwRiwgMHhBMiwgMHhCRCwgMHg3QSwgMHgzMywgMHhGMywgMHhENiwgMHhENiwgMHg2NCwgMHg2MCwgMHhDRiwgMHgxMiwgMHg4OCwgMHgwOCwKKyAgICAweDEzLCAweDBCLCAweEMyLCAweDc2LCAweEVDLCAweDRCLCAweDc1LCAweDc0LCAweENDLCAweDYwLCAweEY4LCAweDlFLCAweEFELCAweDQwLCAweEZELCAweDVFLAorICAgIDB4NTgsIDB4MkQsIDB4MDgsIDB4QjcsIDB4NkMsIDB4QjYsIDB4MjcsIDB4NzMsIDB4NEIsIDB4MzEsIDB4MDMsIDB4MUQsIDB4N0EsIDB4QzUsIDB4NTksIDB4NjcsCisgICAgMHgxRiwgMHg1QywgMHhERSwgMHgwOCwgMHgyNCwgMHgwRCwgMHhCOSwgMHgzMywgMHg5NywgMHg1MSwgMHhDNiwgMHhDMywgMHgxMywgMHhFMCwgMHhGQywgMHg0NSwKKyAgICAweERBLCAweDVGLCAweEZDLCAweEE5LCAweDhFLCAweDcxLCAweDU0LCAweDFDLCAweDNBLCAweDRELCAweEZCLCAweDdCLCAweDA2LCAweEZCLCAweDY1LCAweEIxLAorICAgIDB4MjcsIDB4MEIsIDB4OEMsIDB4QUYsIDB4RjIsIDB4QTAsIDB4MTIsIDB4QTYsIDB4RDcsIDB4QUMsIDB4MjcsIDB4QzEsIDB4NTUsIDB4RTcsIDB4MTcsIDB4ODEsCisgICAgMHhGRCwgMHhBMiwgMHhGOCwgMHhDMywgMHgxNywgMHg1NSwgMHg5QiwgMHgwMCwgMHhGRSwgMHg5MSwgMHhBOSwgMHhEQywgMHhERSwgMHhCMCwgMHhENywgMHg1RCwKKyAgICAweDJBLCAweEU4LCAweDg3LCAweEYyLCAweDFCLCAweDI4LCAweDE5LCAweDIwLCAweDYzLCAweDlFLCAweEQ4LCAweDdFLCAweDg1LCAweEYzLCAweDg3LCAweDBELAorICAgIDB4QUYsIDB4MzUsIDB4QTUsIDB4OUYsIDB4M0IsIDB4RTcsIDB4NDQsIDB4OEQsIDB4NjMsIDB4REUsIDB4RUIsIDB4N0UsIDB4QzcsIDB4RDIsIDB4MEYsIDB4MDksCisgICAgMHgzMCwgMHhFMywgMHhFMiwgMHg3QiwgMHhFQSwgMHg3NCwgMHhBRCwgMHg0NiwgMHg3RCwgMHhCNCwgMHhCOCwgMHgwQywgMHhGMSwgMHhEMywgMHhGQSwgMHgwNywKKyAgICAweEYzLCAweERELCAweEM1LCAweEIxLCAweDAwLCAweEYyLCAweEQ2LCAweEJELCAweDRCLCAweEJELCAweEFDLCAweEM4LCAweEJCLCAweEE3LCAweEQ0LCAweDUzLAorICAgIDB4REUsIDB4NzMsIDB4MEQsIDB4RUQsIDB4RkIsIDB4ODQsIDB4NEMsIDB4ODIsIDB4NDcsIDB4MEQsIDB4MkQsIDB4OUQsIDB4MkIsIDB4MEMsIDB4NEEsIDB4NEQsCisgICAgMHg0QiwgMHhENCwgMHgzQSwgMHg0RCwgMHg2NCwgMHgyNywgMHhEOCwgMHg1OSwgMHgyNywgMHhEMywgMHg0MSwgMHg3MywgMHhBNSwgMHhDQiwgMHhGNSwgMHgzMSwKKyAgICAweEEyLCAweDg4LCAweDk5LCAweDc5LCAweEZCLCAweDJCLCAweDlBLCAweEJBLCAweDY4LCAweDg4LCAweDM1LCAweDEyLCAweDE1LCAweDExLCAweEY2LCAweEVBLAorICAgIDB4OUEsIDB4MUIsIDB4MkEsIDB4RTEsIDB4OTUsIDB4NUIsIDB4MTUsIDB4QUIsIDB4NzksIDB4RTIsIDB4NUEsIDB4NEEsIDB4NkUsIDB4RTIsIDB4RjcsIDB4NjMsCisgICAgMHg3NCwgMHg1MiwgMHhCNSwgMHg5QiwgMHhBOSwgMHg1OCwgMHg1RCwgMHg3OCwgMHhBQiwgMHg2MSwgMHg0MCwgMHhBNSwgMHg2RiwgMHg5OSwgMHg4MCwgMHgwNiwKKyAgICAweENBLCAweDczLCAweDgyLCAweDc4LCAweDY0LCAweDhGLCAweEU0LCAweEE3LCAweDJGLCAweDlGLCAweDZELCAweDUwLCAweDgwLCAweDExLCAweEY0LCAweEU5LAorICAgIDB4RTMsIDB4NjMsIDB4MkEsIDB4OTYsIDB4MEMsIDB4RkMsIDB4M0MsIDB4RTAsIDB4QUEsIDB4RjcsIDB4MDUsIDB4NTUsIDB4MjgsIDB4QjAsIDB4NzYsIDB4MjQsCisgICAgMHg4NywgMHhEQSwgMHgyOSwgMHgyOCwgMHgwNSwgMHhBOSwgMHg2MSwgMHgwQiwgMHg2NiwgMHgzQywgMHhBMCwgMHg1MSwgMHg1RSwgMHhDRSwgMHhGNSwgMHg4MCwKKyAgICAweDBGLCAweDFDLCAweDkwLCAweERELCAweDU2LCAweDUyLCAweDA3LCAweERGLCAweEI0LCAweEU2LCAweDkyLCAweDRBLCAweDU3LCAweDk3LCAweDcxLCAweEFCLAorICAgIDB4NTgsIDB4RjMsIDB4MDMsIDB4NDMsIDB4OTksIDB4NDksIDB4MUEsIDB4RkMsIDB4OTYsIDB4MjksIDB4MzEsIDB4MTUsIDB4MzAsIDB4NkQsIDB4Q0EsIDB4OTIsCisgICAgMHgzOSwgMHg2OCwgMHhGNiwgMHhBRSwgMHhERSwgMHg1NiwgMHg3NCwgMHg1MywgMHhDNSwgMHhDQSwgMHhCRSwgMHgwOSwgMHgwQywgMHg4OCwgMHhFRSwgMHhFQywKKyAgICAweEU5LCAweEU4LCAweEQwLCAweDZBLCAweDU1LCAweDZBLCAweEIyLCAweERGLCAweDQxLCAweDc5LCAweEM4LCAweDQ0LCAweEQxLCAweDJCLCAweDZCLCAweDVGLAorICAgIDB4QjQsIDB4MjcsIDB4MDIsIDB4RkUsIDB4OUUsIDB4NzAsIDB4NDgsIDB4RTksIDB4RTgsIDB4OUIsIDB4NDQsIDB4NUQsIDB4MTksIDB4QjcsIDB4MjQsIDB4NDcsCisgICAgMHg0MiwgMHgwRCwgMHgxRCwgMHhBOSwgMHgyNiwgMHgwNywgMHg3MCwgMHhDNCwgMHgzNiwgMHg2QSwgMHgwMywgMHhBMiwgMHhCRCwgMHg2MCwgMHg2NSwgMHg5QSwKKyAgICAweDkyLCAweDZGLCAweDBBLCAweDFCLCAweEU2LCAweDM2LCAweDdCLCAweEE0LCAweDU1LCAweDc5LCAweEJGLCAweDdCLCAweDI3LCAweEJFLCAweDZELCAweDY3LAorICAgIDB4MDEsIDB4NkQsIDB4QjcsIDB4NDksIDB4N0MsIDB4M0YsIDB4OTksIDB4MUIsIDB4NEUsIDB4RkIsIDB4MzIsIDB4M0EsIDB4RTUsIDB4NzYsIDB4MEIsIDB4OTYsCisgICAgMHhDNiwgMHg1NSwgMHhDNSwgMHg5MCwgMHg1RiwgMHg4MCwgMHgxOSwgMHg3NywgMHhBRCwgMHhCMSwgMHg1RiwgMHg2QywgMHg3NSwgMHg0MSwgMHgxRSwgMHgwNywKKyAgICAweDU4LCAweDZGLCAweDZELCAweEI1LCAweERBLCAweDJFLCAweDNFLCAweDJCLCAweDc2LCAweEFBLCAweDRELCAweEY1LCAweDNGLCAweDlBLCAweDU2LCAweDMxLAorICAgIDB4NTMsIDB4NzQsIDB4MUYsIDB4QTYsIDB4QzMsIDB4OTcsIDB4QUUsIDB4OEEsIDB4M0UsIDB4OEIsIDB4NzYsIDB4RTEsIDB4MkMsIDB4NzcsIDB4NkMsIDB4NzAsCisgICAgMHhFQywgMHhCQiwgMHhENSwgMHhBNSwgMHhBNywgMHgzMCwgMHg0QiwgMHhFOCwgMHhBNiwgMHgyOSwgMHhBQywgMHhFNiwgMHg2RiwgMHg4RSwgMHhDNywgMHhGRiwKKyAgICAweEJBLCAweEQ5LCAweENCLCAweDYyLCAweEU4LCAweDJFLCAweEQ3LCAweENGLCAweEEzLCAweDAyLCAweEQ0LCAweDU1LCAweDg4LCAweDJELCAweDEyLCAweDlELAorICAgIDB4NkEsIDB4MTksIDB4NTAsIDB4QjQsIDB4OTgsIDB4RkEsIDB4MjksIDB4RjUsIDB4MkUsIDB4RkYsIDB4RjIsIDB4RDQsIDB4QUQsIDB4MDQsIDB4ODUsIDB4RjQsCisgICAgMHhCNiwgMHgyMiwgMHg1NiwgMHgwMywgMHg1MCwgMHgzRiwgMHg5NiwgMHg1RCwgMHhERSwgMHhDRCwgMHgwRCwgMHhCMywgMHhDNSwgMHhGQiwgMHhEQiwgMHhBQywKKyAgICAweDdGLCAweEJELCAweEMxLCAweEI2LCAweEQwLCAweDIwLCAweENGLCAweDMwLCAweDVFLCAweDYyLCAweEQ2LCAweEY5LCAweDQ0LCAweDE5LCAweEYzLCAweDk2LAorICAgIDB4MEQsIDB4NzIsIDB4RjgsIDB4RkIsIDB4NzEsIDB4QjEsIDB4OUQsIDB4QTcsIDB4NzcsIDB4NkUsIDB4REQsIDB4RDIsIDB4MUIsIDB4RDksIDB4MzksIDB4QUIsCisgICAgMHgxMCwgMHgyNiwgMHgxOCwgMHhCOCwgMHg1NiwgMHg5MiwgMHg2RSwgMHg5QiwgMHhDMiwgMHgzRCwgMHg5QiwgMHg5NCwgMHg4OCwgMHg5RSwgMHgyQiwgMHg0RCwKKyAgICAweDc5LCAweEY2LCAweDhELCAweEM2LCAweDIzLCAweDBCLCAweDhELCAweEY0LCAweEIzLCAweDAwLCAweDhDLCAweEQ0LCAweDRGLCAweEUxLCAweEExLCAweDJCLAorICAgIDB4OUYsIDB4RTcsIDB4M0QsIDB4RTksIDB4MDQsIDB4NjUsIDB4RDQsIDB4MjEsIDB4ODcsIDB4NDQsIDB4REIsIDB4MDAsIDB4MzAsIDB4MjMsIDB4N0EsIDB4OTQsCisgICAgMHhDMSwgMHhFNywgMHg0QiwgMHhDNCwgMHhBMCwgMHhBNiwgMHg5MCwgMHgyMCwgMHg5OSwgMHhFNiwgMHg5OCwgMHg0OCwgMHg2NywgMHhCNiwgMHg0OSwgMHg5MCwKKyAgICAweDIwLCAweEI0LCAweEEwLCAweEE4LCAweDkwLCAweDFFLCAweDFCLCAweDQ5LCAweDUwLCAweDQxLCAweDdCLCAweEM1LCAweDAyLCAweEYzLCAweEZGLCAweEIxLAorICAgIDB4NkQsIDB4MzksIDB4NzksIDB4MUMsIDB4M0MsIDB4NUUsIDB4QzcsIDB4OTgsIDB4MUYsIDB4RDksIDB4NTIsIDB4NDksIDB4NzUsIDB4NTksIDB4MDEsIDB4MUEsCisgICAgMHhDMSwgMHg4MiwgMHhCRCwgMHhEQiwgMHgxQSwgMHg4NiwgMHhEOCwgMHg5RiwgMHgxMiwgMHg5MywgMHhEMiwgMHg4MCwgMHgxMywgMHhERSwgMHg3OSwgMHgzRCwKKyAgICAweEI2LCAweEVCLCAweEM1LCAweDQ3LCAweDc1LCAweDI0LCAweEUzLCAweDcwLCAweDhFLCAweDIwLCAweEJFLCAweDc4LCAweDI2LCAweDE1LCAweEJELCAweEQ0LAorICAgIDB4NUIsIDB4OUQsIDB4NkQsIDB4N0IsIDB4MDIsIDB4ODAsIDB4NzMsIDB4NDQsIDB4QTIsIDB4QzcsIDB4MjIsIDB4OEQsIDB4QUQsIDB4MTksIDB4RDAsIDB4MzgsCisgICAgMHgyQiwgMHhFQSwgMHg0RiwgMHhERSwgMHg2OCwgMHg4NCwgMHgzQywgMHg3NywgMHg2QiwgMHhBMiwgMHg2QywgMHg5QSwgMHg1NiwgMHgxMywgMHg3NSwgMHg2NiwKKyAgICAweDhBLCAweDkxLCAweDg3LCAweERBLCAweEM0LCAweDI0LCAweEU2LCAweEM1LCAweDE0LCAweEU3LCAweDkxLCAweDBCLCAweDQwLCAweEJELCAweDdELCAweDhBLAorICAgIDB4M0EsIDB4MEQsIDB4MzksIDB4QjUsIDB4NjUsIDB4MUEsIDB4RjYsIDB4MEYsIDB4NzksIDB4NEQsIDB4RUQsIDB4MDcsIDB4OEYsIDB4RTQsIDB4NDgsIDB4QTMsCisgICAgMHg3QSwgMHhFOCwgMHg5RiwgMHgwOSwgMHg1QiwgMHg5RSwgMHgzMCwgMHg0NiwgMHhBOCwgMHg2MywgMHg4OSwgMHg5RSwgMHhBRiwgMHhEMSwgMHg4RiwgMHhCRSwKKyAgICAweDUzLCAweDIwLCAweDA3LCAweERFLCAweDU0LCAweDhCLCAweDhCLCAweDk4LCAweEVELCAweDc2LCAweEQ3LCAweDNBLCAweEU5LCAweDQwLCAweEVDLCAweDI3LAorICAgIDB4NjQsIDB4REMsIDB4NjYsIDB4RDQsIDB4MzIsIDB4MjIsIDB4NDMsIDB4N0UsIDB4RTAsIDB4M0UsIDB4RjgsIDB4MTUsIDB4QUIsIDB4REUsIDB4QUEsIDB4QzQsCisgICAgMHgxMywgMHg3RiwgMHg1NiwgMHg0RSwgMHg1NywgMHhDOCwgMHg2OSwgMHgyNywgMHhENCwgMHhDNiwgMHg2QiwgMHg3MiwgMHg3MSwgMHhCOCwgMHhBNCwgMHg3QSwKKyAgICAweDJGLCAweDgyLCAweDdELCAweEVFLCAweDBDLCAweDIxLCAweENFLCAweERGLCAweEE1LCAweDU2LCAweDAxLCAweEZDLCAweEQyLCAweEU3LCAweDQ4LCAweDM1LAorICAgIDB4RDYsIDB4OEMsIDB4ODcsIDB4RUYsIDB4RDgsIDB4RTEsIDB4REMsIDB4RkMsIDB4NjAsIDB4MUQsIDB4RDcsIDB4ODEsIDB4RTUsIDB4RTIsIDB4ODMsIDB4ODMsCisgICAgMHhGNywgMHgxNCwgMHhEQSwgMHhDOCwgMHg2NCwgMHhBMSwgMHhEQywgMHhCRiwgMHg2QSwgMHgwRCwgMHhCNCwgMHg1RCwgMHhDQiwgMHgxRSwgMHhERiwgMHhBNywKKyAgICAweEU3LCAweDM3LCAweERFLCAweENELCAweDM1LCAweDI3LCAweEFGLCAweDE4LCAweEQzLCAweEIzLCAweEM1LCAweEYxLCAweDY5LCAweDU3LCAweENELCAweEU0LAorICAgIDB4NjQsIDB4MDcsIDB4NTAsIDB4MDgsIDB4ODAsIDB4ODAsIDB4NkEsIDB4MkYsIDB4RDMsIDB4MUUsIDB4QTgsIDB4QzksIDB4QTcsIDB4NkMsIDB4RkQsIDB4QTEsCisgICAgMHg5MSwgMHhGMywgMHgwNiwgMHgxMiwgMHg5NywgMHg1NiwgMHg5RSwgMHgzNywgMHg2QSwgMHgzRCwgMHgzMCwgMHgwRSwgMHgwRCwgMHg4OCwgMHgxRCwgMHg0NywKKyAgICAweENDLCAweDk1LCAweDUzLCAweEFBLCAweEY0LCAweERDLCAweDExLCAweDlDLCAweEQ1LCAweEJBLCAweERBLCAweEE2LCAweEFDLCAweEUzLCAweEM2LCAweDE0LAorICAgIDB4NTQsIDB4NzUsIDB4QTksIDB4MjIsIDB4MzEsIDB4MEUsIDB4NTgsIDB4NkIsIDB4RjYsIDB4M0UsIDB4NDIsIDB4NTQsIDB4ODEsIDB4RjEsIDB4MjYsIDB4NjAsCisgICAgMHg0MiwgMHg3RSwgMHhENywgMHgxNSwgMHg3QywgMHgxQSwgMHhCMywgMHg0OCwgMHg3NCwgMHg3RSwgMHgyQSwgMHhCQywgMHgzMiwgMHhFQSwgMHgzNywgMHg5OCwKKyAgICAweDU2LCAweDdDLCAweDA2LCAweDQ0LCAweEQzLCAweEM2LCAweDkxLCAweDhELCAweDhBLCAweEEwLCAweEY2LCAweDhFLCAweDg0LCAweDExLCAweEMxLCAweEVCLAorICAgIDB4OUEsIDB4MzksIDB4MUEsIDB4RjIsIDB4QTcsIDB4NzgsIDB4MTcsIDB4MjEsIDB4M0IsIDB4QkYsIDB4MzIsIDB4NUIsIDB4OUMsIDB4NjEsIDB4NkEsIDB4REQsCisgICAgMHg5NiwgMHg1NSwgMHg2MiwgMHgzOCwgMHg1NywgMHg2RiwgMHhBOCwgMHg3QSwgMHhCMywgMHg0NCwgMHg4NSwgMHg2QywgMHg0QiwgMHgwNiwgMHhENiwgMHg4RSwKKyAgICAweEFGLCAweDZGLCAweDMwLCAweDAzLCAweEJBLCAweDg4LCAweEU0LCAweDJBLCAweDYxLCAweDU4LCAweDMzLCAweDM0LCAweEM5LCAweEJGLCAweDUyLCAweEM0LAorICAgIDB4MTEsIDB4NzEsIDB4RDEsIDB4NjUsIDB4RUMsIDB4MDcsIDB4NDAsIDB4OTIsIDB4NEEsIDB4MzksIDB4NEEsIDB4RjEsIDB4NkEsIDB4MzcsIDB4MjUsIDB4ODIsCisgICAgMHg5MSwgMHg0QSwgMHg2OCwgMHg5OCwgMHhBQSwgMHgyNSwgMHhEQywgMHhENCwgMHhDQiwgMHg1MSwgMHgxNSwgMHg0NiwgMHhFNCwgMHhGMCwgMHgwNiwgMHhBMSwKKyAgICAweDVCLCAweDdGLCAweENBLCAweEM5LCAweEM5LCAweEQ3LCAweDkxLCAweEYzLCAweDlGLCAweDBFLCAweEMwLCAweDY5LCAweDM3LCAweDQ4LCAweDgxLCAweDBDLAorICAgIDB4RjQsIDB4MTUsIDB4NTEsIDB4OUUsIDB4RTMsIDB4NzMsIDB4QUMsIDB4REYsIDB4NTcsIDB4NDksIDB4MkEsIDB4RjYsIDB4OTgsIDB4NzIsIDB4NUMsIDB4NDMsCisgICAgMHgyQSwgMHg2MywgMHg0MCwgMHg5NCwgMHhGMSwgMHhCNCwgMHgwQiwgMHhCRCwgMHg3OSwgMHg2NywgMHhCOCwgMHhBQiwgMHhBRSwgMHhENCwgMHg5QywgMHhGQSwKKyAgICAweDJGLCAweDY0LCAweDBELCAweDMzLCAweEI3LCAweDdGLCAweDlFLCAweEM0LCAweEI3LCAweEU2LCAweENCLCAweDVFLCAweDYxLCAweDYwLCAweDI5LCAweDZELAorICAgIDB4QjcsIDB4QzksIDB4Q0EsIDB4N0QsIDB4RTIsIDB4NDMsIDB4MUUsIDB4OTUsIDB4MDQsIDB4RTEsIDB4QTksIDB4NkIsIDB4QkQsIDB4NUYsIDB4QjIsIDB4QkYsCisgICAgMHgwNywgMHgxQywgMHhGRiwgMHgzMCwgMHg3NCwgMHg5QSwgMHhCQywgMHhDNCwgMHhENSwgMHg1QywgMHgwMCwgMHgzMiwgMHg3NiwgMHhBNiwgMHhERCwgMHgyNSwKKyAgICAweDNELCAweDUzLCAweEQwLCAweDM4LCAweDM0LCAweDUzLCAweDdCLCAweEQ2LCAweEJGLCAweDBFLCAweDg0LCAweEEwLCAweDk2LCAweEY5LCAweDhBLCAweDgyLAorICAgIDB4OEQsIDB4OTQsIDB4NjAsIDB4NTcsIDB4RTIsIDB4NTQsIDB4QkUsIDB4NDQsIDB4OTYsIDB4RjcsIDB4ODYsIDB4RjUsIDB4MzksIDB4MEQsIDB4MDUsIDB4QTcsCisgICAgMHhCNiwgMHg3NCwgMHhBNSwgMHg0MSwgMHhCMywgMHgwQSwgMHhCMCwgMHg1RCwgMHg5MSwgMHhDQiwgMHg4NSwgMHg3OSwgMHg4MywgMHg0QiwgMHhDNiwgMHg1NSwKKyAgICAweDU3LCAweDY4LCAweDhDLCAweDkxLCAweDJGLCAweDJBLCAweEI4LCAweDRBLCAweDA4LCAweDgyLCAweDFGLCAweEVDLCAweDlBLCAweDY4LCAweDExLCAweDRDLAorICAgIDB4MjIsIDB4MkMsIDB4OTAsIDB4ODYsIDB4N0UsIDB4QTUsIDB4NzEsIDB4NDYsIDB4QjUsIDB4RTAsIDB4MkIsIDB4M0YsIDB4MjEsIDB4OEUsIDB4Q0QsIDB4NDEsCisgICAgMHhBMywgMHg5NiwgMHhBNSwgMHg5RSwgMHg4OCwgMHg5RCwgMHhDMCwgMHgwNiwgMHg2NCwgMHg0QSwgMHg0QiwgMHgzQSwgMHhENCwgMHhBMSwgMHhFNywgMHgxNiwKKyAgICAweEQ0LCAweDNFLCAweDU3LCAweEQyLCAweDBDLCAweERBLCAweEUxLCAweDM0LCAweEQ4LCAweEQ2LCAweDU4LCAweEY3LCAweDg2LCAweEJELCAweEY2LCAweEM0LAorICAgIDB4QkMsIDB4REEsIDB4MjEsIDB4NzQsIDB4Q0EsIDB4OEEsIDB4QTYsIDB4QUEsIDB4MzAsIDB4RUYsIDB4MjUsIDB4MUYsIDB4MzIsIDB4N0IsIDB4NDksIDB4QTYsCisgICAgMHhFRiwgMHg5QiwgMHg5NSwgMHg1MSwgMHg4MywgMHgzNCwgMHhCOCwgMHhCOCwgMHgzRSwgMHhDRSwgMHhGNiwgMHg4NSwgMHgyMSwgMHgzRiwgMHhFMiwgMHg5MywKKyAgICAweDVFLCAweDUyLCAweEJGLCAweDhELCAweEU3LCAweERELCAweENFLCAweERGLCAweDBCLCAweDk5LCAweEI0LCAweEIzLCAweDg5LCAweDMxLCAweDcwLCAweEFFLAorICAgIDB4ODIsIDB4NEQsIDB4RjUsIDB4RDEsIDB4MzEsIDB4RjcsIDB4MDQsIDB4QjIsIDB4OEEsIDB4NkEsIDB4RDgsIDB4QUQsIDB4MzYsIDB4NTAsIDB4N0QsIDB4NUIsCisgICAgMHhENSwgMHhEMSwgMHgyNiwgMHgwNywgMHhCMCwgMHg0MCwgMHhGMCwgMHg5MywgMHg0QywgMHgxNywgMHhDRCwgMHgzRiwgMHhDMywgMHg2NSwgMHg5NSwgMHgyNSwKKyAgICAweEY0LCAweDU4LCAweDEyLCAweEVFLCAweEFBLCAweEU2LCAweDg2LCAweEFCLCAweDkyLCAweDkwLCAweDE4LCAweENELCAweEJELCAweDlBLCAweDk4LCAweEZCLAorICAgIDB4NjQsIDB4MTcsIDB4NjEsIDB4RjcsIDB4MDQsIDB4OEIsIDB4MjYsIDB4RDYsIDB4MTMsIDB4QTIsIDB4MEMsIDB4N0MsIDB4QjcsIDB4OTgsIDB4MzUsIDB4RDAsCisgICAgMHg0NywgMHgyQywgMHg0NCwgMHhCMCwgMHhBNiwgMHg1RSwgMHg5NiwgMHhBRSwgMHg2MCwgMHg1NCwgMHgxNSwgMHgxQywgMHgxRiwgMHhFRiwgMHg5NSwgMHgyQSwKKyAgICAweDdGLCAweEY1LCAweDExLCAweDhCLCAweEQyLCAweEZBLCAweDlELCAweDJCLCAweDgwLCAweEQ3LCAweEEzLCAweDBFLCAweDI1LCAweEZELCAweDYxLCAweEExLAorICAgIDB4NTksIDB4RUYsIDB4RkEsIDB4QzYsIDB4N0QsIDB4OEMsIDB4RTIsIDB4MEUsIDB4RDUsIDB4M0IsIDB4N0YsIDB4MEEsIDB4OUIsIDB4MDcsIDB4NjYsIDB4MkEsCisgICAgMHgxMCwgMHhGNywgMHg1OCwgMHg5NywgMHg3OCwgMHhCNSwgMHg5RSwgMHg4QywgMHgxNywgMHgxMCwgMHgzNiwgMHg4RiwgMHg3RSwgMHhCNSwgMHg2MiwgMHhERCwKKyAgICAweEJBLCAweDUzLCAweDYyLCAweDIwLCAweDg2LCAweDY5LCAweDBCLCAweDQ0LCAweERGLCAweDNBLCAweEVBLCAweDBCLCAweEI2LCAweEQ4LCAweERELCAweDNFLAorICAgIDB4MEYsIDB4MEQsIDB4RDAsIDB4MzcsIDB4REMsIDB4MkQsIDB4RDcsIDB4RUYsIDB4QjYsIDB4RDcsIDB4NEUsIDB4MkIsIDB4RkUsIDB4QTEsIDB4NEIsIDB4REMsCisgICAgMHhDMiwgMHg2OSwgMHhFQSwgMHgwNCwgMHg3OSwgMHg2RSwgMHhDMiwgMHhENCwgMHhENiwgMHhDNywgMHgzRCwgMHgyMSwgMHg3QywgMHhCRCwgMHgxMiwgMHg0QywKKyAgICAweDNBLCAweDBGLCAweEE2LCAweEI5LCAweEE4LCAweDY0LCAweEYwLCAweDEzLCAweDI0LCAweDlDLCAweEQ5LCAweEM4LCAweDk3LCAweEJCLCAweEFELCAweDMxLAorICAgIDB4M0QsIDB4NzQsIDB4NkMsIDB4NkQsIDB4NjIsIDB4RTcsIDB4NEUsIDB4NTQsIDB4QzksIDB4RUEsIDB4MEMsIDB4NjUsIDB4QTUsIDB4RjgsIDB4NEEsIDB4QzEsCisgICAgMHg3QywgMHgyNiwgMHg2QiwgMHgzRiwgMHg3MSwgMHgwNiwgMHhBOCwgMHhFNiwgMHhENSwgMHg0MSwgMHhDRiwgMHhEMywgMHhGQiwgMHg2QywgMHg4OCwgMHhCQywKKyAgICAweDgyLCAweEUxLCAweDRELCAweDVGLCAweDNDLCAweDQ4LCAweDYxLCAweEI0LCAweEExLCAweDE3LCAweDQzLCAweDE4LCAweDhFLCAweEEzLCAweEQyLCAweERFLAorICAgIDB4RjUsIDB4MTEsIDB4RTcsIDB4NkYsIDB4QkEsIDB4OUQsIDB4MDAsIDB4OEUsIDB4NTksIDB4NkQsIDB4QzUsIDB4MUMsIDB4NTksIDB4MzgsIDB4RDUsIDB4M0QsCisgICAgMHgxRiwgMHhCOSwgMHgyMCwgMHhEQSwgMHg5MSwgMHhGMywgMHhBNiwgMHg3OSwgMHg5MSwgMHhENCwgMHg2QSwgMHg5NiwgMHhCNiwgMHhERSwgMHhGNiwgMHhEOSwKKyAgICAweEI3LCAweDQzLCAweEQ5LCAweDE0LCAweDAzLCAweDYxLCAweDY5LCAweDZCLCAweEYxLCAweDk2LCAweDkxLCAweDVCLCAweEE2LCAweDQ3LCAweEE1LCAweDg3LAorICAgIDB4MDcsIDB4NUMsIDB4QjcsIDB4MzMsIDB4RTEsIDB4MzUsIDB4RkEsIDB4NzEsIDB4MEIsIDB4RjAsIDB4MTUsIDB4OTYsIDB4MUQsIDB4QTcsIDB4MDEsIDB4ODgsCisgICAgMHhFQywgMHg5NCwgMHhDNSwgMHhEMSwgMHg2MiwgMHg1MywgMHgwRiwgMHhEOSwgMHgzNywgMHg4OCwgMHg3QiwgMHg4MywgMHg5RiwgMHg1OSwgMHgxOSwgMHhCNiwKKyAgICAweEMzLCAweDZGLCAweDk4LCAweEY3LCAweDQwLCAweDM0LCAweDEwLCAweDg0LCAweEIzLCAweDY2LCAweDcyLCAweDRFLCAweDlCLCAweDVCLCAweEQ1LCAweENFLAorICAgIDB4ODQsIDB4NDcsIDB4NkMsIDB4QkIsIDB4ODksIDB4QzAsIDB4RDcsIDB4MDcsIDB4MTEsIDB4MjAsIDB4RDgsIDB4MkUsIDB4MjcsIDB4NTIsIDB4M0MsIDB4MzMsCisgICAgMHg5RSwgMHhDOSwgMHg5RiwgMHg5RiwgMHg0QSwgMHg1RiwgMHg3MywgMHhDOSwgMHhCRSwgMHhDOSwgMHg2MywgMHhEOSwgMHhGMSwgMHhEQSwgMHhFNiwgMHgzQiwKKyAgICAweDA5LCAweEMwLCAweEFBLCAweDU1LCAweEQxLCAweEE2LCAweDMxLCAweEY2LCAweEI0LCAweDNELCAweEVELCAweDc5LCAweDU2LCAweEU4LCAweEI5LCAweDA0LAorICAgIDB4QzYsIDB4NUQsIDB4MTAsIDB4ODEsIDB4ODYsIDB4QjgsIDB4RDQsIDB4MzIsIDB4RjgsIDB4N0IsIDB4QzQsIDB4OUMsIDB4ODksIDB4NjgsIDB4MjYsIDB4OEMsCisgICAgMHhBMSwgMHhDMiwgMHg0MCwgMHgzNCwgMHg0QiwgMHhBRCwgMHgwNiwgMHhDOSwgMHgzMSwgMHhEMSwgMHhERCwgMHhFNiwgMHhCOCwgMHg3NywgMHg4MiwgMHhBNCwKKyAgICAweEZFLCAweDhGLCAweDc0LCAweDY5LCAweDhFLCAweEZGLCAweDMzLCAweEI4LCAweEFFLCAweDI5LCAweDk5LCAweDkyLCAweDM3LCAweDhCLCAweDgyLCAweDczLAorICAgIDB4NTEsIDB4RTMsIDB4MEQsIDB4NUEsIDB4ODgsIDB4QkUsIDB4MjAsIDB4MTIsIDB4N0UsIDB4MDQsIDB4MUEsIDB4REEsIDB4NzYsIDB4NzksIDB4MzQsIDB4MTUsCisgICAgMHhBMywgMHg1MiwgMHg1RCwgMHg3NywgMHg5MCwgMHg0MSwgMHhGRCwgMHgzMiwgMHhBNSwgMHg0MywgMHgyNywgMHgwMywgMHhFQywgMHhENiwgMHgwNSwgMHg0OSwKKyAgICAweDZFLCAweDBGLCAweDIxLCAweEQyLCAweEJELCAweDVFLCAweDJDLCAweDQ2LCAweDhDLCAweDA3LCAweEFCLCAweDY0LCAweEEzLCAweDAwLCAweDUyLCAweDZGLAorICAgIDB4NjUsIDB4ODcsIDB4OTEsIDB4MkEsIDB4ODgsIDB4M0YsIDB4OTMsIDB4NUMsIDB4QzYsIDB4MkYsIDB4RDIsIDB4RjYsIDB4N0UsIDB4NkQsIDB4NDgsIDB4QzgsCisgICAgMHg3RSwgMHgyOSwgMHgzNywgMHgzRSwgMHhBNSwgMHhBNiwgMHgwNCwgMHgzQiwgMHg1NSwgMHg2NSwgMHhCNSwgMHg5QiwgMHg0OSwgMHg3MiwgMHg5QywgMHhCNywKKyAgICAweEU2LCAweEM0LCAweDZELCAweDZBLCAweEJELCAweDcxLCAweDYwLCAweDZCLCAweEJELCAweDYwLCAweDJFLCAweDQzLCAweEZFLCAweDg0LCAweDg4LCAweEQ4LAorICAgIDB4OEMsIDB4ODEsIDB4RDEsIDB4QjAsIDB4OEYsIDB4QUEsIDB4QTAsIDB4OTEsIDB4OUIsIDB4MUUsIDB4RTIsIDB4QTcsIDB4MUQsIDB4NTYsIDB4ODksIDB4NzIsCisgICAgMHhFNywgMHhEMywgMHhFMSwgMHg1OCwgMHg0RSwgMHgwNywgMHgzMCwgMHg3NSwgMHhERSwgMHhDRCwgMHgwMCwgMHhEMiwgMHhGNiwgMHhGQiwgMHgyRCwgMHg1RCwKKyAgICAweEFBLCAweDI5LCAweEY3LCAweEVCLCAweDg0LCAweDE2LCAweDI4LCAweDE3LCAweEVCLCAweEM5LCAweDZELCAweDE4LCAweEU5LCAweDIyLCAweEYyLCAweEVELAorICAgIDB4MTEsIDB4QkMsIDB4REMsIDB4MzMsIDB4OTEsIDB4MDEsIDB4QzksIDB4NkYsIDB4OTYsIDB4RDEsIDB4ODksIDB4RUIsIDB4RUYsIDB4NDcsIDB4NTUsIDB4OTMsCisgICAgMHhGMSwgMHg5NCwgMHgyRCwgMHhERSwgMHg0MCwgMHgyQiwgMHg5RSwgMHhEQiwgMHgwMiwgMHg5RSwgMHhCOCwgMHhBOSwgMHg3RSwgMHg5RCwgMHhCNiwgMHhCRiwKKyAgICAweDk2LCAweDg3LCAweDNGLCAweDA3LCAweDhELCAweDQzLCAweDU4LCAweDcwLCAweDkyLCAweEI4LCAweDQxLCAweDdBLCAweDA1LCAweDNGLCAweDFGLCAweEE3LAorICAgIDB4MEIsIDB4NUIsIDB4MjksIDB4QjEsIDB4NkMsIDB4NzYsIDB4QjMsIDB4NDQsIDB4NkMsIDB4NkYsIDB4ODIsIDB4NzQsIDB4MTAsIDB4QUIsIDB4RjAsIDB4MjksCisgICAgMHgyMCwgMHg2RCwgMHgwMCwgMHgxRSwgMHg0MiwgMHg4OSwgMHg4QiwgMHg3OSwgMHg0QiwgMHg2QSwgMHhGMCwgMHg5RCwgMHg1RSwgMHgxQywgMHgwNSwgMHg3QiwKKyAgICAweDJCLCAweDU3LCAweEIzLCAweDQ1LCAweEJGLCAweDVBLCAweDcyLCAweDQ2LCAweDAxLCAweEZCLCAweEY2LCAweDAzLCAweDE0LCAweEJCLCAweDFBLCAweDFDLAorICAgIDB4NjIsIDB4Q0EsIDB4OUIsIDB4NDAsIDB4QjksIDB4QUUsIDB4NDgsIDB4NEEsIDB4QzksIDB4MEUsIDB4MEEsIDB4MjYsIDB4ODUsIDB4MkMsIDB4MDEsIDB4OTIsCisgICAgMHgzRiwgMHhFMSwgMHgyMiwgMHgzQiwgMHhCQywgMHgyNSwgMHhGNiwgMHgwOCwgMHhCNywgMHg3RSwgMHg5NCwgMHg0NSwgMHgxOCwgMHg5QiwgMHg0OCwgMHhFRSwKKyAgICAweDVFLCAweEQwLCAweEM2LCAweDc0LCAweDM0LCAweEFGLCAweDZFLCAweDY2LCAweEJDLCAweDBDLCAweEFBLCAweDZELCAweEQ2LCAweDFBLCAweEMxLCAweDBGLAorICAgIDB4QUMsIDB4RjYsIDB4OTcsIDB4MjAsIDB4Q0YsIDB4RjMsIDB4OUEsIDB4NzgsIDB4Q0EsIDB4MUIsIDB4OUYsIDB4MjUsIDB4NTIsIDB4M0QsIDB4QTksIDB4MzUsCisgICAgMHgwRCwgMHhFQSwgMHgxMiwgMHhDRiwgMHgwQywgMHgzMiwgMHg1MywgMHg1QSwgMHg1NSwgMHg0QiwgMHg5OSwgMHgwNSwgMHg4MCwgMHg1NiwgMHhCNiwgMHhFMiwKKyAgICAweDU5LCAweEM4LCAweDM3LCAweDBGLCAweDRDLCAweDc5LCAweEVGLCAweEU1LCAweEUwLCAweDQxLCAweDBBLCAweDRDLCAweDFFLCAweDVGLCAweDg1LCAweDkwLAorICAgIDB4QzcsIDB4NjYsIDB4MjgsIDB4QUIsIDB4RDcsIDB4RjEsIDB4OTEsIDB4NjAsIDB4RTcsIDB4NzcsIDB4MjgsIDB4MDEsIDB4N0MsIDB4QTgsIDB4MkEsIDB4MjMsCisgICAgMHg4NCwgMHg3NiwgMHg5MSwgMHhBQSwgMHg2NSwgMHhBNCwgMHhGRiwgMHhFQywgMHhBMiwgMHgwMiwgMHgzNiwgMHg5QSwgMHg0MywgMHgxOCwgMHhBQSwgMHgwRiwKKyAgICAweDgxLCAweDI2LCAweDhGLCAweDhCLCAweDlDLCAweDQ2LCAweDJDLCAweDUzLCAweDYzLCAweDAxLCAweDVDLCAweDQ0LCAweDRCLCAweEJDLCAweDI4LCAweEVBLAorICAgIDB4MkYsIDB4NEUsIDB4NTcsIDB4NzIsIDB4MzUsIDB4QTMsIDB4ODUsIDB4NEYsIDB4MjcsIDB4MjIsIDB4QjUsIDB4OTIsIDB4NUYsIDB4NUIsIDB4RDAsIDB4NzgsCisgICAgMHg0OSwgMHhBRiwgMHg0MiwgMHgxRiwgMHgwQiwgMHgxOSwgMHg5RSwgMHgxNywgMHhCMCwgMHhBNiwgMHhGQiwgMHgyRiwgMHhENywgMHg4MiwgMHg2MCwgMHgxMSwKKyAgICAweEI2LCAweDYzLCAweDRDLCAweDY1LCAweDQ0LCAweEQxLCAweEI0LCAweDlBLCAweERBLCAweDdBLCAweEY4LCAweDZFLCAweEE1LCAweEFFLCAweDU1LCAweDMyLAorICAgIDB4NDYsIDB4REQsIDB4RTUsIDB4QjgsIDB4QzMsIDB4QzYsIDB4REMsIDB4QzQsIDB4NDksIDB4MkMsIDB4MzUsIDB4MkEsIDB4MkYsIDB4RkUsIDB4ODUsIDB4RUUsCisgICAgMHhEMCwgMHhENywgMHg1RSwgMHhGMSwgMHhEOSwgMHhFOSwgMHgyMywgMHhDQiwgMHg5NiwgMHhBRSwgMHgzMCwgMHgyMiwgMHg1NCwgMHg4MCwgMHg5MywgMHg5QSwKKyAgICAweEQ1LCAweDdDLCAweDBBLCAweEY5LCAweDQ3LCAweDFGLCAweDAyLCAweDgwLCAweDIxLCAweEZGLCAweDUzLCAweDM5LCAweEM2LCAweEI3LCAweDczLCAweERFLAorICAgIDB4NEIsIDB4MDMsIDB4QzgsIDB4QjcsIDB4QkYsIDB4MzQsIDB4MEYsIDB4Q0IsIDB4MzcsIDB4RDEsIDB4NUYsIDB4NTMsIDB4NUYsIDB4MDUsIDB4NjIsIDB4MkQsCisgICAgMHg2MiwgMHhDNCwgMHhCNiwgMHhFRCwgMHg4MiwgMHhDMywgMHgxOSwgMHgwOSwgMHhGRCwgMHhDOCwgMHg5MywgMHhBQiwgMHg2MywgMHhCMiwgMHhBNSwgMHg2QiwKKyAgICAweDk3LCAweDgyLCAweDM3LCAweDI5LCAweEJGLCAweDk3LCAweDU0LCAweEZFLCAweDlCLCAweDMyLCAweEZELCAweDUxLCAweEU5LCAweDE0LCAweEUxLCAweDc0LAorICAgIDB4MDcsIDB4MkIsIDB4RkEsIDB4MzksIDB4MUMsIDB4NkEsIDB4NUIsIDB4QTMsIDB4NUIsIDB4N0UsIDB4QjYsIDB4RDksIDB4NjYsIDB4ODIsIDB4MEQsIDB4RjksCisgICAgMHhENywgMHg5QywgMHg2NCwgMHhFOCwgMHgyQSwgMHg3MywgMHg5OCwgMHg5NSwgMHgzMSwgMHhDRiwgMHhBRSwgMHhCRSwgMHg2RCwgMHg1NywgMHg2OSwgMHgzNCwKKyAgICAweDRFLCAweDU4LCAweDBBLCAweEQxLCAweDVBLCAweDk0LCAweDhGLCAweEZFLCAweEY1LCAweEQ2LCAweDRFLCAweDczLCAweEMwLCAweDk2LCAweDRFLCAweEZELAorICAgIDB4MjEsIDB4MjUsIDB4QzQsIDB4QjYsIDB4MTEsIDB4RkEsIDB4QTcsIDB4NDEsIDB4N0UsIDB4QjIsIDB4RkMsIDB4NDIsIDB4MTQsIDB4MTYsIDB4OTAsIDB4QzksCisgICAgMHg3NCwgMHg1RCwgMHg0QSwgMHgyNSwgMHg3MywgMHhFMSwgMHg2MywgMHg3RSwgMHg4MSwgMHhGOSwgMHgzRiwgMHg4RSwgMHgyNCwgMHg0QywgMHg2MSwgMHgwMiwKKyAgICAweEQ1LCAweEY4LCAweEIyLCAweDJFLCAweEYzLCAweDgwLCAweDc5LCAweEJGLCAweDEzLCAweEEwLCAweDM4LCAweEM3LCAweDBFLCAweDRFLCAweDJDLCAweDIyLAorICAgIDB4NDYsIDB4MEUsIDB4MjksIDB4RUUsIDB4MkEsIDB4OEMsIDB4REQsIDB4ODYsIDB4MzMsIDB4QjcsIDB4RjAsIDB4Q0MsIDB4MEYsIDB4MTMsIDB4N0UsIDB4MDMsCisgICAgMHgwNywgMHhCMywgMHgzRSwgMHg5NywgMHhDNSwgMHg2RiwgMHhEQywgMHhGRiwgMHg5NiwgMHgyMywgMHhDQiwgMHg2OSwgMHg4QiwgMHg4NiwgMHg5NCwgMHg2RCwKKyAgICAweDg2LCAweEVGLCAweDJGLCAweDVDLCAweDMxLCAweDdGLCAweEY3LCAweDIyLCAweDk2LCAweDYxLCAweDg4LCAweDc1LCAweDNDLCAweDc2LCAweDk3LCAweDEyLAorICAgIDB4MUEsIDB4RUYsIDB4NzAsIDB4N0QsIDB4NkEsIDB4MTcsIDB4RjUsIDB4QjEsIDB4QjUsIDB4NjgsIDB4NTAsIDB4OTEsIDB4REQsIDB4ODgsIDB4MEYsIDB4Q0IsCisgICAgMHgzMywgMHg3MywgMHhCOSwgMHhCRiwgMHhDNiwgMHg2NSwgMHhBRSwgMHgxNSwgMHg2QiwgMHgyMCwgMHhDRiwgMHg4QSwgMHhERiwgMHhERiwgMHg1RCwgMHhBRCwKKyAgICAweEU4LCAweDQ1LCAweDY5LCAweDdELCAweDFDLCAweDFCLCAweEYyLCAweEFDLCAweENELCAweDlELCAweDlGLCAweEI4LCAweDZELCAweDU3LCAweDE2LCAweDkyLAorICAgIDB4Q0MsIDB4MUEsIDB4RjIsIDB4QzIsIDB4NjIsIDB4RUUsIDB4RTIsIDB4NzEsIDB4MkQsIDB4NTgsIDB4QUIsIDB4QjcsIDB4NjAsIDB4NEQsIDB4REIsIDB4RUYsCisgICAgMHg4OCwgMHhDMiwgMHgyQiwgMHgzOSwgMHg4QiwgMHg0QywgMHgwRiwgMHhFRiwgMHhFQiwgMHg4NiwgMHgxNiwgMHgzNCwgMHg0OSwgMHg5RSwgMHgxRSwgMHgyNCwKKyAgICAweEZDLCAweEU5LCAweDc3LCAweDJBLCAweEQyLCAweDc1LCAweDc2LCAweDk2LCAweDI0LCAweEQzLCAweDMzLCAweDRELCAweDhCLCAweERELCAweDkyLCAweEJFLAorICAgIDB4QkYsIDB4RTUsIDB4QjAsIDB4MTIsIDB4OTIsIDB4MEMsIDB4ODksIDB4RDgsIDB4NzMsIDB4RTIsIDB4QTYsIDB4RDcsIDB4RjMsIDB4MTUsIDB4NTksIDB4NzYsCisgICAgMHg5RiwgMHgzQiwgMHgxMCwgMHhDMSwgMHhBNCwgMHg5QiwgMHg2NCwgMHhDOCwgMHg0QiwgMHhENCwgMHhFRSwgMHg2MywgMHhBNywgMHhGNywgMHhFOSwgMHhCNCwKKyAgICAweDQzLCAweDUwLCAweEM0LCAweDdCLCAweEUxLCAweDdBLCAweDUzLCAweDZELCAweEM4LCAweDE3LCAweDgyLCAweDMxLCAweEU0LCAweDUzLCAweEYzLCAweDIwLAorICAgIDB4RjAsIDB4RTksIDB4NzgsIDB4QUYsIDB4OEYsIDB4OTUsIDB4OTYsIDB4QTgsIDB4RTksIDB4MEUsIDB4RkUsIDB4MTAsIDB4NTEsIDB4OEUsIDB4RjEsIDB4NjQsCisgICAgMHg4OSwgMHgyQiwgMHgwQiwgMHhFMSwgMHhDRSwgMHhBMSwgMHhBOSwgMHhDQSwgMHhGMCwgMHhENCwgMHhEMywgMHhBQSwgMHg0OSwgMHhFMywgMHg2OCwgMHg3NiwKKyAgICAweERFLCAweDIwLCAweDc3LCAweENCLCAweDkyLCAweDYwLCAweDM2LCAweDY2LCAweDgyLCAweDA2LCAweDZELCAweERGLCAweDExLCAweEY3LCAweEEzLCAweDA3LAorICAgIDB4NDMsIDB4MTgsIDB4NDgsIDB4ODksIDB4NDAsIDB4MTksIDB4NzIsIDB4QUQsIDB4RjUsIDB4MDYsIDB4MEIsIDB4NjEsIDB4ODcsIDB4RDksIDB4NDgsIDB4MTcsCisgICAgMHg4QSwgMHgwRCwgMHhDOCwgMHg2QywgMHhEOSwgMHhDOSwgMHg5RCwgMHhFRSwgMHgwOCwgMHgxNiwgMHgxRiwgMHgwRCwgMHg4OCwgMHhCNSwgMHhFRiwgMHg1QiwKKyAgICAweDJGLCAweDQwLCAweEFFLCAweDcxLCAweDBGLCAweDAyLCAweDk2LCAweEFGLCAweDJDLCAweEM4LCAweDhFLCAweDg2LCAweDY0LCAweDU4LCAweEYxLCAweDdDLAorICAgIDB4RTksIDB4ODYsIDB4REIsIDB4Q0YsIDB4NTcsIDB4NUUsIDB4RjksIDB4NTcsIDB4N0UsIDB4ODUsIDB4QUUsIDB4OEIsIDB4NkEsIDB4MUUsIDB4OUIsIDB4MkIsCisgICAgMHgwRCwgMHhFMiwgMHgwNywgMHhERSwgMHg0MiwgMHg3NiwgMHg3OSwgMHg3MiwgMHgyNSwgMHhCQiwgMHhENiwgMHhEQSwgMHhEOCwgMHg4RCwgMHhFNCwgMHgzNCwKKyAgICAweEY2LCAweEM2LCAweEJCLCAweDAwLCAweDYyLCAweDIyLCAweDRELCAweDBGLCAweDkwLCAweEQxLCAweDM1LCAweDIwLCAweDZCLCAweDNDLCAweDQzLCAweEIyLAorICAgIDB4QkYsIDB4RUQsIDB4Q0EsIDB4NUQsIDB4QzIsIDB4MEYsIDB4NUEsIDB4OTQsIDB4ODcsIDB4RTMsIDB4NjEsIDB4OTQsIDB4ODUsIDB4RTQsIDB4MjQsIDB4NjMsCisgICAgMHhFRiwgMHg4QywgMHhEOSwgMHg3QiwgMHhFRSwgMHgyNCwgMHg1QywgMHg1MSwgMHg0QSwgMHhGMSwgMHg2QiwgMHhFQiwgMHhENiwgMHg1QSwgMHgwRiwgMHhDRSwKKyAgICAweDNCLCAweDI5LCAweEFFLCAweDg2LCAweEFBLCAweEZGLCAweEVDLCAweDY2LCAweDU0LCAweDQ1LCAweEE0LCAweDg2LCAweEQxLCAweDNGLCAweDJDLCAweEVGLAorICAgIDB4RjEsIDB4NzEsIDB4MzMsIDB4NEUsIDB4QjgsIDB4MTYsIDB4MUEsIDB4QjIsIDB4MTgsIDB4NkUsIDB4Q0QsIDB4QkEsIDB4NTksIDB4REIsIDB4NTIsIDB4RTgsCisgICAgMHg0OSwgMHg3OCwgMHg3NSwgMHg1QywgMHg5RiwgMHg5NywgMHhCNywgMHgwMCwgMHg1NywgMHgxMSwgMHhCMSwgMHg5RCwgMHg5OSwgMHgwQywgMHhBMiwgMHg1NCwKKyAgICAweERELCAweDBBLCAweDAzLCAweEY1LCAweEFBLCAweDBELCAweEJGLCAweDQ3LCAweDJELCAweEMwLCAweDQxLCAweDNBLCAweDI5LCAweDBBLCAweEE1LCAweDhDLAorICAgIDB4NzcsIDB4MzgsIDB4QTUsIDB4NEYsIDB4RTksIDB4OUMsIDB4N0UsIDB4MjMsIDB4N0UsIDB4RUYsIDB4OEYsIDB4QjMsIDB4NDUsIDB4OTYsIDB4QTUsIDB4REMsCisgICAgMHhBQywgMHgxQSwgMHg0NCwgMHhFRSwgMHhFNCwgMHgxQywgMHgxNywgMHgwMSwgMHg3RSwgMHgyNiwgMHg5RCwgMHhBMCwgMHg5MCwgMHhEOCwgMHg0RiwgMHg1QSwKKyAgICAweDE0LCAweDk5LCAweDQ2LCAweDUxLCAweDFGLCAweDI5LCAweEZBLCAweEUyLCAweEI2LCAweEVCLCAweDcxLCAweDFBLCAweEY0LCAweEUyLCAweDU5LCAweDMyLAorICAgIDB4MTgsIDB4NjYsIDB4MzEsIDB4NzMsIDB4NTgsIDB4MjMsIDB4RjMsIDB4REMsIDB4Q0IsIDB4NzMsIDB4QkYsIDB4MDQsIDB4QjUsIDB4QkQsIDB4QUQsIDB4NEQsCisgICAgMHg2NywgMHg5NiwgMHg4NCwgMHhGQSwgMHg2MCwgMHg0OCwgMHg5NywgMHgzMiwgMHhFRCwgMHg1NSwgMHhCMSwgMHg5MCwgMHhEMywgMHgxNSwgMHhGQSwgMHhEOSwKKyAgICAweEU0LCAweDlFLCAweDY1LCAweDcyLCAweDhELCAweEM1LCAweDE2LCAweDk5LCAweEM5LCAweEU3LCAweEY3LCAweDI5LCAweEFELCAweEY3LCAweERCLCAweDRDLAorICAgIDB4MEEsIDB4RDAsIDB4NDAsIDB4QkUsIDB4MjYsIDB4RjQsIDB4QzMsIDB4ODksIDB4NzAsIDB4RTEsIDB4ODIsIDB4RjEsIDB4OTUsIDB4QjMsIDB4QjgsIDB4NjQsCisgICAgMHhFNCwgMHhCQSwgMHgyRSwgMHg0QywgMHg0QSwgMHg5MywgMHg0MSwgMHgyMSwgMHhGMSwgMHhCRCwgMHgyQywgMHg4RSwgMHgxNSwgMHhGQywgMHhDMiwgMHgzMywKKyAgICAweDlFLCAweDc2LCAweEFELCAweENFLCAweDkzLCAweEVELCAweDRELCAweDA0LCAweDI3LCAweDcxLCAweERCLCAweDIxLCAweDBBLCAweERFLCAweDQ4LCAweEFELAorICAgIDB4NDMsIDB4NkYsIDB4RjcsIDB4OTcsIDB4N0IsIDB4QkMsIDB4Q0QsIDB4NUEsIDB4REUsIDB4NjAsIDB4MDcsIDB4MDcsIDB4MkEsIDB4ODMsIDB4RjQsIDB4MjUsCisgICAgMHg2QSwgMHhEMSwgMHhCRiwgMHhCMiwgMHgzQiwgMHhGNywgMHg0RSwgMHg0NiwgMHhCMCwgMHgzNCwgMHhDMiwgMHg5MywgMHg0NSwgMHhCOSwgMHhFNiwgMHgzMiwKKyAgICAweDhFLCAweDc1LCAweDY3LCAweDEyLCAweDA2LCAweDQ2LCAweDdCLCAweEIxLCAweEQ2LCAweEVDLCAweDkxLCAweDczLCAweDg3LCAweDk5LCAweDNFLCAweDlFLAorICAgIDB4QkIsIDB4QUMsIDB4MEMsIDB4OTQsIDB4Q0MsIDB4QkQsIDB4MzMsIDB4Q0YsIDB4MjcsIDB4NjUsIDB4NzAsIDB4MTgsIDB4NDksIDB4MjcsIDB4RDksIDB4QUYsCisgICAgMHgxNywgMHg0MywgMHgxNiwgMHg5OSwgMHhEMywgMHgwQSwgMHhCOSwgMHhFOSwgMHhENiwgMHg0QSwgMHhERSwgMHg5QywgMHg5QywgMHgzRiwgMHhFOCwgMHgyNSwKKyAgICAweEI4LCAweEI5LCAweEFFLCAweEI2LCAweDVCLCAweEQ1LCAweDlFLCAweDVFLCAweDQxLCAweDQxLCAweERFLCAweEM4LCAweDhFLCAweEUzLCAweEVDLCAweDg4LAorICAgIDB4RTgsIDB4RDYsIDB4MDksIDB4MTYsIDB4QUIsIDB4NUMsIDB4OTMsIDB4QzUsIDB4QUMsIDB4QTgsIDB4NzAsIDB4MTQsIDB4OEIsIDB4OUQsIDB4ODcsIDB4MjcsCisgICAgMHhDOSwgMHgwNywgMHg4MywgMHg5NCwgMHhEMywgMHhCRCwgMHgzOCwgMHhGOCwgMHg5MiwgMHhCOSwgMHhCMCwgMHhGQiwgMHhDMiwgMHhDRiwgMHg2OSwgMHgwQSwKKyAgICAweDZFLCAweDM5LCAweEI0LCAweDExLCAweEQ3LCAweDU0LCAweENGLCAweDJDLCAweDg3LCAweDk0LCAweDdFLCAweEQ4LCAweDZELCAweEVELCAweDU0LCAweERGLAorICAgIDB4QkEsIDB4RjYsIDB4NTcsIDB4MkUsIDB4RTYsIDB4NUIsIDB4MjYsIDB4M0UsIDB4RDIsIDB4QTMsIDB4RTYsIDB4QjMsIDB4OUIsIDB4NzUsIDB4RDUsIDB4QkQsCisgICAgMHg3NiwgMHg5RSwgMHhFNSwgMHg4MiwgMHhBOCwgMHg0QSwgMHgyQiwgMHhDNSwgMHg0NSwgMHg4MCwgMHhDNSwgMHg1NSwgMHgwQSwgMHg3MiwgMHg3OCwgMHg1OCwKKyAgICAweDNFLCAweDg4LCAweDlELCAweDdELCAweDdDLCAweDIzLCAweEU4LCAweENELCAweDFDLCAweEFGLCAweDdDLCAweDQzLCAweEIxLCAweEUwLCAweDE5LCAweDk2LAorICAgIDB4NUMsIDB4QkMsIDB4RjcsIDB4MkEsIDB4NjAsIDB4RjIsIDB4NTAsIDB4NTQsIDB4Q0MsIDB4RTcsIDB4RjQsIDB4RDcsIDB4MkQsIDB4REYsIDB4MDMsIDB4QkIsCisgICAgMHg3NywgMHhDRSwgMHg5QywgMHhCMywgMHg5RiwgMHhDMCwgMHhCQywgMHhDMywgMHhCQiwgMHg0NywgMHhDNiwgMHhBRSwgMHgxQSwgMHgwQSwgMHg1NywgMHg1MiwKKyAgICAweEE1LCAweDc1LCAweEI1LCAweDMyLCAweDYyLCAweDlBLCAweDExLCAweEQ2LCAweDQ1LCAweDAzLCAweEZDLCAweEFBLCAweDQzLCAweDU1LCAweDRELCAweERDLAorICAgIDB4RTgsIDB4MEYsIDB4QkMsIDB4NDYsIDB4NUIsIDB4NTcsIDB4MzcsIDB4OUYsIDB4RDQsIDB4NUUsIDB4RkMsIDB4RDQsIDB4N0EsIDB4MUIsIDB4NjcsIDB4QjcsCisgICAgMHgyQSwgMHhCRSwgMHg2QSwgMHg1OCwgMHhGNiwgMHgyMSwgMHgyMCwgMHgyOSwgMHg5MCwgMHhDOSwgMHhCMSwgMHgyNSwgMHgwNSwgMHhGMiwgMHg5NSwgMHg1RiwKKyAgICAweEEyLCAweDNFLCAweDM5LCAweEZDLCAweEYwLCAweDA4LCAweDYxLCAweEU1LCAweEIyLCAweDlBLCAweEZCLCAweEUwLCAweDlELCAweDQwLCAweDVELCAweEU0LAorICAgIDB4MkQsIDB4NjIsIDB4MzcsIDB4OEUsIDB4MDIsIDB4NUEsIDB4QTEsIDB4RDUsIDB4NjMsIDB4OUEsIDB4RTIsIDB4NzcsIDB4NDYsIDB4QzYsIDB4RDEsIDB4MTAsCisgICAgMHhBQSwgMHg0NiwgMHgxRCwgMHgyMiwgMHg0NiwgMHgyRiwgMHhFOSwgMHg5NSwgMHhGNCwgMHhENSwgMHg2OSwgMHhFNiwgMHg3MCwgMHhEQywgMHgwOSwgMHg0RSwKKyAgICAweDBELCAweEE2LCAweEQ2LCAweDE2LCAweDk3LCAweEQxLCAweDRDLCAweEQzLCAweEQ3LCAweDBCLCAweDRDLCAweDk3LCAweDY2LCAweEMwLCAweDNGLCAweDkxLAorICAgIDB4QjAsIDB4OUUsIDB4MkYsIDB4MDAsIDB4RjEsIDB4MTAsIDB4NzgsIDB4NTAsIDB4OUYsIDB4QzYsIDB4MzgsIDB4QzUsIDB4NDYsIDB4QjAsIDB4NDUsIDB4NTMsCisgICAgMHg0RiwgMHgwMSwgMHg3QywgMHg0NiwgMHhCMiwgMHg4NSwgMHhCRSwgMHg4OSwgMHhCMywgMHg5OSwgMHgzMywgMHhDQiwgMHg4NCwgMHgwNywgMHg0NSwgMHg0MCwKKyAgICAweDE2LCAweDBFLCAweDJGLCAweEU3LCAweDVELCAweDBFLCAweEZFLCAweEY3LCAweDY4LCAweEYzLCAweDcwLCAweEVELCAweDhDLCAweDgyLCAweDJGLCAweDQ4LAorICAgIDB4NjUsIDB4RDIsIDB4Q0QsIDB4M0UsIDB4NjUsIDB4QzMsIDB4Q0QsIDB4N0EsIDB4M0QsIDB4QUQsIDB4QTAsIDB4QjQsIDB4MjksIDB4NTcsIDB4MjYsIDB4RjEsCisgICAgMHhGRiwgMHhBMSwgMHg5MiwgMHg5RiwgMHg2NCwgMHhBRiwgMHgxRCwgMHhCNCwgMHhGMSwgMHhERCwgMHg0RiwgMHhDOCwgMHgxQywgMHgxQSwgMHg4QSwgMHgyNiwKKyAgICAweDNELCAweEJDLCAweEM4LCAweDU3LCAweDkyLCAweERCLCAweEFBLCAweDVELCAweDVCLCAweDdGLCAweDc3LCAweEM1LCAweDQ3LCAweDAyLCAweDM0LCAweDI1LAorICAgIDB4NjAsIDB4QzUsIDB4N0IsIDB4OEMsIDB4ODQsIDB4MzAsIDB4OUQsIDB4RjIsIDB4OEEsIDB4MTQsIDB4NkQsIDB4NTUsIDB4MTQsIDB4QTQsIDB4QTIsIDB4NTYsCisgICAgMHhGQywgMHgyNiwgMHg5RiwgMHgxQiwgMHg2NiwgMHhDQywgMHg1RiwgMHg2OSwgMHhGNSwgMHg5QiwgMHg0MywgMHhBMCwgMHhGQywgMHg4NCwgMHgwMCwgMHgxRiwKKyAgICAweDg1LCAweDZBLCAweDlDLCAweDIzLCAweDk5LCAweDZGLCAweEYxLCAweEZDLCAweDhFLCAweDA3LCAweEM0LCAweDYyLCAweDczLCAweEVBLCAweEZELCAweDdGLAorICAgIDB4OTIsIDB4MjgsIDB4RTEsIDB4QzEsIDB4NTEsIDB4NUIsIDB4REMsIDB4MkQsIDB4QjEsIDB4ODgsIDB4RTUsIDB4OEMsIDB4NjksIDB4MTgsIDB4RjMsIDB4RDcsCisgICAgMHhGRiwgMHg3NiwgMHgzNSwgMHg4MywgMHgwQSwgMHg1NCwgMHg1OSwgMHgyMiwgMHgzMSwgMHg4MywgMHgyNiwgMHhCOCwgMHg1RiwgMHgyNiwgMHhBNywgMHg3MywKKyAgICAweDUwLCAweEIxLCAweEI3LCAweDUzLCAweDgyLCAweDJDLCAweDE1LCAweDY1LCAweERGLCAweEY5LCAweDVFLCAweDJBLCAweDlBLCAweDdFLCAweDE5LCAweEVFLAorICAgIDB4QkUsIDB4REUsIDB4QTgsIDB4QjIsIDB4ODIsIDB4NTgsIDB4MDYsIDB4RTEsIDB4RDEsIDB4QUIsIDB4RTYsIDB4MTUsIDB4N0EsIDB4MzEsIDB4MUIsIDB4NEIsCisgICAgMHhGNiwgMHhFRSwgMHg0OSwgMHgyNSwgMHhCMywgMHg2OCwgMHhGRSwgMHgyNSwgMHg2QywgMHg0NiwgMHg5QiwgMHg4OCwgMHhGQSwgMHg0QywgMHhGQywgMHg5MCwKKyAgICAweEE1LCAweDZCLCAweDQwLCAweDA3LCAweERCLCAweEE1LCAweEU1LCAweDk3LCAweDIwLCAweEQ1LCAweEUzLCAweDBBLCAweEM5LCAweEI4LCAweDU1LCAweERELAorICAgIDB4OUIsIDB4QkEsIDB4MTEsIDB4MDYsIDB4NEMsIDB4M0QsIDB4MzQsIDB4MDksIDB4RDEsIDB4QUEsIDB4ODcsIDB4NUIsIDB4OTUsIDB4REQsIDB4RjksIDB4NUQsCisgICAgMHg3RSwgMHg1MywgMHhFMywgMHgzMSwgMHg0NiwgMHhBQiwgMHgzMywgMHgxMiwgMHgwQiwgMHhCOCwgMHhFQiwgMHg0QywgMHgyRiwgMHg5NSwgMHgwRCwgMHgzOSwKKyAgICAweEQ1LCAweEI0LCAweEVELCAweDk2LCAweENFLCAweEMwLCAweDVBLCAweEEzLCAweDE2LCAweEI4LCAweDlBLCAweDY4LCAweERDLCAweEU5LCAweDNCLCAweEM2LAorICAgIDB4MzYsIDB4NzUsIDB4OEMsIDB4OEUsIDB4MjUsIDB4OTcsIDB4RjcsIDB4ODEsIDB4QzIsIDB4QUMsIDB4M0YsIDB4NUUsIDB4NkIsIDB4NEMsIDB4N0UsIDB4OTUsCisgICAgMHhBRSwgMHhEMSwgMHg1MCwgMHg5MSwgMHgxNSwgMHg2NywgMHg4RSwgMHhDOCwgMHhGMiwgMHg4MSwgMHg4QSwgMHg2QiwgMHhCRiwgMHg0QiwgMHhDNiwgMHhBRiwKKyAgICAweENELCAweDA0LCAweENDLCAweDE2LCAweEEyLCAweDQzLCAweDdBLCAweDc4LCAweDU2LCAweEMxLCAweDdFLCAweEM4LCAweEJFLCAweDkxLCAweDlELCAweDdCLAorICAgIDB4OUMsIDB4QUMsIDB4N0UsIDB4MTgsIDB4RkEsIDB4RUIsIDB4QUQsIDB4MUYsIDB4MjgsIDB4RTAsIDB4NjEsIDB4ODEsIDB4QzMsIDB4RDMsIDB4MjQsIDB4NzgsCisgICAgMHgwOCwgMHhFNiwgMHhENSwgMHg5MSwgMHg4MywgMHgzNiwgMHhBNCwgMHgxQSwgMHhCOCwgMHhDRiwgMHg5MywgMHg0RiwgMHgyNiwgMHg2QywgMHhDMSwgMHg3RiwKKyAgICAweDQ4LCAweDkzLCAweEQyLCAweEQ2LCAweEMyLCAweDMzLCAweDVDLCAweDlELCAweDNGLCAweDg0LCAweDdDLCAweEQ3LCAweDhCLCAweEJDLCAweDlBLCAweERDLAorICAgIDB4NDYsIDB4ODQsIDB4Q0MsIDB4NzIsIDB4RjcsIDB4N0MsIDB4RUUsIDB4QTgsIDB4MzcsIDB4NTQsIDB4NzcsIDB4RDgsIDB4MjEsIDB4NDQsIDB4QTMsIDB4M0EsCisgICAgMHhCRCwgMHhDRiwgMHg2NSwgMHhGMywgMHhEQiwgMHhEMCwgMHg2RiwgMHhDQSwgMHgxOSwgMHhDRCwgMHhBQywgMHhCRCwgMHg2NiwgMHg5MiwgMHg4OSwgMHhERiwKKyAgICAweDJCLCAweEZFLCAweDhELCAweDI4LCAweEJBLCAweDc5LCAweDVCLCAweEJGLCAweDY2LCAweDY3LCAweDA1LCAweEU5LCAweEE2LCAweEZELCAweDU2LCAweEQ2LAorICAgIDB4NjMsIDB4OEEsIDB4MjMsIDB4MDEsIDB4MjQsIDB4NUEsIDB4NkQsIDB4NDMsIDB4Q0QsIDB4MjYsIDB4MTMsIDB4MkUsIDB4NDgsIDB4NDYsIDB4MDEsIDB4MjAsCisgICAgMHg1MiwgMHg1QSwgMHhEOCwgMHgzNCwgMHg3NSwgMHhGNSwgMHg0RSwgMHg2MywgMHg1NiwgMHgxNywgMHgzNSwgMHgxMCwgMHgyOSwgMHg0QiwgMHhERCwgMHgwQiwKKyAgICAweEE1LCAweEFGLCAweDk1LCAweDkyLCAweEVFLCAweDExLCAweDk5LCAweEQyLCAweEVBLCAweDMwLCAweDgwLCAweDE2LCAweEIzLCAweEY4LCAweDk2LCAweDI0LAorICAgIDB4RUQsIDB4OTgsIDB4NUYsIDB4NEYsIDB4MDIsIDB4QkIsIDB4NjksIDB4REQsIDB4MzAsIDB4MUMsIDB4QkUsIDB4M0YsIDB4MUIsIDB4MzMsIDB4MkEsIDB4QTcsCisgICAgMHg4MywgMHhENywgMHgwRSwgMHgzRCwgMHg0OSwgMHg1OCwgMHhFRiwgMHg2MSwgMHgwRCwgMHgxQywgMHg2QiwgMHgxQiwgMHg0MSwgMHhCNywgMHhCMywgMHg2NCwKKyAgICAweEY5LCAweEUxLCAweDFGLCAweEYyLCAweDRCLCAweEM4LCAweEVELCAweEM3LCAweEVFLCAweDNBLCAweENCLCAweENELCAweDE4LCAweDQwLCAweDI4LCAweDJGLAorICAgIDB4MUMsIDB4NDEsIDB4MDIsIDB4MzEsIDB4N0EsIDB4QzMsIDB4NzEsIDB4NzUsIDB4MjEsIDB4NDksIDB4NjUsIDB4NkQsIDB4MzIsIDB4QUMsIDB4MDYsIDB4NDIsCisgICAgMHgxMSwgMHg5NiwgMHhCMiwgMHhFQywgMHhEOSwgMHg1RCwgMHhEMywgMHhCNCwgMHhCMSwgMHgyMSwgMHhGRiwgMHg5OCwgMHg5RiwgMHhENiwgMHg3NywgMHg3MCwKKyAgICAweDZCLCAweEE0LCAweDZFLCAweDQ1LCAweDY5LCAweDhDLCAweERCLCAweDc3LCAweDkyLCAweDgwLCAweEYzLCAweDgyLCAweDk1LCAweDJFLCAweDczLCAweEE2LAorICAgIDB4N0UsIDB4QUEsIDB4NkYsIDB4RTIsIDB4NzgsIDB4ODIsIDB4OUUsIDB4NzgsIDB4M0MsIDB4QjcsIDB4NUEsIDB4OTAsIDB4QTAsIDB4RTgsIDB4QjQsIDB4NUQsCisgICAgMHg3QSwgMHhBOCwgMHhDRSwgMHhBQywgMHhCQSwgMHgwMCwgMHhFQSwgMHgwRiwgMHhERiwgMHg2QiwgMHg3NSwgMHg0QywgMHgwRCwgMHgxQywgMHgzMCwgMHg3RiwKKyAgICAweDZFLCAweEZBLCAweDAzLCAweERDLCAweDZCLCAweDQ4LCAweEUwLCAweDc0LCAweEQ5LCAweEI5LCAweDY3LCAweDlELCAweDBCLCAweDU1LCAweEQzLCAweEZFLAorICAgIDB4NjgsIDB4NzksIDB4RjcsIDB4MTAsIDB4N0YsIDB4OUUsIDB4RTEsIDB4QjksIDB4NjAsIDB4RTcsIDB4NTQsIDB4MTMsIDB4NjcsIDB4MkMsIDB4MDQsIDB4NDgsCisgICAgMHhERiwgMHhEOSwgMHg4NSwgMHgyQywgMHhGRiwgMHgxRSwgMHgwMSwgMHg2MSwgMHgwRiwgMHg3NCwgMHgyQywgMHgyMSwgMHg2OSwgMHgzRiwgMHhFNiwgMHg3QSwKKyAgICAweEYzLCAweEQ3LCAweEU2LCAweEQzLCAweEJGLCAweDc3LCAweDgzLCAweEM4LCAweEY1LCAweDVELCAweEY0LCAweDRELCAweEM2LCAweDBCLCAweEVDLCAweDQ2LAorICAgIDB4MzksIDB4REEsIDB4QkQsIDB4MzksIDB4NTEsIDB4QjksIDB4RjIsIDB4QzMsIDB4NDgsIDB4NDEsIDB4REEsIDB4MUUsIDB4MkYsIDB4RDgsIDB4RkIsIDB4N0YsCisgICAgMHg5RSwgMHg5QywgMHgxMCwgMHhGMSwgMHhCMiwgMHgyQSwgMHgxNCwgMHhEMSwgMHgzQywgMHgzOCwgMHgwRiwgMHgyMSwgMHg5RCwgMHhBRiwgMHg2NCwgMHg5NSwKKyAgICAweDQ2LCAweDZBLCAweEQyLCAweDI4LCAweDE0LCAweDE2LCAweEYwLCAweDI4LCAweDQzLCAweEM5LCAweDgxLCAweDFELCAweDFFLCAweEI3LCAweDBELCAweDg0LAorICAgIDB4OEIsIDB4MzAsIDB4RkQsIDB4RTMsIDB4QkIsIDB4NDYsIDB4NUUsIDB4RkQsIDB4RUEsIDB4MEEsIDB4OUUsIDB4MDIsIDB4M0YsIDB4NUUsIDB4RTUsIDB4MDAsCisgICAgMHg5NywgMHhGQiwgMHgwRCwgMHhFQSwgMHhGOCwgMHg2NiwgMHg3RiwgMHhCMywgMHg2RCwgMHgyRSwgMHhGRCwgMHhDOCwgMHgxNSwgMHg5NywgMHhFMCwgMHhEQiwKKyAgICAweDQ0LCAweDU5LCAweEJDLCAweDMyLCAweEI3LCAweDcwLCAweDYxLCAweDg4LCAweEM5LCAweDgxLCAweDIxLCAweEE0LCAweDgyLCAweDhELCAweDI3LCAweDY3LAorICAgIDB4MzMsIDB4MzEsIDB4RTUsIDB4NkIsIDB4OTQsIDB4MjYsIDB4QjksIDB4QzMsIDB4QjgsIDB4NDUsIDB4NjksIDB4NUQsIDB4MEIsIDB4RDIsIDB4QjEsIDB4M0EsCisgICAgMHgwMywgMHg0MCwgMHg4QiwgMHgwNiwgMHg3OSwgMHg3NiwgMHg2MywgMHgyNCwgMHg2MSwgMHhCOSwgMHgyNiwgMHg2NCwgMHgxNCwgMHhDMywgMHg5QywgMHg5QSwKKyAgICAweEZBLCAweEQ5LCAweEJGLCAweDdCLCAweDZBLCAweEIzLCAweDJCLCAweDlDLCAweDlBLCAweDhELCAweDlBLCAweDExLCAweDlCLCAweEY3LCAweDlELCAweEQyLAorICAgIDB4RjgsIDB4RTQsIDB4NzQsIDB4NkQsIDB4NUUsIDB4MTIsIDB4RDksIDB4QzIsIDB4RTMsIDB4N0QsIDB4REUsIDB4REEsIDB4NTcsIDB4RDYsIDB4RUYsIDB4OUEsCisgICAgMHhCMSwgMHgxMywgMHhGMCwgMHhDNSwgMHg5OSwgMHg1QiwgMHg4OCwgMHhFMiwgMHg5QiwgMHhERiwgMHgzQiwgMHg2MiwgMHg5RiwgMHgzQywgMHgxMCwgMHgzOCwKKyAgICAweDkxLCAweEZBLCAweDk3LCAweDgyLCAweDQ0LCAweDM2LCAweDY1LCAweDhDLCAweEEyLCAweDQ3LCAweDlCLCAweDEwLCAweDEyLCAweDk2LCAweEExLCAweDRFLAorICAgIDB4MEUsIDB4NTcsIDB4NDIsIDB4NjIsIDB4RjQsIDB4RTYsIDB4QUYsIDB4MjMsIDB4QzAsIDB4QjQsIDB4QTAsIDB4NDksIDB4NUEsIDB4MzMsIDB4QTksIDB4NEQsCisgICAgMHhCMSwgMHhCMCwgMHg1QiwgMHgwQywgMHg2QSwgMHg2NywgMHg0NywgMHhGQiwgMHgwMywgMHg3QywgMHgxRiwgMHgxNSwgMHhBMSwgMHg3MiwgMHg5OSwgMHhCRSwKKyAgICAweDg0LCAweDU4LCAweDY4LCAweDM2LCAweDEzLCAweDM0LCAweDBDLCAweDIwLCAweDExLCAweERCLCAweDY4LCAweDMwLCAweDlGLCAweEVBLCAweDA1LCAweDk5LAorICAgIDB4REMsIDB4MzAsIDB4RjMsIDB4QTcsIDB4QTksIDB4M0MsIDB4N0QsIDB4QTgsIDB4M0MsIDB4MEQsIDB4NDMsIDB4Q0IsIDB4Q0MsIDB4QTUsIDB4NDAsIDB4Q0YsCisgICAgMHgwRiwgMHhGNCwgMHgzNCwgMHg5MSwgMHg3OSwgMHgzNiwgMHhCOCwgMHg0RCwgMHgyNSwgMHgzRSwgMHhGNywgMHg2OSwgMHhDNywgMHgzMSwgMHg5RCwgMHg0NSwKKyAgICAweEVDLCAweDNDLCAweDNELCAweDk5LCAweDEzLCAweDU0LCAweDE5LCAweDNELCAweERELCAweDJCLCAweEU5LCAweDZCLCAweEUwLCAweENFLCAweEI3LCAweEJGLAorICAgIDB4OEYsIDB4NDcsIDB4MEYsIDB4MUEsIDB4NDMsIDB4MTQsIDB4NEMsIDB4QUIsIDB4RDQsIDB4RUUsIDB4QUMsIDB4NTUsIDB4MEMsIDB4NEQsIDB4N0UsIDB4QTUsCisgICAgMHg0MCwgMHhFOSwgMHhEMCwgMHgwQSwgMHhDMCwgMHhDRCwgMHhCOCwgMHhCNCwgMHgzMSwgMHg2MywgMHhFQiwgMHg3OCwgMHhFOSwgMHgzMiwgMHgxOSwgMHhFMywKKyAgICAweEZCLCAweEE0LCAweENGLCAweDQ4LCAweDM5LCAweDkyLCAweEE1LCAweEFBLCAweEEwLCAweDRFLCAweEExLCAweEYzLCAweDJFLCAweDFBLCAweDU5LCAweDYyLAorICAgIDB4QTQsIDB4QzAsIDB4N0IsIDB4QUMsIDB4Q0EsIDB4QUQsIDB4NTIsIDB4QTQsIDB4QjcsIDB4NkYsIDB4NEIsIDB4NjcsIDB4NUUsIDB4NUUsIDB4MkEsIDB4RTAsCisgICAgMHhFQywgMHg5QiwgMHhBNywgMHhENiwgMHg2NSwgMHhENCwgMHg2MCwgMHhGMywgMHg0OCwgMHhERiwgMHg0NSwgMHhGMywgMHhGRCwgMHhCNSwgMHgwRiwgMHhDOSwKKyAgICAweEU2LCAweDEwLCAweDc4LCAweDRELCAweEFELCAweDMwLCAweEQxLCAweDA3LCAweEVBLCAweDM4LCAweDZBLCAweEUzLCAweDNCLCAweDEwLCAweDk5LCAweDFBLAorICAgIDB4QTYsIDB4REUsIDB4MkQsIDB4OUQsIDB4MUQsIDB4Q0UsIDB4NUQsIDB4MjYsIDB4NzYsIDB4MjUsIDB4ODcsIDB4NDMsIDB4QTEsIDB4QkQsIDB4RTksIDB4QTksCisgICAgMHhCOCwgMHhBMCwgMHgxRSwgMHg4OCwgMHgxQSwgMHg2QSwgMHg5OSwgMHg3OSwgMHgwMSwgMHgzMiwgMHgzQSwgMHg0QywgMHgzQiwgMHhDMSwgMHhCNSwgMHgxOCwKKyAgICAweDcyLCAweDMyLCAweDBGLCAweDdCLCAweDkxLCAweDM4LCAweDY2LCAweDhBLCAweDE2LCAweDEyLCAweEFGLCAweEJFLCAweDVGLCAweDczLCAweEEzLCAweDBBLAorICAgIDB4MUQsIDB4OTcsIDB4MzUsIDB4ODcsIDB4NTMsIDB4MjcsIDB4QjYsIDB4NUIsIDB4NDMsIDB4MTIsIDB4QjQsIDB4RUMsIDB4RjAsIDB4MkYsIDB4MTYsIDB4NTksCisgICAgMHg2RSwgMHgxMSwgMHgyQywgMHgyMCwgMHgxMSwgMHhBQiwgMHg4NCwgMHgyQiwgMHg3RiwgMHg5QywgMHg4MiwgMHgxOSwgMHg1RCwgMHhEMywgMHg5QSwgMHgxOCwKKyAgICAweEEyLCAweEZGLCAweDM4LCAweDdBLCAweDA3LCAweEQzLCAweEJFLCAweDIzLCAweDVDLCAweDMzLCAweDAwLCAweDk5LCAweEZFLCAweEUwLCAweEZDLCAweEMwLAorICAgIDB4MzUsIDB4MDUsIDB4ODksIDB4RkYsIDB4NTgsIDB4OTMsIDB4MjAsIDB4NDEsIDB4REMsIDB4RDAsIDB4MjcsIDB4MzEsIDB4QTAsIDB4RDUsIDB4QUMsIDB4QkYsCisgICAgMHg3OCwgMHg4NywgMHgyMywgMHgzMywgMHhCRiwgMHg1MiwgMHhFMiwgMHhEQiwgMHgyNCwgMHhCOCwgMHg4MywgMHhFMSwgMHgyNiwgMHg0MiwgMHg4QywgMHgxRCwKKyAgICAweEQ0LCAweEQ0LCAweEZDLCAweEUzLCAweDM0LCAweEY0LCAweDVELCAweDk4LCAweDE3LCAweEExLCAweEM0LCAweDJBLCAweDQ4LCAweDNDLCAweDRFLCAweDg5LAorICAgIDB4N0QsIDB4MDMsIDB4MzgsIDB4RTMsIDB4MTMsIDB4NjYsIDB4RDQsIDB4NzYsIDB4QjIsIDB4OTMsIDB4RDIsIDB4OUMsIDB4NzUsIDB4M0YsIDB4RDMsIDB4OTEsCisgICAgMHgzNCwgMHhBRiwgMHg2MSwgMHg1NSwgMHgxRCwgMHhFOCwgMHg0QywgMHgyRiwgMHg1OSwgMHgyQSwgMHg2NCwgMHgwNSwgMHhCOSwgMHgxRCwgMHhDMSwgMHgwQiwKKyAgICAweDFGLCAweDRCLCAweEZGLCAweDgzLCAweEFCLCAweEJFLCAweEI3LCAweEI1LCAweEYyLCAweDIzLCAweDc4LCAweEQxLCAweEEzLCAweDgxLCAweDhGLCAweEYyLAorICAgIDB4N0MsIDB4QzYsIDB4RTcsIDB4OUYsIDB4MjksIDB4RDIsIDB4ODEsIDB4RkUsIDB4NTAsIDB4MUMsIDB4RTcsIDB4RUYsIDB4QkYsIDB4N0YsIDB4MUMsIDB4MkEsCisgICAgMHgzRiwgMHgxQSwgMHg3QywgMHg1RSwgMHhGNywgMHhGNSwgMHgxQiwgMHgxMSwgMHg4RCwgMHhCMSwgMHhGMywgMHhDNywgMHhFMywgMHgzOCwgMHg0MywgMHg1NiwKKyAgICAweDFBLCAweDFFLCAweDI2LCAweEU2LCAweEQ0LCAweDE1LCAweDg0LCAweDAzLCAweDA0LCAweDQ5LCAweEJELCAweEEwLCAweEMwLCAweDIxLCAweEM4LCAweDhFLAorICAgIDB4QzksIDB4OTYsIDB4OUIsIDB4RkEsIDB4Q0EsIDB4OTgsIDB4QUUsIDB4MkYsIDB4RTIsIDB4OUEsIDB4OUIsIDB4RUMsIDB4MjksIDB4OEYsIDB4RjIsIDB4MDQsCisgICAgMHhFQSwgMHg5NCwgMHhCOSwgMHg3MCwgMHhFRCwgMHhCMSwgMHg0RSwgMHgyQiwgMHg1QywgMHg2NSwgMHgwMCwgMHg3OSwgMHg0MSwgMHg1MywgMHg0QiwgMHg5RCwKKyAgICAweEZBLCAweDkwLCAweDIyLCAweDUyLCAweDc2LCAweDUxLCAweEVDLCAweEMyLCAweDUwLCAweENDLCAweDZDLCAweEExLCAweDVCLCAweDRBLCAweEFDLCAweDU4LAorICAgIDB4OEYsIDB4OTcsIDB4MEQsIDB4RkUsIDB4RTUsIDB4M0MsIDB4MjQsIDB4MzQsIDB4REMsIDB4RjIsIDB4N0EsIDB4ODEsIDB4QTcsIDB4OUQsIDB4M0QsIDB4MjgsCisgICAgMHg4NywgMHhDRiwgMHhGMywgMHhEMiwgMHg1MSwgMHgwRCwgMHhGMSwgMHg1QywgMHgwMSwgMHhENSwgMHg1OCwgMHg3MiwgMHgzMywgMHhENywgMHg0OCwgMHg0QSwKKyAgICAweDc1LCAweEY1LCAweDFBLCAweDEwLCAweEYxLCAweDEyLCAweDc2LCAweDcwLCAweEQyLCAweDBFLCAweDNBLCAweDlCLCAweDA5LCAweDIzLCAweDY2LCAweEVELAorICAgIDB4MTUsIDB4QjcsIDB4RUIsIDB4NUQsIDB4RUYsIDB4NjYsIDB4RUIsIDB4OEYsIDB4QUYsIDB4RDcsIDB4REMsIDB4RjYsIDB4NUUsIDB4QTUsIDB4RUQsIDB4QTgsCisgICAgMHg3NywgMHhFMiwgMHhDMCwgMHhGNiwgMHgxOSwgMHhGRSwgMHgzOCwgMHhFQywgMHgyRCwgMHhDQywgMHg4MiwgMHhDNiwgMHgyMSwgMHgyMiwgMHg2OSwgMHg2NywKKyAgICAweEU0LCAweDg2LCAweDI2LCAweDBFLCAweENDLCAweDg4LCAweDU1LCAweDZBLCAweDE3LCAweEM2LCAweEQwLCAweDVGLCAweDFDLCAweDY4LCAweDcyLCAweDA4LAorICAgIDB4MkQsIDB4OEIsIDB4QjcsIDB4RDcsIDB4QUYsIDB4ODUsIDB4MEMsIDB4QzUsIDB4OUYsIDB4NEYsIDB4NkQsIDB4MEIsIDB4MzQsIDB4QTIsIDB4OEQsIDB4NkQsCisgICAgMHg5MiwgMHgzMSwgMHg2QywgMHg5MiwgMHg5MSwgMHhGRSwgMHgzRiwgMHhDMCwgMHhBNSwgMHg0QSwgMHg1OCwgMHhBNywgMHgyMywgMHgwNiwgMHhBNywgMHhFMywKKyAgICAweEFGLCAweEM2LCAweEY1LCAweDRDLCAweDlELCAweDJBLCAweDc0LCAweDRELCAweEFBLCAweEQzLCAweEE1LCAweEQ5LCAweEI5LCAweDRELCAweERFLCAweDJGLAorICAgIDB4QTQsIDB4NjksIDB4MjQsIDB4NTYsIDB4NUYsIDB4Q0EsIDB4MEYsIDB4NDMsIDB4MUUsIDB4NTgsIDB4RDQsIDB4NzAsIDB4RDksIDB4MTEsIDB4NTMsIDB4RTcsCisgICAgMHhCNiwgMHg5RSwgMHg4RiwgMHgwNiwgMHhDQSwgMHhCRiwgMHgyMCwgMHg1OSwgMHhFOSwgMHg1MSwgMHhBRSwgMHhCQSwgMHg2OCwgMHgzMCwgMHhERSwgMHg1RSwKKyAgICAweDlDLCAweDRELCAweDBBLCAweEQxLCAweEY3LCAweEZCLCAweDFFLCAweEVGLCAweEUzLCAweDcxLCAweEZDLCAweDlFLCAweDEyLCAweDk2LCAweEVGLCAweEI3LAorICAgIDB4QzEsIDB4RDUsIDB4NDQsIDB4NDgsIDB4NUUsIDB4NDQsIDB4MzIsIDB4RUQsIDB4NTIsIDB4RkEsIDB4MTgsIDB4QTEsIDB4QUUsIDB4NkYsIDB4Q0QsIDB4REIsCisgICAgMHg4MywgMHgzOCwgMHg4RSwgMHhEMCwgMHhFQywgMHg4RSwgMHgzQSwgMHhFRiwgMHg0MywgMHgwMywgMHhGMiwgMHg2OCwgMHgxNCwgMHhFMiwgMHhEMywgMHg3RCwKKyAgICAweEY4LCAweDJFLCAweDIzLCAweEJDLCAweDU0LCAweDUyLCAweDYwLCAweEU0LCAweDg5LCAweEVELCAweDg3LCAweDc4LCAweDIxLCAweDA3LCAweEY4LCAweDI0LAorICAgIDB4MTIsIDB4MUUsIDB4OTksIDB4MjEsIDB4MzYsIDB4M0YsIDB4NkIsIDB4QjEsIDB4RTUsIDB4NjIsIDB4NDYsIDB4ODIsIDB4QzksIDB4NDQsIDB4NjcsIDB4MzMsCisgICAgMHgzRSwgMHgzOCwgMHg2MiwgMHgwMiwgMHhBMCwgMHg0OCwgMHgxQiwgMHhENywgMHhCRCwgMHgyMSwgMHhBQiwgMHgyRSwgMHg2MiwgMHg5RSwgMHgzNSwgMHg4RSwKKyAgICAweDNFLCAweERBLCAweDJELCAweEE0LCAweERDLCAweDdFLCAweDQzLCAweDU3LCAweDQ1LCAweDEzLCAweEQ0LCAweDYyLCAweDQ1LCAweEFCLCAweDk1LCAweDU3LAorICAgIDB4NEMsIDB4NTYsIDB4NEMsIDB4QUQsIDB4NUYsIDB4QkYsIDB4QTAsIDB4MjQsIDB4MjMsIDB4NTMsIDB4NzEsIDB4RTUsIDB4QTEsIDB4NUMsIDB4NkMsIDB4RDMsCisgICAgMHhGRCwgMHhFNiwgMHg0MywgMHhGRCwgMHgyOCwgMHg4NiwgMHhBNiwgMHg2MywgMHhBNywgMHg3MywgMHgzNSwgMHhGMCwgMHhGRCwgMHhGRiwgMHhDNywgMHg3QiwKKyAgICAweDE2LCAweDM4LCAweDczLCAweDlDLCAweEZDLCAweDY1LCAweDUwLCAweDk0LCAweDJELCAweDU3LCAweEU1LCAweERELCAweDhDLCAweDNCLCAweDY4LCAweDgxLAorICAgIDB4RUEsIDB4OTAsIDB4QTUsIDB4M0YsIDB4QzIsIDB4MkYsIDB4OUMsIDB4RDYsIDB4OUYsIDB4QkEsIDB4MDEsIDB4RDcsIDB4OEUsIDB4QTEsIDB4NzEsIDB4RTIsCisgICAgMHhBNSwgMHgyQSwgMHg2QSwgMHhBNSwgMHhGQSwgMHhFMSwgMHg2RiwgMHg0NCwgMHgxMywgMHg1NiwgMHgxNiwgMHgzQSwgMHgxQSwgMHhCQSwgMHhCRSwgMHg1RCwKKyAgICAweEE2LCAweEZBLCAweDczLCAweEVCLCAweDA1LCAweEUwLCAweDg4LCAweDhBLCAweEVCLCAweDVBLCAweDUwLCAweEY1LCAweEZDLCAweDg2LCAweEEyLCAweDM1LAorICAgIDB4NDEsIDB4MDMsIDB4NzIsIDB4OTIsIDB4NEEsIDB4OEYsIDB4NzMsIDB4RjAsIDB4MDUsIDB4MkEsIDB4QTQsIDB4OEMsIDB4NUMsIDB4NDYsIDB4RUIsIDB4RTksCisgICAgMHhFMywgMHgzQywgMHg2RiwgMHhCMiwgMHgyMywgMHg2QiwgMHhBMCwgMHg3NywgMHhFRCwgMHhBOSwgMHg5NSwgMHg1QywgMHg1MCwgMHhBMywgMHgwMSwgMHhCMCwKKyAgICAweDhELCAweEU5LCAweDVCLCAweDVDLCAweDBCLCAweDkxLCAweEY1LCAweDMyLCAweDlELCAweDUyLCAweEExLCAweDQ1LCAweDIxLCAweDQ1LCAweDRBLCAweEVBLAorICAgIDB4NDIsIDB4OEEsIDB4N0EsIDB4OTEsIDB4QTAsIDB4MzQsIDB4OTUsIDB4ODUsIDB4RUMsIDB4ODQsIDB4MjEsIDB4RUIsIDB4OUUsIDB4NkMsIDB4QzgsIDB4RTUsCisgICAgMHg1QywgMHg1RiwgMHhBRiwgMHgwQywgMHhDOCwgMHgxNywgMHhDOCwgMHg4NywgMHgzQywgMHgxMCwgMHhEMiwgMHgyMCwgMHgwMywgMHgwOCwgMHhEMywgMHgzRSwKKyAgICAweEM2LCAweDcwLCAweDMzLCAweEZFLCAweDlFLCAweDExLCAweDg1LCAweERDLCAweEIyLCAweEQ2LCAweEVBLCAweDgzLCAweEQyLCAweEUyLCAweDQxLCAweDFFLAorICAgIDB4NzAsIDB4MEUsIDB4RUQsIDB4RTUsIDB4NjQsIDB4QkMsIDB4ODMsIDB4NkYsIDB4MUYsIDB4RUYsIDB4QzQsIDB4RkUsIDB4MjAsIDB4OTksIDB4ODcsIDB4RjYsCisgICAgMHg3NiwgMHg3NiwgMHg0QiwgMHhDMiwgMHhFRiwgMHg5QywgMHhBOSwgMHhFRCwgMHgzMywgMHhGOCwgMHg2QSwgMHg2NCwgMHg4MywgMHg3NiwgMHhBRSwgMHg1RCwKKyAgICAweDQ4LCAweEFBLCAweDA4LCAweDY0LCAweDk1LCAweEI4LCAweDhGLCAweDMzLCAweEIzLCAweDg4LCAweDA3LCAweDU1LCAweERCLCAweDZDLCAweEE1LCAweDFFLAorICAgIDB4M0IsIDB4Q0EsIDB4NzYsIDB4REMsIDB4MEQsIDB4ODUsIDB4MDIsIDB4QTIsIDB4RUMsIDB4QjUsIDB4MEYsIDB4QzQsIDB4NTIsIDB4MTEsIDB4NTcsIDB4RjUsCisgICAgMHgyRCwgMHg4RCwgMHhGQiwgMHgzQywgMHg0OSwgMHhDNywgMHg1OSwgMHg2OCwgMHgzQSwgMHg2MiwgMHhDOSwgMHgyOCwgMHhDRCwgMHg4MSwgMHg5OCwgMHgxMCwKKyAgICAweEIwLCAweDcxLCAweDNCLCAweDk2LCAweEI5LCAweEMyLCAweDE2LCAweDE0LCAweDg4LCAweENDLCAweDU2LCAweDFBLCAweEQyLCAweDc4LCAweEJDLCAweDUzLAorICAgIDB4NEEsIDB4QTgsIDB4MjcsIDB4REUsIDB4OEEsIDB4NUIsIDB4RUYsIDB4NTgsIDB4OTcsIDB4OTUsIDB4MDIsIDB4RjMsIDB4NzYsIDB4QzEsIDB4QTIsIDB4MDEsCisgICAgMHhCOCwgMHhEMiwgMHhCOCwgMHhBQywgMHhDNSwgMHhCMywgMHgzNiwgMHgzMywgMHg3QywgMHgxQSwgMHhDQSwgMHgwNiwgMHg0QywgMHgwOSwgMHhCQywgMHgzQywKKyAgICAweDBCLCAweDBBLCAweEQ4LCAweEFDLCAweDc0LCAweDI1LCAweEE0LCAweDkxLCAweERCLCAweDEzLCAweEU1LCAweDJCLCAweDA5LCAweEM3LCAweDNELCAweDk5LAorICAgIDB4RkIsIDB4NEYsIDB4RkYsIDB4QjQsIDB4OUMsIDB4OUUsIDB4ODksIDB4RjgsIDB4RDMsIDB4QUMsIDB4Q0YsIDB4MzcsIDB4RUEsIDB4M0YsIDB4QUMsIDB4M0UsCisgICAgMHg4RiwgMHg3RSwgMHhGRCwgMHg2NiwgMHg5NywgMHhGMSwgMHg4QSwgMHg5NCwgMHhFMCwgMHgzNiwgMHgyQSwgMHg0OCwgMHgxQywgMHhBOSwgMHg1QiwgMHgxRSwKKyAgICAweDRELCAweENDLCAweEIwLCAweEY2LCAweEE2LCAweDI2LCAweDJFLCAweDZELCAweDI5LCAweDZFLCAweDg5LCAweDMwLCAweDZDLCAweDJCLCAweEEzLCAweDA0LAorICAgIDB4RDQsIDB4OEYsIDB4OEMsIDB4Q0IsIDB4QTcsIDB4QTIsIDB4MDUsIDB4OTQsIDB4OTMsIDB4RTksIDB4OUIsIDB4MDMsIDB4MTgsIDB4OTEsIDB4NzYsIDB4MjUsCisgICAgMHg0MiwgMHhGNiwgMHhDMSwgMHhFMSwgMHhFOCwgMHg2QiwgMHg1NiwgMHhFRiwgMHg2MSwgMHhFRCwgMHhEQiwgMHhGNywgMHhENiwgMHhEMywgMHg1MCwgMHhCMSwKKyAgICAweDU5LCAweEFFLCAweDc5LCAweDIyLCAweEVCLCAweENDLCAweDM5LCAweDNFLCAweDEwLCAweEQ3LCAweDIxLCAweDA0LCAweDdELCAweEVGLCAweDk2LCAweDczLAorICAgIDB4QkMsIDB4NkMsIDB4RTUsIDB4MEQsIDB4MTUsIDB4OEEsIDB4OTQsIDB4MDcsIDB4MTQsIDB4OTYsIDB4ODYsIDB4MzEsIDB4NjgsIDB4RDYsIDB4QzAsIDB4RTcsCisgICAgMHhFNSwgMHhFRSwgMHg2QywgMHg3NywgMHhCRCwgMHg5RSwgMHhEOSwgMHgyNywgMHhFNywgMHg2OCwgMHgxRSwgMHg1NywgMHgxQSwgMHgwRCwgMHgwMSwgMHhERCwKKyAgICAweDNCLCAweEFGLCAweDg1LCAweDVBLCAweEEzLCAweDQ5LCAweDRBLCAweENCLCAweDFELCAweDJFLCAweEM0LCAweEZFLCAweDM5LCAweDUwLCAweDM2LCAweDVDLAorICAgIDB4RjgsIDB4RTQsIDB4QzQsIDB4MEQsIDB4NkEsIDB4ODQsIDB4Q0MsIDB4QzEsIDB4NUMsIDB4RjEsIDB4NzIsIDB4MzQsIDB4MUIsIDB4QUUsIDB4OEUsIDB4RkIsCisgICAgMHg0NSwgMHgyMywgMHhCRSwgMHhDNSwgMHg0QiwgMHhBRSwgMHhDMiwgMHhDOSwgMHg3NCwgMHhGNSwgMHg4MywgMHg4NCwgMHgyNiwgMHg3QSwgMHhGQSwgMHg4RCwKKyAgICAweEZGLCAweDM0LCAweDY4LCAweERFLCAweDM5LCAweEIzLCAweERCLCAweDE1LCAweERCLCAweDEzLCAweEMyLCAweDU5LCAweERFLCAweDVGLCAweDc4LCAweEQyLAorICAgIDB4MDQsIDB4MUQsIDB4M0EsIDB4NDUsIDB4N0IsIDB4Q0QsIDB4QjUsIDB4QzQsIDB4NTEsIDB4Q0YsIDB4OEYsIDB4QUQsIDB4MkUsIDB4NjEsIDB4MjMsIDB4RUMsCisgICAgMHg2NiwgMHgzNywgMHgyRCwgMHg0QSwgMHhCMywgMHhENCwgMHhDQSwgMHg4QywgMHgzNywgMHgzRiwgMHhBRSwgMHgxNSwgMHgzRiwgMHhCRSwgMHhFNywgMHg1RSwKKyAgICAweDJELCAweEFELCAweDk1LCAweDMwLCAweEZCLCAweDM1LCAweDQyLCAweEM5LCAweEZCLCAweEYxLCAweDVBLCAweEQwLCAweDIwLCAweDNBLCAweDA2LCAweEY1LAorICAgIDB4MUQsIDB4MkQsIDB4REIsIDB4QUMsIDB4NEMsIDB4RUIsIDB4MDIsIDB4RjAsIDB4MTEsIDB4NEQsIDB4QzksIDB4MjQsIDB4NDYsIDB4NUUsIDB4MUEsIDB4QUEsCisgICAgMHgyNCwgMHhFOCwgMHgwQiwgMHhBQywgMHg4MywgMHhBRCwgMHgxMiwgMHg5RCwgMHhEMSwgMHg3OSwgMHhCQywgMHhFMCwgMHhGNywgMHg1NiwgMHgyMSwgMHg5MCwKKyAgICAweDcxLCAweDdELCAweDZELCAweDM2LCAweDU5LCAweEMzLCAweEY4LCAweDRDLCAweDYwLCAweEJGLCAweDBCLCAweEY0LCAweDI5LCAweDYwLCAweDY1LCAweEYzLAorICAgIDB4QzcsIDB4NDgsIDB4QUMsIDB4OEYsIDB4N0MsIDB4NUQsIDB4NEIsIDB4RjgsIDB4NzUsIDB4NUUsIDB4OTQsIDB4OTcsIDB4MUMsIDB4MDIsIDB4NzAsIDB4RUQsCisgICAgMHhBMywgMHhDNCwgMHgyMiwgMHhCNiwgMHgxMCwgMHhGQSwgMHg3NCwgMHgwMCwgMHg4QywgMHg3MywgMHg2QywgMHhDNywgMHhCMiwgMHhGQSwgMHg2RSwgMHgwRiwKKyAgICAweDQyLCAweDhCLCAweEY1LCAweEI3LCAweEYwLCAweEU5LCAweDI5LCAweEU4LCAweDQ4LCAweEIzLCAweDFDLCAweEQyLCAweEFCLCAweEExLCAweEE1LCAweDhCLAorICAgIDB4MUMsIDB4NDMsIDB4NDQsIDB4RUYsIDB4RTksIDB4OTUsIDB4QzgsIDB4QTYsIDB4RTksIDB4NDgsIDB4OEMsIDB4NzMsIDB4RkEsIDB4NkMsIDB4OUMsIDB4QzQsCisgICAgMHhBRSwgMHgyQiwgMHhCMywgMHhDOSwgMHgxMSwgMHgwNiwgMHgyMCwgMHhBOSwgMHgwMCwgMHhGQiwgMHg1MCwgMHgxRCwgMHg3MywgMHg2OCwgMHhENSwgMHhDMCwKKyAgICAweDRELCAweDM4LCAweDRDLCAweEFBLCAweDkzLCAweEMwLCAweDI0LCAweDI1LCAweEUwLCAweDU1LCAweDBDLCAweDZGLCAweEU4LCAweEEyLCAweDY2LCAweDNDLAorICAgIDB4RTAsIDB4NUUsIDB4NUMsIDB4MkYsIDB4QkMsIDB4MjcsIDB4NjYsIDB4OTksIDB4MEUsIDB4RjYsIDB4RkUsIDB4Q0YsIDB4MTQsIDB4MTksIDB4MEUsIDB4OUQsCisgICAgMHg3NSwgMHhDRiwgMHhFOSwgMHgyOSwgMHhDMSwgMHg3NywgMHgyNiwgMHhGNSwgMHg3OCwgMHhBNSwgMHg0RSwgMHg3RCwgMHg3RiwgMHgzRiwgMHgzMywgMHgxMSwKKyAgICAweDVGLCAweDI2LCAweENELCAweENCLCAweDVCLCAweDQ3LCAweEQ0LCAweDM3LCAweDRDLCAweEJBLCAweDM4LCAweDU5LCAweDIzLCAweDgwLCAweDg0LCAweEVGLAorICAgIDB4M0MsIDB4Q0MsIDB4RDYsIDB4QTksIDB4NzEsIDB4QTMsIDB4RkUsIDB4NUIsIDB4RDUsIDB4M0IsIDB4MjEsIDB4NTIsIDB4QzIsIDB4RDYsIDB4MUIsIDB4NzEsCisgICAgMHgzQiwgMHgwNiwgMHg1NSwgMHg1QywgMHgxQiwgMHg3NywgMHhBQiwgMHg4MCwgMHgwQiwgMHgxNywgMHhDQiwgMHgxNCwgMHg3MiwgMHg4NywgMHhGQiwgMHg4MSwKKyAgICAweEQ0LCAweEZCLCAweEI3LCAweEQwLCAweDg0LCAweDY1LCAweDlCLCAweDZGLCAweDJCLCAweEQ1LCAweDdBLCAweDEyLCAweEE4LCAweDJBLCAweEJFLCAweEE1LAorICAgIDB4RTcsIDB4RTIsIDB4OEYsIDB4MDUsIDB4MUEsIDB4NTQsIDB4MTAsIDB4QUEsIDB4NzIsIDB4MzQsIDB4RjYsIDB4RTksIDB4MDgsIDB4NkIsIDB4QjQsIDB4RkMsCisgICAgMHg2OSwgMHhBRiwgMHgyNiwgMHg1RiwgMHhDNSwgMHg3MiwgMHg2MSwgMHg5NiwgMHgzQSwgMHhENiwgMHhFNCwgMHg1QiwgMHhCQSwgMHhDQiwgMHgwQywgMHhEMSwKKyAgICAweEFFLCAweEY4LCAweDE5LCAweEZBLCAweEI2LCAweENGLCAweDBDLCAweENDLCAweEZDLCAweENELCAweDgyLCAweDE1LCAweEFDLCAweDM2LCAweDA0LCAweDgwLAorICAgIDB4NzUsIDB4M0QsIDB4OEQsIDB4RjksIDB4MzYsIDB4NTcsIDB4NEYsIDB4N0MsIDB4NTUsIDB4NjAsIDB4RTAsIDB4MkYsIDB4QjQsIDB4ODksIDB4OUUsIDB4NzcsCisgICAgMHhFRCwgMHhDQiwgMHgxOSwgMHg5NiwgMHhCNCwgMHhDMCwgMHg1RSwgMHhCRSwgMHg0RSwgMHhFRiwgMHhCOSwgMHhBNywgMHhDQiwgMHg5MiwgMHg2OCwgMHg3NCwKKyAgICAweEYwLCAweDlBLCAweDM4LCAweEUxLCAweDE1LCAweDY3LCAweDY0LCAweEUwLCAweDcwLCAweDA4LCAweDM2LCAweEVELCAweEM0LCAweDQ3LCAweDExLCAweEQ2LAorICAgIDB4NzksIDB4NUUsIDB4MTIsIDB4NEEsIDB4NTAsIDB4RDgsIDB4RkUsIDB4N0QsIDB4MDksIDB4NjcsIDB4MTEsIDB4NTMsIDB4MkIsIDB4MkUsIDB4NkYsIDB4NUIsCisgICAgMHg5MSwgMHhGNSwgMHgxQSwgMHhBQSwgMHgwQywgMHgwQywgMHg1MCwgMHg0NSwgMHgwQiwgMHg5NCwgMHgwMSwgMHgxNiwgMHhCNywgMHg4MywgMHg5QSwgMHhGNiwKKyAgICAweENDLCAweDQ1LCAweDc5LCAweDdDLCAweEQwLCAweDlDLCAweEZELCAweDY2LCAweEIxLCAweEJELCAweENGLCAweDcwLCAweEJDLCAweDc3LCAweEY0LCAweEEyLAorICAgIDB4RUUsIDB4NkYsIDB4MTMsIDB4MjgsIDB4NDgsIDB4MzksIDB4ODEsIDB4Q0IsIDB4ODAsIDB4NTIsIDB4RUQsIDB4NDksIDB4RUUsIDB4NTQsIDB4RkQsIDB4NTksCisgICAgMHgyNywgMHg1MSwgMHg2OCwgMHg4RSwgMHhGQSwgMHg0NiwgMHg4OSwgMHg5QSwgMHhDRiwgMHg0OCwgMHg0NSwgMHg5RiwgMHhBNSwgMHg2RiwgMHgxNiwgMHg2QywKKyAgICAweDNDLCAweDM2LCAweDQxLCAweEY3LCAweDA2LCAweEFBLCAweDNBLCAweDdELCAweEZGLCAweDRFLCAweDM3LCAweEU2LCAweDdELCAweDgzLCAweDlGLCAweERFLAorICAgIDB4NkUsIDB4QkMsIDB4N0MsIDB4OTUsIDB4RUYsIDB4OTMsIDB4ODIsIDB4NDIsIDB4NDMsIDB4QUEsIDB4QzIsIDB4ODUsIDB4QkEsIDB4N0UsIDB4OUMsIDB4QjYsCisgICAgMHhENCwgMHhFMSwgMHgxMSwgMHhCMiwgMHg0NCwgMHhEQywgMHhGRiwgMHhDNywgMHg1QywgMHg5MiwgMHhDRSwgMHhDMCwgMHhCQywgMHhBNywgMHhCMiwgMHg0MSwKKyAgICAweDc1LCAweDA1LCAweDRGLCAweDAwLCAweEI5LCAweDIzLCAweEYyLCAweENBLCAweEU5LCAweDY1LCAweDIzLCAweDI0LCAweDQ5LCAweEE0LCAweDE1LCAweDhFLAorICAgIDB4MTAsIDB4QjEsIDB4QzEsIDB4MkYsIDB4Q0EsIDB4QjQsIDB4QUYsIDB4ODYsIDB4RjcsIDB4ODAsIDB4M0QsIDB4RjIsIDB4QzEsIDB4NUEsIDB4NDIsIDB4MkYsCisgICAgMHhDNywgMHgzOSwgMHhGRCwgMHgwNiwgMHg3NCwgMHhFRiwgMHgxNSwgMHhFQiwgMHhFMCwgMHgyNCwgMHg4RiwgMHg3QiwgMHhFRSwgMHhFMCwgMHhFNCwgMHgxRCwKKyAgICAweDVGLCAweDJBLCAweDg4LCAweERDLCAweDlFLCAweEI1LCAweEE5LCAweDlGLCAweERFLCAweDczLCAweDJDLCAweDdBLCAweEYzLCAweDlCLCAweDMyLCAweEYzLAorICAgIDB4RjQsIDB4NUYsIDB4M0MsIDB4NUUsIDB4QkUsIDB4QkEsIDB4QTAsIDB4RUEsIDB4QjYsIDB4MEIsIDB4MDAsIDB4MTAsIDB4RTUsIDB4QkEsIDB4NkMsIDB4NjIsCisgICAgMHgyNiwgMHgyNywgMHg2MiwgMHgzQiwgMHg0OCwgMHg1QywgMHg2MCwgMHhFRSwgMHhFQiwgMHhGQSwgMHhFRSwgMHhCMSwgMHg2QywgMHgwQSwgMHg0NiwgMHhGMywKKyAgICAweDFFLCAweEVELCAweEEzLCAweDFCLCAweEYzLCAweDYwLCAweDAyLCAweEYzLCAweDYwLCAweDZBLCAweDFBLCAweDhBLCAweDMzLCAweDcwLCAweDEzLCAweDdDLAorICAgIDB4NUYsIDB4QzYsIDB4RUYsIDB4OEEsIDB4MTUsIDB4Q0IsIDB4QzEsIDB4NDQsIDB4REQsIDB4RUYsIDB4NzMsIDB4OUQsIDB4MDEsIDB4NzAsIDB4QUYsIDB4QUEsCisgICAgMHg2MCwgMHgzNCwgMHhCNCwgMHgyRCwgMHg0QiwgMHhBMSwgMHhCQiwgMHg1QiwgMHhGMiwgMHg1NCwgMHgwRiwgMHgxMCwgMHhERCwgMHhBNCwgMHhCQiwgMHhBNCwKKyAgICAweEU1LCAweEM0LCAweDNELCAweEFFLCAweEVGLCAweDcwLCAweEY5LCAweEVELCAweDlBLCAweDYwLCAweDJFLCAweDIyLCAweEFCLCAweEY1LCAweEE4LCAweDhBLAorICAgIDB4RUEsIDB4NjIsIDB4MDUsIDB4MkEsIDB4MzIsIDB4MzEsIDB4MjksIDB4REUsIDB4NEMsIDB4OEUsIDB4OEMsIDB4NkMsIDB4NEIsIDB4NzAsIDB4QjAsIDB4OUMsCisgICAgMHgwQSwgMHg5NSwgMHg1MiwgMHhDNiwgMHg5MCwgMHgwRCwgMHgyQSwgMHhBQSwgMHhBQywgMHgwNywgMHg1NCwgMHhDRSwgMHhGRSwgMHhGNiwgMHg5NSwgMHhCQiwKKyAgICAweENELCAweEYzLCAweEU0LCAweDY5LCAweEM3LCAweDQ0LCAweDc1LCAweDYzLCAweDcyLCAweDg0LCAweDBFLCAweEQ1LCAweDEzLCAweEU0LCAweEZBLCAweDQ4LAorICAgIDB4QzEsIDB4NDIsIDB4RDUsIDB4NUYsIDB4NkIsIDB4ODgsIDB4M0QsIDB4OEUsIDB4MDksIDB4NjcsIDB4NDIsIDB4NjEsIDB4NjksIDB4NzIsIDB4RUUsIDB4RTMsCisgICAgMHhERiwgMHgzNywgMHg3NSwgMHgzMCwgMHhDRSwgMHg5RCwgMHhFMywgMHgwQywgMHhGOSwgMHgxNiwgMHgwQywgMHhEMiwgMHg2RiwgMHgzQywgMHg2OSwgMHg4RCwKKyAgICAweDhGLCAweDFELCAweDc4LCAweDFDLCAweDhCLCAweDNBLCAweDZDLCAweERGLCAweDI4LCAweDVFLCAweDc2LCAweDc5LCAweDg5LCAweDc1LCAweDgyLCAweEI3LAorICAgIDB4NDYsIDB4OTcsIDB4QjMsIDB4RjIsIDB4NjAsIDB4OTgsIDB4OTYsIDB4NUUsIDB4NUMsIDB4MjQsIDB4MzUsIDB4QTcsIDB4MEIsIDB4QTcsIDB4QjYsIDB4OTYsCisgICAgMHg4MCwgMHhEMywgMHg5QywgMHgzOCwgMHhFMiwgMHhGMywgMHg5QiwgMHg3NiwgMHg4NiwgMHg2OCwgMHhDOSwgMHhBNCwgMHgwOCwgMHg0NiwgMHg4RCwgMHgxRCwKKyAgICAweDVDLCAweEY3LCAweDY4LCAweDYyLCAweEJDLCAweDZCLCAweDdCLCAweDFDLCAweEU1LCAweDcyLCAweDk0LCAweDRBLCAweEFGLCAweDJDLCAweDc0LCAweDRELAorICAgIDB4OUEsIDB4MDUsIDB4OTAsIDB4QTYsIDB4RDksIDB4MkMsIDB4REYsIDB4MjAsIDB4MkEsIDB4RTksIDB4MEQsIDB4OEIsIDB4REQsIDB4RDksIDB4OTcsIDB4MUQsCisgICAgMHgzMCwgMHg4QiwgMHhDMCwgMHgyMywgMHhDRCwgMHgxRSwgMHhGNCwgMHgzQywgMHgwNiwgMHhBMiwgMHhEQywgMHhFOSwgMHgxMywgMHhEQSwgMHhDNywgMHg4MiwKKyAgICAweEMwLCAweDVGLCAweDA4LCAweDEyLCAweDdDLCAweEVFLCAweDdBLCAweDNELCAweDk1LCAweEU5LCAweENCLCAweEEyLCAweEJDLCAweEEwLCAweDU1LCAweDE4LAorICAgIDB4NDksIDB4ODMsIDB4ODYsIDB4NjIsIDB4Q0YsIDB4OEYsIDB4QTYsIDB4RjEsIDB4MTQsIDB4QUEsIDB4MEEsIDB4NUEsIDB4RTEsIDB4OTYsIDB4RjcsIDB4MTMsCisgICAgMHgwQywgMHhDMSwgMHgwOSwgMHhGRCwgMHhCRiwgMHg4NCwgMHhFRSwgMHg2RCwgMHgwQSwgMHgzNCwgMHg3MywgMHg4OCwgMHhEOCwgMHg1NCwgMHg2MSwgMHg5QSwKKyAgICAweDFGLCAweDJCLCAweDM0LCAweDM2LCAweDQ0LCAweDM0LCAweDQxLCAweDdGLCAweDA5LCAweDhGLCAweDA4LCAweDA4LCAweDQwLCAweEExLCAweDcwLCAweDI0LAorICAgIDB4MzAsIDB4MjMsIDB4MDIsIDB4MkQsIDB4NzYsIDB4MzksIDB4QzAsIDB4Q0EsIDB4RjEsIDB4QUMsIDB4QTIsIDB4RkEsIDB4MDksIDB4MDcsIDB4RTAsIDB4NUQsCisgICAgMHhFMiwgMHg0NCwgMHgwQywgMHgyQywgMHhBQiwgMHg3NywgMHg0QywgMHhFNywgMHg3RSwgMHhGQSwgMHhBQiwgMHhGMywgMHg0MywgMHhBRiwgMHg2RiwgMHg1RCwKKyAgICAweEMxLCAweEUzLCAweDgxLCAweDI4LCAweDlBLCAweDQ3LCAweEQ0LCAweEU1LCAweDRCLCAweDA0LCAweDBBLCAweDQ3LCAweEZELCAweEY2LCAweDMxLCAweDZELAorICAgIDB4NTQsIDB4QUQsIDB4M0IsIDB4MTksIDB4RjcsIDB4MjgsIDB4MUQsIDB4NDIsIDB4N0MsIDB4M0EsIDB4NEMsIDB4Q0MsIDB4QjMsIDB4NjYsIDB4RTIsIDB4OUYsCisgICAgMHg4QywgMHgxOCwgMHgwRiwgMHg3NywgMHhDNCwgMHhBMywgMHhGNCwgMHgyMiwgMHg3NSwgMHg4MywgMHg2NSwgMHhGQiwgMHg0RiwgMHgwMiwgMHg3MSwgMHhFNiwKKyAgICAweDRBLCAweDJELCAweDJGLCAweEUyLCAweDQ2LCAweEI0LCAweDBDLCAweDM5LCAweDI5LCAweEFCLCAweEM3LCAweDNFLCAweDM4LCAweEMzLCAweDBCLCAweEE1LAorICAgIDB4RTgsIDB4QjUsIDB4RTYsIDB4MEUsIDB4RUMsIDB4NzcsIDB4N0MsIDB4RDAsIDB4QkYsIDB4MkYsIDB4QjEsIDB4MjcsIDB4NEYsIDB4NTYsIDB4NzMsIDB4Q0EsCisgICAgMHg3MCwgMHhBNSwgMHgzNSwgMHg3MSwgMHg0QSwgMHg0MiwgMHhBNSwgMHgzNywgMHgwQSwgMHhBNywgMHhBRCwgMHgyNywgMHgxOCwgMHgwMiwgMHg4QywgMHg0QiwKKyAgICAweDNBLCAweEIxLCAweDZELCAweDE3LCAweEMxLCAweDgxLCAweDc2LCAweDcwLCAweDhELCAweEFDLCAweEFELCAweDRBLCAweERELCAweDNELCAweDI3LCAweDE4LAorICAgIDB4NjYsIDB4NjMsIDB4M0EsIDB4MEQsIDB4RkMsIDB4QTIsIDB4OUYsIDB4QzUsIDB4MkUsIDB4MjksIDB4RDksIDB4QTUsIDB4MEMsIDB4NEMsIDB4QTMsIDB4NkYsCisgICAgMHhBOSwgMHgzRiwgMHhGRiwgMHhCNSwgMHg4MywgMHg2QiwgMHgwMCwgMHg5MywgMHg1NywgMHgzOSwgMHgyNiwgMHg2RCwgMHg0MCwgMHg4MSwgMHg4OSwgMHg0QSwKKyAgICAweEFFLCAweDU1LCAweDA2LCAweDU4LCAweDc1LCAweDZGLCAweDQ5LCAweEMyLCAweEZGLCAweEEwLCAweDkyLCAweDdCLCAweEI2LCAweDYwLCAweDgwLCAweDcyLAorICAgIDB4NTIsIDB4RTUsIDB4OEQsIDB4MzMsIDB4QzAsIDB4QjYsIDB4M0YsIDB4RjIsIDB4MkEsIDB4ODEsIDB4MTEsIDB4OEYsIDB4RjUsIDB4QTIsIDB4OTgsIDB4ODQsCisgICAgMHg1OSwgMHg3QywgMHhBOCwgMHhENSwgMHg5QywgMHhERSwgMHg2OSwgMHg0QywgMHg2NywgMHhEOSwgMHhGQiwgMHhCQywgMHg2OCwgMHgyOSwgMHg5MiwgMHgyNSwKKyAgICAweDdELCAweEZELCAweDAxLCAweDhELCAweDYwLCAweEJDLCAweEFFLCAweDM0LCAweDAwLCAweDc3LCAweDA2LCAweDk5LCAweEQyLCAweDlCLCAweEZELCAweDY5LAorICAgIDB4RDUsIDB4NTYsIDB4MDAsIDB4QjAsIDB4NzYsIDB4NzEsIDB4MzgsIDB4Q0UsIDB4QkUsIDB4QUUsIDB4QTIsIDB4QTQsIDB4OEMsIDB4QTQsIDB4RTYsIDB4NzgsCisgICAgMHg5RSwgMHg5NiwgMHgyRiwgMHg5MiwgMHhGMywgMHgxMywgMHgyMiwgMHg1MCwgMHhFOSwgMHgwRiwgMHhCMiwgMHgwRiwgMHgzMSwgMHg0RSwgMHhDNywgMHgyRSwKKyAgICAweEYwLCAweDcwLCAweDIxLCAweDMzLCAweDQxLCAweENBLCAweEZBLCAweEYwLCAweDRELCAweEY4LCAweENELCAweDFFLCAweDQxLCAweDQyLCAweEVELCAweEFBLAorICAgIDB4QTAsIDB4NDksIDB4MzAsIDB4MkQsIDB4QkEsIDB4MUUsIDB4MTEsIDB4MDksIDB4MTQsIDB4MEUsIDB4MzksIDB4MzIsIDB4MzIsIDB4MjIsIDB4NDgsIDB4OTMsCisgICAgMHhDRiwgMHgxQSwgMHhGOCwgMHhDMSwgMHg5MSwgMHg2QSwgMHgwQiwgMHhDQywgMHg3NiwgMHg5OCwgMHhEMSwgMHgyQiwgMHg5QSwgMHg0MCwgMHhCRiwgMHgxMiwKKyAgICAweEQ2LCAweEZGLCAweDIwLCAweDdFLCAweDU0LCAweEI4LCAweDRFLCAweDY1LCAweEVCLCAweEIzLCAweDQ2LCAweEQxLCAweDQ0LCAweDZBLCAweDgwLCAweDE5LAorICAgIDB4NzIsIDB4RkQsIDB4MzksIDB4MTEsIDB4RDcsIDB4N0EsIDB4N0MsIDB4MDMsIDB4N0QsIDB4NzYsIDB4RTAsIDB4QjIsIDB4MzAsIDB4MDIsIDB4QUEsIDB4RUMsCisgICAgMHgyOSwgMHhBNywgMHg5MCwgMHgwOCwgMHhDOCwgMHgxNiwgMHgxMiwgMHhBMCwgMHgzMCwgMHgyQywgMHhBMSwgMHg0RSwgMHhDMSwgMHg3QywgMHg1RiwgMHhCNywKKyAgICAweDVBLCAweDE3LCAweEY3LCAweEE3LCAweEZDLCAweEZBLCAweENCLCAweDVELCAweEMyLCAweERDLCAweDJDLCAweDg2LCAweEY3LCAweENELCAweDJBLCAweDBBLAorICAgIDB4QTcsIDB4MjIsIDB4NDcsIDB4NDgsIDB4QzIsIDB4NzUsIDB4MUUsIDB4MjQsIDB4QzYsIDB4MjYsIDB4OTgsIDB4ODQsIDB4MTUsIDB4QUQsIDB4QjksIDB4QkEsCisgICAgMHhDOSwgMHhBRiwgMHg3RCwgMHhBMiwgMHg1RCwgMHhERCwgMHg4RSwgMHhFMCwgMHhFRSwgMHhFRiwgMHg3NCwgMHhDRSwgMHgzRiwgMHhCQywgMHhGQywgMHhBMCwKKyAgICAweDI2LCAweDA5LCAweDE1LCAweDMwLCAweEVDLCAweDNCLCAweEJCLCAweDBBLCAweEM0LCAweDQzLCAweDlGLCAweDI3LCAweDkwLCAweDFGLCAweENDLCAweDJELAorICAgIDB4OEIsIDB4N0YsIDB4REEsIDB4NTEsIDB4Q0IsIDB4RjcsIDB4MjcsIDB4QUMsIDB4RTUsIDB4RDcsIDB4N0QsIDB4QUEsIDB4QjAsIDB4RDksIDB4N0MsIDB4QkYsCisgICAgMHgxNywgMHhEMCwgMHg0MiwgMHg1NywgMHhDMCwgMHhGOSwgMHhFMywgMHhGMCwgMHgwRSwgMHg3QiwgMHg1RiwgMHhFNCwgMHg0QiwgMHhBMCwgMHhDMSwgMHhFRSwKKyAgICAweEYxLCAweEYyLCAweEVCLCAweDMzLCAweERBLCAweDI1LCAweEZCLCAweDA4LCAweEFFLCAweDZGLCAweDRCLCAweEZCLCAweDVFLCAweDk4LCAweDkxLCAweEQ3LAorICAgIDB4OTEsIDB4OUEsIDB4NjIsIDB4NzYsIDB4QzYsIDB4NTEsIDB4QUEsIDB4NjQsIDB4NkEsIDB4RjIsIDB4Q0QsIDB4QUQsIDB4MjQsIDB4NDIsIDB4ODcsIDB4MDUsCisgICAgMHhEMywgMHgzOSwgMHhFMSwgMHhDNSwgMHhBOCwgMHgzMCwgMHg3OSwgMHhEOCwgMHhDMCwgMHgwMywgMHg0MiwgMHg4NCwgMHg1QSwgMHg3NSwgMHhCNCwgMHg4QywKKyAgICAweDBELCAweEUzLCAweEI0LCAweENCLCAweDAwLCAweEZELCAweDUxLCAweERDLCAweEUxLCAweEE4LCAweERFLCAweEU3LCAweDMzLCAweDZELCAweDc0LCAweDYyLAorICAgIDB4MkEsIDB4QUUsIDB4OTksIDB4NzksIDB4OUUsIDB4RkMsIDB4MEUsIDB4MTksIDB4MzUsIDB4REQsIDB4QTEsIDB4NzUsIDB4RTQsIDB4MkIsIDB4MEMsIDB4QzUsCisgICAgMHgzNywgMHhDQiwgMHg3MCwgMHgzRSwgMHgwMCwgMHgwQiwgMHgyOCwgMHgzNywgMHgwMywgMHgyMywgMHg0RCwgMHhGMCwgMHg4NSwgMHhGQiwgMHhGNSwgMHgzQiwKKyAgICAweDhELCAweEMxLCAweEI5LCAweEIyLCAweDdELCAweDE1LCAweDRDLCAweEMwLCAweDg2LCAweDc4LCAweDc0LCAweDAxLCAweERCLCAweEIwLCAweEMzLCAweDAxLAorICAgIDB4MjUsIDB4NEQsIDB4NTYsIDB4NzAsIDB4NjAsIDB4NjYsIDB4Q0MsIDB4QzAsIDB4MUEsIDB4RDcsIDB4NzcsIDB4OTAsIDB4NDIsIDB4REUsIDB4RTEsIDB4MDksCisgICAgMHhBOSwgMHgxNCwgMHhCOCwgMHhCOSwgMHg3OCwgMHhBRiwgMHg2NCwgMHgxRiwgMHg1MCwgMHgwMiwgMHhGOSwgMHhBRiwgMHgyQywgMHg0MywgMHg5QSwgMHhGMywKKyAgICAweEQ5LCAweDAwLCAweDU2LCAweDgxLCAweEM5LCAweEM2LCAweEM4LCAweEFGLCAweDFELCAweDQ5LCAweDVBLCAweEM1LCAweEZCLCAweDgwLCAweEY2LCAweDNFLAorICAgIDB4RDEsIDB4MDMsIDB4NUIsIDB4OEIsIDB4RjQsIDB4RkEsIDB4OEIsIDB4ODEsIDB4QjgsIDB4ODcsIDB4RDMsIDB4RUUsIDB4NDAsIDB4MTcsIDB4QjAsIDB4MzksCisgICAgMHhFNSwgMHgyMCwgMHhGNCwgMHg5NiwgMHhFRSwgMHg4RSwgMHhBMywgMHg3MSwgMHhDRSwgMHgwNSwgMHhENCwgMHgzQywgMHg3MSwgMHg0NiwgMHg5MSwgMHhFQSwKKyAgICAweDg5LCAweEM1LCAweDlGLCAweEQzLCAweDA3LCAweDc3LCAweDFFLCAweDFDLCAweDRCLCAweDI4LCAweEExLCAweEE0LCAweDVGLCAweEUzLCAweEMzLCAweDlBLAorICAgIDB4RjUsIDB4MkEsIDB4RjgsIDB4QzMsIDB4NjgsIDB4NEMsIDB4NzYsIDB4N0IsIDB4OEIsIDB4NjIsIDB4NDksIDB4OEMsIDB4N0MsIDB4MzEsIDB4OUQsIDB4NDEsCisgICAgMHgwNywgMHgyOSwgMHhFOSwgMHhEOSwgMHhGMSwgMHg1OCwgMHg2RiwgMHgyMCwgMHgzMSwgMHgwNiwgMHg0NSwgMHhFQSwgMHhBQiwgMHg1RSwgMHg5NCwgMHgyMSwKKyAgICAweEVDLCAweEIyLCAweEMwLCAweEE5LCAweEQzLCAweDIzLCAweDU0LCAweDA5LCAweDMyLCAweDk1LCAweEY3LCAweDUwLCAweDQxLCAweDEzLCAweDdFLCAweDlELAorICAgIDB4N0MsIDB4RUIsIDB4QjgsIDB4NDksIDB4ODcsIDB4RDIsIDB4RjksIDB4NTUsIDB4REMsIDB4RTUsIDB4NTcsIDB4NUUsIDB4NDUsIDB4M0MsIDB4QTAsIDB4RTcsCisgICAgMHhGMiwgMHg3MCwgMHgyQiwgMHg3QSwgMHgwOCwgMHgzOCwgMHgxRCwgMHhDQywgMHgzNCwgMHg1NSwgMHhGMywgMHg3OSwgMHg5OSwgMHhEOCwgMHgzQSwgMHg2QywKKyAgICAweEVBLCAweEZELCAweDE4LCAweEU2LCAweEE4LCAweDhDLCAweDIyLCAweEU2LCAweDI0LCAweDAyLCAweEM2LCAweDcxLCAweEZFLCAweDA5LCAweDAxLCAweDYzLAorICAgIDB4RDksIDB4MTMsIDB4RDYsIDB4ODIsIDB4RTcsIDB4ODYsIDB4OUMsIDB4MDgsIDB4REMsIDB4QzUsIDB4MkEsIDB4ODMsIDB4MTMsIDB4M0EsIDB4MDMsIDB4NTIsCisgICAgMHgyNSwgMHg3MSwgMHg4QiwgMHg5RSwgMHhCNSwgMHhDQywgMHgwOCwgMHgwNSwgMHg5OCwgMHhCQywgMHhGRiwgMHhGMCwgMHhCOCwgMHgyMiwgMHhGMSwgMHg4NywKKyAgICAweDZCLCAweEU3LCAweDBBLCAweEIwLCAweEYxLCAweDc3LCAweEFDLCAweDcwLCAweEE1LCAweDM0LCAweDIyLCAweDQ2LCAweEQwLCAweDUzLCAweEI1LCAweEU4LAorICAgIDB4NzcsIDB4MDQsIDB4OUQsIDB4OTAsIDB4OEQsIDB4RTgsIDB4NTcsIDB4NDcsIDB4NUQsIDB4RTcsIDB4OTEsIDB4NDEsIDB4QTUsIDB4MkIsIDB4RDIsIDB4RjAsCisgICAgMHhCRSwgMHg3QiwgMHhGRSwgMHgwMywgMHhGNCwgMHg4MSwgMHg3MywgMHgyRiwgMHhBNCwgMHgzOSwgMHgyMSwgMHgzRCwgMHgyNCwgMHgzNSwgMHhBRSwgMHhDRSwKKyAgICAweEUzLCAweDlDLCAweDM2LCAweDVCLCAweDQ1LCAweEM0LCAweEEwLCAweEQ0LCAweDQ2LCAweDAyLCAweDM4LCAweEY3LCAweDlFLCAweEMzLCAweDExLCAweDAxLAorICAgIDB4MzEsIDB4QjgsIDB4QUMsIDB4RTgsIDB4RkMsIDB4REIsIDB4QzUsIDB4QjQsIDB4QzQsIDB4RDUsIDB4MkEsIDB4RkIsIDB4MEQsIDB4RjcsIDB4MjksIDB4QjUsCisgICAgMHhDQywgMHhFNywgMHhEMSwgMHhGNSwgMHgxRiwgMHg1MywgMHhERiwgMHhENywgMHg3RCwgMHg3MSwgMHhFRCwgMHgwQywgMHhCNCwgMHhEQSwgMHhGRSwgMHhBNSwKKyAgICAweDI4LCAweDVELCAweDVBLCAweDRELCAweDU0LCAweDlELCAweDA0LCAweDQwLCAweDkyLCAweEJELCAweEM0LCAweEQ3LCAweDM4LCAweDRCLCAweEJDLCAweEY1LAorICAgIDB4MUYsIDB4NTgsIDB4QUUsIDB4RDgsIDB4MEQsIDB4QTYsIDB4OTIsIDB4RTgsIDB4RUYsIDB4NDMsIDB4RUYsIDB4REYsIDB4MEYsIDB4Q0QsIDB4MjIsIDB4RkEsCisgICAgMHg2MSwgMHgyNCwgMHg3NywgMHg2QSwgMHg2MCwgMHg4RCwgMHg0MiwgMHhGQSwgMHg4QSwgMHgwRCwgMHg2QywgMHg0NywgMHhEQiwgMHhDMiwgMHg1NywgMHg5RiwKKyAgICAweDEyLCAweDBFLCAweDMyLCAweEQ0LCAweDEyLCAweEQ3LCAweDA1LCAweDFGLCAweERGLCAweDdBLCAweEVDLCAweEUyLCAweDc5LCAweEVCLCAweEM0LCAweDhCLAorICAgIDB4QzQsIDB4NzEsIDB4NDcsIDB4QjgsIDB4RTIsIDB4QTYsIDB4RjcsIDB4NTUsIDB4N0QsIDB4NkQsIDB4QzcsIDB4OTMsIDB4REIsIDB4MTEsIDB4RUQsIDB4NzAsCisgICAgMHhERSwgMHhDRCwgMHhEOSwgMHg4NywgMHgxNCwgMHhEQSwgMHg2OSwgMHgwMCwgMHg2MywgMHhGRiwgMHg1RSwgMHgwRiwgMHg5QSwgMHgzOCwgMHhFNywgMHhBMiwKKyAgICAweDJGLCAweEE2LCAweDM4LCAweDBFLCAweEE4LCAweDg4LCAweDM4LCAweEQ0LCAweEY1LCAweEYzLCAweDI2LCAweDI3LCAweDMzLCAweDJBLCAweEYwLCAweEExLAorICAgIDB4QzgsIDB4MDEsIDB4N0UsIDB4RjMsIDB4QjEsIDB4RUIsIDB4NTksIDB4Q0UsIDB4M0YsIDB4RTAsIDB4QzQsIDB4ODYsIDB4MjUsIDB4REQsIDB4Q0EsIDB4NTUsCisgICAgMHg1OCwgMHg0RiwgMHg0QiwgMHg0RiwgMHg1RCwgMHg4QSwgMHgwMSwgMHhBQiwgMHg4MiwgMHgzRSwgMHg0OCwgMHg5RiwgMHgxNCwgMHg0QiwgMHg5RSwgMHgwNSwKKyAgICAweDZDLCAweDNFLCAweEVFLCAweEY2LCAweDg0LCAweDU5LCAweDc2LCAweDU2LCAweDY5LCAweDEwLCAweDZCLCAweDRCLCAweDc5LCAweEI2LCAweDkwLCAweDBGLAorICAgIDB4MkUsIDB4MDQsIDB4NDUsIDB4NUMsIDB4NUEsIDB4MzUsIDB4N0MsIDB4NEEsIDB4OEQsIDB4RUEsIDB4QzMsIDB4QTgsIDB4MzUsIDB4RDIsIDB4Q0QsIDB4MEIsCisgICAgMHhFMSwgMHgzNywgMHhGMywgMHg4MywgMHhDQiwgMHg2NSwgMHg4QiwgMHg2NSwgMHg3MywgMHhFQywgMHhBOSwgMHg4MCwgMHgxMSwgMHhBMiwgMHhBNSwgMHg5NywKKyAgICAweDgzLCAweEMyLCAweDBELCAweEYwLCAweDIzLCAweDI3LCAweDZDLCAweEE3LCAweEZFLCAweEQzLCAweDAxLCAweDFBLCAweDFBLCAweDYwLCAweDFDLCAweDgyLAorICAgIDB4MDksIDB4RTYsIDB4QjcsIDB4N0UsIDB4RTMsIDB4RTUsIDB4OUUsIDB4RjMsIDB4RUMsIDB4N0YsIDB4NzYsIDB4MjMsIDB4Q0QsIDB4RjUsIDB4Q0QsIDB4QTcsCisgICAgMHgyMSwgMHhENSwgMHhDRiwgMHg3QywgMHg1NiwgMHg1NiwgMHgxRSwgMHhGMiwgMHgyNSwgMHgzNiwgMHg4MSwgMHg4MSwgMHhFOCwgMHgzMywgMHgzOSwgMHhGQywKKyAgICAweDkzLCAweEU3LCAweEM4LCAweDRBLCAweDM5LCAweEI1LCAweDFDLCAweDg2LCAweDEzLCAweEM5LCAweEQyLCAweEFBLCAweEM2LCAweDMxLCAweDQ2LCAweERFLAorICAgIDB4RUYsIDB4MzUsIDB4MjYsIDB4NUEsIDB4MDksIDB4NDIsIDB4MEYsIDB4MjQsIDB4QTUsIDB4NkEsIDB4ODIsIDB4ODQsIDB4MTcsIDB4OTUsIDB4MzUsIDB4N0MsCisgICAgMHhCNywgMHg5OSwgMHg2MCwgMHg2RSwgMHg1NCwgMHhFMSwgMHg0MywgMHhEQywgMHhERCwgMHgyQSwgMHgxNywgMHgwNiwgMHhCOSwgMHhGMiwgMHgzNCwgMHhBRSwKKyAgICAweERCLCAweEU5LCAweEYzLCAweEFCLCAweDZDLCAweEFBLCAweDFBLCAweDVFLCAweDY1LCAweENGLCAweDQ1LCAweDNCLCAweEIyLCAweDZDLCAweDQ3LCAweEU1LAorICAgIDB4MjYsIDB4N0IsIDB4NDMsIDB4RDAsIDB4NTgsIDB4MEEsIDB4NzQsIDB4RTMsIDB4RUMsIDB4REQsIDB4N0MsIDB4QjgsIDB4M0IsIDB4RTYsIDB4Q0MsIDB4NzIsCisgICAgMHhEMywgMHgzNSwgMHg2MywgMHhCNSwgMHgyNiwgMHg3QSwgMHhCRSwgMHg3MSwgMHgyMSwgMHg4MiwgMHg3NSwgMHgzNSwgMHgyMCwgMHgxMSwgMHg3RiwgMHgxRCwKKyAgICAweEZFLCAweEQ0LCAweDE5LCAweEQwLCAweEI3LCAweEMxLCAweEYzLCAweEY0LCAweEU2LCAweDlBLCAweEUwLCAweDdELCAweDAyLCAweDYwLCAweEYwLCAweEM4LAorICAgIDB4NDEsIDB4QzksIDB4MzYsIDB4MTQsIDB4REUsIDB4RjUsIDB4MDMsIDB4OTEsIDB4RTYsIDB4RkUsIDB4QUQsIDB4MUYsIDB4NTAsIDB4QTcsIDB4OTUsIDB4RkIsCisgICAgMHgwOSwgMHgyNiwgMHgyMSwgMHgyMywgMHhBNCwgMHhGOCwgMHg4NCwgMHhEMiwgMHhBQiwgMHgwMiwgMHg4OCwgMHg2MiwgMHhERCwgMHhCOSwgMHg3QSwgMHg1NywKKyAgICAweEYwLCAweDU3LCAweDkyLCAweDZFLCAweEE1LCAweERELCAweDZELCAweENGLCAweEVGLCAweDMwLCAweDBCLCAweEMzLCAweEQzLCAweEUxLCAweERGLCAweEI0LAorICAgIDB4MzksIDB4MzUsIDB4NzMsIDB4MTksIDB4RUQsIDB4QUUsIDB4MUEsIDB4OEEsIDB4MEQsIDB4QzgsIDB4MzEsIDB4OTQsIDB4M0MsIDB4QjUsIDB4RUYsIDB4MkMsCisgICAgMHg2NywgMHhCQSwgMHhGRCwgMHgzNCwgMHgxMywgMHg5NSwgMHg1QiwgMHgwMCwgMHgwQiwgMHhERiwgMHgyMywgMHhCQywgMHg3RCwgMHhERSwgMHgxQywgMHgzMCwKKyAgICAweDcyLCAweDgxLCAweDlDLCAweDM0LCAweEI3LCAweDYwLCAweDBFLCAweDRDLCAweDk2LCAweDY0LCAweDVDLCAweDkzLCAweDYxLCAweDUzLCAweDEyLCAweDIwLAorICAgIDB4RDMsIDB4QTIsIDB4QkIsIDB4OUYsIDB4MUYsIDB4MjYsIDB4N0YsIDB4RDUsIDB4RDcsIDB4REUsIDB4NEMsIDB4MjAsIDB4OEYsIDB4MUQsIDB4NDMsIDB4QUIsCisgICAgMHgyQywgMHg3RiwgMHg1MCwgMHhFRCwgMHg5QywgMHg3QywgMHgyQiwgMHg0NCwgMHgyQywgMHgyMiwgMHhCRiwgMHhENiwgMHg1NiwgMHhCMiwgMHg1NiwgMHhFNCwKKyAgICAweDc0LCAweDhBLCAweDc4LCAweDVGLCAweDIxLCAweEI5LCAweEQyLCAweERCLCAweDlELCAweDdELCAweDQyLCAweDU0LCAweDkyLCAweDhGLCAweDU1LCAweDlFLAorICAgIDB4ODUsIDB4RTgsIDB4MjgsIDB4OTIsIDB4RjAsIDB4MjcsIDB4NzcsIDB4Q0YsIDB4RkQsIDB4RTAsIDB4QjYsIDB4MkYsIDB4QkQsIDB4QzYsIDB4NEIsIDB4OEUsCisgICAgMHgzRSwgMHg5MCwgMHhCQiwgMHg1MiwgMHhFRCwgMHhGNiwgMHhBQSwgMHgyMiwgMHg2RiwgMHg1MCwgMHhERiwgMHhGQywgMHg2NSwgMHg3QiwgMHgwRCwgMHhFOSwKKyAgICAweDI3LCAweDAzLCAweDdFLCAweDRBLCAweDM4LCAweERELCAweDBFLCAweDdBLCAweDI3LCAweDY2LCAweDY1LCAweERGLCAweEQ0LCAweERDLCAweDYyLCAweDQxLAorICAgIDB4NEYsIDB4QkUsIDB4NzQsIDB4QkIsIDB4Q0UsIDB4NDUsIDB4OTgsIDB4QkMsIDB4NzgsIDB4QzQsIDB4NTgsIDB4Q0IsIDB4OEIsIDB4RDcsIDB4NkUsIDB4REUsCisgICAgMHg0NywgMHhFNywgMHg2MiwgMHhFNSwgMHhFNCwgMHg4MywgMHhDNCwgMHg4OCwgMHgwNywgMHhFOCwgMHg1OSwgMHhBOCwgMHg0NSwgMHg2NiwgMHhFNywgMHgyRSwKKyAgICAweEMwLCAweEM2LCAweDM0LCAweDU2LCAweDlCLCAweDZFLCAweEM4LCAweDdBLCAweDc5LCAweEUxLCAweDY3LCAweDFBLCAweDAyLCAweDAwLCAweEM5LCAweDBELAorICAgIDB4NEYsIDB4RkUsIDB4MTAsIDB4MzksIDB4MTgsIDB4MDEsIDB4RjQsIDB4QjksIDB4MDcsIDB4MTAsIDB4NzIsIDB4QzcsIDB4Q0YsIDB4MzksIDB4RTQsIDB4RkUsCisgICAgMHg3QywgMHg5MCwgMHgyRSwgMHgyOSwgMHgyNywgMHg3RSwgMHg2QSwgMHg2NCwgMHg4RSwgMHhDNiwgMHg1MiwgMHg0OSwgMHgwMCwgMHgxNSwgMHg1NCwgMHhGQiwKKyAgICAweDE3LCAweDczLCAweDE5LCAweDIyLCAweDI0LCAweDQ3LCAweDlDLCAweDkwLCAweEEzLCAweEMyLCAweDE2LCAweEFDLCAweDMzLCAweDkzLCAweDFCLCAweDNGLAorICAgIDB4M0QsIDB4N0MsIDB4QzIsIDB4QjEsIDB4NzMsIDB4QzQsIDB4RDQsIDB4QjUsIDB4QjMsIDB4RTAsIDB4M0QsIDB4MTAsIDB4OEMsIDB4MUMsIDB4OTMsIDB4RTAsCisgICAgMHhBQywgMHgyNCwgMHhCMCwgMHhCRSwgMHg0NSwgMHhGMywgMHhFNiwgMHg0NCwgMHhEOCwgMHhFQiwgMHg4MiwgMHg2RCwgMHgxMywgMHg3MywgMHg3MSwgMHgyQSwKKyAgICAweDU2LCAweEQ2LCAweDdDLCAweDI1LCAweEZCLCAweEQ2LCAweEMyLCAweEU5LCAweEIwLCAweDhBLCAweEU5LCAweEVCLCAweDFELCAweEE1LCAweDZGLCAweDE5LAorICAgIDB4REQsIDB4NjYsIDB4NkMsIDB4MjQsIDB4Q0YsIDB4NDQsIDB4MDYsIDB4MTIsIDB4RjMsIDB4QzAsIDB4QUUsIDB4MjEsIDB4OEIsIDB4QTEsIDB4REYsIDB4MDQsCisgICAgMHhDMiwgMHgxQiwgMHhGMSwgMHhBNywgMHgzQywgMHhGMywgMHg2OCwgMHhCOSwgMHhCMiwgMHhBRiwgMHg4QywgMHgyNCwgMHhCRiwgMHg3NSwgMHg3MiwgMHg2MCwKKyAgICAweDE4LCAweDA2LCAweDFDLCAweDNGLCAweDI2LCAweDRELCAweDNCLCAweDFCLCAweEZELCAweDc2LCAweEM2LCAweDkxLCAweEIwLCAweEI2LCAweEQyLCAweDVGLAorICAgIDB4NjcsIDB4RkEsIDB4N0QsIDB4RkYsIDB4RUMsIDB4QzcsIDB4OTMsIDB4N0EsIDB4MTUsIDB4NEYsIDB4RTEsIDB4MUMsIDB4NDYsIDB4NzEsIDB4MUUsIDB4OTYsCisgICAgMHhCRSwgMHhBRCwgMHgyRiwgMHgzMSwgMHgyOCwgMHg3MSwgMHhDQiwgMHgwNCwgMHgyMSwgMHhGQSwgMHg0NywgMHhCNCwgMHg0RCwgMHg4QiwgMHhFQywgMHhEMCwKKyAgICAweDc4LCAweEExLCAweDJCLCAweDFCLCAweDM5LCAweERCLCAweDQxLCAweDI3LCAweDE0LCAweDI4LCAweEUyLCAweEE4LCAweEZFLCAweEFDLCAweDY4LCAweDQ3LAorICAgIDB4RkQsIDB4N0IsIDB4NEYsIDB4RTAsIDB4QTIsIDB4QzgsIDB4N0UsIDB4ODMsIDB4ODYsIDB4QkQsIDB4NzMsIDB4MDMsIDB4MTgsIDB4MzcsIDB4REIsIDB4NDYsCisgICAgMHgxRiwgMHg2QiwgMHgxNywgMHgxOSwgMHgxMSwgMHgwQywgMHhBMiwgMHgxNCwgMHg4QiwgMHg3NSwgMHhCOCwgMHhCOSwgMHhFQiwgMHhDOSwgMHhENiwgMHgwRSwKKyAgICAweDhELCAweDc4LCAweDYyLCAweEVCLCAweDUxLCAweDlGLCAweEU3LCAweEFFLCAweDk2LCAweDgzLCAweDUwLCAweDc1LCAweDM2LCAweEY2LCAweDdGLCAweDMwLAorICAgIDB4OUIsIDB4NTIsIDB4NTcsIDB4NUIsIDB4NEQsIDB4QkMsIDB4OTUsIDB4NzAsIDB4Q0EsIDB4MkMsIDB4OEUsIDB4M0YsIDB4NTksIDB4RTAsIDB4MUMsIDB4MjEsCisgICAgMHgzRiwgMHg4MSwgMHgwNywgMHg1QiwgMHgwRCwgMHhFQiwgMHgzNSwgMHhBMywgMHgwNCwgMHgxMCwgMHg0OCwgMHhFOCwgMHgxRCwgMHg4MiwgMHhFQiwgMHgzQywKKyAgICAweDVBLCAweENGLCAweEE3LCAweDk2LCAweDZDLCAweDA0LCAweDgwLCAweDM4LCAweDk0LCAweDhBLCAweDVBLCAweDIwLCAweERELCAweEUwLCAweDg0LCAweDIzLAorICAgIDB4RUIsIDB4ODgsIDB4MzEsIDB4MUUsIDB4NzUsIDB4RDUsIDB4MUIsIDB4MzUsIDB4RTAsIDB4RTYsIDB4NzksIDB4REYsIDB4OTcsIDB4Q0YsIDB4NUQsIDB4OUEsCisgICAgMHhEQSwgMHgyMiwgMHg1NSwgMHhEMywgMHgzNywgMHhEQywgMHgwOSwgMHg0RCwgMHhFNCwgMHgwNiwgMHgwMCwgMHg0RiwgMHhBMSwgMHhEMywgMHg4RCwgMHhGQSwKKyAgICAweERGLCAweDk5LCAweDY3LCAweDEwLCAweDQ2LCAweDYxLCAweDFELCAweDU0LCAweDczLCAweDdELCAweDVGLCAweEY2LCAweDVDLCAweDM4LCAweDY3LCAweEI0LAorICAgIDB4MzEsIDB4NTksIDB4RkYsIDB4RDIsIDB4MDksIDB4MjgsIDB4MkYsIDB4N0MsIDB4MkEsIDB4OTUsIDB4QTIsIDB4MTAsIDB4NTUsIDB4RUQsIDB4RTMsIDB4QkEsCisgICAgMHg5RCwgMHg4RiwgMHgzNCwgMHhCOCwgMHhDMCwgMHhDOCwgMHgyNSwgMHg0RCwgMHhGMiwgMHgxQywgMHg1MCwgMHgyQSwgMHg2MCwgMHhGNywgMHgwRCwgMHgxRCwKKyAgICAweDI5LCAweEQzLCAweDI2LCAweEY5LCAweDg4LCAweERELCAweEEyLCAweDYyLCAweDFFLCAweDlFLCAweDg0LCAweEMzLCAweEI5LCAweDVBLCAweEFELCAweDVGLAorICAgIDB4QTksIDB4QUEsIDB4QzksIDB4MDAsIDB4REEsIDB4Q0QsIDB4ODksIDB4QjUsIDB4MzMsIDB4RUIsIDB4M0IsIDB4MDIsIDB4QkMsIDB4ODYsIDB4RDUsIDB4NDYsCisgICAgMHg5NSwgMHg0MywgMHhDNywgMHhENywgMHg1RSwgMHgxOSwgMHg5OSwgMHhENywgMHhCNSwgMHg1RiwgMHg5RCwgMHg2MCwgMHgxMSwgMHg4NCwgMHhBMCwgMHhEQiwKKyAgICAweDI0LCAweDEzLCAweEJELCAweDg4LCAweEFDLCAweEJFLCAweDA0LCAweDBFLCAweDQzLCAweEYwLCAweDZGLCAweDJELCAweDI4LCAweEJGLCAweDIzLCAweEEwLAorICAgIDB4MjcsIDB4RjQsIDB4REYsIDB4QTUsIDB4QUQsIDB4NTEsIDB4NzcsIDB4RTMsIDB4MTcsIDB4OEEsIDB4NEMsIDB4NzQsIDB4MzIsIDB4NzAsIDB4OTEsIDB4MzksCisgICAgMHhCMiwgMHhFNiwgMHhBOCwgMHg1NSwgMHg4NywgMHhGNSwgMHhERCwgMHg2RCwgMHhBNiwgMHg3QiwgMHg1MywgMHgxRiwgMHhGRiwgMHhGRCwgMHhCMiwgMHg5NywKKyAgICAweDU5LCAweDhFLCAweDVGLCAweEIzLCAweDU0LCAweERCLCAweEY3LCAweDVDLCAweDU3LCAweDRFLCAweERELCAweEY2LCAweDM2LCAweDIzLCAweEJGLCAweEJFLAorICAgIDB4QjksIDB4RDAsIDB4MkMsIDB4OUUsIDB4REEsIDB4NEIsIDB4MzMsIDB4MzgsIDB4NUEsIDB4MjUsIDB4RUQsIDB4RkUsIDB4MDAsIDB4MDgsIDB4RTUsIDB4NjQsCisgICAgMHhDMywgMHg5NSwgMHgwMCwgMHhBQSwgMHg5NiwgMHhEMywgMHhBOSwgMHgzOSwgMHhCOCwgMHhFNCwgMHg0NywgMHg3MiwgMHg2QywgMHhFQiwgMHgxQSwgMHg5MywKKyAgICAweDM3LCAweDlFLCAweEQ2LCAweDFFLCAweDVDLCAweDZELCAweERCLCAweDc0LCAweDQyLCAweDE2LCAweDk1LCAweDQ0LCAweDdFLCAweDNCLCAweEFFLCAweEJDLAorICAgIDB4MDIsIDB4MTUsIDB4OTMsIDB4QjksIDB4MDcsIDB4QkYsIDB4RkQsIDB4NEIsIDB4RDIsIDB4OTQsIDB4RjIsIDB4MzUsIDB4RkQsIDB4QTEsIDB4NDQsIDB4MzcsCisgICAgMHg3NCwgMHhGQiwgMHg0NSwgMHg0NiwgMHg4MywgMHgzOSwgMHgxRCwgMHhBOCwgMHhFOSwgMHhFOCwgMHg5QywgMHg2NywgMHg1NSwgMHhFQywgMHgyQywgMHg1OSwKKyAgICAweEY4LCAweDNFLCAweDZBLCAweDU0LCAweDc1LCAweDIzLCAweDFGLCAweDkwLCAweENFLCAweDZBLCAweEFBLCAweDVDLCAweDgwLCAweDkzLCAweDZFLCAweDZELAorICAgIDB4MkMsIDB4QzMsIDB4NUEsIDB4RjIsIDB4QTIsIDB4OTMsIDB4OTcsIDB4QUEsIDB4N0YsIDB4QUEsIDB4NzYsIDB4MEIsIDB4NTksIDB4NkQsIDB4MzksIDB4MzgsCisgICAgMHgzMiwgMHgwMCwgMHhBMSwgMHhGNSwgMHgzOSwgMHg5NCwgMHg2MCwgMHg5RCwgMHhEMywgMHhFNiwgMHhGOCwgMHhGOCwgMHgxNCwgMHhDNCwgMHg2RCwgMHg0NywKKyAgICAweDIxLCAweDY2LCAweDQzLCAweEU0LCAweENCLCAweDA3LCAweDBELCAweEJELCAweEQ5LCAweDU1LCAweERELCAweDAzLCAweDc1LCAweDkwLCAweDkxLCAweDM4LAorICAgIDB4M0YsIDB4MzIsIDB4RTYsIDB4NzMsIDB4MzQsIDB4QzksIDB4QzAsIDB4ODcsIDB4M0EsIDB4QzUsIDB4NjIsIDB4MjUsIDB4MUQsIDB4NzQsIDB4QjgsIDB4MEQsCisgICAgMHhBNSwgMHhFRCwgMHhBRiwgMHgyMCwgMHhDMSwgMHgwRCwgMHhBNiwgMHgyQywgMHg3OCwgMHhDMiwgMHg0NiwgMHhFQSwgMHgwNSwgMHhERSwgMHgwNiwgMHg0NywKKyAgICAweDhELCAweEUyLCAweDQyLCAweDFCLCAweDRGLCAweDQ0LCAweEVFLCAweDgzLCAweDFBLCAweEQ3LCAweDY2LCAweDQ5LCAweEJFLCAweEQwLCAweDhDLCAweDU4LAorICAgIDB4NzMsIDB4RjEsIDB4OUYsIDB4OTcsIDB4NzQsIDB4MTEsIDB4QTYsIDB4NEEsIDB4MDcsIDB4REEsIDB4QTUsIDB4NzUsIDB4M0QsIDB4NEEsIDB4MEYsIDB4MEQsCisgICAgMHgwNiwgMHg1NiwgMHhCMiwgMHg1RiwgMHg1QSwgMHg4RSwgMHgyQSwgMHgxQywgMHgzOCwgMHg3MiwgMHhCRiwgMHhDNCwgMHhEMSwgMHgwNiwgMHg1NSwgMHhCMiwKKyAgICAweDczLCAweEMwLCAweDlELCAweDVGLCAweDJGLCAweDlCLCAweDA3LCAweDE3LCAweEE3LCAweDQ0LCAweEEwLCAweDBBLCAweDBFLCAweEU0LCAweDcyLCAweEI3LAorICAgIDB4NzAsIDB4MkUsIDB4MUUsIDB4ODIsIDB4NzYsIDB4NjMsIDB4QjUsIDB4QzEsIDB4OEYsIDB4MDMsIDB4NkMsIDB4RUUsIDB4ODAsIDB4M0MsIDB4ODYsIDB4RTEsCisgICAgMHg4RSwgMHg1NiwgMHhENywgMHgxNCwgMHgzNywgMHg3NywgMHg5MywgMHg5QywgMHhCNiwgMHhFMCwgMHhGQywgMHg0OSwgMHg2NCwgMHg1NiwgMHg3NywgMHhBRSwKKyAgICAweDRFLCAweEIwLCAweDI4LCAweEJBLCAweDVCLCAweDQ5LCAweDVBLCAweEI4LCAweDgzLCAweEQ4LCAweDZCLCAweEU1LCAweDQxLCAweDdBLCAweDY1LCAweDhDLAorICAgIDB4QzEsIDB4NzEsIDB4REQsIDB4OTcsIDB4MDEsIDB4QTgsIDB4OUEsIDB4QUQsIDB4QzgsIDB4NDMsIDB4QUIsIDB4QTYsIDB4REMsIDB4NzEsIDB4RDcsIDB4OUEsCisgICAgMHhDQiwgMHg5OSwgMHg1RiwgMHhDQSwgMHg0RCwgMHg3NSwgMHhDNywgMHhFNCwgMHgyMCwgMHgwQSwgMHgxMiwgMHhFNSwgMHg0NSwgMHg2NCwgMHgxOSwgMHg3RSwKKyAgICAweDMyLCAweDUwLCAweDY3LCAweDIyLCAweDVDLCAweDg4LCAweEE0LCAweEFCLCAweDMwLCAweDk3LCAweDQyLCAweEY3LCAweEU2LCAweDE3LCAweDM1LCAweEQ1LAorICAgIDB4RkUsIDB4RjMsIDB4NTEsIDB4RDMsIDB4NkYsIDB4MkEsIDB4QjYsIDB4MDEsIDB4OUIsIDB4ODAsIDB4NEYsIDB4ODYsIDB4MUYsIDB4QTcsIDB4MkIsIDB4RjUsCisgICAgMHg4NCwgMHhEOSwgMHhCQiwgMHgwRSwgMHhFNiwgMHgyQSwgMHgwNSwgMHgyMiwgMHhCRSwgMHhGRiwgMHgyMSwgMHhDRCwgMHhGRCwgMHhDRCwgMHg4NSwgMHg2MiwKKyAgICAweEFDLCAweEMzLCAweEMxLCAweDk5LCAweERELCAweDhGLCAweERCLCAweENELCAweERDLCAweEQ1LCAweEE3LCAweDA4LCAweDc1LCAweDlCLCAweDNGLCAweDQ0LAorICAgIDB4QjksIDB4OTEsIDB4RTksIDB4RjAsIDB4NTYsIDB4NTksIDB4MzMsIDB4OUYsIDB4QzMsIDB4QkQsIDB4MDgsIDB4MDQsIDB4MTcsIDB4OTMsIDB4M0MsIDB4NDEsCisgICAgMHg2NiwgMHgxNCwgMHgyMCwgMHg0NCwgMHgwMSwgMHg0NiwgMHhFQiwgMHgwNSwgMHgxMCwgMHhCRiwgMHg2QSwgMHhBRiwgMHg0RSwgMHg0NCwgMHg4QywgMHhFMSwKKyAgICAweEJCLCAweEI5LCAweDg2LCAweDY0LCAweDY0LCAweEI0LCAweERFLCAweDdDLCAweDE3LCAweDkyLCAweEQzLCAweDlCLCAweDk4LCAweDIzLCAweEFBLCAweDhDLAorICAgIDB4MTUsIDB4RTgsIDB4QkMsIDB4RUMsIDB4REEsIDB4NTgsIDB4M0QsIDB4OEYsIDB4NTMsIDB4NjYsIDB4NjYsIDB4QTEsIDB4ODcsIDB4RDEsIDB4NzUsIDB4NTYsCisgICAgMHhGRCwgMHg5RiwgMHg2QywgMHg3MiwgMHg2NSwgMHhERiwgMHgyRCwgMHg0OCwgMHg1OCwgMHg0NCwgMHhENCwgMHg2RCwgMHhENCwgMHg0NywgMHhGRCwgMHg0QywKKyAgICAweEYxLCAweEJBLCAweDc2LCAweDU1LCAweEQ1LCAweDM1LCAweDc2LCAweDk3LCAweDFELCAweDI1LCAweDhCLCAweDIwLCAweEVBLCAweDcwLCAweDZCLCAweDdCLAorICAgIDB4OEEsIDB4NDQsIDB4QTAsIDB4QzYsIDB4MDQsIDB4MTQsIDB4RDEsIDB4OTEsIDB4NTAsIDB4NUUsIDB4OEUsIDB4REMsIDB4QkMsIDB4RjksIDB4RUEsIDB4QzIsCisgICAgMHhGNywgMHgwOCwgMHgwQiwgMHgyMCwgMHg0NiwgMHg4RiwgMHg0NCwgMHgyRiwgMHhEOCwgMHhBRiwgMHgxNiwgMHhEOCwgMHg5QSwgMHhFQSwgMHg3QSwgMHg5MywKKyAgICAweDIyLCAweEFCLCAweDNELCAweDZCLCAweDgyLCAweDgxLCAweDNELCAweEU4LCAweDNCLCAweDMzLCAweEE0LCAweDJFLCAweDZELCAweDRCLCAweDI0LCAweEZELAorICAgIDB4MDAsIDB4OUMsIDB4QTYsIDB4NkYsIDB4ODQsIDB4QzAsIDB4RTgsIDB4REUsIDB4NjYsIDB4OEMsIDB4REYsIDB4MTAsIDB4RTAsIDB4MTMsIDB4RjEsIDB4NkMsCisgICAgMHhDNiwgMHgyRSwgMHgyOSwgMHhEOSwgMHhCMywgMHg3NywgMHhCNCwgMHg1RSwgMHhGQiwgMHhFOSwgMHgxMCwgMHg4OSwgMHhDNSwgMHgyMywgMHgzNiwgMHgxQywKKyAgICAweDU5LCAweEQ4LCAweEU0LCAweDc4LCAweDQ1LCAweDAwLCAweENCLCAweEM4LCAweDMxLCAweEUxLCAweDVBLCAweDc4LCAweDZFLCAweDA1LCAweDU2LCAweDgyLAorICAgIDB4RjAsIDB4NjYsIDB4NEEsIDB4NDAsIDB4QTQsIDB4NDksIDB4QTgsIDB4M0EsIDB4RjAsIDB4MzIsIDB4NTUsIDB4QUQsIDB4MjEsIDB4RTgsIDB4NTYsIDB4REIsCisgICAgMHg0QywgMHhCNSwgMHhENCwgMHg0NSwgMHg4OSwgMHg1NywgMHg1MywgMHhGQywgMHg2NSwgMHgyMywgMHhBNywgMHhGMCwgMHg3OCwgMHg2MSwgMHhDNiwgMHg0QSwKKyAgICAweDMyLCAweDFGLCAweDk1LCAweEFFLCAweDY5LCAweDQ2LCAweDI4LCAweEJGLCAweEI0LCAweDg4LCAweEQ3LCAweDE4LCAweEY2LCAweEQzLCAweEJFLCAweEQ0LAorICAgIDB4MDAsIDB4OEMsIDB4NDQsIDB4MTcsIDB4REMsIDB4QTEsIDB4NjUsIDB4MDYsIDB4RjQsIDB4RTQsIDB4OUQsIDB4NTEsIDB4NDAsIDB4NDksIDB4MzAsIDB4RDEsCisgICAgMHg1QSwgMHgwOSwgMHhFNiwgMHhCRCwgMHgyQSwgMHgxNiwgMHg0NywgMHhERCwgMHgxNCwgMHg2OCwgMHhGNCwgMHhFRCwgMHhFQiwgMHhENSwgMHhGMiwgMHhGNSwKKyAgICAweEYzLCAweDFDLCAweEVDLCAweENGLCAweDg5LCAweDEwLCAweDlDLCAweERGLCAweDI2LCAweDRDLCAweEQ3LCAweDUwLCAweEU2LCAweDBGLCAweDhCLCAweDY0LAorICAgIDB4ODYsIDB4MzYsIDB4MDUsIDB4MzUsIDB4NkMsIDB4RUQsIDB4ODAsIDB4OUUsIDB4NjgsIDB4MUUsIDB4NDQsIDB4MUQsIDB4RjcsIDB4NEMsIDB4RDksIDB4QzIsCisgICAgMHhFQiwgMHg4MSwgMHg2QSwgMHhCMywgMHhBMCwgMHhFNCwgMHhGQywgMHgwNiwgMHg4NCwgMHg1QiwgMHhGRSwgMHg4QSwgMHg4MiwgMHhFNCwgMHhEMCwgMHgyMCwKKyAgICAweDExLCAweDc4LCAweDBGLCAweEQ1LCAweERDLCAweDRCLCAweDZGLCAweENBLCAweENFLCAweDJCLCAweEI0LCAweDBBLCAweDY3LCAweDFBLCAweDE5LCAweDE5LAorICAgIDB4QTAsIDB4MDYsIDB4NUMsIDB4NTYsIDB4QzEsIDB4NDUsIDB4QTcsIDB4M0UsIDB4REMsIDB4RDIsIDB4NDEsIDB4NTksIDB4NzUsIDB4NTksIDB4N0UsIDB4Q0IsCisgICAgMHhCNywgMHgwQiwgMHg5QywgMHg0NCwgMHhBOCwgMHg4MSwgMHg2QywgMHhGNywgMHg4OSwgMHg0OSwgMHg2NywgMHgxMSwgMHhDRiwgMHhCOCwgMHgwRCwgMHg0NCwKKyAgICAweDg3LCAweDk3LCAweDk3LCAweERDLCAweDQ0LCAweEY4LCAweDM3LCAweDkzLCAweEU0LCAweDE0LCAweEFDLCAweEY3LCAweEIxLCAweDY0LCAweEE0LCAweDJDLAorICAgIDB4REYsIDB4QzUsIDB4MDQsIDB4QjEsIDB4OTksIDB4OUIsIDB4NkYsIDB4ODUsIDB4N0YsIDB4NzcsIDB4MTEsIDB4RjYsIDB4NzAsIDB4NkEsIDB4RjYsIDB4RTQsCisgICAgMHg1NCwgMHhFNywgMHhFQywgMHhCQywgMHgyOSwgMHhFOCwgMHgxMSwgMHgwQSwgMHgyNCwgMHg4RiwgMHhCNiwgMHhDNywgMHhFOCwgMHg3NiwgMHg2NSwgMHg1NCwKKyAgICAweDA1LCAweDU0LCAweDgwLCAweDQ2LCAweDRELCAweEE5LCAweDhBLCAweEY4LCAweDZFLCAweDQ2LCAweDAxLCAweDdCLCAweEQ2LCAweDQyLCAweDc0LCAweDU0LAorICAgIDB4NDMsIDB4RTksIDB4QzcsIDB4RTUsIDB4MUUsIDB4QUIsIDB4MjgsIDB4NjYsIDB4RjcsIDB4MEEsIDB4RjAsIDB4ODYsIDB4NzEsIDB4N0IsIDB4MDUsIDB4NTAsCisgICAgMHhERiwgMHhBQiwgMHg3RCwgMHgxOSwgMHgwNCwgMHg1RCwgMHg0OCwgMHgzMSwgMHhEMiwgMHhFMSwgMHg3NSwgMHgzQywgMHhGRiwgMHhEQiwgMHg0QSwgMHhDMSwKKyAgICAweEFBLCAweDYzLCAweEVFLCAweDJDLCAweEY5LCAweDc5LCAweDExLCAweDFFLCAweDA5LCAweENGLCAweDg2LCAweDg2LCAweDBCLCAweDRFLCAweEQxLCAweDk0LAorICAgIDB4MTMsIDB4M0YsIDB4MjksIDB4RTUsIDB4ODEsIDB4QTgsIDB4MTIsIDB4NDEsIDB4RjMsIDB4RjMsIDB4ODMsIDB4MkIsIDB4MkYsIDB4RjQsIDB4MTgsIDB4MTAsCisgICAgMHg0MywgMHgxNiwgMHg5NSwgMHhENywgMHhGOCwgMHgzRSwgMHgzMiwgMHg5RSwgMHgyRSwgMHg5MywgMHgwOCwgMHhFMywgMHg4MCwgMHhEMCwgMHg1MiwgMHhERCwKKyAgICAweDY4LCAweDcxLCAweDgyLCAweDJBLCAweDE2LCAweDAyLCAweEJGLCAweEUxLCAweDQ1LCAweDkzLCAweDJBLCAweDk4LCAweDQ5LCAweDg3LCAweDJBLCAweDNDLAorICAgIDB4REYsIDB4QTAsIDB4Q0QsIDB4NEMsIDB4NjQsIDB4OEEsIDB4QUUsIDB4QkMsIDB4MzksIDB4NzEsIDB4RjgsIDB4QkEsIDB4RTYsIDB4QUIsIDB4MjEsIDB4NjAsCisgICAgMHgzNCwgMHg3NCwgMHg1NCwgMHg5OSwgMHhDRCwgMHg5RiwgMHg5NCwgMHhCNiwgMHhFNywgMHg2MiwgMHgzQSwgMHhCNywgMHg0RCwgMHhDQiwgMHgyNywgMHhFNCwKKyAgICAweEM4LCAweDkyLCAweEY1LCAweDQ1LCAweDZFLCAweDMyLCAweDkxLCAweDE1LCAweDhDLCAweDRFLCAweDEwLCAweDc2LCAweDFBLCAweDkzLCAweDJDLCAweDRFLAorICAgIDB4QkQsIDB4REEsIDB4MjcsIDB4M0YsIDB4OTksIDB4QUEsIDB4QjcsIDB4M0QsIDB4RjAsIDB4RkIsIDB4MzQsIDB4QjIsIDB4RDIsIDB4N0EsIDB4MjMsIDB4QkEsCisgICAgMHhDRiwgMHhGNCwgMHhERSwgMHhEQiwgMHhDQywgMHg4QywgMHhCMSwgMHgyRCwgMHg0QSwgMHhENiwgMHhDQSwgMHhDMCwgMHhEOCwgMHg3MCwgMHg1OCwgMHhCQywKKyAgICAweDlFLCAweDIyLCAweDkyLCAweEFCLCAweEQ4LCAweEZCLCAweEU3LCAweEJDLCAweEVCLCAweDgxLCAweEIzLCAweDc3LCAweDcwLCAweDMxLCAweDg2LCAweEUxLAorICAgIDB4NzksIDB4RDgsIDB4NTIsIDB4RDAsIDB4NkQsIDB4MzksIDB4MTQsIDB4NzgsIDB4NzMsIDB4NTIsIDB4OTYsIDB4RTUsIDB4QkMsIDB4MkUsIDB4NDIsIDB4OTAsCisgICAgMHg0MywgMHgyRCwgMHg4MSwgMHgzMSwgMHgwMSwgMHhFMSwgMHhBNCwgMHg1OSwgMHg4MywgMHg2RSwgMHhCNSwgMHgwMiwgMHg4RiwgMHg1MywgMHhEMCwgMHgwNCwKKyAgICAweDgyLCAweDBCLCAweDYwLCAweEYwLCAweEM2LCAweDVGLCAweEU0LCAweDA3LCAweDZDLCAweDhFLCAweEYzLCAweEM5LCAweDE1LCAweDE1LCAweDM4LCAweEI2LAorICAgIDB4MUEsIDB4MTcsIDB4MEEsIDB4NTIsIDB4RUYsIDB4RUYsIDB4REMsIDB4MDMsIDB4NEUsIDB4NjIsIDB4NUUsIDB4RjYsIDB4N0UsIDB4QUQsIDB4Q0EsIDB4NTIsCisgICAgMHhBNiwgMHhCQywgMHgyMSwgMHhDOSwgMHgwQSwgMHgxNSwgMHhBQiwgMHhBNiwgMHhERiwgMHg2QywgMHhCMSwgMHhGOSwgMHhDNiwgMHhGMywgMHg1MywgMHgzQiwKKyAgICAweEE5LCAweDg3LCAweDA2LCAweDYyLCAweDE4LCAweEJBLCAweDA2LCAweDIzLCAweEM4LCAweEE4LCAweDcyLCAweEM3LCAweDg5LCAweDFFLCAweDFELCAweEVDLAorICAgIDB4NUUsIDB4NDYsIDB4QjksIDB4QkUsIDB4MzgsIDB4MDQsIDB4MEIsIDB4MjksIDB4NjksIDB4NjAsIDB4OTcsIDB4MkUsIDB4NkYsIDB4NkEsIDB4N0YsIDB4N0EsCisgICAgMHhERCwgMHg5QywgMHg0QSwgMHg2MCwgMHgyRCwgMHgxOSwgMHgxNiwgMHgxQSwgMHhENiwgMHgyNSwgMHhBQiwgMHgxNywgMHg0NCwgMHg1RSwgMHg1MSwgMHg1QiwKKyAgICAweEMzLCAweDRELCAweDM2LCAweEMwLCAweEVFLCAweEEzLCAweDhCLCAweDEwLCAweDc4LCAweDRELCAweEMzLCAweDAwLCAweEI1LCAweDA3LCAweDE5LCAweEE0LAorICAgIDB4QzAsIDB4M0MsIDB4OTksIDB4NEIsIDB4NzAsIDB4NDgsIDB4QkIsIDB4NTMsIDB4RkIsIDB4MjEsIDB4NEQsIDB4OUIsIDB4MkIsIDB4NEMsIDB4NzUsIDB4NkQsCisgICAgMHgwQiwgMHg4NiwgMHg0OSwgMHgyNywgMHg3NiwgMHg2MSwgMHgxRCwgMHhCQiwgMHg4QywgMHg5RiwgMHhDQiwgMHgzQiwgMHhGNiwgMHgyRiwgMHg2MywgMHg2NCwKKyAgICAweDY1LCAweDJDLCAweDM4LCAweDlFLCAweEU3LCAweDEyLCAweDg1LCAweEE3LCAweDI5LCAweDQ4LCAweEU5LCAweEM2LCAweERCLCAweDJELCAweEE2LCAweDU0LAorICAgIDB4NUEsIDB4RDUsIDB4RTAsIDB4QjYsIDB4NzcsIDB4QTEsIDB4NzgsIDB4ODQsIDB4NTIsIDB4RDcsIDB4QzEsIDB4NUIsIDB4OUQsIDB4MEQsIDB4OEEsIDB4NzAsCisgICAgMHgzRSwgMHg3MiwgMHg2QSwgMHg1RCwgMHg2MywgMHgwRCwgMHhFRiwgMHg5NywgMHg2OCwgMHg3OCwgMHgxRiwgMHgzNSwgMHhEQSwgMHg5OCwgMHg2RSwgMHgyNSwKKyAgICAweDA1LCAweENDLCAweEYzLCAweEMwLCAweDFFLCAweDRGLCAweEQyLCAweDI5LCAweEU0LCAweDI2LCAweEMyLCAweDMyLCAweEU2LCAweEEwLCAweDY1LCAweEZFLAorICAgIDB4M0UsIDB4REIsIDB4NzEsIDB4QUIsIDB4ODUsIDB4NzksIDB4QUIsIDB4QzksIDB4OEQsIDB4RDEsIDB4OEEsIDB4RjIsIDB4QTIsIDB4NjIsIDB4RTcsIDB4NEYsCisgICAgMHhDNSwgMHhDRCwgMHgwOSwgMHg5NCwgMHhGRCwgMHhGMCwgMHgwRSwgMHhBMiwgMHgzRCwgMHg5OCwgMHg4RSwgMHg2NSwgMHgzNSwgMHg1RiwgMHhDOCwgMHhENSwKKyAgICAweENDLCAweEUyLCAweEVELCAweDNCLCAweDUwLCAweEI1LCAweDUyLCAweDU3LCAweEIxLCAweDA0LCAweEExLCAweDZFLCAweDQ4LCAweDU4LCAweEU1LCAweDYxLAorICAgIDB4NzUsIDB4OEQsIDB4RDIsIDB4MzQsIDB4MjEsIDB4NjIsIDB4QzMsIDB4RDIsIDB4MEMsIDB4NTEsIDB4RjEsIDB4MkIsIDB4RDQsIDB4RjcsIDB4QTcsIDB4MDQsCisgICAgMHhFNywgMHgyMiwgMHg3QiwgMHhDMCwgMHhGMCwgMHgxNCwgMHhGRiwgMHgzRiwgMHhBRCwgMHg0NiwgMHhFRCwgMHhGMywgMHhDMSwgMHhDNiwgMHg0RCwgMHhFNywKKyAgICAweDk1LCAweDg2LCAweDYwLCAweEUzLCAweDZFLCAweDAxLCAweEU4LCAweDk2LCAweEVGLCAweDg1LCAweEYzLCAweEMwLCAweDhDLCAweEYxLCAweDdELCAweDcwLAorICAgIDB4NEUsIDB4NjksIDB4NUMsIDB4MDYsIDB4RDAsIDB4RjksIDB4NzEsIDB4MEQsIDB4OUMsIDB4NkYsIDB4NUYsIDB4QzksIDB4RkMsIDB4MjcsIDB4MzIsIDB4MTMsCisgICAgMHgwQSwgMHhBMiwgMHg3OSwgMHgzMSwgMHg5MSwgMHgxOSwgMHhGRSwgMHg1MCwgMHhBNSwgMHg0OSwgMHhDNSwgMHgzOSwgMHg5RSwgMHg3QywgMHhENiwgMHg4OSwKKyAgICAweEY5LCAweDg1LCAweDFELCAweDA4LCAweDFBLCAweEQxLCAweEYxLCAweEE1LCAweDlDLCAweDM1LCAweEU5LCAweDI0LCAweDEyLCAweERDLCAweDE1LCAweDg5LAorICAgIDB4MzAsIDB4QjksIDB4OTksIDB4RUYsIDB4NTQsIDB4NzksIDB4Q0MsIDB4NjgsIDB4NzgsIDB4RkUsIDB4NzcsIDB4REUsIDB4NTEsIDB4QUQsIDB4ODksIDB4N0EsCisgICAgMHg0QywgMHgzMSwgMHgyOSwgMHgxRCwgMHg3MCwgMHg0NSwgMHg4MCwgMHhDNiwgMHg3RCwgMHhBNCwgMHhGRCwgMHhFNCwgMHg4NiwgMHhBMCwgMHhBMiwgMHg0QSwKKyAgICAweDMxLCAweDE3LCAweEE5LCAweEQwLCAweDA4LCAweENDLCAweEY5LCAweEVGLCAweDNDLCAweDcxLCAweDFBLCAweEVFLCAweEZBLCAweDk0LCAweDgzLCAweDFELAorICAgIDB4MkIsIDB4RUYsIDB4MTksIDB4MDAsIDB4RDAsIDB4NDMsIDB4QjgsIDB4MTAsIDB4MzUsIDB4NjMsIDB4MDYsIDB4OUQsIDB4QTgsIDB4RkMsIDB4RjksIDB4QzMsCisgICAgMHgwNywgMHgzOSwgMHg0OCwgMHgwRSwgMHg4NiwgMHg5NSwgMHg4MCwgMHhEMiwgMHg5RSwgMHhCMCwgMHg5RSwgMHg4OSwgMHg5NiwgMHgyRCwgMHg1OCwgMHg1RCwKKyAgICAweEQ2LCAweDg4LCAweDc3LCAweEVCLCAweDY0LCAweEMwLCAweEEyLCAweEI2LCAweENELCAweDk2LCAweDdELCAweEUyLCAweEM4LCAweDIxLCAweDkzLCAweDY1LAorICAgIDB4NTEsIDB4RjEsIDB4MTcsIDB4QUUsIDB4QjcsIDB4RjgsIDB4QkYsIDB4OTAsIDB4NTQsIDB4NDAsIDB4RTAsIDB4OUMsIDB4RDAsIDB4REUsIDB4RDcsIDB4RkMsCisgICAgMHgxOCwgMHg1NSwgMHg2QiwgMHg1OCwgMHgwQywgMHgxNywgMHhDNywgMHhBMywgMHgwNiwgMHg5MywgMHg5QiwgMHgyRiwgMHg2OCwgMHg3RSwgMHg3RCwgMHgwRiwKKyAgICAweDBDLCAweEM4LCAweDZGLCAweEM1LCAweERCLCAweDM3LCAweEExLCAweDQ2LCAweEU0LCAweERBLCAweDFFLCAweDY2LCAweDA2LCAweEYzLCAweDI0LCAweEIwLAorICAgIDB4MDUsIDB4QTIsIDB4MTYsIDB4NzYsIDB4MkQsIDB4QTQsIDB4QTIsIDB4MjcsIDB4MTgsIDB4NTYsIDB4NjMsIDB4OTIsIDB4RDgsIDB4RUQsIDB4OUQsIDB4QTcsCisgICAgMHgzQSwgMHhDMCwgMHhBOCwgMHhGRSwgMHgyNCwgMHgwRiwgMHgwNiwgMHhDNCwgMHgwNSwgMHg3NCwgMHhBNSwgMHgzMSwgMHhBMCwgMHg0MiwgMHhGQywgMHg1OSwKKyAgICAweEQwLCAweEMzLCAweDc5LCAweDZFLCAweDFELCAweDZFLCAweDM1LCAweEZDLCAweEJCLCAweDU4LCAweDIwLCAweDBELCAweDVCLCAweEE2LCAweEFGLCAweEJELAorICAgIDB4MDcsIDB4ODEsIDB4QkMsIDB4QkUsIDB4NTIsIDB4MzcsIDB4MjAsIDB4NEMsIDB4MEQsIDB4NkEsIDB4MjgsIDB4RTYsIDB4MTIsIDB4M0QsIDB4MEIsIDB4ODQsCisgICAgMHhFMSwgMHhCRSwgMHg0RiwgMHg5MywgMHg1NiwgMHg1QSwgMHhDQiwgMHg4MiwgMHgyMywgMHg4QywgMHhGMSwgMHhGOSwgMHhCMSwgMHhFQiwgMHhBQywgMHg1QywKKyAgICAweDg4LCAweEI0LCAweEMwLCAweEY4LCAweDZBLCAweDc4LCAweDQwLCAweDEzLCAweDQzLCAweEEzLCAweEI5LCAweEUzLCAweDY1LCAweEU4LCAweEFBLCAweDBBLAorICAgIDB4QzMsIDB4Q0IsIDB4MTksIDB4OUEsIDB4N0IsIDB4NzYsIDB4QkEsIDB4MkEsIDB4QkYsIDB4NDgsIDB4QUYsIDB4RkEsIDB4OUEsIDB4RkQsIDB4NjksIDB4NDYsCisgICAgMHgyNywgMHg3RiwgMHgzNCwgMHhGOCwgMHg5RiwgMHg4OSwgMHg4NywgMHhCOCwgMHg1RSwgMHgzNCwgMHhDRSwgMHg0MCwgMHg5RSwgMHhFNywgMHgwRSwgMHhDMSwKKyAgICAweDI5LCAweDI3LCAweDVGLCAweEQ0LCAweEVCLCAweDVGLCAweDNBLCAweEQzLCAweDIwLCAweEQ3LCAweENDLCAweDRCLCAweDA0LCAweDIyLCAweEQ1LCAweDQ4LAorICAgIDB4M0IsIDB4ODcsIDB4N0UsIDB4ODAsIDB4MzEsIDB4RDAsIDB4Q0YsIDB4RUIsIDB4OUUsIDB4QUIsIDB4QUUsIDB4RjAsIDB4OTgsIDB4NUIsIDB4NTAsIDB4QzMsCisgICAgMHhFRCwgMHg1QSwgMHhGOSwgMHhGOCwgMHhDNiwgMHhBMiwgMHhGOSwgMHg2RSwgMHgzMiwgMHgyMiwgMHg0NiwgMHg3NCwgMHgwMSwgMHg1NSwgMHhFMiwgMHg0MCwKKyAgICAweEEyLCAweDBELCAweDE1LCAweEVBLCAweDRCLCAweDY3LCAweDlBLCAweDYxLCAweDVFLCAweDEwLCAweDQwLCAweDQzLCAweEU4LCAweERGLCAweDgxLCAweEIzLAorICAgIDB4NEMsIDB4MEMsIDB4MjcsIDB4MUYsIDB4MDQsIDB4NzQsIDB4NUYsIDB4NDksIDB4M0UsIDB4ODEsIDB4NkYsIDB4NTIsIDB4QzgsIDB4NEEsIDB4RDcsIDB4MEYsCisgICAgMHhEOCwgMHhDQiwgMHg2RiwgMHgwQiwgMHg3NiwgMHhCRSwgMHhCMiwgMHg2NCwgMHhFMCwgMHgwMiwgMHgwOCwgMHhDNiwgMHg5RSwgMHgxNywgMHhEQywgMHgzNywKKyAgICAweDc2LCAweEQ0LCAweDk0LCAweEU0LCAweEFDLCAweEEwLCAweDdBLCAweDA2LCAweDRBLCAweDQ4LCAweDMwLCAweDE2LCAweDU0LCAweDVCLCAweEI4LCAweDAzLAorICAgIDB4NEQsIDB4ODMsIDB4NjcsIDB4NTYsIDB4MkYsIDB4MzcsIDB4RkQsIDB4QzcsIDB4QzMsIDB4NjAsIDB4Q0MsIDB4RjksIDB4OUQsIDB4NzEsIDB4OUYsIDB4MEYsCisgICAgMHhFNCwgMHhERSwgMHg0RiwgMHhFMSwgMHhFMCwgMHg0QSwgMHhGNSwgMHhFQiwgMHhCMSwgMHgxOSwgMHg5MiwgMHhERiwgMHgyMCwgMHg5RCwgMHg3RSwgMHg5OSwKKyAgICAweDBBLCAweDA2LCAweEI2LCAweDkwLCAweDI1LCAweDNBLCAweDZFLCAweDIxLCAweDEwLCAweDhGLCAweDcxLCAweEFGLCAweDdCLCAweDI2LCAweEIzLCAweDQ4LAorICAgIDB4ODUsIDB4MUUsIDB4MzcsIDB4MTQsIDB4MTYsIDB4NkMsIDB4NzEsIDB4MkEsIDB4RUQsIDB4MEEsIDB4NzMsIDB4RkIsIDB4OUIsIDB4OEIsIDB4MzAsIDB4QzYsCisgICAgMHg2QiwgMHhFNSwgMHhDRCwgMHgyOSwgMHg0QiwgMHhFMywgMHgxNiwgMHhDNywgMHg4QiwgMHg5NywgMHgyNCwgMHhFNiwgMHhENiwgMHg1RCwgMHg0QywgMHg2NiwKKyAgICAweEFFLCAweEU2LCAweDI4LCAweEMzLCAweDc5LCAweDkzLCAweEU1LCAweDM4LCAweEU5LCAweDgzLCAweDlDLCAweDNCLCAweEFDLCAweDkwLCAweDhGLCAweDdDLAorICAgIDB4NzMsIDB4NEUsIDB4QTcsIDB4QzksIDB4NTYsIDB4MzksIDB4NzUsIDB4MjAsIDB4RTEsIDB4OTQsIDB4NEEsIDB4MzQsIDB4OTksIDB4RjEsIDB4NkQsIDB4NDcsCisgICAgMHhENSwgMHg1MSwgMHgyNCwgMHgwQSwgMHhEMywgMHgzQiwgMHhCNiwgMHg0RiwgMHg4NywgMHhEMiwgMHg4QywgMHgzRSwgMHhBRSwgMHhDRCwgMHhDMCwgMHhCQSwKKyAgICAweENBLCAweDUxLCAweEFDLCAweDU2LCAweEJELCAweEI1LCAweEFBLCAweEFDLCAweEE0LCAweEIwLCAweEM1LCAweDdFLCAweEQ4LCAweDdCLCAweDUwLCAweEMyLAorICAgIDB4OEIsIDB4MEYsIDB4Q0UsIDB4MTQsIDB4RUIsIDB4QjYsIDB4MEMsIDB4MEEsIDB4MEYsIDB4MkQsIDB4RTAsIDB4RkYsIDB4OEQsIDB4M0MsIDB4Q0UsIDB4MEUsCisgICAgMHg5OCwgMHhGMywgMHg5NywgMHg0NCwgMHgyOCwgMHhFOCwgMHg2QywgMHgwQiwgMHg5MCwgMHg3RiwgMHhBQiwgMHhEMSwgMHhCNiwgMHhBMiwgMHhERSwgMHg3RiwKKyAgICAweDQ5LCAweDMwLCAweDUyLCAweDQ1LCAweDkwLCAweDhGLCAweEIyLCAweDNFLCAweDUwLCAweDNFLCAweDI0LCAweDcyLCAweDExLCAweEI4LCAweEI2LCAweDIwLAorICAgIDB4NjksIDB4QzEsIDB4ODUsIDB4NTQsIDB4RDQsIDB4MzMsIDB4NDYsIDB4RUMsIDB4OTksIDB4REQsIDB4MjEsIDB4QjksIDB4MzcsIDB4MkEsIDB4ODEsIDB4RDAsCisgICAgMHhDMiwgMHhDOCwgMHgxOSwgMHhFQywgMHg5NSwgMHg3QiwgMHg1RSwgMHhDNSwgMHhCQywgMHgwOCwgMHg1MywgMHgzNiwgMHhEOSwgMHhFMSwgMHg1MSwgMHg1MCwKKyAgICAweEQzLCAweDdCLCAweEIyLCAweERBLCAweEY5LCAweDMzLCAweDkyLCAweEJGLCAweDE3LCAweDI4LCAweEY0LCAweDFDLCAweDVFLCAweDM1LCAweDRDLCAweDc0LAorICAgIDB4RDQsIDB4ODIsIDB4RkEsIDB4QkEsIDB4QkUsIDB4ODksIDB4ODEsIDB4NDQsIDB4MTAsIDB4QkUsIDB4OUQsIDB4MkUsIDB4QkEsIDB4NDAsIDB4RjAsIDB4ODMsCisgICAgMHhFMywgMHg0MiwgMHhGNCwgMHg1RiwgMHg0RCwgMHgyQSwgMHhGRCwgMHhDNSwgMHg1RCwgMHhGMSwgMHhDRSwgMHg4MywgMHgyMCwgMHhENiwgMHhFRiwgMHhCRiwKKyAgICAweEIxLCAweEJCLCAweEM0LCAweEM3LCAweDUzLCAweDY5LCAweDEwLCAweDgwLCAweDY1LCAweDczLCAweEJGLCAweENFLCAweDBBLCAweDQxLCAweDAzLCAweEVGLAorICAgIDB4NEEsIDB4QjQsIDB4QTcsIDB4MjMsIDB4N0QsIDB4NkMsIDB4RTgsIDB4NUYsIDB4MkYsIDB4NDQsIDB4OTYsIDB4RDksIDB4RDMsIDB4MTAsIDB4QTUsIDB4RjcsCisgICAgMHhBQSwgMHg1QywgMHgxOCwgMHhBMCwgMHgzMSwgMHgwMCwgMHhCOSwgMHhCMiwgMHhEOSwgMHgxMiwgMHgxQywgMHg0QiwgMHgyMiwgMHg2NiwgMHhDRiwgMHhFRCwKKyAgICAweEI4LCAweEMzLCAweEY3LCAweEU2LCAweDFBLCAweEY1LCAweENFLCAweEE0LCAweEVCLCAweEVELCAweDY5LCAweEU4LCAweDM4LCAweEEwLCAweDlGLCAweDQ3LAorICAgIDB4M0UsIDB4NEMsIDB4NTEsIDB4REMsIDB4RkIsIDB4NEIsIDB4MzQsIDB4QkMsIDB4RkEsIDB4RDQsIDB4NTIsIDB4RkMsIDB4MTEsIDB4NkYsIDB4QkEsIDB4M0UsCisgICAgMHgwNiwgMHg4MiwgMHg0QiwgMHgwNiwgMHg4RiwgMHg4QSwgMHg2NiwgMHgyQywgMHhBRSwgMHg5QiwgMHg1RiwgMHgxRCwgMHg3NCwgMHg0NiwgMHhCRiwgMHg5QiwKKyAgICAweEIzLCAweDk0LCAweDdBLCAweEUyLCAweEVFLCAweDY4LCAweEI0LCAweDkxLCAweDM3LCAweDQ0LCAweDhBLCAweEY2LCAweDJDLCAweEM1LCAweDk5LCAweDdFLAorICAgIDB4NjgsIDB4M0EsIDB4RUQsIDB4MkUsIDB4MDUsIDB4MEIsIDB4QkYsIDB4Q0IsIDB4OTksIDB4MzEsIDB4QkMsIDB4QkQsIDB4OTYsIDB4MjYsIDB4MkYsIDB4MTEsCisgICAgMHhBMywgMHhFQywgMHg2NywgMHgzRCwgMHhCRiwgMHgwOCwgMHgwMiwgMHhBQiwgMHgxMiwgMHg0MywgMHgzOSwgMHg2MCwgMHhDRSwgMHhDRiwgMHgzNSwgMHhFOCwKKyAgICAweDg4LCAweEM2LCAweDU3LCAweEE0LCAweDdBLCAweDM1LCAweDgwLCAweDQ4LCAweDNDLCAweDZDLCAweEM5LCAweDlCLCAweERBLCAweEU1LCAweEIzLCAweDQ4LAorICAgIDB4NTEsIDB4OTIsIDB4N0IsIDB4OEIsIDB4NDUsIDB4RkIsIDB4NUYsIDB4ODgsIDB4REIsIDB4OTUsIDB4NzMsIDB4QzIsIDB4NDMsIDB4RDIsIDB4OTIsIDB4QTMsCisgICAgMHgzNCwgMHgwRiwgMHhDQiwgMHg4MywgMHg5MCwgMHg3OCwgMHhFNiwgMHg3QSwgMHg0NSwgMHg5QywgMHhFQSwgMHhENSwgMHgwMywgMHhDQywgMHhFQiwgMHhCMywKKyAgICAweDc0LCAweEUyLCAweDBFLCAweDlBLCAweEI1LCAweEZCLCAweEYyLCAweDQ4LCAweDVDLCAweDNFLCAweEIxLCAweDY3LCAweDBDLCAweEI4LCAweDZDLCAweDM2LAorICAgIDB4MDgsIDB4ODQsIDB4QzYsIDB4NEMsIDB4ODIsIDB4OTgsIDB4RTQsIDB4RDgsIDB4MUQsIDB4NTgsIDB4MTUsIDB4QUMsIDB4QzQsIDB4NDEsIDB4RjcsIDB4OUQsCisgICAgMHgwOCwgMHg2NCwgMHg0QSwgMHhFOSwgMHg3NCwgMHg3RSwgMHgzQiwgMHg5MSwgMHhDMSwgMHhFMywgMHg5QSwgMHgwRSwgMHg4MSwgMHg1QywgMHhEMSwgMHg1QywKKyAgICAweDdBLCAweDk1LCAweDAyLCAweEQ0LCAweDI4LCAweDMwLCAweEQ0LCAweEUwLCAweEFFLCAweEI4LCAweEYxLCAweDdCLCAweENGLCAweEFDLCAweDUwLCAweDkwLAorICAgIDB4RUYsIDB4OEYsIDB4MTgsIDB4RDEsIDB4OUEsIDB4MTksIDB4NkYsIDB4NDEsIDB4NjUsIDB4Q0IsIDB4MjgsIDB4QkQsIDB4OUMsIDB4QjYsIDB4MjcsIDB4NjUsCisgICAgMHg4QiwgMHhCNSwgMHhCOCwgMHgwOCwgMHhDNywgMHg0MSwgMHhCQywgMHhGMiwgMHg2MywgMHg2RCwgMHg5QywgMHhENywgMHg2OSwgMHgwMywgMHhCRiwgMHhCMCwKKyAgICAweDdCLCAweDA0LCAweENDLCAweEZELCAweDc0LCAweEEwLCAweEJELCAweDgxLCAweDA4LCAweDg2LCAweDRGLCAweDQyLCAweDI1LCAweEQyLCAweDRBLCAweDY2LAorICAgIDB4NDksIDB4M0UsIDB4RDAsIDB4N0EsIDB4M0QsIDB4NTQsIDB4Q0IsIDB4NTAsIDB4OTQsIDB4RjMsIDB4N0YsIDB4M0EsIDB4RjIsIDB4OTEsIDB4RTYsIDB4NUUsCisgICAgMHgxMSwgMHhDNiwgMHhBNCwgMHg3NiwgMHg5NywgMHhDMywgMHg2QywgMHgyMSwgMHgwRSwgMHhCNiwgMHhCQSwgMHgxMCwgMHg0QSwgMHhFMywgMHhEQywgMHhEQywKKyAgICAweDQzLCAweDNCLCAweEYwLCAweDBCLCAweDQ3LCAweDY1LCAweEI5LCAweEQ3LCAweDBCLCAweDMyLCAweEZELCAweEY1LCAweDUxLCAweDAzLCAweEVBLCAweDhDLAorICAgIDB4MDEsIDB4NjUsIDB4QzQsIDB4NkIsIDB4MjUsIDB4RjEsIDB4QzIsIDB4M0EsIDB4MDksIDB4NjUsIDB4MUQsIDB4NTgsIDB4REUsIDB4RjQsIDB4MkIsIDB4QzcsCisgICAgMHg2NywgMHgzMCwgMHgwNCwgMHgwOCwgMHgwQSwgMHg3QSwgMHgzQSwgMHg0QiwgMHhFNCwgMHhFNywgMHhFOCwgMHhCRSwgMHhGRiwgMHgwNSwgMHg0MiwgMHhGQywKKyAgICAweEUwLCAweDFGLCAweEFFLCAweEE4LCAweDc1LCAweEJBLCAweEU5LCAweERDLCAweDhDLCAweEJELCAweDMwLCAweEI4LCAweDFELCAweDA0LCAweDU3LCAweEQzLAorICAgIDB4OTMsIDB4MUEsIDB4NDMsIDB4OTMsIDB4RkUsIDB4NUQsIDB4NkEsIDB4MjgsIDB4QkUsIDB4RTAsIDB4MzksIDB4QjIsIDB4Q0MsIDB4RjAsIDB4N0QsIDB4MDYsCisgICAgMHg0QywgMHg5NSwgMHhGQywgMHg2MiwgMHhDNywgMHgwNSwgMHhFQiwgMHgxNiwgMHg4OCwgMHgyQiwgMHgwRSwgMHg5NiwgMHhGMSwgMHhDNywgMHg0MywgMHhDMiwKKyAgICAweEI3LCAweEU5LCAweDJGLCAweEVDLCAweEEwLCAweDVDLCAweDlBLCAweEQ3LCAweDI2LCAweDY0LCAweDY5LCAweERCLCAweDEzLCAweDI1LCAweEQ4LCAweDQzLAorICAgIDB4RTAsIDB4NUIsIDB4MEIsIDB4QTEsIDB4RTQsIDB4QjAsIDB4RjIsIDB4NEUsIDB4NkEsIDB4OUMsIDB4RjQsIDB4N0IsIDB4OUUsIDB4RTMsIDB4QjcsIDB4RDQsCisgICAgMHhDNiwgMHgxMCwgMHhGMiwgMHgzNywgMHg0NSwgMHg4QSwgMHg2QiwgMHg5NywgMHgyOCwgMHgyRSwgMHgwRSwgMHhBMCwgMHg5MywgMHgxMywgMHhGNywgMHgwQiwKKyAgICAweDhBLCAweEI5LCAweDlGLCAweEMwLCAweEU0LCAweDRBLCAweEVELCAweEUxLCAweDc5LCAweDMyLCAweDMxLCAweDk3LCAweDJCLCAweEI3LCAweDA5LCAweEI1LAorICAgIDB4QjksIDB4RTMsIDB4NTcsIDB4NTYsIDB4NUYsIDB4ODEsIDB4MjgsIDB4ODUsIDB4QUEsIDB4RjgsIDB4NjksIDB4NzcsIDB4NDAsIDB4NzQsIDB4RDYsIDB4NEIsCisgICAgMHg3QSwgMHhBQywgMHhENSwgMHgyRCwgMHg3NCwgMHhCNCwgMHg2NywgMHg4OSwgMHhFMSwgMHhGMSwgMHhEOSwgMHgxRiwgMHhCOCwgMHhEQywgMHhERiwgMHgwRCwKKyAgICAweDhELCAweEE2LCAweEE3LCAweDhELCAweEYxLCAweDU5LCAweDMwLCAweEQ2LCAweDAwLCAweDI2LCAweEQxLCAweDIxLCAweDJFLCAweEU3LCAweEI3LCAweDkxLAorICAgIDB4MkUsIDB4QTksIDB4RjYsIDB4RDAsIDB4NUEsIDB4QjYsIDB4OEEsIDB4MzQsIDB4NTksIDB4OTIsIDB4OUUsIDB4MzcsIDB4MUUsIDB4RDksIDB4MzgsIDB4MkEsCisgICAgMHhBRSwgMHgxMiwgMHhENCwgMHg5NSwgMHg4QiwgMHhFOCwgMHhBNywgMHg1RCwgMHg4QywgMHg5MiwgMHhBMSwgMHg4QSwgMHg0RCwgMHg5RSwgMHg2NCwgMHgyMCwKKyAgICAweEEyLCAweDdFLCAweENDLCAweDM5LCAweDUwLCAweEE0LCAweDAxLCAweEVDLCAweEE3LCAweEY1LCAweDZELCAweDg4LCAweDhFLCAweEI2LCAweENFLCAweEE0LAorICAgIDB4NTgsIDB4QUEsIDB4RkIsIDB4Q0EsIDB4QzUsIDB4NjcsIDB4MjYsIDB4MDcsIDB4QkIsIDB4RUMsIDB4RkIsIDB4NzMsIDB4NUQsIDB4NDgsIDB4OUIsIDB4NDksCisgICAgMHhGRSwgMHg5OSwgMHgyNSwgMHg2RCwgMHg4MiwgMHgxRiwgMHg2RSwgMHg2RSwgMHgxRSwgMHgyMSwgMHhCRiwgMHg5NCwgMHg1MiwgMHhCNywgMHhBQywgMHg4RSwKKyAgICAweDc0LCAweDIyLCAweDEwLCAweDI3LCAweDE0LCAweDZGLCAweERDLCAweDgwLCAweEJELCAweEIzLCAweEQ2LCAweEFELCAweDFGLCAweDE3LCAweDU5LCAweDZCLAorICAgIDB4NDIsIDB4NjgsIDB4QkQsIDB4MzcsIDB4Q0YsIDB4QzYsIDB4NDYsIDB4MTEsIDB4NjQsIDB4OUUsIDB4RUIsIDB4RjUsIDB4Q0QsIDB4QTIsIDB4NUYsIDB4M0YsCisgICAgMHhDOCwgMHgwRSwgMHgxRiwgMHhDQywgMHhGQSwgMHhFMCwgMHg1OSwgMHhDNCwgMHg4MiwgMHg4QiwgMHg4RSwgMHhDNCwgMHg4QywgMHg5NiwgMHg1NiwgMHhGNSwKKyAgICAweDE2LCAweDJBLCAweDUzLCAweDBFLCAweDM2LCAweEM5LCAweDYxLCAweDM0LCAweDNGLCAweDBGLCAweDczLCAweEMzLCAweEQ5LCAweDBDLCAweDNCLCAweDc0LAorICAgIDB4RDUsIDB4OTcsIDB4M0YsIDB4MkQsIDB4MUIsIDB4Q0YsIDB4MUYsIDB4RDIsIDB4RkMsIDB4RkYsIDB4QkMsIDB4RkIsIDB4OUUsIDB4RTcsIDB4NUQsIDB4MzAsCisgICAgMHg1RCwgMHg5QywgMHg2NiwgMHgwNiwgMHgyNiwgMHhEMywgMHgwQSwgMHg0RSwgMHg0QywgMHg0NSwgMHhBOCwgMHhFNiwgMHgyMywgMHgwQSwgMHhFMSwgMHgzQSwKKyAgICAweDMxLCAweDM5LCAweEMwLCAweDAxLCAweDlELCAweDE5LCAweEQzLCAweDJBLCAweDI4LCAweEQ3LCAweDQzLCAweDQwLCAweDM4LCAweEM1LCAweEE5LCAweENDLAorICAgIDB4ODAsIDB4NzEsIDB4QUYsIDB4REMsIDB4RUYsIDB4NEUsIDB4ODUsIDB4QzAsIDB4QkUsIDB4NTYsIDB4QzEsIDB4NTQsIDB4QTYsIDB4REUsIDB4MzAsIDB4RTQsCisgICAgMHhGOSwgMHhEMCwgMHgxQiwgMHg0MCwgMHg2QSwgMHg2MSwgMHgyQiwgMHg1QywgMHgyQiwgMHhGNiwgMHgxNiwgMHg5OSwgMHhENywgMHg2MiwgMHhDMiwgMHg1OSwKKyAgICAweDgxLCAweDg3LCAweEZCLCAweDkzLCAweDQ1LCAweEVFLCAweDM4LCAweEI4LCAweEU3LCAweERELCAweDM3LCAweEMwLCAweDc2LCAweEM5LCAweDBELCAweDE3LAorICAgIDB4MDYsIDB4MzQsIDB4RDMsIDB4QjMsIDB4NkUsIDB4ODgsIDB4MjYsIDB4OTksIDB4NDgsIDB4MEUsIDB4NjcsIDB4NDYsIDB4RTMsIDB4RTQsIDB4MjIsIDB4OTcsCisgICAgMHhGQSwgMHhEMywgMHhDMywgMHg2NiwgMHhEMSwgMHgwOCwgMHgxNywgMHg5MywgMHhERCwgMHhDOSwgMHhDNiwgMHg0MSwgMHhDNywgMHgxMiwgMHg0RiwgMHg4MywKKyAgICAweEI4LCAweENDLCAweDYwLCAweEEwLCAweDI0LCAweEI3LCAweDE3LCAweDE2LCAweDMxLCAweEM2LCAweDQyLCAweEVCLCAweEVDLCAweDQ4LCAweEUxLCAweEVCLAorICAgIDB4NzUsIDB4NTQsIDB4NzUsIDB4RTgsIDB4MDEsIDB4RjYsIDB4NDIsIDB4NjcsIDB4RjEsIDB4NDYsIDB4RjcsIDB4QjcsIDB4MkEsIDB4MjIsIDB4ODgsIDB4MjAsCisgICAgMHhBQywgMHhDRiwgMHhBMywgMHgyNywgMHgzNiwgMHgzOCwgMHhEMCwgMHg3MCwgMHg5OSwgMHhENSwgMHg2MywgMHhBMywgMHhGNywgMHgwNSwgMHgyNSwgMHg1MiwKKyAgICAweDgyLCAweDA0LCAweDAyLCAweEVELCAweEJELCAweDEzLCAweDlGLCAweENFLCAweDg5LCAweEQwLCAweDZFLCAweEUyLCAweDg1LCAweEJCLCAweEVDLCAweDdCLAorICAgIDB4RkEsIDB4NkMsIDB4ODgsIDB4NEIsIDB4NTcsIDB4RDQsIDB4QzcsIDB4Q0EsIDB4NUEsIDB4MDEsIDB4NkEsIDB4NkMsIDB4RDksIDB4NzUsIDB4MUUsIDB4ODksCisgICAgMHgyNiwgMHhGQSwgMHg0QSwgMHgwRSwgMHgxRiwgMHgyQiwgMHhBOSwgMHg5NywgMHhEQiwgMHgxOSwgMHg0RSwgMHhENCwgMHg1NSwgMHg1QywgMHgzRCwgMHhGMiwKKyAgICAweERCLCAweEQ3LCAweDVCLCAweDYwLCAweDlFLCAweDEyLCAweDRBLCAweDYyLCAweDQ1LCAweEU3LCAweEJCLCAweDBFLCAweEVGLCAweDY3LCAweDk5LCAweDY4LAorICAgIDB4QUEsIDB4MEUsIDB4MkIsIDB4NDksIDB4ODIsIDB4OEQsIDB4N0UsIDB4NEMsIDB4QTQsIDB4NzgsIDB4MDgsIDB4QzMsIDB4QUUsIDB4NzksIDB4RjQsIDB4MzksCisgICAgMHhDMSwgMHhFQywgMHgwMCwgMHhCNCwgMHg5RCwgMHg3QywgMHg0MCwgMHhGQywgMHg2QiwgMHhCQywgMHgxNiwgMHhEQiwgMHhEOCwgMHhDNCwgMHg0OCwgMHg1QiwKKyAgICAweDYzLCAweDE2LCAweEY2LCAweENFLCAweEFBLCAweDk5LCAweEM4LCAweEYyLCAweDg3LCAweDJBLCAweDA1LCAweEFELCAweDMxLCAweEI4LCAweEEwLCAweDFELAorICAgIDB4QTAsIDB4QTIsIDB4MDMsIDB4MEMsIDB4NTQsIDB4RDUsIDB4N0IsIDB4MEMsIDB4QkYsIDB4MzUsIDB4NzAsIDB4NTcsIDB4Q0QsIDB4RTMsIDB4QjAsIDB4NTcsCisgICAgMHhFOCwgMHhCRSwgMHg3QSwgMHg5NSwgMHhERiwgMHhERiwgMHhBQiwgMHgxMSwgMHg1NSwgMHg4NiwgMHhBMywgMHgyNywgMHg2RSwgMHgwQiwgMHg3QiwgMHhGMCwKKyAgICAweEFELCAweDJFLCAweEVFLCAweEY4LCAweEQ2LCAweDEwLCAweEM4LCAweDRELCAweDY4LCAweENFLCAweEE3LCAweDg2LCAweEZDLCAweDQ1LCAweEMxLCAweDFFLAorICAgIDB4NEUsIDB4NTYsIDB4NjEsIDB4MUUsIDB4RTgsIDB4MkMsIDB4Q0EsIDB4MEQsIDB4NTEsIDB4RDIsIDB4MkMsIDB4QzMsIDB4N0UsIDB4Q0YsIDB4QjMsIDB4OTYsCisgICAgMHgxQiwgMHhFQSwgMHhENiwgMHgwQiwgMHgyRCwgMHg4NiwgMHhERCwgMHg4QywgMHhBQSwgMHhBRiwgMHgxQiwgMHg0QywgMHg0QSwgMHhBNywgMHhBMSwgMHg1MywKKyAgICAweDVGLCAweDhELCAweEI2LCAweDBBLCAweDNGLCAweDVDLCAweEE4LCAweDIzLCAweDMzLCAweENCLCAweDkyLCAweEVBLCAweDFBLCAweEVGLCAweEJELCAweDJGLAorICAgIDB4ODksIDB4QTEsIDB4NUMsIDB4NzMsIDB4M0QsIDB4REUsIDB4NTEsIDB4NjQsIDB4QzUsIDB4NTIsIDB4QTcsIDB4OTIsIDB4QkMsIDB4MUQsIDB4Q0EsIDB4QkEsCisgICAgMHhDOCwgMHhGQywgMHgyQywgMHgxQSwgMHg2OSwgMHg0NCwgMHg3MSwgMHhGRSwgMHhBQiwgMHgyQSwgMHgyRSwgMHhCQiwgMHgwMiwgMHg5MiwgMHhFRCwgMHg5MCwKKyAgICAweDAxLCAweEJDLCAweDQ0LCAweDdGLCAweDZGLCAweDc2LCAweDFFLCAweDMwLCAweERDLCAweDRELCAweDNELCAweEJDLCAweDAxLCAweEQxLCAweDFFLCAweEU1LAorICAgIDB4NzEsIDB4MEUsIDB4QTYsIDB4N0QsIDB4RTEsIDB4RDUsIDB4QTYsIDB4MDgsIDB4QTYsIDB4NjYsIDB4OUYsIDB4MEYsIDB4QUMsIDB4MTEsIDB4OTYsIDB4NjYsCisgICAgMHgxMywgMHgwMywgMHg5RiwgMHg0QywgMHgwRSwgMHg4QSwgMHgyQSwgMHg0QywgMHgzOSwgMHhGMCwgMHhDNiwgMHg4RSwgMHg0MSwgMHg5QiwgMHgyMywgMHhERCwKKyAgICAweERCLCAweDdCLCAweDk0LCAweDcxLCAweDZDLCAweDc4LCAweDFCLCAweEE2LCAweEMxLCAweEE4LCAweDlCLCAweEE1LCAweDg2LCAweDBFLCAweDAyLCAweDk3LAorICAgIDB4NzIsIDB4MkYsIDB4RTgsIDB4RTAsIDB4MDEsIDB4NjQsIDB4MzksIDB4OEMsIDB4NkMsIDB4NEYsIDB4NjQsIDB4MjQsIDB4MzQsIDB4ODEsIDB4MzMsIDB4NkQsCisgICAgMHhDNiwgMHg1NiwgMHg2MCwgMHgyMywgMHg4QywgMHhCMSwgMHhBMywgMHgxMSwgMHg5NCwgMHgzNywgMHhFRiwgMHhFNCwgMHgzRSwgMHg0RCwgMHhBRiwgMHg2MSwKKyAgICAweDJDLCAweEY4LCAweDg2LCAweDAzLCAweEZCLCAweDI1LCAweEEzLCAweDBGLCAweEZBLCAweDA0LCAweDNGLCAweDcyLCAweDEwLCAweEYxLCAweEU2LCAweDcxLAorICAgIDB4MTMsIDB4OEEsIDB4RDcsIDB4RDMsIDB4MDQsIDB4OTIsIDB4NDYsIDB4NEEsIDB4MzEsIDB4QUIsIDB4NUEsIDB4MUQsIDB4MTYsIDB4NjgsIDB4NzcsIDB4MjYsCisgICAgMHg5QywgMHgyOCwgMHg4NiwgMHgyNywgMHhEOSwgMHg2MCwgMHhDQSwgMHg3NCwgMHg0MSwgMHg5MCwgMHhCNiwgMHgwQywgMHg5MSwgMHhCMSwgMHgxRSwgMHg4MiwKKyAgICAweEQ5LCAweDgxLCAweDYzLCAweDAwLCAweDJBLCAweEEwLCAweDA3LCAweDc0LCAweDYyLCAweDNCLCAweEJELCAweDVCLCAweDlDLCAweEEwLCAweDZFLCAweEUwLAorICAgIDB4NTUsIDB4OUIsIDB4MEEsIDB4NjAsIDB4ODQsIDB4OTIsIDB4N0UsIDB4QjEsIDB4RjEsIDB4RkMsIDB4MzYsIDB4OTcsIDB4RjgsIDB4OTIsIDB4QUYsIDB4M0IsCisgICAgMHhEMSwgMHgyQSwgMHhCRiwgMHg0RSwgMHhGRCwgMHg2OCwgMHhDMiwgMHhGNSwgMHg4OSwgMHhFRCwgMHhFOCwgMHg0QSwgMHg0NCwgMHhBMCwgMHg2NiwgMHg1MCwKKyAgICAweERGLCAweDRGLCAweDZCLCAweDlELCAweDFDLCAweDk4LCAweEE0LCAweEY0LCAweDIyLCAweDlGLCAweDUxLCAweDE3LCAweDQ2LCAweDRGLCAweEZDLCAweDA3LAorICAgIDB4QUQsIDB4RTYsIDB4MjQsIDB4RjksIDB4NUYsIDB4OUYsIDB4NTYsIDB4NDksIDB4NkEsIDB4MTUsIDB4MzksIDB4Q0EsIDB4NjgsIDB4OTgsIDB4QUYsIDB4RjEsCisgICAgMHgzRiwgMHhGQiwgMHg2MCwgMHgzNiwgMHhEQywgMHhCNywgMHhENCwgMHgyNywgMHgxRiwgMHg5OCwgMHhERCwgMHg2QiwgMHgyMSwgMHg3MiwgMHgxQywgMHg0RiwKKyAgICAweDRDLCAweDkzLCAweEM0LCAweDAxLCAweEE0LCAweDlDLCAweEI3LCAweDAyLCAweEMzLCAweEZFLCAweENBLCAweEMwLCAweDhELCAweEQ1LCAweEJBLCAweDA5LAorICAgIDB4QjksIDB4QUYsIDB4MUMsIDB4QjAsIDB4MDgsIDB4MDksIDB4MzYsIDB4NzAsIDB4OTEsIDB4MDgsIDB4RjUsIDB4MUIsIDB4MTQsIDB4RTksIDB4ODEsIDB4QjEsCisgICAgMHhEMSwgMHhBMCwgMHg5NCwgMHg0QywgMHg3MywgMHg0NiwgMHhCQiwgMHg3QywgMHhGQSwgMHhCOSwgMHhFNywgMHgzMSwgMHg5NCwgMHhGRCwgMHhDRSwgMHg5NywKKyAgICAweERCLCAweDUyLCAweDMyLCAweDExLCAweDcyLCAweEQ3LCAweDFDLCAweERFLCAweDk3LCAweEJFLCAweDE5LCAweEQ5LCAweENCLCAweENDLCAweEVGLCAweDBGLAorICAgIDB4MkMsIDB4OTAsIDB4RUEsIDB4RUQsIDB4MUYsIDB4MDcsIDB4MTAsIDB4RDQsIDB4NEUsIDB4REYsIDB4M0YsIDB4OTIsIDB4MjksIDB4NTcsIDB4MjIsIDB4N0EsCisgICAgMHgxOCwgMHhCMCwgMHhFMSwgMHhERSwgMHg3NiwgMHg2MSwgMHhGMywgMHhCQSwgMHg4NCwgMHhENCwgMHg3RCwgMHg5QywgMHg5MiwgMHg3QiwgMHgwQiwgMHhDMiwKKyAgICAweDdGLCAweDZBLCAweEY1LCAweDVFLCAweDc3LCAweEQ2LCAweEJCLCAweEY1LCAweDIzLCAweDFELCAweENFLCAweDUyLCAweEZBLCAweDIxLCAweDMzLCAweEQxLAorICAgIDB4MzMsIDB4MzgsIDB4NjUsIDB4MzQsIDB4Q0UsIDB4OEMsIDB4MjUsIDB4OUQsIDB4RjQsIDB4OTUsIDB4RjEsIDB4NzEsIDB4MTcsIDB4RTYsIDB4MDgsIDB4OTYsCisgICAgMHhFQSwgMHg1NCwgMHhBMSwgMHhBMSwgMHhFQiwgMHhGRCwgMHg5MCwgMHhBRSwgMHg2MywgMHg0MiwgMHhDMCwgMHg4QiwgMHg1NywgMHhENCwgMHg2NCwgMHhERiwKKyAgICAweEI5LCAweEYxLCAweEIyLCAweDhBLCAweEFELCAweDQyLCAweDY0LCAweDk5LCAweEY0LCAweDNFLCAweDcyLCAweERCLCAweEUxLCAweDE4LCAweEYyLCAweDI4LAorICAgIDB4MEEsIDB4REQsIDB4QjksIDB4OEQsIDB4NjYsIDB4QzIsIDB4QjEsIDB4MDIsIDB4REMsIDB4QUIsIDB4MzEsIDB4MkUsIDB4NDIsIDB4QzgsIDB4N0EsIDB4QzAsCisgICAgMHhEMiwgMHg4MiwgMHg3QiwgMHgyRSwgMHhCQSwgMHgyNSwgMHgwNywgMHg1MSwgMHhCNiwgMHhDMiwgMHhEQywgMHg3NSwgMHg4NCwgMHg1QiwgMHhCNSwgMHg0MywKKyAgICAweDM2LCAweDM3LCAweDI2LCAweDhCLCAweDg5LCAweDc3LCAweDUwLCAweEMzLCAweDQ5LCAweEMwLCAweEExLCAweDQxLCAweERDLCAweEFBLCAweDg0LCAweDMyLAorICAgIDB4NEUsIDB4NzcsIDB4RTUsIDB4QzMsIDB4RjIsIDB4MkUsIDB4RDgsIDB4QTAsIDB4MjksIDB4NjQsIDB4QUEsIDB4NEEsIDB4NDMsIDB4OTAsIDB4QkEsIDB4QjEsCisgICAgMHg4NCwgMHhGQiwgMHg5RCwgMHg0MCwgMHg4MiwgMHg5NywgMHgwMSwgMHhGRSwgMHgyMiwgMHg0MCwgMHg1NCwgMHgwNiwgMHg2OCwgMHg5QSwgMHg5RSwgMHhCNiwKKyAgICAweDI5LCAweDIxLCAweEZCLCAweDlGLCAweEQ0LCAweDNBLCAweDIzLCAweERDLCAweEFDLCAweEI2LCAweDdGLCAweDE5LCAweEM4LCAweDAxLCAweDEyLCAweDQwLAorICAgIDB4REIsIDB4RkIsIDB4QTEsIDB4OTMsIDB4QUQsIDB4RDIsIDB4MDMsIDB4RkEsIDB4QjMsIDB4QTEsIDB4NDcsIDB4NDksIDB4OEUsIDB4OEUsIDB4QTIsIDB4RjgsCisgICAgMHhEQSwgMHhCOCwgMHhEQSwgMHhGOCwgMHg1NSwgMHgyRSwgMHg4RCwgMHg5MSwgMHg4RSwgMHg4QywgMHgwMywgMHgxQywgMHg2RCwgMHg5RiwgMHgwOSwgMHg0MSwKKyAgICAweDRCLCAweDBBLCAweDIwLCAweERGLCAweDZDLCAweDFFLCAweDA3LCAweDMzLCAweDM5LCAweERDLCAweEZFLCAweDRGLCAweEQxLCAweEM5LCAweEZFLCAweEMxLAorICAgIDB4NDQsIDB4MzgsIDB4OTUsIDB4ODgsIDB4RTYsIDB4QUEsIDB4MjAsIDB4NDMsIDB4M0EsIDB4MjMsIDB4QkIsIDB4MDUsIDB4NDcsIDB4MzQsIDB4MjYsIDB4MTksCisgICAgMHhEMCwgMHg5RiwgMHg3QiwgMHgzRiwgMHg2RCwgMHgxMCwgMHgzNiwgMHhCRCwgMHhDMSwgMHg5NiwgMHg0QiwgMHhCMiwgMHgyQiwgMHgyNSwgMHgzNiwgMHhEMywKKyAgICAweDc5LCAweDc0LCAweDFELCAweERELCAweDg4LCAweDhELCAweDA1LCAweDRBLCAweEYxLCAweEE2LCAweEM2LCAweDYyLCAweEU3LCAweDI4LCAweDA2LCAweEQ3LAorICAgIDB4MzQsIDB4NzMsIDB4MkYsIDB4QjgsIDB4REUsIDB4M0MsIDB4QjMsIDB4QUEsIDB4NjksIDB4QkQsIDB4REEsIDB4MUEsIDB4MzAsIDB4RTgsIDB4NTksIDB4NDQsCisgICAgMHg4MSwgMHhDQiwgMHhDRiwgMHhBQSwgMHhFMCwgMHhEMCwgMHgxQiwgMHg3QywgMHhDNiwgMHgwRSwgMHhENywgMHgyNCwgMHgxMiwgMHhBOSwgMHg4NiwgMHhCNywKKyAgICAweEMzLCAweDczLCAweEE0LCAweDg3LCAweDM1LCAweEM1LCAweDZELCAweDQ0LCAweDQxLCAweDMwLCAweEMwLCAweDUzLCAweEYzLCAweDE1LCAweDEyLCAweDEyLAorICAgIDB4RUEsIDB4QTAsIDB4NTAsIDB4OTUsIDB4QTQsIDB4OEEsIDB4QzMsIDB4NEIsIDB4QjEsIDB4QzEsIDB4QTgsIDB4QjYsIDB4MjAsIDB4NjMsIDB4MDAsIDB4OEIsCisgICAgMHg3NywgMHgyOSwgMHgzMCwgMHg1MSwgMHg2MCwgMHg4NywgMHg3QywgMHgwRSwgMHg4MCwgMHgzQywgMHg3QSwgMHhCMywgMHg1NiwgMHg4MiwgMHg5OSwgMHhFQywKKyAgICAweEEyLCAweDlELCAweDg3LCAweEUwLCAweDhBLCAweDdCLCAweEY5LCAweDg4LCAweDc0LCAweEVGLCAweEU2LCAweDk1LCAweEM0LCAweDU4LCAweEZELCAweDg1LAorICAgIDB4QUYsIDB4QkQsIDB4MTYsIDB4RkQsIDB4QUQsIDB4NUQsIDB4NUYsIDB4RkIsIDB4RTcsIDB4Q0MsIDB4RDAsIDB4NTAsIDB4NTksIDB4ODAsIDB4MkIsIDB4MTIsCisgICAgMHgyRiwgMHhCMiwgMHgyRSwgMHhDMCwgMHhFQiwgMHg2QywgMHhGOSwgMHhFOSwgMHg5NSwgMHhBNywgMHg3RSwgMHhENSwgMHhCRCwgMHgwNywgMHg2OCwgMHhGQiwKKyAgICAweDA5LCAweEYzLCAweEY5LCAweDZGLCAweEYyLCAweEUxLCAweDQwLCAweDc4LCAweDlELCAweEQxLCAweEE0LCAweDg1LCAweEZGLCAweDhGLCAweDJFLCAweDg1LAorICAgIDB4ODcsIDB4RjIsIDB4QUEsIDB4NzcsIDB4RDgsIDB4RkMsIDB4RjksIDB4OTYsIDB4NzQsIDB4QjAsIDB4QjQsIDB4MUUsIDB4M0MsIDB4MkMsIDB4MTcsIDB4NjMsCisgICAgMHgzQiwgMHgwMywgMHhGMCwgMHhGMCwgMHhDOSwgMHgyOSwgMHg1NywgMHgxMSwgMHg4MSwgMHhGOCwgMHgxQiwgMHg2OCwgMHgwMywgMHg0MCwgMHg1MywgMHgwQywKKyAgICAweDc1LCAweDRDLCAweDkzLCAweDZELCAweEM0LCAweDVELCAweDQwLCAweEQwLCAweDkxLCAweEFDLCAweEExLCAweDZFLCAweDVGLCAweERELCAweDBGLCAweDUxLAorICAgIDB4QjgsIDB4NzcsIDB4MkQsIDB4MEUsIDB4NzEsIDB4NDUsIDB4NTMsIDB4MkEsIDB4MTAsIDB4ODMsIDB4NEEsIDB4RkEsIDB4MUIsIDB4RTcsIDB4NTEsIDB4OEUsCisgICAgMHhFMCwgMHhERiwgMHg1NCwgMHhCRiwgMHhCRiwgMHhBOCwgMHg2RSwgMHhDMiwgMHhBOSwgMHgxNSwgMHgxRCwgMHgxNSwgMHgxNSwgMHgyMSwgMHg5QSwgMHg5RiwKKyAgICAweDcyLCAweDAwLCAweDBDLCAweEIzLCAweEQ2LCAweEY2LCAweEY2LCAweDI1LCAweDczLCAweEU2LCAweDI3LCAweEZELCAweDI0LCAweEY0LCAweDA2LCAweDYzLAorICAgIDB4MjEsIDB4NDAsIDB4MEYsIDB4MzgsIDB4MjQsIDB4REMsIDB4NzgsIDB4N0EsIDB4NUEsIDB4NjAsIDB4NTAsIDB4QTYsIDB4QUQsIDB4MUQsIDB4MDIsIDB4MjcsCisgICAgMHg2MCwgMHhDNSwgMHgyQiwgMHgxMSwgMHg2QiwgMHhEMywgMHg0NCwgMHg1MiwgMHgyNSwgMHhBQywgMHg5MCwgMHg4QywgMHg4RSwgMHhCRCwgMHg3NywgMHhDNywKKyAgICAweEI3LCAweDE0LCAweDhELCAweERCLCAweEY0LCAweEJELCAweEQwLCAweEVELCAweDRGLCAweDc2LCAweEZFLCAweDBDLCAweDVFLCAweDgxLCAweDYzLCAweDQ5LAorICAgIDB4REQsIDB4MjcsIDB4NzksIDB4RDMsIDB4RUYsIDB4MTIsIDB4NjQsIDB4RDUsIDB4ODQsIDB4OTksIDB4QTQsIDB4MTYsIDB4MjUsIDB4QzYsIDB4RTIsIDB4QUMsCisgICAgMHhENSwgMHhDNCwgMHg4QywgMHhCQSwgMHg0MiwgMHgxMiwgMHgyMSwgMHg5NiwgMHg1MywgMHhGRiwgMHhDMiwgMHhDQiwgMHgxMiwgMHg5OCwgMHhFQiwgMHhFQywKKyAgICAweDBFLCAweDcyLCAweEUzLCAweDRBLCAweDE1LCAweDVGLCAweDYxLCAweEFGLCAweEE0LCAweDYwLCAweDQzLCAweDNGLCAweDc5LCAweDE3LCAweEM2LCAweENGLAorICAgIDB4OUIsIDB4NDgsIDB4NEMsIDB4NDksIDB4NzQsIDB4QzYsIDB4NjQsIDB4OTIsIDB4NkMsIDB4NDEsIDB4RDQsIDB4QkIsIDB4QjksIDB4OUQsIDB4MTcsIDB4QTEsCisgICAgMHg2OCwgMHhGMSwgMHg2RSwgMHhENSwgMHg1RSwgMHhENiwgMHhEOSwgMHhGNiwgMHhEQSwgMHhEOCwgMHgzNiwgMHhDMSwgMHgzRSwgMHhDMiwgMHhGMiwgMHg4NSwKKyAgICAweEJDLCAweDlCLCAweDA1LCAweEUwLCAweEQ1LCAweDE1LCAweENGLCAweDAwLCAweEJDLCAweEQxLCAweDFGLCAweENFLCAweDUwLCAweDQ3LCAweDM3LCAweEZFLAorICAgIDB4NTcsIDB4N0EsIDB4Q0IsIDB4MUMsIDB4MkUsIDB4MzYsIDB4NzksIDB4QzQsIDB4REMsIDB4MUMsIDB4MTEsIDB4ODQsIDB4REYsIDB4RDAsIDB4RjIsIDB4N0EsCisgICAgMHgwMiwgMHhERCwgMHgzNywgMHg1RSwgMHhEMCwgMHg0QSwgMHgxMSwgMHgwRCwgMHg1OSwgMHg4RiwgMHhERCwgMHhFQiwgMHhGNiwgMHgxRCwgMHhFNiwgMHgwRCwKKyAgICAweDU4LCAweDE4LCAweDdELCAweEQ0LCAweDRELCAweDNELCAweDFCLCAweEQ1LCAweDEzLCAweEIxLCAweEQ0LCAweEJCLCAweDUwLCAweDU2LCAweDI5LCAweEIxLAorICAgIDB4NzgsIDB4Q0EsIDB4QzksIDB4QzMsIDB4QTQsIDB4MTAsIDB4NjcsIDB4RkEsIDB4NDgsIDB4MTMsIDB4MTIsIDB4QUIsIDB4QjUsIDB4REEsIDB4NDUsIDB4NzIsCisgICAgMHg2QSwgMHg0MSwgMHgxMSwgMHg2QiwgMHhBOSwgMHhCRiwgMHg5MywgMHhGQSwgMHg0NywgMHg2RCwgMHg0NiwgMHhFNCwgMHhBRSwgMHg1OCwgMHhFRCwgMHg1RCwKKyAgICAweEYzLCAweDM4LCAweDU3LCAweEVELCAweDQ5LCAweEI3LCAweDZBLCAweDE1LCAweEM5LCAweEJBLCAweDA1LCAweEYyLCAweEE1LCAweDlELCAweEMwLCAweDBBLAorICAgIDB4MzEsIDB4MDIsIDB4QzQsIDB4NzAsIDB4MzMsIDB4NEUsIDB4NUQsIDB4MjksIDB4MDIsIDB4NUIsIDB4OTksIDB4RUYsIDB4MkEsIDB4MUIsIDB4RDYsIDB4OTAsCisgICAgMHhBOSwgMHhGMSwgMHg5QSwgMHg1MiwgMHgwOSwgMHhENCwgMHhGRCwgMHhGNywgMHg1RiwgMHg1MCwgMHhBMSwgMHg3OCwgMHhENSwgMHhBMCwgMHg2OSwgMHhCRSwKKyAgICAweEQ3LCAweDYxLCAweDVFLCAweDk3LCAweDE2LCAweDMzLCAweEJELCAweDI1LCAweDJCLCAweDlGLCAweDI1LCAweDQ5LCAweDZDLCAweDlCLCAweDVCLCAweEI3LAorICAgIDB4OEEsIDB4OUYsIDB4NTQsIDB4NDYsIDB4MkMsIDB4M0YsIDB4QzksIDB4RkEsIDB4QjgsIDB4RDAsIDB4QTMsIDB4MzUsIDB4QkIsIDB4RjEsIDB4N0QsIDB4NEEsCisgICAgMHg3NCwgMHhFQywgMHg2RiwgMHhEMywgMHgxNCwgMHhCMywgMHg1RSwgMHg5MiwgMHhGQiwgMHhGMiwgMHhFOCwgMHg0MSwgMHgwQSwgMHhEMiwgMHgzMywgMHhGMCwKKyAgICAweDczLCAweDVCLCAweDM2LCAweDlBLCAweDcwLCAweDk3LCAweDZFLCAweDYwLCAweDU0LCAweEZELCAweDI3LCAweDc5LCAweEMwLCAweDRCLCAweDFDLCAweDg2LAorICAgIDB4MjIsIDB4QUEsIDB4QTAsIDB4MTQsIDB4OUQsIDB4RjYsIDB4NzksIDB4M0EsIDB4QzMsIDB4NUMsIDB4QzQsIDB4QUMsIDB4QjIsIDB4QkMsIDB4NEQsIDB4Q0MsCisgICAgMHhEQywgMHhFMCwgMHg0OCwgMHhCNywgMHg4RSwgMHhCRCwgMHg0OSwgMHgwOCwgMHgxNSwgMHhCMiwgMHhBNywgMHgwNSwgMHhGOSwgMHgxNSwgMHgxOCwgMHg3OSwKKyAgICAweEYxLCAweDVGLCAweEVBLCAweEI4LCAweDUzLCAweDVCLCAweEEyLCAweEQ4LCAweDdFLCAweEE3LCAweDBBLCAweDI4LCAweDFCLCAweDBFLCAweDIxLCAweDEwLAorICAgIDB4MDIsIDB4QjksIDB4QUEsIDB4NjIsIDB4MUUsIDB4MTcsIDB4MTIsIDB4MzEsIDB4OEEsIDB4NjAsIDB4NzAsIDB4OTAsIDB4NjYsIDB4RkYsIDB4ODMsIDB4M0YsCisgICAgMHgzOSwgMHg5NywgMHg3NSwgMHhFMywgMHg4RCwgMHg1MSwgMHhBOCwgMHgwQSwgMHhBNCwgMHg5QywgMHgxRiwgMHg3MywgMHg5MSwgMHg4RiwgMHg4QSwgMHg5RCwKKyAgICAweDE3LCAweDdDLCAweDQzLCAweDMzLCAweDFDLCAweEU4LCAweDI5LCAweDczLCAweEEyLCAweDNELCAweDJDLCAweDQzLCAweDA3LCAweDlCLCAweDZELCAweEIyLAorICAgIDB4N0YsIDB4NEUsIDB4MTYsIDB4NkQsIDB4OTQsIDB4NUQsIDB4M0YsIDB4QzQsIDB4MEUsIDB4RUYsIDB4RUIsIDB4MEYsIDB4NzEsIDB4MDQsIDB4MkYsIDB4OTksCisgICAgMHhDRCwgMHg1MCwgMHg4MSwgMHgyMywgMHgyQSwgMHg5QywgMHhCMCwgMHg3NCwgMHg2MywgMHg5NCwgMHg4RSwgMHg0MSwgMHgyOSwgMHg5MywgMHgyQiwgMHgyMCwKKyAgICAweDhCLCAweEM4LCAweDc1LCAweDM0LCAweEVCLCAweDExLCAweDRDLCAweDRGLCAweERBLCAweDFBLCAweDhCLCAweEU1LCAweDg3LCAweEE2LCAweEIwLCAweDU3LAorICAgIDB4RTIsIDB4M0YsIDB4NTgsIDB4NjgsIDB4QTMsIDB4QzAsIDB4MkUsIDB4NDgsIDB4OTIsIDB4NEIsIDB4OUEsIDB4RTEsIDB4RkQsIDB4RjMsIDB4MjIsIDB4NjYsCisgICAgMHg4QiwgMHhGNiwgMHhDQSwgMHgxMCwgMHhCQSwgMHg4MywgMHgwQywgMHg1MCwgMHg2OCwgMHg3MywgMHhEMCwgMHgyMSwgMHgwNiwgMHgyRSwgMHhBRCwgMHg2OCwKKyAgICAweDJGLCAweDExLCAweDFFLCAweDMxLCAweDM4LCAweDhELCAweENGLCAweDNFLCAweEQ3LCAweDY4LCAweDA4LCAweEUzLCAweEQyLCAweDQ3LCAweDdCLCAweDcxLAorICAgIDB4NjgsIDB4RjYsIDB4NEYsIDB4MTEsIDB4MzYsIDB4OTcsIDB4RDksIDB4MkEsIDB4Q0YsIDB4ODcsIDB4MEEsIDB4Q0IsIDB4NUUsIDB4RTcsIDB4MUMsIDB4MUIsCisgICAgMHgwMiwgMHg3RiwgMHg1OCwgMHg0RiwgMHgxNiwgMHgzRSwgMHg1RSwgMHgyOCwgMHg5RSwgMHhCNCwgMHgzQiwgMHgyMCwgMHg1QywgMHg5QiwgMHg2RCwgMHgyNSwKKyAgICAweDRCLCAweDcyLCAweEUxLCAweEE1LCAweDM4LCAweEMxLCAweDdGLCAweDY5LCAweDBBLCAweDYwLCAweDQyLCAweEFCLCAweDI0LCAweDg2LCAweDA5LCAweEFBLAorICAgIDB4NUQsIDB4OUUsIDB4NjUsIDB4RjgsIDB4QzcsIDB4NkEsIDB4Q0QsIDB4MzEsIDB4MTQsIDB4QkMsIDB4QzAsIDB4NDUsIDB4ODAsIDB4NjgsIDB4MDksIDB4QTIsCisgICAgMHg3NywgMHhENiwgMHg0QiwgMHg5NSwgMHhENCwgMHhGNCwgMHg1OCwgMHhGMCwgMHhBQiwgMHgyRiwgMHg3OSwgMHg3NywgMHg1OSwgMHg3NCwgMHgzOCwgMHhENSwKKyAgICAweDY5LCAweEI4LCAweDc3LCAweDMyLCAweDkyLCAweDJBLCAweDQ5LCAweDk2LCAweEJFLCAweDQwLCAweDMxLCAweDRGLCAweEM1LCAweENELCAweDlCLCAweEExLAorICAgIDB4RDYsIDB4QjksIDB4Q0UsIDB4RjYsIDB4NEIsIDB4MDEsIDB4ODcsIDB4RTEsIDB4MEUsIDB4NTUsIDB4NDAsIDB4MTMsIDB4RTUsIDB4NDIsIDB4MDEsIDB4QzgsCisgICAgMHg3OCwgMHg5MCwgMHg2RiwgMHhBOSwgMHg1QiwgMHg2NSwgMHg3OSwgMHhBMCwgMHg4NCwgMHg4NSwgMHgzQiwgMHg0MiwgMHg3MywgMHgyRCwgMHg3QywgMHhCQSwKKyAgICAweDJCLCAweDdGLCAweDE5LCAweEVCLCAweDhELCAweDlELCAweDgyLCAweEE2LCAweEU1LCAweDEwLCAweDBBLCAweDVBLCAweEFCLCAweEExLCAweDFCLCAweEQ4LAorICAgIDB4ODcsIDB4QUIsIDB4QzUsIDB4NzAsIDB4NzgsIDB4QzEsIDB4QkMsIDB4RjYsIDB4NUMsIDB4RkMsIDB4NjAsIDB4NjksIDB4NUEsIDB4RDcsIDB4RTEsIDB4MjAsCisgICAgMHg1MCwgMHhDQiwgMHhERCwgMHg1NSwgMHgxRSwgMHg4MCwgMHgxRiwgMHgwQSwgMHg5NywgMHg2NSwgMHg4NiwgMHgwMiwgMHhENCwgMHg2QywgMHgyRSwgMHgwOCwKKyAgICAweEI4LCAweEIwLCAweDI2LCAweDc4LCAweEI5LCAweEIzLCAweDZELCAweDU3LCAweDlFLCAweDIxLCAweDM3LCAweDAxLCAweERCLCAweEVGLCAweDQ5LCAweDRELAorICAgIDB4NjYsIDB4RTAsIDB4N0MsIDB4Q0IsIDB4Q0MsIDB4RDksIDB4QUMsIDB4RUUsIDB4RjIsIDB4Q0UsIDB4QTUsIDB4OEUsIDB4MTUsIDB4NEYsIDB4MUMsIDB4ODMsCisgICAgMHgzQywgMHhDOCwgMHhEMCwgMHg4OCwgMHg3RSwgMHg2NiwgMHhDRSwgMHhBOSwgMHhCQSwgMHgzMiwgMHg5NywgMHgxNSwgMHg1RiwgMHg4QiwgMHhCQywgMHg5RSwKKyAgICAweDFDLCAweDE0LCAweDU1LCAweDlBLCAweEJDLCAweDRFLCAweDRBLCAweDZCLCAweEIwLCAweEUwLCAweEYwLCAweERCLCAweDNBLCAweDY0LCAweDE0LCAweDc1LAorICAgIDB4QUMsIDB4MTQsIDB4MzYsIDB4RTgsIDB4NkEsIDB4QjAsIDB4M0QsIDB4N0UsIDB4RDksIDB4QjQsIDB4MkIsIDB4MUYsIDB4RTksIDB4NTAsIDB4QjEsIDB4N0MsCisgICAgMHgxOCwgMHgwNSwgMHhBNiwgMHhFMiwgMHg0NCwgMHhGMywgMHhDRSwgMHhFNiwgMHg0QywgMHgyMSwgMHg5RSwgMHg2OSwgMHhBQSwgMHgyMiwgMHg3RSwgMHhFMiwKKyAgICAweDM1LCAweDc2LCAweDNBLCAweEFFLCAweDZFLCAweDRFLCAweDcyLCAweDI1LCAweEI1LCAweDRELCAweEE0LCAweEY3LCAweDQ3LCAweDgyLCAweDlDLCAweEQ1LAorICAgIDB4QTAsIDB4MDgsIDB4NTMsIDB4MTcsIDB4NzQsIDB4QjUsIDB4QjQsIDB4QTIsIDB4NkYsIDB4MTAsIDB4NDAsIDB4NjIsIDB4NDcsIDB4QjksIDB4Q0UsIDB4MDAsCisgICAgMHhDOCwgMHg2OCwgMHg5NCwgMHg5RiwgMHhENiwgMHg3QywgMHgwRCwgMHhENSwgMHhCNywgMHg4QSwgMHgxMywgMHhERSwgMHg4QywgMHg1QiwgMHgwQiwgMHgzMywKKyAgICAweEI3LCAweDE1LCAweEQ1LCAweDQzLCAweEFFLCAweEMwLCAweDg3LCAweDBBLCAweDEzLCAweEYzLCAweEI1LCAweDFDLCAweDAwLCAweEM3LCAweEE0LCAweDM2LAorICAgIDB4MDUsIDB4RTQsIDB4RkYsIDB4RTIsIDB4MTgsIDB4NkUsIDB4RjUsIDB4RjksIDB4MEQsIDB4REUsIDB4REEsIDB4NEQsIDB4QzYsIDB4MUIsIDB4MEQsIDB4ODksCisgICAgMHhENywgMHhENSwgMHg1RSwgMHg4NCwgMHhEQSwgMHhDMiwgMHhBRiwgMHg0MiwgMHgyRCwgMHg4OSwgMHhEMywgMHg2OSwgMHgzOCwgMHgyNSwgMHhEQiwgMHhFMCwKKyAgICAweEMzLCAweDE3LCAweENGLCAweDNBLCAweEIxLCAweDhGLCAweDYwLCAweDc0LCAweEM0LCAweDNDLCAweDIwLCAweDFCLCAweEUzLCAweDBDLCAweDkxLCAweDkzLAorICAgIDB4REMsIDB4Q0IsIDB4MzksIDB4NDUsIDB4MEUsIDB4QjMsIDB4NzgsIDB4NTIsIDB4QkYsIDB4NkEsIDB4NzksIDB4MTAsIDB4OTMsIDB4NjcsIDB4MjUsIDB4ODcsCisgICAgMHhENywgMHhBNiwgMHg1NSwgMHhFQiwgMHhDMCwgMHhFMiwgMHgwNCwgMHg0MywgMHhGOSwgMHgyNSwgMHgzQiwgMHgxMCwgMHg5NSwgMHhFRiwgMHhENSwgMHgzNCwKKyAgICAweEIwLCAweEE2LCAweDY3LCAweDI0LCAweDI2LCAweDk0LCAweDcxLCAweDRDLCAweEE1LCAweDdGLCAweDRFLCAweEFDLCAweEE3LCAweDU4LCAweDg5LCAweEExLAorICAgIDB4NDcsIDB4NDcsIDB4NzYsIDB4MTcsIDB4QzAsIDB4NzksIDB4MjEsIDB4RkUsIDB4NTMsIDB4QjgsIDB4NTUsIDB4QzMsIDB4NzMsIDB4RjcsIDB4MDcsIDB4NEMsCisgICAgMHg3NiwgMHhFRSwgMHg0NSwgMHg5MiwgMHg3MiwgMHg3NSwgMHgwNywgMHhBRSwgMHgxOCwgMHg0NCwgMHhDMCwgMHg5NiwgMHgyMCwgMHg5RiwgMHhFNiwgMHg1NCwKKyAgICAweDA0LCAweEVFLCAweDE2LCAweEJBLCAweDRCLCAweDI5LCAweEE5LCAweDI3LCAweDM1LCAweEJFLCAweDU4LCAweEE2LCAweDMyLCAweDAwLCAweEVFLCAweDdDLAorICAgIDB4OEQsIDB4M0YsIDB4NEQsIDB4QjIsIDB4MUQsIDB4QjIsIDB4MEMsIDB4NkQsIDB4QzksIDB4RkUsIDB4MjYsIDB4OTIsIDB4Q0YsIDB4NTAsIDB4RDgsIDB4MEYsCisgICAgMHgyNywgMHgwMCwgMHhEQSwgMHg0QSwgMHhCNiwgMHhENSwgMHhENywgMHgwMywgMHg4RSwgMHgwOSwgMHhDQSwgMHg5RCwgMHhBOCwgMHhDMCwgMHg5NSwgMHg2RCwKKyAgICAweDdFLCAweEM4LCAweDM2LCAweDQzLCAweDlDLCAweDQxLCAweDMwLCAweDkyLCAweEM2LCAweDk3LCAweDBELCAweDZDLCAweDg3LCAweDlGLCAweEJDLCAweDQxLAorICAgIDB4NzIsIDB4ODMsIDB4NkYsIDB4N0UsIDB4Q0EsIDB4MjksIDB4OUIsIDB4OUIsIDB4NDMsIDB4N0YsIDB4MUEsIDB4MUIsIDB4RTMsIDB4RUYsIDB4NDgsIDB4M0IsCisgICAgMHgyMiwgMHgzRiwgMHgxOCwgMHhEQSwgMHgzQiwgMHhFNiwgMHhFMCwgMHgxMCwgMHhDQSwgMHhENCwgMHgwRSwgMHhBRiwgMHg1NiwgMHhENCwgMHgxNywgMHgyMCwKKyAgICAweEQ4LCAweDgwLCAweEI3LCAweENGLCAweEIxLCAweEU1LCAweDNCLCAweEU4LCAweDlBLCAweDVGLCAweEQwLCAweDE2LCAweDQ0LCAweEVFLCAweDNBLCAweDhCLAorICAgIDB4QjMsIDB4MjMsIDB4NzUsIDB4MUYsIDB4QkQsIDB4REYsIDB4RTEsIDB4RjAsIDB4RkQsIDB4QjksIDB4RUIsIDB4MjEsIDB4NDksIDB4MTYsIDB4MDAsIDB4RUUsCisgICAgMHhGRCwgMHg4NywgMHg0NSwgMHg5NywgMHg0NSwgMHg2OCwgMHhEQSwgMHg1NywgMHgwMSwgMHg2MCwgMHgzMywgMHgxQSwgMHgwMSwgMHg0MywgMHhCMiwgMHgxQywKKyAgICAweEI3LCAweEE2LCAweENELCAweDY3LCAweEZELCAweDM4LCAweDAwLCAweDQ0LCAweDA0LCAweEZELCAweEE0LCAweDM1LCAweDYzLCAweDU4LCAweDc5LCAweDQ3LAorICAgIDB4NkEsIDB4MUIsIDB4NkYsIDB4NjUsIDB4N0EsIDB4NDksIDB4MkUsIDB4QTQsIDB4Q0UsIDB4RUUsIDB4NDQsIDB4NzgsIDB4QTcsIDB4Q0IsIDB4MEMsIDB4RjEsCisgICAgMHg5RSwgMHg4QiwgMHgzRSwgMHhDOCwgMHg0RSwgMHhEQSwgMHg0RiwgMHg5MCwgMHhGNiwgMHhBNiwgMHgzOCwgMHgxQywgMHgxNCwgMHg2NCwgMHgyMSwgMHgxNiwKKyAgICAweDdDLCAweDA5LCAweEFBLCAweDUyLCAweDAzLCAweEM3LCAweEJFLCAweDYyLCAweDlFLCAweEJELCAweEM2LCAweDNGLCAweDZBLCAweDBBLCAweDc5LCAweDI0LAorICAgIDB4RkQsIDB4MDAsIDB4REYsIDB4Q0IsIDB4OUUsIDB4QzksIDB4OEQsIDB4NTYsIDB4QzYsIDB4NTgsIDB4ODEsIDB4NzgsIDB4Q0QsIDB4QTYsIDB4MzYsIDB4NjMsCisgICAgMHhFNCwgMHg3OCwgMHgyRiwgMHhDOCwgMHhBRiwgMHg2RSwgMHhENSwgMHhCNCwgMHhERCwgMHgzMSwgMHhFNCwgMHg4NCwgMHgzMywgMHg0RSwgMHg2RiwgMHg0RCwKKyAgICAweEUxLCAweEQyLCAweDg3LCAweDJBLCAweEUzLCAweEJBLCAweDExLCAweEJDLCAweDBBLCAweDRFLCAweDI4LCAweEM5LCAweDhCLCAweDUwLCAweDZFLCAweENGLAorICAgIDB4NTUsIDB4MDYsIDB4NjMsIDB4ODksIDB4NkIsIDB4NDUsIDB4ODMsIDB4MzYsIDB4MDgsIDB4QTIsIDB4NjcsIDB4NjEsIDB4QkIsIDB4NzIsIDB4MkYsIDB4RDEsCisgICAgMHhBNCwgMHg0NSwgMHhENywgMHgxQywgMHgxQSwgMHg3NiwgMHg0NywgMHg0MywgMHhFRCwgMHg3MiwgMHhBNywgMHg2OCwgMHgyRiwgMHhFQSwgMHhDQiwgMHgwNCwKKyAgICAweEQwLCAweDcwLCAweDAwLCAweEU5LCAweEI1LCAweENBLCAweEYwLCAweDQ3LCAweDVFLCAweDVDLCAweDI4LCAweDVFLCAweDAzLCAweDg4LCAweEI0LCAweEQ2LAorICAgIDB4NTIsIDB4NkEsIDB4RkUsIDB4RkYsIDB4ODgsIDB4OUMsIDB4MkIsIDB4MzIsIDB4RDEsIDB4M0QsIDB4OUUsIDB4NEYsIDB4RDMsIDB4RDQsIDB4QTcsIDB4RTEsCisgICAgMHhCNiwgMHhCOSwgMHg4OSwgMHhFNywgMHhFMiwgMHhGNywgMHhCQywgMHg1NywgMHhENywgMHhDNCwgMHgyMCwgMHhGQiwgMHg5MSwgMHhDMCwgMHg4NywgMHg1RSwKKyAgICAweEM0LCAweDRGLCAweEI3LCAweDBCLCAweEQ0LCAweDM0LCAweDMwLCAweEFDLCAweDAyLCAweDFGLCAweEM3LCAweDdBLCAweEJFLCAweDY0LCAweDI1LCAweDM0LAorICAgIDB4OTIsIDB4MTIsIDB4MjIsIDB4NjYsIDB4QjUsIDB4ODEsIDB4N0YsIDB4NkUsIDB4ODksIDB4QTYsIDB4NDksIDB4MDcsIDB4RkEsIDB4QTYsIDB4MTQsIDB4ODAsCisgICAgMHg3QSwgMHg1RCwgMHg0RCwgMHgwNiwgMHg5RCwgMHg1NywgMHgxNywgMHg4MiwgMHgxQiwgMHg3MCwgMHhCRSwgMHhGQSwgMHg1MCwgMHgxQSwgMHg1RSwgMHg3QiwKKyAgICAweDQ4LCAweDExLCAweEY4LCAweDJGLCAweEZELCAweEMwLCAweEU0LCAweDc1LCAweDU3LCAweENELCAweDgxLCAweDU3LCAweERBLCAweDg0LCAweDFBLCAweDkyLAorICAgIDB4MTgsIDB4NDAsIDB4OEEsIDB4QzMsIDB4NjYsIDB4Q0MsIDB4RTAsIDB4OTMsIDB4OEEsIDB4MTksIDB4MzAsIDB4MkYsIDB4RDUsIDB4OUEsIDB4QUQsIDB4MjQsCisgICAgMHg4QSwgMHgzOSwgMHgwMywgMHg0NSwgMHhDRiwgMHg4RSwgMHhGOSwgMHg4QywgMHg4RCwgMHhFMSwgMHgyOSwgMHgyRCwgMHhERCwgMHhCNiwgMHhBMCwgMHgzMywKKyAgICAweENELCAweDc1LCAweDk5LCAweDI3LCAweEJBLCAweDIwLCAweDEwLCAweDZDLCAweEVFLCAweEM1LCAweEZFLCAweERCLCAweDg2LCAweDUzLCAweEQ2LCAweENFLAorICAgIDB4NDgsIDB4MjQsIDB4RUYsIDB4QjMsIDB4MjcsIDB4OTksIDB4RkMsIDB4NTEsIDB4MjUsIDB4NTIsIDB4NzYsIDB4NkYsIDB4Q0QsIDB4NzUsIDB4NjgsIDB4N0UsCisgICAgMHhEMiwgMHhDOCwgMHhCNywgMHg4MiwgMHg1NSwgMHg1RCwgMHgyRiwgMHgzMCwgMHhEMCwgMHhCRiwgMHgwQywgMHhDNiwgMHhENiwgMHhBQiwgMHhDOCwgMHgzQSwKKyAgICAweDQ4LCAweDc2LCAweDI2LCAweDI0LCAweDA4LCAweEJGLCAweDQ0LCAweEEyLCAweDI3LCAweEM4LCAweDNGLCAweEU3LCAweEQ4LCAweEJCLCAweEQ1LCAweEVELAorICAgIDB4NUQsIDB4RTQsIDB4RkUsIDB4OTQsIDB4OUYsIDB4RTAsIDB4MTMsIDB4RkMsIDB4MUIsIDB4QjgsIDB4MEQsIDB4RUQsIDB4NjgsIDB4MzMsIDB4RTUsIDB4MzgsCisgICAgMHhGQywgMHg3QywgMHgwNSwgMHhCMSwgMHg3NCwgMHhFQSwgMHg4RSwgMHhBMiwgMHgyRiwgMHg1MywgMHg1QiwgMHg5RCwgMHhEMywgMHg1MywgMHg1NSwgMHgxOCwKKyAgICAweDAxLCAweDRDLCAweEZFLCAweDg0LCAweDAwLCAweEY3LCAweDY2LCAweDExLCAweDRFLCAweEVGLCAweDQ1LCAweEYxLCAweEFFLCAweENGLCAweDZCLCAweDVDLAorICAgIDB4NDAsIDB4NzYsIDB4OEIsIDB4RTMsIDB4RTAsIDB4M0YsIDB4MTAsIDB4MTQsIDB4MDcsIDB4MjIsIDB4OUMsIDB4QkQsIDB4RTAsIDB4RkYsIDB4NTYsIDB4MkYsCisgICAgMHg2MiwgMHhFQSwgMHg1MCwgMHg1MCwgMHhGNiwgMHg3MywgMHhBOSwgMHgyRCwgMHgzRCwgMHhFRCwgMHgyQiwgMHgxQSwgMHgxMCwgMHhCOCwgMHhBQywgMHgwNywKKyAgICAweDY5LCAweEIwLCAweDdELCAweDQyLCAweDlBLCAweDU4LCAweDE4LCAweEE5LCAweDg3LCAweDA0LCAweDYzLCAweEUwLCAweDY0LCAweDgxLCAweDlCLCAweDE3LAorICAgIDB4QjEsIDB4NDIsIDB4MzYsIDB4MDAsIDB4QTEsIDB4QTksIDB4MUMsIDB4OUYsIDB4MDMsIDB4QzIsIDB4NkUsIDB4QjgsIDB4NDAsIDB4QzQsIDB4QjEsIDB4NDAsCisgICAgMHhEQiwgMHg0NSwgMHhEMywgMHg0NywgMHhCNiwgMHgxQSwgMHg1NSwgMHhCMCwgMHg5MSwgMHg2QiwgMHhBRSwgMHhFNCwgMHg4QywgMHg3NSwgMHg5RiwgMHg2QSwKKyAgICAweDFGLCAweEZBLCAweEQyLCAweDRCLCAweDdCLCAweDM0LCAweEUzLCAweEFDLCAweDc3LCAweDY2LCAweDFFLCAweDg4LCAweDJBLCAweDg5LCAweDJFLCAweDE5LAorICAgIDB4RjMsIDB4MjEsIDB4QzUsIDB4RUEsIDB4MDksIDB4OTksIDB4QjIsIDB4MzAsIDB4OUYsIDB4QTUsIDB4NkIsIDB4NzUsIDB4RjAsIDB4RTgsIDB4Q0IsIDB4OUYsCisgICAgMHhCMCwgMHgzRSwgMHgxNywgMHg1OSwgMHgxMCwgMHhERCwgMHgwQiwgMHhBNywgMHg5NywgMHhCNCwgMHg3RSwgMHg2OCwgMHgyNiwgMHg0NiwgMHhFOCwgMHhBNCwKKyAgICAweDg4LCAweDRCLCAweDBDLCAweEU4LCAweDVGLCAweDRBLCAweDJGLCAweDY3LCAweEZFLCAweDcwLCAweDMzLCAweEE0LCAweDU1LCAweDM1LCAweEMzLCAweDg1LAorICAgIDB4MjAsIDB4QkMsIDB4MTIsIDB4MTgsIDB4ODUsIDB4NkIsIDB4OEQsIDB4NTMsIDB4NzAsIDB4MUYsIDB4RjMsIDB4OEUsIDB4MUEsIDB4NTYsIDB4NkYsIDB4MkUsCisgICAgMHhBRCwgMHhDOSwgMHg2NywgMHgwMCwgMHgyOCwgMHgxMSwgMHg3MiwgMHgyRCwgMHhBRiwgMHg4RCwgMHg0NSwgMHhDMywgMHg4NiwgMHhDNywgMHhFOSwgMHhBOCwKKyAgICAweEMwLCAweEJCLCAweDI2LCAweDk3LCAweEQ1LCAweEU0LCAweEI3LCAweENGLCAweDU3LCAweDAxLCAweDAwLCAweDFFLCAweEJGLCAweDExLCAweEUyLCAweEU0LAorICAgIDB4MUUsIDB4NEQsIDB4QjYsIDB4NTIsIDB4QzYsIDB4NjksIDB4REUsIDB4QTAsIDB4M0EsIDB4RDYsIDB4OTcsIDB4MzgsIDB4NjMsIDB4MzksIDB4NjAsIDB4MTcsCisgICAgMHhBQywgMHhENiwgMHhFRCwgMHhGQiwgMHgxMCwgMHhBOSwgMHhFMCwgMHg1RSwgMHg2RCwgMHg0MywgMHhDMiwgMHgyNCwgMHhBOCwgMHhBQywgMHhCOCwgMHhDNSwKKyAgICAweEUxLCAweEY1LCAweEJELCAweDRCLCAweDg5LCAweDQ3LCAweDUwLCAweDlGLCAweDAyLCAweEI0LCAweDQwLCAweEIxLCAweEZBLCAweENELCAweDQ4LCAweDUyLAorICAgIDB4NjgsIDB4RTUsIDB4MjUsIDB4RTAsIDB4NzQsIDB4QTIsIDB4NjQsIDB4QzQsIDB4N0IsIDB4RTUsIDB4RjEsIDB4NjEsIDB4MjEsIDB4QTYsIDB4MzksIDB4NDIsCisgICAgMHgyNiwgMHhDMSwgMHg4NywgMHgxRiwgMHg2RiwgMHgzRCwgMHg2OCwgMHg5NiwgMHhDNCwgMHg3NCwgMHhDRCwgMHg1RSwgMHhFRSwgMHg0MywgMHg2RiwgMHg5OSwKKyAgICAweDkxLCAweDFELCAweDMwLCAweDk3LCAweEJBLCAweDdFLCAweEE1LCAweEE2LCAweDA4LCAweDNCLCAweDhELCAweDQwLCAweDYxLCAweEFGLCAweDFCLCAweEEyLAorICAgIDB4MzcsIDB4NjMsIDB4NDgsIDB4RDEsIDB4NzAsIDB4RjYsIDB4RkMsIDB4NkEsIDB4REYsIDB4MDksIDB4ODIsIDB4NEUsIDB4MDAsIDB4RDYsIDB4QUEsIDB4MzEsCisgICAgMHg3NiwgMHg5OCwgMHgyNCwgMHg3OCwgMHhFMywgMHgxOCwgMHg5MSwgMHhGNiwgMHg4OCwgMHgzRSwgMHhBOCwgMHg1NCwgMHhBMSwgMHgzRiwgMHhBRCwgMHhFMSwKKyAgICAweDY3LCAweENFLCAweDNFLCAweDlFLCAweDgyLCAweDYyLCAweDk5LCAweDE4LCAweEY4LCAweDQwLCAweDYwLCAweDIyLCAweDkyLCAweDU1LCAweEY2LCAweEExLAorICAgIDB4NkQsIDB4ODAsIDB4NjksIDB4QjksIDB4NzcsIDB4NDAsIDB4QkEsIDB4QUMsIDB4M0MsIDB4MzEsIDB4MzIsIDB4QUEsIDB4RTgsIDB4MDksIDB4MjYsIDB4NjQsCisgICAgMHgyQiwgMHhFNywgMHg2RCwgMHgxOSwgMHgzMSwgMHhGMywgMHg4OCwgMHhGRiwgMHg0NSwgMHhGMiwgMHhBOSwgMHhENywgMHhCRiwgMHhEQSwgMHg1MCwgMHgzMywKKyAgICAweEQ3LCAweDgzLCAweDU1LCAweDA4LCAweENBLCAweEZFLCAweEY2LCAweDNCLCAweDJBLCAweDVBLCAweEM0LCAweEJELCAweDI2LCAweDM1LCAweEY1LCAweDlELAorICAgIDB4RTgsIDB4QTgsIDB4RkUsIDB4OUMsIDB4NDMsIDB4MEYsIDB4MkMsIDB4RkQsIDB4MzMsIDB4ODEsIDB4MDgsIDB4MTEsIDB4NEQsIDB4RTYsIDB4NUIsIDB4QjEsCisgICAgMHg5NiwgMHhFNywgMHgzQSwgMHg4MywgMHhDQiwgMHhFRiwgMHgxOCwgMHhERSwgMHhGOCwgMHg1QiwgMHgwOSwgMHg0RCwgMHg2MSwgMHgzRCwgMHhCNSwgMHhCNywKKyAgICAweEU0LCAweEM5LCAweDczLCAweEZFLCAweDVDLCAweEQzLCAweDU3LCAweDRGLCAweDQ2LCAweDZGLCAweDQyLCAweDU2LCAweDg1LCAweEMxLCAweDRBLCAweDhBLAorICAgIDB4RDgsIDB4NjEsIDB4QTMsIDB4MTUsIDB4NDksIDB4NjYsIDB4QTYsIDB4MUMsIDB4QzAsIDB4MUYsIDB4QjcsIDB4QTksIDB4ODgsIDB4MDYsIDB4QTQsIDB4MkYsCisgICAgMHhFNCwgMHg5QSwgMHhDQywgMHgzOCwgMHhFMCwgMHg5MCwgMHg2NCwgMHhCNiwgMHgwRiwgMHhFNSwgMHhBRSwgMHhCNSwgMHg4NywgMHg2NCwgMHgxQywgMHg0MiwKKyAgICAweDVDLCAweDExLCAweDAxLCAweEI1LCAweEMyLCAweDkwLCAweDNELCAweEFCLCAweDI2LCAweDRCLCAweDJBLCAweDY3LCAweDlGLCAweDVCLCAweDVCLCAweEUzLAorICAgIDB4MjEsIDB4QTAsIDB4QjksIDB4N0QsIDB4NjQsIDB4RDMsIDB4RjgsIDB4QjMsIDB4NzcsIDB4OTEsIDB4MkQsIDB4MzQsIDB4NzgsIDB4OEUsIDB4QjgsIDB4MUQsCisgICAgMHgzMCwgMHg0QiwgMHhFMSwgMHgzMSwgMHhGRSwgMHgzRCwgMHhFNiwgMHhBQiwgMHhEQSwgMHhBNiwgMHhCNCwgMHhERiwgMHhCMCwgMHg2NywgMHgyNSwgMHg1NywKKyAgICAweDRBLCAweDMwLCAweDhGLCAweDg2LCAweDU4LCAweDEzLCAweEU2LCAweEVBLCAweEVFLCAweDkxLCAweDg2LCAweEQyLCAweDBELCAweENELCAweDE5LCAweERDLAorICAgIDB4MjYsIDB4MTgsIDB4ODYsIDB4NTIsIDB4RDIsIDB4NzcsIDB4NzksIDB4MzEsIDB4REEsIDB4RjksIDB4OUEsIDB4Q0EsIDB4N0IsIDB4QkUsIDB4RjYsIDB4OTYsCisgICAgMHg2MSwgMHhBRSwgMHgzMiwgMHhDOCwgMHg2OCwgMHgxNywgMHhGRiwgMHhCOCwgMHhGNCwgMHhGNSwgMHhFNSwgMHhBNCwgMHgyMCwgMHhDOSwgMHg0NCwgMHg4QSwKKyAgICAweEQ2LCAweDhELCAweEIwLCAweDBELCAweDNELCAweDJCLCAweDQ3LCAweDRCLCAweEE1LCAweDQ5LCAweDM3LCAweDExLCAweDE4LCAweDJDLCAweDk0LCAweDM3LAorICAgIDB4RUIsIDB4N0QsIDB4RDYsIDB4NDksIDB4NTksIDB4RkQsIDB4NzUsIDB4QzcsIDB4NkMsIDB4MTEsIDB4ODMsIDB4QkQsIDB4OTIsIDB4RjQsIDB4QTAsIDB4RkQsCisgICAgMHg1RCwgMHgyRCwgMHgyNCwgMHg0MiwgMHg4RCwgMHgzRSwgMHg5NiwgMHhEQSwgMHg0QiwgMHhDRCwgMHg4NSwgMHhEQSwgMHhGNCwgMHgxMSwgMHgyNywgMHgwRiwKKyAgICAweDVCLCAweEUxLCAweEI0LCAweDYyLCAweDUxLCAweEM2LCAweDA0LCAweDIyLCAweENELCAweDhELCAweDNELCAweDI2LCAweDU5LCAweEM5LCAweEYzLCAweEJGLAorICAgIDB4QkQsIDB4MDcsIDB4RUIsIDB4M0QsIDB4REQsIDB4NDEsIDB4M0EsIDB4QUUsIDB4MzUsIDB4QjYsIDB4OUMsIDB4NzYsIDB4RTYsIDB4RTksIDB4NUUsIDB4OTgsCisgICAgMHhGNiwgMHg5RiwgMHg5QiwgMHg2RCwgMHg5QSwgMHgwRiwgMHhGMywgMHhBMiwgMHg1RSwgMHhEMCwgMHgzNywgMHgwRiwgMHhBNywgMHhCOSwgMHhDMSwgMHhDMiwKKyAgICAweEZGLCAweDI2LCAweDU5LCAweDUxLCAweEM2LCAweDI3LCAweDE1LCAweDI1LCAweEZELCAweDhFLCAweEEwLCAweEFBLCAweDcyLCAweEQ0LCAweEE4LCAweDEzLAorICAgIDB4NjEsIDB4RTAsIDB4NEMsIDB4RDAsIDB4RDIsIDB4Q0EsIDB4QTgsIDB4ODUsIDB4OTgsIDB4OTUsIDB4MjYsIDB4NjgsIDB4N0EsIDB4MUQsIDB4QkMsIDB4NkQsCisgICAgMHg4NywgMHhGOCwgMHg4QywgMHhFQywgMHgzMSwgMHhBNywgMHg4RSwgMHg5OCwgMHgxQywgMHhFQywgMHg1MSwgMHhDQSwgMHhGNywgMHgzOCwgMHg1QSwgMHgwMywKKyAgICAweEYxLCAweDdCLCAweDg0LCAweDlELCAweDk2LCAweDc1LCAweDMwLCAweDk2LCAweDkyLCAweERELCAweDRGLCAweENELCAweEQ4LCAweDAwLCAweEEwLCAweEFCLAorICAgIDB4N0IsIDB4NTIsIDB4NDIsIDB4MkYsIDB4MEEsIDB4OUYsIDB4MjgsIDB4MTgsIDB4MTIsIDB4RDcsIDB4NDcsIDB4RjUsIDB4ODMsIDB4QjQsIDB4MjcsIDB4QTYsCisgICAgMHg1RCwgMHg4QywgMHhCMSwgMHhENywgMHhDMiwgMHhCNSwgMHgzRiwgMHhDQywgMHgzMSwgMHhDQSwgMHg3QywgMHhCNSwgMHhCNSwgMHgzNywgMHhBQSwgMHhDQiwKKyAgICAweEE1LCAweDhBLCAweDJELCAweDIxLCAweDcyLCAweDI0LCAweENFLCAweEQ2LCAweDA1LCAweERBLCAweDMyLCAweDJBLCAweEE5LCAweDkyLCAweDU3LCAweDA3LAorICAgIDB4MjQsIDB4N0MsIDB4NTMsIDB4OTIsIDB4QkEsIDB4NEEsIDB4M0QsIDB4RjgsIDB4QTksIDB4Q0IsIDB4RUMsIDB4N0EsIDB4MzQsIDB4NEEsIDB4RkQsIDB4MkUsCisgICAgMHgzRCwgMHgyMiwgMHhBMSwgMHg4QiwgMHhDNCwgMHg4QiwgMHgzOSwgMHg4RiwgMHgxMSwgMHg4RSwgMHg3NSwgMHg4NSwgMHhCMywgMHgxQywgMHhCMywgMHgyRSwKKyAgICAweDVCLCAweEY2LCAweEY3LCAweDAzLCAweDg4LCAweDExLCAweDE0LCAweDdBLCAweDQyLCAweERBLCAweDI1LCAweDBDLCAweEFELCAweDg4LCAweEU3LCAweEM5LAorICAgIDB4RTYsIDB4OTAsIDB4NjUsIDB4MTMsIDB4MkIsIDB4NDAsIDB4MjAsIDB4QzMsIDB4MDMsIDB4Q0MsIDB4MzgsIDB4NzEsIDB4NUMsIDB4MzIsIDB4NTQsIDB4RkUsCisgICAgMHg0MiwgMHgyQSwgMHhDOCwgMHg0RCwgMHhEQiwgMHg0RiwgMHgwRiwgMHg5RCwgMHg1MywgMHhFQSwgMHhCRSwgMHhBOCwgMHg4NCwgMHg4NywgMHg2MywgMHg4RiwKKyAgICAweEM3LCAweEM1LCAweEM3LCAweEQ5LCAweDQxLCAweERGLCAweDUzLCAweDcyLCAweDUwLCAweDYxLCAweDlBLCAweDgxLCAweDZCLCAweDcwLCAweDZGLCAweEU0LAorICAgIDB4OTgsIDB4QkIsIDB4NDYsIDB4RUYsIDB4MjQsIDB4QTYsIDB4QTAsIDB4Q0IsIDB4NDksIDB4MDUsIDB4MTMsIDB4QTYsIDB4QzIsIDB4MUYsIDB4MkQsIDB4MUEsCisgICAgMHgyQiwgMHhCRCwgMHhBOSwgMHg5NywgMHhCNCwgMHhFQywgMHg2QywgMHgwQywgMHgxQywgMHhBMSwgMHg5RSwgMHhEQiwgMHg1RSwgMHg1NSwgMHg5NSwgMHhFMCwKKyAgICAweEUxLCAweEM1LCAweDRFLCAweDk3LCAweDg5LCAweDY5LCAweERBLCAweEI2LCAweDVDLCAweEFBLCAweEYyLCAweDk2LCAweDI4LCAweDdBLCAweENCLCAweEE5LAorICAgIDB4Q0UsIDB4NDYsIDB4NUUsIDB4MDcsIDB4RkUsIDB4NzMsIDB4NEYsIDB4MkMsIDB4NDYsIDB4QUYsIDB4RkIsIDB4MkYsIDB4QzUsIDB4RDEsIDB4QjYsIDB4QjIsCisgICAgMHg4NSwgMHg2NSwgMHgxQywgMHg3RiwgMHg3MiwgMHhCQywgMHhGOSwgMHg1MSwgMHgxQiwgMHgwMiwgMHhBRSwgMHg2QSwgMHg0NiwgMHhCNSwgMHgzOSwgMHgxQSwKKyAgICAweDhELCAweDM0LCAweDg0LCAweDQwLCAweEU1LCAweDFCLCAweDkxLCAweDExLCAweEU5LCAweDQyLCAweDQ0LCAweDU2LCAweDY0LCAweDAxLCAweEY1LCAweEMwLAorICAgIDB4N0QsIDB4NjQsIDB4MzcsIDB4NzIsIDB4QTQsIDB4N0EsIDB4RTUsIDB4RDYsIDB4MTksIDB4QTYsIDB4REIsIDB4NzgsIDB4MjMsIDB4NDcsIDB4NjgsIDB4RTUsCisgICAgMHg4RCwgMHg3RCwgMHg4QywgMHhFNSwgMHg2MywgMHhGMywgMHgzRSwgMHgwNywgMHhFRSwgMHg0RSwgMHg4RCwgMHhGMSwgMHg1NiwgMHgzNywgMHhBNCwgMHgyNywKKyAgICAweERDLCAweDY3LCAweDQ1LCAweDg0LCAweDQxLCAweDg5LCAweEQyLCAweDc3LCAweDY3LCAweDNDLCAweDc2LCAweDI3LCAweDZCLCAweDhCLCAweEQyLCAweDY1LAorICAgIDB4NkEsIDB4NjUsIDB4MkIsIDB4QjEsIDB4QTYsIDB4NzMsIDB4M0YsIDB4RDIsIDB4QzYsIDB4NzgsIDB4NUQsIDB4RjksIDB4REEsIDB4QkQsIDB4OEIsIDB4OUYsCisgICAgMHhDMCwgMHg1QiwgMHhGMiwgMHhGNCwgMHhBNiwgMHg0NiwgMHhGNCwgMHg1QSwgMHhDRCwgMHhEQywgMHg0MCwgMHgwRSwgMHg0OCwgMHgyOCwgMHhBMiwgMHg5OCwKKyAgICAweDg3LCAweEU3LCAweDRGLCAweDQ2LCAweEQ0LCAweDZFLCAweEZCLCAweDZGLCAweDExLCAweEM1LCAweDg1LCAweENGLCAweERGLCAweEE5LCAweEJCLCAweEUxLAorICAgIDB4NjEsIDB4ODAsIDB4NDEsIDB4RkMsIDB4NjksIDB4OEYsIDB4RDcsIDB4REQsIDB4RDksIDB4OEIsIDB4NjMsIDB4RTIsIDB4NjAsIDB4MUEsIDB4MEEsIDB4RkYsCisgICAgMHg1NiwgMHg4NSwgMHg2QywgMHg0QywgMHgwRCwgMHgxOSwgMHg5RSwgMHhFMSwgMHhDQiwgMHhGMywgMHhFQiwgMHg5QywgMHhCRiwgMHgxMSwgMHg0QSwgMHgwQiwKKyAgICAweDIzLCAweEZELCAweDg4LCAweDkzLCAweDFBLCAweDhCLCAweEEyLCAweDY4LCAweEQyLCAweDA3LCAweDkwLCAweDExLCAweEM2LCAweDNELCAweEVGLCAweDJDLAorICAgIDB4M0MsIDB4MDIsIDB4NDEsIDB4MUYsIDB4NDEsIDB4OTMsIDB4MkIsIDB4ODMsIDB4QUIsIDB4MkQsIDB4MzUsIDB4QTQsIDB4NkUsIDB4RDcsIDB4MzYsIDB4NTEsCisgICAgMHgwOSwgMHg3QywgMHgyMywgMHg0RiwgMHhBRCwgMHhGOCwgMHgzOCwgMHhGMCwgMHgxRCwgMHg5OCwgMHgyRSwgMHhFQSwgMHgyMCwgMHhBRiwgMHgxMCwgMHg5QiwKKyAgICAweDAzLCAweDk2LCAweEUwLCAweDY4LCAweENCLCAweDAxLCAweEMyLCAweEFGLCAweDRCLCAweDcwLCAweEIwLCAweDZGLCAweEI2LCAweEJDLCAweDcxLCAweEE4LAorICAgIDB4NTcsIDB4MzIsIDB4MjYsIDB4OTgsIDB4MjMsIDB4QUQsIDB4QzYsIDB4MDcsIDB4RTgsIDB4REYsIDB4QjYsIDB4QzgsIDB4ODMsIDB4RjYsIDB4MTcsIDB4RkQsCisgICAgMHg0QywgMHhEQSwgMHhCNywgMHgxRCwgMHhBNCwgMHg5MiwgMHhDRSwgMHhBRCwgMHg0QiwgMHhCOCwgMHhEMiwgMHhCQiwgMHhDNCwgMHgyRSwgMHg5QywgMHhFMywKKyAgICAweDQwLCAweDMxLCAweEYxLCAweEY4LCAweDFBLCAweEM3LCAweDU1LCAweDk5LCAweDA4LCAweEFFLCAweEZGLCAweEQxLCAweDM5LCAweDc0LCAweDRGLCAweDg3LAorICAgIDB4NkEsIDB4MjYsIDB4QkMsIDB4MzYsIDB4NUQsIDB4MkMsIDB4MjUsIDB4NTMsIDB4MEIsIDB4MTgsIDB4MTUsIDB4N0YsIDB4QTMsIDB4MkEsIDB4NDUsIDB4QzQsCisgICAgMHg5QSwgMHhFMiwgMHhFRiwgMHhEQywgMHhEQywgMHhGMSwgMHg5RCwgMHhFOSwgMHg1RSwgMHhEOSwgMHhENSwgMHg1NCwgMHg4OSwgMHg2RCwgMHg1QSwgMHhDRSwKKyAgICAweDhELCAweDIyLCAweDE2LCAweEYxLCAweEQ3LCAweDM2LCAweEI5LCAweDlBLCAweEIwLCAweEY0LCAweENELCAweEVGLCAweEU2LCAweDBDLCAweDNBLCAweDVELAorICAgIDB4MDksIDB4MjIsIDB4RjYsIDB4NDUsIDB4RDcsIDB4MDIsIDB4NTUsIDB4MDEsIDB4MDIsIDB4N0EsIDB4NEYsIDB4QkIsIDB4MjIsIDB4NkEsIDB4ODcsIDB4NjYsCisgICAgMHg2MiwgMHhEMCwgMHgxRCwgMHg1NCwgMHg3MiwgMHhCMiwgMHhEOCwgMHgwQSwgMHg3RSwgMHg2MCwgMHhDMSwgMHgxRCwgMHg2OCwgMHhFQSwgMHhGQiwgMHg2QSwKKyAgICAweEUzLCAweDVGLCAweDk3LCAweEM1LCAweEZELCAweEVCLCAweDA4LCAweDJDLCAweDUwLCAweDk2LCAweEI4LCAweEMxLCAweDlELCAweDVFLCAweDFFLCAweDNFLAorICAgIDB4NDYsIDB4QTYsIDB4NDksIDB4NTcsIDB4QzgsIDB4QkQsIDB4QjEsIDB4RDYsIDB4RDUsIDB4MjEsIDB4MkEsIDB4MDMsIDB4ODQsIDB4NjUsIDB4MjQsIDB4MTEsCisgICAgMHhCMCwgMHhGMCwgMHgwRiwgMHhGNCwgMHgwNCwgMHg1MiwgMHg0MywgMHhCQSwgMHhFQSwgMHg5MywgMHhCQSwgMHg5RiwgMHgzNCwgMHgyNiwgMHgxRiwgMHhENywKKyAgICAweDFGLCAweDdCLCAweEMwLCAweDMwLCAweDAxLCAweDY5LCAweDY4LCAweDlCLCAweDIxLCAweDEzLCAweEE1LCAweEQ0LCAweDg3LCAweDMwLCAweERDLCAweEVCLAorICAgIDB4MzUsIDB4MzksIDB4NzYsIDB4MzUsIDB4QjksIDB4RTMsIDB4REYsIDB4Q0QsIDB4QjUsIDB4RTUsIDB4ODksIDB4RUEsIDB4NTQsIDB4MUYsIDB4M0UsIDB4REIsCisgICAgMHg5MCwgMHhDRiwgMHg1QywgMHg0QSwgMHg5NiwgMHg5NywgMHgzMiwgMHgzRiwgMHg2RiwgMHhCNCwgMHhFNSwgMHgyOCwgMHhERiwgMHhFNCwgMHhDQSwgMHhCMSwKKyAgICAweDFCLCAweDc4LCAweDY1LCAweDJDLCAweDk5LCAweDNELCAweDc3LCAweDMyLCAweDVGLCAweDZDLCAweDZELCAweEQzLCAweDUzLCAweDY3LCAweDE1LCAweDM5LAorICAgIDB4RkQsIDB4RTEsIDB4MkEsIDB4QjAsIDB4NDgsIDB4MjQsIDB4NEQsIDB4MzYsIDB4NEQsIDB4OTAsIDB4OUYsIDB4RjMsIDB4MUQsIDB4NEYsIDB4OUQsIDB4M0IsCisgICAgMHhCRSwgMHg2NCwgMHhGRSwgMHhGMCwgMHhGMiwgMHhBRSwgMHgzMSwgMHhCMiwgMHhCRSwgMHgzNSwgMHg4RSwgMHgzNCwgMHhENiwgMHg1NiwgMHhBQiwgMHhGMiwKKyAgICAweDQ1LCAweEM0LCAweDM3LCAweDY1LCAweEEwLCAweDA4LCAweDY2LCAweDVELCAweDlGLCAweDBELCAweDk2LCAweDBCLCAweDU4LCAweEMyLCAweDE4LCAweDAwLAorICAgIDB4NDMsIDB4QkEsIDB4QzQsIDB4RkUsIDB4RDMsIDB4NkMsIDB4OTYsIDB4NzgsIDB4QUUsIDB4MTAsIDB4MkQsIDB4ODYsIDB4NEQsIDB4OEYsIDB4ODcsIDB4NDQsCisgICAgMHhDRiwgMHg4RSwgMHgxRCwgMHgyMywgMHgwMCwgMHg4RCwgMHg4QSwgMHg5MSwgMHgyOCwgMHhERSwgMHgxMywgMHhGMSwgMHgyQiwgMHhCQywgMHg3NSwgMHgzMiwKKyAgICAweEIzLCAweDUwLCAweERCLCAweEQzLCAweDVBLCAweEE1LCAweDJBLCAweDI4LCAweDgyLCAweDcwLCAweDRCLCAweEY5LCAweDc3LCAweDcwLCAweEM1LCAweDVELAorICAgIDB4NEEsIDB4NTIsIDB4NDMsIDB4NEMsIDB4MUQsIDB4NkUsIDB4QjUsIDB4NkEsIDB4NDEsIDB4NjUsIDB4RkYsIDB4RjIsIDB4NjcsIDB4QzIsIDB4ODYsIDB4ODUsCisgICAgMHgwQywgMHg5NSwgMHgyNSwgMHhBQiwgMHg2MSwgMHgzRSwgMHg3OSwgMHgwQSwgMHgyRiwgMHgzRiwgMHhCQiwgMHg0QSwgMHhDNywgMHgzMywgMHhFRSwgMHgyRSwKKyAgICAweDA0LCAweEQ2LCAweDQ0LCAweENFLCAweDQwLCAweEI5LCAweEZBLCAweEY0LCAweDhBLCAweDdCLCAweEEyLCAweEUwLCAweDQzLCAweEZFLCAweDgwLCAweDg4LAorICAgIDB4QTUsIDB4QjEsIDB4NDcsIDB4NTEsIDB4RkYsIDB4NDgsIDB4RTQsIDB4MTMsIDB4QTEsIDB4NkQsIDB4NkQsIDB4MUUsIDB4NEYsIDB4MTQsIDB4NUMsIDB4MzIsCisgICAgMHgwNSwgMHg3MywgMHg0RSwgMHgxQiwgMHg5RSwgMHhCMiwgMHhFQiwgMHhGMSwgMHhDNywgMHg0MiwgMHg4NCwgMHgzQSwgMHhBQSwgMHhFMCwgMHg2RCwgMHhFQywKKyAgICAweDNFLCAweDc5LCAweDYwLCAweDAwLCAweDM2LCAweDAxLCAweDJGLCAweEJDLCAweEI3LCAweDgyLCAweDAzLCAweDZELCAweDI2LCAweDZGLCAweDI4LCAweDZFLAorICAgIDB4NEMsIDB4QjcsIDB4RDcsIDB4OTMsIDB4Q0IsIDB4RjIsIDB4RkMsIDB4NTgsIDB4MkIsIDB4M0YsIDB4NUEsIDB4MkYsIDB4ODgsIDB4MzYsIDB4Q0IsIDB4N0EsCisgICAgMHhFRiwgMHhGMiwgMHhDNiwgMHg2MywgMHhDMSwgMHg2MCwgMHgyMCwgMHg3MSwgMHgxRiwgMHhFNCwgMHhBNiwgMHg4QSwgMHgxNCwgMHgxNiwgMHg3RCwgMHg5RiwKKyAgICAweEQzLCAweDgzLCAweDhELCAweDBDLCAweDhELCAweEM0LCAweDhBLCAweDVELCAweDFGLCAweEUyLCAweDA1LCAweDA3LCAweEM3LCAweDFELCAweDJCLCAweDRGLAorICAgIDB4QUYsIDB4MjAsIDB4MzMsIDB4NjAsIDB4NDMsIDB4NkQsIDB4NjAsIDB4NUYsIDB4RUMsIDB4NTcsIDB4MkYsIDB4RjUsIDB4OEEsIDB4QzQsIDB4QzcsIDB4OEUsCisgICAgMHgyQiwgMHg2QiwgMHhFOCwgMHhGMCwgMHhBMiwgMHg0RSwgMHg2NiwgMHhCQSwgMHg1NSwgMHhFRiwgMHg2NywgMHg3OCwgMHgyMCwgMHg3MCwgMHgxRCwgMHg1NywKKyAgICAweDI1LCAweDFDLCAweEM4LCAweDBDLCAweDdGLCAweDFELCAweDg4LCAweDRELCAweDI4LCAweENFLCAweDkwLCAweERFLCAweEU1LCAweEJFLCAweDlCLCAweENDLAorICAgIDB4MjgsIDB4MzgsIDB4NTIsIDB4QTUsIDB4QjQsIDB4RTAsIDB4ODYsIDB4N0YsIDB4NzMsIDB4MjIsIDB4NzUsIDB4OUQsIDB4Q0EsIDB4MUYsIDB4Q0IsIDB4MzEsCisgICAgMHgzNSwgMHhDNywgMHg1NSwgMHhBNywgMHhEMiwgMHhDRCwgMHg1NiwgMHhDNywgMHgyMiwgMHhBNiwgMHhEMywgMHgzNywgMHgwMiwgMHgyRSwgMHhCRSwgMHgwOCwKKyAgICAweDAwLCAweDI2LCAweDlBLCAweDk5LCAweDYyLCAweDQ2LCAweDFCLCAweDI1LCAweEVELCAweDZBLCAweEQ1LCAweDYxLCAweDIwLCAweEI5LCAweERELCAweEY3LAorICAgIDB4QkUsIDB4REQsIDB4NjQsIDB4NUQsIDB4NjEsIDB4RTUsIDB4MkYsIDB4ODcsIDB4ODEsIDB4NDcsIDB4N0UsIDB4QzIsIDB4N0QsIDB4NDUsIDB4QjcsIDB4MkEsCisgICAgMHgwQywgMHhCMCwgMHgwQywgMHg1RiwgMHg0QywgMHg5MywgMHgwMiwgMHhFRSwgMHg5NiwgMHg1NSwgMHhBRiwgMHg3QywgMHgwNiwgMHhBOCwgMHg3NCwgMHg2NCwKKyAgICAweDYxLCAweDZBLCAweEExLCAweDQxLCAweDY5LCAweDU1LCAweDYzLCAweDE1LCAweDVCLCAweDUwLCAweEE5LCAweDhBLCAweEM1LCAweDAyLCAweDNFLCAweDVFLAorICAgIDB4RkYsIDB4NEQsIDB4RDcsIDB4RTQsIDB4RTAsIDB4ODgsIDB4RkUsIDB4QjUsIDB4NTMsIDB4NzIsIDB4QTAsIDB4NTIsIDB4Q0UsIDB4M0MsIDB4MjUsIDB4OTgsCisgICAgMHhGRiwgMHgwNSwgMHhGQywgMHhFNCwgMHgwQywgMHg1NywgMHhFNywgMHg0QywgMHhEMCwgMHhFQiwgMHgxQiwgMHg0QywgMHhFQywgMHg4OSwgMHhDRSwgMHg4OCwKKyAgICAweDE1LCAweDZBLCAweDlCLCAweDdCLCAweERELCAweDBDLCAweDUzLCAweDcyLCAweDBELCAweDBDLCAweEQyLCAweEUwLCAweDZFLCAweDIwLCAweEY1LCAweDMwLAorICAgIDB4Q0UsIDB4RDIsIDB4RjYsIDB4MTEsIDB4MEQsIDB4Q0MsIDB4ODUsIDB4NEMsIDB4OUEsIDB4RDMsIDB4QkYsIDB4RjIsIDB4MzksIDB4RkYsIDB4MjYsIDB4NEYsCisgICAgMHg0RCwgMHhBRSwgMHgyNSwgMHg0QSwgMHg3MiwgMHhEOSwgMHgyMiwgMHg4QiwgMHhFMSwgMHgwNywgMHhBOSwgMHhCRCwgMHg1MywgMHg0NSwgMHg3QywgMHhFQiwKKyAgICAweEZFLCAweDU2LCAweEFFLCAweDAxLCAweDdGLCAweDEyLCAweDRFLCAweDE4LCAweEU3LCAweDk2LCAweEIxLCAweDBFLCAweDlDLCAweDg5LCAweEE4LCAweEI0LAorICAgIDB4MUMsIDB4REEsIDB4M0UsIDB4RkUsIDB4OEMsIDB4MUMsIDB4RUYsIDB4QjQsIDB4NTAsIDB4RTUsIDB4NDYsIDB4MUIsIDB4NTYsIDB4Q0UsIDB4MDEsIDB4NTMsCisgICAgMHhCMiwgMHg2RCwgMHhCMCwgMHhEMCwgMHg4RSwgMHgwOCwgMHg4OSwgMHgyQSwgMHg1QiwgMHhDOCwgMHhGQywgMHg5QiwgMHg2QiwgMHg0QiwgMHg2RCwgMHhEQywKKyAgICAweDJFLCAweDJFLCAweDc0LCAweEFCLCAweEUxLCAweEFFLCAweEE2LCAweDc0LCAweDhGLCAweDMxLCAweDc0LCAweDVGLCAweDM0LCAweDQ1LCAweEU0LCAweDg4LAorICAgIDB4Q0UsIDB4NjYsIDB4MjQsIDB4RTksIDB4OTMsIDB4NjgsIDB4NzYsIDB4RDYsIDB4QjksIDB4MTAsIDB4QTksIDB4QkEsIDB4NkEsIDB4M0EsIDB4Q0QsIDB4QjgsCisgICAgMHg5NSwgMHg0NCwgMHg3RCwgMHg3NSwgMHgxMywgMHg2NCwgMHg3QiwgMHhEMiwgMHgyOSwgMHhCOSwgMHgzQSwgMHg3NSwgMHg5OCwgMHgyNiwgMHhGQywgMHgyQiwKKyAgICAweDQ2LCAweDhBLCAweEZELCAweDVDLCAweDJCLCAweEI1LCAweDZDLCAweDQ4LCAweDIwLCAweDVGLCAweEFBLCAweDA5LCAweEFELCAweEJBLCAweDdCLCAweEUzLAorICAgIDB4MTMsIDB4NTUsIDB4M0QsIDB4QkQsIDB4NDMsIDB4RUEsIDB4QzcsIDB4QTcsIDB4M0UsIDB4REQsIDB4RjMsIDB4RUIsIDB4QkIsIDB4N0QsIDB4RkUsIDB4MkEsCisgICAgMHg5QiwgMHhDNCwgMHhGQiwgMHg0NCwgMHgxRCwgMHhEMSwgMHg3MiwgMHgzMywgMHg4OCwgMHg2NSwgMHhGRSwgMHhFNywgMHhEMSwgMHhENywgMHg1NSwgMHhEQywKKyAgICAweDJGLCAweDE3LCAweEMwLCAweDhBLCAweEUyLCAweERBLCAweDVFLCAweEE0LCAweDY4LCAweDlDLCAweEEyLCAweDVDLCAweEEwLCAweEU3LCAweDFGLCAweDAyLAorICAgIDB4RkIsIDB4QzMsIDB4RUUsIDB4NjMsIDB4QjcsIDB4QkQsIDB4MjksIDB4RUYsIDB4Q0IsIDB4QTUsIDB4NDcsIDB4NUEsIDB4NzksIDB4NEQsIDB4NUUsIDB4OUQsCisgICAgMHg0NCwgMHg1QSwgMHhGOSwgMHhDNiwgMHhERSwgMHgwQSwgMHg3MSwgMHg1OCwgMHhCNiwgMHhBMCwgMHgwMiwgMHhFNSwgMHhBQSwgMHg2MiwgMHgxNSwgMHhGNCwKKyAgICAweDM5LCAweDI4LCAweDlBLCAweEY4LCAweDU5LCAweEYxLCAweDkyLCAweDE3LCAweDQ1LCAweDI3LCAweDZBLCAweDFELCAweDExLCAweDNFLCAweDA4LCAweEEyLAorICAgIDB4Q0QsIDB4MzEsIDB4MEUsIDB4RUUsIDB4RDQsIDB4RkMsIDB4RjksIDB4M0MsIDB4MUYsIDB4ODcsIDB4MDAsIDB4RTIsIDB4NUYsIDB4QjgsIDB4MzUsIDB4QkIsCisgICAgMHhDNSwgMHg5NywgMHgzMiwgMHhDRSwgMHg3RiwgMHgxRCwgMHhENiwgMHgwNSwgMHhFRSwgMHhENywgMHgwRCwgMHhCOSwgMHgzQywgMHg2QiwgMHhBRiwgMHgyMywKKyAgICAweDBCLCAweDg2LCAweDNDLCAweDQwLCAweDY2LCAweENELCAweDY1LCAweDhBLCAweEY4LCAweEVCLCAweDZCLCAweEFCLCAweDJGLCAweDk4LCAweDZDLCAweDQwLAorICAgIDB4OEUsIDB4NTQsIDB4OTAsIDB4QjUsIDB4MUMsIDB4NzksIDB4N0IsIDB4ODMsIDB4MTIsIDB4QTQsIDB4MEIsIDB4MjAsIDB4RDUsIDB4OTUsIDB4MzAsIDB4MkMsCisgICAgMHg4QSwgMHg2RSwgMHg5NCwgMHhEMiwgMHhBQiwgMHg3OCwgMHhGNSwgMHg3MSwgMHgzOCwgMHg0RiwgMHhCMiwgMHg5MywgMHg1MCwgMHhEQiwgMHgxNiwgMHg5NCwKKyAgICAweEM0LCAweEE5LCAweDdELCAweDlELCAweDJGLCAweDQ4LCAweDk4LCAweEVCLCAweDc0LCAweEUyLCAweEQ3LCAweDk3LCAweDkxLCAweEJDLCAweEY4LCAweDkwLAorICAgIDB4QUYsIDB4NzQsIDB4NzEsIDB4MzgsIDB4OTQsIDB4RkUsIDB4QTYsIDB4QzcsIDB4ODksIDB4NjMsIDB4MEQsIDB4OUIsIDB4RjEsIDB4ODEsIDB4MjgsIDB4NEEsCisgICAgMHg3NSwgMHg4NSwgMHg1MywgMHg4MywgMHgzNCwgMHg5OSwgMHhFNiwgMHhGNCwgMHhBQSwgMHhGNCwgMHhGMCwgMHgxRCwgMHg5MiwgMHhCRSwgMHgxMiwgMHg4RSwKKyAgICAweDIwLCAweEJGLCAweENBLCAweDQxLCAweDMwLCAweDA4LCAweDlCLCAweDQ3LCAweEQwLCAweDIzLCAweDQ1LCAweDY3LCAweDM4LCAweDJCLCAweDBGLCAweEQzLAorICAgIDB4QkEsIDB4NTksIDB4RUIsIDB4N0MsIDB4MzksIDB4Q0YsIDB4QTgsIDB4QjcsIDB4QTksIDB4RUYsIDB4RjQsIDB4QzcsIDB4RDksIDB4MUIsIDB4NUIsIDB4QzQsCisgICAgMHhDMywgMHhBMywgMHg5MiwgMHhBMiwgMHhGOSwgMHgxRiwgMHhDMSwgMHg5OSwgMHg1NywgMHhFNiwgMHhEOCwgMHgyMiwgMHhGOCwgMHhBNSwgMHhDOCwgMHg0QiwKKyAgICAweENFLCAweEFELCAweEJELCAweDE5LCAweDcxLCAweEMzLCAweDFBLCAweEVCLCAweDI1LCAweEZELCAweEE3LCAweDdGLCAweEE4LCAweDdBLCAweEVDLCAweDU0LAorICAgIDB4MEEsIDB4OTcsIDB4M0UsIDB4ODUsIDB4MjksIDB4QUYsIDB4ODUsIDB4REUsIDB4MTQsIDB4MTAsIDB4M0MsIDB4QkQsIDB4NjYsIDB4QkUsIDB4NTksIDB4RTQsCisgICAgMHg3MSwgMHhEOCwgMHg3RSwgMHhFQSwgMHhGNiwgMHg4QSwgMHg4RiwgMHhGMSwgMHgzQSwgMHgwMywgMHg0MSwgMHg5OSwgMHgyNywgMHg0NSwgMHhCNiwgMHgwNSwKKyAgICAweDJGLCAweDZCLCAweDExLCAweDYxLCAweEI0LCAweDQwLCAweDQwLCAweDNBLCAweEQyLCAweEU5LCAweDkwLCAweERELCAweDBDLCAweDE5LCAweDNCLCAweDAxLAorICAgIDB4RjIsIDB4QTQsIDB4RjUsIDB4M0IsIDB4OUMsIDB4MTgsIDB4MzIsIDB4MjYsIDB4Q0IsIDB4REIsIDB4MjAsIDB4NUIsIDB4RTIsIDB4NDMsIDB4NzAsIDB4Q0IsCisgICAgMHgzNywgMHhBNiwgMHhFQywgMHgzNCwgMHg4NSwgMHgzMywgMHhENiwgMHg4QiwgMHgxRiwgMHg1RiwgMHgxMCwgMHhDQywgMHg4NiwgMHhBQiwgMHgwNCwgMHgzMSwKKyAgICAweDVELCAweDA3LCAweEQ2LCAweDdDLCAweDVGLCAweDcxLCAweDA4LCAweEFDLCAweDNGLCAweDA4LCAweEM2LCAweENGLCAweEFDLCAweDUwLCAweENGLCAweEEyLAorICAgIDB4RkMsIDB4REIsIDB4MDIsIDB4MDEsIDB4RDUsIDB4MzMsIDB4OUUsIDB4NTcsIDB4REMsIDB4ODgsIDB4QkMsIDB4NTEsIDB4NzEsIDB4OTUsIDB4OUEsIDB4ODYsCisgICAgMHg5OSwgMHhCQiwgMHhGQywgMHg1QSwgMHgzQywgMHhCOCwgMHhDMCwgMHhBNSwgMHgxMiwgMHhBNCwgMHgyNiwgMHg1NSwgMHhFNywgMHg4QSwgMHhEMCwgMHg2RiwKKyAgICAweDJDLCAweDUyLCAweDIxLCAweEE0LCAweDBBLCAweEJFLCAweEM5LCAweEE3LCAweDg3LCAweDRCLCAweEJELCAweDQ3LCAweDQ0LCAweEZBLCAweDdBLCAweEU1LAorICAgIDB4REYsIDB4MDcsIDB4NTQsIDB4QzgsIDB4QTMsIDB4RjMsIDB4NzMsIDB4MjgsIDB4RTUsIDB4NTIsIDB4MzYsIDB4MDQsIDB4NDIsIDB4QUIsIDB4OUMsIDB4NkUsCisgICAgMHg4MCwgMHg1QiwgMHg0NCwgMHhGMCwgMHhBNywgMHhDNiwgMHgwMCwgMHhDMywgMHg2OSwgMHgxNCwgMHhFOSwgMHgwMSwgMHhEMiwgMHhFNCwgMHg2OSwgMHg3RCwKKyAgICAweDMyLCAweEFDLCAweDc4LCAweDcwLCAweDc2LCAweDgxLCAweDlBLCAweDE5LCAweDdELCAweDgwLCAweDgyLCAweEI1LCAweENFLCAweDExLCAweEJELCAweEYxLAorICAgIDB4MTUsIDB4MzYsIDB4NDksIDB4QjEsIDB4ODQsIDB4Q0IsIDB4MTUsIDB4NDYsIDB4ODcsIDB4RjQsIDB4ODMsIDB4M0QsIDB4ODIsIDB4OUEsIDB4ODQsIDB4QjcsCisgICAgMHg4NiwgMHg0NywgMHgwNiwgMHg3MiwgMHhFOSwgMHhFNSwgMHhGRSwgMHg0QywgMHgxMSwgMHhBRSwgMHhEMSwgMHgwRCwgMHhBNywgMHhCRSwgMHhGRCwgMHhFMiwKKyAgICAweEY3LCAweEFELCAweEMyLCAweDQ3LCAweEE1LCAweDcyLCAweDRBLCAweDk2LCAweDM4LCAweENDLCAweDZCLCAweEU3LCAweDk0LCAweEEzLCAweDkxLCAweDZCLAorICAgIDB4M0QsIDB4MjAsIDB4ODYsIDB4QTQsIDB4NzAsIDB4ODQsIDB4REIsIDB4MzUsIDB4NzgsIDB4QzksIDB4NTAsIDB4ODksIDB4NTcsIDB4RTYsIDB4QjEsIDB4QTcsCisgICAgMHg2MCwgMHhENywgMHg4OSwgMHgxMywgMHg4QywgMHgwNCwgMHhFQywgMHgxOSwgMHg0MCwgMHgwQywgMHhGQiwgMHg1RCwgMHg3MywgMHhBQiwgMHgyQiwgMHg1OCwKKyAgICAweEVGLCAweEQyLCAweDlDLCAweDJDLCAweDhGLCAweDExLCAweDVGLCAweDg2LCAweDQzLCAweEQzLCAweDY4LCAweEUzLCAweDdDLCAweEI2LCAweDZCLCAweEVGLAorICAgIDB4ODgsIDB4QzYsIDB4NjQsIDB4NjksIDB4MzIsIDB4MEMsIDB4ODYsIDB4MzAsIDB4Q0MsIDB4MjUsIDB4MEIsIDB4NUEsIDB4NzQsIDB4NjQsIDB4NUMsIDB4Q0MsCisgICAgMHhBQywgMHhFRiwgMHg2MSwgMHhGRCwgMHgwNiwgMHhFRSwgMHg5NSwgMHhDNiwgMHhFQiwgMHhCOCwgMHhEMSwgMHg0NiwgMHg3QiwgMHg1MCwgMHhEMSwgMHgxRCwKKyAgICAweDgyLCAweDRDLCAweEU1LCAweEEyLCAweEIyLCAweEFDLCAweDI0LCAweDQ5LCAweEUwLCAweEZCLCAweDE0LCAweDI5LCAweEM5LCAweDM5LCAweDkzLCAweDlDLAorICAgIDB4MzUsIDB4NjEsIDB4RDQsIDB4MjksIDB4RDMsIDB4MUEsIDB4MjEsIDB4NkMsIDB4RDQsIDB4ODksIDB4ODQsIDB4NDcsIDB4RjYsIDB4RTIsIDB4MDAsIDB4M0EsCisgICAgMHg0MCwgMHhCMiwgMHhDMSwgMHgzOSwgMHhGRSwgMHg3OSwgMHgxOCwgMHhDOCwgMHg1QSwgMHg0MSwgMHgxQywgMHhBRCwgMHg4QSwgMHhCNiwgMHg3OSwgMHgzRiwKKyAgICAweDMyLCAweEZELCAweDhGLCAweDNFLCAweDU3LCAweDIyLCAweDVGLCAweERFLCAweEUwLCAweDkwLCAweDlCLCAweEI3LCAweEY3LCAweDgwLCAweEEyLCAweDQyLAorICAgIDB4MzMsIDB4NEUsIDB4NjQsIDB4RDIsIDB4QjQsIDB4MjUsIDB4NzcsIDB4NjIsIDB4QTIsIDB4NDgsIDB4ODAsIDB4MDYsIDB4MTcsIDB4QkIsIDB4QzgsIDB4MDQsCisgICAgMHgzNSwgMHg5NCwgMHgxQSwgMHhENywgMHg2NCwgMHhBNCwgMHhFNiwgMHhCNiwgMHhFNiwgMHg0MywgMHgzMCwgMHg0NiwgMHg3OCwgMHhCNiwgMHg5OCwgMHgxQiwKKyAgICAweDBGLCAweDkwLCAweEU2LCAweEY3LCAweDlBLCAweDZBLCAweEVDLCAweDk2LCAweDdGLCAweDQ2LCAweEQ4LCAweDFFLCAweDYyLCAweEE2LCAweDU2LCAweDU0LAorICAgIDB4NjMsIDB4NDQsIDB4NjIsIDB4MTgsIDB4NzUsIDB4NjEsIDB4QjQsIDB4MTEsIDB4MEYsIDB4NkQsIDB4NUUsIDB4RTMsIDB4NDUsIDB4RDQsIDB4ODAsIDB4QzEsCisgICAgMHhBRiwgMHg5OCwgMHhGNiwgMHg0OCwgMHgxNSwgMHhERiwgMHhENSwgMHgzQywgMHhEMywgMHhFOSwgMHhEMiwgMHgxNywgMHg3RSwgMHgxQSwgMHgxOCwgMHgzQSwKKyAgICAweEExLCAweEZGLCAweEYwLCAweDQ2LCAweDlDLCAweDQ4LCAweEJBLCAweDcyLCAweEZGLCAweDIxLCAweDY2LCAweDYzLCAweDhELCAweEI3LCAweEE1LCAweDE3LAorICAgIDB4NDIsIDB4NEYsIDB4MkUsIDB4Q0EsIDB4RUEsIDB4OEUsIDB4RDksIDB4NkYsIDB4QkQsIDB4NEIsIDB4ODAsIDB4NEMsIDB4NzMsIDB4NEYsIDB4ODUsIDB4M0QsCisgICAgMHgwQiwgMHg4MCwgMHgzMiwgMHgxQSwgMHhBRCwgMHg5MywgMHg4MywgMHg4MiwgMHgwQiwgMHhBNiwgMHg1RSwgMHg3NiwgMHg1QiwgMHg2MCwgMHg1MSwgMHg4MSwKKyAgICAweDUzLCAweDlELCAweDgyLCAweDVGLCAweDY1LCAweEFELCAweDkzLCAweDgwLCAweDgxLCAweDJDLCAweDhBLCAweDBCLCAweDdELCAweDU4LCAweDY3LCAweEU1LAorICAgIDB4QUQsIDB4QjksIDB4OTQsIDB4RjcsIDB4MTEsIDB4NTgsIDB4RTksIDB4N0QsIDB4RTAsIDB4QzYsIDB4OTIsIDB4QzksIDB4N0QsIDB4NEMsIDB4REMsIDB4NEMsCisgICAgMHg4OCwgMHgyMiwgMHgzMSwgMHg2OCwgMHhDMywgMHgzNywgMHhFMywgMHgxRSwgMHhFNSwgMHhBNCwgMHg2QiwgMHg0MSwgMHhFQSwgMHg5RCwgMHhFOCwgMHhGQywKKyAgICAweEYxLCAweEYzLCAweDc4LCAweEY0LCAweDU0LCAweDQwLCAweDUzLCAweDlELCAweDdELCAweDRDLCAweDcwLCAweDU2LCAweEJFLCAweEIwLCAweDc0LCAweDY3LAorICAgIDB4QUMsIDB4N0QsIDB4RTAsIDB4NEYsIDB4NjcsIDB4MjgsIDB4NzEsIDB4REQsIDB4Q0UsIDB4NzgsIDB4REIsIDB4QjUsIDB4RkYsIDB4NTQsIDB4MjIsIDB4QkQsCisgICAgMHg4OSwgMHg3NCwgMHgzOCwgMHgxNCwgMHgxQSwgMHgxMCwgMHgyQywgMHhERiwgMHgzMCwgMHgyNCwgMHhCMCwgMHhDMSwgMHg4NSwgMHgwOSwgMHg0RCwgMHhCNSwKKyAgICAweEUyLCAweDAyLCAweDVFLCAweDg1LCAweDlFLCAweDZFLCAweDZBLCAweEI3LCAweEUwLCAweDZDLCAweEYzLCAweDkxLCAweDQyLCAweEU3LCAweDA4LCAweDA3LAorICAgIDB4OTUsIDB4MDAsIDB4RDksIDB4N0YsIDB4MkMsIDB4RDAsIDB4QTEsIDB4MkEsIDB4QjEsIDB4NTIsIDB4MTgsIDB4NjIsIDB4NTcsIDB4NTEsIDB4QTAsIDB4RjIsCisgICAgMHhDOSwgMHg4QiwgMHhBQSwgMHgwMSwgMHgwOCwgMHg3NCwgMHhBNiwgMHg3QywgMHg2MCwgMHgzRCwgMHgzQywgMHg0QiwgMHhFRCwgMHg0NSwgMHhGRSwgMHhDRSwKKyAgICAweDAwLCAweDlFLCAweDZFLCAweDk5LCAweERBLCAweDBCLCAweEM2LCAweEI2LCAweEM1LCAweENGLCAweEFBLCAweDAzLCAweEVFLCAweDdGLCAweDQxLCAweEFFLAorICAgIDB4ODMsIDB4QUIsIDB4MjMsIDB4QUEsIDB4NjcsIDB4MUUsIDB4MjAsIDB4NDIsIDB4NTUsIDB4NTQsIDB4OTUsIDB4QUUsIDB4QUUsIDB4ODIsIDB4MkEsIDB4M0YsCisgICAgMHhBQSwgMHgxNCwgMHg2NiwgMHhGNCwgMHhBQiwgMHgwMSwgMHhBRCwgMHg1RiwgMHhBNywgMHg3NiwgMHhGQSwgMHgyMSwgMHhGNCwgMHg4MiwgMHgyMiwgMHg2NywKKyAgICAweDhGLCAweERDLCAweEEyLCAweDFBLCAweEJDLCAweDAxLCAweDc1LCAweDhELCAweDY2LCAweDhDLCAweEQ1LCAweDQ2LCAweDkwLCAweDRELCAweEQ4LCAweEMwLAorICAgIDB4QkMsIDB4MEYsIDB4NjEsIDB4QjIsIDB4RTksIDB4RTIsIDB4RDAsIDB4MzIsIDB4MjcsIDB4NEIsIDB4MzksIDB4NDMsIDB4NTAsIDB4RDAsIDB4RjcsIDB4RjIsCisgICAgMHgzMiwgMHgyNCwgMHhFOCwgMHgzMiwgMHgxOSwgMHgzMSwgMHg1NywgMHgwNCwgMHg1QiwgMHhBQiwgMHg1NCwgMHhDNywgMHg0NCwgMHg2QiwgMHg1RiwgMHg2QywKKyAgICAweDE0LCAweEIyLCAweDgzLCAweEEyLCAweEVDLCAweDVGLCAweDA0LCAweDhBLCAweDc4LCAweDBELCAweEY4LCAweDhGLCAweDYxLCAweEZBLCAweDMyLCAweEM5LAorICAgIDB4QjQsIDB4NjAsIDB4Q0MsIDB4Q0IsIDB4MzUsIDB4OTIsIDB4QjMsIDB4MjMsIDB4MjksIDB4MjgsIDB4NEQsIDB4NDgsIDB4NkMsIDB4MDAsIDB4OUYsIDB4RjksCisgICAgMHg4RCwgMHgyNiwgMHg0NCwgMHhDOSwgMHgwQiwgMHhCMiwgMHg3MywgMHg5NCwgMHhGMywgMHg3QSwgMHg5QywgMHg0RSwgMHg3RSwgMHhDMywgMHhCNywgMHg3RSwKKyAgICAweDg3LCAweDk4LCAweDE4LCAweDgzLCAweDM1LCAweDkzLCAweERELCAweDM1LCAweEY3LCAweEQxLCAweDNELCAweEYxLCAweDQwLCAweDQ4LCAweDg5LCAweEFDLAorICAgIDB4RUUsIDB4OTgsIDB4RTcsIDB4NUEsIDB4NzcsIDB4RUQsIDB4M0EsIDB4RUQsIDB4NUEsIDB4RTcsIDB4MzgsIDB4NzQsIDB4RjcsIDB4RDYsIDB4QjYsIDB4NDAsCisgICAgMHg3NiwgMHhBRSwgMHhCRCwgMHg5OSwgMHg5MywgMHgwMiwgMHhCMywgMHhGRiwgMHhERSwgMHgxNCwgMHg3MCwgMHhDMywgMHhCRiwgMHg3NywgMHgwMCwgMHg0RiwKKyAgICAweEM2LCAweDdFLCAweDdBLCAweDFFLCAweDM5LCAweEQzLCAweDAwLCAweERDLCAweEMyLCAweDM1LCAweDAxLCAweDI1LCAweDhDLCAweDlDLCAweDM0LCAweDc5LAorICAgIDB4QTAsIDB4NDcsIDB4RDQsIDB4RDQsIDB4M0IsIDB4RkYsIDB4ODksIDB4N0QsIDB4NzksIDB4OEIsIDB4QkYsIDB4OUEsIDB4NjQsIDB4NEUsIDB4QjcsIDB4RTUsCisgICAgMHg3OSwgMHgzMSwgMHhCOCwgMHg0NSwgMHgwMywgMHhEMCwgMHhDQywgMHhBNiwgMHhFNSwgMHgyMiwgMHhCQywgMHhGMSwgMHg0MCwgMHgyNCwgMHhCQSwgMHhGNiwKKyAgICAweDJCLCAweEUwLCAweDIxLCAweEUzLCAweEE1LCAweDRELCAweEJFLCAweEJCLCAweDQ1LCAweDEyLCAweDVBLCAweDEwLCAweDFCLCAweDI4LCAweEMyLCAweEQ2LAorICAgIDB4ODUsIDB4QkUsIDB4QkQsIDB4RDAsIDB4REQsIDB4QTMsIDB4QTAsIDB4N0IsIDB4MkYsIDB4OTgsIDB4RTIsIDB4OUQsIDB4NjIsIDB4QjEsIDB4QjYsIDB4RTIsCisgICAgMHgxRSwgMHgxRCwgMHg3RSwgMHg2OSwgMHg2RiwgMHgzOSwgMHg5MiwgMHhGMiwgMHg5NywgMHgzRCwgMHgwMiwgMHhFMSwgMHgxNywgMHgyNSwgMHgwMywgMHg2MywKKyAgICAweDIwLCAweDM5LCAweEVGLCAweEJELCAweDU2LCAweEZELCAweDY2LCAweEQ1LCAweDQwLCAweDMxLCAweDlBLCAweEE3LCAweDQ1LCAweDAwLCAweEQwLCAweDAxLAorICAgIDB4NjAsIDB4MzAsIDB4QTIsIDB4RDUsIDB4NkMsIDB4NUEsIDB4NTYsIDB4NjcsIDB4MTEsIDB4NTcsIDB4QzgsIDB4MDksIDB4OUQsIDB4OTYsIDB4QjAsIDB4RDEsCisgICAgMHg4OCwgMHg5RiwgMHhFNywgMHhFMywgMHhBQywgMHhEMCwgMHgwQywgMHgzOSwgMHgxMywgMHhCOCwgMHhGNSwgMHhGQSwgMHhEQiwgMHhGRSwgMHg1QywgMHg1MiwKKyAgICAweDRBLCAweDhELCAweEEyLCAweDhDLCAweEE4LCAweDdFLCAweEFCLCAweEVDLCAweDIyLCAweDdGLCAweDIzLCAweDA0LCAweDE2LCAweDBFLCAweDhGLCAweDk5LAorICAgIDB4RDcsIDB4ODMsIDB4MTMsIDB4REYsIDB4NDAsIDB4M0YsIDB4QjcsIDB4RjEsIDB4QTksIDB4MkEsIDB4MDQsIDB4NjIsIDB4RDMsIDB4QzEsIDB4MkYsIDB4NEIsCisgICAgMHg1RCwgMHhFOCwgMHhCOCwgMHgwRSwgMHhEMiwgMHg0NiwgMHhGMywgMHgxMywgMHg5MiwgMHg5QSwgMHg2MywgMHgwMywgMHg1NCwgMHhFQywgMHg5RSwgMHhEMywKKyAgICAweDMwLCAweDAwLCAweDAzLCAweDhBLCAweDc3LCAweDhCLCAweENELCAweDhDLCAweDNELCAweDZCLCAweDlFLCAweEJCLCAweDcyLCAweDdCLCAweEI4LCAweDcyLAorICAgIDB4QjksIDB4Q0QsIDB4OTgsIDB4NjksIDB4RkIsIDB4MjAsIDB4QjgsIDB4QzUsIDB4M0YsIDB4QTAsIDB4OUMsIDB4RDEsIDB4MjksIDB4ODksIDB4RTAsIDB4NTUsCisgICAgMHhERiwgMHg4NywgMHg1RCwgMHg5MCwgMHgyOCwgMHg5OSwgMHhFNiwgMHgzOSwgMHg2MywgMHg2QSwgMHgxOSwgMHhFOCwgMHgwRCwgMHg1MCwgMHhCMSwgMHgyQywKKyAgICAweEYzLCAweDMxLCAweEMxLCAweDY4LCAweDIzLCAweEUzLCAweDcwLCAweEZGLCAweDdFLCAweDFGLCAweDRELCAweEY1LCAweEM1LCAweDkwLCAweEU5LCAweDgxLAorICAgIDB4MTcsIDB4NjYsIDB4MTcsIDB4NDAsIDB4NDQsIDB4REYsIDB4MkYsIDB4NjMsIDB4NTAsIDB4ODIsIDB4NzIsIDB4ODcsIDB4MjMsIDB4OTMsIDB4NkIsIDB4N0UsCisgICAgMHhBRCwgMHg1MywgMHg2RiwgMHhENywgMHg3OCwgMHgzMSwgMHgyNSwgMHg5RiwgMHg5RSwgMHhDMywgMHhDOSwgMHg0MiwgMHgxOCwgMHg0MCwgMHhFOSwgMHg0QywKKyAgICAweEZDLCAweEFBLCAweEM3LCAweEY1LCAweDUxLCAweDkzLCAweDI0LCAweEUyLCAweEZELCAweDY5LCAweDcyLCAweDY4LCAweEUxLCAweDhELCAweDU5LCAweDQyLAorICAgIDB4MUEsIDB4MTQsIDB4NDgsIDB4NkEsIDB4REQsIDB4NTksIDB4QzMsIDB4QTcsIDB4MzQsIDB4NzMsIDB4MzcsIDB4QUUsIDB4ODIsIDB4QjksIDB4RUIsIDB4NDYsCisgICAgMHhEMiwgMHhCNiwgMHgzMSwgMHhCNCwgMHgzRSwgMHg4MiwgMHg0OSwgMHg0QiwgMHgwRiwgMHgxMywgMHhCNSwgMHg5OCwgMHg0NywgMHgyNiwgMHhENCwgMHg0NSwKKyAgICAweDhDLCAweEUyLCAweDA0LCAweEQ0LCAweEM2LCAweDhCLCAweDdCLCAweDdELCAweDBFLCAweDdELCAweDNDLCAweDYzLCAweDM5LCAweEQ3LCAweERGLCAweEIyLAorICAgIDB4NjgsIDB4MzQsIDB4RDQsIDB4QjQsIDB4NzAsIDB4NkEsIDB4OTgsIDB4MTUsIDB4REYsIDB4MTYsIDB4RUYsIDB4QUYsIDB4MUUsIDB4QzUsIDB4MUYsIDB4NUMsCisgICAgMHgzRCwgMHg4NSwgMHg3NCwgMHhDNiwgMHhDRiwgMHg0NCwgMHgwMSwgMHhEMywgMHhDMywgMHg2MSwgMHg5MywgMHhCRiwgMHgyMywgMHg5RiwgMHg5OSwgMHg0NCwKKyAgICAweDU0LCAweDJBLCAweDMyLCAweEI5LCAweDc1LCAweDIxLCAweDFCLCAweDJDLCAweEUxLCAweEZCLCAweEZGLCAweEFGLCAweDYyLCAweDZGLCAweDg2LCAweDIzLAorICAgIDB4RkUsIDB4Q0QsIDB4NjgsIDB4MzgsIDB4QjYsIDB4QUMsIDB4NDksIDB4RjYsIDB4NEEsIDB4MEMsIDB4QTEsIDB4RjUsIDB4MTksIDB4RDEsIDB4NUEsIDB4QTgsCisgICAgMHhGMCwgMHhCNCwgMHg5QiwgMHg0RSwgMHgwRiwgMHg2QiwgMHg2NSwgMHg0NiwgMHg0NCwgMHgxNiwgMHgyRiwgMHg3RSwgMHg2RSwgMHhEQywgMHg1RiwgMHg1RSwKKyAgICAweDZGLCAweDMxLCAweDk5LCAweDQzLCAweEEwLCAweDI3LCAweEJELCAweDJBLCAweDU4LCAweDZFLCAweEIyLCAweDgyLCAweDI5LCAweDc4LCAweEVELCAweEE2LAorICAgIDB4ODMsIDB4NEQsIDB4MUIsIDB4Q0QsIDB4OUMsIDB4MEYsIDB4RTUsIDB4RTcsIDB4MUEsIDB4RTQsIDB4NjMsIDB4RDYsIDB4NkEsIDB4RDUsIDB4MDMsIDB4MzksCisgICAgMHhCOCwgMHg0OCwgMHg3NywgMHg4MCwgMHhGNywgMHhGMywgMHhGRSwgMHg2NCwgMHg4QiwgMHg5OCwgMHg3MiwgMHhCRSwgMHgzMSwgMHgyOCwgMHhGMCwgMHg0OCwKKyAgICAweDJBLCAweDY1LCAweDM3LCAweERBLCAweEQxLCAweDlBLCAweDE4LCAweDM3LCAweEJCLCAweDIzLCAweDU5LCAweEIzLCAweDI0LCAweDc1LCAweEY3LCAweEY1LAorICAgIDB4NzksIDB4NEUsIDB4RjAsIDB4Q0EsIDB4ODUsIDB4MTMsIDB4M0MsIDB4OTMsIDB4RDAsIDB4QzYsIDB4RDksIDB4RUEsIDB4QUUsIDB4REYsIDB4N0UsIDB4QUMsCisgICAgMHhFNCwgMHhBQiwgMHg4OCwgMHgwRSwgMHg3OCwgMHg4MCwgMHgxRCwgMHgyNiwgMHgyQSwgMHg1QywgMHg5NSwgMHgyMywgMHg2QiwgMHg3MCwgMHg5OSwgMHg2QywKKyAgICAweDE1LCAweEM0LCAweDg2LCAweEMwLCAweDI5LCAweDlELCAweDU1LCAweEU0LCAweEMxLCAweDg0LCAweDM3LCAweDZCLCAweEE3LCAweDI2LCAweDgyLCAweENDLAorICAgIDB4OUMsIDB4REEsIDB4RUIsIDB4NTQsIDB4MTcsIDB4NjcsIDB4RDMsIDB4NzQsIDB4NEIsIDB4NEYsIDB4N0MsIDB4NjMsIDB4NEQsIDB4RTcsIDB4RTQsIDB4OTMsCisgICAgMHgzNCwgMHhEQiwgMHhERSwgMHg5RCwgMHgxNywgMHgyOCwgMHgwNiwgMHhFQSwgMHgwOSwgMHgyQSwgMHg2MywgMHg4RCwgMHgxQSwgMHgzMiwgMHhEOCwgMHhDOSwKKyAgICAweDY2LCAweEUyLCAweDc3LCAweEU2LCAweDE5LCAweDU5LCAweDQ0LCAweDEzLCAweDJBLCAweDdFLCAweDRFLCAweEY0LCAweDVBLCAweEM3LCAweEJCLCAweDQzLAorICAgIDB4REMsIDB4QzgsIDB4NkEsIDB4NTYsIDB4NUQsIDB4MkYsIDB4NTUsIDB4RkQsIDB4N0UsIDB4NUEsIDB4MzcsIDB4MUYsIDB4OTksIDB4RTMsIDB4RjgsIDB4RUMsCisgICAgMHg1MCwgMHgwQiwgMHhFMywgMHg5NCwgMHhDNCwgMHhGNSwgMHhDRCwgMHhDMSwgMHgwMywgMHg5NiwgMHg3NiwgMHhCMywgMHgzNCwgMHgwMSwgMHhGOSwgMHg1QywKKyAgICAweEU2LCAweEM5LCAweDk5LCAweDQwLCAweEI3LCAweENELCAweDVDLCAweEY4LCAweEU2LCAweEY3LCAweDNGLCAweDdCLCAweDEzLCAweDE5LCAweDIyLCAweDAyLAorICAgIDB4RUYsIDB4NTksIDB4NDUsIDB4NDgsIDB4NjEsIDB4MkIsIDB4RUQsIDB4Q0QsIDB4QjUsIDB4OTAsIDB4MkMsIDB4RDAsIDB4NDksIDB4QjQsIDB4MzksIDB4NzYsCisgICAgMHg1MSwgMHhCRSwgMHg1MSwgMHhENywgMHgzRCwgMHhENywgMHhERCwgMHg1NSwgMHg5OCwgMHhDNSwgMHgwRiwgMHhCRCwgMHhGNiwgMHhFMCwgMHg5NiwgMHhBQSwKKyAgICAweEI4LCAweDE5LCAweDk3LCAweDdGLCAweDM1LCAweDJDLCAweDUwLCAweDY5LCAweEU4LCAweEVFLCAweDZBLCAweDJGLCAweDAwLCAweDE4LCAweDY1LCAweDFCLAorICAgIDB4RDYsIDB4QjgsIDB4MkEsIDB4QzMsIDB4MEEsIDB4MzcsIDB4RUEsIDB4N0UsIDB4OTUsIDB4OEIsIDB4NjAsIDB4QTUsIDB4MkUsIDB4QzAsIDB4NTUsIDB4MjQsCisgICAgMHgzQiwgMHgzRCwgMHhCMSwgMHg0MCwgMHgyMiwgMHg4QSwgMHg1NiwgMHhBQiwgMHgwNCwgMHg2QiwgMHgzMSwgMHgwRSwgMHhCNiwgMHhENywgMHgxNywgMHhGMSwKKyAgICAweEVBLCAweDlCLCAweDkxLCAweDBFLCAweEVFLCAweENFLCAweDBBLCAweEZFLCAweDM3LCAweDQ2LCAweEFDLCAweDE1LCAweEY5LCAweDYwLCAweEZGLCAweDczLAorICAgIDB4NTQsIDB4QzksIDB4RTEsIDB4OEMsIDB4NDIsIDB4RkEsIDB4MzksIDB4NTEsIDB4RDQsIDB4NzcsIDB4QUMsIDB4NjIsIDB4RjMsIDB4MTUsIDB4OEQsIDB4QzUsCisgICAgMHhFQywgMHg0NiwgMHg3NSwgMHg5NywgMHg1MCwgMHhFRCwgMHgxMCwgMHhGNSwgMHhDNywgMHg4MSwgMHhFQywgMHgxRCwgMHg3QywgMHg0MCwgMHg3QiwgMHg5RiwKKyAgICAweDRGLCAweDM3LCAweEE0LCAweEVELCAweDNDLCAweDM1LCAweDY4LCAweERCLCAweERCLCAweDdGLCAweEYyLCAweEYzLCAweERDLCAweDM5LCAweEEwLCAweDQwLAorICAgIDB4RTgsIDB4MTcsIDB4OUMsIDB4RDgsIDB4MjYsIDB4OTIsIDB4RjIsIDB4NTcsIDB4NUUsIDB4RTcsIDB4NTYsIDB4REEsIDB4NEYsIDB4M0YsIDB4NEMsIDB4RjQsCisgICAgMHg5MCwgMHg0QSwgMHg4OSwgMHgzMywgMHg0OSwgMHhCQiwgMHg5OSwgMHhFOSwgMHhDQSwgMHg2RiwgMHg1RiwgMHg1MSwgMHhBRSwgMHhGRiwgMHg4MywgMHg5MCwKKyAgICAweDgzLCAweDUzLCAweEZGLCAweDAwLCAweDdGLCAweDJGLCAweDg0LCAweEQ3LCAweEQ4LCAweEU4LCAweEIxLCAweEFCLCAweEY5LCAweDU2LCAweDY1LCAweDkzLAorICAgIDB4QTcsIDB4QzIsIDB4QjQsIDB4RDcsIDB4NkIsIDB4QjQsIDB4Q0YsIDB4NjUsIDB4QzgsIDB4Q0EsIDB4MjAsIDB4MTUsIDB4OTEsIDB4NzQsIDB4MzAsIDB4NEQsCisgICAgMHg3MiwgMHg1QiwgMHhCRCwgMHg3MCwgMHhDNSwgMHg4QiwgMHhEMywgMHhDNywgMHhENCwgMHg3QiwgMHhGQiwgMHhERiwgMHg2QiwgMHg3QiwgMHgxOSwgMHg2QiwKKyAgICAweDhCLCAweDgzLCAweDQ3LCAweDgzLCAweEM2LCAweDQ0LCAweEJBLCAweEE4LCAweEVBLCAweEI4LCAweDM4LCAweDY3LCAweDZCLCAweDU4LCAweEYzLCAweDRFLAorICAgIDB4QzgsIDB4QTgsIDB4RjQsIDB4REQsIDB4MzAsIDB4REQsIDB4NTksIDB4NEQsIDB4NTUsIDB4MjcsIDB4MUUsIDB4MTQsIDB4M0EsIDB4NzEsIDB4RDUsIDB4RkQsCisgICAgMHg1OSwgMHgwQiwgMHhDMiwgMHgxNywgMHgyRiwgMHgwOCwgMHg1MywgMHgyNywgMHgwNywgMHhFRSwgMHhBMCwgMHhDNiwgMHhFOSwgMHhGOCwgMHgzMSwgMHhERCwKKyAgICAweDk3LCAweEM0LCAweEFELCAweEMxLCAweDlBLCAweDYwLCAweDVDLCAweEU0LCAweDI3LCAweDBBLCAweDAzLCAweDM1LCAweDEwLCAweDlDLCAweEU4LCAweDcwLAorICAgIDB4RTMsIDB4RjMsIDB4RDgsIDB4RTYsIDB4NzIsIDB4QTUsIDB4MzEsIDB4QzYsIDB4RkUsIDB4NDYsIDB4QTgsIDB4NDYsIDB4NkUsIDB4NzQsIDB4OTAsIDB4RDYsCisgICAgMHg4RiwgMHgyNywgMHgzQywgMHgzOSwgMHgyNCwgMHg1RSwgMHgzMSwgMHgzQywgMHhDQywgMHg5QSwgMHhERCwgMHhGRSwgMHhFOSwgMHhEQSwgMHg4NCwgMHhFOCwKKyAgICAweEExLCAweENDLCAweDRCLCAweEUxLCAweDFCLCAweEFBLCAweDdELCAweEY2LCAweDdDLCAweEE4LCAweDRDLCAweEQ1LCAweEZDLCAweDNDLCAweDRDLCAweEZDLAorICAgIDB4NjIsIDB4MzIsIDB4QUUsIDB4NUQsIDB4QkEsIDB4NjUsIDB4REMsIDB4QzMsIDB4MUQsIDB4OEMsIDB4OUQsIDB4MEUsIDB4MkEsIDB4NDYsIDB4NjQsIDB4OEQsCisgICAgMHhDRCwgMHg2RSwgMHhCQywgMHg4NiwgMHgxNiwgMHgxNSwgMHhBMiwgMHgyNiwgMHhEMSwgMHgzRSwgMHg1RiwgMHgwQSwgMHg4MSwgMHg4NiwgMHgwRiwgMHhFOCwKKyAgICAweEExLCAweDI4LCAweEEzLCAweDVGLCAweEZGLCAweEU0LCAweDY4LCAweDJDLCAweEU2LCAweDMwLCAweDE2LCAweEI4LCAweDJFLCAweENELCAweDQxLCAweDUyLAorICAgIDB4RTMsIDB4ODEsIDB4RkIsIDB4MUQsIDB4MUMsIDB4QTIsIDB4MTcsIDB4QzMsIDB4RjEsIDB4MjQsIDB4MDIsIDB4OTQsIDB4QjksIDB4NTksIDB4RUMsIDB4NEEsCisgICAgMHg2RCwgMHhFMywgMHgyNywgMHgxOCwgMHgyQywgMHhEQSwgMHg3NSwgMHgxNywgMHg0MiwgMHhBQSwgMHhGNywgMHg2MSwgMHg1MCwgMHgyOSwgMHg4QywgMHgwQSwKKyAgICAweENBLCAweDhFLCAweENBLCAweDU5LCAweDgyLCAweDFGLCAweDFELCAweDBCLCAweDAwLCAweDM2LCAweEU0LCAweDc4LCAweDI1LCAweDAxLCAweEY3LCAweEZCLAorICAgIDB4MEUsIDB4NjUsIDB4NEUsIDB4MDcsIDB4NUUsIDB4RDgsIDB4MjMsIDB4QzYsIDB4NDksIDB4NzYsIDB4MDYsIDB4MEIsIDB4QTUsIDB4QzIsIDB4MzAsIDB4NTUsCisgICAgMHg4MiwgMHhGNiwgMHg2MCwgMHg2OSwgMHhBRSwgMHgxQiwgMHgzNywgMHhDMSwgMHgwMiwgMHhFOCwgMHgyMywgMHg5QiwgMHgxNSwgMHg3MCwgMHg3QiwgMHhGOCwKKyAgICAweEY5LCAweDVFLCAweDUwLCAweDY5LCAweDJGLCAweDI4LCAweDdFLCAweERCLCAweDM1LCAweDJGLCAweDZDLCAweDg3LCAweENDLCAweEZELCAweDIzLCAweDFBLAorICAgIDB4M0IsIDB4MzIsIDB4OUMsIDB4RkMsIDB4RTIsIDB4NkEsIDB4MjQsIDB4MkEsIDB4MEMsIDB4NUUsIDB4NEQsIDB4MTksIDB4N0UsIDB4REEsIDB4Q0EsIDB4OTUsCisgICAgMHg2MSwgMHhFMSwgMHhDNiwgMHg2MCwgMHg0RSwgMHg2MiwgMHhDQiwgMHg2QSwgMHgwOSwgMHg4MywgMHgwMiwgMHhFRiwgMHhDOCwgMHg3RSwgMHgzNiwgMHg3OSwKKyAgICAweDE0LCAweDI0LCAweDM1LCAweDAxLCAweENGLCAweENCLCAweDk1LCAweEY1LCAweDA4LCAweDVFLCAweDBBLCAweDQ2LCAweEQyLCAweDVCLCAweDQ2LCAweDQzLAorICAgIDB4NTQsIDB4M0IsIDB4NEYsIDB4OTYsIDB4RDUsIDB4NTMsIDB4ODEsIDB4OEQsIDB4MEUsIDB4REUsIDB4N0EsIDB4OTQsIDB4QjgsIDB4MDksIDB4MTEsIDB4NDcsCisgICAgMHg4RiwgMHgzOCwgMHhGRSwgMHg0NywgMHgwMCwgMHhGQSwgMHg3NiwgMHg3MywgMHg5NiwgMHhEQSwgMHgxQywgMHg1NSwgMHhFOSwgMHg5RSwgMHg3MywgMHgxRSwKKyAgICAweDc1LCAweENGLCAweDdBLCAweDRELCAweEIwLCAweDQ0LCAweDZFLCAweDJBLCAweDZELCAweDk4LCAweDJCLCAweDM5LCAweERDLCAweEJBLCAweDE3LCAweDUwLAorICAgIDB4MDYsIDB4RUEsIDB4QTYsIDB4NjIsIDB4MzMsIDB4RDksIDB4RDIsIDB4NjYsIDB4NzgsIDB4MDUsIDB4RTUsIDB4NTIsIDB4MkIsIDB4OUYsIDB4MzQsIDB4QUUsCisgICAgMHhERiwgMHhFOSwgMHg5RCwgMHg0NCwgMHhCQSwgMHg5MywgMHhEOCwgMHgyOSwgMHgwMiwgMHhDNiwgMHhFRCwgMHg1QSwgMHg1OSwgMHgwQSwgMHhEMCwgMHhEOSwKKyAgICAweDZELCAweEJFLCAweDk3LCAweDI1LCAweDVFLCAweERBLCAweDk1LCAweDQ0LCAweENFLCAweDczLCAweEZELCAweEU1LCAweDk4LCAweEZELCAweDc1LCAweDM4LAorICAgIDB4ODgsIDB4MUUsIDB4NDIsIDB4MkEsIDB4M0YsIDB4NjUsIDB4OTYsIDB4N0MsIDB4RjEsIDB4ODYsIDB4NTEsIDB4QkUsIDB4NTEsIDB4QjEsIDB4MUUsIDB4RDEsCisgICAgMHg3NiwgMHg2NCwgMHgwOCwgMHg4NSwgMHg0OSwgMHhENywgMHhERCwgMHhERCwgMHhENCwgMHhGQSwgMHhGRSwgMHhDQSwgMHg2NywgMHhEQiwgMHgzNiwgMHg5MCwKKyAgICAweDA3LCAweEVCLCAweDg2LCAweEY2LCAweDA3LCAweDdBLCAweDIxLCAweERCLCAweEVFLCAweDU3LCAweDI0LCAweDU1LCAweDg3LCAweDJDLCAweEQyLCAweEE0LAorICAgIDB4RUUsIDB4NDUsIDB4NTEsIDB4RTgsIDB4MDUsIDB4RDEsIDB4MjQsIDB4MDgsIDB4RDAsIDB4M0IsIDB4N0QsIDB4Q0EsIDB4MEUsIDB4NUQsIDB4MDMsIDB4NTcsCisgICAgMHg0NCwgMHhGNywgMHg3NiwgMHgwQSwgMHhDRCwgMHgyMCwgMHg5QiwgMHg5MywgMHhFMCwgMHg3RCwgMHg4NiwgMHgzRSwgMHg0OCwgMHg4RCwgMHhGMCwgMHg0QywKKyAgICAweDI4LCAweDMyLCAweDc3LCAweEQ4LCAweEEzLCAweDQ4LCAweEEwLCAweDkzLCAweDM2LCAweDA1LCAweEEwLCAweDE5LCAweEYyLCAweDk4LCAweDZDLCAweDE3LAorICAgIDB4NUUsIDB4MkMsIDB4NUUsIDB4RTQsIDB4QUQsIDB4MzYsIDB4OTYsIDB4MTAsIDB4MUIsIDB4RTUsIDB4QjcsIDB4NkIsIDB4ODQsIDB4MEMsIDB4RUQsIDB4RTMsCisgICAgMHhEQywgMHg0QiwgMHhBNCwgMHhFNywgMHgwQSwgMHhEQSwgMHhENCwgMHhFNywgMHhEOSwgMHgxRSwgMHhFRSwgMHhGOSwgMHhENSwgMHgwNiwgMHhBRiwgMHgzRiwKKyAgICAweDUxLCAweDFELCAweDk4LCAweDQyLCAweDc3LCAweDExLCAweDAyLCAweDU3LCAweDEwLCAweDNDLCAweDVDLCAweDk4LCAweERBLCAweDdELCAweDY0LCAweDZCLAorICAgIDB4RUMsIDB4NkIsIDB4NTEsIDB4RkIsIDB4NzcsIDB4MzEsIDB4NzksIDB4Q0UsIDB4OUMsIDB4NTgsIDB4MDMsIDB4RUEsIDB4MkEsIDB4REYsIDB4OTIsIDB4NUQsCisgICAgMHhFRCwgMHgwRiwgMHgyMCwgMHhDQywgMHgwQSwgMHg3MCwgMHg0MiwgMHg5NCwgMHgzNywgMHhGQSwgMHhERiwgMHhBMSwgMHhBRiwgMHg3MCwgMHgxQiwgMHgwRSwKKyAgICAweDgwLCAweDVCLCAweDNFLCAweEE5LCAweEJGLCAweDBGLCAweDJCLCAweDVELCAweEQ4LCAweDJGLCAweEVGLCAweEY5LCAweEYzLCAweDUzLCAweEM1LCAweEU3LAorICAgIDB4OTMsIDB4ODcsIDB4NDksIDB4NTQsIDB4RTQsIDB4NDgsIDB4NzQsIDB4RDIsIDB4REMsIDB4MkEsIDB4OUEsIDB4RTIsIDB4MTgsIDB4NjEsIDB4RDcsIDB4QUMsCisgICAgMHg0QywgMHgxQSwgMHgyRSwgMHg3MiwgMHg4MywgMHg4RCwgMHhEQSwgMHhDRSwgMHgxNiwgMHhEMSwgMHgzRiwgMHg5MCwgMHg2MiwgMHhDQSwgMHhBNywgMHgwNiwKKyAgICAweDIyLCAweDY2LCAweEYzLCAweDY3LCAweEIwLCAweEEzLCAweEQ0LCAweERELCAweEIxLCAweEE0LCAweEYzLCAweDIyLCAweEIzLCAweDAyLCAweDRELCAweEQ0LAorICAgIDB4MkMsIDB4ODQsIDB4RjUsIDB4NzUsIDB4ODcsIDB4N0QsIDB4NTYsIDB4MDQsIDB4QzEsIDB4QzEsIDB4NjIsIDB4MTIsIDB4NTksIDB4Q0YsIDB4MDQsIDB4QTQsCisgICAgMHgyMCwgMHgxRiwgMHhGNSwgMHhDNSwgMHg4RCwgMHhCNiwgMHg4OCwgMHg1NCwgMHg2MSwgMHhGMywgMHg1QSwgMHg4OCwgMHgzRiwgMHg2RSwgMHg1QywgMHhFOSwKKyAgICAweDhCLCAweDgxLCAweDU2LCAweEU2LCAweDEwLCAweEM3LCAweEVELCAweDVGLCAweDAzLCAweDY3LCAweDNFLCAweDJFLCAweEJELCAweDZBLCAweEMzLCAweDRELAorICAgIDB4MzMsIDB4QjcsIDB4RDQsIDB4ODcsIDB4NDYsIDB4MEIsIDB4MjcsIDB4ODYsIDB4RkMsIDB4NjUsIDB4NkYsIDB4REYsIDB4NUEsIDB4M0QsIDB4NzcsIDB4NDksCisgICAgMHg1QSwgMHhGQiwgMHgzQSwgMHg4MSwgMHhDRSwgMHhBMSwgMHhBQywgMHgwMiwgMHgxOCwgMHg3RSwgMHg1QiwgMHg1OCwgMHg3NSwgMHhGQiwgMHg2NCwgMHg3QywKKyAgICAweEFBLCAweDUwLCAweEU2LCAweEU2LCAweEEyLCAweDdFLCAweEZDLCAweEM3LCAweDY3LCAweDI1LCAweDVELCAweEU1LCAweDI0LCAweDI4LCAweDFGLCAweDNCLAorICAgIDB4RTYsIDB4MzEsIDB4NkQsIDB4NDMsIDB4OTMsIDB4RDMsIDB4QzQsIDB4QjQsIDB4NkYsIDB4ODksIDB4MDIsIDB4OUIsIDB4NTQsIDB4QzcsIDB4NkIsIDB4OTcsCisgICAgMHhEMywgMHg4NSwgMHgwNiwgMHhFMSwgMHg0RSwgMHgxNSwgMHhEMiwgMHhFOCwgMHhGMywgMHg5NCwgMHgzNywgMHg0MCwgMHgzMCwgMHgyQywgMHhBMCwgMHgyNSwKKyAgICAweDc3LCAweEE4LCAweEMwLCAweDIzLCAweDNGLCAweDVGLCAweDU1LCAweDcxLCAweDIxLCAweEQzLCAweDMzLCAweDBCLCAweDdBLCAweDJGLCAweERGLCAweEI5LAorICAgIDB4MzksIDB4MEQsIDB4QUUsIDB4NjUsIDB4Q0YsIDB4NTMsIDB4OUMsIDB4ODIsIDB4QTIsIDB4RTUsIDB4NDAsIDB4RjksIDB4RjYsIDB4REYsIDB4QkEsIDB4MzMsCisgICAgMHg5NiwgMHhGMywgMHg1NSwgMHgyNSwgMHgzNSwgMHg5RSwgMHg1RiwgMHg5QiwgMHgyNSwgMHgzOSwgMHg5NCwgMHgyRiwgMHgwMywgMHhBNiwgMHgyOCwgMHhCMCwKKyAgICAweDZBLCAweEZGLCAweEZBLCAweDE0LCAweEQ2LCAweEU3LCAweDAyLCAweDA3LCAweDhGLCAweDFBLCAweEM0LCAweEYwLCAweDUxLCAweDM0LCAweDNELCAweEQzLAorICAgIDB4REYsIDB4Q0IsIDB4NTcsIDB4QzMsIDB4RjUsIDB4MDQsIDB4RTIsIDB4NEMsIDB4NTgsIDB4MTgsIDB4QTUsIDB4RTIsIDB4MzksIDB4QjQsIDB4QTMsIDB4RTIsCisgICAgMHhFNiwgMHgyNSwgMHhDNSwgMHhBQywgMHhGRCwgMHg3NSwgMHhCMiwgMHgyQiwgMHg1QiwgMHg5MywgMHhDNSwgMHhGRiwgMHg1NiwgMHhEQiwgMHhBQSwgMHg2RSwKKyAgICAweENDLCAweDE4LCAweDk4LCAweDkwLCAweDhBLCAweDJDLCAweDg1LCAweDg0LCAweEU3LCAweENGLCAweEIwLCAweEM1LCAweDE4LCAweDFGLCAweDU5LCAweEM3LAorICAgIDB4QTQsIDB4Q0UsIDB4QUQsIDB4QjIsIDB4MDQsIDB4NDEsIDB4QkQsIDB4NTYsIDB4RDMsIDB4MTIsIDB4RDUsIDB4MEEsIDB4MTksIDB4ODMsIDB4NkQsIDB4RUQsCisgICAgMHg4NywgMHhCMCwgMHhBQiwgMHhBRSwgMHg4RiwgMHg3OSwgMHhFNSwgMHg1MSwgMHgzMCwgMHhFOSwgMHg5MCwgMHhCQiwgMHg5MSwgMHgzOCwgMHgyQSwgMHgxNywKKyAgICAweERFLCAweDNGLCAweDUzLCAweDU0LCAweDM0LCAweDFFLCAweDNGLCAweDIwLCAweEUxLCAweEE1LCAweDE3LCAweEQ1LCAweENELCAweDY0LCAweDYyLCAweDFDLAorICAgIDB4NjAsIDB4RDIsIDB4RkMsIDB4QzEsIDB4ODYsIDB4QTEsIDB4NTUsIDB4NjIsIDB4MjksIDB4NTgsIDB4MzMsIDB4RDYsIDB4MUQsIDB4M0YsIDB4RDIsIDB4NzAsCisgICAgMHhENiwgMHg3OSwgMHgwOSwgMHgzNSwgMHgyMywgMHg2QiwgMHhFQSwgMHg4RSwgMHg4MCwgMHhFQiwgMHg0MywgMHhBRiwgMHhCRiwgMHg4NiwgMHhFOCwgMHhENiwKKyAgICAweEJCLCAweDFGLCAweDc1LCAweDdBLCAweDQzLCAweEFDLCAweEM3LCAweDg0LCAweDg1LCAweEFELCAweEUxLCAweDcyLCAweDRBLCAweEY4LCAweDk3LCAweEJFLAorICAgIDB4QzYsIDB4MTEsIDB4Q0QsIDB4QUQsIDB4OTksIDB4QUUsIDB4RDQsIDB4NzgsIDB4NEYsIDB4RkEsIDB4NzYsIDB4NUYsIDB4OTUsIDB4RUYsIDB4MEUsIDB4MEMsCisgICAgMHg4NiwgMHgyRiwgMHg0NSwgMHg2RiwgMHhCMCwgMHhFRCwgMHgzNSwgMHg4NywgMHg1NSwgMHg3OSwgMHgwQiwgMHgzOSwgMHgwRSwgMHgxMywgMHg0QSwgMHg2NywKKyAgICAweDlBLCAweEM1LCAweDI3LCAweEM3LCAweDVDLCAweDk5LCAweDg0LCAweDc1LCAweEU2LCAweEQxLCAweDY2LCAweDJGLCAweDJGLCAweDQ3LCAweEE5LCAweEU2LAorICAgIDB4REQsIDB4OUMsIDB4Q0YsIDB4MTAsIDB4NjQsIDB4MzMsIDB4REUsIDB4QkIsIDB4MzUsIDB4NTQsIDB4OUYsIDB4QkIsIDB4NDAsIDB4MUIsIDB4RjEsIDB4NTMsCisgICAgMHg0OCwgMHhBMSwgMHg2OCwgMHg0MiwgMHgzOSwgMHg5MiwgMHg1MiwgMHhBRSwgMHhBQywgMHhBNSwgMHg2RSwgMHhBNCwgMHgwOSwgMHg5NiwgMHgxQSwgMHhFOCwKKyAgICAweDg4LCAweDU5LCAweDM4LCAweEYzLCAweENBLCAweDcyLCAweDUyLCAweENDLCAweEIwLCAweDRGLCAweDJCLCAweDg2LCAweEE5LCAweEE5LCAweDdELCAweEJGLAorICAgIDB4NkYsIDB4NkEsIDB4MDcsIDB4ODksIDB4NTIsIDB4OTksIDB4RjgsIDB4MDYsIDB4RTUsIDB4MjgsIDB4QzUsIDB4NzQsIDB4RUMsIDB4ODEsIDB4RTEsIDB4RTgsCisgICAgMHgyNSwgMHg2NiwgMHhENywgMHg3RiwgMHhFQSwgMHg1MSwgMHg1NiwgMHhGNywgMHhBOCwgMHgwNiwgMHg0NCwgMHhFOSwgMHhFMCwgMHgyRiwgMHgzMywgMHgxOSwKKyAgICAweDRBLCAweEQxLCAweENELCAweDkyLCAweDE5LCAweDJBLCAweDFGLCAweDAzLCAweDA3LCAweEQxLCAweDQ2LCAweDA1LCAweDBELCAweDY0LCAweDIzLCAweEVDLAorICAgIDB4NEQsIDB4NEUsIDB4MDMsIDB4MkEsIDB4RUQsIDB4QTUsIDB4RjQsIDB4OUYsIDB4QzMsIDB4OTMsIDB4QUIsIDB4QTMsIDB4RTIsIDB4OEMsIDB4M0YsIDB4QzQsCisgICAgMHhBNSwgMHhFMSwgMHg0NywgMHgwRCwgMHgxQSwgMHgzNywgMHg1MiwgMHg5RCwgMHg0NSwgMHg5NiwgMHhFMiwgMHg0RCwgMHg3RiwgMHhGRCwgMHgwNiwgMHgyOCwKKyAgICAweEUzLCAweEVFLCAweEU0LCAweDU3LCAweDVELCAweDdCLCAweDcyLCAweEE3LCAweDhBLCAweENFLCAweDc3LCAweDI2LCAweENGLCAweDk4LCAweDA2LCAweDMxLAorICAgIDB4QjcsIDB4MjgsIDB4NzMsIDB4MUQsIDB4QTMsIDB4NEYsIDB4QjUsIDB4MDEsIDB4RTUsIDB4NEMsIDB4MTQsIDB4QUQsIDB4REIsIDB4M0YsIDB4RTYsIDB4RDEsCisgICAgMHhEQSwgMHhGNywgMHg1OCwgMHhCQywgMHg1NCwgMHg3NiwgMHg5RSwgMHg5OSwgMHhENCwgMHhGQywgMHg3RiwgMHhFOSwgMHg2RCwgMHhGOSwgMHhBRSwgMHhDMiwKKyAgICAweDdCLCAweDQ1LCAweDMyLCAweDdELCAweDI5LCAweDIyLCAweEIyLCAweEYzLCAweDdELCAweDA4LCAweDM3LCAweDQ5LCAweDBDLCAweEI3LCAweEM0LCAweDBFLAorICAgIDB4RTcsIDB4NkMsIDB4MUUsIDB4QTcsIDB4QkUsIDB4NzUsIDB4NEUsIDB4NEMsIDB4MUEsIDB4QkQsIDB4MkYsIDB4QzYsIDB4NzAsIDB4RDcsIDB4MzgsIDB4QUUsCisgICAgMHg2MSwgMHgzQywgMHgwMSwgMHhFQiwgMHgwNywgMHgyNSwgMHhFQSwgMHg0NSwgMHgyMSwgMHgwNiwgMHg5OSwgMHhCRiwgMHhEMCwgMHhBQywgMHhEMSwgMHhEQiwKKyAgICAweDY5LCAweEY0LCAweDY0LCAweDlGLCAweEVCLCAweEIzLCAweENGLCAweEQ4LCAweEIxLCAweDkwLCAweEFBLCAweEFGLCAweDgwLCAweDUwLCAweEEwLCAweDkyLAorICAgIDB4QkEsIDB4N0UsIDB4QTIsIDB4N0IsIDB4MkQsIDB4MTMsIDB4N0UsIDB4OUYsIDB4NEYsIDB4RkQsIDB4MEYsIDB4NDAsIDB4RUMsIDB4MkQsIDB4MEUsIDB4ODUsCisgICAgMHhCNywgMHhEQSwgMHgwMSwgMHg2NCwgMHg5NSwgMHg5NSwgMHg2NiwgMHg5MSwgMHgxNSwgMHgzRiwgMHgwOSwgMHg3NywgMHhBQywgMHhCRiwgMHgwRCwgMHg2RiwKKyAgICAweDdDLCAweEMxLCAweEI3LCAweDVGLCAweEJELCAweERBLCAweEU5LCAweEY3LCAweENDLCAweDgzLCAweDE3LCAweDNCLCAweDE0LCAweDIwLCAweDgxLCAweEU1LAorICAgIDB4OUEsIDB4QTUsIDB4NEEsIDB4NDAsIDB4RDcsIDB4NEEsIDB4N0EsIDB4OTQsIDB4RTEsIDB4NkYsIDB4M0IsIDB4MjcsIDB4RUEsIDB4MTMsIDB4N0UsIDB4NUUsCisgICAgMHhFNywgMHg0RCwgMHg5NiwgMHhGMSwgMHg0NywgMHg4RiwgMHhENCwgMHg3OSwgMHgzRCwgMHg5OCwgMHhENywgMHhDRCwgMHgzQywgMHgzNSwgMHgzQSwgMHgzRiwKKyAgICAweDU0LCAweDNBLCAweDQ4LCAweDczLCAweDY2LCAweEMzLCAweEZELCAweDExLCAweDg3LCAweDc2LCAweDBDLCAweEYwLCAweEM1LCAweDA4LCAweDk3LCAweEE2LAorICAgIDB4QzUsIDB4ODgsIDB4M0YsIDB4NEYsIDB4QzcsIDB4MzIsIDB4NzIsIDB4NUMsIDB4RDQsIDB4MTcsIDB4OEQsIDB4NDUsIDB4OTEsIDB4NjIsIDB4QjIsIDB4QzMsCisgICAgMHg0QSwgMHhBNCwgMHg1OCwgMHg4OCwgMHg1QywgMHg5QywgMHhCNSwgMHg3MiwgMHhGRSwgMHhFOSwgMHhCNywgMHg3MywgMHg1NSwgMHg3QiwgMHhENSwgMHg5MSwKKyAgICAweDY2LCAweDAyLCAweDRDLCAweEY3LCAweDExLCAweDc3LCAweDlELCAweDY4LCAweDRFLCAweDFBLCAweEM1LCAweDZCLCAweEI5LCAweDBBLCAweEMzLCAweDdGLAorICAgIDB4QjAsIDB4NDgsIDB4ODcsIDB4QzQsIDB4QzksIDB4MjksIDB4NzMsIDB4MUEsIDB4MjUsIDB4REEsIDB4NDYsIDB4M0UsIDB4MTAsIDB4MDIsIDB4OUEsIDB4Q0UsCisgICAgMHgyMywgMHhEOSwgMHg3NywgMHhDNiwgMHgwRCwgMHhBMywgMHhENSwgMHhGOCwgMHg2QiwgMHhFMiwgMHgxMCwgMHg5MCwgMHgwMSwgMHhFNywgMHhGNywgMHhBRiwKKyAgICAweDM1LCAweDU5LCAweDhELCAweDFELCAweEE3LCAweDNCLCAweEQyLCAweDVBLCAweDMzLCAweDMzLCAweEFGLCAweEIwLCAweEFDLCAweEQxLCAweDJBLCAweDQzLAorICAgIDB4NzksIDB4MTMsIDB4NUMsIDB4MkEsIDB4NTUsIDB4MzcsIDB4NTIsIDB4QTEsIDB4NjksIDB4MTcsIDB4N0YsIDB4RTksIDB4N0MsIDB4RDcsIDB4NkQsIDB4NDMsCisgICAgMHg1NywgMHhDMywgMHgxQiwgMHgyRSwgMHg1RCwgMHhBMCwgMHg1QiwgMHgzRCwgMHg3NSwgMHg0RSwgMHhGNCwgMHhBMSwgMHgyNCwgMHhERSwgMHg1MCwgMHgxOCwKKyAgICAweDkwLCAweEI5LCAweDg5LCAweEYxLCAweDQ3LCAweDRDLCAweDYxLCAweERCLCAweEQ4LCAweEYwLCAweDY2LCAweEQ2LCAweDFGLCAweEIzLCAweDlGLCAweDkxLAorICAgIDB4NEQsIDB4OTEsIDB4RkQsIDB4NkUsIDB4QjksIDB4NEIsIDB4NDcsIDB4QzksIDB4RjYsIDB4NDgsIDB4MDcsIDB4RkIsIDB4QzYsIDB4NjQsIDB4NDgsIDB4MzMsCisgICAgMHg1RiwgMHg5MiwgMHgxOSwgMHgyMiwgMHhCNywgMHg2OSwgMHhFMiwgMHg5RCwgMHg2OSwgMHgwMiwgMHhFNywgMHg0NywgMHg5NywgMHhBQywgMHg1MiwgMHhBQSwKKyAgICAweEI2LCAweDUwLCAweEM3LCAweDlCLCAweDE2LCAweDI5LCAweDE1LCAweDFGLCAweDEyLCAweDQ2LCAweEUwLCAweEMwLCAweDNGLCAweEE5LCAweEIwLCAweDMwLAorICAgIDB4NDcsIDB4RTcsIDB4NkYsIDB4NzMsIDB4NjIsIDB4QjAsIDB4RDYsIDB4NTAsIDB4MjAsIDB4NDAsIDB4NDcsIDB4NEMsIDB4NUQsIDB4NUMsIDB4QTEsIDB4QkEsCisgICAgMHgwNSwgMHg4RSwgMHgwNiwgMHgyMiwgMHhFQSwgMHhERiwgMHg0QywgMHg1MiwgMHhGRSwgMHgyMSwgMHg3MiwgMHg2QiwgMHhENCwgMHhCMSwgMHhFRiwgMHgzOCwKKyAgICAweDc0LCAweEY1LCAweEIzLCAweDRELCAweDM4LCAweDkxLCAweDVGLCAweDIxLCAweDc0LCAweDRCLCAweDE4LCAweDI3LCAweEJELCAweDcwLCAweDRBLCAweDZBLAorICAgIDB4QkQsIDB4NjIsIDB4MkEsIDB4RUUsIDB4Q0UsIDB4QUUsIDB4NkIsIDB4MjMsIDB4QTIsIDB4OTcsIDB4N0UsIDB4MDYsIDB4MjQsIDB4QUUsIDB4MDksIDB4RDYsCisgICAgMHhDMywgMHhFRSwgMHgxMCwgMHg2RCwgMHg4RCwgMHgwNCwgMHhGMiwgMHhBRSwgMHgwOSwgMHgxMCwgMHhCMCwgMHg1NCwgMHhEMCwgMHgxQywgMHg4NCwgMHg1NSwKKyAgICAweENGLCAweEVELCAweEZELCAweEI4LCAweERFLCAweEY1LCAweEE0LCAweDVCLCAweEZBLCAweDdELCAweDdDLCAweEFDLCAweEMwLCAweDg1LCAweDQ4LCAweEIyLAorICAgIDB4MDUsIDB4NDUsIDB4MDUsIDB4MzYsIDB4REQsIDB4OUEsIDB4RDksIDB4NDMsIDB4NzUsIDB4OTQsIDB4QUYsIDB4RDUsIDB4REYsIDB4NzAsIDB4RTQsIDB4N0QsCisgICAgMHgzNywgMHg0OSwgMHgwRSwgMHhFNiwgMHhEMSwgMHhDMiwgMHgxQSwgMHhCRCwgMHhDRCwgMHhDNiwgMHhEOCwgMHhDNSwgMHhBQSwgMHhEOCwgMHg5MCwgMHg2RSwKKyAgICAweEQ3LCAweDVELCAweEE0LCAweDZCLCAweDE5LCAweEIxLCAweDdBLCAweDE4LCAweEYxLCAweDI5LCAweDRELCAweDIwLCAweEY3LCAweDdBLCAweDdGLCAweDdDLAorICAgIDB4RTYsIDB4OEEsIDB4NTQsIDB4MDUsIDB4QjcsIDB4QTAsIDB4RDksIDB4MzIsIDB4REIsIDB4NTMsIDB4RjYsIDB4NDgsIDB4NjUsIDB4ODksIDB4ODYsIDB4NUIsCisgICAgMHg4NSwgMHg3RiwgMHgxMSwgMHg2MSwgMHgwQSwgMHg5OSwgMHhCRSwgMHgwMSwgMHg1NiwgMHhBMywgMHhBNywgMHgzQSwgMHhFNiwgMHhBQiwgMHhERiwgMHg2QiwKKyAgICAweEI0LCAweDExLCAweDI0LCAweEZDLCAweDM2LCAweDMwLCAweDhDLCAweDg1LCAweDA2LCAweEZCLCAweDBDLCAweEI5LCAweEIyLCAweDUwLCAweDUxLCAweEY4LAorICAgIDB4REQsIDB4M0IsIDB4QjMsIDB4QzcsIDB4NEUsIDB4N0EsIDB4NEEsIDB4OEUsIDB4NDIsIDB4MDEsIDB4Q0IsIDB4QTksIDB4RTUsIDB4MjEsIDB4RDUsIDB4REYsCisgICAgMHg4RSwgMHg1OSwgMHg1MywgMHg4MiwgMHhBOCwgMHhBMCwgMHgyNSwgMHg5RiwgMHhDRSwgMHg5OSwgMHgxNywgMHg5RiwgMHhDNiwgMHhENywgMHhEQiwgMHg2NywKKyAgICAweEE3LCAweDcyLCAweEM4LCAweDIyLCAweDQzLCAweDMyLCAweDhFLCAweDc1LCAweEU3LCAweDI5LCAweEFDLCAweDdBLCAweDBBLCAweDk1LCAweEMzLCAweDMyLAorICAgIDB4QTksIDB4NTYsIDB4RTYsIDB4RDcsIDB4RkUsIDB4MjksIDB4QzEsIDB4NUMsIDB4MDIsIDB4QjYsIDB4RDcsIDB4MTYsIDB4MDYsIDB4QzcsIDB4ODYsIDB4MzMsCisgICAgMHg2OCwgMHg0MSwgMHg2NCwgMHhBRSwgMHgxRCwgMHhENiwgMHhFQywgMHg5RiwgMHg0RCwgMHgyQSwgMHg3OSwgMHgwMSwgMHhEQiwgMHg0OCwgMHg1MiwgMHhCNywKKyAgICAweDYyLCAweDM2LCAweDJCLCAweDQ3LCAweDJDLCAweDBDLCAweDlGLCAweDEwLCAweEIwLCAweDE2LCAweDM0LCAweDEzLCAweEFBLCAweEY4LCAweDE4LCAweEM1LAorICAgIDB4QUEsIDB4QUYsIDB4NTcsIDB4MDMsIDB4QzksIDB4NDgsIDB4RTQsIDB4NzUsIDB4OTQsIDB4Q0IsIDB4REEsIDB4QzIsIDB4REYsIDB4REUsIDB4OTIsIDB4MjMsCisgICAgMHgxRSwgMHgwNywgMHhGOCwgMHgwNCwgMHhGQywgMHg5MCwgMHgzNCwgMHhDRSwgMHhDMywgMHg5QywgMHg4NywgMHhCRiwgMHhBNiwgMHg0NSwgMHgxQiwgMHhGQywKKyAgICAweDczLCAweDJCLCAweEY4LCAweDRFLCAweDk2LCAweDgyLCAweERBLCAweEU4LCAweDk4LCAweDg3LCAweDBELCAweDM3LCAweENELCAweEQxLCAweDNFLCAweDMxLAorICAgIDB4MTUsIDB4NzIsIDB4ODcsIDB4M0IsIDB4NjcsIDB4QUYsIDB4NUQsIDB4MEIsIDB4ODgsIDB4RkYsIDB4NDQsIDB4QzEsIDB4QUIsIDB4RDEsIDB4MUUsIDB4NUYsCisgICAgMHhFNiwgMHg4QiwgMHhBRCwgMHgwRiwgMHg5NSwgMHhGQywgMHg5RiwgMHg4RiwgMHg5MSwgMHhFRCwgMHgzNiwgMHhFMiwgMHhENiwgMHgyRSwgMHhDMywgMHgyRCwKKyAgICAweDlFLCAweDgwLCAweDZBLCAweDc4LCAweDRBLCAweENBLCAweDA0LCAweENELCAweDY0LCAweDczLCAweDdBLCAweDgxLCAweDJELCAweDQ1LCAweDUzLCAweEM4LAorICAgIDB4RUQsIDB4NjgsIDB4NzQsIDB4MzYsIDB4ODUsIDB4ODMsIDB4RDksIDB4NkYsIDB4OEMsIDB4QUYsIDB4RUMsIDB4RTUsIDB4QzEsIDB4RjEsIDB4NjUsIDB4MEMsCisgICAgMHg0NSwgMHhCNCwgMHhFNywgMHhEMSwgMHhGOCwgMHgzQywgMHhBQSwgMHhGMywgMHgxRSwgMHhDNywgMHg5OSwgMHg3OCwgMHgxMywgMHhDOSwgMHg1NSwgMHgyQiwKKyAgICAweEE4LCAweDVDLCAweDI0LCAweEUyLCAweERGLCAweDQzLCAweDQ2LCAweDA5LCAweEFELCAweEFCLCAweDFELCAweEVELCAweEFBLCAweEUwLCAweEU2LCAweDA5LAorICAgIDB4RTIsIDB4NTIsIDB4RTAsIDB4NUUsIDB4NzgsIDB4RjgsIDB4MjYsIDB4ODgsIDB4NjYsIDB4QjksIDB4OTgsIDB4NjgsIDB4NTIsIDB4N0EsIDB4QjQsIDB4REYsCisgICAgMHgzNCwgMHhBQSwgMHhGNiwgMHgxQSwgMHg0QywgMHgzRCwgMHgzNiwgMHg4RCwgMHhCNywgMHgwNSwgMHg1QiwgMHgwQiwgMHgwMCwgMHhGOCwgMHgzQiwgMHhERCwKKyAgICAweDk1LCAweEI3LCAweDQ3LCAweDNBLCAweEIwLCAweDVBLCAweDBBLCAweEE4LCAweDg1LCAweDE3LCAweENCLCAweDRFLCAweDkyLCAweDQ3LCAweDcyLCAweDkyLAorICAgIDB4NzMsIDB4NkEsIDB4QUIsIDB4QjUsIDB4N0QsIDB4OTksIDB4QkMsIDB4OEIsIDB4QUMsIDB4MUIsIDB4RTgsIDB4MUEsIDB4RTYsIDB4MzIsIDB4MTEsIDB4NzksCisgICAgMHgyQywgMHg2QiwgMHg4OCwgMHg1NiwgMHg3MCwgMHg0MSwgMHhFRCwgMHhDMywgMHg3RSwgMHgwQSwgMHhBOCwgMHhERiwgMHhDQSwgMHhBOCwgMHhENCwgMHgzRSwKKyAgICAweDFBLCAweEUwLCAweDlFLCAweDZELCAweDdDLCAweEJELCAweDMyLCAweEIxLCAweDdGLCAweDdELCAweDMyLCAweDE4LCAweDRELCAweDE4LCAweDVFLCAweEYzLAorICAgIDB4MTksIDB4MzAsIDB4Q0EsIDB4OEMsIDB4NjYsIDB4QjUsIDB4NzcsIDB4NTcsIDB4NUIsIDB4OTgsIDB4OEYsIDB4NkQsIDB4NkIsIDB4MkQsIDB4OEQsIDB4QzQsCisgICAgMHgwQiwgMHg3NiwgMHhFMCwgMHgzNywgMHg0MiwgMHgwMiwgMHhDNCwgMHg2MSwgMHhGRSwgMHg0MywgMHg1RiwgMHg0MSwgMHhBNywgMHg0MCwgMHg2NCwgMHg0NSwKKyAgICAweEQ2LCAweDA5LCAweDk5LCAweDNGLCAweDk1LCAweDczLCAweDBELCAweDlGLCAweEM0LCAweEJFLCAweDIyLCAweDJBLCAweEU1LCAweDRDLCAweEFELCAweDMyLAorICAgIDB4QzIsIDB4RjMsIDB4NDksIDB4QzQsIDB4Q0YsIDB4OUMsIDB4RDEsIDB4NjMsIDB4M0UsIDB4QkEsIDB4RDMsIDB4OUIsIDB4MjQsIDB4MkYsIDB4NTIsIDB4RjMsCisgICAgMHhCQSwgMHgyMSwgMHgyRSwgMHhFQywgMHhERiwgMHg4RCwgMHhBRCwgMHgzRiwgMHhGMywgMHhFMSwgMHgyMywgMHg4QywgMHgwRCwgMHg3NiwgMHhERCwgMHhDQiwKKyAgICAweDM2LCAweEI5LCAweDdBLCAweDEzLCAweDc4LCAweEIyLCAweDZELCAweERCLCAweDE2LCAweEFELCAweDJBLCAweDk0LCAweEFDLCAweEY5LCAweDg2LCAweDhCLAorICAgIDB4MkQsIDB4NzUsIDB4MzMsIDB4ODYsIDB4NDMsIDB4MTgsIDB4Q0YsIDB4NjUsIDB4NEYsIDB4MDgsIDB4MjIsIDB4ODgsIDB4NkUsIDB4MzgsIDB4QkYsIDB4RjcsCisgICAgMHgxMiwgMHgzRiwgMHg4QSwgMHhDMywgMHg0OSwgMHhBMCwgMHhDNiwgMHgwMywgMHhBQiwgMHgxQywgMHhENSwgMHgzRCwgMHhBMiwgMHg0MywgMHhGRiwgMHg5MywKKyAgICAweEQ0LCAweDgwLCAweERBLCAweERDLCAweDc3LCAweDZELCAweEY4LCAweEUxLCAweEQzLCAweDg4LCAweEE0LCAweENGLCAweDgyLCAweEUwLCAweDA4LCAweEIyLAorICAgIDB4NkUsIDB4OTgsIDB4QkEsIDB4NkMsIDB4MEEsIDB4ODQsIDB4QTAsIDB4OTQsIDB4NTEsIDB4RkUsIDB4MTcsIDB4OTYsIDB4RjEsIDB4QkMsIDB4RDAsIDB4RkIsCisgICAgMHg2QiwgMHg1MCwgMHgxMywgMHhBNiwgMHg4RSwgMHg0MiwgMHhGQSwgMHgwMSwgMHg4QywgMHhGNCwgMHgwNCwgMHgwMiwgMHhCMSwgMHhBOCwgMHg1MywgMHg1RCwKKyAgICAweDlCLCAweDE1LCAweDQ4LCAweEMzLCAweDgxLCAweENCLCAweEFGLCAweDRCLCAweDRFLCAweDYxLCAweEI2LCAweDg2LCAweDVDLCAweEIxLCAweDgzLCAweDQ0LAorICAgIDB4NUMsIDB4QjksIDB4M0YsIDB4MzEsIDB4ODQsIDB4RUYsIDB4NzUsIDB4MjAsIDB4NjYsIDB4NEMsIDB4NzcsIDB4NjYsIDB4NzMsIDB4MDQsIDB4NDUsIDB4QjgsCisgICAgMHhFNywgMHhCRCwgMHgxNCwgMHhGOSwgMHg5MywgMHhDNywgMHgxNywgMHg2MCwgMHhFNSwgMHg2MywgMHhBRSwgMHg2QSwgMHhENiwgMHg5OSwgMHhDRCwgMHgxMCwKKyAgICAweDRGLCAweDZCLCAweEMxLCAweDQ0LCAweDYzLCAweDM3LCAweDc5LCAweDlDLCAweDlDLCAweEFBLCAweEJDLCAweDY0LCAweDE5LCAweDYxLCAweEI1LCAweEMxLAorICAgIDB4NTIsIDB4MDksIDB4NkUsIDB4NkIsIDB4NkIsIDB4OTAsIDB4OEIsIDB4QTYsIDB4MjMsIDB4REMsIDB4RTQsIDB4RTEsIDB4QjQsIDB4ODIsIDB4NDcsIDB4MTEsCisgICAgMHg4NiwgMHg5QiwgMHg5RiwgMHhFMCwgMHgyNCwgMHhDMCwgMHgxOSwgMHhBRSwgMHg3RCwgMHg5QSwgMHg4QywgMHg0OSwgMHg2QywgMHg0MiwgMHg2RCwgMHg0RSwKKyAgICAweDFGLCAweEM3LCAweDY2LCAweDIwLCAweDE5LCAweENBLCAweEEwLCAweEYwLCAweDQ0LCAweDFBLCAweDYxLCAweDFFLCAweDY3LCAweDU4LCAweDRCLCAweEE0LAorICAgIDB4MTUsIDB4OEYsIDB4MjYsIDB4MkMsIDB4QUMsIDB4RTgsIDB4QkEsIDB4MUQsIDB4MzMsIDB4NzcsIDB4MjIsIDB4ODMsIDB4QkIsIDB4RTEsIDB4MTgsIDB4QkQsCisgICAgMHg0NSwgMHgxQSwgMHhCNCwgMHg5RiwgMHg0RiwgMHgxRiwgMHg4MCwgMHhFOCwgMHg5OSwgMHgxNCwgMHhCMiwgMHgxQywgMHgxRSwgMHg0RSwgMHhCQiwgMHgwNCwKKyAgICAweEQ2LCAweDU3LCAweDUwLCAweDZGLCAweDc5LCAweDYwLCAweEFBLCAweEMxLCAweEZELCAweDVELCAweEM3LCAweDcyLCAweEE3LCAweEJDLCAweEQwLCAweDI5LAorICAgIDB4MjksIDB4MzIsIDB4RDksIDB4REYsIDB4OUQsIDB4RjQsIDB4QzYsIDB4RjYsIDB4NTQsIDB4NjcsIDB4RjQsIDB4MTYsIDB4M0MsIDB4QjcsIDB4QTksIDB4MDYsCisgICAgMHg5RCwgMHhEQywgMHhEOSwgMHg2OSwgMHg0QywgMHhENywgMHhDMiwgMHg4QiwgMHhGNywgMHg3RSwgMHhBRCwgMHg3RSwgMHhEOCwgMHhDNywgMHgyMywgMHg5MCwKKyAgICAweDFGLCAweEQ2LCAweEM0LCAweEQzLCAweEJCLCAweEQ0LCAweDU3LCAweDM1LCAweEY2LCAweEQzLCAweDUyLCAweDMyLCAweDE4LCAweDIwLCAweEVDLCAweDMzLAorICAgIDB4OTcsIDB4MDEsIDB4QjUsIDB4OTEsIDB4N0MsIDB4Q0YsIDB4QjQsIDB4NkIsIDB4NTUsIDB4MEMsIDB4NUMsIDB4NzMsIDB4RTksIDB4OEQsIDB4OUUsIDB4REQsCisgICAgMHhDRiwgMHhGOCwgMHhERiwgMHhCOCwgMHgyMSwgMHgxMywgMHg2MiwgMHgyQiwgMHg2NiwgMHg2RSwgMHg3NiwgMHgwMywgMHgwNCwgMHg3NSwgMHhBQSwgMHg1NiwKKyAgICAweERGLCAweDkxLCAweDVGLCAweDI2LCAweDlCLCAweEY5LCAweDcyLCAweDI1LCAweDgxLCAweDYzLCAweDVCLCAweEZFLCAweEU0LCAweDJBLCAweDhFLCAweDE0LAorICAgIDB4MDMsIDB4RkQsIDB4OEQsIDB4MjMsIDB4MzUsIDB4ODIsIDB4NjQsIDB4NzAsIDB4MzAsIDB4OTEsIDB4M0YsIDB4QkIsIDB4MTksIDB4MkMsIDB4MDQsIDB4OUUsCisgICAgMHg0NCwgMHhEQywgMHg3OSwgMHg5QSwgMHg3QiwgMHg2OSwgMHg1MiwgMHgwOCwgMHhDMywgMHg5RSwgMHgyQSwgMHhCOSwgMHgwMiwgMHhENCwgMHgxOSwgMHhGMiwKKyAgICAweDNBLCAweDRBLCAweDRDLCAweDQ3LCAweDA4LCAweDM4LCAweDRCLCAweDJFLCAweDc1LCAweEY4LCAweDg2LCAweDdDLCAweDA5LCAweDcyLCAweEVDLCAweEIyLAorICAgIDB4QUMsIDB4OUMsIDB4RUMsIDB4NDIsIDB4NUMsIDB4NjEsIDB4N0YsIDB4RDgsIDB4MjQsIDB4MDUsIDB4ODgsIDB4NTUsIDB4M0QsIDB4QjcsIDB4NzksIDB4OTAsCisgICAgMHg3MywgMHg3RCwgMHgwQSwgMHgxMCwgMHhGNSwgMHhCMywgMHg1QywgMHhDOCwgMHg4RCwgMHg1RSwgMHg1OSwgMHg1MSwgMHhEMiwgMHhEQiwgMHg0RSwgMHg1RCwKKyAgICAweDRCLCAweDM5LCAweDE2LCAweDE0LCAweEYyLCAweEEyLCAweDc1LCAweDI4LCAweDY2LCAweDQ1LCAweEJGLCAweDczLCAweDYwLCAweEQzLCAweEZELCAweDUzLAorICAgIDB4REEsIDB4OEQsIDB4NUMsIDB4OTQsIDB4MkUsIDB4OTEsIDB4MTQsIDB4RTIsIDB4QUEsIDB4RUYsIDB4OTMsIDB4ODIsIDB4NjgsIDB4MEEsIDB4NjksIDB4MUYsCisgICAgMHhFMiwgMHgxMCwgMHgyNiwgMHhFQiwgMHg2OSwgMHhENiwgMHgzNSwgMHg5QiwgMHg2MiwgMHgwNSwgMHg5NywgMHg3RCwgMHgwNCwgMHg2RCwgMHg2QywgMHgyMiwKKyAgICAweDNFLCAweDdDLCAweEFCLCAweDEzLCAweEMwLCAweEVGLCAweDRDLCAweEUxLCAweDk2LCAweDVCLCAweEI3LCAweEEzLCAweDgwLCAweEMyLCAweDg5LCAweDFBLAorICAgIDB4MkYsIDB4NDcsIDB4MEIsIDB4RDksIDB4NzYsIDB4NkMsIDB4RDMsIDB4MDMsIDB4MDgsIDB4QTMsIDB4OEUsIDB4OUIsIDB4QUUsIDB4QTEsIDB4NTUsIDB4NzMsCisgICAgMHg3QiwgMHg5RiwgMHhBRSwgMHg0MCwgMHhCNiwgMHgwQywgMHgwQSwgMHg4QSwgMHg4MywgMHg3QSwgMHg4OCwgMHg2QiwgMHgzRSwgMHhENywgMHg5OCwgMHg3RiwKKyAgICAweDQzLCAweDQwLCAweDAxLCAweEU0LCAweDNBLCAweEZGLCAweDI2LCAweEVDLCAweDkxLCAweDY4LCAweDcxLCAweEQ4LCAweDg0LCAweDE4LCAweEMxLCAweEQ1LAorICAgIDB4QUIsIDB4QTIsIDB4QkIsIDB4Q0MsIDB4RUEsIDB4NDMsIDB4NzksIDB4NzMsIDB4OTcsIDB4NEMsIDB4OUIsIDB4MDMsIDB4RDAsIDB4MTAsIDB4N0MsIDB4MDksCisgICAgMHg4NCwgMHgzMiwgMHgwNCwgMHgwQSwgMHgzNSwgMHhBNiwgMHgyOSwgMHhBQiwgMHg2RSwgMHgyNiwgMHg5QSwgMHhDRiwgMHg0OSwgMHg4RiwgMHgxNSwgMHhDMiwKKyAgICAweEFDLCAweDU2LCAweEQ2LCAweDgyLCAweEI5LCAweDNDLCAweEQyLCAweERELCAweDY4LCAweEI3LCAweDQzLCAweEJDLCAweEJDLCAweEZELCAweEE0LCAweEM1LAorICAgIDB4Q0UsIDB4NUMsIDB4QzAsIDB4RDMsIDB4OTMsIDB4RDYsIDB4NDAsIDB4QUYsIDB4REEsIDB4MjMsIDB4NTUsIDB4ODMsIDB4M0EsIDB4RTYsIDB4NkMsIDB4NjQsCisgICAgMHhBMCwgMHgzNywgMHhDMCwgMHg0NywgMHhCQSwgMHhBQSwgMHg2MiwgMHg3OSwgMHg1NiwgMHg4NSwgMHg1NSwgMHhDMSwgMHhFQSwgMHg4MCwgMHhENSwgMHgzQywKKyAgICAweEJCLCAweDlGLCAweDg5LCAweEVBLCAweDQ1LCAweEZDLCAweDU5LCAweDZDLCAweDI2LCAweEYwLCAweDA3LCAweDcyLCAweDMxLCAweENDLCAweDVGLCAweDhGLAorICAgIDB4QTUsIDB4NjEsIDB4MjAsIDB4MTYsIDB4NTUsIDB4NEQsIDB4ODcsIDB4NzIsIDB4MTMsIDB4RTYsIDB4QTksIDB4QjMsIDB4QUYsIDB4QkQsIDB4NDIsIDB4MDgsCisgICAgMHgzOSwgMHhENSwgMHhDRiwgMHg4MSwgMHhDQSwgMHg1RSwgMHhEMCwgMHhBQiwgMHg3NywgMHhCMCwgMHgwNSwgMHg3RSwgMHg3MywgMHg4NywgMHhGRSwgMHhGNCwKKyAgICAweEE3LCAweDdGLCAweDAwLCAweEJFLCAweEY5LCAweDY3LCAweDgzLCAweDY0LCAweDYxLCAweDE5LCAweDRGLCAweDIzLCAweDIxLCAweEQ5LCAweDM3LCAweEI3LAorICAgIDB4NTQsIDB4RDMsIDB4MkYsIDB4MEMsIDB4MzksIDB4RDIsIDB4QTQsIDB4NzgsIDB4RkQsIDB4M0MsIDB4OUYsIDB4NUMsIDB4QzUsIDB4MTYsIDB4NTUsIDB4OUIsCisgICAgMHhCQiwgMHg5NiwgMHg3MiwgMHgxMywgMHgxRCwgMHhDQywgMHhBRiwgMHhCNCwgMHhDMSwgMHhFQiwgMHg3RCwgMHhGOSwgMHhBMSwgMHgzNywgMHg5MywgMHgxMywKKyAgICAweEMzLCAweERCLCAweDU4LCAweEY4LCAweDdDLCAweEZCLCAweDJFLCAweDkxLCAweDdCLCAweDZELCAweDIxLCAweEUyLCAweENFLCAweEIxLCAweEFGLCAweDhBLAorICAgIDB4NTUsIDB4MjUsIDB4NUEsIDB4MDgsIDB4MzUsIDB4QUQsIDB4RjYsIDB4MUUsIDB4NTQsIDB4NTYsIDB4QjksIDB4NTIsIDB4QTgsIDB4OUYsIDB4OUYsIDB4MDYsCisgICAgMHg5QiwgMHgzMCwgMHg3QiwgMHg1RiwgMHgyNSwgMHgxMywgMHg3QywgMHhENCwgMHhBNywgMHg1NiwgMHhFMywgMHg0OCwgMHg1NSwgMHg0MCwgMHhCOCwgMHgzRSwKKyAgICAweDExLCAweDdCLCAweDgxLCAweDg5LCAweDJFLCAweDQwLCAweDc2LCAweDFELCAweDRDLCAweDMwLCAweENGLCAweEJFLCAweEE2LCAweDY2LCAweDI1LCAweDY5LAorICAgIDB4OUIsIDB4RTcsIDB4ODUsIDB4MzYsIDB4NzEsIDB4NDUsIDB4RDQsIDB4NTQsIDB4MjQsIDB4M0IsIDB4MkQsIDB4MTYsIDB4OUIsIDB4RDYsIDB4RTYsIDB4OTEsCisgICAgMHgxMywgMHg1MywgMHg2RSwgMHg1NiwgMHgyMSwgMHhCNiwgMHgzQywgMHgxMiwgMHgyMywgMHgyMCwgMHhDOSwgMHhCNywgMHhERCwgMHhGMSwgMHgwNCwgMHgxQywKKyAgICAweDQ5LCAweDU4LCAweDQ0LCAweDk3LCAweDRBLCAweDIxLCAweDM2LCAweDBDLCAweDdELCAweERFLCAweDNGLCAweDJGLCAweEU2LCAweDhFLCAweDA1LCAweDQyLAorICAgIDB4MjgsIDB4MkEsIDB4QTUsIDB4MEYsIDB4RjEsIDB4MzEsIDB4N0IsIDB4OUEsIDB4MUIsIDB4MzYsIDB4NDAsIDB4NDgsIDB4QzMsIDB4QzQsIDB4NTksIDB4OEYsCisgICAgMHhGRiwgMHg4MiwgMHgyRiwgMHhFMiwgMHg3NSwgMHhFRiwgMHg1NCwgMHgzOSwgMHgzMSwgMHhDOCwgMHg1RiwgMHhEMiwgMHhEQSwgMHg3NCwgMHg1MCwgMHg0NywKKyAgICAweDQ1LCAweDE2LCAweEM5LCAweEY4LCAweDJCLCAweEFFLCAweDA3LCAweDZCLCAweDE4LCAweEY2LCAweDIyLCAweDFGLCAweEY0LCAweDM5LCAweDZELCAweDEzLAorICAgIDB4ODMsIDB4MEMsIDB4Q0IsIDB4RjMsIDB4MTIsIDB4MUIsIDB4QjQsIDB4MjcsIDB4QjYsIDB4QjEsIDB4NjcsIDB4NzksIDB4MjksIDB4RDcsIDB4QUYsIDB4MDAsCisgICAgMHhGMSwgMHhFNCwgMHgxNCwgMHhCNCwgMHhBMSwgMHg5NSwgMHg1NCwgMHg0NywgMHgxOSwgMHg3QiwgMHhCMCwgMHhGNiwgMHg4MSwgMHg0MiwgMHg5NCwgMHhFNCwKKyAgICAweEQzLCAweEEzLCAweDlELCAweDc0LCAweEU1LCAweDkzLCAweEVFLCAweDAyLCAweDVBLCAweDQ0LCAweDlGLCAweDI1LCAweENCLCAweEIyLCAweDhFLCAweEVFLAorICAgIDB4RDgsIDB4RTcsIDB4MDIsIDB4NUQsIDB4ODMsIDB4OTQsIDB4NjgsIDB4REQsIDB4QTQsIDB4M0UsIDB4NkEsIDB4ODYsIDB4RTYsIDB4MkUsIDB4RkMsIDB4MUMsCisgICAgMHhDNSwgMHhBRSwgMHg5MSwgMHg3RCwgMHgzNCwgMHgxMiwgMHhENSwgMHgxMCwgMHhEOCwgMHg0RSwgMHgzNCwgMHgxOCwgMHg2QiwgMHg3MiwgMHgwRCwgMHg4RiwKKyAgICAweDI4LCAweDE3LCAweEUyLCAweDgxLCAweEQ2LCAweEU0LCAweDcwLCAweEJCLCAweDIwLCAweDBDLCAweEU5LCAweEE5LCAweDY1LCAweEVDLCAweERDLCAweDgwLAorICAgIDB4NDEsIDB4MTMsIDB4QjQsIDB4NTMsIDB4NjcsIDB4MUYsIDB4RjQsIDB4QjAsIDB4QTYsIDB4NEQsIDB4QjEsIDB4NDMsIDB4MjksIDB4MDAsIDB4QUQsIDB4NTEsCisgICAgMHhFOCwgMHg0QywgMHg2QSwgMHg2MiwgMHg4QiwgMHhCOSwgMHhFRSwgMHgwNSwgMHg1MywgMHhFNSwgMHhCRSwgMHhDQywgMHhERCwgMHgwOCwgMHhBOSwgMHg4OSwKKyAgICAweDg0LCAweDA0LCAweEYzLCAweEM0LCAweEE5LCAweDRFLCAweDQwLCAweDE4LCAweEU0LCAweEY4LCAweEVDLCAweEIwLCAweEY0LCAweDdCLCAweDY5LCAweDZELAorICAgIDB4RDEsIDB4QjMsIDB4NUYsIDB4NTMsIDB4ODUsIDB4MTQsIDB4RjUsIDB4QzksIDB4QkUsIDB4OUQsIDB4OEUsIDB4N0IsIDB4OUEsIDB4OEMsIDB4NzcsIDB4QTIsCisgICAgMHhENiwgMHg5NywgMHhBMywgMHgzNSwgMHg0OCwgMHg0NywgMHg5MywgMHg1QywgMHgyRCwgMHhCNywgMHhCQSwgMHg4MCwgMHhDMCwgMHhCNSwgMHhENSwgMHgyNCwKKyAgICAweDQwLCAweEE4LCAweEI2LCAweEE2LCAweDRFLCAweDRDLCAweDRDLCAweEU4LCAweDYwLCAweEU0LCAweEY3LCAweERDLCAweDI0LCAweEQ5LCAweDBGLCAweDNDLAorICAgIDB4QzcsIDB4ODYsIDB4QzksIDB4RUIsIDB4RUEsIDB4RDksIDB4REMsIDB4MTIsIDB4NTAsIDB4MzAsIDB4QjIsIDB4N0QsIDB4MjgsIDB4MkUsIDB4OUQsIDB4N0MsCisgICAgMHhDMywgMHg3MiwgMHg2RCwgMHgyMiwgMHg0MCwgMHg4MSwgMHgxQSwgMHg1QiwgMHhFRCwgMHgxNiwgMHhERCwgMHg2RCwgMHgxNSwgMHg4MywgMHhEMSwgMHhDNiwKKyAgICAweDM1LCAweEJELCAweDExLCAweDFGLCAweDBGLCAweDYwLCAweDg5LCAweDIyLCAweENELCAweDYzLCAweDM5LCAweDQyLCAweDJCLCAweDA1LCAweEU1LCAweDQwLAorICAgIDB4ODksIDB4QzMsIDB4NjQsIDB4QkMsIDB4QjIsIDB4N0IsIDB4MUUsIDB4QkYsIDB4MzcsIDB4NjgsIDB4MEEsIDB4ODIsIDB4RDgsIDB4NzEsIDB4MTAsIDB4RTcsCisgICAgMHhEMywgMHhFQiwgMHhGOSwgMHgyNCwgMHhCRCwgMHg1RiwgMHg2MiwgMHg3RiwgMHhBQSwgMHhGMCwgMHg1QiwgMHhFNSwgMHg3NSwgMHhDQiwgMHg4NCwgMHhBNCwKKyAgICAweDY2LCAweDc4LCAweDgwLCAweEU0LCAweEQ1LCAweDA0LCAweDAyLCAweEU0LCAweEU2LCAweDc5LCAweDY3LCAweEMyLCAweDc5LCAweDkyLCAweDNDLCAweDMyLAorICAgIDB4OEMsIDB4QjYsIDB4MUQsIDB4MjEsIDB4REIsIDB4QjgsIDB4OTEsIDB4ODgsIDB4NzYsIDB4QkQsIDB4MjAsIDB4MzAsIDB4OEEsIDB4ODcsIDB4NDksIDB4N0YsCisgICAgMHg1NCwgMHgzMiwgMHg5NSwgMHgzRCwgMHgxRiwgMHg0NCwgMHhERSwgMHhBMCwgMHhFNiwgMHg0RCwgMHgwMCwgMHhFOSwgMHgxRiwgMHgxMiwgMHg0OSwgMHgyQSwKKyAgICAweDczLCAweDU4LCAweDU1LCAweEIyLCAweDIyLCAweDM2LCAweDQ2LCAweDM3LCAweDZFLCAweDg5LCAweENGLCAweDhFLCAweDE3LCAweDkxLCAweDhDLCAweEQzLAorICAgIDB4QUUsIDB4NDAsIDB4NzUsIDB4NjYsIDB4QUEsIDB4QUQsIDB4MzcsIDB4NzcsIDB4MDAsIDB4OUIsIDB4NTYsIDB4OTgsIDB4NTIsIDB4MUYsIDB4NDEsIDB4MDEsCisgICAgMHg2MCwgMHg2QSwgMHgzRCwgMHhCMSwgMHgwNywgMHg1RiwgMHg1NywgMHg3MiwgMHhFNiwgMHg2OSwgMHgwQiwgMHg5MywgMHhFNywgMHgxQiwgMHhCMSwgMHg1NCwKKyAgICAweDI2LCAweEIwLCAweDUyLCAweEExLCAweEIxLCAweDBBLCAweDFBLCAweDU5LCAweEJELCAweEE1LCAweDcwLCAweDk4LCAweDIxLCAweENELCAweDA5LCAweDM1LAorICAgIDB4MUEsIDB4MjksIDB4MDMsIDB4MTAsIDB4QUMsIDB4NDAsIDB4OTAsIDB4NDcsIDB4RkIsIDB4QTMsIDB4MDcsIDB4QjQsIDB4NDMsIDB4Q0MsIDB4MzcsIDB4MTQsCisgICAgMHhDOSwgMHhBOCwgMHhENCwgMHg1QSwgMHhEMCwgMHg3MCwgMHhGOSwgMHg4NSwgMHhBQywgMHhGMywgMHhGQSwgMHhBNSwgMHg1QSwgMHg5QSwgMHhGMSwgMHhDMywKKyAgICAweDU0LCAweERDLCAweEUxLCAweDAwLCAweDJELCAweEQ2LCAweENGLCAweDdBLCAweDAyLCAweDg3LCAweDhCLCAweDQ5LCAweDZDLCAweDE5LCAweEY0LCAweDY4LAorICAgIDB4REUsIDB4NUYsIDB4MTEsIDB4OTEsIDB4RjEsIDB4N0EsIDB4RjIsIDB4MzQsIDB4QTUsIDB4REYsIDB4NDIsIDB4MDEsIDB4MkUsIDB4MkYsIDB4MTIsIDB4OTEsCisgICAgMHhBOSwgMHg1RSwgMHgyMywgMHg2RSwgMHhGQywgMHgxQywgMHg5NiwgMHhGQSwgMHhFOCwgMHhCQiwgMHg0QSwgMHg0MiwgMHg3RiwgMHhCNywgMHhFRSwgMHgxMiwKKyAgICAweDNDLCAweDI1LCAweERCLCAweDdCLCAweDk1LCAweEVELCAweEY2LCAweEFCLCAweEJDLCAweDU5LCAweEU0LCAweEYzLCAweDE1LCAweDcxLCAweEFCLCAweEFCLAorICAgIDB4MUIsIDB4MjcsIDB4NkIsIDB4NDgsIDB4NDQsIDB4NTIsIDB4QzMsIDB4QTMsIDB4QjAsIDB4QzEsIDB4NDksIDB4Q0UsIDB4NzQsIDB4RDksIDB4OUQsIDB4QzgsCisgICAgMHhBQywgMHg3MSwgMHhCNSwgMHhCOSwgMHgxQiwgMHhBNiwgMHhEMywgMHhGOSwgMHg4NCwgMHgzMCwgMHhBRSwgMHg5RSwgMHg2OSwgMHgzMSwgMHhCOCwgMHhCNCwKKyAgICAweDY0LCAweEU4LCAweEQ5LCAweDQ3LCAweEJELCAweDYzLCAweEI1LCAweDI1LCAweDMwLCAweDFBLCAweEQ3LCAweEIyLCAweEMwLCAweEJELCAweDc1LCAweDMwLAorICAgIDB4NTUsIDB4MDIsIDB4NUIsIDB4QzYsIDB4RTYsIDB4NjMsIDB4NjksIDB4NjUsIDB4QUYsIDB4RTcsIDB4N0IsIDB4QUIsIDB4NUQsIDB4QTYsIDB4QTUsIDB4QzQsCisgICAgMHhBRiwgMHhERSwgMHhBQywgMHg2NywgMHgxRSwgMHg3RiwgMHg3MywgMHg1NSwgMHgyQywgMHgzMywgMHgyNSwgMHg4MywgMHgyNCwgMHgzRiwgMHhCMCwgMHg0OCwKKyAgICAweEZDLCAweDA4LCAweEI5LCAweDYwLCAweEJCLCAweEZCLCAweDNELCAweEZELCAweEEzLCAweEY2LCAweEYyLCAweDFCLCAweDg5LCAweDgyLCAweDg3LCAweEQxLAorICAgIDB4MTAsIDB4RTUsIDB4QkQsIDB4RUYsIDB4MTYsIDB4QTcsIDB4M0YsIDB4MTUsIDB4MzIsIDB4MTEsIDB4NTAsIDB4QjksIDB4N0QsIDB4NzcsIDB4MTUsIDB4MEYsCisgICAgMHhCQSwgMHhGRSwgMHg3NiwgMHgwQSwgMHg0RiwgMHhGMiwgMHhBMCwgMHhGQiwgMHgyRCwgMHhGMSwgMHhDRSwgMHg1RSwgMHhFNywgMHg1MCwgMHg2QSwgMHhBMCwKKyAgICAweEIyLCAweEI0LCAweEVFLCAweDJCLCAweEQ1LCAweDNCLCAweDAzLCAweDA3LCAweEIwLCAweDQwLCAweDRBLCAweDI2LCAweEY0LCAweDNFLCAweDFGLCAweEM0LAorICAgIDB4NTgsIDB4ODAsIDB4OEEsIDB4M0IsIDB4MDAsIDB4NTIsIDB4MkIsIDB4NTMsIDB4QkYsIDB4RDQsIDB4OEYsIDB4RUUsIDB4NkQsIDB4QTQsIDB4MEQsIDB4RjcsCisgICAgMHg4MiwgMHhGOCwgMHg1MywgMHhEQSwgMHhGNiwgMHg1MywgMHhBRiwgMHhGOCwgMHhEMiwgMHhEOCwgMHhGQiwgMHgxRiwgMHgyRCwgMHg5OCwgMHg4NywgMHhEQSwKKyAgICAweDE5LCAweEFDLCAweDQ4LCAweDZCLCAweEVBLCAweERFLCAweDA4LCAweEE2LCAweDEzLCAweDM3LCAweDFCLCAweDJDLCAweDE1LCAweDYwLCAweEIyLCAweERCLAorICAgIDB4MjgsIDB4MEUsIDB4MkUsIDB4QTMsIDB4NEEsIDB4QjEsIDB4RjIsIDB4NUMsIDB4NDgsIDB4NjksIDB4NDYsIDB4RkEsIDB4MDgsIDB4OUYsIDB4RTksIDB4NjUsCisgICAgMHgyRiwgMHgzQSwgMHgyOSwgMHhCMCwgMHg4OCwgMHhCNSwgMHgxMywgMHg0NCwgMHg0MSwgMHg5MiwgMHgzMCwgMHg3NCwgMHg5QywgMHg5QywgMHhEOCwgMHhDOCwKKyAgICAweEIxLCAweDU5LCAweDQyLCAweDY3LCAweEFDLCAweEM4LCAweDBELCAweEZGLCAweDhFLCAweDUyLCAweDRDLCAweEVELCAweDg2LCAweEZGLCAweDRFLCAweDQ1LAorICAgIDB4QkUsIDB4QzQsIDB4QUYsIDB4MzIsIDB4RTQsIDB4QkMsIDB4NDEsIDB4QzUsIDB4REMsIDB4M0YsIDB4NzEsIDB4OEMsIDB4MkMsIDB4QUQsIDB4NzgsIDB4N0UsCisgICAgMHg3OSwgMHg0NywgMHhCMiwgMHgwMiwgMHhBNiwgMHgxMSwgMHhERSwgMHgwRiwgMHg1RCwgMHhBRCwgMHhGRSwgMHg4RCwgMHg2QiwgMHgwOSwgMHhFQSwgMHgyOCwKKyAgICAweDRCLCAweEIxLCAweDlGLCAweEQzLCAweDA5LCAweDRBLCAweDc3LCAweDUyLCAweDU4LCAweEEyLCAweDMxLCAweEMxLCAweDQ4LCAweEYxLCAweDM1LCAweDQ4LAorICAgIDB4NDYsIDB4OTMsIDB4REIsIDB4MjIsIDB4RkQsIDB4MDYsIDB4NDksIDB4RUIsIDB4MjIsIDB4RTgsIDB4QjMsIDB4OUMsIDB4Q0YsIDB4NDAsIDB4OEIsIDB4QzcsCisgICAgMHgzNSwgMHgwNywgMHhCRCwgMHgyQywgMHgyMSwgMHhGQiwgMHgxNSwgMHg1MywgMHgzOCwgMHgwQiwgMHg2MSwgMHgxMCwgMHg3NSwgMHgxMSwgMHgxNywgMHgxRiwKKyAgICAweEUxLCAweDc2LCAweDEwLCAweDUzLCAweDY2LCAweDJFLCAweDM2LCAweDY1LCAweEY2LCAweDYyLCAweDE5LCAweEFDLCAweDY4LCAweDYzLCAweDFELCAweDE3LAorICAgIDB4NkMsIDB4NDksIDB4NkMsIDB4QTgsIDB4NDAsIDB4NDksIDB4RkMsIDB4QkEsIDB4NjMsIDB4MjUsIDB4NUUsIDB4NzksIDB4MDcsIDB4MTAsIDB4QzMsIDB4M0MsCisgICAgMHhDNSwgMHg4MSwgMHgxNCwgMHhCQiwgMHhDRCwgMHhDMywgMHg2MywgMHgzNiwgMHg5RiwgMHhCOSwgMHg2OCwgMHg1NCwgMHg4RCwgMHgzMSwgMHg2NiwgMHhDOCwKKyAgICAweEY3LCAweDRBLCAweEEwLCAweDY4LCAweDhBLCAweENDLCAweEUyLCAweEI4LCAweDUwLCAweDg4LCAweDdCLCAweEZGLCAweDM4LCAweEUwLCAweDhCLCAweDkwLAorICAgIDB4MEMsIDB4OTgsIDB4RjEsIDB4QzUsIDB4NUYsIDB4RkEsIDB4MkEsIDB4MzcsIDB4NkEsIDB4M0MsIDB4MzksIDB4QzAsIDB4RjEsIDB4MjksIDB4MEYsIDB4QzEsCisgICAgMHhBNiwgMHhDRSwgMHhDQywgMHg5OCwgMHhENywgMHg5QywgMHhBRSwgMHg3MSwgMHhBQiwgMHhGRSwgMHhBMSwgMHhDNiwgMHgwRSwgMHhGNywgMHhFNywgMHg2MCwKKyAgICAweDlCLCAweDYzLCAweDUwLCAweDAwLCAweDhCLCAweDFBLCAweEM0LCAweEYyLCAweERCLCAweEZGLCAweENCLCAweEM4LCAweERDLCAweDIzLCAweDQ5LCAweEE5LAorICAgIDB4RkIsIDB4RjMsIDB4MUEsIDB4MDksIDB4QTUsIDB4MjcsIDB4RDUsIDB4MTgsIDB4NEMsIDB4ODQsIDB4MkUsIDB4NkUsIDB4NTYsIDB4MzksIDB4M0YsIDB4RDMsCisgICAgMHgwOCwgMHhERSwgMHg3NiwgMHg5MCwgMHhDMSwgMHg0MywgMHgzMywgMHgzMiwgMHhGOCwgMHg3NiwgMHg1OSwgMHg0OCwgMHgxNCwgMHhDRCwgMHgyRSwgMHgxOSwKKyAgICAweERGLCAweDhCLCAweDcyLCAweEFGLCAweEIyLCAweDJGLCAweEQ5LCAweDVDLCAweDVDLCAweDg3LCAweDhDLCAweDNBLCAweDY2LCAweDg2LCAweEJELCAweEVBLAorICAgIDB4ODIsIDB4RkMsIDB4MzYsIDB4RkEsIDB4MDUsIDB4RTgsIDB4RTAsIDB4MDcsIDB4NTMsIDB4RDgsIDB4NjgsIDB4RDQsIDB4ODYsIDB4M0EsIDB4QTQsIDB4NjQsCisgICAgMHhENSwgMHgxMywgMHgxNiwgMHgzRiwgMHg5QiwgMHgxRCwgMHg2MCwgMHgzQSwgMHg0NiwgMHhBRiwgMHg5OSwgMHg4OSwgMHhCRiwgMHgxQSwgMHhEMiwgMHg0NSwKKyAgICAweEY4LCAweEQ3LCAweDg2LCAweDZFLCAweDBDLCAweDNBLCAweENELCAweDY5LCAweDA1LCAweDFBLCAweDA3LCAweDdELCAweDUyLCAweDk2LCAweEUxLCAweEI2LAorICAgIDB4ODQsIDB4RTksIDB4NjMsIDB4NUIsIDB4M0QsIDB4RUUsIDB4RjYsIDB4REMsIDB4OEEsIDB4RTIsIDB4REMsIDB4RkEsIDB4REQsIDB4RDYsIDB4NUYsIDB4QTMsCisgICAgMHgxNywgMHhEMywgMHhFNiwgMHgzQywgMHhDNiwgMHhFRSwgMHg3QywgMHg4NCwgMHg2RiwgMHg4MiwgMHg5QSwgMHgwMSwgMHhGNywgMHhDNCwgMHg3MSwgMHg2OSwKKyAgICAweDBCLCAweDU2LCAweEVCLCAweDQ4LCAweEIzLCAweDA5LCAweDIzLCAweDA1LCAweDI2LCAweDQ3LCAweEQ1LCAweDhCLCAweDJELCAweDhCLCAweDkxLCAweDczLAorICAgIDB4RjgsIDB4MTQsIDB4QUMsIDB4RTYsIDB4RUUsIDB4QjMsIDB4NDAsIDB4NkQsIDB4NDMsIDB4NzAsIDB4MTgsIDB4OEEsIDB4QTQsIDB4QTksIDB4OUEsIDB4NjYsCisgICAgMHg3NywgMHg4NSwgMHg3RSwgMHgwRiwgMHg0OCwgMHgyNCwgMHgwQiwgMHhGMSwgMHgxNSwgMHhFRiwgMHhCQiwgMHgyNSwgMHhCOCwgMHg0NCwgMHg0MywgMHg4RSwKKyAgICAweDkxLCAweDI5LCAweDc0LCAweDQzLCAweEVDLCAweEY5LCAweDMxLCAweDQ4LCAweDk3LCAweEZDLCAweERGLCAweDVBLCAweEE5LCAweDNCLCAweDUwLCAweEFCLAorICAgIDB4OUUsIDB4RTUsIDB4OTMsIDB4RjMsIDB4MzksIDB4RDgsIDB4NEUsIDB4QUIsIDB4N0YsIDB4QUQsIDB4MkUsIDB4ODMsIDB4N0YsIDB4ODUsIDB4NDYsIDB4MjQsCisgICAgMHhFNywgMHg3NiwgMHhGNCwgMHg2NCwgMHhGRiwgMHg2QSwgMHhEQSwgMHg3OSwgMHgyRiwgMHg0OSwgMHgxNiwgMHhEOCwgMHhGMSwgMHg1NCwgMHhENiwgMHgzNywKKyAgICAweENCLCAweDUwLCAweDEzLCAweEEwLCAweEIyLCAweDRFLCAweERDLCAweDFFLCAweEYwLCAweDU5LCAweEI0LCAweDRGLCAweEI0LCAweDlCLCAweDZELCAweDE3LAorICAgIDB4QTEsIDB4NEMsIDB4MjUsIDB4MjQsIDB4NzEsIDB4M0MsIDB4MDYsIDB4NkQsIDB4RUUsIDB4MzUsIDB4OEQsIDB4QTcsIDB4NkUsIDB4MUMsIDB4NTksIDB4MTcsCisgICAgMHg3QSwgMHhBNSwgMHhCNCwgMHgxNCwgMHg5RiwgMHgxMiwgMHg4RCwgMHhFMCwgMHhDMSwgMHhFRSwgMHhBQSwgMHhFNSwgMHhGNiwgMHg5RCwgMHgyRiwgMHg4MSwKKyAgICAweDc1LCAweDlGLCAweENDLCAweEU0LCAweEUxLCAweDg3LCAweDg1LCAweDY1LCAweDg2LCAweDA4LCAweEQ0LCAweEMyLCAweEM1LCAweEUxLCAweDg3LCAweDRDLAorICAgIDB4NzYsIDB4MjUsIDB4RkMsIDB4OUYsIDB4NzAsIDB4MDgsIDB4NUMsIDB4NjksIDB4QjIsIDB4RUYsIDB4REQsIDB4MkUsIDB4NDEsIDB4QUYsIDB4OEUsIDB4OEEsCisgICAgMHg1MSwgMHgwRiwgMHgxRSwgMHg3RCwgMHhEMiwgMHgyNCwgMHg4QywgMHg3MCwgMHg0RCwgMHhCOSwgMHgyMiwgMHg4QiwgMHgzOSwgMHg1MSwgMHhFRiwgMHhDQiwKKyAgICAweDE5LCAweDE2LCAweERDLCAweDM4LCAweEYyLCAweDk1LCAweEU2LCAweDM5LCAweEQwLCAweDJBLCAweDU5LCAweDJELCAweEQwLCAweEZBLCAweEMzLCAweDdFLAorICAgIDB4QzcsIDB4NDMsIDB4RjEsIDB4NzQsIDB4MTEsIDB4MUQsIDB4NEQsIDB4QTIsIDB4MzUsIDB4MzUsIDB4Q0EsIDB4OTcsIDB4MDUsIDB4MDIsIDB4MkIsIDB4QTIsCisgICAgMHg4MiwgMHgyMywgMHgzNiwgMHhFRiwgMHhGQywgMHhFQywgMHhBOSwgMHgwQSwgMHgxQiwgMHhDQSwgMHg1NSwgMHg3NywgMHgxMSwgMHhBQywgMHgzRiwgMHhDQywKKyAgICAweEE3LCAweEY1LCAweDEyLCAweDFELCAweDdDLCAweDRDLCAweEEzLCAweEY5LCAweDE0LCAweDg1LCAweDFELCAweDhFLCAweDVFLCAweEQzLCAweDQ5LCAweDUyLAorICAgIDB4OUQsIDB4MzcsIDB4NkQsIDB4OEUsIDB4MzUsIDB4OEMsIDB4QTksIDB4RkUsIDB4MzcsIDB4MjMsIDB4NTYsIDB4QjgsIDB4MDUsIDB4NjUsIDB4NTQsIDB4MDcsCisgICAgMHhGMiwgMHhDNiwgMHhFRCwgMHg3MCwgMHgxMCwgMHhBMSwgMHg5NywgMHg3NywgMHhENCwgMHhENywgMHg3NywgMHg1MCwgMHg1MCwgMHgxNiwgMHg4QywgMHg2RSwKKyAgICAweDQ1LCAweEVELCAweDlELCAweEI0LCAweEYzLCAweEU1LCAweDgyLCAweDM3LCAweDk5LCAweDY3LCAweDUzLCAweDY4LCAweEM2LCAweDIyLCAweDMzLCAweEZELAorICAgIDB4MEMsIDB4QUQsIDB4MTgsIDB4MjQsIDB4NzYsIDB4MDYsIDB4MjYsIDB4NUQsIDB4OUIsIDB4MTQsIDB4RjYsIDB4Q0MsIDB4QjgsIDB4NDgsIDB4N0UsIDB4ODUsCisgICAgMHgxNSwgMHgzNSwgMHhDNywgMHgxNiwgMHgxRiwgMHhFNSwgMHgzQSwgMHg0MSwgMHg5QiwgMHhCNiwgMHhBOCwgMHg2NCwgMHg0OCwgMHg1NywgMHgzMiwgMHg2MCwKKyAgICAweDkxLCAweEU1LCAweEMxLCAweDQxLCAweEVDLCAweDRDLCAweDk3LCAweEVGLCAweEQ0LCAweEY4LCAweDg0LCAweDQxLCAweDYxLCAweDQ3LCAweDE3LCAweDA4LAorICAgIDB4OTYsIDB4QzMsIDB4QkIsIDB4RjMsIDB4QjcsIDB4MkMsIDB4RjYsIDB4QjksIDB4QTEsIDB4ODksIDB4NzgsIDB4NzksIDB4NzMsIDB4ODksIDB4NEMsIDB4MDcsCisgICAgMHgzNCwgMHg0RSwgMHg3NSwgMHg4OCwgMHhBOCwgMHgxOCwgMHg1NCwgMHgzQywgMHhGMywgMHg4RiwgMHhFRCwgMHgwNCwgMHhFNywgMHg4NiwgMHhENywgMHg4QiwKKyAgICAweEVELCAweDM0LCAweDZCLCAweENGLCAweDI5LCAweDFGLCAweDdBLCAweDU0LCAweDdFLCAweDhBLCAweEUxLCAweDgxLCAweDRDLCAweEVFLCAweEVBLCAweDIzLAorICAgIDB4N0IsIDB4M0YsIDB4MTYsIDB4MjQsIDB4NzEsIDB4OUQsIDB4OTcsIDB4RjgsIDB4NUIsIDB4RDAsIDB4NzMsIDB4ODYsIDB4RkEsIDB4MjEsIDB4MjcsIDB4M0UsCisgICAgMHg3MywgMHgxRiwgMHgwQywgMHgzNiwgMHg4NywgMHg1NiwgMHgyRiwgMHgyMSwgMHgxMCwgMHgzOCwgMHhGRCwgMHgxNCwgMHhCNCwgMHgxRSwgMHhBQiwgMHgzQiwKKyAgICAweEMxLCAweDU0LCAweEUyLCAweERCLCAweEI1LCAweDc2LCAweEYyLCAweDYxLCAweDE0LCAweEJBLCAweDE5LCAweDIzLCAweDdDLCAweDUzLCAweDMwLCAweEM4LAorICAgIDB4MEMsIDB4NjIsIDB4NjEsIDB4OTMsIDB4NDEsIDB4ODMsIDB4MUMsIDB4QTcsIDB4MkQsIDB4MTUsIDB4RDUsIDB4NjcsIDB4OTUsIDB4RUUsIDB4QkQsIDB4REIsCisgICAgMHgyNywgMHgzMSwgMHgxNiwgMHg4MSwgMHhDOSwgMHgzQSwgMHg3OCwgMHhGQywgMHhCMiwgMHgyNiwgMHgxMCwgMHgzRiwgMHhDQSwgMHg4OSwgMHgxMSwgMHhCMCwKKyAgICAweDAzLCAweEUxLCAweEI5LCAweDdFLCAweERFLCAweDBDLCAweDM0LCAweEQxLCAweEFBLCAweDcyLCAweDM0LCAweDkwLCAweEQ4LCAweDYyLCAweDc0LCAweEFFLAorICAgIDB4QTcsIDB4NjMsIDB4OTYsIDB4Q0QsIDB4QkEsIDB4NTgsIDB4NjAsIDB4NkUsIDB4RDEsIDB4NkMsIDB4NkIsIDB4QUUsIDB4QjIsIDB4MTUsIDB4N0UsIDB4MTIsCisgICAgMHgxQSwgMHgyOSwgMHgwMywgMHgyRSwgMHgyOCwgMHg5OCwgMHg1OSwgMHg1MiwgMHhFMiwgMHg5NCwgMHhBQywgMHgxOCwgMHgwMCwgMHgxQiwgMHgyRCwgMHhDQywKKyAgICAweEUwLCAweERDLCAweDcxLCAweEEwLCAweDk3LCAweEFGLCAweEExLCAweEQzLCAweDlELCAweEE2LCAweEVFLCAweDYyLCAweEI0LCAweDUxLCAweEJFLCAweEU5LAorICAgIDB4RjAsIDB4MjMsIDB4QkQsIDB4NUEsIDB4RUQsIDB4MTYsIDB4RUMsIDB4MDEsIDB4NzAsIDB4OEYsIDB4MzksIDB4RjIsIDB4RjksIDB4RDgsIDB4NkQsIDB4NTQsCisgICAgMHg2QSwgMHhEMywgMHg3MCwgMHg3QiwgMHhFNCwgMHg2RSwgMHgxRCwgMHg0MCwgMHhGNCwgMHg0QSwgMHgwNCwgMHhBNiwgMHgzQSwgMHgyQiwgMHg3NiwgMHg2MiwKKyAgICAweDdGLCAweDA0LCAweEMyLCAweDBCLCAweEIwLCAweEFDLCAweEI2LCAweEUxLCAweDg1LCAweDhBLCAweEQ1LCAweDM1LCAweENBLCAweERGLCAweERFLCAweDhBLAorICAgIDB4NTcsIDB4MzQsIDB4NTEsIDB4RDAsIDB4NDQsIDB4QzAsIDB4QkIsIDB4NTEsIDB4MTYsIDB4NDQsIDB4M0YsIDB4QzcsIDB4QzQsIDB4MTAsIDB4M0IsIDB4MDYsCisgICAgMHhCMiwgMHhCNywgMHhBMSwgMHhGNCwgMHg5QywgMHgyRiwgMHhGQSwgMHhEMywgMHg0NiwgMHg1MSwgMHhDMywgMHgyNSwgMHg5QSwgMHg5NCwgMHhCOCwgMHg3OCwKKyAgICAweEUzLCAweDNCLCAweDYzLCAweDY0LCAweDYxLCAweEY2LCAweDFELCAweDRDLCAweDlDLCAweEZGLCAweDY4LCAweDE4LCAweENDLCAweDUxLCAweEQwLCAweEMzLAorICAgIDB4MEIsIDB4NjcsIDB4MEQsIDB4RUQsIDB4NzgsIDB4RjQsIDB4RDcsIDB4MjYsIDB4NDEsIDB4MEMsIDB4RUUsIDB4QjcsIDB4MzUsIDB4NzIsIDB4REEsIDB4MzksCisgICAgMHgzRCwgMHgyMCwgMHgzNSwgMHhGMCwgMHhDOCwgMHhGMiwgMHg2QSwgMHgyOSwgMHhFMywgMHgwMywgMHg5MCwgMHg4MCwgMHhFNywgMHg3NiwgMHhCQSwgMHg3OCwKKyAgICAweDVFLCAweDVDLCAweDlBLCAweDM1LCAweDA1LCAweDlDLCAweDJFLCAweEI4LCAweEE4LCAweDg2LCAweDJGLCAweEQzLCAweEVBLCAweDM3LCAweDdELCAweEVELAorICAgIDB4NjYsIDB4QTgsIDB4NEUsIDB4RUYsIDB4QTMsIDB4QkYsIDB4M0YsIDB4ODUsIDB4MjEsIDB4OTQsIDB4NTksIDB4MjMsIDB4M0EsIDB4QjUsIDB4NDIsIDB4NkQsCisgICAgMHg5NSwgMHgzRCwgMHg5QSwgMHhFMiwgMHgyQSwgMHgwOCwgMHhDOSwgMHhENSwgMHg2RCwgMHhDMywgMHg2QywgMHgwOSwgMHgwOSwgMHhBQywgMHg0OCwgMHg0QSwKKyAgICAweDdBLCAweDQ2LCAweEI3LCAweDM0LCAweDAzLCAweEYwLCAweDhBLCAweDMzLCAweDNFLCAweEFFLCAweDI3LCAweEZELCAweDJELCAweEY4LCAweEFCLCAweEU0LAorICAgIDB4ODIsIDB4ODEsIDB4OTMsIDB4NjUsIDB4NEUsIDB4QzIsIDB4MEQsIDB4NkQsIDB4RDAsIDB4RUEsIDB4REYsIDB4OEQsIDB4QTUsIDB4RDYsIDB4QTEsIDB4NDUsCisgICAgMHg3RiwgMHgwOCwgMHhFMSwgMHg5MywgMHg3RSwgMHg4NywgMHg1MCwgMHg4NCwgMHhERSwgMHg3RCwgMHgwMywgMHg5RiwgMHgzQywgMHhEOSwgMHg4MSwgMHgzMSwKKyAgICAweDFCLCAweDFFLCAweEExLCAweDgyLCAweDE3LCAweDc2LCAweEU0LCAweDNGLCAweDQ1LCAweEM5LCAweDJFLCAweDhFLCAweDcyLCAweEUzLCAweDQzLCAweEYxLAorICAgIDB4ODQsIDB4RjIsIDB4RkMsIDB4MEIsIDB4OEUsIDB4NkUsIDB4QjQsIDB4NUYsIDB4MTAsIDB4RjIsIDB4M0UsIDB4QzAsIDB4N0QsIDB4NTcsIDB4QzIsIDB4M0UsCisgICAgMHhFOSwgMHgxNSwgMHg0RiwgMHhDOCwgMHgwQiwgMHg2NSwgMHg1MywgMHhCQiwgMHhEOSwgMHg1MCwgMHhBMiwgMHg1QywgMHhDQiwgMHgxMSwgMHgxNCwgMHg3NywKKyAgICAweERGLCAweDJBLCAweDE4LCAweDQzLCAweDNFLCAweEUwLCAweDFELCAweDMwLCAweDZFLCAweEYzLCAweEZFLCAweEI3LCAweDNELCAweDdCLCAweDIyLCAweDdBLAorICAgIDB4NzMsIDB4RjQsIDB4NjIsIDB4QkEsIDB4ODIsIDB4NTEsIDB4NUQsIDB4NDIsIDB4MEIsIDB4MjcsIDB4MEUsIDB4MTMsIDB4MjcsIDB4QjQsIDB4QjUsIDB4QjQsCisgICAgMHgyOSwgMHhEQSwgMHg5NCwgMHhCMywgMHg5OSwgMHg5QiwgMHgzQiwgMHgzNywgMHg2RSwgMHhCMiwgMHgyOCwgMHgyNiwgMHg1MiwgMHhDRiwgMHg1QywgMHhDQiwKKyAgICAweDc0LCAweDk1LCAweDMwLCAweDUwLCAweDQ4LCAweEM5LCAweEFELCAweEVFLCAweDhCLCAweEM2LCAweDcyLCAweDU1LCAweEVDLCAweDI4LCAweDE0LCAweDAwLAorICAgIDB4NzgsIDB4QzQsIDB4NDIsIDB4NjEsIDB4QkYsIDB4OTYsIDB4ODEsIDB4MDYsIDB4RkEsIDB4NDUsIDB4NEYsIDB4QzAsIDB4MUYsIDB4QzAsIDB4NEYsIDB4Q0EsCisgICAgMHhFRSwgMHhCQywgMHhDQywgMHhGNSwgMHhBQSwgMHhDNCwgMHg3OCwgMHgwQSwgMHgxNiwgMHhGNSwgMHhEMiwgMHg2NSwgMHg2RCwgMHhDRCwgMHg3NCwgMHgyRCwKKyAgICAweDg3LCAweDkzLCAweEJDLCAweDUxLCAweDAyLCAweDY4LCAweEUwLCAweDcyLCAweEUwLCAweDVGLCAweDk4LCAweDFFLCAweDdELCAweDJCLCAweDlGLCAweENELAorICAgIDB4MUQsIDB4QzcsIDB4MjAsIDB4MzQsIDB4RjUsIDB4OTUsIDB4ODIsIDB4N0EsIDB4MDQsIDB4ODAsIDB4MzUsIDB4OTYsIDB4ODgsIDB4QjgsIDB4MUMsIDB4MjYsCisgICAgMHgxNiwgMHg2MiwgMHhEOSwgMHgzMiwgMHg5MSwgMHhEMCwgMHgwRiwgMHg4NywgMHgyMywgMHg0RSwgMHg0NCwgMHgyNSwgMHg3QywgMHgyQSwgMHhENCwgMHg4RSwKKyAgICAweDQzLCAweDBCLCAweEVDLCAweEE0LCAweEQwLCAweDkyLCAweDQ2LCAweEVFLCAweEIxLCAweEMzLCAweEM0LCAweDYxLCAweEU1LCAweEE5LCAweDkwLCAweDBELAorICAgIDB4MDMsIDB4MDAsIDB4QkQsIDB4QTUsIDB4RUIsIDB4ODEsIDB4QjAsIDB4MkIsIDB4QUIsIDB4RUYsIDB4NUYsIDB4NzAsIDB4NkEsIDB4ODAsIDB4MkYsIDB4QTEsCisgICAgMHhEQywgMHhCMywgMHg0NywgMHg3RiwgMHhGNCwgMHg4QSwgMHg0MSwgMHhCMiwgMHg5NCwgMHhFQSwgMHgwNiwgMHg5MSwgMHg5MiwgMHgxRCwgMHhFRiwgMHg0QSwKKyAgICAweEYxLCAweDgxLCAweEFFLCAweDhFLCAweEE2LCAweEU4LCAweDdCLCAweEMxLCAweDQ2LCAweERELCAweDMzLCAweEJFLCAweDE0LCAweDFDLCAweDI0LCAweDI3LAorICAgIDB4RDgsIDB4RTAsIDB4RTcsIDB4NjksIDB4OUUsIDB4RkMsIDB4NTMsIDB4N0UsIDB4NDAsIDB4MkMsIDB4MTMsIDB4QTcsIDB4RDYsIDB4NUEsIDB4ODIsIDB4RDYsCisgICAgMHhGRiwgMHgwOSwgMHhBOCwgMHg2QiwgMHhCMSwgMHg2MCwgMHg4MiwgMHgwQSwgMHhERCwgMHg5MCwgMHgxQywgMHhFNCwgMHg2QSwgMHhBMywgMHgxOCwgMHhGQiwKKyAgICAweDY2LCAweEQ0LCAweDRGLCAweDlCLCAweDI4LCAweEIyLCAweDVCLCAweEU3LCAweDczLCAweENBLCAweDMzLCAweDJGLCAweDc1LCAweDU3LCAweDlCLCAweEVBLAorICAgIDB4MzYsIDB4MDMsIDB4QzQsIDB4MDYsIDB4MjIsIDB4NEQsIDB4REUsIDB4MzAsIDB4NTcsIDB4NEMsIDB4N0MsIDB4OTAsIDB4RTUsIDB4Q0YsIDB4ODgsIDB4MzksCisgICAgMHhGNSwgMHgxOSwgMHgxOCwgMHgxOCwgMHgyQSwgMHgxQSwgMHgxNiwgMHgxMSwgMHhEOCwgMHg0OSwgMHhDRiwgMHg1QSwgMHg0QSwgMHg1MSwgMHgxQiwgMHg3OCwKKyAgICAweDFELCAweEYxLCAweDY1LCAweEIyLCAweDdDLCAweEM3LCAweEQ0LCAweEYxLCAweEIxLCAweDNELCAweEEzLCAweDVDLCAweDBBLCAweEI1LCAweDNFLCAweDcyLAorICAgIDB4NEIsIDB4RTMsIDB4MjgsIDB4RUEsIDB4QzksIDB4NzMsIDB4OUYsIDB4MzYsIDB4QzEsIDB4NTAsIDB4NEYsIDB4MTksIDB4MzMsIDB4NDcsIDB4QUIsIDB4NDYsCisgICAgMHg3MSwgMHg2MCwgMHgwRSwgMHhFOCwgMHgxRCwgMHhEMiwgMHhEQiwgMHhEMywgMHhEOCwgMHhGMywgMHhBOSwgMHhENywgMHhFNSwgMHgyNSwgMHgyQiwgMHhBMiwKKyAgICAweDc1LCAweDM2LCAweDc3LCAweDU1LCAweDAwLCAweDhFLCAweDY3LCAweEYxLCAweEY5LCAweERFLCAweDM4LCAweDQ1LCAweDI0LCAweDg0LCAweDAxLCAweDE1LAorICAgIDB4QTYsIDB4RDIsIDB4MzAsIDB4OTEsIDB4NzEsIDB4RTMsIDB4QTYsIDB4QTcsIDB4RjQsIDB4NTIsIDB4NzcsIDB4NzYsIDB4NzQsIDB4QzgsIDB4NDMsIDB4NzYsCisgICAgMHgzRSwgMHhCRiwgMHg2MSwgMHhCMSwgMHhCRCwgMHgxQywgMHg2OCwgMHgxMCwgMHg4QiwgMHg2OSwgMHhDRCwgMHg5MCwgMHgxQywgMHgyRCwgMHg3NiwgMHhENCwKKyAgICAweDRCLCAweDNGLCAweEY0LCAweDNGLCAweEMwLCAweDhGLCAweEIyLCAweDEzLCAweDJELCAweDA3LCAweEMwLCAweDlBLCAweDAzLCAweDc0LCAweDExLCAweDBBLAorICAgIDB4QUEsIDB4NzQsIDB4NjEsIDB4QjcsIDB4NUYsIDB4NjQsIDB4RTgsIDB4MEQsIDB4RTcsIDB4NTcsIDB4NEMsIDB4NDYsIDB4MzYsIDB4QUUsIDB4NTQsIDB4NzEsCisgICAgMHhGRCwgMHgwMiwgMHhEMSwgMHg2RSwgMHgxOCwgMHgwNiwgMHhDQSwgMHg3NCwgMHg3RiwgMHhBOCwgMHhGNCwgMHhERiwgMHgxQSwgMHgzNywgMHhGMiwgMHhENiwKKyAgICAweDQzLCAweEQzLCAweEY1LCAweDcwLCAweDIyLCAweEZELCAweDc4LCAweDI0LCAweDY1LCAweEYxLCAweDkwLCAweDc5LCAweEUyLCAweDEyLCAweDMxLCAweEJELAorICAgIDB4QUEsIDB4RkYsIDB4QTEsIDB4ODksIDB4MDUsIDB4QkUsIDB4QUUsIDB4Q0EsIDB4MUEsIDB4NEIsIDB4OUEsIDB4NkQsIDB4MjQsIDB4RjMsIDB4REYsIDB4NEUsCisgICAgMHhCMiwgMHhCOSwgMHg3MSwgMHgxMCwgMHg5NiwgMHhDRCwgMHhBNSwgMHhFQiwgMHg5OSwgMHhEQSwgMHg1RCwgMHhCMSwgMHhGNCwgMHg1MCwgMHgzMCwgMHg4RiwKKyAgICAweDUxLCAweDZGLCAweERGLCAweEY1LCAweDdGLCAweEI1LCAweDhCLCAweEQ5LCAweDU4LCAweEQyLCAweDBDLCAweDcyLCAweDAwLCAweEIyLCAweDMyLCAweDYyLAorICAgIDB4MTgsIDB4NzgsIDB4QkQsIDB4OEEsIDB4MkIsIDB4MDcsIDB4QjQsIDB4NUUsIDB4NEUsIDB4QjUsIDB4MUIsIDB4RTQsIDB4NEQsIDB4RDQsIDB4NTksIDB4MjksCisgICAgMHg4RSwgMHhBQSwgMHg5NywgMHg3MSwgMHg2NiwgMHg3RiwgMHg5RSwgMHgzQiwgMHg1NywgMHhFMCwgMHgzNSwgMHgwMywgMHg2QiwgMHhGNywgMHgxMiwgMHgzQywKKyAgICAweDVBLCAweEFELCAweDFBLCAweEYxLCAweEM2LCAweEM5LCAweDVBLCAweEYwLCAweDFELCAweDI1LCAweDE1LCAweEU0LCAweDNCLCAweDQ1LCAweDg4LCAweDcwLAorICAgIDB4NzcsIDB4N0YsIDB4MzMsIDB4QzAsIDB4QTcsIDB4NTAsIDB4NkYsIDB4MjIsIDB4OUIsIDB4QjYsIDB4QUYsIDB4MzUsIDB4RjQsIDB4QzEsIDB4RUMsIDB4RUMsCisgICAgMHhGNywgMHg3QiwgMHg1OSwgMHg0NSwgMHgyRSwgMHg4QywgMHg0NSwgMHg5NCwgMHhDRiwgMHhGMiwgMHg2NCwgMHhENCwgMHg5OSwgMHg3OCwgMHhCNiwgMHhEMywKKyAgICAweDIwLCAweDQyLCAweDQ5LCAweEY0LCAweDhFLCAweEM0LCAweDRFLCAweEM5LCAweDYzLCAweDEwLCAweEU3LCAweDU3LCAweEE4LCAweDMzLCAweEJCLCAweEUzLAorICAgIDB4RjIsIDB4REYsIDB4MzgsIDB4MjQsIDB4RjQsIDB4QzUsIDB4RUEsIDB4ODYsIDB4QUYsIDB4QjcsIDB4QjEsIDB4MzQsIDB4NDYsIDB4NzQsIDB4QUQsIDB4OTYsCisgICAgMHg4NCwgMHg1RiwgMHg0NCwgMHgxNiwgMHhFMiwgMHg1NCwgMHhDQSwgMHg2QSwgMHg5MywgMHhFMSwgMHg1OSwgMHhCRCwgMHg1NiwgMHhDRiwgMHg4QywgMHgzQSwKKyAgICAweDNDLCAweDFCLCAweEFCLCAweEJFLCAweDZBLCAweDBFLCAweENBLCAweDU2LCAweDIwLCAweDFDLCAweERFLCAweERGLCAweDBBLCAweDVELCAweDdGLCAweDU1LAorICAgIDB4RjksIDB4OUUsIDB4MjEsIDB4OUQsIDB4OTgsIDB4MzcsIDB4RkQsIDB4RkUsIDB4RTcsIDB4RDcsIDB4REMsIDB4ODcsIDB4RDEsIDB4QzUsIDB4NjAsIDB4RjUsCisgICAgMHg5MSwgMHhEOSwgMHgxMCwgMHg5NSwgMHg2QywgMHgyNCwgMHg1QiwgMHgwRiwgMHg1OSwgMHg1NCwgMHg0RCwgMHgwNCwgMHhFOCwgMHhGOCwgMHgzMywgMHg5NCwKKyAgICAweDFELCAweDAwLCAweDcyLCAweENFLCAweDZCLCAweENELCAweDkwLCAweEM3LCAweDZBLCAweDlGLCAweEY0LCAweEU3LCAweDVCLCAweDY3LCAweDUyLCAweEJCLAorICAgIDB4QjYsIDB4NTgsIDB4MTksIDB4QkIsIDB4RDUsIDB4MDksIDB4MEIsIDB4OEMsIDB4MzAsIDB4QkUsIDB4MjEsIDB4REEsIDB4Q0IsIDB4RTcsIDB4NjcsIDB4REMsCisgICAgMHgyNCwgMHgwMCwgMHhERCwgMHgxQSwgMHg0MywgMHgxMywgMHg3MSwgMHg0NCwgMHgxMSwgMHhBMSwgMHhBNSwgMHg5RCwgMHg5RSwgMHhEMSwgMHgxOSwgMHhFNCwKKyAgICAweDlELCAweDU5LCAweDJELCAweEY5LCAweDlGLCAweDhELCAweDJELCAweDA5LCAweDAxLCAweDMyLCAweDM1LCAweEM3LCAweDJFLCAweDEyLCAweDE1LCAweDg0LAorICAgIDB4ODgsIDB4OUYsIDB4QTcsIDB4QTIsIDB4NDgsIDB4NzIsIDB4QTYsIDB4QjIsIDB4RTAsIDB4ODEsIDB4OEEsIDB4QjEsIDB4MDcsIDB4MjEsIDB4NUQsIDB4OUQsCisgICAgMHg3NCwgMHgxRCwgMHgzRCwgMHg5OCwgMHgyNCwgMHgxRSwgMHg0QywgMHg0NSwgMHhCRCwgMHg0NSwgMHgzRiwgMHgxRSwgMHgzMSwgMHg1RCwgMHhCRSwgMHg4QywKKyAgICAweDRGLCAweERELCAweDFELCAweDBDLCAweEE3LCAweEZDLCAweDVDLCAweEEzLCAweDIwLCAweDEzLCAweDcxLCAweDlGLCAweEI4LCAweDBFLCAweDUwLCAweEZBLAorICAgIDB4MjcsIDB4NUEsIDB4QTAsIDB4OTEsIDB4MjgsIDB4Q0EsIDB4REYsIDB4NDMsIDB4MzksIDB4MTgsIDB4QTIsIDB4OUYsIDB4NjAsIDB4QUIsIDB4RUMsIDB4MkIsCisgICAgMHg4OSwgMHgwMywgMHgwMywgMHg1OCwgMHhCMCwgMHhBMCwgMHg3NiwgMHg0NiwgMHhCQiwgMHgyQSwgMHgzNywgMHhFRiwgMHhEOSwgMHhENywgMHhERCwgMHg5MywKKyAgICAweDQwLCAweDBBLCAweDEzLCAweDdFLCAweEY2LCAweDg0LCAweEI3LCAweDM0LCAweDEwLCAweEIyLCAweDMxLCAweDgzLCAweDA5LCAweDY2LCAweDc4LCAweEExLAorICAgIDB4NjAsIDB4RDUsIDB4MzAsIDB4QzQsIDB4ODIsIDB4RDQsIDB4MkUsIDB4NkQsIDB4RkQsIDB4OEIsIDB4MDEsIDB4ODQsIDB4OTEsIDB4NzgsIDB4NEEsIDB4NEUsCisgICAgMHgyQSwgMHg4NSwgMHg4MiwgMHhDOSwgMHg5MiwgMHgwRCwgMHgyOCwgMHgzMiwgMHgyNiwgMHhFNSwgMHgyNSwgMHgzNSwgMHgwOSwgMHg3OSwgMHgwNCwgMHhBNSwKKyAgICAweEU0LCAweEZBLCAweDM1LCAweEUwLCAweEIzLCAweDg3LCAweDhCLCAweDE4LCAweDAyLCAweEVELCAweEVDLCAweDdCLCAweDM0LCAweDU2LCAweEFFLCAweDZDLAorICAgIDB4MDAsIDB4M0MsIDB4OEYsIDB4RUYsIDB4QTYsIDB4MDYsIDB4RkMsIDB4QkQsIDB4RDksIDB4MzUsIDB4NDcsIDB4NzksIDB4MEYsIDB4QjQsIDB4NDksIDB4N0QsCisgICAgMHg5QSwgMHgxQiwgMHhCOSwgMHhFRSwgMHhCNCwgMHhGQiwgMHhEQSwgMHhBQSwgMHhDRCwgMHhFRiwgMHhBMSwgMHhENiwgMHhENCwgMHhDQSwgMHg3RiwgMHhFOCwKKyAgICAweDFELCAweDkxLCAweDcyLCAweDgzLCAweEI2LCAweDRCLCAweDg2LCAweEU0LCAweEVDLCAweDI3LCAweEQ5LCAweEVGLCAweERDLCAweDBELCAweEEwLCAweDI1LAorICAgIDB4RTgsIDB4RDgsIDB4RUEsIDB4QzAsIDB4RDEsIDB4NUMsIDB4NTgsIDB4MDAsIDB4RkQsIDB4MzEsIDB4NDgsIDB4NjksIDB4RDcsIDB4MDksIDB4RkQsIDB4RDQsCisgICAgMHgxQSwgMHg4RCwgMHg1QiwgMHhFNywgMHhBNiwgMHhFMSwgMHg5QSwgMHhGNiwgMHgxQSwgMHgwMywgMHhGOSwgMHgyRCwgMHgyRSwgMHg0MiwgMHhDOSwgMHg5MywKKyAgICAweENBLCAweDMxLCAweEFBLCAweEYxLCAweEJCLCAweDUyLCAweENGLCAweDIwLCAweDAxLCAweDY3LCAweEUwLCAweDdELCAweDgwLCAweDY5LCAweEJBLCAweDgxLAorICAgIDB4RjUsIDB4M0EsIDB4NTUsIDB4NDAsIDB4NEUsIDB4NEYsIDB4OUIsIDB4REQsIDB4MEYsIDB4RjksIDB4MjAsIDB4QjgsIDB4NEEsIDB4MTYsIDB4NTgsIDB4MjEsCisgICAgMHg2RCwgMHg3MSwgMHg0MiwgMHg3OCwgMHhDNCwgMHgyNSwgMHgzRCwgMHg2RiwgMHg5QywgMHhDNSwgMHhFMSwgMHgyQiwgMHgzOSwgMHhFMCwgMHg1MiwgMHgwNywKKyAgICAweDRBLCAweEZGLCAweDYyLCAweDJDLCAweEQyLCAweEFCLCAweEYzLCAweDVCLCAweDIwLCAweEIzLCAweDg1LCAweDQ0LCAweDI0LCAweDg0LCAweDhDLCAweDNDLAorICAgIDB4MzgsIDB4MDksIDB4OUEsIDB4M0EsIDB4NEUsIDB4QUYsIDB4QkMsIDB4QUIsIDB4NkUsIDB4MEQsIDB4NjAsIDB4MzAsIDB4QkEsIDB4MDQsIDB4QUEsIDB4NzQsCisgICAgMHg5MywgMHgxNSwgMHgxNCwgMHhCOCwgMHhENCwgMHgyMCwgMHhENiwgMHgyRiwgMHgyQiwgMHgyMywgMHg3RiwgMHgwMywgMHhDMSwgMHgzRiwgMHhGMCwgMHhFMiwKKyAgICAweEJBLCAweDc3LCAweDlDLCAweEYzLCAweDgzLCAweEU1LCAweDYxLCAweDExLCAweEEyLCAweDc3LCAweDlELCAweEI4LCAweDY1LCAweEI1LCAweDg3LCAweEMyLAorICAgIDB4RkQsIDB4RUEsIDB4OUUsIDB4NkUsIDB4QkEsIDB4NUQsIDB4NUUsIDB4NzYsIDB4NDYsIDB4NDksIDB4NEUsIDB4NUEsIDB4NUYsIDB4NEMsIDB4OTYsIDB4QjEsCisgICAgMHg1RiwgMHg2QSwgMHhFNSwgMHhBMiwgMHhDMiwgMHhEQiwgMHhDNiwgMHg2NiwgMHg5MiwgMHhENywgMHhENCwgMHg4MCwgMHg2RiwgMHg2MywgMHgwMSwgMHgxQywKKyAgICAweDBELCAweDEzLCAweEI1LCAweEE5LCAweDcyLCAweDhCLCAweDZCLCAweEE2LCAweEYwLCAweDk4LCAweEU0LCAweEM2LCAweEY4LCAweDQ2LCAweDIzLCAweDYxLAorICAgIDB4MUUsIDB4NEMsIDB4RkQsIDB4RkYsIDB4M0UsIDB4NEMsIDB4NzgsIDB4RTgsIDB4NDksIDB4Q0UsIDB4QTYsIDB4RDAsIDB4NUMsIDB4MkIsIDB4ODUsIDB4N0QsCisgICAgMHhCNCwgMHhGNSwgMHg3RCwgMHg3MSwgMHgxQywgMHg4OSwgMHg1NywgMHg0MiwgMHg2QSwgMHg3QSwgMHg3MSwgMHg0NCwgMHg3NSwgMHgwMSwgMHg5MCwgMHhDMywKKyAgICAweEJGLCAweDk1LCAweDdCLCAweDBBLCAweDRFLCAweDAxLCAweDBBLCAweDUyLCAweEY0LCAweEEwLCAweDIxLCAweDk0LCAweDdDLCAweEVCLCAweEE5LCAweEVCLAorICAgIDB4QUQsIDB4MUIsIDB4QkUsIDB4NzgsIDB4OTgsIDB4MDQsIDB4QzQsIDB4MjYsIDB4MjAsIDB4NzMsIDB4NUYsIDB4QjUsIDB4NDUsIDB4NkMsIDB4RTIsIDB4QzcsCisgICAgMHgwNCwgMHhEMiwgMHhFQiwgMHg2NywgMHhFNSwgMHg4RiwgMHgyRiwgMHhBMCwgMHg2NiwgMHg0QywgMHhCRCwgMHgzNiwgMHgyQywgMHhGRSwgMHg4RSwgMHg0MCwKKyAgICAweDQ2LCAweEI2LCAweEFCLCAweDJGLCAweENGLCAweDFGLCAweEExLCAweDNFLCAweEJGLCAweDk2LCAweDYxLCAweDc0LCAweDY4LCAweEQ2LCAweDgyLCAweDFELAorICAgIDB4MTIsIDB4RDUsIDB4RkQsIDB4QjksIDB4NDUsIDB4REEsIDB4OEQsIDB4MkIsIDB4NzYsIDB4REUsIDB4OUMsIDB4NjUsIDB4QTAsIDB4MkQsIDB4NzYsIDB4MkYsCisgICAgMHg0OSwgMHgyRSwgMHhFQywgMHgyNywgMHhENCwgMHg0MCwgMHgyNiwgMHhBMywgMHgwNiwgMHgwMSwgMHgyRSwgMHg2MCwgMHgwNCwgMHg5NCwgMHg0MywgMHhBNCwKKyAgICAweDc5LCAweDVELCAweEVBLCAweEQ4LCAweEQxLCAweDVCLCAweDk1LCAweEYyLCAweDJFLCAweDEzLCAweDE3LCAweDlFLCAweEVELCAweDdBLCAweDdFLCAweDgzLAorICAgIDB4ODYsIDB4REYsIDB4RDEsIDB4RDQsIDB4RTksIDB4MDAsIDB4NTUsIDB4OEQsIDB4Q0EsIDB4NEYsIDB4MTgsIDB4NzQsIDB4NEUsIDB4NUUsIDB4N0MsIDB4QUMsCisgICAgMHhFOSwgMHg0QSwgMHgyNSwgMHhBNywgMHgzQSwgMHg4NCwgMHg0MywgMHhGNSwgMHg3NywgMHg3NCwgMHgxRSwgMHhEQywgMHgzMiwgMHhEQiwgMHg1MCwgMHhDRiwKKyAgICAweEY4LCAweEFDLCAweDAxLCAweDM3LCAweDMzLCAweDU5LCAweEJFLCAweEY1LCAweEMyLCAweDk4LCAweEU3LCAweDA5LCAweDI5LCAweEUzLCAweDZFLCAweEJDLAorICAgIDB4MjIsIDB4MUQsIDB4MjAsIDB4MDYsIDB4ODksIDB4OTAsIDB4OTUsIDB4Q0MsIDB4QzcsIDB4M0YsIDB4MkIsIDB4NDgsIDB4NUYsIDB4MjMsIDB4MEIsIDB4Q0IsCisgICAgMHhENSwgMHhBMiwgMHg0RSwgMHg1MiwgMHg1QSwgMHgxRSwgMHgxQSwgMHg0QywgMHg1MSwgMHg3NSwgMHg2NywgMHgzMywgMHhENiwgMHhGMSwgMHhCRSwgMHg5QiwKKyAgICAweDhELCAweDMxLCAweDBGLCAweEJBLCAweDJBLCAweDY3LCAweDU4LCAweEY1LCAweDYyLCAweEMzLCAweDgwLCAweDQ4LCAweDg5LCAweDVDLCAweDNGLCAweDgxLAorICAgIDB4RkYsIDB4MjcsIDB4NkUsIDB4MEIsIDB4NzksIDB4NkEsIDB4RDAsIDB4MzMsIDB4RDYsIDB4MkQsIDB4NkEsIDB4RjEsIDB4MzYsIDB4Q0MsIDB4OTYsIDB4NkMsCisgICAgMHhBNiwgMHg2RCwgMHhBMCwgMHg5MiwgMHgwNCwgMHg1QiwgMHgyNywgMHhDOSwgMHgwNSwgMHgxRCwgMHhDQSwgMHhCMiwgMHg4RCwgMHg0RiwgMHgyMCwgMHhCNiwKKyAgICAweEVBLCAweEU0LCAweDU3LCAweEFFLCAweEFGLCAweDc3LCAweEY3LCAweEE4LCAweEE1LCAweENELCAweEZGLCAweDVDLCAweEI5LCAweDdGLCAweDI5LCAweDk4LAorICAgIDB4MkMsIDB4NUUsIDB4REEsIDB4NjksIDB4M0UsIDB4OTksIDB4MjEsIDB4MjUsIDB4NDksIDB4MUYsIDB4RUEsIDB4RDQsIDB4OTEsIDB4NjMsIDB4ODksIDB4QjgsCisgICAgMHhFQywgMHhDRiwgMHg4QiwgMHgxRCwgMHhGNiwgMHgzMywgMHgzQywgMHgyOSwgMHgyNiwgMHhFRiwgMHhBQywgMHg4MSwgMHgxMiwgMHhDNSwgMHgxQiwgMHg0NCwKKyAgICAweEFDLCAweDE4LCAweDkwLCAweDIwLCAweEJCLCAweDAzLCAweDVCLCAweDNGLCAweDNFLCAweEQzLCAweEQzLCAweEM1LCAweDQ3LCAweEFGLCAweDdGLCAweDQ0LAorICAgIDB4OUUsIDB4MzIsIDB4QzUsIDB4MDYsIDB4RTksIDB4QjYsIDB4N0QsIDB4QjMsIDB4QTEsIDB4RjYsIDB4NzcsIDB4MjksIDB4N0YsIDB4QTksIDB4QTksIDB4MTAsCisgICAgMHgyMCwgMHhDRSwgMHgyRSwgMHgxOCwgMHhDOCwgMHhBQSwgMHg2OCwgMHg2NSwgMHg2NCwgMHgxMSwgMHg1NywgMHg0RiwgMHhFOSwgMHhBMiwgMHhFMywgMHhEMSwKKyAgICAweEVBLCAweDAzLCAweDQwLCAweEFDLCAweDY4LCAweDA0LCAweEM4LCAweDM2LCAweDY5LCAweEU5LCAweEI1LCAweDZELCAweDc3LCAweDkzLCAweEZBLCAweEQ2LAorICAgIDB4QjgsIDB4QTUsIDB4NzEsIDB4NjMsIDB4NzAsIDB4RTgsIDB4QTAsIDB4MjcsIDB4MzksIDB4RDcsIDB4MzMsIDB4NTIsIDB4NzYsIDB4NTksIDB4RjEsIDB4RUYsCisgICAgMHhFMiwgMHg3NiwgMHg4MywgMHhDNSwgMHg0RCwgMHhDNSwgMHhBMywgMHhGMiwgMHgxMCwgMHg0QywgMHhCMywgMHgzNSwgMHg2RSwgMHgxMiwgMHg1QiwgMHgyNiwKKyAgICAweDdDLCAweDRBLCAweDhCLCAweEZCLCAweDAyLCAweDJCLCAweEJFLCAweEY0LCAweDBBLCAweDkxLCAweEY1LCAweDdDLCAweDgyLCAweDA4LCAweDYyLCAweDcwLAorICAgIDB4RDgsIDB4QTQsIDB4MjksIDB4RTAsIDB4RjgsIDB4OTcsIDB4MTksIDB4MUQsIDB4MDYsIDB4RDMsIDB4NDYsIDB4OTAsIDB4RUIsIDB4QjUsIDB4ODksIDB4NUIsCisgICAgMHg2QywgMHg1MCwgMHhCNSwgMHhCNiwgMHg3MCwgMHg1OCwgMHhBMCwgMHgzMCwgMHgwNSwgMHhGNSwgMHg0MCwgMHg1MSwgMHg0RSwgMHgzMCwgMHhERiwgMHg2NCwKKyAgICAweDZGLCAweDdBLCAweDRFLCAweDU0LCAweDY0LCAweEUzLCAweDIwLCAweEQzLCAweDkzLCAweEUzLCAweDc5LCAweDI4LCAweDM5LCAweEIxLCAweDE4LCAweERGLAorICAgIDB4Q0MsIDB4RjEsIDB4OTgsIDB4RDEsIDB4MkQsIDB4ODYsIDB4MzQsIDB4ODQsIDB4QTEsIDB4ODMsIDB4NEEsIDB4RTUsIDB4QTksIDB4NjEsIDB4NkIsIDB4MDksCisgICAgMHhBMiwgMHgzQiwgMHhDRSwgMHg1RSwgMHhGNywgMHg2QiwgMHhGRiwgMHhDMiwgMHgyMCwgMHhGQywgMHhGMywgMHhBQywgMHgyRSwgMHg3QywgMHg2MywgMHg1NSwKKyAgICAweDExLCAweDI0LCAweEVFLCAweEUzLCAweDUxLCAweEU2LCAweDE4LCAweEIwLCAweEQ2LCAweDZFLCAweDg1LCAweEY1LCAweEU1LCAweDAwLCAweDkxLCAweDIxLAorICAgIDB4RDQsIDB4ODgsIDB4RjEsIDB4NTAsIDB4MzEsIDB4MzksIDB4MEEsIDB4MDgsIDB4MjMsIDB4QTksIDB4MDEsIDB4QjMsIDB4RUYsIDB4RTgsIDB4QUYsIDB4REYsCisgICAgMHhBRSwgMHgyQiwgMHhBRiwgMHhGOSwgMHgwRCwgMHhFMiwgMHg0RCwgMHgwMCwgMHhFMywgMHg1QiwgMHg1NiwgMHg4MCwgMHg5MCwgMHhCOCwgMHhENCwgMHg3NiwKKyAgICAweEVBLCAweDE0LCAweDY4LCAweDQwLCAweDUzLCAweDlBLCAweDNCLCAweDgyLCAweEZDLCAweDYzLCAweDlGLCAweDlBLCAweDRDLCAweEZGLCAweEUzLCAweDEwLAorICAgIDB4NDksIDB4Q0IsIDB4QTgsIDB4MUQsIDB4NTksIDB4OTgsIDB4M0YsIDB4NEMsIDB4REQsIDB4MkMsIDB4QjIsIDB4OEQsIDB4MTEsIDB4QjUsIDB4MjMsIDB4RjQsCisgICAgMHg5MCwgMHg4NywgMHhFMywgMHg4NSwgMHgyNCwgMHhENCwgMHgwQSwgMHhFOSwgMHg3OSwgMHhCQiwgMHgxRiwgMHg1NiwgMHhDMywgMHg2MiwgMHgzNSwgMHhERiwKKyAgICAweEUwLCAweEFBLCAweDUxLCAweDAyLCAweDkzLCAweEFFLCAweDExLCAweDIxLCAweENGLCAweEU0LCAweEYzLCAweDg0LCAweDA4LCAweDY0LCAweDA2LCAweDhCLAorICAgIDB4OEEsIDB4MzIsIDB4QjAsIDB4RjAsIDB4QzUsIDB4RDMsIDB4NUUsIDB4MUUsIDB4RjEsIDB4NjksIDB4NDgsIDB4NDYsIDB4RUMsIDB4NjEsIDB4QTIsIDB4N0YsCisgICAgMHgyOCwgMHhCNiwgMHhGOCwgMHhDOSwgMHg3OCwgMHgzNSwgMHg5QiwgMHg0RCwgMHg4QywgMHhGRSwgMHhCNywgMHhDOSwgMHhCQywgMHhFOSwgMHg2RSwgMHgxNywKKyAgICAweENCLCAweEZCLCAweDAwLCAweDkxLCAweEU4LCAweDI3LCAweDc3LCAweDdDLCAweDk2LCAweEQ2LCAweEFGLCAweDhELCAweEU0LCAweDE4LCAweDhGLCAweEVCLAorICAgIDB4N0IsIDB4OUYsIDB4MDEsIDB4OUMsIDB4MkUsIDB4NzcsIDB4RjUsIDB4NDAsIDB4N0MsIDB4NkQsIDB4ODUsIDB4QTUsIDB4MTcsIDB4OEYsIDB4NDAsIDB4QjcsCisgICAgMHg5RCwgMHhCQiwgMHg2OCwgMHg5NiwgMHgyMiwgMHgxNywgMHgwQSwgMHg3NSwgMHhBMywgMHgxRCwgMHgwNywgMHhFNCwgMHg5MywgMHg4QSwgMHhCQiwgMHhBRCwKKyAgICAweDdFLCAweDJFLCAweEFBLCAweDIxLCAweERBLCAweDYyLCAweEJGLCAweEU4LCAweEJCLCAweDI4LCAweEIyLCAweENFLCAweEUzLCAweDBGLCAweENCLCAweDNDLAorICAgIDB4MkMsIDB4NEEsIDB4M0QsIDB4QUEsIDB4RkMsIDB4NEIsIDB4QjUsIDB4NkEsIDB4MDQsIDB4MDUsIDB4QTQsIDB4NjMsIDB4OTgsIDB4RDgsIDB4QTIsIDB4NUUsCisgICAgMHg5NiwgMHhENSwgMHg1MiwgMHg3QiwgMHhDQiwgMHhFRCwgMHhBMywgMHg3MiwgMHgzRSwgMHgyQSwgMHgzRiwgMHhFMiwgMHg3OSwgMHgzRCwgMHhGRSwgMHg4QSwKKyAgICAweEEwLCAweEQ0LCAweDMyLCAweDYwLCAweDEwLCAweEJFLCAweEYyLCAweEU1LCAweEY5LCAweDAzLCAweEUyLCAweDY2LCAweDc2LCAweDdBLCAweDQ4LCAweEVGLAorICAgIDB4MzMsIDB4NjMsIDB4QTAsIDB4OTMsIDB4OTksIDB4MjgsIDB4OTcsIDB4NDAsIDB4QjksIDB4QUQsIDB4RUMsIDB4QjQsIDB4RDcsIDB4OTgsIDB4OUQsIDB4ODcsCisgICAgMHg2QSwgMHg2QywgMHg5RCwgMHhENSwgMHhGNiwgMHhBQSwgMHg2NCwgMHhFNCwgMHhENiwgMHg3MywgMHg5MiwgMHhBOSwgMHhDMiwgMHhCNCwgMHg4MCwgMHgwRiwKKyAgICAweDU4LCAweDdCLCAweDAxLCAweDE3LCAweEFELCAweDdDLCAweDNFLCAweDVDLCAweERFLCAweDdELCAweDc3LCAweEYyLCAweDM1LCAweDRFLCAweDZGLCAweDBELAorICAgIDB4RTEsIDB4NEUsIDB4QUQsIDB4NEUsIDB4ODIsIDB4MzYsIDB4ODcsIDB4ODksIDB4NDMsIDB4MTMsIDB4NTAsIDB4MDgsIDB4MjIsIDB4M0QsIDB4MTQsIDB4M0QsCisgICAgMHg4NSwgMHg1MCwgMHhCQywgMHgxNywgMHgxOCwgMHg2NiwgMHhFMSwgMHg4NSwgMHhFRiwgMHhDQSwgMHhGMSwgMHgxMiwgMHg5QiwgMHhBMSwgMHhDMCwgMHg5NSwKKyAgICAweDE0LCAweDJFLCAweDJDLCAweEI2LCAweDFCLCAweDI1LCAweDlGLCAweDRDLCAweEYyLCAweDQ5LCAweEFFLCAweDhBLCAweEQ0LCAweEU3LCAweDFBLCAweDA1LAorICAgIDB4RkIsIDB4NkYsIDB4NzUsIDB4NDIsIDB4QzYsIDB4MTQsIDB4RDgsIDB4RTUsIDB4MDMsIDB4MDQsIDB4ODAsIDB4RUIsIDB4NTgsIDB4OEYsIDB4OTIsIDB4QUYsCisgICAgMHhEMSwgMHgxNSwgMHgwMCwgMHg2MywgMHhCNywgMHhGRiwgMHhGOCwgMHhENywgMHhFMywgMHhDMCwgMHgzNywgMHhFRiwgMHg2OCwgMHhGOSwgMHhDOCwgMHg1QSwKKyAgICAweDAzLCAweDZELCAweDRBLCAweDU2LCAweEFFLCAweERGLCAweDhFLCAweEJELCAweDUyLCAweDVGLCAweDdELCAweDIyLCAweDRBLCAweEZBLCAweEZFLCAweEEyLAorICAgIDB4M0YsIDB4Q0UsIDB4NDUsIDB4RDgsIDB4NDEsIDB4OTQsIDB4NzAsIDB4MjEsIDB4NDgsIDB4RjcsIDB4OTUsIDB4RTUsIDB4RTQsIDB4MjIsIDB4NTIsIDB4N0UsCisgICAgMHgxNSwgMHhBRSwgMHhDNywgMHgzNCwgMHhBOCwgMHhGOSwgMHgxNSwgMHg0QiwgMHgxNSwgMHgxMSwgMHgxOSwgMHgxOSwgMHhEQywgMHg0QSwgMHgzRCwgMHgzRCwKKyAgICAweDMzLCAweDc5LCAweDBFLCAweDhBLCAweDM0LCAweDExLCAweEVCLCAweDRBLCAweDhCLCAweEFGLCAweDBGLCAweEU4LCAweEJBLCAweDNFLCAweDk0LCAweEE2LAorICAgIDB4MkMsIDB4RjgsIDB4RjgsIDB4QTksIDB4RDEsIDB4RTcsIDB4M0EsIDB4M0QsIDB4NDQsIDB4QzgsIDB4MDgsIDB4NDcsIDB4NUUsIDB4RDgsIDB4RjEsIDB4NkMsCisgICAgMHhDRCwgMHg4QywgMHg2MCwgMHhENywgMHhGNiwgMHhBNSwgMHg1NywgMHhGMiwgMHgwQywgMHhENiwgMHg5RSwgMHgwQywgMHg5MCwgMHhDQiwgMHhBRSwgMHhDMCwKKyAgICAweEMxLCAweDYyLCAweEQ0LCAweEM2LCAweDZDLCAweDdGLCAweEVELCAweDM4LCAweDIzLCAweDQ4LCAweDBCLCAweDUzLCAweDY0LCAweEJFLCAweEQyLCAweDZDLAorICAgIDB4RTIsIDB4QUIsIDB4NzEsIDB4OUUsIDB4NTEsIDB4ODcsIDB4QkYsIDB4NTQsIDB4QzEsIDB4MzYsIDB4QzAsIDB4NUIsIDB4MEUsIDB4RDAsIDB4NjMsIDB4RTksCisgICAgMHgxQywgMHgwQywgMHgwNywgMHgzQiwgMHhBRSwgMHhFRSwgMHhBNSwgMHg1MSwgMHgxRSwgMHhFNiwgMHg4RSwgMHgwMSwgMHgxRSwgMHg1OSwgMHhFQSwgMHg2QywKKyAgICAweDI1LCAweDYzLCAweDMzLCAweDA4LCAweDA4LCAweDJDLCAweDIxLCAweEY1LCAweEVBLCAweDAxLCAweDU2LCAweDQ0LCAweDdELCAweEUwLCAweDg1LCAweDFDLAorICAgIDB4RDUsIDB4NEQsIDB4OEQsIDB4QzIsIDB4QjcsIDB4RUUsIDB4NTQsIDB4NTEsIDB4Q0EsIDB4OEIsIDB4QTYsIDB4Q0YsIDB4NDcsIDB4ODUsIDB4MDIsIDB4MjksCisgICAgMHhERCwgMHg2MCwgMHg0MiwgMHhFNCwgMHgxNywgMHg4RSwgMHg0MiwgMHg1RCwgMHhGRiwgMHgxMCwgMHg5MSwgMHgyNSwgMHg0NiwgMHg5MywgMHg2QiwgMHhEQSwKKyAgICAweEFELCAweERBLCAweDAxLCAweDBGLCAweDMxLCAweDg1LCAweDUzLCAweDlFLCAweDdBLCAweDNDLCAweDE0LCAweEY1LCAweEYwLCAweEE0LCAweDEyLCAweDlCLAorICAgIDB4RUQsIDB4QzcsIDB4ODMsIDB4NzMsIDB4QTQsIDB4NkIsIDB4QzgsIDB4QUEsIDB4N0IsIDB4RDQsIDB4NjQsIDB4RjcsIDB4RjUsIDB4RDMsIDB4MDcsIDB4MkYsCisgICAgMHg0MSwgMHg4QiwgMHgwOSwgMHhCRiwgMHhDNywgMHhCRCwgMHgwMCwgMHgyQSwgMHhCQywgMHhCQSwgMHhGQywgMHg5QSwgMHhFMiwgMHg1OCwgMHg2NCwgMHhGRCwKKyAgICAweEUxLCAweDYwLCAweDRFLCAweDNDLCAweDYwLCAweEUzLCAweDg0LCAweENELCAweEQzLCAweEFFLCAweEI0LCAweDBELCAweEY4LCAweEEzLCAweEFBLCAweDc0LAorICAgIDB4RTEsIDB4NDIsIDB4MTgsIDB4NTYsIDB4QTYsIDB4NzIsIDB4NjUsIDB4RDEsIDB4MTQsIDB4Q0MsIDB4RkUsIDB4MUYsIDB4RDAsIDB4OTEsIDB4ODQsIDB4QTEsCisgICAgMHg2QSwgMHgzMywgMHg3NiwgMHg5NywgMHg1QiwgMHg3MiwgMHgzRiwgMHhCMywgMHhCOCwgMHhERiwgMHhEOSwgMHgzRSwgMHgxRCwgMHgxRSwgMHhGRCwgMHgzNSwKKyAgICAweERGLCAweDRCLCAweEQ3LCAweDUwLCAweEU3LCAweDJELCAweDFCLCAweEM4LCAweENBLCAweEIzLCAweDg5LCAweEU0LCAweDU2LCAweEE5LCAweDgxLCAweDRBLAorICAgIDB4RUQsIDB4OTYsIDB4RTMsIDB4MEMsIDB4RTUsIDB4OUYsIDB4NjAsIDB4RjUsIDB4QjQsIDB4OUEsIDB4Q0QsIDB4QUQsIDB4QkEsIDB4NjMsIDB4OEIsIDB4NTQsCisgICAgMHgzOSwgMHhEMCwgMHgwQSwgMHhFOSwgMHg5OCwgMHg1RSwgMHhDMSwgMHhDOSwgMHg0MCwgMHhCNywgMHhBNCwgMHgxMCwgMHgzMiwgMHg3RCwgMHg5RSwgMHgwMCwKKyAgICAweDY4LCAweDY5LCAweEI4LCAweDIzLCAweERGLCAweEJFLCAweEMwLCAweDQ1LCAweDMzLCAweEYxLCAweDhFLCAweDI3LCAweEVELCAweEExLCAweEQ5LCAweDM4LAorICAgIDB4NzQsIDB4RjIsIDB4OEEsIDB4QkUsIDB4ODUsIDB4MUUsIDB4RjAsIDB4NUIsIDB4MUEsIDB4MzQsIDB4OTMsIDB4NzIsIDB4REUsIDB4MzcsIDB4RDcsIDB4ODMsCisgICAgMHhFQiwgMHg3QiwgMHgyOCwgMHg1RSwgMHgxNCwgMHgyQSwgMHhCQywgMHhDNywgMHhFMiwgMHhCMywgMHgwNiwgMHgyOSwgMHg3NiwgMHgzNywgMHhEMywgMHhDNCwKKyAgICAweDQ3LCAweDhBLCAweERCLCAweEM3LCAweDMwLCAweDAyLCAweDY2LCAweEM5LCAweDUzLCAweDVFLCAweEJBLCAweERCLCAweDA3LCAweDYwLCAweDBELCAweDZCLAorICAgIDB4NTQsIDB4Q0IsIDB4MEMsIDB4QzEsIDB4MjcsIDB4NTQsIDB4REUsIDB4MTIsIDB4RUQsIDB4N0QsIDB4OEUsIDB4NzYsIDB4Q0QsIDB4NTcsIDB4NTIsIDB4ODgsCisgICAgMHhGMCwgMHgxNiwgMHg5QywgMHg4MCwgMHhFMSwgMHgwMCwgMHg1MCwgMHg5NSwgMHg2MSwgMHg4RSwgMHg1NSwgMHhFRSwgMHhFMSwgMHhDOSwgMHg4RiwgMHhENCwKKyAgICAweDFDLCAweDc0LCAweERELCAweDg1LCAweENCLCAweEU1LCAweDdDLCAweDhCLCAweDI0LCAweDRDLCAweDRCLCAweERBLCAweDE2LCAweDk4LCAweEEwLCAweDcwLAorICAgIDB4NTgsIDB4MTMsIDB4NUQsIDB4MDUsIDB4MEMsIDB4M0YsIDB4NjEsIDB4RTMsIDB4MTQsIDB4RTIsIDB4RUYsIDB4OTIsIDB4QzgsIDB4M0EsIDB4REEsIDB4RkYsCisgICAgMHgwRSwgMHgxQSwgMHhCMywgMHg3RCwgMHgwMiwgMHg0MywgMHhERCwgMHhFNSwgMHhFMywgMHg4QywgMHhFOSwgMHhGQywgMHhEMSwgMHg2NiwgMHhBMiwgMHg4RSwKKyAgICAweDRELCAweDgxLCAweEE0LCAweDRDLCAweEJGLCAweDRELCAweDlCLCAweDY3LCAweDUzLCAweDYzLCAweDExLCAweDg2LCAweDc4LCAweDU0LCAweEYwLCAweDlFLAorICAgIDB4NzAsIDB4NTYsIDB4MUMsIDB4NUYsIDB4QkEsIDB4QzksIDB4MUMsIDB4QUIsIDB4QzgsIDB4MzksIDB4OEIsIDB4QzksIDB4RTQsIDB4QjEsIDB4MDcsIDB4RUEsCisgICAgMHhCNSwgMHhENCwgMHg3NSwgMHhGMiwgMHg5MSwgMHg4MywgMHgxQywgMHgyRiwgMHg3MywgMHhFQywgMHhGQiwgMHg1NiwgMHg2OCwgMHhBMSwgMHhDOCwgMHhBQywKKyAgICAweENBLCAweDIwLCAweDNGLCAweDZBLCAweEU5LCAweEJGLCAweEMxLCAweDFELCAweDAwLCAweEJDLCAweDIzLCAweDFGLCAweDFFLCAweEY4LCAweEMzLCAweDA4LAorICAgIDB4QkQsIDB4NjYsIDB4QTUsIDB4RjYsIDB4NUQsIDB4NzcsIDB4RDUsIDB4NUEsIDB4NkQsIDB4MDQsIDB4RUIsIDB4NzYsIDB4OUUsIDB4REIsIDB4MEMsIDB4OEMsCisgICAgMHgyOCwgMHg5RiwgMHhDQywgMHg0RSwgMHg3NywgMHhGQywgMHgwMCwgMHgzNiwgMHhFQywgMHhDRSwgMHg0QiwgMHg3MiwgMHgwNiwgMHhEMSwgMHg3MywgMHgxQSwKKyAgICAweEQ4LCAweDkxLCAweDQ1LCAweDU1LCAweEI4LCAweEE3LCAweDhDLCAweDQwLCAweENBLCAweEY3LCAweENGLCAweDM5LCAweDZBLCAweDc0LCAweDYzLCAweEQzLAorICAgIDB4NzEsIDB4NzYsIDB4QTQsIDB4NTksIDB4QjgsIDB4OEMsIDB4QjUsIDB4NEUsIDB4Q0EsIDB4MTIsIDB4MzUsIDB4QjUsIDB4ODcsIDB4OUYsIDB4QTksIDB4OTQsCisgICAgMHgwNywgMHg2NywgMHg0RCwgMHhGMCwgMHhERiwgMHg5NywgMHgwRiwgMHg1MywgMHg2OCwgMHhDQywgMHg2NywgMHgyNiwgMHhGOCwgMHhGNSwgMHhCRSwgMHhBRCwKKyAgICAweDFFLCAweDk1LCAweEQwLCAweDkwLCAweDg4LCAweDI3LCAweEE4LCAweDNELCAweDRGLCAweEExLCAweDU4LCAweERFLCAweDhGLCAweEJDLCAweDM2LCAweDJGLAorICAgIDB4MzYsIDB4MEIsIDB4MzgsIDB4OUEsIDB4NTEsIDB4OTUsIDB4QTIsIDB4RTUsIDB4OEYsIDB4QzUsIDB4MUQsIDB4RTQsIDB4MkUsIDB4MjcsIDB4OUQsIDB4RUEsCisgICAgMHg0MywgMHhENywgMHgwNywgMHgwMiwgMHgwQiwgMHgyNiwgMHg4NSwgMHhEMywgMHhFQywgMHhBMywgMHg2NywgMHhBOSwgMHhDMywgMHgyMywgMHhGQSwgMHg0NiwKKyAgICAweDVGLCAweDlDLCAweDY0LCAweEQ1LCAweENDLCAweDdELCAweDc1LCAweEUzLCAweDUxLCAweDMyLCAweDMxLCAweDFGLCAweDUxLCAweDk5LCAweEYwLCAweDU3LAorICAgIDB4MzAsIDB4QzksIDB4MjIsIDB4QTAsIDB4MkIsIDB4QTMsIDB4QTcsIDB4N0EsIDB4MjYsIDB4MjEsIDB4OTEsIDB4RDEsIDB4NzUsIDB4RDQsIDB4QjcsIDB4MEIsCisgICAgMHhDNSwgMHg5NiwgMHg3MSwgMHg2NiwgMHgyRCwgMHg1RSwgMHhEQSwgMHg3MSwgMHg0OCwgMHhFQSwgMHhBQywgMHg5NywgMHg4QiwgMHgyMywgMHhENSwgMHg0OSwKKyAgICAweEMyLCAweDY2LCAweDFELCAweDYyLCAweEZDLCAweDA2LCAweDE3LCAweEExLCAweEVDLCAweDcxLCAweDE3LCAweEEwLCAweDNCLCAweEUzLCAweEYwLCAweEY3LAorICAgIDB4MEQsIDB4Q0IsIDB4ODQsIDB4QjYsIDB4N0MsIDB4QzAsIDB4NDIsIDB4MEUsIDB4QjgsIDB4QTMsIDB4OEMsIDB4MzEsIDB4NEEsIDB4OUEsIDB4QUEsIDB4OTcsCisgICAgMHhGQywgMHg2NywgMHhCMSwgMHg3NSwgMHhDNiwgMHg1MSwgMHhGQywgMHgyOCwgMHg2OSwgMHhEMCwgMHg0MywgMHgyOCwgMHg1NCwgMHhCOSwgMHhBRSwgMHhCRSwKKyAgICAweDQ0LCAweDdBLCAweDE4LCAweDM2LCAweDM5LCAweDI2LCAweDQ2LCAweDI5LCAweDMzLCAweDBFLCAweDE1LCAweEFGLCAweDAzLCAweDIxLCAweDA3LCAweDg3LAorICAgIDB4REUsIDB4MzAsIDB4RTMsIDB4RTUsIDB4REEsIDB4MzQsIDB4ODEsIDB4RTUsIDB4RTIsIDB4Q0QsIDB4NkIsIDB4RUUsIDB4RUYsIDB4OTUsIDB4RDMsIDB4MkMsCisgICAgMHg3QiwgMHgzMSwgMHgxNSwgMHg1NiwgMHhCNCwgMHg3NywgMHhEQSwgMHg0MCwgMHhGRCwgMHg1OSwgMHhCOSwgMHhERiwgMHhFQywgMHgzOSwgMHgyQiwgMHg2QywKKyAgICAweDE4LCAweDdFLCAweENBLCAweDk5LCAweDVFLCAweDU1LCAweEYyLCAweDYxLCAweDQ1LCAweDc0LCAweDJDLCAweDUwLCAweEI3LCAweDQyLCAweDMxLCAweEQ5LAorICAgIDB4NTgsIDB4QUUsIDB4NzUsIDB4MTcsIDB4NEQsIDB4RkEsIDB4RjEsIDB4MTgsIDB4MjYsIDB4NkIsIDB4MkMsIDB4RDksIDB4RTgsIDB4OTgsIDB4NzUsIDB4RTcsCisgICAgMHg4QSwgMHhDOSwgMHgwNywgMHg2MywgMHg2RCwgMHg1NSwgMHhGRCwgMHhFRSwgMHgyRCwgMHgyNCwgMHg0RCwgMHgwRiwgMHgxMSwgMHg3QywgMHgwQiwgMHg0OCwKKyAgICAweDk5LCAweEMwLCAweDA2LCAweDgzLCAweEMzLCAweEY1LCAweDkwLCAweEJELCAweDEyLCAweEU3LCAweEM2LCAweDg2LCAweDE2LCAweDhBLCAweDYzLCAweEQ3LAorICAgIDB4RjgsIDB4MUUsIDB4NTQsIDB4Q0QsIDB4MDYsIDB4MjAsIDB4NEMsIDB4NUMsIDB4QzYsIDB4MTUsIDB4NzYsIDB4NTYsIDB4RTAsIDB4RTEsIDB4REQsIDB4RTQsCisgICAgMHhDMSwgMHg2MywgMHg3NSwgMHg1MywgMHhCQywgMHhFMSwgMHg4QywgMHhCRiwgMHgyNiwgMHg0MSwgMHhGOSwgMHhBOSwgMHhDQywgMHhFRSwgMHg2OSwgMHhFQSwKKyAgICAweDdELCAweDBFLCAweDlGLCAweEYyLCAweDcwLCAweDBDLCAweDRBLCAweEQwLCAweDJELCAweDE3LCAweDQ3LCAweEIwLCAweDY2LCAweEQ0LCAweERGLCAweDlBLAorICAgIDB4REMsIDB4QUQsIDB4OTQsIDB4RTYsIDB4NjYsIDB4M0YsIDB4MEQsIDB4NTcsIDB4QjMsIDB4QUQsIDB4OTAsIDB4RDAsIDB4RDcsIDB4NzIsIDB4M0QsIDB4MUUsCisgICAgMHg5QywgMHhBRiwgMHgxQSwgMHg0NiwgMHgyMCwgMHg4QiwgMHg0OCwgMHhFQSwgMHgzQSwgMHgxMCwgMHg0MiwgMHgzMiwgMHgzRCwgMHhCOSwgMHhFQiwgMHg2MSwKKyAgICAweDQ3LCAweDI5LCAweDYxLCAweEVELCAweEI2LCAweDhDLCAweDFELCAweDlFLCAweEQ0LCAweDAwLCAweDM0LCAweEQ5LCAweEFCLCAweDE2LCAweDE2LCAweDg0LAorICAgIDB4QUYsIDB4QzUsIDB4NzksIDB4MzcsIDB4RTQsIDB4QzksIDB4QkUsIDB4OTEsIDB4NTcsIDB4NEYsIDB4RkUsIDB4ODcsIDB4RjcsIDB4NDcsIDB4NjIsIDB4OTksCisgICAgMHg0RiwgMHhGQSwgMHhBRSwgMHg1MSwgMHg2OCwgMHgxQSwgMHhFMiwgMHg5MCwgMHhCNSwgMHg2MiwgMHgyMSwgMHhFNCwgMHgwNiwgMHgxNCwgMHgzRCwgMHhCNSwKKyAgICAweEMyLCAweDM0LCAweEIwLCAweEYzLCAweDZCLCAweDBELCAweEY3LCAweDBGLCAweDNDLCAweDU0LCAweEQ2LCAweDJCLCAweENGLCAweEQ4LCAweEQxLCAweDlCLAorICAgIDB4NTQsIDB4OEIsIDB4OTMsIDB4QkIsIDB4MTUsIDB4RjEsIDB4QzUsIDB4OUYsIDB4MjQsIDB4NTMsIDB4MDIsIDB4OTQsIDB4REUsIDB4NjYsIDB4NEYsIDB4MkYsCisgICAgMHg3NywgMHhGNiwgMHhFNCwgMHg0QywgMHg1OCwgMHgxOSwgMHhCQiwgMHgwOCwgMHgwQSwgMHg5QiwgMHhBQywgMHg0QywgMHhBNSwgMHhBQywgMHg0QSwgMHg2NiwKKyAgICAweDcyLCAweDAxLCAweDQ1LCAweDQxLCAweERBLCAweDg2LCAweEY5LCAweDdDLCAweDBBLCAweDhFLCAweEE2LCAweEZELCAweDEwLCAweDE4LCAweDRGLCAweDJGLAorICAgIDB4RUEsIDB4NUEsIDB4RDksIDB4NzksIDB4RDIsIDB4RDgsIDB4M0YsIDB4MDIsIDB4MTEsIDB4NUYsIDB4NDMsIDB4NzksIDB4M0EsIDB4NDAsIDB4NzUsIDB4NkMsCisgICAgMHhGQywgMHgzQSwgMHgyNCwgMHhFQiwgMHhCRiwgMHhEMiwgMHhDMCwgMHhGMywgMHhEMCwgMHhEMSwgMHgyMSwgMHhBOSwgMHg4NCwgMHhGQiwgMHg5RCwgMHhBMywKKyAgICAweEYxLCAweDBGLCAweDU3LCAweEFFLCAweDk5LCAweENCLCAweDNCLCAweEJDLCAweDU1LCAweDg4LCAweEU2LCAweEUxLCAweDdELCAweEM2LCAweERCLCAweEE5LAorICAgIDB4MzUsIDB4NTksIDB4MTEsIDB4MjYsIDB4MDUsIDB4MEUsIDB4OEUsIDB4NUQsIDB4QkUsIDB4RjEsIDB4MzIsIDB4NUEsIDB4QkYsIDB4QkUsIDB4RTgsIDB4MDcsCisgICAgMHhCOCwgMHg4MCwgMHg2MSwgMHg3MCwgMHhFQSwgMHg4QywgMHgwNSwgMHhDMCwgMHg0RCwgMHhCRiwgMHhFOSwgMHg2MywgMHhBMSwgMHgxMSwgMHhGQywgMHgwQSwKKyAgICAweDRCLCAweDZELCAweDAzLCAweDExLCAweDg2LCAweDdBLCAweDY5LCAweDQ5LCAweDE1LCAweERBLCAweDIzLCAweDY3LCAweEM1LCAweDUxLCAweDNBLCAweDVBLAorICAgIDB4QUQsIDB4Q0EsIDB4QUMsIDB4RjcsIDB4RDcsIDB4NkMsIDB4MEUsIDB4MkQsIDB4QzUsIDB4ODgsIDB4RDksIDB4OTUsIDB4NDgsIDB4NTgsIDB4NzAsIDB4MzcsCisgICAgMHhCRSwgMHg4RSwgMHhCQywgMHhGNiwgMHgxNCwgMHg0QywgMHhBMCwgMHgxMywgMHg5QywgMHg4RCwgMHg1OCwgMHg5RiwgMHgwMiwgMHhBQiwgMHg2NSwgMHhDQSwKKyAgICAweDY2LCAweDczLCAweDg0LCAweDNCLCAweEM2LCAweEQ1LCAweDQzLCAweDlFLCAweDFDLCAweENFLCAweEEwLCAweDAwLCAweDU5LCAweEVDLCAweDRBLCAweEMwLAorICAgIDB4OUQsIDB4MzEsIDB4NUEsIDB4QjIsIDB4MEEsIDB4ODYsIDB4MjMsIDB4MkEsIDB4Q0QsIDB4Q0YsIDB4MTgsIDB4OTYsIDB4RTIsIDB4RTUsIDB4RkYsIDB4MzYsCisgICAgMHhCQywgMHg2NiwgMHg4QSwgMHhBNywgMHg4QSwgMHhFMCwgMHhGNCwgMHgwNiwgMHgzOSwgMHg3QywgMHhDRiwgMHgyMSwgMHhFRSwgMHgxNywgMHgzOSwgMHg4NywKKyAgICAweDc0LCAweEEwLCAweDczLCAweDM4LCAweEE5LCAweDkwLCAweDZDLCAweEMyLCAweDFCLCAweEYwLCAweDY5LCAweEQ4LCAweEJGLCAweDZFLCAweDQ0LCAweDZGLAorICAgIDB4NzcsIDB4NzUsIDB4MUUsIDB4NDUsIDB4QjUsIDB4NjUsIDB4QUQsIDB4REYsIDB4NTYsIDB4NjYsIDB4RkQsIDB4QTAsIDB4NTksIDB4ODUsIDB4QzUsIDB4MDYsCisgICAgMHgwQywgMHhCRiwgMHhENSwgMHgxNywgMHhBMSwgMHg0OCwgMHg5OSwgMHg2MywgMHhFRSwgMHhGMCwgMHg3RCwgMHhBRSwgMHgzQSwgMHg3QywgMHg2QSwgMHg3QywKKyAgICAweEI0LCAweERBLCAweERCLCAweDFBLCAweEVELCAweDcwLCAweEY5LCAweDRELCAweEQyLCAweEE0LCAweDA5LCAweEU0LCAweEZBLCAweDRCLCAweDk1LCAweERELAorICAgIDB4OTUsIDB4N0IsIDB4M0QsIDB4RDEsIDB4NTIsIDB4REIsIDB4NTksIDB4NjgsIDB4RkYsIDB4RTUsIDB4MTMsIDB4MzksIDB4RTUsIDB4MDEsIDB4MTIsIDB4N0YsCisgICAgMHg5QSwgMHgwRSwgMHhGRiwgMHgzNSwgMHg3NSwgMHg2QSwgMHg1NiwgMHhFQSwgMHg2NiwgMHg5MSwgMHhGNywgMHgzRSwgMHg3MSwgMHg4NiwgMHg2QywgMHhDMywKKyAgICAweDExLCAweDFCLCAweDA0LCAweDRDLCAweDk4LCAweDEzLCAweEExLCAweDM1LCAweDIzLCAweDk2LCAweEM5LCAweDhDLCAweEZCLCAweDQzLCAweDk2LCAweDRCLAorICAgIDB4QzAsIDB4MUYsIDB4MzAsIDB4OTUsIDB4QUEsIDB4OEIsIDB4MjcsIDB4MTYsIDB4NkMsIDB4OTEsIDB4MEQsIDB4NjIsIDB4QUIsIDB4ODcsIDB4MUEsIDB4REEsCisgICAgMHg2MSwgMHhCMSwgMHgyRSwgMHhCQywgMHgxOSwgMHhBOCwgMHhGMCwgMHgzMiwgMHhENywgMHgwNiwgMHg2RiwgMHg4MiwgMHhGRCwgMHg1RiwgMHhGMSwgMHgwOCwKKyAgICAweDVFLCAweDk3LCAweDgzLCAweEVGLCAweEIwLCAweDkxLCAweEMyLCAweEU2LCAweDM3LCAweDQ3LCAweEZDLCAweEQxLCAweEU3LCAweDZDLCAweEMxLCAweDFBLAorICAgIDB4QUYsIDB4OTEsIDB4REYsIDB4NUMsIDB4MkQsIDB4MUIsIDB4QkMsIDB4NkEsIDB4MTAsIDB4QUMsIDB4QUUsIDB4MkMsIDB4MzQsIDB4Q0QsIDB4RDIsIDB4NkIsCisgICAgMHgxNSwgMHgwNywgMHhFQSwgMHhEMCwgMHg2QywgMHgzRSwgMHgxOSwgMHgxNCwgMHhFRiwgMHgzNSwgMHhBNCwgMHgyQiwgMHgxNywgMHhGOCwgMHgyRiwgMHg0OCwKKyAgICAweDBELCAweDVDLCAweDcwLCAweEUyLCAweEZGLCAweDk0LCAweDJCLCAweDU5LCAweDNDLCAweERFLCAweDJGLCAweDE0LCAweDg0LCAweDVGLCAweDBGLCAweEYzLAorICAgIDB4QTAsIDB4RkMsIDB4NDAsIDB4QkUsIDB4RkEsIDB4QUUsIDB4OTcsIDB4QzcsIDB4QzYsIDB4RjMsIDB4QjUsIDB4QzIsIDB4NTAsIDB4QkIsIDB4QTMsIDB4QjgsCisgICAgMHhDMSwgMHg3RCwgMHg2QiwgMHhFOSwgMHg4NywgMHg5OCwgMHg4QiwgMHhCRSwgMHgxOSwgMHhBNSwgMHhBQywgMHhCMSwgMHg4RCwgMHg2QywgMHg2NywgMHg5NCwKKyAgICAweDk1LCAweDdDLCAweDYwLCAweENDLCAweDBCLCAweDc1LCAweDI0LCAweEI5LCAweDU0LCAweDdELCAweEQ0LCAweDRELCAweDlCLCAweEYyLCAweEE2LCAweEZCLAorICAgIDB4QzAsIDB4NzgsIDB4MzgsIDB4OTAsIDB4MTksIDB4NUEsIDB4NjIsIDB4ODUsIDB4M0EsIDB4MzQsIDB4RDgsIDB4Q0QsIDB4QTEsIDB4QTUsIDB4RDksIDB4QzAsCisgICAgMHhDNSwgMHhCMywgMHg2RSwgMHgyNiwgMHgxMywgMHhDRiwgMHg3QywgMHhDMSwgMHg1MCwgMHg2RCwgMHg4MCwgMHhDRSwgMHhGOSwgMHhBNywgMHhGRSwgMHgyRiwKKyAgICAweDE0LCAweDUzLCAweDAzLCAweDBFLCAweEZFLCAweEI0LCAweEEyLCAweDc1LCAweDBBLCAweEI0LCAweEQ5LCAweERCLCAweEVBLCAweEJDLCAweEYxLCAweEIwLAorICAgIDB4OEUsIDB4RTUsIDB4MzMsIDB4NDksIDB4MTYsIDB4Q0QsIDB4M0IsIDB4N0MsIDB4M0IsIDB4MzEsIDB4NTEsIDB4OEQsIDB4RjIsIDB4MTIsIDB4REIsIDB4MDksCisgICAgMHhBNywgMHgwNiwgMHg3RSwgMHg2NiwgMHgwOSwgMHg3NywgMHhBMiwgMHgzRSwgMHhCOSwgMHhBMiwgMHhBMiwgMHhFRSwgMHhGQiwgMHg5RSwgMHg4NCwgMHhGMSwKKyAgICAweDc3LCAweDI4LCAweEIxLCAweDAyLCAweEY0LCAweEU5LCAweDc0LCAweDU2LCAweDNELCAweDZGLCAweDgzLCAweDJGLCAweERFLCAweDUwLCAweDRGLCAweEFBLAorICAgIDB4MkMsIDB4QzksIDB4OEEsIDB4NzEsIDB4NDUsIDB4RTEsIDB4NzksIDB4NEQsIDB4OUIsIDB4QzAsIDB4QzAsIDB4OEIsIDB4MzMsIDB4N0QsIDB4M0YsIDB4MDcsCisgICAgMHgyQiwgMHg0QywgMHgxNiwgMHg0RiwgMHhEMSwgMHhGQiwgMHgyOCwgMHhCOCwgMHg3QiwgMHhGMiwgMHg0RiwgMHhBOCwgMHg1NiwgMHg4NCwgMHhERiwgMHg2MSwKKyAgICAweEVDLCAweDFGLCAweDRELCAweDk1LCAweEM1LCAweEQ3LCAweDkwLCAweDRELCAweDM4LCAweDM1LCAweEU1LCAweDk2LCAweEJBLCAweDZELCAweDMxLCAweEFFLAorICAgIDB4RTcsIDB4QUMsIDB4RTYsIDB4REQsIDB4MDUsIDB4NUUsIDB4RDQsIDB4RjUsIDB4NDcsIDB4NUIsIDB4RUEsIDB4QTMsIDB4MzYsIDB4N0MsIDB4NTgsIDB4MDQsCisgICAgMHg0MSwgMHgzQywgMHhFQywgMHhDNiwgMHg3MCwgMHg1OSwgMHhFQywgMHg0RCwgMHhFMywgMHg4MCwgMHg1OSwgMHg2RCwgMHhBMSwgMHgzQSwgMHgzMSwgMHhBMSwKKyAgICAweDUwLCAweEI3LCAweDEwLCAweEMwLCAweEM0LCAweDQ3LCAweDg3LCAweEFCLCAweEVBLCAweDRCLCAweEZELCAweEY2LCAweDVDLCAweEE4LCAweDYyLCAweDQwLAorICAgIDB4M0UsIDB4ODksIDB4MUQsIDB4RTEsIDB4OUIsIDB4MDQsIDB4MUYsIDB4MjIsIDB4MkIsIDB4QUYsIDB4MEIsIDB4RkMsIDB4RDEsIDB4NjQsIDB4NEIsIDB4Q0UsCisgICAgMHhDNCwgMHhGOSwgMHgxOSwgMHhGNCwgMHgyMSwgMHg5NSwgMHhCQSwgMHhDMCwgMHg3NywgMHg0QiwgMHhGQywgMHgxNSwgMHhDNywgMHg2RiwgMHhGNywgMHg3MCwKKyAgICAweDhFLCAweEUyLCAweERGLCAweEZFLCAweDQ4LCAweEE5LCAweDE3LCAweEEyLCAweEFCLCAweEE1LCAweEZDLCAweDJBLCAweDcyLCAweDA4LCAweEZGLCAweEJDLAorICAgIDB4NTYsIDB4RkMsIDB4QUYsIDB4RkYsIDB4NDcsIDB4RUMsIDB4Q0UsIDB4MjksIDB4MTcsIDB4QUUsIDB4MkQsIDB4QjMsIDB4QjMsIDB4NUYsIDB4OTMsIDB4OUQsCisgICAgMHg1NywgMHgyQSwgMHhGNCwgMHhERSwgMHhERCwgMHhFNCwgMHhFNiwgMHg0MywgMHg3MywgMHhDQSwgMHgwMCwgMHgxNiwgMHhCOCwgMHhENywgMHgxNSwgMHg2NywKKyAgICAweEVCLCAweDMzLCAweDZDLCAweENFLCAweDBDLCAweEZBLCAweDhGLCAweEYxLCAweDA4LCAweDZFLCAweEMwLCAweDNGLCAweEFGLCAweDMwLCAweDlGLCAweDJBLAorICAgIDB4OTgsIDB4NEMsIDB4MDMsIDB4MUMsIDB4ODgsIDB4N0QsIDB4QkYsIDB4N0EsIDB4QjEsIDB4QUUsIDB4NTEsIDB4NjksIDB4NkQsIDB4RTksIDB4NjcsIDB4OEYsCisgICAgMHg3MywgMHgzQSwgMHhCOSwgMHg1OCwgMHg5QiwgMHhCMCwgMHhFNiwgMHgxNCwgMHhCMiwgMHgwNCwgMHg1NywgMHg4NSwgMHg2RSwgMHgwOSwgMHg4NCwgMHg1MywKKyAgICAweDFGLCAweDZELCAweEFBLCAweEQxLCAweDQyLCAweENBLCAweEZBLCAweDhELCAweEI1LCAweEFBLCAweEQ2LCAweERDLCAweDlBLCAweEMxLCAweDkwLCAweDY5LAorICAgIDB4NUEsIDB4QjcsIDB4QjgsIDB4NzUsIDB4RDQsIDB4RDgsIDB4NUUsIDB4MkIsIDB4NUUsIDB4QjUsIDB4NzMsIDB4NEIsIDB4NDIsIDB4MkQsIDB4NUMsIDB4NEMsCisgICAgMHg1OCwgMHg5RSwgMHhGMSwgMHhFMCwgMHgxOCwgMHg1MSwgMHg1QiwgMHg2OCwgMHhFQSwgMHg0RSwgMHg5MiwgMHg5OCwgMHg2MiwgMHg2QywgMHhGOCwgMHg2OCwKKyAgICAweEE4LCAweDkyLCAweDQ4LCAweDhFLCAweDJCLCAweDExLCAweEM3LCAweEM1LCAweDhFLCAweDNBLCAweDNDLCAweEZGLCAweEIzLCAweDkzLCAweDMyLCAweEE4LAorICAgIDB4NTUsIDB4OTQsIDB4MEUsIDB4QTEsIDB4NzgsIDB4N0UsIDB4M0QsIDB4RDIsIDB4RjAsIDB4QTIsIDB4MjcsIDB4MUIsIDB4OEYsIDB4MTQsIDB4NzMsIDB4MEIsCisgICAgMHhFNywgMHhDOSwgMHhCRSwgMHhFNSwgMHg0OSwgMHhDRiwgMHgyNiwgMHhFMiwgMHhDMCwgMHg1RSwgMHg1MSwgMHhFNSwgMHhBQywgMHgzMiwgMHg0NSwgMHgzNywKKyAgICAweDZBLCAweDRDLCAweEY5LCAweENDLCAweDZDLCAweDBBLCAweDBCLCAweEVFLCAweDFDLCAweDVCLCAweDdELCAweEU4LCAweERGLCAweDgzLCAweDk2LCAweDBFLAorICAgIDB4N0QsIDB4NkUsIDB4ODcsIDB4MkQsIDB4NEEsIDB4QTgsIDB4MDAsIDB4N0MsIDB4RTksIDB4RTIsIDB4MUEsIDB4RTcsIDB4OUUsIDB4OUQsIDB4MDksIDB4OTksCisgICAgMHhBNSwgMHhCNiwgMHg0NiwgMHg0RCwgMHhERSwgMHhENywgMHhBOSwgMHg5QiwgMHgxMywgMHhBNSwgMHhDOSwgMHhCMSwgMHg2RSwgMHhEQywgMHhGNiwgMHg0MiwKKyAgICAweDIwLCAweDA4LCAweDg2LCAweEZFLCAweDhBLCAweDNFLCAweDQyLCAweDQyLCAweDMzLCAweDBCLCAweDU0LCAweEQxLCAweEI5LCAweDk3LCAweDg2LCAweDAzLAorICAgIDB4QzksIDB4QTcsIDB4MjAsIDB4MEIsIDB4MDksIDB4NDYsIDB4MEMsIDB4Q0YsIDB4NkIsIDB4N0IsIDB4NzQsIDB4OTUsIDB4RkUsIDB4QzAsIDB4MjQsIDB4OEQsCisgICAgMHgxMiwgMHhCRCwgMHhDOSwgMHg2MCwgMHg0OCwgMHgyRiwgMHgwMiwgMHg3NywgMHg1QywgMHg1RiwgMHg4NiwgMHhBOSwgMHgzOSwgMHhCMywgMHg3QywgMHg3NywKKyAgICAweDEwLCAweENFLCAweEU5LCAweEI0LCAweDYxLCAweDYzLCAweDYzLCAweDM5LCAweDg2LCAweDg5LCAweDk3LCAweDRBLCAweEQzLCAweDE2LCAweDUxLCAweDFGLAorICAgIDB4OEUsIDB4RkMsIDB4RjAsIDB4NTEsIDB4RjQsIDB4NUQsIDB4NjIsIDB4NzMsIDB4RjMsIDB4NDcsIDB4ODIsIDB4MDQsIDB4RjAsIDB4RDgsIDB4RDgsIDB4RDUsCisgICAgMHgxNiwgMHg2MywgMHg5NiwgMHhCRSwgMHhGNSwgMHhCNSwgMHg0QSwgMHg3MCwgMHhDQiwgMHg4QiwgMHgyMywgMHhGNSwgMHhCMCwgMHhFRSwgMHgwRiwgMHhGQSwKKyAgICAweEM3LCAweDlBLCAweEE1LCAweEIxLCAweDZCLCAweDM5LCAweDUzLCAweDkwLCAweEFGLCAweEY4LCAweDlGLCAweENDLCAweDk5LCAweEU0LCAweDY1LCAweDdBLAorICAgIDB4NjksIDB4QkQsIDB4MkIsIDB4MUYsIDB4MjcsIDB4M0YsIDB4ODcsIDB4NjksIDB4MkQsIDB4MUUsIDB4OUYsIDB4QzIsIDB4OTYsIDB4RTksIDB4NjQsIDB4RUMsCisgICAgMHhGOCwgMHgzNCwgMHgzMCwgMHhBMSwgMHhDMywgMHhBRiwgMHg3NywgMHg1NSwgMHg0MiwgMHgzMCwgMHhBNywgMHg4RSwgMHgzNSwgMHgxMiwgMHhCRiwgMHgxQywKKyAgICAweEEzLCAweDFGLCAweDc0LCAweDQzLCAweDQxLCAweEQ1LCAweDM1LCAweEM5LCAweDAyLCAweDZFLCAweEI5LCAweDNDLCAweDEyLCAweDZELCAweDIzLCAweDNCLAorICAgIDB4RDYsIDB4Q0IsIDB4MkQsIDB4MDEsIDB4Q0EsIDB4OTYsIDB4Q0IsIDB4MzYsIDB4Q0QsIDB4NjUsIDB4ODEsIDB4MDQsIDB4REEsIDB4ODMsIDB4QjIsIDB4OEUsCisgICAgMHgzMiwgMHhCNywgMHg4NSwgMHhBRSwgMHg3RiwgMHhDMiwgMHgyRiwgMHgwNSwgMHhGRSwgMHgwQywgMHgyOSwgMHg5RCwgMHgyMSwgMHg4RCwgMHg5RSwgMHhFRCwKKyAgICAweDlBLCAweDQ1LCAweENELCAweEQ2LCAweEMxLCAweEM1LCAweDIyLCAweEFGLCAweDRCLCAweEZELCAweEVELCAweEVFLCAweDM0LCAweEE0LCAweEQ3LCAweDUxLAorICAgIDB4RkUsIDB4MDUsIDB4MjAsIDB4RTAsIDB4MjUsIDB4QkYsIDB4NEQsIDB4Q0UsIDB4Q0UsIDB4OEIsIDB4QzYsIDB4QkEsIDB4RjIsIDB4OEMsIDB4MTMsIDB4RjIsCisgICAgMHhBNSwgMHg1MCwgMHhDOSwgMHhDNywgMHg2OSwgMHg2NCwgMHhBNywgMHg5RiwgMHg0MiwgMHhENCwgMHg4MiwgMHhBOCwgMHgxQSwgMHg2NSwgMHgzNiwgMHhCRCwKKyAgICAweEY4LCAweDQyLCAweDk4LCAweDQxLCAweDc2LCAweDMyLCAweDM0LCAweDE5LCAweDFDLCAweEM5LCAweDNFLCAweDA4LCAweDQzLCAweEIyLCAweDFGLCAweEU0LAorICAgIDB4M0IsIDB4MTcsIDB4NzUsIDB4OEYsIDB4NkEsIDB4NjYsIDB4RkEsIDB4RjAsIDB4NjMsIDB4QzUsIDB4QTAsIDB4OTYsIDB4MEIsIDB4OUMsIDB4QjgsIDB4QTEsCisgICAgMHg3NiwgMHhERSwgMHhFQywgMHhCMiwgMHg4QiwgMHgyOCwgMHhDMCwgMHhBQywgMHg5OSwgMHg3RSwgMHg0QiwgMHgzNiwgMHg1MCwgMHhEMSwgMHhCQywgMHhFNiwKKyAgICAweEJBLCAweEVFLCAweDhCLCAweDRDLCAweDVBLCAweEQ3LCAweEQ0LCAweDU5LCAweDRCLCAweEUyLCAweDk2LCAweEM1LCAweDI5LCAweEZDLCAweEUyLCAweDIyLAorICAgIDB4RTEsIDB4OTAsIDB4NjQsIDB4NEYsIDB4QkEsIDB4NTIsIDB4MjAsIDB4MTEsIDB4OTYsIDB4NUIsIDB4MUQsIDB4OTIsIDB4QzksIDB4NkYsIDB4MzIsIDB4OEUsCisgICAgMHgyRCwgMHgyMSwgMHhFQywgMHhBMCwgMHhERSwgMHg0OSwgMHhCQSwgMHg0NCwgMHhCNywgMHg4NiwgMHhDRSwgMHhBOCwgMHg1RCwgMHhCMCwgMHhCMiwgMHg4MCwKKyAgICAweDE0LCAweDY0LCAweDJFLCAweEEwLCAweDNELCAweEIyLCAweDE3LCAweEUyLCAweEQzLCAweDgzLCAweDA5LCAweDMwLCAweDI2LCAweDMyLCAweDkwLCAweDhELAorICAgIDB4NDEsIDB4MUYsIDB4MTgsIDB4NDcsIDB4QzAsIDB4QzIsIDB4MzUsIDB4NDcsIDB4QTEsIDB4RTUsIDB4ODMsIDB4NjgsIDB4OTYsIDB4NEUsIDB4ODQsIDB4OUMsCisgICAgMHgyRiwgMHgwRSwgMHg2NCwgMHhCQSwgMHgwNywgMHgxOCwgMHg1MCwgMHhGRSwgMHgxQiwgMHhGMiwgMHhENywgMHhFRCwgMHgwNSwgMHgzQSwgMHgxQSwgMHhFOCwKKyAgICAweEM5LCAweDg5LCAweENFLCAweEMwLCAweDQ1LCAweDE5LCAweEI0LCAweDNGLCAweDk4LCAweDA4LCAweEFCLCAweDJELCAweDMyLCAweEU4LCAweDM2LCAweDU4LAorICAgIDB4MTQsIDB4QkEsIDB4RjEsIDB4MjgsIDB4MzcsIDB4NEQsIDB4QTAsIDB4NTEsIDB4NTMsIDB4QTYsIDB4QUUsIDB4REEsIDB4NUQsIDB4RjAsIDB4RUMsIDB4NTEsCisgICAgMHhEQSwgMHgyMiwgMHhEQiwgMHhFQiwgMHg2QSwgMHg3OSwgMHhDNiwgMHg2MywgMHgzQiwgMHgwMywgMHgxQSwgMHhGNywgMHg4RiwgMHg4NywgMHhCQiwgMHg3QiwKKyAgICAweDg1LCAweDU2LCAweDVFLCAweDk5LCAweENELCAweEZBLCAweDRBLCAweDZDLCAweDEzLCAweENGLCAweDU1LCAweDhFLCAweDkwLCAweEU3LCAweEIxLCAweDZCLAorICAgIDB4NzMsIDB4RjMsIDB4NDQsIDB4QUYsIDB4REIsIDB4MDUsIDB4QUIsIDB4NkIsIDB4RUYsIDB4MzQsIDB4NTYsIDB4RjgsIDB4QUMsIDB4NzYsIDB4QzQsIDB4RDAsCisgICAgMHhGNywgMHhFOSwgMHgxMiwgMHhGNiwgMHhGMSwgMHg3QiwgMHhCOSwgMHgyNywgMHg0RCwgMHhGNiwgMHhCRiwgMHgzQSwgMHhDOSwgMHgyNSwgMHhEMSwgMHgwOCwKKyAgICAweEYwLCAweEUxLCAweDBGLCAweEYwLCAweDBFLCAweDFELCAweEJDLCAweDMxLCAweDA5LCAweDJBLCAweDU4LCAweDM3LCAweEMxLCAweDI1LCAweDQ1LCAweDdFLAorICAgIDB4OUQsIDB4MTUsIDB4RUEsIDB4NTMsIDB4OEIsIDB4RTksIDB4MjcsIDB4N0MsIDB4QjEsIDB4RUMsIDB4MEEsIDB4QzAsIDB4MzYsIDB4NjQsIDB4QkIsIDB4QzMsCisgICAgMHgyRiwgMHhCNywgMHhEMywgMHg5NSwgMHgyNCwgMHg3RCwgMHhFQSwgMHgzNSwgMHg0MiwgMHhERiwgMHg0OCwgMHhGNSwgMHgyMywgMHgyRSwgMHhGMSwgMHg3RiwKKyAgICAweEU4LCAweDRBLCAweDRFLCAweDdCLCAweDM4LCAweEI1LCAweEQ4LCAweDEzLCAweEU0LCAweDczLCAweDMxLCAweDUwLCAweDlELCAweDIxLCAweEUxLCAweEQ5LAorICAgIDB4REMsIDB4RjUsIDB4ODcsIDB4NkYsIDB4QzEsIDB4QkMsIDB4OUYsIDB4RjUsIDB4MUEsIDB4RUIsIDB4NjEsIDB4OTIsIDB4RDgsIDB4MTAsIDB4ODgsIDB4MkIsCisgICAgMHhDNywgMHg0OCwgMHgzRSwgMHhDNiwgMHgyRSwgMHg5QiwgMHhGNCwgMHgyMCwgMHg0RCwgMHgxMCwgMHg1QywgMHg0NSwgMHhBMiwgMHg4MiwgMHg4NywgMHhCRSwKKyAgICAweDk2LCAweDU0LCAweEVBLCAweEU3LCAweDUzLCAweERDLCAweDM1LCAweDM2LCAweEFELCAweDQ4LCAweDk4LCAweEQ4LCAweEQyLCAweDM3LCAweDBBLCAweDgyLAorICAgIDB4RjcsIDB4NTUsIDB4OEMsIDB4MjgsIDB4MDEsIDB4NjgsIDB4OUMsIDB4OEUsIDB4RTAsIDB4NDQsIDB4MkEsIDB4RDUsIDB4MDksIDB4OTUsIDB4OEYsIDB4MkQsCisgICAgMHhENywgMHhFNywgMHgyNiwgMHhCOSwgMHhEQywgMHg3RCwgMHgwMCwgMHgwQiwgMHg1QSwgMHhEQiwgMHgzMCwgMHhEQywgMHg1OCwgMHgzRiwgMHg1MywgMHg2RCwKKyAgICAweDE0LCAweEJBLCAweDVDLCAweDRCLCAweDNFLCAweEIxLCAweDdGLCAweDNDLCAweEY4LCAweDJFLCAweDQ5LCAweEIzLCAweDdGLCAweDA1LCAweDQ0LCAweEM2LAorICAgIDB4NDQsIDB4NUQsIDB4ODMsIDB4RkMsIDB4RDcsIDB4MTUsIDB4M0YsIDB4QTMsIDB4NTUsIDB4NjAsIDB4MTUsIDB4MTMsIDB4MzgsIDB4QkQsIDB4OUMsIDB4M0IsCisgICAgMHhGRSwgMHhGMywgMHg2OCwgMHgwNiwgMHhEOCwgMHhGMSwgMHg3QywgMHgxOSwgMHhCNCwgMHgwMSwgMHhBQiwgMHg1QywgMHg4MSwgMHhCQywgMHg2OSwgMHhBRCwKKyAgICAweEY1LCAweEIyLCAweEY2LCAweDU4LCAweEZCLCAweDAzLCAweEUzLCAweDc5LCAweEU1LCAweEMzLCAweDYzLCAweERCLCAweDIzLCAweEE1LCAweEQ4LCAweEU5LAorICAgIDB4MzIsIDB4Q0UsIDB4QTAsIDB4NTYsIDB4RDYsIDB4RkQsIDB4NTMsIDB4QTAsIDB4QTUsIDB4QjQsIDB4MUQsIDB4RTksIDB4NDQsIDB4MTksIDB4MjcsIDB4RUUsCisgICAgMHgzQywgMHhFNywgMHg1RCwgMHgxMSwgMHgxNCwgMHg3QiwgMHg1NiwgMHhFQSwgMHgxNiwgMHhCOCwgMHgyQSwgMHg0QiwgMHg3RSwgMHg3QywgMHg2RCwgMHg3RCwKKyAgICAweEQxLCAweDhGLCAweDcyLCAweEZCLCAweDc1LCAweDhGLCAweDEyLCAweDVDLCAweDZELCAweDFDLCAweEJGLCAweDQwLCAweEQ3LCAweDhFLCAweDMwLCAweDA5LAorICAgIDB4QUIsIDB4QUUsIDB4QjMsIDB4N0QsIDB4MzQsIDB4MjMsIDB4Q0QsIDB4QTgsIDB4NjksIDB4QjcsIDB4RDcsIDB4NzgsIDB4NzUsIDB4MTQsIDB4ODIsIDB4RDUsCisgICAgMHgzNiwgMHgxMiwgMHg5QiwgMHg3MCwgMHgzRSwgMHg5NCwgMHhFNywgMHhBNSwgMHgyRSwgMHhGNCwgMHg0NCwgMHg0OCwgMHg4MiwgMHg0NywgMHhDRiwgMHhFOSwKKyAgICAweEExLCAweDIxLCAweDI4LCAweDYwLCAweDRDLCAweDYwLCAweDRBLCAweERCLCAweEM2LCAweDI1LCAweDBCLCAweEYzLCAweDVCLCAweDVDLCAweDM0LCAweDdCLAorICAgIDB4NkIsIDB4OEYsIDB4MUQsIDB4NkMsIDB4Q0QsIDB4QTUsIDB4MDMsIDB4NjIsIDB4MjQsIDB4QjUsIDB4NEUsIDB4OEYsIDB4MUIsIDB4ODAsIDB4NjEsIDB4MTksCisgICAgMHg1MiwgMHg5NSwgMHhDOCwgMHg0NiwgMHhFRiwgMHg1NywgMHhCNiwgMHg4RiwgMHgwQywgMHhFMywgMHhBMSwgMHhENiwgMHgwOCwgMHgxNiwgMHhDOCwgMHgyMCwKKyAgICAweDNDLCAweDEzLCAweDkzLCAweDQyLCAweERFLCAweEU0LCAweEUyLCAweDI4LCAweEFDLCAweDYyLCAweEE0LCAweENDLCAweDI4LCAweDgzLCAweEIwLCAweEY5LAorICAgIDB4RUIsIDB4RDgsIDB4NTEsIDB4QTksIDB4MTMsIDB4M0MsIDB4NTMsIDB4NzMsIDB4N0EsIDB4OUQsIDB4QjUsIDB4QzQsIDB4RkEsIDB4QzgsIDB4MEQsIDB4QjgsCisgICAgMHg2NiwgMHgxNSwgMHg4RSwgMHg2NSwgMHg3OSwgMHgwOCwgMHhDOSwgMHg2RSwgMHg2NSwgMHhDNSwgMHgwOSwgMHg5QiwgMHgyMCwgMHg3RCwgMHhDMCwgMHhCRSwKKyAgICAweENDLCAweEMzLCAweDYwLCAweEE1LCAweDEwLCAweEJELCAweEM5LCAweDUwLCAweENFLCAweEUyLCAweEFGLCAweDE2LCAweEQ3LCAweEUwLCAweEFDLCAweDE3LAorICAgIDB4NzgsIDB4MzUsIDB4MkEsIDB4MEEsIDB4QUYsIDB4NEMsIDB4MkMsIDB4NzgsIDB4NzgsIDB4M0UsIDB4RjQsIDB4N0EsIDB4QjIsIDB4NjMsIDB4RDQsIDB4QkQsCisgICAgMHg0QiwgMHhDMiwgMHg4QywgMHgwQywgMHg1QywgMHg1NywgMHhCQSwgMHg5MCwgMHg1QywgMHgyRCwgMHhEQiwgMHg3OSwgMHhDRSwgMHg0QiwgMHg4MywgMHhCNiwKKyAgICAweDNDLCAweEIwLCAweDdCLCAweEZBLCAweDdCLCAweDA1LCAweEFELCAweDBCLCAweEEwLCAweEY1LCAweEJELCAweDI0LCAweDQyLCAweDY5LCAweDJELCAweEU0LAorICAgIDB4OUIsIDB4NjcsIDB4QjksIDB4QkQsIDB4NkUsIDB4MTgsIDB4NjEsIDB4RTYsIDB4MzAsIDB4NjIsIDB4MDEsIDB4QkIsIDB4ODgsIDB4QjYsIDB4QzIsIDB4NkEsCisgICAgMHgwOSwgMHg4NywgMHgyQywgMHhCOSwgMHhDNiwgMHgxMSwgMHg1NCwgMHhDNSwgMHgxOSwgMHhBMywgMHhCQywgMHg1NCwgMHhERCwgMHgyQywgMHgxMywgMHhERCwKKyAgICAweEExLCAweEQyLCAweDRELCAweDc5LCAweDJBLCAweEUwLCAweDg5LCAweEIwLCAweDNCLCAweEMxLCAweEY0LCAweEI4LCAweENDLCAweDdBLCAweEY4LCAweDkwLAorICAgIDB4QzIsIDB4RUYsIDB4MkYsIDB4MUUsIDB4RUMsIDB4QkIsIDB4REMsIDB4OEEsIDB4ODIsIDB4OUUsIDB4OTQsIDB4MDQsIDB4MzAsIDB4MUUsIDB4MzMsIDB4NjYsCisgICAgMHg4RiwgMHgyMiwgMHg0NywgMHhFNCwgMHg4MCwgMHg2QSwgMHg3MCwgMHg4NywgMHg0NywgMHg5NSwgMHg1RCwgMHg3RiwgMHgxMCwgMHg2NiwgMHg3RCwgMHg5NCwKKyAgICAweERCLCAweEIyLCAweEQyLCAweEE2LCAweDEwLCAweEUwLCAweEJFLCAweDAxLCAweEIyLCAweDVBLCAweEIyLCAweDY2LCAweDAxLCAweEEyLCAweEExLCAweDRFLAorICAgIDB4QjUsIDB4RDUsIDB4QkUsIDB4NTIsIDB4ODgsIDB4MTEsIDB4QjAsIDB4NDUsIDB4QjYsIDB4QTQsIDB4MEIsIDB4RUUsIDB4NTAsIDB4NDUsIDB4MEMsIDB4OUQsCisgICAgMHgzRiwgMHhBMywgMHg0QywgMHhFQywgMHg2MywgMHg2RCwgMHg5OSwgMHg2QywgMHgzMCwgMHg3RiwgMHhCMSwgMHgyNywgMHgzOCwgMHhCNywgMHhCQywgMHg0MSwKKyAgICAweDQ5LCAweDA4LCAweDdFLCAweEJFLCAweDg0LCAweDlDLCAweDNDLCAweDVDLCAweEJBLCAweDE5LCAweEEzLCAweDAwLCAweEIxLCAweDFGLCAweEQ0LCAweDFCLAorICAgIDB4ODAsIDB4OUQsIDB4QTIsIDB4RkMsIDB4Q0EsIDB4NzAsIDB4RkYsIDB4MTUsIDB4MDIsIDB4NjAsIDB4NjksIDB4MTIsIDB4NjQsIDB4NDAsIDB4MUQsIDB4RjEsCisgICAgMHg2NSwgMHgxMiwgMHg1MiwgMHg2NCwgMHgzQSwgMHhBQywgMHg0NCwgMHhFMiwgMHg5RCwgMHhFMywgMHg4QywgMHg1MCwgMHhENSwgMHg1OSwgMHg3RSwgMHgxQSwKKyAgICAweEUwLCAweDI2LCAweDcyLCAweEI1LCAweDUyLCAweEI0LCAweDc5LCAweEI5LCAweDkzLCAweDQxLCAweEEyLCAweEM5LCAweDVELCAweDlFLCAweDY1LCAweDcwLAorICAgIDB4ODMsIDB4MkQsIDB4M0EsIDB4OTMsIDB4RTQsIDB4REUsIDB4QzMsIDB4NDAsIDB4MzUsIDB4QTIsIDB4ODYsIDB4M0QsIDB4OUQsIDB4MEEsIDB4OUUsIDB4MTEsCisgICAgMHhFQSwgMHg4MSwgMHhEQiwgMHgzQiwgMHg5OSwgMHhDQiwgMHg0NiwgMHhEMywgMHg2QiwgMHg0OSwgMHhCNiwgMHhEQSwgMHhFOCwgMHhGMSwgMHhCNSwgMHhBNCwKKyAgICAweDUyLCAweDE1LCAweDM5LCAweEFFLCAweEJGLCAweEE3LCAweERCLCAweEVFLCAweERGLCAweDQxLCAweDI0LCAweDk4LCAweEVELCAweEYzLCAweDBELCAweDEyLAorICAgIDB4QkUsIDB4NTksIDB4NEUsIDB4MDksIDB4RjgsIDB4NTAsIDB4REUsIDB4RTIsIDB4MzYsIDB4OUEsIDB4MTIsIDB4QzQsIDB4MTIsIDB4RjIsIDB4RjEsIDB4RjgsCisgICAgMHg1OCwgMHhDOCwgMHg4NiwgMHgxNCwgMHhFMSwgMHgzOSwgMHgzQiwgMHg5QSwgMHhGQiwgMHg0NiwgMHg3QiwgMHg5OCwgMHgwRCwgMHgyNiwgMHhCQywgMHhBMywKKyAgICAweDU0LCAweEVBLCAweDAxLCAweDcyLCAweDY4LCAweDczLCAweDJGLCAweEQ1LCAweDA4LCAweDNCLCAweEYzLCAweDdCLCAweDdBLCAweDlGLCAweERCLCAweDI5LAorICAgIDB4MTEsIDB4M0IsIDB4RjAsIDB4MDcsIDB4NEMsIDB4NDYsIDB4MTAsIDB4REYsIDB4QTAsIDB4OUQsIDB4MEEsIDB4RDgsIDB4MDgsIDB4MUEsIDB4N0IsIDB4RDEsCisgICAgMHhFMSwgMHg5QSwgMHg4MywgMHg3NywgMHgxQSwgMHgyRiwgMHgxQSwgMHgxNiwgMHg3NywgMHgyMiwgMHg3NSwgMHg5OCwgMHhFRCwgMHg3MCwgMHg0MCwgMHg1NCwKKyAgICAweDlBLCAweDE1LCAweDU2LCAweDMyLCAweDkzLCAweEM5LCAweEEyLCAweEQxLCAweDQ4LCAweDU0LCAweDhGLCAweEVGLCAweDA3LCAweDQzLCAweDRELCAweDlFLAorICAgIDB4QzcsIDB4MDcsIDB4MzIsIDB4NkMsIDB4NkUsIDB4QUMsIDB4NzksIDB4OEMsIDB4NkUsIDB4MUEsIDB4NDgsIDB4OTksIDB4QkMsIDB4NkEsIDB4MEQsIDB4MTksCisgICAgMHg0NywgMHg1QiwgMHgxQywgMHgzRSwgMHgxOCwgMHhDQSwgMHg1NCwgMHg2QSwgMHg3RiwgMHhBNCwgMHhBQiwgMHhEMywgMHgyQiwgMHg4NiwgMHhEMSwgMHgxQiwKKyAgICAweDMyLCAweENCLCAweDhDLCAweDEyLCAweDFDLCAweDBELCAweDI4LCAweDUyLCAweEQxLCAweDAyLCAweDQ3LCAweDIyLCAweEQyLCAweEQ0LCAweDc5LCAweERELAorICAgIDB4QjksIDB4OEMsIDB4NDksIDB4RDAsIDB4MjYsIDB4OTQsIDB4QUUsIDB4MEUsIDB4QzEsIDB4QTMsIDB4MjcsIDB4NkYsIDB4ODcsIDB4NUQsIDB4MzAsIDB4RUQsCisgICAgMHhGQiwgMHgzMCwgMHgxMywgMHgyMywgMHg5QywgMHhDMywgMHgxMCwgMHg1RCwgMHg4RiwgMHg4QSwgMHg5RCwgMHhEOCwgMHg5MSwgMHhDMiwgMHhBNSwgMHg3MCwKKyAgICAweDhDLCAweEM0LCAweDU2LCAweEQwLCAweDQzLCAweEU3LCAweEFCLCAweDQwLCAweEQ0LCAweDhGLCAweEJFLCAweDFCLCAweEU0LCAweEQ1LCAweEQyLCAweEM1LAorICAgIDB4ODMsIDB4OEMsIDB4MjcsIDB4RTksIDB4M0IsIDB4NEYsIDB4REIsIDB4RjQsIDB4NzksIDB4Q0EsIDB4OTEsIDB4ODksIDB4RjMsIDB4NzgsIDB4RUIsIDB4NDAsCisgICAgMHgyNSwgMHg4MCwgMHg3MywgMHhCNiwgMHg0OSwgMHg4RiwgMHg3NiwgMHg3NCwgMHg3MCwgMHhENCwgMHg3MCwgMHhEQywgMHg3NywgMHgyRiwgMHhERCwgMHhDMiwKKyAgICAweDFCLCAweDEyLCAweEIxLCAweEExLCAweDNGLCAweEM1LCAweEFDLCAweDcwLCAweDIyLCAweDFGLCAweEI0LCAweDhFLCAweDM2LCAweEMyLCAweDVFLCAweDkzLAorICAgIDB4NTEsIDB4NDIsIDB4OTMsIDB4RUIsIDB4MjYsIDB4MTMsIDB4REMsIDB4MzgsIDB4MDMsIDB4NjgsIDB4RjYsIDB4RTEsIDB4NzcsIDB4M0MsIDB4ODEsIDB4MDcsCisgICAgMHhENCwgMHg1NSwgMHg3MCwgMHg1NiwgMHgyNSwgMHgwQSwgMHgwOCwgMHgzNiwgMHg2RiwgMHg5OSwgMHhGRSwgMHgxMiwgMHhEQywgMHhBMSwgMHgzNSwgMHgxOSwKKyAgICAweDMwLCAweEFBLCAweDg0LCAweEI1LCAweEU2LCAweEY2LCAweDIzLCAweDgxLCAweEM0LCAweDdELCAweDk1LCAweDM1LCAweDRDLCAweEQ1LCAweEZBLCAweDEyLAorICAgIDB4QjQsIDB4MDksIDB4MjAsIDB4MDAsIDB4NUMsIDB4MTUsIDB4QjIsIDB4REQsIDB4OEIsIDB4NzcsIDB4MkYsIDB4OTcsIDB4REQsIDB4RkQsIDB4NEUsIDB4RUYsCisgICAgMHgyMCwgMHgzRiwgMHgwRiwgMHgwQywgMHhBNiwgMHhFMywgMHg0MCwgMHgxMiwgMHhBMywgMHhEMSwgMHgxOCwgMHgwRiwgMHg4OCwgMHgxNiwgMHg5NywgMHg0OCwKKyAgICAweDZCLCAweDc2LCAweDEwLCAweEU4LCAweDRBLCAweDkxLCAweEE0LCAweDlDLCAweDA1LCAweDg4LCAweEE4LCAweEM3LCAweDJCLCAweDNBLCAweEFCLCAweDg3LAorICAgIDB4RTEsIDB4NTEsIDB4MjEsIDB4RTUsIDB4N0IsIDB4RDQsIDB4NzgsIDB4QjcsIDB4NEMsIDB4MzUsIDB4N0MsIDB4MEEsIDB4MjcsIDB4NjMsIDB4QTgsIDB4MTUsCisgICAgMHhDRiwgMHhCOCwgMHhFRSwgMHgwMCwgMHg1QywgMHhENSwgMHg5RiwgMHg0MCwgMHg1QiwgMHg4QSwgMHhFQywgMHhBMywgMHhGQSwgMHg2NCwgMHg3MywgMHhFMiwKKyAgICAweDhFLCAweDVFLCAweDFGLCAweDY5LCAweDBDLCAweEQ0LCAweDBBLCAweDk1LCAweDJFLCAweDYyLCAweEQ2LCAweEIxLCAweDdCLCAweDUxLCAweDNFLCAweDU0LAorICAgIDB4N0MsIDB4NTEsIDB4MDAsIDB4RjIsIDB4RjAsIDB4NDksIDB4RDIsIDB4QjIsIDB4MTMsIDB4RjYsIDB4MUUsIDB4MzcsIDB4QzQsIDB4RTgsIDB4MkEsIDB4QzIsCisgICAgMHg1RCwgMHg1MCwgMHhDRSwgMHgzMSwgMHhERCwgMHg0RiwgMHg1RSwgMHg5NCwgMHg4QSwgMHgzMywgMHhGMywgMHg1MiwgMHhEQywgMHg5RSwgMHhCRSwgMHgxQiwKKyAgICAweEU5LCAweEEyLCAweDk3LCAweEY0LCAweDRBLCAweEMwLCAweENBLCAweDI2LCAweDI0LCAweDJCLCAweDk0LCAweEEzLCAweEJGLCAweDQxLCAweEQ1LCAweDFFLAorICAgIDB4MDYsIDB4RkMsIDB4NzQsIDB4MzQsIDB4Q0EsIDB4MkEsIDB4NjEsIDB4M0MsIDB4QjIsIDB4MjIsIDB4RDksIDB4MjQsIDB4RjksIDB4OEMsIDB4MzcsIDB4M0UsCisgICAgMHg0OCwgMHgxRCwgMHhBQSwgMHhCRSwgMHg5RiwgMHgwRiwgMHg5MywgMHgxNCwgMHg5NCwgMHgzQSwgMHg0NCwgMHg3RiwgMHg0NywgMHg3QSwgMHgxRCwgMHgwNywKKyAgICAweDMzLCAweDRGLCAweDg2LCAweDM5LCAweEYzLCAweEQ1LCAweDIzLCAweEFGLCAweDgzLCAweEYwLCAweENDLCAweEZBLCAweERBLCAweDg2LCAweDVGLCAweDZCLAorICAgIDB4MjgsIDB4NzcsIDB4RjIsIDB4MjgsIDB4NzgsIDB4RkYsIDB4N0IsIDB4QjksIDB4QjksIDB4OUIsIDB4RjcsIDB4NDUsIDB4NDYsIDB4ODYsIDB4MTIsIDB4RUQsCisgICAgMHhCMCwgMHg5MywgMHg4OSwgMHg3QiwgMHhGRiwgMHhFOCwgMHg5MywgMHhCNywgMHhBRCwgMHgwOCwgMHhCQywgMHhCMiwgMHhFOSwgMHg1MywgMHhGQiwgMHg3OCwKKyAgICAweEQ2LCAweEFELCAweEIzLCAweDBELCAweDlGLCAweEVDLCAweDk3LCAweDQ5LCAweEE2LCAweDQzLCAweEFCLCAweEJFLCAweDVFLCAweEY5LCAweDlELCAweEEwLAorICAgIDB4QUUsIDB4MUQsIDB4N0MsIDB4MDUsIDB4QjcsIDB4MkIsIDB4NjAsIDB4M0EsIDB4NjEsIDB4RTMsIDB4NjksIDB4QTgsIDB4QkEsIDB4NkYsIDB4RDUsIDB4OUUsCisgICAgMHgyMywgMHg4RSwgMHgwQywgMHg5OSwgMHgwMywgMHgyNCwgMHhFOSwgMHhEQywgMHg1MiwgMHhDNSwgMHg3NCwgMHhFOSwgMHgxNCwgMHgxRiwgMHg3MSwgMHg1QywKKyAgICAweDkxLCAweDYxLCAweDZELCAweDJGLCAweEIyLCAweEE4LCAweENFLCAweDg4LCAweEJFLCAweDhFLCAweDczLCAweDQ0LCAweEY0LCAweDUzLCAweDlCLCAweDE5LAorICAgIDB4MEEsIDB4RUMsIDB4QkUsIDB4NTQsIDB4RjYsIDB4MzEsIDB4MDAsIDB4OTEsIDB4RTksIDB4MzksIDB4NzIsIDB4MEUsIDB4MDcsIDB4NkEsIDB4RTksIDB4NDYsCisgICAgMHg1RSwgMHhGOCwgMHhGOCwgMHgzQiwgMHgzMCwgMHg2MCwgMHg4RSwgMHhEMCwgMHhCQywgMHgwNSwgMHgxRSwgMHhGNSwgMHhFRSwgMHgzMywgMHg2QSwgMHhGQSwKKyAgICAweDU0LCAweENELCAweDRFLCAweDhCLCAweENGLCAweEVDLCAweEQ5LCAweDlGLCAweDUzLCAweDNBLCAweEVGLCAweDIxLCAweEMzLCAweDZGLCAweDA5LCAweEY4LAorICAgIDB4NjcsIDB4RkQsIDB4M0UsIDB4NzAsIDB4RTYsIDB4NkYsIDB4NjMsIDB4OTksIDB4RTUsIDB4NEYsIDB4RDYsIDB4NzAsIDB4RUQsIDB4RkIsIDB4M0IsIDB4RDksCisgICAgMHhGRiwgMHhBQSwgMHgzMCwgMHg1QywgMHhCRSwgMHhCMiwgMHgyOCwgMHg3OCwgMHhFNCwgMHhCNSwgMHgyNiwgMHg4MiwgMHgwMywgMHg4NiwgMHhCOSwgMHhEQiwKKyAgICAweDlELCAweEJELCAweDk5LCAweEQ4LCAweEYyLCAweDcwLCAweDlDLCAweDlELCAweDZDLCAweDgxLCAweEZDLCAweEY4LCAweDJCLCAweDVFLCAweEQ0LCAweDg1LAorICAgIDB4OTUsIDB4NjIsIDB4RUIsIDB4RkEsIDB4RUIsIDB4NUEsIDB4MDksIDB4QzYsIDB4MTQsIDB4NTEsIDB4RTIsIDB4NDMsIDB4NjIsIDB4RTksIDB4NjksIDB4MzEsCisgICAgMHhCMSwgMHg3QiwgMHg4RiwgMHhBNiwgMHg0RCwgMHg3NiwgMHhENSwgMHg4QywgMHhGMSwgMHhCMiwgMHhENSwgMHgwNywgMHgxNywgMHgyMSwgMHg2NCwgMHgyMywKKyAgICAweENBLCAweDY4LCAweEY4LCAweDYwLCAweEZGLCAweDE1LCAweDdELCAweEI4LCAweENFLCAweEJBLCAweEYzLCAweDkyLCAweDc3LCAweDA0LCAweDJGLCAweDM4LAorICAgIDB4OTksIDB4MUEsIDB4RjcsIDB4OTEsIDB4QzksIDB4MEMsIDB4OTksIDB4MEYsIDB4M0EsIDB4NTgsIDB4N0QsIDB4MzEsIDB4MDEsIDB4Q0IsIDB4MTAsIDB4QkQsCisgICAgMHhDMCwgMHhBRCwgMHg0RCwgMHgzNywgMHg2QywgMHg4NywgMHgzRSwgMHg5QiwgMHg0QiwgMHhFMiwgMHg2OCwgMHg3MiwgMHg4QywgMHg0MCwgMHhFRCwgMHg2RiwKKyAgICAweEQ2LCAweEMxLCAweDhCLCAweEEwLCAweDgyLCAweEE3LCAweDcyLCAweDczLCAweDc5LCAweDhBLCAweEM5LCAweEZCLCAweDU3LCAweEVFLCAweEZBLCAweDVELAorICAgIDB4MTUsIDB4NTMsIDB4MkYsIDB4ODEsIDB4NjYsIDB4N0UsIDB4QzEsIDB4NEUsIDB4RUYsIDB4MjMsIDB4QzIsIDB4QjUsIDB4NzYsIDB4NjEsIDB4QzEsIDB4QUMsCisgICAgMHg1NSwgMHgwMSwgMHg3MiwgMHhCNiwgMHgyRSwgMHhDOSwgMHg1NiwgMHgzMCwgMHg3MywgMHg3NywgMHhGRSwgMHg2RiwgMHgwRiwgMHg0RiwgMHhENCwgMHhBMywKKyAgICAweEEwLCAweDUxLCAweEMxLCAweEVDLCAweEU5LCAweEY4LCAweDE2LCAweDdBLCAweDIyLCAweDlGLCAweDU1LCAweERBLCAweEE5LCAweEMwLCAweDMxLCAweDg0LAorICAgIDB4QzAsIDB4M0YsIDB4M0EsIDB4NTcsIDB4OUQsIDB4NDEsIDB4OUIsIDB4NEEsIDB4NUUsIDB4ODQsIDB4MTksIDB4RTUsIDB4OTMsIDB4QzgsIDB4QUUsIDB4RkEsCisgICAgMHg5MSwgMHhEOCwgMHhCOCwgMHg5OCwgMHg2NywgMHhCMiwgMHg4QywgMHgzNywgMHg0QiwgMHg0QywgMHhBQSwgMHhGOSwgMHg3QywgMHhDRCwgMHg2NywgMHg1MCwKKyAgICAweEIyLCAweDgzLCAweDE5LCAweDg4LCAweDg5LCAweEU5LCAweEQxLCAweEQxLCAweDI5LCAweEE4LCAweDlDLCAweDk0LCAweDI0LCAweDY1LCAweDFELCAweEY0LAorICAgIDB4NjcsIDB4OUEsIDB4RjMsIDB4OTEsIDB4QjIsIDB4M0IsIDB4QUIsIDB4OTQsIDB4RTksIDB4OEMsIDB4MTYsIDB4RDYsIDB4NTgsIDB4MTcsIDB4MTgsIDB4NzIsCisgICAgMHhCMiwgMHhCRCwgMHhDRCwgMHgxQiwgMHg0QiwgMHg4QSwgMHgzMiwgMHg3MCwgMHhEQywgMHhGQywgMHg5NywgMHg1NCwgMHg3MywgMHgyNSwgMHg3NCwgMHg5QiwKKyAgICAweEYzLCAweDkwLCAweDBDLCAweDA0LCAweERELCAweDdDLCAweDFBLCAweEE4LCAweEQ3LCAweDMzLCAweENELCAweEU2LCAweDg4LCAweEFGLCAweDhFLCAweDk2LAorICAgIDB4RDEsIDB4RTksIDB4RkYsIDB4Q0UsIDB4RUUsIDB4M0MsIDB4MUEsIDB4NDIsIDB4QTUsIDB4QjIsIDB4NTYsIDB4QjMsIDB4OTksIDB4QTMsIDB4OEUsIDB4RUQsCisgICAgMHgyRCwgMHhFNywgMHhBRSwgMHhCMCwgMHgyRSwgMHgzQywgMHhDNiwgMHg3QywgMHhBQSwgMHhBMywgMHgzRiwgMHhDNywgMHhEMiwgMHg3OSwgMHgwNCwgMHg5OCwKKyAgICAweDlBLCAweEMwLCAweEE0LCAweDZBLCAweERDLCAweDY0LCAweDQ5LCAweDI0LCAweDRGLCAweDhCLCAweEZBLCAweDg2LCAweDQ1LCAweDE3LCAweEU4LCAweDdFLAorICAgIDB4RjUsIDB4RDMsIDB4OEEsIDB4NTYsIDB4NzYsIDB4QkYsIDB4OTUsIDB4NTAsIDB4RTIsIDB4NEEsIDB4RTEsIDB4M0YsIDB4RjIsIDB4NTAsIDB4NUUsIDB4OEYsCisgICAgMHg5OSwgMHgyQywgMHhFNywgMHhCOSwgMHgxMCwgMHg2QywgMHg5OSwgMHg3QywgMHgzOSwgMHg2QywgMHhBMywgMHgzOSwgMHhBQiwgMHgwQiwgMHhGMCwgMHg4NCwKKyAgICAweDgyLCAweDdDLCAweEQ2LCAweDU5LCAweDIxLCAweDVCLCAweDg1LCAweEZELCAweEZDLCAweEY5LCAweDE1LCAweEMyLCAweDM1LCAweDAyLCAweDUyLCAweEQyLAorICAgIDB4MTYsIDB4MjAsIDB4M0IsIDB4NkYsIDB4MjcsIDB4RkIsIDB4N0YsIDB4MTEsIDB4QkYsIDB4MDUsIDB4QTEsIDB4RjEsIDB4N0MsIDB4QTEsIDB4NzMsIDB4MzQsCisgICAgMHhGRCwgMHg0MCwgMHgzRCwgMHhGMCwgMHgzNiwgMHhFRSwgMHhDOCwgMHg0QiwgMHhDNywgMHg0RiwgMHgzNSwgMHgwNCwgMHgxQywgMHg2OSwgMHg0OSwgMHg2NSwKKyAgICAweDBCLCAweENELCAweDRFLCAweDNCLCAweEVELCAweDVDLCAweEE2LCAweDQyLCAweDExLCAweEI4LCAweEZDLCAweDhGLCAweEE5LCAweDQ0LCAweDA0LCAweDU1LAorICAgIDB4MTksIDB4MTIsIDB4QTgsIDB4QUMsIDB4RTAsIDB4NEYsIDB4MTMsIDB4QjUsIDB4QTAsIDB4QkEsIDB4QUQsIDB4RkEsIDB4ODQsIDB4NUUsIDB4MTEsIDB4OTUsCisgICAgMHg0QiwgMHhDMSwgMHgxOSwgMHg1NywgMHg0NSwgMHgzRSwgMHgzQywgMHg0NiwgMHg5MiwgMHgwQywgMHhBRCwgMHg1NCwgMHhEMiwgMHhERCwgMHg0NywgMHg2RiwKKyAgICAweEYwLCAweDc3LCAweDBFLCAweEFELCAweEQyLCAweDVELCAweEVGLCAweDM5LCAweEYzLCAweDY3LCAweEQ3LCAweDhELCAweDMxLCAweDNDLCAweENELCAweDVCLAorICAgIDB4QjAsIDB4M0EsIDB4NDcsIDB4NEMsIDB4RDEsIDB4MTYsIDB4QkIsIDB4QjIsIDB4REEsIDB4NjUsIDB4RjAsIDB4OUIsIDB4ODIsIDB4NzUsIDB4M0IsIDB4RjcsCisgICAgMHg0NiwgMHhEMywgMHgxMiwgMHhCQSwgMHhGRCwgMHgwNCwgMHg5RCwgMHgyRSwgMHg4QSwgMHgzRSwgMHg3NSwgMHg4OCwgMHg5QSwgMHhDNywgMHhGMywgMHgyMCwKKyAgICAweDZCLCAweDlFLCAweEQ3LCAweEQzLCAweEQzLCAweDM5LCAweDc1LCAweEY5LCAweDc2LCAweDQ3LCAweEIwLCAweEVCLCAweEQxLCAweDNFLCAweEVBLCAweEQ5LAorICAgIDB4RjQsIDB4N0YsIDB4MEIsIDB4NkMsIDB4RjYsIDB4OEIsIDB4MDQsIDB4RDMsIDB4NkYsIDB4MUYsIDB4NkQsIDB4MzAsIDB4QTAsIDB4QTMsIDB4MDksIDB4NDUsCisgICAgMHg1NywgMHg2RSwgMHhFMiwgMHgzQSwgMHgwRSwgMHhFNywgMHgwNywgMHg5OCwgMHgyNCwgMHhFRCwgMHhDQiwgMHg2RCwgMHg3MywgMHhCOSwgMHg0RSwgMHgwOSwKKyAgICAweEU3LCAweEE5LCAweERELCAweEY3LCAweDI4LCAweEJFLCAweEE2LCAweDk0LCAweDRFLCAweDU4LCAweDkyLCAweDg4LCAweDc0LCAweDkxLCAweDg1LCAweDIwLAorICAgIDB4M0MsIDB4NzgsIDB4QkIsIDB4QTQsIDB4MTMsIDB4NjUsIDB4QTYsIDB4ODIsIDB4MkEsIDB4Q0YsIDB4MUYsIDB4MkYsIDB4NDMsIDB4NzgsIDB4NDMsIDB4MzYsCisgICAgMHgzMiwgMHg4QiwgMHg5OSwgMHhFOSwgMHg3RSwgMHhDMywgMHg3MywgMHgzOSwgMHgzRSwgMHhDMywgMHhGRiwgMHg0MiwgMHgyOSwgMHg3NiwgMHhENywgMHg5OSwKKyAgICAweDNCLCAweDdBLCAweDBBLCAweENGLCAweDdGLCAweDQwLCAweEI3LCAweDU0LCAweDkyLCAweDIzLCAweDE4LCAweDY0LCAweEQ4LCAweEQxLCAweDEyLCAweEM0LAorICAgIDB4OTEsIDB4QkYsIDB4QTEsIDB4OTAsIDB4NUUsIDB4MDMsIDB4QjMsIDB4MUQsIDB4QzUsIDB4RjQsIDB4RDcsIDB4QzcsIDB4OUEsIDB4NkMsIDB4ODcsIDB4OTAsCisgICAgMHhCOCwgMHhEMiwgMHgwQywgMHg2NiwgMHgwNCwgMHgyMCwgMHg3MywgMHhBOSwgMHg2QSwgMHg3MywgMHhENCwgMHhDNSwgMHg3NiwgMHg1QSwgMHhCQSwgMHg0RCwKKyAgICAweEQxLCAweDU2LCAweEZBLCAweDk5LCAweEY2LCAweDMyLCAweDkwLCAweDVFLCAweEZELCAweDE5LCAweEE0LCAweENELCAweDg1LCAweDFGLCAweDEzLCAweDM5LAorICAgIDB4MEQsIDB4MkQsIDB4NkIsIDB4MDEsIDB4QTQsIDB4NDgsIDB4NTksIDB4MEYsIDB4NkUsIDB4NEIsIDB4QzIsIDB4RDQsIDB4RjQsIDB4MDMsIDB4NzEsIDB4OTIsCisgICAgMHg5MSwgMHgwRSwgMHhDRCwgMHg1QiwgMHgwQSwgMHg0OCwgMHhCNCwgMHhBMiwgMHgxQSwgMHhBNCwgMHhGMSwgMHg5MywgMHg2RiwgMHgxQiwgMHg5MCwgMHgzMywKKyAgICAweENGLCAweDA1LCAweEY1LCAweEI0LCAweDBELCAweDdGLCAweEUzLCAweDg4LCAweEQ3LCAweDhGLCAweEI2LCAweDM0LCAweEJELCAweEVDLCAweDBCLCAweEEyLAorICAgIDB4NDUsIDB4Q0EsIDB4M0IsIDB4RkQsIDB4QjIsIDB4NzQsIDB4MTAsIDB4QzAsIDB4MTYsIDB4MDMsIDB4NzcsIDB4MUIsIDB4MEMsIDB4QkMsIDB4RkIsIDB4MzYsCisgICAgMHg5MywgMHg4QSwgMHg5NSwgMHg1MiwgMHgxNCwgMHg0QSwgMHg1MiwgMHg0MiwgMHg0RSwgMHg4QywgMHg1RSwgMHg1OSwgMHhFQywgMHg2OCwgMHhDNywgMHhDRSwKKyAgICAweDhGLCAweEZCLCAweDE1LCAweDEwLCAweEExLCAweERCLCAweEEyLCAweDZBLCAweDZELCAweDQ5LCAweDY1LCAweDNDLCAweDdDLCAweDcxLCAweEU5LCAweDkxLAorICAgIDB4RDUsIDB4MjUsIDB4MDgsIDB4MTksIDB4NjYsIDB4RkQsIDB4NjcsIDB4RjcsIDB4QzMsIDB4NEMsIDB4MUEsIDB4NEQsIDB4NkUsIDB4MzEsIDB4QTAsIDB4MkEsCisgICAgMHg0OSwgMHg1NywgMHg5NywgMHhCMCwgMHg4RSwgMHhCNCwgMHhCNiwgMHgwRCwgMHhDRSwgMHhBNSwgMHgyNiwgMHg1MiwgMHg2QywgMHhBMywgMHhCMywgMHgwRSwKKyAgICAweEM2LCAweDFFLCAweDI4LCAweEE2LCAweDRCLCAweEVGLCAweDIwLCAweEQxLCAweDU4LCAweDg2LCAweDY0LCAweEVGLCAweDQ5LCAweDQwLCAweDYyLCAweDQzLAorICAgIDB4NTgsIDB4MkEsIDB4NjUsIDB4NUQsIDB4OEMsIDB4OTEsIDB4RkUsIDB4REIsIDB4ODUsIDB4MkQsIDB4OUQsIDB4NjYsIDB4MEIsIDB4NUIsIDB4REYsIDB4Q0EsCisgICAgMHhGQywgMHhBNCwgMHgzNSwgMHgwMSwgMHhBNCwgMHgwQywgMHgzRSwgMHg4MiwgMHhGNiwgMHhEMCwgMHhCNiwgMHhFQiwgMHgzOCwgMHg2RiwgMHg2RiwgMHhENiwKKyAgICAweEIwLCAweDZELCAweEQ1LCAweEM4LCAweDM3LCAweDJELCAweEQ0LCAweDNGLCAweDdGLCAweEE5LCAweENELCAweDk1LCAweEQwLCAweEUwLCAweEJBLCAweDU2LAorICAgIDB4RjIsIDB4RjUsIDB4MkYsIDB4MzgsIDB4REEsIDB4MjMsIDB4M0MsIDB4NjIsIDB4QzEsIDB4OTYsIDB4QUMsIDB4RTQsIDB4QTUsIDB4QUIsIDB4RDMsIDB4RTQsCisgICAgMHg0MiwgMHhENiwgMHgwNiwgMHg3RCwgMHgyRiwgMHg2NCwgMHhCQywgMHg4RSwgMHhENywgMHg0OSwgMHhGMSwgMHhBOCwgMHgwOCwgMHhDMCwgMHhENCwgMHhFRCwKKyAgICAweDEwLCAweDUzLCAweDk5LCAweDNGLCAweDdFLCAweDY2LCAweEM4LCAweDI0LCAweERCLCAweDEyLCAweDFFLCAweDE1LCAweDMwLCAweDhFLCAweDc2LCAweEQ3LAorICAgIDB4Q0QsIDB4NjUsIDB4RDQsIDB4OTcsIDB4Q0IsIDB4QzcsIDB4REQsIDB4ODksIDB4MUUsIDB4MjgsIDB4N0IsIDB4MDgsIDB4RUQsIDB4MTYsIDB4QkQsIDB4NzgsCisgICAgMHgyMSwgMHg1QSwgMHhCRCwgMHgzNywgMHg5OCwgMHhEOCwgMHhFMywgMHg4MSwgMHg2QiwgMHg1QywgMHg5NiwgMHg1MSwgMHg0NSwgMHg5NSwgMHhFRCwgMHgyQSwKKyAgICAweDUzLCAweDRCLCAweERCLCAweDk2LCAweDY2LCAweEI0LCAweEJGLCAweDU0LCAweDU1LCAweEJDLCAweDgyLCAweEIwLCAweDMxLCAweDc1LCAweEEwLCAweEE3LAorICAgIDB4NUYsIDB4NEQsIDB4RUQsIDB4ODksIDB4QkIsIDB4NDcsIDB4ODcsIDB4NDAsIDB4NjgsIDB4Q0EsIDB4NzQsIDB4M0EsIDB4RDksIDB4M0EsIDB4QzMsIDB4MTAsCisgICAgMHhCQSwgMHgxOCwgMHhBRiwgMHhDNywgMHg2NywgMHgwQSwgMHg4NiwgMHgzMSwgMHgwOCwgMHhFNiwgMHg4QSwgMHhENiwgMHgwQywgMHhENiwgMHhERSwgMHhCNiwKKyAgICAweDRBLCAweEQ3LCAweDk5LCAweEM2LCAweDI4LCAweEJGLCAweEQyLCAweDgyLCAweEY2LCAweDhDLCAweEZBLCAweEM5LCAweDBGLCAweDgxLCAweDFBLCAweDlCLAorICAgIDB4RDEsIDB4RTUsIDB4N0MsIDB4M0IsIDB4MzEsIDB4MzAsIDB4MTQsIDB4MjcsIDB4MjMsIDB4NjksIDB4RDYsIDB4M0UsIDB4QjIsIDB4OTQsIDB4MEEsIDB4QzQsCisgICAgMHhEMCwgMHg2RiwgMHg5OCwgMHg0QSwgMHg0MiwgMHhFNSwgMHg4MSwgMHg1MSwgMHgwMCwgMHhENCwgMHg0NiwgMHgxRiwgMHg2QSwgMHg5NiwgMHgzQiwgMHhCMSwKKyAgICAweDAzLCAweDJGLCAweDgxLCAweDJCLCAweEQ4LCAweEM4LCAweDc5LCAweENGLCAweDNFLCAweDNGLCAweDUzLCAweERDLCAweDg4LCAweDFBLCAweEY4LCAweEFGLAorICAgIDB4MUMsIDB4RjUsIDB4NzEsIDB4MEEsIDB4Q0YsIDB4RTIsIDB4MDYsIDB4MjksIDB4NzYsIDB4QkQsIDB4QUEsIDB4NTUsIDB4OUUsIDB4ODcsIDB4NzIsIDB4NDcsCisgICAgMHg3QywgMHg3NCwgMHgzNiwgMHgxNywgMHhDNywgMHhERiwgMHg5MCwgMHhBNCwgMHg5MiwgMHgyQywgMHg3MiwgMHgxNywgMHg0QiwgMHhBQiwgMHg0MSwgMHg3QiwKKyAgICAweEEyLCAweEVDLCAweDYwLCAweDBBLCAweEI5LCAweDI1LCAweEFGLCAweEFDLCAweDBGLCAweDY2LCAweDYwLCAweDkyLCAweEMxLCAweEE4LCAweDVGLCAweEQ0LAorICAgIDB4NjcsIDB4M0YsIDB4OUQsIDB4RjQsIDB4NjMsIDB4M0EsIDB4MjgsIDB4MjEsIDB4MkEsIDB4OEMsIDB4NEEsIDB4NEUsIDB4ODksIDB4MEIsIDB4MjMsIDB4NDYsCisgICAgMHg4MSwgMHg4RCwgMHhDMSwgMHhFMCwgMHgwRiwgMHg4NywgMHg2MCwgMHhGQSwgMHhBMSwgMHhDMSwgMHg3MSwgMHgxRiwgMHgxMCwgMHgzNywgMHhEQSwgMHhDQywKKyAgICAweDY1LCAweEY1LCAweEEwLCAweDMzLCAweDg0LCAweDg0LCAweDM2LCAweDBBLCAweEVELCAweDI4LCAweDNGLCAweDVBLCAweEJFLCAweDc2LCAweDk1LCAweEI2LAorICAgIDB4QTQsIDB4QkEsIDB4RTMsIDB4OTIsIDB4RjgsIDB4NEIsIDB4NTUsIDB4NzgsIDB4MjMsIDB4QkYsIDB4QUQsIDB4N0IsIDB4MzksIDB4NzIsIDB4QUYsIDB4RTgsCisgICAgMHhBQywgMHhFRSwgMHgyNywgMHg2OSwgMHgwRSwgMHg4QywgMHg1NywgMHgyOSwgMHgwOCwgMHhEQSwgMHhDQiwgMHgzNSwgMHgwNywgMHg2RCwgMHhBNCwgMHg2NiwKKyAgICAweEM1LCAweEY2LCAweEYwLCAweDczLCAweDNBLCAweERDLCAweEQzLCAweDA4LCAweDc5LCAweDlBLCAweDI4LCAweENDLCAweEQwLCAweENDLCAweDQ1LCAweDdDLAorICAgIDB4RUQsIDB4ODIsIDB4NUEsIDB4MTQsIDB4MjksIDB4RUYsIDB4N0UsIDB4MUUsIDB4ODAsIDB4NDIsIDB4NUUsIDB4MzYsIDB4RDMsIDB4MjEsIDB4NDgsIDB4OEMsCisgICAgMHhFNiwgMHhCQSwgMHg5MSwgMHg0MiwgMHg1NCwgMHhDNiwgMHhDRiwgMHgzNiwgMHg0RCwgMHg2OCwgMHhFNSwgMHhDMywgMHgxOCwgMHhFRiwgMHhDRSwgMHg5MiwKKyAgICAweDQ3LCAweEU3LCAweDJFLCAweDhGLCAweEIxLCAweDY3LCAweDg4LCAweEM2LCAweEI0LCAweEIzLCAweDk4LCAweEY4LCAweDQ0LCAweDUxLCAweDZELCAweDQ0LAorICAgIDB4QzUsIDB4MTEsIDB4RkIsIDB4MkUsIDB4QTUsIDB4NjcsIDB4NDgsIDB4REUsIDB4RUQsIDB4N0UsIDB4OUMsIDB4NkYsIDB4NTMsIDB4NUQsIDB4QTAsIDB4RkYsCisgICAgMHg5RiwgMHg0RCwgMHgyRSwgMHgzRiwgMHhCNiwgMHgwRCwgMHg2MSwgMHg0MSwgMHgzNSwgMHhCNywgMHgwQiwgMHgyOCwgMHg4RiwgMHg2QSwgMHgyOSwgMHhENSwKKyAgICAweEZDLCAweDI1LCAweDQyLCAweEJGLCAweDA0LCAweDBFLCAweEE3LCAweEMwLCAweEU5LCAweEQ0LCAweEQwLCAweDk5LCAweDI2LCAweDBDLCAweDNCLCAweEVFLAorICAgIDB4RTAsIDB4NjYsIDB4RkIsIDB4NjYsIDB4MEUsIDB4RUMsIDB4MzcsIDB4MTMsIDB4RTIsIDB4RDgsIDB4MkYsIDB4OTAsIDB4NkIsIDB4MEQsIDB4NEUsIDB4OUMsCisgICAgMHgxNCwgMHhDQiwgMHhCQSwgMHhGMCwgMHhENiwgMHg0OSwgMHg1NSwgMHhBQiwgMHhGRSwgMHg5NiwgMHg3NCwgMHg0OCwgMHgwNywgMHhBMiwgMHgwQiwgMHg2RiwKKyAgICAweDkxLCAweDBCLCAweDdELCAweDc1LCAweDYwLCAweEI5LCAweDExLCAweDFCLCAweDhGLCAweDQ4LCAweDZELCAweDY2LCAweEVELCAweERELCAweENDLCAweDgzLAorICAgIDB4NTcsIDB4MUEsIDB4MkIsIDB4ODEsIDB4N0YsIDB4QzUsIDB4N0IsIDB4M0IsIDB4MTYsIDB4OTIsIDB4OTMsIDB4NkMsIDB4QzcsIDB4QjIsIDB4QzUsIDB4NDgsCisgICAgMHhBRSwgMHhCMiwgMHgyRSwgMHg0QywgMHgyMiwgMHhFOCwgMHhGOSwgMHhENCwgMHg5MSwgMHg5NSwgMHhBOSwgMHhBMSwgMHg5NywgMHg0OCwgMHg4MCwgMHg0RCwKKyAgICAweDRELCAweDVFLCAweEVGLCAweDNFLCAweDg3LCAweEQ1LCAweDNDLCAweEY3LCAweERGLCAweEZBLCAweDM2LCAweDRBLCAweEM0LCAweDcyLCAweDBDLCAweDJFLAorICAgIDB4MEUsIDB4QTIsIDB4QzYsIDB4NjEsIDB4QjEsIDB4M0QsIDB4RUMsIDB4NUEsIDB4NkMsIDB4OUQsIDB4MTYsIDB4ODEsIDB4MTMsIDB4NjEsIDB4OEUsIDB4N0UsCisgICAgMHgyOCwgMHhBMCwgMHgzRCwgMHhFQiwgMHg4RSwgMHg5NywgMHg1OSwgMHgwRSwgMHgyNCwgMHhDRiwgMHg1QiwgMHg0RCwgMHg5OCwgMHhERSwgMHgwMSwgMHhDOSwKKyAgICAweDQ4LCAweDk3LCAweDhGLCAweDFDLCAweENDLCAweEY5LCAweDZCLCAweEE4LCAweEMwLCAweDQ0LCAweDczLCAweEVCLCAweDA2LCAweDE3LCAweEIyLCAweDhELAorICAgIDB4QTUsIDB4RDQsIDB4MjUsIDB4ODcsIDB4MEUsIDB4RTIsIDB4NkUsIDB4MEQsIDB4OTksIDB4N0UsIDB4Q0UsIDB4MDYsIDB4ODMsIDB4OTksIDB4M0EsIDB4OEMsCisgICAgMHhFNiwgMHhDNywgMHg5OSwgMHhBQywgMHgzQywgMHhGMywgMHgwQywgMHg1MCwgMHg4RiwgMHhBNywgMHhCMiwgMHgyQiwgMHgzQywgMHhDQSwgMHg1NiwgMHgwNiwKKyAgICAweDYzLCAweEEwLCAweDlBLCAweEI2LCAweEY4LCAweDg0LCAweDQzLCAweDAzLCAweDA0LCAweDA3LCAweDhBLCAweEVDLCAweDQzLCAweEExLCAweDNFLCAweDVGLAorICAgIDB4RTIsIDB4MkEsIDB4NTAsIDB4MDIsIDB4QkEsIDB4NjIsIDB4REEsIDB4NzcsIDB4N0EsIDB4QzksIDB4MDYsIDB4NTAsIDB4RjUsIDB4RUUsIDB4RTAsIDB4RDAsCisgICAgMHg4NSwgMHhEQSwgMHgxNSwgMHg1NCwgMHgzNiwgMHg4MywgMHg0NCwgMHhDNSwgMHgxNCwgMHhCRCwgMHg5OCwgMHhCNCwgMHgzNywgMHgyNywgMHg1NiwgMHg0QiwKKyAgICAweEIyLCAweDE5LCAweDU5LCAweEVCLCAweEQ1LCAweDk1LCAweDI3LCAweEFELCAweDk0LCAweDJGLCAweDM2LCAweDhELCAweDYxLCAweDI2LCAweDk1LCAweEVGLAorICAgIDB4NEIsIDB4MDUsIDB4OUUsIDB4MjIsIDB4REIsIDB4NzYsIDB4MDYsIDB4NjcsIDB4QTAsIDB4MEQsIDB4MjgsIDB4OTAsIDB4NUQsIDB4NkQsIDB4RkYsIDB4QTYsCisgICAgMHgyRiwgMHgyRiwgMHg4RiwgMHgxRiwgMHg3MiwgMHhFQSwgMHg4OCwgMHg3OSwgMHhFMiwgMHhDOCwgMHg4QiwgMHhBMSwgMHgxOSwgMHhDMywgMHgwOSwgMHhBMywKKyAgICAweDIxLCAweDkzLCAweEI0LCAweDc0LCAweEIxLCAweERGLCAweDUzLCAweDc4LCAweDA4LCAweDI1LCAweDAxLCAweEM2LCAweDgzLCAweDJELCAweDE3LCAweEQ0LAorICAgIDB4NkMsIDB4NDQsIDB4MUMsIDB4QUUsIDB4RkQsIDB4M0QsIDB4RTgsIDB4RjAsIDB4QTcsIDB4OTMsIDB4NTksIDB4M0IsIDB4OTYsIDB4MDEsIDB4NUYsIDB4QzEsCisgICAgMHhBNCwgMHg1RiwgMHg4MiwgMHhBNywgMHgxRCwgMHg5QywgMHhCOSwgMHg2MCwgMHgwMCwgMHhGNCwgMHgwMiwgMHg5QSwgMHhEMCwgMHhDRiwgMHhBNywgMHg4RiwKKyAgICAweDI1LCAweDlFLCAweDIxLCAweEQ3LCAweDQ3LCAweDlBLCAweDE4LCAweDlFLCAweDdGLCAweDM5LCAweDFBLCAweDdFLCAweDVFLCAweDUyLCAweDQ0LCAweDExLAorICAgIDB4MUEsIDB4RjAsIDB4RDYsIDB4NEQsIDB4M0UsIDB4OTgsIDB4MkQsIDB4ODgsIDB4NDUsIDB4REEsIDB4QzQsIDB4QkYsIDB4NTEsIDB4OUYsIDB4MzQsIDB4QzAsCisgICAgMHhFQSwgMHgwRSwgMHhEMSwgMHgzMiwgMHhDRCwgMHhCOSwgMHg3RSwgMHgxNiwgMHgwMSwgMHhGMiwgMHhENCwgMHg4MSwgMHg5RSwgMHg0MCwgMHhDOSwgMHhCQSwKKyAgICAweEMwLCAweDkzLCAweEZCLCAweDg4LCAweDE0LCAweDhFLCAweDc5LCAweDJGLCAweDg1LCAweDU0LCAweDEyLCAweDI5LCAweDU0LCAweDhFLCAweDRGLCAweDcyLAorICAgIDB4NkMsIDB4M0YsIDB4MEQsIDB4QjYsIDB4RDQsIDB4MjcsIDB4OTEsIDB4Q0UsIDB4QUMsIDB4QzcsIDB4N0IsIDB4OUEsIDB4NzcsIDB4RUEsIDB4Q0IsIDB4QkUsCisgICAgMHgwQywgMHg1MywgMHhDQiwgMHgyRSwgMHg4RSwgMHg0NSwgMHgzRSwgMHhDMCwgMHg5NSwgMHg3NiwgMHgzNSwgMHg5NiwgMHhGMCwgMHhBRiwgMHhBMSwgMHg5MSwKKyAgICAweDdFLCAweDY0LCAweEU4LCAweDgyLCAweEEyLCAweDI3LCAweDNGLCAweDkwLCAweEM2LCAweEUzLCAweDc4LCAweDc1LCAweEM2LCAweDMyLCAweDNCLCAweERELAorICAgIDB4OTEsIDB4RTQsIDB4N0MsIDB4RkQsIDB4MTgsIDB4MTYsIDB4QUMsIDB4RUYsIDB4OTMsIDB4RUYsIDB4NzYsIDB4QzQsIDB4NEMsIDB4QzgsIDB4MUYsIDB4NjEsCisgICAgMHhFRiwgMHhEMCwgMHg0MCwgMHgwRCwgMHhEOSwgMHg5QiwgMHgxMywgMHhCOCwgMHhBQSwgMHg2RSwgMHhGQywgMHg5RiwgMHgxRCwgMHg1RSwgMHg3QywgMHg3RiwKKyAgICAweEI2LCAweDJCLCAweENBLCAweDA2LCAweEY2LCAweERBLCAweDA2LCAweEUwLCAweDk0LCAweDgxLCAweDhDLCAweDQ5LCAweDc1LCAweEQ2LCAweDhBLCAweEEzLAorICAgIDB4QzAsIDB4N0EsIDB4NTksIDB4Q0UsIDB4RkMsIDB4ODUsIDB4QjQsIDB4Q0EsIDB4RTUsIDB4QTMsIDB4NTgsIDB4NjQsIDB4MzEsIDB4QTgsIDB4NDEsIDB4MkQsCisgICAgMHhGNCwgMHhDRCwgMHg1NiwgMHgxMCwgMHgyQSwgMHgxOCwgMHg0QywgMHgxNSwgMHhCRSwgMHhENSwgMHgxQiwgMHhBQywgMHhDNywgMHg2OCwgMHhCNCwgMHgzQywKKyAgICAweDYwLCAweDRELCAweEQwLCAweEMyLCAweDdBLCAweEU0LCAweEUxLCAweDU5LCAweDg0LCAweDk1LCAweDVELCAweDBDLCAweDFELCAweDc0LCAweDRFLCAweDVBLAorICAgIDB4Q0MsIDB4QkIsIDB4ODUsIDB4QUEsIDB4RkMsIDB4OTEsIDB4ODEsIDB4NTAsIDB4RkMsIDB4MDUsIDB4QzcsIDB4NzcsIDB4QzUsIDB4RTMsIDB4Q0UsIDB4NzAsCisgICAgMHhBMSwgMHgzNSwgMHhCRCwgMHhBRiwgMHg5QywgMHgxNywgMHhCMywgMHg1MiwgMHhEMCwgMHhFMSwgMHhDNCwgMHg2QiwgMHgxMiwgMHgwMCwgMHg0RSwgMHhBMywKKyAgICAweDJFLCAweEMyLCAweDQ1LCAweEIzLCAweDg1LCAweDFFLCAweEJGLCAweDRDLCAweDFDLCAweEM1LCAweDQ5LCAweDdBLCAweEI0LCAweDlELCAweENCLCAweEI5LAorICAgIDB4MkQsIDB4OTMsIDB4QUYsIDB4QjMsIDB4OTgsIDB4MzAsIDB4QTEsIDB4MTcsIDB4OTMsIDB4MzEsIDB4RTgsIDB4NzksIDB4QkUsIDB4RkIsIDB4RTMsIDB4RjYsCisgICAgMHg4RSwgMHg4RiwgMHhCRSwgMHgxMSwgMHg0MywgMHhDQiwgMHgwNiwgMHgzOCwgMHhERCwgMHgzMywgMHg1QSwgMHgyNywgMHg3NywgMHhGNywgMHg1OSwgMHhGOSwKKyAgICAweDEyLCAweDhFLCAweDlFLCAweEFBLCAweEE2LCAweDk5LCAweDU0LCAweDlDLCAweDI2LCAweEQ4LCAweDU1LCAweDM5LCAweDhDLCAweEQwLCAweDYyLCAweEM3LAorICAgIDB4MkIsIDB4RTcsIDB4QUQsIDB4NDMsIDB4REMsIDB4RkEsIDB4QTQsIDB4QjcsIDB4QjMsIDB4QjIsIDB4RUUsIDB4REIsIDB4QzEsIDB4MUYsIDB4MzcsIDB4NDQsCisgICAgMHg4OSwgMHgzMCwgMHhCQywgMHhFNiwgMHg2QSwgMHgxNywgMHhFQywgMHgzMSwgMHhCQiwgMHg1MiwgMHg1MiwgMHgzNiwgMHg5OSwgMHg0OSwgMHg0NSwgMHg1OSwKKyAgICAweDZBLCAweDU1LCAweEQwLCAweEM2LCAweDVDLCAweEFELCAweDFCLCAweEU2LCAweDJGLCAweDFCLCAweDcxLCAweDZBLCAweDNELCAweDc4LCAweDNDLCAweEZELAorICAgIDB4NjMsIDB4NkYsIDB4NDEsIDB4NkIsIDB4NEQsIDB4QTcsIDB4ODMsIDB4NjUsIDB4MDEsIDB4RkYsIDB4ODIsIDB4MEUsIDB4MEUsIDB4MDQsIDB4RkMsIDB4OEIsCisgICAgMHgyNCwgMHhEMSwgMHg2NSwgMHgzQiwgMHhGMCwgMHg2MSwgMHg3OCwgMHgyQSwgMHg0MywgMHg0QSwgMHhENSwgMHhERSwgMHhFMiwgMHg3RSwgMHg0MSwgMHgxNSwKKyAgICAweDc2LCAweDA4LCAweEI4LCAweDlCLCAweDI0LCAweDJELCAweDJBLCAweEQ5LCAweDNDLCAweEE3LCAweDE3LCAweDQ3LCAweEY3LCAweDg4LCAweEEwLCAweENGLAorICAgIDB4REQsIDB4NUIsIDB4MDgsIDB4QjYsIDB4MDUsIDB4MjUsIDB4NTQsIDB4ODAsIDB4OTMsIDB4ODMsIDB4OUUsIDB4OEQsIDB4RTEsIDB4MUYsIDB4RTYsIDB4OEUsCisgICAgMHgwOCwgMHg0QywgMHgwNiwgMHgyNiwgMHhFMiwgMHgwQiwgMHhFNSwgMHhFRSwgMHhERCwgMHg0RCwgMHhBQiwgMHhEMCwgMHg0MywgMHgxNSwgMHg5NSwgMHg2NiwKKyAgICAweDhGLCAweEI2LCAweEY4LCAweDU0LCAweEYyLCAweEY1LCAweDlGLCAweDc5LCAweEI1LCAweDA4LCAweDJFLCAweDk0LCAweDhELCAweDFGLCAweDAwLCAweDg2LAorICAgIDB4RUYsIDB4RjIsIDB4QjcsIDB4MUMsIDB4OUEsIDB4MDEsIDB4QTksIDB4MDAsIDB4RTIsIDB4NjEsIDB4MzksIDB4NDcsIDB4NTIsIDB4RjEsIDB4MjUsIDB4QTYsCisgICAgMHhBMiwgMHhDQywgMHg4MiwgMHhCNCwgMHhFMSwgMHg5MywgMHhCRSwgMHhDNCwgMHhCRiwgMHgyRSwgMHhCQSwgMHgwMiwgMHg1RCwgMHg2NSwgMHgwOSwgMHg1MCwKKyAgICAweDJGLCAweDM2LCAweDU4LCAweDgyLCAweDQ5LCAweDlDLCAweEMzLCAweDc4LCAweEQ4LCAweDFELCAweEQ1LCAweEJDLCAweEU4LCAweDE4LCAweEE3LCAweEQ4LAorICAgIDB4OUMsIDB4QjAsIDB4MTUsIDB4N0QsIDB4RjksIDB4RTEsIDB4NTgsIDB4RDMsIDB4NTksIDB4RUEsIDB4MTMsIDB4RUMsIDB4OUYsIDB4RDcsIDB4RjMsIDB4MzUsCisgICAgMHg5MCwgMHhGNywgMHgyOSwgMHhDMCwgMHgyMSwgMHg3QywgMHg1NSwgMHhENCwgMHgxMSwgMHg0OCwgMHhGNywgMHg2RiwgMHg2QSwgMHgwMCwgMHhDNSwgMHgyNSwKKyAgICAweEU1LCAweDAwLCAweDY0LCAweEM0LCAweEIwLCAweDMxLCAweEU1LCAweEYyLCAweDAzLCAweDkyLCAweDlBLCAweDA3LCAweDQ3LCAweDVFLCAweEEwLCAweDk0LAorICAgIDB4NjUsIDB4QUYsIDB4NUEsIDB4QjYsIDB4RkMsIDB4NEIsIDB4NDgsIDB4QjYsIDB4NEEsIDB4Q0YsIDB4NEQsIDB4Q0EsIDB4OEMsIDB4MTYsIDB4NzcsIDB4NkMsCisgICAgMHhGNywgMHg5OSwgMHhCRCwgMHhDQywgMHgxRSwgMHg0MCwgMHg1NSwgMHhFMiwgMHhBQSwgMHhDQiwgMHhCRiwgMHhDQywgMHg3NCwgMHg5MiwgMHhBMiwgMHg4QSwKKyAgICAweDY0LCAweEMzLCAweEU2LCAweDE3LCAweDYwLCAweDEwLCAweDcyLCAweEQxLCAweEEwLCAweDYyLCAweEQzLCAweDA2LCAweENGLCAweDEyLCAweEFELCAweEU2LAorICAgIDB4QkUsIDB4QzQsIDB4NzYsIDB4RDcsIDB4MzQsIDB4OEUsIDB4QTcsIDB4QjQsIDB4NzYsIDB4RDUsIDB4OUQsIDB4QzMsIDB4QTEsIDB4NEEsIDB4Q0UsIDB4QTksCisgICAgMHhDMCwgMHg0RiwgMHg3MCwgMHgxNSwgMHg5MSwgMHhBRCwgMHg0MSwgMHgyMywgMHg0NCwgMHhCOCwgMHg2NSwgMHg4QywgMHg0NCwgMHg0OSwgMHg0RiwgMHhCOCwKKyAgICAweEJFLCAweDQ1LCAweDQ5LCAweEE1LCAweEFGLCAweDAyLCAweDY2LCAweDcxLCAweDU4LCAweEI2LCAweDhELCAweDQwLCAweEFELCAweDRGLCAweDg5LCAweEY0LAorICAgIDB4NkYsIDB4MjUsIDB4MTQsIDB4QjAsIDB4NjIsIDB4OUEsIDB4QTYsIDB4RTgsIDB4NzIsIDB4MDEsIDB4NjYsIDB4MDIsIDB4QzksIDB4RjIsIDB4Q0UsIDB4Q0EsCisgICAgMHhCRCwgMHhBMSwgMHgzQSwgMHgxMiwgMHhFNCwgMHhENCwgMHgzQSwgMHg0QiwgMHg0MCwgMHhDNiwgMHhCNiwgMHgyOSwgMHgwMCwgMHhDOSwgMHg5MiwgMHgwNCwKKyAgICAweDNCLCAweEJDLCAweEE5LCAweDJFLCAweEFELCAweDYzLCAweDdDLCAweEM1LCAweDg0LCAweEFFLCAweDNELCAweDkxLCAweDY0LCAweDI4LCAweEIxLCAweEEyLAorICAgIDB4QTcsIDB4N0UsIDB4NjcsIDB4RDUsIDB4QkYsIDB4OEIsIDB4MDAsIDB4MjMsIDB4MzcsIDB4ODcsIDB4NTcsIDB4ODMsIDB4QTgsIDB4MkMsIDB4MTMsIDB4MTIsCisgICAgMHg1QSwgMHg4NiwgMHg2NywgMHg3OSwgMHgzQSwgMHhGNywgMHhGQSwgMHgyQiwgMHhDQiwgMHhDMiwgMHhCNiwgMHgyMCwgMHhGMCwgMHhEMiwgMHgzRiwgMHgzOSwKKyAgICAweDFCLCAweDIzLCAweEEyLCAweDExLCAweDc0LCAweDlDLCAweEEyLCAweDhFLCAweDkxLCAweDRFLCAweDcwLCAweEIzLCAweEUxLCAweDg1LCAweDE4LCAweEM2LAorICAgIDB4MTYsIDB4NEIsIDB4MjUsIDB4OTMsIDB4RjEsIDB4NzYsIDB4NzQsIDB4NEMsIDB4QTgsIDB4OUMsIDB4ODEsIDB4NzMsIDB4RTQsIDB4OTcsIDB4NTQsIDB4MkEsCisgICAgMHg3NCwgMHg0NSwgMHhENywgMHgzQSwgMHg4MCwgMHgzNiwgMHg0MywgMHg2OCwgMHg5MSwgMHhBRSwgMHg5OSwgMHgzQiwgMHhFNiwgMHg2NCwgMHgyOCwgMHhDMSwKKyAgICAweEZELCAweEU2LCAweEQzLCAweEZBLCAweENFLCAweEUyLCAweDYzLCAweEEyLCAweDI3LCAweEEwLCAweDUwLCAweDgzLCAweDlFLCAweDkwLCAweEU5LCAweDQ3LAorICAgIDB4OTUsIDB4MjcsIDB4MjAsIDB4NkYsIDB4ODIsIDB4NEEsIDB4ODgsIDB4NDYsIDB4QkIsIDB4QzYsIDB4QkEsIDB4NTUsIDB4NzIsIDB4QTgsIDB4QkQsIDB4MjEsCisgICAgMHhENywgMHhFNywgMHhGQywgMHhDMiwgMHhDRiwgMHgzMCwgMHg0MywgMHgwOSwgMHg4MCwgMHgxNSwgMHhEQywgMHg2MSwgMHhGQSwgMHhFMywgMHg0NiwgMHgwMywKKyAgICAweEQ2LCAweDI4LCAweDA1LCAweEM0LCAweDI0LCAweEQzLCAweEM2LCAweDkwLCAweDM2LCAweDRCLCAweDU4LCAweEUwLCAweDMyLCAweDNBLCAweDZCLCAweERELAorICAgIDB4OTUsIDB4RUYsIDB4NEEsIDB4REIsIDB4NzIsIDB4OEEsIDB4ODUsIDB4RkQsIDB4MUIsIDB4NzIsIDB4NDgsIDB4QUYsIDB4RTEsIDB4NzUsIDB4MEIsIDB4QUYsCisgICAgMHg2NSwgMHhBQSwgMHhEQywgMHhEMSwgMHhCQSwgMHhCNSwgMHg2RiwgMHgxNSwgMHg5NSwgMHhFNiwgMHgyQiwgMHg5QiwgMHg3OCwgMHhFMywgMHhDRiwgMHhCOCwKKyAgICAweEI2LCAweDFELCAweEU2LCAweEI5LCAweEI5LCAweEE1LCAweDIwLCAweDUzLCAweEM0LCAweDUwLCAweERDLCAweEQyLCAweDRBLCAweDRELCAweDgwLCAweDQ0LAorICAgIDB4RjUsIDB4RkQsIDB4NjgsIDB4QjAsIDB4NzgsIDB4NzUsIDB4NzksIDB4MDgsIDB4MTksIDB4Q0UsIDB4NEMsIDB4QTEsIDB4ODUsIDB4NTEsIDB4RkEsIDB4Q0IsCisgICAgMHhCNiwgMHhFNiwgMHg0QiwgMHg4MSwgMHg0MiwgMHg1RCwgMHhFQSwgMHhGMywgMHg5NywgMHhDNiwgMHg2OCwgMHhEMSwgMHg1NiwgMHg1MSwgMHg1MiwgMHg0OCwKKyAgICAweDNELCAweDYxLCAweEQyLCAweDFDLCAweDBELCAweDY4LCAweDRBLCAweEM0LCAweERFLCAweDA2LCAweDA0LCAweDM0LCAweDFDLCAweEU0LCAweEQxLCAweDM2LAorICAgIDB4RUQsIDB4NkQsIDB4QTcsIDB4NzAsIDB4MzgsIDB4ODksIDB4NjQsIDB4MzQsIDB4QzMsIDB4QkIsIDB4OTMsIDB4QTIsIDB4NzUsIDB4RTYsIDB4MzksIDB4RjcsCisgICAgMHg5NywgMHgxQywgMHhCRCwgMHg4RiwgMHhEMSwgMHhBRiwgMHg0QywgMHg5OCwgMHhGNCwgMHg3RCwgMHhENywgMHg3MSwgMHhFRSwgMHg1MCwgMHg3OCwgMHg3MiwKKyAgICAweDg2LCAweEIwLCAweEQ0LCAweEI5LCAweEQwLCAweENCLCAweDVCLCAweEIxLCAweDUwLCAweDU1LCAweEZDLCAweEMyLCAweEIzLCAweDBCLCAweDJGLCAweEFGLAorICAgIDB4NTQsIDB4MzIsIDB4N0MsIDB4NzcsIDB4NkUsIDB4QzgsIDB4MkEsIDB4NTcsIDB4QkIsIDB4OTksIDB4OEUsIDB4QjMsIDB4OTMsIDB4MzcsIDB4MTEsIDB4RkUsCisgICAgMHgyMywgMHgyQywgMHg0QiwgMHgzMywgMHg0OCwgMHg5RCwgMHgxMywgMHgwNSwgMHhEOSwgMHg5MCwgMHhGMywgMHg0RCwgMHhCQiwgMHgzQywgMHgzQywgMHhCRSwKKyAgICAweEYyLCAweDI5LCAweDZBLCAweEZCLCAweEM5LCAweDc3LCAweDIxLCAweDY0LCAweDNBLCAweEE3LCAweEE0LCAweDhELCAweEM4LCAweDYyLCAweDRELCAweEU3LAorICAgIDB4OTcsIDB4OTYsIDB4MkQsIDB4ODgsIDB4RjcsIDB4RjEsIDB4MEQsIDB4OTksIDB4MzUsIDB4MDksIDB4MkIsIDB4MzQsIDB4QUYsIDB4MTksIDB4QjQsIDB4QkMsCisgICAgMHgwQywgMHhCQSwgMHgzNSwgMHgxMywgMHg5RiwgMHg4NSwgMHgyNywgMHg5OCwgMHhENywgMHg1QSwgMHg5OCwgMHg3NiwgMHg0MSwgMHgzRCwgMHhFMywgMHhEQywKKyAgICAweEIxLCAweDU3LCAweDJGLCAweDg0LCAweEE3LCAweEFDLCAweDYwLCAweDI4LCAweDBBLCAweDQxLCAweENBLCAweEExLCAweEI2LCAweEI0LCAweDY4LCAweEE5LAorICAgIDB4NEYsIDB4QzgsIDB4REEsIDB4NEEsIDB4NDMsIDB4ODksIDB4MjUsIDB4MzYsIDB4QzksIDB4Q0YsIDB4NkUsIDB4M0YsIDB4MDQsIDB4NzMsIDB4Q0IsIDB4RTcsCisgICAgMHg5RSwgMHgyQSwgMHhCNiwgMHgwNCwgMHhGRiwgMHg5RiwgMHg0QiwgMHg0MiwgMHg3RCwgMHgyRCwgMHg3NCwgMHhBQywgMHgzRCwgMHg2RCwgMHg3OCwgMHhDNywKKyAgICAweEE1LCAweDM0LCAweDlDLCAweEQyLCAweDhBLCAweDA5LCAweDA2LCAweEYwLCAweDgwLCAweEE5LCAweDY5LCAweDYwLCAweEVDLCAweDUyLCAweDcwLCAweDZCLAorICAgIDB4MzQsIDB4MEMsIDB4N0UsIDB4QUYsIDB4MTcsIDB4QTcsIDB4NDgsIDB4NUUsIDB4QUYsIDB4ODUsIDB4RjcsIDB4MjksIDB4RTQsIDB4MzMsIDB4NTQsIDB4QTIsCisgICAgMHg0NCwgMHg4QiwgMHhBMCwgMHgzMCwgMHhGMCwgMHhBQSwgMHhFNSwgMHhBRCwgMHg4NywgMHg1RSwgMHhGNiwgMHhBOCwgMHg2NywgMHhCQSwgMHg0QSwgMHg0RSwKKyAgICAweEE4LCAweDg1LCAweEVELCAweDUwLCAweDJDLCAweDRELCAweEJBLCAweEMyLCAweDg5LCAweDJGLCAweDM5LCAweDY0LCAweDYyLCAweDlGLCAweDRCLCAweDhFLAorICAgIDB4NjAsIDB4NUIsIDB4MkMsIDB4NUYsIDB4NEEsIDB4RkEsIDB4NjUsIDB4QjMsIDB4Q0QsIDB4NTIsIDB4OTMsIDB4NDMsIDB4QzEsIDB4NzEsIDB4M0UsIDB4RTcsCisgICAgMHhGQiwgMHg3OCwgMHhBRCwgMHgzMiwgMHhFQywgMHhGMCwgMHhCOCwgMHgyQywgMHg3MiwgMHhFRiwgMHhEOCwgMHgzNywgMHhDQSwgMHg4MCwgMHhGQiwgMHg0RiwKKyAgICAweDJDLCAweDE4LCAweEY0LCAweDZELCAweDg4LCAweDVFLCAweENCLCAweDA3LCAweEI3LCAweEIzLCAweDlDLCAweDA1LCAweDU4LCAweDg0LCAweDcxLCAweEIxLAorICAgIDB4RTEsIDB4MTEsIDB4RDQsIDB4QzksIDB4NjMsIDB4QUUsIDB4MjMsIDB4ODIsIDB4RUIsIDB4RjksIDB4NDgsIDB4OTcsIDB4Q0EsIDB4MjYsIDB4MzAsIDB4QzIsCisgICAgMHhGMSwgMHgzNywgMHg4RSwgMHhFNiwgMHg1MywgMHgwOCwgMHgxNiwgMHg1RSwgMHgyQSwgMHgyNCwgMHg5NSwgMHhGQiwgMHg5MiwgMHg2OCwgMHhGNSwgMHhGQywKKyAgICAweDM0LCAweDcwLCAweDk4LCAweDZFLCAweDJDLCAweDU0LCAweDk3LCAweDgxLCAweDExLCAweEZDLCAweDk1LCAweEVGLCAweENBLCAweEQzLCAweEJGLCAweEMzLAorICAgIDB4QjUsIDB4QjUsIDB4QzAsIDB4QzcsIDB4Q0UsIDB4RjMsIDB4MjIsIDB4OEMsIDB4OUYsIDB4RDcsIDB4QzcsIDB4QTIsIDB4RkMsIDB4OTUsIDB4RUUsIDB4NjksCisgICAgMHg5NCwgMHgyMCwgMHgxNiwgMHg1QiwgMHg1NSwgMHhBNCwgMHg0OCwgMHg2NiwgMHgyQSwgMHg3MCwgMHg5MSwgMHhENSwgMHg2MSwgMHgzMiwgMHhCQiwgMHgzNCwKKyAgICAweDYxLCAweDEzLCAweDAwLCAweDU5LCAweEVBLCAweEI3LCAweERFLCAweEFFLCAweEUwLCAweEEyLCAweEVGLCAweDNCLCAweEYwLCAweDFDLCAweEE5LCAweEMyLAorICAgIDB4RkMsIDB4MDIsIDB4RTMsIDB4NjksIDB4OEUsIDB4QkEsIDB4RUQsIDB4QUQsIDB4QkEsIDB4MzcsIDB4NTIsIDB4NzEsIDB4NEUsIDB4OEEsIDB4QzMsIDB4QTEsCisgICAgMHg3NywgMHhBOCwgMHhERiwgMHhBNSwgMHgzRSwgMHg5NSwgMHhGNywgMHhFRSwgMHhFRiwgMHhENywgMHhCRSwgMHg0NiwgMHg0RiwgMHg2NSwgMHg3QSwgMHhCNSwKKyAgICAweDhDLCAweEJCLCAweEI3LCAweDQ1LCAweEI5LCAweDM2LCAweEEyLCAweEQxLCAweDQ0LCAweEJFLCAweDEwLCAweDhGLCAweDlGLCAweDI5LCAweERGLCAweEZDLAorICAgIDB4NEUsIDB4QzAsIDB4NjksIDB4NDksIDB4OEUsIDB4MDUsIDB4MDcsIDB4N0QsIDB4OUUsIDB4QTIsIDB4MEIsIDB4NkUsIDB4OTIsIDB4NDcsIDB4MTgsIDB4OTksCisgICAgMHhGMiwgMHhGNywgMHg2MiwgMHg1QywgMHgzOCwgMHhEOSwgMHhFNiwgMHg5MiwgMHg4MiwgMHgzNywgMHg0NCwgMHhCNywgMHhBQiwgMHg4QiwgMHg3RCwgMHhCNSwKKyAgICAweDRELCAweDNFLCAweEE0LCAweEYzLCAweDhGLCAweDZCLCAweDBCLCAweDhCLCAweDYwLCAweERELCAweDU1LCAweDJELCAweDlFLCAweEI3LCAweEY4LCAweDc5LAorICAgIDB4OUIsIDB4Q0EsIDB4OEYsIDB4NzYsIDB4NzgsIDB4N0IsIDB4MUIsIDB4RTcsIDB4REIsIDB4NTUsIDB4QkEsIDB4NzEsIDB4MEIsIDB4N0YsIDB4N0QsIDB4RUMsCisgICAgMHhGNCwgMHgyQSwgMHg3RCwgMHg3RSwgMHhBNiwgMHhENSwgMHhFNiwgMHg3QywgMHg1MCwgMHg2RSwgMHgxMSwgMHgzQSwgMHgwMCwgMHgzMywgMHhBNSwgMHhCNywKKyAgICAweEYxLCAweDQwLCAweEY1LCAweERFLCAweDYyLCAweEQ1LCAweEM5LCAweDE4LCAweDc2LCAweDcwLCAweDdDLCAweDA5LCAweDVBLCAweDg4LCAweDJGLCAweDBGLAorICAgIDB4NUMsIDB4QzksIDB4ODAsIDB4QjEsIDB4RUEsIDB4NTUsIDB4MDUsIDB4NEYsIDB4N0UsIDB4NTEsIDB4MjUsIDB4RjgsIDB4ODIsIDB4NzYsIDB4RjYsIDB4MEIsCisgICAgMHg1RSwgMHhDNSwgMHg3RSwgMHhDRSwgMHhCOCwgMHg1OSwgMHgyQiwgMHgyQywgMHg4QiwgMHgwQiwgMHg0MywgMHhEQywgMHhDNywgMHg3NCwgMHg5NiwgMHgxMywKKyAgICAweEJBLCAweDM0LCAweEQ3LCAweDY5LCAweDExLCAweDZDLCAweDAxLCAweDRFLCAweEMyLCAweDhBLCAweEQ3LCAweDM4LCAweDEwLCAweDIwLCAweEI4LCAweEFCLAorICAgIDB4MjAsIDB4QTEsIDB4QTcsIDB4MTAsIDB4MjAsIDB4RDMsIDB4NjEsIDB4MDcsIDB4MDEsIDB4NUMsIDB4NDgsIDB4ODksIDB4ODcsIDB4OTMsIDB4RkUsIDB4MzYsCisgICAgMHgwNSwgMHgyOCwgMHg1MiwgMHgwNywgMHgzNSwgMHhGMCwgMHgwNSwgMHg3NSwgMHgwRCwgMHgyNiwgMHg5NSwgMHg3NywgMHhFQywgMHg0MSwgMHg5OSwgMHhCRiwKKyAgICAweEVCLCAweEM0LCAweEQ4LCAweEQxLCAweDBBLCAweDA4LCAweDc4LCAweEM2LCAweDZBLCAweEVBLCAweDUyLCAweDA1LCAweDFELCAweDQ1LCAweDVELCAweDg3LAorICAgIDB4ODAsIDB4OTQsIDB4NDIsIDB4RDksIDB4NUEsIDB4MUYsIDB4QkEsIDB4QUUsIDB4MTEsIDB4ODYsIDB4QTEsIDB4Q0MsIDB4RjksIDB4QkEsIDB4MjksIDB4RTQsCisgICAgMHhGMiwgMHgwNywgMHg5MSwgMHhGMSwgMHhERiwgMHgxNywgMHg2MSwgMHg1NiwgMHhGNSwgMHhFQywgMHgxOSwgMHhDQywgMHgxRiwgMHhCMCwgMHhGNSwgMHgyMiwKKyAgICAweDlGLCAweEQxLCAweDA2LCAweDkzLCAweDZCLCAweEU1LCAweDk4LCAweEY2LCAweEJFLCAweEUxLCAweDNDLCAweDBFLCAweDYyLCAweEY1LCAweDc3LCAweEY2LAorICAgIDB4MjcsIDB4N0UsIDB4REIsIDB4QjIsIDB4OTYsIDB4MTMsIDB4Q0UsIDB4MEUsIDB4NDMsIDB4NDEsIDB4MTQsIDB4NTIsIDB4MzUsIDB4QUYsIDB4NjMsIDB4MzYsCisgICAgMHhBRSwgMHg5NywgMHgyRSwgMHhCMCwgMHgyMiwgMHhDQSwgMHhDMSwgMHhFQywgMHhDOSwgMHg5OCwgMHg5MywgMHhCRCwgMHhDRCwgMHg4RSwgMHg5MCwgMHg2QiwKKyAgICAweDEyLCAweDMwLCAweDFELCAweEFBLCAweDZDLCAweEI0LCAweEVGLCAweDNCLCAweDBELCAweDI0LCAweEJFLCAweDI4LCAweEIwLCAweEQxLCAweEFELCAweDA2LAorICAgIDB4REEsIDB4ODIsIDB4MTYsIDB4MEYsIDB4QjIsIDB4RDQsIDB4REIsIDB4MkEsIDB4QUMsIDB4N0IsIDB4OTQsIDB4NjIsIDB4RjMsIDB4M0YsIDB4MjksIDB4QTYsCisgICAgMHhGMywgMHg2RiwgMHhDNSwgMHhENiwgMHhCQiwgMHg4MSwgMHg1MywgMHhBQiwgMHg4NiwgMHhFNSwgMHhBNSwgMHg2MywgMHgwMiwgMHhEQSwgMHhGMywgMHg4OCwKKyAgICAweDhFLCAweEJGLCAweEI1LCAweDU2LCAweDFBLCAweDc5LCAweDRELCAweDM5LCAweENBLCAweERCLCAweEM5LCAweEQ0LCAweDc4LCAweEZELCAweDRDLCAweERCLAorICAgIDB4MDMsIDB4MTAsIDB4ODQsIDB4ODMsIDB4QUQsIDB4NEEsIDB4MTMsIDB4Q0YsIDB4QjgsIDB4RDcsIDB4NTgsIDB4MzQsIDB4NTEsIDB4RDgsIDB4MTMsIDB4MjUsCisgICAgMHg5OSwgMHg0NiwgMHg5RSwgMHhENiwgMHhENywgMHhEQiwgMHhFNiwgMHgyRiwgMHg2RiwgMHhBQywgMHgxMiwgMHhGMSwgMHgwOCwgMHhCMSwgMHgwNywgMHhCOSwKKyAgICAweDczLCAweDYxLCAweERCLCAweDY4LCAweEFFLCAweDNBLCAweEMzLCAweEJDLCAweDc0LCAweDAyLCAweEQzLCAweDU1LCAweDhGLCAweDY5LCAweDhBLCAweDJFLAorICAgIDB4NTEsIDB4ODQsIDB4RUEsIDB4MTksIDB4NkIsIDB4QTksIDB4NTIsIDB4QzcsIDB4MDYsIDB4NDcsIDB4NzksIDB4RkIsIDB4RDAsIDB4OTgsIDB4QzYsIDB4N0QsCisgICAgMHhGMiwgMHhCQSwgMHhGNiwgMHhFNCwgMHhFQywgMHgxMCwgMHg2OSwgMHhFMCwgMHhCOCwgMHg1MiwgMHgyQywgMHg3RiwgMHhCOCwgMHg5QywgMHg0RiwgMHhCMiwKKyAgICAweDVBLCAweDQ4LCAweDM5LCAweDA1LCAweDgxLCAweEE4LCAweDVFLCAweDkxLCAweEQ2LCAweEZBLCAweDg0LCAweEM5LCAweEU2LCAweDEyLCAweEM2LCAweDA5LAorICAgIDB4NDQsIDB4M0EsIDB4NjksIDB4RTksIDB4OUMsIDB4MjAsIDB4OUMsIDB4NEIsIDB4NkUsIDB4MzksIDB4QzgsIDB4MEEsIDB4QzgsIDB4NjUsIDB4MjgsIDB4OTYsCisgICAgMHhBNiwgMHg2RiwgMHgzQiwgMHgwNywgMHg1RSwgMHhCMCwgMHhGMSwgMHg5MSwgMHgyNywgMHg5OSwgMHgzOCwgMHgyMywgMHhGOSwgMHgwQiwgMHhGMSwgMHhFMSwKKyAgICAweEM2LCAweDAxLCAweEZCLCAweDY0LCAweEExLCAweDQxLCAweDRELCAweDQ5LCAweEVBLCAweEM2LCAweDM1LCAweEY0LCAweDZBLCAweDczLCAweEU5LCAweDlFLAorICAgIDB4NkEsIDB4MkYsIDB4QTAsIDB4MDAsIDB4MDYsIDB4RjcsIDB4RjYsIDB4OEMsIDB4RDcsIDB4M0QsIDB4N0EsIDB4QzUsIDB4RUYsIDB4QkQsIDB4OTEsIDB4RkQsCisgICAgMHg3NiwgMHg4RCwgMHg3OCwgMHhBQSwgMHgyRCwgMHgxNCwgMHgwRiwgMHgwMSwgMHhDOCwgMHg3MCwgMHg5NiwgMHhGOSwgMHg4RiwgMHg4MywgMHg2MSwgMHhDNywKKyAgICAweEU0LCAweEIyLCAweEE2LCAweDUyLCAweEJCLCAweEU1LCAweDFCLCAweDQ5LCAweDE2LCAweENDLCAweEJFLCAweEQ3LCAweEFGLCAweDc2LCAweEE3LCAweDM4LAorICAgIDB4NDQsIDB4NEQsIDB4RjIsIDB4QUMsIDB4MjMsIDB4RDIsIDB4NTAsIDB4MkMsIDB4RTcsIDB4NEUsIDB4REMsIDB4QkEsIDB4RkQsIDB4Q0IsIDB4MEMsIDB4OEEsCisgICAgMHhFQSwgMHhFNywgMHg3QSwgMHgwMCwgMHhFRSwgMHgxNCwgMHhBQiwgMHhDOSwgMHg1MiwgMHhDRSwgMHhBNCwgMHgzOCwgMHg0MCwgMHhFMCwgMHg3NSwgMHg1RSwKKyAgICAweDMzLCAweENBLCAweEE1LCAweDIwLCAweEI3LCAweDVELCAweEY5LCAweDA5LCAweDFBLCAweEE4LCAweEJELCAweEJFLCAweDM0LCAweEJGLCAweEQ4LCAweDEyLAorICAgIDB4RjksIDB4RjAsIDB4QzIsIDB4NjMsIDB4RUUsIDB4RkYsIDB4QTksIDB4QkYsIDB4NUMsIDB4RDcsIDB4RDMsIDB4M0EsIDB4NDAsIDB4RUMsIDB4RTYsIDB4MzIsCisgICAgMHg4NiwgMHhBNywgMHhBNywgMHgwQiwgMHhBOCwgMHg4NywgMHg3QSwgMHgzRSwgMHg1RSwgMHg1MywgMHg0QiwgMHg4NSwgMHg1MywgMHhGQSwgMHg5RiwgMHhBMiwKKyAgICAweEFCLCAweEM3LCAweDg4LCAweDE2LCAweDc3LCAweDRELCAweDM1LCAweDA2LCAweEZFLCAweERBLCAweDRBLCAweDQ3LCAweDRGLCAweDFDLCAweDdDLCAweEZGLAorICAgIDB4NEMsIDB4QjIsIDB4ODQsIDB4MkQsIDB4NEYsIDB4NTEsIDB4N0YsIDB4NjUsIDB4NEUsIDB4MUMsIDB4QTcsIDB4OTIsIDB4RTYsIDB4Q0QsIDB4ODAsIDB4MEEsCisgICAgMHhBMywgMHhFOCwgMHhCOCwgMHg3QSwgMHg0MiwgMHhCQywgMHgzQSwgMHgwOSwgMHhFQywgMHhFNCwgMHg3RCwgMHgyRiwgMHhCQywgMHgyNywgMHgyQSwgMHhCRCwKKyAgICAweDhDLCAweDZFLCAweEU0LCAweDQ4LCAweDU0LCAweDczLCAweDZELCAweDFGLCAweDE1LCAweENELCAweDM3LCAweDM5LCAweDY0LCAweDEyLCAweEUzLCAweEU0LAorICAgIDB4NDksIDB4MzUsIDB4Q0EsIDB4ODMsIDB4ODQsIDB4RTMsIDB4RTIsIDB4NTgsIDB4RUIsIDB4RUIsIDB4OEQsIDB4QzcsIDB4M0IsIDB4OUUsIDB4QjAsIDB4RDQsCisgICAgMHg3NCwgMHhGOSwgMHhDOSwgMHgwOSwgMHg1OCwgMHgxNSwgMHhDNCwgMHg0MywgMHgxOCwgMHgxRSwgMHgxRCwgMHg2RCwgMHhFMiwgMHhCMSwgMHhFNywgMHgyQSwKKyAgICAweDUwLCAweEM2LCAweDRGLCAweDMyLCAweDM5LCAweEFFLCAweEM4LCAweDlFLCAweDZDLCAweEZGLCAweEY3LCAweEQyLCAweEQ5LCAweEE2LCAweDEzLCAweDg1LAorICAgIDB4ODIsIDB4QTIsIDB4RjcsIDB4MEEsIDB4RjcsIDB4MkUsIDB4NTIsIDB4OTYsIDB4NDEsIDB4Q0UsIDB4ODQsIDB4MUUsIDB4NTQsIDB4NTMsIDB4NEEsIDB4NjMsCisgICAgMHgzNCwgMHhBMiwgMHg1NiwgMHgzQSwgMHhEMSwgMHhBRiwgMHg1MiwgMHhERiwgMHgzMywgMHgzOSwgMHgzNywgMHhCRCwgMHg3OCwgMHg1MiwgMHgwMSwgMHg5NSwKKyAgICAweDUyLCAweEExLCAweDM5LCAweEUwLCAweEVCLCAweDMzLCAweEM1LCAweDA1LCAweDVCLCAweDAyLCAweEI3LCAweEZFLCAweEE3LCAweDg5LCAweDdGLCAweEUyLAorICAgIDB4MzAsIDB4MjcsIDB4RjQsIDB4RDQsIDB4QkYsIDB4MDcsIDB4NDQsIDB4RjgsIDB4NkEsIDB4NTYsIDB4ODIsIDB4RTEsIDB4ODcsIDB4RTEsIDB4RkIsIDB4QkEsCisgICAgMHgwNiwgMHhEMSwgMHg3NSwgMHhCQiwgMHgzMiwgMHg2OSwgMHg2MSwgMHg2QiwgMHg0NSwgMHg2OCwgMHg4NywgMHgyQywgMHg0QywgMHhGMiwgMHhCRSwgMHhBRCwKKyAgICAweDI3LCAweEI3LCAweDdCLCAweDlFLCAweEIyLCAweDI0LCAweDE1LCAweDQ0LCAweDg5LCAweDJELCAweDJBLCAweEYyLCAweDEwLCAweEU1LCAweDBELCAweDYwLAorICAgIDB4NDQsIDB4QzgsIDB4MjUsIDB4MDMsIDB4QUQsIDB4QzksIDB4NjQsIDB4QUEsIDB4RDYsIDB4OTAsIDB4MDUsIDB4MTQsIDB4RDcsIDB4RkUsIDB4QkYsIDB4M0IsCisgICAgMHgwRiwgMHhEOCwgMHg3NiwgMHhEOSwgMHg3NiwgMHgyNCwgMHhFOCwgMHhBNSwgMHhGMSwgMHgwQywgMHhBQSwgMHg3OCwgMHg0RCwgMHhGMSwgMHg0MywgMHg4QSwKKyAgICAweDVFLCAweDhCLCAweDQwLCAweEMyLCAweDE1LCAweEQ5LCAweDNFLCAweDI5LCAweDc1LCAweDhGLCAweDhELCAweDYzLCAweDMyLCAweDRCLCAweEM0LCAweEZELAorICAgIDB4NEYsIDB4N0MsIDB4OUMsIDB4MzMsIDB4NkEsIDB4MjEsIDB4MTcsIDB4RTYsIDB4RjcsIDB4QTUsIDB4MDMsIDB4M0QsIDB4NjgsIDB4M0UsIDB4QzksIDB4MkEsCisgICAgMHg0NiwgMHhDQiwgMHhCMSwgMHg1RiwgMHg2OSwgMHg2NywgMHhEQywgMHgyOCwgMHhENywgMHhBOSwgMHgwRCwgMHgwOCwgMHhBQSwgMHg1NSwgMHg5QiwgMHhCMSwKKyAgICAweDUyLCAweDdCLCAweDIwLCAweDI4LCAweEMyLCAweDY3LCAweDc3LCAweEJBLCAweEIxLCAweEM0LCAweDgxLCAweDcwLCAweDVFLCAweERELCAweDQ2LCAweDg5LAorICAgIDB4MTYsIDB4QzksIDB4MTYsIDB4NUUsIDB4NzksIDB4MTYsIDB4RUMsIDB4N0MsIDB4NUMsIDB4NUIsIDB4NkIsIDB4MTUsIDB4NzQsIDB4MjgsIDB4RTQsIDB4QjcsCisgICAgMHhGQywgMHg1OSwgMHhCNywgMHgyMiwgMHhCNywgMHg1QywgMHg4RCwgMHg3QSwgMHhCMiwgMHg0RiwgMHhFNCwgMHgyOSwgMHgyRCwgMHhEMSwgMHgxMCwgMHhCRiwKKyAgICAweENBLCAweDkyLCAweDkwLCAweDg1LCAweDUxLCAweDc2LCAweDQ4LCAweDFELCAweDRGLCAweDdCLCAweDQwLCAweEMxLCAweEIyLCAweEVELCAweDkxLCAweDIwLAorICAgIDB4OTYsIDB4RDMsIDB4RDQsIDB4NDYsIDB4MTAsIDB4RDAsIDB4QTYsIDB4RjQsIDB4M0YsIDB4MEIsIDB4N0QsIDB4NkQsIDB4NkMsIDB4MDQsIDB4QzksIDB4OTQsCisgICAgMHgyMywgMHg5NywgMHgyRiwgMHhCRCwgMHg3NSwgMHgwNiwgMHg2OCwgMHg4NSwgMHhDQiwgMHgyRCwgMHhGRCwgMHhBOSwgMHhEMSwgMHhENSwgMHhEMiwgMHg5OCwKKyAgICAweDYwLCAweDc0LCAweEM4LCAweDFELCAweEFELCAweDhBLCAweDIxLCAweEQzLCAweDU0LCAweDhGLCAweDIwLCAweEJFLCAweDA2LCAweDNELCAweDM0LCAweEU0LAorICAgIDB4OTUsIDB4NzgsIDB4NTUsIDB4OEUsIDB4NzAsIDB4QzUsIDB4QjUsIDB4M0IsIDB4NjgsIDB4NTgsIDB4MkYsIDB4QzIsIDB4MTYsIDB4RUMsIDB4N0YsIDB4ODUsCisgICAgMHhDMCwgMHgwNSwgMHgyOCwgMHhCNywgMHhCRiwgMHgzMywgMHgzRiwgMHgwRCwgMHg4MywgMHhDNywgMHg5MywgMHgzNiwgMHg5NywgMHgyNCwgMHgxOCwgMHgwQSwKKyAgICAweDQzLCAweDI4LCAweEZGLCAweDkwLCAweEExLCAweDM4LCAweEY1LCAweENFLCAweDI3LCAweENBLCAweEQ3LCAweDQ3LCAweDQ2LCAweEJELCAweDQwLCAweDdBLAorICAgIDB4RjIsIDB4NDksIDB4MkQsIDB4NTYsIDB4MUIsIDB4QUQsIDB4REEsIDB4MDAsIDB4NTEsIDB4NzQsIDB4NDQsIDB4QTMsIDB4MDksIDB4MjUsIDB4RTcsIDB4QjksCisgICAgMHgxMywgMHhBOCwgMHg1MSwgMHhFRCwgMHhFRCwgMHhEQiwgMHhCMSwgMHg1NCwgMHhGQiwgMHg1RiwgMHgzOCwgMHgzMCwgMHgwRCwgMHg0QiwgMHg0QiwgMHg5MiwKKyAgICAweEI1LCAweDJCLCAweDQ1LCAweDVFLCAweDQxLCAweEZCLCAweDI3LCAweEM0LCAweDE3LCAweERGLCAweDgyLCAweDNELCAweDlDLCAweEQzLCAweEY5LCAweDhBLAorICAgIDB4MEUsIDB4NEEsIDB4MkYsIDB4QTEsIDB4NEQsIDB4RjQsIDB4N0MsIDB4MjYsIDB4RkIsIDB4OEEsIDB4QTksIDB4QkMsIDB4QjMsIDB4RTgsIDB4M0QsIDB4MTEsCisgICAgMHg1QSwgMHgyQiwgMHg5RCwgMHg3RCwgMHhEQSwgMHhFNywgMHg4NSwgMHgxOSwgMHg5RiwgMHg3OCwgMHg3MCwgMHg1QSwgMHg1QywgMHhERSwgMHg4OCwgMHg0MCwKKyAgICAweDhDLCAweDA5LCAweDVBLCAweDBBLCAweDJFLCAweDBDLCAweDZFLCAweEYyLCAweEZBLCAweDlBLCAweDAwLCAweEFDLCAweDJBLCAweDI5LCAweEIxLCAweDMwLAorICAgIDB4QjEsIDB4MTksIDB4MEEsIDB4MUUsIDB4MDEsIDB4NkMsIDB4MDIsIDB4MkYsIDB4NkYsIDB4MUQsIDB4REYsIDB4NzcsIDB4NDUsIDB4RjYsIDB4ODEsIDB4MUYsCisgICAgMHhCQywgMHgyRCwgMHg1NSwgMHgyRCwgMHgzMSwgMHhDOSwgMHgzNCwgMHg5QSwgMHhFMywgMHgwNCwgMHhDNywgMHhEMSwgMHgxRCwgMHhBMiwgMHhFMSwgMHg1RCwKKyAgICAweEQ0LCAweEZGLCAweDJGLCAweEQ1LCAweDc0LCAweDFCLCAweEFGLCAweDQ5LCAweEEzLCAweDJBLCAweEUyLCAweDMxLCAweDhELCAweDdFLCAweDNCLCAweDIxLAorICAgIDB4NjQsIDB4NTQsIDB4OEQsIDB4NTIsIDB4NjQsIDB4NTgsIDB4OTYsIDB4RkYsIDB4ODMsIDB4NEYsIDB4NDMsIDB4QTgsIDB4NEEsIDB4REQsIDB4QjAsIDB4RkUsCisgICAgMHhDNywgMHg0RiwgMHg4QywgMHhERCwgMHhBMywgMHgwMiwgMHgzMCwgMHhDQSwgMHhDMiwgMHhCMiwgMHg1OSwgMHgxNywgMHg1RCwgMHhCMywgMHhENywgMHgwQSwKKyAgICAweDY2LCAweDRELCAweEY2LCAweDdCLCAweDM4LCAweEEyLCAweDY3LCAweERBLCAweDM3LCAweDNDLCAweDY5LCAweEYwLCAweDg5LCAweEU1LCAweDU3LCAweEJBLAorICAgIDB4QUYsIDB4N0MsIDB4MEMsIDB4NjQsIDB4M0EsIDB4NUIsIDB4OEQsIDB4RDUsIDB4MzMsIDB4RTQsIDB4QkMsIDB4RkQsIDB4NDUsIDB4NDQsIDB4MDQsIDB4MjMsCisgICAgMHhEQiwgMHgwMywgMHgzRCwgMHhDRCwgMHhBMSwgMHhBOCwgMHg2QSwgMHhFNiwgMHg5RSwgMHhEQiwgMHgxRCwgMHhCRiwgMHgxMCwgMHhCQiwgMHgzMiwgMHhEOCwKKyAgICAweDZBLCAweDQ3LCAweERCLCAweDgzLCAweDI0LCAweEU0LCAweDFCLCAweDRDLCAweEMzLCAweERFLCAweDVCLCAweDNELCAweEQ1LCAweDFFLCAweDY5LCAweDUxLAorICAgIDB4QTMsIDB4OTQsIDB4RkYsIDB4OTcsIDB4NTQsIDB4NDQsIDB4REYsIDB4MjAsIDB4NDEsIDB4RDgsIDB4RTIsIDB4RkUsIDB4NzIsIDB4QzcsIDB4MEIsIDB4OTksCisgICAgMHgwQiwgMHgxRCwgMHg0OSwgMHgwOSwgMHhBOSwgMHhCRSwgMHhFNCwgMHg2NiwgMHhEMSwgMHgxNiwgMHg0OSwgMHg4QSwgMHhFOSwgMHhCRCwgMHg3RCwgMHhFRiwKKyAgICAweENGLCAweEUyLCAweDY5LCAweDJBLCAweDUxLCAweDI4LCAweENDLCAweEQ2LCAweDgwLCAweEM3LCAweENFLCAweDlDLCAweDlFLCAweDIwLCAweDFELCAweDQyLAorICAgIDB4MDAsIDB4NUYsIDB4M0MsIDB4Q0MsIDB4MEIsIDB4MTAsIDB4NDAsIDB4RTMsIDB4N0EsIDB4QjYsIDB4MkEsIDB4MzQsIDB4QjYsIDB4NDQsIDB4NTAsIDB4NkYsCisgICAgMHg5QiwgMHg2RSwgMHhDNSwgMHhFNSwgMHhFMSwgMHg5NCwgMHgwRCwgMHgwQywgMHg5QiwgMHhGNywgMHgzNSwgMHg5MSwgMHhGRCwgMHhDRSwgMHg2NSwgMHgxQSwKKyAgICAweDc5LCAweEUxLCAweDIwLCAweDY5LCAweEFELCAweEI0LCAweDkyLCAweEMyLCAweDU4LCAweDg1LCAweEY5LCAweDQ1LCAweDFDLCAweDk4LCAweDQ2LCAweEM3LAorICAgIDB4MjMsIDB4QTQsIDB4REQsIDB4ODEsIDB4N0MsIDB4OTMsIDB4ODEsIDB4NTUsIDB4MUQsIDB4NDcsIDB4N0IsIDB4MjMsIDB4MTgsIDB4QjQsIDB4N0QsIDB4RkYsCisgICAgMHgwMywgMHhBNSwgMHhFMCwgMHg3OCwgMHhFMywgMHg1NywgMHhBMywgMHgxNywgMHhCMywgMHhCMSwgMHgwMSwgMHg4OCwgMHgwMywgMHhBOSwgMHgxMCwgMHgwQiwKKyAgICAweDM1LCAweEZFLCAweDY3LCAweEZBLCAweDY3LCAweDZGLCAweEQzLCAweEY1LCAweDI1LCAweENCLCAweDc1LCAweEEwLCAweDRGLCAweDM5LCAweEQ2LCAweDVCLAorICAgIDB4RDAsIDB4NjUsIDB4RDcsIDB4QTgsIDB4NzcsIDB4QkIsIDB4RDgsIDB4NjAsIDB4QUYsIDB4MkIsIDB4OUQsIDB4MzcsIDB4MTksIDB4RkEsIDB4ODMsIDB4RjgsCisgICAgMHg1MiwgMHg1NywgMHhEQSwgMHgyRCwgMHhFRiwgMHhCQywgMHgxNywgMHhBQSwgMHhDNiwgMHg5NywgMHhGNCwgMHhDNSwgMHhFRiwgMHgxNiwgMHg4MSwgMHhBNywKKyAgICAweEJGLCAweDI3LCAweDQ5LCAweEVBLCAweDdBLCAweDIzLCAweDZGLCAweDMxLCAweDZELCAweDYyLCAweDVCLCAweEI2LCAweEYzLCAweDYxLCAweEUxLCAweEZBLAorICAgIDB4ODcsIDB4NzIsIDB4RTgsIDB4RTEsIDB4MEMsIDB4ODksIDB4NkIsIDB4NTMsIDB4RjAsIDB4N0YsIDB4MDksIDB4OUQsIDB4N0UsIDB4MUQsIDB4OEMsIDB4MDIsCisgICAgMHhGRSwgMHgyOSwgMHhBQSwgMHhCRCwgMHg2QywgMHhCMSwgMHg2OCwgMHg2NywgMHhDQywgMHhBNiwgMHhFQSwgMHhBRSwgMHhBOSwgMHg4NCwgMHhERCwgMHhDNCwKKyAgICAweDQ0LCAweEY3LCAweDJFLCAweDIyLCAweDhDLCAweEE1LCAweDA3LCAweEU3LCAweEVFLCAweEU1LCAweEM2LCAweEI1LCAweEYzLCAweDVBLCAweDQxLCAweEQ0LAorICAgIDB4MDIsIDB4MkEsIDB4RTYsIDB4MUUsIDB4NzksIDB4NUMsIDB4NEIsIDB4MUIsIDB4RUQsIDB4OUYsIDB4MkEsIDB4QkEsIDB4QjYsIDB4MEUsIDB4OUIsIDB4QUIsCisgICAgMHg4MywgMHgyRCwgMHhGMCwgMHg4NCwgMHgzNSwgMHg4MywgMHhBMiwgMHhGNCwgMHgyQywgMHhCNiwgMHgyRiwgMHg0QywgMHhFOSwgMHg4QiwgMHhGNiwgMHhBNCwKKyAgICAweDVDLCAweDhBLCAweEVDLCAweDAxLCAweDlBLCAweDJFLCAweDgwLCAweEMwLCAweDZDLCAweDVCLCAweEFDLCAweDkyLCAweDA3LCAweEFCLCAweDkzLCAweDJELAorICAgIDB4NUQsIDB4NzcsIDB4N0EsIDB4QTMsIDB4QTEsIDB4REIsIDB4OEYsIDB4MDUsIDB4NTEsIDB4RDksIDB4OTIsIDB4OTgsIDB4MUUsIDB4RDEsIDB4MjMsIDB4MDEsCisgICAgMHhFQywgMHg3RSwgMHhCNywgMHhCOCwgMHg0RiwgMHhBNywgMHhDRCwgMHhDQywgMHg1RiwgMHg3NiwgMHg2NCwgMHhERCwgMHgwNiwgMHhBOSwgMHhDOSwgMHg5OCwKKyAgICAweEQyLCAweDNDLCAweEI4LCAweDA2LCAweDRCLCAweDc5LCAweDI4LCAweDlFLCAweDE0LCAweDEwLCAweEZCLCAweDM5LCAweERDLCAweEY5LCAweEUxLCAweEU1LAorICAgIDB4MjcsIDB4RkIsIDB4ODksIDB4OEMsIDB4NjYsIDB4QjYsIDB4RkUsIDB4QzEsIDB4MTMsIDB4MEYsIDB4N0MsIDB4QUEsIDB4NkEsIDB4MDIsIDB4NDUsIDB4QjEsCisgICAgMHgxOCwgMHhEOCwgMHgzQSwgMHgyQywgMHg5NCwgMHgwOSwgMHg4QiwgMHg2NiwgMHhFRCwgMHhFOSwgMHhENywgMHg1RSwgMHhBMiwgMHg0OCwgMHgwMSwgMHg4RCwKKyAgICAweDhELCAweEM3LCAweDA1LCAweDZBLCAweEQzLCAweDY3LCAweDA3LCAweEZDLCAweDIyLCAweDI4LCAweEU4LCAweDBGLCAweENELCAweEZGLCAweDEyLCAweEQ1LAorICAgIDB4RUQsIDB4NjQsIDB4M0YsIDB4RTUsIDB4ODksIDB4MDgsIDB4NDEsIDB4MkMsIDB4NDksIDB4NEQsIDB4MDcsIDB4N0QsIDB4RjgsIDB4MkMsIDB4MjgsIDB4QjUsCisgICAgMHgyRiwgMHhDQiwgMHhGNiwgMHhDMCwgMHg2OCwgMHhEQiwgMHgwRSwgMHhGRiwgMHg5MiwgMHgwNiwgMHhDQywgMHgxNSwgMHgxNywgMHhERCwgMHhBNywgMHhGNCwKKyAgICAweEE5LCAweDdDLCAweDQ5LCAweEZGLCAweDkxLCAweDhCLCAweEJFLCAweEE1LCAweERDLCAweDQzLCAweDVCLCAweEQ5LCAweDE3LCAweDE3LCAweDRBLCAweEJDLAorICAgIDB4MjcsIDB4QUMsIDB4OTAsIDB4QzQsIDB4QzcsIDB4NjgsIDB4OUYsIDB4ODQsIDB4MjksIDB4NEUsIDB4NTIsIDB4RjQsIDB4NkQsIDB4MjksIDB4MzAsIDB4QTcsCisgICAgMHhCNCwgMHg4NywgMHg0MiwgMHg0RiwgMHg5MywgMHgxRCwgMHg3MSwgMHg3QSwgMHhDNCwgMHg5NywgMHg3QywgMHhFQiwgMHhCMSwgMHg1NSwgMHhEQSwgMHg5NSwKKyAgICAweEE1LCAweDQ4LCAweEM4LCAweEEzLCAweEZGLCAweDJFLCAweEUwLCAweDJGLCAweDVCLCAweEUxLCAweEEzLCAweDJBLCAweDkzLCAweDJBLCAweDM0LCAweDMwLAorICAgIDB4MTksIDB4NjMsIDB4NDUsIDB4QjEsIDB4N0QsIDB4NjgsIDB4OTUsIDB4MjMsIDB4Q0QsIDB4RTEsIDB4NzksIDB4MUIsIDB4NEQsIDB4MTAsIDB4NDUsIDB4MEMsCisgICAgMHg5QiwgMHhGMywgMHg3QSwgMHgxMywgMHg3OCwgMHhDMSwgMHgwNiwgMHgwOSwgMHg3RSwgMHgyNCwgMHhBRSwgMHhERSwgMHhCNywgMHhFMCwgMHg5MSwgMHgxMiwKKyAgICAweDRDLCAweDBDLCAweEEzLCAweDBGLCAweEE5LCAweEZFLCAweEI1LCAweDJFLCAweDEzLCAweDE2LCAweDg3LCAweDlGLCAweDg5LCAweEJELCAweDMzLCAweDcyLAorICAgIDB4RjksIDB4MzQsIDB4QkMsIDB4NTAsIDB4QTMsIDB4NjAsIDB4NDksIDB4RUQsIDB4NjUsIDB4MDQsIDB4RDMsIDB4QjcsIDB4OTQsIDB4OTUsIDB4OEQsIDB4RkEsCisgICAgMHhFOSwgMHhFNSwgMHg4QywgMHg2RiwgMHg3MiwgMHhFQiwgMHhFNiwgMHgyMSwgMHg3NywgMHg2RSwgMHhDRSwgMHg3NywgMHhFRSwgMHhGQywgMHhEQSwgMHg0RSwKKyAgICAweDkzLCAweERBLCAweDFFLCAweENELCAweEEzLCAweEIwLCAweEIxLCAweDQwLCAweDM3LCAweEM4LCAweDdCLCAweDNFLCAweEZGLCAweDhELCAweDk5LCAweEFGLAorICAgIDB4QjcsIDB4NzksIDB4MTgsIDB4NkQsIDB4RjYsIDB4QjAsIDB4N0UsIDB4QTEsIDB4RkQsIDB4MEYsIDB4NTUsIDB4OTgsIDB4NjUsIDB4Q0QsIDB4NzQsIDB4NjQsCisgICAgMHg0QywgMHg5NywgMHg2MywgMHg0OCwgMHhDMSwgMHgwQywgMHgyNCwgMHhCRSwgMHhDOSwgMHg5MiwgMHg4RSwgMHg4RiwgMHgxNSwgMHg2NiwgMHgwQSwgMHgwMiwKKyAgICAweDEzLCAweEMyLCAweDVCLCAweDlGLCAweEIyLCAweDAzLCAweEQxLCAweEMzLCAweDBBLCAweENFLCAweDU2LCAweDZFLCAweDI2LCAweEQxLCAweDU1LCAweDRFLAorICAgIDB4RkEsIDB4RTksIDB4Q0IsIDB4NDgsIDB4QTUsIDB4NzQsIDB4Q0MsIDB4NTksIDB4NTQsIDB4OTIsIDB4NDAsIDB4MTUsIDB4MDcsIDB4NUQsIDB4OTIsIDB4QUQsCisgICAgMHhDRiwgMHg3QywgMHg3NSwgMHgyRCwgMHgwQywgMHhFRSwgMHg1QiwgMHg3NSwgMHg5OSwgMHhCNSwgMHg2NiwgMHg5QiwgMHhDNiwgMHg2MiwgMHhBQywgMHg4NCwKKyAgICAweEM4LCAweDY5LCAweDUzLCAweEEzLCAweEQzLCAweEFDLCAweDY0LCAweDFGLCAweDNDLCAweDZCLCAweEQ0LCAweEI4LCAweDU3LCAweDc5LCAweDIwLCAweERCLAorICAgIDB4MjgsIDB4RDgsIDB4MEIsIDB4QjAsIDB4NDAsIDB4NzIsIDB4NzYsIDB4NDAsIDB4NTEsIDB4RUMsIDB4QkMsIDB4MzYsIDB4NEEsIDB4QzcsIDB4MDEsIDB4NTUsCisgICAgMHgxRCwgMHg3NiwgMHhFOCwgMHhCMywgMHhGNiwgMHg1QiwgMHgzOCwgMHg5QSwgMHgwMSwgMHhGRSwgMHgwMCwgMHhFMCwgMHg1QiwgMHhGNiwgMHgzRiwgMHg1RCwKKyAgICAweEMyLCAweDU1LCAweDBFLCAweDFBLCAweEI2LCAweEMxLCAweDg4LCAweDQzLCAweEI5LCAweEI4LCAweEU1LCAweERBLCAweEY5LCAweDZELCAweEJDLCAweDk2LAorICAgIDB4M0YsIDB4QzUsIDB4QjMsIDB4QzIsIDB4MTQsIDB4RkYsIDB4QjgsIDB4MjQsIDB4NzAsIDB4NEQsIDB4OEYsIDB4RjIsIDB4NjUsIDB4RDksIDB4NTIsIDB4RTIsCisgICAgMHg2RiwgMHg5NSwgMHg0NywgMHgwRiwgMHhFRiwgMHhEMywgMHhCRCwgMHhGMCwgMHg5MywgMHhGNiwgMHg3NywgMHg3QywgMHg0QiwgMHhERCwgMHgwOSwgMHhBMSwKKyAgICAweDlELCAweDE0LCAweEI3LCAweDA5LCAweDc1LCAweDVBLCAweEQ1LCAweEU3LCAweENELCAweEI0LCAweDRFLCAweEM5LCAweEIyLCAweENDLCAweEVCLCAweEE3LAorICAgIDB4MTMsIDB4OEQsIDB4RjEsIDB4QkUsIDB4N0IsIDB4RjEsIDB4M0MsIDB4MDMsIDB4REMsIDB4QUUsIDB4NzMsIDB4NTAsIDB4QzEsIDB4NzksIDB4REMsIDB4MUUsCisgICAgMHhDMSwgMHgzQSwgMHhEMSwgMHgyMywgMHg5RCwgMHhGMSwgMHhGMywgMHg4NywgMHgxOCwgMHg1QiwgMHg5NywgMHgwOSwgMHg1MywgMHhGMiwgMHg2MSwgMHg4OSwKKyAgICAweDJELCAweEQ3LCAweDIwLCAweDNGLCAweDQwLCAweDg1LCAweDgzLCAweDFGLCAweDY5LCAweEIwLCAweEY3LCAweDA3LCAweDQ4LCAweDUwLCAweDJELCAweDJELAorICAgIDB4RUYsIDB4QTgsIDB4MUEsIDB4OUYsIDB4MEIsIDB4QzEsIDB4QTUsIDB4M0MsIDB4QUQsIDB4NDMsIDB4NTksIDB4OEEsIDB4QUEsIDB4NjQsIDB4NkMsIDB4NjAsCisgICAgMHg1MCwgMHg2NywgMHgzQiwgMHg1MiwgMHg2MSwgMHgzRCwgMHg4QiwgMHg3QiwgMHhBNSwgMHgyRCwgMHgwNCwgMHg3RSwgMHhFNSwgMHhFQiwgMHhFNywgMHg3OSwKKyAgICAweDY5LCAweEQxLCAweDA1LCAweEFFLCAweEEyLCAweDIwLCAweDdBLCAweEM3LCAweDY4LCAweDhBLCAweENBLCAweEJFLCAweEJGLCAweDI3LCAweDBDLCAweEIzLAorICAgIDB4NDksIDB4MDUsIDB4MTYsIDB4ODMsIDB4N0YsIDB4MjksIDB4ODcsIDB4MUUsIDB4NTgsIDB4OTQsIDB4NzYsIDB4RUEsIDB4RUEsIDB4QzUsIDB4NDMsIDB4M0IsCisgICAgMHhCMywgMHgxNywgMHhCNiwgMHg0MSwgMHgzQywgMHg1OSwgMHgwMywgMHgyMCwgMHg4MywgMHg3OCwgMHg1NywgMHhEOCwgMHg5QSwgMHg2OSwgMHgyQywgMHhFRSwKKyAgICAweDI3LCAweENDLCAweEMxLCAweEFBLCAweDdGLCAweDUyLCAweDNBLCAweDgxLCAweDA0LCAweEMzLCAweENELCAweDY0LCAweEMwLCAweEFGLCAweENGLCAweEY4LAorICAgIDB4QjIsIDB4MzQsIDB4OEEsIDB4OTQsIDB4QkQsIDB4RjcsIDB4ODMsIDB4MEQsIDB4MTYsIDB4RTcsIDB4QjAsIDB4NDcsIDB4QTIsIDB4RkEsIDB4RDYsIDB4QTcsCisgICAgMHgzRSwgMHhERiwgMHhFMSwgMHgzQSwgMHhCQSwgMHg4NywgMHhBNywgMHhGMywgMHg4QywgMHg1QiwgMHhCMiwgMHgyOCwgMHg4OCwgMHg0QSwgMHgxMywgMHg2OSwKKyAgICAweDFDLCAweEVGLCAweDA3LCAweEFFLCAweEM0LCAweENFLCAweDk1LCAweDBELCAweDQ5LCAweDFFLCAweDExLCAweDk2LCAweDc5LCAweDcyLCAweEVCLCAweEE1LAorICAgIDB4M0UsIDB4ODYsIDB4NkIsIDB4ODAsIDB4RjgsIDB4RTIsIDB4QUYsIDB4MjgsIDB4NzAsIDB4MjIsIDB4RTAsIDB4MDcsIDB4OTgsIDB4RDksIDB4RTUsIDB4MEEsCisgICAgMHg0NSwgMHhEMSwgMHg5QSwgMHhEOSwgMHg4NiwgMHg4NSwgMHhFRSwgMHg5MiwgMHhDQywgMHg5QiwgMHgzQSwgMHhCNiwgMHhGRSwgMHgzRiwgMHgxNywgMHg1OSwKKyAgICAweDUzLCAweEUxLCAweERBLCAweEYwLCAweDdBLCAweDNCLCAweDI4LCAweEQ2LCAweDI4LCAweEZELCAweEEyLCAweEU2LCAweDQ5LCAweEJBLCAweDY4LCAweDk5LAorICAgIDB4MzIsIDB4ODksIDB4NzMsIDB4QjEsIDB4ODcsIDB4QTgsIDB4M0UsIDB4ODQsIDB4NzAsIDB4RTksIDB4RDQsIDB4MjIsIDB4MjQsIDB4ODksIDB4MjAsIDB4MDEsCisgICAgMHhBRiwgMHgxQiwgMHhEOSwgMHhCNSwgMHg1MSwgMHhBNiwgMHhGQiwgMHg2NywgMHgyNiwgMHg5QSwgMHg4OSwgMHg0NywgMHg4NSwgMHg1MiwgMHhCNiwgMHgwQiwKKyAgICAweEQ0LCAweDZCLCAweEVFLCAweEY0LCAweEVGLCAweDQ0LCAweEQ4LCAweDI3LCAweDc0LCAweEJBLCAweDFFLCAweDNDLCAweDQ1LCAweDY4LCAweEZGLCAweDkzLAorICAgIDB4REUsIDB4NEYsIDB4MDMsIDB4QTcsIDB4QzEsIDB4QjksIDB4MTEsIDB4RDMsIDB4MjcsIDB4RUIsIDB4NzgsIDB4NDAsIDB4NjgsIDB4RjUsIDB4MUQsIDB4NzgsCisgICAgMHhFOSwgMHgyNCwgMHg0NywgMHgzRSwgMHg4MCwgMHg4NywgMHhGNywgMHhFMSwgMHg4NywgMHhEQSwgMHhBMCwgMHhFMywgMHg3OSwgMHhBNiwgMHg2MSwgMHg4MCwKKyAgICAweEZELCAweDFBLCAweEVCLCAweDAzLCAweDdGLCAweEU5LCAweDUwLCAweDAwLCAweEQzLCAweDFFLCAweEJDLCAweDZELCAweDY1LCAweEEyLCAweEQ1LCAweDA5LAorICAgIDB4NTMsIDB4M0UsIDB4NjAsIDB4NTQsIDB4NkQsIDB4RDAsIDB4MkUsIDB4MDEsIDB4MDQsIDB4QTYsIDB4MTMsIDB4RUUsIDB4QzAsIDB4NzIsIDB4OEEsIDB4NjYsCisgICAgMHgwOSwgMHg5MSwgMHg1NiwgMHg4NCwgMHg0MCwgMHhGQywgMHg4RCwgMHgzNSwgMHgwMSwgMHhFMiwgMHgxMywgMHg3NiwgMHg0RSwgMHg2MywgMHhDRSwgMHhFOCwKKyAgICAweEYwLCAweEQ5LCAweDBGLCAweDA5LCAweEJBLCAweDE5LCAweDQ0LCAweDRCLCAweDQ0LCAweDc5LCAweEFCLCAweEY1LCAweEUyLCAweDQ4LCAweDkyLCAweDNGLAorICAgIDB4RDksIDB4MTYsIDB4NTcsIDB4Q0EsIDB4OTQsIDB4ODIsIDB4OUUsIDB4RkUsIDB4MDIsIDB4MjQsIDB4OTMsIDB4QUUsIDB4RjIsIDB4RjMsIDB4MkIsIDB4Q0UsCisgICAgMHgwQSwgMHgxNywgMHg5MSwgMHg1RCwgMHg5MCwgMHg5NywgMHg3NCwgMHgxMywgMHg1OSwgMHg4QiwgMHgxNiwgMHhCNCwgMHg2NSwgMHhEMiwgMHhGRiwgMHg1QywKKyAgICAweDkxLCAweDM1LCAweEI4LCAweDZELCAweEEwLCAweEVBLCAweENCLCAweDA3LCAweEQyLCAweDg4LCAweDZFLCAweDhDLCAweEYxLCAweEMzLCAweDlDLCAweDZFLAorICAgIDB4MjUsIDB4REMsIDB4QzQsIDB4MTYsIDB4NzMsIDB4MkIsIDB4RUEsIDB4ODcsIDB4QUMsIDB4NjAsIDB4N0IsIDB4MEQsIDB4NTAsIDB4RkYsIDB4RTgsIDB4MjQsCisgICAgMHhCMiwgMHg3NywgMHhFRiwgMHhGRCwgMHg1RCwgMHg5MywgMHgxNiwgMHg2MiwgMHhGNSwgMHg0NywgMHgxNywgMHg1QiwgMHgzRSwgMHgwQiwgMHg1NSwgMHg5MywKKyAgICAweENELCAweDA0LCAweENELCAweEIyLCAweDUxLCAweEZDLCAweDc4LCAweDBBLCAweDRFLCAweEFELCAweDA3LCAweDQ2LCAweEMzLCAweDY2LCAweEU1LCAweEE2LAorICAgIDB4QjcsIDB4RTQsIDB4RTIsIDB4NzEsIDB4OTksIDB4QTgsIDB4NDQsIDB4NUIsIDB4RDYsIDB4M0QsIDB4NjMsIDB4N0EsIDB4M0EsIDB4NEYsIDB4MTUsIDB4NkUsCisgICAgMHgzRSwgMHgwNywgMHgyMywgMHhEQiwgMHhCRiwgMHhENiwgMHg3OCwgMHgyQiwgMHg1MSwgMHg3MywgMHhDRiwgMHg0OCwgMHhCMywgMHgyQywgMHg2QSwgMHhCNiwKKyAgICAweDhBLCAweDNELCAweDVELCAweDI1LCAweEE3LCAweDcwLCAweDhELCAweDVBLCAweDQ0LCAweDJELCAweDFCLCAweDI0LCAweDRDLCAweDI3LCAweEFBLCAweDAyLAorICAgIDB4RTMsIDB4NTcsIDB4NzksIDB4QTEsIDB4NzQsIDB4MEYsIDB4NzMsIDB4NUYsIDB4RDIsIDB4MDksIDB4NjQsIDB4RTcsIDB4MjYsIDB4RTYsIDB4QzMsIDB4QTQsCisgICAgMHgxNSwgMHg5MCwgMHgxMiwgMHg2OCwgMHg1NCwgMHg0QSwgMHhBRiwgMHhBNSwgMHgwMSwgMHgwQywgMHgxMCwgMHgxRCwgMHgyMiwgMHhGMywgMHg3OSwgMHhBRiwKKyAgICAweEVELCAweEE0LCAweDY4LCAweDU4LCAweDRCLCAweDk3LCAweDZGLCAweEU5LCAweDJCLCAweDU5LCAweDRCLCAweDYxLCAweDkxLCAweDg3LCAweDBELCAweDMzLAorICAgIDB4MkMsIDB4NzUsIDB4QUEsIDB4MTksIDB4OTMsIDB4ODEsIDB4QzEsIDB4RDAsIDB4NUQsIDB4QTYsIDB4QTQsIDB4RTQsIDB4ODUsIDB4MUMsIDB4QkMsIDB4MzIsCisgICAgMHhBNywgMHhCNSwgMHgzNiwgMHgzRiwgMHgyNiwgMHg1NywgMHhBQiwgMHhBQSwgMHhFQywgMHg5RiwgMHhDOCwgMHg3NCwgMHgwOCwgMHg4MywgMHg0QiwgMHgwOSwKKyAgICAweEUxLCAweDIyLCAweDk0LCAweEQ1LCAweEQ4LCAweEI0LCAweEFBLCAweDkwLCAweEZELCAweDM0LCAweDE0LCAweDI3LCAweENBLCAweDZCLCAweDlBLCAweDVBLAorICAgIDB4MzAsIDB4MkQsIDB4NzUsIDB4NkQsIDB4MDEsIDB4NkQsIDB4MTcsIDB4Q0IsIDB4RUYsIDB4QTYsIDB4M0YsIDB4MzYsIDB4RTIsIDB4QjIsIDB4NkIsIDB4ODEsCisgICAgMHgzRSwgMHhBRiwgMHg4QywgMHg5MiwgMHg3MCwgMHg0MywgMHhBMSwgMHgxRCwgMHgwOSwgMHg2MSwgMHg3MSwgMHg2QiwgMHgwRSwgMHg1MywgMHgwRiwgMHg2QiwKKyAgICAweDAwLCAweDMyLCAweEFDLCAweDc4LCAweENDLCAweDJELCAweEM5LCAweDQyLCAweDBDLCAweDcwLCAweDNGLCAweERGLCAweDUyLCAweDVDLCAweEQ0LCAweDQzLAorICAgIDB4QzcsIDB4QUMsIDB4MUMsIDB4MTcsIDB4RTIsIDB4QzAsIDB4NzUsIDB4OEIsIDB4RjgsIDB4QzgsIDB4RDIsIDB4RTEsIDB4NjksIDB4QjEsIDB4ODYsIDB4MDcsCisgICAgMHg4MiwgMHgzNywgMHhCOSwgMHg0QSwgMHg1RiwgMHhDNiwgMHg0RiwgMHg5NSwgMHg4NiwgMHgxQiwgMHg2RCwgMHgyQiwgMHhFQiwgMHgyMSwgMHhEMiwgMHg4NCwKKyAgICAweEQ2LCAweDRCLCAweEZBLCAweEJGLCAweDU0LCAweDQxLCAweDM0LCAweEE4LCAweDVDLCAweDg2LCAweDIzLCAweDNBLCAweDNELCAweEI2LCAweDBDLCAweDk3LAorICAgIDB4MjgsIDB4OEIsIDB4QkIsIDB4RTgsIDB4RjYsIDB4QzAsIDB4NjgsIDB4RTUsIDB4ODMsIDB4MjEsIDB4NjAsIDB4RjAsIDB4RTgsIDB4OEQsIDB4ODAsIDB4RkEsCisgICAgMHgxRiwgMHhBQywgMHgzMiwgMHhDNiwgMHgxRCwgMHgxNywgMHhEMiwgMHgzRSwgMHg1NywgMHhFQiwgMHg4MSwgMHg2OCwgMHgyOCwgMHgwQiwgMHgzNiwgMHg2RiwKKyAgICAweDNDLCAweDA4LCAweEEzLCAweEVCLCAweEVFLCAweEYwLCAweDI1LCAweDI0LCAweEIyLCAweDcwLCAweEM1LCAweDYyLCAweEE5LCAweEM4LCAweDQ4LCAweERDLAorICAgIDB4QTEsIDB4MDIsIDB4NDksIDB4MEUsIDB4RTgsIDB4MTksIDB4QkUsIDB4RkMsIDB4OEMsIDB4OEUsIDB4QzQsIDB4QkUsIDB4OUQsIDB4NkEsIDB4REIsIDB4NzAsCisgICAgMHhEQywgMHg3OCwgMHhFMSwgMHhENCwgMHhEMSwgMHhBNCwgMHhDOCwgMHg1NywgMHgzRSwgMHhDNywgMHg0MCwgMHhBNiwgMHhGMCwgMHhBOSwgMHg4MywgMHgxMiwKKyAgICAweDc2LCAweDUyLCAweDRELCAweEIwLCAweEJCLCAweEJBLCAweEU0LCAweDg1LCAweDkzLCAweEJGLCAweDZELCAweDcxLCAweDJDLCAweDE4LCAweDU3LCAweERFLAorICAgIDB4NTcsIDB4MjQsIDB4OEUsIDB4MzMsIDB4RDcsIDB4RjksIDB4MzYsIDB4RTYsIDB4M0IsIDB4NjMsIDB4M0IsIDB4NzEsIDB4QjYsIDB4RjUsIDB4OUMsIDB4NEQsCisgICAgMHgyQywgMHhDMywgMHg1NSwgMHg3QiwgMHhEQiwgMHhEOSwgMHgxRiwgMHg3RCwgMHhDNywgMHgyQiwgMHg0RSwgMHg2NSwgMHgzQywgMHhENCwgMHhGRCwgMHhFQywKKyAgICAweDAxLCAweEE2LCAweEQ4LCAweERCLCAweDRGLCAweDBBLCAweDc2LCAweEYyLCAweDNFLCAweDNFLCAweDE2LCAweEI1LCAweEU5LCAweEJCLCAweEU3LCAweDhCLAorICAgIDB4REYsIDB4OEQsIDB4NjAsIDB4ODAsIDB4NzksIDB4QjUsIDB4QzYsIDB4NzksIDB4MUUsIDB4OUEsIDB4REIsIDB4NTMsIDB4QjQsIDB4ODAsIDB4NkMsIDB4OUMsCisgICAgMHhDOSwgMHg5NywgMHg3QywgMHgwRSwgMHhBRiwgMHg0MSwgMHhGOSwgMHg0QywgMHg1RSwgMHhBNCwgMHhBNCwgMHg0NiwgMHg4NSwgMHhGMiwgMHg5QSwgMHhBRSwKKyAgICAweEZFLCAweEM1LCAweEIwLCAweEI3LCAweDE2LCAweDA3LCAweDAzLCAweDg5LCAweDI3LCAweDNGLCAweDUzLCAweDkyLCAweDNFLCAweDg1LCAweEUzLCAweDIzLAorICAgIDB4RTQsIDB4NzIsIDB4MUYsIDB4RDcsIDB4NzcsIDB4Q0YsIDB4M0UsIDB4NTcsIDB4QjMsIDB4MUYsIDB4RDgsIDB4NUQsIDB4MEMsIDB4RTIsIDB4RDEsIDB4RDYsCisgICAgMHhDRiwgMHgyMCwgMHhCMCwgMHhFMSwgMHg4MCwgMHgzOCwgMHhGNiwgMHhFRiwgMHg5MSwgMHhEMywgMHhENywgMHgyRSwgMHhERSwgMHhBMywgMHhFQSwgMHg3NywKKyAgICAweDQ0LCAweEFGLCAweERDLCAweDlBLCAweDEzLCAweDE5LCAweDc1LCAweDI4LCAweDg1LCAweDYxLCAweEU1LCAweDQwLCAweDhDLCAweEUzLCAweEY5LCAweDVBLAorICAgIDB4RUMsIDB4MkEsIDB4NUMsIDB4MjksIDB4MTIsIDB4N0IsIDB4MTMsIDB4QkMsIDB4MjEsIDB4NEQsIDB4NzksIDB4RjgsIDB4RUYsIDB4RDQsIDB4RUIsIDB4QTIsCisgICAgMHg5NSwgMHg0MywgMHhDNSwgMHhCNSwgMHg5RSwgMHg1QiwgMHgxMSwgMHhBQiwgMHhFMSwgMHg5RSwgMHhCMywgMHg3NiwgMHhGRiwgMHgwNSwgMHhENSwgMHg0MiwKKyAgICAweDRGLCAweDkyLCAweDQ3LCAweDU4LCAweDdBLCAweEUyLCAweDRELCAweDU4LCAweDhGLCAweDk1LCAweEM0LCAweERDLCAweEMzLCAweEQ0LCAweDRBLCAweDc4LAorICAgIDB4OEEsIDB4QjcsIDB4OUIsIDB4NUQsIDB4MkQsIDB4NTEsIDB4RkEsIDB4NEIsIDB4MTAsIDB4N0IsIDB4OTIsIDB4RjAsIDB4NjYsIDB4RUMsIDB4N0MsIDB4MDEsCisgICAgMHhDQSwgMHhFRSwgMHg1RiwgMHhCOCwgMHg0NSwgMHg3OCwgMHg1NCwgMHg4NywgMHhCOCwgMHhERiwgMHhERSwgMHg4MCwgMHhFOCwgMHhBRCwgMHgzQSwgMHhCNywKKyAgICAweEE2LCAweEIyLCAweDYwLCAweEM0LCAweEEwLCAweEUwLCAweDQyLCAweDEzLCAweDM4LCAweEVELCAweEZGLCAweEI0LCAweDc3LCAweEE4LCAweEY0LCAweEU3LAorICAgIDB4RjcsIDB4RTgsIDB4NzEsIDB4QUUsIDB4OTMsIDB4M0QsIDB4QTAsIDB4Q0UsIDB4QjUsIDB4NTUsIDB4QzksIDB4NUYsIDB4RTAsIDB4NjUsIDB4NEYsIDB4MkMsCisgICAgMHhENiwgMHgzMSwgMHg3QiwgMHg2MSwgMHg4RSwgMHg0NSwgMHgwMCwgMHgwMiwgMHg5NywgMHg0RiwgMHgwRiwgMHhCOSwgMHgwNSwgMHgwMywgMHhDNCwgMHhDMiwKKyAgICAweEJFLCAweDNDLCAweDRDLCAweDJDLCAweEI1LCAweDA0LCAweDIyLCAweDdGLCAweDdFLCAweDE2LCAweDNFLCAweEMxLCAweEM3LCAweEJELCAweDZBLCAweEVCLAorICAgIDB4MTAsIDB4QTYsIDB4MTUsIDB4NzgsIDB4NkMsIDB4NjYsIDB4NTUsIDB4N0QsIDB4RkEsIDB4RTAsIDB4MkIsIDB4RDAsIDB4ODgsIDB4QUIsIDB4ODAsIDB4NzEsCisgICAgMHg2RCwgMHgyQiwgMHhEOSwgMHhDMywgMHgzOSwgMHg3QSwgMHg2RiwgMHgzOSwgMHhDQywgMHhDMCwgMHgxNywgMHg3MywgMHhDOCwgMHg1OCwgMHgyMSwgMHg2MywKKyAgICAweEY1LCAweDdGLCAweDk5LCAweEY3LCAweEM3LCAweDQ2LCAweEZDLCAweDJCLCAweEUzLCAweDNCLCAweDY2LCAweDczLCAweDBFLCAweDkwLCAweDRBLCAweEMzLAorICAgIDB4NDgsIDB4Q0UsIDB4REIsIDB4MzksIDB4NDYsIDB4RjksIDB4RTksIDB4N0IsIDB4MzMsIDB4Q0QsIDB4OUIsIDB4OEIsIDB4M0UsIDB4MjEsIDB4NTUsIDB4MzUsCisgICAgMHhBRSwgMHg3MSwgMHhGRSwgMHhBNCwgMHgyRSwgMHhDOSwgMHhDOCwgMHhBMCwgMHgxRSwgMHg5NywgMHgxMCwgMHg2QSwgMHgyOSwgMHg5NSwgMHhGQywgMHhDRCwKKyAgICAweEUwLCAweEVDLCAweDM3LCAweDk1LCAweEZBLCAweDYxLCAweEI1LCAweDYyLCAweDVDLCAweEM1LCAweEVBLCAweERGLCAweDhELCAweEE3LCAweEMyLCAweEY3LAorICAgIDB4NEEsIDB4QzksIDB4MzQsIDB4MTUsIDB4QTQsIDB4OEMsIDB4NjMsIDB4QTUsIDB4MTYsIDB4MjUsIDB4NEYsIDB4QTksIDB4ODksIDB4RDcsIDB4MkQsIDB4NzcsCisgICAgMHgwRCwgMHg1RSwgMHhDMSwgMHgzMiwgMHgyQSwgMHg4NiwgMHg1NSwgMHg4MCwgMHg5NywgMHhEMSwgMHg4QywgMHg5OCwgMHgwNCwgMHg1QSwgMHg4OSwgMHhDOSwKKyAgICAweEQxLCAweDVGLCAweDAwLCAweDVFLCAweDI5LCAweDJDLCAweEVCLCAweDE3LCAweDk2LCAweDZBLCAweEVCLCAweDlBLCAweEVBLCAweDVGLCAweDJELCAweDk5LAorICAgIDB4M0QsIDB4NDcsIDB4Q0QsIDB4RkEsIDB4QTcsIDB4OEIsIDB4RkEsIDB4QjgsIDB4MTYsIDB4MUEsIDB4RTcsIDB4MDcsIDB4ODUsIDB4NDcsIDB4QjYsIDB4M0YsCisgICAgMHhCRCwgMHg5NiwgMHg0QywgMHhEMiwgMHhFOCwgMHhCRSwgMHg3OCwgMHhFMCwgMHhGRSwgMHhGOCwgMHhENywgMHg5RiwgMHgwNSwgMHhDMiwgMHhERiwgMHgyRiwKKyAgICAweDFELCAweDhDLCAweERDLCAweERGLCAweDRDLCAweDM2LCAweDA2LCAweEY1LCAweEQzLCAweEFELCAweEZDLCAweDgyLCAweEIzLCAweDdELCAweDQ3LCAweEUzLAorICAgIDB4RTYsIDB4MjYsIDB4RDcsIDB4QTgsIDB4QzEsIDB4QTgsIDB4RDcsIDB4NzMsIDB4NTUsIDB4MEQsIDB4OTksIDB4ODEsIDB4RTgsIDB4OTcsIDB4ODQsIDB4MjIsCisgICAgMHg1RCwgMHg5MywgMHg3QiwgMHg4MywgMHhFMywgMHgyNywgMHhFQSwgMHg2MCwgMHgwMywgMHgyRSwgMHhDOSwgMHg3MSwgMHhCQiwgMHgzMSwgMHhGMSwgMHg0QSwKKyAgICAweDRELCAweEVBLCAweDVCLCAweEFELCAweDI5LCAweDM3LCAweEFBLCAweDRGLCAweDZELCAweEVDLCAweEJCLCAweDAwLCAweDZBLCAweEQ5LCAweDk4LCAweERCLAorICAgIDB4MDgsIDB4NzIsIDB4OEEsIDB4OTQsIDB4QzgsIDB4OUMsIDB4MDMsIDB4QzUsIDB4MDIsIDB4NTQsIDB4NDYsIDB4QjUsIDB4MUUsIDB4MjUsIDB4RDEsIDB4NTAsCisgICAgMHgzQywgMHgzRSwgMHhFMCwgMHg1NSwgMHg4OSwgMHgyOCwgMHhDMCwgMHhFMywgMHgwOCwgMHgxQSwgMHgyNiwgMHg5QywgMHg0RCwgMHg3NCwgMHg1NywgMHgwOSwKKyAgICAweDM0LCAweEIzLCAweDJELCAweDIxLCAweEEwLCAweDRFLCAweDlCLCAweEIyLCAweDkzLCAweEMwLCAweDdBLCAweDUyLCAweEFDLCAweDBELCAweDJCLCAweEFBLAorICAgIDB4NUYsIDB4Q0YsIDB4OUUsIDB4OTQsIDB4ODgsIDB4MEQsIDB4Q0IsIDB4MzAsIDB4NzQsIDB4QzcsIDB4NkIsIDB4NzgsIDB4NUUsIDB4RUUsIDB4MjQsIDB4QzQsCisgICAgMHhBOCwgMHgwQiwgMHg4NCwgMHgyRCwgMHhENywgMHhFQywgMHgzMSwgMHhBOCwgMHhFMywgMHg2MiwgMHhDOCwgMHg0MywgMHg2QSwgMHgxMiwgMHgwRSwgMHg0NiwKKyAgICAweEVFLCAweDg2LCAweDMzLCAweDRCLCAweEY5LCAweEE2LCAweDUyLCAweDk2LCAweDZELCAweEExLCAweEQyLCAweDFDLCAweDUwLCAweEVDLCAweEVFLCAweDUzLAorICAgIDB4RTgsIDB4N0UsIDB4RDQsIDB4RTEsIDB4NDEsIDB4NzYsIDB4NkUsIDB4RjcsIDB4NjYsIDB4ODksIDB4NDYsIDB4QTYsIDB4QzksIDB4MDYsIDB4MzIsIDB4Q0MsCisgICAgMHgxMywgMHgyMywgMHg4MCwgMHhFOCwgMHgzRSwgMHg5MywgMHg1MiwgMHgwNSwgMHg3OCwgMHgxQSwgMHgwMiwgMHhBQSwgMHg1QywgMHgxMSwgMHhENywgMHhGMCwKKyAgICAweDM5LCAweDc3LCAweDA2LCAweDRGLCAweEIzLCAweDRCLCAweDhFLCAweDlELCAweDg0LCAweDAwLCAweDNBLCAweEVFLCAweDAzLCAweEZELCAweDQ4LCAweEJBLAorICAgIDB4QTcsIDB4MjMsIDB4NTksIDB4QkUsIDB4NDMsIDB4N0IsIDB4MkYsIDB4QTAsIDB4MjMsIDB4NkYsIDB4OUEsIDB4RTksIDB4QjAsIDB4QzIsIDB4ODQsIDB4MUEsCisgICAgMHg5RiwgMHg1QSwgMHgzOSwgMHgyMiwgMHhCNiwgMHg3OCwgMHgyMSwgMHg4NiwgMHhERCwgMHhFQywgMHgzNywgMHgyNCwgMHgxQywgMHhCMSwgMHhEOCwgMHg3QywKKyAgICAweDg4LCAweEFCLCAweEMzLCAweDlGLCAweEExLCAweDNDLCAweEJBLCAweEY4LCAweDFDLCAweDQzLCAweDQxLCAweEIyLCAweDEyLCAweDNDLCAweDE2LCAweDM4LAorICAgIDB4RDYsIDB4NTgsIDB4RkYsIDB4QkYsIDB4NzMsIDB4RUEsIDB4RkUsIDB4NjMsIDB4RTAsIDB4MzYsIDB4QTQsIDB4RTcsIDB4MzgsIDB4QTIsIDB4QTUsIDB4QjIsCisgICAgMHhFRiwgMHhFMCwgMHg3QiwgMHgzMiwgMHhDQywgMHgzNCwgMHgwQSwgMHgzMiwgMHgyMywgMHgxNCwgMHhDRSwgMHhFOSwgMHhEQywgMHhDNywgMHhGMSwgMHg4NSwKKyAgICAweDc5LCAweDE5LCAweDRCLCAweEMyLCAweDM5LCAweEM4LCAweDU3LCAweDJBLCAweERELCAweDE5LCAweDZELCAweDEwLCAweEM5LCAweDNFLCAweDM5LCAweDEzLAorICAgIDB4NUEsIDB4QzMsIDB4MzMsIDB4QzUsIDB4QjEsIDB4NkQsIDB4RDgsIDB4OEIsIDB4MzUsIDB4MTQsIDB4OUMsIDB4NjcsIDB4RTYsIDB4NTgsIDB4QzksIDB4MEMsCisgICAgMHhFNiwgMHhDNywgMHg1OSwgMHhDQSwgMHhBNywgMHhCNiwgMHgxMCwgMHg4QiwgMHg0NCwgMHgyRCwgMHg4RCwgMHgxMiwgMHhDMywgMHhDMywgMHhFRSwgMHg1OCwKKyAgICAweEI5LCAweEZBLCAweDYwLCAweEJELCAweEFCLCAweDI5LCAweEQ0LCAweEI5LCAweDg2LCAweEExLCAweDJELCAweDhGLCAweDYyLCAweEU0LCAweDE5LCAweDlBLAorICAgIDB4NzEsIDB4QzIsIDB4RjQsIDB4QTUsIDB4OTMsIDB4MDQsIDB4QkIsIDB4OEQsIDB4NjQsIDB4QjUsIDB4NDAsIDB4OEMsIDB4OEIsIDB4QTYsIDB4NTIsIDB4Q0UsCisgICAgMHhFMywgMHg5NSwgMHg1MywgMHhFQSwgMHgxNCwgMHgyMSwgMHg3QywgMHg2NCwgMHhDRSwgMHhDQSwgMHg2OSwgMHhFOSwgMHgzRiwgMHhEOSwgMHhCNywgMHhENCwKKyAgICAweEIzLCAweEIzLCAweEMyLCAweDgyLCAweDY0LCAweEEyLCAweDIzLCAweEM2LCAweEU2LCAweDhBLCAweDVGLCAweEZFLCAweEZBLCAweDA2LCAweEU2LCAweDVGLAorICAgIDB4QTIsIDB4ODIsIDB4M0IsIDB4NEUsIDB4ODksIDB4QUEsIDB4Q0YsIDB4Q0IsIDB4MTgsIDB4QTEsIDB4NjksIDB4NjUsIDB4OTMsIDB4QTgsIDB4MTksIDB4QzcsCisgICAgMHg3OCwgMHg2RiwgMHg5NCwgMHg5QSwgMHgyRiwgMHgxRiwgMHg1QiwgMHg0NywgMHgzMCwgMHgwNiwgMHhCRSwgMHg1OSwgMHg1RCwgMHg4NCwgMHhEQiwgMHhERiwKKyAgICAweEFDLCAweEFGLCAweDkxLCAweDhBLCAweDM5LCAweDI4LCAweEI0LCAweEExLCAweDY4LCAweDJELCAweDRGLCAweDM5LCAweDY0LCAweEMzLCAweDkyLCAweEI3LAorICAgIDB4MzEsIDB4MzgsIDB4QUUsIDB4ODcsIDB4RDEsIDB4Q0QsIDB4QjgsIDB4MTEsIDB4RDQsIDB4RjYsIDB4RUEsIDB4MDYsIDB4QjYsIDB4QjIsIDB4MjIsIDB4RTgsCisgICAgMHg0NiwgMHg3QywgMHhCMywgMHhDNCwgMHg5MywgMHhEMSwgMHgxOSwgMHgyRCwgMHhFRSwgMHg5QiwgMHhBQywgMHgxRSwgMHg5QywgMHhFRSwgMHg2QywgMHg4NSwKKyAgICAweDZGLCAweDM1LCAweEFDLCAweDk3LCAweDNFLCAweDk3LCAweEQwLCAweDUwLCAweDM4LCAweDU5LCAweEY4LCAweDVFLCAweEIwLCAweDNELCAweEFBLCAweDlFLAorICAgIDB4OEYsIDB4NzgsIDB4NTEsIDB4MDQsIDB4RTAsIDB4MDEsIDB4OEMsIDB4RjMsIDB4RTMsIDB4OUYsIDB4NTksIDB4MTEsIDB4N0QsIDB4NUYsIDB4QzksIDB4REIsCisgICAgMHhBMywgMHg5OSwgMHhBNiwgMHhFMiwgMHg2NSwgMHg5MCwgMHg3NSwgMHhERCwgMHhFQywgMHg1OSwgMHg2MCwgMHgxOSwgMHg3MCwgMHg2NiwgMHgxMiwgMHgwQiwKKyAgICAweDI3LCAweDI2LCAweEMyLCAweDNCLCAweDVCLCAweERCLCAweDZGLCAweDExLCAweDM5LCAweDA4LCAweERDLCAweEY0LCAweDE0LCAweDUxLCAweDA2LCAweEZFLAorICAgIDB4OUIsIDB4REIsIDB4MjIsIDB4MjUsIDB4MUUsIDB4MjUsIDB4NDMsIDB4OEQsIDB4RDUsIDB4RDAsIDB4RkIsIDB4NjgsIDB4RjMsIDB4NjUsIDB4RUEsIDB4OTcsCisgICAgMHgyMCwgMHhERCwgMHg2MCwgMHg3QiwgMHhCNCwgMHhFMCwgMHg5MCwgMHgyNCwgMHg2MiwgMHhGNiwgMHg4NCwgMHhGMCwgMHg0NywgMHhENiwgMHhCOSwgMHhFMywKKyAgICAweEI4LCAweDE2LCAweDZBLCAweERCLCAweEE3LCAweEY3LCAweEZELCAweEZDLCAweDc0LCAweDFGLCAweDhDLCAweEZELCAweDg4LCAweDRBLCAweEU5LCAweEVFLAorICAgIDB4RkUsIDB4Q0MsIDB4RTUsIDB4QTAsIDB4MkMsIDB4MUQsIDB4QUUsIDB4RDAsIDB4RjMsIDB4NTYsIDB4QkUsIDB4RDgsIDB4NDUsIDB4QzQsIDB4NDQsIDB4RUEsCisgICAgMHhENywgMHg3MSwgMHgzNCwgMHg3QywgMHgyQSwgMHgwQSwgMHgzRiwgMHhEMSwgMHhBOCwgMHhDQSwgMHhGMSwgMHg3RSwgMHg5QywgMHgzOSwgMHg2QiwgMHg1MSwKKyAgICAweEJELCAweERCLCAweDU2LCAweDg3LCAweEFDLCAweERGLCAweDMxLCAweEY5LCAweEMwLCAweDczLCAweERCLCAweEJDLCAweDBELCAweDFELCAweEQ3LCAweDhCLAorICAgIDB4QkIsIDB4NTAsIDB4M0IsIDB4RTcsIDB4QjUsIDB4RTksIDB4NkEsIDB4M0IsIDB4ODMsIDB4RjgsIDB4MjcsIDB4RTgsIDB4N0MsIDB4RDEsIDB4OEQsIDB4MTQsCisgICAgMHhERCwgMHg1QSwgMHhERiwgMHhEMSwgMHhCRSwgMHhCQSwgMHhGRCwgMHgzRSwgMHhGOCwgMHhBNCwgMHg4QSwgMHhFRCwgMHhBRCwgMHg4MiwgMHhGRCwgMHgyOCwKKyAgICAweDNGLCAweDQ2LCAweDFDLCAweDU2LCAweDcxLCAweDcxLCAweDcxLCAweEZCLCAweDFGLCAweEVCLCAweEU2LCAweDcyLCAweDEwLCAweDQwLCAweERCLCAweEEzLAorICAgIDB4NDAsIDB4RUEsIDB4MDYsIDB4NjMsIDB4NzQsIDB4RTcsIDB4QzMsIDB4QTksIDB4RTQsIDB4MDcsIDB4RkQsIDB4QTgsIDB4NUMsIDB4ODMsIDB4MTYsIDB4NjksCisgICAgMHhCNCwgMHg2QSwgMHhBRSwgMHg4NSwgMHhGQywgMHgzMiwgMHhERiwgMHg1OSwgMHg3MSwgMHhCQiwgMHg3QSwgMHhDMSwgMHhDMiwgMHgwRSwgMHhDMCwgMHg1QSwKKyAgICAweEExLCAweDFGLCAweDg4LCAweDZFLCAweEY0LCAweDc5LCAweEYyLCAweDRGLCAweEE1LCAweDg0LCAweDhCLCAweEE3LCAweDM5LCAweENDLCAweDZELCAweDQ0LAorICAgIDB4MzMsIDB4RDgsIDB4MUEsIDB4OUIsIDB4QUQsIDB4OEYsIDB4MTIsIDB4NDksIDB4NjMsIDB4OTMsIDB4QkIsIDB4NzAsIDB4QTcsIDB4OUQsIDB4NEEsIDB4NjksCisgICAgMHhEQywgMHgxOCwgMHgwOSwgMHhCOCwgMHhFRCwgMHhCMSwgMHg1MCwgMHgxMywgMHg1OSwgMHhFQSwgMHhEQywgMHg3QiwgMHhCRiwgMHg3RiwgMHg4MywgMHg0RiwKKyAgICAweEM3LCAweEZBLCAweDNCLCAweDQ0LCAweEVGLCAweEY5LCAweDRDLCAweEU5LCAweDcyLCAweDcwLCAweEQ3LCAweDI3LCAweEVDLCAweDgwLCAweDE4LCAweDJBLAorICAgIDB4NDUsIDB4NzEsIDB4ODcsIDB4OTksIDB4OUYsIDB4RTAsIDB4NzQsIDB4M0UsIDB4RTAsIDB4RTEsIDB4Q0QsIDB4RjYsIDB4NzYsIDB4RDksIDB4ODIsIDB4NkQsCisgICAgMHhGNSwgMHgwMSwgMHg5QywgMHgzMywgMHgxOSwgMHhCNywgMHgwQSwgMHgxRSwgMHgwNywgMHhDNywgMHgxMSwgMHg0QiwgMHhDMiwgMHg2NCwgMHgxNiwgMHgxNCwKKyAgICAweDlGLCAweEU2LCAweEQyLCAweDY1LCAweDY0LCAweDlFLCAweENBLCAweDI5LCAweEI5LCAweEMxLCAweEExLCAweDY0LCAweDRBLCAweDM5LCAweDM2LCAweEQ3LAorICAgIDB4RUQsIDB4QzQsIDB4Q0EsIDB4NEQsIDB4OTMsIDB4QjcsIDB4RTcsIDB4NTIsIDB4NkUsIDB4QzQsIDB4MkEsIDB4ODksIDB4MTYsIDB4MTQsIDB4QzIsIDB4MjYsCisgICAgMHhGOSwgMHhENiwgMHg2OSwgMHhBNiwgMHg4QiwgMHg1MiwgMHgwNCwgMHhBMywgMHhGOSwgMHhCNSwgMHgzNCwgMHg5NywgMHg5OCwgMHgwRiwgMHg3NywgMHgwMSwKKyAgICAweDAyLCAweEQ3LCAweDNELCAweDc1LCAweDA4LCAweEU3LCAweDkwLCAweDFCLCAweDBBLCAweEE0LCAweDFELCAweDI3LCAweEJCLCAweEMzLCAweEY1LCAweDlBLAorICAgIDB4M0EsIDB4NzUsIDB4QzIsIDB4ODUsIDB4MTIsIDB4OTgsIDB4NTksIDB4OTAsIDB4OTIsIDB4OTksIDB4MTUsIDB4NzMsIDB4QTIsIDB4MUQsIDB4OEEsIDB4QzAsCisgICAgMHg2OCwgMHgzOSwgMHg2OSwgMHg5MywgMHgyQywgMHhDRiwgMHhFMSwgMHg0MywgMHg5OSwgMHhENiwgMHg2OCwgMHhFQiwgMHhCRCwgMHhCMSwgMHhGMiwgMHhBNCwKKyAgICAweEI0LCAweDg0LCAweDc4LCAweDYyLCAweENBLCAweEY3LCAweEUzLCAweEM4LCAweDVCLCAweDEyLCAweDkyLCAweEE0LCAweDkzLCAweEFBLCAweDA0LCAweDA3LAorICAgIDB4NDUsIDB4MjYsIDB4MDksIDB4NzcsIDB4NkUsIDB4MzAsIDB4NDcsIDB4MjYsIDB4OUQsIDB4MjQsIDB4OEIsIDB4RUQsIDB4REMsIDB4RkIsIDB4RkYsIDB4MjMsCisgICAgMHgzQSwgMHhGRCwgMHg2QiwgMHhDQiwgMHhBMCwgMHg4OCwgMHgwOCwgMHg3NiwgMHg2NiwgMHgwQSwgMHhGOSwgMHg3QiwgMHg0RiwgMHhFMiwgMHgyMywgMHg1QywKKyAgICAweDRFLCAweEU5LCAweDE2LCAweDI5LCAweEEwLCAweDlFLCAweEUyLCAweDdCLCAweEI3LCAweEQ2LCAweERCLCAweEQ5LCAweEM1LCAweENGLCAweDY4LCAweDRBLAorICAgIDB4OUYsIDB4MDgsIDB4MjIsIDB4QTAsIDB4RUMsIDB4RjIsIDB4M0YsIDB4OTUsIDB4QUUsIDB4MjUsIDB4OTUsIDB4RUQsIDB4MTAsIDB4NkYsIDB4MzUsIDB4MUEsCisgICAgMHhDQSwgMHg1OCwgMHhCMiwgMHhDNiwgMHg3MiwgMHhBMSwgMHgwMywgMHg3RSwgMHg1OCwgMHg3MCwgMHg1OSwgMHgyNCwgMHg2QSwgMHgzOSwgMHgwMCwgMHg4QiwKKyAgICAweDRBLCAweDI3LCAweEJDLCAweEI5LCAweDAwLCAweDkyLCAweDZBLCAweEE1LCAweEM4LCAweDFELCAweEJBLCAweEZCLCAweDI0LCAweDdGLCAweDkxLCAweDNELAorICAgIDB4RjMsIDB4NEQsIDB4N0QsIDB4QjUsIDB4RjgsIDB4QjgsIDB4NzYsIDB4MjcsIDB4MEEsIDB4NTAsIDB4MTAsIDB4OTgsIDB4RDMsIDB4RkUsIDB4RDgsIDB4Q0QsCisgICAgMHg1NSwgMHhERCwgMHhDMywgMHg3MCwgMHgzOCwgMHgyMywgMHg3NSwgMHg0NCwgMHhBMSwgMHgxNiwgMHgwMSwgMHhDNCwgMHhGQiwgMHg3QSwgMHgzMSwgMHhCRCwKKyAgICAweEMxLCAweDFCLCAweDUxLCAweDdGLCAweEFCLCAweEMwLCAweEFFLCAweDBDLCAweDQzLCAweEE1LCAweDA3LCAweDM1LCAweDg4LCAweEFGLCAweDhELCAweDVGLAorICAgIDB4RjYsIDB4RTAsIDB4RkEsIDB4NkMsIDB4ODMsIDB4MDUsIDB4RUMsIDB4RkMsIDB4ODUsIDB4REQsIDB4NjYsIDB4MTEsIDB4NjQsIDB4NzcsIDB4RTcsIDB4Q0EsCisgICAgMHhGNCwgMHhFNSwgMHhDOCwgMHgxMSwgMHhDMiwgMHhBRSwgMHgwNiwgMHg5NCwgMHg0MCwgMHhGNywgMHhBNCwgMHgwMCwgMHg2RiwgMHhERCwgMHg5OSwgMHhCRCwKKyAgICAweDNBLCAweEEzLCAweDY5LCAweDVCLCAweEZGLCAweDA5LCAweEM4LCAweEM3LCAweEY1LCAweEZELCAweEE3LCAweEUzLCAweDZELCAweDBELCAweDgxLCAweEM0LAorICAgIDB4NzAsIDB4QTEsIDB4ODYsIDB4MzUsIDB4RUYsIDB4NzYsIDB4NTgsIDB4NEYsIDB4RDgsIDB4OTEsIDB4RDIsIDB4MzQsIDB4RjYsIDB4NDgsIDB4ODYsIDB4MjAsCisgICAgMHg5NSwgMHhBMiwgMHgzOSwgMHhERCwgMHg0QSwgMHg2MywgMHhDNCwgMHhGRCwgMHhBQywgMHgxMiwgMHg2MSwgMHhDQywgMHhGOSwgMHgwOCwgMHgxNSwgMHgxNywKKyAgICAweDRELCAweDk0LCAweDlCLCAweDAzLCAweEZGLCAweDI3LCAweDA2LCAweERDLCAweDJBLCAweDZCLCAweEM2LCAweDQ1LCAweDhDLCAweEJFLCAweDZCLCAweDJFLAorICAgIDB4MjEsIDB4OUEsIDB4REUsIDB4QkUsIDB4MTcsIDB4M0EsIDB4OTEsIDB4QTgsIDB4QTQsIDB4MDksIDB4OTQsIDB4NzAsIDB4MjIsIDB4NjIsIDB4MDYsIDB4REQsCisgICAgMHg2NSwgMHg1RSwgMHg4MSwgMHg4QywgMHhCMCwgMHgyRCwgMHhBNywgMHhBNiwgMHg2QiwgMHhEOSwgMHg5QywgMHg3NSwgMHhBMSwgMHg0QywgMHg1NSwgMHg5NiwKKyAgICAweDY3LCAweDZDLCAweEY3LCAweEZCLCAweDM0LCAweEE2LCAweDRDLCAweDUzLCAweDEwLCAweDVBLCAweERCLCAweDU0LCAweDdFLCAweEFDLCAweDY3LCAweEVBLAorICAgIDB4MTIsIDB4RjAsIDB4MjksIDB4MkEsIDB4NDksIDB4ODksIDB4RkYsIDB4QzUsIDB4RjMsIDB4RDQsIDB4MUQsIDB4QkEsIDB4RkIsIDB4RUYsIDB4Q0UsIDB4QTMsCisgICAgMHg1OCwgMHgzMywgMHg3QywgMHhGQSwgMHhDMCwgMHgzMCwgMHg0NSwgMHg3MCwgMHgxNSwgMHhCMCwgMHhERSwgMHg4NSwgMHhENywgMHg2NiwgMHhDQSwgMHgwMCwKKyAgICAweDg3LCAweDkzLCAweDg1LCAweDZCLCAweEQwLCAweDJFLCAweDk0LCAweDgwLCAweDMwLCAweDI0LCAweDY5LCAweEM1LCAweEQ5LCAweEQ4LCAweDAwLCAweEE3LAorICAgIDB4QkYsIDB4NEUsIDB4RjcsIDB4NUMsIDB4REUsIDB4MTAsIDB4QkUsIDB4MEEsIDB4QUUsIDB4REEsIDB4OEQsIDB4RkQsIDB4Q0IsIDB4RDAsIDB4QUYsIDB4NkYsCisgICAgMHhCQiwgMHhEMiwgMHhFQiwgMHhFQiwgMHgwNSwgMHhBNCwgMHhGNywgMHgzQiwgMHgwQiwgMHhDMSwgMHgwRSwgMHg1MCwgMHhFNCwgMHg4MCwgMHg2NSwgMHhGNiwKKyAgICAweEVFLCAweDc4LCAweERCLCAweEZBLCAweENELCAweDk2LCAweERBLCAweEI3LCAweDQ3LCAweERELCAweDk1LCAweDBELCAweEVDLCAweDY1LCAweDRGLCAweDJBLAorICAgIDB4NTEsIDB4OEEsIDB4QzYsIDB4QTksIDB4MjUsIDB4Q0UsIDB4M0QsIDB4MkQsIDB4QzIsIDB4MDYsIDB4QjksIDB4MjYsIDB4RTEsIDB4NjgsIDB4QTQsIDB4NjgsCisgICAgMHgyMywgMHhCOSwgMHgwQiwgMHgxMiwgMHg3RCwgMHg3OSwgMHhEMywgMHg0OCwgMHgwRSwgMHhBNiwgMHgyQSwgMHgyQiwgMHhBMywgMHgyMywgMHg2NCwgMHgxMCwKKyAgICAweEJBLCAweEEzLCAweDkyLCAweDgzLCAweEYwLCAweDkxLCAweEI5LCAweEY3LCAweDEyLCAweDRBLCAweDA4LCAweEZBLCAweEUzLCAweDEwLCAweEFFLCAweDY5LAorICAgIDB4REQsIDB4OTMsIDB4MUMsIDB4QzYsIDB4Q0MsIDB4MzIsIDB4NzgsIDB4ODUsIDB4MTUsIDB4ODQsIDB4QkUsIDB4MEUsIDB4OUIsIDB4MjEsIDB4QjAsIDB4RTcsCisgICAgMHgwQiwgMHhDMCwgMHgyNSwgMHhDQSwgMHhFMywgMHhBMywgMHhDMCwgMHg2QSwgMHg5NiwgMHhDNCwgMHg5OCwgMHg1MSwgMHg5QiwgMHhGNiwgMHg1QiwgMHgwOSwKKyAgICAweEFELCAweDY3LCAweDAzLCAweEExLCAweDRBLCAweDUxLCAweDFCLCAweEMwLCAweDRCLCAweDBCLCAweDFDLCAweDIzLCAweDBBLCAweDJCLCAweEJBLCAweDlGLAorICAgIDB4QUUsIDB4NzQsIDB4RUQsIDB4RkEsIDB4QTEsIDB4QzQsIDB4MzAsIDB4QUIsIDB4MDAsIDB4RUQsIDB4N0EsIDB4MTcsIDB4Q0MsIDB4MTUsIDB4QzUsIDB4QkYsCisgICAgMHhDQywgMHg0OSwgMHg0MSwgMHg5NywgMHgzRCwgMHhCRSwgMHgyQSwgMHhFNywgMHhFRCwgMHgzMywgMHgwMiwgMHg1QiwgMHg0MiwgMHhGMywgMHgxOCwgMHgxMCwKKyAgICAweEQzLCAweEQ1LCAweDI3LCAweDA4LCAweDRBLCAweEZELCAweEZCLCAweEE1LCAweDE5LCAweDQzLCAweEU2LCAweDM4LCAweDI2LCAweEFBLCAweEMzLCAweEU2LAorICAgIDB4N0IsIDB4RjEsIDB4RDUsIDB4MDIsIDB4OTYsIDB4MjcsIDB4ODYsIDB4QUMsIDB4MzgsIDB4ODYsIDB4NEUsIDB4RDAsIDB4OEIsIDB4RDcsIDB4MkIsIDB4Q0MsCisgICAgMHg5NywgMHg5NiwgMHgyNCwgMHg2RCwgMHg2NiwgMHg3RCwgMHgyQiwgMHhDOCwgMHhGNywgMHg0OSwgMHhFQSwgMHgyNiwgMHg3NCwgMHhFRCwgMHgyOSwgMHg1MCwKKyAgICAweDAzLCAweDcyLCAweDJFLCAweDNELCAweDUyLCAweDNELCAweDFDLCAweDYzLCAweDM4LCAweDY3LCAweDQ3LCAweDNCLCAweDA3LCAweEY4LCAweDVDLCAweDU0LAorICAgIDB4OTgsIDB4MEEsIDB4RUEsIDB4QjksIDB4MEUsIDB4QjcsIDB4N0UsIDB4NzgsIDB4RjYsIDB4RDUsIDB4OEUsIDB4QzEsIDB4MUMsIDB4MzYsIDB4MkEsIDB4MTcsCisgICAgMHgxNywgMHgwQSwgMHgzRSwgMHg5MCwgMHhBNCwgMHg3NywgMHgyNywgMHg0NywgMHhCQSwgMHhDOSwgMHgwMywgMHg2QSwgMHgzQywgMHg4OCwgMHgxNywgMHhGNSwKKyAgICAweEVDLCAweDdBLCAweDk0LCAweDNELCAweEQzLCAweDA2LCAweDAwLCAweEVFLCAweEIyLCAweDMxLCAweDM2LCAweEI1LCAweENBLCAweDUzLCAweDUyLCAweEM5LAorICAgIDB4NEMsIDB4QTYsIDB4NTQsIDB4MTIsIDB4QzYsIDB4NTgsIDB4QjcsIDB4MkYsIDB4RDEsIDB4RDEsIDB4RjUsIDB4OEEsIDB4OTYsIDB4M0UsIDB4NDQsIDB4NjEsCisgICAgMHg0QiwgMHhBMCwgMHg5RCwgMHhGMSwgMHg1NCwgMHg0QSwgMHhFNywgMHgyNywgMHg4QiwgMHgwMiwgMHg4QiwgMHg4RSwgMHhDMywgMHhGMiwgMHhBRiwgMHgwMSwKKyAgICAweERFLCAweDM4LCAweEU5LCAweDdBLCAweDE1LCAweEFFLCAweDBELCAweEEyLCAweEYyLCAweDQzLCAweDJDLCAweDJELCAweDJFLCAweENELCAweEQ5LCAweDYxLAorICAgIDB4NzIsIDB4RDIsIDB4MzQsIDB4N0UsIDB4MDcsIDB4MkMsIDB4MkEsIDB4MDAsIDB4MkQsIDB4NTYsIDB4NkEsIDB4OUMsIDB4RkYsIDB4MTMsIDB4QkUsIDB4RjIsCisgICAgMHg2MCwgMHhDRCwgMHhCQSwgMHhGQSwgMHhCNSwgMHhCQSwgMHg5NSwgMHg3RiwgMHgzQiwgMHhFMSwgMHg2RiwgMHg4NiwgMHg4MywgMHhBRiwgMHg1MiwgMHhEMywKKyAgICAweDg2LCAweEJFLCAweERGLCAweDcxLCAweEZELCAweDM5LCAweDFCLCAweDQ5LCAweDIzLCAweEU4LCAweDgyLCAweDNELCAweDk4LCAweEU3LCAweDZBLCAweDdFLAorICAgIDB4RTQsIDB4NzYsIDB4QjAsIDB4MkMsIDB4QkQsIDB4QUUsIDB4MjYsIDB4QzUsIDB4QjUsIDB4NkYsIDB4OUEsIDB4QTIsIDB4N0UsIDB4OTUsIDB4ODQsIDB4MkEsCisgICAgMHg3NCwgMHg0QSwgMHhFQywgMHg3MCwgMHg0RCwgMHhDMSwgMHhBOSwgMHhFQiwgMHgzMCwgMHhEOSwgMHhBRSwgMHg4RCwgMHg3QSwgMHhBMywgMHhGNywgMHg1RiwKKyAgICAweDNGLCAweERFLCAweEMyLCAweENELCAweDhCLCAweEIwLCAweEQ2LCAweEQwLCAweEM1LCAweDcxLCAweDdDLCAweEM3LCAweEY5LCAweDk3LCAweDk4LCAweDUxLAorICAgIDB4NTIsIDB4N0UsIDB4MEQsIDB4NTAsIDB4QjQsIDB4QzksIDB4MjksIDB4NzksIDB4NjUsIDB4QzgsIDB4NDMsIDB4N0IsIDB4NDYsIDB4OUIsIDB4NTcsIDB4RjgsCisgICAgMHg3NCwgMHhGNywgMHg4QiwgMHg1OCwgMHhFOCwgMHhCMywgMHgyMiwgMHg0MywgMHhFQiwgMHgwNiwgMHhDRCwgMHhFRCwgMHgwQywgMHhDOSwgMHg4NiwgMHgyQiwKKyAgICAweDVFLCAweEY5LCAweEJBLCAweEY1LCAweEEzLCAweDAxLCAweDQ2LCAweEU1LCAweEU3LCAweDk5LCAweDE3LCAweDgzLCAweEEyLCAweDRGLCAweDJDLCAweEVBLAorICAgIDB4OUIsIDB4MTIsIDB4REIsIDB4QzksIDB4MEIsIDB4NTEsIDB4NzksIDB4NjUsIDB4NkYsIDB4M0EsIDB4QzYsIDB4MUQsIDB4MzUsIDB4M0IsIDB4Q0IsIDB4QzIsCisgICAgMHhBMSwgMHgyNywgMHhBMCwgMHhFMCwgMHhDOCwgMHhDQiwgMHhCRiwgMHhBMCwgMHg3RSwgMHg5RCwgMHg3QiwgMHg4QSwgMHg2RiwgMHgzOCwgMHgxRCwgMHg2QSwKKyAgICAweERBLCAweDE0LCAweEY2LCAweDAwLCAweEE0LCAweEVBLCAweDE4LCAweDcxLCAweDQ4LCAweDNELCAweDA1LCAweDAzLCAweDQyLCAweDQyLCAweEU3LCAweDUwLAorICAgIDB4M0MsIDB4M0YsIDB4MjEsIDB4MkYsIDB4N0MsIDB4MTgsIDB4NjUsIDB4M0YsIDB4REUsIDB4REMsIDB4NjUsIDB4OUQsIDB4QjIsIDB4OEUsIDB4OTIsIDB4QTEsCisgICAgMHhDNywgMHgwQiwgMHhBRCwgMHgzQywgMHgyMiwgMHgzQywgMHgwNywgMHg2MiwgMHgxRCwgMHgzQywgMHg4RiwgMHg1NywgMHhGMCwgMHg1MCwgMHgyMSwgMHg1QywKKyAgICAweEMyLCAweDZBLCAweEE5LCAweDcyLCAweDNCLCAweDlGLCAweEIwLCAweDUxLCAweEVGLCAweDFGLCAweDVDLCAweDgzLCAweDI3LCAweDFGLCAweEFBLCAweDgxLAorICAgIDB4NTAsIDB4REMsIDB4QjIsIDB4ODAsIDB4OTQsIDB4RTIsIDB4NjksIDB4NjYsIDB4NEIsIDB4N0UsIDB4QkQsIDB4Q0EsIDB4OEIsIDB4NUYsIDB4RDAsIDB4RTgsCisgICAgMHg2OSwgMHg2MywgMHg2RCwgMHhFNCwgMHhEQSwgMHhGNywgMHg4MywgMHg0NSwgMHhDQiwgMHhGQywgMHgzMywgMHhEQiwgMHg0MywgMHg5OSwgMHg3RSwgMHg0MSwKKyAgICAweDg2LCAweDNGLCAweDk1LCAweERDLCAweEIyLCAweDU4LCAweDhGLCAweDhFLCAweDdGLCAweEFBLCAweEM4LCAweDM3LCAweDgwLCAweDA4LCAweDFDLCAweEFFLAorICAgIDB4MjIsIDB4MDMsIDB4RjEsIDB4OTgsIDB4NzMsIDB4NDcsIDB4NzUsIDB4MzgsIDB4NUIsIDB4MUYsIDB4OTksIDB4NzAsIDB4RTQsIDB4NDgsIDB4MTUsIDB4NDgsCisgICAgMHhDRSwgMHgyNCwgMHgxNSwgMHhFNCwgMHgwQiwgMHhDQSwgMHgwMSwgMHg4RSwgMHg4QiwgMHhFNywgMHg5QiwgMHg0RSwgMHg1QiwgMHg1NiwgMHgxMSwgMHgxNCwKKyAgICAweDMxLCAweDc4LCAweDhGLCAweEE5LCAweDlBLCAweERBLCAweDQxLCAweDUyLCAweDIxLCAweEJCLCAweDM0LCAweDEwLCAweDc0LCAweDU1LCAweDg3LCAweDRCLAorICAgIDB4N0EsIDB4NjUsIDB4QkEsIDB4NTMsIDB4RkIsIDB4MDYsIDB4QjMsIDB4ODIsIDB4M0YsIDB4RUMsIDB4NDMsIDB4ODQsIDB4RjQsIDB4QzksIDB4QUYsIDB4MTEsCisgICAgMHg3RiwgMHgyNSwgMHg3QSwgMHg3QSwgMHgyRiwgMHgzMywgMHg5MywgMHgxMCwgMHg5QiwgMHg3RCwgMHhBMCwgMHhBQiwgMHgzNSwgMHg1NCwgMHg2MSwgMHg4NSwKKyAgICAweDNBLCAweDA4LCAweDZCLCAweDM4LCAweDQ1LCAweDM1LCAweENCLCAweEFDLCAweDcxLCAweDA3LCAweDQzLCAweDVDLCAweDM4LCAweDc5LCAweDI4LCAweEZCLAorICAgIDB4OUUsIDB4MzAsIDB4REMsIDB4NjksIDB4QkUsIDB4MjgsIDB4MjUsIDB4NTIsIDB4MUEsIDB4Q0YsIDB4MEMsIDB4NjcsIDB4OUUsIDB4MjAsIDB4RjksIDB4MTgsCisgICAgMHhFMiwgMHg0OCwgMHg0QiwgMHhEMywgMHgyRCwgMHg3OCwgMHhGNSwgMHhGQywgMHhCMCwgMHhDRiwgMHgwMywgMHhDOCwgMHg5QiwgMHg0RCwgMHg4MiwgMHhGNSwKKyAgICAweEVFLCAweDRBLCAweDg3LCAweDQ1LCAweEVDLCAweDQ5LCAweDMyLCAweDU5LCAweDE1LCAweDMyLCAweEVDLCAweDYzLCAweDBCLCAweDQ0LCAweDlGLCAweDAzLAorICAgIDB4QUQsIDB4MEMsIDB4NEIsIDB4QzQsIDB4Q0UsIDB4NzQsIDB4RjAsIDB4QkEsIDB4OEQsIDB4RTYsIDB4NEEsIDB4QkMsIDB4NjksIDB4QjcsIDB4RjUsIDB4QUUsCisgICAgMHhDQiwgMHg1NCwgMHg0MywgMHhFOCwgMHg1QSwgMHg2MSwgMHhGOSwgMHg0RCwgMHgwNCwgMHhBQSwgMHhDRSwgMHg5OSwgMHhGNCwgMHg2NywgMHg2MCwgMHg2MywKKyAgICAweDcwLCAweDNBLCAweDk4LCAweDNDLCAweDQyLCAweDQ4LCAweDM4LCAweDlCLCAweDkwLCAweEI0LCAweDJGLCAweEQ3LCAweEUxLCAweENGLCAweDE1LCAweDYzLAorICAgIDB4MUYsIDB4OUMsIDB4REMsIDB4M0MsIDB4MUEsIDB4RTcsIDB4NDMsIDB4MkEsIDB4NTQsIDB4RTcsIDB4OTUsIDB4MTYsIDB4MTIsIDB4RTksIDB4OTMsIDB4QUUsCisgICAgMHg4OSwgMHgyMSwgMHgwQiwgMHhBRCwgMHhGQiwgMHgwNSwgMHg1MCwgMHg1QSwgMHg3MCwgMHgwMiwgMHhEMCwgMHhDQywgMHhEQSwgMHg2NiwgMHgyNSwgMHg2OCwKKyAgICAweDExLCAweDFGLCAweDQyLCAweDA3LCAweDEwLCAweDU2LCAweDQ3LCAweENDLCAweEEyLCAweDNBLCAweEFBLCAweDQ0LCAweDVCLCAweDEwLCAweEEwLCAweDBGLAorICAgIDB4MjUsIDB4NDQsIDB4NzAsIDB4M0UsIDB4NzIsIDB4M0EsIDB4NTgsIDB4N0MsIDB4ODIsIDB4MDMsIDB4M0IsIDB4OEIsIDB4RkYsIDB4NUUsIDB4NkMsIDB4MDYsCisgICAgMHg1QSwgMHhGQywgMHgyMywgMHgxQiwgMHg3OCwgMHhEMSwgMHhDRSwgMHhDNiwgMHhDMCwgMHgzQSwgMHhBQSwgMHgwNywgMHgwRiwgMHhDMCwgMHhBQywgMHhCNywKKyAgICAweDg4LCAweDMxLCAweDMxLCAweDlBLCAweDY3LCAweDNDLCAweERBLCAweDdGLCAweEU2LCAweDQ4LCAweEFCLCAweEU4LCAweDMwLCAweEMwLCAweEI0LCAweEJGLAorICAgIDB4MEIsIDB4MTQsIDB4OTcsIDB4ODEsIDB4OEYsIDB4NUUsIDB4NjUsIDB4NUQsIDB4QzksIDB4ODAsIDB4REMsIDB4ODUsIDB4NzYsIDB4ODQsIDB4OTAsIDB4N0IsCisgICAgMHhDMCwgMHgyRSwgMHg1OSwgMHgwMywgMHhCMiwgMHgxOSwgMHgyQywgMHg1QiwgMHg5OCwgMHhBNywgMHhBOSwgMHhEQywgMHhFOSwgMHg0QSwgMHgwMiwgMHhFMywKKyAgICAweDgwLCAweDBELCAweDA4LCAweDU3LCAweDAzLCAweDFELCAweEJCLCAweEIwLCAweDg4LCAweDMyLCAweENBLCAweEYwLCAweDRDLCAweEQzLCAweEY5LCAweEJELAorICAgIDB4MjUsIDB4NTYsIDB4ODYsIDB4QkMsIDB4OTksIDB4OTIsIDB4RkMsIDB4QUUsIDB4NjYsIDB4RjIsIDB4OUIsIDB4NDMsIDB4RjksIDB4Q0YsIDB4RUUsIDB4RDQsCisgICAgMHhFRiwgMHhGOSwgMHhGRSwgMHhCNiwgMHgyNiwgMHg1RCwgMHg0NywgMHgwNywgMHg5NCwgMHgxRiwgMHhFOSwgMHhEOSwgMHhBMCwgMHg3OCwgMHhGOSwgMHg1NywKKyAgICAweDI2LCAweDZFLCAweEY5LCAweEVCLCAweDAyLCAweDAxLCAweDlFLCAweEIwLCAweDc1LCAweDQzLCAweDBDLCAweDZELCAweDgyLCAweDU0LCAweEZDLCAweEUyLAorICAgIDB4RkEsIDB4MUIsIDB4M0MsIDB4MzEsIDB4NjQsIDB4RDUsIDB4NjYsIDB4MjIsIDB4NDUsIDB4MUYsIDB4MzUsIDB4NzQsIDB4OEEsIDB4NzAsIDB4OUEsIDB4RDgsCisgICAgMHhFQywgMHhFOCwgMHg0NCwgMHgwQywgMHg5RCwgMHgxMCwgMHhGRCwgMHg1QSwgMHhCMywgMHg1MywgMHgyMSwgMHg2QSwgMHg2NCwgMHhENSwgMHgxNSwgMHg2QSwKKyAgICAweDk2LCAweDQ4LCAweDFBLCAweEEzLCAweDRFLCAweDk3LCAweEI4LCAweENGLCAweEIyLCAweEEzLCAweDE0LCAweDIzLCAweDgzLCAweEMxLCAweDFBLCAweDA3LAorICAgIDB4NkIsIDB4ODksIDB4NjQsIDB4MTYsIDB4MDIsIDB4OUIsIDB4MDQsIDB4MTcsIDB4QTQsIDB4RTMsIDB4RjMsIDB4REIsIDB4MUMsIDB4OEYsIDB4OUUsIDB4MEQsCisgICAgMHgwQSwgMHg2RCwgMHhCNCwgMHhBMiwgMHhBNywgMHg3NiwgMHg0OSwgMHhCQiwgMHhCQSwgMHg3OSwgMHgyRCwgMHg2RiwgMHhDRSwgMHhEOSwgMHg1QywgMHgyNCwKKyAgICAweEM3LCAweERELCAweEYxLCAweDIyLCAweENDLCAweDdELCAweERGLCAweEVELCAweDk3LCAweDkzLCAweDYwLCAweERELCAweDBCLCAweDk5LCAweEJELCAweDU4LAorICAgIDB4MEIsIDB4MDYsIDB4NzcsIDB4OTEsIDB4ODIsIDB4MUYsIDB4RTIsIDB4RkUsIDB4Q0YsIDB4MTQsIDB4RjgsIDB4NTEsIDB4MTIsIDB4MkIsIDB4QkUsIDB4RkYsCisgICAgMHg2OCwgMHhFNywgMHhEOSwgMHhBNSwgMHhBNCwgMHgyRSwgMHhENSwgMHhBQSwgMHhFMiwgMHhGQSwgMHg4MCwgMHg1OCwgMHhBQywgMHhEMSwgMHg2QywgMHhERCwKKyAgICAweEI2LCAweDQwLCAweEI2LCAweENFLCAweDM5LCAweDZCLCAweDk1LCAweDVDLCAweEZGLCAweDQ2LCAweDdELCAweDJGLCAweDAzLCAweENBLCAweEUxLCAweDkyLAorICAgIDB4NUUsIDB4MkQsIDB4RDUsIDB4NTgsIDB4NTYsIDB4ODIsIDB4RTEsIDB4N0QsIDB4MTMsIDB4MjEsIDB4QjAsIDB4NzYsIDB4MUEsIDB4OTIsIDB4REUsIDB4NzcsCisgICAgMHhCNCwgMHgwNSwgMHhEMCwgMHhCQywgMHhDOSwgMHhFMywgMHhDRSwgMHhEMiwgMHhCOSwgMHgyQiwgMHg3MCwgMHhCRCwgMHhGNCwgMHg3OSwgMHgzQywgMHhGQSwKKyAgICAweEYzLCAweDkxLCAweDUxLCAweEFBLCAweEY0LCAweEYwLCAweDE0LCAweDBDLCAweDRFLCAweEQxLCAweDY2LCAweDYwLCAweDkwLCAweDE2LCAweDVCLCAweEVGLAorICAgIDB4MzQsIDB4RTgsIDB4QjEsIDB4NUEsIDB4MkIsIDB4OEUsIDB4MkMsIDB4MTEsIDB4MzksIDB4MkQsIDB4MzcsIDB4NDMsIDB4NEYsIDB4QTMsIDB4OUMsIDB4MEIsCisgICAgMHgxOSwgMHgxOSwgMHgzRCwgMHgzMCwgMHhDQSwgMHg1MSwgMHgwNywgMHg2NywgMHg1QSwgMHhEMiwgMHhFMCwgMHgxRCwgMHg2QywgMHhERCwgMHhCMiwgMHhGOCwKKyAgICAweDlFLCAweDMyLCAweDA3LCAweDdBLCAweDMzLCAweDI2LCAweDJGLCAweDNBLCAweDcxLCAweDI1LCAweEIwLCAweDI2LCAweERGLCAweEFCLCAweEVFLCAweENDLAorICAgIDB4QUQsIDB4QTksIDB4NDYsIDB4NDAsIDB4NjUsIDB4RDYsIDB4NTEsIDB4RDIsIDB4MTIsIDB4NUQsIDB4MjcsIDB4NEYsIDB4QkIsIDB4OTUsIDB4NTEsIDB4ODcsCisgICAgMHg1NSwgMHhCMiwgMHhGNywgMHhFQiwgMHg4OSwgMHg2NSwgMHhERiwgMHhDQSwgMHhERiwgMHhBMiwgMHg1NSwgMHhBRCwgMHhBMCwgMHgxOSwgMHg2QSwgMHhFNSwKKyAgICAweDg4LCAweDBBLCAweENFLCAweDI0LCAweEEyLCAweEE3LCAweEVCLCAweDBDLCAweDI5LCAweERDLCAweDI0LCAweDA5LCAweDkzLCAweDk5LCAweDUwLCAweDJDLAorICAgIDB4QjcsIDB4MEYsIDB4MjEsIDB4QjcsIDB4NzEsIDB4RjYsIDB4OEIsIDB4M0YsIDB4NjksIDB4MEMsIDB4MzIsIDB4QTEsIDB4MTgsIDB4M0EsIDB4ODEsIDB4RUUsCisgICAgMHg0MiwgMHg2NywgMHg4MiwgMHg1RSwgMHhFMSwgMHg3QiwgMHgxQywgMHg2RiwgMHg1NywgMHhBOSwgMHg2MCwgMHgzOCwgMHg1MywgMHg0MiwgMHgwNCwgMHg2NSwKKyAgICAweDIxLCAweDMxLCAweDhCLCAweEI4LCAweEVBLCAweDlGLCAweDBELCAweEE2LCAweEFFLCAweEQ4LCAweDRELCAweDlCLCAweENCLCAweDM2LCAweDUzLCAweEM0LAorICAgIDB4NjAsIDB4MkYsIDB4ODQsIDB4MEUsIDB4NjQsIDB4QkYsIDB4Q0UsIDB4MDgsIDB4ODksIDB4RDAsIDB4MkIsIDB4QjksIDB4RTMsIDB4ODcsIDB4RUMsIDB4MTAsCisgICAgMHhBOCwgMHg2MSwgMHg3MCwgMHhGNywgMHhFNSwgMHgyMywgMHhBQSwgMHgyRSwgMHg3QSwgMHg3MCwgMHg2NCwgMHg1RCwgMHgwNCwgMHhENiwgMHhDNiwgMHhBMiwKKyAgICAweEE5LCAweDNCLCAweDc5LCAweEQ2LCAweDlBLCAweDlBLCAweDE1LCAweDM5LCAweERGLCAweEY0LCAweDRBLCAweDJBLCAweEUwLCAweDJDLCAweDY3LCAweEM3LAorICAgIDB4MDEsIDB4RjMsIDB4MDIsIDB4NkIsIDB4RTQsIDB4RjQsIDB4RTAsIDB4NzcsIDB4MTcsIDB4QTIsIDB4RUMsIDB4OTMsIDB4RDMsIDB4NjEsIDB4NDksIDB4QjQsCisgICAgMHhBQywgMHg1MiwgMHgzQSwgMHg4NCwgMHhGQSwgMHgzRSwgMHgyQywgMHhEOCwgMHhBQiwgMHhEOSwgMHhFNiwgMHhERCwgMHg1OSwgMHgxQywgMHgxRSwgMHg0MSwKKyAgICAweDk3LCAweEVGLCAweDI5LCAweDEzLCAweEYyLCAweDJELCAweDFELCAweDIxLCAweDVGLCAweDZGLCAweDE2LCAweEYyLCAweDdDLCAweDcyLCAweDY5LCAweEI2LAorICAgIDB4OTMsIDB4QzksIDB4RTUsIDB4N0EsIDB4MUIsIDB4NEUsIDB4MTAsIDB4NzgsIDB4NkMsIDB4NzksIDB4NEIsIDB4MjMsIDB4NzMsIDB4MDIsIDB4OUIsIDB4RjIsCisgICAgMHhFMCwgMHhDMywgMHhEQiwgMHg1OCwgMHhGMywgMHgyMywgMHgzNywgMHhDOSwgMHgwNiwgMHgyMCwgMHhGMSwgMHgwOCwgMHgzNCwgMHg0NywgMHg5MSwgMHhCMCwKKyAgICAweDhFLCAweEYzLCAweEZGLCAweEZFLCAweDgzLCAweDRBLCAweDk3LCAweEE0LCAweDU1LCAweDIyLCAweDU1LCAweEYzLCAweDlGLCAweDQxLCAweDdGLCAweEUxLAorICAgIDB4RjUsIDB4RTMsIDB4NDIsIDB4QUUsIDB4NTQsIDB4RjAsIDB4ODMsIDB4NjgsIDB4MDgsIDB4MDksIDB4MkMsIDB4OTUsIDB4NkMsIDB4MjMsIDB4MTEsIDB4N0UsCisgICAgMHg5RiwgMHg3RCwgMHg1MywgMHg3OCwgMHhBMSwgMHg2QiwgMHgwMiwgMHgxNCwgMHg4QywgMHhERCwgMHhGMiwgMHgzNCwgMHgzNSwgMHg3RCwgMHhGNywgMHhDQiwKKyAgICAweEVGLCAweDY4LCAweDA0LCAweDA3LCAweDJDLCAweEMyLCAweDM2LCAweDFFLCAweDE1LCAweDE3LCAweDE1LCAweDZCLCAweDc0LCAweDU2LCAweEM0LCAweDEyLAorICAgIDB4QjcsIDB4QkYsIDB4QzgsIDB4REIsIDB4NjYsIDB4RjIsIDB4ODgsIDB4RkEsIDB4RUIsIDB4RDMsIDB4QTMsIDB4OTksIDB4QkUsIDB4RDMsIDB4MjEsIDB4MzUsCisgICAgMHgwNSwgMHhFRCwgMHg3MywgMHg5QSwgMHhBMCwgMHgxNCwgMHgzQywgMHgyNCwgMHgwQSwgMHhERiwgMHg5NywgMHgwRiwgMHgxQiwgMHhBMiwgMHg5QSwgMHhCMCwKKyAgICAweDBGLCAweDAxLCAweEFELCAweDFELCAweDg3LCAweEVELCAweDIxLCAweDhGLCAweDJGLCAweEE4LCAweDRELCAweEZELCAweDAyLCAweDVFLCAweDRCLCAweEVBLAorICAgIDB4QUQsIDB4NDQsIDB4MkQsIDB4NTgsIDB4QjQsIDB4QzgsIDB4OEYsIDB4NDAsIDB4MzgsIDB4OUQsIDB4OTMsIDB4M0QsIDB4MzIsIDB4MjgsIDB4NkMsIDB4NTAsCisgICAgMHhFMiwgMHgxMCwgMHhDMSwgMHg3QywgMHhERCwgMHgxMCwgMHgwOCwgMHgyMiwgMHhCMSwgMHgxQywgMHhCMiwgMHgyQywgMHhBMiwgMHgzMywgMHhCNSwgMHg5MSwKKyAgICAweDU1LCAweDNDLCAweERBLCAweEFBLCAweEYyLCAweERBLCAweEJGLCAweDk3LCAweEE4LCAweEIwLCAweDgxLCAweDIxLCAweEQ4LCAweDVFLCAweEJFLCAweENFLAorICAgIDB4MjEsIDB4NTUsIDB4RDcsIDB4QkUsIDB4QzAsIDB4QUYsIDB4REUsIDB4RjMsIDB4QjcsIDB4NUUsIDB4REIsIDB4OTgsIDB4NDAsIDB4NzEsIDB4OEQsIDB4QjAsCisgICAgMHhERCwgMHhBQiwgMHg3RCwgMHhFQiwgMHg2OCwgMHg5QywgMHhBRCwgMHgyNCwgMHhBNiwgMHhFMSwgMHhCMCwgMHg5MCwgMHg3OSwgMHhBQywgMHhFQiwgMHhENCwKKyAgICAweDlELCAweDY5LCAweDA5LCAweEU4LCAweEUxLCAweDdFLCAweEZELCAweEU1LCAweEFELCAweDU5LCAweEQyLCAweDNBLCAweEJELCAweDgzLCAweDk2LCAweEM4LAorICAgIDB4MDQsIDB4RjQsIDB4OEUsIDB4NTUsIDB4NTYsIDB4QkMsIDB4OTUsIDB4QzksIDB4MEQsIDB4OUUsIDB4QzYsIDB4NkYsIDB4QTMsIDB4NEYsIDB4NjgsIDB4RDIsCisgICAgMHg3OCwgMHgxNiwgMHg1NywgMHg1RCwgMHgwOSwgMHhFMCwgMHg2MSwgMHhDNSwgMHhBRCwgMHgzRiwgMHhEMSwgMHhFMCwgMHhGQSwgMHhFOCwgMHgxRCwgMHg3NywKKyAgICAweDcwLCAweDQyLCAweEY3LCAweDUzLCAweDQ3LCAweEFBLCAweEJCLCAweDdELCAweEYzLCAweEJBLCAweEM5LCAweDI2LCAweEIyLCAweEM5LCAweEMzLCAweDBBLAorICAgIDB4MTcsIDB4NEMsIDB4MkEsIDB4MUIsIDB4QjYsIDB4MTIsIDB4MzIsIDB4NTQsIDB4OUEsIDB4QjEsIDB4RUEsIDB4QzcsIDB4QjUsIDB4MjgsIDB4NUYsIDB4NTksCisgICAgMHhEOSwgMHgxOSwgMHg0RSwgMHhGRiwgMHgwRCwgMHhCMSwgMHg2NywgMHg0MCwgMHhEMywgMHg3NiwgMHhBNywgMHgwQSwgMHg5NCwgMHhEOSwgMHg3NSwgMHg3MSwKKyAgICAweENFLCAweDZFLCAweEU1LCAweEZCLCAweEQ4LCAweDlGLCAweEI2LCAweDVGLCAweDkxLCAweDc0LCAweDY4LCAweDlGLCAweDdDLCAweEEzLCAweDk5LCAweDNBLAorICAgIDB4RDksIDB4MEMsIDB4ODMsIDB4NjQsIDB4RkIsIDB4N0UsIDB4QjIsIDB4OUIsIDB4MUEsIDB4NUYsIDB4REEsIDB4ODUsIDB4QjUsIDB4QjksIDB4NEMsIDB4QjEsCisgICAgMHg3MiwgMHhBMiwgMHgxQiwgMHg5MiwgMHgyMCwgMHg3QSwgMHg3NywgMHhEMywgMHg0MSwgMHg4RSwgMHgxQiwgMHhGMSwgMHhDMywgMHg1QSwgMHg2QiwgMHhGMCwKKyAgICAweDY2LCAweDE2LCAweDk0LCAweDFGLCAweDU3LCAweDVBLCAweEMxLCAweDE2LCAweEIzLCAweEY5LCAweEU5LCAweEZBLCAweDBDLCAweDI4LCAweEM1LCAweDMyLAorICAgIDB4NkYsIDB4MDQsIDB4RjEsIDB4QUYsIDB4NjYsIDB4OUYsIDB4RjgsIDB4NzIsIDB4RDYsIDB4OTEsIDB4NUYsIDB4NEMsIDB4RTksIDB4OUEsIDB4QTgsIDB4MzgsCisgICAgMHg0NywgMHg2QywgMHg4QywgMHgwMCwgMHhCNCwgMHg0NywgMHgyMCwgMHg0MSwgMHg2OCwgMHgxMiwgMHg1NCwgMHg1MSwgMHgxQSwgMHg1NiwgMHg2NiwgMHg1NiwKKyAgICAweDRCLCAweEMzLCAweDU5LCAweEM3LCAweDlDLCAweDQ5LCAweDc0LCAweDA2LCAweEFCLCAweDQ1LCAweDFELCAweDdCLCAweDAxLCAweEEwLCAweEY1LCAweDM0LAorICAgIDB4OUUsIDB4RTMsIDB4QUQsIDB4NUIsIDB4M0EsIDB4MTIsIDB4MzMsIDB4M0UsIDB4MDMsIDB4QjcsIDB4QTYsIDB4OTIsIDB4NjIsIDB4MTEsIDB4NzUsIDB4NUQsCisgICAgMHhFNCwgMHhCOSwgMHg3OCwgMHg0MywgMHhDQywgMHg0RCwgMHhGNywgMHgwMywgMHgwQywgMHg1QSwgMHhFRCwgMHg3NCwgMHg1NSwgMHg5NiwgMHg5MSwgMHgyOSwKKyAgICAweEZBLCAweEJBLCAweEM2LCAweDM4LCAweENCLCAweDIyLCAweEYyLCAweDkwLCAweDZCLCAweDdCLCAweDNELCAweEZGLCAweEVGLCAweDk0LCAweDI5LCAweDU5LAorICAgIDB4MzMsIDB4OEIsIDB4NjAsIDB4NjYsIDB4RTcsIDB4MzIsIDB4RkQsIDB4NkIsIDB4RTEsIDB4MTksIDB4NjgsIDB4MkYsIDB4RDMsIDB4NzEsIDB4QTAsIDB4NzAsCisgICAgMHhFOSwgMHhBRiwgMHhFNiwgMHgyNSwgMHg0RSwgMHhFOCwgMHg0NiwgMHgwOCwgMHgxQywgMHhGMSwgMHhFMywgMHg2MCwgMHg3NSwgMHg2MywgMHhGMiwgMHhBQywKKyAgICAweEFFLCAweDI1LCAweDQ1LCAweDZFLCAweEI3LCAweDQzLCAweDcxLCAweEZELCAweEY5LCAweDBCLCAweDM0LCAweDJGLCAweERBLCAweEJELCAweDZCLCAweDI3LAorICAgIDB4NjgsIDB4MEQsIDB4MjcsIDB4OEQsIDB4REUsIDB4QzcsIDB4N0MsIDB4OEQsIDB4MjQsIDB4QzQsIDB4Q0IsIDB4OUIsIDB4RUQsIDB4ODAsIDB4MDEsIDB4MTQsCisgICAgMHgwMiwgMHgwMCwgMHgwMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDBELCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MEQsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgwRCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDBELCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MEQsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgwRCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDBELCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsCisgICAgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwgMHgzMCwKKyAgICAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLCAweDMwLAorICAgIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MzAsIDB4MEQsIDB4NjMsIDB4NkMsIDB4NjUsIDB4NjEsIDB4NzIsCisgICAgMHg3NCwgMHg2RiwgMHg2RCwgMHg2MSwgMHg3MiwgMHg2QiwgMHgwRCwgMHg4MCwgMHgwMywKK307CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U3ltYm9sLmMgYi9jb3JlL3NyYy9meGdlL2ZvbnRkYXRhL2Nocm9tZWZvbnRkYXRhL0ZveGl0U3ltYm9sLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThjZGUzNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZm9udGRhdGEvY2hyb21lZm9udGRhdGEvRm94aXRTeW1ib2wuYwpAQCAtMCwwICsxLDIwOTkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKK2NvbnN0IHVuc2lnbmVkIGNoYXIgZ19Gb3hpdFN5bWJvbEZvbnREYXRhIFsxNjcyOV0gPSB7MHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NCwgMHgyLCAweDAsIDB4MSwgMHgxLCAweDEsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg2OCwgMHg3MiwgMHg2ZiwgMHg2ZCwgMHg1MywgMHg3OSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg2ZiwgMHg2YywgMHg0ZiwgMHg1NCwgMHg0NiwgMHgwLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgxLCAweDI2LCAweGY4LCAweDEwLCAweDAsIDB4ZjgsIDB4YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmOCwgMHhhZSwgMHgyLCAweGY4LCAweGFlLCAweDMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4NCwgMHhmYiwgMHg0OCwgMHhmYiwgMHhiYSwgMHhmYSwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHg4NiwgMHg1LCAweDFjLCAweDYsIDB4M2QsIDB4ZiwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDg5LCAweDExLCAweGFiLCAweDFjLCAweDNlLCAweGEyLCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4OTQsIDB4MiwgMHgwLCAweDEsIDB4MCwgMHg2LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgwLCAweGYsIDB4MCwgMHgxNiwgMHgwLCAweDFhLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4MCwgMHgyMiwgMHgwLCAweDI2LCAweDAsIDB4MmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgwLCAweDMzLCAweDAsIDB4MzUsIDB4MCwgMHgzNywgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDAsIDB4NDAsIDB4MCwgMHg0MywgMHgwLCAweDQ4LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4MCwgMHg1MiwgMHgwLCAweDU1LCAweDAsIDB4NTgsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHgwLCAweDYwLCAweDAsIDB4NjQsIDB4MCwgMHg2OSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDAsIDB4NzUsIDB4MCwgMHg3OSwgMHgwLCAweDdjLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4MCwgMHg4NSwgMHgwLCAweDhhLCAweDAsIDB4OTAsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHgwLCAweDk0LCAweDAsIDB4OWIsIDB4MCwgMHg5ZCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDAsIDB4YTYsIDB4MCwgMHhhYiwgMHgwLCAweGFlLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MCwgMHhiOCwgMHgwLCAweGJiLCAweDAsIDB4YmUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgwLCAweGM5LCAweDAsIDB4ZDEsIDB4MCwgMHhkNSwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweDAsIDB4ZTEsIDB4MCwgMHhlNywgMHgwLCAweGViLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4MCwgMHhmZSwgMHgxLCAweDYsIDB4MSwgMHhiLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDB4MSwgMHgxOSwgMHgxLCAweDIwLCAweDEsIDB4MmEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMywgMHgxLCAweDNjLCAweDEsIDB4NGEsIDB4MSwgMHg1NiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDEsIDB4NmQsIDB4MSwgMHg3OSwgMHgxLCAweDg1LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4MSwgMHg5OSwgMHgxLCAweGE0LCAweDEsIDB4YWMsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHgxLCAweGI5LCAweDEsIDB4YzAsIDB4MSwgMHhjYSwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweDEsIDB4ZDksIDB4MSwgMHhlMiwgMHgxLCAweGVlLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjUsIDB4MiwgMHgxLCAweDIsIDB4OSwgMHgyLCAweGUsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHgyLCAweDIxLCAweDIsIDB4MmQsIDB4MiwgMHgzMiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDIsIDB4NDMsIDB4MiwgMHg0YSwgMHgyLCAweDUzLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4MiwgMHg2NiwgMHgyLCAweDcxLCAweDIsIDB4N2EsIDB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHgyLCAweDkyLCAweDIsIDB4YTAsIDB4MiwgMHhhOSwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDIsIDB4YzMsIDB4MiwgMHhjZCwgMHgyLCAweGRiLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4MiwgMHhlZiwgMHgyLCAweGY5LCAweDMsIDB4MywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4MywgMHgxNiwgMHgzLCAweDFkLCAweDMsIDB4MjIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHgzLCAweDJiLCAweDMsIDB4MzIsIDB4MywgMHg0MCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRkLCAweDMsIDB4NWIsIDB4MywgMHg2NCwgMHgzLCAweDZmLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4MywgMHg4NywgMHgzLCAweDk0LCAweDMsIDB4YTEsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHgzLCAweGI3LCAweDMsIDB4YzIsIDB4MywgMHhjZiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDMsIDB4ZTksIDB4MywgMHhmNCwgMHg0LCAweDAsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDQsIDB4MTIsIDB4NCwgMHgxYywgMHg0LCAweDI4LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4NCwgMHg0MCwgMHg0LCAweDRlLCAweDQsIDB4NWMsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg0LCAweDc2LCAweDQsIDB4ODMsIDB4NCwgMHg4ZiwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDQsIDB4YmUsIDB4NCwgMHhjZSwgMHg0MSwgMHg2YywgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg2MSwgMHg0MiwgMHg2NSwgMHg3NCwgMHg2MSwgMHg0NywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg2ZCwgMHg2MSwgMHg0NSwgMHg3MCwgMHg3MywgMHg2OSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2ZSwgMHg1YSwgMHg2NSwgMHg3NCwgMHg2MSwgMHg0NSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg1NCwgMHg2OCwgMHg2NSwgMHg3NCwgMHg2MSwgMHg0OSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2MSwgMHg0YiwgMHg2MSwgMHg3MCwgMHg3MCwgMHg2MSwgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2ZCwgMHg2MiwgMHg2NCwgMHg2MSwgMHg0ZCwgMHg3NSwgMHg0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg1OCwgMHg2OSwgMHg0ZiwgMHg2ZCwgMHg2OSwgMHg2MywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2ZSwgMHg1MCwgMHg2OSwgMHg1MiwgMHg2OCwgMHg2ZiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2NywgMHg2ZCwgMHg2MSwgMHg1NCwgMHg2MSwgMHg3NSwgMHg1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg3MywgMHg2OSwgMHg2YywgMHg2ZiwgMHg2ZSwgMHg1MCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg0MywgMHg2OCwgMHg2OSwgMHg1MCwgMHg3MywgMHg2OSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg3MCwgMHg2OCwgMHg2MSwgMHg2MiwgMHg2NSwgMHg3NCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg2MSwgMHg2ZCwgMHg2ZCwgMHg2MSwgMHg2NCwgMHg2NSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2MSwgMHg2NSwgMHg3MCwgMHg3MywgMHg2OSwgMHg2YywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg3YSwgMHg2NSwgMHg3NCwgMHg2MSwgMHg2NSwgMHg3NCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2OCwgMHg2NSwgMHg3NCwgMHg2MSwgMHg2OSwgMHg2ZiwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YiwgMHg2MSwgMHg3MCwgMHg3MCwgMHg2MSwgMHg2YywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg2MiwgMHg2NCwgMHg2MSwgMHg2ZSwgMHg3NSwgMHg3OCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2ZCwgMHg2OSwgMHg2MywgMHg3MiwgMHg2ZiwgMHg2ZSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg3MiwgMHg2OCwgMHg2ZiwgMHg3MywgMHg2OSwgMHg2NywgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgzMSwgMHg3MywgMHg2OSwgMHg2NywgMHg2ZCwgMHg2MSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg3NSwgMHg3NSwgMHg3MCwgMHg3MywgMHg2OSwgMHg2YywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg3MCwgMHg2OCwgMHg2OSwgMHg2MywgMHg2OCwgMHg2OSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2OSwgMHg2ZiwgMHg2ZCwgMHg2NSwgMHg2NywgMHg2MSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg2NSwgMHg3NCwgMHg2MSwgMHgzMSwgMHg1NSwgMHg3MCwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2YywgMHg2ZiwgMHg2ZSwgMHgzMSwgMHg3MCwgMHg2OCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg2ZiwgMHg2ZCwgMHg2NSwgMHg2NywgMHg2MSwgMHgzMSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2ZSwgMHg3NSwgMHg3NCwgMHg2NSwgMHg3MywgMHg2NSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2ZSwgMHg2NCwgMHg0NSwgMHg3NSwgMHg3MiwgMHg2ZiwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg3MiwgMHg2MSwgMHg2YiwgMHg3NCwgMHg3NSwgMHg3MiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2OSwgMHg2NSwgMHg3MiwgMHg3MywgMHg3NCwgMHg3MiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3MywgMHg1MiwgMHg2NiwgMHg3MiwgMHg2MSwgMHg2YiwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg3MiwgMHg0ZiwgMHg2ZCwgMHg2NSwgMHg2NywgMHg2MSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NSwgMHg3MCwgMHg2OCwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg2YywgMHg2NSwgMHg2NiwgMHg3NCwgMHg2MSwgMHg3MiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg3NywgMHg3NSwgMHg3MCwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg2MSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2ZiwgMHg3NywgMHg2NCwgMHg2ZiwgMHg3NywgMHg2ZSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg3MiwgMHg2ZiwgMHg3NywgMHg2MiwgMHg2ZiwgMHg3NCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg2MSwgMHg3MiwgMHg3MiwgMHg2OSwgMHg2MSwgMHg2NywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2NSwgMHg3NCwgMHg3NSwgMHg3MiwgMHg2ZSwgMHg2MSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2ZiwgMHg3NywgMHg2NCwgMHg2MiwgMHg2YywgMHg2YywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg3NCwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwgMHg3NywgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg2YywgMHg3NSwgMHg3MCwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg2NCwgMHg2MiwgMHg2YywgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwgMHg3NywgMHg2NCwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NCwgMHg2ZiwgMHg3NywgMHg2ZSwgMHg2MSwgMHg3MiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg3NywgMHg2NCwgMHg2MiwgMHg2YywgMHg2MiwgMHg2ZiwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg3NSwgMHg2ZSwgMHg2OSwgMHg3NiwgMHg2NSwgMHg3MiwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YywgMHg3MCwgMHg2MSwgMHg3MiwgMHg3NCwgMHg2OSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NCwgMHg2OSwgMHg2NiwgMHg2NiwgMHg2NSwgMHg3OCwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3NCwgMHg2NSwgMHg2ZSwgMHg3NCwgMHg2OSwgMHg2MSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2ZCwgMHg3MCwgMHg3NCwgMHg3OSwgMHg3MywgMHg2NSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg2NSwgMHg2YywgMHg3NCwgMHg2MSwgMHg2NywgMHg3MiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg2OSwgMHg2NSwgMHg2ZSwgMHg3NCwgMHg2NSwgMHg2YywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg2NSwgMHg2ZSwgMHg3NCwgMHg2ZSwgMHg2ZiwgMHg3NCwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NSwgMHg2ZCwgMHg2NSwgMHg2ZSwgMHg3NCwgMHg3MywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg2OCwgMHg3NCwgMHg2OCwgMHg2MSwgMHg3NCwgMHg3MCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg2NCwgMHg3NSwgMHg2MywgMHg3NCwgMHg3MywgMHg3NSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg2MSwgMHg3NCwgMHg2OSwgMHg2ZiwgMHg2ZSwgMHg2MSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2NSwgMHg3MiwgMHg2OSwgMHg3MywgMHg2YiwgMHg2ZCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2OCwgMHg3MiwgMHg2MSwgMHg2NCwgMHg2OSwgMHg2MywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg3MCwgMHg3MiwgMHg2ZiwgMHg3MCwgMHg2ZiwgMHg3MiwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2ZiwgMHg2ZSwgMHg2MSwgMHg2YywgMHg2OSwgMHg2ZSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2ZSwgMHg2OSwgMHg3NCwgMHg3OSwgMHg2MSwgMHg2ZSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NSwgMHg2YywgMHg2ZiwgMHg2NywgMHg2OSwgMHg2MywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2MSwgMHg2ZSwgMHg2NCwgMHg2YywgMHg2ZiwgMHg2NywgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg2MSwgMHg2YywgMHg2ZiwgMHg3MiwgMHg2OSwgMHg2ZSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg3MiwgMHg3MywgMHg2NSwgMHg2MywgMHg3NCwgMHg2OSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg3NSwgMHg2ZSwgMHg2OSwgMHg2ZiwgMHg2ZSwgMHg2OSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2NSwgMHg2NywgMHg3MiwgMHg2MSwgMHg2YywgMHg3NCwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg3MiwgMHg2NSwgMHg2NiwgMHg2ZiwgMHg3MiwgMHg2NSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2ZCwgMHg2OSwgMHg2YywgMHg2MSwgMHg3MiwgMHg2MywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg2NywgMHg3MiwgMHg3NSwgMHg2NSwgMHg2ZSwgMHg3NCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg3MCwgMHg3MiwgMHg2ZiwgMHg3OCwgMHg2NSwgMHg3MSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YywgMHg2ZSwgMHg2ZiwgMHg3NCwgMHg2NSwgMHg3MSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YywgMHg2NSwgMHg3MSwgMHg3NSwgMHg2OSwgMHg3NiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NSwgMHg2ZSwgMHg2MywgMHg2NSwgMHg2YywgMHg2NSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2NSwgMHg3MSwgMHg3NSwgMHg2MSwgMHg2YywgMHg2NywgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2MSwgMHg3NCwgMHg2NSwgMHg3MiwgMHg2NSwgMHg3MSwgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2YywgMHg3MCwgMHg3MiwgMHg2ZiwgMHg3MCwgMHg2NSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3NSwgMHg2MiwgMHg3MywgMHg2NSwgMHg3NCwgMHg3MCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg3MCwgMHg2NSwgMHg3MiwgMHg3MywgMHg3NSwgMHg3MCwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg3MywgMHg2NSwgMHg3NCwgMHg2ZSwgMHg2ZiwgMHg3NCwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg2MiwgMHg3MywgMHg2NSwgMHg3NCwgMHg3MiwgMHg2NSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NSwgMHg3OCwgMHg3MywgMHg3NSwgMHg2MiwgMHg3MywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3MiwgMHg2NSwgMHg2NiwgMHg2YywgMHg2NSwgMHg3OCwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg3MCwgMHg2NSwgMHg3MiwgMHg3MywgMHg2NSwgMHg3NCwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg3MiwgMHg2MywgMHg2YywgMHg2NSwgMHg3MCwgMHg2YywgMHg3NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg2MywgMHg2OSwgMHg3MiwgMHg2MywgMHg2YywgMHg2NSwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg2YywgMHg3NCwgMHg2OSwgMHg3MCwgMHg2YywgMHg3OSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg3MiwgMHg3MCwgMHg2NSwgMHg2ZSwgMHg2NCwgMHg2OSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg2YywgMHg2MSwgMHg3MiwgMHg2NCwgMHg2ZiwgMHg3NCwgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg3NCwgMHg2OCwgMHg2OSwgMHg2ZSwgMHg3NCwgMHg2NSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2MSwgMHg2YywgMHg3NCwgMHg3MCwgMHg2OSwgMHg2ZSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2NywgMHg3MiwgMHg2MSwgMHg2YywgMHg2MiwgMHg3NCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg2NywgMHg2YywgMHg2NSwgMHg2YywgMHg2NSwgMHg2NiwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2ZSwgMHg2NywgMHg2YywgMHg2NSwgMHg3MiwgMHg2OSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg3NCwgMHg2YywgMHg2ZiwgMHg3YSwgMHg2NSwgMHg2ZSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg3MywgMHg3MCwgMHg2MSwgMHg2NCwgMHg2NSwgMHg2MywgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg2MiwgMHg2OCwgMHg2NSwgMHg2MSwgMHg3MiwgMHg3NCwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2MSwgMHg2ZCwgMHg2ZiwgMHg2ZSwgMHg2NCwgMHg2MywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg3OSwgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg3MiwgMHg2OSwgMHg2NiwgMHg3MiwgMHg2NSwgMHg2NywgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3NCwgMHg2NSwgMHg3MiwgMHg3MywgMHg2NSwgMHg3MiwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NiwgMHg3NCwgMHg3MiwgMHg2MSwgMHg2NCwgMHg2NSwgMHg2ZCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2YiwgMHg3MywgMHg2NSwgMHg3MiwgMHg2OSwgMHg2NiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2NCwgMHg2OSwgMHg2MywgMHg2MSwgMHg2YywgMHg2NSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwgMHg3NywgMHg3NiwgMHg2NSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2NSwgMHg3OCwgMHg2MSwgMHg3MiwgMHg3MiwgMHg2ZiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg2ZiwgMHg3MiwgMHg2OSwgMHg3YSwgMHg2NSwgMHg3OCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2NywgMHg2OSwgMHg3MywgMHg3NCwgMHg2NSwgMHg3MiwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2ZSwgMHg3MywgMHg2MywgMHg2ZiwgMHg3MCwgMHg3OSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg3MywgMHg2MSwgMHg2ZSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3MiwgMHg2MSwgMHg2NCwgMHg2NSwgMHg2ZCwgMHg2MSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg3MywgMHg2MSwgMHg2ZSwgMHg3MywgMHg3MCwgMHg2MSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2ZSwgMHg2YywgMHg2NSwgMHg2NiwgMHg3NCwgMHg3NCwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2ZSwgMHg2YywgMHg2NSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2NSwgMHg3OCwgMHg3MCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg2NSwgMHg2NiwgMHg3NCwgMHg2MiwgMHg3NCwgMHg2MiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2MywgMHg2YiwgMHg2NSwgMHg3NCwgMHg2YywgMHg2NSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3NCwgMHg3MCwgMHg2MiwgMHg3MiwgMHg2MSwgMHg2MywgMHg2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg3NCwgMHg2YywgMHg2NSwgMHg2NiwgMHg3NCwgMHg2NSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg3MiwgMHg2MSwgMHg2MywgMHg2YiwgMHg2NSwgMHg3NCwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2NiwgMHg3NCwgMHg2MiwgMHg3NCwgMHg2MiwgMHg3MiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg2NSwgMHg2YywgMHg2NSwgMHg2NiwgMHg3NCwgMHg3NCwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg3MiwgMHg2MSwgMHg2MywgMHg2NSwgMHg2YywgMHg2NSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2ZCwgMHg2OSwgMHg2NCwgMHg2MiwgMHg3MiwgMHg2MSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2YywgMHg2NSwgMHg2NiwgMHg3NCwgMHg2MiwgMHg3NCwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2MSwgMHg2MywgMHg2NSwgMHg2NSwgMHg3OCwgMHg2OSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2NSwgMHg2NywgMHg3MiwgMHg2MSwgMHg2YywgMHg2NSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2ZSwgMHg3MiwgMHg2OSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg3NCwgMHg3NCwgMHg3MCwgMHg3MCwgMHg2MSwgMHg3MiwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg2NSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg2MSwgMHg3MiwgMHg2NSwgMHg2ZSwgMHg3MiwgMHg2OSwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHg3NCwgMHg2MiwgMHg3NCwgMHg2MiwgMHg3MiwgMHg2MSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg2NSwgMHg3NCwgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3MCwgMHg2MiwgMHg3MiwgMHg2MSwgMHg2MywgMHg2YiwgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg2NSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHg3MiwgMHg2MSwgMHg2MywgMHg2YiwgMHg2NSwgMHg3NCwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg2MiwgMHg3NCwgMHg2MiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg2MywgMHg2NSwgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg3MCwgMHg2MiwgMHg3MiwgMHg2MSwgMHg2MywgMHg2NSwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHg2NywgMHg2OCwgMHg3NCwgMHg2ZCwgMHg2OSwgMHg2NCwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg2MSwgMHg2MywgMHg2NSwgMHg3MiwgMHg2OSwgMHg2NywgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHg2MiwgMHg3NCwgMHg2MSwgMHg3MCwgMHg3MCwgMHg2YywgMHg2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgyMCwgMHg0MywgMHg2OCwgMHg3MiwgMHg2ZiwgMHg2ZCwgMHgyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHg3OSwgMHg2ZCwgMHg2MiwgMHg2ZiwgMHg2YywgMHgyMCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHg0NiwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDQsIDB4MCwgMHgwLCAweDYsIDB4MSwgMHgwLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHgwLCAweGMsIDB4MSwgMHgwLCAweGYsIDB4MTEsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHgwLCAweDAsIDB4M2UsIDB4MCwgMHgwLCAweDQwLCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg1YywgMHgyLCAweDAsIDB4OTcsIDB4MCwgMHgwLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MCwgMHg5YywgMHgwLCAweDAsIDB4OTgsIDB4MCwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE4LCAweDAsIDB4MCwgMHg5ZiwgMHgwLCAweDAsIDB4NjUsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDg3LCAweDMxLCAweDAsIDB4NzQsIDB4MCwgMHgwLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MSwgMHhiOSwgMHgxLCAweDAsIDB4NjMsIDB4MCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweDFiLCAweDAsIDB4YTYsIDB4MCwgMHgxLCAweGQ3LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YmYsIDB4MiwgMHgwLCAweDEsIDB4MCwgMHg0LCAweDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgwLCAweDNiLCAweDAsIDB4YWQsIDB4MSwgMHg2OCwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAweDIsIDB4NWMsIDB4MiwgMHg4ZiwgMHgyLCAweGIwLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCwgMHgzLCAweDEzLCAweDMsIDB4MjcsIDB4MywgMHg3MywgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweDMsIDB4ZjUsIDB4NCwgMHg2NSwgMHg0LCAweDk5LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4NSwgMHg1MywgMHg1LCAweDdhLCAweDUsIDB4ZjEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHg2LCAweDZkLCAweDYsIDB4ZDksIDB4NiwgMHhmMCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4NywgMHgxYywgMHg3LCAweDc5LCAweDcsIDB4OWEsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHg3LCAweGNjLCAweDgsIDB4MTcsIDB4OCwgMHgyZCwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDgsIDB4OTEsIDB4OCwgMHhjOSwgMHg4LCAweGY4LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4OSwgMHg5ZCwgMHg5LCAweGJkLCAweGEsIDB4M2MsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHhiLCAweGEsIDB4YiwgMHg0YywgMHhiLCAweGE5LCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4YywgMHgxOCwgMHhjLCAweGI1LCAweGMsIDB4YzQsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhkLCAweDZmLCAweGQsIDB4Y2EsIDB4ZSwgMHgxMSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4LCAweGUsIDB4ZGQsIDB4ZiwgMHgxYywgMHhmLCAweDY5LCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4ZiwgMHhkZSwgMHgxMCwgMHgyZSwgMHgxMCwgMHhhYiwgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHgxMSwgMHhhYiwgMHgxMiwgMHgxYSwgMHgxMiwgMHhhOCwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDEzLCAweDg3LCAweDE0LCAweGEsIDB4MTQsIDB4OTAsIDB4MTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjYsIDB4MTUsIDB4NGQsIDB4MTUsIDB4ODksIDB4MTYsIDB4NCwgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHgxNiwgMHhhYywgMHgxNywgMHg2MiwgMHgxNywgMHhhOCwgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxOCwgMHg3MSwgMHgxOCwgMHhlMywgMHgxOSwgMHgyZSwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgxOSwgMHhlMywgMHgxYSwgMHg0NywgMHgxYSwgMHhhMywgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHgxYiwgMHg5MywgMHgxYywgMHgyNCwgMHgxYywgMHg4NSwgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgxZCwgMHg4NywgMHgxZCwgMHhhYiwgMHgxZCwgMHhkMCwgMHgxZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgxZSwgMHgxZiwgMHgxZSwgMHgzOCwgMHgxZSwgMHhjMywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHgyMCwgMHhjLCAweDIwLCAweGU5LCAweDIxLCAweDcyLCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweDIyLCAweDRiLCAweDIyLCAweDc5LCAweDIyLCAweGE1LCAweDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDIzLCAweDMxLCAweDIzLCAweDUzLCAweDIzLCAweDk2LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ1LCAweDI0LCAweGYsIDB4MjQsIDB4NGUsIDB4MjQsIDB4YWQsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4MjUsIDB4NDYsIDB4MjUsIDB4NmIsIDB4MjUsIDB4ZWEsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgyNiwgMHgzMywgMHgyNiwgMHg3NCwgMHgyNiwgMHhlNiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHgyNywgMHg4MCwgMHgyNywgMHhkOCwgMHgyNywgMHhlMywgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMywgMHgyOSwgMHgxNiwgMHgyOSwgMHg4OCwgMHgyOSwgMHhmMywgMHgyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDJhLCAweDI2LCAweDJhLCAweDQ5LCAweDJhLCAweDdmLCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweDJiLCAweGMsIDB4MmIsIDB4NTQsIDB4MmIsIDB4YTAsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmMsIDB4NDYsIDB4MmMsIDB4ODQsIDB4MmMsIDB4YTEsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4MmMsIDB4YzgsIDB4MmMsIDB4ZmEsIDB4MmQsIDB4MjQsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4MmQsIDB4YjYsIDB4MmQsIDB4ZWYsIDB4MmUsIDB4MzEsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4MmUsIDB4OTgsIDB4MmUsIDB4YjcsIDB4MmUsIDB4ZjEsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmQsIDB4MmYsIDB4NDUsIDB4MmYsIDB4NWYsIDB4MmYsIDB4OTUsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYsIDB4MzAsIDB4OGUsIDB4MzAsIDB4ZGEsIDB4MzAsIDB4ZjksIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTUsIDB4MzEsIDB4ZWIsIDB4MzIsIDB4ODcsIDB4MzIsIDB4OTksIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MzIsIDB4YzAsIDB4MzMsIDB4NDUsIDB4MzMsIDB4OTIsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4MzQsIDB4NiwgMHgzNCwgMHgxMiwgMHgzNCwgMHgzYSwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHgzNCwgMHg2OCwgMHgzNCwgMHg4NCwgMHgzNCwgMHhhNywgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHgzNCwgMHhmNCwgMHgzNCwgMHhmYiwgMHgzNSwgMHhlLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDM1LCAweDQzLCAweDM1LCAweDZiLCAweDM1LCAweDhhLCAweDM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDM1LCAweGJiLCAweDM1LCAweGQ3LCAweDM2LCAweDUsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4MzYsIDB4OTcsIDB4ZmMsIDB4NDUsIDB4ZSwgMHhmYywgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweGYyLCAweDdhLCAweGY3LCAweDQsIDB4ZjgsIDB4ZDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhmNywgMHgxNCwgMHhmNywgMHg0LCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4ZjcsIDB4NjQsIDB4MTUsIDB4N2YsIDB4OGMsIDB4OTAsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4MWIsIDB4OGYsIDB4OGYsIDB4OTEsIDB4OTcsIDB4OGQsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4ZjcsIDB4YjgsIDB4OTQsIDB4YzEsIDB4YjYsIDB4MWEsIDB4Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4OTYsIDB4NzUsIDB4NzUsIDB4NjksIDB4ODEsIDB4NGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmMsIDB4YzIsIDB4NCwgMHgyMiwgMHhhLCAweGZiLCAweDRiLCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDY0LCAweGI5LCAweGY3LCAweDRhLCAweGI5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDc3LCAweDEsIDB4OWYsIDB4ZjgsIDB4NjEsIDB4MywgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHgxNSwgMHhiYSwgMHg2LCAweGE4LCAweGY3LCAweDY0LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTAsIDB4NiwgMHg2ZiwgMHhmYiwgMHg2NCwgMHg1LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTcsIDB4ZjcsIDB4NjQsIDB4NSwgMHhmMywgMHg2LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDUsIDB4MjQsIDB4NiwgMHhhMywgMHhmNywgMHg0YSwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweDYsIDB4OTEsIDB4YjksIDB4NSwgMHgyNSwgMHg2LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYzLCAweDUsIDB4NWMsIDB4NiwgMHg2ZiwgMHhmYiwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDExLCAweDYsIDB4YTgsIDB4ZjcsIDB4NjMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg2LCAweDZlLCAweGZiLCAweDYzLCAweDUsIDB4MjcsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg1ZCwgMHg1LCAweGVmLCAweDYsIDB4NzIsIDB4ZmIsIDB4NGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHgyNCwgMHg2LCAweDg1LCAweDVkLCAweDUsIDB4ZjIsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhiOSwgMHgxNSwgMHhhNCwgMHhmNywgMHg0YSwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAweDYsIDB4NzMsIDB4ZmIsIDB4NGEsIDB4NSwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJhLCAweDVkLCAweGIxLCAweGY3LCAweGE2LCAweGJjLCAweDdjLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcwLCAweGE3LCAweGQwLCAweDc3LCAweDEyLCAweGNhLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcwLCAweGE4LCAweGI3LCAweGQ2LCAweGY3LCAweDc5LCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRmLCAweDgwLCAweGY3LCAweDNmLCAweDY3LCAweDE1LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjgsIDB4NGQsIDB4ZjksIDB4NDcsIDB4NSwgMHg1NCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDgyLCAweDMzLCAweDZiLCAweDVjLCAweDFiLCAweDUzLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGE0LCAweDgzLCAweDhmLCAweDgsIDB4YTAsIDB4NzEsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWYsIDB4NjMsIDB4MWIsIDB4ZmIsIDB4NCwgMHhmYiwgMHg2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweGZiLCAweDE5LCAweDQwLCAweGI5LCAweDY1LCAweGM3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGU0LCAweGY3LCAweDI1LCAweGVmLCAweDhjLCAweDFmLCAweGEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGEwLCAweDg4LCAweDlmLCAweDFlLCAweDljLCAweDgxLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweGFjLCAweDhjLCAweGIwLCAweDhjLCAweGIzLCAweDkzLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDgsIDB4ZmIsIDB4NjksIDB4ODcsIDB4MTUsIDB4OGQsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4ODAsIDB4NmYsIDB4MWEsIDB4M2EsIDB4NDUsIDB4ZmIsIDB4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg2NiwgMHg3ZSwgMHhiMywgMHhhZCwgMHhlMywgMHhkYSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhjZCwgMHg5NSwgMHgxZSwgMHg5YiwgMHg3ZSwgMHhhYywgMHg3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHg4MiwgMHg4LCAweGQ4LCAweGZjLCAweDdlLCAweDE1LCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDVlLCAweGQ4LCAweGY3LCAweGMsIDB4ZTQsIDB4ZjcsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4MWUsIDB4MTMsIDB4YmYsIDB4ODAsIDB4YzIsIDB4NzYsIDB4Y2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUsIDB4ZmIsIDB4MTgsIDB4MmIsIDB4ZmIsIDB4MjAsIDB4ZmIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhkNiwgMHg4MCwgMHgxNSwgMHhlOCwgMHhkZiwgMHhmNywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMywgMHg4YSwgMHgxZSwgMHhjNiwgMHg5OSwgMHg1YywgMHg2MCwgMHgzOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzOCwgMHhmYiwgMHgxMSwgMHgyNiwgMHg2YywgMHg3ZCwgMHhiMCwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweGVhLCAweDc5LCAweGM2LCAweDUwLCAweGQ2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVkLCAweDlkLCAweGY3LCAweDVkLCAweGIzLCAweDEyLCAweGI0LCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGQ3LCAweDhiLCAweGY3LCAweDM4LCAweDhiLCAweGJkLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweGY4LCAweDNlLCAweGRkLCAweDE1LCAweDc2LCAweGEwLCAweGQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweGRiLCAweDFiLCAweDEzLCAweGJmLCAweGRiLCAweGIyLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ4LCAweGFjLCAweDFmLCAweDdiLCAweDk5LCAweDUsIDB4NjYsIDB4NjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NzcsIDB4NzMsIDB4MWIsIDB4NGYsIDB4NTYsIDB4YzIsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4MWYsIDB4Y2MsIDB4ZDcsIDB4OWYsIDB4YjcsIDB4YjIsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhhZiwgMHhhMiwgMHhhMywgMHhiNSwgMHhiZCwgMHgxYiwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg2NywgMHg3OSwgMHg3LCAweGFlLCAweGEyLCAweDdkLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDQ4LCAweGZiLCAweGEsIDB4NzUsIDB4N2IsIDB4MWYsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4NjAsIDB4ZDYsIDB4NjksIDB4YzksIDB4OCwgMHhlMiwgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNSwgMHhhYiwgMHhlOCwgMHgxYSwgMHhjOSwgMHg0ZCwgMHhjMywgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHg0ZCwgMHg1NCwgMHgyNCwgMHgxZSwgMHgxMywgMHg5ZiwgMHg1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg2ZiwgMHg5YywgMHg1YiwgMHgxZSwgMHhmYiwgMHgyLCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDVmLCAweGZiLCAweGQsIDB4MWEsIDB4ZmIsIDB4MCwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHhlNCwgMHhmNywgMHgxMSwgMHhjMiwgMHhkMCwgMHhhYSwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHhkLCAweGY3LCAweGRjLCAweDE1LCAweDdjLCAweGIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGJjLCAweGI4LCAweDFhLCAweGI2LCAweGIxLCAweGIwLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGI2LCAweDZhLCAweDUyLCAweDUxLCAweDNjLCAweDZhLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweDFlLCAweGU4LCAweGZiLCAweGM0LCAweDE1LCAweDEzLCAweGJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDgzLCAweDRlLCAweDUzLCAweDQ4LCAweDFiLCAweDQ0LCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweGRhLCAweGU0LCAweGQyLCAweGIxLCAweGI0LCAweGFhLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweDNiLCAweGEyLCAweDViLCAweGRlLCAweDI0LCAweDgsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MCwgMHhhLCAweGMwLCAweGRkLCAweDMsIDB4ZjcsIDB4YjYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4MTUsIDB4OTUsIDB4OWMsIDB4NSwgMHhmYiwgMHhlLCAweGU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGY3LCAweDM1LCAweGY3LCAweDNhLCAweDFhLCAweGY3LCAweDQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGY3LCAweDJmLCAweGY3LCAweDE3LCAweGUwLCAweDFlLCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweDUsIDB4ZmIsIDB4MCwgMHg3MiwgMHhmYiwgMHgxNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYSwgMHhmYiwgMHg5NSwgMHgxYSwgMHhmYiwgMHg3YSwgMHhmNywgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg0OCwgMHhlYSwgMHg3NSwgMHgxZSwgMHhlLCAweDUwLCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTgsIDB4ZGQsIDB4MywgMHhiNCwgMHhmYiwgMHg1MywgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhhMSwgMHhmNywgMHgyMiwgMHhmNywgMHg0OCwgMHhmNywgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmNywgMHg5NSwgMHhmYiwgMHgxNSwgMHhmNywgMHgyYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGE0LCAweDFlLCAweDgxLCAweDdhLCAweDUsIDB4ZjcsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4YWQsIDB4ZmIsIDB4MmYsIDB4ZmIsIDB4NDAsIDB4MWEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4NjAsIDB4ZmIsIDB4MzUsIDB4ZmIsIDB4ZSwgMHgzMCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweGJlLCAweDhiLCAweDEsIDB4ZjcsIDB4OGIsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHg5NSwgMHhmNywgMHg4NywgMHgxNSwgMHhmNywgMHg4MSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHhjMiwgMHhmNywgMHg4NywgMHhmNywgMHg4MSwgMHhjMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MSwgMHhmNywgMHg3ZiwgMHg1NCwgMHhmYiwgMHg3ZiwgMHhmYiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZmMsIDB4NDUsIDB4ZmIsIDB4MTcsIDB4NzYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjQsIDB4ZjcsIDB4NCwgMHgyMiwgMHhmNCwgMHgxMiwgMHhjMywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgxMywgMHhkMCwgMHhjMywgMHhiOCwgMHgxNSwgMHg2YiwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhhZiwgMHgxZSwgMHgxMywgMHhiMCwgMHg5NywgMHg5OSwgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg5MywgMHgxZiwgMHg4ZiwgMHg4YSwgMHg4ZCwgMHg4OSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg1NCwgMHg1MSwgMHg2MiwgMHg3MywgMHg3OSwgMHgxZSwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg4MywgMHg4NiwgMHg4NCwgMHgxYSwgMHg4NCwgMHg5MCwgMHg4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHg4ZiwgMHg5MiwgMHg4YywgMHg5MCwgMHg5MiwgMHgxZSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhhYywgMHhhNCwgMHg5ZiwgMHhhNCwgMHg4LCAweGFmLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGI0LCAweGE3LCAweDFhLCAweGJhLCAweDY1LCAweGE3LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVmLCAweDc3LCAweDZjLCAweDZmLCAweDFlLCAweGUsIDB4ZmMsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4ZjcsIDB4NCwgMHgxLCAweGQwLCAweGY3LCAweDQsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhiMiwgMHgxNSwgMHgyMiwgMHhhLCAweGZjLCAweDI5LCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDJjLCAweDc3LCAweDEsIDB4NzksIDB4NCwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDY2LCAweGY5LCAweDJjLCAweDUsIDB4NWYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweDRiLCAweDdhLCAweGFiLCAweGY5LCAweDE0LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YTIsIDB4ZWUsIDB4ZjcsIDB4OTMsIDB4ZTksIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGY3LCAweGUzLCAweDE1LCAweGQ0LCAweDhiLCAweGY3LCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE0LCAweGY3LCAweDE0LCAweDhhLCAweGZiLCAweDhiLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDhjLCAweGZiLCAweDgxLCAweGZiLCAweDE0LCAweGZiLCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGY3LCAweDdmLCAweGUwLCAweDFlLCAweDI4LCAweDE2LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweGI2LCAweGZiLCAweDc3LCAweGY3LCAweDRjLCAweGY3LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweGY3LCAweDc3LCAweGY3LCAweDExLCAweGY3LCAweGYsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzcsIDB4ZmIsIDB4NGMsIDB4ZmIsIDB4NGMsIDB4NjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4ZmIsIDB4ZiwgMHgxZSwgMHhlLCAweGZiLCAweDRiLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NjksIDB4ZGYsIDB4MywgMHhmNywgMHg5LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGE1LCAweDlkLCAweDYsIDB4N2UsIDB4M2IsIDB4OTYsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZjgsIDB4ZDEsIDB4NzksIDB4NywgMHhmYiwgMHgzNiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDc5LCAweDcsIDB4YzQsIDB4YTAsIDB4NSwgMHhhNywgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg3ZSwgMHg3NywgMHgxYSwgMHhmYywgMHg2NCwgMHg3LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweDgwLCAweDdlLCAweDFlLCAweGUsIDB4ZmIsIDB4NGIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4ZjgsIDB4MWMsIDB4OWQsIDB4ZjcsIDB4YywgMHhkYiwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUwLCAweGU1LCAweDMsIDB4YTQsIDB4MTYsIDB4ZjgsIDB4MWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjNCwgMHhmNywgMHgxZCwgMHg3ZSwgMHg5MCwgMHg1LCAweDRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDZlLCAweDg4LCAweDY0LCAweDFiLCAweGZiLCAweDc3LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTgsIDB4ZjcsIDB4NWMsIDB4ZWQsIDB4ZjcsIDB4NiwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHhmNywgMHhkLCAweDQxLCAweGQwLCAweDIyLCAweDMzLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweGZiLCAweDJiLCAweDZkLCAweDFlLCAweGEwLCAweDg2LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4YTEsIDB4YTksIDB4ZDIsIDB4ZTYsIDB4MWIsIDB4ZjcsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMSwgMHgzMCwgMHg1YywgMHgzNywgMHg1ZCwgMHgzNCwgMHg0NiwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHg1NCwgMHhmYiwgMHg2NiwgMHg1LCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4N2EsIDB4YjIsIDB4ZjgsIDB4ZWYsIDB4YzcsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2YsIDB4ZGQsIDB4NjUsIDB4ZDcsIDB4MTMsIDB4ZDAsIDB4ZjcsIDB4MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZTgsIDB4MTUsIDB4ZjEsIDB4OGMsIDB4ZjcsIDB4NCwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxLCAweDFhLCAweDM3LCAweDYyLCAweDNjLCAweDJlLCAweDZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweDk3LCAweDljLCAweDc2LCAweDFlLCAweDljLCAweDc2LCAweDc3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDc0LCAweDFiLCAweDY4LCAweDdkLCAweDdlLCAweDZlLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDEwLCAweDg2LCAweDllLCAweGY3LCAweDIwLCAweGY3LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4MTYsIDB4MzYsIDB4YjUsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4MWYsIDB4MTMsIDB4ZTAsIDB4Y2QsIDB4YjgsIDB4YTYsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4MWEsIDB4YjQsIDB4NzAsIDB4ZTksIDB4ZmIsIDB4MTUsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4NmIsIDB4ZmIsIDB4MTcsIDB4NjMsIDB4MWUsIDB4OWEsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhhNywgMHg5YSwgMHhiYiwgMHhkYSwgMHhlNiwgMHgxYiwgMHhkNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg1NiwgMHg1OCwgMHgyZiwgMHg0MCwgMHg1YiwgMHgyYywgMHg3MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4NiwgMHg4YiwgMHg4NiwgMHg4NiwgMHgxYSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRiLCAweGEwLCAweDc2LCAweGY3LCAweDMzLCAweGQxLCAweGY4LCAweDVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDEsIDB4OWIsIDB4YjgsIDB4ZjcsIDB4ODEsIDB4ZGYsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHhmNywgMHgzMywgMHgxNSwgMHhmNywgMHhhZSwgMHhmYiwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhmNywgMHgzMywgMHhlMiwgMHhkMSwgMHgzNCwgMHhmOCwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHg2LCAweGZiLCAweGQwLCAweGZjLCAweDViLCAweDUsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4MTUsIDB4ZjcsIDB4ODEsIDB4ZjcsIDB4ZTQsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHg3LCAweGUsIDB4ZmIsIDB4NGIsIDB4N2EsIDB4YjMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWMsIDB4ZTAsIDB4ZTksIDB4ZGEsIDB4MSwgMHhmNywgMHhmNywgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGM3LCAweGY4LCAweDMzLCAweDE1LCAweGY3LCAweDcsIDB4ODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDgsIDB4NTksIDB4ZmIsIDB4MzQsIDB4MWEsIDB4ZmIsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHg1NCwgMHg0YSwgMHg3MCwgMHg3OCwgMHg5ZCwgMHg5ZCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg5ZCwgMHg3OCwgMHg3NywgMHg5ZCwgMHg2ZCwgMHgxYiwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg3YSwgMHg2YiwgMHg1NywgMHhlNSwgMHg4MCwgMHhiZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMiwgMHhlZSwgMHhmNywgMHgxLCAweGY3LCAweDE5LCAweGY3LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGY3LCAweDQsIDB4ZmIsIDB4NTcsIDB4OTUsIDB4MWYsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4NSwgMHhmNywgMHg3OSwgMHg2LCAweGIxLCAweGUxLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDUsIDB4ODEsIDB4ODEsIDB4NmUsIDB4ODksIDB4NjQsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NDgsIDB4NiwgMHhlLCAweGZiLCAweDRiLCAweDdkLCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDQsIDB4YjksIDB4ZjcsIDB4OTUsIDB4NzcsIDB4MSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhmNywgMHg4ZiwgMHhlNSwgMHgzLCAweGY4LCAweDUxLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDE1LCAweGZiLCAweDg1LCAweDgyLCAweGZiLCAweDNlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGZiLCAweDVmLCAweDFhLCAweGZiLCAweDY2LCAweGYxLCAweDJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEsIDB4ZjcsIDB4NDYsIDB4YWYsIDB4ZjcsIDB4MzMsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWEsIDB4M2QsIDB4ZDcsIDB4MjIsIDB4NTQsIDB4NzQsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmMsIDB4NTIsIDB4MWUsIDB4YTAsIDB4ZjcsIDB4YywgMHhlZSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHg0OCwgMHhhNywgMHg4LCAweGZiLCAweGNlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweDE1LCAweGFkLCAweGFmLCAweGFmLCAweDkzLCAweGIwLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYyLCAweGE5LCAweDI3LCAweDI0LCAweGZiLCAweDUsIDB4NWQsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4NDAsIDB4NDgsIDB4ZDUsIDB4ZjcsIDB4M2MsIDB4YWQsIDB4OGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4OTMsIDB4YTMsIDB4MWYsIDB4ZSwgMHhmYiwgMHg0YiwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmOCwgMHhlOSwgMHhlNSwgMHgxLCAweGY3LCAweDQzLCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGM3LCAweDYsIDB4ZjcsIDB4NjksIDB4ZjksIDB4MjUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhmYiwgMHhmZiwgMHg3LCAweDRlLCAweGZiLCAweDM0LCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyLCAweDUsIDB4YjMsIDB4YTMsIDB4YTYsIDB4YjIsIDB4YzMsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NmQsIDB4NiwgMHhlLCAweGZiLCAweDRiLCAweDc5LCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGUsIDB4YjAsIDB4MTIsIDB4YzEsIDB4ZDksIDB4NDUsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzIsIDB4Y2MsIDB4NTUsIDB4ZDYsIDB4MTMsIDB4ZTQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4ZjcsIDB4Y2QsIDB4MTUsIDB4ZjcsIDB4NCwgMHgzOCwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHg0MSwgMHgxYSwgMHg0NSwgMHg1ZCwgMHg2MSwgMHg0YywgMHgzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHhjYywgMHhkOCwgMHhlNiwgMHhiMywgMHhiMiwgMHhhZSwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg2ZiwgMHhhNiwgMHgxNSwgMHgzNCwgMHg0YSwgMHg2NSwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHgxYSwgMHgzZCwgMHhjZiwgMHgzNSwgMHhmNywgMHgxMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhhNywgMHhmNywgMHg4LCAweGJmLCAweGNlLCAweDdjLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE2LCAweGUxLCAweDFlLCAweDEzLCAweGQ4LCAweGMxLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQxLCAweGJjLCAweGU3LCAweDFhLCAweGQ3LCAweDRjLCAweGNkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MzUsIDB4MmMsIDB4NTUsIDB4MjYsIDB4M2EsIDB4YWIsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4NDAsIDB4MWUsIDB4ZGUsIDB4YmQsIDB4MTUsIDB4NjgsIDB4YTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAsIDB4YzQsIDB4ZDksIDB4MWEsIDB4YmIsIDB4YWIsIDB4YzAsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4YWQsIDB4NTUsIDB4NTQsIDB4MzMsIDB4NTYsIDB4NjYsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4MWUsIDB4ZSwgMHhmYiwgMHg0YiwgMHg4ZSwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHhiNiwgMHhmOCwgMHhlLCAweGFjLCAweDEsIDB4YWEsIDB4ZTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODQsIDB4ZWQsIDB4MywgMHhjMiwgMHg4ZCwgMHgxNSwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg1LCAweGY3LCAweDhlLCAweDk4LCAweGY3LCAweDJhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGY3LCAweDc1LCAweDFhLCAweGY3LCAweDNiLCAweDJhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZmIsIDB4ZiwgMHhmYiwgMHgxNiwgMHgzYywgMHhmYiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE5LCAweDM5LCAweGI4LCAweGZiLCAweDEyLCAweGY3LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweGMwLCAweDlkLCAweGIwLCAweGI3LCAweDFlLCAweDg3LCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGZiLCAweDZkLCAweGZiLCAweDg3LCAweDYzLCAweDgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4ZjcsIDB4ZDgsIDB4MTUsIDB4NjksIDB4NmEsIDB4NjEsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MWIsIDB4MjEsIDB4NzUsIDB4ZjcsIDB4MTMsIDB4ZDcsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4ZTgsIDB4ZGYsIDB4ZjcsIDB4MTcsIDB4OGQsIDB4ZmIsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4NzYsIDB4ODksIDB4NjksIDB4ODksIDB4NzgsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgyOSwgMHg3YSwgMHhmNywgMHg0LCAweGY3LCAweDkxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MSwgMHhkYywgMHhmNywgMHg0LCAweDMsIDB4ZGMsIDB4YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcsIDB4YSwgMHhmOCwgMHgxLCAweDQsIDB4MjIsIDB4YSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOSwgMHhmYiwgMHgxNywgMHg3NiwgMHhmNywgMHgzYiwgMHg3NiwgMHhhNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhmNywgMHhmMCwgMHhmNywgMHg0LCAweDEyLCAweGRlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGZiLCAweDE1LCAweGY3LCAweDQsIDB4MTMsIDB4ZDgsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MTUsIDB4NzIsIDB4OWIsIDB4NzQsIDB4YjAsIDB4OTAsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4OGQsIDB4OTAsIDB4MWUsIDB4MTMsIDB4YjgsIDB4OGQsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4OGMsIDB4OGYsIDB4MWIsIDB4OTEsIDB4OGYsIDB4ODcsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4N2IsIDB4NzEsIDB4N2IsIDB4N2EsIDB4MWYsIDB4N2MsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4N2YsIDB4N2YsIDB4ODMsIDB4OCwgMHg3ZSwgMHg4MiwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4MCwgMHgxYSwgMHg4NiwgMHg4ZCwgMHg4OCwgMHg5MSwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg4YiwgMHg4YywgMHg5MCwgMHgxZSwgMHg5NSwgMHg4ZCwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhhNSwgMHhhYSwgMHg4LCAweGE4LCAweGFlLCAweDk0LCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFiLCAweDFhLCAweGIyLCAweDZhLCAweGFmLCAweDVkLCAweDZhLCAweDcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDY3LCAweDFlLCAweDEzLCAweGQ0LCAweDk0LCAweGY3LCAweGZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDIyLCAweGEsIDB4YTAsIDB4NzYsIDB4ZjgsIDB4OWUsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhNSwgMHhmNywgMHg3YSwgMHgxNSwgMHhmOCwgMHg4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg1LCAweGM5LCAweDcsIDB4ZmMsIDB4NDUsIDB4ZjcsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4YSwgMHhmNywgMHgyMSwgMHhjMiwgMHhmNywgMHgxZiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDk2LCAweGY3LCAweGUzLCAweDE1LCAweDNhLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4NCwgMHgzYSwgMHhhLCAweGUsIDB4YTAsIDB4NzYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4NzcsIDB4MSwgMHhmOCwgMHg5ZiwgMHhmNywgMHg3YSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MSwgMHhhLCAweGY4LCAweDQ0LCAweGZiLCAweDViLCAweGZjLCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDViLCAweDUsIDB4NGQsIDB4NywgMHhlLCAweGZiLCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdhLCAweGY3LCAweDQsIDB4ZjgsIDB4YzMsIDB4YWIsIDB4MSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhmNywgMHg0LCAweGE2LCAweGViLCAweDMsIDB4ZjcsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4M2IsIDB4MTUsIDB4YTAsIDB4NiwgMHg5OCwgMHhlNywgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhhZCwgMHhiMywgMHg4LCAweDlmLCAweGEzLCAweGM2LCAweGQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ2LCAweDFhLCAweGJkLCAweDc3LCAweGY2LCAweGZiLCAweDMyLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NWIsIDB4MzIsIDB4NGEsIDB4NjksIDB4OWYsIDB4NjgsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTEsIDB4OWIsIDB4OTcsIDB4YTUsIDB4OWUsIDB4ODAsIDB4OTksIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWEsIDB4MWUsIDB4ODIsIDB4OTgsIDB4ODIsIDB4OTksIDB4OWUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4YjksIDB4OWYsIDB4YmUsIDB4YzEsIDB4YjcsIDB4NTYsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4NzYsIDB4NTYsIDB4NzUsIDB4NTEsIDB4MWUsIDB4NzcsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4NDgsIDB4ODUsIDB4NGQsIDB4OCwgMHg1OSwgMHhmYiwgMHgxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgyMiwgMHhhLCAweDRlLCAweGEsIDB4ZTEsIDB4ZDgsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHhmYiwgMHgyZiwgMHgxNSwgMHhmNywgMHg2OSwgMHhhNCwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDY0LCAweDc5LCAweGEzLCAweGIwLCAweDFmLCAweGY5LCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YjAsIDB4OWQsIDB4YTMsIDB4YjIsIDB4MWUsIDB4ZGEsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NjksIDB4NiwgMHhlLCAweDRlLCAweGEsIDB4ZjcsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4MywgMHhhYywgMHhmYiwgMHgxNiwgMHgxNSwgMHg3MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHhmOSwgMHhkMSwgMHhmYiwgMHg2OSwgMHg3MiwgMHhkYSwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweDlkLCAweDczLCAweDY2LCAweDFmLCAweGZkLCAweDI1LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjYsIDB4NzksIDB4NzMsIDB4NjQsIDB4MWUsIDB4ZSwgMHhmYiwgMHg0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5MCwgMHhiOSwgMHgxLCAweDg5LCAweGZiLCAweDYyLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweGY4LCAweDhjLCAweGI5LCAweDcsIDB4ZSwgMHg0ZCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRlLCAweGQ2LCAweDMsIDB4YzUsIDB4ZjcsIDB4N2MsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4N2YsIDB4ZDIsIDB4OGIsIDB4MjcsIDB4MWEsIDB4ZmIsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHgzOSwgMHhhYywgMHg2ZCwgMHhkOCwgMHgxZSwgMHhmMCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg2LCAweDUyLCAweDZkLCAweGFhLCAweGMzLCAweDFmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDcsIDB4ZGIsIDB4MjgsIDB4YjQsIDB4NWIsIDB4OGUsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjgsIDB4OTMsIDB4ZjEsIDB4YWYsIDB4ZGQsIDB4MWEsIDB4ZjcsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhjNSwgMHhhOSwgMHhhOCwgMHhjNCwgMHgxZSwgMHhiYywgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHg2LCAweDNmLCAweDY5LCAweDcxLCAweDM1LCAweDFmLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDcsIDB4MjcsIDB4NDQsIDB4OGIsIDB4NTIsIDB4N2YsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYywgMHg3NywgMHhmYiwgMHgzMCwgMHg3NiwgMHhmOSwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGNjLCAweGQxLCAweDMsIDB4Y2MsIDB4ZmIsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZDEsIDB4ZjksIDB4ZTYsIDB4NDUsIDB4NiwgMHhlLCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NmIsIDB4ZDYsIDB4MywgMHhkYSwgMHhmYiwgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg3MiwgMHhmMCwgMHg3LCAweGQ4LCAweGFjLCAweGE3LCAweGRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDUzLCAweDcsIDB4ZWYsIDB4ZDIsIDB4OGIsIDB4YzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MWUsIDB4YTUsIDB4NywgMHg1MiwgMHg5NywgMHg0NCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZiwgMHgxYSwgMHhmNywgMHg1MywgMHg3LCAweGRkLCAweDZiLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDFlLCAweDI2LCAweDcyLCAweGJjLCAweDYsIDB4YmQsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NGIsIDB4MWYsIDB4ZmIsIDB4NTMsIDB4NywgMHgzOSwgMHhmMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHhiNiwgMHg4MywgMHgxZSwgMHg1ZSwgMHg4OSwgMHgyNSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHgxYSwgMHhmYiwgMHg1MywgMHg3LCAweDRiLCAweDY2LCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5LCAweDFlLCAweGUsIDB4YTksIDB4ZjcsIDB4N2QsIDB4YzIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhmMSwgMHhjMiwgMHgzLCAweGFlLCAweGY3LCAweGI0LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweDUsIDB4ZmIsIDB4YjQsIDB4NTQsIDB4ZjcsIDB4N2QsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4NiwgMHhlLCAweGZiLCAweGFmLCAweGY4LCAweDE1LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDZlLCAweGI0LCAweDEsIDB4YmQsIDB4YjYsIDB4ZjcsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MywgMHhiZCwgMHhmOCwgMHhhYiwgMHgxNSwgMHgzOCwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHhkZSwgMHhkZCwgMHhjZiwgMHhjZSwgMHhkZSwgMHhkZCwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjZiwgMHgzOSwgMHgzOCwgMHg0OCwgMHg0OSwgMHgzNywgMHgxZSwgMHhiNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhjNywgMHhiOSwgMHhiYywgMHhjNywgMHhjOCwgMHhiYiwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg0ZSwgMHg1YiwgMHg1YiwgMHg0ZiwgMHg0ZSwgMHg1ZCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjOCwgMHgxZSwgMHhlLCAweDhiLCAweGMyLCAweGY3LCAweGJlLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgxLCAweDc3LCAweDEsIDB4ZjcsIDB4OGIsIDB4YzIsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NSwgMHhmNywgMHhmNSwgMHgxNSwgMHhmNywgMHg4MSwgMHhmYiwgMHg4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmNywgMHg4MiwgMHhmNywgMHg4MSwgMHhjMiwgMHhmYiwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4MSwgMHg1NCwgMHhmYiwgMHg4MSwgMHhmYiwgMHg4MSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDJjLCAweDQsIDB4ZjgsIDB4YTUsIDB4YzIsIDB4ZmMsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweDIwLCAweGZiLCAweDVlLCAweDc2LCAweGY3LCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDU5LCAweGQyLCAweGY4LCAweDUzLCAweDc3LCAweDEyLCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweGY3LCAweDYzLCAweGUxLCAweDEzLCAweGRjLCAweGVjLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDZjLCAweDljLCAweGJkLCAweDc5LCAweGI0LCAweDFiLCAweGNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQzLCAweGQyLCAweGIxLCAweDlhLCAweDFmLCAweDUyLCAweDhjLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweGNmLCAweDFiLCAweGQxLCAweGE3LCAweGM2LCAweGM3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDYsIDB4NzIsIDB4ODEsIDB4ODAsIDB4NWYsIDB4NjcsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjksIDB4N2IsIDB4YmQsIDB4YWQsIDB4MWYsIDB4ZjgsIDB4MTQsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ZmUsIDB4NywgMHgxMywgMHhiYywgMHg1ZCwgMHg2ZiwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwgMHg1YywgMHgxYiwgMHg0YSwgMHg3MSwgMHhiZiwgMHhjOSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhlMSwgMHgzNSwgMHhmYywgMHg4MCwgMHg3LCAweDczLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDg3LCAweDdiLCAweDFlLCAweDgzLCAweDZiLCAweDdlLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDFhLCAweDY2LCAweDllLCAweDY1LCAweGE4LCAweGE2LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGIwLCAweGIwLCAweDdlLCAweGExLCAweDgyLCAweGFmLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDliLCAweDg4LCAweDlmLCAweDhhLCAweGEzLCAweDgsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg3NiwgMHhmOCwgMHg5OCwgMHg3NywgMHgxLCAweDljLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGFmLCAweDY2LCAweGY3LCAweDcyLCAweGY3LCAweDcyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweGZiLCAweDcyLCAweGFmLCAweGIwLCAweGZiLCAweDcwLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcxLCAweGY3LCAweDcwLCAweGY3LCAweDcxLCAweDY4LCAweGIwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGZiLCAweDcyLCAweGZiLCAweDcyLCAweGY3LCAweDcyLCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGY3LCAweDcwLCAweGZiLCAweDcxLCAweDUsIDB4ZSwgMHhkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0LCAweGMwLCAweGMyLCAweGMwLCAweGY3LCAweDQsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2OCwgMHhmNywgMHg0LCAweDE0LCAweGUwLCAweDk1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweDE1LCAweDNhLCAweGEsIDB4ZjcsIDB4NWUsIDB4ZjcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNywgMHhhLCAweGZiLCAweGE1LCAweDQsIDB4MjIsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YiwgMHhmOCwgMHhhLCAweGFjLCAweGY3LCAweDkxLCAweGE1LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4ZGYsIDB4ZjcsIDB4ZGMsIDB4ZGIsIDB4MywgMHhmMCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweDE1LCAweGY3LCAweDksIDB4NiwgMHg2ZCwgMHhmYiwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg0ZiwgMHg4NCwgMHg1MywgMHg4LCAweDZhLCAweDg3LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUsIDB4NTMsIDB4MWIsIDB4ODIsIDB4ODAsIDB4OGQsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OWEsIDB4OTcsIDB4OGIsIDB4YjAsIDB4MWEsIDB4OWYsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4NzgsIDB4NzYsIDB4NzIsIDB4N2QsIDB4NjUsIDB4NWEsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4YjUsIDB4MWUsIDB4ZTgsIDB4OGMsIDB4YjAsIDB4ZTYsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4YTcsIDB4ZjcsIDB4MWMsIDB4OWMsIDB4ZjcsIDB4MTYsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTksIDB4OCwgMHhmNywgMHhlLCAweDYsIDB4OTUsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgxNCwgMHg2LCAweGY3LCAweDNkLCAweGEwLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRmLCAweGJlLCAweDFiLCAweDliLCAweDk0LCAweDg3LCAweDgzLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDg1LCAweDdiLCAweDgxLCAweDFhLCAweDc2LCAweDljLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweGE1LCAweDk3LCAweDllLCAweGE4LCAweGIzLCAweDY3LCAweGE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGZiLCAweDI2LCAweDY1LCAweGZiLCAweDMwLCAweGZiLCAweGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2IsIDB4MWUsIDB4ZmIsIDB4NCwgMHg2LCAweGUsIDB4YjIsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4NmUsIDB4YjUsIDB4ZjgsIDB4MzEsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHhmNywgMHgxMywgMHhmOCwgMHg0LCAweGY3LCAweDRkLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4MTYsIDB4ZjcsIDB4NTQsIDB4OWQsIDB4NiwgMHg3YywgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhiNSwgMHg5NCwgMHg4ZCwgMHg5NSwgMHg4ZiwgMHg5NywgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHhmNywgMHhlLCAweDUsIDB4ZjcsIDB4OTcsIDB4NiwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlLCAweDUsIDB4OGYsIDB4N2YsIDB4OGQsIDB4ODEsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4NjEsIDB4NTksIDB4ODYsIDB4N2MsIDB4MWUsIDB4NzksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4OWQsIDB4NywgMHg1ZCwgMHg3ZCwgMHhhZiwgMHhiMSwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmYiwgMHg4ZiwgMHhmOCwgMHhkOSwgMHg1LCAweDcxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OGQsIDB4ZmMsIDB4ZDksIDB4NSwgMHg2NywgMHg3YiwgMHg3OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg2MCwgMHgxYiwgMHhmNywgMHg1YywgMHhmNywgMHg4NiwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1LCAweGY3LCAweGEwLCAweGY3LCAweDUsIDB4ZmIsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhlLCAweDdiLCAweDhiLCAweGI1LCAweGY3LCAweGIyLCAweGI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDk4LCAweGI2LCAweDEyLCAweGY3LCAweGIsIDB4ZjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4ZjIsIDB4MzYsIDB4ZjcsIDB4NiwgMHgxMywgMHhmNCwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHhlNywgMHg2LCAweGY3LCAweDEwLCAweGVmLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIsIDB4ZDYsIDB4NWQsIDB4ZDAsIDB4ZmIsIDB4MiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4ZCwgMHg3LCAweDEzLCAweGY4LCAweGUzLCAweGE1LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGQzLCAweDFhLCAweGY3LCAweDMyLCAweGZiLCAweDMyLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDMzLCAweGEsIDB4ZjcsIDB4ZjQsIDB4MTUsIDB4MTMsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4OGYsIDB4NywgMHg5OSwgMHhkMiwgMHg4NiwgMHg5NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjLCAweGFkLCAweDQyLCAweDRlLCAweGZiLCAweGQsIDB4ZmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg2MywgMHgxZSwgMHgzYywgMHg2MSwgMHgxNSwgMHhkZSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGY0LCAweGYxLCAweGQxLCAweDY4LCAweGZiLCAweDksIDB4M2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGYsIDB4NTYsIDB4NGIsIDB4MWYsIDB4MzMsIDB4NiwgMHg2MSwgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYiwgMHhhMywgMHgxZiwgMHhlLCAweDNiLCAweGEwLCAweDc2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4YjgsIDB4NzcsIDB4OWYsIDB4MTIsIDB4ZjcsIDB4MTEsIDB4ZjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZjcsIDB4YTQsIDB4MTMsIDB4ZDAsIDB4YTMsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4OWQsIDB4NiwgMHgyYSwgMHhhLCAweDEzLCAweDU4LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGY3LCAweDU0LCAweDcsIDB4ZWEsIDB4Y2MsIDB4NmEsIDB4MzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGUsIDB4MWYsIDB4YTQsIDB4NiwgMHg3YSwgMHhmNywgMHgzNiwgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweGNjLCAweDYsIDB4MTMsIDB4YjAsIDB4NzcsIDB4NywgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhkYywgMHg4NiwgMHgyMywgMHgxYSwgMHhmYywgMHg1NywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDVkLCAweDc4LCAweDU0LCAweDFlLCAweGUsIDB4NDMsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4ZjcsIDB4YjMsIDB4YjUsIDB4ZjcsIDB4OGUsIDB4YmIsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4MTIsIDB4ZjcsIDB4ZSwgMHhmMywgMHhmNywgMHg5NiwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHhhNiwgMHgxMywgMHhlZSwgMHhhYiwgMHgxNiwgMHhmOCwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGI5LCAweGY3LCAweDNlLCAweDUsIDB4NmMsIDB4NiwgMHg1OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MywgMHg3MiwgMHg0MiwgMHgyMSwgMHgxYiwgMHhmYiwgMHgzMywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDc4LCAweDk5LCAweGFlLCAweDFmLCAweGY3LCAweDgyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweDcsIDB4ZGIsIDB4YTEsIDB4NjksIDB4NGYsIDB4MWYsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2EsIDB4NzQsIDB4NiwgMHg0ZiwgMHg3NSwgMHg2OSwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHgzMCwgMHhmNywgMHg4ZSwgMHhmNywgMHg2YiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDg3LCAweDU1LCAweDVkLCAweDk4LCAweDFmLCAweGE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweGZjLCAweGE3LCAweDYsIDB4MTMsIDB4ZGMsIDB4NzksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhhLCAweGUsIDB4NDMsIDB4OGIsIDB4YjUsIDB4ZjgsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4MSwgMHhiNywgMHhmOCwgMHhlNCwgMHgzLCAweGI3LCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGNiLCAweDYsIDB4YTQsIDB4ZjcsIDB4NDksIDB4NSwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDVjLCAweDdkLCAweDc4LCAweDJmLCAweGZiLCAweDFmLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDg3LCAweDYsIDB4ZjgsIDB4MzEsIDB4ZjgsIDB4ZjAsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhmYywgMHg5ZSwgMHg3LCAweDdjLCAweGZiLCAweDQzLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NiwgMHhkMSwgMHg5ZiwgMHg5YSwgMHhjYSwgMHhmNywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHg2ZiwgMHg2LCAweGZjLCAweDQxLCAweGZjLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHhiMiwgMHhhMCwgMHg3NiwgMHhmNywgMHhkNywgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjOCwgMHg3NywgMHgxLCAweGY3LCAweDE1LCAweGYzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGYzLCAweDMsIDB4YjIsIDB4MjQsIDB4YSwgMHhmNywgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjMiwgMHhmYiwgMHg3YiwgMHgyNywgMHhhLCAweDc5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDlkLCAweDcsIDB4MmEsIDB4YSwgMHhmOCwgMHg3ZCwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweGEsIDB4ZmIsIDB4NmMsIDB4ZmIsIDB4YzIsIDB4ZjcsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4YSwgMHhjNSwgMHg3YSwgMHhiMiwgMHhmNywgMHhhZSwgMHhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNSwgMHhiMiwgMHgxLCAweGI0LCAweGY3LCAweDYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZjcsIDB4OCwgMHgzLCAweGI0LCAweGY3LCAweGU2LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDQyLCAweGY3LCAweDE0LCAweGZiLCAweDQ5LCAweGY3LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYzLCAweGY3LCAweDE4LCAweGY3LCAweDQ5LCAweGY3LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNlLCAweGZiLCAweDFiLCAweGY3LCAweDQzLCAweGZiLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDYwLCAweGZiLCAweDE3LCAweGZiLCAweDQzLCAweGZiLCAweDNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGY3LCAweDYsIDB4MTYsIDB4ZjcsIDB4MjIsIDB4YmMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4ZjcsIDB4NDAsIDB4ZjcsIDB4NDEsIDB4YmQsIDB4ZmIsIDB4MzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjIsIDB4ZmIsIDB4MWEsIDB4NTAsIDB4ZmIsIDB4NGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4ZmIsIDB4M2QsIDB4NTcsIDB4ZjcsIDB4NGEsIDB4ZjcsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZDksIDB4MzUsIDB4MTUsIDB4OWEsIDB4OGEsIDB4NSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHg5ZSwgMHg5ZSwgMHhiMCwgMHgxYiwgMHhmNywgMHgxMiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDllLCAweDc4LCAweDY5LCAweDk2LCAweDFmLCAweDlhLCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODcsIDB4YWMsIDB4ODksIDB4YTcsIDB4YTQsIDB4MWEsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4YTcsIDB4OGYsIDB4YWIsIDB4MWUsIDB4N2MsIDB4OGMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwgMHg4MCwgMHg3OCwgMHg3NywgMHg2NiwgMHgxYiwgMHhmYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDY2LCAweDc4LCAweDlmLCAweGFjLCAweDgwLCAweDFmLCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDUsIDB4OGYsIDB4NmIsIDB4OGQsIDB4NmYsIDB4NzIsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4ODksIDB4NmYsIDB4ODcsIDB4NmEsIDB4MWUsIDB4ZSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHgzYiwgMHhhLCAweGY3LCAweGUsIDB4ZjMsIDB4MywgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHhhLCAweGY4LCAweDdkLCAweDI2LCAweGEsIDB4YjIsIDB4M2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHgxMSwgMHhmMywgMHhmNywgMHg5YSwgMHhmNywgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGFlLCAweDI0LCAweGEsIDB4ZjcsIDB4NjEsIDB4NywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHhmNywgMHg2NiwgMHhmYiwgMHg4MSwgMHg1LCAweDlhLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDdkLCAweDgwLCAweDFhLCAweDc3LCAweDcyLCAweDgyLCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDc5LCAweGY3LCAweGM0LCAweDlkLCAweDcsIDB4NmEsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4ODgsIDB4NDMsIDB4ZGMsIDB4ZmIsIDB4OTUsIDB4ZjcsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgsIDB4ZDUsIDB4ZDAsIDB4YmQsIDB4YmIsIDB4Y2QsIDB4ZDAsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHhjNiwgMHhhZSwgMHg5ZSwgMHhiOCwgMHgxYiwgMHg5ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg3OSwgMHg3LCAweGJkLCAweGFmLCAweDgxLCAweDc0LCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweDdjLCAweDc5LCAweDc5LCAweDFmLCAweDNmLCAweDNkLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweDM4LCAweDQ3LCAweDgsIDB4ZjcsIDB4NzEsIDB4MjYsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHg4YiwgMHg5ZCwgMHhmOSwgMHgyOCwgMHg3NywgMHgxLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDI4LCAweGY3LCAweGRkLCAweGY3LCAweDU5LCAweDMsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4NmIsIDB4OWQsIDB4NiwgMHg2ZCwgMHg2NiwgMHg5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNCwgMHg5NywgMHg4ZSwgMHg5YSwgMHg5MiwgMHg5ZSwgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgMHhmOCwgMHgxNSwgMHhmNywgMHgzNiwgMHhmYywgMHgxNywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDdjLCAweDkwLCAweDc1LCAweDgxLCAweDFhLCAweDVmLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweDdhLCAweDFlLCAweDc5LCAweGY3LCAweGE0LCAweDlkLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NTMsIDB4YTEsIDB4ZDAsIDB4NmQsIDB4MWYsIDB4ZmIsIDB4ODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4Y2QsIDB4NSwgMHg4MywgMHg2LCAweGZiLCAweDZjLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweDUsIDB4NTIsIDB4NzQsIDB4NDYsIDB4NjcsIDB4NzksIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmNywgMHg2MiwgMHgzYiwgMHhhLCAweGY3LCAweGQsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OWYsIDB4ZjMsIDB4MywgMHhhNywgMHgxNiwgMHhmNywgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg2LCAweDU4LCAweDY0LCAweGE2LCAweGJhLCAweDFmLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU3LCAweDcsIDB4ZjcsIDB4OTgsIDB4ZmMsIDB4YjMsIDB4NSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGY3LCAweDg5LCAweGY4LCAweGQwLCAweDUsIDB4ZmMsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4YSwgMHg3OSwgMHhmNywgMHhiMCwgMHg5ZCwgMHg3LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDk0LCAweGNjLCAweDFmLCAweGY4LCAweDc2LCAweDcsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4OTUsIDB4YTgsIDB4MWUsIDB4OWQsIDB4ZmIsIDB4NWMsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg3NCwgMHhmYywgMHg5MiwgMHhmYiwgMHg3ZSwgMHhmOCwgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDVkLCAweDc5LCAweDYsIDB4ZGEsIDB4ODUsIDB4OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4NDksIDB4MWEsIDB4ZmMsIDB4NTksIDB4NywgMHg1YywgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHg1OCwgMHgxZSwgMHhlLCAweGIyLCAweDk4LCAweDc2LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNkLCAweDc3LCAweDEsIDB4ZjcsIDB4YiwgMHhiYywgMHhmOCwgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYywgMHgzLCAweGE4LCAweDgzLCAweDE1LCAweGY3LCAweDc5LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4NTgsIDB4NjQsIDB4YTYsIDB4YmEsIDB4MWYsIDB4ZjgsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmOCwgMHg0YywgMHhmYywgMHhiNywgMHg1LCAweGExLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUxLCAweDYsIDB4MzEsIDB4YSwgMHhmYiwgMHg3OSwgMHg0NSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZjLCAweDIwLCAweDcsIDB4ZmMsIDB4MTMsIDB4ZjgsIDB4N2MsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzZCwgMHg3OSwgMHg2LCAweGJlLCAweDk0LCAweDc5LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweDFmLCAweGZjLCAweDliLCAweDcsIDB4NWMsIDB4NjQsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIDB4MWUsIDB4ZSwgMHg2NSwgMHg4YiwgMHhlOCwgMHhmNywgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhmNywgMHg0YSwgMHhlNSwgMHgxLCAweGFmLCAweDlkLCAweGU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGY3LCAweGM5LCAweDlkLCAweGU0LCAweDlkLCAweDMsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4OWUsIDB4MTUsIDB4OWIsIDB4NiwgMHg5ZCwgMHg4ZSwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhjZCwgMHgxYiwgMHhmNywgMHhlYywgMHg2LCAweGNkLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweDc5LCAweDhlLCAweDFmLCAweDliLCAweGY3LCAweDJiLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDYsIDB4ZTIsIDB4ZmMsIDB4M2IsIDB4MTUsIDB4OWQsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg4ZSwgMHhhMywgMHg5MywgMHhhZSwgMHgxYiwgMHhmNywgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGFlLCAweGEzLCAweDgzLCAweDViLCAweDhlLCAweDFmLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDYzLCAweDc5LCAweDYsIDB4NWIsIDB4ODgsIDB4NzMsIDB4ODMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4MWIsIDB4ZmIsIDB4NGQsIDB4NiwgMHg2OCwgMHg3MywgMHg5MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg4OCwgMHgxZiwgMHg3OSwgMHg2LCAweGZiLCAweDMsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4MTUsIDB4ZjgsIDB4YzcsIDB4ZjcsIDB4NTYsIDB4NzksIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NywgMHg4MiwgMHg3YiwgMHg2YSwgMHg0MywgMHgxYiwgMHhmYiwgMHhkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDQzLCAweDc3LCAweGFjLCAweGNmLCAweDgyLCAweDFmLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHhiMiwgMHg3YSwgMHhiMiwgMHhmOSwgMHg0LCAweGIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YjQsIDB4ZjcsIDB4OCwgMHhmOCwgMHg0ZiwgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMsIDB4YjQsIDB4ZjcsIDB4ZTQsIDB4MTUsIDB4ZmIsIDB4NDIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZmIsIDB4NDcsIDB4ZjcsIDB4NjMsIDB4ZjcsIDB4NjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4NDcsIDB4ZjcsIDB4NDIsIDB4ZjcsIDB4M2UsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZjcsIDB4NDcsIDB4ZmIsIDB4NjAsIDB4ZmIsIDB4NjAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTksIDB4ZmIsIDB4NDcsIDB4ZmIsIDB4M2UsIDB4MWUsIDB4ZjcsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHgxYiwgMHhjNiwgMHhmNywgMHg0MywgMHhmNywgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzYiwgMHhjMiwgMHhmYiwgMHgzZiwgMHhmYiwgMHgyMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg1MywgMHhmYiwgMHg0NiwgMHhmYiwgMHgzYSwgMHhmYiwgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhmNywgMHg0OCwgMHhmNywgMHgxYSwgMHgxZSwgMHhlLCAweGUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDc2LCAweGY5LCAweGMsIDB4YjQsIDB4NzksIDB4OWQsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHhmMiwgMHhmNywgMHhlMSwgMHhmMiwgMHgxMywgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHgyNCwgMHhhLCAweDhhLCAweGY4LCAweGIwLCAweDUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTEsIDB4ZmMsIDB4YjAsIDB4NiwgMHgyOCwgMHhhLCAweDc5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIwLCAweDlkLCAweDcsIDB4MmEsIDB4YSwgMHg4YSwgMHhmOCwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDEzLCAweGI4LCAweGQ0LCAweGNjLCAweDlhLCAweGE1LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGZkLCAweDY0LCAweDc5LCAweDcsIDB4YTUsIDB4Y2IsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDIsIDB4MWYsIDB4ZmMsIDB4NmYsIDB4MzksIDB4YSwgMHhmYiwgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NiwgMHhmNywgMHhjMCwgMHhiNCwgMHhmNywgMHhiOCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OSwgMHg5ZCwgMHgxMiwgMHhmNywgMHhhLCAweGYzLCAweGY3LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDEzLCAweGRjLCAweGE3LCAweDI0LCAweGEsIDB4ZjcsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmNywgMHhiZSwgMHg4YSwgMHhhMiwgMHhkNSwgMHhmNywgMHhmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGY3LCAweDUsIDB4NmEsIDB4Y2IsIDB4ZmIsIDB4NjEsIDB4MzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHhlMywgMHgxNSwgMHhmNywgMHg5NCwgMHg3LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweDllLCAweDlkLCAweDkwLCAweDljLCAweDFlLCAweGY3LCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4YzksIDB4NzcsIDB4ZmIsIDB4YSwgMHgxYSwgMHhmYiwgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg2ZSwgMHhmYiwgMHgyZCwgMHg3ZiwgMHg4MSwgMHg5MiwgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NCwgMHgxZSwgMHhlLCAweDMwLCAweDhiLCAweGU5LCAweGY4LCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDEsIDB4OTAsIDB4MTYsIDB4ZjgsIDB4YjcsIDB4NiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2MSwgMHg1LCAweDc3LCAweDYsIDB4MmEsIDB4NmQsIDB4NWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NGIsIDB4MWIsIDB4ZmIsIDB4YWYsIDB4NiwgMHhmNywgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhhNywgMHhmYiwgMHg1ZCwgMHhmNywgMHg5NiwgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweDYsIDB4ZWUsIDB4YTYsIDB4NDgsIDB4NjUsIDB4OTUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4NiwgMHg4MSwgMHhmNywgMHgyYiwgMHg1LCAweGZjLCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4YTEsIDB4ZmIsIDB4ZWUsIDB4NSwgMHhlLCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEwLCAweDc2LCAweGY5LCAweGUsIDB4YjIsIDB4MSwgMHhhZSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NSwgMHhmMywgMHhmNywgMHg2NSwgMHhhMiwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDI0LCAweGEsIDB4ZjgsIDB4YjIsIDB4NywgMHhmNywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhjLCAweGU1LCAweDZmLCAweDhhLCAweDIwLCAweGE1LCAweDhkLCAweDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweGY3LCAweDNmLCAweDUsIDB4ZmMsIDB4YzgsIDB4NiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzZiwgMHhhNSwgMHg4OSwgMHg4YywgMHhmNiwgMHhkYiwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxNCwgMHg4YSwgMHgxOSwgMHhmYywgMHhiMiwgMHgzOSwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDNiLCAweGEsIDB4ZjcsIDB4YmEsIDB4ZjMsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHgyNCwgMHhhLCAweGY3LCAweDYwLCAweDcsIDB4ZjcsIDB4NGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YmUsIDB4NSwgMHhjYSwgMHhiMiwgMHhiMCwgMHg4OSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg5ZCwgMHhmYiwgMHg3YywgMHg3OSwgMHg3LCAweGJmLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDdjLCAweDgxLCAweDg0LCAweDdlLCAweDg0LCAweDgwLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIwLCAweGZiLCAweDdiLCAweGZiLCAweDMwLCAweGY3LCAweDgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ODUsIDB4OTUsIDB4ODgsIDB4OTQsIDB4OTIsIDB4MWEsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4OTQsIDB4YmYsIDB4MWUsIDB4OWQsIDB4ZmIsIDB4YmQsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhjMCwgMHhhYywgMHg2NCwgMHg3YiwgMHg5NywgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgMHhmYiwgMHhjMCwgMHg1LCAweGZiLCAweDY0LCAweDM5LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4OGIsIDB4OWQsIDB4ZTIsIDB4YWUsIDB4ZjgsIDB4MjEsIDB4YWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTIsIDB4OWQsIDB4MSwgMHhhNSwgMHhmNywgMHhkLCAweGY3LCAweDRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYxLCAweGY3LCAweDRmLCAweGY3LCAweGEsIDB4MywgMHhmNywgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHhjNiwgMHg5ZCwgMHg2LCAweDMyLCAweDdlLCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDFmLCAweGY3LCAweDIxLCAweDhhLCAweGY3LCAweDM4LCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJkLCAweDFhLCAweGY3LCAweDIzLCAweGZiLCAweDJiLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJlLCAweDFlLCAweGI5LCAweDk3LCAweGI0LCAweGU0LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGZiLCAweGM0LCAweDc5LCAweDcsIDB4ZTQsIDB4OTcsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4MWYsIDB4ZmIsIDB4MzcsIDB4ZmIsIDB4MjUsIDB4MmYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjUsIDB4ZmIsIDB4MmYsIDB4ZjcsIDB4MzUsIDB4NDMsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4MWYsIDB4NWQsIDB4N2UsIDB4NjIsIDB4MzIsIDB4MWUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4ZjcsIDB4ZSwgMHgxNSwgMHhmOCwgMHgyMSwgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZDYsIDB4MzEsIDB4ZmIsIDB4OCwgMHgzZCwgMHg1YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGZiLCAweDFlLCAweDFmLCAweDI1LCAweDE2LCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweGY3LCAweDQsIDB4ZGEsIDB4ZjcsIDB4MSwgMHhjZSwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjLCAweDhjLCAweDFmLCAweGUsIDB4YjIsIDB4YTAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MzUsIDB4NzcsIDB4MTIsIDB4ODIsIDB4ZjcsIDB4MzgsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4ZjksIDB4NWQsIDB4ZmIsIDB4NDYsIDB4ZjcsIDB4MzUsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4ODIsIDB4MTYsIDB4ZjcsIDB4N2EsIDB4OWQsIDB4NiwgMHg1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg5ZiwgMHhhMCwgMHg5NSwgMHg5MCwgMHg5NiwgMHg5MiwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHgzOSwgMHhmNywgMHg1ZiwgMHhmNywgMHgyMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHg1LCAweDkxLCAweDgxLCAweDhlLCAweDgyLCAweDgzLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDcyLCAweDdjLCAweDU2LCAweDFlLCAweDc5LCAweDcsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4ZjcsIDB4YzAsIDB4OWQsIDB4NiwgMHg2MiwgMHg1ZiwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YiwgMHg3ZiwgMHgxZiwgMHhmYiwgMHg2NywgMHhmNywgMHhiYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgMHhmNywgMHg2NSwgMHg1LCAweDEzLCAweGYwLCAweGFlLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGFmLCAweGE2LCAweDFiLCAweDlkLCAweGZiLCAweDdjLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcsIDB4YzAsIDB4OWQsIDB4N2UsIDB4N2EsIDB4N2QsIDB4ODMsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4N2YsIDB4MWYsIDB4ZmIsIDB4MjAsIDB4ZmIsIDB4M2YsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHhmNywgMHg0NywgMHg1LCAweDg0LCAweDk2LCAweDg5LCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDFhLCAweDlmLCAweGE0LCAweDk4LCAweGMwLCAweDFlLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGMwLCAweDc5LCAweDcsIDB4YjgsIDB4YjcsIDB4NWIsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4MWYsIDB4ZjcsIDB4NTEsIDB4ZmIsIDB4OTYsIDB4ZmIsIDB4NWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODgsIDB4NSwgMHg2NiwgMHg2YywgMHg1MSwgMHg2OSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhlLCAweGY3LCAweDQsIDB4YTAsIDB4NzYsIDB4ZjcsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ZjcsIDB4ZDksIDB4OWQsIDB4OTYsIDB4NzcsIDB4MTIsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHhmNywgMHgzNCwgMHhmMywgMHhmNywgMHgzNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDE0LCAweGUsIDB4MTMsIDB4ZGUsIDB4ZjcsIDB4OTQsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmNywgMHg1YSwgMHg3LCAweGY3LCAweDFiLCAweGY3LCAweDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFkLCAweGY3LCAweDIwLCAweGY3LCAweDUsIDB4ODIsIDB4ZTQsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OWQsIDB4NywgMHhmYiwgMHgxOSwgMHg2NSwgMHgzYSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgxMiwgMHgyOSwgMHg4MCwgMHg0ZCwgMHg4YSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4ZiwgMHg3LCAweDEzLCAweGVlLCAweDNjLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4NywgMHg0ZCwgMHg4YywgMHgyOSwgMHg5NiwgMHhmNywgMHgxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHgxMywgMHhkZSwgMHhmNywgMHgxZSwgMHg2YywgMHhkOSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgMHgxZSwgMHg3OSwgMHg3LCAweGQyLCAweDdjLCAweDMzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4MjEsIDB4ZjcsIDB4MWYsIDB4NmEsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmIsIDB4NWEsIDB4MzksIDB4YSwgMHg1NywgMHg3OSwgMHhhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OSwgMHhkMSwgMHhmOCwgMHgyNiwgMHhiOSwgMHgxMiwgMHhiNCwgMHhmNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3MCwgMHhmOCwgMHg0ZSwgMHhmNiwgMHgxNSwgMHg0OSwgMHhhZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNSwgMHg1MCwgMHhiNywgMHgxYiwgMHhkNCwgMHg4ZCwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI2LCAweDFmLCAweDc5LCAweDYsIDB4N2QsIDB4OGMsIDB4NzYsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4MWIsIDB4NjksIDB4NmIsIDB4Y2IsIDB4YzEsIDB4N2QsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NywgMHhmNywgMHhkZSwgMHg1LCAweDMzLCAweDYsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTMsIDB4NSwgMHhkYywgMHg3YywgMHg1NSwgMHhmNywgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4MWIsIDB4ZmIsIDB4MjIsIDB4NDIsIDB4ZmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxMywgMHhmYiwgMHgzNSwgMHhhZiwgMHhmYiwgMHhlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGVhLCAweGUxLCAweGViLCAweGE4LCAweDljLCAweDFmLCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDgsIDB4MTUsIDB4MTMsIDB4YjAsIDB4MjAsIDB4NzAsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4NGYsIDB4MWIsIDB4MmIsIDB4ODksIDB4ZjcsIDB4NDIsIDB4ZDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4OTIsIDB4ZTEsIDB4ZjMsIDB4ZDEsIDB4Y2MsIDB4ZmIsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4OTksIDB4MWYsIDB4ZSwgMHhmYiwgMHg1ZSwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHhiYiwgMHhmOCwgMHg1LCAweGMyLCAweGY3LCAweDkxLCAweGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGQ4LCAweGQ5LCAweGY3LCAweDYxLCAweGYyLCAweDU2LCAweGY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGZhLCAweGY3LCAweDMyLCAweGIwLCAweDE1LCAweGJkLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM5LCAweDc5LCAweGM2LCAweDhjLCAweDgsIDB4ZTgsIDB4OGMsIDB4ZTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4ZjcsIDB4MWUsIDB4MWEsIDB4ZjIsIDB4NTUsIDB4ZTEsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4MWUsIDB4MTMsIDB4ZmMsIDB4YzgsIDB4YTIsIDB4YWMsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzgsIDB4MWEsIDB4ZjcsIDB4NywgMHgzNCwgMHhiZCwgMHhmYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNjLCAweGZiLCAweDQsIDB4NTEsIDB4MjgsIDB4MWUsIDB4ZmQsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg1OCwgMHg4MCwgMHg1OSwgMHg4NiwgMHg1OCwgMHgxZSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDhlLCAweGE0LCAweDkwLCAweGE0LCAweGE0LCAweDFhLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDg1LCAweDE1LCAweGY4LCAweDhjLCAweDcsIDB4YzcsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmQsIDB4YzAsIDB4ZDYsIDB4YTYsIDB4NGYsIDB4NDksIDB4OGMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4OGMsIDB4N2IsIDB4M2IsIDB4NjUsIDB4N2EsIDB4NzcsIDB4OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4MWIsIDB4NzcsIDB4NzgsIDB4ODEsIDB4NzQsIDB4NzMsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4YTAsIDB4MWYsIDB4YTMsIDB4OWUsIDB4OTEsIDB4OWYsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZmEsIDB4YzAsIDB4YjksIDB4ZmIsIDB4M2EsIDB4NGIsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4NGIsIDB4MzEsIDB4NTksIDB4NTQsIDB4YTYsIDB4YWYsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHhmYiwgMHhhNCwgMHhmYiwgMHg2MCwgMHg3NiwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhkOCwgMHgxLCAweDkwLCAweDliLCAweGY3LCAweDMyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIsIDB4MywgMHhmNywgMHg4MywgMHhjNywgMHgxNSwgMHg3OCwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgMHgyYiwgMHg0NSwgMHgxYSwgMHg2MywgMHg5ZSwgMHg2ZCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZCwgMHhhMSwgMHhjYSwgMHhjMSwgMHhjZiwgMHg3YywgMHhkNCwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHgxZSwgMHhmNywgMHg2MCwgMHhmOCwgMHg0ZCwgMHg1LCAweDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4NSwgMHhmYiwgMHhmOSwgMHg1LCAweDg5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTgsIDB4NzksIDB4NmMsIDB4ZjcsIDB4OWMsIDB4ZmIsIDB4MCwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YywgMHg2NSwgMHg1NCwgMHgzZCwgMHg4YSwgMHgxZiwgMHg3NCwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHg4YSwgMHg3YiwgMHgxZSwgMHg5YiwgMHg2LCAweGIzLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGQ2LCAweGMwLCAweDFiLCAweGVmLCAweGFkLCAweGZiLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDk4LCAweDFmLCAweGUsIDB4ZmIsIDB4NTEsIDB4NzgsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4MzQsIDB4YjMsIDB4MTIsIDB4YjMsIDB4ZWUsIDB4NjEsIDB4YmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODIsIDB4ZWMsIDB4MTMsIDB4ZTgsIDB4ZjcsIDB4OTMsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4MTUsIDB4ZmIsIDB4MmIsIDB4NjgsIDB4NGIsIDB4MzQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4MWEsIDB4MjUsIDB4ZTcsIDB4ZmIsIDB4MywgMHhmNywgMHgxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiLCAweGVkLCAweGY3LCAweDAsIDB4ZjcsIDB4OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmLCAweDU0LCAweGNmLCAweDQzLCAweGM0LCAweDFlLCAweDEzLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxLCAweGRlLCAweDI1LCAweGI5LCAweGNmLCAweDFhLCAweGE3LCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGFkLCAweGIyLCAweGE0LCAweDdiLCAweDc3LCAweDlkLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZiLCAweGE5LCAweDlhLCAweDYwLCAweGI1LCAweDFiLCAweGE4LCAweGEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDljLCAweGFhLCAweGNmLCAweGZiLCAweGEsIDB4YWUsIDB4M2QsIDB4NGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgsIDB4NzgsIDB4NDAsIDB4MzMsIDB4ZjcsIDB4MiwgMHg1OCwgMHhiYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHgxZiwgMHhhYSwgMHg2ZSwgMHgxNSwgMHg5NywgMHg4OCwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHg4NiwgMHhmYiwgMHgyLCAweDgsIDB4MzIsIDB4ODcsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIDB4NDEsIDB4MWIsIDB4NjYsIDB4NmQsIDB4YTQsIDB4YWQsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4MTMsIDB4ZTgsIDB4NzYsIDB4YWUsIDB4N2MsIDB4YjcsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZWYsIDB4YjAsIDB4ZTAsIDB4ZjcsIDB4MiwgMHhhOCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweDg4LCAweDc4LCAweGI5LCAweGY3LCAweDU4LCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweGJjLCAweGY3LCAweDRlLCAweGFmLCAweDEyLCAweGExLCAweGYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGU2LCAweDEzLCAweGI4LCAweGY3LCAweDE5LCAweGY3LCAweDkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDY1LCAweDg2LCAweDQyLCAweDY2LCAweDMwLCAweDFhLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4NjQsIDB4ZTYsIDB4ZjcsIDB4NCwgMHhlNSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZCwgMHgxZSwgMHg3MSwgMHg5MiwgMHg1LCAweDQ5LCAweDc3LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweDRmLCAweDFiLCAweDRkLCAweDhhLCAweDJlLCAweGE2LCAweGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhLCAweGM1LCAweGIwLCAweGIzLCAweGNlLCAweDFlLCAweDEzLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE2LCAweDk3LCAweDgzLCAweGIwLCAweDFiLCAweDlkLCAweDliLCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweDFmLCAweDEzLCAweGI4LCAweDlkLCAweDc5LCAweDkyLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDEzLCAweGQ0LCAweDY3LCAweDdjLCAweDgxLCAweDZmLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVhLCAweDVhLCAweGIxLCAweGNmLCAweGIyLCAweGIzLCAweGJlLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGFmLCAweDhjLCAweGFiLCAweDc2LCAweDkyLCAweDZlLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWMsIDB4OTYsIDB4YTgsIDB4ODYsIDB4OWUsIDB4MWIsIDB4YTQsIDB4OWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YTUsIDB4YzUsIDB4MzAsIDB4YTksIDB4NTMsIDB4MzcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4NjcsIDB4MjAsIDB4MWYsIDB4OGMsIDB4NTUsIDB4YjcsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4NzgsIDB4OCwgMHhlLCAweGZiLCAweDUxLCAweGZiLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVmLCAweGY3LCAweDE3LCAweGVkLCAweGY5LCAweDIwLCAweDc3LCAweDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGJiLCAweDg1LCAweGM2LCAweGY3LCAweDljLCAweGI1LCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY0LCAweGY3LCAweDU5LCAweGY4LCAweGRjLCAweDE1LCAweDNjLCAweDMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGZiLCAweDM1LCAweDJkLCAweDFhLCAweGZiLCAweDU0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4NjAsIDB4ZjcsIDB4NDQsIDB4YjgsIDB4YWYsIDB4NzcsIDB4NjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4NzYsIDB4NDMsIDB4NTEsIDB4OTgsIDB4MWUsIDB4OGUsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4OTgsIDB4NzIsIDB4MWIsIDB4NjMsIDB4N2QsIDB4NmYsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjMsIDB4YzAsIDB4N2YsIDB4YWEsIDB4ZjEsIDB4Y2IsIDB4ZDksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZCwgMHhmNywgMHgxMiwgMHhmYiwgMHgxMywgMHg4ZiwgMHhmYiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIsIDB4N2YsIDB4ZWMsIDB4YjcsIDB4ZjcsIDB4MjAsIDB4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MiwgMHhjYywgMHhlMiwgMHgxZiwgMHhiZSwgMHg4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgMHhiYywgMHhjNSwgMHgxYSwgMHhhYiwgMHg3NywgMHg5YSwgMHg3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHgyNywgMHgyNSwgMHg3YywgMHg3ZiwgMHgxZSwgMHgxMywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg4ZSwgMHg2YiwgMHhhMiwgMHhhZSwgMHgxYSwgMHhiMiwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHg5NiwgMHg5MCwgMHgxZSwgMHg4OSwgMHg5ZCwgMHg1LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDU4LCAweDVkLCAweDcyLCAweGExLCAweDY2LCAweGQ0LCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4M2IsIDB4ZmIsIDB4NDksIDB4NzYsIDB4ZjcsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4NGYsIDB4ZDIsIDB4NjIsIDB4NzYsIDB4MTIsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ZjIsIDB4ZTAsIDB4ZjcsIDB4NjEsIDB4ZTQsIDB4MTMsIDB4ZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZCwgMHgxNiwgMHhlMCwgMHhmNywgMHhlYiwgMHg2LCAweGI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweGFjLCAweGMzLCAweGJlLCAweDFiLCAweGM2LCAweGIzLCAweDc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDhlLCAweDFmLCAweDk5LCAweGZjLCAweDVjLCAweDhkLCAweDU2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDdjLCAweDhmLCAweDczLCAweDE5LCAweGU0LCAweDYsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4ODQsIDB4YjcsIDB4OTcsIDB4MWEsIDB4ODAsIDB4ZjgsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhkYSwgMHg4OSwgMHg1YiwgMHhjYywgMHgzOSwgMHgxYiwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZiwgMHg2ZiwgMHgzMywgMHg2ZCwgMHgxZiwgMHhiZiwgMHg4ZSwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHg1MywgMHgxYiwgMHgzNiwgMHg2OSwgMHgzOSwgMHg0YiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg2LCAweDEzLCAweGRlLCAweGE5LCAweDhjLCAweGEwLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFlLCAweDFiLCAweGIzLCAweDkxLCAweDUyLCAweDU4LCAweDFmLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MzYsIDB4N2EsIDB4YjEsIDB4ZjcsIDB4YmIsIDB4YmYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4YWQsIDB4MSwgMHhiNiwgMHhmMSwgMHhmNywgMHg4NiwgMHhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY3LCAweDlmLCAweDdhLCAweDE1LCAweGY3LCAweDNmLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDcxLCAweGY3LCAweDFkLCAweGY3LCAweDI0LCAweDRmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGZiLCAweDM0LCAweGZiLCAweDM1LCAweDRlLCAweGZiLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDExLCAweGZiLCAweDE4LCAweGM1LCAweGZiLCAweDdhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDFmLCAweGZiLCAweGUsIDB4ZjgsIDB4MTUsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4YWUsIDB4ZjcsIDB4MmIsIDB4ZTEsIDB4ZjAsIDB4OWUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4MjAsIDB4OGMsIDB4MWUsIDB4ZmIsIDB4ODUsIDB4NTcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODQsIDB4NiwgMHgzMiwgMHg3MSwgMHhmYiwgMHg2MiwgMHgyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHg3MSwgMHhmNywgMHg2NSwgMHhlMSwgMHgxZSwgMHhlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDdhLCAweGJkLCAweGY4LCAweDZhLCAweDc3LCAweDEsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4MywgMHhmNywgMHhkNSwgMHhmMCwgMHgxNSwgMHg3OCwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDg5LCAweDdlLCAweDY0LCAweDYxLCAweDFiLCAweDVhLCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGFlLCAweDFmLCAweGY4LCAweDQsIDB4NywgMHg1NywgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHg3YiwgMHgzMSwgMHg3OSwgMHg4LCAweDc3LCAweDcsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4OGYsIDB4ZmIsIDB4MTcsIDB4MWYsIDB4ZmIsIDB4NzgsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHhhNywgMHg1YiwgMHhjZCwgMHhmNSwgMHg5MywgMHhlOCwgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHgxZSwgMHhlLCAweGEwLCAweDc2LCAweGY4LCAweDQxLCAweGQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGEwLCAweDEyLCAweGY3LCAweGIsIDB4ZDYsIDB4MTMsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YiwgMHgxNiwgMHhkNiwgMHhmNywgMHg5NiwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweGZiLCAweDU1LCAweDUsIDB4OTIsIDB4ODIsIDB4OTAsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4MWEsIDB4ODAsIDB4ODEsIDB4ODIsIDB4NmYsIDB4MWUsIDB4NzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2YsIDB4OWQsIDB4NywgMHg1MCwgMHg3MSwgMHhhZiwgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHgxZiwgMHhmYiwgMHgzYywgMHhmNywgMHg2YSwgMHhiZSwgMHhiZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHhhNiwgMHhhYiwgMHhhNiwgMHgxOSwgMHg5OSwgMHg5YywgMHg5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg5NSwgMHgxYiwgMHg5NywgMHg4YSwgMHg5NSwgMHg4MSwgMHg5ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHg5MywgMHg4NCwgMHg5YiwgMHg4NywgMHg5YiwgMHg4YywgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDhjLCAweGE1LCAweDk4LCAweGIwLCAweDFhLCAweGFmLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDllLCAweDZhLCAweDZmLCAweDZkLCAweDgwLCAweDdiLCAweDc4LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweDRmLCAweDQ4LCAweDQ5LCAweDQzLCAweDRiLCAweDgsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4ZjcsIDB4NmQsIDB4NywgMHgxMywgMHhiMCwgMHgzOSwgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHg4MiwgMHg2MiwgMHg4OCwgMHg4LCAweDc2LCAweDcsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGEsIDB4YmUsIDB4ODUsIDB4MzUsIDB4MWEsIDB4ZSwgMHg3YSwgMHhlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHhlNSwgMHhkNywgMHgxLCAweGM2LCAweDllLCAweGY3LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIxLCAweGY3LCAweDVlLCAweDllLCAweDMsIDB4YTMsIDB4N2EsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4NiwgMHhmNywgMHgzZiwgMHhmOCwgMHgxMiwgMHg1LCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4MjQsIDB4YWEsIDB4ODksIDB4ZmIsIDB4ODIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZiwgMHgxYiwgMHhlMSwgMHhhMCwgMHhmNiwgMHhkNCwgMHgxZiwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDcwLCAweDhhLCAweDc3LCAweDQxLCAweDU3LCAweDFiLCAweDYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweGJhLCAweGI2LCAweDdmLCAweDFmLCAweDVmLCAweGY3LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweGY3LCAweDUxLCAweDYwLCAweGY3LCAweDNhLCAweDgsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIDB4NmIsIDB4YWQsIDB4NWEsIDB4MWIsIDB4NDUsIDB4NmQsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4NTYsIDB4OGQsIDB4MWYsIDB4OWUsIDB4NiwgMHhhMywgMHg4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhkYSwgMHhjMSwgMHgxYiwgMHhiZiwgMHhhYSwgMHgyZiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHgxZiwgMHhlLCAweGZiLCAweDM2LCAweDkwLCAweDc2LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweDc3LCAweDEsIDB4ZjcsIDB4N2MsIDB4N2IsIDB4MTUsIDB4YjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhhMSwgMHhiNywgMHhlMiwgMHhmNywgMHg0NCwgMHhjMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweDgsIDB4YTUsIDB4YzAsIDB4OWMsIDB4YjUsIDB4YjUsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ODIsIDB4YTgsIDB4NWQsIDB4NTgsIDB4ODksIDB4NTAsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4MWUsIDB4OGYsIDB4NzUsIDB4OGUsIDB4N2EsIDB4N2MsIDB4MWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4ODMsIDB4NzQsIDB4NzgsIDB4NjYsIDB4MWUsIDB4M2YsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmMsIDB4ZmIsIDB4MzIsIDB4ZjgsIDB4MjgsIDB4NTEsIDB4NzIsIDB4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NDUsIDB4ODQsIDB4MTksIDB4NzgsIDB4NywgMHhiNCwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg4NywgMHg5OSwgMHg2NywgMHg4LCAweGUsIDB4ZmIsIDB4NTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NWYsIDB4NzYsIDB4ZjcsIDB4NzAsIDB4ZWIsIDB4ZjcsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTcsIDB4ZjcsIDB4YjYsIDB4NzcsIDB4MTIsIDB4YTYsIDB4YmMsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4NzQsIDB4YjIsIDB4ZjcsIDB4YjMsIDB4YmMsIDB4MTMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmQsIDB4ZjgsIDB4MmUsIDB4MTUsIDB4NDIsIDB4NTAsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4MzEsIDB4MWEsIDB4ZmIsIDB4NDMsIDB4ZjcsIDB4MzcsIDB4NjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjgsIDB4YTcsIDB4YzEsIDB4ODksIDB4NTEsIDB4NTMsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NjgsIDB4OTcsIDB4MWUsIDB4NmEsIDB4OTYsIDB4NzIsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzksIDB4ODksIDB4OCwgMHg2ZCwgMHg4OSwgMHg3YywgMHg3YiwgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg2MCwgMHhjMCwgMHg4MSwgMHhhNiwgMHhmNCwgMHhjNiwgMHhkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkLCAweGQ3LCAweDQzLCAweGIxLCAweDNkLCAweGZiLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCAweGM4LCAweGNlLCAweGUxLCAweGUxLCAweGQ1LCAweGIyLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDg1LCAweDhjLCAweGI4LCAweDg1LCAweGJiLCAweDFiLCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDk3LCAweGI5LCAweGE2LCAweDZiLCAweDkyLCAweDcyLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDZjLCAweDdjLCAweDcxLCAweDFmLCAweDY0LCAweGEzLCAweDdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweGFiLCAweDFhLCAweGI1LCAweGE4LCAweGIzLCAweGFhLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweGFkLCAweDg1LCAweGY3LCAweDE5LCAweGIwLCAweGMwLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDdlLCAweDliLCAweDZmLCAweDVhLCAweDQ1LCAweDRmLCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZlLCAweDFlLCAweDEzLCAweGY1LCAweDZlLCAweDhkLCAweDcyLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDFhLCAweGFjLCAweDllLCAweDk2LCAweDk3LCAweDkwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg5LCAweDlkLCAweDUsIDB4NTgsIDB4NmMsIDB4NmMsIDB4NjIsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjYsIDB4NmUsIDB4YTksIDB4ODMsIDB4MWYsIDB4MTMsIDB4ZmIsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4N2MsIDB4NjgsIDB4NjgsIDB4MWEsIDB4NjYsIDB4OWQsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4NmIsIDB4MWUsIDB4ZSwgMHg3OCwgMHhiNywgMHhmOCwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYSwgMHgxLCAweGFlLCAweGVhLCAweGY3LCAweGFkLCAweGU1LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4ZjcsIDB4ODAsIDB4MTUsIDB4ZmIsIDB4ZSwgMHhlZiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOSwgMHhmNywgMHgyMSwgMHhmNywgMHgyMywgMHhkZCwgMHhmNywgMHgxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyYSwgMHhmNywgMHgyNCwgMHgyMCwgMHhlOCwgMHhmYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZCwgMHgzNCwgMHhmYiwgMHgxYiwgMHhmYiwgMHgxNCwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwgMHhhYSwgMHgxNSwgMHhkZSwgMHhhMSwgMHhmNywgMHhhLCAweGYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGQsIDB4YjAsIDB4ZmIsIDB4MzQsIDB4MjksIDB4MzMsIDB4NjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4MzAsIDB4ZmIsIDB4MiwgMHg1ZSwgMHhmNywgMHgyOCwgMHhlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweDc4LCAweGU5LCAweGY3LCAweGRhLCAweGUxLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4ZjcsIDB4ZGMsIDB4MTUsIDB4OWMsIDB4NiwgMHhjNCwgMHhhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg5YiwgMHhhNywgMHgxYiwgMHhjNCwgMHg2LCAweDZlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDhiLCAweDZkLCAweDdjLCAweDczLCAweDgsIDB4NzcsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NzIsIDB4NjMsIDB4MWEsIDB4N2QsIDB4OTUsIDB4NjQsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4OWEsIDB4YTcsIDB4YjQsIDB4OTQsIDB4MWUsIDB4OTcsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4ZjcsIDB4MiwgMHg5YiwgMHhmNywgMHg0ZiwgMHg4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4NiwgMHg3YSwgMHhmYiwgMHgzNSwgMHg1LCAweDNhLCAweDgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweGZiLCAweDQ2LCAweGY3LCAweDksIDB4MWIsIDB4ZDMsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4ZjIsIDB4MWYsIDB4NzYsIDB4NiwgMHg3NiwgMHg3OCwgMHg0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg2NiwgMHg3NSwgMHhiZiwgMHhiMiwgMHhiMSwgMHg4YiwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NywgMHhmNywgMHg5LCAweDFlLCAweGY3LCAweDFhLCAweGUxLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDExLCAweDYsIDB4MzMsIDB4NjMsIDB4ZmIsIDB4MCwgMHg1OCwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweGZiLCAweDY1LCAweDc2LCAweGY5LCAweDM2LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YzYsIDB4ZTMsIDB4ZjcsIDB4OTEsIDB4ZTUsIDB4MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgMHhiMywgMHgxNSwgMHhiMCwgMHg2OSwgMHhhYiwgMHg2ZiwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YywgMHg4LCAweGY3LCAweDJiLCAweDhkLCAweGM3LCAweGVmLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweDFhLCAweGY3LCAweDRmLCAweDQ1LCAweGJjLCAweGZiLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFjLCAweDQwLCAweDI2LCAweGZiLCAweGEsIDB4OGMsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ZmMsIDB4M2IsIDB4NSwgMHg2ZCwgMHg4NywgMHg2OSwgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHgxZSwgMHhlMiwgMHg2LCAweDk1LCAweGIzLCAweDhiLCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIzLCAweDFhLCAweDg4LCAweGY3LCAweDcwLCAweDE1LCAweDg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdiLCAweDUsIDB4YzIsIDB4OGEsIDB4YWIsIDB4YzAsIDB4YzIsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTgsIDB4YjcsIDB4NGYsIDB4ZmIsIDB4MjIsIDB4ZmIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHgzMCwgMHhmYiwgMHhkLCAweDY0LCAweDVkLCAweGEyLCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDFmLCAweGUsIDB4ZmIsIDB4ODgsIDB4ZmIsIDB4NjgsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NzUsIDB4ZjQsIDB4ZjcsIDB4YmUsIDB4ZjQsIDB4M2IsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIsIDB4YjMsIDB4YjUsIDB4ZjcsIDB4ZDAsIDB4YjEsIDB4MTMsIDB4ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ZjcsIDB4NjYsIDB4MTUsIDB4ZmIsIDB4MTUsIDB4ZDQsIDB4MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MWIsIDB4ZjcsIDB4YSwgMHhhYiwgMHg3NCwgMHg2MiwgMHg2OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg2NiwgMHg2NSwgMHg4YSwgMHgxZSwgMHg3ZCwgMHg3YywgMHg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg3YiwgMHgxZiwgMHg5MSwgMHg3YiwgMHg3YSwgMHg5MiwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg3MiwgMHg3MSwgMHg3OCwgMHg2OCwgMHg2YywgMHhhYSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHhkMywgMHhlMSwgMHhkMiwgMHhmNywgMHg1LCAweGYxLCAweDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweDM0LCAweDIwLCAweDI2LCAweDg4LCAweGY3LCAweDFmLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGRmLCAweGRjLCAweDhjLCAweDFmLCAweDlmLCAweGEwLCAweDg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0LCAweGEwLCAweDFmLCAweDEzLCAweGVjLCAweDg1LCAweDljLCAweDljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg2LCAweDlhLCAweDFiLCAweGI5LCAweGE5LCAweDljLCAweGE3LCAweGJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDk0LCAweDYyLCAweGZiLCAweDM4LCAweGZiLCAweDMsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4ZmIsIDB4MzYsIDB4MWYsIDB4ZSwgMHgzYiwgMHg3NiwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHgxYiwgMHhlMSwgMHgxLCAweGE5LCAweGYwLCAweGY3LCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU5LCAweDMsIDB4ZjgsIDB4ZTAsIDB4ZjgsIDB4MzIsIDB4MTUsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4OTcsIDB4NywgMHhmYiwgMHgxNCwgMHhmYiwgMHgzZiwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzMSwgMHhmYiwgMHgxNywgMHhkOSwgMHhmYiwgMHgzNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHhmNywgMHg0ZSwgMHhjNSwgMHhmNywgMHhjLCAweGVjLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweGQxLCAweDM0LCAweGJhLCAweDFmLCAweDhkLCAweDcsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZTAsIDB4NDAsIDB4YTksIDB4NDgsIDB4ZmIsIDB4MCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHg2MCwgMHg0YiwgMHgzYiwgMHgyYiwgMHgzOCwgMHhmNywgMHhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGEsIDB4ZjEsIDB4ZTcsIDB4YmQsIDB4ZWEsIDB4MWUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4OCwgMHg3OCwgMHhlOCwgMHhmNywgMHhlMSwgMHhlOCwgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDRhLCAweGQ1LCAweDMsIDB4YTcsIDB4ZjcsIDB4YzEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4OTgsIDB4YjAsIDB4ZDEsIDB4YWQsIDB4MWIsIDB4ZTYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg1NiwgMHg3YywgMHhmYiwgMHgxMSwgMHgyOCwgMHgxYSwgMHgyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHg1ZSwgMHhjNiwgMHhlOCwgMHg5ZCwgMHhmNywgMHg3LCAweGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDFlLCAweDc5LCAweDYsIDB4ODQsIDB4NjIsIDB4N2QsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4OGMsIDB4NTgsIDB4OGMsIDB4ODEsIDB4Y2EsIDB4OGYsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4ZjcsIDB4NzAsIDB4MTgsIDB4ZjcsIDB4MmUsIDB4OGEsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOCwgMHhmYiwgMHg3ZiwgMHg3LCAweDY2LCAweDYwLCAweDdiLCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcyLCAweDFmLCAweDZiLCAweDY3LCAweDdjLCAweDYyLCAweDc2LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZSwgMHgyMCwgMHg3OSwgMHhiYiwgMHhmOCwgMHg3MSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweDIxLCAweGUxLCAweGY3LCAweDc5LCAweGRhLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4ZjcsIDB4ZWUsIDB4MTUsIDB4YTEsIDB4NiwgMHg5NywgMHhhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhiZCwgMHhhZiwgMHg4YywgMHg4LCAweDk4LCAweDk2LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDhkLCAweDFmLCAweDkyLCAweDY2LCAweDk3LCAweGZiLCAweDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4MWEsIDB4MjYsIDB4YzcsIDB4MmEsIDB4ZjcsIDB4YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhkNCwgMHhmNywgMHg5LCAweGY3LCAweDI2LCAweGY3LCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjUsIDB4ZTIsIDB4ZmIsIDB4MmMsIDB4Y2IsIDB4MWUsIDB4ODUsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg5ZCwgMHg4OSwgMHhlZSwgMHg0ZiwgMHhmYiwgMHg0NywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgMHg3MywgMHhmYiwgMHhjLCAweDJmLCAweDRiLCAweDVhLCAweGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ5LCAweGM3LCAweDgyLCAweGY3LCAweDE0LCAweDgxLCAweGQzLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJjLCAweDg0LCAweDZlLCAweGE1LCAweDY1LCAweDFiLCAweDM4LCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJmLCAweDQ2LCAweDgxLCAweDFmLCAweGUsIDB4ZmIsIDB4MzYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4NzYsIDB4ZmEsIDB4MTMsIDB4NzcsIDB4MSwgMHhhNiwgMHhlNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4LCAweGJiLCAweDVlLCAweGI4LCAweGY3LCAweGMsIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHg4NSwgMHg3ZSwgMHgxNSwgMHg4ZCwgMHhmYiwgMHg1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHg3ZiwgMHg1LCAweGY3LCAweDY3LCAweDcsIDB4YjUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2EsIDB4YWEsIDB4ZjcsIDB4N2MsIDB4ZjcsIDB4NDYsIDB4ZmIsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4NTEsIDB4MWYsIDB4ZjcsIDB4MmUsIDB4NywgMHg1YSwgMHg5YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHhmYiwgMHgzZiwgMHg1LCAweDY4LCAweGZiLCAweDQxLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDcwLCAweGZiLCAweDUyLCAweGY3LCAweDI0LCAweDRjLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGI0LCAweGIwLCAweDE1LCAweGY4LCAweDRjLCAweDcsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjMsIDB4NTUsIDB4ZmIsIDB4M2MsIDB4ZmIsIDB4NDgsIDB4MjgsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ODksIDB4MWYsIDB4NjEsIDB4MTYsIDB4NzIsIDB4MmEsIDB4YjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDAsIDB4ZjcsIDB4M2UsIDB4ZTksIDB4YzAsIDB4YTIsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHg3YiwgMHhlMywgMHhmOCwgMHhjYSwgMHhkNywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweGZiLCAweDdiLCAweDE1LCAweGYxLCAweDYsIDB4ZjcsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YWUsIDB4NSwgMHg4ZCwgMHg2LCAweDNhLCAweDlhLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVkLCAweGU5LCAweDFiLCAweGU3LCAweGE1LCAweGY3LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweDhkLCAweDFmLCAweDc4LCAweDYsIDB4NmYsIDB4OGEsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4NGUsIDB4MWIsIDB4M2MsIDB4NzEsIDB4ZjcsIDB4NWMsIDB4YjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4MWYsIDB4ZjcsIDB4NzYsIDB4ZjgsIDB4MjQsIDB4NSwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDJmLCAweGZiLCAweGExLCAweDUsIDB4ZjcsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzMsIDB4NzksIDB4ZjcsIDB4MTUsIDB4MjUsIDB4MWIsIDB4MzQsIDB4N2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWYsIDB4NWEsIDB4ODUsIDB4MWYsIDB4OWQsIDB4NiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHhhMywgMHhkZSwgMHhiZSwgMHgxYiwgMHhkYiwgMHhhOCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg0NiwgMHg5ZSwgMHgxZiwgMHhlLCAweDhlLCAweGZiLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY5LCAweDZjLCAweDc3LCAweDEsIDB4ZjcsIDB4ZDksIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhmNywgMHhkOSwgMHg3MCwgMHgxNSwgMHhmYiwgMHg1ZCwgMHhjYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1ZCwgMHg3LCAweGMwLCAweDk2LCAweGNkLCAweGEzLCAweGJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweGFhLCAweGI1LCAweGEzLCAweGJlLCAweDk3LCAweGY3LCAweDgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweGMyLCAweGFhLCAweDhmLCAweGI5LCAweDk1LCAweDgsIDB4OWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHg5NywgMHg3NSwgMHg2OSwgMHg4YiwgMHg3ZiwgMHgxYiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHg4YiwgMHhmYiwgMHg4YiwgMHhmYiwgMHgxMSwgMHg3ZCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MywgMHgzZiwgMHg1NywgMHg2ZCwgMHg2MywgMHg4MSwgMHg4LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDRjLCAweGZjLCAweDZmLCAweDcsIDB4NjMsIDB4OTUsIDB4NTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4ODMsIDB4ZDcsIDB4OCwgMHhmNywgMHgxMSwgMHg3ZSwgMHg5NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4YiwgMHhmYiwgMHgyMiwgMHgxYiwgMHg3ZiwgMHg2OSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZiwgMHg3NSwgMHgxZiwgMHg3OSwgMHg3LCAweGI5LCAweDgxLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDhlLCAweDU0LCAweDk3LCAweGZiLCAweDgxLCAweGEzLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDYxLCAweGJhLCAweDRjLCAweGNkLCAweDczLCAweGMwLCAweDgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgsIDB4ZSwgMHg4ZSwgMHg3YSwgMHhiOSwgMHhmOCwgMHg2YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGI1LCAweGYyLCAweGY3LCAweDM5LCAweGY1LCAweGY3LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweDMsIDB4ZjcsIDB4ZmYsIDB4ZDMsIDB4MTUsIDB4NWMsIDB4YTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4NjEsIDB4YzUsIDB4MWIsIDB4ZjcsIDB4NSwgMHhjYiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweGY2LCAweGY3LCAweDJhLCAweDM2LCAweGY3LCAweDIzLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweDFmLCAweDdhLCAweDcsIDB4ZjcsIDB4NywgMHg3NCwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4LCAweDI2LCAweDFhLCAweDQ2LCAweDgzLCAweGZiLCAweDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweDQxLCAweDZiLCAweGUyLCAweGE0LCAweDhlLCAweDFlLCAweDk3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk4LCAweDljLCAweGQ0LCAweGNlLCAweDFhLCAweGM5LCAweDdmLCAweGM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDYyLCAweDdmLCAweDUyLCAweDRkLCAweDQ4LCAweDljLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDdlLCAweDFlLCAweDczLCAweDhkLCAweDZlLCAweDMzLCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweDNkLCAweDdjLCAweGY3LCAweDE4LCAweGQwLCAweGYzLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDExLCAweGY3LCAweGMsIDB4YTMsIDB4MWYsIDB4OWMsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgzYSwgMHgzMiwgMHhmYiwgMHgxNSwgMHhmYiwgMHgyNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCAweGM2LCAweGZiLCAweDE4LCAweGY3LCAweDEwLCAweGMzLCAweGMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI3LCAweGI4LCAweGE4LCAweDFmLCAweGUsIDB4NTcsIDB4NzksIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MTUsIDB4ZDEsIDB4ZjcsIDB4NDMsIDB4YjQsIDB4MTIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWQsIDB4ZGQsIDB4NDgsIDB4ZTUsIDB4OTIsIDB4YWQsIDB4ZjcsIDB4NTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDksIDB4MTMsIDB4ZWUsIDB4OWQsIDB4ZjcsIDB4ZDYsIDB4MTUsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODksIDB4OTAsIDB4OGEsIDB4OTAsIDB4ODksIDB4OCwgMHhiMSwgMHhhMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHhiMywgMHhhZiwgMHgxYiwgMHhhNCwgMHg5NCwgMHg3OCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHgxZiwgMHgxMywgMHhmNiwgMHg4ZiwgMHg0ZiwgMHg3OCwgMHg0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHgxYSwgMHhmYiwgMHg2LCAweGM0LCAweDQ5LCAweGYyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGU0LCAweGY3LCAweDI4LCAweGY3LCAweDUxLCAweDFlLCAweGQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDUsIDB4YzAsIDB4NywgMHg0MSwgMHhiMCwgMHg1LCAweGYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGY3LCAweDZiLCAweGZiLCAweDNhLCAweDQ4LCAweDZkLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU1LCAweGZiLCAweGEsIDB4ZjAsIDB4NTYsIDB4ZjcsIDB4ZCwgMHg0OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHgzNywgMHg4YywgMHg3ZSwgMHhmYiwgMHg5MSwgMHhmYiwgMHgyNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0NywgMHg3MSwgMHhjNCwgMHhjYywgMHgxZiwgMHgxMywgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHhhMiwgMHhkYSwgMHhkYiwgMHgxYSwgMHhiZiwgMHg2MiwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YywgMHg1MywgMHg0YywgMHg0MiwgMHg0NSwgMHg3YSwgMHgxZSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgMHhjZiwgMHgxNSwgMHg2MywgMHg5ZiwgMHhmYiwgMHgyNywgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHgxYSwgMHhhZCwgMHg5ZiwgMHhhOCwgMHhiMywgMHhmNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGZiLCAweDczLCAweDcwLCAweDFlLCAweGUsIDB4NGMsIDB4YTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjgsIDB4OGIsIDB4ZjcsIDB4NGEsIDB4NjYsIDB4YjAsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ODQsIDB4ZjMsIDB4MTMsIDB4YjAsIDB4ZjcsIDB4MmIsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg4YSwgMHhmNywgMHg2YSwgMHg1LCAweGRhLCAweDkxLCAweGIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDliLCAweGY3LCAweDQsIDB4MWIsIDB4OWQsIDB4OWEsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4MWYsIDB4NzUsIDB4NjUsIDB4NzIsIDB4NmQsIDB4MWEsIDB4MTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDAsIDB4NmIsIDB4YTUsIDB4N2YsIDB4YTYsIDB4YWQsIDB4YTcsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4Y2MsIDB4NmQsIDB4YWUsIDB4NTYsIDB4ZmIsIDB4MWQsIDB4NTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmEsIDB4MmEsIDB4NzYsIDB4MWUsIDB4ZjcsIDB4MzEsIDB4N2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWQsIDB4ZTEsIDB4ZmIsIDB4MjcsIDB4MWIsIDB4N2UsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4ODQsIDB4ODcsIDB4OGYsIDB4ODcsIDB4OTIsIDB4ODksIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTksIDB4NWUsIDB4YWMsIDB4MmUsIDB4OGMsIDB4ZmIsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4ZmIsIDB4NjcsIDB4MTgsIDB4MjgsIDB4YSwgMHhlLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDVmLCAweDc2LCAweGY3LCAweDY4LCAweGIxLCAweGY4LCAweDIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3LCAweDEsIDB4YWYsIDB4ZjQsIDB4ZjcsIDB4MWEsIDB4Y2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjcsIDB4ZWYsIDB4MywgMHhmNywgMHhhOSwgMHg3ZiwgMHgxNSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2OCwgMHhjYSwgMHhmNywgMHg2OCwgMHg3LCAweGY3LCAweDFiLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4ZWUsIDB4ZjcsIDB4MjcsIDB4MWEsIDB4ZjcsIDB4MjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDksIDB4ZjcsIDB4YiwgMHhmYiwgMHgxMCwgMHgyNiwgMHg3MywgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZSwgMHg4ZCwgMHgxZSwgMHg4ZSwgMHhmYiwgMHhkZCwgMHg1LCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY2LCAweGY3LCAweDcsIDB4ZjAsIDB4ZDcsIDB4OWIsIDB4ZjcsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4YWQsIDB4MWYsIDB4OWQsIDB4NywgMHhmYiwgMHgxMCwgMHgzMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZCwgMHhmYiwgMHgxMCwgMHhmYiwgMHgzNiwgMHhmNywgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGY3LCAweDE1LCAweDhjLCAweDFmLCAweGNhLCAweGIxLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGRlLCAweDcsIDB4YTUsIDB4OGMsIDB4OGEsIDB4YjQsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4ZDgsIDB4YTUsIDB4MjgsIDB4MzIsIDB4ZmIsIDB4OCwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHgzMCwgMHgxZiwgMHhlLCAweGE5LCAweDc5LCAweGI0LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweGUwLCAweDEsIDB4YWUsIDB4ZjUsIDB4ZjcsIDB4MzcsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NDAsIDB4ZWQsIDB4MywgMHhmNywgMHhmOCwgMHhkMCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgMHg5YiwgMHhiYywgMHg1ZSwgMHhkNiwgMHgxYiwgMHhmNywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGY3LCAweDFkLCAweGY3LCAweDExLCAweGVjLCAweDNlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE3LCAweDI0LCAweGE1LCAweDFmLCAweGY3LCAweDQ4LCAweDhjLCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGYsIDB4ZmMsIDB4OWQsIDB4NywgMHg2YiwgMHg0NywgMHg2NiwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NSwgMHgxZiwgMHg5ZCwgMHg4NywgMHhjNiwgMHhiNywgMHhhYiwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNCwgMHg5MiwgMHgxOSwgMHgyNiwgMHg0ZSwgMHg0MSwgMHgzNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDFhLCAweGZiLCAweDE0LCAweGI3LCAweGZiLCAweDE2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFiLCAweGM1LCAweGNhLCAweGJiLCAweGIyLCAweGEwLCAweDFlLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ0LCAweDE1LCAweDYyLCAweDhkLCAweDVlLCAweDNkLCAweDUyLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM2LCAweDg2LCAweGY3LCAweDJjLCAweGQxLCAweGY3LCAweGEsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAsIDB4ZWQsIDB4YWQsIDB4MWYsIDB4ZjcsIDB4MTAsIDB4NiwgMHhmMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhjMSwgMHhmYiwgMHg5LCAweDIzLCAweDFhLCAweDNkLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDIyLCAweDMwLCAweDRlLCAweDVlLCAweGNmLCAweGJhLCAweDhkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDk4LCAweGM1LCAweDk1LCAweGQxLCAweGFkLCAweDFhLCAweGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhkLCAweGRjLCAweDVhLCAweDU3LCAweDhlLCAweDNmLCAweDY3LCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDhhLCAweDYwLCAweDk1LCAweDQxLCAweDlkLCAweDVkLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYiwgMHg3MywgMHhmNywgMHgxYSwgMHg3NiwgMHhmNywgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGJkLCAweGY3LCAweGZjLCAweDMsIDB4ZjcsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NSwgMHgxNSwgMHhlZSwgMHhkYywgMHhkYiwgMHhlZiwgMHhlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYSwgMHhkYywgMHgyOCwgMHgyNywgMHgzYiwgMHgzYSwgMHgyOCwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkYiwgMHgzYiwgMHhlZiwgMHgxZiwgMHhlLCAweGY3LCAweGQxLCAweDdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQsIDB4MSwgMHhmNywgMHgzLCAweGY3LCAweDQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4ZjcsIDB4NCwgMHhmNywgMHg3MSwgMHhmNywgMHg0LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGY3LCAweDMsIDB4YjEsIDB4MTUsIDB4MjksIDB4YSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMSwgMHgxNiwgMHgyOSwgMHhhLCAweGY3LCAweGUxLCAweDE2LCAweDI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZSwgMHhmYywgMHg0OCwgMHhmOCwgMHg3NCwgMHg3NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOCwgMHg3NywgMHgxLCAweGE5LCAweGY4LCAweDdkLCAweDE1LCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NTksIDB4YSwgMHgxZSwgMHhmNywgMHgzMSwgMHhmNywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhhLCAweDZkLCAweGExLCAweDZjLCAweDdiLCAweDdkLCAweDg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDg3LCAweDFlLCAweGUsIDB4ZmIsIDB4YTQsIDB4ZjgsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzYsIDB4ZjcsIDB4YWEsIDB4NzcsIDB4MSwgMHhiOSwgMHhmOCwgMHg1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHg1OSwgMHhhLCAweDFmLCAweGY3LCAweDMyLCAweDM2LCAweGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjMsIDB4ZmIsIDB4N2MsIDB4NSwgMHgzOCwgMHhhLCAweDFlLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDE2LCAweDU5LCAweGEsIDB4MWYsIDB4ZjcsIDB4MzEsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHgyNCwgMHhmYiwgMHg3YywgMHg1LCAweDM4LCAweGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHhmYywgMHg5OCwgMHg5NCwgMHg3NiwgMHhmOSwgMHg0NSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGZiLCAweDEwLCAweDdmLCAweDE1LCAweGY4LCAweDY0LCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDUsIDB4NTMsIDB4NiwgMHhmYywgMHg2NCwgMHhmZCwgMHg0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4Y2UsIDB4N2YsIDB4Y2EsIDB4ZjcsIDB4NTQsIDB4Y2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4Y2EsIDB4ZjcsIDB4NTIsIDB4Y2EsIDB4MSwgMHhmNywgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweDMsIDB4OWYsIDB4ZjcsIDB4ODcsIDB4MTUsIDB4ZjcsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGZiLCAweDI2LCAweGIwLCAweGY3LCAweDFiLCAweGZiLCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzksIDB4MWIsIDB4ZWEsIDB4ZDYsIDB4YjAsIDB4YjMsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZTUsIDB4NywgMHg0YiwgMHg1NywgMHgzOSwgMHg2MywgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmYiwgMHgxMSwgMHgyNSwgMHhkYiwgMHhmNywgMHg0LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweGY4LCAweDYsIDB4YTksIDB4Y2EsIDB4NSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHg2LCAweDhhLCAweDk2LCAweDhhLCAweDk0LCAweDk1LCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDhjLCAweDk1LCAweDhjLCAweDk4LCAweDFlLCAweGY4LCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4YTksIDB4Y2EsIDB4NSwgMHhmYywgMHg1MSwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YWQsIDB4ZjYsIDB4ZGQsIDB4ZjcsIDB4MTEsIDB4MWIsIDB4ZTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGMsIDB4NjEsIDB4NGYsIDB4YmMsIDB4MWYsIDB4YTgsIDB4YzgsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHg0YiwgMHgzMSwgMHhiMywgMHgyYywgMHgxYiwgMHhmYiwgMHgzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxZiwgMHgyMiwgMHhmYiwgMHgyOCwgMHg2NiwgMHgxZiwgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDZkLCAweDRjLCAweDUsIDB4ZWIsIDB4NiwgMHg4YSwgMHg3ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YiwgMHg4MiwgMHg4MSwgMHgxYSwgMHg4MiwgMHg4YiwgMHg4MiwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZSwgMHgxZSwgMHg0OSwgMHg2LCAweGUsIDB4OGUsIDB4NTYsIDB4ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWQsIDB4Y2YsIDB4ZjcsIDB4NzAsIDB4YTIsIDB4ZjcsIDB4YTksIDB4ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhjNCwgMHhiMiwgMHhmNywgMHhhYywgMHhkMSwgMHhjMywgMHhkNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGE1LCAweGI3LCAweDE1LCAweDk4LCAweGE2LCAweDliLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDliLCAweDFiLCAweDk5LCAweGMyLCAweDZmLCAweDZlLCAweGMzLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZkLCAweGM1LCAweGM2LCAweDZkLCAweDk5LCAweDFiLCAweGFjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCAweGY3LCAweDNlLCAweGNkLCAweGIwLCAweDVkLCAweGQwLCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweDFmLCAweDcxLCAweGJhLCAweDc1LCAweGI5LCAweGFmLCAweDFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlmLCAweGRhLCAweGU3LCAweGIzLCAweGMzLCAweDFlLCAweGIxLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI1LCAweGJiLCAweDMyLCAweDFiLCAweGZiLCAweDUsIDB4ZmIsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4ZmIsIDB4MTQsIDB4ZmIsIDB4NiwgMHhlZiwgMHgzZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDhjLCAweDFmLCAweDhkLCAweGEyLCAweDUsIDB4NDEsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmEsIDB4Y2QsIDB4ZGMsIDB4MWEsIDB4ZGYsIDB4ZDAsIDB4YjgsIDB4ZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGQsIDB4MWUsIDB4Y2QsIDB4OGQsIDB4ZjEsIDB4NjQsIDB4YmUsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHgzOSwgMHgyMywgMHg4MywgMHg3NSwgMHg3NCwgMHgxYSwgMHg2MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHg1YywgMHhhNSwgMHg1ZCwgMHgxZSwgMHhhZSwgMHg0ZCwgMHhiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg1YywgMHgxYSwgMHg1ZiwgMHg0YiwgMHg0ZCwgMHg1YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHhhNywgMHhhNiwgMHg1NywgMHgxZSwgMHhhNSwgMHg1OSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NywgMHgxYiwgMHg3MiwgMHgyZCwgMHg1MCwgMHg3ZiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhlLCAweGY3LCAweGM0LCAweGZiLCAweDY3LCAweGFjLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM5LCAweGFmLCAweGY4LCAweDRiLCAweGI1LCAweGQwLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzMsIDB4YWIsIDB4OWUsIDB4ZGIsIDB4YjgsIDB4ZDMsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4ZjcsIDB4YjIsIDB4ZWQsIDB4MywgMHhmNywgMHg4YywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxNSwgMHg2NywgMHg0YiwgMHg1NiwgMHg1MCwgMHg0MCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhhOCwgMHg0OCwgMHhlNSwgMHhlZSwgMHhhOSwgMHhkYiwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHg2NCwgMHhiZiwgMHg2YSwgMHhkZSwgMHgxZSwgMHhlZiwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1YywgMHhmNywgMHg0YSwgMHhmMCwgMHgxYiwgMHhiMCwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YiwgMHg0NiwgMHhmYiwgMHgyNiwgMHgyNiwgMHhmYiwgMHg1NCwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgMHg3MSwgMHhhYywgMHhhZSwgMHhhMiwgMHg5ZSwgMHg5MSwgMHg5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhhNywgMHg4YywgMHhhMCwgMHhhNywgMHhhMywgMHgxYSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHg5ZSwgMHg3MywgMHg4YSwgMHgxZSwgMHg1YiwgMHg4YSwgMHg2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZSwgMHg1OCwgMHgxYSwgMHg0MywgMHhiZSwgMHg1MCwgMHhlNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhmNywgMHg5LCAweGY3LCAweDg3LCAweGY3LCAweDYsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWEsIDB4ZGQsIDB4MzMsIDB4ZmIsIDB4M2UsIDB4ZmIsIDB4MWYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4MjEsIDB4MjUsIDB4MWUsIDB4NzUsIDB4YjUsIDB4ODEsIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4MWEsIDB4ZGEsIDB4ZjcsIDB4MTYsIDB4ZjcsIDB4MSwgMHhjOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYiwgMHgxZSwgMHg4MiwgMHg5YiwgMHg1LCAweDI3LCAweDQ4LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGZiLCAweDgsIDB4ZmIsIDB4MTEsIDB4MWEsIDB4OGEsIDB4NTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4NTgsIDB4OTksIDB4NjYsIDB4OCwgMHg5YSwgMHg2ZCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhmYiwgMHgwLCAweDlkLCAweDVkLCAweDY1LCAweDFhLCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDYzLCAweDVjLCAweDVjLCAweDY1LCAweGI3LCAweGNiLCAweGJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGM1LCAweGFmLCAweGM0LCAweDFlLCAweGUsIDB4ZjcsIDB4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MSwgMHg3NiwgMHhjMiwgMHhkZiwgMHhmOCwgMHhhNCwgMHhkZCwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHgxMiwgMHhhNSwgMHhhYywgMHhmNywgMHgyNCwgMHhjMCwgMHhlNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHgxMywgMHhlZSwgMHhkMSwgMHhhYywgMHgxNSwgMHg5MiwgMHg4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MCwgMHg4NiwgMHg5MiwgMHg4NiwgMHg4LCAweDlhLCAweDllLCAweDliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyLCAweDk3LCAweDFiLCAweGFhLCAweGE3LCAweDY0LCAweDdiLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDJjLCAweGMzLCAweGM4LCAweGY3LCAweDQyLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5LCAweDFhLCAweDEzLCAweGFlLCAweGQwLCAweDhiLCAweGU1LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUzLCAweDFlLCAweGI2LCAweGNlLCAweDk4LCAweDk5LCAweGEwLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEyLCAweGYzLCAweDJhLCAweDg0LCAweDkyLCAweDFmLCAweGZiLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDI0LCAweDk2LCAweDc3LCAweDUsIDB4ZDMsIDB4OWUsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4ZmIsIDB4ZCwgMHg5YSwgMHg0YywgMHhkMywgMHg3MCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyLCAweGUzLCAweDdjLCAweGEyLCAweDUsIDB4ODYsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmYsIDB4NzksIDB4N2MsIDB4MWIsIDB4NjksIDB4ODYsIDB4YjQsIDB4ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWYsIDB4ODIsIDB4ZjcsIDB4MSwgMHg0NiwgMHhhMywgMHgxZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhmNywgMHgxZiwgMHg1LCAweDEzLCAweDFlLCAweGY3LCAweDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDM4LCAweDhhLCAweDhmLCAweDdiLCAweDFiLCAweDc5LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MmYsIDB4NzgsIDB4NzEsIDB4MWYsIDB4Y2UsIDB4NzYsIDB4NDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjcsIDB4NDQsIDB4MWIsIDB4ZmIsIDB4MWQsIDB4M2QsIDB4NDcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsIDB4MmUsIDB4ZGQsIDB4NWIsIDB4ZDMsIDB4NjMsIDB4MWYsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIsIDB4OTMsIDB4ODEsIDB4ODEsIDB4MWEsIDB4NzgsIDB4NzcsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODIsIDB4MWUsIDB4YTIsIDB4N2IsIDB4NSwgMHhiNiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHhhMCwgMHg5ZSwgMHgxYSwgMHhhOSwgMHg2MCwgMHhhOSwgMHg1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHgxZSwgMHg1NywgMHhhOCwgMHg1MiwgMHhhOSwgMHhjYywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHhkZSwgMHhjOCwgMHhkNSwgMHhiOCwgMHhjNCwgMHhmNywgMHgxYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHhmYiwgMHgyOSwgMHhmYiwgMHgxZiwgMHhmYiwgMHgxNSwgMHg2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyNSwgMHg2MCwgMHg1MCwgMHgxZSwgMHhjNiwgMHgzNSwgMHg5ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NCwgMHg3YSwgMHgxYiwgMHg3NSwgMHg4OCwgMHg0MCwgMHgzNiwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4LCAweGUsIDB4ZTAsIDB4OGIsIDB4ZjAsIDB4ZjgsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MTIsIDB4YWQsIDB4OWEsIDB4OTEsIDB4ZjcsIDB4OCwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgMHhmNywgMHg5LCAweDkwLCAweDlhLCAweDE3LCAweGFkLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCAweGRjLCAweGY3LCAweGI4LCAweDYsIDB4N2IsIDB4ZjcsIDB4MmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHgxLCAweGE5LCAweDZkLCAweGY3LCAweGYsIDB4ZjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZjcsIDB4MTYsIDB4ZGIsIDB4ZjcsIDB4OCwgMHhmNywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMCwgMHhkNSwgMHhmYiwgMHg4LCAweGZiLCAweDFhLCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweGZiLCAweDE0LCAweDI2LCAweDcxLCAweDFlLCAweDdiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDUsIDB4MTMsIDB4ZmMsIDB4ZjcsIDB4YjgsIDB4ZjcsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHgxMywgMHhkYywgMHg3YywgMHg2LCAweDVhLCAweDdmLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmLCAweDYxLCAweDFiLCAweGZiLCAweDI4LCAweDYsIDB4OGQsIDB4YTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmNywgMHgxZSwgMHhhMSwgMHhkYSwgMHhmNywgMHgxOCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgMHgxYSwgMHhmNywgMHg1MiwgMHhmYiwgMHgzZiwgMHhlNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNCwgMHhmYiwgMHgzMywgMHhmYiwgMHgzZSwgMHgyZiwgMHhmYiwgMHg0ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHgxZSwgMHg4YSwgMHhmYiwgMHgxMiwgMHhkNiwgMHhmYiwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMiwgMHg3NiwgMHg4ZCwgMHg2ZiwgMHgxOCwgMHgxMywgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgyOCwgMHg2LCAweDYxLCAweDc1LCAweDk3LCAweGJjLCAweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDdjLCAweDYsIDB4ZSwgMHhmNywgMHgyMCwgMHg4ZSwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHg3NiwgMHhmOCwgMHg2OSwgMHhmNywgMHgxOCwgMHhjNCwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhmNywgMHg0MywgMHhlNiwgMHgxMywgMHg3OCwgMHhmNywgMHg0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiwgMHhmNywgMHg0NywgMHg2LCAweDliLCAweGI2LCAweDg2LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDFhLCAweGFjLCAweDZlLCAweGIwLCAweDcwLCAweGIxLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweGFiLCAweDc2LCAweGFjLCAweGFjLCAweDFhLCAweGFhLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweGEwLCAweGExLCAweDFlLCAweDEzLCAweGI4LCAweGY3LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGExLCAweGJiLCAweDRmLCAweDk3LCAweDVkLCAweDgsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4YWYsIDB4YWIsIDB4Y2QsIDB4MWEsIDB4YzMsIDB4NmEsIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4YWMsIDB4MWUsIDB4NmIsIDB4YWIsIDB4NmMsIDB4YTYsIDB4YWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4ZDksIDB4ZDAsIDB4ZTAsIDB4YzEsIDB4N2UsIDB4MWUsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTAsIDB4NSwgMHhhZCwgMHg4NiwgMHg3NCwgMHhhNCwgMHg2YSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YSwgMHg3ZCwgMHg4YiwgMHg4YywgMHg3ZiwgMHgxZiwgMHg1NSwgMHg4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHg5NiwgMHg5MCwgMHhiNSwgMHg4LCAweDVjLCAweDg0LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweDViLCAweDFhLCAweDQ3LCAweGNiLCAweDdkLCAweGMyLCAweDhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDYyLCAweDVkLCAweDdmLCAweDYxLCAweDc3LCAweDVkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweGY3LCAweDkyLCAweDc5LCAweDk5LCAweDgzLCAweGJiLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIDB4ODIsIDB4NjUsIDB4NWEsIDB4NjAsIDB4MWEsIDB4NjQsIDB4ZDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4YjQsIDB4NWQsIDB4MWUsIDB4NGIsIDB4NGEsIDB4NWQsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4MWEsIDB4NzQsIDB4YTAsIDB4NzEsIDB4OWIsIDB4NmEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4NzYsIDB4OTQsIDB4NzMsIDB4NmYsIDB4MWEsIDB4NmUsIDB4NjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGMsIDB4NzcsIDB4MWUsIDB4ZSwgMHg0NiwgMHhhLCAweGFiLCAweGZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyLCAweDMsIDB4YWIsIDB4ZjcsIDB4OGMsIDB4MTUsIDB4ZTksIDB4MzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4NDUsIDB4ZTIsIDB4MjQsIDB4YWUsIDB4YWUsIDB4MTgsIDB4NWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4MmQsIDB4ZjEsIDB4NjQsIDB4YjEsIDB4OCwgMHhmOSwgMHhiOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHhmZCwgMHhiOSwgMHg2LCAweGIyLCAweGIxLCAweGU5LCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJiLCAweGM3LCAweDY4LCAweGFlLCAweDE4LCAweDM0LCAweDI0LCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDJkLCAweDMxLCAweDgsIDB4ZSwgMHgzYiwgMHhhMCwgMHg3NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHgyMiwgMHg0OSwgMHhhLCAweGY3LCAweGFjLCAweDE2LCAweGMzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY5LCAweGI5LCAweDYsIDB4YjEsIDB4NjQsIDB4ZjEsIDB4MmQsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWIsIDB4YWUsIDB4YWUsIDB4MTgsIDB4MjQsIDB4ZTIsIDB4NDUsIDB4ZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEsIDB4ZTksIDB4MzEsIDB4MmQsIDB4NDUsIDB4NDUsIDB4MjQsIDB4MzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NjgsIDB4MTgsIDB4YzcsIDB4YmIsIDB4ZjEsIDB4ZTksIDB4YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4OCwgMHhlLCAweDQ2LCAweGEsIDB4YmMsIDB4ZjcsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjksIDB4YjksIDB4NiwgMHg2NCwgMHg2NSwgMHgyZCwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YiwgMHg0ZiwgMHhhZSwgMHg2OCwgMHgxOCwgMHhlMiwgMHhmMiwgMHhkMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHhlOSwgMHhlNSwgMHgyZCwgMHhlNSwgMHg0NSwgMHhkMSwgMHgzNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHg2OCwgMHg2OCwgMHgxOCwgMHhiYiwgMHg0ZiwgMHhlOSwgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMiwgMHg2NSwgMHg4LCAweGZkLCAweGI5LCAweDYsIDB4ZSwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg3NiwgMHhmYSwgMHgyMiwgMHg0OSwgMHhhLCAweGI4LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDE1LCAweGYyLCAweDM0LCAweGQxLCAweDQ1LCAweGU1LCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU1LCAweGU5LCAweGQxLCAweGQxLCAweGYyLCAweGUyLCAweDY4LCAweGFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4LCAweDRmLCAweDViLCAweDI1LCAweDJkLCAweDY1LCAweDY0LCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4YjksIDB4NTMsIDB4ZmQsIDB4YjksIDB4NywgMHg2NSwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHhlOSwgMHg0ZiwgMHhiYiwgMHg4LCAweGUsIDB4ZjcsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4NzYsIDB4ZjcsIDB4ODEsIDB4YmYsIDB4ZjcsIDB4ODEsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhhMywgMHhmYSwgMHg3YywgMHgzLCAweGEzLCAweGY3LCAweDhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDcsIDB4MjUsIDB4YzIsIDB4NDgsIDB4ZGEsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjAsIDB4YWIsIDB4MTgsIDB4NDcsIDB4ZWEsIDB4NmYsIDB4YTAsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTQsIDB4OCwgMHhmOSwgMHhhYSwgMHg2LCAweDM2LCAweDMyLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc1LCAweDQ2LCAweDJkLCAweGIwLCAweDZiLCAweDE4LCAweGRhLCAweGU5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGNlLCAweGY3LCAweDcsIDB4ZjEsIDB4ZmIsIDB4NywgMHhmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHhjZSwgMHgzYywgMHhlOSwgMHg2NiwgMHg2YiwgMHgxOCwgMHhkMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhhNSwgMHg3MywgMHhlMSwgMHgzMywgMHg4LCAweGZkLCAweGFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZTAsIDB4ZTQsIDB4YTcsIDB4YTAsIDB4Y2YsIDB4ZWEsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4MTgsIDB4M2MsIDB4MmQsIDB4NTQsIDB4NDgsIDB4ZmIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgMHg4LCAweGUsIDB4NzIsIDB4OTAsIDB4NzYsIDB4ZTksIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODQsIDB4NzcsIDB4MSwgMHhmOCwgMHhiNywgMHhjMiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweGY1LCAweDE1LCAweGY3LCAweDNhLCAweGZiLCAweGUsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHhmOCwgMHgzOSwgMHhmOCwgMHhiYiwgMHg1NCwgMHhmYywgMHg4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHgyLCAweGU5LCAweDcsIDB4ZSwgMHhmNywgMHhjNCwgMHhlYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMCwgMHhmNywgMHg1YywgMHhjMCwgMHhkOSwgMHhhYywgMHg4YiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGE5LCAweGZhLCAweDIxLCAweDMsIDB4YTksIDB4ZjcsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4YSwgMHhmYiwgMHgzLCAweGI0LCAweDYxLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMsIDB4YjQsIDB4YWMsIDB4MTgsIDB4NGQsIDB4ZDksIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgzZCwgMHhjMCwgMHhmZCwgMHg2NSwgMHg2LCAweDIzLCAweGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGYzLCAweGVmLCAweDUsIDB4ZjksIDB4NjUsIDB4YzAsIDB4ZmQsIDB4M2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhjOSwgMHhkOSwgMHg2MiwgMHhhYywgMHgzMSwgMHhmYiwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDYxLCAweGZiLCAweGEsIDB4ZmIsIDB4MywgMHgxOSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNiLCAweGEyLCAweDc2LCAweGZhLCAweDIxLCAweDc3LCAweDEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2UsIDB4YzAsIDB4ZjcsIDB4MzQsIDB4YzAsIDB4MywgMHhmNywgMHgzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZCwgMHgxNSwgMHhjMCwgMHhmOSwgMHg3YywgMHg2LCAweGRiLCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweDNhLCAweDUsIDB4ZmQsIDB4N2MsIDB4YzAsIDB4ZjksIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhlZCwgMHgzZSwgMHhhYywgMHhiNCwgMHhmYiwgMHgzLCAweGU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGI0LCAweGZiLCAweDMsIDB4ZjcsIDB4YSwgMHgxOSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGZiLCAweGEsIDB4NjEsIDB4NjIsIDB4ZmIsIDB4MywgMHgzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhYywgMHg2MiwgMHgxOCwgMHhlZCwgMHhkOCwgMHg1LCAweGUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4ZWUsIDB4YzAsIDB4ZjcsIDB4NTEsIDB4YzAsIDB4MSwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlZSwgMHgxNSwgMHhmOSwgMHgzZCwgMHg2LCAweDQ4LCAweDM1LCAweGI5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZhLCAweGU1LCAweGY3LCAweDMsIDB4YjQsIDB4YjUsIDB4ZjcsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzLCAweDE5LCAweGZiLCAweGEsIDB4ZjcsIDB4MywgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNSwgMHgzMSwgMHhmNywgMHgzLCAweDVkLCAweDZhLCAweDE4LCAweGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNhLCAweDUsIDB4ZmQsIDB4M2QsIDB4NTYsIDB4ZjksIDB4NjgsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMCwgMHgyYSwgMHgyNiwgMHgyZiwgMHg1LCAweGZkLCAweDY4LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgzYiwgMHg4ZCwgMHg3NiwgMHhmYSwgMHgyMSwgMHg3NywgMHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDQzLCAweGMwLCAweGY3LCAweDM0LCAweGMwLCAweDMsIDB4YjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4N2EsIDB4MTUsIDB4ZjcsIDB4MywgMHgzMSwgMHhiNSwgMHg2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzLCAweGZiLCAweGEsIDB4ZjcsIDB4MywgMHhmNywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI1LCAweGI0LCAweGY3LCAweDMsIDB4ZTUsIDB4NmEsIDB4YjQsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjksIDB4M2UsIDB4NSwgMHhmOSwgMHg0YywgMHg1NiwgMHhmZCwgMHg3YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweDNiLCAweDNhLCAweDNiLCAweGRjLCAweDUsIDB4ZjksIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYsIDB4ZmQsIDB4NGMsIDB4NywgMHgyOSwgMHhkOCwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZmIsIDB4ZjcsIDB4MSwgMHhiZCwgMHhmNywgMHg0MCwgMHhiZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGE2LCAweGZhLCAweDc4LCAweDMsIDB4YTYsIDB4ZjcsIDB4ODksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4OCwgMHgyMSwgMHhiMiwgMHg2MSwgMHhlZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweGIzLCAweGFkLCAweDE4LCAweDNmLCAweGVhLCAweDUsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzYsIDB4NiwgMHgzZiwgMHgyYywgMHhiMywgMHg2OSwgMHhlZCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweGIyLCAweGI1LCAweGY3LCAweDgsIDB4ZjUsIDB4MTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OCwgMHhmNSwgMHg2NCwgMHhiNSwgMHgyOSwgMHhmNywgMHg5LCAweDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY5LCAweDE4LCAweGQ3LCAweDJjLCAweDUsIDB4ZmMsIDB4YzYsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkNywgMHhlYSwgMHg2MywgMHhhZCwgMHgyOSwgMHhmYiwgMHg5LCAweDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGZiLCAweDgsIDB4MjEsIDB4MTksIDB4ZjcsIDB4NDEsIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4MzQsIDB4ZTEsIDB4ZTIsIDB4ZTEsIDB4NSwgMHhmOSwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUyLCAweDM1LCAweDM0LCAweDM1LCAweDUsIDB4ZSwgMHhhOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg3NiwgMHhmOCwgMHg1ZCwgMHhjMiwgMHhmNywgMHg1NSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGY3LCAweGRkLCAweDE2LCAweGM2LCAweDYsIDB4ZjcsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4NTUsIDB4NSwgMHg1MiwgMHg2LCAweDM5LCAweGZiLCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmMsIDB4NSwgMHg2LCAweDM2LCAweGY3LCAweDU1LCAweDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4NiwgMHhmNywgMHhkZSwgMHhmZCwgMHhmLCAweDE1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAweGY4LCAweDE3LCAweDUsIDB4ZjcsIDB4ZDYsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDUxLCAweDc3LCAweGE4LCAweGY4LCAweDAsIDB4YjIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4YmIsIDB4MSwgMHhhNSwgMHhlMSwgMHhmNywgMHg5ZiwgMHhkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY4LCAweGYsIDB4ZjcsIDB4ZWMsIDB4MTUsIDB4YmYsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmUsIDB4OWIsIDB4NTAsIDB4MWIsIDB4ZmIsIDB4YSwgMHgzYiwgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHhlLCAweGZiLCAweDEwLCAweGRmLCAweDM1LCAweGY2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweGJlLCAweGY3LCAweGI0LCAweGY3LCAweDExLCAweGY3LCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ4LCAweGY3LCAweDU5LCAweGZiLCAweDU5LCAweDU3LCAweDU4LCAweDdiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdlLCAweDZkLCAweDFmLCAweGIyLCAweDU5LCAweDUsIDB4YTAsIDB4YjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4OTUsIDB4ZDIsIDB4MWIsIDB4ZjEsIDB4YjYsIDB4ZmIsIDB4MzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NTQsIDB4ODQsIDB4MWYsIDB4ODMsIDB4NjgsIDB4MTUsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4N2EsIDB4ZmIsIDB4NjAsIDB4ZmIsIDB4MWIsIDB4MWIsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YsIDB4ZWEsIDB4YjcsIDB4ZDksIDB4YjEsIDB4ZjcsIDB4MjcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjOCwgMHhhYSwgMHg2MiwgMHg3NCwgMHhhMCwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGMyLCAweGY3LCAweGIzLCAweGMyLCAweGY3LCAweDkzLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjgsIDB4M2IsIDB4YzIsIDB4MywgMHhhNCwgMHgxNiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OSwgMHhmOSwgMHg1NywgMHhmYywgMHg1OSwgMHg1NCwgMHhmOCwgMHgyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg5MywgMHhmYiwgMHhmNiwgMHg1NCwgMHhmNywgMHhmNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHhmYywgMHgyMiwgMHg2LCAweGUsIDB4ZjcsIDB4MjAsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzAsIDB4ZjksIDB4MTQsIDB4YmQsIDB4MSwgMHhiMiwgMHhjMywgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGMyLCAweDMsIDB4ZjcsIDB4NmMsIDB4ZjcsIDB4MCwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0MiwgMHhmOCwgMHg1NiwgMHg1LCAweGJhLCAweDU1LCAweGFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDNjLCAweDFhLCAweGZiLCAweDQwLCAweGZiLCAweDIwLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAweGZiLCAweDQwLCAweDNjLCAweDQ4LCAweGFkLCAweGI4LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlLCAweDY2LCAweGIxLCAweDE1LCAweDczLCAweGE4LCAweDRmLCAweGM1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGUsIDB4MWEsIDB4ZjcsIDB4MmUsIDB4ZjcsIDB4MjQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4ZjcsIDB4M2YsIDB4ZDcsIDB4ZDAsIDB4NmQsIDB4NWQsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmMsIDB4Y2IsIDB4ZmMsIDB4ZGMsIDB4MTUsIDB4YWMsIDB4NmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4ZTUsIDB4NSwgMHg1MywgMHhjYSwgMHhkZSwgMHg2OSwgMHhlOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhmNywgMHg1ZiwgMHhmNywgMHgzOCwgMHhmNywgMHgzZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZiwgMHhlOCwgMHg2NSwgMHhlNCwgMHg1MSwgMHhjYywgMHgxZiwgMHhlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHg2NywgMHhhZCwgMHgzMywgMHgzNCwgMHg1LCAweGMyLCAweDRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweGFiLCAweDJmLCAweDFiLCAweGZiLCAweDVmLCAweGZiLCAweDNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNmLCAweGZiLCAweDU1LCAweGZiLCAweDEwLCAweGJjLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJkLCAweDViLCAweDFmLCAweGUsIDB4NDQsIDB4OGIsIDB4YmMsIDB4ZjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NzcsIDB4MSwgMHg5MSwgMHhmOCwgMHhlZSwgMHgzLCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGY4LCAweGVlLCAweDYsIDB4ZmIsIDB4YzMsIDB4ZjksIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHhmYiwgMHg4OCwgMHhmZCwgMHgxMywgMHgxNSwgMHhmNywgMHg2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg2OCwgMHhmNywgMHg1YiwgMHhmYywgMHg2OCwgMHg1LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTksIDB4OGQsIDB4NzYsIDB4ZjksIDB4NDIsIDB4YmUsIDB4MSwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOSwgMHgxOSwgMHgzLCAweGY3LCAweGU1LCAweDc4LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVjLCAweGY5LCAweDc1LCAweDUsIDB4ZmQsIDB4MTksIDB4NiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHhmYywgMHhjMCwgMHgxNSwgMHhmYiwgMHg2MiwgMHhmOCwgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGY4LCAweDQ3LCAweDYsIDB4ZSwgMHhhOSwgMHg4YiwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyZCwgMHhjMSwgMHhmNywgMHgyZCwgMHhjMSwgMHgxLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDYwLCAweDE0LCAweGUwLCAweGVmLCAweGY3LCAweDYzLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweDI5LCAweGMxLCAweGZjLCAweDI5LCAweDYsIDB4ZTIsIDB4OTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDcsIDB4Y2QsIDB4ZGQsIDB4MWIsIDB4ZjcsIDB4ODEsIDB4YzEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODEsIDB4NiwgMHhmYiwgMHgyYSwgMHg0MiwgMHhmYiwgMHhkLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4NiwgMHhkNywgMHhmYiwgMHhjLCAweGY3LCAweDI3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY3LCAweDgxLCAweGMxLCAweGZiLCAweDgxLCAweDYsIDB4MzksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YsIDB4Y2QsIDB4ZTIsIDB4ODEsIDB4MWYsIDB4ZSwgMHhhOSwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhjNSwgMHhjMSwgMHhmNywgMHgyZCwgMHhjMSwgMHhmNywgMHgyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMSwgMHhlMiwgMHg3NywgMHgxLCAweGI4LCAweGMyLCAweDMsIDB4ZTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MTUsIDB4YjcsIDB4NzIsIDB4YjgsIDB4ZDgsIDB4NSwgMHg4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YSwgMHhhOSwgMHg4MywgMHhhMSwgMHgxYiwgMHhmNywgMHg5MywgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg4OSwgMHg2LCAweDdmLCAweDczLCAweDhkLCAweDk1LCAweDdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGRiLCAweGY3LCAweDIxLCAweDUsIDB4ZjcsIDB4NmMsIDB4YzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NGUsIDB4NiwgMHhlMiwgMHhmNywgMHgyZCwgMHg1LCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMxLCAweDQ3LCAweDYsIDB4YWUsIDB4YzksIDB4NWQsIDB4YTQsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4NSwgMHhmYiwgMHg4LCAweDYsIDB4MjksIDB4ZmIsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZSwgMHhmYiwgMHgxYiwgMHgzOCwgMHhhNywgMHg1NywgMHhjYywgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg2NSwgMHhmNywgMHg2YywgMHgxNSwgMHhkMiwgMHg5MSwgMHhkNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZiwgMHhkNSwgMHgxYiwgMHhlOCwgMHg2LCAweDMyLCAweGZiLCAweDJmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4MmUsIDB4ZmIsIDB4M2IsIDB4MTUsIDB4NmUsIDB4YTYsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ODMsIDB4YjksIDB4OCwgMHhmNywgMHgxNCwgMHg2LCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4ODgsIDB4N2EsIDB4YmEsIDB4ZjcsIDB4NGIsIDB4YzIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGEsIDB4YmQsIDB4MSwgMHhmNywgMHhkNCwgMHhlOSwgMHgzLCAweGJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDE1LCAweDg1LCAweDlkLCAweGFiLCAweDdkLCAweGJlLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIyLCAweGY3LCAweGYsIDB4ZjcsIDB4MSwgMHhmNywgMHgzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMywgMHg1MCwgMHhmNywgMHgyYiwgMHhmYiwgMHg0MywgMHg2YywgMHg2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgMHg4MiwgMHg2NCwgMHgxZiwgMHg2MCwgMHg3LCAweDhlLCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDhkLCAweDk4LCAweDFiLCAweGYwLCAweGYyLCAweDQ1LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4MWYsIDB4ZmIsIDB4NWMsIDB4NTQsIDB4ZjcsIDB4NWEsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgMHgyZiwgMHgzYiwgMHgyNSwgMHg3MiwgMHg3MSwgMHg4ZiwgMHg5NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHgxZSwgMHhlLCAweGY3LCAweDIwLCAweDI2LCAweGEyLCAweGY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJhLCAweGEyLCAweDEsIDB4ZjcsIDB4ZSwgMHhmNywgMHg1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZhLCAweGY3LCAweDUsIDB4MywgMHhhNCwgMHgzZCwgMHgxNSwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhjNywgMHhhMiwgMHg3LCAweDUwLCAweDY1LCAweGEwLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGY5LCAweDQzLCAweGY3LCAweGZhLCAweGZkLCAweDQzLCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4NjUsIDB4NzYsIDB4NTEsIDB4MWUsIDB4NzQsIDB4ZjcsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4NywgMHg1MCwgMHg2NSwgMHhhMCwgMHhkMSwgMHgxZiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmMiwgMHg3LCAweGU4LCAweGQwLCAweDliLCAweGE3LCAweDFlLCAweGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweDllLCAweDc0LCAweDcsIDB4YTcsIDB4ZDAsIDB4N2IsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZmMsIDB4ZjIsIDB4NywgMHg0NSwgMHg2NiwgMHg3NiwgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhlLCAweGE5LCAweDI3LCAweGYyLCAweGY5LCAweDRkLCAweGI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4ZjgsIDB4ZWYsIDB4OWYsIDB4MywgMHg5OSwgMHhmYiwgMHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweDlmLCAweGE2LCAweDkzLCAweDlmLCAweDFiLCAweGY4LCAweDc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhlLCAweDUsIDB4YTQsIDB4YWYsIDB4ODQsIDB4ODcsIDB4YTUsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4ZjEsIDB4OTAsIDB4OWYsIDB4YTQsIDB4ZjEsIDB4OCwgMHg3NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDMyLCAweDY4LCAweDZiLCAweDczLCAweDNkLCAweDFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZkLCAweDYsIDB4ZjcsIDB4YmEsIDB4ZjcsIDB4ZTcsIDB4ZmIsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZmEsIDB4NSwgMHhmNywgMHg5MSwgMHg2LCAweGY3LCAweDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDVhLCAweDRhLCAweDlmLCAweDFmLCAweDlmLCAweDYsIDB4ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzMsIDB4NSwgMHhmYywgMHg4NSwgMHg2LCAweDY5LCAweDY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCAweDhkLCAweDY5LCAweDFmLCAweGY3LCAweGYxLCAweGZjLCAweDVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZSwgMHhmNywgMHg3ZCwgMHhjMiwgMHgxLCAweDk2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdkLCAweDE1LCAweDQyLCAweGEsIDB4ZSwgMHhmYiwgMHg0YiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZiwgMHg3NiwgMHhmNywgMHg0ZiwgMHhiOSwgMHg5ZSwgMHhkYiwgMHhlMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NywgMHgxLCAweGY3LCAweDgxLCAweDlkLCAweDMsIDB4Y2MsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4MTUsIDB4NzUsIDB4OWUsIDB4N2YsIDB4OWYsIDB4YTIsIDB4OTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4YTEsIDB4OWYsIDB4MWUsIDB4OWUsIDB4YTAsIDB4OTcsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWIsIDB4OWYsIDB4OCwgMHg4ZSwgMHg5MCwgMHg5MiwgMHg4YywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg5MSwgMHg4YSwgMHg3ZiwgMHg4NywgMHg3NiwgMHg4NiwgMHg3YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgMHg3YywgMHgxZiwgMHg4MywgMHg3MywgMHg4MCwgMHg3NywgMHg2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg3NCwgMHg5NiwgMHg3NiwgMHhhNiwgMHhhNSwgMHg5NSwgMHhhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMCwgMHg4YywgMHgxZSwgMHhhOSwgMHg4MSwgMHg5ZiwgMHg4MywgMHhhNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg4NiwgMHg5YSwgMHg4NywgMHg5YiwgMHhhMCwgMHgxYSwgMHg4ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgMHg5NiwgMHg5MSwgMHg4ZSwgMHg4ZSwgMHg4YSwgMHg4NywgMHg5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhhNiwgMHg3YSwgMHg5ZSwgMHg3YSwgMHg5OCwgMHg3ZSwgMHg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDczLCAweGEzLCAweDk5LCAweDc1LCAweGE2LCAweDFiLCAweDliLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweGExLCAweGFhLCAweDY4LCAweDk0LCAweDZlLCAweDkzLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZmLCAweDkzLCAweDZiLCAweDkzLCAweDc0LCAweDk3LCAweDgsIDB4ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4ODUsIDB4OGUsIDB4OTAsIDB4MWEsIDB4OGUsIDB4OGYsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4OTAsIDB4MWUsIDB4Y2QsIDB4YWEsIDB4OGQsIDB4ODIsIDB4YjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTUsIDB4OCwgMHg5NywgMHg4ZSwgMHhhNiwgMHg5OCwgMHhhMywgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNCwgMHg3YSwgMHg5NywgMHg3OCwgMHg2ZSwgMHg3OSwgMHg2YiwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MCwgMHgxZSwgMHg3ZiwgMHg3ZiwgMHg3YSwgMHg3ZiwgMHg3ZCwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4LCAweDg4LCAweDg1LCAweDg2LCAweDg4LCAweDg4LCAweDFiLCAweDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDkwLCAweDk4LCAweGE2LCAweDkyLCAweDllLCAweDkyLCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweDkxLCAweDljLCAweDkxLCAweDlkLCAweGE0LCAweDFhLCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweGExLCAweDcwLCAweDcwLCAweDgzLCAweDc2LCAweDc5LCAweDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxLCAweDc5LCAweDkxLCAweDc4LCAweDFlLCAweDkyLCAweDc3LCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc3LCAweDcxLCAweDFhLCAweDdmLCAweDhhLCAweDg1LCAweDg3LCAweDg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDhkLCAweDhmLCAweDg0LCAweDFlLCAweDc1LCAweDk2LCAweDdkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk3LCAweDgwLCAweDk2LCAweDgsIDB4YTMsIDB4NzUsIDB4ODAsIDB4YWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmEsIDB4MWIsIDB4NzMsIDB4N2IsIDB4N2EsIDB4NzUsIDB4NzEsIDB4OWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4YjMsIDB4ODQsIDB4MWYsIDB4YTgsIDB4ODYsIDB4OGIsIDB4OGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzUsIDB4NzAsIDB4OCwgMHg5NiwgMHg4NiwgMHg5MCwgMHg4NywgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYSwgMHg4OCwgMHg4NywgMHg4NywgMHg4MiwgMHg4NiwgMHgxZSwgMHg3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3YiwgMHg3MSwgMHg4NCwgMHg3MiwgMHg4NiwgMHg4LCAweDZiLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYzLCAweDdmLCAweDZjLCAweDFhLCAweGUsIDB4NjUsIDB4ZmEsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg5NSwgMHhmOCwgMHg4ZCwgMHgzLCAweGY4LCAweDEsIDB4NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZjcsIDB4MmEsIDB4ZmEsIDB4NGEsIDB4NjgsIDB4OTAsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZmQsIDB4YjIsIDB4ZmIsIDB4NTksIDB4ZjgsIDB4MzEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYsIDB4NDMsIDB4OWIsIDB4NmEsIDB4ZWIsIDB4YmEsIDB4NSwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGY3LCAweGYsIDB4YmUsIDB4ZjcsIDB4NDYsIDB4YmYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNiwgMHhjMCwgMHgzLCAweGY4LCAweDEsIDB4ZjcsIDB4ODEsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAsIDB4YjYsIDB4ZGEsIDB4NDQsIDB4ZDAsIDB4MWIsIDB4YWQsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWIsIDB4OWYsIDB4OWYsIDB4MWYsIDB4NmIsIDB4YWQsIDB4NSwgMHg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZCwgMHg3YiwgMHg4NCwgMHg3YSwgMHgxYiwgMHg1ZCwgMHg1OSwgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNCwgMHg1MCwgMHgxZiwgMHhiYywgMHhiZiwgMHhiYSwgMHhiMCwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhhMCwgMHg5ZiwgMHg4NSwgMHg3YiwgMHg5ZiwgMHgxZiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHg1LCAweDkzLCAweDdlLCAweDcyLCAweGEzLCAweDYzLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM3LCAweDY4LCAweDY0LCAweDRlLCAweDNmLCAweDFmLCAweGM2LCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweGI0LCAweDQ3LCAweDFiLCAweDMzLCAweDU1LCAweDNmLCAweDUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNlLCAweGMzLCAweDQ1LCAweGRlLCAweGQ2LCAweGM3LCAweGJmLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNiLCAweDFmLCAweDYyLCAweGFiLCAweDE1LCAweDczLCAweDdkLCAweDNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDRmLCAweDFiLCAweDU2LCAweDY2LCAweGMyLCAweGIyLCAweGE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEzLCAweGM0LCAweGNmLCAweGJlLCAweGUxLCAweDRjLCAweDc3LCAweDlhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGUsIDB4YTksIDB4ZjcsIDB4MTAsIDB4YmUsIDB4ZjcsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmMsIDB4MSwgMHhhNSwgMHhiZSwgMHhmOCwgMHhjMiwgMHhjMCwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGY5LCAweGY3LCAweDgwLCAweDE1LCAweDc2LCAweGEzLCAweGNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCAweGRmLCAweDFiLCAweGY0LCAweGJkLCAweGQyLCAweGQ1LCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRhLCAweGNjLCAweDMxLCAweDM2LCAweDY3LCAweDVhLCAweDU2LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGM1LCAweDRkLCAweDYxLCAweGI3LCAweDM0LCAweDFiLCAweDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDQ4LCAweDRmLCAweDQxLCAweDFhLCAweDQxLCAweGJhLCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGU4LCAweGYyLCAweGNiLCAweGU2LCAweGEwLCAweGEzLCAweDFlLCAweDY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFjLCAweDE1LCAweDU4LCAweDVkLCAweDVhLCAweDYwLCAweDRkLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVjLCAweDYxLCAweGFlLCAweGM2LCAweGIwLCAweGE2LCAweGJjLCAweGM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGJmLCAweGIzLCAweDZiLCAweDU1LCAweGNjLCAweDFmLCAweGNlLCAweDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGNhLCAweGExLCAweGE4LCAweGM1LCAweDFiLCAweGQ2LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUxLCAweDcxLCAweDQ5LCAweDU2LCAweDZkLCAweDVhLCAweDYxLCAweDYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGIyLCAweGM0LCAweDUwLCAweDFmLCAweGUsIDB4ZTAsIDB4OGIsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ZmUsIDB4NzcsIDB4MSwgMHhhNSwgMHgxNiwgMHhmOSwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMiwgMHhmYywgMHhkNiwgMHg2LCAweGY4LCAweGQ2LCAweGY4LCAweGQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGIwLCAweDUsIDB4ZSwgMHgzYiwgMHhhMCwgMHg3NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1YSwgMHg3NywgMHgxLCAweGEyLCAweDE2LCAweGNjLCAweDYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NmIsIDB4ZjcsIDB4ZjIsIDB4ZjcsIDB4NmIsIDB4ZmIsIDB4ZjIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjYywgMHg2LCAweGZiLCAweGFjLCAweGY4LCAweDVhLCAweDUsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhhMCwgMHg3NiwgMHhmOCwgMHg3MSwgMHg3NywgMHgxLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGI4LCAweDMsIDB4YTksIDB4ZjgsIDB4NTQsIDB4MTUsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4ZmMsIDB4NTQsIDB4ZjcsIDB4YTYsIDB4ZjgsIDB4NTQsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4ZmIsIDB4N2EsIDB4ZmMsIDB4YiwgMHhmYiwgMHg3YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweDUsIDB4ZSwgMHhlMCwgMHhhMCwgMHg3NiwgMHhmOCwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiYiwgMHg1NSwgMHhhLCAweDE2LCAweGMyLCAweGY3LCAweDUxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MjMsIDB4ZjcsIDB4MjcsIDB4ZjcsIDB4MTUsIDB4ZjcsIDB4MjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzIsIDB4ZjcsIDB4MTksIDB4ZmIsIDB4MjcsIDB4ZmIsIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ZmIsIDB4NTEsIDB4YzIsIDB4ZjcsIDB4NTEsIDB4NywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhmYiwgMHgyZiwgMHhmNywgMHgyNywgMHhmYiwgMHg1MywgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgMHhmYiwgMHgyZiwgMHhmYiwgMHgyNywgMHhmYiwgMHg0MSwgMHgxZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGUwLCAweDdhLCAweGJhLCAweGY4LCAweDYyLCAweDc3LCAweDU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4YzEsIDB4MTUsIDB4ZmIsIDB4NDEsIDB4ZjcsIDB4MmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MjUsIDB4NGIsIDB4YSwgMHhmNywgMHgyZiwgMHhmNywgMHgyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0MSwgMHgxZSwgMHhmNywgMHg1MywgMHg1NCwgMHhmYiwgMHg1MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3LCAweGZiLCAweDExLCAweGZiLCAweDE5LCAweGZiLCAweDI3LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAweGZiLCAweDI0LCAweGZiLCAweDI3LCAweGY3LCAweDE1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIzLCAweDFlLCAweGY3LCAweDUyLCAweDU0LCAweDcsIDB4ZSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHgyMCwgMHhmNywgMHg0LCAweGY5LCAweGI4LCAweGY2LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YywgMHhkMSwgMHgzLCAweDhkLCAweDU4LCAweDE1LCAweDZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFhLCAweDc0LCAweGFlLCAweGY3LCAweDI3LCAweDZlLCAweGY4LCAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFlLCAweDhmLCAweDFlLCAweGY3LCAweDFjLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweDhkLCAweGIwLCAweDFlLCAweDk1LCAweDhjLCAweDhlLCAweDkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDliLCAweDlhLCAweDcxLCAweGFjLCAweDFiLCAweGE0LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweGE2LCAweGIyLCAweDcyLCAweGEyLCAweDY3LCAweGZiLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTQsIDB4ZmIsIDB4OGEsIDB4ZmIsIDB4MjcsIDB4MWYsIDB4OGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2EsIDB4OTAsIDB4MmUsIDB4OGQsIDB4NDEsIDB4OCwgMHg1YywgMHg4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHg3MywgMHg3YywgMHg3YywgMHg3YSwgMHhhOSwgMHg3MSwgMHgxYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZiwgMHg3MywgMHg3ZSwgMHg2MCwgMHgxZiwgMHhlLCAweGY3LCAweDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGY3LCAweDE1LCAweGY3LCAweDZmLCAweGY3LCAweDE2LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzcsIDB4ZjcsIDB4MTUsIDB4ZDYsIDB4ZjcsIDB4MTYsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTUsIDB4MTQsIDB4MzgsIDB4ZjcsIDB4MzcsIDB4Y2MsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4YSwgMHg2ZiwgMHhhNywgMHg2NywgMHg2NywgMHg2ZSwgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NywgMHgxZSwgMHhmOCwgMHgyZCwgMHgxNiwgMHg1MiwgMHhhLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE3LCAweDY3LCAweDY3LCAweDcwLCAweDZmLCAweDY3LCAweDFlLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweGY3LCAweGYwLCAweDE1LCAweDY3LCAweGE4LCAweDZlLCAweGFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGFmLCAweGE4LCAweGE4LCAweGFmLCAweGFmLCAweDZlLCAweGE4LCAweDY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY3LCAweDZlLCAweDZlLCAweDY3LCAweDFlLCAweGUsIDB4ZjcsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4OGIsIDB4YmYsIDB4MTIsIDB4OWMsIDB4ZjgsIDB4OTQsIDB4MTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4NjAsIDB4YmMsIDB4ZjcsIDB4NWYsIDB4MTUsIDB4YTksIDB4YTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWEsIDB4YTEsIDB4YjgsIDB4MWIsIDB4YTksIDB4YWEsIDB4N2YsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmEsIDB4MWYsIDB4N2YsIDB4YjEsIDB4YzAsIDB4N2UsIDB4YmEsIDB4MWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTIsIDB4YTEsIDB4OTIsIDB4OTQsIDB4OWYsIDB4MWYsIDB4YWEsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTUsIDB4YTAsIDB4OTQsIDB4OWQsIDB4NmEsIDB4YWQsIDB4MTgsIDB4N2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2QsIDB4NmYsIDB4NjYsIDB4NTMsIDB4MWIsIDB4NjMsIDB4NWYsIDB4OTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTgsIDB4NjUsIDB4MWYsIDB4MTMsIDB4ZTAsIDB4OTksIDB4NjMsIDB4NjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4NWMsIDB4MWIsIDB4NDAsIDB4NmEsIDB4NjEsIDB4NzMsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ZSwgMHg4YiwgMHhjMiwgMHhmNywgMHgxNSwgMHhjMiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhiYSwgMHg5MCwgMHhiYiwgMHgxMiwgMHg5NiwgMHhmNywgMHg0YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgzYSwgMHhhLCAweGZiLCAweDgzLCAweDQsIDB4M2EsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHgzMCwgMHhiYSwgMHhmNywgMHhjZiwgMHgxNSwgMHhhYiwgMHhhOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMiwgMHhhMywgMHhiZSwgMHgxYiwgMHhhNSwgMHhhZCwgMHg4NCwgMHg3YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiOSwgMHgxZiwgMHgxMywgMHgyMCwgMHg3OCwgMHhjMCwgMHhiNCwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhZiwgMHgxYiwgMHhhNCwgMHhhMSwgMHg5MCwgMHg5NiwgMHhhMiwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhhMCwgMHg5NiwgMHhhNCwgMHg5MywgMHg5YSwgMHg2NiwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgMHg3YiwgMHg3ZCwgMHg3MywgMHg2NSwgMHg0YiwgMHgxYiwgMHg3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MywgMHg5NCwgMHg5NywgMHg2YywgMHgxZiwgMHgxMywgMHgxMCwgMHg2NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OSwgMHg2MCwgMHg5YywgMHg1ZSwgMHg4YywgMHg4LCAweDM0LCAweDVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLCAweDZiLCAweDc3LCAweDFmLCAweGUsIDB4ZjcsIDB4MWIsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4YmUsIDB4MTIsIDB4OTksIDB4ZjgsIDB4OTYsIDB4MTcsIDB4YjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjcsIDB4NTcsIDB4YSwgMHhiMywgMHg3YiwgMHg3ZCwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHg4MCwgMHhiMCwgMHhiNiwgMHgzMiwgMHhhLCAweDk3LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY1LCAweDFmLCAweDk4LCAweDYzLCAweDYyLCAweDk5LCAweDVjLCAweDFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweDY4LCAweDYzLCAweDcyLCAweDZkLCAweDFmLCAweGFiLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDU3LCAweGEsIDB4YjUsIDB4N2IsIDB4N2QsIDB4YmMsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YTAsIDB4ODAsIDB4YjAsIDB4YjQsIDB4MzIsIDB4YSwgMHg5OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg2NCwgMHgxZiwgMHg5OCwgMHg2MywgMHg2MywgMHg5OCwgMHg1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg0MCwgMHg2OCwgMHg2MiwgMHg3MiwgMHg2ZCwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3LCAweDc2LCAweGY3LCAweDM1LCAweGMyLCAweGY3LCAweDFmLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDM4LCAweDc3LCAweDEsIDB4ZTksIDB4MTYsIDB4YmQsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTYsIDB4ZjcsIDB4MzUsIDB4NSwgMHhmNywgMHhjNSwgMHhjMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHg2LCAweGQ4LCAweGY3LCAweDFmLCAweDUsIDB4ZjcsIDB4NWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4ZmIsIDB4M2MsIDB4NiwgMHhkNywgMHhmNywgMHgxYywgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhNywgMHgzMCwgMHhmYiwgMHgzOCwgMHg1LCAweGZiLCAweGI5LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDlhLCAweDYsIDB4M2UsIDB4ZmIsIDB4MWYsIDB4NSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg1NCwgMHhmNywgMHgyZiwgMHg2LCAweGUsIDB4ZGQsIDB4YzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWQsIDB4YzIsIDB4ZWQsIDB4YzIsIDB4MSwgMHg5OSwgMHhmOCwgMHhhMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCwgMHhlMCwgMHg5OSwgMHhmOCwgMHgxOCwgMHgxNSwgMHg0MiwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDY0LCAweDQsIDB4NDIsIDB4YSwgMHhmYiwgMHg2NCwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQyLCAweGEsIDB4ZSwgMHgzZCwgMHhhLCAweGY3LCAweGI4LCAweDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4ODUsIDB4ZmIsIDB4NzYsIDB4NSwgMHhjOSwgMHg3LCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweGY3LCAweDU3LCAweDNlLCAweGEsIDB4M2QsIDB4YSwgMHhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0LCAweGY4LCAweDg1LCAweGY3LCAweDc2LCAweDUsIDB4NTEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmOCwgMHg0NSwgMHhmYiwgMHg1YiwgMHhmYywgMHg0NSwgMHhmYiwgMHg1NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweGUsIDB4YTksIDB4OGIsIDB4NDcsIDB4YSwgMHhiMSwgMHhjNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY5LCAweDQ2LCAweDE2LCAweGMyLCAweGZjLCAweDI5LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4OGMsIDB4MzksIDB4ZTMsIDB4ZTIsIDB4MWEsIDB4ZjAsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4ZjMsIDB4MWUsIDB4ZjgsIDB4MjcsIDB4YzIsIDB4ZmMsIDB4MjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHgzMywgMHgzNCwgMHhmYiwgMHgxMSwgMHhmYiwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhhLCAweDFmLCAweGZiLCAweDE5LCAweDhhLCAweGY3LCAweDYsIDB4MjksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTYsIDB4MWIsIDB4ZSwgMHhhOSwgMHg4YiwgMHg0NywgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY4LCAweGZiLCAweGM1LCAweDMsIDB4ZjgsIDB4NDAsIDB4MTYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4NywgMHhlZCwgMHhmNywgMHgxOSwgMHhmNywgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCAweGY3LCAweDExLCAweGZiLCAweDMzLCAweDFmLCAweGZjLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU0LCAweGY4LCAweDI3LCAweDYsIDB4ZjMsIDB4ZTMsIDB4MzgsIDB4MjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIDB4MzcsIDB4MzMsIDB4MjEsIDB4NTgsIDB4YSwgMHhhOSwgMHg1YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NiwgMHhkMSwgMHhjMiwgMHhmNywgMHhmYiwgMHhjMiwgMHhkMiwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGFmLCAweGM1LCAweDMsIDB4ZjcsIDB4OGQsIDB4NDUsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzcsIDB4NiwgMHhhZiwgMHhkMSwgMHg1LCAweGY3LCAweGVkLCAweGMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGQwLCAweDYsIDB4ZjcsIDB4NDQsIDB4ZjcsIDB4ZmIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgyMCwgMHhjMiwgMHhmYiwgMHg0LCAweDYsIDB4YjAsIDB4ZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NSwgMHg0ZiwgMHg2LCAweDY3LCAweDQ0LCAweDUsIDB4ZmIsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhmYiwgMHg0LCAweGZiLCAweDExLCAweDM2LCAweGZiLCAweDJiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDMxLCAweGY3LCAweDExLCAweDNmLCAweGY3LCAweDEwLCAweDhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGE3LCAweGMyLCAweDE1LCAweGZiLCAweDE0LCAweDhjLCAweDMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRjLCAweGVlLCAweDFhLCAweGUyLCAweGQ5LCAweGU3LCAweGY1LCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDY4LCAweDYsIDB4ZSwgMHhhOSwgMHhmYiwgMHgxMSwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHg0NywgMHhhLCAweGIwLCAweGMzLCAweDMsIDB4YjAsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4NTQsIDB4ZjksIDB4MjEsIDB4YzIsIDB4NywgMHhkMSwgMHg0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGZjLCAweDI5LCAweDcsIDB4ZmIsIDB4MTAsIDB4OGMsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZWUsIDB4OGMsIDB4ZGMsIDB4OCwgMHhmNywgMHgwLCAweDhjLCAweGVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQyLCAweGVkLCAweDFiLCAweGY4LCAweDI3LCAweGMyLCAweGZjLCAweDI4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZmIsIDB4NDAsIDB4M2UsIDB4ZmIsIDB4MTYsIDB4ZmIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgxOSwgMHhmMywgMHgyOSwgMHhmNywgMHgyMSwgMHgxZiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE5LCAweGZiLCAweDExLCAweGMyLCAweGQxLCAweDQ3LCAweGEsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmQsIDB4YzMsIDB4MywgMHg5ZiwgMHhmYiwgMHgxMSwgMHgxNSwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMSwgMHhjMiwgMHhmZCwgMHgyMSwgMHg2LCAweGY4LCAweDJjLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDIxLCAweGYzLCAweGVkLCAweGY3LCAweDE5LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4M2UsIDB4ZjcsIDB4MTYsIDB4ZmIsIDB4NDAsIDB4MWYsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIDB4NTQsIDB4ZjgsIDB4MjcsIDB4NiwgMHhlZCwgMHhlYiwgMHg0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHgwLCAweDNhLCAweDQ3LCAweDI4LCAweGZiLCAweDEwLCAweDU4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZTAsIDB4N2MsIDB4YzAsIDB4ZjcsIDB4OWQsIDB4YzEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4YzAsIDB4MSwgMHhiNiwgMHhjNCwgMHhmNywgMHg5OSwgMHhjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg5ZCwgMHhjMCwgMHgxNCwgMHhlMCwgMHhmNywgMHgyNCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjMywgMHgxNSwgMHhmNywgMHg2ZCwgMHhmYiwgMHg3MSwgMHhjMSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MSwgMHhmNywgMHg2ZSwgMHhjMSwgMHhmYiwgMHg2ZSwgMHhmNywgMHg2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NSwgMHhmYiwgMHg2ZiwgMHhmYiwgMHg2ZCwgMHg2LCAweDVmLCAweDcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGY3LCAweDM1LCAweGY3LCAweDEzLCAweDMwLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4ZjcsIDB4MTcsIDB4ZjcsIDB4MzUsIDB4MWUsIDB4NTIsIDB4MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIDB4YSwgMHhlLCAweGUwLCAweDdhLCAweGMwLCAweGY4LCAweGRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMwLCAweDEsIDB4YjYsIDB4YzAsIDB4ZjgsIDB4ZGMsIDB4YzAsIDB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NCwgMHhmNywgMHgzZiwgMHgxNSwgMHhiMiwgMHg2NCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhmNywgMHgzMiwgMHhmNywgMHgzMiwgMHhmYiwgMHgzMywgMHhiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMSwgMHhmYiwgMHgzMiwgMHhmNywgMHgzMywgMHhmNywgMHgzMCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwgMHg2NCwgMHhiMSwgMHhmYiwgMHgzMCwgMHhmYiwgMHgzMCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHhmNywgMHgzMiwgMHg2NCwgMHg2NCwgMHhmNywgMHgzMSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMSwgMHg1LCAweGZiLCAweGM2LCAweDE2LCAweDIxLCAweGEsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4MzUsIDB4ZjcsIDB4MTcsIDB4MzAsIDB4YSwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgMHhmNywgMHgxNywgMHhmNywgMHgzNSwgMHgxZSwgMHhlLCAweDcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhiLCAweGMyLCAweGY4LCAweGZmLCAweDc3LCAweDEsIDB4ZjcsIDB4YzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzIsIDB4MywgMHg5YSwgMHgxNiwgMHhmOSwgMHgxMSwgMHhjMiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNywgMHhmOCwgMHhmZiwgMHg1NCwgMHhmYywgMHhmZiwgMHhmYiwgMHhiNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZmMsIDB4NDUsIDB4ZjcsIDB4NjYsIDB4ZWYsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMCwgMHhlZiwgMHgzLCAweGQwLCAweGY3LCAweDk4LCAweDE1LCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGExLCAweDc1LCAweGE3LCAweGE2LCAweGEyLCAweGExLCAweGE3LCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc0LCAweGEyLCAweDcwLCAweDZmLCAweDc1LCAweDc0LCAweDcwLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4OGUsIDB4NGQsIDB4NzYsIDB4ZjksIDB4ZTksIDB4ZjcsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhmNywgMHhlMCwgMHhkMSwgMHgzLCAweGY3LCAweGUwLCAweDM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1LCAweGQxLCAweGY4LCAweDEzLCAweDYsIDB4ZjgsIDB4ODgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4ZDAsIDB4YWUsIDB4OTMsIDB4OTIsIDB4ODksIDB4ODksIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4ODIsIDB4ODYsIDB4ODAsIDB4NzksIDB4NzgsIDB4MWEsIDB4NzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4NmUsIDB4YjEsIDB4YjcsIDB4OWYsIDB4YjMsIDB4YjIsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4YWYsIDB4NWUsIDB4NGYsIDB4ZmIsIDB4ODcsIDB4NTksIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDMsIDB4MWUsIDB4ZSwgMHg4ZSwgMHgzYSwgMHhmNywgMHgyOSwgMHhmOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlOSwgMHg3NywgMHgxLCAweGY3LCAweGVlLCAweGQwLCAweDMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4NzAsIDB4MTUsIDB4OTQsIDB4OTAsIDB4OTYsIDB4OWQsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWEsIDB4YTMsIDB4NzksIDB4YTgsIDB4NjUsIDB4NWYsIDB4NzgsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NjcsIDB4YWQsIDB4NjgsIDB4YjgsIDB4YzcsIDB4ZjcsIDB4ODEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4ZjgsIDB4ZDMsIDB4MWUsIDB4ZjgsIDB4ZiwgMHg0NiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMywgMHg3LCAweGZjLCAweDg4LCAweGZiLCAweDJlLCAweDQ2LCAweDY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDg0LCAweDhkLCAweDhkLCAweDg3LCAweDFlLCAweGUsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhhNCwgMHhmNywgMHhhNiwgMHgxNSwgMHhmNywgMHg3YSwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhiZSwgMHhhNCwgMHhmYiwgMHg2ZSwgMHhmOCwgMHg1MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhmOCwgMHg1NCwgMHg1OCwgMHhhMywgMHg1LCAweGUsIDB4NGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhkMywgMHhmYiwgMHg1YSwgMHgxNSwgMHhmNywgMHg3YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YywgMHhmYiwgMHg3YSwgMHhmOCwgMHg2YywgMHg1OCwgMHg3MywgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZSwgMHhmYywgMHg1NCwgMHhmYiwgMHg2ZSwgMHhmYywgMHg1MywgMHg1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4NTEsIDB4YTAsIDB4NzYsIDB4ZjksIDB4N2QsIDB4NzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg5ZCwgMHhjNywgMHhmNywgMHhkZSwgMHhjNywgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDE2LCAweGM3LCAweDYsIDB4ZjcsIDB4NTgsIDB4ZjgsIDB4ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1OCwgMHhmOCwgMHg0LCAweDUsIDB4NGYsIDB4NiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NiwgMHhmYywgMHg0LCAweDUsIDB4ZjcsIDB4NzQsIDB4ZmIsIDB4ZDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIDB4ZmIsIDB4MzgsIDB4ZjcsIDB4ZDYsIDB4ZjcsIDB4MzgsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4ZjcsIDB4M2EsIDB4ZmIsIDB4Y2UsIDB4NSwgMHhlLCAweGQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweDc2LCAweGY4LCAweGRjLCAweDc3LCAweDEsIDB4ZjcsIDB4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzEsIDB4MywgMHhmNywgMHhiYiwgMHg2NywgMHgxNSwgMHhmNywgMHgyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweDg0LCAweDk1LCAweDYyLCAweGFjLCAweDhhLCAweGNlLCAweDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWYsIDB4OGEsIDB4OTQsIDB4YTAsIDB4OWQsIDB4MWIsIDB4OTEsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4ODEsIDB4OTAsIDB4MWYsIDB4NWQsIDB4YTIsIDB4YTIsIDB4NWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2MsIDB4MWIsIDB4YmIsIDB4YWEsIDB4YzQsIDB4YmIsIDB4YzAsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4NjEsIDB4YzIsIDB4MWYsIDB4MmQsIDB4ZjcsIDB4MTAsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWUsIDB4NDQsIDB4ZjcsIDB4NCwgMHg0NCwgMHhmYiwgMHg0LCAweDZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY4LCAweDJkLCAweGZiLCAweDEwLCAweDgsIDB4NjEsIDB4NTQsIDB4NzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQsIDB4NTYsIDB4MWEsIDB4NWYsIDB4YTEsIDB4NGMsIDB4Y2IsIDB4YzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4YzYsIDB4YjEsIDB4OWMsIDB4MWUsIDB4OTIsIDB4OGUsIDB4OGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTAsIDB4OTQsIDB4MWIsIDB4OTgsIDB4OTcsIDB4NzcsIDB4NjUsIDB4OGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4OGEsIDB4NDgsIDB4NjIsIDB4NmEsIDB4ODQsIDB4ODEsIDB4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGQxLCAweDg2LCAweDc2LCAweGY3LCAweDNjLCAweGY3LCAweDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyLCAweGY3LCAweGU1LCAweGQyLCAweDRmLCAweGJkLCAweDEzLCAweGQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGJmLCAweDcxLCAweDE1LCAweGY3LCAweDI4LCAweDYsIDB4NzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YWMsIDB4NzUsIDB4OWYsIDB4Y2QsIDB4MWEsIDB4YWEsIDB4OGUsIDB4OWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTksIDB4OTUsIDB4OWEsIDB4N2UsIDB4NmYsIDB4YTIsIDB4MWUsIDB4NmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTYsIDB4YWIsIDB4ODEsIDB4YjIsIDB4MWIsIDB4YzUsIDB4YjQsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzksIDB4ZDEsIDB4NjcsIDB4YzYsIDB4NDcsIDB4NWYsIDB4NWUsIDB4NmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIDB4N2MsIDB4MWYsIDB4MTMsIDB4ZTAsIDB4NzAsIDB4N2QsIDB4N2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTIsIDB4OWEsIDB4MWEsIDB4OTIsIDB4OGYsIDB4OTIsIDB4OTAsIDB4OTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OWQsIDB4OWUsIDB4Y2QsIDB4YjAsIDB4ZDEsIDB4MWEsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGIsIDB4YTgsIDB4NGIsIDB4NGEsIDB4NGIsIDB4NmMsIDB4MzgsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDEsIDB4NjcsIDB4OWEsIDB4N2IsIDB4MWUsIDB4OTAsIDB4ODUsIDB4OGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODUsIDB4ODQsIDB4MWEsIDB4N2MsIDB4NzksIDB4ODYsIDB4NzIsIDB4OTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUsIDB4OTMsIDB4N2MsIDB4NjQsIDB4YTksIDB4NWYsIDB4MWIsIDB4NDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjIsIDB4NTMsIDB4NDYsIDB4NDcsIDB4YjUsIDB4NTAsIDB4Y2MsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4OTgsIDB4YTksIDB4YTUsIDB4MWYsIDB4YTcsIDB4YTQsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIDB4OTQsIDB4MWIsIDB4MTMsIDB4ZDAsIDB4OTksIDB4OGIsIDB4NzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzQsIDB4NDksIDB4NzQsIDB4NzYsIDB4NzEsIDB4NmIsIDB4MWYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkMSwgMHg3ZiwgMHg3NiwgMHhmOCwgMHhjOSwgMHg3NywgMHgxLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4NmEsIDB4MTUsIDB4ZDksIDB4ZjcsIDB4NywgMHg5YSwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlNiwgMHhmNywgMHg5LCAweDgsIDB4YjQsIDB4YzAsIDB4YWIsIDB4YzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzQsIDB4MWEsIDB4ZjcsIDB4OCwgMHg0MywgMHhhNSwgMHg2MSwgMHg1ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZCwgMHg3NiwgMHg0OCwgMHg3MiwgMHgxZSwgMHg3OCwgMHg4MywgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NSwgMHg3YywgMHgxYiwgMHg3YywgMHg4OCwgMHhhMSwgMHg5ZSwgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhjZSwgMHg3MiwgMHg1ZCwgMHhhMCwgMHg1ZCwgMHgxYiwgMHg2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MywgMHg3MSwgMHhmYiwgMHg4LCAweDUyLCAweGFiLCAweDU2LCAweGI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAweDFmLCAweGU2LCAweGZiLCAweDksIDB4OWEsIDB4NmYsIDB4ZDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4NywgMHg4LCAweGUsIDB4ZDEsIDB4N2MsIDB4NzYsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGUsIDB4NzcsIDB4MSwgMHhmNywgMHgyMiwgMHhmOCwgMHg1ZSwgMHgzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDIyLCAweGY3LCAweDk1LCAweDE1LCAweGY3LCAweDdjLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweGY3LCAweDc2LCAweGY3LCAweGI5LCAweGZiLCAweDc2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDUsIDB4ZSwgMHhmNiwgMHg3YywgMHhiMywgMHhmMywgMHhiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhkYiwgMHhhNSwgMHhmNywgMHg3LCAweGIzLCAweDEsIDB4YmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjMsIDB4ZjcsIDB4YSwgMHhjYywgMHhmNywgMHg5MiwgMHg5ZiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyZCwgMHhiMywgMHgzLCAweGY4LCAweGFmLCAweGY3LCAweDcwLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweDU5LCAweDZhLCAweDdmLCAweDVlLCAweDFiLCAweDQwLCAweDRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM3LCAweGYxLCAweGQ1LCAweGI4LCAweGU2LCAweGRjLCAweGM2LCAweGM2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZjLCAweDQyLCAweDk1LCAweDFmLCAweDlmLCAweDYsIDB4ODcsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQsIDB4NSwgMHg3OCwgMHg2LCAweDg4LCAweDdkLCAweDdjLCAweDg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDhmLCAweDgsIDB4OTAsIDB4NzYsIDB4NmIsIDB4OTcsIDB4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWIsIDB4MjQsIDB4MzYsIDB4MzEsIDB4MjMsIDB4ZmIsIDB4OSwgMHhkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYiwgMHhmNywgMHhiLCAweGQ3LCAweGI3LCAweGJkLCAweGEyLCAweGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCAweGZjLCAweDg3LCAweGY3LCAweDE0LCAweDIzLCAweGEsIDB4ZjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2EsIDB4YjMsIDB4ZjcsIDB4MTgsIDB4OWQsIDB4ZjcsIDB4MzEsIDB4YTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzIsIDB4YTMsIDB4ZWQsIDB4YjMsIDB4MSwgMHhiZCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1MSwgMHhjYiwgMHhmNywgMHgxNywgMHhjZiwgMHhmNywgMHgzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHgzLCAweGJkLCAweGY3LCAweGRjLCAweDRmLCAweGEsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4ZjcsIDB4MmYsIDB4ZjcsIDB4MmUsIDB4ZjcsIDB4NTMsIDB4NDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhmYiwgMHgyZiwgMHhmYiwgMHgyZiwgMHhmYiwgMHg1MiwgMHg4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyYywgMHhhLCAweDFlLCAweGZiLCAweDNkLCAweDhhLCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQzLCAweGEsIDB4MWEsIDB4ZjcsIDB4MjAsIDB4ZmIsIDB4NDAsIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MzQsIDB4OWQsIDB4NiwgMHg3NSwgMHg3MiwgMHg5YSwgMHhhMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmNywgMHhhLCAweGE1LCAweDcsIDB4ZjcsIDB4MTksIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMsIDB4NSwgMHhlYSwgMHg5ZCwgMHg2LCAweDdlLCAweDdmLCAweDhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk5LCAweDgwLCAweDFmLCAweGZiLCAweGMsIDB4ZjcsIDB4MmMsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhjNSwgMHg5YywgMHhiNiwgMHhhMiwgMHhjOSwgMHgxYSwgMHhkOCwgMHgzYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5YywgMHg0ZiwgMHgxZSwgMHhmYiwgMHgzYiwgMHg3OSwgMHg2LCAweGIzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhmLCAweDgwLCAweDZlLCAweDFmLCAweGZiLCAweGEwLCAweDcsIDB4NzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzEsIDB4N2EsIDB4NzQsIDB4MWUsIDB4ZjcsIDB4NSwgMHhmNywgMHg0OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmNywgMHgxMiwgMHg3LCAweDljLCAweDk1LCAweDlhLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNmLCAweGI1LCAweDc5LCAweDU4LCAweDhjLCAweDFlLCAweDM5LCAweDQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1LCAweDUwLCAweDhhLCAweDFlLCAweGUsIDB4ZjcsIDB4NjMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Y2UsIDB4NzYsIDB4ZjcsIDB4ZjksIDB4YTIsIDB4NzksIDB4OWQsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWQsIDB4OWQsIDB4ZjcsIDB4NiwgMHhjNiwgMHhmNywgMHg2LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRkLCAweGE2LCAweGY3LCAweGJjLCAweGM2LCAweDEzLCAweGRmLCAweGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGI5LCAweDE1LCAweGY3LCAweDM0LCAweDlkLCAweDYsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4OWEsIDB4YTIsIDB4MWYsIDB4ZjcsIDB4YzIsIDB4NywgMHhiMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4YSwgMHhjMywgMHg4OSwgMHhhMiwgMHg2ZSwgMHg4OSwgMHg1ZiwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZCwgMHg4YywgMHg4OCwgMHhlYywgMHg1LCAweGZiLCAweGQxLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgsIDB4MmEsIDB4OWQsIDB4OGEsIDB4ODksIDB4YjcsIDB4YTIsIDB4YTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YzMsIDB4OGQsIDB4MTksIDB4YjAsIDB4OGMsIDB4NSwgMHhmYiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhhLCAweGY3LCAweGE1LCAweDc5LCAweDE1LCAweGY3LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlkLCAweDYsIDB4NmMsIDB4NzcsIDB4OWEsIDB4YTIsIDB4MWYsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OGYsIDB4NywgMHhmNywgMHgyNCwgMHhmYiwgMHhjNywgMHg1LCAweDlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZjcsIDB4MWEsIDB4ZjcsIDB4ZDcsIDB4NSwgMHhmYiwgMHg5ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHhhLCAweDc5LCAweGY3LCAweDM0LCAweDlkLCAweDcsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4OWEsIDB4YTIsIDB4MWYsIDB4ZjcsIDB4YWQsIDB4NywgMHgxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZiwgMHhhNiwgMHhhOCwgMHg4OSwgMHhhMCwgMHgxZSwgMHg5ZCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1LCAweDcsIDB4ZmIsIDB4MTIsIDB4ZmIsIDB4YjQsIDB4ZmIsIDB4MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4YjQsIDB4NSwgMHhmYiwgMHg2LCAweDc5LCAweDYsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4OGUsIDB4NjUsIDB4MWYsIDB4ZmIsIDB4YTMsIDB4NGEsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweGZiLCAweDRiLCAweGZhLCAweDUsIDB4YWYsIDB4MSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3NCwgMHhmYSwgMHg1LCAweDE1LCAweGY4LCAweGY2LCAweGFmLCAweGZjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY2LCAweDYsIDB4ZSwgMHgzYiwgMHgyOCwgMHg3NiwgMHhmYSwgMHhmZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OSwgMHhhLCAweGY3LCAweGFjLCAweGZiLCAweGMsIDB4MTUsIDB4YzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmEsIDB4ZmUsIDB4NTMsIDB4NiwgMHhlLCAweGY3LCAweGQxLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweGMzLCAweDEsIDB4NGYsIDB4ZmEsIDB4ZWEsIDB4MywgMHg0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg3MCwgMHgxNSwgMHhmYSwgMHhlYSwgMHhjMywgMHhmZSwgMHhlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2LCAweGUsIDB4ZjYsIDB4NzcsIDB4YjMsIDB4ZjcsIDB4YjQsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MTcsIDB4YjYsIDB4ZjQsIDB4YjMsIDB4MSwgMHhiZCwgMHhiMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg0NCwgMHhiYywgMHhmNywgMHg1NCwgMHhiOSwgMHhmNywgMHgyNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiMywgMHgzLCAweGJkLCAweGY3LCAweGQ5LCAweDRmLCAweGEsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTIsIDB4OGMsIDB4ZjcsIDB4MmYsIDB4ZjcsIDB4MmQsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4MWEsIDB4NDgsIDB4YSwgMHhmYiwgMHgyZSwgMHhmYiwgMHgyZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYiwgMHg1MiwgMHgyYywgMHhhLCAweGZiLCAweDNkLCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFjLCAweGY3LCAweDNjLCAweDFlLCAweGY3LCAweDQ0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAweDE1LCAweGJjLCAweGY3LCAweDQwLCAweGY3LCAweDExLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4ODIsIDB4M2MsIDB4NjcsIDB4OGMsIDB4MWYsIDB4OGMsIDB4NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTMsIDB4ODksIDB4OTQsIDB4NzksIDB4OCwgMHg5ZSwgMHhhMSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5ZSwgMHgxYiwgMHg3MywgMHhhNywgMHg4NywgMHhhMywgMHhiMCwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiZSwgMHg3YywgMHhhNiwgMHg2YywgMHhhMCwgMHgxZSwgMHhiMCwgMHhhNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgMHg5ZCwgMHhiYywgMHgxYSwgMHhlMSwgMHg0ZCwgMHg5NiwgMHg1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHhmYiwgMHgzZSwgMHg2LCAweGJjLCAweGZiLCAweDQyLCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDE3LCAweGY3LCAweGUsIDB4NywgMHhhOSwgMHhiMywgMHg4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0YSwgMHg1YSwgMHg2NiwgMHg4MiwgMHg2YSwgMHgxZiwgMHhlLCAweGY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdjLCAweGIzLCAweGVmLCAweGI5LCAweGY3LCAweGNjLCAweGI2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YjMsIDB4MSwgMHhiYywgMHhiMywgMHhmNywgMHgxZSwgMHhiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4MCwgMHhiOCwgMHhmNywgMHgyMiwgMHhiMywgMHgzLCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweGY3LCAweGE2LCAweDE1LCAweDUyLCAweDU5LCAweDVkLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweDYwLCAweGU1LCAweGQ2LCAweGRkLCAweGI3LCAweGNjLCAweGQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNlLCAweGIzLCAweDZmLCAweDU4LCAweDhkLCAweDFlLCAweGJlLCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTUsIDB4ODksIDB4NDQsIDB4YWIsIDB4MzMsIDB4MWIsIDB4ZmIsIDB4MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZSwgMHgzMywgMHgyMywgMHhmYiwgMHg0LCAweGNkLCAweDJhLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQsIDB4ZjcsIDB4MCwgMHhiOSwgMHhlNywgMHhjNCwgMHgxZiwgMHhmYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHhjMywgMHgyMywgMHhhLCAweGYyLCAweGY3LCAweGNlLCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweGU1LCAweGI2LCAweDEsIDB4ZjcsIDB4MTYsIDB4YmMsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTAsIDB4YmMsIDB4ZjcsIDB4OTgsIDB4YmMsIDB4MywgMHhmNywgMHgxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhiOSwgMHgxNSwgMHhiYywgMHhmNywgMHhlNSwgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiNiwgMHhmYiwgMHhiZiwgMHg2MCwgMHhmNywgMHgxMSwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweGZiLCAweGU1LCAweDE1LCAweGJjLCAweGY3LCAweGM5LCAweDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjQsIDB4ZmIsIDB4YzQsIDB4NSwgMHhiZCwgMHg2LCAweGY0LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGM0LCAweDUsIDB4ZmIsIDB4YzksIDB4YmMsIDB4ZjgsIDB4MTAsIDB4NDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHgwLCAweGZiLCAweGQyLCAweGZiLCAweDAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDIsIDB4NSwgMHg0NCwgMHg2LCAweGUsIDB4ZmIsIDB4YmYsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MWMsIDB4NCwgMHhiOSwgMHgxLCAweGEzLCAweGRmLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTMsIDB4ZmIsIDB4YjksIDB4MTUsIDB4ZGYsIDB4ZjgsIDB4MmUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHhmMywgMHhmNSwgMHhmNywgMHhjOSwgMHhmNywgMHg3MiwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHgxZSwgMHg3ZSwgMHg5NSwgMHg1LCAweGZiLCAweDU3LCAweDJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDYwLCAweGZiLCAweDYyLCAweGZjLCAweDhlLCAweDFhLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YmYsIDB4ZmEsIDB4MzEsIDB4OGIsIDB4MSwgMHhhMywgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGEzLCAweDU0LCAweGEsIDB4M2YsIDB4YSwgMHhhMywgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY4LCAweDQxLCAweGZiLCAweGI5LCAweDE1LCAweDkyLCAweDk1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUsIDB4ZmIsIDB4NzIsIDB4ZjcsIDB4MjksIDB4MjEsIDB4ZjcsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4ZjMsIDB4MWEsIDB4ZjgsIDB4MmUsIDB4MzcsIDB4ZmMsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYywgMHg4ZSwgMHhmNywgMHg2NSwgMHhmYiwgMHg1OCwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgMHgyMCwgMHgxZSwgMHhlLCAweGZiLCAweGJmLCAweGZhLCAweDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjQsIDB4MSwgMHg4YiwgMHhkOCwgMHgzLCAweDNiLCAweDQsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjksIDB4ZDIsIDB4NiwgMHhmNywgMHgxMSwgMHg5YiwgMHg5NSwgMHhmNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgMHgxZSwgMHhmNywgMHgxNywgMHhiNCwgMHhmYiwgMHhmMSwgMHg2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4ZmIsIDB4YmYsIDB4M2MsIDB4ZmEsIDB4ODAsIDB4MSwgMHg4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOCwgMHgzLCAweDNjLCAweDQsIDB4ZDgsIDB4ZmEsIDB4ODAsIDB4M2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NiwgMHhlLCAweGZiLCAweGJmLCAweDNiLCAweGI0LCAweDEsIDB4OGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZDgsIDB4MywgMHgzYiwgMHg0LCAweGY3LCAweGU4LCAweGI0LCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4NiwgMHhmYiwgMHgxMSwgMHg3YiwgMHg5NSwgMHhmNywgMHgxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgMHhmOSwgMHhkMiwgMHgzZSwgMHg3LCAweGUsIDB4ZmIsIDB4NTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmEsIDB4MTMsIDB4YTksIDB4MzUsIDB4YSwgMHhmNywgMHhiMCwgMHgzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHhmOSwgMHhjOCwgMHg3LCAweGY3LCAweDIsIDB4OTEsIDB4YmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGIsIDB4MWUsIDB4ZDYsIDB4YTksIDB4NDAsIDB4NiwgMHhmYiwgMHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU4LCAweDZlLCAweGZiLCAweDM1LCAweDFmLCAweGZkLCAweGM4LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZSwgMHgyZCwgMHhhLCAweGY3LCAweDdmLCAweDYsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4ZGUsIDB4ZmIsIDB4MWMsIDB4YjIsIDB4MWUsIDB4ZjcsIDB4MWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjIsIDB4Y2EsIDB4ZGUsIDB4ZjcsIDB4MmQsIDB4MWEsIDB4ZjcsIDB4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIDB4ZmIsIDB4N2YsIDB4NywgMHgyNywgMHg2NywgMHhmYiwgMHg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDJkLCAweDVlLCAweDFlLCAweDZkLCAweDcsIDB4ZjcsIDB4MmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWUsIDB4YWYsIDB4ZmIsIDB4NywgMHgyNywgMHgxYSwgMHhlLCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4ZjcsIDB4NjUsIDB4ZmEsIDB4M2IsIDB4MTUsIDB4ZmQsIDB4Y2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NywgMHhmYiwgMHgzNSwgMHhiNCwgMHg3MiwgMHhmNywgMHgyLCAweDFlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUwLCAweGE5LCAweDM2LCAweDYsIDB4M2IsIDB4OGYsIDB4YjksIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MiwgMHgxZiwgMHhmOSwgMHhjYywgMHg3LCAweGUsIDB4MmQsIDB4YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYSwgMHg5MCwgMHg0MCwgMHg2LCAweGUsIDB4OGUsIDB4MzMsIDB4ZmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmIsIDB4MSwgMHhmNywgMHhjOCwgMHhkMSwgMHgzLCAweGY3LCAweGM4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzLCAweDE1LCAweGQxLCAweGZhLCAweGJiLCAweDQ1LCAweDYsIDB4ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZiwgMHhhLCAweGY4LCAweDEyLCAweGRmLCAweDMsIDB4ZjgsIDB4MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjksIDB4MTUsIDB4ZGYsIDB4ZjgsIDB4MzgsIDB4NiwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZSwgMHhmYiwgMHg2MCwgMHhmNywgMHg1OCwgMHhmYiwgMHg1NywgMHhlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZSwgMHg3ZSwgMHg4MSwgMHg1LCAweGY3LCAweDcyLCAweGZiLCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY1LCAweGZiLCAweGJmLCAweGZiLCAweGYzLCAweDFhLCAweGUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YmYsIDB4MzYsIDB4ZmEsIDB4ODYsIDB4MSwgMHhmOCwgMHgxMiwgMHhkZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzLCAweGY4LCAweDEyLCAweDU0LCAweGEsIDB4M2YsIDB4YSwgMHhmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgMHhkZiwgMHgzLCAweGMxLCAweGZiLCAweGFmLCAweDE1LCAweDk4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCAweDUsIDB4ZjcsIDB4NTcsIDB4ZWMsIDB4ZjcsIDB4NjAsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWQsIDB4ZjgsIDB4OGUsIDB4MWEsIDB4ZjgsIDB4MzMsIDB4MzcsIDB4ZmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzMsIDB4NywgMHhmYiwgMHhmMywgMHgyMSwgMHhmYiwgMHhjNCwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHhmYiwgMHgxZiwgMHgxZSwgMHhlLCAweGZiLCAweGJmLCAweGZhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDksIDB4YjQsIDB4MSwgMHhmNywgMHhiOSwgMHhkOSwgMHgzLCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGI5LCAweDNiLCAweDE1LCAweGQ5LCAweGZhLCAweDgyLCAweGZiLCAweGYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAweGY3LCAweDFiLCAweDYsIDB4ZjcsIDB4MTEsIDB4OTYsIDB4ODAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MTEsIDB4MWYsIDB4ZSwgMHhmYiwgMHhiZiwgMHgzYywgMHhmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCwgMHgxLCAweGY3LCAweGJhLCAweGQ4LCAweDMsIDB4ZjcsIDB4YmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2MsIDB4MTUsIDB4ZDgsIDB4ZmEsIDB4ODAsIDB4M2UsIDB4NiwgMHhlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweGJmLCAweDNiLCAweGI0LCAweDEsIDB4ZjcsIDB4YmEsIDB4ZDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MywgMHhhMSwgMHg2NCwgMHgxNSwgMHg2MiwgMHhmNywgMHhmMSwgMHhmYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgMHgzZSwgMHhmZCwgMHhjZiwgMHg3LCAweGZiLCAweDEzLCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwLCAweGZiLCAweDExLCAweDFlLCAweGUsIDB4ZmIsIDB4NTEsIDB4ZmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4YTksIDB4MmUsIDB4YSwgMHhmOSwgMHhjOCwgMHg2LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJjLCAweDc0LCAweGIxLCAweGZiLCAweDE5LCAweDFlLCAweDNiLCAweDZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGRiLCAweDYsIDB4ZDEsIDB4OTYsIDB4NWYsIDB4ZmIsIDB4OCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDJkLCAweGEsIDB4ZjcsIDB4ODAsIDB4NiwgMHhlZiwgMHhhZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2LCAweGY3LCAweDJkLCAweGI4LCAweDFlLCAweGE5LCAweDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmQsIDB4YjgsIDB4NjcsIDB4ZjcsIDB4NiwgMHhlZiwgMHgxYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg4MCwgMHg0MCwgMHhmYiwgMHg4MCwgMHg3LCAweGZiLCAweDJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNhLCAweDM5LCAweGY3LCAweDFjLCAweDY0LCAweDFlLCAweGZiLCAweDFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDY0LCAweDRjLCAweDM5LCAweGZiLCAweDJkLCAweDFhLCAweGUsIDB4NTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiYiwgMHg1ZSwgMHgxNSwgMHg2ZCwgMHhkYiwgMHg3LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCAweGE1LCAweGIzLCAweGY3LCAweDJiLCAweDFmLCAweGY5LCAweGM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAweGZkLCAweGM3LCAweDcsIDB4ZmIsIDB4MTYsIDB4ODAsIDB4NmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDUsIDB4MWUsIDB4ZSwgMHhmNiwgMHg5ZCwgMHg3NiwgMHhmOCwgMHhmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg1NCwgMHgxLCAweGY5LCAweDcxLCAweGY3LCAweDY5LCAweDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNmLCAweGEwLCAweDY1LCAweGQzLCAweGQ0LCAweDFhLCAweGNlLCAweGE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGNkLCAweGNhLCAweGE5LCAweDFlLCAweGJmLCAweDZlLCAweDQxLCAweGE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUyLCAweDFiLCAweDZlLCAweDc2LCAweDg0LCAweDgzLCAweDc2LCAweDFmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDc2LCAweDc1LCAweDgzLCAweDZlLCAweDFiLCAweDcyLCAweDc1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzLCAweDkzLCAweDc2LCAweDFmLCAweDk0LCAweDc0LCAweDc1LCAweDk0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDcwLCAweDFiLCAweGZiLCAweDMsIDB4MjUsIDB4MmIsIDB4ZmIsIDB4MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MWEsIDB4ZDIsIDB4ZmIsIDB4OTIsIDB4ZjcsIDB4MzcsIDB4YTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OWUsIDB4OTYsIDB4OTQsIDB4YTAsIDB4MWYsIDB4OTIsIDB4OWIsIDB4OWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIDB4YTAsIDB4MWIsIDB4YTEsIDB4OWIsIDB4ODUsIDB4ODUsIDB4OWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYsIDB4ODIsIDB4YTEsIDB4OWQsIDB4N2YsIDB4YTcsIDB4MWIsIDB4ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjUsIDB4ZTIsIDB4ZjcsIDB4MTUsIDB4ZDYsIDB4MWYsIDB4ZmIsIDB4ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjgsIDB4MjcsIDB4MTUsIDB4ZTYsIDB4ODgsIDB4ZTUsIDB4ZjAsIDB4NzYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZTksIDB4OCwgMHgzYywgMHgzNSwgMHgyYiwgMHgyYiwgMHg5MCwgMHgxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlLCAweDc4LCAweDllLCAweGY4LCAweDdiLCAweDk4LCAweGY3LCAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDlhLCAweDYsIDB4MWUsIDB4YTAsIDB4MzksIDB4NjMsIDB4ZmYsIDB4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5LCAweGU3LCAweGEsIDB4ZTAsIDB4YiwgMHg5ZiwgMHhkMywgMHhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMsIDB4ZjgsIDB4YjksIDB4MTQsIDB4ZjksIDB4M2YsIDB4MTUsIDB4YWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTMsIDB4MCwgMHgzYSwgMHgyLCAweDAsIDB4MSwgMHgwLCAweDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4MmQsIDB4MCwgMHgzMCwgMHgwLCAweDQ3LCAweDAsIDB4NGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHg1NiwgMHgwLCAweDVkLCAweDAsIDB4NjEsIDB4MCwgMHg2NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweDdjLCAweDAsIDB4ODIsIDB4MCwgMHg4YiwgMHgwLCAweGE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAsIDB4YWUsIDB4MCwgMHhiNCwgMHgwLCAweGJhLCAweDAsIDB4YzcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwgMHhjZSwgMHgwLCAweGUzLCAweDAsIDB4ZWQsIDB4MCwgMHhmNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCAweGZjLCAweDEsIDB4YSwgMHgxLCAweGUsIDB4MSwgMHgxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDFjLCAweDEsIDB4MjMsIDB4MSwgMHgyYSwgMHgxLCAweDMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4NDAsIDB4MSwgMHg0ZCwgMHgxLCAweDU2LCAweDEsIDB4NWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHg2NiwgMHgxLCAweDZkLCAweDEsIDB4NzIsIDB4MSwgMHg3NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweDdjLCAweDEsIDB4ODgsIDB4MSwgMHg4ZSwgMHgxLCAweDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEsIDB4YTAsIDB4MSwgMHhhNywgMHgxLCAweGFjLCAweDEsIDB4YjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSwgMHhjMCwgMHgxLCAweGNhLCAweDEsIDB4Y2UsIDB4MSwgMHhkOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxLCAweGUyLCAweDEsIDB4ZWMsIDB4MSwgMHhmMywgMHgxLCAweGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4NCwgMHgyLCAweDksIDB4MiwgMHgxMiwgMHgyLCAweDE5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIsIDB4MWYsIDB4NmMsIDB4YTQsIDB4NzIsIDB4YWEsIDB4YWEsIDB4YTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTQsIDB4YWEsIDB4YWEsIDB4NzIsIDB4YTQsIDB4NmMsIDB4NmMsIDB4NzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzIsIDB4NmMsIDB4MWUsIDB4YiwgMHgyYiwgMHhhLCAweGY3LCAweDUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDJlLCAweGY3LCAweDJlLCAweDRiLCAweGEsIDB4ZmIsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4MmUsIDB4ZmIsIDB4NTMsIDB4ZmIsIDB4NTMsIDB4ZmIsIDB4MmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4MmUsIDB4ZmIsIDB4NTMsIDB4MWUsIDB4YiwgMHgyMCwgMHhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGUsIDB4MTUsIDB4MjEsIDB4YSwgMHhiMywgMHgxNiwgMHhmNywgMHgzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgxZCwgMHg0MywgMHhhLCAweGY3LCAweDNjLCAweGY3LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0LCAweGEsIDB4MzQsIDB4YSwgMHg0MywgMHhhLCAweDFlLCAweGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYsIDB4ZjcsIDB4YjAsIDB4OWQsIDB4NiwgMHgyYSwgMHhhLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmYsIDB4YSwgMHhmYywgMHg3ZCwgMHgyNywgMHhhLCAweGIsIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzYywgMHhhLCAweGZjLCAweDdkLCAweDM5LCAweGEsIDB4NywgMHgyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhLCAweGIsIDB4NTQsIDB4NjgsIDB4NzgsIDB4NTQsIDB4MWUsIDB4YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZCwgMHhhNCwgMHg3MiwgMHhhYSwgMHgxZSwgMHhhOSwgMHg4YywgMHhhNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhMywgMHhhYSwgMHgxYSwgMHhhOSwgMHg3MSwgMHhhNSwgMHg2ZCwgMHg2YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3MiwgMHg3MSwgMHg2YywgMHgxZSwgMHhiLCAweDU0LCAweDY4LCAweDllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweDFmLCAweGIsIDB4ZmIsIDB4NTMsIDB4ZjcsIDB4MmUsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MmUsIDB4ZjcsIDB4NTMsIDB4YiwgMHgxZSwgMHhiMywgMHg4YSwgMHgxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHgzZCwgMHhmNywgMHgxYywgMHg0MywgMHhhLCAweGY3LCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDFkLCAweGZiLCAweDFkLCAweGZiLCAweDNjLCAweGZiLCAweDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDFkLCAweGZiLCAweDFjLCAweGZiLCAweDNjLCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIDB4MzYsIDB4ZmEsIDB4OTAsIDB4MmUsIDB4YSwgMHhiLCAweDQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGEsIDB4MzYsIDB4MTUsIDB4ZDYsIDB4YiwgMHhjMiwgMHhhZSwgMHg3OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgMHgxZiwgMHhiLCAweGY3LCAweDE3LCAweGY3LCAweDM1LCAweGY3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM1LCAweGY3LCAweDE3LCAweDU2LCAweGEsIDB4NDEsIDB4YSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGMyLCAweGFlLCAweDllLCAweGMyLCAweDFlLCAweDlkLCAweGIsIDB4ODIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YjksIDB4MWIsIDB4YzUsIDB4YzcsIDB4YjQsIDB4YTgsIDB4OWEsIDB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjgsIDB4YWMsIDB4NSwgMHg3YywgMHg3ZCwgMHg3MiwgMHg2NiwgMHg1MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHg2MiwgMHg2NiwgMHhiLCAweDFlLCAweGZiLCAweGE5LCAweDc5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4MjUsIDB4YSwgMHhmNywgMHg1NiwgMHhiLCAweGZiLCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDNjLCAweGZiLCAweDNjLCAweGZiLCAweDFkLCAweGIsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmNywgMHg2NSwgMHhkNiwgMHgzLCAweGIsIDB4ZjcsIDB4NWMsIDB4NDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHg2ZiwgMHhhMSwgMHg2YywgMHg3YiwgMHg3YiwgMHg4NSwgMHg4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NywgMHgxZSwgMHhiLCAweDE1LCAweDIwLCAweGEsIDB4YiwgMHg4OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgMHg4YiwgMHg4OSwgMHg4YSwgMHgxYSwgMHg3YywgMHg5YSwgMHg4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgMHhiLCAweDI3LCAweGEsIDB4ZSwgMHhmOCwgMHhhMiwgMHhjMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHhhMiwgMHg2LCAweGIsIDB4YTAsIDB4NzYsIDB4ZjksIDB4MzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzcsIDB4MSwgMHhiLCAweDMxLCAweGEsIDB4ZmIsIDB4YjAsIDB4NDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YSwgMHhiLCAweDhiLCAweGMyLCAweGY4LCAweGRjLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTgsIDB4MTYsIDB4ZjgsIDB4ODUsIDB4YzIsIDB4ZmMsIDB4ODUsIDB4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGY4LCAweDQ1LCAweGY3LCAweDViLCAweDUsIDB4YzksIDB4NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmYywgMHg4NSwgMHhmYiwgMHg3YSwgMHg1LCAweGUsIDB4ZmIsIDB4YmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmIsIDB4YjksIDB4MWMsIDB4NCwgMHhjMywgMHgxLCAweGIsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ZiwgMHg4ZiwgMHg4ZCwgMHg5NSwgMHg5MSwgMHgxYSwgMHhhOCwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZiLCAweDE3LCAweGZiLCAweDM1LCAweGZiLCAweDM1LCAweGIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTAsIDB4YzIsIDB4ZmMsIDB4YTAsIDB4NiwgMHhiLCAweGY3LCAweDFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGY3LCAweDNjLCAweGIsIDB4MzUsIDB4YSwgMHhmNywgMHg2NSwgMHhiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweDcsIDB4MmYsIDB4YSwgMHhiLCAweGY3LCAweGM0LCAweDkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc2LCAweGY3LCAweDdmLCAweGMzLCAweGY3LCAweDdmLCAweDc3LCAweDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHhjMiwgMHhmNywgMHhmYywgMHhjMiwgMHgxLCAweGIsIDB4ZjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIDB4ZmIsIDB4MmYsIDB4ZjcsIDB4MmYsIDB4ZmIsIDB4NTIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMsIDB4YiwgMHg3NywgMHgxLCAweGY3LCAweGFjLCAweGMzLCAweDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YiwgMHg3LCAweDc0LCAweDc3LCAweDdjLCAweDZjLCAweDFlLCAweGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjcsIDB4NTMsIDB4ZjcsIDB4NTMsIDB4YiwgMHhmYiwgMHhmNiwgMHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHg3NiwgMHhmYSwgMHg0NCwgMHg3NywgMHgxLCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NWYsIDB4ZmIsIDB4NGIsIDB4YTQsIDB4ZjksIDB4YmEsIDB4YTQsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGZiLCAweGYyLCAweGZiLCAweDJmLCAweGE0LCAweGY5LCAweDlmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGE0LCAweDEsIDB4YiwgMHgxNSwgMHgyYiwgMHhhLCAweGIsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjIsIDB4ZmIsIDB4M2UsIDB4NzYsIDB4ZjksIDB4ZjQsIDB4NzcsIDB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhiLCAweGM5LCAweDcsIDB4ZmMsIDB4ODUsIDB4ZjcsIDB4N2EsIDB4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0ZCwgMHg3LCAweGIsIDB4NjcsIDB4YTgsIDB4NmUsIDB4YWYsIDB4YWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4YTcsIDB4YTgsIDB4YWYsIDB4YWYsIDB4YiwgMHhmYiwgMHg1MSwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhhOSwgMHgzNSwgMHhhLCAweGIsIDB4MzYsIDB4MTUsIDB4ZGYsIDB4ZmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODYsIDB4MzcsIDB4NiwgMHhlLCAweDEsIDB4YjMsIDB4YzIsIDB4ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZGEsIDB4YzIsIDB4MywgMHhiMywgMHhiLCAweDQxLCAweGEsIDB4ZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcsIDB4YiwgMHgxNSwgMHhhOSwgMHhhNiwgMHhhYSwgMHg5ZiwgMHhiOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxYiwgMHhhYSwgMHhiLCAweDhhLCAweDFmLCAweGZjLCAweDI5LCAweDU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYsIDB4ZSwgMHg5MCwgMHg5MCwgMHg4ZiwgMHg4ZSwgMHg4ZCwgMHhiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZveGl0bmFtZXMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZveGl0bmFtZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWNjYmFmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZm94aXRuYW1lcy5oCkBAIC0wLDAgKzEsMjg4IEBACisjaWZuZGVmIF9GWF9GUkVFVFlQRV9ET05UX1JFTkFNRV8KKworI2lmZGVmIF9NU0NfVkVSCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYKKworLy8gVG8gYXZvaWQgYW55IHBvc3NpYmxlIGxpbmtpbmcgY29uZmxpY3Rpb24sIHdlIHJlbmFtZSBhbGwgRnJlZVR5cGUgZXhwb3J0ZWQgbmFtZXMKKworI2RlZmluZSBGVF9Jbml0X0ZyZWVUeXBlIEZQREZBUElfRlRfSW5pdF9GcmVlVHlwZQorI2RlZmluZSBGVF9Eb25lX0ZyZWVUeXBlIEZQREZBUElfRlRfRG9uZV9GcmVlVHlwZQorI2RlZmluZSBGVF9OZXdfRmFjZQkJRlBERkFQSV9GVF9OZXdfRmFjZQorI2RlZmluZSBGVF9TZWxlY3RfQ2hhcm1hcCBGUERGQVBJX0ZUX1NlbGVjdF9DaGFybWFwIAorI2RlZmluZSBGVF9Eb25lX0ZhY2UgRlBERkFQSV9GVF9Eb25lX0ZhY2UgCisjZGVmaW5lIEZUX0dldF9DaGFybWFwX0luZGV4IEZQREZBUElfRlRfR2V0X0NoYXJtYXBfSW5kZXggCisjZGVmaW5lIEZUX05ld19NZW1vcnlfRmFjZSBGUERGQVBJX0ZUX05ld19NZW1vcnlfRmFjZSAKKyNkZWZpbmUgRlRfTXVsRGl2IEZQREZBUElfRlRfTXVsRGl2IAorI2RlZmluZSBGVF9WZWN0b3JfVHJhbnNmb3JtIEZQREZBUElfRlRfVmVjdG9yX1RyYW5zZm9ybSAKKyNkZWZpbmUgRlRfQ29zIEZQREZBUElfRlRfQ29zIAorI2RlZmluZSBGVF9TaW4gRlBERkFQSV9GVF9TaW4gCisjZGVmaW5lIEZUX0xvYWRfR2x5cGggRlBERkFQSV9GVF9Mb2FkX0dseXBoIAorI2RlZmluZSBGVF9EaXZGaXggRlBERkFQSV9GVF9EaXZGaXggCisjZGVmaW5lIEZUX1JlYWxsb2MgRlBERkFQSV9GVF9SZWFsbG9jIAorI2RlZmluZSBGVF9BbGxvYyBGUERGQVBJX0ZUX0FsbG9jIAorI2RlZmluZSBGVF9HZXRfQ2hhcl9JbmRleCBGUERGQVBJX0ZUX0dldF9DaGFyX0luZGV4IAorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cyBGUERGQVBJX0ZUX0dseXBoTG9hZGVyX0NoZWNrUG9pbnRzIAorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9BZGQgRlBERkFQSV9GVF9HbHlwaExvYWRlcl9BZGQgCisjZGVmaW5lIEZUX0dseXBoTG9hZGVyX0NoZWNrU3ViR2x5cGhzIEZQREZBUElfRlRfR2x5cGhMb2FkZXJfQ2hlY2tTdWJHbHlwaHMgCisjZGVmaW5lIEZUX091dGxpbmVfVHJhbnNsYXRlIEZQREZBUElfRlRfT3V0bGluZV9UcmFuc2xhdGUgCisjZGVmaW5lIEZUX091dGxpbmVfVHJhbnNmb3JtIEZQREZBUElfRlRfT3V0bGluZV9UcmFuc2Zvcm0gCisjZGVmaW5lIEZUX091dGxpbmVfR2V0X0NCb3ggRlBERkFQSV9GVF9PdXRsaW5lX0dldF9DQm94IAorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9SZXdpbmQgRlBERkFQSV9GVF9HbHlwaExvYWRlcl9SZXdpbmQgCisjZGVmaW5lIEZUX0dseXBoTG9hZGVyX0NvcHlQb2ludHMgRlBERkFQSV9GVF9HbHlwaExvYWRlcl9Db3B5UG9pbnRzIAorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9OZXcgRlBERkFQSV9GVF9HbHlwaExvYWRlcl9OZXcgCisjZGVmaW5lIEZUX0dseXBoTG9hZGVyX0NyZWF0ZUV4dHJhIEZQREZBUElfRlRfR2x5cGhMb2FkZXJfQ3JlYXRlRXh0cmEgCisjZGVmaW5lIEZUX0ZyZWUgRlBERkFQSV9GVF9GcmVlIAorI2RlZmluZSBGVF9TZXRfQ2hhcm1hcCBGUERGQVBJX0ZUX1NldF9DaGFybWFwIAorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9Eb25lIEZQREZBUElfRlRfR2x5cGhMb2FkZXJfRG9uZSAKKyNkZWZpbmUgX2RlYnVnX21lbV9kdW1teSBGUERGQVBJX19kZWJ1Z19tZW1fZHVtbXkgCisjZGVmaW5lIF9kZWJ1Z19tZW1fZHVtbXkgRlBERkFQSV9fZGVidWdfbWVtX2R1bW15IAorI2RlZmluZSBGVF9RQWxsb2MgRlBERkFQSV9GVF9RQWxsb2MgCisjZGVmaW5lIEZUX1FSZWFsbG9jIEZQREZBUElfRlRfUVJlYWxsb2MgCisjZGVmaW5lIEZUX0xpc3RfRmluZCBGUERGQVBJX0ZUX0xpc3RfRmluZCAKKyNkZWZpbmUgRlRfTGlzdF9BZGQgRlBERkFQSV9GVF9MaXN0X0FkZCAKKyNkZWZpbmUgRlRfTGlzdF9JbnNlcnQgRlBERkFQSV9GVF9MaXN0X0luc2VydCAKKyNkZWZpbmUgRlRfTGlzdF9SZW1vdmUgRlBERkFQSV9GVF9MaXN0X1JlbW92ZSAKKyNkZWZpbmUgRlRfTGlzdF9VcCBGUERGQVBJX0ZUX0xpc3RfVXAgCisjZGVmaW5lIEZUX0xpc3RfSXRlcmF0ZSBGUERGQVBJX0ZUX0xpc3RfSXRlcmF0ZSAKKyNkZWZpbmUgRlRfTGlzdF9GaW5hbGl6ZSBGUERGQVBJX0ZUX0xpc3RfRmluYWxpemUgCisjZGVmaW5lIGZ0X2hpZ2hwb3cyIEZQREZBUElfZnRfaGlnaHBvdzIgCisjZGVmaW5lIEZUX1N0cmVhbV9PcGVuTWVtb3J5IEZQREZBUElfRlRfU3RyZWFtX09wZW5NZW1vcnkgCisjZGVmaW5lIEZUX1N0cmVhbV9DbG9zZSBGUERGQVBJX0ZUX1N0cmVhbV9DbG9zZSAKKyNkZWZpbmUgRlRfU3RyZWFtX1NlZWsgRlBERkFQSV9GVF9TdHJlYW1fU2VlayAKKyNkZWZpbmUgRlRfU3RyZWFtX1NraXAgRlBERkFQSV9GVF9TdHJlYW1fU2tpcCAKKyNkZWZpbmUgRlRfU3RyZWFtX1BvcyBGUERGQVBJX0ZUX1N0cmVhbV9Qb3MgCisjZGVmaW5lIEZUX1N0cmVhbV9SZWFkQXQgRlBERkFQSV9GVF9TdHJlYW1fUmVhZEF0IAorI2RlZmluZSBGVF9TdHJlYW1fUmVhZCBGUERGQVBJX0ZUX1N0cmVhbV9SZWFkIAorI2RlZmluZSBGVF9TdHJlYW1fVHJ5UmVhZCBGUERGQVBJX0ZUX1N0cmVhbV9UcnlSZWFkIAorI2RlZmluZSBGVF9TdHJlYW1fRW50ZXJGcmFtZSBGUERGQVBJX0ZUX1N0cmVhbV9FbnRlckZyYW1lIAorI2RlZmluZSBGVF9TdHJlYW1fRXh0cmFjdEZyYW1lIEZQREZBUElfRlRfU3RyZWFtX0V4dHJhY3RGcmFtZSAKKyNkZWZpbmUgRlRfU3RyZWFtX1JlbGVhc2VGcmFtZSBGUERGQVBJX0ZUX1N0cmVhbV9SZWxlYXNlRnJhbWUgCisjZGVmaW5lIEZUX1N0cmVhbV9FeGl0RnJhbWUgRlBERkFQSV9GVF9TdHJlYW1fRXhpdEZyYW1lIAorI2RlZmluZSBGVF9TdHJlYW1fR2V0Q2hhciBGUERGQVBJX0ZUX1N0cmVhbV9HZXRDaGFyIAorI2RlZmluZSBGVF9TdHJlYW1fR2V0U2hvcnQgRlBERkFQSV9GVF9TdHJlYW1fR2V0U2hvcnQgCisjZGVmaW5lIEZUX1N0cmVhbV9HZXRTaG9ydExFIEZQREZBUElfRlRfU3RyZWFtX0dldFNob3J0TEUgCisjZGVmaW5lIEZUX1N0cmVhbV9HZXRPZmZzZXQgRlBERkFQSV9GVF9TdHJlYW1fR2V0T2Zmc2V0IAorI2RlZmluZSBGVF9TdHJlYW1fR2V0TG9uZyBGUERGQVBJX0ZUX1N0cmVhbV9HZXRMb25nIAorI2RlZmluZSBGVF9TdHJlYW1fR2V0TG9uZ0xFIEZQREZBUElfRlRfU3RyZWFtX0dldExvbmdMRSAKKyNkZWZpbmUgRlRfU3RyZWFtX1JlYWRDaGFyIEZQREZBUElfRlRfU3RyZWFtX1JlYWRDaGFyIAorI2RlZmluZSBGVF9TdHJlYW1fUmVhZFNob3J0IEZQREZBUElfRlRfU3RyZWFtX1JlYWRTaG9ydCAKKyNkZWZpbmUgRlRfU3RyZWFtX1JlYWRTaG9ydExFIEZQREZBUElfRlRfU3RyZWFtX1JlYWRTaG9ydExFIAorI2RlZmluZSBGVF9TdHJlYW1fUmVhZE9mZnNldCBGUERGQVBJX0ZUX1N0cmVhbV9SZWFkT2Zmc2V0IAorI2RlZmluZSBGVF9TdHJlYW1fUmVhZExvbmcgRlBERkFQSV9GVF9TdHJlYW1fUmVhZExvbmcgCisjZGVmaW5lIEZUX1N0cmVhbV9SZWFkTG9uZ0xFIEZQREZBUElfRlRfU3RyZWFtX1JlYWRMb25nTEUgCisjZGVmaW5lIEZUX1N0cmVhbV9SZWFkRmllbGRzIEZQREZBUElfRlRfU3RyZWFtX1JlYWRGaWVsZHMgCisjZGVmaW5lIEZUX1JvdW5kRml4IEZQREZBUElfRlRfUm91bmRGaXggCisjZGVmaW5lIEZUX0NlaWxGaXggRlBERkFQSV9GVF9DZWlsRml4IAorI2RlZmluZSBGVF9GbG9vckZpeCBGUERGQVBJX0ZUX0Zsb29yRml4IAorI2RlZmluZSBGVF9TcXJ0MzIgRlBERkFQSV9GVF9TcXJ0MzIgCisjZGVmaW5lIEZUX1NxcnRGaXhlZCBGUERGQVBJX0ZUX1NxcnRGaXhlZCAKKyNkZWZpbmUgRlRfVGFuIEZQREZBUElfRlRfVGFuIAorI2RlZmluZSBGVF9BdGFuMiBGUERGQVBJX0ZUX0F0YW4yIAorI2RlZmluZSBGVF9WZWN0b3JfVW5pdCBGUERGQVBJX0ZUX1ZlY3Rvcl9Vbml0IAorI2RlZmluZSBGVF9WZWN0b3JfUm90YXRlIEZQREZBUElfRlRfVmVjdG9yX1JvdGF0ZSAKKyNkZWZpbmUgRlRfVmVjdG9yX0xlbmd0aCBGUERGQVBJX0ZUX1ZlY3Rvcl9MZW5ndGggCisjZGVmaW5lIEZUX1ZlY3Rvcl9Qb2xhcml6ZSBGUERGQVBJX0ZUX1ZlY3Rvcl9Qb2xhcml6ZSAKKyNkZWZpbmUgRlRfVmVjdG9yX0Zyb21fUG9sYXIgRlBERkFQSV9GVF9WZWN0b3JfRnJvbV9Qb2xhciAKKyNkZWZpbmUgRlRfQW5nbGVfRGlmZiBGUERGQVBJX0ZUX0FuZ2xlX0RpZmYgCisjZGVmaW5lIEZUX091dGxpbmVfRGVjb21wb3NlIEZQREZBUElfRlRfT3V0bGluZV9EZWNvbXBvc2UgCisjZGVmaW5lIEZUX091dGxpbmVfRG9uZV9JbnRlcm5hbCBGUERGQVBJX0ZUX091dGxpbmVfRG9uZV9JbnRlcm5hbCAKKyNkZWZpbmUgRlRfT3V0bGluZV9OZXdfSW50ZXJuYWwgRlBERkFQSV9GVF9PdXRsaW5lX05ld19JbnRlcm5hbCAKKyNkZWZpbmUgRlRfT3V0bGluZV9OZXcgRlBERkFQSV9GVF9PdXRsaW5lX05ldyAKKyNkZWZpbmUgRlRfT3V0bGluZV9DaGVjayBGUERGQVBJX0ZUX091dGxpbmVfQ2hlY2sgCisjZGVmaW5lIEZUX091dGxpbmVfQ29weSBGUERGQVBJX0ZUX091dGxpbmVfQ29weSAKKyNkZWZpbmUgRlRfT3V0bGluZV9Eb25lIEZQREZBUElfRlRfT3V0bGluZV9Eb25lIAorI2RlZmluZSBGVF9PdXRsaW5lX1JldmVyc2UgRlBERkFQSV9GVF9PdXRsaW5lX1JldmVyc2UgCisjZGVmaW5lIEZUX1NldF9SZW5kZXJlciBGUERGQVBJX0ZUX1NldF9SZW5kZXJlciAKKyNkZWZpbmUgRlRfTG9va3VwX1JlbmRlcmVyIEZQREZBUElfRlRfTG9va3VwX1JlbmRlcmVyIAorI2RlZmluZSBGVF9PdXRsaW5lX1JlbmRlciBGUERGQVBJX0ZUX091dGxpbmVfUmVuZGVyIAorI2RlZmluZSBGVF9PdXRsaW5lX0dldF9CaXRtYXAgRlBERkFQSV9GVF9PdXRsaW5lX0dldF9CaXRtYXAgCisjZGVmaW5lIEZUX091dGxpbmVfR2V0X09yaWVudGF0aW9uIEZQREZBUElfRlRfT3V0bGluZV9HZXRfT3JpZW50YXRpb24gCisjZGVmaW5lIEZUX091dGxpbmVfRW1ib2xkZW4gRlBERkFQSV9GVF9PdXRsaW5lX0VtYm9sZGVuIAorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9SZXNldCBGUERGQVBJX0ZUX0dseXBoTG9hZGVyX1Jlc2V0IAorI2RlZmluZSBGVF9HbHlwaExvYWRlcl9QcmVwYXJlIEZQREZBUElfRlRfR2x5cGhMb2FkZXJfUHJlcGFyZSAKKyNkZWZpbmUgZnRfc2VydmljZV9saXN0X2xvb2t1cCBGUERGQVBJX2Z0X3NlcnZpY2VfbGlzdF9sb29rdXAgCisjZGVmaW5lIGZ0X3ZhbGlkYXRvcl9pbml0IEZQREZBUElfZnRfdmFsaWRhdG9yX2luaXQgCisjZGVmaW5lIGZ0X3ZhbGlkYXRvcl9ydW4gRlBERkFQSV9mdF92YWxpZGF0b3JfcnVuIAorI2RlZmluZSBmdF92YWxpZGF0b3JfZXJyb3IgRlBERkFQSV9mdF92YWxpZGF0b3JfZXJyb3IgCisjZGVmaW5lIEZUX1N0cmVhbV9OZXcgRlBERkFQSV9GVF9TdHJlYW1fTmV3IAorI2RlZmluZSBGVF9TdHJlYW1fRnJlZSBGUERGQVBJX0ZUX1N0cmVhbV9GcmVlIAorI2RlZmluZSBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAgRlBERkFQSV9mdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAgCisjZGVmaW5lIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwIEZQREZBUElfZnRfZ2x5cGhzbG90X3NldF9iaXRtYXAgCisjZGVmaW5lIEZUX0dseXBoU2xvdF9Pd25fQml0bWFwIEZQREZBUElfRlRfR2x5cGhTbG90X093bl9CaXRtYXAKKyNkZWZpbmUgZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCBGUERGQVBJX2Z0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAgCisjZGVmaW5lIEZUX05ld19HbHlwaFNsb3QgRlBERkFQSV9GVF9OZXdfR2x5cGhTbG90IAorI2RlZmluZSBGVF9Eb25lX0dseXBoU2xvdCBGUERGQVBJX0ZUX0RvbmVfR2x5cGhTbG90IAorI2RlZmluZSBGVF9TZXRfVHJhbnNmb3JtIEZQREZBUElfRlRfU2V0X1RyYW5zZm9ybSAKKyNkZWZpbmUgRlRfUmVuZGVyX0dseXBoX0ludGVybmFsIEZQREZBUElfRlRfUmVuZGVyX0dseXBoX0ludGVybmFsIAorI2RlZmluZSBGVF9SZW5kZXJfR2x5cGggRlBERkFQSV9GVF9SZW5kZXJfR2x5cGggCisjZGVmaW5lIEZUX0xvYWRfQ2hhciBGUERGQVBJX0ZUX0xvYWRfQ2hhciAKKyNkZWZpbmUgRlRfTmV3X1NpemUgRlBERkFQSV9GVF9OZXdfU2l6ZSAKKyNkZWZpbmUgRlRfT3Blbl9GYWNlIEZQREZBUElfRlRfT3Blbl9GYWNlIAorI2RlZmluZSBGVF9BdHRhY2hfU3RyZWFtIEZQREZBUElfRlRfQXR0YWNoX1N0cmVhbSAKKyNkZWZpbmUgRlRfQXR0YWNoX0ZpbGUgRlBERkFQSV9GVF9BdHRhY2hfRmlsZSAKKyNkZWZpbmUgRlRfRG9uZV9TaXplIEZQREZBUElfRlRfRG9uZV9TaXplIAorI2RlZmluZSBGVF9TZXRfQ2hhcl9TaXplIEZQREZBUElfRlRfU2V0X0NoYXJfU2l6ZSAKKyNkZWZpbmUgRlRfU2V0X1BpeGVsX1NpemVzIEZQREZBUElfRlRfU2V0X1BpeGVsX1NpemVzIAorI2RlZmluZSBGVF9HZXRfS2VybmluZyBGUERGQVBJX0ZUX0dldF9LZXJuaW5nIAorI2RlZmluZSBGVF9DTWFwX0RvbmUgRlBERkFQSV9GVF9DTWFwX0RvbmUgCisjZGVmaW5lIEZUX0NNYXBfTmV3IEZQREZBUElfRlRfQ01hcF9OZXcgCisjZGVmaW5lIEZUX0dldF9OZXh0X0NoYXIgRlBERkFQSV9GVF9HZXRfTmV4dF9DaGFyIAorI2RlZmluZSBGVF9HZXRfRmlyc3RfQ2hhciBGUERGQVBJX0ZUX0dldF9GaXJzdF9DaGFyIAorI2RlZmluZSBGVF9HZXRfTmFtZV9JbmRleCBGUERGQVBJX0ZUX0dldF9OYW1lX0luZGV4IAorI2RlZmluZSBGVF9HZXRfR2x5cGhfTmFtZSBGUERGQVBJX0ZUX0dldF9HbHlwaF9OYW1lIAorI2RlZmluZSBGVF9HZXRfUG9zdHNjcmlwdF9OYW1lIEZQREZBUElfRlRfR2V0X1Bvc3RzY3JpcHRfTmFtZSAKKyNkZWZpbmUgRlRfR2V0X1NmbnRfVGFibGUgRlBERkFQSV9GVF9HZXRfU2ZudF9UYWJsZSAKKyNkZWZpbmUgRlRfTG9hZF9TZm50X1RhYmxlIEZQREZBUElfRlRfTG9hZF9TZm50X1RhYmxlIAorI2RlZmluZSBGVF9TZm50X1RhYmxlX0luZm8gRlBERkFQSV9GVF9TZm50X1RhYmxlX0luZm8gCisjZGVmaW5lIEZUX0dldF9DTWFwX0xhbmd1YWdlX0lEIEZQREZBUElfRlRfR2V0X0NNYXBfTGFuZ3VhZ2VfSUQgCisjZGVmaW5lIEZUX0FjdGl2YXRlX1NpemUgRlBERkFQSV9GVF9BY3RpdmF0ZV9TaXplIAorI2RlZmluZSBGVF9HZXRfUmVuZGVyZXIgRlBERkFQSV9GVF9HZXRfUmVuZGVyZXIgCisjZGVmaW5lIEZUX1JlbW92ZV9Nb2R1bGUgRlBERkFQSV9GVF9SZW1vdmVfTW9kdWxlIAorI2RlZmluZSBGVF9BZGRfTW9kdWxlIEZQREZBUElfRlRfQWRkX01vZHVsZSAKKyNkZWZpbmUgRlRfR2V0X01vZHVsZSBGUERGQVBJX0ZUX0dldF9Nb2R1bGUgCisjZGVmaW5lIEZUX0dldF9Nb2R1bGVfSW50ZXJmYWNlIEZQREZBUElfRlRfR2V0X01vZHVsZV9JbnRlcmZhY2UgCisjZGVmaW5lIGZ0X21vZHVsZV9nZXRfc2VydmljZSBGUERGQVBJX2Z0X21vZHVsZV9nZXRfc2VydmljZSAKKyNkZWZpbmUgRlRfTmV3X0xpYnJhcnkgRlBERkFQSV9GVF9OZXdfTGlicmFyeSAKKyNkZWZpbmUgRlRfTGlicmFyeV9WZXJzaW9uIEZQREZBUElfRlRfTGlicmFyeV9WZXJzaW9uIAorI2RlZmluZSBGVF9Eb25lX0xpYnJhcnkgRlBERkFQSV9GVF9Eb25lX0xpYnJhcnkgCisjZGVmaW5lIEZUX1NldF9EZWJ1Z19Ib29rIEZQREZBUElfRlRfU2V0X0RlYnVnX0hvb2sgCisjZGVmaW5lIEZUX1JhY2Nlc3NfR2V0X0hlYWRlckluZm8gRlBERkFQSV9GVF9SYWNjZXNzX0dldF9IZWFkZXJJbmZvIAorI2RlZmluZSBGVF9SYWNjZXNzX0dldF9EYXRhT2Zmc2V0cyBGUERGQVBJX0ZUX1JhY2Nlc3NfR2V0X0RhdGFPZmZzZXRzIAorI2RlZmluZSBGVF9SYWNjZXNzX0d1ZXNzIEZQREZBUElfRlRfUmFjY2Vzc19HdWVzcworI2RlZmluZSBhZl9kdW1teV9zY3JpcHRfY2xhc3MgRlBERkFQSV9hZl9kdW1teV9zY3JpcHRfY2xhc3MKKyNkZWZpbmUgYWZfbGF0aW5fc2NyaXB0X2NsYXNzIEZQREZBUElfYWZfbGF0aW5fc2NyaXB0X2NsYXNzCisjZGVmaW5lIGFmX2Nqa19zY3JpcHRfY2xhc3MgRlBERkFQSV9hZl9jamtfc2NyaXB0X2NsYXNzCisjZGVmaW5lIGFmX2F1dG9maXR0ZXJfc2VydmljZSBGUERGQVBJX2FmX2F1dG9maXR0ZXJfc2VydmljZQorI2RlZmluZSBhdXRvZml0X21vZHVsZV9jbGFzcyBGUERGQVBJX2F1dG9maXRfbW9kdWxlX2NsYXNzCisjZGVmaW5lIGNmZl9jbWFwX2VuY29kaW5nX2NsYXNzX3JlYyBGUERGQVBJX2NmZl9jbWFwX2VuY29kaW5nX2NsYXNzX3JlYworI2RlZmluZSBjZmZfY21hcF91bmljb2RlX2NsYXNzX3JlYyBGUERGQVBJX2NmZl9jbWFwX3VuaWNvZGVfY2xhc3NfcmVjCisjZGVmaW5lIGNmZl9kcml2ZXJfY2xhc3MgRlBERkFQSV9jZmZfZHJpdmVyX2NsYXNzCisjZGVmaW5lIEZUX1N0cmVhbV9PcGVuIEZQREZBUElfRlRfU3RyZWFtX09wZW4KKyNkZWZpbmUgRlRfTmV3X01lbW9yeSBGUERGQVBJX0ZUX05ld19NZW1vcnkKKyNkZWZpbmUgRlRfRG9uZV9NZW1vcnkgRlBERkFQSV9GVF9Eb25lX01lbW9yeQorI2RlZmluZSBmdF9tZW1fcWFsbG9jIEZQREZBUElfZnRfbWVtX3FhbGxvYworI2RlZmluZSBmdF9tZW1fYWxsb2MgRlBERkFQSV9mdF9tZW1fYWxsb2MKKyNkZWZpbmUgZnRfbWVtX2ZyZWUgRlBERkFQSV9mdF9tZW1fZnJlZQorI2RlZmluZSBmdF9tZW1fcXJlYWxsb2MgRlBERkFQSV9mdF9tZW1fcXJlYWxsb2MKKyNkZWZpbmUgZnRfbWVtX3JlYWxsb2MgRlBERkFQSV9mdF9tZW1fcmVhbGxvYworI2RlZmluZSBGVF9HZXRfVHJ1ZVR5cGVfRW5naW5lX1R5cGUgRlBERkFQSV9GVF9HZXRfVHJ1ZVR5cGVfRW5naW5lX1R5cGUKKyNkZWZpbmUgZnRfc3R1Yl9zZXRfY2hhcl9zaXplcyBGUERGQVBJX2Z0X3N0dWJfc2V0X2NoYXJfc2l6ZXMKKyNkZWZpbmUgZnRfc3R1Yl9zZXRfcGl4ZWxfc2l6ZXMgRlBERkFQSV9mdF9zdHViX3NldF9waXhlbF9zaXplcworI2RlZmluZSBGVF9HZXRfU3ViR2x5cGhfSW5mbyBGUERGQVBJX0ZUX0dldF9TdWJHbHlwaF9JbmZvCisjZGVmaW5lIEZUX0dldF9TZm50X05hbWVfQ291bnQgRlBERkFQSV9GVF9HZXRfU2ZudF9OYW1lX0NvdW50CisjZGVmaW5lIEZUX0dldF9TZm50X05hbWUgRlBERkFQSV9GVF9HZXRfU2ZudF9OYW1lCisjZGVmaW5lIEZUX0JpdG1hcF9OZXcgRlBERkFQSV9GVF9CaXRtYXBfTmV3CisjZGVmaW5lIEZUX0JpdG1hcF9Db3B5IEZQREZBUElfRlRfQml0bWFwX0NvcHkKKyNkZWZpbmUgRlRfQml0bWFwX0RvbmUgRlBERkFQSV9GVF9CaXRtYXBfRG9uZQorI2RlZmluZSBGVF9CaXRtYXBfQ29udmVydCBGUERGQVBJX0ZUX0JpdG1hcF9Db252ZXJ0CisjZGVmaW5lIEZUX0JpdG1hcF9FbWJvbGRlbiBGUERGQVBJX0ZUX0JpdG1hcF9FbWJvbGRlbgorI2RlZmluZSBmdF9iaXRtYXBfZ2x5cGhfY2xhc3MgRlBERkFQSV9mdF9iaXRtYXBfZ2x5cGhfY2xhc3MKKyNkZWZpbmUgZnRfb3V0bGluZV9nbHlwaF9jbGFzcyBGUERGQVBJX2Z0X291dGxpbmVfZ2x5cGhfY2xhc3MKKyNkZWZpbmUgRlRfTWF0cml4X011bHRpcGx5IEZQREZBUElfRlRfTWF0cml4X011bHRpcGx5CisjZGVmaW5lIEZUX01hdHJpeF9JbnZlcnQgRlBERkFQSV9GVF9NYXRyaXhfSW52ZXJ0CisjZGVmaW5lIEZUX0RvbmVfR2x5cGggRlBERkFQSV9GVF9Eb25lX0dseXBoCisjZGVmaW5lIEZUX0dseXBoX0NvcHkgRlBERkFQSV9GVF9HbHlwaF9Db3B5CisjZGVmaW5lIEZUX0dldF9HbHlwaCBGUERGQVBJX0ZUX0dldF9HbHlwaAorI2RlZmluZSBGVF9HbHlwaF9UcmFuc2Zvcm0gRlBERkFQSV9GVF9HbHlwaF9UcmFuc2Zvcm0KKyNkZWZpbmUgRlRfR2x5cGhfR2V0X0NCb3ggRlBERkFQSV9GVF9HbHlwaF9HZXRfQ0JveAorI2RlZmluZSBGVF9HbHlwaF9Ub19CaXRtYXAgRlBERkFQSV9GVF9HbHlwaF9Ub19CaXRtYXAKKyNkZWZpbmUgRlRfQWRkX0RlZmF1bHRfTW9kdWxlcyBGUERGQVBJX0ZUX0FkZF9EZWZhdWx0X01vZHVsZXMKKyNkZWZpbmUgRlRfR2V0X011bHRpX01hc3RlciBGUERGQVBJX0ZUX0dldF9NdWx0aV9NYXN0ZXIKKyNkZWZpbmUgRlRfR2V0X01NX1ZhciBGUERGQVBJX0ZUX0dldF9NTV9WYXIKKyNkZWZpbmUgRlRfU2V0X01NX0Rlc2lnbl9Db29yZGluYXRlcyBGUERGQVBJX0ZUX1NldF9NTV9EZXNpZ25fQ29vcmRpbmF0ZXMKKyNkZWZpbmUgRlRfU2V0X1Zhcl9EZXNpZ25fQ29vcmRpbmF0ZXMgRlBERkFQSV9GVF9TZXRfVmFyX0Rlc2lnbl9Db29yZGluYXRlcworI2RlZmluZSBGVF9TZXRfTU1fQmxlbmRfQ29vcmRpbmF0ZXMgRlBERkFQSV9GVF9TZXRfTU1fQmxlbmRfQ29vcmRpbmF0ZXMKKyNkZWZpbmUgRlRfU2V0X1Zhcl9CbGVuZF9Db29yZGluYXRlcyBGUERGQVBJX0ZUX1NldF9WYXJfQmxlbmRfQ29vcmRpbmF0ZXMKKyNkZWZpbmUgcHNfdGFibGVfZnVuY3MgRlBERkFQSV9wc190YWJsZV9mdW5jcworI2RlZmluZSBwc19wYXJzZXJfZnVuY3MgRlBERkFQSV9wc19wYXJzZXJfZnVuY3MKKyNkZWZpbmUgdDFfYnVpbGRlcl9mdW5jcyBGUERGQVBJX3QxX2J1aWxkZXJfZnVuY3MKKyNkZWZpbmUgdDFfZGVjb2Rlcl9mdW5jcyBGUERGQVBJX3QxX2RlY29kZXJfZnVuY3MKKyNkZWZpbmUgYWZtX3BhcnNlcl9mdW5jcyBGUERGQVBJX2FmbV9wYXJzZXJfZnVuY3MKKyNkZWZpbmUgdDFfY21hcF9jbGFzc2VzIEZQREZBUElfdDFfY21hcF9jbGFzc2VzCisjZGVmaW5lIHQxX2NtYXBfc3RhbmRhcmRfY2xhc3NfcmVjIEZQREZBUElfdDFfY21hcF9zdGFuZGFyZF9jbGFzc19yZWMKKyNkZWZpbmUgdDFfY21hcF9leHBlcnRfY2xhc3NfcmVjIEZQREZBUElfdDFfY21hcF9leHBlcnRfY2xhc3NfcmVjCisjZGVmaW5lIHQxX2NtYXBfY3VzdG9tX2NsYXNzX3JlYyBGUERGQVBJX3QxX2NtYXBfY3VzdG9tX2NsYXNzX3JlYworI2RlZmluZSB0MV9jbWFwX3VuaWNvZGVfY2xhc3NfcmVjIEZQREZBUElfdDFfY21hcF91bmljb2RlX2NsYXNzX3JlYworI2RlZmluZSBwc2F1eF9tb2R1bGVfY2xhc3MgRlBERkFQSV9wc2F1eF9tb2R1bGVfY2xhc3MKKyNkZWZpbmUgcHNoaW50ZXJfbW9kdWxlX2NsYXNzIEZQREZBUElfcHNoaW50ZXJfbW9kdWxlX2NsYXNzCisjZGVmaW5lIHBzX2hpbnRzX2FwcGx5IEZQREZBUElfcHNfaGludHNfYXBwbHkKKyNkZWZpbmUgcHNuYW1lc19tb2R1bGVfY2xhc3MgRlBERkFQSV9wc25hbWVzX21vZHVsZV9jbGFzcworI2RlZmluZSBmdF9yYXN0ZXIxX3JlbmRlcmVyX2NsYXNzIEZQREZBUElfZnRfcmFzdGVyMV9yZW5kZXJlcl9jbGFzcworI2RlZmluZSBmdF9zdGFuZGFyZF9yYXN0ZXIgRlBERkFQSV9mdF9zdGFuZGFyZF9yYXN0ZXIKKyNkZWZpbmUgZnRfcmFzdGVyNV9yZW5kZXJlcl9jbGFzcyBGUERGQVBJX2Z0X3Jhc3RlcjVfcmVuZGVyZXJfY2xhc3MKKyNkZWZpbmUgdHRfY21hcDBfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDBfY2xhc3NfcmVjCisjZGVmaW5lIHR0X2NtYXAyX2NsYXNzX3JlYyBGUERGQVBJX3R0X2NtYXAyX2NsYXNzX3JlYworI2RlZmluZSB0dF9jbWFwNF9jbGFzc19yZWMgRlBERkFQSV90dF9jbWFwNF9jbGFzc19yZWMKKyNkZWZpbmUgdHRfY21hcDZfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDZfY2xhc3NfcmVjCisjZGVmaW5lIHR0X2NtYXA4X2NsYXNzX3JlYyBGUERGQVBJX3R0X2NtYXA4X2NsYXNzX3JlYworI2RlZmluZSB0dF9jbWFwMTBfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDEwX2NsYXNzX3JlYworI2RlZmluZSB0dF9jbWFwMTJfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDEyX2NsYXNzX3JlYworI2RlZmluZSB0dF9jbWFwMTNfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDEzX2NsYXNzX3JlYworI2RlZmluZSB0dF9jbWFwMTRfY2xhc3NfcmVjIEZQREZBUElfdHRfY21hcDE0X2NsYXNzX3JlYworI2RlZmluZSBzZm50X21vZHVsZV9jbGFzcyBGUERGQVBJX3NmbnRfbW9kdWxlX2NsYXNzCisjZGVmaW5lIGZ0X2dyYXlzX3Jhc3RlciBGUERGQVBJX2Z0X2dyYXlzX3Jhc3RlcgorI2RlZmluZSBmdF9zbW9vdGhfcmVuZGVyZXJfY2xhc3MgRlBERkFQSV9mdF9zbW9vdGhfcmVuZGVyZXJfY2xhc3MKKyNkZWZpbmUgZnRfc21vb3RoX2xjZF9yZW5kZXJlcl9jbGFzcyBGUERGQVBJX2Z0X3Ntb290aF9sY2RfcmVuZGVyZXJfY2xhc3MKKyNkZWZpbmUgZnRfc21vb3RoX2xjZHZfcmVuZGVyZXJfY2xhc3MgRlBERkFQSV9mdF9zbW9vdGhfbGNkdl9yZW5kZXJlcl9jbGFzcworI2RlZmluZSB0dF9kZWZhdWx0X2dyYXBoaWNzX3N0YXRlIEZQREZBUElfdHRfZGVmYXVsdF9ncmFwaGljc19zdGF0ZQorI2RlZmluZSB0dF9kcml2ZXJfY2xhc3MgRlBERkFQSV90dF9kcml2ZXJfY2xhc3MKKyNkZWZpbmUgVFRfUnVuSW5zIEZQREZBUElfVFRfUnVuSW5zCisjZGVmaW5lIFRUX05ld19Db250ZXh0IEZQREZBUElfVFRfTmV3X0NvbnRleHQKKyNkZWZpbmUgdDFfZHJpdmVyX2NsYXNzIEZQREZBUElfdDFfZHJpdmVyX2NsYXNzCisjZGVmaW5lIHQxY2lkX2RyaXZlcl9jbGFzcyBGUERGQVBJX3QxY2lkX2RyaXZlcl9jbGFzcworI2RlZmluZSBGVF9HZXRfVHJhY2tfS2VybmluZyBGUERGQVBJX0ZUX0dldF9UcmFja19LZXJuaW5nCisjZGVmaW5lIEZUX01hdGNoX1NpemUgRlBERkFQSV9GVF9NYXRjaF9TaXplCisjZGVmaW5lIEZUX011bERpdl9Ob19Sb3VuZCBGUERGQVBJX0ZUX011bERpdl9Ob19Sb3VuZAorI2RlZmluZSBGVF9SZXF1ZXN0X01ldHJpY3MgRlBERkFQSV9GVF9SZXF1ZXN0X01ldHJpY3MKKyNkZWZpbmUgRlRfUmVxdWVzdF9TaXplIEZQREZBUElfRlRfUmVxdWVzdF9TaXplCisjZGVmaW5lIEZUX1NlbGVjdF9NZXRyaWNzIEZQREZBUElfRlRfU2VsZWN0X01ldHJpY3MKKyNkZWZpbmUgRlRfU2VsZWN0X1NpemUgRlBERkFQSV9GVF9TZWxlY3RfU2l6ZQorI2RlZmluZSBmdF9zeW50aGVzaXplX3ZlcnRpY2FsX21ldHJpY3MgRlBERkFQSV9mdF9zeW50aGVzaXplX3ZlcnRpY2FsX21ldHJpY3MKKyNkZWZpbmUgTmV3X1Byb2ZpbGUgRlBERkFQSV9OZXdfUHJvZmlsZQorI2RlZmluZSBFbmRfUHJvZmlsZSBGUERGQVBJX0VuZF9Qcm9maWxlCisjZGVmaW5lIEluc2VydF9ZX1R1cm4gRlBERkFQSV9JbnNlcnRfWV9UdXJuIAorI2RlZmluZSBTcGxpdF9Db25pYyBGUERGQVBJX1NwbGl0X0NvbmljICAKKyNkZWZpbmUgU3BsaXRfQ3ViaWMgRlBERkFQSV9TcGxpdF9DdWJpYworI2RlZmluZSBMaW5lX1VwIEZQREZBUElfTGluZV9VcCAKKyNkZWZpbmUgQmV6aWVyX1VwIEZQREZBUElfQmV6aWVyX1VwIAorI2RlZmluZSBCZXppZXJfRG93biBGUERGQVBJX0Jlemllcl9Eb3duIAorI2RlZmluZSBMaW5lX1RvIEZQREZBUElfTGluZV9UbworI2RlZmluZSBDb25pY19UbyBGUERGQVBJX0NvbmljX1RvIAorI2RlZmluZSBDdWJpY19UbyBGUERGQVBJX0N1YmljX1RvCisjZGVmaW5lIERlY29tcG9zZV9DdXJ2ZSBGUERGQVBJX0RlY29tcG9zZV9DdXJ2ZQorI2RlZmluZSBDb252ZXJ0X0dseXBoIEZQREZBUElfQ29udmVydF9HbHlwaCAKKyNkZWZpbmUgU29ydCBGUERGQVBJX1NvcnQgCisjZGVmaW5lIFZlcnRpY2FsX1N3ZWVwX0luaXQgRlBERkFQSV9WZXJ0aWNhbF9Td2VlcF9Jbml0IAorI2RlZmluZSBWZXJ0aWNhbF9Td2VlcF9TcGFuIEZQREZBUElfVmVydGljYWxfU3dlZXBfU3BhbiAKKyNkZWZpbmUgVmVydGljYWxfU3dlZXBfRHJvcCBGUERGQVBJX1ZlcnRpY2FsX1N3ZWVwX0Ryb3AgCisjZGVmaW5lIFZlcnRpY2FsX1N3ZWVwX1N0ZXAgRlBERkFQSV9WZXJ0aWNhbF9Td2VlcF9TdGVwIAorI2RlZmluZSBIb3Jpem9udGFsX1N3ZWVwX0luaXQgRlBERkFQSV9Ib3Jpem9udGFsX1N3ZWVwX0luaXQgCisjZGVmaW5lIEhvcml6b250YWxfU3dlZXBfU3BhbiBGUERGQVBJX0hvcml6b250YWxfU3dlZXBfU3BhbiAKKyNkZWZpbmUgSG9yaXpvbnRhbF9Td2VlcF9Ecm9wIEZQREZBUElfSG9yaXpvbnRhbF9Td2VlcF9Ecm9wIAorI2RlZmluZSBIb3Jpem9udGFsX1N3ZWVwX1N0ZXAgRlBERkFQSV9Ib3Jpem9udGFsX1N3ZWVwX1N0ZXAgCisjZGVmaW5lIERyYXdfU3dlZXAgRlBERkFQSV9EcmF3X1N3ZWVwIAorI2RlZmluZSBSZW5kZXJfU2luZ2xlX1Bhc3MgRlBERkFQSV9SZW5kZXJfU2luZ2xlX1Bhc3MgCisjZGVmaW5lIFJlbmRlcl9HbHlwaCBGUERGQVBJX1JlbmRlcl9HbHlwaCAgCisjZGVmaW5lIEZpbmFsaXplX1Byb2ZpbGVfVGFibGUgRlBERkFQSV9GaW5hbGl6ZV9Qcm9maWxlX1RhYmxlIAorI2RlZmluZSBJbnNOZXcgRlBERkFQSV9JbnNOZXcgCisjZGVmaW5lIERlbE9sZCBGUERGQVBJX0RlbE9sZAorI2RlZmluZSBGVF9NdWxGaXggRlBERkFQSV9GVF9NdWxGaXgKKyNkZWZpbmUgRlRfTWF0cml4X011bHRpcGx5X1NjYWxlZCBGUERGQVBJX0ZUX01hdHJpeF9NdWx0aXBseV9TY2FsZWQKKyNkZWZpbmUgRlRfVmVjdG9yX1RyYW5zZm9ybV9TY2FsZWQgRlBERkFQSV9GVF9WZWN0b3JfVHJhbnNmb3JtX1NjYWxlZAorI2RlZmluZSBmdF9jb3JuZXJfb3JpZW50YXRpb24gRlBERkFQSV9mdF9jb3JuZXJfb3JpZW50YXRpb24KKyNkZWZpbmUgZnRfY29ybmVyX2lzX2ZsYXQgRlBERkFQSV9mdF9jb3JuZXJfaXNfZmxhdAorI2RlZmluZSBGVF9HZXRfQ01hcF9Gb3JtYXQgRlBERkFQSV9GVF9HZXRfQ01hcF9Gb3JtYXQKKyNkZWZpbmUgZnRfbWVtX3N0cmNweW4gRlBERkFQSV9mdF9tZW1fc3RyY3B5bgorI2RlZmluZSBmdF9tZW1fZHVwIEZQREZBUElfZnRfbWVtX2R1cAorI2RlZmluZSBmdF9tZW1fc3RyZHVwIEZQREZBUElfZnRfbWVtX3N0cmR1cAorI2RlZmluZSBGVF9GYWNlX0dldENoYXJWYXJpYW50SXNEZWZhdWx0IEZQREZBUElfRlRfRmFjZV9HZXRDaGFyVmFyaWFudElzRGVmYXVsdAorI2RlZmluZSBGVF9GYWNlX0dldENoYXJzT2ZWYXJpYW50IEZQREZBUElfRlRfRmFjZV9HZXRDaGFyc09mVmFyaWFudAorI2RlZmluZSBGVF9GYWNlX0dldFZhcmlhbnRzT2ZDaGFyIEZQREZBUElfRlRfRmFjZV9HZXRWYXJpYW50c09mQ2hhcgorI2RlZmluZSBGVF9GYWNlX0dldFZhcmlhbnRTZWxlY3RvcnMgRlBERkFQSV9GVF9GYWNlX0dldFZhcmlhbnRTZWxlY3RvcnMKKyNkZWZpbmUgRlRfRmFjZV9HZXRDaGFyVmFyaWFudEluZGV4IEZQREZBUElfRlRfRmFjZV9HZXRDaGFyVmFyaWFudEluZGV4CisjZGVmaW5lIEZUX0dldF9BZHZhbmNlcyBGUERGQVBJX0ZUX0dldF9BZHZhbmNlcworI2RlZmluZSBGVF9HZXRfQWR2YW5jZSBGUERGQVBJX0ZUX0dldF9BZHZhbmNlCisjZGVmaW5lIEZUX0xpYnJhcnlfU2V0TGNkRmlsdGVyIEZQREZBUElfRlRfTGlicmFyeV9TZXRMY2RGaWx0ZXIKKyAKKyNlbmRpZiAvLyAhX0ZYX0ZSRUVUWVBFX0RPTlRfUkVOQU1FXwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTcxZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgKQEAgLTAsMCArMSw1OTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Y29uZmlnLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBTlNJLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA0LCAyMDA2LTIwMDgsIDIwMTAtMjAxMSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgaGVhZGVyIGZpbGUgY29udGFpbnMgYSBudW1iZXIgb2YgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdCBhcmUgdXNlZCAqLworICAvKiBieSB0aGUgcmVzdCBvZiB0aGUgZW5naW5lLiAgTW9zdCBvZiB0aGUgbWFjcm9zIGhlcmUgYXJlIGF1dG9tYXRpY2FsbHkgKi8KKyAgLyogZGV0ZXJtaW5lZCBhdCBjb21waWxlIHRpbWUsIGFuZCB5b3Ugc2hvdWxkIG5vdCBuZWVkIHRvIGNoYW5nZSBpdCB0byAgICovCisgIC8qIHBvcnQgRnJlZVR5cGUsIGV4Y2VwdCB0byBjb21waWxlIHRoZSBsaWJyYXJ5IHdpdGggYSBub24tQU5TSSAgICAgICAgICAqLworICAvKiBjb21waWxlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE5vdGUgaG93ZXZlciB0aGF0IGlmIHNvbWUgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucyBhcmUgbmVlZGVkLCB3ZSAgICAgICAqLworICAvKiBhZHZpc2UgeW91IHRvIHBsYWNlIGEgbW9kaWZpZWQgY29weSBpbiB5b3VyIGJ1aWxkIGRpcmVjdG9yeS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBidWlsZCBkaXJlY3RvcnkgaXMgdXN1YWxseSBgZnJlZXR5cGUvYnVpbGRzLzxzeXN0ZW0+JywgYW5kICAgICAgICAqLworICAvKiBjb250YWlucyBzeXN0ZW0tc3BlY2lmaWMgZmlsZXMgdGhhdCBhcmUgYWx3YXlzIGluY2x1ZGVkIGZpcnN0IHdoZW4gICAgKi8KKyAgLyogYnVpbGRpbmcgdGhlIGxpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIEFOU0kgdmVyc2lvbiBzaG91bGQgc3RheSBpbiBgaW5jbHVkZS9mcmVldHlwZS9jb25maWcnLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fRlRDT05GSUdfSF9fCisjZGVmaW5lIF9fRlRDT05GSUdfSF9fCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZ0b3B0aW9uLmgiCisjaW5jbHVkZSAiZnRzdGRsaWIuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICBQTEFURk9STS1TUEVDSUZJQyBDT05GSUdVUkFUSU9OIE1BQ1JPUyAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGVzZSBtYWNyb3MgY2FuIGJlIHRvZ2dsZWQgdG8gc3VpdCBhIHNwZWNpZmljIHN5c3RlbS4gIFRoZSBjdXJyZW50ICAgKi8KKyAgLyogb25lcyBhcmUgZGVmYXVsdHMgdXNlZCB0byBjb21waWxlIEZyZWVUeXBlIGluIGFuIEFOU0kgQyBlbnZpcm9ubWVudCAgICovCisgIC8qICgxNmJpdCBjb21waWxlcnMgYXJlIGFsc28gc3VwcG9ydGVkKS4gIENvcHkgdGhpcyBmaWxlIHRvIHlvdXIgb3duICAgICAqLworICAvKiBgZnJlZXR5cGUvYnVpbGRzLzxzeXN0ZW0+JyBkaXJlY3RvcnksIGFuZCBlZGl0IGl0IHRvIHBvcnQgdGhlIGVuZ2luZS4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyogVGhlcmUgYXJlIHN5c3RlbXMgKGxpa2UgdGhlIFRleGFzIEluc3RydW1lbnRzICdDNTR4KSB3aGVyZSBhIGBjaGFyJyAqLworICAvKiBoYXMgMTYgYml0cy4gIEFOU0kgQyBzYXlzIHRoYXQgc2l6ZW9mKGNoYXIpIGlzIGFsd2F5cyAxLiAgU2luY2UgYW4gICovCisgIC8qIGBpbnQnIGhhcyAxNiBiaXRzIGFsc28gZm9yIHRoaXMgc3lzdGVtLCBzaXplb2YoaW50KSBnaXZlcyAxIHdoaWNoICAgKi8KKyAgLyogaXMgcHJvYmFibHkgdW5leHBlY3RlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIGBDSEFSX0JJVCcgKGRlZmluZWQgaW4gbGltaXRzLmgpIGdpdmVzIHRoZSBudW1iZXIgb2YgYml0cyBpbiBhICAgICAgKi8KKyAgLyogYGNoYXInIHR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjaWZuZGVmIEZUX0NIQVJfQklUCisjZGVmaW5lIEZUX0NIQVJfQklUICBDSEFSX0JJVAorI2VuZGlmCisKKworICAvKiBUaGUgc2l6ZSBvZiBhbiBgaW50JyB0eXBlLiAgKi8KKyNpZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJTlRfTUFYID09IDB4RkZGRlVMCisjZGVmaW5lIEZUX1NJWkVPRl9JTlQgICgxNiAvIEZUX0NIQVJfQklUKQorI2VsaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUlOVF9NQVggPT0gMHhGRkZGRkZGRlVMCisjZGVmaW5lIEZUX1NJWkVPRl9JTlQgICgzMiAvIEZUX0NIQVJfQklUKQorI2VsaWYgRlRfVUlOVF9NQVggPiAweEZGRkZGRkZGVUwgJiYgRlRfVUlOVF9NQVggPT0gMHhGRkZGRkZGRkZGRkZGRkZGVUwKKyNkZWZpbmUgRlRfU0laRU9GX0lOVCAgKDY0IC8gRlRfQ0hBUl9CSVQpCisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBzaXplIG9mIGBpbnQnIHR5cGUhIgorI2VuZGlmCisKKyAgLyogVGhlIHNpemUgb2YgYSBgbG9uZycgdHlwZS4gIEEgZml2ZS1ieXRlIGBsb25nJyAoYXMgdXNlZCBlLmcuIG9uIHRoZSAqLworICAvKiBETTY0MikgaXMgcmVjb2duaXplZCBidXQgYXZvaWRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxPTkdfTUFYID09IDB4RkZGRkZGRkZVTAorI2RlZmluZSBGVF9TSVpFT0ZfTE9ORyAgKDMyIC8gRlRfQ0hBUl9CSVQpCisjZWxpZiBGVF9VTE9OR19NQVggPiAweEZGRkZGRkZGVUwgJiYgRlRfVUxPTkdfTUFYID09IDB4RkZGRkZGRkZGRlVMCisjZGVmaW5lIEZUX1NJWkVPRl9MT05HICAoMzIgLyBGVF9DSEFSX0JJVCkKKyNlbGlmIEZUX1VMT05HX01BWCA+IDB4RkZGRkZGRkZVTCAmJiBGVF9VTE9OR19NQVggPT0gMHhGRkZGRkZGRkZGRkZGRkZGVUwKKyNkZWZpbmUgRlRfU0laRU9GX0xPTkcgICg2NCAvIEZUX0NIQVJfQklUKQorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgc2l6ZSBvZiBgbG9uZycgdHlwZSEiCisjZW5kaWYKKworCisgIC8qIEZUX1VOVVNFRCBpcyBhIG1hY3JvIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBhIGdpdmVuIHBhcmFtZXRlciBpcyBub3QgICovCisgIC8qIHVzZWQgLS0gdGhpcyBpcyBvbmx5IHVzZWQgdG8gZ2V0IHJpZCBvZiB1bnBsZWFzYW50IGNvbXBpbGVyIHdhcm5pbmdzICovCisjaWZuZGVmIEZUX1VOVVNFRAorI2RlZmluZSBGVF9VTlVTRUQoIGFyZyApICAoIChhcmcpID0gKGFyZykgKQorI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgQVVUT01BVElDIENPTkZJR1VSQVRJT04gTUFDUk9TICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlc2UgbWFjcm9zIGFyZSBjb21wdXRlZCBmcm9tIHRoZSBvbmVzIGRlZmluZWQgYWJvdmUuICBEb24ndCB0b3VjaCAgICovCisgIC8qIHRoZWlyIGRlZmluaXRpb24sIHVubGVzcyB5b3Uga25vdyBwcmVjaXNlbHkgd2hhdCB5b3UgYXJlIGRvaW5nLiAgTm8gICAqLworICAvKiBwb3J0ZXIgc2hvdWxkIG5lZWQgdG8gbWVzcyB3aXRoIHRoZW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBNYWMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhpcyBpcyB0aGUgb25seSBuZWNlc3NhcnkgY2hhbmdlLCBzbyBpdCBpcyBkZWZpbmVkIGhlcmUgaW5zdGVhZCAgICAqLworICAvKiAgIHByb3ZpZGluZyBhIG5ldyBjb25maWd1cmF0aW9uIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWYgZGVmaW5lZCggX19BUFBMRV9fICkgfHwgKCBkZWZpbmVkKCBfX01XRVJLU19fICkgJiYgZGVmaW5lZCggbWFjaW50b3NoICkgKQorICAvKiBubyBDYXJib24gZnJhbWV3b3JrcyBmb3IgNjRiaXQgMTAuNC54ICovCisgIC8qIEF2YWlsYWJpbGl0eU1hY3Jvcy5oIGlzIGF2YWlsYWJsZSBzaW5jZSBNYWMgT1MgWCAxMC4yLCAgICAgICAgKi8KKyAgLyogc28gZ3Vlc3MgdGhlIHN5c3RlbSB2ZXJzaW9uIGJ5IG1heGltdW0gZXJybm8gYmVmb3JlIGluY2x1c2lvbiAqLworI2luY2x1ZGUgPGVycm5vLmg+CisjaWZkZWYgRUNBTkNFTEVEIC8qIGRlZmluZWQgc2luY2UgMTAuMiAqLworI2luY2x1ZGUgIkF2YWlsYWJpbGl0eU1hY3Jvcy5oIgorI2VuZGlmCisjaWYgZGVmaW5lZCggX19MUDY0X18gKSAmJiBcCisgICAgKCBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSBNQUNfT1NfWF9WRVJTSU9OXzEwXzQgKQorI3VuZGVmIEZUX01BQ0lOVE9TSAorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoIF9fU0NfXyApIHx8IGRlZmluZWQoIF9fTVJDX18gKQorICAvKiBDbGFzc2ljIE1hY09TIGNvbXBpbGVycyAqLworI2luY2x1ZGUgIkNvbmRpdGlvbmFsTWFjcm9zLmgiCisjaWYgVEFSR0VUX09TX01BQworI2RlZmluZSBGVF9NQUNJTlRPU0ggMQorI2VuZGlmCisKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmFzaWNfdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ludDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgYSAxNmJpdCBzaWduZWQgaW50ZWdlciB0eXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzaWduZWQgc2hvcnQgIEZUX0ludDE2OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVUludDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciBhIDE2Yml0IHVuc2lnbmVkIGludGVnZXIgdHlwZS4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICBGVF9VSW50MTY7CisKKyAgLyogKi8KKworCisgIC8qIHRoaXMgI2lmIDAgLi4uICNlbmRpZiBjbGF1c2UgaXMgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMgKi8KKyNpZiAwCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfSW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciBhIDMyYml0IHNpZ25lZCBpbnRlZ2VyIHR5cGUuICBUaGUgc2l6ZSBkZXBlbmRzIG9uICAgICovCisgIC8qICAgIHRoZSBjb25maWd1cmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzaWduZWQgWFhYICBGVF9JbnQzMjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VJbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciBhIDMyYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZS4gIFRoZSBzaXplIGRlcGVuZHMgb24gICovCisgIC8qICAgIHRoZSBjb25maWd1cmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB1bnNpZ25lZCBYWFggIEZUX1VJbnQzMjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ludDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciBhIDY0Yml0IHNpZ25lZCBpbnRlZ2VyIHR5cGUuICBUaGUgc2l6ZSBkZXBlbmRzIG9uICAgICovCisgIC8qICAgIHRoZSBjb25maWd1cmF0aW9uLiAgT25seSBkZWZpbmVkIGlmIHRoZXJlIGlzIHJlYWwgNjRiaXQgc3VwcG9ydDsgICAqLworICAvKiAgICBvdGhlcndpc2UsIGl0IGdldHMgZW11bGF0ZWQgd2l0aCBhIHN0cnVjdHVyZSAoaWYgbmVjZXNzYXJ5KS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIFhYWCAgRlRfSW50NjQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VSW50NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgYSA2NGJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUuICBUaGUgc2l6ZSBkZXBlbmRzIG9uICAqLworICAvKiAgICB0aGUgY29uZmlndXJhdGlvbi4gIE9ubHkgZGVmaW5lZCBpZiB0aGVyZSBpcyByZWFsIDY0Yml0IHN1cHBvcnQ7ICAgKi8KKyAgLyogICAgb3RoZXJ3aXNlLCBpdCBnZXRzIGVtdWxhdGVkIHdpdGggYSBzdHJ1Y3R1cmUgKGlmIG5lY2Vzc2FyeSkuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHVuc2lnbmVkIFhYWCAgRlRfVUludDY0OworCisgIC8qICovCisKKyNlbmRpZgorCisjaWYgRlRfU0laRU9GX0lOVCA9PSAoMzIgLyBGVF9DSEFSX0JJVCkKKworICB0eXBlZGVmIHNpZ25lZCBpbnQgICAgICBGVF9JbnQzMjsKKyAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgRlRfVUludDMyOworCisjZWxpZiBGVF9TSVpFT0ZfTE9ORyA9PSAoMzIgLyBGVF9DSEFSX0JJVCkKKworICB0eXBlZGVmIHNpZ25lZCBsb25nICAgICBGVF9JbnQzMjsKKyAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgRlRfVUludDMyOworCisjZWxzZQorI2Vycm9yICJubyAzMmJpdCB0eXBlIGZvdW5kIC0tIHBsZWFzZSBjaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZXMiCisjZW5kaWYKKworCisgIC8qIGxvb2sgdXAgYW4gaW50ZWdlciB0eXBlIHRoYXQgaXMgYXQgbGVhc3QgMzIgYml0cyAqLworI2lmIEZUX1NJWkVPRl9JTlQgPj0gKDMyIC8gRlRfQ0hBUl9CSVQpCisKKyAgdHlwZWRlZiBpbnQgICAgICAgICAgICBGVF9GYXN0OworICB0eXBlZGVmIHVuc2lnbmVkIGludCAgIEZUX1VGYXN0OworCisjZWxpZiBGVF9TSVpFT0ZfTE9ORyA+PSAoMzIgLyBGVF9DSEFSX0JJVCkKKworICB0eXBlZGVmIGxvbmcgICAgICAgICAgIEZUX0Zhc3Q7CisgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgRlRfVUZhc3Q7CisKKyNlbmRpZgorCisKKyAgLyogZGV0ZXJtaW5lIHdoZXRoZXIgd2UgaGF2ZSBhIDY0LWJpdCBpbnQgdHlwZSBmb3IgcGxhdGZvcm1zIHdpdGhvdXQgKi8KKyAgLyogQXV0b2NvbmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZiBGVF9TSVpFT0ZfTE9ORyA9PSAoNjQgLyBGVF9DSEFSX0JJVCkKKworICAvKiBGVF9MT05HNjQgbXVzdCBiZSBkZWZpbmVkIGlmIGEgNjQtYml0IHR5cGUgaXMgYXZhaWxhYmxlICovCisjZGVmaW5lIEZUX0xPTkc2NAorI2RlZmluZSBGVF9JTlQ2NCAgIGxvbmcKKyNkZWZpbmUgRlRfVUlOVDY0ICB1bnNpZ25lZCBsb25nCisKKyNlbGlmIGRlZmluZWQoIF9NU0NfVkVSICkgJiYgX01TQ19WRVIgPj0gOTAwICAvKiBWaXN1YWwgQysrIChhbmQgSW50ZWwgQysrKSAqLworCisgIC8qIHRoaXMgY29tcGlsZXIgcHJvdmlkZXMgdGhlIF9faW50NjQgdHlwZSAqLworI2RlZmluZSBGVF9MT05HNjQKKyNkZWZpbmUgRlRfSU5UNjQgICBfX2ludDY0CisjZGVmaW5lIEZUX1VJTlQ2NCAgdW5zaWduZWQgX19pbnQ2NAorCisjZWxpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAgLyogQm9ybGFuZCBDKysgKi8KKworICAvKiBYWFhYOiBXZSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIHZhbHVlIG9mIF9fQk9STEFORENfXyBpbiBvcmRlciAqLworICAvKiAgICAgICB0byB0ZXN0IHRoZSBjb21waWxlciB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIC8qIHRoaXMgY29tcGlsZXIgcHJvdmlkZXMgdGhlIF9faW50NjQgdHlwZSAqLworI2RlZmluZSBGVF9MT05HNjQKKyNkZWZpbmUgRlRfSU5UNjQgICBfX2ludDY0CisjZGVmaW5lIEZUX1VJTlQ2NCAgdW5zaWduZWQgX19pbnQ2NAorCisjZWxpZiBkZWZpbmVkKCBfX1dBVENPTUNfXyApICAgLyogV2F0Y29tIEMrKyAqLworCisgIC8qIFdhdGNvbSBkb2Vzbid0IHByb3ZpZGUgNjQtYml0IGRhdGEgdHlwZXMgKi8KKworI2VsaWYgZGVmaW5lZCggX19NV0VSS1NfXyApICAgIC8qIE1ldHJvd2Vya3MgQ29kZVdhcnJpb3IgKi8KKworI2RlZmluZSBGVF9MT05HNjQKKyNkZWZpbmUgRlRfSU5UNjQgICBsb25nIGxvbmcgaW50CisjZGVmaW5lIEZUX1VJTlQ2NCAgdW5zaWduZWQgbG9uZyBsb25nIGludAorCisjZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApCisKKyAgLyogR0NDIHByb3ZpZGVzIHRoZSBgbG9uZyBsb25nJyB0eXBlICovCisjZGVmaW5lIEZUX0xPTkc2NAorI2RlZmluZSBGVF9JTlQ2NCAgIGxvbmcgbG9uZyBpbnQKKyNkZWZpbmUgRlRfVUlOVDY0ICB1bnNpZ25lZCBsb25nIGxvbmcgaW50CisKKyNlbmRpZiAvKiBGVF9TSVpFT0ZfTE9ORyA9PSAoNjQgLyBGVF9DSEFSX0JJVCkgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQSA2NC1iaXQgZGF0YSB0eXBlIHdpbGwgY3JlYXRlIGNvbXBpbGF0aW9uIHByb2JsZW1zIGlmIHlvdSBjb21waWxlICAgICovCisgIC8qIGluIHN0cmljdCBBTlNJIG1vZGUuICBUbyBhdm9pZCB0aGVtLCB3ZSBkaXNhYmxlIGl0cyB1c2UgaWYgX19TVERDX18gICAqLworICAvKiBpcyBkZWZpbmVkLiAgWW91IGNhbiBob3dldmVyIGlnbm9yZSB0aGlzIHJ1bGUgYnkgZGVmaW5pbmcgdGhlICAgICAgICAgKi8KKyAgLyogRlRfQ09ORklHX09QVElPTl9GT1JDRV9JTlQ2NCBjb25maWd1cmF0aW9uIG1hY3JvLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmIGRlZmluZWQoIEZUX0xPTkc2NCApICYmICFkZWZpbmVkKCBGVF9DT05GSUdfT1BUSU9OX0ZPUkNFX0lOVDY0ICkKKworI2lmZGVmIF9fU1REQ19fCisKKyAgLyogdW5kZWZpbmUgdGhlIDY0LWJpdCBtYWNyb3MgaW4gc3RyaWN0IEFOU0kgY29tcGlsYXRpb24gbW9kZSAqLworI3VuZGVmIEZUX0xPTkc2NAorI3VuZGVmIEZUX0lOVDY0CisKKyNlbmRpZiAvKiBfX1NURENfXyAqLworCisjZW5kaWYgLyogRlRfTE9ORzY0ICYmICFGVF9DT05GSUdfT1BUSU9OX0ZPUkNFX0lOVDY0ICovCisKKyNpZmRlZiBGVF9MT05HNjQKKyAgdHlwZWRlZiBGVF9JTlQ2NCAgIEZUX0ludDY0OworICB0eXBlZGVmIEZUX1VJTlQ2NCAgRlRfVUludDY0OworI2VuZGlmCisKKworI2RlZmluZSBGVF9CRUdJTl9TVE1OVCAgZG8geworI2RlZmluZSBGVF9FTkRfU1RNTlQgICAgfSB3aGlsZSAoIDAgKQorI2RlZmluZSBGVF9EVU1NWV9TVE1OVCAgRlRfQkVHSU5fU1RNTlQgRlRfRU5EX1NUTU5UCisKKworI2lmbmRlZiAgRlRfQ09ORklHX09QVElPTl9OT19BU1NFTUJMRVIKKyAgLyogUHJvdmlkZSBhc3NlbWJsZXIgZnJhZ21lbnRzIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBmdW5jdGlvbnMuICovCisgIC8qIFRoZXNlIG11c3QgYmUgZGVmaW5lZCBgc3RhdGljIF9faW5saW5lX18nIHdpdGggR0NDLiAgICAgICAgICAgICAqLworCisgIC8qKkpvaG5zb24gYWRkICFkZWZpbmVkKCBfX3RodW1iX18gKSovCisjaWYgKGRlZmluZWQoIF9fQ0NfQVJNICkgfHwgZGVmaW5lZCggX19BUk1DQ19fICkpJiYgIWRlZmluZWQoIF9fdGh1bWJfXyApICAvKiBSVkNUICovCisjZGVmaW5lIEZUX01VTEZJWF9BU1NFTUJMRVIgIEZUX011bEZpeF9hcm0KKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBzdGF0aWMgX19pbmxpbmUgRlRfSW50MzIKKyAgRlRfTXVsRml4X2FybSggRlRfSW50MzIgIGEsCisgICAgICAgICAgICAgICAgIEZUX0ludDMyICBiICkKKyAgeworICAgIHJlZ2lzdGVyIEZUX0ludDMyICB0LCB0MjsKKworCisgICAgX19hc20KKyAgICB7CisgICAgICBzbXVsbCB0MiwgdCwgIGIsICBhICAgICAgICAgICAvKiAobG89dDIsaGk9dCkgPSBhKmIgKi8KKyAgICAgIG1vdiAgIGEsICB0LCAgYXNyICMzMSAgICAgICAgIC8qIGEgICA9IChoaSA+PiAzMSkgKi8KKyAgICAgIGFkZCAgIGEsICBhLCAgIzB4ODAwMCAgICAgICAgIC8qIGEgICs9IDB4ODAwMCAqLworICAgICAgYWRkcyAgdDIsIHQyLCBhICAgICAgICAgICAgICAgLyogdDIgKz0gYSAqLworICAgICAgYWRjICAgdCwgIHQsICAjMCAgICAgICAgICAgICAgLyogdCAgKz0gY2FycnkgKi8KKyAgICAgIG1vdiAgIGEsICB0MiwgbHNyICMxNiAgICAgICAgIC8qIGEgICA9IHQyID4+IDE2ICovCisgICAgICBvcnIgICBhLCAgYSwgIHQsICBsc2wgIzE2ICAgICAvKiBhICB8PSB0IDw8IDE2ICovCisgICAgfQorICAgIHJldHVybiBhOworICB9CisKKyNlbmRpZiAvKiBfX0NDX0FSTSB8fCBfX0FSTUNDX18gKi8KKworCisjaWZkZWYgX19HTlVDX18KKworI2lmIGRlZmluZWQoIF9fYXJtX18gKSAmJiAhZGVmaW5lZCggX190aHVtYl9fICkgICAgJiYgXAorICAgICEoIGRlZmluZWQoIF9fQ0NfQVJNICkgfHwgZGVmaW5lZCggX19BUk1DQ19fICkgKQorI2RlZmluZSBGVF9NVUxGSVhfQVNTRU1CTEVSICBGVF9NdWxGaXhfYXJtCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgc3RhdGljIF9faW5saW5lX18gRlRfSW50MzIKKyAgRlRfTXVsRml4X2FybSggRlRfSW50MzIgIGEsCisgICAgICAgICAgICAgICAgIEZUX0ludDMyICBiICkKKyAgeworICAgIHJlZ2lzdGVyIEZUX0ludDMyICB0LCB0MjsKKworCisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgInNtdWxsICAlMSwgJTIsICU0LCAlM1xuXHQiICAgICAgIC8qIChsbz0lMSxoaT0lMikgPSBhKmIgKi8KKyAgICAgICJtb3YgICAgJTAsICUyLCBhc3IgIzMxXG5cdCIgICAgICAvKiAlMCAgPSAoaGkgPj4gMzEpICovCisgICAgICAiYWRkICAgICUwLCAlMCwgIzB4ODAwMFxuXHQiICAgICAgLyogJTAgKz0gMHg4MDAwICovCisgICAgICAiYWRkcyAgICUxLCAlMSwgJTBcblx0IiAgICAgICAgICAgLyogJTEgKz0gJTAgKi8KKyAgICAgICJhZGMgICAgJTIsICUyLCAjMFxuXHQiICAgICAgICAgICAvKiAlMiArPSBjYXJyeSAqLworICAgICAgIm1vdiAgICAlMCwgJTEsIGxzciAjMTZcblx0IiAgICAgIC8qICUwICA9ICUxID4+IDE2ICovCisgICAgICAib3JyICAgICUwLCAlMCwgJTIsIGxzbCAjMTZcblx0IiAgLyogJTAgfD0gJTIgPDwgMTYgKi8KKyAgICAgIDogIj1yIihhKSwgIj0mciIodDIpLCAiPSZyIih0KQorICAgICAgOiAiciIoYSksICJyIihiKQorICAgICAgOiAiY2MiICk7CisgICAgcmV0dXJuIGE7CisgIH0KKworI2VuZGlmIC8qIF9fYXJtX18gJiYgIV9fdGh1bWJfXyAmJiAhKCBfX0NDX0FSTSB8fCBfX0FSTUNDX18gKSAqLworCisjaWYgZGVmaW5lZCggX19pMzg2X18gKQorI2RlZmluZSBGVF9NVUxGSVhfQVNTRU1CTEVSICBGVF9NdWxGaXhfaTM4NgorCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIHN0YXRpYyBfX2lubGluZV9fIEZUX0ludDMyCisgIEZUX011bEZpeF9pMzg2KCBGVF9JbnQzMiAgYSwKKyAgICAgICAgICAgICAgICAgIEZUX0ludDMyICBiICkKKyAgeworICAgIHJlZ2lzdGVyIEZUX0ludDMyICByZXN1bHQ7CisKKworICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICJpbXVsICAlJWVkeFxuIgorICAgICAgIm1vdmwgICUlZWR4LCAlJWVjeFxuIgorICAgICAgInNhcmwgICQzMSwgJSVlY3hcbiIKKyAgICAgICJhZGRsICAkMHg4MDAwLCAlJWVjeFxuIgorICAgICAgImFkZGwgICUlZWN4LCAlJWVheFxuIgorICAgICAgImFkY2wgICQwLCAlJWVkeFxuIgorICAgICAgInNocmwgICQxNiwgJSVlYXhcbiIKKyAgICAgICJzaGxsICAkMTYsICUlZWR4XG4iCisgICAgICAiYWRkbCAgJSVlZHgsICUlZWF4XG4iCisgICAgICA6ICI9YSIocmVzdWx0KSwgIj1kIihiKQorICAgICAgOiAiYSIoYSksICJkIihiKQorICAgICAgOiAiJWVjeCIsICJjYyIgKTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyNlbmRpZiAvKiBpMzg2ICovCisKKyNlbmRpZiAvKiBfX0dOVUNfXyAqLworCisKKyNpZmRlZiBfTVNDX1ZFUiAvKiBWaXN1YWwgQysrICovCisKKyNpZmRlZiBfTV9JWDg2CisKKyNkZWZpbmUgRlRfTVVMRklYX0FTU0VNQkxFUiAgRlRfTXVsRml4X2kzODYKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBzdGF0aWMgX19pbmxpbmUgRlRfSW50MzIKKyAgRlRfTXVsRml4X2kzODYoIEZUX0ludDMyICBhLAorICAgICAgICAgICAgICAgICAgRlRfSW50MzIgIGIgKQorICB7CisgICAgcmVnaXN0ZXIgRlRfSW50MzIgIHJlc3VsdDsKKworICAgIF9fYXNtCisgICAgeworICAgICAgbW92IGVheCwgYQorICAgICAgbW92IGVkeCwgYgorICAgICAgaW11bCBlZHgKKyAgICAgIG1vdiBlY3gsIGVkeAorICAgICAgc2FyIGVjeCwgMzEKKyAgICAgIGFkZCBlY3gsIDgwMDBoCisgICAgICBhZGQgZWF4LCBlY3gKKyAgICAgIGFkYyBlZHgsIDAKKyAgICAgIHNociBlYXgsIDE2CisgICAgICBzaGwgZWR4LCAxNgorICAgICAgYWRkIGVheCwgZWR4CisgICAgICBtb3YgcmVzdWx0LCBlYXgKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisjZW5kaWYgLyogX01fSVg4NiAqLworCisjZW5kaWYgLyogX01TQ19WRVIgKi8KKworI2VuZGlmIC8qICFGVF9DT05GSUdfT1BUSU9OX05PX0FTU0VNQkxFUiAqLworCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOTElORV9NVUxGSVgKKyNpZmRlZiBGVF9NVUxGSVhfQVNTRU1CTEVSCisjZGVmaW5lIEZUX01VTEZJWF9JTkxJTkVEICBGVF9NVUxGSVhfQVNTRU1CTEVSCisjZW5kaWYKKyNlbmRpZgorCisKKyNpZmRlZiBGVF9NQUtFX09QVElPTl9TSU5HTEVfT0JKRUNUCisKKyNkZWZpbmUgRlRfTE9DQUwoIHggKSAgICAgIHN0YXRpYyAgeAorI2RlZmluZSBGVF9MT0NBTF9ERUYoIHggKSAgc3RhdGljICB4CisKKyNlbHNlCisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9MT0NBTCggeCApICAgICAgZXh0ZXJuICJDIiAgeAorI2RlZmluZSBGVF9MT0NBTF9ERUYoIHggKSAgZXh0ZXJuICJDIiAgeAorI2Vsc2UKKyNkZWZpbmUgRlRfTE9DQUwoIHggKSAgICAgIGV4dGVybiAgeAorI2RlZmluZSBGVF9MT0NBTF9ERUYoIHggKSAgeAorI2VuZGlmCisKKyNlbmRpZiAvKiBGVF9NQUtFX09QVElPTl9TSU5HTEVfT0JKRUNUICovCisKKworI2lmbmRlZiBGVF9CQVNFCisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9CQVNFKCB4ICkgIGV4dGVybiAiQyIgIHgKKyNlbHNlCisjZGVmaW5lIEZUX0JBU0UoIHggKSAgZXh0ZXJuICB4CisjZW5kaWYKKworI2VuZGlmIC8qICFGVF9CQVNFICovCisKKworI2lmbmRlZiBGVF9CQVNFX0RFRgorCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfQkFTRV9ERUYoIHggKSAgeAorI2Vsc2UKKyNkZWZpbmUgRlRfQkFTRV9ERUYoIHggKSAgeAorI2VuZGlmCisKKyNlbmRpZiAvKiAhRlRfQkFTRV9ERUYgKi8KKworCisjaWZuZGVmIEZUX0VYUE9SVAorCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfRVhQT1JUKCB4ICkgIGV4dGVybiAiQyIgIHgKKyNlbHNlCisjZGVmaW5lIEZUX0VYUE9SVCggeCApICBleHRlcm4gIHgKKyNlbmRpZgorCisjZW5kaWYgLyogIUZUX0VYUE9SVCAqLworCisKKyNpZm5kZWYgRlRfRVhQT1JUX0RFRgorCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfRVhQT1JUX0RFRiggeCApICBleHRlcm4gIkMiICB4CisjZWxzZQorI2RlZmluZSBGVF9FWFBPUlRfREVGKCB4ICkgIGV4dGVybiAgeAorI2VuZGlmCisKKyNlbmRpZiAvKiAhRlRfRVhQT1JUX0RFRiAqLworCisKKyNpZm5kZWYgRlRfRVhQT1JUX1ZBUgorCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfRVhQT1JUX1ZBUiggeCApICBleHRlcm4gIkMiICB4CisjZWxzZQorI2RlZmluZSBGVF9FWFBPUlRfVkFSKCB4ICkgIGV4dGVybiAgeAorI2VuZGlmCisKKyNlbmRpZiAvKiAhRlRfRVhQT1JUX1ZBUiAqLworCisgIC8qIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGFyZSBuZWVkZWQgdG8gY29tcGlsZSB0aGUgbGlicmFyeSB3aXRoIGEgICAqLworICAvKiBDKysgY29tcGlsZXIgYW5kIHdpdGggMTZiaXQgY29tcGlsZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgLyogVGhpcyBpcyBzcGVjaWFsLiAgV2l0aGluIEMrKywgeW91IG11c3Qgc3BlY2lmeSBgZXh0ZXJuICJDIicgZm9yICovCisgIC8qIGZ1bmN0aW9ucyB3aGljaCBhcmUgdXNlZCB2aWEgZnVuY3Rpb24gcG9pbnRlcnMsIGFuZCB5b3UgYWxzbyAgICAqLworICAvKiBtdXN0IGRvIHRoYXQgZm9yIHN0cnVjdHVyZXMgd2hpY2ggY29udGFpbiBmdW5jdGlvbiBwb2ludGVycyB0byAgKi8KKyAgLyogYXNzdXJlIEMgbGlua2FnZSAtLSBpdCdzIG5vdCBwb3NzaWJsZSB0byBoYXZlIChsb2NhbCkgYW5vbnltb3VzICovCisgIC8qIGZ1bmN0aW9ucyB3aGljaCBhcmUgYWNjZXNzZWQgYnkgKGdsb2JhbCkgZnVuY3Rpb24gcG9pbnRlcnMuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZUX0NBTExCQUNLX0RFRiBpcyB1c2VkIHRvIF9kZWZpbmVfIGEgY2FsbGJhY2sgZnVuY3Rpb24uICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRlRfQ0FMTEJBQ0tfVEFCTEUgaXMgdXNlZCB0byBfZGVjbGFyZV8gYSBjb25zdGFudCB2YXJpYWJsZSB0aGF0ICovCisgIC8qIGNvbnRhaW5zIHBvaW50ZXJzIHRvIGNhbGxiYWNrIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRlRfQ0FMTEJBQ0tfVEFCTEVfREVGIGlzIHVzZWQgdG8gX2RlZmluZV8gYSBjb25zdGFudCB2YXJpYWJsZSAgICovCisgIC8qIHRoYXQgY29udGFpbnMgcG9pbnRlcnMgdG8gY2FsbGJhY2sgZnVuY3Rpb25zLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNvbWUgMTZiaXQgY29tcGlsZXJzIGhhdmUgdG8gcmVkZWZpbmUgdGhlc2UgbWFjcm9zIHRvIGluc2VydCAgICAqLworICAvKiB0aGUgaW5mYW1vdXMgYF9jZGVjbCcgb3IgYF9fZmFzdGNhbGwnIGRlY2xhcmF0aW9ucy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEZUX0NBTExCQUNLX0RFRgorI2lmZGVmIF9fY3BsdXNwbHVzCisjZGVmaW5lIEZUX0NBTExCQUNLX0RFRiggeCApICBleHRlcm4gIkMiICB4CisjZWxzZQorI2RlZmluZSBGVF9DQUxMQkFDS19ERUYoIHggKSAgc3RhdGljICB4CisjZW5kaWYKKyNlbmRpZiAvKiBGVF9DQUxMQkFDS19ERUYgKi8KKworI2lmbmRlZiBGVF9DQUxMQkFDS19UQUJMRQorI2lmZGVmIF9fY3BsdXNwbHVzCisjZGVmaW5lIEZUX0NBTExCQUNLX1RBQkxFICAgICAgZXh0ZXJuICJDIgorI2RlZmluZSBGVF9DQUxMQkFDS19UQUJMRV9ERUYgIGV4dGVybiAiQyIKKyNlbHNlCisjZGVmaW5lIEZUX0NBTExCQUNLX1RBQkxFICAgICAgZXh0ZXJuCisjZGVmaW5lIEZUX0NBTExCQUNLX1RBQkxFX0RFRiAgLyogbm90aGluZyAqLworI2VuZGlmCisjZW5kaWYgLyogRlRfQ0FMTEJBQ0tfVEFCTEUgKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fRlRDT05GSUdfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NzkxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaApAQCAtMCwwICsxLDgzMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRoZWFkZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEJ1aWxkIG1hY3JvcyBvZiB0aGUgRnJlZVR5cGUgMiBsaWJyYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDgsIDIwMTAsIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0ZUX0hFQURFUl9IX18KKyNkZWZpbmUgX19GVF9IRUFERVJfSF9fCisKKworICAvKkAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CRUdJTl9IRUFERVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIG1hY3JvIGlzIHVzZWQgaW4gYXNzb2NpYXRpb24gd2l0aCBARlRfRU5EX0hFQURFUiBpbiBoZWFkZXIgICAgKi8KKyAgLyogICAgZmlsZXMgdG8gZW5zdXJlIHRoYXQgdGhlIGRlY2xhcmF0aW9ucyB3aXRoaW4gYXJlIHByb3Blcmx5ICAgICAgICAgICovCisgIC8qICAgIGVuY2Fwc3VsYXRlZCBpbiBhbiBgZXh0ZXJuICJDIiB7IC4uIH0nIGJsb2NrIHdoZW4gaW5jbHVkZWQgZnJvbSBhICAqLworICAvKiAgICBDKysgY29tcGlsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfQkVHSU5fSEVBREVSICBleHRlcm4gIkMiIHsKKyNlbHNlCisjZGVmaW5lIEZUX0JFR0lOX0hFQURFUiAgLyogbm90aGluZyAqLworI2VuZGlmCisKKworICAvKkAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9FTkRfSEVBREVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIG1hY3JvIGlzIHVzZWQgaW4gYXNzb2NpYXRpb24gd2l0aCBARlRfQkVHSU5fSEVBREVSIGluIGhlYWRlciAgKi8KKyAgLyogICAgZmlsZXMgdG8gZW5zdXJlIHRoYXQgdGhlIGRlY2xhcmF0aW9ucyB3aXRoaW4gYXJlIHByb3Blcmx5ICAgICAgICAgICovCisgIC8qICAgIGVuY2Fwc3VsYXRlZCBpbiBhbiBgZXh0ZXJuICJDIiB7IC4uIH0nIGJsb2NrIHdoZW4gaW5jbHVkZWQgZnJvbSBhICAqLworICAvKiAgICBDKysgY29tcGlsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfRU5EX0hFQURFUiAgfQorI2Vsc2UKKyNkZWZpbmUgRlRfRU5EX0hFQURFUiAgLyogbm90aGluZyAqLworI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEFsaWFzZXMgZm9yIHRoZSBGcmVlVHlwZSAyIHB1YmxpYyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVhZGVyX2ZpbGVfbWFjcm9zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSGVhZGVyIEZpbGUgTWFjcm9zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTWFjcm8gZGVmaW5pdGlvbnMgdXNlZCB0byAjaW5jbHVkZSBzcGVjaWZpYyBoZWFkZXIgZmlsZXMuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGZvbGxvd2luZyBtYWNyb3MgYXJlIGRlZmluZWQgdG8gdGhlIG5hbWUgb2Ygc3BlY2lmaWMgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlfjIgaGVhZGVyIGZpbGVzLiAgVGhleSBjYW4gYmUgdXNlZCBkaXJlY3RseSBpbiAjaW5jbHVkZSAgICAqLworICAvKiAgICBzdGF0ZW1lbnRzIGFzIGluOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICNpbmNsdWRlICIuLi9mcmVldHlwZS5oIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICNpbmNsdWRlICIuLi9mdG1tLmgiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICNpbmNsdWRlICIuLi9mdGdseXBoLmgiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlcmUgYXJlIHNldmVyYWwgcmVhc29ucyB3aHkgd2UgYXJlIG5vdyB1c2luZyBtYWNyb3MgdG8gbmFtZSAgICAgICovCisgIC8qICAgIHB1YmxpYyBoZWFkZXIgZmlsZXMuICBUaGUgZmlyc3Qgb25lIGlzIHRoYXQgc3VjaCBtYWNyb3MgYXJlIG5vdCAgICAqLworICAvKiAgICBsaW1pdGVkIHRvIHRoZSBpbmZhbW91cyA4LjN+bmFtaW5nIHJ1bGUgcmVxdWlyZWQgYnkgRE9TIChhbmQgICAgICAgKi8KKyAgLyogICAgYEZUX01VTFRJUExFX01BU1RFUlNfSCcgaXMgYSBsb3QgbW9yZSBtZWFuaW5nZnVsIHRoYW4gYGZ0bW0uaCcpLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgc2Vjb25kIHJlYXNvbiBpcyB0aGF0IGl0IGFsbG93cyBmb3IgbW9yZSBmbGV4aWJpbGl0eSBpbiB0aGUgICAgKi8KKyAgLyogICAgd2F5IEZyZWVUeXBlfjIgaXMgaW5zdGFsbGVkIG9uIGEgZ2l2ZW4gc3lzdGVtLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIGNvbmZpZ3VyYXRpb24gZmlsZXMgKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQ09ORklHX0NPTkZJR19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcKKyAgICogICBGcmVlVHlwZX4yIGNvbmZpZ3VyYXRpb24gZGF0YS4KKyAgICoKKyAgICovCisjaWZuZGVmIEZUX0NPTkZJR19DT05GSUdfSAorI2RlZmluZSBGVF9DT05GSUdfQ09ORklHX0ggIDxmcmVldHlwZS9jb25maWcvZnRjb25maWcuaD4KKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0NPTkZJR19TVEFOREFSRF9MSUJSQVJZX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZworICAgKiAgIEZyZWVUeXBlfjIgaW50ZXJmYWNlIHRvIHRoZSBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb25zLgorICAgKgorICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX1NUQU5EQVJEX0xJQlJBUllfSAorI2RlZmluZSBGVF9DT05GSUdfU1RBTkRBUkRfTElCUkFSWV9IICA8ZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmg+CisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9DT05GSUdfT1BUSU9OU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcKKyAgICogICBGcmVlVHlwZX4yIHByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICAgKgorICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTlNfSAorI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OU19IICA8ZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg+CisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9DT05GSUdfTU9EVUxFU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgbGlzdCBvZiBGcmVlVHlwZX4yIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgdG8gbmV3IGxpYnJhcnkKKyAgICogICBpbnN0YW5jZXMgaW4gQEZUX0luaXRfRnJlZVR5cGUuCisgICAqCisgICAqLworI2lmbmRlZiBGVF9DT05GSUdfTU9EVUxFU19ICisjZGVmaW5lIEZUX0NPTkZJR19NT0RVTEVTX0ggIDxmcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaD4KKyNlbmRpZgorCisgIC8qICovCisKKyAgLyogcHVibGljIGhlYWRlcnMgKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfRlJFRVRZUEVfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGJhc2UgRnJlZVR5cGV+MiBBUEkuCisgICAqCisgICAqLworI2RlZmluZSBGVF9GUkVFVFlQRV9IICA8ZnJlZXR5cGUvZnJlZXR5cGUuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9FUlJPUlNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGxpc3Qgb2YgRnJlZVR5cGV+MiBlcnJvciBjb2RlcyAoYW5kIG1lc3NhZ2VzKS4KKyAgICoKKyAgICogICBJdCBpcyBpbmNsdWRlZCBieSBARlRfRlJFRVRZUEVfSC4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0VSUk9SU19IICA8ZnJlZXR5cGUvZnRlcnJvcnMuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9NT0RVTEVfRVJST1JTX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBsaXN0IG9mIEZyZWVUeXBlfjIgbW9kdWxlIGVycm9yIG9mZnNldHMgKGFuZCBtZXNzYWdlcykuCisgICAqCisgICAqLworI2RlZmluZSBGVF9NT0RVTEVfRVJST1JTX0ggIDxmcmVldHlwZS9mdG1vZGVyci5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1NZU1RFTV9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgRnJlZVR5cGV+MiBpbnRlcmZhY2UgdG8gbG93LWxldmVsIG9wZXJhdGlvbnMgKGkuZS4sIG1lbW9yeSBtYW5hZ2VtZW50CisgICAqICAgYW5kIHN0cmVhbSBpL28pLgorICAgKgorICAgKiAgIEl0IGlzIGluY2x1ZGVkIGJ5IEBGVF9GUkVFVFlQRV9ILgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfU1lTVEVNX0ggIDxmcmVldHlwZS9mdHN5c3RlbS5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0lNQUdFX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0eXBlCisgICAqICAgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBnbHlwaCBpbWFnZXMgKGkuZS4sIGJpdG1hcHMsIG91dGxpbmVzLAorICAgKiAgIHNjYW4tY29udmVydGVyIHBhcmFtZXRlcnMpLgorICAgKgorICAgKiAgIEl0IGlzIGluY2x1ZGVkIGJ5IEBGVF9GUkVFVFlQRV9ILgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfSU1BR0VfSCAgPGZyZWV0eXBlL2Z0aW1hZ2UuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9UWVBFU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgYmFzaWMgZGF0YSB0eXBlcyBkZWZpbmVkIGJ5IEZyZWVUeXBlfjIuCisgICAqCisgICAqICAgSXQgaXMgaW5jbHVkZWQgYnkgQEZUX0ZSRUVUWVBFX0guCisgICAqCisgICAqLworI2RlZmluZSBGVF9UWVBFU19IICA8ZnJlZXR5cGUvZnR0eXBlcy5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0xJU1RfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGxpc3QgbWFuYWdlbWVudCBBUEkgb2YgRnJlZVR5cGV+Mi4KKyAgICoKKyAgICogICAoTW9zdCBhcHBsaWNhdGlvbnMgd2lsbCBuZXZlciBuZWVkIHRvIGluY2x1ZGUgdGhpcyBmaWxlLikKKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0xJU1RfSCAgPGZyZWV0eXBlL2Z0bGlzdC5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX09VVExJTkVfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIHNjYWxhYmxlIG91dGxpbmUgbWFuYWdlbWVudCBBUEkgb2YgRnJlZVR5cGV+Mi4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX09VVExJTkVfSCAgPGZyZWV0eXBlL2Z0b3V0bG4uaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9TSVpFU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgQVBJIHdoaWNoIG1hbmFnZXMgbXVsdGlwbGUgQEZUX1NpemUgb2JqZWN0cyBwZXIgZmFjZS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1NJWkVTX0ggIDxmcmVldHlwZS9mdHNpemVzLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfTU9EVUxFX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBtb2R1bGUgbWFuYWdlbWVudCBBUEkgb2YgRnJlZVR5cGV+Mi4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX01PRFVMRV9IICA8ZnJlZXR5cGUvZnRtb2RhcGkuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9SRU5ERVJfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIHJlbmRlcmVyIG1vZHVsZSBtYW5hZ2VtZW50IEFQSSBvZiBGcmVlVHlwZX4yLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfUkVOREVSX0ggIDxmcmVldHlwZS9mdHJlbmRlci5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0FVVE9ISU5URVJfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nCisgICAqICAgc3RydWN0dXJlcyBhbmQgbWFjcm9zIHJlbGF0ZWQgdG8gdGhlIGF1dG8taGludGluZyBtb2R1bGUuCisgICAqCisgICAqLworI2RlZmluZSBGVF9BVVRPSElOVEVSX0ggIDxmcmVldHlwZS9mdGF1dG9oLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQ0ZGX0RSSVZFUl9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcKKyAgICogICBzdHJ1Y3R1cmVzIGFuZCBtYWNyb3MgcmVsYXRlZCB0byB0aGUgQ0ZGIGRyaXZlciBtb2R1bGUuCisgICAqCisgICAqLworI2RlZmluZSBGVF9DRkZfRFJJVkVSX0ggIDxmcmVldHlwZS9mdGNmZmRydi5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1RSVUVUWVBFX0RSSVZFUl9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcKKyAgICogICBzdHJ1Y3R1cmVzIGFuZCBtYWNyb3MgcmVsYXRlZCB0byB0aGUgVHJ1ZVR5cGUgZHJpdmVyIG1vZHVsZS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1RSVUVUWVBFX0RSSVZFUl9IICA8ZnJlZXR5cGUvZnR0dGRydi5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1RZUEUxX1RBQkxFU19ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgdHlwZXMgYW5kIEFQSSBzcGVjaWZpYyB0byB0aGUgVHlwZX4xIGZvcm1hdC4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1RZUEUxX1RBQkxFU19IICA8ZnJlZXR5cGUvdDF0YWJsZXMuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9UUlVFVFlQRV9JRFNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGVudW1lcmF0aW9uIHZhbHVlcyB3aGljaCBpZGVudGlmeSBuYW1lIHN0cmluZ3MsIGxhbmd1YWdlcywgZW5jb2RpbmdzLAorICAgKiAgIGV0Yy4gIFRoaXMgZmlsZSByZWFsbHkgY29udGFpbnMgYSBfbGFyZ2VfIHNldCBvZiBjb25zdGFudCBtYWNybworICAgKiAgIGRlZmluaXRpb25zLCB0YWtlbiBmcm9tIHRoZSBUcnVlVHlwZSBhbmQgT3BlblR5cGUgc3BlY2lmaWNhdGlvbnMuCisgICAqCisgICAqLworI2RlZmluZSBGVF9UUlVFVFlQRV9JRFNfSCAgPGZyZWV0eXBlL3R0bmFtZWlkLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfVFJVRVRZUEVfVEFCTEVTX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICB0eXBlcyBhbmQgQVBJIHNwZWNpZmljIHRvIHRoZSBUcnVlVHlwZSAoYXMgd2VsbCBhcyBPcGVuVHlwZSkgZm9ybWF0LgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfVFJVRVRZUEVfVEFCTEVTX0ggIDxmcmVldHlwZS90dHRhYmxlcy5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1RSVUVUWVBFX1RBR1NfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGRlZmluaXRpb25zIG9mIFRydWVUeXBlIGZvdXItYnl0ZSBgdGFncycgd2hpY2ggaWRlbnRpZnkgYmxvY2tzIGluCisgICAqICAgU0ZOVC1iYXNlZCBmb250IGZvcm1hdHMgKGkuZS4sIFRydWVUeXBlIGFuZCBPcGVuVHlwZSkuCisgICAqCisgICAqLworI2RlZmluZSBGVF9UUlVFVFlQRV9UQUdTX0ggIDxmcmVldHlwZS90dHRhZ3MuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9CREZfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGRlZmluaXRpb25zIG9mIGFuIEFQSSB3aGljaCBhY2Nlc3NlcyBCREYtc3BlY2lmaWMgc3RyaW5ncyBmcm9tIGEKKyAgICogICBmYWNlLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfQkRGX0ggIDxmcmVldHlwZS9mdGJkZi5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0NJRF9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgZGVmaW5pdGlvbnMgb2YgYW4gQVBJIHdoaWNoIGFjY2VzcyBDSUQgZm9udCBpbmZvcm1hdGlvbiBmcm9tIGEKKyAgICogICBmYWNlLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfQ0lEX0ggIDxmcmVldHlwZS9mdGNpZC5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0daSVBfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGRlZmluaXRpb25zIG9mIGFuIEFQSSB3aGljaCBzdXBwb3J0cyBnemlwLWNvbXByZXNzZWQgZmlsZXMuCisgICAqCisgICAqLworI2RlZmluZSBGVF9HWklQX0ggIDxmcmVldHlwZS9mdGd6aXAuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9MWldfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIGRlZmluaXRpb25zIG9mIGFuIEFQSSB3aGljaCBzdXBwb3J0cyBMWlctY29tcHJlc3NlZCBmaWxlcy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0xaV19IICA8ZnJlZXR5cGUvZnRsencuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9CWklQMl9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgZGVmaW5pdGlvbnMgb2YgYW4gQVBJIHdoaWNoIHN1cHBvcnRzIGJ6aXAyLWNvbXByZXNzZWQgZmlsZXMuCisgICAqCisgICAqLworI2RlZmluZSBGVF9CWklQMl9IICA8ZnJlZXR5cGUvZnRiemlwMi5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1dJTkZPTlRTX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBkZWZpbml0aW9ucyBvZiBhbiBBUEkgd2hpY2ggc3VwcG9ydHMgV2luZG93cyBGTlQgZmlsZXMuCisgICAqCisgICAqLworI2RlZmluZSBGVF9XSU5GT05UU19IICAgPGZyZWV0eXBlL2Z0d2luZm50Lmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfR0xZUEhfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIEFQSSBvZiB0aGUgb3B0aW9uYWwgZ2x5cGggbWFuYWdlbWVudCBjb21wb25lbnQuCisgICAqCisgICAqLworI2RlZmluZSBGVF9HTFlQSF9IICA8ZnJlZXR5cGUvZnRnbHlwaC5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0JJVE1BUF9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgQVBJIG9mIHRoZSBvcHRpb25hbCBiaXRtYXAgY29udmVyc2lvbiBjb21wb25lbnQuCisgICAqCisgICAqLworI2RlZmluZSBGVF9CSVRNQVBfSCAgPGZyZWV0eXBlL2Z0Yml0bWFwLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQkJPWF9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgQVBJIG9mIHRoZSBvcHRpb25hbCBleGFjdCBib3VuZGluZyBib3ggY29tcHV0YXRpb24gcm91dGluZXMuCisgICAqCisgICAqLworI2RlZmluZSBGVF9CQk9YX0ggIDxmcmVldHlwZS9mdGJib3guaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9DQUNIRV9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgQVBJIG9mIHRoZSBvcHRpb25hbCBGcmVlVHlwZX4yIGNhY2hlIHN1Yi1zeXN0ZW0uCisgICAqCisgICAqLworI2RlZmluZSBGVF9DQUNIRV9IICA8ZnJlZXR5cGUvZnRjYWNoZS5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0NBQ0hFX0lNQUdFX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBgZ2x5cGggaW1hZ2UnIEFQSSBvZiB0aGUgRnJlZVR5cGV+MiBjYWNoZSBzdWItc3lzdGVtLgorICAgKgorICAgKiAgIEl0IGlzIHVzZWQgdG8gZGVmaW5lIGEgY2FjaGUgZm9yIEBGVF9HbHlwaCBlbGVtZW50cy4gIFlvdSBjYW4gYWxzbworICAgKiAgIHVzZSB0aGUgQVBJIGRlZmluZWQgaW4gQEZUX0NBQ0hFX1NNQUxMX0JJVE1BUFNfSCBpZiB5b3Ugb25seSBuZWVkIHRvCisgICAqICAgc3RvcmUgc21hbGwgZ2x5cGggYml0bWFwcywgYXMgaXQgd2lsbCB1c2UgbGVzcyBtZW1vcnkuCisgICAqCisgICAqICAgVGhpcyBtYWNybyBpcyBkZXByZWNhdGVkLiAgU2ltcGx5IGluY2x1ZGUgQEZUX0NBQ0hFX0ggdG8gaGF2ZSBhbGwKKyAgICogICBnbHlwaCBpbWFnZS1yZWxhdGVkIGNhY2hlIGRlY2xhcmF0aW9ucy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0NBQ0hFX0lNQUdFX0ggIEZUX0NBQ0hFX0gKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9DQUNIRV9TTUFMTF9CSVRNQVBTX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBgc21hbGwgYml0bWFwcycgQVBJIG9mIHRoZSBGcmVlVHlwZX4yIGNhY2hlIHN1Yi1zeXN0ZW0uCisgICAqCisgICAqICAgSXQgaXMgdXNlZCB0byBkZWZpbmUgYSBjYWNoZSBmb3Igc21hbGwgZ2x5cGggYml0bWFwcyBpbiBhIHJlbGF0aXZlbHkKKyAgICogICBtZW1vcnktZWZmaWNpZW50IHdheS4gIFlvdSBjYW4gYWxzbyB1c2UgdGhlIEFQSSBkZWZpbmVkIGluCisgICAqICAgQEZUX0NBQ0hFX0lNQUdFX0ggaWYgeW91IHdhbnQgdG8gY2FjaGUgYXJiaXRyYXJ5IGdseXBoIGltYWdlcywKKyAgICogICBpbmNsdWRpbmcgc2NhbGFibGUgb3V0bGluZXMuCisgICAqCisgICAqICAgVGhpcyBtYWNybyBpcyBkZXByZWNhdGVkLiAgU2ltcGx5IGluY2x1ZGUgQEZUX0NBQ0hFX0ggdG8gaGF2ZSBhbGwKKyAgICogICBzbWFsbCBiaXRtYXBzLXJlbGF0ZWQgY2FjaGUgZGVjbGFyYXRpb25zLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfQ0FDSEVfU01BTExfQklUTUFQU19IICBGVF9DQUNIRV9ICisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQ0FDSEVfQ0hBUk1BUF9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgYGNoYXJtYXAnIEFQSSBvZiB0aGUgRnJlZVR5cGV+MiBjYWNoZSBzdWItc3lzdGVtLgorICAgKgorICAgKiAgIFRoaXMgbWFjcm8gaXMgZGVwcmVjYXRlZC4gIFNpbXBseSBpbmNsdWRlIEBGVF9DQUNIRV9IIHRvIGhhdmUgYWxsCisgICAqICAgY2hhcm1hcC1iYXNlZCBjYWNoZSBkZWNsYXJhdGlvbnMuCisgICAqCisgICAqLworI2RlZmluZSBGVF9DQUNIRV9DSEFSTUFQX0ggIEZUX0NBQ0hFX0gKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9NQUNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIE1hY2ludG9zaC1zcGVjaWZpYyBGcmVlVHlwZX4yIEFQSS4gIFRoZSBsYXR0ZXIgaXMgdXNlZCB0byBhY2Nlc3MKKyAgICogICBmb250cyBlbWJlZGRlZCBpbiByZXNvdXJjZSBmb3Jrcy4KKyAgICoKKyAgICogICBUaGlzIGhlYWRlciBmaWxlIG11c3QgYmUgZXhwbGljaXRseSBpbmNsdWRlZCBieSBjbGllbnQgYXBwbGljYXRpb25zCisgICAqICAgY29tcGlsZWQgb24gdGhlIE1hYyAobm90ZSB0aGF0IHRoZSBiYXNlIEFQSSBzdGlsbCB3b3JrcyB0aG91Z2gpLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfTUFDX0ggIDxmcmVldHlwZS9mdG1hYy5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX01VTFRJUExFX01BU1RFUlNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIG9wdGlvbmFsIG11bHRpcGxlLW1hc3RlcnMgbWFuYWdlbWVudCBBUEkgb2YgRnJlZVR5cGV+Mi4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX01VTFRJUExFX01BU1RFUlNfSCAgPGZyZWV0eXBlL2Z0bW0uaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9TRk5UX05BTUVTX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBvcHRpb25hbCBGcmVlVHlwZX4yIEFQSSB3aGljaCBhY2Nlc3NlcyBlbWJlZGRlZCBgbmFtZScgc3RyaW5ncyBpbgorICAgKiAgIFNGTlQtYmFzZWQgZm9udCBmb3JtYXRzIChpLmUuLCBUcnVlVHlwZSBhbmQgT3BlblR5cGUpLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfU0ZOVF9OQU1FU19IICA8ZnJlZXR5cGUvZnRzbmFtZXMuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9PUEVOVFlQRV9WQUxJREFURV9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgb3B0aW9uYWwgRnJlZVR5cGV+MiBBUEkgd2hpY2ggdmFsaWRhdGVzIE9wZW5UeXBlIHRhYmxlcyAoQkFTRSwgR0RFRiwKKyAgICogICBHUE9TLCBHU1VCLCBKU1RGKS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX09QRU5UWVBFX1ZBTElEQVRFX0ggIDxmcmVldHlwZS9mdG90dmFsLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfR1hfVkFMSURBVEVfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIG9wdGlvbmFsIEZyZWVUeXBlfjIgQVBJIHdoaWNoIHZhbGlkYXRlcyBUcnVlVHlwZUdYL0FBVCB0YWJsZXMgKGZlYXQsCisgICAqICAgbW9ydCwgbW9yeCwgYnNsbiwganVzdCwga2Vybiwgb3BiZCwgdHJhaywgcHJvcCkuCisgICAqCisgICAqLworI2RlZmluZSBGVF9HWF9WQUxJREFURV9IICA8ZnJlZXR5cGUvZnRneHZhbC5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1BGUl9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgRnJlZVR5cGV+MiBBUEkgd2hpY2ggYWNjZXNzZXMgUEZSLXNwZWNpZmljIGRhdGEuCisgICAqCisgICAqLworI2RlZmluZSBGVF9QRlJfSCAgPGZyZWV0eXBlL2Z0cGZyLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfU1RST0tFUl9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgRnJlZVR5cGV+MiBBUEkgd2hpY2ggcHJvdmlkZXMgZnVuY3Rpb25zIHRvIHN0cm9rZSBvdXRsaW5lIHBhdGhzLgorICAgKi8KKyNkZWZpbmUgRlRfU1RST0tFUl9IICA8ZnJlZXR5cGUvZnRzdHJva2UuaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9TWU5USEVTSVNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIEZyZWVUeXBlfjIgQVBJIHdoaWNoIHBlcmZvcm1zIGFydGlmaWNpYWwgb2JsaXF1aW5nIGFuZCBlbWJvbGRlbmluZy4KKyAgICovCisjZGVmaW5lIEZUX1NZTlRIRVNJU19IICA8ZnJlZXR5cGUvZnRzeW50aC5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1hGUkVFODZfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIEZyZWVUeXBlfjIgQVBJIHdoaWNoIHByb3ZpZGVzIGZ1bmN0aW9ucyBzcGVjaWZpYyB0byB0aGUgWEZyZWU4NiBhbmQKKyAgICogICBYLk9yZyBYMTEgc2VydmVycy4KKyAgICovCisjZGVmaW5lIEZUX1hGUkVFODZfSCAgPGZyZWV0eXBlL2Z0eGY4Ni5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1RSSUdPTk9NRVRSWV9ICisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHVzZWQgaW4gI2luY2x1ZGUgc3RhdGVtZW50cyB0byBuYW1lIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAqICAgRnJlZVR5cGV+MiBBUEkgd2hpY2ggcGVyZm9ybXMgdHJpZ29ub21ldHJpYyBjb21wdXRhdGlvbnMgKGUuZy4sCisgICAqICAgY29zaW5lcyBhbmQgYXJjIHRhbmdlbnRzKS4KKyAgICovCisjZGVmaW5lIEZUX1RSSUdPTk9NRVRSWV9IICA8ZnJlZXR5cGUvZnR0cmlnb24uaD4KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9MQ0RfRklMVEVSX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBGcmVlVHlwZX4yIEFQSSB3aGljaCBwZXJmb3JtcyBjb2xvciBmaWx0ZXJpbmcgZm9yIHN1YnBpeGVsIHJlbmRlcmluZy4KKyAgICovCisjZGVmaW5lIEZUX0xDRF9GSUxURVJfSCAgPGZyZWV0eXBlL2Z0bGNkZmlsLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfVU5QQVRFTlRFRF9ISU5USU5HX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBGcmVlVHlwZX4yIEFQSSB3aGljaCBwZXJmb3JtcyBjb2xvciBmaWx0ZXJpbmcgZm9yIHN1YnBpeGVsIHJlbmRlcmluZy4KKyAgICovCisjZGVmaW5lIEZUX1VOUEFURU5URURfSElOVElOR19IICA8ZnJlZXR5cGUvdHR1bnBhdC5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0lOQ1JFTUVOVEFMX0gKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdXNlZCBpbiAjaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG5hbWUgdGhlIGZpbGUgY29udGFpbmluZyB0aGUKKyAgICogICBGcmVlVHlwZX4yIEFQSSB3aGljaCBwZXJmb3JtcyBjb2xvciBmaWx0ZXJpbmcgZm9yIHN1YnBpeGVsIHJlbmRlcmluZy4KKyAgICovCisjZGVmaW5lIEZUX0lOQ1JFTUVOVEFMX0ggIDxmcmVldHlwZS9mdGluY3JlbS5oPgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0dBU1BfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIEZyZWVUeXBlfjIgQVBJIHdoaWNoIHJldHVybnMgZW50cmllcyBmcm9tIHRoZSBUcnVlVHlwZSBHQVNQIHRhYmxlLgorICAgKi8KKyNkZWZpbmUgRlRfR0FTUF9IICA8ZnJlZXR5cGUvZnRnYXNwLmg+CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfQURWQU5DRVNfSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB1c2VkIGluICNpbmNsdWRlIHN0YXRlbWVudHMgdG8gbmFtZSB0aGUgZmlsZSBjb250YWluaW5nIHRoZQorICAgKiAgIEZyZWVUeXBlfjIgQVBJIHdoaWNoIHJldHVybnMgaW5kaXZpZHVhbCBhbmQgcmFuZ2VkIGdseXBoIGFkdmFuY2VzLgorICAgKi8KKyNkZWZpbmUgRlRfQURWQU5DRVNfSCAgPGZyZWV0eXBlL2Z0YWR2YW5jLmg+CisKKworICAvKiAqLworCisjZGVmaW5lIEZUX0VSUk9SX0RFRklOSVRJT05TX0ggIDxmcmVldHlwZS9mdGVycmRlZi5oPgorCisKKyAgLyogVGhlIGludGVybmFscyBvZiB0aGUgY2FjaGUgc3ViLXN5c3RlbSBhcmUgbm8gbG9uZ2VyIGV4cG9zZWQuICBXZSAqLworICAvKiBkZWZhdWx0IHRvIEZUX0NBQ0hFX0ggYXQgdGhlIG1vbWVudCBqdXN0IGluIGNhc2UsIGJ1dCB3ZSBrbm93IG9mICovCisgIC8qIG5vIHJvZ3VlIGNsaWVudCB0aGF0IHVzZXMgdGhlbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9DQUNIRV9NQU5BR0VSX0ggICAgICAgICAgIDxmcmVldHlwZS9mdGNhY2hlLmg+CisjZGVmaW5lIEZUX0NBQ0hFX0lOVEVSTkFMX01SVV9IICAgICAgPGZyZWV0eXBlL2Z0Y2FjaGUuaD4KKyNkZWZpbmUgRlRfQ0FDSEVfSU5URVJOQUxfTUFOQUdFUl9IICA8ZnJlZXR5cGUvZnRjYWNoZS5oPgorI2RlZmluZSBGVF9DQUNIRV9JTlRFUk5BTF9DQUNIRV9IICAgIDxmcmVldHlwZS9mdGNhY2hlLmg+CisjZGVmaW5lIEZUX0NBQ0hFX0lOVEVSTkFMX0dMWVBIX0ggICAgPGZyZWV0eXBlL2Z0Y2FjaGUuaD4KKyNkZWZpbmUgRlRfQ0FDSEVfSU5URVJOQUxfSU1BR0VfSCAgICA8ZnJlZXR5cGUvZnRjYWNoZS5oPgorI2RlZmluZSBGVF9DQUNIRV9JTlRFUk5BTF9TQklUU19IICAgIDxmcmVldHlwZS9mdGNhY2hlLmg+CisKKworI2RlZmluZSBGVF9JTkNSRU1FTlRBTF9IICAgICAgICAgIDxmcmVldHlwZS9mdGluY3JlbS5oPgorCisjZGVmaW5lIEZUX1RSVUVUWVBFX1VOUEFURU5URURfSCAgPGZyZWV0eXBlL3R0dW5wYXQuaD4KKworCisgIC8qCisgICAqIEluY2x1ZGUgaW50ZXJuYWwgaGVhZGVycyBkZWZpbml0aW9ucyBmcm9tIDxmcmVldHlwZS9pbnRlcm5hbC8uLi4+CisgICAqIG9ubHkgd2hlbiBidWlsZGluZyB0aGUgbGlicmFyeS4KKyAgICovCisjaWZkZWYgRlQyX0JVSUxEX0xJQlJBUlkKKyNkZWZpbmUgIEZUX0lOVEVSTkFMX0lOVEVSTkFMX0ggIDxmcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oPgorI2luY2x1ZGUgIi4uL2ludGVybmFsL2ludGVybmFsLmgiCisjZW5kaWYgLyogRlQyX0JVSUxEX0xJQlJBUlkgKi8KKworCisjZW5kaWYgLyogX19GVDJfQlVJTERfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMzFjZTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogIFRoaXMgZmlsZSByZWdpc3RlcnMgdGhlIEZyZWVUeXBlIG1vZHVsZXMgY29tcGlsZWQgaW50byB0aGUgbGlicmFyeS4KKyAqCisgKiAgSWYgeW91IHVzZSBHTlUgbWFrZSwgdGhpcyBmaWxlIElTIE5PVCBVU0VEISAgSW5zdGVhZCwgaXQgaXMgY3JlYXRlZCBpbgorICogIHRoZSBvYmplY3RzIGRpcmVjdG9yeSAobm9ybWFsbHkgYDx0b3BkaXI+L29ianMvJykgYmFzZWQgb24gaW5mb3JtYXRpb24KKyAqICBmcm9tIGA8dG9wZGlyPi9tb2R1bGVzLmNmZycuCisgKgorICogIFBsZWFzZSByZWFkIGBkb2NzL0lOU1RBTEwuQU5ZJyBhbmQgYGRvY3MvQ1VTVE9NSVpFJyBob3cgdG8gY29tcGlsZQorICogIEZyZWVUeXBlIHdpdGhvdXQgR05VIG1ha2UuCisgKgorICovCisKKy8vRlRfVVNFX01PRFVMRSggRlRfTW9kdWxlX0NsYXNzLCBhdXRvZml0X21vZHVsZV9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9Ecml2ZXJfQ2xhc3NSZWMsIHR0X2RyaXZlcl9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9Ecml2ZXJfQ2xhc3NSZWMsIHQxX2RyaXZlcl9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9Ecml2ZXJfQ2xhc3NSZWMsIGNmZl9kcml2ZXJfY2xhc3MgKQorRlRfVVNFX01PRFVMRSggRlRfRHJpdmVyX0NsYXNzUmVjLCB0MWNpZF9kcml2ZXJfY2xhc3MgKQorLy9GVF9VU0VfTU9EVUxFKCBGVF9Ecml2ZXJfQ2xhc3NSZWMsIHBmcl9kcml2ZXJfY2xhc3MgKQorLy9GVF9VU0VfTU9EVUxFKCBGVF9Ecml2ZXJfQ2xhc3NSZWMsIHQ0Ml9kcml2ZXJfY2xhc3MgKQorLy9GVF9VU0VfTU9EVUxFKCBGVF9Ecml2ZXJfQ2xhc3NSZWMsIHdpbmZudF9kcml2ZXJfY2xhc3MgKQorLy9GVF9VU0VfTU9EVUxFKCBGVF9Ecml2ZXJfQ2xhc3NSZWMsIHBjZl9kcml2ZXJfY2xhc3MgKQorRlRfVVNFX01PRFVMRSggRlRfTW9kdWxlX0NsYXNzLCBwc2F1eF9tb2R1bGVfY2xhc3MgKQorRlRfVVNFX01PRFVMRSggRlRfTW9kdWxlX0NsYXNzLCBwc25hbWVzX21vZHVsZV9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9Nb2R1bGVfQ2xhc3MsIHBzaGludGVyX21vZHVsZV9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9SZW5kZXJlcl9DbGFzcywgZnRfcmFzdGVyMV9yZW5kZXJlcl9jbGFzcyApCitGVF9VU0VfTU9EVUxFKCBGVF9Nb2R1bGVfQ2xhc3MsIHNmbnRfbW9kdWxlX2NsYXNzICkKK0ZUX1VTRV9NT0RVTEUoIEZUX1JlbmRlcmVyX0NsYXNzLCBmdF9zbW9vdGhfcmVuZGVyZXJfY2xhc3MgKQorRlRfVVNFX01PRFVMRSggRlRfUmVuZGVyZXJfQ2xhc3MsIGZ0X3Ntb290aF9sY2RfcmVuZGVyZXJfY2xhc3MgKQorRlRfVVNFX01PRFVMRSggRlRfUmVuZGVyZXJfQ2xhc3MsIGZ0X3Ntb290aF9sY2R2X3JlbmRlcmVyX2NsYXNzICkKKy8vRlRfVVNFX01PRFVMRSggRlRfRHJpdmVyX0NsYXNzUmVjLCBiZGZfZHJpdmVyX2NsYXNzICkKKworLyogRU9GICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNmUzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaApAQCAtMCwwICsxLDgzMyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRvcHRpb24uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFVzZXItc2VsZWN0YWJsZSBjb25maWd1cmF0aW9uIG1hY3JvcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRPUFRJT05fSF9fCisjZGVmaW5lIF9fRlRPUFRJT05fSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgVVNFUi1TRUxFQ1RBQkxFIENPTkZJR1VSQVRJT04gTUFDUk9TICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG1hY3JvIGRlZmluaXRpb25zIGZvciAgICAqLworICAvKiBhIHN0YW5kYXJkIGJ1aWxkIG9mIHRoZSBGcmVlVHlwZSBsaWJyYXJ5LiAgVGhlcmUgYXJlIHRocmVlIHdheXMgdG8gICAgKi8KKyAgLyogdXNlIHRoaXMgZmlsZSB0byBidWlsZCBwcm9qZWN0LXNwZWNpZmljIHZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5OiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgLSBZb3UgY2FuIG1vZGlmeSB0aGlzIGZpbGUgYnkgaGFuZCwgYnV0IHRoaXMgaXMgbm90IHJlY29tbWVuZGVkIGluICAgKi8KKyAgLyogICAgY2FzZXMgd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8gYnVpbGQgc2V2ZXJhbCB2ZXJzaW9ucyBvZiB0aGUgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgZnJvbSBhIHNpbmdsZSBzb3VyY2UgZGlyZWN0b3J5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIC0gWW91IGNhbiBwdXQgYSBjb3B5IG9mIHRoaXMgZmlsZSBpbiB5b3VyIGJ1aWxkIGRpcmVjdG9yeSwgbW9yZSAgICAgICovCisgIC8qICAgIHByZWNpc2VseSBpbiBgJEJVSUxEL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oJywgd2hlcmUgYCRCVUlMRCcgICAqLworICAvKiAgICBpcyB0aGUgbmFtZSBvZiBhIGRpcmVjdG9yeSB0aGF0IGlzIGluY2x1ZGVkIF9iZWZvcmVfIHRoZSBGcmVlVHlwZSAgKi8KKyAgLyogICAgaW5jbHVkZSBwYXRoIGR1cmluZyBjb21waWxhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZGVmYXVsdCBGcmVlVHlwZSBNYWtlZmlsZXMgYW5kIEphbWZpbGVzIHVzZSB0aGUgYnVpbGQgICAgICAgICAgKi8KKyAgLyogICAgZGlyZWN0b3J5IGBidWlsZHMvPHN5c3RlbT4nIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgY2FuIGVhc2lseSBjaGFuZ2UgICovCisgIC8qICAgIHRoYXQgZm9yIHlvdXIgb3duIHByb2plY3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIC0gQ29weSB0aGUgZmlsZSA8ZnQyYnVpbGQuaD4gdG8gYCRCVUlMRC9mdDJidWlsZC5oJyBhbmQgbW9kaWZ5IGl0ICAgICovCisgIC8qICAgIHNsaWdodGx5IHRvIHByZS1kZWZpbmUgdGhlIG1hY3JvIEZUX0NPTkZJR19PUFRJT05TX0ggdXNlZCB0byAgICAgICAqLworICAvKiAgICBsb2NhdGUgdGhpcyBmaWxlIGR1cmluZyB0aGUgYnVpbGQuICBGb3IgZXhhbXBsZSwgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OU19IICA8bXlmdG9wdGlvbnMuaD4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICNpbmNsdWRlIDxmcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHdpbGwgdXNlIGAkQlVJTEQvbXlmdG9wdGlvbnMuaCcgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZm9yIG1hY3JvICAgICAqLworICAvKiAgICBkZWZpbml0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgYWxzbyB0aGF0IHlvdSBjYW4gc2ltaWxhcmx5IHByZS1kZWZpbmUgdGhlIG1hY3JvICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9DT05GSUdfTU9EVUxFU19IIHVzZWQgdG8gbG9jYXRlIHRoZSBmaWxlIGxpc3Rpbmcgb2YgdGhlIG1vZHVsZXMgKi8KKyAgLyogICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgdG8gdGhlIGxpYnJhcnkgYXQgY29tcGlsZSB0aW1lLiAgQnkgICAgICovCisgIC8qICAgIGRlZmF1bHQsIHRoaXMgZmlsZSBpcyA8ZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg+LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFdlIGhpZ2hseSByZWNvbW1lbmQgdXNpbmcgdGhlIHRoaXJkIG1ldGhvZCB3aGVuZXZlciBwb3NzaWJsZS4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqIEcgRSBOIEUgUiBBIEwgICBGIFIgRSBFIFQgWSBQIEUgICAyICAgQyBPIE4gRiBJIEcgVSBSIEEgVCBJIE8gTiAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgaWYgeW91IHdhbnQgdG8gYWN0aXZhdGUgc3ViLXBpeGVsIHJlbmRlcmluZyAgKi8KKyAgLyogKGEuay5hLiBMQ0QgcmVuZGVyaW5nLCBvciBDbGVhclR5cGUpIGluIHRoaXMgYnVpbGQgb2YgdGhlIGxpYnJhcnkuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlzIGNvdmVyZWQgYnkgc2V2ZXJhbCBNaWNyb3NvZnQgcGF0ZW50cyAgICAgICAgKi8KKyAgLyogYW5kIHNob3VsZCBub3QgYmUgYWN0aXZhdGVkIGluIGFueSBkZWZhdWx0IGJ1aWxkIG9mIHRoZSBsaWJyYXJ5LiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIG1hY3JvIGhhcyBubyBpbXBhY3Qgb24gdGhlIEZyZWVUeXBlIEFQSSwgb25seSBvbiBpdHMgICAgICAgICAgICAgKi8KKyAgLyogX2ltcGxlbWVudGF0aW9uXy4gIEZvciBleGFtcGxlLCB1c2luZyBGVF9SRU5ERVJfTU9ERV9MQ0Qgd2hlbiBjYWxsaW5nICovCisgIC8qIEZUX1JlbmRlcl9HbHlwaCBzdGlsbCBnZW5lcmF0ZXMgYSBiaXRtYXAgdGhhdCBpcyAzIHRpbWVzIHdpZGVyIHRoYW4gICAqLworICAvKiB0aGUgb3JpZ2luYWwgc2l6ZSBpbiBjYXNlIHRoaXMgbWFjcm8gaXNuJ3QgZGVmaW5lZDsgaG93ZXZlciwgZWFjaCAgICAgKi8KKyAgLyogdHJpcGxldCBvZiBzdWJwaXhlbHMgaGFzIFI9Rz1CLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGlzIGRvbmUgdG8gYWxsb3cgRnJlZVR5cGUgY2xpZW50cyB0byBydW4gdW5tb2RpZmllZCwgZm9yY2luZyAgICAgKi8KKyAgLyogdGhlbSB0byBkaXNwbGF5IG5vcm1hbCBncmF5LWxldmVsIGFudGktYWxpYXNlZCBnbHlwaHMuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX1JFTkRFUklORworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBNYW55IGNvbXBpbGVycyBwcm92aWRlIGEgbm9uLUFOU0kgNjQtYml0IGRhdGEgdHlwZSB0aGF0IGNhbiBiZSB1c2VkICAgKi8KKyAgLyogYnkgRnJlZVR5cGUgdG8gc3BlZWQgdXAgc29tZSBjb21wdXRhdGlvbnMuICBIb3dldmVyLCB0aGlzIHdpbGwgY3JlYXRlICovCisgIC8qIHNvbWUgcHJvYmxlbXMgd2hlbiBjb21waWxpbmcgdGhlIGxpYnJhcnkgaW4gc3RyaWN0IEFOU0kgbW9kZS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRm9yIHRoaXMgcmVhc29uLCB0aGUgdXNlIG9mIDY0LWJpdCBpbnRlZ2VycyBpcyBub3JtYWxseSBkaXNhYmxlZCB3aGVuICovCisgIC8qIHRoZSBfX1NURENfXyBtYWNybyBpcyBkZWZpbmVkLiAgWW91IGNhbiBob3dldmVyIGRpc2FibGUgdGhpcyBieSAgICAgICAqLworICAvKiBkZWZpbmluZyB0aGUgbWFjcm8gRlRfQ09ORklHX09QVElPTl9GT1JDRV9JTlQ2NCBoZXJlLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZvciBtb3N0IGNvbXBpbGVycywgdGhpcyB3aWxsIG9ubHkgY3JlYXRlIGNvbXBpbGF0aW9uIHdhcm5pbmdzIHdoZW4gICAqLworICAvKiBidWlsZGluZyB0aGUgbGlicmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9iTm90ZTogVGhlIGNvbXBpbGVyLXNwZWNpZmljIDY0LWJpdCBpbnRlZ2VycyBhcmUgZGV0ZWN0ZWQgaW4gdGhlICAgICAqLworICAvKiAgICAgICAgIGZpbGUgYGZ0Y29uZmlnLmgnIGVpdGhlciBzdGF0aWNhbGx5IG9yIHRocm91Z2ggdGhlICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICBgY29uZmlndXJlJyBzY3JpcHQgb24gc3VwcG9ydGVkIHBsYXRmb3Jtcy4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmIEZUX0NPTkZJR19PUFRJT05fRk9SQ0VfSU5UNjQKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSWYgdGhpcyBtYWNybyBpcyBkZWZpbmVkLCBkbyBub3QgdHJ5IHRvIHVzZSBhbiBhc3NlbWJsZXIgdmVyc2lvbiBvZiAgICovCisgIC8qIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGZ1bmN0aW9ucyAoZS5nLiBGVF9NdWxGaXgpLiAgWW91IHNob3VsZCBvbmx5IGRvICAqLworICAvKiB0aGF0IHRvIHZlcmlmeSB0aGF0IHRoZSBhc3NlbWJsZXIgZnVuY3Rpb24gd29ya3MgcHJvcGVybHksIG9yIHRvICAgICAgKi8KKyAgLyogZXhlY3V0ZSBiZW5jaG1hcmsgdGVzdHMgb2YgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zLiAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fTk9fQVNTRU1CTEVSICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIElmIHRoaXMgbWFjcm8gaXMgZGVmaW5lZCwgdHJ5IHRvIHVzZSBhbiBpbmxpbmVkIGFzc2VtYmxlciB2ZXJzaW9uIG9mICAqLworICAvKiB0aGUgYEZUX011bEZpeCcgZnVuY3Rpb24sIHdoaWNoIGlzIGEgYGhvdHNwb3QnIHdoZW4gbG9hZGluZyBhbmQgICAgICAgKi8KKyAgLyogaGludGluZyBnbHlwaHMsIGFuZCB3aGljaCBzaG91bGQgYmUgZXhlY3V0ZWQgYXMgZmFzdCBhcyBwb3NzaWJsZS4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlIHRoYXQgaWYgeW91ciBjb21waWxlciBvciBDUFUgaXMgbm90IHN1cHBvcnRlZCwgdGhpcyB3aWxsIGRlZmF1bHQgKi8KKyAgLyogdG8gdGhlIHN0YW5kYXJkIGFuZCBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbiBmb3VuZCBpbiBgZnRjYWxjLmMnLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX0lOTElORV9NVUxGSVgKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTFpXLWNvbXByZXNzZWQgZmlsZSBzdXBwb3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZyZWVUeXBlIG5vdyBoYW5kbGVzIGZvbnQgZmlsZXMgdGhhdCBoYXZlIGJlZW4gY29tcHJlc3NlZCB3aXRoIHRoZSAgKi8KKyAgLyogICBgY29tcHJlc3MnIHByb2dyYW0uICBUaGlzIGlzIG1vc3RseSB1c2VkIHRvIHBhcnNlIG1hbnkgb2YgdGhlIFBDRiAgICovCisgIC8qICAgZmlsZXMgdGhhdCBjb21lIHdpdGggdmFyaW91cyBYMTEgZGlzdHJpYnV0aW9ucy4gIFRoZSBpbXBsZW1lbnRhdGlvbiAqLworICAvKiAgIHVzZXMgTmV0QlNEJ3MgYHpvcGVuJyB0byBwYXJ0aWFsbHkgdW5jb21wcmVzcyB0aGUgZmlsZSBvbiB0aGUgZmx5ICAgKi8KKyAgLyogICAoc2VlIHNyYy9sencvZnRnemlwLmMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERlZmluZSB0aGlzIG1hY3JvIGlmIHlvdSB3YW50IHRvIGVuYWJsZSB0aGlzIGBmZWF0dXJlJy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fVVNFX0xaVworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBHemlwLWNvbXByZXNzZWQgZmlsZSBzdXBwb3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRnJlZVR5cGUgbm93IGhhbmRsZXMgZm9udCBmaWxlcyB0aGF0IGhhdmUgYmVlbiBjb21wcmVzc2VkIHdpdGggdGhlICAqLworICAvKiAgIGBnemlwJyBwcm9ncmFtLiAgVGhpcyBpcyBtb3N0bHkgdXNlZCB0byBwYXJzZSBtYW55IG9mIHRoZSBQQ0YgZmlsZXMgKi8KKyAgLyogICB0aGF0IGNvbWUgd2l0aCBYRnJlZTg2LiAgVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgYHpsaWInIHRvICAgICAgICAgICovCisgIC8qICAgcGFydGlhbGx5IHVuY29tcHJlc3MgdGhlIGZpbGUgb24gdGhlIGZseSAoc2VlIHNyYy9nemlwL2Z0Z3ppcC5jKS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBEZWZpbmUgdGhpcyBtYWNybyBpZiB5b3Ugd2FudCB0byBlbmFibGUgdGhpcyBgZmVhdHVyZScuICBTZWUgYWxzbyAgICovCisgIC8qICAgdGhlIG1hY3JvIEZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUIgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9VU0VfWkxJQgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBaTGliIGxpYnJhcnkgc2VsZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhpcyBtYWNybyBpcyBvbmx5IHVzZWQgd2hlbiBGVF9DT05GSUdfT1BUSU9OX1VTRV9aTElCIGlzIGRlZmluZWQuICAqLworICAvKiAgIEl0IGFsbG93cyBGcmVlVHlwZSdzIGBmdGd6aXAnIGNvbXBvbmVudCB0byBsaW5rIHRvIHRoZSBzeXN0ZW0ncyAgICAgKi8KKyAgLyogICBpbnN0YWxsYXRpb24gb2YgdGhlIFpMaWIgbGlicmFyeS4gIFRoaXMgaXMgdXNlZnVsIG9uIHN5c3RlbXMgbGlrZSAgICovCisgIC8qICAgVW5peCBvciBWTVMgd2hlcmUgaXQgZ2VuZXJhbGx5IGlzIGFscmVhZHkgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBJZiB5b3UgbGV0IGl0IHVuZGVmaW5lZCwgdGhlIGNvbXBvbmVudCB3aWxsIHVzZSBpdHMgb3duIGNvcHkgICAgICAgICovCisgIC8qICAgb2YgdGhlIHpsaWIgc291cmNlcyBpbnN0ZWFkLiAgVGhlc2UgaGF2ZSBiZWVuIG1vZGlmaWVkIHRvIGJlICAgICAgICAqLworICAvKiAgIGluY2x1ZGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgY29tcG9uZW50IGFuZCAqbm90KiBleHBvcnQgZXh0ZXJuYWwgICAgKi8KKyAgLyogICBmdW5jdGlvbiBuYW1lcy4gIFRoaXMgYWxsb3dzIHlvdSB0byBsaW5rIGFueSBwcm9ncmFtIHdpdGggRnJlZVR5cGUgICovCisgIC8qICAgX2FuZF8gWkxpYiB3aXRob3V0IGxpbmtpbmcgY29uZmxpY3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBEbyBub3QgI3VuZGVmIHRoaXMgbWFjcm8gaGVyZSBzaW5jZSB0aGUgYnVpbGQgc3lzdGVtIG1pZ2h0IGRlZmluZSAgICovCisgIC8qICAgaXQgZm9yIGNlcnRhaW4gY29uZmlndXJhdGlvbnMgb25seS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBCemlwMi1jb21wcmVzc2VkIGZpbGUgc3VwcG9ydC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRnJlZVR5cGUgbm93IGhhbmRsZXMgZm9udCBmaWxlcyB0aGF0IGhhdmUgYmVlbiBjb21wcmVzc2VkIHdpdGggdGhlICAqLworICAvKiAgIGBiemlwMicgcHJvZ3JhbS4gIFRoaXMgaXMgbW9zdGx5IHVzZWQgdG8gcGFyc2UgbWFueSBvZiB0aGUgUENGICAgICAgKi8KKyAgLyogICBmaWxlcyB0aGF0IGNvbWUgd2l0aCBYRnJlZTg2LiAgVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgYGxpYmJ6MicgdG8gICovCisgIC8qICAgcGFydGlhbGx5IHVuY29tcHJlc3MgdGhlIGZpbGUgb24gdGhlIGZseSAoc2VlIHNyYy9iemlwMi9mdGJ6aXAyLmMpLiAqLworICAvKiAgIENvbnRyYXJ5IHRvIGd6aXAsIGJ6aXAyIGN1cnJlbnRseSBpcyBub3QgaW5jbHVkZWQgYW5kIG5lZWQgdG8gdXNlICAgKi8KKyAgLyogICB0aGUgc3lzdGVtIGF2YWlsYWJsZSBiemlwMiBpbXBsZW1lbnRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERlZmluZSB0aGlzIG1hY3JvIGlmIHlvdSB3YW50IHRvIGVuYWJsZSB0aGlzIGBmZWF0dXJlJy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fVVNFX0JaSVAyICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSB0byBkaXNhYmxlIHRoZSB1c2Ugb2YgZmlsZSBzdHJlYW0gZnVuY3Rpb25zIGFuZCB0eXBlcywgRklMRSwgICAqLworICAvKiBmb3BlbigpIGV0Yy4gIEVuYWJsZXMgdGhlIHVzZSBvZiBzbWFsbGVyIHN5c3RlbSBsaWJyYXJpZXMgb24gZW1iZWRkZWQgKi8KKyAgLyogc3lzdGVtcyB0aGF0IGhhdmUgbXVsdGlwbGUgc3lzdGVtIGxpYnJhcmllcywgc29tZSB3aXRoIG9yIHdpdGhvdXQgICAgICovCisgIC8qIGZpbGUgc3RyZWFtIHN1cHBvcnQsIGluIHRoZSBjYXNlcyB3aGVyZSBmaWxlIHN0cmVhbSBzdXBwb3J0IGlzIG5vdCAgICAqLworICAvKiBuZWNlc3Nhcnkgc3VjaCBhcyBtZW1vcnkgbG9hZGluZyBvZiBmb250IGZpbGVzLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fRElTQUJMRV9TVFJFQU1fU1VQUE9SVCAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgUE5HIGJpdG1hcCBzdXBwb3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRnJlZVR5cGUgbm93IGhhbmRsZXMgbG9hZGluZyBjb2xvciBiaXRtYXAgZ2x5cGhzIGluIHRoZSBQTkcgZm9ybWF0LiAqLworICAvKiAgIFRoaXMgcmVxdWlyZXMgaGVscCBmcm9tIHRoZSBleHRlcm5hbCBsaWJwbmcgbGlicmFyeS4gIFVuY29tcHJlc3NlZCAgKi8KKyAgLyogICBjb2xvciBiaXRtYXBzIGRvIG5vdCBuZWVkIGFueSBleHRlcm5hbCBsaWJyYXJpZXMgYW5kIHdpbGwgYmUgICAgICAgICovCisgIC8qICAgc3VwcG9ydGVkIHJlZ2FyZGxlc3Mgb2YgdGhpcyBjb25maWd1cmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBEZWZpbmUgdGhpcyBtYWNybyBpZiB5b3Ugd2FudCB0byBlbmFibGUgdGhpcyBgZmVhdHVyZScuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX1VTRV9QTkcgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRExMIGV4cG9ydCBjb21waWxhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFdoZW4gY29tcGlsaW5nIEZyZWVUeXBlIGFzIGEgRExMLCBzb21lIHN5c3RlbXMvY29tcGlsZXJzIG5lZWQgYSAgICAgKi8KKyAgLyogICBzcGVjaWFsIGtleXdvcmQgaW4gZnJvbnQgT1IgYWZ0ZXIgdGhlIHJldHVybiB0eXBlIG9mIGZ1bmN0aW9uICAgICAgICovCisgIC8qICAgZGVjbGFyYXRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUd28gbWFjcm9zIGFyZSB1c2VkIHdpdGhpbiB0aGUgRnJlZVR5cGUgc291cmNlIGNvZGUgdG8gZGVmaW5lICAgICAgICovCisgIC8qICAgZXhwb3J0ZWQgbGlicmFyeSBmdW5jdGlvbnM6IEZUX0VYUE9SVCBhbmQgRlRfRVhQT1JUX0RFRi4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIEZUX0VYUE9SVCggcmV0dXJuX3R5cGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBpcyB1c2VkIGluIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24sIGFzIGluICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgRlRfRVhQT1JUKCBGVF9FcnJvciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgIEZUX0luaXRfRnJlZVR5cGUoIEZUX0xpYnJhcnkqICBhbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgRlRfRVhQT1JUX0RFRiggcmV0dXJuX3R5cGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgIGlzIHVzZWQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uLCBhcyBpbiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgRlRfSW5pdF9GcmVlVHlwZSggRlRfTGlicmFyeSogIGFsaWJyYXJ5ICkgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgIC4uLiBzb21lIGNvZGUgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICByZXR1cm4gRlRfRXJyX09rOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgWW91IGNhbiBwcm92aWRlIHlvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIEZUX0VYUE9SVCBhbmQgICAgICAgICAgICAqLworICAvKiAgIEZUX0VYUE9SVF9ERUYgaGVyZSBpZiB5b3Ugd2FudC4gIElmIHlvdSBsZWF2ZSB0aGVtIHVuZGVmaW5lZCwgdGhleSAgKi8KKyAgLyogICB3aWxsIGJlIGxhdGVyIGF1dG9tYXRpY2FsbHkgZGVmaW5lZCBhcyBgZXh0ZXJuIHJldHVybl90eXBlJyB0byAgICAgICovCisgIC8qICAgYWxsb3cgbm9ybWFsIGNvbXBpbGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBEbyBub3QgI3VuZGVmIHRoZXNlIG1hY3JvcyBoZXJlIHNpbmNlIHRoZSBidWlsZCBzeXN0ZW0gbWlnaHQgZGVmaW5lICovCisgIC8qICAgdGhlbSBmb3IgY2VydGFpbiBjb25maWd1cmF0aW9ucyBvbmx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICNkZWZpbmUgRlRfRVhQT1JUKHgpICAgICAgZXh0ZXJuIHggKi8KKy8qICNkZWZpbmUgRlRfRVhQT1JUX0RFRih4KSAgeCAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBHbHlwaCBQb3N0c2NyaXB0IE5hbWVzIGhhbmRsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgQnkgZGVmYXVsdCwgRnJlZVR5cGUgMiBpcyBjb21waWxlZCB3aXRoIHRoZSBgcHNuYW1lcycgbW9kdWxlLiAgVGhpcyAqLworICAvKiAgIG1vZHVsZSBpcyBpbiBjaGFyZ2Ugb2YgY29udmVydGluZyBhIGdseXBoIG5hbWUgc3RyaW5nIGludG8gYSAgICAgICAgKi8KKyAgLyogICBVbmljb2RlIHZhbHVlLCBvciByZXR1cm4gYSBNYWNpbnRvc2ggc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3IgdGhlICAgICovCisgIC8qICAgdXNlIHdpdGggdGhlIFRydWVUeXBlIGBwb3N0JyB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBVbmRlZmluZSB0aGlzIG1hY3JvIGlmIHlvdSBkbyBub3Qgd2FudCBgcHNuYW1lcycgY29tcGlsZWQgaW4geW91ciAgICovCisgIC8qICAgYnVpbGQgb2YgRnJlZVR5cGUuICBUaGlzIGhhcyB0aGUgZm9sbG93aW5nIGVmZmVjdHM6ICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAtIFRoZSBUcnVlVHlwZSBkcml2ZXIgd2lsbCBwcm92aWRlIGl0cyBvd24gc2V0IG9mIGdseXBoIG5hbWVzLCAgICAgICovCisgIC8qICAgICBpZiB5b3UgYnVpbGQgaXQgdG8gc3VwcG9ydCBwb3N0c2NyaXB0IG5hbWVzIGluIHRoZSBUcnVlVHlwZSAgICAgICAqLworICAvKiAgICAgYHBvc3QnIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgLSBUaGUgVHlwZSAxIGRyaXZlciB3aWxsIG5vdCBiZSBhYmxlIHRvIHN5bnRoZXNpemUgYSBVbmljb2RlICAgICAgICAqLworICAvKiAgICAgY2hhcm1hcCBvdXQgb2YgdGhlIGdseXBocyBmb3VuZCBpbiB0aGUgZm9udHMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgWW91IHdvdWxkIG5vcm1hbGx5IHVuZGVmaW5lIHRoaXMgY29uZmlndXJhdGlvbiBtYWNybyB3aGVuIGJ1aWxkaW5nICAqLworICAvKiAgIGEgdmVyc2lvbiBvZiBGcmVlVHlwZSB0aGF0IGRvZXNuJ3QgY29udGFpbiBhIFR5cGUgMSBvciBDRkYgZHJpdmVyLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBQb3N0c2NyaXB0IE5hbWVzIHRvIFVuaWNvZGUgVmFsdWVzIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgQnkgZGVmYXVsdCwgRnJlZVR5cGUgMiBpcyBidWlsdCB3aXRoIHRoZSBgUFNOYW1lcycgbW9kdWxlIGNvbXBpbGVkICAqLworICAvKiAgIGluLiAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgbW9kdWxlIGlzIHVzZWQgdG8gY29udmVydCBhIGdseXBoIG5hbWUgKi8KKyAgLyogICBpbnRvIGEgVW5pY29kZSB2YWx1ZS4gIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgaW4gb3JkZXIgdG8gICAgICAgICovCisgIC8qICAgc3ludGhlc2l6ZSBvbiB0aGUgZmx5IGEgVW5pY29kZSBjaGFybWFwIGZyb20gdGhlIENGRi9UeXBlIDEgZHJpdmVyICAqLworICAvKiAgIHRocm91Z2ggYSBiaWcgdGFibGUgbmFtZWQgdGhlIGBBZG9iZSBHbHlwaCBMaXN0JyAoQUdMKS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVW5kZWZpbmUgdGhpcyBtYWNybyBpZiB5b3UgZG8gbm90IHdhbnQgdGhlIEFkb2JlIEdseXBoIExpc3QgICAgICAgICAqLworICAvKiAgIGNvbXBpbGVkIGluIHlvdXIgYFBTTmFtZXMnIG1vZHVsZS4gIFRoZSBUeXBlIDEgZHJpdmVyIHdpbGwgbm90IGJlICAgKi8KKyAgLyogICBhYmxlIHRvIHN5bnRoZXNpemUgYSBVbmljb2RlIGNoYXJtYXAgb3V0IG9mIHRoZSBnbHlwaHMgZm91bmQgaW4gdGhlICovCisgIC8qICAgZm9udHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9BRE9CRV9HTFlQSF9MSVNUCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN1cHBvcnQgZm9yIE1hYyBmb250cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBEZWZpbmUgdGhpcyBtYWNybyBpZiB5b3Ugd2FudCBzdXBwb3J0IGZvciBvdXRsaW5lIGZvbnRzIGluIE1hYyAgICAgICovCisgIC8qICAgZm9ybWF0IChtYWMgZGZvbnQsIG1hYyByZXNvdXJjZSwgbWFjYmluYXJ5IGNvbnRhaW5pbmcgYSBtYWMgICAgICAgICAqLworICAvKiAgIHJlc291cmNlKSBvbiBub24tTWFjIHBsYXRmb3Jtcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgTm90ZSB0aGF0IHRoZSBgRk9ORCcgcmVzb3VyY2UgaXNuJ3QgY2hlY2tlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8vI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX01BQ19GT05UUworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBHdWVzc2luZyBtZXRob2RzIHRvIGFjY2VzcyBlbWJlZGRlZCByZXNvdXJjZSBmb3JrcyAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRW5hYmxlIGV4dHJhIE1hYyBmb250cyBzdXBwb3J0IG9uIG5vbi1NYWMgcGxhdGZvcm1zIChlLmcuICAgICAgICAgICAqLworICAvKiAgIEdOVS9MaW51eCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgUmVzb3VyY2UgZm9ya3Mgd2hpY2ggaW5jbHVkZSBmb250cyBkYXRhIGFyZSBzdG9yZWQgc29tZXRpbWVzIGluICAgICAqLworICAvKiAgIGxvY2F0aW9ucyB3aGljaCB1c2VycyBvciBkZXZlbG9wZXJzIGRvbid0IGV4cGVjdGVkLiAgSW4gc29tZSBjYXNlcywgKi8KKyAgLyogICByZXNvdXJjZSBmb3JrcyBzdGFydCB3aXRoIHNvbWUgb2Zmc2V0IGZyb20gdGhlIGhlYWQgb2YgYSBmaWxlLiAgSW4gICovCisgIC8qICAgb3RoZXIgY2FzZXMsIHRoZSBhY3R1YWwgcmVzb3VyY2UgZm9yayBpcyBzdG9yZWQgaW4gZmlsZSBkaWZmZXJlbnQgICAqLworICAvKiAgIGZyb20gd2hhdCB0aGUgdXNlciBzcGVjaWZpZXMuICBJZiB0aGlzIG9wdGlvbiBpcyBhY3RpdmF0ZWQsICAgICAgICAgKi8KKyAgLyogICBGcmVlVHlwZSB0cmllcyB0byBndWVzcyB3aGV0aGVyIHN1Y2ggb2Zmc2V0cyBvciBkaWZmZXJlbnQgZmlsZSAgICAgICovCisgIC8qICAgbmFtZXMgbXVzdCBiZSB1c2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBOb3RlIHRoYXQgbm9ybWFsLCBkaXJlY3QgYWNjZXNzIG9mIHJlc291cmNlIGZvcmtzIGlzIGNvbnRyb2xsZWQgdmlhICovCisgIC8qICAgdGhlIEZUX0NPTkZJR19PUFRJT05fTUFDX0ZPTlRTIG9wdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX01BQ19GT05UUworI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX0dVRVNTSU5HX0VNQkVEREVEX1JGT1JLCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQWxsb3cgdGhlIHVzZSBvZiBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2UgdG8gbG9hZCB0eXBlZmFjZXMgdGhhdCAgICAgICovCisgIC8qIGNvbnRhaW4gbm8gZ2x5cGggZGF0YSwgYnV0IHN1cHBseSBpdCB2aWEgYSBjYWxsYmFjayBmdW5jdGlvbi4gICAgICAgICAqLworICAvKiBUaGlzIGlzIHJlcXVpcmVkIGJ5IGNsaWVudHMgc3VwcG9ydGluZyBkb2N1bWVudCBmb3JtYXRzIHdoaWNoICAgICAgICAgKi8KKyAgLyogc3VwcGx5IGZvbnQgZGF0YSBpbmNyZW1lbnRhbGx5IGFzIHRoZSBkb2N1bWVudCBpcyBwYXJzZWQsIHN1Y2ggICAgICAgICovCisgIC8qIGFzIHRoZSBHaG9zdHNjcmlwdCBpbnRlcnByZXRlciBmb3IgdGhlIFBvc3RTY3JpcHQgbGFuZ3VhZ2UuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgcmVuZGVyIHBvb2wgdXNlZCBieSB0aGUgc2Nhbi1saW5lIGNvbnZlcnRlciAgKi8KKyAgLyogdG8gZG8gYWxsIG9mIGl0cyB3b3JrLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDRLQnl0ZSBpZiB5b3UgdXNlIEZyZWVUeXBlIHRvIHJhc3Rlcml6ZSAgICAgKi8KKyAgLyogZ2x5cGhzOyBvdGhlcndpc2UsIHlvdSBtYXkgc2V0IGl0IHRvIHplcm8gdG8gYXZvaWQgdW5uZWNlc3NhcnkgICAgICAgICovCisgIC8qIGFsbG9jYXRpb24gb2YgdGhlIHJlbmRlciBwb29sLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfUkVOREVSX1BPT0xfU0laRSAgMTYzODRMCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZUX01BWF9NT0RVTEVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUaGUgbWF4aW11bSBudW1iZXIgb2YgbW9kdWxlcyB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGluIGEgc2luZ2xlICAgICovCisgIC8qICAgRnJlZVR5cGUgbGlicmFyeSBvYmplY3QuICAzMiBpcyB0aGUgZGVmYXVsdC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfTUFYX01PRFVMRVMgIDMyCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlYnVnIGxldmVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGcmVlVHlwZSBjYW4gYmUgY29tcGlsZWQgaW4gZGVidWcgb3IgdHJhY2UgbW9kZS4gIEluIGRlYnVnIG1vZGUsICAgICovCisgIC8qICAgZXJyb3JzIGFyZSByZXBvcnRlZCB0aHJvdWdoIHRoZSBgZnRkZWJ1ZycgY29tcG9uZW50LiAgSW4gdHJhY2UgICAgICAqLworICAvKiAgIG1vZGUsIGFkZGl0aW9uYWwgbWVzc2FnZXMgYXJlIHNlbnQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dCBkdXJpbmcgICAgKi8KKyAgLyogICBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERlZmluZSBGVF9ERUJVR19MRVZFTF9FUlJPUiB0byBidWlsZCB0aGUgbGlicmFyeSBpbiBkZWJ1ZyBtb2RlLiAgICAgKi8KKyAgLyogICBEZWZpbmUgRlRfREVCVUdfTEVWRUxfVFJBQ0UgdG8gYnVpbGQgaXQgaW4gdHJhY2UgbW9kZS4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERvbid0IGRlZmluZSBhbnkgb2YgdGhlc2UgbWFjcm9zIHRvIGNvbXBpbGUgaW4gYHJlbGVhc2UnIG1vZGUhICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRG8gbm90ICN1bmRlZiB0aGVzZSBtYWNyb3MgaGVyZSBzaW5jZSB0aGUgYnVpbGQgc3lzdGVtIG1pZ2h0IGRlZmluZSAqLworICAvKiAgIHRoZW0gZm9yIGNlcnRhaW4gY29uZmlndXJhdGlvbnMgb25seS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAjZGVmaW5lIEZUX0RFQlVHX0xFVkVMX0VSUk9SICovCisvKiAjZGVmaW5lIEZUX0RFQlVHX0xFVkVMX1RSQUNFICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEF1dG9maXR0ZXIgZGVidWdnaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBJZiBGVF9ERUJVR19BVVRPRklUIGlzIGRlZmluZWQsIEZyZWVUeXBlIHByb3ZpZGVzIHNvbWUgbWVhbnMgdG8gICAgICovCisgIC8qICAgY29udHJvbCB0aGUgYXV0b2ZpdHRlciBiZWhhdmlvdXIgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyB3aXRoIGdsb2JhbCAqLworICAvKiAgIGJvb2xlYW4gdmFyaWFibGVzIChjb25zZXF1ZW50bHksIHlvdSBzaG91bGQgKm5ldmVyKiBlbmFibGUgdGhpcyAgICAgKi8KKyAgLyogICB3aGlsZSBjb21waWxpbmcgaW4gYHJlbGVhc2UnIG1vZGUpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgX2FmX2RlYnVnX2Rpc2FibGVfaG9yel9oaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIF9hZl9kZWJ1Z19kaXNhYmxlX3ZlcnRfaGludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBfYWZfZGVidWdfZGlzYWJsZV9ibHVlX2hpbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBBZGRpdGlvbmFsbHksIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHByb3ZpZGUgZHVtcHMgb2YgdmFyaW91cyAgICAgICovCisgIC8qICAgaW50ZXJuYWwgYXV0b2ZpdCBzdHJ1Y3R1cmVzIHRvIHN0ZG91dCAodXNpbmcgYHByaW50ZicpOiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGFmX2dseXBoX2hpbnRzX2R1bXBfcG9pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBhZl9nbHlwaF9oaW50c19kdW1wX3NlZ21lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgYWZfZ2x5cGhfaGludHNfZHVtcF9lZGdlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgQXMgYW4gYXJndW1lbnQsIHRoZXkgdXNlIGFub3RoZXIgZ2xvYmFsIHZhcmlhYmxlOiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIF9hZl9kZWJ1Z19oaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFBsZWFzZSBoYXZlIGEgbG9vayBhdCB0aGUgYGZ0Z3JpZCcgZGVtbyBwcm9ncmFtIHRvIHNlZSBob3cgdGhvc2UgICAgKi8KKyAgLyogICB2YXJpYWJsZXMgYW5kIG1hY3JvcyBzaG91bGQgYmUgdXNlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERvIG5vdCAjdW5kZWYgdGhlc2UgbWFjcm9zIGhlcmUgc2luY2UgdGhlIGJ1aWxkIHN5c3RlbSBtaWdodCBkZWZpbmUgKi8KKyAgLyogICB0aGVtIGZvciBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zIG9ubHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBGVF9ERUJVR19BVVRPRklUICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE1lbW9yeSBEZWJ1Z2dpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGcmVlVHlwZSBub3cgY29tZXMgd2l0aCBhbiBpbnRlZ3JhdGVkIG1lbW9yeSBkZWJ1Z2dlciB0aGF0IGlzICAgICAgICovCisgIC8qICAgY2FwYWJsZSBvZiBkZXRlY3Rpbmcgc2ltcGxlIGVycm9ycyBsaWtlIG1lbW9yeSBsZWFrcyBvciBkb3VibGUgICAgICAqLworICAvKiAgIGRlbGV0ZXMuICBUbyBjb21waWxlIGl0IHdpdGhpbiB5b3VyIGJ1aWxkIG9mIHRoZSBsaWJyYXJ5LCB5b3UgICAgICAgKi8KKyAgLyogICBzaG91bGQgZGVmaW5lIEZUX0RFQlVHX01FTU9SWSBoZXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIE5vdGUgdGhhdCB0aGUgbWVtb3J5IGRlYnVnZ2VyIGlzIG9ubHkgYWN0aXZhdGVkIGF0IHJ1bnRpbWUgd2hlbiAgICAgKi8KKyAgLyogICB3aGVuIHRoZSBfZW52aXJvbm1lbnRfIHZhcmlhYmxlIGBGVDJfREVCVUdfTUVNT1JZJyBpcyBkZWZpbmVkIGFsc28hICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIERvIG5vdCAjdW5kZWYgdGhpcyBtYWNybyBoZXJlIHNpbmNlIHRoZSBidWlsZCBzeXN0ZW0gbWlnaHQgZGVmaW5lICAgKi8KKyAgLyogICBpdCBmb3IgY2VydGFpbiBjb25maWd1cmF0aW9ucyBvbmx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBGVF9ERUJVR19NRU1PUlkgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTW9kdWxlIGVycm9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIElmIHRoaXMgbWFjcm8gaXMgc2V0ICh3aGljaCBpcyBfbm90XyB0aGUgZGVmYXVsdCksIHRoZSBoaWdoZXIgYnl0ZSAgKi8KKyAgLyogICBvZiBhbiBlcnJvciBjb2RlIGdpdmVzIHRoZSBtb2R1bGUgaW4gd2hpY2ggdGhlIGVycm9yIGhhcyBvY2N1cnJlZCwgICovCisgIC8qICAgd2hpbGUgdGhlIGxvd2VyIGJ5dGUgaXMgdGhlIHJlYWwgZXJyb3IgY29kZS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBTZXR0aW5nIHRoaXMgbWFjcm8gbWFrZXMgc2Vuc2UgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyBvbmx5LCBzaW5jZSAgICovCisgIC8qICAgaXQgd291bGQgYnJlYWsgc291cmNlIGNvbXBhdGliaWxpdHkgb2YgY2VydGFpbiBwcm9ncmFtcyB0aGF0IHVzZSAgICAqLworICAvKiAgIEZyZWVUeXBlIDIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgTW9yZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZXMgZnRtb2RlcnIuaCBhbmQgZnRlcnJvcnMuaC4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiBGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFBvc2l0aW9uIEluZGVwZW5kZW50IENvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBJZiB0aGlzIG1hY3JvIGlzIHNldCAod2hpY2ggaXMgX25vdF8gdGhlIGRlZmF1bHQpLCBGcmVlVHlwZTIgd2lsbCAgICovCisgIC8qICAgYXZvaWQgY3JlYXRpbmcgY29uc3RhbnRzIHRoYXQgcmVxdWlyZSBhZGRyZXNzIGZpeHVwcy4gIEluc3RlYWQgdGhlICAqLworICAvKiAgIGNvbnN0YW50cyB3aWxsIGJlIG1vdmVkIGludG8gYSBzdHJ1Y3QgYW5kIGFkZGl0aW9uYWwgaW50aWFsaXphdGlvbiAgKi8KKyAgLyogICBjb2RlIHdpbGwgYmUgdXNlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFNldHRpbmcgdGhpcyBtYWNybyBpcyBuZWVkZWQgZm9yIHN5c3RlbXMgdGhhdCBwcm9oaWJpdCBhZGRyZXNzICAgICAgKi8KKyAgLyogICBmaXh1cHMsIHN1Y2ggYXMgQlJFVy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgIFMgRiBOIFQgICBEIFIgSSBWIEUgUiAgICBDIE8gTiBGIEkgRyBVIFIgQSBUIEkgTyBOICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMgaWYgeW91IHdhbnQgdG8gc3VwcG9ydCAgICAgICAqLworICAvKiBlbWJlZGRlZCBiaXRtYXBzIGluIGFsbCBmb3JtYXRzIHVzaW5nIHRoZSBTRk5UIG1vZHVsZSAobmFtZWx5ICAgICAgICAgKi8KKyAgLyogVHJ1ZVR5cGUgJiBPcGVuVHlwZSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBEZWZpbmUgVFRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTIGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gICAgKi8KKyAgLyogbG9hZCBhbmQgZW51bWVyYXRlIHRoZSBnbHlwaCBQb3N0c2NyaXB0IG5hbWVzIGluIGEgVHJ1ZVR5cGUgb3IgICAgICAgICovCisgIC8qIE9wZW5UeXBlIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTm90ZSB0aGF0IHdoZW4geW91IGRvIG5vdCBjb21waWxlIHRoZSBgUFNOYW1lcycgbW9kdWxlIGJ5IHVuZGVmaW5pbmcgICovCisgIC8qIHRoZSBhYm92ZSBGVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMsIHRoZSBgc2ZudCcgbW9kdWxlIHdpbGwgICAqLworICAvKiBjb250YWluIGFkZGl0aW9uYWwgY29kZSB1c2VkIHRvIHJlYWQgdGhlIFBTIE5hbWVzIHRhYmxlIGZyb20gYSBmb250LiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIChCeSBkZWZhdWx0LCB0aGUgbW9kdWxlIHVzZXMgYFBTTmFtZXMnIHRvIGV4dHJhY3QgZ2x5cGggbmFtZXMuKSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSBUVF9DT05GSUdfT1BUSU9OX1NGTlRfTkFNRVMgaWYgeW91ciBhcHBsaWNhdGlvbnMgbmVlZCB0byAgICAgICAqLworICAvKiBhY2Nlc3MgdGhlIGludGVybmFsIG5hbWUgdGFibGUgaW4gYSBTRk5ULWJhc2VkIGZvcm1hdCBsaWtlIFRydWVUeXBlICAgKi8KKyAgLyogb3IgT3BlblR5cGUuICBUaGUgbmFtZSB0YWJsZSBjb250YWlucyB2YXJpb3VzIHN0cmluZ3MgdXNlZCB0byAgICAgICAgICovCisgIC8qIGRlc2NyaWJlIHRoZSBmb250LCBsaWtlIGZhbWlseSBuYW1lLCBjb3B5cmlnaHQsIHZlcnNpb24sIGV0Yy4gIEl0ICAgICAqLworICAvKiBkb2VzIG5vdCBjb250YWluIGFueSBnbHlwaCBuYW1lIHRob3VnaC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEFjY2Vzc2luZyBTRk5UIG5hbWVzIGlzIGRvbmUgdGhyb3VnaCB0aGUgZnVuY3Rpb25zIGRlY2xhcmVkIGluICAgICAgICAqLworICAvKiBgZnJlZXR5cGUvZnRzbmFtZXMuaCcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX0NPTkZJR19PUFRJT05fU0ZOVF9OQU1FUworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUcnVlVHlwZSBDTWFwIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgSGVyZSB5b3UgY2FuIGZpbmUtdHVuZSB3aGljaCBUcnVlVHlwZSBDTWFwIHRhYmxlIGZvcm1hdCBzaGFsbCBiZSAgICAqLworICAvKiAgIHN1cHBvcnRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFRfQ09ORklHX0NNQVBfRk9STUFUXzAKKyNkZWZpbmUgVFRfQ09ORklHX0NNQVBfRk9STUFUXzIKKyNkZWZpbmUgVFRfQ09ORklHX0NNQVBfRk9STUFUXzQKKyNkZWZpbmUgVFRfQ09ORklHX0NNQVBfRk9STUFUXzYKKyNkZWZpbmUgVFRfQ09ORklHX0NNQVBfRk9STUFUXzgKKyNkZWZpbmUgVFRfQ09ORklHX0NNQVBfRk9STUFUXzEwCisjZGVmaW5lIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF8xMgorI2RlZmluZSBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMTMKKyNkZWZpbmUgVFRfQ09ORklHX0NNQVBfRk9STUFUXzE0CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICBUIFIgVSBFIFQgWSBQIEUgICBEIFIgSSBWIEUgUiAgICBDIE8gTiBGIEkgRyBVIFIgQSBUIEkgTyBOICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSBUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgICAqLworICAvKiBhIGJ5dGVjb2RlIGludGVycHJldGVyIGluIHRoZSBUcnVlVHlwZSBkcml2ZXIuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEJ5IHVuZGVmaW5pbmcgdGhpcywgeW91IHdpbGwgb25seSBjb21waWxlIHRoZSBjb2RlIG5lY2Vzc2FyeSB0byBsb2FkICAqLworICAvKiBUcnVlVHlwZSBnbHlwaHMgd2l0aG91dCBoaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRG8gbm90ICN1bmRlZiB0aGlzIG1hY3JvIGhlcmUsIHNpbmNlIHRoZSBidWlsZCBzeXN0ZW0gbWlnaHQgICAgICAgICAqLworICAvKiAgIGRlZmluZSBpdCBmb3IgY2VydGFpbiBjb25maWd1cmF0aW9ucyBvbmx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyBpZiB5b3Ugd2FudCB0byBjb21waWxlICAgICAgICovCisgIC8qIEVYUEVSSU1FTlRBTCBzdWJwaXhlbCBoaW50aW5nIHN1cHBvcnQgaW50byB0aGUgVHJ1ZVR5cGUgZHJpdmVyLiAgVGhpcyAqLworICAvKiByZXBsYWNlcyB0aGUgbmF0aXZlIFRydWVUeXBlIGhpbnRpbmcgbWVjaGFuaXNtIHdoZW4gYW55dGhpbmcgYnV0ICAgICAgKi8KKyAgLyogRlRfUkVOREVSX01PREVfTU9OTyBpcyByZXF1ZXN0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBFbmFibGluZyB0aGlzIGNhdXNlcyB0aGUgVHJ1ZVR5cGUgZHJpdmVyIHRvIGlnbm9yZSBpbnN0cnVjdGlvbnMgdW5kZXIgKi8KKyAgLyogY2VydGFpbiBjb25kaXRpb25zLiAgVGhpcyBpcyBkb25lIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgZ3VpZGUgaGVyZSwgICovCisgIC8qIHdpdGggc29tZSBtaW5vciBkaWZmZXJlbmNlczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L2NsZWFydHlwZS90cnVldHlwZWNsZWFydHlwZS5hc3B4ICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBCeSB1bmRlZmluaW5nIHRoaXMsIHlvdSBvbmx5IGNvbXBpbGUgdGhlIGNvZGUgbmVjZXNzYXJ5IHRvIGhpbnQgICAgICAgKi8KKyAgLyogVHJ1ZVR5cGUgZ2x5cGhzIHdpdGggbmF0aXZlIFRUIGhpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFRoaXMgb3B0aW9uIHJlcXVpcmVzIFRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIgdG8gYmUgICAgKi8KKyAgLyogICBkZWZpbmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSWYgeW91IGRlZmluZSBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORywgYSBzcGVjaWFsIHZlcnNpb24gICovCisgIC8qIG9mIHRoZSBUcnVlVHlwZSBieXRlY29kZSBpbnRlcnByZXRlciBpcyB1c2VkIHRoYXQgZG9lc24ndCBpbXBsZW1lbnQgICAqLworICAvKiBhbnkgb2YgdGhlIHBhdGVudGVkIG9wY29kZXMgYW5kIGFsZ29yaXRobXMuICBUaGUgcGF0ZW50cyByZWxhdGVkIHRvICAgKi8KKyAgLyogVHJ1ZVR5cGUgaGludGluZyBoYXZlIGV4cGlyZWQgd29ybGR3aWRlIHNpbmNlIE1heSAyMDEwOyB0aGlzIG9wdGlvbiAgICovCisgIC8qIGlzIG5vdyBkZXByZWNhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTm90ZSB0aGF0IHRoZSBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORyBtYWNybyBpcyAqaWdub3JlZCogICovCisgIC8qIGlmIHlvdSBkZWZpbmUgVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUjsgaW4gb3RoZXIgd29yZHMsICAqLworICAvKiBlaXRoZXIgZGVmaW5lIFRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIgb3IgICAgICAgICAgICAgICAgKi8KKyAgLyogVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcgYnV0IG5vdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIG1hY3JvIGlzIG9ubHkgdXNlZnVsIGZvciBhIHNtYWxsIG51bWJlciBvZiBmb250IGZpbGVzIChtb3N0bHkgICAgKi8KKyAgLyogZm9yIEFzaWFuIHNjcmlwdHMpIHRoYXQgcmVxdWlyZSBieXRlY29kZSBpbnRlcnByZXRhdGlvbiB0byBwcm9wZXJseSAgICovCisgIC8qIGxvYWQgZ2x5cGhzLiAgRm9yIGFsbCBvdGhlciBmb250cywgdGhpcyBwcm9kdWNlcyB1bnBsZWFzYW50IHJlc3VsdHMsICAqLworICAvKiB0aHVzIHRoZSB1bnBhdGVudGVkIGludGVycHJldGVyIGlzIG5ldmVyIHVzZWQgdG8gbG9hZCBnbHlwaHMgZnJvbSAgICAgKi8KKyAgLyogVHJ1ZVR5cGUgZm9udHMgdW5sZXNzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHR3byBvcHRpb25zIGlzIHVzZWQuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIC0gVGhlIHVucGF0ZW50ZWQgaW50ZXJwcmV0ZXIgaXMgZXhwbGljaXRseSBhY3RpdmF0ZWQgYnkgdGhlIHVzZXIgICAgKi8KKyAgLyogICAgIHRocm91Z2ggdGhlIEZUX1BBUkFNX1RBR19VTlBBVEVOVEVEX0hJTlRJTkcgcGFyYW1ldGVyIHRhZyAgICAgICAgICovCisgIC8qICAgICB3aGVuIG9wZW5pbmcgdGhlIEZUX0ZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAtIEZyZWVUeXBlIGRldGVjdHMgdGhhdCB0aGUgRlRfRmFjZSBjb3JyZXNwb25kcyB0byBvbmUgb2YgdGhlICAgICAgICovCisgIC8qICAgICBgdHJpY2snIGZvbnRzIChlLmcuLCBgTWluZ2xpdScpIGl0IGtub3dzIGFib3V0LiAgVGhlIGZvbnQgZW5naW5lICAqLworICAvKiAgICAgY29udGFpbnMgYSBoYXJkLWNvZGVkIGxpc3Qgb2YgZm9udCBuYW1lcyBhbmQgb3RoZXIgbWF0Y2hpbmcgICAgICAgKi8KKyAgLyogICAgIHBhcmFtZXRlcnMgKHNlZSBmdW5jdGlvbiBgdHRfZmFjZV9pbml0JyBpbiBmaWxlICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBgc3JjL3RydWV0eXBlL3R0b2Jqcy5jJykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSGVyZSBhIHNhbXBsZSBjb2RlIHNuaXBwZXQgZm9yIHVzaW5nIEZUX1BBUkFNX1RBR19VTlBBVEVOVEVEX0hJTlRJTkcuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIEZUX1BhcmFtZXRlciAgcGFyYW1ldGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBGVF9PcGVuX0FyZ3MgIG9wZW5fYXJnczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBwYXJhbWV0ZXIudGFnID0gRlRfUEFSQU1fVEFHX1VOUEFURU5URURfSElOVElORzsgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIG9wZW5fYXJncy5mbGFncyAgICAgID0gRlRfT1BFTl9QQVRITkFNRSB8IEZUX09QRU5fUEFSQU1TOyAgICAgICAgICovCisgIC8qICAgICBvcGVuX2FyZ3MucGF0aG5hbWUgICA9IG15X2ZvbnRfcGF0aG5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgb3Blbl9hcmdzLm51bV9wYXJhbXMgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIG9wZW5fYXJncy5wYXJhbXMgICAgID0gJnBhcmFtZXRlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgZXJyb3IgPSBGVF9PcGVuX0ZhY2UoIGxpYnJhcnksICZvcGVuX2FyZ3MsIGluZGV4LCAmZmFjZSApOyAgICAgICAgKi8KKyAgLyogICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICNkZWZpbmUgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIFRUX0NPTkZJR19PUFRJT05fSU5URVJQUkVURVJfU1dJVENIIHRvIGNvbXBpbGUgdGhlIFRydWVUeXBlICAgICovCisgIC8qIGJ5dGVjb2RlIGludGVycHJldGVyIHdpdGggYSBodWdlIHN3aXRjaCBzdGF0ZW1lbnQsIHJhdGhlciB0aGFuIGEgY2FsbCAqLworICAvKiB0YWJsZS4gIFRoaXMgcmVzdWx0cyBpbiBzbWFsbGVyIGFuZCBmYXN0ZXIgY29kZSBmb3IgYSBudW1iZXIgb2YgICAgICAgKi8KKyAgLyogYXJjaGl0ZWN0dXJlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlIGhvd2V2ZXIgdGhhdCBvbiBzb21lIGNvbXBpbGVyL3Byb2Nlc3NvciBjb21iaW5hdGlvbnMsIHVuZGVmaW5pbmcgKi8KKyAgLyogdGhpcyBtYWNybyB3aWxsIGdlbmVyYXRlIGZhc3RlciwgdGhvdWdoIGxhcmdlciwgY29kZS4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9DT05GSUdfT1BUSU9OX0lOVEVSUFJFVEVSX1NXSVRDSAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBEZWZpbmUgVFRfQ09ORklHX09QVElPTl9DT01QT05FTlRfT0ZGU0VUX1NDQUxFRCB0byBjb21waWxlIHRoZSAgICAgICAgKi8KKyAgLyogVHJ1ZVR5cGUgZ2x5cGggbG9hZGVyIHRvIHVzZSBBcHBsZSdzIGRlZmluaXRpb24gb2YgaG93IHRvIGhhbmRsZSAgICAgICovCisgIC8qIGNvbXBvbmVudCBvZmZzZXRzIGluIGNvbXBvc2l0ZSBnbHlwaHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQXBwbGUgYW5kIE1TIGRpc2FncmVlIG9uIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNvbXBvbmVudCBvZmZzZXRzICAgICovCisgIC8qIGluIGNvbXBvc2l0ZXMuICBBcHBsZSBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgc2NhbGVkIGJ5IHRoZSBzY2FsaW5nICAqLworICAvKiBmYWN0b3JzIGluIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggKHJvdWdobHksIGl0J3MgbW9yZSBjb21wbGV4KSAgICAgKi8KKyAgLyogd2hpbGUgTVMgc2F5cyB0aGV5IHNob3VsZCBub3QuICBPcGVuVHlwZSBkZWZpbmVzIHR3byBiaXRzIGluIHRoZSAgICAgICovCisgIC8qIGNvbXBvc2l0ZSBmbGFncyBhcnJheSB3aGljaCBjYW4gYmUgdXNlZCB0byBkaXNhbWJpZ3VhdGUsIGJ1dCBvbGQgICAgICAqLworICAvKiBmb250cyB3aWxsIG5vdCBoYXZlIHRoZW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvb3RzcGVjL2dseWYuaHRtICAgICAgICAgICAgICAgICAqLworICAvKiAgIGh0dHA6Ly9mb250cy5hcHBsZS5jb20vVFRSZWZNYW4vUk0wNi9DaGFwNmdseWYuaHRtbCAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgVFRfQ09ORklHX09QVElPTl9DT01QT05FTlRfT0ZGU0VUX1NDQUxFRAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBEZWZpbmUgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVCBpZiB5b3Ugd2FudCB0byBpbmNsdWRlICAgICAgICAgKi8KKyAgLyogc3VwcG9ydCBmb3IgQXBwbGUncyBkaXN0b3J0YWJsZSBmb250IHRlY2hub2xvZ3kgKGZ2YXIsIGd2YXIsIGN2YXIsICAgICovCisgIC8qIGFuZCBhdmFyIHRhYmxlcykuICBUaGlzIGhhcyBtYW55IHNpbWlsYXJpdGllcyB0byBUeXBlIDEgTXVsdGlwbGUgICAgICAqLworICAvKiBNYXN0ZXJzIHN1cHBvcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBEZWZpbmUgVFRfQ09ORklHX09QVElPTl9CREYgaWYgeW91IHdhbnQgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciAgICAgICAgKi8KKyAgLyogYW4gZW1iZWRkZWQgYEJERiAnIHRhYmxlIHdpdGhpbiBTRk5ULWJhc2VkIGJpdG1hcCBmb3JtYXRzLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmIFRUX0NPTkZJR19PUFRJT05fQkRGCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgIFQgWSBQIEUgMSAgIEQgUiBJIFYgRSBSICAgIEMgTyBOIEYgSSBHIFUgUiBBIFQgSSBPIE4gICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVDFfTUFYX0RJQ1RfREVQVEggaXMgdGhlIG1heGltdW0gZGVwdGggb2YgbmVzdCBkaWN0aW9uYXJpZXMgYW5kICAgICAgICovCisgIC8qIGFycmF5cyBpbiB0aGUgVHlwZSAxIHN0cmVhbSAoc2VlIHQxbG9hZC5jKS4gIEEgbWluaW11bSBvZiA0IGlzICAgICAgICAqLworICAvKiByZXF1aXJlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFQxX01BWF9ESUNUX0RFUFRIICA1CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFQxX01BWF9TVUJSU19DQUxMUyBkZXRhaWxzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBuZXN0ZWQgc3ViLXJvdXRpbmUgICAqLworICAvKiBjYWxscyBkdXJpbmcgZ2x5cGggbG9hZGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFQxX01BWF9TVUJSU19DQUxMUyAgMTYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVDFfTUFYX0NIQVJTVFJJTkdfT1BFUkFORFMgaXMgdGhlIGNoYXJzdHJpbmcgc3RhY2sncyBjYXBhY2l0eS4gIEEgICAgICovCisgIC8qIG1pbmltdW0gb2YgMTYgaXMgcmVxdWlyZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIENoaW5lc2UgZm9udCBNaW5nVGlFRy1NZWRpdW0gKENOUyAxMTY0MyBjaGFyYWN0ZXIgc2V0KSBuZWVkcyAyNTYuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUMV9NQVhfQ0hBUlNUUklOR1NfT1BFUkFORFMgIDUxMgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBEZWZpbmUgdGhpcyBjb25maWd1cmF0aW9uIG1hY3JvIGlmIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlICAgICAgICAgICAgKi8KKyAgLyogY29tcGlsYXRpb24gb2YgYHQxYWZtJywgd2hpY2ggaXMgaW4gY2hhcmdlIG9mIHJlYWRpbmcgVHlwZSAxIEFGTSAgICAgICovCisgIC8qIGZpbGVzIGludG8gYW4gZXhpc3RpbmcgZmFjZS4gIE5vdGUgdGhhdCBpZiBzZXQsIHRoZSBUMSBkcml2ZXIgd2lsbCBiZSAqLworICAvKiB1bmFibGUgdG8gcHJvZHVjZSBrZXJuaW5nIGRpc3RhbmNlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgVDFfQ09ORklHX09QVElPTl9OT19BRk0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRoaXMgY29uZmlndXJhdGlvbiBtYWNybyBpZiB5b3Ugd2FudCB0byBwcmV2ZW50IHRoZSAgICAgICAgICAgICovCisgIC8qIGNvbXBpbGF0aW9uIG9mIHRoZSBNdWx0aXBsZSBNYXN0ZXJzIGZvbnQgc3VwcG9ydCBpbiB0aGUgVHlwZSAxICAgICAgICAqLworICAvKiBkcml2ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgVDFfQ09ORklHX09QVElPTl9OT19NTV9TVVBQT1JUCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgIEMgRiBGICAgRCBSIEkgViBFIFIgICAgQyBPIE4gRiBJIEcgVSBSIEEgVCBJIE8gTiAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQ0ZGX0NPTkZJR19PUFRJT05fT0xEX0VOR0lORSBjb250cm9scyB3aGV0aGVyIHRoZSBwcmUtQWRvYmUgQ0ZGICAgICAgICovCisgIC8qIGVuZ2luZSBnZXRzIGNvbXBpbGVkIGludG8gRnJlZVR5cGUuICBJZiBkZWZpbmVkLCBpdCBpcyBwb3NzaWJsZSB0byAgICAqLworICAvKiBzd2l0Y2ggYmV0d2VlbiB0aGUgdHdvIGVuZ2luZXMgdXNpbmcgdGhlIGBoaW50aW5nLWVuZ2luZScgcHJvcGVydHkgb2YgKi8KKyAgLyogdGhlIGNmZiBkcml2ZXIgbW9kdWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBDRkZfQ09ORklHX09QVElPTl9PTERfRU5HSU5FICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICBBIFUgVCBPIEYgSSBUICAgTSBPIEQgVSBMIEUgICAgQyBPIE4gRiBJIEcgVSBSIEEgVCBJIE8gTiAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQ29tcGlsZSBhdXRvZml0IG1vZHVsZSB3aXRoIENKSyAoQ2hpbmVzZSwgSmFwYW5lc2UsIEtvcmVhbikgc2NyaXB0ICAgICovCisgIC8qIHN1cHBvcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQUZfQ09ORklHX09QVElPTl9DSksKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIENvbXBpbGUgYXV0b2ZpdCBtb2R1bGUgd2l0aCBJbmRpYyBzY3JpcHQgc3VwcG9ydC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQUZfQ09ORklHX09QVElPTl9JTkRJQworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQ29tcGlsZSBhdXRvZml0IG1vZHVsZSB3aXRoIHdhcnAgaGludGluZy4gIFRoZSBpZGVhIG9mIHRoZSB3YXJwaW5nICAgICovCisgIC8qIGNvZGUgaXMgdG8gc2xpZ2h0bHkgc2NhbGUgYW5kIHNoaWZ0IGEgZ2x5cGggd2l0aGluIGEgc2luZ2xlIGRpbWVuc2lvbiAqLworICAvKiBzbyB0aGF0IGFzIG11Y2ggb2YgaXRzIHNlZ21lbnRzIGFyZSBhbGlnbmVkIChtb3JlIG9yIGxlc3MpIG9uIHRoZSAgICAgKi8KKyAgLyogZ3JpZC4gIFRvIGZpbmQgb3V0IHRoZSBvcHRpbWFsIHNjYWxpbmcgYW5kIHNoaWZ0aW5nIHZhbHVlLCB2YXJpb3VzICAgICovCisgIC8qIHBhcmFtZXRlciBjb21iaW5hdGlvbnMgYXJlIHRyaWVkIGFuZCBzY29yZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBleHBlcmltZW50YWwgb3B0aW9uIGlzIG9ubHkgYWN0aXZlIGlmIHRoZSByZW5kZXIgbW9kZSBpcyAgICAgICAgICovCisgIC8qIEZUX1JFTkRFUl9NT0RFX0xJR0hULiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICNkZWZpbmUgQUZfQ09ORklHX09QVElPTl9VU0VfV0FSUEVSICovCisKKyAgLyogKi8KKworCisgIC8qCisgICAqICBUaGlzIG1hY3JvIGlzIG9ic29sZXRlLiAgU3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkIGluIEZyZWVUeXBlCisgICAqICB2ZXJzaW9uIDIuNS4KKyAgICovCisvKiAjZGVmaW5lIEZUX0NPTkZJR19PUFRJT05fT0xEX0lOVEVSTkFMUyAqLworCisKKyAgLyoKKyAgICogVGhpcyBtYWNybyBpcyBkZWZpbmVkIGlmIGVpdGhlciB1bnBhdGVudGVkIG9yIG5hdGl2ZSBUcnVlVHlwZQorICAgKiBoaW50aW5nIGlzIHJlcXVlc3RlZCBieSB0aGUgZGVmaW5pdGlvbnMgYWJvdmUuCisgICAqLworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIKKyNkZWZpbmUgIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorI3VuZGVmICAgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcKKyNlbGlmIGRlZmluZWQgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcKKyNkZWZpbmUgIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorI2VuZGlmCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19GVE9QVElPTl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdjZDIzNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oCkBAIC0wLDAgKzEsMTc0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHN0ZGxpYi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQU5TSS1zcGVjaWZpYyBsaWJyYXJ5IGFuZCBoZWFkZXIgY29uZmlndXJhdGlvbiBmaWxlIChzcGVjaWZpY2F0aW9uICAgKi8KKy8qICAgIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLTIwMDcsIDIwMDksIDIwMTEtMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGlzIHVzZWQgdG8gZ3JvdXAgYWxsICNpbmNsdWRlcyB0byB0aGUgQU5TSSBDIGxpYnJhcnkgdGhhdCAgICovCisgIC8qIEZyZWVUeXBlIG5vcm1hbGx5IHJlcXVpcmVzLiAgSXQgYWxzbyBkZWZpbmVzIG1hY3JvcyB0byByZW5hbWUgdGhlICAgICAqLworICAvKiBzdGFuZGFyZCBmdW5jdGlvbnMgd2l0aGluIHRoZSBGcmVlVHlwZSBzb3VyY2UgY29kZS4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIExvYWQgYSBmaWxlIHdoaWNoIGRlZmluZXMgX19GVFNURExJQl9IX18gYmVmb3JlIHRoaXMgb25lIHRvIG92ZXJyaWRlICAqLworICAvKiBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVFNURExJQl9IX18KKyNkZWZpbmUgX19GVFNURExJQl9IX18KKworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNkZWZpbmUgZnRfcHRyZGlmZl90ICBwdHJkaWZmX3QKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ2VyIGxpbWl0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBVSU5UX01BWCBhbmQgVUxPTkdfTUFYIGFyZSB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgY29tcHV0ZSB0aGUgc2l6ZSAgKi8KKyAgLyogb2YgYGludCcgYW5kIGBsb25nJyBpbiBieXRlcyBhdCBjb21waWxlLXRpbWUuICBTbyBmYXIsIHRoaXMgd29ya3MgICovCisgIC8qIGZvciBhbGwgcGxhdGZvcm1zIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIHRlc3RlZCBvbi4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTm90ZSB0aGF0IG9uIHRoZSBleHRyZW1lbHkgcmFyZSBwbGF0Zm9ybXMgdGhhdCBkbyBub3QgcHJvdmlkZSAgICAgICovCisgIC8qIGludGVnZXIgdHlwZXMgdGhhdCBhcmUgX2V4YWN0bHlfIDE2IGFuZCAzMiBiaXRzIHdpZGUgKGUuZy4gc29tZSAgICAqLworICAvKiBvbGQgQ3JheXMgd2hlcmUgYGludCcgaXMgMzYgYml0cyksIHdlIGRvIG5vdCBtYWtlIGFueSBndWFyYW50ZWUgICAgKi8KKyAgLyogYWJvdXQgdGhlIGNvcnJlY3QgYmVoYXZpb3VyIG9mIEZUMiB3aXRoIGFsbCBmb250cy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJbiB0aGVzZSBjYXNlLCBgZnRjb25maWcuaCcgd2lsbCByZWZ1c2UgdG8gY29tcGlsZSBhbnl3YXkgd2l0aCBhICAgKi8KKyAgLyogbWVzc2FnZSBsaWtlIGBjb3VsZG4ndCBmaW5kIDMyLWJpdCB0eXBlJyBvciBzb21ldGhpbmcgc2ltaWxhci4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSA8bGltaXRzLmg+CisKKyNkZWZpbmUgRlRfQ0hBUl9CSVQgICAgQ0hBUl9CSVQKKyNkZWZpbmUgRlRfVVNIT1JUX01BWCAgVVNIUlRfTUFYCisjZGVmaW5lIEZUX0lOVF9NQVggICAgIElOVF9NQVgKKyNkZWZpbmUgRlRfSU5UX01JTiAgICAgSU5UX01JTgorI2RlZmluZSBGVF9VSU5UX01BWCAgICBVSU5UX01BWAorI2RlZmluZSBGVF9VTE9OR19NQVggICBVTE9OR19NQVgKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIGNoYXJhY3RlciBhbmQgc3RyaW5nIHByb2Nlc3NpbmcgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2luY2x1ZGUvZnhjcnQvZnhfc3lzdGVtLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNkZWZpbmUgZnRfbWVtY2hyICAgRlhTWVNfbWVtY2hyCisjZGVmaW5lIGZ0X21lbWNtcCAgIEZYU1lTX21lbWNtcDMyCisjZGVmaW5lIGZ0X21lbWNweSAgIEZYU1lTX21lbWNweTMyCisjZGVmaW5lIGZ0X21lbW1vdmUgIEZYU1lTX21lbW1vdmUzMgorI2RlZmluZSBmdF9tZW1zZXQgICBGWFNZU19tZW1zZXQ4CisvLyNkZWZpbmUgZnRfc3RyY2F0ICAgRlhTWVNfc3RyY2F0CisjZGVmaW5lIGZ0X3N0cmNtcCAgIEZYU1lTX3N0cmNtcAorI2RlZmluZSBmdF9zdHJjcHkgICBGWFNZU19zdHJjcHkKKyNkZWZpbmUgZnRfc3RybGVuICAgRlhTWVNfc3RybGVuCisjZGVmaW5lIGZ0X3N0cm5jbXAgIEZYU1lTX3N0cm5jbXAKKyNkZWZpbmUgZnRfc3RybmNweSAgRlhTWVNfc3RybmNweQorI2RlZmluZSBmdF9zdHJyY2hyICBGWFNZU19zdHJyY2hyCisjZGVmaW5lIGZ0X3N0cnN0ciAgIEZYU1lTX3N0cnN0cgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaGFuZGxpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjZGVmaW5lIEZUX0ZJTEUgICAgIEZYU1lTX0ZJTEUKKyNkZWZpbmUgZnRfZmNsb3NlICAgRlhTWVNfZmNsb3NlCisjZGVmaW5lIGZ0X2ZvcGVuICAgIEZYU1lTX2ZvcGVuCisjZGVmaW5lIGZ0X2ZyZWFkICAgIEZYU1lTX2ZyZWFkCisjZGVmaW5lIGZ0X2ZzZWVrICAgIEZYU1lTX2ZzZWVrCisjZGVmaW5lIGZ0X2Z0ZWxsICAgIEZYU1lTX2Z0ZWxsCisjZGVmaW5lIGZ0X3NwcmludGYgIEZYU1lTX3NwcmludGYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvLyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2RlZmluZSBmdF9xc29ydCAgRlhTWVNfcXNvcnQKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgYWxsb2NhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjZGVmaW5lIGZ0X3NjYWxsb2MgICBjYWxsb2MKKyNkZWZpbmUgZnRfc2ZyZWUgICAgIGZyZWUKKyNkZWZpbmUgZnRfc21hbGxvYyAgIG1hbGxvYworI2RlZmluZSBmdF9zcmVhbGxvYyAgcmVhbGxvYworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzY2VsbGFuZW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNkZWZpbmUgZnRfYXRvbCAgIEZYU1lTX2F0b2kKKyNkZWZpbmUgZnRfbGFicyAgIGxhYnMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aW9uIGNvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvLyNpbmNsdWRlIDxzZXRqbXAuaD4KKworI2RlZmluZSBmdF9qbXBfYnVmICAgICBqbXBfYnVmICAvKiBub3RlOiB0aGlzIGNhbm5vdCBiZSBhIHR5cGVkZWYgc2luY2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgam1wX2J1ZiBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgIG9uIGNlcnRhaW4gcGxhdGZvcm1zICAgICAgICAgICAqLworCisjZGVmaW5lIGZ0X2xvbmdqbXAgICAgIGxvbmdqbXAKKyNkZWZpbmUgZnRfc2V0am1wKCBiICkgc2V0am1wKCAqKGZ0X2ptcF9idWYqKSAmKGIpICkgLyogc2FtZSB0aGluZyBoZXJlICovCisKKworICAvKiB0aGUgZm9sbG93aW5nIGlzIG9ubHkgdXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBpLmUuLCBpZiAqLworICAvKiBGVF9ERUJVR19MRVZFTF9FUlJPUiBvciBGVF9ERUJVR19MRVZFTF9UUkFDRSBhcmUgZGVmaW5lZCAgICAqLworCisjaW5jbHVkZSA8c3RkYXJnLmg+CisKKworI2VuZGlmIC8qIF9fRlRTVERMSUJfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmM3NzE1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaApAQCAtMCwwICsxLDQwMTYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZyZWV0eXBlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBoaWdoLWxldmVsIEFQSSBhbmQgY29tbW9uIHR5cGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZSRUVUWVBFX0hfXworI2RlZmluZSBfX0ZSRUVUWVBFX0hfXworCisKKyNpZm5kZWYgRlRfRlJFRVRZUEVfSAorI2Vycm9yICJgZnQyYnVpbGQuaCcgaGFzbid0IGJlZW4gaW5jbHVkZWQgeWV0ISIKKyNlcnJvciAiUGxlYXNlIGFsd2F5cyB1c2UgbWFjcm9zIHRvIGluY2x1ZGUgRnJlZVR5cGUgaGVhZGVyIGZpbGVzLiIKKyNlcnJvciAiRXhhbXBsZToiCisjZXJyb3IgIiAgI2luY2x1ZGUgPGZ0MmJ1aWxkLmg+IgorI2Vycm9yICIgICNpbmNsdWRlIEZUX0ZSRUVUWVBFX0giCisjZW5kaWYKKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJjb25maWcvZnRjb25maWcuaCIKKyNpbmNsdWRlICJmdHR5cGVzLmgiCisjaW5jbHVkZSAiZnRlcnJvcnMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlcl9hbGxvY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlciBhbGxvY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSG93IGNsaWVudCBhcHBsaWNhdGlvbnMgc2hvdWxkIGFsbG9jYXRlIEZyZWVUeXBlIGRhdGEgc3RydWN0dXJlcy4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgYXNzdW1lcyB0aGF0IHN0cnVjdHVyZXMgYWxsb2NhdGVkIGJ5IHRoZSB1c2VyIGFuZCBwYXNzZWQgICovCisgIC8qICAgIGFzIGFyZ3VtZW50cyBhcmUgemVyb2VkIG91dCBleGNlcHQgZm9yIHRoZSBhY3R1YWwgZGF0YS4gIEluIG90aGVyICAqLworICAvKiAgICB3b3JkcywgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIGBjYWxsb2MnIChvciB2YXJpYW50cyBvZiBpdCkgICAgICAgKi8KKyAgLyogICAgaW5zdGVhZCBvZiBgbWFsbG9jJyBmb3IgYWxsb2NhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBCIEEgUyBJIEMgICBUIFkgUCBFIFMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiYXNlX2ludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBCYXNlIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgRnJlZVR5cGV+MiBiYXNlIGZvbnQgaW50ZXJmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBwdWJsaWMgaGlnaC1sZXZlbCBBUEkgb2YgRnJlZVR5cGV+Mi4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPcmRlcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaWJyYXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HbHlwaFNsb3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQ2hhck1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VuY29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmFjZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GQUNFX0ZMQUdfU0NBTEFCTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRkFDRV9GTEFHX0ZJWEVEX1NJWkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GQUNFX0ZMQUdfSE9SSVpPTlRBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRkFDRV9GTEFHX1ZFUlRJQ0FMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19TRk5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GQUNFX0ZMQUdfS0VSTklORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRkFDRV9GTEFHX01VTFRJUExFX01BU1RFUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GQUNFX0ZMQUdfRVhURVJOQUxfU1RSRUFNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRkFDRV9GTEFHX0ZBU1RfR0xZUEhTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19ISU5URVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU1RZTEVfRkxBR19CT0xEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NUWUxFX0ZMQUdfSVRBTElDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2l6ZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NpemVfTWV0cmljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2x5cGhTbG90UmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoX01ldHJpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TdWJHbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0JpdG1hcF9TaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfSW5pdF9GcmVlVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RvbmVfRnJlZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTmV3X0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RvbmVfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfTWVtb3J5X0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3Blbl9GYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09wZW5fQXJncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9QYXJhbWV0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQXR0YWNoX0ZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0F0dGFjaF9TdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2V0X0NoYXJfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NldF9QaXhlbF9TaXplcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SZXF1ZXN0X1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2VsZWN0X1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NpemVfUmVxdWVzdF9UeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TaXplX1JlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2V0X1RyYW5zZm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xvYWRfR2x5cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfQ2hhcl9JbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X05hbWVfSW5kZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xvYWRfQ2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1BFTl9NRU1PUlkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09QRU5fU1RSRUFNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PUEVOX1BBVEhOQU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1BFTl9EUklWRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09QRU5fUEFSQU1TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTE9BRF9ERUZBVUxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xPQURfUkVOREVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MT0FEX01PTk9DSFJPTUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTE9BRF9MSU5FQVJfREVTSUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xPQURfTk9fU0NBTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MT0FEX05PX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTE9BRF9OT19CSVRNQVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xPQURfQ1JPUF9CSVRNQVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xPQURfSUdOT1JFX1RSQU5TRk9STSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTE9BRF9GT1JDRV9BVVRPSElOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xPQURfTk9fUkVDVVJTRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MT0FEX1BFREFOVElDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xPQURfVEFSR0VUX05PUk1BTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MT0FEX1RBUkdFVF9MSUdIVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTE9BRF9UQVJHRVRfTU9OTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xPQURfVEFSR0VUX0xDRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MT0FEX1RBUkdFVF9MQ0RfViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JlbmRlcl9HbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SZW5kZXJfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X0tlcm5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0tlcm5pbmdfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfVHJhY2tfS2VybmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X0dseXBoX05hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9Qb3N0c2NyaXB0X05hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQ2hhck1hcFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NlbGVjdF9DaGFybWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TZXRfQ2hhcm1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X0NoYXJtYXBfSW5kZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GU1RZUEVfSU5TVEFMTEFCTEVfRU1CRURESU5HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRlNUWVBFX1JFU1RSSUNURURfTElDRU5TRV9FTUJFRERJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZTVFlQRV9QUkVWSUVXX0FORF9QUklOVF9FTUJFRERJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GU1RZUEVfRURJVEFCTEVfRU1CRURESU5HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRlNUWVBFX05PX1NVQlNFVFRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZTVFlQRV9CSVRNQVBfRU1CRURESU5HX09OTFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X0ZTVHlwZV9GbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoX01ldHJpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgdGhlIG1ldHJpY3Mgb2YgYSBzaW5nbGUgZ2x5cGguICBUaGUgICAgICAqLworICAvKiAgICB2YWx1ZXMgYXJlIGV4cHJlc3NlZCBpbiAyNi42IGZyYWN0aW9uYWwgcGl4ZWwgZm9ybWF0OyBpZiB0aGUgZmxhZyAgKi8KKyAgLyogICAgQEZUX0xPQURfTk9fU0NBTEUgaGFzIGJlZW4gdXNlZCB3aGlsZSBsb2FkaW5nIHRoZSBnbHlwaCwgdmFsdWVzICAgICovCisgIC8qICAgIGFyZSBleHByZXNzZWQgaW4gZm9udCB1bml0cyBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHdpZHRoIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBnbHlwaCdzIHdpZHRoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhlaWdodCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBnbHlwaCdzIGhlaWdodC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhvcmlCZWFyaW5nWCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIExlZnQgc2lkZSBiZWFyaW5nIGZvciBob3Jpem9udGFsIGxheW91dC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhvcmlCZWFyaW5nWSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRvcCBzaWRlIGJlYXJpbmcgZm9yIGhvcml6b250YWwgbGF5b3V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhvcmlBZHZhbmNlIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEFkdmFuY2Ugd2lkdGggZm9yIGhvcml6b250YWwgbGF5b3V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnRCZWFyaW5nWCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIExlZnQgc2lkZSBiZWFyaW5nIGZvciB2ZXJ0aWNhbCBsYXlvdXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnRCZWFyaW5nWSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRvcCBzaWRlIGJlYXJpbmcgZm9yIHZlcnRpY2FsIGxheW91dC4gIExhcmdlciBwb3NpdGl2ZSB2YWx1ZXMgICAgKi8KKyAgLyogICAgICBtZWFuIGZ1cnRoZXIgYmVsb3cgdGhlIHZlcnRpY2FsIGdseXBoIG9yaWdpbi4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJ0QWR2YW5jZSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBZHZhbmNlIGhlaWdodCBmb3IgdmVydGljYWwgbGF5b3V0LiAgUG9zaXRpdmUgdmFsdWVzIG1lYW4gdGhlICAgICovCisgIC8qICAgICAgZ2x5cGggaGFzIGEgcG9zaXRpdmUgYWR2YW5jZSBkb3dud2FyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIG5vdCBkaXNhYmxlZCB3aXRoIEBGVF9MT0FEX05PX0hJTlRJTkcsIHRoZSB2YWx1ZXMgcmVwcmVzZW50ICAgICAqLworICAvKiAgICBkaW1lbnNpb25zIG9mIHRoZSBoaW50ZWQgZ2x5cGggKGluIGNhc2UgaGludGluZyBpcyBhcHBsaWNhYmxlKS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFN0cm9raW5nIGEgZ2x5cGggd2l0aCBhbiBvdXRzaWRlIGJvcmRlciBkb2VzIG5vdCBpbmNyZWFzZSAgICAgICAgICAqLworICAvKiAgICBgaG9yaUFkdmFuY2UnIG9yIGB2ZXJ0QWR2YW5jZSc7IHlvdSBoYXZlIHRvIG1hbnVhbGx5IGFkanVzdCB0aGVzZSAgKi8KKyAgLyogICAgdmFsdWVzIHRvIGFjY291bnQgZm9yIHRoZSBhZGRlZCB3aWR0aCBhbmQgaGVpZ2h0LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfR2x5cGhfTWV0cmljc18KKyAgeworICAgIEZUX1BvcyAgd2lkdGg7CisgICAgRlRfUG9zICBoZWlnaHQ7CisKKyAgICBGVF9Qb3MgIGhvcmlCZWFyaW5nWDsKKyAgICBGVF9Qb3MgIGhvcmlCZWFyaW5nWTsKKyAgICBGVF9Qb3MgIGhvcmlBZHZhbmNlOworCisgICAgRlRfUG9zICB2ZXJ0QmVhcmluZ1g7CisgICAgRlRfUG9zICB2ZXJ0QmVhcmluZ1k7CisgICAgRlRfUG9zICB2ZXJ0QWR2YW5jZTsKKworICB9IEZUX0dseXBoX01ldHJpY3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXBfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHN0cnVjdHVyZSBtb2RlbHMgdGhlIG1ldHJpY3Mgb2YgYSBiaXRtYXAgc3RyaWtlIChpLmUuLCBhIHNldCAgKi8KKyAgLyogICAgb2YgZ2x5cGhzIGZvciBhIGdpdmVuIHBvaW50IHNpemUgYW5kIHJlc29sdXRpb24pIGluIGEgYml0bWFwIGZvbnQuICovCisgIC8qICAgIEl0IGlzIHVzZWQgZm9yIHRoZSBgYXZhaWxhYmxlX3NpemVzJyBmaWVsZCBvZiBARlRfRmFjZS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhlaWdodCA6OiBUaGUgdmVydGljYWwgZGlzdGFuY2UsIGluIHBpeGVscywgYmV0d2VlbiB0d28gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgY29uc2VjdXRpdmUgYmFzZWxpbmVzLiAgSXQgaXMgYWx3YXlzIHBvc2l0aXZlLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHdpZHRoICA6OiBUaGUgYXZlcmFnZSB3aWR0aCwgaW4gcGl4ZWxzLCBvZiBhbGwgZ2x5cGhzIGluIHRoZSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgc3RyaWtlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNpemUgICA6OiBUaGUgbm9taW5hbCBzaXplIG9mIHRoZSBzdHJpa2UgaW4gMjYuNiBmcmFjdGlvbmFsICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgcG9pbnRzLiAgVGhpcyBmaWVsZCBpcyBub3QgdmVyeSB1c2VmdWwuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHhfcHBlbSA6OiBUaGUgaG9yaXpvbnRhbCBwcGVtIChub21pbmFsIHdpZHRoKSBpbiAyNi42IGZyYWN0aW9uYWwgICAqLworICAvKiAgICAgICAgICAgICAgcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlfcHBlbSA6OiBUaGUgdmVydGljYWwgcHBlbSAobm9taW5hbCBoZWlnaHQpIGluIDI2LjYgZnJhY3Rpb25hbCAgICAqLworICAvKiAgICAgICAgICAgICAgcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaW5kb3dzIEZOVDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgbm9taW5hbCBzaXplIGdpdmVuIGluIGEgRk5UIGZvbnQgaXMgbm90IHJlbGlhYmxlLiAgVGh1cyB3aGVuICovCisgIC8qICAgICAgdGhlIGRyaXZlciBmaW5kcyBpdCBpbmNvcnJlY3QsIGl0IHNldHMgYHNpemUnIHRvIHNvbWUgY2FsY3VsYXRlZCAqLworICAvKiAgICAgIHZhbHVlcyBhbmQgc2V0cyBgeF9wcGVtJyBhbmQgYHlfcHBlbScgdG8gdGhlIHBpeGVsIHdpZHRoIGFuZCAgICAgKi8KKyAgLyogICAgICBoZWlnaHQgZ2l2ZW4gaW4gdGhlIGZvbnQsIHJlc3BlY3RpdmVseS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUcnVlVHlwZSBlbWJlZGRlZCBiaXRtYXBzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBgc2l6ZScsIGB3aWR0aCcsIGFuZCBgaGVpZ2h0JyB2YWx1ZXMgYXJlIG5vdCBjb250YWluZWQgaW4gdGhlICAgICovCisgIC8qICAgICAgYml0bWFwIHN0cmlrZSBpdHNlbGYuICBUaGV5IGFyZSBjb21wdXRlZCBmcm9tIHRoZSBnbG9iYWwgZm9udCAgICAqLworICAvKiAgICAgIHBhcmFtZXRlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9CaXRtYXBfU2l6ZV8KKyAgeworICAgIEZUX1Nob3J0ICBoZWlnaHQ7CisgICAgRlRfU2hvcnQgIHdpZHRoOworCisgICAgRlRfUG9zICAgIHNpemU7CisKKyAgICBGVF9Qb3MgICAgeF9wcGVtOworICAgIEZUX1BvcyAgICB5X3BwZW07CisKKyAgfSBGVF9CaXRtYXBfU2l6ZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgTyBCIEogRSBDIFQgICBDIEwgQSBTIFMgRSBTICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpYnJhcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgRnJlZVR5cGUgbGlicmFyeSBpbnN0YW5jZS4gIEVhY2ggYGxpYnJhcnknIGlzICAgICAgICAqLworICAvKiAgICBjb21wbGV0ZWx5IGluZGVwZW5kZW50IGZyb20gdGhlIG90aGVyczsgaXQgaXMgdGhlIGByb290JyBvZiBhIHNldCAgKi8KKyAgLyogICAgb2Ygb2JqZWN0cyBsaWtlIGZvbnRzLCBmYWNlcywgc2l6ZXMsIGV0Yy4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJdCBhbHNvIGVtYmVkcyBhIG1lbW9yeSBtYW5hZ2VyIChzZWUgQEZUX01lbW9yeSksIGFzIHdlbGwgYXMgYSAgICAgKi8KKyAgLyogICAgc2Nhbi1saW5lIGNvbnZlcnRlciBvYmplY3QgKHNlZSBARlRfUmFzdGVyKS4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbiBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbnMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBzYW1lIEZUX0xpYnJhcnkgKi8KKyAgLyogICAgb2JqZWN0IG9yIGFueSBvZiBpdHMgY2hpbGRyZW4gZG9lc24ndCBnZXQgYWNjZXNzZWQgaW4gcGFyYWxsZWwuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTGlicmFyeSBvYmplY3RzIGFyZSBub3JtYWxseSBjcmVhdGVkIGJ5IEBGVF9Jbml0X0ZyZWVUeXBlLCBhbmQgICAgICovCisgIC8qICAgIGRlc3Ryb3llZCB3aXRoIEBGVF9Eb25lX0ZyZWVUeXBlLiAgSWYgeW91IG5lZWQgcmVmZXJlbmNlLWNvdW50aW5nICAqLworICAvKiAgICAoY2YuIEBGVF9SZWZlcmVuY2VfTGlicmFyeSksIHVzZSBARlRfTmV3X0xpYnJhcnkgYW5kICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX0RvbmVfTGlicmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9MaWJyYXJ5UmVjXyAgKkZUX0xpYnJhcnk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Nb2R1bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIGdpdmVuIEZyZWVUeXBlIG1vZHVsZSBvYmplY3QuICBFYWNoIG1vZHVsZSBjYW4gYmUgYSAgKi8KKyAgLyogICAgZm9udCBkcml2ZXIsIGEgcmVuZGVyZXIsIG9yIGFueXRoaW5nIGVsc2UgdGhhdCBwcm92aWRlcyBzZXJ2aWNlcyAgICovCisgIC8qICAgIHRvIHRoZSBmb3JtZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfTW9kdWxlUmVjXyogIEZUX01vZHVsZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RyaXZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgZ2l2ZW4gRnJlZVR5cGUgZm9udCBkcml2ZXIgb2JqZWN0LiAgRWFjaCBmb250IGRyaXZlciAqLworICAvKiAgICBpcyBhIHNwZWNpYWwgbW9kdWxlIGNhcGFibGUgb2YgY3JlYXRpbmcgZmFjZXMgZnJvbSBmb250IGZpbGVzLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0RyaXZlclJlY18qICBGVF9Ecml2ZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SZW5kZXJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIGdpdmVuIEZyZWVUeXBlIHJlbmRlcmVyLiAgQSByZW5kZXJlciBpcyBhIHNwZWNpYWwgICAgKi8KKyAgLyogICAgbW9kdWxlIGluIGNoYXJnZSBvZiBjb252ZXJ0aW5nIGEgZ2x5cGggaW1hZ2UgdG8gYSBiaXRtYXAsIHdoZW4gICAgICovCisgIC8qICAgIG5lY2Vzc2FyeS4gIEVhY2ggcmVuZGVyZXIgc3VwcG9ydHMgYSBnaXZlbiBnbHlwaCBpbWFnZSBmb3JtYXQsIGFuZCAqLworICAvKiAgICBvbmUgb3IgbW9yZSB0YXJnZXQgc3VyZmFjZSBkZXB0aHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX1JlbmRlcmVyUmVjXyogIEZUX1JlbmRlcmVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBnaXZlbiB0eXBvZ3JhcGhpYyBmYWNlIG9iamVjdC4gIEEgZmFjZSBvYmplY3QgbW9kZWxzICovCisgIC8qICAgIGEgZ2l2ZW4gdHlwZWZhY2UsIGluIGEgZ2l2ZW4gc3R5bGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVhY2ggZmFjZSBvYmplY3QgYWxzbyBvd25zIGEgc2luZ2xlIEBGVF9HbHlwaFNsb3Qgb2JqZWN0LCBhcyB3ZWxsICAqLworICAvKiAgICBhcyBvbmUgb3IgbW9yZSBARlRfU2l6ZSBvYmplY3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzZSBARlRfTmV3X0ZhY2Ugb3IgQEZUX09wZW5fRmFjZSB0byBjcmVhdGUgYSBuZXcgZmFjZSBvYmplY3QgZnJvbSAqLworICAvKiAgICBhIGdpdmVuIGZpbGVwYXRobmFtZSBvciBhIGN1c3RvbSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzZSBARlRfRG9uZV9GYWNlIHRvIGRlc3Ryb3kgaXQgKGFsb25nIHdpdGggaXRzIHNsb3QgYW5kIHNpemVzKS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFsc28+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlZSBARlRfRmFjZVJlYyBmb3IgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgZmllbGRzIG9mIGEgZ2l2ZW4gZmFjZSAqLworICAvKiAgICBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGFuIG9iamVjdCB1c2VkIHRvIG1vZGVsIGEgZmFjZSBzY2FsZWQgdG8gYSBnaXZlbiAgICAgICAqLworICAvKiAgICBjaGFyYWN0ZXIgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFYWNoIEBGVF9GYWNlIGhhcyBhbiBfYWN0aXZlXyBARlRfU2l6ZSBvYmplY3QgdGhhdCBpcyB1c2VkIGJ5ICAgICAgKi8KKyAgLyogICAgZnVuY3Rpb25zIGxpa2UgQEZUX0xvYWRfR2x5cGggdG8gZGV0ZXJtaW5lIHRoZSBzY2FsaW5nICAgICAgICAgICAgICovCisgIC8qICAgIHRyYW5zZm9ybWF0aW9uIHdoaWNoIGlzIHVzZWQgdG8gbG9hZCBhbmQgaGludCBnbHlwaHMgYW5kIG1ldHJpY3MuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgWW91IGNhbiB1c2UgQEZUX1NldF9DaGFyX1NpemUsIEBGVF9TZXRfUGl4ZWxfU2l6ZXMsICAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9SZXF1ZXN0X1NpemUgb3IgZXZlbiBARlRfU2VsZWN0X1NpemUgdG8gY2hhbmdlIHRoZSBjb250ZW50ICAgICAqLworICAvKiAgICAoaS5lLiwgdGhlIHNjYWxpbmcgdmFsdWVzKSBvZiB0aGUgYWN0aXZlIEBGVF9TaXplLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFlvdSBjYW4gdXNlIEBGVF9OZXdfU2l6ZSB0byBjcmVhdGUgYWRkaXRpb25hbCBzaXplIG9iamVjdHMgZm9yIGEgICAqLworICAvKiAgICBnaXZlbiBARlRfRmFjZSwgYnV0IHRoZXkgd29uJ3QgYmUgdXNlZCBieSBvdGhlciBmdW5jdGlvbnMgdW50aWwgICAgKi8KKyAgLyogICAgeW91IGFjdGl2YXRlIGl0IHRocm91Z2ggQEZUX0FjdGl2YXRlX1NpemUuICBPbmx5IG9uZSBzaXplIGNhbiBiZSAgICovCisgIC8qICAgIGFjdGl2YXRlZCBhdCBhbnkgZ2l2ZW4gdGltZSBwZXIgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFsc28+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlZSBARlRfU2l6ZVJlYyBmb3IgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgZmllbGRzIG9mIGEgZ2l2ZW4gc2l6ZSAqLworICAvKiAgICBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX1NpemVSZWNfKiAgRlRfU2l6ZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoU2xvdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgZ2l2ZW4gYGdseXBoIHNsb3QnLiAgQSBzbG90IGlzIGEgY29udGFpbmVyIHdoZXJlIGl0ICAqLworICAvKiAgICBpcyBwb3NzaWJsZSB0byBsb2FkIGFueSBvZiB0aGUgZ2x5cGhzIGNvbnRhaW5lZCBpbiBpdHMgcGFyZW50ICAgICAgKi8KKyAgLyogICAgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbiBvdGhlciB3b3JkcywgZWFjaCB0aW1lIHlvdSBjYWxsIEBGVF9Mb2FkX0dseXBoIG9yICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX0xvYWRfQ2hhciwgdGhlIHNsb3QncyBjb250ZW50IGlzIGVyYXNlZCBieSB0aGUgbmV3IGdseXBoIGRhdGEsICovCisgIC8qICAgIGkuZS4sIHRoZSBnbHlwaCdzIG1ldHJpY3MsIGl0cyBpbWFnZSAoYml0bWFwIG9yIG91dGxpbmUpLCBhbmQgICAgICAqLworICAvKiAgICBvdGhlciBjb250cm9sIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBbHNvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTZWUgQEZUX0dseXBoU2xvdFJlYyBmb3IgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgZ2x5cGggZmllbGRzLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0dseXBoU2xvdFJlY18qICBGVF9HbHlwaFNsb3Q7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9DaGFyTWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIGdpdmVuIGNoYXJhY3RlciBtYXAuICBBIGNoYXJtYXAgaXMgdXNlZCB0byB0cmFuc2xhdGUgKi8KKyAgLyogICAgY2hhcmFjdGVyIGNvZGVzIGluIGEgZ2l2ZW4gZW5jb2RpbmcgaW50byBnbHlwaCBpbmRleGVzIGZvciBpdHMgICAgICovCisgIC8qICAgIHBhcmVudCdzIGZhY2UuICBTb21lIGZvbnQgZm9ybWF0cyBtYXkgcHJvdmlkZSBzZXZlcmFsIGNoYXJtYXBzIHBlciAqLworICAvKiAgICBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVhY2ggZmFjZSBvYmplY3Qgb3ducyB6ZXJvIG9yIG1vcmUgY2hhcm1hcHMsIGJ1dCBvbmx5IG9uZSBvZiB0aGVtICAqLworICAvKiAgICBjYW4gYmUgYGFjdGl2ZScgYW5kIHVzZWQgYnkgQEZUX0dldF9DaGFyX0luZGV4IG9yIEBGVF9Mb2FkX0NoYXIuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjaGFybWFwcyBpbiBhIGZhY2UgaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlICAqLworICAvKiAgICBgZmFjZS0+bnVtX2NoYXJtYXBzJyBhbmQgYGZhY2UtPmNoYXJtYXBzJyBmaWVsZHMgb2YgQEZUX0ZhY2VSZWMuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBjdXJyZW50bHkgYWN0aXZlIGNoYXJtYXAgaXMgYXZhaWxhYmxlIGFzIGBmYWNlLT5jaGFybWFwJy4gICAgICAqLworICAvKiAgICBZb3Ugc2hvdWxkIGNhbGwgQEZUX1NldF9DaGFybWFwIHRvIGNoYW5nZSBpdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIGEgbmV3IGZhY2UgaXMgY3JlYXRlZCAoZWl0aGVyIHRocm91Z2ggQEZUX05ld19GYWNlIG9yICAgICAgICAgKi8KKyAgLyogICAgQEZUX09wZW5fRmFjZSksIHRoZSBsaWJyYXJ5IGxvb2tzIGZvciBhIFVuaWNvZGUgY2hhcm1hcCB3aXRoaW4gICAgICovCisgIC8qICAgIHRoZSBsaXN0IGFuZCBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlcyBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFsc28+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlZSBARlRfQ2hhck1hcFJlYyBmb3IgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgZmllbGRzIG9mIGEgZ2l2ZW4gICAqLworICAvKiAgICBjaGFyYWN0ZXIgbWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0NoYXJNYXBSZWNfKiAgRlRfQ2hhck1hcDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE1hY3JvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VOQ19UQUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgbWFjcm8gY29udmVydHMgZm91ci1sZXR0ZXIgdGFncyBpbnRvIGFuIHVuc2lnbmVkIGxvbmcuICBJdCBpcyAqLworICAvKiAgICB1c2VkIHRvIGRlZmluZSBgZW5jb2RpbmcnIGlkZW50aWZpZXJzIChzZWUgQEZUX0VuY29kaW5nKS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTaW5jZSBtYW55IDE2LWJpdCBjb21waWxlcnMgZG9uJ3QgbGlrZSAzMi1iaXQgZW51bWVyYXRpb25zLCB5b3UgICAgKi8KKyAgLyogICAgc2hvdWxkIHJlZGVmaW5lIHRoaXMgbWFjcm8gaW4gY2FzZSBvZiBwcm9ibGVtcyB0byBzb21ldGhpbmcgbGlrZSAgICovCisgIC8qICAgIHRoaXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgI2RlZmluZSBGVF9FTkNfVEFHKCB2YWx1ZSwgYSwgYiwgYywgZCApICB2YWx1ZSAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvIGdldCBhIHNpbXBsZSBlbnVtZXJhdGlvbiB3aXRob3V0IGFzc2lnbmluZyBzcGVjaWFsIG51bWJlcnMuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmbmRlZiBGVF9FTkNfVEFHCisjZGVmaW5lIEZUX0VOQ19UQUcoIHZhbHVlLCBhLCBiLCBjLCBkICkgICAgICAgICBcCisgICAgICAgICAgdmFsdWUgPSAoICggKEZUX1VJbnQzMikoYSkgPDwgMjQgKSB8ICBcCisgICAgICAgICAgICAgICAgICAgICggKEZUX1VJbnQzMikoYikgPDwgMTYgKSB8ICBcCisgICAgICAgICAgICAgICAgICAgICggKEZUX1VJbnQzMikoYykgPDwgIDggKSB8ICBcCisgICAgICAgICAgICAgICAgICAgICAgKEZUX1VJbnQzMikoZCkgICAgICAgICApCisKKyNlbmRpZiAvKiBGVF9FTkNfVEFHICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9FbmNvZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBlbnVtZXJhdGlvbiB1c2VkIHRvIHNwZWNpZnkgY2hhcmFjdGVyIHNldHMgc3VwcG9ydGVkIGJ5ICAgICAgICAgKi8KKyAgLyogICAgY2hhcm1hcHMuICBVc2VkIGluIHRoZSBARlRfU2VsZWN0X0NoYXJtYXAgQVBJIGZ1bmN0aW9uLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVzcGl0ZSB0aGUgbmFtZSwgdGhpcyBlbnVtZXJhdGlvbiBsaXN0cyBzcGVjaWZpYyBjaGFyYWN0ZXIgICAgICAgICovCisgIC8qICAgIHJlcGVydG9yaWVzIChpLmUuLCBjaGFyc2V0cyksIGFuZCBub3QgdGV4dCBlbmNvZGluZyBtZXRob2RzIChlLmcuLCAqLworICAvKiAgICBVVEYtOCwgVVRGLTE2LCBldGMuKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE90aGVyIGVuY29kaW5ncyBtaWdodCBiZSBkZWZpbmVkIGluIHRoZSBmdXR1cmUuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VOQ09ESU5HX05PTkUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBlbmNvZGluZyB2YWx1ZX4wIGlzIHJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VOQ09ESU5HX1VOSUNPREUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIENvcnJlc3BvbmRzIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciBzZXQuICBUaGlzIHZhbHVlIGNvdmVycyAgICAgKi8KKyAgLyogICAgICBhbGwgdmVyc2lvbnMgb2YgdGhlIFVuaWNvZGUgcmVwZXJ0b2lyZSwgaW5jbHVkaW5nIEFTQ0lJIGFuZCAgICAgICovCisgIC8qICAgICAgTGF0aW4tMS4gIE1vc3QgZm9udHMgaW5jbHVkZSBhIFVuaWNvZGUgY2hhcm1hcCwgYnV0IG5vdCBhbGwgICAgICAqLworICAvKiAgICAgIG9mIHRoZW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGFjY2VzcyBVbmljb2RlIHZhbHVlIFUrMUYwMjggKGFuZCAgICAqLworICAvKiAgICAgIHRoZSBmb250IGNvbnRhaW5zIGl0KSwgdXNlIHZhbHVlIDB4MUYwMjggYXMgdGhlIGlucHV0IHZhbHVlIGZvciAgKi8KKyAgLyogICAgICBARlRfR2V0X0NoYXJfSW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9FTkNPRElOR19NU19TWU1CT0wgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBDb3JyZXNwb25kcyB0byB0aGUgTWljcm9zb2Z0IFN5bWJvbCBlbmNvZGluZywgdXNlZCB0byBlbmNvZGUgICAgICovCisgIC8qICAgICAgbWF0aGVtYXRpY2FsIHN5bWJvbHMgaW4gdGhlIDMyLi4yNTUgY2hhcmFjdGVyIGNvZGUgcmFuZ2UuICBGb3IgICAqLworICAvKiAgICAgIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBgaHR0cDovL3d3dy5jZXZpei5uZXQvc3ltYm9sLmh0bScuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VOQ09ESU5HX1NKSVMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIENvcnJlc3BvbmRzIHRvIEphcGFuZXNlIFNKSVMgZW5jb2RpbmcuICBNb3JlIGluZm8gYXQgICAgICAgICAgICAgKi8KKyAgLyogICAgICBhdCBgaHR0cDovL2xhbmdzdXBwb3J0LmphcGFucmVmZXJlbmNlLmNvbS9lbmNvZGluZy5zaHRtbCcuICAgICAgICovCisgIC8qICAgICAgU2VlIG5vdGUgb24gbXVsdGktYnl0ZSBlbmNvZGluZ3MgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfR0IyMzEyIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQ29ycmVzcG9uZHMgdG8gYW4gZW5jb2Rpbmcgc3lzdGVtIGZvciBTaW1wbGlmaWVkIENoaW5lc2UgYXMgdXNlZCAqLworICAvKiAgICAgIHVzZWQgaW4gbWFpbmxhbmQgQ2hpbmEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VOQ09ESU5HX0JJRzUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIENvcnJlc3BvbmRzIHRvIGFuIGVuY29kaW5nIHN5c3RlbSBmb3IgVHJhZGl0aW9uYWwgQ2hpbmVzZSBhcyAgICAgKi8KKyAgLyogICAgICB1c2VkIGluIFRhaXdhbiBhbmQgSG9uZyBLb25nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9FTkNPRElOR19XQU5TVU5HIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBDb3JyZXNwb25kcyB0byB0aGUgS29yZWFuIGVuY29kaW5nIHN5c3RlbSBrbm93biBhcyBXYW5zdW5nLiAgICAgICovCisgIC8qICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS91bmljb2RlLzk0OS50eHQnLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VOQ09ESU5HX0pPSEFCIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBLb3JlYW4gc3RhbmRhcmQgY2hhcmFjdGVyIHNldCAoS1N+QyA1NjAxLTE5OTIpLCB3aGljaCAgICAgICAgKi8KKyAgLyogICAgICBjb3JyZXNwb25kcyB0byBNUyBXaW5kb3dzIGNvZGUgcGFnZSAxMzYxLiAgVGhpcyBjaGFyYWN0ZXIgc2V0ICAgICovCisgIC8qICAgICAgaW5jbHVkZXMgYWxsIHBvc3NpYmxlIEhhbmdldWwgY2hhcmFjdGVyIGNvbWJpbmF0aW9ucy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfQURPQkVfTEFUSU5fMSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQ29ycmVzcG9uZHMgdG8gYSBMYXRpbi0xIGVuY29kaW5nIGFzIGRlZmluZWQgaW4gYSBUeXBlfjEgICAgICAgICAqLworICAvKiAgICAgIFBvc3RTY3JpcHQgZm9udC4gIEl0IGlzIGxpbWl0ZWQgdG8gMjU2IGNoYXJhY3RlciBjb2Rlcy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VOQ09ESU5HX0FET0JFX1NUQU5EQVJEIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIENvcnJlc3BvbmRzIHRvIHRoZSBBZG9iZSBTdGFuZGFyZCBlbmNvZGluZywgYXMgZm91bmQgaW4gVHlwZX4xLCAgKi8KKyAgLyogICAgICBDRkYsIGFuZCBPcGVuVHlwZS9DRkYgZm9udHMuICBJdCBpcyBsaW1pdGVkIHRvIDI1NiBjaGFyYWN0ZXIgICAgICovCisgIC8qICAgICAgY29kZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJUIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQ29ycmVzcG9uZHMgdG8gdGhlIEFkb2JlIEV4cGVydCBlbmNvZGluZywgYXMgZm91bmQgaW4gVHlwZX4xLCAgICAqLworICAvKiAgICAgIENGRiwgYW5kIE9wZW5UeXBlL0NGRiBmb250cy4gIEl0IGlzIGxpbWl0ZWQgdG8gMjU2IGNoYXJhY3RlciAgICAgKi8KKyAgLyogICAgICBjb2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9FTkNPRElOR19BRE9CRV9DVVNUT00gOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBDb3JyZXNwb25kcyB0byBhIGN1c3RvbSBlbmNvZGluZywgYXMgZm91bmQgaW4gVHlwZX4xLCBDRkYsIGFuZCAgICovCisgIC8qICAgICAgT3BlblR5cGUvQ0ZGIGZvbnRzLiAgSXQgaXMgbGltaXRlZCB0byAyNTYgY2hhcmFjdGVyIGNvZGVzLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfQVBQTEVfUk9NQU4gOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQ29ycmVzcG9uZHMgdG8gdGhlIDgtYml0IEFwcGxlIHJvbWFuIGVuY29kaW5nLiAgTWFueSBUcnVlVHlwZSAgICAqLworICAvKiAgICAgIGFuZCBPcGVuVHlwZSBmb250cyBjb250YWluIGEgY2hhcm1hcCBmb3IgdGhpcyBlbmNvZGluZywgc2luY2UgICAgKi8KKyAgLyogICAgICBvbGRlciB2ZXJzaW9ucyBvZiBNYWMgT1MgYXJlIGFibGUgdG8gdXNlIGl0LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9FTkNPRElOR19PTERfTEFUSU5fMiA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGlzIHZhbHVlIGlzIGRlcHJlY2F0ZWQgYW5kIHdhcyBuZXZlciB1c2VkIG5vciByZXBvcnRlZCBieSAgICAgICovCisgIC8qICAgICAgRnJlZVR5cGUuICBEb24ndCB1c2Ugb3IgdGVzdCBmb3IgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfU0pJUyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgU2FtZSBhcyBGVF9FTkNPRElOR19TSklTLiAgRGVwcmVjYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfR0IyMzEyIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgU2FtZSBhcyBGVF9FTkNPRElOR19HQjIzMTIuICBEZXByZWNhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfQklHNSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgU2FtZSBhcyBGVF9FTkNPRElOR19CSUc1LiAgRGVwcmVjYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfV0FOU1VORyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgU2FtZSBhcyBGVF9FTkNPRElOR19XQU5TVU5HLiAgRGVwcmVjYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfTVNfSk9IQUIgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgU2FtZSBhcyBGVF9FTkNPRElOR19KT0hBQi4gIERlcHJlY2F0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEJ5IGRlZmF1bHQsIEZyZWVUeXBlIGF1dG9tYXRpY2FsbHkgc3ludGhlc2l6ZXMgYSBVbmljb2RlIGNoYXJtYXAgICAqLworICAvKiAgICBmb3IgUG9zdFNjcmlwdCBmb250cywgdXNpbmcgdGhlaXIgZ2x5cGggbmFtZXMgZGljdGlvbmFyaWVzLiAgICAgICAgKi8KKyAgLyogICAgSG93ZXZlciwgaXQgYWxzbyByZXBvcnRzIHRoZSBlbmNvZGluZ3MgZGVmaW5lZCBleHBsaWNpdGx5IGluIHRoZSAgICovCisgIC8qICAgIGZvbnQgZmlsZSwgZm9yIHRoZSBjYXNlcyB3aGVuIHRoZXkgYXJlIG5lZWRlZCwgd2l0aCB0aGUgQWRvYmUgICAgICAqLworICAvKiAgICB2YWx1ZXMgYXMgd2VsbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0VOQ09ESU5HX05PTkUgaXMgc2V0IGJ5IHRoZSBCREYgYW5kIFBDRiBkcml2ZXJzIGlmIHRoZSBjaGFybWFwICAqLworICAvKiAgICBpcyBuZWl0aGVyIFVuaWNvZGUgbm9yIElTTy04ODU5LTEgKG90aGVyd2lzZSBpdCBpcyBzZXQgdG8gICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfVU5JQ09ERSkuICBVc2UgQEZUX0dldF9CREZfQ2hhcnNldF9JRCB0byBmaW5kIG91dCAgICAgICovCisgIC8qICAgIHdoaWNoIGVuY29kaW5nIGlzIHJlYWxseSBwcmVzZW50LiAgSWYsIGZvciBleGFtcGxlLCB0aGUgICAgICAgICAgICAqLworICAvKiAgICBgY3NfcmVnaXN0cnknIGZpZWxkIGlzIGBLT0k4JyBhbmQgdGhlIGBjc19lbmNvZGluZycgZmllbGQgaXMgYFInLCAgKi8KKyAgLyogICAgdGhlIGZvbnQgaXMgZW5jb2RlZCBpbiBLT0k4LVIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9FTkNPRElOR19OT05FIGlzIGFsd2F5cyBzZXQgKHdpdGggYSBzaW5nbGUgZXhjZXB0aW9uKSBieSB0aGUgICAgKi8KKyAgLyogICAgd2luZm9udHMgZHJpdmVyLiAgVXNlIEBGVF9HZXRfV2luRk5UX0hlYWRlciBhbmQgZXhhbWluZSB0aGUgICAgICAgICovCisgIC8qICAgIGBjaGFyc2V0JyBmaWVsZCBvZiB0aGUgQEZUX1dpbkZOVF9IZWFkZXJSZWMgc3RydWN0dXJlIHRvIGZpbmQgb3V0ICAqLworICAvKiAgICB3aGljaCBlbmNvZGluZyBpcyByZWFsbHkgcHJlc2VudC4gIEZvciBleGFtcGxlLCAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX1dpbkZOVF9JRF9DUDEyNTEgKDIwNCkgbWVhbnMgV2luZG93cyBjb2RlIHBhZ2UgMTI1MSAoZm9yICAgICAgICovCisgIC8qICAgIFJ1c3NpYW4pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRU5DT0RJTkdfTk9ORSBpcyBzZXQgaWYgYHBsYXRmb3JtX2lkJyBpcyBAVFRfUExBVEZPUk1fTUFDSU5UT1NIICovCisgIC8qICAgIGFuZCBgZW5jb2RpbmdfaWQnIGlzIG5vdCBAVFRfTUFDX0lEX1JPTUFOIChvdGhlcndpc2UgaXQgaXMgc2V0IHRvICAqLworICAvKiAgICBGVF9FTkNPRElOR19BUFBMRV9ST01BTikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGBwbGF0Zm9ybV9pZCcgaXMgQFRUX1BMQVRGT1JNX01BQ0lOVE9TSCwgdXNlIHRoZSBmdW5jdGlvbiAgICAgICAqLworICAvKiAgICBARlRfR2V0X0NNYXBfTGFuZ3VhZ2VfSUQgIHRvIHF1ZXJ5IHRoZSBNYWMgbGFuZ3VhZ2UgSUQgd2hpY2ggbWF5ICAgKi8KKyAgLyogICAgYmUgbmVlZGVkIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggQXBwbGUgZW5jb2RpbmcgdmFyaWFudHMuICBTZWUgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvQVBQTEUvUkVBRE1FLlRYVCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvIGdldCBhbiBpZGVhIGhvdyB0byBkbyB0aGF0LiAgQmFzaWNhbGx5LCBpZiB0aGUgbGFuZ3VhZ2UgSUQgICAgICAqLworICAvKiAgICBpc34wLCBkb24ndCB1c2UgaXQsIG90aGVyd2lzZSBzdWJ0cmFjdCAxIGZyb20gdGhlIGxhbmd1YWdlIElELiAgICAgKi8KKyAgLyogICAgVGhlbiBleGFtaW5lIGBlbmNvZGluZ19pZCcuICBJZiwgZm9yIGV4YW1wbGUsIGBlbmNvZGluZ19pZCcgaXMgICAgICovCisgIC8qICAgIEBUVF9NQUNfSURfUk9NQU4gYW5kIHRoZSBsYW5ndWFnZSBJRCAobWludXN+MSkgaXMgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBgVFRfTUFDX0xBTkdJRF9HUkVFSycsIGl0IGlzIHRoZSBHcmVlayBlbmNvZGluZywgbm90IFJvbWFuLiAgICAgICAgKi8KKyAgLyogICAgQFRUX01BQ19JRF9BUkFCSUMgd2l0aCBgVFRfTUFDX0xBTkdJRF9GQVJTSScgbWVhbnMgdGhlIEZhcnNpICAgICAgICovCisgIC8qICAgIHZhcmlhbnQgdGhlIEFyYWJpYyBlbmNvZGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBlbnVtICBGVF9FbmNvZGluZ18KKyAgeworICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX05PTkUsIDAsIDAsIDAsIDAgKSwKKworICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX01TX1NZTUJPTCwgJ3MnLCAneScsICdtJywgJ2InICksCisgICAgRlRfRU5DX1RBRyggRlRfRU5DT0RJTkdfVU5JQ09ERSwgICAndScsICduJywgJ2knLCAnYycgKSwKKworICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX1NKSVMsICAgICdzJywgJ2onLCAnaScsICdzJyApLAorICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX0dCMjMxMiwgICdnJywgJ2InLCAnICcsICcgJyApLAorICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX0JJRzUsICAgICdiJywgJ2knLCAnZycsICc1JyApLAorICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX1dBTlNVTkcsICd3JywgJ2EnLCAnbicsICdzJyApLAorICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX0pPSEFCLCAgICdqJywgJ28nLCAnaCcsICdhJyApLAorCisgICAgLyogZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCisgICAgRlRfRU5DT0RJTkdfTVNfU0pJUyAgICA9IEZUX0VOQ09ESU5HX1NKSVMsCisgICAgRlRfRU5DT0RJTkdfTVNfR0IyMzEyICA9IEZUX0VOQ09ESU5HX0dCMjMxMiwKKyAgICBGVF9FTkNPRElOR19NU19CSUc1ICAgID0gRlRfRU5DT0RJTkdfQklHNSwKKyAgICBGVF9FTkNPRElOR19NU19XQU5TVU5HID0gRlRfRU5DT0RJTkdfV0FOU1VORywKKyAgICBGVF9FTkNPRElOR19NU19KT0hBQiAgID0gRlRfRU5DT0RJTkdfSk9IQUIsCisKKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19BRE9CRV9TVEFOREFSRCwgJ0EnLCAnRCcsICdPJywgJ0InICksCisgICAgRlRfRU5DX1RBRyggRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJULCAgICdBJywgJ0QnLCAnQicsICdFJyApLAorICAgIEZUX0VOQ19UQUcoIEZUX0VOQ09ESU5HX0FET0JFX0NVU1RPTSwgICAnQScsICdEJywgJ0InLCAnQycgKSwKKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19BRE9CRV9MQVRJTl8xLCAgJ2wnLCAnYScsICd0JywgJzEnICksCisKKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19PTERfTEFUSU5fMiwgJ2wnLCAnYScsICd0JywgJzInICksCisKKyAgICBGVF9FTkNfVEFHKCBGVF9FTkNPRElOR19BUFBMRV9ST01BTiwgJ2EnLCAncicsICdtJywgJ24nICkKKworICB9IEZUX0VuY29kaW5nOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfZW5jb2RpbmdfeHh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlc2UgY29uc3RhbnRzIGFyZSBkZXByZWNhdGVkOyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgQEZUX0VuY29kaW5nICovCisgIC8qICAgIHZhbHVlcyBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgZnRfZW5jb2Rpbmdfbm9uZSAgICAgICAgICAgIEZUX0VOQ09ESU5HX05PTkUKKyNkZWZpbmUgZnRfZW5jb2RpbmdfdW5pY29kZSAgICAgICAgIEZUX0VOQ09ESU5HX1VOSUNPREUKKyNkZWZpbmUgZnRfZW5jb2Rpbmdfc3ltYm9sICAgICAgICAgIEZUX0VOQ09ESU5HX01TX1NZTUJPTAorI2RlZmluZSBmdF9lbmNvZGluZ19sYXRpbl8xICAgICAgICAgRlRfRU5DT0RJTkdfQURPQkVfTEFUSU5fMQorI2RlZmluZSBmdF9lbmNvZGluZ19sYXRpbl8yICAgICAgICAgRlRfRU5DT0RJTkdfT0xEX0xBVElOXzIKKyNkZWZpbmUgZnRfZW5jb2Rpbmdfc2ppcyAgICAgICAgICAgIEZUX0VOQ09ESU5HX1NKSVMKKyNkZWZpbmUgZnRfZW5jb2RpbmdfZ2IyMzEyICAgICAgICAgIEZUX0VOQ09ESU5HX0dCMjMxMgorI2RlZmluZSBmdF9lbmNvZGluZ19iaWc1ICAgICAgICAgICAgRlRfRU5DT0RJTkdfQklHNQorI2RlZmluZSBmdF9lbmNvZGluZ193YW5zdW5nICAgICAgICAgRlRfRU5DT0RJTkdfV0FOU1VORworI2RlZmluZSBmdF9lbmNvZGluZ19qb2hhYiAgICAgICAgICAgRlRfRU5DT0RJTkdfSk9IQUIKKworI2RlZmluZSBmdF9lbmNvZGluZ19hZG9iZV9zdGFuZGFyZCAgRlRfRU5DT0RJTkdfQURPQkVfU1RBTkRBUkQKKyNkZWZpbmUgZnRfZW5jb2RpbmdfYWRvYmVfZXhwZXJ0ICAgIEZUX0VOQ09ESU5HX0FET0JFX0VYUEVSVAorI2RlZmluZSBmdF9lbmNvZGluZ19hZG9iZV9jdXN0b20gICAgRlRfRU5DT0RJTkdfQURPQkVfQ1VTVE9NCisjZGVmaW5lIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuICAgICBGVF9FTkNPRElOR19BUFBMRV9ST01BTgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQ2hhck1hcFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGJhc2UgY2hhcm1hcCBzdHJ1Y3R1cmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHBhcmVudCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBlbmNvZGluZyAgICA6OiBBbiBARlRfRW5jb2RpbmcgdGFnIGlkZW50aWZ5aW5nIHRoZSBjaGFybWFwLiAgVXNlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgdGhpcyB3aXRoIEBGVF9TZWxlY3RfQ2hhcm1hcC4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwbGF0Zm9ybV9pZCA6OiBBbiBJRCBudW1iZXIgZGVzY3JpYmluZyB0aGUgcGxhdGZvcm0gZm9yIHRoZSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGVuY29kaW5nIElELiAgVGhpcyBjb21lcyBkaXJlY3RseSBmcm9tICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgYmUgZW11bGF0ZWQgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBmb3Igb3RoZXIgZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGVuY29kaW5nX2lkIDo6IEEgcGxhdGZvcm0gc3BlY2lmaWMgZW5jb2RpbmcgbnVtYmVyLiAgVGhpcyBhbHNvICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBjb21lcyBmcm9tIHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgYmUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgZW11bGF0ZWQgc2ltaWxhcmx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfQ2hhck1hcFJlY18KKyAgeworICAgIEZUX0ZhY2UgICAgICBmYWNlOworICAgIEZUX0VuY29kaW5nICBlbmNvZGluZzsKKyAgICBGVF9VU2hvcnQgICAgcGxhdGZvcm1faWQ7CisgICAgRlRfVVNob3J0ICAgIGVuY29kaW5nX2lkOworCisgIH0gRlRfQ2hhck1hcFJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICBCIEEgUyBFICAgTyBCIEogRSBDIFQgICBDIEwgQSBTIFMgRSBTICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmFjZV9JbnRlcm5hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gb3BhcXVlIGhhbmRsZSB0byBhbiBgRlRfRmFjZV9JbnRlcm5hbFJlYycgc3RydWN0dXJlLCB1c2VkIHRvICAgICovCisgIC8qICAgIG1vZGVsIHByaXZhdGUgZGF0YSBvZiBhIGdpdmVuIEBGVF9GYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgbWlnaHQgY2hhbmdlIGJldHdlZW4gcmVsZWFzZXMgb2YgRnJlZVR5cGV+MiBhbmQgaXMgICovCisgIC8qICAgIG5vdCBnZW5lcmFsbHkgYXZhaWxhYmxlIHRvIGNsaWVudCBhcHBsaWNhdGlvbnMuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZV9JbnRlcm5hbFJlY18qICBGVF9GYWNlX0ludGVybmFsOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmFjZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgcm9vdCBmYWNlIGNsYXNzIHN0cnVjdHVyZS4gIEEgZmFjZSBvYmplY3QgbW9kZWxzIGEgICAgICAgICovCisgIC8qICAgIHR5cGVmYWNlIGluIGEgZm9udCBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9mYWNlcyAgICAgICAgICAgOjogVGhlIG51bWJlciBvZiBmYWNlcyBpbiB0aGUgZm9udCBmaWxlLiAgU29tZSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQgZm9ybWF0cyBjYW4gaGF2ZSBtdWx0aXBsZSBmYWNlcyBpbiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBhIGZvbnQgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX2luZGV4ICAgICAgICAgIDo6IFRoZSBpbmRleCBvZiB0aGUgZmFjZSBpbiB0aGUgZm9udCBmaWxlLiAgSXQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG9+MCBpZiB0aGVyZSBpcyBvbmx5IG9uZSBmYWNlIGluICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbnQgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9mbGFncyAgICAgICAgICA6OiBBIHNldCBvZiBiaXQgZmxhZ3MgdGhhdCBnaXZlIGltcG9ydGFudCAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZhY2U7IHNlZSAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9GQUNFX0ZMQUdfWFhYIGZvciB0aGUgZGV0YWlscy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0eWxlX2ZsYWdzICAgICAgICAgOjogQSBzZXQgb2YgYml0IGZsYWdzIGluZGljYXRpbmcgdGhlIHN0eWxlIG9mICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmYWNlOyBzZWUgQEZUX1NUWUxFX0ZMQUdfWFhYIGZvciB0aGUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fZ2x5cGhzICAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgZ2x5cGhzIGluIHRoZSBmYWNlLiAgSWYgdGhlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlIGlzIHNjYWxhYmxlIGFuZCBoYXMgc2JpdHMgKHNlZSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYG51bV9maXhlZF9zaXplcycpLCBpdCBpcyBzZXQgdG8gdGhlIG51bWJlciAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG91dGxpbmUgZ2x5cGhzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIENJRC1rZXllZCBmb250cywgdGhpcyB2YWx1ZSBnaXZlcyB0aGUgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hlc3QgQ0lEIHVzZWQgaW4gdGhlIGZvbnQuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhbWlseV9uYW1lICAgICAgICAgOjogVGhlIGZhY2UncyBmYW1pbHkgbmFtZS4gIFRoaXMgaXMgYW4gQVNDSUkgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgdXN1YWxseSBpbiBFbmdsaXNoLCB3aGljaCBkZXNjcmliZXMgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdHlwZWZhY2UncyBmYW1pbHkgKGxpa2UgYFRpbWVzIE5ldyAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tYW4nLCBgQm9kb25pJywgYEdhcmFtb25kJywgZXRjKS4gIFRoaXMgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgbGVhc3QgY29tbW9uIGRlbm9taW5hdG9yIHVzZWQgdG8gbGlzdCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBmb250cy4gIFNvbWUgZm9ybWF0cyAoVHJ1ZVR5cGUgJiBPcGVuVHlwZSkgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBsb2NhbGl6ZWQgYW5kIFVuaWNvZGUgdmVyc2lvbnMgb2YgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgc3RyaW5nLiAgQXBwbGljYXRpb25zIHNob3VsZCB1c2UgdGhlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgc3BlY2lmaWMgaW50ZXJmYWNlIHRvIGFjY2VzcyB0aGVtLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIE5VTEwgKGUuZy4sIGluIGZvbnRzIGVtYmVkZGVkIGluIGEgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBERiBmaWxlKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0eWxlX25hbWUgICAgICAgICAgOjogVGhlIGZhY2UncyBzdHlsZSBuYW1lLiAgVGhpcyBpcyBhbiBBU0NJSSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgdXN1YWxseSBpbiBFbmdsaXNoLCB3aGljaCBkZXNjcmliZXMgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdHlwZWZhY2UncyBzdHlsZSAobGlrZSBgSXRhbGljJywgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYEJvbGQnLCBgQ29uZGVuc2VkJywgZXRjKS4gIE5vdCBhbGwgZm9udCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHMgcHJvdmlkZSBhIHN0eWxlIG5hbWUsIHNvIHRoaXMgZmllbGQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBvcHRpb25hbCwgYW5kIGNhbiBiZSBzZXQgdG8gTlVMTC4gIEFzICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGBmYW1pbHlfbmFtZScsIHNvbWUgZm9ybWF0cyBwcm92aWRlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXplZCBhbmQgVW5pY29kZSB2ZXJzaW9ucyBvZiB0aGlzICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcuICBBcHBsaWNhdGlvbnMgc2hvdWxkIHVzZSB0aGUgZm9ybWF0ICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgaW50ZXJmYWNlIHRvIGFjY2VzcyB0aGVtLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2ZpeGVkX3NpemVzICAgICA6OiBUaGUgbnVtYmVyIG9mIGJpdG1hcCBzdHJpa2VzIGluIHRoZSBmYWNlLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbiBpZiB0aGUgZmFjZSBpcyBzY2FsYWJsZSwgdGhlcmUgbWlnaHQgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWxsIGJlIGJpdG1hcCBzdHJpa2VzLCB3aGljaCBhcmUgY2FsbGVkICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBgc2JpdHMnIGluIHRoYXQgY2FzZS4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhdmFpbGFibGVfc2l6ZXMgICAgIDo6IEFuIGFycmF5IG9mIEBGVF9CaXRtYXBfU2l6ZSBmb3IgYWxsIGJpdG1hcCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpa2VzIGluIHRoZSBmYWNlLiAgSXQgaXMgc2V0IHRvIE5VTEwgaWYgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUgaXMgbm8gYml0bWFwIHN0cmlrZS4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2NoYXJtYXBzICAgICAgICA6OiBUaGUgbnVtYmVyIG9mIGNoYXJtYXBzIGluIHRoZSBmYWNlLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFybWFwcyAgICAgICAgICAgIDo6IEFuIGFycmF5IG9mIHRoZSBjaGFybWFwcyBvZiB0aGUgZmFjZS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdlbmVyaWMgICAgICAgICAgICAgOjogQSBmaWVsZCByZXNlcnZlZCBmb3IgY2xpZW50IHVzZXMuICBTZWUgdGhlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9HZW5lcmljIHR5cGUgZGVzY3JpcHRpb24uICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJib3ggICAgICAgICAgICAgICAgOjogVGhlIGZvbnQgYm91bmRpbmcgYm94LiAgQ29vcmRpbmF0ZXMgYXJlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiBmb250IHVuaXRzIChzZWUgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBgdW5pdHNfcGVyX0VNJykuICBUaGUgYm94IGlzIGxhcmdlIGVub3VnaCAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29udGFpbiBhbnkgZ2x5cGggZnJvbSB0aGUgZm9udC4gIFRodXMsICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGBiYm94LnlNYXgnIGNhbiBiZSBzZWVuIGFzIHRoZSBgbWF4aW11bSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBhc2NlbmRlcicsIGFuZCBgYmJveC55TWluJyBhcyB0aGUgYG1pbmltdW0gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY2VuZGVyJy4gIE9ubHkgcmVsZXZhbnQgZm9yIHNjYWxhYmxlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IHRoZSBib3VuZGluZyBib3ggbWlnaHQgYmUgb2ZmIGJ5ICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdCBsZWFzdCkgb25lIHBpeGVsIGZvciBoaW50ZWQgZm9udHMuICBTZWUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBARlRfU2l6ZV9NZXRyaWNzIGZvciBmdXJ0aGVyIGRpc2N1c3Npb24uICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1bml0c19wZXJfRU0gICAgICAgIDo6IFRoZSBudW1iZXIgb2YgZm9udCB1bml0cyBwZXIgRU0gc3F1YXJlIGZvciAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGZhY2UuICBUaGlzIGlzIHR5cGljYWxseSAyMDQ4IGZvciAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZVR5cGUgZm9udHMsIGFuZCAxMDAwIGZvciBUeXBlfjEgZm9udHMuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgcmVsZXZhbnQgZm9yIHNjYWxhYmxlIGZvcm1hdHMuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFzY2VuZGVyICAgICAgICAgICAgOjogVGhlIHR5cG9ncmFwaGljIGFzY2VuZGVyIG9mIHRoZSBmYWNlLCAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiBmb250IHVuaXRzLiAgRm9yIGZvbnQgZm9ybWF0cyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgaGF2aW5nIHRoaXMgaW5mb3JtYXRpb24sIGl0IGlzIHNldCB0byAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYGJib3gueU1heCcuICBPbmx5IHJlbGV2YW50IGZvciBzY2FsYWJsZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlc2NlbmRlciAgICAgICAgICAgOjogVGhlIHR5cG9ncmFwaGljIGRlc2NlbmRlciBvZiB0aGUgZmFjZSwgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiBmb250IHVuaXRzLiAgRm9yIGZvbnQgZm9ybWF0cyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgaGF2aW5nIHRoaXMgaW5mb3JtYXRpb24sIGl0IGlzIHNldCB0byAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgYGJib3gueU1pbicuICBOb3RlIHRoYXQgdGhpcyBmaWVsZCBpcyAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzdWFsbHkgbmVnYXRpdmUuICBPbmx5IHJlbGV2YW50IGZvciAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsYWJsZSBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBoZWlnaHQgICAgICAgICAgICAgIDo6IFRoaXMgdmFsdWUgaXMgdGhlIHZlcnRpY2FsIGRpc3RhbmNlICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBiYXNlbGluZXMsICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2VkIGluIGZvbnQgdW5pdHMuICBJdCBpcyBhbHdheXMgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlLiAgT25seSByZWxldmFudCBmb3Igc2NhbGFibGUgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSBnbG9iYWwgZ2x5cGggaGVpZ2h0LCB1c2UgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBgYXNjZW5kZXIgLSBkZXNjZW5kZXInLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfYWR2YW5jZV93aWR0aCAgIDo6IFRoZSBtYXhpbXVtIGFkdmFuY2Ugd2lkdGgsIGluIGZvbnQgdW5pdHMsICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWxsIGdseXBocyBpbiB0aGlzIGZhY2UuICBUaGlzIGNhbiBiZSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCB0byBtYWtlIHdvcmQgd3JhcHBpbmcgY29tcHV0YXRpb25zICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rlci4gIE9ubHkgcmVsZXZhbnQgZm9yIHNjYWxhYmxlICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfYWR2YW5jZV9oZWlnaHQgIDo6IFRoZSBtYXhpbXVtIGFkdmFuY2UgaGVpZ2h0LCBpbiBmb250IHVuaXRzLCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWxsIGdseXBocyBpbiB0aGlzIGZhY2UuICBUaGlzIGlzIG9ubHkgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZXZhbnQgZm9yIHZlcnRpY2FsIGxheW91dHMsIGFuZCBpcyBzZXQgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGBoZWlnaHQnIGZvciBmb250cyB0aGF0IGRvIG5vdCBwcm92aWRlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBtZXRyaWNzLiAgT25seSByZWxldmFudCBmb3IgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGFibGUgZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdW5kZXJsaW5lX3Bvc2l0aW9uICA6OiBUaGUgcG9zaXRpb24sIGluIGZvbnQgdW5pdHMsIG9mIHRoZSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJsaW5lIGxpbmUgZm9yIHRoaXMgZmFjZS4gIEl0IGlzIHRoZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlciBvZiB0aGUgdW5kZXJsaW5pbmcgc3RlbS4gIE9ubHkgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFudCBmb3Igc2NhbGFibGUgZm9ybWF0cy4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1bmRlcmxpbmVfdGhpY2tuZXNzIDo6IFRoZSB0aGlja25lc3MsIGluIGZvbnQgdW5pdHMsIG9mIHRoZSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmUgZm9yIHRoaXMgZmFjZS4gIE9ubHkgcmVsZXZhbnQgZm9yICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGFibGUgZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGggICAgICAgICAgICAgICA6OiBUaGUgZmFjZSdzIGFzc29jaWF0ZWQgZ2x5cGggc2xvdChzKS4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaXplICAgICAgICAgICAgICAgIDo6IFRoZSBjdXJyZW50IGFjdGl2ZSBzaXplIGZvciB0aGlzIGZhY2UuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNoYXJtYXAgICAgICAgICAgICAgOjogVGhlIGN1cnJlbnQgYWN0aXZlIGNoYXJtYXAgZm9yIHRoaXMgZmFjZS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZpZWxkcyBtYXkgYmUgY2hhbmdlZCBhZnRlciBhIGNhbGwgdG8gQEZUX0F0dGFjaF9GaWxlIG9yICAgICAgICAgICAqLworICAvKiAgICBARlRfQXR0YWNoX1N0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9GYWNlUmVjXworICB7CisgICAgRlRfTG9uZyAgICAgICAgICAgbnVtX2ZhY2VzOworICAgIEZUX0xvbmcgICAgICAgICAgIGZhY2VfaW5kZXg7CisKKyAgICBGVF9Mb25nICAgICAgICAgICBmYWNlX2ZsYWdzOworICAgIEZUX0xvbmcgICAgICAgICAgIHN0eWxlX2ZsYWdzOworCisgICAgRlRfTG9uZyAgICAgICAgICAgbnVtX2dseXBoczsKKworICAgIEZUX1N0cmluZyogICAgICAgIGZhbWlseV9uYW1lOworICAgIEZUX1N0cmluZyogICAgICAgIHN0eWxlX25hbWU7CisKKyAgICBGVF9JbnQgICAgICAgICAgICBudW1fZml4ZWRfc2l6ZXM7CisgICAgRlRfQml0bWFwX1NpemUqICAgYXZhaWxhYmxlX3NpemVzOworCisgICAgRlRfSW50ICAgICAgICAgICAgbnVtX2NoYXJtYXBzOworICAgIEZUX0NoYXJNYXAqICAgICAgIGNoYXJtYXBzOworCisjaWZkZWYJX0ZYX01BTkFHRURfQ09ERV8KKyNkZWZpbmUgZ2VuZXJpYwkJZ2VuZXJpY19kYXRhCisjZW5kaWYKKworICAgIEZUX0dlbmVyaWMgICAgICAgIGdlbmVyaWM7CisKKyAgICAvKiMgVGhlIGZvbGxvd2luZyBtZW1iZXIgdmFyaWFibGVzIChkb3duIHRvIGB1bmRlcmxpbmVfdGhpY2tuZXNzJykgKi8KKyAgICAvKiMgYXJlIG9ubHkgcmVsZXZhbnQgdG8gc2NhbGFibGUgb3V0bGluZXM7IGNmLiBARlRfQml0bWFwX1NpemUgICAgKi8KKyAgICAvKiMgZm9yIGJpdG1hcCBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBGVF9CQm94ICAgICAgICAgICBiYm94OworCisgICAgRlRfVVNob3J0ICAgICAgICAgdW5pdHNfcGVyX0VNOworICAgIEZUX1Nob3J0ICAgICAgICAgIGFzY2VuZGVyOworICAgIEZUX1Nob3J0ICAgICAgICAgIGRlc2NlbmRlcjsKKyAgICBGVF9TaG9ydCAgICAgICAgICBoZWlnaHQ7CisKKyAgICBGVF9TaG9ydCAgICAgICAgICBtYXhfYWR2YW5jZV93aWR0aDsKKyAgICBGVF9TaG9ydCAgICAgICAgICBtYXhfYWR2YW5jZV9oZWlnaHQ7CisKKyAgICBGVF9TaG9ydCAgICAgICAgICB1bmRlcmxpbmVfcG9zaXRpb247CisgICAgRlRfU2hvcnQgICAgICAgICAgdW5kZXJsaW5lX3RoaWNrbmVzczsKKworICAgIEZUX0dseXBoU2xvdCAgICAgIGdseXBoOworICAgIEZUX1NpemUgICAgICAgICAgIHNpemU7CisgICAgRlRfQ2hhck1hcCAgICAgICAgY2hhcm1hcDsKKworICAgIC8qQHByaXZhdGUgYmVnaW4gKi8KKworICAgIEZUX0RyaXZlciAgICAgICAgIGRyaXZlcjsKKyAgICBGVF9NZW1vcnkgICAgICAgICBtZW1vcnk7CisgICAgRlRfU3RyZWFtICAgICAgICAgc3RyZWFtOworCisgICAgRlRfTGlzdFJlYyAgICAgICAgc2l6ZXNfbGlzdDsKKworICAgIEZUX0dlbmVyaWMgICAgICAgIGF1dG9oaW50OyAgIC8qIGZhY2Utc3BlY2lmaWMgYXV0by1oaW50ZXIgZGF0YSAqLworICAgIHZvaWQqICAgICAgICAgICAgIGV4dGVuc2lvbnM7IC8qIHVudXNlZCAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgRlRfRmFjZV9JbnRlcm5hbCAgaW50ZXJuYWw7CisKKyAgICAvKkBwcml2YXRlIGVuZCAqLworCisgIH0gRlRfRmFjZVJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19YWFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgbGlzdCBvZiBiaXQgZmxhZ3MgdXNlZCBpbiB0aGUgYGZhY2VfZmxhZ3MnIGZpZWxkIG9mIHRoZSAgICAgICAgICAqLworICAvKiAgICBARlRfRmFjZVJlYyBzdHJ1Y3R1cmUuICBUaGV5IGluZm9ybSBjbGllbnQgYXBwbGljYXRpb25zIG9mICAgICAgICAgKi8KKyAgLyogICAgcHJvcGVydGllcyBvZiB0aGUgY29ycmVzcG9uZGluZyBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRkFDRV9GTEFHX1NDQUxBQkxFIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGZhY2UgY29udGFpbnMgb3V0bGluZSBnbHlwaHMuICBUaGlzIGRvZXNuJ3QgICAqLworICAvKiAgICAgIHByZXZlbnQgYml0bWFwIHN0cmlrZXMsIGkuZS4sIGEgZmFjZSBjYW4gaGF2ZSBib3RoIHRoaXMgYW5kICAgICAgKi8KKyAgLyogICAgICBhbmQgQEZUX0ZBQ0VfRkxBR19GSVhFRF9TSVpFUyBzZXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GQUNFX0ZMQUdfRklYRURfU0laRVMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgZmFjZSBjb250YWlucyBiaXRtYXAgc3RyaWtlcy4gIFNlZSBhbHNvIHRoZSAgICovCisgIC8qICAgICAgYG51bV9maXhlZF9zaXplcycgYW5kIGBhdmFpbGFibGVfc2l6ZXMnIGZpZWxkcyBvZiBARlRfRmFjZVJlYy4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRkFDRV9GTEFHX0ZJWEVEX1dJRFRIIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGZhY2UgY29udGFpbnMgZml4ZWQtd2lkdGggY2hhcmFjdGVycyAobGlrZSAgICAqLworICAvKiAgICAgIENvdXJpZXIsIEx1Y2lkbywgTW9ub1R5cGUsIGV0Yy4pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19TRk5UIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBmYWNlIHVzZXMgdGhlIGBzZm50JyBzdG9yYWdlIHNjaGVtZS4gIEZvciAgICAgKi8KKyAgLyogICAgICBub3csIHRoaXMgbWVhbnMgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GQUNFX0ZMQUdfSE9SSVpPTlRBTCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgZmFjZSBjb250YWlucyBob3Jpem9udGFsIGdseXBoIG1ldHJpY3MuICBUaGlzICovCisgIC8qICAgICAgc2hvdWxkIGJlIHNldCBmb3IgYWxsIGNvbW1vbiBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRkFDRV9GTEFHX1ZFUlRJQ0FMIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGZhY2UgY29udGFpbnMgdmVydGljYWwgZ2x5cGggbWV0cmljcy4gIFRoaXMgICAqLworICAvKiAgICAgIGlzIG9ubHkgYXZhaWxhYmxlIGluIHNvbWUgZm9ybWF0cywgbm90IGFsbCBvZiB0aGVtLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19LRVJOSU5HIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBmYWNlIGNvbnRhaW5zIGtlcm5pbmcgaW5mb3JtYXRpb24uICBJZiBzZXQsICAgKi8KKyAgLyogICAgICB0aGUga2VybmluZyBkaXN0YW5jZSBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIGZ1bmN0aW9uICAgICAgICovCisgIC8qICAgICAgQEZUX0dldF9LZXJuaW5nLiAgT3RoZXJ3aXNlIHRoZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJuIHRoZSAgICAgICAqLworICAvKiAgICAgIHZlY3RvciAoMCwwKS4gIE5vdGUgdGhhdCBGcmVlVHlwZSBkb2Vzbid0IGhhbmRsZSBrZXJuaW5nIGRhdGEgICAgKi8KKyAgLyogICAgICBmcm9tIHRoZSBgR1BPUycgdGFibGUgKGFzIHByZXNlbnQgaW4gc29tZSBPcGVuVHlwZSBmb250cykuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GQUNFX0ZMQUdfRkFTVF9HTFlQSFMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUSElTIEZMQUcgSVMgREVQUkVDQVRFRC4gIERPIE5PVCBVU0UgT1IgVEVTVCBJVC4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GQUNFX0ZMQUdfTVVMVElQTEVfTUFTVEVSUyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgZm9udCBjb250YWlucyBtdWx0aXBsZSBtYXN0ZXJzIGFuZCBpcyBjYXBhYmxlICovCisgIC8qICAgICAgb2YgaW50ZXJwb2xhdGluZyBiZXR3ZWVuIHRoZW0uICBTZWUgdGhlIG11bHRpcGxlLW1hc3RlcnMgICAgICAgICAqLworICAvKiAgICAgIHNwZWNpZmljIEFQSSBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBmb250IGNvbnRhaW5zIGdseXBoIG5hbWVzIHRoYXQgY2FuIGJlICAgICAgICAgKi8KKyAgLyogICAgICByZXRyaWV2ZWQgdGhyb3VnaCBARlRfR2V0X0dseXBoX05hbWUuICBOb3RlIHRoYXQgc29tZSBUcnVlVHlwZSAgICovCisgIC8qICAgICAgZm9udHMgY29udGFpbiBicm9rZW4gZ2x5cGggbmFtZSB0YWJsZXMuICBVc2UgdGhlIGZ1bmN0aW9uICAgICAgICAqLworICAvKiAgICAgIEBGVF9IYXNfUFNfR2x5cGhfTmFtZXMgd2hlbiBuZWVkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZBQ0VfRkxBR19FWFRFUk5BTF9TVFJFQU0gOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFVzZWQgaW50ZXJuYWxseSBieSBGcmVlVHlwZSB0byBpbmRpY2F0ZSB0aGF0IGEgZmFjZSdzIHN0cmVhbSB3YXMgKi8KKyAgLyogICAgICBwcm92aWRlZCBieSB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIGFuZCBzaG91bGQgbm90IGJlIGRlc3Ryb3llZCAgICovCisgIC8qICAgICAgd2hlbiBARlRfRG9uZV9GYWNlIGlzIGNhbGxlZC4gIERvbid0IHJlYWQgb3IgdGVzdCB0aGlzIGZsYWcuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRkFDRV9GTEFHX0hJTlRFUiA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgU2V0IGlmIHRoZSBmb250IGRyaXZlciBoYXMgYSBoaW50aW5nIG1hY2hpbmUgb2YgaXRzIG93bi4gIEZvciAgICAqLworICAvKiAgICAgIGV4YW1wbGUsIHdpdGggVHJ1ZVR5cGUgZm9udHMsIGl0IG1ha2VzIHNlbnNlIHRvIHVzZSBkYXRhIGZyb20gICAgKi8KKyAgLyogICAgICB0aGUgU0ZOVCBgZ2FzcCcgdGFibGUgb25seSBpZiB0aGUgbmF0aXZlIFRydWVUeXBlIGhpbnRpbmcgZW5naW5lICovCisgIC8qICAgICAgKHdpdGggdGhlIGJ5dGVjb2RlIGludGVycHJldGVyKSBpcyBhdmFpbGFibGUgYW5kIGFjdGl2ZS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRkFDRV9GTEFHX0NJRF9LRVlFRCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgU2V0IGlmIHRoZSBmb250IGlzIENJRC1rZXllZC4gIEluIHRoYXQgY2FzZSwgdGhlIGZvbnQgaXMgbm90ICAgICAqLworICAvKiAgICAgIGFjY2Vzc2VkIGJ5IGdseXBoIGluZGljZXMgYnV0IGJ5IENJRCB2YWx1ZXMuICBGb3Igc3Vic2V0dGVkICAgICAgKi8KKyAgLyogICAgICBDSUQta2V5ZWQgZm9udHMgdGhpcyBoYXMgdGhlIGNvbnNlcXVlbmNlIHRoYXQgbm90IGFsbCBpbmRleCAgICAgICovCisgIC8qICAgICAgdmFsdWVzIGFyZSBhIHZhbGlkIGFyZ3VtZW50IHRvIEZUX0xvYWRfR2x5cGguICBPbmx5IHRoZSBDSUQgICAgICAqLworICAvKiAgICAgIHZhbHVlcyBmb3Igd2hpY2ggY29ycmVzcG9uZGluZyBnbHlwaHMgaW4gdGhlIHN1YnNldHRlZCBmb250ICAgICAgKi8KKyAgLyogICAgICBleGlzdCBtYWtlIEZUX0xvYWRfR2x5cGggcmV0dXJuIHN1Y2Nlc3NmdWxseTsgaW4gYWxsIG90aGVyIGNhc2VzICovCisgIC8qICAgICAgeW91IGdldCBhbiBgRlRfRXJyX0ludmFsaWRfQXJndW1lbnQnIGVycm9yLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBOb3RlIHRoYXQgQ0lELWtleWVkIGZvbnRzIHdoaWNoIGFyZSBpbiBhbiBTRk5UIHdyYXBwZXIgZG9uJ3QgICAgICovCisgIC8qICAgICAgaGF2ZSB0aGlzIGZsYWcgc2V0IHNpbmNlIHRoZSBnbHlwaHMgYXJlIGFjY2Vzc2VkIGluIHRoZSBub3JtYWwgICAqLworICAvKiAgICAgIHdheSAodXNpbmcgY29udGlndW91cyBpbmRpY2VzKTsgdGhlIGBDSUQtbmVzcycgaXNuJ3QgdmlzaWJsZSB0byAgKi8KKyAgLyogICAgICB0aGUgYXBwbGljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GQUNFX0ZMQUdfVFJJQ0tZIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBTZXQgaWYgdGhlIGZvbnQgaXMgYHRyaWNreScsIHRoaXMgaXMsIGl0IGFsd2F5cyBuZWVkcyB0aGUgICAgICAgICovCisgIC8qICAgICAgZm9udCBmb3JtYXQncyBuYXRpdmUgaGludGluZyBlbmdpbmUgdG8gZ2V0IGEgcmVhc29uYWJsZSByZXN1bHQuICAqLworICAvKiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIGlzIHRoZSBDaGluZXNlIGZvbnQgYG1pbmdsaS50dGYnIHdoaWNoIHVzZXMgICAgKi8KKyAgLyogICAgICBUcnVlVHlwZSBieXRlY29kZSBpbnN0cnVjdGlvbnMgdG8gbW92ZSBhbmQgc2NhbGUgYWxsIG9mIGl0cyAgICAgICovCisgIC8qICAgICAgc3ViZ2x5cGhzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJdCBpcyBub3QgcG9zc2libGUgdG8gYXV0b2hpbnQgc3VjaCBmb250cyB1c2luZyAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQEZUX0xPQURfRk9SQ0VfQVVUT0hJTlQ7IGl0IHdpbGwgYWxzbyBpZ25vcmUgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEBGVF9MT0FEX05PX0hJTlRJTkcuICBZb3UgaGF2ZSB0byBzZXQgYm90aCBARlRfTE9BRF9OT19ISU5USU5HICAgKi8KKyAgLyogICAgICBhbmQgQEZUX0xPQURfTk9fQVVUT0hJTlQgdG8gcmVhbGx5IGRpc2FibGUgaGludGluZzsgaG93ZXZlciwgeW91ICovCisgIC8qICAgICAgcHJvYmFibHkgbmV2ZXIgd2FudCB0aGlzIGV4Y2VwdCBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlcy4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBDdXJyZW50bHksIHRoZXJlIGFyZSBhYm91dCBhIGRvemVuIFRydWVUeXBlIGZvbnRzIGluIHRoZSBsaXN0IG9mICovCisgIC8qICAgICAgdHJpY2t5IGZvbnRzOyB0aGV5IGFyZSBoYXJkLWNvZGVkIGluIGZpbGUgYHR0b2Jqcy5jJy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfRkFDRV9GTEFHX1NDQUxBQkxFICAgICAgICAgICggMUwgPDwgIDAgKQorI2RlZmluZSBGVF9GQUNFX0ZMQUdfRklYRURfU0laRVMgICAgICAgKCAxTCA8PCAgMSApCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURUSCAgICAgICAoIDFMIDw8ICAyICkKKyNkZWZpbmUgRlRfRkFDRV9GTEFHX1NGTlQgICAgICAgICAgICAgICggMUwgPDwgIDMgKQorI2RlZmluZSBGVF9GQUNFX0ZMQUdfSE9SSVpPTlRBTCAgICAgICAgKCAxTCA8PCAgNCApCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19WRVJUSUNBTCAgICAgICAgICAoIDFMIDw8ICA1ICkKKyNkZWZpbmUgRlRfRkFDRV9GTEFHX0tFUk5JTkcgICAgICAgICAgICggMUwgPDwgIDYgKQorI2RlZmluZSBGVF9GQUNFX0ZMQUdfRkFTVF9HTFlQSFMgICAgICAgKCAxTCA8PCAgNyApCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19NVUxUSVBMRV9NQVNURVJTICAoIDFMIDw8ICA4ICkKKyNkZWZpbmUgRlRfRkFDRV9GTEFHX0dMWVBIX05BTUVTICAgICAgICggMUwgPDwgIDkgKQorI2RlZmluZSBGVF9GQUNFX0ZMQUdfRVhURVJOQUxfU1RSRUFNICAgKCAxTCA8PCAxMCApCisjZGVmaW5lIEZUX0ZBQ0VfRkxBR19ISU5URVIgICAgICAgICAgICAoIDFMIDw8IDExICkKKyNkZWZpbmUgRlRfRkFDRV9GTEFHX0NJRF9LRVlFRCAgICAgICAgICggMUwgPDwgMTIgKQorI2RlZmluZSBGVF9GQUNFX0ZMQUdfVFJJQ0tZICAgICAgICAgICAgKCAxTCA8PCAxMyApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfSEFTX0hPUklaT05UQUwoIGZhY2UgKQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuZXZlciBhIGZhY2Ugb2JqZWN0IGNvbnRhaW5zCisgICAqICAgaG9yaXpvbnRhbCBtZXRyaWNzICh0aGlzIGlzIHRydWUgZm9yIGFsbCBmb250IGZvcm1hdHMgdGhvdWdoKS4KKyAgICoKKyAgICogQGFsc286CisgICAqICAgQEZUX0hBU19WRVJUSUNBTCBjYW4gYmUgdXNlZCB0byBjaGVjayBmb3IgdmVydGljYWwgbWV0cmljcy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0hBU19IT1JJWk9OVEFMKCBmYWNlICkgXAorICAgICAgICAgICggZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19IT1JJWk9OVEFMICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9IQVNfVkVSVElDQUwoIGZhY2UgKQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuZXZlciBhIGZhY2Ugb2JqZWN0IGNvbnRhaW5zIHJlYWwKKyAgICogICB2ZXJ0aWNhbCBtZXRyaWNzIChhbmQgbm90IG9ubHkgc3ludGhlc2l6ZWQgb25lcykuCisgICAqCisgICAqLworI2RlZmluZSBGVF9IQVNfVkVSVElDQUwoIGZhY2UgKSBcCisgICAgICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX1ZFUlRJQ0FMICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9IQVNfS0VSTklORyggZmFjZSApCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIGEgZmFjZSBvYmplY3QgY29udGFpbnMga2VybmluZworICAgKiAgIGRhdGEgdGhhdCBjYW4gYmUgYWNjZXNzZWQgd2l0aCBARlRfR2V0X0tlcm5pbmcuCisgICAqCisgICAqLworI2RlZmluZSBGVF9IQVNfS0VSTklORyggZmFjZSApIFwKKyAgICAgICAgICAoIGZhY2UtPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfS0VSTklORyApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfSVNfU0NBTEFCTEUoIGZhY2UgKQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuZXZlciBhIGZhY2Ugb2JqZWN0IGNvbnRhaW5zIGEgc2NhbGFibGUKKyAgICogICBmb250IGZhY2UgKHRydWUgZm9yIFRydWVUeXBlLCBUeXBlfjEsIFR5cGV+NDIsIENJRCwgT3BlblR5cGUvQ0ZGLAorICAgKiAgIGFuZCBQRlIgZm9udCBmb3JtYXRzLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfSVNfU0NBTEFCTEUoIGZhY2UgKSBcCisgICAgICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX1NDQUxBQkxFICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9JU19TRk5UKCBmYWNlICkKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIG9iamVjdCBjb250YWlucyBhIGZvbnQKKyAgICogICB3aG9zZSBmb3JtYXQgaXMgYmFzZWQgb24gdGhlIFNGTlQgc3RvcmFnZSBzY2hlbWUuICBUaGlzIHVzdWFsbHkKKyAgICogICBtZWFuczogVHJ1ZVR5cGUgZm9udHMsIE9wZW5UeXBlIGZvbnRzLCBhcyB3ZWxsIGFzIFNGTlQtYmFzZWQgZW1iZWRkZWQKKyAgICogICBiaXRtYXAgZm9udHMuCisgICAqCisgICAqICAgSWYgdGhpcyBtYWNybyBpcyB0cnVlLCBhbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gQEZUX1NGTlRfTkFNRVNfSCBhbmQKKyAgICogICBARlRfVFJVRVRZUEVfVEFCTEVTX0ggYXJlIGF2YWlsYWJsZS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0lTX1NGTlQoIGZhY2UgKSBcCisgICAgICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX1NGTlQgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0lTX0ZJWEVEX1dJRFRIKCBmYWNlICkKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIG9iamVjdCBjb250YWlucyBhIGZvbnQgZmFjZQorICAgKiAgIHRoYXQgY29udGFpbnMgZml4ZWQtd2lkdGggKG9yIGBtb25vc3BhY2UnLCBgZml4ZWQtcGl0Y2gnLCBldGMuKQorICAgKiAgIGdseXBocy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0lTX0ZJWEVEX1dJRFRIKCBmYWNlICkgXAorICAgICAgICAgICggZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURUSCApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfSEFTX0ZJWEVEX1NJWkVTKCBmYWNlICkKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWFjcm8gdGhhdCByZXR1cm5zIHRydWUgd2hlbmV2ZXIgYSBmYWNlIG9iamVjdCBjb250YWlucyBzb21lCisgICAqICAgZW1iZWRkZWQgYml0bWFwcy4gIFNlZSB0aGUgYGF2YWlsYWJsZV9zaXplcycgZmllbGQgb2YgdGhlCisgICAqICAgQEZUX0ZhY2VSZWMgc3RydWN0dXJlLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfSEFTX0ZJWEVEX1NJWkVTKCBmYWNlICkgXAorICAgICAgICAgICggZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19GSVhFRF9TSVpFUyApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfSEFTX0ZBU1RfR0xZUEhTKCBmYWNlICkKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIERlcHJlY2F0ZWQuCisgICAqCisgICAqLworI2RlZmluZSBGVF9IQVNfRkFTVF9HTFlQSFMoIGZhY2UgKSAgMAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0hBU19HTFlQSF9OQU1FUyggZmFjZSApCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIGEgZmFjZSBvYmplY3QgY29udGFpbnMgc29tZSBnbHlwaAorICAgKiAgIG5hbWVzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggQEZUX0dldF9HbHlwaF9OYW1lLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfSEFTX0dMWVBIX05BTUVTKCBmYWNlICkgXAorICAgICAgICAgICggZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUyApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfSEFTX01VTFRJUExFX01BU1RFUlMoIGZhY2UgKQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtYWNybyB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuZXZlciBhIGZhY2Ugb2JqZWN0IGNvbnRhaW5zIHNvbWUKKyAgICogICBtdWx0aXBsZSBtYXN0ZXJzLiAgVGhlIGZ1bmN0aW9ucyBwcm92aWRlZCBieSBARlRfTVVMVElQTEVfTUFTVEVSU19ICisgICAqICAgYXJlIHRoZW4gYXZhaWxhYmxlIHRvIGNob29zZSB0aGUgZXhhY3QgZGVzaWduIHlvdSB3YW50LgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfSEFTX01VTFRJUExFX01BU1RFUlMoIGZhY2UgKSBcCisgICAgICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX01VTFRJUExFX01BU1RFUlMgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0lTX0NJRF9LRVlFRCggZmFjZSApCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIGEgZmFjZSBvYmplY3QgY29udGFpbnMgYSBDSUQta2V5ZWQKKyAgICogICBmb250LiAgU2VlIHRoZSBkaXNjdXNzaW9uIG9mIEBGVF9GQUNFX0ZMQUdfQ0lEX0tFWUVEIGZvciBtb3JlCisgICAqICAgZGV0YWlscy4KKyAgICoKKyAgICogICBJZiB0aGlzIG1hY3JvIGlzIHRydWUsIGFsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBARlRfQ0lEX0ggYXJlCisgICAqICAgYXZhaWxhYmxlLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfSVNfQ0lEX0tFWUVEKCBmYWNlICkgXAorICAgICAgICAgICggZmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19DSURfS0VZRUQgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0lTX1RSSUNLWSggZmFjZSApCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1hY3JvIHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIGEgZmFjZSByZXByZXNlbnRzIGEgYHRyaWNreScgZm9udC4KKyAgICogICBTZWUgdGhlIGRpc2N1c3Npb24gb2YgQEZUX0ZBQ0VfRkxBR19UUklDS1kgZm9yIG1vcmUgZGV0YWlscy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0lTX1RSSUNLWSggZmFjZSApIFwKKyAgICAgICAgICAoIGZhY2UtPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfVFJJQ0tZICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPENvbnN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NUWUxFX0ZMQUdfWFhYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgbGlzdCBvZiBiaXQtZmxhZ3MgdXNlZCB0byBpbmRpY2F0ZSB0aGUgc3R5bGUgb2YgYSBnaXZlbiBmYWNlLiAgICAqLworICAvKiAgICBUaGVzZSBhcmUgdXNlZCBpbiB0aGUgYHN0eWxlX2ZsYWdzJyBmaWVsZCBvZiBARlRfRmFjZVJlYy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TVFlMRV9GTEFHX0lUQUxJQyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCBhIGdpdmVuIGZhY2Ugc3R5bGUgaXMgaXRhbGljIG9yIG9ibGlxdWUuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TVFlMRV9GTEFHX0JPTEQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJbmRpY2F0ZXMgdGhhdCBhIGdpdmVuIGZhY2UgaXMgYm9sZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHN0eWxlIGluZm9ybWF0aW9uIGFzIHByb3ZpZGVkIGJ5IEZyZWVUeXBlIGlzIHZlcnkgYmFzaWMuICBNb3JlICovCisgIC8qICAgIGRldGFpbHMgYXJlIGJleW9uZCB0aGUgc2NvcGUgYW5kIHNob3VsZCBiZSBkb25lIG9uIGEgaGlnaGVyIGxldmVsICAqLworICAvKiAgICAoZm9yIGV4YW1wbGUsIGJ5IGFuYWx5emluZyB2YXJpb3VzIGZpZWxkcyBvZiB0aGUgYE9TLzInIHRhYmxlIGluICAgKi8KKyAgLyogICAgU0ZOVCBiYXNlZCBmb250cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9TVFlMRV9GTEFHX0lUQUxJQyAgKCAxIDw8IDAgKQorI2RlZmluZSBGVF9TVFlMRV9GTEFHX0JPTEQgICAgKCAxIDw8IDEgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2l6ZV9JbnRlcm5hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gb3BhcXVlIGhhbmRsZSB0byBhbiBgRlRfU2l6ZV9JbnRlcm5hbFJlYycgc3RydWN0dXJlLCB1c2VkIHRvICAgICovCisgIC8qICAgIG1vZGVsIHByaXZhdGUgZGF0YSBvZiBhIGdpdmVuIEBGVF9TaXplIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU2l6ZV9JbnRlcm5hbFJlY18qICBGVF9TaXplX0ludGVybmFsOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2l6ZV9NZXRyaWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHNpemUgbWV0cmljcyBzdHJ1Y3R1cmUgZ2l2ZXMgdGhlIG1ldHJpY3Mgb2YgYSBzaXplIG9iamVjdC4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeF9wcGVtICAgICAgIDo6IFRoZSB3aWR0aCBvZiB0aGUgc2NhbGVkIEVNIHNxdWFyZSBpbiBwaXhlbHMsIGhlbmNlICovCisgIC8qICAgICAgICAgICAgICAgICAgICB0aGUgdGVybSBgcHBlbScgKHBpeGVscyBwZXIgRU0pLiAgSXQgaXMgYWxzbyAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgcmVmZXJyZWQgdG8gYXMgYG5vbWluYWwgd2lkdGgnLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlfcHBlbSAgICAgICA6OiBUaGUgaGVpZ2h0IG9mIHRoZSBzY2FsZWQgRU0gc3F1YXJlIGluIHBpeGVscywgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgaGVuY2UgdGhlIHRlcm0gYHBwZW0nIChwaXhlbHMgcGVyIEVNKS4gIEl0IGlzIGFsc28gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHJlZmVycmVkIHRvIGFzIGBub21pbmFsIGhlaWdodCcuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4X3NjYWxlICAgICAgOjogQSAxNi4xNiBmcmFjdGlvbmFsIHNjYWxpbmcgdmFsdWUgdXNlZCB0byBjb252ZXJ0ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGhvcml6b250YWwgbWV0cmljcyBmcm9tIGZvbnQgdW5pdHMgdG8gMjYuNiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbmFsIHBpeGVscy4gIE9ubHkgcmVsZXZhbnQgZm9yIHNjYWxhYmxlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgZm9udCBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlfc2NhbGUgICAgICA6OiBBIDE2LjE2IGZyYWN0aW9uYWwgc2NhbGluZyB2YWx1ZSB1c2VkIHRvIGNvbnZlcnQgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwgbWV0cmljcyBmcm9tIGZvbnQgdW5pdHMgdG8gMjYuNiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uYWwgcGl4ZWxzLiAgT25seSByZWxldmFudCBmb3Igc2NhbGFibGUgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBmb250IGZvcm1hdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYXNjZW5kZXIgICAgIDo6IFRoZSBhc2NlbmRlciBpbiAyNi42IGZyYWN0aW9uYWwgcGl4ZWxzLiAgU2VlICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBARlRfRmFjZVJlYyBmb3IgdGhlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVzY2VuZGVyICAgIDo6IFRoZSBkZXNjZW5kZXIgaW4gMjYuNiBmcmFjdGlvbmFsIHBpeGVscy4gIFNlZSAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBARlRfRmFjZVJlYyBmb3IgdGhlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVpZ2h0ICAgICAgIDo6IFRoZSBoZWlnaHQgaW4gMjYuNiBmcmFjdGlvbmFsIHBpeGVscy4gIFNlZSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBARlRfRmFjZVJlYyBmb3IgdGhlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X2FkdmFuY2UgIDo6IFRoZSBtYXhpbXVtIGFkdmFuY2Ugd2lkdGggaW4gMjYuNiBmcmFjdGlvbmFsICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBwaXhlbHMuICBTZWUgQEZUX0ZhY2VSZWMgZm9yIHRoZSBkZXRhaWxzLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBzY2FsaW5nIHZhbHVlcywgaWYgcmVsZXZhbnQsIGFyZSBkZXRlcm1pbmVkIGZpcnN0IGR1cmluZyBhICAgICAqLworICAvKiAgICBzaXplIGNoYW5naW5nIG9wZXJhdGlvbi4gIFRoZSByZW1haW5pbmcgZmllbGRzIGFyZSB0aGVuIHNldCBieSB0aGUgKi8KKyAgLyogICAgZHJpdmVyLiAgRm9yIHNjYWxhYmxlIGZvcm1hdHMsIHRoZXkgYXJlIHVzdWFsbHkgc2V0IHRvIHNjYWxlZCAgICAgICovCisgIC8qICAgIHZhbHVlcyBvZiB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgaW4gQEZUX0ZhY2VSZWMuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IGR1ZSB0byBnbHlwaCBoaW50aW5nLCB0aGVzZSB2YWx1ZXMgbWlnaHQgbm90IGJlIGV4YWN0ICAgICovCisgIC8qICAgIGZvciBjZXJ0YWluIGZvbnRzLiAgVGh1cyB0aGV5IG11c3QgYmUgdHJlYXRlZCBhcyB1bnJlbGlhYmxlICAgICAgICAqLworICAvKiAgICB3aXRoIGFuIGVycm9yIG1hcmdpbiBvZiBhdCBsZWFzdCBvbmUgcGl4ZWwhICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluZGVlZCwgdGhlIG9ubHkgd2F5IHRvIGdldCB0aGUgZXhhY3QgbWV0cmljcyBpcyB0byByZW5kZXIgX2FsbF8gICAqLworICAvKiAgICBnbHlwaHMuICBBcyB0aGlzIHdvdWxkIGJlIGEgZGVmaW5pdGUgcGVyZm9ybWFuY2UgaGl0LCBpdCBpcyB1cCB0byAgKi8KKyAgLyogICAgY2xpZW50IGFwcGxpY2F0aW9ucyB0byBwZXJmb3JtIHN1Y2ggY29tcHV0YXRpb25zLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgRlRfU2l6ZV9NZXRyaWNzIHN0cnVjdHVyZSBpcyB2YWxpZCBmb3IgYml0bWFwIGZvbnRzIGFsc28uICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TaXplX01ldHJpY3NfCisgIHsKKyAgICBGVF9VU2hvcnQgIHhfcHBlbTsgICAgICAvKiBob3Jpem9udGFsIHBpeGVscyBwZXIgRU0gICAgICAgICAgICAgICAqLworICAgIEZUX1VTaG9ydCAgeV9wcGVtOyAgICAgIC8qIHZlcnRpY2FsIHBpeGVscyBwZXIgRU0gICAgICAgICAgICAgICAgICovCisKKyAgICBGVF9GaXhlZCAgIHhfc2NhbGU7ICAgICAvKiBzY2FsaW5nIHZhbHVlcyB1c2VkIHRvIGNvbnZlcnQgZm9udCAgICAqLworICAgIEZUX0ZpeGVkICAgeV9zY2FsZTsgICAgIC8qIHVuaXRzIHRvIDI2LjYgZnJhY3Rpb25hbCBwaXhlbHMgICAgICAgICovCisKKyAgICBGVF9Qb3MgICAgIGFzY2VuZGVyOyAgICAvKiBhc2NlbmRlciBpbiAyNi42IGZyYWMuIHBpeGVscyAgICAgICAgICAqLworICAgIEZUX1BvcyAgICAgZGVzY2VuZGVyOyAgIC8qIGRlc2NlbmRlciBpbiAyNi42IGZyYWMuIHBpeGVscyAgICAgICAgICovCisgICAgRlRfUG9zICAgICBoZWlnaHQ7ICAgICAgLyogdGV4dCBoZWlnaHQgaW4gMjYuNiBmcmFjLiBwaXhlbHMgICAgICAgKi8KKyAgICBGVF9Qb3MgICAgIG1heF9hZHZhbmNlOyAvKiBtYXggaG9yaXpvbnRhbCBhZHZhbmNlLCBpbiAyNi42IHBpeGVscyAqLworCisgIH0gRlRfU2l6ZV9NZXRyaWNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2l6ZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgcm9vdCBzaXplIGNsYXNzIHN0cnVjdHVyZS4gIEEgc2l6ZSBvYmplY3QgbW9kZWxzIGEgZmFjZSAgICovCisgIC8qICAgIG9iamVjdCBhdCBhIGdpdmVuIHNpemUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgOjogSGFuZGxlIHRvIHRoZSBwYXJlbnQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2VuZXJpYyA6OiBBIHR5cGVsZXNzIHBvaW50ZXIsIHdoaWNoIGlzIHVudXNlZCBieSB0aGUgRnJlZVR5cGUgICAgICovCisgIC8qICAgICAgICAgICAgICAgbGlicmFyeSBvciBhbnkgb2YgaXRzIGRyaXZlcnMuICBJdCBjYW4gYmUgdXNlZCBieSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIGNsaWVudCBhcHBsaWNhdGlvbnMgdG8gbGluayB0aGVpciBvd24gZGF0YSB0byBlYWNoIHNpemUgKi8KKyAgLyogICAgICAgICAgICAgICBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZXRyaWNzIDo6IE1ldHJpY3MgZm9yIHRoaXMgc2l6ZSBvYmplY3QuICBUaGlzIGZpZWxkIGlzIHJlYWQtb25seS4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TaXplUmVjXworICB7CisgICAgRlRfRmFjZSAgICAgICAgICAgZmFjZTsgICAgICAvKiBwYXJlbnQgZmFjZSBvYmplY3QgICAgICAgICAgICAgICovCisgICAgRlRfR2VuZXJpYyAgICAgICAgZ2VuZXJpYzsgICAvKiBnZW5lcmljIHBvaW50ZXIgZm9yIGNsaWVudCB1c2VzICovCisgICAgRlRfU2l6ZV9NZXRyaWNzICAgbWV0cmljczsgICAvKiBzaXplIG1ldHJpY3MgICAgICAgICAgICAgICAgICAgICovCisgICAgRlRfU2l6ZV9JbnRlcm5hbCAgaW50ZXJuYWw7CisKKyAgfSBGVF9TaXplUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU3ViR2x5cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHN1YmdseXBoIHN0cnVjdHVyZSBpcyBhbiBpbnRlcm5hbCBvYmplY3QgdXNlZCB0byBkZXNjcmliZSAgICAgICovCisgIC8qICAgIHN1YmdseXBocyAoZm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIGNvbXBvc2l0ZXMpLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBzdWJnbHlwaCBpbXBsZW1lbnRhdGlvbiBpcyBub3QgcGFydCBvZiB0aGUgaGlnaC1sZXZlbCBBUEksICAgICAqLworICAvKiAgICBoZW5jZSB0aGUgZm9yd2FyZCBzdHJ1Y3R1cmUgZGVjbGFyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFlvdSBjYW4gaG93ZXZlciByZXRyaWV2ZSBzdWJnbHlwaCBpbmZvcm1hdGlvbiB3aXRoICAgICAgICAgICAgICAgICAqLworICAvKiAgICBARlRfR2V0X1N1YkdseXBoX0luZm8uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX1N1YkdseXBoUmVjXyogIEZUX1N1YkdseXBoOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2xvdF9JbnRlcm5hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gb3BhcXVlIGhhbmRsZSB0byBhbiBgRlRfU2xvdF9JbnRlcm5hbFJlYycgc3RydWN0dXJlLCB1c2VkIHRvICAgICovCisgIC8qICAgIG1vZGVsIHByaXZhdGUgZGF0YSBvZiBhIGdpdmVuIEBGVF9HbHlwaFNsb3Qgb2JqZWN0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU2xvdF9JbnRlcm5hbFJlY18qICBGVF9TbG90X0ludGVybmFsOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2x5cGhTbG90UmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgcm9vdCBnbHlwaCBzbG90IGNsYXNzIHN0cnVjdHVyZS4gIEEgZ2x5cGggc2xvdCBpcyBhICAgICAgICovCisgIC8qICAgIGNvbnRhaW5lciB3aGVyZSBpbmRpdmlkdWFsIGdseXBocyBjYW4gYmUgbG9hZGVkLCBiZSB0aGV5IGluICAgICAgICAqLworICAvKiAgICBvdXRsaW5lIG9yIGJpdG1hcCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgICAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgRnJlZVR5cGUgbGlicmFyeSBpbnN0YW5jZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBzbG90IGJlbG9uZ3MgdG8uICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgcGFyZW50IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5leHQgICAgICAgICAgICAgIDo6IEluIHNvbWUgY2FzZXMgKGxpa2Ugc29tZSBmb250IHRvb2xzKSwgc2V2ZXJhbCAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCBzbG90cyBwZXIgZmFjZSBvYmplY3QgY2FuIGJlIGEgZ29vZCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgdGhpbmcuICBBcyB0aGlzIGlzIHJhcmUsIHRoZSBnbHlwaCBzbG90cyBhcmUgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlZCB0aHJvdWdoIGEgZGlyZWN0LCBzaW5nbGUtbGlua2VkIGxpc3QgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBpdHMgYG5leHQnIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdlbmVyaWMgICAgICAgICAgIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB3aGljaCBpcyB1bnVzZWQgYnkgdGhlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlVHlwZSBsaWJyYXJ5IG9yIGFueSBvZiBpdHMgZHJpdmVycy4gIEl0ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHVzZWQgYnkgY2xpZW50IGFwcGxpY2F0aW9ucyB0byBsaW5rICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyIG93biBkYXRhIHRvIGVhY2ggZ2x5cGggc2xvdCBvYmplY3QuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWV0cmljcyAgICAgICAgICAgOjogVGhlIG1ldHJpY3Mgb2YgdGhlIGxhc3QgbG9hZGVkIGdseXBoIGluIHRoZSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3QuICBUaGUgcmV0dXJuZWQgdmFsdWVzIGRlcGVuZCBvbiB0aGUgbGFzdCAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkIGZsYWdzIChzZWUgdGhlIEBGVF9Mb2FkX0dseXBoIEFQSSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24pIGFuZCBjYW4gYmUgZXhwcmVzc2VkIGVpdGhlciBpbiAyNi42ICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uYWwgcGl4ZWxzIG9yIGZvbnQgdW5pdHMuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IGV2ZW4gd2hlbiB0aGUgZ2x5cGggaW1hZ2UgaXMgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkLCB0aGUgbWV0cmljcyBhcmUgbm90LiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGluZWFySG9yaUFkdmFuY2UgOjogVGhlIGFkdmFuY2Ugd2lkdGggb2YgdGhlIHVuaGludGVkIGdseXBoLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEl0cyB2YWx1ZSBpcyBleHByZXNzZWQgaW4gMTYuMTYgZnJhY3Rpb25hbCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMsIHVubGVzcyBARlRfTE9BRF9MSU5FQVJfREVTSUdOIGlzIHNldCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBsb2FkaW5nIHRoZSBnbHlwaC4gIFRoaXMgZmllbGQgY2FuIGJlICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGFudCB0byBwZXJmb3JtIGNvcnJlY3QgV1lTSVdZRyBsYXlvdXQuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IHJlbGV2YW50IGZvciBvdXRsaW5lIGdseXBocy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpbmVhclZlcnRBZHZhbmNlIDo6IFRoZSBhZHZhbmNlIGhlaWdodCBvZiB0aGUgdW5oaW50ZWQgZ2x5cGguICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBJdHMgdmFsdWUgaXMgZXhwcmVzc2VkIGluIDE2LjE2IGZyYWN0aW9uYWwgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzLCB1bmxlc3MgQEZUX0xPQURfTElORUFSX0RFU0lHTiBpcyBzZXQgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gbG9hZGluZyB0aGUgZ2x5cGguICBUaGlzIGZpZWxkIGNhbiBiZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQgdG8gcGVyZm9ybSBjb3JyZWN0IFdZU0lXWUcgbGF5b3V0LiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgT25seSByZWxldmFudCBmb3Igb3V0bGluZSBnbHlwaHMuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZHZhbmNlICAgICAgICAgICA6OiBUaGlzIHNob3J0aGFuZCBpcywgZGVwZW5kaW5nIG9uICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgQEZUX0xPQURfSUdOT1JFX1RSQU5TRk9STSwgdGhlIHRyYW5zZm9ybWVkICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2Ugd2lkdGggZm9yIHRoZSBnbHlwaCAoaW4gMjYuNiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbmFsIHBpeGVsIGZvcm1hdCkuICBBcyBzcGVjaWZpZWQgd2l0aCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgQEZUX0xPQURfVkVSVElDQUxfTEFZT1VULCBpdCB1c2VzIGVpdGhlciB0aGUgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGBob3JpQWR2YW5jZScgb3IgdGhlIGB2ZXJ0QWR2YW5jZScgdmFsdWUgb2YgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBgbWV0cmljcycgZmllbGQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvcm1hdCAgICAgICAgICAgIDo6IFRoaXMgZmllbGQgaW5kaWNhdGVzIHRoZSBmb3JtYXQgb2YgdGhlIGltYWdlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZWQgaW4gdGhlIGdseXBoIHNsb3QuICBUeXBpY2FsbHkgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgQEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAsICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSwgb3IgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBARlRfR0xZUEhfRk9STUFUX0NPTVBPU0lURSwgYnV0IG90aGVycyBhcmUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiaXRtYXAgICAgICAgICAgICA6OiBUaGlzIGZpZWxkIGlzIHVzZWQgYXMgYSBiaXRtYXAgZGVzY3JpcHRvciAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgc2xvdCBmb3JtYXQgaXMgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9HTFlQSF9GT1JNQVRfQklUTUFQLiAgTm90ZSB0aGF0IHRoZSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIGFuZCBjb250ZW50IG9mIHRoZSBiaXRtYXAgYnVmZmVyIGNhbiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlIGJldHdlZW4gY2FsbHMgb2YgQEZUX0xvYWRfR2x5cGggYW5kIGEgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGZldyBvdGhlciBmdW5jdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYml0bWFwX2xlZnQgICAgICAgOjogVGhpcyBpcyB0aGUgYml0bWFwJ3MgbGVmdCBiZWFyaW5nIGV4cHJlc3NlZCAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGluIGludGVnZXIgcGl4ZWxzLiAgT2YgY291cnNlLCB0aGlzIGlzIG9ubHkgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCBpZiB0aGUgZm9ybWF0IGlzICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgQEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiaXRtYXBfdG9wICAgICAgICA6OiBUaGlzIGlzIHRoZSBiaXRtYXAncyB0b3AgYmVhcmluZyBleHByZXNzZWQgaW4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWdlciBwaXhlbHMuICBSZW1lbWJlciB0aGF0IHRoaXMgaXMgdGhlICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlIGZyb20gdGhlIGJhc2VsaW5lIHRvIHRoZSB0b3AtbW9zdCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCBzY2FubGluZSwgdXB3YXJkcyB5fmNvb3JkaW5hdGVzIGJlaW5nICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgKnBvc2l0aXZlKi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lICAgICAgICAgICA6OiBUaGUgb3V0bGluZSBkZXNjcmlwdG9yIGZvciB0aGUgY3VycmVudCBnbHlwaCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgaWYgaXRzIGZvcm1hdCBpcyAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9HTFlQSF9GT1JNQVRfT1VUTElORS4gIE9uY2UgYSBnbHlwaCBpcyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQsIGBvdXRsaW5lJyBjYW4gYmUgdHJhbnNmb3JtZWQsICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgZGlzdG9ydGVkLCBlbWJvbGRlZCwgZXRjLiAgSG93ZXZlciwgaXQgbXVzdCAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBiZSBmcmVlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX3N1YmdseXBocyAgICAgOjogVGhlIG51bWJlciBvZiBzdWJnbHlwaHMgaW4gYSBjb21wb3NpdGUgZ2x5cGguICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgaXMgb25seSB2YWxpZCBmb3IgdGhlIGNvbXBvc2l0ZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCBmb3JtYXQgdGhhdCBzaG91bGQgbm9ybWFsbHkgb25seSBiZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkIHdpdGggdGhlIEBGVF9MT0FEX05PX1JFQ1VSU0UgZmxhZy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBub3cgdGhpcyBpcyBpbnRlcm5hbCB0byBGcmVlVHlwZS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3ViZ2x5cGhzICAgICAgICAgOjogQW4gYXJyYXkgb2Ygc3ViZ2x5cGggZGVzY3JpcHRvcnMgZm9yICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0ZSBnbHlwaHMuICBUaGVyZSBhcmUgYG51bV9zdWJnbHlwaHMnICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyBpbiB0aGVyZS4gIEN1cnJlbnRseSBpbnRlcm5hbCB0byAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb250cm9sX2RhdGEgICAgICA6OiBDZXJ0YWluIGZvbnQgZHJpdmVycyBjYW4gYWxzbyByZXR1cm4gdGhlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCBkYXRhIGZvciBhIGdpdmVuIGdseXBoIGltYWdlIChlLmcuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIFRydWVUeXBlIGJ5dGVjb2RlLCBUeXBlfjEgY2hhcnN0cmluZ3MsIGV0Yy4pLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZpZWxkIGlzIGEgcG9pbnRlciB0byBzdWNoIGRhdGEuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbnRyb2xfbGVuICAgICAgIDo6IFRoaXMgaXMgdGhlIGxlbmd0aCBpbiBieXRlcyBvZiB0aGUgY29udHJvbCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG90aGVyICAgICAgICAgICAgIDo6IFJlYWxseSB3aWNrZWQgZm9ybWF0cyBjYW4gdXNlIHRoaXMgcG9pbnRlciB0byAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50IHRoZWlyIG93biBnbHlwaCBpbWFnZSB0byBjbGllbnQgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zLiAgTm90ZSB0aGF0IHRoZSBhcHBsaWNhdGlvbiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGltYWdlIGZvcm1hdC4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbHNiX2RlbHRhICAgICAgICAgOjogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBoaW50ZWQgYW5kIHVuaGludGVkICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgc2lkZSBiZWFyaW5nIHdoaWxlIGF1dG9oaW50aW5nIGlzICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuICBaZXJvIG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJzYl9kZWx0YSAgICAgICAgIDo6IFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gaGludGVkIGFuZCB1bmhpbnRlZCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCBzaWRlIGJlYXJpbmcgd2hpbGUgYXV0b2hpbnRpbmcgaXMgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLiAgWmVybyBvdGhlcndpc2UuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgQEZUX0xvYWRfR2x5cGggaXMgY2FsbGVkIHdpdGggZGVmYXVsdCBmbGFncyAoc2VlICAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9MT0FEX0RFRkFVTFQpIHRoZSBnbHlwaCBpbWFnZSBpcyBsb2FkZWQgaW4gdGhlIGdseXBoIHNsb3QgaW4gICAqLworICAvKiAgICBpdHMgbmF0aXZlIGZvcm1hdCAoZS5nLiwgYW4gb3V0bGluZSBnbHlwaCBmb3IgVHJ1ZVR5cGUgYW5kIFR5cGV+MSAgKi8KKyAgLyogICAgZm9ybWF0cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGltYWdlIGNhbiBsYXRlciBiZSBjb252ZXJ0ZWQgaW50byBhIGJpdG1hcCBieSBjYWxsaW5nICAgICAgICAgKi8KKyAgLyogICAgQEZUX1JlbmRlcl9HbHlwaC4gIFRoaXMgZnVuY3Rpb24gZmluZHMgdGhlIGN1cnJlbnQgcmVuZGVyZXIgZm9yICAgICovCisgIC8qICAgIHRoZSBuYXRpdmUgaW1hZ2UncyBmb3JtYXQsIHRoZW4gaW52b2tlcyBpdC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlbmRlcmVyIGlzIGluIGNoYXJnZSBvZiB0cmFuc2Zvcm1pbmcgdGhlIG5hdGl2ZSBpbWFnZSB0aHJvdWdoICovCisgIC8qICAgIHRoZSBzbG90J3MgZmFjZSB0cmFuc2Zvcm1hdGlvbiBmaWVsZHMsIHRoZW4gY29udmVydGluZyBpdCBpbnRvIGEgICAqLworICAvKiAgICBiaXRtYXAgdGhhdCBpcyByZXR1cm5lZCBpbiBgc2xvdC0+Yml0bWFwJy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgdGhhdCBgc2xvdC0+Yml0bWFwX2xlZnQnIGFuZCBgc2xvdC0+Yml0bWFwX3RvcCcgYXJlIGFsc28gdXNlZCAqLworICAvKiAgICB0byBzcGVjaWZ5IHRoZSBwb3NpdGlvbiBvZiB0aGUgYml0bWFwIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHBlbiAgKi8KKyAgLyogICAgcG9zaXRpb24gKGUuZy4sIGNvb3JkaW5hdGVzICgwLDApIG9uIHRoZSBiYXNlbGluZSkuICBPZiBjb3Vyc2UsICAgICovCisgIC8qICAgIGBzbG90LT5mb3JtYXQnIGlzIGFsc28gY2hhbmdlZCB0byBARlRfR0xZUEhfRk9STUFUX0JJVE1BUC4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEhlcmUgYSBzbWFsbCBwc2V1ZG8gY29kZSBmcmFnbWVudCB3aGljaCBzaG93cyBob3cgdG8gdXNlICAgICAgICAgICAqLworICAvKiAgICBgbHNiX2RlbHRhJyBhbmQgYHJzYl9kZWx0YSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEZUX1BvcyAgb3JpZ2luX3ggICAgICAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBGVF9Qb3MgIHByZXZfcnNiX2RlbHRhID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBmb3IgYWxsIGdseXBocyBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICA8Y29tcHV0ZSBrZXJuIGJldHdlZW4gY3VycmVudCBhbmQgcHJldmlvdXMgZ2x5cGggYW5kIGFkZCBpdCB0byAqLworICAvKiAgICAgICAgIGBvcmlnaW5feCc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICA8bG9hZCBnbHlwaCB3aXRoIGBGVF9Mb2FkX0dseXBoJz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIGlmICggcHJldl9yc2JfZGVsdGEgLSBmYWNlLT5nbHlwaC0+bHNiX2RlbHRhID49IDMyICkgICAgICAgICAgICovCisgIC8qICAgICAgICAgIG9yaWdpbl94IC09IDY0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgZWxzZSBpZiAoIHByZXZfcnNiX2RlbHRhIC0gZmFjZS0+Z2x5cGgtPmxzYl9kZWx0YSA8IC0zMiApICAgICAgKi8KKyAgLyogICAgICAgICAgb3JpZ2luX3ggKz0gNjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgcHJldl9yc2JfZGVsdGEgPSBmYWNlLT5nbHlwaC0+cnNiX2RlbHRhOyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICA8c2F2ZSBnbHlwaCBpbWFnZSwgb3IgcmVuZGVyIGdseXBoLCBvciAuLi4+ICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIG9yaWdpbl94ICs9IGZhY2UtPmdseXBoLT5hZHZhbmNlLng7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgZW5kZm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9HbHlwaFNsb3RSZWNfCisgIHsKKyAgICBGVF9MaWJyYXJ5ICAgICAgICBsaWJyYXJ5OworICAgIEZUX0ZhY2UgICAgICAgICAgIGZhY2U7CisgICAgRlRfR2x5cGhTbG90ICAgICAgbmV4dDsKKyAgICBGVF9VSW50ICAgICAgICAgICByZXNlcnZlZDsgICAgICAgLyogcmV0YWluZWQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5ICovCisgICAgRlRfR2VuZXJpYyAgICAgICAgZ2VuZXJpYzsKKworICAgIEZUX0dseXBoX01ldHJpY3MgIG1ldHJpY3M7CisgICAgRlRfRml4ZWQgICAgICAgICAgbGluZWFySG9yaUFkdmFuY2U7CisgICAgRlRfRml4ZWQgICAgICAgICAgbGluZWFyVmVydEFkdmFuY2U7CisgICAgRlRfVmVjdG9yICAgICAgICAgYWR2YW5jZTsKKworICAgIEZUX0dseXBoX0Zvcm1hdCAgIGZvcm1hdDsKKworICAgIEZUX0JpdG1hcCAgICAgICAgIGJpdG1hcDsKKyAgICBGVF9JbnQgICAgICAgICAgICBiaXRtYXBfbGVmdDsKKyAgICBGVF9JbnQgICAgICAgICAgICBiaXRtYXBfdG9wOworCisgICAgRlRfT3V0bGluZSAgICAgICAgb3V0bGluZTsKKworICAgIEZUX1VJbnQgICAgICAgICAgIG51bV9zdWJnbHlwaHM7CisgICAgRlRfU3ViR2x5cGggICAgICAgc3ViZ2x5cGhzOworCisgICAgdm9pZCogICAgICAgICAgICAgY29udHJvbF9kYXRhOworICAgIGxvbmcgICAgICAgICAgICAgIGNvbnRyb2xfbGVuOworCisgICAgRlRfUG9zICAgICAgICAgICAgbHNiX2RlbHRhOworICAgIEZUX1BvcyAgICAgICAgICAgIHJzYl9kZWx0YTsKKworICAgIHZvaWQqICAgICAgICAgICAgIG90aGVyOworCisgICAgRlRfU2xvdF9JbnRlcm5hbCAgaW50ZXJuYWw7CisKKyAgfSBGVF9HbHlwaFNsb3RSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBGIFUgTiBDIFQgSSBPIE4gUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0luaXRfRnJlZVR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRpYWxpemUgYSBuZXcgRnJlZVR5cGUgbGlicmFyeSBvYmplY3QuICBUaGUgc2V0IG9mIG1vZHVsZXMgICAgICAqLworICAvKiAgICB0aGF0IGFyZSByZWdpc3RlcmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBhdCBidWlsZCB0aW1lLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhbGlicmFyeSA6OiBBIGhhbmRsZSB0byBhIG5ldyBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbiBjYXNlIHlvdSB3YW50IHRvIHByb3ZpZGUgeW91ciBvd24gbWVtb3J5IGFsbG9jYXRpbmcgcm91dGluZXMsICAgKi8KKyAgLyogICAgdXNlIEBGVF9OZXdfTGlicmFyeSBpbnN0ZWFkLCBmb2xsb3dlZCBieSBhIGNhbGwgdG8gICAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9BZGRfRGVmYXVsdF9Nb2R1bGVzIChvciBhIHNlcmllcyBvZiBjYWxscyB0byBARlRfQWRkX01vZHVsZSkuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRm9yIG11bHRpLXRocmVhZGluZyBhcHBsaWNhdGlvbnMgZWFjaCB0aHJlYWQgc2hvdWxkIGhhdmUgaXRzIG93biAgICovCisgIC8qICAgIEZUX0xpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgeW91IG5lZWQgcmVmZXJlbmNlLWNvdW50aW5nIChjZi4gQEZUX1JlZmVyZW5jZV9MaWJyYXJ5KSwgdXNlICAgICovCisgIC8qICAgIEBGVF9OZXdfTGlicmFyeSBhbmQgQEZUX0RvbmVfTGlicmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0luaXRfRnJlZVR5cGUoIEZUX0xpYnJhcnkgICphbGlicmFyeSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRG9uZV9GcmVlVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVzdHJveSBhIGdpdmVuIEZyZWVUeXBlIGxpYnJhcnkgb2JqZWN0IGFuZCBhbGwgb2YgaXRzIGNoaWxkcmVuLCAgICovCisgIC8qICAgIGluY2x1ZGluZyByZXNvdXJjZXMsIGRyaXZlcnMsIGZhY2VzLCBzaXplcywgZXRjLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0RvbmVfRnJlZVR5cGUoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09QRU5fWFhYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgbGlzdCBvZiBiaXQtZmllbGQgY29uc3RhbnRzIHVzZWQgd2l0aGluIHRoZSBgZmxhZ3MnIGZpZWxkIG9mIHRoZSAqLworICAvKiAgICBARlRfT3Blbl9BcmdzIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PUEVOX01FTU9SWSAgIDo6IFRoaXMgaXMgYSBtZW1vcnktYmFzZWQgc3RyZWFtLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09QRU5fU1RSRUFNICAgOjogQ29weSB0aGUgc3RyZWFtIGZyb20gdGhlIGBzdHJlYW0nIGZpZWxkLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1BFTl9QQVRITkFNRSA6OiBDcmVhdGUgYSBuZXcgaW5wdXQgc3RyZWFtIGZyb20gYSBDfnBhdGggICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1BFTl9EUklWRVIgICA6OiBVc2UgdGhlIGBkcml2ZXInIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PUEVOX1BBUkFNUyAgIDo6IFVzZSB0aGUgYG51bV9wYXJhbXMnIGFuZCBgcGFyYW1zJyBmaWVsZHMuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X29wZW5fbWVtb3J5ICAgOjogRGVwcmVjYXRlZDsgdXNlIEBGVF9PUEVOX01FTU9SWSBpbnN0ZWFkLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfb3Blbl9zdHJlYW0gICA6OiBEZXByZWNhdGVkOyB1c2UgQEZUX09QRU5fU1RSRUFNIGluc3RlYWQuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9vcGVuX3BhdGhuYW1lIDo6IERlcHJlY2F0ZWQ7IHVzZSBARlRfT1BFTl9QQVRITkFNRSBpbnN0ZWFkLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X29wZW5fZHJpdmVyICAgOjogRGVwcmVjYXRlZDsgdXNlIEBGVF9PUEVOX0RSSVZFUiBpbnN0ZWFkLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfb3Blbl9wYXJhbXMgICA6OiBEZXByZWNhdGVkOyB1c2UgQEZUX09QRU5fUEFSQU1TIGluc3RlYWQuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGBGVF9PUEVOX01FTU9SWScsIGBGVF9PUEVOX1NUUkVBTScsIGFuZCBgRlRfT1BFTl9QQVRITkFNRScgICAgICovCisgIC8qICAgIGZsYWdzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfT1BFTl9NRU1PUlkgICAgMHgxCisjZGVmaW5lIEZUX09QRU5fU1RSRUFNICAgIDB4MgorI2RlZmluZSBGVF9PUEVOX1BBVEhOQU1FICAweDQKKyNkZWZpbmUgRlRfT1BFTl9EUklWRVIgICAgMHg4CisjZGVmaW5lIEZUX09QRU5fUEFSQU1TICAgIDB4MTAKKworI2RlZmluZSBmdF9vcGVuX21lbW9yeSAgICBGVF9PUEVOX01FTU9SWSAgICAgLyogZGVwcmVjYXRlZCAqLworI2RlZmluZSBmdF9vcGVuX3N0cmVhbSAgICBGVF9PUEVOX1NUUkVBTSAgICAgLyogZGVwcmVjYXRlZCAqLworI2RlZmluZSBmdF9vcGVuX3BhdGhuYW1lICBGVF9PUEVOX1BBVEhOQU1FICAgLyogZGVwcmVjYXRlZCAqLworI2RlZmluZSBmdF9vcGVuX2RyaXZlciAgICBGVF9PUEVOX0RSSVZFUiAgICAgLyogZGVwcmVjYXRlZCAqLworI2RlZmluZSBmdF9vcGVuX3BhcmFtcyAgICBGVF9PUEVOX1BBUkFNUyAgICAgLyogZGVwcmVjYXRlZCAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUGFyYW1ldGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzaW1wbGUgc3RydWN0dXJlIHVzZWQgdG8gcGFzcyBtb3JlIG9yIGxlc3MgZ2VuZXJpYyBwYXJhbWV0ZXJzIHRvICovCisgIC8qICAgIEBGVF9PcGVuX0ZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhZyAgOjogQSBmb3VyLWJ5dGUgaWRlbnRpZmljYXRpb24gdGFnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGF0YSA6OiBBIHBvaW50ZXIgdG8gdGhlIHBhcmFtZXRlciBkYXRhLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIElEIGFuZCBmdW5jdGlvbiBvZiBwYXJhbWV0ZXJzIGFyZSBkcml2ZXItc3BlY2lmaWMuICBTZWUgdGhlICAgICovCisgIC8qICAgIHZhcmlvdXMgRlRfUEFSQU1fVEFHX1hYWCBmbGFncyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1BhcmFtZXRlcl8KKyAgeworICAgIEZUX1VMb25nICAgIHRhZzsKKyAgICBGVF9Qb2ludGVyICBkYXRhOworCisgIH0gRlRfUGFyYW1ldGVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3Blbl9BcmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBpbmRpY2F0ZSBob3cgdG8gb3BlbiBhIG5ldyBmb250IGZpbGUgb3IgICAgICAgICovCisgIC8qICAgIHN0cmVhbS4gIEEgcG9pbnRlciB0byBzdWNoIGEgc3RydWN0dXJlIGNhbiBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyICAqLworICAvKiAgICBmb3IgdGhlIGZ1bmN0aW9ucyBARlRfT3Blbl9GYWNlIGFuZCBARlRfQXR0YWNoX1N0cmVhbS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmbGFncyAgICAgICA6OiBBIHNldCBvZiBiaXQgZmxhZ3MgaW5kaWNhdGluZyBob3cgdG8gdXNlIHRoZSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZW1vcnlfYmFzZSA6OiBUaGUgZmlyc3QgYnl0ZSBvZiB0aGUgZmlsZSBpbiBtZW1vcnkuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeV9zaXplIDo6IFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBmaWxlIGluIG1lbW9yeS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGF0aG5hbWUgICAgOjogQSBwb2ludGVyIHRvIGFuIDgtYml0IGZpbGUgcGF0aG5hbWUuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gICAgICA6OiBBIGhhbmRsZSB0byBhIHNvdXJjZSBzdHJlYW0gb2JqZWN0LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRyaXZlciAgICAgIDo6IFRoaXMgZmllbGQgaXMgZXhjbHVzaXZlbHkgdXNlZCBieSBARlRfT3Blbl9GYWNlOyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBpdCBzaW1wbHkgc3BlY2lmaWVzIHRoZSBmb250IGRyaXZlciB0byB1c2UgdG8gb3BlbiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgdGhlIGZhY2UuICBJZiBzZXQgdG9+MCwgRnJlZVR5cGUgdHJpZXMgdG8gbG9hZCB0aGUgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGZhY2Ugd2l0aCBlYWNoIG9uZSBvZiB0aGUgZHJpdmVycyBpbiBpdHMgbGlzdC4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX3BhcmFtcyAgOjogVGhlIG51bWJlciBvZiBleHRyYSBwYXJhbWV0ZXJzLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXJhbXMgICAgICA6OiBFeHRyYSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGUgZm9udCBkcml2ZXIgd2hlbiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgb3BlbmluZyBhIG5ldyBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHN0cmVhbSB0eXBlIGlzIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnRzIG9mIGBmbGFncycgd2hpY2ggICAgICovCisgIC8qICAgIGFyZSB0ZXN0ZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlciBieSBARlRfT3Blbl9GYWNlOiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgdGhlIGBGVF9PUEVOX01FTU9SWScgYml0IGlzIHNldCwgYXNzdW1lIHRoYXQgdGhpcyBpcyBhICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSBmaWxlIG9mIGBtZW1vcnlfc2l6ZScgYnl0ZXMsIGxvY2F0ZWQgYXQgYG1lbW9yeV9hZGRyZXNzJy4gICAqLworICAvKiAgICBUaGUgZGF0YSBhcmUgYXJlIG5vdCBjb3BpZWQsIGFuZCB0aGUgY2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciAgICAgKi8KKyAgLyogICAgcmVsZWFzaW5nIGFuZCBkZXN0cm95aW5nIHRoZW0gX2FmdGVyXyB0aGUgY29ycmVzcG9uZGluZyBjYWxsIHRvICAgICovCisgIC8qICAgIEBGVF9Eb25lX0ZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT3RoZXJ3aXNlLCBpZiB0aGUgYEZUX09QRU5fU1RSRUFNJyBiaXQgaXMgc2V0LCBhc3N1bWUgdGhhdCBhICAgICAgICovCisgIC8qICAgIGN1c3RvbSBpbnB1dCBzdHJlYW0gYHN0cmVhbScgaXMgdXNlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT3RoZXJ3aXNlLCBpZiB0aGUgYEZUX09QRU5fUEFUSE5BTUUnIGJpdCBpcyBzZXQsIGFzc3VtZSB0aGF0IHRoaXMgICovCisgIC8qICAgIGlzIGEgbm9ybWFsIGZpbGUgYW5kIHVzZSBgcGF0aG5hbWUnIHRvIG9wZW4gaXQuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgdGhlIGBGVF9PUEVOX0RSSVZFUicgYml0IGlzIHNldCwgQEZUX09wZW5fRmFjZSBvbmx5IHRyaWVzIHRvICAgICovCisgIC8qICAgIG9wZW4gdGhlIGZpbGUgd2l0aCB0aGUgZHJpdmVyIHdob3NlIGhhbmRsZXIgaXMgaW4gYGRyaXZlcicuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgdGhlIGBGVF9PUEVOX1BBUkFNUycgYml0IGlzIHNldCwgdGhlIHBhcmFtZXRlcnMgZ2l2ZW4gYnkgICAgICAgICovCisgIC8qICAgIGBudW1fcGFyYW1zJyBhbmQgYHBhcmFtcycgaXMgdXNlZC4gIFRoZXkgYXJlIGlnbm9yZWQgb3RoZXJ3aXNlLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWRlYWxseSwgYm90aCB0aGUgYHBhdGhuYW1lJyBhbmQgYHBhcmFtcycgZmllbGRzIHNob3VsZCBiZSB0YWdnZWQgICovCisgIC8qICAgIGFzIGBjb25zdCc7IHRoaXMgaXMgbWlzc2luZyBmb3IgQVBJIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAgSW4gICAqLworICAvKiAgICBvdGhlciB3b3JkcywgYXBwbGljYXRpb25zIHNob3VsZCB0cmVhdCB0aGVtIGFzIHJlYWQtb25seS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9PcGVuX0FyZ3NfCisgIHsKKyAgICBGVF9VSW50ICAgICAgICAgZmxhZ3M7CisgICAgY29uc3QgRlRfQnl0ZSogIG1lbW9yeV9iYXNlOworICAgIEZUX0xvbmcgICAgICAgICBtZW1vcnlfc2l6ZTsKKyAgICBGVF9TdHJpbmcqICAgICAgcGF0aG5hbWU7CisgICAgRlRfU3RyZWFtICAgICAgIHN0cmVhbTsKKyAgICBGVF9Nb2R1bGUgICAgICAgZHJpdmVyOworICAgIEZUX0ludCAgICAgICAgICBudW1fcGFyYW1zOworICAgIEZUX1BhcmFtZXRlciogICBwYXJhbXM7CisKKyAgfSBGVF9PcGVuX0FyZ3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGNhbGxzIEBGVF9PcGVuX0ZhY2UgdG8gb3BlbiBhIGZvbnQgYnkgaXRzIHBhdGhuYW1lLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IHJlc291cmNlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXRobmFtZSAgIDo6IEEgcGF0aCB0byB0aGUgZm9udCBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2VfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBmYWNlIHdpdGhpbiB0aGUgZm9udC4gIFRoZSBmaXJzdCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGZhY2UgaGFzIGluZGV4fjAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZmFjZSAgICAgIDo6IEEgaGFuZGxlIHRvIGEgbmV3IGZhY2Ugb2JqZWN0LiAgSWYgYGZhY2VfaW5kZXgnIGlzICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybywgaXQgbXVzdCBiZSBub24tTlVMTC4gICovCisgIC8qICAgICAgICAgICAgICAgICAgU2VlIEBGVF9PcGVuX0ZhY2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzZSBARlRfRG9uZV9GYWNlIHRvIGRlc3Ryb3kgdGhlIGNyZWF0ZWQgQEZUX0ZhY2Ugb2JqZWN0IChhbG9uZyAgICAqLworICAvKiAgICB3aXRoIGl0cyBzbG90IGFuZCBzaXplcykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9OZXdfRmFjZSggRlRfTGlicmFyeSAgIGxpYnJhcnksCisgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgZmlsZXBhdGhuYW1lLAorICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICBGVF9GYWNlICAgICAqYWZhY2UgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX05ld19NZW1vcnlfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gY2FsbHMgQEZUX09wZW5fRmFjZSB0byBvcGVuIGEgZm9udCB3aGljaCBoYXMgYmVlbiAgICAqLworICAvKiAgICBsb2FkZWQgaW50byBtZW1vcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IHJlc291cmNlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmaWxlX2Jhc2UgIDo6IEEgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmb250IGRhdGEuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZpbGVfc2l6ZSAgOjogVGhlIHNpemUgb2YgdGhlIG1lbW9yeSBjaHVuayB1c2VkIGJ5IHRoZSBmb250IGRhdGEuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIGZhY2Ugd2l0aGluIHRoZSBmb250LiAgVGhlIGZpcnN0ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgZmFjZSBoYXMgaW5kZXh+MC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFmYWNlICAgICAgOjogQSBoYW5kbGUgdG8gYSBuZXcgZmFjZSBvYmplY3QuICBJZiBgZmFjZV9pbmRleCcgaXMgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCBpdCBtdXN0IGJlIG5vbi1OVUxMLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBTZWUgQEZUX09wZW5fRmFjZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgWW91IG11c3Qgbm90IGRlYWxsb2NhdGUgdGhlIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBARlRfRG9uZV9GYWNlLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfTmV3X01lbW9yeV9GYWNlKCBGVF9MaWJyYXJ5ICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CeXRlKiAgZmlsZV9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgICBmaWxlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgKmFmYWNlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PcGVuX0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDcmVhdGUgYSBmYWNlIG9iamVjdCBmcm9tIGEgZ2l2ZW4gcmVzb3VyY2UgZGVzY3JpYmVkIGJ5ICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX09wZW5fQXJncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSAgICA6OiBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSByZXNvdXJjZS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYXJncyAgICAgICA6OiBBIHBvaW50ZXIgdG8gYW4gYEZUX09wZW5fQXJncycgc3RydWN0dXJlIHdoaWNoIG11c3QgICovCisgIC8qICAgICAgICAgICAgICAgICAgYmUgZmlsbGVkIGJ5IHRoZSBjYWxsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIGZhY2Ugd2l0aGluIHRoZSBmb250LiAgVGhlIGZpcnN0ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgZmFjZSBoYXMgaW5kZXh+MC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFmYWNlICAgICAgOjogQSBoYW5kbGUgdG8gYSBuZXcgZmFjZSBvYmplY3QuICBJZiBgZmFjZV9pbmRleCcgaXMgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCBpdCBtdXN0IGJlIG5vbi1OVUxMLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBTZWUgbm90ZSBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVW5saWtlIEZyZWVUeXBlIDEueCwgdGhpcyBmdW5jdGlvbiBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMgYSBnbHlwaCAgICovCisgIC8qICAgIHNsb3QgZm9yIHRoZSBmYWNlIG9iamVjdCB3aGljaCBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgdGhyb3VnaCAgICAqLworICAvKiAgICBgZmFjZS0+Z2x5cGgnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09wZW5fRmFjZSBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgdGhlIGZvbnQgICAgICAgICAqLworICAvKiAgICBmb3JtYXQgb2YgYSBnaXZlbiBmb250IHJlc291cmNlIGlzIHN1cHBvcnRlZCBieSBGcmVlVHlwZS4gIElmIHRoZSAgKi8KKyAgLyogICAgYGZhY2VfaW5kZXgnIGZpZWxkIGlzIG5lZ2F0aXZlLCB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUgaXN+MCAgICovCisgIC8qICAgIGlmIHRoZSBmb250IGZvcm1hdCBpcyByZWNvZ25pemVkLCBvciBub24temVybyBvdGhlcndpc2U7ICAgICAgICAgICAqLworICAvKiAgICB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIG1vcmUgb3IgbGVzcyBlbXB0eSBmYWNlIGhhbmRsZSBpbiBgKmFmYWNlJyAgKi8KKyAgLyogICAgKGlmIGBhZmFjZScgaXNuJ3QgTlVMTCkuICBUaGUgb25seSB1c2VmdWwgZmllbGQgaW4gdGhpcyBzcGVjaWFsICAgICovCisgIC8qICAgIGNhc2UgaXMgYGZhY2UtPm51bV9mYWNlcycgd2hpY2ggZ2l2ZXMgdGhlIG51bWJlciBvZiBmYWNlcyB3aXRoaW4gICAqLworICAvKiAgICB0aGUgZm9udCBmaWxlLiAgQWZ0ZXIgZXhhbWluYXRpb24sIHRoZSByZXR1cm5lZCBARlRfRmFjZSBzdHJ1Y3R1cmUgKi8KKyAgLyogICAgc2hvdWxkIGJlIGRlYWxsb2NhdGVkIHdpdGggYSBjYWxsIHRvIEBGVF9Eb25lX0ZhY2UuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFYWNoIG5ldyBmYWNlIG9iamVjdCBjcmVhdGVkIHdpdGggdGhpcyBmdW5jdGlvbiBhbHNvIG93bnMgYSAgICAgICAgKi8KKyAgLyogICAgZGVmYXVsdCBARlRfU2l6ZSBvYmplY3QsIGFjY2Vzc2libGUgYXMgYGZhY2UtPnNpemUnLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBPbmUgQEZUX0xpYnJhcnkgaW5zdGFuY2UgY2FuIGhhdmUgbXVsdGlwbGUgZmFjZSBvYmplY3RzLCB0aGlzIGlzLCAgKi8KKyAgLyogICAgQEZUX09wZW5fRmFjZSBhbmQgaXRzIHNpYmxpbmdzIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdXNpbmcgICovCisgIC8qICAgIHRoZSBzYW1lIGBsaWJyYXJ5JyBhcmd1bWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2VlIHRoZSBkaXNjdXNzaW9uIG9mIHJlZmVyZW5jZSBjb3VudGVycyBpbiB0aGUgZGVzY3JpcHRpb24gb2YgICAgICovCisgIC8qICAgIEBGVF9SZWZlcmVuY2VfRmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX09wZW5fRmFjZSggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICBjb25zdCBGVF9PcGVuX0FyZ3MqICBhcmdzLAorICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgICAgICAqYWZhY2UgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0F0dGFjaF9GaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gY2FsbHMgQEZUX0F0dGFjaF9TdHJlYW0gdG8gYXR0YWNoIGEgZmlsZS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgICA6OiBUaGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZpbGVwYXRobmFtZSA6OiBUaGUgcGF0aG5hbWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0F0dGFjaF9GaWxlKCBGVF9GYWNlICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBmaWxlcGF0aG5hbWUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0F0dGFjaF9TdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGBBdHRhY2gnIGRhdGEgdG8gYSBmYWNlIG9iamVjdC4gIE5vcm1hbGx5LCB0aGlzIGlzIHVzZWQgdG8gcmVhZCAgICAqLworICAvKiAgICBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgZmFjZSBvYmplY3QuICBGb3IgZXhhbXBsZSwgeW91IGNhbiAgKi8KKyAgLyogICAgYXR0YWNoIGFuIEFGTSBmaWxlIHRoYXQgY29tZXMgd2l0aCBhIFR5cGV+MSBmb250IHRvIGdldCB0aGUgICAgICAgICovCisgIC8qICAgIGtlcm5pbmcgdmFsdWVzIGFuZCBvdGhlciBtZXRyaWNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgOjogVGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhcmFtZXRlcnMgOjogQSBwb2ludGVyIHRvIEBGVF9PcGVuX0FyZ3Mgd2hpY2ggbXVzdCBiZSBmaWxsZWQgYnkgICAqLworICAvKiAgICAgICAgICAgICAgICAgIHRoZSBjYWxsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgbWVhbmluZyBvZiB0aGUgYGF0dGFjaCcgKGkuZS4sIHdoYXQgcmVhbGx5IGhhcHBlbnMgd2hlbiB0aGUgICAgKi8KKyAgLyogICAgbmV3IGZpbGUgaXMgcmVhZCkgaXMgbm90IGZpeGVkIGJ5IEZyZWVUeXBlIGl0c2VsZi4gIEl0IHJlYWxseSAgICAgICovCisgIC8qICAgIGRlcGVuZHMgb24gdGhlIGZvbnQgZm9ybWF0IChhbmQgdGh1cyB0aGUgZm9udCBkcml2ZXIpLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ2xpZW50IGFwcGxpY2F0aW9ucyBhcmUgZXhwZWN0ZWQgdG8ga25vdyB3aGF0IHRoZXkgYXJlIGRvaW5nICAgICAgICovCisgIC8qICAgIHdoZW4gaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4gIE1vc3QgZHJpdmVycyBzaW1wbHkgZG8gbm90IGltcGxlbWVudCAqLworICAvKiAgICBmaWxlIGF0dGFjaG1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9BdHRhY2hfU3RyZWFtKCBGVF9GYWNlICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9PcGVuX0FyZ3MqICBwYXJhbWV0ZXJzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SZWZlcmVuY2VfRmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGNvdW50ZXIgZ2V0cyBpbml0aWFsaXplZCB0b34xIGF0IHRoZSB0aW1lIGFuIEBGVF9GYWNlIHN0cnVjdHVyZSAgKi8KKyAgLyogICAgaXMgY3JlYXRlZC4gIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50cyB0aGUgY291bnRlci4gIEBGVF9Eb25lX0ZhY2UgICovCisgIC8qICAgIHRoZW4gb25seSBkZXN0cm95cyBhIGZhY2UgaWYgdGhlIGNvdW50ZXIgaXN+MSwgb3RoZXJ3aXNlIGl0IHNpbXBseSAqLworICAvKiAgICBkZWNyZW1lbnRzIHRoZSBjb3VudGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaGVscHMgaW4gbWFuYWdpbmcgbGlmZS1jeWNsZXMgb2Ygc3RydWN0dXJlcyB3aGljaCAgICAqLworICAvKiAgICByZWZlcmVuY2UgQEZUX0ZhY2Ugb2JqZWN0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlIDo6IEEgaGFuZGxlIHRvIGEgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTaW5jZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAyLjQuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9SZWZlcmVuY2VfRmFjZSggRlRfRmFjZSAgZmFjZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRG9uZV9GYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGlzY2FyZCBhIGdpdmVuIGZhY2Ugb2JqZWN0LCBhcyB3ZWxsIGFzIGFsbCBvZiBpdHMgY2hpbGQgc2xvdHMgYW5kICovCisgIC8qICAgIHNpemVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gYSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlZSB0aGUgZGlzY3Vzc2lvbiBvZiByZWZlcmVuY2UgY291bnRlcnMgaW4gdGhlIGRlc2NyaXB0aW9uIG9mICAgICAqLworICAvKiAgICBARlRfUmVmZXJlbmNlX0ZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9Eb25lX0ZhY2UoIEZUX0ZhY2UgIGZhY2UgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NlbGVjdF9TaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlbGVjdCBhIGJpdG1hcCBzdHJpa2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgICA6OiBBIGhhbmRsZSB0byBhIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmlrZV9pbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIGJpdG1hcCBzdHJpa2UgaW4gdGhlICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgYGF2YWlsYWJsZV9zaXplcycgZmllbGQgb2YgQEZUX0ZhY2VSZWMgc3RydWN0dXJlLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TZWxlY3RfU2l6ZSggRlRfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgIEZUX0ludCAgIHN0cmlrZV9pbmRleCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2l6ZV9SZXF1ZXN0X1R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gZW51bWVyYXRpb24gdHlwZSB0aGF0IGxpc3RzIHRoZSBzdXBwb3J0ZWQgc2l6ZSByZXF1ZXN0IHR5cGVzLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU0laRV9SRVFVRVNUX1RZUEVfTk9NSU5BTCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIG5vbWluYWwgc2l6ZS4gIFRoZSBgdW5pdHNfcGVyX0VNJyBmaWVsZCBvZiBARlRfRmFjZVJlYyBpcyAgICAqLworICAvKiAgICAgIHVzZWQgdG8gZGV0ZXJtaW5lIGJvdGggc2NhbGluZyB2YWx1ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NJWkVfUkVRVUVTVF9UWVBFX1JFQUxfRElNIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSByZWFsIGRpbWVuc2lvbi4gIFRoZSBzdW0gb2YgdGhlIHRoZSBgYXNjZW5kZXInIGFuZCAobWludXMgICAgKi8KKyAgLyogICAgICBvZikgdGhlIGBkZXNjZW5kZXInIGZpZWxkcyBvZiBARlRfRmFjZVJlYyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgICovCisgIC8qICAgICAgYm90aCBzY2FsaW5nIHZhbHVlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU0laRV9SRVFVRVNUX1RZUEVfQkJPWCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGZvbnQgYm91bmRpbmcgYm94LiAgVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGBiYm94JyBmaWVsZCAqLworICAvKiAgICAgIG9mIEBGVF9GYWNlUmVjIGFyZSB1c2VkIHRvIGRldGVybWluZSB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgKi8KKyAgLyogICAgICBzY2FsaW5nIHZhbHVlLCByZXNwZWN0aXZlbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TSVpFX1JFUVVFU1RfVFlQRV9DRUxMIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgYG1heF9hZHZhbmNlX3dpZHRoJyBmaWVsZCBvZiBARlRfRmFjZVJlYyBpcyB1c2VkIHRvICAgICAgICAgICovCisgIC8qICAgICAgZGV0ZXJtaW5lIHRoZSBob3Jpem9udGFsIHNjYWxpbmcgdmFsdWU7IHRoZSB2ZXJ0aWNhbCBzY2FsaW5nICAgICAqLworICAvKiAgICAgIHZhbHVlIGlzIGRldGVybWluZWQgdGhlIHNhbWUgd2F5IGFzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBARlRfU0laRV9SRVFVRVNUX1RZUEVfUkVBTF9ESU0gZG9lcy4gIEZpbmFsbHksIGJvdGggc2NhbGluZyAgICAgICovCisgIC8qICAgICAgdmFsdWVzIGFyZSBzZXQgdG8gdGhlIHNtYWxsZXIgb25lLiAgVGhpcyB0eXBlIGlzIHVzZWZ1bCBpZiB5b3UgICAqLworICAvKiAgICAgIHdhbnQgdG8gc3BlY2lmeSB0aGUgZm9udCBzaXplIGZvciwgc2F5LCBhIHdpbmRvdyBvZiBhIGdpdmVuICAgICAgKi8KKyAgLyogICAgICBkaW1lbnNpb24gYW5kIDgweDI0IGNlbGxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TSVpFX1JFUVVFU1RfVFlQRV9TQ0FMRVMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBTcGVjaWZ5IHRoZSBzY2FsaW5nIHZhbHVlcyBkaXJlY3RseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGFib3ZlIGRlc2NyaXB0aW9ucyBvbmx5IGFwcGx5IHRvIHNjYWxhYmxlIGZvcm1hdHMuICBGb3IgYml0bWFwICovCisgIC8qICAgIGZvcm1hdHMsIHRoZSBiZWhhdmlvdXIgaXMgdXAgdG8gdGhlIGRyaXZlci4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2VlIHRoZSBub3RlIHNlY3Rpb24gb2YgQEZUX1NpemVfTWV0cmljcyBpZiB5b3Ugd29uZGVyIGhvdyBzaXplICAgICovCisgIC8qICAgIHJlcXVlc3RpbmcgcmVsYXRlcyB0byBzY2FsaW5nIHZhbHVlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBlbnVtICBGVF9TaXplX1JlcXVlc3RfVHlwZV8KKyAgeworICAgIEZUX1NJWkVfUkVRVUVTVF9UWVBFX05PTUlOQUwsCisgICAgRlRfU0laRV9SRVFVRVNUX1RZUEVfUkVBTF9ESU0sCisgICAgRlRfU0laRV9SRVFVRVNUX1RZUEVfQkJPWCwKKyAgICBGVF9TSVpFX1JFUVVFU1RfVFlQRV9DRUxMLAorICAgIEZUX1NJWkVfUkVRVUVTVF9UWVBFX1NDQUxFUywKKworICAgIEZUX1NJWkVfUkVRVUVTVF9UWVBFX01BWAorCisgIH0gRlRfU2l6ZV9SZXF1ZXN0X1R5cGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TaXplX1JlcXVlc3RSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgc2l6ZSByZXF1ZXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0eXBlICAgICAgICAgICA6OiBTZWUgQEZUX1NpemVfUmVxdWVzdF9UeXBlLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHdpZHRoICAgICAgICAgIDo6IFRoZSBkZXNpcmVkIHdpZHRoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVpZ2h0ICAgICAgICAgOjogVGhlIGRlc2lyZWQgaGVpZ2h0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBob3JpUmVzb2x1dGlvbiA6OiBUaGUgaG9yaXpvbnRhbCByZXNvbHV0aW9uLiAgSWYgc2V0IHRvIHplcm8sICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgYHdpZHRoJyBpcyB0cmVhdGVkIGFzIGEgMjYuNiBmcmFjdGlvbmFsIHBpeGVsICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVydFJlc29sdXRpb24gOjogVGhlIHZlcnRpY2FsIHJlc29sdXRpb24uICBJZiBzZXQgdG8gemVybywgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgIGBoZWlnaHQnIGlzIHRyZWF0ZWQgYXMgYSAyNi42IGZyYWN0aW9uYWwgcGl4ZWwgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiBgd2lkdGgnIGlzIHplcm8sIHRoZW4gdGhlIGhvcml6b250YWwgc2NhbGluZyB2YWx1ZSBpcyBzZXQgZXF1YWwgKi8KKyAgLyogICAgdG8gdGhlIHZlcnRpY2FsIHNjYWxpbmcgdmFsdWUsIGFuZCB2aWNlIHZlcnNhLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfU2l6ZV9SZXF1ZXN0UmVjXworICB7CisgICAgRlRfU2l6ZV9SZXF1ZXN0X1R5cGUgIHR5cGU7CisgICAgRlRfTG9uZyAgICAgICAgICAgICAgIHdpZHRoOworICAgIEZUX0xvbmcgICAgICAgICAgICAgICBoZWlnaHQ7CisgICAgRlRfVUludCAgICAgICAgICAgICAgIGhvcmlSZXNvbHV0aW9uOworICAgIEZUX1VJbnQgICAgICAgICAgICAgICB2ZXJ0UmVzb2x1dGlvbjsKKworICB9IEZUX1NpemVfUmVxdWVzdFJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NpemVfUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgc2l6ZSByZXF1ZXN0IHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU2l6ZV9SZXF1ZXN0UmVjXyAgKkZUX1NpemVfUmVxdWVzdDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JlcXVlc3RfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJlc2l6ZSB0aGUgc2NhbGUgb2YgdGhlIGFjdGl2ZSBARlRfU2l6ZSBvYmplY3QgaW4gYSBmYWNlLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gYSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlcSAgOjogQSBwb2ludGVyIHRvIGEgQEZUX1NpemVfUmVxdWVzdFJlYy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFsdGhvdWdoIGRyaXZlcnMgbWF5IHNlbGVjdCB0aGUgYml0bWFwIHN0cmlrZSBtYXRjaGluZyB0aGUgICAgICAgICAqLworICAvKiAgICByZXF1ZXN0LCB5b3Ugc2hvdWxkIG5vdCByZWx5IG9uIHRoaXMgaWYgeW91IGludGVuZCB0byBzZWxlY3QgYSAgICAgKi8KKyAgLyogICAgcGFydGljdWxhciBiaXRtYXAgc3RyaWtlLiAgVXNlIEBGVF9TZWxlY3RfU2l6ZSBpbnN0ZWFkIGluIHRoYXQgICAgICovCisgIC8qICAgIGNhc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlbGF0aW9uIGJldHdlZW4gdGhlIHJlcXVlc3RlZCBzaXplIGFuZCB0aGUgcmVzdWx0aW5nIGdseXBoICAgICovCisgIC8qICAgIHNpemUgaXMgZGVwZW5kZW50IGVudGlyZWx5IG9uIGhvdyB0aGUgc2l6ZSBpcyBkZWZpbmVkIGluIHRoZSAgICAgICAqLworICAvKiAgICBzb3VyY2UgZmFjZS4gIFRoZSBmb250IGRlc2lnbmVyIGNob29zZXMgdGhlIGZpbmFsIHNpemUgb2YgZWFjaCAgICAgKi8KKyAgLyogICAgZ2x5cGggcmVsYXRpdmUgdG8gdGhpcyBzaXplLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVmZXIgdG8gICAgICAgICovCisgIC8qICAgIGBodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy9mcmVldHlwZTIvZG9jcy9nbHlwaHMvZ2x5cGhzLTIuaHRtbCcgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1JlcXVlc3RfU2l6ZSggRlRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgIEZUX1NpemVfUmVxdWVzdCAgcmVxICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TZXRfQ2hhcl9TaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGNhbGxzIEBGVF9SZXF1ZXN0X1NpemUgdG8gcmVxdWVzdCB0aGUgbm9taW5hbCBzaXplICAgKi8KKyAgLyogICAgKGluIHBvaW50cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgICAgIDo6IEEgaGFuZGxlIHRvIGEgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2hhcl93aWR0aCAgICAgIDo6IFRoZSBub21pbmFsIHdpZHRoLCBpbiAyNi42IGZyYWN0aW9uYWwgcG9pbnRzLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFyX2hlaWdodCAgICAgOjogVGhlIG5vbWluYWwgaGVpZ2h0LCBpbiAyNi42IGZyYWN0aW9uYWwgcG9pbnRzLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhvcnpfcmVzb2x1dGlvbiA6OiBUaGUgaG9yaXpvbnRhbCByZXNvbHV0aW9uIGluIGRwaS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVydF9yZXNvbHV0aW9uIDo6IFRoZSB2ZXJ0aWNhbCByZXNvbHV0aW9uIGluIGRwaS4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgZWl0aGVyIHRoZSBjaGFyYWN0ZXIgd2lkdGggb3IgaGVpZ2h0IGlzIHplcm8sIGl0IGlzIHNldCBlcXVhbCAgICovCisgIC8qICAgIHRvIHRoZSBvdGhlciB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgZWl0aGVyIHRoZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHJlc29sdXRpb24gaXMgemVybywgaXQgaXMgc2V0ICovCisgIC8qICAgIGVxdWFsIHRvIHRoZSBvdGhlciB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBjaGFyYWN0ZXIgd2lkdGggb3IgaGVpZ2h0IHNtYWxsZXIgdGhhbiAxcHQgaXMgc2V0IHRvIDFwdDsgaWYgICAgICovCisgIC8qICAgIGJvdGggcmVzb2x1dGlvbiB2YWx1ZXMgYXJlIHplcm8sIHRoZXkgYXJlIHNldCB0byA3MmRwaS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb24gaWYgeW91IGFyZSB1c2luZyB0aGUgRnJlZVR5cGUgY2FjaGUgQVBJLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU2V0X0NoYXJfU2l6ZSggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgY2hhcl93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgY2hhcl9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGhvcnpfcmVzb2x1dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgdmVydF9yZXNvbHV0aW9uICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TZXRfUGl4ZWxfU2l6ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGNhbGxzIEBGVF9SZXF1ZXN0X1NpemUgdG8gcmVxdWVzdCB0aGUgbm9taW5hbCBzaXplICAgKi8KKyAgLyogICAgKGluIHBpeGVscykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGl4ZWxfd2lkdGggIDo6IFRoZSBub21pbmFsIHdpZHRoLCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwaXhlbF9oZWlnaHQgOjogVGhlIG5vbWluYWwgaGVpZ2h0LCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBZb3Ugc2hvdWxkIG5vdCByZWx5IG9uIHRoZSByZXN1bHRpbmcgZ2x5cGhzIG1hdGNoaW5nLCBvciBiZWluZyAgICAgKi8KKyAgLyogICAgY29uc3RyYWluZWQsIHRvIHRoaXMgcGl4ZWwgc2l6ZS4gIFJlZmVyIHRvIEBGVF9SZXF1ZXN0X1NpemUgdG8gICAgICovCisgIC8qICAgIHVuZGVyc3RhbmQgaG93IHJlcXVlc3RlZCBzaXplcyByZWxhdGUgdG8gYWN0dWFsIHNpemVzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1NldF9QaXhlbF9TaXplcyggRlRfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBwaXhlbF93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBwaXhlbF9oZWlnaHQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xvYWRfR2x5cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCB0byBsb2FkIGEgc2luZ2xlIGdseXBoIGludG8gdGhlIGdseXBoIHNsb3Qgb2YgYSAgICAqLworICAvKiAgICBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0IHdoZXJlIHRoZSBnbHlwaCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgaXMgbG9hZGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBnbHlwaCBpbiB0aGUgZm9udCBmaWxlLiAgRm9yICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIENJRC1rZXllZCBmb250cyAoZWl0aGVyIGluIFBTIG9yIGluIENGRiBmb3JtYXQpICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICB0aGlzIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgQ0lEIHZhbHVlLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRfZmxhZ3MgIDo6IEEgZmxhZyBpbmRpY2F0aW5nIHdoYXQgdG8gbG9hZCBmb3IgdGhpcyBnbHlwaC4gIFRoZSAqLworICAvKiAgICAgICAgICAgICAgICAgICBARlRfTE9BRF9YWFggY29uc3RhbnRzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgZ2x5cGggbG9hZGluZyBwcm9jZXNzIChlLmcuLCB3aGV0aGVyIHRoZSBvdXRsaW5lICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSBzY2FsZWQsIHdoZXRoZXIgdG8gbG9hZCBiaXRtYXBzIG9yIG5vdCwgICAqLworICAvKiAgICAgICAgICAgICAgICAgICB3aGV0aGVyIHRvIGhpbnQgdGhlIG91dGxpbmUsIGV0YykuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgbG9hZGVkIGdseXBoIG1heSBiZSB0cmFuc2Zvcm1lZC4gIFNlZSBARlRfU2V0X1RyYW5zZm9ybSBmb3IgICAgKi8KKyAgLyogICAgdGhlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGb3Igc3Vic2V0dGVkIENJRC1rZXllZCBmb250cywgYEZUX0Vycl9JbnZhbGlkX0FyZ3VtZW50JyBpcyAgICAgICAgKi8KKyAgLyogICAgcmV0dXJuZWQgZm9yIGludmFsaWQgQ0lEIHZhbHVlcyAodGhpcyBpcywgZm9yIENJRCB2YWx1ZXMgd2hpY2ggICAgICovCisgIC8qICAgIGRvbid0IGhhdmUgYSBjb3JyZXNwb25kaW5nIGdseXBoIGluIHRoZSBmb250KS4gIFNlZSB0aGUgZGlzY3Vzc2lvbiAqLworICAvKiAgICBvZiB0aGUgQEZUX0ZBQ0VfRkxBR19DSURfS0VZRUQgZmxhZyBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9Mb2FkX0dseXBoKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgbG9hZF9mbGFncyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTG9hZF9DaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIGxvYWQgYSBzaW5nbGUgZ2x5cGggaW50byB0aGUgZ2x5cGggc2xvdCBvZiBhICAgICovCisgIC8qICAgIGZhY2Ugb2JqZWN0LCBhY2NvcmRpbmcgdG8gaXRzIGNoYXJhY3RlciBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgIDo6IEEgaGFuZGxlIHRvIGEgdGFyZ2V0IGZhY2Ugb2JqZWN0IHdoZXJlIHRoZSBnbHlwaCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBpcyBsb2FkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFyX2NvZGUgICA6OiBUaGUgZ2x5cGgncyBjaGFyYWN0ZXIgY29kZSwgYWNjb3JkaW5nIHRvIHRoZSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgY3VycmVudCBjaGFybWFwIHVzZWQgaW4gdGhlIGZhY2UuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkX2ZsYWdzICA6OiBBIGZsYWcgaW5kaWNhdGluZyB3aGF0IHRvIGxvYWQgZm9yIHRoaXMgZ2x5cGguICBUaGUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgQEZUX0xPQURfWFhYIGNvbnN0YW50cyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGdseXBoIGxvYWRpbmcgcHJvY2VzcyAoZS5nLiwgd2hldGhlciB0aGUgb3V0bGluZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgc2NhbGVkLCB3aGV0aGVyIHRvIGxvYWQgYml0bWFwcyBvciBub3QsICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgd2hldGhlciB0byBoaW50IHRoZSBvdXRsaW5lLCBldGMpLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBzaW1wbHkgY2FsbHMgQEZUX0dldF9DaGFyX0luZGV4IGFuZCBARlRfTG9hZF9HbHlwaC4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfTG9hZF9DaGFyKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICBGVF9VTG9uZyAgY2hhcl9jb2RlLAorICAgICAgICAgICAgICAgIEZUX0ludDMyICBsb2FkX2ZsYWdzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBGVF9MT0FEX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIGJpdC1maWVsZCBjb25zdGFudHMgdXNlZCB3aXRoIEBGVF9Mb2FkX0dseXBoIHRvIGluZGljYXRlCisgICAqICAgd2hhdCBraW5kIG9mIG9wZXJhdGlvbnMgdG8gcGVyZm9ybSBkdXJpbmcgZ2x5cGggbG9hZGluZy4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBGVF9MT0FEX0RFRkFVTFQgOjoKKyAgICogICAgIENvcnJlc3BvbmRpbmcgdG9+MCwgdGhpcyB2YWx1ZSBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IGdseXBoIGxvYWQKKyAgICogICAgIG9wZXJhdGlvbi4gIEluIHRoaXMgY2FzZSwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorICAgKgorICAgKiAgICAgMS4gRnJlZVR5cGUgbG9va3MgZm9yIGEgYml0bWFwIGZvciB0aGUgZ2x5cGggY29ycmVzcG9uZGluZyB0byB0aGUKKyAgICogICAgICAgIGZhY2UncyBjdXJyZW50IHNpemUuICBJZiBvbmUgaXMgZm91bmQsIHRoZSBmdW5jdGlvbiByZXR1cm5zLgorICAgKiAgICAgICAgVGhlIGJpdG1hcCBkYXRhIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBnbHlwaCBzbG90IChzZWUgbm90ZQorICAgKiAgICAgICAgYmVsb3cpLgorICAgKgorICAgKiAgICAgMi4gSWYgbm8gZW1iZWRkZWQgYml0bWFwIGlzIHNlYXJjaGVkIG9yIGZvdW5kLCBGcmVlVHlwZSBsb29rcyBmb3IgYQorICAgKiAgICAgICAgc2NhbGFibGUgb3V0bGluZS4gIElmIG9uZSBpcyBmb3VuZCwgaXQgaXMgbG9hZGVkIGZyb20gdGhlIGZvbnQKKyAgICogICAgICAgIGZpbGUsIHNjYWxlZCB0byBkZXZpY2UgcGl4ZWxzLCB0aGVuIGBoaW50ZWQnIHRvIHRoZSBwaXhlbCBncmlkCisgICAqICAgICAgICBpbiBvcmRlciB0byBvcHRpbWl6ZSBpdC4gIFRoZSBvdXRsaW5lIGRhdGEgY2FuIGJlIGFjY2Vzc2VkIGZyb20KKyAgICogICAgICAgIHRoZSBnbHlwaCBzbG90IChzZWUgbm90ZSBiZWxvdykuCisgICAqCisgICAqICAgICBOb3RlIHRoYXQgYnkgZGVmYXVsdCwgdGhlIGdseXBoIGxvYWRlciBkb2Vzbid0IHJlbmRlciBvdXRsaW5lcyBpbnRvCisgICAqICAgICBiaXRtYXBzLiAgVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgdXNlZCB0byBtb2RpZnkgdGhpcyBkZWZhdWx0CisgICAqICAgICBiZWhhdmlvdXIgdG8gbW9yZSBzcGVjaWZpYyBhbmQgdXNlZnVsIGNhc2VzLgorICAgKgorICAgKiAgIEZUX0xPQURfTk9fU0NBTEUgOjoKKyAgICogICAgIERvbid0IHNjYWxlIHRoZSBsb2FkZWQgb3V0bGluZSBnbHlwaCBidXQga2VlcCBpdCBpbiBmb250IHVuaXRzLgorICAgKgorICAgKiAgICAgVGhpcyBmbGFnIGltcGxpZXMgQEZUX0xPQURfTk9fSElOVElORyBhbmQgQEZUX0xPQURfTk9fQklUTUFQLCBhbmQKKyAgICogICAgIHVuc2V0cyBARlRfTE9BRF9SRU5ERVIuCisgICAqCisgICAqICAgICBJZiB0aGUgZm9udCBpcyBgdHJpY2t5JyAoc2VlIEBGVF9GQUNFX0ZMQUdfVFJJQ0tZIGZvciBtb3JlKSwgdXNpbmcKKyAgICogICAgIEZUX0xPQURfTk9fU0NBTEUgdXN1YWxseSB5aWVsZHMgbWVhbmluZ2xlc3Mgb3V0bGluZXMgYmVjYXVzZSB0aGUKKyAgICogICAgIHN1YmdseXBocyBtdXN0IGJlIHNjYWxlZCBhbmQgcG9zaXRpb25lZCB3aXRoIGhpbnRpbmcgaW5zdHJ1Y3Rpb25zLgorICAgKiAgICAgVGhpcyBjYW4gYmUgc29sdmVkIGJ5IGxvYWRpbmcgdGhlIGZvbnQgd2l0aG91dCBGVF9MT0FEX05PX1NDQUxFIGFuZAorICAgKiAgICAgc2V0dGluZyB0aGUgY2hhcmFjdGVyIHNpemUgdG8gYGZvbnQtPnVuaXRzX3Blcl9FTScuCisgICAqCisgICAqICAgRlRfTE9BRF9OT19ISU5USU5HIDo6CisgICAqICAgICBEaXNhYmxlIGhpbnRpbmcuICBUaGlzIGdlbmVyYWxseSBnZW5lcmF0ZXMgYGJsdXJyaWVyJyBiaXRtYXAgZ2x5cGhzCisgICAqICAgICB3aGVuIHRoZSBnbHlwaCBhcmUgcmVuZGVyZWQgaW4gYW55IG9mIHRoZSBhbnRpLWFsaWFzZWQgbW9kZXMuICBTZWUKKyAgICogICAgIGFsc28gdGhlIG5vdGUgYmVsb3cuCisgICAqCisgICAqICAgICBUaGlzIGZsYWcgaXMgaW1wbGllZCBieSBARlRfTE9BRF9OT19TQ0FMRS4KKyAgICoKKyAgICogICBGVF9MT0FEX1JFTkRFUiA6OgorICAgKiAgICAgQ2FsbCBARlRfUmVuZGVyX0dseXBoIGFmdGVyIHRoZSBnbHlwaCBpcyBsb2FkZWQuICBCeSBkZWZhdWx0LCB0aGUKKyAgICogICAgIGdseXBoIGlzIHJlbmRlcmVkIGluIEBGVF9SRU5ERVJfTU9ERV9OT1JNQUwgbW9kZS4gIFRoaXMgY2FuIGJlCisgICAqICAgICBvdmVycmlkZGVuIGJ5IEBGVF9MT0FEX1RBUkdFVF9YWFggb3IgQEZUX0xPQURfTU9OT0NIUk9NRS4KKyAgICoKKyAgICogICAgIFRoaXMgZmxhZyBpcyB1bnNldCBieSBARlRfTE9BRF9OT19TQ0FMRS4KKyAgICoKKyAgICogICBGVF9MT0FEX05PX0JJVE1BUCA6OgorICAgKiAgICAgSWdub3JlIGJpdG1hcCBzdHJpa2VzIHdoZW4gbG9hZGluZy4gIEJpdG1hcC1vbmx5IGZvbnRzIGlnbm9yZSB0aGlzCisgICAqICAgICBmbGFnLgorICAgKgorICAgKiAgICAgQEZUX0xPQURfTk9fU0NBTEUgYWx3YXlzIHNldHMgdGhpcyBmbGFnLgorICAgKgorICAgKiAgIEZUX0xPQURfVkVSVElDQUxfTEFZT1VUIDo6CisgICAqICAgICBMb2FkIHRoZSBnbHlwaCBmb3IgdmVydGljYWwgdGV4dCBsYXlvdXQuICBJbiBwYXJ0aWN1bGFyLCB0aGUKKyAgICogICAgIGBhZHZhbmNlJyB2YWx1ZSBpbiB0aGUgQEZUX0dseXBoU2xvdFJlYyBzdHJ1Y3R1cmUgaXMgc2V0IHRvIHRoZQorICAgKiAgICAgYHZlcnRBZHZhbmNlJyB2YWx1ZSBvZiB0aGUgYG1ldHJpY3MnIGZpZWxkLgorICAgKgorICAgKiAgICAgSW4gY2FzZSBARlRfSEFTX1ZFUlRJQ0FMIGRvZXNuJ3QgcmV0dXJuIHRydWUsIHlvdSBzaG91bGRuJ3QgdXNlCisgICAqICAgICB0aGlzIGZsYWcgY3VycmVudGx5LiAgUmVhc29uIGlzIHRoYXQgaW4gdGhpcyBjYXNlIHZlcnRpY2FsIG1ldHJpY3MKKyAgICogICAgIGdldCBzeW50aGVzaXplZCwgYW5kIHRob3NlIHZhbHVlcyBhcmUgbm90IGFsd2F5cyBjb25zaXN0ZW50IGFjcm9zcworICAgKiAgICAgdmFyaW91cyBmb250IGZvcm1hdHMuCisgICAqCisgICAqICAgRlRfTE9BRF9GT1JDRV9BVVRPSElOVCA6OgorICAgKiAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGF1dG8taGludGVyIGlzIHByZWZlcnJlZCBvdmVyIHRoZSBmb250J3MgbmF0aXZlCisgICAqICAgICBoaW50ZXIuICBTZWUgYWxzbyB0aGUgbm90ZSBiZWxvdy4KKyAgICoKKyAgICogICBGVF9MT0FEX0NST1BfQklUTUFQIDo6CisgICAqICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgZm9udCBkcml2ZXIgc2hvdWxkIGNyb3AgdGhlIGxvYWRlZCBiaXRtYXAgZ2x5cGgKKyAgICogICAgIChpLmUuLCByZW1vdmUgYWxsIHNwYWNlIGFyb3VuZCBpdHMgYmxhY2sgYml0cykuICBOb3QgYWxsIGRyaXZlcnMKKyAgICogICAgIGltcGxlbWVudCB0aGlzLgorICAgKgorICAgKiAgIEZUX0xPQURfUEVEQU5USUMgOjoKKyAgICogICAgIEluZGljYXRlcyB0aGF0IHRoZSBmb250IGRyaXZlciBzaG91bGQgcGVyZm9ybSBwZWRhbnRpYyB2ZXJpZmljYXRpb25zCisgICAqICAgICBkdXJpbmcgZ2x5cGggbG9hZGluZy4gIFRoaXMgaXMgbW9zdGx5IHVzZWQgdG8gZGV0ZWN0IGJyb2tlbiBnbHlwaHMKKyAgICogICAgIGluIGZvbnRzLiAgQnkgZGVmYXVsdCwgRnJlZVR5cGUgdHJpZXMgdG8gaGFuZGxlIGJyb2tlbiBmb250cyBhbHNvLgorICAgKgorICAgKiAgICAgSW4gcGFydGljdWxhciwgZXJyb3JzIGZyb20gdGhlIFRydWVUeXBlIGJ5dGVjb2RlIGVuZ2luZSBhcmUgbm90CisgICAqICAgICBwYXNzZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGlmIHRoaXMgZmxhZyBpcyBub3Qgc2V0OyB0aGlzIG1pZ2h0CisgICAqICAgICByZXN1bHQgaW4gcGFydGlhbGx5IGhpbnRlZCBvciBkaXN0b3J0ZWQgZ2x5cGhzIGluIGNhc2UgYSBnbHlwaCdzCisgICAqICAgICBieXRlY29kZSBpcyBidWdneS4KKyAgICoKKyAgICogICBGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCA6OgorICAgKiAgICAgSWdub3JlZC4gIERlcHJlY2F0ZWQuCisgICAqCisgICAqICAgRlRfTE9BRF9OT19SRUNVUlNFIDo6CisgICAqICAgICBUaGlzIGZsYWcgaXMgb25seSB1c2VkIGludGVybmFsbHkuICBJdCBtZXJlbHkgaW5kaWNhdGVzIHRoYXQgdGhlCisgICAqICAgICBmb250IGRyaXZlciBzaG91bGQgbm90IGxvYWQgY29tcG9zaXRlIGdseXBocyByZWN1cnNpdmVseS4gIEluc3RlYWQsCisgICAqICAgICBpdCBzaG91bGQgc2V0IHRoZSBgbnVtX3N1YmdseXBoJyBhbmQgYHN1YmdseXBocycgdmFsdWVzIG9mIHRoZQorICAgKiAgICAgZ2x5cGggc2xvdCBhY2NvcmRpbmdseSwgYW5kIHNldCBgZ2x5cGgtPmZvcm1hdCcgdG8KKyAgICogICAgIEBGVF9HTFlQSF9GT1JNQVRfQ09NUE9TSVRFLgorICAgKgorICAgKiAgICAgVGhlIGRlc2NyaXB0aW9uIG9mIHN1Yi1nbHlwaHMgaXMgbm90IGF2YWlsYWJsZSB0byBjbGllbnQKKyAgICogICAgIGFwcGxpY2F0aW9ucyBmb3Igbm93LgorICAgKgorICAgKiAgICAgVGhpcyBmbGFnIGltcGxpZXMgQEZUX0xPQURfTk9fU0NBTEUgYW5kIEBGVF9MT0FEX0lHTk9SRV9UUkFOU0ZPUk0uCisgICAqCisgICAqICAgRlRfTE9BRF9JR05PUkVfVFJBTlNGT1JNIDo6CisgICAqICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgdHJhbnNmb3JtIG1hdHJpeCBzZXQgYnkgQEZUX1NldF9UcmFuc2Zvcm0gc2hvdWxkCisgICAqICAgICBiZSBpZ25vcmVkLgorICAgKgorICAgKiAgIEZUX0xPQURfTU9OT0NIUk9NRSA6OgorICAgKiAgICAgVGhpcyBmbGFnIGlzIHVzZWQgd2l0aCBARlRfTE9BRF9SRU5ERVIgdG8gaW5kaWNhdGUgdGhhdCB5b3Ugd2FudCB0bworICAgKiAgICAgcmVuZGVyIGFuIG91dGxpbmUgZ2x5cGggdG8gYSAxLWJpdCBtb25vY2hyb21lIGJpdG1hcCBnbHlwaCwgd2l0aAorICAgKiAgICAgOH5waXhlbHMgcGFja2VkIGludG8gZWFjaCBieXRlIG9mIHRoZSBiaXRtYXAgZGF0YS4KKyAgICoKKyAgICogICAgIE5vdGUgdGhhdCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGhpbnRpbmcgYWxnb3JpdGhtIHVzZWQuICBZb3UKKyAgICogICAgIHNob3VsZCByYXRoZXIgdXNlIEBGVF9MT0FEX1RBUkdFVF9NT05PIHNvIHRoYXQgdGhlCisgICAqICAgICBtb25vY2hyb21lLW9wdGltaXplZCBoaW50aW5nIGFsZ29yaXRobSBpcyB1c2VkLgorICAgKgorICAgKiAgIEZUX0xPQURfTElORUFSX0RFU0lHTiA6OgorICAgKiAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGBsaW5lYXJIb3JpQWR2YW5jZScgYW5kIGBsaW5lYXJWZXJ0QWR2YW5jZScKKyAgICogICAgIGZpZWxkcyBvZiBARlRfR2x5cGhTbG90UmVjIHNob3VsZCBiZSBrZXB0IGluIGZvbnQgdW5pdHMuICBTZWUKKyAgICogICAgIEBGVF9HbHlwaFNsb3RSZWMgZm9yIGRldGFpbHMuCisgICAqCisgICAqICAgRlRfTE9BRF9OT19BVVRPSElOVCA6OgorICAgKiAgICAgRGlzYWJsZSBhdXRvLWhpbnRlci4gIFNlZSBhbHNvIHRoZSBub3RlIGJlbG93LgorICAgKgorICAgKiAgIEZUX0xPQURfQ09MT1IgOjoKKyAgICogICAgIFRoaXMgZmxhZyBpcyB1c2VkIHRvIHJlcXVlc3QgbG9hZGluZyBvZiBjb2xvciBlbWJlZGRlZC1iaXRtYXAKKyAgICogICAgIGltYWdlcy4gIFRoZSByZXN1bHRpbmcgY29sb3IgYml0bWFwcywgaWYgYXZhaWxhYmxlLCB3aWxsIGhhdmUgdGhlCisgICAqICAgICBARlRfUElYRUxfTU9ERV9CR1JBIGZvcm1hdC4gIFdoZW4gdGhlIGZsYWcgaXMgbm90IHVzZWQgYW5kIGNvbG9yCisgICAqICAgICBiaXRtYXBzIGFyZSBmb3VuZCwgdGhleSB3aWxsIGJlIGNvbnZlcnRlZCB0byAyNTYtbGV2ZWwgZ3JheQorICAgKiAgICAgYml0bWFwcyB0cmFuc3BhcmVudGx5LiAgVGhvc2UgYml0bWFwcyB3aWxsIGJlIGluIHRoZQorICAgKiAgICAgQEZUX1BJWEVMX01PREVfR1JBWSBmb3JtYXQuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIEJ5IGRlZmF1bHQsIGhpbnRpbmcgaXMgZW5hYmxlZCBhbmQgdGhlIGZvbnQncyBuYXRpdmUgaGludGVyIChzZWUKKyAgICogICBARlRfRkFDRV9GTEFHX0hJTlRFUikgaXMgcHJlZmVycmVkIG92ZXIgdGhlIGF1dG8taGludGVyLiAgWW91IGNhbgorICAgKiAgIGRpc2FibGUgaGludGluZyBieSBzZXR0aW5nIEBGVF9MT0FEX05PX0hJTlRJTkcgb3IgY2hhbmdlIHRoZQorICAgKiAgIHByZWNlZGVuY2UgYnkgc2V0dGluZyBARlRfTE9BRF9GT1JDRV9BVVRPSElOVC4gIFlvdSBjYW4gYWxzbyBzZXQKKyAgICogICBARlRfTE9BRF9OT19BVVRPSElOVCBpbiBjYXNlIHlvdSBkb24ndCB3YW50IHRoZSBhdXRvLWhpbnRlciB0byBiZQorICAgKiAgIHVzZWQgYXQgYWxsLgorICAgKgorICAgKiAgIFNlZSB0aGUgZGVzY3JpcHRpb24gb2YgQEZUX0ZBQ0VfRkxBR19UUklDS1kgZm9yIGEgc3BlY2lhbCBleGNlcHRpb24KKyAgICogICAoYWZmZWN0aW5nIG9ubHkgYSBoYW5kZnVsIG9mIEFzaWFuIGZvbnRzKS4KKyAgICoKKyAgICogICBCZXNpZGVzIGRlY2lkaW5nIHdoaWNoIGhpbnRlciB0byB1c2UsIHlvdSBjYW4gYWxzbyBkZWNpZGUgd2hpY2gKKyAgICogICBoaW50aW5nIGFsZ29yaXRobSB0byB1c2UuICBTZWUgQEZUX0xPQURfVEFSR0VUX1hYWCBmb3IgZGV0YWlscy4KKyAgICoKKyAgICogICBOb3RlIHRoYXQgdGhlIGF1dG8taGludGVyIG5lZWRzIGEgdmFsaWQgVW5pY29kZSBjbWFwIChlaXRoZXIgYSBuYXRpdmUKKyAgICogICBvbmUgb3Igc3ludGhlc2l6ZWQgYnkgRnJlZVR5cGUpIGZvciBwcm9kdWNpbmcgY29ycmVjdCByZXN1bHRzLiAgSWYgYQorICAgKiAgIGZvbnQgcHJvdmlkZXMgYW4gaW5jb3JyZWN0IG1hcHBpbmcgKGZvciBleGFtcGxlLCBhc3NpZ25pbmcgdGhlCisgICAqICAgY2hhcmFjdGVyIGNvZGUgVSswMDVBLCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaLCB0byBhIGdseXBoIGRlcGljdGluZyBhCisgICAqICAgbWF0aGVtYXRpY2FsIGludGVncmFsIHNpZ24pLCB0aGUgYXV0by1oaW50ZXIgbWlnaHQgcHJvZHVjZSB1c2VsZXNzCisgICAqICAgcmVzdWx0cy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0xPQURfREVGQVVMVCAgICAgICAgICAgICAgICAgICAgICAweDAKKyNkZWZpbmUgRlRfTE9BRF9OT19TQ0FMRSAgICAgICAgICAgICAgICAgICAgICggMUwgPDwgMCApCisjZGVmaW5lIEZUX0xPQURfTk9fSElOVElORyAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDEgKQorI2RlZmluZSBGVF9MT0FEX1JFTkRFUiAgICAgICAgICAgICAgICAgICAgICAgKCAxTCA8PCAyICkKKyNkZWZpbmUgRlRfTE9BRF9OT19CSVRNQVAgICAgICAgICAgICAgICAgICAgICggMUwgPDwgMyApCisjZGVmaW5lIEZUX0xPQURfVkVSVElDQUxfTEFZT1VUICAgICAgICAgICAgICAoIDFMIDw8IDQgKQorI2RlZmluZSBGVF9MT0FEX0ZPUkNFX0FVVE9ISU5UICAgICAgICAgICAgICAgKCAxTCA8PCA1ICkKKyNkZWZpbmUgRlRfTE9BRF9DUk9QX0JJVE1BUCAgICAgICAgICAgICAgICAgICggMUwgPDwgNiApCisjZGVmaW5lIEZUX0xPQURfUEVEQU5USUMgICAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDcgKQorI2RlZmluZSBGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCAgKCAxTCA8PCA5ICkKKyNkZWZpbmUgRlRfTE9BRF9OT19SRUNVUlNFICAgICAgICAgICAgICAgICAgICggMUwgPDwgMTAgKQorI2RlZmluZSBGVF9MT0FEX0lHTk9SRV9UUkFOU0ZPUk0gICAgICAgICAgICAgKCAxTCA8PCAxMSApCisjZGVmaW5lIEZUX0xPQURfTU9OT0NIUk9NRSAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDEyICkKKyNkZWZpbmUgRlRfTE9BRF9MSU5FQVJfREVTSUdOICAgICAgICAgICAgICAgICggMUwgPDwgMTMgKQorI2RlZmluZSBGVF9MT0FEX05PX0FVVE9ISU5UICAgICAgICAgICAgICAgICAgKCAxTCA8PCAxNSApCisgIC8qIEJpdHMgMTYuLjE5IGFyZSB1c2VkIGJ5IGBGVF9MT0FEX1RBUkdFVF8nICovCisjZGVmaW5lIEZUX0xPQURfQ09MT1IgICAgICAgICAgICAgICAgICAgICAgICAoIDFMIDw8IDIwICkKKworICAvKiAqLworCisgIC8qIHVzZWQgaW50ZXJuYWxseSBvbmx5IGJ5IGNlcnRhaW4gZm9udCBkcml2ZXJzISAqLworI2RlZmluZSBGVF9MT0FEX0FEVkFOQ0VfT05MWSAgICAgICAgICAgICAgICAgKCAxTCA8PCA4ICkKKyNkZWZpbmUgRlRfTE9BRF9TQklUU19PTkxZICAgICAgICAgICAgICAgICAgICggMUwgPDwgMTQgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBlbnVtOgorICAgKiAgIEZUX0xPQURfVEFSR0VUX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIHZhbHVlcyB0aGF0IGFyZSB1c2VkIHRvIHNlbGVjdCBhIHNwZWNpZmljIGhpbnRpbmcgYWxnb3JpdGhtCisgICAqICAgdG8gdXNlIGJ5IHRoZSBoaW50ZXIuICBZb3Ugc2hvdWxkIE9SIG9uZSBvZiB0aGVzZSB2YWx1ZXMgdG8geW91cgorICAgKiAgIGBsb2FkX2ZsYWdzJyB3aGVuIGNhbGxpbmcgQEZUX0xvYWRfR2x5cGguCisgICAqCisgICAqICAgTm90ZSB0aGF0IGZvbnQncyBuYXRpdmUgaGludGVycyBtYXkgaWdub3JlIHRoZSBoaW50aW5nIGFsZ29yaXRobSB5b3UKKyAgICogICBoYXZlIHNwZWNpZmllZCAoZS5nLiwgdGhlIFRydWVUeXBlIGJ5dGVjb2RlIGludGVycHJldGVyKS4gIFlvdSBjYW4gc2V0CisgICAqICAgQEZUX0xPQURfRk9SQ0VfQVVUT0hJTlQgdG8gZW5zdXJlIHRoYXQgdGhlIGF1dG8taGludGVyIGlzIHVzZWQuCisgICAqCisgICAqICAgQWxzbyBub3RlIHRoYXQgQEZUX0xPQURfVEFSR0VUX0xJR0hUIGlzIGFuIGV4Y2VwdGlvbiwgaW4gdGhhdCBpdAorICAgKiAgIGFsd2F5cyBpbXBsaWVzIEBGVF9MT0FEX0ZPUkNFX0FVVE9ISU5ULgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIEZUX0xPQURfVEFSR0VUX05PUk1BTCA6OgorICAgKiAgICAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgZGVmYXVsdCBoaW50aW5nIGFsZ29yaXRobSwgb3B0aW1pemVkIGZvcgorICAgKiAgICAgc3RhbmRhcmQgZ3JheS1sZXZlbCByZW5kZXJpbmcuICBGb3IgbW9ub2Nocm9tZSBvdXRwdXQsIHVzZQorICAgKiAgICAgQEZUX0xPQURfVEFSR0VUX01PTk8gaW5zdGVhZC4KKyAgICoKKyAgICogICBGVF9MT0FEX1RBUkdFVF9MSUdIVCA6OgorICAgKiAgICAgQSBsaWdodGVyIGhpbnRpbmcgYWxnb3JpdGhtIGZvciBub24tbW9ub2Nocm9tZSBtb2Rlcy4gIE1hbnkKKyAgICogICAgIGdlbmVyYXRlZCBnbHlwaHMgYXJlIG1vcmUgZnV6enkgYnV0IGJldHRlciByZXNlbWJsZSBpdHMgb3JpZ2luYWwKKyAgICogICAgIHNoYXBlLiAgQSBiaXQgbGlrZSByZW5kZXJpbmcgb24gTWFjIE9TflguCisgICAqCisgICAqICAgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGlzIHRhcmdldCBpbXBsaWVzIEBGVF9MT0FEX0ZPUkNFX0FVVE9ISU5ULgorICAgKgorICAgKiAgIEZUX0xPQURfVEFSR0VUX01PTk8gOjoKKyAgICogICAgIFN0cm9uZyBoaW50aW5nIGFsZ29yaXRobSB0aGF0IHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIG1vbm9jaHJvbWUKKyAgICogICAgIG91dHB1dC4gIFRoZSByZXN1bHQgaXMgcHJvYmFibHkgdW5wbGVhc2FudCBpZiB0aGUgZ2x5cGggaXMgcmVuZGVyZWQKKyAgICogICAgIGluIG5vbi1tb25vY2hyb21lIG1vZGVzLgorICAgKgorICAgKiAgIEZUX0xPQURfVEFSR0VUX0xDRCA6OgorICAgKiAgICAgQSB2YXJpYW50IG9mIEBGVF9MT0FEX1RBUkdFVF9OT1JNQUwgb3B0aW1pemVkIGZvciBob3Jpem9udGFsbHkKKyAgICogICAgIGRlY2ltYXRlZCBMQ0QgZGlzcGxheXMuCisgICAqCisgICAqICAgRlRfTE9BRF9UQVJHRVRfTENEX1YgOjoKKyAgICogICAgIEEgdmFyaWFudCBvZiBARlRfTE9BRF9UQVJHRVRfTk9STUFMIG9wdGltaXplZCBmb3IgdmVydGljYWxseQorICAgKiAgICAgZGVjaW1hdGVkIExDRCBkaXNwbGF5cy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgWW91IHNob3VsZCB1c2Ugb25seSBfb25lXyBvZiB0aGUgRlRfTE9BRF9UQVJHRVRfWFhYIHZhbHVlcyBpbiB5b3VyCisgICAqICAgYGxvYWRfZmxhZ3MnLiAgVGhleSBjYW4ndCBiZSBPUmVkLgorICAgKgorICAgKiAgIElmIEBGVF9MT0FEX1JFTkRFUiBpcyBhbHNvIHNldCwgdGhlIGdseXBoIGlzIHJlbmRlcmVkIGluIHRoZQorICAgKiAgIGNvcnJlc3BvbmRpbmcgbW9kZSAoaS5lLiwgdGhlIG1vZGUgd2hpY2ggbWF0Y2hlcyB0aGUgdXNlZCBhbGdvcml0aG0KKyAgICogICBiZXN0KS4gIEFuIGV4ZXB0aW9uIGlzIEZUX0xPQURfVEFSR0VUX01PTk8gc2luY2UgaXQgaW1wbGllcworICAgKiAgIEBGVF9MT0FEX01PTk9DSFJPTUUuCisgICAqCisgICAqICAgWW91IGNhbiB1c2UgYSBoaW50aW5nIGFsZ29yaXRobSB0aGF0IGRvZXNuJ3QgY29ycmVzcG9uZCB0byB0aGUgc2FtZQorICAgKiAgIHJlbmRlcmluZyBtb2RlLiAgQXMgYW4gZXhhbXBsZSwgaXQgaXMgcG9zc2libGUgdG8gdXNlIHRoZSBgbGlnaHQnCisgICAqICAgaGludGluZyBhbGdvcml0aG0gYW5kIGhhdmUgdGhlIHJlc3VsdHMgcmVuZGVyZWQgaW4gaG9yaXpvbnRhbCBMQ0QKKyAgICogICBwaXhlbCBtb2RlLCB3aXRoIGNvZGUgbGlrZQorICAgKgorICAgKiAgICAgeworICAgKiAgICAgICBGVF9Mb2FkX0dseXBoKCBmYWNlLCBnbHlwaF9pbmRleCwKKyAgICogICAgICAgICAgICAgICAgICAgICAgbG9hZF9mbGFncyB8IEZUX0xPQURfVEFSR0VUX0xJR0hUICk7CisgICAqCisgICAqICAgICAgIEZUX1JlbmRlcl9HbHlwaCggZmFjZS0+Z2x5cGgsIEZUX1JFTkRFUl9NT0RFX0xDRCApOworICAgKiAgICAgfQorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfTE9BRF9UQVJHRVRfKCB4ICkgICAoIChGVF9JbnQzMikoICh4KSAmIDE1ICkgPDwgMTYgKQorCisjZGVmaW5lIEZUX0xPQURfVEFSR0VUX05PUk1BTCAgRlRfTE9BRF9UQVJHRVRfKCBGVF9SRU5ERVJfTU9ERV9OT1JNQUwgKQorI2RlZmluZSBGVF9MT0FEX1RBUkdFVF9MSUdIVCAgIEZUX0xPQURfVEFSR0VUXyggRlRfUkVOREVSX01PREVfTElHSFQgICkKKyNkZWZpbmUgRlRfTE9BRF9UQVJHRVRfTU9OTyAgICBGVF9MT0FEX1RBUkdFVF8oIEZUX1JFTkRFUl9NT0RFX01PTk8gICApCisjZGVmaW5lIEZUX0xPQURfVEFSR0VUX0xDRCAgICAgRlRfTE9BRF9UQVJHRVRfKCBGVF9SRU5ERVJfTU9ERV9MQ0QgICAgKQorI2RlZmluZSBGVF9MT0FEX1RBUkdFVF9MQ0RfViAgIEZUX0xPQURfVEFSR0VUXyggRlRfUkVOREVSX01PREVfTENEX1YgICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfTE9BRF9UQVJHRVRfTU9ERQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0dXJuIHRoZSBARlRfUmVuZGVyX01vZGUgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuCisgICAqICAgQEZUX0xPQURfVEFSR0VUX1hYWCB2YWx1ZS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0xPQURfVEFSR0VUX01PREUoIHggKSAgKCAoRlRfUmVuZGVyX01vZGUpKCAoICh4KSA+PiAxNiApICYgMTUgKSApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TZXRfVHJhbnNmb3JtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGZ1bmN0aW9uIHVzZWQgdG8gc2V0IHRoZSB0cmFuc2Zvcm1hdGlvbiB0aGF0IGlzIGFwcGxpZWQgdG8gZ2x5cGggKi8KKyAgLyogICAgaW1hZ2VzIHdoZW4gdGhleSBhcmUgbG9hZGVkIGludG8gYSBnbHlwaCBzbG90IHRocm91Z2ggICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9Mb2FkX0dseXBoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hdHJpeCA6OiBBIHBvaW50ZXIgdG8gdGhlIHRyYW5zZm9ybWF0aW9uJ3MgMngyIG1hdHJpeC4gIFVzZX4wIGZvciAqLworICAvKiAgICAgICAgICAgICAgdGhlIGlkZW50aXR5IG1hdHJpeC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVsdGEgIDo6IEEgcG9pbnRlciB0byB0aGUgdHJhbnNsYXRpb24gdmVjdG9yLiAgVXNlfjAgZm9yIHRoZSBudWxsICovCisgIC8qICAgICAgICAgICAgICB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBvbmx5IGFwcGxpZWQgdG8gc2NhbGFibGUgaW1hZ2UgZm9ybWF0cyBhZnRlciAqLworICAvKiAgICB0aGUgZ2x5cGggaGFzIGJlZW4gbG9hZGVkLiAgSXQgbWVhbnMgdGhhdCBoaW50aW5nIGlzIHVuYWx0ZXJlZCBieSAgKi8KKyAgLyogICAgdGhlIHRyYW5zZm9ybWF0aW9uIGFuZCBpcyBwZXJmb3JtZWQgb24gdGhlIGNoYXJhY3RlciBzaXplIGdpdmVuIGluICovCisgIC8qICAgIHRoZSBsYXN0IGNhbGwgdG8gQEZUX1NldF9DaGFyX1NpemUgb3IgQEZUX1NldF9QaXhlbF9TaXplcy4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IHRoaXMgYWxzbyB0cmFuc2Zvcm1zIHRoZSBgZmFjZS5nbHlwaC5hZHZhbmNlJyBmaWVsZCwgYnV0ICovCisgIC8qICAgICpub3QqIHRoZSB2YWx1ZXMgaW4gYGZhY2UuZ2x5cGgubWV0cmljcycuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfU2V0X1RyYW5zZm9ybSggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfTWF0cml4KiAgbWF0cml4LAorICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICBkZWx0YSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmVuZGVyX01vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gZW51bWVyYXRpb24gdHlwZSB0aGF0IGxpc3RzIHRoZSByZW5kZXIgbW9kZXMgc3VwcG9ydGVkIGJ5ICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlfjIuICBFYWNoIG1vZGUgY29ycmVzcG9uZHMgdG8gYSBzcGVjaWZpYyB0eXBlIG9mIHNjYW5saW5lICAqLworICAvKiAgICBjb252ZXJzaW9uIHBlcmZvcm1lZCBvbiB0aGUgb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZvciBiaXRtYXAgZm9udHMgYW5kIGVtYmVkZGVkIGJpdG1hcHMgdGhlIGBiaXRtYXAtPnBpeGVsX21vZGUnICAgICAqLworICAvKiAgICBmaWVsZCBpbiB0aGUgQEZUX0dseXBoU2xvdFJlYyBzdHJ1Y3R1cmUgZ2l2ZXMgdGhlIGZvcm1hdCBvZiB0aGUgICAgKi8KKyAgLyogICAgcmV0dXJuZWQgYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbGwgbW9kZXMgZXhjZXB0IEBGVF9SRU5ERVJfTU9ERV9NT05PIHVzZSAyNTYgbGV2ZWxzIG9mIG9wYWNpdHkuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SRU5ERVJfTU9ERV9OT1JNQUwgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IHJlbmRlciBtb2RlOyBpdCBjb3JyZXNwb25kcyB0byA4LWJpdCAgICAgICAgICovCisgIC8qICAgICAgYW50aS1hbGlhc2VkIGJpdG1hcHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUkVOREVSX01PREVfTElHSFQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIEBGVF9SRU5ERVJfTU9ERV9OT1JNQUwuICBJdCBpcyBvbmx5ICAgICAgICAqLworICAvKiAgICAgIGRlZmluZWQgYXMgYSBzZXBhcmF0ZSB2YWx1ZSBiZWNhdXNlIHJlbmRlciBtb2RlcyBhcmUgYWxzbyB1c2VkICAgKi8KKyAgLyogICAgICBpbmRpcmVjdGx5IHRvIGRlZmluZSBoaW50aW5nIGFsZ29yaXRobSBzZWxlY3RvcnMuICBTZWUgICAgICAgICAgICovCisgIC8qICAgICAgQEZUX0xPQURfVEFSR0VUX1hYWCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUkVOREVSX01PREVfTU9OTyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhpcyBtb2RlIGNvcnJlc3BvbmRzIHRvIDEtYml0IGJpdG1hcHMgKHdpdGggMn5sZXZlbHMgb2YgICAgICAgICAqLworICAvKiAgICAgIG9wYWNpdHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JFTkRFUl9NT0RFX0xDRCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoaXMgbW9kZSBjb3JyZXNwb25kcyB0byBob3Jpem9udGFsIFJHQiBhbmQgQkdSIHN1Yi1waXhlbCAgICAgICAgKi8KKyAgLyogICAgICBkaXNwbGF5cyBsaWtlIExDRCBzY3JlZW5zLiAgSXQgcHJvZHVjZXMgOC1iaXQgYml0bWFwcyB0aGF0IGFyZSAgICovCisgIC8qICAgICAgM350aW1lcyB0aGUgd2lkdGggb2YgdGhlIG9yaWdpbmFsIGdseXBoIG91dGxpbmUgaW4gcGl4ZWxzLCBhbmQgICAqLworICAvKiAgICAgIHdoaWNoIHVzZSB0aGUgQEZUX1BJWEVMX01PREVfTENEIG1vZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JFTkRFUl9NT0RFX0xDRF9WIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoaXMgbW9kZSBjb3JyZXNwb25kcyB0byB2ZXJ0aWNhbCBSR0IgYW5kIEJHUiBzdWItcGl4ZWwgZGlzcGxheXMgKi8KKyAgLyogICAgICAobGlrZSBQREEgc2NyZWVucywgcm90YXRlZCBMQ0QgZGlzcGxheXMsIGV0Yy4pLiAgSXQgcHJvZHVjZXMgICAgICovCisgIC8qICAgICAgOC1iaXQgYml0bWFwcyB0aGF0IGFyZSAzfnRpbWVzIHRoZSBoZWlnaHQgb2YgdGhlIG9yaWdpbmFsICAgICAgICAqLworICAvKiAgICAgIGdseXBoIG91dGxpbmUgaW4gcGl4ZWxzIGFuZCB1c2UgdGhlIEBGVF9QSVhFTF9NT0RFX0xDRF9WIG1vZGUuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgTENELW9wdGltaXplZCBnbHlwaCBiaXRtYXBzIHByb2R1Y2VkIGJ5IEZUX1JlbmRlcl9HbHlwaCBjYW4gYmUgKi8KKyAgLyogICAgZmlsdGVyZWQgdG8gcmVkdWNlIGNvbG9yLWZyaW5nZXMgYnkgdXNpbmcgQEZUX0xpYnJhcnlfU2V0TGNkRmlsdGVyICovCisgIC8qICAgIChub3QgYWN0aXZlIGluIHRoZSBkZWZhdWx0IGJ1aWxkcykuICBJdCBpcyB1cCB0byB0aGUgY2FsbGVyIHRvICAgICAqLworICAvKiAgICBlaXRoZXIgY2FsbCBARlRfTGlicmFyeV9TZXRMY2RGaWx0ZXIgKGlmIGF2YWlsYWJsZSkgb3IgZG8gdGhlICAgICAgKi8KKyAgLyogICAgZmlsdGVyaW5nIGl0c2VsZi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgc2VsZWN0ZWQgcmVuZGVyIG1vZGUgb25seSBhZmZlY3RzIHZlY3RvciBnbHlwaHMgb2YgYSBmb250LiAgICAgKi8KKyAgLyogICAgRW1iZWRkZWQgYml0bWFwcyBvZnRlbiBoYXZlIGEgZGlmZmVyZW50IHBpeGVsIG1vZGUgbGlrZSAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9QSVhFTF9NT0RFX01PTk8uICBZb3UgY2FuIHVzZSBARlRfQml0bWFwX0NvbnZlcnQgdG8gdHJhbnNmb3JtICAqLworICAvKiAgICB0aGVtIGludG8gOC1iaXQgcGl4bWFwcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgZW51bSAgRlRfUmVuZGVyX01vZGVfCisgIHsKKyAgICBGVF9SRU5ERVJfTU9ERV9OT1JNQUwgPSAwLAorICAgIEZUX1JFTkRFUl9NT0RFX0xJR0hULAorICAgIEZUX1JFTkRFUl9NT0RFX01PTk8sCisgICAgRlRfUkVOREVSX01PREVfTENELAorICAgIEZUX1JFTkRFUl9NT0RFX0xDRF9WLAorCisgICAgRlRfUkVOREVSX01PREVfTUFYCisKKyAgfSBGVF9SZW5kZXJfTW9kZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X3JlbmRlcl9tb2RlX3h4eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZXNlIGNvbnN0YW50cyBhcmUgZGVwcmVjYXRlZC4gIFVzZSB0aGUgY29ycmVzcG9uZGluZyAgICAgICAgICAgICAqLworICAvKiAgICBARlRfUmVuZGVyX01vZGUgdmFsdWVzIGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9yZW5kZXJfbW9kZV9ub3JtYWwgOjogc2VlIEBGVF9SRU5ERVJfTU9ERV9OT1JNQUwgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfcmVuZGVyX21vZGVfbW9ubyAgIDo6IHNlZSBARlRfUkVOREVSX01PREVfTU9OTyAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBmdF9yZW5kZXJfbW9kZV9ub3JtYWwgIEZUX1JFTkRFUl9NT0RFX05PUk1BTAorI2RlZmluZSBmdF9yZW5kZXJfbW9kZV9tb25vICAgIEZUX1JFTkRFUl9NT0RFX01PTk8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JlbmRlcl9HbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbnZlcnQgYSBnaXZlbiBnbHlwaCBpbWFnZSB0byBhIGJpdG1hcC4gIEl0IGRvZXMgc28gYnkgaW5zcGVjdGluZyAqLworICAvKiAgICB0aGUgZ2x5cGggaW1hZ2UgZm9ybWF0LCBmaW5kaW5nIHRoZSByZWxldmFudCByZW5kZXJlciwgYW5kICAgICAgICAgKi8KKyAgLyogICAgaW52b2tpbmcgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2xvdCAgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIGdseXBoIHNsb3QgY29udGFpbmluZyB0aGUgaW1hZ2UgdG8gICovCisgIC8qICAgICAgICAgICAgICAgICAgIGNvbnZlcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlbmRlcl9tb2RlIDo6IFRoaXMgaXMgdGhlIHJlbmRlciBtb2RlIHVzZWQgdG8gcmVuZGVyIHRoZSBnbHlwaCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBpbWFnZSBpbnRvIGEgYml0bWFwLiAgU2VlIEBGVF9SZW5kZXJfTW9kZSBmb3IgYSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfUmVuZGVyX0dseXBoKCBGVF9HbHlwaFNsb3QgICAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgcmVuZGVyX21vZGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0tlcm5pbmdfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBrZXJuaW5nIHZhbHVlcyB0byByZXR1cm4gaW4gICAqLworICAvKiAgICBARlRfR2V0X0tlcm5pbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9LRVJOSU5HX0RFRkFVTFQgIDo6IFJldHVybiBzY2FsZWQgYW5kIGdyaWQtZml0dGVkIGtlcm5pbmcgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZXMgKHZhbHVlIGlzfjApLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9LRVJOSU5HX1VORklUVEVEIDo6IFJldHVybiBzY2FsZWQgYnV0IHVuLWdyaWQtZml0dGVkIGtlcm5pbmcgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9LRVJOSU5HX1VOU0NBTEVEIDo6IFJldHVybiB0aGUga2VybmluZyB2ZWN0b3IgaW4gb3JpZ2luYWwgZm9udCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIEZUX0tlcm5pbmdfTW9kZV8KKyAgeworICAgIEZUX0tFUk5JTkdfREVGQVVMVCAgPSAwLAorICAgIEZUX0tFUk5JTkdfVU5GSVRURUQsCisgICAgRlRfS0VSTklOR19VTlNDQUxFRAorCisgIH0gRlRfS2VybmluZ19Nb2RlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Q29uc3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfa2VybmluZ19kZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBjb25zdGFudCBpcyBkZXByZWNhdGVkLiAgUGxlYXNlIHVzZSBARlRfS0VSTklOR19ERUZBVUxUICAgICAgICovCisgIC8qICAgIGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgZnRfa2VybmluZ19kZWZhdWx0ICAgRlRfS0VSTklOR19ERUZBVUxUCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxDb25zdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9rZXJuaW5nX3VuZml0dGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGNvbnN0YW50IGlzIGRlcHJlY2F0ZWQuICBQbGVhc2UgdXNlIEBGVF9LRVJOSU5HX1VORklUVEVEICAgICAgKi8KKyAgLyogICAgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBmdF9rZXJuaW5nX3VuZml0dGVkICBGVF9LRVJOSU5HX1VORklUVEVECisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxDb25zdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9rZXJuaW5nX3Vuc2NhbGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGNvbnN0YW50IGlzIGRlcHJlY2F0ZWQuICBQbGVhc2UgdXNlIEBGVF9LRVJOSU5HX1VOU0NBTEVEICAgICAgKi8KKyAgLyogICAgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBmdF9rZXJuaW5nX3Vuc2NhbGVkICBGVF9LRVJOSU5HX1VOU0NBTEVECisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfS2VybmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gdGhlIGtlcm5pbmcgdmVjdG9yIGJldHdlZW4gdHdvIGdseXBocyBvZiBhIHNhbWUgZmFjZS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICA6OiBBIGhhbmRsZSB0byBhIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlZnRfZ2x5cGggIDo6IFRoZSBpbmRleCBvZiB0aGUgbGVmdCBnbHlwaCBpbiB0aGUga2VybiBwYWlyLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmlnaHRfZ2x5cGggOjogVGhlIGluZGV4IG9mIHRoZSByaWdodCBnbHlwaCBpbiB0aGUga2VybiBwYWlyLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBrZXJuX21vZGUgICA6OiBTZWUgQEZUX0tlcm5pbmdfTW9kZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lcyB0aGUgc2NhbGUgYW5kIGRpbWVuc2lvbiBvZiB0aGUgcmV0dXJuZWQgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGtlcm5pbmcgdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFrZXJuaW5nICAgIDo6IFRoZSBrZXJuaW5nIHZlY3Rvci4gIFRoaXMgaXMgZWl0aGVyIGluIGZvbnQgdW5pdHMgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBvciBpbiBwaXhlbHMgKDI2LjYgZm9ybWF0KSBmb3Igc2NhbGFibGUgZm9ybWF0cywgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgYW5kIGluIHBpeGVscyBmb3IgZml4ZWQtc2l6ZXMgZm9ybWF0cy4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT25seSBob3Jpem9udGFsIGxheW91dHMgKGxlZnQtdG8tcmlnaHQgJiByaWdodC10by1sZWZ0KSBhcmUgICAgICAgICovCisgIC8qICAgIHN1cHBvcnRlZCBieSB0aGlzIG1ldGhvZC4gIE90aGVyIGxheW91dHMsIG9yIG1vcmUgc29waGlzdGljYXRlZCAgICAqLworICAvKiAgICBrZXJuaW5ncywgYXJlIG91dCBvZiB0aGUgc2NvcGUgb2YgdGhpcyBBUEkgZnVuY3Rpb24gLS0gdGhleSBjYW4gYmUgKi8KKyAgLyogICAgaW1wbGVtZW50ZWQgdGhyb3VnaCBmb3JtYXQtc3BlY2lmaWMgaW50ZXJmYWNlcy4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0X0tlcm5pbmcoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBsZWZ0X2dseXBoLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgcmlnaHRfZ2x5cGgsCisgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBrZXJuX21vZGUsCisgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IgICpha2VybmluZyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X1RyYWNrX0tlcm5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0dXJuIHRoZSB0cmFjayBrZXJuaW5nIGZvciBhIGdpdmVuIGZhY2Ugb2JqZWN0IGF0IGEgZ2l2ZW4gc2l6ZS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICA6OiBBIGhhbmRsZSB0byBhIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb2ludF9zaXplIDo6IFRoZSBwb2ludCBzaXplIGluIDE2LjE2IGZyYWN0aW9uYWwgcG9pbnRzLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlZ3JlZSAgICAgOjogVGhlIGRlZ3JlZSBvZiB0aWdodG5lc3MuICBJbmNyZWFzaW5nbHkgbmVnYXRpdmUgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIHZhbHVlcyByZXByZXNlbnQgdGlnaHRlciB0cmFjayBrZXJuaW5nLCB3aGlsZSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBpbmNyZWFzaW5nbHkgcG9zaXRpdmUgdmFsdWVzIHJlcHJlc2VudCBsb29zZXIgdHJhY2sgICovCisgIC8qICAgICAgICAgICAgICAgICAga2VybmluZy4gIFZhbHVlIHplcm8gbWVhbnMgbm8gdHJhY2sga2VybmluZy4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFrZXJuaW5nICAgOjogVGhlIGtlcm5pbmcgaW4gMTYuMTYgZnJhY3Rpb25hbCBwb2ludHMsIHRvIGJlICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIHVuaWZvcm1seSBhcHBsaWVkIGJldHdlZW4gYWxsIGdseXBocy4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDdXJyZW50bHksIG9ubHkgdGhlIFR5cGV+MSBmb250IGRyaXZlciBzdXBwb3J0cyB0cmFjayBrZXJuaW5nLCAgICAgKi8KKyAgLyogICAgdXNpbmcgZGF0YSBmcm9tIEFGTSBmaWxlcyAoaWYgYXR0YWNoZWQgd2l0aCBARlRfQXR0YWNoX0ZpbGUgb3IgICAgICovCisgIC8qICAgIEBGVF9BdHRhY2hfU3RyZWFtKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT25seSB2ZXJ5IGZldyBBRk0gZmlsZXMgY29tZSB3aXRoIHRyYWNrIGtlcm5pbmcgZGF0YTsgcGxlYXNlIHJlZmVyICovCisgIC8qICAgIHRvIHRoZSBBZG9iZSdzIEFGTSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9UcmFja19LZXJuaW5nKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgIHBvaW50X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGRlZ3JlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgYWtlcm5pbmcgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9HbHlwaF9OYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBBU0NJSSBuYW1lIG9mIGEgZ2l2ZW4gZ2x5cGggaW4gYSBmYWNlLiAgVGhpcyBvbmx5ICAgICAqLworICAvKiAgICB3b3JrcyBmb3IgdGhvc2UgZmFjZXMgd2hlcmUgQEZUX0hBU19HTFlQSF9OQU1FUyhmYWNlKSByZXR1cm5zfjEuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICA6OiBBIGhhbmRsZSB0byBhIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX2luZGV4IDo6IFRoZSBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYnVmZmVyX21heCAgOjogVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBpbiB0aGUgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGJ1ZmZlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJ1ZmZlciAgICAgIDo6IEEgcG9pbnRlciB0byBhIHRhcmdldCBidWZmZXIgd2hlcmUgdGhlIG5hbWUgaXMgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBjb3BpZWQgdG8uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBlcnJvciBpcyByZXR1cm5lZCBpZiB0aGUgZmFjZSBkb2Vzbid0IHByb3ZpZGUgZ2x5cGggbmFtZXMgb3IgaWYgKi8KKyAgLyogICAgdGhlIGdseXBoIGluZGV4IGlzIGludmFsaWQuICBJbiBhbGwgY2FzZXMgb2YgZmFpbHVyZSwgdGhlIGZpcnN0ICAgICovCisgIC8qICAgIGJ5dGUgb2YgYGJ1ZmZlcicgaXMgc2V0IHRvfjAgdG8gaW5kaWNhdGUgYW4gZW1wdHkgbmFtZS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGdseXBoIG5hbWUgaXMgdHJ1bmNhdGVkIHRvIGZpdCB3aXRoaW4gdGhlIGJ1ZmZlciBpZiBpdCBpcyB0b28gICovCisgIC8qICAgIGxvbmcuICBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzIGFsd2F5cyB6ZXJvLXRlcm1pbmF0ZWQuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQmUgYXdhcmUgdGhhdCBGcmVlVHlwZSByZW9yZGVycyBnbHlwaCBpbmRpY2VzIGludGVybmFsbHkgc28gdGhhdCAgICovCisgIC8qICAgIGdseXBoIGluZGV4fjAgYWx3YXlzIGNvcnJlc3BvbmRzIHRvIHRoZSBgbWlzc2luZyBnbHlwaCcgKGNhbGxlZCAgICAqLworICAvKiAgICBgLm5vdGRlZicpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNvbXBpbGVkIHdpdGhpbiB0aGUgbGlicmFyeSBpZiB0aGUgY29uZmlnICAgICAqLworICAvKiAgICBtYWNybyBgRlRfQ09ORklHX09QVElPTl9OT19HTFlQSF9OQU1FUycgaXMgZGVmaW5lZCBpbiAgICAgICAgICAgICAgKi8KKyAgLyogICAgYGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9ucy5oJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0X0dseXBoX05hbWUoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1BvaW50ZXIgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGJ1ZmZlcl9tYXggKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9Qb3N0c2NyaXB0X05hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBBU0NJSSBQb3N0U2NyaXB0IG5hbWUgb2YgYSBnaXZlbiBmYWNlLCBpZiBhdmFpbGFibGUuICAqLworICAvKiAgICBUaGlzIG9ubHkgd29ya3Mgd2l0aCBQb3N0U2NyaXB0IGFuZCBUcnVlVHlwZSBmb250cy4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHBvaW50ZXIgdG8gdGhlIGZhY2UncyBQb3N0U2NyaXB0IG5hbWUuICBOVUxMIGlmIHVuYXZhaWxhYmxlLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmV0dXJuZWQgcG9pbnRlciBpcyBvd25lZCBieSB0aGUgZmFjZSBhbmQgaXMgZGVzdHJveWVkIHdpdGggICAgKi8KKyAgLyogICAgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIGNvbnN0IGNoYXIqICkKKyAgRlRfR2V0X1Bvc3RzY3JpcHRfTmFtZSggRlRfRmFjZSAgZmFjZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2VsZWN0X0NoYXJtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2VsZWN0IGEgZ2l2ZW4gY2hhcm1hcCBieSBpdHMgZW5jb2RpbmcgdGFnIChhcyBsaXN0ZWQgaW4gICAgICAgICAgICovCisgIC8qICAgIGBmcmVldHlwZS5oJykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGVuY29kaW5nIDo6IEEgaGFuZGxlIHRvIHRoZSBzZWxlY3RlZCBlbmNvZGluZy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciBpZiBubyBjaGFybWFwIGluIHRoZSBmYWNlICAgICAgICAgICAqLworICAvKiAgICBjb3JyZXNwb25kcyB0byB0aGUgZW5jb2RpbmcgcXVlcmllZCBoZXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEJlY2F1c2UgbWFueSBmb250cyBjb250YWluIG1vcmUgdGhhbiBhIHNpbmdsZSBjbWFwIGZvciBVbmljb2RlICAgICAqLworICAvKiAgICBlbmNvZGluZywgdGhpcyBmdW5jdGlvbiBoYXMgc29tZSBzcGVjaWFsIGNvZGUgdG8gc2VsZWN0IHRoZSBvbmUgICAgKi8KKyAgLyogICAgd2hpY2ggY292ZXJzIFVuaWNvZGUgYmVzdCAoYGJlc3QnIGluIHRoZSBzZW5zZSB0aGF0IGEgVUNTLTQgY21hcCAgICovCisgIC8qICAgIGlzIHByZWZlcnJlZCB0byBhIFVDUy0yIGNtYXApLiAgSXQgaXMgdGh1cyBwcmVmZXJhYmxlIHRvICAgICAgICAgICAqLworICAvKiAgICBARlRfU2V0X0NoYXJtYXAgaW4gdGhpcyBjYXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TZWxlY3RfQ2hhcm1hcCggRlRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9FbmNvZGluZyAgZW5jb2RpbmcgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NldF9DaGFybWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlbGVjdCBhIGdpdmVuIGNoYXJtYXAgZm9yIGNoYXJhY3RlciBjb2RlIHRvIGdseXBoIGluZGV4IG1hcHBpbmcuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNoYXJtYXAgOjogQSBoYW5kbGUgdG8gdGhlIHNlbGVjdGVkIGNoYXJtYXAuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgY2hhcm1hcCBpcyBub3QgcGFydCBvZiAgICAgICAqLworICAvKiAgICB0aGUgZmFjZSAoaS5lLiwgaWYgaXQgaXMgbm90IGxpc3RlZCBpbiB0aGUgYGZhY2UtPmNoYXJtYXBzJyAgICAgICAgKi8KKyAgLyogICAgdGFibGUpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJdCBhbHNvIGZhaWxzIGlmIGEgdHlwZX4xNCBjaGFybWFwIGlzIHNlbGVjdGVkLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TZXRfQ2hhcm1hcCggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgIEZUX0NoYXJNYXAgIGNoYXJtYXAgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9HZXRfQ2hhcm1hcF9JbmRleAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0cmlldmUgaW5kZXggb2YgYSBnaXZlbiBjaGFybWFwLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgY2hhcm1hcCA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gYSBjaGFybWFwLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIFRoZSBpbmRleCBpbnRvIHRoZSBhcnJheSBvZiBjaGFyYWN0ZXIgbWFwcyB3aXRoaW4gdGhlIGZhY2UgdG8gd2hpY2gKKyAgICogICBgY2hhcm1hcCcgYmVsb25ncy4gIElmIGFuIGVycm9yIG9jY3VycywgLTEgaXMgcmV0dXJuZWQuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0ludCApCisgIEZUX0dldF9DaGFybWFwX0luZGV4KCBGVF9DaGFyTWFwICBjaGFybWFwICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfQ2hhcl9JbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gdGhlIGdseXBoIGluZGV4IG9mIGEgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUuICBUaGlzIGZ1bmN0aW9uICAgKi8KKyAgLyogICAgdXNlcyBhIGNoYXJtYXAgb2JqZWN0IHRvIGRvIHRoZSBtYXBwaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFyY29kZSA6OiBUaGUgY2hhcmFjdGVyIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZ2x5cGggaW5kZXguICAwfm1lYW5zIGB1bmRlZmluZWQgY2hhcmFjdGVyIGNvZGUnLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiB5b3UgdXNlIEZyZWVUeXBlIHRvIG1hbmlwdWxhdGUgdGhlIGNvbnRlbnRzIG9mIGZvbnQgZmlsZXMgICAgICAgKi8KKyAgLyogICAgZGlyZWN0bHksIGJlIGF3YXJlIHRoYXQgdGhlIGdseXBoIGluZGV4IHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gICovCisgIC8qICAgIGRvZXNuJ3QgYWx3YXlzIGNvcnJlc3BvbmQgdG8gdGhlIGludGVybmFsIGluZGljZXMgdXNlZCB3aXRoaW4gdGhlICAqLworICAvKiAgICBmaWxlLiAgVGhpcyBpcyBkb25lIHRvIGVuc3VyZSB0aGF0IHZhbHVlfjAgYWx3YXlzIGNvcnJlc3BvbmRzIHRvICAgKi8KKyAgLyogICAgdGhlIGBtaXNzaW5nIGdseXBoJy4gIElmIHRoZSBmaXJzdCBnbHlwaCBpcyBub3QgbmFtZWQgYC5ub3RkZWYnLCAgICovCisgIC8qICAgIHRoZW4gZm9yIFR5cGV+MSBhbmQgVHlwZX40MiBmb250cywgYC5ub3RkZWYnIHdpbGwgYmUgbW92ZWQgaW50byAgICAqLworICAvKiAgICB0aGUgZ2x5cGggSUR+MCBwb3NpdGlvbiwgYW5kIHdoYXRldmVyIHdhcyB0aGVyZSB3aWxsIGJlIG1vdmVkIHRvICAgKi8KKyAgLyogICAgdGhlIHBvc2l0aW9uIGAubm90ZGVmJyBoYWQuICBGb3IgVHlwZX4xIGZvbnRzLCBpZiB0aGVyZSBpcyBubyAgICAgICovCisgIC8qICAgIGAubm90ZGVmJyBnbHlwaCBhdCBhbGwsIHRoZW4gb25lIHdpbGwgYmUgY3JlYXRlZCBhdCBpbmRleH4wIGFuZCAgICAqLworICAvKiAgICB3aGF0ZXZlciB3YXMgdGhlcmUgd2lsbCBiZSBtb3ZlZCB0byB0aGUgbGFzdCBpbmRleCAtLSBUeXBlfjQyICAgICAgKi8KKyAgLyogICAgZm9udHMgYXJlIGNvbnNpZGVyZWQgaW52YWxpZCB1bmRlciB0aGlzIGNvbmRpdGlvbi4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX1VJbnQgKQorICBGVF9HZXRfQ2hhcl9JbmRleCggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgY2hhcmNvZGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9GaXJzdF9DaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4gdGhlIGZpcnN0IGNoYXJhY3RlciBjb2RlIGluIHRoZSAgICAqLworICAvKiAgICBjdXJyZW50IGNoYXJtYXAgb2YgYSBnaXZlbiBmYWNlLiAgSXQgYWxzbyByZXR1cm5zIHRoZSAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29ycmVzcG9uZGluZyBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWdpbmRleCA6OiBHbHlwaCBpbmRleCBvZiBmaXJzdCBjaGFyYWN0ZXIgY29kZS4gIDB+aWYgY2hhcm1hcCBpcyAgICovCisgIC8qICAgICAgICAgICAgICAgZW1wdHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBjaGFybWFwJ3MgZmlyc3QgY2hhcmFjdGVyIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFlvdSBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb24gd2l0aCBARlRfR2V0X05leHRfQ2hhciB0byBiZSBhYmxlIHRvICAqLworICAvKiAgICBwYXJzZSBhbGwgY2hhcmFjdGVyIGNvZGVzIGF2YWlsYWJsZSBpbiBhIGdpdmVuIGNoYXJtYXAuICBUaGUgY29kZSAgKi8KKyAgLyogICAgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBGVF9VTG9uZyAgY2hhcmNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgRlRfVUludCAgIGdpbmRleDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgY2hhcmNvZGUgPSBGVF9HZXRfRmlyc3RfQ2hhciggZmFjZSwgJmdpbmRleCApOyAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHdoaWxlICggZ2luZGV4ICE9IDAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAuLi4gZG8gc29tZXRoaW5nIHdpdGggKGNoYXJjb2RlLGdpbmRleCkgcGFpciAuLi4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIGNoYXJjb2RlID0gRlRfR2V0X05leHRfQ2hhciggZmFjZSwgY2hhcmNvZGUsICZnaW5kZXggKTsgICAgICAgICovCisgIC8qICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgdGhhdCBgKmFnaW5kZXgnIGlzIHNldCB0b34wIGlmIHRoZSBjaGFybWFwIGlzIGVtcHR5LiAgVGhlICAgICAqLworICAvKiAgICByZXN1bHQgaXRzZWxmIGNhbiBiZX4wIGluIHR3byBjYXNlczogaWYgdGhlIGNoYXJtYXAgaXMgZW1wdHkgb3IgICAgKi8KKyAgLyogICAgaWYgdGhlIHZhbHVlfjAgaXMgdGhlIGZpcnN0IHZhbGlkIGNoYXJhY3RlciBjb2RlLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX1VMb25nICkKKyAgRlRfR2V0X0ZpcnN0X0NoYXIoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgKmFnaW5kZXggKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9OZXh0X0NoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4gdGhlIG5leHQgY2hhcmFjdGVyIGNvZGUgaW4gdGhlICAgICAqLworICAvKiAgICBjdXJyZW50IGNoYXJtYXAgb2YgYSBnaXZlbiBmYWNlIGZvbGxvd2luZyB0aGUgdmFsdWUgYGNoYXJfY29kZScsICAgKi8KKyAgLyogICAgYXMgd2VsbCBhcyB0aGUgY29ycmVzcG9uZGluZyBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNoYXJfY29kZSA6OiBUaGUgc3RhcnRpbmcgY2hhcmFjdGVyIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFnaW5kZXggICA6OiBHbHlwaCBpbmRleCBvZiBuZXh0IGNoYXJhY3RlciBjb2RlLiAgMH5pZiBjaGFybWFwICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgaXMgZW1wdHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgY2hhcm1hcCdzIG5leHQgY2hhcmFjdGVyIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBZb3Ugc2hvdWxkIHVzZSB0aGlzIGZ1bmN0aW9uIHdpdGggQEZUX0dldF9GaXJzdF9DaGFyIHRvIHdhbGsgICAgICAgKi8KKyAgLyogICAgb3ZlciBhbGwgY2hhcmFjdGVyIGNvZGVzIGF2YWlsYWJsZSBpbiBhIGdpdmVuIGNoYXJtYXAuICBTZWUgdGhlICAgICovCisgIC8qICAgIG5vdGUgZm9yIHRoaXMgZnVuY3Rpb24gZm9yIGEgc2ltcGxlIGNvZGUgZXhhbXBsZS4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IGAqYWdpbmRleCcgaXMgc2V0IHRvfjAgd2hlbiB0aGVyZSBhcmUgbm8gbW9yZSBjb2RlcyBpbiAgICovCisgIC8qICAgIHRoZSBjaGFybWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9VTG9uZyApCisgIEZUX0dldF9OZXh0X0NoYXIoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICBjaGFyX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAqYWdpbmRleCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X05hbWVfSW5kZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0dXJuIHRoZSBnbHlwaCBpbmRleCBvZiBhIGdpdmVuIGdseXBoIG5hbWUuICBUaGlzIGZ1bmN0aW9uIHVzZXMgICovCisgIC8qICAgIGRyaXZlciBzcGVjaWZpYyBvYmplY3RzIHRvIGRvIHRoZSB0cmFuc2xhdGlvbi4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfbmFtZSA6OiBUaGUgZ2x5cGggbmFtZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGdseXBoIGluZGV4LiAgMH5tZWFucyBgdW5kZWZpbmVkIGNoYXJhY3RlciBjb2RlJy4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX1VJbnQgKQorICBGVF9HZXRfTmFtZV9JbmRleCggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmluZyogIGdseXBoX25hbWUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBtYWNybzoKKyAgICogICBGVF9TVUJHTFlQSF9GTEFHX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIGNvbnN0YW50cyB1c2VkIHRvIGRlc2NyaWJlIHN1YmdseXBocy4gIFBsZWFzZSByZWZlciB0byB0aGUKKyAgICogICBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBmbGFncy4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBGVF9TVUJHTFlQSF9GTEFHX0FSR1NfQVJFX1dPUkRTIDo6CisgICAqICAgRlRfU1VCR0xZUEhfRkxBR19BUkdTX0FSRV9YWV9WQUxVRVMgOjoKKyAgICogICBGVF9TVUJHTFlQSF9GTEFHX1JPVU5EX1hZX1RPX0dSSUQgOjoKKyAgICogICBGVF9TVUJHTFlQSF9GTEFHX1NDQUxFIDo6CisgICAqICAgRlRfU1VCR0xZUEhfRkxBR19YWV9TQ0FMRSA6OgorICAgKiAgIEZUX1NVQkdMWVBIX0ZMQUdfMlgyIDo6CisgICAqICAgRlRfU1VCR0xZUEhfRkxBR19VU0VfTVlfTUVUUklDUyA6OgorICAgKgorICAgKi8KKyNkZWZpbmUgRlRfU1VCR0xZUEhfRkxBR19BUkdTX0FSRV9XT1JEUyAgICAgICAgICAxCisjZGVmaW5lIEZUX1NVQkdMWVBIX0ZMQUdfQVJHU19BUkVfWFlfVkFMVUVTICAgICAgMgorI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHX1JPVU5EX1hZX1RPX0dSSUQgICAgICAgIDQKKyNkZWZpbmUgRlRfU1VCR0xZUEhfRkxBR19TQ0FMRSAgICAgICAgICAgICAgICAgICA4CisjZGVmaW5lIEZUX1NVQkdMWVBIX0ZMQUdfWFlfU0NBTEUgICAgICAgICAgICAgMHg0MAorI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHXzJYMiAgICAgICAgICAgICAgICAgIDB4ODAKKyNkZWZpbmUgRlRfU1VCR0xZUEhfRkxBR19VU0VfTVlfTUVUUklDUyAgICAgIDB4MjAwCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuYzoKKyAgICogICBGVF9HZXRfU3ViR2x5cGhfSW5mbworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0cmlldmUgYSBkZXNjcmlwdGlvbiBvZiBhIGdpdmVuIHN1YmdseXBoLiAgT25seSB1c2UgaXQgaWYKKyAgICogICBgZ2x5cGgtPmZvcm1hdCcgaXMgQEZUX0dMWVBIX0ZPUk1BVF9DT01QT1NJVEU7IGFuIGVycm9yIGlzCisgICAqICAgcmV0dXJuZWQgb3RoZXJ3aXNlLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgZ2x5cGggOjoKKyAgICogICAgIFRoZSBzb3VyY2UgZ2x5cGggc2xvdC4KKyAgICoKKyAgICogICBzdWJfaW5kZXggOjoKKyAgICogICAgIFRoZSBpbmRleCBvZiB0aGUgc3ViZ2x5cGguICBNdXN0IGJlIGxlc3MgdGhhbgorICAgKiAgICAgYGdseXBoLT5udW1fc3ViZ2x5cGhzJy4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICBwX2luZGV4IDo6CisgICAqICAgICBUaGUgZ2x5cGggaW5kZXggb2YgdGhlIHN1YmdseXBoLgorICAgKgorICAgKiAgIHBfZmxhZ3MgOjoKKyAgICogICAgIFRoZSBzdWJnbHlwaCBmbGFncywgc2VlIEBGVF9TVUJHTFlQSF9GTEFHX1hYWC4KKyAgICoKKyAgICogICBwX2FyZzEgOjoKKyAgICogICAgIFRoZSBzdWJnbHlwaCdzIGZpcnN0IGFyZ3VtZW50IChpZiBhbnkpLgorICAgKgorICAgKiAgIHBfYXJnMiA6OgorICAgKiAgICAgVGhlIHN1YmdseXBoJ3Mgc2Vjb25kIGFyZ3VtZW50IChpZiBhbnkpLgorICAgKgorICAgKiAgIHBfdHJhbnNmb3JtIDo6CisgICAqICAgICBUaGUgc3ViZ2x5cGggdHJhbnNmb3JtYXRpb24gKGlmIGFueSkuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhlIHZhbHVlcyBvZiBgKnBfYXJnMScsIGAqcF9hcmcyJywgYW5kIGAqcF90cmFuc2Zvcm0nIG11c3QgYmUKKyAgICogICBpbnRlcnByZXRlZCBkZXBlbmRpbmcgb24gdGhlIGZsYWdzIHJldHVybmVkIGluIGAqcF9mbGFncycuICBTZWUgdGhlCisgICAqICAgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscy4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfU3ViR2x5cGhfSW5mbyggRlRfR2x5cGhTbG90ICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgc3ViX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICpwX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICpwX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICpwX2FyZzEsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgKnBfYXJnMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX01hdHJpeCAgICAqcF90cmFuc2Zvcm0gKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZTVFlQRV9YWFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgbGlzdCBvZiBiaXQgZmxhZ3MgdXNlZCBpbiB0aGUgYGZzVHlwZScgZmllbGQgb2YgdGhlIE9TLzIgdGFibGUgICAqLworICAvKiAgICBpbiBhIFRydWVUeXBlIG9yIE9wZW5UeXBlIGZvbnQgYW5kIHRoZSBgRlNUeXBlJyBlbnRyeSBpbiBhICAgICAgICAgKi8KKyAgLyogICAgUG9zdFNjcmlwdCBmb250LiAgVGhlc2UgYml0IGZsYWdzIGFyZSByZXR1cm5lZCBieSAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9HZXRfRlNUeXBlX0ZsYWdzOyB0aGV5IGluZm9ybSBjbGllbnQgYXBwbGljYXRpb25zIG9mIGVtYmVkZGluZyAqLworICAvKiAgICBhbmQgc3Vic2V0dGluZyByZXN0cmljdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGEgZm9udC4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlZSBodHRwOi8vd3d3LmFkb2JlLmNvbS9kZXZuZXQvYWNyb2JhdC9wZGZzL0ZvbnRQb2xpY2llcy5wZGYgZm9yICAqLworICAvKiAgICBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GU1RZUEVfSU5TVEFMTEFCTEVfRU1CRURESU5HIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBGb250cyB3aXRoIG5vIGZzVHlwZSBiaXQgc2V0IG1heSBiZSBlbWJlZGRlZCBhbmQgcGVybWFuZW50bHkgICAgICovCisgIC8qICAgICAgaW5zdGFsbGVkIG9uIHRoZSByZW1vdGUgc3lzdGVtIGJ5IGFuIGFwcGxpY2F0aW9uLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRlNUWVBFX1JFU1RSSUNURURfTElDRU5TRV9FTUJFRERJTkcgOjogICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgRm9udHMgdGhhdCBoYXZlIG9ubHkgdGhpcyBiaXQgc2V0IG11c3Qgbm90IGJlIG1vZGlmaWVkLCBlbWJlZGRlZCAqLworICAvKiAgICAgIG9yIGV4Y2hhbmdlZCBpbiBhbnkgbWFubmVyIHdpdGhvdXQgZmlyc3Qgb2J0YWluaW5nIHBlcm1pc3Npb24gb2YgKi8KKyAgLyogICAgICB0aGUgZm9udCBzb2Z0d2FyZSBjb3B5cmlnaHQgb3duZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GU1RZUEVfUFJFVklFV19BTkRfUFJJTlRfRU1CRURESU5HIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJZiB0aGlzIGJpdCBpcyBzZXQsIHRoZSBmb250IG1heSBiZSBlbWJlZGRlZCBhbmQgdGVtcG9yYXJpbHkgICAgICovCisgIC8qICAgICAgbG9hZGVkIG9uIHRoZSByZW1vdGUgc3lzdGVtLiAgRG9jdW1lbnRzIGNvbnRhaW5pbmcgUHJldmlldyAmICAgICAqLworICAvKiAgICAgIFByaW50IGZvbnRzIG11c3QgYmUgb3BlbmVkIGByZWFkLW9ubHknOyBubyBlZGl0cyBjYW4gYmUgYXBwbGllZCAgKi8KKyAgLyogICAgICB0byB0aGUgZG9jdW1lbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GU1RZUEVfRURJVEFCTEVfRU1CRURESU5HIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJZiB0aGlzIGJpdCBpcyBzZXQsIHRoZSBmb250IG1heSBiZSBlbWJlZGRlZCBidXQgbXVzdCBvbmx5IGJlICAgICovCisgIC8qICAgICAgaW5zdGFsbGVkIHRlbXBvcmFyaWx5IG9uIG90aGVyIHN5c3RlbXMuICBJbiBjb250cmFzdCB0byBQcmV2aWV3ICAqLworICAvKiAgICAgICYgUHJpbnQgZm9udHMsIGRvY3VtZW50cyBjb250YWluaW5nIGVkaXRhYmxlIGZvbnRzIG1heSBiZSBvcGVuZWQgKi8KKyAgLyogICAgICBmb3IgcmVhZGluZywgZWRpdGluZyBpcyBwZXJtaXR0ZWQsIGFuZCBjaGFuZ2VzIG1heSBiZSBzYXZlZC4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GU1RZUEVfTk9fU1VCU0VUVElORyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJZiB0aGlzIGJpdCBpcyBzZXQsIHRoZSBmb250IG1heSBub3QgYmUgc3Vic2V0dGVkIHByaW9yIHRvICAgICAgICovCisgIC8qICAgICAgZW1iZWRkaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRlNUWVBFX0JJVE1BUF9FTUJFRERJTkdfT05MWSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgSWYgdGhpcyBiaXQgaXMgc2V0LCBvbmx5IGJpdG1hcHMgY29udGFpbmVkIGluIHRoZSBmb250IG1heSBiZSAgICAqLworICAvKiAgICAgIGVtYmVkZGVkOyBubyBvdXRsaW5lIGRhdGEgbWF5IGJlIGVtYmVkZGVkLiAgSWYgdGhlcmUgYXJlIG5vICAgICAgKi8KKyAgLyogICAgICBiaXRtYXBzIGF2YWlsYWJsZSBpbiB0aGUgZm9udCwgdGhlbiB0aGUgZm9udCBpcyB1bmVtYmVkZGFibGUuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2hpbGUgdGhlIGZzVHlwZSBmbGFncyBjYW4gaW5kaWNhdGUgdGhhdCBhIGZvbnQgbWF5IGJlIGVtYmVkZGVkLCBhICovCisgIC8qICAgIGxpY2Vuc2Ugd2l0aCB0aGUgZm9udCB2ZW5kb3IgbWF5IGJlIHNlcGFyYXRlbHkgcmVxdWlyZWQgdG8gdXNlIHRoZSAqLworICAvKiAgICBmb250IGluIHRoaXMgd2F5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX0ZTVFlQRV9JTlNUQUxMQUJMRV9FTUJFRERJTkcgICAgICAgICAweDAwMDAKKyNkZWZpbmUgRlRfRlNUWVBFX1JFU1RSSUNURURfTElDRU5TRV9FTUJFRERJTkcgIDB4MDAwMgorI2RlZmluZSBGVF9GU1RZUEVfUFJFVklFV19BTkRfUFJJTlRfRU1CRURESU5HICAgMHgwMDA0CisjZGVmaW5lIEZUX0ZTVFlQRV9FRElUQUJMRV9FTUJFRERJTkcgICAgICAgICAgICAweDAwMDgKKyNkZWZpbmUgRlRfRlNUWVBFX05PX1NVQlNFVFRJTkcgICAgICAgICAgICAgICAgIDB4MDEwMAorI2RlZmluZSBGVF9GU1RZUEVfQklUTUFQX0VNQkVERElOR19PTkxZICAgICAgICAgMHgwMjAwCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfRlNUeXBlX0ZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gdGhlIGZzVHlwZSBmbGFncyBmb3IgYSBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZnNUeXBlIGZsYWdzLCBARlRfRlNUWVBFX1hYWC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2UgdGhpcyBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3RseSByZWFkaW5nIHRoZSBgZnNfdHlwZScgZmllbGQgKi8KKyAgLyogICAgaW4gdGhlIEBQU19Gb250SW5mb1JlYyBzdHJ1Y3R1cmUgd2hpY2ggaXMgb25seSBndWFyYW50ZWVkIHRvICAgICAgICovCisgIC8qICAgIHJldHVybiB0aGUgY29ycmVjdCByZXN1bHRzIGZvciBUeXBlfjEgZm9udHMuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNpbmNlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIDIuMy44ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9VU2hvcnQgKQorICBGVF9HZXRfRlNUeXBlX0ZsYWdzKCBGVF9GYWNlICBmYWNlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF92YXJpYW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHbHlwaCBWYXJpYW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgRnJlZVR5cGV+MiBpbnRlcmZhY2UgdG8gVW5pY29kZSBJZGVvZ3JhcGhpYyBWYXJpYXRpb24gICAgICAgICAgKi8KKyAgLyogICAgU2VxdWVuY2VzIChJVlMpLCB1c2luZyB0aGUgU0ZOVCBjbWFwIGZvcm1hdH4xNC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTWFueSBDSksgY2hhcmFjdGVycyBoYXZlIHZhcmlhbnQgZm9ybXMuICBUaGV5IGFyZSBhIHNvcnQgb2YgZ3JleSAgICovCisgIC8qICAgIGFyZWEgc29tZXdoZXJlIGJldHdlZW4gYmVpbmcgdG90YWxseSBpcnJlbGV2YW50IGFuZCBzZW1hbnRpY2FsbHkgICAqLworICAvKiAgICBkaXN0aW5jdDsgZm9yIHRoaXMgcmVhc29uLCB0aGUgVW5pY29kZSBjb25zb3J0aXVtIGRlY2lkZWQgdG8gICAgICAgKi8KKyAgLyogICAgaW50cm9kdWNlIElkZW9ncmFwaGljIFZhcmlhdGlvbiBTZXF1ZW5jZXMgKElWUyksIGNvbnNpc3Rpbmcgb2YgYSAgICovCisgIC8qICAgIFVuaWNvZGUgYmFzZSBjaGFyYWN0ZXIgYW5kIG9uZSBvZiAyNDAgdmFyaWFudCBzZWxlY3RvcnMgICAgICAgICAgICAqLworICAvKiAgICAoVStFMDEwMC1VK0UwMUVGKSwgaW5zdGVhZCBvZiBmdXJ0aGVyIGV4dGVuZGluZyB0aGUgYWxyZWFkeSBodWdlICAgKi8KKyAgLyogICAgY29kZSByYW5nZSBmb3IgQ0pLIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBJVlMgaXMgcmVnaXN0ZXJlZCBhbmQgdW5pcXVlOyBmb3IgZnVydGhlciBkZXRhaWxzIHBsZWFzZSByZWZlciAgKi8KKyAgLyogICAgdG8gVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM3LCB0aGUgSWRlb2dyYXBoaWMgVmFyaWF0aW9uICAgICAgICovCisgIC8qICAgIERhdGFiYXNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUbyBkYXRlIChOb3ZlbWJlciAyMDEyKSwgdGhlIGNoYXJhY3RlciB3aXRoIHRoZSBtb3N0IHZhcmlhbnRzIGlzICAgKi8KKyAgLyogICAgVSs5MDg5LCBoYXZpbmcgMzEgc3VjaCBJVlMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBZG9iZSBhbmQgTVMgZGVjaWRlZCB0byBzdXBwb3J0IElWUyB3aXRoIGEgbmV3IGNtYXAgc3VidGFibGUgICAgICAgKi8KKyAgLyogICAgKGZvcm1hdH4xNCkuICBJdCBpcyBhbiBvZGQgc3VidGFibGUgYmVjYXVzZSBpdCBpcyBub3QgYSBtYXBwaW5nIG9mICovCisgIC8qICAgIGlucHV0IGNvZGUgcG9pbnRzIHRvIGdseXBocywgYnV0IGNvbnRhaW5zIGxpc3RzIG9mIGFsbCB2YXJpYW50cyAgICAqLworICAvKiAgICBzdXBwb3J0ZWQgYnkgdGhlIGZvbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdmFyaWFudCBtYXkgYmUgZWl0aGVyIGBkZWZhdWx0JyBvciBgbm9uLWRlZmF1bHQnLiAgQSBkZWZhdWx0ICAgICAqLworICAvKiAgICB2YXJpYW50IGlzIHRoZSBvbmUgeW91IHdpbGwgZ2V0IGZvciB0aGF0IGNvZGUgcG9pbnQgaWYgeW91IGxvb2sgaXQgKi8KKyAgLyogICAgdXAgaW4gdGhlIHN0YW5kYXJkIFVuaWNvZGUgY21hcC4gIEEgbm9uLWRlZmF1bHQgdmFyaWFudCBpcyBhICAgICAgICovCisgIC8qICAgIGRpZmZlcmVudCBnbHlwaC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GYWNlX0dldENoYXJWYXJpYW50SW5kZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gdGhlIGdseXBoIGluZGV4IG9mIGEgZ2l2ZW4gY2hhcmFjdGVyIGNvZGUgYXMgbW9kaWZpZWQgYnkgICAgKi8KKyAgLyogICAgdGhlIHZhcmlhdGlvbiBzZWxlY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2hhcmNvZGUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGNoYXJhY3RlciBjb2RlIHBvaW50IGluIFVuaWNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmFyaWFudFNlbGVjdG9yIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIFVuaWNvZGUgY29kZSBwb2ludCBvZiB0aGUgdmFyaWF0aW9uIHNlbGVjdG9yLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBnbHlwaCBpbmRleC4gIDB+bWVhbnMgZWl0aGVyIGB1bmRlZmluZWQgY2hhcmFjdGVyIGNvZGUnLCBvciAgICAqLworICAvKiAgICBgdW5kZWZpbmVkIHNlbGVjdG9yIGNvZGUnLCBvciBgbm8gdmFyaWF0aW9uIHNlbGVjdG9yIGNtYXAgICAgICAgICAgKi8KKyAgLyogICAgc3VidGFibGUnLCBvciBgY3VycmVudCBDaGFyTWFwIGlzIG5vdCBVbmljb2RlJy4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgeW91IHVzZSBGcmVlVHlwZSB0byBtYW5pcHVsYXRlIHRoZSBjb250ZW50cyBvZiBmb250IGZpbGVzICAgICAgICovCisgIC8qICAgIGRpcmVjdGx5LCBiZSBhd2FyZSB0aGF0IHRoZSBnbHlwaCBpbmRleCByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uICAqLworICAvKiAgICBkb2Vzbid0IGFsd2F5cyBjb3JyZXNwb25kIHRvIHRoZSBpbnRlcm5hbCBpbmRpY2VzIHVzZWQgd2l0aGluICAgICAgKi8KKyAgLyogICAgdGhlIGZpbGUuICBUaGlzIGlzIGRvbmUgdG8gZW5zdXJlIHRoYXQgdmFsdWV+MCBhbHdheXMgY29ycmVzcG9uZHMgICovCisgIC8qICAgIHRvIHRoZSBgbWlzc2luZyBnbHlwaCcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IG1lYW5pbmdmdWwgaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgYSkgdGhlIGZvbnQgaGFzIGEgdmFyaWF0aW9uIHNlbGVjdG9yIGNtYXAgc3ViIHRhYmxlLCAgICAgICAgICAgICAqLworICAvKiAgICBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBiKSB0aGUgY3VycmVudCBjaGFybWFwIGhhcyBhIFVuaWNvZGUgZW5jb2RpbmcuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2luY2U+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgMi4zLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX1VJbnQgKQorICBGVF9GYWNlX0dldENoYXJWYXJpYW50SW5kZXgoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICBjaGFyY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgdmFyaWFudFNlbGVjdG9yICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GYWNlX0dldENoYXJWYXJpYW50SXNEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDaGVjayB3aGV0aGVyIHRoaXMgdmFyaWFudCBvZiB0aGlzIFVuaWNvZGUgY2hhcmFjdGVyIGlzIHRoZSBvbmUgdG8gKi8KKyAgLyogICAgYmUgZm91bmQgaW4gdGhlIGBjbWFwJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2hhcmNvZGUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGNoYXJhY3RlciBjb2RlcG9pbnQgaW4gVW5pY29kZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmFyaWFudFNlbGVjdG9yIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIFVuaWNvZGUgY29kZXBvaW50IG9mIHRoZSB2YXJpYXRpb24gc2VsZWN0b3IuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIDF+aWYgZm91bmQgaW4gdGhlIHN0YW5kYXJkIChVbmljb2RlKSBjbWFwLCAwfmlmIGZvdW5kIGluIHRoZSAgICAgICAqLworICAvKiAgICB2YXJpYXRpb24gc2VsZWN0b3IgY21hcCwgb3IgLTEgaWYgaXQgaXMgbm90IGEgdmFyaWFudC4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgbWVhbmluZ2Z1bCBpZiB0aGUgZm9udCBoYXMgYSB2YXJpYXRpb24gICAgICAgKi8KKyAgLyogICAgc2VsZWN0b3IgY21hcCBzdWJ0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2luY2U+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgMi4zLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0ludCApCisgIEZUX0ZhY2VfR2V0Q2hhclZhcmlhbnRJc0RlZmF1bHQoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgY2hhcmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICB2YXJpYW50U2VsZWN0b3IgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZhY2VfR2V0VmFyaWFudFNlbGVjdG9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiBhIHplcm8tdGVybWluYXRlZCBsaXN0IG9mIFVuaWNvZGUgdmFyaWFudCBzZWxlY3RvcnMgZm91bmQgICAqLworICAvKiAgICBpbiB0aGUgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIHNlbGVjdG9yIGNvZGUgcG9pbnRzLCBvciBOVUxMIGlmIHRoZXJlIGlzICovCisgIC8qICAgIG5vIHZhbGlkIHZhcmlhbnQgc2VsZWN0b3IgY21hcCBzdWJ0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBsYXN0IGl0ZW0gaW4gdGhlIGFycmF5IGlzfjA7IHRoZSBhcnJheSBpcyBvd25lZCBieSB0aGUgICAgICAgICAqLworICAvKiAgICBARlRfRmFjZSBvYmplY3QgYnV0IGNhbiBiZSBvdmVyd3JpdHRlbiBvciByZWxlYXNlZCBvbiB0aGUgbmV4dCAgICAgKi8KKyAgLyogICAgY2FsbCB0byBhIEZyZWVUeXBlIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2luY2U+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgMi4zLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX1VJbnQzMiogKQorICBGVF9GYWNlX0dldFZhcmlhbnRTZWxlY3RvcnMoIEZUX0ZhY2UgIGZhY2UgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZhY2VfR2V0VmFyaWFudHNPZkNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiBhIHplcm8tdGVybWluYXRlZCBsaXN0IG9mIFVuaWNvZGUgdmFyaWFudCBzZWxlY3RvcnMgZm91bmQgICAqLworICAvKiAgICBmb3IgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFyY29kZSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgY2hhcmFjdGVyIGNvZGVwb2ludCBpbiBVbmljb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIHZhcmlhbnQgc2VsZWN0b3IgY29kZSBwb2ludHMgd2hpY2ggYXJlICAgICovCisgIC8qICAgIGFjdGl2ZSBmb3IgdGhlIGdpdmVuIGNoYXJhY3Rlciwgb3IgTlVMTCBpZiB0aGUgY29ycmVzcG9uZGluZyBsaXN0ICAqLworICAvKiAgICBpcyBlbXB0eS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgbGFzdCBpdGVtIGluIHRoZSBhcnJheSBpc34wOyB0aGUgYXJyYXkgaXMgb3duZWQgYnkgdGhlICAgICAgICAgKi8KKyAgLyogICAgQEZUX0ZhY2Ugb2JqZWN0IGJ1dCBjYW4gYmUgb3ZlcndyaXR0ZW4gb3IgcmVsZWFzZWQgb24gdGhlIG5leHQgICAgICovCisgIC8qICAgIGNhbGwgdG8gYSBGcmVlVHlwZSBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNpbmNlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIDIuMy42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9VSW50MzIqICkKKyAgRlRfRmFjZV9HZXRWYXJpYW50c09mQ2hhciggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICBjaGFyY29kZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmFjZV9HZXRDaGFyc09mVmFyaWFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0dXJuIGEgemVyby10ZXJtaW5hdGVkIGxpc3Qgb2YgVW5pY29kZSBjaGFyYWN0ZXIgY29kZXMgZm91bmQgZm9yICovCisgIC8qICAgIHRoZSBzcGVjaWZpZWQgdmFyaWFudCBzZWxlY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZhcmlhbnRTZWxlY3RvciA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSB2YXJpYW50IHNlbGVjdG9yIGNvZGUgcG9pbnQgaW4gVW5pY29kZS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGxpc3Qgb2YgYWxsIHRoZSBjb2RlIHBvaW50cyB3aGljaCBhcmUgc3BlY2lmaWVkIGJ5IHRoaXMgc2VsZWN0b3IgKi8KKyAgLyogICAgKGJvdGggZGVmYXVsdCBhbmQgbm9uLWRlZmF1bHQgY29kZXMgYXJlIHJldHVybmVkKSBvciBOVUxMIGlmIHRoZXJlICovCisgIC8qICAgIGlzIG5vIHZhbGlkIGNtYXAgb3IgdGhlIHZhcmlhbnQgc2VsZWN0b3IgaXMgaW52YWxpZC4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBsYXN0IGl0ZW0gaW4gdGhlIGFycmF5IGlzfjA7IHRoZSBhcnJheSBpcyBvd25lZCBieSB0aGUgICAgICAgICAqLworICAvKiAgICBARlRfRmFjZSBvYmplY3QgYnV0IGNhbiBiZSBvdmVyd3JpdHRlbiBvciByZWxlYXNlZCBvbiB0aGUgbmV4dCAgICAgKi8KKyAgLyogICAgY2FsbCB0byBhIEZyZWVUeXBlIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2luY2U+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgMi4zLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX1VJbnQzMiogKQorICBGVF9GYWNlX0dldENoYXJzT2ZWYXJpYW50KCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHZhcmlhbnRTZWxlY3RvciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29tcHV0YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29tcHV0YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ3J1bmNoaW5nIGZpeGVkIG51bWJlcnMgYW5kIHZlY3RvcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHZhcmlvdXMgZnVuY3Rpb25zIHVzZWQgdG8gcGVyZm9ybSAgICAgICAgICAgICovCisgIC8qICAgIGNvbXB1dGF0aW9ucyBvbiAxNi4xNiBmaXhlZC1mbG9hdCBudW1iZXJzIG9yIDJkIHZlY3RvcnMuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE9yZGVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX011bERpdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NdWxGaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRGl2Rml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JvdW5kRml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9DZWlsRml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmxvb3JGaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NYXRyaXhfTXVsdGlwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTWF0cml4X0ludmVydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX011bERpdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdmVyeSBzaW1wbGUgZnVuY3Rpb24gdXNlZCB0byBwZXJmb3JtIHRoZSBjb21wdXRhdGlvbiBgKGEqYikvYycgICAqLworICAvKiAgICB3aXRoIG1heGltdW0gYWNjdXJhY3kgKGl0IHVzZXMgYSA2NC1iaXQgaW50ZXJtZWRpYXRlIGludGVnZXIgICAgICAgKi8KKyAgLyogICAgd2hlbmV2ZXIgbmVjZXNzYXJ5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGlzbid0IG5lY2Vzc2FyaWx5IGFzIGZhc3QgYXMgc29tZSBwcm9jZXNzb3Igc3BlY2lmaWMgKi8KKyAgLyogICAgb3BlcmF0aW9ucywgYnV0IGlzIGF0IGxlYXN0IGNvbXBsZXRlbHkgcG9ydGFibGUuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYSA6OiBUaGUgZmlyc3QgbXVsdGlwbGllci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGIgOjogVGhlIHNlY29uZCBtdWx0aXBsaWVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjIDo6IFRoZSBkaXZpc29yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVzdWx0IG9mIGAoYSpiKS9jJy4gIFRoaXMgZnVuY3Rpb24gbmV2ZXIgdHJhcHMgd2hlbiB0cnlpbmcgdG8gKi8KKyAgLyogICAgZGl2aWRlIGJ5IHplcm87IGl0IHNpbXBseSByZXR1cm5zIGBNYXhJbnQnIG9yIGBNaW5JbnQnIGRlcGVuZGluZyAgICovCisgIC8qICAgIG9uIHRoZSBzaWducyBvZiBgYScgYW5kIGBiJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9Mb25nICkKKyAgRlRfTXVsRGl2KCBGVF9Mb25nICBhLAorICAgICAgICAgICAgIEZUX0xvbmcgIGIsCisgICAgICAgICAgICAgRlRfTG9uZyAgYyApOworCisKKyAgLyogKi8KKworICAvKiBUaGUgZm9sbG93aW5nICNpZiAwIC4uLiAjZW5kaWYgaXMgZm9yIHRoZSBkb2N1bWVudGF0aW9uIGZvcm1hdHRlciwgKi8KKyAgLyogaGlkaW5nIHRoZSBpbnRlcm5hbCBgRlRfTVVMRklYX0lOTElORUQnIG1hY3JvLiAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZiAwCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX011bEZpeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdmVyeSBzaW1wbGUgZnVuY3Rpb24gdXNlZCB0byBwZXJmb3JtIHRoZSBjb21wdXRhdGlvbiAgICAgICAgICAgICAqLworICAvKiAgICBgKGEqYikvMHgxMDAwMCcgd2l0aCBtYXhpbXVtIGFjY3VyYWN5LiAgTW9zdCBvZiB0aGUgdGltZSB0aGlzIGlzICAgKi8KKyAgLyogICAgdXNlZCB0byBtdWx0aXBseSBhIGdpdmVuIHZhbHVlIGJ5IGEgMTYuMTYgZml4ZWQtcG9pbnQgZmFjdG9yLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYSA6OiBUaGUgZmlyc3QgbXVsdGlwbGllci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGIgOjogVGhlIHNlY29uZCBtdWx0aXBsaWVyLiAgVXNlIGEgMTYuMTYgZmFjdG9yIGhlcmUgd2hlbmV2ZXIgICAgICAqLworICAvKiAgICAgICAgIHBvc3NpYmxlIChzZWUgbm90ZSBiZWxvdykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVzdWx0IG9mIGAoYSpiKS8weDEwMDAwJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIG9wdGltaXplZCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIGFic29sdXRlICAgKi8KKyAgLyogICAgdmFsdWUgb2YgYGEnIGlzIGxlc3MgdGhhbiAyMDQ4LCBhbmQgYGInIGlzIGEgMTYuMTYgc2NhbGluZyBmYWN0b3IuICovCisgIC8qICAgIEFzIHRoaXMgaGFwcGVucyBtYWlubHkgd2hlbiBzY2FsaW5nIGZyb20gbm90aW9uYWwgdW5pdHMgdG8gICAgICAgICAqLworICAvKiAgICBmcmFjdGlvbmFsIHBpeGVscyBpbiBGcmVlVHlwZSwgaXQgcmVzdWx0ZWQgaW4gbm90aWNlYWJsZSBzcGVlZCAgICAgKi8KKyAgLyogICAgaW1wcm92ZW1lbnRzIGJldHdlZW4gdmVyc2lvbnMgMi54IGFuZCAxLnguICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBcyBhIGNvbmNsdXNpb24sIGFsd2F5cyB0cnkgdG8gcGxhY2UgYSAxNi4xNiBmYWN0b3IgYXMgdGhlICAgICAgICAgKi8KKyAgLyogICAgX3NlY29uZF8gYXJndW1lbnQgb2YgdGhpcyBmdW5jdGlvbjsgdGhpcyBjYW4gbWFrZSBhIGdyZWF0ICAgICAgICAgICovCisgIC8qICAgIGRpZmZlcmVuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9Mb25nICkKKyAgRlRfTXVsRml4KCBGVF9Mb25nICBhLAorICAgICAgICAgICAgIEZUX0xvbmcgIGIgKTsKKworICAvKiAqLworI2VuZGlmCisKKyNpZmRlZiBGVF9NVUxGSVhfSU5MSU5FRAorI2RlZmluZSBGUERGQVBJX0ZUX011bEZpeCggYSwgYiApICBGVF9NVUxGSVhfSU5MSU5FRCggYSwgYiApCisjZWxzZQorICBGVF9FWFBPUlQoIEZUX0xvbmcgKQorICBGVF9NdWxGaXgoIEZUX0xvbmcgIGEsCisgICAgICAgICAgICAgRlRfTG9uZyAgYiApOworI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9EaXZGaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHZlcnkgc2ltcGxlIGZ1bmN0aW9uIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29tcHV0YXRpb24gICAgICAgICAgICAgKi8KKyAgLyogICAgYChhKjB4MTAwMDApL2InIHdpdGggbWF4aW11bSBhY2N1cmFjeS4gIE1vc3Qgb2YgdGhlIHRpbWUsIHRoaXMgaXMgICovCisgIC8qICAgIHVzZWQgdG8gZGl2aWRlIGEgZ2l2ZW4gdmFsdWUgYnkgYSAxNi4xNiBmaXhlZC1wb2ludCBmYWN0b3IuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGEgOjogVGhlIGZpcnN0IG11bHRpcGxpZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiIDo6IFRoZSBzZWNvbmQgbXVsdGlwbGllci4gIFVzZSBhIDE2LjE2IGZhY3RvciBoZXJlIHdoZW5ldmVyICAgICAgKi8KKyAgLyogICAgICAgICBwb3NzaWJsZSAoc2VlIG5vdGUgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlc3VsdCBvZiBgKGEqMHgxMDAwMCkvYicuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG9wdGltaXphdGlvbiBmb3IgRlRfRGl2Rml4KCkgaXMgc2ltcGxlOiBJZiAoYX48PH4xNikgZml0cyBpbiAgICovCisgIC8qICAgIDMyfmJpdHMsIHRoZW4gdGhlIGRpdmlzaW9uIGlzIGNvbXB1dGVkIGRpcmVjdGx5LiAgT3RoZXJ3aXNlLCB3ZSAgICAqLworICAvKiAgICB1c2UgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIEBGVF9NdWxEaXYuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfTG9uZyApCisgIEZUX0RpdkZpeCggRlRfTG9uZyAgYSwKKyAgICAgICAgICAgICBGVF9Mb25nICBiICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Sb3VuZEZpeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHZlcnkgc2ltcGxlIGZ1bmN0aW9uIHVzZWQgdG8gcm91bmQgYSAxNi4xNiBmaXhlZCBudW1iZXIuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhIDo6IFRoZSBudW1iZXIgdG8gYmUgcm91bmRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVzdWx0IG9mIGAoYSArIDB4ODAwMCkgJiAtMHgxMDAwMCcuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRml4ZWQgKQorICBGVF9Sb3VuZEZpeCggRlRfRml4ZWQgIGEgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0NlaWxGaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdmVyeSBzaW1wbGUgZnVuY3Rpb24gdXNlZCB0byBjb21wdXRlIHRoZSBjZWlsaW5nIGZ1bmN0aW9uIG9mIGEgICAqLworICAvKiAgICAxNi4xNiBmaXhlZCBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhIDo6IFRoZSBudW1iZXIgZm9yIHdoaWNoIHRoZSBjZWlsaW5nIGZ1bmN0aW9uIGlzIHRvIGJlIGNvbXB1dGVkLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVzdWx0IG9mIGAoYSArIDB4MTAwMDAgLSAxKSAmIC0weDEwMDAwJy4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRml4ZWQgKQorICBGVF9DZWlsRml4KCBGVF9GaXhlZCAgYSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmxvb3JGaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB2ZXJ5IHNpbXBsZSBmdW5jdGlvbiB1c2VkIHRvIGNvbXB1dGUgdGhlIGZsb29yIGZ1bmN0aW9uIG9mIGEgICAgICovCisgIC8qICAgIDE2LjE2IGZpeGVkIG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGEgOjogVGhlIG51bWJlciBmb3Igd2hpY2ggdGhlIGZsb29yIGZ1bmN0aW9uIGlzIHRvIGJlIGNvbXB1dGVkLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSByZXN1bHQgb2YgYGEgJiAtMHgxMDAwMCcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9GaXhlZCApCisgIEZUX0Zsb29yRml4KCBGVF9GaXhlZCAgYSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVmVjdG9yX1RyYW5zZm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVHJhbnNmb3JtIGEgc2luZ2xlIHZlY3RvciB0aHJvdWdoIGEgMngyIG1hdHJpeC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVjdG9yIDo6IFRoZSB0YXJnZXQgdmVjdG9yIHRvIHRyYW5zZm9ybS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF0cml4IDo6IEEgcG9pbnRlciB0byB0aGUgc291cmNlIDJ4MiBtYXRyaXguICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlc3VsdCBpcyB1bmRlZmluZWQgaWYgZWl0aGVyIGB2ZWN0b3InIG9yIGBtYXRyaXgnIGlzIGludmFsaWQuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9WZWN0b3JfVHJhbnNmb3JtKCBGVF9WZWN0b3IqICAgICAgICB2ZWMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX01hdHJpeCogIG1hdHJpeCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnVuY3Rpb25zIGFuZCBtYWNyb3MgcmVsYXRlZCB0byBGcmVlVHlwZSB2ZXJzaW9ucy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IHRob3NlIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIGFyZSBvZiBsaW1pdGVkIHVzZSBiZWNhdXNlICAgICovCisgIC8qICAgIGV2ZW4gYSBuZXcgcmVsZWFzZSBvZiBGcmVlVHlwZSB3aXRoIG9ubHkgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzICAgICAqLworICAvKiAgICBpbmNyZWFzZXMgdGhlIHZlcnNpb24gbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgRlJFRVRZUEVfWFhYCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGVzZSB0aHJlZSBtYWNyb3MgaWRlbnRpZnkgdGhlIEZyZWVUeXBlIHNvdXJjZSBjb2RlIHZlcnNpb24uCisgICAqICAgVXNlIEBGVF9MaWJyYXJ5X1ZlcnNpb24gdG8gYWNjZXNzIHRoZW0gYXQgcnVudGltZS4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBGUkVFVFlQRV9NQUpPUiA6OiBUaGUgbWFqb3IgdmVyc2lvbiBudW1iZXIuCisgICAqICAgRlJFRVRZUEVfTUlOT1IgOjogVGhlIG1pbm9yIHZlcnNpb24gbnVtYmVyLgorICAgKiAgIEZSRUVUWVBFX1BBVENIIDo6IFRoZSBwYXRjaCBsZXZlbC4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhlIHZlcnNpb24gbnVtYmVyIG9mIEZyZWVUeXBlIGlmIGJ1aWx0IGFzIGEgZHluYW1pYyBsaW5rIGxpYnJhcnkKKyAgICogICB3aXRoIHRoZSBgbGlidG9vbCcgcGFja2FnZSBpcyBfbm90XyBjb250cm9sbGVkIGJ5IHRoZXNlIHRocmVlCisgICAqICAgbWFjcm9zLgorICAgKgorICAgKi8KKyNkZWZpbmUgRlJFRVRZUEVfTUFKT1IgIDIKKyNkZWZpbmUgRlJFRVRZUEVfTUlOT1IgIDUKKyNkZWZpbmUgRlJFRVRZUEVfUEFUQ0ggIDAKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpYnJhcnlfVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgRnJlZVR5cGUgbGlicmFyeSBiZWluZyB1c2VkLiAgVGhpcyBpcyAgICAqLworICAvKiAgICB1c2VmdWwgd2hlbiBkeW5hbWljYWxseSBsaW5raW5nIHRvIHRoZSBsaWJyYXJ5LCBzaW5jZSBvbmUgY2Fubm90ICAgKi8KKyAgLyogICAgdXNlIHRoZSBtYWNyb3MgQEZSRUVUWVBFX01BSk9SLCBARlJFRVRZUEVfTUlOT1IsIGFuZCAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGUkVFVFlQRV9QQVRDSC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogQSBzb3VyY2UgbGlicmFyeSBoYW5kbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFtYWpvciAgOjogVGhlIG1ham9yIHZlcnNpb24gbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYW1pbm9yICA6OiBUaGUgbWlub3IgdmVyc2lvbiBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhcGF0Y2ggIDo6IFRoZSBwYXRjaCB2ZXJzaW9uIG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVhc29uIHdoeSB0aGlzIGZ1bmN0aW9uIHRha2VzIGEgYGxpYnJhcnknIGFyZ3VtZW50IGlzIGJlY2F1c2UgKi8KKyAgLyogICAgY2VydGFpbiBwcm9ncmFtcyBpbXBsZW1lbnQgbGlicmFyeSBpbml0aWFsaXphdGlvbiBpbiBhIGN1c3RvbSB3YXkgICovCisgIC8qICAgIHRoYXQgZG9lc24ndCB1c2UgQEZUX0luaXRfRnJlZVR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW4gc3VjaCBjYXNlcywgdGhlIGxpYnJhcnkgdmVyc2lvbiBtaWdodCBub3QgYmUgYXZhaWxhYmxlIGJlZm9yZSAgICovCisgIC8qICAgIHRoZSBsaWJyYXJ5IG9iamVjdCBoYXMgYmVlbiBjcmVhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfTGlicmFyeV9WZXJzaW9uKCBGVF9MaWJyYXJ5ICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAqYW1ham9yLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICphbWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgKmFwYXRjaCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmFjZV9DaGVja1RydWVUeXBlUGF0ZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUGFyc2UgYWxsIGJ5dGVjb2RlIGluc3RydWN0aW9ucyBvZiBhIFRydWVUeXBlIGZvbnQgZmlsZSB0byBjaGVjayAgICovCisgIC8qICAgIHdoZXRoZXIgYW55IG9mIHRoZSBwYXRlbnRlZCBvcGNvZGVzIGFyZSB1c2VkLiAgVGhpcyBpcyBvbmx5IHVzZWZ1bCAqLworICAvKiAgICBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSB0aGUgdW5wYXRlbnRlZCBoaW50ZXIgd2l0aCAgICAgICAgICAgKi8KKyAgLyogICAgZm9udHMgdGhhdCBkbyAqbm90KiB1c2UgdGhlc2Ugb3Bjb2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgKmFsbCogZ2x5cGggaW5zdHJ1Y3Rpb25zIGluIHRoZSAgICAgKi8KKyAgLyogICAgZm9udCBmaWxlLCB3aGljaCBtYXkgYmUgc2xvdy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiBBIGZhY2UgaGFuZGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgMX5pZiB0aGlzIGlzIGEgVHJ1ZVR5cGUgZm9udCB0aGF0IHVzZXMgb25lIG9mIHRoZSBwYXRlbnRlZCAgICAgICAgICovCisgIC8qICAgIG9wY29kZXMsIDB+b3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNpbmNlIE1heSAyMDEwLCBUcnVlVHlwZSBoaW50aW5nIGlzIG5vIGxvbmdlciBwYXRlbnRlZC4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNpbmNlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIDIuMy41ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9Cb29sICkKKyAgRlRfRmFjZV9DaGVja1RydWVUeXBlUGF0ZW50cyggRlRfRmFjZSAgZmFjZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRmFjZV9TZXRVbnBhdGVudGVkSGludGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRW5hYmxlIG9yIGRpc2FibGUgdGhlIHVucGF0ZW50ZWQgaGludGVyIGZvciBhIGdpdmVuIGZhY2UuICAgICAgICAgICovCisgIC8qICAgIE9ubHkgZW5hYmxlIGl0IGlmIHlvdSBoYXZlIGRldGVybWluZWQgdGhhdCB0aGUgZmFjZSBkb2Vzbid0ICAgICAgICAqLworICAvKiAgICB1c2UgYW55IHBhdGVudGVkIG9wY29kZXMgKHNlZSBARlRfRmFjZV9DaGVja1RydWVUeXBlUGF0ZW50cykuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICA6OiBBIGZhY2UgaGFuZGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZhbHVlIDo6IE5ldyBib29sZWFuIHNldHRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBvbGQgc2V0dGluZyB2YWx1ZS4gIFRoaXMgd2lsbCBhbHdheXMgYmUgZmFsc2UgaWYgdGhpcyBpcyBub3QgICAqLworICAvKiAgICBhbiBTRk5UIGZvbnQsIG9yIGlmIHRoZSB1bnBhdGVudGVkIGhpbnRlciBpcyBub3QgY29tcGlsZWQgaW4gdGhpcyAgKi8KKyAgLyogICAgaW5zdGFuY2Ugb2YgdGhlIGxpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2luY2UgTWF5IDIwMTAsIFRydWVUeXBlIGhpbnRpbmcgaXMgbm8gbG9uZ2VyIHBhdGVudGVkLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2luY2U+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgMi4zLjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Jvb2wgKQorICBGVF9GYWNlX1NldFVucGF0ZW50ZWRIaW50aW5nKCBGVF9GYWNlICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICB2YWx1ZSApOworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GUkVFVFlQRV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0YWR2YW5jLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGFkdmFuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNjNiYTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGFkdmFuYy5oCkBAIC0wLDAgKzEsMTgyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGFkdmFuYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgUXVpY2sgY29tcHV0YXRpb24gb2YgYWR2YW5jZSB3aWR0aHMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDgsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVEFEVkFOQ19IX18KKyNkZWZpbmUgX19GVEFEVkFOQ19IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc2VjdGlvbjoKKyAgICogICBxdWlja19hZHZhbmNlCisgICAqCisgICAqIEB0aXRsZToKKyAgICogICBRdWljayByZXRyaWV2YWwgb2YgYWR2YW5jZSB2YWx1ZXMKKyAgICoKKyAgICogQGFic3RyYWN0OgorICAgKiAgIFJldHJpZXZlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGFkdmFuY2UgdmFsdWVzIHdpdGhvdXQgcHJvY2Vzc2luZworICAgKiAgIGdseXBoIG91dGxpbmVzLCBpZiBwb3NzaWJsZS4KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBmdW5jdGlvbnMgdG8gcXVpY2tseSBleHRyYWN0IGFkdmFuY2UgdmFsdWVzCisgICAqICAgd2l0aG91dCBoYW5kbGluZyBnbHlwaCBvdXRsaW5lcywgaWYgcG9zc2libGUuCisgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Q29uc3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQURWQU5DRV9GTEFHX0ZBU1RfT05MWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBiaXQtZmxhZyB0byBiZSBPUi1lZCB3aXRoIHRoZSBgZmxhZ3MnIHBhcmFtZXRlciBvZiB0aGUgICAgICAgICAgICovCisgIC8qICAgIEBGVF9HZXRfQWR2YW5jZSBhbmQgQEZUX0dldF9BZHZhbmNlcyBmdW5jdGlvbnMuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgc2V0LCBpdCBpbmRpY2F0ZXMgdGhhdCB5b3Ugd2FudCB0aGVzZSBmdW5jdGlvbnMgdG8gZmFpbCBpZiB0aGUgICovCisgIC8qICAgIGNvcnJlc3BvbmRpbmcgaGludGluZyBtb2RlIG9yIGZvbnQgZHJpdmVyIGRvZXNuJ3QgYWxsb3cgZm9yIHZlcnkgICAqLworICAvKiAgICBxdWljayBhZHZhbmNlIGNvbXB1dGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFR5cGljYWxseSwgZ2x5cGhzIHdoaWNoIGFyZSBlaXRoZXIgdW5zY2FsZWQsIHVuaGludGVkLCBiaXRtYXBwZWQsICAqLworICAvKiAgICBvciBsaWdodC1oaW50ZWQgY2FuIGhhdmUgdGhlaXIgYWR2YW5jZSB3aWR0aCBjb21wdXRlZCB2ZXJ5ICAgICAgICAgKi8KKyAgLyogICAgcXVpY2tseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3JtYWwgYW5kIGJ5dGVjb2RlIGhpbnRlZCBtb2Rlcywgd2hpY2ggcmVxdWlyZSBsb2FkaW5nLCBzY2FsaW5nLCAgKi8KKyAgLyogICAgYW5kIGhpbnRpbmcgb2YgdGhlIGdseXBoIG91dGxpbmUsIGFyZSBleHRyZW1lbHkgc2xvdyBieSAgICAgICAgICAgICovCisgIC8qICAgIGNvbXBhcmlzb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfQURWQU5DRV9GTEFHX0ZBU1RfT05MWSAgMHgyMDAwMDAwMFVMCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfQWR2YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXRyaWV2ZSB0aGUgYWR2YW5jZSB2YWx1ZSBvZiBhIGdpdmVuIGdseXBoIG91dGxpbmUgaW4gYW4gICAgICAgICAgKi8KKyAgLyogICAgQEZUX0ZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICA6OiBUaGUgc291cmNlIEBGVF9GYWNlIGhhbmRsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnaW5kZXggICAgIDo6IFRoZSBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRfZmxhZ3MgOjogQSBzZXQgb2YgYml0IGZsYWdzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCB3aGVuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGNhbGxpbmcgQEZUX0xvYWRfR2x5cGgsIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQga2luZCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBvZiBhZHZhbmNlcyB5b3UgbmVlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYWR2YW5jZSA6OiBUaGUgYWR2YW5jZSB2YWx1ZS4gIElmIHNjYWxpbmcgaXMgcGVyZm9ybWVkIChiYXNlZCBvbiAgKi8KKyAgLyogICAgICAgICAgICAgICAgdGhlIHZhbHVlIG9mIGBsb2FkX2ZsYWdzJyksIHRoZSBhZHZhbmNlIHZhbHVlIGlzIGluICAgICovCisgIC8qICAgICAgICAgICAgICAgIDE2LjE2IGZvcm1hdC4gIE90aGVyd2lzZSwgaXQgaXMgaW4gZm9udCB1bml0cy4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgSWYgQEZUX0xPQURfVkVSVElDQUxfTEFZT1VUIGlzIHNldCwgdGhpcyBpcyB0aGUgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIHZlcnRpY2FsIGFkdmFuY2UgY29ycmVzcG9uZGluZyB0byBhIHZlcnRpY2FsIGxheW91dC4gICAqLworICAvKiAgICAgICAgICAgICAgICBPdGhlcndpc2UsIGl0IGlzIHRoZSBob3Jpem9udGFsIGFkdmFuY2UgaW4gYSAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgaG9yaXpvbnRhbCBsYXlvdXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBtYXkgZmFpbCBpZiB5b3UgdXNlIEBGVF9BRFZBTkNFX0ZMQUdfRkFTVF9PTkxZIGFuZCAgICovCisgIC8qICAgIGlmIHRoZSBjb3JyZXNwb25kaW5nIGZvbnQgYmFja2VuZCBkb2Vzbid0IGhhdmUgYSBxdWljayB3YXkgdG8gICAgICAqLworICAvKiAgICByZXRyaWV2ZSB0aGUgYWR2YW5jZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2NhbGVkIGFkdmFuY2UgaXMgcmV0dXJuZWQgaW4gMTYuMTYgZm9ybWF0IGJ1dCBpc24ndCB0cmFuc2Zvcm1lZCAqLworICAvKiAgICBieSB0aGUgYWZmaW5lIHRyYW5zZm9ybWF0aW9uIHNwZWNpZmllZCBieSBARlRfU2V0X1RyYW5zZm9ybS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfQWR2YW5jZSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBnaW5kZXgsCisgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgIGxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgKnBhZHZhbmNlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfQWR2YW5jZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXRyaWV2ZSB0aGUgYWR2YW5jZSB2YWx1ZXMgb2Ygc2V2ZXJhbCBnbHlwaCBvdXRsaW5lcyBpbiBhbiAgICAgICAgKi8KKyAgLyogICAgQEZUX0ZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgOjogVGhlIHNvdXJjZSBARlRfRmFjZSBoYW5kbGUuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdGFydCAgICAgICA6OiBUaGUgZmlyc3QgZ2x5cGggaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvdW50ICAgICAgIDo6IFRoZSBudW1iZXIgb2YgYWR2YW5jZSB2YWx1ZXMgeW91IHdhbnQgdG8gcmV0cmlldmUuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZF9mbGFncyAgOjogQSBzZXQgb2YgYml0IGZsYWdzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCB3aGVuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGNhbGxpbmcgQEZUX0xvYWRfR2x5cGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhZHZhbmNlIDo6IFRoZSBhZHZhbmNlIHZhbHVlcy4gIFRoaXMgYXJyYXksIHRvIGJlIHByb3ZpZGVkIGJ5IHRoZSAqLworICAvKiAgICAgICAgICAgICAgICBjYWxsZXIsIG11c3QgY29udGFpbiBhdCBsZWFzdCBgY291bnQnIGVsZW1lbnRzLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIElmIHNjYWxpbmcgaXMgcGVyZm9ybWVkIChiYXNlZCBvbiB0aGUgdmFsdWUgb2YgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICBgbG9hZF9mbGFncycpLCB0aGUgYWR2YW5jZSB2YWx1ZXMgYXJlIGluIDE2LjE2IGZvcm1hdC4gKi8KKyAgLyogICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCB0aGV5IGFyZSBpbiBmb250IHVuaXRzLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICBJZiBARlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgaXMgc2V0LCB0aGVzZSBhcmUgdGhlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgdmVydGljYWwgYWR2YW5jZXMgY29ycmVzcG9uZGluZyB0byBhIHZlcnRpY2FsIGxheW91dC4gICovCisgIC8qICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgdGhleSBhcmUgdGhlIGhvcml6b250YWwgYWR2YW5jZXMgaW4gYSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICBob3Jpem9udGFsIGxheW91dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIG1heSBmYWlsIGlmIHlvdSB1c2UgQEZUX0FEVkFOQ0VfRkxBR19GQVNUX09OTFkgYW5kICAgKi8KKyAgLyogICAgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZm9udCBiYWNrZW5kIGRvZXNuJ3QgaGF2ZSBhIHF1aWNrIHdheSB0byAgICAgICovCisgIC8qICAgIHJldHJpZXZlIHRoZSBhZHZhbmNlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2NhbGVkIGFkdmFuY2VzIGFyZSByZXR1cm5lZCBpbiAxNi4xNiBmb3JtYXQgYnV0IGFyZW4ndCAgICAgICAgICAgICovCisgIC8qICAgIHRyYW5zZm9ybWVkIGJ5IHRoZSBhZmZpbmUgdHJhbnNmb3JtYXRpb24gc3BlY2lmaWVkIGJ5ICAgICAgICAgICAgICAqLworICAvKiAgICBARlRfU2V0X1RyYW5zZm9ybS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfQWR2YW5jZXMoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgRlRfSW50MzIgICBsb2FkX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAqcGFkdmFuY2VzICk7CisKKy8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVEFEVkFOQ19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0YXV0b2guaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0YXV0b2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWRkOWY0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRhdXRvaC5oCkBAIC0wLDAgKzEsMzU3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGF1dG9oLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgQVBJIGZvciBjb250cm9sbGluZyB0aGUgYXV0by1oaW50ZXIgKHNwZWNpZmljYXRpb24gb25seSkuICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVEFVVE9IX0hfXworI2RlZmluZSBfX0ZUQVVUT0hfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzZWN0aW9uOgorICAgKiAgIGF1dG9faGludGVyCisgICAqCisgICAqIEB0aXRsZToKKyAgICogICBUaGUgYXV0by1oaW50ZXIKKyAgICoKKyAgICogQGFic3RyYWN0OgorICAgKiAgIENvbnRyb2xsaW5nIHRoZSBhdXRvLWhpbnRpbmcgbW9kdWxlLgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgV2hpbGUgRnJlZVR5cGUncyBhdXRvLWhpbnRlciBkb2Vzbid0IGV4cG9zZSBBUEkgZnVuY3Rpb25zIGJ5IGl0c2VsZiwKKyAgICogICBpdCBpcyBwb3NzaWJsZSB0byBjb250cm9sIGl0cyBiZWhhdmlvdXIgd2l0aCBARlRfUHJvcGVydHlfU2V0IGFuZAorICAgKiAgIEBGVF9Qcm9wZXJ0eV9HZXQuICBUaGUgZm9sbG93aW5nIGxpc3RzIHRoZSBhdmFpbGFibGUgcHJvcGVydGllcworICAgKiAgIHRvZ2V0aGVyIHdpdGggdGhlIG5lY2Vzc2FyeSBtYWNyb3MgYW5kIHN0cnVjdHVyZXMuCisgICAqCisgICAqICAgTm90ZSB0aGF0IHRoZSBhdXRvLWhpbnRlcidzIG1vZHVsZSBuYW1lIGlzIGBhdXRvZml0dGVyJyBmb3IKKyAgICogICBoaXN0b3JpY2FsIHJlYXNvbnMuCisgICAqCisgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBwcm9wZXJ0eToKKyAgICogICBnbHlwaC10by1zY3JpcHQtbWFwCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAqRXhwZXJpbWVudGFsKiAqb25seSoKKyAgICoKKyAgICogICBUaGUgYXV0by1oaW50ZXIgcHJvdmlkZXMgdmFyaW91cyBzY3JpcHQgbW9kdWxlcyB0byBoaW50IGdseXBocy4KKyAgICogICBFeGFtcGxlcyBvZiBzdXBwb3J0ZWQgc2NyaXB0cyBhcmUgTGF0aW4gb3IgQ0pLLiAgQmVmb3JlIGEgZ2x5cGggaXMKKyAgICogICBhdXRvLWhpbnRlZCwgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIG1hcCBvZiB0aGUgZm9udCBnZXRzIGV4YW1pbmVkLCBhbmQKKyAgICogICB0aGUgc2NyaXB0IGlzIHRoZW4gZGV0ZXJtaW5lZCBiYXNlZCBvbiBVbmljb2RlIGNoYXJhY3RlciByYW5nZXMsIHNlZQorICAgKiAgIGJlbG93LgorICAgKgorICAgKiAgIE9wZW5UeXBlIGZvbnRzLCBob3dldmVyLCBvZnRlbiBwcm92aWRlIG11Y2ggbW9yZSBnbHlwaHMgdGhhbgorICAgKiAgIGNoYXJhY3RlciBjb2RlcyAoc21hbGwgY2Fwcywgc3VwZXJzY3JpcHRzLCBsaWdhdHVyZXMsIHN3YXNoZXMsIGV0Yy4pLAorICAgKiAgIHRvIGJlIGNvbnRyb2xsZWQgYnkgc28tY2FsbGVkIGBmZWF0dXJlcycuICBIYW5kbGluZyBPcGVuVHlwZSBmZWF0dXJlcworICAgKiAgIGNhbiBiZSBxdWl0ZSBjb21wbGljYXRlZCBhbmQgdGh1cyBuZWVkcyBhIHNlcGFyYXRlIGxpYnJhcnkgb24gdG9wIG9mCisgICAqICAgRnJlZVR5cGUuCisgICAqCisgICAqICAgVGhlIG1hcHBpbmcgYmV0d2VlbiBnbHlwaCBpbmRpY2VzIGFuZCBzY3JpcHRzIChpbiB0aGUgYXV0by1oaW50ZXIKKyAgICogICBzZW5zZSwgc2VlIHRoZSBARlRfQVVUT0hJTlRFUl9TQ1JJUFRfWFhYIHZhbHVlcykgaXMgc3RvcmVkIGFzIGFuCisgICAqICAgYXJyYXkgd2l0aCBgbnVtX2dseXBocycgZWxlbWVudHMsIGFzIGZvdW5kIGluIHRoZSBmb250J3MgQEZUX0ZhY2UKKyAgICogICBzdHJ1Y3R1cmUuICBUaGUgYGdseXBoLXRvLXNjcmlwdC1tYXAnIHByb3BlcnR5IHJldHVybnMgYSBwb2ludGVyIHRvCisgICAqICAgdGhpcyBhcnJheSB3aGljaCBjYW4gYmUgbW9kaWZpZWQgYXMgbmVlZGVkLiAgTm90ZSB0aGF0IHRoZQorICAgKiAgIG1vZGlmaWNhdGlvbiBzaG91bGQgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3QgZ2x5cGggZ2V0cyBwcm9jZXNzZWQgYnkKKyAgICogICB0aGUgYXV0by1oaW50ZXIgc28gdGhhdCB0aGUgZ2xvYmFsIGFuYWx5c2lzIG9mIHRoZSBmb250IHNoYXBlcworICAgKiAgIGFjdHVhbGx5IHVzZXMgdGhlIG1vZGlmaWVkIG1hcHBpbmcuCisgICAqCisgICAqICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNvZGUgZGVtb25zdHJhdGVzIGhvdyB0byBhY2Nlc3MgaXQgKG9taXR0aW5nCisgICAqICAgdGhlIGVycm9yIGhhbmRsaW5nKS4KKyAgICoKKyAgICogICB7CisgICAqICAgICBGVF9MaWJyYXJ5ICAgICAgICAgICAgICAgIGxpYnJhcnk7CisgICAqICAgICBGVF9GYWNlICAgICAgICAgICAgICAgICAgIGZhY2U7CisgICAqICAgICBGVF9Qcm9wX0dseXBoVG9TY3JpcHRNYXAgIHByb3A7CisgICAqCisgICAqCisgICAqICAgICBGVF9Jbml0X0ZyZWVUeXBlKCAmbGlicmFyeSApOworICAgKiAgICAgRlRfTmV3X0ZhY2UoIGxpYnJhcnksICJmb28udHRmIiwgMCwgJmZhY2UgKTsKKyAgICoKKyAgICogICAgIHByb3AuZmFjZSA9IGZhY2U7CisgICAqCisgICAqICAgICBGVF9Qcm9wZXJ0eV9HZXQoIGxpYnJhcnksICJhdXRvZml0dGVyIiwKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdseXBoLXRvLXNjcmlwdC1tYXAiLCAmcHJvcCApOworICAgKgorICAgKiAgICAgLy8gYWRqdXN0IGBwcm9wLm1hcCcgYXMgbmVlZGVkIHJpZ2h0IGhlcmUKKyAgICoKKyAgICogICAgIEZUX0xvYWRfR2x5cGgoIGZhY2UsIC4uLiwgRlRfTE9BRF9GT1JDRV9BVVRPSElOVCApOworICAgKiAgIH0KKyAgICoKKyAgICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgRlRfQVVUT0hJTlRFUl9TQ1JJUFRfWFhYCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAqRXhwZXJpbWVudGFsKiAqb25seSoKKyAgICoKKyAgICogICBBIGxpc3Qgb2YgY29uc3RhbnRzIHVzZWQgZm9yIHRoZSBAZ2x5cGgtdG8tc2NyaXB0LW1hcCBwcm9wZXJ0eSB0bworICAgKiAgIHNwZWNpZnkgdGhlIHNjcmlwdCBzdWJtb2R1bGUgdGhlIGF1dG8taGludGVyIHNob3VsZCB1c2UgZm9yIGhpbnRpbmcgYQorICAgKiAgIHBhcnRpY3VsYXIgZ2x5cGguCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgRlRfQVVUT0hJTlRFUl9TQ1JJUFRfTk9ORSA6OgorICAgKiAgICAgRG9uJ3QgYXV0by1oaW50IHRoaXMgZ2x5cGguCisgICAqCisgICAqICAgRlRfQVVUT0hJTlRFUl9TQ1JJUFRfTEFUSU4gOjoKKyAgICogICAgIEFwcGx5IHRoZSBsYXRpbiBhdXRvLWhpbnRlci4gIEZvciB0aGUgYXV0by1oaW50ZXIsIGBsYXRpbicgaXMgYQorICAgKiAgICAgdmVyeSBicm9hZCB0ZXJtLCBpbmNsdWRpbmcgQ3lyaWxsaWMgYW5kIEdyZWVrIGFsc28gc2luY2UgY2hhcmFjdGVycworICAgKiAgICAgZnJvbSB0aG9zZSBzY3JpcHRzIHNoYXJlIHRoZSBzYW1lIGRlc2lnbiBjb25zdHJhaW50cy4KKyAgICoKKyAgICogICAgIEJ5IGRlZmF1bHQsIGNoYXJhY3RlcnMgZnJvbSB0aGUgZm9sbG93aW5nIFVuaWNvZGUgcmFuZ2VzIGFyZQorICAgKiAgICAgYXNzaWduZWQgdG8gdGhpcyBzdWJtb2R1bGUuCisgICAqCisgICAqICAgICB7CisgICAqICAgICAgIFUrMDAyMCAtIFUrMDA3RiAgLy8gQmFzaWMgTGF0aW4gKG5vIGNvbnRyb2wgY2hhcmFjdGVycykKKyAgICogICAgICAgVSswMEEwIC0gVSswMEZGICAvLyBMYXRpbi0xIFN1cHBsZW1lbnQgKG5vIGNvbnRyb2wgY2hhcmFjdGVycykKKyAgICogICAgICAgVSswMTAwIC0gVSswMTdGICAvLyBMYXRpbiBFeHRlbmRlZC1BCisgICAqICAgICAgIFUrMDE4MCAtIFUrMDI0RiAgLy8gTGF0aW4gRXh0ZW5kZWQtQgorICAgKiAgICAgICBVKzAyNTAgLSBVKzAyQUYgIC8vIElQQSBFeHRlbnNpb25zCisgICAqICAgICAgIFUrMDJCMCAtIFUrMDJGRiAgLy8gU3BhY2luZyBNb2RpZmllciBMZXR0ZXJzCisgICAqICAgICAgIFUrMDMwMCAtIFUrMDM2RiAgLy8gQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzCisgICAqICAgICAgIFUrMDM3MCAtIFUrMDNGRiAgLy8gR3JlZWsgYW5kIENvcHRpYworICAgKiAgICAgICBVKzA0MDAgLSBVKzA0RkYgIC8vIEN5cmlsbGljCisgICAqICAgICAgIFUrMDUwMCAtIFUrMDUyRiAgLy8gQ3lyaWxsaWMgU3VwcGxlbWVudAorICAgKiAgICAgICBVKzFEMDAgLSBVKzFEN0YgIC8vIFBob25ldGljIEV4dGVuc2lvbnMKKyAgICogICAgICAgVSsxRDgwIC0gVSsxREJGICAvLyBQaG9uZXRpYyBFeHRlbnNpb25zIFN1cHBsZW1lbnQKKyAgICogICAgICAgVSsxREMwIC0gVSsxREZGICAvLyBDb21iaW5pbmcgRGlhY3JpdGljYWwgTWFya3MgU3VwcGxlbWVudAorICAgKiAgICAgICBVKzFFMDAgLSBVKzFFRkYgIC8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwKKyAgICogICAgICAgVSsxRjAwIC0gVSsxRkZGICAvLyBHcmVlayBFeHRlbmRlZAorICAgKiAgICAgICBVKzIwMDAgLSBVKzIwNkYgIC8vIEdlbmVyYWwgUHVuY3R1YXRpb24KKyAgICogICAgICAgVSsyMDcwIC0gVSsyMDlGICAvLyBTdXBlcnNjcmlwdHMgYW5kIFN1YnNjcmlwdHMKKyAgICogICAgICAgVSsyMEEwIC0gVSsyMENGICAvLyBDdXJyZW5jeSBTeW1ib2xzCisgICAqICAgICAgIFUrMjE1MCAtIFUrMjE4RiAgLy8gTnVtYmVyIEZvcm1zCisgICAqICAgICAgIFUrMjQ2MCAtIFUrMjRGRiAgLy8gRW5jbG9zZWQgQWxwaGFudW1lcmljcworICAgKiAgICAgICBVKzJDNjAgLSBVKzJDN0YgIC8vIExhdGluIEV4dGVuZGVkLUMKKyAgICogICAgICAgVSsyREUwIC0gVSsyREZGICAvLyBDeXJpbGxpYyBFeHRlbmRlZC1BCisgICAqICAgICAgIFUrMkUwMCAtIFUrMkU3RiAgLy8gU3VwcGxlbWVudGFsIFB1bmN0dWF0aW9uCisgICAqICAgICAgIFUrQTY0MCAtIFUrQTY5RiAgLy8gQ3lyaWxsaWMgRXh0ZW5kZWQtQgorICAgKiAgICAgICBVK0E3MjAgLSBVK0E3RkYgIC8vIExhdGluIEV4dGVuZGVkLUQKKyAgICogICAgICAgVStGQjAwIC0gVStGQjA2ICAvLyBBbHBoYWIuIFByZXNlbnQuIEZvcm1zIChMYXRpbiBMaWdhdHVyZXMpCisgICAqICAgICAgVSsxRDQwMCAtIFUrMUQ3RkYgLy8gTWF0aGVtYXRpY2FsIEFscGhhbnVtZXJpYyBTeW1ib2xzCisgICAqICAgICAgVSsxRjEwMCAtIFUrMUYxRkYgLy8gRW5jbG9zZWQgQWxwaGFudW1lcmljIFN1cHBsZW1lbnQKKyAgICogICAgIH0KKyAgICoKKyAgICogICBGVF9BVVRPSElOVEVSX1NDUklQVF9DSksgOjoKKyAgICogICAgIEFwcGx5IHRoZSBDSksgYXV0by1oaW50ZXIsIGNvdmVyaW5nIENoaW5lc2UsIEphcGFuZXNlLCBLb3JlYW4sIG9sZAorICAgKiAgICAgVmlldG5hbWVzZSwgYW5kIHNvbWUgb3RoZXIgc2NyaXB0cy4KKyAgICoKKyAgICogICAgIEJ5IGRlZmF1bHQsIGNoYXJhY3RlcnMgZnJvbSB0aGUgZm9sbG93aW5nIFVuaWNvZGUgcmFuZ2VzIGFyZQorICAgKiAgICAgYXNzaWduZWQgdG8gdGhpcyBzdWJtb2R1bGUuCisgICAqCisgICAqICAgICB7CisgICAqICAgICAgIFUrMTEwMCAtIFUrMTFGRiAgLy8gSGFuZ3VsIEphbW8KKyAgICogICAgICAgVSsyRTgwIC0gVSsyRUZGICAvLyBDSksgUmFkaWNhbHMgU3VwcGxlbWVudAorICAgKiAgICAgICBVKzJGMDAgLSBVKzJGREYgIC8vIEthbmd4aSBSYWRpY2FscworICAgKiAgICAgICBVKzJGRjAgLSBVKzJGRkYgIC8vIElkZW9ncmFwaGljIERlc2NyaXB0aW9uIENoYXJhY3RlcnMKKyAgICogICAgICAgVSszMDAwIC0gVSszMDNGICAvLyBDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb24KKyAgICogICAgICAgVSszMDQwIC0gVSszMDlGICAvLyBIaXJhZ2FuYQorICAgKiAgICAgICBVKzMwQTAgLSBVKzMwRkYgIC8vIEthdGFrYW5hCisgICAqICAgICAgIFUrMzEwMCAtIFUrMzEyRiAgLy8gQm9wb21vZm8KKyAgICogICAgICAgVSszMTMwIC0gVSszMThGICAvLyBIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1vCisgICAqICAgICAgIFUrMzE5MCAtIFUrMzE5RiAgLy8gS2FuYnVuCisgICAqICAgICAgIFUrMzFBMCAtIFUrMzFCRiAgLy8gQm9wb21vZm8gRXh0ZW5kZWQKKyAgICogICAgICAgVSszMUMwIC0gVSszMUVGICAvLyBDSksgU3Ryb2tlcworICAgKiAgICAgICBVKzMxRjAgLSBVKzMxRkYgIC8vIEthdGFrYW5hIFBob25ldGljIEV4dGVuc2lvbnMKKyAgICogICAgICAgVSszMjAwIC0gVSszMkZGICAvLyBFbmNsb3NlZCBDSksgTGV0dGVycyBhbmQgTW9udGhzCisgICAqICAgICAgIFUrMzMwMCAtIFUrMzNGRiAgLy8gQ0pLIENvbXBhdGliaWxpdHkKKyAgICogICAgICAgVSszNDAwIC0gVSs0REJGICAvLyBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBBCisgICAqICAgICAgIFUrNERDMCAtIFUrNERGRiAgLy8gWWlqaW5nIEhleGFncmFtIFN5bWJvbHMKKyAgICogICAgICAgVSs0RTAwIC0gVSs5RkZGICAvLyBDSksgVW5pZmllZCBJZGVvZ3JhcGhzCisgICAqICAgICAgIFUrQTk2MCAtIFUrQTk3RiAgLy8gSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQQorICAgKiAgICAgICBVK0FDMDAgLSBVK0Q3QUYgIC8vIEhhbmd1bCBTeWxsYWJsZXMKKyAgICogICAgICAgVStEN0IwIC0gVStEN0ZGICAvLyBIYW5ndWwgSmFtbyBFeHRlbmRlZC1CCisgICAqICAgICAgIFUrRjkwMCAtIFUrRkFGRiAgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocworICAgKiAgICAgICBVK0ZFMTAgLSBVK0ZFMUYgIC8vIFZlcnRpY2FsIGZvcm1zCisgICAqICAgICAgIFUrRkUzMCAtIFUrRkU0RiAgLy8gQ0pLIENvbXBhdGliaWxpdHkgRm9ybXMKKyAgICogICAgICAgVStGRjAwIC0gVStGRkVGICAvLyBIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBGb3JtcworICAgKiAgICAgIFUrMUIwMDAgLSBVKzFCMEZGIC8vIEthbmEgU3VwcGxlbWVudAorICAgKiAgICAgIFUrMUQzMDAgLSBVKzFEMzVGIC8vIFRhaSBYdWFuIEhpbmcgU3ltYm9scworICAgKiAgICAgIFUrMUYyMDAgLSBVKzFGMkZGIC8vIEVuY2xvc2VkIElkZW9ncmFwaGljIFN1cHBsZW1lbnQKKyAgICogICAgICBVKzIwMDAwIC0gVSsyQTZERiAvLyBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBCCisgICAqICAgICAgVSsyQTcwMCAtIFUrMkI3M0YgLy8gQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQworICAgKiAgICAgIFUrMkI3NDAgLSBVKzJCODFGIC8vIENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEQKKyAgICogICAgICBVKzJGODAwIC0gVSsyRkExRiAvLyBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzIFN1cHBsZW1lbnQKKyAgICogICAgIH0KKyAgICoKKyAgICogICBGVF9BVVRPSElOVEVSX1NDUklQVF9JTkRJQyA6OgorICAgKiAgICAgQXBwbHkgdGhlIGluZGljIGF1dG8taGludGVyLCBjb3ZlcmluZyBhbGwgbWFqb3Igc2NyaXB0cyBmcm9tIHRoZQorICAgKiAgICAgSW5kaWFuIHN1Yi1jb250aW5lbnQgYW5kIHNvbWUgb3RoZXIgcmVsYXRlZCBzY3JpcHRzIGxpa2UgVGhhaSwgTGFvLAorICAgKiAgICAgb3IgVGliZXRhbi4KKyAgICoKKyAgICogICAgIEJ5IGRlZmF1bHQsIGNoYXJhY3RlcnMgZnJvbSB0aGUgZm9sbG93aW5nIFVuaWNvZGUgcmFuZ2VzIGFyZQorICAgKiAgICAgYXNzaWduZWQgdG8gdGhpcyBzdWJtb2R1bGUuCisgICAqCisgICAqICAgICB7CisgICAqICAgICAgIFUrMDkwMCAtIFUrMERGRiAgLy8gSW5kaWMgUmFuZ2UKKyAgICogICAgICAgVSswRjAwIC0gVSswRkZGICAvLyBUaWJldGFuCisgICAqICAgICAgIFUrMTkwMCAtIFUrMTk0RiAgLy8gTGltYnUKKyAgICogICAgICAgVSsxQjgwIC0gVSsxQkJGICAvLyBTdW5kYW5lc2UKKyAgICogICAgICAgVSsxQzgwIC0gVSsxQ0RGICAvLyBNZWV0ZWkgTWF5YWsKKyAgICogICAgICAgVStBODAwIC0gVStBODJGICAvLyBTeWxvdGkgTmFncmkKKyAgICogICAgICBVKzExODAwIC0gVSsxMThERiAvLyBTaGFyYWRhCisgICAqICAgICB9CisgICAqCisgICAqICAgICBOb3RlIHRoYXQgY3VycmVudGx5IEluZGljIHN1cHBvcnQgaXMgcnVkaW1lbnRhcnkgb25seSwgbWlzc2luZyBibHVlCisgICAqICAgICB6b25lIHN1cHBvcnQuCisgICAqCisgICAqLworI2RlZmluZSBGVF9BVVRPSElOVEVSX1NDUklQVF9OT05FICAgMAorI2RlZmluZSBGVF9BVVRPSElOVEVSX1NDUklQVF9MQVRJTiAgMQorI2RlZmluZSBGVF9BVVRPSElOVEVSX1NDUklQVF9DSksgICAgMgorI2RlZmluZSBGVF9BVVRPSElOVEVSX1NDUklQVF9JTkRJQyAgMworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRfUHJvcF9HbHlwaFRvU2NyaXB0TWFwCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAqRXhwZXJpbWVudGFsKiAqb25seSoKKyAgICoKKyAgICogICBUaGUgZGF0YSBleGNoYW5nZSBzdHJ1Y3R1cmUgZm9yIHRoZSBAZ2x5cGgtdG8tc2NyaXB0LW1hcCBwcm9wZXJ0eS4KKyAgICoKKyAgICovCisgICB0eXBlZGVmIHN0cnVjdCAgRlRfUHJvcF9HbHlwaFRvU2NyaXB0TWFwXworICAgeworICAgICBGVF9GYWNlICAgZmFjZTsKKyAgICAgRlRfQnl0ZSogIG1hcDsKKworICAgfSBGVF9Qcm9wX0dseXBoVG9TY3JpcHRNYXA7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHByb3BlcnR5OgorICAgKiAgIGZhbGxiYWNrLXNjcmlwdAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgKkV4cGVyaW1lbnRhbCogKm9ubHkqCisgICAqCisgICAqICAgSWYgbm8gYXV0by1oaW50ZXIgc2NyaXB0IG1vZHVsZSBjYW4gYmUgYXNzaWduZWQgdG8gYSBnbHlwaCwgYQorICAgKiAgIGZhbGxiYWNrIHNjcmlwdCBnZXRzIGFzc2lnbmVkIHRvIGl0IChzZWUgYWxzbyB0aGUKKyAgICogICBAZ2x5cGgtdG8tc2NyaXB0LW1hcCBwcm9wZXJ0eSkuICBCeSBkZWZhdWx0LCB0aGlzIGlzCisgICAqICAgQEZUX0FVVE9ISU5URVJfU0NSSVBUX0NKSy4gIFVzaW5nIHRoZSBgZmFsbGJhY2stc2NyaXB0JyBwcm9wZXJ0eSwKKyAgICogICB0aGlzIGZhbGxiYWNrIHZhbHVlIGNhbiBiZSBjaGFuZ2VkLgorICAgKgorICAgKiAgIHsKKyAgICogICAgIEZUX0xpYnJhcnkgIGxpYnJhcnk7CisgICAqICAgICBGVF9VSW50ICAgICBmYWxsYmFja19zY3JpcHQgPSBGVF9BVVRPSElOVEVSX1NDUklQVF9OT05FOworICAgKgorICAgKgorICAgKiAgICAgRlRfSW5pdF9GcmVlVHlwZSggJmxpYnJhcnkgKTsKKyAgICoKKyAgICogICAgIEZUX1Byb3BlcnR5X1NldCggbGlicmFyeSwgImF1dG9maXR0ZXIiLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFsbGJhY2stc2NyaXB0IiwgJmZhbGxiYWNrX3NjcmlwdCApOworICAgKiAgIH0KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB3aXRoIEBGVF9Qcm9wZXJ0eV9HZXQgYWxzby4KKyAgICoKKyAgICogICBJdCdzIGltcG9ydGFudCB0byB1c2UgdGhlIHJpZ2h0IHRpbWluZyBmb3IgY2hhbmdpbmcgdGhpcyB2YWx1ZTogVGhlCisgICAqICAgY3JlYXRpb24gb2YgdGhlIGdseXBoLXRvLXNjcmlwdCBtYXAgd2hpY2ggZXZlbnR1YWxseSB1c2VzIHRoZQorICAgKiAgIGZhbGxiYWNrIHNjcmlwdCB2YWx1ZSBnZXRzIHRyaWdnZXJlZCBlaXRoZXIgYnkgc2V0dGluZyBvciByZWFkaW5nIGEKKyAgICogICBmYWNlLXNwZWNpZmljIHByb3BlcnR5IGxpa2UgQGdseXBoLXRvLXNjcmlwdC1tYXAsIG9yIGJ5IGF1dG8taGludGluZworICAgKiAgIGFueSBnbHlwaCBmcm9tIHRoYXQgZmFjZS4gIEluIHBhcnRpY3VsYXIsIGlmIHlvdSBoYXZlIGFscmVhZHkgY3JlYXRlZAorICAgKiAgIGFuIEBGVF9GYWNlIHN0cnVjdHVyZSBidXQgbm90IGxvYWRlZCBhbnkgZ2x5cGggKHVzaW5nIHRoZQorICAgKiAgIGF1dG8taGludGVyKSwgYSBjaGFuZ2Ugb2YgdGhlIGZhbGxiYWNrIGdseXBoIHdpbGwgYWZmZWN0IHRoaXMgZmFjZS4KKyAgICoKKyAgICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHByb3BlcnR5OgorICAgKiAgIGluY3JlYXNlLXgtaGVpZ2h0CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBGb3IgcHBlbSB2YWx1ZXMgaW4gdGhlIHJhbmdlIDZ+PD0gcHBlbSA8PSBgaW5jcmVhc2UteC1oZWlnaHQnLCByb3VuZAorICAgKiAgIHVwIHRoZSBmb250J3MgeH5oZWlnaHQgbXVjaCBtb3JlIG9mdGVuIHRoYW4gbm9ybWFsbHkuICBJZiB0aGUgdmFsdWUKKyAgICogICBpcyBzZXQgdG9+MCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQsIHRoaXMgZmVhdHVyZSBpcyBzd2l0Y2hlZCBvZmYuICBVc2UKKyAgICogICB0aGlzIHByb3BlcnR5IHRvIGltcHJvdmUgdGhlIGxlZ2liaWxpdHkgb2Ygc21hbGwgZm9udCBzaXplcyBpZgorICAgKiAgIG5lY2Vzc2FyeS4KKyAgICoKKyAgICogICB7CisgICAqICAgICBGVF9MaWJyYXJ5ICAgICAgICAgICAgICAgbGlicmFyeTsKKyAgICogICAgIEZUX0ZhY2UgICAgICAgICAgICAgICAgICBmYWNlOworICAgKiAgICAgRlRfUHJvcF9JbmNyZWFzZVhIZWlnaHQgIHByb3A7CisgICAqCisgICAqCisgICAqICAgICBGVF9Jbml0X0ZyZWVUeXBlKCAmbGlicmFyeSApOworICAgKiAgICAgRlRfTmV3X0ZhY2UoIGxpYnJhcnksICJmb28udHRmIiwgMCwgJmZhY2UgKTsKKyAgICogICAgIEZUX1NldF9DaGFyX1NpemUoIGZhY2UsIDEwICogNjQsIDAsIDcyLCAwICk7CisgICAqCisgICAqICAgICBwcm9wLmZhY2UgID0gZmFjZTsKKyAgICogICAgIHByb3AubGltaXQgPSAxNDsKKyAgICoKKyAgICogICAgIEZUX1Byb3BlcnR5X1NldCggbGlicmFyeSwgImF1dG9maXR0ZXIiLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jcmVhc2UteC1oZWlnaHQiLCAmcHJvcCApOworICAgKiAgIH0KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB3aXRoIEBGVF9Qcm9wZXJ0eV9HZXQgYWxzby4KKyAgICoKKyAgICogICBTZXQgdGhpcyB2YWx1ZSByaWdodCBhZnRlciBjYWxsaW5nIEBGVF9TZXRfQ2hhcl9TaXplLCBidXQgYmVmb3JlCisgICAqICAgbG9hZGluZyBhbnkgZ2x5cGggKHVzaW5nIHRoZSBhdXRvLWhpbnRlcikuCisgICAqCisgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRfUHJvcF9JbmNyZWFzZVhIZWlnaHQKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoZSBkYXRhIGV4Y2hhbmdlIHN0cnVjdHVyZSBmb3IgdGhlIEBpbmNyZWFzZS14LWhlaWdodCBwcm9wZXJ0eS4KKyAgICoKKyAgICovCisgICB0eXBlZGVmIHN0cnVjdCAgRlRfUHJvcF9JbmNyZWFzZVhIZWlnaHRfCisgICB7CisgICAgIEZUX0ZhY2UgIGZhY2U7CisgICAgIEZUX1VJbnQgIGxpbWl0OworCisgICB9IEZUX1Byb3BfSW5jcmVhc2VYSGVpZ2h0OworCisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUQVVUT0hfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGJib3guaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0YmJveC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNTQyNDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGJib3guaApAQCAtMCwwICsxLDEwMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRiYm94LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIGV4YWN0IGJib3ggY29tcHV0YXRpb24gKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDMsIDIwMDcsIDIwMTEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBjb21wb25lbnQgaGFzIGEgX3NpbmdsZV8gcm9sZTogdG8gY29tcHV0ZSBleGFjdCBvdXRsaW5lIGJvdW5kaW5nICovCisgIC8qIGJveGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSXQgaXMgc2VwYXJhdGVkIGZyb20gdGhlIHJlc3Qgb2YgdGhlIGVuZ2luZSBmb3IgdmFyaW91cyB0ZWNobmljYWwgICAgICovCisgIC8qIHJlYXNvbnMuICBJdCBtYXkgd2VsbCBiZSBpbnRlZ3JhdGVkIGluIGBmdG91dGxuJyBsYXRlci4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQkJPWF9IX18KKyNkZWZpbmUgX19GVEJCT1hfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lX3Byb2Nlc3NpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9HZXRfQkJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29tcHV0ZSB0aGUgZXhhY3QgYm91bmRpbmcgYm94IG9mIGFuIG91dGxpbmUuICBUaGlzIGlzIHNsb3dlciAgICAgICovCisgIC8qICAgIHRoYW4gY29tcHV0aW5nIHRoZSBjb250cm9sIGJveC4gIEhvd2V2ZXIsIGl0IHVzZXMgYW4gYWR2YW5jZWQgICAgICAqLworICAvKiAgICBhbGdvcml0aG0gd2hpY2ggcmV0dXJucyBfdmVyeV8gcXVpY2tseSB3aGVuIHRoZSB0d28gYm94ZXMgICAgICAgICAgKi8KKyAgLyogICAgY29pbmNpZGUuICBPdGhlcndpc2UsIHRoZSBvdXRsaW5lIELDqXppZXIgYXJjcyBhcmUgdHJhdmVyc2VkIHRvICAgICAqLworICAvKiAgICBleHRyYWN0IHRoZWlyIGV4dHJlbWEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lIDo6IEEgcG9pbnRlciB0byB0aGUgc291cmNlIG91dGxpbmUuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhYmJveCAgIDo6IFRoZSBvdXRsaW5lJ3MgZXhhY3QgYm91bmRpbmcgYm94LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiB0aGUgZm9udCBpcyB0cmlja3kgYW5kIHRoZSBnbHlwaCBoYXMgYmVlbiBsb2FkZWQgd2l0aCAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX0xPQURfTk9fU0NBTEUsIHRoZSByZXN1bHRpbmcgQkJveCBpcyBtZWFuaW5nbGVzcy4gIFRvIGdldCAgICAgICovCisgIC8qICAgIHJlYXNvbmFibGUgdmFsdWVzIGZvciB0aGUgQkJveCBpdCBpcyBuZWNlc3NhcnkgdG8gbG9hZCB0aGUgZ2x5cGggICAqLworICAvKiAgICBhdCBhIGxhcmdlIHBwZW0gdmFsdWUgKHNvIHRoYXQgdGhlIGhpbnRpbmcgaW5zdHJ1Y3Rpb25zIGNhbiAgICAgICAgKi8KKyAgLyogICAgcHJvcGVybHkgc2hpZnQgYW5kIHNjYWxlIHRoZSBzdWJnbHlwaHMpLCB0aGVuIGV4dHJhY3RpbmcgdGhlIEJCb3ggICovCisgIC8qICAgIHdoaWNoIGNhbiBiZSBldmVudHVhbGx5IGNvbnZlcnRlZCBiYWNrIHRvIGZvbnQgdW5pdHMuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfR2V0X0JCb3goIEZUX091dGxpbmUqICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9CQm94ICAgICAqYWJib3ggKTsKKworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVEJCT1hfSF9fICovCisKKworLyogRU5EICovCisKKworLyogTG9jYWwgVmFyaWFibGVzOiAqLworLyogY29kaW5nOiB1dGYtOCAgICAqLworLyogRW5kOiAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRiZGYuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0YmRmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3MjFiYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0YmRmLmgKQEAgLTAsMCArMSwyMDkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0YmRmLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIGFjY2Vzc2luZyBCREYtc3BlY2lmaWMgc3RyaW5ncyAoc3BlY2lmaWNhdGlvbikuICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMiwgMjAwMywgMjAwNCwgMjAwNiwgMjAwOSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQkRGX0hfXworI2RlZmluZSBfX0ZUQkRGX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJkZl9mb250cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEJERiBhbmQgUENGIEZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEJERiBhbmQgUENGIHNwZWNpZmljIEFQSS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb25zIHNwZWNpZmljIHRvIEJERiAqLworICAvKiAgICBhbmQgUENGIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgIEZUX1Byb3BlcnR5VHlwZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgIEEgbGlzdCBvZiBCREYgcHJvcGVydHkgdHlwZXMuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgIEJERl9QUk9QRVJUWV9UWVBFX05PTkUgOjoKKyAgICogICAgICBWYWx1ZX4wIGlzIHVzZWQgdG8gaW5kaWNhdGUgYSBtaXNzaW5nIHByb3BlcnR5LgorICAgKgorICAgKiAgICBCREZfUFJPUEVSVFlfVFlQRV9BVE9NIDo6CisgICAqICAgICAgUHJvcGVydHkgaXMgYSBzdHJpbmcgYXRvbS4KKyAgICoKKyAgICogICAgQkRGX1BST1BFUlRZX1RZUEVfSU5URUdFUiA6OgorICAgKiAgICAgIFByb3BlcnR5IGlzIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyLgorICAgKgorICAgKiAgICBCREZfUFJPUEVSVFlfVFlQRV9DQVJESU5BTCA6OgorICAgKiAgICAgIFByb3BlcnR5IGlzIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCisgICAqLworICB0eXBlZGVmIGVudW0gIEJERl9Qcm9wZXJ0eVR5cGVfCisgIHsKKyAgICBCREZfUFJPUEVSVFlfVFlQRV9OT05FICAgICA9IDAsCisgICAgQkRGX1BST1BFUlRZX1RZUEVfQVRPTSAgICAgPSAxLAorICAgIEJERl9QUk9QRVJUWV9UWVBFX0lOVEVHRVIgID0gMiwKKyAgICBCREZfUFJPUEVSVFlfVFlQRV9DQVJESU5BTCA9IDMKKworICB9IEJERl9Qcm9wZXJ0eVR5cGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICAgQkRGX1Byb3BlcnR5CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgQSBoYW5kbGUgdG8gYSBAQkRGX1Byb3BlcnR5UmVjIHN0cnVjdHVyZSB0byBtb2RlbCBhIGdpdmVuCisgICAqICAgIEJERi9QQ0YgcHJvcGVydHkuCisgICAqLworICB0eXBlZGVmIHN0cnVjdCBCREZfUHJvcGVydHlSZWNfKiAgQkRGX1Byb3BlcnR5OworCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQHN0cnVjdDoKKyAgKiAgICBCREZfUHJvcGVydHlSZWMKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBUaGlzIHN0cnVjdHVyZSBtb2RlbHMgYSBnaXZlbiBCREYvUENGIHByb3BlcnR5LgorICAqCisgICogQGZpZWxkczoKKyAgKiAgICB0eXBlIDo6CisgICogICAgICBUaGUgcHJvcGVydHkgdHlwZS4KKyAgKgorICAqICAgIHUuYXRvbSA6OgorICAqICAgICAgVGhlIGF0b20gc3RyaW5nLCBpZiB0eXBlIGlzIEBCREZfUFJPUEVSVFlfVFlQRV9BVE9NLgorICAqCisgICogICAgdS5pbnRlZ2VyIDo6CisgICogICAgICBBIHNpZ25lZCBpbnRlZ2VyLCBpZiB0eXBlIGlzIEBCREZfUFJPUEVSVFlfVFlQRV9JTlRFR0VSLgorICAqCisgICogICAgdS5jYXJkaW5hbCA6OgorICAqICAgICAgQW4gdW5zaWduZWQgaW50ZWdlciwgaWYgdHlwZSBpcyBAQkRGX1BST1BFUlRZX1RZUEVfQ0FSRElOQUwuCisgICovCisgIHR5cGVkZWYgc3RydWN0ICBCREZfUHJvcGVydHlSZWNfCisgIHsKKyAgICBCREZfUHJvcGVydHlUeXBlICB0eXBlOworICAgIHVuaW9uIHsKKyAgICAgIGNvbnN0IGNoYXIqICAgICBhdG9tOworICAgICAgRlRfSW50MzIgICAgICAgIGludGVnZXI7CisgICAgICBGVF9VSW50MzIgICAgICAgY2FyZGluYWw7CisKKyAgICB9IHU7CisKKyAgfSBCREZfUHJvcGVydHlSZWM7CisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICAgRlRfR2V0X0JERl9DaGFyc2V0X0lECisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgUmV0cmlldmUgYSBCREYgZm9udCBjaGFyYWN0ZXIgc2V0IGlkZW50aXR5LCBhY2NvcmRpbmcgdG8KKyAgKiAgICB0aGUgQkRGIHNwZWNpZmljYXRpb24uCisgICoKKyAgKiBAaW5wdXQ6CisgICogICAgZmFjZSA6OgorICAqICAgICAgIEEgaGFuZGxlIHRvIHRoZSBpbnB1dCBmYWNlLgorICAqCisgICogQG91dHB1dDoKKyAgKiAgICBhY2hhcnNldF9lbmNvZGluZyA6OgorICAqICAgICAgIENoYXJzZXQgZW5jb2RpbmcsIGFzIGEgQ35zdHJpbmcsIG93bmVkIGJ5IHRoZSBmYWNlLgorICAqCisgICogICAgYWNoYXJzZXRfcmVnaXN0cnkgOjoKKyAgKiAgICAgICBDaGFyc2V0IHJlZ2lzdHJ5LCBhcyBhIEN+c3RyaW5nLCBvd25lZCBieSB0aGUgZmFjZS4KKyAgKgorICAqIEByZXR1cm46CisgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAqCisgICogQG5vdGU6CisgICogICBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2l0aCBCREYgZmFjZXMsIHJldHVybmluZyBhbiBlcnJvciBvdGhlcndpc2UuCisgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfQkRGX0NoYXJzZXRfSUQoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgKmFjaGFyc2V0X2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqYWNoYXJzZXRfcmVnaXN0cnkgKTsKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBmdW5jdGlvbjoKKyAgKiAgICBGVF9HZXRfQkRGX1Byb3BlcnR5CisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgUmV0cmlldmUgYSBCREYgcHJvcGVydHkgZnJvbSBhIEJERiBvciBQQ0YgZm9udCBmaWxlLgorICAqCisgICogQGlucHV0OgorICAqICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICoKKyAgKiAgICBuYW1lIDo6IFRoZSBwcm9wZXJ0eSBuYW1lLgorICAqCisgICogQG91dHB1dDoKKyAgKiAgICBhcHJvcGVydHkgOjogVGhlIHByb3BlcnR5LgorICAqCisgICogQHJldHVybjoKKyAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoaXMgZnVuY3Rpb24gd29ya3Mgd2l0aCBCREYgX2FuZF8gUENGIGZvbnRzLiAgSXQgcmV0dXJucyBhbiBlcnJvcgorICAqICAgb3RoZXJ3aXNlLiAgSXQgYWxzbyByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBwcm9wZXJ0eSBpcyBub3QgaW4gdGhlCisgICogICBmb250LgorICAqCisgICogICBBIGBwcm9wZXJ0eScgaXMgYSBlaXRoZXIga2V5LXZhbHVlIHBhaXIgd2l0aGluIHRoZSBTVEFSVFBST1BFUlRJRVMKKyAgKiAgIC4uLiBFTkRQUk9QRVJUSUVTIGJsb2NrIG9mIGEgQkRGIGZvbnQgb3IgYSBrZXktdmFsdWUgcGFpciBmcm9tIHRoZQorICAqICAgYGluZm8tPnByb3BzJyBhcnJheSB3aXRoaW4gYSBgRm9udFJlYycgc3RydWN0dXJlIG9mIGEgUENGIGZvbnQuCisgICoKKyAgKiAgIEludGVnZXIgcHJvcGVydGllcyBhcmUgYWx3YXlzIHN0b3JlZCBhcyBgc2lnbmVkJyB3aXRoaW4gUENGIGZvbnRzOworICAqICAgY29uc2VxdWVudGx5LCBAQkRGX1BST1BFUlRZX1RZUEVfQ0FSRElOQUwgaXMgYSBwb3NzaWJsZSByZXR1cm4gdmFsdWUKKyAgKiAgIGZvciBCREYgZm9udHMgb25seS4KKyAgKgorICAqICAgSW4gY2FzZSBvZiBlcnJvciwgYGFwcm9wZXJ0eS0+dHlwZScgaXMgYWx3YXlzIHNldCB0bworICAqICAgQEJERl9QUk9QRVJUWV9UWVBFX05PTkUuCisgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfQkRGX1Byb3BlcnR5KCBGVF9GYWNlICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgICAgICBwcm9wX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIEJERl9Qcm9wZXJ0eVJlYyAgKmFwcm9wZXJ0eSApOworCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVEJERl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Yml0bWFwLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGJpdG1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NDA3OTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGJpdG1hcC5oCkBAIC0wLDAgKzEsMjI3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGJpdG1hcC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGJpdG1hcHMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDQtMjAwNiwgMjAwOCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVEJJVE1BUF9IX18KKyNkZWZpbmUgX19GVEJJVE1BUF9IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJpdG1hcF9oYW5kbGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEJpdG1hcCBIYW5kbGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEhhbmRsaW5nIEZUX0JpdG1hcCBvYmplY3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgRlRfQml0bWFwIG9iamVjdHMuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXBfTmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbml0aWFsaXplIGEgcG9pbnRlciB0byBhbiBARlRfQml0bWFwIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhYml0bWFwIDo6IEEgcG9pbnRlciB0byB0aGUgYml0bWFwIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX0JpdG1hcF9OZXcoIEZUX0JpdG1hcCAgKmFiaXRtYXAgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0JpdG1hcF9Db3B5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvcHkgYSBiaXRtYXAgaW50byBhbm90aGVyIG9uZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogQSBoYW5kbGUgdG8gYSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc291cmNlICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGJpdG1hcC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFyZ2V0ICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGJpdG1hcC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfQml0bWFwX0NvcHkoIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CaXRtYXAgICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICBGVF9CaXRtYXAgICAgICAgICp0YXJnZXQpOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQml0bWFwX0VtYm9sZGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRW1ib2xkZW4gYSBiaXRtYXAuICBUaGUgbmV3IGJpdG1hcCB3aWxsIGJlIGFib3V0IGB4U3RyZW5ndGgnICAgICAgICovCisgIC8qICAgIHBpeGVscyB3aWRlciBhbmQgYHlTdHJlbmd0aCcgcGl4ZWxzIGhpZ2hlci4gIFRoZSBsZWZ0IGFuZCBib3R0b20gICAqLworICAvKiAgICBib3JkZXJzIGFyZSBrZXB0IHVuY2hhbmdlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgOjogQSBoYW5kbGUgdG8gYSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHhTdHJlbmd0aCA6OiBIb3cgc3Ryb25nIHRoZSBnbHlwaCBpcyBlbWJvbGRlbmVkIGhvcml6b250YWxseS4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgRXhwcmVzc2VkIGluIDI2LjYgcGl4ZWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlTdHJlbmd0aCA6OiBIb3cgc3Ryb25nIHRoZSBnbHlwaCBpcyBlbWJvbGRlbmVkIHZlcnRpY2FsbHkuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgRXhwcmVzc2VkIGluIDI2LjYgcGl4ZWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiaXRtYXAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZXN0cmljdHMgYHhTdHJlbmd0aCcgdG8gYmUgbGVzcyB0aGFuICAgKi8KKyAgLyogICAgb3IgZXF1YWwgdG9+OCBpZiBiaXRtYXAgaXMgb2YgcGl4ZWxfbW9kZSBARlRfUElYRUxfTU9ERV9NT05PLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiB5b3Ugd2FudCB0byBlbWJvbGRlbiB0aGUgYml0bWFwIG93bmVkIGJ5IGEgQEZUX0dseXBoU2xvdFJlYywgICAgKi8KKyAgLyogICAgeW91IHNob3VsZCBjYWxsIEBGVF9HbHlwaFNsb3RfT3duX0JpdG1hcCBvbiB0aGUgc2xvdCBmaXJzdC4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfQml0bWFwX0VtYm9sZGVuKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0JpdG1hcCogIGJpdG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB4U3RyZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgeVN0cmVuZ3RoICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXBfQ29udmVydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDb252ZXJ0IGEgYml0bWFwIG9iamVjdCB3aXRoIGRlcHRoIDFicHAsIDJicHAsIDRicHAsIDhicHAgb3IgMzJicHAgKi8KKyAgLyogICAgdG8gYSBiaXRtYXAgb2JqZWN0IHdpdGggZGVwdGggOGJwcCwgbWFraW5nIHRoZSBudW1iZXIgb2YgdXNlZCAgICAgICovCisgIC8qICAgIGJ5dGVzIGxpbmUgKGEuay5hLiB0aGUgYHBpdGNoJykgYSBtdWx0aXBsZSBvZiBgYWxpZ25tZW50Jy4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgICA6OiBBIGhhbmRsZSB0byBhIGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc291cmNlICAgIDo6IFRoZSBzb3VyY2UgYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhbGlnbm1lbnQgOjogVGhlIHBpdGNoIG9mIHRoZSBiaXRtYXAgaXMgYSBtdWx0aXBsZSBvZiB0aGlzICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIHBhcmFtZXRlci4gIENvbW1vbiB2YWx1ZXMgYXJlIDEsIDIsIG9yIDQuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFyZ2V0ICAgIDo6IFRoZSB0YXJnZXQgYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSXQgaXMgcG9zc2libGUgdG8gY2FsbCBARlRfQml0bWFwX0NvbnZlcnQgbXVsdGlwbGUgdGltZXMgd2l0aG91dCAgICovCisgIC8qICAgIGNhbGxpbmcgQEZUX0JpdG1hcF9Eb25lICh0aGUgbWVtb3J5IGlzIHNpbXBseSByZWFsbG9jYXRlZCkuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlIEBGVF9CaXRtYXBfRG9uZSB0byBmaW5hbGx5IHJlbW92ZSB0aGUgYml0bWFwIG9iamVjdC4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgYGxpYnJhcnknIGFyZ3VtZW50IGlzIHRha2VuIHRvIGhhdmUgYWNjZXNzIHRvIEZyZWVUeXBlJ3MgICAgICAgKi8KKyAgLyogICAgbWVtb3J5IGhhbmRsaW5nIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfQml0bWFwX0NvbnZlcnQoIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CaXRtYXAgICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9CaXRtYXAgICAgICAgICp0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgICBhbGlnbm1lbnQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoU2xvdF9Pd25fQml0bWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE1ha2Ugc3VyZSB0aGF0IGEgZ2x5cGggc2xvdCBvd25zIGBzbG90LT5iaXRtYXAnLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNsb3QgOjogVGhlIGdseXBoIHNsb3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBARlRfQml0bWFwX0VtYm9sZGVuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HbHlwaFNsb3RfT3duX0JpdG1hcCggRlRfR2x5cGhTbG90ICBzbG90ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXBfRG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZXN0cm95IGEgYml0bWFwIG9iamVjdCBjcmVhdGVkIHdpdGggQEZUX0JpdG1hcF9OZXcuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIGEgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJpdG1hcCAgOjogVGhlIGJpdG1hcCBvYmplY3QgdG8gYmUgZnJlZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBgbGlicmFyeScgYXJndW1lbnQgaXMgdGFrZW4gdG8gaGF2ZSBhY2Nlc3MgdG8gRnJlZVR5cGUncyAgICAgICAqLworICAvKiAgICBtZW1vcnkgaGFuZGxpbmcgZnVuY3Rpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9CaXRtYXBfRG9uZSggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgIEZUX0JpdG1hcCAgKmJpdG1hcCApOworCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUQklUTUFQX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRiemlwMi5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRiemlwMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NGIyMjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGJ6aXAyLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0YnppcDIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBCemlwMi1jb21wcmVzc2VkIHN0cmVhbSBzdXBwb3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAxMCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgSm9lbCBLbGluZ2hlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQlpJUDJfSF9fCisjZGVmaW5lIF9fRlRCWklQMl9IX18KKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYnppcDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQlpJUDIgU3RyZWFtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNpbmcgYnppcDItY29tcHJlc3NlZCBmb250IGZpbGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbiBvZiBCemlwMi1zcGVjaWZpYyBmdW5jdGlvbnMuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgRlRfU3RyZWFtX09wZW5CemlwMgorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgT3BlbiBhIG5ldyBzdHJlYW0gdG8gcGFyc2UgYnppcDItY29tcHJlc3NlZCBmb250IGZpbGVzLiAgVGhpcyBpcworICAqICAgbWFpbmx5IHVzZWQgdG8gc3VwcG9ydCB0aGUgY29tcHJlc3NlZCBgKi5wY2YuYnoyJyBmb250cyB0aGF0IGNvbWUKKyAgKiAgIHdpdGggWEZyZWU4Ni4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgIHN0cmVhbSA6OgorICAqICAgICBUaGUgdGFyZ2V0IGVtYmVkZGluZyBzdHJlYW0uCisgICoKKyAgKiAgIHNvdXJjZSA6OgorICAqICAgICBUaGUgc291cmNlIHN0cmVhbS4KKyAgKgorICAqIEByZXR1cm46CisgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAqCisgICogQG5vdGU6CisgICogICBUaGUgc291cmNlIHN0cmVhbSBtdXN0IGJlIG9wZW5lZCBfYmVmb3JlXyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgICoKKyAgKiAgIENhbGxpbmcgdGhlIGludGVybmFsIGZ1bmN0aW9uIGBGVF9TdHJlYW1fQ2xvc2UnIG9uIHRoZSBuZXcgc3RyZWFtIHdpbGwKKyAgKiAgICpub3QqIGNhbGwgYEZUX1N0cmVhbV9DbG9zZScgb24gdGhlIHNvdXJjZSBzdHJlYW0uICBOb25lIG9mIHRoZSBzdHJlYW0KKyAgKiAgIG9iamVjdHMgd2lsbCBiZSByZWxlYXNlZCB0byB0aGUgaGVhcC4KKyAgKgorICAqICAgVGhlIHN0cmVhbSBpbXBsZW1lbnRhdGlvbiBpcyB2ZXJ5IGJhc2ljIGFuZCByZXNldHMgdGhlIGRlY29tcHJlc3Npb24KKyAgKiAgIHByb2Nlc3MgZWFjaCB0aW1lIHNlZWtpbmcgYmFja3dhcmRzIGlzIG5lZWRlZCB3aXRoaW4gdGhlIHN0cmVhbS4KKyAgKgorICAqICAgSW4gY2VydGFpbiBidWlsZHMgb2YgdGhlIGxpYnJhcnksIGJ6aXAyIGNvbXByZXNzaW9uIHJlY29nbml0aW9uIGlzCisgICogICBhdXRvbWF0aWNhbGx5IGhhbmRsZWQgd2hlbiBjYWxsaW5nIEBGVF9OZXdfRmFjZSBvciBARlRfT3Blbl9GYWNlLgorICAqICAgVGhpcyBtZWFucyB0aGF0IGlmIG5vIGZvbnQgZHJpdmVyIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlIHJhdworICAqICAgY29tcHJlc3NlZCBmaWxlLCB0aGUgbGlicmFyeSB3aWxsIHRyeSB0byBvcGVuIGEgYnppcDIgY29tcHJlc3NlZCBzdHJlYW0KKyAgKiAgIGZyb20gaXQgYW5kIHJlLW9wZW4gdGhlIGZhY2Ugd2l0aCBpdC4KKyAgKgorICAqICAgVGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIGBGVF9FcnJfVW5pbXBsZW1lbnRlZF9GZWF0dXJlJyBpZiB5b3VyIGJ1aWxkCisgICogICBvZiBGcmVlVHlwZSB3YXMgbm90IGNvbXBpbGVkIHdpdGggYnppcDIgc3VwcG9ydC4KKyAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9PcGVuQnppcDIoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHNvdXJjZSApOworCisgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUQlpJUDJfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA0YjBmYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaApAQCAtMCwwICsxLDEwNTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Y2FjaGUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBDYWNoZSBzdWJzeXN0ZW0gKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA4LCAyMDEwLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQ0FDSEVfSF9fCisjZGVmaW5lIF9fRlRDQUNIRV9IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmdGdseXBoLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiA8U2VjdGlvbj4KKyAgICogICAgY2FjaGVfc3Vic3lzdGVtCisgICAqCisgICAqIDxUaXRsZT4KKyAgICogICAgQ2FjaGUgU3ViLVN5c3RlbQorICAgKgorICAgKiA8QWJzdHJhY3Q+CisgICAqICAgIEhvdyB0byBjYWNoZSBmYWNlLCBzaXplLCBhbmQgZ2x5cGggZGF0YSB3aXRoIEZyZWVUeXBlfjIuCisgICAqCisgICAqIDxEZXNjcmlwdGlvbj4KKyAgICogICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBGcmVlVHlwZX4yIGNhY2hlIHN1Yi1zeXN0ZW0sIHdoaWNoIGlzIHVzZWQKKyAgICogICB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnRseSBvcGVuZWQgQEZUX0ZhY2UgYW5kIEBGVF9TaXplCisgICAqICAgb2JqZWN0cywgYXMgd2VsbCBhcyBjYWNoaW5nIGluZm9ybWF0aW9uIGxpa2UgY2hhcmFjdGVyIG1hcHMgYW5kIGdseXBoCisgICAqICAgaW1hZ2VzIHdoaWxlIGxpbWl0aW5nIHRoZWlyIG1heGltdW0gbWVtb3J5IHVzYWdlLgorICAgKgorICAgKiAgIE5vdGUgdGhhdCBhbGwgdHlwZXMgYW5kIGZ1bmN0aW9ucyBiZWdpbiB3aXRoIHRoZSBgRlRDXycgcHJlZml4LgorICAgKgorICAgKiAgIFRoZSBjYWNoZSBpcyBoaWdobHkgcG9ydGFibGUgYW5kIHRodXMgZG9lc24ndCBrbm93IGFueXRoaW5nIGFib3V0IHRoZQorICAgKiAgIGZvbnRzIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSwgb3IgaG93IHRvIGFjY2VzcyB0aGVtLiAgVGhpcyBpbXBsaWVzCisgICAqICAgdGhlIGZvbGxvd2luZyBzY2hlbWU6CisgICAqCisgICAqICAgRmlyc3QsIGF2YWlsYWJsZSBvciBpbnN0YWxsZWQgZm9udCBmYWNlcyBhcmUgdW5pcXVlbHkgaWRlbnRpZmllZCBieQorICAgKiAgIEBGVENfRmFjZUlEIHZhbHVlcywgcHJvdmlkZWQgdG8gdGhlIGNhY2hlIGJ5IHRoZSBjbGllbnQuICBOb3RlIHRoYXQKKyAgICogICB0aGUgY2FjaGUgb25seSBzdG9yZXMgYW5kIGNvbXBhcmVzIHRoZXNlIHZhbHVlcywgYW5kIGRvZXNuJ3QgdHJ5IHRvCisgICAqICAgaW50ZXJwcmV0IHRoZW0gaW4gYW55IHdheS4KKyAgICoKKyAgICogICBTZWNvbmQsIHRoZSBjYWNoZSBjYWxscywgb25seSB3aGVuIG5lZWRlZCwgYSBjbGllbnQtcHJvdmlkZWQgZnVuY3Rpb24KKyAgICogICB0byBjb252ZXJ0IGFuIEBGVENfRmFjZUlEIGludG8gYSBuZXcgQEZUX0ZhY2Ugb2JqZWN0LiAgVGhlIGxhdHRlciBpcworICAgKiAgIHRoZW4gY29tcGxldGVseSBtYW5hZ2VkIGJ5IHRoZSBjYWNoZSwgaW5jbHVkaW5nIGl0cyB0ZXJtaW5hdGlvbgorICAgKiAgIHRocm91Z2ggQEZUX0RvbmVfRmFjZS4gIFRvIG1vbml0b3IgdGVybWluYXRpb24gb2YgZmFjZSBvYmplY3RzLCB0aGUKKyAgICogICBmaW5hbGl6ZXIgY2FsbGJhY2sgaW4gdGhlIGBnZW5lcmljJyBmaWVsZCBvZiB0aGUgQEZUX0ZhY2Ugb2JqZWN0IGNhbgorICAgKiAgIGJlIHVzZWQsIHdoaWNoIG1pZ2h0IGFsc28gYmUgdXNlZCB0byBzdG9yZSB0aGUgQEZUQ19GYWNlSUQgb2YgdGhlCisgICAqICAgZmFjZS4KKyAgICoKKyAgICogICBDbGllbnRzIGFyZSBmcmVlIHRvIG1hcCBmYWNlIElEcyB0byBhbnl0aGluZyBlbHNlLiAgVGhlIG1vc3Qgc2ltcGxlCisgICAqICAgdXNhZ2UgaXMgdG8gYXNzb2NpYXRlIHRoZW0gdG8gYSAocGF0aG5hbWUsZmFjZV9pbmRleCkgcGFpciB0aGF0IGlzCisgICAqICAgdXNlZCB0byBjYWxsIEBGVF9OZXdfRmFjZS4gIEhvd2V2ZXIsIG1vcmUgY29tcGxleCBzY2hlbWVzIGFyZSBhbHNvCisgICAqICAgcG9zc2libGUuCisgICAqCisgICAqICAgTm90ZSB0aGF0IGZvciB0aGUgY2FjaGUgdG8gd29yayBjb3JyZWN0bHksIHRoZSBmYWNlIElEIHZhbHVlcyBtdXN0IGJlCisgICAqICAgKnBlcnNpc3RlbnQqLCB3aGljaCBtZWFucyB0aGF0IHRoZSBjb250ZW50cyB0aGV5IHBvaW50IHRvIHNob3VsZCBub3QKKyAgICogICBjaGFuZ2UgYXQgcnVudGltZSwgb3IgdGhhdCB0aGVpciB2YWx1ZSBzaG91bGQgbm90IGJlY29tZSBpbnZhbGlkLgorICAgKgorICAgKiAgIElmIHRoaXMgaXMgdW5hdm9pZGFibGUgKGUuZy4sIHdoZW4gYSBmb250IGlzIHVuaW5zdGFsbGVkIGF0IHJ1bnRpbWUpLAorICAgKiAgIHlvdSBzaG91bGQgY2FsbCBARlRDX01hbmFnZXJfUmVtb3ZlRmFjZUlEIGFzIHNvb24gYXMgcG9zc2libGUsIHRvIGxldAorICAgKiAgIHRoZSBjYWNoZSBnZXQgcmlkIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBvbGQgQEZUQ19GYWNlSUQgaXQgbWF5CisgICAqICAga2VlcCBpbnRlcm5hbGx5LiAgRmFpbHVyZSB0byBkbyBzbyB3aWxsIGxlYWQgdG8gaW5jb3JyZWN0IGJlaGF2aW91cgorICAgKiAgIG9yIGV2ZW4gY3Jhc2hlcy4KKyAgICoKKyAgICogICBUbyB1c2UgdGhlIGNhY2hlLCBzdGFydCB3aXRoIGNhbGxpbmcgQEZUQ19NYW5hZ2VyX05ldyB0byBjcmVhdGUgYSBuZXcKKyAgICogICBARlRDX01hbmFnZXIgb2JqZWN0LCB3aGljaCBtb2RlbHMgYSBzaW5nbGUgY2FjaGUgaW5zdGFuY2UuICBZb3UgY2FuCisgICAqICAgdGhlbiBsb29rIHVwIEBGVF9GYWNlIGFuZCBARlRfU2l6ZSBvYmplY3RzIHdpdGgKKyAgICogICBARlRDX01hbmFnZXJfTG9va3VwRmFjZSBhbmQgQEZUQ19NYW5hZ2VyX0xvb2t1cFNpemUsIHJlc3BlY3RpdmVseS4KKyAgICoKKyAgICogICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIGNoYXJtYXAgY2FjaGluZywgY2FsbCBARlRDX0NNYXBDYWNoZV9OZXcsIHRoZW4KKyAgICogICBsYXRlciB1c2UgQEZUQ19DTWFwQ2FjaGVfTG9va3VwIHRvIHBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YKKyAgICogICBARlRfR2V0X0NoYXJfSW5kZXgsIG9ubHkgbXVjaCBmYXN0ZXIuCisgICAqCisgICAqICAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBARlRfR2x5cGggY2FjaGluZywgY2FsbCBARlRDX0ltYWdlQ2FjaGUsIHRoZW4KKyAgICogICBsYXRlciB1c2UgQEZUQ19JbWFnZUNhY2hlX0xvb2t1cCB0byByZXRyaWV2ZSB0aGUgY29ycmVzcG9uZGluZworICAgKiAgIEBGVF9HbHlwaCBvYmplY3RzIGZyb20gdGhlIGNhY2hlLgorICAgKgorICAgKiAgIElmIHlvdSBuZWVkIGxvdHMgb2Ygc21hbGwgYml0bWFwcywgaXQgaXMgbXVjaCBtb3JlIG1lbW9yeSBlZmZpY2llbnQKKyAgICogICB0byBjYWxsIEBGVENfU0JpdENhY2hlX05ldyBmb2xsb3dlZCBieSBARlRDX1NCaXRDYWNoZV9Mb29rdXAuICBUaGlzCisgICAqICAgcmV0dXJucyBARlRDX1NCaXRSZWMgc3RydWN0dXJlcywgd2hpY2ggYXJlIHVzZWQgdG8gc3RvcmUgc21hbGwKKyAgICogICBiaXRtYXBzIGRpcmVjdGx5LiAgKEEgc21hbGwgYml0bWFwIGlzIG9uZSB3aG9zZSBtZXRyaWNzIGFuZAorICAgKiAgIGRpbWVuc2lvbnMgYWxsIGZpdCBpbnRvIDgtYml0IGludGVnZXJzKS4KKyAgICoKKyAgICogICBXZSBob3BlIHRvIGFsc28gcHJvdmlkZSBhIGtlcm5pbmcgY2FjaGUgaW4gdGhlIG5lYXIgZnV0dXJlLgorICAgKgorICAgKgorICAgKiA8T3JkZXI+CisgICAqICAgRlRDX01hbmFnZXIKKyAgICogICBGVENfRmFjZUlECisgICAqICAgRlRDX0ZhY2VfUmVxdWVzdGVyCisgICAqCisgICAqICAgRlRDX01hbmFnZXJfTmV3CisgICAqICAgRlRDX01hbmFnZXJfUmVzZXQKKyAgICogICBGVENfTWFuYWdlcl9Eb25lCisgICAqICAgRlRDX01hbmFnZXJfTG9va3VwRmFjZQorICAgKiAgIEZUQ19NYW5hZ2VyX0xvb2t1cFNpemUKKyAgICogICBGVENfTWFuYWdlcl9SZW1vdmVGYWNlSUQKKyAgICoKKyAgICogICBGVENfTm9kZQorICAgKiAgIEZUQ19Ob2RlX1VucmVmCisgICAqCisgICAqICAgRlRDX0ltYWdlQ2FjaGUKKyAgICogICBGVENfSW1hZ2VDYWNoZV9OZXcKKyAgICogICBGVENfSW1hZ2VDYWNoZV9Mb29rdXAKKyAgICoKKyAgICogICBGVENfU0JpdAorICAgKiAgIEZUQ19TQml0Q2FjaGUKKyAgICogICBGVENfU0JpdENhY2hlX05ldworICAgKiAgIEZUQ19TQml0Q2FjaGVfTG9va3VwCisgICAqCisgICAqICAgRlRDX0NNYXBDYWNoZQorICAgKiAgIEZUQ19DTWFwQ2FjaGVfTmV3CisgICAqICAgRlRDX0NNYXBDYWNoZV9Mb29rdXAKKyAgICoKKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICBCQVNJQyBUWVBFIERFRklOSVRJT05TICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHR5cGU6IEZUQ19GYWNlSUQKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEFuIG9wYXF1ZSBwb2ludGVyIHR5cGUgdGhhdCBpcyB1c2VkIHRvIGlkZW50aXR5IGZhY2Ugb2JqZWN0cy4gIFRoZQorICAgKiAgIGNvbnRlbnRzIG9mIHN1Y2ggb2JqZWN0cyBpcyBhcHBsaWNhdGlvbi1kZXBlbmRlbnQuCisgICAqCisgICAqICAgVGhlc2UgcG9pbnRlcnMgYXJlIHR5cGljYWxseSB1c2VkIHRvIHBvaW50IHRvIGEgdXNlci1kZWZpbmVkCisgICAqICAgc3RydWN0dXJlIGNvbnRhaW5pbmcgYSBmb250IGZpbGUgcGF0aCwgYW5kIGZhY2UgaW5kZXguCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIE5ldmVyIHVzZSBOVUxMIGFzIGEgdmFsaWQgQEZUQ19GYWNlSUQuCisgICAqCisgICAqICAgRmFjZSBJRHMgYXJlIHBhc3NlZCBieSB0aGUgY2xpZW50IHRvIHRoZSBjYWNoZSBtYW5hZ2VyLCB3aGljaCBjYWxscywKKyAgICogICB3aGVuIG5lZWRlZCwgdGhlIEBGVENfRmFjZV9SZXF1ZXN0ZXIgdG8gdHJhbnNsYXRlIHRoZW0gaW50byBuZXcKKyAgICogICBARlRfRmFjZSBvYmplY3RzLgorICAgKgorICAgKiAgIElmIHRoZSBjb250ZW50IG9mIGEgZ2l2ZW4gZmFjZSBJRCBjaGFuZ2VzIGF0IHJ1bnRpbWUsIG9yIGlmIHRoZSB2YWx1ZQorICAgKiAgIGJlY29tZXMgaW52YWxpZCAoZS5nLiwgd2hlbiB1bmluc3RhbGxpbmcgYSBmb250KSwgeW91IHNob3VsZAorICAgKiAgIGltbWVkaWF0ZWx5IGNhbGwgQEZUQ19NYW5hZ2VyX1JlbW92ZUZhY2VJRCBiZWZvcmUgYW55IG90aGVyIGNhY2hlCisgICAqICAgZnVuY3Rpb24uCisgICAqCisgICAqICAgRmFpbHVyZSB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBpbmNvcnJlY3QgYmVoYXZpb3VyIG9yIGV2ZW4KKyAgICogICBtZW1vcnkgbGVha3MgYW5kIGNyYXNoZXMuCisgICAqLworICB0eXBlZGVmIEZUX1BvaW50ZXIgIEZUQ19GYWNlSUQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBGVENfRmFjZV9SZXF1ZXN0ZXIKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgY2FsbGJhY2sgZnVuY3Rpb24gcHJvdmlkZWQgYnkgY2xpZW50IGFwcGxpY2F0aW9ucy4gIEl0IGlzIHVzZWQgYnkKKyAgICogICB0aGUgY2FjaGUgbWFuYWdlciB0byB0cmFuc2xhdGUgYSBnaXZlbiBARlRDX0ZhY2VJRCBpbnRvIGEgbmV3IHZhbGlkCisgICAqICAgQEZUX0ZhY2Ugb2JqZWN0LCBvbiBkZW1hbmQuCisgICAqCisgICAqIDxJbnB1dD4KKyAgICogICBmYWNlX2lkIDo6CisgICAqICAgICBUaGUgZmFjZSBJRCB0byByZXNvbHZlLgorICAgKgorICAgKiAgIGxpYnJhcnkgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIGEgRnJlZVR5cGUgbGlicmFyeSBvYmplY3QuCisgICAqCisgICAqICAgcmVxX2RhdGEgOjoKKyAgICogICAgIEFwcGxpY2F0aW9uLXByb3ZpZGVkIHJlcXVlc3QgZGF0YSAoc2VlIG5vdGUgYmVsb3cpLgorICAgKgorICAgKiA8T3V0cHV0PgorICAgKiAgIGFmYWNlIDo6CisgICAqICAgICBBIG5ldyBARlRfRmFjZSBoYW5kbGUuCisgICAqCisgICAqIDxSZXR1cm4+CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogPE5vdGU+CisgICAqICAgVGhlIHRoaXJkIHBhcmFtZXRlciBgcmVxX2RhdGEnIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgcGFzc2VkIGJ5IHRoZQorICAgKiAgIGNsaWVudCB3aGVuIEBGVENfTWFuYWdlcl9OZXcgaXMgY2FsbGVkLgorICAgKgorICAgKiAgIFRoZSBmYWNlIHJlcXVlc3RlciBzaG91bGQgbm90IHBlcmZvcm0gZnVubnkgdGhpbmdzIG9uIHRoZSByZXR1cm5lZAorICAgKiAgIGZhY2Ugb2JqZWN0LCBsaWtlIGNyZWF0aW5nIGEgbmV3IEBGVF9TaXplIGZvciBpdCwgb3Igc2V0dGluZyBhCisgICAqICAgdHJhbnNmb3JtYXRpb24gdGhyb3VnaCBARlRfU2V0X1RyYW5zZm9ybSEKKyAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVENfRmFjZV9SZXF1ZXN0ZXIpKCBGVENfRmFjZUlEICBmYWNlX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgcmVxdWVzdF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UqICAgIGFmYWNlICk7CisKKyAvKiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICBDQUNIRSBNQU5BR0VSIE9CSkVDVCAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19NYW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgb2JqZWN0IGNvcnJlc3BvbmRzIHRvIG9uZSBpbnN0YW5jZSBvZiB0aGUgY2FjaGUtc3Vic3lzdGVtLiAgICAqLworICAvKiAgICBJdCBpcyB1c2VkIHRvIGNhY2hlIG9uZSBvciBtb3JlIEBGVF9GYWNlIG9iamVjdHMsIGFsb25nIHdpdGggICAgICAgKi8KKyAgLyogICAgY29ycmVzcG9uZGluZyBARlRfU2l6ZSBvYmplY3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgbWFuYWdlciBpbnRlbnRpb25hbGx5IGxpbWl0cyB0aGUgdG90YWwgbnVtYmVyIG9mIG9wZW5lZCAgICAgICAgKi8KKyAgLyogICAgQEZUX0ZhY2UgYW5kIEBGVF9TaXplIG9iamVjdHMgdG8gY29udHJvbCBtZW1vcnkgdXNhZ2UuICBTZWUgdGhlICAgICovCisgIC8qICAgIGBtYXhfZmFjZXMnIGFuZCBgbWF4X3NpemVzJyBwYXJhbWV0ZXJzIG9mIEBGVENfTWFuYWdlcl9OZXcuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG1hbmFnZXIgaXMgYWxzbyB1c2VkIHRvIGNhY2hlIGBub2Rlcycgb2YgdmFyaW91cyB0eXBlcyB3aGlsZSAgICovCisgIC8qICAgIGxpbWl0aW5nIHRoZWlyIHRvdGFsIG1lbW9yeSB1c2FnZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQWxsIGxpbWl0YXRpb25zIGFyZSBlbmZvcmNlZCBieSBrZWVwaW5nIGxpc3RzIG9mIG1hbmFnZWQgb2JqZWN0cyAgICovCisgIC8qICAgIGluIG1vc3QtcmVjZW50bHktdXNlZCBvcmRlciwgYW5kIGZsdXNoaW5nIG9sZCBub2RlcyB0byBtYWtlIHJvb20gICAqLworICAvKiAgICBmb3IgbmV3IG9uZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUQ19NYW5hZ2VyUmVjXyogIEZUQ19NYW5hZ2VyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX05vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gb3BhcXVlIGhhbmRsZSB0byBhIGNhY2hlIG5vZGUgb2JqZWN0LiAgRWFjaCBjYWNoZSBub2RlIGlzICAgICAgICovCisgIC8qICAgIHJlZmVyZW5jZS1jb3VudGVkLiAgQSBub2RlIHdpdGggYSBjb3VudCBvZn4wIG1pZ2h0IGJlIGZsdXNoZWQgICAgICAqLworICAvKiAgICBvdXQgb2YgYSBmdWxsIGNhY2hlIHdoZW5ldmVyIGEgbG9va3VwIHJlcXVlc3QgaXMgcGVyZm9ybWVkLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIHlvdSBsb29rIHVwIG5vZGVzLCB5b3UgaGF2ZSB0aGUgYWJpbGl0eSB0byBgYWNxdWlyZScgdGhlbSwgICAgICAqLworICAvKiAgICBpLmUuLCB0byBpbmNyZW1lbnQgdGhlaXIgcmVmZXJlbmNlIGNvdW50LiAgVGhpcyB3aWxsIHByZXZlbnQgdGhlICAgKi8KKyAgLyogICAgbm9kZSBmcm9tIGJlaW5nIGZsdXNoZWQgb3V0IG9mIHRoZSBjYWNoZSB1bnRpbCB5b3UgZXhwbGljaXRseSAgICAgICovCisgIC8qICAgIGByZWxlYXNlJyBpdCAoc2VlIEBGVENfTm9kZV9VbnJlZikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2VlIGFsc28gQEZUQ19TQml0Q2FjaGVfTG9va3VwIGFuZCBARlRDX0ltYWdlQ2FjaGVfTG9va3VwLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVENfTm9kZVJlY18qICBGVENfTm9kZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19NYW5hZ2VyX05ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENyZWF0ZSBhIG5ldyBjYWNoZSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgICA6OiBUaGUgcGFyZW50IEZyZWVUeXBlIGxpYnJhcnkgaGFuZGxlIHRvIHVzZS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X2ZhY2VzIDo6IE1heGltdW0gbnVtYmVyIG9mIG9wZW5lZCBARlRfRmFjZSBvYmplY3RzIG1hbmFnZWQgYnkgICovCisgIC8qICAgICAgICAgICAgICAgICB0aGlzIGNhY2hlIGluc3RhbmNlLiAgVXNlfjAgZm9yIGRlZmF1bHRzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X3NpemVzIDo6IE1heGltdW0gbnVtYmVyIG9mIG9wZW5lZCBARlRfU2l6ZSBvYmplY3RzIG1hbmFnZWQgYnkgICovCisgIC8qICAgICAgICAgICAgICAgICB0aGlzIGNhY2hlIGluc3RhbmNlLiAgVXNlfjAgZm9yIGRlZmF1bHRzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X2J5dGVzIDo6IE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHVzZSBmb3IgY2FjaGVkIGRhdGEgbm9kZXMuICovCisgIC8qICAgICAgICAgICAgICAgICBVc2V+MCBmb3IgZGVmYXVsdHMuICBOb3RlIHRoYXQgdGhpcyB2YWx1ZSBkb2VzIG5vdCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgYWNjb3VudCBmb3IgbWFuYWdlZCBARlRfRmFjZSBhbmQgQEZUX1NpemUgb2JqZWN0cy4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlcXVlc3RlciA6OiBBbiBhcHBsaWNhdGlvbi1wcm92aWRlZCBjYWxsYmFjayB1c2VkIHRvIHRyYW5zbGF0ZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgZmFjZSBJRHMgaW50byByZWFsIEBGVF9GYWNlIG9iamVjdHMuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlcV9kYXRhICA6OiBBIGdlbmVyaWMgcG9pbnRlciB0aGF0IGlzIHBhc3NlZCB0byB0aGUgcmVxdWVzdGVyICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZCAoc2VlIEBGVENfRmFjZV9SZXF1ZXN0ZXIpLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhbWFuYWdlciAgOjogQSBoYW5kbGUgdG8gYSBuZXcgbWFuYWdlciBvYmplY3QuICAwfmluIGNhc2Ugb2YgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIGZhaWx1cmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRDX01hbmFnZXJfTmV3KCBGVF9MaWJyYXJ5ICAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICBtYXhfZmFjZXMsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICBtYXhfc2l6ZXMsCisgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICAgICBtYXhfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgRlRDX0ZhY2VfUmVxdWVzdGVyICByZXF1ZXN0ZXIsCisgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgICAgICAgICByZXFfZGF0YSwKKyAgICAgICAgICAgICAgICAgICBGVENfTWFuYWdlciAgICAgICAgKmFtYW5hZ2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfTWFuYWdlcl9SZXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFbXB0eSBhIGdpdmVuIGNhY2hlIG1hbmFnZXIuICBUaGlzIHNpbXBseSBnZXRzIHJpZCBvZiBhbGwgdGhlICAgICAgKi8KKyAgLyogICAgY3VycmVudGx5IGNhY2hlZCBARlRfRmFjZSBhbmQgQEZUX1NpemUgb2JqZWN0cyB3aXRoaW4gdGhlIG1hbmFnZXIuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWFuYWdlciA6OiBBIGhhbmRsZSB0byB0aGUgbWFuYWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVENfTWFuYWdlcl9SZXNldCggRlRDX01hbmFnZXIgIG1hbmFnZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19NYW5hZ2VyX0RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERlc3Ryb3kgYSBnaXZlbiBtYW5hZ2VyIGFmdGVyIGVtcHR5aW5nIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hbmFnZXIgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBjYWNoZSBtYW5hZ2VyIG9iamVjdC4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRDX01hbmFnZXJfRG9uZSggRlRDX01hbmFnZXIgIG1hbmFnZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19NYW5hZ2VyX0xvb2t1cEZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBARlRfRmFjZSBvYmplY3QgdGhhdCBjb3JyZXNwb25kcyB0byBhIGdpdmVuIGZhY2UgSUQgICAqLworICAvKiAgICB0aHJvdWdoIGEgY2FjaGUgbWFuYWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYW5hZ2VyIDo6IEEgaGFuZGxlIHRvIHRoZSBjYWNoZSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2VfaWQgOjogVGhlIElEIG9mIHRoZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSByZXR1cm5lZCBARlRfRmFjZSBvYmplY3QgaXMgYWx3YXlzIG93bmVkIGJ5IHRoZSBtYW5hZ2VyLiAgWW91ICAqLworICAvKiAgICBzaG91bGQgbmV2ZXIgdHJ5IHRvIGRpc2NhcmQgaXQgeW91cnNlbGYuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBARlRfRmFjZSBvYmplY3QgZG9lc24ndCBuZWNlc3NhcmlseSBoYXZlIGEgY3VycmVudCBzaXplIG9iamVjdCAqLworICAvKiAgICAoaS5lLiwgZmFjZS0+c2l6ZSBjYW4gYmV+MCkuICBJZiB5b3UgbmVlZCBhIHNwZWNpZmljIGBmb250IHNpemUnLCAgKi8KKyAgLyogICAgdXNlIEBGVENfTWFuYWdlcl9Mb29rdXBTaXplIGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOZXZlciBjaGFuZ2UgdGhlIGZhY2UncyB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggKGkuZS4sIG5ldmVyIGNhbGwgICAgKi8KKyAgLyogICAgdGhlIEBGVF9TZXRfVHJhbnNmb3JtIGZ1bmN0aW9uKSBvbiBhIHJldHVybmVkIGZhY2UhICBJZiB5b3UgbmVlZCAgICovCisgIC8qICAgIHRvIHRyYW5zZm9ybSBnbHlwaHMsIGRvIGl0IHlvdXJzZWxmIGFmdGVyIGdseXBoIGxvYWRpbmcuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiB5b3UgcGVyZm9ybSBhIGxvb2t1cCwgb3V0LW9mLW1lbW9yeSBlcnJvcnMgYXJlIGRldGVjdGVkICAgICAgICovCisgIC8qICAgIF93aXRoaW5fIHRoZSBsb29rdXAgYW5kIGZvcmNlIGluY3JlbWVudGFsIGZsdXNoZXMgb2YgdGhlIGNhY2hlICAgICAqLworICAvKiAgICB1bnRpbCBlbm91Z2ggbWVtb3J5IGlzIHJlbGVhc2VkIGZvciB0aGUgbG9va3VwIHRvIHN1Y2NlZWQuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGEgbG9va3VwIGZhaWxzIHdpdGggYEZUX0Vycl9PdXRfT2ZfTWVtb3J5JyB0aGUgY2FjaGUgaGFzICAgICAgICAqLworICAvKiAgICBhbHJlYWR5IGJlZW4gY29tcGxldGVseSBmbHVzaGVkLCBhbmQgc3RpbGwgbm8gbWVtb3J5IHdhcyBhdmFpbGFibGUgKi8KKyAgLyogICAgZm9yIHRoZSBvcGVyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRDX01hbmFnZXJfTG9va3VwRmFjZSggRlRDX01hbmFnZXIgIG1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19GYWNlSUQgICBmYWNlX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlICAgICAqYWZhY2UgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19TY2FsZXJSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgYSBnaXZlbiBjaGFyYWN0ZXIgc2l6ZSBpbiBlaXRoZXIgICAgICAqLworICAvKiAgICBwaXhlbHMgb3IgcG9pbnRzIHRvIHRoZSBjYWNoZSBtYW5hZ2VyLiAgU2VlICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUQ19NYW5hZ2VyX0xvb2t1cFNpemUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pZCA6OiBUaGUgc291cmNlIGZhY2UgSUQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB3aWR0aCAgIDo6IFRoZSBjaGFyYWN0ZXIgd2lkdGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhlaWdodCAgOjogVGhlIGNoYXJhY3RlciBoZWlnaHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGl4ZWwgICA6OiBBIEJvb2xlYW4uICBJZiAxLCB0aGUgYHdpZHRoJyBhbmQgYGhlaWdodCcgZmllbGRzIGFyZSAgICovCisgIC8qICAgICAgICAgICAgICAgaW50ZXJwcmV0ZWQgYXMgaW50ZWdlciBwaXhlbCBjaGFyYWN0ZXIgc2l6ZXMuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIE90aGVyd2lzZSwgdGhleSBhcmUgZXhwcmVzc2VkIGFzIDEvNjR0aCBvZiBwb2ludHMuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHhfcmVzICAgOjogT25seSB1c2VkIHdoZW4gYHBpeGVsJyBpcyB2YWx1ZX4wIHRvIGluZGljYXRlIHRoZSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIGhvcml6b250YWwgcmVzb2x1dGlvbiBpbiBkcGkuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlfcmVzICAgOjogT25seSB1c2VkIHdoZW4gYHBpeGVsJyBpcyB2YWx1ZX4wIHRvIGluZGljYXRlIHRoZSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIHZlcnRpY2FsIHJlc29sdXRpb24gaW4gZHBpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHR5cGUgaXMgbWFpbmx5IHVzZWQgdG8gcmV0cmlldmUgQEZUX1NpemUgb2JqZWN0cyB0aHJvdWdoIHRoZSAgKi8KKyAgLyogICAgY2FjaGUgbWFuYWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRDX1NjYWxlclJlY18KKyAgeworICAgIEZUQ19GYWNlSUQgIGZhY2VfaWQ7CisgICAgRlRfVUludCAgICAgd2lkdGg7CisgICAgRlRfVUludCAgICAgaGVpZ2h0OworICAgIEZUX0ludCAgICAgIHBpeGVsOworICAgIEZUX1VJbnQgICAgIHhfcmVzOworICAgIEZUX1VJbnQgICAgIHlfcmVzOworCisgIH0gRlRDX1NjYWxlclJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19TY2FsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGFuIEBGVENfU2NhbGVyUmVjIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRDX1NjYWxlclJlY18qICBGVENfU2NhbGVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX01hbmFnZXJfTG9va3VwU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0cmlldmUgdGhlIEBGVF9TaXplIG9iamVjdCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgZ2l2ZW4gICAgICAgICAgICovCisgIC8qICAgIEBGVENfU2NhbGVyUmVjIHBvaW50ZXIgdGhyb3VnaCBhIGNhY2hlIG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hbmFnZXIgOjogQSBoYW5kbGUgdG8gdGhlIGNhY2hlIG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2NhbGVyICA6OiBBIHNjYWxlciBoYW5kbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYXNpemUgICA6OiBBIGhhbmRsZSB0byB0aGUgc2l6ZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJldHVybmVkIEBGVF9TaXplIG9iamVjdCBpcyBhbHdheXMgb3duZWQgYnkgdGhlIG1hbmFnZXIuICBZb3UgICovCisgIC8qICAgIHNob3VsZCBuZXZlciB0cnkgdG8gZGlzY2FyZCBpdCBieSB5b3Vyc2VsZi4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgWW91IGNhbiBhY2Nlc3MgdGhlIHBhcmVudCBARlRfRmFjZSBvYmplY3Qgc2ltcGx5IGFzIGBzaXplLT5mYWNlJyAgICovCisgIC8qICAgIGlmIHlvdSBuZWVkIGl0LiAgTm90ZSB0aGF0IHRoaXMgb2JqZWN0IGlzIGFsc28gb3duZWQgYnkgdGhlICAgICAgICAqLworICAvKiAgICBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIHlvdSBwZXJmb3JtIGEgbG9va3VwLCBvdXQtb2YtbWVtb3J5IGVycm9ycyBhcmUgZGV0ZWN0ZWQgICAgICAgKi8KKyAgLyogICAgX3dpdGhpbl8gdGhlIGxvb2t1cCBhbmQgZm9yY2UgaW5jcmVtZW50YWwgZmx1c2hlcyBvZiB0aGUgY2FjaGUgICAgICovCisgIC8qICAgIHVudGlsIGVub3VnaCBtZW1vcnkgaXMgcmVsZWFzZWQgZm9yIHRoZSBsb29rdXAgdG8gc3VjY2VlZC4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgYSBsb29rdXAgZmFpbHMgd2l0aCBgRlRfRXJyX091dF9PZl9NZW1vcnknIHRoZSBjYWNoZSBoYXMgICAgICAgICovCisgIC8qICAgIGFscmVhZHkgYmVlbiBjb21wbGV0ZWx5IGZsdXNoZWQsIGFuZCBzdGlsbCBubyBtZW1vcnkgaXMgYXZhaWxhYmxlICAqLworICAvKiAgICBmb3IgdGhlIG9wZXJhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVENfTWFuYWdlcl9Mb29rdXBTaXplKCBGVENfTWFuYWdlciAgbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRDX1NjYWxlciAgIHNjYWxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZSAgICAgKmFzaXplICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfTm9kZV9VbnJlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZWNyZW1lbnQgYSBjYWNoZSBub2RlJ3MgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50LiAgV2hlbiB0aGUgY291bnQgKi8KKyAgLyogICAgcmVhY2hlcyAwLCBpdCBpcyBub3QgZGVzdHJveWVkIGJ1dCBiZWNvbWVzIGVsaWdpYmxlIGZvciBzdWJzZXF1ZW50ICovCisgIC8qICAgIGNhY2hlIGZsdXNoZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5vZGUgICAgOjogVGhlIGNhY2hlIG5vZGUgaGFuZGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWFuYWdlciA6OiBUaGUgY2FjaGUgbWFuYWdlciBoYW5kbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVENfTm9kZV9VbnJlZiggRlRDX05vZGUgICAgIG5vZGUsCisgICAgICAgICAgICAgICAgICBGVENfTWFuYWdlciAgbWFuYWdlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUQ19NYW5hZ2VyX1JlbW92ZUZhY2VJRAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBzcGVjaWFsIGZ1bmN0aW9uIHVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIGNhY2hlIG1hbmFnZXIgdGhhdAorICAgKiAgIGEgZ2l2ZW4gQEZUQ19GYWNlSUQgaXMgbm8gbG9uZ2VyIHZhbGlkLCBlaXRoZXIgYmVjYXVzZSBpdHMKKyAgICogICBjb250ZW50IGNoYW5nZWQsIG9yIGJlY2F1c2UgaXQgd2FzIGRlYWxsb2NhdGVkIG9yIHVuaW5zdGFsbGVkLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgbWFuYWdlciA6OgorICAgKiAgICAgVGhlIGNhY2hlIG1hbmFnZXIgaGFuZGxlLgorICAgKgorICAgKiAgIGZhY2VfaWQgOjoKKyAgICogICAgIFRoZSBARlRDX0ZhY2VJRCB0byBiZSByZW1vdmVkLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGlzIGZ1bmN0aW9uIGZsdXNoZXMgYWxsIG5vZGVzIGZyb20gdGhlIGNhY2hlIGNvcnJlc3BvbmRpbmcgdG8gdGhpcworICAgKiAgIGBmYWNlX2lkJywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIG5vZGVzIHdpdGggYSBub24tbnVsbCByZWZlcmVuY2UKKyAgICogICBjb3VudC4KKyAgICoKKyAgICogICBTdWNoIG5vZGVzIGFyZSBob3dldmVyIG1vZGlmaWVkIGludGVybmFsbHkgc28gYXMgdG8gbmV2ZXIgYXBwZWFyCisgICAqICAgaW4gbGF0ZXIgbG9va3VwcyB3aXRoIHRoZSBzYW1lIGBmYWNlX2lkJyB2YWx1ZSwgYW5kIHRvIGJlIGltbWVkaWF0ZWx5CisgICAqICAgZGVzdHJveWVkIHdoZW4gcmVsZWFzZWQgYnkgYWxsIHRoZWlyIHVzZXJzLgorICAgKgorICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRDX01hbmFnZXJfUmVtb3ZlRmFjZUlEKCBGVENfTWFuYWdlciAgbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVENfRmFjZUlEICAgZmFjZV9pZCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FjaGVfc3Vic3lzdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBGVENfQ01hcENhY2hlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBbiBvcGFxdWUgaGFuZGxlIHVzZWQgdG8gbW9kZWwgYSBjaGFybWFwIGNhY2hlLiAgVGhpcyBjYWNoZSBpcyB0bworICAgKiAgIGhvbGQgY2hhcmFjdGVyIGNvZGVzIC0+IGdseXBoIGluZGljZXMgbWFwcGluZ3MuCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVENfQ01hcENhY2hlUmVjXyogIEZUQ19DTWFwQ2FjaGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRDX0NNYXBDYWNoZV9OZXcKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIENyZWF0ZSBhIG5ldyBjaGFybWFwIGNhY2hlLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgbWFuYWdlciA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIGNhY2hlIG1hbmFnZXIuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgYWNhY2hlIDo6CisgICAqICAgICBBIG5ldyBjYWNoZSBoYW5kbGUuICBOVUxMIGluIGNhc2Ugb2YgZXJyb3IuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgTGlrZSBhbGwgb3RoZXIgY2FjaGVzLCB0aGlzIG9uZSB3aWxsIGJlIGRlc3Ryb3llZCB3aXRoIHRoZSBjYWNoZQorICAgKiAgIG1hbmFnZXIuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRDX0NNYXBDYWNoZV9OZXcoIEZUQ19NYW5hZ2VyICAgICBtYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgRlRDX0NNYXBDYWNoZSAgKmFjYWNoZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRDX0NNYXBDYWNoZV9Mb29rdXAKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRyYW5zbGF0ZSBhIGNoYXJhY3RlciBjb2RlIGludG8gYSBnbHlwaCBpbmRleCwgdXNpbmcgdGhlIGNoYXJtYXAKKyAgICogICBjYWNoZS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGNhY2hlIDo6CisgICAqICAgICBBIGNoYXJtYXAgY2FjaGUgaGFuZGxlLgorICAgKgorICAgKiAgIGZhY2VfaWQgOjoKKyAgICogICAgIFRoZSBzb3VyY2UgZmFjZSBJRC4KKyAgICoKKyAgICogICBjbWFwX2luZGV4IDo6CisgICAqICAgICBUaGUgaW5kZXggb2YgdGhlIGNoYXJtYXAgaW4gdGhlIHNvdXJjZSBmYWNlLiAgQW55IG5lZ2F0aXZlIHZhbHVlCisgICAqICAgICBtZWFucyB0byB1c2UgdGhlIGNhY2hlIEBGVF9GYWNlJ3MgZGVmYXVsdCBjaGFybWFwLgorICAgKgorICAgKiAgIGNoYXJfY29kZSA6OgorICAgKiAgICAgVGhlIGNoYXJhY3RlciBjb2RlIChpbiB0aGUgY29ycmVzcG9uZGluZyBjaGFybWFwKS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICAgR2x5cGggaW5kZXguICAwfm1lYW5zIGBubyBnbHlwaCcuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX1VJbnQgKQorICBGVENfQ01hcENhY2hlX0xvb2t1cCggRlRDX0NNYXBDYWNoZSAgY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVENfRmFjZUlEICAgICBmYWNlX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgY21hcF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgICAgIGNoYXJfY29kZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FjaGVfc3Vic3lzdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgIElNQUdFIENBQ0hFIE9CSkVDVCAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc3RydWN0OgorICAgKiAgIEZUQ19JbWFnZVR5cGVSZWMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgdGhlIHR5cGUgb2YgaW1hZ2VzIGluIGEgZ2x5cGggY2FjaGUuCisgICAqCisgICAqIEBmaWVsZHM6CisgICAqICAgZmFjZV9pZCA6OgorICAgKiAgICAgVGhlIGZhY2UgSUQuCisgICAqCisgICAqICAgd2lkdGggOjoKKyAgICogICAgIFRoZSB3aWR0aCBpbiBwaXhlbHMuCisgICAqCisgICAqICAgaGVpZ2h0IDo6CisgICAqICAgICBUaGUgaGVpZ2h0IGluIHBpeGVscy4KKyAgICoKKyAgICogICBmbGFncyA6OgorICAgKiAgICAgVGhlIGxvYWQgZmxhZ3MsIGFzIGluIEBGVF9Mb2FkX0dseXBoLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUQ19JbWFnZVR5cGVSZWNfCisgIHsKKyAgICBGVENfRmFjZUlEICBmYWNlX2lkOworICAgIEZUX0ludCAgICAgIHdpZHRoOworICAgIEZUX0ludCAgICAgIGhlaWdodDsKKyAgICBGVF9JbnQzMiAgICBmbGFnczsKKworICB9IEZUQ19JbWFnZVR5cGVSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBGVENfSW1hZ2VUeXBlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGhhbmRsZSB0byBhbiBARlRDX0ltYWdlVHlwZVJlYyBzdHJ1Y3R1cmUuCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVENfSW1hZ2VUeXBlUmVjXyogIEZUQ19JbWFnZVR5cGU7CisKKworICAvKiAqLworCisKKyNkZWZpbmUgRlRDX0lNQUdFX1RZUEVfQ09NUEFSRSggZDEsIGQyICkgICAgICBcCisgICAgICAgICAgKCAoZDEpLT5mYWNlX2lkID09IChkMiktPmZhY2VfaWQgJiYgXAorICAgICAgICAgICAgKGQxKS0+d2lkdGggICA9PSAoZDIpLT53aWR0aCAgICYmIFwKKyAgICAgICAgICAgIChkMSktPmZsYWdzICAgPT0gKGQyKS0+ZmxhZ3MgICApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfSW1hZ2VDYWNoZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIGdseXBoIGltYWdlIGNhY2hlIG9iamVjdC4gIFRoZXkgYXJlIGRlc2lnbmVkIHRvICAgICAgKi8KKyAgLyogICAgaG9sZCBtYW55IGRpc3RpbmN0IGdseXBoIGltYWdlcyB3aGlsZSBub3QgZXhjZWVkaW5nIGEgY2VydGFpbiAgICAgICovCisgIC8qICAgIG1lbW9yeSB0aHJlc2hvbGQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRDX0ltYWdlQ2FjaGVSZWNfKiAgRlRDX0ltYWdlQ2FjaGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfSW1hZ2VDYWNoZV9OZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDcmVhdGUgYSBuZXcgZ2x5cGggaW1hZ2UgY2FjaGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYW5hZ2VyIDo6IFRoZSBwYXJlbnQgbWFuYWdlciBmb3IgdGhlIGltYWdlIGNhY2hlLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhY2FjaGUgIDo6IEEgaGFuZGxlIHRvIHRoZSBuZXcgZ2x5cGggaW1hZ2UgY2FjaGUgb2JqZWN0LiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVENfSW1hZ2VDYWNoZV9OZXcoIEZUQ19NYW5hZ2VyICAgICAgbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICBGVENfSW1hZ2VDYWNoZSAgKmFjYWNoZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX0ltYWdlQ2FjaGVfTG9va3VwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0cmlldmUgYSBnaXZlbiBnbHlwaCBpbWFnZSBmcm9tIGEgZ2x5cGggaW1hZ2UgY2FjaGUuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FjaGUgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZ2x5cGggaW1hZ2UgY2FjaGUuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0eXBlICAgOjogQSBwb2ludGVyIHRvIGEgZ2x5cGggaW1hZ2UgdHlwZSBkZXNjcmlwdG9yLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdpbmRleCA6OiBUaGUgZ2x5cGggaW5kZXggdG8gcmV0cmlldmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFnbHlwaCA6OiBUaGUgY29ycmVzcG9uZGluZyBARlRfR2x5cGggb2JqZWN0LiAgMH5pbiBjYXNlIG9mICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgZmFpbHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFub2RlICA6OiBVc2VkIHRvIHJldHVybiB0aGUgYWRkcmVzcyBvZiBvZiB0aGUgY29ycmVzcG9uZGluZyBjYWNoZSAqLworICAvKiAgICAgICAgICAgICAgbm9kZSBhZnRlciBpbmNyZW1lbnRpbmcgaXRzIHJlZmVyZW5jZSBjb3VudCAoc2VlIG5vdGUgICAgKi8KKyAgLyogICAgICAgICAgICAgIGJlbG93KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJldHVybmVkIGdseXBoIGlzIG93bmVkIGFuZCBtYW5hZ2VkIGJ5IHRoZSBnbHlwaCBpbWFnZSBjYWNoZS4gICovCisgIC8qICAgIE5ldmVyIHRyeSB0byB0cmFuc2Zvcm0gb3IgZGlzY2FyZCBpdCBtYW51YWxseSEgIFlvdSBjYW4gaG93ZXZlciAgICAqLworICAvKiAgICBjcmVhdGUgYSBjb3B5IHdpdGggQEZUX0dseXBoX0NvcHkgYW5kIG1vZGlmeSB0aGUgbmV3IG9uZS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGBhbm9kZScgaXMgX25vdF8gTlVMTCwgaXQgcmVjZWl2ZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGNhY2hlICAgICAqLworICAvKiAgICBub2RlIGNvbnRhaW5pbmcgdGhlIGdseXBoIGltYWdlLCBhZnRlciBpbmNyZWFzaW5nIGl0cyByZWZlcmVuY2UgICAgKi8KKyAgLyogICAgY291bnQuICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbm9kZSAoYXMgd2VsbCBhcyB0aGUgQEZUX0dseXBoKSB3aWxsICovCisgIC8qICAgIGFsd2F5cyBiZSBrZXB0IGluIHRoZSBjYWNoZSB1bnRpbCB5b3UgY2FsbCBARlRDX05vZGVfVW5yZWYgdG8gICAgICAqLworICAvKiAgICBgcmVsZWFzZScgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGBhbm9kZScgaXMgTlVMTCwgdGhlIGNhY2hlIG5vZGUgaXMgbGVmdCB1bmNoYW5nZWQsIHdoaWNoIG1lYW5zICAqLworICAvKiAgICB0aGF0IHRoZSBARlRfR2x5cGggY291bGQgYmUgZmx1c2hlZCBvdXQgb2YgdGhlIGNhY2hlIG9uIHRoZSBuZXh0ICAgKi8KKyAgLyogICAgY2FsbCB0byBvbmUgb2YgdGhlIGNhY2hpbmcgc3ViLXN5c3RlbSBBUElzLiAgRG9uJ3QgYXNzdW1lIHRoYXQgaXQgICovCisgIC8qICAgIGlzIHBlcnNpc3RlbnQhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUQ19JbWFnZUNhY2hlX0xvb2t1cCggRlRDX0ltYWdlQ2FjaGUgIGNhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19JbWFnZVR5cGUgICB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBnaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGggICAgICAgKmFnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVENfTm9kZSAgICAgICAqYW5vZGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19JbWFnZUNhY2hlX0xvb2t1cFNjYWxlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdmFyaWFudCBvZiBARlRDX0ltYWdlQ2FjaGVfTG9va3VwIHRoYXQgdXNlcyBhbiBARlRDX1NjYWxlclJlYyAgICAqLworICAvKiAgICB0byBzcGVjaWZ5IHRoZSBmYWNlIElEIGFuZCBpdHMgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYWNoZSAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZ2x5cGggaW1hZ2UgY2FjaGUuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNjYWxlciAgICAgOjogQSBwb2ludGVyIHRvIGEgc2NhbGVyIGRlc2NyaXB0b3IuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZF9mbGFncyA6OiBUaGUgY29ycmVzcG9uZGluZyBsb2FkIGZsYWdzLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnaW5kZXggICAgIDo6IFRoZSBnbHlwaCBpbmRleCB0byByZXRyaWV2ZS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZ2x5cGggICAgIDo6IFRoZSBjb3JyZXNwb25kaW5nIEBGVF9HbHlwaCBvYmplY3QuICAwfmluIGNhc2Ugb2YgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBmYWlsdXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhbm9kZSAgICAgIDo6IFVzZWQgdG8gcmV0dXJuIHRoZSBhZGRyZXNzIG9mIG9mIHRoZSBjb3JyZXNwb25kaW5nICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBjYWNoZSBub2RlIGFmdGVyIGluY3JlbWVudGluZyBpdHMgcmVmZXJlbmNlIGNvdW50ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgKHNlZSBub3RlIGJlbG93KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSByZXR1cm5lZCBnbHlwaCBpcyBvd25lZCBhbmQgbWFuYWdlZCBieSB0aGUgZ2x5cGggaW1hZ2UgY2FjaGUuICAqLworICAvKiAgICBOZXZlciB0cnkgdG8gdHJhbnNmb3JtIG9yIGRpc2NhcmQgaXQgbWFudWFsbHkhICBZb3UgY2FuIGhvd2V2ZXIgICAgKi8KKyAgLyogICAgY3JlYXRlIGEgY29weSB3aXRoIEBGVF9HbHlwaF9Db3B5IGFuZCBtb2RpZnkgdGhlIG5ldyBvbmUuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiBgYW5vZGUnIGlzIF9ub3RfIE5VTEwsIGl0IHJlY2VpdmVzIHRoZSBhZGRyZXNzIG9mIHRoZSBjYWNoZSAgICAgKi8KKyAgLyogICAgbm9kZSBjb250YWluaW5nIHRoZSBnbHlwaCBpbWFnZSwgYWZ0ZXIgaW5jcmVhc2luZyBpdHMgcmVmZXJlbmNlICAgICovCisgIC8qICAgIGNvdW50LiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG5vZGUgKGFzIHdlbGwgYXMgdGhlIEBGVF9HbHlwaCkgd2lsbCAqLworICAvKiAgICBhbHdheXMgYmUga2VwdCBpbiB0aGUgY2FjaGUgdW50aWwgeW91IGNhbGwgQEZUQ19Ob2RlX1VucmVmIHRvICAgICAgKi8KKyAgLyogICAgYHJlbGVhc2UnIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiBgYW5vZGUnIGlzIE5VTEwsIHRoZSBjYWNoZSBub2RlIGlzIGxlZnQgdW5jaGFuZ2VkLCB3aGljaCBtZWFucyAgKi8KKyAgLyogICAgdGhhdCB0aGUgQEZUX0dseXBoIGNvdWxkIGJlIGZsdXNoZWQgb3V0IG9mIHRoZSBjYWNoZSBvbiB0aGUgbmV4dCAgICovCisgIC8qICAgIGNhbGwgdG8gb25lIG9mIHRoZSBjYWNoaW5nIHN1Yi1zeXN0ZW0gQVBJcy4gIERvbid0IGFzc3VtZSB0aGF0IGl0ICAqLworICAvKiAgICBpcyBwZXJzaXN0ZW50ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENhbGxzIHRvIEBGVF9TZXRfQ2hhcl9TaXplIGFuZCBmcmllbmRzIGhhdmUgbm8gZWZmZWN0IG9uIGNhY2hlZCAgICAqLworICAvKiAgICBnbHlwaHM7IHlvdSBzaG91bGQgYWx3YXlzIHVzZSB0aGUgRnJlZVR5cGUgY2FjaGUgQVBJIGluc3RlYWQuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVENfSW1hZ2VDYWNoZV9Mb29rdXBTY2FsZXIoIEZUQ19JbWFnZUNhY2hlICBjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVENfU2NhbGVyICAgICAgc2NhbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICBsb2FkX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBnaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGggICAgICAgKmFnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVENfTm9kZSAgICAgICAqYW5vZGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19TQml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgc21hbGwgYml0bWFwIGRlc2NyaXB0b3IuICBTZWUgdGhlIEBGVENfU0JpdFJlYyAgICAgICAqLworICAvKiAgICBzdHJ1Y3R1cmUgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUQ19TQml0UmVjXyogIEZUQ19TQml0OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX1NCaXRSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB2ZXJ5IGNvbXBhY3Qgc3RydWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgYSBzbWFsbCBnbHlwaCBiaXRtYXAuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgd2lkdGggICAgIDo6IFRoZSBiaXRtYXAgd2lkdGggaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBoZWlnaHQgICAgOjogVGhlIGJpdG1hcCBoZWlnaHQgaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlZnQgICAgICA6OiBUaGUgaG9yaXpvbnRhbCBkaXN0YW5jZSBmcm9tIHRoZSBwZW4gcG9zaXRpb24gdG8gdGhlICAqLworICAvKiAgICAgICAgICAgICAgICAgbGVmdCBiaXRtYXAgYm9yZGVyIChhLmsuYS4gYGxlZnQgc2lkZSBiZWFyaW5nJywgb3IgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIGBsc2InKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0b3AgICAgICAgOjogVGhlIHZlcnRpY2FsIGRpc3RhbmNlIGZyb20gdGhlIHBlbiBwb3NpdGlvbiAob24gdGhlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIGJhc2VsaW5lKSB0byB0aGUgdXBwZXIgYml0bWFwIGJvcmRlciAoYS5rLmEuIGB0b3AgICAgICovCisgIC8qICAgICAgICAgICAgICAgICBzaWRlIGJlYXJpbmcnKS4gIFRoZSBkaXN0YW5jZSBpcyBwb3NpdGl2ZSBmb3IgdXB3YXJkcyAqLworICAvKiAgICAgICAgICAgICAgICAgeX5jb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvcm1hdCAgICA6OiBUaGUgZm9ybWF0IG9mIHRoZSBnbHlwaCBiaXRtYXAgKG1vbm9jaHJvbWUgb3IgZ3JheSkuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X2dyYXlzIDo6IE1heGltdW0gZ3JheSBsZXZlbCB2YWx1ZSAoaW4gdGhlIHJhbmdlIDEgdG9+MjU1KS4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwaXRjaCAgICAgOjogVGhlIG51bWJlciBvZiBieXRlcyBwZXIgYml0bWFwIGxpbmUuICBNYXkgYmUgcG9zaXRpdmUgKi8KKyAgLyogICAgICAgICAgICAgICAgIG9yIG5lZ2F0aXZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4YWR2YW5jZSAgOjogVGhlIGhvcml6b250YWwgYWR2YW5jZSB3aWR0aCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlhZHZhbmNlICA6OiBUaGUgdmVydGljYWwgYWR2YW5jZSBoZWlnaHQgaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYnVmZmVyICAgIDo6IEEgcG9pbnRlciB0byB0aGUgYml0bWFwIHBpeGVscy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRDX1NCaXRSZWNfCisgIHsKKyAgICBGVF9CeXRlICAgd2lkdGg7CisgICAgRlRfQnl0ZSAgIGhlaWdodDsKKyAgICBGVF9DaGFyICAgbGVmdDsKKyAgICBGVF9DaGFyICAgdG9wOworCisgICAgRlRfQnl0ZSAgIGZvcm1hdDsKKyAgICBGVF9CeXRlICAgbWF4X2dyYXlzOworICAgIEZUX1Nob3J0ICBwaXRjaDsKKyAgICBGVF9DaGFyICAgeGFkdmFuY2U7CisgICAgRlRfQ2hhciAgIHlhZHZhbmNlOworCisgICAgRlRfQnl0ZSogIGJ1ZmZlcjsKKworICB9IEZUQ19TQml0UmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRDX1NCaXRDYWNoZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBzbWFsbCBiaXRtYXAgY2FjaGUuICBUaGVzZSBhcmUgc3BlY2lhbCBjYWNoZSBvYmplY3RzICovCisgIC8qICAgIHVzZWQgdG8gc3RvcmUgc21hbGwgZ2x5cGggYml0bWFwcyAoYW5kIGFudGktYWxpYXNlZCBwaXhtYXBzKSBpbiBhICAqLworICAvKiAgICBtdWNoIG1vcmUgZWZmaWNpZW50IHdheSB0aGFuIHRoZSB0cmFkaXRpb25hbCBnbHlwaCBpbWFnZSBjYWNoZSAgICAgKi8KKyAgLyogICAgaW1wbGVtZW50ZWQgYnkgQEZUQ19JbWFnZUNhY2hlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVENfU0JpdENhY2hlUmVjXyogIEZUQ19TQml0Q2FjaGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfU0JpdENhY2hlX05ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDcmVhdGUgYSBuZXcgY2FjaGUgdG8gc3RvcmUgc21hbGwgZ2x5cGggYml0bWFwcy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYW5hZ2VyIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgY2FjaGUgbWFuYWdlci4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhY2FjaGUgIDo6IEEgaGFuZGxlIHRvIHRoZSBuZXcgc2JpdCBjYWNoZS4gIE5VTEwgaW4gY2FzZSBvZiBlcnJvci4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVENfU0JpdENhY2hlX05ldyggRlRDX01hbmFnZXIgICAgIG1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICBGVENfU0JpdENhY2hlICAqYWNhY2hlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVENfU0JpdENhY2hlX0xvb2t1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb29rIHVwIGEgZ2l2ZW4gc21hbGwgZ2x5cGggYml0bWFwIGluIGEgZ2l2ZW4gc2JpdCBjYWNoZSBhbmQgICAgICAgKi8KKyAgLyogICAgYGxvY2snIGl0IHRvIHByZXZlbnQgaXRzIGZsdXNoaW5nIGZyb20gdGhlIGNhY2hlIHVudGlsIG5lZWRlZC4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FjaGUgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2Ugc2JpdCBjYWNoZS4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0eXBlICAgOjogQSBwb2ludGVyIHRvIHRoZSBnbHlwaCBpbWFnZSB0eXBlIGRlc2NyaXB0b3IuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdpbmRleCA6OiBUaGUgZ2x5cGggaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNiaXQgICA6OiBBIGhhbmRsZSB0byBhIHNtYWxsIGJpdG1hcCBkZXNjcmlwdG9yLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYW5vZGUgIDo6IFVzZWQgdG8gcmV0dXJuIHRoZSBhZGRyZXNzIG9mIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNhY2hlICovCisgIC8qICAgICAgICAgICAgICBub2RlIGFmdGVyIGluY3JlbWVudGluZyBpdHMgcmVmZXJlbmNlIGNvdW50IChzZWUgbm90ZSAgICAqLworICAvKiAgICAgICAgICAgICAgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgc21hbGwgYml0bWFwIGRlc2NyaXB0b3IgYW5kIGl0cyBiaXQgYnVmZmVyIGFyZSBvd25lZCBieSB0aGUgICAgKi8KKyAgLyogICAgY2FjaGUgYW5kIHNob3VsZCBuZXZlciBiZSBmcmVlZCBieSB0aGUgYXBwbGljYXRpb24uICBUaGV5IG1pZ2h0ICAgICovCisgIC8qICAgIGFzIHdlbGwgZGlzYXBwZWFyIGZyb20gbWVtb3J5IG9uIHRoZSBuZXh0IGNhY2hlIGxvb2t1cCwgc28gZG9uJ3QgICAqLworICAvKiAgICB0cmVhdCB0aGVtIGFzIHBlcnNpc3RlbnQgZGF0YS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBkZXNjcmlwdG9yJ3MgYGJ1ZmZlcicgZmllbGQgaXMgc2V0IHRvfjAgdG8gaW5kaWNhdGUgYSBtaXNzaW5nICAqLworICAvKiAgICBnbHlwaCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGBhbm9kZScgaXMgX25vdF8gTlVMTCwgaXQgcmVjZWl2ZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGNhY2hlICAgICAqLworICAvKiAgICBub2RlIGNvbnRhaW5pbmcgdGhlIGJpdG1hcCwgYWZ0ZXIgaW5jcmVhc2luZyBpdHMgcmVmZXJlbmNlIGNvdW50LiAgKi8KKyAgLyogICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG5vZGUgKGFzIHdlbGwgYXMgdGhlIGltYWdlKSB3aWxsIGFsd2F5cyBiZSAgICovCisgIC8qICAgIGtlcHQgaW4gdGhlIGNhY2hlIHVudGlsIHlvdSBjYWxsIEBGVENfTm9kZV9VbnJlZiB0byBgcmVsZWFzZScgaXQuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgYGFub2RlJyBpcyBOVUxMLCB0aGUgY2FjaGUgbm9kZSBpcyBsZWZ0IHVuY2hhbmdlZCwgd2hpY2ggbWVhbnMgICovCisgIC8qICAgIHRoYXQgdGhlIGJpdG1hcCBjb3VsZCBiZSBmbHVzaGVkIG91dCBvZiB0aGUgY2FjaGUgb24gdGhlIG5leHQgICAgICAqLworICAvKiAgICBjYWxsIHRvIG9uZSBvZiB0aGUgY2FjaGluZyBzdWItc3lzdGVtIEFQSXMuICBEb24ndCBhc3N1bWUgdGhhdCBpdCAgKi8KKyAgLyogICAgaXMgcGVyc2lzdGVudCEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRDX1NCaXRDYWNoZV9Mb29rdXAoIEZUQ19TQml0Q2FjaGUgICAgY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVENfSW1hZ2VUeXBlICAgIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgIGdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19TQml0ICAgICAgICAqc2JpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19Ob2RlICAgICAgICAqYW5vZGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUQ19TQml0Q2FjaGVfTG9va3VwU2NhbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdmFyaWFudCBvZiBARlRDX1NCaXRDYWNoZV9Mb29rdXAgdGhhdCB1c2VzIGFuIEBGVENfU2NhbGVyUmVjICAgICAqLworICAvKiAgICB0byBzcGVjaWZ5IHRoZSBmYWNlIElEIGFuZCBpdHMgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYWNoZSAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2Ugc2JpdCBjYWNoZS4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNjYWxlciAgICAgOjogQSBwb2ludGVyIHRvIHRoZSBzY2FsZXIgZGVzY3JpcHRvci4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZF9mbGFncyA6OiBUaGUgY29ycmVzcG9uZGluZyBsb2FkIGZsYWdzLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnaW5kZXggICAgIDo6IFRoZSBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzYml0ICAgICAgIDo6IEEgaGFuZGxlIHRvIGEgc21hbGwgYml0bWFwIGRlc2NyaXB0b3IuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFub2RlICAgICAgOjogVXNlZCB0byByZXR1cm4gdGhlIGFkZHJlc3Mgb2Ygb2YgdGhlIGNvcnJlc3BvbmRpbmcgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGNhY2hlIG5vZGUgYWZ0ZXIgaW5jcmVtZW50aW5nIGl0cyByZWZlcmVuY2UgY291bnQgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAoc2VlIG5vdGUgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHNtYWxsIGJpdG1hcCBkZXNjcmlwdG9yIGFuZCBpdHMgYml0IGJ1ZmZlciBhcmUgb3duZWQgYnkgdGhlICAgICovCisgIC8qICAgIGNhY2hlIGFuZCBzaG91bGQgbmV2ZXIgYmUgZnJlZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiAgVGhleSBtaWdodCAgICAqLworICAvKiAgICBhcyB3ZWxsIGRpc2FwcGVhciBmcm9tIG1lbW9yeSBvbiB0aGUgbmV4dCBjYWNoZSBsb29rdXAsIHNvIGRvbid0ICAgKi8KKyAgLyogICAgdHJlYXQgdGhlbSBhcyBwZXJzaXN0ZW50IGRhdGEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZGVzY3JpcHRvcidzIGBidWZmZXInIGZpZWxkIGlzIHNldCB0b34wIHRvIGluZGljYXRlIGEgbWlzc2luZyAgKi8KKyAgLyogICAgZ2x5cGggYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiBgYW5vZGUnIGlzIF9ub3RfIE5VTEwsIGl0IHJlY2VpdmVzIHRoZSBhZGRyZXNzIG9mIHRoZSBjYWNoZSAgICAgKi8KKyAgLyogICAgbm9kZSBjb250YWluaW5nIHRoZSBiaXRtYXAsIGFmdGVyIGluY3JlYXNpbmcgaXRzIHJlZmVyZW5jZSBjb3VudC4gICovCisgIC8qICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBub2RlIChhcyB3ZWxsIGFzIHRoZSBpbWFnZSkgd2lsbCBhbHdheXMgYmUgICAqLworICAvKiAgICBrZXB0IGluIHRoZSBjYWNoZSB1bnRpbCB5b3UgY2FsbCBARlRDX05vZGVfVW5yZWYgdG8gYHJlbGVhc2UnIGl0LiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGBhbm9kZScgaXMgTlVMTCwgdGhlIGNhY2hlIG5vZGUgaXMgbGVmdCB1bmNoYW5nZWQsIHdoaWNoIG1lYW5zICAqLworICAvKiAgICB0aGF0IHRoZSBiaXRtYXAgY291bGQgYmUgZmx1c2hlZCBvdXQgb2YgdGhlIGNhY2hlIG9uIHRoZSBuZXh0ICAgICAgKi8KKyAgLyogICAgY2FsbCB0byBvbmUgb2YgdGhlIGNhY2hpbmcgc3ViLXN5c3RlbSBBUElzLiAgRG9uJ3QgYXNzdW1lIHRoYXQgaXQgICovCisgIC8qICAgIGlzIHBlcnNpc3RlbnQhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUQ19TQml0Q2FjaGVfTG9va3VwU2NhbGVyKCBGVENfU0JpdENhY2hlICBjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUQ19TY2FsZXIgICAgIHNjYWxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgIGxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICBnaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVENfU0JpdCAgICAgICpzYml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRDX05vZGUgICAgICAqYW5vZGUgKTsKKworCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVENBQ0hFX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRjZmZkcnYuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y2ZmZHJ2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EzNzc5NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y2ZmZHJ2LmgKQEAgLTAsMCArMSwxNTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Y2ZmZHJ2LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIGNvbnRyb2xsaW5nIHRoZSBDRkYgZHJpdmVyIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQ0ZGRFJWX0hfXworI2RlZmluZSBfX0ZUQ0ZGRFJWX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc2VjdGlvbjoKKyAgICogICBjZmZfZHJpdmVyCisgICAqCisgICAqIEB0aXRsZToKKyAgICogICBUaGUgQ0ZGIGRyaXZlcgorICAgKgorICAgKiBAYWJzdHJhY3Q6CisgICAqICAgQ29udHJvbGxpbmcgdGhlIENGRiBkcml2ZXIgbW9kdWxlLgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgV2hpbGUgRnJlZVR5cGUncyBDRkYgZHJpdmVyIGRvZXNuJ3QgZXhwb3NlIEFQSSBmdW5jdGlvbnMgYnkgaXRzZWxmLAorICAgKiAgIGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRyb2wgaXRzIGJlaGF2aW91ciB3aXRoIEBGVF9Qcm9wZXJ0eV9TZXQgYW5kCisgICAqICAgQEZUX1Byb3BlcnR5X0dldC4gIFRoZSBmb2xsb3dpbmcgbGlzdHMgdGhlIGF2YWlsYWJsZSBwcm9wZXJ0aWVzCisgICAqICAgdG9nZXRoZXIgd2l0aCB0aGUgbmVjZXNzYXJ5IG1hY3JvcyBhbmQgc3RydWN0dXJlcy4KKyAgICoKKyAgICogICBUaGUgQ0ZGIGRyaXZlcidzIG1vZHVsZSBuYW1lIGlzIGBjZmYnLgorICAgKgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAcHJvcGVydHk6CisgICAqICAgaGludGluZy1lbmdpbmUKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoYW5rcyB0byBBZG9iZSwgd2hpY2ggY29udHJpYnV0ZWQgYSBuZXcgaGludGluZyAoYW5kIHBhcnNpbmcpCisgICAqICAgZW5naW5lLCBhbiBhcHBsaWNhdGlvbiBjYW4gc2VsZWN0IGJldHdlZW4gYGZyZWV0eXBlJyBhbmQgYGFkb2JlJyBpZgorICAgKiAgIGNvbXBpbGVkIHdpdGggQ0ZGX0NPTkZJR19PUFRJT05fT0xEX0VOR0lORS4gIElmIHRoaXMgY29uZmlndXJhdGlvbgorICAgKiAgIG1hY3JvIGlzbid0IGRlZmluZWQsIGBoaW50aW5nLWVuZ2luZScgZG9lcyBub3RoaW5nLgorICAgKgorICAgKiAgIFRoZSBkZWZhdWx0IGVuZ2luZSBpcyBgZnJlZXR5cGUnIGlmIENGRl9DT05GSUdfT1BUSU9OX09MRF9FTkdJTkUgaXMKKyAgICogICBkZWZpbmVkLCBhbmQgYGFkb2JlJyBvdGhlcndpc2UuCisgICAqCisgICAqICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNvZGUgZGVtb25zdHJhdGVzIGhvdyB0byBzZWxlY3QgQWRvYmUncyBoaW50aW5nCisgICAqICAgZW5naW5lIChvbWl0dGluZyB0aGUgZXJyb3IgaGFuZGxpbmcpLgorICAgKgorICAgKiAgIHsKKyAgICogICAgIEZUX0xpYnJhcnkgIGxpYnJhcnk7CisgICAqICAgICBGVF9GYWNlICAgICBmYWNlOworICAgKiAgICAgRlRfVUludCAgICAgaGludGluZ19lbmdpbmUgPSBGVF9DRkZfSElOVElOR19BRE9CRTsKKyAgICoKKyAgICoKKyAgICogICAgIEZUX0luaXRfRnJlZVR5cGUoICZsaWJyYXJ5ICk7CisgICAqCisgICAqICAgICBGVF9Qcm9wZXJ0eV9TZXQoIGxpYnJhcnksICJjZmYiLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGludGluZy1lbmdpbmUiLCAmaGludGluZ19lbmdpbmUgKTsKKyAgICogICB9CisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoaXMgcHJvcGVydHkgY2FuIGJlIHVzZWQgd2l0aCBARlRfUHJvcGVydHlfR2V0IGFsc28uCisgICAqCisgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBlbnVtOgorICAgKiAgIEZUX0NGRl9ISU5USU5HX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIGNvbnN0YW50cyB1c2VkIGZvciB0aGUgQGhpbnRpbmctZW5naW5lIHByb3BlcnR5IHRvIHNlbGVjdAorICAgKiAgIHRoZSBoaW50aW5nIGVuZ2luZSBmb3IgQ0ZGIGZvbnRzLgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIEZUX0NGRl9ISU5USU5HX0ZSRUVUWVBFIDo6CisgICAqICAgICBVc2UgdGhlIG9sZCBGcmVlVHlwZSBoaW50aW5nIGVuZ2luZS4KKyAgICoKKyAgICogICBGVF9DRkZfSElOVElOR19BRE9CRSA6OgorICAgKiAgICAgVXNlIHRoZSBoaW50aW5nIGVuZ2luZSBjb250cmlidXRlZCBieSBBZG9iZS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0NGRl9ISU5USU5HX0ZSRUVUWVBFICAwCisjZGVmaW5lIEZUX0NGRl9ISU5USU5HX0FET0JFICAgICAxCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHByb3BlcnR5OgorICAgKiAgIG5vLXN0ZW0tZGFya2VuaW5nCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBCeSBkZWZhdWx0LCB0aGUgQWRvYmUgQ0ZGIGVuZ2luZSBkYXJrZW5zIHN0ZW1zIGF0IHNtYWxsZXIgc2l6ZXMsCisgICAqICAgcmVnYXJkbGVzcyBvZiBoaW50aW5nLCB0byBlbmhhbmNlIGNvbnRyYXN0LiAgU2V0dGluZyB0aGlzIHByb3BlcnR5LAorICAgKiAgIHN0ZW0gZGFya2VuaW5nIGdldHMgc3dpdGNoZWQgb2ZmLgorICAgKgorICAgKiAgIE5vdGUgdGhhdCBzdGVtIGRhcmtlbmluZyBpcyBuZXZlciBhcHBsaWVkIGlmIEBGVF9MT0FEX05PX1NDQUxFIGlzIHNldC4KKyAgICoKKyAgICogICB7CisgICAqICAgICBGVF9MaWJyYXJ5ICBsaWJyYXJ5OworICAgKiAgICAgRlRfRmFjZSAgICAgZmFjZTsKKyAgICogICAgIEZUX0Jvb2wgICAgIG5vX3N0ZW1fZGFya2VuaW5nID0gVFJVRTsKKyAgICoKKyAgICoKKyAgICogICAgIEZUX0luaXRfRnJlZVR5cGUoICZsaWJyYXJ5ICk7CisgICAqCisgICAqICAgICBGVF9Qcm9wZXJ0eV9TZXQoIGxpYnJhcnksICJjZmYiLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8tc3RlbS1kYXJrZW5pbmciLCAmbm9fc3RlbV9kYXJrZW5pbmcgKTsKKyAgICogICB9CisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoaXMgcHJvcGVydHkgY2FuIGJlIHVzZWQgd2l0aCBARlRfUHJvcGVydHlfR2V0IGFsc28uCisgICAqCisgICAqLworCisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fRlRDRkZEUlZfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGNoYXB0ZXJzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGNoYXB0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU1NjcwZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y2hhcHRlcnMuaApAQCAtMCwwICsxLDEyMCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBGcmVlVHlwZSByZWZlcmVuY2UuICAgICAgICAgICAgICAqLworLyogSXQgaXMgdXNlZCBieSB0aGUgcHl0aG9uIHNjcmlwdCB3aGljaCBnZW5lcmF0ZXMgdGhlIEhUTUwgZmlsZXMuICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPENoYXB0ZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGdlbmVyYWxfcmVtYXJrcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEdlbmVyYWwgUmVtYXJrcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFNlY3Rpb25zPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHVzZXJfYWxsb2NhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxDaGFwdGVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBjb3JlX2FwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDb3JlIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxTZWN0aW9ucz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgYmFzaWNfdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGJhc2VfaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBnbHlwaF92YXJpYW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgZ2x5cGhfbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIG1hY19zcGVjaWZpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBzaXplc19tYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgaGVhZGVyX2ZpbGVfbWFjcm9zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPENoYXB0ZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGZvcm1hdF9zcGVjaWZpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZvcm1hdC1TcGVjaWZpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogPFNlY3Rpb25zPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIG11bHRpcGxlX21hc3RlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICB0cnVldHlwZV90YWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgdHlwZTFfdGFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHNmbnRfbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBiZGZfZm9udHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgY2lkX2ZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHBmcl9mb250cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICB3aW5mbnRfZm9udHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgZm9udF9mb3JtYXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGdhc3BfdGFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxDaGFwdGVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBtb2R1bGVfc3BlY2lmaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDb250cm9sbGluZyBGcmVlVHlwZSBNb2R1bGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxTZWN0aW9ucz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBhdXRvX2hpbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgY2ZmX2RyaXZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHR0X2RyaXZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxDaGFwdGVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBjYWNoZV9zdWJzeXN0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDYWNoZSBTdWItU3lzdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDxTZWN0aW9ucz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBjYWNoZV9zdWJzeXN0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA8Q2hhcHRlcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgc3VwcG9ydF9hcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgU3VwcG9ydCBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA8U2VjdGlvbnM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgY29tcHV0YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGxpc3RfcHJvY2Vzc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBvdXRsaW5lX3Byb2Nlc3NpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgcXVpY2tfYWR2YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGJpdG1hcF9oYW5kbGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICByYXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgZ2x5cGhfc3Ryb2tlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIHN5c3RlbV9pbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBtb2R1bGVfbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgZ3ppcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIGx6dyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBiemlwMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgbGNkX2ZpbHRlcmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRjaWQuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y2lkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU5NTk3NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Y2lkLmgKQEAgLTAsMCArMSwxNjYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Y2lkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIGFjY2Vzc2luZyBDSUQgZm9udCBpbmZvcm1hdGlvbiAoc3BlY2lmaWNhdGlvbikuICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNywgMjAwOSBieSBEZXJlZyBDbGVnZywgTWljaGFlbCBUb2Z0ZGFsLiAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRDSURfSF9fCisjZGVmaW5lIF9fRlRDSURfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2lkX2ZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ0lEIEZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ0lELWtleWVkIGZvbnQgc3BlY2lmaWMgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbiBvZiBDSUQta2V5ZWQgZm9udCBzcGVjaWZpYyAgICovCisgIC8qICAgIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgIEZUX0dldF9DSURfUmVnaXN0cnlfT3JkZXJpbmdfU3VwcGxlbWVudAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgIFJldHJpZXZlIHRoZSBSZWdpc3RyeS9PcmRlcmluZy9TdXBwbGVtZW50IHRyaXBsZSAoYWxzbyBrbm93biBhcyB0aGUKKyAgICogICAgIlIvTy9TIikgZnJvbSBhIENJRC1rZXllZCBmb250LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgIGZhY2UgOjoKKyAgICogICAgICAgQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgIHJlZ2lzdHJ5IDo6CisgICAqICAgICAgIFRoZSByZWdpc3RyeSwgYXMgYSBDfnN0cmluZywgb3duZWQgYnkgdGhlIGZhY2UuCisgICAqCisgICAqICAgIG9yZGVyaW5nIDo6CisgICAqICAgICAgIFRoZSBvcmRlcmluZywgYXMgYSBDfnN0cmluZywgb3duZWQgYnkgdGhlIGZhY2UuCisgICAqCisgICAqICAgIHN1cHBsZW1lbnQgOjoKKyAgICogICAgICAgVGhlIHN1cHBsZW1lbnQuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgICBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2l0aCBDSUQgZmFjZXMsIHJldHVybmluZyBhbiBlcnJvcgorICAgKiAgICBvdGhlcndpc2UuCisgICAqCisgICAqIEBzaW5jZToKKyAgICogICAgMi4zLjYKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfQ0lEX1JlZ2lzdHJ5X09yZGVyaW5nX1N1cHBsZW1lbnQoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgKnJlZ2lzdHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqb3JkZXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICpzdXBwbGVtZW50KTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICAgRlRfR2V0X0NJRF9Jc19JbnRlcm5hbGx5X0NJRF9LZXllZAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgIFJldHJpZXZlIHRoZSB0eXBlIG9mIHRoZSBpbnB1dCBmYWNlLCBDSUQga2V5ZWQgb3Igbm90LiAgSW4KKyAgICogICAgY29uc3RyYXN0IHRvIHRoZSBARlRfSVNfQ0lEX0tFWUVEIG1hY3JvIHRoaXMgZnVuY3Rpb24gcmV0dXJucworICAgKiAgICBzdWNjZXNzZnVsbHkgYWxzbyBmb3IgQ0lELWtleWVkIGZvbnRzIGluIGFuIFNORlQgd3JhcHBlci4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgICBmYWNlIDo6CisgICAqICAgICAgIEEgaGFuZGxlIHRvIHRoZSBpbnB1dCBmYWNlLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgICBpc19jaWQgOjoKKyAgICogICAgICAgVGhlIHR5cGUgb2YgdGhlIGZhY2UgYXMgYW4gQEZUX0Jvb2wuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgICBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2l0aCBDSUQgZmFjZXMgYW5kIE9wZW5UeXBlIGZvbnRzLAorICAgKiAgICByZXR1cm5pbmcgYW4gZXJyb3Igb3RoZXJ3aXNlLgorICAgKgorICAgKiBAc2luY2U6CisgICAqICAgIDIuMy45CisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0X0NJRF9Jc19JbnRlcm5hbGx5X0NJRF9LZXllZCggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICppc19jaWQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICAgRlRfR2V0X0NJRF9Gcm9tX0dseXBoX0luZGV4CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgUmV0cmlldmUgdGhlIENJRCBvZiB0aGUgaW5wdXQgZ2x5cGggaW5kZXguCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICAgZmFjZSA6OgorICAgKiAgICAgICBBIGhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4KKyAgICoKKyAgICogICAgZ2x5cGhfaW5kZXggOjoKKyAgICogICAgICAgVGhlIGlucHV0IGdseXBoIGluZGV4LgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgICBjaWQgOjoKKyAgICogICAgICAgVGhlIENJRCBhcyBhbiBARlRfVUludC4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aXRoIENJRCBmYWNlcyBhbmQgT3BlblR5cGUgZm9udHMsCisgICAqICAgIHJldHVybmluZyBhbiBlcnJvciBvdGhlcndpc2UuCisgICAqCisgICAqIEBzaW5jZToKKyAgICogICAgMi4zLjkKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfQ0lEX0Zyb21fR2x5cGhfSW5kZXgoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAqY2lkICk7CisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUQ0lEX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRlcnJkZWYuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZjN2I5ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmgKQEAgLTAsMCArMSwyNDkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0ZXJyZGVmLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMiwgMjAwNCwgMjAwNiwgMjAwNywgMjAxMC0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgTElTVCBPRiBFUlJPUiBDT0RFUy9NRVNTQUdFUyAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIFlvdSBuZWVkIHRvIGRlZmluZSBib3RoIEZUX0VSUk9SREVGXyBhbmQgRlRfTk9FUlJPUkRFRl8gYmVmb3JlICovCisgIC8qIGluY2x1ZGluZyB0aGlzIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKworICAvKiBnZW5lcmljIGVycm9ycyAqLworCisgIEZUX05PRVJST1JERUZfKCBPaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgXAorICAgICAgICAgICAgICAgICAgIm5vIGVycm9yIiApCisKKyAgRlRfRVJST1JERUZfKCBDYW5ub3RfT3Blbl9SZXNvdXJjZSwgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCBcCisgICAgICAgICAgICAgICAgImNhbm5vdCBvcGVuIHJlc291cmNlIiApCisgIEZUX0VSUk9SREVGXyggVW5rbm93bl9GaWxlX0Zvcm1hdCwgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgXAorICAgICAgICAgICAgICAgICJ1bmtub3duIGZpbGUgZm9ybWF0IiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9GaWxlX0Zvcm1hdCwgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgXAorICAgICAgICAgICAgICAgICJicm9rZW4gZmlsZSIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfVmVyc2lvbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBGcmVlVHlwZSB2ZXJzaW9uIiApCisgIEZUX0VSUk9SREVGXyggTG93ZXJfTW9kdWxlX1ZlcnNpb24sICAgICAgICAgICAgICAgICAgICAgICAgMHgwNSwgXAorICAgICAgICAgICAgICAgICJtb2R1bGUgdmVyc2lvbiBpcyB0b28gbG93IiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9Bcmd1bWVudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGFyZ3VtZW50IiApCisgIEZUX0VSUk9SREVGXyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlLCAgICAgICAgICAgICAgICAgICAgICAgMHgwNywgXAorICAgICAgICAgICAgICAgICJ1bmltcGxlbWVudGVkIGZlYXR1cmUiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1RhYmxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4LCBcCisgICAgICAgICAgICAgICAgImJyb2tlbiB0YWJsZSIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfT2Zmc2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDksIFwKKyAgICAgICAgICAgICAgICAiYnJva2VuIG9mZnNldCB3aXRoaW4gdGFibGUiICkKKyAgRlRfRVJST1JERUZfKCBBcnJheV9Ub29fTGFyZ2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBBLCBcCisgICAgICAgICAgICAgICAgImFycmF5IGFsbG9jYXRpb24gc2l6ZSB0b28gbGFyZ2UiICkKKyAgRlRfRVJST1JERUZfKCBNaXNzaW5nX01vZHVsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCLCBcCisgICAgICAgICAgICAgICAgIm1pc3NpbmcgbW9kdWxlIiApCisgIEZUX0VSUk9SREVGXyggTWlzc2luZ19Qcm9wZXJ0eSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQywgXAorICAgICAgICAgICAgICAgICJtaXNzaW5nIHByb3BlcnR5IiApCisKKyAgLyogZ2x5cGgvY2hhcmFjdGVyIGVycm9ycyAqLworCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9HbHlwaF9JbmRleCwgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMCwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGdseXBoIGluZGV4IiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9DaGFyYWN0ZXJfQ29kZSwgICAgICAgICAgICAgICAgICAgICAgMHgxMSwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGNoYXJhY3RlciBjb2RlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9HbHlwaF9Gb3JtYXQsICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgXAorICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBnbHlwaCBpbWFnZSBmb3JtYXQiICkKKyAgRlRfRVJST1JERUZfKCBDYW5ub3RfUmVuZGVyX0dseXBoLCAgICAgICAgICAgICAgICAgICAgICAgICAweDEzLCBcCisgICAgICAgICAgICAgICAgImNhbm5vdCByZW5kZXIgdGhpcyBnbHlwaCBmb3JtYXQiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX091dGxpbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgb3V0bGluZSIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfQ29tcG9zaXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBjb21wb3NpdGUgZ2x5cGgiICkKKyAgRlRfRVJST1JERUZfKCBUb29fTWFueV9IaW50cywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE2LCBcCisgICAgICAgICAgICAgICAgInRvbyBtYW55IGhpbnRzIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9QaXhlbF9TaXplLCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNywgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHBpeGVsIHNpemUiICkKKworICAvKiBoYW5kbGUgZXJyb3JzICovCisKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0hhbmRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgb2JqZWN0IGhhbmRsZSIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfTGlicmFyeV9IYW5kbGUsICAgICAgICAgICAgICAgICAgICAgIDB4MjEsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBsaWJyYXJ5IGhhbmRsZSIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfRHJpdmVyX0hhbmRsZSwgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBtb2R1bGUgaGFuZGxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9GYWNlX0hhbmRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMywgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGZhY2UgaGFuZGxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9TaXplX0hhbmRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHNpemUgaGFuZGxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9TbG90X0hhbmRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNSwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGdseXBoIHNsb3QgaGFuZGxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9DaGFyTWFwX0hhbmRsZSwgICAgICAgICAgICAgICAgICAgICAgMHgyNiwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGNoYXJtYXAgaGFuZGxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9DYWNoZV9IYW5kbGUsICAgICAgICAgICAgICAgICAgICAgICAgMHgyNywgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGNhY2hlIG1hbmFnZXIgaGFuZGxlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9TdHJlYW1fSGFuZGxlLCAgICAgICAgICAgICAgICAgICAgICAgMHgyOCwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHN0cmVhbSBoYW5kbGUiICkKKworICAvKiBkcml2ZXIgZXJyb3JzICovCisKKyAgRlRfRVJST1JERUZfKCBUb29fTWFueV9Ecml2ZXJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwLCBcCisgICAgICAgICAgICAgICAgInRvbyBtYW55IG1vZHVsZXMiICkKKyAgRlRfRVJST1JERUZfKCBUb29fTWFueV9FeHRlbnNpb25zLCAgICAgICAgICAgICAgICAgICAgICAgICAweDMxLCBcCisgICAgICAgICAgICAgICAgInRvbyBtYW55IGV4dGVuc2lvbnMiICkKKworICAvKiBtZW1vcnkgZXJyb3JzICovCisKKyAgRlRfRVJST1JERUZfKCBPdXRfT2ZfTWVtb3J5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCBcCisgICAgICAgICAgICAgICAgIm91dCBvZiBtZW1vcnkiICkKKyAgRlRfRVJST1JERUZfKCBVbmxpc3RlZF9PYmplY3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLCBcCisgICAgICAgICAgICAgICAgInVubGlzdGVkIG9iamVjdCIgKQorCisgIC8qIHN0cmVhbSBlcnJvcnMgKi8KKworICBGVF9FUlJPUkRFRl8oIENhbm5vdF9PcGVuX1N0cmVhbSwgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTEsIFwKKyAgICAgICAgICAgICAgICAiY2Fubm90IG9wZW4gc3RyZWFtIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9TdHJlYW1fU2VlaywgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MiwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHN0cmVhbSBzZWVrIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9TdHJlYW1fU2tpcCwgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MywgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHN0cmVhbSBza2lwIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9TdHJlYW1fUmVhZCwgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NCwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHN0cmVhbSByZWFkIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uLCAgICAgICAgICAgICAgICAgICAgMHg1NSwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHN0cmVhbSBvcGVyYXRpb24iICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0ZyYW1lX09wZXJhdGlvbiwgICAgICAgICAgICAgICAgICAgICAweDU2LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgZnJhbWUgb3BlcmF0aW9uIiApCisgIEZUX0VSUk9SREVGXyggTmVzdGVkX0ZyYW1lX0FjY2VzcywgICAgICAgICAgICAgICAgICAgICAgICAgMHg1NywgXAorICAgICAgICAgICAgICAgICJuZXN0ZWQgZnJhbWUgYWNjZXNzIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9GcmFtZV9SZWFkLCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1OCwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGZyYW1lIHJlYWQiICkKKworICAvKiByYXN0ZXIgZXJyb3JzICovCisKKyAgRlRfRVJST1JERUZfKCBSYXN0ZXJfVW5pbml0aWFsaXplZCwgICAgICAgICAgICAgICAgICAgICAgICAweDYwLCBcCisgICAgICAgICAgICAgICAgInJhc3RlciB1bmluaXRpYWxpemVkIiApCisgIEZUX0VSUk9SREVGXyggUmFzdGVyX0NvcnJ1cHRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MSwgXAorICAgICAgICAgICAgICAgICJyYXN0ZXIgY29ycnVwdGVkIiApCisgIEZUX0VSUk9SREVGXyggUmFzdGVyX092ZXJmbG93LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MiwgXAorICAgICAgICAgICAgICAgICJyYXN0ZXIgb3ZlcmZsb3ciICkKKyAgRlRfRVJST1JERUZfKCBSYXN0ZXJfTmVnYXRpdmVfSGVpZ2h0LCAgICAgICAgICAgICAgICAgICAgICAweDYzLCBcCisgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGhlaWdodCB3aGlsZSByYXN0ZXJpbmciICkKKworICAvKiBjYWNoZSBlcnJvcnMgKi8KKworICBGVF9FUlJPUkRFRl8oIFRvb19NYW55X0NhY2hlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzAsIFwKKyAgICAgICAgICAgICAgICAidG9vIG1hbnkgcmVnaXN0ZXJlZCBjYWNoZXMiICkKKworICAvKiBUcnVlVHlwZSBhbmQgU0ZOVCBlcnJvcnMgKi8KKworICBGVF9FUlJPUkRFRl8oIEludmFsaWRfT3Bjb2RlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBvcGNvZGUiICkKKyAgRlRfRVJST1JERUZfKCBUb29fRmV3X0FyZ3VtZW50cywgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxLCBcCisgICAgICAgICAgICAgICAgInRvbyBmZXcgYXJndW1lbnRzIiApCisgIEZUX0VSUk9SREVGXyggU3RhY2tfT3ZlcmZsb3csICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MiwgXAorICAgICAgICAgICAgICAgICJzdGFjayBvdmVyZmxvdyIgKQorICBGVF9FUlJPUkRFRl8oIENvZGVfT3ZlcmZsb3csICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODMsIFwKKyAgICAgICAgICAgICAgICAiY29kZSBvdmVyZmxvdyIgKQorICBGVF9FUlJPUkRFRl8oIEJhZF9Bcmd1bWVudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODQsIFwKKyAgICAgICAgICAgICAgICAiYmFkIGFyZ3VtZW50IiApCisgIEZUX0VSUk9SREVGXyggRGl2aWRlX0J5X1plcm8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NSwgXAorICAgICAgICAgICAgICAgICJkaXZpc2lvbiBieSB6ZXJvIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9SZWZlcmVuY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NiwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHJlZmVyZW5jZSIgKQorICBGVF9FUlJPUkRFRl8oIERlYnVnX09wQ29kZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODcsIFwKKyAgICAgICAgICAgICAgICAiZm91bmQgZGVidWcgb3Bjb2RlIiApCisgIEZUX0VSUk9SREVGXyggRU5ERl9Jbl9FeGVjX1N0cmVhbSwgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OCwgXAorICAgICAgICAgICAgICAgICJmb3VuZCBFTkRGIG9wY29kZSBpbiBleGVjdXRpb24gc3RyZWFtIiApCisgIEZUX0VSUk9SREVGXyggTmVzdGVkX0RFRlMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OSwgXAorICAgICAgICAgICAgICAgICJuZXN0ZWQgREVGUyIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfQ29kZVJhbmdlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEEsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBjb2RlIHJhbmdlIiApCisgIEZUX0VSUk9SREVGXyggRXhlY3V0aW9uX1Rvb19Mb25nLCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QiwgXAorICAgICAgICAgICAgICAgICJleGVjdXRpb24gY29udGV4dCB0b28gbG9uZyIgKQorICBGVF9FUlJPUkRFRl8oIFRvb19NYW55X0Z1bmN0aW9uX0RlZnMsICAgICAgICAgICAgICAgICAgICAgIDB4OEMsIFwKKyAgICAgICAgICAgICAgICAidG9vIG1hbnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMiICkKKyAgRlRfRVJST1JERUZfKCBUb29fTWFueV9JbnN0cnVjdGlvbl9EZWZzLCAgICAgICAgICAgICAgICAgICAweDhELCBcCisgICAgICAgICAgICAgICAgInRvbyBtYW55IGluc3RydWN0aW9uIGRlZmluaXRpb25zIiApCisgIEZUX0VSUk9SREVGXyggVGFibGVfTWlzc2luZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RSwgXAorICAgICAgICAgICAgICAgICJTRk5UIGZvbnQgdGFibGUgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIEhvcml6X0hlYWRlcl9NaXNzaW5nLCAgICAgICAgICAgICAgICAgICAgICAgIDB4OEYsIFwKKyAgICAgICAgICAgICAgICAiaG9yaXpvbnRhbCBoZWFkZXIgKGhoZWEpIHRhYmxlIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBMb2NhdGlvbnNfTWlzc2luZywgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwLCBcCisgICAgICAgICAgICAgICAgImxvY2F0aW9ucyAobG9jYSkgdGFibGUgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIE5hbWVfVGFibGVfTWlzc2luZywgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEsIFwKKyAgICAgICAgICAgICAgICAibmFtZSB0YWJsZSBtaXNzaW5nIiApCisgIEZUX0VSUk9SREVGXyggQ01hcF9UYWJsZV9NaXNzaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgXAorICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgbWFwIChjbWFwKSB0YWJsZSBtaXNzaW5nIiApCisgIEZUX0VSUk9SREVGXyggSG10eF9UYWJsZV9NaXNzaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MywgXAorICAgICAgICAgICAgICAgICJob3Jpem9udGFsIG1ldHJpY3MgKGhtdHgpIHRhYmxlIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBQb3N0X1RhYmxlX01pc3NpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCBcCisgICAgICAgICAgICAgICAgIlBvc3RTY3JpcHQgKHBvc3QpIHRhYmxlIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX0hvcml6X01ldHJpY3MsICAgICAgICAgICAgICAgICAgICAgICAweDk1LCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgaG9yaXpvbnRhbCBtZXRyaWNzIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9DaGFyTWFwX0Zvcm1hdCwgICAgICAgICAgICAgICAgICAgICAgMHg5NiwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGNoYXJhY3RlciBtYXAgKGNtYXApIGZvcm1hdCIgKQorICBGVF9FUlJPUkRFRl8oIEludmFsaWRfUFBlbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTcsIFwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBwcGVtIHZhbHVlIiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9WZXJ0X01ldHJpY3MsICAgICAgICAgICAgICAgICAgICAgICAgMHg5OCwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHZlcnRpY2FsIG1ldHJpY3MiICkKKyAgRlRfRVJST1JERUZfKCBDb3VsZF9Ob3RfRmluZF9Db250ZXh0LCAgICAgICAgICAgICAgICAgICAgICAweDk5LCBcCisgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBmaW5kIGNvbnRleHQiICkKKyAgRlRfRVJST1JERUZfKCBJbnZhbGlkX1Bvc3RfVGFibGVfRm9ybWF0LCAgICAgICAgICAgICAgICAgICAweDlBLCBcCisgICAgICAgICAgICAgICAgImludmFsaWQgUG9zdFNjcmlwdCAocG9zdCkgdGFibGUgZm9ybWF0IiApCisgIEZUX0VSUk9SREVGXyggSW52YWxpZF9Qb3N0X1RhYmxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5QiwgXAorICAgICAgICAgICAgICAgICJpbnZhbGlkIFBvc3RTY3JpcHQgKHBvc3QpIHRhYmxlIiApCisKKyAgLyogQ0ZGLCBDSUQsIGFuZCBUeXBlIDEgZXJyb3JzICovCisKKyAgRlRfRVJST1JERUZfKCBTeW50YXhfRXJyb3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEEwLCBcCisgICAgICAgICAgICAgICAgIm9wY29kZSBzeW50YXggZXJyb3IiICkKKyAgRlRfRVJST1JERUZfKCBTdGFja19VbmRlcmZsb3csICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEExLCBcCisgICAgICAgICAgICAgICAgImFyZ3VtZW50IHN0YWNrIHVuZGVyZmxvdyIgKQorICBGVF9FUlJPUkRFRl8oIElnbm9yZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QTIsIFwKKyAgICAgICAgICAgICAgICAiaWdub3JlIiApCisgIEZUX0VSUk9SREVGXyggTm9fVW5pY29kZV9HbHlwaF9OYW1lLCAgICAgICAgICAgICAgICAgICAgICAgMHhBMywgXAorICAgICAgICAgICAgICAgICJubyBVbmljb2RlIGdseXBoIG5hbWUgZm91bmQiICkKKyAgRlRfRVJST1JERUZfKCBHbHlwaF9Ub29fQmlnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEE0LCBcCisgICAgICAgICAgICAgICAgImdseXBoIHRvIGJpZyBmb3IgaGludGluZyIgKQorCisgIC8qIEJERiBlcnJvcnMgKi8KKworICBGVF9FUlJPUkRFRl8oIE1pc3NpbmdfU3RhcnRmb250X0ZpZWxkLCAgICAgICAgICAgICAgICAgICAgIDB4QjAsIFwKKyAgICAgICAgICAgICAgICAiYFNUQVJURk9OVCcgZmllbGQgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIE1pc3NpbmdfRm9udF9GaWVsZCwgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QjEsIFwKKyAgICAgICAgICAgICAgICAiYEZPTlQnIGZpZWxkIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBNaXNzaW5nX1NpemVfRmllbGQsICAgICAgICAgICAgICAgICAgICAgICAgICAweEIyLCBcCisgICAgICAgICAgICAgICAgImBTSVpFJyBmaWVsZCBtaXNzaW5nIiApCisgIEZUX0VSUk9SREVGXyggTWlzc2luZ19Gb250Ym91bmRpbmdib3hfRmllbGQsICAgICAgICAgICAgICAgMHhCMywgXAorICAgICAgICAgICAgICAgICJgRk9OVEJPVU5ESU5HQk9YJyBmaWVsZCBtaXNzaW5nIiApCisgIEZUX0VSUk9SREVGXyggTWlzc2luZ19DaGFyc19GaWVsZCwgICAgICAgICAgICAgICAgICAgICAgICAgMHhCNCwgXAorICAgICAgICAgICAgICAgICJgQ0hBUlMnIGZpZWxkIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBNaXNzaW5nX1N0YXJ0Y2hhcl9GaWVsZCwgICAgICAgICAgICAgICAgICAgICAweEI1LCBcCisgICAgICAgICAgICAgICAgImBTVEFSVENIQVInIGZpZWxkIG1pc3NpbmciICkKKyAgRlRfRVJST1JERUZfKCBNaXNzaW5nX0VuY29kaW5nX0ZpZWxkLCAgICAgICAgICAgICAgICAgICAgICAweEI2LCBcCisgICAgICAgICAgICAgICAgImBFTkNPRElORycgZmllbGQgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIE1pc3NpbmdfQmJ4X0ZpZWxkLCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QjcsIFwKKyAgICAgICAgICAgICAgICAiYEJCWCcgZmllbGQgbWlzc2luZyIgKQorICBGVF9FUlJPUkRFRl8oIEJieF9Ub29fQmlnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QjgsIFwKKyAgICAgICAgICAgICAgICAiYEJCWCcgdG9vIGJpZyIgKQorICBGVF9FUlJPUkRFRl8oIENvcnJ1cHRlZF9Gb250X0hlYWRlciwgICAgICAgICAgICAgICAgICAgICAgIDB4QjksIFwKKyAgICAgICAgICAgICAgICAiRm9udCBoZWFkZXIgY29ycnVwdGVkIG9yIG1pc3NpbmcgZmllbGRzIiApCisgIEZUX0VSUk9SREVGXyggQ29ycnVwdGVkX0ZvbnRfR2x5cGhzLCAgICAgICAgICAgICAgICAgICAgICAgMHhCQSwgXAorICAgICAgICAgICAgICAgICJGb250IGdseXBocyBjb3JydXB0ZWQgb3IgbWlzc2luZyBmaWVsZHMiICkKKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNjlkMGYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oCkBAIC0wLDAgKzEsMTk4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGVycm9ycy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZSBoYW5kbGluZyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMiwgMjAwNCwgMjAwNywgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIHNwZWNpYWwgaGVhZGVyIGZpbGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIGhhbmRsaW5nIG9mIEZUMiAgICAgICAgKi8KKyAgLyogZW51bWVyYXRpb24gY29uc3RhbnRzLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBnZW5lcmF0ZSBlcnJvciBtZXNzYWdlICovCisgIC8qIHN0cmluZ3Mgd2l0aCBhIHNtYWxsIG1hY3JvIHRyaWNrIGV4cGxhaW5lZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSSAtIEVycm9yIEZvcm1hdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUaGUgY29uZmlndXJhdGlvbiBtYWNybyBGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTIGNhbiBiZSAgICovCisgIC8qICAgZGVmaW5lZCBpbiBmdG9wdGlvbi5oIGluIG9yZGVyIHRvIG1ha2UgdGhlIGhpZ2hlciBieXRlIGluZGljYXRlICAgICAqLworICAvKiAgIHRoZSBtb2R1bGUgd2hlcmUgdGhlIGVycm9yIGhhcyBoYXBwZW5lZCAodGhpcyBpcyBub3QgY29tcGF0aWJsZSAgICAgKi8KKyAgLyogICB3aXRoIHN0YW5kYXJkIGJ1aWxkcyBvZiBGcmVlVHlwZSAyKS4gIFNlZSB0aGUgZmlsZSBgZnRtb2RlcnIuaCcgZm9yICovCisgIC8qICAgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIElJIC0gRXJyb3IgTWVzc2FnZSBzdHJpbmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhlIGVycm9yIGRlZmluaXRpb25zIGJlbG93IGFyZSBtYWRlIHRocm91Z2ggc3BlY2lhbCBtYWNyb3MgdGhhdCAgICAqLworICAvKiAgIGFsbG93IGNsaWVudCBhcHBsaWNhdGlvbnMgdG8gYnVpbGQgYSB0YWJsZSBvZiBlcnJvciBtZXNzYWdlIHN0cmluZ3MgKi8KKyAgLyogICBpZiB0aGV5IG5lZWQgaXQuICBUaGUgc3RyaW5ncyBhcmUgbm90IGluY2x1ZGVkIGluIGEgbm9ybWFsIGJ1aWxkIG9mICovCisgIC8qICAgRnJlZVR5cGUgMiB0byBzYXZlIHNwYWNlIChtb3N0IGNsaWVudCBhcHBsaWNhdGlvbnMgZG8gbm90IHVzZSAgICAgICAqLworICAvKiAgIHRoZW0pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVG8gZG8gc28sIHlvdSBoYXZlIHRvIGRlZmluZSB0aGUgZm9sbG93aW5nIG1hY3JvcyBiZWZvcmUgaW5jbHVkaW5nICAqLworICAvKiAgIHRoaXMgZmlsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRlRfRVJST1JfU1RBUlRfTElTVCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgVGhpcyBtYWNybyBpcyBjYWxsZWQgYmVmb3JlIGFueXRoaW5nIGVsc2UgdG8gZGVmaW5lIHRoZSBzdGFydCBvZiAgKi8KKyAgLyogICAgIHRoZSBlcnJvciBsaXN0LiAgSXQgaXMgZm9sbG93ZWQgYnkgc2V2ZXJhbCBGVF9FUlJPUl9ERUYgY2FsbHMgICAgICovCisgIC8qICAgICAoc2VlIGJlbG93KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGVF9FUlJPUl9ERUYoIGUsIHYsIHMgKSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBUaGlzIG1hY3JvIGlzIGNhbGxlZCB0byBkZWZpbmUgb25lIHNpbmdsZSBlcnJvci4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgYGUnIGlzIHRoZSBlcnJvciBjb2RlIGlkZW50aWZpZXIgKGUuZy4gRlRfRXJyX0ludmFsaWRfQXJndW1lbnQpLiAgKi8KKyAgLyogICAgIGB2JyBpcyB0aGUgZXJyb3IgbnVtZXJpY2FsIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBgcycgaXMgdGhlIGNvcnJlc3BvbmRpbmcgZXJyb3Igc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGVF9FUlJPUl9FTkRfTElTVCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBUaGlzIG1hY3JvIGVuZHMgdGhlIGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBBZGRpdGlvbmFsbHksIHlvdSBoYXZlIHRvIHVuZGVmaW5lIF9fRlRFUlJPUlNfSF9fIGJlZm9yZSAjaW5jbHVkaW5nICovCisgIC8qICAgdGhpcyBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBIZXJlIGlzIGEgc2ltcGxlIGV4YW1wbGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgI3VuZGVmIF9fRlRFUlJPUlNfSF9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICNkZWZpbmUgRlRfRVJST1JERUYoIGUsIHYsIHMgKSAgeyBlLCBzIH0sICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAjZGVmaW5lIEZUX0VSUk9SX1NUQVJUX0xJU1QgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgI2RlZmluZSBGVF9FUlJPUl9FTkRfTElTVCAgICAgICB7IDAsIDAgfSB9OyAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBjb25zdCBzdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgaW50ICAgICAgICAgIGVycl9jb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgIGNvbnN0IGNoYXIqICBlcnJfbXNnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgfSBmdF9lcnJvcnNbXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAjaW5jbHVkZSAiZnRlcnJvcnMuaCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZURVJST1JTX0hfXworI2RlZmluZSBfX0ZURVJST1JTX0hfXworCisKKyAgLyogaW5jbHVkZSBtb2R1bGUgYmFzZSBlcnJvciBjb2RlcyAqLworI2luY2x1ZGUgImZ0bW9kZXJyLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgIFNFVFVQIE1BQ1JPUyAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjdW5kZWYgIEZUX05FRURfRVhURVJOX0MKKworCisgIC8qIEZUX0VSUl9QUkVGSVggaXMgdXNlZCBhcyBhIHByZWZpeCBmb3IgZXJyb3IgaWRlbnRpZmllcnMuICovCisgIC8qIEJ5IGRlZmF1bHQsIHdlIHVzZSBgRlRfRXJyXycuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEZUX0VSUl9QUkVGSVgKKyNkZWZpbmUgRlRfRVJSX1BSRUZJWCAgRlRfRXJyXworI2VuZGlmCisKKworICAvKiBGVF9FUlJfQkFTRSBpcyB1c2VkIGFzIHRoZSBiYXNlIGZvciBtb2R1bGUtc3BlY2lmaWMgZXJyb3JzLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMKKworI2lmbmRlZiBGVF9FUlJfQkFTRQorI2RlZmluZSBGVF9FUlJfQkFTRSAgRlRfTW9kX0Vycl9CYXNlCisjZW5kaWYKKworI2Vsc2UKKworI3VuZGVmIEZUX0VSUl9CQVNFCisjZGVmaW5lIEZUX0VSUl9CQVNFICAwCisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTICovCisKKworICAvKiBJZiBGVF9FUlJPUkRFRiBpcyBub3QgZGVmaW5lZCwgd2UgbmVlZCB0byBkZWZpbmUgYSBzaW1wbGUgKi8KKyAgLyogZW51bWVyYXRpb24gdHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmbmRlZiBGVF9FUlJPUkRFRgorCisjZGVmaW5lIEZUX0VSUk9SREVGKCBlLCB2LCBzICkgIGUgPSB2LAorI2RlZmluZSBGVF9FUlJPUl9TVEFSVF9MSVNUICAgICBlbnVtIHsKKyNkZWZpbmUgRlRfRVJST1JfRU5EX0xJU1QgICAgICAgRlRfRVJSX0NBVCggRlRfRVJSX1BSRUZJWCwgTWF4ICkgfTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjZGVmaW5lIEZUX05FRURfRVhURVJOX0MKKyAgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2VuZGlmIC8qICFGVF9FUlJPUkRFRiAqLworCisKKyAgLyogdGhpcyBtYWNybyBpcyB1c2VkIHRvIGRlZmluZSBhbiBlcnJvciAqLworI2RlZmluZSBGVF9FUlJPUkRFRl8oIGUsIHYsIHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9FUlJPUkRFRiggRlRfRVJSX0NBVCggRlRfRVJSX1BSRUZJWCwgZSApLCB2ICsgRlRfRVJSX0JBU0UsIHMgKQorCisgIC8qIHRoaXMgaXMgb25seSB1c2VkIGZvciA8bW9kdWxlPl9FcnJfT2ssIHdoaWNoIG11c3QgYmUgMCEgKi8KKyNkZWZpbmUgRlRfTk9FUlJPUkRFRl8oIGUsIHYsIHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0VSUk9SREVGKCBGVF9FUlJfQ0FUKCBGVF9FUlJfUFJFRklYLCBlICksIHYsIHMgKQorCisKKyNpZmRlZiBGVF9FUlJPUl9TVEFSVF9MSVNUCisgIEZUX0VSUk9SX1NUQVJUX0xJU1QKKyNlbmRpZgorCisKKyAgLyogbm93IGluY2x1ZGUgdGhlIGVycm9yIGNvZGVzICovCisjaW5jbHVkZSAiZnRlcnJkZWYuaCIKKworCisjaWZkZWYgRlRfRVJST1JfRU5EX0xJU1QKKyAgRlRfRVJST1JfRU5EX0xJU1QKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgIFNJTVBMRSBDTEVBTlVQICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBGVF9ORUVEX0VYVEVSTl9DCisgIH0KKyNlbmRpZgorCisjdW5kZWYgRlRfRVJST1JfU1RBUlRfTElTVAorI3VuZGVmIEZUX0VSUk9SX0VORF9MSVNUCisKKyN1bmRlZiBGVF9FUlJPUkRFRgorI3VuZGVmIEZUX0VSUk9SREVGXworI3VuZGVmIEZUX05PRVJST1JERUZfCisKKyN1bmRlZiBGVF9ORUVEX0VYVEVSTl9DCisjdW5kZWYgRlRfRVJSX0JBU0UKKworICAvKiBGVF9FUlJfUFJFRklYIGlzIG5lZWRlZCBpbnRlcm5hbGx5ICovCisjaWZuZGVmIEZUMl9CVUlMRF9MSUJSQVJZCisjdW5kZWYgRlRfRVJSX1BSRUZJWAorI2VuZGlmCisKKyNlbmRpZiAvKiBfX0ZURVJST1JTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRnYXNwLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGdhc3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjBhMzRhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRnYXNwLmgKQEAgLTAsMCArMSwxMjggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Z2FzcC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBY2Nlc3Mgb2YgVHJ1ZVR5cGUncyBgZ2FzcCcgdGFibGUgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNywgMjAwOCwgMjAxMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfRlRfR0FTUF9IXworI2RlZmluZSBfRlRfR0FTUF9IXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHNlY3Rpb246CisgICAqICAgZ2FzcF90YWJsZQorICAgKgorICAgKiBAdGl0bGU6CisgICAqICAgR2FzcCBUYWJsZQorICAgKgorICAgKiBAYWJzdHJhY3Q6CisgICAqICAgUmV0cmlldmluZyBUcnVlVHlwZSBgZ2FzcCcgdGFibGUgZW50cmllcy4KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoZSBmdW5jdGlvbiBARlRfR2V0X0dhc3AgY2FuIGJlIHVzZWQgdG8gcXVlcnkgYSBUcnVlVHlwZSBvciBPcGVuVHlwZQorICAgKiAgIGZvbnQgZm9yIHNwZWNpZmljIGVudHJpZXMgaW4gaXRzIGBnYXNwJyB0YWJsZSwgaWYgYW55LiAgVGhpcyBpcworICAgKiAgIG1haW5seSB1c2VmdWwgd2hlbiBpbXBsZW1lbnRpbmcgbmF0aXZlIFRydWVUeXBlIGhpbnRpbmcgd2l0aCB0aGUKKyAgICogICBieXRlY29kZSBpbnRlcnByZXRlciB0byBkdXBsaWNhdGUgdGhlIFdpbmRvd3MgdGV4dCByZW5kZXJpbmcgcmVzdWx0cy4KKyAgICovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgRlRfR0FTUF9YWFgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbGlzdCBvZiB2YWx1ZXMgYW5kL29yIGJpdC1mbGFncyByZXR1cm5lZCBieSB0aGUgQEZUX0dldF9HYXNwCisgICAqICAgZnVuY3Rpb24uCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgRlRfR0FTUF9OT19UQUJMRSA6OgorICAgKiAgICAgVGhpcyBzcGVjaWFsIHZhbHVlIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gR0FTUCB0YWJsZSBpbiB0aGlzIGZhY2UuCisgICAqICAgICBJdCBpcyB1cCB0byB0aGUgY2xpZW50IHRvIGRlY2lkZSB3aGF0IHRvIGRvLgorICAgKgorICAgKiAgIEZUX0dBU1BfRE9fR1JJREZJVCA6OgorICAgKiAgICAgR3JpZC1maXR0aW5nIGFuZCBoaW50aW5nIHNob3VsZCBiZSBwZXJmb3JtZWQgYXQgdGhlIHNwZWNpZmllZCBwcGVtLgorICAgKiAgICAgVGhpcyAqcmVhbGx5KiBtZWFucyBUcnVlVHlwZSBieXRlY29kZSBpbnRlcnByZXRhdGlvbi4gIElmIHRoaXMgYml0CisgICAqICAgICBpcyBub3Qgc2V0LCBubyBoaW50aW5nIGdldHMgYXBwbGllZC4KKyAgICoKKyAgICogICBGVF9HQVNQX0RPX0dSQVkgOjoKKyAgICogICAgIEFudGktYWxpYXNlZCByZW5kZXJpbmcgc2hvdWxkIGJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHBwZW0uCisgICAqICAgICBJZiBub3Qgc2V0LCBkbyBtb25vY2hyb21lIHJlbmRlcmluZy4KKyAgICoKKyAgICogICBGVF9HQVNQX1NZTU1FVFJJQ19TTU9PVEhJTkcgOjoKKyAgICogICAgIElmIHNldCwgc21vb3RoaW5nIGFsb25nIG11bHRpcGxlIGF4ZXMgbXVzdCBiZSB1c2VkIHdpdGggQ2xlYXJUeXBlLgorICAgKgorICAgKiAgIEZUX0dBU1BfU1lNTUVUUklDX0dSSURGSVQgOjoKKyAgICogICAgIEdyaWQtZml0dGluZyBtdXN0IGJlIHVzZWQgd2l0aCBDbGVhclR5cGUncyBzeW1tZXRyaWMgc21vb3RoaW5nLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGUgYml0LWZsYWdzIGBGVF9HQVNQX0RPX0dSSURGSVQnIGFuZCBgRlRfR0FTUF9ET19HUkFZJyBhcmUgdG8gYmUKKyAgICogICB1c2VkIGZvciBzdGFuZGFyZCBmb250IHJhc3Rlcml6YXRpb24gb25seS4gIEluZGVwZW5kZW50bHkgb2YgdGhhdCwKKyAgICogICBgRlRfR0FTUF9TWU1NRVRSSUNfU01PT1RISU5HJyBhbmQgYEZUX0dBU1BfU1lNTUVUUklDX0dSSURGSVQnIGFyZSB0bworICAgKiAgIGJlIHVzZWQgaWYgQ2xlYXJUeXBlIGlzIGVuYWJsZWQgKGFuZCBgRlRfR0FTUF9ET19HUklERklUJyBhbmQKKyAgICogICBgRlRfR0FTUF9ET19HUkFZJyBhcmUgY29uc2VxdWVudGx5IGlnbm9yZWQpLgorICAgKgorICAgKiAgIGBDbGVhclR5cGUnIGlzIE1pY3Jvc29mdCdzIGltcGxlbWVudGF0aW9uIG9mIExDRCByZW5kZXJpbmcsIHBhcnRseQorICAgKiAgIHByb3RlY3RlZCBieSBwYXRlbnRzLgorICAgKgorICAgKiBAc2luY2U6CisgICAqICAgMi4zLjAKKyAgICovCisjZGVmaW5lIEZUX0dBU1BfTk9fVEFCTEUgICAgICAgICAgICAgICAtMQorI2RlZmluZSBGVF9HQVNQX0RPX0dSSURGSVQgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgRlRfR0FTUF9ET19HUkFZICAgICAgICAgICAgICAweDAyCisjZGVmaW5lIEZUX0dBU1BfU1lNTUVUUklDX1NNT09USElORyAgMHgwOAorI2RlZmluZSBGVF9HQVNQX1NZTU1FVFJJQ19HUklERklUICAgIDB4MTAKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jOgorICAgKiAgIEZUX0dldF9HYXNwCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZWFkIHRoZSBgZ2FzcCcgdGFibGUgZnJvbSBhIFRydWVUeXBlIG9yIE9wZW5UeXBlIGZvbnQgZmlsZSBhbmQKKyAgICogICByZXR1cm4gdGhlIGVudHJ5IGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbiBjaGFyYWN0ZXIgcGl4ZWwgc2l6ZS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGZhY2UgOjogVGhlIHNvdXJjZSBmYWNlIGhhbmRsZS4KKyAgICogICBwcGVtIDo6IFRoZSB2ZXJ0aWNhbCBjaGFyYWN0ZXIgcGl4ZWwgc2l6ZS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBCaXQgZmxhZ3MgKHNlZSBARlRfR0FTUF9YWFgpLCBvciBARlRfR0FTUF9OT19UQUJMRSBpZiB0aGVyZSBpcyBubworICAgKiAgIGBnYXNwJyB0YWJsZSBpbiB0aGUgZmFjZS4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMy4wCisgICAqLworICBGVF9FWFBPUlQoIEZUX0ludCApCisgIEZUX0dldF9HYXNwKCBGVF9GYWNlICBmYWNlLAorICAgICAgICAgICAgICAgRlRfVUludCAgcHBlbSApOworCisvKiAqLworCisjZW5kaWYgLyogX0ZUX0dBU1BfSF8gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzJkOWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRnbHlwaC5oCkBAIC0wLDAgKzEsNjIwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGdseXBoLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgY29udmVuaWVuY2UgZnVuY3Rpb25zIHRvIGhhbmRsZSBnbHlwaHMgKHNwZWNpZmljYXRpb24pLiAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMywgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlZmluaXRpb24gb2Ygc2V2ZXJhbCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgICAgKi8KKyAgLyogdGhhdCBjYW4gYmUgdXNlZCBieSBjbGllbnQgYXBwbGljYXRpb25zIHRvIGVhc2lseSByZXRyaWV2ZSBnbHlwaCAgICAgICovCisgIC8qIGJpdG1hcHMgYW5kIG91dGxpbmVzIGZyb20gYSBnaXZlbiBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBvcHRpb25hbCBpZiB5b3UgYXJlIHdyaXRpbmcgYSBmb250IHNlcnZlciAgICovCisgIC8qIG9yIHRleHQgbGF5b3V0IGVuZ2luZSBvbiB0b3Agb2YgRnJlZVR5cGUuICBIb3dldmVyLCB0aGV5IGFyZSBwcmV0dHkgICAqLworICAvKiBoYW5keSBmb3IgbWFueSBvdGhlciBzaW1wbGUgdXNlcyBvZiB0aGUgbGlicmFyeS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVEdMWVBIX0hfXworI2RlZmluZSBfX0ZUR0xZUEhfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9tYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHbHlwaCBNYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHZW5lcmljIGludGVyZmFjZSB0byBtYW5hZ2UgaW5kaXZpZHVhbCBnbHlwaCBkYXRhLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgZGVmaW5pdGlvbnMgdXNlZCB0byBtYW5hZ2UgZ2x5cGggZGF0YSAgICAgICAgKi8KKyAgLyogICAgdGhyb3VnaCBnZW5lcmljIEZUX0dseXBoIG9iamVjdHMuICBFYWNoIG9mIHRoZW0gY2FuIGNvbnRhaW4gYSAgICAgICovCisgIC8qICAgIGJpdG1hcCwgYSB2ZWN0b3Igb3V0bGluZSwgb3IgZXZlbiBpbWFnZXMgaW4gb3RoZXIgZm9ybWF0cy4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uIHRvIGEgcHJpdmF0ZSB0eXBlICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0dseXBoX0NsYXNzXyAgRlRfR2x5cGhfQ2xhc3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBIYW5kbGUgdG8gYW4gb2JqZWN0IHVzZWQgdG8gbW9kZWwgZ2VuZXJpYyBnbHlwaCBpbWFnZXMuICBJdCBpcyBhICAgKi8KKyAgLyogICAgcG9pbnRlciB0byB0aGUgQEZUX0dseXBoUmVjIHN0cnVjdHVyZSBhbmQgY2FuIGNvbnRhaW4gYSBnbHlwaCAgICAgICovCisgIC8qICAgIGJpdG1hcCBvciBwb2ludGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEdseXBoIG9iamVjdHMgYXJlIG5vdCBvd25lZCBieSB0aGUgbGlicmFyeS4gIFlvdSBtdXN0IHRodXMgcmVsZWFzZSAqLworICAvKiAgICB0aGVtIG1hbnVhbGx5ICh0aHJvdWdoIEBGVF9Eb25lX0dseXBoKSBfYmVmb3JlXyBjYWxsaW5nICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX0RvbmVfRnJlZVR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9HbHlwaFJlY18qICBGVF9HbHlwaDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSByb290IGdseXBoIHN0cnVjdHVyZSBjb250YWlucyBhIGdpdmVuIGdseXBoIGltYWdlIHBsdXMgaXRzICAgICAqLworICAvKiAgICBhZHZhbmNlIHdpZHRoIGluIDE2LjE2IGZpeGVkLXBvaW50IGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIHRoZSBGcmVlVHlwZSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNsYXp6ICAgOjogQSBwb2ludGVyIHRvIHRoZSBnbHlwaCdzIGNsYXNzLiAgUHJpdmF0ZS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZm9ybWF0ICA6OiBUaGUgZm9ybWF0IG9mIHRoZSBnbHlwaCdzIGltYWdlLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZHZhbmNlIDo6IEEgMTYuMTYgdmVjdG9yIHRoYXQgZ2l2ZXMgdGhlIGdseXBoJ3MgYWR2YW5jZSB3aWR0aC4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9HbHlwaFJlY18KKyAgeworICAgIEZUX0xpYnJhcnkgICAgICAgICAgICAgbGlicmFyeTsKKyAgICBjb25zdCBGVF9HbHlwaF9DbGFzcyogIGNsYXp6OworICAgIEZUX0dseXBoX0Zvcm1hdCAgICAgICAgZm9ybWF0OworICAgIEZUX1ZlY3RvciAgICAgICAgICAgICAgYWR2YW5jZTsKKworICB9IEZUX0dseXBoUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQml0bWFwR2x5cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYW4gb2JqZWN0IHVzZWQgdG8gbW9kZWwgYSBiaXRtYXAgZ2x5cGggaW1hZ2UuICBUaGlzIGlzICovCisgIC8qICAgIGEgc3ViLWNsYXNzIG9mIEBGVF9HbHlwaCwgYW5kIGEgcG9pbnRlciB0byBARlRfQml0bWFwR2x5cGhSZWMuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfQml0bWFwR2x5cGhSZWNfKiAgRlRfQml0bWFwR2x5cGg7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXBHbHlwaFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIGZvciBiaXRtYXAgZ2x5cGggaW1hZ2VzLiAgVGhpcyByZWFsbHkgaXMgYSAgICAgICAgKi8KKyAgLyogICAgYHN1Yi1jbGFzcycgb2YgQEZUX0dseXBoUmVjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcm9vdCAgIDo6IFRoZSByb290IEBGVF9HbHlwaCBmaWVsZHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsZWZ0ICAgOjogVGhlIGxlZnQtc2lkZSBiZWFyaW5nLCBpLmUuLCB0aGUgaG9yaXpvbnRhbCBkaXN0YW5jZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgIGZyb20gdGhlIGN1cnJlbnQgcGVuIHBvc2l0aW9uIHRvIHRoZSBsZWZ0IGJvcmRlciBvZiB0aGUgICovCisgIC8qICAgICAgICAgICAgICBnbHlwaCBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdG9wICAgIDo6IFRoZSB0b3Atc2lkZSBiZWFyaW5nLCBpLmUuLCB0aGUgdmVydGljYWwgZGlzdGFuY2UgZnJvbSAgICovCisgIC8qICAgICAgICAgICAgICB0aGUgY3VycmVudCBwZW4gcG9zaXRpb24gdG8gdGhlIHRvcCBib3JkZXIgb2YgdGhlIGdseXBoICAqLworICAvKiAgICAgICAgICAgICAgYml0bWFwLiAgVGhpcyBkaXN0YW5jZSBpcyBwb3NpdGl2ZSBmb3IgdXB3YXJkc355ISAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJpdG1hcCA6OiBBIGRlc2NyaXB0b3IgZm9yIHRoZSBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFlvdSBjYW4gdHlwZWNhc3QgYW4gQEZUX0dseXBoIHRvIEBGVF9CaXRtYXBHbHlwaCBpZiB5b3UgaGF2ZSAgICAgICAqLworICAvKiAgICBgZ2x5cGgtPmZvcm1hdCA9PSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQJy4gIFRoaXMgbGV0cyB5b3UgYWNjZXNzICAgKi8KKyAgLyogICAgdGhlIGJpdG1hcCdzIGNvbnRlbnRzIGVhc2lseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgY29ycmVzcG9uZGluZyBwaXhlbCBidWZmZXIgaXMgYWx3YXlzIG93bmVkIGJ5IEBGVF9CaXRtYXBHbHlwaCAgKi8KKyAgLyogICAgYW5kIGlzIHRodXMgY3JlYXRlZCBhbmQgZGVzdHJveWVkIHdpdGggaXQuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfQml0bWFwR2x5cGhSZWNfCisgIHsKKyAgICBGVF9HbHlwaFJlYyAgcm9vdDsKKyAgICBGVF9JbnQgICAgICAgbGVmdDsKKyAgICBGVF9JbnQgICAgICAgdG9wOworICAgIEZUX0JpdG1hcCAgICBiaXRtYXA7CisKKyAgfSBGVF9CaXRtYXBHbHlwaFJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVHbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGFuIG9iamVjdCB1c2VkIHRvIG1vZGVsIGFuIG91dGxpbmUgZ2x5cGggaW1hZ2UuICBUaGlzICAqLworICAvKiAgICBpcyBhIHN1Yi1jbGFzcyBvZiBARlRfR2x5cGgsIGFuZCBhIHBvaW50ZXIgdG8gQEZUX091dGxpbmVHbHlwaFJlYy4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX091dGxpbmVHbHlwaFJlY18qICBGVF9PdXRsaW5lR2x5cGg7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lR2x5cGhSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIGZvciBvdXRsaW5lICh2ZWN0b3JpYWwpIGdseXBoIGltYWdlcy4gIFRoaXMgICAgICAgKi8KKyAgLyogICAgcmVhbGx5IGlzIGEgYHN1Yi1jbGFzcycgb2YgQEZUX0dseXBoUmVjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcm9vdCAgICA6OiBUaGUgcm9vdCBARlRfR2x5cGggZmllbGRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lIDo6IEEgZGVzY3JpcHRvciBmb3IgdGhlIG91dGxpbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBZb3UgY2FuIHR5cGVjYXN0IGFuIEBGVF9HbHlwaCB0byBARlRfT3V0bGluZUdseXBoIGlmIHlvdSBoYXZlICAgICAgKi8KKyAgLyogICAgYGdseXBoLT5mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUnLiAgVGhpcyBsZXRzIHlvdSBhY2Nlc3MgICovCisgIC8qICAgIHRoZSBvdXRsaW5lJ3MgY29udGVudCBlYXNpbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQXMgdGhlIG91dGxpbmUgaXMgZXh0cmFjdGVkIGZyb20gYSBnbHlwaCBzbG90LCBpdHMgY29vcmRpbmF0ZXMgYXJlICovCisgIC8qICAgIGV4cHJlc3NlZCBub3JtYWxseSBpbiAyNi42IHBpeGVscywgdW5sZXNzIHRoZSBmbGFnICAgICAgICAgICAgICAgICAqLworICAvKiAgICBARlRfTE9BRF9OT19TQ0FMRSB3YXMgdXNlZCBpbiBARlRfTG9hZF9HbHlwaCgpIG9yIEBGVF9Mb2FkX0NoYXIoKS4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBvdXRsaW5lJ3MgdGFibGVzIGFyZSBhbHdheXMgb3duZWQgYnkgdGhlIG9iamVjdCBhbmQgYXJlICAgICAgICAqLworICAvKiAgICBkZXN0cm95ZWQgd2l0aCBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9PdXRsaW5lR2x5cGhSZWNfCisgIHsKKyAgICBGVF9HbHlwaFJlYyAgcm9vdDsKKyAgICBGVF9PdXRsaW5lICAgb3V0bGluZTsKKworICB9IEZUX091dGxpbmVHbHlwaFJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9HbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCB0byBleHRyYWN0IGEgZ2x5cGggaW1hZ2UgZnJvbSBhIHNsb3QuICBOb3RlIHRoYXQgICAqLworICAvKiAgICB0aGUgY3JlYXRlZCBARlRfR2x5cGggb2JqZWN0IG11c3QgYmUgcmVsZWFzZWQgd2l0aCBARlRfRG9uZV9HbHlwaC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzbG90ICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBnbHlwaCBzbG90LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZ2x5cGggOjogQSBoYW5kbGUgdG8gdGhlIGdseXBoIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfR2x5cGgoIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICBGVF9HbHlwaCAgICAgKmFnbHlwaCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2x5cGhfQ29weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIGNvcHkgYSBnbHlwaCBpbWFnZS4gIE5vdGUgdGhhdCB0aGUgY3JlYXRlZCAgICAgICovCisgIC8qICAgIEBGVF9HbHlwaCBvYmplY3QgbXVzdCBiZSByZWxlYXNlZCB3aXRoIEBGVF9Eb25lX0dseXBoLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNvdXJjZSA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGdseXBoIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhcmdldCA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGdseXBoIG9iamVjdC4gIDB+aW4gY2FzZSBvZiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HbHlwaF9Db3B5KCBGVF9HbHlwaCAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgRlRfR2x5cGggICp0YXJnZXQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dseXBoX1RyYW5zZm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRyYW5zZm9ybSBhIGdseXBoIGltYWdlIGlmIGl0cyBmb3JtYXQgaXMgc2NhbGFibGUuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGdseXBoIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hdHJpeCA6OiBBIHBvaW50ZXIgdG8gYSAyeDIgbWF0cml4IHRvIGFwcGx5LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVsdGEgIDo6IEEgcG9pbnRlciB0byBhIDJkIHZlY3RvciB0byBhcHBseS4gIENvb3JkaW5hdGVzIGFyZSAgICAgICovCisgIC8qICAgICAgICAgICAgICBleHByZXNzZWQgaW4gMS82NHRoIG9mIGEgcGl4ZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUgKGlmIG5vdCAwLCB0aGUgZ2x5cGggZm9ybWF0IGlzIG5vdCBzY2FsYWJsZSkuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSAyeDIgdHJhbnNmb3JtYXRpb24gbWF0cml4IGlzIGFsc28gYXBwbGllZCB0byB0aGUgZ2x5cGgncyAgICAgICAqLworICAvKiAgICBhZHZhbmNlIHZlY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HbHlwaF9UcmFuc2Zvcm0oIEZUX0dseXBoICAgIGdseXBoLAorICAgICAgICAgICAgICAgICAgICAgIEZUX01hdHJpeCogIG1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICBkZWx0YSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2x5cGhfQkJveF9Nb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG1vZGUgaG93IHRoZSB2YWx1ZXMgb2YgQEZUX0dseXBoX0dldF9DQm94IGFyZSByZXR1cm5lZC4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR0xZUEhfQkJPWF9VTlNDQUxFRCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgUmV0dXJuIHVuc2NhbGVkIGZvbnQgdW5pdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR0xZUEhfQkJPWF9TVUJQSVhFTFMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgUmV0dXJuIHVuZml0dGVkIDI2LjYgY29vcmRpbmF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR0xZUEhfQkJPWF9HUklERklUIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgUmV0dXJuIGdyaWQtZml0dGVkIDI2LjYgY29vcmRpbmF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR0xZUEhfQkJPWF9UUlVOQ0FURSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgUmV0dXJuIGNvb3JkaW5hdGVzIGluIGludGVnZXIgcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR0xZUEhfQkJPWF9QSVhFTFMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgUmV0dXJuIGdyaWQtZml0dGVkIHBpeGVsIGNvb3JkaW5hdGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBlbnVtICBGVF9HbHlwaF9CQm94X01vZGVfCisgIHsKKyAgICBGVF9HTFlQSF9CQk9YX1VOU0NBTEVEICA9IDAsCisgICAgRlRfR0xZUEhfQkJPWF9TVUJQSVhFTFMgPSAwLAorICAgIEZUX0dMWVBIX0JCT1hfR1JJREZJVCAgID0gMSwKKyAgICBGVF9HTFlQSF9CQk9YX1RSVU5DQVRFICA9IDIsCisgICAgRlRfR0xZUEhfQkJPWF9QSVhFTFMgICAgPSAzCisKKyAgfSBGVF9HbHlwaF9CQm94X01vZGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9nbHlwaF9iYm94X3h4eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGVzZSBjb25zdGFudHMgYXJlIGRlcHJlY2F0ZWQuICBVc2UgdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX0dseXBoX0JCb3hfTW9kZSB2YWx1ZXMgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBmdF9nbHlwaF9iYm94X3Vuc2NhbGVkICA6OiBTZWUgQEZUX0dMWVBIX0JCT1hfVU5TQ0FMRUQuICAgICAgICAgICAgICovCisgIC8qICAgZnRfZ2x5cGhfYmJveF9zdWJwaXhlbHMgOjogU2VlIEBGVF9HTFlQSF9CQk9YX1NVQlBJWEVMUy4gICAgICAgICAgICAqLworICAvKiAgIGZ0X2dseXBoX2Jib3hfZ3JpZGZpdCAgIDo6IFNlZSBARlRfR0xZUEhfQkJPWF9HUklERklULiAgICAgICAgICAgICAgKi8KKyAgLyogICBmdF9nbHlwaF9iYm94X3RydW5jYXRlICA6OiBTZWUgQEZUX0dMWVBIX0JCT1hfVFJVTkNBVEUuICAgICAgICAgICAgICovCisgIC8qICAgZnRfZ2x5cGhfYmJveF9waXhlbHMgICAgOjogU2VlIEBGVF9HTFlQSF9CQk9YX1BJWEVMUy4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgZnRfZ2x5cGhfYmJveF91bnNjYWxlZCAgIEZUX0dMWVBIX0JCT1hfVU5TQ0FMRUQKKyNkZWZpbmUgZnRfZ2x5cGhfYmJveF9zdWJwaXhlbHMgIEZUX0dMWVBIX0JCT1hfU1VCUElYRUxTCisjZGVmaW5lIGZ0X2dseXBoX2Jib3hfZ3JpZGZpdCAgICBGVF9HTFlQSF9CQk9YX0dSSURGSVQKKyNkZWZpbmUgZnRfZ2x5cGhfYmJveF90cnVuY2F0ZSAgIEZUX0dMWVBIX0JCT1hfVFJVTkNBVEUKKyNkZWZpbmUgZnRfZ2x5cGhfYmJveF9waXhlbHMgICAgIEZUX0dMWVBIX0JCT1hfUElYRUxTCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HbHlwaF9HZXRfQ0JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gYSBnbHlwaCdzIGBjb250cm9sIGJveCcuICBUaGUgY29udHJvbCBib3ggZW5jbG9zZXMgYWxsIHRoZSAgKi8KKyAgLyogICAgb3V0bGluZSdzIHBvaW50cywgaW5jbHVkaW5nIELDqXppZXIgY29udHJvbCBwb2ludHMuICBUaG91Z2ggaXQgICAgICAqLworICAvKiAgICBjb2luY2lkZXMgd2l0aCB0aGUgZXhhY3QgYm91bmRpbmcgYm94IGZvciBtb3N0IGdseXBocywgaXQgY2FuIGJlICAgKi8KKyAgLyogICAgc2xpZ2h0bHkgbGFyZ2VyIGluIHNvbWUgc2l0dWF0aW9ucyAobGlrZSB3aGVuIHJvdGF0aW5nIGFuIG91dGxpbmUgICovCisgIC8qICAgIHdoaWNoIGNvbnRhaW5zIELDqXppZXIgb3V0c2lkZSBhcmNzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbXB1dGluZyB0aGUgY29udHJvbCBib3ggaXMgdmVyeSBmYXN0LCB3aGlsZSBnZXR0aW5nIHRoZSBib3VuZGluZyAqLworICAvKiAgICBib3ggY2FuIHRha2UgbXVjaCBtb3JlIHRpbWUgYXMgaXQgbmVlZHMgdG8gd2FsayBvdmVyIGFsbCBzZWdtZW50cyAgKi8KKyAgLyogICAgYW5kIGFyY3MgaW4gdGhlIG91dGxpbmUuICBUbyBnZXQgdGhlIGxhdHRlciwgeW91IGNhbiB1c2UgdGhlICAgICAgICovCisgIC8qICAgIGBmdGJib3gnIGNvbXBvbmVudCB3aGljaCBpcyBkZWRpY2F0ZWQgdG8gdGhpcyBzaW5nbGUgdGFzay4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZ2x5cGggb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kZSAgOjogVGhlIG1vZGUgd2hpY2ggaW5kaWNhdGVzIGhvdyB0byBpbnRlcnByZXQgdGhlIHJldHVybmVkICAgICovCisgIC8qICAgICAgICAgICAgIGJvdW5kaW5nIGJveCB2YWx1ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFjYm94IDo6IFRoZSBnbHlwaCBjb29yZGluYXRlIGJvdW5kaW5nIGJveC4gIENvb3JkaW5hdGVzIGFyZSAgICAgICAqLworICAvKiAgICAgICAgICAgICBleHByZXNzZWQgaW4gMS82NHRoIG9mIHBpeGVscyBpZiBpdCBpcyBncmlkLWZpdHRlZC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDb29yZGluYXRlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGdseXBoIG9yaWdpbiwgdXNpbmcgdGhlIHl+dXB3YXJkcyAgKi8KKyAgLyogICAgY29udmVudGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiB0aGUgZ2x5cGggaGFzIGJlZW4gbG9hZGVkIHdpdGggQEZUX0xPQURfTk9fU0NBTEUsIGBiYm94X21vZGUnICAgKi8KKyAgLyogICAgbXVzdCBiZSBzZXQgdG8gQEZUX0dMWVBIX0JCT1hfVU5TQ0FMRUQgdG8gZ2V0IHVuc2NhbGVkIGZvbnQgICAgICAgICovCisgIC8qICAgIHVuaXRzIGluIDI2LjYgcGl4ZWwgZm9ybWF0LiAgVGhlIHZhbHVlIEBGVF9HTFlQSF9CQk9YX1NVQlBJWEVMUyAgICAqLworICAvKiAgICBpcyBhbm90aGVyIG5hbWUgZm9yIHRoaXMgY29uc3RhbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIHRoZSBmb250IGlzIHRyaWNreSBhbmQgdGhlIGdseXBoIGhhcyBiZWVuIGxvYWRlZCB3aXRoICAgICAgICAgICAqLworICAvKiAgICBARlRfTE9BRF9OT19TQ0FMRSwgdGhlIHJlc3VsdGluZyBDQm94IGlzIG1lYW5pbmdsZXNzLiAgVG8gZ2V0ICAgICAgKi8KKyAgLyogICAgcmVhc29uYWJsZSB2YWx1ZXMgZm9yIHRoZSBDQm94IGl0IGlzIG5lY2Vzc2FyeSB0byBsb2FkIHRoZSBnbHlwaCAgICovCisgIC8qICAgIGF0IGEgbGFyZ2UgcHBlbSB2YWx1ZSAoc28gdGhhdCB0aGUgaGludGluZyBpbnN0cnVjdGlvbnMgY2FuICAgICAgICAqLworICAvKiAgICBwcm9wZXJseSBzaGlmdCBhbmQgc2NhbGUgdGhlIHN1YmdseXBocyksIHRoZW4gZXh0cmFjdGluZyB0aGUgQ0JveCAgKi8KKyAgLyogICAgd2hpY2ggY2FuIGJlIGV2ZW50dWFsbHkgY29udmVydGVkIGJhY2sgdG8gZm9udCB1bml0cy4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RlIHRoYXQgdGhlIG1heGltdW0gY29vcmRpbmF0ZXMgYXJlIGV4Y2x1c2l2ZSwgd2hpY2ggbWVhbnMgdGhhdCAgKi8KKyAgLyogICAgb25lIGNhbiBjb21wdXRlIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBnbHlwaCBpbWFnZSAoYmUgaXQgaW4gICovCisgIC8qICAgIGludGVnZXIgb3IgMjYuNiBwaXhlbHMpIGFzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgd2lkdGggID0gYmJveC54TWF4IC0gYmJveC54TWluOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGhlaWdodCA9IGJib3gueU1heCAtIGJib3gueU1pbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RlIGFsc28gdGhhdCBmb3IgMjYuNiBjb29yZGluYXRlcywgaWYgYGJib3hfbW9kZScgaXMgc2V0IHRvICAgICAgKi8KKyAgLyogICAgQEZUX0dMWVBIX0JCT1hfR1JJREZJVCwgdGhlIGNvb3JkaW5hdGVzIHdpbGwgYWxzbyBiZSBncmlkLWZpdHRlZCwgICovCisgIC8qICAgIHdoaWNoIGNvcnJlc3BvbmRzIHRvOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgYmJveC54TWluID0gRkxPT1IoYmJveC54TWluKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGJib3gueU1pbiA9IEZMT09SKGJib3gueU1pbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBiYm94LnhNYXggPSBDRUlMSU5HKGJib3gueE1heCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgYmJveC55TWF4ID0gQ0VJTElORyhiYm94LnlNYXgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRvIGdldCB0aGUgYmJveCBpbiBwaXhlbCBjb29yZGluYXRlcywgc2V0IGBiYm94X21vZGUnIHRvICAgICAgICAgICAqLworICAvKiAgICBARlRfR0xZUEhfQkJPWF9UUlVOQ0FURS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRvIGdldCB0aGUgYmJveCBpbiBncmlkLWZpdHRlZCBwaXhlbCBjb29yZGluYXRlcywgc2V0IGBiYm94X21vZGUnICAqLworICAvKiAgICB0byBARlRfR0xZUEhfQkJPWF9QSVhFTFMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX0dseXBoX0dldF9DQm94KCBGVF9HbHlwaCAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgYmJveF9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgRlRfQkJveCAgKmFjYm94ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HbHlwaF9Ub19CaXRtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDb252ZXJ0IGEgZ2l2ZW4gZ2x5cGggb2JqZWN0IHRvIGEgYml0bWFwIGdseXBoIG9iamVjdC4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0aGVfZ2x5cGggICA6OiBBIHBvaW50ZXIgdG8gYSBoYW5kbGUgdG8gdGhlIHRhcmdldCBnbHlwaC4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZW5kZXJfbW9kZSA6OiBBbiBlbnVtZXJhdGlvbiB0aGF0IGRlc2NyaWJlcyBob3cgdGhlIGRhdGEgaXMgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgcmVuZGVyZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvcmlnaW4gICAgICA6OiBBIHBvaW50ZXIgdG8gYSB2ZWN0b3IgdXNlZCB0byB0cmFuc2xhdGUgdGhlIGdseXBoICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgaW1hZ2UgYmVmb3JlIHJlbmRlcmluZy4gIENhbiBiZX4wIChpZiBubyAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uKS4gIFRoZSBvcmlnaW4gaXMgZXhwcmVzc2VkIGluICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAyNi42IHBpeGVscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlc3Ryb3kgICAgIDo6IEEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBvcmlnaW5hbCBnbHlwaCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBpbWFnZSBzaG91bGQgYmUgZGVzdHJveWVkIGJ5IHRoaXMgZnVuY3Rpb24uICBJdCBpcyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgbmV2ZXIgZGVzdHJveWVkIGluIGNhc2Ugb2YgZXJyb3IuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYgdGhlIGdseXBoIGZvcm1hdCBpc24ndCBzY2FsYWJsZS4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZ2x5cGggaW1hZ2UgaXMgdHJhbnNsYXRlZCB3aXRoIHRoZSBgb3JpZ2luJyB2ZWN0b3IgYmVmb3JlICAgICAgKi8KKyAgLyogICAgcmVuZGVyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBARlRfR2x5cGggaGFuZGxlLCB0aGF0IHdpbGwgKi8KKyAgLyogICAgYmUgX3JlcGxhY2VkXyBieSB0aGlzIGZ1bmN0aW9uICh3aXRoIG5ld2x5IGFsbG9jYXRlZCBkYXRhKS4gICAgICAgICovCisgIC8qICAgIFR5cGljYWxseSwgeW91IHdvdWxkIHVzZSAob21pdHRpbmcgZXJyb3IgaGFuZGxpbmcpOiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgRlRfR2x5cGggICAgICAgIGdseXBoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIEZUX0JpdG1hcEdseXBoICBnbHlwaF9iaXRtYXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC8vIGxvYWQgZ2x5cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICBlcnJvciA9IEZUX0xvYWRfQ2hhciggZmFjZSwgZ2x5cGhfaW5kZXgsIEZUX0xPQURfREVGQVVUICk7ICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC8vIGV4dHJhY3QgZ2x5cGggaW1hZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICBlcnJvciA9IEZUX0dldF9HbHlwaCggZmFjZS0+Z2x5cGgsICZnbHlwaCApOyAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC8vIGNvbnZlcnQgdG8gYSBiaXRtYXAgKGRlZmF1bHQgcmVuZGVyIG1vZGUgKyBkZXN0cm95aW5nIG9sZCkgICovCisgIC8qICAgICAgICBpZiAoIGdseXBoLT5mb3JtYXQgIT0gRlRfR0xZUEhfRk9STUFUX0JJVE1BUCApICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgZXJyb3IgPSBGVF9HbHlwaF9Ub19CaXRtYXAoICZnbHlwaCwgRlRfUkVOREVSX01PREVfTk9STUFMLCAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBpZiAoIGVycm9yICkgLy8gYGdseXBoJyB1bmNoYW5nZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC8vIGFjY2VzcyBiaXRtYXAgY29udGVudCBieSB0eXBlY2FzdGluZyAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICBnbHlwaF9iaXRtYXAgPSAoRlRfQml0bWFwR2x5cGgpZ2x5cGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC8vIGRvIGZ1bm55IHN0dWZmIHdpdGggaXQsIGxpa2UgYmxpdHRpbmcvZHJhd2luZyAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC8vIGRpc2NhcmQgZ2x5cGggaW1hZ2UgKGJpdG1hcCBvciBub3QpICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICBGVF9Eb25lX0dseXBoKCBnbHlwaCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBIZXJlIGFub3RoZXIgZXhhbXBsZSwgYWdhaW4gd2l0aG91dCBlcnJvciBoYW5kbGluZzogICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIEZUX0dseXBoICBnbHlwaHNbTUFYX0dMWVBIU10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgZm9yICggaWR4ID0gMDsgaSA8IE1BWF9HTFlQSFM7IGkrKyApICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgZXJyb3IgPSBGVF9Mb2FkX0dseXBoKCBmYWNlLCBpZHgsIEZUX0xPQURfREVGQVVMVCApIHx8ICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgRlRfR2V0X0dseXBoICggZmFjZS0+Z2x5cGgsICZnbHlwaFtpZHhdICk7ICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgZm9yICggaWR4ID0gMDsgaSA8IE1BWF9HTFlQSFM7IGkrKyApICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEZUX0dseXBoICBiaXRtYXAgPSBnbHlwaHNbaWR4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgLy8gYWZ0ZXIgdGhpcyBjYWxsLCBgYml0bWFwJyBubyBsb25nZXIgcG9pbnRzIGludG8gICAgICAgICAgICovCisgIC8qICAgICAgICAgIC8vIHRoZSBgZ2x5cGhzJyBhcnJheSAoYW5kIHRoZSBvbGQgdmFsdWUgaXNuJ3QgZGVzdHJveWVkKSAgICAqLworICAvKiAgICAgICAgICBGVF9HbHlwaF9Ub19CaXRtYXAoICZiaXRtYXAsIEZUX1JFTkRFUl9NT0RFX01PTk8sIDAsIDAgKTsgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgRlRfRG9uZV9HbHlwaCggYml0bWFwICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgZm9yICggaWR4ID0gMDsgaSA8IE1BWF9HTFlQSFM7IGkrKyApICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgRlRfRG9uZV9HbHlwaCggZ2x5cGhzW2lkeF0gKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dseXBoX1RvX0JpdG1hcCggRlRfR2x5cGgqICAgICAgIHRoZV9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgcmVuZGVyX21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgICAgIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgZGVzdHJveSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRG9uZV9HbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVzdHJveSBhIGdpdmVuIGdseXBoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGggOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBnbHlwaCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9Eb25lX0dseXBoKCBGVF9HbHlwaCAgZ2x5cGggKTsKKworICAvKiAqLworCisKKyAgLyogb3RoZXIgaGVscGZ1bCBmdW5jdGlvbnMgKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb21wdXRhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTWF0cml4X011bHRpcGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUGVyZm9ybSB0aGUgbWF0cml4IG9wZXJhdGlvbiBgYiA9IGEqYicuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYSA6OiBBIHBvaW50ZXIgdG8gbWF0cml4IGBhJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYiA6OiBBIHBvaW50ZXIgdG8gbWF0cml4IGBiJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlc3VsdCBpcyB1bmRlZmluZWQgaWYgZWl0aGVyIGBhJyBvciBgYicgaXMgemVyby4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9NYXRyaXhfTXVsdGlwbHkoIGNvbnN0IEZUX01hdHJpeCogIGEsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTWF0cml4KiAgICAgICAgYiApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTWF0cml4X0ludmVydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW52ZXJ0IGEgMngyIG1hdHJpeC4gIFJldHVybiBhbiBlcnJvciBpZiBpdCBjYW4ndCBiZSBpbnZlcnRlZC4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF0cml4IDo6IEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IG1hdHJpeC4gIFJlbWFpbnMgdW50b3VjaGVkIGluICAgICovCisgIC8qICAgICAgICAgICAgICBjYXNlIG9mIGVycm9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX01hdHJpeF9JbnZlcnQoIEZUX01hdHJpeCogIG1hdHJpeCApOworCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUR0xZUEhfSF9fICovCisKKworLyogRU5EICovCisKKworLyogTG9jYWwgVmFyaWFibGVzOiAqLworLyogY29kaW5nOiB1dGYtOCAgICAqLworLyogRW5kOiAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRneHZhbC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRneHZhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MzY1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGd4dmFsLmgKQEAgLTAsMCArMSwzNTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Z3h2YWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIHZhbGlkYXRpbmcgVHJ1ZVR5cGVHWC9BQVQgdGFibGVzIChzcGVjaWZpY2F0aW9uKS4gICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNCwgMjAwNSwgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgTWFzYXRha2UgWUFNQVRPLCBSZWRoYXQgSy5LLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGd4dmFsaWQgaXMgZGVyaXZlZCBmcm9tIGJvdGggZ3hsYXlvdXQgbW9kdWxlIGFuZCBvdHZhbGlkIG1vZHVsZS4gICAgICAgICovCisvKiBEZXZlbG9wbWVudCBvZiBneGxheW91dCBpcyBzdXBwb3J0ZWQgYnkgdGhlIEluZm9ybWF0aW9uLXRlY2hub2xvZ3kgICAgICAqLworLyogUHJvbW90aW9uIEFnZW5jeShJUEEpLCBKYXBhbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVEdYVkFMX0hfXworI2RlZmluZSBfX0ZUR1hWQUxfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ3hfdmFsaWRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVHJ1ZVR5cGVHWC9BQVQgVmFsaWRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gQVBJIHRvIHZhbGlkYXRlIFRydWVUeXBlR1gvQUFUIHRhYmxlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbnMgdG8gdmFsaWRhdGUgICAgICovCisgIC8qICAgIHNvbWUgVHJ1ZVR5cGVHWCB0YWJsZXMgKGZlYXQsIG1vcnQsIG1vcngsIGJzbG4sIGp1c3QsIGtlcm4sIG9wYmQsICAqLworICAvKiAgICB0cmFrLCBwcm9wLCBsY2FyKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogV2FybmluZzogVXNlIEZUX1ZBTElEQVRFX1hYWCB0byB2YWxpZGF0ZSBhIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgZm9yIGd4dmFsaWQgZGV2ZWxvcGVycy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEZUX1ZBTElEQVRFX2ZlYXRfSU5ERVggICAgIDAKKyNkZWZpbmUgRlRfVkFMSURBVEVfbW9ydF9JTkRFWCAgICAgMQorI2RlZmluZSBGVF9WQUxJREFURV9tb3J4X0lOREVYICAgICAyCisjZGVmaW5lIEZUX1ZBTElEQVRFX2JzbG5fSU5ERVggICAgIDMKKyNkZWZpbmUgRlRfVkFMSURBVEVfanVzdF9JTkRFWCAgICAgNAorI2RlZmluZSBGVF9WQUxJREFURV9rZXJuX0lOREVYICAgICA1CisjZGVmaW5lIEZUX1ZBTElEQVRFX29wYmRfSU5ERVggICAgIDYKKyNkZWZpbmUgRlRfVkFMSURBVEVfdHJha19JTkRFWCAgICAgNworI2RlZmluZSBGVF9WQUxJREFURV9wcm9wX0lOREVYICAgICA4CisjZGVmaW5lIEZUX1ZBTElEQVRFX2xjYXJfSU5ERVggICAgIDkKKyNkZWZpbmUgRlRfVkFMSURBVEVfR1hfTEFTVF9JTkRFWCAgRlRfVkFMSURBVEVfbGNhcl9JTkRFWAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX1ZBTElEQVRFX0dYX0xFTkdUSAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIG51bWJlciBvZiB0YWJsZXMgY2hlY2tlZCBpbiB0aGlzIG1vZHVsZS4gIFVzZSBpdCBhcyBhIHBhcmFtZXRlcgorICAgKiAgIGZvciB0aGUgYHRhYmxlLWxlbmd0aCcgYXJndW1lbnQgb2YgZnVuY3Rpb24gQEZUX1RydWVUeXBlR1hfVmFsaWRhdGUuCisgICAqLworI2RlZmluZSBGVF9WQUxJREFURV9HWF9MRU5HVEggICAgIChGVF9WQUxJREFURV9HWF9MQVNUX0lOREVYICsgMSkKKworICAvKiAqLworCisgIC8qIFVwIHRvIDB4MTAwMCBpcyB1c2VkIGJ5IG90dmFsaWQuCisgICAgIE94Mnh4eCBpcyByZXNlcnZlZCBmb3IgZmVhdHVyZSBPVCBleHRlbnNpb24uICovCisjZGVmaW5lIEZUX1ZBTElEQVRFX0dYX1NUQVJUIDB4NDAwMAorI2RlZmluZSBGVF9WQUxJREFURV9HWF9CSVRGSUVMRCggdGFnICkgICAgICAgICAgICAgICAgICBcCisgICggRlRfVkFMSURBVEVfR1hfU1RBUlQgPDwgRlRfVkFMSURBVEVfIyN0YWcjI19JTkRFWCApCisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZW51bToKKyAgKiAgICBGVF9WQUxJREFURV9HWFhYWAorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIEEgbGlzdCBvZiBiaXQtZmllbGQgY29uc3RhbnRzIHVzZWQgd2l0aCBARlRfVHJ1ZVR5cGVHWF9WYWxpZGF0ZSB0bworICAqICAgIGluZGljYXRlIHdoaWNoIFRydWVUeXBlR1gvQUFUIFR5cGUgdGFibGVzIHNob3VsZCBiZSB2YWxpZGF0ZWQuCisgICoKKyAgKiBAdmFsdWVzOgorICAqICAgIEZUX1ZBTElEQVRFX2ZlYXQgOjoKKyAgKiAgICAgIFZhbGlkYXRlIGBmZWF0JyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX21vcnQgOjoKKyAgKiAgICAgIFZhbGlkYXRlIGBtb3J0JyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX21vcnggOjoKKyAgKiAgICAgIFZhbGlkYXRlIGBtb3J4JyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX2JzbG4gOjoKKyAgKiAgICAgIFZhbGlkYXRlIGBic2xuJyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX2p1c3QgOjoKKyAgKiAgICAgIFZhbGlkYXRlIGBqdXN0JyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX2tlcm4gOjoKKyAgKiAgICAgIFZhbGlkYXRlIGBrZXJuJyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX29wYmQgOjoKKyAgKiAgICAgIFZhbGlkYXRlIGBvcGJkJyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX3RyYWsgOjoKKyAgKiAgICAgIFZhbGlkYXRlIGB0cmFrJyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX3Byb3AgOjoKKyAgKiAgICAgIFZhbGlkYXRlIGBwcm9wJyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX2xjYXIgOjoKKyAgKiAgICAgIFZhbGlkYXRlIGBsY2FyJyB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX0dYIDo6CisgICogICAgICBWYWxpZGF0ZSBhbGwgVHJ1ZVR5cGVHWCB0YWJsZXMgKGZlYXQsIG1vcnQsIG1vcngsIGJzbG4sIGp1c3QsIGtlcm4sCisgICogICAgICBvcGJkLCB0cmFrLCBwcm9wIGFuZCBsY2FyKS4KKyAgKgorICAqLworCisjZGVmaW5lIEZUX1ZBTElEQVRFX2ZlYXQgIEZUX1ZBTElEQVRFX0dYX0JJVEZJRUxEKCBmZWF0ICkKKyNkZWZpbmUgRlRfVkFMSURBVEVfbW9ydCAgRlRfVkFMSURBVEVfR1hfQklURklFTEQoIG1vcnQgKQorI2RlZmluZSBGVF9WQUxJREFURV9tb3J4ICBGVF9WQUxJREFURV9HWF9CSVRGSUVMRCggbW9yeCApCisjZGVmaW5lIEZUX1ZBTElEQVRFX2JzbG4gIEZUX1ZBTElEQVRFX0dYX0JJVEZJRUxEKCBic2xuICkKKyNkZWZpbmUgRlRfVkFMSURBVEVfanVzdCAgRlRfVkFMSURBVEVfR1hfQklURklFTEQoIGp1c3QgKQorI2RlZmluZSBGVF9WQUxJREFURV9rZXJuICBGVF9WQUxJREFURV9HWF9CSVRGSUVMRCgga2VybiApCisjZGVmaW5lIEZUX1ZBTElEQVRFX29wYmQgIEZUX1ZBTElEQVRFX0dYX0JJVEZJRUxEKCBvcGJkICkKKyNkZWZpbmUgRlRfVkFMSURBVEVfdHJhayAgRlRfVkFMSURBVEVfR1hfQklURklFTEQoIHRyYWsgKQorI2RlZmluZSBGVF9WQUxJREFURV9wcm9wICBGVF9WQUxJREFURV9HWF9CSVRGSUVMRCggcHJvcCApCisjZGVmaW5lIEZUX1ZBTElEQVRFX2xjYXIgIEZUX1ZBTElEQVRFX0dYX0JJVEZJRUxEKCBsY2FyICkKKworI2RlZmluZSBGVF9WQUxJREFURV9HWCAgKCBGVF9WQUxJREFURV9mZWF0IHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9tb3J0IHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9tb3J4IHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9ic2xuIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9qdXN0IHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9rZXJuIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9vcGJkIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV90cmFrIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9wcm9wIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9sY2FyICkKKworCisgIC8qICovCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgIEZUX1RydWVUeXBlR1hfVmFsaWRhdGUKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBWYWxpZGF0ZSB2YXJpb3VzIFRydWVUeXBlR1ggdGFibGVzIHRvIGFzc3VyZSB0aGF0IGFsbCBvZmZzZXRzIGFuZAorICAqICAgIGluZGljZXMgYXJlIHZhbGlkLiAgVGhlIGlkZWEgaXMgdGhhdCBhIGhpZ2hlci1sZXZlbCBsaWJyYXJ5IHdoaWNoCisgICogICAgYWN0dWFsbHkgZG9lcyB0aGUgdGV4dCBsYXlvdXQgY2FuIGFjY2VzcyB0aG9zZSB0YWJsZXMgd2l0aG91dAorICAqICAgIGVycm9yIGNoZWNraW5nICh3aGljaCBjYW4gYmUgcXVpdGUgdGltZSBjb25zdW1pbmcpLgorICAqCisgICogQGlucHV0OgorICAqICAgIGZhY2UgOjoKKyAgKiAgICAgICBBIGhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4KKyAgKgorICAqICAgIHZhbGlkYXRpb25fZmxhZ3MgOjoKKyAgKiAgICAgICBBIGJpdCBmaWVsZCB3aGljaCBzcGVjaWZpZXMgdGhlIHRhYmxlcyB0byBiZSB2YWxpZGF0ZWQuICBTZWUKKyAgKiAgICAgICBARlRfVkFMSURBVEVfR1hYWFggZm9yIHBvc3NpYmxlIHZhbHVlcy4KKyAgKgorICAqICAgIHRhYmxlX2xlbmd0aCA6OgorICAqICAgICAgIFRoZSBzaXplIG9mIHRoZSBgdGFibGVzJyBhcnJheS4gIE5vcm1hbGx5LCBARlRfVkFMSURBVEVfR1hfTEVOR1RICisgICogICAgICAgc2hvdWxkIGJlIHBhc3NlZC4KKyAgKgorICAqIEBvdXRwdXQ6CisgICogICAgdGFibGVzIDo6CisgICogICAgICAgVGhlIGFycmF5IHdoZXJlIGFsbCB2YWxpZGF0ZWQgc2ZudCB0YWJsZXMgYXJlIHN0b3JlZC4KKyAgKiAgICAgICBUaGUgYXJyYXkgaXRzZWxmIG11c3QgYmUgYWxsb2NhdGVkIGJ5IGEgY2xpZW50LgorICAqCisgICogQHJldHVybjoKKyAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aXRoIFRydWVUeXBlR1ggZm9udHMsIHJldHVybmluZyBhbiBlcnJvcgorICAqICAgb3RoZXJ3aXNlLgorICAqCisgICogICBBZnRlciB1c2UsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZGVhbGxvY2F0ZSB0aGUgYnVmZmVycyBwb2ludGVkIHRvIGJ5CisgICogICBlYWNoIGB0YWJsZXMnIGVsZW1lbnQsIGJ5IGNhbGxpbmcgQEZUX1RydWVUeXBlR1hfRnJlZS4gIEEgTlVMTCB2YWx1ZQorICAqICAgaW5kaWNhdGVzIHRoYXQgdGhlIHRhYmxlIGVpdGhlciBkb2Vzbid0IGV4aXN0IGluIHRoZSBmb250LCB0aGUKKyAgKiAgIGFwcGxpY2F0aW9uIGhhc24ndCBhc2tlZCBmb3IgdmFsaWRhdGlvbiwgb3IgdGhlIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUKKyAgKiAgIHRoZSBhYmlsaXR5IHRvIHZhbGlkYXRlIHRoZSBzZm50IHRhYmxlLgorICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfVHJ1ZVR5cGVHWF9WYWxpZGF0ZSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICB2YWxpZGF0aW9uX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgdGFibGVzW0ZUX1ZBTElEQVRFX0dYX0xFTkdUSF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICB0YWJsZV9sZW5ndGggKTsKKworCisgIC8qICovCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgIEZUX1RydWVUeXBlR1hfRnJlZQorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIEZyZWUgdGhlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgVHJ1ZVR5cGVHWCB2YWxpZGF0b3IuCisgICoKKyAgKiBAaW5wdXQ6CisgICogICAgZmFjZSA6OgorICAqICAgICAgIEEgaGFuZGxlIHRvIHRoZSBpbnB1dCBmYWNlLgorICAqCisgICogICAgdGFibGUgOjoKKyAgKiAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgYnVmZmVyIGFsbG9jYXRlZCBieQorICAqICAgICAgIEBGVF9UcnVlVHlwZUdYX1ZhbGlkYXRlLgorICAqCisgICogQG5vdGU6CisgICogICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgdXNlZCB0byBmcmVlIHRoZSBidWZmZXIgYWxsb2NhdGVkIGJ5CisgICogICBARlRfVHJ1ZVR5cGVHWF9WYWxpZGF0ZSBvbmx5LgorICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9UcnVlVHlwZUdYX0ZyZWUoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICB0YWJsZSApOworCisKKyAgLyogKi8KKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZW51bToKKyAgKiAgICBGVF9WQUxJREFURV9DS0VSTlhYWAorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIEEgbGlzdCBvZiBiaXQtZmllbGQgY29uc3RhbnRzIHVzZWQgd2l0aCBARlRfQ2xhc3NpY0tlcm5fVmFsaWRhdGUKKyAgKiAgICB0byBpbmRpY2F0ZSB0aGUgY2xhc3NpYyBrZXJuIGRpYWxlY3Qgb3IgZGlhbGVjdHMuICBJZiB0aGUgc2VsZWN0ZWQKKyAgKiAgICB0eXBlIGRvZXNuJ3QgZml0LCBARlRfQ2xhc3NpY0tlcm5fVmFsaWRhdGUgcmVnYXJkcyB0aGUgdGFibGUgYXMKKyAgKiAgICBpbnZhbGlkLgorICAqCisgICogQHZhbHVlczoKKyAgKiAgICBGVF9WQUxJREFURV9NUyA6OgorICAqICAgICAgSGFuZGxlIHRoZSBga2VybicgdGFibGUgYXMgYSBjbGFzc2ljIE1pY3Jvc29mdCBrZXJuIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfQVBQTEUgOjoKKyAgKiAgICAgIEhhbmRsZSB0aGUgYGtlcm4nIHRhYmxlIGFzIGEgY2xhc3NpYyBBcHBsZSBrZXJuIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfQ0tFUk4gOjoKKyAgKiAgICAgIEhhbmRsZSB0aGUgYGtlcm4nIGFzIGVpdGhlciBjbGFzc2ljIEFwcGxlIG9yIE1pY3Jvc29mdCBrZXJuIHRhYmxlLgorICAqLworI2RlZmluZSBGVF9WQUxJREFURV9NUyAgICAgKCBGVF9WQUxJREFURV9HWF9TVEFSVCA8PCAwICkKKyNkZWZpbmUgRlRfVkFMSURBVEVfQVBQTEUgICggRlRfVkFMSURBVEVfR1hfU1RBUlQgPDwgMSApCisKKyNkZWZpbmUgRlRfVkFMSURBVEVfQ0tFUk4gICggRlRfVkFMSURBVEVfTVMgfCBGVF9WQUxJREFURV9BUFBMRSApCisKKworICAvKiAqLworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBmdW5jdGlvbjoKKyAgKiAgICBGVF9DbGFzc2ljS2Vybl9WYWxpZGF0ZQorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIFZhbGlkYXRlIGNsYXNzaWMgKDE2LWJpdCBmb3JtYXQpIGtlcm4gdGFibGUgdG8gYXNzdXJlIHRoYXQgdGhlIG9mZnNldHMKKyAgKiAgICBhbmQgaW5kaWNlcyBhcmUgdmFsaWQuICBUaGUgaWRlYSBpcyB0aGF0IGEgaGlnaGVyLWxldmVsIGxpYnJhcnkgd2hpY2gKKyAgKiAgICBhY3R1YWxseSBkb2VzIHRoZSB0ZXh0IGxheW91dCBjYW4gYWNjZXNzIHRob3NlIHRhYmxlcyB3aXRob3V0IGVycm9yCisgICogICAgY2hlY2tpbmcgKHdoaWNoIGNhbiBiZSBxdWl0ZSB0aW1lIGNvbnN1bWluZykuCisgICoKKyAgKiAgICBUaGUgYGtlcm4nIHRhYmxlIHZhbGlkYXRvciBpbiBARlRfVHJ1ZVR5cGVHWF9WYWxpZGF0ZSBkZWFscyB3aXRoIGJvdGgKKyAgKiAgICB0aGUgbmV3IDMyLWJpdCBmb3JtYXQgYW5kIHRoZSBjbGFzc2ljIDE2LWJpdCBmb3JtYXQsIHdoaWxlCisgICogICAgRlRfQ2xhc3NpY0tlcm5fVmFsaWRhdGUgb25seSBzdXBwb3J0cyB0aGUgY2xhc3NpYyAxNi1iaXQgZm9ybWF0LgorICAqCisgICogQGlucHV0OgorICAqICAgIGZhY2UgOjoKKyAgKiAgICAgICBBIGhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4KKyAgKgorICAqICAgIHZhbGlkYXRpb25fZmxhZ3MgOjoKKyAgKiAgICAgICBBIGJpdCBmaWVsZCB3aGljaCBzcGVjaWZpZXMgdGhlIGRpYWxlY3QgdG8gYmUgdmFsaWRhdGVkLiAgU2VlCisgICogICAgICAgQEZUX1ZBTElEQVRFX0NLRVJOWFhYIGZvciBwb3NzaWJsZSB2YWx1ZXMuCisgICoKKyAgKiBAb3V0cHV0OgorICAqICAgIGNrZXJuX3RhYmxlIDo6CisgICogICAgICAgQSBwb2ludGVyIHRvIHRoZSBrZXJuIHRhYmxlLgorICAqCisgICogQHJldHVybjoKKyAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIEFmdGVyIHVzZSwgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBkZWFsbG9jYXRlIHRoZSBidWZmZXJzIHBvaW50ZWQgdG8gYnkKKyAgKiAgIGBja2Vybl90YWJsZScsIGJ5IGNhbGxpbmcgQEZUX0NsYXNzaWNLZXJuX0ZyZWUuICBBIE5VTEwgdmFsdWUKKyAgKiAgIGluZGljYXRlcyB0aGF0IHRoZSB0YWJsZSBkb2Vzbid0IGV4aXN0IGluIHRoZSBmb250LgorICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfQ2xhc3NpY0tlcm5fVmFsaWRhdGUoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgdmFsaWRhdGlvbl9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAqY2tlcm5fdGFibGUgKTsKKworCisgIC8qICovCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgIEZUX0NsYXNzaWNLZXJuX0ZyZWUKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBGcmVlIHRoZSBidWZmZXIgYWxsb2NhdGVkIGJ5IGNsYXNzaWMgS2VybiB2YWxpZGF0b3IuCisgICoKKyAgKiBAaW5wdXQ6CisgICogICAgZmFjZSA6OgorICAqICAgICAgIEEgaGFuZGxlIHRvIHRoZSBpbnB1dCBmYWNlLgorICAqCisgICogICAgdGFibGUgOjoKKyAgKiAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgYnVmZmVyIHRoYXQgaXMgYWxsb2NhdGVkIGJ5CisgICogICAgICAgQEZUX0NsYXNzaWNLZXJuX1ZhbGlkYXRlLgorICAqCisgICogQG5vdGU6CisgICogICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgdXNlZCB0byBmcmVlIHRoZSBidWZmZXIgYWxsb2NhdGVkIGJ5CisgICogICBARlRfQ2xhc3NpY0tlcm5fVmFsaWRhdGUgb25seS4KKyAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfQ2xhc3NpY0tlcm5fRnJlZSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICB0YWJsZSApOworCisKKyAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRHWFZBTF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z3ppcC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRnemlwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcxNTVhNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z3ppcC5oCkBAIC0wLDAgKzEsMTAyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGd6aXAuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgR3ppcC1jb21wcmVzc2VkIHN0cmVhbSBzdXBwb3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDQsIDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVEdaSVBfSF9fCisjZGVmaW5lIF9fRlRHWklQX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnemlwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHWklQIFN0cmVhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2luZyBnemlwLWNvbXByZXNzZWQgZm9udCBmaWxlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGRlY2xhcmF0aW9uIG9mIEd6aXAtc3BlY2lmaWMgZnVuY3Rpb25zLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICBGVF9TdHJlYW1fT3Blbkd6aXAKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgIE9wZW4gYSBuZXcgc3RyZWFtIHRvIHBhcnNlIGd6aXAtY29tcHJlc3NlZCBmb250IGZpbGVzLiAgVGhpcyBpcworICAqICAgbWFpbmx5IHVzZWQgdG8gc3VwcG9ydCB0aGUgY29tcHJlc3NlZCBgKi5wY2YuZ3onIGZvbnRzIHRoYXQgY29tZQorICAqICAgd2l0aCBYRnJlZTg2LgorICAqCisgICogQGlucHV0OgorICAqICAgc3RyZWFtIDo6CisgICogICAgIFRoZSB0YXJnZXQgZW1iZWRkaW5nIHN0cmVhbS4KKyAgKgorICAqICAgc291cmNlIDo6CisgICogICAgIFRoZSBzb3VyY2Ugc3RyZWFtLgorICAqCisgICogQHJldHVybjoKKyAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoZSBzb3VyY2Ugc3RyZWFtIG11c3QgYmUgb3BlbmVkIF9iZWZvcmVfIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAgKgorICAqICAgQ2FsbGluZyB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gYEZUX1N0cmVhbV9DbG9zZScgb24gdGhlIG5ldyBzdHJlYW0gd2lsbAorICAqICAgKm5vdCogY2FsbCBgRlRfU3RyZWFtX0Nsb3NlJyBvbiB0aGUgc291cmNlIHN0cmVhbS4gIE5vbmUgb2YgdGhlIHN0cmVhbQorICAqICAgb2JqZWN0cyB3aWxsIGJlIHJlbGVhc2VkIHRvIHRoZSBoZWFwLgorICAqCisgICogICBUaGUgc3RyZWFtIGltcGxlbWVudGF0aW9uIGlzIHZlcnkgYmFzaWMgYW5kIHJlc2V0cyB0aGUgZGVjb21wcmVzc2lvbgorICAqICAgcHJvY2VzcyBlYWNoIHRpbWUgc2Vla2luZyBiYWNrd2FyZHMgaXMgbmVlZGVkIHdpdGhpbiB0aGUgc3RyZWFtLgorICAqCisgICogICBJbiBjZXJ0YWluIGJ1aWxkcyBvZiB0aGUgbGlicmFyeSwgZ3ppcCBjb21wcmVzc2lvbiByZWNvZ25pdGlvbiBpcworICAqICAgYXV0b21hdGljYWxseSBoYW5kbGVkIHdoZW4gY2FsbGluZyBARlRfTmV3X0ZhY2Ugb3IgQEZUX09wZW5fRmFjZS4KKyAgKiAgIFRoaXMgbWVhbnMgdGhhdCBpZiBubyBmb250IGRyaXZlciBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIHRoZSByYXcKKyAgKiAgIGNvbXByZXNzZWQgZmlsZSwgdGhlIGxpYnJhcnkgd2lsbCB0cnkgdG8gb3BlbiBhIGd6aXBwZWQgc3RyZWFtIGZyb20KKyAgKiAgIGl0IGFuZCByZS1vcGVuIHRoZSBmYWNlIHdpdGggaXQuCisgICoKKyAgKiAgIFRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBgRlRfRXJyX1VuaW1wbGVtZW50ZWRfRmVhdHVyZScgaWYgeW91ciBidWlsZAorICAqICAgb2YgRnJlZVR5cGUgd2FzIG5vdCBjb21waWxlZCB3aXRoIHpsaWIgc3VwcG9ydC4KKyAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9PcGVuR3ppcCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzb3VyY2UgKTsKKworIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVEdaSVBfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAxY2IzOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaApAQCAtMCwwICsxLDEzMjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0aW1hZ2UuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBnbHlwaCBpbWFnZSBmb3JtYXRzIGFuZCBkZWZhdWx0IHJhc3RlciBpbnRlcmZhY2UgICAgICAgICAgICAqLworLyogICAgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAxMCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTm90ZTogQSBgcmFzdGVyJyBpcyBzaW1wbHkgYSBzY2FuLWxpbmUgY29udmVydGVyLCB1c2VkIHRvIHJlbmRlciAgICAgICovCisgIC8qICAgICAgIEZUX091dGxpbmVzIGludG8gRlRfQml0bWFwcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUSU1BR0VfSF9fCisjZGVmaW5lIF9fRlRJTUFHRV9IX18KKworCisgIC8qIF9TVEFOREFMT05FXyBpcyBmcm9tIGZ0Z3JheXMuYyAqLworI2lmbmRlZiBfU1RBTkRBTE9ORV8KKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiYXNpY190eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUG9zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHR5cGUgRlRfUG9zIGlzIHVzZWQgdG8gc3RvcmUgdmVjdG9yaWFsIGNvb3JkaW5hdGVzLiAgRGVwZW5kaW5nICovCisgIC8qICAgIG9uIHRoZSBjb250ZXh0LCB0aGVzZSBjYW4gcmVwcmVzZW50IGRpc3RhbmNlcyBpbiBpbnRlZ2VyIGZvbnQgICAgICAqLworICAvKiAgICB1bml0cywgb3IgMTYuMTYsIG9yIDI2LjYgZml4ZWQtcG9pbnQgcGl4ZWwgY29vcmRpbmF0ZXMuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIGxvbmcgIEZUX1BvczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1ZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2ltcGxlIHN0cnVjdHVyZSB1c2VkIHRvIHN0b3JlIGEgMkQgdmVjdG9yOyBjb29yZGluYXRlcyBhcmUgb2YgICAqLworICAvKiAgICB0aGUgRlRfUG9zIHR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4IDo6IFRoZSBob3Jpem9udGFsIGNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeSA6OiBUaGUgdmVydGljYWwgY29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfVmVjdG9yXworICB7CisgICAgRlRfUG9zICB4OworICAgIEZUX1BvcyAgeTsKKworICB9IEZUX1ZlY3RvcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0JCb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gaG9sZCBhbiBvdXRsaW5lJ3MgYm91bmRpbmcgYm94LCBpLmUuLCB0aGUgICAgICAqLworICAvKiAgICBjb29yZGluYXRlcyBvZiBpdHMgZXh0cmVtYSBpbiB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgICAgICAgICAgKi8KKyAgLyogICAgZGlyZWN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeE1pbiA6OiBUaGUgaG9yaXpvbnRhbCBtaW5pbXVtIChsZWZ0LW1vc3QpLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5TWluIDo6IFRoZSB2ZXJ0aWNhbCBtaW5pbXVtIChib3R0b20tbW9zdCkuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHhNYXggOjogVGhlIGhvcml6b250YWwgbWF4aW11bSAocmlnaHQtbW9zdCkuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeU1heCA6OiBUaGUgdmVydGljYWwgbWF4aW11bSAodG9wLW1vc3QpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGJvdW5kaW5nIGJveCBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGxvd2VyICAgICovCisgIC8qICAgIGxlZnQgYW5kIHRoZSB1cHBlciByaWdodCBjb3JuZXIuICBJbiBQb3N0U2NyaXB0LCB0aG9zZSB2YWx1ZXMgYXJlICAqLworICAvKiAgICBvZnRlbiBjYWxsZWQgKGxseCxsbHkpIGFuZCAodXJ4LHVyeSksIHJlc3BlY3RpdmVseS4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIGB5TWluJyBpcyBuZWdhdGl2ZSwgdGhpcyB2YWx1ZSBnaXZlcyB0aGUgZ2x5cGgncyBkZXNjZW5kZXIuICAgICAqLworICAvKiAgICBPdGhlcndpc2UsIHRoZSBnbHlwaCBkb2Vzbid0IGRlc2NlbmQgYmVsb3cgdGhlIGJhc2VsaW5lLiAgICAgICAgICAgKi8KKyAgLyogICAgU2ltaWxhcmx5LCBpZiBgeW1heCcgaXMgcG9zaXRpdmUsIHRoaXMgdmFsdWUgZ2l2ZXMgdGhlIGdseXBoJ3MgICAgICovCisgIC8qICAgIGFzY2VuZGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYHhNaW4nIGdpdmVzIHRoZSBob3Jpem9udGFsIGRpc3RhbmNlIGZyb20gdGhlIGdseXBoJ3Mgb3JpZ2luIHRvICAgICovCisgIC8qICAgIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGdseXBoJ3MgYm91bmRpbmcgYm94LiAgSWYgYHhNaW4nIGlzIG5lZ2F0aXZlLCAqLworICAvKiAgICB0aGUgZ2x5cGggZXh0ZW5kcyB0byB0aGUgbGVmdCBvZiB0aGUgb3JpZ2luLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9CQm94XworICB7CisgICAgRlRfUG9zICB4TWluLCB5TWluOworICAgIEZUX1BvcyAgeE1heCwgeU1heDsKKworICB9IEZUX0JCb3g7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9QaXhlbF9Nb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBlbnVtZXJhdGlvbiB0eXBlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGZvcm1hdCBvZiBwaXhlbHMgaW4gYSAgICAgKi8KKyAgLyogICAgZ2l2ZW4gYml0bWFwLiAgTm90ZSB0aGF0IGFkZGl0aW9uYWwgZm9ybWF0cyBtYXkgYmUgYWRkZWQgaW4gdGhlICAgICovCisgIC8qICAgIGZ1dHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BJWEVMX01PREVfTk9ORSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFZhbHVlfjAgaXMgcmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BJWEVMX01PREVfTU9OTyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEEgbW9ub2Nocm9tZSBiaXRtYXAsIHVzaW5nIDF+Yml0IHBlciBwaXhlbC4gIE5vdGUgdGhhdCBwaXhlbHMgICAgKi8KKyAgLyogICAgICBhcmUgc3RvcmVkIGluIG1vc3Qtc2lnbmlmaWNhbnQgb3JkZXIgKE1TQiksIHdoaWNoIG1lYW5zIHRoYXQgICAgICovCisgIC8qICAgICAgdGhlIGxlZnQtbW9zdCBwaXhlbCBpbiBhIGJ5dGUgaGFzIHZhbHVlIDEyOC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUElYRUxfTU9ERV9HUkFZIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQW4gOC1iaXQgYml0bWFwLCBnZW5lcmFsbHkgdXNlZCB0byByZXByZXNlbnQgYW50aS1hbGlhc2VkIGdseXBoICAqLworICAvKiAgICAgIGltYWdlcy4gIEVhY2ggcGl4ZWwgaXMgc3RvcmVkIGluIG9uZSBieXRlLiAgTm90ZSB0aGF0IHRoZSBudW1iZXIgKi8KKyAgLyogICAgICBvZiBgZ3JheScgbGV2ZWxzIGlzIHN0b3JlZCBpbiB0aGUgYG51bV9ncmF5cycgZmllbGQgb2YgdGhlICAgICAgICovCisgIC8qICAgICAgQEZUX0JpdG1hcCBzdHJ1Y3R1cmUgKGl0IGdlbmVyYWxseSBpcyAyNTYpLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUElYRUxfTU9ERV9HUkFZMiA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSAyLWJpdCBwZXIgcGl4ZWwgYml0bWFwLCB1c2VkIHRvIHJlcHJlc2VudCBlbWJlZGRlZCAgICAgICAgICAgICAqLworICAvKiAgICAgIGFudGktYWxpYXNlZCBiaXRtYXBzIGluIGZvbnQgZmlsZXMgYWNjb3JkaW5nIHRvIHRoZSBPcGVuVHlwZSAgICAgKi8KKyAgLyogICAgICBzcGVjaWZpY2F0aW9uLiAgV2UgaGF2ZW4ndCBmb3VuZCBhIHNpbmdsZSBmb250IHVzaW5nIHRoaXMgICAgICAgICovCisgIC8qICAgICAgZm9ybWF0LCBob3dldmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUElYRUxfTU9ERV9HUkFZNCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSA0LWJpdCBwZXIgcGl4ZWwgYml0bWFwLCByZXByZXNlbnRpbmcgZW1iZWRkZWQgYW50aS1hbGlhc2VkICAgICAqLworICAvKiAgICAgIGJpdG1hcHMgaW4gZm9udCBmaWxlcyBhY2NvcmRpbmcgdG8gdGhlIE9wZW5UeXBlIHNwZWNpZmljYXRpb24uICAgKi8KKyAgLyogICAgICBXZSBoYXZlbid0IGZvdW5kIGEgc2luZ2xlIGZvbnQgdXNpbmcgdGhpcyBmb3JtYXQsIGhvd2V2ZXIuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9QSVhFTF9NT0RFX0xDRCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBbiA4LWJpdCBiaXRtYXAsIHJlcHJlc2VudGluZyBSR0Igb3IgQkdSIGRlY2ltYXRlZCBnbHlwaCBpbWFnZXMgICovCisgIC8qICAgICAgdXNlZCBmb3IgZGlzcGxheSBvbiBMQ0QgZGlzcGxheXM7IHRoZSBiaXRtYXAgaXMgdGhyZWUgdGltZXMgICAgICAqLworICAvKiAgICAgIHdpZGVyIHRoYW4gdGhlIG9yaWdpbmFsIGdseXBoIGltYWdlLiAgU2VlIGFsc28gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBARlRfUkVOREVSX01PREVfTENELiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9QSVhFTF9NT0RFX0xDRF9WIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBbiA4LWJpdCBiaXRtYXAsIHJlcHJlc2VudGluZyBSR0Igb3IgQkdSIGRlY2ltYXRlZCBnbHlwaCBpbWFnZXMgICovCisgIC8qICAgICAgdXNlZCBmb3IgZGlzcGxheSBvbiByb3RhdGVkIExDRCBkaXNwbGF5czsgdGhlIGJpdG1hcCBpcyB0aHJlZSAgICAqLworICAvKiAgICAgIHRpbWVzIHRhbGxlciB0aGFuIHRoZSBvcmlnaW5hbCBnbHlwaCBpbWFnZS4gIFNlZSBhbHNvICAgICAgICAgICAgKi8KKyAgLyogICAgICBARlRfUkVOREVSX01PREVfTENEX1YuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9QSVhFTF9NT0RFX0JHUkEgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBbiBpbWFnZSB3aXRoIGZvdXIgOC1iaXQgY2hhbm5lbHMgcGVyIHBpeGVsLCByZXByZXNlbnRpbmcgYSAgICAgICovCisgIC8qICAgICAgY29sb3IgaW1hZ2UgKHN1Y2ggYXMgZW1vdGljb25zKSB3aXRoIGFscGhhIGNoYW5uZWwuICBGb3IgZWFjaCAgICAqLworICAvKiAgICAgIHBpeGVsLCB0aGUgZm9ybWF0IGlzIEJHUkEsIHdoaWNoIG1lYW5zLCB0aGUgYmx1ZSBjaGFubmVsIGNvbWVzICAgKi8KKyAgLyogICAgICBmaXJzdCBpbiBtZW1vcnkuICBUaGUgY29sb3IgY2hhbm5lbHMgYXJlIHByZS1tdWx0aXBsaWVkIGFuZCBpbiAgICovCisgIC8qICAgICAgdGhlIHNSR0IgY29sb3JzcGFjZS4gIEZvciBleGFtcGxlLCBmdWxsIHJlZCBhdCBoYWxmLXRyYW5zbHVjZW50ICAqLworICAvKiAgICAgIG9wYWNpdHkgd2lsbCBiZSByZXByZXNlbnRlZCBhcyBgMDAsMDAsODAsODAnLCBub3QgYDAwLDAwLEZGLDgwJy4gKi8KKyAgLyogICAgICBTZWUgYWxzbyBARlRfTE9BRF9DT0xPUi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIEZUX1BpeGVsX01vZGVfCisgIHsKKyAgICBGVF9QSVhFTF9NT0RFX05PTkUgPSAwLAorICAgIEZUX1BJWEVMX01PREVfTU9OTywKKyAgICBGVF9QSVhFTF9NT0RFX0dSQVksCisgICAgRlRfUElYRUxfTU9ERV9HUkFZMiwKKyAgICBGVF9QSVhFTF9NT0RFX0dSQVk0LAorICAgIEZUX1BJWEVMX01PREVfTENELAorICAgIEZUX1BJWEVMX01PREVfTENEX1YsCisgICAgRlRfUElYRUxfTU9ERV9CR1JBLAorCisgICAgRlRfUElYRUxfTU9ERV9NQVggICAgICAvKiBkbyBub3QgcmVtb3ZlICovCisKKyAgfSBGVF9QaXhlbF9Nb2RlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfcGl4ZWxfbW9kZV94eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBsaXN0IG9mIGRlcHJlY2F0ZWQgY29uc3RhbnRzLiAgVXNlIHRoZSBjb3JyZXNwb25kaW5nICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9QaXhlbF9Nb2RlIHZhbHVlcyBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X3BpeGVsX21vZGVfbm9uZSAgOjogU2VlIEBGVF9QSVhFTF9NT0RFX05PTkUuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9waXhlbF9tb2RlX21vbm8gIDo6IFNlZSBARlRfUElYRUxfTU9ERV9NT05PLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfcGl4ZWxfbW9kZV9ncmF5cyA6OiBTZWUgQEZUX1BJWEVMX01PREVfR1JBWS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X3BpeGVsX21vZGVfcGFsMiAgOjogU2VlIEBGVF9QSVhFTF9NT0RFX0dSQVkyLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9waXhlbF9tb2RlX3BhbDQgIDo6IFNlZSBARlRfUElYRUxfTU9ERV9HUkFZNC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIGZ0X3BpeGVsX21vZGVfbm9uZSAgIEZUX1BJWEVMX01PREVfTk9ORQorI2RlZmluZSBmdF9waXhlbF9tb2RlX21vbm8gICBGVF9QSVhFTF9NT0RFX01PTk8KKyNkZWZpbmUgZnRfcGl4ZWxfbW9kZV9ncmF5cyAgRlRfUElYRUxfTU9ERV9HUkFZCisjZGVmaW5lIGZ0X3BpeGVsX21vZGVfcGFsMiAgIEZUX1BJWEVMX01PREVfR1JBWTIKKyNkZWZpbmUgZnRfcGl4ZWxfbW9kZV9wYWw0ICAgRlRfUElYRUxfTU9ERV9HUkFZNAorCisgLyogKi8KKworI2lmIDAKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9QYWxldHRlX01vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUSElTIFRZUEUgSVMgREVQUkVDQVRFRC4gIERPIE5PVCBVU0UgSVQhICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIGVudW1lcmF0aW9uIHR5cGUgdG8gZGVzY3JpYmUgdGhlIGZvcm1hdCBvZiBhIGJpdG1hcCBwYWxldHRlLCAgICAqLworICAvKiAgICB1c2VkIHdpdGggZnRfcGl4ZWxfbW9kZV9wYWw0IGFuZCBmdF9waXhlbF9tb2RlX3BhbDguICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9wYWxldHRlX21vZGVfcmdiICA6OiBUaGUgcGFsZXR0ZSBpcyBhbiBhcnJheSBvZiAzLWJ5dGUgUkdCICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3Jkcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9wYWxldHRlX21vZGVfcmdiYSA6OiBUaGUgcGFsZXR0ZSBpcyBhbiBhcnJheSBvZiA0LWJ5dGUgUkdCQSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3Jkcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQXMgZnRfcGl4ZWxfbW9kZV9wYWwyLCBwYWw0IGFuZCBwYWw4IGFyZSBjdXJyZW50bHkgdW51c2VkIGJ5ICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlLCB0aGVzZSB0eXBlcyBhcmUgbm90IGhhbmRsZWQgYnkgdGhlIGxpYnJhcnkgaXRzZWxmLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBlbnVtICBGVF9QYWxldHRlX01vZGVfCisgIHsKKyAgICBmdF9wYWxldHRlX21vZGVfcmdiID0gMCwKKyAgICBmdF9wYWxldHRlX21vZGVfcmdiYSwKKworICAgIGZ0X3BhbGV0dGVfbW9kZV9tYXggICAvKiBkbyBub3QgcmVtb3ZlICovCisKKyAgfSBGVF9QYWxldHRlX01vZGU7CisKKyAgLyogKi8KKworI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIGEgYml0bWFwIG9yIHBpeG1hcCB0byB0aGUgcmFzdGVyLiAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IHdlIG5vdyBtYW5hZ2UgcGl4bWFwcyBvZiB2YXJpb3VzIGRlcHRocyB0aHJvdWdoIHRoZSAgICAgICovCisgIC8qICAgIGBwaXhlbF9tb2RlJyBmaWVsZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJvd3MgICAgICAgICA6OiBUaGUgbnVtYmVyIG9mIGJpdG1hcCByb3dzLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgd2lkdGggICAgICAgIDo6IFRoZSBudW1iZXIgb2YgcGl4ZWxzIGluIGJpdG1hcCByb3cuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwaXRjaCAgICAgICAgOjogVGhlIHBpdGNoJ3MgYWJzb2x1dGUgdmFsdWUgaXMgdGhlIG51bWJlciBvZiBieXRlcyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHRha2VuIGJ5IG9uZSBiaXRtYXAgcm93LCBpbmNsdWRpbmcgcGFkZGluZy4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgcGl0Y2ggaXMgcG9zaXRpdmUgd2hlbiB0aGUgYml0bWFwIGhhcyAqLworICAvKiAgICAgICAgICAgICAgICAgICAgYSBgZG93bicgZmxvdywgYW5kIG5lZ2F0aXZlIHdoZW4gaXQgaGFzIGFuIGB1cCcgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGZsb3cuICBJbiBhbGwgY2FzZXMsIHRoZSBwaXRjaCBpcyBhbiBvZmZzZXQgdG8gYWRkICovCisgIC8qICAgICAgICAgICAgICAgICAgICB0byBhIGJpdG1hcCBwb2ludGVyIGluIG9yZGVyIHRvIGdvIGRvd24gb25lIHJvdy4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBgcGFkZGluZycgbWVhbnMgdGhlIGFsaWdubWVudCBvZiBhICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBiaXRtYXAgdG8gYSBieXRlIGJvcmRlciwgYW5kIEZyZWVUeXBlIGZ1bmN0aW9ucyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgbm9ybWFsbHkgYWxpZ24gdG8gdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGludGVnZXIgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBCL1cgcmFzdGVyaXplciwgYHBpdGNoJyBpcyBhbHdheXMgYW4gZXZlbiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgVG8gY2hhbmdlIHRoZSBwaXRjaCBvZiBhIGJpdG1hcCAoc2F5LCB0byBtYWtlIGl0IGEgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIG9mIDQpLCB1c2UgQEZUX0JpdG1hcF9Db252ZXJ0LiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgbWlnaHQgdXNlIGNhbGxiYWNrIGZ1bmN0aW9ucyB0byAqLworICAvKiAgICAgICAgICAgICAgICAgICAgZGlyZWN0bHkgcmVuZGVyIHRvIHRoZSBhcHBsaWNhdGlvbidzIHN1cmZhY2U7IHNlZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlIGBleGFtcGxlMi5jcHAnIGluIHRoZSB0dXRvcmlhbCBmb3IgYSAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBkZW1vbnN0cmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYnVmZmVyICAgICAgIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgYml0bWFwIGJ1ZmZlci4gIFRoaXMgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICB2YWx1ZSBzaG91bGQgYmUgYWxpZ25lZCBvbiAzMi1iaXQgYm91bmRhcmllcyBpbiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgbW9zdCBjYXNlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9ncmF5cyAgICA6OiBUaGlzIGZpZWxkIGlzIG9ubHkgdXNlZCB3aXRoICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgQEZUX1BJWEVMX01PREVfR1JBWTsgaXQgZ2l2ZXMgdGhlIG51bWJlciBvZiBncmF5ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGxldmVscyB1c2VkIGluIHRoZSBiaXRtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwaXhlbF9tb2RlICAgOjogVGhlIHBpeGVsIG1vZGUsIGkuZS4sIGhvdyBwaXhlbCBiaXRzIGFyZSBzdG9yZWQuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIFNlZSBARlRfUGl4ZWxfTW9kZSBmb3IgcG9zc2libGUgdmFsdWVzLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYWxldHRlX21vZGUgOjogVGhpcyBmaWVsZCBpcyBpbnRlbmRlZCBmb3IgcGFsZXR0ZWQgcGl4ZWwgbW9kZXM7ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGl0IGluZGljYXRlcyBob3cgdGhlIHBhbGV0dGUgaXMgc3RvcmVkLiAgTm90ICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICB1c2VkIGN1cnJlbnRseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGFsZXR0ZSAgICAgIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgYml0bWFwIHBhbGV0dGU7IHRoaXMgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBmaWVsZCBpcyBpbnRlbmRlZCBmb3IgcGFsZXR0ZWQgcGl4ZWwgbW9kZXMuICBOb3QgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgdXNlZCBjdXJyZW50bHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZvciBub3csIHRoZSBvbmx5IHBpeGVsIG1vZGVzIHN1cHBvcnRlZCBieSBGcmVlVHlwZSBhcmUgbW9ubyBhbmQgICAgKi8KKyAgLyogICBncmF5cy4gIEhvd2V2ZXIsIGRyaXZlcnMgbWlnaHQgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZSB0byBzdXBwb3J0ICAgICovCisgIC8qICAgbW9yZSBgY29sb3JmdWwnIG9wdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0JpdG1hcF8KKyAgeworICAgIGludCAgICAgICAgICAgICByb3dzOworICAgIGludCAgICAgICAgICAgICB3aWR0aDsKKyAgICBpbnQgICAgICAgICAgICAgcGl0Y2g7CisgICAgdW5zaWduZWQgY2hhciogIGJ1ZmZlcjsKKyAgICBzaG9ydCAgICAgICAgICAgbnVtX2dyYXlzOworICAgIGNoYXIgICAgICAgICAgICBwaXhlbF9tb2RlOworICAgIGNoYXIgICAgICAgICAgICBwYWxldHRlX21vZGU7CisgICAgdm9pZCogICAgICAgICAgIHBhbGV0dGU7CisKKyAgfSBGVF9CaXRtYXA7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lX3Byb2Nlc3NpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBkZXNjcmliZSBhbiBvdXRsaW5lIHRvIHRoZSBzY2FuLWxpbmUgICAgICovCisgIC8qICAgIGNvbnZlcnRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5fY29udG91cnMgOjogVGhlIG51bWJlciBvZiBjb250b3VycyBpbiB0aGUgb3V0bGluZS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbl9wb2ludHMgICA6OiBUaGUgbnVtYmVyIG9mIHBvaW50cyBpbiB0aGUgb3V0bGluZS4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb2ludHMgICAgIDo6IEEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBgbl9wb2ludHMnIEBGVF9WZWN0b3IgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBlbGVtZW50cywgZ2l2aW5nIHRoZSBvdXRsaW5lJ3MgcG9pbnQgY29vcmRpbmF0ZXMuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWdzICAgICAgIDo6IEEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBgbl9wb2ludHMnIGNoYXJzLCBnaXZpbmcgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBlYWNoIG91dGxpbmUgcG9pbnQncyB0eXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIElmIGJpdH4wIGlzIHVuc2V0LCB0aGUgcG9pbnQgaXMgYG9mZicgdGhlIGN1cnZlLCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBpLmUuLCBhIELDqXppZXIgY29udHJvbCBwb2ludCwgd2hpbGUgaXQgaXMgYG9uJyBpZiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIHNldC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgQml0fjEgaXMgbWVhbmluZ2Z1bCBmb3IgYG9mZicgcG9pbnRzIG9ubHkuICBJZiBzZXQsICAqLworICAvKiAgICAgICAgICAgICAgICAgIGl0IGluZGljYXRlcyBhIHRoaXJkLW9yZGVyIELDqXppZXIgYXJjIGNvbnRyb2wgcG9pbnQ7ICovCisgIC8qICAgICAgICAgICAgICAgICAgYW5kIGEgc2Vjb25kLW9yZGVyIGNvbnRyb2wgcG9pbnQgaWYgdW5zZXQuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBJZiBiaXR+MiBpcyBzZXQsIGJpdHMgNS03IGNvbnRhaW4gdGhlIGRyb3Atb3V0IG1vZGUgICovCisgIC8qICAgICAgICAgICAgICAgICAgKGFzIGRlZmluZWQgaW4gdGhlIE9wZW5UeXBlIHNwZWNpZmljYXRpb247IHRoZSB2YWx1ZSAqLworICAvKiAgICAgICAgICAgICAgICAgIGlzIHRoZSBzYW1lIGFzIHRoZSBhcmd1bWVudCB0byB0aGUgU0NBTk1PREUgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIEJpdHMgMyBhbmR+NCBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHB1cnBvc2VzLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbnRvdXJzICAgOjogQW4gYXJyYXkgb2YgYG5fY29udG91cnMnIHNob3J0cywgZ2l2aW5nIHRoZSBlbmQgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIHBvaW50IG9mIGVhY2ggY29udG91ciB3aXRoaW4gdGhlIG91dGxpbmUuICBGb3IgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBleGFtcGxlLCB0aGUgZmlyc3QgY29udG91ciBpcyBkZWZpbmVkIGJ5IHRoZSBwb2ludHMgICovCisgIC8qICAgICAgICAgICAgICAgICAgYDAnIHRvIGBjb250b3Vyc1swXScsIHRoZSBzZWNvbmQgb25lIGlzIGRlZmluZWQgYnkgICAqLworICAvKiAgICAgICAgICAgICAgICAgIHRoZSBwb2ludHMgYGNvbnRvdXJzWzBdKzEnIHRvIGBjb250b3Vyc1sxXScsIGV0Yy4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZsYWdzICAgICAgOjogQSBzZXQgb2YgYml0IGZsYWdzIHVzZWQgdG8gY2hhcmFjdGVyaXplIHRoZSBvdXRsaW5lICAqLworICAvKiAgICAgICAgICAgICAgICAgIGFuZCBnaXZlIGhpbnRzIHRvIHRoZSBzY2FuLWNvbnZlcnRlciBhbmQgaGludGVyIG9uICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBob3cgdG8gY29udmVydC9ncmlkLWZpdCBpdC4gIFNlZSBARlRfT1VUTElORV9GTEFHUy4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIEIvVyByYXN0ZXJpemVyIG9ubHkgY2hlY2tzIGJpdH4yIGluIHRoZSBgdGFncycgYXJyYXkgZm9yIHRoZSAgICovCisgIC8qICAgIGZpcnN0IHBvaW50IG9mIGVhY2ggY29udG91ci4gIFRoZSBkcm9wLW91dCBtb2RlIGFzIGdpdmVuIHdpdGggICAgICAqLworICAvKiAgICBARlRfT1VUTElORV9JR05PUkVfRFJPUE9VVFMsIEBGVF9PVVRMSU5FX1NNQVJUX0RST1BPVVRTLCBhbmQgICAgICAgKi8KKyAgLyogICAgQEZUX09VVExJTkVfSU5DTFVERV9TVFVCUyBpbiBgZmxhZ3MnIGlzIHRoZW4gb3ZlcnJpZGRlbi4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfT3V0bGluZV8KKyAgeworICAgIHNob3J0ICAgICAgIG5fY29udG91cnM7ICAgICAgLyogbnVtYmVyIG9mIGNvbnRvdXJzIGluIGdseXBoICAgICAgICAqLworICAgIHNob3J0ICAgICAgIG5fcG9pbnRzOyAgICAgICAgLyogbnVtYmVyIG9mIHBvaW50cyBpbiB0aGUgZ2x5cGggICAgICAqLworCisgICAgRlRfVmVjdG9yKiAgcG9pbnRzOyAgICAgICAgICAvKiB0aGUgb3V0bGluZSdzIHBvaW50cyAgICAgICAgICAgICAgICovCisgICAgY2hhciogICAgICAgdGFnczsgICAgICAgICAgICAvKiB0aGUgcG9pbnRzIGZsYWdzICAgICAgICAgICAgICAgICAgICovCisgICAgc2hvcnQqICAgICAgY29udG91cnM7ICAgICAgICAvKiB0aGUgY29udG91ciBlbmQgcG9pbnRzICAgICAgICAgICAgICovCisKKyAgICBpbnQgICAgICAgICBmbGFnczsgICAgICAgICAgIC8qIG91dGxpbmUgbWFza3MgICAgICAgICAgICAgICAgICAgICAgKi8KKworICB9IEZUX091dGxpbmU7CisKKyAgLyogRm9sbG93aW5nIGxpbWl0cyBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCAqLworICAvKiBGVF9PdXRsaW5lLntuX2NvbnRvdXJzLG5fcG9pbnRzfSAgICAgICAgICovCisjZGVmaW5lIEZUX09VVExJTkVfQ09OVE9VUlNfTUFYICBTSFJUX01BWAorI2RlZmluZSBGVF9PVVRMSU5FX1BPSU5UU19NQVggICAgU0hSVF9NQVgKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09VVExJTkVfRkxBR1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgbGlzdCBvZiBiaXQtZmllbGQgY29uc3RhbnRzIHVzZSBmb3IgdGhlIGZsYWdzIGluIGFuIG91dGxpbmUncyAgICAqLworICAvKiAgICBgZmxhZ3MnIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PVVRMSU5FX05PTkUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBWYWx1ZX4wIGlzIHJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PVVRMSU5FX09XTkVSIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBJZiBzZXQsIHRoaXMgZmxhZyBpbmRpY2F0ZXMgdGhhdCB0aGUgb3V0bGluZSdzIGZpZWxkIGFycmF5cyAgICAgICovCisgIC8qICAgICAgKGkuZS4sIGBwb2ludHMnLCBgZmxhZ3MnLCBhbmQgYGNvbnRvdXJzJykgYXJlIGBvd25lZCcgYnkgdGhlICAgICAqLworICAvKiAgICAgIG91dGxpbmUgb2JqZWN0LCBhbmQgc2hvdWxkIHRodXMgYmUgZnJlZWQgd2hlbiBpdCBpcyBkZXN0cm95ZWQuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09VVExJTkVfRVZFTl9PRERfRklMTCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEJ5IGRlZmF1bHQsIG91dGxpbmVzIGFyZSBmaWxsZWQgdXNpbmcgdGhlIG5vbi16ZXJvIHdpbmRpbmcgcnVsZS4gKi8KKyAgLyogICAgICBJZiBzZXQgdG8gMSwgdGhlIG91dGxpbmUgd2lsbCBiZSBmaWxsZWQgdXNpbmcgdGhlIGV2ZW4tb2RkIGZpbGwgICovCisgIC8qICAgICAgcnVsZSAob25seSB3b3JrcyB3aXRoIHRoZSBzbW9vdGggcmFzdGVyaXplcikuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1VUTElORV9SRVZFUlNFX0ZJTEwgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQnkgZGVmYXVsdCwgb3V0c2lkZSBjb250b3VycyBvZiBhbiBvdXRsaW5lIGFyZSBvcmllbnRlZCBpbiAgICAgICAqLworICAvKiAgICAgIGNsb2NrLXdpc2UgZGlyZWN0aW9uLCBhcyBkZWZpbmVkIGluIHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uLiAgKi8KKyAgLyogICAgICBUaGlzIGZsYWcgaXMgc2V0IGlmIHRoZSBvdXRsaW5lIHVzZXMgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiAgICAgICovCisgIC8qICAgICAgKHR5cGljYWxseSBmb3IgVHlwZX4xIGZvbnRzKS4gIFRoaXMgZmxhZyBpcyBpZ25vcmVkIGJ5IHRoZSBzY2FuICAqLworICAvKiAgICAgIGNvbnZlcnRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09VVExJTkVfSUdOT1JFX0RST1BPVVRTIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEJ5IGRlZmF1bHQsIHRoZSBzY2FuIGNvbnZlcnRlciB3aWxsIHRyeSB0byBkZXRlY3QgZHJvcC1vdXRzIGluICAgKi8KKyAgLyogICAgICBhbiBvdXRsaW5lIGFuZCBjb3JyZWN0IHRoZSBnbHlwaCBiaXRtYXAgdG8gZW5zdXJlIGNvbnNpc3RlbnQgICAgICovCisgIC8qICAgICAgc2hhcGUgY29udGludWl0eS4gIElmIHNldCwgdGhpcyBmbGFnIGhpbnRzIHRoZSBzY2FuLWxpbmUgICAgICAgICAqLworICAvKiAgICAgIGNvbnZlcnRlciB0byBpZ25vcmUgc3VjaCBjYXNlcy4gIFNlZSBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09VVExJTkVfU01BUlRfRFJPUE9VVFMgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFNlbGVjdCBzbWFydCBkcm9wb3V0IGNvbnRyb2wuICBJZiB1bnNldCwgdXNlIHNpbXBsZSBkcm9wb3V0ICAgICAgKi8KKyAgLyogICAgICBjb250cm9sLiAgSWdub3JlZCBpZiBARlRfT1VUTElORV9JR05PUkVfRFJPUE9VVFMgaXMgc2V0LiAgU2VlICAgICovCisgIC8qICAgICAgYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1VUTElORV9JTkNMVURFX1NUVUJTIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgSWYgc2V0LCB0dXJuIHBpeGVscyBvbiBmb3IgYHN0dWJzJywgb3RoZXJ3aXNlIGV4Y2x1ZGUgdGhlbS4gICAgICAqLworICAvKiAgICAgIElnbm9yZWQgaWYgQEZUX09VVExJTkVfSUdOT1JFX0RST1BPVVRTIGlzIHNldC4gIFNlZSBiZWxvdyBmb3IgICAgKi8KKyAgLyogICAgICBtb3JlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PVVRMSU5FX0hJR0hfUFJFQ0lTSU9OIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoYXQgdGhlIHNjYW4tbGluZSBjb252ZXJ0ZXIgc2hvdWxkIHRyeSB0byAgICovCisgIC8qICAgICAgY29udmVydCB0aGlzIG91dGxpbmUgdG8gYml0bWFwcyB3aXRoIHRoZSBoaWdoZXN0IHBvc3NpYmxlICAgICAgICAqLworICAvKiAgICAgIHF1YWxpdHkuICBJdCBpcyB0eXBpY2FsbHkgc2V0IGZvciBzbWFsbCBjaGFyYWN0ZXIgc2l6ZXMuICBOb3RlICAgKi8KKyAgLyogICAgICB0aGF0IHRoaXMgaXMgb25seSBhIGhpbnQgdGhhdCBtaWdodCBiZSBjb21wbGV0ZWx5IGlnbm9yZWQgYnkgYSAgICovCisgIC8qICAgICAgZ2l2ZW4gc2Nhbi1jb252ZXJ0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT1VUTElORV9TSU5HTEVfUEFTUyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhpcyBmbGFnIGlzIHNldCB0byBmb3JjZSBhIGdpdmVuIHNjYW4tY29udmVydGVyIHRvIG9ubHkgdXNlIGEgICAqLworICAvKiAgICAgIHNpbmdsZSBwYXNzIG92ZXIgdGhlIG91dGxpbmUgdG8gcmVuZGVyIGEgYml0bWFwIGdseXBoIGltYWdlLiAgICAgKi8KKyAgLyogICAgICBOb3JtYWxseSwgaXQgaXMgc2V0IGZvciB2ZXJ5IGxhcmdlIGNoYXJhY3RlciBzaXplcy4gIEl0IGlzIG9ubHkgICovCisgIC8qICAgICAgYSBoaW50IHRoYXQgbWlnaHQgYmUgY29tcGxldGVseSBpZ25vcmVkIGJ5IGEgZ2l2ZW4gICAgICAgICAgICAgICAqLworICAvKiAgICAgIHNjYW4tY29udmVydGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZmxhZ3MgQEZUX09VVExJTkVfSUdOT1JFX0RST1BPVVRTLCBARlRfT1VUTElORV9TTUFSVF9EUk9QT1VUUywgKi8KKyAgLyogICAgYW5kIEBGVF9PVVRMSU5FX0lOQ0xVREVfU1RVQlMgYXJlIGlnbm9yZWQgYnkgdGhlIHNtb290aCAgICAgICAgICAgICovCisgIC8qICAgIHJhc3Rlcml6ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlcmUgZXhpc3RzIGEgc2Vjb25kIG1lY2hhbmlzbSB0byBwYXNzIHRoZSBkcm9wLW91dCBtb2RlIHRvIHRoZSAgICovCisgIC8qICAgIEIvVyByYXN0ZXJpemVyOyBzZWUgdGhlIGB0YWdzJyBmaWVsZCBpbiBARlRfT3V0bGluZS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUGxlYXNlIHJlZmVyIHRvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYFNDQU5UWVBFJyBpbnN0cnVjdGlvbiBpbiAgICovCisgIC8qICAgIHRoZSBPcGVuVHlwZSBzcGVjaWZpY2F0aW9uIChpbiBmaWxlIGB0dGluc3QxLmRvYycpIGhvdyBzaW1wbGUgICAgICAqLworICAvKiAgICBkcm9wLW91dHMsIHNtYXJ0IGRyb3Atb3V0cywgYW5kIHN0dWJzIGFyZSBkZWZpbmVkLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX09VVExJTkVfTk9ORSAgICAgICAgICAgICAweDAKKyNkZWZpbmUgRlRfT1VUTElORV9PV05FUiAgICAgICAgICAgIDB4MQorI2RlZmluZSBGVF9PVVRMSU5FX0VWRU5fT0REX0ZJTEwgICAgMHgyCisjZGVmaW5lIEZUX09VVExJTkVfUkVWRVJTRV9GSUxMICAgICAweDQKKyNkZWZpbmUgRlRfT1VUTElORV9JR05PUkVfRFJPUE9VVFMgIDB4OAorI2RlZmluZSBGVF9PVVRMSU5FX1NNQVJUX0RST1BPVVRTICAgMHgxMAorI2RlZmluZSBGVF9PVVRMSU5FX0lOQ0xVREVfU1RVQlMgICAgMHgyMAorCisjZGVmaW5lIEZUX09VVExJTkVfSElHSF9QUkVDSVNJT04gICAweDEwMAorI2RlZmluZSBGVF9PVVRMSU5FX1NJTkdMRV9QQVNTICAgICAgMHgyMDAKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBlbnVtOgorICAqICAgZnRfb3V0bGluZV9mbGFncworICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgVGhlc2UgY29uc3RhbnRzIGFyZSBkZXByZWNhdGVkLiAgUGxlYXNlIHVzZSB0aGUgY29ycmVzcG9uZGluZworICAqICAgQEZUX09VVExJTkVfRkxBR1MgdmFsdWVzLgorICAqCisgICogQHZhbHVlczoKKyAgKiAgIGZ0X291dGxpbmVfbm9uZSAgICAgICAgICAgIDo6IFNlZSBARlRfT1VUTElORV9OT05FLgorICAqICAgZnRfb3V0bGluZV9vd25lciAgICAgICAgICAgOjogU2VlIEBGVF9PVVRMSU5FX09XTkVSLgorICAqICAgZnRfb3V0bGluZV9ldmVuX29kZF9maWxsICAgOjogU2VlIEBGVF9PVVRMSU5FX0VWRU5fT0REX0ZJTEwuCisgICogICBmdF9vdXRsaW5lX3JldmVyc2VfZmlsbCAgICA6OiBTZWUgQEZUX09VVExJTkVfUkVWRVJTRV9GSUxMLgorICAqICAgZnRfb3V0bGluZV9pZ25vcmVfZHJvcG91dHMgOjogU2VlIEBGVF9PVVRMSU5FX0lHTk9SRV9EUk9QT1VUUy4KKyAgKiAgIGZ0X291dGxpbmVfaGlnaF9wcmVjaXNpb24gIDo6IFNlZSBARlRfT1VUTElORV9ISUdIX1BSRUNJU0lPTi4KKyAgKiAgIGZ0X291dGxpbmVfc2luZ2xlX3Bhc3MgICAgIDo6IFNlZSBARlRfT1VUTElORV9TSU5HTEVfUEFTUy4KKyAgKi8KKyNkZWZpbmUgZnRfb3V0bGluZV9ub25lICAgICAgICAgICAgIEZUX09VVExJTkVfTk9ORQorI2RlZmluZSBmdF9vdXRsaW5lX293bmVyICAgICAgICAgICAgRlRfT1VUTElORV9PV05FUgorI2RlZmluZSBmdF9vdXRsaW5lX2V2ZW5fb2RkX2ZpbGwgICAgRlRfT1VUTElORV9FVkVOX09ERF9GSUxMCisjZGVmaW5lIGZ0X291dGxpbmVfcmV2ZXJzZV9maWxsICAgICBGVF9PVVRMSU5FX1JFVkVSU0VfRklMTAorI2RlZmluZSBmdF9vdXRsaW5lX2lnbm9yZV9kcm9wb3V0cyAgRlRfT1VUTElORV9JR05PUkVfRFJPUE9VVFMKKyNkZWZpbmUgZnRfb3V0bGluZV9oaWdoX3ByZWNpc2lvbiAgIEZUX09VVExJTkVfSElHSF9QUkVDSVNJT04KKyNkZWZpbmUgZnRfb3V0bGluZV9zaW5nbGVfcGFzcyAgICAgIEZUX09VVExJTkVfU0lOR0xFX1BBU1MKKworICAvKiAqLworCisjZGVmaW5lIEZUX0NVUlZFX1RBRyggZmxhZyApICAoIGZsYWcgJiAzICkKKworI2RlZmluZSBGVF9DVVJWRV9UQUdfT04gICAgICAgICAgICAxCisjZGVmaW5lIEZUX0NVUlZFX1RBR19DT05JQyAgICAgICAgIDAKKyNkZWZpbmUgRlRfQ1VSVkVfVEFHX0NVQklDICAgICAgICAgMgorCisjZGVmaW5lIEZUX0NVUlZFX1RBR19IQVNfU0NBTk1PREUgIDQKKworI2RlZmluZSBGVF9DVVJWRV9UQUdfVE9VQ0hfWCAgICAgICA4ICAvKiByZXNlcnZlZCBmb3IgdGhlIFRydWVUeXBlIGhpbnRlciAqLworI2RlZmluZSBGVF9DVVJWRV9UQUdfVE9VQ0hfWSAgICAgIDE2ICAvKiByZXNlcnZlZCBmb3IgdGhlIFRydWVUeXBlIGhpbnRlciAqLworCisjZGVmaW5lIEZUX0NVUlZFX1RBR19UT1VDSF9CT1RIICAgICggRlRfQ1VSVkVfVEFHX1RPVUNIX1ggfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQ1VSVkVfVEFHX1RPVUNIX1kgKQorCisjZGVmaW5lIEZUX0N1cnZlX1RhZ19PbiAgICAgICBGVF9DVVJWRV9UQUdfT04KKyNkZWZpbmUgRlRfQ3VydmVfVGFnX0NvbmljICAgIEZUX0NVUlZFX1RBR19DT05JQworI2RlZmluZSBGVF9DdXJ2ZV9UYWdfQ3ViaWMgICAgRlRfQ1VSVkVfVEFHX0NVQklDCisjZGVmaW5lIEZUX0N1cnZlX1RhZ19Ub3VjaF9YICBGVF9DVVJWRV9UQUdfVE9VQ0hfWAorI2RlZmluZSBGVF9DdXJ2ZV9UYWdfVG91Y2hfWSAgRlRfQ1VSVkVfVEFHX1RPVUNIX1kKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfTW92ZVRvRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gcG9pbnRlciB0eXBlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHNpZ25hdHVyZSBvZiBhIGBtb3ZlICAqLworICAvKiAgICB0bycgZnVuY3Rpb24gZHVyaW5nIG91dGxpbmUgd2Fsa2luZy9kZWNvbXBvc2l0aW9uLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgYG1vdmUgdG8nIGlzIGVtaXR0ZWQgdG8gc3RhcnQgYSBuZXcgY29udG91ciBpbiBhbiBvdXRsaW5lLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvICAgOjogQSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgcG9pbnQgb2YgdGhlIGBtb3ZlIHRvJy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciA6OiBBIHR5cGVsZXNzIHBvaW50ZXIgd2hpY2ggaXMgcGFzc2VkIGZyb20gdGhlIGNhbGxlciBvZiB0aGUgICovCisgIC8qICAgICAgICAgICAgZGVjb21wb3NpdGlvbiBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBpbnQKKyAgKCpGVF9PdXRsaW5lX01vdmVUb0Z1bmMpKCBjb25zdCBGVF9WZWN0b3IqICB0bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICB1c2VyICk7CisKKyNkZWZpbmUgRlRfT3V0bGluZV9Nb3ZlVG9fRnVuYyAgRlRfT3V0bGluZV9Nb3ZlVG9GdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0xpbmVUb0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBzaWduYXR1cmUgb2YgYSBgbGluZSAgKi8KKyAgLyogICAgdG8nIGZ1bmN0aW9uIGR1cmluZyBvdXRsaW5lIHdhbGtpbmcvZGVjb21wb3NpdGlvbi4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGBsaW5lIHRvJyBpcyBlbWl0dGVkIHRvIGluZGljYXRlIGEgc2VnbWVudCBpbiB0aGUgb3V0bGluZS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0byAgIDo6IEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IHBvaW50IG9mIHRoZSBgbGluZSB0bycuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgOjogQSB0eXBlbGVzcyBwb2ludGVyIHdoaWNoIGlzIHBhc3NlZCBmcm9tIHRoZSBjYWxsZXIgb2YgdGhlICAqLworICAvKiAgICAgICAgICAgIGRlY29tcG9zaXRpb24gZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgaW50CisgICgqRlRfT3V0bGluZV9MaW5lVG9GdW5jKSggY29uc3QgRlRfVmVjdG9yKiAgdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgICAgdXNlciApOworCisjZGVmaW5lIEZUX091dGxpbmVfTGluZVRvX0Z1bmMgIEZUX091dGxpbmVfTGluZVRvRnVuYworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9Db25pY1RvRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiBwb2ludGVyIHR5cGUgdXNlZCB0byBkZXNjcmliZSB0aGUgc2lnbmF0dXJlIG9mIGEgYGNvbmljICovCisgIC8qICAgIHRvJyBmdW5jdGlvbiBkdXJpbmcgb3V0bGluZSB3YWxraW5nIG9yIGRlY29tcG9zaXRpb24uICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBgY29uaWMgdG8nIGlzIGVtaXR0ZWQgdG8gaW5kaWNhdGUgYSBzZWNvbmQtb3JkZXIgQsOpemllciBhcmMgaW4gICAqLworICAvKiAgICB0aGUgb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb250cm9sIDo6IEFuIGludGVybWVkaWF0ZSBjb250cm9sIHBvaW50IGJldHdlZW4gdGhlIGxhc3QgcG9zaXRpb24gKi8KKyAgLyogICAgICAgICAgICAgICBhbmQgdGhlIG5ldyB0YXJnZXQgaW4gYHRvJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0byAgICAgIDo6IEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IGVuZCBwb2ludCBvZiB0aGUgY29uaWMgYXJjLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgICAgOjogQSB0eXBlbGVzcyBwb2ludGVyIHdoaWNoIGlzIHBhc3NlZCBmcm9tIHRoZSBjYWxsZXIgb2YgICAqLworICAvKiAgICAgICAgICAgICAgIHRoZSBkZWNvbXBvc2l0aW9uIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgaW50CisgICgqRlRfT3V0bGluZV9Db25pY1RvRnVuYykoIGNvbnN0IEZUX1ZlY3RvciogIGNvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogIHRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICB1c2VyICk7CisKKyNkZWZpbmUgRlRfT3V0bGluZV9Db25pY1RvX0Z1bmMgIEZUX091dGxpbmVfQ29uaWNUb0Z1bmMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfQ3ViaWNUb0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gcG9pbnRlciB0eXBlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHNpZ25hdHVyZSBvZiBhIGBjdWJpYyAqLworICAvKiAgICB0bycgZnVuY3Rpb24gZHVyaW5nIG91dGxpbmUgd2Fsa2luZyBvciBkZWNvbXBvc2l0aW9uLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgYGN1YmljIHRvJyBpcyBlbWl0dGVkIHRvIGluZGljYXRlIGEgdGhpcmQtb3JkZXIgQsOpemllciBhcmMuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb250cm9sMSA6OiBBIHBvaW50ZXIgdG8gdGhlIGZpcnN0IELDqXppZXIgY29udHJvbCBwb2ludC4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb250cm9sMiA6OiBBIHBvaW50ZXIgdG8gdGhlIHNlY29uZCBCw6l6aWVyIGNvbnRyb2wgcG9pbnQuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0byAgICAgICA6OiBBIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBlbmQgcG9pbnQuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgICAgIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB3aGljaCBpcyBwYXNzZWQgZnJvbSB0aGUgY2FsbGVyIG9mICAqLworICAvKiAgICAgICAgICAgICAgICB0aGUgZGVjb21wb3NpdGlvbiBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgaW50CisgICgqRlRfT3V0bGluZV9DdWJpY1RvRnVuYykoIGNvbnN0IEZUX1ZlY3RvciogIGNvbnRyb2wxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICBjb250cm9sMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgIHVzZXIgKTsKKworI2RlZmluZSBGVF9PdXRsaW5lX0N1YmljVG9fRnVuYyAgRlRfT3V0bGluZV9DdWJpY1RvRnVuYworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9GdW5jcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdG8gaG9sZCB2YXJpb3VzIGZ1bmN0aW9uIHBvaW50ZXJzIHVzZWQgZHVyaW5nIG91dGxpbmUgICovCisgIC8qICAgIGRlY29tcG9zaXRpb24gaW4gb3JkZXIgdG8gZW1pdCBzZWdtZW50cywgY29uaWMsIGFuZCBjdWJpYyBCw6l6aWVycy4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb3ZlX3RvICA6OiBUaGUgYG1vdmUgdG8nIGVtaXR0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpbmVfdG8gIDo6IFRoZSBzZWdtZW50IGVtaXR0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29uaWNfdG8gOjogVGhlIHNlY29uZC1vcmRlciBCw6l6aWVyIGFyYyBlbWl0dGVyLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY3ViaWNfdG8gOjogVGhlIHRoaXJkLW9yZGVyIELDqXppZXIgYXJjIGVtaXR0ZXIuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2hpZnQgICAgOjogVGhlIHNoaWZ0IHRoYXQgaXMgYXBwbGllZCB0byBjb29yZGluYXRlcyBiZWZvcmUgdGhleSAgICovCisgIC8qICAgICAgICAgICAgICAgIGFyZSBzZW50IHRvIHRoZSBlbWl0dGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVsdGEgICAgOjogVGhlIGRlbHRhIHRoYXQgaXMgYXBwbGllZCB0byBjb29yZGluYXRlcyBiZWZvcmUgdGhleSAgICovCisgIC8qICAgICAgICAgICAgICAgIGFyZSBzZW50IHRvIHRoZSBlbWl0dGVyLCBidXQgYWZ0ZXIgdGhlIHNoaWZ0LiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBwb2ludCBjb29yZGluYXRlcyBzZW50IHRvIHRoZSBlbWl0dGVycyBhcmUgdGhlIHRyYW5zZm9ybWVkICAgICAqLworICAvKiAgICB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5hbCBjb29yZGluYXRlcyAodGhpcyBpcyBpbXBvcnRhbnQgZm9yIGhpZ2ggICAgKi8KKyAgLyogICAgYWNjdXJhY3kgZHVyaW5nIHNjYW4tY29udmVyc2lvbikuICBUaGUgdHJhbnNmb3JtYXRpb24gaXMgc2ltcGxlOiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB4JyA9ICh4IDw8IHNoaWZ0KSAtIGRlbHRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgeScgPSAoeCA8PCBzaGlmdCkgLSBkZWx0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNldCB0aGUgdmFsdWVzIG9mIGBzaGlmdCcgYW5kIGBkZWx0YScgdG9+MCB0byBnZXQgdGhlIG9yaWdpbmFsICAgICAqLworICAvKiAgICBwb2ludCBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9PdXRsaW5lX0Z1bmNzXworICB7CisgICAgRlRfT3V0bGluZV9Nb3ZlVG9GdW5jICAgbW92ZV90bzsKKyAgICBGVF9PdXRsaW5lX0xpbmVUb0Z1bmMgICBsaW5lX3RvOworICAgIEZUX091dGxpbmVfQ29uaWNUb0Z1bmMgIGNvbmljX3RvOworICAgIEZUX091dGxpbmVfQ3ViaWNUb0Z1bmMgIGN1YmljX3RvOworCisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgc2hpZnQ7CisgICAgRlRfUG9zICAgICAgICAgICAgICAgICAgZGVsdGE7CisKKyAgfSBGVF9PdXRsaW5lX0Z1bmNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmFzaWNfdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE1hY3JvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0lNQUdFX1RBRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgbWFjcm8gY29udmVydHMgZm91ci1sZXR0ZXIgdGFncyB0byBhbiB1bnNpZ25lZCBsb25nIHR5cGUuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNpbmNlIG1hbnkgMTYtYml0IGNvbXBpbGVycyBkb24ndCBsaWtlIDMyLWJpdCBlbnVtZXJhdGlvbnMsIHlvdSAgICAqLworICAvKiAgICBzaG91bGQgcmVkZWZpbmUgdGhpcyBtYWNybyBpbiBjYXNlIG9mIHByb2JsZW1zIHRvIHNvbWV0aGluZyBsaWtlICAgKi8KKyAgLyogICAgdGhpczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAjZGVmaW5lIEZUX0lNQUdFX1RBRyggdmFsdWUsIF94MSwgX3gyLCBfeDMsIF94NCApICB2YWx1ZSAgICAgICAgICovCisgIC8qICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdG8gZ2V0IGEgc2ltcGxlIGVudW1lcmF0aW9uIHdpdGhvdXQgYXNzaWduaW5nIHNwZWNpYWwgbnVtYmVycy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmbmRlZiBGVF9JTUFHRV9UQUcKKyNkZWZpbmUgRlRfSU1BR0VfVEFHKCB2YWx1ZSwgX3gxLCBfeDIsIF94MywgX3g0ICkgIFwKKyAgICAgICAgICB2YWx1ZSA9ICggKCAodW5zaWduZWQgbG9uZylfeDEgPDwgMjQgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgKCAodW5zaWduZWQgbG9uZylfeDIgPDwgMTYgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgKCAodW5zaWduZWQgbG9uZylfeDMgPDwgOCAgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylfeDQgICAgICAgICApCisjZW5kaWYgLyogRlRfSU1BR0VfVEFHICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HbHlwaF9Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBlbnVtZXJhdGlvbiB0eXBlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGZvcm1hdCBvZiBhIGdpdmVuIGdseXBoICAgKi8KKyAgLyogICAgaW1hZ2UuICBOb3RlIHRoYXQgdGhpcyB2ZXJzaW9uIG9mIEZyZWVUeXBlIG9ubHkgc3VwcG9ydHMgdHdvIGltYWdlICovCisgIC8qICAgIGZvcm1hdHMsIGV2ZW4gdGhvdWdoIGZ1dHVyZSBmb250IGRyaXZlcnMgd2lsbCBiZSBhYmxlIHRvIHJlZ2lzdGVyICAqLworICAvKiAgICB0aGVpciBvd24gZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HTFlQSF9GT1JNQVRfTk9ORSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgdmFsdWV+MCBpcyByZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HTFlQSF9GT1JNQVRfQ09NUE9TSVRFIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgZ2x5cGggaW1hZ2UgaXMgYSBjb21wb3NpdGUgb2Ygc2V2ZXJhbCBvdGhlciBpbWFnZXMuICBUaGlzICAgICovCisgIC8qICAgICAgZm9ybWF0IGlzIF9vbmx5XyB1c2VkIHdpdGggQEZUX0xPQURfTk9fUkVDVVJTRSwgYW5kIGlzIHVzZWQgdG8gICAqLworICAvKiAgICAgIHJlcG9ydCBjb21wb3VuZCBnbHlwaHMgKGxpa2UgYWNjZW50ZWQgY2hhcmFjdGVycykuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBnbHlwaCBpbWFnZSBpcyBhIGJpdG1hcCwgYW5kIGNhbiBiZSBkZXNjcmliZWQgYXMgYW4gICAgICAgICAgKi8KKyAgLyogICAgICBARlRfQml0bWFwLiAgWW91IGdlbmVyYWxseSBuZWVkIHRvIGFjY2VzcyB0aGUgYGJpdG1hcCcgZmllbGQgb2YgICovCisgIC8qICAgICAgdGhlIEBGVF9HbHlwaFNsb3RSZWMgc3RydWN0dXJlIHRvIHJlYWQgaXQuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR0xZUEhfRk9STUFUX09VVExJTkUgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGdseXBoIGltYWdlIGlzIGEgdmVjdG9yaWFsIG91dGxpbmUgbWFkZSBvZiBsaW5lIHNlZ21lbnRzICAgICAqLworICAvKiAgICAgIGFuZCBCw6l6aWVyIGFyY3M7IGl0IGNhbiBiZSBkZXNjcmliZWQgYXMgYW4gQEZUX091dGxpbmU7IHlvdSAgICAgICovCisgIC8qICAgICAgZ2VuZXJhbGx5IHdhbnQgdG8gYWNjZXNzIHRoZSBgb3V0bGluZScgZmllbGQgb2YgdGhlICAgICAgICAgICAgICAqLworICAvKiAgICAgIEBGVF9HbHlwaFNsb3RSZWMgc3RydWN0dXJlIHRvIHJlYWQgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dMWVBIX0ZPUk1BVF9QTE9UVEVSIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBnbHlwaCBpbWFnZSBpcyBhIHZlY3RvcmlhbCBwYXRoIHdpdGggbm8gaW5zaWRlIGFuZCBvdXRzaWRlICAgKi8KKyAgLyogICAgICBjb250b3Vycy4gIFNvbWUgVHlwZX4xIGZvbnRzLCBsaWtlIHRob3NlIGluIHRoZSBIZXJzaGV5IGZhbWlseSwgICovCisgIC8qICAgICAgY29udGFpbiBnbHlwaHMgaW4gdGhpcyBmb3JtYXQuICBUaGVzZSBhcmUgZGVzY3JpYmVkIGFzICAgICAgICAgICAqLworICAvKiAgICAgIEBGVF9PdXRsaW5lLCBidXQgRnJlZVR5cGUgaXNuJ3QgY3VycmVudGx5IGNhcGFibGUgb2YgcmVuZGVyaW5nICAgKi8KKyAgLyogICAgICB0aGVtIGNvcnJlY3RseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIEZUX0dseXBoX0Zvcm1hdF8KKyAgeworICAgIEZUX0lNQUdFX1RBRyggRlRfR0xZUEhfRk9STUFUX05PTkUsIDAsIDAsIDAsIDAgKSwKKworICAgIEZUX0lNQUdFX1RBRyggRlRfR0xZUEhfRk9STUFUX0NPTVBPU0lURSwgJ2MnLCAnbycsICdtJywgJ3AnICksCisgICAgRlRfSU1BR0VfVEFHKCBGVF9HTFlQSF9GT1JNQVRfQklUTUFQLCAgICAnYicsICdpJywgJ3QnLCAncycgKSwKKyAgICBGVF9JTUFHRV9UQUcoIEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FLCAgICdvJywgJ3UnLCAndCcsICdsJyApLAorICAgIEZUX0lNQUdFX1RBRyggRlRfR0xZUEhfRk9STUFUX1BMT1RURVIsICAgJ3AnLCAnbCcsICdvJywgJ3QnICkKKworICB9IEZUX0dseXBoX0Zvcm1hdDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X2dseXBoX2Zvcm1hdF94eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgbGlzdCBvZiBkZXByZWNhdGVkIGNvbnN0YW50cy4gIFVzZSB0aGUgY29ycmVzcG9uZGluZyAgICAgICAgICAgICAqLworICAvKiAgICBARlRfR2x5cGhfRm9ybWF0IHZhbHVlcyBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxWYWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9nbHlwaF9mb3JtYXRfbm9uZSAgICAgIDo6IFNlZSBARlRfR0xZUEhfRk9STUFUX05PTkUuICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfZ2x5cGhfZm9ybWF0X2NvbXBvc2l0ZSA6OiBTZWUgQEZUX0dMWVBIX0ZPUk1BVF9DT01QT1NJVEUuICAgICAgICovCisgIC8qICAgIGZ0X2dseXBoX2Zvcm1hdF9iaXRtYXAgICAgOjogU2VlIEBGVF9HTFlQSF9GT1JNQVRfQklUTUFQLiAgICAgICAgICAqLworICAvKiAgICBmdF9nbHlwaF9mb3JtYXRfb3V0bGluZSAgIDo6IFNlZSBARlRfR0xZUEhfRk9STUFUX09VVExJTkUuICAgICAgICAgKi8KKyAgLyogICAgZnRfZ2x5cGhfZm9ybWF0X3Bsb3R0ZXIgICA6OiBTZWUgQEZUX0dMWVBIX0ZPUk1BVF9QTE9UVEVSLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBmdF9nbHlwaF9mb3JtYXRfbm9uZSAgICAgICBGVF9HTFlQSF9GT1JNQVRfTk9ORQorI2RlZmluZSBmdF9nbHlwaF9mb3JtYXRfY29tcG9zaXRlICBGVF9HTFlQSF9GT1JNQVRfQ09NUE9TSVRFCisjZGVmaW5lIGZ0X2dseXBoX2Zvcm1hdF9iaXRtYXAgICAgIEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAKKyNkZWZpbmUgZnRfZ2x5cGhfZm9ybWF0X291dGxpbmUgICAgRlRfR0xZUEhfRk9STUFUX09VVExJTkUKKyNkZWZpbmUgZnRfZ2x5cGhfZm9ybWF0X3Bsb3R0ZXIgICAgRlRfR0xZUEhfRk9STUFUX1BMT1RURVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICBSIEEgUyBUIEUgUiAgIEQgRSBGIEkgTiBJIFQgSSBPIE4gUyAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEEgcmFzdGVyIGlzIGEgc2NhbiBjb252ZXJ0ZXIsIGluIGNoYXJnZSBvZiByZW5kZXJpbmcgYW4gb3V0bGluZSBpbnRvICAqLworICAvKiBhIGEgYml0bWFwLiAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBwdWJsaWMgQVBJIGZvciByYXN0ZXJzLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE5vdGUgdGhhdCBpbiBGcmVlVHlwZSAyLCBhbGwgcmFzdGVycyBhcmUgbm93IGVuY2Fwc3VsYXRlZCB3aXRoaW4gICAgICAqLworICAvKiBzcGVjaWZpYyBtb2R1bGVzIGNhbGxlZCBgcmVuZGVyZXJzJy4gIFNlZSBgZnJlZXR5cGUvZnRyZW5kZXIuaCcgZm9yICAgKi8KKyAgLyogbW9yZSBkZXRhaWxzIG9uIHJlbmRlcmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNjYW5saW5lIENvbnZlcnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEhvdyB2ZWN0b3JpYWwgb3V0bGluZXMgYXJlIGNvbnZlcnRlZCBpbnRvIGJpdG1hcHMgYW5kIHBpeG1hcHMuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0ZWNobmljYWwgZGVmaW5pdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSAocG9pbnRlcikgdG8gYSByYXN0ZXIgb2JqZWN0LiAgRWFjaCBvYmplY3QgY2FuIGJlIHVzZWQgICAgKi8KKyAgLyogICAgaW5kZXBlbmRlbnRseSB0byBjb252ZXJ0IGFuIG91dGxpbmUgaW50byBhIGJpdG1hcCBvciBwaXhtYXAuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9SYXN0ZXJSZWNfKiAgRlRfUmFzdGVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU3BhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCBhIHNpbmdsZSBzcGFuIG9mIGdyYXkgKG9yIGJsYWNrKSBwaXhlbHMgICovCisgIC8qICAgIHdoZW4gcmVuZGVyaW5nIGEgbW9ub2Nocm9tZSBvciBhbnRpLWFsaWFzZWQgYml0bWFwLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHggICAgICAgIDo6IFRoZSBzcGFuJ3MgaG9yaXpvbnRhbCBzdGFydCBwb3NpdGlvbi4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGVuICAgICAgOjogVGhlIHNwYW4ncyBsZW5ndGggaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb3ZlcmFnZSA6OiBUaGUgc3BhbiBjb2xvci9jb3ZlcmFnZSwgcmFuZ2luZyBmcm9tIDAgKGJhY2tncm91bmQpICAgKi8KKyAgLyogICAgICAgICAgICAgICAgdG8gMjU1IChmb3JlZ3JvdW5kKS4gIE9ubHkgdXNlZCBmb3IgYW50aS1hbGlhc2VkICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIHJlbmRlcmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgYnkgdGhlIHNwYW4gZHJhd2luZyBjYWxsYmFjayB0eXBlIG5hbWVkICAgICAqLworICAvKiAgICBARlRfU3BhbkZ1bmMgd2hpY2ggdGFrZXMgdGhlIHl+Y29vcmRpbmF0ZSBvZiB0aGUgc3BhbiBhcyBhICAgICAgICAgKi8KKyAgLyogICAgYSBwYXJhbWV0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgY292ZXJhZ2UgdmFsdWUgaXMgYWx3YXlzIGJldHdlZW4gMCBhbmQgMjU1LiAgSWYgeW91IHdhbnQgbGVzcyAgKi8KKyAgLyogICAgZ3JheSB2YWx1ZXMsIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBoYXMgdG8gcmVkdWNlIHRoZW0uICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfU3Bhbl8KKyAgeworICAgIHNob3J0ICAgICAgICAgICB4OworICAgIHVuc2lnbmVkIHNob3J0ICBsZW47CisgICAgdW5zaWduZWQgY2hhciAgIGNvdmVyYWdlOworCisgIH0gRlRfU3BhbjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NwYW5GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCBhcyBhIGNhbGwtYmFjayBieSB0aGUgYW50aS1hbGlhc2VkIHJlbmRlcmVyIGluICAgICAqLworICAvKiAgICBvcmRlciB0byBsZXQgY2xpZW50IGFwcGxpY2F0aW9ucyBkcmF3IHRoZW1zZWx2ZXMgdGhlIGdyYXkgcGl4ZWwgICAgKi8KKyAgLyogICAgc3BhbnMgb24gZWFjaCBzY2FuIGxpbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeSAgICAgOjogVGhlIHNjYW5saW5lJ3MgeX5jb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb3VudCA6OiBUaGUgbnVtYmVyIG9mIHNwYW5zIHRvIGRyYXcgb24gdGhpcyBzY2FubGluZS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNwYW5zIDo6IEEgdGFibGUgb2YgYGNvdW50JyBzcGFucyB0byBkcmF3IG9uIHRoZSBzY2FubGluZS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciAgOjogVXNlci1zdXBwbGllZCBkYXRhIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjay4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBjYWxsYmFjayBhbGxvd3MgY2xpZW50IGFwcGxpY2F0aW9ucyB0byBkaXJlY3RseSByZW5kZXIgdGhlICAgICovCisgIC8qICAgIGdyYXkgc3BhbnMgb2YgdGhlIGFudGktYWxpYXNlZCBiaXRtYXAgdG8gYW55IGtpbmQgb2Ygc3VyZmFjZXMuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBjYW4gYmUgdXNlZCB0byB3cml0ZSBhbnRpLWFsaWFzZWQgb3V0bGluZXMgZGlyZWN0bHkgdG8gYSAgICAgICovCisgIC8qICAgIGdpdmVuIGJhY2tncm91bmQgYml0bWFwLCBhbmQgZXZlbiBwZXJmb3JtIHRyYW5zbHVjZW5jeS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IHRoZSBgY291bnQnIGZpZWxkIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gYSBmaXhlZCB2YWx1ZSAgICovCisgIC8qICAgIGRlZmluZWQgYnkgdGhlIGBGVF9NQVhfR1JBWV9TUEFOUycgY29uZmlndXJhdGlvbiBtYWNybyBpbiAgICAgICAgICAqLworICAvKiAgICBgZnRvcHRpb24uaCcuICBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIHNldCB0b34zMiwgd2hpY2ggbWVhbnMgICAgKi8KKyAgLyogICAgdGhhdCBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIDMyfnNwYW5zIG9uIGEgZ2l2ZW4gc2NhbmxpbmUsIHRoZSAgICAgICovCisgIC8qICAgIGNhbGxiYWNrIGlzIGNhbGxlZCBzZXZlcmFsIHRpbWVzIHdpdGggdGhlIHNhbWUgYHknIHBhcmFtZXRlciBpbiAgICAqLworICAvKiAgICBvcmRlciB0byBkcmF3IGFsbCBjYWxsYmFja3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE90aGVyd2lzZSwgdGhlIGNhbGxiYWNrIGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHNjYW4tbGluZSwgYW5kICAgICAqLworICAvKiAgICBvbmx5IGZvciB0aG9zZSBzY2FubGluZXMgdGhhdCBkbyBoYXZlIGBncmF5JyBwaXhlbHMgb24gdGhlbS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1NwYW5GdW5jKSggaW50ICAgICAgICAgICAgIHksCisgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgY291bnQsCisgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TcGFuKiAgc3BhbnMsCisgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgdXNlciApOworCisjZGVmaW5lIEZUX1Jhc3Rlcl9TcGFuX0Z1bmMgIEZUX1NwYW5GdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYXN0ZXJfQml0VGVzdF9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUSElTIFRZUEUgSVMgREVQUkVDQVRFRC4gIERPIE5PVCBVU0UgSVQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCBhcyBhIGNhbGwtYmFjayBieSB0aGUgbW9ub2Nocm9tZSBzY2FuLWNvbnZlcnRlciAgICAqLworICAvKiAgICB0byB0ZXN0IHdoZXRoZXIgYSBnaXZlbiB0YXJnZXQgcGl4ZWwgaXMgYWxyZWFkeSBzZXQgdG8gdGhlIGRyYXdpbmcgKi8KKyAgLyogICAgYGNvbG9yJy4gIFRoZXNlIHRlc3RzIGFyZSBjcnVjaWFsIHRvIGltcGxlbWVudCBkcm9wLW91dCBjb250cm9sICAgICovCisgIC8qICAgIHBlci1zZSB0aGUgVHJ1ZVR5cGUgc3BlYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHkgICAgIDo6IFRoZSBwaXhlbCdzIHl+Y29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeCAgICAgOjogVGhlIHBpeGVsJ3MgeH5jb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1c2VyICA6OiBVc2VyLXN1cHBsaWVkIGRhdGEgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIDF+aWYgdGhlIHBpeGVsIGlzIGBzZXQnLCAwfm90aGVyd2lzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgaW50CisgICgqRlRfUmFzdGVyX0JpdFRlc3RfRnVuYykoIGludCAgICB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogIHVzZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Jhc3Rlcl9CaXRTZXRfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRISVMgVFlQRSBJUyBERVBSRUNBVEVELiAgRE8gTk9UIFVTRSBJVC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIGFzIGEgY2FsbC1iYWNrIGJ5IHRoZSBtb25vY2hyb21lIHNjYW4tY29udmVydGVyICAgICovCisgIC8qICAgIHRvIHNldCBhbiBpbmRpdmlkdWFsIHRhcmdldCBwaXhlbC4gIFRoaXMgaXMgY3J1Y2lhbCB0byBpbXBsZW1lbnQgICAqLworICAvKiAgICBkcm9wLW91dCBjb250cm9sIGFjY29yZGluZyB0byB0aGUgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbi4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5ICAgICA6OiBUaGUgcGl4ZWwncyB5fmNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHggICAgIDo6IFRoZSBwaXhlbCdzIHh+Y29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciAgOjogVXNlci1zdXBwbGllZCBkYXRhIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjay4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgMX5pZiB0aGUgcGl4ZWwgaXMgYHNldCcsIDB+b3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9SYXN0ZXJfQml0U2V0X0Z1bmMpKCBpbnQgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgdXNlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUkFTVEVSX0ZMQUdfWFhYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBsaXN0IG9mIGJpdCBmbGFnIGNvbnN0YW50cyBhcyB1c2VkIGluIHRoZSBgZmxhZ3MnIGZpZWxkIG9mIGEgICAgICovCisgIC8qICAgIEBGVF9SYXN0ZXJfUGFyYW1zIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFZhbHVlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JBU1RFUl9GTEFHX0RFRkFVTFQgOjogVGhpcyB2YWx1ZSBpcyAwLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUkFTVEVSX0ZMQUdfQUEgICAgICA6OiBUaGlzIGZsYWcgaXMgc2V0IHRvIGluZGljYXRlIHRoYXQgYW4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW50aS1hbGlhc2VkIGdseXBoIGltYWdlIHNob3VsZCBiZSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC4gIE90aGVyd2lzZSwgaXQgd2lsbCBiZSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25vY2hyb21lICgxLWJpdCkuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SQVNURVJfRkxBR19ESVJFQ1QgIDo6IFRoaXMgZmxhZyBpcyBzZXQgdG8gaW5kaWNhdGUgZGlyZWN0ICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcuICBJbiB0aGlzIG1vZGUsIGNsaWVudCAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zIG11c3QgcHJvdmlkZSB0aGVpciBvd24gc3BhbiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLiAgVGhpcyBsZXRzIHRoZW0gZGlyZWN0bHkgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3IG9yIGNvbXBvc2Ugb3ZlciBhbiBleGlzdGluZyBiaXRtYXAuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBiaXQgaXMgbm90IHNldCwgdGhlIHRhcmdldCAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeG1hcCdzIGJ1ZmZlciBfbXVzdF8gYmUgemVyb2VkIGJlZm9yZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBmb3Igbm93LCBkaXJlY3QgcmVuZGVyaW5nIGlzICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IHBvc3NpYmxlIHdpdGggYW50aS1hbGlhc2VkIGdseXBocy4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SQVNURVJfRkxBR19DTElQICAgIDo6IFRoaXMgZmxhZyBpcyBvbmx5IHVzZWQgaW4gZGlyZWN0ICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcgbW9kZS4gIElmIHNldCwgdGhlIG91dHB1dCB3aWxsICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgY2xpcHBlZCB0byBhIGJveCBzcGVjaWZpZWQgaW4gdGhlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBjbGlwX2JveCcgZmllbGQgb2YgdGhlICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBARlRfUmFzdGVyX1BhcmFtcyBzdHJ1Y3R1cmUuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBieSBkZWZhdWx0LCB0aGUgZ2x5cGggYml0bWFwICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBjbGlwcGVkIHRvIHRoZSB0YXJnZXQgcGl4bWFwLCBleGNlcHQgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gZGlyZWN0IHJlbmRlcmluZyBtb2RlIHdoZXJlIGFsbCBzcGFucyAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnZW5lcmF0ZWQgaWYgbm8gY2xpcHBpbmcgYm94IGlzIHNldC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX1JBU1RFUl9GTEFHX0RFRkFVTFQgIDB4MAorI2RlZmluZSBGVF9SQVNURVJfRkxBR19BQSAgICAgICAweDEKKyNkZWZpbmUgRlRfUkFTVEVSX0ZMQUdfRElSRUNUICAgMHgyCisjZGVmaW5lIEZUX1JBU1RFUl9GTEFHX0NMSVAgICAgIDB4NAorCisgIC8qIGRlcHJlY2F0ZWQgKi8KKyNkZWZpbmUgZnRfcmFzdGVyX2ZsYWdfZGVmYXVsdCAgRlRfUkFTVEVSX0ZMQUdfREVGQVVMVAorI2RlZmluZSBmdF9yYXN0ZXJfZmxhZ19hYSAgICAgICBGVF9SQVNURVJfRkxBR19BQQorI2RlZmluZSBmdF9yYXN0ZXJfZmxhZ19kaXJlY3QgICBGVF9SQVNURVJfRkxBR19ESVJFQ1QKKyNkZWZpbmUgZnRfcmFzdGVyX2ZsYWdfY2xpcCAgICAgRlRfUkFTVEVSX0ZMQUdfQ0xJUAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmFzdGVyX1BhcmFtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdG8gaG9sZCB0aGUgYXJndW1lbnRzIHVzZWQgYnkgYSByYXN0ZXIncyByZW5kZXIgICAgICAgICovCisgIC8qICAgIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhcmdldCAgICAgIDo6IFRoZSB0YXJnZXQgYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc291cmNlICAgICAgOjogQSBwb2ludGVyIHRvIHRoZSBzb3VyY2UgZ2x5cGggaW1hZ2UgKGUuZy4sIGFuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIEBGVF9PdXRsaW5lKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmxhZ3MgICAgICAgOjogVGhlIHJlbmRlcmluZyBmbGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBncmF5X3NwYW5zICA6OiBUaGUgZ3JheSBzcGFuIGRyYXdpbmcgY2FsbGJhY2suICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJsYWNrX3NwYW5zIDo6IFRoZSBibGFjayBzcGFuIGRyYXdpbmcgY2FsbGJhY2suICBVTklNUExFTUVOVEVEISAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYml0X3Rlc3QgICAgOjogVGhlIGJpdCB0ZXN0IGNhbGxiYWNrLiAgVU5JTVBMRU1FTlRFRCEgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiaXRfc2V0ICAgICA6OiBUaGUgYml0IHNldCBjYWxsYmFjay4gIFVOSU1QTEVNRU5URUQhICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgICAgICAgIDo6IFVzZXItc3VwcGxpZWQgZGF0YSB0aGF0IGlzIHBhc3NlZCB0byBlYWNoIGRyYXdpbmcgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBjYWxsYmFjay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNsaXBfYm94ICAgIDo6IEFuIG9wdGlvbmFsIGNsaXBwaW5nIGJveC4gIEl0IGlzIG9ubHkgdXNlZCBpbiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBkaXJlY3QgcmVuZGVyaW5nIG1vZGUuICBOb3RlIHRoYXQgY29vcmRpbmF0ZXMgaGVyZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGV4cHJlc3NlZCBpbiBfaW50ZWdlcl8gcGl4ZWxzIChhbmQgbm90IGluICovCisgIC8qICAgICAgICAgICAgICAgICAgIDI2LjYgZml4ZWQtcG9pbnQgdW5pdHMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIGFudGktYWxpYXNlZCBnbHlwaCBiaXRtYXAgaXMgZHJhd24gaWYgdGhlIEBGVF9SQVNURVJfRkxBR19BQSAgICAqLworICAvKiAgICBiaXQgZmxhZyBpcyBzZXQgaW4gdGhlIGBmbGFncycgZmllbGQsIG90aGVyd2lzZSBhIG1vbm9jaHJvbWUgICAgICAgKi8KKyAgLyogICAgYml0bWFwIGlzIGdlbmVyYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJZiB0aGUgQEZUX1JBU1RFUl9GTEFHX0RJUkVDVCBiaXQgZmxhZyBpcyBzZXQgaW4gYGZsYWdzJywgdGhlICAgICAgKi8KKyAgLyogICAgcmFzdGVyIHdpbGwgY2FsbCB0aGUgYGdyYXlfc3BhbnMnIGNhbGxiYWNrIHRvIGRyYXcgZ3JheSBwaXhlbCAgICAgICovCisgIC8qICAgIHNwYW5zLCBpbiB0aGUgY2FzZSBvZiBhbiBhYSBnbHlwaCBiaXRtYXAsIGl0IHdpbGwgY2FsbCAgICAgICAgICAgICAqLworICAvKiAgICBgYmxhY2tfc3BhbnMnLCBhbmQgYGJpdF90ZXN0JyBhbmQgYGJpdF9zZXQnIGluIHRoZSBjYXNlIG9mIGEgICAgICAgKi8KKyAgLyogICAgbW9ub2Nocm9tZSBiaXRtYXAuICBUaGlzIGFsbG93cyBkaXJlY3QgY29tcG9zaXRpb24gb3ZlciBhICAgICAgICAgICovCisgIC8qICAgIHByZS1leGlzdGluZyBiaXRtYXAgdGhyb3VnaCB1c2VyLXByb3ZpZGVkIGNhbGxiYWNrcyB0byBwZXJmb3JtIHRoZSAqLworICAvKiAgICBzcGFuIGRyYXdpbmcvY29tcG9zaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgdGhhdCB0aGUgYGJpdF90ZXN0JyBhbmQgYGJpdF9zZXQnIGNhbGxiYWNrcyBhcmUgcmVxdWlyZWQgd2hlbiAqLworICAvKiAgICByZW5kZXJpbmcgYSBtb25vY2hyb21lIGJpdG1hcCwgYXMgdGhleSBhcmUgY3J1Y2lhbCB0byBpbXBsZW1lbnQgICAgKi8KKyAgLyogICAgY29ycmVjdCBkcm9wLW91dCBjb250cm9sIGFzIGRlZmluZWQgaW4gdGhlIFRydWVUeXBlIHNwZWNpZmljYXRpb24uICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfUmFzdGVyX1BhcmFtc18KKyAgeworICAgIGNvbnN0IEZUX0JpdG1hcCogICAgICAgIHRhcmdldDsKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICBzb3VyY2U7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7CisgICAgRlRfU3BhbkZ1bmMgICAgICAgICAgICAgZ3JheV9zcGFuczsKKyAgICBGVF9TcGFuRnVuYyAgICAgICAgICAgICBibGFja19zcGFuczsgIC8qIGRvZXNuJ3Qgd29yayEgKi8KKyAgICBGVF9SYXN0ZXJfQml0VGVzdF9GdW5jICBiaXRfdGVzdDsgICAgIC8qIGRvZXNuJ3Qgd29yayEgKi8KKyAgICBGVF9SYXN0ZXJfQml0U2V0X0Z1bmMgICBiaXRfc2V0OyAgICAgIC8qIGRvZXNuJ3Qgd29yayEgKi8KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICB1c2VyOworICAgIEZUX0JCb3ggICAgICAgICAgICAgICAgIGNsaXBfYm94OworCisgIH0gRlRfUmFzdGVyX1BhcmFtczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Jhc3Rlcl9OZXdGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCB0byBjcmVhdGUgYSBuZXcgcmFzdGVyIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSA6OiBBIGhhbmRsZSB0byB0aGUgbWVtb3J5IGFsbG9jYXRvci4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3RlciA6OiBBIGhhbmRsZSB0byB0aGUgbmV3IHJhc3RlciBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBgbWVtb3J5JyBwYXJhbWV0ZXIgaXMgYSB0eXBlbGVzcyBwb2ludGVyIGluIG9yZGVyIHRvIGF2b2lkICAgICAqLworICAvKiAgICB1bi13YW50ZWQgZGVwZW5kZW5jaWVzIG9uIHRoZSByZXN0IG9mIHRoZSBGcmVlVHlwZSBjb2RlLiAgSW4gICAgICAgKi8KKyAgLyogICAgcHJhY3RpY2UsIGl0IGlzIGFuIEBGVF9NZW1vcnkgb2JqZWN0LCBpLmUuLCBhIGhhbmRsZSB0byB0aGUgICAgICAgICovCisgIC8qICAgIHN0YW5kYXJkIEZyZWVUeXBlIG1lbW9yeSBhbGxvY2F0b3IuICBIb3dldmVyLCB0aGlzIGZpZWxkIGNhbiBiZSAgICAqLworICAvKiAgICBjb21wbGV0ZWx5IGlnbm9yZWQgYnkgYSBnaXZlbiByYXN0ZXIgaW1wbGVtZW50YXRpb24uICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgaW50CisgICgqRlRfUmFzdGVyX05ld0Z1bmMpKCB2b2lkKiAgICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9SYXN0ZXIqICByYXN0ZXIgKTsKKworI2RlZmluZSBGVF9SYXN0ZXJfTmV3X0Z1bmMgIEZUX1Jhc3Rlcl9OZXdGdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYXN0ZXJfRG9uZUZ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGZ1bmN0aW9uIHVzZWQgdG8gZGVzdHJveSBhIGdpdmVuIHJhc3RlciBvYmplY3QuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYXN0ZXIgOjogQSBoYW5kbGUgdG8gdGhlIHJhc3RlciBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1Jhc3Rlcl9Eb25lRnVuYykoIEZUX1Jhc3RlciAgcmFzdGVyICk7CisKKyNkZWZpbmUgRlRfUmFzdGVyX0RvbmVfRnVuYyAgRlRfUmFzdGVyX0RvbmVGdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYXN0ZXJfUmVzZXRGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBwcm92aWRlcyBhbiBhcmVhIG9mIG1lbW9yeSBjYWxsZWQgdGhlIGByZW5kZXIgcG9vbCcsICAgICAgKi8KKyAgLyogICAgYXZhaWxhYmxlIHRvIGFsbCByZWdpc3RlcmVkIHJhc3RlcnMuICBUaGlzIHBvb2wgY2FuIGJlIGZyZWVseSB1c2VkICovCisgIC8qICAgIGR1cmluZyBhIGdpdmVuIHNjYW4tY29udmVyc2lvbiBidXQgaXMgc2hhcmVkIGJ5IGFsbCByYXN0ZXJzLiAgSXRzICAqLworICAvKiAgICBjb250ZW50IGlzIHRodXMgdHJhbnNpZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGVhY2ggdGltZSB0aGUgcmVuZGVyIHBvb2wgY2hhbmdlcywgb3IganVzdCAqLworICAvKiAgICBhZnRlciBhIG5ldyByYXN0ZXIgb2JqZWN0IGlzIGNyZWF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYXN0ZXIgICAgOjogQSBoYW5kbGUgdG8gdGhlIG5ldyByYXN0ZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBvb2xfYmFzZSA6OiBUaGUgYWRkcmVzcyBpbiBtZW1vcnkgb2YgdGhlIHJlbmRlciBwb29sLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcG9vbF9zaXplIDo6IFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSByZW5kZXIgcG9vbC4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmFzdGVycyBjYW4gaWdub3JlIHRoZSByZW5kZXIgcG9vbCBhbmQgcmVseSBvbiBkeW5hbWljIG1lbW9yeSAgICAgICovCisgIC8qICAgIGFsbG9jYXRpb24gaWYgdGhleSB3YW50IHRvIChhIGhhbmRsZSB0byB0aGUgbWVtb3J5IGFsbG9jYXRvciBpcyAgICAqLworICAvKiAgICBwYXNzZWQgdG8gdGhlIHJhc3RlciBjb25zdHJ1Y3RvcikuICBIb3dldmVyLCB0aGlzIGlzIG5vdCAgICAgICAgICAgKi8KKyAgLyogICAgcmVjb21tZW5kZWQgZm9yIGVmZmljaWVuY3kgcHVycG9zZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9SYXN0ZXJfUmVzZXRGdW5jKSggRlRfUmFzdGVyICAgICAgIHJhc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogIHBvb2xfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgIHBvb2xfc2l6ZSApOworCisjZGVmaW5lIEZUX1Jhc3Rlcl9SZXNldF9GdW5jICBGVF9SYXN0ZXJfUmVzZXRGdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYXN0ZXJfU2V0TW9kZUZ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGlzIGEgZ2VuZXJpYyBmYWNpbGl0eSB0byBjaGFuZ2UgbW9kZXMgb3IgYXR0cmlidXRlcyAgKi8KKyAgLyogICAgaW4gYSBnaXZlbiByYXN0ZXIuICBUaGlzIGNhbiBiZSB1c2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIG9yICAgICovCisgIC8qICAgIHNpbXBseSB0byBhbGxvdyBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBgZmVhdHVyZXMnIGluIGEgZ2l2ZW4gICAgICAqLworICAvKiAgICByYXN0ZXIgbW9kdWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYXN0ZXIgOjogQSBoYW5kbGUgdG8gdGhlIG5ldyByYXN0ZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZGUgICA6OiBBIDQtYnl0ZSB0YWcgdXNlZCB0byBuYW1lIHRoZSBtb2RlIG9yIHByb3BlcnR5LiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYXJncyAgIDo6IEEgcG9pbnRlciB0byB0aGUgbmV3IG1vZGUvcHJvcGVydHkgdG8gdXNlLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGludAorICAoKkZUX1Jhc3Rlcl9TZXRNb2RlRnVuYykoIEZUX1Jhc3RlciAgICAgIHJhc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgIGFyZ3MgKTsKKworI2RlZmluZSBGVF9SYXN0ZXJfU2V0X01vZGVfRnVuYyAgRlRfUmFzdGVyX1NldE1vZGVGdW5jCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SYXN0ZXJfUmVuZGVyRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbnZva2UgYSBnaXZlbiByYXN0ZXIgdG8gc2Nhbi1jb252ZXJ0IGEgZ2l2ZW4gZ2x5cGggaW1hZ2UgaW50byBhICAgKi8KKyAgLyogICAgdGFyZ2V0IGJpdG1hcC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmFzdGVyIDo6IEEgaGFuZGxlIHRvIHRoZSByYXN0ZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXJhbXMgOjogQSBwb2ludGVyIHRvIGFuIEBGVF9SYXN0ZXJfUGFyYW1zIHN0cnVjdHVyZSB1c2VkIHRvICAgICAgKi8KKyAgLyogICAgICAgICAgICAgIHN0b3JlIHRoZSByZW5kZXJpbmcgcGFyYW1ldGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGV4YWN0IGZvcm1hdCBvZiB0aGUgc291cmNlIGltYWdlIGRlcGVuZHMgb24gdGhlIHJhc3RlcidzIGdseXBoICovCisgIC8qICAgIGZvcm1hdCBkZWZpbmVkIGluIGl0cyBARlRfUmFzdGVyX0Z1bmNzIHN0cnVjdHVyZS4gIEl0IGNhbiBiZSBhbiAgICAqLworICAvKiAgICBARlRfT3V0bGluZSBvciBhbnl0aGluZyBlbHNlIGluIG9yZGVyIHRvIHN1cHBvcnQgYSBsYXJnZSBhcnJheSBvZiAgKi8KKyAgLyogICAgZ2x5cGggZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RlIGFsc28gdGhhdCB0aGUgcmVuZGVyIGZ1bmN0aW9uIGNhbiBmYWlsIGFuZCByZXR1cm4gYSAgICAgICAgICAgKi8KKyAgLyogICAgYEZUX0Vycl9VbmltcGxlbWVudGVkX0ZlYXR1cmUnIGVycm9yIGNvZGUgaWYgdGhlIHJhc3RlciB1c2VkIGRvZXMgICovCisgIC8qICAgIG5vdCBzdXBwb3J0IGRpcmVjdCBjb21wb3NpdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgWFhYOiBGb3Igbm93LCB0aGUgc3RhbmRhcmQgcmFzdGVyIGRvZXNuJ3Qgc3VwcG9ydCBkaXJlY3QgICAgICAgICAgICovCisgIC8qICAgICAgICAgY29tcG9zaXRpb24gYnV0IHRoaXMgc2hvdWxkIGNoYW5nZSBmb3IgdGhlIGZpbmFsIHJlbGVhc2UgKHNlZSAqLworICAvKiAgICAgICAgIHRoZSBmaWxlcyBgZGVtb3Mvc3JjL2Z0Z3JheXMuYycgYW5kIGBkZW1vcy9zcmMvZnRncmF5czIuYycgICAgKi8KKyAgLyogICAgICAgICBmb3IgZXhhbXBsZXMgb2YgZGlzdGluY3QgaW1wbGVtZW50YXRpb25zIHdoaWNoIHN1cHBvcnQgZGlyZWN0ICovCisgIC8qICAgICAgICAgY29tcG9zaXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBpbnQKKyAgKCpGVF9SYXN0ZXJfUmVuZGVyRnVuYykoIEZUX1Jhc3RlciAgICAgICAgICAgICAgICByYXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9SYXN0ZXJfUGFyYW1zKiAgcGFyYW1zICk7CisKKyNkZWZpbmUgRlRfUmFzdGVyX1JlbmRlcl9GdW5jICBGVF9SYXN0ZXJfUmVuZGVyRnVuYworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmFzdGVyX0Z1bmNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBBIHN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIGEgZ2l2ZW4gcmFzdGVyIGNsYXNzIHRvIHRoZSBsaWJyYXJ5LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfZm9ybWF0ICA6OiBUaGUgc3VwcG9ydGVkIGdseXBoIGZvcm1hdCBmb3IgdGhpcyByYXN0ZXIuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYXN0ZXJfbmV3ICAgIDo6IFRoZSByYXN0ZXIgY29uc3RydWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3Rlcl9yZXNldCAgOjogVXNlZCB0byByZXNldCB0aGUgcmVuZGVyIHBvb2wgd2l0aGluIHRoZSByYXN0ZXIuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmFzdGVyX3JlbmRlciA6OiBBIGZ1bmN0aW9uIHRvIHJlbmRlciBhIGdseXBoIGludG8gYSBnaXZlbiBiaXRtYXAuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYXN0ZXJfZG9uZSAgIDo6IFRoZSByYXN0ZXIgZGVzdHJ1Y3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9SYXN0ZXJfRnVuY3NfCisgIHsKKyAgICBGVF9HbHlwaF9Gb3JtYXQgICAgICAgIGdseXBoX2Zvcm1hdDsKKyAgICBGVF9SYXN0ZXJfTmV3RnVuYyAgICAgIHJhc3Rlcl9uZXc7CisgICAgRlRfUmFzdGVyX1Jlc2V0RnVuYyAgICByYXN0ZXJfcmVzZXQ7CisgICAgRlRfUmFzdGVyX1NldE1vZGVGdW5jICByYXN0ZXJfc2V0X21vZGU7CisgICAgRlRfUmFzdGVyX1JlbmRlckZ1bmMgICByYXN0ZXJfcmVuZGVyOworICAgIEZUX1Jhc3Rlcl9Eb25lRnVuYyAgICAgcmFzdGVyX2RvbmU7CisKKyAgfSBGVF9SYXN0ZXJfRnVuY3M7CisKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRJTUFHRV9IX18gKi8KKworCisvKiBFTkQgKi8KKworCisvKiBMb2NhbCBWYXJpYWJsZXM6ICovCisvKiBjb2Rpbmc6IHV0Zi04ICAgICovCisvKiBFbmQ6ICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGluY3JlbS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRpbmNyZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTMwMTVlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRpbmNyZW0uaApAQCAtMCwwICsxLDM1MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRpbmNyZW0uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIGluY3JlbWVudGFsIGxvYWRpbmcgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLCAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRJTkNSRU1fSF9fCisjZGVmaW5lIF9fRlRJTkNSRU1fSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHNlY3Rpb246CisgICAqICAgIGluY3JlbWVudGFsCisgICAqCisgICAqIEB0aXRsZToKKyAgICogICAgSW5jcmVtZW50YWwgTG9hZGluZworICAgKgorICAgKiBAYWJzdHJhY3Q6CisgICAqICAgIEN1c3RvbSBHbHlwaCBMb2FkaW5nLgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHZhcmlvdXMgZnVuY3Rpb25zIHVzZWQgdG8gcGVyZm9ybSBzby1jYWxsZWQKKyAgICogICBgaW5jcmVtZW50YWwnIGdseXBoIGxvYWRpbmcuICBUaGlzIGlzIGEgbW9kZSB3aGVyZSBhbGwgZ2x5cGhzIGxvYWRlZAorICAgKiAgIGZyb20gYSBnaXZlbiBARlRfRmFjZSBhcmUgcHJvdmlkZWQgYnkgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiwKKyAgICoKKyAgICogICBBcGFydCBmcm9tIHRoYXQsIGFsbCBvdGhlciB0YWJsZXMgYXJlIGxvYWRlZCBub3JtYWxseSBmcm9tIHRoZSBmb250CisgICAqICAgZmlsZS4gIFRoaXMgbW9kZSBpcyB1c2VmdWwgd2hlbiBGcmVlVHlwZSBpcyB1c2VkIHdpdGhpbiBhbm90aGVyCisgICAqICAgZW5naW5lLCBlLmcuLCBhIFBvc3RTY3JpcHQgSW1hZ2luZyBQcm9jZXNzb3IuCisgICAqCisgICAqICAgVG8gZW5hYmxlIHRoaXMgbW9kZSwgeW91IG11c3QgdXNlIEBGVF9PcGVuX0ZhY2UsIHBhc3NpbmcgYW4KKyAgICogICBARlRfUGFyYW1ldGVyIHdpdGggdGhlIEBGVF9QQVJBTV9UQUdfSU5DUkVNRU5UQUwgdGFnIGFuZCBhbgorICAgKiAgIEBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2UgdmFsdWUuICBTZWUgdGhlIGNvbW1lbnRzIGZvcgorICAgKiAgIEBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VSZWMgZm9yIGFuIGV4YW1wbGUuCisgICAqCisgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBGVF9JbmNyZW1lbnRhbAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQW4gb3BhcXVlIHR5cGUgZGVzY3JpYmluZyBhIHVzZXItcHJvdmlkZWQgb2JqZWN0IHVzZWQgdG8gaW1wbGVtZW50CisgICAqICAgYGluY3JlbWVudGFsJyBnbHlwaCBsb2FkaW5nIHdpdGhpbiBGcmVlVHlwZS4gIFRoaXMgaXMgdXNlZCB0byBzdXBwb3J0CisgICAqICAgZW1iZWRkZWQgZm9udHMgaW4gY2VydGFpbiBlbnZpcm9ubWVudHMgKGUuZy4sIFBvc3RTY3JpcHQgaW50ZXJwcmV0ZXJzKSwKKyAgICogICB3aGVyZSB0aGUgZ2x5cGggZGF0YSBpc24ndCBpbiB0aGUgZm9udCBmaWxlLCBvciBtdXN0IGJlIG92ZXJyaWRkZW4gYnkKKyAgICogICBkaWZmZXJlbnQgdmFsdWVzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBJdCBpcyB1cCB0byBjbGllbnQgYXBwbGljYXRpb25zIHRvIGNyZWF0ZSBhbmQgaW1wbGVtZW50IEBGVF9JbmNyZW1lbnRhbAorICAgKiAgIG9iamVjdHMsIGFzIGxvbmcgYXMgdGhleSBwcm92aWRlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG1ldGhvZHMKKyAgICogICBARlRfSW5jcmVtZW50YWxfR2V0R2x5cGhEYXRhRnVuYywgQEZUX0luY3JlbWVudGFsX0ZyZWVHbHlwaERhdGFGdW5jCisgICAqICAgYW5kIEBGVF9JbmNyZW1lbnRhbF9HZXRHbHlwaE1ldHJpY3NGdW5jLgorICAgKgorICAgKiAgIFNlZSB0aGUgZGVzY3JpcHRpb24gb2YgQEZUX0luY3JlbWVudGFsX0ludGVyZmFjZVJlYyB0byB1bmRlcnN0YW5kIGhvdworICAgKiAgIHRvIHVzZSBpbmNyZW1lbnRhbCBvYmplY3RzIHdpdGggRnJlZVR5cGUuCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9JbmNyZW1lbnRhbFJlY18qICBGVF9JbmNyZW1lbnRhbDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHN0cnVjdDoKKyAgICogICBGVF9JbmNyZW1lbnRhbF9NZXRyaWNzUmVjCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIHNtYWxsIHN0cnVjdHVyZSB1c2VkIHRvIGNvbnRhaW4gdGhlIGJhc2ljIGdseXBoIG1ldHJpY3MgcmV0dXJuZWQKKyAgICogICBieSB0aGUgQEZUX0luY3JlbWVudGFsX0dldEdseXBoTWV0cmljc0Z1bmMgbWV0aG9kLgorICAgKgorICAgKiBAZmllbGRzOgorICAgKiAgIGJlYXJpbmdfeCA6OgorICAgKiAgICAgTGVmdCBiZWFyaW5nLCBpbiBmb250IHVuaXRzLgorICAgKgorICAgKiAgIGJlYXJpbmdfeSA6OgorICAgKiAgICAgVG9wIGJlYXJpbmcsIGluIGZvbnQgdW5pdHMuCisgICAqCisgICAqICAgYWR2YW5jZSA6OgorICAgKiAgICAgSG9yaXpvbnRhbCBjb21wb25lbnQgb2YgZ2x5cGggYWR2YW5jZSwgaW4gZm9udCB1bml0cy4KKyAgICoKKyAgICogICBhZHZhbmNlX3YgOjoKKyAgICogICAgIFZlcnRpY2FsIGNvbXBvbmVudCBvZiBnbHlwaCBhZHZhbmNlLCBpbiBmb250IHVuaXRzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGVzZSBjb3JyZXNwb25kIHRvIGhvcml6b250YWwgb3IgdmVydGljYWwgbWV0cmljcyBkZXBlbmRpbmcgb24gdGhlCisgICAqICAgdmFsdWUgb2YgdGhlIGB2ZXJ0aWNhbCcgYXJndW1lbnQgdG8gdGhlIGZ1bmN0aW9uCisgICAqICAgQEZUX0luY3JlbWVudGFsX0dldEdseXBoTWV0cmljc0Z1bmMuCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfSW5jcmVtZW50YWxfTWV0cmljc1JlY18KKyAgeworICAgIEZUX0xvbmcgIGJlYXJpbmdfeDsKKyAgICBGVF9Mb25nICBiZWFyaW5nX3k7CisgICAgRlRfTG9uZyAgYWR2YW5jZTsKKyAgICBGVF9Mb25nICBhZHZhbmNlX3Y7ICAgICAvKiBzaW5jZSAyLjMuMTIgKi8KKworICB9IEZUX0luY3JlbWVudGFsX01ldHJpY3NSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRfSW5jcmVtZW50YWxfTWV0cmljcworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBoYW5kbGUgdG8gYW4gQEZUX0luY3JlbWVudGFsX01ldHJpY3NSZWMgc3RydWN0dXJlLgorICAgKgorICAgKi8KKyAgIHR5cGVkZWYgc3RydWN0IEZUX0luY3JlbWVudGFsX01ldHJpY3NSZWNfKiAgRlRfSW5jcmVtZW50YWxfTWV0cmljczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHR5cGU6CisgICAqICAgRlRfSW5jcmVtZW50YWxfR2V0R2x5cGhEYXRhRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBmdW5jdGlvbiBjYWxsZWQgYnkgRnJlZVR5cGUgdG8gYWNjZXNzIGEgZ2l2ZW4gZ2x5cGgncyBkYXRhIGJ5dGVzCisgICAqICAgZHVyaW5nIEBGVF9Mb2FkX0dseXBoIG9yIEBGVF9Mb2FkX0NoYXIgaWYgaW5jcmVtZW50YWwgbG9hZGluZyBpcworICAgKiAgIGVuYWJsZWQuCisgICAqCisgICAqICAgTm90ZSB0aGF0IHRoZSBmb3JtYXQgb2YgdGhlIGdseXBoJ3MgZGF0YSBieXRlcyBkZXBlbmRzIG9uIHRoZSBmb250CisgICAqICAgZmlsZSBmb3JtYXQuICBGb3IgVHJ1ZVR5cGUsIGl0IG11c3QgY29ycmVzcG9uZCB0byB0aGUgcmF3IGJ5dGVzIHdpdGhpbgorICAgKiAgIHRoZSBgZ2x5ZicgdGFibGUuICBGb3IgUG9zdFNjcmlwdCBmb3JtYXRzLCBpdCBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlCisgICAqICAgKnVuZW5jcnlwdGVkKiBjaGFyc3RyaW5nIGJ5dGVzLCB3aXRob3V0IGFueSBgbGVuSVYnIGhlYWRlci4gIEl0IGlzCisgICAqICAgdW5kZWZpbmVkIGZvciBhbnkgb3RoZXIgZm9ybWF0LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaW5jcmVtZW50YWwgOjoKKyAgICogICAgIEhhbmRsZSB0byBhbiBvcGFxdWUgQEZUX0luY3JlbWVudGFsIGhhbmRsZSBwcm92aWRlZCBieSB0aGUgY2xpZW50CisgICAqICAgICBhcHBsaWNhdGlvbi4KKyAgICoKKyAgICogICBnbHlwaF9pbmRleCA6OgorICAgKiAgICAgSW5kZXggb2YgcmVsZXZhbnQgZ2x5cGguCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgYWRhdGEgOjoKKyAgICogICAgIEEgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIHJldHVybmVkIGdseXBoIGRhdGEgYnl0ZXMgKHdoaWNoIHdpbGwgYmUKKyAgICogICAgIGFjY2Vzc2VkIGFzIGEgcmVhZC1vbmx5IGJ5dGUgYmxvY2spLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBzdWNjZXNzZnVsbHkgdGhlIG1ldGhvZAorICAgKiAgIEBGVF9JbmNyZW1lbnRhbF9GcmVlR2x5cGhEYXRhRnVuYyB3aWxsIGJlIGNhbGxlZCBsYXRlciB0byByZWxlYXNlCisgICAqICAgdGhlIGRhdGEgYnl0ZXMuCisgICAqCisgICAqICAgTmVzdGVkIGNhbGxzIHRvIEBGVF9JbmNyZW1lbnRhbF9HZXRHbHlwaERhdGFGdW5jIGNhbiBoYXBwZW4gZm9yCisgICAqICAgY29tcG91bmQgZ2x5cGhzLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0luY3JlbWVudGFsX0dldEdseXBoRGF0YUZ1bmMpKCBGVF9JbmNyZW1lbnRhbCAgaW5jcmVtZW50YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRGF0YSogICAgICAgIGFkYXRhICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUX0luY3JlbWVudGFsX0ZyZWVHbHlwaERhdGFGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGZ1bmN0aW9uIHVzZWQgdG8gcmVsZWFzZSB0aGUgZ2x5cGggZGF0YSBieXRlcyByZXR1cm5lZCBieSBhCisgICAqICAgc3VjY2Vzc2Z1bCBjYWxsIHRvIEBGVF9JbmNyZW1lbnRhbF9HZXRHbHlwaERhdGFGdW5jLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaW5jcmVtZW50YWwgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIGFuIG9wYXF1ZSBARlRfSW5jcmVtZW50YWwgaGFuZGxlIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQKKyAgICogICAgIGFwcGxpY2F0aW9uLgorICAgKgorICAgKiAgIGRhdGEgOjoKKyAgICogICAgIEEgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIGdseXBoIGRhdGEgYnl0ZXMgKHdoaWNoIHdpbGwgYmUgYWNjZXNzZWQKKyAgICogICAgIGFzIGEgcmVhZC1vbmx5IGJ5dGUgYmxvY2spLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfSW5jcmVtZW50YWxfRnJlZUdseXBoRGF0YUZ1bmMpKCBGVF9JbmNyZW1lbnRhbCAgaW5jcmVtZW50YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9EYXRhKiAgICAgICAgZGF0YSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBGVF9JbmNyZW1lbnRhbF9HZXRHbHlwaE1ldHJpY3NGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGZ1bmN0aW9uIHVzZWQgdG8gcmV0cmlldmUgdGhlIGJhc2ljIG1ldHJpY3Mgb2YgYSBnaXZlbiBnbHlwaCBpbmRleAorICAgKiAgIGJlZm9yZSBhY2Nlc3NpbmcgaXRzIGRhdGEuICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlLCBpbiBjZXJ0YWluCisgICAqICAgZm9ybWF0cyBsaWtlIFRydWVUeXBlLCB0aGUgbWV0cmljcyBhcmUgc3RvcmVkIGluIGEgZGlmZmVyZW50IHBsYWNlIGZyb20KKyAgICogICB0aGUgZ2x5cGggaW1hZ2VzIHByb3Blci4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGluY3JlbWVudGFsIDo6CisgICAqICAgICBBIGhhbmRsZSB0byBhbiBvcGFxdWUgQEZUX0luY3JlbWVudGFsIGhhbmRsZSBwcm92aWRlZCBieSB0aGUgY2xpZW50CisgICAqICAgICBhcHBsaWNhdGlvbi4KKyAgICoKKyAgICogICBnbHlwaF9pbmRleCA6OgorICAgKiAgICAgSW5kZXggb2YgcmVsZXZhbnQgZ2x5cGguCisgICAqCisgICAqICAgdmVydGljYWwgOjoKKyAgICogICAgIElmIHRydWUsIHJldHVybiB2ZXJ0aWNhbCBtZXRyaWNzLgorICAgKgorICAgKiAgIGFtZXRyaWNzIDo6CisgICAqICAgICBUaGlzIHBhcmFtZXRlciBpcyB1c2VkIGZvciBib3RoIGlucHV0IGFuZCBvdXRwdXQuCisgICAqICAgICBUaGUgb3JpZ2luYWwgZ2x5cGggbWV0cmljcywgaWYgYW55LCBpbiBmb250IHVuaXRzLiAgSWYgbWV0cmljcyBhcmUKKyAgICogICAgIG5vdCBhdmFpbGFibGUgYWxsIHRoZSB2YWx1ZXMgbXVzdCBiZSBzZXQgdG8gemVyby4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICBhbWV0cmljcyA6OgorICAgKiAgICAgVGhlIHJlcGxhY2VtZW50IGdseXBoIG1ldHJpY3MgaW4gZm9udCB1bml0cy4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9JbmNyZW1lbnRhbF9HZXRHbHlwaE1ldHJpY3NGdW5jKQorICAgICAgICAgICAgICAgICAgICAgICggRlRfSW5jcmVtZW50YWwgICAgICAgICAgICAgIGluY3JlbWVudGFsLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW5jcmVtZW50YWxfTWV0cmljc1JlYyAgKmFtZXRyaWNzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHN0cnVjdDoKKyAgICogICBGVF9JbmNyZW1lbnRhbF9GdW5jc1JlYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSB0YWJsZSBvZiBmdW5jdGlvbnMgZm9yIGFjY2Vzc2luZyBmb250cyB0aGF0IGxvYWQgZGF0YQorICAgKiAgIGluY3JlbWVudGFsbHkuICBVc2VkIGluIEBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VSZWMuCisgICAqCisgICAqIEBmaWVsZHM6CisgICAqICAgZ2V0X2dseXBoX2RhdGEgOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBnZXQgZ2x5cGggZGF0YS4gIE11c3Qgbm90IGJlIG51bGwuCisgICAqCisgICAqICAgZnJlZV9nbHlwaF9kYXRhIDo6CisgICAqICAgICBUaGUgZnVuY3Rpb24gdG8gcmVsZWFzZSBnbHlwaCBkYXRhLiAgTXVzdCBub3QgYmUgbnVsbC4KKyAgICoKKyAgICogICBnZXRfZ2x5cGhfbWV0cmljcyA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIGdldCBnbHlwaCBtZXRyaWNzLiAgTWF5IGJlIG51bGwgaWYgdGhlIGZvbnQgZG9lcworICAgKiAgICAgbm90IHByb3ZpZGUgb3ZlcnJpZGluZyBnbHlwaCBtZXRyaWNzLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0luY3JlbWVudGFsX0Z1bmNzUmVjXworICB7CisgICAgRlRfSW5jcmVtZW50YWxfR2V0R2x5cGhEYXRhRnVuYyAgICAgZ2V0X2dseXBoX2RhdGE7CisgICAgRlRfSW5jcmVtZW50YWxfRnJlZUdseXBoRGF0YUZ1bmMgICAgZnJlZV9nbHlwaF9kYXRhOworICAgIEZUX0luY3JlbWVudGFsX0dldEdseXBoTWV0cmljc0Z1bmMgIGdldF9nbHlwaF9tZXRyaWNzOworCisgIH0gRlRfSW5jcmVtZW50YWxfRnVuY3NSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlUmVjCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIHN0cnVjdHVyZSB0byBiZSB1c2VkIHdpdGggQEZUX09wZW5fRmFjZSB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyCisgICAqICAgd2FudHMgdG8gc3VwcG9ydCBpbmNyZW1lbnRhbCBnbHlwaCBsb2FkaW5nLiAgWW91IHNob3VsZCB1c2UgaXQgd2l0aAorICAgKiAgIEBGVF9QQVJBTV9UQUdfSU5DUkVNRU5UQUwgYXMgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgorICAgKgorICAgKiAgICAgeworICAgKiAgICAgICBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VSZWMgIGluY19pbnQ7CisgICAqICAgICAgIEZUX1BhcmFtZXRlciAgICAgICAgICAgICAgICAgcGFyYW1ldGVyOworICAgKiAgICAgICBGVF9PcGVuX0FyZ3MgICAgICAgICAgICAgICAgIG9wZW5fYXJnczsKKyAgICoKKyAgICoKKyAgICogICAgICAgLy8gc2V0IHVwIGluY3JlbWVudGFsIGRlc2NyaXB0b3IKKyAgICogICAgICAgaW5jX2ludC5mdW5jcyAgPSBteV9mdW5jczsKKyAgICogICAgICAgaW5jX2ludC5vYmplY3QgPSBteV9vYmplY3Q7CisgICAqCisgICAqICAgICAgIC8vIHNldCB1cCBvcHRpb25hbCBwYXJhbWV0ZXIKKyAgICogICAgICAgcGFyYW1ldGVyLnRhZyAgPSBGVF9QQVJBTV9UQUdfSU5DUkVNRU5UQUw7CisgICAqICAgICAgIHBhcmFtZXRlci5kYXRhID0gJmluY19pbnQ7CisgICAqCisgICAqICAgICAgIC8vIHNldCB1cCBGVF9PcGVuX0FyZ3Mgc3RydWN0dXJlCisgICAqICAgICAgIG9wZW5fYXJncy5mbGFncyAgICAgID0gRlRfT1BFTl9QQVRITkFNRSB8IEZUX09QRU5fUEFSQU1TOworICAgKiAgICAgICBvcGVuX2FyZ3MucGF0aG5hbWUgICA9IG15X2ZvbnRfcGF0aG5hbWU7CisgICAqICAgICAgIG9wZW5fYXJncy5udW1fcGFyYW1zID0gMTsKKyAgICogICAgICAgb3Blbl9hcmdzLnBhcmFtcyAgICAgPSAmcGFyYW1ldGVyOyAvLyB3ZSB1c2Ugb25lIG9wdGlvbmFsIGFyZ3VtZW50CisgICAqCisgICAqICAgICAgIC8vIG9wZW4gdGhlIGZvbnQKKyAgICogICAgICAgZXJyb3IgPSBGVF9PcGVuX0ZhY2UoIGxpYnJhcnksICZvcGVuX2FyZ3MsIGluZGV4LCAmZmFjZSApOworICAgKiAgICAgICAuLi4KKyAgICogICAgIH0KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VSZWNfCisgIHsKKyAgICBjb25zdCBGVF9JbmNyZW1lbnRhbF9GdW5jc1JlYyogIGZ1bmNzOworICAgIEZUX0luY3JlbWVudGFsICAgICAgICAgICAgICAgICAgb2JqZWN0OworCisgIH0gRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAdHlwZToKKyAgICogICBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2UKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgcG9pbnRlciB0byBhbiBARlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlUmVjIHN0cnVjdHVyZS4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlUmVjKiAgIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGNvbnN0YW50OgorICAgKiAgIEZUX1BBUkFNX1RBR19JTkNSRU1FTlRBTAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBjb25zdGFudCB1c2VkIGFzIHRoZSB0YWcgb2YgQEZUX1BhcmFtZXRlciBzdHJ1Y3R1cmVzIHRvIGluZGljYXRlCisgICAqICAgYW4gaW5jcmVtZW50YWwgbG9hZGluZyBvYmplY3QgdG8gYmUgdXNlZCBieSBGcmVlVHlwZS4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX1BBUkFNX1RBR19JTkNSRU1FTlRBTCAgRlRfTUFLRV9UQUcoICdpJywgJ24nLCAnYycsICdyJyApCisKKyAgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVElOQ1JFTV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bGNkZmlsLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGxjZGZpbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MmY5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGxjZGZpbC5oCkBAIC0wLDAgKzEsMjUxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGxjZGZpbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgQVBJIGZvciBjb2xvciBmaWx0ZXJpbmcgb2Ygc3VicGl4ZWwgYml0bWFwIGdseXBocyAgICAgICAgICAgKi8KKy8qICAgIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRfTENEX0ZJTFRFUl9IX18KKyNkZWZpbmUgX19GVF9MQ0RfRklMVEVSX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzZWN0aW9uOgorICAgKiAgIGxjZF9maWx0ZXJpbmcKKyAgICoKKyAgICogQHRpdGxlOgorICAgKiAgIExDRCBGaWx0ZXJpbmcKKyAgICoKKyAgICogQGFic3RyYWN0OgorICAgKiAgIFJlZHVjZSBjb2xvciBmcmluZ2VzIG9mIExDRC1vcHRpbWl6ZWQgYml0bWFwcy4KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoZSBARlRfTGlicmFyeV9TZXRMY2RGaWx0ZXIgQVBJIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBsb3ctcGFzcworICAgKiAgIGZpbHRlciB3aGljaCBpcyB0aGVuIGFwcGxpZWQgdG8gTENELW9wdGltaXplZCBiaXRtYXBzIGdlbmVyYXRlZAorICAgKiAgIHRocm91Z2ggQEZUX1JlbmRlcl9HbHlwaC4gIFRoaXMgaXMgdXNlZnVsIHRvIHJlZHVjZSBjb2xvciBmcmluZ2VzCisgICAqICAgd2hpY2ggd291bGQgb2NjdXIgd2l0aCB1bmZpbHRlcmVkIHJlbmRlcmluZy4KKyAgICoKKyAgICogICBOb3RlIHRoYXQgbm8gZmlsdGVyIGlzIGFjdGl2ZSBieSBkZWZhdWx0LCBhbmQgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzCisgICAqICAgKm5vdCogaW1wbGVtZW50ZWQgaW4gZGVmYXVsdCBidWlsZHMgb2YgdGhlIGxpYnJhcnkuICBZb3UgbmVlZCB0bworICAgKiAgICNkZWZpbmUgRlRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9SRU5ERVJJTkcgaW4geW91ciBgZnRvcHRpb24uaCcgZmlsZQorICAgKiAgIGluIG9yZGVyIHRvIGFjdGl2YXRlIGl0LgorICAgKgorICAgKiAgIEZyZWVUeXBlIGdlbmVyYXRlcyBhbHBoYSBjb3ZlcmFnZSBtYXBzLCB3aGljaCBhcmUgbGluZWFyIGJ5IG5hdHVyZS4KKyAgICogICBGb3IgaW5zdGFuY2UsIHRoZSB2YWx1ZSAweDgwIGluIGJpdG1hcCByZXByZXNlbnRhdGlvbiBtZWFucyB0aGF0CisgICAqICAgKHdpdGhpbiBudW1lcmljYWwgcHJlY2lzaW9uKSAweDgwLzB4ZmYgZnJhY3Rpb24gb2YgdGhhdCBwaXhlbCBpcworICAgKiAgIGNvdmVyZWQgYnkgdGhlIGdseXBoJ3Mgb3V0bGluZS4gIFRoZSBibGVuZGluZyBmdW5jdGlvbiBmb3IgcGxhY2luZworICAgKiAgIHRleHQgb3ZlciBhIGJhY2tncm91bmQgaXMKKyAgICoKKyAgICogICB7CisgICAqICAgICBkc3QgPSBhbHBoYSAqIHNyYyArICgxIC0gYWxwaGEpICogZHN0ICAgICwKKyAgICogICB9CisgICAqCisgICAqICAgd2hpY2ggaXMga25vd24gYXMgT1ZFUi4gIEhvd2V2ZXIsIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG91dHB1dCBvZiB0aGUKKyAgICogICBPVkVSIG9wZXJhdG9yLCB0aGUgc291cmNlIGNvbG9ycyBzaG91bGQgZmlyc3QgYmUgdHJhbnNmb3JtZWQgdG8gYQorICAgKiAgIGxpbmVhciBjb2xvciBzcGFjZSwgdGhlbiBhbHBoYSBibGVuZGVkIGluIHRoYXQgc3BhY2UsIGFuZCB0cmFuc2Zvcm1lZAorICAgKiAgIGJhY2sgdG8gdGhlIG91dHB1dCBjb2xvciBzcGFjZS4KKyAgICoKKyAgICogICBXaGVuIGxpbmVhciBsaWdodCBibGVuZGluZyBpcyB1c2VkLCB0aGUgZGVmYXVsdCBGSVI1IGZpbHRlcmluZworICAgKiAgIHdlaWdodHMgKGFzIGdpdmVuIGJ5IEZUX0xDRF9GSUxURVJfREVGQVVMVCkgYXJlIG5vIGxvbmdlciBvcHRpbWFsLCBhcworICAgKiAgIHRoZXkgaGF2ZSBiZWVuIGRlc2lnbmVkIGZvciBibGFjayBvbiB3aGl0ZSByZW5kZXJpbmcgd2hpbGUgbGFja2luZworICAgKiAgIGdhbW1hIGNvcnJlY3Rpb24uICBUbyBwcmVzZXJ2ZSBjb2xvciBuZXV0cmFsaXR5LCB3ZWlnaHRzIGZvciBhIEZJUjUKKyAgICogICBmaWx0ZXIgc2hvdWxkIGJlIGNob3NlbiBhY2NvcmRpbmcgdG8gdHdvIGZyZWUgcGFyYW1ldGVycyBgYScgYW5kIGBjJywKKyAgICogICBhbmQgdGhlIEZJUiB3ZWlnaHRzIHNob3VsZCBiZQorICAgKgorICAgKiAgIHsKKyAgICogICAgIFthIC0gYywgYSArIGMsIDIgKiBhLCBhICsgYywgYSAtIGNdICAgIC4KKyAgICogICB9CisgICAqCisgICAqICAgVGhpcyBmb3JtdWxhIGdlbmVyYXRlcyBlcXVhbCB3ZWlnaHRzIGZvciBhbGwgdGhlIGNvbG9yIHByaW1hcmllcworICAgKiAgIGFjcm9zcyB0aGUgZmlsdGVyIGtlcm5lbCwgd2hpY2ggbWFrZXMgaXQgY29sb3JsZXNzLiAgT25lIHN1Z2dlc3RlZAorICAgKiAgIHNldCBvZiB3ZWlnaHRzIGlzCisgICAqCisgICAqICAgeworICAgKiAgICAgWzB4MTAsIDB4NTAsIDB4NjAsIDB4NTAsIDB4MTBdICAgICwKKyAgICogICB9CisgICAqCisgICAqICAgd2hlcmUgYGEnIGhhcyB2YWx1ZSAweDMwIGFuZCBgYicgdmFsdWUgMHgyMC4gIFRoZSB3ZWlnaHRzIGluIGZpbHRlcgorICAgKiAgIG1heSBoYXZlIGEgc3VtIGxhcmdlciB0aGFuIDB4MTAwLCB3aGljaCBpbmNyZWFzZXMgY29sb3JhdGlvbiBzbGlnaHRseQorICAgKiAgIGJ1dCBhbHNvIGltcHJvdmVzIGNvbnRyYXN0LgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBlbnVtOgorICAgKiAgIEZUX0xjZEZpbHRlcgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIHZhbHVlcyB0byBpZGVudGlmeSB2YXJpb3VzIHR5cGVzIG9mIExDRCBmaWx0ZXJzLgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIEZUX0xDRF9GSUxURVJfTk9ORSA6OgorICAgKiAgICAgRG8gbm90IHBlcmZvcm0gZmlsdGVyaW5nLiAgV2hlbiB1c2VkIHdpdGggc3VicGl4ZWwgcmVuZGVyaW5nLCB0aGlzCisgICAqICAgICByZXN1bHRzIGluIHNvbWV0aW1lcyBzZXZlcmUgY29sb3IgZnJpbmdlcy4KKyAgICoKKyAgICogICBGVF9MQ0RfRklMVEVSX0RFRkFVTFQgOjoKKyAgICogICAgIFRoZSBkZWZhdWx0IGZpbHRlciByZWR1Y2VzIGNvbG9yIGZyaW5nZXMgY29uc2lkZXJhYmx5LCBhdCB0aGUgY29zdAorICAgKiAgICAgb2YgYSBzbGlnaHQgYmx1cnJpbmVzcyBpbiB0aGUgb3V0cHV0LgorICAgKgorICAgKiAgIEZUX0xDRF9GSUxURVJfTElHSFQgOjoKKyAgICogICAgIFRoZSBsaWdodCBmaWx0ZXIgaXMgYSB2YXJpYW50IHRoYXQgcHJvZHVjZXMgbGVzcyBibHVycmluZXNzIGF0IHRoZQorICAgKiAgICAgY29zdCBvZiBzbGlnaHRseSBtb3JlIGNvbG9yIGZyaW5nZXMgdGhhbiB0aGUgZGVmYXVsdCBvbmUuICBJdCBtaWdodAorICAgKiAgICAgYmUgYmV0dGVyLCBkZXBlbmRpbmcgb24gdGFzdGUsIHlvdXIgbW9uaXRvciwgb3IgeW91ciBwZXJzb25hbCB2aXNpb24uCisgICAqCisgICAqICAgRlRfTENEX0ZJTFRFUl9MRUdBQ1kgOjoKKyAgICogICAgIFRoaXMgZmlsdGVyIGNvcnJlc3BvbmRzIHRvIHRoZSBvcmlnaW5hbCBsaWJYZnQgY29sb3IgZmlsdGVyLiAgSXQKKyAgICogICAgIHByb3ZpZGVzIGhpZ2ggY29udHJhc3Qgb3V0cHV0IGJ1dCBjYW4gZXhoaWJpdCByZWFsbHkgYmFkIGNvbG9yCisgICAqICAgICBmcmluZ2VzIGlmIGdseXBocyBhcmUgbm90IGV4dHJlbWVseSB3ZWxsIGhpbnRlZCB0byB0aGUgcGl4ZWwgZ3JpZC4KKyAgICogICAgIEluIG90aGVyIHdvcmRzLCBpdCBvbmx5IHdvcmtzIHdlbGwgaWYgdGhlIFRydWVUeXBlIGJ5dGVjb2RlCisgICAqICAgICBpbnRlcnByZXRlciBpcyBlbmFibGVkICphbmQqIGhpZ2gtcXVhbGl0eSBoaW50ZWQgZm9udHMgYXJlIHVzZWQuCisgICAqCisgICAqICAgICBUaGlzIGZpbHRlciBpcyBvbmx5IHByb3ZpZGVkIGZvciBjb21wYXJpc29uIHB1cnBvc2VzLCBhbmQgbWlnaHQgYmUKKyAgICogICAgIGRpc2FibGVkIG9yIHN0YXkgdW5zdXBwb3J0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuMy4wCisgICAqLworICB0eXBlZGVmIGVudW0gIEZUX0xjZEZpbHRlcl8KKyAgeworICAgIEZUX0xDRF9GSUxURVJfTk9ORSAgICA9IDAsCisgICAgRlRfTENEX0ZJTFRFUl9ERUZBVUxUID0gMSwKKyAgICBGVF9MQ0RfRklMVEVSX0xJR0hUICAgPSAyLAorICAgIEZUX0xDRF9GSUxURVJfTEVHQUNZICA9IDE2LAorCisgICAgRlRfTENEX0ZJTFRFUl9NQVggICAvKiBkbyBub3QgcmVtb3ZlICovCisKKyAgfSBGVF9MY2RGaWx0ZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmM6CisgICAqICAgRlRfTGlicmFyeV9TZXRMY2RGaWx0ZXIKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBhcHBseSBjb2xvciBmaWx0ZXJpbmcgdG8gTENEIGRlY2ltYXRlZAorICAgKiAgIGJpdG1hcHMsIGxpa2UgdGhlIG9uZXMgdXNlZCB3aGVuIGNhbGxpbmcgQEZUX1JlbmRlcl9HbHlwaCB3aXRoCisgICAqICAgQEZUX1JFTkRFUl9NT0RFX0xDRCBvciBARlRfUkVOREVSX01PREVfTENEX1YuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBsaWJyYXJ5IDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGxpYnJhcnkgaW5zdGFuY2UuCisgICAqCisgICAqICAgZmlsdGVyIDo6CisgICAqICAgICBUaGUgZmlsdGVyIHR5cGUuCisgICAqCisgICAqICAgICBZb3UgY2FuIHVzZSBARlRfTENEX0ZJTFRFUl9OT05FIGhlcmUgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUsIG9yCisgICAqICAgICBARlRfTENEX0ZJTFRFUl9ERUZBVUxUIHRvIHVzZSBhIGRlZmF1bHQgZmlsdGVyIHRoYXQgc2hvdWxkIHdvcmsKKyAgICogICAgIHdlbGwgb24gbW9zdCBMQ0Qgc2NyZWVucy4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGlzIGZlYXR1cmUgaXMgYWx3YXlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBDbGllbnRzIG11c3QgbWFrZSBhbgorICAgKiAgIGV4cGxpY2l0IGNhbGwgdG8gdGhpcyBmdW5jdGlvbiB3aXRoIGEgYGZpbHRlcicgdmFsdWUgb3RoZXIgdGhhbgorICAgKiAgIEBGVF9MQ0RfRklMVEVSX05PTkUgaW4gb3JkZXIgdG8gZW5hYmxlIGl0LgorICAgKgorICAgKiAgIER1ZSB0byAqUEFURU5UUyogY292ZXJpbmcgc3VicGl4ZWwgcmVuZGVyaW5nLCB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QKKyAgICogICBkbyBhbnl0aGluZyBleGNlcHQgcmV0dXJuaW5nIGBGVF9FcnJfVW5pbXBsZW1lbnRlZF9GZWF0dXJlJyBpZiB0aGUKKyAgICogICBjb25maWd1cmF0aW9uIG1hY3JvIEZUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfUkVOREVSSU5HIGlzIG5vdAorICAgKiAgIGRlZmluZWQgaW4geW91ciBidWlsZCBvZiB0aGUgbGlicmFyeSwgd2hpY2ggc2hvdWxkIGNvcnJlc3BvbmQgdG8gYWxsCisgICAqICAgZGVmYXVsdCBidWlsZHMgb2YgRnJlZVR5cGUuCisgICAqCisgICAqICAgVGhlIGZpbHRlciBhZmZlY3RzIGdseXBoIGJpdG1hcHMgcmVuZGVyZWQgdGhyb3VnaCBARlRfUmVuZGVyX0dseXBoLAorICAgKiAgIEBGVF9PdXRsaW5lX0dldF9CaXRtYXAsIEBGVF9Mb2FkX0dseXBoLCBhbmQgQEZUX0xvYWRfQ2hhci4KKyAgICoKKyAgICogICBJdCBkb2VzIF9ub3RfIGFmZmVjdCB0aGUgb3V0cHV0IG9mIEBGVF9PdXRsaW5lX1JlbmRlciBhbmQKKyAgICogICBARlRfT3V0bGluZV9HZXRfQml0bWFwLgorICAgKgorICAgKiAgIElmIHRoaXMgZmVhdHVyZSBpcyBhY3RpdmF0ZWQsIHRoZSBkaW1lbnNpb25zIG9mIExDRCBnbHlwaCBiaXRtYXBzIGFyZQorICAgKiAgIGVpdGhlciBsYXJnZXIgb3IgdGFsbGVyIHRoYW4gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICogICBvdXRsaW5lIHdpdGggcmVnYXJkcyB0byB0aGUgcGl4ZWwgZ3JpZC4gIEZvciBleGFtcGxlLCBmb3IKKyAgICogICBARlRfUkVOREVSX01PREVfTENELCB0aGUgZmlsdGVyIGFkZHMgdXAgdG8gM35waXhlbHMgdG8gdGhlIGxlZnQsIGFuZAorICAgKiAgIHVwIHRvIDN+cGl4ZWxzIHRvIHRoZSByaWdodC4KKyAgICoKKyAgICogICBUaGUgYml0bWFwIG9mZnNldCB2YWx1ZXMgYXJlIGFkanVzdGVkIGNvcnJlY3RseSwgc28gY2xpZW50cyBzaG91bGRuJ3QKKyAgICogICBuZWVkIHRvIG1vZGlmeSB0aGVpciBsYXlvdXQgYW5kIGdseXBoIHBvc2l0aW9uaW5nIGNvZGUgd2hlbiBlbmFibGluZworICAgKiAgIHRoZSBmaWx0ZXIuCisgICAqCisgICAqIEBzaW5jZToKKyAgICogICAyLjMuMAorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0xpYnJhcnlfU2V0TGNkRmlsdGVyKCBGVF9MaWJyYXJ5ICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9MY2RGaWx0ZXIgIGZpbHRlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jOgorICAgKiAgIEZUX0xpYnJhcnlfU2V0TGNkRmlsdGVyV2VpZ2h0cworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVXNlIHRoaXMgZnVuY3Rpb24gdG8gb3ZlcnJpZGUgdGhlIGZpbHRlciB3ZWlnaHRzIHNlbGVjdGVkIGJ5CisgICAqICAgQEZUX0xpYnJhcnlfU2V0TGNkRmlsdGVyLiAgQnkgZGVmYXVsdCwgRnJlZVR5cGUgdXNlcyB0aGUgcXVpbnR1cGxlCisgICAqICAgKDB4MDAsIDB4NTUsIDB4NTYsIDB4NTUsIDB4MDApIGZvciBGVF9MQ0RfRklMVEVSX0xJR0hULCBhbmQgKDB4MTAsCisgICAqICAgMHg0MCwgMHg3MCwgMHg0MCwgMHgxMCkgZm9yIEZUX0xDRF9GSUxURVJfREVGQVVMVCBhbmQKKyAgICogICBGVF9MQ0RfRklMVEVSX0xFR0FDWS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGxpYnJhcnkgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgbGlicmFyeSBpbnN0YW5jZS4KKyAgICoKKyAgICogICB3ZWlnaHRzIDo6CisgICAqICAgICBBIHBvaW50ZXIgdG8gYW4gYXJyYXk7IHRoZSBmdW5jdGlvbiBjb3BpZXMgdGhlIGZpcnN0IGZpdmUgYnl0ZXMgYW5kCisgICAqICAgICB1c2VzIHRoZW0gdG8gc3BlY2lmeSB0aGUgZmlsdGVyIHdlaWdodHMuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgRHVlIHRvICpQQVRFTlRTKiBjb3ZlcmluZyBzdWJwaXhlbCByZW5kZXJpbmcsIHRoaXMgZnVuY3Rpb24gZG9lc24ndAorICAgKiAgIGRvIGFueXRoaW5nIGV4Y2VwdCByZXR1cm5pbmcgYEZUX0Vycl9VbmltcGxlbWVudGVkX0ZlYXR1cmUnIGlmIHRoZQorICAgKiAgIGNvbmZpZ3VyYXRpb24gbWFjcm8gRlRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9SRU5ERVJJTkcgaXMgbm90CisgICAqICAgZGVmaW5lZCBpbiB5b3VyIGJ1aWxkIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCBzaG91bGQgY29ycmVzcG9uZCB0byBhbGwKKyAgICogICBkZWZhdWx0IGJ1aWxkcyBvZiBGcmVlVHlwZS4KKyAgICoKKyAgICogICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGFmdGVyIEBGVF9MaWJyYXJ5X1NldExjZEZpbHRlciB0byBoYXZlCisgICAqICAgYW55IGVmZmVjdC4KKyAgICoKKyAgICogQHNpbmNlOgorICAgKiAgIDIuNC4wCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfTGlicmFyeV9TZXRMY2RGaWx0ZXJXZWlnaHRzKCBGVF9MaWJyYXJ5ICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICAqd2VpZ2h0cyApOworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVF9MQ0RfRklMVEVSX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRsaXN0LmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjE4OTc4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRsaXN0LmgKQEAgLTAsMCArMSwyNzcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0bGlzdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBHZW5lcmljIGxpc3Qgc3VwcG9ydCBmb3IgRnJlZVR5cGUgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAzLCAyMDA3LCAyMDEwIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBUaGlzIGZpbGUgaW1wbGVtZW50cyBmdW5jdGlvbnMgcmVsYXRpdmUgdG8gbGlzdCBwcm9jZXNzaW5nLiAgSXRzICAgICAqLworICAvKiAgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBkZWZpbmVkIGluIGBmcmVldHlwZS5oJy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVExJU1RfSF9fCisjZGVmaW5lIF9fRlRMSVNUX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlzdF9wcm9jZXNzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTGlzdCBQcm9jZXNzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2ltcGxlIG1hbmFnZW1lbnQgb2YgbGlzdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHZhcmlvdXMgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBsaXN0ICAgICAgICAgICovCisgIC8qICAgIHByb2Nlc3NpbmcgdXNpbmcgZG91Ymx5LWxpbmtlZCBub2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE9yZGVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0Tm9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3ROb2RlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9BZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfSW5zZXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0ZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9SZW1vdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfVXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0l0ZXJhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9JdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfRmluYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0Rlc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRmluZCB0aGUgbGlzdCBub2RlIGZvciBhIGdpdmVuIGxpc3RlZCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlzdCA6OiBBIHBvaW50ZXIgdG8gdGhlIHBhcmVudCBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRhdGEgOjogVGhlIGFkZHJlc3Mgb2YgdGhlIGxpc3RlZCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExpc3Qgbm9kZS4gIE5VTEwgaWYgaXQgd2Fzbid0IGZvdW5kLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9MaXN0Tm9kZSApCisgIEZUX0xpc3RfRmluZCggRlRfTGlzdCAgbGlzdCwKKyAgICAgICAgICAgICAgICB2b2lkKiAgICBkYXRhICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0FkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBcHBlbmQgYW4gZWxlbWVudCB0byB0aGUgZW5kIG9mIGEgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaXN0IDo6IEEgcG9pbnRlciB0byB0aGUgcGFyZW50IGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbm9kZSA6OiBUaGUgbm9kZSB0byBhcHBlbmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9MaXN0X0FkZCggRlRfTGlzdCAgICAgIGxpc3QsCisgICAgICAgICAgICAgICBGVF9MaXN0Tm9kZSAgbm9kZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9JbnNlcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW5zZXJ0IGFuIGVsZW1lbnQgYXQgdGhlIGhlYWQgb2YgYSBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlzdCA6OiBBIHBvaW50ZXIgdG8gcGFyZW50IGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5vZGUgOjogVGhlIG5vZGUgdG8gaW5zZXJ0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfTGlzdF9JbnNlcnQoIEZUX0xpc3QgICAgICBsaXN0LAorICAgICAgICAgICAgICAgICAgRlRfTGlzdE5vZGUgIG5vZGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3RfUmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJlbW92ZSBhIG5vZGUgZnJvbSBhIGxpc3QuICBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgY2hlY2sgd2hldGhlciAgICAqLworICAvKiAgICB0aGUgbm9kZSBpcyBpbiB0aGUgbGlzdCEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBub2RlIDo6IFRoZSBub2RlIHRvIHJlbW92ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaXN0IDo6IEEgcG9pbnRlciB0byB0aGUgcGFyZW50IGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX0xpc3RfUmVtb3ZlKCBGVF9MaXN0ICAgICAgbGlzdCwKKyAgICAgICAgICAgICAgICAgIEZUX0xpc3ROb2RlICBub2RlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X1VwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBNb3ZlIGEgbm9kZSB0byB0aGUgaGVhZC90b3Agb2YgYSBsaXN0LiAgVXNlZCB0byBtYWludGFpbiBMUlUgICAgICAgKi8KKyAgLyogICAgbGlzdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlzdCA6OiBBIHBvaW50ZXIgdG8gdGhlIHBhcmVudCBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5vZGUgOjogVGhlIG5vZGUgdG8gbW92ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfTGlzdF9VcCggRlRfTGlzdCAgICAgIGxpc3QsCisgICAgICAgICAgICAgIEZUX0xpc3ROb2RlICBub2RlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0X0l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBGVF9MaXN0IGl0ZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgYSBsaXN0IHBhcnNlICAgKi8KKyAgLyogICAgYnkgQEZUX0xpc3RfSXRlcmF0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbm9kZSA6OiBUaGUgY3VycmVudCBpdGVyYXRpb24gbGlzdCBub2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1c2VyIDo6IEEgdHlwZWxlc3MgcG9pbnRlciBwYXNzZWQgdG8gQEZUX0xpc3RfSXRlcmF0ZS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICBDYW4gYmUgdXNlZCB0byBwb2ludCB0byB0aGUgaXRlcmF0aW9uJ3Mgc3RhdGUuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfTGlzdF9JdGVyYXRvcikoIEZUX0xpc3ROb2RlICBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgdXNlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9JdGVyYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUGFyc2UgYSBsaXN0IGFuZCBjYWxscyBhIGdpdmVuIGl0ZXJhdG9yIGZ1bmN0aW9uIG9uIGVhY2ggZWxlbWVudC4gICovCisgIC8qICAgIE5vdGUgdGhhdCBwYXJzaW5nIGlzIHN0b3BwZWQgYXMgc29vbiBhcyBvbmUgb2YgdGhlIGl0ZXJhdG9yIGNhbGxzICAqLworICAvKiAgICByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaXN0ICAgICA6OiBBIGhhbmRsZSB0byB0aGUgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaXRlcmF0b3IgOjogQW4gaXRlcmF0b3IgZnVuY3Rpb24sIGNhbGxlZCBvbiBlYWNoIG5vZGUgb2YgdGhlIGxpc3QuICovCisgIC8qICAgIHVzZXIgICAgIDo6IEEgdXNlci1zdXBwbGllZCBmaWVsZCB3aGljaCBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZCAgICAqLworICAvKiAgICAgICAgICAgICAgICBhcmd1bWVudCB0byB0aGUgaXRlcmF0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgcmVzdWx0IChhIEZyZWVUeXBlIGVycm9yIGNvZGUpIG9mIHRoZSBsYXN0IGl0ZXJhdG9yIGNhbGwuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9MaXN0X0l0ZXJhdGUoIEZUX0xpc3QgICAgICAgICAgIGxpc3QsCisgICAgICAgICAgICAgICAgICAgRlRfTGlzdF9JdGVyYXRvciAgaXRlcmF0b3IsCisgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgICAgdXNlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9EZXN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gQEZUX0xpc3QgaXRlcmF0b3IgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBhIGxpc3QgICAgICAgICovCisgIC8qICAgIGZpbmFsaXphdGlvbiBieSBARlRfTGlzdF9GaW5hbGl6ZSB0byBkZXN0cm95IGFsbCBlbGVtZW50cyBpbiBhICAgICAqLworICAvKiAgICBnaXZlbiBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzeXN0ZW0gOjogVGhlIGN1cnJlbnQgc3lzdGVtIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRhdGEgICA6OiBUaGUgY3VycmVudCBvYmplY3QgdG8gZGVzdHJveS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciAgIDo6IEEgdHlwZWxlc3MgcG9pbnRlciBwYXNzZWQgdG8gQEZUX0xpc3RfSXRlcmF0ZS4gIEl0IGNhbiAgICovCisgIC8qICAgICAgICAgICAgICBiZSB1c2VkIHRvIHBvaW50IHRvIHRoZSBpdGVyYXRpb24ncyBzdGF0ZS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfTGlzdF9EZXN0cnVjdG9yKSggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgdXNlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlzdF9GaW5hbGl6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVzdHJveSBhbGwgZWxlbWVudHMgaW4gdGhlIGxpc3QgYXMgd2VsbCBhcyB0aGUgbGlzdCBpdHNlbGYuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlzdCAgICA6OiBBIGhhbmRsZSB0byB0aGUgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkZXN0cm95IDo6IEEgbGlzdCBkZXN0cnVjdG9yIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIGVhY2ggZWxlbWVudCAgKi8KKyAgLyogICAgICAgICAgICAgICBvZiB0aGUgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZW1vcnkgIDo6IFRoZSBjdXJyZW50IG1lbW9yeSBvYmplY3Qgd2hpY2ggaGFuZGxlcyBkZWFsbG9jYXRpb24uICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgICAgOjogQSB1c2VyLXN1cHBsaWVkIGZpZWxkIHdoaWNoIGlzIHBhc3NlZCBhcyB0aGUgbGFzdCAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIGFyZ3VtZW50IHRvIHRoZSBkZXN0cnVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgdGhhdCBhbGwgbm9kZXMgYWRkZWQgYnkgQEZUX0xpc3RfQWRkIG9yICAgICAgKi8KKyAgLyogICAgQEZUX0xpc3RfSW5zZXJ0IGhhdmUgYmVlbiBkeW5hbWljYWxseSBhbGxvY2F0ZWQuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9MaXN0X0ZpbmFsaXplKCBGVF9MaXN0ICAgICAgICAgICAgIGxpc3QsCisgICAgICAgICAgICAgICAgICAgIEZUX0xpc3RfRGVzdHJ1Y3RvciAgZGVzdHJveSwKKyAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICAgICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgdXNlciApOworCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUTElTVF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bHp3LmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGx6dy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjRhODIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdGx6dy5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0bHp3LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBMWlctY29tcHJlc3NlZCBzdHJlYW0gc3VwcG9ydC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNCwgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUTFpXX0hfXworI2RlZmluZSBfX0ZUTFpXX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsencgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMWlcgU3RyZWFtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2luZyBMWlctY29tcHJlc3NlZCBmb250IGZpbGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGRlY2xhcmF0aW9uIG9mIExaVy1zcGVjaWZpYyBmdW5jdGlvbnMuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgRlRfU3RyZWFtX09wZW5MWlcKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgIE9wZW4gYSBuZXcgc3RyZWFtIHRvIHBhcnNlIExaVy1jb21wcmVzc2VkIGZvbnQgZmlsZXMuICBUaGlzIGlzCisgICogICBtYWlubHkgdXNlZCB0byBzdXBwb3J0IHRoZSBjb21wcmVzc2VkIGAqLnBjZi5aJyBmb250cyB0aGF0IGNvbWUKKyAgKiAgIHdpdGggWEZyZWU4Ni4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgIHN0cmVhbSA6OiBUaGUgdGFyZ2V0IGVtYmVkZGluZyBzdHJlYW0uCisgICoKKyAgKiAgIHNvdXJjZSA6OiBUaGUgc291cmNlIHN0cmVhbS4KKyAgKgorICAqIEByZXR1cm46CisgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAqCisgICogQG5vdGU6CisgICogICBUaGUgc291cmNlIHN0cmVhbSBtdXN0IGJlIG9wZW5lZCBfYmVmb3JlXyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgICoKKyAgKiAgIENhbGxpbmcgdGhlIGludGVybmFsIGZ1bmN0aW9uIGBGVF9TdHJlYW1fQ2xvc2UnIG9uIHRoZSBuZXcgc3RyZWFtIHdpbGwKKyAgKiAgICpub3QqIGNhbGwgYEZUX1N0cmVhbV9DbG9zZScgb24gdGhlIHNvdXJjZSBzdHJlYW0uICBOb25lIG9mIHRoZSBzdHJlYW0KKyAgKiAgIG9iamVjdHMgd2lsbCBiZSByZWxlYXNlZCB0byB0aGUgaGVhcC4KKyAgKgorICAqICAgVGhlIHN0cmVhbSBpbXBsZW1lbnRhdGlvbiBpcyB2ZXJ5IGJhc2ljIGFuZCByZXNldHMgdGhlIGRlY29tcHJlc3Npb24KKyAgKiAgIHByb2Nlc3MgZWFjaCB0aW1lIHNlZWtpbmcgYmFja3dhcmRzIGlzIG5lZWRlZCB3aXRoaW4gdGhlIHN0cmVhbQorICAqCisgICogICBJbiBjZXJ0YWluIGJ1aWxkcyBvZiB0aGUgbGlicmFyeSwgTFpXIGNvbXByZXNzaW9uIHJlY29nbml0aW9uIGlzCisgICogICBhdXRvbWF0aWNhbGx5IGhhbmRsZWQgd2hlbiBjYWxsaW5nIEBGVF9OZXdfRmFjZSBvciBARlRfT3Blbl9GYWNlLgorICAqICAgVGhpcyBtZWFucyB0aGF0IGlmIG5vIGZvbnQgZHJpdmVyIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlIHJhdworICAqICAgY29tcHJlc3NlZCBmaWxlLCB0aGUgbGlicmFyeSB3aWxsIHRyeSB0byBvcGVuIGEgTFpXIHN0cmVhbSBmcm9tIGl0CisgICogICBhbmQgcmUtb3BlbiB0aGUgZmFjZSB3aXRoIGl0LgorICAqCisgICogICBUaGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYEZUX0Vycl9VbmltcGxlbWVudGVkX0ZlYXR1cmUnIGlmIHlvdXIgYnVpbGQKKyAgKiAgIG9mIEZyZWVUeXBlIHdhcyBub3QgY29tcGlsZWQgd2l0aCBMWlcgc3VwcG9ydC4KKyAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9PcGVuTFpXKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc291cmNlICk7CisKKyAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRMWldfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRtYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDBmM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRtYWMuaApAQCAtMCwwICsxLDI3NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRtYWMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFkZGl0aW9uYWwgTWFjLXNwZWNpZmljIEFQSS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDQsIDIwMDYsIDIwMDcgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBKdXN0IHZhbiBSb3NzdW0sIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIE5PVEU6IEluY2x1ZGUgdGhpcyBmaWxlIGFmdGVyIDxmcmVldHlwZS9mcmVldHlwZS5oPiBhbmQgYWZ0ZXIgYW55ICAgICAgICovCisvKiAgICAgICBNYWMtc3BlY2lmaWMgaGVhZGVycyAoYmVjYXVzZSB0aGlzIGhlYWRlciB1c2VzIE1hYyB0eXBlcyBzdWNoIGFzICAqLworLyogICAgICAgSGFuZGxlLCBGU1NwZWMsIEZTUmVmLCBldGMuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVE1BQ19IX18KKyNkZWZpbmUgX19GVE1BQ19IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisvKiBnY2MtMy40LjEgYW5kIGxhdGVyIGNhbiB3YXJuIGFib3V0IGZ1bmN0aW9ucyB0YWdnZWQgYXMgZGVwcmVjYXRlZCAqLworI2lmbmRlZiBGVF9ERVBSRUNBVEVEX0FUVFJJQlVURQorI2lmIGRlZmluZWQoX19HTlVDX18pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBcCisgICAgKChfX0dOVUNfXyA+PSA0KSB8fCAoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAxKSkpCisjZGVmaW5lIEZUX0RFUFJFQ0FURURfQVRUUklCVVRFICBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKSkKKyNlbHNlCisjZGVmaW5lIEZUX0RFUFJFQ0FURURfQVRUUklCVVRFCisjZW5kaWYKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWFjX3NwZWNpZmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTWFjIFNwZWNpZmljIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT25seSBhdmFpbGFibGUgb24gdGhlIE1hY2ludG9zaC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgb25seSBhdmFpbGFibGUgaWYgRnJlZVR5cGUgaXMgICAgICAgICovCisgIC8qICAgIGNvbXBpbGVkIG9uIGEgTWFjaW50b3NoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDcmVhdGUgYSBuZXcgZmFjZSBvYmplY3QgZnJvbSBhIEZPTkQgcmVzb3VyY2UuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IHJlc291cmNlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb25kICAgICAgIDo6IEEgRk9ORCByZXNvdXJjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2VfaW5kZXggOjogT25seSBzdXBwb3J0ZWQgZm9yIHRoZSAtMSBgc2FuaXR5IGNoZWNrJyBzcGVjaWFsICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGNhc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZmFjZSAgICAgIDo6IEEgaGFuZGxlIHRvIGEgbmV3IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3Rlcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBARlRfRmFjZSBvYmplY3RzIGZyb20gZm9udHMgICAgKi8KKyAgLyogICAgdGhhdCBhcmUgaW5zdGFsbGVkIGluIHRoZSBzeXN0ZW0gYXMgZm9sbG93cy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBmb25kID0gR2V0UmVzb3VyY2UoICdGT05EJywgZm9udE5hbWUgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgZXJyb3IgPSBGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQoIGxpYnJhcnksIGZvbmQsIDAsICZmYWNlICk7ICAgICAgICAqLworICAvKiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlICAgICAgZm9uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgKmFmYWNlICkKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfREVQUkVDQVRFRF9BVFRSSUJVVEU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRGaWxlX0Zyb21fTWFjX05hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gYW4gRlNTcGVjIGZvciB0aGUgZGlzayBmaWxlIGNvbnRhaW5pbmcgdGhlIG5hbWVkIGZvbnQuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb250TmFtZSAgIDo6IE1hYyBPUyBuYW1lIG9mIHRoZSBmb250IChlLmcuLCBUaW1lcyBOZXcgUm9tYW4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBCb2xkKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGF0aFNwZWMgICA6OiBGU1NwZWMgdG8gdGhlIGZpbGUuICBGb3IgcGFzc2luZyB0byAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgQEZUX05ld19GYWNlX0Zyb21fRlNTcGVjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pbmRleCA6OiBJbmRleCBvZiB0aGUgZmFjZS4gIEZvciBwYXNzaW5nIHRvICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgQEZUX05ld19GYWNlX0Zyb21fRlNTcGVjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZSggY29uc3QgY2hhciogIGZvbnROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZTU3BlYyogICAgICBwYXRoU3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nKiAgICAgZmFjZV9pbmRleCApCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0RFUFJFQ0FURURfQVRUUklCVVRFOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0RmlsZV9Gcm9tX01hY19BVFNfTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0dXJuIGFuIEZTU3BlYyBmb3IgdGhlIGRpc2sgZmlsZSBjb250YWluaW5nIHRoZSBuYW1lZCBmb250LiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZm9udE5hbWUgICA6OiBNYWMgT1MgbmFtZSBvZiB0aGUgZm9udCBpbiBBVFMgZnJhbWV3b3JrLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGF0aFNwZWMgICA6OiBGU1NwZWMgdG8gdGhlIGZpbGUuIEZvciBwYXNzaW5nIHRvICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgQEZUX05ld19GYWNlX0Zyb21fRlNTcGVjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pbmRleCA6OiBJbmRleCBvZiB0aGUgZmFjZS4gRm9yIHBhc3NpbmcgdG8gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgQEZUX05ld19GYWNlX0Zyb21fRlNTcGVjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldEZpbGVfRnJvbV9NYWNfQVRTX05hbWUoIGNvbnN0IGNoYXIqICBmb250TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNTcGVjKiAgICAgIHBhdGhTcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nKiAgICAgZmFjZV9pbmRleCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9ERVBSRUNBVEVEX0FUVFJJQlVURTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldEZpbGVQYXRoX0Zyb21fTWFjX0FUU19OYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiBhIHBhdGhuYW1lIG9mIHRoZSBkaXNrIGZpbGUgYW5kIGZhY2UgaW5kZXggZm9yIGdpdmVuIGZvbnQgICAqLworICAvKiAgICBuYW1lIHdoaWNoIGlzIGhhbmRsZWQgYnkgQVRTIGZyYW1ld29yay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb250TmFtZSAgICA6OiBNYWMgT1MgbmFtZSBvZiB0aGUgZm9udCBpbiBBVFMgZnJhbWV3b3JrLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXRoICAgICAgICA6OiBCdWZmZXIgdG8gc3RvcmUgcGF0aG5hbWUgb2YgdGhlIGZpbGUuICBGb3IgcGFzc2luZyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgdG8gQEZUX05ld19GYWNlLiAgVGhlIGNsaWVudCBtdXN0IGFsbG9jYXRlIHRoaXMgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGJ1ZmZlciBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4UGF0aFNpemUgOjogTGVuZ3RocyBvZiB0aGUgYnVmZmVyIGBwYXRoJyB0aGF0IGNsaWVudCBhbGxvY2F0ZWQuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX2luZGV4ICA6OiBJbmRleCBvZiB0aGUgZmFjZS4gIEZvciBwYXNzaW5nIHRvIEBGVF9OZXdfRmFjZS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRGaWxlUGF0aF9Gcm9tX01hY19BVFNfTmFtZSggY29uc3QgY2hhciogIGZvbnROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUludDgqICAgICAgIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSW50MzIgICAgICAgbWF4UGF0aFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nKiAgICAgZmFjZV9pbmRleCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfREVQUkVDQVRFRF9BVFRSSUJVVEU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfRmFjZV9Gcm9tX0ZTU3BlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDcmVhdGUgYSBuZXcgZmFjZSBvYmplY3QgZnJvbSBhIGdpdmVuIHJlc291cmNlIGFuZCB0eXBlZmFjZSBpbmRleCAgKi8KKyAgLyogICAgdXNpbmcgYW4gRlNTcGVjIHRvIHRoZSBmb250IGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSAgICA6OiBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSByZXNvdXJjZS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3BlYyAgICAgICA6OiBGU1NwZWMgdG8gdGhlIGZvbnQgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgZmFjZSB3aXRoaW4gdGhlIHJlc291cmNlLiAgVGhlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBmaXJzdCBmYWNlIGhhcyBpbmRleH4wLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZmFjZSAgICAgIDo6IEEgaGFuZGxlIHRvIGEgbmV3IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBARlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMgaXMgaWRlbnRpY2FsIHRvIEBGVF9OZXdfRmFjZSBleGNlcHQgICAgICAgKi8KKyAgLyogICAgaXQgYWNjZXB0cyBhbiBGU1NwZWMgaW5zdGVhZCBvZiBhIHBhdGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfTmV3X0ZhY2VfRnJvbV9GU1NwZWMoIEZUX0xpYnJhcnkgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGU1NwZWMgICpzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgKmFmYWNlICkKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9ERVBSRUNBVEVEX0FUVFJJQlVURTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX05ld19GYWNlX0Zyb21fRlNSZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENyZWF0ZSBhIG5ldyBmYWNlIG9iamVjdCBmcm9tIGEgZ2l2ZW4gcmVzb3VyY2UgYW5kIHR5cGVmYWNlIGluZGV4ICAqLworICAvKiAgICB1c2luZyBhbiBGU1JlZiB0byB0aGUgZm9udCBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IHJlc291cmNlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzcGVjICAgICAgIDo6IEZTUmVmIHRvIHRoZSBmb250IGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2VfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBmYWNlIHdpdGhpbiB0aGUgcmVzb3VyY2UuICBUaGUgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIGZpcnN0IGZhY2UgaGFzIGluZGV4fjAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFmYWNlICAgICAgOjogQSBoYW5kbGUgdG8gYSBuZXcgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9OZXdfRmFjZV9Gcm9tX0ZTUmVmIGlzIGlkZW50aWNhbCB0byBARlRfTmV3X0ZhY2UgZXhjZXB0ICAgICAgICAqLworICAvKiAgICBpdCBhY2NlcHRzIGFuIEZTUmVmIGluc3RlYWQgb2YgYSBwYXRoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9OZXdfRmFjZV9Gcm9tX0ZTUmVmKCBGVF9MaWJyYXJ5ICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZTUmVmICAqcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAqYWZhY2UgKQorICAgICAgICAgICAgICAgICAgICAgICAgRlRfREVQUkVDQVRFRF9BVFRSSUJVVEU7CisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fRlRNQUNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdG1tLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdG1tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJhYWY0NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW0uaApAQCAtMCwwICsxLDM3OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRtbS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIE11bHRpcGxlIE1hc3RlciBmb250IGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDkgYnkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRNTV9IX18KKyNkZWZpbmUgX19GVE1NX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgInQxdGFibGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtdWx0aXBsZV9tYXN0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBNdWx0aXBsZSBNYXN0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBIb3cgdG8gbWFuYWdlIE11bHRpcGxlIE1hc3RlcnMgZm9udHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFuZCBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gbWFuYWdlIE11bHRpcGxlICAgICAgKi8KKyAgLyogICAgTWFzdGVyIGZvbnRzLCBpLmUuLCB0aGUgc2VsZWN0aW9uIG9mIHNwZWNpZmljIGRlc2lnbiBpbnN0YW5jZXMgYnkgICovCisgIC8qICAgIHNldHRpbmcgZGVzaWduIGF4aXMgY29vcmRpbmF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR2VvcmdlIFdpbGxpYW1zIGhhcyBleHRlbmRlZCB0aGlzIGludGVyZmFjZSB0byBtYWtlIGl0IHdvcmsgd2l0aCAgICovCisgIC8qICAgIGJvdGggVHlwZX4xIE11bHRpcGxlIE1hc3RlcnMgZm9udHMgYW5kIEdYIGRpc3RvcnRhYmxlICh2YXIpICAgICAgICAqLworICAvKiAgICBmb250cy4gIFNvbWUgb2YgdGhlc2Ugcm91dGluZXMgb25seSB3b3JrIHdpdGggTU0gZm9udHMsIG90aGVycyAgICAgKi8KKyAgLyogICAgd2lsbCB3b3JrIHdpdGggYm90aCB0eXBlcy4gIFRoZXkgYXJlIHNpbWlsYXIgZW5vdWdoIHRoYXQgYSAgICAgICAgICovCisgIC8qICAgIGNvbnNpc3RlbnQgaW50ZXJmYWNlIG1ha2VzIHNlbnNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NTV9BeGlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCBhIGdpdmVuIGF4aXMgaW4gZGVzaWduIHNwYWNlIGZvciAgKi8KKyAgLyogICAgTXVsdGlwbGUgTWFzdGVycyBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHN0cnVjdHVyZSBjYW4ndCBiZSB1c2VkIGZvciBHWCB2YXIgZm9udHMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuYW1lICAgIDo6IFRoZSBheGlzJ3MgbmFtZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1pbmltdW0gOjogVGhlIGF4aXMncyBtaW5pbXVtIGRlc2lnbiBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4aW11bSA6OiBUaGUgYXhpcydzIG1heGltdW0gZGVzaWduIGNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfTU1fQXhpc18KKyAgeworICAgIEZUX1N0cmluZyogIG5hbWU7CisgICAgRlRfTG9uZyAgICAgbWluaW11bTsKKyAgICBGVF9Mb25nICAgICBtYXhpbXVtOworCisgIH0gRlRfTU1fQXhpczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX011bHRpX01hc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgdGhlIGF4ZXMgYW5kIHNwYWNlIG9mIGEgTXVsdGlwbGUgTWFzdGVycyAqLworICAvKiAgICBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIGNhbid0IGJlIHVzZWQgZm9yIEdYIHZhciBmb250cy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9heGlzICAgIDo6IE51bWJlciBvZiBheGVzLiAgQ2Fubm90IGV4Y2VlZH40LiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2Rlc2lnbnMgOjogTnVtYmVyIG9mIGRlc2lnbnM7IHNob3VsZCBiZSBub3JtYWxseSAyXm51bV9heGlzICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGV2ZW4gdGhvdWdoIHRoZSBUeXBlfjEgc3BlY2lmaWNhdGlvbiBzdHJhbmdlbHkgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBhbGxvd3MgZm9yIGludGVybWVkaWF0ZSBkZXNpZ25zIHRvIGJlIHByZXNlbnQuIFRoaXMgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgbnVtYmVyIGNhbm5vdCBleGNlZWR+MTYuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBheGlzICAgICAgICA6OiBBIHRhYmxlIG9mIGF4aXMgZGVzY3JpcHRvcnMuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9NdWx0aV9NYXN0ZXJfCisgIHsKKyAgICBGVF9VSW50ICAgICBudW1fYXhpczsKKyAgICBGVF9VSW50ICAgICBudW1fZGVzaWduczsKKyAgICBGVF9NTV9BeGlzICBheGlzW1QxX01BWF9NTV9BWElTXTsKKworICB9IEZUX011bHRpX01hc3RlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1Zhcl9BeGlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2ltcGxlIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgZ2l2ZW4gYXhpcyBpbiBkZXNpZ24gc3BhY2UgZm9yICAqLworICAvKiAgICBNdWx0aXBsZSBNYXN0ZXJzIGFuZCBHWCB2YXIgZm9udHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuYW1lICAgIDo6IFRoZSBheGlzJ3MgbmFtZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICBOb3QgYWx3YXlzIG1lYW5pbmdmdWwgZm9yIEdYLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtaW5pbXVtIDo6IFRoZSBheGlzJ3MgbWluaW11bSBkZXNpZ24gY29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlZiAgICAgOjogVGhlIGF4aXMncyBkZWZhdWx0IGRlc2lnbiBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIEZyZWVUeXBlIGNvbXB1dGVzIG1lYW5pbmdmdWwgZGVmYXVsdCB2YWx1ZXMgZm9yIE1NOyBpdCAgKi8KKyAgLyogICAgICAgICAgICAgICBpcyB0aGVuIGFuIGludGVnZXIgdmFsdWUsIG5vdCBpbiAxNi4xNiBmb3JtYXQuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhpbXVtIDo6IFRoZSBheGlzJ3MgbWF4aW11bSBkZXNpZ24gY29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhZyAgICAgOjogVGhlIGF4aXMncyB0YWcgKHRoZSBHWCBlcXVpdmFsZW50IHRvIGBuYW1lJykuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIEZyZWVUeXBlIHByb3ZpZGVzIGRlZmF1bHQgdmFsdWVzIGZvciBNTSBpZiBwb3NzaWJsZS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmlkICAgOjogVGhlIGVudHJ5IGluIGBuYW1lJyB0YWJsZSAoYW5vdGhlciBHWCB2ZXJzaW9uIG9mICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIGBuYW1lJykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICBOb3QgbWVhbmluZ2Z1bCBmb3IgTU0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfVmFyX0F4aXNfCisgIHsKKyAgICBGVF9TdHJpbmcqICBuYW1lOworCisgICAgRlRfRml4ZWQgICAgbWluaW11bTsKKyAgICBGVF9GaXhlZCAgICBkZWY7CisgICAgRlRfRml4ZWQgICAgbWF4aW11bTsKKworICAgIEZUX1VMb25nICAgIHRhZzsKKyAgICBGVF9VSW50ICAgICBzdHJpZDsKKworICB9IEZUX1Zhcl9BeGlzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVmFyX05hbWVkX1N0eWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzaW1wbGUgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYSBuYW1lZCBzdHlsZSBpbiBhIEdYIHZhciBmb250LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHN0cnVjdHVyZSBjYW4ndCBiZSB1c2VkIGZvciBNTSBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb29yZHMgOjogVGhlIGRlc2lnbiBjb29yZGluYXRlcyBmb3IgdGhpcyBzdHlsZS4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgIFRoaXMgaXMgYW4gYXJyYXkgd2l0aCBvbmUgZW50cnkgZm9yIGVhY2ggYXhpcy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJpZCAgOjogVGhlIGVudHJ5IGluIGBuYW1lJyB0YWJsZSBpZGVudGlmeWluZyB0aGlzIHN0eWxlLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9WYXJfTmFtZWRfU3R5bGVfCisgIHsKKyAgICBGVF9GaXhlZCogIGNvb3JkczsKKyAgICBGVF9VSW50ICAgIHN0cmlkOworCisgIH0gRlRfVmFyX05hbWVkX1N0eWxlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTU1fVmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCB0aGUgYXhlcyBhbmQgc3BhY2Ugb2YgYSBNdWx0aXBsZSBNYXN0ZXJzICovCisgIC8qICAgIG9yIEdYIHZhciBkaXN0b3J0YWJsZSBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU29tZSBmaWVsZHMgYXJlIHNwZWNpZmljIHRvIG9uZSBmb3JtYXQgYW5kIG5vdCB0byB0aGUgb3RoZXIuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2F4aXMgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgYXhlcy4gIFRoZSBtYXhpbXVtIHZhbHVlIGlzfjQgZm9yICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICBNTTsgbm8gbGltaXQgaW4gR1guICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2Rlc2lnbnMgICAgIDo6IFRoZSBudW1iZXIgb2YgZGVzaWduczsgc2hvdWxkIGJlIG5vcm1hbGx5ICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAyXm51bV9heGlzIGZvciBNTSBmb250cy4gIE5vdCBtZWFuaW5nZnVsIGZvciBHWCAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgKHdoZXJlIGV2ZXJ5IGdseXBoIGNvdWxkIGhhdmUgYSBkaWZmZXJlbnQgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBkZXNpZ25zKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fbmFtZWRzdHlsZXMgOjogVGhlIG51bWJlciBvZiBuYW1lZCBzdHlsZXM7IG9ubHkgbWVhbmluZ2Z1bCBmb3IgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIEdYIHdoaWNoIGFsbG93cyBjZXJ0YWluIGRlc2lnbiBjb29yZGluYXRlcyB0byAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGEgc3RyaW5nIElEIChpbiB0aGUgYG5hbWUnIHRhYmxlKSAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZW0uICBUaGUgZm9udCBjYW4gdGVsbCB0aGUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIHVzZXIgdGhhdCwgZm9yIGV4YW1wbGUsIFdlaWdodD0xLjUgaXMgYEJvbGQnLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBheGlzICAgICAgICAgICAgOjogQSB0YWJsZSBvZiBheGlzIGRlc2NyaXB0b3JzLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIEdYIGZvbnRzIGNvbnRhaW4gc2xpZ2h0bHkgbW9yZSBkYXRhIHRoYW4gTU0uICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuYW1lZHN0eWxlcyAgICAgOjogQSB0YWJsZSBvZiBuYW1lZCBzdHlsZXMuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIE9ubHkgbWVhbmluZ2Z1bCB3aXRoIEdYLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfTU1fVmFyXworICB7CisgICAgRlRfVUludCAgICAgICAgICAgICAgbnVtX2F4aXM7CisgICAgRlRfVUludCAgICAgICAgICAgICAgbnVtX2Rlc2lnbnM7CisgICAgRlRfVUludCAgICAgICAgICAgICAgbnVtX25hbWVkc3R5bGVzOworICAgIEZUX1Zhcl9BeGlzKiAgICAgICAgIGF4aXM7CisgICAgRlRfVmFyX05hbWVkX1N0eWxlKiAgbmFtZWRzdHlsZTsKKworICB9IEZUX01NX1ZhcjsKKworCisgIC8qICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfTXVsdGlfTWFzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXRyaWV2ZSB0aGUgTXVsdGlwbGUgTWFzdGVyIGRlc2NyaXB0b3Igb2YgYSBnaXZlbiBmb250LiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gY2FuJ3QgYmUgdXNlZCB3aXRoIEdYIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFtYXN0ZXIgOjogVGhlIE11bHRpcGxlIE1hc3RlcnMgZGVzY3JpcHRvci4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0dldF9NdWx0aV9NYXN0ZXIoIEZUX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX011bHRpX01hc3RlciAgKmFtYXN0ZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9NTV9WYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBNdWx0aXBsZSBNYXN0ZXIvR1ggdmFyIGRlc2NyaXB0b3Igb2YgYSBnaXZlbiBmb250LiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFtYXN0ZXIgOjogVGhlIE11bHRpcGxlIE1hc3RlcnMvR1ggdmFyIGRlc2NyaXB0b3IuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgIEFsbG9jYXRlcyBhIGRhdGEgc3RydWN0dXJlLCB3aGljaCB0aGUgdXNlciBtdXN0IGZyZWUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAoYSBzaW5nbGUgY2FsbCB0byBGVF9GUkVFIHdpbGwgZG8gaXQpLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0X01NX1ZhciggRlRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgIEZUX01NX1ZhciogICphbWFzdGVyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TZXRfTU1fRGVzaWduX0Nvb3JkaW5hdGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGb3IgTXVsdGlwbGUgTWFzdGVycyBmb250cywgY2hvb3NlIGFuIGludGVycG9sYXRlZCBmb250IGRlc2lnbiAgICAgKi8KKyAgLyogICAgdGhyb3VnaCBkZXNpZ24gY29vcmRpbmF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGNhbid0IGJlIHVzZWQgd2l0aCBHWCBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fY29vcmRzIDo6IFRoZSBudW1iZXIgb2YgZGVzaWduIGNvb3JkaW5hdGVzIChtdXN0IGJlIGVxdWFsIHRvICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGF4ZXMgaW4gdGhlIGZvbnQpLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb29yZHMgICAgIDo6IEFuIGFycmF5IG9mIGRlc2lnbiBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TZXRfTU1fRGVzaWduX0Nvb3JkaW5hdGVzKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIG51bV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICBjb29yZHMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NldF9WYXJfRGVzaWduX0Nvb3JkaW5hdGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZvciBNdWx0aXBsZSBNYXN0ZXIgb3IgR1ggVmFyIGZvbnRzLCBjaG9vc2UgYW4gaW50ZXJwb2xhdGVkIGZvbnQgICAqLworICAvKiAgICBkZXNpZ24gdGhyb3VnaCBkZXNpZ24gY29vcmRpbmF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fY29vcmRzIDo6IFRoZSBudW1iZXIgb2YgZGVzaWduIGNvb3JkaW5hdGVzIChtdXN0IGJlIGVxdWFsIHRvICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGF4ZXMgaW4gdGhlIGZvbnQpLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb29yZHMgICAgIDo6IEFuIGFycmF5IG9mIGRlc2lnbiBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TZXRfVmFyX0Rlc2lnbl9Db29yZGluYXRlcyggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBudW1fY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZHMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NldF9NTV9CbGVuZF9Db29yZGluYXRlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZvciBNdWx0aXBsZSBNYXN0ZXJzIGFuZCBHWCB2YXIgZm9udHMsIGNob29zZSBhbiBpbnRlcnBvbGF0ZWQgZm9udCAqLworICAvKiAgICBkZXNpZ24gdGhyb3VnaCBub3JtYWxpemVkIGJsZW5kIGNvb3JkaW5hdGVzLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fY29vcmRzIDo6IFRoZSBudW1iZXIgb2YgZGVzaWduIGNvb3JkaW5hdGVzIChtdXN0IGJlIGVxdWFsIHRvICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGF4ZXMgaW4gdGhlIGZvbnQpLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb29yZHMgICAgIDo6IFRoZSBkZXNpZ24gY29vcmRpbmF0ZXMgYXJyYXkgKGVhY2ggZWxlbWVudCBtdXN0IGJlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBiZXR3ZWVuIDAgYW5kIDEuMCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU2V0X01NX0JsZW5kX0Nvb3JkaW5hdGVzKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBudW1fY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TZXRfVmFyX0JsZW5kX0Nvb3JkaW5hdGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGlzIGFub3RoZXIgbmFtZSBvZiBARlRfU2V0X01NX0JsZW5kX0Nvb3JkaW5hdGVzLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TZXRfVmFyX0JsZW5kX0Nvb3JkaW5hdGVzKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZHMgKTsKKworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVE1NX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRtb2RhcGkuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kYXBpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyYzBhOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kYXBpLmgKQEAgLTAsMCArMSw2NDEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0bW9kYXBpLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBtb2R1bGVzIHB1YmxpYyBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAzLCAyMDA2LCAyMDA4LTIwMTAsIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUTU9EQVBJX0hfXworI2RlZmluZSBfX0ZUTU9EQVBJX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlX21hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTW9kdWxlIE1hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSG93IHRvIGFkZCwgdXBncmFkZSwgcmVtb3ZlLCBhbmQgY29udHJvbCBtb2R1bGVzIGZyb20gRnJlZVR5cGUuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGRlZmluaXRpb25zIGJlbG93IGFyZSB1c2VkIHRvIG1hbmFnZSBtb2R1bGVzIHdpdGhpbiBGcmVlVHlwZS4gICovCisgIC8qICAgIE1vZHVsZXMgY2FuIGJlIGFkZGVkLCB1cGdyYWRlZCwgYW5kIHJlbW92ZWQgYXQgcnVudGltZS4gICAgICAgICAgICAqLworICAvKiAgICBBZGRpdGlvbmFsbHksIHNvbWUgbW9kdWxlIHByb3BlcnRpZXMgY2FuIGJlIGNvbnRyb2xsZWQgYWxzby4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEhlcmUgaXMgYSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgYG1vZHVsZV9uYW1lJyBmaWVsZCBpbiAgICAqLworICAvKiAgICB0aGUgQEZUX01vZHVsZV9DbGFzcyBzdHJ1Y3R1cmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGF1dG9maXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBiZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgY2ZmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGd4dmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBvdHZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgcGNmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHBmciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBwc2F1eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgcHNoaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHBzbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICByYXN0ZXIxLCByYXN0ZXI1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgc2ZudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHNtb290aCwgc21vb3RoLWxjZCwgc21vb3RoLWxjZHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB0cnVldHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgdHlwZTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHR5cGU0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICB0MWNpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgd2luZm9udHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgdGhhdCB0aGUgRnJlZVR5cGUgQ2FjaGUgc3ViLXN5c3RlbSBpcyBub3QgYSBGcmVlVHlwZSBtb2R1bGUuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBtb2R1bGUgYml0IGZsYWdzICovCisjZGVmaW5lIEZUX01PRFVMRV9GT05UX0RSSVZFUiAgICAgICAgIDEgIC8qIHRoaXMgbW9kdWxlIGlzIGEgZm9udCBkcml2ZXIgICovCisjZGVmaW5lIEZUX01PRFVMRV9SRU5ERVJFUiAgICAgICAgICAgIDIgIC8qIHRoaXMgbW9kdWxlIGlzIGEgcmVuZGVyZXIgICAgICovCisjZGVmaW5lIEZUX01PRFVMRV9ISU5URVIgICAgICAgICAgICAgIDQgIC8qIHRoaXMgbW9kdWxlIGlzIGEgZ2x5cGggaGludGVyICovCisjZGVmaW5lIEZUX01PRFVMRV9TVFlMRVIgICAgICAgICAgICAgIDggIC8qIHRoaXMgbW9kdWxlIGlzIGEgc3R5bGVyICAgICAgICovCisKKyNkZWZpbmUgRlRfTU9EVUxFX0RSSVZFUl9TQ0FMQUJMRSAgICAgMHgxMDAgICAvKiB0aGUgZHJpdmVyIHN1cHBvcnRzICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2FsYWJsZSBmb250cyAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfTU9EVUxFX0RSSVZFUl9OT19PVVRMSU5FUyAgMHgyMDAgICAvKiB0aGUgZHJpdmVyIGRvZXMgbm90ICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdXBwb3J0IHZlY3RvciBvdXRsaW5lcyAgKi8KKyNkZWZpbmUgRlRfTU9EVUxFX0RSSVZFUl9IQVNfSElOVEVSICAgMHg0MDAgICAvKiB0aGUgZHJpdmVyIHByb3ZpZGVzIGl0cyAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvd24gaGludGVyICAgICAgICAgICAgICAgKi8KKworCisgIC8qIGRlcHJlY2F0ZWQgdmFsdWVzICovCisjZGVmaW5lIGZ0X21vZHVsZV9mb250X2RyaXZlciAgICAgICAgIEZUX01PRFVMRV9GT05UX0RSSVZFUgorI2RlZmluZSBmdF9tb2R1bGVfcmVuZGVyZXIgICAgICAgICAgICBGVF9NT0RVTEVfUkVOREVSRVIKKyNkZWZpbmUgZnRfbW9kdWxlX2hpbnRlciAgICAgICAgICAgICAgRlRfTU9EVUxFX0hJTlRFUgorI2RlZmluZSBmdF9tb2R1bGVfc3R5bGVyICAgICAgICAgICAgICBGVF9NT0RVTEVfU1RZTEVSCisKKyNkZWZpbmUgZnRfbW9kdWxlX2RyaXZlcl9zY2FsYWJsZSAgICAgRlRfTU9EVUxFX0RSSVZFUl9TQ0FMQUJMRQorI2RlZmluZSBmdF9tb2R1bGVfZHJpdmVyX25vX291dGxpbmVzICBGVF9NT0RVTEVfRFJJVkVSX05PX09VVExJTkVTCisjZGVmaW5lIGZ0X21vZHVsZV9kcml2ZXJfaGFzX2hpbnRlciAgIEZUX01PRFVMRV9EUklWRVJfSEFTX0hJTlRFUgorCisKKyAgdHlwZWRlZiBGVF9Qb2ludGVyICBGVF9Nb2R1bGVfSW50ZXJmYWNlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTW9kdWxlX0NvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgKG5vdCBjcmVhdGUpIGEgbmV3IG1vZHVsZSBvYmplY3QuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlIDo6IFRoZSBtb2R1bGUgdG8gaW5pdGlhbGl6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfTW9kdWxlX0NvbnN0cnVjdG9yKSggRlRfTW9kdWxlICBtb2R1bGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX01vZHVsZV9EZXN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCB0byBmaW5hbGl6ZSAobm90IGRlc3Ryb3kpIGEgZ2l2ZW4gbW9kdWxlIG9iamVjdC4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZSA6OiBUaGUgbW9kdWxlIHRvIGZpbmFsaXplLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfTW9kdWxlX0Rlc3RydWN0b3IpKCBGVF9Nb2R1bGUgIG1vZHVsZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTW9kdWxlX1JlcXVlc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIHF1ZXJ5IGEgZ2l2ZW4gbW9kdWxlIGZvciBhIHNwZWNpZmljIGludGVyZmFjZS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlIDo6IFRoZSBtb2R1bGUgdG8gYmUgc2VhcmNoZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuYW1lIDo6ICAgVGhlIG5hbWUgb2YgdGhlIGludGVyZmFjZSBpbiB0aGUgbW9kdWxlLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfTW9kdWxlX0ludGVyZmFjZQorICAoKkZUX01vZHVsZV9SZXF1ZXN0ZXIpKCBGVF9Nb2R1bGUgICAgbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgbmFtZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTW9kdWxlX0NsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG1vZHVsZSBjbGFzcyBkZXNjcmlwdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlX2ZsYWdzICAgIDo6IEJpdCBmbGFncyBkZXNjcmliaW5nIHRoZSBtb2R1bGUuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2R1bGVfc2l6ZSAgICAgOjogVGhlIHNpemUgb2Ygb25lIG1vZHVsZSBvYmplY3QvaW5zdGFuY2UgaW4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2R1bGVfbmFtZSAgICAgOjogVGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZV92ZXJzaW9uICA6OiBUaGUgdmVyc2lvbiwgYXMgYSAxNi4xNiBmaXhlZCBudW1iZXIgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgKG1ham9yLm1pbm9yKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZV9yZXF1aXJlcyA6OiBUaGUgdmVyc2lvbiBvZiBGcmVlVHlwZSB0aGlzIG1vZHVsZSByZXF1aXJlcywgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgYXMgYSAxNi4xNiBmaXhlZCBudW1iZXIgKG1ham9yLm1pbm9yKS4gIFN0YXJ0cyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIGF0IHZlcnNpb24gMi4wLCBpLmUuLCAweDIwMDAwLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2R1bGVfaW5pdCAgICAgOjogVGhlIGluaXRpYWxpemluZyBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZV9kb25lICAgICA6OiBUaGUgZmluYWxpemluZyBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2V0X2ludGVyZmFjZSAgIDo6IFRoZSBpbnRlcmZhY2UgcmVxdWVzdGluZyBmdW5jdGlvbi4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfTW9kdWxlX0NsYXNzXworICB7CisgICAgRlRfVUxvbmcgICAgICAgICAgICAgICBtb2R1bGVfZmxhZ3M7CisgICAgRlRfTG9uZyAgICAgICAgICAgICAgICBtb2R1bGVfc2l6ZTsKKyAgICBjb25zdCBGVF9TdHJpbmcqICAgICAgIG1vZHVsZV9uYW1lOworICAgIEZUX0ZpeGVkICAgICAgICAgICAgICAgbW9kdWxlX3ZlcnNpb247CisgICAgRlRfRml4ZWQgICAgICAgICAgICAgICBtb2R1bGVfcmVxdWlyZXM7CisKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgIG1vZHVsZV9pbnRlcmZhY2U7CisKKyAgICBGVF9Nb2R1bGVfQ29uc3RydWN0b3IgIG1vZHVsZV9pbml0OworICAgIEZUX01vZHVsZV9EZXN0cnVjdG9yICAgbW9kdWxlX2RvbmU7CisgICAgRlRfTW9kdWxlX1JlcXVlc3RlciAgICBnZXRfaW50ZXJmYWNlOworCisgIH0gRlRfTW9kdWxlX0NsYXNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQWRkX01vZHVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQWRkIGEgbmV3IG1vZHVsZSB0byBhIGdpdmVuIGxpYnJhcnkgaW5zdGFuY2UuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2xhenogICA6OiBBIHBvaW50ZXIgdG8gY2xhc3MgZGVzY3JpcHRvciBmb3IgdGhlIG1vZHVsZS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gZXJyb3Igd2lsbCBiZSByZXR1cm5lZCBpZiBhIG1vZHVsZSBhbHJlYWR5IGV4aXN0cyBieSB0aGF0IG5hbWUsICovCisgIC8qICAgIG9yIGlmIHRoZSBtb2R1bGUgcmVxdWlyZXMgYSB2ZXJzaW9uIG9mIEZyZWVUeXBlIHRoYXQgaXMgdG9vIGdyZWF0LiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0FkZF9Nb2R1bGUoIEZUX0xpYnJhcnkgICAgICAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgIGNvbnN0IEZUX01vZHVsZV9DbGFzcyogIGNsYXp6ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfTW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGaW5kIGEgbW9kdWxlIGJ5IGl0cyBuYW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgICA6OiBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZV9uYW1lIDo6IFRoZSBtb2R1bGUncyBuYW1lIChhcyBhbiBBU0NJSSBzdHJpbmcpLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgbW9kdWxlIGhhbmRsZS4gIDB+aWYgbm9uZSB3YXMgZm91bmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlJ3MgaW50ZXJuYWwgbW9kdWxlcyBhcmVuJ3QgZG9jdW1lbnRlZCB2ZXJ5IHdlbGwsIGFuZCB5b3UgICAqLworICAvKiAgICBzaG91bGQgbG9vayB1cCB0aGUgc291cmNlIGNvZGUgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfTW9kdWxlICkKKyAgRlRfR2V0X01vZHVsZSggRlRfTGlicmFyeSAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBtb2R1bGVfbmFtZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmVtb3ZlX01vZHVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmVtb3ZlIGEgZ2l2ZW4gbW9kdWxlIGZyb20gYSBsaWJyYXJ5IGluc3RhbmNlLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSB0byBhIGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlICA6OiBBIGhhbmRsZSB0byBhIG1vZHVsZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG1vZHVsZSBvYmplY3QgaXMgZGVzdHJveWVkIGJ5IHRoZSBmdW5jdGlvbiBpbiBjYXNlIG9mIHN1Y2Nlc3MuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfUmVtb3ZlX01vZHVsZSggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlICAgbW9kdWxlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgIEZUX1Byb3BlcnR5X1NldAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgIFNldCBhIHByb3BlcnR5IGZvciBhIGdpdmVuIG1vZHVsZS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgICBsaWJyYXJ5IDo6CisgICAqICAgICAgIEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IHRoZSBtb2R1bGUgaXMgcGFydCBvZi4KKyAgICoKKyAgICogICAgbW9kdWxlX25hbWUgOjoKKyAgICogICAgICAgVGhlIG1vZHVsZSBuYW1lLgorICAgKgorICAgKiAgICBwcm9wZXJ0eV9uYW1lIDo6CisgICAqICAgICAgIFRoZSBwcm9wZXJ0eSBuYW1lLiAgUHJvcGVydGllcyBhcmUgZGVzY3JpYmVkIGluIHRoZSBgU3lub3BzaXMnCisgICAqICAgICAgIHN1YnNlY3Rpb24gb2YgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24uCisgICAqCisgICAqICAgICAgIE5vdGUgdGhhdCBvbmx5IGEgZmV3IG1vZHVsZXMgaGF2ZSBwcm9wZXJ0aWVzLgorICAgKgorICAgKiAgICB2YWx1ZSA6OgorICAgKiAgICAgICBBIGdlbmVyaWMgcG9pbnRlciB0byBhIHZhcmlhYmxlIG9yIHN0cnVjdHVyZSB3aGljaCBnaXZlcyB0aGUgbmV3CisgICAqICAgICAgIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4gIFRoZSBleGFjdCBkZWZpbml0aW9uIG9mIGB2YWx1ZScgaXMKKyAgICogICAgICAgZGVwZW5kZW50IG9uIHRoZSBwcm9wZXJ0eTsgc2VlIHRoZSBgU3lub3BzaXMnIHN1YnNlY3Rpb24gb2YgdGhlCisgICAqICAgICAgIG1vZHVsZSdzIGRvY3VtZW50YXRpb24uCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgIElmIGBtb2R1bGVfbmFtZScgaXNuJ3QgYSB2YWxpZCBtb2R1bGUgbmFtZSwgb3IgYHByb3BlcnR5X25hbWUnCisgICAqICAgIGRvZXNuJ3Qgc3BlY2lmeSBhIHZhbGlkIHByb3BlcnR5LCBvciBpZiBgdmFsdWUnIGRvZXNuJ3QgcmVwcmVzZW50IGEKKyAgICogICAgdmFsaWQgdmFsdWUgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSwgYW4gZXJyb3IgaXMgcmV0dXJuZWQuCisgICAqCisgICAqICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzZXRzIHByb3BlcnR5IGBiYXInIChhIHNpbXBsZSBpbnRlZ2VyKSBpbgorICAgKiAgICBtb2R1bGUgYGZvbycgdG8gdmFsdWV+MS4KKyAgICoKKyAgICogICAgeworICAgKiAgICAgIEZUX1VJbnQgIGJhcjsKKyAgICoKKyAgICoKKyAgICogICAgICBiYXIgPSAxOworICAgKiAgICAgIEZUX1Byb3BlcnR5X1NldCggbGlicmFyeSwgImZvbyIsICJiYXIiLCAmYmFyICk7CisgICAqICAgIH0KKyAgICoKKyAgICogICAgTm90ZSB0aGF0IHRoZSBGcmVlVHlwZSBDYWNoZSBzdWItc3lzdGVtIGRvZXNuJ3QgcmVjb2duaXplIG1vZHVsZQorICAgKiAgICBwcm9wZXJ0eSBjaGFuZ2VzLiAgVG8gYXZvaWQgZ2x5cGggbG9va3VwIGNvbmZ1c2lvbiB3aXRoaW4gdGhlIGNhY2hlCisgICAqICAgIHlvdSBzaG91bGQgY2FsbCBARlRDX01hbmFnZXJfUmVzZXQgdG8gY29tcGxldGVseSBmbHVzaCB0aGUgY2FjaGUgaWYKKyAgICogICAgYSBtb2R1bGUgcHJvcGVydHkgZ2V0cyBjaGFuZ2VkIGFmdGVyIEBGVENfTWFuYWdlcl9OZXcgaGFzIGJlZW4KKyAgICogICAgY2FsbGVkLgorICAgKgorICAgKiAgICBJdCBpcyBub3QgcG9zc2libGUgdG8gc2V0IHByb3BlcnRpZXMgb2YgdGhlIEZyZWVUeXBlIENhY2hlCisgICAqICAgIHN1Yi1zeXN0ZW0gaXRzZWxmIHdpdGggRlRfUHJvcGVydHlfU2V0OyB1c2UgQEZUQ19Qcm9wZXJ0eV9TZXQKKyAgICogICAgaW5zdGVhZC4KKyAgICoKKyAgICogIEBzaW5jZToKKyAgICogICAgMi40LjExCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfUHJvcGVydHlfU2V0KCBGVF9MaWJyYXJ5ICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1N0cmluZyogIG1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1N0cmluZyogIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogICAgICAgdmFsdWUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICAgRlRfUHJvcGVydHlfR2V0CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgR2V0IGEgbW9kdWxlJ3MgcHJvcGVydHkgdmFsdWUuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICAgbGlicmFyeSA6OgorICAgKiAgICAgICBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSB0aGUgbW9kdWxlIGlzIHBhcnQgb2YuCisgICAqCisgICAqICAgIG1vZHVsZV9uYW1lIDo6CisgICAqICAgICAgIFRoZSBtb2R1bGUgbmFtZS4KKyAgICoKKyAgICogICAgcHJvcGVydHlfbmFtZSA6OgorICAgKiAgICAgICBUaGUgcHJvcGVydHkgbmFtZS4gIFByb3BlcnRpZXMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgYFN5bm9wc2lzJworICAgKiAgICAgICBzdWJzZWN0aW9uIG9mIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uLgorICAgKgorICAgKiBAaW5vdXQ6CisgICAqICAgIHZhbHVlIDo6CisgICAqICAgICAgIEEgZ2VuZXJpYyBwb2ludGVyIHRvIGEgdmFyaWFibGUgb3Igc3RydWN0dXJlIHdoaWNoIGdpdmVzIHRoZQorICAgKiAgICAgICB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuICBUaGUgZXhhY3QgZGVmaW5pdGlvbiBvZiBgdmFsdWUnIGlzCisgICAqICAgICAgIGRlcGVuZGVudCBvbiB0aGUgcHJvcGVydHk7IHNlZSB0aGUgYFN5bm9wc2lzJyBzdWJzZWN0aW9uIG9mIHRoZQorICAgKiAgICAgICBtb2R1bGUncyBkb2N1bWVudGF0aW9uLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgICBJZiBgbW9kdWxlX25hbWUnIGlzbid0IGEgdmFsaWQgbW9kdWxlIG5hbWUsIG9yIGBwcm9wZXJ0eV9uYW1lJworICAgKiAgICBkb2Vzbid0IHNwZWNpZnkgYSB2YWxpZCBwcm9wZXJ0eSwgb3IgaWYgYHZhbHVlJyBkb2Vzbid0IHJlcHJlc2VudCBhCisgICAqICAgIHZhbGlkIHZhbHVlIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHksIGFuIGVycm9yIGlzIHJldHVybmVkLgorICAgKgorICAgKiAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZ2V0cyBwcm9wZXJ0eSBgYmF6JyAoYSByYW5nZSkgaW4gbW9kdWxlIGBmb28nLgorICAgKgorICAgKiAgICB7CisgICAqICAgICAgdHlwZWRlZiAgcmFuZ2VfCisgICAqICAgICAgeworICAgKiAgICAgICAgRlRfSW50MzIgIG1pbjsKKyAgICogICAgICAgIEZUX0ludDMyICBtYXg7CisgICAqCisgICAqICAgICAgfSByYW5nZTsKKyAgICoKKyAgICogICAgICByYW5nZSAgYmF6OworICAgKgorICAgKgorICAgKiAgICAgIEZUX1Byb3BlcnR5X0dldCggbGlicmFyeSwgImZvbyIsICJiYXoiLCAmYmF6ICk7CisgICAqICAgIH0KKyAgICoKKyAgICogICAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIHJldHJpZXZlIHByb3BlcnRpZXMgb2YgdGhlIEZyZWVUeXBlIENhY2hlCisgICAqICAgIHN1Yi1zeXN0ZW0gd2l0aCBGVF9Qcm9wZXJ0eV9HZXQ7IHVzZSBARlRDX1Byb3BlcnR5X0dldCBpbnN0ZWFkLgorICAgKgorICAgKiAgQHNpbmNlOgorICAgKiAgICAyLjQuMTEKKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9Qcm9wZXJ0eV9HZXQoIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgbW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgcHJvcGVydHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICB2YWx1ZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmVmZXJlbmNlX0xpYnJhcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBjb3VudGVyIGdldHMgaW5pdGlhbGl6ZWQgdG9+MSBhdCB0aGUgdGltZSBhbiBARlRfTGlicmFyeSAgICAgICAgICovCisgIC8qICAgIHN0cnVjdHVyZSBpcyBjcmVhdGVkLiAgVGhpcyBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBjb3VudGVyLiAgICAgICAqLworICAvKiAgICBARlRfRG9uZV9MaWJyYXJ5IHRoZW4gb25seSBkZXN0cm95cyBhIGxpYnJhcnkgaWYgdGhlIGNvdW50ZXIgaXN+MSwgKi8KKyAgLyogICAgb3RoZXJ3aXNlIGl0IHNpbXBseSBkZWNyZW1lbnRzIHRoZSBjb3VudGVyLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGhlbHBzIGluIG1hbmFnaW5nIGxpZmUtY3ljbGVzIG9mIHN0cnVjdHVyZXMgd2hpY2ggICAgKi8KKyAgLyogICAgcmVmZXJlbmNlIEBGVF9MaWJyYXJ5IG9iamVjdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSB0byBhIHRhcmdldCBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2luY2U+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgMi40LjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfUmVmZXJlbmNlX0xpYnJhcnkoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX05ld19MaWJyYXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjcmVhdGUgYSBuZXcgRnJlZVR5cGUgbGlicmFyeSBpbnN0YW5jZSAgICAqLworICAvKiAgICBmcm9tIGEgZ2l2ZW4gbWVtb3J5IG9iamVjdC4gIEl0IGlzIHRodXMgcG9zc2libGUgdG8gdXNlIGxpYnJhcmllcyAgKi8KKyAgLyogICAgd2l0aCBkaXN0aW5jdCBtZW1vcnkgYWxsb2NhdG9ycyB3aXRoaW4gdGhlIHNhbWUgcHJvZ3JhbS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3JtYWxseSwgeW91IHdvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiAoZm9sbG93ZWQgYnkgYSBjYWxsIHRvICAgICAgKi8KKyAgLyogICAgQEZUX0FkZF9EZWZhdWx0X01vZHVsZXMgb3IgYSBzZXJpZXMgb2YgY2FsbHMgdG8gQEZUX0FkZF9Nb2R1bGUpICAgICovCisgIC8qICAgIGluc3RlYWQgb2YgQEZUX0luaXRfRnJlZVR5cGUgdG8gaW5pdGlhbGl6ZSB0aGUgRnJlZVR5cGUgbGlicmFyeS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRG9uJ3QgdXNlIEBGVF9Eb25lX0ZyZWVUeXBlIGJ1dCBARlRfRG9uZV9MaWJyYXJ5IHRvIGRlc3Ryb3kgYSAgICAgICovCisgIC8qICAgIGxpYnJhcnkgaW5zdGFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSAgIDo6IEEgaGFuZGxlIHRvIHRoZSBvcmlnaW5hbCBtZW1vcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFsaWJyYXJ5IDo6IEEgcG9pbnRlciB0byBoYW5kbGUgb2YgYSBuZXcgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlZSB0aGUgZGlzY3Vzc2lvbiBvZiByZWZlcmVuY2UgY291bnRlcnMgaW4gdGhlIGRlc2NyaXB0aW9uIG9mICAgICAqLworICAvKiAgICBARlRfUmVmZXJlbmNlX0xpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9OZXdfTGlicmFyeSggRlRfTWVtb3J5ICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgIEZUX0xpYnJhcnkgICphbGlicmFyeSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRG9uZV9MaWJyYXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGlzY2FyZCBhIGdpdmVuIGxpYnJhcnkgb2JqZWN0LiAgVGhpcyBjbG9zZXMgYWxsIGRyaXZlcnMgYW5kICAgICAgICovCisgIC8qICAgIGRpc2NhcmRzIGFsbCByZXNvdXJjZSBvYmplY3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBsaWJyYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlZSB0aGUgZGlzY3Vzc2lvbiBvZiByZWZlcmVuY2UgY291bnRlcnMgaW4gdGhlIGRlc2NyaXB0aW9uIG9mICAgICAqLworICAvKiAgICBARlRfUmVmZXJlbmNlX0xpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9Eb25lX0xpYnJhcnkoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworLyogKi8KKworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9EZWJ1Z0hvb2tfRnVuYykoIHZvaWQqICBhcmcgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NldF9EZWJ1Z19Ib29rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNldCBhIGRlYnVnIGhvb2sgZnVuY3Rpb24gZm9yIGRlYnVnZ2luZyB0aGUgaW50ZXJwcmV0ZXIgb2YgYSBmb250ICAqLworICAvKiAgICBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBob29rX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgZGVidWcgaG9vay4gIFlvdSBzaG91bGQgdXNlIHRoZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICB2YWx1ZXMgZGVmaW5lZCBpbiBgZnRvYmpzLmgnLCBlLmcuLCAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgYEZUX0RFQlVHX0hPT0tfVFJVRVRZUEUnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVidWdfaG9vayA6OiBUaGUgZnVuY3Rpb24gdXNlZCB0byBkZWJ1ZyB0aGUgaW50ZXJwcmV0ZXIuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ3VycmVudGx5LCBmb3VyIGRlYnVnIGhvb2sgc2xvdHMgYXJlIGF2YWlsYWJsZSwgYnV0IG9ubHkgdHdvIChmb3IgICovCisgIC8qICAgIHRoZSBUcnVlVHlwZSBhbmQgdGhlIFR5cGV+MSBpbnRlcnByZXRlcikgYXJlIGRlZmluZWQuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2luY2UgdGhlIGludGVybmFsIGhlYWRlcnMgb2YgRnJlZVR5cGUgYXJlIG5vIGxvbmdlciBpbnN0YWxsZWQsICAgICovCisgIC8qICAgIHRoZSBzeW1ib2wgYEZUX0RFQlVHX0hPT0tfVFJVRVRZUEUnIGlzbid0IGF2YWlsYWJsZSBwdWJsaWNseS4gICAgICAqLworICAvKiAgICBUaGlzIGlzIGEgYnVnIGFuZCB3aWxsIGJlIGZpeGVkIGluIGEgZm9ydGhjb21pbmcgcmVsZWFzZS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1NldF9EZWJ1Z19Ib29rKCBGVF9MaWJyYXJ5ICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgICBob29rX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgRlRfRGVidWdIb29rX0Z1bmMgIGRlYnVnX2hvb2sgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0FkZF9EZWZhdWx0X01vZHVsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFkZCB0aGUgc2V0IG9mIGRlZmF1bHQgZHJpdmVycyB0byBhIGdpdmVuIGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAqLworICAvKiAgICBUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4geW91IGNyZWF0ZSBhIGxpYnJhcnkgb2JqZWN0IHdpdGggICAgICAgICAgKi8KKyAgLyogICAgQEZUX05ld19MaWJyYXJ5ICh1c3VhbGx5IHRvIHBsdWcgYSBjdXN0b20gbWVtb3J5IG1hbmFnZXIpLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSB0byBhIG5ldyBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9BZGRfRGVmYXVsdF9Nb2R1bGVzKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc2VjdGlvbjoKKyAgICogICB0cnVldHlwZV9lbmdpbmUKKyAgICoKKyAgICogQHRpdGxlOgorICAgKiAgIFRoZSBUcnVlVHlwZSBFbmdpbmUKKyAgICoKKyAgICogQGFic3RyYWN0OgorICAgKiAgIFRydWVUeXBlIGJ5dGVjb2RlIHN1cHBvcnQuCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYSBmdW5jdGlvbiB1c2VkIHRvIHF1ZXJ5IHRoZSBsZXZlbCBvZiBUcnVlVHlwZQorICAgKiAgIGJ5dGVjb2RlIHN1cHBvcnQgY29tcGlsZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgKgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiAgQGVudW06CisgICAqICAgICBGVF9UcnVlVHlwZUVuZ2luZVR5cGUKKyAgICoKKyAgICogIEBkZXNjcmlwdGlvbjoKKyAgICogICAgIEEgbGlzdCBvZiB2YWx1ZXMgZGVzY3JpYmluZyB3aGljaCBraW5kIG9mIFRydWVUeXBlIGJ5dGVjb2RlCisgICAqICAgICBlbmdpbmUgaXMgaW1wbGVtZW50ZWQgaW4gYSBnaXZlbiBGVF9MaWJyYXJ5IGluc3RhbmNlLiAgSXQgaXMgdXNlZAorICAgKiAgICAgYnkgdGhlIEBGVF9HZXRfVHJ1ZVR5cGVfRW5naW5lX1R5cGUgZnVuY3Rpb24uCisgICAqCisgICAqICBAdmFsdWVzOgorICAgKiAgICAgRlRfVFJVRVRZUEVfRU5HSU5FX1RZUEVfTk9ORSA6OgorICAgKiAgICAgICBUaGUgbGlicmFyeSBkb2Vzbid0IGltcGxlbWVudCBhbnkga2luZCBvZiBieXRlY29kZSBpbnRlcnByZXRlci4KKyAgICoKKyAgICogICAgIEZUX1RSVUVUWVBFX0VOR0lORV9UWVBFX1VOUEFURU5URUQgOjoKKyAgICogICAgICAgVGhlIGxpYnJhcnkgaW1wbGVtZW50cyBhIGJ5dGVjb2RlIGludGVycHJldGVyIHRoYXQgZG9lc24ndAorICAgKiAgICAgICBzdXBwb3J0IHRoZSBwYXRlbnRlZCBvcGVyYXRpb25zIG9mIHRoZSBUcnVlVHlwZSB2aXJ0dWFsIG1hY2hpbmUuCisgICAqCisgICAqICAgICAgIEl0cyBtYWluIHVzZSBpcyB0byBsb2FkIGNlcnRhaW4gQXNpYW4gZm9udHMgd2hpY2ggcG9zaXRpb24gYW5kCisgICAqICAgICAgIHNjYWxlIGdseXBoIGNvbXBvbmVudHMgd2l0aCBieXRlY29kZSBpbnN0cnVjdGlvbnMuICBJdCBwcm9kdWNlcworICAgKiAgICAgICBiYWQgb3V0cHV0IGZvciBtb3N0IG90aGVyIGZvbnRzLgorICAgKgorICAgKiAgICAgRlRfVFJVRVRZUEVfRU5HSU5FX1RZUEVfUEFURU5URUQgOjoKKyAgICogICAgICAgVGhlIGxpYnJhcnkgaW1wbGVtZW50cyBhIGJ5dGVjb2RlIGludGVycHJldGVyIHRoYXQgY292ZXJzCisgICAqICAgICAgIHRoZSBmdWxsIGluc3RydWN0aW9uIHNldCBvZiB0aGUgVHJ1ZVR5cGUgdmlydHVhbCBtYWNoaW5lICh0aGlzCisgICAqICAgICAgIHdhcyBnb3Zlcm5lZCBieSBwYXRlbnRzIHVudGlsIE1heSAyMDEwLCBoZW5jZSB0aGUgbmFtZSkuCisgICAqCisgICAqICBAc2luY2U6CisgICAqICAgICAyLjIKKyAgICoKKyAgICovCisgIHR5cGVkZWYgZW51bSAgRlRfVHJ1ZVR5cGVFbmdpbmVUeXBlXworICB7CisgICAgRlRfVFJVRVRZUEVfRU5HSU5FX1RZUEVfTk9ORSA9IDAsCisgICAgRlRfVFJVRVRZUEVfRU5HSU5FX1RZUEVfVU5QQVRFTlRFRCwKKyAgICBGVF9UUlVFVFlQRV9FTkdJTkVfVFlQRV9QQVRFTlRFRAorCisgIH0gRlRfVHJ1ZVR5cGVFbmdpbmVUeXBlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqICBAZnVuYzoKKyAgICogICAgIEZUX0dldF9UcnVlVHlwZV9FbmdpbmVfVHlwZQorICAgKgorICAgKiAgQGRlc2NyaXB0aW9uOgorICAgKiAgICAgUmV0dXJuIGFuIEBGVF9UcnVlVHlwZUVuZ2luZVR5cGUgdmFsdWUgdG8gaW5kaWNhdGUgd2hpY2ggbGV2ZWwgb2YKKyAgICogICAgIHRoZSBUcnVlVHlwZSB2aXJ0dWFsIG1hY2hpbmUgYSBnaXZlbiBsaWJyYXJ5IGluc3RhbmNlIHN1cHBvcnRzLgorICAgKgorICAgKiAgQGlucHV0OgorICAgKiAgICAgbGlicmFyeSA6OgorICAgKiAgICAgICBBIGxpYnJhcnkgaW5zdGFuY2UuCisgICAqCisgICAqICBAcmV0dXJuOgorICAgKiAgICAgQSB2YWx1ZSBpbmRpY2F0aW5nIHdoaWNoIGxldmVsIGlzIHN1cHBvcnRlZC4KKyAgICoKKyAgICogIEBzaW5jZToKKyAgICogICAgIDIuMgorICAgKgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9UcnVlVHlwZUVuZ2luZVR5cGUgKQorICBGVF9HZXRfVHJ1ZVR5cGVfRW5naW5lX1R5cGUoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVE1PREFQSV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYTg1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oCkBAIC0wLDAgKzEsMTk0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdG1vZGVyci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgbW9kdWxlIGVycm9yIG9mZnNldHMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEtMjAwNSwgMjAxMCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIEZyZWVUeXBlIG1vZHVsZSBlcnJvciBjb2Rlcy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIElmIHRoZSBtYWNybyBGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTIGluIGBmdG9wdGlvbi5oJyBpcyAgICAqLworICAvKiBzZXQsIHRoZSBsb3dlciBieXRlIG9mIGFuIGVycm9yIHZhbHVlIGlkZW50aWZpZXMgdGhlIGVycm9yIGNvZGUgYXMgICAgKi8KKyAgLyogdXN1YWwuICBJbiBhZGRpdGlvbiwgdGhlIGhpZ2hlciBieXRlIGlkZW50aWZpZXMgdGhlIG1vZHVsZS4gIEZvciAgICAgICovCisgIC8qIGV4YW1wbGUsIHRoZSBlcnJvciBgRlRfRXJyX0ludmFsaWRfRmlsZV9Gb3JtYXQnIGhhcyB2YWx1ZSAweDAwMDMsIHRoZSAqLworICAvKiBlcnJvciBgVFRfRXJyX0ludmFsaWRfRmlsZV9Gb3JtYXQnIGhhcyB2YWx1ZSAweDEzMDMsIHRoZSBlcnJvciAgICAgICAgKi8KKyAgLyogYFQxX0Vycl9JbnZhbGlkX0ZpbGVfRm9ybWF0JyBoYXMgdmFsdWUgMHgxNDAzLCBldGMuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlIHRoYXQgYEZUX0Vycl9PaycsIGBUVF9FcnJfT2snLCBldGMuIGFyZSBhbHdheXMgZXF1YWwgdG8gemVybywgICAgKi8KKyAgLyogaW5jbHVkaW5nIHRoZSBoaWdoIGJ5dGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJZiBGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTIGlzbid0IHNldCwgdGhlIGhpZ2hlciBieXRlIG9mICAgKi8KKyAgLyogYW4gZXJyb3IgdmFsdWUgaXMgc2V0IHRvIHplcm8uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUbyBoaWRlIHRoZSB2YXJpb3VzIGBYWFhfRXJyXycgcHJlZml4ZXMgaW4gdGhlIHNvdXJjZSBjb2RlLCBGcmVlVHlwZSAgKi8KKyAgLyogcHJvdmlkZXMgc29tZSBtYWNyb3MgaW4gYGZ0dHlwZXMuaCcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZUX0VSUiggZXJyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIEFkZCBjdXJyZW50IGVycm9yIG1vZHVsZSBwcmVmaXggKGFzIGRlZmluZWQgd2l0aCB0aGUgICAgICAgICAgICAgICovCisgIC8qICAgICBgRlRfRVJSX1BSRUZJWCcgbWFjcm8pIHRvIGBlcnInLiAgRm9yIGV4YW1wbGUsIGluIHRoZSBCREYgbW9kdWxlICAqLworICAvKiAgICAgdGhlIGxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgIGVycm9yID0gRlRfRVJSKCBJbnZhbGlkX091dGxpbmUgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGV4cGFuZHMgdG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBlcnJvciA9IEJERl9FcnJfSW52YWxpZF9PdXRsaW5lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBGb3Igc2ltcGxpY2l0eSwgeW91IGNhbiBhbHdheXMgdXNlIGBGVF9FcnJfT2snIGRpcmVjdGx5IGluc3RlYWQgICAqLworICAvKiAgICAgb2YgYEZUX0VSUiggT2sgKScuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRlRfRVJSX0VRKCBlcnJjb2RlLCBlcnIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZUX0VSUl9ORVEoIGVycmNvZGUsIGVyciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIENvbXBhcmUgZXJyb3IgY29kZSBgZXJyY29kZScgd2l0aCB0aGUgZXJyb3IgYGVycicgZm9yIGVxdWFsaXR5ICAgICovCisgIC8qICAgICBhbmQgaW5lcXVhbGl0eSwgcmVzcGVjdGl2ZWx5LiAgRXhhbXBsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgaWYgKCBGVF9FUlJfRVEoIGVycm9yLCBJbnZhbGlkX091dGxpbmUgKSApICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIFVzaW5nIHRoaXMgbWFjcm8geW91IGRvbid0IGhhdmUgdG8gdGhpbmsgYWJvdXQgZXJyb3IgcHJlZml4ZXMuICAgICovCisgIC8qICAgICBPZiBjb3Vyc2UsIGlmIG1vZHVsZSBlcnJvcnMgYXJlIG5vdCBhY3RpdmUsIHRoZSBhYm92ZSBleGFtcGxlIGlzICAqLworICAvKiAgICAgdGhlIHNhbWUgYXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgIGlmICggZXJyb3IgPT0gRlRfRXJyX0ludmFsaWRfT3V0bGluZSApICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRlRfRVJST1JfQkFTRSggZXJyY29kZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZUX0VSUk9SX01PRFVMRSggZXJyY29kZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIEdldCBiYXNlIGVycm9yIGFuZCBtb2R1bGUgZXJyb3IgY29kZSwgcmVzcGVjdGl2ZWx5LiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSXQgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUgYSBtb2R1bGUgZXJyb3IgbWVzc2FnZSB0YWJsZSBlYXNpbHkgICAgICovCisgIC8qIHdpdGggc29tZXRoaW5nIGxpa2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAjdW5kZWYgX19GVE1PREVSUl9IX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgI2RlZmluZSBGVF9NT0RFUlJERUYoIGUsIHYsIHMgKSAgeyBGVF9Nb2RfRXJyXyAjIyBlLCBzIH0sICAgICAgICAgKi8KKyAgLyogICAgICNkZWZpbmUgRlRfTU9ERVJSX1NUQVJUX0xJU1QgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAjZGVmaW5lIEZUX01PREVSUl9FTkRfTElTVCAgICAgICB7IDAsIDAgfSB9OyAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGNvbnN0IHN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBpbnQgICAgICAgICAgbW9kX2Vycl9vZmZzZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgY29uc3QgY2hhciogIG1vZF9lcnJfbXNnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICB9IGZ0X21vZF9lcnJvcnNbXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICNpbmNsdWRlICJmdG1vZGVyci5oIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUTU9ERVJSX0hfXworI2RlZmluZSBfX0ZUTU9ERVJSX0hfXworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICBTRVRVUCBNQUNST1MgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI3VuZGVmICBGVF9ORUVEX0VYVEVSTl9DCisKKyNpZm5kZWYgRlRfTU9ERVJSREVGCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTCisjZGVmaW5lIEZUX01PREVSUkRFRiggZSwgdiwgcyApICBGVF9Nb2RfRXJyXyAjIyBlID0gdiwKKyNlbHNlCisjZGVmaW5lIEZUX01PREVSUkRFRiggZSwgdiwgcyApICBGVF9Nb2RfRXJyXyAjIyBlID0gMCwKKyNlbmRpZgorCisjZGVmaW5lIEZUX01PREVSUl9TVEFSVF9MSVNUICBlbnVtIHsKKyNkZWZpbmUgRlRfTU9ERVJSX0VORF9MSVNUICAgIEZUX01vZF9FcnJfTWF4IH07CisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9ORUVEX0VYVEVSTl9DCisgIGV4dGVybiAiQyIgeworI2VuZGlmCisKKyNlbmRpZiAvKiAhRlRfTU9ERVJSREVGICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICBMSVNUIE1PRFVMRSBFUlJPUiBCQVNFUyAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZkZWYgRlRfTU9ERVJSX1NUQVJUX0xJU1QKKyAgRlRfTU9ERVJSX1NUQVJUX0xJU1QKKyNlbmRpZgorCisKKyAgRlRfTU9ERVJSREVGKCBCYXNlLCAgICAgIDB4MDAwLCAiYmFzZSBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBBdXRvZml0LCAgIDB4MTAwLCAiYXV0b2ZpdHRlciBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBCREYsICAgICAgIDB4MjAwLCAiQkRGIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIEJ6aXAyLCAgICAgMHgzMDAsICJCemlwMiBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBDYWNoZSwgICAgIDB4NDAwLCAiY2FjaGUgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggQ0ZGLCAgICAgICAweDUwMCwgIkNGRiBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBDSUQsICAgICAgIDB4NjAwLCAiQ0lEIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIEd6aXAsICAgICAgMHg3MDAsICJHemlwIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIExaVywgICAgICAgMHg4MDAsICJMWlcgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggT1R2YWxpZCwgICAweDkwMCwgIk9wZW5UeXBlIHZhbGlkYXRpb24gbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggUENGLCAgICAgICAweEEwMCwgIlBDRiBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBQRlIsICAgICAgIDB4QjAwLCAiUEZSIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIFBTYXV4LCAgICAgMHhDMDAsICJQUyBhdXhpbGlhcnkgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggUFNoaW50ZXIsICAweEQwMCwgIlBTIGhpbnRlciBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBQU25hbWVzLCAgIDB4RTAwLCAiUFMgbmFtZXMgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggUmFzdGVyLCAgICAweEYwMCwgInJhc3RlciBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBTRk5ULCAgICAgMHgxMDAwLCAiU0ZOVCBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBTbW9vdGgsICAgMHgxMTAwLCAic21vb3RoIHJhc3RlciBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBUcnVlVHlwZSwgMHgxMjAwLCAiVHJ1ZVR5cGUgbW9kdWxlIiApCisgIEZUX01PREVSUkRFRiggVHlwZTEsICAgIDB4MTMwMCwgIlR5cGUgMSBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBUeXBlNDIsICAgMHgxNDAwLCAiVHlwZSA0MiBtb2R1bGUiICkKKyAgRlRfTU9ERVJSREVGKCBXaW5mb250cywgMHgxNTAwLCAiV2luZG93cyBGT04vRk5UIG1vZHVsZSIgKQorICBGVF9NT0RFUlJERUYoIEdYdmFsaWQsICAweDE2MDAsICJHWCB2YWxpZGF0aW9uIG1vZHVsZSIgKQorCisKKyNpZmRlZiBGVF9NT0RFUlJfRU5EX0xJU1QKKyAgRlRfTU9ERVJSX0VORF9MSVNUCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICBDTEVBTlVQICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZmRlZiBGVF9ORUVEX0VYVEVSTl9DCisgIH0KKyNlbmRpZgorCisjdW5kZWYgRlRfTU9ERVJSX1NUQVJUX0xJU1QKKyN1bmRlZiBGVF9NT0RFUlJfRU5EX0xJU1QKKyN1bmRlZiBGVF9NT0RFUlJERUYKKyN1bmRlZiBGVF9ORUVEX0VYVEVSTl9DCisKKworI2VuZGlmIC8qIF9fRlRNT0RFUlJfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdG90dmFsLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdG90dmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMzZTMwNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0b3R2YWwuaApAQCAtMCwwICsxLDIwMyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRvdHZhbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgdmFsaWRhdGluZyBPcGVuVHlwZSB0YWJsZXMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBXYXJuaW5nOiBUaGlzIG1vZHVsZSBtaWdodCBiZSBtb3ZlZCB0byBhIGRpZmZlcmVudCBsaWJyYXJ5IGluIHRoZSAgICAgICAqLworLyogICAgICAgICAgZnV0dXJlIHRvIGF2b2lkIGEgdGlnaHQgZGVwZW5kZW5jeSBiZXR3ZWVuIEZyZWVUeXBlIGFuZCB0aGUgICAgKi8KKy8qICAgICAgICAgIE9wZW5UeXBlIHNwZWNpZmljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUT1RWQUxfSF9fCisjZGVmaW5lIF9fRlRPVFZBTF9IX18KKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdF92YWxpZGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBPcGVuVHlwZSBWYWxpZGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBBUEkgdG8gdmFsaWRhdGUgT3BlblR5cGUgdGFibGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9ucyB0byB2YWxpZGF0ZSAgICAgKi8KKyAgLyogICAgc29tZSBPcGVuVHlwZSB0YWJsZXMgKEJBU0UsIEdERUYsIEdQT1MsIEdTVUIsIEpTVEYsIE1BVEgpLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBlbnVtOgorICAqICAgIEZUX1ZBTElEQVRFX09UWFhYCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgQSBsaXN0IG9mIGJpdC1maWVsZCBjb25zdGFudHMgdXNlZCB3aXRoIEBGVF9PcGVuVHlwZV9WYWxpZGF0ZSB0bworICAqICAgIGluZGljYXRlIHdoaWNoIE9wZW5UeXBlIHRhYmxlcyBzaG91bGQgYmUgdmFsaWRhdGVkLgorICAqCisgICogQHZhbHVlczoKKyAgKiAgICBGVF9WQUxJREFURV9CQVNFIDo6CisgICogICAgICBWYWxpZGF0ZSBCQVNFIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfR0RFRiA6OgorICAqICAgICAgVmFsaWRhdGUgR0RFRiB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX0dQT1MgOjoKKyAgKiAgICAgIFZhbGlkYXRlIEdQT1MgdGFibGUuCisgICoKKyAgKiAgICBGVF9WQUxJREFURV9HU1VCIDo6CisgICogICAgICBWYWxpZGF0ZSBHU1VCIHRhYmxlLgorICAqCisgICogICAgRlRfVkFMSURBVEVfSlNURiA6OgorICAqICAgICAgVmFsaWRhdGUgSlNURiB0YWJsZS4KKyAgKgorICAqICAgIEZUX1ZBTElEQVRFX01BVEggOjoKKyAgKiAgICAgIFZhbGlkYXRlIE1BVEggdGFibGUuCisgICoKKyAgKiAgICBGVF9WQUxJREFURV9PVCA6OgorICAqICAgICAgVmFsaWRhdGUgYWxsIE9wZW5UeXBlIHRhYmxlcyAoQkFTRSwgR0RFRiwgR1BPUywgR1NVQiwgSlNURiwgTUFUSCkuCisgICoKKyAgKi8KKyNkZWZpbmUgRlRfVkFMSURBVEVfQkFTRSAgMHgwMTAwCisjZGVmaW5lIEZUX1ZBTElEQVRFX0dERUYgIDB4MDIwMAorI2RlZmluZSBGVF9WQUxJREFURV9HUE9TICAweDA0MDAKKyNkZWZpbmUgRlRfVkFMSURBVEVfR1NVQiAgMHgwODAwCisjZGVmaW5lIEZUX1ZBTElEQVRFX0pTVEYgIDB4MTAwMAorI2RlZmluZSBGVF9WQUxJREFURV9NQVRIICAweDIwMDAKKworI2RlZmluZSBGVF9WQUxJREFURV9PVCAgRlRfVkFMSURBVEVfQkFTRSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX0dERUYgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9HUE9TIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVkFMSURBVEVfR1NVQiB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX0pTVEYgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9WQUxJREFURV9NQVRICisKKyAgLyogKi8KKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICAgRlRfT3BlblR5cGVfVmFsaWRhdGUKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBWYWxpZGF0ZSB2YXJpb3VzIE9wZW5UeXBlIHRhYmxlcyB0byBhc3N1cmUgdGhhdCBhbGwgb2Zmc2V0cyBhbmQKKyAgKiAgICBpbmRpY2VzIGFyZSB2YWxpZC4gIFRoZSBpZGVhIGlzIHRoYXQgYSBoaWdoZXItbGV2ZWwgbGlicmFyeSB3aGljaAorICAqICAgIGFjdHVhbGx5IGRvZXMgdGhlIHRleHQgbGF5b3V0IGNhbiBhY2Nlc3MgdGhvc2UgdGFibGVzIHdpdGhvdXQKKyAgKiAgICBlcnJvciBjaGVja2luZyAod2hpY2ggY2FuIGJlIHF1aXRlIHRpbWUgY29uc3VtaW5nKS4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgICBmYWNlIDo6CisgICogICAgICAgQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICoKKyAgKiAgICB2YWxpZGF0aW9uX2ZsYWdzIDo6CisgICogICAgICAgQSBiaXQgZmllbGQgd2hpY2ggc3BlY2lmaWVzIHRoZSB0YWJsZXMgdG8gYmUgdmFsaWRhdGVkLiAgU2VlCisgICogICAgICAgQEZUX1ZBTElEQVRFX09UWFhYIGZvciBwb3NzaWJsZSB2YWx1ZXMuCisgICoKKyAgKiBAb3V0cHV0OgorICAqICAgIEJBU0VfdGFibGUgOjoKKyAgKiAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEJBU0UgdGFibGUuCisgICoKKyAgKiAgICBHREVGX3RhYmxlIDo6CisgICogICAgICAgQSBwb2ludGVyIHRvIHRoZSBHREVGIHRhYmxlLgorICAqCisgICogICAgR1BPU190YWJsZSA6OgorICAqICAgICAgIEEgcG9pbnRlciB0byB0aGUgR1BPUyB0YWJsZS4KKyAgKgorICAqICAgIEdTVUJfdGFibGUgOjoKKyAgKiAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEdTVUIgdGFibGUuCisgICoKKyAgKiAgICBKU1RGX3RhYmxlIDo6CisgICogICAgICAgQSBwb2ludGVyIHRvIHRoZSBKU1RGIHRhYmxlLgorICAqCisgICogQHJldHVybjoKKyAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aXRoIE9wZW5UeXBlIGZvbnRzLCByZXR1cm5pbmcgYW4gZXJyb3IKKyAgKiAgIG90aGVyd2lzZS4KKyAgKgorICAqICAgQWZ0ZXIgdXNlLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGRlYWxsb2NhdGUgdGhlIGZpdmUgdGFibGVzIHdpdGgKKyAgKiAgIEBGVF9PcGVuVHlwZV9GcmVlLiAgQSBOVUxMIHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSB0YWJsZSBlaXRoZXIKKyAgKiAgIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGZvbnQsIG9yIHRoZSBhcHBsaWNhdGlvbiBoYXNuJ3QgYXNrZWQgZm9yCisgICogICB2YWxpZGF0aW9uLgorICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3BlblR5cGVfVmFsaWRhdGUoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgdmFsaWRhdGlvbl9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAqQkFTRV90YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAqR0RFRl90YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAqR1BPU190YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAqR1NVQl90YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAqSlNURl90YWJsZSApOworCisgIC8qICovCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgIEZUX09wZW5UeXBlX0ZyZWUKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgICBGcmVlIHRoZSBidWZmZXIgYWxsb2NhdGVkIGJ5IE9wZW5UeXBlIHZhbGlkYXRvci4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgICBmYWNlIDo6CisgICogICAgICAgQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICoKKyAgKiAgICB0YWJsZSA6OgorICAqICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdGhhdCBpcyBhbGxvY2F0ZWQgYnkKKyAgKiAgICAgICBARlRfT3BlblR5cGVfVmFsaWRhdGUuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIHRvIGZyZWUgdGhlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkKKyAgKiAgIEBGVF9PcGVuVHlwZV9WYWxpZGF0ZSBvbmx5LgorICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9PcGVuVHlwZV9GcmVlKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgIHRhYmxlICk7CisKKworIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVE9UVkFMX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhOTQ5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmgKQEAgLTAsMCArMSw1NjAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0b3V0bG4uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBTdXBwb3J0IGZvciB0aGUgRlRfT3V0bGluZSB0eXBlIHVzZWQgdG8gc3RvcmUgZ2x5cGggc2hhcGVzIG9mICAgICAgICAqLworLyogICAgbW9zdCBzY2FsYWJsZSBmb250IGZvcm1hdHMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMywgMjAwNS0yMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVE9VVExOX0hfXworI2RlZmluZSBfX0ZUT1VUTE5fSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lX3Byb2Nlc3NpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBPdXRsaW5lIFByb2Nlc3NpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGdW5jdGlvbnMgdG8gY3JlYXRlLCB0cmFuc2Zvcm0sIGFuZCByZW5kZXIgdmVjdG9yaWFsIGdseXBoIGltYWdlcy4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgcm91dGluZXMgdXNlZCB0byBjcmVhdGUgYW5kIGRlc3Ryb3kgc2NhbGFibGUgKi8KKyAgLyogICAgZ2x5cGggaW1hZ2VzIGtub3duIGFzIGBvdXRsaW5lcycuICBUaGVzZSBjYW4gYWxzbyBiZSBtZWFzdXJlZCwgICAgICovCisgIC8qICAgIHRyYW5zZm9ybWVkLCBhbmQgY29udmVydGVkIGludG8gYml0bWFwcyBhbmQgcGl4bWFwcy4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE9yZGVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PVVRMSU5FX0ZMQUdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9OZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfRG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0NvcHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9UcmFuc2xhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfVHJhbnNmb3JtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0VtYm9sZGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9FbWJvbGRlblhZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfUmV2ZXJzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0NoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfR2V0X0NCb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0dldF9CQm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfR2V0X0JpdG1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX1JlbmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfRGVjb21wb3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0Z1bmNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9Nb3ZlVG9fRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfTGluZVRvX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0NvbmljVG9fRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9DdWJpY1RvX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfRGVjb21wb3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFdhbGsgb3ZlciBhbiBvdXRsaW5lJ3Mgc3RydWN0dXJlIHRvIGRlY29tcG9zZSBpdCBpbnRvIGluZGl2aWR1YWwgICAqLworICAvKiAgICBzZWdtZW50cyBhbmQgQsOpemllciBhcmNzLiAgVGhpcyBmdW5jdGlvbiBhbHNvIGVtaXRzIGBtb3ZlIHRvJyAgICAgICovCisgIC8qICAgIG9wZXJhdGlvbnMgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIG5ldyBjb250b3VycyBpbiB0aGUgb3V0bGluZS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmUgICAgICAgIDo6IEEgcG9pbnRlciB0byB0aGUgc291cmNlIHRhcmdldC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnVuY19pbnRlcmZhY2UgOjogQSB0YWJsZSBvZiBgZW1pdHRlcnMnLCBpLmUuLCBmdW5jdGlvbiBwb2ludGVycyAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZCBkdXJpbmcgZGVjb21wb3NpdGlvbiB0byBpbmRpY2F0ZSBwYXRoICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1c2VyICAgICAgICAgICA6OiBBIHR5cGVsZXNzIHBvaW50ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIGVhY2ggICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgZW1pdHRlciBkdXJpbmcgdGhlIGRlY29tcG9zaXRpb24uICBJdCBjYW4gYmUgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgIHVzZWQgdG8gc3RvcmUgdGhlIHN0YXRlIGR1cmluZyB0aGUgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICBkZWNvbXBvc2l0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9PdXRsaW5lX0RlY29tcG9zZSggRlRfT3V0bGluZSogICAgICAgICAgICAgIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9PdXRsaW5lX0Z1bmNzKiAgZnVuY19pbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgdXNlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9OZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ3JlYXRlIGEgbmV3IG91dGxpbmUgb2YgYSBnaXZlbiBzaXplLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSAgICAgOjogQSBoYW5kbGUgdG8gdGhlIGxpYnJhcnkgb2JqZWN0IGZyb20gd2hlcmUgdGhlICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIG91dGxpbmUgaXMgYWxsb2NhdGVkLiAgTm90ZSBob3dldmVyIHRoYXQgdGhlIG5ldyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBvdXRsaW5lIHdpbGwgKm5vdCogbmVjZXNzYXJpbHkgYmUgKmZyZWVkKiwgd2hlbiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgZGVzdHJveWluZyB0aGUgbGlicmFyeSwgYnkgQEZUX0RvbmVfRnJlZVR5cGUuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1Qb2ludHMgICA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcG9pbnRzIHdpdGhpbiB0aGUgb3V0bGluZS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgTXVzdCBiZSBzbWFsbGVyIHRoYW4gb3IgZXF1YWwgdG8gMHhGRkZGICg2NTUzNSkuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1Db250b3VycyA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29udG91cnMgd2l0aGluIHRoZSBvdXRsaW5lLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgVGhpcyB2YWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSAwIHRvIGBudW1Qb2ludHMnLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYW5vdXRsaW5lICAgOjogQSBoYW5kbGUgdG8gdGhlIG5ldyBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlYXNvbiB3aHkgdGhpcyBmdW5jdGlvbiB0YWtlcyBhIGBsaWJyYXJ5JyBwYXJhbWV0ZXIgaXMgc2ltcGx5ICovCisgIC8qICAgIHRvIHVzZSB0aGUgbGlicmFyeSdzIG1lbW9yeSBhbGxvY2F0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfTmV3KCBGVF9MaWJyYXJ5ICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICBudW1Qb2ludHMsCisgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgbnVtQ29udG91cnMsCisgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lICAqYW5vdXRsaW5lICk7CisKKworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9OZXdfSW50ZXJuYWwoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgbnVtUG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgIG51bUNvbnRvdXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSAgKmFub3V0bGluZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9Eb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVzdHJveSBhbiBvdXRsaW5lIGNyZWF0ZWQgd2l0aCBARlRfT3V0bGluZV9OZXcuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSBvZiB0aGUgbGlicmFyeSBvYmplY3QgdXNlZCB0byBhbGxvY2F0ZSB0aGUgICAgICovCisgIC8qICAgICAgICAgICAgICAgb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0bGluZSA6OiBBIHBvaW50ZXIgdG8gdGhlIG91dGxpbmUgb2JqZWN0IHRvIGJlIGRpc2NhcmRlZC4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgdGhlIG91dGxpbmUncyBgb3duZXInIGZpZWxkIGlzIG5vdCBzZXQsIG9ubHkgdGhlIG91dGxpbmUgICAgICAgICovCisgIC8qICAgIGRlc2NyaXB0b3Igd2lsbCBiZSByZWxlYXNlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlYXNvbiB3aHkgdGhpcyBmdW5jdGlvbiB0YWtlcyBhbiBgbGlicmFyeScgcGFyYW1ldGVyIGlzICAgICAgICovCisgIC8qICAgIHNpbXBseSB0byB1c2UgZnRfbWVtX2ZyZWUoKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfRG9uZSggRlRfTGlicmFyeSAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSogIG91dGxpbmUgKTsKKworCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9PdXRsaW5lX0RvbmVfSW50ZXJuYWwoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSogIG91dGxpbmUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENoZWNrIHRoZSBjb250ZW50cyBvZiBhbiBvdXRsaW5lIGRlc2NyaXB0b3IuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmUgOjogQSBoYW5kbGUgdG8gYSBzb3VyY2Ugb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfQ2hlY2soIEZUX091dGxpbmUqICBvdXRsaW5lICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0dldF9DQm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gYW4gb3V0bGluZSdzIGBjb250cm9sIGJveCcuICBUaGUgY29udHJvbCBib3ggZW5jbG9zZXMgYWxsICAgKi8KKyAgLyogICAgdGhlIG91dGxpbmUncyBwb2ludHMsIGluY2x1ZGluZyBCw6l6aWVyIGNvbnRyb2wgcG9pbnRzLiAgVGhvdWdoIGl0ICAqLworICAvKiAgICBjb2luY2lkZXMgd2l0aCB0aGUgZXhhY3QgYm91bmRpbmcgYm94IGZvciBtb3N0IGdseXBocywgaXQgY2FuIGJlICAgKi8KKyAgLyogICAgc2xpZ2h0bHkgbGFyZ2VyIGluIHNvbWUgc2l0dWF0aW9ucyAobGlrZSB3aGVuIHJvdGF0aW5nIGFuIG91dGxpbmUgICovCisgIC8qICAgIHdoaWNoIGNvbnRhaW5zIELDqXppZXIgb3V0c2lkZSBhcmNzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbXB1dGluZyB0aGUgY29udHJvbCBib3ggaXMgdmVyeSBmYXN0LCB3aGlsZSBnZXR0aW5nIHRoZSBib3VuZGluZyAqLworICAvKiAgICBib3ggY2FuIHRha2UgbXVjaCBtb3JlIHRpbWUgYXMgaXQgbmVlZHMgdG8gd2FsayBvdmVyIGFsbCBzZWdtZW50cyAgKi8KKyAgLyogICAgYW5kIGFyY3MgaW4gdGhlIG91dGxpbmUuICBUbyBnZXQgdGhlIGxhdHRlciwgeW91IGNhbiB1c2UgdGhlICAgICAgICovCisgIC8qICAgIGBmdGJib3gnIGNvbXBvbmVudCB3aGljaCBpcyBkZWRpY2F0ZWQgdG8gdGhpcyBzaW5nbGUgdGFzay4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmUgOjogQSBwb2ludGVyIHRvIHRoZSBzb3VyY2Ugb3V0bGluZSBkZXNjcmlwdG9yLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFjYm94ICAgOjogVGhlIG91dGxpbmUncyBjb250cm9sIGJveC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlZSBARlRfR2x5cGhfR2V0X0NCb3ggZm9yIGEgZGlzY3Vzc2lvbiBvZiB0cmlja3kgZm9udHMuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfT3V0bGluZV9HZXRfQ0JveCggY29uc3QgRlRfT3V0bGluZSogIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0JCb3ggICAgICAgICAgICphY2JveCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9UcmFuc2xhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQXBwbHkgYSBzaW1wbGUgdHJhbnNsYXRpb24gdG8gdGhlIHBvaW50cyBvZiBhbiBvdXRsaW5lLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0bGluZSA6OiBBIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBvdXRsaW5lIGRlc2NyaXB0b3IuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeE9mZnNldCA6OiBUaGUgaG9yaXpvbnRhbCBvZmZzZXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5T2Zmc2V0IDo6IFRoZSB2ZXJ0aWNhbCBvZmZzZXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX091dGxpbmVfVHJhbnNsYXRlKCBjb25zdCBGVF9PdXRsaW5lKiAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgICAgICB4T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgICAgICAgIHlPZmZzZXQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfQ29weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvcHkgYW4gb3V0bGluZSBpbnRvIGFub3RoZXIgb25lLiAgQm90aCBvYmplY3RzIG11c3QgaGF2ZSB0aGUgICAgICAqLworICAvKiAgICBzYW1lIHNpemVzIChudW1iZXIgb2YgcG9pbnRzICYgbnVtYmVyIG9mIGNvbnRvdXJzKSB3aGVuIHRoaXMgICAgICAgKi8KKyAgLyogICAgZnVuY3Rpb24gaXMgY2FsbGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc291cmNlIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2Ugb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFyZ2V0IDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9Db3B5KCBjb25zdCBGVF9PdXRsaW5lKiAgc291cmNlLAorICAgICAgICAgICAgICAgICAgIEZUX091dGxpbmUgICAgICAgICp0YXJnZXQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfVHJhbnNmb3JtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFwcGx5IGEgc2ltcGxlIDJ4MiBtYXRyaXggdG8gYWxsIG9mIGFuIG91dGxpbmUncyBwb2ludHMuICBVc2VmdWwgICAqLworICAvKiAgICBmb3IgYXBwbHlpbmcgcm90YXRpb25zLCBzbGFudGluZywgZmxpcHBpbmcsIGV0Yy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lIDo6IEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IG91dGxpbmUgZGVzY3JpcHRvci4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXRyaXggIDo6IEEgcG9pbnRlciB0byB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBZb3UgY2FuIHVzZSBARlRfT3V0bGluZV9UcmFuc2xhdGUgaWYgeW91IG5lZWQgdG8gdHJhbnNsYXRlIHRoZSAgICAgKi8KKyAgLyogICAgb3V0bGluZSdzIHBvaW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9PdXRsaW5lX1RyYW5zZm9ybSggY29uc3QgRlRfT3V0bGluZSogIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9NYXRyaXgqICAgbWF0cml4ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX0VtYm9sZGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBFbWJvbGRlbiBhbiBvdXRsaW5lLiAgVGhlIG5ldyBvdXRsaW5lIHdpbGwgYmUgYXQgbW9zdCA0fnRpbWVzICAgICAgKi8KKyAgLyogICAgYHN0cmVuZ3RoJyBwaXhlbHMgd2lkZXIgYW5kIGhpZ2hlci4gIFlvdSBtYXkgdGhpbmsgb2YgdGhlIGxlZnQgYW5kICovCisgIC8qICAgIGJvdHRvbSBib3JkZXJzIGFzIHVuY2hhbmdlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTmVnYXRpdmUgYHN0cmVuZ3RoJyB2YWx1ZXMgdG8gcmVkdWNlIHRoZSBvdXRsaW5lIHRoaWNrbmVzcyBhcmUgICAgICovCisgIC8qICAgIHBvc3NpYmxlIGFsc28uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmUgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVuZ3RoIDo6IEhvdyBzdHJvbmcgdGhlIGdseXBoIGlzIGVtYm9sZGVuZWQuICBFeHByZXNzZWQgaW4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAyNi42IHBpeGVsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgdXNlZCBhbGdvcml0aG0gdG8gaW5jcmVhc2Ugb3IgZGVjcmVhc2UgdGhlIHRoaWNrbmVzcyBvZiB0aGUgICAgKi8KKyAgLyogICAgZ2x5cGggZG9lc24ndCBjaGFuZ2UgdGhlIG51bWJlciBvZiBwb2ludHM7IHRoaXMgbWVhbnMgdGhhdCBjZXJ0YWluICovCisgIC8qICAgIHNpdHVhdGlvbnMgbGlrZSBhY3V0ZSBhbmdsZXMgb3IgaW50ZXJzZWN0aW9ucyBhcmUgc29tZXRpbWVzICAgICAgICAqLworICAvKiAgICBoYW5kbGVkIGluY29ycmVjdGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElmIHlvdSBuZWVkIGBiZXR0ZXInIG1ldHJpY3MgdmFsdWVzIHlvdSBzaG91bGQgY2FsbCAgICAgICAgICAgICAgICAqLworICAvKiAgICBARlRfT3V0bGluZV9HZXRfQ0JveCBvciBARlRfT3V0bGluZV9HZXRfQkJveC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEV4YW1wbGUgY2FsbDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgRlRfTG9hZF9HbHlwaCggZmFjZSwgaW5kZXgsIEZUX0xPQURfREVGQVVMVCApOyAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIGlmICggZmFjZS0+c2xvdC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FICkgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIEZUX091dGxpbmVfRW1ib2xkZW4oICZmYWNlLT5zbG90LT5vdXRsaW5lLCBzdHJlbmd0aCApOyAgICAgICAgICovCisgIC8qICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfRW1ib2xkZW4oIEZUX091dGxpbmUqICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgc3RyZW5ndGggKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfRW1ib2xkZW5YWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVtYm9sZGVuIGFuIG91dGxpbmUuICBUaGUgbmV3IG91dGxpbmUgd2lsbCBiZSBgeHN0cmVuZ3RoJyBwaXhlbHMgICAqLworICAvKiAgICB3aWRlciBhbmQgYHlzdHJlbmd0aCcgcGl4ZWxzIGhpZ2hlci4gIE90aGVyd2lzZSwgaXQgaXMgc2ltaWxhciB0byAgKi8KKyAgLyogICAgQEZUX091dGxpbmVfRW1ib2xkZW4sIHdoaWNoIHVzZXMgdGhlIHNhbWUgc3RyZW5ndGggaW4gYm90aCAgICAgICAgICovCisgIC8qICAgIGRpcmVjdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfRW1ib2xkZW5YWSggRlRfT3V0bGluZSogIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgIHhzdHJlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgeXN0cmVuZ3RoICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX1JldmVyc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXZlcnNlIHRoZSBkcmF3aW5nIGRpcmVjdGlvbiBvZiBhbiBvdXRsaW5lLiAgVGhpcyBpcyB1c2VkIHRvICAgICAgKi8KKyAgLyogICAgZW5zdXJlIGNvbnNpc3RlbnQgZmlsbCBjb252ZW50aW9ucyBmb3IgbWlycm9yZWQgZ2x5cGhzLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0bGluZSA6OiBBIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBvdXRsaW5lIGRlc2NyaXB0b3IuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiB0b2dnbGVzIHRoZSBiaXQgZmxhZyBARlRfT1VUTElORV9SRVZFUlNFX0ZJTEwgaW4gICAgICovCisgIC8qICAgIHRoZSBvdXRsaW5lJ3MgYGZsYWdzJyBmaWVsZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSXQgc2hvdWxkbid0IGJlIHVzZWQgYnkgYSBub3JtYWwgY2xpZW50IGFwcGxpY2F0aW9uLCB1bmxlc3MgaXQgICAgICovCisgIC8qICAgIGtub3dzIHdoYXQgaXQgaXMgZG9pbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfT3V0bGluZV9SZXZlcnNlKCBGVF9PdXRsaW5lKiAgb3V0bGluZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9HZXRfQml0bWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmVuZGVyIGFuIG91dGxpbmUgd2l0aGluIGEgYml0bWFwLiAgVGhlIG91dGxpbmUncyBpbWFnZSBpcyBzaW1wbHkgICovCisgIC8qICAgIE9SLWVkIHRvIHRoZSB0YXJnZXQgYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogQSBoYW5kbGUgdG8gYSBGcmVlVHlwZSBsaWJyYXJ5IG9iamVjdC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0bGluZSA6OiBBIHBvaW50ZXIgdG8gdGhlIHNvdXJjZSBvdXRsaW5lIGRlc2NyaXB0b3IuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWJpdG1hcCA6OiBBIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBiaXRtYXAgZGVzY3JpcHRvci4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCBDUkVBVEUgdGhlIGJpdG1hcCwgaXQgb25seSByZW5kZXJzIGFuICAgICAgICovCisgIC8qICAgIG91dGxpbmUgaW1hZ2Ugd2l0aGluIHRoZSBvbmUgeW91IHBhc3MgdG8gaXQhICBDb25zZXF1ZW50bHksIHRoZSAgICAqLworICAvKiAgICB2YXJpb3VzIGZpZWxkcyBpbiBgYWJpdG1hcCcgc2hvdWxkIGJlIHNldCBhY2NvcmRpbmdseS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEl0IHdpbGwgdXNlIHRoZSByYXN0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgZGVmYXVsdCBnbHlwaCBmb3JtYXQuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHZhbHVlIG9mIHRoZSBgbnVtX2dyYXlzJyBmaWVsZCBpbiBgYWJpdG1hcCcgaXMgaWdub3JlZC4gIElmICAgICovCisgIC8qICAgIHlvdSBzZWxlY3QgdGhlIGdyYXktbGV2ZWwgcmFzdGVyaXplciwgYW5kIHlvdSB3YW50IGxlc3MgdGhhbiAyNTYgICAqLworICAvKiAgICBncmF5IGxldmVscywgeW91IGhhdmUgdG8gdXNlIEBGVF9PdXRsaW5lX1JlbmRlciBkaXJlY3RseS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9PdXRsaW5lX0dldF9CaXRtYXAoIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSogICAgICAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CaXRtYXAgICphYml0bWFwICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PdXRsaW5lX1JlbmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZW5kZXIgYW4gb3V0bGluZSB3aXRoaW4gYSBiaXRtYXAgdXNpbmcgdGhlIGN1cnJlbnQgc2Nhbi1jb252ZXJ0LiAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiB1c2VzIGFuIEBGVF9SYXN0ZXJfUGFyYW1zIHN0cnVjdHVyZSBhcyBhbiBhcmd1bWVudCwgICovCisgIC8qICAgIGFsbG93aW5nIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgZGlyZWN0IGNvbXBvc2l0aW9uLCB0cmFuc2x1Y2VuY3ksICAqLworICAvKiAgICBldGMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIGEgRnJlZVR5cGUgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG91dGxpbmUgOjogQSBwb2ludGVyIHRvIHRoZSBzb3VyY2Ugb3V0bGluZSBkZXNjcmlwdG9yLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhcmFtcyAgOjogQSBwb2ludGVyIHRvIGFuIEBGVF9SYXN0ZXJfUGFyYW1zIHN0cnVjdHVyZSB1c2VkIHRvICAgICAqLworICAvKiAgICAgICAgICAgICAgIGRlc2NyaWJlIHRoZSByZW5kZXJpbmcgb3BlcmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBZb3Ugc2hvdWxkIGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nIGFuZCBob3cgQEZUX1Jhc3Rlcl9QYXJhbXMgd29ya3MgKi8KKyAgLyogICAgdG8gdXNlIHRoaXMgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZmllbGQgYHBhcmFtcy5zb3VyY2UnIHdpbGwgYmUgc2V0IHRvIGBvdXRsaW5lJyBiZWZvcmUgdGhlIHNjYW4gKi8KKyAgLyogICAgY29udmVydGVyIGlzIGNhbGxlZCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgdmFsdWUgeW91IGdpdmUgdG8gaXQgaXMgICovCisgIC8qICAgIGFjdHVhbGx5IGlnbm9yZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGdyYXktbGV2ZWwgcmFzdGVyaXplciBhbHdheXMgdXNlcyAyNTYgZ3JheSBsZXZlbHMuICBJZiB5b3UgICAgICovCisgIC8qICAgIHdhbnQgbGVzcyBncmF5IGxldmVscywgeW91IGhhdmUgdG8gcHJvdmlkZSB5b3VyIG93biBzcGFuIGNhbGxiYWNrLiAqLworICAvKiAgICBTZWUgdGhlIEBGVF9SQVNURVJfRkxBR19ESVJFQ1QgdmFsdWUgb2YgdGhlIGBmbGFncycgZmllbGQgaW4gdGhlICAgKi8KKyAgLyogICAgQEZUX1Jhc3Rlcl9QYXJhbXMgc3RydWN0dXJlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9SZW5kZXIoIEZUX0xpYnJhcnkgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSogICAgICAgIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICBGVF9SYXN0ZXJfUGFyYW1zKiAgcGFyYW1zICk7CisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGVudW06CisgICogICBGVF9PcmllbnRhdGlvbgorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgQSBsaXN0IG9mIHZhbHVlcyB1c2VkIHRvIGRlc2NyaWJlIGFuIG91dGxpbmUncyBjb250b3VyIG9yaWVudGF0aW9uLgorICAqCisgICogICBUaGUgVHJ1ZVR5cGUgYW5kIFBvc3RTY3JpcHQgc3BlY2lmaWNhdGlvbnMgdXNlIGRpZmZlcmVudCBjb252ZW50aW9ucworICAqICAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3V0bGluZSBjb250b3VycyBzaG91bGQgYmUgZmlsbGVkIG9yIHVuZmlsbGVkLgorICAqCisgICogQHZhbHVlczoKKyAgKiAgIEZUX09SSUVOVEFUSU9OX1RSVUVUWVBFIDo6CisgICogICAgIEFjY29yZGluZyB0byB0aGUgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbiwgY2xvY2t3aXNlIGNvbnRvdXJzIG11c3QKKyAgKiAgICAgYmUgZmlsbGVkLCBhbmQgY291bnRlci1jbG9ja3dpc2Ugb25lcyBtdXN0IGJlIHVuZmlsbGVkLgorICAqCisgICogICBGVF9PUklFTlRBVElPTl9QT1NUU0NSSVBUIDo6CisgICogICAgIEFjY29yZGluZyB0byB0aGUgUG9zdFNjcmlwdCBzcGVjaWZpY2F0aW9uLCBjb3VudGVyLWNsb2Nrd2lzZSBjb250b3VycworICAqICAgICBtdXN0IGJlIGZpbGxlZCwgYW5kIGNsb2Nrd2lzZSBvbmVzIG11c3QgYmUgdW5maWxsZWQuCisgICoKKyAgKiAgIEZUX09SSUVOVEFUSU9OX0ZJTExfUklHSFQgOjoKKyAgKiAgICAgVGhpcyBpcyBpZGVudGljYWwgdG8gQEZUX09SSUVOVEFUSU9OX1RSVUVUWVBFLCBidXQgaXMgdXNlZCB0bworICAqICAgICByZW1lbWJlciB0aGF0IGluIFRydWVUeXBlLCBldmVyeXRoaW5nIHRoYXQgaXMgdG8gdGhlIHJpZ2h0IG9mCisgICogICAgIHRoZSBkcmF3aW5nIGRpcmVjdGlvbiBvZiBhIGNvbnRvdXIgbXVzdCBiZSBmaWxsZWQuCisgICoKKyAgKiAgIEZUX09SSUVOVEFUSU9OX0ZJTExfTEVGVCA6OgorICAqICAgICBUaGlzIGlzIGlkZW50aWNhbCB0byBARlRfT1JJRU5UQVRJT05fUE9TVFNDUklQVCwgYnV0IGlzIHVzZWQgdG8KKyAgKiAgICAgcmVtZW1iZXIgdGhhdCBpbiBQb3N0U2NyaXB0LCBldmVyeXRoaW5nIHRoYXQgaXMgdG8gdGhlIGxlZnQgb2YKKyAgKiAgICAgdGhlIGRyYXdpbmcgZGlyZWN0aW9uIG9mIGEgY29udG91ciBtdXN0IGJlIGZpbGxlZC4KKyAgKgorICAqICAgRlRfT1JJRU5UQVRJT05fTk9ORSA6OgorICAqICAgICBUaGUgb3JpZW50YXRpb24gY2Fubm90IGJlIGRldGVybWluZWQuICBUaGF0IGlzLCBkaWZmZXJlbnQgcGFydHMgb2YKKyAgKiAgICAgdGhlIGdseXBoIGhhdmUgZGlmZmVyZW50IG9yaWVudGF0aW9uLgorICAqCisgICovCisgIHR5cGVkZWYgZW51bSAgRlRfT3JpZW50YXRpb25fCisgIHsKKyAgICBGVF9PUklFTlRBVElPTl9UUlVFVFlQRSAgID0gMCwKKyAgICBGVF9PUklFTlRBVElPTl9QT1NUU0NSSVBUID0gMSwKKyAgICBGVF9PUklFTlRBVElPTl9GSUxMX1JJR0hUID0gRlRfT1JJRU5UQVRJT05fVFJVRVRZUEUsCisgICAgRlRfT1JJRU5UQVRJT05fRklMTF9MRUZUICA9IEZUX09SSUVOVEFUSU9OX1BPU1RTQ1JJUFQsCisgICAgRlRfT1JJRU5UQVRJT05fTk9ORQorCisgIH0gRlRfT3JpZW50YXRpb247CisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgRlRfT3V0bGluZV9HZXRfT3JpZW50YXRpb24KKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgIFRoaXMgZnVuY3Rpb24gYW5hbHl6ZXMgYSBnbHlwaCBvdXRsaW5lIGFuZCB0cmllcyB0byBjb21wdXRlIGl0cworICAqICAgZmlsbCBvcmllbnRhdGlvbiAoc2VlIEBGVF9PcmllbnRhdGlvbikuICBUaGlzIGlzIGRvbmUgYnkgY29tcHV0aW5nCisgICogICB0aGUgZGlyZWN0aW9uIG9mIGVhY2ggZ2xvYmFsIGhvcml6b250YWwgYW5kL29yIHZlcnRpY2FsIGV4dHJlbWEKKyAgKiAgIHdpdGhpbiB0aGUgb3V0bGluZS4KKyAgKgorICAqICAgTm90ZSB0aGF0IHRoaXMgd2lsbCByZXR1cm4gQEZUX09SSUVOVEFUSU9OX1RSVUVUWVBFIGZvciBlbXB0eQorICAqICAgb3V0bGluZXMuCisgICoKKyAgKiBAaW5wdXQ6CisgICogICBvdXRsaW5lIDo6CisgICogICAgIEEgaGFuZGxlIHRvIHRoZSBzb3VyY2Ugb3V0bGluZS4KKyAgKgorICAqIEByZXR1cm46CisgICogICBUaGUgb3JpZW50YXRpb24uCisgICoKKyAgKi8KKyAgRlRfRVhQT1JUKCBGVF9PcmllbnRhdGlvbiApCisgIEZUX091dGxpbmVfR2V0X09yaWVudGF0aW9uKCBGVF9PdXRsaW5lKiAgb3V0bGluZSApOworCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUT1VUTE5fSF9fICovCisKKworLyogRU5EICovCisKKworLyogTG9jYWwgVmFyaWFibGVzOiAqLworLyogY29kaW5nOiB1dGYtOCAgICAqLworLyogRW5kOiAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRwZnIuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0cGZyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJjZDY3ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0cGZyLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0cGZyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIGFjY2Vzc2luZyBQRlItc3BlY2lmaWMgZGF0YSAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMiwgMjAwMywgMjAwNCwgMjAwNiwgMjAwOCwgMjAwOSBieSAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUUEZSX0hfXworI2RlZmluZSBfX0ZUUEZSX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBmcl9mb250cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBGUiBGb250cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBGUi9UcnVlRG9jIHNwZWNpZmljIEFQSS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgZGVjbGFyYXRpb24gb2YgUEZSLXNwZWNpZmljIGZ1bmN0aW9ucy4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICAgRlRfR2V0X1BGUl9NZXRyaWNzCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgUmV0dXJuIHRoZSBvdXRsaW5lIGFuZCBtZXRyaWNzIHJlc29sdXRpb25zIG9mIGEgZ2l2ZW4gUEZSIGZhY2UuCisgICoKKyAgKiBAaW5wdXQ6CisgICogICAgZmFjZSA6OiBIYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuICBJdCBjYW4gYmUgYSBub24tUEZSIGZhY2UuCisgICoKKyAgKiBAb3V0cHV0OgorICAqICAgIGFvdXRsaW5lX3Jlc29sdXRpb24gOjoKKyAgKiAgICAgIE91dGxpbmUgcmVzb2x1dGlvbi4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgZmFjZS0+dW5pdHNfcGVyX0VNJworICAqICAgICAgZm9yIG5vbi1QRlIgZm9udHMuICBPcHRpb25hbCAocGFyYW1ldGVyIGNhbiBiZSBOVUxMKS4KKyAgKgorICAqICAgIGFtZXRyaWNzX3Jlc29sdXRpb24gOjoKKyAgKiAgICAgIE1ldHJpY3MgcmVzb2x1dGlvbi4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgb3V0bGluZV9yZXNvbHV0aW9uJworICAqICAgICAgZm9yIG5vbi1QRlIgZm9udHMuICBPcHRpb25hbCAocGFyYW1ldGVyIGNhbiBiZSBOVUxMKS4KKyAgKgorICAqICAgIGFtZXRyaWNzX3hfc2NhbGUgOjoKKyAgKiAgICAgIEEgMTYuMTYgZml4ZWQtcG9pbnQgbnVtYmVyIHVzZWQgdG8gc2NhbGUgZGlzdGFuY2UgZXhwcmVzc2VkCisgICogICAgICBpbiBtZXRyaWNzIHVuaXRzIHRvIGRldmljZSBzdWItcGl4ZWxzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICogICAgICBgZmFjZS0+c2l6ZS0+eF9zY2FsZScsIGJ1dCBmb3IgbWV0cmljcyBvbmx5LiAgT3B0aW9uYWwgKHBhcmFtZXRlcgorICAqICAgICAgY2FuIGJlIE5VTEwpLgorICAqCisgICogICAgYW1ldHJpY3NfeV9zY2FsZSA6OgorICAqICAgICAgU2FtZSBhcyBgYW1ldHJpY3NfeF9zY2FsZScgYnV0IGZvciB0aGUgdmVydGljYWwgZGlyZWN0aW9uLgorICAqICAgICAgb3B0aW9uYWwgKHBhcmFtZXRlciBjYW4gYmUgTlVMTCkuCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIElmIHRoZSBpbnB1dCBmYWNlIGlzIG5vdCBhIFBGUiwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBlcnJvci4KKyAgKiAgIEhvd2V2ZXIsIGluIGFsbCBjYXNlcywgaXQgd2lsbCByZXR1cm4gdmFsaWQgdmFsdWVzLgorICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0X1BGUl9NZXRyaWNzKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICphb3V0bGluZV9yZXNvbHV0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAqYW1ldHJpY3NfcmVzb2x1dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgKmFtZXRyaWNzX3hfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICphbWV0cmljc195X3NjYWxlICk7CisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICAgRlRfR2V0X1BGUl9LZXJuaW5nCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgUmV0dXJuIHRoZSBrZXJuaW5nIHBhaXIgY29ycmVzcG9uZGluZyB0byB0d28gZ2x5cGhzIGluIGEgUEZSIGZhY2UuCisgICogICAgVGhlIGRpc3RhbmNlIGlzIGV4cHJlc3NlZCBpbiBtZXRyaWNzIHVuaXRzLCB1bmxpa2UgdGhlIHJlc3VsdCBvZgorICAqICAgIEBGVF9HZXRfS2VybmluZy4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgICBmYWNlICA6OiBBIGhhbmRsZSB0byB0aGUgaW5wdXQgZmFjZS4KKyAgKgorICAqICAgIGxlZnQgIDo6IEluZGV4IG9mIHRoZSBsZWZ0IGdseXBoLgorICAqCisgICogICAgcmlnaHQgOjogSW5kZXggb2YgdGhlIHJpZ2h0IGdseXBoLgorICAqCisgICogQG91dHB1dDoKKyAgKiAgICBhdmVjdG9yIDo6IEEga2VybmluZyB2ZWN0b3IuCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm4gZGlzdGFuY2VzIGluIG9yaWdpbmFsIFBGUiBtZXRyaWNzCisgICogICAgdW5pdHMuICBUaGlzIGlzIHVubGlrZSBARlRfR2V0X0tlcm5pbmcgd2l0aCB0aGUgQEZUX0tFUk5JTkdfVU5TQ0FMRUQKKyAgKiAgICBtb2RlLCB3aGljaCBhbHdheXMgcmV0dXJucyBkaXN0YW5jZXMgY29udmVydGVkIHRvIG91dGxpbmUgdW5pdHMuCisgICoKKyAgKiAgICBZb3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIGB4X3NjYWxlJyBhbmQgYHlfc2NhbGUnIHBhcmFtZXRlcnMKKyAgKiAgICByZXR1cm5lZCBieSBARlRfR2V0X1BGUl9NZXRyaWNzIHRvIHNjYWxlIHRoZXNlIHRvIGRldmljZSBzdWItcGl4ZWxzLgorICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0X1BGUl9LZXJuaW5nKCBGVF9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yICAqYXZlY3RvciApOworCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgIEZUX0dldF9QRlJfQWR2YW5jZQorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgIFJldHVybiBhIGdpdmVuIGdseXBoIGFkdmFuY2UsIGV4cHJlc3NlZCBpbiBvcmlnaW5hbCBtZXRyaWNzIHVuaXRzLAorICAqICAgIGZyb20gYSBQRlIgZm9udC4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICoKKyAgKiAgICBnaW5kZXggOjogVGhlIGdseXBoIGluZGV4LgorICAqCisgICogQG91dHB1dDoKKyAgKiAgICBhYWR2YW5jZSA6OiBUaGUgZ2x5cGggYWR2YW5jZSBpbiBtZXRyaWNzIHVuaXRzLgorICAqCisgICogQHJldHVybjoKKyAgKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAqCisgICogQG5vdGU6CisgICogICAgWW91IGNhbiB1c2UgdGhlIGB4X3NjYWxlJyBvciBgeV9zY2FsZScgcmVzdWx0cyBvZiBARlRfR2V0X1BGUl9NZXRyaWNzCisgICogICAgdG8gY29udmVydCB0aGUgYWR2YW5jZSB0byBkZXZpY2Ugc3ViLXBpeGVscyAoaS5lLiwgMS82NHRoIG9mIHBpeGVscykuCisgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfUEZSX0FkdmFuY2UoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBnaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgKmFhZHZhbmNlICk7CisKKyAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRQRlJfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHJlbmRlci5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRyZW5kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTQzN2RmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRyZW5kZXIuaApAQCAtMCwwICsxLDIzOCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRyZW5kZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIHJlbmRlcmVyIG1vZHVsZXMgcHVibGljIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDUsIDIwMDYsIDIwMTAgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRSRU5ERVJfSF9fCisjZGVmaW5lIF9fRlRSRU5ERVJfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnRtb2RhcGkuaCIKKyNpbmNsdWRlICJmdGdseXBoLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtb2R1bGVfbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyogY3JlYXRlIGEgbmV3IGdseXBoIG9iamVjdCAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfR2x5cGhfSW5pdEZ1bmMpKCBGVF9HbHlwaCAgICAgIGdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90ICk7CisKKyAgLyogZGVzdHJveXMgYSBnaXZlbiBnbHlwaCBvYmplY3QgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfR2x5cGhfRG9uZUZ1bmMpKCBGVF9HbHlwaCAgZ2x5cGggKTsKKworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9HbHlwaF9UcmFuc2Zvcm1GdW5jKSggRlRfR2x5cGggICAgICAgICAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX01hdHJpeCogIG1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgZGVsdGEgKTsKKworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9HbHlwaF9HZXRCQm94RnVuYykoIEZUX0dseXBoICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JCb3gqICBhYmJveCApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9HbHlwaF9Db3B5RnVuYykoIEZUX0dseXBoICAgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGggICB0YXJnZXQgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfR2x5cGhfUHJlcGFyZUZ1bmMpKCBGVF9HbHlwaCAgICAgIGdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90ICk7CisKKy8qIGRlcHJlY2F0ZWQgKi8KKyNkZWZpbmUgRlRfR2x5cGhfSW5pdF9GdW5jICAgICAgIEZUX0dseXBoX0luaXRGdW5jCisjZGVmaW5lIEZUX0dseXBoX0RvbmVfRnVuYyAgICAgICBGVF9HbHlwaF9Eb25lRnVuYworI2RlZmluZSBGVF9HbHlwaF9UcmFuc2Zvcm1fRnVuYyAgRlRfR2x5cGhfVHJhbnNmb3JtRnVuYworI2RlZmluZSBGVF9HbHlwaF9CQm94X0Z1bmMgICAgICAgRlRfR2x5cGhfR2V0QkJveEZ1bmMKKyNkZWZpbmUgRlRfR2x5cGhfQ29weV9GdW5jICAgICAgIEZUX0dseXBoX0NvcHlGdW5jCisjZGVmaW5lIEZUX0dseXBoX1ByZXBhcmVfRnVuYyAgICBGVF9HbHlwaF9QcmVwYXJlRnVuYworCisKKyAgc3RydWN0ICBGVF9HbHlwaF9DbGFzc18KKyAgeworICAgIEZUX0xvbmcgICAgICAgICAgICAgICAgIGdseXBoX3NpemU7CisgICAgRlRfR2x5cGhfRm9ybWF0ICAgICAgICAgZ2x5cGhfZm9ybWF0OworICAgIEZUX0dseXBoX0luaXRGdW5jICAgICAgIGdseXBoX2luaXQ7CisgICAgRlRfR2x5cGhfRG9uZUZ1bmMgICAgICAgZ2x5cGhfZG9uZTsKKyAgICBGVF9HbHlwaF9Db3B5RnVuYyAgICAgICBnbHlwaF9jb3B5OworICAgIEZUX0dseXBoX1RyYW5zZm9ybUZ1bmMgIGdseXBoX3RyYW5zZm9ybTsKKyAgICBGVF9HbHlwaF9HZXRCQm94RnVuYyAgICBnbHlwaF9iYm94OworICAgIEZUX0dseXBoX1ByZXBhcmVGdW5jICAgIGdseXBoX3ByZXBhcmU7CisgIH07CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfUmVuZGVyZXJfUmVuZGVyRnVuYykoIEZUX1JlbmRlcmVyICAgICAgIHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICBvcmlnaW4gKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfUmVuZGVyZXJfVHJhbnNmb3JtRnVuYykoIEZUX1JlbmRlcmVyICAgICAgIHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9NYXRyaXgqICBtYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogIGRlbHRhICk7CisKKworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9SZW5kZXJlcl9HZXRDQm94RnVuYykoIEZUX1JlbmRlcmVyICAgcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CQm94KiAgICAgIGNib3ggKTsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9SZW5kZXJlcl9TZXRNb2RlRnVuYykoIEZUX1JlbmRlcmVyICByZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICBtb2RlX3RhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvaW50ZXIgICBtb2RlX3B0ciApOworCisvKiBkZXByZWNhdGVkIGlkZW50aWZpZXJzICovCisjZGVmaW5lIEZUUmVuZGVyZXJfcmVuZGVyICBGVF9SZW5kZXJlcl9SZW5kZXJGdW5jCisjZGVmaW5lIEZUUmVuZGVyZXJfdHJhbnNmb3JtICBGVF9SZW5kZXJlcl9UcmFuc2Zvcm1GdW5jCisjZGVmaW5lIEZUUmVuZGVyZXJfZ2V0Q0JveCAgRlRfUmVuZGVyZXJfR2V0Q0JveEZ1bmMKKyNkZWZpbmUgRlRSZW5kZXJlcl9zZXRNb2RlICBGVF9SZW5kZXJlcl9TZXRNb2RlRnVuYworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmVuZGVyZXJfQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlbmRlcmVyIG1vZHVsZSBjbGFzcyBkZXNjcmlwdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcm9vdCAgICAgICAgICAgIDo6IFRoZSByb290IEBGVF9Nb2R1bGVfQ2xhc3MgZmllbGRzLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9mb3JtYXQgICAgOjogVGhlIGdseXBoIGltYWdlIGZvcm1hdCB0aGlzIHJlbmRlcmVyIGhhbmRsZXMuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlbmRlcl9nbHlwaCAgICA6OiBBIG1ldGhvZCB1c2VkIHRvIHJlbmRlciB0aGUgaW1hZ2UgdGhhdCBpcyBpbiBhICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gZ2x5cGggc2xvdCBpbnRvIGEgYml0bWFwLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRyYW5zZm9ybV9nbHlwaCA6OiBBIG1ldGhvZCB1c2VkIHRvIHRyYW5zZm9ybSB0aGUgaW1hZ2UgdGhhdCBpcyBpbiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgYSBnaXZlbiBnbHlwaCBzbG90LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdldF9nbHlwaF9jYm94ICA6OiBBIG1ldGhvZCB1c2VkIHRvIGFjY2VzcyB0aGUgZ2x5cGgncyBjYm94LiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2V0X21vZGUgICAgICAgIDo6IEEgbWV0aG9kIHVzZWQgdG8gcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYXN0ZXJfY2xhc3MgICAgOjogRm9yIEBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSByZW5kZXJlcnMgb25seS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBwb2ludGVyIHRvIGl0cyByYXN0ZXIncyBjbGFzcy4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfUmVuZGVyZXJfQ2xhc3NfCisgIHsKKyAgICBGVF9Nb2R1bGVfQ2xhc3MgICAgICAgICAgICByb290OworCisgICAgRlRfR2x5cGhfRm9ybWF0ICAgICAgICAgICAgZ2x5cGhfZm9ybWF0OworCisgICAgRlRfUmVuZGVyZXJfUmVuZGVyRnVuYyAgICAgcmVuZGVyX2dseXBoOworICAgIEZUX1JlbmRlcmVyX1RyYW5zZm9ybUZ1bmMgIHRyYW5zZm9ybV9nbHlwaDsKKyAgICBGVF9SZW5kZXJlcl9HZXRDQm94RnVuYyAgICBnZXRfZ2x5cGhfY2JveDsKKyAgICBGVF9SZW5kZXJlcl9TZXRNb2RlRnVuYyAgICBzZXRfbW9kZTsKKworICAgIEZUX1Jhc3Rlcl9GdW5jcyogICAgICAgICAgIHJhc3Rlcl9jbGFzczsKKworICB9IEZUX1JlbmRlcmVyX0NsYXNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X1JlbmRlcmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0cmlldmUgdGhlIGN1cnJlbnQgcmVuZGVyZXIgZm9yIGEgZ2l2ZW4gZ2x5cGggZm9ybWF0LiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb3JtYXQgIDo6IFRoZSBnbHlwaCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHJlbmRlcmVyIGhhbmRsZS4gIDB+aWYgbm9uZSBmb3VuZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBlcnJvciB3aWxsIGJlIHJldHVybmVkIGlmIGEgbW9kdWxlIGFscmVhZHkgZXhpc3RzIGJ5IHRoYXQgbmFtZSwgKi8KKyAgLyogICAgb3IgaWYgdGhlIG1vZHVsZSByZXF1aXJlcyBhIHZlcnNpb24gb2YgRnJlZVR5cGUgdGhhdCBpcyB0b28gZ3JlYXQuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUbyBhZGQgYSBuZXcgcmVuZGVyZXIsIHNpbXBseSB1c2UgQEZUX0FkZF9Nb2R1bGUuICBUbyByZXRyaWV2ZSBhICAgKi8KKyAgLyogICAgcmVuZGVyZXIgYnkgaXRzIG5hbWUsIHVzZSBARlRfR2V0X01vZHVsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIEZUX1JlbmRlcmVyICkKKyAgRlRfR2V0X1JlbmRlcmVyKCBGVF9MaWJyYXJ5ICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhfRm9ybWF0ICBmb3JtYXQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NldF9SZW5kZXJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNldCB0aGUgY3VycmVudCByZW5kZXJlciB0byB1c2UsIGFuZCBzZXQgYWRkaXRpb25hbCBtb2RlLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgICAgOjogQSBoYW5kbGUgdG8gdGhlIGxpYnJhcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlbmRlcmVyICAgOjogQSBoYW5kbGUgdG8gdGhlIHJlbmRlcmVyIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX3BhcmFtcyA6OiBUaGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgcGFyYW1ldGVycy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXJhbWV0ZXJzIDo6IEFkZGl0aW9uYWwgcGFyYW1ldGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSByZW5kZXJlciB3aWxsIGJlIHVzZWQgdG8gY29udmVydCBnbHlwaCAgICAgKi8KKyAgLyogICAgaW1hZ2VzIGluIHRoZSByZW5kZXJlcidzIGtub3duIGZvcm1hdCBpbnRvIGJpdG1hcHMuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGRvZXNuJ3QgY2hhbmdlIHRoZSBjdXJyZW50IHJlbmRlcmVyIGZvciBvdGhlciBmb3JtYXRzLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEN1cnJlbnRseSwgb25seSB0aGUgQi9XIHJlbmRlcmVyLCBpZiBjb21waWxlZCB3aXRoICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9SQVNURVJfT1BUSU9OX0FOVElfQUxJQVNJTkcgKHByb3ZpZGluZyBhIDUtbGV2ZWxzICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYW50aS1hbGlhc2luZyBtb2RlOyB0aGlzIG9wdGlvbiBtdXN0IGJlIHNldCBkaXJlY3RseSBpbiAgICAgICAgICAgICovCisgIC8qICAgIGBmdHJhc3Rlci5jJyBhbmQgaXMgdW5kZWZpbmVkIGJ5IGRlZmF1bHQpIGFjY2VwdHMgYSBzaW5nbGUgdGFnICAgICAqLworICAvKiAgICBgcGFsNScgdG8gc2V0IGl0cyBncmF5IHBhbGV0dGUgYXMgYSBjaGFyYWN0ZXIgc3RyaW5nIHdpdGggICAgICAgICAgKi8KKyAgLyogICAgNX5lbGVtZW50cy4gIENvbnNlcXVlbnRseSwgdGhlIHRoaXJkIGFuZCBmb3VydGggYXJndW1lbnQgYXJlIHplcm8gICovCisgIC8qICAgIG5vcm1hbGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1NldF9SZW5kZXJlciggRlRfTGlicmFyeSAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJlciAgICByZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICBudW1fcGFyYW1zLAorICAgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtZXRlcnMgKTsKKworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFJFTkRFUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0c2l6ZXMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0c2l6ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGI0NDliCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRzaXplcy5oCkBAIC0wLDAgKzEsMTU5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHNpemVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgc2l6ZSBvYmplY3RzIG1hbmFnZW1lbnQgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMywgMjAwNCwgMjAwNiwgMjAwOSBieSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUeXBpY2FsIGFwcGxpY2F0aW9uIHdvdWxkIG5vcm1hbGx5IG5vdCBuZWVkIHRvIHVzZSB0aGVzZSBmdW5jdGlvbnMuICAgKi8KKyAgLyogSG93ZXZlciwgdGhleSBoYXZlIGJlZW4gcGxhY2VkIGluIGEgcHVibGljIEFQSSBmb3IgdGhlIHJhcmUgY2FzZXMgICAgICovCisgIC8qIHdoZXJlIHRoZXkgYXJlIG5lZWRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUU0laRVNfSF9fCisjZGVmaW5lIF9fRlRTSVpFU19IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNpemVzX21hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNpemUgTWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE1hbmFnaW5nIG11bHRpcGxlIHNpemVzIHBlciBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFdoZW4gY3JlYXRpbmcgYSBuZXcgZmFjZSBvYmplY3QgKGUuZy4sIHdpdGggQEZUX05ld19GYWNlKSwgYW4gICAgICAqLworICAvKiAgICBARlRfU2l6ZSBvYmplY3QgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGFuZCB1c2VkIHRvIHN0b3JlIGFsbCAgICAgKi8KKyAgLyogICAgcGl4ZWwtc2l6ZSBkZXBlbmRlbnQgaW5mb3JtYXRpb24sIGF2YWlsYWJsZSBpbiB0aGUgYGZhY2UtPnNpemUnICAgICovCisgIC8qICAgIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSXQgaXMgaG93ZXZlciBwb3NzaWJsZSB0byBjcmVhdGUgbW9yZSBzaXplcyBmb3IgYSBnaXZlbiBmYWNlLCAgICAgICovCisgIC8qICAgIG1vc3RseSBpbiBvcmRlciB0byBtYW5hZ2Ugc2V2ZXJhbCBjaGFyYWN0ZXIgcGl4ZWwgc2l6ZXMgb2YgdGhlICAgICAqLworICAvKiAgICBzYW1lIGZvbnQgZmFtaWx5IGFuZCBzdHlsZS4gIFNlZSBARlRfTmV3X1NpemUgYW5kIEBGVF9Eb25lX1NpemUuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5vdGUgdGhhdCBARlRfU2V0X1BpeGVsX1NpemVzIGFuZCBARlRfU2V0X0NoYXJfU2l6ZSBvbmx5ICAgICAgICAgICAqLworICAvKiAgICBtb2RpZnkgdGhlIGNvbnRlbnRzIG9mIHRoZSBjdXJyZW50IGBhY3RpdmUnIHNpemU7IHlvdSB0aHVzIG5lZWQgICAgKi8KKyAgLyogICAgdG8gdXNlIEBGVF9BY3RpdmF0ZV9TaXplIHRvIGNoYW5nZSBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICA5OSUgb2YgYXBwbGljYXRpb25zIHdvbid0IG5lZWQgdGhlIGZ1bmN0aW9ucyBwcm92aWRlZCBoZXJlLCAgICAgICAgKi8KKyAgLyogICAgZXNwZWNpYWxseSBpZiB0aGV5IHVzZSB0aGUgY2FjaGluZyBzdWItc3lzdGVtLCBzbyBiZSBjYXV0aW91cyAgICAgICovCisgIC8qICAgIHdoZW4gdXNpbmcgdGhlc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDcmVhdGUgYSBuZXcgc2l6ZSBvYmplY3QgZnJvbSBhIGdpdmVuIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlIDo6IEEgaGFuZGxlIHRvIGEgcGFyZW50IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhc2l6ZSA6OiBBIGhhbmRsZSB0byBhIG5ldyBzaXplIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBZb3UgbmVlZCB0byBjYWxsIEBGVF9BY3RpdmF0ZV9TaXplIGluIG9yZGVyIHRvIHNlbGVjdCB0aGUgbmV3IHNpemUgKi8KKyAgLyogICAgZm9yIHVwY29taW5nIGNhbGxzIHRvIEBGVF9TZXRfUGl4ZWxfU2l6ZXMsIEBGVF9TZXRfQ2hhcl9TaXplLCAgICAgICovCisgIC8qICAgIEBGVF9Mb2FkX0dseXBoLCBARlRfTG9hZF9DaGFyLCBldGMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX05ld19TaXplKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgIEZUX1NpemUqICBzaXplICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Eb25lX1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEaXNjYXJkIGEgZ2l2ZW4gc2l6ZSBvYmplY3QuICBOb3RlIHRoYXQgQEZUX0RvbmVfRmFjZSAgICAgICAgICAgICAgKi8KKyAgLyogICAgYXV0b21hdGljYWxseSBkaXNjYXJkcyBhbGwgc2l6ZSBvYmplY3RzIGFsbG9jYXRlZCB3aXRoICAgICAgICAgICAgICovCisgIC8qICAgIEBGVF9OZXdfU2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNpemUgOjogQSBoYW5kbGUgdG8gYSB0YXJnZXQgc2l6ZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0RvbmVfU2l6ZSggRlRfU2l6ZSAgc2l6ZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQWN0aXZhdGVfU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRXZlbiB0aG91Z2ggaXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIHNldmVyYWwgc2l6ZSBvYmplY3RzIGZvciBhICAgICovCisgIC8qICAgIGdpdmVuIGZhY2UgKHNlZSBARlRfTmV3X1NpemUgZm9yIGRldGFpbHMpLCBmdW5jdGlvbnMgbGlrZSAgICAgICAgICAqLworICAvKiAgICBARlRfTG9hZF9HbHlwaCBvciBARlRfTG9hZF9DaGFyIG9ubHkgdXNlIHRoZSBvbmUgd2hpY2ggaGFzIGJlZW4gICAgKi8KKyAgLyogICAgYWN0aXZhdGVkIGxhc3QgdG8gZGV0ZXJtaW5lIHRoZSBgY3VycmVudCBjaGFyYWN0ZXIgcGl4ZWwgc2l6ZScuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGBhY3RpdmF0ZScgYSBwcmV2aW91c2x5IGNyZWF0ZWQgc2l6ZSAgKi8KKyAgLyogICAgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2l6ZSA6OiBBIGhhbmRsZSB0byBhIHRhcmdldCBzaXplIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgYGZhY2UnIGlzIHRoZSBzaXplJ3MgcGFyZW50IGZhY2Ugb2JqZWN0LCB0aGlzIGZ1bmN0aW9uIGNoYW5nZXMgICovCisgIC8qICAgIHRoZSB2YWx1ZSBvZiBgZmFjZS0+c2l6ZScgdG8gdGhlIGlucHV0IHNpemUgaGFuZGxlLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0FjdGl2YXRlX1NpemUoIEZUX1NpemUgIHNpemUgKTsKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRTSVpFU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0c25hbWVzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExM2RiODEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oCkBAIC0wLDAgKzEsMjAwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHNuYW1lcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgU2ltcGxlIGludGVyZmFjZSB0byBhY2Nlc3MgU0ZOVCBuYW1lIHRhYmxlcyAod2hpY2ggYXJlIHVzZWQgICAgICAgICAgKi8KKy8qICAgIHRvIGhvbGQgZm9udCBuYW1lcywgY29weXJpZ2h0IGluZm8sIG5vdGljZXMsIGV0Yy4pIChzcGVjaWZpY2F0aW9uKS4gICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhpcyBpcyBfbm90XyB1c2VkIHRvIHJldHJpZXZlIGdseXBoIG5hbWVzISAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwMywgMjAwNiwgMjAwOSwgMjAxMCBieSAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVF9TRk5UX05BTUVTX0hfXworI2RlZmluZSBfX0ZUX1NGTlRfTkFNRVNfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzZm50X25hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTRk5UIE5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBY2Nlc3MgdGhlIG5hbWVzIGVtYmVkZGVkIGluIFRydWVUeXBlIGFuZCBPcGVuVHlwZSBmaWxlcy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlIHNwZWNpZmljYXRpb25zIGFsbG93IHRoZSBpbmNsdXNpb24gb2YgICAgKi8KKyAgLyogICAgYSBzcGVjaWFsIGBuYW1lcyB0YWJsZScgaW4gZm9udCBmaWxlcy4gIFRoaXMgdGFibGUgY29udGFpbnMgICAgICAgICovCisgIC8qICAgIHRleHR1YWwgKGFuZCBpbnRlcm5hdGlvbmFsaXplZCkgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBmb250LCAgICAqLworICAvKiAgICBsaWtlIGZhbWlseSBuYW1lLCBjb3B5cmlnaHQsIHZlcnNpb24sIGV0Yy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBkZWZpbml0aW9ucyBiZWxvdyBhcmUgdXNlZCB0byBhY2Nlc3MgdGhlbSBpZiBhdmFpbGFibGUuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm90ZSB0aGF0IHRoaXMgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBnbHlwaCBuYW1lcyEgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NmbnROYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYW4gU0ZOVCBgbmFtZScgdGFibGUgZW50cnkuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBsYXRmb3JtX2lkIDo6IFRoZSBwbGF0Zm9ybSBJRCBmb3IgYHN0cmluZycuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZW5jb2RpbmdfaWQgOjogVGhlIGVuY29kaW5nIElEIGZvciBgc3RyaW5nJy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsYW5ndWFnZV9pZCA6OiBUaGUgbGFuZ3VhZ2UgSUQgZm9yIGBzdHJpbmcnLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWVfaWQgICAgIDo6IEFuIGlkZW50aWZpZXIgZm9yIGBzdHJpbmcnLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyaW5nICAgICAgOjogVGhlIGBuYW1lJyBzdHJpbmcuICBOb3RlIHRoYXQgaXRzIGZvcm1hdCBkaWZmZXJzICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgKHBsYXRmb3JtLGVuY29kaW5nKSBwYWlyLiAgSXQgY2FuICAqLworICAvKiAgICAgICAgICAgICAgICAgICBiZSBhIFBhc2NhbCBTdHJpbmcsIGEgVVRGLTE2IG9uZSwgZXRjLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIEdlbmVyYWxseSBzcGVha2luZywgdGhlIHN0cmluZyBpcyBub3QgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICB6ZXJvLXRlcm1pbmF0ZWQuICBQbGVhc2UgcmVmZXIgdG8gdGhlIFRydWVUeXBlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJpbmdfbGVuICA6OiBUaGUgbGVuZ3RoIG9mIGBzdHJpbmcnIGluIGJ5dGVzLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQb3NzaWJsZSB2YWx1ZXMgZm9yIGBwbGF0Zm9ybV9pZCcsIGBlbmNvZGluZ19pZCcsIGBsYW5ndWFnZV9pZCcsICAgKi8KKyAgLyogICAgYW5kIGBuYW1lX2lkJyBhcmUgZ2l2ZW4gaW4gdGhlIGZpbGUgYHR0bmFtZWlkLmgnLiAgRm9yIGRldGFpbHMgICAgICovCisgIC8qICAgIHBsZWFzZSByZWZlciB0byB0aGUgVHJ1ZVR5cGUgb3IgT3BlblR5cGUgc3BlY2lmaWNhdGlvbi4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2VlIGFsc28gQFRUX1BMQVRGT1JNX1hYWCwgQFRUX0FQUExFX0lEX1hYWCwgQFRUX01BQ19JRF9YWFgsICAgICAgICovCisgIC8qICAgIEBUVF9JU09fSURfWFhYLCBhbmQgQFRUX01TX0lEX1hYWC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1NmbnROYW1lXworICB7CisgICAgRlRfVVNob3J0ICBwbGF0Zm9ybV9pZDsKKyAgICBGVF9VU2hvcnQgIGVuY29kaW5nX2lkOworICAgIEZUX1VTaG9ydCAgbGFuZ3VhZ2VfaWQ7CisgICAgRlRfVVNob3J0ICBuYW1lX2lkOworCisgICAgRlRfQnl0ZSogICBzdHJpbmc7ICAgICAgLyogdGhpcyBzdHJpbmcgaXMgKm5vdCogbnVsbC10ZXJtaW5hdGVkISAqLworICAgIEZUX1VJbnQgICAgc3RyaW5nX2xlbjsgIC8qIGluIGJ5dGVzICovCisKKyAgfSBGVF9TZm50TmFtZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9TZm50X05hbWVfQ291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBudW1iZXIgb2YgbmFtZSBzdHJpbmdzIGluIHRoZSBTRk5UIGBuYW1lJyB0YWJsZS4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBudW1iZXIgb2Ygc3RyaW5ncyBpbiB0aGUgYG5hbWUnIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9VSW50ICkKKyAgRlRfR2V0X1NmbnRfTmFtZV9Db3VudCggRlRfRmFjZSAgZmFjZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X1NmbnRfTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0cmlldmUgYSBzdHJpbmcgb2YgdGhlIFNGTlQgYG5hbWUnIHRhYmxlIGZvciBhIGdpdmVuIGluZGV4LiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpZHggICA6OiBUaGUgaW5kZXggb2YgdGhlIGBuYW1lJyBzdHJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhbmFtZSA6OiBUaGUgaW5kZXhlZCBARlRfU2ZudE5hbWUgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgYHN0cmluZycgYXJyYXkgcmV0dXJuZWQgaW4gdGhlIGBhbmFtZScgc3RydWN0dXJlIGlzIG5vdCAgICAgICAgKi8KKyAgLyogICAgbnVsbC10ZXJtaW5hdGVkLiAgVGhlIGFwcGxpY2F0aW9uIHNob3VsZCBkZWFsbG9jYXRlIGl0IGlmIGl0IGlzIG5vICovCisgIC8qICAgIGxvbmdlciBpbiB1c2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlIEBGVF9HZXRfU2ZudF9OYW1lX0NvdW50IHRvIGdldCB0aGUgdG90YWwgbnVtYmVyIG9mIGF2YWlsYWJsZSAgICovCisgIC8qICAgIGBuYW1lJyB0YWJsZSBlbnRyaWVzLCB0aGVuIGRvIGEgbG9vcCB1bnRpbCB5b3UgZ2V0IHRoZSByaWdodCAgICAgICAqLworICAvKiAgICBwbGF0Zm9ybSwgZW5jb2RpbmcsIGFuZCBuYW1lIElELiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfU2ZudF9OYW1lKCBGVF9GYWNlICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgaWR4LAorICAgICAgICAgICAgICAgICAgICBGVF9TZm50TmFtZSAgKmFuYW1lICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBjb25zdGFudDoKKyAgICogICBGVF9QQVJBTV9UQUdfSUdOT1JFX1BSRUZFUlJFRF9GQU1JTFkKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgY29uc3RhbnQgdXNlZCBhcyB0aGUgdGFnIG9mIEBGVF9QYXJhbWV0ZXIgc3RydWN0dXJlcyB0byBtYWtlCisgICAqICAgRlRfT3Blbl9GYWNlKCkgaWdub3JlIHByZWZlcnJlZCBmYW1pbHkgc3ViZmFtaWx5IG5hbWVzIGluIGBuYW1lJworICAgKiAgIHRhYmxlIHNpbmNlIE9wZW5UeXBlIHZlcnNpb24gMS40LiAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKKyAgICogICBsZWdhY3kgc3lzdGVtcyB3aGljaCBoYXMgNC1mYWNlLXBlci1mYW1pbHkgcmVzdHJpY3Rpb24uCisgICAqCisgICAqLworI2RlZmluZSBGVF9QQVJBTV9UQUdfSUdOT1JFX1BSRUZFUlJFRF9GQU1JTFkgIEZUX01BS0VfVEFHKCAnaScsICdnJywgJ3AnLCAnZicgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAY29uc3RhbnQ6CisgICAqICAgRlRfUEFSQU1fVEFHX0lHTk9SRV9QUkVGRVJSRURfU1VCRkFNSUxZCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGNvbnN0YW50IHVzZWQgYXMgdGhlIHRhZyBvZiBARlRfUGFyYW1ldGVyIHN0cnVjdHVyZXMgdG8gbWFrZQorICAgKiAgIEZUX09wZW5fRmFjZSgpIGlnbm9yZSBwcmVmZXJyZWQgc3ViZmFtaWx5IG5hbWVzIGluIGBuYW1lJyB0YWJsZSBzaW5jZQorICAgKiAgIE9wZW5UeXBlIHZlcnNpb24gMS40LiAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5CisgICAqICAgc3lzdGVtcyB3aGljaCBoYXMgNC1mYWNlLXBlci1mYW1pbHkgcmVzdHJpY3Rpb24uCisgICAqCisgICAqLworI2RlZmluZSBGVF9QQVJBTV9UQUdfSUdOT1JFX1BSRUZFUlJFRF9TVUJGQU1JTFkgIEZUX01BS0VfVEFHKCAnaScsICdnJywgJ3AnLCAncycgKQorCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVF9TRk5UX05BTUVTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2UuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVmOWExMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlLmgKQEAgLTAsMCArMSw3NTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c3Ryb2tlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBwYXRoIHN0cm9rZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMi0yMDA2LCAyMDA4LCAyMDA5LCAyMDExLTIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUX1NUUk9LRV9IX18KKyNkZWZpbmUgX19GVF9TVFJPS0VfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZ0b3V0bG4uaCIKKyNpbmNsdWRlICJmdGdseXBoLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEBzZWN0aW9uOgorICAqICAgIGdseXBoX3N0cm9rZXIKKyAgKgorICAqIEB0aXRsZToKKyAgKiAgICBHbHlwaCBTdHJva2VyCisgICoKKyAgKiBAYWJzdHJhY3Q6CisgICogICAgR2VuZXJhdGluZyBib3JkZXJlZCBhbmQgc3Ryb2tlZCBnbHlwaHMuCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICAgVGhpcyBjb21wb25lbnQgZ2VuZXJhdGVzIHN0cm9rZWQgb3V0bGluZXMgb2YgYSBnaXZlbiB2ZWN0b3JpYWwKKyAgKiAgICBnbHlwaC4gIEl0IGFsc28gYWxsb3dzIHlvdSB0byByZXRyaWV2ZSB0aGUgYG91dHNpZGUnIGFuZC9vciB0aGUKKyAgKiAgICBgaW5zaWRlJyBib3JkZXJzIG9mIHRoZSBzdHJva2UuCisgICoKKyAgKiAgICBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gZ2VuZXJhdGUgYGJvcmRlcmVkJyBnbHlwaCwgaS5lLiwgZ2x5cGhzCisgICogICAgZGlzcGxheWVkIHdpdGggYSBjb2xvdXJlZCAoYW5kIGFudGktYWxpYXNlZCkgYm9yZGVyIGFyb3VuZCB0aGVpcgorICAqICAgIHNoYXBlLgorICAqLworCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgorICAqIEB0eXBlOgorICAqICAgRlRfU3Ryb2tlcgorICAqCisgICogQGRlc2NyaXB0aW9uOgorICAqICAgT3BhcXVlIGhhbmRsZXIgdG8gYSBwYXRoIHN0cm9rZXIgb2JqZWN0LgorICAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9TdHJva2VyUmVjXyogIEZUX1N0cm9rZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgRlRfU3Ryb2tlcl9MaW5lSm9pbgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlc2UgdmFsdWVzIGRldGVybWluZSBob3cgdHdvIGpvaW5pbmcgbGluZXMgYXJlIHJlbmRlcmVkCisgICAqICAgaW4gYSBzdHJva2VyLgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIEZUX1NUUk9LRVJfTElORUpPSU5fUk9VTkQgOjoKKyAgICogICAgIFVzZWQgdG8gcmVuZGVyIHJvdW5kZWQgbGluZSBqb2lucy4gIENpcmN1bGFyIGFyY3MgYXJlIHVzZWQKKyAgICogICAgIHRvIGpvaW4gdHdvIGxpbmVzIHNtb290aGx5LgorICAgKgorICAgKiAgIEZUX1NUUk9LRVJfTElORUpPSU5fQkVWRUwgOjoKKyAgICogICAgIFVzZWQgdG8gcmVuZGVyIGJldmVsZWQgbGluZSBqb2lucy4gIFRoZSBvdXRlciBjb3JuZXIgb2YKKyAgICogICAgIHRoZSBqb2luZWQgbGluZXMgaXMgZmlsbGVkIGJ5IGVuY2xvc2luZyB0aGUgdHJpYW5ndWxhcgorICAgKiAgICAgcmVnaW9uIG9mIHRoZSBjb3JuZXIgd2l0aCBhIHN0cmFpZ2h0IGxpbmUgYmV0d2VlbiB0aGUKKyAgICogICAgIG91dGVyIGNvcm5lcnMgb2YgZWFjaCBzdHJva2UuCisgICAqCisgICAqICAgRlRfU1RST0tFUl9MSU5FSk9JTl9NSVRFUl9GSVhFRCA6OgorICAgKiAgICAgVXNlZCB0byByZW5kZXIgbWl0ZXJlZCBsaW5lIGpvaW5zLCB3aXRoIGZpeGVkIGJldmVscyBpZiB0aGUKKyAgICogICAgIG1pdGVyIGxpbWl0IGlzIGV4Y2VlZGVkLiAgVGhlIG91dGVyIGVkZ2VzIG9mIHRoZSBzdHJva2VzCisgICAqICAgICBmb3IgdGhlIHR3byBzZWdtZW50cyBhcmUgZXh0ZW5kZWQgdW50aWwgdGhleSBtZWV0IGF0IGFuCisgICAqICAgICBhbmdsZS4gIElmIHRoZSBzZWdtZW50cyBtZWV0IGF0IHRvbyBzaGFycCBhbiBhbmdsZSAoc3VjaAorICAgKiAgICAgdGhhdCB0aGUgbWl0ZXIgd291bGQgZXh0ZW5kIGZyb20gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUKKyAgICogICAgIHNlZ21lbnRzIGEgZGlzdGFuY2UgZ3JlYXRlciB0aGFuIHRoZSBwcm9kdWN0IG9mIHRoZSBtaXRlcgorICAgKiAgICAgbGltaXQgdmFsdWUgYW5kIHRoZSBib3JkZXIgcmFkaXVzKSwgdGhlbiBhIGJldmVsIGpvaW4gKHNlZQorICAgKiAgICAgYWJvdmUpIGlzIHVzZWQgaW5zdGVhZC4gIFRoaXMgcHJldmVudHMgbG9uZyBzcGlrZXMgYmVpbmcKKyAgICogICAgIGNyZWF0ZWQuICBGVF9TVFJPS0VSX0xJTkVKT0lOX01JVEVSX0ZJWEVEIGdlbmVyYXRlcyBhIG1pdGVyCisgICAqICAgICBsaW5lIGpvaW4gYXMgdXNlZCBpbiBQb3N0U2NyaXB0IGFuZCBQREYuCisgICAqCisgICAqICAgRlRfU1RST0tFUl9MSU5FSk9JTl9NSVRFUl9WQVJJQUJMRSA6OgorICAgKiAgIEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVIgOjoKKyAgICogICAgIFVzZWQgdG8gcmVuZGVyIG1pdGVyZWQgbGluZSBqb2lucywgd2l0aCB2YXJpYWJsZSBiZXZlbHMgaWYKKyAgICogICAgIHRoZSBtaXRlciBsaW1pdCBpcyBleGNlZWRlZC4gIFRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlCisgICAqICAgICBzdHJva2VzIGlzIGNsaXBwZWQgYXQgYSBsaW5lIHBlcnBlbmRpY3VsYXIgdG8gdGhlIGJpc2VjdG9yCisgICAqICAgICBvZiB0aGUgYW5nbGUgYmV0d2VlbiB0aGUgc3Ryb2tlcywgYXQgdGhlIGRpc3RhbmNlIGZyb20gdGhlCisgICAqICAgICBpbnRlcnNlY3Rpb24gb2YgdGhlIHNlZ21lbnRzIGVxdWFsIHRvIHRoZSBwcm9kdWN0IG9mIHRoZQorICAgKiAgICAgbWl0ZXIgbGltaXQgdmFsdWUgYW5kIHRoZSBib3JkZXIgcmFkaXVzLiAgVGhpcyBwcmV2ZW50cworICAgKiAgICAgbG9uZyBzcGlrZXMgYmVpbmcgY3JlYXRlZC4KKyAgICogICAgIEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVJfVkFSSUFCTEUgZ2VuZXJhdGVzIGEgbWl0ZXJlZCBsaW5lCisgICAqICAgICBqb2luIGFzIHVzZWQgaW4gWFBTLiAgRlRfU1RST0tFUl9MSU5FSk9JTl9NSVRFUiBpcyBhbiBhbGlhcworICAgKiAgICAgZm9yIEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVJfVkFSSUFCTEUsIHJldGFpbmVkIGZvcgorICAgKiAgICAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisgICAqLworICB0eXBlZGVmIGVudW0gIEZUX1N0cm9rZXJfTGluZUpvaW5fCisgIHsKKyAgICBGVF9TVFJPS0VSX0xJTkVKT0lOX1JPVU5EICAgICAgICAgID0gMCwKKyAgICBGVF9TVFJPS0VSX0xJTkVKT0lOX0JFVkVMICAgICAgICAgID0gMSwKKyAgICBGVF9TVFJPS0VSX0xJTkVKT0lOX01JVEVSX1ZBUklBQkxFID0gMiwKKyAgICBGVF9TVFJPS0VSX0xJTkVKT0lOX01JVEVSICAgICAgICAgID0gRlRfU1RST0tFUl9MSU5FSk9JTl9NSVRFUl9WQVJJQUJMRSwKKyAgICBGVF9TVFJPS0VSX0xJTkVKT0lOX01JVEVSX0ZJWEVEICAgID0gMworCisgIH0gRlRfU3Ryb2tlcl9MaW5lSm9pbjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBGVF9TdHJva2VyX0xpbmVDYXAKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoZXNlIHZhbHVlcyBkZXRlcm1pbmUgaG93IHRoZSBlbmQgb2Ygb3BlbmVkIHN1Yi1wYXRocyBhcmUKKyAgICogICByZW5kZXJlZCBpbiBhIHN0cm9rZS4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBGVF9TVFJPS0VSX0xJTkVDQVBfQlVUVCA6OgorICAgKiAgICAgVGhlIGVuZCBvZiBsaW5lcyBpcyByZW5kZXJlZCBhcyBhIGZ1bGwgc3RvcCBvbiB0aGUgbGFzdAorICAgKiAgICAgcG9pbnQgaXRzZWxmLgorICAgKgorICAgKiAgIEZUX1NUUk9LRVJfTElORUNBUF9ST1VORCA6OgorICAgKiAgICAgVGhlIGVuZCBvZiBsaW5lcyBpcyByZW5kZXJlZCBhcyBhIGhhbGYtY2lyY2xlIGFyb3VuZCB0aGUKKyAgICogICAgIGxhc3QgcG9pbnQuCisgICAqCisgICAqICAgRlRfU1RST0tFUl9MSU5FQ0FQX1NRVUFSRSA6OgorICAgKiAgICAgVGhlIGVuZCBvZiBsaW5lcyBpcyByZW5kZXJlZCBhcyBhIHNxdWFyZSBhcm91bmQgdGhlCisgICAqICAgICBsYXN0IHBvaW50LgorICAgKi8KKyAgdHlwZWRlZiBlbnVtICBGVF9TdHJva2VyX0xpbmVDYXBfCisgIHsKKyAgICBGVF9TVFJPS0VSX0xJTkVDQVBfQlVUVCA9IDAsCisgICAgRlRfU1RST0tFUl9MSU5FQ0FQX1JPVU5ELAorICAgIEZUX1NUUk9LRVJfTElORUNBUF9TUVVBUkUKKworICB9IEZUX1N0cm9rZXJfTGluZUNhcDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBGVF9TdHJva2VyQm9yZGVyCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGVzZSB2YWx1ZXMgYXJlIHVzZWQgdG8gc2VsZWN0IGEgZ2l2ZW4gc3Ryb2tlIGJvcmRlcgorICAgKiAgIGluIEBGVF9TdHJva2VyX0dldEJvcmRlckNvdW50cyBhbmQgQEZUX1N0cm9rZXJfRXhwb3J0Qm9yZGVyLgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIEZUX1NUUk9LRVJfQk9SREVSX0xFRlQgOjoKKyAgICogICAgIFNlbGVjdCB0aGUgbGVmdCBib3JkZXIsIHJlbGF0aXZlIHRvIHRoZSBkcmF3aW5nIGRpcmVjdGlvbi4KKyAgICoKKyAgICogICBGVF9TVFJPS0VSX0JPUkRFUl9SSUdIVCA6OgorICAgKiAgICAgU2VsZWN0IHRoZSByaWdodCBib3JkZXIsIHJlbGF0aXZlIHRvIHRoZSBkcmF3aW5nIGRpcmVjdGlvbi4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgQXBwbGljYXRpb25zIGFyZSBnZW5lcmFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgYGluc2lkZScgYW5kIGBvdXRzaWRlJworICAgKiAgIGJvcmRlcnMuICBIb3dldmVyLCB0aGVyZSBpcyBubyBkaXJlY3QgbWFwcGluZyBiZXR3ZWVuIHRoZXNlIGFuZCB0aGUKKyAgICogICBgbGVmdCcgYW5kIGByaWdodCcgb25lcywgc2luY2UgdGhpcyByZWFsbHkgZGVwZW5kcyBvbiB0aGUgZ2x5cGgncworICAgKiAgIGRyYXdpbmcgb3JpZW50YXRpb24sIHdoaWNoIHZhcmllcyBiZXR3ZWVuIGZvbnQgZm9ybWF0cy4KKyAgICoKKyAgICogICBZb3UgY2FuIGhvd2V2ZXIgdXNlIEBGVF9PdXRsaW5lX0dldEluc2lkZUJvcmRlciBhbmQKKyAgICogICBARlRfT3V0bGluZV9HZXRPdXRzaWRlQm9yZGVyIHRvIGdldCB0aGVzZS4KKyAgICovCisgIHR5cGVkZWYgZW51bSAgRlRfU3Ryb2tlckJvcmRlcl8KKyAgeworICAgIEZUX1NUUk9LRVJfQk9SREVSX0xFRlQgPSAwLAorICAgIEZUX1NUUk9LRVJfQk9SREVSX1JJR0hUCisKKyAgfSBGVF9TdHJva2VyQm9yZGVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9PdXRsaW5lX0dldEluc2lkZUJvcmRlcgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0cmlldmUgdGhlIEBGVF9TdHJva2VyQm9yZGVyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICAqICAgYGluc2lkZScgYm9yZGVycyBvZiBhIGdpdmVuIG91dGxpbmUuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBvdXRsaW5lIDo6CisgICAqICAgICBUaGUgc291cmNlIG91dGxpbmUgaGFuZGxlLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIFRoZSBib3JkZXIgaW5kZXguICBARlRfU1RST0tFUl9CT1JERVJfUklHSFQgZm9yIGVtcHR5IG9yIGludmFsaWQKKyAgICogICBvdXRsaW5lcy4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfU3Ryb2tlckJvcmRlciApCisgIEZUX091dGxpbmVfR2V0SW5zaWRlQm9yZGVyKCBGVF9PdXRsaW5lKiAgb3V0bGluZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9PdXRsaW5lX0dldE91dHNpZGVCb3JkZXIKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFJldHJpZXZlIHRoZSBARlRfU3Ryb2tlckJvcmRlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgKiAgIGBvdXRzaWRlJyBib3JkZXJzIG9mIGEgZ2l2ZW4gb3V0bGluZS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIG91dGxpbmUgOjoKKyAgICogICAgIFRoZSBzb3VyY2Ugb3V0bGluZSBoYW5kbGUuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgVGhlIGJvcmRlciBpbmRleC4gIEBGVF9TVFJPS0VSX0JPUkRFUl9MRUZUIGZvciBlbXB0eSBvciBpbnZhbGlkCisgICAqICAgb3V0bGluZXMuCisgICAqLworICBGVF9FWFBPUlQoIEZUX1N0cm9rZXJCb3JkZXIgKQorICBGVF9PdXRsaW5lX0dldE91dHNpZGVCb3JkZXIoIEZUX091dGxpbmUqICBvdXRsaW5lICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1N0cm9rZXJfTmV3CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBDcmVhdGUgYSBuZXcgc3Ryb2tlciBvYmplY3QuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBsaWJyYXJ5IDo6CisgICAqICAgICBGcmVlVHlwZSBsaWJyYXJ5IGhhbmRsZS4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICBhc3Ryb2tlciA6OgorICAgKiAgICAgQSBuZXcgc3Ryb2tlciBvYmplY3QgaGFuZGxlLiAgTlVMTCBpbiBjYXNlIG9mIGVycm9yLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1N0cm9rZXJfTmV3KCBGVF9MaWJyYXJ5ICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgIEZUX1N0cm9rZXIgICphc3Ryb2tlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX1NldAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmVzZXQgYSBzdHJva2VyIG9iamVjdCdzIGF0dHJpYnV0ZXMuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzdHJva2VyIDo6CisgICAqICAgICBUaGUgdGFyZ2V0IHN0cm9rZXIgaGFuZGxlLgorICAgKgorICAgKiAgIHJhZGl1cyA6OgorICAgKiAgICAgVGhlIGJvcmRlciByYWRpdXMuCisgICAqCisgICAqICAgbGluZV9jYXAgOjoKKyAgICogICAgIFRoZSBsaW5lIGNhcCBzdHlsZS4KKyAgICoKKyAgICogICBsaW5lX2pvaW4gOjoKKyAgICogICAgIFRoZSBsaW5lIGpvaW4gc3R5bGUuCisgICAqCisgICAqICAgbWl0ZXJfbGltaXQgOjoKKyAgICogICAgIFRoZSBtaXRlciBsaW1pdCBmb3IgdGhlIEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVJfRklYRUQgYW5kCisgICAqICAgICBGVF9TVFJPS0VSX0xJTkVKT0lOX01JVEVSX1ZBUklBQkxFIGxpbmUgam9pbiBzdHlsZXMsCisgICAqICAgICBleHByZXNzZWQgYXMgMTYuMTYgZml4ZWQtcG9pbnQgdmFsdWUuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoZSByYWRpdXMgaXMgZXhwcmVzc2VkIGluIHRoZSBzYW1lIHVuaXRzIGFzIHRoZSBvdXRsaW5lCisgICAqICAgY29vcmRpbmF0ZXMuCisgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9TdHJva2VyX1NldCggRlRfU3Ryb2tlciAgICAgICAgICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgICAgICAgICAgIHJhZGl1cywKKyAgICAgICAgICAgICAgICAgIEZUX1N0cm9rZXJfTGluZUNhcCAgIGxpbmVfY2FwLAorICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlcl9MaW5lSm9pbiAgbGluZV9qb2luLAorICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgICAgICAgICAgbWl0ZXJfbGltaXQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9SZXdpbmQKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFJlc2V0IGEgc3Ryb2tlciBvYmplY3Qgd2l0aG91dCBjaGFuZ2luZyBpdHMgYXR0cmlidXRlcy4KKyAgICogICBZb3Ugc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgYmVnaW5uaW5nIGEgbmV3CisgICAqICAgc2VyaWVzIG9mIGNhbGxzIHRvIEBGVF9TdHJva2VyX0JlZ2luU3ViUGF0aCBvcgorICAgKiAgIEBGVF9TdHJva2VyX0VuZFN1YlBhdGguCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzdHJva2VyIDo6CisgICAqICAgICBUaGUgdGFyZ2V0IHN0cm9rZXIgaGFuZGxlLgorICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkICkKKyAgRlRfU3Ryb2tlcl9SZXdpbmQoIEZUX1N0cm9rZXIgIHN0cm9rZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9QYXJzZU91dGxpbmUKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdXNlZCB0byBwYXJzZSBhIHdob2xlIG91dGxpbmUgd2l0aAorICAgKiAgIHRoZSBzdHJva2VyLiAgVGhlIHJlc3VsdGluZyBvdXRsaW5lKHMpIGNhbiBiZSByZXRyaWV2ZWQKKyAgICogICBsYXRlciBieSBmdW5jdGlvbnMgbGlrZSBARlRfU3Ryb2tlcl9HZXRDb3VudHMgYW5kIEBGVF9TdHJva2VyX0V4cG9ydC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqICAgb3V0bGluZSA6OgorICAgKiAgICAgVGhlIHNvdXJjZSBvdXRsaW5lLgorICAgKgorICAgKiAgIG9wZW5lZCA6OgorICAgKiAgICAgQSBib29sZWFuLiAgSWZ+MSwgdGhlIG91dGxpbmUgaXMgdHJlYXRlZCBhcyBhbiBvcGVuIHBhdGggaW5zdGVhZAorICAgKiAgICAgb2YgYSBjbG9zZWQgb25lLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIElmIGBvcGVuZWQnIGlzfjAgKHRoZSBkZWZhdWx0KSwgdGhlIG91dGxpbmUgaXMgdHJlYXRlZCBhcyBhIGNsb3NlZAorICAgKiAgIHBhdGgsIGFuZCB0aGUgc3Ryb2tlciBnZW5lcmF0ZXMgdHdvIGRpc3RpbmN0IGBib3JkZXInIG91dGxpbmVzLgorICAgKgorICAgKiAgIElmIGBvcGVuZWQnIGlzfjEsIHRoZSBvdXRsaW5lIGlzIHByb2Nlc3NlZCBhcyBhbiBvcGVuIHBhdGgsIGFuZCB0aGUKKyAgICogICBzdHJva2VyIGdlbmVyYXRlcyBhIHNpbmdsZSBgc3Ryb2tlJyBvdXRsaW5lLgorICAgKgorICAgKiAgIFRoaXMgZnVuY3Rpb24gY2FsbHMgQEZUX1N0cm9rZXJfUmV3aW5kIGF1dG9tYXRpY2FsbHkuCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3Ryb2tlcl9QYXJzZU91dGxpbmUoIEZUX1N0cm9rZXIgICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSogIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgb3BlbmVkICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1N0cm9rZXJfQmVnaW5TdWJQYXRoCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBTdGFydCBhIG5ldyBzdWItcGF0aCBpbiB0aGUgc3Ryb2tlci4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqICAgdG8gOjoKKyAgICogICAgIEEgcG9pbnRlciB0byB0aGUgc3RhcnQgdmVjdG9yLgorICAgKgorICAgKiAgIG9wZW4gOjoKKyAgICogICAgIEEgYm9vbGVhbi4gIElmfjEsIHRoZSBzdWItcGF0aCBpcyB0cmVhdGVkIGFzIGFuIG9wZW4gb25lLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gc3Ryb2tlIGEgcGF0aCB0aGF0IGlzCisgICAqICAgbm90IHN0b3JlZCBhcyBhbiBARlRfT3V0bGluZSBvYmplY3QuCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3Ryb2tlcl9CZWdpblN1YlBhdGgoIEZUX1N0cm9rZXIgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICB0bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgIG9wZW4gKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9FbmRTdWJQYXRoCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBDbG9zZSB0aGUgY3VycmVudCBzdWItcGF0aCBpbiB0aGUgc3Ryb2tlci4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgWW91IHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgQEZUX1N0cm9rZXJfQmVnaW5TdWJQYXRoLgorICAgKiAgIElmIHRoZSBzdWJwYXRoIHdhcyBub3QgYG9wZW5lZCcsIHRoaXMgZnVuY3Rpb24gYGRyYXdzJyBhCisgICAqICAgc2luZ2xlIGxpbmUgc2VnbWVudCB0byB0aGUgc3RhcnQgcG9zaXRpb24gd2hlbiBuZWVkZWQuCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3Ryb2tlcl9FbmRTdWJQYXRoKCBGVF9TdHJva2VyICBzdHJva2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1N0cm9rZXJfTGluZVRvCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBgRHJhdycgYSBzaW5nbGUgbGluZSBzZWdtZW50IGluIHRoZSBzdHJva2VyJ3MgY3VycmVudCBzdWItcGF0aCwKKyAgICogICBmcm9tIHRoZSBsYXN0IHBvc2l0aW9uLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3Ryb2tlciA6OgorICAgKiAgICAgVGhlIHRhcmdldCBzdHJva2VyIGhhbmRsZS4KKyAgICoKKyAgICogICB0byA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIHRoZSBkZXN0aW5hdGlvbiBwb2ludC4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBZb3Ugc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBiZXR3ZWVuIEBGVF9TdHJva2VyX0JlZ2luU3ViUGF0aCBhbmQKKyAgICogICBARlRfU3Ryb2tlcl9FbmRTdWJQYXRoLgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1N0cm9rZXJfTGluZVRvKCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgdG8gKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9Db25pY1RvCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBgRHJhdycgYSBzaW5nbGUgcXVhZHJhdGljIELDqXppZXIgaW4gdGhlIHN0cm9rZXIncyBjdXJyZW50IHN1Yi1wYXRoLAorICAgKiAgIGZyb20gdGhlIGxhc3QgcG9zaXRpb24uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzdHJva2VyIDo6CisgICAqICAgICBUaGUgdGFyZ2V0IHN0cm9rZXIgaGFuZGxlLgorICAgKgorICAgKiAgIGNvbnRyb2wgOjoKKyAgICogICAgIEEgcG9pbnRlciB0byBhIELDqXppZXIgY29udHJvbCBwb2ludC4KKyAgICoKKyAgICogICB0byA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIHRoZSBkZXN0aW5hdGlvbiBwb2ludC4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBZb3Ugc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBiZXR3ZWVuIEBGVF9TdHJva2VyX0JlZ2luU3ViUGF0aCBhbmQKKyAgICogICBARlRfU3Ryb2tlcl9FbmRTdWJQYXRoLgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX1N0cm9rZXJfQ29uaWNUbyggRlRfU3Ryb2tlciAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICBjb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIHRvICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1N0cm9rZXJfQ3ViaWNUbworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgYERyYXcnIGEgc2luZ2xlIGN1YmljIELDqXppZXIgaW4gdGhlIHN0cm9rZXIncyBjdXJyZW50IHN1Yi1wYXRoLAorICAgKiAgIGZyb20gdGhlIGxhc3QgcG9zaXRpb24uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzdHJva2VyIDo6CisgICAqICAgICBUaGUgdGFyZ2V0IHN0cm9rZXIgaGFuZGxlLgorICAgKgorICAgKiAgIGNvbnRyb2wxIDo6CisgICAqICAgICBBIHBvaW50ZXIgdG8gdGhlIGZpcnN0IELDqXppZXIgY29udHJvbCBwb2ludC4KKyAgICoKKyAgICogICBjb250cm9sMiA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIHNlY29uZCBCw6l6aWVyIGNvbnRyb2wgcG9pbnQuCisgICAqCisgICAqICAgdG8gOjoKKyAgICogICAgIEEgcG9pbnRlciB0byB0aGUgZGVzdGluYXRpb24gcG9pbnQuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgWW91IHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gYmV0d2VlbiBARlRfU3Ryb2tlcl9CZWdpblN1YlBhdGggYW5kCisgICAqICAgQEZUX1N0cm9rZXJfRW5kU3ViUGF0aC4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TdHJva2VyX0N1YmljVG8oIEZUX1N0cm9rZXIgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgY29udHJvbDEsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgY29udHJvbDIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgdG8gKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9HZXRCb3JkZXJDb3VudHMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIENhbGwgdGhpcyBmdW5jdGlvbiBvbmNlIHlvdSBoYXZlIGZpbmlzaGVkIHBhcnNpbmcgeW91ciBwYXRocworICAgKiAgIHdpdGggdGhlIHN0cm9rZXIuICBJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgcG9pbnRzIGFuZAorICAgKiAgIGNvbnRvdXJzIG5lY2Vzc2FyeSB0byBleHBvcnQgb25lIG9mIHRoZSBgYm9yZGVyJyBvciBgc3Ryb2tlJworICAgKiAgIG91dGxpbmVzIGdlbmVyYXRlZCBieSB0aGUgc3Ryb2tlci4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqICAgYm9yZGVyIDo6CisgICAqICAgICBUaGUgYm9yZGVyIGluZGV4LgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIGFudW1fcG9pbnRzIDo6CisgICAqICAgICBUaGUgbnVtYmVyIG9mIHBvaW50cy4KKyAgICoKKyAgICogICBhbnVtX2NvbnRvdXJzIDo6CisgICAqICAgICBUaGUgbnVtYmVyIG9mIGNvbnRvdXJzLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFdoZW4gYW4gb3V0bGluZSwgb3IgYSBzdWItcGF0aCwgaXMgYGNsb3NlZCcsIHRoZSBzdHJva2VyIGdlbmVyYXRlcworICAgKiAgIHR3byBpbmRlcGVuZGVudCBgYm9yZGVyJyBvdXRsaW5lcywgbmFtZWQgYGxlZnQnIGFuZCBgcmlnaHQnLgorICAgKgorICAgKiAgIFdoZW4gdGhlIG91dGxpbmUsIG9yIGEgc3ViLXBhdGgsIGlzIGBvcGVuZWQnLCB0aGUgc3Ryb2tlciBtZXJnZXMKKyAgICogICB0aGUgYGJvcmRlcicgb3V0bGluZXMgd2l0aCBjYXBzLiAgVGhlIGBsZWZ0JyBib3JkZXIgcmVjZWl2ZXMgYWxsCisgICAqICAgcG9pbnRzLCB3aGlsZSB0aGUgYHJpZ2h0JyBib3JkZXIgYmVjb21lcyBlbXB0eS4KKyAgICoKKyAgICogICBVc2UgdGhlIGZ1bmN0aW9uIEBGVF9TdHJva2VyX0dldENvdW50cyBpbnN0ZWFkIGlmIHlvdSB3YW50IHRvCisgICAqICAgcmV0cmlldmUgdGhlIGNvdW50cyBhc3NvY2lhdGVkIHRvIGJvdGggYm9yZGVycy4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TdHJva2VyX0dldEJvcmRlckNvdW50cyggRlRfU3Ryb2tlciAgICAgICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cm9rZXJCb3JkZXIgIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgKmFudW1fcG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAqYW51bV9jb250b3VycyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX0V4cG9ydEJvcmRlcgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIEBGVF9TdHJva2VyX0dldEJvcmRlckNvdW50cyB0bworICAgKiAgIGV4cG9ydCB0aGUgY29ycmVzcG9uZGluZyBib3JkZXIgdG8geW91ciBvd24gQEZUX091dGxpbmUKKyAgICogICBzdHJ1Y3R1cmUuCisgICAqCisgICAqICAgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gYXBwZW5kcyB0aGUgYm9yZGVyIHBvaW50cyBhbmQKKyAgICogICBjb250b3VycyB0byB5b3VyIG91dGxpbmUsIGJ1dCBkb2VzIG5vdCB0cnkgdG8gcmVzaXplIGl0cworICAgKiAgIGFycmF5cy4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqICAgYm9yZGVyIDo6CisgICAqICAgICBUaGUgYm9yZGVyIGluZGV4LgorICAgKgorICAgKiAgIG91dGxpbmUgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgb3V0bGluZSBoYW5kbGUuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIEFsd2F5cyBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgQEZUX1N0cm9rZXJfR2V0Qm9yZGVyQ291bnRzIHRvCisgICAqICAgZ2V0IHN1cmUgdGhhdCB0aGVyZSBpcyBlbm91Z2ggcm9vbSBpbiB5b3VyIEBGVF9PdXRsaW5lIG9iamVjdCB0bworICAgKiAgIHJlY2VpdmUgYWxsIG5ldyBkYXRhLgorICAgKgorICAgKiAgIFdoZW4gYW4gb3V0bGluZSwgb3IgYSBzdWItcGF0aCwgaXMgYGNsb3NlZCcsIHRoZSBzdHJva2VyIGdlbmVyYXRlcworICAgKiAgIHR3byBpbmRlcGVuZGVudCBgYm9yZGVyJyBvdXRsaW5lcywgbmFtZWQgYGxlZnQnIGFuZCBgcmlnaHQnCisgICAqCisgICAqICAgV2hlbiB0aGUgb3V0bGluZSwgb3IgYSBzdWItcGF0aCwgaXMgYG9wZW5lZCcsIHRoZSBzdHJva2VyIG1lcmdlcworICAgKiAgIHRoZSBgYm9yZGVyJyBvdXRsaW5lcyB3aXRoIGNhcHMuIFRoZSBgbGVmdCcgYm9yZGVyIHJlY2VpdmVzIGFsbAorICAgKiAgIHBvaW50cywgd2hpbGUgdGhlIGByaWdodCcgYm9yZGVyIGJlY29tZXMgZW1wdHkuCisgICAqCisgICAqICAgVXNlIHRoZSBmdW5jdGlvbiBARlRfU3Ryb2tlcl9FeHBvcnQgaW5zdGVhZCBpZiB5b3Ugd2FudCB0bworICAgKiAgIHJldHJpZXZlIGFsbCBib3JkZXJzIGF0IG9uY2UuCisgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9TdHJva2VyX0V4cG9ydEJvcmRlciggRlRfU3Ryb2tlciAgICAgICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cm9rZXJCb3JkZXIgIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX091dGxpbmUqICAgICAgIG91dGxpbmUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9HZXRDb3VudHMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIENhbGwgdGhpcyBmdW5jdGlvbiBvbmNlIHlvdSBoYXZlIGZpbmlzaGVkIHBhcnNpbmcgeW91ciBwYXRocworICAgKiAgIHdpdGggdGhlIHN0cm9rZXIuICBJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgcG9pbnRzIGFuZAorICAgKiAgIGNvbnRvdXJzIG5lY2Vzc2FyeSB0byBleHBvcnQgYWxsIHBvaW50cy9ib3JkZXJzIGZyb20gdGhlIHN0cm9rZWQKKyAgICogICBvdXRsaW5lL3BhdGguCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzdHJva2VyIDo6CisgICAqICAgICBUaGUgdGFyZ2V0IHN0cm9rZXIgaGFuZGxlLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIGFudW1fcG9pbnRzIDo6CisgICAqICAgICBUaGUgbnVtYmVyIG9mIHBvaW50cy4KKyAgICoKKyAgICogICBhbnVtX2NvbnRvdXJzIDo6CisgICAqICAgICBUaGUgbnVtYmVyIG9mIGNvbnRvdXJzLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfU3Ryb2tlcl9HZXRDb3VudHMoIEZUX1N0cm9rZXIgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICphbnVtX3BvaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgKmFudW1fY29udG91cnMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfU3Ryb2tlcl9FeHBvcnQKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIENhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBARlRfU3Ryb2tlcl9HZXRCb3JkZXJDb3VudHMgdG8KKyAgICogICBleHBvcnQgYWxsIGJvcmRlcnMgdG8geW91ciBvd24gQEZUX091dGxpbmUgc3RydWN0dXJlLgorICAgKgorICAgKiAgIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGFwcGVuZHMgdGhlIGJvcmRlciBwb2ludHMgYW5kCisgICAqICAgY29udG91cnMgdG8geW91ciBvdXRsaW5lLCBidXQgZG9lcyBub3QgdHJ5IHRvIHJlc2l6ZSBpdHMKKyAgICogICBhcnJheXMuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBzdHJva2VyIDo6CisgICAqICAgICBUaGUgdGFyZ2V0IHN0cm9rZXIgaGFuZGxlLgorICAgKgorICAgKiAgIG91dGxpbmUgOjoKKyAgICogICAgIFRoZSB0YXJnZXQgb3V0bGluZSBoYW5kbGUuCisgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9TdHJva2VyX0V4cG9ydCggRlRfU3Ryb2tlciAgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgb3V0bGluZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9TdHJva2VyX0RvbmUKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIERlc3Ryb3kgYSBzdHJva2VyIG9iamVjdC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIEEgc3Ryb2tlciBoYW5kbGUuICBDYW4gYmUgTlVMTC4KKyAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1N0cm9rZXJfRG9uZSggRlRfU3Ryb2tlciAgc3Ryb2tlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9HbHlwaF9TdHJva2UKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFN0cm9rZSBhIGdpdmVuIG91dGxpbmUgZ2x5cGggb2JqZWN0IHdpdGggYSBnaXZlbiBzdHJva2VyLgorICAgKgorICAgKiBAaW5vdXQ6CisgICAqICAgcGdseXBoIDo6CisgICAqICAgICBTb3VyY2UgZ2x5cGggaGFuZGxlIG9uIGlucHV0LCBuZXcgZ2x5cGggaGFuZGxlIG9uIG91dHB1dC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHN0cm9rZXIgOjoKKyAgICogICAgIEEgc3Ryb2tlciBoYW5kbGUuCisgICAqCisgICAqICAgZGVzdHJveSA6OgorICAgKiAgICAgQSBCb29sZWFuLiAgSWZ+MSwgdGhlIHNvdXJjZSBnbHlwaCBvYmplY3QgaXMgZGVzdHJveWVkCisgICAqICAgICBvbiBzdWNjZXNzLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGUgc291cmNlIGdseXBoIGlzIHVudG91Y2hlZCBpbiBjYXNlIG9mIGVycm9yLgorICAgKgorICAgKiAgIEFkZGluZyBzdHJva2UgbWF5IHlpZWxkIGEgc2lnbmlmaWNhbnRseSB3aWRlciBhbmQgdGFsbGVyIGdseXBoCisgICAqICAgZGVwZW5kaW5nIG9uIGhvdyBsYXJnZSBvZiBhIHJhZGl1cyB3YXMgdXNlZCB0byBzdHJva2UgdGhlIGdseXBoLiAgWW91CisgICAqICAgbWF5IG5lZWQgdG8gbWFudWFsbHkgYWRqdXN0IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGFkdmFuY2UgYW1vdW50cworICAgKiAgIHRvIGFjY291bnQgZm9yIHRoaXMgYWRkZWQgc2l6ZS4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HbHlwaF9TdHJva2UoIEZUX0dseXBoICAgICpwZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlciAgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgIGRlc3Ryb3kgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgRlRfR2x5cGhfU3Ryb2tlQm9yZGVyCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBTdHJva2UgYSBnaXZlbiBvdXRsaW5lIGdseXBoIG9iamVjdCB3aXRoIGEgZ2l2ZW4gc3Ryb2tlciwgYnV0CisgICAqICAgb25seSByZXR1cm4gZWl0aGVyIGl0cyBpbnNpZGUgb3Igb3V0c2lkZSBib3JkZXIuCisgICAqCisgICAqIEBpbm91dDoKKyAgICogICBwZ2x5cGggOjoKKyAgICogICAgIFNvdXJjZSBnbHlwaCBoYW5kbGUgb24gaW5wdXQsIG5ldyBnbHlwaCBoYW5kbGUgb24gb3V0cHV0LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3Ryb2tlciA6OgorICAgKiAgICAgQSBzdHJva2VyIGhhbmRsZS4KKyAgICoKKyAgICogICBpbnNpZGUgOjoKKyAgICogICAgIEEgQm9vbGVhbi4gIElmfjEsIHJldHVybiB0aGUgaW5zaWRlIGJvcmRlciwgb3RoZXJ3aXNlCisgICAqICAgICB0aGUgb3V0c2lkZSBib3JkZXIuCisgICAqCisgICAqICAgZGVzdHJveSA6OgorICAgKiAgICAgQSBCb29sZWFuLiAgSWZ+MSwgdGhlIHNvdXJjZSBnbHlwaCBvYmplY3QgaXMgZGVzdHJveWVkCisgICAqICAgICBvbiBzdWNjZXNzLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGUgc291cmNlIGdseXBoIGlzIHVudG91Y2hlZCBpbiBjYXNlIG9mIGVycm9yLgorICAgKgorICAgKiAgIEFkZGluZyBzdHJva2UgbWF5IHlpZWxkIGEgc2lnbmlmaWNhbnRseSB3aWRlciBhbmQgdGFsbGVyIGdseXBoCisgICAqICAgZGVwZW5kaW5nIG9uIGhvdyBsYXJnZSBvZiBhIHJhZGl1cyB3YXMgdXNlZCB0byBzdHJva2UgdGhlIGdseXBoLiAgWW91CisgICAqICAgbWF5IG5lZWQgdG8gbWFudWFsbHkgYWRqdXN0IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGFkdmFuY2UgYW1vdW50cworICAgKiAgIHRvIGFjY291bnQgZm9yIHRoaXMgYWRkZWQgc2l6ZS4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HbHlwaF9TdHJva2VCb3JkZXIoIEZUX0dseXBoICAgICpwZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlciAgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgIGluc2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgZGVzdHJveSApOworCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVF9TVFJPS0VfSF9fICovCisKKworLyogRU5EICovCisKKworLyogTG9jYWwgVmFyaWFibGVzOiAqLworLyogY29kaW5nOiB1dGYtOCAgICAqLworLyogRW5kOiAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRzeW50aC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRzeW50aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZjMyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHN5bnRoLmgKQEAgLTAsMCArMSw4MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRzeW50aC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIHN5bnRoZXNpemluZyBjb2RlIGZvciBlbWJvbGRlbmluZyBhbmQgc2xhbnRpbmcgICAgICAgICAgICAgICovCisvKiAgICAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMC0yMDAxLCAyMDAzLCAyMDA2LCAyMDA4LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqICAgICAgICBXQVJOSU5HLCBUSElTIElTIEFMUEhBIENPREUhICBUSElTIEFQSSAgICAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiAgICBJUyBEVUUgVE8gQ0hBTkdFIFVOVElMIFNUUklDVExZIE5PVElGSUVEIEJZIFRIRSAgICAqKioqKioqKiovCisgIC8qKioqKioqKiogICAgICAgICAgICBGUkVFVFlQRSBERVZFTE9QTUVOVCBURUFNICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyogTWFpbiByZWFzb24gZm9yIG5vdCBsaWZ0aW5nIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgdG8gYSAgKi8KKyAgLyogYHN0YW5kYXJkJyBBUEkgaXMgdGhhdCB0aGUgdXNlZCBwYXJhbWV0ZXJzIGZvciBlbWJvbGRlbmluZyBhbmQgKi8KKyAgLyogc2xhbnRpbmcgYXJlIG5vdCBjb25maWd1cmFibGUuICBDb25zaWRlciB0aGUgZnVuY3Rpb25zIGFzIGEgICAgKi8KKyAgLyogY29kZSByZXNvdXJjZSB3aGljaCBzaG91bGQgYmUgY29waWVkIGludG8gdGhlIGFwcGxpY2F0aW9uIGFuZCAgKi8KKyAgLyogYWRhcHRlZCB0byB0aGUgcGFydGljdWxhciBuZWVkcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworCisjaWZuZGVmIF9fRlRTWU5USF9IX18KKyNkZWZpbmUgX19GVFNZTlRIX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisgIC8qIEVtYm9sZGVuIGEgZ2x5cGggYnkgYSBgcmVhc29uYWJsZScgdmFsdWUgKHdoaWNoIGlzIGhpZ2hseSBhIG1hdHRlciBvZiAqLworICAvKiB0YXN0ZSkuICBUaGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGEgY29udmVuaWVuY2UgZnVuY3Rpb24sIHByb3ZpZGluZyAgKi8KKyAgLyogYSB3cmFwcGVyIGZvciBARlRfT3V0bGluZV9FbWJvbGRlbiBhbmQgQEZUX0JpdG1hcF9FbWJvbGRlbi4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGb3IgZW1ib2xkZW5lZCBvdXRsaW5lcyB0aGUgaGVpZ2h0LCB3aWR0aCwgYW5kIGFkdmFuY2UgbWV0cmljcyBhcmUgICAgKi8KKyAgLyogaW5jcmVhc2VkIGJ5IHRoZSBzdHJlbmd0aCBvZiB0aGUgZW1ib2xkZW5pbmcuICBZb3UgY2FuIGFsc28gY2FsbCAgICAgICovCisgIC8qIEBGVF9PdXRsaW5lX0dldF9DQm94IHRvIGdldCBwcmVjaXNlIHZhbHVlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9HbHlwaFNsb3RfRW1ib2xkZW4oIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisgIC8qIFNsYW50IGFuIG91dGxpbmUgZ2x5cGggdG8gdGhlIHJpZ2h0IGJ5IGFib3V0IDEyIGRlZ3JlZXMuICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX0dseXBoU2xvdF9PYmxpcXVlKCBGVF9HbHlwaFNsb3QgIHNsb3QgKTsKKworICAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUU1lOVEhfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHN5c3RlbS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRzeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTkyMzkwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRzeXN0ZW0uaApAQCAtMCwwICsxLDM1NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRzeXN0ZW0uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIGxvdy1sZXZlbCBzeXN0ZW0gaW50ZXJmYWNlIGRlZmluaXRpb24gKHNwZWNpZmljYXRpb24pLiAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIsIDIwMDUsIDIwMTAgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRTWVNURU1fSF9fCisjZGVmaW5lIF9fRlRTWVNURU1fSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHN5c3RlbV9pbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFN5c3RlbSBJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEhvdyBGcmVlVHlwZSBtYW5hZ2VzIG1lbW9yeSBhbmQgaS9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB2YXJpb3VzIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gbWVtb3J5ICAgICAgICAgKi8KKyAgLyogICBtYW5hZ2VtZW50IGFuZCBpL28gYWNjZXNzLiAgWW91IG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzICAgICAgICAgICAgICovCisgIC8qICAgaW5mb3JtYXRpb24gaWYgeW91IHdhbnQgdG8gdXNlIGEgY3VzdG9tIG1lbW9yeSBtYW5hZ2VyIG9yIHlvdSBvd24gICAqLworICAvKiAgIGkvbyBzdHJlYW1zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIE0gRSBNIE8gUiBZICAgTSBBIE4gQSBHIEUgTSBFIE4gVCAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHR5cGU6CisgICAqICAgRlRfTWVtb3J5CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGhhbmRsZSB0byBhIGdpdmVuIG1lbW9yeSBtYW5hZ2VyIG9iamVjdCwgZGVmaW5lZCB3aXRoIGFuCisgICAqICAgQEZUX01lbW9yeVJlYyBzdHJ1Y3R1cmUuCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9NZW1vcnlSZWNfKiAgRlRfTWVtb3J5OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIEZUX0FsbG9jX0Z1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgZnVuY3Rpb24gdXNlZCB0byBhbGxvY2F0ZSBgc2l6ZScgYnl0ZXMgZnJvbSBgbWVtb3J5Jy4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIG1lbW9yeSA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBtZW1vcnkgbWFuYWdlci4KKyAgICoKKyAgICogICBzaXplIDo6CisgICAqICAgICBUaGUgc2l6ZSBpbiBieXRlcyB0byBhbGxvY2F0ZS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBBZGRyZXNzIG9mIG5ldyBtZW1vcnkgYmxvY2suICAwfmluIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdm9pZCoKKyAgKCpGVF9BbGxvY19GdW5jKSggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgc2l6ZSApOworCisgIC8qIFN1bmxpYW5nLkxpdSAyMDEwMDkxNSBzeW5jIDIyMSdzIHJldmlzb24uICovCisgIHR5cGVkZWYgdm9pZCoKKwkgICgqRlRfQWxsb2NEZWJ1Z19GdW5jKSggRlRfTWVtb3J5ICBtZW1vcnksCisJICBsb25nICAgICAgIHNpemUsIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCAgaW50IGxpbmUpOworCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgRlRfRnJlZV9GdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGZ1bmN0aW9uIHVzZWQgdG8gcmVsZWFzZSBhIGdpdmVuIGJsb2NrIG9mIG1lbW9yeS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIG1lbW9yeSA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBtZW1vcnkgbWFuYWdlci4KKyAgICoKKyAgICogICBibG9jayA6OgorICAgKiAgICAgVGhlIGFkZHJlc3Mgb2YgdGhlIHRhcmdldCBtZW1vcnkgYmxvY2suCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9GcmVlX0Z1bmMpKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgIGJsb2NrICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgRlRfUmVhbGxvY19GdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGZ1bmN0aW9uIHVzZWQgdG8gcmUtYWxsb2NhdGUgYSBnaXZlbiBibG9jayBvZiBtZW1vcnkuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBtZW1vcnkgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgbWVtb3J5IG1hbmFnZXIuCisgICAqCisgICAqICAgY3VyX3NpemUgOjoKKyAgICogICAgIFRoZSBibG9jaydzIGN1cnJlbnQgc2l6ZSBpbiBieXRlcy4KKyAgICoKKyAgICogICBuZXdfc2l6ZSA6OgorICAgKiAgICAgVGhlIGJsb2NrJ3MgcmVxdWVzdGVkIG5ldyBzaXplLgorICAgKgorICAgKiAgIGJsb2NrIDo6CisgICAqICAgICBUaGUgYmxvY2sncyBjdXJyZW50IGFkZHJlc3MuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgTmV3IGJsb2NrIGFkZHJlc3MuICAwfmluIGNhc2Ugb2YgbWVtb3J5IHNob3J0YWdlLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBJbiBjYXNlIG9mIGVycm9yLCB0aGUgb2xkIGJsb2NrIG11c3Qgc3RpbGwgYmUgYXZhaWxhYmxlLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB2b2lkKgorICAoKkZUX1JlYWxsb2NfRnVuYykoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgY3VyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgbG9uZyAgICAgICBuZXdfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgIGJsb2NrICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc3RydWN0OgorICAgKiAgIEZUX01lbW9yeVJlYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBkZXNjcmliZSBhIGdpdmVuIG1lbW9yeSBtYW5hZ2VyIHRvIEZyZWVUeXBlfjIuCisgICAqCisgICAqIEBmaWVsZHM6CisgICAqICAgdXNlciA6OgorICAgKiAgICAgQSBnZW5lcmljIHR5cGVsZXNzIHBvaW50ZXIgZm9yIHVzZXIgZGF0YS4KKyAgICoKKyAgICogICBhbGxvYyA6OgorICAgKiAgICAgQSBwb2ludGVyIHR5cGUgdG8gYW4gYWxsb2NhdGlvbiBmdW5jdGlvbi4KKyAgICoKKyAgICogICBmcmVlIDo6CisgICAqICAgICBBIHBvaW50ZXIgdHlwZSB0byBhbiBtZW1vcnkgZnJlZWluZyBmdW5jdGlvbi4KKyAgICoKKyAgICogICByZWFsbG9jIDo6CisgICAqICAgICBBIHBvaW50ZXIgdHlwZSB0byBhIHJlYWxsb2NhdGlvbiBmdW5jdGlvbi4KKyAgICoKKyAgICovCisgIHN0cnVjdCAgRlRfTWVtb3J5UmVjXworICB7CisgICAgdm9pZCogICAgICAgICAgICB1c2VyOworICAgIEZUX0FsbG9jX0Z1bmMgICAgYWxsb2M7CisJRlRfQWxsb2NEZWJ1Z19GdW5jIGFsbG9jZGVidWc7CS8qIFN1bmxpYW5nLkxpdSAyMDEwMDkxNSBzeW5jIDIyMSdzIHJldmlzb24uICovCisgICAgRlRfRnJlZV9GdW5jICAgICBmcmVlOworICAgIEZUX1JlYWxsb2NfRnVuYyAgcmVhbGxvYzsKKyAgfTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIEkgLyBPICAgTSBBIE4gQSBHIEUgTSBFIE4gVCAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUX1N0cmVhbQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBoYW5kbGUgdG8gYW4gaW5wdXQgc3RyZWFtLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU3RyZWFtUmVjXyogIEZUX1N0cmVhbTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRfU3RyZWFtRGVzYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSB1bmlvbiB0eXBlIHVzZWQgdG8gc3RvcmUgZWl0aGVyIGEgbG9uZyBvciBhIHBvaW50ZXIuICBUaGlzIGlzIHVzZWQKKyAgICogICB0byBzdG9yZSBhIGZpbGUgZGVzY3JpcHRvciBvciBhIGBGSUxFKicgaW4gYW4gaW5wdXQgc3RyZWFtLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB1bmlvbiAgRlRfU3RyZWFtRGVzY18KKyAgeworICAgIGxvbmcgICB2YWx1ZTsKKyAgICB2b2lkKiAgcG9pbnRlcjsKKworICB9IEZUX1N0cmVhbURlc2M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgRlRfU3RyZWFtX0lvRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBmdW5jdGlvbiB1c2VkIHRvIHNlZWsgYW5kIHJlYWQgZGF0YSBmcm9tIGEgZ2l2ZW4gaW5wdXQgc3RyZWFtLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgc3RyZWFtIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIHN0cmVhbS4KKyAgICoKKyAgICogICBvZmZzZXQgOjoKKyAgICogICAgIFRoZSBvZmZzZXQgb2YgcmVhZCBpbiBzdHJlYW0gKGFsd2F5cyBmcm9tIHN0YXJ0KS4KKyAgICoKKyAgICogICBidWZmZXIgOjoKKyAgICogICAgIFRoZSBhZGRyZXNzIG9mIHRoZSByZWFkIGJ1ZmZlci4KKyAgICoKKyAgICogICBjb3VudCA6OgorICAgKiAgICAgVGhlIG51bWJlciBvZiBieXRlcyB0byByZWFkIGZyb20gdGhlIHN0cmVhbS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGVmZmVjdGl2ZWx5IHJlYWQgYnkgdGhlIHN0cmVhbS4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhpcyBmdW5jdGlvbiBtaWdodCBiZSBjYWxsZWQgdG8gcGVyZm9ybSBhIHNlZWsgb3Igc2tpcCBvcGVyYXRpb24KKyAgICogICB3aXRoIGEgYGNvdW50JyBvZn4wLiAgQSBub24temVybyByZXR1cm4gdmFsdWUgdGhlbiBpbmRpY2F0ZXMgYW4KKyAgICogICBlcnJvci4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgbG9uZworICAoKkZUX1N0cmVhbV9Jb0Z1bmMpKCBGVF9TdHJlYW0gICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgY291bnQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBGVF9TdHJlYW1fQ2xvc2VGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGZ1bmN0aW9uIHVzZWQgdG8gY2xvc2UgYSBnaXZlbiBpbnB1dCBzdHJlYW0uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogIHN0cmVhbSA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBzdHJlYW0uCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9TdHJlYW1fQ2xvc2VGdW5jKSggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBzdHJ1Y3Q6CisgICAqICAgRlRfU3RyZWFtUmVjCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIHN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIGFuIGlucHV0IHN0cmVhbS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGJhc2UgOjoKKyAgICogICAgIEZvciBtZW1vcnktYmFzZWQgc3RyZWFtcywgdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgZmlyc3Qgc3RyZWFtCisgICAqICAgICBieXRlIGluIG1lbW9yeS4gIFRoaXMgZmllbGQgc2hvdWxkIGFsd2F5cyBiZSBzZXQgdG8gTlVMTCBmb3IKKyAgICogICAgIGRpc2stYmFzZWQgc3RyZWFtcy4KKyAgICoKKyAgICogICBzaXplIDo6CisgICAqICAgICBUaGUgc3RyZWFtIHNpemUgaW4gYnl0ZXMuCisgICAqCisgICAqICAgcG9zIDo6CisgICAqICAgICBUaGUgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gdGhlIHN0cmVhbS4KKyAgICoKKyAgICogICBkZXNjcmlwdG9yIDo6CisgICAqICAgICBUaGlzIGZpZWxkIGlzIGEgdW5pb24gdGhhdCBjYW4gaG9sZCBhbiBpbnRlZ2VyIG9yIGEgcG9pbnRlci4gIEl0IGlzCisgICAqICAgICB1c2VkIGJ5IHN0cmVhbSBpbXBsZW1lbnRhdGlvbnMgdG8gc3RvcmUgZmlsZSBkZXNjcmlwdG9ycyBvciBgRklMRSonCisgICAqICAgICBwb2ludGVycy4KKyAgICoKKyAgICogICBwYXRobmFtZSA6OgorICAgKiAgICAgVGhpcyBmaWVsZCBpcyBjb21wbGV0ZWx5IGlnbm9yZWQgYnkgRnJlZVR5cGUuICBIb3dldmVyLCBpdCBpcyBvZnRlbgorICAgKiAgICAgdXNlZnVsIGR1cmluZyBkZWJ1Z2dpbmcgdG8gdXNlIGl0IHRvIHN0b3JlIHRoZSBzdHJlYW0ncyBmaWxlbmFtZQorICAgKiAgICAgKHdoZXJlIGF2YWlsYWJsZSkuCisgICAqCisgICAqICAgcmVhZCA6OgorICAgKiAgICAgVGhlIHN0cmVhbSdzIGlucHV0IGZ1bmN0aW9uLgorICAgKgorICAgKiAgIGNsb3NlIDo6CisgICAqICAgICBUaGUgc3RyZWFtJ3MgY2xvc2UgZnVuY3Rpb24uCisgICAqCisgICAqICAgbWVtb3J5IDo6CisgICAqICAgICBUaGUgbWVtb3J5IG1hbmFnZXIgdG8gdXNlIHRvIHByZWxvYWQgZnJhbWVzLiAgVGhpcyBpcyBzZXQKKyAgICogICAgIGludGVybmFsbHkgYnkgRnJlZVR5cGUgYW5kIHNob3VsZG4ndCBiZSB0b3VjaGVkIGJ5IHN0cmVhbQorICAgKiAgICAgaW1wbGVtZW50YXRpb25zLgorICAgKgorICAgKiAgIGN1cnNvciA6OgorICAgKiAgICAgVGhpcyBmaWVsZCBpcyBzZXQgYW5kIHVzZWQgaW50ZXJuYWxseSBieSBGcmVlVHlwZSB3aGVuIHBhcnNpbmcKKyAgICogICAgIGZyYW1lcy4KKyAgICoKKyAgICogICBsaW1pdCA6OgorICAgKiAgICAgVGhpcyBmaWVsZCBpcyBzZXQgYW5kIHVzZWQgaW50ZXJuYWxseSBieSBGcmVlVHlwZSB3aGVuIHBhcnNpbmcKKyAgICogICAgIGZyYW1lcy4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TdHJlYW1SZWNfCisgIHsKKyAgICB1bnNpZ25lZCBjaGFyKiAgICAgICBiYXNlOworICAgIHVuc2lnbmVkIGxvbmcgICAgICAgIHNpemU7CisgICAgdW5zaWduZWQgbG9uZyAgICAgICAgcG9zOworCisgICAgRlRfU3RyZWFtRGVzYyAgICAgICAgZGVzY3JpcHRvcjsKKyAgICBGVF9TdHJlYW1EZXNjICAgICAgICBwYXRobmFtZTsKKyAgICBGVF9TdHJlYW1fSW9GdW5jICAgICByZWFkOworICAgIEZUX1N0cmVhbV9DbG9zZUZ1bmMgIGNsb3NlOworCisgICAgRlRfTWVtb3J5ICAgICAgICAgICAgbWVtb3J5OworICAgIHVuc2lnbmVkIGNoYXIqICAgICAgIGN1cnNvcjsKKyAgICB1bnNpZ25lZCBjaGFyKiAgICAgICBsaW1pdDsKKworICB9IEZUX1N0cmVhbVJlYzsKKworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFNZU1RFTV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMWM2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oCkBAIC0wLDAgKzEsMzUwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHRyaWdvbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEsIDIwMDMsIDIwMDUsIDIwMDcsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVFRSSUdPTl9IX18KKyNkZWZpbmUgX19GVFRSSUdPTl9IX18KKworI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBjb21wdXRhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIEZUX0FuZ2xlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGlzIHR5cGUgaXMgdXNlZCB0byBtb2RlbCBhbmdsZSB2YWx1ZXMgaW4gRnJlZVR5cGUuICBOb3RlIHRoYXQgdGhlCisgICAqICAgYW5nbGUgaXMgYSAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZSBleHByZXNzZWQgaW4gZGVncmVlcy4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgRlRfRml4ZWQgIEZUX0FuZ2xlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0FOR0xFX1BJCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGUgYW5nbGUgcGkgZXhwcmVzc2VkIGluIEBGVF9BbmdsZSB1bml0cy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FOR0xFX1BJICAoIDE4MEwgPDwgMTYgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0FOR0xFXzJQSQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIGFuZ2xlIDIqcGkgZXhwcmVzc2VkIGluIEBGVF9BbmdsZSB1bml0cy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FOR0xFXzJQSSAgKCBGVF9BTkdMRV9QSSAqIDIgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0FOR0xFX1BJMgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIGFuZ2xlIHBpLzIgZXhwcmVzc2VkIGluIEBGVF9BbmdsZSB1bml0cy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FOR0xFX1BJMiAgKCBGVF9BTkdMRV9QSSAvIDIgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0FOR0xFX1BJNAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIGFuZ2xlIHBpLzQgZXhwcmVzc2VkIGluIEBGVF9BbmdsZSB1bml0cy4KKyAgICoKKyAgICovCisjZGVmaW5lIEZUX0FOR0xFX1BJNCAgKCBGVF9BTkdMRV9QSSAvIDQgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1NpbgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0dXJuIHRoZSBzaW51cyBvZiBhIGdpdmVuIGFuZ2xlIGluIGZpeGVkLXBvaW50IGZvcm1hdC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGFuZ2xlIDo6CisgICAqICAgICBUaGUgaW5wdXQgYW5nbGUuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgVGhlIHNpbnVzIHZhbHVlLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBJZiB5b3UgbmVlZCBib3RoIHRoZSBzaW51cyBhbmQgY29zaW51cyBmb3IgYSBnaXZlbiBhbmdsZSwgdXNlIHRoZQorICAgKiAgIGZ1bmN0aW9uIEBGVF9WZWN0b3JfVW5pdC4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRml4ZWQgKQorICBGVF9TaW4oIEZUX0FuZ2xlICBhbmdsZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX0NvcworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0dXJuIHRoZSBjb3NpbnVzIG9mIGEgZ2l2ZW4gYW5nbGUgaW4gZml4ZWQtcG9pbnQgZm9ybWF0LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgYW5nbGUgOjoKKyAgICogICAgIFRoZSBpbnB1dCBhbmdsZS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBUaGUgY29zaW51cyB2YWx1ZS4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgSWYgeW91IG5lZWQgYm90aCB0aGUgc2ludXMgYW5kIGNvc2ludXMgZm9yIGEgZ2l2ZW4gYW5nbGUsIHVzZSB0aGUKKyAgICogICBmdW5jdGlvbiBARlRfVmVjdG9yX1VuaXQuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0ZpeGVkICkKKyAgRlRfQ29zKCBGVF9BbmdsZSAgYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9UYW4KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFJldHVybiB0aGUgdGFuZ2VudCBvZiBhIGdpdmVuIGFuZ2xlIGluIGZpeGVkLXBvaW50IGZvcm1hdC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGFuZ2xlIDo6CisgICAqICAgICBUaGUgaW5wdXQgYW5nbGUuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgVGhlIHRhbmdlbnQgdmFsdWUuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0ZpeGVkICkKKyAgRlRfVGFuKCBGVF9BbmdsZSAgYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9BdGFuMgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgUmV0dXJuIHRoZSBhcmMtdGFuZ2VudCBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4gdmVjdG9yICh4LHkpIGluCisgICAqICAgdGhlIDJkIHBsYW5lLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgeCA6OgorICAgKiAgICAgVGhlIGhvcml6b250YWwgdmVjdG9yIGNvb3JkaW5hdGUuCisgICAqCisgICAqICAgeSA6OgorICAgKiAgICAgVGhlIHZlcnRpY2FsIHZlY3RvciBjb29yZGluYXRlLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIFRoZSBhcmMtdGFuZ2VudCB2YWx1ZSAoaS5lLiBhbmdsZSkuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0FuZ2xlICkKKyAgRlRfQXRhbjIoIEZUX0ZpeGVkICB4LAorICAgICAgICAgICAgRlRfRml4ZWQgIHkgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9BbmdsZV9EaWZmCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gYW5nbGVzLiAgVGhlIHJlc3VsdCBpcyBhbHdheXMKKyAgICogICBjb25zdHJhaW5lZCB0byB0aGUgXS1QSS4uUEldIGludGVydmFsLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgYW5nbGUxIDo6CisgICAqICAgICBGaXJzdCBhbmdsZS4KKyAgICoKKyAgICogICBhbmdsZTIgOjoKKyAgICogICAgIFNlY29uZCBhbmdsZS4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBDb25zdHJhaW5lZCB2YWx1ZSBvZiBgdmFsdWUyLXZhbHVlMScuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0FuZ2xlICkKKyAgRlRfQW5nbGVfRGlmZiggRlRfQW5nbGUgIGFuZ2xlMSwKKyAgICAgICAgICAgICAgICAgRlRfQW5nbGUgIGFuZ2xlMiApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1ZlY3Rvcl9Vbml0CisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXR1cm4gdGhlIHVuaXQgdmVjdG9yIGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbiBhbmdsZS4gIEFmdGVyIHRoZQorICAgKiAgIGNhbGwsIHRoZSB2YWx1ZSBvZiBgdmVjLngnIHdpbGwgYmUgYHNpbihhbmdsZSknLCBhbmQgdGhlIHZhbHVlIG9mCisgICAqICAgYHZlYy55JyB3aWxsIGJlIGBjb3MoYW5nbGUpJy4KKyAgICoKKyAgICogICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0byByZXRyaWV2ZSBib3RoIHRoZSBzaW51cyBhbmQgY29zaW51cyBvZiBhCisgICAqICAgZ2l2ZW4gYW5nbGUgcXVpY2tseS4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICB2ZWMgOjoKKyAgICogICAgIFRoZSBhZGRyZXNzIG9mIHRhcmdldCB2ZWN0b3IuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBhbmdsZSA6OgorICAgKiAgICAgVGhlIGFkZHJlc3Mgb2YgYW5nbGUuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9WZWN0b3JfVW5pdCggRlRfVmVjdG9yKiAgdmVjLAorICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAgYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9WZWN0b3JfUm90YXRlCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSb3RhdGUgYSB2ZWN0b3IgYnkgYSBnaXZlbiBhbmdsZS4KKyAgICoKKyAgICogQGlub3V0OgorICAgKiAgIHZlYyA6OgorICAgKiAgICAgVGhlIGFkZHJlc3Mgb2YgdGFyZ2V0IHZlY3Rvci4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGFuZ2xlIDo6CisgICAqICAgICBUaGUgYWRkcmVzcyBvZiBhbmdsZS4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1ZlY3Rvcl9Sb3RhdGUoIEZUX1ZlY3RvciogIHZlYywKKyAgICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAgYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9WZWN0b3JfTGVuZ3RoCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBSZXR1cm4gdGhlIGxlbmd0aCBvZiBhIGdpdmVuIHZlY3Rvci4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIHZlYyA6OgorICAgKiAgICAgVGhlIGFkZHJlc3Mgb2YgdGFyZ2V0IHZlY3Rvci4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBUaGUgdmVjdG9yIGxlbmd0aCwgZXhwcmVzc2VkIGluIHRoZSBzYW1lIHVuaXRzIHRoYXQgdGhlIG9yaWdpbmFsCisgICAqICAgdmVjdG9yIGNvb3JkaW5hdGVzLgorICAgKgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9GaXhlZCApCisgIEZUX1ZlY3Rvcl9MZW5ndGgoIEZUX1ZlY3RvciogIHZlYyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgIEZUX1ZlY3Rvcl9Qb2xhcml6ZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ29tcHV0ZSBib3RoIHRoZSBsZW5ndGggYW5kIGFuZ2xlIG9mIGEgZ2l2ZW4gdmVjdG9yLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgdmVjIDo6CisgICAqICAgICBUaGUgYWRkcmVzcyBvZiBzb3VyY2UgdmVjdG9yLgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIGxlbmd0aCA6OgorICAgKiAgICAgVGhlIHZlY3RvciBsZW5ndGguCisgICAqCisgICAqICAgYW5nbGUgOjoKKyAgICogICAgIFRoZSB2ZWN0b3IgYW5nbGUuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIHZvaWQgKQorICBGVF9WZWN0b3JfUG9sYXJpemUoIEZUX1ZlY3RvciogIHZlYywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAqYW5nbGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICBGVF9WZWN0b3JfRnJvbV9Qb2xhcgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ29tcHV0ZSB2ZWN0b3IgY29vcmRpbmF0ZXMgZnJvbSBhIGxlbmd0aCBhbmQgYW5nbGUuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgdmVjIDo6CisgICAqICAgICBUaGUgYWRkcmVzcyBvZiBzb3VyY2UgdmVjdG9yLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgbGVuZ3RoIDo6CisgICAqICAgICBUaGUgdmVjdG9yIGxlbmd0aC4KKyAgICoKKyAgICogICBhbmdsZSA6OgorICAgKiAgICAgVGhlIHZlY3RvciBhbmdsZS4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggdm9pZCApCisgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCBGVF9WZWN0b3IqICB2ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICBhbmdsZSApOworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFRSSUdPTl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHRkcnYuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHRkcnYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWIyNWE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnR0dGRydi5oCkBAIC0wLDAgKzEsMTUwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHR0ZHJ2LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgQVBJIGZvciBjb250cm9sbGluZyB0aGUgVHJ1ZVR5cGUgZHJpdmVyICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRUVERSVl9IX18KKyNkZWZpbmUgX19GVFRURFJWX0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAc2VjdGlvbjoKKyAgICogICB0dF9kcml2ZXIKKyAgICoKKyAgICogQHRpdGxlOgorICAgKiAgIFRoZSBUcnVlVHlwZSBkcml2ZXIKKyAgICoKKyAgICogQGFic3RyYWN0OgorICAgKiAgIENvbnRyb2xsaW5nIHRoZSBUcnVlVHlwZSBkcml2ZXIgbW9kdWxlLgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgV2hpbGUgRnJlZVR5cGUncyBUcnVlVHlwZSBkcml2ZXIgZG9lc24ndCBleHBvc2UgQVBJIGZ1bmN0aW9ucyBieQorICAgKiAgIGl0c2VsZiwgaXQgaXMgcG9zc2libGUgdG8gY29udHJvbCBpdHMgYmVoYXZpb3VyIHdpdGggQEZUX1Byb3BlcnR5X1NldAorICAgKiAgIGFuZCBARlRfUHJvcGVydHlfR2V0LiAgVGhlIGZvbGxvd2luZyBsaXN0cyB0aGUgYXZhaWxhYmxlIHByb3BlcnRpZXMKKyAgICogICB0b2dldGhlciB3aXRoIHRoZSBuZWNlc3NhcnkgbWFjcm9zIGFuZCBzdHJ1Y3R1cmVzLgorICAgKgorICAgKiAgIFRoZSBUcnVlVHlwZSBkcml2ZXIncyBtb2R1bGUgbmFtZSBpcyBgdHJ1ZXR5cGUnLgorICAgKgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAcHJvcGVydHk6CisgICAqICAgaW50ZXJwcmV0ZXItdmVyc2lvbgorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQ3VycmVudGx5LCB0d28gdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSB3aGljaCByZXByZXNlbnQgdGhlIGJ5dGVjb2RlCisgICAqICAgaW50ZXJwcmV0ZXIgd2l0aCBhbmQgd2l0aG91dCBzdWJwaXhlbCBoaW50aW5nIHN1cHBvcnQsCisgICAqICAgcmVzcGVjdGl2ZWx5LiAgVGhlIGRlZmF1bHQgaXMgc3VicGl4ZWwgc3VwcG9ydCBpZgorICAgKiAgIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyBpcyBkZWZpbmVkLCBhbmQgbm8gc3VicGl4ZWwKKyAgICogICBzdXBwb3J0IG90aGVyd2lzZSAoc2luY2UgaXQgaXNuJ3QgYXZhaWxhYmxlIHRoZW4pLgorICAgKgorICAgKiAgIElmIHN1YnBpeGVsIGhpbnRpbmcgaXMgb24sIG1hbnkgVHJ1ZVR5cGUgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zCisgICAqICAgYmVoYXZlIGRpZmZlcmVudGx5IGNvbXBhcmVkIHRvIEIvVyBvciBncmF5c2NhbGUgcmVuZGVyaW5nLiAgVGhlCisgICAqICAgbWFpbiBpZGVhIGlzIHRvIHJlbmRlciBhdCBhIG11Y2ggaW5jcmVhc2VkIGhvcml6b250YWwgcmVzb2x1dGlvbiwKKyAgICogICB0aGVuIHNhbXBsaW5nIGRvd24gdGhlIGNyZWF0ZWQgb3V0cHV0IHRvIHN1YnBpeGVsIHByZWNpc2lvbi4KKyAgICogICBIb3dldmVyLCBtYW55IG9sZGVyIGZvbnRzIGFyZSBub3Qgc3VpdGVkIHRvIHRoaXMgYW5kIG11c3QgYmUKKyAgICogICBzcGVjaWFsbHkgdGFrZW4gY2FyZSBvZiBieSBhcHBseWluZyAoaGFyZGNvZGVkKSBmb250LXNwZWNpZmljCisgICAqICAgdHdlYWtzLgorICAgKgorICAgKiAgIERldGFpbHMgb24gc3VicGl4ZWwgaGludGluZyBhbmQgc29tZSBvZiB0aGUgbmVjZXNzYXJ5IHR3ZWFrcyBjYW4gYmUKKyAgICogICBmb3VuZCBpbiBHcmVnIEhpdGNoY29jaydzIHdoaXRlcGFwZXIgYXQKKyAgICogICBgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvY2xlYXJ0eXBlL3RydWV0eXBlY2xlYXJ0eXBlLmFzcHgnLgorICAgKgorICAgKiAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjb2RlIGRlbW9uc3RyYXRlcyBob3cgdG8gYWN0aXZhdGUgc3VicGl4ZWwKKyAgICogICBoaW50aW5nIChvbWl0dGluZyB0aGUgZXJyb3IgaGFuZGxpbmcpLgorICAgKgorICAgKiAgIHsKKyAgICogICAgIEZUX0xpYnJhcnkgIGxpYnJhcnk7CisgICAqICAgICBGVF9GYWNlICAgICBmYWNlOworICAgKiAgICAgRlRfVUludCAgICAgaW50ZXJwcmV0ZXJfdmVyc2lvbiA9IFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzg7CisgICAqCisgICAqCisgICAqICAgICBGVF9Jbml0X0ZyZWVUeXBlKCAmbGlicmFyeSApOworICAgKgorICAgKiAgICAgRlRfUHJvcGVydHlfU2V0KCBsaWJyYXJ5LCAidHJ1ZXR5cGUiLAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJwcmV0ZXItdmVyc2lvbiIsCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnRlcnByZXRlcl92ZXJzaW9uICk7CisgICAqICAgfQorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGlzIHByb3BlcnR5IGNhbiBiZSB1c2VkIHdpdGggQEZUX1Byb3BlcnR5X0dldCBhbHNvLgorICAgKgorICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIGNvbnN0YW50cyB1c2VkIGZvciB0aGUgQGludGVycHJldGVyLXZlcnNpb24gcHJvcGVydHkgdG8KKyAgICogICBzZWxlY3QgdGhlIGhpbnRpbmcgZW5naW5lIGZvciBUcnVldHlwZSBmb250cy4KKyAgICoKKyAgICogICBUaGUgbnVtZXJpYyB2YWx1ZSBpbiB0aGUgY29uc3RhbnQgbmFtZXMgcmVwcmVzZW50cyB0aGUgdmVyc2lvbgorICAgKiAgIG51bWJlciBhcyByZXR1cm5lZCBieSB0aGUgYEdFVElORk8nIGJ5dGVjb2RlIGluc3RydWN0aW9uLgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzUgOjoKKyAgICogICAgIFZlcnNpb25+MzUgY29ycmVzcG9uZHMgdG8gTVMgcmFzdGVyaXplciB2LjEuNyBhcyB1c2VkIGUuZy4gaW4KKyAgICogICAgIFdpbmRvd3N+OTg7IG9ubHkgZ3JheXNjYWxlIGFuZCBCL1cgcmFzdGVyaXppbmcgaXMgc3VwcG9ydGVkLgorICAgKgorICAgKiAgIFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzggOjoKKyAgICogICAgIFZlcnNpb25+MzggY29ycmVzcG9uZHMgdG8gTVMgcmFzdGVyaXplciB2LjEuOTsgaXQgaXMgcm91Z2hseQorICAgKiAgICAgZXF1aXZhbGVudCB0byB0aGUgaGludGluZyBwcm92aWRlZCBieSBEaXJlY3RXcml0ZSBDbGVhclR5cGUgKGFzCisgICAqICAgICBjYW4gYmUgZm91bmQsIGZvciBleGFtcGxlLCBpbiB0aGUgSW50ZXJuZXQgRXhwbG9yZXJ+OSBydW5uaW5nIG9uCisgICAqICAgICBXaW5kb3dzfjcpLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBUaGlzIHByb3BlcnR5IGNvbnRyb2xzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGJ5dGVjb2RlIGludGVycHJldGVyCisgICAqICAgYW5kIHRodXMgaG93IG91dGxpbmVzIGdldCBoaW50ZWQuICBJdCBkb2VzICpub3QqIGNvbnRyb2wgaG93IGdseXBoCisgICAqICAgZ2V0IHJhc3Rlcml6ZWQhICBJbiBwYXJ0aWN1bGFyLCBpdCBkb2VzIG5vdCBjb250cm9sIHN1YnBpeGVsIGNvbG9yCisgICAqICAgZmlsdGVyaW5nLgorICAgKgorICAgKiAgIElmIEZyZWVUeXBlIGhhcyBub3QgYmVlbiBjb21waWxlZCB3aXRoIGNvbmZpZ3VyYXRpb24gb3B0aW9uCisgICAqICAgRlRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HLCBzZWxlY3RpbmcgdmVyc2lvbn4zOCBjYXVzZXMgYW4KKyAgICogICBgRlRfRXJyX1VuaW1wbGVtZW50ZWRfRmVhdHVyZScgZXJyb3IuCisgICAqCisgICAqLworI2RlZmluZSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM1ICAzNQorI2RlZmluZSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM4ICAzOAorCisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fRlRUVERSVl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDExYmVkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oCkBAIC0wLDAgKzEsNTk4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgc2ltcGxlIHR5cGVzIGRlZmluaXRpb25zIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMiwgMjAwNCwgMjAwNi0yMDA5LCAyMDEyLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVFRZUEVTX0hfXworI2RlZmluZSBfX0ZUVFlQRVNfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiY29uZmlnL2Z0Y29uZmlnLmgiCisjaW5jbHVkZSAiZnRzeXN0ZW0uaCIKKyNpbmNsdWRlICJmdGltYWdlLmgiCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJhc2ljX3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEJhc2ljIERhdGEgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBiYXNpYyBkYXRhIHR5cGVzIGRlZmluZWQgYnkgdGhlIGxpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgYmFzaWMgZGF0YSB0eXBlcyBkZWZpbmVkIGJ5IEZyZWVUeXBlfjIsICAqLworICAvKiAgICByYW5naW5nIGZyb20gc2ltcGxlIHNjYWxhciB0eXBlcyB0byBiaXRtYXAgZGVzY3JpcHRvcnMuICBNb3JlICAgICAgKi8KKyAgLyogICAgZm9udC1zcGVjaWZpYyBzdHJ1Y3R1cmVzIGFyZSBkZWZpbmVkIGluIGEgZGlmZmVyZW50IHNlY3Rpb24uICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3JkZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0J5dGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9DaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VJbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9JbnQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVUludDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VSW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VTaG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Mb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVUxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9PZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUHRyRGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9UYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZpeGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Qb2ludGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUG9zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1ZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CQm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTWF0cml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZXb3JkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VRldvcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRjJEb3QxNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VuaXRWZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GMjZEb3Q2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZW5lcmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2VuZXJpY19GaW5hbGl6ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CaXRtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUGl4ZWxfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BhbGV0dGVfTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HbHlwaF9Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfSU1BR0VfVEFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBvZiB1bnNpZ25lZCBjaGFyLCB1c2VkIGZvciBzaW1wbGUgYm9vbGVhbnMuICBBcyB1c3VhbCwgICAqLworICAvKiAgICB2YWx1ZXMgMSBhbmR+MCByZXByZXNlbnQgdHJ1ZSBhbmQgZmFsc2UsIHJlc3BlY3RpdmVseS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgRlRfQm9vbDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZXb3JkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIHVzZWQgdG8gc3RvcmUgYSBkaXN0YW5jZSBpbiBvcmlnaW5hbCBmb250ICAqLworICAvKiAgICB1bml0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIHNob3J0ICBGVF9GV29yZDsgICAvKiBkaXN0YW5jZSBpbiBGVW5pdHMgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1VGV29yZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIHVzZWQgdG8gc3RvcmUgYSBkaXN0YW5jZSBpbiBvcmlnaW5hbCAgICAqLworICAvKiAgICBmb250IHVuaXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIEZUX1VGV29yZDsgIC8qIHVuc2lnbmVkIGRpc3RhbmNlICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9DaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSB0eXBlZGVmIGZvciB0aGUgX3NpZ25lZF8gY2hhciB0eXBlLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIGNoYXIgIEZUX0NoYXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9CeXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSB0eXBlZGVmIGZvciB0aGUgX3Vuc2lnbmVkXyBjaGFyIHR5cGUuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgRlRfQnl0ZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0J5dGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgY29uc3RhbnQgbWVtb3J5IGFyZWFzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBjb25zdCBGVF9CeXRlKiAgRlRfQnl0ZXM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9UYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHR5cGVkZWYgZm9yIDMyLWJpdCB0YWdzIChhcyB1c2VkIGluIHRoZSBTRk5UIGZvcm1hdCkuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfVUludDMyICBGVF9UYWc7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSB0eXBlZGVmIGZvciB0aGUgY2hhciB0eXBlLCB1c3VhbGx5IHVzZWQgZm9yIHN0cmluZ3MuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgY2hhciAgRlRfU3RyaW5nOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfU2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciBzaWduZWQgc2hvcnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpZ25lZCBzaG9ydCAgRlRfU2hvcnQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VU2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHR5cGVkZWYgZm9yIHVuc2lnbmVkIHNob3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIEZUX1VTaG9ydDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgdHlwZWRlZiBmb3IgdGhlIGludCB0eXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzaWduZWQgaW50ICBGVF9JbnQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9VSW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHR5cGVkZWYgZm9yIHRoZSB1bnNpZ25lZCBpbnQgdHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdW5zaWduZWQgaW50ICBGVF9VSW50OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTG9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciBzaWduZWQgbG9uZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpZ25lZCBsb25nICBGVF9Mb25nOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVUxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlZGVmIGZvciB1bnNpZ25lZCBsb25nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgIEZUX1VMb25nOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRjJEb3QxNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzaWduZWQgMi4xNCBmaXhlZC1wb2ludCB0eXBlIHVzZWQgZm9yIHVuaXQgdmVjdG9ycy4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpZ25lZCBzaG9ydCAgRlRfRjJEb3QxNDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0YyNkRvdDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2lnbmVkIDI2LjYgZml4ZWQtcG9pbnQgdHlwZSB1c2VkIGZvciB2ZWN0b3JpYWwgcGl4ZWwgICAgICAgICAgICAqLworICAvKiAgICBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc2lnbmVkIGxvbmcgIEZUX0YyNkRvdDY7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9GaXhlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHR5cGUgaXMgdXNlZCB0byBzdG9yZSAxNi4xNiBmaXhlZC1wb2ludCB2YWx1ZXMsIGxpa2Ugc2NhbGluZyAgKi8KKyAgLyogICAgdmFsdWVzIG9yIG1hdHJpeCBjb2VmZmljaWVudHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpZ25lZCBsb25nICBGVF9GaXhlZDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBGcmVlVHlwZSBlcnJvciBjb2RlIHR5cGUuICBBIHZhbHVlIG9mfjAgaXMgYWx3YXlzIGludGVycHJldGVkICAqLworICAvKiAgICBhcyBhIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgaW50ICBGVF9FcnJvcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1BvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2ltcGxlIHR5cGVkZWYgZm9yIGEgdHlwZWxlc3MgcG9pbnRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkKiAgRlRfUG9pbnRlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX09mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgQU5TSX5DIGBzaXplX3QnIHR5cGUsIGkuZS4sIHRoZSBsYXJnZXN0ICAqLworICAvKiAgICBfdW5zaWduZWRfIGludGVnZXIgdHlwZSB1c2VkIHRvIGV4cHJlc3MgYSBmaWxlIHNpemUgb3IgcG9zaXRpb24sICAgKi8KKyAgLyogICAgb3IgYSBtZW1vcnkgYmxvY2sgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHNpemVfdCAgRlRfT2Zmc2V0OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUHRyRGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBBTlNJfkMgYHB0cmRpZmZfdCcgdHlwZSwgaS5lLiwgdGhlICAgICAgICovCisgIC8qICAgIGxhcmdlc3QgX3NpZ25lZF8gaW50ZWdlciB0eXBlIHVzZWQgdG8gZXhwcmVzcyB0aGUgZGlzdGFuY2UgICAgICAgICAqLworICAvKiAgICBiZXR3ZWVuIHR3byBwb2ludGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgZnRfcHRyZGlmZl90ICBGVF9QdHJEaXN0OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfVW5pdFZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzaW1wbGUgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgYSAyRCB2ZWN0b3IgdW5pdCB2ZWN0b3IuICBVc2VzICAgICovCisgIC8qICAgIEZUX0YyRG90MTQgdHlwZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHggOjogSG9yaXpvbnRhbCBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeSA6OiBWZXJ0aWNhbCBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfVW5pdFZlY3Rvcl8KKyAgeworICAgIEZUX0YyRG90MTQgIHg7CisgICAgRlRfRjJEb3QxNCAgeTsKKworICB9IEZUX1VuaXRWZWN0b3I7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NYXRyaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSBzdHJ1Y3R1cmUgdXNlZCB0byBzdG9yZSBhIDJ4MiBtYXRyaXguICBDb2VmZmljaWVudHMgYXJlICAgKi8KKyAgLyogICAgaW4gMTYuMTYgZml4ZWQtcG9pbnQgZm9ybWF0LiAgVGhlIGNvbXB1dGF0aW9uIHBlcmZvcm1lZCBpczogICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgeCcgPSB4Knh4ICsgeSp4eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIHknID0geCp5eCArIHkqeXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4eCA6OiBNYXRyaXggY29lZmZpY2llbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHh5IDo6IE1hdHJpeCBjb2VmZmljaWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeXggOjogTWF0cml4IGNvZWZmaWNpZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5eSA6OiBNYXRyaXggY29lZmZpY2llbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9NYXRyaXhfCisgIHsKKyAgICBGVF9GaXhlZCAgeHgsIHh5OworICAgIEZUX0ZpeGVkICB5eCwgeXk7CisKKyAgfSBGVF9NYXRyaXg7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9EYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZWFkLW9ubHkgYmluYXJ5IGRhdGEgcmVwcmVzZW50ZWQgYXMgYSBwb2ludGVyIGFuZCBhIGxlbmd0aC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb2ludGVyIDo6IFRoZSBkYXRhLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlbmd0aCAgOjogVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBpbiBieXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0RhdGFfCisgIHsKKyAgICBjb25zdCBGVF9CeXRlKiAgcG9pbnRlcjsKKyAgICBGVF9JbnQgICAgICAgICAgbGVuZ3RoOworCisgIH0gRlRfRGF0YTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dlbmVyaWNfRmluYWxpemVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERlc2NyaWJlIGEgZnVuY3Rpb24gdXNlZCB0byBkZXN0cm95IHRoZSBgY2xpZW50JyBkYXRhIG9mIGFueSAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBvYmplY3QuICBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBARlRfR2VuZXJpYyB0eXBlIGZvciAgKi8KKyAgLyogICAgZGV0YWlscyBvZiB1c2FnZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGFkZHJlc3Mgb2YgdGhlIEZyZWVUeXBlIG9iamVjdCB3aGljaCBpcyB1bmRlciBmaW5hbGl6YXRpb24uICAgICovCisgIC8qICAgIEl0cyBjbGllbnQgZGF0YSBpcyBhY2Nlc3NlZCB0aHJvdWdoIGl0cyBgZ2VuZXJpYycgZmllbGQuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkICAoKkZUX0dlbmVyaWNfRmluYWxpemVyKSh2b2lkKiAgb2JqZWN0KTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dlbmVyaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENsaWVudCBhcHBsaWNhdGlvbnMgb2Z0ZW4gbmVlZCB0byBhc3NvY2lhdGUgdGhlaXIgb3duIGRhdGEgdG8gYSAgICAqLworICAvKiAgICB2YXJpZXR5IG9mIEZyZWVUeXBlIGNvcmUgb2JqZWN0cy4gIEZvciBleGFtcGxlLCBhIHRleHQgbGF5b3V0IEFQSSAgKi8KKyAgLyogICAgbWlnaHQgd2FudCB0byBhc3NvY2lhdGUgYSBnbHlwaCBjYWNoZSB0byBhIGdpdmVuIHNpemUgb2JqZWN0LiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTb21lIEZyZWVUeXBlIG9iamVjdCBjb250YWlucyBhIGBnZW5lcmljJyBmaWVsZCwgb2YgdHlwZSAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2VuZXJpYywgd2hpY2ggdXNhZ2UgaXMgbGVmdCB0byBjbGllbnQgYXBwbGljYXRpb25zIGFuZCBmb250ICAgICovCisgIC8qICAgIHNlcnZlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYSBwb2ludGVyIHRvIGNsaWVudC1zcGVjaWZpYyBkYXRhLCBhcyB3ZWxsICovCisgIC8qICAgIGFzIHRoZSBhZGRyZXNzIG9mIGEgYGZpbmFsaXplcicgZnVuY3Rpb24sIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGJ5ICAqLworICAvKiAgICBGcmVlVHlwZSB3aGVuIHRoZSBvYmplY3QgaXMgZGVzdHJveWVkIChmb3IgZXhhbXBsZSwgdGhlIHByZXZpb3VzICAgKi8KKyAgLyogICAgY2xpZW50IGV4YW1wbGUgd291bGQgcHV0IHRoZSBhZGRyZXNzIG9mIHRoZSBnbHlwaCBjYWNoZSBkZXN0cnVjdG9yICovCisgIC8qICAgIGluIHRoZSBgZmluYWxpemVyJyBmaWVsZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRhdGEgICAgICA6OiBBIHR5cGVsZXNzIHBvaW50ZXIgdG8gYW55IGNsaWVudC1zcGVjaWZpZWQgZGF0YS4gVGhpcyAqLworICAvKiAgICAgICAgICAgICAgICAgZmllbGQgaXMgY29tcGxldGVseSBpZ25vcmVkIGJ5IHRoZSBGcmVlVHlwZSBsaWJyYXJ5LiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZpbmFsaXplciA6OiBBIHBvaW50ZXIgdG8gYSBgZ2VuZXJpYyBmaW5hbGl6ZXInIGZ1bmN0aW9uLCB3aGljaCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZC4gIElmIHRoaXMgKi8KKyAgLyogICAgICAgICAgICAgICAgIGZpZWxkIGlzIHNldCB0byBOVUxMLCBubyBjb2RlIHdpbGwgYmUgY2FsbGVkLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfR2VuZXJpY18KKyAgeworICAgIHZvaWQqICAgICAgICAgICAgICAgICBkYXRhOworICAgIEZUX0dlbmVyaWNfRmluYWxpemVyICBmaW5hbGl6ZXI7CisKKyAgfSBGVF9HZW5lcmljOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTUFLRV9UQUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBtYWNybyBjb252ZXJ0cyBmb3VyLWxldHRlciB0YWdzIHdoaWNoIGFyZSB1c2VkIHRvIGxhYmVsICAgICAgICovCisgIC8qICAgIFRydWVUeXBlIHRhYmxlcyBpbnRvIGFuIHVuc2lnbmVkIGxvbmcgdG8gYmUgdXNlZCB3aXRoaW4gRnJlZVR5cGUuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBwcm9kdWNlZCB2YWx1ZXMgKm11c3QqIGJlIDMyLWJpdCBpbnRlZ2Vycy4gIERvbid0IHJlZGVmaW5lICAgICAqLworICAvKiAgICB0aGlzIG1hY3JvLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX01BS0VfVEFHKCBfeDEsIF94MiwgX3gzLCBfeDQgKSBcCisgICAgICAgICAgKEZUX1RhZykgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAoIChGVF9VTG9uZylfeDEgPDwgMjQgKSB8ICAgICBcCisgICAgICAgICAgICAoIChGVF9VTG9uZylfeDIgPDwgMTYgKSB8ICAgICBcCisgICAgICAgICAgICAoIChGVF9VTG9uZylfeDMgPDwgIDggKSB8ICAgICBcCisgICAgICAgICAgICAgIChGVF9VTG9uZylfeDQgICAgICAgICApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgTCBJIFMgVCAgIE0gQSBOIEEgRyBFIE0gRSBOIFQgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpc3RfcHJvY2Vzc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0Tm9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgTWFueSBlbGVtZW50cyBhbmQgb2JqZWN0cyBpbiBGcmVlVHlwZSBhcmUgbGlzdGVkIHRocm91Z2ggYW4gICAgICAgKi8KKyAgLyogICAgIEBGVF9MaXN0IHJlY29yZCAoc2VlIEBGVF9MaXN0UmVjKS4gIEFzIGl0cyBuYW1lIHN1Z2dlc3RzLCBhbiAgICAgICovCisgIC8qICAgICBGVF9MaXN0Tm9kZSBpcyBhIGhhbmRsZSB0byBhIHNpbmdsZSBsaXN0IGVsZW1lbnQuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfTGlzdE5vZGVSZWNfKiAgRlRfTGlzdE5vZGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIGxpc3QgcmVjb3JkIChzZWUgQEZUX0xpc3RSZWMpLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0xpc3RSZWNfKiAgRlRfTGlzdDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0xpc3ROb2RlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gaG9sZCBhIHNpbmdsZSBsaXN0IGVsZW1lbnQuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHByZXYgOjogVGhlIHByZXZpb3VzIGVsZW1lbnQgaW4gdGhlIGxpc3QuICBOVUxMIGlmIGZpcnN0LiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbmV4dCA6OiBUaGUgbmV4dCBlbGVtZW50IGluIHRoZSBsaXN0LiAgTlVMTCBpZiBsYXN0LiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkYXRhIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgbGlzdGVkIG9iamVjdC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9MaXN0Tm9kZVJlY18KKyAgeworICAgIEZUX0xpc3ROb2RlICBwcmV2OworICAgIEZUX0xpc3ROb2RlICBuZXh0OworICAgIHZvaWQqICAgICAgICBkYXRhOworCisgIH0gRlRfTGlzdE5vZGVSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9MaXN0UmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgYSBzaW1wbGUgZG91Ymx5LWxpbmtlZCBsaXN0LiAgVGhlc2UgYXJlICAgKi8KKyAgLyogICAgdXNlZCBpbiBtYW55IHBhcnRzIG9mIEZyZWVUeXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVhZCA6OiBUaGUgaGVhZCAoZmlyc3QgZWxlbWVudCkgb2YgZG91Ymx5LWxpbmtlZCBsaXN0LiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWlsIDo6IFRoZSB0YWlsIChsYXN0IGVsZW1lbnQpIG9mIGRvdWJseS1saW5rZWQgbGlzdC4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9MaXN0UmVjXworICB7CisgICAgRlRfTGlzdE5vZGUgIGhlYWQ7CisgICAgRlRfTGlzdE5vZGUgIHRhaWw7CisKKyAgfSBGVF9MaXN0UmVjOworCisKKyAgLyogKi8KKworI2RlZmluZSBGVF9JU19FTVBUWSggbGlzdCApICAoIChsaXN0KS5oZWFkID09IDAgKQorI2RlZmluZSBGVF9CT09MKCB4ICkgICggKEZUX0Jvb2wpKCB4ICkgKQorCisgIC8qIGNvbmNhdGVuYXRlIEMgdG9rZW5zICovCisjZGVmaW5lIEZUX0VSUl9YQ0FUKCB4LCB5ICkgIHggIyMgeQorI2RlZmluZSBGVF9FUlJfQ0FUKCB4LCB5ICkgICBGVF9FUlJfWENBVCggeCwgeSApCisKKyAgLyogc2VlIGBmdG1vZGVyci5oJyBmb3IgZGVzY3JpcHRpb25zIG9mIHRoZSBmb2xsb3dpbmcgbWFjcm9zICovCisKKyNkZWZpbmUgRlRfRVJSKCBlICkgIEZUX0VSUl9DQVQoIEZUX0VSUl9QUkVGSVgsIGUgKQorCisjZGVmaW5lIEZUX0VSUk9SX0JBU0UoIHggKSAgICAoICh4KSAmIDB4RkYgKQorI2RlZmluZSBGVF9FUlJPUl9NT0RVTEUoIHggKSAgKCAoeCkgJiAweEZGMDBVICkKKworI2RlZmluZSBGVF9FUlJfRVEoIHgsIGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBGVF9FUlJPUl9CQVNFKCB4ICkgPT0gRlRfRVJST1JfQkFTRSggRlRfRVJSKCBlICkgKSApCisjZGVmaW5lIEZUX0VSUl9ORVEoIHgsIGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEZUX0VSUk9SX0JBU0UoIHggKSAhPSBGVF9FUlJPUl9CQVNFKCBGVF9FUlIoIGUgKSApICkKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUVFlQRVNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHdpbmZudC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnR3aW5mbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjQzMzRlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnR3aW5mbnQuaApAQCAtMCwwICsxLDI3NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnR3aW5mbnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgYWNjZXNzaW5nIFdpbmRvd3MgZm50LXNwZWNpZmljIGRhdGEuICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLCAyMDA0LCAyMDA4IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRXSU5GTlRfSF9fCisjZGVmaW5lIF9fRlRXSU5GTlRfSF9fCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgd2luZm50X2ZvbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2luZG93IEZOVCBGaWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2luZG93cyBGTlQgc3BlY2lmaWMgQVBJLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbiBvZiBXaW5kb3dzIEZOVCBzcGVjaWZpYyAgICAgICovCisgIC8qICAgIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBGVF9XaW5GTlRfSURfWFhYCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIGZvciB0aGUgYGNoYXJzZXQnIGJ5dGUgaW4KKyAgICogICBARlRfV2luRk5UX0hlYWRlclJlYy4gIEV4YWN0IG1hcHBpbmcgdGFibGVzIGZvciB0aGUgdmFyaW91cyBjcFhYWFgKKyAgICogICBlbmNvZGluZ3MgKGV4Y2VwdCBmb3IgY3AxMzYxKSBjYW4gYmUgZm91bmQgYXQgZnRwOi8vZnRwLnVuaWNvZGUub3JnCisgICAqICAgaW4gdGhlIE1BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1dJTkRPV1Mgc3ViZGlyZWN0b3J5LiAgY3AxMzYxIGlzCisgICAqICAgcm91Z2hseSBhIHN1cGVyc2V0IG9mIE1BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBL0tTQy9KT0hBQi5UWFQuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgRlRfV2luRk5UX0lEX0RFRkFVTFQgOjoKKyAgICogICAgIFRoaXMgaXMgdXNlZCBmb3IgZm9udCBlbnVtZXJhdGlvbiBhbmQgZm9udCBjcmVhdGlvbiBhcyBhCisgICAqICAgICBgZG9uJ3QgY2FyZScgdmFsdWUuICBWYWxpZCBmb250IGZpbGVzIGRvbid0IGNvbnRhaW4gdGhpcyB2YWx1ZS4KKyAgICogICAgIFdoZW4gcXVlcnlpbmcgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGFyYWN0ZXIgc2V0IG9mIHRoZSBmb250CisgICAqICAgICB0aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZCBpbnRvIGEgc3BlY2lmaWVkIGRldmljZSBjb250ZXh0LCB0aGlzCisgICAqICAgICByZXR1cm4gdmFsdWUgKG9mIHRoZSByZWxhdGVkIFdpbmRvd3MgQVBJKSBzaW1wbHkgZGVub3RlcyBmYWlsdXJlLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9TWU1CT0wgOjoKKyAgICogICAgIFRoZXJlIGlzIG5vIGtub3duIG1hcHBpbmcgdGFibGUgYXZhaWxhYmxlLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9NQUMgOjoKKyAgICogICAgIE1hYyBSb21hbiBlbmNvZGluZy4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfT0VNIDo6CisgICAqICAgICBGcm9tIE1pY2hhZWwgUMO2dHRnZW4gPG1pY2hhZWxAcG9ldHRnZW4uZGU+OgorICAgKgorICAgKiAgICAgICBUaGUgYFdpbmRvd3MgRm9udCBNYXBwaW5nJyBhcnRpY2xlIHNheXMgdGhhdCBGVF9XaW5GTlRfSURfT0VNCisgICAqICAgICAgIGlzIHVzZWQgZm9yIHRoZSBjaGFyc2V0IG9mIHZlY3RvciBmb250cywgbGlrZSBgbW9kZXJuLmZvbicsCisgICAqICAgICAgIGByb21hbi5mb24nLCBhbmQgYHNjcmlwdC5mb24nIG9uIFdpbmRvd3MuCisgICAqCisgICAqICAgICAgIFRoZSBgQ3JlYXRlRm9udCcgZG9jdW1lbnRhdGlvbiBzYXlzOiBUaGUgRlRfV2luRk5UX0lEX09FTSB2YWx1ZQorICAgKiAgICAgICBzcGVjaWZpZXMgYSBjaGFyYWN0ZXIgc2V0IHRoYXQgaXMgb3BlcmF0aW5nLXN5c3RlbSBkZXBlbmRlbnQuCisgICAqCisgICAqICAgICAgIFRoZSBgSUZJTUVUUklDUycgZG9jdW1lbnRhdGlvbiBmcm9tIHRoZSBgV2luZG93cyBEcml2ZXIKKyAgICogICAgICAgRGV2ZWxvcG1lbnQgS2l0JyBzYXlzOiBUaGlzIGZvbnQgc3VwcG9ydHMgYW4gT0VNLXNwZWNpZmljCisgICAqICAgICAgIGNoYXJhY3RlciBzZXQuICBUaGUgT0VNIGNoYXJhY3RlciBzZXQgaXMgc3lzdGVtIGRlcGVuZGVudC4KKyAgICoKKyAgICogICAgICAgSW4gZ2VuZXJhbCBPRU0sIGFzIG9wcG9zZWQgdG8gQU5TSSAoaS5lLiwgY3AxMjUyKSwgZGVub3RlcyB0aGUKKyAgICogICAgICAgc2Vjb25kIGRlZmF1bHQgY29kZXBhZ2UgdGhhdCBtb3N0IGludGVybmF0aW9uYWwgdmVyc2lvbnMgb2YKKyAgICogICAgICAgV2luZG93cyBoYXZlLiAgSXQgaXMgb25lIG9mIHRoZSBPRU0gY29kZXBhZ2VzIGZyb20KKyAgICoKKyAgICogICAgICAgICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZ2xvYmFsZGV2L3JlZmVyZW5jZS9jcGhvbWUubXNweCwKKyAgICoKKyAgICogICAgICAgYW5kIGlzIHVzZWQgZm9yIHRoZSBgRE9TIGJveGVzJywgdG8gc3VwcG9ydCBsZWdhY3kgYXBwbGljYXRpb25zLgorICAgKiAgICAgICBBIEdlcm1hbiBXaW5kb3dzIHZlcnNpb24gZm9yIGV4YW1wbGUgdXN1YWxseSB1c2VzIEFOU0kgY29kZXBhZ2UKKyAgICogICAgICAgMTI1MiBhbmQgT0VNIGNvZGVwYWdlIDg1MC4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1A4NzQgOjoKKyAgICogICAgIEEgc3VwZXJzZXQgb2YgVGhhaSBUSVMgNjIwIGFuZCBJU08gODg1OS0xMS4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1A5MzIgOjoKKyAgICogICAgIEEgc3VwZXJzZXQgb2YgSmFwYW5lc2UgU2hpZnQtSklTICh3aXRoIG1pbm9yIGRldmlhdGlvbnMpLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDkzNiA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBzaW1wbGlmaWVkIENoaW5lc2UgR0IgMjMxMi0xOTgwICh3aXRoIGRpZmZlcmVudAorICAgKiAgICAgb3JkZXJpbmcgYW5kIG1pbm9yIGRldmlhdGlvbnMpLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDk0OSA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBLb3JlYW4gSGFuZ3VsIEtTfkMgNTYwMS0xOTg3ICh3aXRoIGRpZmZlcmVudAorICAgKiAgICAgb3JkZXJpbmcgYW5kIG1pbm9yIGRldmlhdGlvbnMpLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDk1MCA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiB0cmFkaXRpb25hbCBDaGluZXNlIEJpZ341IEVUZW4gKHdpdGggZGlmZmVyZW50CisgICAqICAgICBvcmRlcmluZyBhbmQgbWlub3IgZGV2aWF0aW9ucykuCisgICAqCisgICAqICAgRlRfV2luRk5UX0lEX0NQMTI1MCA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBFYXN0IEV1cm9wZWFuIElTTyA4ODU5LTIgKHdpdGggc2xpZ2h0bHkgZGlmZmVyZW50CisgICAqICAgICBvcmRlcmluZykuCisgICAqCisgICAqICAgRlRfV2luRk5UX0lEX0NQMTI1MSA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBSdXNzaWFuIElTTyA4ODU5LTUgKHdpdGggZGlmZmVyZW50IG9yZGVyaW5nKS4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1AxMjUyIDo6CisgICAqICAgICBBTlNJIGVuY29kaW5nLiAgQSBzdXBlcnNldCBvZiBJU08gODg1OS0xLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDEyNTMgOjoKKyAgICogICAgIEEgc3VwZXJzZXQgb2YgR3JlZWsgSVNPIDg4NTktNyAod2l0aCBtaW5vciBtb2RpZmljYXRpb25zKS4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1AxMjU0IDo6CisgICAqICAgICBBIHN1cGVyc2V0IG9mIFR1cmtpc2ggSVNPIDg4NTktOS4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1AxMjU1IDo6CisgICAqICAgICBBIHN1cGVyc2V0IG9mIEhlYnJldyBJU08gODg1OS04ICh3aXRoIHNvbWUgbW9kaWZpY2F0aW9ucykuCisgICAqCisgICAqICAgRlRfV2luRk5UX0lEX0NQMTI1NiA6OgorICAgKiAgICAgQSBzdXBlcnNldCBvZiBBcmFiaWMgSVNPIDg4NTktNiAod2l0aCBkaWZmZXJlbnQgb3JkZXJpbmcpLgorICAgKgorICAgKiAgIEZUX1dpbkZOVF9JRF9DUDEyNTcgOjoKKyAgICogICAgIEEgc3VwZXJzZXQgb2YgQmFsdGljIElTTyA4ODU5LTEzICh3aXRoIHNvbWUgZGV2aWF0aW9ucykuCisgICAqCisgICAqICAgRlRfV2luRk5UX0lEX0NQMTI1OCA6OgorICAgKiAgICAgRm9yIFZpZXRuYW1lc2UuICBUaGlzIGVuY29kaW5nIGRvZXNuJ3QgY292ZXIgYWxsIG5lY2Vzc2FyeQorICAgKiAgICAgY2hhcmFjdGVycy4KKyAgICoKKyAgICogICBGVF9XaW5GTlRfSURfQ1AxMzYxIDo6CisgICAqICAgICBLb3JlYW4gKEpvaGFiKS4KKyAgICovCisKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTI1MiAgICAwCisjZGVmaW5lIEZUX1dpbkZOVF9JRF9ERUZBVUxUICAgMQorI2RlZmluZSBGVF9XaW5GTlRfSURfU1lNQk9MICAgIDIKKyNkZWZpbmUgRlRfV2luRk5UX0lEX01BQyAgICAgIDc3CisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDkzMiAgIDEyOAorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1A5NDkgICAxMjkKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTM2MSAgMTMwCisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDkzNiAgIDEzNAorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1A5NTAgICAxMzYKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTI1MyAgMTYxCisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDEyNTQgIDE2MgorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1AxMjU4ICAxNjMKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTI1NSAgMTc3CisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDEyNTYgIDE3OAorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1AxMjU3ICAxODYKKyNkZWZpbmUgRlRfV2luRk5UX0lEX0NQMTI1MSAgMjA0CisjZGVmaW5lIEZUX1dpbkZOVF9JRF9DUDg3NCAgIDIyMgorI2RlZmluZSBGVF9XaW5GTlRfSURfQ1AxMjUwICAyMzgKKyNkZWZpbmUgRlRfV2luRk5UX0lEX09FTSAgICAgMjU1CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9XaW5GTlRfSGVhZGVyUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaW5kb3dzIEZOVCBIZWFkZXIgaW5mby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9XaW5GTlRfSGVhZGVyUmVjXworICB7CisgICAgRlRfVVNob3J0ICB2ZXJzaW9uOworICAgIEZUX1VMb25nICAgZmlsZV9zaXplOworICAgIEZUX0J5dGUgICAgY29weXJpZ2h0WzYwXTsKKyAgICBGVF9VU2hvcnQgIGZpbGVfdHlwZTsKKyAgICBGVF9VU2hvcnQgIG5vbWluYWxfcG9pbnRfc2l6ZTsKKyAgICBGVF9VU2hvcnQgIHZlcnRpY2FsX3Jlc29sdXRpb247CisgICAgRlRfVVNob3J0ICBob3Jpem9udGFsX3Jlc29sdXRpb247CisgICAgRlRfVVNob3J0ICBhc2NlbnQ7CisgICAgRlRfVVNob3J0ICBpbnRlcm5hbF9sZWFkaW5nOworICAgIEZUX1VTaG9ydCAgZXh0ZXJuYWxfbGVhZGluZzsKKyAgICBGVF9CeXRlICAgIGl0YWxpYzsKKyAgICBGVF9CeXRlICAgIHVuZGVybGluZTsKKyAgICBGVF9CeXRlICAgIHN0cmlrZV9vdXQ7CisgICAgRlRfVVNob3J0ICB3ZWlnaHQ7CisgICAgRlRfQnl0ZSAgICBjaGFyc2V0OworICAgIEZUX1VTaG9ydCAgcGl4ZWxfd2lkdGg7CisgICAgRlRfVVNob3J0ICBwaXhlbF9oZWlnaHQ7CisgICAgRlRfQnl0ZSAgICBwaXRjaF9hbmRfZmFtaWx5OworICAgIEZUX1VTaG9ydCAgYXZnX3dpZHRoOworICAgIEZUX1VTaG9ydCAgbWF4X3dpZHRoOworICAgIEZUX0J5dGUgICAgZmlyc3RfY2hhcjsKKyAgICBGVF9CeXRlICAgIGxhc3RfY2hhcjsKKyAgICBGVF9CeXRlICAgIGRlZmF1bHRfY2hhcjsKKyAgICBGVF9CeXRlICAgIGJyZWFrX2NoYXI7CisgICAgRlRfVVNob3J0ICBieXRlc19wZXJfcm93OworICAgIEZUX1VMb25nICAgZGV2aWNlX29mZnNldDsKKyAgICBGVF9VTG9uZyAgIGZhY2VfbmFtZV9vZmZzZXQ7CisgICAgRlRfVUxvbmcgICBiaXRzX3BvaW50ZXI7CisgICAgRlRfVUxvbmcgICBiaXRzX29mZnNldDsKKyAgICBGVF9CeXRlICAgIHJlc2VydmVkOworICAgIEZUX1VMb25nICAgZmxhZ3M7CisgICAgRlRfVVNob3J0ICBBX3NwYWNlOworICAgIEZUX1VTaG9ydCAgQl9zcGFjZTsKKyAgICBGVF9VU2hvcnQgIENfc3BhY2U7CisgICAgRlRfVVNob3J0ICBjb2xvcl90YWJsZV9vZmZzZXQ7CisgICAgRlRfVUxvbmcgICByZXNlcnZlZDFbNF07CisKKyAgfSBGVF9XaW5GTlRfSGVhZGVyUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfV2luRk5UX0hlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYW4gQEZUX1dpbkZOVF9IZWFkZXJSZWMgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9XaW5GTlRfSGVhZGVyUmVjXyogIEZUX1dpbkZOVF9IZWFkZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgIEZUX0dldF9XaW5GTlRfSGVhZGVyCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgUmV0cmlldmUgYSBXaW5kb3dzIEZOVCBmb250IGluZm8gaGVhZGVyLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgIGZhY2UgICAgOjogQSBoYW5kbGUgdG8gdGhlIGlucHV0IGZhY2UuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgIGFoZWFkZXIgOjogVGhlIFdpbkZOVCBoZWFkZXIuCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdpdGggV2luZG93cyBGTlQgZmFjZXMsIHJldHVybmluZyBhbiBlcnJvcgorICAgKiAgIG90aGVyd2lzZS4KKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfV2luRk5UX0hlYWRlciggRlRfRmFjZSAgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9XaW5GTlRfSGVhZGVyUmVjICAqYWhlYWRlciApOworCisKKyAgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFdJTkZOVF9IX18gKi8KKworCisvKiBFTkQgKi8KKworCisvKiBMb2NhbCBWYXJpYWJsZXM6ICovCisvKiBjb2Rpbmc6IHV0Zi04ICAgICovCisvKiBFbmQ6ICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHhmODYuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0eGY4Ni5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZTJkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9mdHhmODYuaApAQCAtMCwwICsxLDgzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHhmODYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgU3VwcG9ydCBmdW5jdGlvbnMgZm9yIFgxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVFhGODZfSF9fCisjZGVmaW5lIF9fRlRYRjg2X0hfXworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZm9udF9mb3JtYXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFRpdGxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgRm9udCBGb3JtYXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEFic3RyYWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgR2V0dGluZyB0aGUgZm9udCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhlIHNpbmdsZSBmdW5jdGlvbiBpbiB0aGlzIHNlY3Rpb24gY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBmb250ICAgICAqLworICAvKiAgIGZvcm1hdC4gIE5vdGUgdGhhdCB0aGlzIGluZm9ybWF0aW9uIGlzIG5vdCBuZWVkZWQgbm9ybWFsbHk7ICAgICAgICAgKi8KKyAgLyogICBob3dldmVyLCB0aGVyZSBhcmUgc3BlY2lhbCBjYXNlcyAobGlrZSBpbiBQREYgZGV2aWNlcykgd2hlcmUgaXQgaXMgICovCisgIC8qICAgaW1wb3J0YW50IHRvIGRpZmZlcmVudGlhdGUsIGluIHNwaXRlIG9mIEZyZWVUeXBlJ3MgdW5pZm9ybSBBUEkuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUaGlzIGZ1bmN0aW9uIGlzIGluIHRoZSBYMTEveGY4NiBuYW1lc3BhY2UgZm9yIGhpc3RvcmljYWwgcmVhc29ucyAgICovCisgIC8qICAgYW5kIGluIG5vIHdheSBkZXBlbmRzIG9uIHRoYXQgd2luZG93aW5nIHN5c3RlbS4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEZUX0dldF9YMTFfRm9udF9Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFJldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBmb3JtYXQgb2YgYSBnaXZlbiBmYWNlLCB1c2luZyB2YWx1ZXMgKi8KKyAgLyogICB3aGljaCBjYW4gYmUgdXNlZCBhcyBhbiBYMTEgRk9OVF9QUk9QRVJUWS4gIFBvc3NpYmxlIHZhbHVlcyBhcmUgICAgICovCisgIC8qICAgYFRydWVUeXBlJywgYFR5cGV+MScsIGBCREYnLCBgUENGJywgYFR5cGV+NDInLCBgQ0lEflR5cGV+MScsIGBDRkYnLCAqLworICAvKiAgIGBQRlInLCBhbmQgYFdpbmRvd3N+Rk5UJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGZhY2UgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIElucHV0IGZhY2UgaGFuZGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBGb250IGZvcm1hdCBzdHJpbmcuICBOVUxMIGluIGNhc2Ugb2YgZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIGNvbnN0IGNoYXIqICkKKyAgRlRfR2V0X1gxMV9Gb250X0Zvcm1hdCggRlRfRmFjZSAgZmFjZSApOworCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVFhGODZfSF9fICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9hdXRvaGludC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYXV0b2hpbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDc2NDZkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYXV0b2hpbnQuaApAQCAtMCwwICsxLDI0NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgYXV0b2hpbnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEhpZ2gtbGV2ZWwgYGF1dG9oaW50JyBtb2R1bGUtc3BlY2lmaWMgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDIsIDIwMDcsIDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGF1dG8taGludGVyIGlzIHVzZWQgdG8gbG9hZCBhbmQgYXV0b21hdGljYWxseSBoaW50IGdseXBocyBpZiBhICAgICovCisgIC8qIGZvcm1hdC1zcGVjaWZpYyBoaW50ZXIgaXNuJ3QgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0FVVE9ISU5UX0hfXworI2RlZmluZSBfX0FVVE9ISU5UX0hfXworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBIHNtYWxsIHRlY2huaWNhbCBub3RlIHJlZ2FyZGluZyBhdXRvbWF0aWMgaGludGluZyBpbiBvcmRlciB0byAgICAgICAgKi8KKyAgLyogY2xhcmlmeSB0aGlzIG1vZHVsZSBpbnRlcmZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBbiBhdXRvbWF0aWMgaGludGVyIG1pZ2h0IGNvbXB1dGUgdHdvIGtpbmRzIG9mIGRhdGEgZm9yIGEgZ2l2ZW4gZmFjZTogKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gZ2xvYmFsIGhpbnRzOiBVc3VhbGx5IHNvbWUgbWV0cmljcyB0aGF0IGRlc2NyaWJlIGdsb2JhbCBwcm9wZXJ0aWVzICAqLworICAvKiAgICAgICAgICAgICAgICAgb2YgdGhlIGZhY2UuICBJdCBpcyBjb21wdXRlZCBieSBzY2FubmluZyBtb3JlIG9yIGxlc3MgKi8KKyAgLyogICAgICAgICAgICAgICAgIGFnZ3Jlc3NpdmVseSB0aGUgZ2x5cGhzIGluIHRoZSBmYWNlLCBhbmQgdGh1cyBjYW4gYmUgICovCisgIC8qICAgICAgICAgICAgICAgICB2ZXJ5IHNsb3cgdG8gY29tcHV0ZSAoZXZlbiBpZiB0aGUgc2l6ZSBvZiBnbG9iYWwgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgaGludHMgaXMgcmVhbGx5IHNtYWxsKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gZ2x5cGggaGludHM6ICBUaGVzZSBkZXNjcmliZSBzb21lIGltcG9ydGFudCBmZWF0dXJlcyBvZiB0aGUgZ2x5cGggICAqLworICAvKiAgICAgICAgICAgICAgICAgb3V0bGluZSwgYXMgd2VsbCBhcyBob3cgdG8gYWxpZ24gdGhlbS4gIFRoZXkgYXJlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIGdlbmVyYWxseSBtdWNoIGZhc3RlciB0byBjb21wdXRlIHRoYW4gZ2xvYmFsIGhpbnRzLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgY3VycmVudCBGcmVlVHlwZSBhdXRvLWhpbnRlciBkb2VzIGEgcHJldHR5IGdvb2Qgam9iIHdoaWxlICAgICAgICAgKi8KKyAgLyogcGVyZm9ybWluZyBmYXN0IGNvbXB1dGF0aW9ucyBmb3IgYm90aCBnbG9iYWwgYW5kIGdseXBoIGhpbnRzLiAgICAgICAgICovCisgIC8qIEhvd2V2ZXIsIHdlIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gaW50cm9kdWNpbmcgbW9yZSBjb21wbGV4IGFuZCAgICAgICAqLworICAvKiBwb3dlcmZ1bCBhbGdvcml0aG1zIGluIHRoZSBmdXR1cmUsIGxpa2UgdGhlIG9uZSBkZXNjcmliZWQgaW4gdGhlIEpvaG4gKi8KKyAgLyogRC4gSG9iYnkgcGFwZXIsIHdoaWNoIHVuZm9ydHVuYXRlbHkgcmVxdWlyZXMgYSBsb3QgbW9yZSBob3JzZXBvd2VyLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBCZWNhdXNlIGEgc3VmZmljaWVudGx5IHNvcGhpc3RpY2F0ZWQgZm9udCBtYW5hZ2VtZW50IHN5c3RlbSB3b3VsZCAgICAgKi8KKyAgLyogdHlwaWNhbGx5IGltcGxlbWVudCBhbiBMUlUgY2FjaGUgb2Ygb3BlbmVkIGZhY2Ugb2JqZWN0cyB0byByZWR1Y2UgICAgICovCisgIC8qIG1lbW9yeSB1c2FnZSwgaXQgaXMgYSBnb29kIGlkZWEgdG8gYmUgYWJsZSB0byBhdm9pZCByZWNvbXB1dGluZyAgICAgICAqLworICAvKiBnbG9iYWwgaGludHMgZXZlcnkgdGltZSB0aGUgc2FtZSBmYWNlIGlzIHJlLW9wZW5lZC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFdlIHRodXMgcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBjYWNoZSBnbG9iYWwgaGludHMgb3V0c2lkZSBvZiB0aGUgZmFjZSAqLworICAvKiBvYmplY3QsIGluIG9yZGVyIHRvIHNwZWVkIHVwIGZvbnQgcmUtb3BlbmluZyB0aW1lLiAgT2YgY291cnNlLCB0aGlzICAgKi8KKyAgLyogZmVhdHVyZSBpcyBwdXJlbHkgb3B0aW9uYWwsIHNvIG1vc3QgY2xpZW50IHByb2dyYW1zIHdvbid0IGV2ZW4gbm90aWNlICovCisgIC8qIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSSBpbml0aWFsbHkgdGhvdWdodCB0aGF0IGl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIGNhY2hlIHRoZSBnbHlwaCAgICovCisgIC8qIGhpbnRzIHRvby4gIEhvd2V2ZXIsIG15IGdlbmVyYWwgaWRlYSBub3cgaXMgdGhhdCBpZiB5b3UgcmVhbGx5IG5lZWQgICAqLworICAvKiB0byBjYWNoZSB0aGVzZSB0b28sIHlvdSBhcmUgc2ltcGx5IGluIG5lZWQgb2YgYSBuZXcgZm9udCBmb3JtYXQsICAgICAgKi8KKyAgLyogd2hlcmUgYWxsIHRoaXMgaW5mb3JtYXRpb24gY291bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUgZm9udCBmaWxlIGFuZCAgICovCisgIC8qIGRlY29kZWQgb24gdGhlIGZseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vZnJlZXR5cGUuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIHR5cGVkZWYgc3RydWN0IEZUX0F1dG9IaW50ZXJSZWNfICAqRlRfQXV0b0hpbnRlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsR2V0RnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHJpZXZlIHRoZSBnbG9iYWwgaGludHMgY29tcHV0ZWQgZm9yIGEgZ2l2ZW4gZmFjZSBvYmplY3QuICBUaGUgICAqLworICAvKiAgICByZXN1bHRpbmcgZGF0YSBpcyBkaXNzb2NpYXRlZCBmcm9tIHRoZSBmYWNlIGFuZCB3aWxsIHN1cnZpdmUgYSAgICAgKi8KKyAgLyogICAgY2FsbCB0byBGVF9Eb25lX0ZhY2UoKS4gIEl0IG11c3QgYmUgZGlzY2FyZGVkIHRocm91Z2ggdGhlIEFQSSAgICAgICovCisgIC8qICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsRG9uZUZ1bmMoKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhpbnRlciAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGF1dG8taGludGVyLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2xvYmFsX2hpbnRzIDo6IEEgdHlwZWxlc3MgcG9pbnRlciB0byB0aGUgZ2xvYmFsIGhpbnRzLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbG9iYWxfbGVuICAgOjogVGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGdsb2JhbCBoaW50cy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX0F1dG9IaW50ZXJfR2xvYmFsR2V0RnVuYykoIEZUX0F1dG9IaW50ZXIgIGhpbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKiAgICAgICAgIGdsb2JhbF9oaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nKiAgICAgICAgICBnbG9iYWxfbGVuICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9BdXRvSGludGVyX0dsb2JhbERvbmVGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEaXNjYXJkIHRoZSBnbG9iYWwgaGludHMgcmV0cmlldmVkIHRocm91Z2ggICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQXV0b0hpbnRlcl9HbG9iYWxHZXRGdW5jKCkuICBUaGlzIGlzIHRoZSBvbmx5IHdheSB0aGVzZSBoaW50cyAgICovCisgIC8qICAgIGFyZSBmcmVlZCBmcm9tIG1lbW9yeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhpbnRlciA6OiBBIGhhbmRsZSB0byB0aGUgYXV0by1oaW50ZXIgbW9kdWxlLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2xvYmFsIDo6IEEgcG9pbnRlciB0byByZXRyaWV2ZWQgZ2xvYmFsIGhpbnRzIHRvIGRpc2NhcmQuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpGVF9BdXRvSGludGVyX0dsb2JhbERvbmVGdW5jKSggRlRfQXV0b0hpbnRlciAgaGludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICBnbG9iYWwgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsUmVzZXRGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZWNvbXB1dGUgdGhlIGdsb2JhbCBtZXRyaWNzIGluIGEgZ2l2ZW4gICAqLworICAvKiAgICBmb250LiAgVGhpcyBpcyB1c2VmdWwgd2hlbiBnbG9iYWwgZm9udCBkYXRhIGNoYW5nZXMgKGUuZy4gTXVsdGlwbGUgKi8KKyAgLyogICAgTWFzdGVycyBmb250cyB3aGVyZSBibGVuZCBjb29yZGluYXRlcyBjaGFuZ2UpLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGludGVyIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgYXV0by1oaW50ZXIuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX0F1dG9IaW50ZXJfR2xvYmFsUmVzZXRGdW5jKSggRlRfQXV0b0hpbnRlciAgaGludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgZmFjZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfQXV0b0hpbnRlcl9HbHlwaExvYWRGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxvYWQsIHNjYWxlLCBhbmQgYXV0b21hdGljYWxseSBoaW50IGEgICAgICovCisgIC8qICAgIGdseXBoIGZyb20gYSBnaXZlbiBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfaW5kZXggOjogVGhlIGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkX2ZsYWdzICA6OiBUaGUgbG9hZCBmbGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhcGFibGUgb2YgbG9hZGluZyBjb21wb3NpdGUgZ2x5cGhzIGJ5IGhpbnRpbmcgICAgKi8KKyAgLyogICAgZWFjaCBzdWItZ2x5cGggaW5kZXBlbmRlbnRseSAod2hpY2ggaW1wcm92ZXMgcXVhbGl0eSkuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJdCB3aWxsIGNhbGwgdGhlIGZvbnQgZHJpdmVyIHdpdGggQEZUX0xvYWRfR2x5cGgsIHdpdGggICAgICAgICAgICAgKi8KKyAgLyogICAgQEZUX0xPQURfTk9fU0NBTEUgc2V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfQXV0b0hpbnRlcl9HbHlwaExvYWRGdW5jKSggRlRfQXV0b0hpbnRlciAgaGludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZSAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgICAgICBsb2FkX2ZsYWdzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9BdXRvSGludGVyX0ludGVyZmFjZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgYXV0by1oaW50ZXIgbW9kdWxlJ3MgaW50ZXJmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBGVF9BdXRvSGludGVyX0ludGVyZmFjZVJlY18KKyAgeworICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsUmVzZXRGdW5jICByZXNldF9mYWNlOworICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsR2V0RnVuYyAgICBnZXRfZ2xvYmFsX2hpbnRzOworICAgIEZUX0F1dG9IaW50ZXJfR2xvYmFsRG9uZUZ1bmMgICBkb25lX2dsb2JhbF9oaW50czsKKyAgICBGVF9BdXRvSGludGVyX0dseXBoTG9hZEZ1bmMgICAgbG9hZF9nbHlwaDsKKworICB9IEZUX0F1dG9IaW50ZXJfSW50ZXJmYWNlUmVjLCAqRlRfQXV0b0hpbnRlcl9JbnRlcmZhY2U7CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9BVVRPSElOVEVSX0lOVEVSRkFDRSggICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZXNldF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2dsb2JhbF9oaW50c18sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfZ2xvYmFsX2hpbnRzXywgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2dseXBoXyApICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRiAgICAgICAgICAgICAgICAgICAgICAgXAorICBjb25zdCBGVF9BdXRvSGludGVyX0ludGVyZmFjZVJlYyAgY2xhc3NfID0gIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmVzZXRfZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9nbG9iYWxfaGludHNfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkb25lX2dsb2JhbF9oaW50c18sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9nbHlwaF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9BVVRPSElOVEVSX0lOVEVSRkFDRSggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByZXNldF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2dsb2JhbF9oaW50c18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfZ2xvYmFsX2hpbnRzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2dseXBoXyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgICAgICAgICAgbGlicmFyeSwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9BdXRvSGludGVyX0ludGVyZmFjZVJlYyogIGNsYXp6ICkgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1VOVVNFRCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnJlc2V0X2ZhY2UgICAgICAgID0gcmVzZXRfZmFjZV87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfZ2xvYmFsX2hpbnRzICA9IGdldF9nbG9iYWxfaGludHNfOyAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZG9uZV9nbG9iYWxfaGludHMgPSBkb25lX2dsb2JhbF9oaW50c187ICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfZ2x5cGggICAgICAgID0gbG9hZF9nbHlwaF87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0FVVE9ISU5UX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjI0NjJkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgKQEAgLTAsMCArMSwxNjcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Y2FsYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBcml0aG1ldGljIGNvbXB1dGF0aW9ucyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA2LCAyMDA4LCAyMDA5LCAyMDEyLTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQ0FMQ19IX18KKyNkZWZpbmUgX19GVENBTENfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vZnJlZXR5cGUuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZpeGVkU3FydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbXB1dGVzIHRoZSBzcXVhcmUgcm9vdCBvZiBhIDE2LjE2IGZpeGVkLXBvaW50IHZhbHVlLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHggOjogVGhlIHZhbHVlIHRvIGNvbXB1dGUgdGhlIHJvb3QgZm9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSByZXN1bHQgb2YgYHNxcnQoeCknLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IHZlcnkgZmFzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfSW50MzIgKQorICBGVF9TcXJ0Rml4ZWQoIEZUX0ludDMyICB4ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZUX011bERpdigpIGFuZCBGVF9NdWxGaXgoKSBhcmUgZGVjbGFyZWQgaW4gZnJlZXR5cGUuaC4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9NdWxEaXZfTm9fUm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHZlcnkgc2ltcGxlIGZ1bmN0aW9uIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29tcHV0YXRpb24gYChhKmIpL2MnICAgKi8KKyAgLyogICAgKHdpdGhvdXQgcm91bmRpbmcpIHdpdGggbWF4aW11bSBhY2N1cmFjeSAoaXQgdXNlcyBhIDY0LWJpdCAgICAgICAgICovCisgIC8qICAgIGludGVybWVkaWF0ZSBpbnRlZ2VyIHdoZW5ldmVyIG5lY2Vzc2FyeSkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpc24ndCBuZWNlc3NhcmlseSBhcyBmYXN0IGFzIHNvbWUgcHJvY2Vzc29yIHNwZWNpZmljICovCisgIC8qICAgIG9wZXJhdGlvbnMsIGJ1dCBpcyBhdCBsZWFzdCBjb21wbGV0ZWx5IHBvcnRhYmxlLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGEgOjogVGhlIGZpcnN0IG11bHRpcGxpZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiIDo6IFRoZSBzZWNvbmQgbXVsdGlwbGllci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYyA6OiBUaGUgZGl2aXNvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJlc3VsdCBvZiBgKGEqYikvYycuICBUaGlzIGZ1bmN0aW9uIG5ldmVyIHRyYXBzIHdoZW4gdHJ5aW5nIHRvICovCisgIC8qICAgIGRpdmlkZSBieSB6ZXJvOyBpdCBzaW1wbHkgcmV0dXJucyBgTWF4SW50JyBvciBgTWluSW50JyBkZXBlbmRpbmcgICAqLworICAvKiAgICBvbiB0aGUgc2lnbnMgb2YgYGEnIGFuZCBgYicuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX0xvbmcgKQorICBGVF9NdWxEaXZfTm9fUm91bmQoIEZUX0xvbmcgIGEsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgYiwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICBjICk7CisKKworICAvKgorICAgKiAgQSB2YXJpYW50IG9mIEZUX01hdHJpeF9NdWx0aXBseSB3aGljaCBzY2FsZXMgaXRzIHJlc3VsdCBhZnRlcndhcmRzLgorICAgKiAgVGhlIGlkZWEgaXMgdGhhdCBib3RoIGBhJyBhbmQgYGInIGFyZSBzY2FsZWQgYnkgZmFjdG9ycyBvZiAxMCBzbyB0aGF0CisgICAqICB0aGUgdmFsdWVzIGFyZSBhcyBwcmVjaXNlIGFzIHBvc3NpYmxlIHRvIGdldCBhIGNvcnJlY3QgcmVzdWx0IGR1cmluZworICAgKiAgdGhlIDY0Yml0IG11bHRpcGxpY2F0aW9uLiAgTGV0IGBzYScgYW5kIGBzYicgYmUgdGhlIHNjYWxpbmcgZmFjdG9ycyBvZgorICAgKiAgYGEnIGFuZCBgYicsIHJlc3BlY3RpdmVseSwgdGhlbiB0aGUgc2NhbGluZyBmYWN0b3Igb2YgdGhlIHJlc3VsdCBpcworICAgKiAgYHNhKnNiJy4KKyAgICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9NYXRyaXhfTXVsdGlwbHlfU2NhbGVkKCBjb25zdCBGVF9NYXRyaXgqICBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NYXRyaXggICAgICAgICpiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgICAgICBzY2FsaW5nICk7CisKKworICAvKgorICAgKiAgQSB2YXJpYW50IG9mIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0uICBTZWUgY29tbWVudHMgZm9yCisgICAqICBGVF9NYXRyaXhfTXVsdGlwbHlfU2NhbGVkLgorICAgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm1fU2NhbGVkKCBGVF9WZWN0b3IqICAgICAgICB2ZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9NYXRyaXgqICBtYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgICAgICBzY2FsaW5nICk7CisKKworICAvKgorICAgKiAgUmV0dXJuIC0xLCAwLCBvciArMSwgZGVwZW5kaW5nIG9uIHRoZSBvcmllbnRhdGlvbiBvZiBhIGdpdmVuIGNvcm5lci4KKyAgICogIFdlIHVzZSB0aGUgQ2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtLCB3aXRoIHBvc2l0aXZlIHZlcnRpY2FsIHZhbHVlcworICAgKiAgZ29pbmcgdXB3YXJkcy4gIFRoZSBmdW5jdGlvbiByZXR1cm5zICsxIGlmIHRoZSBjb3JuZXIgdHVybnMgdG8gdGhlCisgICAqICBsZWZ0LCAtMSB0byB0aGUgcmlnaHQsIGFuZCAwIGZvciB1bmRlY2lkYWJsZSBjYXNlcy4KKyAgICovCisgIEZUX0JBU0UoIEZUX0ludCApCisgIGZ0X2Nvcm5lcl9vcmllbnRhdGlvbiggRlRfUG9zICBpbl94LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgaW5feSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgIG91dF94LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgb3V0X3kgKTsKKworICAvKgorICAgKiAgUmV0dXJuIFRSVUUgaWYgYSBjb3JuZXIgaXMgZmxhdCBvciBuZWFybHkgZmxhdC4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgKiAgc2F5aW5nIHRoYXQgdGhlIGFuZ2xlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYGluJyBhbmQgYG91dCcgdmVjdG9ycyBpcworICAgKiAgdmVyeSBzbWFsbC4KKyAgICovCisgIEZUX0JBU0UoIEZUX0ludCApCisgIGZ0X2Nvcm5lcl9pc19mbGF0KCBGVF9Qb3MgIGluX3gsCisgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgIGluX3ksCisgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgIG91dF94LAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICBvdXRfeSApOworCisKKyAgLyoKKyAgICogIFJldHVybiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgaW5kZXguCisgICAqLworICBGVF9CQVNFKCBGVF9JbnQgKQorICBGVF9NU0IoIEZUX1VJbnQzMiAgeiApOworCisKKyAgLyoKKyAgICogIFJldHVybiBzcXJ0KHgqeCt5KnkpLCB3aGljaCBpcyB0aGUgc2FtZSBhcyBgRlRfVmVjdG9yX0xlbmd0aCcgYnV0IHVzZXMKKyAgICogIHR3byBmaXhlZC1wb2ludCBhcmd1bWVudHMgaW5zdGVhZC4KKyAgICovCisgIEZUX0JBU0UoIEZUX0ZpeGVkICkKKyAgRlRfSHlwb3QoIEZUX0ZpeGVkICB4LAorICAgICAgICAgICAgRlRfRml4ZWQgIHkgKTsKKworCisjZGVmaW5lIElOVF9UT19GMjZET1Q2KCB4ICkgICAgKCAoRlRfTG9uZykoeCkgPDwgNiAgKQorI2RlZmluZSBJTlRfVE9fRjJET1QxNCggeCApICAgICggKEZUX0xvbmcpKHgpIDw8IDE0ICkKKyNkZWZpbmUgSU5UX1RPX0ZJWEVEKCB4ICkgICAgICAoIChGVF9Mb25nKSh4KSA8PCAxNiApCisjZGVmaW5lIEYyRE9UMTRfVE9fRklYRUQoIHggKSAgKCAoRlRfTG9uZykoeCkgPDwgMiAgKQorI2RlZmluZSBGTE9BVF9UT19GSVhFRCggeCApICAgICggKEZUX0xvbmcpKCB4ICogNjU1MzYuMCApICkKKyNkZWZpbmUgRklYRURfVE9fSU5UKCB4ICkgICAgICAoIEZUX1JvdW5kRml4KCB4ICkgPj4gMTYgKQorCisjZGVmaW5lIFJPVU5EX0YyNkRPVDYoIHggKSAgICAgKCB4ID49IDAgPyAoICAgICggKHgpICsgMzIgKSAmIC02NCApICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoIC0oICggMzIgLSAoeCkgKSAmIC02NCApICkgKQorCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRDQUxDX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YjE0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgKQEAgLTAsMCArMSwyNTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0ZGVidWcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBEZWJ1Z2dpbmcgYW5kIGxvZ2dpbmcgY29tcG9uZW50IChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAyLCAyMDA0LCAyMDA2LTIwMDksIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgSU1QT1JUQU5UOiBBIGRlc2NyaXB0aW9uIG9mIEZyZWVUeXBlJ3MgZGVidWdnaW5nIHN1cHBvcnQgY2FuIGJlICAgICAgICAqLworLyogICAgICAgICAgICAgZm91bmQgaW4gYGRvY3MvREVCVUcuVFhUJy4gIFJlYWQgaXQgaWYgeW91IG5lZWQgdG8gdXNlIG9yICAgKi8KKy8qICAgICAgICAgICAgIHVuZGVyc3RhbmQgdGhpcyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRERUJVR19IX18KKyNkZWZpbmUgX19GVERFQlVHX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uL2NvbmZpZy9mdGNvbmZpZy5oIgorI2luY2x1ZGUgIi4uL2ZyZWV0eXBlLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKiBmb3JjZSB0aGUgZGVmaW5pdGlvbiBvZiBGVF9ERUJVR19MRVZFTF9FUlJPUiBpZiBGVF9ERUJVR19MRVZFTF9UUkFDRSAqLworICAvKiBpcyBhbHJlYWR5IGRlZmluZWQ7IHRoaXMgc2ltcGxpZmllcyB0aGUgZm9sbG93aW5nICNpZmRlZnMgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisjdW5kZWYgIEZUX0RFQlVHX0xFVkVMX0VSUk9SCisjZGVmaW5lIEZUX0RFQlVHX0xFVkVMX0VSUk9SCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRoZSB0cmFjZSBlbnVtcyBhcyB3ZWxsIGFzIHRoZSB0cmFjZSBsZXZlbHMgYXJyYXkgd2hlbiB0aGV5ICAgICovCisgIC8qIGFyZSBuZWVkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorCisjZGVmaW5lIEZUX1RSQUNFX0RFRiggeCApICB0cmFjZV8gIyMgeCAsCisKKyAgLyogZGVmaW5pbmcgdGhlIGVudW1lcmF0aW9uICovCisgIHR5cGVkZWYgZW51bSAgRlRfVHJhY2VfCisgIHsKKyNpbmNsdWRlICJmdHRyYWNlLmgiCisgICAgdHJhY2VfY291bnQKKworICB9IEZUX1RyYWNlOworCisKKyAgLyogZGVmaW5pbmcgdGhlIGFycmF5IG9mIHRyYWNlIGxldmVscywgcHJvdmlkZWQgYnkgYHNyYy9iYXNlL2Z0ZGVidWcuYycgKi8KKyAgZXh0ZXJuIGludCAgZnRfdHJhY2VfbGV2ZWxzW3RyYWNlX2NvdW50XTsKKworI3VuZGVmIEZUX1RSQUNFX0RFRgorCisjZW5kaWYgLyogRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRoZSBGVF9UUkFDRSBtYWNybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJTVBPUlRBTlQhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEVhY2ggY29tcG9uZW50IG11c3QgZGVmaW5lIHRoZSBtYWNybyBGVF9DT01QT05FTlQgdG8gYSB2YWxpZCBGVF9UcmFjZSAqLworICAvKiB2YWx1ZSBiZWZvcmUgdXNpbmcgYW55IFRSQUNFIG1hY3JvLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKworI2RlZmluZSBGVF9UUkFDRSggbGV2ZWwsIHZhcmZvcm1hdCApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKCBmdF90cmFjZV9sZXZlbHNbRlRfQ09NUE9ORU5UXSA+PSBsZXZlbCApIFwKKyAgICAgICAgICAgICAgRlRfTWVzc2FnZSB2YXJmb3JtYXQ7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSB3aGlsZSAoIDAgKQorCisjZWxzZSAvKiAhRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworI2RlZmluZSBGVF9UUkFDRSggbGV2ZWwsIHZhcmZvcm1hdCApICBkbyB7IH0gd2hpbGUgKCAwICkgICAgICAvKiBub3RoaW5nICovCisKKyNlbmRpZiAvKiAhRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1RyYWNlX0dldF9Db3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSB0cmFjZSBjb21wb25lbnRzLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBudW1iZXIgb2YgdHJhY2UgY29tcG9uZW50cy4gIDAgaWYgRnJlZVR5cGUgMiBpcyBub3QgYnVpbHQgd2l0aCAqLworICAvKiAgICBGVF9ERUJVR19MRVZFTF9UUkFDRSBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIG1heSBiZSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gYWNjZXNzIGVsZW1lbnRzIG9mICAgICAgKi8KKyAgLyogICAgdGhlIGludGVybmFsIGBmdF90cmFjZV9sZXZlbHMnIGFycmF5IGJ5IGFuIGluZGV4LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9JbnQgKQorICBGVF9UcmFjZV9HZXRfQ291bnQoIHZvaWQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1RyYWNlX0dldF9OYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiB0aGUgbmFtZSBvZiBhIHRyYWNlIGNvbXBvbmVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBpbmRleCBvZiB0aGUgdHJhY2UgY29tcG9uZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBuYW1lIG9mIHRoZSB0cmFjZSBjb21wb25lbnQuICBUaGlzIGlzIGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgICAqLworICAvKiAgICBDIHN0cmluZywgc28gZG8gbm90IGZyZWUgaXQgYWZ0ZXIgdXNlLiAgTlVMTCBpZiBGcmVlVHlwZSAyIGlzIG5vdCAgKi8KKyAgLyogICAgYnVpbHQgd2l0aCBGVF9ERUJVR19MRVZFTF9UUkFDRSBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlIEBGVF9UcmFjZV9HZXRfQ291bnQgdG8gZ2V0IHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHRyYWNlICAgICAgICovCisgIC8qICAgIGNvbXBvbmVudHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBtYXkgYmUgdXNlZnVsIGlmIHlvdSB3YW50IHRvIGNvbnRyb2wgRnJlZVR5cGUgMidzICAgICovCisgIC8qICAgIGRlYnVnIGxldmVsIGluIHlvdXIgYXBwbGljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggY29uc3QgY2hhciAqICkKKyAgRlRfVHJhY2VfR2V0X05hbWUoIEZUX0ludCAgaWR4ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFlvdSBuZWVkIHR3byBvcGVuaW5nIGFuZCBjbG9zaW5nIHBhcmVudGhlc2VzISAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRXhhbXBsZTogRlRfVFJBQ0UwKCggIlZhbHVlIGlzICVpIiwgZm9vICkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPdXRwdXQgb2YgdGhlIEZUX1RSQUNFWCBtYWNyb3MgaXMgc2VudCB0byBzdGRlcnIuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEZUX1RSQUNFMCggdmFyZm9ybWF0ICkgIEZUX1RSQUNFKCAwLCB2YXJmb3JtYXQgKQorI2RlZmluZSBGVF9UUkFDRTEoIHZhcmZvcm1hdCApICBGVF9UUkFDRSggMSwgdmFyZm9ybWF0ICkKKyNkZWZpbmUgRlRfVFJBQ0UyKCB2YXJmb3JtYXQgKSAgRlRfVFJBQ0UoIDIsIHZhcmZvcm1hdCApCisjZGVmaW5lIEZUX1RSQUNFMyggdmFyZm9ybWF0ICkgIEZUX1RSQUNFKCAzLCB2YXJmb3JtYXQgKQorI2RlZmluZSBGVF9UUkFDRTQoIHZhcmZvcm1hdCApICBGVF9UUkFDRSggNCwgdmFyZm9ybWF0ICkKKyNkZWZpbmUgRlRfVFJBQ0U1KCB2YXJmb3JtYXQgKSAgRlRfVFJBQ0UoIDUsIHZhcmZvcm1hdCApCisjZGVmaW5lIEZUX1RSQUNFNiggdmFyZm9ybWF0ICkgIEZUX1RSQUNFKCA2LCB2YXJmb3JtYXQgKQorI2RlZmluZSBGVF9UUkFDRTcoIHZhcmZvcm1hdCApICBGVF9UUkFDRSggNywgdmFyZm9ybWF0ICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRoZSBGVF9FUlJPUiBtYWNyby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPdXRwdXQgb2YgdGhpcyBtYWNybyBpcyBzZW50IHRvIHN0ZGVyci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfRVJST1IKKworI2RlZmluZSBGVF9FUlJPUiggdmFyZm9ybWF0ICkgIEZUX01lc3NhZ2UgIHZhcmZvcm1hdAorCisjZWxzZSAgLyogIUZUX0RFQlVHX0xFVkVMX0VSUk9SICovCisKKyNkZWZpbmUgRlRfRVJST1IoIHZhcmZvcm1hdCApICBkbyB7IH0gd2hpbGUgKCAwICkgICAgICAvKiBub3RoaW5nICovCisKKyNlbmRpZiAvKiAhRlRfREVCVUdfTEVWRUxfRVJST1IgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIHRoZSBGVF9BU1NFUlQgYW5kIEZUX1RIUk9XIG1hY3Jvcy4gIFRoZSBjYWxsIHRvIGBGVF9UaHJvdycgICAgICovCisgIC8qIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGVhc2lseSBzZXQgYSBicmVha3BvaW50IGF0IHRoaXMgZnVuY3Rpb24uICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9FUlJPUgorCisjZGVmaW5lIEZUX0FTU0VSVCggY29uZGl0aW9uICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAoICEoIGNvbmRpdGlvbiApICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgRlRfUGFuaWMoICJhc3NlcnRpb24gZmFpbGVkIG9uIGxpbmUgJWQgb2YgZmlsZSAlc1xuIiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgX19MSU5FX18sIF9fRklMRV9fICk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSB3aGlsZSAoIDAgKQorCisjZGVmaW5lIEZUX1RIUk9XKCBlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEZUX1Rocm93KCBGVF9FUlJfQ0FUKCBGVF9FUlJfUFJFRklYLCBlICksICAgXAorICAgICAgICAgICAgICAgICAgICAgIF9fTElORV9fLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18gKSAgICAgICAgICAgICAgICAgICAgICB8IFwKKyAgICAgICAgICAgIEZUX0VSUl9DQVQoIEZUX0VSUl9QUkVGSVgsIGUgKSAgICAgICAgICAgICkKKworI2Vsc2UgLyogIUZUX0RFQlVHX0xFVkVMX0VSUk9SICovCisKKyNkZWZpbmUgRlRfQVNTRVJUKCBjb25kaXRpb24gKSAgZG8geyB9IHdoaWxlICggMCApCisKKyNkZWZpbmUgRlRfVEhST1coIGUgKSAgRlRfRVJSX0NBVCggRlRfRVJSX1BSRUZJWCwgZSApCisKKyNlbmRpZiAvKiAhRlRfREVCVUdfTEVWRUxfRVJST1IgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lIGBGVF9NZXNzYWdlJyBhbmQgYEZUX1BhbmljJyB3aGVuIG5lZWRlZC4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX0VSUk9SCisKKyNpbmNsdWRlICJzdGRpby5oIiAgLyogZm9yIHZmcHJpbnRmKCkgKi8KKworICAvKiBwcmludCBhIG1lc3NhZ2UgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX01lc3NhZ2UoIGNvbnN0IGNoYXIqICBmbXQsCisgICAgICAgICAgICAgIC4uLiApOworCisgIC8qIHByaW50IGEgbWVzc2FnZSBhbmQgZXhpdCAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfUGFuaWMoIGNvbnN0IGNoYXIqICBmbXQsCisgICAgICAgICAgICAuLi4gKTsKKworICAvKiByZXBvcnQgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlciBvZiBhbiBlcnJvciAqLworICBGVF9CQVNFKCBpbnQgKQorICBGVF9UaHJvdyggRlRfRXJyb3IgICAgIGVycm9yLAorICAgICAgICAgICAgaW50ICAgICAgICAgIGxpbmUsCisgICAgICAgICAgICBjb25zdCBjaGFyKiAgZmlsZSApOworCisjZW5kaWYgLyogRlRfREVCVUdfTEVWRUxfRVJST1IgKi8KKworCisgIEZUX0JBU0UoIHZvaWQgKQorICBmdF9kZWJ1Z19pbml0KCB2b2lkICk7CisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRERUJVR19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMGU4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oCkBAIC0wLDAgKzEsNDA5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGRyaXZlci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgZm9udCBkcml2ZXIgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMywgMjAwNiwgMjAwOCwgMjAxMS0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVERSSVZFUl9IX18KKyNkZWZpbmUgX19GVERSSVZFUl9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi9mdG1vZGFwaS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0ZhY2VfSW5pdEZ1bmMpKCBGVF9TdHJlYW0gICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIHR5cGVmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBudW1fcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbWV0ZXJzICk7CisKKyAgdHlwZWRlZiB2b2lkCisgICgqRlRfRmFjZV9Eb25lRnVuYykoIEZUX0ZhY2UgIGZhY2UgKTsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TaXplX0luaXRGdW5jKSggRlRfU2l6ZSAgc2l6ZSApOworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1NpemVfRG9uZUZ1bmMpKCBGVF9TaXplICBzaXplICk7CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfU2xvdF9Jbml0RnVuYykoIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX1Nsb3RfRG9uZUZ1bmMpKCBGVF9HbHlwaFNsb3QgIHNsb3QgKTsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TaXplX1JlcXVlc3RGdW5jKSggRlRfU2l6ZSAgICAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TaXplX1JlcXVlc3QgIHJlcSApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TaXplX1NlbGVjdEZ1bmMpKCBGVF9TaXplICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgc2l6ZV9pbmRleCApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TbG90X0xvYWRGdW5jKSggRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9TaXplICAgICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludDMyICAgICAgbG9hZF9mbGFncyApOworCisKKyAgdHlwZWRlZiBGVF9VSW50CisgICgqRlRfQ2hhck1hcF9DaGFySW5kZXhGdW5jKSggRlRfQ2hhck1hcCAgY2hhcm1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICBjaGFyY29kZSApOworCisgIHR5cGVkZWYgRlRfTG9uZworICAoKkZUX0NoYXJNYXBfQ2hhck5leHRGdW5jKSggRlRfQ2hhck1hcCAgY2hhcm1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIGNoYXJjb2RlICk7CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfRmFjZV9HZXRLZXJuaW5nRnVuYykoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGxlZnRfZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHJpZ2h0X2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICBrZXJuaW5nICk7CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfRmFjZV9BdHRhY2hGdW5jKSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtICk7CisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfRmFjZV9HZXRBZHZhbmNlc0Z1bmMpKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludDMyICAgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGFkdmFuY2VzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Ecml2ZXJfQ2xhc3NSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZm9udCBkcml2ZXIgY2xhc3MuICBUaGlzIHN0cnVjdHVyZSBtb3N0bHkgY29udGFpbnMgcG9pbnRlcnMgdG8gKi8KKyAgLyogICAgZHJpdmVyIG1ldGhvZHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcm9vdCAgICAgICAgICAgICA6OiBUaGUgcGFyZW50IG1vZHVsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX29iamVjdF9zaXplIDo6IFRoZSBzaXplIG9mIGEgZmFjZSBvYmplY3QgaW4gYnl0ZXMuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNpemVfb2JqZWN0X3NpemUgOjogVGhlIHNpemUgb2YgYSBzaXplIG9iamVjdCBpbiBieXRlcy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2xvdF9vYmplY3Rfc2l6ZSA6OiBUaGUgc2l6ZSBvZiBhIGdseXBoIG9iamVjdCBpbiBieXRlcy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpbml0X2ZhY2UgICAgICAgIDo6IFRoZSBmb3JtYXQtc3BlY2lmaWMgZmFjZSBjb25zdHJ1Y3Rvci4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRvbmVfZmFjZSAgICAgICAgOjogVGhlIGZvcm1hdC1zcGVjaWZpYyBmYWNlIGRlc3RydWN0b3IuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW5pdF9zaXplICAgICAgICA6OiBUaGUgZm9ybWF0LXNwZWNpZmljIHNpemUgY29uc3RydWN0b3IuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkb25lX3NpemUgICAgICAgIDo6IFRoZSBmb3JtYXQtc3BlY2lmaWMgc2l6ZSBkZXN0cnVjdG9yLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGluaXRfc2xvdCAgICAgICAgOjogVGhlIGZvcm1hdC1zcGVjaWZpYyBzbG90IGNvbnN0cnVjdG9yLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZG9uZV9zbG90ICAgICAgICA6OiBUaGUgZm9ybWF0LXNwZWNpZmljIHNsb3QgZGVzdHJ1Y3Rvci4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZF9nbHlwaCAgICAgICA6OiBBIGZ1bmN0aW9uIGhhbmRsZSB0byBsb2FkIGEgZ2x5cGggdG8gYSBzbG90LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWVsZCBpcyBtYW5kYXRvcnkhICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2V0X2tlcm5pbmcgICAgICA6OiBBIGZ1bmN0aW9uIGhhbmRsZSB0byByZXR1cm4gdGhlIHVuc2NhbGVkICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAga2VybmluZyBmb3IgYSBnaXZlbiBwYWlyIG9mIGdseXBocy4gIENhbiBiZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHNldCB0byAwIGlmIHRoZSBmb3JtYXQgZG9lc24ndCBzdXBwb3J0ICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBrZXJuaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhdHRhY2hfZmlsZSAgICAgIDo6IFRoaXMgZnVuY3Rpb24gaGFuZGxlIGlzIHVzZWQgdG8gcmVhZCAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGRhdGEgZm9yIGEgZmFjZSBmcm9tIGFub3RoZXIgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS9zdHJlYW0uICBGb3IgZXhhbXBsZSwgdGhpcyBjYW4gYmUgdXNlZCB0byAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBkYXRhIGZyb20gQUZNIG9yIFBGTSBmaWxlcyBvbiBhIFR5cGUgMSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBmYWNlLCBvciBhIENJRE1hcCBvbiBhIENJRC1rZXllZCBmYWNlLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnZXRfYWR2YW5jZXMgICAgIDo6IEEgZnVuY3Rpb24gaGFuZGxlIHVzZWQgdG8gcmV0dXJuIGFkdmFuY2UgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMgb2YgYGNvdW50JyBnbHlwaHMgKGluIGZvbnQgdW5pdHMpLCAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmcgYXQgYGZpcnN0Jy4gIFRoZSBgdmVydGljYWwnIGZsYWcgbXVzdCAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGJlIHNldCB0byBnZXQgdmVydGljYWwgYWR2YW5jZSBoZWlnaHRzLiAgVGhlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBgYWR2YW5jZXMnIGJ1ZmZlciBpcyBjYWxsZXItYWxsb2NhdGVkLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGlkZWEgb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBiZSBhYmxlIHRvICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gZGV2aWNlLWluZGVwZW5kZW50IHRleHQgbGF5b3V0IHdpdGhvdXQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nIGEgc2luZ2xlIGdseXBoIGltYWdlLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZXF1ZXN0X3NpemUgICAgIDo6IEEgaGFuZGxlIHRvIGEgZnVuY3Rpb24gdXNlZCB0byByZXF1ZXN0IHRoZSBuZXcgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgc2l6ZS4gIENhbiBiZSBzZXQgdG8gMCBpZiB0aGUgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGluZyBkb25lIGluIHRoZSBiYXNlIGxheWVyIHN1ZmZpY2VzLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2VsZWN0X3NpemUgICAgICA6OiBBIGhhbmRsZSB0byBhIGZ1bmN0aW9uIHVzZWQgdG8gc2VsZWN0IGEgbmV3ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWQgc2l6ZS4gIEl0IGlzIHVzZWQgb25seSBpZiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIEBGVF9GQUNFX0ZMQUdfRklYRURfU0laRVMgaXMgc2V0LiAgQ2FuIGJlIHNldCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICB0byAwIGlmIHRoZSBzY2FsaW5nIGRvbmUgaW4gdGhlIGJhc2UgbGF5ZXIgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgc3VmZmljZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTW9zdCBmdW5jdGlvbiBwb2ludGVycywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGBsb2FkX2dseXBoJywgY2FuIGJlICovCisgIC8qICAgIHNldCB0byAwIHRvIGluZGljYXRlIGEgZGVmYXVsdCBiZWhhdmlvdXIuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0RyaXZlcl9DbGFzc1JlY18KKyAgeworICAgIEZUX01vZHVsZV9DbGFzcyAgICAgICAgICByb290OworCisgICAgRlRfTG9uZyAgICAgICAgICAgICAgICAgIGZhY2Vfb2JqZWN0X3NpemU7CisgICAgRlRfTG9uZyAgICAgICAgICAgICAgICAgIHNpemVfb2JqZWN0X3NpemU7CisgICAgRlRfTG9uZyAgICAgICAgICAgICAgICAgIHNsb3Rfb2JqZWN0X3NpemU7CisKKyAgICBGVF9GYWNlX0luaXRGdW5jICAgICAgICAgaW5pdF9mYWNlOworICAgIEZUX0ZhY2VfRG9uZUZ1bmMgICAgICAgICBkb25lX2ZhY2U7CisKKyAgICBGVF9TaXplX0luaXRGdW5jICAgICAgICAgaW5pdF9zaXplOworICAgIEZUX1NpemVfRG9uZUZ1bmMgICAgICAgICBkb25lX3NpemU7CisKKyAgICBGVF9TbG90X0luaXRGdW5jICAgICAgICAgaW5pdF9zbG90OworICAgIEZUX1Nsb3RfRG9uZUZ1bmMgICAgICAgICBkb25lX3Nsb3Q7CisKKyAgICBGVF9TbG90X0xvYWRGdW5jICAgICAgICAgbG9hZF9nbHlwaDsKKworICAgIEZUX0ZhY2VfR2V0S2VybmluZ0Z1bmMgICBnZXRfa2VybmluZzsKKyAgICBGVF9GYWNlX0F0dGFjaEZ1bmMgICAgICAgYXR0YWNoX2ZpbGU7CisgICAgRlRfRmFjZV9HZXRBZHZhbmNlc0Z1bmMgIGdldF9hZHZhbmNlczsKKworICAgIC8qIHNpbmNlIHZlcnNpb24gMi4yICovCisgICAgRlRfU2l6ZV9SZXF1ZXN0RnVuYyAgICAgIHJlcXVlc3Rfc2l6ZTsKKyAgICBGVF9TaXplX1NlbGVjdEZ1bmMgICAgICAgc2VsZWN0X3NpemU7CisKKyAgfSBGVF9Ecml2ZXJfQ2xhc3NSZWMsICpGVF9Ecml2ZXJfQ2xhc3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUNMQVJFX0RSSVZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2VkIHRvIGNyZWF0ZSBhIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgYW4gRlRfRHJpdmVyX0NsYXNzUmVjICAgICAgKi8KKyAgLyogICAgc3RydWN0IGluc3RhbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX0RSSVZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBpbml0aWFsaXplIGFuIGluc3RhbmNlIG9mIEZUX0RyaXZlcl9DbGFzc1JlYyBzdHJ1Y3QuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIGRlZmluZWQgYSBgY3JlYXRlJyBmdW5jdGlvbiBoYXMgdG8gYmUgKi8KKyAgLyogICAgY2FsbGVkIHdpdGggYSBwb2ludGVyIHdoZXJlIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlIGlzIHJldHVybmVkLiAgICovCisgIC8qICAgIEFuZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQgYSBgZGVzdHJveScgZnVuY3Rpb24gbmVlZHMgdG8gYmUgICAqLworICAvKiAgICBjYWxsZWQgdG8gcmVsZWFzZSB0aGF0IGFsbG9jYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGBmY2luaXQuYycgKGZ0X2NyZWF0ZV9kZWZhdWx0X21vZHVsZV9jbGFzc2VzKSBhbHJlYWR5IGNvbnRhaW5zIGEgICAqLworICAvKiAgICBtZWNoYW5pc20gdG8gY2FsbCB0aGVzZSBmdW5jdGlvbnMgZm9yIHRoZSBkZWZhdWx0IG1vZHVsZXMgICAgICAgICAgKi8KKyAgLyogICAgZGVzY3JpYmVkIGluIGBmdG1vZHVsZS5oJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RpY2UgdGhhdCB0aGUgY3JlYXRlZCBgY3JlYXRlJyBhbmQgYGRlc3Ryb3knIGZ1bmN0aW9ucyBjYWxsICAgICAgKi8KKyAgLyogICAgYHBpY19pbml0JyBhbmQgYHBpY19mcmVlJyB0byBhbGxvdyB5b3UgdG8gbWFudWFsbHkgYWxsb2NhdGUgYW5kICAgICovCisgIC8qICAgIGluaXRpYWxpemUgYW55IGFkZGl0aW9uYWwgZ2xvYmFsIGRhdGEsIGxpa2UgYSBtb2R1bGUgc3BlY2lmaWMgICAgICAqLworICAvKiAgICBpbnRlcmZhY2UsIGFuZCBwdXQgdGhlbSBpbiB0aGUgZ2xvYmFsIHBpYyBjb250YWluZXIgZGVmaW5lZCBpbiAgICAgKi8KKyAgLyogICAgYGZ0cGljLmgnLiAgSWYgeW91IGRvbid0IG5lZWQgdGhlbSBqdXN0IGltcGxlbWVudCB0aGUgZnVuY3Rpb25zIGFzICovCisgIC8qICAgIGVtcHR5IHRvIHJlc29sdmUgdGhlIGxpbmsgZXJyb3IuICBBbHNvIHRoZSBgcGljX2luaXQnIGFuZCAgICAgICAgICAqLworICAvKiAgICBgcGljX2ZyZWUnIGZ1bmN0aW9ucyBzaG91bGQgYmUgZGVjbGFyZWQgaW4gYHBpYy5oJywgdG8gYmUgcmVmZXJyZWQgKi8KKyAgLyogICAgYnkgZHJpdmVyIGRlZmluaXRpb24gY2FsbGluZyBgRlRfREVGSU5FX0RSSVZFUicgaW4gZm9sbG93aW5nLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIG5vdCBkZWZpbmVkIHRoZSBzdHJ1Y3Qgd2lsbCBiZSAgICAgICAgKi8KKyAgLyogICAgYWxsb2NhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUgKG9yIHRoZSBzY29wZSB3aGVyZSB0aGUgbWFjcm8gaXMgICAgICovCisgIC8qICAgIHVzZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUNMQVJFX0RSSVZFUiggY2xhc3NfICkgIFwKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUgICAgICAgICAgICAgICAgICBcCisgIGNvbnN0IEZUX0RyaXZlcl9DbGFzc1JlYyAgY2xhc3NfOworCisjZGVmaW5lIEZUX0RFRklORV9EUklWRVIoICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZmxhZ3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdmVyc2lvbl8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZmFjZV9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2xvdF9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9nbHlwaF8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2tlcm5pbmdfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgYXR0YWNoX2ZpbGVfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2FkdmFuY2VzXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWVzdF9zaXplXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2VsZWN0X3NpemVfICkgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRiAgICAgICAgICAgICAgICAgICAgICBcCisgIGNvbnN0IEZUX0RyaXZlcl9DbGFzc1JlYyAgY2xhc3NfID0gICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfREVGSU5FX1JPT1RfTU9EVUxFKCBmbGFnc18sICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplXywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lXywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc18sICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VfLCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0XywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lXywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaW50ZXJmYWNlXyApICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZmFjZV9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2l6ZV9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2xvdF9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5pdF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5pdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5pdF9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9nbHlwaF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2tlcm5pbmdfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXR0YWNoX2ZpbGVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2FkdmFuY2VzXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmVxdWVzdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2VsZWN0X3NpemVfICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVDTEFSRV9EUklWRVIoIGNsYXNzXyApICBGVF9ERUNMQVJFX01PRFVMRSggY2xhc3NfICkKKworI2RlZmluZSBGVF9ERUZJTkVfRFJJVkVSKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmbGFnc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNpemVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHJlcXVpcmVzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmYWNlX29iamVjdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNpemVfb2JqZWN0X3NpemVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2xvdF9vYmplY3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0X2ZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9zaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkb25lX3NpemVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfc2xvdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV9zbG90XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2dseXBoXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9rZXJuaW5nXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgYXR0YWNoX2ZpbGVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfYWR2YW5jZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHJlcXVlc3Rfc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2VsZWN0X3NpemVfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9EZXN0cm95X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlX0NsYXNzKiAgY2xhenogKSAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfRHJpdmVyX0NsYXNzICBkY2xhenogPSAoRlRfRHJpdmVyX0NsYXNzKWNsYXp6OyAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhc3NfICMjIF9waWNfZnJlZSggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGRjbGF6eiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggZGNsYXp6ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ3JlYXRlX0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICBsaWJyYXJ5LCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlX0NsYXNzKiogIG91dHB1dF9jbGFzcyApICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Ecml2ZXJfQ2xhc3MgIGNsYXp6ICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX0Vycm9yICAgICAgICAgZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBGVF9BTExPQyggY2xhenosIHNpemVvZiAoICpjbGF6eiApICkgKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZXJyb3IgPSBjbGFzc18gIyMgX3BpY19pbml0KCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGVycm9yICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCBjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9ERUZJTkVfUk9PVF9NT0RVTEUoIGZsYWdzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaW50ZXJmYWNlXyApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5mYWNlX29iamVjdF9zaXplID0gZmFjZV9vYmplY3Rfc2l6ZV87ICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnNpemVfb2JqZWN0X3NpemUgPSBzaXplX29iamVjdF9zaXplXzsgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+c2xvdF9vYmplY3Rfc2l6ZSA9IHNsb3Rfb2JqZWN0X3NpemVfOyAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmluaXRfZmFjZSAgICAgICAgPSBpbml0X2ZhY2VfOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZG9uZV9mYWNlICAgICAgICA9IGRvbmVfZmFjZV87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmluaXRfc2l6ZSAgICAgICAgPSBpbml0X3NpemVfOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZG9uZV9zaXplICAgICAgICA9IGRvbmVfc2l6ZV87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmluaXRfc2xvdCAgICAgICAgPSBpbml0X3Nsb3RfOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZG9uZV9zbG90ICAgICAgICA9IGRvbmVfc2xvdF87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfZ2x5cGggICAgICAgPSBsb2FkX2dseXBoXzsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfa2VybmluZyAgICAgID0gZ2V0X2tlcm5pbmdfOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmF0dGFjaF9maWxlICAgICAgPSBhdHRhY2hfZmlsZV87ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X2FkdmFuY2VzICAgICA9IGdldF9hZHZhbmNlc187ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnJlcXVlc3Rfc2l6ZSAgICAgPSByZXF1ZXN0X3NpemVfOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+c2VsZWN0X3NpemUgICAgICA9IHNlbGVjdF9zaXplXzsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKm91dHB1dF9jbGFzcyA9IChGVF9Nb2R1bGVfQ2xhc3MqKWNsYXp6OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVERSSVZFUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ZTVhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oCkBAIC0wLDAgKzEsMTY4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGdsb2Fkci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIGdseXBoIGxvYWRlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZyAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVEdMT0FEUl9IX18KKyNkZWZpbmUgX19GVEdMT0FEUl9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi9mcmVldHlwZS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2x5cGhMb2FkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGdseXBoIGxvYWRlciBpcyBhbiBpbnRlcm5hbCBvYmplY3QgdXNlZCB0byBsb2FkIHNldmVyYWwgZ2x5cGhzICovCisgIC8qICAgIHRvZ2V0aGVyIChmb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgY29tcG9zaXRlcykuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBnbHlwaCBsb2FkZXIgaW1wbGVtZW50YXRpb24gaXMgbm90IHBhcnQgb2YgdGhlIGhpZ2gtbGV2ZWwgQVBJLCAqLworICAvKiAgICBoZW5jZSB0aGUgZm9yd2FyZCBzdHJ1Y3R1cmUgZGVjbGFyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IEZUX0dseXBoTG9hZGVyUmVjXyogIEZUX0dseXBoTG9hZGVyIDsKKworCisjaWYgMCAgLyogbW92ZWQgdG8gZnJlZXR5cGUuaCBpbiB2ZXJzaW9uIDIuMiAqLworI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHX0FSR1NfQVJFX1dPUkRTICAgICAgICAgIDEKKyNkZWZpbmUgRlRfU1VCR0xZUEhfRkxBR19BUkdTX0FSRV9YWV9WQUxVRVMgICAgICAyCisjZGVmaW5lIEZUX1NVQkdMWVBIX0ZMQUdfUk9VTkRfWFlfVE9fR1JJRCAgICAgICAgNAorI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHX1NDQUxFICAgICAgICAgICAgICAgICAgIDgKKyNkZWZpbmUgRlRfU1VCR0xZUEhfRkxBR19YWV9TQ0FMRSAgICAgICAgICAgICAweDQwCisjZGVmaW5lIEZUX1NVQkdMWVBIX0ZMQUdfMlgyICAgICAgICAgICAgICAgICAgMHg4MAorI2RlZmluZSBGVF9TVUJHTFlQSF9GTEFHX1VTRV9NWV9NRVRSSUNTICAgICAgMHgyMDAKKyNlbmRpZgorCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1N1YkdseXBoUmVjXworICB7CisgICAgRlRfSW50ICAgICBpbmRleDsKKyAgICBGVF9VU2hvcnQgIGZsYWdzOworICAgIEZUX0ludCAgICAgYXJnMTsKKyAgICBGVF9JbnQgICAgIGFyZzI7CisgICAgRlRfTWF0cml4ICB0cmFuc2Zvcm07CisKKyAgfSBGVF9TdWJHbHlwaFJlYzsKKworCisgIHR5cGVkZWYgc3RydWN0ICBGVF9HbHlwaExvYWRSZWNfCisgIHsKKyAgICBGVF9PdXRsaW5lICAgb3V0bGluZTsgICAgICAgLyogb3V0bGluZSAgICAgICAgICAgICAgICAgICAqLworICAgIEZUX1ZlY3RvciogICBleHRyYV9wb2ludHM7ICAvKiBleHRyYSBwb2ludHMgdGFibGUgICAgICAgICovCisgICAgRlRfVmVjdG9yKiAgIGV4dHJhX3BvaW50czI7IC8qIHNlY29uZCBleHRyYSBwb2ludHMgdGFibGUgKi8KKyAgICBGVF9VSW50ICAgICAgbnVtX3N1YmdseXBoczsgLyogbnVtYmVyIG9mIHN1YmdseXBocyAgICAgICAqLworICAgIEZUX1N1YkdseXBoICBzdWJnbHlwaHM7ICAgICAvKiBzdWJnbHlwaHMgICAgICAgICAgICAgICAgICovCisKKyAgfSBGVF9HbHlwaExvYWRSZWMsICpGVF9HbHlwaExvYWQ7CisKKworICB0eXBlZGVmIHN0cnVjdCAgRlRfR2x5cGhMb2FkZXJSZWNfCisgIHsKKyAgICBGVF9NZW1vcnkgICAgICAgIG1lbW9yeTsKKyAgICBGVF9VSW50ICAgICAgICAgIG1heF9wb2ludHM7CisgICAgRlRfVUludCAgICAgICAgICBtYXhfY29udG91cnM7CisgICAgRlRfVUludCAgICAgICAgICBtYXhfc3ViZ2x5cGhzOworICAgIEZUX0Jvb2wgICAgICAgICAgdXNlX2V4dHJhOworCisgICAgRlRfR2x5cGhMb2FkUmVjICBiYXNlOworICAgIEZUX0dseXBoTG9hZFJlYyAgY3VycmVudDsKKworICAgIHZvaWQqICAgICAgICAgICAgb3RoZXI7ICAgICAgICAgICAgLyogZm9yIHBvc3NpYmxlIGZ1dHVyZSBleHRlbnNpb24/ICovCisKKyAgfSBGVF9HbHlwaExvYWRlclJlYzsKKworCisgIC8qIGNyZWF0ZSBuZXcgZW1wdHkgZ2x5cGggbG9hZGVyICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfR2x5cGhMb2FkZXJfTmV3KCBGVF9NZW1vcnkgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaExvYWRlciAgKmFsb2FkZXIgKTsKKworICAvKiBhZGQgYW4gZXh0cmEgcG9pbnRzIHRhYmxlIHRvIGEgZ2x5cGggbG9hZGVyICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfR2x5cGhMb2FkZXJfQ3JlYXRlRXh0cmEoIEZUX0dseXBoTG9hZGVyICBsb2FkZXIgKTsKKworICAvKiBkZXN0cm95IGEgZ2x5cGggbG9hZGVyICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9HbHlwaExvYWRlcl9Eb25lKCBGVF9HbHlwaExvYWRlciAgbG9hZGVyICk7CisKKyAgLyogcmVzZXQgYSBnbHlwaCBsb2FkZXIgKGZyZWVzIGV2ZXJ5dGhpbmcgaW50IGl0KSAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfR2x5cGhMb2FkZXJfUmVzZXQoIEZUX0dseXBoTG9hZGVyICBsb2FkZXIgKTsKKworICAvKiByZXdpbmQgYSBnbHlwaCBsb2FkZXIgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX0dseXBoTG9hZGVyX1Jld2luZCggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciApOworCisgIC8qIGNoZWNrIHRoYXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIHRvIGFkZCBgbl9wb2ludHMnIGFuZCBgbl9jb250b3VycycgKi8KKyAgLyogdG8gdGhlIGdseXBoIGxvYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX0dseXBoTG9hZGVyX0NoZWNrUG9pbnRzKCBGVF9HbHlwaExvYWRlciAgbG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIG5fcG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIG5fY29udG91cnMgKTsKKworCisjZGVmaW5lIEZUX0dMWVBITE9BREVSX0NIRUNLX1AoIF9sb2FkZXIsIF9jb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICggKF9jb3VudCkgPT0gMCB8fCAoKF9sb2FkZXIpLT5iYXNlLm91dGxpbmUubl9wb2ludHMgICAgKyAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAoX2xvYWRlciktPmN1cnJlbnQub3V0bGluZS5uX3BvaW50cyArICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShfY291bnQpKSA8PSAoX2xvYWRlciktPm1heF9wb2ludHMgKQorCisjZGVmaW5lIEZUX0dMWVBITE9BREVSX0NIRUNLX0MoIF9sb2FkZXIsIF9jb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICggKF9jb3VudCkgPT0gMCB8fCAoKF9sb2FkZXIpLT5iYXNlLm91dGxpbmUubl9jb250b3VycyAgICArICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgKF9sb2FkZXIpLT5jdXJyZW50Lm91dGxpbmUubl9jb250b3VycyArICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKF9jb3VudCkpIDw9IChfbG9hZGVyKS0+bWF4X2NvbnRvdXJzICkKKworI2RlZmluZSBGVF9HTFlQSExPQURFUl9DSEVDS19QT0lOVFMoIF9sb2FkZXIsIF9wb2ludHMsX2NvbnRvdXJzICkgICAgICBcCisgICggKCBGVF9HTFlQSExPQURFUl9DSEVDS19QKCBfbG9hZGVyLCBfcG9pbnRzICkgICAmJiAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0dMWVBITE9BREVSX0NIRUNLX0MoIF9sb2FkZXIsIF9jb250b3VycyApICkgICAgICAgICAgICAgICAgICAgXAorICAgID8gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgOiBGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cyggKF9sb2FkZXIpLCAoX3BvaW50cyksIChfY29udG91cnMpICkgKQorCisKKyAgLyogY2hlY2sgdGhhdCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgdG8gYWRkIGBuX3N1YnMnIHN1Yi1nbHlwaHMgdG8gKi8KKyAgLyogYSBnbHlwaCBsb2FkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9HbHlwaExvYWRlcl9DaGVja1N1YkdseXBocyggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBuX3N1YnMgKTsKKworICAvKiBwcmVwYXJlIGEgZ2x5cGggbG9hZGVyLCBpLmUuIGVtcHR5IHRoZSBjdXJyZW50IGdseXBoICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9HbHlwaExvYWRlcl9QcmVwYXJlKCBGVF9HbHlwaExvYWRlciAgbG9hZGVyICk7CisKKyAgLyogYWRkIHRoZSBjdXJyZW50IGdseXBoIHRvIHRoZSBiYXNlIGdseXBoICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9HbHlwaExvYWRlcl9BZGQoIEZUX0dseXBoTG9hZGVyICBsb2FkZXIgKTsKKworICAvKiBjb3B5IHBvaW50cyBmcm9tIG9uZSBnbHlwaCBsb2FkZXIgdG8gYW5vdGhlciAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX0dseXBoTG9hZGVyX0NvcHlQb2ludHMoIEZUX0dseXBoTG9hZGVyICB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoTG9hZGVyICBzb3VyY2UgKTsKKworIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVEdMT0FEUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMmE5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oCkBAIC0wLDAgKzEsNDU5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdG1lbW9yeS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIG1lbW9yeSBtYW5hZ2VtZW50IG1hY3JvcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMiwgMjAwNC0yMDA3LCAyMDEwLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZyAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19GVE1FTU9SWV9IX18KKyNkZWZpbmUgX19GVE1FTU9SWV9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi9jb25maWcvZnRjb25maWcuaCIKKyNpbmNsdWRlICIuLi9mdHR5cGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TRVRfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gc2V0IGFuIGltcGxpY2l0IGBlcnJvcicgdmFyaWFibGUgdG8gYSBnaXZlbiAgKi8KKyAgLyogICAgZXhwcmVzc2lvbidzIHZhbHVlICh1c3VhbGx5IGEgZnVuY3Rpb24gY2FsbCksIGFuZCBjb252ZXJ0IGl0IHRvIGEgICovCisgIC8qICAgIGJvb2xlYW4gd2hpY2ggaXMgc2V0IHdoZW5ldmVyIHRoZSB2YWx1ZSBpcyAhPSAwLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfU0VUX0VSUk9SCisjZGVmaW5lIEZUX1NFVF9FUlJPUiggZXhwcmVzc2lvbiApIFwKKyAgICAgICAgICAoICggZXJyb3IgPSAoZXhwcmVzc2lvbikgKSAhPSAwICkKKworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gRSBNIE8gUiBZICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoKKyAgICogIEMrKyByZWZ1c2VzIHRvIGhhbmRsZSBzdGF0ZW1lbnRzIGxpa2UgcCA9ICh2b2lkKilhbnl0aGluZywgd2l0aCBgcCcgYQorICAgKiAgdHlwZWQgcG9pbnRlci4gIFNpbmNlIHdlIGRvbid0IGhhdmUgYSBgdHlwZW9mJyBvcGVyYXRvciBpbiBzdGFuZGFyZAorICAgKiAgQysrLCB3ZSBoYXZlIHRvIHVzZSBhIHRlbXBsYXRlIHRvIGVtdWxhdGUgaXQuCisgICAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKKworICBleHRlcm4gIkMrKyIKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKgorICBjcGx1c3BsdXNfdHlwZW9mKCAgICAgICAgVCosCisgICAgICAgICAgICAgICAgICAgIHZvaWQgICp2ICkKKyAgeworICAgIHJldHVybiBzdGF0aWNfY2FzdCA8VCo+ICggdiApOworICB9CisKKyNkZWZpbmUgRlRfQVNTSUdOUCggcCwgdmFsICkgIChwKSA9IGNwbHVzcGx1c190eXBlb2YoIChwKSwgKHZhbCkgKQorCisjZWxzZQorCisjZGVmaW5lIEZUX0FTU0lHTlAoIHAsIHZhbCApICAocCkgPSAodmFsKQorCisjZW5kaWYKKworCisKKyNpZmRlZiBGVF9ERUJVR19NRU1PUlkKKworICBGVF9CQVNFKCBjb25zdCBjaGFyKiApICBfZnRfZGVidWdfZmlsZTsKKyAgRlRfQkFTRSggbG9uZyApICAgICAgICAgX2Z0X2RlYnVnX2xpbmVubzsKKworI2RlZmluZSBGVF9ERUJVR19JTk5FUiggZXhwICkgICggX2Z0X2RlYnVnX2ZpbGUgICA9IF9fRklMRV9fLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZnRfZGVidWdfbGluZW5vID0gX19MSU5FX18sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHApICkKKworI2RlZmluZSBGVF9BU1NJR05QX0lOTkVSKCBwLCBleHAgKSAgKCBfZnRfZGVidWdfZmlsZSAgID0gX19GSUxFX18sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Z0X2RlYnVnX2xpbmVubyA9IF9fTElORV9fLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0FTU0lHTlAoIHAsIGV4cCApICkKKworI2Vsc2UgLyogIUZUX0RFQlVHX01FTU9SWSAqLworCisjZGVmaW5lIEZUX0RFQlVHX0lOTkVSKCBleHAgKSAgICAgICAoZXhwKQorI2RlZmluZSBGVF9BU1NJR05QX0lOTkVSKCBwLCBleHAgKSAgRlRfQVNTSUdOUCggcCwgZXhwICkKKworI2VuZGlmIC8qICFGVF9ERUJVR19NRU1PUlkgKi8KKworCisgIC8qCisgICAqICBUaGUgYWxsb2NhdGlvbiBmdW5jdGlvbnMgcmV0dXJuIGEgcG9pbnRlciwgYW5kIHRoZSBlcnJvciBjb2RlCisgICAqICBpcyB3cml0dGVuIHRvIHRocm91Z2ggdGhlIGBwX2Vycm9yJyBwYXJhbWV0ZXIuICBTZWUgYmVsb3cgZm9yCisgICAqICBmb3IgZG9jdW1lbnRhdGlvbi4KKyAgICovCisKKyAgRlRfQkFTRSggRlRfUG9pbnRlciApCisgIGZ0X21lbV9hbGxvYyggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBzaXplLAorICAgICAgICAgICAgICAgIEZUX0Vycm9yICAqcF9lcnJvciApOworCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQorICBmdF9tZW1fcWFsbG9jKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBzaXplLAorICAgICAgICAgICAgICAgICBGVF9FcnJvciAgKnBfZXJyb3IgKTsKKworICBGVF9CQVNFKCBGVF9Qb2ludGVyICkKKyAgZnRfbWVtX3JlYWxsb2MoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBpdGVtX3NpemUsCisgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGN1cl9jb3VudCwKKyAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgbmV3X2NvdW50LAorICAgICAgICAgICAgICAgICAgdm9pZCogICAgICBibG9jaywKKyAgICAgICAgICAgICAgICAgIEZUX0Vycm9yICAqcF9lcnJvciApOworCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQorICBmdF9tZW1fcXJlYWxsb2MoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgaXRlbV9zaXplLAorICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgY3VyX2NvdW50LAorICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgbmV3X2NvdW50LAorICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgYmxvY2ssCisgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IgICpwX2Vycm9yICk7CisjaWZkZWYgX0RFQlVHCisvLyNkZWZpbmUgX1hZUV9NRU1fREVCVUcKKyNlbmRpZgorICAKKyNpZmRlZiBfWFlRX01FTV9ERUJVRwkJLyogWFlRICovCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQorCSAgZnRfbWVtX2FsbG9jZGVidWcoIEZUX01lbW9yeSAgbWVtb3J5LAorCSAgRlRfTG9uZyAgICBzaXplLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwgaW50IGxpbmUsCisJICBGVF9FcnJvciAgKnBfZXJyb3IgKTsKKyAgCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQorCSAgZnRfbWVtX3FhbGxvY2RlYnVnKCBGVF9NZW1vcnkgIG1lbW9yeSwKKwkgIEZUX0xvbmcgICAgc2l6ZSwgY29uc3QgY2hhciogZmlsZW5hbWUsIGludCBsaW5lLAorCSAgRlRfRXJyb3IgICpwX2Vycm9yICk7CisgIAorICBGVF9CQVNFKCBGVF9Qb2ludGVyICkKKwkgIGZ0X21lbV9yZWFsbG9jZGVidWcoIEZUX01lbW9yeSAgbWVtb3J5LAorCSAgRlRfTG9uZyAgICBpdGVtX3NpemUsCisJICBGVF9Mb25nICAgIGN1cl9jb3VudCwKKwkgIEZUX0xvbmcgICAgbmV3X2NvdW50LAorCSAgdm9pZCogICAgICBibG9jaywgY29uc3QgY2hhciogZmlsZW5hbWUsIGludCBsaW5lLAorCSAgRlRfRXJyb3IgICpwX2Vycm9yICk7CisgIAorICBGVF9CQVNFKCBGVF9Qb2ludGVyICkKKwkgIGZ0X21lbV9xcmVhbGxvY2RlYnVnKCBGVF9NZW1vcnkgIG1lbW9yeSwKKwkgIEZUX0xvbmcgICAgaXRlbV9zaXplLAorCSAgRlRfTG9uZyAgICBjdXJfY291bnQsCisJICBGVF9Mb25nICAgIG5ld19jb3VudCwKKwkgIHZvaWQqICAgICAgYmxvY2ssIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBpbnQgbGluZSwKKwkgIEZUX0Vycm9yICAqcF9lcnJvciApOworI2VuZGlmCisKKworICBGVF9CQVNFKCB2b2lkICkKKyAgZnRfbWVtX2ZyZWUoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgICBjb25zdCB2b2lkKiAgUCApOworCisKKyNkZWZpbmUgRlRfTUVNX0ZSRUUoIHB0ciApICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9CRUdJTl9TVE1OVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZ0X21lbV9mcmVlKCBtZW1vcnksIChwdHIpICk7IFwKKyAgICAgICAgICAgIChwdHIpID0gTlVMTDsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9FTkRfU1RNTlQKKyNpZm5kZWYgX1hZUV9NRU1fREVCVUcKKyNkZWZpbmUgRlRfTUVNX0FMTE9DKCBwdHIsIHNpemUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQkgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX2FsbG9jKCBtZW1vcnksIChzaXplKSwgJmVycm9yICkgKQorCisKKyNkZWZpbmUgRlRfTUVNX1JFQUxMT0MoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvYyggbWVtb3J5LCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfTG9uZykoY3Vyc3opLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKG5ld3N6KSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdHIpLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1FBTExPQyggcHRyLCBzaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3FhbGxvYyggbWVtb3J5LCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfTG9uZykoc2l6ZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvciApICkKKworI2RlZmluZSBGVF9NRU1fUVJFQUxMT0MoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2MoIG1lbW9yeSwgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfTG9uZykoY3Vyc3opLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShuZXdzeiksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX0FMTE9DX01VTFQoIHB0ciwgY291bnQsIGl0ZW1fc2l6ZSApICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3JlYWxsb2MoIG1lbW9yeSwgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKGl0ZW1fc2l6ZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShjb3VudCksICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1JFQUxMT0NfTVVMVCggcHRyLCBvbGRjbnQsIG5ld2NudCwgaXRtc3ogKSAgICAgICAgICAgXAorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3JlYWxsb2MoIG1lbW9yeSwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKGl0bXN6KSwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfTG9uZykob2xkY250KSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShuZXdjbnQpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1FBTExPQ19NVUxUKCBwdHIsIGNvdW50LCBpdGVtX3NpemUgKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9xcmVhbGxvYyggbWVtb3J5LCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKGl0ZW1fc2l6ZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpKGNvdW50KSwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yICkgKQorCisjZGVmaW5lIEZUX01FTV9RUkVBTExPQ19NVUxUKCBwdHIsIG9sZGNudCwgbmV3Y250LCBpdG1zeikgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2MoIG1lbW9yeSwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShpdG1zeiksICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShvbGRjbnQpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShuZXdjbnQpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdHIpLCAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvciApICkKKyNkZWZpbmUgRlRfTUVNX05FV19BUlJBWSggcHRyLCBjb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvYyggbWVtb3J5LCBzaXplb2YgKCAqKHB0cikgKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIChjb3VudCksICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1JFTkVXX0FSUkFZKCBwdHIsIGN1cnN6LCBuZXdzeiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvYyggbWVtb3J5LCBzaXplb2YgKCAqKHB0cikgKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJzeiksIChuZXdzeiksICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHRyKSwgJmVycm9yICkgKQorCisjZGVmaW5lIEZUX01FTV9RTkVXX0FSUkFZKCBwdHIsIGNvdW50ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9xcmVhbGxvYyggbWVtb3J5LCBzaXplb2YgKCAqKHB0cikgKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAoY291bnQpLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICZlcnJvciApICkKKworI2RlZmluZSBGVF9NRU1fUVJFTkVXX0FSUkFZKCBwdHIsIGN1cnN6LCBuZXdzeiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2MoIG1lbW9yeSwgc2l6ZW9mICggKihwdHIpICksIFwKKwkoY3Vyc3opLCAobmV3c3opLCAgICAgICAgICBcCisgIChwdHIpLCAmZXJyb3IgKSApCisgIAorI2Vsc2UKKyNkZWZpbmUgRlRfTUVNX0FMTE9DKCBwdHIsIHNpemUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9hbGxvY2RlYnVnKCBtZW1vcnksIChzaXplKSwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApCisgIAorI2RlZmluZSBGVF9NRU1fUkVBTExPQyggcHRyLCBjdXJzeiwgbmV3c3ogKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9yZWFsbG9jZGVidWcoIG1lbW9yeSwgMSwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnN6KSwgKG5ld3N6KSwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdHIpLCBfX0ZJTEVfXywgX19MSU5FX18sICZlcnJvciApICkKKworI2RlZmluZSBGVF9NRU1fUUFMTE9DKCBwdHIsIHNpemUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3FhbGxvY2RlYnVnKCBtZW1vcnksIChzaXplKSwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1FSRUFMTE9DKCBwdHIsIGN1cnN6LCBuZXdzeiApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9xcmVhbGxvY2RlYnVnKCBtZW1vcnksIDEsICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJzeiksIChuZXdzeiksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksIF9fRklMRV9fLCBfX0xJTkVfXywgJmVycm9yICkgKQorCisjZGVmaW5lIEZUX01FTV9BTExPQ19NVUxUKCBwdHIsIGNvdW50LCBpdGVtX3NpemUgKSAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3JlYWxsb2NkZWJ1ZyggbWVtb3J5LCAoaXRlbV9zaXplKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIChjb3VudCksICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBfX0ZJTEVfXywgX19MSU5FX18sICZlcnJvciApICkKKworI2RlZmluZSBGVF9NRU1fUkVBTExPQ19NVUxUKCBwdHIsIG9sZGNudCwgbmV3Y250LCBpdG1zeiApICAgICAgICAgICAgXAorICAgICAgICAgIEZUX0FTU0lHTlBfSU5ORVIoIHB0ciwgZnRfbWVtX3JlYWxsb2NkZWJ1ZyggbWVtb3J5LCAoaXRtc3opLCAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZGNudCksIChuZXdjbnQpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksIF9fRklMRV9fLCBfX0xJTkVfXywgJmVycm9yICkgKQorCisjZGVmaW5lIEZUX01FTV9RQUxMT0NfTVVMVCggcHRyLCBjb3VudCwgaXRlbV9zaXplICkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9xcmVhbGxvY2RlYnVnKCBtZW1vcnksIChpdGVtX3NpemUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIChjb3VudCksICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1FSRUFMTE9DX01VTFQoIHB0ciwgb2xkY250LCBuZXdjbnQsIGl0bXN6KSAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2NkZWJ1ZyggbWVtb3J5LCAoaXRtc3opLCAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGRjbnQpLCAobmV3Y250KSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHRyKSwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbWFjcm9zIGV4cGVjdCB0aGF0IHRoZWlyIHBvaW50ZXIgYXJndW1lbnQgaXMgICovCisgIC8qIF90eXBlZF8gaW4gb3JkZXIgdG8gYXV0b21hdGljYWxseSBjb21wdXRlIGFycmF5IGVsZW1lbnQgc2l6ZXMuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2RlZmluZSBGVF9NRU1fTkVXX0FSUkFZKCBwdHIsIGNvdW50ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9yZWFsbG9jZGVidWcoIG1lbW9yeSwgc2l6ZW9mICggKihwdHIpICksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAoY291bnQpLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgX19GSUxFX18sIF9fTElORV9fLCAmZXJyb3IgKSApCisKKyNkZWZpbmUgRlRfTUVNX1JFTkVXX0FSUkFZKCBwdHIsIGN1cnN6LCBuZXdzeiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcmVhbGxvY2RlYnVnKCBtZW1vcnksIHNpemVvZiAoICoocHRyKSApLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnN6KSwgKG5ld3N6KSwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdHIpLCBfX0ZJTEVfXywgX19MSU5FX18sICZlcnJvciApICkKKworI2RlZmluZSBGVF9NRU1fUU5FV19BUlJBWSggcHRyLCBjb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfQVNTSUdOUF9JTk5FUiggcHRyLCBmdF9tZW1fcXJlYWxsb2NkZWJ1ZyggbWVtb3J5LCBzaXplb2YgKCAqKHB0cikgKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAoY291bnQpLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIF9fRklMRV9fLCBfX0xJTkVfXywgJmVycm9yICkgKQorCisjZGVmaW5lIEZUX01FTV9RUkVORVdfQVJSQVkoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9BU1NJR05QX0lOTkVSKCBwdHIsIGZ0X21lbV9xcmVhbGxvY2RlYnVnKCBtZW1vcnksIHNpemVvZiAoICoocHRyKSApLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJzeiksIChuZXdzeiksICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB0ciksIF9fRklMRV9fLCBfX0xJTkVfXywgJmVycm9yICkgKQorCisjZW5kaWYKKworI2RlZmluZSBGVF9NRU1fTkVXKCBwdHIgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fQUxMT0MoIHB0ciwgc2l6ZW9mICggKihwdHIpICkgKQorCisjZGVmaW5lIEZUX01FTV9RTkVXKCBwdHIgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fUUFMTE9DKCBwdHIsIHNpemVvZiAoICoocHRyKSApICkKKworI2RlZmluZSBGVF9NRU1fU0VUX0VSUk9SKCBjb25kICkgICggKGNvbmQpLCBlcnJvciAhPSAwICkKKworCisjZGVmaW5lIEZUX01FTV9TRVQoIGRlc3QsIGJ5dGUsIGNvdW50ICkgICAgIGZ0X21lbXNldCggZGVzdCwgYnl0ZSwgY291bnQgKQorCisjZGVmaW5lIEZUX01FTV9DT1BZKCBkZXN0LCBzb3VyY2UsIGNvdW50ICkgIGZ0X21lbWNweSggZGVzdCwgc291cmNlLCBjb3VudCApCisKKyNkZWZpbmUgRlRfTUVNX01PVkUoIGRlc3QsIHNvdXJjZSwgY291bnQgKSAgZnRfbWVtbW92ZSggZGVzdCwgc291cmNlLCBjb3VudCApCisKKworI2RlZmluZSBGVF9NRU1fWkVSTyggZGVzdCwgY291bnQgKSAgRlRfTUVNX1NFVCggZGVzdCwgMCwgY291bnQgKQorCisjZGVmaW5lIEZUX1pFUk8oIHAgKSAgICAgICAgICAgICAgICBGVF9NRU1fWkVSTyggcCwgc2l6ZW9mICggKihwKSApICkKKworCisjZGVmaW5lIEZUX0FSUkFZX1pFUk8oIGRlc3QsIGNvdW50ICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1pFUk8oIGRlc3QsIChjb3VudCkgKiBzaXplb2YgKCAqKGRlc3QpICkgKQorCisjZGVmaW5lIEZUX0FSUkFZX0NPUFkoIGRlc3QsIHNvdXJjZSwgY291bnQgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fQ09QWSggZGVzdCwgc291cmNlLCAoY291bnQpICogc2l6ZW9mICggKihkZXN0KSApICkKKworI2RlZmluZSBGVF9BUlJBWV9NT1ZFKCBkZXN0LCBzb3VyY2UsIGNvdW50ICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX01PVkUoIGRlc3QsIHNvdXJjZSwgKGNvdW50KSAqIHNpemVvZiAoICooZGVzdCkgKSApCisKKworICAvKgorICAgKiAgUmV0dXJuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhZGRyZXNzYWJsZSBlbGVtZW50cyBpbiBhbiBhcnJheS4KKyAgICogIFdlIGxpbWl0IG91cnNlbHZlcyB0byBJTlRfTUFYLCByYXRoZXIgdGhhbiBVSU5UX01BWCwgdG8gYXZvaWQKKyAgICogIGFueSBwcm9ibGVtcy4KKyAgICovCisjZGVmaW5lIEZUX0FSUkFZX01BWCggcHRyICkgICAgICAgICAgICggRlRfSU5UX01BWCAvIHNpemVvZiAoICoocHRyKSApICkKKworI2RlZmluZSBGVF9BUlJBWV9DSEVDSyggcHRyLCBjb3VudCApICAoIChjb3VudCkgPD0gRlRfQVJSQVlfTUFYKCBwdHIgKSApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG1hY3JvcyBleHBlY3QgdGhhdCB0aGVpciBwb2ludGVyIGFyZ3VtZW50IGlzICAqLworICAvKiBfdHlwZWRfIGluIG9yZGVyIHRvIGF1dG9tYXRpY2FsbHkgY29tcHV0ZSBhcnJheSBlbGVtZW50IHNpemVzLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgRlRfQUxMT0MoIHB0ciwgc2l6ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9BTExPQyggcHRyLCBzaXplICkgKQorCisjZGVmaW5lIEZUX1JFQUxMT0MoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX1JFQUxMT0MoIHB0ciwgY3Vyc3osIG5ld3N6ICkgKQorCisjZGVmaW5lIEZUX0FMTE9DX01VTFQoIHB0ciwgY291bnQsIGl0ZW1fc2l6ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9BTExPQ19NVUxUKCBwdHIsIGNvdW50LCBpdGVtX3NpemUgKSApCisKKyNkZWZpbmUgRlRfUkVBTExPQ19NVUxUKCBwdHIsIG9sZGNudCwgbmV3Y250LCBpdG1zeiApICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX1JFQUxMT0NfTVVMVCggcHRyLCBvbGRjbnQsICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2NudCwgaXRtc3ogKSApCisKKyNkZWZpbmUgRlRfUUFMTE9DKCBwdHIsIHNpemUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fU0VUX0VSUk9SKCBGVF9NRU1fUUFMTE9DKCBwdHIsIHNpemUgKSApCisKKyNkZWZpbmUgRlRfUVJFQUxMT0MoIHB0ciwgY3Vyc3osIG5ld3N6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX1FSRUFMTE9DKCBwdHIsIGN1cnN6LCBuZXdzeiApICkKKworI2RlZmluZSBGVF9RQUxMT0NfTVVMVCggcHRyLCBjb3VudCwgaXRlbV9zaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX1FBTExPQ19NVUxUKCBwdHIsIGNvdW50LCBpdGVtX3NpemUgKSApCisKKyNkZWZpbmUgRlRfUVJFQUxMT0NfTVVMVCggcHRyLCBvbGRjbnQsIG5ld2NudCwgaXRtc3ogKSAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9RUkVBTExPQ19NVUxUKCBwdHIsIG9sZGNudCwgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2NudCwgaXRtc3ogKSApCisKKyNkZWZpbmUgRlRfRlJFRSggcHRyICkgIEZUX01FTV9GUkVFKCBwdHIgKQorCisjZGVmaW5lIEZUX05FVyggcHRyICkgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9ORVcoIHB0ciApICkKKworI2RlZmluZSBGVF9ORVdfQVJSQVkoIHB0ciwgY291bnQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fU0VUX0VSUk9SKCBGVF9NRU1fTkVXX0FSUkFZKCBwdHIsIGNvdW50ICkgKQorCisjZGVmaW5lIEZUX1JFTkVXX0FSUkFZKCBwdHIsIGN1cmNudCwgbmV3Y250ICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX1JFTkVXX0FSUkFZKCBwdHIsIGN1cmNudCwgbmV3Y250ICkgKQorCisjZGVmaW5lIEZUX1FORVcoIHB0ciApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9RTkVXKCBwdHIgKSApCisKKyNkZWZpbmUgRlRfUU5FV19BUlJBWSggcHRyLCBjb3VudCApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfTUVNX1NFVF9FUlJPUiggRlRfTUVNX05FV19BUlJBWSggcHRyLCBjb3VudCApICkKKworI2RlZmluZSBGVF9RUkVORVdfQVJSQVkoIHB0ciwgY3VyY250LCBuZXdjbnQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9SRU5FV19BUlJBWSggcHRyLCBjdXJjbnQsIG5ld2NudCApICkKKworCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQorICBmdF9tZW1fc3RyZHVwKCBGVF9NZW1vcnkgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgc3RyLAorICAgICAgICAgICAgICAgICBGVF9FcnJvciAgICAqcF9lcnJvciApOworCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQorICBmdF9tZW1fZHVwKCBGVF9NZW1vcnkgICAgbWVtb3J5LAorICAgICAgICAgICAgICBjb25zdCB2b2lkKiAgYWRkcmVzcywKKyAgICAgICAgICAgICAgRlRfVUxvbmcgICAgIHNpemUsCisgICAgICAgICAgICAgIEZUX0Vycm9yICAgICpwX2Vycm9yICk7CisKKworI2RlZmluZSBGVF9NRU1fU1RSRFVQKCBkc3QsIHN0ciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKGRzdCkgPSAoY2hhciopZnRfbWVtX3N0cmR1cCggbWVtb3J5LCAoY29uc3QgY2hhciopKHN0ciksICZlcnJvciApCisKKyNkZWZpbmUgRlRfU1RSRFVQKCBkc3QsIHN0ciApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX01FTV9TRVRfRVJST1IoIEZUX01FTV9TVFJEVVAoIGRzdCwgc3RyICkgKQorCisjZGVmaW5lIEZUX01FTV9EVVAoIGRzdCwgYWRkcmVzcywgc2l6ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIChkc3QpID0gZnRfbWVtX2R1cCggbWVtb3J5LCAoYWRkcmVzcyksIChGVF9VTG9uZykoc2l6ZSksICZlcnJvciApCisKKyNkZWZpbmUgRlRfRFVQKCBkc3QsIGFkZHJlc3MsIHNpemUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9NRU1fU0VUX0VSUk9SKCBGVF9NRU1fRFVQKCBkc3QsIGFkZHJlc3MsIHNpemUgKSApCisKKworICAvKiBSZXR1cm4gPj0gMSBpZiBhIHRydW5jYXRpb24gb2NjdXJzLiAgICAgICAgICAgICovCisgIC8qIFJldHVybiAwIGlmIHRoZSBzb3VyY2Ugc3RyaW5nIGZpdHMgdGhlIGJ1ZmZlci4gKi8KKyAgLyogVGhpcyBpcyAqbm90KiB0aGUgc2FtZSBhcyBzdHJsY3B5KCkuICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9JbnQgKQorICBmdF9tZW1fc3RyY3B5biggY2hhciogICAgICAgIGRzdCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBzcmMsCisgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgc2l6ZSApOworCisjZGVmaW5lIEZUX1NUUkNQWU4oIGRzdCwgc3JjLCBzaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmdF9tZW1fc3RyY3B5biggKGNoYXIqKWRzdCwgKGNvbnN0IGNoYXIqKShzcmMpLCAoRlRfVUxvbmcpKHNpemUpICkKKworIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVE1FTU9SWV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZmN2RlMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oCkBAIC0wLDAgKzEsMTU2OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRvYmpzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBwcml2YXRlIGJhc2UgY2xhc3NlcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDYsIDIwMDgsIDIwMTAsIDIwMTItMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiBhbGwgaW50ZXJuYWwgRnJlZVR5cGUgY2xhc3Nlcy4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRPQkpTX0hfXworI2RlZmluZSBfX0ZUT0JKU19IX18KKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vZnRyZW5kZXIuaCIKKyNpbmNsdWRlICIuLi9mdHNpemVzLmgiCisjaW5jbHVkZSAiLi4vZnRsY2RmaWwuaCIKKyNpbmNsdWRlICJmdG1lbW9yeS5oIgorI2luY2x1ZGUgImZ0Z2xvYWRyLmgiCisjaW5jbHVkZSAiZnRkcml2ZXIuaCIKKyNpbmNsdWRlICJhdXRvaGludC5oIgorI2luY2x1ZGUgImZ0c2Vydi5oIgorI2luY2x1ZGUgImZ0cGljLmgiCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisjaW5jbHVkZSAiLi4vZnRpbmNyZW0uaCIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTb21lIGdlbmVyaWMgZGVmaW5pdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIFRSVUUKKyNkZWZpbmUgVFJVRSAgMQorI2VuZGlmCisKKyNpZm5kZWYgRkFMU0UKKyNkZWZpbmUgRkFMU0UgIDAKKyNlbmRpZgorCisjaWZuZGVmIE5VTEwKKyNkZWZpbmUgTlVMTCAgKHZvaWQqKTAKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWluIGFuZCBtYXggZnVuY3Rpb25zIG1pc3NpbmcgaW4gQy4gIEFzIHVzdWFsLCBiZSBjYXJlZnVsIG5vdCB0byAgKi8KKyAgLyogd3JpdGUgdGhpbmdzIGxpa2UgRlRfTUlOKCBhKyssIGIrKyApIHRvIGF2b2lkIHNpZGUgZWZmZWN0cy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9NSU4oIGEsIGIgKSAgKCAoYSkgPCAoYikgPyAoYSkgOiAoYikgKQorI2RlZmluZSBGVF9NQVgoIGEsIGIgKSAgKCAoYSkgPiAoYikgPyAoYSkgOiAoYikgKQorCisjZGVmaW5lIEZUX0FCUyggYSApICAgICAoIChhKSA8IDAgPyAtKGEpIDogKGEpICkKKworCisjZGVmaW5lIEZUX1BBRF9GTE9PUiggeCwgbiApICAoICh4KSAmIH4oKG4pLTEpICkKKyNkZWZpbmUgRlRfUEFEX1JPVU5EKCB4LCBuICkgIEZUX1BBRF9GTE9PUiggKHgpICsgKChuKS8yKSwgbiApCisjZGVmaW5lIEZUX1BBRF9DRUlMKCB4LCBuICkgICBGVF9QQURfRkxPT1IoICh4KSArICgobiktMSksIG4gKQorCisjZGVmaW5lIEZUX1BJWF9GTE9PUiggeCApICAgICAoICh4KSAmIH42MyApCisjZGVmaW5lIEZUX1BJWF9ST1VORCggeCApICAgICBGVF9QSVhfRkxPT1IoICh4KSArIDMyICkKKyNkZWZpbmUgRlRfUElYX0NFSUwoIHggKSAgICAgIEZUX1BJWF9GTE9PUiggKHgpICsgNjMgKQorCisKKyAgLyoKKyAgICogIFJldHVybiB0aGUgaGlnaGVzdCBwb3dlciBvZiAyIHRoYXQgaXMgPD0gdmFsdWU7IHRoaXMgY29ycmVzcG9uZCB0bworICAgKiAgdGhlIGhpZ2hlc3QgYml0IGluIGEgZ2l2ZW4gMzItYml0IHZhbHVlLgorICAgKi8KKyAgRlRfQkFTRSggRlRfVUludDMyICkKKyAgZnRfaGlnaHBvdzIoIEZUX1VJbnQzMiAgdmFsdWUgKTsKKworCisgIC8qCisgICAqICBjaGFyYWN0ZXIgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIC0tIHNpbmNlIHRoZXNlIGFyZSB1c2VkIHRvIHBhcnNlCisgICAqICBmb250IGZpbGVzLCB3ZSBtdXN0IG5vdCB1c2UgdGhvc2UgaW4gPGN0eXBlcy5oPiB3aGljaCBhcmUKKyAgICogIGxvY2FsZS1kZXBlbmRlbnQKKyAgICovCisjZGVmaW5lICBmdF9pc2RpZ2l0KCB4ICkgICAoICggKHVuc2lnbmVkKSh4KSAtICcwJyApIDwgMTBVICkKKworI2RlZmluZSAgZnRfaXN4ZGlnaXQoIHggKSAgKCAoICh1bnNpZ25lZCkoeCkgLSAnMCcgKSA8IDEwVSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKHVuc2lnbmVkKSh4KSAtICdhJyApIDwgNlUgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAodW5zaWduZWQpKHgpIC0gJ0EnICkgPCA2VSAgKQorCisgIC8qIHRoZSBuZXh0IHR3byBtYWNyb3MgYXNzdW1lIEFTQ0lJIHJlcHJlc2VudGF0aW9uICovCisjZGVmaW5lICBmdF9pc3VwcGVyKCB4ICkgICggKCAodW5zaWduZWQpKHgpIC0gJ0EnICkgPCAyNlUgKQorI2RlZmluZSAgZnRfaXNsb3dlciggeCApICAoICggKHVuc2lnbmVkKSh4KSAtICdhJyApIDwgMjZVICkKKworI2RlZmluZSAgZnRfaXNhbHBoYSggeCApICAoIGZ0X2lzdXBwZXIoIHggKSB8fCBmdF9pc2xvd2VyKCB4ICkgKQorI2RlZmluZSAgZnRfaXNhbG51bSggeCApICAoIGZ0X2lzZGlnaXQoIHggKSB8fCBmdF9pc2FscGhhKCB4ICkgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgQyBIIEEgUiBNIEEgUCBTICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qIGhhbmRsZSB0byBpbnRlcm5hbCBjaGFybWFwIG9iamVjdCAqLworICB0eXBlZGVmIHN0cnVjdCBGVF9DTWFwUmVjXyogICAgICAgICAgICAgIEZUX0NNYXA7CisKKyAgLyogaGFuZGxlIHRvIGNoYXJtYXAgY2xhc3Mgc3RydWN0dXJlICovCisgIHR5cGVkZWYgY29uc3Qgc3RydWN0IEZUX0NNYXBfQ2xhc3NSZWNfKiAgRlRfQ01hcF9DbGFzczsKKworICAvKiBpbnRlcm5hbCBjaGFybWFwIG9iamVjdCBzdHJ1Y3R1cmUgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0NNYXBSZWNfCisgIHsKKyAgICBGVF9DaGFyTWFwUmVjICBjaGFybWFwOworICAgIEZUX0NNYXBfQ2xhc3MgIGNsYXp6OworCisgIH0gRlRfQ01hcFJlYzsKKworICAvKiB0eXBlY2FzZSBhbnkgcG9pbnRlciB0byBhIGNoYXJtYXAgaGFuZGxlICovCisjZGVmaW5lIEZUX0NNQVAoIHggKSAgICAgICAgICAgICAgKChGVF9DTWFwKSggeCApKQorCisgIC8qIG9idmlvdXMgbWFjcm9zICovCisjZGVmaW5lIEZUX0NNQVBfUExBVEZPUk1fSUQoIHggKSAgRlRfQ01BUCggeCApLT5jaGFybWFwLnBsYXRmb3JtX2lkCisjZGVmaW5lIEZUX0NNQVBfRU5DT0RJTkdfSUQoIHggKSAgRlRfQ01BUCggeCApLT5jaGFybWFwLmVuY29kaW5nX2lkCisjZGVmaW5lIEZUX0NNQVBfRU5DT0RJTkcoIHggKSAgICAgRlRfQ01BUCggeCApLT5jaGFybWFwLmVuY29kaW5nCisjZGVmaW5lIEZUX0NNQVBfRkFDRSggeCApICAgICAgICAgRlRfQ01BUCggeCApLT5jaGFybWFwLmZhY2UKKworCisgIC8qIGNsYXNzIG1ldGhvZCBkZWZpbml0aW9ucyAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfQ01hcF9Jbml0RnVuYykoIEZUX0NNYXAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvaW50ZXIgIGluaXRfZGF0YSApOworCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX0NNYXBfRG9uZUZ1bmMpKCBGVF9DTWFwICBjbWFwICk7CisKKyAgdHlwZWRlZiBGVF9VSW50CisgICgqRlRfQ01hcF9DaGFySW5kZXhGdW5jKSggRlRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlICk7CisKKyAgdHlwZWRlZiBGVF9VSW50CisgICgqRlRfQ01hcF9DaGFyTmV4dEZ1bmMpKCBGVF9DTWFwICAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAqYWNoYXJfY29kZSApOworCisgIHR5cGVkZWYgRlRfVUludAorICAoKkZUX0NNYXBfQ2hhclZhckluZGV4RnVuYykoIEZUX0NNYXAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9DTWFwICAgIHVuaWNvZGVfY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIGNoYXJfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIHZhcmlhbnRfc2VsZWN0b3IgKTsKKworICB0eXBlZGVmIEZUX0Jvb2wKKyAgKCpGVF9DTWFwX0NoYXJWYXJJc0RlZmF1bHRGdW5jKSggRlRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIGNoYXJfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICB2YXJpYW50X3NlbGVjdG9yICk7CisKKyAgdHlwZWRlZiBGVF9VSW50MzIgKgorICAoKkZUX0NNYXBfVmFyaWFudExpc3RGdW5jKSggRlRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW0gKTsKKworICB0eXBlZGVmIEZUX1VJbnQzMiAqCisgICgqRlRfQ01hcF9DaGFyVmFyaWFudExpc3RGdW5jKSggRlRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlICk7CisKKyAgdHlwZWRlZiBGVF9VSW50MzIgKgorICAoKkZUX0NNYXBfVmFyaWFudENoYXJMaXN0RnVuYykoIEZUX0NNYXAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIHZhcmlhbnRfc2VsZWN0b3IgKTsKKworCisgIHR5cGVkZWYgc3RydWN0ICBGVF9DTWFwX0NsYXNzUmVjXworICB7CisgICAgRlRfVUxvbmcgICAgICAgICAgICAgICBzaXplOworICAgIEZUX0NNYXBfSW5pdEZ1bmMgICAgICAgaW5pdDsKKyAgICBGVF9DTWFwX0RvbmVGdW5jICAgICAgIGRvbmU7CisgICAgRlRfQ01hcF9DaGFySW5kZXhGdW5jICBjaGFyX2luZGV4OworICAgIEZUX0NNYXBfQ2hhck5leHRGdW5jICAgY2hhcl9uZXh0OworCisgICAgLyogU3Vic2VxdWVudCBlbnRyaWVzIGFyZSBzcGVjaWFsIG9uZXMgZm9yIGZvcm1hdCAxNCAtLSB0aGUgdmFyaWFudCAqLworICAgIC8qIHNlbGVjdG9yIHN1YnRhYmxlIHdoaWNoIGJlaGF2ZXMgbGlrZSBubyBvdGhlciAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIEZUX0NNYXBfQ2hhclZhckluZGV4RnVuYyAgICAgIGNoYXJfdmFyX2luZGV4OworICAgIEZUX0NNYXBfQ2hhclZhcklzRGVmYXVsdEZ1bmMgIGNoYXJfdmFyX2RlZmF1bHQ7CisgICAgRlRfQ01hcF9WYXJpYW50TGlzdEZ1bmMgICAgICAgdmFyaWFudF9saXN0OworICAgIEZUX0NNYXBfQ2hhclZhcmlhbnRMaXN0RnVuYyAgIGNoYXJ2YXJpYW50X2xpc3Q7CisgICAgRlRfQ01hcF9WYXJpYW50Q2hhckxpc3RGdW5jICAgdmFyaWFudGNoYXJfbGlzdDsKKworICB9IEZUX0NNYXBfQ2xhc3NSZWM7CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFQ0xBUkVfQ01BUF9DTEFTUyggY2xhc3NfICkgICAgICAgICAgICAgIFwKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUgY29uc3QgIEZUX0NNYXBfQ2xhc3NSZWMgY2xhc3NfOworCisjZGVmaW5lIEZUX0RFRklORV9DTUFQX0NMQVNTKCAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2hhcl9pbmRleF8sICAgICAgICAgICAgICBcCisgICAgICAgICAgY2hhcl9uZXh0XywgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2hhcl92YXJfaW5kZXhfLCAgICAgICAgICBcCisgICAgICAgICAgY2hhcl92YXJfZGVmYXVsdF8sICAgICAgICBcCisgICAgICAgICAgdmFyaWFudF9saXN0XywgICAgICAgICAgICBcCisgICAgICAgICAgY2hhcnZhcmlhbnRfbGlzdF8sICAgICAgICBcCisgICAgICAgICAgdmFyaWFudGNoYXJfbGlzdF8gKSAgICAgICBcCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRiAgICAgICAgICAgICBcCisgIGNvbnN0IEZUX0NNYXBfQ2xhc3NSZWMgIGNsYXNzXyA9ICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2hhcl9pbmRleF8sICAgICAgICAgICAgICAgICAgICBcCisgICAgY2hhcl9uZXh0XywgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2hhcl92YXJfaW5kZXhfLCAgICAgICAgICAgICAgICBcCisgICAgY2hhcl92YXJfZGVmYXVsdF8sICAgICAgICAgICAgICBcCisgICAgdmFyaWFudF9saXN0XywgICAgICAgICAgICAgICAgICBcCisgICAgY2hhcnZhcmlhbnRfbGlzdF8sICAgICAgICAgICAgICBcCisgICAgdmFyaWFudGNoYXJfbGlzdF8gICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVDTEFSRV9DTUFQX0NMQVNTKCBjbGFzc18gKSAgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgbGlicmFyeSwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9DTWFwX0NsYXNzUmVjKiAgY2xhenogKTsKKworI2RlZmluZSBGVF9ERUZJTkVfQ01BUF9DTEFTUyggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNpemVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNoYXJfaW5kZXhfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNoYXJfbmV4dF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNoYXJfdmFyX2luZGV4XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNoYXJfdmFyX2RlZmF1bHRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHZhcmlhbnRfbGlzdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNoYXJ2YXJpYW50X2xpc3RfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHZhcmlhbnRjaGFyX2xpc3RfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICBsaWJyYXJ5LCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0NNYXBfQ2xhc3NSZWMqICBjbGF6eiApICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1VOVVNFRCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5zaXplICAgICAgICAgICAgID0gc2l6ZV87ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5pbml0ICAgICAgICAgICAgID0gaW5pdF87ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5kb25lICAgICAgICAgICAgID0gZG9uZV87ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5jaGFyX2luZGV4ICAgICAgID0gY2hhcl9pbmRleF87ICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5jaGFyX25leHQgICAgICAgID0gY2hhcl9uZXh0XzsgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5jaGFyX3Zhcl9pbmRleCAgID0gY2hhcl92YXJfaW5kZXhfOyAgICAgICAgICAgXAorICAgIGNsYXp6LT5jaGFyX3Zhcl9kZWZhdWx0ID0gY2hhcl92YXJfZGVmYXVsdF87ICAgICAgICAgXAorICAgIGNsYXp6LT52YXJpYW50X2xpc3QgICAgID0gdmFyaWFudF9saXN0XzsgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5jaGFydmFyaWFudF9saXN0ID0gY2hhcnZhcmlhbnRfbGlzdF87ICAgICAgICAgXAorICAgIGNsYXp6LT52YXJpYW50Y2hhcl9saXN0ID0gdmFyaWFudGNoYXJfbGlzdF87ICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisKKyAgLyogY3JlYXRlIGEgbmV3IGNoYXJtYXAgYW5kIGFkZCBpdCB0byBjaGFybWFwLT5mYWNlICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfQ01hcF9OZXcoIEZUX0NNYXBfQ2xhc3MgIGNsYXp6LAorICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgICAgaW5pdF9kYXRhLAorICAgICAgICAgICAgICAgRlRfQ2hhck1hcCAgICAgY2hhcm1hcCwKKyAgICAgICAgICAgICAgIEZUX0NNYXAgICAgICAgKmFjbWFwICk7CisKKyAgLyogZGVzdHJveSBhIGNoYXJtYXAgYW5kIHJlbW92ZSBpdCBmcm9tIGZhY2UncyBsaXN0ICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9DTWFwX0RvbmUoIEZUX0NNYXAgIGNtYXAgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0ZhY2VfSW50ZXJuYWxSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBpbnRlcm5hbCBmaWVsZHMgb2YgZWFjaCBGVF9GYWNlICAgICAgICAqLworICAvKiAgICBvYmplY3QuICBUaGVzZSBmaWVsZHMgbWF5IGNoYW5nZSBiZXR3ZWVuIGRpZmZlcmVudCByZWxlYXNlcyBvZiAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X3BvaW50cyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHBvaW50cyB1c2VkIHRvIHN0b3JlIHRoZSB2ZWN0b3JpYWwgb3V0bGluZSAqLworICAvKiAgICAgIG9mIGFueSBnbHlwaCBpbiB0aGlzIGZhY2UuICBJZiB0aGlzIHZhbHVlIGNhbm5vdCBiZSBrbm93biBpbiAgICAgKi8KKyAgLyogICAgICBhZHZhbmNlLCBvciBpZiB0aGUgZmFjZSBpc24ndCBzY2FsYWJsZSwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIDAuICovCisgIC8qICAgICAgT25seSByZWxldmFudCBmb3Igc2NhbGFibGUgZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X2NvbnRvdXJzIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnRvdXJzIHVzZWQgdG8gc3RvcmUgdGhlIHZlY3RvcmlhbCAgICAgICAqLworICAvKiAgICAgIG91dGxpbmUgb2YgYW55IGdseXBoIGluIHRoaXMgZmFjZS4gIElmIHRoaXMgdmFsdWUgY2Fubm90IGJlICAgICAgKi8KKyAgLyogICAgICBrbm93biBpbiBhZHZhbmNlLCBvciBpZiB0aGUgZmFjZSBpc24ndCBzY2FsYWJsZSwgdGhpcyBzaG91bGQgYmUgICovCisgIC8qICAgICAgc2V0IHRvIDAuICBPbmx5IHJlbGV2YW50IGZvciBzY2FsYWJsZSBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHJhbnNmb3JtX21hdHJpeCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSAyeDIgbWF0cml4IG9mIDE2LjE2IGNvZWZmaWNpZW50cyB1c2VkIHRvIHRyYW5zZm9ybSBnbHlwaCAgICAgICAqLworICAvKiAgICAgIG91dGxpbmVzIGFmdGVyIHRoZXkgYXJlIGxvYWRlZCBmcm9tIHRoZSBmb250LiAgT25seSB1c2VkIGJ5IHRoZSAgKi8KKyAgLyogICAgICBjb252ZW5pZW5jZSBmdW5jdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0cmFuc2Zvcm1fZGVsdGEgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIHRyYW5zbGF0aW9uIHZlY3RvciB1c2VkIHRvIHRyYW5zZm9ybSBnbHlwaCBvdXRsaW5lcyBhZnRlciB0aGV5ICovCisgIC8qICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBmb250LiAgT25seSB1c2VkIGJ5IHRoZSBjb252ZW5pZW5jZSAgICAgICAgICAqLworICAvKiAgICAgIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRyYW5zZm9ybV9mbGFncyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFNvbWUgZmxhZ3MgdXNlZCB0byBjbGFzc2lmeSB0aGUgdHJhbnNmb3JtLiAgT25seSB1c2VkIGJ5IHRoZSAgICAgKi8KKyAgLyogICAgICBjb252ZW5pZW5jZSBmdW5jdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzZXJ2aWNlcyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIGNhY2hlIGZvciBmcmVxdWVudGx5IHVzZWQgc2VydmljZXMuICBJdCBzaG91bGQgYmUgb25seSAgICAgICAgICovCisgIC8qICAgICAgYWNjZXNzZWQgd2l0aCB0aGUgbWFjcm8gYEZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UnLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW5jcmVtZW50YWxfaW50ZXJmYWNlIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgSWYgbm9uLW51bGwsIHRoZSBpbnRlcmZhY2UgdGhyb3VnaCB3aGljaCBnbHlwaCBkYXRhIGFuZCBtZXRyaWNzICAqLworICAvKiAgICAgIGFyZSBsb2FkZWQgaW5jcmVtZW50YWxseSBmb3IgZmFjZXMgdGhhdCBkbyBub3QgcHJvdmlkZSBhbGwgb2YgICAgKi8KKyAgLyogICAgICB0aGlzIGRhdGEgd2hlbiBmaXJzdCBvcGVuZWQuICBUaGlzIGZpZWxkIGV4aXN0cyBvbmx5IGlmICAgICAgICAgICovCisgIC8qICAgICAgQEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgaXMgZGVmaW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaWdub3JlX3VucGF0ZW50ZWRfaGludGVyIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhpcyBib29sZWFuIGZsYWcgaW5zdHJ1Y3RzIHRoZSBnbHlwaCBsb2FkZXIgdG8gaWdub3JlIHRoZSAgICAgICAqLworICAvKiAgICAgIG5hdGl2ZSBmb250IGhpbnRlciwgaWYgb25lIGlzIGZvdW5kLiAgVGhpcyBpcyBleGNsdXNpdmVseSB1c2VkICAgKi8KKyAgLyogICAgICBpbiB0aGUgY2FzZSB3aGVuIHRoZSB1bnBhdGVudGVkIGhpbnRlciBpcyBjb21waWxlZCB3aXRoaW4gdGhlICAgICovCisgIC8qICAgICAgbGlicmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmVmY291bnQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSBjb3VudGVyIGluaXRpYWxpemVkIHRvfjEgYXQgdGhlIHRpbWUgYW4gQEZUX0ZhY2Ugc3RydWN0dXJlIGlzICAqLworICAvKiAgICAgIGNyZWF0ZWQuICBARlRfUmVmZXJlbmNlX0ZhY2UgaW5jcmVtZW50cyB0aGlzIGNvdW50ZXIsIGFuZCAgICAgICAgKi8KKyAgLyogICAgICBARlRfRG9uZV9GYWNlIG9ubHkgZGVzdHJveXMgYSBmYWNlIGlmIHRoZSBjb3VudGVyIGlzfjEsICAgICAgICAgICovCisgIC8qICAgICAgb3RoZXJ3aXNlIGl0IHNpbXBseSBkZWNyZW1lbnRzIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0ZhY2VfSW50ZXJuYWxSZWNfCisgIHsKKyAgICBGVF9NYXRyaXggICAgICAgICAgIHRyYW5zZm9ybV9tYXRyaXg7CisgICAgRlRfVmVjdG9yICAgICAgICAgICB0cmFuc2Zvcm1fZGVsdGE7CisgICAgRlRfSW50ICAgICAgICAgICAgICB0cmFuc2Zvcm1fZmxhZ3M7CisKKyAgICBGVF9TZXJ2aWNlQ2FjaGVSZWMgIHNlcnZpY2VzOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorICAgIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZVJlYyogIGluY3JlbWVudGFsX2ludGVyZmFjZTsKKyNlbmRpZgorCisgICAgRlRfQm9vbCAgICAgICAgICAgICBpZ25vcmVfdW5wYXRlbnRlZF9oaW50ZXI7CisgICAgRlRfSW50ICAgICAgICAgICAgICByZWZjb3VudDsKKworICB9IEZUX0ZhY2VfSW50ZXJuYWxSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TbG90X0ludGVybmFsUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgaW50ZXJuYWwgZmllbGRzIG9mIGVhY2ggRlRfR2x5cGhTbG90ICAgKi8KKyAgLyogICAgb2JqZWN0LiAgVGhlc2UgZmllbGRzIG1heSBjaGFuZ2UgYmV0d2VlbiBkaWZmZXJlbnQgcmVsZWFzZXMgb2YgICAgICovCisgIC8qICAgIEZyZWVUeXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRlciAgICAgICAgICAgIDo6IFRoZSBnbHlwaCBsb2FkZXIgb2JqZWN0IHVzZWQgdG8gbG9hZCBvdXRsaW5lcyAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBnbHlwaCBzbG90LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZsYWdzICAgICAgICAgICAgIDo6IFBvc3NpYmxlIHZhbHVlcyBhcmUgemVybyBvciAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBGVF9HTFlQSF9PV05fQklUTUFQLiAgVGhlIGxhdHRlciBpbmRpY2F0ZXMgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgRlRfR2x5cGhTbG90IHN0cnVjdHVyZSBvd25zIHRoZSAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcCBidWZmZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfdHJhbnNmb3JtZWQgOjogQm9vbGVhbi4gIFNldCB0byBUUlVFIHdoZW4gdGhlIGxvYWRlZCBnbHlwaCAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgdHJhbnNmb3JtZWQgdGhyb3VnaCBhIHNwZWNpZmljICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBmb250IHRyYW5zZm9ybWF0aW9uLiAgVGhpcyBpcyBfbm90XyB0aGUgc2FtZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIGZhY2UgdHJhbnNmb3JtIHNldCB0aHJvdWdoICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NldF9UcmFuc2Zvcm0oKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfbWF0cml4ICAgICAgOjogVGhlIDJ4MiBtYXRyaXggY29ycmVzcG9uZGluZyB0byB0aGUgZ2x5cGggICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWF0aW9uLCBpZiBuZWNlc3NhcnkuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfZGVsdGEgICAgICAgOjogVGhlIDJkIHRyYW5zbGF0aW9uIHZlY3RvciBjb3JyZXNwb25kaW5nIHRvICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBnbHlwaCB0cmFuc2Zvcm1hdGlvbiwgaWYgbmVjZXNzYXJ5LiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfaGludHMgICAgICAgOjogRm9ybWF0LXNwZWNpZmljIGdseXBoIGhpbnRzIG1hbmFnZW1lbnQuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIEZUX0dMWVBIX09XTl9CSVRNQVAgIDB4MQorCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TbG90X0ludGVybmFsUmVjXworICB7CisgICAgRlRfR2x5cGhMb2FkZXIgIGxvYWRlcjsKKyAgICBGVF9VSW50ICAgICAgICAgZmxhZ3M7CisgICAgRlRfQm9vbCAgICAgICAgIGdseXBoX3RyYW5zZm9ybWVkOworICAgIEZUX01hdHJpeCAgICAgICBnbHlwaF9tYXRyaXg7CisgICAgRlRfVmVjdG9yICAgICAgIGdseXBoX2RlbHRhOworICAgIHZvaWQqICAgICAgICAgICBnbHlwaF9oaW50czsKKworICB9IEZUX0dseXBoU2xvdF9JbnRlcm5hbFJlYzsKKworCisjaWYgMAorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1NpemVfSW50ZXJuYWxSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBpbnRlcm5hbCBmaWVsZHMgb2YgZWFjaCBGVF9TaXplICAgICAgICAqLworICAvKiAgICBvYmplY3QuICBDdXJyZW50bHksIGl0J3MgZW1wdHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHR5cGVkZWYgc3RydWN0ICBGVF9TaXplX0ludGVybmFsUmVjXworICB7CisgICAgLyogZW1wdHkgKi8KKworICB9IEZUX1NpemVfSW50ZXJuYWxSZWM7CisKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICBNIE8gRCBVIEwgRSBTICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTW9kdWxlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBtb2R1bGUgb2JqZWN0IGluc3RhbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2xhenogICA6OiBBIHBvaW50ZXIgdG8gdGhlIG1vZHVsZSdzIGNsYXNzLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6IEEgaGFuZGxlIHRvIHRoZSBwYXJlbnQgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSAgOjogQSBoYW5kbGUgdG8gdGhlIG1lbW9yeSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX01vZHVsZVJlY18KKyAgeworICAgIEZUX01vZHVsZV9DbGFzcyogIGNsYXp6OworICAgIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnk7CisgICAgRlRfTWVtb3J5ICAgICAgICAgbWVtb3J5OworCisgIH0gRlRfTW9kdWxlUmVjOworCisKKyAgLyogdHlwZWNhc3QgYW4gb2JqZWN0IHRvIGFuIEZUX01vZHVsZSAqLworI2RlZmluZSBGVF9NT0RVTEUoIHggKSAgICAgICAgICAoKEZUX01vZHVsZSkoIHggKSkKKyNkZWZpbmUgRlRfTU9EVUxFX0NMQVNTKCB4ICkgICAgRlRfTU9EVUxFKCB4ICktPmNsYXp6CisjZGVmaW5lIEZUX01PRFVMRV9MSUJSQVJZKCB4ICkgIEZUX01PRFVMRSggeCApLT5saWJyYXJ5CisjZGVmaW5lIEZUX01PRFVMRV9NRU1PUlkoIHggKSAgIEZUX01PRFVMRSggeCApLT5tZW1vcnkKKworCisjZGVmaW5lIEZUX01PRFVMRV9JU19EUklWRVIoIHggKSAgKCBGVF9NT0RVTEVfQ0xBU1MoIHggKS0+bW9kdWxlX2ZsYWdzICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTU9EVUxFX0ZPTlRfRFJJVkVSICkKKworI2RlZmluZSBGVF9NT0RVTEVfSVNfUkVOREVSRVIoIHggKSAgKCBGVF9NT0RVTEVfQ0xBU1MoIHggKS0+bW9kdWxlX2ZsYWdzICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NT0RVTEVfUkVOREVSRVIgKQorCisjZGVmaW5lIEZUX01PRFVMRV9JU19ISU5URVIoIHggKSAgKCBGVF9NT0RVTEVfQ0xBU1MoIHggKS0+bW9kdWxlX2ZsYWdzICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTU9EVUxFX0hJTlRFUiApCisKKyNkZWZpbmUgRlRfTU9EVUxFX0lTX1NUWUxFUiggeCApICAoIEZUX01PRFVMRV9DTEFTUyggeCApLT5tb2R1bGVfZmxhZ3MgJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NT0RVTEVfU1RZTEVSICkKKworI2RlZmluZSBGVF9EUklWRVJfSVNfU0NBTEFCTEUoIHggKSAgKCBGVF9NT0RVTEVfQ0xBU1MoIHggKS0+bW9kdWxlX2ZsYWdzICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NT0RVTEVfRFJJVkVSX1NDQUxBQkxFICkKKworI2RlZmluZSBGVF9EUklWRVJfVVNFU19PVVRMSU5FUyggeCApICAhKCBGVF9NT0RVTEVfQ0xBU1MoIHggKS0+bW9kdWxlX2ZsYWdzICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NT0RVTEVfRFJJVkVSX05PX09VVExJTkVTICkKKworI2RlZmluZSBGVF9EUklWRVJfSEFTX0hJTlRFUiggeCApICAoIEZUX01PRFVMRV9DTEFTUyggeCApLT5tb2R1bGVfZmxhZ3MgJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTU9EVUxFX0RSSVZFUl9IQVNfSElOVEVSICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9Nb2R1bGVfSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZpbmRzIGEgbW9kdWxlIGFuZCByZXR1cm5zIGl0cyBzcGVjaWZpYyBpbnRlcmZhY2UgYXMgYSB0eXBlbGVzcyAgICAqLworICAvKiAgICBwb2ludGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5ICAgICA6OiBBIGhhbmRsZSB0byB0aGUgbGlicmFyeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZV9uYW1lIDo6IFRoZSBtb2R1bGUncyBuYW1lIChhcyBhbiBBU0NJSSBzdHJpbmcpLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgbW9kdWxlLXNwZWNpZmljIGludGVyZmFjZSBpZiBhdmFpbGFibGUsIDAgb3RoZXJ3aXNlLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFlvdSBzaG91bGQgYmV0dGVyIGJlIGZhbWlsaWFyIHdpdGggRnJlZVR5cGUgaW50ZXJuYWxzIHRvIGtub3cgICAgICAqLworICAvKiAgICB3aGljaCBtb2R1bGUgdG8gbG9vayBmb3IsIGFuZCB3aGF0IGl0cyBpbnRlcmZhY2UgaXMgOi0pICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIGNvbnN0IHZvaWQqICkKKyAgRlRfR2V0X01vZHVsZV9JbnRlcmZhY2UoIEZUX0xpYnJhcnkgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIG1vZF9uYW1lICk7CisKKyAgRlRfQkFTRSggRlRfUG9pbnRlciApCisgIGZ0X21vZHVsZV9nZXRfc2VydmljZSggRlRfTW9kdWxlICAgIG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgc2VydmljZV9pZCApOworCisgIC8qICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgRiBBIEMgRSwgICBTIEkgWiBFICAgJiAgIEcgTCBZIFAgSCAgIFMgTCBPIFQgICBPIEIgSiBFIEMgVCBTICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyogYSBmZXcgbWFjcm9zIHVzZWQgdG8gcGVyZm9ybSBlYXN5IHR5cGVjYXN0cyB3aXRoIG1pbmltYWwgYnJhaW4gZGFtYWdlICovCisKKyNkZWZpbmUgRlRfRkFDRSggeCApICAgICAgICAgICgoRlRfRmFjZSkoeCkpCisjZGVmaW5lIEZUX1NJWkUoIHggKSAgICAgICAgICAoKEZUX1NpemUpKHgpKQorI2RlZmluZSBGVF9TTE9UKCB4ICkgICAgICAgICAgKChGVF9HbHlwaFNsb3QpKHgpKQorCisjZGVmaW5lIEZUX0ZBQ0VfRFJJVkVSKCB4ICkgICBGVF9GQUNFKCB4ICktPmRyaXZlcgorI2RlZmluZSBGVF9GQUNFX0xJQlJBUlkoIHggKSAgRlRfRkFDRV9EUklWRVIoIHggKS0+cm9vdC5saWJyYXJ5CisjZGVmaW5lIEZUX0ZBQ0VfTUVNT1JZKCB4ICkgICBGVF9GQUNFKCB4ICktPm1lbW9yeQorI2RlZmluZSBGVF9GQUNFX1NUUkVBTSggeCApICAgRlRfRkFDRSggeCApLT5zdHJlYW0KKworI2RlZmluZSBGVF9TSVpFX0ZBQ0UoIHggKSAgICAgRlRfU0laRSggeCApLT5mYWNlCisjZGVmaW5lIEZUX1NMT1RfRkFDRSggeCApICAgICBGVF9TTE9UKCB4ICktPmZhY2UKKworI2RlZmluZSBGVF9GQUNFX1NMT1QoIHggKSAgICAgRlRfRkFDRSggeCApLT5nbHlwaAorI2RlZmluZSBGVF9GQUNFX1NJWkUoIHggKSAgICAgRlRfRkFDRSggeCApLT5zaXplCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfR2x5cGhTbG90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJdCBpcyBzb21ldGltZXMgdXNlZnVsIHRvIGhhdmUgbW9yZSB0aGFuIG9uZSBnbHlwaCBzbG90IGZvciBhICAgICAgKi8KKyAgLyogICAgZ2l2ZW4gZmFjZSBvYmplY3QuICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGFkZGl0aW9uYWwgICAgICovCisgIC8qICAgIHNsb3RzLiAgQWxsIG9mIHRoZW0gYXJlIGF1dG9tYXRpY2FsbHkgZGlzY2FyZGVkIHdoZW4gdGhlIGZhY2UgaXMgICAqLworICAvKiAgICBkZXN0cm95ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICA6OiBBIGhhbmRsZSB0byBhIHBhcmVudCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhc2xvdCA6OiBBIGhhbmRsZSB0byBhIG5ldyBnbHlwaCBzbG90IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfTmV3X0dseXBoU2xvdCggRlRfRmFjZSAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICAqYXNsb3QgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RvbmVfR2x5cGhTbG90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERlc3Ryb3lzIGEgZ2l2ZW4gZ2x5cGggc2xvdC4gIFJlbWVtYmVyIGhvd2V2ZXIgdGhhdCBhbGwgc2xvdHMgYXJlICAqLworICAvKiAgICBhdXRvbWF0aWNhbGx5IGRlc3Ryb3llZCB3aXRoIGl0cyBwYXJlbnQuICBVc2luZyB0aGlzIGZ1bmN0aW9uIGlzICAgKi8KKyAgLyogICAgbm90IGFsd2F5cyBtYW5kYXRvcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2xvdCA6OiBBIGhhbmRsZSB0byBhIHRhcmdldCBnbHlwaCBzbG90LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfRG9uZV9HbHlwaFNsb3QoIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisgLyogKi8KKworI2RlZmluZSBGVF9SRVFVRVNUX1dJRFRIKCByZXEgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKHJlcSktPmhvcmlSZXNvbHV0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICA/IChGVF9Qb3MpKCAocmVxKS0+d2lkdGggKiAocmVxKS0+aG9yaVJlc29sdXRpb24gKyAzNiApIC8gNzIgXAorICAgICAgICAgICAgICA6IChyZXEpLT53aWR0aCApCisKKyNkZWZpbmUgRlRfUkVRVUVTVF9IRUlHSFQoIHJlcSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAocmVxKS0+dmVydFJlc29sdXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICA/IChGVF9Qb3MpKCAocmVxKS0+aGVpZ2h0ICogKHJlcSktPnZlcnRSZXNvbHV0aW9uICsgMzYgKSAvIDcyIFwKKyAgICAgICAgICAgICAgOiAocmVxKS0+aGVpZ2h0ICkKKworCisgIC8qIFNldCB0aGUgbWV0cmljcyBhY2NvcmRpbmcgdG8gYSBiaXRtYXAgc3RyaWtlLiAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfU2VsZWN0X01ldHJpY3MoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHN0cmlrZV9pbmRleCApOworCisKKyAgLyogU2V0IHRoZSBtZXRyaWNzIGFjY29yZGluZyB0byBhIHNpemUgcmVxdWVzdC4gKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX1JlcXVlc3RfTWV0cmljcyggRlRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1NpemVfUmVxdWVzdCAgcmVxICk7CisKKworICAvKiBNYXRjaCBhIHNpemUgcmVxdWVzdCBhZ2FpbnN0IGBhdmFpbGFibGVfc2l6ZXMnLiAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX01hdGNoX1NpemUoIEZUX0ZhY2UgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEsCisgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICAgaWdub3JlX3dpZHRoLAorICAgICAgICAgICAgICAgICBGVF9VTG9uZyogICAgICAgIHNpemVfaW5kZXggKTsKKworCisgIC8qIFVzZSB0aGUgaG9yaXpvbnRhbCBtZXRyaWNzIHRvIHN5bnRoZXNpemUgdGhlIHZlcnRpY2FsIG1ldHJpY3MuICovCisgIC8qIElmIGBhZHZhbmNlJyBpcyB6ZXJvLCBpdCBpcyBhbHNvIHN5bnRoZXNpemVkLiAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBmdF9zeW50aGVzaXplX3ZlcnRpY2FsX21ldHJpY3MoIEZUX0dseXBoX01ldHJpY3MqICBtZXRyaWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgICAgICBhZHZhbmNlICk7CisKKworICAvKiBGcmVlIHRoZSBiaXRtYXAgb2YgYSBnaXZlbiBnbHlwaHNsb3Qgd2hlbiBuZWVkZWQgKGkuZS4sIG9ubHkgd2hlbiBpdCAqLworICAvKiB3YXMgYWxsb2NhdGVkIHdpdGggZnRfZ2x5cGhzbG90X2FsbG9jX2JpdG1hcCkuICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwKCBGVF9HbHlwaFNsb3QgIHNsb3QgKTsKKworCisgIC8qIEFsbG9jYXRlIGEgbmV3IGJpdG1hcCBidWZmZXIgaW4gYSBnbHlwaCBzbG90LiAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAoIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICBzaXplICk7CisKKworICAvKiBTZXQgdGhlIGJpdG1hcCBidWZmZXIgaW4gYSBnbHlwaCBzbG90IHRvIGEgZ2l2ZW4gcG9pbnRlci4gIFRoZSBidWZmZXIgKi8KKyAgLyogd2lsbCBub3QgYmUgZnJlZWQgYnkgYSBsYXRlciBjYWxsIHRvIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcC4gICAgICAgICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBmdF9nbHlwaHNsb3Rfc2V0X2JpdG1hcCggRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICBidWZmZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICBSIEUgTiBEIEUgUiBFIFIgUyAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjZGVmaW5lIEZUX1JFTkRFUkVSKCB4ICkgICAgICAoKEZUX1JlbmRlcmVyKSggeCApKQorI2RlZmluZSBGVF9HTFlQSCggeCApICAgICAgICAgKChGVF9HbHlwaCkoIHggKSkKKyNkZWZpbmUgRlRfQklUTUFQX0dMWVBIKCB4ICkgICgoRlRfQml0bWFwR2x5cGgpKCB4ICkpCisjZGVmaW5lIEZUX09VVExJTkVfR0xZUEgoIHggKSAoKEZUX091dGxpbmVHbHlwaCkoIHggKSkKKworCisgIHR5cGVkZWYgc3RydWN0ICBGVF9SZW5kZXJlclJlY18KKyAgeworICAgIEZUX01vZHVsZVJlYyAgICAgICAgICAgIHJvb3Q7CisgICAgRlRfUmVuZGVyZXJfQ2xhc3MqICAgICAgY2xheno7CisgICAgRlRfR2x5cGhfRm9ybWF0ICAgICAgICAgZ2x5cGhfZm9ybWF0OworICAgIEZUX0dseXBoX0NsYXNzICAgICAgICAgIGdseXBoX2NsYXNzOworCisgICAgRlRfUmFzdGVyICAgICAgICAgICAgICAgcmFzdGVyOworICAgIEZUX1Jhc3Rlcl9SZW5kZXJfRnVuYyAgIHJhc3Rlcl9yZW5kZXI7CisgICAgRlRfUmVuZGVyZXJfUmVuZGVyRnVuYyAgcmVuZGVyOworCisgIH0gRlRfUmVuZGVyZXJSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICBGIE8gTiBUICAgRCBSIEkgViBFIFIgUyAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiB0eXBlY2FzdCBhIG1vZHVsZSBpbnRvIGEgZHJpdmVyIGVhc2lseSAqLworI2RlZmluZSBGVF9EUklWRVIoIHggKSAgICAgICAgKChGVF9Ecml2ZXIpKHgpKQorCisgIC8qIHR5cGVjYXN0IGEgbW9kdWxlIGFzIGEgZHJpdmVyLCBhbmQgZ2V0IGl0cyBkcml2ZXIgY2xhc3MgKi8KKyNkZWZpbmUgRlRfRFJJVkVSX0NMQVNTKCB4ICkgIEZUX0RSSVZFUiggeCApLT5jbGF6egorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfRHJpdmVyUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHJvb3QgZm9udCBkcml2ZXIgY2xhc3MuICBBIGZvbnQgZHJpdmVyIGlzIHJlc3BvbnNpYmxlIGZvciAgICAgICovCisgIC8qICAgIG1hbmFnaW5nIGFuZCBsb2FkaW5nIGZvbnQgZmlsZXMgb2YgYSBnaXZlbiBmb3JtYXQuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICByb290ICAgICAgICAgOjogQ29udGFpbnMgdGhlIGZpZWxkcyBvZiB0aGUgcm9vdCBtb2R1bGUgY2xhc3MuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGNsYXp6ICAgICAgICA6OiBBIHBvaW50ZXIgdG8gdGhlIGZvbnQgZHJpdmVyJ3MgY2xhc3MuICBOb3RlIHRoYXQgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgdGhpcyBpcyBOT1Qgcm9vdC5jbGF6ei4gIGBjbGFzcycgd2Fzbid0IHVzZWQgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIGFzIGl0IGlzIGEgcmVzZXJ2ZWQgd29yZCBpbiBDKysuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBmYWNlc19saXN0ICAgOjogVGhlIGxpc3Qgb2YgZmFjZXMgY3VycmVudGx5IG9wZW5lZCBieSB0aGlzICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIGRyaXZlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBnbHlwaF9sb2FkZXIgOjogVGhlIGdseXBoIGxvYWRlciBmb3IgYWxsIGZhY2VzIG1hbmFnZWQgYnkgdGhpcyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIGRyaXZlci4gIFRoaXMgb2JqZWN0IGlzbid0IGRlZmluZWQgZm9yIHVuc2NhbGFibGUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfRHJpdmVyUmVjXworICB7CisgICAgRlRfTW9kdWxlUmVjICAgICByb290OworICAgIEZUX0RyaXZlcl9DbGFzcyAgY2xheno7CisgICAgRlRfTGlzdFJlYyAgICAgICBmYWNlc19saXN0OworICAgIEZUX0dseXBoTG9hZGVyICAgZ2x5cGhfbG9hZGVyOworCisgIH0gRlRfRHJpdmVyUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgTCBJIEIgUiBBIFIgSSBFIFMgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyogVGhpcyBob29rIGlzIHVzZWQgYnkgdGhlIFRydWVUeXBlIGRlYnVnZ2VyLiAgSXQgbXVzdCBiZSBzZXQgdG8gYW4gKi8KKyAgLyogYWx0ZXJuYXRlIHRydWV0eXBlIGJ5dGVjb2RlIGludGVycHJldGVyIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfREVCVUdfSE9PS19UUlVFVFlQRSAgICAgICAgICAgIDAKKworCisgIC8qIFNldCB0aGlzIGRlYnVnIGhvb2sgdG8gYSBub24tbnVsbCBwb2ludGVyIHRvIGZvcmNlIHVucGF0ZW50ZWQgaGludGluZyAqLworICAvKiBmb3IgYWxsIGZhY2VzIHdoZW4gYm90aCBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgYW5kICAgICAgICAgICAgICAgKi8KKyAgLyogVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcgYXJlIGRlZmluZWQuICBUaGlzIGlzIG9ubHkgdXNlZCAgICovCisgIC8qIGR1cmluZyBkZWJ1Z2dpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9ERUJVR19IT09LX1VOUEFURU5URURfSElOVElORyAgMQorCisKKyAgdHlwZWRlZiB2b2lkICAoKkZUX0JpdG1hcF9MY2RGaWx0ZXJGdW5jKSggRlRfQml0bWFwKiAgICAgIGJpdG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgIHJlbmRlcl9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9MaWJyYXJ5ICAgICAgbGlicmFyeSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTGlicmFyeVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIEZyZWVUeXBlIGxpYnJhcnkgY2xhc3MuICBUaGlzIGlzIHRoZSByb290IG9mIGFsbCBGcmVlVHlwZSAgICAgICovCisgIC8qICAgIGRhdGEuICBVc2UgRlRfTmV3X0xpYnJhcnkoKSB0byBjcmVhdGUgYSBsaWJyYXJ5IG9iamVjdCwgYW5kICAgICAgICAqLworICAvKiAgICBGVF9Eb25lX0xpYnJhcnkoKSB0byBkaXNjYXJkIGl0IGFuZCBhbGwgY2hpbGQgb2JqZWN0cy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZW1vcnkgICAgICAgICAgIDo6IFRoZSBsaWJyYXJ5J3MgbWVtb3J5IG9iamVjdC4gIE1hbmFnZXMgbWVtb3J5ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJzaW9uX21ham9yICAgIDo6IFRoZSBtYWpvciB2ZXJzaW9uIG51bWJlciBvZiB0aGUgbGlicmFyeS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnNpb25fbWlub3IgICAgOjogVGhlIG1pbm9yIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBsaWJyYXJ5LiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVyc2lvbl9wYXRjaCAgICA6OiBUaGUgY3VycmVudCBwYXRjaCBsZXZlbCBvZiB0aGUgbGlicmFyeS4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fbW9kdWxlcyAgICAgIDo6IFRoZSBudW1iZXIgb2YgbW9kdWxlcyBjdXJyZW50bHkgcmVnaXN0ZXJlZCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhpcyBsaWJyYXJ5LiAgVGhpcyBpcyBzZXQgdG8gMCBmb3IgbmV3ICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzLiAgTmV3IG1vZHVsZXMgYXJlIGFkZGVkIHRocm91Z2ggdGhlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIEZUX0FkZF9Nb2R1bGUoKSBBUEkgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1vZHVsZXMgICAgICAgICAgOjogQSB0YWJsZSB1c2VkIHRvIHN0b3JlIGhhbmRsZXMgdG8gdGhlIGN1cnJlbnRseSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWQgbW9kdWxlcy4gTm90ZSB0aGF0IGVhY2ggZm9udCBkcml2ZXIgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIGxpc3Qgb2YgaXRzIG9wZW5lZCBmYWNlcy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZW5kZXJlcnMgICAgICAgIDo6IFRoZSBsaXN0IG9mIHJlbmRlcmVycyBjdXJyZW50bHkgcmVnaXN0ZXJlZCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIGxpYnJhcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjdXJfcmVuZGVyZXIgICAgIDo6IFRoZSBjdXJyZW50IG91dGxpbmUgcmVuZGVyZXIuICBUaGlzIGlzIGEgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGN1dCB1c2VkIHRvIGF2b2lkIHBhcnNpbmcgdGhlIGxpc3Qgb24gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCBjYWxsIHRvIEZUX091dGxpbmVfUmVuZGVyKCkuICBJdCBpcyBhICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSB0byB0aGUgY3VycmVudCByZW5kZXJlciBmb3IgdGhlICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSBmb3JtYXQuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhdXRvX2hpbnRlciAgICAgIDo6IFhYWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3Rlcl9wb29sICAgICAgOjogVGhlIHJhc3RlciBvYmplY3QncyByZW5kZXIgcG9vbC4gIFRoaXMgY2FuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGlkZWFsbHkgYmUgY2hhbmdlZCBkeW5hbWljYWxseSBhdCBydW4tdGltZS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhc3Rlcl9wb29sX3NpemUgOjogVGhlIHNpemUgb2YgdGhlIHJlbmRlciBwb29sIGluIGJ5dGVzLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVidWdfaG9va3MgICAgICA6OiBYWFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsY2RfZmlsdGVyICAgICAgIDo6IElmIHN1YnBpeGVsIHJlbmRlcmluZyBpcyBhY3RpdmF0ZWQsIHRoZSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCBMQ0QgZmlsdGVyIG1vZGUuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsY2RfZXh0cmEgICAgICAgIDo6IElmIHN1YnBpeGVsIHJlbmRlcmluZyBpcyBhY3RpdmF0ZWQsIHRoZSBudW1iZXIgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBvZiBleHRyYSBwaXhlbHMgbmVlZGVkIGZvciB0aGUgTENEIGZpbHRlci4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsY2Rfd2VpZ2h0cyAgICAgIDo6IElmIHN1YnBpeGVsIHJlbmRlcmluZyBpcyBhY3RpdmF0ZWQsIHRoZSBMQ0QgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgd2VpZ2h0cywgaWYgYW55LiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsY2RfZmlsdGVyX2Z1bmMgIDo6IElmIHN1YnBpeGVsIHJlbmRlcmluZyBpcyBhY3RpdmF0ZWQsIHRoZSBMQ0QgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJpbmcgY2FsbGJhY2sgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwaWNfY29udGFpbmVyICAgIDo6IENvbnRhaW5zIGdsb2JhbCBzdHJ1Y3RzIGFuZCB0YWJsZXMsIGluc3RlYWQgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBvZiBkZWZpbmluZyB0aGVtIGdsb2JhbGxseS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZWZjb3VudCAgICAgICAgIDo6IEEgY291bnRlciBpbml0aWFsaXplZCB0b34xIGF0IHRoZSB0aW1lIGFuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBARlRfTGlicmFyeSBzdHJ1Y3R1cmUgaXMgY3JlYXRlZC4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgQEZUX1JlZmVyZW5jZV9MaWJyYXJ5IGluY3JlbWVudHMgdGhpcyBjb3VudGVyLCAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBARlRfRG9uZV9MaWJyYXJ5IG9ubHkgZGVzdHJveXMgYSBsaWJyYXJ5ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgY291bnRlciBpc34xLCBvdGhlcndpc2UgaXQgc2ltcGx5ICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50cyBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0xpYnJhcnlSZWNfCisgIHsKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5OyAgICAgICAgICAgLyogbGlicmFyeSdzIG1lbW9yeSBtYW5hZ2VyICovCisKKyAgICBGVF9JbnQgICAgICAgICAgICAgdmVyc2lvbl9tYWpvcjsKKyAgICBGVF9JbnQgICAgICAgICAgICAgdmVyc2lvbl9taW5vcjsKKyAgICBGVF9JbnQgICAgICAgICAgICAgdmVyc2lvbl9wYXRjaDsKKworICAgIEZUX1VJbnQgICAgICAgICAgICBudW1fbW9kdWxlczsKKyAgICBGVF9Nb2R1bGUgICAgICAgICAgbW9kdWxlc1tGVF9NQVhfTU9EVUxFU107ICAvKiBtb2R1bGUgb2JqZWN0cyAgKi8KKworICAgIEZUX0xpc3RSZWMgICAgICAgICByZW5kZXJlcnM7ICAgICAgICAvKiBsaXN0IG9mIHJlbmRlcmVycyAgICAgICAgKi8KKyAgICBGVF9SZW5kZXJlciAgICAgICAgY3VyX3JlbmRlcmVyOyAgICAgLyogY3VycmVudCBvdXRsaW5lIHJlbmRlcmVyICovCisgICAgRlRfTW9kdWxlICAgICAgICAgIGF1dG9faGludGVyOworCisgICAgRlRfQnl0ZSogICAgICAgICAgIHJhc3Rlcl9wb29sOyAgICAgIC8qIHNjYW4tbGluZSBjb252ZXJzaW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlbmRlciBwb29sICAgICAgICAgICovCisgICAgRlRfVUxvbmcgICAgICAgICAgIHJhc3Rlcl9wb29sX3NpemU7IC8qIHNpemUgb2YgcmVuZGVyIHBvb2wgaW4gYnl0ZXMgKi8KKworICAgIEZUX0RlYnVnSG9va19GdW5jICBkZWJ1Z19ob29rc1s0XTsKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfUkVOREVSSU5HCisgICAgRlRfTGNkRmlsdGVyICAgICAgICAgICAgIGxjZF9maWx0ZXI7CisgICAgRlRfSW50ICAgICAgICAgICAgICAgICAgIGxjZF9leHRyYTsgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBwaXhlbHMgKi8KKyAgICBGVF9CeXRlICAgICAgICAgICAgICAgICAgbGNkX3dlaWdodHNbN107ICAgLyogZmlsdGVyIHdlaWdodHMsIGlmIGFueSAqLworICAgIEZUX0JpdG1hcF9MY2RGaWx0ZXJGdW5jICBsY2RfZmlsdGVyX2Z1bmM7ICAvKiBmaWx0ZXJpbmcgY2FsbGJhY2sgICAgICovCisjZW5kaWYKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisgICAgRlRfUElDX0NvbnRhaW5lciAgIHBpY19jb250YWluZXI7CisjZW5kaWYKKworICAgIEZUX0ludCAgICAgICAgICAgICByZWZjb3VudDsKKworICB9IEZUX0xpYnJhcnlSZWM7CisKKworICBGVF9CQVNFKCBGVF9SZW5kZXJlciApCisgIEZUX0xvb2t1cF9SZW5kZXJlciggRlRfTGlicmFyeSAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoX0Zvcm1hdCAgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xpc3ROb2RlKiAgICAgbm9kZSApOworCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfUmVuZGVyX0dseXBoX0ludGVybmFsKCBGVF9MaWJyYXJ5ICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgcmVuZGVyX21vZGUgKTsKKworICB0eXBlZGVmIGNvbnN0IGNoYXIqCisgICgqRlRfRmFjZV9HZXRQb3N0c2NyaXB0TmFtZUZ1bmMpKCBGVF9GYWNlICBmYWNlICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0ZhY2VfR2V0R2x5cGhOYW1lRnVuYykoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGJ1ZmZlcl9tYXggKTsKKworICB0eXBlZGVmIEZUX1VJbnQKKyAgKCpGVF9GYWNlX0dldEdseXBoTmFtZUluZGV4RnVuYykoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJpbmcqICBnbHlwaF9uYW1lICk7CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX05PX0RFRkFVTFRfU1lTVEVNCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTmV3X01lbW9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ3JlYXRlcyBhIG5ldyBtZW1vcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBwb2ludGVyIHRvIHRoZSBuZXcgbWVtb3J5IG9iamVjdC4gIDAgaW4gY2FzZSBvZiBlcnJvci4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9NZW1vcnkgKQorICBGVF9OZXdfTWVtb3J5KCB2b2lkICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9Eb25lX01lbW9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEaXNjYXJkcyBtZW1vcnkgbWFuYWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZW1vcnkgOjogQSBoYW5kbGUgdG8gdGhlIG1lbW9yeSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9Eb25lX01lbW9yeSggRlRfTWVtb3J5ICBtZW1vcnkgKTsKKworI2VuZGlmIC8qICFGVF9DT05GSUdfT1BUSU9OX05PX0RFRkFVTFRfU1lTVEVNICovCisKKworICAvKiBEZWZpbmUgZGVmYXVsdCByYXN0ZXIncyBpbnRlcmZhY2UuICBUaGUgZGVmYXVsdCByYXN0ZXIgaXMgbG9jYXRlZCBpbiAgKi8KKyAgLyogYHNyYy9iYXNlL2Z0cmFzdGVyLmMnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBDbGllbnQgYXBwbGljYXRpb25zIGNhbiByZWdpc3RlciBuZXcgcmFzdGVycyB0aHJvdWdoIHRoZSAgICAgICAgICAgICAgKi8KKyAgLyogRlRfU2V0X1Jhc3RlcigpIEFQSS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZm5kZWYgRlRfTk9fREVGQVVMVF9SQVNURVIKKyAgRlRfRVhQT1JUX1ZBUiggRlRfUmFzdGVyX0Z1bmNzICkgIGZ0X2RlZmF1bHRfcmFzdGVyOworI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgIFAgSSBDICAgUyBVIFAgUCBPIFIgVCAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBQSUMgc3VwcG9ydCBtYWNyb3MgZm9yIGZ0aW1hZ2UuaCAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX09VVExJTkVfRlVOQ1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBpbml0aWFsaXplIGFuIGluc3RhbmNlIG9mIEZUX091dGxpbmVfRnVuY3Mgc3RydWN0LiAgICAgICAgICovCisgIC8qICAgIFdoZW4gRlRfQ09ORklHX09QVElPTl9QSUMgaXMgZGVmaW5lZCBhbiBpbml0IGZ1bnRpb24gd2lsbCBuZWVkIHRvICAqLworICAvKiAgICBiZSBjYWxsZWQgd2l0aCBhIHByZS1hbGxvY2F0ZWQgc3RydWN0dXJlIHRvIGJlIGZpbGxlZC4gICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBub3QgZGVmaW5lZCB0aGUgc3RydWN0IHdpbGwgYmUgICAgICAgICovCisgIC8qICAgIGFsbG9jYXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlIChvciB0aGUgc2NvcGUgd2hlcmUgdGhlIG1hY3JvICAgICAgICAqLworICAvKiAgICBpcyB1c2VkKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX09VVExJTkVfRlVOQ1MoICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIG1vdmVfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsaW5lX3RvXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY29uaWNfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGN1YmljX3RvXywgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzaGlmdF8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZGVsdGFfICkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBzdGF0aWMgY29uc3QgIEZUX091dGxpbmVfRnVuY3MgY2xhc3NfID0gIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbW92ZV90b18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxpbmVfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb25pY190b18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY3ViaWNfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNoaWZ0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkZWx0YV8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX09VVExJTkVfRlVOQ1MoICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbW92ZV90b18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsaW5lX3RvXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNvbmljX3RvXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY3ViaWNfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzaGlmdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRlbHRhXyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBGVF9FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9PdXRsaW5lX0Z1bmNzKiAgY2xhenogKSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPm1vdmVfdG8gID0gbW92ZV90b187ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bGluZV90byAgPSBsaW5lX3RvXzsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5jb25pY190byA9IGNvbmljX3RvXzsgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmN1YmljX3RvID0gY3ViaWNfdG9fOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+c2hpZnQgICAgPSBzaGlmdF87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5kZWx0YSAgICA9IGRlbHRhXzsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gRlRfRXJyX09rOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX1JBU1RFUl9GVU5DUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBpbml0aWFsaXplIGFuIGluc3RhbmNlIG9mIEZUX1Jhc3Rlcl9GdW5jcyBzdHJ1Y3QuICAgICAgICAgICovCisgIC8qICAgIFdoZW4gRlRfQ09ORklHX09QVElPTl9QSUMgaXMgZGVmaW5lZCBhbiBpbml0IGZ1bnRpb24gd2lsbCBuZWVkIHRvICAqLworICAvKiAgICBiZSBjYWxsZWQgd2l0aCBhIHByZS1hbGxvY2F0ZWQgc3RydWN0dXJlIHRvIGJlIGZpbGxlZC4gICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBub3QgZGVmaW5lZCB0aGUgc3RydWN0IHdpbGwgYmUgICAgICAgICovCisgIC8qICAgIGFsbG9jYXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlIChvciB0aGUgc2NvcGUgd2hlcmUgdGhlIG1hY3JvICAgICAgICAqLworICAvKiAgICBpcyB1c2VkKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1JBU1RFUl9GVU5DUyggICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2x5cGhfZm9ybWF0XywgICAgICAgICAgIFwKKyAgICAgICAgICByYXN0ZXJfbmV3XywgICAgICAgICAgICAgXAorICAgICAgICAgIHJhc3Rlcl9yZXNldF8sICAgICAgICAgICBcCisgICAgICAgICAgcmFzdGVyX3NldF9tb2RlXywgICAgICAgIFwKKyAgICAgICAgICByYXN0ZXJfcmVuZGVyXywgICAgICAgICAgXAorICAgICAgICAgIHJhc3Rlcl9kb25lXyApICAgICAgICAgICBcCisgIGNvbnN0IEZUX1Jhc3Rlcl9GdW5jcyAgY2xhc3NfID0gIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdseXBoX2Zvcm1hdF8sICAgICAgICAgICAgICAgICBcCisgICAgcmFzdGVyX25ld18sICAgICAgICAgICAgICAgICAgIFwKKyAgICByYXN0ZXJfcmVzZXRfLCAgICAgICAgICAgICAgICAgXAorICAgIHJhc3Rlcl9zZXRfbW9kZV8sICAgICAgICAgICAgICBcCisgICAgcmFzdGVyX3JlbmRlcl8sICAgICAgICAgICAgICAgIFwKKyAgICByYXN0ZXJfZG9uZV8gICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9SQVNURVJfRlVOQ1MoICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnbHlwaF9mb3JtYXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmFzdGVyX25ld18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHJhc3Rlcl9yZXNldF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByYXN0ZXJfc2V0X21vZGVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmFzdGVyX3JlbmRlcl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHJhc3Rlcl9kb25lXyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfUmFzdGVyX0Z1bmNzKiAgY2xhenogKSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2x5cGhfZm9ybWF0ICAgID0gZ2x5cGhfZm9ybWF0XzsgICAgICAgICAgICBcCisgICAgY2xhenotPnJhc3Rlcl9uZXcgICAgICA9IHJhc3Rlcl9uZXdfOyAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5yYXN0ZXJfcmVzZXQgICAgPSByYXN0ZXJfcmVzZXRfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cmFzdGVyX3NldF9tb2RlID0gcmFzdGVyX3NldF9tb2RlXzsgICAgICAgICBcCisgICAgY2xhenotPnJhc3Rlcl9yZW5kZXIgICA9IHJhc3Rlcl9yZW5kZXJfOyAgICAgICAgICAgXAorICAgIGNsYXp6LT5yYXN0ZXJfZG9uZSAgICAgPSByYXN0ZXJfZG9uZV87ICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworCisgIC8qIFBJQyBzdXBwb3J0IG1hY3JvcyBmb3IgZnRyZW5kZXIuaCAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX0dMWVBIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBpbml0aWFsaXplIGFuIGluc3RhbmNlIG9mIEZUX0dseXBoX0NsYXNzIHN0cnVjdC4gICAgICAgICAgICovCisgIC8qICAgIFdoZW4gRlRfQ09ORklHX09QVElPTl9QSUMgaXMgZGVmaW5lZCBhbiBpbml0IGZ1bnRpb24gd2lsbCBuZWVkIHRvICAqLworICAvKiAgICBiZSBjYWxsZWQgd2l0aCBhIHByZS1hbGxvY2F0ZWQgc3RjdHVyZSB0byBiZSBmaWxsZWQuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBub3QgZGVmaW5lZCB0aGUgc3RydWN0IHdpbGwgYmUgICAgICAgICovCisgIC8qICAgIGFsbG9jYXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlIChvciB0aGUgc2NvcGUgd2hlcmUgdGhlIG1hY3JvICAgICAgICAqLworICAvKiAgICBpcyB1c2VkKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX0dMWVBIKCAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNpemVfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmb3JtYXRfLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjb3B5XywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdHJhbnNmb3JtXywgICAgICAgICAgICAgXAorICAgICAgICAgIGJib3hfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBwcmVwYXJlXyApICAgICAgICAgICAgICBcCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRiAgICAgICAgICAgXAorICBjb25zdCBGVF9HbHlwaF9DbGFzcyAgY2xhc3NfID0gIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZvcm1hdF8sICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbml0XywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNvcHlfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0cmFuc2Zvcm1fLCAgICAgICAgICAgICAgICAgICBcCisgICAgYmJveF8sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHByZXBhcmVfICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUZJTkVfR0xZUEgoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNpemVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZvcm1hdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNvcHlfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHRyYW5zZm9ybV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGJib3hfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHByZXBhcmVfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0dseXBoX0NsYXNzKiAgY2xhenogKSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nbHlwaF9zaXplICAgICAgPSBzaXplXzsgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nbHlwaF9mb3JtYXQgICAgPSBmb3JtYXRfOyAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nbHlwaF9pbml0ICAgICAgPSBpbml0XzsgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nbHlwaF9kb25lICAgICAgPSBkb25lXzsgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nbHlwaF9jb3B5ICAgICAgPSBjb3B5XzsgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nbHlwaF90cmFuc2Zvcm0gPSB0cmFuc2Zvcm1fOyAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nbHlwaF9iYm94ICAgICAgPSBiYm94XzsgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nbHlwaF9wcmVwYXJlICAgPSBwcmVwYXJlXzsgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVDTEFSRV9SRU5ERVJFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBjcmVhdGUgYSBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIGEgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX1JlbmRlcmVyX0NsYXNzIHN0cnVjdCBpbnN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE1hY3JvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RFRklORV9SRU5ERVJFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzZWQgdG8gaW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBvZiBGVF9SZW5kZXJlcl9DbGFzcyBzdHJ1Y3QuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBkZWZpbmVkIGEgYGNyZWF0ZScgZnVudGlvbiB3aWxsIG5lZWQgICovCisgIC8qICAgIHRvIGJlIGNhbGxlZCB3aXRoIGEgcG9pbnRlciB3aGVyZSB0aGUgYWxsb2NhdGVkIHN0cnVjdHVyZSBpcyAgICAgICAqLworICAvKiAgICByZXR1cm5lZC4gIEFuZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQgYSBgZGVzdHJveScgZnVuY3Rpb24gICAgKi8KKyAgLyogICAgbmVlZHMgdG8gYmUgY2FsbGVkIHRvIHJlbGVhc2UgdGhhdCBhbGxvY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGBmY2luaXQuYycgKGZ0X2NyZWF0ZV9kZWZhdWx0X21vZHVsZV9jbGFzc2VzKSBhbHJlYWR5IGNvbnRhaW5zICAgICAqLworICAvKiAgICBhIG1lY2hhbmlzbSB0byBjYWxsIHRoZXNlIGZ1bmN0aW9ucyBmb3IgdGhlIGRlZmF1bHQgbW9kdWxlcyAgICAgICAgKi8KKyAgLyogICAgZGVzY3JpYmVkIGluIGBmdG1vZHVsZS5oJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RpY2UgdGhhdCB0aGUgY3JlYXRlZCBgY3JlYXRlJyBhbmQgYGRlc3Ryb3knIGZ1bmN0aW9ucyBjYWxsICAgICAgKi8KKyAgLyogICAgYHBpY19pbml0JyBhbmQgYHBpY19mcmVlJyB0byBhbGxvdyB5b3UgdG8gbWFudWFsbHkgYWxsb2NhdGUgYW5kICAgICovCisgIC8qICAgIGluaXRpYWxpemUgYW55IGFkZGl0aW9uYWwgZ2xvYmFsIGRhdGEsIGxpa2UgYSBtb2R1bGUgc3BlY2lmaWMgICAgICAqLworICAvKiAgICBpbnRlcmZhY2UsIGFuZCBwdXQgdGhlbSBpbiB0aGUgZ2xvYmFsIHBpYyBjb250YWluZXIgZGVmaW5lZCBpbiAgICAgKi8KKyAgLyogICAgYGZ0cGljLmgnLiAgSWYgeW91IGRvbid0IG5lZWQgdGhlbSBqdXN0IGltcGxlbWVudCB0aGUgZnVuY3Rpb25zIGFzICovCisgIC8qICAgIGVtcHR5IHRvIHJlc29sdmUgdGhlIGxpbmsgZXJyb3IuICBBbHNvIHRoZSBgcGljX2luaXQnIGFuZCAgICAgICAgICAqLworICAvKiAgICBgcGljX2ZyZWUnIGZ1bmN0aW9ucyBzaG91bGQgYmUgZGVjbGFyZWQgaW4gYHBpYy5oJywgdG8gYmUgcmVmZXJyZWQgKi8KKyAgLyogICAgYnkgdGhlIHJlbmRlcmVyIGRlZmluaXRpb24gY2FsbGluZyBgRlRfREVGSU5FX1JFTkRFUkVSJyBpbiB0aGUgICAgICovCisgIC8qICAgIGZvbGxvd2luZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBub3QgZGVmaW5lZCB0aGUgc3RydWN0IHdpbGwgYmUgICAgICAgICovCisgIC8qICAgIGFsbG9jYXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlIChvciB0aGUgc2NvcGUgd2hlcmUgdGhlIG1hY3JvICAgICAgICAqLworICAvKiAgICBpcyB1c2VkKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVDTEFSRV9SRU5ERVJFUiggY2xhc3NfICkgICAgICAgICAgICAgICBcCisgIEZUX0VYUE9SVF9WQVIoIGNvbnN0IEZUX1JlbmRlcmVyX0NsYXNzICkgY2xhc3NfOworCisjZGVmaW5lIEZUX0RFRklORV9SRU5ERVJFUiggICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZmxhZ3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdmVyc2lvbl8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2x5cGhfZm9ybWF0XywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVuZGVyX2dseXBoXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgdHJhbnNmb3JtX2dseXBoXywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2dseXBoX2Nib3hfLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2V0X21vZGVfLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmFzdGVyX2NsYXNzXyApICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRiAgICAgICAgICAgICAgICAgICAgICBcCisgIGNvbnN0IEZUX1JlbmRlcmVyX0NsYXNzICBjbGFzc18gPSAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfREVGSU5FX1JPT1RfTU9EVUxFKCBmbGFnc18sICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplXywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lXywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc18sICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VfLCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0XywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lXywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaW50ZXJmYWNlXyApICBcCisgICAgZ2x5cGhfZm9ybWF0XywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmVuZGVyX2dseXBoXywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdHJhbnNmb3JtX2dseXBoXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2dseXBoX2Nib3hfLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2V0X21vZGVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmFzdGVyX2NsYXNzXyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVDTEFSRV9SRU5ERVJFUiggY2xhc3NfICkgIEZUX0RFQ0xBUkVfTU9EVUxFKCBjbGFzc18gKQorCisjZGVmaW5lIEZUX0RFRklORV9SRU5ERVJFUiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZsYWdzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBuYW1lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHZlcnNpb25fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdseXBoX2Zvcm1hdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVuZGVyX2dseXBoXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB0cmFuc2Zvcm1fZ2x5cGhfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9nbHlwaF9jYm94XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2V0X21vZGVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICByYXN0ZXJfY2xhc3NfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Nb2R1bGVfQ2xhc3MqICBjbGF6eiApICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfUmVuZGVyZXJfQ2xhc3MqICByY2xhenogPSAoRlRfUmVuZGVyZXJfQ2xhc3MqKWNsYXp6OyAgICAgIFwKKyAgICBGVF9NZW1vcnkgICAgICAgICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGFzc18gIyMgX3BpY19mcmVlKCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggcmNsYXp6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCByY2xhenogKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9DcmVhdGVfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgIGxpYnJhcnksICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Nb2R1bGVfQ2xhc3MqKiAgb3V0cHV0X2NsYXNzICkgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1JlbmRlcmVyX0NsYXNzKiAgY2xhenogPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfRXJyb3IgICAgICAgICAgICBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgICAgICAgICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIEZUX0FMTE9DKCBjbGF6eiwgc2l6ZW9mICggKmNsYXp6ICkgKSApICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlcnJvciA9IGNsYXNzXyAjIyBfcGljX2luaXQoIGxpYnJhcnkgKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggZXJyb3IgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0ZSRUUoIGNsYXp6ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX0RFRklORV9ST09UX01PRFVMRSggZmxhZ3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9pbnRlcmZhY2VfICkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdseXBoX2Zvcm1hdCAgICA9IGdseXBoX2Zvcm1hdF87ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5yZW5kZXJfZ2x5cGggICAgPSByZW5kZXJfZ2x5cGhfOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnRyYW5zZm9ybV9nbHlwaCA9IHRyYW5zZm9ybV9nbHlwaF87ICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X2dseXBoX2Nib3ggID0gZ2V0X2dseXBoX2Nib3hfOyAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5zZXRfbW9kZSAgICAgICAgPSBzZXRfbW9kZV87ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cmFzdGVyX2NsYXNzICAgID0gcmFzdGVyX2NsYXNzXzsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKm91dHB1dF9jbGFzcyA9IChGVF9Nb2R1bGVfQ2xhc3MqKWNsYXp6OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworICAvKiBQSUMgc3VwcG9ydCBtYWNyb3MgZm9yIGZ0bW9kYXBpLmggKiovCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfTW9kdWxlX0NyZWF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBmdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSAoYWxsb2NhdGUpIGEgbmV3IG1vZHVsZSBjbGFzcyBvYmplY3QuICAgICovCisgIC8qICAgIFRoZSBvYmplY3QncyBtZW1iZXJzIGFyZSBpbml0aWFsaXplZCwgYnV0IHRoZSBtb2R1bGUgaXRzZWxmIGlzICAgICAqLworICAvKiAgICBub3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZW1vcnkgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIG1lbW9yeSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3V0cHV0X2NsYXNzIDo6IEluaXRpYWxpemVkIHdpdGggdGhlIG5ld2x5IGFsbG9jYXRlZCBjbGFzcy4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfTW9kdWxlX0NyZWF0b3IpKCBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlX0NsYXNzKiogIG91dHB1dF9jbGFzcyApOworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX01vZHVsZV9EZXN0cm95ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCB0byBkZXN0cm95IChkZWFsbG9jYXRlKSBhIG1vZHVsZSBjbGFzcyBvYmplY3QuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSA6OiBBIGhhbmRsZSB0byB0aGUgbWVtb3J5IG1hbmFnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjbGF6eiAgOjogTW9kdWxlIGNsYXNzIHRvIGRlc3Ryb3kuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKkZUX01vZHVsZV9EZXN0cm95ZXIpKCBGVF9NZW1vcnkgICAgICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01vZHVsZV9DbGFzcyogIGNsYXp6ICk7CisKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8TWFjcm8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVDTEFSRV9NT0RVTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVXNlZCB0byBjcmVhdGUgYSBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIGEgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX01vZHVsZV9DbGFzcyBzdHJ1Y3QgaW5zdGFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE1hY3JvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RFRklORV9NT0RVTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzZWQgdG8gaW5pdGlhbGl6ZSBhbiBpbnN0YW5jZSBvZiBhbiBGVF9Nb2R1bGVfQ2xhc3Mgc3RydWN0LiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBkZWZpbmVkIGEgYGNyZWF0ZScgZnVudGlvbiBuZWVkcyB0byAgICovCisgIC8qICAgIGJlIGNhbGxlZCB3aXRoIGEgcG9pbnRlciB3aGVyZSB0aGUgYWxsb2NhdGVkIHN0cnVjdHVyZSBpcyAgICAgICAgICAqLworICAvKiAgICByZXR1cm5lZC4gIEFuZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQgYSBgZGVzdHJveScgZnVuY3Rpb24gICAgKi8KKyAgLyogICAgbmVlZHMgdG8gYmUgY2FsbGVkIHRvIHJlbGVhc2UgdGhhdCBhbGxvY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGBmY2luaXQuYycgKGZ0X2NyZWF0ZV9kZWZhdWx0X21vZHVsZV9jbGFzc2VzKSBhbHJlYWR5IGNvbnRhaW5zICAgICAqLworICAvKiAgICBhIG1lY2hhbmlzbSB0byBjYWxsIHRoZXNlIGZ1bmN0aW9ucyBmb3IgdGhlIGRlZmF1bHQgbW9kdWxlcyAgICAgICAgKi8KKyAgLyogICAgZGVzY3JpYmVkIGluIGBmdG1vZHVsZS5oJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RpY2UgdGhhdCB0aGUgY3JlYXRlZCBgY3JlYXRlJyBhbmQgYGRlc3Ryb3knIGZ1bmN0aW9ucyBjYWxsICAgICAgKi8KKyAgLyogICAgYHBpY19pbml0JyBhbmQgYHBpY19mcmVlJyB0byBhbGxvdyB5b3UgdG8gbWFudWFsbHkgYWxsb2NhdGUgYW5kICAgICovCisgIC8qICAgIGluaXRpYWxpemUgYW55IGFkZGl0aW9uYWwgZ2xvYmFsIGRhdGEsIGxpa2UgYSBtb2R1bGUgc3BlY2lmaWMgICAgICAqLworICAvKiAgICBpbnRlcmZhY2UsIGFuZCBwdXQgdGhlbSBpbiB0aGUgZ2xvYmFsIHBpYyBjb250YWluZXIgZGVmaW5lZCBpbiAgICAgKi8KKyAgLyogICAgYGZ0cGljLmgnLiAgSWYgeW91IGRvbid0IG5lZWQgdGhlbSBqdXN0IGltcGxlbWVudCB0aGUgZnVuY3Rpb25zIGFzICovCisgIC8qICAgIGVtcHR5IHRvIHJlc29sdmUgdGhlIGxpbmsgZXJyb3IuICBBbHNvIHRoZSBgcGljX2luaXQnIGFuZCAgICAgICAgICAqLworICAvKiAgICBgcGljX2ZyZWUnIGZ1bmN0aW9ucyBzaG91bGQgYmUgZGVjbGFyZWQgaW4gYHBpYy5oJywgdG8gYmUgcmVmZXJyZWQgKi8KKyAgLyogICAgYnkgdGhlIG1vZHVsZSBkZWZpbml0aW9uIGNhbGxpbmcgYEZUX0RFRklORV9NT0RVTEUnIGluIHRoZSAgICAgICAgICovCisgIC8qICAgIGZvbGxvd2luZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBub3QgZGVmaW5lZCB0aGUgc3RydWN0IHdpbGwgYmUgICAgICAgICovCisgIC8qICAgIGFsbG9jYXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlIChvciB0aGUgc2NvcGUgd2hlcmUgdGhlIG1hY3JvICAgICAgICAqLworICAvKiAgICBpcyB1c2VkKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxNYWNybz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUZJTkVfUk9PVF9NT0RVTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBVc2VkIHRvIGluaXRpYWxpemUgYW4gaW5zdGFuY2Ugb2YgYW4gRlRfTW9kdWxlX0NsYXNzIHN0cnVjdCBpbnNpZGUgKi8KKyAgLyogICAgYW5vdGhlciBzdHJ1Y3QgdGhhdCBjb250YWlucyBpdCBvciBpbiBhIGZ1bmN0aW9uIHRoYXQgaW5pdGlhbGl6ZXMgICovCisgIC8qICAgIHRoYXQgY29udGFpbmluZyBzdHJ1Y3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUNMQVJFX01PRFVMRSggY2xhc3NfICkgIFwKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUgICAgICAgICAgICAgICAgICBcCisgIGNvbnN0IEZUX01vZHVsZV9DbGFzcyAgY2xhc3NfOworCisjZGVmaW5lIEZUX0RFRklORV9ST09UX01PRFVMRSggIFwKKyAgICAgICAgICBmbGFnc18sICAgICAgICAgICAgICAgXAorICAgICAgICAgIHNpemVfLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbmFtZV8sICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICAgICAgXAorICAgICAgICAgIHJlcXVpcmVzXywgICAgICAgICAgICBcCisgICAgICAgICAgaW50ZXJmYWNlXywgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0XywgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8gKSAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZsYWdzXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG5hbWVfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdmVyc2lvbl8sICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXF1aXJlc18sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfaW50ZXJmYWNlXywgICAgICAgICAgICAgXAorICB9LAorCisjZGVmaW5lIEZUX0RFRklORV9NT0RVTEUoICAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmbGFnc18sICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIG5hbWVfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgXAorICAgICAgICAgIGludGVyZmFjZV8sICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0XywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9pbnRlcmZhY2VfICkgICAgICAgIFwKKyAgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGICAgICAgICAgICBcCisgIGNvbnN0IEZUX01vZHVsZV9DbGFzcyBjbGFzc18gPSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBmbGFnc18sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBuYW1lXywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdmVyc2lvbl8sICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJlcXVpcmVzXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbml0XywgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9pbnRlcmZhY2VfLCAgICAgICAgICAgICAgIFwKKyAgfTsKKworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFQ0xBUkVfTU9EVUxFKCBjbGFzc18gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NyZWF0ZV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgbGlicmFyeSwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Nb2R1bGVfQ2xhc3MqKiAgb3V0cHV0X2NsYXNzICk7ICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlX0NsYXNzKiAgY2xhenogKTsKKworI2RlZmluZSBGVF9ERUZJTkVfUk9PVF9NT0RVTEUoICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmbGFnc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIG5hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB2ZXJzaW9uXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGludGVyZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbml0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9pbnRlcmZhY2VfICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cm9vdC5tb2R1bGVfZmxhZ3MgICAgID0gZmxhZ3NfOyAgICAgICAgICBcCisgICAgY2xhenotPnJvb3QubW9kdWxlX3NpemUgICAgICA9IHNpemVfOyAgICAgICAgICAgXAorICAgIGNsYXp6LT5yb290Lm1vZHVsZV9uYW1lICAgICAgPSBuYW1lXzsgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cm9vdC5tb2R1bGVfdmVyc2lvbiAgID0gdmVyc2lvbl87ICAgICAgICBcCisgICAgY2xhenotPnJvb3QubW9kdWxlX3JlcXVpcmVzICA9IHJlcXVpcmVzXzsgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cm9vdC5tb2R1bGVfaW50ZXJmYWNlID0gaW50ZXJmYWNlXzsgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5yb290Lm1vZHVsZV9pbml0ICAgICAgPSBpbml0XzsgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cm9vdC5tb2R1bGVfZG9uZSAgICAgID0gZG9uZV87ICAgICAgICAgICBcCisgICAgY2xhenotPnJvb3QuZ2V0X2ludGVyZmFjZSAgICA9IGdldF9pbnRlcmZhY2VfOworCisjZGVmaW5lIEZUX0RFRklORV9NT0RVTEUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZsYWdzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBuYW1lXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHZlcnNpb25fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgcmVxdWlyZXNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZG9uZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfaW50ZXJmYWNlXyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Nb2R1bGVfQ2xhc3MqICBjbGF6eiApICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5IG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhc3NfICMjIF9waWNfZnJlZSggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGNsYXp6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggY2xhenogKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ3JlYXRlX0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICBsaWJyYXJ5LCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlX0NsYXNzKiogIG91dHB1dF9jbGFzcyApICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01vZHVsZV9DbGFzcyogIGNsYXp6ICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfRXJyb3IgICAgICAgICAgZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBGVF9BTExPQyggY2xhenosIHNpemVvZiAoICpjbGF6eiApICkgKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yID0gY2xhc3NfICMjIF9waWNfaW5pdCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBlcnJvciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggY2xhenogKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPm1vZHVsZV9mbGFncyAgICAgPSBmbGFnc187ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bW9kdWxlX3NpemUgICAgICA9IHNpemVfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5tb2R1bGVfbmFtZSAgICAgID0gbmFtZV87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPm1vZHVsZV92ZXJzaW9uICAgPSB2ZXJzaW9uXzsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bW9kdWxlX3JlcXVpcmVzICA9IHJlcXVpcmVzXzsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPm1vZHVsZV9pbnRlcmZhY2UgPSBpbnRlcmZhY2VfOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5tb2R1bGVfaW5pdCAgICAgID0gaW5pdF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPm1vZHVsZV9kb25lICAgICAgPSBkb25lXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X2ludGVyZmFjZSAgICA9IGdldF9pbnRlcmZhY2VfOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKm91dHB1dF9jbGFzcyA9IGNsYXp6OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19GVE9CSlNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHBpYy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRwaWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODVjZTdhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRwaWMuaApAQCAtMCwwICsxLDcxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHBpYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUgc2VydmljZXMgKGRlY2xhcmF0aW9uKS4gICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIE1vZHVsZXMgdGhhdCBvcmRpbmFyaWx5IGhhdmUgY29uc3QgZ2xvYmFsIGRhdGEgdGhhdCBuZWVkIGFkZHJlc3MgICAgICovCisgIC8qICBjYW4gaW5zdGVhZCBkZWZpbmUgcG9pbnRlcnMgaGVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUUElDX0hfXworI2RlZmluZSBfX0ZUUElDX0hfXworCisKK0ZUX0JFR0lOX0hFQURFUgorCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworICB0eXBlZGVmIHN0cnVjdCAgRlRfUElDX0NvbnRhaW5lcl8KKyAgeworICAgIC8qIHBpYyBjb250YWluZXJzIGZvciBiYXNlICovCisgICAgdm9pZCogIGJhc2U7CisKKyAgICAvKiBwaWMgY29udGFpbmVycyBmb3IgbW9kdWxlcyAqLworICAgIHZvaWQqICBhdXRvZml0OworICAgIHZvaWQqICBjZmY7CisgICAgdm9pZCogIHBzaGludGVyOworICAgIHZvaWQqICBwc25hbWVzOworICAgIHZvaWQqICByYXN0ZXI7CisgICAgdm9pZCogIHNmbnQ7CisgICAgdm9pZCogIHNtb290aDsKKyAgICB2b2lkKiAgdHJ1ZXR5cGU7CisKKyAgfSBGVF9QSUNfQ29udGFpbmVyOworCisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgdmFyaW91cyBmdW5jdGlvbiB0YWJsZXMsIHN0cnVjdHMsIGV0Yy4gKi8KKyAgLyogc3RvcmVkIGluIHRoZSBjb250YWluZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBmdF9waWNfY29udGFpbmVyX2luaXQoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworCisgIC8qIERlc3Ryb3kgdGhlIGNvbnRlbnRzIG9mIHRoZSBjb250YWluZXIuICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBmdF9waWNfY29udGFpbmVyX2Rlc3Ryb3koIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUUElDX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTEyNGIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHJmb3JrLmgKQEAgLTAsMCArMSwyNTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0cmZvcmsuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBFbWJlZGRlZCByZXNvdXJjZSBmb3JrcyBhY2Nlc3NvciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNCwgMjAwNiwgMjAwNywgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgTWFzYXRha2UgWUFNQVRPIGFuZCBSZWRoYXQgSy5LLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBEZXZlbG9wbWVudCBvZiB0aGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgc3VwcG9ydCBvZiAgICAgICAgICAgICAgICAgICAgICAqLworLyogSW5mb3JtYXRpb24tdGVjaG5vbG9neSBQcm9tb3Rpb24gQWdlbmN5LCBKYXBhbi4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUUkZPUktfSF9fCisjZGVmaW5lIF9fRlRSRk9SS19IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmdG9ianMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qIE51bWJlciBvZiBndWVzc2luZyBydWxlcyBzdXBwb3J0ZWQgaW4gYEZUX1JhY2Nlc3NfR3Vlc3MnLiAgICAgICAgICAgICovCisgIC8qIERvbid0IGZvcmdldCB0byBpbmNyZW1lbnQgdGhlIG51bWJlciBpZiB5b3UgYWRkIGEgbmV3IGd1ZXNzaW5nIHJ1bGUuICovCisjZGVmaW5lIEZUX1JBQ0NFU1NfTl9SVUxFUyAgOQorCisKKyAgLyogQSBzdHJ1Y3R1cmUgdG8gZGVzY3JpYmUgYSByZWZlcmVuY2UgaW4gYSByZXNvdXJjZSBieSBpdHMgcmVzb3VyY2UgSUQgKi8KKyAgLyogYW5kIGludGVybmFsIG9mZnNldC4gIFRoZSBgUE9TVCcgcmVzb3VyY2UgZXhwZWN0cyB0byBiZSBjb25jYXRlbmF0ZWQgKi8KKyAgLyogYnkgdGhlIG9yZGVyIG9mIHJlc291cmNlIElEcyBpbnN0ZWFkIG9mIGl0cyBhcHBlYXJhbmNlIGluIHRoZSBmaWxlLiAgKi8KKworICB0eXBlZGVmIHN0cnVjdCAgRlRfUkZvcmtfUmVmXworICB7CisgICAgRlRfVVNob3J0ICByZXNfaWQ7CisgICAgRlRfVUxvbmcgICBvZmZzZXQ7CisKKyAgfSBGVF9SRm9ya19SZWY7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0dVRVNTSU5HX0VNQkVEREVEX1JGT1JLCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpmdF9yYWNjZXNzX2d1ZXNzX2Z1bmMpKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICpiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgKipyZXN1bHRfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKTsKKworICB0eXBlZGVmIGVudW0gIEZUX1JGb3JrX1J1bGVfIHsKKyAgICBGVF9SRm9ya19SdWxlX2ludmFsaWQgPSAtMiwKKyAgICBGVF9SRm9ya19SdWxlX3Vrbm93biwgLyogLTEgKi8KKyAgICBGVF9SRm9ya19SdWxlX2FwcGxlX2RvdWJsZSwKKyAgICBGVF9SRm9ya19SdWxlX2FwcGxlX3NpbmdsZSwKKyAgICBGVF9SRm9ya19SdWxlX2Rhcndpbl91ZnNfZXhwb3J0LAorICAgIEZUX1JGb3JrX1J1bGVfZGFyd2luX25ld3ZmcywKKyAgICBGVF9SRm9ya19SdWxlX2Rhcndpbl9oZnNwbHVzLAorICAgIEZUX1JGb3JrX1J1bGVfdmZhdCwKKyAgICBGVF9SRm9ya19SdWxlX2xpbnV4X2NhcCwKKyAgICBGVF9SRm9ya19SdWxlX2xpbnV4X2RvdWJsZSwKKyAgICBGVF9SRm9ya19SdWxlX2xpbnV4X25ldGF0YWxrCisgIH0gRlRfUkZvcmtfUnVsZTsKKworICAvKiBGb3IgZmFzdCB0cmFuc2xhdGlvbiBiZXR3ZWVuIHJ1bGUgaW5kZXggYW5kIHJ1bGUgdHlwZSwKKyAgICogdGhlIG1hY3JvcyBGVF9SRk9SS194eHggc2hvdWxkIGJlIGtlcHQgY29uc2lzdGVudCB3aXRoCisgICAqIHRoZSByYWNjZXNzX2d1ZXNzX2Z1bmNzIHRhYmxlCisgICAqLworICB0eXBlZGVmIHN0cnVjdCBmdF9yYWNjZXNzX2d1ZXNzX3JlY18geworICAgIGZ0X3JhY2Nlc3NfZ3Vlc3NfZnVuYyAgZnVuYzsKKyAgICBGVF9SRm9ya19SdWxlICAgICAgICAgIHR5cGU7CisgIH0gZnRfcmFjY2Vzc19ndWVzc19yZWM7CisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworICAvKiB0aGlzIGFycmF5IGlzIGEgc3RvcmFnZSBpbiBub24tUElDIG1vZGUsIHNvIDsgaXMgbmVlZGVkIGluIEVORCAqLworI2RlZmluZSBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0JFR0lOKCBuYW1lLCB0eXBlICkgIFwKKyAgICAgICAgICBjb25zdCB0eXBlIG5hbWVbXSA9IHsKKyNkZWZpbmUgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWSggZnVuY19zdWZmaXgsIHR5cGVfc3VmZml4ICkgIFwKKyAgICAgICAgICB7IHJhY2Nlc3NfZ3Vlc3NfICMjIGZ1bmNfc3VmZml4LCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZUX1JGb3JrX1J1bGVfICMjIHR5cGVfc3VmZml4IH0sCisjZGVmaW5lIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5EICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIC8qIHRoaXMgYXJyYXkgaXMgYSBmdW5jdGlvbiBpbiBQSUMgbW9kZSwgc28gbm8gOyBpcyBuZWVkZWQgaW4gRU5EICovCisjZGVmaW5lIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfQkVHSU4oIG5hbWUsIHR5cGUgKSAgXAorICAgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9Jbml0XyAjIyBuYW1lKCB0eXBlKiAgc3RvcmFnZSApICAgICAgICAgICBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdHlwZSogIGxvY2FsID0gc3RvcmFnZTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50ICBpID0gMDsKKyNkZWZpbmUgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWSggZnVuY19zdWZmaXgsIHR5cGVfc3VmZml4ICkgIFwKKyAgICAgICAgICBsb2NhbFtpXS5mdW5jID0gcmFjY2Vzc19ndWVzc18gIyMgZnVuY19zdWZmaXg7ICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2NhbFtpXS50eXBlID0gRlRfUkZvcmtfUnVsZV8gIyMgdHlwZV9zdWZmaXg7ICAgICAgICAgICAgIFwKKyAgICAgICAgICBpKys7CisjZGVmaW5lIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5EICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9HVUVTU0lOR19FTUJFRERFRF9SRk9SSyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmFjY2Vzc19HdWVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR3Vlc3MgYSBmaWxlIG5hbWUgYW5kIG9mZnNldCB3aGVyZSB0aGUgYWN0dWFsIHJlc291cmNlIGZvcmsgaXMgICAgICovCisgIC8qICAgIHN0b3JlZC4gIFRoZSBtYWNybyBGVF9SQUNDRVNTX05fUlVMRVMgaG9sZHMgdGhlIG51bWJlciBvZiAgICAgICAgICAqLworICAvKiAgICBndWVzc2luZyBydWxlczsgIHRoZSBndWVzc2VkIHJlc3VsdCBmb3IgdGhlIE50aCBydWxlIGlzICAgICAgICAgICAgKi8KKyAgLyogICAgcmVwcmVzZW50ZWQgYXMgYSB0cmlwbGV0OiBhIG5ldyBmaWxlIG5hbWUgKG5ld19uYW1lc1tOXSksIGEgZmlsZSAgICovCisgIC8qICAgIG9mZnNldCAob2Zmc2V0c1tOXSksIGFuZCBhbiBlcnJvciBjb2RlIChlcnJvcnNbTl0pLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxpYnJhcnkgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEEgRnJlZVR5cGUgbGlicmFyeSBpbnN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEEgZmlsZSBzdHJlYW0gY29udGFpbmluZyB0aGUgcmVzb3VyY2UgZm9yay4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJhc2VfbmFtZSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSAoYmFzZSkgZmlsZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBmb3JrIHVzZWQgZm9yIHNvbWUgICAgICAgICAgKi8KKyAgLyogICAgICBndWVzc2luZyBydWxlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbmV3X25hbWVzIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQW4gYXJyYXkgb2YgZ3Vlc3NlZCBmaWxlIG5hbWVzIGluIHdoaWNoIHRoZSByZXNvdXJjZSBmb3JrcyBtYXkgICAqLworICAvKiAgICAgIGV4aXN0LiAgSWYgYG5ld19uYW1lc1tOXScgaXMgTlVMTCwgdGhlIGd1ZXNzZWQgZmlsZSBuYW1lIGlzICAgICAgKi8KKyAgLyogICAgICBlcXVhbCB0byBgYmFzZV9uYW1lJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvZmZzZXRzIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBbiBhcnJheSBvZiBndWVzc2VkIGZpbGUgb2Zmc2V0cy4gIGBvZmZzZXRzW05dJyBob2xkcyB0aGUgZmlsZSAgICovCisgIC8qICAgICAgb2Zmc2V0IG9mIHRoZSBwb3NzaWJsZSBzdGFydCBvZiB0aGUgcmVzb3VyY2UgZm9yayBpbiBmaWxlICAgICAgICAqLworICAvKiAgICAgIGBuZXdfbmFtZXNbTl0nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGVycm9ycyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIEFuIGFycmF5IG9mIEZyZWVUeXBlIGVycm9yIGNvZGVzLiAgYGVycm9yc1tOXScgaXMgdGhlIGVycm9yICAgICAgKi8KKyAgLyogICAgICBjb2RlIG9mIE50aCBndWVzc2luZyBydWxlIGZ1bmN0aW9uLiAgSWYgYGVycm9yc1tOXScgaXMgbm90ICAgICAgICovCisgIC8qICAgICAgRlRfRXJyX09rLCBgbmV3X25hbWVzW05dJyBhbmQgYG9mZnNldHNbTl0nIGFyZSBtZWFuaW5nbGVzcy4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX1JhY2Nlc3NfR3Vlc3MoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgY2hhciogICAgICAgYmFzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICBjaGFyKiogICAgICBuZXdfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICAgIG9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgIGVycm9ycyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmFjY2Vzc19HZXRfSGVhZGVySW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR2V0IHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBoZWFkZXIgb2YgcmVzb3VyY2UgZm9yay4gIFRoZSAgICAgICAgICovCisgIC8qICAgIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBmaWxlIG9mZnNldCB3aGVyZSB0aGUgcmVzb3VyY2UgbWFwICAgICAgICAqLworICAvKiAgICBzdGFydHMsIGFuZCB0aGUgZmlsZSBvZmZzZXQgd2hlcmUgdGhlIHJlc291cmNlIGRhdGEgc3RhcnRzLiAgICAgICAgKi8KKyAgLyogICAgYEZUX1JhY2Nlc3NfR2V0X0RhdGFPZmZzZXRzJyByZXF1aXJlcyB0aGVzZSB0d28gZGF0YS4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGlicmFyeSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSBGcmVlVHlwZSBsaWJyYXJ5IGluc3RhbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgQSBmaWxlIHN0cmVhbSBjb250YWluaW5nIHRoZSByZXNvdXJjZSBmb3JrLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmZvcmtfb2Zmc2V0IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIGZpbGUgb2Zmc2V0IHdoZXJlIHRoZSByZXNvdXJjZSBmb3JrIHN0YXJ0cy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hcF9vZmZzZXQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBmaWxlIG9mZnNldCB3aGVyZSB0aGUgcmVzb3VyY2UgbWFwIHN0YXJ0cy4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJkYXRhX3BvcyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBmaWxlIG9mZnNldCB3aGVyZSB0aGUgcmVzb3VyY2UgZGF0YSBzdGFydHMuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgRlRfRXJyX09rIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfUmFjY2Vzc19HZXRfSGVhZGVySW5mbyggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICByZm9ya19vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKm1hcF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJkYXRhX3BvcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfUmFjY2Vzc19HZXRfRGF0YU9mZnNldHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR2V0IHRoZSBkYXRhIG9mZnNldHMgZm9yIGEgdGFnIGluIGEgcmVzb3VyY2UgZm9yay4gIE9mZnNldHMgYXJlICAgICovCisgIC8qICAgIHN0b3JlZCBpbiBhbiBhcnJheSBiZWNhdXNlLCBpbiBzb21lIGNhc2VzLCByZXNvdXJjZXMgaW4gYSByZXNvdXJjZSAqLworICAvKiAgICBmb3JrIGhhdmUgdGhlIHNhbWUgdGFnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsaWJyYXJ5IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIEZyZWVUeXBlIGxpYnJhcnkgaW5zdGFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIGZpbGUgc3RyZWFtIGNvbnRhaW5pbmcgdGhlIHJlc291cmNlIGZvcmsuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXBfb2Zmc2V0IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgZmlsZSBvZmZzZXQgd2hlcmUgdGhlIHJlc291cmNlIG1hcCBzdGFydHMuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZGF0YV9wb3MgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgZmlsZSBvZmZzZXQgd2hlcmUgdGhlIHJlc291cmNlIGRhdGEgc3RhcnRzLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWcgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgcmVzb3VyY2UgdGFnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb2Zmc2V0cyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIHN0cmVhbSBvZmZzZXRzIGZvciB0aGUgcmVzb3VyY2UgZGF0YSBzcGVjaWZpZWQgYnkgYHRhZycuICAgICAqLworICAvKiAgICAgIFRoaXMgYXJyYXkgaXMgYWxsb2NhdGVkIGJ5IHRoZSBmdW5jdGlvbiwgc28geW91IGhhdmUgdG8gY2FsbCAgICAgKi8KKyAgLyogICAgICBAZnRfbWVtX2ZyZWUgYWZ0ZXIgdXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb3VudCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgbGVuZ3RoIG9mIG9mZnNldHMgYXJyYXkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIEZUX0Vycl9PayBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm9ybWFsbHkgeW91IHNob3VsZCB1c2UgYEZUX1JhY2Nlc3NfR2V0X0hlYWRlckluZm8nIHRvIGdldCB0aGUgICAgICovCisgIC8qICAgIHZhbHVlIGZvciBgbWFwX29mZnNldCcgYW5kIGByZGF0YV9wb3MnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9SYWNjZXNzX0dldF9EYXRhT2Zmc2V0cyggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIG1hcF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICByZGF0YV9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICB0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgKipvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqY291bnQgKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUUkZPUktfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNWZiZDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaApAQCAtMCwwICsxLDc2MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRzZXJ2LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLTIwMDcsIDIwMDksIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBFYWNoIG1vZHVsZSBjYW4gZXhwb3J0IG9uZSBvciBtb3JlIGBzZXJ2aWNlcycuICBFYWNoIHNlcnZpY2UgaXMgICAgICAqLworICAvKiAgaWRlbnRpZmllZCBieSBhIGNvbnN0YW50IHN0cmluZyBhbmQgbW9kZWxlZCBieSBhIHBvaW50ZXI7IHRoZSBsYXR0ZXIgKi8KKyAgLyogIGdlbmVyYWxseSBjb3JyZXNwb25kcyB0byBhIHN0cnVjdHVyZSBjb250YWluaW5nIGZ1bmN0aW9uIHBvaW50ZXJzLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgTm90ZSB0aGF0IGEgc2VydmljZSdzIGRhdGEgY2Fubm90IGJlIGEgbWVyZSBmdW5jdGlvbiBwb2ludGVyIGJlY2F1c2UgKi8KKyAgLyogIGluIEMgaXQgaXMgcG9zc2libGUgdGhhdCBmdW5jdGlvbiBwb2ludGVycyBtaWdodCBiZSBpbXBsZW1lbnRlZCAgICAgICovCisgIC8qICBkaWZmZXJlbnRseSB0aGFuIGRhdGEgcG9pbnRlcnMgKGUuZy4gNDggYml0cyBpbnN0ZWFkIG9mIDMyKS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUU0VSVl9IX18KKyNkZWZpbmUgX19GVFNFUlZfSF9fCisKKworRlRfQkVHSU5fSEVBREVSCisKKyAgLyoKKyAgICogQG1hY3JvOgorICAgKiAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gbG9vayB1cCBhIHNlcnZpY2UgZnJvbSBhIGZhY2UncyBkcml2ZXIgbW9kdWxlLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgZmFjZSA6OgorICAgKiAgICAgVGhlIHNvdXJjZSBmYWNlIGhhbmRsZS4KKyAgICoKKyAgICogICBpZCA6OgorICAgKiAgICAgQSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgc2VydmljZSBhcyBkZWZpbmVkIGluIHRoZSBzZXJ2aWNlJ3MKKyAgICogICAgIGhlYWRlciBmaWxlcyAoZS5nLiBGVF9TRVJWSUNFX0lEX01VTFRJX01BU1RFUlMgd2hpY2ggZXhwYW5kcyB0bworICAgKiAgICAgYG11bHRpLW1hc3RlcnMnKS4gIEl0IGlzIGF1dG9tYXRpY2FsbHkgcHJlZml4ZWQgd2l0aAorICAgKiAgICAgYEZUX1NFUlZJQ0VfSURfJy4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICBwdHIgOjoKKyAgICogICAgIEEgdmFyaWFibGUgdGhhdCByZWNlaXZlcyB0aGUgc2VydmljZSBwb2ludGVyLiAgV2lsbCBiZSBOVUxMCisgICAqICAgICBpZiBub3QgZm91bmQuCisgICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCisKKyNkZWZpbmUgRlRfRkFDRV9GSU5EX1NFUlZJQ0UoIGZhY2UsIHB0ciwgaWQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0JFR0lOX1NUTU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01vZHVsZSAgICBtb2R1bGUgPSBGVF9NT0RVTEUoIEZUX0ZBQ0UoIGZhY2UgKS0+ZHJpdmVyICk7ICAgICAgICAgICAgIFwKKyAgICBGVF9Qb2ludGVyICAgX3RtcF8gID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfUG9pbnRlciogIF9wcHRyXyA9IChGVF9Qb2ludGVyKikmKHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBtb2R1bGUtPmNsYXp6LT5nZXRfaW50ZXJmYWNlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX3RtcF8gPSBtb2R1bGUtPmNsYXp6LT5nZXRfaW50ZXJmYWNlKCBtb2R1bGUsIEZUX1NFUlZJQ0VfSURfICMjIGlkICk7IFwKKyAgICAqX3BwdHJfID0gX3RtcF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0VORF9TVE1OVAorCisjZWxzZSAvKiAhQysrICovCisKKyNkZWZpbmUgRlRfRkFDRV9GSU5EX1NFUlZJQ0UoIGZhY2UsIHB0ciwgaWQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0JFR0lOX1NUTU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01vZHVsZSAgIG1vZHVsZSA9IEZUX01PRFVMRSggRlRfRkFDRSggZmFjZSApLT5kcml2ZXIgKTsgICAgICAgICAgICAgIFwKKyAgICBGVF9Qb2ludGVyICBfdG1wXyAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggbW9kdWxlLT5jbGF6ei0+Z2V0X2ludGVyZmFjZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIF90bXBfID0gbW9kdWxlLT5jbGF6ei0+Z2V0X2ludGVyZmFjZSggbW9kdWxlLCBGVF9TRVJWSUNFX0lEXyAjIyBpZCApOyBcCisgICAgcHRyID0gX3RtcF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9FTkRfU1RNTlQKKworI2VuZGlmIC8qICFDKysgKi8KKworCisgIC8qCisgICAqIEBtYWNybzoKKyAgICogICBGVF9GQUNFX0ZJTkRfR0xPQkFMX1NFUlZJQ0UKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoaXMgbWFjcm8gaXMgdXNlZCB0byBsb29rIHVwIGEgc2VydmljZSBmcm9tIGFsbCBtb2R1bGVzLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgZmFjZSA6OgorICAgKiAgICAgVGhlIHNvdXJjZSBmYWNlIGhhbmRsZS4KKyAgICoKKyAgICogICBpZCA6OgorICAgKiAgICAgQSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgc2VydmljZSBhcyBkZWZpbmVkIGluIHRoZSBzZXJ2aWNlJ3MKKyAgICogICAgIGhlYWRlciBmaWxlcyAoZS5nLiBGVF9TRVJWSUNFX0lEX01VTFRJX01BU1RFUlMgd2hpY2ggZXhwYW5kcyB0bworICAgKiAgICAgYG11bHRpLW1hc3RlcnMnKS4gIEl0IGlzIGF1dG9tYXRpY2FsbHkgcHJlZml4ZWQgd2l0aAorICAgKiAgICAgYEZUX1NFUlZJQ0VfSURfJy4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICBwdHIgOjoKKyAgICogICAgIEEgdmFyaWFibGUgdGhhdCByZWNlaXZlcyB0aGUgc2VydmljZSBwb2ludGVyLiAgV2lsbCBiZSBOVUxMCisgICAqICAgICBpZiBub3QgZm91bmQuCisgICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCisKKyNkZWZpbmUgRlRfRkFDRV9GSU5EX0dMT0JBTF9TRVJWSUNFKCBmYWNlLCBwdHIsIGlkICkgICAgICAgICAgICAgICBcCisgIEZUX0JFR0lOX1NUTU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01vZHVsZSAgICBtb2R1bGUgPSBGVF9NT0RVTEUoIEZUX0ZBQ0UoIGZhY2UgKS0+ZHJpdmVyICk7ICAgIFwKKyAgICBGVF9Qb2ludGVyICAgX3RtcF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfUG9pbnRlciogIF9wcHRyXyA9IChGVF9Qb2ludGVyKikmKHB0cik7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX3RtcF8gPSBmdF9tb2R1bGVfZ2V0X3NlcnZpY2UoIG1vZHVsZSwgRlRfU0VSVklDRV9JRF8gIyMgaWQgKTsgXAorICAgICpfcHB0cl8gPSBfdG1wXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRU5EX1NUTU5UCisKKyNlbHNlIC8qICFDKysgKi8KKworI2RlZmluZSBGVF9GQUNFX0ZJTkRfR0xPQkFMX1NFUlZJQ0UoIGZhY2UsIHB0ciwgaWQgKSAgICAgICAgICAgICAgIFwKKyAgRlRfQkVHSU5fU1RNTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTW9kdWxlICAgbW9kdWxlID0gRlRfTU9EVUxFKCBGVF9GQUNFKCBmYWNlICktPmRyaXZlciApOyAgICAgXAorICAgIEZUX1BvaW50ZXIgIF90bXBfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF90bXBfID0gZnRfbW9kdWxlX2dldF9zZXJ2aWNlKCBtb2R1bGUsIEZUX1NFUlZJQ0VfSURfICMjIGlkICk7IFwKKyAgICBwdHIgICA9IF90bXBfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0VORF9TVE1OVAorCisjZW5kaWYgLyogIUMrKyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgUyBFIFIgViBJIEMgRSAgIEQgRSBTIEMgUiBJIFAgVCBPIFIgUyAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoKKyAgICogIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGlzIHVzZWQgdG8gX2Rlc2NyaWJlXyBhIGdpdmVuIHNlcnZpY2UKKyAgICogIHRvIHRoZSBsaWJyYXJ5LiAgVGhpcyBpcyB1c2VmdWwgdG8gYnVpbGQgc2ltcGxlIHN0YXRpYyBzZXJ2aWNlIGxpc3RzLgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1NlcnZpY2VEZXNjUmVjXworICB7CisgICAgY29uc3QgY2hhciogIHNlcnZfaWQ7ICAgICAvKiBzZXJ2aWNlIG5hbWUgICAgICAgICAqLworICAgIGNvbnN0IHZvaWQqICBzZXJ2X2RhdGE7ICAgLyogc2VydmljZSBwb2ludGVyL2RhdGEgKi8KKworICB9IEZUX1NlcnZpY2VEZXNjUmVjOworCisgIHR5cGVkZWYgY29uc3QgRlRfU2VydmljZURlc2NSZWMqICBGVF9TZXJ2aWNlRGVzYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE1hY3JvPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzZWQgdG8gaW5pdGlhbGl6ZSBhbiBhcnJheSBvZiBGVF9TZXJ2aWNlRGVzY1JlYyBzdHJ1Y3R1cmVzLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgV2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBkZWZpbmVkIGEgYGNyZWF0ZScgZnVuY3Rpb24gbmVlZHMgdG8gICovCisgIC8qICAgIGJlIGNhbGxlZCB3aXRoIGEgcG9pbnRlciB0byByZXR1cm4gYW4gYWxsb2NhdGVkIGFycmF5LiAgQXMgc29vbiBhcyAqLworICAvKiAgICBpdCBpcyBubyBsb25nZXIgbmVlZGVkLCBhIGBkZXN0cm95JyBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgdG8gKi8KKyAgLyogICAgcmVsZWFzZSB0aGF0IGFsbG9jYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG1hbnVhbGx5IGNhbGxlZCBmcm9tIHRoZSBgcGljX2luaXQnIGFuZCAgKi8KKyAgLyogICAgYHBpY19mcmVlJyBmdW5jdGlvbnMgb2YgeW91ciBtb2R1bGUgKHNlZSBGVF9ERUZJTkVfTU9EVUxFKS4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBXaGVuIEZUX0NPTkZJR19PUFRJT05fUElDIGlzIG5vdCBkZWZpbmVkIHRoZSBhcnJheSB3aWxsIGJlICAgICAgICAgKi8KKyAgLyogICAgYWxsb2NhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUgKG9yIHRoZSBzY29wZSB3aGVyZSB0aGUgbWFjcm8gaXMgICAgICovCisgIC8qICAgIHVzZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUMxKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSApICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlRGVzY1JlYyAgY2xhc3NfW10gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBOVUxMLCBOVUxMIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzIoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiApICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlRGVzY1JlYyAgY2xhc3NfW10gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgTlVMTCwgTlVMTCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUMzKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zICkgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VEZXNjUmVjICBjbGFzc19bXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgTlVMTCwgTlVMTCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM0KCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF80LCBzZXJ2X2RhdGFfNCApICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlRGVzY1JlYyAgY2xhc3NfW10gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8zLCBzZXJ2X2RhdGFfMyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfNCwgc2Vydl9kYXRhXzQgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBOVUxMLCBOVUxMIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzUoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMywgc2Vydl9kYXRhXzMsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzQsIHNlcnZfZGF0YV80LCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF81LCBzZXJ2X2RhdGFfNSApICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlRGVzY1JlYyAgY2xhc3NfW10gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8zLCBzZXJ2X2RhdGFfMyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfNCwgc2Vydl9kYXRhXzQgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzUsIHNlcnZfZGF0YV81IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgTlVMTCwgTlVMTCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM2KCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF80LCBzZXJ2X2RhdGFfNCwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNSwgc2Vydl9kYXRhXzUsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzYsIHNlcnZfZGF0YV82ICkgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VEZXNjUmVjICBjbGFzc19bXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF80LCBzZXJ2X2RhdGFfNCB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfNSwgc2Vydl9kYXRhXzUgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzYsIHNlcnZfZGF0YV82IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgTlVMTCwgTlVMTCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM3KCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF80LCBzZXJ2X2RhdGFfNCwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNSwgc2Vydl9kYXRhXzUsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzYsIHNlcnZfZGF0YV82LCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF83LCBzZXJ2X2RhdGFfNyApICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlRGVzY1JlYyAgY2xhc3NfW10gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF8zLCBzZXJ2X2RhdGFfMyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfNCwgc2Vydl9kYXRhXzQgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBzZXJ2X2lkXzUsIHNlcnZfZGF0YV81IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2Vydl9pZF82LCBzZXJ2X2RhdGFfNiB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IHNlcnZfaWRfNywgc2Vydl9kYXRhXzcgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyBOVUxMLCBOVUxMIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzEoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xICkgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogKSAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBjbGF6eiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggY2xhenogKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ3JlYXRlX0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyoqICBvdXRwdXRfY2xhc3MgKSAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfRXJyb3IgICAgICAgICAgICBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggRlRfQUxMT0MoIGNsYXp6LCBzaXplb2YgKCAqY2xhenogKSAqIDIgKSApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfaWQgICA9IHNlcnZfaWRfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elswXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9pZCAgID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzFdLnNlcnZfZGF0YSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKm91dHB1dF9jbGFzcyA9IGNsYXp6OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gRlRfRXJyX09rOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUMyKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIgKSAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRGVzdHJveV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqICBjbGF6eiApICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGNsYXp6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCBjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9DcmVhdGVfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiogIG91dHB1dF9jbGFzcyApICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9FcnJvciAgICAgICAgICAgIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICAgICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBGVF9BTExPQyggY2xhenosIHNpemVvZiAoICpjbGF6eiApICogMyApICkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMF0uc2Vydl9pZCAgID0gc2Vydl9pZF8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsxXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzJdLnNlcnZfaWQgICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsyXS5zZXJ2X2RhdGEgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICpvdXRwdXRfY2xhc3MgPSBjbGF6ejsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIEZUX0Vycl9PazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDMyggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8zLCBzZXJ2X2RhdGFfMyApICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9EZXN0cm95X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICkgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggY2xhenogKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0ZSRUUoIGNsYXp6ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NyZWF0ZV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqKiAgb3V0cHV0X2NsYXNzICkgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfU2VydmljZURlc2NSZWMqICBjbGF6eiAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX0Vycm9yICAgICAgICAgICAgZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgICAgICAgICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIEZUX0FMTE9DKCBjbGF6eiwgc2l6ZW9mICggKmNsYXp6ICkgKiA0ICkgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elswXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMF0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzFdLnNlcnZfaWQgICA9IHNlcnZfaWRfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsxXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMl0uc2Vydl9pZCAgID0gc2Vydl9pZF8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzJdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elszXS5zZXJ2X2lkICAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbM10uc2Vydl9kYXRhID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqb3V0cHV0X2NsYXNzID0gY2xheno7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzQoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMywgc2Vydl9kYXRhXzMsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzQsIHNlcnZfZGF0YV80ICkgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogKSAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBjbGF6eiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggY2xhenogKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ3JlYXRlX0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyoqICBvdXRwdXRfY2xhc3MgKSAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfRXJyb3IgICAgICAgICAgICBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggRlRfQUxMT0MoIGNsYXp6LCBzaXplb2YgKCAqY2xhenogKSAqIDUgKSApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfaWQgICA9IHNlcnZfaWRfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elswXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9pZCAgID0gc2Vydl9pZF8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzFdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsyXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMl0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzNdLnNlcnZfaWQgICA9IHNlcnZfaWRfNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elszXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNF0uc2Vydl9pZCAgID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzRdLnNlcnZfZGF0YSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKm91dHB1dF9jbGFzcyA9IGNsYXp6OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gRlRfRXJyX09rOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM1KCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8xLCBzZXJ2X2RhdGFfMSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMiwgc2Vydl9kYXRhXzIsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzMsIHNlcnZfZGF0YV8zLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF80LCBzZXJ2X2RhdGFfNCwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNSwgc2Vydl9kYXRhXzUgKSAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRGVzdHJveV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqICBjbGF6eiApICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGNsYXp6ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GUkVFKCBjbGF6eiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9DcmVhdGVfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiogIG91dHB1dF9jbGFzcyApICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9FcnJvciAgICAgICAgICAgIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICAgICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBGVF9BTExPQyggY2xhenosIHNpemVvZiAoICpjbGF6eiApICogNiApICkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMF0uc2Vydl9pZCAgID0gc2Vydl9pZF8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsxXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzJdLnNlcnZfaWQgICA9IHNlcnZfaWRfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsyXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbM10uc2Vydl9pZCAgID0gc2Vydl9pZF80OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzNdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV80OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els0XS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNF0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzVdLnNlcnZfaWQgICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els1XS5zZXJ2X2RhdGEgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICpvdXRwdXRfY2xhc3MgPSBjbGF6ejsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIEZUX0Vycl9PazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNiggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMSwgc2Vydl9kYXRhXzEsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzIsIHNlcnZfZGF0YV8yLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8zLCBzZXJ2X2RhdGFfMywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNCwgc2Vydl9kYXRhXzQsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzUsIHNlcnZfZGF0YV81LCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF82LCBzZXJ2X2RhdGFfNiApICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9EZXN0cm95X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICkgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggY2xhenogKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEZUX0ZSRUUoIGNsYXp6ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NyZWF0ZV9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqKiAgb3V0cHV0X2NsYXNzKSAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfU2VydmljZURlc2NSZWMqICBjbGF6eiAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX0Vycm9yICAgICAgICAgICAgZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9NZW1vcnkgICAgICAgICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIEZUX0FMTE9DKCBjbGF6eiwgc2l6ZW9mICggKmNsYXp6ICkgKiA3ICkgKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXR1cm4gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elswXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMF0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzFdLnNlcnZfaWQgICA9IHNlcnZfaWRfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsxXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMl0uc2Vydl9pZCAgID0gc2Vydl9pZF8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzJdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elszXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbM10uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzRdLnNlcnZfaWQgICA9IHNlcnZfaWRfNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els0XS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNV0uc2Vydl9pZCAgID0gc2Vydl9pZF82OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzVdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV82OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els2XS5zZXJ2X2lkICAgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNl0uc2Vydl9kYXRhID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqb3V0cHV0X2NsYXNzID0gY2xheno7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzcoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzEsIHNlcnZfZGF0YV8xLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF8yLCBzZXJ2X2RhdGFfMiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfMywgc2Vydl9kYXRhXzMsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzQsIHNlcnZfZGF0YV80LCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vydl9pZF81LCBzZXJ2X2RhdGFfNSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZfaWRfNiwgc2Vydl9kYXRhXzYsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2X2lkXzcsIHNlcnZfZGF0YV83ICkgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogKSAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBjbGF6eiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRlJFRSggY2xhenogKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfQ3JlYXRlX0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgIGxpYnJhcnksICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyoqICBvdXRwdXRfY2xhc3MpICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfRXJyb3IgICAgICAgICAgICBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX01lbW9yeSAgICAgICAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggRlRfQUxMT0MoIGNsYXp6LCBzaXplb2YgKCAqY2xhenogKSAqIDggKSApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybiBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzBdLnNlcnZfaWQgICA9IHNlcnZfaWRfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elswXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMV0uc2Vydl9pZCAgID0gc2Vydl9pZF8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzFdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elsyXS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbMl0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzNdLnNlcnZfaWQgICA9IHNlcnZfaWRfNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6elszXS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNF0uc2Vydl9pZCAgID0gc2Vydl9pZF81OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzRdLnNlcnZfZGF0YSA9IHNlcnZfZGF0YV81OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els1XS5zZXJ2X2lkICAgPSBzZXJ2X2lkXzY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbNV0uc2Vydl9kYXRhID0gc2Vydl9kYXRhXzY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzZdLnNlcnZfaWQgICA9IHNlcnZfaWRfNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6els2XS5zZXJ2X2RhdGEgPSBzZXJ2X2RhdGFfNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenpbN10uc2Vydl9pZCAgID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6WzddLnNlcnZfZGF0YSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKm91dHB1dF9jbGFzcyA9IGNsYXp6OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gRlRfRXJyX09rOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworICAvKgorICAgKiAgUGFyc2UgYSBsaXN0IG9mIEZUX1NlcnZpY2VEZXNjUmVjIGRlc2NyaXB0b3JzIGFuZCBsb29rIGZvcgorICAgKiAgYSBzcGVjaWZpYyBzZXJ2aWNlIGJ5IElELiAgTm90ZSB0aGF0IHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlCisgICAqICBhcnJheSBtdXN0IGJlIHsgTlVMTCwgTlVMTCB9LCBhbmQgdGhhdCB0aGUgZnVuY3Rpb24gc2hvdWxkCisgICAqICByZXR1cm4gTlVMTCBpZiB0aGUgc2VydmljZSBpc24ndCBhdmFpbGFibGUuCisgICAqCisgICAqICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGJ5IG1vZHVsZXMgdG8gaW1wbGVtZW50IHRoZWlyCisgICAqICBgZ2V0X3NlcnZpY2UnIG1ldGhvZC4KKyAgICovCisgIEZUX0JBU0UoIEZUX1BvaW50ZXIgKQorICBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwKCBGVF9TZXJ2aWNlRGVzYyAgc2VydmljZV9kZXNjcmlwdG9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICAgIHNlcnZpY2VfaWQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICBTIEUgUiBWIEkgQyBFIFMgICBDIEEgQyBIIEUgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qCisgICAqICBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHN0b3JlIGEgY2FjaGUgZm9yIHNldmVyYWwgZnJlcXVlbnRseSB1c2VkCisgICAqICBzZXJ2aWNlcy4gIEl0IGlzIHRoZSB0eXBlIG9mIGBmYWNlLT5pbnRlcm5hbC0+c2VydmljZXMnLiAgWW91CisgICAqICBzaG91bGQgb25seSB1c2UgRlRfRkFDRV9MT09LVVBfU0VSVklDRSB0byBhY2Nlc3MgaXQuCisgICAqCisgICAqICBBbGwgZmllbGRzIHNob3VsZCBoYXZlIHRoZSB0eXBlIEZUX1BvaW50ZXIgdG8gcmVsYXggY29tcGlsYXRpb24KKyAgICogIGRlcGVuZGVuY2llcy4gIFdlIGFzc3VtZSB0aGUgZGV2ZWxvcGVyIGlzbid0IGNvbXBsZXRlbHkgc3R1cGlkLgorICAgKgorICAgKiAgRWFjaCBmaWVsZCBtdXN0IGJlIG5hbWVkIGBzZXJ2aWNlX1hYWFgnIHdoZXJlIGBYWFgnIGNvcnJlc3BvbmRzIHRvCisgICAqICB0aGUgY29ycmVjdCBGVF9TRVJWSUNFX0lEX1hYWFggbWFjcm8uICBTZWUgdGhlIGRlZmluaXRpb24gb2YKKyAgICogIEZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UgYmVsb3cgaG93IHRoaXMgaXMgaW1wbGVtZW50ZWQuCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCAgRlRfU2VydmljZUNhY2hlUmVjXworICB7CisgICAgRlRfUG9pbnRlciAgc2VydmljZV9QT1NUU0NSSVBUX0ZPTlRfTkFNRTsKKyAgICBGVF9Qb2ludGVyICBzZXJ2aWNlX01VTFRJX01BU1RFUlM7CisgICAgRlRfUG9pbnRlciAgc2VydmljZV9HTFlQSF9ESUNUOworICAgIEZUX1BvaW50ZXIgIHNlcnZpY2VfUEZSX01FVFJJQ1M7CisgICAgRlRfUG9pbnRlciAgc2VydmljZV9XSU5GTlQ7CisKKyAgfSBGVF9TZXJ2aWNlQ2FjaGVSZWMsICpGVF9TZXJ2aWNlQ2FjaGU7CisKKworICAvKgorICAgKiAgQSBtYWdpYyBudW1iZXIgdXNlZCB3aXRoaW4gdGhlIHNlcnZpY2VzIGNhY2hlLgorICAgKi8KKworICAvKiBlbnN1cmUgdGhhdCB2YWx1ZSBgMScgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIGEgcG9pbnRlciAqLworI2RlZmluZSBGVF9TRVJWSUNFX1VOQVZBSUxBQkxFICAoKEZUX1BvaW50ZXIpfihGVF9QdHJEaXN0KTEpCisKKworICAvKgorICAgKiBAbWFjcm86CisgICAqICAgRlRfRkFDRV9MT09LVVBfU0VSVklDRQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhpcyBtYWNybyBpcyB1c2VkIHRvIGxvb2t1cCBhIHNlcnZpY2UgZnJvbSBhIGZhY2UncyBkcml2ZXIgbW9kdWxlCisgICAqICAgdXNpbmcgaXRzIGNhY2hlLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgZmFjZTo6CisgICAqICAgICBUaGUgc291cmNlIGZhY2UgaGFuZGxlIGNvbnRhaW5pbmcgdGhlIGNhY2hlLgorICAgKgorICAgKiAgIGZpZWxkIDo6CisgICAqICAgICBUaGUgZmllbGQgbmFtZSBpbiB0aGUgY2FjaGUuCisgICAqCisgICAqICAgaWQgOjoKKyAgICogICAgIFRoZSBzZXJ2aWNlIElELgorICAgKgorICAgKiBAb3V0cHV0OgorICAgKiAgIHB0ciA6OgorICAgKiAgICAgQSB2YXJpYWJsZSByZWNlaXZpbmcgdGhlIHNlcnZpY2UgZGF0YS4gIE5VTEwgaWYgbm90IGF2YWlsYWJsZS4KKyAgICovCisjaWZkZWYgX19jcGx1c3BsdXMKKworI2RlZmluZSBGVF9GQUNFX0xPT0tVUF9TRVJWSUNFKCBmYWNlLCBwdHIsIGlkICkgICAgICAgICAgICAgICAgXAorICBGVF9CRUdJTl9TVE1OVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1BvaW50ZXIgICBzdmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1BvaW50ZXIqICBQcHRyID0gKEZUX1BvaW50ZXIqKSYocHRyKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN2YyA9IEZUX0ZBQ0UoIGZhY2UgKS0+aW50ZXJuYWwtPnNlcnZpY2VzLiBzZXJ2aWNlXyAjIyBpZDsgXAorICAgIGlmICggc3ZjID09IEZUX1NFUlZJQ0VfVU5BVkFJTEFCTEUgKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgc3ZjID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVsc2UgaWYgKCBzdmMgPT0gTlVMTCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRkFDRV9GSU5EX1NFUlZJQ0UoIGZhY2UsIHN2YywgaWQgKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgRlRfRkFDRSggZmFjZSApLT5pbnRlcm5hbC0+c2VydmljZXMuIHNlcnZpY2VfICMjIGlkID0gICAgXAorICAgICAgICAoRlRfUG9pbnRlcikoIHN2YyAhPSBOVUxMID8gc3ZjICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRlRfU0VSVklDRV9VTkFWQUlMQUJMRSApOyAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICpQcHRyID0gc3ZjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9FTkRfU1RNTlQKKworI2Vsc2UgLyogIUMrKyAqLworCisjZGVmaW5lIEZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UoIGZhY2UsIHB0ciwgaWQgKSAgICAgICAgICAgICAgICBcCisgIEZUX0JFR0lOX1NUTU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfUG9pbnRlciAgc3ZjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3ZjID0gRlRfRkFDRSggZmFjZSApLT5pbnRlcm5hbC0+c2VydmljZXMuIHNlcnZpY2VfICMjIGlkOyBcCisgICAgaWYgKCBzdmMgPT0gRlRfU0VSVklDRV9VTkFWQUlMQUJMRSApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBzdmMgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSBpZiAoIHN2YyA9PSBOVUxMICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GQUNFX0ZJTkRfU0VSVklDRSggZmFjZSwgc3ZjLCBpZCApOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBGVF9GQUNFKCBmYWNlICktPmludGVybmFsLT5zZXJ2aWNlcy4gc2VydmljZV8gIyMgaWQgPSAgICBcCisgICAgICAgIChGVF9Qb2ludGVyKSggc3ZjICE9IE5VTEwgPyBzdmMgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBGVF9TRVJWSUNFX1VOQVZBSUxBQkxFICk7ICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcHRyID0gc3ZjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0VORF9TVE1OVAorCisjZW5kaWYgLyogIUMrKyAqLworCisgIC8qCisgICAqICBBIG1hY3JvIHVzZWQgdG8gZGVmaW5lIG5ldyBzZXJ2aWNlIHN0cnVjdHVyZSB0eXBlcy4KKyAgICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0UoIG5hbWUgKSAgICAgICAgICAgIFwKKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU2VydmljZV8gIyMgbmFtZSAjIyBSZWNfIFwKKyAgICBGVF9TZXJ2aWNlXyAjIyBuYW1lICMjIFJlYyA7ICAgICAgICAgICAgIFwKKyAgdHlwZWRlZiBzdHJ1Y3QgRlRfU2VydmljZV8gIyMgbmFtZSAjIyBSZWNfIFwKKyAgICBjb25zdCAqIEZUX1NlcnZpY2VfICMjIG5hbWUgOyAgICAgICAgICAgIFwKKyAgc3RydWN0IEZUX1NlcnZpY2VfICMjIG5hbWUgIyMgUmVjXworCisgIC8qICovCisKKyAgLyoKKyAgICogIFRoZSBoZWFkZXIgZmlsZXMgY29udGFpbmluZyB0aGUgc2VydmljZXMuCisgICAqLworCisjZGVmaW5lIEZUX1NFUlZJQ0VfQkRGX0ggICAgICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2YmRmLmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfQ0lEX0ggICAgICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2lkLmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfR0xZUEhfRElDVF9IICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z2xkaWN0Lmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfR1hfVkFMSURBVEVfSCAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z3h2YWwuaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9LRVJOSU5HX0ggICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZrZXJuLmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfTVVMVElQTEVfTUFTVEVSU19IICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2bW0uaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9PUEVOVFlQRV9WQUxJREFURV9IICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZvdHZhbC5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1BGUl9IICAgICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBmci5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfQ01BUFNfSCAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzY21hcC5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfSU5GT19IICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzaW5mby5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRV9IICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oPgorI2RlZmluZSBGVF9TRVJWSUNFX1BST1BFUlRJRVNfSCAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnByb3AuaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9TRk5UX0ggICAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZzZm50Lmg+CisjZGVmaW5lIEZUX1NFUlZJQ0VfVFJVRVRZUEVfRU5HSU5FX0ggICAgPGZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRlbmcuaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9UVF9DTUFQX0ggICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGNtYXAuaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9XSU5GTlRfSCAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z3aW5mbnQuaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSCAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z4Zjg2bm0uaD4KKyNkZWZpbmUgRlRfU0VSVklDRV9UUlVFVFlQRV9HTFlGX0ggICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGdseWYuaD4KKworIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRTRVJWX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFhMjY1NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgKQEAgLTAsMCArMSw1MzYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c3RyZWFtLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBTdHJlYW0gaGFuZGxpbmcgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAyLCAyMDA0LTIwMDYsIDIwMTEsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUU1RSRUFNX0hfXworI2RlZmluZSBfX0ZUU1RSRUFNX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uL2Z0c3lzdGVtLmgiCisjaW5jbHVkZSAiZnRvYmpzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKiBmb3JtYXQgb2YgYW4gOC1iaXQgZnJhbWVfb3AgdmFsdWU6ICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBiaXQgIDc2NTQzMjEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHh4eHh4eGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBzIGlzIHNldCB0byAxIGlmIHRoZSB2YWx1ZSBpcyBzaWduZWQuICAgICAgICAqLworICAvKiBlIGlzIHNldCB0byAxIGlmIHRoZSB2YWx1ZSBpcyBsaXR0bGUtZW5kaWFuLiAqLworICAvKiB4eHggaXMgYSBjb21tYW5kLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIEZUX0ZSQU1FX09QX1NISUZUICAgICAgICAgMgorI2RlZmluZSBGVF9GUkFNRV9PUF9TSUdORUQgICAgICAgIDEKKyNkZWZpbmUgRlRfRlJBTUVfT1BfTElUVExFICAgICAgICAyCisjZGVmaW5lIEZUX0ZSQU1FX09QX0NPTU1BTkQoIHggKSAgKCB4ID4+IEZUX0ZSQU1FX09QX1NISUZUICkKKworI2RlZmluZSBGVF9NQUtFX0ZSQU1FX09QKCBjb21tYW5kLCBsaXR0bGUsIHNpZ24gKSBcCisgICAgICAgICAgKCAoIGNvbW1hbmQgPDwgRlRfRlJBTUVfT1BfU0hJRlQgKSB8ICggbGl0dGxlIDw8IDEgKSB8IHNpZ24gKQorCisjZGVmaW5lIEZUX0ZSQU1FX09QX0VORCAgICAwCisjZGVmaW5lIEZUX0ZSQU1FX09QX1NUQVJUICAxICAvKiBzdGFydCBhIG5ldyBmcmFtZSAgICAgKi8KKyNkZWZpbmUgRlRfRlJBTUVfT1BfQllURSAgIDIgIC8qIHJlYWQgMS1ieXRlIHZhbHVlICAgICAqLworI2RlZmluZSBGVF9GUkFNRV9PUF9TSE9SVCAgMyAgLyogcmVhZCAyLWJ5dGUgdmFsdWUgICAgICovCisjZGVmaW5lIEZUX0ZSQU1FX09QX0xPTkcgICA0ICAvKiByZWFkIDQtYnl0ZSB2YWx1ZSAgICAgKi8KKyNkZWZpbmUgRlRfRlJBTUVfT1BfT0ZGMyAgIDUgIC8qIHJlYWQgMy1ieXRlIHZhbHVlICAgICAqLworI2RlZmluZSBGVF9GUkFNRV9PUF9CWVRFUyAgNiAgLyogcmVhZCBhIGJ5dGVzIHNlcXVlbmNlICovCisKKworICB0eXBlZGVmIGVudW0gIEZUX0ZyYW1lX09wXworICB7CisgICAgZnRfZnJhbWVfZW5kICAgICAgID0gMCwKKyAgICBmdF9mcmFtZV9zdGFydCAgICAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9TVEFSVCwgMCwgMCApLAorCisgICAgZnRfZnJhbWVfYnl0ZSAgICAgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfQllURSwgIDAsIDAgKSwKKyAgICBmdF9mcmFtZV9zY2hhciAgICAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9CWVRFLCAgMCwgMSApLAorCisgICAgZnRfZnJhbWVfdXNob3J0X2JlID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfU0hPUlQsIDAsIDAgKSwKKyAgICBmdF9mcmFtZV9zaG9ydF9iZSAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9TSE9SVCwgMCwgMSApLAorICAgIGZ0X2ZyYW1lX3VzaG9ydF9sZSA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX1NIT1JULCAxLCAwICksCisgICAgZnRfZnJhbWVfc2hvcnRfbGUgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfU0hPUlQsIDEsIDEgKSwKKworICAgIGZ0X2ZyYW1lX3Vsb25nX2JlICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX0xPTkcsIDAsIDAgKSwKKyAgICBmdF9mcmFtZV9sb25nX2JlICAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9MT05HLCAwLCAxICksCisgICAgZnRfZnJhbWVfdWxvbmdfbGUgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfTE9ORywgMSwgMCApLAorICAgIGZ0X2ZyYW1lX2xvbmdfbGUgICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX0xPTkcsIDEsIDEgKSwKKworICAgIGZ0X2ZyYW1lX3VvZmYzX2JlICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX09GRjMsIDAsIDAgKSwKKyAgICBmdF9mcmFtZV9vZmYzX2JlICAgPSBGVF9NQUtFX0ZSQU1FX09QKCBGVF9GUkFNRV9PUF9PRkYzLCAwLCAxICksCisgICAgZnRfZnJhbWVfdW9mZjNfbGUgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfT0ZGMywgMSwgMCApLAorICAgIGZ0X2ZyYW1lX29mZjNfbGUgICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX09GRjMsIDEsIDEgKSwKKworICAgIGZ0X2ZyYW1lX2J5dGVzICAgICA9IEZUX01BS0VfRlJBTUVfT1AoIEZUX0ZSQU1FX09QX0JZVEVTLCAwLCAwICksCisgICAgZnRfZnJhbWVfc2tpcCAgICAgID0gRlRfTUFLRV9GUkFNRV9PUCggRlRfRlJBTUVfT1BfQllURVMsIDAsIDEgKQorCisgIH0gRlRfRnJhbWVfT3A7CisKKworICB0eXBlZGVmIHN0cnVjdCAgRlRfRnJhbWVfRmllbGRfCisgIHsKKyAgICBGVF9CeXRlICAgIHZhbHVlOworICAgIEZUX0J5dGUgICAgc2l6ZTsKKyAgICBGVF9VU2hvcnQgIG9mZnNldDsKKworICB9IEZUX0ZyYW1lX0ZpZWxkOworCisKKyAgLyogQ29uc3RydWN0IGFuIEZUX0ZyYW1lX0ZpZWxkIG91dCBvZiBhIHN0cnVjdHVyZSB0eXBlIGFuZCBhIGZpZWxkIG5hbWUuICovCisgIC8qIFRoZSBzdHJ1Y3R1cmUgdHlwZSBtdXN0IGJlIHNldCBpbiB0aGUgRlRfU1RSVUNUVVJFIG1hY3JvIGJlZm9yZSAgICAgICAqLworICAvKiBjYWxsaW5nIHRoZSBGVF9GUkFNRV9TVEFSVCgpIG1hY3JvLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX0ZJRUxEX1NJWkUoIGYgKSBcCisgICAgICAgICAgKEZUX0J5dGUpc2l6ZW9mICggKChGVF9TVFJVQ1RVUkUqKTApLT5mICkKKworI2RlZmluZSBGVF9GSUVMRF9TSVpFX0RFTFRBKCBmICkgXAorICAgICAgICAgIChGVF9CeXRlKXNpemVvZiAoICgoRlRfU1RSVUNUVVJFKikwKS0+ZlswXSApCisKKyNkZWZpbmUgRlRfRklFTERfT0ZGU0VUKCBmICkgXAorICAgICAgICAgIChGVF9VU2hvcnQpKCBvZmZzZXRvZiggRlRfU1RSVUNUVVJFLCBmICkgKQorCisjZGVmaW5lIEZUX0ZSQU1FX0ZJRUxEKCBmcmFtZV9vcCwgZmllbGQgKSBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBmcmFtZV9vcCwgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9TSVpFKCBmaWVsZCApLCAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9PRkZTRVQoIGZpZWxkICkgICAgICBcCisgICAgICAgICAgfQorCisjZGVmaW5lIEZUX01BS0VfRU1QVFlfRklFTEQoIGZyYW1lX29wICkgIHsgZnJhbWVfb3AsIDAsIDAgfQorCisjZGVmaW5lIEZUX0ZSQU1FX1NUQVJUKCBzaXplICkgICB7IGZ0X2ZyYW1lX3N0YXJ0LCAwLCBzaXplIH0KKyNkZWZpbmUgRlRfRlJBTUVfRU5EICAgICAgICAgICAgIHsgZnRfZnJhbWVfZW5kLCAwLCAwIH0KKworI2RlZmluZSBGVF9GUkFNRV9MT05HKCBmICkgICAgICAgRlRfRlJBTUVfRklFTEQoIGZ0X2ZyYW1lX2xvbmdfYmUsIGYgKQorI2RlZmluZSBGVF9GUkFNRV9VTE9ORyggZiApICAgICAgRlRfRlJBTUVfRklFTEQoIGZ0X2ZyYW1lX3Vsb25nX2JlLCBmICkKKyNkZWZpbmUgRlRfRlJBTUVfU0hPUlQoIGYgKSAgICAgIEZUX0ZSQU1FX0ZJRUxEKCBmdF9mcmFtZV9zaG9ydF9iZSwgZiApCisjZGVmaW5lIEZUX0ZSQU1FX1VTSE9SVCggZiApICAgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfdXNob3J0X2JlLCBmICkKKyNkZWZpbmUgRlRfRlJBTUVfT0ZGMyggZiApICAgICAgIEZUX0ZSQU1FX0ZJRUxEKCBmdF9mcmFtZV9vZmYzX2JlLCBmICkKKyNkZWZpbmUgRlRfRlJBTUVfVU9GRjMoIGYgKSAgICAgIEZUX0ZSQU1FX0ZJRUxEKCBmdF9mcmFtZV91b2ZmM19iZSwgZiApCisjZGVmaW5lIEZUX0ZSQU1FX0JZVEUoIGYgKSAgICAgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfYnl0ZSwgZiApCisjZGVmaW5lIEZUX0ZSQU1FX0NIQVIoIGYgKSAgICAgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfc2NoYXIsIGYgKQorCisjZGVmaW5lIEZUX0ZSQU1FX0xPTkdfTEUoIGYgKSAgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfbG9uZ19sZSwgZiApCisjZGVmaW5lIEZUX0ZSQU1FX1VMT05HX0xFKCBmICkgICBGVF9GUkFNRV9GSUVMRCggZnRfZnJhbWVfdWxvbmdfbGUsIGYgKQorI2RlZmluZSBGVF9GUkFNRV9TSE9SVF9MRSggZiApICAgRlRfRlJBTUVfRklFTEQoIGZ0X2ZyYW1lX3Nob3J0X2xlLCBmICkKKyNkZWZpbmUgRlRfRlJBTUVfVVNIT1JUX0xFKCBmICkgIEZUX0ZSQU1FX0ZJRUxEKCBmdF9mcmFtZV91c2hvcnRfbGUsIGYgKQorI2RlZmluZSBGVF9GUkFNRV9PRkYzX0xFKCBmICkgICAgRlRfRlJBTUVfRklFTEQoIGZ0X2ZyYW1lX29mZjNfbGUsIGYgKQorI2RlZmluZSBGVF9GUkFNRV9VT0ZGM19MRSggZiApICAgRlRfRlJBTUVfRklFTEQoIGZ0X2ZyYW1lX3VvZmYzX2xlLCBmICkKKworI2RlZmluZSBGVF9GUkFNRV9TS0lQX0xPTkcgICAgICAgeyBmdF9mcmFtZV9sb25nX2JlLCAwLCAwIH0KKyNkZWZpbmUgRlRfRlJBTUVfU0tJUF9TSE9SVCAgICAgIHsgZnRfZnJhbWVfc2hvcnRfYmUsIDAsIDAgfQorI2RlZmluZSBGVF9GUkFNRV9TS0lQX0JZVEUgICAgICAgeyBmdF9mcmFtZV9ieXRlLCAwLCAwIH0KKworI2RlZmluZSBGVF9GUkFNRV9CWVRFUyggZmllbGQsIGNvdW50ICkgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZnRfZnJhbWVfYnl0ZXMsICAgICAgICAgICAgXAorICAgICAgICAgICAgY291bnQsICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfT0ZGU0VUKCBmaWVsZCApICAgXAorICAgICAgICAgIH0KKworI2RlZmluZSBGVF9GUkFNRV9TS0lQX0JZVEVTKCBjb3VudCApICB7IGZ0X2ZyYW1lX3NraXAsIGNvdW50LCAwIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSW50ZWdlciBleHRyYWN0aW9uIG1hY3JvcyAtLSB0aGUgYGJ1ZmZlcicgcGFyYW1ldGVyIG11c3QgQUxXQVlTIGJlIG9mICovCisgIC8qIHR5cGUgYGNoYXIqJyBvciBlcXVpdmFsZW50ICgxLWJ5dGUgZWxlbWVudHMpLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2RlZmluZSBGVF9CWVRFXyggcCwgaSApICAoICgoY29uc3QgRlRfQnl0ZSopKHApKVsoaSldICkKKworI2RlZmluZSBGVF9JTlQxNiggeCApICAgKCAoRlRfSW50MTYpKHgpICApCisjZGVmaW5lIEZUX1VJTlQxNiggeCApICAoIChGVF9VSW50MTYpKHgpICkKKyNkZWZpbmUgRlRfSU5UMzIoIHggKSAgICggKEZUX0ludDMyKSh4KSAgKQorI2RlZmluZSBGVF9VSU5UMzIoIHggKSAgKCAoRlRfVUludDMyKSh4KSApCisKKworI2RlZmluZSBGVF9CWVRFX1UxNiggcCwgaSwgcyApICAoIEZUX1VJTlQxNiggRlRfQllURV8oIHAsIGkgKSApIDw8IChzKSApCisjZGVmaW5lIEZUX0JZVEVfVTMyKCBwLCBpLCBzICkgICggRlRfVUlOVDMyKCBGVF9CWVRFXyggcCwgaSApICkgPDwgKHMpICkKKworCisjZGVmaW5lIEZUX1BFRUtfU0hPUlQoIHAgKSAgRlRfSU5UMTYoIEZUX0JZVEVfVTE2KCBwLCAwLCA4KSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMTYoIHAsIDEsIDApICkKKworI2RlZmluZSBGVF9QRUVLX1VTSE9SVCggcCApICBGVF9VSU5UMTYoIEZUX0JZVEVfVTE2KCBwLCAwLCA4ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMTYoIHAsIDEsIDAgKSApCisKKyNkZWZpbmUgRlRfUEVFS19MT05HKCBwICkgIEZUX0lOVDMyKCBGVF9CWVRFX1UzMiggcCwgMCwgMjQgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMSwgMTYgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMiwgIDggKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMywgIDAgKSApCisKKyNkZWZpbmUgRlRfUEVFS19VTE9ORyggcCApICBGVF9VSU5UMzIoIEZUX0JZVEVfVTMyKCBwLCAwLCAyNCApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDEsIDE2ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMiwgIDggKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAzLCAgMCApICkKKworI2RlZmluZSBGVF9QRUVLX09GRjMoIHAgKSAgRlRfSU5UMzIoIEZUX0JZVEVfVTMyKCBwLCAwLCAxNiApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAxLCAgOCApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAyLCAgMCApICkKKworI2RlZmluZSBGVF9QRUVLX1VPRkYzKCBwICkgIEZUX1VJTlQzMiggRlRfQllURV9VMzIoIHAsIDAsIDE2ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMSwgIDggKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAyLCAgMCApICkKKworI2RlZmluZSBGVF9QRUVLX1NIT1JUX0xFKCBwICkgIEZUX0lOVDE2KCBGVF9CWVRFX1UxNiggcCwgMSwgOCApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UxNiggcCwgMCwgMCApICkKKworI2RlZmluZSBGVF9QRUVLX1VTSE9SVF9MRSggcCApICBGVF9VSU5UMTYoIEZUX0JZVEVfVTE2KCBwLCAxLCA4ICkgfCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTE2KCBwLCAwLCAwICkgKQorCisjZGVmaW5lIEZUX1BFRUtfTE9OR19MRSggcCApICBGVF9JTlQzMiggRlRfQllURV9VMzIoIHAsIDMsIDI0ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDIsIDE2ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDEsICA4ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDAsICAwICkgKQorCisjZGVmaW5lIEZUX1BFRUtfVUxPTkdfTEUoIHAgKSAgRlRfVUlOVDMyKCBGVF9CWVRFX1UzMiggcCwgMywgMjQgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JZVEVfVTMyKCBwLCAyLCAxNiApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDEsICA4ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMCwgIDAgKSApCisKKyNkZWZpbmUgRlRfUEVFS19PRkYzX0xFKCBwICkgIEZUX0lOVDMyKCBGVF9CWVRFX1UzMiggcCwgMiwgMTYgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMSwgIDggKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMCwgIDAgKSApCisKKyNkZWZpbmUgRlRfUEVFS19VT0ZGM19MRSggcCApICBGVF9VSU5UMzIoIEZUX0JZVEVfVTMyKCBwLCAyLCAxNiApIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQllURV9VMzIoIHAsIDEsICA4ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CWVRFX1UzMiggcCwgMCwgIDAgKSApCisKKworI2RlZmluZSBGVF9ORVhUX0NIQVIoIGJ1ZmZlciApICAgICAgIFwKKyAgICAgICAgICAoIChzaWduZWQgY2hhcikqYnVmZmVyKysgKQorCisjZGVmaW5lIEZUX05FWFRfQllURSggYnVmZmVyICkgICAgICAgICBcCisgICAgICAgICAgKCAodW5zaWduZWQgY2hhcikqYnVmZmVyKysgKQorCisjZGVmaW5lIEZUX05FWFRfU0hPUlQoIGJ1ZmZlciApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAoc2hvcnQpKCBidWZmZXIgKz0gMiwgRlRfUEVFS19TSE9SVCggYnVmZmVyIC0gMiApICkgKQorCisjZGVmaW5lIEZUX05FWFRfVVNIT1JUKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKHVuc2lnbmVkIHNob3J0KSggYnVmZmVyICs9IDIsIEZUX1BFRUtfVVNIT1JUKCBidWZmZXIgLSAyICkgKSApCisKKyNkZWZpbmUgRlRfTkVYVF9PRkYzKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAobG9uZykoIGJ1ZmZlciArPSAzLCBGVF9QRUVLX09GRjMoIGJ1ZmZlciAtIDMgKSApICkKKworI2RlZmluZSBGVF9ORVhUX1VPRkYzKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAodW5zaWduZWQgbG9uZykoIGJ1ZmZlciArPSAzLCBGVF9QRUVLX1VPRkYzKCBidWZmZXIgLSAzICkgKSApCisKKyNkZWZpbmUgRlRfTkVYVF9MT05HKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAobG9uZykoIGJ1ZmZlciArPSA0LCBGVF9QRUVLX0xPTkcoIGJ1ZmZlciAtIDQgKSApICkKKworI2RlZmluZSBGVF9ORVhUX1VMT05HKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAodW5zaWduZWQgbG9uZykoIGJ1ZmZlciArPSA0LCBGVF9QRUVLX1VMT05HKCBidWZmZXIgLSA0ICkgKSApCisKKworI2RlZmluZSBGVF9ORVhUX1NIT1JUX0xFKCBidWZmZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKHNob3J0KSggYnVmZmVyICs9IDIsIEZUX1BFRUtfU0hPUlRfTEUoIGJ1ZmZlciAtIDIgKSApICkKKworI2RlZmluZSBGVF9ORVhUX1VTSE9SVF9MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoICh1bnNpZ25lZCBzaG9ydCkoIGJ1ZmZlciArPSAyLCBGVF9QRUVLX1VTSE9SVF9MRSggYnVmZmVyIC0gMiApICkgKQorCisjZGVmaW5lIEZUX05FWFRfT0ZGM19MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKGxvbmcpKCBidWZmZXIgKz0gMywgRlRfUEVFS19PRkYzX0xFKCBidWZmZXIgLSAzICkgKSApCisKKyNkZWZpbmUgRlRfTkVYVF9VT0ZGM19MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKHVuc2lnbmVkIGxvbmcpKCBidWZmZXIgKz0gMywgRlRfUEVFS19VT0ZGM19MRSggYnVmZmVyIC0gMyApICkgKQorCisjZGVmaW5lIEZUX05FWFRfTE9OR19MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKGxvbmcpKCBidWZmZXIgKz0gNCwgRlRfUEVFS19MT05HX0xFKCBidWZmZXIgLSA0ICkgKSApCisKKyNkZWZpbmUgRlRfTkVYVF9VTE9OR19MRSggYnVmZmVyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKHVuc2lnbmVkIGxvbmcpKCBidWZmZXIgKz0gNCwgRlRfUEVFS19VTE9OR19MRSggYnVmZmVyIC0gNCApICkgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBFYWNoIEdFVF94eHh4KCkgbWFjcm8gdXNlcyBhbiBpbXBsaWNpdCBgc3RyZWFtJyB2YXJpYWJsZS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWYgMAorI2RlZmluZSBGVF9HRVRfTUFDUk8oIHR5cGUgKSAgICBGVF9ORVhUXyAjIyB0eXBlICggc3RyZWFtLT5jdXJzb3IgKQorCisjZGVmaW5lIEZUX0dFVF9DSEFSKCkgICAgICAgRlRfR0VUX01BQ1JPKCBDSEFSICkKKyNkZWZpbmUgRlRfR0VUX0JZVEUoKSAgICAgICBGVF9HRVRfTUFDUk8oIEJZVEUgKQorI2RlZmluZSBGVF9HRVRfU0hPUlQoKSAgICAgIEZUX0dFVF9NQUNSTyggU0hPUlQgKQorI2RlZmluZSBGVF9HRVRfVVNIT1JUKCkgICAgIEZUX0dFVF9NQUNSTyggVVNIT1JUICkKKyNkZWZpbmUgRlRfR0VUX09GRjMoKSAgICAgICBGVF9HRVRfTUFDUk8oIE9GRjMgKQorI2RlZmluZSBGVF9HRVRfVU9GRjMoKSAgICAgIEZUX0dFVF9NQUNSTyggVU9GRjMgKQorI2RlZmluZSBGVF9HRVRfTE9ORygpICAgICAgIEZUX0dFVF9NQUNSTyggTE9ORyApCisjZGVmaW5lIEZUX0dFVF9VTE9ORygpICAgICAgRlRfR0VUX01BQ1JPKCBVTE9ORyApCisjZGVmaW5lIEZUX0dFVF9UQUc0KCkgICAgICAgRlRfR0VUX01BQ1JPKCBVTE9ORyApCisKKyNkZWZpbmUgRlRfR0VUX1NIT1JUX0xFKCkgICBGVF9HRVRfTUFDUk8oIFNIT1JUX0xFICkKKyNkZWZpbmUgRlRfR0VUX1VTSE9SVF9MRSgpICBGVF9HRVRfTUFDUk8oIFVTSE9SVF9MRSApCisjZGVmaW5lIEZUX0dFVF9MT05HX0xFKCkgICAgRlRfR0VUX01BQ1JPKCBMT05HX0xFICkKKyNkZWZpbmUgRlRfR0VUX1VMT05HX0xFKCkgICBGVF9HRVRfTUFDUk8oIFVMT05HX0xFICkKKworI2Vsc2UKKyNkZWZpbmUgRlRfR0VUX01BQ1JPKCBmdW5jLCB0eXBlICkgICAgICAgICggKHR5cGUpZnVuYyggc3RyZWFtICkgKQorCisjZGVmaW5lIEZUX0dFVF9DSEFSKCkgICAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0Q2hhciwgRlRfQ2hhciApCisjZGVmaW5lIEZUX0dFVF9CWVRFKCkgICAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0Q2hhciwgRlRfQnl0ZSApCisjZGVmaW5lIEZUX0dFVF9TSE9SVCgpICAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VVNob3J0LCBGVF9TaG9ydCApCisjZGVmaW5lIEZUX0dFVF9VU0hPUlQoKSAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VVNob3J0LCBGVF9VU2hvcnQgKQorI2RlZmluZSBGVF9HRVRfT0ZGMygpICAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVPZmZzZXQsIEZUX0xvbmcgKQorI2RlZmluZSBGVF9HRVRfVU9GRjMoKSAgICAgIEZUX0dFVF9NQUNSTyggRlRfU3RyZWFtX0dldFVPZmZzZXQsIEZUX1VMb25nICkKKyNkZWZpbmUgRlRfR0VUX0xPTkcoKSAgICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVTG9uZywgRlRfTG9uZyApCisjZGVmaW5lIEZUX0dFVF9VTE9ORygpICAgICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VUxvbmcsIEZUX1VMb25nICkKKyNkZWZpbmUgRlRfR0VUX1RBRzQoKSAgICAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVTG9uZywgRlRfVUxvbmcgKQorCisjZGVmaW5lIEZUX0dFVF9TSE9SVF9MRSgpICAgRlRfR0VUX01BQ1JPKCBGVF9TdHJlYW1fR2V0VVNob3J0TEUsIEZUX1Nob3J0ICkKKyNkZWZpbmUgRlRfR0VUX1VTSE9SVF9MRSgpICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVU2hvcnRMRSwgRlRfVVNob3J0ICkKKyNkZWZpbmUgRlRfR0VUX0xPTkdfTEUoKSAgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVTG9uZ0xFLCBGVF9Mb25nICkKKyNkZWZpbmUgRlRfR0VUX1VMT05HX0xFKCkgICBGVF9HRVRfTUFDUk8oIEZUX1N0cmVhbV9HZXRVTG9uZ0xFLCBGVF9VTG9uZyApCisjZW5kaWYKKworI2RlZmluZSBGVF9SRUFEX01BQ1JPKCBmdW5jLCB0eXBlLCB2YXIgKSAgICAgICAgXAorICAgICAgICAgICggdmFyID0gKHR5cGUpZnVuYyggc3RyZWFtLCAmZXJyb3IgKSwgXAorICAgICAgICAgICAgZXJyb3IgIT0gRlRfRXJyX09rICkKKworI2RlZmluZSBGVF9SRUFEX0JZVEUoIHZhciApICAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkQ2hhciwgRlRfQnl0ZSwgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9DSEFSKCB2YXIgKSAgICAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZENoYXIsIEZUX0NoYXIsIHZhciApCisjZGVmaW5lIEZUX1JFQURfU0hPUlQoIHZhciApICAgICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVU2hvcnQsIEZUX1Nob3J0LCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX1VTSE9SVCggdmFyICkgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVVNob3J0LCBGVF9VU2hvcnQsIHZhciApCisjZGVmaW5lIEZUX1JFQURfT0ZGMyggdmFyICkgICAgICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVT2Zmc2V0LCBGVF9Mb25nLCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX1VPRkYzKCB2YXIgKSAgICAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVU9mZnNldCwgRlRfVUxvbmcsIHZhciApCisjZGVmaW5lIEZUX1JFQURfTE9ORyggdmFyICkgICAgICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVTG9uZywgRlRfTG9uZywgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9VTE9ORyggdmFyICkgICAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVMb25nLCBGVF9VTG9uZywgdmFyICkKKworI2RlZmluZSBGVF9SRUFEX1NIT1JUX0xFKCB2YXIgKSAgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVVNob3J0TEUsIEZUX1Nob3J0LCB2YXIgKQorI2RlZmluZSBGVF9SRUFEX1VTSE9SVF9MRSggdmFyICkgIEZUX1JFQURfTUFDUk8oIEZUX1N0cmVhbV9SZWFkVVNob3J0TEUsIEZUX1VTaG9ydCwgdmFyICkKKyNkZWZpbmUgRlRfUkVBRF9MT05HX0xFKCB2YXIgKSAgICBGVF9SRUFEX01BQ1JPKCBGVF9TdHJlYW1fUmVhZFVMb25nTEUsIEZUX0xvbmcsIHZhciApCisjZGVmaW5lIEZUX1JFQURfVUxPTkdfTEUoIHZhciApICAgRlRfUkVBRF9NQUNSTyggRlRfU3RyZWFtX1JlYWRVTG9uZ0xFLCBGVF9VTG9uZywgdmFyICkKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fTk9fREVGQVVMVF9TWVNURU0KKworICAvKiBpbml0aWFsaXplIGEgc3RyZWFtIGZvciByZWFkaW5nIGEgcmVndWxhciBzeXN0ZW0gc3RyZWFtICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX09wZW4oIEZUX1N0cmVhbSAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgZmlsZXBhdGhuYW1lICk7CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX05PX0RFRkFVTFRfU1lTVEVNICovCisKKworICAvKiBjcmVhdGUgYSBuZXcgKGlucHV0KSBzdHJlYW0gZnJvbSBhbiBGVF9PcGVuX0FyZ3Mgc3RydWN0dXJlICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX05ldyggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgY29uc3QgRlRfT3Blbl9BcmdzKiAgYXJncywKKyAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgICAgICAgICAqYXN0cmVhbSApOworCisgIC8qIGZyZWUgYSBzdHJlYW0gKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX1N0cmVhbV9GcmVlKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgZXh0ZXJuYWwgKTsKKworICAvKiBpbml0aWFsaXplIGEgc3RyZWFtIGZvciByZWFkaW5nIGluLW1lbW9yeSBkYXRhICovCisgIEZUX0JBU0UoIHZvaWQgKQorICBGVF9TdHJlYW1fT3Blbk1lbW9yeSggRlRfU3RyZWFtICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0J5dGUqICBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgIHNpemUgKTsKKworICAvKiBjbG9zZSBhIHN0cmVhbSAoZG9lcyBub3QgZGVzdHJveSB0aGUgc3RyZWFtIHN0cnVjdHVyZSkgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX1N0cmVhbV9DbG9zZSggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworCisgIC8qIHNlZWsgd2l0aGluIGEgc3RyZWFtLiBwb3NpdGlvbiBpcyByZWxhdGl2ZSB0byBzdGFydCBvZiBzdHJlYW0gKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fU2VlayggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIHBvcyApOworCisgIC8qIHNraXAgYnl0ZXMgaW4gYSBzdHJlYW0gKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fU2tpcCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGRpc3RhbmNlICk7CisKKyAgLyogcmV0dXJuIGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uICovCisgIEZUX0JBU0UoIEZUX0xvbmcgKQorICBGVF9TdHJlYW1fUG9zKCBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIC8qIHJlYWQgYnl0ZXMgZnJvbSBhIHN0cmVhbSBpbnRvIGEgdXNlci1hbGxvY2F0ZWQgYnVmZmVyLCByZXR1cm5zIGFuICovCisgIC8qIGVycm9yIGlmIG5vdCBhbGwgYnl0ZXMgY291bGQgYmUgcmVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX1JlYWQoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBidWZmZXIsCisgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIGNvdW50ICk7CisKKyAgLyogcmVhZCBieXRlcyBmcm9tIGEgc3RyZWFtIGF0IGEgZ2l2ZW4gcG9zaXRpb24gKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fUmVhZEF0KCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICBwb3MsCisgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIGNvdW50ICk7CisKKyAgLyogdHJ5IHRvIHJlYWQgYnl0ZXMgYXQgdGhlIGVuZCBvZiBhIHN0cmVhbTsgcmV0dXJuIG51bWJlciBvZiBieXRlcyAqLworICAvKiByZWFsbHkgYXZhaWxhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX1VMb25nICkKKyAgRlRfU3RyZWFtX1RyeVJlYWQoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIGNvdW50ICk7CisKKyAgLyogRW50ZXIgYSBmcmFtZSBvZiBgY291bnQnIGNvbnNlY3V0aXZlIGJ5dGVzIGluIGEgc3RyZWFtLiAgUmV0dXJucyBhbiAqLworICAvKiBlcnJvciBpZiB0aGUgZnJhbWUgY291bGQgbm90IGJlIHJlYWQvYWNjZXNzZWQuICBUaGUgY2FsbGVyIGNhbiB1c2UgICovCisgIC8qIHRoZSBGVF9TdHJlYW1fR2V0X1hYWCBmdW5jdGlvbnMgdG8gcmV0cmlldmUgZnJhbWUgZGF0YSB3aXRob3V0ICAgICAgKi8KKyAgLyogZXJyb3IgY2hlY2tzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFlvdSBtdXN0IF9hbHdheXNfIGNhbGwgRlRfU3RyZWFtX0V4aXRGcmFtZSgpIG9uY2UgeW91IGhhdmUgZW50ZXJlZCAgKi8KKyAgLyogYSBzdHJlYW0gZnJhbWUhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0UoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX0VudGVyRnJhbWUoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICBjb3VudCApOworCisgIC8qIGV4aXQgYSBzdHJlYW0gZnJhbWUgKi8KKyAgRlRfQkFTRSggdm9pZCApCisgIEZUX1N0cmVhbV9FeGl0RnJhbWUoIEZUX1N0cmVhbSAgc3RyZWFtICk7CisKKyAgLyogRXh0cmFjdCBhIHN0cmVhbSBmcmFtZS4gIElmIHRoZSBzdHJlYW0gaXMgZGlzay1iYXNlZCwgYSBoZWFwIGJsb2NrICovCisgIC8qIGlzIGFsbG9jYXRlZCBhbmQgdGhlIGZyYW1lIGJ5dGVzIGFyZSByZWFkIGludG8gaXQuICBJZiB0aGUgc3RyZWFtICAqLworICAvKiBpcyBtZW1vcnktYmFzZWQsIHRoaXMgZnVuY3Rpb24gc2ltcGx5IHNldCBhIHBvaW50ZXIgdG8gdGhlIGRhdGEuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFVzZWZ1bCB0byBvcHRpbWl6ZSBhY2Nlc3MgdG8gbWVtb3J5LWJhc2VkIHN0cmVhbXMgdHJhbnNwYXJlbnRseS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQWxsIGV4dHJhY3RlZCBmcmFtZXMgbXVzdCBiZSBgZnJlZWQnIHdpdGggYSBjYWxsIHRvIHRoZSBmdW5jdGlvbiAgICovCisgIC8qIEZUX1N0cmVhbV9SZWxlYXNlRnJhbWUoKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQkFTRSggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fRXh0cmFjdEZyYW1lKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSoqICBwYnl0ZXMgKTsKKworICAvKiByZWxlYXNlIGFuIGV4dHJhY3QgZnJhbWUgKHNlZSBGVF9TdHJlYW1fRXh0cmFjdEZyYW1lKSAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgRlRfU3RyZWFtX1JlbGVhc2VGcmFtZSggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqKiAgcGJ5dGVzICk7CisKKyAgLyogcmVhZCBhIGJ5dGUgZnJvbSBhbiBlbnRlcmVkIGZyYW1lICovCisgIEZUX0JBU0UoIEZUX0NoYXIgKQorICBGVF9TdHJlYW1fR2V0Q2hhciggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworICAvKiByZWFkIGEgMTYtYml0IGJpZy1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBmcm9tIGFuIGVudGVyZWQgZnJhbWUgKi8KKyAgRlRfQkFTRSggRlRfVVNob3J0ICkKKyAgRlRfU3RyZWFtX0dldFVTaG9ydCggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworICAvKiByZWFkIGEgMjQtYml0IGJpZy1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBmcm9tIGFuIGVudGVyZWQgZnJhbWUgKi8KKyAgRlRfQkFTRSggRlRfVUxvbmcgKQorICBGVF9TdHJlYW1fR2V0VU9mZnNldCggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworICAvKiByZWFkIGEgMzItYml0IGJpZy1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBmcm9tIGFuIGVudGVyZWQgZnJhbWUgKi8KKyAgRlRfQkFTRSggRlRfVUxvbmcgKQorICBGVF9TdHJlYW1fR2V0VUxvbmcoIEZUX1N0cmVhbSAgc3RyZWFtICk7CisKKyAgLyogcmVhZCBhIDE2LWJpdCBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIGludGVnZXIgZnJvbSBhbiBlbnRlcmVkIGZyYW1lICovCisgIEZUX0JBU0UoIEZUX1VTaG9ydCApCisgIEZUX1N0cmVhbV9HZXRVU2hvcnRMRSggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworICAvKiByZWFkIGEgMzItYml0IGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBmcm9tIGFuIGVudGVyZWQgZnJhbWUgKi8KKyAgRlRfQkFTRSggRlRfVUxvbmcgKQorICBGVF9TdHJlYW1fR2V0VUxvbmdMRSggRlRfU3RyZWFtICBzdHJlYW0gKTsKKworCisgIC8qIHJlYWQgYSBieXRlIGZyb20gYSBzdHJlYW0gKi8KKyAgRlRfQkFTRSggRlRfQ2hhciApCisgIEZUX1N0cmVhbV9SZWFkQ2hhciggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApOworCisgIC8qIHJlYWQgYSAxNi1iaXQgYmlnLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYSBzdHJlYW0gKi8KKyAgRlRfQkFTRSggRlRfVVNob3J0ICkKKyAgRlRfU3RyZWFtX1JlYWRVU2hvcnQoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApOworCisgIC8qIHJlYWQgYSAyNC1iaXQgYmlnLWVuZGlhbiB1bnNpZ25lZCBpbnRlZ2VyIGZyb20gYSBzdHJlYW0gKi8KKyAgRlRfQkFTRSggRlRfVUxvbmcgKQorICBGVF9TdHJlYW1fUmVhZFVPZmZzZXQoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgZXJyb3IgKTsKKworICAvKiByZWFkIGEgMzItYml0IGJpZy1lbmRpYW4gaW50ZWdlciBmcm9tIGEgc3RyZWFtICovCisgIEZUX0JBU0UoIEZUX1VMb25nICkKKyAgRlRfU3RyZWFtX1JlYWRVTG9uZyggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgZXJyb3IgKTsKKworICAvKiByZWFkIGEgMTYtYml0IGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBmcm9tIGEgc3RyZWFtICovCisgIEZUX0JBU0UoIEZUX1VTaG9ydCApCisgIEZUX1N0cmVhbV9SZWFkVVNob3J0TEUoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICk7CisKKyAgLyogcmVhZCBhIDMyLWJpdCBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIGludGVnZXIgZnJvbSBhIHN0cmVhbSAqLworICBGVF9CQVNFKCBGVF9VTG9uZyApCisgIEZUX1N0cmVhbV9SZWFkVUxvbmdMRSggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApOworCisgIC8qIFJlYWQgYSBzdHJ1Y3R1cmUgZnJvbSBhIHN0cmVhbS4gIFRoZSBzdHJ1Y3R1cmUgbXVzdCBiZSBkZXNjcmliZWQgKi8KKyAgLyogYnkgYW4gYXJyYXkgb2YgRlRfRnJhbWVfRmllbGQgcmVjb3Jkcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9SZWFkRmllbGRzKCBGVF9TdHJlYW0gICAgICAgICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0ZyYW1lX0ZpZWxkKiAgZmllbGRzLAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgKTsKKworCisjZGVmaW5lIEZUX1NUUkVBTV9QT1MoKSAgICAgICAgICAgXAorICAgICAgICAgIEZUX1N0cmVhbV9Qb3MoIHN0cmVhbSApCisKKyNkZWZpbmUgRlRfU1RSRUFNX1NFRUsoIHBvc2l0aW9uICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX1NFVF9FUlJPUiggRlRfU3RyZWFtX1NlZWsoIHN0cmVhbSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VMb25nKShwb3NpdGlvbikgKSApCisKKyNkZWZpbmUgRlRfU1RSRUFNX1NLSVAoIGRpc3RhbmNlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfU0VUX0VSUk9SKCBGVF9TdHJlYW1fU2tpcCggc3RyZWFtLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Mb25nKShkaXN0YW5jZSkgKSApCisKKyNkZWZpbmUgRlRfU1RSRUFNX1JFQUQoIGJ1ZmZlciwgY291bnQgKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX1NFVF9FUlJPUiggRlRfU3RyZWFtX1JlYWQoIHN0cmVhbSwgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0J5dGUqKShidWZmZXIpLCAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpKGNvdW50KSApICkKKworI2RlZmluZSBGVF9TVFJFQU1fUkVBRF9BVCggcG9zaXRpb24sIGJ1ZmZlciwgY291bnQgKSAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9TRVRfRVJST1IoIEZUX1N0cmVhbV9SZWFkQXQoIHN0cmVhbSwgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpKHBvc2l0aW9uKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0J5dGUqKWJ1ZmZlciwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZykoY291bnQpICkgKQorCisjZGVmaW5lIEZUX1NUUkVBTV9SRUFEX0ZJRUxEUyggZmllbGRzLCBvYmplY3QgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX1NFVF9FUlJPUiggRlRfU3RyZWFtX1JlYWRGaWVsZHMoIHN0cmVhbSwgZmllbGRzLCBvYmplY3QgKSApCisKKworI2RlZmluZSBGVF9GUkFNRV9FTlRFUiggc2l6ZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBGVF9TRVRfRVJST1IoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9ERUJVR19JTk5FUiggRlRfU3RyZWFtX0VudGVyRnJhbWUoIHN0cmVhbSwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpKHNpemUpICkgKSApCisKKyNkZWZpbmUgRlRfRlJBTUVfRVhJVCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfREVCVUdfSU5ORVIoIEZUX1N0cmVhbV9FeGl0RnJhbWUoIHN0cmVhbSApICkKKworI2RlZmluZSBGVF9GUkFNRV9FWFRSQUNUKCBzaXplLCBieXRlcyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEZUX1NFVF9FUlJPUiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfREVCVUdfSU5ORVIoIEZUX1N0cmVhbV9FeHRyYWN0RnJhbWUoIHN0cmVhbSwgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZykoc2l6ZSksICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9CeXRlKiopJihieXRlcykgKSApICkKKworI2RlZmluZSBGVF9GUkFNRV9SRUxFQVNFKCBieXRlcyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgRlRfREVCVUdfSU5ORVIoIEZUX1N0cmVhbV9SZWxlYXNlRnJhbWUoIHN0cmVhbSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0J5dGUqKikmKGJ5dGVzKSApICkKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUU1RSRUFNX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDk4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmgKQEAgLTAsMCArMSwxNTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0dHJhY2UuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcmFjaW5nIGhhbmRsaW5nIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMiwgMjAwNC0yMDA3LCAyMDA5LCAyMDExLTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBkZWZpbml0aW9ucyBvZiB0cmFjZSBsZXZlbHMgZm9yIEZyZWVUeXBlIDIgKi8KKworICAvKiB0aGUgZmlyc3QgbGV2ZWwgbXVzdCBhbHdheXMgYmUgYHRyYWNlX2FueScgKi8KK0ZUX1RSQUNFX0RFRiggYW55ICkKKworICAvKiBiYXNlIGNvbXBvbmVudHMgKi8KK0ZUX1RSQUNFX0RFRiggY2FsYyApICAgICAgLyogY2FsY3VsYXRpb25zICAgICAgICAgICAgKGZ0Y2FsYy5jKSAgICovCitGVF9UUkFDRV9ERUYoIG1lbW9yeSApICAgIC8qIG1lbW9yeSBtYW5hZ2VyICAgICAgICAgIChmdG9ianMuYykgICAqLworRlRfVFJBQ0VfREVGKCBzdHJlYW0gKSAgICAvKiBzdHJlYW0gbWFuYWdlciAgICAgICAgICAoZnRzdHJlYW0uYykgKi8KK0ZUX1RSQUNFX0RFRiggaW8gKSAgICAgICAgLyogaS9vIGludGVyZmFjZSAgICAgICAgICAgKGZ0c3lzdGVtLmMpICovCitGVF9UUkFDRV9ERUYoIGxpc3QgKSAgICAgIC8qIGxpc3QgbWFuYWdlbWVudCAgICAgICAgIChmdGxpc3QuYykgICAqLworRlRfVFJBQ0VfREVGKCBpbml0ICkgICAgICAvKiBpbml0aWFsaXphdGlvbiAgICAgICAgICAoZnRpbml0LmMpICAgKi8KK0ZUX1RSQUNFX0RFRiggb2JqcyApICAgICAgLyogYmFzZSBvYmplY3RzICAgICAgICAgICAgKGZ0b2Jqcy5jKSAgICovCitGVF9UUkFDRV9ERUYoIG91dGxpbmUgKSAgIC8qIG91dGxpbmUgbWFuYWdlbWVudCAgICAgIChmdG91dGxuLmMpICAqLworRlRfVFJBQ0VfREVGKCBnbHlwaCApICAgICAvKiBnbHlwaCBtYW5hZ2VtZW50ICAgICAgICAoZnRnbHlwaC5jKSAgKi8KK0ZUX1RSQUNFX0RFRiggZ2xvYWRlciApICAgLyogZ2x5cGggbG9hZGVyICAgICAgICAgICAgKGZ0Z2xvYWRyLmMpICovCisKK0ZUX1RSQUNFX0RFRiggcmFzdGVyICkgICAgLyogbW9ub2Nocm9tZSByYXN0ZXJpemVyICAgKGZ0cmFzdGVyLmMpICovCitGVF9UUkFDRV9ERUYoIHNtb290aCApICAgIC8qIGFudGktYWxpYXNpbmcgcmFzdGVyICAgIChmdGdyYXlzLmMpICAqLworRlRfVFJBQ0VfREVGKCBtbSApICAgICAgICAvKiBNTSBpbnRlcmZhY2UgICAgICAgICAgICAoZnRtbS5jKSAgICAgKi8KK0ZUX1RSQUNFX0RFRiggcmFjY2VzcyApICAgLyogcmVzb3VyY2UgZm9yayBhY2Nlc3NvciAgKGZ0cmZvcmsuYykgICovCitGVF9UUkFDRV9ERUYoIHN5bnRoICkgICAgIC8qIGJvbGQvc2xhbnQgc3ludGhlc2l6ZXIgIChmdHN5bnRoLmMpICAqLworRlRfVFJBQ0VfREVGKCBiaXRtYXAgKSAgICAvKiBiaXRtYXAgY2hlY2tzdW0gICAgICAgICAoZnRvYmpzLmMpICAgKi8KKworICAvKiBDYWNoZSBzdWItc3lzdGVtICovCitGVF9UUkFDRV9ERUYoIGNhY2hlICkgICAgIC8qIGNhY2hlIHN1Yi1zeXN0ZW0gICAgICAgIChmdGNhY2hlLmMsIGV0Yy4pICovCisKKyAgLyogU0ZOVCBkcml2ZXIgY29tcG9uZW50cyAqLworRlRfVFJBQ0VfREVGKCBzZmRyaXZlciApICAvKiBTRk5UIGZvbnQgZHJpdmVyICAgICAgICAoc2Zkcml2ZXIuYykgKi8KK0ZUX1RSQUNFX0RFRiggc2ZvYmpzICkgICAgLyogU0ZOVCBvYmplY3QgaGFuZGxlciAgICAgKHNmb2Jqcy5jKSAgICovCitGVF9UUkFDRV9ERUYoIHR0Y21hcCApICAgIC8qIGNoYXJtYXAgaGFuZGxlciAgICAgICAgICh0dGNtYXAuYykgICAqLworRlRfVFJBQ0VfREVGKCB0dGtlcm4gKSAgICAvKiBrZXJuaW5nIGhhbmRsZXIgICAgICAgICAodHRrZXJuLmMpICAgKi8KK0ZUX1RSQUNFX0RFRiggdHRsb2FkICkgICAgLyogYmFzaWMgVHJ1ZVR5cGUgdGFibGVzICAgKHR0bG9hZC5jKSAgICovCitGVF9UUkFDRV9ERUYoIHR0bXR4ICkgICAgIC8qIG1ldHJpY3MtcmVsYXRlZCB0YWJsZXMgICh0dG10eC5jKSAgICAqLworRlRfVFJBQ0VfREVGKCB0dHBvc3QgKSAgICAvKiBQUyB0YWJsZSBwcm9jZXNzaW5nICAgICAodHRwb3N0LmMpICAgKi8KK0ZUX1RSQUNFX0RFRiggdHRzYml0ICkgICAgLyogVHJ1ZVR5cGUgc2JpdCBoYW5kbGluZyAgKHR0c2JpdC5jKSAgICovCitGVF9UUkFDRV9ERUYoIHR0YmRmICkgICAgIC8qIFRydWVUeXBlIGVtYmVkZGVkIEJERiAgICh0dGJkZi5jKSAgICAqLworCisgIC8qIFRydWVUeXBlIGRyaXZlciBjb21wb25lbnRzICovCitGVF9UUkFDRV9ERUYoIHR0ZHJpdmVyICkgIC8qIFRUIGZvbnQgZHJpdmVyICAgICAgICAgICh0dGRyaXZlci5jKSAqLworRlRfVFJBQ0VfREVGKCB0dGdsb2FkICkgICAvKiBUVCBnbHlwaCBsb2FkZXIgICAgICAgICAodHRnbG9hZC5jKSAgKi8KK0ZUX1RSQUNFX0RFRiggdHRpbnRlcnAgKSAgLyogYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgICAgKHR0aW50ZXJwLmMpICovCitGVF9UUkFDRV9ERUYoIHR0b2JqcyApICAgIC8qIFRUIG9iamVjdHMgbWFuYWdlciAgICAgICh0dG9ianMuYykgICAqLworRlRfVFJBQ0VfREVGKCB0dHBsb2FkICkgICAvKiBUVCBkYXRhL3Byb2dyYW0gbG9hZGVyICAodHRwbG9hZC5jKSAgKi8KK0ZUX1RSQUNFX0RFRiggdHRneHZhciApICAgLyogVHJ1ZVR5cGUgR1ggdmFyIGhhbmRsZXIgKHR0Z3h2YXIuYykgICovCisKKyAgLyogVHlwZSAxIGRyaXZlciBjb21wb25lbnRzICovCitGVF9UUkFDRV9ERUYoIHQxYWZtICkKK0ZUX1RSQUNFX0RFRiggdDFkcml2ZXIgKQorRlRfVFJBQ0VfREVGKCB0MWdsb2FkICkKK0ZUX1RSQUNFX0RFRiggdDFoaW50ICkKK0ZUX1RSQUNFX0RFRiggdDFsb2FkICkKK0ZUX1RSQUNFX0RFRiggdDFvYmpzICkKK0ZUX1RSQUNFX0RFRiggdDFwYXJzZSApCisKKyAgLyogUG9zdFNjcmlwdCBoZWxwZXIgbW9kdWxlIGBwc2F1eCcgKi8KK0ZUX1RSQUNFX0RFRiggdDFkZWNvZGUgKQorRlRfVFJBQ0VfREVGKCBwc29ianMgKQorRlRfVFJBQ0VfREVGKCBwc2NvbnYgKQorCisgIC8qIFBvc3RTY3JpcHQgaGludGluZyBtb2R1bGUgYHBzaGludGVyJyAqLworRlRfVFJBQ0VfREVGKCBwc2hyZWMgKQorRlRfVFJBQ0VfREVGKCBwc2hhbGdvMSApCitGVF9UUkFDRV9ERUYoIHBzaGFsZ28yICkKKworICAvKiBUeXBlIDIgZHJpdmVyIGNvbXBvbmVudHMgKi8KK0ZUX1RSQUNFX0RFRiggY2ZmZHJpdmVyICkKK0ZUX1RSQUNFX0RFRiggY2ZmZ2xvYWQgKQorRlRfVFJBQ0VfREVGKCBjZmZsb2FkICkKK0ZUX1RSQUNFX0RFRiggY2Zmb2JqcyApCitGVF9UUkFDRV9ERUYoIGNmZnBhcnNlICkKKworRlRfVFJBQ0VfREVGKCBjZjJibHVlcyApCitGVF9UUkFDRV9ERUYoIGNmMmhpbnRzICkKK0ZUX1RSQUNFX0RFRiggY2YyaW50ZXJwICkKKworICAvKiBUeXBlIDQyIGRyaXZlciBjb21wb25lbnQgKi8KK0ZUX1RSQUNFX0RFRiggdDQyICkKKworICAvKiBDSUQgZHJpdmVyIGNvbXBvbmVudHMgKi8KK0ZUX1RSQUNFX0RFRiggY2lkYWZtICkKK0ZUX1RSQUNFX0RFRiggY2lkZHJpdmVyICkKK0ZUX1RSQUNFX0RFRiggY2lkZ2xvYWQgKQorRlRfVFJBQ0VfREVGKCBjaWRsb2FkICkKK0ZUX1RSQUNFX0RFRiggY2lkb2JqcyApCitGVF9UUkFDRV9ERUYoIGNpZHBhcnNlICkKKworICAvKiBXaW5kb3dzIGZvbnQgY29tcG9uZW50ICovCitGVF9UUkFDRV9ERUYoIHdpbmZudCApCisKKyAgLyogUENGIGZvbnQgY29tcG9uZW50cyAqLworRlRfVFJBQ0VfREVGKCBwY2Zkcml2ZXIgKQorRlRfVFJBQ0VfREVGKCBwY2ZyZWFkICkKKworICAvKiBCREYgZm9udCBjb21wb25lbnRzICovCitGVF9UUkFDRV9ERUYoIGJkZmRyaXZlciApCitGVF9UUkFDRV9ERUYoIGJkZmxpYiApCisKKyAgLyogUEZSIGZvbnQgY29tcG9uZW50ICovCitGVF9UUkFDRV9ERUYoIHBmciApCisKKyAgLyogT3BlblR5cGUgdmFsaWRhdGlvbiBjb21wb25lbnRzICovCitGVF9UUkFDRV9ERUYoIG90dm1vZHVsZSApCitGVF9UUkFDRV9ERUYoIG90dmNvbW1vbiApCitGVF9UUkFDRV9ERUYoIG90dmJhc2UgKQorRlRfVFJBQ0VfREVGKCBvdHZnZGVmICkKK0ZUX1RSQUNFX0RFRiggb3R2Z3BvcyApCitGVF9UUkFDRV9ERUYoIG90dmdzdWIgKQorRlRfVFJBQ0VfREVGKCBvdHZqc3RmICkKK0ZUX1RSQUNFX0RFRiggb3R2bWF0aCApCisKKyAgLyogVHJ1ZVR5cGVHWC9BQVQgdmFsaWRhdGlvbiBjb21wb25lbnRzICovCitGVF9UUkFDRV9ERUYoIGd4dm1vZHVsZSApCitGVF9UUkFDRV9ERUYoIGd4dmNvbW1vbiApCitGVF9UUkFDRV9ERUYoIGd4dmZlYXQgKQorRlRfVFJBQ0VfREVGKCBneHZtb3J0ICkKK0ZUX1RSQUNFX0RFRiggZ3h2bW9yeCApCitGVF9UUkFDRV9ERUYoIGd4dmJzbG4gKQorRlRfVFJBQ0VfREVGKCBneHZqdXN0ICkKK0ZUX1RSQUNFX0RFRiggZ3h2a2VybiApCitGVF9UUkFDRV9ERUYoIGd4dm9wYmQgKQorRlRfVFJBQ0VfREVGKCBneHZ0cmFrICkKK0ZUX1RSQUNFX0RFRiggZ3h2cHJvcCApCitGVF9UUkFDRV9ERUYoIGd4dmxjYXIgKQorCisgIC8qIGF1dG9maXQgY29tcG9uZW50cyAqLworRlRfVFJBQ0VfREVGKCBhZm1vZHVsZSApCitGVF9UUkFDRV9ERUYoIGFmaGludHMgKQorRlRfVFJBQ0VfREVGKCBhZmNqayApCitGVF9UUkFDRV9ERUYoIGFmbGF0aW4gKQorRlRfVFJBQ0VfREVGKCBhZmxhdGluMiApCitGVF9UUkFDRV9ERUYoIGFmd2FycCApCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR2YWxpZC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR2YWxpZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDI2MTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHZhbGlkLmgKQEAgLTAsMCArMSwxNjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0dmFsaWQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSB2YWxpZGF0aW9uIHN1cHBvcnQgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUVkFMSURfSF9fCisjZGVmaW5lIF9fRlRWQUxJRF9IX18KKworI2luY2x1ZGUgIi4uLy4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vY29uZmlnL2Z0c3RkbGliLmgiICAgLyogZm9yIGZ0X3NldGptcCBhbmQgZnRfbG9uZ2ptcCAqLworCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgViBBIEwgSSBEIEEgVCBJIE8gTiAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qIGhhbmRsZSB0byBhIHZhbGlkYXRpb24gb2JqZWN0ICovCisgIHR5cGVkZWYgc3RydWN0IEZUX1ZhbGlkYXRvclJlY18gdm9sYXRpbGUqICBGVF9WYWxpZGF0b3I7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZXJlIGFyZSB0aHJlZSBkaXN0aW5jdCB2YWxpZGF0aW9uIGxldmVscyBkZWZpbmVkIGhlcmU6ICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRlRfVkFMSURBVEVfREVGQVVMVCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgQSB0YWJsZSB0aGF0IHBhc3NlcyB0aGlzIHZhbGlkYXRpb24gbGV2ZWwgY2FuIGJlIHVzZWQgcmVsaWFibHkgYnkgICAqLworICAvKiAgIEZyZWVUeXBlLiAgSXQgZ2VuZXJhbGx5IG1lYW5zIHRoYXQgYWxsIG9mZnNldHMgaGF2ZSBiZWVuIGNoZWNrZWQgdG8gKi8KKyAgLyogICBwcmV2ZW50IG91dC1vZi1ib3VuZCByZWFkcywgdGhhdCBhcnJheSBjb3VudHMgYXJlIGNvcnJlY3QsIGV0Yy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGVF9WQUxJREFURV9USUdIVCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBBIHRhYmxlIHRoYXQgcGFzc2VzIHRoaXMgdmFsaWRhdGlvbiBsZXZlbCBjYW4gYmUgdXNlZCByZWxpYWJseSBhbmQgICovCisgIC8qICAgZG9lc24ndCBjb250YWluIGludmFsaWQgZGF0YS4gIEZvciBleGFtcGxlLCBhIGNoYXJtYXAgdGFibGUgdGhhdCAgICAqLworICAvKiAgIHJldHVybnMgaW52YWxpZCBnbHlwaCBpbmRpY2VzIHdpbGwgbm90IHBhc3MsIGV2ZW4gdGhvdWdoIGl0IGNhbiAgICAgKi8KKyAgLyogICBiZSB1c2VkIHdpdGggRnJlZVR5cGUgaW4gZGVmYXVsdCBtb2RlICh0aGUgbGlicmFyeSB3aWxsIHNpbXBseSAgICAgICovCisgIC8qICAgcmV0dXJuIGFuIGVycm9yIGxhdGVyIHdoZW4gdHJ5aW5nIHRvIGxvYWQgdGhlIGdseXBoKS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBJdCBhbHNvIGNoZWNrcyB0aGF0IGZpZWxkcyB3aGljaCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMiwgNCwgb3IgOCwgICovCisgIC8qICAgZG9uJ3QgaGF2ZSBpbmNvcnJlY3QgdmFsdWVzLCBldGMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRlRfVkFMSURBVEVfUEFSQU5PSUQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgT25seSBmb3IgZm9udCBkZWJ1Z2dpbmcuICBDaGVja3MgdGhhdCBhIHRhYmxlIGZvbGxvd3MgdGhlICAgICAgICAgICAqLworICAvKiAgIHNwZWNpZmljYXRpb24gYnkgMTAwJS4gIFZlcnkgZmV3IGZvbnRzIHdpbGwgYmUgYWJsZSB0byBwYXNzIHRoaXMgICAgKi8KKyAgLyogICBsZXZlbCBhbnl3YXkgYnV0IGl0IGNhbiBiZSB1c2VmdWwgZm9yIGNlcnRhaW4gdG9vbHMgbGlrZSBmb250ICAgICAgICovCisgIC8qICAgZWRpdG9ycy9jb252ZXJ0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBlbnVtICBGVF9WYWxpZGF0aW9uTGV2ZWxfCisgIHsKKyAgICBGVF9WQUxJREFURV9ERUZBVUxUID0gMCwKKyAgICBGVF9WQUxJREFURV9USUdIVCwKKyAgICBGVF9WQUxJREFURV9QQVJBTk9JRAorCisgIH0gRlRfVmFsaWRhdGlvbkxldmVsOworCisKKyNpZiBkZWZpbmVkKCBfTVNDX1ZFUiApICAgICAgLyogVmlzdWFsIEMrKyAoYW5kIEludGVsIEMrKykgKi8KKyAgLyogV2UgZGlzYWJsZSB0aGUgd2FybmluZyBgc3RydWN0dXJlIHdhcyBwYWRkZWQgZHVlIHRvICAgKi8KKyAgLyogX19kZWNsc3BlYyhhbGlnbigpKScgaW4gb3JkZXIgdG8gY29tcGlsZSBjbGVhbmx5IHdpdGggKi8KKyAgLyogdGhlIG1heGltdW0gbGV2ZWwgb2Ygd2FybmluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNwcmFnbWEgd2FybmluZyggcHVzaCApCisjcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0MzI0ICkKKyNlbmRpZiAvKiBfTVNDX1ZFUiAqLworCisgIC8qIHZhbGlkYXRvciBzdHJ1Y3R1cmUgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1ZhbGlkYXRvclJlY18KKyAgeworICAgIGNvbnN0IEZUX0J5dGUqICAgICAgYmFzZTsgICAgICAgIC8qIGFkZHJlc3Mgb2YgdGFibGUgaW4gbWVtb3J5ICAgICAgICovCisgICAgY29uc3QgRlRfQnl0ZSogICAgICBsaW1pdDsgICAgICAgLyogYGJhc2UnICsgc2l6ZW9mKHRhYmxlKSBpbiBtZW1vcnkgKi8KKyAgICBGVF9WYWxpZGF0aW9uTGV2ZWwgIGxldmVsOyAgICAgICAvKiB2YWxpZGF0aW9uIGxldmVsICAgICAgICAgICAgICAgICAqLworICAgIEZUX0Vycm9yICAgICAgICAgICAgZXJyb3I7ICAgICAgIC8qIGVycm9yIHJldHVybmVkLiAwIG1lYW5zIHN1Y2Nlc3MgICovCisKKyAgICBmdF9qbXBfYnVmICAgICAgICAgIGp1bXBfYnVmZmVyOyAvKiB1c2VkIGZvciBleGNlcHRpb24gaGFuZGxpbmcgICAgICAqLworCisgIH0gRlRfVmFsaWRhdG9yUmVjOworCisjaWYgZGVmaW5lZCggX01TQ19WRVIgKQorI3ByYWdtYSB3YXJuaW5nKCBwb3AgKQorI2VuZGlmCisKKyNkZWZpbmUgRlRfVkFMSURBVE9SKCB4ICkgICggKEZUX1ZhbGlkYXRvcikoIHggKSApCisKKworICBGVF9CQVNFKCB2b2lkICkKKyAgZnRfdmFsaWRhdG9yX2luaXQoIEZUX1ZhbGlkYXRvciAgICAgICAgdmFsaWQsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CeXRlKiAgICAgIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CeXRlKiAgICAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgRlRfVmFsaWRhdGlvbkxldmVsICBsZXZlbCApOworCisgIC8qIERvIG5vdCB1c2UgdGhpcy4gSXQncyBicm9rZW4gYW5kIHdpbGwgY2F1c2UgeW91ciB2YWxpZGF0b3IgdG8gY3Jhc2ggKi8KKyAgLyogaWYgeW91IHJ1biBpdCBvbiBhbiBpbnZhbGlkIGZvbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCBGVF9JbnQgKQorICBmdF92YWxpZGF0b3JfcnVuKCBGVF9WYWxpZGF0b3IgIHZhbGlkICk7CisKKyAgLyogU2V0cyB0aGUgZXJyb3IgZmllbGQgaW4gYSB2YWxpZGF0b3IsIHRoZW4gY2FsbHMgYGxvbmdqbXAnIHRvIHJldHVybiAqLworICAvKiB0byBoaWdoLWxldmVsIGNhbGxlci4gIFVzaW5nIGBzZXRqbXAvbG9uZ2ptcCcgYXZvaWRzIG1hbnkgc3R1cGlkICAgICovCisgIC8qIGVycm9yIGNoZWNrcyB3aXRoaW4gdGhlIHZhbGlkYXRpb24gcm91dGluZXMuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFKCB2b2lkICkKKyAgZnRfdmFsaWRhdG9yX2Vycm9yKCBGVF9WYWxpZGF0b3IgIHZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yICAgICAgZXJyb3IgKTsKKworCisgIC8qIENhbGxzIGZ0X3ZhbGlkYXRlX2Vycm9yLiAgQXNzdW1lcyB0aGF0IHRoZSBgdmFsaWQnIGxvY2FsIHZhcmlhYmxlICovCisgIC8qIGhvbGRzIGEgcG9pbnRlciB0byB0aGUgY3VycmVudCB2YWxpZGF0b3Igb2JqZWN0LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFVzZSBwcmVwcm9jZXNzb3IgcHJlc2NhbiB0byBwYXNzIEZUX0VSUl9QUkVGSVguICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX0lOVkFMSUQoIF9wcmVmaXgsIF9lcnJvciApICBGVF9JTlZBTElEXyggX3ByZWZpeCwgX2Vycm9yICkKKyNkZWZpbmUgRlRfSU5WQUxJRF8oIF9wcmVmaXgsIF9lcnJvciApIFwKKyAgICAgICAgICBmdF92YWxpZGF0b3JfZXJyb3IoIHZhbGlkLCBfcHJlZml4ICMjIF9lcnJvciApCisKKyAgLyogY2FsbGVkIHdoZW4gYSBicm9rZW4gdGFibGUgaXMgZGV0ZWN0ZWQgKi8KKyNkZWZpbmUgRlRfSU5WQUxJRF9UT09fU0hPUlQgXAorICAgICAgICAgIEZUX0lOVkFMSUQoIEZUX0VSUl9QUkVGSVgsIEludmFsaWRfVGFibGUgKQorCisgIC8qIGNhbGxlZCB3aGVuIGFuIGludmFsaWQgb2Zmc2V0IGlzIGRldGVjdGVkICovCisjZGVmaW5lIEZUX0lOVkFMSURfT0ZGU0VUIFwKKyAgICAgICAgICBGVF9JTlZBTElEKCBGVF9FUlJfUFJFRklYLCBJbnZhbGlkX09mZnNldCApCisKKyAgLyogY2FsbGVkIHdoZW4gYW4gaW52YWxpZCBmb3JtYXQvdmFsdWUgaXMgZGV0ZWN0ZWQgKi8KKyNkZWZpbmUgRlRfSU5WQUxJRF9GT1JNQVQgXAorICAgICAgICAgIEZUX0lOVkFMSUQoIEZUX0VSUl9QUkVGSVgsIEludmFsaWRfVGFibGUgKQorCisgIC8qIGNhbGxlZCB3aGVuIGFuIGludmFsaWQgZ2x5cGggaW5kZXggaXMgZGV0ZWN0ZWQgKi8KKyNkZWZpbmUgRlRfSU5WQUxJRF9HTFlQSF9JRCBcCisgICAgICAgICAgRlRfSU5WQUxJRCggRlRfRVJSX1BSRUZJWCwgSW52YWxpZF9HbHlwaF9JbmRleCApCisKKyAgLyogY2FsbGVkIHdoZW4gYW4gaW52YWxpZCBmaWVsZCB2YWx1ZSBpcyBkZXRlY3RlZCAqLworI2RlZmluZSBGVF9JTlZBTElEX0RBVEEgXAorICAgICAgICAgIEZUX0lOVkFMSUQoIEZUX0VSUl9QUkVGSVgsIEludmFsaWRfVGFibGUgKQorCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRWQUxJRF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MmFmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBJbnRlcm5hbCBoZWFkZXIgZmlsZXMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA0LCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGJ5IGBmdDJidWlsZC5oJy4gICAgICAgICAgICAgICAgICAqLworICAvKiBEbyBub3QgaW5jbHVkZSBpdCBtYW51YWxseSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNkZWZpbmUgRlRfSU5URVJOQUxfT0JKRUNUU19IICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfUElDX0ggICAgICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdHBpYy5oPgorI2RlZmluZSBGVF9JTlRFUk5BTF9TVFJFQU1fSCAgICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmg+CisjZGVmaW5lIEZUX0lOVEVSTkFMX01FTU9SWV9IICAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfREVCVUdfSCAgICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg+CisjZGVmaW5lIEZUX0lOVEVSTkFMX0NBTENfSCAgICAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg+CisjZGVmaW5lIEZUX0lOVEVSTkFMX0RSSVZFUl9IICAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfVFJBQ0VfSCAgICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmg+CisjZGVmaW5lIEZUX0lOVEVSTkFMX0dMWVBIX0xPQURFUl9IICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfU0ZOVF9IICAgICAgICAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9zZm50Lmg+CisjZGVmaW5lIEZUX0lOVEVSTkFMX1NFUlZJQ0VfSCAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2Lmg+CisjZGVmaW5lIEZUX0lOVEVSTkFMX1JGT1JLX0ggICAgICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oPgorI2RlZmluZSBGVF9JTlRFUk5BTF9WQUxJREFURV9IICAgICAgICAgICAgPGZyZWV0eXBlL2ludGVybmFsL2Z0dmFsaWQuaD4KKworI2RlZmluZSBGVF9JTlRFUk5BTF9UUlVFVFlQRV9UWVBFU19IICAgICAgPGZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfVFlQRTFfVFlQRVNfSCAgICAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmg+CisKKyNkZWZpbmUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9BVVhfSCAgICAgIDxmcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oPgorI2RlZmluZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0ggICAgPGZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaD4KKyNkZWZpbmUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9HTE9CQUxTX0ggIDxmcmVldHlwZS9pbnRlcm5hbC9wc2dsb2JhbC5oPgorCisjZGVmaW5lIEZUX0lOVEVSTkFMX0FVVE9ISU5UX0ggICAgICAgICAgICA8ZnJlZXR5cGUvaW50ZXJuYWwvYXV0b2hpbnQuaD4KKworCisjaWYgZGVmaW5lZCggX01TQ19WRVIgKSAgICAgIC8qIFZpc3VhbCBDKysgKGFuZCBJbnRlbCBDKyspICovCisKKyAgLyogV2UgZGlzYWJsZSB0aGUgd2FybmluZyBgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCcgaGVyZSAqLworICAvKiBpbiBvcmRlciB0byBjb21waWxlIGNsZWFubHkgd2l0aCB0aGUgbWF4aW11bSBsZXZlbCBvZiB3YXJuaW5ncy4gICovCisgIC8qIEluIHBhcnRpY3VsYXIsIHRoZSB3YXJuaW5nIGNvbXBsYWlucyBhYm91dCBzdHVmZiBsaWtlIGB3aGlsZSgwKScgKi8KKyAgLyogd2hpY2ggaXMgdmVyeSB1c2VmdWwgaW4gbWFjcm8gZGVmaW5pdGlvbnMuICBUaGVyZSBpcyBubyBiZW5lZml0ICAqLworICAvKiBpbiBoYXZpbmcgaXQgZW5hYmxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0MTI3ICkKKworI2VuZGlmIC8qIF9NU0NfVkVSICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTI4ZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaApAQCAtMCwwICsxLDg3NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcHNhdXguaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEF1eGlsaWFyeSBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIFBvc3RTY3JpcHQgZm9udHMgICovCisvKiAgICAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA0LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1BTQVVYX0hfXworI2RlZmluZSBfX1BTQVVYX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZ0b2Jqcy5oIgorI2luY2x1ZGUgInQxdHlwZXMuaCIKKyNpbmNsdWRlICJzZXJ2aWNlcy9zdnBzY21hcC5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMV9UQUJMRSAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICB0eXBlZGVmIHN0cnVjdCBQU19UYWJsZVJlY18qICAgICAgICAgICAgICBQU19UYWJsZTsKKyAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgUFNfVGFibGVfRnVuY3NSZWNfKiAgUFNfVGFibGVfRnVuY3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQU19UYWJsZV9GdW5jc1JlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNldCBvZiBmdW5jdGlvbiBwb2ludGVycyB0byBtYW5hZ2UgUFNfVGFibGUgb2JqZWN0cy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWJsZV9pbml0ICAgIDo6IFVzZWQgdG8gaW5pdGlhbGl6ZSBhIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhYmxlX2RvbmUgICAgOjogRmluYWxpemVzIHJlc3AuIGRlc3Ryb3kgYSBnaXZlbiB0YWJsZS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFibGVfYWRkICAgICA6OiBBZGRzIGEgbmV3IG9iamVjdCB0byBhIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWJsZV9yZWxlYXNlIDo6IFJlbGVhc2VzIHRhYmxlIGRhdGEsIHRoZW4gZmluYWxpemVzIGl0LiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19UYWJsZV9GdW5jc1JlY18KKyAgeworICAgIEZUX0Vycm9yCisgICAgKCppbml0KSggUFNfVGFibGUgICB0YWJsZSwKKyAgICAgICAgICAgICBGVF9JbnQgICAgIGNvdW50LAorICAgICAgICAgICAgIEZUX01lbW9yeSAgbWVtb3J5ICk7CisKKyAgICB2b2lkCisgICAgKCpkb25lKSggUFNfVGFibGUgIHRhYmxlICk7CisKKyAgICBGVF9FcnJvcgorICAgICgqYWRkKSggUFNfVGFibGUgICAgdGFibGUsCisgICAgICAgICAgICBGVF9JbnQgICAgICBpZHgsCisgICAgICAgICAgICB2b2lkKiAgICAgICBvYmplY3QsCisgICAgICAgICAgICBGVF9QdHJEaXN0ICBsZW5ndGggKTsKKworICAgIHZvaWQKKyAgICAoKnJlbGVhc2UpKCBQU19UYWJsZSAgdGFibGUgKTsKKworICB9IFBTX1RhYmxlX0Z1bmNzUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUFNfVGFibGVSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBQU19UYWJsZSBpcyBhIHNpbXBsZSBvYmplY3QgdXNlZCB0byBzdG9yZSBhbiBhcnJheSBvZiBvYmplY3RzIGluICovCisgIC8qICAgIGEgc2luZ2xlIG1lbW9yeSBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJsb2NrICAgICA6OiBUaGUgYWRkcmVzcyBpbiBtZW1vcnkgb2YgdGhlIGdyb3doZWFwJ3MgYmxvY2suICBUaGlzICAqLworICAvKiAgICAgICAgICAgICAgICAgY2FuIGNoYW5nZSBiZXR3ZWVuIHR3byBvYmplY3QgYWRkcywgZHVlIHRvICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgIHJlYWxsb2NhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjdXJzb3IgICAgOjogVGhlIGN1cnJlbnQgdG9wIG9mIHRoZSBncm93IGhlYXAgd2l0aGluIGl0cyBibG9jay4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNhcGFjaXR5ICA6OiBUaGUgY3VycmVudCBzaXplIG9mIHRoZSBoZWFwIGJsb2NrLiAgSW5jcmVtZW50cyBieSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgMWtCeXRlIGNodW5rcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGluaXQgICAgICA6OiBTZXQgdG8gMHhERUFEQkVFRiBpZiBgZWxlbWVudHMnIGFuZCBgbGVuZ3RocycgaGF2ZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgYmVlbiBhbGxvY2F0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heF9lbGVtcyA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGFibGUuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2VsZW1zIDo6IFRoZSBjdXJyZW50IG51bWJlciBvZiBlbGVtZW50cyBpbiB0YWJsZS4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBlbGVtZW50cyAgOjogQSB0YWJsZSBvZiBlbGVtZW50IGFkZHJlc3NlcyB3aXRoaW4gdGhlIGJsb2NrLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlbmd0aHMgICA6OiBBIHRhYmxlIG9mIGVsZW1lbnQgc2l6ZXMgd2l0aGluIHRoZSBibG9jay4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5ICAgIDo6IFRoZSBvYmplY3QgdXNlZCBmb3IgbWVtb3J5IG9wZXJhdGlvbnMgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAoYWxsb2MvcmVhbGxvYykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnVuY3MgICAgIDo6IEEgdGFibGUgb2YgbWV0aG9kIHBvaW50ZXJzIGZvciB0aGlzIG9iamVjdC4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgUFNfVGFibGVSZWNfCisgIHsKKyAgICBGVF9CeXRlKiAgICAgICAgICAgYmxvY2s7ICAgICAgICAgIC8qIGN1cnJlbnQgbWVtb3J5IGJsb2NrICAgICAgICAgICAqLworICAgIEZUX09mZnNldCAgICAgICAgICBjdXJzb3I7ICAgICAgICAgLyogY3VycmVudCBjdXJzb3IgaW4gbWVtb3J5IGJsb2NrICovCisgICAgRlRfT2Zmc2V0ICAgICAgICAgIGNhcGFjaXR5OyAgICAgICAvKiBjdXJyZW50IHNpemUgb2YgbWVtb3J5IGJsb2NrICAgKi8KKyAgICBGVF9Mb25nICAgICAgICAgICAgaW5pdDsKKworICAgIEZUX0ludCAgICAgICAgICAgICBtYXhfZWxlbXM7CisgICAgRlRfSW50ICAgICAgICAgICAgIG51bV9lbGVtczsKKyAgICBGVF9CeXRlKiogICAgICAgICAgZWxlbWVudHM7ICAgICAgIC8qIGFkZHJlc3NlcyBvZiB0YWJsZSBlbGVtZW50cyAqLworICAgIEZUX1B0ckRpc3QqICAgICAgICBsZW5ndGhzOyAgICAgICAgLyogbGVuZ3RocyBvZiB0YWJsZSBlbGVtZW50cyAgICovCisKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5OworICAgIFBTX1RhYmxlX0Z1bmNzUmVjICBmdW5jczsKKworICB9IFBTX1RhYmxlUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICBUMSBGSUVMRFMgJiBUT0tFTlMgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgdHlwZWRlZiBzdHJ1Y3QgUFNfUGFyc2VyUmVjXyogIFBTX1BhcnNlcjsKKworICB0eXBlZGVmIHN0cnVjdCBUMV9Ub2tlblJlY18qICAgVDFfVG9rZW47CisKKyAgdHlwZWRlZiBzdHJ1Y3QgVDFfRmllbGRSZWNfKiAgIFQxX0ZpZWxkOworCisKKyAgLyogc2ltcGxlIGVudW1lcmF0aW9uIHR5cGUgdXNlZCB0byBpZGVudGlmeSB0b2tlbiB0eXBlcyAqLworICB0eXBlZGVmIGVudW0gIFQxX1Rva2VuVHlwZV8KKyAgeworICAgIFQxX1RPS0VOX1RZUEVfTk9ORSA9IDAsCisgICAgVDFfVE9LRU5fVFlQRV9BTlksCisgICAgVDFfVE9LRU5fVFlQRV9TVFJJTkcsCisgICAgVDFfVE9LRU5fVFlQRV9BUlJBWSwKKyAgICBUMV9UT0tFTl9UWVBFX0tFWSwgLyogYWthIGBuYW1lJyAqLworCisgICAgLyogZG8gbm90IHJlbW92ZSAqLworICAgIFQxX1RPS0VOX1RZUEVfTUFYCisKKyAgfSBUMV9Ub2tlblR5cGU7CisKKworICAvKiBhIHNpbXBsZSBzdHJ1Y3R1cmUgdXNlZCB0byBpZGVudGlmeSB0b2tlbnMgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX1Rva2VuUmVjXworICB7CisgICAgRlRfQnl0ZSogICAgICBzdGFydDsgICAvKiBmaXJzdCBjaGFyYWN0ZXIgb2YgdG9rZW4gaW4gaW5wdXQgc3RyZWFtICovCisgICAgRlRfQnl0ZSogICAgICBsaW1pdDsgICAvKiBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIHRva2VuICAgICAgICAgICovCisgICAgVDFfVG9rZW5UeXBlICB0eXBlOyAgICAvKiB0eXBlIG9mIHRva2VuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgfSBUMV9Ub2tlblJlYzsKKworCisgIC8qIGVudW1lcmF0aW9uIHR5cGUgdXNlZCB0byBpZGVudGlmeSBvYmplY3QgZmllbGRzICovCisgIHR5cGVkZWYgZW51bSAgVDFfRmllbGRUeXBlXworICB7CisgICAgVDFfRklFTERfVFlQRV9OT05FID0gMCwKKyAgICBUMV9GSUVMRF9UWVBFX0JPT0wsCisgICAgVDFfRklFTERfVFlQRV9JTlRFR0VSLAorICAgIFQxX0ZJRUxEX1RZUEVfRklYRUQsCisgICAgVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwLAorICAgIFQxX0ZJRUxEX1RZUEVfU1RSSU5HLAorICAgIFQxX0ZJRUxEX1RZUEVfS0VZLAorICAgIFQxX0ZJRUxEX1RZUEVfQkJPWCwKKyAgICBUMV9GSUVMRF9UWVBFX01NX0JCT1gsCisgICAgVDFfRklFTERfVFlQRV9JTlRFR0VSX0FSUkFZLAorICAgIFQxX0ZJRUxEX1RZUEVfRklYRURfQVJSQVksCisgICAgVDFfRklFTERfVFlQRV9DQUxMQkFDSywKKworICAgIC8qIGRvIG5vdCByZW1vdmUgKi8KKyAgICBUMV9GSUVMRF9UWVBFX01BWAorCisgIH0gVDFfRmllbGRUeXBlOworCisKKyAgdHlwZWRlZiBlbnVtICBUMV9GaWVsZExvY2F0aW9uXworICB7CisgICAgVDFfRklFTERfTE9DQVRJT05fQ0lEX0lORk8sCisgICAgVDFfRklFTERfTE9DQVRJT05fRk9OVF9ESUNULAorICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX0ZPTlRfRVhUUkEsCisgICAgVDFfRklFTERfTE9DQVRJT05fRk9OVF9JTkZPLAorICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX1BSSVZBVEUsCisgICAgVDFfRklFTERfTE9DQVRJT05fQkJPWCwKKyAgICBUMV9GSUVMRF9MT0NBVElPTl9MT0FERVIsCisgICAgVDFfRklFTERfTE9DQVRJT05fRkFDRSwKKyAgICBUMV9GSUVMRF9MT0NBVElPTl9CTEVORCwKKworICAgIC8qIGRvIG5vdCByZW1vdmUgKi8KKyAgICBUMV9GSUVMRF9MT0NBVElPTl9NQVgKKworICB9IFQxX0ZpZWxkTG9jYXRpb247CisKKworICB0eXBlZGVmIHZvaWQKKyAgKCpUMV9GaWVsZF9QYXJzZUZ1bmMpKCBGVF9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvaW50ZXIgIHBhcnNlciApOworCisKKyAgLyogc3RydWN0dXJlIHR5cGUgdXNlZCB0byBtb2RlbCBvYmplY3QgZmllbGRzICovCisgIHR5cGVkZWYgc3RydWN0ICBUMV9GaWVsZFJlY18KKyAgeworICAgIGNvbnN0IGNoYXIqICAgICAgICAgaWRlbnQ7ICAgICAgICAvKiBmaWVsZCBpZGVudGlmaWVyICAgICAgICAgICAgICAgKi8KKyAgICBUMV9GaWVsZExvY2F0aW9uICAgIGxvY2F0aW9uOworICAgIFQxX0ZpZWxkVHlwZSAgICAgICAgdHlwZTsgICAgICAgICAvKiB0eXBlIG9mIGZpZWxkICAgICAgICAgICAgICAgICAgKi8KKyAgICBUMV9GaWVsZF9QYXJzZUZ1bmMgIHJlYWRlcjsKKyAgICBGVF9VSW50ICAgICAgICAgICAgIG9mZnNldDsgICAgICAgLyogb2Zmc2V0IG9mIGZpZWxkIGluIG9iamVjdCAgICAgICovCisgICAgRlRfQnl0ZSAgICAgICAgICAgICBzaXplOyAgICAgICAgIC8qIHNpemUgb2YgZmllbGQgaW4gYnl0ZXMgICAgICAgICAqLworICAgIEZUX1VJbnQgICAgICAgICAgICAgYXJyYXlfbWF4OyAgICAvKiBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBmb3IgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgRlRfVUludCAgICAgICAgICAgICBjb3VudF9vZmZzZXQ7IC8qIG9mZnNldCBvZiBlbGVtZW50IGNvdW50IGZvciAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhcnJheXM7IG11c3Qgbm90IGJlIHplcm8gaWYgaW4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdXNlIC0tIGluIG90aGVyIHdvcmRzLCBhICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGBudW1fRk9PJyBlbGVtZW50IG11c3Qgbm90ICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdGFydCB0aGUgdXNlZCBzdHJ1Y3R1cmUgaWYgd2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGFyc2UgYSBgRk9PJyBhcnJheSAgICAgICAgICAgICovCisgICAgRlRfVUludCAgICAgICAgICAgICBkaWN0OyAgICAgICAgIC8qIHdoZXJlIHdlIGV4cGVjdCBpdCAgICAgICAgICAgICAqLworICB9IFQxX0ZpZWxkUmVjOworCisjZGVmaW5lIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKCAxIDw8IDAgKSAvKiBhbHNvIEZvbnRJbmZvIGFuZCBGREFycmF5ICovCisjZGVmaW5lIFQxX0ZJRUxEX0RJQ1RfUFJJVkFURSAgKCAxIDw8IDEgKQorCisKKworI2RlZmluZSBUMV9ORVdfU0lNUExFX0ZJRUxEKCBfaWRlbnQsIF90eXBlLCBfZm5hbWUsIF9kaWN0ICkgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX2lkZW50LCBUMUNPREUsIF90eXBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfT0ZGU0VUKCBfZm5hbWUgKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfU0laRSggX2ZuYW1lICksICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgMCwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX2RpY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIH0sCisKKyNkZWZpbmUgVDFfTkVXX0NBTExCQUNLX0ZJRUxEKCBfaWRlbnQsIF9yZWFkZXIsIF9kaWN0ICkgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfaWRlbnQsIFQxQ09ERSwgVDFfRklFTERfVFlQRV9DQUxMQkFDSywgICAgIFwKKyAgICAgICAgICAgIChUMV9GaWVsZF9QYXJzZUZ1bmMpX3JlYWRlciwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgMCwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAwLCAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9kaWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIH0sCisKKyNkZWZpbmUgVDFfTkVXX1RBQkxFX0ZJRUxEKCBfaWRlbnQsIF90eXBlLCBfZm5hbWUsIF9tYXgsIF9kaWN0ICkgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfaWRlbnQsIFQxQ09ERSwgX3R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfT0ZGU0VUKCBfZm5hbWUgKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9TSVpFX0RFTFRBKCBfZm5hbWUgKSwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9tYXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfT0ZGU0VUKCBudW1fICMjIF9mbmFtZSApLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfZGljdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB9LAorCisjZGVmaW5lIFQxX05FV19UQUJMRV9GSUVMRDIoIF9pZGVudCwgX3R5cGUsIF9mbmFtZSwgX21heCwgX2RpY3QgKSBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfaWRlbnQsIFQxQ09ERSwgX3R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9PRkZTRVQoIF9mbmFtZSApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9TSVpFX0RFTFRBKCBfZm5hbWUgKSwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfbWF4LCAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfZGljdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSwKKworCisjZGVmaW5lIFQxX0ZJRUxEX0JPT0woIF9pZGVudCwgX2ZuYW1lLCBfZGljdCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgVDFfTkVXX1NJTVBMRV9GSUVMRCggX2lkZW50LCBUMV9GSUVMRF9UWVBFX0JPT0wsIF9mbmFtZSwgX2RpY3QgKQorCisjZGVmaW5lIFQxX0ZJRUxEX05VTSggX2lkZW50LCBfZm5hbWUsIF9kaWN0ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgVDFfTkVXX1NJTVBMRV9GSUVMRCggX2lkZW50LCBUMV9GSUVMRF9UWVBFX0lOVEVHRVIsIF9mbmFtZSwgX2RpY3QgKQorCisjZGVmaW5lIFQxX0ZJRUxEX0ZJWEVEKCBfaWRlbnQsIF9mbmFtZSwgX2RpY3QgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFQxX05FV19TSU1QTEVfRklFTEQoIF9pZGVudCwgVDFfRklFTERfVFlQRV9GSVhFRCwgX2ZuYW1lLCBfZGljdCApCisKKyNkZWZpbmUgVDFfRklFTERfRklYRURfMTAwMCggX2lkZW50LCBfZm5hbWUsIF9kaWN0ICkgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgVDFfTkVXX1NJTVBMRV9GSUVMRCggX2lkZW50LCBUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDAsIF9mbmFtZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kaWN0ICkKKworI2RlZmluZSBUMV9GSUVMRF9TVFJJTkcoIF9pZGVudCwgX2ZuYW1lLCBfZGljdCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgVDFfTkVXX1NJTVBMRV9GSUVMRCggX2lkZW50LCBUMV9GSUVMRF9UWVBFX1NUUklORywgX2ZuYW1lLCBfZGljdCApCisKKyNkZWZpbmUgVDFfRklFTERfS0VZKCBfaWRlbnQsIF9mbmFtZSwgX2RpY3QgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFQxX05FV19TSU1QTEVfRklFTEQoIF9pZGVudCwgVDFfRklFTERfVFlQRV9LRVksIF9mbmFtZSwgX2RpY3QgKQorCisjZGVmaW5lIFQxX0ZJRUxEX0JCT1goIF9pZGVudCwgX2ZuYW1lLCBfZGljdCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgVDFfTkVXX1NJTVBMRV9GSUVMRCggX2lkZW50LCBUMV9GSUVMRF9UWVBFX0JCT1gsIF9mbmFtZSwgX2RpY3QgKQorCisKKyNkZWZpbmUgVDFfRklFTERfTlVNX1RBQkxFKCBfaWRlbnQsIF9mbmFtZSwgX2ZtYXgsIF9kaWN0ICkgICAgICAgICBcCisgICAgICAgICAgVDFfTkVXX1RBQkxFX0ZJRUxEKCBfaWRlbnQsIFQxX0ZJRUxEX1RZUEVfSU5URUdFUl9BUlJBWSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZuYW1lLCBfZm1heCwgX2RpY3QgKQorCisjZGVmaW5lIFQxX0ZJRUxEX0ZJWEVEX1RBQkxFKCBfaWRlbnQsIF9mbmFtZSwgX2ZtYXgsIF9kaWN0ICkgICAgIFwKKyAgICAgICAgICBUMV9ORVdfVEFCTEVfRklFTEQoIF9pZGVudCwgVDFfRklFTERfVFlQRV9GSVhFRF9BUlJBWSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZuYW1lLCBfZm1heCwgX2RpY3QgKQorCisjZGVmaW5lIFQxX0ZJRUxEX05VTV9UQUJMRTIoIF9pZGVudCwgX2ZuYW1lLCBfZm1heCwgX2RpY3QgKSAgICAgICAgIFwKKyAgICAgICAgICBUMV9ORVdfVEFCTEVfRklFTEQyKCBfaWRlbnQsIFQxX0ZJRUxEX1RZUEVfSU5URUdFUl9BUlJBWSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mbmFtZSwgX2ZtYXgsIF9kaWN0ICkKKworI2RlZmluZSBUMV9GSUVMRF9GSVhFRF9UQUJMRTIoIF9pZGVudCwgX2ZuYW1lLCBfZm1heCwgX2RpY3QgKSAgICAgXAorICAgICAgICAgIFQxX05FV19UQUJMRV9GSUVMRDIoIF9pZGVudCwgVDFfRklFTERfVFlQRV9GSVhFRF9BUlJBWSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mbmFtZSwgX2ZtYXgsIF9kaWN0ICkKKworI2RlZmluZSBUMV9GSUVMRF9DQUxMQkFDSyggX2lkZW50LCBfbmFtZSwgX2RpY3QgKSAgICAgICBcCisgICAgICAgICAgVDFfTkVXX0NBTExCQUNLX0ZJRUxEKCBfaWRlbnQsIF9uYW1lLCBfZGljdCApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgVDEgUEFSU0VSICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICB0eXBlZGVmIGNvbnN0IHN0cnVjdCBQU19QYXJzZXJfRnVuY3NSZWNfKiAgUFNfUGFyc2VyX0Z1bmNzOworCisgIHR5cGVkZWYgc3RydWN0ICBQU19QYXJzZXJfRnVuY3NSZWNfCisgIHsKKyAgICB2b2lkCisgICAgKCppbml0KSggUFNfUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgRlRfQnl0ZSogICBiYXNlLAorICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQsCisgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgKTsKKworICAgIHZvaWQKKyAgICAoKmRvbmUpKCBQU19QYXJzZXIgIHBhcnNlciApOworCisgICAgdm9pZAorICAgICgqc2tpcF9zcGFjZXMpKCBQU19QYXJzZXIgIHBhcnNlciApOworICAgIHZvaWQKKyAgICAoKnNraXBfUFNfdG9rZW4pKCBQU19QYXJzZXIgIHBhcnNlciApOworCisgICAgRlRfTG9uZworICAgICgqdG9faW50KSggUFNfUGFyc2VyICBwYXJzZXIgKTsKKyAgICBGVF9GaXhlZAorICAgICgqdG9fZml4ZWQpKCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBwb3dlcl90ZW4gKTsKKworICAgIEZUX0Vycm9yCisgICAgKCp0b19ieXRlcykoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ5dGVzLAorICAgICAgICAgICAgICAgICBGVF9PZmZzZXQgIG1heF9ieXRlcywKKyAgICAgICAgICAgICAgICAgRlRfTG9uZyogICBwbnVtX2J5dGVzLAorICAgICAgICAgICAgICAgICBGVF9Cb29sICAgIGRlbGltaXRlcnMgKTsKKworICAgIEZUX0ludAorICAgICgqdG9fY29vcmRfYXJyYXkpKCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBtYXhfY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9TaG9ydCogIGNvb3JkcyApOworICAgIEZUX0ludAorICAgICgqdG9fZml4ZWRfYXJyYXkpKCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBtYXhfdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBwb3dlcl90ZW4gKTsKKworICAgIHZvaWQKKyAgICAoKnRvX3Rva2VuKSggUFNfUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgIFQxX1Rva2VuICAgdG9rZW4gKTsKKyAgICB2b2lkCisgICAgKCp0b190b2tlbl9hcnJheSkoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9Ub2tlbiAgIHRva2VucywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBtYXhfdG9rZW5zLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQqICAgIHBudW1fdG9rZW5zICk7CisKKyAgICBGVF9FcnJvcgorICAgICgqbG9hZF9maWVsZCkoIFBTX1BhcnNlciAgICAgICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgY29uc3QgVDFfRmllbGQgIGZpZWxkLAorICAgICAgICAgICAgICAgICAgIHZvaWQqKiAgICAgICAgICBvYmplY3RzLAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBtYXhfb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogICAgICAgcGZsYWdzICk7CisKKyAgICBGVF9FcnJvcgorICAgICgqbG9hZF9maWVsZF90YWJsZSkoIFBTX1BhcnNlciAgICAgICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDFfRmllbGQgIGZpZWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKiAgICAgICAgICBvYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBtYXhfb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogICAgICAgcGZsYWdzICk7CisKKyAgfSBQU19QYXJzZXJfRnVuY3NSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQU19QYXJzZXJSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIFBTX1BhcnNlciBpcyBhbiBvYmplY3QgdXNlZCB0byBwYXJzZSBhIFR5cGUgMSBmb250IHZlcnkgcXVpY2tseS4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjdXJzb3IgOjogVGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHRleHQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJhc2UgICA6OiBTdGFydCBvZiB0aGUgcHJvY2Vzc2VkIHRleHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGltaXQgIDo6IEVuZCBvZiB0aGUgcHJvY2Vzc2VkIHRleHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBlcnJvciAgOjogVGhlIGxhc3QgZXJyb3IgcmV0dXJuZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSA6OiBUaGUgb2JqZWN0IHVzZWQgZm9yIG1lbW9yeSBvcGVyYXRpb25zIChhbGxvYy9yZWFsbG9jKS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnVuY3MgIDo6IEEgdGFibGUgb2YgZnVuY3Rpb25zIGZvciB0aGUgcGFyc2VyLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgUFNfUGFyc2VyUmVjXworICB7CisgICAgRlRfQnl0ZSogICBjdXJzb3I7CisgICAgRlRfQnl0ZSogICBiYXNlOworICAgIEZUX0J5dGUqICAgbGltaXQ7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKworICAgIFBTX1BhcnNlcl9GdW5jc1JlYyAgZnVuY3M7CisKKyAgfSBQU19QYXJzZXJSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgVDEgQlVJTERFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIHR5cGVkZWYgc3RydWN0IFQxX0J1aWxkZXJSZWNfKiAgVDFfQnVpbGRlcjsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUMV9CdWlsZGVyX0NoZWNrX1BvaW50c19GdW5jKSggVDFfQnVpbGRlciAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgY291bnQgKTsKKworICB0eXBlZGVmIHZvaWQKKyAgKCpUMV9CdWlsZGVyX0FkZF9Qb2ludF9GdW5jKSggVDFfQnVpbGRlciAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSAgICAgZmxhZyApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUMV9CdWlsZGVyX0FkZF9Qb2ludDFfRnVuYykoIFQxX0J1aWxkZXIgIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgeSApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUMV9CdWlsZGVyX0FkZF9Db250b3VyX0Z1bmMpKCBUMV9CdWlsZGVyICBidWlsZGVyICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlQxX0J1aWxkZXJfU3RhcnRfUG9pbnRfRnVuYykoIFQxX0J1aWxkZXIgIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB5ICk7CisKKyAgdHlwZWRlZiB2b2lkCisgICgqVDFfQnVpbGRlcl9DbG9zZV9Db250b3VyX0Z1bmMpKCBUMV9CdWlsZGVyICBidWlsZGVyICk7CisKKworICB0eXBlZGVmIGNvbnN0IHN0cnVjdCBUMV9CdWlsZGVyX0Z1bmNzUmVjXyogIFQxX0J1aWxkZXJfRnVuY3M7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0J1aWxkZXJfRnVuY3NSZWNfCisgIHsKKyAgICB2b2lkCisgICAgKCppbml0KSggVDFfQnVpbGRlciAgICBidWlsZGVyLAorICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICBGVF9TaXplICAgICAgIHNpemUsCisgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgaGludGluZyApOworCisgICAgdm9pZAorICAgICgqZG9uZSkoIFQxX0J1aWxkZXIgICBidWlsZGVyICk7CisKKyAgICBUMV9CdWlsZGVyX0NoZWNrX1BvaW50c19GdW5jICAgY2hlY2tfcG9pbnRzOworICAgIFQxX0J1aWxkZXJfQWRkX1BvaW50X0Z1bmMgICAgICBhZGRfcG9pbnQ7CisgICAgVDFfQnVpbGRlcl9BZGRfUG9pbnQxX0Z1bmMgICAgIGFkZF9wb2ludDE7CisgICAgVDFfQnVpbGRlcl9BZGRfQ29udG91cl9GdW5jICAgIGFkZF9jb250b3VyOworICAgIFQxX0J1aWxkZXJfU3RhcnRfUG9pbnRfRnVuYyAgICBzdGFydF9wb2ludDsKKyAgICBUMV9CdWlsZGVyX0Nsb3NlX0NvbnRvdXJfRnVuYyAgY2xvc2VfY29udG91cjsKKworICB9IFQxX0J1aWxkZXJfRnVuY3NSZWM7CisKKworICAvKiBhbiBlbnVtZXJhdGlvbiB0eXBlIHRvIGhhbmRsZSBjaGFyc3RyaW5nIHBhcnNpbmcgc3RhdGVzICovCisgIHR5cGVkZWYgZW51bSAgVDFfUGFyc2VTdGF0ZV8KKyAgeworICAgIFQxX1BhcnNlX1N0YXJ0LAorICAgIFQxX1BhcnNlX0hhdmVfV2lkdGgsCisgICAgVDFfUGFyc2VfSGF2ZV9Nb3ZldG8sCisgICAgVDFfUGFyc2VfSGF2ZV9QYXRoCisKKyAgfSBUMV9QYXJzZVN0YXRlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0dXJlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVDFfQnVpbGRlclJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIEEgc3RydWN0dXJlIHVzZWQgZHVyaW5nIGdseXBoIGxvYWRpbmcgdG8gc3RvcmUgaXRzIG91dGxpbmUuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5ICAgICAgIDo6IFRoZSBjdXJyZW50IG1lbW9yeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICAgOjogVGhlIGN1cnJlbnQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoICAgICAgICA6OiBUaGUgY3VycmVudCBnbHlwaCBzbG90LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZGVyICAgICAgIDo6IFhYWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiYXNlICAgICAgICAgOjogVGhlIGJhc2UgZ2x5cGggb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGN1cnJlbnQgICAgICA6OiBUaGUgY3VycmVudCBnbHlwaCBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X3BvaW50cyAgIDo6IG1heGltdW0gcG9pbnRzIGluIGJ1aWxkZXIgb3V0bGluZSAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfY29udG91cnMgOjogTWF4aW11bSBudW1iZXIgb2YgY29udG91cnMgaW4gYnVpbGRlciBvdXRsaW5lLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBvc194ICAgICAgICA6OiBUaGUgaG9yaXpvbnRhbCB0cmFuc2xhdGlvbiAoaWYgY29tcG9zaXRlIGdseXBoKS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcG9zX3kgICAgICAgIDo6IFRoZSB2ZXJ0aWNhbCB0cmFuc2xhdGlvbiAoaWYgY29tcG9zaXRlIGdseXBoKS4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsZWZ0X2JlYXJpbmcgOjogVGhlIGxlZnQgc2lkZSBiZWFyaW5nIHBvaW50LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFkdmFuY2UgICAgICA6OiBUaGUgaG9yaXpvbnRhbCBhZHZhbmNlIHZlY3Rvci4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmJveCAgICAgICAgIDo6IFVudXNlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXJzZV9zdGF0ZSAgOjogQW4gZW51bWVyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGNoYXJzdHJpbmcgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHBhcnNpbmcgc3RhdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkX3BvaW50cyAgOjogSWYgdGhpcyBmbGFnIGlzIG5vdCBzZXQsIG5vIHBvaW50cyBhcmUgbG9hZGVkLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5vX3JlY3Vyc2UgICA6OiBTZXQgYnV0IG5vdCB1c2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWV0cmljc19vbmx5IDo6IEEgYm9vbGVhbiBpbmRpY2F0aW5nIHRoYXQgd2Ugb25seSB3YW50IHRvIGNvbXB1dGUgICovCisgIC8qICAgICAgICAgICAgICAgICAgICB0aGUgbWV0cmljcyBvZiBhIGdpdmVuIGdseXBoLCBub3QgbG9hZCBhbGwgb2YgaXRzICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgcG9pbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ1bmNzICAgICAgICA6OiBBbiBhcnJheSBvZiBmdW5jdGlvbiBwb2ludGVycyBmb3IgdGhlIGJ1aWxkZXIuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0J1aWxkZXJSZWNfCisgIHsKKyAgICBGVF9NZW1vcnkgICAgICAgbWVtb3J5OworICAgIEZUX0ZhY2UgICAgICAgICBmYWNlOworICAgIEZUX0dseXBoU2xvdCAgICBnbHlwaDsKKyAgICBGVF9HbHlwaExvYWRlciAgbG9hZGVyOworICAgIEZUX091dGxpbmUqICAgICBiYXNlOworICAgIEZUX091dGxpbmUqICAgICBjdXJyZW50OworCisgICAgRlRfUG9zICAgICAgICAgIHBvc194OworICAgIEZUX1BvcyAgICAgICAgICBwb3NfeTsKKworICAgIEZUX1ZlY3RvciAgICAgICBsZWZ0X2JlYXJpbmc7CisgICAgRlRfVmVjdG9yICAgICAgIGFkdmFuY2U7CisKKyAgICBGVF9CQm94ICAgICAgICAgYmJveDsgICAgICAgICAgLyogYm91bmRpbmcgYm94ICovCisgICAgVDFfUGFyc2VTdGF0ZSAgIHBhcnNlX3N0YXRlOworICAgIEZUX0Jvb2wgICAgICAgICBsb2FkX3BvaW50czsKKyAgICBGVF9Cb29sICAgICAgICAgbm9fcmVjdXJzZTsKKworICAgIEZUX0Jvb2wgICAgICAgICBtZXRyaWNzX29ubHk7CisKKyAgICB2b2lkKiAgICAgICAgICAgaGludHNfZnVuY3M7ICAgIC8qIGhpbnRlci1zcGVjaWZpYyAqLworICAgIHZvaWQqICAgICAgICAgICBoaW50c19nbG9iYWxzOyAgLyogaGludGVyLXNwZWNpZmljICovCisKKyAgICBUMV9CdWlsZGVyX0Z1bmNzUmVjICBmdW5jczsKKworICB9IFQxX0J1aWxkZXJSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgVDEgREVDT0RFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmIDAKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFQxX01BWF9TVUJSU19DQUxMUyBkZXRhaWxzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBuZXN0ZWQgc3ViLXJvdXRpbmUgICAqLworICAvKiBjYWxscyBkdXJpbmcgZ2x5cGggbG9hZGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFQxX01BWF9TVUJSU19DQUxMUyAgOAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUMV9NQVhfQ0hBUlNUUklOR19PUEVSQU5EUyBpcyB0aGUgY2hhcnN0cmluZyBzdGFjaydzIGNhcGFjaXR5LiAgQSAgICAgKi8KKyAgLyogbWluaW11bSBvZiAxNiBpcyByZXF1aXJlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUMV9NQVhfQ0hBUlNUUklOR1NfT1BFUkFORFMgIDMyCisKKyNlbmRpZiAvKiAwICovCisKKworICB0eXBlZGVmIHN0cnVjdCAgVDFfRGVjb2Rlcl9ab25lUmVjXworICB7CisgICAgRlRfQnl0ZSogIGN1cnNvcjsKKyAgICBGVF9CeXRlKiAgYmFzZTsKKyAgICBGVF9CeXRlKiAgbGltaXQ7CisKKyAgfSBUMV9EZWNvZGVyX1pvbmVSZWMsICpUMV9EZWNvZGVyX1pvbmU7CisKKworICB0eXBlZGVmIHN0cnVjdCBUMV9EZWNvZGVyUmVjXyogICAgICAgICAgICAgIFQxX0RlY29kZXI7CisgIHR5cGVkZWYgY29uc3Qgc3RydWN0IFQxX0RlY29kZXJfRnVuY3NSZWNfKiAgVDFfRGVjb2Rlcl9GdW5jczsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUMV9EZWNvZGVyX0NhbGxiYWNrKSggVDFfRGVjb2RlciAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2x5cGhfaW5kZXggKTsKKworCisgIHR5cGVkZWYgc3RydWN0ICBUMV9EZWNvZGVyX0Z1bmNzUmVjXworICB7CisgICAgRlRfRXJyb3IKKyAgICAoKmluaXQpKCBUMV9EZWNvZGVyICAgICAgICAgICBkZWNvZGVyLAorICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgRlRfU2l6ZSAgICAgICAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgICAgICBzbG90LAorICAgICAgICAgICAgIEZUX0J5dGUqKiAgICAgICAgICAgIGdseXBoX25hbWVzLAorICAgICAgICAgICAgIFBTX0JsZW5kICAgICAgICAgICAgIGJsZW5kLAorICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICAgICAgIGhpbnRpbmcsCisgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgICAgICAgaGludF9tb2RlLAorICAgICAgICAgICAgIFQxX0RlY29kZXJfQ2FsbGJhY2sgIGNhbGxiYWNrICk7CisKKyAgICB2b2lkCisgICAgKCpkb25lKSggVDFfRGVjb2RlciAgZGVjb2RlciApOworCisgICAgRlRfRXJyb3IKKyAgICAoKnBhcnNlX2NoYXJzdHJpbmdzKSggVDFfRGVjb2RlciAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgbGVuICk7CisKKyAgfSBUMV9EZWNvZGVyX0Z1bmNzUmVjOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0RlY29kZXJSZWNfCisgIHsKKyAgICBUMV9CdWlsZGVyUmVjICAgICAgICBidWlsZGVyOworCisgICAgRlRfTG9uZyAgICAgICAgICAgICAgc3RhY2tbVDFfTUFYX0NIQVJTVFJJTkdTX09QRVJBTkRTXTsKKyAgICBGVF9Mb25nKiAgICAgICAgICAgICB0b3A7CisKKyAgICBUMV9EZWNvZGVyX1pvbmVSZWMgICB6b25lc1tUMV9NQVhfU1VCUlNfQ0FMTFMgKyAxXTsKKyAgICBUMV9EZWNvZGVyX1pvbmUgICAgICB6b25lOworCisgICAgRlRfU2VydmljZV9Qc0NNYXBzICAgcHNuYW1lczsgICAgICAvKiBmb3Igc2VhYyAqLworICAgIEZUX1VJbnQgICAgICAgICAgICAgIG51bV9nbHlwaHM7CisgICAgRlRfQnl0ZSoqICAgICAgICAgICAgZ2x5cGhfbmFtZXM7CisKKyAgICBGVF9JbnQgICAgICAgICAgICAgICBsZW5JVjsgICAgICAgIC8qIGludGVybmFsIGZvciBzdWIgcm91dGluZSBjYWxscyAqLworICAgIEZUX1VJbnQgICAgICAgICAgICAgIG51bV9zdWJyczsKKyAgICBGVF9CeXRlKiogICAgICAgICAgICBzdWJyczsKKyAgICBGVF9QdHJEaXN0KiAgICAgICAgICBzdWJyc19sZW47ICAgIC8qIGFycmF5IG9mIHN1YnJzIGxlbmd0aCAob3B0aW9uYWwpICovCisKKyAgICBGVF9NYXRyaXggICAgICAgICAgICBmb250X21hdHJpeDsKKyAgICBGVF9WZWN0b3IgICAgICAgICAgICBmb250X29mZnNldDsKKworICAgIEZUX0ludCAgICAgICAgICAgICAgIGZsZXhfc3RhdGU7CisgICAgRlRfSW50ICAgICAgICAgICAgICAgbnVtX2ZsZXhfdmVjdG9yczsKKyAgICBGVF9WZWN0b3IgICAgICAgICAgICBmbGV4X3ZlY3RvcnNbN107CisKKyAgICBQU19CbGVuZCAgICAgICAgICAgICBibGVuZDsgICAgICAgLyogZm9yIG11bHRpcGxlIG1hc3RlciBzdXBwb3J0ICovCisKKyAgICBGVF9SZW5kZXJfTW9kZSAgICAgICBoaW50X21vZGU7CisKKyAgICBUMV9EZWNvZGVyX0NhbGxiYWNrICBwYXJzZV9jYWxsYmFjazsKKyAgICBUMV9EZWNvZGVyX0Z1bmNzUmVjICBmdW5jczsKKworICAgIEZUX0xvbmcqICAgICAgICAgICAgIGJ1aWxkY2hhcjsKKyAgICBGVF9VSW50ICAgICAgICAgICAgICBsZW5fYnVpbGRjaGFyOworCisgICAgRlRfQm9vbCAgICAgICAgICAgICAgc2VhYzsKKworICB9IFQxX0RlY29kZXJSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgQUZNIFBBUlNFUiAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICB0eXBlZGVmIHN0cnVjdCBBRk1fUGFyc2VyUmVjXyogIEFGTV9QYXJzZXI7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEFGTV9QYXJzZXJfRnVuY3NSZWNfCisgIHsKKyAgICBGVF9FcnJvcgorICAgICgqaW5pdCkoIEFGTV9QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICBGVF9NZW1vcnkgICBtZW1vcnksCisgICAgICAgICAgICAgRlRfQnl0ZSogICAgYmFzZSwKKyAgICAgICAgICAgICBGVF9CeXRlKiAgICBsaW1pdCApOworCisgICAgdm9pZAorICAgICgqZG9uZSkoIEFGTV9QYXJzZXIgIHBhcnNlciApOworCisgICAgRlRfRXJyb3IKKyAgICAoKnBhcnNlKSggQUZNX1BhcnNlciAgcGFyc2VyICk7CisKKyAgfSBBRk1fUGFyc2VyX0Z1bmNzUmVjOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgQUZNX1N0cmVhbVJlY18qICBBRk1fU3RyZWFtOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQUZNX1BhcnNlclJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gQUZNX1BhcnNlciBpcyBhIHBhcnNlciBmb3IgdGhlIEFGTSBmaWxlcy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5ICAgIDo6IFRoZSBvYmplY3QgdXNlZCBmb3IgbWVtb3J5IG9wZXJhdGlvbnMgKGFsbG9jIGFuZCAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICByZWFsbG9jKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgIDo6IFRoaXMgaXMgYW4gb3BhcXVlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGb250SW5mbyAgOjogVGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCBoZXJlLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdldF9pbmRleCA6OiBBIHVzZXIgcHJvdmlkZWQgZnVuY3Rpb24gdG8gZ2V0IGEgZ2x5cGggaW5kZXggYnkgaXRzICAqLworICAvKiAgICAgICAgICAgICAgICAgbmFtZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBBRk1fUGFyc2VyUmVjXworICB7CisgICAgRlRfTWVtb3J5ICAgICBtZW1vcnk7CisgICAgQUZNX1N0cmVhbSAgICBzdHJlYW07CisKKyAgICBBRk1fRm9udEluZm8gIEZvbnRJbmZvOworCisgICAgRlRfSW50CisgICAgKCpnZXRfaW5kZXgpKCBjb25zdCBjaGFyKiAgbmFtZSwKKyAgICAgICAgICAgICAgICAgIEZUX09mZnNldCAgICBsZW4sCisgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgdXNlcl9kYXRhICk7CisKKyAgICB2b2lkKiAgICAgICAgIHVzZXJfZGF0YTsKKworICB9IEFGTV9QYXJzZXJSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICBUWVBFMSBDSEFSTUFQUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICB0eXBlZGVmIGNvbnN0IHN0cnVjdCBUMV9DTWFwX0NsYXNzZXNSZWNfKiAgVDFfQ01hcF9DbGFzc2VzOworCisgIHR5cGVkZWYgc3RydWN0IFQxX0NNYXBfQ2xhc3Nlc1JlY18KKyAgeworICAgIEZUX0NNYXBfQ2xhc3MgIHN0YW5kYXJkOworICAgIEZUX0NNYXBfQ2xhc3MgIGV4cGVydDsKKyAgICBGVF9DTWFwX0NsYXNzICBjdXN0b207CisgICAgRlRfQ01hcF9DbGFzcyAgdW5pY29kZTsKKworICB9IFQxX0NNYXBfQ2xhc3Nlc1JlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgIFBTQXV4IE1vZHVsZSBJbnRlcmZhY2UgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHR5cGVkZWYgc3RydWN0ICBQU0F1eF9TZXJ2aWNlUmVjXworICB7CisgICAgLyogZG9uJ3QgdXNlIGBQU19UYWJsZV9GdW5jcycgYW5kIGZyaWVuZHMgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MgKi8KKyAgICBjb25zdCBQU19UYWJsZV9GdW5jc1JlYyogICAgcHNfdGFibGVfZnVuY3M7CisgICAgY29uc3QgUFNfUGFyc2VyX0Z1bmNzUmVjKiAgIHBzX3BhcnNlcl9mdW5jczsKKyAgICBjb25zdCBUMV9CdWlsZGVyX0Z1bmNzUmVjKiAgdDFfYnVpbGRlcl9mdW5jczsKKyAgICBjb25zdCBUMV9EZWNvZGVyX0Z1bmNzUmVjKiAgdDFfZGVjb2Rlcl9mdW5jczsKKworICAgIHZvaWQKKyAgICAoKnQxX2RlY3J5cHQpKCBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICBGVF9PZmZzZXQgIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICBGVF9VU2hvcnQgIHNlZWQgKTsKKworICAgIFQxX0NNYXBfQ2xhc3NlcyAgdDFfY21hcF9jbGFzc2VzOworCisgICAgLyogZmllbGRzIGFmdGVyIHRoaXMgY29tbWVudCBsaW5lIHdlcmUgYWRkZWQgYWZ0ZXIgdmVyc2lvbiAyLjEuMTAgKi8KKyAgICBjb25zdCBBRk1fUGFyc2VyX0Z1bmNzUmVjKiAgYWZtX3BhcnNlcl9mdW5jczsKKworICB9IFBTQXV4X1NlcnZpY2VSZWMsICpQU0F1eF9TZXJ2aWNlOworCisgIC8qIGJhY2t3YXJkcy1jb21wYXRpYmxlIHR5cGUgZGVmaW5pdGlvbiAqLworICB0eXBlZGVmIFBTQXV4X1NlcnZpY2VSZWMgICBQU0F1eF9JbnRlcmZhY2U7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgIFNvbWUgY29udmVuaWVuY2UgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBJU19QU19ORVdMSU5FKCBjaCApIFwKKyAgKCAoY2gpID09ICdccicgfHwgICAgICAgICBcCisgICAgKGNoKSA9PSAnXG4nICkKKworI2RlZmluZSBJU19QU19TUEFDRSggY2ggKSAgXAorICAoIChjaCkgPT0gJyAnICAgICAgICAgfHwgXAorICAgIElTX1BTX05FV0xJTkUoIGNoICkgfHwgXAorICAgIChjaCkgPT0gJ1x0JyAgICAgICAgfHwgXAorICAgIChjaCkgPT0gJ1xmJyAgICAgICAgfHwgXAorICAgIChjaCkgPT0gJ1wwJyApCisKKyNkZWZpbmUgSVNfUFNfU1BFQ0lBTCggY2ggKSAgICAgICBcCisgICggKGNoKSA9PSAnLycgICAgICAgICAgICAgICAgfHwgXAorICAgIChjaCkgPT0gJygnIHx8IChjaCkgPT0gJyknIHx8IFwKKyAgICAoY2gpID09ICc8JyB8fCAoY2gpID09ICc+JyB8fCBcCisgICAgKGNoKSA9PSAnWycgfHwgKGNoKSA9PSAnXScgfHwgXAorICAgIChjaCkgPT0gJ3snIHx8IChjaCkgPT0gJ30nIHx8IFwKKyAgICAoY2gpID09ICclJyAgICAgICAgICAgICAgICApCisKKyNkZWZpbmUgSVNfUFNfREVMSU0oIGNoICkgIFwKKyAgKCBJU19QU19TUEFDRSggY2ggKSAgIHx8IFwKKyAgICBJU19QU19TUEVDSUFMKCBjaCApICkKKworI2RlZmluZSBJU19QU19ESUdJVCggY2ggKSAgICAgICAgXAorICAoIChjaCkgPj0gJzAnICYmIChjaCkgPD0gJzknICkKKworI2RlZmluZSBJU19QU19YRElHSVQoIGNoICkgICAgICAgICAgICBcCisgICggSVNfUFNfRElHSVQoIGNoICkgICAgICAgICAgICAgIHx8IFwKKyAgICAoIChjaCkgPj0gJ0EnICYmIChjaCkgPD0gJ0YnICkgfHwgXAorICAgICggKGNoKSA+PSAnYScgJiYgKGNoKSA8PSAnZicgKSApCisKKyNkZWZpbmUgSVNfUFNfQkFTRTg1KCBjaCApICAgICAgIFwKKyAgKCAoY2gpID49ICchJyAmJiAoY2gpIDw9ICd1JyApCisKKyNkZWZpbmUgSVNfUFNfVE9LRU4oIGN1ciwgbGltaXQsIHRva2VuICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKCAoY2hhcikoY3VyKVswXSA9PSAodG9rZW4pWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFwKKyAgICAoIChjdXIpICsgc2l6ZW9mICggKHRva2VuKSApID09IChsaW1pdCkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICggKGN1cikgKyBzaXplb2YoICh0b2tlbikgKSA8IChsaW1pdCkgICAgICAgICAgJiYgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSVNfUFNfREVMSU0oIChjdXIpW3NpemVvZiAoICh0b2tlbikgKSAtIDFdICkgKSApICAgICAgICAgICAgICYmIFwKKyAgICBmdF9zdHJuY21wKCAoY2hhciopKGN1ciksICh0b2tlbiksIHNpemVvZiAoICh0b2tlbikgKSAtIDEgKSA9PSAwICkKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1BTQVVYX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YjU5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgKQEAgLTAsMCArMSw3MjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHBzaGludHMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBJbnRlcmZhY2UgdG8gUG9zdHNjcmlwdC1zcGVjaWZpYyAoVHlwZSAxIGFuZCBUeXBlIDIpIGhpbnRzICAgICAgICAgICAqLworLyogICAgcmVjb3JkZXJzIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgVGhlc2UgYXJlIHVzZWQgdG8gc3VwcG9ydCBuYXRpdmUgICAgKi8KKy8qICAgIFQxL1QyIGhpbnRzIGluIHRoZSBgdHlwZTEnLCBgY2lkJywgYW5kIGBjZmYnIGZvbnQgZHJpdmVycy4gICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAxLTIwMDMsIDIwMDUtMjAwNywgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fUFNISU5UU19IX18KKyNkZWZpbmUgX19QU0hJTlRTX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uL2ZyZWV0eXBlLmgiCisjaW5jbHVkZSAiLi4vdDF0YWJsZXMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgIElOVEVSTkFMIFJFUFJFU0VOVEFUSU9OIE9GIEdMT0JBTFMgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHR5cGVkZWYgc3RydWN0IFBTSF9HbG9iYWxzUmVjXyogIFBTSF9HbG9iYWxzOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpQU0hfR2xvYmFsc19OZXdGdW5jKSggRlRfTWVtb3J5ICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFQxX1ByaXZhdGUqICAgcHJpdmF0ZV9kaWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBQU0hfR2xvYmFscyogIGFnbG9iYWxzICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlBTSF9HbG9iYWxzX1NldFNjYWxlRnVuYykoIFBTSF9HbG9iYWxzICBnbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgICB4X3NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgICB5X3NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgICB4X2RlbHRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgICB5X2RlbHRhICk7CisKKyAgdHlwZWRlZiB2b2lkCisgICgqUFNIX0dsb2JhbHNfRGVzdHJveUZ1bmMpKCBQU0hfR2xvYmFscyAgZ2xvYmFscyApOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTSF9HbG9iYWxzX0Z1bmNzUmVjXworICB7CisgICAgUFNIX0dsb2JhbHNfTmV3RnVuYyAgICAgICBjcmVhdGU7CisgICAgUFNIX0dsb2JhbHNfU2V0U2NhbGVGdW5jICBzZXRfc2NhbGU7CisgICAgUFNIX0dsb2JhbHNfRGVzdHJveUZ1bmMgICBkZXN0cm95OworCisgIH0gUFNIX0dsb2JhbHNfRnVuY3NSZWMsICpQU0hfR2xvYmFsc19GdW5jczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgIFBVQkxJQyBUWVBFIDEgSElOVFMgUkVDT1JERVIgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEB0eXBlOgorICAgKiAgIFQxX0hpbnRzCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBUaGlzIGlzIGEgaGFuZGxlIHRvIGFuIG9wYXF1ZSBzdHJ1Y3R1cmUgdXNlZCB0byByZWNvcmQgZ2x5cGggaGludHMKKyAgICogICBmcm9tIGEgVHlwZSAxIGNoYXJhY3RlciBnbHlwaCBjaGFyYWN0ZXIgc3RyaW5nLgorICAgKgorICAgKiAgIFRoZSBtZXRob2RzIHVzZWQgdG8gb3BlcmF0ZSBvbiB0aGlzIG9iamVjdCBhcmUgZGVmaW5lZCBieSB0aGUKKyAgICogICBAVDFfSGludHNfRnVuY3NSZWMgc3RydWN0dXJlLiAgUmVjb3JkaW5nIGdseXBoIGhpbnRzIGlzIG5vcm1hbGx5CisgICAqICAgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgZm9sbG93aW5nIHNjaGVtZToKKyAgICoKKyAgICogICAtIE9wZW4gYSBuZXcgaGludCByZWNvcmRpbmcgc2Vzc2lvbiBieSBjYWxsaW5nIHRoZSBgb3BlbicgbWV0aG9kLgorICAgKiAgICAgVGhpcyByZXdpbmRzIHRoZSByZWNvcmRlciBhbmQgcHJlcGFyZSBpdCBmb3IgbmV3IGlucHV0LgorICAgKgorICAgKiAgIC0gRm9yIGVhY2ggaGludCBmb3VuZCBpbiB0aGUgZ2x5cGggY2hhcnN0cmluZywgY2FsbCB0aGUgY29ycmVzcG9uZGluZworICAgKiAgICAgbWV0aG9kIChgc3RlbScsIGBzdGVtMycsIG9yIGByZXNldCcpLiAgTm90ZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBkbworICAgKiAgICAgbm90IHJldHVybiBhbiBlcnJvciBjb2RlLgorICAgKgorICAgKiAgIC0gQ2xvc2UgdGhlIHJlY29yZGluZyBzZXNzaW9uIGJ5IGNhbGxpbmcgdGhlIGBjbG9zZScgbWV0aG9kLiAgSXQKKyAgICogICAgIHJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGUgaGludHMgd2VyZSBpbnZhbGlkIG9yIHNvbWV0aGluZworICAgKiAgICAgc3RyYW5nZSBoYXBwZW5lZCAoZS5nLiwgbWVtb3J5IHNob3J0YWdlKS4KKyAgICoKKyAgICogICBUaGUgaGludHMgYWNjdW11bGF0ZWQgaW4gdGhlIG9iamVjdCBjYW4gbGF0ZXIgYmUgdXNlZCBieSB0aGUKKyAgICogICBQb3N0U2NyaXB0IGhpbnRlci4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0IFQxX0hpbnRzUmVjXyogIFQxX0hpbnRzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHR5cGU6CisgICAqICAgVDFfSGludHNfRnVuY3MKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgcG9pbnRlciB0byB0aGUgQFQxX0hpbnRzX0Z1bmNzUmVjIHN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIEFQSSBvZgorICAgKiAgIGEgZ2l2ZW4gQFQxX0hpbnRzIG9iamVjdC4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgY29uc3Qgc3RydWN0IFQxX0hpbnRzX0Z1bmNzUmVjXyogIFQxX0hpbnRzX0Z1bmNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIFQxX0hpbnRzX09wZW5GdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQxX0hpbnRzIGNsYXNzIHVzZWQgdG8gcHJlcGFyZSBpdCBmb3IgYSBuZXcgVHlwZSAxCisgICAqICAgaGludHMgcmVjb3JkaW5nIHNlc3Npb24uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFR5cGUgMSBoaW50cyByZWNvcmRlci4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgWW91IHNob3VsZCBhbHdheXMgY2FsbCB0aGUgQFQxX0hpbnRzX0Nsb3NlRnVuYyBtZXRob2QgaW4gb3JkZXIgdG8KKyAgICogICBjbG9zZSBhbiBvcGVuZWQgcmVjb3JkaW5nIHNlc3Npb24uCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpUMV9IaW50c19PcGVuRnVuYykoIFQxX0hpbnRzICBoaW50cyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIFQxX0hpbnRzX1NldFN0ZW1GdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQxX0hpbnRzIGNsYXNzIHVzZWQgdG8gcmVjb3JkIGEgbmV3IGhvcml6b250YWwgb3IKKyAgICogICB2ZXJ0aWNhbCBzdGVtLiAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgVHlwZSAxIGBoc3RlbScgYW5kIGB2c3RlbScKKyAgICogICBvcGVyYXRvcnMuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFR5cGUgMSBoaW50cyByZWNvcmRlci4KKyAgICoKKyAgICogICBkaW1lbnNpb24gOjoKKyAgICogICAgIDAgZm9yIGhvcml6b250YWwgc3RlbXMgKGhzdGVtKSwgMSBmb3IgdmVydGljYWwgb25lcyAodnN0ZW0pLgorICAgKgorICAgKiAgIGNvb3JkcyA6OgorICAgKiAgICAgQXJyYXkgb2YgMiBjb29yZGluYXRlcyBpbiAxNi4xNiBmb3JtYXQsIHVzZWQgYXMgKHBvc2l0aW9uLGxlbmd0aCkKKyAgICogICAgIHN0ZW0gZGVzY3JpcHRvci4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVXNlIHZlcnRpY2FsIGNvb3JkaW5hdGVzICh5KSBmb3IgaG9yaXpvbnRhbCBzdGVtcyAoZGltPTApLiAgVXNlCisgICAqICAgaG9yaXpvbnRhbCBjb29yZGluYXRlcyAoeCkgZm9yIHZlcnRpY2FsIHN0ZW1zIChkaW09MSkuCisgICAqCisgICAqICAgYGNvb3Jkc1swXScgaXMgdGhlIGFic29sdXRlIHN0ZW0gcG9zaXRpb24gKGxvd2VzdCBjb29yZGluYXRlKTsKKyAgICogICBgY29vcmRzWzFdJyBpcyB0aGUgbGVuZ3RoLgorICAgKgorICAgKiAgIFRoZSBsZW5ndGggY2FuIGJlIG5lZ2F0aXZlLCBpbiB3aGljaCBjYXNlIGl0IG11c3QgYmUgZWl0aGVyIC0yMCBvcgorICAgKiAgIC0yMS4gIEl0IGlzIGludGVycHJldGVkIGFzIGEgYGdob3N0JyBzdGVtLCBhY2NvcmRpbmcgdG8gdGhlIFR5cGUgMQorICAgKiAgIHNwZWNpZmljYXRpb24uCisgICAqCisgICAqICAgSWYgdGhlIGxlbmd0aCBpcyAtMjEgKGNvcnJlc3BvbmRpbmcgdG8gYSBib3R0b20gZ2hvc3Qgc3RlbSksIHRoZW4KKyAgICogICB0aGUgcmVhbCBzdGVtIHBvc2l0aW9uIGlzIGBjb29yZHNbMF0rY29vcmRzWzFdJy4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKlQxX0hpbnRzX1NldFN0ZW1GdW5jKSggVDFfSGludHMgICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZGltZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZHMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBUMV9IaW50c19TZXRTdGVtM0Z1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWV0aG9kIG9mIHRoZSBAVDFfSGludHMgY2xhc3MgdXNlZCB0byByZWNvcmQgdGhyZWUKKyAgICogICBjb3VudGVyLWNvbnRyb2xsZWQgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBzdGVtcyBhdCBvbmNlLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaGludHMgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBUeXBlIDEgaGludHMgcmVjb3JkZXIuCisgICAqCisgICAqICAgZGltZW5zaW9uIDo6CisgICAqICAgICAwIGZvciBob3Jpem9udGFsIHN0ZW1zLCAxIGZvciB2ZXJ0aWNhbCBvbmVzLgorICAgKgorICAgKiAgIGNvb3JkcyA6OgorICAgKiAgICAgQW4gYXJyYXkgb2YgNiB2YWx1ZXMgaW4gMTYuMTYgZm9ybWF0LCBob2xkaW5nIDMgKHBvc2l0aW9uLGxlbmd0aCkKKyAgICogICAgIHBhaXJzIGZvciB0aGUgY291bnRlci1jb250cm9sbGVkIHN0ZW1zLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBVc2UgdmVydGljYWwgY29vcmRpbmF0ZXMgKHkpIGZvciBob3Jpem9udGFsIHN0ZW1zIChkaW09MCkuICBVc2UKKyAgICogICBob3Jpem9udGFsIGNvb3JkaW5hdGVzICh4KSBmb3IgdmVydGljYWwgc3RlbXMgKGRpbT0xKS4KKyAgICoKKyAgICogICBUaGUgbGVuZ3RocyBjYW5ub3QgYmUgbmVnYXRpdmUgKGdob3N0IHN0ZW1zIGFyZSBuZXZlcgorICAgKiAgIGNvdW50ZXItY29udHJvbGxlZCkuCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpUMV9IaW50c19TZXRTdGVtM0Z1bmMpKCBUMV9IaW50cyAgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZGltZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDFfSGludHNfUmVzZXRGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQxX0hpbnRzIGNsYXNzIHVzZWQgdG8gcmVzZXQgdGhlIHN0ZW1zIGhpbnRzIGluIGEKKyAgICogICByZWNvcmRpbmcgc2Vzc2lvbi4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVHlwZSAxIGhpbnRzIHJlY29yZGVyLgorICAgKgorICAgKiAgIGVuZF9wb2ludCA6OgorICAgKiAgICAgVGhlIGluZGV4IG9mIHRoZSBsYXN0IHBvaW50IGluIHRoZSBpbnB1dCBnbHlwaCBpbiB3aGljaCB0aGUKKyAgICogICAgIHByZXZpb3VzbHkgZGVmaW5lZCBoaW50cyBhcHBseS4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKlQxX0hpbnRzX1Jlc2V0RnVuYykoIFQxX0hpbnRzICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgZW5kX3BvaW50ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDFfSGludHNfQ2xvc2VGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQxX0hpbnRzIGNsYXNzIHVzZWQgdG8gY2xvc2UgYSBoaW50IHJlY29yZGluZworICAgKiAgIHNlc3Npb24uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFR5cGUgMSBoaW50cyByZWNvcmRlci4KKyAgICoKKyAgICogICBlbmRfcG9pbnQgOjoKKyAgICogICAgIFRoZSBpbmRleCBvZiB0aGUgbGFzdCBwb2ludCBpbiB0aGUgaW5wdXQgZ2x5cGguCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVGhlIGVycm9yIGNvZGUgaXMgc2V0IHRvIGluZGljYXRlIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZQorICAgKiAgIHJlY29yZGluZyBzZXNzaW9uLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlQxX0hpbnRzX0Nsb3NlRnVuYykoIFQxX0hpbnRzICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgZW5kX3BvaW50ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDFfSGludHNfQXBwbHlGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQxX0hpbnRzIGNsYXNzIHVzZWQgdG8gYXBwbHkgaGludHMgdG8gdGhlCisgICAqICAgY29ycmVzcG9uZGluZyBnbHlwaCBvdXRsaW5lLiAgTXVzdCBiZSBjYWxsZWQgb25jZSBhbGwgaGludHMgaGF2ZSBiZWVuCisgICAqICAgcmVjb3JkZWQuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFR5cGUgMSBoaW50cyByZWNvcmRlci4KKyAgICoKKyAgICogICBvdXRsaW5lIDo6CisgICAqICAgICBBIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBvdXRsaW5lIGRlc2NyaXB0b3IuCisgICAqCisgICAqICAgZ2xvYmFscyA6OgorICAgKiAgICAgVGhlIGhpbnRlciBnbG9iYWxzIGZvciB0aGlzIGZvbnQuCisgICAqCisgICAqICAgaGludF9tb2RlIDo6CisgICAqICAgICBIaW50aW5nIGluZm9ybWF0aW9uLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIE9uIGlucHV0LCBhbGwgcG9pbnRzIHdpdGhpbiB0aGUgb3V0bGluZSBhcmUgaW4gZm9udCBjb29yZGluYXRlcy4gT24KKyAgICogICBvdXRwdXQsIHRoZXkgYXJlIGluIDEvNjR0aCBvZiBwaXhlbHMuCisgICAqCisgICAqICAgVGhlIHNjYWxpbmcgdHJhbnNmb3JtYXRpb24gaXMgdGFrZW4gZnJvbSB0aGUgYGdsb2JhbHMnIG9iamVjdCB3aGljaAorICAgKiAgIG11c3QgY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb250IGFzIHRoZSBnbHlwaC4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUMV9IaW50c19BcHBseUZ1bmMpKCBUMV9IaW50cyAgICAgICAgaGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSogICAgIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFNIX0dsb2JhbHMgICAgIGdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgIGhpbnRfbW9kZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHN0cnVjdDoKKyAgICogICBUMV9IaW50c19GdW5jc1JlYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIHN0cnVjdHVyZSB1c2VkIHRvIHByb3ZpZGUgdGhlIEFQSSB0byBAVDFfSGludHMgb2JqZWN0cy4KKyAgICoKKyAgICogQGZpZWxkczoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFQxIEhpbnRzIHJlY29yZGVyLgorICAgKgorICAgKiAgIG9wZW4gOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBvcGVuIGEgcmVjb3JkaW5nIHNlc3Npb24uCisgICAqCisgICAqICAgY2xvc2UgOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBjbG9zZSBhIHJlY29yZGluZyBzZXNzaW9uLgorICAgKgorICAgKiAgIHN0ZW0gOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBzZXQgYSBzaW1wbGUgc3RlbS4KKyAgICoKKyAgICogICBzdGVtMyA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIHNldCBjb3VudGVyLWNvbnRyb2xsZWQgc3RlbXMuCisgICAqCisgICAqICAgcmVzZXQgOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byByZXNldCBzdGVtIGhpbnRzLgorICAgKgorICAgKiAgIGFwcGx5IDo6CisgICAqICAgICBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdGhlIGhpbnRzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGdseXBoIG91dGxpbmUuCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVDFfSGludHNfRnVuY3NSZWNfCisgIHsKKyAgICBUMV9IaW50cyAgICAgICAgICAgICAgIGhpbnRzOworICAgIFQxX0hpbnRzX09wZW5GdW5jICAgICAgb3BlbjsKKyAgICBUMV9IaW50c19DbG9zZUZ1bmMgICAgIGNsb3NlOworICAgIFQxX0hpbnRzX1NldFN0ZW1GdW5jICAgc3RlbTsKKyAgICBUMV9IaW50c19TZXRTdGVtM0Z1bmMgIHN0ZW0zOworICAgIFQxX0hpbnRzX1Jlc2V0RnVuYyAgICAgcmVzZXQ7CisgICAgVDFfSGludHNfQXBwbHlGdW5jICAgICBhcHBseTsKKworICB9IFQxX0hpbnRzX0Z1bmNzUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgUFVCTElDIFRZUEUgMiBISU5UUyBSRUNPUkRFUiAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHR5cGU6CisgICAqICAgVDJfSGludHMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIFRoaXMgaXMgYSBoYW5kbGUgdG8gYW4gb3BhcXVlIHN0cnVjdHVyZSB1c2VkIHRvIHJlY29yZCBnbHlwaCBoaW50cworICAgKiAgIGZyb20gYSBUeXBlIDIgY2hhcmFjdGVyIGdseXBoIGNoYXJhY3RlciBzdHJpbmcuCisgICAqCisgICAqICAgVGhlIG1ldGhvZHMgdXNlZCB0byBvcGVyYXRlIG9uIHRoaXMgb2JqZWN0IGFyZSBkZWZpbmVkIGJ5IHRoZQorICAgKiAgIEBUMl9IaW50c19GdW5jc1JlYyBzdHJ1Y3R1cmUuICBSZWNvcmRpbmcgZ2x5cGggaGludHMgaXMgbm9ybWFsbHkKKyAgICogICBhY2hpZXZlZCB0aHJvdWdoIHRoZSBmb2xsb3dpbmcgc2NoZW1lOgorICAgKgorICAgKiAgIC0gT3BlbiBhIG5ldyBoaW50IHJlY29yZGluZyBzZXNzaW9uIGJ5IGNhbGxpbmcgdGhlIGBvcGVuJyBtZXRob2QuCisgICAqICAgICBUaGlzIHJld2luZHMgdGhlIHJlY29yZGVyIGFuZCBwcmVwYXJlIGl0IGZvciBuZXcgaW5wdXQuCisgICAqCisgICAqICAgLSBGb3IgZWFjaCBoaW50IGZvdW5kIGluIHRoZSBnbHlwaCBjaGFyc3RyaW5nLCBjYWxsIHRoZSBjb3JyZXNwb25kaW5nCisgICAqICAgICBtZXRob2QgKGBzdGVtcycsIGBoaW50bWFzaycsIGBjb3VudGVycycpLiAgTm90ZSB0aGF0IHRoZXNlCisgICAqICAgICBmdW5jdGlvbnMgZG8gbm90IHJldHVybiBhbiBlcnJvciBjb2RlLgorICAgKgorICAgKiAgIC0gQ2xvc2UgdGhlIHJlY29yZGluZyBzZXNzaW9uIGJ5IGNhbGxpbmcgdGhlIGBjbG9zZScgbWV0aG9kLiAgSXQKKyAgICogICAgIHJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGUgaGludHMgd2VyZSBpbnZhbGlkIG9yIHNvbWV0aGluZworICAgKiAgICAgc3RyYW5nZSBoYXBwZW5lZCAoZS5nLiwgbWVtb3J5IHNob3J0YWdlKS4KKyAgICoKKyAgICogICBUaGUgaGludHMgYWNjdW11bGF0ZWQgaW4gdGhlIG9iamVjdCBjYW4gbGF0ZXIgYmUgdXNlZCBieSB0aGUKKyAgICogICBQb3N0c2NyaXB0IGhpbnRlci4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0IFQyX0hpbnRzUmVjXyogIFQyX0hpbnRzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHR5cGU6CisgICAqICAgVDJfSGludHNfRnVuY3MKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgcG9pbnRlciB0byB0aGUgQFQyX0hpbnRzX0Z1bmNzUmVjIHN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIEFQSSBvZgorICAgKiAgIGEgZ2l2ZW4gQFQyX0hpbnRzIG9iamVjdC4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgY29uc3Qgc3RydWN0IFQyX0hpbnRzX0Z1bmNzUmVjXyogIFQyX0hpbnRzX0Z1bmNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIFQyX0hpbnRzX09wZW5GdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIG1ldGhvZCBvZiB0aGUgQFQyX0hpbnRzIGNsYXNzIHVzZWQgdG8gcHJlcGFyZSBpdCBmb3IgYSBuZXcgVHlwZSAyCisgICAqICAgaGludHMgcmVjb3JkaW5nIHNlc3Npb24uCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFR5cGUgMiBoaW50cyByZWNvcmRlci4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgWW91IHNob3VsZCBhbHdheXMgY2FsbCB0aGUgQFQyX0hpbnRzX0Nsb3NlRnVuYyBtZXRob2QgaW4gb3JkZXIgdG8KKyAgICogICBjbG9zZSBhbiBvcGVuZWQgcmVjb3JkaW5nIHNlc3Npb24uCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpUMl9IaW50c19PcGVuRnVuYykoIFQyX0hpbnRzICBoaW50cyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIFQyX0hpbnRzX1N0ZW1zRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtZXRob2Qgb2YgdGhlIEBUMl9IaW50cyBjbGFzcyB1c2VkIHRvIHNldCB0aGUgdGFibGUgb2Ygc3RlbXMgaW4KKyAgICogICBlaXRoZXIgdGhlIHZlcnRpY2FsIG9yIGhvcml6b250YWwgZGltZW5zaW9uLiAgRXF1aXZhbGVudCB0byB0aGUKKyAgICogICBgaHN0ZW0nLCBgdnN0ZW0nLCBgaHN0ZW1obScsIGFuZCBgdnN0ZW1obScgVHlwZSAyIG9wZXJhdG9ycy4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVHlwZSAyIGhpbnRzIHJlY29yZGVyLgorICAgKgorICAgKiAgIGRpbWVuc2lvbiA6OgorICAgKiAgICAgMCBmb3IgaG9yaXpvbnRhbCBzdGVtcyAoaHN0ZW0pLCAxIGZvciB2ZXJ0aWNhbCBvbmVzICh2c3RlbSkuCisgICAqCisgICAqICAgY291bnQgOjoKKyAgICogICAgIFRoZSBudW1iZXIgb2Ygc3RlbXMuCisgICAqCisgICAqICAgY29vcmRzIDo6CisgICAqICAgICBBbiBhcnJheSBvZiBgY291bnQnIChwb3NpdGlvbixsZW5ndGgpIHBhaXJzIGluIDE2LjE2IGZvcm1hdC4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgVXNlIHZlcnRpY2FsIGNvb3JkaW5hdGVzICh5KSBmb3IgaG9yaXpvbnRhbCBzdGVtcyAoZGltPTApLiAgVXNlCisgICAqICAgaG9yaXpvbnRhbCBjb29yZGluYXRlcyAoeCkgZm9yIHZlcnRpY2FsIHN0ZW1zIChkaW09MSkuCisgICAqCisgICAqICAgVGhlcmUgYXJlIGAyKmNvdW50JyBlbGVtZW50cyBpbiB0aGUgYGNvb3JkcycgYXJyYXkuICBFYWNoIGV2ZW4KKyAgICogICBlbGVtZW50IGlzIGFuIGFic29sdXRlIHBvc2l0aW9uIGluIGZvbnQgdW5pdHMsIGVhY2ggb2RkIGVsZW1lbnQgaXMgYQorICAgKiAgIGxlbmd0aCBpbiBmb250IHVuaXRzLgorICAgKgorICAgKiAgIEEgbGVuZ3RoIGNhbiBiZSBuZWdhdGl2ZSwgaW4gd2hpY2ggY2FzZSBpdCBtdXN0IGJlIGVpdGhlciAtMjAgb3IKKyAgICogICAtMjEuICBJdCBpcyBpbnRlcnByZXRlZCBhcyBhIGBnaG9zdCcgc3RlbSwgYWNjb3JkaW5nIHRvIHRoZSBUeXBlIDEKKyAgICogICBzcGVjaWZpY2F0aW9uLgorICAgKgorICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqVDJfSGludHNfU3RlbXNGdW5jKSggVDJfSGludHMgICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRpbmF0ZXMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdHlwZToKKyAgICogICBUMl9IaW50c19NYXNrRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtZXRob2Qgb2YgdGhlIEBUMl9IaW50cyBjbGFzcyB1c2VkIHRvIHNldCBhIGdpdmVuIGhpbnRtYXNrICh0aGlzCisgICAqICAgY29ycmVzcG9uZHMgdG8gdGhlIGBoaW50bWFzaycgVHlwZSAyIG9wZXJhdG9yKS4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgIGhpbnRzIDo6CisgICAqICAgICBBIGhhbmRsZSB0byB0aGUgVHlwZSAyIGhpbnRzIHJlY29yZGVyLgorICAgKgorICAgKiAgIGVuZF9wb2ludCA6OgorICAgKiAgICAgVGhlIGdseXBoIGluZGV4IG9mIHRoZSBsYXN0IHBvaW50IHRvIHdoaWNoIHRoZSBwcmV2aW91c2x5IGRlZmluZWQKKyAgICogICAgIG9yIGFjdGl2YXRlZCBoaW50cyBhcHBseS4KKyAgICoKKyAgICogICBiaXRfY291bnQgOjoKKyAgICogICAgIFRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaGludCBtYXNrLgorICAgKgorICAgKiAgIGJ5dGVzIDo6CisgICAqICAgICBBbiBhcnJheSBvZiBieXRlcyBtb2RlbGxpbmcgdGhlIGhpbnQgbWFzay4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgSWYgdGhlIGhpbnRtYXNrIHN0YXJ0cyB0aGUgY2hhcnN0cmluZyAoYmVmb3JlIGFueSBnbHlwaCBwb2ludAorICAgKiAgIGRlZmluaXRpb24pLCB0aGUgdmFsdWUgb2YgYGVuZF9wb2ludCcgc2hvdWxkIGJlIDAuCisgICAqCisgICAqICAgYGJpdF9jb3VudCcgaXMgdGhlIG51bWJlciBvZiBtZWFuaW5nZnVsIGJpdHMgaW4gdGhlIGBieXRlcycgYXJyYXk7IGl0CisgICAqICAgbXVzdCBiZSBlcXVhbCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGhpbnRzIGRlZmluZWQgc28gZmFyIChpLmUuLAorICAgKiAgIGhvcml6b250YWwrdmVydGljYWxzKS4KKyAgICoKKyAgICogICBUaGUgYGJ5dGVzJyBhcnJheSBjYW4gY29tZSBkaXJlY3RseSBmcm9tIHRoZSBUeXBlIDIgY2hhcnN0cmluZyBhbmQKKyAgICogICByZXNwZWN0cyB0aGUgc2FtZSBmb3JtYXQuCisgICAqCisgICAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpUMl9IaW50c19NYXNrRnVuYykoIFQyX0hpbnRzICAgICAgICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBlbmRfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgYml0X2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfQnl0ZSogIGJ5dGVzICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3R5cGU6CisgICAqICAgVDJfSGludHNfQ291bnRlckZ1bmMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbWV0aG9kIG9mIHRoZSBAVDJfSGludHMgY2xhc3MgdXNlZCB0byBzZXQgYSBnaXZlbiBjb3VudGVyIG1hc2sKKyAgICogICAodGhpcyBjb3JyZXNwb25kcyB0byB0aGUgYGhpbnRtYXNrJyBUeXBlIDIgb3BlcmF0b3IpLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaGludHMgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBUeXBlIDIgaGludHMgcmVjb3JkZXIuCisgICAqCisgICAqICAgZW5kX3BvaW50IDo6CisgICAqICAgICBBIGdseXBoIGluZGV4IG9mIHRoZSBsYXN0IHBvaW50IHRvIHdoaWNoIHRoZSBwcmV2aW91c2x5IGRlZmluZWQgb3IKKyAgICogICAgIGFjdGl2ZSBoaW50cyBhcHBseS4KKyAgICoKKyAgICogICBiaXRfY291bnQgOjoKKyAgICogICAgIFRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaGludCBtYXNrLgorICAgKgorICAgKiAgIGJ5dGVzIDo6CisgICAqICAgICBBbiBhcnJheSBvZiBieXRlcyBtb2RlbGxpbmcgdGhlIGhpbnQgbWFzay4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgSWYgdGhlIGhpbnRtYXNrIHN0YXJ0cyB0aGUgY2hhcnN0cmluZyAoYmVmb3JlIGFueSBnbHlwaCBwb2ludAorICAgKiAgIGRlZmluaXRpb24pLCB0aGUgdmFsdWUgb2YgYGVuZF9wb2ludCcgc2hvdWxkIGJlIDAuCisgICAqCisgICAqICAgYGJpdF9jb3VudCcgaXMgdGhlIG51bWJlciBvZiBtZWFuaW5nZnVsIGJpdHMgaW4gdGhlIGBieXRlcycgYXJyYXk7IGl0CisgICAqICAgbXVzdCBiZSBlcXVhbCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGhpbnRzIGRlZmluZWQgc28gZmFyIChpLmUuLAorICAgKiAgIGhvcml6b250YWwrdmVydGljYWxzKS4KKyAgICoKKyAgICogICAgVGhlIGBieXRlcycgYXJyYXkgY2FuIGNvbWUgZGlyZWN0bHkgZnJvbSB0aGUgVHlwZSAyIGNoYXJzdHJpbmcgYW5kCisgICAqICAgIHJlc3BlY3RzIHRoZSBzYW1lIGZvcm1hdC4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKlQyX0hpbnRzX0NvdW50ZXJGdW5jKSggVDJfSGludHMgICAgICAgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGJpdF9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0J5dGUqICBieXRlcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIFQyX0hpbnRzX0Nsb3NlRnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtZXRob2Qgb2YgdGhlIEBUMl9IaW50cyBjbGFzcyB1c2VkIHRvIGNsb3NlIGEgaGludCByZWNvcmRpbmcKKyAgICogICBzZXNzaW9uLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaGludHMgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBUeXBlIDIgaGludHMgcmVjb3JkZXIuCisgICAqCisgICAqICAgZW5kX3BvaW50IDo6CisgICAqICAgICBUaGUgaW5kZXggb2YgdGhlIGxhc3QgcG9pbnQgaW4gdGhlIGlucHV0IGdseXBoLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuCisgICAqCisgICAqIEBub3RlOgorICAgKiAgIFRoZSBlcnJvciBjb2RlIGlzIHNldCB0byBpbmRpY2F0ZSB0aGF0IGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUKKyAgICogICByZWNvcmRpbmcgc2Vzc2lvbi4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUMl9IaW50c19DbG9zZUZ1bmMpKCBUMl9IaW50cyAgaGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGVuZF9wb2ludCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgIFQyX0hpbnRzX0FwcGx5RnVuYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBtZXRob2Qgb2YgdGhlIEBUMl9IaW50cyBjbGFzcyB1c2VkIHRvIGFwcGx5IGhpbnRzIHRvIHRoZQorICAgKiAgIGNvcnJlc3BvbmRpbmcgZ2x5cGggb3V0bGluZS4gIE11c3QgYmUgY2FsbGVkIGFmdGVyIHRoZSBgY2xvc2UnCisgICAqICAgbWV0aG9kLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgaGludHMgOjoKKyAgICogICAgIEEgaGFuZGxlIHRvIHRoZSBUeXBlIDIgaGludHMgcmVjb3JkZXIuCisgICAqCisgICAqICAgb3V0bGluZSA6OgorICAgKiAgICAgQSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgb3V0bGluZSBkZXNjcmlwdG9yLgorICAgKgorICAgKiAgIGdsb2JhbHMgOjoKKyAgICogICAgIFRoZSBoaW50ZXIgZ2xvYmFscyBmb3IgdGhpcyBmb250LgorICAgKgorICAgKiAgIGhpbnRfbW9kZSA6OgorICAgKiAgICAgSGludGluZyBpbmZvcm1hdGlvbi4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICBPbiBpbnB1dCwgYWxsIHBvaW50cyB3aXRoaW4gdGhlIG91dGxpbmUgYXJlIGluIGZvbnQgY29vcmRpbmF0ZXMuIE9uCisgICAqICAgb3V0cHV0LCB0aGV5IGFyZSBpbiAxLzY0dGggb2YgcGl4ZWxzLgorICAgKgorICAgKiAgIFRoZSBzY2FsaW5nIHRyYW5zZm9ybWF0aW9uIGlzIHRha2VuIGZyb20gdGhlIGBnbG9iYWxzJyBvYmplY3Qgd2hpY2gKKyAgICogICBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9udCB0aGFuIHRoZSBnbHlwaC4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUMl9IaW50c19BcHBseUZ1bmMpKCBUMl9IaW50cyAgICAgICAgaGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSogICAgIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFNIX0dsb2JhbHMgICAgIGdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgIGhpbnRfbW9kZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQHN0cnVjdDoKKyAgICogICBUMl9IaW50c19GdW5jc1JlYworICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgVGhlIHN0cnVjdHVyZSB1c2VkIHRvIHByb3ZpZGUgdGhlIEFQSSB0byBAVDJfSGludHMgb2JqZWN0cy4KKyAgICoKKyAgICogQGZpZWxkczoKKyAgICogICBoaW50cyA6OgorICAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIFQyIGhpbnRzIHJlY29yZGVyIG9iamVjdC4KKyAgICoKKyAgICogICBvcGVuIDo6CisgICAqICAgICBUaGUgZnVuY3Rpb24gdG8gb3BlbiBhIHJlY29yZGluZyBzZXNzaW9uLgorICAgKgorICAgKiAgIGNsb3NlIDo6CisgICAqICAgICBUaGUgZnVuY3Rpb24gdG8gY2xvc2UgYSByZWNvcmRpbmcgc2Vzc2lvbi4KKyAgICoKKyAgICogICBzdGVtcyA6OgorICAgKiAgICAgVGhlIGZ1bmN0aW9uIHRvIHNldCB0aGUgZGltZW5zaW9uJ3Mgc3RlbXMgdGFibGUuCisgICAqCisgICAqICAgaGludG1hc2sgOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBzZXQgaGludCBtYXNrcy4KKyAgICoKKyAgICogICBjb3VudGVyIDo6CisgICAqICAgICBUaGUgZnVuY3Rpb24gdG8gc2V0IGNvdW50ZXIgbWFza3MuCisgICAqCisgICAqICAgYXBwbHkgOjoKKyAgICogICAgIFRoZSBmdW5jdGlvbiB0byBhcHBseSB0aGUgaGludHMgb24gdGhlIGNvcnJlc3BvbmRpbmcgZ2x5cGggb3V0bGluZS4KKyAgICoKKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUMl9IaW50c19GdW5jc1JlY18KKyAgeworICAgIFQyX0hpbnRzICAgICAgICAgICAgICBoaW50czsKKyAgICBUMl9IaW50c19PcGVuRnVuYyAgICAgb3BlbjsKKyAgICBUMl9IaW50c19DbG9zZUZ1bmMgICAgY2xvc2U7CisgICAgVDJfSGludHNfU3RlbXNGdW5jICAgIHN0ZW1zOworICAgIFQyX0hpbnRzX01hc2tGdW5jICAgICBoaW50bWFzazsKKyAgICBUMl9IaW50c19Db3VudGVyRnVuYyAgY291bnRlcjsKKyAgICBUMl9IaW50c19BcHBseUZ1bmMgICAgYXBwbHk7CisKKyAgfSBUMl9IaW50c19GdW5jc1JlYzsKKworCisgIC8qICovCisKKworICB0eXBlZGVmIHN0cnVjdCAgUFNIaW50ZXJfSW50ZXJmYWNlXworICB7CisgICAgUFNIX0dsb2JhbHNfRnVuY3MgICgqZ2V0X2dsb2JhbHNfZnVuY3MpKCBGVF9Nb2R1bGUgIG1vZHVsZSApOworICAgIFQxX0hpbnRzX0Z1bmNzICAgICAoKmdldF90MV9mdW5jcykgICAgICggRlRfTW9kdWxlICBtb2R1bGUgKTsKKyAgICBUMl9IaW50c19GdW5jcyAgICAgKCpnZXRfdDJfZnVuY3MpICAgICAoIEZUX01vZHVsZSAgbW9kdWxlICk7CisKKyAgfSBQU0hpbnRlcl9JbnRlcmZhY2U7CisKKyAgdHlwZWRlZiBQU0hpbnRlcl9JbnRlcmZhY2UqICBQU0hpbnRlcl9TZXJ2aWNlOworCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfUFNISU5URVJfSU5URVJGQUNFKCAgICAgICAgXAorICAgICAgICAgIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9nbG9iYWxzX2Z1bmNzXywgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF90MV9mdW5jc18sICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF90Ml9mdW5jc18gKSAgICAgICAgICAgICAgICAgICAgXAorICBzdGF0aWMgY29uc3QgUFNIaW50ZXJfSW50ZXJmYWNlICBjbGFzc18gPSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9nbG9iYWxzX2Z1bmNzXywgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF90MV9mdW5jc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF90Ml9mdW5jc18gICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9QU0hJTlRFUl9JTlRFUkZBQ0UoICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9nbG9iYWxzX2Z1bmNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X3QxX2Z1bmNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfdDJfZnVuY3NfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU0hpbnRlcl9JbnRlcmZhY2UqICBjbGF6eiApICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfZ2xvYmFsc19mdW5jcyA9IGdldF9nbG9iYWxzX2Z1bmNzXzsgICAgICAgICBcCisgICAgY2xhenotPmdldF90MV9mdW5jcyAgICAgID0gZ2V0X3QxX2Z1bmNzXzsgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X3QyX2Z1bmNzICAgICAgPSBnZXRfdDJfZnVuY3NfOyAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1BTSElOVFNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmJkZi5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZiZGYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDhiZDE1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZiZGYuaApAQCAtMCwwICsxLDgyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdmJkZi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIEJERiBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDMsIDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVkJERl9IX18KKyNkZWZpbmUgX19TVkJERl9IX18KKworI2luY2x1ZGUgIi4uLy4uL2Z0YmRmLmgiCisjaW5jbHVkZSAiLi4vZnRzZXJ2LmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX0JERiAgImJkZiIKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfQkRGX0dldENoYXJzZXRJZEZ1bmMpKCBGVF9GYWNlICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgKmFjaGFyc2V0X2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICphY2hhcnNldF9yZWdpc3RyeSApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9CREZfR2V0UHJvcGVydHlGdW5jKSggRlRfRmFjZSAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICAgICAgcHJvcF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCREZfUHJvcGVydHlSZWMgICphcHJvcGVydHkgKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBCREYgKQorICB7CisgICAgRlRfQkRGX0dldENoYXJzZXRJZEZ1bmMgIGdldF9jaGFyc2V0X2lkOworICAgIEZUX0JERl9HZXRQcm9wZXJ0eUZ1bmMgICBnZXRfcHJvcGVydHk7CisgIH07CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX0JERlJlYyggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9jaGFyc2V0X2lkXywgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfcHJvcGVydHlfICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX0JERlJlYyAgY2xhc3NfID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfY2hhcnNldF9pZF8sIGdldF9wcm9wZXJ0eV8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfQkRGUmVjKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2NoYXJzZXRfaWRfLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9wcm9wZXJ0eV8gKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfU2VydmljZV9CREZSZWMqICBjbGF6eiApICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X2NoYXJzZXRfaWQgPSBnZXRfY2hhcnNldF9pZF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9wcm9wZXJ0eSAgID0gZ2V0X3Byb3BlcnR5XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX1NWQkRGX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZjaWQuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2lkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUzM2M3NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Y2lkLmgKQEAgLTAsMCArMSw4OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3ZjaWQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBDSUQgZm9udCBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LCAyMDA5LCAyMDEyIGJ5IERlcmVrIENsZWdnLCBNaWNoYWVsIFRvZnRkYWwuICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVkNJRF9IX18KKyNkZWZpbmUgX19TVkNJRF9IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9DSUQgICJDSUQiCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0NJRF9HZXRSZWdpc3RyeU9yZGVyaW5nU3VwcGxlbWVudEZ1bmMpKCBGVF9GYWNlICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqcmVnaXN0cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqb3JkZXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAqc3VwcGxlbWVudCApOworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfQ0lEX0dldElzSW50ZXJuYWxseUNJREtleWVkRnVuYykoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAqaXNfY2lkICk7CisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9DSURfR2V0Q0lERnJvbUdseXBoSW5kZXhGdW5jKSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgKmNpZCApOworCisgIEZUX0RFRklORV9TRVJWSUNFKCBDSUQgKQorICB7CisgICAgRlRfQ0lEX0dldFJlZ2lzdHJ5T3JkZXJpbmdTdXBwbGVtZW50RnVuYyAgZ2V0X3JvczsKKyAgICBGVF9DSURfR2V0SXNJbnRlcm5hbGx5Q0lES2V5ZWRGdW5jICAgICAgICBnZXRfaXNfY2lkOworICAgIEZUX0NJRF9HZXRDSURGcm9tR2x5cGhJbmRleEZ1bmMgICAgICAgICAgIGdldF9jaWRfZnJvbV9nbHlwaF9pbmRleDsKKyAgfTsKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfQ0lEUkVDKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3Jvc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9pc19jaWRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfY2lkX2Zyb21fZ2x5cGhfaW5kZXhfICkgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX0NJRFJlYyBjbGFzc18gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfcm9zXywgZ2V0X2lzX2NpZF8sIGdldF9jaWRfZnJvbV9nbHlwaF9pbmRleF8gICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfQ0lEUkVDKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3Jvc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9pc19jaWRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfY2lkX2Zyb21fZ2x5cGhfaW5kZXhfICkgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlX0NJRFJlYyogIGNsYXp6ICkgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1VOVVNFRCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9yb3MgICAgICAgICAgICAgICAgICA9IGdldF9yb3NfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfaXNfY2lkICAgICAgICAgICAgICAgPSBnZXRfaXNfY2lkXzsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X2NpZF9mcm9tX2dseXBoX2luZGV4ID0gZ2V0X2NpZF9mcm9tX2dseXBoX2luZGV4XzsgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZDSURfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmdsZGljdC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZnbGRpY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTU2Zjc0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZnbGRpY3QuaApAQCAtMCwwICsxLDg4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdmdsZGljdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIGdseXBoIGRpY3Rpb25hcnkgc2VydmljZXMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDMsIDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVkdMRElDVF9IX18KKyNkZWZpbmUgX19TVkdMRElDVF9IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoKKyAgICogIEEgc2VydmljZSB1c2VkIHRvIHJldHJpZXZlIGdseXBoIG5hbWVzLCBhcyB3ZWxsIGFzIHRvIGZpbmQgdGhlCisgICAqICBpbmRleCBvZiBhIGdpdmVuIGdseXBoIG5hbWUgaW4gYSBmb250LgorICAgKgorICAgKi8KKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX0dMWVBIX0RJQ1QgICJnbHlwaC1kaWN0IgorCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0dseXBoRGljdF9HZXROYW1lRnVuYykoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGJ1ZmZlcl9tYXggKTsKKworICB0eXBlZGVmIEZUX1VJbnQKKyAgKCpGVF9HbHlwaERpY3RfTmFtZUluZGV4RnVuYykoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJpbmcqICBnbHlwaF9uYW1lICk7CisKKworICBGVF9ERUZJTkVfU0VSVklDRSggR2x5cGhEaWN0ICkKKyAgeworICAgIEZUX0dseXBoRGljdF9HZXROYW1lRnVuYyAgICBnZXRfbmFtZTsKKyAgICBGVF9HbHlwaERpY3RfTmFtZUluZGV4RnVuYyAgbmFtZV9pbmRleDsgIC8qIG9wdGlvbmFsICovCisgIH07CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX0dMWVBIRElDVFJFQyggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfbmFtZV8sICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfaW5kZXhfKSAgICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX0dseXBoRGljdFJlYyAgY2xhc3NfID0gICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9uYW1lXywgbmFtZV9pbmRleF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfR0xZUEhESUNUUkVDKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9uYW1lXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9pbmRleF8pICAgICAgICAgICAgICAgICAgIFwKKyAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX0xpYnJhcnkgICAgICAgICAgICAgICAgbGlicmFyeSwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZV9HbHlwaERpY3RSZWMqICBjbGF6eiApICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1VOVVNFRCggbGlicmFyeSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X25hbWUgICA9IGdldF9uYW1lXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5uYW1lX2luZGV4ID0gbmFtZV9pbmRleF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZHTERJQ1RfSF9fICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmd4dmFsLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmd4dmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3YjZhOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z3h2YWwuaApAQCAtMCwwICsxLDcyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdmd4dmFsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgQVBJIGZvciB2YWxpZGF0aW5nIFRydWVUeXBlR1gvQUFUIHRhYmxlcyAoc3BlY2lmaWNhdGlvbikuICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDQsIDIwMDUgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE1hc2F0YWtlIFlBTUFUTywgUmVkIEhhdCBLLksuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBneHZhbGlkIGlzIGRlcml2ZWQgZnJvbSBib3RoIGd4bGF5b3V0IG1vZHVsZSBhbmQgb3R2YWxpZCBtb2R1bGUuICAgICAgICAqLworLyogRGV2ZWxvcG1lbnQgb2YgZ3hsYXlvdXQgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJbmZvcm1hdGlvbi10ZWNobm9sb2d5ICAgICAgKi8KKy8qIFByb21vdGlvbiBBZ2VuY3koSVBBKSwgSmFwYW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fU1ZHWFZBTF9IX18KKyNkZWZpbmUgX19TVkdYVkFMX0hfXworCisjaW5jbHVkZSAiLi4vLi4vZnRneHZhbC5oIgorI2luY2x1ZGUgIi4uL2Z0dmFsaWQuaCIKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX0dYX1ZBTElEQVRFICAgICAgICAgICAidHJ1ZXR5cGVneC12YWxpZGF0ZSIKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9DTEFTU0lDS0VSTl9WQUxJREFURSAgImNsYXNzaWNrZXJuLXZhbGlkYXRlIgorCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpneHZfdmFsaWRhdGVfZnVuYykoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGd4X2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgIHRhYmxlc1tGVF9WQUxJREFURV9HWF9MRU5HVEhdLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIHRhYmxlX2xlbmd0aCApOworCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKmNrZXJuX3ZhbGlkYXRlX2Z1bmMpKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGNrZXJuX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgKmNrZXJuX3RhYmxlICk7CisKKworICBGVF9ERUZJTkVfU0VSVklDRSggR1h2YWxpZGF0ZSApCisgIHsKKyAgICBneHZfdmFsaWRhdGVfZnVuYyAgdmFsaWRhdGU7CisgIH07CisKKyAgRlRfREVGSU5FX1NFUlZJQ0UoIENLRVJOdmFsaWRhdGUgKQorICB7CisgICAgY2tlcm5fdmFsaWRhdGVfZnVuYyAgdmFsaWRhdGU7CisgIH07CisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZHWFZBTF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2a2Vybi5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZrZXJuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwM2ZlZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2a2Vybi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2a2Vybi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgS2VybmluZyBzZXJ2aWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWS0VSTl9IX18KKyNkZWZpbmUgX19TVktFUk5fSF9fCisKKyNpbmNsdWRlICIuLi9mdHNlcnYuaCIKKyNpbmNsdWRlICIuLi8uLi90dHRhYmxlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfS0VSTklORyAgImtlcm5pbmciCisKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfS2VybmluZ19UcmFja0dldEZ1bmMpKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgIHBvaW50X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGRlZ3JlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgYWtlcm5pbmcgKTsKKworICBGVF9ERUZJTkVfU0VSVklDRSggS2VybmluZyApCisgIHsKKyAgICBGVF9LZXJuaW5nX1RyYWNrR2V0RnVuYyAgZ2V0X3RyYWNrOworICB9OworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX1NWS0VSTl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2bW0uaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2bW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDBmZjg3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZtbS5oCkBAIC0wLDAgKzEsMTEzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdm1tLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIE11bHRpcGxlIE1hc3RlcnMgYW5kIEdYIHZhciBzZXJ2aWNlcyAoc3BlY2lmaWNhdGlvbikuICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDMsIDIwMDQsIDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVk1NX0hfXworI2RlZmluZSBfX1NWTU1fSF9fCisKKyNpbmNsdWRlICIuLi9mdHNlcnYuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qCisgICAqICBBIHNlcnZpY2UgdXNlZCB0byBtYW5hZ2UgbXVsdGlwbGUtbWFzdGVycyBkYXRhIGluIGEgZ2l2ZW4gZmFjZS4KKyAgICoKKyAgICogIFNlZSB0aGUgcmVsYXRlZCBBUElzIGluIGBmdG1tLmgnIChGVF9NVUxUSVBMRV9NQVNURVJTX0gpLgorICAgKgorICAgKi8KKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX01VTFRJX01BU1RFUlMgICJtdWx0aS1tYXN0ZXJzIgorCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX0dldF9NTV9GdW5jKSggRlRfRmFjZSAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX011bHRpX01hc3RlciogIG1hc3RlciApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9HZXRfTU1fVmFyX0Z1bmMpKCBGVF9GYWNlICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NTV9WYXIqICAqbWFzdGVyICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1NldF9NTV9EZXNpZ25fRnVuYykoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBudW1fY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICBjb29yZHMgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfU2V0X1Zhcl9EZXNpZ25fRnVuYykoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBudW1fY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGNvb3JkcyApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9TZXRfTU1fQmxlbmRfRnVuYykoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIG51bV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nKiAgY29vcmRzICk7CisKKworICBGVF9ERUZJTkVfU0VSVklDRSggTXVsdGlNYXN0ZXJzICkKKyAgeworICAgIEZUX0dldF9NTV9GdW5jICAgICAgICAgIGdldF9tbTsKKyAgICBGVF9TZXRfTU1fRGVzaWduX0Z1bmMgICBzZXRfbW1fZGVzaWduOworICAgIEZUX1NldF9NTV9CbGVuZF9GdW5jICAgIHNldF9tbV9ibGVuZDsKKyAgICBGVF9HZXRfTU1fVmFyX0Z1bmMgICAgICBnZXRfbW1fdmFyOworICAgIEZUX1NldF9WYXJfRGVzaWduX0Z1bmMgIHNldF92YXJfZGVzaWduOworICB9OworCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9NVUxUSU1BU1RFUlNSRUMoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfbW1fLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X21tX2Rlc2lnbl8sICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9tbV9ibGVuZF8sICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfbW1fdmFyXywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3Zhcl9kZXNpZ25fICkgICAgICAgICAgICAgICAgXAorICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9NdWx0aU1hc3RlcnNSZWMgIGNsYXNzXyA9ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X21tXywgc2V0X21tX2Rlc2lnbl8sIHNldF9tbV9ibGVuZF8sIGdldF9tbV92YXJfLCBzZXRfdmFyX2Rlc2lnbl8gICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX01VTFRJTUFTVEVSU1JFQyggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tbV8sICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbW1fZGVzaWduXywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X21tX2JsZW5kXywgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tbV92YXJfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfdmFyX2Rlc2lnbl8gKSAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzUmVjKiAgY2xhenogKSAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9tbSAgICAgICAgID0gZ2V0X21tXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5zZXRfbW1fZGVzaWduICA9IHNldF9tbV9kZXNpZ25fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+c2V0X21tX2JsZW5kICAgPSBzZXRfbW1fYmxlbmRfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9tbV92YXIgICAgID0gZ2V0X21tX3Zhcl87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5zZXRfdmFyX2Rlc2lnbiA9IHNldF92YXJfZGVzaWduXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fU1ZNTV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2b3R2YWwuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2b3R2YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2NkMzRmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZvdHZhbC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2b3R2YWwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgT3BlblR5cGUgdmFsaWRhdGlvbiBzZXJ2aWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNCwgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWT1RWQUxfSF9fCisjZGVmaW5lIF9fU1ZPVFZBTF9IX18KKworI2luY2x1ZGUgIi4uLy4uL2Z0b3R2YWwuaCIKKyNpbmNsdWRlICIuLi9mdHZhbGlkLmgiCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9PUEVOVFlQRV9WQUxJREFURSAgIm9wZW50eXBlLXZhbGlkYXRlIgorCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKm90dl92YWxpZGF0ZV9mdW5jKSggRlRfRmFjZSB2b2xhdGlsZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgIG90X2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICAgICAgICAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAgICAgICAgKmdkZWYsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgICAgICAgICpncG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICAgICAgICAqZ3N1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICAgICAgICAgKmpzdGYgKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBPVHZhbGlkYXRlICkKKyAgeworICAgIG90dl92YWxpZGF0ZV9mdW5jICB2YWxpZGF0ZTsKKyAgfTsKKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVk9UVkFMX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZwZnIuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cGZyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFhMDBkMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cGZyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3ZwZnIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEludGVybmFsIFBGUiBzZXJ2aWNlIGZ1bmN0aW9ucyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLCAyMDA2IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fU1ZQRlJfSF9fCisjZGVmaW5lIF9fU1ZQRlJfSF9fCisKKyNpbmNsdWRlICIuLi8uLi9mdHBmci5oIgorI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9QRlJfTUVUUklDUyAgInBmci1tZXRyaWNzIgorCisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1BGUl9HZXRNZXRyaWNzRnVuYykoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgKmFvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAqYW1ldHJpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICpheF9zY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgKmF5X3NjYWxlICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1BGUl9HZXRLZXJuaW5nRnVuYykoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICByaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IgICphdmVjdG9yICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKkZUX1BGUl9HZXRBZHZhbmNlRnVuYykoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBnaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgKmFhZHZhbmNlICk7CisKKworICBGVF9ERUZJTkVfU0VSVklDRSggUGZyTWV0cmljcyApCisgIHsKKyAgICBGVF9QRlJfR2V0TWV0cmljc0Z1bmMgIGdldF9tZXRyaWNzOworICAgIEZUX1BGUl9HZXRLZXJuaW5nRnVuYyAgZ2V0X2tlcm5pbmc7CisgICAgRlRfUEZSX0dldEFkdmFuY2VGdW5jICBnZXRfYWR2YW5jZTsKKworICB9OworCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19TVlBGUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cG9zdG5tLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZTg2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2cG9zdG5tLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgUG9zdFNjcmlwdCBuYW1lIHNlcnZpY2VzIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMywgMjAwNywgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWUE9TVE5NX0hfXworI2RlZmluZSBfX1NWUE9TVE5NX0hfXworCisjaW5jbHVkZSAiLi4vZnRzZXJ2LmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKyAgLyoKKyAgICogIEEgdHJpdmlhbCBzZXJ2aWNlIHVzZWQgdG8gcmV0cmlldmUgdGhlIFBvc3RTY3JpcHQgbmFtZSBvZiBhIGdpdmVuCisgICAqICBmb250IHdoZW4gYXZhaWxhYmxlLiAgVGhlIGBnZXRfbmFtZScgZmllbGQgc2hvdWxkIG5ldmVyIGJlIE5VTEwuCisgICAqCisgICAqICBUaGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBjYW4gcmV0dXJuIE5VTEwgdG8gaW5kaWNhdGUgdGhhdCB0aGUKKyAgICogIFBvc3RTY3JpcHQgbmFtZSBpcyBub3QgYXZhaWxhYmxlLgorICAgKgorICAgKiAgVGhlIG5hbWUgaXMgb3duZWQgYnkgdGhlIGZhY2UgYW5kIHdpbGwgYmUgZGVzdHJveWVkIHdpdGggaXQuCisgICAqLworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9GT05UX05BTUUgICJwb3N0c2NyaXB0LWZvbnQtbmFtZSIKKworCisgIHR5cGVkZWYgY29uc3QgY2hhcioKKyAgKCpGVF9Qc05hbWVfR2V0RnVuYykoIEZUX0ZhY2UgIGZhY2UgKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBQc0ZvbnROYW1lICkKKyAgeworICAgIEZUX1BzTmFtZV9HZXRGdW5jICBnZXRfcHNfZm9udF9uYW1lOworICB9OworCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9QU0ZPTlROQU1FUkVDKCBjbGFzc18sIGdldF9wc19mb250X25hbWVfICkgXAorICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9Qc0ZvbnROYW1lUmVjICBjbGFzc18gPSAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdldF9wc19mb250X25hbWVfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1BTRk9OVE5BTUVSRUMoIGNsYXNzXywgZ2V0X3BzX2ZvbnRfbmFtZV8gKSBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggRlRfTGlicmFyeSAgICAgICAgICAgICAgICAgbGlicmFyeSwgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZV9Qc0ZvbnROYW1lUmVjKiAgY2xhenogKSAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9wc19mb250X25hbWUgPSBnZXRfcHNfZm9udF9uYW1lXzsgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZQT1NUTk1fSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnByb3AuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHJvcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZGEwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnByb3AuaApAQCAtMCwwICsxLDgxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdnByb3AuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHByb3BlcnR5IHNlcnZpY2UgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVlBST1BfSF9fCisjZGVmaW5lIF9fU1ZQUk9QX0hfXworCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9QUk9QRVJUSUVTICAicHJvcGVydGllcyIKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9Qcm9wZXJ0aWVzX1NldEZ1bmMpKCBGVF9Nb2R1bGUgICAgbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBwcm9wZXJ0eV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICB2YWx1ZSApOworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9Qcm9wZXJ0aWVzX0dldEZ1bmMpKCBGVF9Nb2R1bGUgICAgbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBwcm9wZXJ0eV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICB2YWx1ZSApOworCisKKyAgRlRfREVGSU5FX1NFUlZJQ0UoIFByb3BlcnRpZXMgKQorICB7CisgICAgRlRfUHJvcGVydGllc19TZXRGdW5jICBzZXRfcHJvcGVydHk7CisgICAgRlRfUHJvcGVydGllc19HZXRGdW5jICBnZXRfcHJvcGVydHk7CisgIH07CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1BST1BFUlRJRVNSRUMoIGNsYXNzXywgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfcHJvcGVydHlfLCAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3Byb3BlcnR5XyApICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX1Byb3BlcnRpZXNSZWMgIGNsYXNzXyA9ICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzZXRfcHJvcGVydHlfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X3Byb3BlcnR5XyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1BST1BFUlRJRVNSRUMoIGNsYXNzXywgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfcHJvcGVydHlfLCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3Byb3BlcnR5XyApICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX1NlcnZpY2VfUHJvcGVydGllc1JlYyogIGNsYXp6ICkgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnNldF9wcm9wZXJ0eSA9IHNldF9wcm9wZXJ0eV87ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfcHJvcGVydHkgPSBnZXRfcHJvcGVydHlfOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19TVlBST1BfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzY21hcC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2NtYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTJkMTRmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2NtYXAuaApAQCAtMCwwICsxLDE3NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3Zwc2NtYXAuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBQb3N0U2NyaXB0IGNoYXJtYXAgc2VydmljZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLCAyMDA2LCAyMDA5LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fU1ZQU0NNQVBfSF9fCisjZGVmaW5lIF9fU1ZQU0NNQVBfSF9fCisKKyNpbmNsdWRlICIuLi9mdG9ianMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9DTUFQUyAgInBvc3RzY3JpcHQtY21hcHMiCisKKworICAvKgorICAgKiAgQWRvYmUgZ2x5cGggbmFtZSB0byB1bmljb2RlIHZhbHVlLgorICAgKi8KKyAgdHlwZWRlZiBGVF9VSW50MzIKKyAgKCpQU19Vbmljb2RlX1ZhbHVlRnVuYykoIGNvbnN0IGNoYXIqICBnbHlwaF9uYW1lICk7CisKKyAgLyoKKyAgICogIE1hY2ludG9zaCBuYW1lIGlkIHRvIGdseXBoIG5hbWUuICBOVUxMIGlmIGludmFsaWQgaW5kZXguCisgICAqLworICB0eXBlZGVmIGNvbnN0IGNoYXIqCisgICgqUFNfTWFjaW50b3NoX05hbWVGdW5jKSggRlRfVUludCAgbmFtZV9pbmRleCApOworCisgIC8qCisgICAqICBBZG9iZSBzdGFuZGFyZCBzdHJpbmcgSUQgdG8gZ2x5cGggbmFtZS4gIE5VTEwgaWYgaW52YWxpZCBpbmRleC4KKyAgICovCisgIHR5cGVkZWYgY29uc3QgY2hhcioKKyAgKCpQU19BZG9iZV9TdGRfU3RyaW5nc0Z1bmMpKCBGVF9VSW50ICBzdHJpbmdfaW5kZXggKTsKKworCisgIC8qCisgICAqICBTaW1wbGUgdW5pY29kZSAtPiBnbHlwaCBpbmRleCBjaGFybWFwIGJ1aWx0IGZyb20gZm9udCBnbHlwaCBuYW1lcworICAgKiAgdGFibGUuCisgICAqLworICB0eXBlZGVmIHN0cnVjdCAgUFNfVW5pTWFwXworICB7CisgICAgRlRfVUludDMyICB1bmljb2RlOyAgICAgIC8qIGJpdCAzMSBzZXQ6IGlzIGdseXBoIHZhcmlhbnQgKi8KKyAgICBGVF9VSW50ICAgIGdseXBoX2luZGV4OworCisgIH0gUFNfVW5pTWFwOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgUFNfVW5pY29kZXNSZWNfKiAgUFNfVW5pY29kZXM7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTX1VuaWNvZGVzUmVjXworICB7CisgICAgRlRfQ01hcFJlYyAgY21hcDsKKyAgICBGVF9VSW50ICAgICBudW1fbWFwczsKKyAgICBQU19VbmlNYXAqICBtYXBzOworCisgIH0gUFNfVW5pY29kZXNSZWM7CisKKworICAvKgorICAgKiAgQSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGEgZ2x5cGggbmFtZSBmb3IgYSBnaXZlbiBpbmRleC4gIFJldHVybnMKKyAgICogIE5VTEwgaWYgaW52YWxpZCBpbmRleC4KKyAgICovCisgIHR5cGVkZWYgY29uc3QgY2hhcioKKyAgKCpQU19HZXRHbHlwaE5hbWVGdW5jKSggRlRfUG9pbnRlciAgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgc3RyaW5nX2luZGV4ICk7CisKKyAgLyoKKyAgICogIEEgZnVuY3Rpb24gdXNlZCB0byByZWxlYXNlIHRoZSBnbHlwaCBuYW1lIHJldHVybmVkIGJ5CisgICAqICBQU19HZXRHbHlwaE5hbWVGdW5jLCB3aGVuIG5lZWRlZAorICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqUFNfRnJlZUdseXBoTmFtZUZ1bmMpKCBGVF9Qb2ludGVyICBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIG5hbWUgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqUFNfVW5pY29kZXNfSW5pdEZ1bmMpKCBGVF9NZW1vcnkgICAgICAgICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNfVW5pY29kZXMgICAgICAgICAgIHVuaWNvZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICAgIG51bV9nbHlwaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQU19HZXRHbHlwaE5hbWVGdW5jICAgZ2V0X2dseXBoX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQU19GcmVlR2x5cGhOYW1lRnVuYyAgZnJlZV9nbHlwaF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgICAgICAgICAgIGdseXBoX2RhdGEgKTsKKworICB0eXBlZGVmIEZUX1VJbnQKKyAgKCpQU19Vbmljb2Rlc19DaGFySW5kZXhGdW5jKSggUFNfVW5pY29kZXMgIHVuaWNvZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICAgdW5pY29kZSApOworCisgIHR5cGVkZWYgRlRfVUludDMyCisgICgqUFNfVW5pY29kZXNfQ2hhck5leHRGdW5jKSggUFNfVW5pY29kZXMgIHVuaWNvZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgICp1bmljb2RlICk7CisKKworICBGVF9ERUZJTkVfU0VSVklDRSggUHNDTWFwcyApCisgIHsKKyAgICBQU19Vbmljb2RlX1ZhbHVlRnVuYyAgICAgICB1bmljb2RlX3ZhbHVlOworCisgICAgUFNfVW5pY29kZXNfSW5pdEZ1bmMgICAgICAgdW5pY29kZXNfaW5pdDsKKyAgICBQU19Vbmljb2Rlc19DaGFySW5kZXhGdW5jICB1bmljb2Rlc19jaGFyX2luZGV4OworICAgIFBTX1VuaWNvZGVzX0NoYXJOZXh0RnVuYyAgIHVuaWNvZGVzX2NoYXJfbmV4dDsKKworICAgIFBTX01hY2ludG9zaF9OYW1lRnVuYyAgICAgIG1hY2ludG9zaF9uYW1lOworICAgIFBTX0Fkb2JlX1N0ZF9TdHJpbmdzRnVuYyAgIGFkb2JlX3N0ZF9zdHJpbmdzOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiAgICAgIGFkb2JlX3N0ZF9lbmNvZGluZzsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCogICAgICBhZG9iZV9leHBlcnRfZW5jb2Rpbmc7CisgIH07CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1BTQ01BUFNSRUMoIGNsYXNzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX3ZhbHVlXywgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZXNfaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVzX2NoYXJfaW5kZXhfLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2Rlc19jaGFyX25leHRfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaW50b3NoX25hbWVfLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkb2JlX3N0ZF9zdHJpbmdzXywgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG9iZV9zdGRfZW5jb2RpbmdfLCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRvYmVfZXhwZXJ0X2VuY29kaW5nXyApICAgICAgICAgICAgICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX1BzQ01hcHNSZWMgIGNsYXNzXyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1bmljb2RlX3ZhbHVlXywgdW5pY29kZXNfaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5pY29kZXNfY2hhcl9pbmRleF8sIHVuaWNvZGVzX2NoYXJfbmV4dF8sIG1hY2ludG9zaF9uYW1lXywgICAgICAgICAgICAgXAorICAgIGFkb2JlX3N0ZF9zdHJpbmdzXywgYWRvYmVfc3RkX2VuY29kaW5nXywgYWRvYmVfZXhwZXJ0X2VuY29kaW5nXyAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9QU0NNQVBTUkVDKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV92YWx1ZV8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVzX2luaXRfLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2Rlc19jaGFyX2luZGV4XywgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZXNfY2hhcl9uZXh0XywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2ludG9zaF9uYW1lXywgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG9iZV9zdGRfc3RyaW5nc18sICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRvYmVfc3RkX2VuY29kaW5nXywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkb2JlX2V4cGVydF9lbmNvZGluZ18gKSAgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgICAgICBsaWJyYXJ5LCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZV9Qc0NNYXBzUmVjKiAgY2xhenogKSAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT51bmljb2RlX3ZhbHVlICAgICAgICAgPSB1bmljb2RlX3ZhbHVlXzsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+dW5pY29kZXNfaW5pdCAgICAgICAgID0gdW5pY29kZXNfaW5pdF87ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnVuaWNvZGVzX2NoYXJfaW5kZXggICA9IHVuaWNvZGVzX2NoYXJfaW5kZXhfOyAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT51bmljb2Rlc19jaGFyX25leHQgICAgPSB1bmljb2Rlc19jaGFyX25leHRfOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bWFjaW50b3NoX25hbWUgICAgICAgID0gbWFjaW50b3NoX25hbWVfOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmFkb2JlX3N0ZF9zdHJpbmdzICAgICA9IGFkb2JlX3N0ZF9zdHJpbmdzXzsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5hZG9iZV9zdGRfZW5jb2RpbmcgICAgPSBhZG9iZV9zdGRfZW5jb2RpbmdfOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+YWRvYmVfZXhwZXJ0X2VuY29kaW5nID0gYWRvYmVfZXhwZXJ0X2VuY29kaW5nXzsgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZQU0NNQVBfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzaW5mby5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2luZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTNiMzAzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2luZm8uaApAQCAtMCwwICsxLDExMSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc3Zwc2luZm8uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBQb3N0U2NyaXB0IGluZm8gc2VydmljZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAzLCAyMDA0LCAyMDA5LCAyMDExLCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fU1ZQU0lORk9fSF9fCisjZGVmaW5lIF9fU1ZQU0lORk9fSF9fCisKKyNpbmNsdWRlICIuLi9mdHNlcnYuaCIKKyNpbmNsdWRlICIuLi90MXR5cGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX1BPU1RTQ1JJUFRfSU5GTyAgInBvc3RzY3JpcHQtaW5mbyIKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpQU19HZXRGb250SW5mb0Z1bmMpKCBGVF9GYWNlICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFNfRm9udEluZm9SZWMqICBhZm9udF9pbmZvICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlBTX0dldEZvbnRFeHRyYUZ1bmMpKCBGVF9GYWNlICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQU19Gb250RXh0cmFSZWMqICBhZm9udF9leHRyYSApOworCisgIHR5cGVkZWYgRlRfSW50CisgICgqUFNfSGFzR2x5cGhOYW1lc0Z1bmMpKCBGVF9GYWNlICBmYWNlICk7CisKKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlBTX0dldEZvbnRQcml2YXRlRnVuYykoIEZUX0ZhY2UgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTX1ByaXZhdGVSZWMqICBhZm9udF9wcml2YXRlICk7CisKKyAgdHlwZWRlZiBGVF9Mb25nCisgICgqUFNfR2V0Rm9udFZhbHVlRnVuYykoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUFNfRGljdF9LZXlzICBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICAgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgIHZhbHVlX2xlbiApOworCisKKyAgRlRfREVGSU5FX1NFUlZJQ0UoIFBzSW5mbyApCisgIHsKKyAgICBQU19HZXRGb250SW5mb0Z1bmMgICAgIHBzX2dldF9mb250X2luZm87CisgICAgUFNfR2V0Rm9udEV4dHJhRnVuYyAgICBwc19nZXRfZm9udF9leHRyYTsKKyAgICBQU19IYXNHbHlwaE5hbWVzRnVuYyAgIHBzX2hhc19nbHlwaF9uYW1lczsKKyAgICBQU19HZXRGb250UHJpdmF0ZUZ1bmMgIHBzX2dldF9mb250X3ByaXZhdGU7CisgICAgUFNfR2V0Rm9udFZhbHVlRnVuYyAgICBwc19nZXRfZm9udF92YWx1ZTsKKyAgfTsKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfUFNJTkZPUkVDKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9mb250X2luZm9fLCAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNfZ2V0X2ZvbnRfZXh0cmFfLCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfZ2x5cGhfbmFtZXNfLCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9mb250X3ByaXZhdGVfLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2ZvbnRfdmFsdWVfICkgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfUHNJbmZvUmVjICBjbGFzc18gPSAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2ZvbnRfaW5mb18sIHBzX2dldF9mb250X2V4dHJhXywgaGFzX2dseXBoX25hbWVzXywgICAgICAgIFwKKyAgICBnZXRfZm9udF9wcml2YXRlXywgZ2V0X2ZvbnRfdmFsdWVfICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1BTSU5GT1JFQyggY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfZm9udF9pbmZvXywgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzX2dldF9mb250X2V4dHJhXywgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzX2dseXBoX25hbWVzXywgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfZm9udF9wcml2YXRlXywgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9mb250X3ZhbHVlXyApICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgICAgIGxpYnJhcnksICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VfUHNJbmZvUmVjKiAgY2xhenogKSAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnBzX2dldF9mb250X2luZm8gICAgPSBnZXRfZm9udF9pbmZvXzsgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cHNfZ2V0X2ZvbnRfZXh0cmEgICA9IHBzX2dldF9mb250X2V4dHJhXzsgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5wc19oYXNfZ2x5cGhfbmFtZXMgID0gaGFzX2dseXBoX25hbWVzXzsgICAgICAgICAgICAgICBcCisgICAgY2xhenotPnBzX2dldF9mb250X3ByaXZhdGUgPSBnZXRfZm9udF9wcml2YXRlXzsgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+cHNfZ2V0X2ZvbnRfdmFsdWUgICA9IGdldF9mb250X3ZhbHVlXzsgICAgICAgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX1NWUFNJTkZPX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZzZm50LmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnNmbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDI1MDQyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZzZm50LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2c2ZudC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgU0ZOVCB0YWJsZSBsb2FkaW5nIHNlcnZpY2UgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMywgMjAwNCwgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NWU0ZOVF9IX18KKyNkZWZpbmUgX19TVlNGTlRfSF9fCisKKyNpbmNsdWRlICIuLi9mdHNlcnYuaCIKKyNpbmNsdWRlICIuLi8uLi90dHRhYmxlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoKKyAgICogIFNGTlQgdGFibGUgbG9hZGluZyBzZXJ2aWNlLgorICAgKi8KKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX1NGTlRfVEFCTEUgICJzZm50LXRhYmxlIgorCisKKyAgLyoKKyAgICogVXNlZCB0byBpbXBsZW1lbnQgRlRfTG9hZF9TZm50X1RhYmxlKCkuCisgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfU0ZOVF9UYWJsZUxvYWRGdW5jKSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgbGVuZ3RoICk7CisKKyAgLyoKKyAgICogVXNlZCB0byBpbXBsZW1lbnQgRlRfR2V0X1NmbnRfVGFibGUoKS4KKyAgICovCisgIHR5cGVkZWYgdm9pZCoKKyAgKCpGVF9TRk5UX1RhYmxlR2V0RnVuYykoIEZUX0ZhY2UgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2ZudF9UYWcgIHRhZyApOworCisKKyAgLyoKKyAgICogVXNlZCB0byBpbXBsZW1lbnQgRlRfU2ZudF9UYWJsZV9JbmZvKCkuCisgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqRlRfU0ZOVF9UYWJsZUluZm9GdW5jKSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAqdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAqb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAqbGVuZ3RoICk7CisKKworICBGVF9ERUZJTkVfU0VSVklDRSggU0ZOVF9UYWJsZSApCisgIHsKKyAgICBGVF9TRk5UX1RhYmxlTG9hZEZ1bmMgIGxvYWRfdGFibGU7CisgICAgRlRfU0ZOVF9UYWJsZUdldEZ1bmMgICBnZXRfdGFibGU7CisgICAgRlRfU0ZOVF9UYWJsZUluZm9GdW5jICB0YWJsZV9pbmZvOworICB9OworCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9TRk5UX1RBQkxFUkVDKCBjbGFzc18sIGxvYWRfLCBnZXRfLCBpbmZvXyApICBcCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX1NGTlRfVGFibGVSZWMgIGNsYXNzXyA9ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfLCBnZXRfLCBpbmZvXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH07CisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNkZWZpbmUgRlRfREVGSU5FX1NFUlZJQ0VfU0ZOVF9UQUJMRVJFQyggY2xhc3NfLCBsb2FkXywgZ2V0XywgaW5mb18gKSBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGVF9Jbml0X0NsYXNzXyAjIyBjbGFzc18oIEZUX1NlcnZpY2VfU0ZOVF9UYWJsZVJlYyogIGNsYXp6ICkgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfdGFibGUgPSBsb2FkXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfdGFibGUgID0gZ2V0XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+dGFibGVfaW5mbyA9IGluZm9fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZTRk5UX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGNtYXAuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRjbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1NDJhYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRjbWFwLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2dHRjbWFwLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgVHJ1ZVR5cGUvc2ZudCBjbWFwIGV4dHJhIGluZm9ybWF0aW9uIHNlcnZpY2UuICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgTWFzYXRha2UgWUFNQVRPLCBSZWRoYXQgSy5LLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMywgMjAwOCwgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIERldmVsb3BtZW50IG9mIHRoaXMgc2VydmljZSBpcyBzdXBwb3J0IG9mCisgICBJbmZvcm1hdGlvbi10ZWNobm9sb2d5IFByb21vdGlvbiBBZ2VuY3ksIEphcGFuLiAqLworCisjaWZuZGVmIF9fU1ZUVENNQVBfSF9fCisjZGVmaW5lIF9fU1ZUVENNQVBfSF9fCisKKyNpbmNsdWRlICIuLi9mdHNlcnYuaCIKKyNpbmNsdWRlICIuLi8uLi90dHRhYmxlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9UVF9DTUFQICAidHQtY21hcHMiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9DTWFwSW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIHN0b3JlIFRydWVUeXBlL3NmbnQgc3BlY2lmaWMgY21hcCBpbmZvcm1hdGlvbiAgKi8KKyAgLyogICAgd2hpY2ggaXMgbm90IGNvdmVyZWQgYnkgdGhlIGdlbmVyaWMgQEZUX0NoYXJNYXAgc3RydWN0dXJlLiAgVGhpcyAgICovCisgIC8qICAgIHN0cnVjdHVyZSBjYW4gYmUgYWNjZXNzZWQgd2l0aCB0aGUgQEZUX0dldF9UVF9DTWFwX0luZm8gZnVuY3Rpb24uICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxhbmd1YWdlIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBsYW5ndWFnZSBJRCB1c2VkIGluIE1hYyBmb250cy4gIERlZmluaXRpb25zIG9mIHZhbHVlcyBhcmUgaW4gKi8KKyAgLyogICAgICBmcmVldHlwZS90dG5hbWVpZC5oLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb3JtYXQgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgY21hcCBmb3JtYXQuICBPcGVuVHlwZSAxLjUgZGVmaW5lcyB0aGUgZm9ybWF0cyAwIChieXRlICAgICAgICovCisgIC8qICAgICAgZW5jb2RpbmcgdGFibGUpLCAyfihoaWdoLWJ5dGUgbWFwcGluZyB0aHJvdWdoIHRhYmxlKSwgNH4oc2VnbWVudCAqLworICAvKiAgICAgIG1hcHBpbmcgdG8gZGVsdGEgdmFsdWVzKSwgNn4odHJpbW1lZCB0YWJsZSBtYXBwaW5nKSwgOH4obWl4ZWQgICAgKi8KKyAgLyogICAgICAxNi1iaXQgYW5kIDMyLWJpdCBjb3ZlcmFnZSksIDEwfih0cmltbWVkIGFycmF5KSwgMTJ+KHNlZ21lbnRlZCAgICovCisgIC8qICAgICAgY292ZXJhZ2UpLCBhbmQgMTQgKFVuaWNvZGUgVmFyaWF0aW9uIFNlcXVlbmNlcykuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX0NNYXBJbmZvXworICB7CisgICAgRlRfVUxvbmcgIGxhbmd1YWdlOworICAgIEZUX0xvbmcgICBmb3JtYXQ7CisKKyAgfSBUVF9DTWFwSW5mbzsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9DTWFwX0luZm9fR2V0RnVuYykoIEZUX0NoYXJNYXAgICAgY2hhcm1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUX0NNYXBJbmZvICAqY21hcF9pbmZvICk7CisKKworICBGVF9ERUZJTkVfU0VSVklDRSggVFRDTWFwcyApCisgIHsKKyAgICBUVF9DTWFwX0luZm9fR2V0RnVuYyAgZ2V0X2NtYXBfaW5mbzsKKyAgfTsKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1RUQ01BUFNSRUMoIGNsYXNzXywgZ2V0X2NtYXBfaW5mb18gKSAgXAorICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9UVENNYXBzUmVjICBjbGFzc18gPSAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2NtYXBfaW5mb18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1RUQ01BUFNSRUMoIGNsYXNzXywgZ2V0X2NtYXBfaW5mb18gKSAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgICAgICAgICBsaWJyYXJ5LCAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZV9UVENNYXBzUmVjKiAgY2xhenogKSAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfY21hcF9pbmZvID0gZ2V0X2NtYXBfaW5mb187ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fU1ZUVENNQVBfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0ZW5nLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0ZW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU2N2VmYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRlbmcuaApAQCAtMCwwICsxLDUzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdnR0ZW5nLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIFRydWVUeXBlIGVuZ2luZSBxdWVyeSBzZXJ2aWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVlRURU5HX0hfXworI2RlZmluZSBfX1NWVFRFTkdfSF9fCisKKyNpbmNsdWRlICIuLi9mdHNlcnYuaCIKKyNpbmNsdWRlICIuLi8uLi9mdG1vZGFwaS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoKKyAgICogIFNGTlQgdGFibGUgbG9hZGluZyBzZXJ2aWNlLgorICAgKi8KKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX1RSVUVUWVBFX0VOR0lORSAgInRydWV0eXBlLWVuZ2luZSIKKworICAvKgorICAgKiBVc2VkIHRvIGltcGxlbWVudCBGVF9HZXRfVHJ1ZVR5cGVfRW5naW5lX1R5cGUKKyAgICovCisKKyAgRlRfREVGSU5FX1NFUlZJQ0UoIFRydWVUeXBlRW5naW5lICkKKyAgeworICAgIEZUX1RydWVUeXBlRW5naW5lVHlwZSAgZW5naW5lX3R5cGU7CisgIH07CisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZUVEVOR19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRnbHlmLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Z2x5Zi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ODI0ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Z2x5Zi5oCkBAIC0wLDAgKzEsNjggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHN2dHRnbHlmLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgVHJ1ZVR5cGUgZ2x5cGggc2VydmljZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNywgMjAwOSwgMjAxMiBieSBEYXZpZCBUdXJuZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX1NWVFRHTFlGX0hfXworI2RlZmluZSBfX1NWVFRHTFlGX0hfXworCisjaW5jbHVkZSAiLi4vZnRzZXJ2LmgiCisjaW5jbHVkZSAiLi4vLi4vdHR0YWJsZXMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisjZGVmaW5lIEZUX1NFUlZJQ0VfSURfVFRfR0xZRiAgInR0LWdseWYiCisKKworICB0eXBlZGVmIEZUX1VMb25nCisgICgqVFRfR2x5Zl9HZXRMb2NhdGlvbkZ1bmMpKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAqcHNpemUgKTsKKworICBGVF9ERUZJTkVfU0VSVklDRSggVFRHbHlmICkKKyAgeworICAgIFRUX0dseWZfR2V0TG9jYXRpb25GdW5jICBnZXRfbG9jYXRpb247CisgIH07CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRVJWSUNFX1RUR0xZRlJFQyggY2xhc3NfLCBnZXRfbG9jYXRpb25fICkgIFwKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfVFRHbHlmUmVjICBjbGFzc18gPSAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2xvY2F0aW9uXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfTsKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2RlZmluZSBGVF9ERUZJTkVfU0VSVklDRV9UVEdMWUZSRUMoIGNsYXNzXywgZ2V0X2xvY2F0aW9uXyApICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9TZXJ2aWNlX1RUR2x5ZlJlYyogIGNsYXp6ICkgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdldF9sb2NhdGlvbiA9IGdldF9sb2NhdGlvbl87ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fU1ZUVEdMWUZfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdndpbmZudC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z3aW5mbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTNhOTkxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z3aW5mbnQuaApAQCAtMCwwICsxLDUwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdndpbmZudC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIFdpbmRvd3MgRk5UL0ZPTlQgc2VydmljZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVldJTkZOVF9IX18KKyNkZWZpbmUgX19TVldJTkZOVF9IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorI2luY2x1ZGUgIi4uLy4uL2Z0d2luZm50LmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBGVF9TRVJWSUNFX0lEX1dJTkZOVCAgIndpbmZvbnRzIgorCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpGVF9XaW5GbnRfR2V0SGVhZGVyRnVuYykoIEZUX0ZhY2UgICAgICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfV2luRk5UX0hlYWRlclJlYyAgKmFoZWFkZXIgKTsKKworCisgIEZUX0RFRklORV9TRVJWSUNFKCBXaW5GbnQgKQorICB7CisgICAgRlRfV2luRm50X0dldEhlYWRlckZ1bmMgIGdldF9oZWFkZXI7CisgIH07CisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZXSU5GTlRfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnhmODZubS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z4Zjg2bm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzFmNjNkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z4Zjg2bm0uaApAQCAtMCwwICsxLDU1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzdnhmODZubS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIFhGcmVlODYgc2VydmljZXMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19TVlhGODZOTV9IX18KKyNkZWZpbmUgX19TVlhGODZOTV9IX18KKworI2luY2x1ZGUgIi4uL2Z0c2Vydi5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoKKyAgICogIEEgdHJpdmlhbCBzZXJ2aWNlIHVzZWQgdG8gcmV0dXJuIHRoZSBuYW1lIG9mIGEgZmFjZSdzIGZvbnQgZHJpdmVyLAorICAgKiAgYWNjb3JkaW5nIHRvIHRoZSBYRnJlZTg2IG5vbWVuY2xhdHVyZS4gIE5vdGUgdGhhdCB0aGUgc2VydmljZSBkYXRhCisgICAqICBpcyBhIHNpbXBsZSBjb25zdGFudCBzdHJpbmcgcG9pbnRlci4KKyAgICovCisKKyNkZWZpbmUgRlRfU0VSVklDRV9JRF9YRjg2X05BTUUgICJ4Zjg2LWRyaXZlci1uYW1lIgorCisjZGVmaW5lIEZUX1hGODZfRk9STUFUX1RSVUVUWVBFICAiVHJ1ZVR5cGUiCisjZGVmaW5lIEZUX1hGODZfRk9STUFUX1RZUEVfMSAgICAiVHlwZSAxIgorI2RlZmluZSBGVF9YRjg2X0ZPUk1BVF9CREYgICAgICAgIkJERiIKKyNkZWZpbmUgRlRfWEY4Nl9GT1JNQVRfUENGICAgICAgICJQQ0YiCisjZGVmaW5lIEZUX1hGODZfRk9STUFUX1RZUEVfNDIgICAiVHlwZSA0MiIKKyNkZWZpbmUgRlRfWEY4Nl9GT1JNQVRfQ0lEICAgICAgICJDSUQgVHlwZSAxIgorI2RlZmluZSBGVF9YRjg2X0ZPUk1BVF9DRkYgICAgICAgIkNGRiIKKyNkZWZpbmUgRlRfWEY4Nl9GT1JNQVRfUEZSICAgICAgICJQRlIiCisjZGVmaW5lIEZUX1hGODZfRk9STUFUX1dJTkZOVCAgICAiV2luZG93cyBGTlQiCisKKyAgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fU1ZYRjg2Tk1fSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc1OWJhMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaApAQCAtMCwwICsxLDcwNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc2ZudC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEhpZ2gtbGV2ZWwgYHNmbnQnIGRyaXZlciBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDYsIDIwMDksIDIwMTItMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fU0ZOVF9IX18KKyNkZWZpbmUgX19TRk5UX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZ0ZHJpdmVyLmgiCisjaW5jbHVkZSAidHR0eXBlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfSW5pdF9GYWNlX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRmlyc3QgcGFydCBvZiB0aGUgU0ZOVCBmYWNlIG9iamVjdCBpbml0aWFsaXphdGlvbi4gIFRoaXMgZmluZHMgICAgICovCisgIC8qICAgIHRoZSBmYWNlIGluIGEgU0ZOVCBmaWxlIG9yIGNvbGxlY3Rpb24sIGFuZCBsb2FkIGl0cyBmb3JtYXQgdGFnIGluICAqLworICAvKiAgICBmYWNlLT5mb3JtYXRfdGFnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gICAgIDo6IFRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIFRydWVUeXBlIGZvbnQsIGlmIHdlIGFyZSBvcGVuaW5nIGEgICovCisgIC8qICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX3BhcmFtcyA6OiBUaGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgcGFyYW1ldGVycy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXJhbXMgICAgIDo6IE9wdGlvbmFsIGFkZGl0aW9uYWwgcGFyYW1ldGVycy4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgc3RyZWFtIGN1cnNvciBtdXN0IGJlIGF0IHRoZSBmb250IGZpbGUncyBvcmlnaW4uICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gcmVjb2duaXplcyBmb250cyBlbWJlZGRlZCBpbiBhIGBUcnVlVHlwZSAgICAgICAgICAgICAqLworICAvKiAgICBjb2xsZWN0aW9uJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE9uY2UgdGhlIGZvcm1hdCB0YWcgaGFzIGJlZW4gdmFsaWRhdGVkIGJ5IHRoZSBmb250IGRyaXZlciwgaXQgICAgICAqLworICAvKiAgICBzaG91bGQgdGhlbiBjYWxsIHRoZSBUVF9Mb2FkX0ZhY2VfRnVuYygpIGNhbGxiYWNrIHRvIHJlYWQgdGhlIHJlc3QgKi8KKyAgLyogICAgb2YgdGhlIFNGTlQgdGFibGVzIGluIHRoZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfSW5pdF9GYWNlX0Z1bmMpKCBGVF9TdHJlYW0gICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICBUVF9GYWNlICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbXMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0xvYWRfRmFjZV9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNlY29uZCBwYXJ0IG9mIHRoZSBTRk5UIGZhY2Ugb2JqZWN0IGluaXRpYWxpemF0aW9uLiAgVGhpcyBsb2FkcyAgICAqLworICAvKiAgICB0aGUgY29tbW9uIFNGTlQgdGFibGVzIChoZWFkLCBPUy8yLCBtYXhwLCBtZXRyaWNzLCBldGMuKSBpbiB0aGUgICAgKi8KKyAgLyogICAgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgICA6OiBUaGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2VfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBUcnVlVHlwZSBmb250LCBpZiB3ZSBhcmUgb3BlbmluZyBhICAqLworICAvKiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9wYXJhbXMgOjogVGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhcmFtZXRlcnMuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGFyYW1zICAgICA6OiBPcHRpb25hbCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBhZnRlciBUVF9Jbml0X0ZhY2VfRnVuYygpLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfTG9hZF9GYWNlX0Z1bmMpKCBGVF9TdHJlYW0gICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICBUVF9GYWNlICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbXMgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0RvbmVfRmFjZV9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgY2FsbGJhY2sgdXNlZCB0byBkZWxldGUgdGhlIGNvbW1vbiBTRk5UIGRhdGEgZnJvbSBhIGZhY2UuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBOT1QgZGVzdHJveSB0aGUgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqVFRfRG9uZV9GYWNlX0Z1bmMpKCBUVF9GYWNlICBmYWNlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Mb2FkX0FueV9GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkIGFueSBmb250IHRhYmxlIGludG8gY2xpZW50IG1lbW9yeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogVGhlIGZhY2Ugb2JqZWN0IHRvIGxvb2sgZm9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhZyAgICA6OiBUaGUgdGFnIG9mIHRhYmxlIHRvIGxvYWQuICBVc2UgdGhlIHZhbHVlIDAgaWYgeW91IHdhbnQgICAqLworICAvKiAgICAgICAgICAgICAgdG8gYWNjZXNzIHRoZSB3aG9sZSBmb250IGZpbGUsIGVsc2Ugc2V0IHRoaXMgcGFyYW1ldGVyICAgKi8KKyAgLyogICAgICAgICAgICAgIHRvIGEgdmFsaWQgVHJ1ZVR5cGUgdGFibGUgdGFnIHRoYXQgeW91IGNhbiBmb3JnZSB3aXRoICAgICovCisgIC8qICAgICAgICAgICAgICB0aGUgTUFLRV9UVF9UQUcgbWFjcm8uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb2Zmc2V0IDo6IFRoZSBzdGFydGluZyBvZmZzZXQgaW4gdGhlIHRhYmxlIChvciB0aGUgZmlsZSBpZiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICB0YWcgPT0gMCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGVuZ3RoIDo6IFRoZSBhZGRyZXNzIG9mIHRoZSBkZWNpc2lvbiB2YXJpYWJsZTogICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICBJZiBsZW5ndGggPT0gTlVMTDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBMb2FkcyB0aGUgd2hvbGUgdGFibGUuICBSZXR1cm5zIGFuIGVycm9yIGlmICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgYG9mZnNldCcgPT0gMCEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgSWYgKmxlbmd0aCA9PSAwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgRXhpdHMgaW1tZWRpYXRlbHk7IHJldHVybmluZyB0aGUgbGVuZ3RoIG9mIHRoZSBnaXZlbiAqLworICAvKiAgICAgICAgICAgICAgICAgIHRhYmxlIG9yIG9mIHRoZSBmb250IGZpbGUsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgKi8KKyAgLyogICAgICAgICAgICAgICAgICBgdGFnJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICBJZiAqbGVuZ3RoICE9IDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBMb2FkcyB0aGUgbmV4dCBgbGVuZ3RoJyBieXRlcyBvZiB0YWJsZSBvciBmb250LCAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgc3RhcnRpbmcgYXQgb2Zmc2V0IGBvZmZzZXQnIChpbiB0YWJsZSBvciBmb250IHRvbykuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJ1ZmZlciA6OiBUaGUgYWRkcmVzcyBvZiB0YXJnZXQgYnVmZmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRydWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0xvYWRfQW55X0Z1bmMpKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgdGFnLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSAgICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgbGVuZ3RoICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9GaW5kX1NCaXRfSW1hZ2VfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDaGVjayB3aGV0aGVyIGFuIGVtYmVkZGVkIGJpdG1hcCAoYW4gYHNiaXQnKSBleGlzdHMgZm9yIGEgZ2l2ZW4gICAgKi8KKyAgLyogICAgZ2x5cGgsIGF0IGEgZ2l2ZW4gc3RyaWtlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgICA6OiBUaGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9pbmRleCAgIDo6IFRoZSBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmlrZV9pbmRleCAgOjogVGhlIGN1cnJlbnQgc3RyaWtlIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFyYW5nZSAgICAgICAgOjogVGhlIFNCaXQgcmFuZ2UgY29udGFpbmluZyB0aGUgZ2x5cGggaW5kZXguICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYXN0cmlrZSAgICAgICA6OiBUaGUgU0JpdCBzdHJpa2UgY29udGFpbmluZyB0aGUgZ2x5cGggaW5kZXguICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZ2x5cGhfb2Zmc2V0IDo6IFRoZSBvZmZzZXQgb2YgdGhlIGdseXBoIGRhdGEgaW4gYEVCRFQnIHRhYmxlLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgUmV0dXJucyAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU0ZOVF9FcnJfSW52YWxpZF9Bcmd1bWVudCBpZiBubyBzYml0IGV4aXN0cyBmb3IgdGhlIHJlcXVlc3RlZCAgICAgICovCisgIC8qICAgIGdseXBoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0ZpbmRfU0JpdF9JbWFnZV9GdW5jKSggVFRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAgc3RyaWtlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfU0JpdF9SYW5nZSAgICphcmFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVF9TQml0X1N0cmlrZSAgKmFzdHJpa2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgKmFnbHlwaF9vZmZzZXQgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0xvYWRfU0JpdF9NZXRyaWNzX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEdldCB0aGUgYmlnIG1ldHJpY3MgZm9yIGEgZ2l2ZW4gZW1iZWRkZWQgYml0bWFwLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSAgICAgIDo6IFRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmFuZ2UgICAgICAgOjogVGhlIFNCaXQgcmFuZ2UgY29udGFpbmluZyB0aGUgZ2x5cGguICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmlnX21ldHJpY3MgOjogQSBiaWcgU0JpdCBtZXRyaWNzIHN0cnVjdHVyZSBmb3IgdGhlIGdseXBoLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIHN0cmVhbSBjdXJzb3IgbXVzdCBiZSBwb3NpdGlvbmVkIGF0IHRoZSBnbHlwaCdzIG9mZnNldCB3aXRoaW4gICovCisgIC8qICAgIHRoZSBgRUJEVCcgdGFibGUgYmVmb3JlIHRoZSBjYWxsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSWYgdGhlIGltYWdlIGZvcm1hdCB1c2VzIHZhcmlhYmxlIG1ldHJpY3MsIHRoZSBzdHJlYW0gY3Vyc29yIGlzICAgICovCisgIC8qICAgIHBvc2l0aW9uZWQganVzdCBhZnRlciB0aGUgbWV0cmljcyBoZWFkZXIgaW4gdGhlIGBFQkRUJyB0YWJsZSBvbiAgICAqLworICAvKiAgICBmdW5jdGlvbiBleGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9Mb2FkX1NCaXRfTWV0cmljc19GdW5jKSggRlRfU3RyZWFtICAgICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUX1NCaXRfUmFuZ2UgICAgcmFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUX1NCaXRfTWV0cmljcyAgbWV0cmljcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZF9TQml0X0ltYWdlX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZCBhIGdpdmVuIGdseXBoIHNiaXQgaW1hZ2UgZnJvbSB0aGUgZm9udCByZXNvdXJjZS4gIFRoaXMgYWxzbyAgICovCisgIC8qICAgIHJldHVybnMgaXRzIG1ldHJpY3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmlrZV9pbmRleCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBzdHJpa2UgaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX2luZGV4IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBjdXJyZW50IGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRfZmxhZ3MgOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBjdXJyZW50IGxvYWQgZmxhZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhbWFwIDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBUaGUgdGFyZ2V0IHBpeG1hcC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhbWV0cmljcyA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBBIGJpZyBzYml0IG1ldHJpY3Mgc3RydWN0dXJlIGZvciB0aGUgZ2x5cGggaW1hZ2UuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gIFJldHVybnMgYW4gZXJyb3IgaWYgbm8gICAgICovCisgIC8qICAgIGdseXBoIHNiaXQgZXhpc3RzIGZvciB0aGUgaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBgbWFwLmJ1ZmZlcicgZmllbGQgaXMgYWx3YXlzIGZyZWVkIGJlZm9yZSB0aGUgZ2x5cGggaXMgbG9hZGVkLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0xvYWRfU0JpdF9JbWFnZV9GdW5jKSggVFRfRmFjZSAgICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAgICAgIHN0cmlrZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgICAgICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JpdG1hcCAgICAgICAgICAgKmFtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVF9TQml0X01ldHJpY3NSZWMgICphbWV0cmljcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfU2V0X1NCaXRfU3RyaWtlX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2VsZWN0IGFuIHNiaXQgc3RyaWtlIGZvciBhIGdpdmVuIHNpemUgcmVxdWVzdC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgICA6OiBUaGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZXEgICAgICAgICAgIDo6IFRoZSBzaXplIHJlcXVlc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhc3RyaWtlX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgc2JpdCBzdHJpa2UuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgUmV0dXJucyBhbiBlcnJvciBpZiBubyAgICAgKi8KKyAgLyogICAgc2JpdCBzdHJpa2UgZXhpc3RzIGZvciB0aGUgc2VsZWN0ZWQgcHBlbSB2YWx1ZXMuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfU2V0X1NCaXRfU3RyaWtlX0Z1bmMpKCBUVF9GYWNlICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TaXplX1JlcXVlc3QgIHJlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgICAgICAgYXN0cmlrZV9pbmRleCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZF9TdHJpa2VfTWV0cmljc19GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZCB0aGUgbWV0cmljcyBvZiBhIGdpdmVuIHN0cmlrZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgICA6OiBUaGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJpa2VfaW5kZXggIDo6IFRoZSBzdHJpa2UgaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZXRyaWNzICAgICAgIDo6IHRoZSBtZXRyaWNzIG9mIHRoZSBzdHJpa2UuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgUmV0dXJucyBhbiBlcnJvciBpZiBubyAgICAgKi8KKyAgLyogICAgc3VjaCBzYml0IHN0cmlrZSBleGlzdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfTG9hZF9TdHJpa2VfTWV0cmljc19GdW5jKSggVFRfRmFjZSAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgICBzdHJpa2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9NZXRyaWNzKiAgbWV0cmljcyApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfR2V0X1BTX05hbWVfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR2V0IHRoZSBQb3N0U2NyaXB0IGdseXBoIG5hbWUgb2YgYSBnbHlwaC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaWR4ICA6OiBUaGUgZ2x5cGggaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQU25hbWUgOjogVGhlIGFkZHJlc3Mgb2YgYSBzdHJpbmcgcG9pbnRlci4gIFdpbGwgYmUgTlVMTCBpbiBjYXNlICAgKi8KKyAgLyogICAgICAgICAgICAgIG9mIGVycm9yLCBvdGhlcndpc2UgaXQgaXMgYSBwb2ludGVyIHRvIHRoZSBnbHlwaCBuYW1lLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgWW91IG11c3Qgbm90IG1vZGlmeSB0aGUgcmV0dXJuZWQgc3RyaW5nISAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9HZXRfUFNfTmFtZV9GdW5jKSggVFRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmluZyoqICBQU25hbWUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0xvYWRfTWV0cmljc19GdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvYWQgYSBtZXRyaWNzIHRhYmxlLCB3aGljaCBpcyBhIHRhYmxlIHdpdGggYSBob3Jpem9udGFsIGFuZCBhICAgICAqLworICAvKiAgICB2ZXJ0aWNhbCB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSAgIDo6IFRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVydGljYWwgOjogQSBib29sZWFuIGZsYWcuICBJZiBzZXQsIGxvYWQgdGhlIHZlcnRpY2FsIG9uZS4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfTG9hZF9NZXRyaWNzX0Z1bmMpKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgdmVydGljYWwgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0dldF9NZXRyaWNzX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvYWQgdGhlIGhvcml6b250YWwgb3IgdmVydGljYWwgaGVhZGVyIGluIGEgZmFjZSBvYmplY3QuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgOjogVGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJ0aWNhbCA6OiBBIGJvb2xlYW4gZmxhZy4gIElmIHNldCwgbG9hZCB2ZXJ0aWNhbCBtZXRyaWNzLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9HZXRfTWV0cmljc19GdW5jKSggVFRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgdmVydGljYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2hvcnQqICAgYWJlYXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VTaG9ydCogIGFhZHZhbmNlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jVHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Mb2FkX1RhYmxlX0Z1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkIGEgZ2l2ZW4gVHJ1ZVR5cGUgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiBUaGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBmdW5jdGlvbiB1c2VzIGBmYWNlLT5nb3RvX3RhYmxlJyB0byBzZWVrIHRoZSBzdHJlYW0gdG8gdGhlICAgICAqLworICAvKiAgICBzdGFydCBvZiB0aGUgdGFibGUsIGV4Y2VwdCB3aGlsZSBsb2FkaW5nIHRoZSBmb250IGRpcmVjdG9yeS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9Mb2FkX1RhYmxlX0Z1bmMpKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0ZyZWVfVGFibGVfRnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWUgYSBnaXZlbiBUcnVlVHlwZSB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqVFRfRnJlZV9UYWJsZV9GdW5jKSggVFRfRmFjZSAgZmFjZSApOworCisKKyAgLyoKKyAgICogQGZ1bmN0eXBlOgorICAgKiAgICBUVF9GYWNlX0dldEtlcm5pbmdGdW5jCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICAgUmV0dXJuIHRoZSBob3Jpem9udGFsIGtlcm5pbmcgdmFsdWUgYmV0d2VlbiB0d28gZ2x5cGhzLgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgIGZhY2UgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuCisgICAqICAgIGxlZnRfZ2x5cGggIDo6IFRoZSBsZWZ0IGdseXBoIGluZGV4LgorICAgKiAgICByaWdodF9nbHlwaCA6OiBUaGUgcmlnaHQgZ2x5cGggaW5kZXguCisgICAqCisgICAqIEByZXR1cm46CisgICAqICAgIFRoZSBrZXJuaW5nIHZhbHVlIGluIGZvbnQgdW5pdHMuCisgICAqLworICB0eXBlZGVmIEZUX0ludAorICAoKlRUX0ZhY2VfR2V0S2VybmluZ0Z1bmMpKCBUVF9GYWNlICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBsZWZ0X2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICByaWdodF9nbHlwaCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU0ZOVF9JbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgcG9pbnRlcnMgdG8gdGhlIGZ1bmN0aW9ucyB1c2VkIHRvIGxvYWQgYW5kICAgICovCisgIC8qICAgIGZyZWUgdGhlIGJhc2ljIHRhYmxlcyB0aGF0IGFyZSByZXF1aXJlZCBpbiBhIGBzZm50JyBmb250IGZpbGUuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENoZWNrIHRoZSB2YXJpb3VzIHh4eF9GdW5jKCkgZGVzY3JpcHRpb25zIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFNGTlRfSW50ZXJmYWNlXworICB7CisgICAgVFRfTG9hZGVyX0dvdG9UYWJsZUZ1bmMgICAgICBnb3RvX3RhYmxlOworCisgICAgVFRfSW5pdF9GYWNlX0Z1bmMgICAgICAgICAgICBpbml0X2ZhY2U7CisgICAgVFRfTG9hZF9GYWNlX0Z1bmMgICAgICAgICAgICBsb2FkX2ZhY2U7CisgICAgVFRfRG9uZV9GYWNlX0Z1bmMgICAgICAgICAgICBkb25lX2ZhY2U7CisgICAgRlRfTW9kdWxlX1JlcXVlc3RlciAgICAgICAgICBnZXRfaW50ZXJmYWNlOworCisgICAgVFRfTG9hZF9BbnlfRnVuYyAgICAgICAgICAgICBsb2FkX2FueTsKKworICAgIC8qIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGJ5IGBsb2FkX2ZhY2UnIGJ1dCB0aGV5IGNhbiBhbHNvICAqLworICAgIC8qIGJlIGNhbGxlZCBmcm9tIGV4dGVybmFsIG1vZHVsZXMsIGlmIHRoZXJlIGlzIGEgbmVlZCB0byBkbyBzbyAqLworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgbG9hZF9oZWFkOworICAgIFRUX0xvYWRfTWV0cmljc19GdW5jICAgICAgICAgbG9hZF9oaGVhOworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgbG9hZF9jbWFwOworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgbG9hZF9tYXhwOworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgbG9hZF9vczI7CisgICAgVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgICAgICBsb2FkX3Bvc3Q7CisKKyAgICBUVF9Mb2FkX1RhYmxlX0Z1bmMgICAgICAgICAgIGxvYWRfbmFtZTsKKyAgICBUVF9GcmVlX1RhYmxlX0Z1bmMgICAgICAgICAgIGZyZWVfbmFtZTsKKworICAgIC8qIHRoaXMgZmllbGQgd2FzIGNhbGxlZCBgbG9hZF9rZXJuaW5nJyB1cCB0byB2ZXJzaW9uIDIuMS4xMCAqLworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgbG9hZF9rZXJuOworCisgICAgVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgICAgICBsb2FkX2dhc3A7CisgICAgVFRfTG9hZF9UYWJsZV9GdW5jICAgICAgICAgICBsb2FkX3BjbHQ7CisKKyAgICAvKiBzZWUgYHR0bG9hZC5oJzsgdGhpcyBmaWVsZCB3YXMgY2FsbGVkIGBsb2FkX2JpdG1hcF9oZWFkZXInIHVwIHRvICovCisgICAgLyogdmVyc2lvbiAyLjEuMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIFRUX0xvYWRfVGFibGVfRnVuYyAgICAgICAgICAgbG9hZF9iaGVkOworCisgICAgVFRfTG9hZF9TQml0X0ltYWdlX0Z1bmMgICAgICBsb2FkX3NiaXRfaW1hZ2U7CisKKyAgICAvKiBzZWUgYHR0cG9zdC5oJyAqLworICAgIFRUX0dldF9QU19OYW1lX0Z1bmMgICAgICAgICAgZ2V0X3BzbmFtZTsKKyAgICBUVF9GcmVlX1RhYmxlX0Z1bmMgICAgICAgICAgIGZyZWVfcHNuYW1lczsKKworICAgIC8qIHN0YXJ0aW5nIGhlcmUsIHRoZSBzdHJ1Y3R1cmUgZGlmZmVycyBmcm9tIHZlcnNpb24gMi4xLjcgKi8KKworICAgIC8qIHRoaXMgZmllbGQgd2FzIGludHJvZHVjZWQgaW4gdmVyc2lvbiAyLjEuOCwgbmFtZWQgYGdldF9wc25hbWUnICovCisgICAgVFRfRmFjZV9HZXRLZXJuaW5nRnVuYyAgICAgICBnZXRfa2VybmluZzsKKworICAgIC8qIG5ldyBlbGVtZW50cyBpbnRyb2R1Y2VkIGFmdGVyIHZlcnNpb24gMi4xLjEwICovCisKKyAgICAvKiBsb2FkIHRoZSBmb250IGRpcmVjdG9yeSwgaS5lLiwgdGhlIG9mZnNldCB0YWJsZSBhbmQgKi8KKyAgICAvKiB0aGUgdGFibGUgZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBUVF9Mb2FkX1RhYmxlX0Z1bmMgICAgICAgICAgIGxvYWRfZm9udF9kaXI7CisgICAgVFRfTG9hZF9NZXRyaWNzX0Z1bmMgICAgICAgICBsb2FkX2htdHg7CisKKyAgICBUVF9Mb2FkX1RhYmxlX0Z1bmMgICAgICAgICAgIGxvYWRfZWJsYzsKKyAgICBUVF9GcmVlX1RhYmxlX0Z1bmMgICAgICAgICAgIGZyZWVfZWJsYzsKKworICAgIFRUX1NldF9TQml0X1N0cmlrZV9GdW5jICAgICAgc2V0X3NiaXRfc3RyaWtlOworICAgIFRUX0xvYWRfU3RyaWtlX01ldHJpY3NfRnVuYyAgbG9hZF9zdHJpa2VfbWV0cmljczsKKworICAgIFRUX0dldF9NZXRyaWNzX0Z1bmMgICAgICAgICAgZ2V0X21ldHJpY3M7CisKKyAgfSBTRk5UX0ludGVyZmFjZTsKKworCisgIC8qIHRyYW5zaXRpb25hbCAqLworICB0eXBlZGVmIFNGTlRfSW50ZXJmYWNlKiAgIFNGTlRfU2VydmljZTsKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9TRk5UX0lOVEVSRkFDRSggICAgICAgIFwKKyAgICAgICAgICBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdvdG9fdGFibGVfLCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaW5pdF9mYWNlXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2ZhY2VfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGRvbmVfZmFjZV8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X2ludGVyZmFjZV8sICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2FueV8sICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfaGVhZF8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9oaGVhXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2NtYXBfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfbWF4cF8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9vczJfLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX3Bvc3RfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfbmFtZV8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZnJlZV9uYW1lXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2tlcm5fLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfZ2FzcF8sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9wY2x0XywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2JoZWRfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfc2JpdF9pbWFnZV8sICAgICAgICAgICAgICBcCisgICAgICAgICAgZ2V0X3BzbmFtZV8sICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmcmVlX3BzbmFtZXNfLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9rZXJuaW5nXywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9mb250X2Rpcl8sICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2htdHhfLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfZWJsY18sICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZnJlZV9lYmxjXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBzZXRfc2JpdF9zdHJpa2VfLCAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfc3RyaWtlX21ldHJpY3NfLCAgICAgICAgICBcCisgICAgICAgICAgZ2V0X21ldHJpY3NfICkgICAgICAgICAgICAgICAgIFwKKyAgc3RhdGljIGNvbnN0IFNGTlRfSW50ZXJmYWNlICBjbGFzc18gPSAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ290b190YWJsZV8sICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbml0X2ZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG9uZV9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfaW50ZXJmYWNlXywgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfYW55XywgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9oZWFkXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX2hoZWFfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfY21hcF8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9tYXhwXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX29zMl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfcG9zdF8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9uYW1lXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBmcmVlX25hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfa2Vybl8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9nYXNwXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX3BjbHRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfYmhlZF8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9zYml0X2ltYWdlXywgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfcHNuYW1lXywgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZyZWVfcHNuYW1lc18sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2tlcm5pbmdfLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsb2FkX2ZvbnRfZGlyXywgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGxvYWRfaG10eF8sICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9lYmxjXywgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBmcmVlX2VibGNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNldF9zYml0X3N0cmlrZV8sICAgICAgICAgICAgICAgICAgICBcCisgICAgbG9hZF9zdHJpa2VfbWV0cmljc18sICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfbWV0cmljc18sICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0lOVEVSTkFMKCBhLCBhXyApICBcCisgICAgICAgICAgY2xhenotPmEgPSBhXzsKKworI2RlZmluZSBGVF9ERUZJTkVfU0ZOVF9JTlRFUkZBQ0UoICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhc3NfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnb3RvX3RhYmxlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGluaXRfZmFjZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9mYWNlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkb25lX2ZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9pbnRlcmZhY2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9hbnlfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2hlYWRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfaGhlYV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9jbWFwXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX21heHBfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfb3MyXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9wb3N0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX25hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZyZWVfbmFtZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9rZXJuXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2dhc3BfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfcGNsdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9iaGVkXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX3NiaXRfaW1hZ2VfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9wc25hbWVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZnJlZV9wc25hbWVzXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnZXRfa2VybmluZ18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGxvYWRfZm9udF9kaXJfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgbG9hZF9obXR4XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX2VibGNfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZyZWVfZWJsY18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgc2V0X3NiaXRfc3RyaWtlXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBsb2FkX3N0cmlrZV9tZXRyaWNzXywgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdldF9tZXRyaWNzXyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRlRfSW5pdF9DbGFzc18gIyMgY2xhc3NfKCBGVF9MaWJyYXJ5ICAgICAgIGxpYnJhcnksICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNGTlRfSW50ZXJmYWNlKiAgY2xhenogKSAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhenotPmdvdG9fdGFibGUgICAgICAgICAgPSBnb3RvX3RhYmxlXzsgICAgICAgICAgIFwKKyAgICBjbGF6ei0+aW5pdF9mYWNlICAgICAgICAgICA9IGluaXRfZmFjZV87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX2ZhY2UgICAgICAgICAgID0gbG9hZF9mYWNlXzsgICAgICAgICAgICBcCisgICAgY2xhenotPmRvbmVfZmFjZSAgICAgICAgICAgPSBkb25lX2ZhY2VfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X2ludGVyZmFjZSAgICAgICA9IGdldF9pbnRlcmZhY2VfOyAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX2FueSAgICAgICAgICAgID0gbG9hZF9hbnlfOyAgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfaGVhZCAgICAgICAgICAgPSBsb2FkX2hlYWRfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9oaGVhICAgICAgICAgICA9IGxvYWRfaGhlYV87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX2NtYXAgICAgICAgICAgID0gbG9hZF9jbWFwXzsgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfbWF4cCAgICAgICAgICAgPSBsb2FkX21heHBfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9vczIgICAgICAgICAgICA9IGxvYWRfb3MyXzsgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX3Bvc3QgICAgICAgICAgID0gbG9hZF9wb3N0XzsgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfbmFtZSAgICAgICAgICAgPSBsb2FkX25hbWVfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZnJlZV9uYW1lICAgICAgICAgICA9IGZyZWVfbmFtZV87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX2tlcm4gICAgICAgICAgID0gbG9hZF9rZXJuXzsgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfZ2FzcCAgICAgICAgICAgPSBsb2FkX2dhc3BfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9wY2x0ICAgICAgICAgICA9IGxvYWRfcGNsdF87ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX2JoZWQgICAgICAgICAgID0gbG9hZF9iaGVkXzsgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfc2JpdF9pbWFnZSAgICAgPSBsb2FkX3NiaXRfaW1hZ2VfOyAgICAgIFwKKyAgICBjbGF6ei0+Z2V0X3BzbmFtZSAgICAgICAgICA9IGdldF9wc25hbWVfOyAgICAgICAgICAgXAorICAgIGNsYXp6LT5mcmVlX3BzbmFtZXMgICAgICAgID0gZnJlZV9wc25hbWVzXzsgICAgICAgICBcCisgICAgY2xhenotPmdldF9rZXJuaW5nICAgICAgICAgPSBnZXRfa2VybmluZ187ICAgICAgICAgIFwKKyAgICBjbGF6ei0+bG9hZF9mb250X2RpciAgICAgICA9IGxvYWRfZm9udF9kaXJfOyAgICAgICAgXAorICAgIGNsYXp6LT5sb2FkX2htdHggICAgICAgICAgID0gbG9hZF9obXR4XzsgICAgICAgICAgICBcCisgICAgY2xhenotPmxvYWRfZWJsYyAgICAgICAgICAgPSBsb2FkX2VibGNfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+ZnJlZV9lYmxjICAgICAgICAgICA9IGZyZWVfZWJsY187ICAgICAgICAgICAgXAorICAgIGNsYXp6LT5zZXRfc2JpdF9zdHJpa2UgICAgID0gc2V0X3NiaXRfc3RyaWtlXzsgICAgICBcCisgICAgY2xhenotPmxvYWRfc3RyaWtlX21ldHJpY3MgPSBsb2FkX3N0cmlrZV9tZXRyaWNzXzsgIFwKKyAgICBjbGF6ei0+Z2V0X21ldHJpY3MgICAgICAgICA9IGdldF9tZXRyaWNzXzsgICAgICAgICAgXAorICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1NGTlRfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZkZWVjOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaApAQCAtMCwwICsxLDI1NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdDF0eXBlcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEJhc2ljIFR5cGUxL1R5cGUyIHR5cGUgZGVmaW5pdGlvbnMgYW5kIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbiAgICAgICovCisvKiAgICBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA0LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1QxVFlQRVNfSF9fCisjZGVmaW5lIF9fVDFUWVBFU19IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi90MXRhYmxlcy5oIgorI2luY2x1ZGUgInBzaGludHMuaCIKKyNpbmNsdWRlICJmdHNlcnYuaCIKKyNpbmNsdWRlICJzZXJ2aWNlcy9zdnBzY21hcC5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICBSRVFVSVJFRCBUWVBFMS9UWVBFMiBUQUJMRVMgREVGSU5JVElPTlMgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVDFfRW5jb2RpbmdSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgbW9kZWxpbmcgYSBjdXN0b20gZW5jb2RpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2NoYXJzICA6OiBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlciBjb2RlcyBpbiB0aGUgZW5jb2RpbmcuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgVXN1YWxseSAyNTYuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29kZV9maXJzdCA6OiBUaGUgbG93ZXN0IHZhbGlkIGNoYXJhY3RlciBjb2RlIGluIHRoZSBlbmNvZGluZy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb2RlX2xhc3QgIDo6IFRoZSBoaWdoZXN0IHZhbGlkIGNoYXJhY3RlciBjb2RlIGluIHRoZSBlbmNvZGluZyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICArIDEuIFdoZW4gZXF1YWwgdG8gY29kZV9maXJzdCB0aGVyZSBhcmUgbm8gdmFsaWQgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIGNvZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2hhcl9pbmRleCA6OiBBbiBhcnJheSBvZiBjb3JyZXNwb25kaW5nIGdseXBoIGluZGljZXMuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFyX25hbWUgIDo6IEFuIGFycmF5IG9mIGNvcnJlc3BvbmRpbmcgZ2x5cGggbmFtZXMuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUMV9FbmNvZGluZ1JlY1JlY18KKyAgeworICAgIEZUX0ludCAgICAgICBudW1fY2hhcnM7CisgICAgRlRfSW50ICAgICAgIGNvZGVfZmlyc3Q7CisgICAgRlRfSW50ICAgICAgIGNvZGVfbGFzdDsKKworICAgIEZUX1VTaG9ydCogICBjaGFyX2luZGV4OworICAgIEZUX1N0cmluZyoqICBjaGFyX25hbWU7CisKKyAgfSBUMV9FbmNvZGluZ1JlYywgKlQxX0VuY29kaW5nOworCisKKyAgLyogdXNlZCB0byBob2xkIGV4dHJhIGRhdGEgb2YgUFNfRm9udEluZm9SZWMgdGhhdAorICAgKiBjYW5ub3QgYmUgc3RvcmVkIGluIHRoZSBwdWJsaWNseSBkZWZpbmVkIHN0cnVjdHVyZS4KKyAgICoKKyAgICogTm90ZSB0aGVzZSBjYW4ndCBiZSBibGVuZGVkIHdpdGggbXVsdGlwbGUtbWFzdGVycy4KKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19Gb250RXh0cmFSZWNfCisgIHsKKyAgICBGVF9VU2hvcnQgIGZzX3R5cGU7CisKKyAgfSBQU19Gb250RXh0cmFSZWM7CisKKworICB0eXBlZGVmIHN0cnVjdCAgVDFfRm9udFJlY18KKyAgeworICAgIFBTX0ZvbnRJbmZvUmVjICAgZm9udF9pbmZvOyAgICAgICAgIC8qIGZvbnQgaW5mbyBkaWN0aW9uYXJ5ICAgKi8KKyAgICBQU19Gb250RXh0cmFSZWMgIGZvbnRfZXh0cmE7ICAgICAgICAvKiBmb250IGluZm8gZXh0cmEgZmllbGRzICovCisgICAgUFNfUHJpdmF0ZVJlYyAgICBwcml2YXRlX2RpY3Q7ICAgICAgLyogcHJpdmF0ZSBkaWN0aW9uYXJ5ICAgICAqLworICAgIEZUX1N0cmluZyogICAgICAgZm9udF9uYW1lOyAgICAgICAgIC8qIHRvcC1sZXZlbCBkaWN0aW9uYXJ5ICAgKi8KKworICAgIFQxX0VuY29kaW5nVHlwZSAgZW5jb2RpbmdfdHlwZTsKKyAgICBUMV9FbmNvZGluZ1JlYyAgIGVuY29kaW5nOworCisgICAgRlRfQnl0ZSogICAgICAgICBzdWJyc19ibG9jazsKKyAgICBGVF9CeXRlKiAgICAgICAgIGNoYXJzdHJpbmdzX2Jsb2NrOworICAgIEZUX0J5dGUqICAgICAgICAgZ2x5cGhfbmFtZXNfYmxvY2s7CisKKyAgICBGVF9JbnQgICAgICAgICAgIG51bV9zdWJyczsKKyAgICBGVF9CeXRlKiogICAgICAgIHN1YnJzOworICAgIEZUX1B0ckRpc3QqICAgICAgc3VicnNfbGVuOworCisgICAgRlRfSW50ICAgICAgICAgICBudW1fZ2x5cGhzOworICAgIEZUX1N0cmluZyoqICAgICAgZ2x5cGhfbmFtZXM7ICAgICAgIC8qIGFycmF5IG9mIGdseXBoIG5hbWVzICAgICAgICovCisgICAgRlRfQnl0ZSoqICAgICAgICBjaGFyc3RyaW5nczsgICAgICAgLyogYXJyYXkgb2YgZ2x5cGggY2hhcnN0cmluZ3MgKi8KKyAgICBGVF9QdHJEaXN0KiAgICAgIGNoYXJzdHJpbmdzX2xlbjsKKworICAgIEZUX0J5dGUgICAgICAgICAgcGFpbnRfdHlwZTsKKyAgICBGVF9CeXRlICAgICAgICAgIGZvbnRfdHlwZTsKKyAgICBGVF9NYXRyaXggICAgICAgIGZvbnRfbWF0cml4OworICAgIEZUX1ZlY3RvciAgICAgICAgZm9udF9vZmZzZXQ7CisgICAgRlRfQkJveCAgICAgICAgICBmb250X2Jib3g7CisgICAgRlRfTG9uZyAgICAgICAgICBmb250X2lkOworCisgICAgRlRfRml4ZWQgICAgICAgICBzdHJva2Vfd2lkdGg7CisKKyAgfSBUMV9Gb250UmVjLCAqVDFfRm9udDsKKworCisgIHR5cGVkZWYgc3RydWN0ICBDSURfU3VicnNSZWNfCisgIHsKKyAgICBGVF9VSW50ICAgIG51bV9zdWJyczsKKyAgICBGVF9CeXRlKiogIGNvZGU7CisKKyAgfSBDSURfU3VicnNSZWMsICpDSURfU3VicnM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgQUZNIEZPTlQgSU5GT1JNQVRJT04gU1RSVUNUVVJFUyAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEFGTV9UcmFja0tlcm5SZWNfCisgIHsKKyAgICBGVF9JbnQgICAgZGVncmVlOworICAgIEZUX0ZpeGVkICBtaW5fcHRzaXplOworICAgIEZUX0ZpeGVkICBtaW5fa2VybjsKKyAgICBGVF9GaXhlZCAgbWF4X3B0c2l6ZTsKKyAgICBGVF9GaXhlZCAgbWF4X2tlcm47CisKKyAgfSBBRk1fVHJhY2tLZXJuUmVjLCAqQUZNX1RyYWNrS2VybjsKKworICB0eXBlZGVmIHN0cnVjdCAgQUZNX0tlcm5QYWlyUmVjXworICB7CisgICAgRlRfSW50ICBpbmRleDE7CisgICAgRlRfSW50ICBpbmRleDI7CisgICAgRlRfSW50ICB4OworICAgIEZUX0ludCAgeTsKKworICB9IEFGTV9LZXJuUGFpclJlYywgKkFGTV9LZXJuUGFpcjsKKworICB0eXBlZGVmIHN0cnVjdCAgQUZNX0ZvbnRJbmZvUmVjXworICB7CisgICAgRlRfQm9vbCAgICAgICAgSXNDSURGb250OworICAgIEZUX0JCb3ggICAgICAgIEZvbnRCQm94OworICAgIEZUX0ZpeGVkICAgICAgIEFzY2VuZGVyOworICAgIEZUX0ZpeGVkICAgICAgIERlc2NlbmRlcjsKKyAgICBBRk1fVHJhY2tLZXJuICBUcmFja0tlcm5zOyAgIC8qIGZyZWUgaWYgbm9uLU5VTEwgKi8KKyAgICBGVF9JbnQgICAgICAgICBOdW1UcmFja0tlcm47CisgICAgQUZNX0tlcm5QYWlyICAgS2VyblBhaXJzOyAgICAvKiBmcmVlIGlmIG5vbi1OVUxMICovCisgICAgRlRfSW50ICAgICAgICAgTnVtS2VyblBhaXI7CisKKyAgfSBBRk1fRm9udEluZm9SZWMsICpBRk1fRm9udEluZm87CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgT1JJR0lOQUwgVDFfRkFDRSBDTEFTUyBERUZJTklUSU9OICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICB0eXBlZGVmIHN0cnVjdCBUMV9GYWNlUmVjXyogICBUMV9GYWNlOworICB0eXBlZGVmIHN0cnVjdCBDSURfRmFjZVJlY18qICBDSURfRmFjZTsKKworCisgIHR5cGVkZWYgc3RydWN0ICBUMV9GYWNlUmVjXworICB7CisgICAgRlRfRmFjZVJlYyAgICAgIHJvb3Q7CisgICAgVDFfRm9udFJlYyAgICAgIHR5cGUxOworICAgIGNvbnN0IHZvaWQqICAgICBwc25hbWVzOworICAgIGNvbnN0IHZvaWQqICAgICBwc2F1eDsKKyAgICBjb25zdCB2b2lkKiAgICAgYWZtX2RhdGE7CisgICAgRlRfQ2hhck1hcFJlYyAgIGNoYXJtYXByZWNzWzJdOworICAgIEZUX0NoYXJNYXAgICAgICBjaGFybWFwc1syXTsKKworICAgIC8qIHN1cHBvcnQgZm9yIE11bHRpcGxlIE1hc3RlcnMgZm9udHMgKi8KKyAgICBQU19CbGVuZCAgICAgICAgYmxlbmQ7CisKKyAgICAvKiB1bmRvY3VtZW50ZWQsIG9wdGlvbmFsOiBpbmRpY2VzIG9mIHN1YnJvdXRpbmVzIHRoYXQgZXhwcmVzcyAgICAgICovCisgICAgLyogdGhlIE5vcm1hbGl6ZURlc2lnblZlY3RvciBhbmQgdGhlIENvbnZlcnREZXNpZ25WZWN0b3IgcHJvY2VkdXJlLCAqLworICAgIC8qIHJlc3BlY3RpdmVseSwgYXMgVHlwZSAyIGNoYXJzdHJpbmdzOyAtMSBpZiBrZXl3b3JkcyBub3QgcHJlc2VudCAgKi8KKyAgICBGVF9JbnQgICAgICAgICAgIG5kdl9pZHg7CisgICAgRlRfSW50ICAgICAgICAgICBjZHZfaWR4OworCisgICAgLyogdW5kb2N1bWVudGVkLCBvcHRpb25hbDogaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgbGVuX2J1aWxkY2hhciAqLworICAgIC8qIGZvciBUeXBlIDIgZm9udHM7IG1hbmlwdWxhdGVkIGJ5IG90aGVyc3VicnMgMTksIDI0LCBhbmQgMjUgICAgKi8KKyAgICBGVF9VSW50ICAgICAgICAgIGxlbl9idWlsZGNoYXI7CisgICAgRlRfTG9uZyogICAgICAgICBidWlsZGNoYXI7CisKKyAgICAvKiBzaW5jZSB2ZXJzaW9uIDIuMSAtIGludGVyZmFjZSB0byBQb3N0U2NyaXB0IGhpbnRlciAqLworICAgIGNvbnN0IHZvaWQqICAgICBwc2hpbnRlcjsKKworICB9IFQxX0ZhY2VSZWM7CisKKworICB0eXBlZGVmIHN0cnVjdCAgQ0lEX0ZhY2VSZWNfCisgIHsKKyAgICBGVF9GYWNlUmVjICAgICAgIHJvb3Q7CisgICAgdm9pZCogICAgICAgICAgICBwc25hbWVzOworICAgIHZvaWQqICAgICAgICAgICAgcHNhdXg7CisgICAgQ0lEX0ZhY2VJbmZvUmVjICBjaWQ7CisgICAgUFNfRm9udEV4dHJhUmVjICBmb250X2V4dHJhOworI2lmIDAKKyAgICB2b2lkKiAgICAgICAgICAgIGFmbV9kYXRhOworI2VuZGlmCisgICAgQ0lEX1N1YnJzICAgICAgICBzdWJyczsKKworICAgIC8qIHNpbmNlIHZlcnNpb24gMi4xIC0gaW50ZXJmYWNlIHRvIFBvc3RTY3JpcHQgaGludGVyICovCisgICAgdm9pZCogICAgICAgICAgICBwc2hpbnRlcjsKKworICAgIC8qIHNpbmNlIHZlcnNpb24gMi4xLjgsIGJ1dCB3YXMgb3JpZ2luYWxseSBwb3NpdGlvbmVkIGFmdGVyIGBhZm1fZGF0YScgKi8KKyAgICBGVF9CeXRlKiAgICAgICAgIGJpbmFyeV9kYXRhOyAvKiB1c2VkIGlmIGhleCBkYXRhIGhhcyBiZWVuIGNvbnZlcnRlZCAqLworICAgIEZUX1N0cmVhbSAgICAgICAgY2lkX3N0cmVhbTsKKworICB9IENJRF9GYWNlUmVjOworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fVDFUWVBFU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmMxZDYyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oCkBAIC0wLDAgKzEsMTQ0MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHR0eXBlcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEJhc2ljIFNGTlQvVHJ1ZVR5cGUgdHlwZSBkZWZpbml0aW9ucyBhbmQgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uICAgICovCisvKiAgICBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAyLCAyMDA0LTIwMDgsIDIwMTItMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1RUVFlQRVNfSF9fCisjZGVmaW5lIF9fVFRUWVBFU19IX18KKworCisjaW5jbHVkZSAiLi4vLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi90dHRhYmxlcy5oIgorI2luY2x1ZGUgImZ0b2Jqcy5oIgorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorI2luY2x1ZGUgIi4uL2Z0bW0uaCIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgIFJFUVVJUkVEIFRSVUVUWVBFL09QRU5UWVBFIFRBQkxFUyBERUZJTklUSU9OUyAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRDX0hlYWRlclJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVHJ1ZVR5cGUgY29sbGVjdGlvbiBoZWFkZXIuICBUaGlzIHRhYmxlIGNvbnRhaW5zIHRoZSBvZmZzZXRzIG9mICAgICovCisgIC8qICAgIHRoZSBmb250IGhlYWRlcnMgb2YgZWFjaCBkaXN0aW5jdCBUcnVlVHlwZSBmYWNlIGluIHRoZSBmaWxlLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhZyAgICAgOjogTXVzdCBiZSBgdHRjICcgdG8gaW5kaWNhdGUgYSBUcnVlVHlwZSBjb2xsZWN0aW9uLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVyc2lvbiA6OiBUaGUgdmVyc2lvbiBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb3VudCAgIDo6IFRoZSBudW1iZXIgb2YgZmFjZXMgaW4gdGhlIGNvbGxlY3Rpb24uICBUaGUgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICBzcGVjaWZpY2F0aW9uIHNheXMgdGhpcyBzaG91bGQgYmUgYW4gdW5zaWduZWQgbG9uZywgYnV0ICovCisgIC8qICAgICAgICAgICAgICAgd2UgdXNlIGEgc2lnbmVkIGxvbmcgc2luY2Ugd2UgbmVlZCB0aGUgdmFsdWUgLTEgZm9yICAgICAqLworICAvKiAgICAgICAgICAgICAgIHNwZWNpZmljIHB1cnBvc2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG9mZnNldHMgOjogVGhlIG9mZnNldHMgb2YgdGhlIGZvbnQgaGVhZGVycywgb25lIHBlciBmYWNlLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUQ19IZWFkZXJSZWNfCisgIHsKKyAgICBGVF9VTG9uZyAgIHRhZzsKKyAgICBGVF9GaXhlZCAgIHZlcnNpb247CisgICAgRlRfTG9uZyAgICBjb3VudDsKKyAgICBGVF9VTG9uZyogIG9mZnNldHM7CisKKyAgfSBUVENfSGVhZGVyUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU0ZOVF9IZWFkZXJSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU0ZOVCBmaWxlIGZvcm1hdCBoZWFkZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZm9ybWF0X3RhZyAgICAgOjogVGhlIGZvbnQgZm9ybWF0IHRhZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fdGFibGVzICAgICA6OiBUaGUgbnVtYmVyIG9mIHRhYmxlcyBpbiBmaWxlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNlYXJjaF9yYW5nZSAgIDo6IE11c3QgYmUgYDE2ICogKG1heCBwb3dlciBvZiAyIDw9IG51bV90YWJsZXMpJy4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZW50cnlfc2VsZWN0b3IgOjogTXVzdCBiZSBsb2cyIG9mIGBzZWFyY2hfcmFuZ2UgLyAxNicuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYW5nZV9zaGlmdCAgICA6OiBNdXN0IGJlIGBudW1fdGFibGVzICogMTYgLSBzZWFyY2hfcmFuZ2UnLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBTRk5UX0hlYWRlclJlY18KKyAgeworICAgIEZUX1VMb25nICAgZm9ybWF0X3RhZzsKKyAgICBGVF9VU2hvcnQgIG51bV90YWJsZXM7CisgICAgRlRfVVNob3J0ICBzZWFyY2hfcmFuZ2U7CisgICAgRlRfVVNob3J0ICBlbnRyeV9zZWxlY3RvcjsKKyAgICBGVF9VU2hvcnQgIHJhbmdlX3NoaWZ0OworCisgICAgRlRfVUxvbmcgICBvZmZzZXQ7ICAvKiBub3QgaW4gZmlsZSAqLworCisgIH0gU0ZOVF9IZWFkZXJSZWMsICpTRk5UX0hlYWRlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1RhYmxlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBhIGdpdmVuIHRhYmxlIG9mIGEgVHJ1ZVR5cGUgZm9udC4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRhZyAgICAgIDo6IEEgZm91ci1ieXRlcyB0YWcgZGVzY3JpYmluZyB0aGUgdGFibGUuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ2hlY2tTdW0gOjogVGhlIHRhYmxlIGNoZWNrc3VtLiAgVGhpcyB2YWx1ZSBjYW4gYmUgaWdub3JlZC4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBPZmZzZXQgICA6OiBUaGUgb2Zmc2V0IG9mIHRoZSB0YWJsZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgVHJ1ZVR5cGUgKi8KKyAgLyogICAgICAgICAgICAgICAgZm9udCBpbiBpdHMgcmVzb3VyY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMZW5ndGggICA6OiBUaGUgdGFibGUgbGVuZ3RoIChpbiBieXRlcykuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9UYWJsZVJlY18KKyAgeworICAgIEZUX1VMb25nICBUYWc7ICAgICAgICAvKiAgICAgICAgdGFibGUgdHlwZSAqLworICAgIEZUX1VMb25nICBDaGVja1N1bTsgICAvKiAgICB0YWJsZSBjaGVja3N1bSAqLworICAgIEZUX1VMb25nICBPZmZzZXQ7ICAgICAvKiB0YWJsZSBmaWxlIG9mZnNldCAqLworICAgIEZUX1VMb25nICBMZW5ndGg7ICAgICAvKiAgICAgIHRhYmxlIGxlbmd0aCAqLworCisgIH0gVFRfVGFibGVSZWMsICpUVF9UYWJsZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0xvbmdNZXRyaWNzUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIG1vZGVsaW5nIHRoZSBsb25nIG1ldHJpY3Mgb2YgdGhlIGBobXR4JyBhbmQgYHZtdHgnICAgICAqLworICAvKiAgICBUcnVlVHlwZSB0YWJsZXMuICBUaGUgdmFsdWVzIGFyZSBleHByZXNzZWQgaW4gZm9udCB1bml0cy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZHZhbmNlIDo6IFRoZSBhZHZhbmNlIHdpZHRoIG9yIGhlaWdodCBmb3IgdGhlIGdseXBoLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJlYXJpbmcgOjogVGhlIGxlZnQtc2lkZSBvciB0b3Atc2lkZSBiZWFyaW5nIGZvciB0aGUgZ2x5cGguICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX0xvbmdNZXRyaWNzUmVjXworICB7CisgICAgRlRfVVNob3J0ICBhZHZhbmNlOworICAgIEZUX1Nob3J0ICAgYmVhcmluZzsKKworICB9IFRUX0xvbmdNZXRyaWNzUmVjLCAqVFRfTG9uZ01ldHJpY3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9TaG9ydE1ldHJpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNpbXBsZSB0eXBlIHRvIG1vZGVsIHRoZSBzaG9ydCBtZXRyaWNzIG9mIHRoZSBgaG10eCcgYW5kIGB2bXR4JyAgKi8KKyAgLyogICAgdGFibGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIEZUX1Nob3J0ICBUVF9TaG9ydE1ldHJpY3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9OYW1lRW50cnlSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSBtb2RlbGluZyBUcnVlVHlwZSBuYW1lIHJlY29yZHMuICBOYW1lIHJlY29yZHMgYXJlIHVzZWQgKi8KKyAgLyogICAgdG8gc3RvcmUgaW1wb3J0YW50IHN0cmluZ3MgbGlrZSBmYW1pbHkgbmFtZSwgc3R5bGUgbmFtZSwgICAgICAgICAgICovCisgIC8qICAgIGNvcHlyaWdodCwgZXRjLiBpbiBfbG9jYWxpemVkXyB2ZXJzaW9ucyAoaS5lLiwgbGFuZ3VhZ2UsIGVuY29kaW5nLCAqLworICAvKiAgICBldGMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwbGF0Zm9ybUlEICAgOjogVGhlIElEIG9mIHRoZSBuYW1lJ3MgZW5jb2RpbmcgcGxhdGZvcm0uICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGVuY29kaW5nSUQgICA6OiBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgSUQgZm9yIHRoZSBuYW1lJ3MgZW5jb2RpbmcuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbGFuZ3VhZ2VJRCAgIDo6IFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBJRCBmb3IgdGhlIG5hbWUncyBsYW5ndWFnZS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuYW1lSUQgICAgICAgOjogVGhlIElEIHNwZWNpZnlpbmcgd2hhdCBraW5kIG9mIG5hbWUgdGhpcyBpcy4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmluZ0xlbmd0aCA6OiBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gYnl0ZXMuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyaW5nT2Zmc2V0IDo6IFRoZSBvZmZzZXQgdG8gdGhlIHN0cmluZyBpbiB0aGUgYG5hbWUnIHRhYmxlLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJpbmcgICAgICAgOjogQSBwb2ludGVyIHRvIHRoZSBzdHJpbmcncyBieXRlcy4gIE5vdGUgdGhhdCB0aGVzZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGFyZSB1c3VhbGx5IFVURi0xNiBlbmNvZGVkIGNoYXJhY3RlcnMuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfTmFtZUVudHJ5UmVjXworICB7CisgICAgRlRfVVNob3J0ICBwbGF0Zm9ybUlEOworICAgIEZUX1VTaG9ydCAgZW5jb2RpbmdJRDsKKyAgICBGVF9VU2hvcnQgIGxhbmd1YWdlSUQ7CisgICAgRlRfVVNob3J0ICBuYW1lSUQ7CisgICAgRlRfVVNob3J0ICBzdHJpbmdMZW5ndGg7CisgICAgRlRfVUxvbmcgICBzdHJpbmdPZmZzZXQ7CisKKyAgICAvKiB0aGlzIGxhc3QgZmllbGQgaXMgbm90IGRlZmluZWQgaW4gdGhlIHNwZWMgKi8KKyAgICAvKiBidXQgdXNlZCBieSB0aGUgRnJlZVR5cGUgZW5naW5lICAgICAgICAgICAgKi8KKworICAgIEZUX0J5dGUqICAgc3RyaW5nOworCisgIH0gVFRfTmFtZUVudHJ5UmVjLCAqVFRfTmFtZUVudHJ5OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTmFtZVRhYmxlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgbW9kZWxpbmcgdGhlIFRydWVUeXBlIG5hbWUgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZm9ybWF0ICAgICAgICAgOjogVGhlIGZvcm1hdCBvZiB0aGUgbmFtZSB0YWJsZS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1OYW1lUmVjb3JkcyA6OiBUaGUgbnVtYmVyIG9mIG5hbWVzIGluIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0b3JhZ2VPZmZzZXQgIDo6IFRoZSBvZmZzZXQgb2YgdGhlIG5hbWUgdGFibGUgaW4gdGhlIGBuYW1lJyAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICBUcnVlVHlwZSB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWVzICAgICAgICAgIDo6IEFuIGFycmF5IG9mIG5hbWUgcmVjb3Jkcy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgICAgICAgOjogdGhlIGZpbGUncyBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfTmFtZVRhYmxlUmVjXworICB7CisgICAgRlRfVVNob3J0ICAgICAgICAgZm9ybWF0OworICAgIEZUX1VJbnQgICAgICAgICAgIG51bU5hbWVSZWNvcmRzOworICAgIEZUX1VJbnQgICAgICAgICAgIHN0b3JhZ2VPZmZzZXQ7CisgICAgVFRfTmFtZUVudHJ5UmVjKiAgbmFtZXM7CisgICAgRlRfU3RyZWFtICAgICAgICAgc3RyZWFtOworCisgIH0gVFRfTmFtZVRhYmxlUmVjLCAqVFRfTmFtZVRhYmxlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgIE9QVElPTkFMIFRSVUVUWVBFL09QRU5UWVBFIFRBQkxFUyBERUZJTklUSU9OUyAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfR2FzcFJhbmdlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0aW55IHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgZ2FzcCByYW5nZSBhY2NvcmRpbmcgdG8gdGhlICAgICAgICovCisgIC8qICAgIFRydWVUeXBlIHNwZWNpZmljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heFBQRU0gIDo6IFRoZSBtYXhpbXVtIHBwZW0gdmFsdWUgdG8gd2hpY2ggYGdhc3BGbGFnJyBhcHBsaWVzLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2FzcEZsYWcgOjogQSBmbGFnIGRlc2NyaWJpbmcgdGhlIGdyaWQtZml0dGluZyBhbmQgYW50aS1hbGlhc2luZyAgICovCisgIC8qICAgICAgICAgICAgICAgIG1vZGVzIHRvIGJlIHVzZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX0dhc3BSYW5nZVJlY18KKyAgeworICAgIEZUX1VTaG9ydCAgbWF4UFBFTTsKKyAgICBGVF9VU2hvcnQgIGdhc3BGbGFnOworCisgIH0gVFRfR2FzcFJhbmdlUmVjLCAqVFRfR2FzcFJhbmdlOworCisKKyNkZWZpbmUgVFRfR0FTUF9HUklERklUICAweDAxCisjZGVmaW5lIFRUX0dBU1BfRE9HUkFZICAgMHgwMgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfR2FzcFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgbW9kZWxpbmcgdGhlIFRydWVUeXBlIGBnYXNwJyB0YWJsZSB1c2VkIHRvIHNwZWNpZnkgICAgICovCisgIC8qICAgIGdyaWQtZml0dGluZyBhbmQgYW50aS1hbGlhc2luZyBiZWhhdmlvdXIuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnNpb24gICAgOjogVGhlIHZlcnNpb24gbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtUmFuZ2VzICA6OiBUaGUgbnVtYmVyIG9mIGdhc3AgcmFuZ2VzIGluIHRhYmxlLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnYXNwUmFuZ2VzIDo6IEFuIGFycmF5IG9mIGdhc3AgcmFuZ2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9HYXNwXworICB7CisgICAgRlRfVVNob3J0ICAgICB2ZXJzaW9uOworICAgIEZUX1VTaG9ydCAgICAgbnVtUmFuZ2VzOworICAgIFRUX0dhc3BSYW5nZSAgZ2FzcFJhbmdlczsKKworICB9IFRUX0dhc3BSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgIEVNQkVEREVEIEJJVE1BUFMgU1VQUE9SVCAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9TQml0X01ldHJpY3NSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgdGhlIGJpZyBtZXRyaWNzIG9mIGEgZ2l2ZW4gZ2x5cGggYml0bWFwICAgKi8KKyAgLyogICAgaW4gYSBUcnVlVHlwZSBvciBPcGVuVHlwZSBmb250LiAgVGhlc2UgYXJlIHVzdWFsbHkgZm91bmQgaW4gdGhlICAgICovCisgIC8qICAgIGBFQkRUJyAoTWljcm9zb2Z0KSBvciBgYmxvYycgKEFwcGxlKSB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhlaWdodCAgICAgICA6OiBUaGUgZ2x5cGggaGVpZ2h0IGluIHBpeGVscy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgd2lkdGggICAgICAgIDo6IFRoZSBnbHlwaCB3aWR0aCBpbiBwaXhlbHMuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBob3JpQmVhcmluZ1ggOjogVGhlIGhvcml6b250YWwgbGVmdCBiZWFyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhvcmlCZWFyaW5nWSA6OiBUaGUgaG9yaXpvbnRhbCB0b3AgYmVhcmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaG9yaUFkdmFuY2UgIDo6IFRoZSBob3Jpem9udGFsIGFkdmFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJ0QmVhcmluZ1ggOjogVGhlIHZlcnRpY2FsIGxlZnQgYmVhcmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnRCZWFyaW5nWSA6OiBUaGUgdmVydGljYWwgdG9wIGJlYXJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVydEFkdmFuY2UgIDo6IFRoZSB2ZXJ0aWNhbCBhZHZhbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfU0JpdF9NZXRyaWNzUmVjXworICB7CisgICAgRlRfQnl0ZSAgaGVpZ2h0OworICAgIEZUX0J5dGUgIHdpZHRoOworCisgICAgRlRfQ2hhciAgaG9yaUJlYXJpbmdYOworICAgIEZUX0NoYXIgIGhvcmlCZWFyaW5nWTsKKyAgICBGVF9CeXRlICBob3JpQWR2YW5jZTsKKworICAgIEZUX0NoYXIgIHZlcnRCZWFyaW5nWDsKKyAgICBGVF9DaGFyICB2ZXJ0QmVhcmluZ1k7CisgICAgRlRfQnl0ZSAgdmVydEFkdmFuY2U7CisKKyAgfSBUVF9TQml0X01ldHJpY3NSZWMsICpUVF9TQml0X01ldHJpY3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9TQml0X1NtYWxsTWV0cmljc1JlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgdGhlIHNtYWxsIG1ldHJpY3Mgb2YgYSBnaXZlbiBnbHlwaCBiaXRtYXAgKi8KKyAgLyogICAgaW4gYSBUcnVlVHlwZSBvciBPcGVuVHlwZSBmb250LiAgVGhlc2UgYXJlIHVzdWFsbHkgZm91bmQgaW4gdGhlICAgICovCisgIC8qICAgIGBFQkRUJyAoTWljcm9zb2Z0KSBvciB0aGUgYGJkYXQnIChBcHBsZSkgdGFibGUuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhlaWdodCAgIDo6IFRoZSBnbHlwaCBoZWlnaHQgaW4gcGl4ZWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgd2lkdGggICAgOjogVGhlIGdseXBoIHdpZHRoIGluIHBpeGVscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiZWFyaW5nWCA6OiBUaGUgbGVmdC1zaWRlIGJlYXJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJlYXJpbmdZIDo6IFRoZSB0b3Atc2lkZSBiZWFyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWR2YW5jZSAgOjogVGhlIGFkdmFuY2Ugd2lkdGggb3IgaGVpZ2h0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfU0JpdF9TbWFsbF9NZXRyaWNzXworICB7CisgICAgRlRfQnl0ZSAgaGVpZ2h0OworICAgIEZUX0J5dGUgIHdpZHRoOworCisgICAgRlRfQ2hhciAgYmVhcmluZ1g7CisgICAgRlRfQ2hhciAgYmVhcmluZ1k7CisgICAgRlRfQnl0ZSAgYWR2YW5jZTsKKworICB9IFRUX1NCaXRfU21hbGxNZXRyaWNzUmVjLCAqVFRfU0JpdF9TbWFsbE1ldHJpY3M7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9TQml0X0xpbmVNZXRyaWNzUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSB0ZXh0IGxpbmUgbWV0cmljcyBvZiBhIGdpdmVuICAgICAgKi8KKyAgLyogICAgYml0bWFwIHN0cmlrZSwgZm9yIGVpdGhlciBhIGhvcml6b250YWwgb3IgdmVydGljYWwgbGF5b3V0LiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYXNjZW5kZXIgICAgICAgICAgICAgICAgOjogVGhlIGFzY2VuZGVyIGluIHBpeGVscy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkZXNjZW5kZXIgICAgICAgICAgICAgICA6OiBUaGUgZGVzY2VuZGVyIGluIHBpeGVscy4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heF93aWR0aCAgICAgICAgICAgICAgIDo6IFRoZSBtYXhpbXVtIGdseXBoIHdpZHRoIGluIHBpeGVscy4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FyZXRfc2xvcGVfZW51bWVyYXRvciAgOjogUmlzZSBvZiB0aGUgY2FyZXQgc2xvcGUsIHR5cGljYWxseSBzZXQgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIDEgZm9yIG5vbi1pdGFsaWMgZm9udHMuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FyZXRfc2xvcGVfZGVub21pbmF0b3IgOjogUmlzZSBvZiB0aGUgY2FyZXQgc2xvcGUsIHR5cGljYWxseSBzZXQgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIDAgZm9yIG5vbi1pdGFsaWMgZm9udHMuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FyZXRfb2Zmc2V0ICAgICAgICAgICAgOjogT2Zmc2V0IGluIHBpeGVscyB0byBtb3ZlIHRoZSBjYXJldCBmb3IgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlciBwb3NpdGlvbmluZy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWluX29yaWdpbl9TQiAgICAgICAgICAgOjogTWluaW11bSBvZiBob3JpQmVhcmluZ1ggKHJlc3AuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRCZWFyaW5nWSkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtaW5fYWR2YW5jZV9TQiAgICAgICAgICA6OiBNaW5pbXVtIG9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbCBhZHZhbmNlIC0gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBob3JpQmVhcmluZ1ggKyB3aWR0aCApICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBhZHZhbmNlIC0gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHZlcnRCZWFyaW5nWSArIGhlaWdodCApICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4X2JlZm9yZV9CTCAgICAgICAgICAgOjogTWF4aW11bSBvZiBob3JpQmVhcmluZ1kgKHJlc3AuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRCZWFyaW5nWSkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWluX2FmdGVyX0JMICAgICAgICAgICAgOjogTWluaW11bSBvZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcmlCZWFyaW5nWSAtIGhlaWdodCAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0QmVhcmluZ1ggLSB3aWR0aCAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYWRzICAgICAgICAgICAgICAgICAgICA6OiBVbnVzZWQgKHRvIG1ha2UgdGhlIHNpemUgb2YgdGhlIHJlY29yZCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBtdWx0aXBsZSBvZiAzMiBiaXRzLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfU0JpdF9MaW5lTWV0cmljc1JlY18KKyAgeworICAgIEZUX0NoYXIgIGFzY2VuZGVyOworICAgIEZUX0NoYXIgIGRlc2NlbmRlcjsKKyAgICBGVF9CeXRlICBtYXhfd2lkdGg7CisgICAgRlRfQ2hhciAgY2FyZXRfc2xvcGVfbnVtZXJhdG9yOworICAgIEZUX0NoYXIgIGNhcmV0X3Nsb3BlX2Rlbm9taW5hdG9yOworICAgIEZUX0NoYXIgIGNhcmV0X29mZnNldDsKKyAgICBGVF9DaGFyICBtaW5fb3JpZ2luX1NCOworICAgIEZUX0NoYXIgIG1pbl9hZHZhbmNlX1NCOworICAgIEZUX0NoYXIgIG1heF9iZWZvcmVfQkw7CisgICAgRlRfQ2hhciAgbWluX2FmdGVyX0JMOworICAgIEZUX0NoYXIgIHBhZHNbMl07CisKKyAgfSBUVF9TQml0X0xpbmVNZXRyaWNzUmVjLCAqVFRfU0JpdF9MaW5lTWV0cmljczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1NCaXRfUmFuZ2VSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgVHJ1ZVR5cGUvT3BlblR5cGUgc3ViSW5kZXhUYWJsZSBhcyBkZWZpbmVkIGluIHRoZSBgRUJMQycgICAgICAgICAqLworICAvKiAgICAoTWljcm9zb2Z0KSBvciBgYmxvYycgKEFwcGxlKSB0YWJsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmaXJzdF9nbHlwaCAgIDo6IFRoZSBmaXJzdCBnbHlwaCBpbmRleCBpbiB0aGUgcmFuZ2UuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxhc3RfZ2x5cGggICAgOjogVGhlIGxhc3QgZ2x5cGggaW5kZXggaW4gdGhlIHJhbmdlLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW5kZXhfZm9ybWF0ICA6OiBUaGUgZm9ybWF0IG9mIGluZGV4IHRhYmxlLiAgVmFsaWQgdmFsdWVzIGFyZSAxICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgdG8gNS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW1hZ2VfZm9ybWF0ICA6OiBUaGUgZm9ybWF0IG9mIGBFQkRUJyBpbWFnZSBkYXRhLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBpbWFnZV9vZmZzZXQgIDo6IFRoZSBvZmZzZXQgdG8gaW1hZ2UgZGF0YSBpbiBgRUJEVCcuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGltYWdlX3NpemUgICAgOjogRm9yIGluZGV4IGZvcm1hdHMgMiBhbmQgNS4gIFRoaXMgaXMgdGhlIHNpemUgaW4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIGJ5dGVzIG9mIGVhY2ggZ2x5cGggYml0bWFwLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJpZ19tZXRyaWNzICAgOjogRm9yIGluZGV4IGZvcm1hdHMgMiBhbmQgNS4gIFRoaXMgaXMgdGhlIGJpZyAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3MgZm9yIGVhY2ggZ2x5cGggYml0bWFwLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9nbHlwaHMgICAgOjogRm9yIGluZGV4IGZvcm1hdHMgNCBhbmQgNS4gIFRoaXMgaXMgdGhlIG51bWJlciBvZiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIGdseXBocyBpbiB0aGUgY29kZSBhcnJheS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX29mZnNldHMgOjogRm9yIGluZGV4IGZvcm1hdHMgMSBhbmQgMy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfY29kZXMgICA6OiBGb3IgaW5kZXggZm9ybWF0cyA0IGFuZCA1LiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWJsZV9vZmZzZXQgIDo6IFRoZSBvZmZzZXQgb2YgdGhlIGluZGV4IHRhYmxlIGluIHRoZSBgRUJMQycgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICB0YWJsZS4gIE9ubHkgdXNlZCBkdXJpbmcgc3RyaWtlIGxvYWRpbmcuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfU0JpdF9SYW5nZVJlY18KKyAgeworICAgIEZUX1VTaG9ydCAgICAgICAgICAgZmlyc3RfZ2x5cGg7CisgICAgRlRfVVNob3J0ICAgICAgICAgICBsYXN0X2dseXBoOworCisgICAgRlRfVVNob3J0ICAgICAgICAgICBpbmRleF9mb3JtYXQ7CisgICAgRlRfVVNob3J0ICAgICAgICAgICBpbWFnZV9mb3JtYXQ7CisgICAgRlRfVUxvbmcgICAgICAgICAgICBpbWFnZV9vZmZzZXQ7CisKKyAgICBGVF9VTG9uZyAgICAgICAgICAgIGltYWdlX3NpemU7CisgICAgVFRfU0JpdF9NZXRyaWNzUmVjICBtZXRyaWNzOworICAgIEZUX1VMb25nICAgICAgICAgICAgbnVtX2dseXBoczsKKworICAgIEZUX1VMb25nKiAgICAgICAgICAgZ2x5cGhfb2Zmc2V0czsKKyAgICBGVF9VU2hvcnQqICAgICAgICAgIGdseXBoX2NvZGVzOworCisgICAgRlRfVUxvbmcgICAgICAgICAgICB0YWJsZV9vZmZzZXQ7CisKKyAgfSBUVF9TQml0X1JhbmdlUmVjLCAqVFRfU0JpdF9SYW5nZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1NCaXRfU3RyaWtlUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgZGVzY3JpYmUgYSBnaXZlbiBiaXRtYXAgc3RyaWtlIGluIHRoZSBgRUJMQycgICAgICAqLworICAvKiAgICAoTWljcm9zb2Z0KSBvciBgYmxvYycgKEFwcGxlKSB0YWJsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIG51bV9pbmRleF9yYW5nZXMgOjogVGhlIG51bWJlciBvZiBpbmRleCByYW5nZXMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgaW5kZXhfcmFuZ2VzICAgICA6OiBBbiBhcnJheSBvZiBnbHlwaCBpbmRleCByYW5nZXMuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBjb2xvcl9yZWYgICAgICAgIDo6IFVudXNlZC4gIGBjb2xvcl9yZWYnIGlzIHB1dCBpbiBmb3IgZnV0dXJlICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICBlbmhhbmNlbWVudHMsIGJ1dCB0aGVzZSBmaWVsZHMgYXJlIGFscmVhZHkgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgaW4gdXNlIGJ5IG90aGVyIHBsYXRmb3JtcyAoZS5nLiBOZXd0b24pLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzLCBwbGVhc2Ugc2VlICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vZm9udHMuYXBwbGUuY29tLyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUUmVmTWFuL1JNMDYvQ2hhcDZibG9jLmh0bWwgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGhvcmkgICAgICAgICAgICAgOjogVGhlIGxpbmUgbWV0cmljcyBmb3IgaG9yaXpvbnRhbCBsYXlvdXRzLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgdmVydCAgICAgICAgICAgICA6OiBUaGUgbGluZSBtZXRyaWNzIGZvciB2ZXJ0aWNhbCBsYXlvdXRzLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBzdGFydF9nbHlwaCAgICAgIDo6IFRoZSBsb3dlc3QgZ2x5cGggaW5kZXggZm9yIHRoaXMgc3RyaWtlLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGVuZF9nbHlwaCAgICAgICAgOjogVGhlIGhpZ2hlc3QgZ2x5cGggaW5kZXggZm9yIHRoaXMgc3RyaWtlLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgeF9wcGVtICAgICAgICAgICA6OiBUaGUgbnVtYmVyIG9mIGhvcml6b250YWwgcGl4ZWxzIHBlciBFTS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICB5X3BwZW0gICAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgdmVydGljYWwgcGl4ZWxzIHBlciBFTS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGJpdF9kZXB0aCAgICAgICAgOjogVGhlIGJpdCBkZXB0aC4gIFZhbGlkIHZhbHVlcyBhcmUgMSwgMiwgNCwgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIGFuZCA4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGZsYWdzICAgICAgICAgICAgOjogSXMgdGhpcyBhIHZlcnRpY2FsIG9yIGhvcml6b250YWwgc3RyaWtlPyAgRm9yICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMsIHBsZWFzZSBzZWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vZm9udHMuYXBwbGUuY29tLyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUUmVmTWFuL1JNMDYvQ2hhcDZibG9jLmh0bWwgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfU0JpdF9TdHJpa2VSZWNfCisgIHsKKyAgICBGVF9JbnQgICAgICAgICAgICAgICAgICBudW1fcmFuZ2VzOworICAgIFRUX1NCaXRfUmFuZ2UgICAgICAgICAgIHNiaXRfcmFuZ2VzOworICAgIEZUX1VMb25nICAgICAgICAgICAgICAgIHJhbmdlc19vZmZzZXQ7CisKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgICBjb2xvcl9yZWY7CisKKyAgICBUVF9TQml0X0xpbmVNZXRyaWNzUmVjICBob3JpOworICAgIFRUX1NCaXRfTGluZU1ldHJpY3NSZWMgIHZlcnQ7CisKKyAgICBGVF9VU2hvcnQgICAgICAgICAgICAgICBzdGFydF9nbHlwaDsKKyAgICBGVF9VU2hvcnQgICAgICAgICAgICAgICBlbmRfZ2x5cGg7CisKKyAgICBGVF9CeXRlICAgICAgICAgICAgICAgICB4X3BwZW07CisgICAgRlRfQnl0ZSAgICAgICAgICAgICAgICAgeV9wcGVtOworCisgICAgRlRfQnl0ZSAgICAgICAgICAgICAgICAgYml0X2RlcHRoOworICAgIEZUX0NoYXIgICAgICAgICAgICAgICAgIGZsYWdzOworCisgIH0gVFRfU0JpdF9TdHJpa2VSZWMsICpUVF9TQml0X1N0cmlrZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1NCaXRfQ29tcG9uZW50UmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc2ltcGxlIHN0cnVjdHVyZSB0byBkZXNjcmliZSBhIGNvbXBvdW5kIHNiaXQgZWxlbWVudC4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX2NvZGUgOjogVGhlIGVsZW1lbnQncyBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeF9vZmZzZXQgICA6OiBUaGUgZWxlbWVudCdzIGxlZnQgYmVhcmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5X29mZnNldCAgIDo6IFRoZSBlbGVtZW50J3MgdG9wIGJlYXJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9TQml0X0NvbXBvbmVudFJlY18KKyAgeworICAgIEZUX1VTaG9ydCAgZ2x5cGhfY29kZTsKKyAgICBGVF9DaGFyICAgIHhfb2Zmc2V0OworICAgIEZUX0NoYXIgICAgeV9vZmZzZXQ7CisKKyAgfSBUVF9TQml0X0NvbXBvbmVudFJlYywgKlRUX1NCaXRfQ29tcG9uZW50OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfU0JpdF9TY2FsZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCBkZXNjcmliZSBhIGdpdmVuIGJpdG1hcCBzY2FsaW5nIHRhYmxlLCBhcyBkZWZpbmVkICovCisgIC8qICAgIGluIHRoZSBgRUJTQycgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhvcmkgICAgICAgICAgICAgIDo6IFRoZSBob3Jpem9udGFsIGxpbmUgbWV0cmljcy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVydCAgICAgICAgICAgICAgOjogVGhlIHZlcnRpY2FsIGxpbmUgbWV0cmljcy4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4X3BwZW0gICAgICAgICAgICA6OiBUaGUgbnVtYmVyIG9mIGhvcml6b250YWwgcGl4ZWxzIHBlciBFTS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHlfcHBlbSAgICAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgdmVydGljYWwgcGl4ZWxzIHBlciBFTS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeF9wcGVtX3N1YnN0aXR1dGUgOjogU3Vic3RpdHV0aW9uIHhfcHBlbSB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5X3BwZW1fc3Vic3RpdHV0ZSA6OiBTdWJzdGl0dXRpb24geV9wcGVtIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9TQml0X1NjYWxlUmVjXworICB7CisgICAgVFRfU0JpdF9MaW5lTWV0cmljc1JlYyAgaG9yaTsKKyAgICBUVF9TQml0X0xpbmVNZXRyaWNzUmVjICB2ZXJ0OworCisgICAgRlRfQnl0ZSAgICAgICAgICAgICAgICAgeF9wcGVtOworICAgIEZUX0J5dGUgICAgICAgICAgICAgICAgIHlfcHBlbTsKKworICAgIEZUX0J5dGUgICAgICAgICAgICAgICAgIHhfcHBlbV9zdWJzdGl0dXRlOworICAgIEZUX0J5dGUgICAgICAgICAgICAgICAgIHlfcHBlbV9zdWJzdGl0dXRlOworCisgIH0gVFRfU0JpdF9TY2FsZVJlYywgKlRUX1NCaXRfU2NhbGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICBQT1NUU0NSSVBUIEdMWVBIIE5BTUVTIFNVUFBPUlQgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Qb3N0XzIwUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQb3N0c2NyaXB0IG5hbWVzIHN1Yi10YWJsZSwgZm9ybWF0IDIuMC4gIFN0b3JlcyB0aGUgUFMgbmFtZSBvZiAgICAgKi8KKyAgLyogICAgZWFjaCBnbHlwaCBpbiB0aGUgZm9udCBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2dseXBocyAgICA6OiBUaGUgbnVtYmVyIG9mIG5hbWVkIGdseXBocyBpbiB0aGUgdGFibGUuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fbmFtZXMgICAgIDo6IFRoZSBudW1iZXIgb2YgUFMgbmFtZXMgc3RvcmVkIGluIHRoZSB0YWJsZS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX2luZGljZXMgOjogVGhlIGluZGljZXMgb2YgdGhlIGdseXBocyBpbiB0aGUgbmFtZXMgYXJyYXlzLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfbmFtZXMgICA6OiBUaGUgUFMgbmFtZXMgbm90IGluIE1hYyBFbmNvZGluZy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfUG9zdF8yMFJlY18KKyAgeworICAgIEZUX1VTaG9ydCAgIG51bV9nbHlwaHM7CisgICAgRlRfVVNob3J0ICAgbnVtX25hbWVzOworICAgIEZUX1VTaG9ydCogIGdseXBoX2luZGljZXM7CisgICAgRlRfQ2hhcioqICAgZ2x5cGhfbmFtZXM7CisKKyAgfSBUVF9Qb3N0XzIwUmVjLCAqVFRfUG9zdF8yMDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1Bvc3RfMjVSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBvc3RzY3JpcHQgbmFtZXMgc3ViLXRhYmxlLCBmb3JtYXQgMi41LiAgU3RvcmVzIHRoZSBQUyBuYW1lIG9mICAgICAqLworICAvKiAgICBlYWNoIGdseXBoIGluIHRoZSBmb250IGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fZ2x5cGhzIDo6IFRoZSBudW1iZXIgb2YgZ2x5cGhzIGluIHRoZSB0YWJsZS4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG9mZnNldHMgICAgOjogQW4gYXJyYXkgb2Ygc2lnbmVkIG9mZnNldHMgaW4gYSBub3JtYWwgTWFjICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIFBvc3RzY3JpcHQgbmFtZSBlbmNvZGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9Qb3N0XzI1XworICB7CisgICAgRlRfVVNob3J0ICBudW1fZ2x5cGhzOworICAgIEZUX0NoYXIqICAgb2Zmc2V0czsKKworICB9IFRUX1Bvc3RfMjVSZWMsICpUVF9Qb3N0XzI1OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfUG9zdF9OYW1lc1JlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUG9zdHNjcmlwdCBuYW1lcyB0YWJsZSwgZWl0aGVyIGZvcm1hdCAyLjAgb3IgMi41LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZGVkICAgIDo6IEEgZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBQUyBuYW1lcyBhcmUgbG9hZGVkLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb3JtYXRfMjAgOjogVGhlIHN1Yi10YWJsZSB1c2VkIGZvciBmb3JtYXQgMi4wLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvcm1hdF8yNSA6OiBUaGUgc3ViLXRhYmxlIHVzZWQgZm9yIGZvcm1hdCAyLjUuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX1Bvc3RfTmFtZXNSZWNfCisgIHsKKyAgICBGVF9Cb29sICBsb2FkZWQ7CisKKyAgICB1bmlvbgorICAgIHsKKyAgICAgIFRUX1Bvc3RfMjBSZWMgIGZvcm1hdF8yMDsKKyAgICAgIFRUX1Bvc3RfMjVSZWMgIGZvcm1hdF8yNTsKKworICAgIH0gbmFtZXM7CisKKyAgfSBUVF9Qb3N0X05hbWVzUmVjLCAqVFRfUG9zdF9OYW1lczsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgR1ggVkFSSUFUSU9OIFRBQkxFIFNVUFBPUlQgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICB0eXBlZGVmIHN0cnVjdCBHWF9CbGVuZFJlY18gICpHWF9CbGVuZDsKKyNlbmRpZgorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgRU1CRURERUQgQkRGIFBST1BFUlRJRVMgVEFCTEUgU1VQUE9SVCAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKgorICAgKiBUaGVzZSB0eXBlcyBhcmUgdXNlZCB0byBzdXBwb3J0IGEgYEJERiAnIHRhYmxlIHRoYXQgaXNuJ3QgcGFydCBvZiB0aGUKKyAgICogb2ZmaWNpYWwgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbi4gIEl0IGlzIG1haW5seSB1c2VkIGluIFNGTlQtYmFzZWQKKyAgICogYml0bWFwIGZvbnRzIHRoYXQgd2VyZSBnZW5lcmF0ZWQgZnJvbSBhIHNldCBvZiBCREYgZm9udHMuCisgICAqCisgICAqIFRoZSBmb3JtYXQgb2YgdGhlIHRhYmxlIGlzIGFzIGZvbGxvd3MuCisgICAqCisgICAqICAgVVNIT1JUICAgdmVyc2lvbiAgICAgIGBCREYgJyB0YWJsZSB2ZXJzaW9uIG51bWJlciwgc2hvdWxkIGJlIDB4MDAwMS4KKyAgICogICBVU0hPUlQgICBzdHJpa2VDb3VudCAgTnVtYmVyIG9mIHN0cmlrZXMgKGJpdG1hcCBzaXplcykgaW4gdGhpcyB0YWJsZS4KKyAgICogICBVTE9ORyAgICBzdHJpbmdUYWJsZSAgT2Zmc2V0IChmcm9tIHN0YXJ0IG9mIEJERiB0YWJsZSkgdG8gc3RyaW5nCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLgorICAgKgorICAgKiBUaGlzIGlzIGZvbGxvd2VkIGJ5IGFuIGFycmF5IG9mIGBzdHJpa2VDb3VudCcgZGVzY3JpcHRvcnMsIGhhdmluZyB0aGUKKyAgICogZm9sbG93aW5nIGZvcm1hdC4KKyAgICoKKyAgICogICBVU0hPUlQgICBwcGVtICAgICAgICAgVmVydGljYWwgcGl4ZWxzIHBlciBFTSBmb3IgdGhpcyBzdHJpa2UuCisgICAqICAgVVNIT1JUICAgbnVtSXRlbXMgICAgIE51bWJlciBvZiBpdGVtcyBmb3IgdGhpcyBzdHJpa2UgKHByb3BlcnRpZXMgYW5kCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGF0b21zKS4gIE1heGltdW0gaXMgMjU1LgorICAgKgorICAgKiBUaGlzIGFycmF5IGluIHR1cm4gaXMgZm9sbG93ZWQgYnkgYHN0cmlrZUNvdW50JyB2YWx1ZSBzZXRzLiAgRWFjaAorICAgKiBgdmFsdWUgc2V0JyBpcyBhbiBhcnJheSBvZiBgbnVtSXRlbXMnIGl0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtYXQuCisgICAqCisgICAqICAgVUxPTkcgICAgaXRlbV9uYW1lICAgIE9mZnNldCBpbiBzdHJpbmcgdGFibGUgdG8gaXRlbSBuYW1lLgorICAgKiAgIFVTSE9SVCAgIGl0ZW1fdHlwZSAgICBUaGUgaXRlbSB0eXBlLiAgUG9zc2libGUgdmFsdWVzIGFyZQorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID0+IHN0cmluZyAoZS5nLiwgQ09NTUVOVCkKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9PiBhdG9tICAgKGUuZy4sIEZPTlQgb3IgZXZlbiBTSVpFKQorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyID0+IGludDMyCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgPT4gdWludDMyCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAgPT4gQSBmbGFnIHRvIGluZGljYXRlIGEgcHJvcGVydGllcy4gIFRoaXMKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBPUmVkIHdpdGggdGhlIGFib3ZlIHZhbHVlcy4KKyAgICogICBVTE9ORyAgICBpdGVtX3ZhbHVlICAgRm9yIHN0cmluZ3MgID0+IE9mZnNldCBpbnRvIHN0cmluZyB0YWJsZSB3aXRob3V0CisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUgcXVvdGVzLgorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYXRvbXMgICAgPT4gT2Zmc2V0IGludG8gc3RyaW5nIHRhYmxlLgorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW50ZWdlcnMgPT4gRGlyZWN0IHZhbHVlLgorICAgKgorICAgKiBBbGwgc3RyaW5ncyBpbiB0aGUgc3RyaW5nIHRhYmxlIGNvbnNpc3Qgb2YgYnl0ZXMgYW5kIGFyZQorICAgKiB6ZXJvLXRlcm1pbmF0ZWQuCisgICAqCisgICAqLworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9CREYKKworICB0eXBlZGVmIHN0cnVjdCAgVFRfQkRGUmVjXworICB7CisgICAgRlRfQnl0ZSogICB0YWJsZTsKKyAgICBGVF9CeXRlKiAgIHRhYmxlX2VuZDsKKyAgICBGVF9CeXRlKiAgIHN0cmluZ3M7CisgICAgRlRfVUxvbmcgICBzdHJpbmdzX3NpemU7CisgICAgRlRfVUludCAgICBudW1fc3RyaWtlczsKKyAgICBGVF9Cb29sICAgIGxvYWRlZDsKKworICB9IFRUX0JERlJlYywgKlRUX0JERjsKKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fQkRGICovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgT1JJR0lOQUwgVFRfRkFDRSBDTEFTUyBERUZJTklUSU9OICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIHN0cnVjdHVyZS9jbGFzcyBpcyBkZWZpbmVkIGhlcmUgYmVjYXVzZSBpdCBpcyBjb21tb24gdG8gdGhlICAgICAgKi8KKyAgLyogZm9sbG93aW5nIGZvcm1hdHM6IFRURiwgT3BlblR5cGUtVFQsIGFuZCBPcGVuVHlwZS1DRkYuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlLCBob3dldmVyLCB0aGF0IHRoZSBjbGFzc2VzIFRUX1NpemUgYW5kIFRUX0dseXBoU2xvdCBhcmUgbm90ICAgICAgKi8KKyAgLyogc2hhcmVkIGJldHdlZW4gZm9udCBkcml2ZXJzLCBhbmQgYXJlIHRodXMgZGVmaW5lZCBpbiBgdHRvYmpzLmgnLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgVHJ1ZVR5cGUgZmFjZS9mb250IG9iamVjdC4gIEEgVFRfRmFjZSBlbmNhcHN1bGF0ZXMgICAqLworICAvKiAgICB0aGUgcmVzb2x1dGlvbiBhbmQgc2NhbGluZyBpbmRlcGVuZGVudCBwYXJ0cyBvZiBhIFRydWVUeXBlIGZvbnQgICAgKi8KKyAgLyogICAgcmVzb3VyY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIFRUX0ZhY2Ugc3RydWN0dXJlIGlzIGFsc28gdXNlZCBhcyBhIGBwYXJlbnQgY2xhc3MnIGZvciB0aGUgICAgICovCisgIC8qICAgIE9wZW5UeXBlLUNGRiBjbGFzcyAoVDJfRmFjZSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgVFRfRmFjZVJlY18qICBUVF9GYWNlOworCisKKyAgLyogYSBmdW5jdGlvbiB0eXBlIHVzZWQgZm9yIHRoZSB0cnVldHlwZSBieXRlY29kZSBpbnRlcnByZXRlciBob29rcyAqLworICB0eXBlZGVmIEZUX0Vycm9yCisgICgqVFRfSW50ZXJwcmV0ZXIpKCB2b2lkKiAgZXhlY19jb250ZXh0ICk7CisKKyAgLyogZm9yd2FyZCBkZWNsYXJhdGlvbiAqLworICB0eXBlZGVmIHN0cnVjdCBUVF9Mb2FkZXJSZWNfKiAgVFRfTG9hZGVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZGVyX0dvdG9UYWJsZUZ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2Vla3MgYSBzdHJlYW0gdG8gdGhlIHN0YXJ0IG9mIGEgZ2l2ZW4gVHJ1ZVR5cGUgdGFibGUuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWcgICAgOjogQSA0LWJ5dGUgdGFnIHVzZWQgdG8gbmFtZSB0aGUgdGFibGUuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiBUaGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlbmd0aCA6OiBUaGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSBpbiBieXRlcy4gIFNldCB0byAwIGlmIG5vdCAgICAgICAqLworICAvKiAgICAgICAgICAgICAgbmVlZGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgc3RyZWFtIGN1cnNvciBtdXN0IGJlIGF0IHRoZSBmb250IGZpbGUncyBvcmlnaW4uICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9Mb2FkZXJfR290b1RhYmxlRnVuYykoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogIGxlbmd0aCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZGVyX1N0YXJ0R2x5cGhGdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2Vla3MgYSBzdHJlYW0gdG8gdGhlIHN0YXJ0IG9mIGEgZ2l2ZW4gZ2x5cGggZWxlbWVudCwgYW5kIG9wZW5zIGEgICovCisgIC8qICAgIGZyYW1lIGZvciBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRlciAgICAgIDo6IFRoZSBjdXJyZW50IFRydWVUeXBlIGdseXBoIGxvYWRlciBvYmplY3QuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGggaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBnbHlwaCB0byBhY2Nlc3MuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvZmZzZXQgICAgICA6OiBUaGUgb2Zmc2V0IG9mIHRoZSBnbHlwaCBhY2NvcmRpbmcgdG8gdGhlICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgYGxvY2F0aW9ucycgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBieXRlX2NvdW50ICA6OiBUaGUgc2l6ZSBvZiB0aGUgZnJhbWUgaW4gYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vcm1hbGx5IGVxdWl2YWxlbnQgdG8gRlRfU1RSRUFNX1NFRUsob2Zmc2V0KSAgICAgKi8KKyAgLyogICAgZm9sbG93ZWQgYnkgRlRfRlJBTUVfRU5URVIoYnl0ZV9jb3VudCkgd2l0aCB0aGUgbG9hZGVyJ3Mgc3RyZWFtLCAgICovCisgIC8qICAgIGJ1dCBhbHRlcm5hdGl2ZSBmb3JtYXRzIChlLmcuIGNvbXByZXNzZWQgb25lcykgbWlnaHQgdXNlIHNvbWV0aGluZyAqLworICAvKiAgICBkaWZmZXJlbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9Mb2FkZXJfU3RhcnRHbHlwaEZ1bmMpKCBUVF9Mb2FkZXIgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgYnl0ZV9jb3VudCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY1R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZGVyX1JlYWRHbHlwaEZ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmVhZHMgb25lIGdseXBoIGVsZW1lbnQgKGl0cyBoZWFkZXIsIGEgc2ltcGxlIGdseXBoLCBvciBhICAgICAgICAgICovCisgIC8qICAgIGNvbXBvc2l0ZSkgZnJvbSB0aGUgbG9hZGVyJ3MgY3VycmVudCBzdHJlYW0gZnJhbWUuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRlciA6OiBUaGUgY3VycmVudCBUcnVlVHlwZSBnbHlwaCBsb2FkZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBGVF9FcnJvcgorICAoKlRUX0xvYWRlcl9SZWFkR2x5cGhGdW5jKSggVFRfTG9hZGVyICBsb2FkZXIgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmNUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0xvYWRlcl9FbmRHbHlwaEZ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENsb3NlcyB0aGUgY3VycmVudCBsb2FkZXIgc3RyZWFtIGZyYW1lIGZvciB0aGUgZ2x5cGguICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRlciA6OiBUaGUgY3VycmVudCBUcnVlVHlwZSBnbHlwaCBsb2FkZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqVFRfTG9hZGVyX0VuZEdseXBoRnVuYykoIFRUX0xvYWRlciAgbG9hZGVyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgIFRydWVUeXBlIEZhY2UgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0ZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBUcnVlVHlwZSBmYWNlIGNsYXNzLiAgVGhlc2Ugb2JqZWN0cyBtb2RlbCB0aGUgcmVzb2x1dGlvbiBhbmQgICAqLworICAvKiAgICBwb2ludC1zaXplIGluZGVwZW5kZW50IGRhdGEgZm91bmQgaW4gYSBUcnVlVHlwZSBmb250IGZpbGUuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByb290ICAgICAgICAgICAgICAgICA6OiBUaGUgYmFzZSBGVF9GYWNlIHN0cnVjdHVyZSwgbWFuYWdlZCBieSB0aGUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSBsYXllci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dGNfaGVhZGVyICAgICAgICAgICA6OiBUaGUgVHJ1ZVR5cGUgY29sbGVjdGlvbiBoZWFkZXIsIHVzZWQgd2hlbiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUgaXMgYSBgdHRjJyByYXRoZXIgdGhhbiBhIGB0dGYnLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBvcmRpbmFyeSBmb250IGZpbGVzLCB0aGUgZmllbGQgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgdHRjX2hlYWRlci5jb3VudCcgaXMgc2V0IHRvIDAuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZvcm1hdF90YWcgICAgICAgICAgIDo6IFRoZSBmb250IGZvcm1hdCB0YWcuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX3RhYmxlcyAgICAgICAgICAgOjogVGhlIG51bWJlciBvZiBUcnVlVHlwZSB0YWJsZXMgaW4gdGhpcyBmb250ICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGlyX3RhYmxlcyAgICAgICAgICAgOjogVGhlIGRpcmVjdG9yeSBvZiBUcnVlVHlwZSB0YWJsZXMgZm9yIHRoaXMgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVhZGVyICAgICAgICAgICAgICAgOjogVGhlIGZvbnQncyBmb250IGhlYWRlciAoYGhlYWQnIHRhYmxlKS4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWQgb24gZm9udCBvcGVuaW5nLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaG9yaXpvbnRhbCAgICAgICAgICAgOjogVGhlIGZvbnQncyBob3Jpem9udGFsIGhlYWRlciAoYGhoZWEnICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlKS4gIFRoaXMgZmllbGQgYWxzbyBjb250YWlucyB0aGUgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIGhvcml6b250YWwgbWV0cmljcyB0YWJsZSAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGBobXR4JykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhfcHJvZmlsZSAgICAgICAgICA6OiBUaGUgZm9udCdzIG1heGltdW0gcHJvZmlsZSB0YWJsZS4gIFJlYWQgb24gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udCBvcGVuaW5nLiAgTm90ZSB0aGF0IHNvbWUgbWF4aW11bSAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBjYW5ub3QgYmUgdGFrZW4gZGlyZWN0bHkgZnJvbSB0aGlzICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS4gIFdlIHRodXMgZGVmaW5lIGFkZGl0aW9uYWwgZmllbGRzICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3cgdG8gaG9sZCB0aGUgY29tcHV0ZWQgbWF4aW1hLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJ0aWNhbF9pbmZvICAgICAgICA6OiBBIGJvb2xlYW4gd2hpY2ggaXMgc2V0IHdoZW4gdGhlIGZvbnQgZmlsZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdmVydGljYWwgbWV0cmljcy4gIElmIG5vdCwgdGhlICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIHRoZSBgdmVydGljYWwnIGZpZWxkIGlzICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHZlcnRpY2FsICAgICAgICAgICAgIDo6IFRoZSBmb250J3MgdmVydGljYWwgaGVhZGVyIChgdmhlYScgdGFibGUpLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZpZWxkIGFsc28gY29udGFpbnMgdGhlIGFzc29jaWF0ZWQgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwgbWV0cmljcyB0YWJsZSAoYHZtdHgnKSwgaWYgZm91bmQuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUE9SVEFOVDogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmllbGQgaXMgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgaWYgdGhlIGB2ZXJ0aWNhbEluZm8nIGZpZWxkIGlzICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fbmFtZXMgICAgICAgICAgICA6OiBUaGUgbnVtYmVyIG9mIG5hbWUgcmVjb3JkcyB3aXRoaW4gdGhpcyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZVR5cGUgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuYW1lX3RhYmxlICAgICAgICAgICA6OiBUaGUgdGFibGUgb2YgbmFtZSByZWNvcmRzIChgbmFtZScpLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG9zMiAgICAgICAgICAgICAgICAgIDo6IFRoZSBmb250J3MgT1MvMiB0YWJsZSAoYE9TLzInKS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcG9zdHNjcmlwdCAgICAgICAgICAgOjogVGhlIGZvbnQncyBQb3N0U2NyaXB0IHRhYmxlIChgcG9zdCcgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlKS4gIFRoZSBQb3N0U2NyaXB0IGdseXBoIG5hbWVzIGFyZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgbG9hZGVkIGJ5IHRoZSBkcml2ZXIgb24gZmFjZSBvcGVuaW5nLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBgdHRwb3N0JyBtb2R1bGUgZm9yIG1vcmUgZGV0YWlscy4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjbWFwX3RhYmxlICAgICAgICAgICA6OiBBZGRyZXNzIG9mIHRoZSBmYWNlJ3MgYGNtYXAnIFNGTlQgdGFibGUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbWVtb3J5IChpdCdzIGFuIGV4dHJhY3RlZCBmcmFtZSkuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjbWFwX3NpemUgICAgICAgICAgICA6OiBUaGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgYGNtYXBfdGFibGUnICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkIGFib3ZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnb3RvX3RhYmxlICAgICAgICAgICA6OiBBIGZ1bmN0aW9uIGNhbGxlZCBieSBlYWNoIFRydWVUeXBlIHRhYmxlICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyIHRvIHBvc2l0aW9uIGEgc3RyZWFtJ3MgY3Vyc29yIHRvICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGFydCBvZiBhIGdpdmVuIHRhYmxlIGFjY29yZGluZyB0byAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdHMgdGFnLiAgSXQgZGVmYXVsdHMgdG8gVFRfR290b19GYWNlIGJ1dCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIGRpZmZlcmVudCBmb3Igc3RyYW5nZSBmb3JtYXRzIChlLmcuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgNDIpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWNjZXNzX2dseXBoX2ZyYW1lICAgOjogQSBmdW5jdGlvbiB1c2VkIHRvIGFjY2VzcyB0aGUgZnJhbWUgb2YgYSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGdseXBoIHdpdGhpbiB0aGUgZmFjZSdzIGZvbnQgZmlsZS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZm9yZ2V0X2dseXBoX2ZyYW1lICAgOjogQSBmdW5jdGlvbiB1c2VkIHRvIGZvcmdldCB0aGUgZnJhbWUgb2YgYSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGdseXBoIHdoZW4gYWxsIGRhdGEgaGFzIGJlZW4gbG9hZGVkLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmVhZF9nbHlwaF9oZWFkZXIgICAgOjogQSBmdW5jdGlvbiB1c2VkIHRvIHJlYWQgYSBnbHlwaCBoZWFkZXIuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IG11c3QgYmUgY2FsbGVkIGJldHdlZW4gYW4gYGFjY2VzcycgYW5kICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZm9yZ2V0Jy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJlYWRfc2ltcGxlX2dseXBoICAgIDo6IEEgZnVuY3Rpb24gdXNlZCB0byByZWFkIGEgc2ltcGxlIGdseXBoLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBtdXN0IGJlIGNhbGxlZCBhZnRlciB0aGUgaGVhZGVyIHdhcyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwgYW5kIGJlZm9yZSB0aGUgYGZvcmdldCcuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByZWFkX2NvbXBvc2l0ZV9nbHlwaCA6OiBBIGZ1bmN0aW9uIHVzZWQgdG8gcmVhZCBhIGNvbXBvc2l0ZSBnbHlwaC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGhlYWRlciB3YXMgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQsIGFuZCBiZWZvcmUgdGhlIGBmb3JnZXQnLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2ZudCAgICAgICAgICAgICAgICAgOjogQSBwb2ludGVyIHRvIHRoZSBTRk5UIHNlcnZpY2UuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwc25hbWVzICAgICAgICAgICAgICA6OiBBIHBvaW50ZXIgdG8gdGhlIFBvc3RTY3JpcHQgbmFtZXMgc2VydmljZS4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhkbXggICAgICAgICAgICAgICAgIDo6IFRoZSBmYWNlJ3MgaG9yaXpvbnRhbCBkZXZpY2UgbWV0cmljcyAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYGhkbXgnIHRhYmxlKS4gIFRoaXMgdGFibGUgaXMgb3B0aW9uYWwgaW4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZVR5cGUvT3BlblR5cGUgZm9udHMuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnYXNwICAgICAgICAgICAgICAgICA6OiBUaGUgZ3JpZC1maXR0aW5nIGFuZCBzY2FsaW5nIHByb3BlcnRpZXMgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUgKGBnYXNwJykuICBUaGlzIHRhYmxlIGlzIG9wdGlvbmFsIGluICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWVUeXBlL09wZW5UeXBlIGZvbnRzLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGNsdCAgICAgICAgICAgICAgICAgOjogVGhlIGBwY2x0JyBTRk5UIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fc2JpdF9zdHJpa2VzICAgICA6OiBUaGUgbnVtYmVyIG9mIHNiaXQgc3RyaWtlcywgaS5lLiwgYml0bWFwICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXMsIGVtYmVkZGVkIGluIHRoaXMgZm9udC4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzYml0X3N0cmlrZXMgICAgICAgICA6OiBBbiBhcnJheSBvZiBzYml0IHN0cmlrZXMgZW1iZWRkZWQgaW4gdGhpcyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC4gIFRoaXMgdGFibGUgaXMgb3B0aW9uYWwgaW4gYSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWVUeXBlL09wZW5UeXBlIGZvbnQuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX3NiaXRfc2NhbGVzICAgICAgOjogVGhlIG51bWJlciBvZiBzYml0IHNjYWxlcyBmb3IgdGhpcyBmb250LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzYml0X3NjYWxlcyAgICAgICAgICA6OiBBcnJheSBvZiBzYml0IHNjYWxlcyBlbWJlZGRlZCBpbiB0aGlzICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC4gIFRoaXMgdGFibGUgaXMgb3B0aW9uYWwgaW4gYSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWVUeXBlL09wZW5UeXBlIGZvbnQuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcG9zdHNjcmlwdF9uYW1lcyAgICAgOjogQSB0YWJsZSB1c2VkIHRvIHN0b3JlIHRoZSBQb3N0c2NyaXB0IG5hbWVzICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mICB0aGUgZ2x5cGhzIGZvciB0aGlzIGZvbnQuICBTZWUgdGhlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlICBgdHRjb25maWcuaCcgZm9yIGNvbW1lbnRzIG9uIHRoZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTIG9wdGlvbi4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fbG9jYXRpb25zICAgICAgICA6OiBUaGUgbnVtYmVyIG9mIGdseXBoIGxvY2F0aW9ucyBpbiB0aGlzICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZVR5cGUgZmlsZS4gIFRoaXMgc2hvdWxkIGJlICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWNhbCB0byB0aGUgbnVtYmVyIG9mIGdseXBocy4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZ25vcmVkIGZvciBUeXBlIDIgZm9udHMuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX2xvY2F0aW9ucyAgICAgIDo6IEFuIGFycmF5IG9mIGxvbmdzLiAgVGhlc2UgYXJlIG9mZnNldHMgdG8gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCBkYXRhIHdpdGhpbiB0aGUgYGdseWYnIHRhYmxlLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWdub3JlZCBmb3IgVHlwZSAyIGZvbnQgZmFjZXMuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlmX2xlbiAgICAgICAgICAgICA6OiBUaGUgbGVuZ3RoIG9mIHRoZSBgZ2x5ZicgdGFibGUuICBOZWVkZWQgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1hbGZvcm1lZCBgbG9jYScgdGFibGVzLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmb250X3Byb2dyYW1fc2l6ZSAgICA6OiBTaXplIGluIGJ5dGVjb2RlcyBvZiB0aGUgZmFjZSdzIGZvbnQgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS4gIDAgaWYgbm9uZSBkZWZpbmVkLiAgSWdub3JlZCBmb3IgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgMiBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZm9udF9wcm9ncmFtICAgICAgICAgOjogVGhlIGZhY2UncyBmb250IHByb2dyYW0gKGJ5dGVjb2RlIHN0cmVhbSkgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVkIGF0IGxvYWQgdGltZSwgYWxzbyB1c2VkIGR1cmluZyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaCByZW5kZXJpbmcuICBDb21lcyBmcm9tIHRoZSBgZnBnbScgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuICBJZ25vcmVkIGZvciBUeXBlIDIgZm9udCBmb250cy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjdnRfcHJvZ3JhbV9zaXplICAgICA6OiBUaGUgc2l6ZSBpbiBieXRlY29kZXMgb2YgdGhlIGZhY2UncyBjdnQgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS4gIElnbm9yZWQgZm9yIFR5cGUgMiBmb250cy4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjdnRfcHJvZ3JhbSAgICAgICAgICA6OiBUaGUgZmFjZSdzIGN2dCBwcm9ncmFtIChieXRlY29kZSBzdHJlYW0pICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZWQgZWFjaCB0aW1lIGFuIGluc3RhbmNlL3NpemUgaXMgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQvcmVzZXQuICBDb21lcyBmcm9tIHRoZSBgcHJlcCcgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS4gIElnbm9yZWQgZm9yIFR5cGUgMiBmb250cy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGN2dF9zaXplICAgICAgICAgICAgIDo6IFNpemUgb2YgdGhlIGNvbnRyb2wgdmFsdWUgdGFibGUgKGluICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzKS4gICBJZ25vcmVkIGZvciBUeXBlIDIgZm9udHMuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGN2dCAgICAgICAgICAgICAgICAgIDo6IFRoZSBmYWNlJ3Mgb3JpZ2luYWwgY29udHJvbCB2YWx1ZSB0YWJsZS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29yZGluYXRlcyBhcmUgZXhwcmVzc2VkIGluIHVuc2NhbGVkIGZvbnQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHMuICBDb21lcyBmcm9tIHRoZSBgY3Z0ICcgdGFibGUuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIElnbm9yZWQgZm9yIFR5cGUgMiBmb250cy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2tlcm5fcGFpcnMgICAgICAgOjogVGhlIG51bWJlciBvZiBrZXJuaW5nIHBhaXJzIHByZXNlbnQgaW4gdGhlICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQgZmlsZS4gIFRoZSBlbmdpbmUgb25seSBsb2FkcyB0aGUgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCBob3Jpem9udGFsIGZvcm1hdCAwIGtlcm4gdGFibGUgaXQgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZHMgaW4gdGhlIGZvbnQgZmlsZS4gIElnbm9yZWQgZm9yICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgMiBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAga2Vybl90YWJsZV9pbmRleCAgICAgOjogVGhlIGluZGV4IG9mIHRoZSBrZXJuaW5nIHRhYmxlIGluIHRoZSBmb250ICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5pbmcgZGlyZWN0b3J5LiAgSWdub3JlZCBmb3IgVHlwZSAyICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGludGVycHJldGVyICAgICAgICAgIDo6IEEgcG9pbnRlciB0byB0aGUgVHJ1ZVR5cGUgYnl0ZWNvZGUgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRlcnMgZmllbGQgaXMgYWxzbyB1c2VkIHRvIGhvb2sgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlYnVnZ2VyIGluIGB0dGRlYnVnJy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB1bnBhdGVudGVkX2hpbnRpbmcgICA6OiBJZiB0cnVlLCB1c2Ugb25seSB1bnBhdGVudGVkIG1ldGhvZHMgaW4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ5dGVjb2RlIGludGVycHJldGVyLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkb2JsZW5kICAgICAgICAgICAgICA6OiBBIGJvb2xlYW4gd2hpY2ggaXMgc2V0IGlmIHRoZSBmb250IHNob3VsZCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgYmxlbmRlZCAodGhpcyBpcyBmb3IgR1ggdmFyKS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBibGVuZCAgICAgICAgICAgICAgICA6OiBDb250YWlucyB0aGUgZGF0YSBuZWVkZWQgdG8gY29udHJvbCBHWCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uIHRhYmxlcyAocmF0aGVyIGxpa2UgTXVsdGlwbGUgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hc3RlciBkYXRhKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZXh0cmEgICAgICAgICAgICAgICAgOjogUmVzZXJ2ZWQgZm9yIHRoaXJkLXBhcnR5IGZvbnQgZHJpdmVycy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb3N0c2NyaXB0X25hbWUgICAgICA6OiBUaGUgUFMgbmFtZSBvZiB0aGUgZm9udC4gIFVzZWQgYnkgdGhlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdHNjcmlwdCBuYW1lIHNlcnZpY2UuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfRmFjZVJlY18KKyAgeworICAgIEZUX0ZhY2VSZWMgICAgICAgICAgICByb290OworCisgICAgVFRDX0hlYWRlclJlYyAgICAgICAgIHR0Y19oZWFkZXI7CisKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgZm9ybWF0X3RhZzsKKyAgICBGVF9VU2hvcnQgICAgICAgICAgICAgbnVtX3RhYmxlczsKKyAgICBUVF9UYWJsZSAgICAgICAgICAgICAgZGlyX3RhYmxlczsKKworICAgIFRUX0hlYWRlciAgICAgICAgICAgICBoZWFkZXI7ICAgICAgIC8qIFRydWVUeXBlIGhlYWRlciB0YWJsZSAgICAgICAgICAqLworICAgIFRUX0hvcmlIZWFkZXIgICAgICAgICBob3Jpem9udGFsOyAgIC8qIFRydWVUeXBlIGhvcml6b250YWwgaGVhZGVyICAgICAqLworCisgICAgVFRfTWF4UHJvZmlsZSAgICAgICAgIG1heF9wcm9maWxlOworCisgICAgRlRfQm9vbCAgICAgICAgICAgICAgIHZlcnRpY2FsX2luZm87CisgICAgVFRfVmVydEhlYWRlciAgICAgICAgIHZlcnRpY2FsOyAgICAgLyogVFQgVmVydGljYWwgaGVhZGVyLCBpZiBwcmVzZW50ICovCisKKyAgICBGVF9VU2hvcnQgICAgICAgICAgICAgbnVtX25hbWVzOyAgICAvKiBudW1iZXIgb2YgbmFtZSByZWNvcmRzICAqLworICAgIFRUX05hbWVUYWJsZVJlYyAgICAgICBuYW1lX3RhYmxlOyAgIC8qIG5hbWUgdGFibGUgICAgICAgICAgICAgICovCisKKyAgICBUVF9PUzIgICAgICAgICAgICAgICAgb3MyOyAgICAgICAgICAvKiBUcnVlVHlwZSBPUy8yIHRhYmxlICAgICAgICAgICAgKi8KKyAgICBUVF9Qb3N0c2NyaXB0ICAgICAgICAgcG9zdHNjcmlwdDsgICAvKiBUcnVlVHlwZSBQb3N0c2NyaXB0IHRhYmxlICAgICAgKi8KKworICAgIEZUX0J5dGUqICAgICAgICAgICAgICBjbWFwX3RhYmxlOyAgIC8qIGV4dHJhY3RlZCBgY21hcCcgdGFibGUgKi8KKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgY21hcF9zaXplOworCisgICAgVFRfTG9hZGVyX0dvdG9UYWJsZUZ1bmMgICBnb3RvX3RhYmxlOworCisgICAgVFRfTG9hZGVyX1N0YXJ0R2x5cGhGdW5jICBhY2Nlc3NfZ2x5cGhfZnJhbWU7CisgICAgVFRfTG9hZGVyX0VuZEdseXBoRnVuYyAgICBmb3JnZXRfZ2x5cGhfZnJhbWU7CisgICAgVFRfTG9hZGVyX1JlYWRHbHlwaEZ1bmMgICByZWFkX2dseXBoX2hlYWRlcjsKKyAgICBUVF9Mb2FkZXJfUmVhZEdseXBoRnVuYyAgIHJlYWRfc2ltcGxlX2dseXBoOworICAgIFRUX0xvYWRlcl9SZWFkR2x5cGhGdW5jICAgcmVhZF9jb21wb3NpdGVfZ2x5cGg7CisKKyAgICAvKiBhIHR5cGVsZXNzIHBvaW50ZXIgdG8gdGhlIFNGTlRfSW50ZXJmYWNlIHRhYmxlIHVzZWQgdG8gbG9hZCAqLworICAgIC8qIHRoZSBiYXNpYyBUcnVlVHlwZSB0YWJsZXMgaW4gdGhlIGZhY2Ugb2JqZWN0ICAgICAgICAgICAgICAgICovCisgICAgdm9pZCogICAgICAgICAgICAgICAgIHNmbnQ7CisKKyAgICAvKiBhIHR5cGVsZXNzIHBvaW50ZXIgdG8gdGhlIEZUX1NlcnZpY2VfUHNDTWFwc1JlYyB0YWJsZSB1c2VkIHRvICovCisgICAgLyogaGFuZGxlIGdseXBoIG5hbWVzIDwtPiB1bmljb2RlICYgTWFjIHZhbHVlcyAgICAgICAgICAgICAgICAgICAqLworICAgIHZvaWQqICAgICAgICAgICAgICAgICBwc25hbWVzOworCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIE9wdGlvbmFsIFRydWVUeXBlL09wZW5UeXBlIHRhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgICAgLyogZ3JpZC1maXR0aW5nIGFuZCBzY2FsaW5nIHRhYmxlICovCisgICAgVFRfR2FzcFJlYyAgICAgICAgICAgIGdhc3A7ICAgICAgICAgICAgICAgICAvKiB0aGUgYGdhc3AnIHRhYmxlICovCisKKyAgICAvKiBQQ0wgNSB0YWJsZSAqLworICAgIFRUX1BDTFQgICAgICAgICAgICAgICBwY2x0OworCisgICAgLyogZW1iZWRkZWQgYml0bWFwcyBzdXBwb3J0ICovCisgICAgRlRfVUxvbmcgICAgICAgICAgICAgIG51bV9zYml0X3NjYWxlczsKKyAgICBUVF9TQml0X1NjYWxlICAgICAgICAgc2JpdF9zY2FsZXM7CisKKyAgICAvKiBwb3N0c2NyaXB0IG5hbWVzIHRhYmxlICovCisgICAgVFRfUG9zdF9OYW1lc1JlYyAgICAgIHBvc3RzY3JpcHRfbmFtZXM7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogVHJ1ZVR5cGUtc3BlY2lmaWMgZmllbGRzIChpZ25vcmVkIGJ5IHRoZSBPVEYtVHlwZTIgZHJpdmVyKSAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgICAvKiB0aGUgZm9udCBwcm9ncmFtLCBpZiBhbnkgKi8KKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgZm9udF9wcm9ncmFtX3NpemU7CisgICAgRlRfQnl0ZSogICAgICAgICAgICAgIGZvbnRfcHJvZ3JhbTsKKworICAgIC8qIHRoZSBjdnQgcHJvZ3JhbSwgaWYgYW55ICovCisgICAgRlRfVUxvbmcgICAgICAgICAgICAgIGN2dF9wcm9ncmFtX3NpemU7CisgICAgRlRfQnl0ZSogICAgICAgICAgICAgIGN2dF9wcm9ncmFtOworCisgICAgLyogdGhlIG9yaWdpbmFsLCB1bnNjYWxlZCwgY29udHJvbCB2YWx1ZSB0YWJsZSAqLworICAgIEZUX1VMb25nICAgICAgICAgICAgICBjdnRfc2l6ZTsKKyAgICBGVF9TaG9ydCogICAgICAgICAgICAgY3Z0OworCisgICAgLyogQSBwb2ludGVyIHRvIHRoZSBieXRlY29kZSBpbnRlcnByZXRlciB0byB1c2UuICBUaGlzIGlzIGFsc28gKi8KKyAgICAvKiB1c2VkIHRvIGhvb2sgdGhlIGRlYnVnZ2VyIGZvciB0aGUgYHR0ZGVidWcnIHV0aWxpdHkuICAgICAgICAqLworICAgIFRUX0ludGVycHJldGVyICAgICAgICBpbnRlcnByZXRlcjsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCisgICAgLyogVXNlIHVucGF0ZW50ZWQgaGludGluZyBvbmx5LiAqLworICAgIEZUX0Jvb2wgICAgICAgICAgICAgICB1bnBhdGVudGVkX2hpbnRpbmc7CisjZW5kaWYKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogT3RoZXIgdGFibGVzIG9yIGZpZWxkcy4gVGhpcyBpcyB1c2VkIGJ5IGRlcml2YXRpdmUgZm9ybWF0cyBsaWtlICAgICAqLworICAgIC8qIE9wZW5UeXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgICAgRlRfR2VuZXJpYyAgICAgICAgICAgIGV4dHJhOworCisgICAgY29uc3QgY2hhciogICAgICAgICAgIHBvc3RzY3JpcHRfbmFtZTsKKworICAgIEZUX1VMb25nICAgICAgICAgICAgICBnbHlmX2xlbjsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyAgICBGVF9Cb29sICAgICAgICAgICAgICAgZG9ibGVuZDsKKyAgICBHWF9CbGVuZCAgICAgICAgICAgICAgYmxlbmQ7CisjZW5kaWYKKworICAgIC8qIHNpbmNlIHZlcnNpb24gMi4yICovCisKKyAgICBGVF9CeXRlKiAgICAgICAgICAgICAgaG9yel9tZXRyaWNzOworICAgIEZUX1VMb25nICAgICAgICAgICAgICBob3J6X21ldHJpY3Nfc2l6ZTsKKworICAgIEZUX0J5dGUqICAgICAgICAgICAgICB2ZXJ0X21ldHJpY3M7CisgICAgRlRfVUxvbmcgICAgICAgICAgICAgIHZlcnRfbWV0cmljc19zaXplOworCisgICAgRlRfVUxvbmcgICAgICAgICAgICAgIG51bV9sb2NhdGlvbnM7IC8qIGluIGJyb2tlbiBUVEYsIGdpZCA+IDB4RkZGRiAqLworICAgIEZUX0J5dGUqICAgICAgICAgICAgICBnbHlwaF9sb2NhdGlvbnM7CisKKyAgICBGVF9CeXRlKiAgICAgICAgICAgICAgaGRteF90YWJsZTsKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgaGRteF90YWJsZV9zaXplOworICAgIEZUX1VJbnQgICAgICAgICAgICAgICBoZG14X3JlY29yZF9jb3VudDsKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgaGRteF9yZWNvcmRfc2l6ZTsKKyAgICBGVF9CeXRlKiAgICAgICAgICAgICAgaGRteF9yZWNvcmRfc2l6ZXM7CisKKyAgICBGVF9CeXRlKiAgICAgICAgICAgICAgc2JpdF90YWJsZTsKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgc2JpdF90YWJsZV9zaXplOworICAgIEZUX1VJbnQgICAgICAgICAgICAgICBzYml0X251bV9zdHJpa2VzOworCisgICAgRlRfQnl0ZSogICAgICAgICAgICAgIGtlcm5fdGFibGU7CisgICAgRlRfVUxvbmcgICAgICAgICAgICAgIGtlcm5fdGFibGVfc2l6ZTsKKyAgICBGVF9VSW50ICAgICAgICAgICAgICAgbnVtX2tlcm5fdGFibGVzOworICAgIEZUX1VJbnQzMiAgICAgICAgICAgICBrZXJuX2F2YWlsX2JpdHM7CisgICAgRlRfVUludDMyICAgICAgICAgICAgIGtlcm5fb3JkZXJfYml0czsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fQkRGCisgICAgVFRfQkRGUmVjICAgICAgICAgICAgIGJkZjsKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX0JERiAqLworCisgICAgLyogc2luY2UgMi4zLjAgKi8KKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgaG9yel9tZXRyaWNzX29mZnNldDsKKyAgICBGVF9VTG9uZyAgICAgICAgICAgICAgdmVydF9tZXRyaWNzX29mZnNldDsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgIC8qIHNpbmNlIDIuNC4xMiAqLworICAgIEZUX1VMb25nICAgICAgICAgICAgICBzcGhfZm91bmRfZnVuY19mbGFnczsgLyogc3BlY2lhbCBmdW5jdGlvbnMgZm91bmQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciB0aGlzIGZhY2UgICAgICAgICAgICovCisgICAgRlRfQm9vbCAgICAgICAgICAgICAgIHNwaF9jb21wYXRpYmlsaXR5X21vZGU7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgfSBUVF9GYWNlUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIFRUX0dseXBoWm9uZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIEEgZ2x5cGggem9uZSBpcyB1c2VkIHRvIGxvYWQsIHNjYWxlIGFuZCBoaW50IGdseXBoIG91dGxpbmUgICAgICAgICovCisgIC8qICAgICBjb29yZGluYXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBtZW1vcnkgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIG1lbW9yeSBtYW5hZ2VyLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIG1heF9wb2ludHMgICA6OiBUaGUgbWF4aW11bSBzaXplIGluIHBvaW50cyBvZiB0aGUgem9uZS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgbWF4X2NvbnRvdXJzIDo6IE1heCBzaXplIGluIGxpbmtzIGNvbnRvdXJzIG9mIHRoZSB6b25lLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBuX3BvaW50cyAgICAgOjogVGhlIGN1cnJlbnQgbnVtYmVyIG9mIHBvaW50cyBpbiB0aGUgem9uZS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIG5fY29udG91cnMgICA6OiBUaGUgY3VycmVudCBudW1iZXIgb2YgY29udG91cnMgaW4gdGhlIHpvbmUuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgb3JnICAgICAgICAgIDo6IFRoZSBvcmlnaW5hbCBnbHlwaCBjb29yZGluYXRlcyAoZm9udCAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICB1bml0cy9zY2FsZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgY3VyICAgICAgICAgIDo6IFRoZSBjdXJyZW50IGdseXBoIGNvb3JkaW5hdGVzIChzY2FsZWQvaGludGVkKS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICB0YWdzICAgICAgICAgOjogVGhlIHBvaW50IGNvbnRyb2wgdGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGNvbnRvdXJzICAgICA6OiBUaGUgY29udG91cnMgZW5kIHBvaW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgZmlyc3RfcG9pbnQgIDo6IE9mZnNldCBvZiB0aGUgY3VycmVudCBzdWJnbHlwaCdzIGZpcnN0IHBvaW50LiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9HbHlwaFpvbmVSZWNfCisgIHsKKyAgICBGVF9NZW1vcnkgICBtZW1vcnk7CisgICAgRlRfVVNob3J0ICAgbWF4X3BvaW50czsKKyAgICBGVF9VU2hvcnQgICBtYXhfY29udG91cnM7CisgICAgRlRfVVNob3J0ICAgbl9wb2ludHM7ICAgIC8qIG51bWJlciBvZiBwb2ludHMgaW4gem9uZSAgICAqLworICAgIEZUX1Nob3J0ICAgIG5fY29udG91cnM7ICAvKiBudW1iZXIgb2YgY29udG91cnMgICAgICAgICAgKi8KKworICAgIEZUX1ZlY3RvciogIG9yZzsgICAgICAgICAvKiBvcmlnaW5hbCBwb2ludCBjb29yZGluYXRlcyAgKi8KKyAgICBGVF9WZWN0b3IqICBjdXI7ICAgICAgICAgLyogY3VycmVudCBwb2ludCBjb29yZGluYXRlcyAgICovCisgICAgRlRfVmVjdG9yKiAgb3J1czsgICAgICAgIC8qIG9yaWdpbmFsICh1bnNjYWxlZCkgcG9pbnQgY29vcmRpbmF0ZXMgKi8KKworICAgIEZUX0J5dGUqICAgIHRhZ3M7ICAgICAgICAvKiBjdXJyZW50IHRvdWNoIGZsYWdzICAgICAgICAgKi8KKyAgICBGVF9VU2hvcnQqICBjb250b3VyczsgICAgLyogY29udG91ciBlbmQgcG9pbnRzICAgICAgICAgICovCisKKyAgICBGVF9VU2hvcnQgICBmaXJzdF9wb2ludDsgLyogb2Zmc2V0IG9mIGZpcnN0ICgjMCkgcG9pbnQgICovCisKKyAgfSBUVF9HbHlwaFpvbmVSZWMsICpUVF9HbHlwaFpvbmU7CisKKworICAvKiBoYW5kbGUgdG8gZXhlY3V0aW9uIGNvbnRleHQgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgVFRfRXhlY0NvbnRleHRSZWNfKiAgVFRfRXhlY0NvbnRleHQ7CisKKyAgLyogZ2x5cGggbG9hZGVyIHN0cnVjdHVyZSAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfTG9hZGVyUmVjXworICB7CisgICAgRlRfRmFjZSAgICAgICAgICBmYWNlOworICAgIEZUX1NpemUgICAgICAgICAgc2l6ZTsKKyAgICBGVF9HbHlwaFNsb3QgICAgIGdseXBoOworICAgIEZUX0dseXBoTG9hZGVyICAgZ2xvYWRlcjsKKworICAgIEZUX1VMb25nICAgICAgICAgbG9hZF9mbGFnczsKKyAgICBGVF9VSW50ICAgICAgICAgIGdseXBoX2luZGV4OworCisgICAgRlRfU3RyZWFtICAgICAgICBzdHJlYW07CisgICAgRlRfSW50ICAgICAgICAgICBieXRlX2xlbjsKKworICAgIEZUX1Nob3J0ICAgICAgICAgbl9jb250b3VyczsKKyAgICBGVF9CQm94ICAgICAgICAgIGJib3g7CisgICAgRlRfSW50ICAgICAgICAgICBsZWZ0X2JlYXJpbmc7CisgICAgRlRfSW50ICAgICAgICAgICBhZHZhbmNlOworICAgIEZUX0ludCAgICAgICAgICAgbGluZWFyOworICAgIEZUX0Jvb2wgICAgICAgICAgbGluZWFyX2RlZjsKKyAgICBGVF9Cb29sICAgICAgICAgIHByZXNlcnZlX3BwczsKKyAgICBGVF9WZWN0b3IgICAgICAgIHBwMTsKKyAgICBGVF9WZWN0b3IgICAgICAgIHBwMjsKKworICAgIEZUX1VMb25nICAgICAgICAgZ2x5Zl9vZmZzZXQ7CisKKyAgICAvKiB0aGUgem9uZSB3aGVyZSB3ZSBsb2FkIG91ciBnbHlwaHMgKi8KKyAgICBUVF9HbHlwaFpvbmVSZWMgIGJhc2U7CisgICAgVFRfR2x5cGhab25lUmVjICB6b25lOworCisgICAgVFRfRXhlY0NvbnRleHQgICBleGVjOworICAgIEZUX0J5dGUqICAgICAgICAgaW5zdHJ1Y3Rpb25zOworICAgIEZUX1VMb25nICAgICAgICAgaW5zX3BvczsKKworICAgIC8qIGZvciBwb3NzaWJsZSBleHRlbnNpYmlsaXR5IGluIG90aGVyIGZvcm1hdHMgKi8KKyAgICB2b2lkKiAgICAgICAgICAgIG90aGVyOworCisgICAgLyogc2luY2UgdmVyc2lvbiAyLjEuOCAqLworICAgIEZUX0ludCAgICAgICAgICAgdG9wX2JlYXJpbmc7CisgICAgRlRfSW50ICAgICAgICAgICB2YWR2YW5jZTsKKyAgICBGVF9WZWN0b3IgICAgICAgIHBwMzsKKyAgICBGVF9WZWN0b3IgICAgICAgIHBwNDsKKworICAgIC8qIHNpbmNlIHZlcnNpb24gMi4yLjEgKi8KKyAgICBGVF9CeXRlKiAgICAgICAgIGN1cnNvcjsKKyAgICBGVF9CeXRlKiAgICAgICAgIGxpbWl0OworCisgIH0gVFRfTG9hZGVyUmVjOworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fVFRUWVBFU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MzAwOTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oCkBAIC0wLDAgKzEsNjYyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MXRhYmxlcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQmFzaWMgVHlwZSAxL1R5cGUgMiB0YWJsZXMgZGVmaW5pdGlvbnMgYW5kIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbiAgKi8KKy8qICAgIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDQsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVDFUQUJMRVNfSF9fCisjZGVmaW5lIF9fVDFUQUJMRVNfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0eXBlMV90YWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUaXRsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUeXBlIDEgVGFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxBYnN0cmFjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUeXBlfjEgKFBvc3RTY3JpcHQpIHNwZWNpZmljIGZvbnQgdGFibGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGRlZmluaXRpb24gb2YgVHlwZSAxLXNwZWNpZmljIHRhYmxlcywgICAgKi8KKyAgLyogICAgaW5jbHVkaW5nIHN0cnVjdHVyZXMgcmVsYXRlZCB0byBvdGhlciBQb3N0U2NyaXB0IGZvbnQgZm9ybWF0cy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIE5vdGUgdGhhdCB3ZSBzZXBhcmF0ZSBmb250IGRhdGEgaW4gUFNfRm9udEluZm9SZWMgYW5kIFBTX1ByaXZhdGVSZWMgKi8KKyAgLyogc3RydWN0dXJlcyBpbiBvcmRlciB0byBzdXBwb3J0IE11bHRpcGxlIE1hc3RlciBmb250cy4gICAgICAgICAgICAgICAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUFNfRm9udEluZm9SZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCBhIFR5cGV+MSBvciBUeXBlfjIgRm9udEluZm8gZGljdGlvbmFyeS4gICovCisgIC8qICAgIE5vdGUgdGhhdCBmb3IgTXVsdGlwbGUgTWFzdGVyIGZvbnRzLCBlYWNoIGluc3RhbmNlIGhhcyBpdHMgb3duICAgICAqLworICAvKiAgICBGb250SW5mbyBkaWN0aW9uYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19Gb250SW5mb1JlY18KKyAgeworICAgIEZUX1N0cmluZyogIHZlcnNpb247CisgICAgRlRfU3RyaW5nKiAgbm90aWNlOworICAgIEZUX1N0cmluZyogIGZ1bGxfbmFtZTsKKyAgICBGVF9TdHJpbmcqICBmYW1pbHlfbmFtZTsKKyAgICBGVF9TdHJpbmcqICB3ZWlnaHQ7CisgICAgRlRfTG9uZyAgICAgaXRhbGljX2FuZ2xlOworICAgIEZUX0Jvb2wgICAgIGlzX2ZpeGVkX3BpdGNoOworICAgIEZUX1Nob3J0ICAgIHVuZGVybGluZV9wb3NpdGlvbjsKKyAgICBGVF9VU2hvcnQgICB1bmRlcmxpbmVfdGhpY2tuZXNzOworCisgIH0gUFNfRm9udEluZm9SZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQU19Gb250SW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIEBQU19Gb250SW5mb1JlYyBzdHJ1Y3R1cmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IFBTX0ZvbnRJbmZvUmVjXyogIFBTX0ZvbnRJbmZvOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVDFfRm9udEluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQgdG8gQFBTX0ZvbnRJbmZvUmVjLiAgSXQgaXMgZGVwcmVjYXRlZCBidXQgICovCisgIC8qICAgIGtlcHQgdG8gbWFpbnRhaW4gc291cmNlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB2YXJpb3VzIHZlcnNpb25zIG9mICAqLworICAvKiAgICBGcmVlVHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgUFNfRm9udEluZm9SZWMgIFQxX0ZvbnRJbmZvOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUFNfUHJpdmF0ZVJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCBhIFR5cGV+MSBvciBUeXBlfjIgcHJpdmF0ZSBkaWN0aW9uYXJ5LiAgICovCisgIC8qICAgIE5vdGUgdGhhdCBmb3IgTXVsdGlwbGUgTWFzdGVyIGZvbnRzLCBlYWNoIGluc3RhbmNlIGhhcyBpdHMgb3duICAgICAqLworICAvKiAgICBQcml2YXRlIGRpY3Rpb25hcnkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19Qcml2YXRlUmVjXworICB7CisgICAgRlRfSW50ICAgICB1bmlxdWVfaWQ7CisgICAgRlRfSW50ICAgICBsZW5JVjsKKworICAgIEZUX0J5dGUgICAgbnVtX2JsdWVfdmFsdWVzOworICAgIEZUX0J5dGUgICAgbnVtX290aGVyX2JsdWVzOworICAgIEZUX0J5dGUgICAgbnVtX2ZhbWlseV9ibHVlczsKKyAgICBGVF9CeXRlICAgIG51bV9mYW1pbHlfb3RoZXJfYmx1ZXM7CisKKyAgICBGVF9TaG9ydCAgIGJsdWVfdmFsdWVzWzE0XTsKKyAgICBGVF9TaG9ydCAgIG90aGVyX2JsdWVzWzEwXTsKKworICAgIEZUX1Nob3J0ICAgZmFtaWx5X2JsdWVzICAgICAgWzE0XTsKKyAgICBGVF9TaG9ydCAgIGZhbWlseV9vdGhlcl9ibHVlc1sxMF07CisKKyAgICBGVF9GaXhlZCAgIGJsdWVfc2NhbGU7CisgICAgRlRfSW50ICAgICBibHVlX3NoaWZ0OworICAgIEZUX0ludCAgICAgYmx1ZV9mdXp6OworCisgICAgRlRfVVNob3J0ICBzdGFuZGFyZF93aWR0aFsxXTsKKyAgICBGVF9VU2hvcnQgIHN0YW5kYXJkX2hlaWdodFsxXTsKKworICAgIEZUX0J5dGUgICAgbnVtX3NuYXBfd2lkdGhzOworICAgIEZUX0J5dGUgICAgbnVtX3NuYXBfaGVpZ2h0czsKKyAgICBGVF9Cb29sICAgIGZvcmNlX2JvbGQ7CisgICAgRlRfQm9vbCAgICByb3VuZF9zdGVtX3VwOworCisgICAgRlRfU2hvcnQgICBzbmFwX3dpZHRocyBbMTNdOyAgLyogaW5jbHVkaW5nIHN0ZCB3aWR0aCAgKi8KKyAgICBGVF9TaG9ydCAgIHNuYXBfaGVpZ2h0c1sxM107ICAvKiBpbmNsdWRpbmcgc3RkIGhlaWdodCAqLworCisgICAgRlRfRml4ZWQgICBleHBhbnNpb25fZmFjdG9yOworCisgICAgRlRfTG9uZyAgICBsYW5ndWFnZV9ncm91cDsKKyAgICBGVF9Mb25nICAgIHBhc3N3b3JkOworCisgICAgRlRfU2hvcnQgICBtaW5fZmVhdHVyZVsyXTsKKworICB9IFBTX1ByaXZhdGVSZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQU19Qcml2YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIEBQU19Qcml2YXRlUmVjIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IFBTX1ByaXZhdGVSZWNfKiAgUFNfUHJpdmF0ZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFQxX1ByaXZhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQgdG8gQFBTX1ByaXZhdGVSZWMuICBJdCBpcyBkZXByZWNhdGVkIGJ1dCAgICAqLworICAvKiAgIGtlcHQgdG8gbWFpbnRhaW4gc291cmNlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB2YXJpb3VzIHZlcnNpb25zIG9mICAgKi8KKyAgLyogICBGcmVlVHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIFBTX1ByaXZhdGVSZWMgIFQxX1ByaXZhdGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUMV9CbGVuZF9GbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHNldCBvZiBmbGFncyB1c2VkIHRvIGluZGljYXRlIHdoaWNoIGZpZWxkcyBhcmUgcHJlc2VudCBpbiBhICAgICAgKi8KKyAgLyogICAgZ2l2ZW4gYmxlbmQgZGljdGlvbmFyeSAoZm9udCBpbmZvIG9yIHByaXZhdGUpLiAgVXNlZCB0byBzdXBwb3J0ICAgICovCisgIC8qICAgIE11bHRpcGxlIE1hc3RlcnMgZm9udHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBlbnVtICBUMV9CbGVuZF9GbGFnc18KKyAgeworICAgIC8qIyByZXF1aXJlZCBmaWVsZHMgaW4gYSBGb250SW5mbyBibGVuZCBkaWN0aW9uYXJ5ICovCisgICAgVDFfQkxFTkRfVU5ERVJMSU5FX1BPU0lUSU9OID0gMCwKKyAgICBUMV9CTEVORF9VTkRFUkxJTkVfVEhJQ0tORVNTLAorICAgIFQxX0JMRU5EX0lUQUxJQ19BTkdMRSwKKworICAgIC8qIyByZXF1aXJlZCBmaWVsZHMgaW4gYSBQcml2YXRlIGJsZW5kIGRpY3Rpb25hcnkgKi8KKyAgICBUMV9CTEVORF9CTFVFX1ZBTFVFUywKKyAgICBUMV9CTEVORF9PVEhFUl9CTFVFUywKKyAgICBUMV9CTEVORF9TVEFOREFSRF9XSURUSCwKKyAgICBUMV9CTEVORF9TVEFOREFSRF9IRUlHSFQsCisgICAgVDFfQkxFTkRfU1RFTV9TTkFQX1dJRFRIUywKKyAgICBUMV9CTEVORF9TVEVNX1NOQVBfSEVJR0hUUywKKyAgICBUMV9CTEVORF9CTFVFX1NDQUxFLAorICAgIFQxX0JMRU5EX0JMVUVfU0hJRlQsCisgICAgVDFfQkxFTkRfRkFNSUxZX0JMVUVTLAorICAgIFQxX0JMRU5EX0ZBTUlMWV9PVEhFUl9CTFVFUywKKyAgICBUMV9CTEVORF9GT1JDRV9CT0xELAorCisgICAgLyojIG5ldmVyIHJlbW92ZSAqLworICAgIFQxX0JMRU5EX01BWAorCisgIH0gVDFfQmxlbmRfRmxhZ3M7CisKKyAgLyogKi8KKworCisgIC8qIyBiYWNrd2FyZHMgY29tcGF0aWJsZSBkZWZpbml0aW9ucyAqLworI2RlZmluZSB0MV9ibGVuZF91bmRlcmxpbmVfcG9zaXRpb24gICBUMV9CTEVORF9VTkRFUkxJTkVfUE9TSVRJT04KKyNkZWZpbmUgdDFfYmxlbmRfdW5kZXJsaW5lX3RoaWNrbmVzcyAgVDFfQkxFTkRfVU5ERVJMSU5FX1RISUNLTkVTUworI2RlZmluZSB0MV9ibGVuZF9pdGFsaWNfYW5nbGUgICAgICAgICBUMV9CTEVORF9JVEFMSUNfQU5HTEUKKyNkZWZpbmUgdDFfYmxlbmRfYmx1ZV92YWx1ZXMgICAgICAgICAgVDFfQkxFTkRfQkxVRV9WQUxVRVMKKyNkZWZpbmUgdDFfYmxlbmRfb3RoZXJfYmx1ZXMgICAgICAgICAgVDFfQkxFTkRfT1RIRVJfQkxVRVMKKyNkZWZpbmUgdDFfYmxlbmRfc3RhbmRhcmRfd2lkdGhzICAgICAgVDFfQkxFTkRfU1RBTkRBUkRfV0lEVEgKKyNkZWZpbmUgdDFfYmxlbmRfc3RhbmRhcmRfaGVpZ2h0ICAgICAgVDFfQkxFTkRfU1RBTkRBUkRfSEVJR0hUCisjZGVmaW5lIHQxX2JsZW5kX3N0ZW1fc25hcF93aWR0aHMgICAgIFQxX0JMRU5EX1NURU1fU05BUF9XSURUSFMKKyNkZWZpbmUgdDFfYmxlbmRfc3RlbV9zbmFwX2hlaWdodHMgICAgVDFfQkxFTkRfU1RFTV9TTkFQX0hFSUdIVFMKKyNkZWZpbmUgdDFfYmxlbmRfYmx1ZV9zY2FsZSAgICAgICAgICAgVDFfQkxFTkRfQkxVRV9TQ0FMRQorI2RlZmluZSB0MV9ibGVuZF9ibHVlX3NoaWZ0ICAgICAgICAgICBUMV9CTEVORF9CTFVFX1NISUZUCisjZGVmaW5lIHQxX2JsZW5kX2ZhbWlseV9ibHVlcyAgICAgICAgIFQxX0JMRU5EX0ZBTUlMWV9CTFVFUworI2RlZmluZSB0MV9ibGVuZF9mYW1pbHlfb3RoZXJfYmx1ZXMgICBUMV9CTEVORF9GQU1JTFlfT1RIRVJfQkxVRVMKKyNkZWZpbmUgdDFfYmxlbmRfZm9yY2VfYm9sZCAgICAgICAgICAgVDFfQkxFTkRfRk9SQ0VfQk9MRAorI2RlZmluZSB0MV9ibGVuZF9tYXggICAgICAgICAgICAgICAgICBUMV9CTEVORF9NQVgKKworCisgIC8qIG1heGltdW0gbnVtYmVyIG9mIE11bHRpcGxlIE1hc3RlcnMgZGVzaWducywgYXMgZGVmaW5lZCBpbiB0aGUgc3BlYyAqLworI2RlZmluZSBUMV9NQVhfTU1fREVTSUdOUyAgICAgMTYKKworICAvKiBtYXhpbXVtIG51bWJlciBvZiBNdWx0aXBsZSBNYXN0ZXJzIGF4ZXMsIGFzIGRlZmluZWQgaW4gdGhlIHNwZWMgKi8KKyNkZWZpbmUgVDFfTUFYX01NX0FYSVMgICAgICAgIDQKKworICAvKiBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIGRlc2lnbiBtYXAgKi8KKyNkZWZpbmUgVDFfTUFYX01NX01BUF9QT0lOVFMgIDIwCisKKworICAvKiB0aGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHN0b3JlIHRoZSBCbGVuZERlc2lnbk1hcCBlbnRyeSBmb3IgYW4gYXhpcyAqLworICB0eXBlZGVmIHN0cnVjdCAgUFNfRGVzaWduTWFwXworICB7CisgICAgRlRfQnl0ZSAgICBudW1fcG9pbnRzOworICAgIEZUX0xvbmcqICAgZGVzaWduX3BvaW50czsKKyAgICBGVF9GaXhlZCogIGJsZW5kX3BvaW50czsKKworICB9IFBTX0Rlc2lnbk1hcFJlYywgKlBTX0Rlc2lnbk1hcDsKKworICAvKiBiYWNrd2FyZHMtY29tcGF0aWJsZSBkZWZpbml0aW9uICovCisgIHR5cGVkZWYgUFNfRGVzaWduTWFwUmVjICBUMV9EZXNpZ25NYXA7CisKKworICB0eXBlZGVmIHN0cnVjdCAgUFNfQmxlbmRSZWNfCisgIHsKKyAgICBGVF9VSW50ICAgICAgICAgIG51bV9kZXNpZ25zOworICAgIEZUX1VJbnQgICAgICAgICAgbnVtX2F4aXM7CisKKyAgICBGVF9TdHJpbmcqICAgICAgIGF4aXNfbmFtZXNbVDFfTUFYX01NX0FYSVNdOworICAgIEZUX0ZpeGVkKiAgICAgICAgZGVzaWduX3Bvc1tUMV9NQVhfTU1fREVTSUdOU107CisgICAgUFNfRGVzaWduTWFwUmVjICBkZXNpZ25fbWFwW1QxX01BWF9NTV9BWElTXTsKKworICAgIEZUX0ZpeGVkKiAgICAgICAgd2VpZ2h0X3ZlY3RvcjsKKyAgICBGVF9GaXhlZCogICAgICAgIGRlZmF1bHRfd2VpZ2h0X3ZlY3RvcjsKKworICAgIFBTX0ZvbnRJbmZvICAgICAgZm9udF9pbmZvc1tUMV9NQVhfTU1fREVTSUdOUyArIDFdOworICAgIFBTX1ByaXZhdGUgICAgICAgcHJpdmF0ZXMgIFtUMV9NQVhfTU1fREVTSUdOUyArIDFdOworCisgICAgRlRfVUxvbmcgICAgICAgICBibGVuZF9iaXRmbGFnczsKKworICAgIEZUX0JCb3gqICAgICAgICAgYmJveGVzICAgIFtUMV9NQVhfTU1fREVTSUdOUyArIDFdOworCisgICAgLyogc2luY2UgMi4zLjAgKi8KKworICAgIC8qIHVuZG9jdW1lbnRlZCwgb3B0aW9uYWw6IHRoZSBkZWZhdWx0IGRlc2lnbiBpbnN0YW5jZTsgICAqLworICAgIC8qIGNvcnJlc3BvbmRzIHRvIGRlZmF1bHRfd2VpZ2h0X3ZlY3RvciAtLSAgICAgICAgICAgICAgICAqLworICAgIC8qIG51bV9kZWZhdWx0X2Rlc2lnbl92ZWN0b3IgPT0gMCBtZWFucyBpdCBpcyBub3QgcHJlc2VudCAqLworICAgIC8qIGluIHRoZSBmb250IGFuZCBhc3NvY2lhdGVkIG1ldHJpY3MgZmlsZXMgICAgICAgICAgICAgICAqLworICAgIEZUX1VJbnQgICAgICAgICAgZGVmYXVsdF9kZXNpZ25fdmVjdG9yW1QxX01BWF9NTV9ERVNJR05TXTsKKyAgICBGVF9VSW50ICAgICAgICAgIG51bV9kZWZhdWx0X2Rlc2lnbl92ZWN0b3I7CisKKyAgfSBQU19CbGVuZFJlYywgKlBTX0JsZW5kOworCisKKyAgLyogYmFja3dhcmRzLWNvbXBhdGlibGUgZGVmaW5pdGlvbiAqLworICB0eXBlZGVmIFBTX0JsZW5kUmVjICBUMV9CbGVuZDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENJRF9GYWNlRGljdFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gcmVwcmVzZW50IGRhdGEgaW4gYSBDSUQgdG9wLWxldmVsIGRpY3Rpb25hcnkuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIENJRF9GYWNlRGljdFJlY18KKyAgeworICAgIFBTX1ByaXZhdGVSZWMgIHByaXZhdGVfZGljdDsKKworICAgIEZUX1VJbnQgICAgICAgIGxlbl9idWlsZGNoYXI7CisgICAgRlRfRml4ZWQgICAgICAgZm9yY2Vib2xkX3RocmVzaG9sZDsKKyAgICBGVF9Qb3MgICAgICAgICBzdHJva2Vfd2lkdGg7CisgICAgRlRfRml4ZWQgICAgICAgZXhwYW5zaW9uX2ZhY3RvcjsKKworICAgIEZUX0J5dGUgICAgICAgIHBhaW50X3R5cGU7CisgICAgRlRfQnl0ZSAgICAgICAgZm9udF90eXBlOworICAgIEZUX01hdHJpeCAgICAgIGZvbnRfbWF0cml4OworICAgIEZUX1ZlY3RvciAgICAgIGZvbnRfb2Zmc2V0OworCisgICAgRlRfVUludCAgICAgICAgbnVtX3N1YnJzOworICAgIEZUX1VMb25nICAgICAgIHN1YnJtYXBfb2Zmc2V0OworICAgIEZUX0ludCAgICAgICAgIHNkX2J5dGVzOworCisgIH0gQ0lEX0ZhY2VEaWN0UmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ0lEX0ZhY2VEaWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBAQ0lEX0ZhY2VEaWN0UmVjIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBDSURfRmFjZURpY3RSZWNfKiAgQ0lEX0ZhY2VEaWN0OworCisgIC8qICovCisKKworICAvKiBiYWNrd2FyZHMtY29tcGF0aWJsZSBkZWZpbml0aW9uICovCisgIHR5cGVkZWYgQ0lEX0ZhY2VEaWN0UmVjICBDSURfRm9udERpY3Q7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDSURfRmFjZUluZm9SZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIHJlcHJlc2VudCBDSUQgRmFjZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBDSURfRmFjZUluZm9SZWNfCisgIHsKKyAgICBGVF9TdHJpbmcqICAgICAgY2lkX2ZvbnRfbmFtZTsKKyAgICBGVF9GaXhlZCAgICAgICAgY2lkX3ZlcnNpb247CisgICAgRlRfSW50ICAgICAgICAgIGNpZF9mb250X3R5cGU7CisKKyAgICBGVF9TdHJpbmcqICAgICAgcmVnaXN0cnk7CisgICAgRlRfU3RyaW5nKiAgICAgIG9yZGVyaW5nOworICAgIEZUX0ludCAgICAgICAgICBzdXBwbGVtZW50OworCisgICAgUFNfRm9udEluZm9SZWMgIGZvbnRfaW5mbzsKKyAgICBGVF9CQm94ICAgICAgICAgZm9udF9iYm94OworICAgIEZUX1VMb25nICAgICAgICB1aWRfYmFzZTsKKworICAgIEZUX0ludCAgICAgICAgICBudW1feHVpZDsKKyAgICBGVF9VTG9uZyAgICAgICAgeHVpZFsxNl07CisKKyAgICBGVF9VTG9uZyAgICAgICAgY2lkbWFwX29mZnNldDsKKyAgICBGVF9JbnQgICAgICAgICAgZmRfYnl0ZXM7CisgICAgRlRfSW50ICAgICAgICAgIGdkX2J5dGVzOworICAgIEZUX1VMb25nICAgICAgICBjaWRfY291bnQ7CisKKyAgICBGVF9JbnQgICAgICAgICAgbnVtX2RpY3RzOworICAgIENJRF9GYWNlRGljdCAgICBmb250X2RpY3RzOworCisgICAgRlRfVUxvbmcgICAgICAgIGRhdGFfb2Zmc2V0OworCisgIH0gQ0lEX0ZhY2VJbmZvUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ0lEX0ZhY2VJbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBAQ0lEX0ZhY2VJbmZvUmVjIHN0cnVjdHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBDSURfRmFjZUluZm9SZWNfKiAgQ0lEX0ZhY2VJbmZvOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ0lEX0luZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBUaGlzIHR5cGUgaXMgZXF1aXZhbGVudCB0byBAQ0lEX0ZhY2VJbmZvUmVjLiAgSXQgaXMgZGVwcmVjYXRlZCBidXQgICovCisgIC8qICAga2VwdCB0byBtYWludGFpbiBzb3VyY2UgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIHZhcmlvdXMgdmVyc2lvbnMgb2YgICAqLworICAvKiAgIEZyZWVUeXBlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgQ0lEX0ZhY2VJbmZvUmVjICBDSURfSW5mbzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgICBGVF9IYXNfUFNfR2x5cGhfTmFtZXMKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgICBSZXR1cm4gdHJ1ZSBpZiBhIGdpdmVuIGZhY2UgcHJvdmlkZXMgcmVsaWFibGUgUG9zdFNjcmlwdCBnbHlwaAorICAgKiAgICBuYW1lcy4gIFRoaXMgaXMgc2ltaWxhciB0byB1c2luZyB0aGUgQEZUX0hBU19HTFlQSF9OQU1FUyBtYWNybywKKyAgICogICAgZXhjZXB0IHRoYXQgY2VydGFpbiBmb250cyAobW9zdGx5IFRydWVUeXBlKSBjb250YWluIGluY29ycmVjdAorICAgKiAgICBnbHlwaCBuYW1lIHRhYmxlcy4KKyAgICoKKyAgICogICAgV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlIGNhbGxlciBpcyBzdXJlIHRoYXQgdGhlIGdseXBoCisgICAqICAgIG5hbWVzIHJldHVybmVkIGJ5IEBGVF9HZXRfR2x5cGhfTmFtZSBhcmUgcmVsaWFibGUuCisgICAqCisgICAqIEBpbnB1dDoKKyAgICogICAgZmFjZSA6OgorICAgKiAgICAgICBmYWNlIGhhbmRsZQorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgICBCb29sZWFuLiAgVHJ1ZSBpZiBnbHlwaCBuYW1lcyBhcmUgcmVsaWFibGUuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0ludCApCisgIEZUX0hhc19QU19HbHlwaF9OYW1lcyggRlRfRmFjZSAgZmFjZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZnVuY3Rpb246CisgICAqICAgIEZUX0dldF9QU19Gb250X0luZm8KKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgICBSZXRyaWV2ZSB0aGUgQFBTX0ZvbnRJbmZvUmVjIHN0cnVjdHVyZSBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4KKyAgICogICAgUG9zdFNjcmlwdCBmb250LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgIGZhY2UgOjoKKyAgICogICAgICAgUG9zdFNjcmlwdCBmYWNlIGhhbmRsZS4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICAgYWZvbnRfaW5mbyA6OgorICAgKiAgICAgICBPdXRwdXQgZm9udCBpbmZvIHN0cnVjdHVyZSBwb2ludGVyLgorICAgKgorICAgKiBAcmV0dXJuOgorICAgKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMH5tZWFucyBzdWNjZXNzLgorICAgKgorICAgKiBAbm90ZToKKyAgICogICAgVGhlIHN0cmluZyBwb2ludGVycyB3aXRoaW4gdGhlIGZvbnQgaW5mbyBzdHJ1Y3R1cmUgYXJlIG93bmVkIGJ5CisgICAqICAgIHRoZSBmYWNlIGFuZCBkb24ndCBuZWVkIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIuCisgICAqCisgICAqICAgIElmIHRoZSBmb250J3MgZm9ybWF0IGlzIG5vdCBQb3N0U2NyaXB0LWJhc2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwKKyAgICogICAgcmV0dXJuIHRoZSBgRlRfRXJyX0ludmFsaWRfQXJndW1lbnQnIGVycm9yIGNvZGUuCisgICAqCisgICAqLworICBGVF9FWFBPUlQoIEZUX0Vycm9yICkKKyAgRlRfR2V0X1BTX0ZvbnRfSW5mbyggRlRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIFBTX0ZvbnRJbmZvICBhZm9udF9pbmZvICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBmdW5jdGlvbjoKKyAgICogICAgRlRfR2V0X1BTX0ZvbnRfUHJpdmF0ZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgIFJldHJpZXZlIHRoZSBAUFNfUHJpdmF0ZVJlYyBzdHJ1Y3R1cmUgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuCisgICAqICAgIFBvc3RTY3JpcHQgZm9udC4KKyAgICoKKyAgICogQGlucHV0OgorICAgKiAgICBmYWNlIDo6CisgICAqICAgICAgIFBvc3RTY3JpcHQgZmFjZSBoYW5kbGUuCisgICAqCisgICAqIEBvdXRwdXQ6CisgICAqICAgIGFmb250X3ByaXZhdGUgOjoKKyAgICogICAgICAgT3V0cHV0IHByaXZhdGUgZGljdGlvbmFyeSBzdHJ1Y3R1cmUgcG9pbnRlci4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgIFRoZSBzdHJpbmcgcG9pbnRlcnMgd2l0aGluIHRoZSBAUFNfUHJpdmF0ZVJlYyBzdHJ1Y3R1cmUgYXJlIG93bmVkIGJ5CisgICAqICAgIHRoZSBmYWNlIGFuZCBkb24ndCBuZWVkIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIuCisgICAqCisgICAqICAgIElmIHRoZSBmb250J3MgZm9ybWF0IGlzIG5vdCBQb3N0U2NyaXB0LWJhc2VkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMKKyAgICogICAgdGhlIGBGVF9FcnJfSW52YWxpZF9Bcmd1bWVudCcgZXJyb3IgY29kZS4KKyAgICoKKyAgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9HZXRfUFNfRm9udF9Qcml2YXRlKCBGVF9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQU19Qcml2YXRlICBhZm9udF9wcml2YXRlICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUMV9FbmNvZGluZ1R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIHRoZSBgRW5jb2RpbmcnIGVudHJ5IGluIGEgVHlwZSAxICAgICAgICAgKi8KKyAgLyogICAgZGljdGlvbmFyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIFQxX0VuY29kaW5nVHlwZV8KKyAgeworICAgIFQxX0VOQ09ESU5HX1RZUEVfTk9ORSA9IDAsCisgICAgVDFfRU5DT0RJTkdfVFlQRV9BUlJBWSwKKyAgICBUMV9FTkNPRElOR19UWVBFX1NUQU5EQVJELAorICAgIFQxX0VOQ09ESU5HX1RZUEVfSVNPTEFUSU4xLAorICAgIFQxX0VOQ09ESU5HX1RZUEVfRVhQRVJUCisKKyAgfSBUMV9FbmNvZGluZ1R5cGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQU19EaWN0X0tleXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBlbnVtZXJhdGlvbiB1c2VkIGluIGNhbGxzIHRvIEBGVF9HZXRfUFNfRm9udF9WYWx1ZSB0byBpZGVudGlmeSAgKi8KKyAgLyogICAgdGhlIFR5cGV+MSBkaWN0aW9uYXJ5IGVudHJ5IHRvIHJldHJpZXZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIFBTX0RpY3RfS2V5c18KKyAgeworICAgIC8qIGNvbnZlbnRpb25hbGx5IGluIHRoZSBmb250IGRpY3Rpb25hcnkgKi8KKyAgICBQU19ESUNUX0ZPTlRfVFlQRSwgICAgICAgICAgICAgIC8qIEZUX0J5dGUgICAgICAgICAqLworICAgIFBTX0RJQ1RfRk9OVF9NQVRSSVgsICAgICAgICAgICAgLyogRlRfRml4ZWQgICAgICAgICovCisgICAgUFNfRElDVF9GT05UX0JCT1gsICAgICAgICAgICAgICAvKiBGVF9GaXhlZCAgICAgICAgKi8KKyAgICBQU19ESUNUX1BBSU5UX1RZUEUsICAgICAgICAgICAgIC8qIEZUX0J5dGUgICAgICAgICAqLworICAgIFBTX0RJQ1RfRk9OVF9OQU1FLCAgICAgICAgICAgICAgLyogRlRfU3RyaW5nKiAgICAgICovCisgICAgUFNfRElDVF9VTklRVUVfSUQsICAgICAgICAgICAgICAvKiBGVF9JbnQgICAgICAgICAgKi8KKyAgICBQU19ESUNUX05VTV9DSEFSX1NUUklOR1MsICAgICAgIC8qIEZUX0ludCAgICAgICAgICAqLworICAgIFBTX0RJQ1RfQ0hBUl9TVFJJTkdfS0VZLCAgICAgICAgLyogRlRfU3RyaW5nKiAgICAgICovCisgICAgUFNfRElDVF9DSEFSX1NUUklORywgICAgICAgICAgICAvKiBGVF9TdHJpbmcqICAgICAgKi8KKyAgICBQU19ESUNUX0VOQ09ESU5HX1RZUEUsICAgICAgICAgIC8qIFQxX0VuY29kaW5nVHlwZSAqLworICAgIFBTX0RJQ1RfRU5DT0RJTkdfRU5UUlksICAgICAgICAgLyogRlRfU3RyaW5nKiAgICAgICovCisKKyAgICAvKiBjb252ZW50aW9uYWxseSBpbiB0aGUgZm9udCBQcml2YXRlIGRpY3Rpb25hcnkgKi8KKyAgICBQU19ESUNUX05VTV9TVUJSUywgICAgICAgICAgICAgIC8qIEZUX0ludCAgICAgKi8KKyAgICBQU19ESUNUX1NVQlIsICAgICAgICAgICAgICAgICAgIC8qIEZUX1N0cmluZyogKi8KKyAgICBQU19ESUNUX1NURF9IVywgICAgICAgICAgICAgICAgIC8qIEZUX1VTaG9ydCAgKi8KKyAgICBQU19ESUNUX1NURF9WVywgICAgICAgICAgICAgICAgIC8qIEZUX1VTaG9ydCAgKi8KKyAgICBQU19ESUNUX05VTV9CTFVFX1ZBTFVFUywgICAgICAgIC8qIEZUX0J5dGUgICAgKi8KKyAgICBQU19ESUNUX0JMVUVfVkFMVUUsICAgICAgICAgICAgIC8qIEZUX1Nob3J0ICAgKi8KKyAgICBQU19ESUNUX0JMVUVfRlVaWiwgICAgICAgICAgICAgIC8qIEZUX0ludCAgICAgKi8KKyAgICBQU19ESUNUX05VTV9PVEhFUl9CTFVFUywgICAgICAgIC8qIEZUX0J5dGUgICAgKi8KKyAgICBQU19ESUNUX09USEVSX0JMVUUsICAgICAgICAgICAgIC8qIEZUX1Nob3J0ICAgKi8KKyAgICBQU19ESUNUX05VTV9GQU1JTFlfQkxVRVMsICAgICAgIC8qIEZUX0J5dGUgICAgKi8KKyAgICBQU19ESUNUX0ZBTUlMWV9CTFVFLCAgICAgICAgICAgIC8qIEZUX1Nob3J0ICAgKi8KKyAgICBQU19ESUNUX05VTV9GQU1JTFlfT1RIRVJfQkxVRVMsIC8qIEZUX0J5dGUgICAgKi8KKyAgICBQU19ESUNUX0ZBTUlMWV9PVEhFUl9CTFVFLCAgICAgIC8qIEZUX1Nob3J0ICAgKi8KKyAgICBQU19ESUNUX0JMVUVfU0NBTEUsICAgICAgICAgICAgIC8qIEZUX0ZpeGVkICAgKi8KKyAgICBQU19ESUNUX0JMVUVfU0hJRlQsICAgICAgICAgICAgIC8qIEZUX0ludCAgICAgKi8KKyAgICBQU19ESUNUX05VTV9TVEVNX1NOQVBfSCwgICAgICAgIC8qIEZUX0J5dGUgICAgKi8KKyAgICBQU19ESUNUX1NURU1fU05BUF9ILCAgICAgICAgICAgIC8qIEZUX1Nob3J0ICAgKi8KKyAgICBQU19ESUNUX05VTV9TVEVNX1NOQVBfViwgICAgICAgIC8qIEZUX0J5dGUgICAgKi8KKyAgICBQU19ESUNUX1NURU1fU05BUF9WLCAgICAgICAgICAgIC8qIEZUX1Nob3J0ICAgKi8KKyAgICBQU19ESUNUX0ZPUkNFX0JPTEQsICAgICAgICAgICAgIC8qIEZUX0Jvb2wgICAgKi8KKyAgICBQU19ESUNUX1JORF9TVEVNX1VQLCAgICAgICAgICAgIC8qIEZUX0Jvb2wgICAgKi8KKyAgICBQU19ESUNUX01JTl9GRUFUVVJFLCAgICAgICAgICAgIC8qIEZUX1Nob3J0ICAgKi8KKyAgICBQU19ESUNUX0xFTl9JViwgICAgICAgICAgICAgICAgIC8qIEZUX0ludCAgICAgKi8KKyAgICBQU19ESUNUX1BBU1NXT1JELCAgICAgICAgICAgICAgIC8qIEZUX0xvbmcgICAgKi8KKyAgICBQU19ESUNUX0xBTkdVQUdFX0dST1VQLCAgICAgICAgIC8qIEZUX0xvbmcgICAgKi8KKworICAgIC8qIGNvbnZlbnRpb25hbGx5IGluIHRoZSBmb250IEZvbnRJbmZvIGRpY3Rpb25hcnkgKi8KKyAgICBQU19ESUNUX1ZFUlNJT04sICAgICAgICAgICAgICAgIC8qIEZUX1N0cmluZyogKi8KKyAgICBQU19ESUNUX05PVElDRSwgICAgICAgICAgICAgICAgIC8qIEZUX1N0cmluZyogKi8KKyAgICBQU19ESUNUX0ZVTExfTkFNRSwgICAgICAgICAgICAgIC8qIEZUX1N0cmluZyogKi8KKyAgICBQU19ESUNUX0ZBTUlMWV9OQU1FLCAgICAgICAgICAgIC8qIEZUX1N0cmluZyogKi8KKyAgICBQU19ESUNUX1dFSUdIVCwgICAgICAgICAgICAgICAgIC8qIEZUX1N0cmluZyogKi8KKyAgICBQU19ESUNUX0lTX0ZJWEVEX1BJVENILCAgICAgICAgIC8qIEZUX0Jvb2wgICAgKi8KKyAgICBQU19ESUNUX1VOREVSTElORV9QT1NJVElPTiwgICAgIC8qIEZUX1Nob3J0ICAgKi8KKyAgICBQU19ESUNUX1VOREVSTElORV9USElDS05FU1MsICAgIC8qIEZUX1VTaG9ydCAgKi8KKyAgICBQU19ESUNUX0ZTX1RZUEUsICAgICAgICAgICAgICAgIC8qIEZUX1VTaG9ydCAgKi8KKyAgICBQU19ESUNUX0lUQUxJQ19BTkdMRSwgICAgICAgICAgIC8qIEZUX0xvbmcgICAgKi8KKworICAgIFBTX0RJQ1RfTUFYID0gUFNfRElDVF9JVEFMSUNfQU5HTEUKKworICB9IFBTX0RpY3RfS2V5czsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGZ1bmN0aW9uOgorICAgKiAgICBGVF9HZXRfUFNfRm9udF9WYWx1ZQorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgIFJldHJpZXZlIHRoZSB2YWx1ZSBmb3IgdGhlIHN1cHBsaWVkIGtleSBmcm9tIGEgUG9zdFNjcmlwdCBmb250LgorICAgKgorICAgKiBAaW5wdXQ6CisgICAqICAgIGZhY2UgOjoKKyAgICogICAgICAgUG9zdFNjcmlwdCBmYWNlIGhhbmRsZS4KKyAgICoKKyAgICogICAga2V5IDo6CisgICAqICAgICAgIEFuIGVudW1lcmF0aW9uIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgZGljdGlvbmFyeSBrZXkgdG8gcmV0cmlldmUuCisgICAqCisgICAqICAgIGlkeCA6OgorICAgKiAgICAgICBGb3IgYXJyYXkgdmFsdWVzLCB0aGlzIHNwZWNpZmllcyB0aGUgaW5kZXggdG8gYmUgcmV0dXJuZWQuCisgICAqCisgICAqICAgIHZhbHVlIDo6CisgICAqICAgICAgIEEgcG9pbnRlciB0byBtZW1vcnkgaW50byB3aGljaCB0byB3cml0ZSB0aGUgdmFsdWUuCisgICAqCisgICAqICAgIHZhbGVuX2xlbiA6OgorICAgKiAgICAgICBUaGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBtZW1vcnkgc3VwcGxpZWQgZm9yIHRoZSB2YWx1ZS4KKyAgICoKKyAgICogQG91dHB1dDoKKyAgICogICAgdmFsdWUgOjoKKyAgICogICAgICAgVGhlIHZhbHVlIG1hdGNoaW5nIHRoZSBhYm92ZSBrZXksIGlmIGl0IGV4aXN0cy4KKyAgICoKKyAgICogQHJldHVybjoKKyAgICogICAgVGhlIGFtb3VudCBvZiBtZW1vcnkgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIHRoZSByZXF1ZXN0ZWQKKyAgICogICAgdmFsdWUgKGlmIGl0IGV4aXN0cywgLTEgb3RoZXJ3aXNlKS4KKyAgICoKKyAgICogQG5vdGU6CisgICAqICAgIFRoZSB2YWx1ZXMgcmV0dXJuZWQgYXJlIG5vdCBwb2ludGVycyBpbnRvIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmVzIG9mCisgICAqICAgIHRoZSBmYWNlLCBidXQgYXJlIGBmcmVzaCcgY29waWVzLCBzbyB0aGF0IHRoZSBtZW1vcnkgY29udGFpbmluZyB0aGVtCisgICAqICAgIGJlbG9uZ3MgdG8gdGhlIGNhbGxpbmcgYXBwbGljYXRpb24uICBUaGlzIGFsc28gZW5mb3JjZXMgdGhlCisgICAqICAgIGByZWFkLW9ubHknIG5hdHVyZSBvZiB0aGVzZSB2YWx1ZXMsIGkuZS4sIHRoaXMgZnVuY3Rpb24gY2Fubm90IGJlCisgICAqICAgIHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGUgZmFjZS4KKyAgICoKKyAgICogICAgYHZhbHVlJyBpcyBhIHZvaWQgcG9pbnRlciBiZWNhdXNlIHRoZSB2YWx1ZXMgcmV0dXJuZWQgY2FuIGJlIG9mCisgICAqICAgIHZhcmlvdXMgdHlwZXMuCisgICAqCisgICAqICAgIElmIGVpdGhlciBgdmFsdWUnIGlzIE5VTEwgb3IgYHZhbHVlX2xlbicgaXMgdG9vIHNtYWxsLCBqdXN0IHRoZQorICAgKiAgICByZXF1aXJlZCBtZW1vcnkgc2l6ZSBmb3IgdGhlIHJlcXVlc3RlZCBlbnRyeSBpcyByZXR1cm5lZC4KKyAgICoKKyAgICogICAgVGhlIGBpZHgnIHBhcmFtZXRlciBpcyB1c2VkLCBub3Qgb25seSB0byByZXRyaWV2ZSBlbGVtZW50cyBvZiwgZm9yCisgICAqICAgIGV4YW1wbGUsIHRoZSBGb250TWF0cml4IG9yIEZvbnRCQm94LCBidXQgYWxzbyB0byByZXRyaWV2ZSBuYW1lIGtleXMKKyAgICogICAgZnJvbSB0aGUgQ2hhclN0cmluZ3MgZGljdGlvbmFyeSwgYW5kIHRoZSBjaGFyc3RyaW5ncyB0aGVtc2VsdmVzLiAgSXQKKyAgICogICAgaXMgaWdub3JlZCBmb3IgYXRvbWljIHZhbHVlcy4KKyAgICoKKyAgICogICAgUFNfRElDVF9CTFVFX1NDQUxFIHJldHVybnMgYSB2YWx1ZSB0aGF0IGlzIHNjYWxlZCB1cCBieSAxMDAwLiAgVG8KKyAgICogICAgZ2V0IHRoZSB2YWx1ZSBhcyBpbiB0aGUgZm9udCBzdHJlYW0sIHlvdSBuZWVkIHRvIGRpdmlkZSBieQorICAgKiAgICA2NTUzNjAwMC4wICh0byByZW1vdmUgdGhlIEZUX0ZpeGVkIHNjYWxlLCBhbmQgdGhlIHgxMDAwIHNjYWxlKS4KKyAgICoKKyAgICogICAgSU1QT1JUQU5UOiBPbmx5IGtleS92YWx1ZSBwYWlycyByZWFkIGJ5IHRoZSBGcmVlVHlwZSBpbnRlcnByZXRlciBjYW4KKyAgICogICAgYmUgcmV0cmlldmVkLiAgU28sIGZvciBleGFtcGxlLCBQb3N0U2NyaXB0IHByb2NlZHVyZXMgc3VjaCBhcyBOUCwKKyAgICogICAgTkQsIGFuZCBSRCBhcmUgbm90IGF2YWlsYWJsZS4gIEFyYml0cmFyeSBrZXlzIGFyZSwgb2J2aW91c2x5LCBub3QgYmUKKyAgICogICAgYXZhaWxhYmxlIGVpdGhlci4KKyAgICoKKyAgICogICAgSWYgdGhlIGZvbnQncyBmb3JtYXQgaXMgbm90IFBvc3RTY3JpcHQtYmFzZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucworICAgKiAgICB0aGUgYEZUX0Vycl9JbnZhbGlkX0FyZ3VtZW50JyBlcnJvciBjb2RlLgorICAgKgorICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9Mb25nICkKKyAgRlRfR2V0X1BTX0ZvbnRfVmFsdWUoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBTX0RpY3RfS2V5cyAga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICAgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICB2YWx1ZV9sZW4gKTsKKworICAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1QxVEFCTEVTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYyYmY5MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmgKQEAgLTAsMCArMSwxMjM3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dG5hbWVpZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHJ1ZVR5cGUgbmFtZSBJRCBkZWZpbml0aW9ucyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNCwgMjAwNi0yMDA4LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVE5BTUVJRF9IX18KKyNkZWZpbmUgX19UVE5BTUVJRF9IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFNlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRydWV0eXBlX3RhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogUG9zc2libGUgdmFsdWVzIGZvciB0aGUgYHBsYXRmb3JtJyBpZGVudGlmaWVyIGNvZGUgaW4gdGhlIG5hbWUgICAgICAgICovCisgIC8qIHJlY29yZHMgb2YgdGhlIFRURiBgbmFtZScgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgVFRfUExBVEZPUk1fWFhYCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIGZvciB0aGUgYHBsYXRmb3JtX2lkJyBpZGVudGlmaWVyIGNvZGUgaW4KKyAgICogICBARlRfQ2hhck1hcFJlYyBhbmQgQEZUX1NmbnROYW1lIHN0cnVjdHVyZXMuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgVFRfUExBVEZPUk1fQVBQTEVfVU5JQ09ERSA6OgorICAgKiAgICAgVXNlZCBieSBBcHBsZSB0byBpbmRpY2F0ZSBhIFVuaWNvZGUgY2hhcmFjdGVyIG1hcCBhbmQvb3IgbmFtZSBlbnRyeS4KKyAgICogICAgIFNlZSBAVFRfQVBQTEVfSURfWFhYIGZvciBjb3JyZXNwb25kaW5nIGBlbmNvZGluZ19pZCcgdmFsdWVzLiAgTm90ZQorICAgKiAgICAgdGhhdCBuYW1lIGVudHJpZXMgaW4gdGhpcyBmb3JtYXQgYXJlIGNvZGVkIGFzIGJpZy1lbmRpYW4gVUNTLTIKKyAgICogICAgIGNoYXJhY3RlciBjb2RlcyBfb25seV8uCisgICAqCisgICAqICAgVFRfUExBVEZPUk1fTUFDSU5UT1NIIDo6CisgICAqICAgICBVc2VkIGJ5IEFwcGxlIHRvIGluZGljYXRlIGEgTWFjT1Mtc3BlY2lmaWMgY2hhcm1hcCBhbmQvb3IgbmFtZSBlbnRyeS4KKyAgICogICAgIFNlZSBAVFRfTUFDX0lEX1hYWCBmb3IgY29ycmVzcG9uZGluZyBgZW5jb2RpbmdfaWQnIHZhbHVlcy4gIE5vdGUgdGhhdAorICAgKiAgICAgbW9zdCBUcnVlVHlwZSBmb250cyBjb250YWluIGFuIEFwcGxlIHJvbWFuIGNoYXJtYXAgdG8gYmUgdXNhYmxlIG9uCisgICAqICAgICBNYWNPUyBzeXN0ZW1zIChldmVuIGlmIHRoZXkgY29udGFpbiBhIE1pY3Jvc29mdCBjaGFybWFwIGFzIHdlbGwpLgorICAgKgorICAgKiAgIFRUX1BMQVRGT1JNX0lTTyA6OgorICAgKiAgICAgVGhpcyB2YWx1ZSB3YXMgdXNlZCB0byBzcGVjaWZ5IElTTy9JRUMgMTA2NDYgY2hhcm1hcHMuICBJdCBpcyBob3dldmVyCisgICAqICAgICBub3cgZGVwcmVjYXRlZC4gIFNlZSBAVFRfSVNPX0lEX1hYWCBmb3IgYSBsaXN0IG9mIGNvcnJlc3BvbmRpbmcKKyAgICogICAgIGBlbmNvZGluZ19pZCcgdmFsdWVzLgorICAgKgorICAgKiAgIFRUX1BMQVRGT1JNX01JQ1JPU09GVCA6OgorICAgKiAgICAgVXNlZCBieSBNaWNyb3NvZnQgdG8gaW5kaWNhdGUgV2luZG93cy1zcGVjaWZpYyBjaGFybWFwcy4gIFNlZQorICAgKiAgICAgQFRUX01TX0lEX1hYWCBmb3IgYSBsaXN0IG9mIGNvcnJlc3BvbmRpbmcgYGVuY29kaW5nX2lkJyB2YWx1ZXMuCisgICAqICAgICBOb3RlIHRoYXQgbW9zdCBmb250cyBjb250YWluIGEgVW5pY29kZSBjaGFybWFwIHVzaW5nCisgICAqICAgICAoVFRfUExBVEZPUk1fTUlDUk9TT0ZULCBAVFRfTVNfSURfVU5JQ09ERV9DUykuCisgICAqCisgICAqICAgVFRfUExBVEZPUk1fQ1VTVE9NIDo6CisgICAqICAgICBVc2VkIHRvIGluZGljYXRlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGNoYXJtYXBzLgorICAgKgorICAgKiAgIFRUX1BMQVRGT1JNX0FET0JFIDo6CisgICAqICAgICBUaGlzIHZhbHVlIGlzbid0IHBhcnQgb2YgYW55IGZvbnQgZm9ybWF0IHNwZWNpZmljYXRpb24sIGJ1dCBpcyB1c2VkCisgICAqICAgICBieSBGcmVlVHlwZSB0byByZXBvcnQgQWRvYmUtc3BlY2lmaWMgY2hhcm1hcHMgaW4gYW4gQEZUX0NoYXJNYXBSZWMKKyAgICogICAgIHN0cnVjdHVyZS4gIFNlZSBAVFRfQURPQkVfSURfWFhYLgorICAgKi8KKworI2RlZmluZSBUVF9QTEFURk9STV9BUFBMRV9VTklDT0RFICAwCisjZGVmaW5lIFRUX1BMQVRGT1JNX01BQ0lOVE9TSCAgICAgIDEKKyNkZWZpbmUgVFRfUExBVEZPUk1fSVNPICAgICAgICAgICAgMiAvKiBkZXByZWNhdGVkICovCisjZGVmaW5lIFRUX1BMQVRGT1JNX01JQ1JPU09GVCAgICAgIDMKKyNkZWZpbmUgVFRfUExBVEZPUk1fQ1VTVE9NICAgICAgICAgNAorI2RlZmluZSBUVF9QTEFURk9STV9BRE9CRSAgICAgICAgICA3IC8qIGFydGlmaWNpYWwgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBUVF9BUFBMRV9JRF9YWFgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbGlzdCBvZiB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBgZW5jb2RpbmdfaWQnIGZvcgorICAgKiAgIEBUVF9QTEFURk9STV9BUFBMRV9VTklDT0RFIGNoYXJtYXBzIGFuZCBuYW1lIGVudHJpZXMuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgVFRfQVBQTEVfSURfREVGQVVMVCA6OgorICAgKiAgICAgVW5pY29kZSB2ZXJzaW9uIDEuMC4KKyAgICoKKyAgICogICBUVF9BUFBMRV9JRF9VTklDT0RFXzFfMSA6OgorICAgKiAgICAgVW5pY29kZSAxLjE7IHNwZWNpZmllcyBIYW5ndWwgY2hhcmFjdGVycyBzdGFydGluZyBhdCBVKzM0eHguCisgICAqCisgICAqICAgVFRfQVBQTEVfSURfSVNPXzEwNjQ2IDo6CisgICAqICAgICBEZXByZWNhdGVkIChpZGVudGljYWwgdG8gcHJlY2VkaW5nKS4KKyAgICoKKyAgICogICBUVF9BUFBMRV9JRF9VTklDT0RFXzJfMCA6OgorICAgKiAgICAgVW5pY29kZSAyLjAgYW5kIGJleW9uZCAoVVRGLTE2IEJNUCBvbmx5KS4KKyAgICoKKyAgICogICBUVF9BUFBMRV9JRF9VTklDT0RFXzMyIDo6CisgICAqICAgICBVbmljb2RlIDMuMSBhbmQgYmV5b25kLCB1c2luZyBVVEYtMzIuCisgICAqCisgICAqICAgVFRfQVBQTEVfSURfVkFSSUFOVF9TRUxFQ1RPUiA6OgorICAgKiAgICAgRnJvbSBBZG9iZSwgbm90IEFwcGxlLiAgTm90IGEgbm9ybWFsIGNtYXAuICBTcGVjaWZpZXMgdmFyaWF0aW9ucworICAgKiAgICAgb24gYSByZWFsIGNtYXAuCisgICAqLworCisjZGVmaW5lIFRUX0FQUExFX0lEX0RFRkFVTFQgICAgICAgICAgIDAgLyogVW5pY29kZSAxLjAgKi8KKyNkZWZpbmUgVFRfQVBQTEVfSURfVU5JQ09ERV8xXzEgICAgICAgMSAvKiBzcGVjaWZ5IEhhbmd1bCBhdCBVKzM0eHggKi8KKyNkZWZpbmUgVFRfQVBQTEVfSURfSVNPXzEwNjQ2ICAgICAgICAgMiAvKiBkZXByZWNhdGVkICovCisjZGVmaW5lIFRUX0FQUExFX0lEX1VOSUNPREVfMl8wICAgICAgIDMgLyogb3IgbGF0ZXIgKi8KKyNkZWZpbmUgVFRfQVBQTEVfSURfVU5JQ09ERV8zMiAgICAgICAgNCAvKiAyLjAgb3IgbGF0ZXIsIGZ1bGwgcmVwZXJ0b2lyZSAqLworI2RlZmluZSBUVF9BUFBMRV9JRF9WQVJJQU5UX1NFTEVDVE9SICA1IC8qIHZhcmlhdGlvbiBzZWxlY3RvciBkYXRhICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgVFRfTUFDX0lEX1hYWAorICAgKgorICAgKiBAZGVzY3JpcHRpb246CisgICAqICAgQSBsaXN0IG9mIHZhbGlkIHZhbHVlcyBmb3IgdGhlIGBlbmNvZGluZ19pZCcgZm9yCisgICAqICAgQFRUX1BMQVRGT1JNX01BQ0lOVE9TSCBjaGFybWFwcyBhbmQgbmFtZSBlbnRyaWVzLgorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIFRUX01BQ19JRF9ST01BTiA6OgorICAgKiAgIFRUX01BQ19JRF9KQVBBTkVTRSA6OgorICAgKiAgIFRUX01BQ19JRF9UUkFESVRJT05BTF9DSElORVNFIDo6CisgICAqICAgVFRfTUFDX0lEX0tPUkVBTiA6OgorICAgKiAgIFRUX01BQ19JRF9BUkFCSUMgOjoKKyAgICogICBUVF9NQUNfSURfSEVCUkVXIDo6CisgICAqICAgVFRfTUFDX0lEX0dSRUVLIDo6CisgICAqICAgVFRfTUFDX0lEX1JVU1NJQU4gOjoKKyAgICogICBUVF9NQUNfSURfUlNZTUJPTCA6OgorICAgKiAgIFRUX01BQ19JRF9ERVZBTkFHQVJJIDo6CisgICAqICAgVFRfTUFDX0lEX0dVUk1VS0hJIDo6CisgICAqICAgVFRfTUFDX0lEX0dVSkFSQVRJIDo6CisgICAqICAgVFRfTUFDX0lEX09SSVlBIDo6CisgICAqICAgVFRfTUFDX0lEX0JFTkdBTEkgOjoKKyAgICogICBUVF9NQUNfSURfVEFNSUwgOjoKKyAgICogICBUVF9NQUNfSURfVEVMVUdVIDo6CisgICAqICAgVFRfTUFDX0lEX0tBTk5BREEgOjoKKyAgICogICBUVF9NQUNfSURfTUFMQVlBTEFNIDo6CisgICAqICAgVFRfTUFDX0lEX1NJTkhBTEVTRSA6OgorICAgKiAgIFRUX01BQ19JRF9CVVJNRVNFIDo6CisgICAqICAgVFRfTUFDX0lEX0tITUVSIDo6CisgICAqICAgVFRfTUFDX0lEX1RIQUkgOjoKKyAgICogICBUVF9NQUNfSURfTEFPVElBTiA6OgorICAgKiAgIFRUX01BQ19JRF9HRU9SR0lBTiA6OgorICAgKiAgIFRUX01BQ19JRF9BUk1FTklBTiA6OgorICAgKiAgIFRUX01BQ19JRF9NQUxESVZJQU4gOjoKKyAgICogICBUVF9NQUNfSURfU0lNUExJRklFRF9DSElORVNFIDo6CisgICAqICAgVFRfTUFDX0lEX1RJQkVUQU4gOjoKKyAgICogICBUVF9NQUNfSURfTU9OR09MSUFOIDo6CisgICAqICAgVFRfTUFDX0lEX0dFRVogOjoKKyAgICogICBUVF9NQUNfSURfU0xBVklDIDo6CisgICAqICAgVFRfTUFDX0lEX1ZJRVROQU1FU0UgOjoKKyAgICogICBUVF9NQUNfSURfU0lOREhJIDo6CisgICAqICAgVFRfTUFDX0lEX1VOSU5URVJQIDo6CisgICAqLworCisjZGVmaW5lIFRUX01BQ19JRF9ST01BTiAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBUVF9NQUNfSURfSkFQQU5FU0UgICAgICAgICAgICAgIDEKKyNkZWZpbmUgVFRfTUFDX0lEX1RSQURJVElPTkFMX0NISU5FU0UgICAyCisjZGVmaW5lIFRUX01BQ19JRF9LT1JFQU4gICAgICAgICAgICAgICAgMworI2RlZmluZSBUVF9NQUNfSURfQVJBQklDICAgICAgICAgICAgICAgIDQKKyNkZWZpbmUgVFRfTUFDX0lEX0hFQlJFVyAgICAgICAgICAgICAgICA1CisjZGVmaW5lIFRUX01BQ19JRF9HUkVFSyAgICAgICAgICAgICAgICAgNgorI2RlZmluZSBUVF9NQUNfSURfUlVTU0lBTiAgICAgICAgICAgICAgIDcKKyNkZWZpbmUgVFRfTUFDX0lEX1JTWU1CT0wgICAgICAgICAgICAgICA4CisjZGVmaW5lIFRUX01BQ19JRF9ERVZBTkFHQVJJICAgICAgICAgICAgOQorI2RlZmluZSBUVF9NQUNfSURfR1VSTVVLSEkgICAgICAgICAgICAgMTAKKyNkZWZpbmUgVFRfTUFDX0lEX0dVSkFSQVRJICAgICAgICAgICAgIDExCisjZGVmaW5lIFRUX01BQ19JRF9PUklZQSAgICAgICAgICAgICAgICAxMgorI2RlZmluZSBUVF9NQUNfSURfQkVOR0FMSSAgICAgICAgICAgICAgMTMKKyNkZWZpbmUgVFRfTUFDX0lEX1RBTUlMICAgICAgICAgICAgICAgIDE0CisjZGVmaW5lIFRUX01BQ19JRF9URUxVR1UgICAgICAgICAgICAgICAxNQorI2RlZmluZSBUVF9NQUNfSURfS0FOTkFEQSAgICAgICAgICAgICAgMTYKKyNkZWZpbmUgVFRfTUFDX0lEX01BTEFZQUxBTSAgICAgICAgICAgIDE3CisjZGVmaW5lIFRUX01BQ19JRF9TSU5IQUxFU0UgICAgICAgICAgICAxOAorI2RlZmluZSBUVF9NQUNfSURfQlVSTUVTRSAgICAgICAgICAgICAgMTkKKyNkZWZpbmUgVFRfTUFDX0lEX0tITUVSICAgICAgICAgICAgICAgIDIwCisjZGVmaW5lIFRUX01BQ19JRF9USEFJICAgICAgICAgICAgICAgICAyMQorI2RlZmluZSBUVF9NQUNfSURfTEFPVElBTiAgICAgICAgICAgICAgMjIKKyNkZWZpbmUgVFRfTUFDX0lEX0dFT1JHSUFOICAgICAgICAgICAgIDIzCisjZGVmaW5lIFRUX01BQ19JRF9BUk1FTklBTiAgICAgICAgICAgICAyNAorI2RlZmluZSBUVF9NQUNfSURfTUFMRElWSUFOICAgICAgICAgICAgMjUKKyNkZWZpbmUgVFRfTUFDX0lEX1NJTVBMSUZJRURfQ0hJTkVTRSAgIDI1CisjZGVmaW5lIFRUX01BQ19JRF9USUJFVEFOICAgICAgICAgICAgICAyNgorI2RlZmluZSBUVF9NQUNfSURfTU9OR09MSUFOICAgICAgICAgICAgMjcKKyNkZWZpbmUgVFRfTUFDX0lEX0dFRVogICAgICAgICAgICAgICAgIDI4CisjZGVmaW5lIFRUX01BQ19JRF9TTEFWSUMgICAgICAgICAgICAgICAyOQorI2RlZmluZSBUVF9NQUNfSURfVklFVE5BTUVTRSAgICAgICAgICAgMzAKKyNkZWZpbmUgVFRfTUFDX0lEX1NJTkRISSAgICAgICAgICAgICAgIDMxCisjZGVmaW5lIFRUX01BQ19JRF9VTklOVEVSUCAgICAgICAgICAgICAzMgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqCisgICAqIEBlbnVtOgorICAgKiAgIFRUX0lTT19JRF9YWFgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbGlzdCBvZiB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBgZW5jb2RpbmdfaWQnIGZvcgorICAgKiAgIEBUVF9QTEFURk9STV9JU08gY2hhcm1hcHMgYW5kIG5hbWUgZW50cmllcy4KKyAgICoKKyAgICogICBUaGVpciB1c2UgaXMgbm93IGRlcHJlY2F0ZWQuCisgICAqCisgICAqIEB2YWx1ZXM6CisgICAqICAgVFRfSVNPX0lEXzdCSVRfQVNDSUkgOjoKKyAgICogICAgIEFTQ0lJLgorICAgKiAgIFRUX0lTT19JRF8xMDY0NiA6OgorICAgKiAgICAgSVNPLzEwNjQ2LgorICAgKiAgIFRUX0lTT19JRF84ODU5XzEgOjoKKyAgICogICAgIEFsc28ga25vd24gYXMgTGF0aW4tMS4KKyAgICovCisKKyNkZWZpbmUgVFRfSVNPX0lEXzdCSVRfQVNDSUkgIDAKKyNkZWZpbmUgVFRfSVNPX0lEXzEwNjQ2ICAgICAgIDEKKyNkZWZpbmUgVFRfSVNPX0lEXzg4NTlfMSAgICAgIDIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKgorICAgKiBAZW51bToKKyAgICogICBUVF9NU19JRF9YWFgKKyAgICoKKyAgICogQGRlc2NyaXB0aW9uOgorICAgKiAgIEEgbGlzdCBvZiB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBgZW5jb2RpbmdfaWQnIGZvcgorICAgKiAgIEBUVF9QTEFURk9STV9NSUNST1NPRlQgY2hhcm1hcHMgYW5kIG5hbWUgZW50cmllcy4KKyAgICoKKyAgICogQHZhbHVlczoKKyAgICogICBUVF9NU19JRF9TWU1CT0xfQ1MgOjoKKyAgICogICAgIENvcnJlc3BvbmRzIHRvIE1pY3Jvc29mdCBzeW1ib2wgZW5jb2RpbmcuIFNlZQorICAgKiAgICAgQEZUX0VOQ09ESU5HX01TX1NZTUJPTC4KKyAgICoKKyAgICogICBUVF9NU19JRF9VTklDT0RFX0NTIDo6CisgICAqICAgICBDb3JyZXNwb25kcyB0byBhIE1pY3Jvc29mdCBXR0w0IGNoYXJtYXAsIG1hdGNoaW5nIFVuaWNvZGUuICBTZWUKKyAgICogICAgIEBGVF9FTkNPRElOR19VTklDT0RFLgorICAgKgorICAgKiAgIFRUX01TX0lEX1NKSVMgOjoKKyAgICogICAgIENvcnJlc3BvbmRzIHRvIFNKSVMgSmFwYW5lc2UgZW5jb2RpbmcuICBTZWUgQEZUX0VOQ09ESU5HX1NKSVMuCisgICAqCisgICAqICAgVFRfTVNfSURfR0IyMzEyIDo6CisgICAqICAgICBDb3JyZXNwb25kcyB0byBTaW1wbGlmaWVkIENoaW5lc2UgYXMgdXNlZCBpbiBNYWlubGFuZCBDaGluYS4gIFNlZQorICAgKiAgICAgQEZUX0VOQ09ESU5HX0dCMjMxMi4KKyAgICoKKyAgICogICBUVF9NU19JRF9CSUdfNSA6OgorICAgKiAgICAgQ29ycmVzcG9uZHMgdG8gVHJhZGl0aW9uYWwgQ2hpbmVzZSBhcyB1c2VkIGluIFRhaXdhbiBhbmQgSG9uZyBLb25nLgorICAgKiAgICAgU2VlIEBGVF9FTkNPRElOR19CSUc1LgorICAgKgorICAgKiAgIFRUX01TX0lEX1dBTlNVTkcgOjoKKyAgICogICAgIENvcnJlc3BvbmRzIHRvIEtvcmVhbiBXYW5zdW5nIGVuY29kaW5nLiAgU2VlIEBGVF9FTkNPRElOR19XQU5TVU5HLgorICAgKgorICAgKiAgIFRUX01TX0lEX0pPSEFCIDo6CisgICAqICAgICBDb3JyZXNwb25kcyB0byBKb2hhYiBlbmNvZGluZy4gIFNlZSBARlRfRU5DT0RJTkdfSk9IQUIuCisgICAqCisgICAqICAgVFRfTVNfSURfVUNTXzQgOjoKKyAgICogICAgIENvcnJlc3BvbmRzIHRvIFVDUy00IG9yIFVURi0zMiBjaGFybWFwcy4gIFRoaXMgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICogICAgIHRoZSBPcGVuVHlwZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gMS40IChtaWQtMjAwMS4pCisgICAqLworCisjZGVmaW5lIFRUX01TX0lEX1NZTUJPTF9DUyAgICAwCisjZGVmaW5lIFRUX01TX0lEX1VOSUNPREVfQ1MgICAxCisjZGVmaW5lIFRUX01TX0lEX1NKSVMgICAgICAgICAyCisjZGVmaW5lIFRUX01TX0lEX0dCMjMxMiAgICAgICAzCisjZGVmaW5lIFRUX01TX0lEX0JJR181ICAgICAgICA0CisjZGVmaW5lIFRUX01TX0lEX1dBTlNVTkcgICAgICA1CisjZGVmaW5lIFRUX01TX0lEX0pPSEFCICAgICAgICA2CisjZGVmaW5lIFRUX01TX0lEX1VDU180ICAgICAgIDEwCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICoKKyAgICogQGVudW06CisgICAqICAgVFRfQURPQkVfSURfWFhYCisgICAqCisgICAqIEBkZXNjcmlwdGlvbjoKKyAgICogICBBIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIGZvciB0aGUgYGVuY29kaW5nX2lkJyBmb3IKKyAgICogICBAVFRfUExBVEZPUk1fQURPQkUgY2hhcm1hcHMuICBUaGlzIGlzIGEgRnJlZVR5cGUtc3BlY2lmaWMgZXh0ZW5zaW9uIQorICAgKgorICAgKiBAdmFsdWVzOgorICAgKiAgIFRUX0FET0JFX0lEX1NUQU5EQVJEIDo6CisgICAqICAgICBBZG9iZSBzdGFuZGFyZCBlbmNvZGluZy4KKyAgICogICBUVF9BRE9CRV9JRF9FWFBFUlQgOjoKKyAgICogICAgIEFkb2JlIGV4cGVydCBlbmNvZGluZy4KKyAgICogICBUVF9BRE9CRV9JRF9DVVNUT00gOjoKKyAgICogICAgIEFkb2JlIGN1c3RvbSBlbmNvZGluZy4KKyAgICogICBUVF9BRE9CRV9JRF9MQVRJTl8xIDo6CisgICAqICAgICBBZG9iZSBMYXRpbn4xIGVuY29kaW5nLgorICAgKi8KKworI2RlZmluZSBUVF9BRE9CRV9JRF9TVEFOREFSRCAgMAorI2RlZmluZSBUVF9BRE9CRV9JRF9FWFBFUlQgICAgMQorI2RlZmluZSBUVF9BRE9CRV9JRF9DVVNUT00gICAgMgorI2RlZmluZSBUVF9BRE9CRV9JRF9MQVRJTl8xICAgMworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGxhbmd1YWdlIGlkZW50aWZpZXIgZmllbGQgaW4gdGhlIG5hbWUgcmVjb3JkcyAgKi8KKyAgLyogb2YgdGhlIFRURiBgbmFtZScgdGFibGUgaWYgdGhlIGBwbGF0Zm9ybScgaWRlbnRpZmllciBjb2RlIGlzICAgICAgICAgICovCisgIC8qIFRUX1BMQVRGT1JNX01BQ0lOVE9TSC4gIFRoZXNlIHZhbHVlcyBhcmUgYWxzbyB1c2VkIGFzIHJldHVybiB2YWx1ZXMgICAqLworICAvKiBmb3IgZnVuY3Rpb24gQEZUX0dldF9DTWFwX0xhbmd1YWdlX0lELiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBjYW5vbmljYWwgc291cmNlIGZvciB0aGUgQXBwbGUgYXNzaWduZWQgTGFuZ3VhZ2UgSUQncyBpcyBhdCAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZm9udHMvVFRSZWZNYW4vUk0wNi9DaGFwNm5hbWUuaHRtbCAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0VOR0xJU0ggICAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9GUkVOQ0ggICAgICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFRUX01BQ19MQU5HSURfR0VSTUFOICAgICAgICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0lUQUxJQU4gICAgICAgICAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9EVVRDSCAgICAgICAgICAgICAgICAgICAgICAgICA0CisjZGVmaW5lIFRUX01BQ19MQU5HSURfU1dFRElTSCAgICAgICAgICAgICAgICAgICAgICAgNQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NQQU5JU0ggICAgICAgICAgICAgICAgICAgICAgIDYKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9EQU5JU0ggICAgICAgICAgICAgICAgICAgICAgICA3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfUE9SVFVHVUVTRSAgICAgICAgICAgICAgICAgICAgOAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX05PUldFR0lBTiAgICAgICAgICAgICAgICAgICAgIDkKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9IRUJSRVcgICAgICAgICAgICAgICAgICAgICAgIDEwCisjZGVmaW5lIFRUX01BQ19MQU5HSURfSkFQQU5FU0UgICAgICAgICAgICAgICAgICAgICAxMQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FSQUJJQyAgICAgICAgICAgICAgICAgICAgICAgMTIKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9GSU5OSVNIICAgICAgICAgICAgICAgICAgICAgIDEzCisjZGVmaW5lIFRUX01BQ19MQU5HSURfR1JFRUsgICAgICAgICAgICAgICAgICAgICAgICAxNAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0lDRUxBTkRJQyAgICAgICAgICAgICAgICAgICAgMTUKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NQUxURVNFICAgICAgICAgICAgICAgICAgICAgIDE2CisjZGVmaW5lIFRUX01BQ19MQU5HSURfVFVSS0lTSCAgICAgICAgICAgICAgICAgICAgICAxNworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0NST0FUSUFOICAgICAgICAgICAgICAgICAgICAgMTgKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9DSElORVNFX1RSQURJVElPTkFMICAgICAgICAgIDE5CisjZGVmaW5lIFRUX01BQ19MQU5HSURfVVJEVSAgICAgICAgICAgICAgICAgICAgICAgICAyMAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0hJTkRJICAgICAgICAgICAgICAgICAgICAgICAgMjEKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9USEFJICAgICAgICAgICAgICAgICAgICAgICAgIDIyCisjZGVmaW5lIFRUX01BQ19MQU5HSURfS09SRUFOICAgICAgICAgICAgICAgICAgICAgICAyMworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0xJVEhVQU5JQU4gICAgICAgICAgICAgICAgICAgMjQKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9QT0xJU0ggICAgICAgICAgICAgICAgICAgICAgIDI1CisjZGVmaW5lIFRUX01BQ19MQU5HSURfSFVOR0FSSUFOICAgICAgICAgICAgICAgICAgICAyNgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0VTVE9OSUFOICAgICAgICAgICAgICAgICAgICAgMjcKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9MRVRUSVNIICAgICAgICAgICAgICAgICAgICAgIDI4CisjZGVmaW5lIFRUX01BQ19MQU5HSURfU0FBTUlTSyAgICAgICAgICAgICAgICAgICAgICAyOQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0ZBRVJPRVNFICAgICAgICAgICAgICAgICAgICAgMzAKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9GQVJTSSAgICAgICAgICAgICAgICAgICAgICAgIDMxCisjZGVmaW5lIFRUX01BQ19MQU5HSURfUlVTU0lBTiAgICAgICAgICAgICAgICAgICAgICAzMgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0NISU5FU0VfU0lNUExJRklFRCAgICAgICAgICAgMzMKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9GTEVNSVNIICAgICAgICAgICAgICAgICAgICAgIDM0CisjZGVmaW5lIFRUX01BQ19MQU5HSURfSVJJU0ggICAgICAgICAgICAgICAgICAgICAgICAzNQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FMQkFOSUFOICAgICAgICAgICAgICAgICAgICAgMzYKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9ST01BTklBTiAgICAgICAgICAgICAgICAgICAgIDM3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfQ1pFQ0ggICAgICAgICAgICAgICAgICAgICAgICAzOAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NMT1ZBSyAgICAgICAgICAgICAgICAgICAgICAgMzkKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9TTE9WRU5JQU4gICAgICAgICAgICAgICAgICAgIDQwCisjZGVmaW5lIFRUX01BQ19MQU5HSURfWUlERElTSCAgICAgICAgICAgICAgICAgICAgICA0MQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NFUkJJQU4gICAgICAgICAgICAgICAgICAgICAgNDIKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NQUNFRE9OSUFOICAgICAgICAgICAgICAgICAgIDQzCisjZGVmaW5lIFRUX01BQ19MQU5HSURfQlVMR0FSSUFOICAgICAgICAgICAgICAgICAgICA0NAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1VLUkFJTklBTiAgICAgICAgICAgICAgICAgICAgNDUKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9CWUVMT1JVU1NJQU4gICAgICAgICAgICAgICAgIDQ2CisjZGVmaW5lIFRUX01BQ19MQU5HSURfVVpCRUsgICAgICAgICAgICAgICAgICAgICAgICA0NworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0tBWkFLSCAgICAgICAgICAgICAgICAgICAgICAgNDgKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9BWkVSQkFJSkFOSSAgICAgICAgICAgICAgICAgIDQ5CisjZGVmaW5lIFRUX01BQ19MQU5HSURfQVpFUkJBSUpBTklfQ1lSSUxMSUNfU0NSSVBUICA0OQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FaRVJCQUlKQU5JX0FSQUJJQ19TQ1JJUFQgICAgNTAKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9BUk1FTklBTiAgICAgICAgICAgICAgICAgICAgIDUxCisjZGVmaW5lIFRUX01BQ19MQU5HSURfR0VPUkdJQU4gICAgICAgICAgICAgICAgICAgICA1MgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX01PTERBVklBTiAgICAgICAgICAgICAgICAgICAgNTMKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9LSVJHSElaICAgICAgICAgICAgICAgICAgICAgIDU0CisjZGVmaW5lIFRUX01BQ19MQU5HSURfVEFKSUtJICAgICAgICAgICAgICAgICAgICAgICA1NQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1RVUktNRU4gICAgICAgICAgICAgICAgICAgICAgNTYKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NT05HT0xJQU4gICAgICAgICAgICAgICAgICAgIDU3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfTU9OR09MSUFOX01PTkdPTElBTl9TQ1JJUFQgICA1NworI2RlZmluZSBUVF9NQUNfTEFOR0lEX01PTkdPTElBTl9DWVJJTExJQ19TQ1JJUFQgICAgNTgKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9QQVNIVE8gICAgICAgICAgICAgICAgICAgICAgIDU5CisjZGVmaW5lIFRUX01BQ19MQU5HSURfS1VSRElTSCAgICAgICAgICAgICAgICAgICAgICA2MAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0tBU0hNSVJJICAgICAgICAgICAgICAgICAgICAgNjEKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9TSU5ESEkgICAgICAgICAgICAgICAgICAgICAgIDYyCisjZGVmaW5lIFRUX01BQ19MQU5HSURfVElCRVRBTiAgICAgICAgICAgICAgICAgICAgICA2MworI2RlZmluZSBUVF9NQUNfTEFOR0lEX05FUEFMSSAgICAgICAgICAgICAgICAgICAgICAgNjQKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9TQU5TS1JJVCAgICAgICAgICAgICAgICAgICAgIDY1CisjZGVmaW5lIFRUX01BQ19MQU5HSURfTUFSQVRISSAgICAgICAgICAgICAgICAgICAgICA2NgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0JFTkdBTEkgICAgICAgICAgICAgICAgICAgICAgNjcKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9BU1NBTUVTRSAgICAgICAgICAgICAgICAgICAgIDY4CisjZGVmaW5lIFRUX01BQ19MQU5HSURfR1VKQVJBVEkgICAgICAgICAgICAgICAgICAgICA2OQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1BVTkpBQkkgICAgICAgICAgICAgICAgICAgICAgNzAKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9PUklZQSAgICAgICAgICAgICAgICAgICAgICAgIDcxCisjZGVmaW5lIFRUX01BQ19MQU5HSURfTUFMQVlBTEFNICAgICAgICAgICAgICAgICAgICA3MgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0tBTk5BREEgICAgICAgICAgICAgICAgICAgICAgNzMKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9UQU1JTCAgICAgICAgICAgICAgICAgICAgICAgIDc0CisjZGVmaW5lIFRUX01BQ19MQU5HSURfVEVMVUdVICAgICAgICAgICAgICAgICAgICAgICA3NQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NJTkhBTEVTRSAgICAgICAgICAgICAgICAgICAgNzYKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9CVVJNRVNFICAgICAgICAgICAgICAgICAgICAgIDc3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfS0hNRVIgICAgICAgICAgICAgICAgICAgICAgICA3OAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0xBTyAgICAgICAgICAgICAgICAgICAgICAgICAgNzkKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9WSUVUTkFNRVNFICAgICAgICAgICAgICAgICAgIDgwCisjZGVmaW5lIFRUX01BQ19MQU5HSURfSU5ET05FU0lBTiAgICAgICAgICAgICAgICAgICA4MQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1RBR0FMT0cgICAgICAgICAgICAgICAgICAgICAgODIKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9NQUxBWV9ST01BTl9TQ1JJUFQgICAgICAgICAgIDgzCisjZGVmaW5lIFRUX01BQ19MQU5HSURfTUFMQVlfQVJBQklDX1NDUklQVCAgICAgICAgICA4NAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0FNSEFSSUMgICAgICAgICAgICAgICAgICAgICAgODUKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9USUdSSU5ZQSAgICAgICAgICAgICAgICAgICAgIDg2CisjZGVmaW5lIFRUX01BQ19MQU5HSURfR0FMTEEgICAgICAgICAgICAgICAgICAgICAgICA4NworI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NPTUFMSSAgICAgICAgICAgICAgICAgICAgICAgODgKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9TV0FISUxJICAgICAgICAgICAgICAgICAgICAgIDg5CisjZGVmaW5lIFRUX01BQ19MQU5HSURfUlVBTkRBICAgICAgICAgICAgICAgICAgICAgICA5MAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1JVTkRJICAgICAgICAgICAgICAgICAgICAgICAgOTEKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9DSEVXQSAgICAgICAgICAgICAgICAgICAgICAgIDkyCisjZGVmaW5lIFRUX01BQ19MQU5HSURfTUFMQUdBU1kgICAgICAgICAgICAgICAgICAgICA5MworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0VTUEVSQU5UTyAgICAgICAgICAgICAgICAgICAgOTQKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9XRUxTSCAgICAgICAgICAgICAgICAgICAgICAgMTI4CisjZGVmaW5lIFRUX01BQ19MQU5HSURfQkFTUVVFICAgICAgICAgICAgICAgICAgICAgIDEyOQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0NBVEFMQU4gICAgICAgICAgICAgICAgICAgICAxMzAKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9MQVRJTiAgICAgICAgICAgICAgICAgICAgICAgMTMxCisjZGVmaW5lIFRUX01BQ19MQU5HSURfUVVFQ0hVQSAgICAgICAgICAgICAgICAgICAgIDEzMgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0dVQVJBTkkgICAgICAgICAgICAgICAgICAgICAxMzMKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9BWU1BUkEgICAgICAgICAgICAgICAgICAgICAgMTM0CisjZGVmaW5lIFRUX01BQ19MQU5HSURfVEFUQVIgICAgICAgICAgICAgICAgICAgICAgIDEzNQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1VJR0hVUiAgICAgICAgICAgICAgICAgICAgICAxMzYKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9EWk9OR0tIQSAgICAgICAgICAgICAgICAgICAgMTM3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfSkFWQU5FU0UgICAgICAgICAgICAgICAgICAgIDEzOAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX1NVTkRBTkVTRSAgICAgICAgICAgICAgICAgICAxMzkKKworCisjaWYgMCAgLyogdGhlc2Ugc2VlbSB0byBiZSBlcnJvcnMgdGhhdCBoYXZlIGJlZW4gZHJvcHBlZCAqLworCisjZGVmaW5lIFRUX01BQ19MQU5HSURfU0NPVFRJU0hfR0FFTElDICAgICAgICAgICAgIDE0MAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0lSSVNIX0dBRUxJQyAgICAgICAgICAgICAgICAxNDEKKworI2VuZGlmCisKKworICAvKiBUaGUgZm9sbG93aW5nIGNvZGVzIGFyZSBuZXcgYXMgb2YgMjAwMC0wMy0xMCAqLworI2RlZmluZSBUVF9NQUNfTEFOR0lEX0dBTElDSUFOICAgICAgICAgICAgICAgICAgICAxNDAKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9BRlJJS0FBTlMgICAgICAgICAgICAgICAgICAgMTQxCisjZGVmaW5lIFRUX01BQ19MQU5HSURfQlJFVE9OICAgICAgICAgICAgICAgICAgICAgIDE0MgorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0lOVUtUSVRVVCAgICAgICAgICAgICAgICAgICAxNDMKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9TQ09UVElTSF9HQUVMSUMgICAgICAgICAgICAgMTQ0CisjZGVmaW5lIFRUX01BQ19MQU5HSURfTUFOWF9HQUVMSUMgICAgICAgICAgICAgICAgIDE0NQorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0lSSVNIX0dBRUxJQyAgICAgICAgICAgICAgICAxNDYKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9UT05HQU4gICAgICAgICAgICAgICAgICAgICAgMTQ3CisjZGVmaW5lIFRUX01BQ19MQU5HSURfR1JFRUtfUE9MWVRPTklDICAgICAgICAgICAgIDE0OAorI2RlZmluZSBUVF9NQUNfTEFOR0lEX0dSRUVMQU5ESUMgICAgICAgICAgICAgICAgICAxNDkKKyNkZWZpbmUgVFRfTUFDX0xBTkdJRF9BWkVSQkFJSkFOSV9ST01BTl9TQ1JJUFQgICAgMTUwCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgbGFuZ3VhZ2UgaWRlbnRpZmllciBmaWVsZCBpbiB0aGUgbmFtZSByZWNvcmRzICAqLworICAvKiBvZiB0aGUgVFRGIGBuYW1lJyB0YWJsZSBpZiB0aGUgYHBsYXRmb3JtJyBpZGVudGlmaWVyIGNvZGUgaXMgICAgICAgICAgKi8KKyAgLyogVFRfUExBVEZPUk1fTUlDUk9TT0ZULiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgY2Fub25pY2FsIHNvdXJjZSBmb3IgdGhlIE1TIGFzc2lnbmVkIExDSURzIGlzICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2dsb2JhbGRldi9yZWZlcmVuY2UvbGNpZC1hbGwubXNweCAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX0dFTkVSQUwgICAgICAgICAgICAgICAgICAgIDB4MDAwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX1NBVURJX0FSQUJJQSAgICAgICAgICAgICAgIDB4MDQwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX0lSQVEgICAgICAgICAgICAgICAgICAgICAgIDB4MDgwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX0VHWVBUICAgICAgICAgICAgICAgICAgICAgIDB4MGMwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX0xJQllBICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX0FMR0VSSUEgICAgICAgICAgICAgICAgICAgIDB4MTQwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX01PUk9DQ08gICAgICAgICAgICAgICAgICAgIDB4MTgwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX1RVTklTSUEgICAgICAgICAgICAgICAgICAgIDB4MWMwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX09NQU4gICAgICAgICAgICAgICAgICAgICAgIDB4MjAwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX1lFTUVOICAgICAgICAgICAgICAgICAgICAgIDB4MjQwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX1NZUklBICAgICAgICAgICAgICAgICAgICAgIDB4MjgwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX0pPUkRBTiAgICAgICAgICAgICAgICAgICAgIDB4MmMwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX0xFQkFOT04gICAgICAgICAgICAgICAgICAgIDB4MzAwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX0tVV0FJVCAgICAgICAgICAgICAgICAgICAgIDB4MzQwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX1VBRSAgICAgICAgICAgICAgICAgICAgICAgIDB4MzgwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX0JBSFJBSU4gICAgICAgICAgICAgICAgICAgIDB4M2MwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJBQklDX1FBVEFSICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMQorI2RlZmluZSBUVF9NU19MQU5HSURfQlVMR0FSSUFOX0JVTEdBUklBICAgICAgICAgICAgICAgIDB4MDQwMgorI2RlZmluZSBUVF9NU19MQU5HSURfQ0FUQUxBTl9TUEFJTiAgICAgICAgICAgICAgICAgICAgIDB4MDQwMworI2RlZmluZSBUVF9NU19MQU5HSURfQ0hJTkVTRV9HRU5FUkFMICAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2RlZmluZSBUVF9NU19MQU5HSURfQ0hJTkVTRV9UQUlXQU4gICAgICAgICAgICAgICAgICAgIDB4MDQwNAorI2RlZmluZSBUVF9NU19MQU5HSURfQ0hJTkVTRV9QUkMgICAgICAgICAgICAgICAgICAgICAgIDB4MDgwNAorI2RlZmluZSBUVF9NU19MQU5HSURfQ0hJTkVTRV9IT05HX0tPTkcgICAgICAgICAgICAgICAgIDB4MGMwNAorI2RlZmluZSBUVF9NU19MQU5HSURfQ0hJTkVTRV9TSU5HQVBPUkUgICAgICAgICAgICAgICAgIDB4MTAwNAorCisjaWYgMSAgLyogdGhpcyBsb29rcyBsaWtlIHRoZSBjb3JyZWN0IHZhbHVlICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9DSElORVNFX01BQ0FVICAgICAgICAgICAgICAgICAgICAgMHgxNDA0CisjZWxzZSAgLyogYnV0IGJld2FyZSwgTWljcm9zb2Z0IG1heSBjaGFuZ2UgaXRzIG1pbmQuLi4KKyAgICAgICAgICB0aGUgbW9zdCByZWNlbnQgV29yZCByZWZlcmVuY2UgaGFzIHRoZSBmb2xsb3dpbmc6ICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9DSElORVNFX01BQ0FVICBUVF9NU19MQU5HSURfQ0hJTkVTRV9IT05HX0tPTkcKKyNlbmRpZgorCisjaWYgMCAgLyogdXNlZCBvbmx5IHdpdGggLk5FVCBgY3VsdHVyZXMnOyBjb21tZW50ZWQgb3V0ICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9DSElORVNFX1RSQURJVElPTkFMICAgICAgICAgICAgICAgMHg3QzA0CisjZW5kaWYKKworI2RlZmluZSBUVF9NU19MQU5HSURfQ1pFQ0hfQ1pFQ0hfUkVQVUJMSUMgICAgICAgICAgICAgIDB4MDQwNQorI2RlZmluZSBUVF9NU19MQU5HSURfREFOSVNIX0RFTk1BUksgICAgICAgICAgICAgICAgICAgIDB4MDQwNgorI2RlZmluZSBUVF9NU19MQU5HSURfR0VSTUFOX0dFUk1BTlkgICAgICAgICAgICAgICAgICAgIDB4MDQwNworI2RlZmluZSBUVF9NU19MQU5HSURfR0VSTUFOX1NXSVRaRVJMQU5EICAgICAgICAgICAgICAgIDB4MDgwNworI2RlZmluZSBUVF9NU19MQU5HSURfR0VSTUFOX0FVU1RSSUEgICAgICAgICAgICAgICAgICAgIDB4MGMwNworI2RlZmluZSBUVF9NU19MQU5HSURfR0VSTUFOX0xVWEVNQk9VUkcgICAgICAgICAgICAgICAgIDB4MTAwNworI2RlZmluZSBUVF9NU19MQU5HSURfR0VSTUFOX0xJRUNIVEVOU1RFSSAgICAgICAgICAgICAgIDB4MTQwNworI2RlZmluZSBUVF9NU19MQU5HSURfR1JFRUtfR1JFRUNFICAgICAgICAgICAgICAgICAgICAgIDB4MDQwOAorCisgIC8qIGRvbid0IGFzayB3aGF0IHRoaXMgb25lIG1lYW5zLi4uIEl0IGlzIGNvbW1lbnRlZCBvdXQgY3VycmVudGx5LiAqLworI2lmIDAKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0dSRUVLX0dSRUVDRTIgICAgICAgICAgICAgICAgICAgICAweDIwMDgKKyNlbmRpZgorCisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0dFTkVSQUwgICAgICAgICAgICAgICAgICAgMHgwMDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX1VOSVRFRF9TVEFURVMgICAgICAgICAgICAgMHgwNDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX1VOSVRFRF9LSU5HRE9NICAgICAgICAgICAgMHgwODA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0FVU1RSQUxJQSAgICAgICAgICAgICAgICAgMHgwYzA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0NBTkFEQSAgICAgICAgICAgICAgICAgICAgMHgxMDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX05FV19aRUFMQU5EICAgICAgICAgICAgICAgMHgxNDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0lSRUxBTkQgICAgICAgICAgICAgICAgICAgMHgxODA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX1NPVVRIX0FGUklDQSAgICAgICAgICAgICAgMHgxYzA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0pBTUFJQ0EgICAgICAgICAgICAgICAgICAgMHgyMDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0NBUklCQkVBTiAgICAgICAgICAgICAgICAgMHgyNDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0JFTElaRSAgICAgICAgICAgICAgICAgICAgMHgyODA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX1RSSU5JREFEICAgICAgICAgICAgICAgICAgMHgyYzA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX1pJTUJBQldFICAgICAgICAgICAgICAgICAgMHgzMDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX1BISUxJUFBJTkVTICAgICAgICAgICAgICAgMHgzNDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0lORE9ORVNJQSAgICAgICAgICAgICAgICAgMHgzODA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0hPTkdfS09ORyAgICAgICAgICAgICAgICAgMHgzYzA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX0lORElBICAgICAgICAgICAgICAgICAgICAgMHg0MDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX01BTEFZU0lBICAgICAgICAgICAgICAgICAgMHg0NDA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9FTkdMSVNIX1NJTkdBUE9SRSAgICAgICAgICAgICAgICAgMHg0ODA5CisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX1NQQUlOX1RSQURJVElPTkFMX1NPUlQgICAgMHgwNDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX01FWElDTyAgICAgICAgICAgICAgICAgICAgMHgwODBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX1NQQUlOX0lOVEVSTkFUSU9OQUxfU09SVCAgMHgwYzBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0dVQVRFTUFMQSAgICAgICAgICAgICAgICAgMHgxMDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0NPU1RBX1JJQ0EgICAgICAgICAgICAgICAgMHgxNDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX1BBTkFNQSAgICAgICAgICAgICAgICAgICAgMHgxODBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0RPTUlOSUNBTl9SRVBVQkxJQyAgICAgICAgMHgxYzBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX1ZFTkVaVUVMQSAgICAgICAgICAgICAgICAgMHgyMDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0NPTE9NQklBICAgICAgICAgICAgICAgICAgMHgyNDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX1BFUlUgICAgICAgICAgICAgICAgICAgICAgMHgyODBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0FSR0VOVElOQSAgICAgICAgICAgICAgICAgMHgyYzBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0VDVUFET1IgICAgICAgICAgICAgICAgICAgMHgzMDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0NISUxFICAgICAgICAgICAgICAgICAgICAgMHgzNDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX1VSVUdVQVkgICAgICAgICAgICAgICAgICAgMHgzODBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX1BBUkFHVUFZICAgICAgICAgICAgICAgICAgMHgzYzBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0JPTElWSUEgICAgICAgICAgICAgICAgICAgMHg0MDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0VMX1NBTFZBRE9SICAgICAgICAgICAgICAgMHg0NDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX0hPTkRVUkFTICAgICAgICAgICAgICAgICAgMHg0ODBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX05JQ0FSQUdVQSAgICAgICAgICAgICAgICAgMHg0YzBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX1BVRVJUT19SSUNPICAgICAgICAgICAgICAgMHg1MDBhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TUEFOSVNIX1VOSVRFRF9TVEFURVMgICAgICAgICAgICAgMHg1NDBhCisgIC8qIFRoZSBmb2xsb3dpbmcgSUQgYmxhdGFudGx5IHZpb2xhdGUgTVMgc3BlY3MgYnkgdXNpbmcgYSAqLworICAvKiBzdWJsYW5ndWFnZSA+IDB4MUYuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NQQU5JU0hfTEFUSU5fQU1FUklDQSAgICAgICAgICAgICAweEU0MGFVCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GSU5OSVNIX0ZJTkxBTkQgICAgICAgICAgICAgICAgICAgMHgwNDBiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfRlJBTkNFICAgICAgICAgICAgICAgICAgICAgMHgwNDBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfQkVMR0lVTSAgICAgICAgICAgICAgICAgICAgMHgwODBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfQ0FOQURBICAgICAgICAgICAgICAgICAgICAgMHgwYzBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfU1dJVFpFUkxBTkQgICAgICAgICAgICAgICAgMHgxMDBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfTFVYRU1CT1VSRyAgICAgICAgICAgICAgICAgMHgxNDBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfTU9OQUNPICAgICAgICAgICAgICAgICAgICAgMHgxODBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfV0VTVF9JTkRJRVMgICAgICAgICAgICAgICAgMHgxYzBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfUkVVTklPTiAgICAgICAgICAgICAgICAgICAgMHgyMDBjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUkVOQ0hfQ09OR08gICAgICAgICAgICAgICAgICAgICAgMHgyNDBjCisgIC8qIHdoaWNoIHdhcyBmb3JtZXJseTogKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0ZSRU5DSF9aQUlSRSAgVFRfTVNfTEFOR0lEX0ZSRU5DSF9DT05HTworI2RlZmluZSBUVF9NU19MQU5HSURfRlJFTkNIX1NFTkVHQUwgICAgICAgICAgICAgICAgICAgIDB4MjgwYworI2RlZmluZSBUVF9NU19MQU5HSURfRlJFTkNIX0NBTUVST09OICAgICAgICAgICAgICAgICAgIDB4MmMwYworI2RlZmluZSBUVF9NU19MQU5HSURfRlJFTkNIX0NPVEVfRF9JVk9JUkUgICAgICAgICAgICAgIDB4MzAwYworI2RlZmluZSBUVF9NU19MQU5HSURfRlJFTkNIX01BTEkgICAgICAgICAgICAgICAgICAgICAgIDB4MzQwYworI2RlZmluZSBUVF9NU19MQU5HSURfRlJFTkNIX01PUk9DQ08gICAgICAgICAgICAgICAgICAgIDB4MzgwYworI2RlZmluZSBUVF9NU19MQU5HSURfRlJFTkNIX0hBSVRJICAgICAgICAgICAgICAgICAgICAgIDB4M2MwYworICAvKiBhbmQgYW5vdGhlciB2aW9sYXRpb24gb2YgdGhlIHNwZWMgKHNlZSAweEU0MGFVKSAqLworI2RlZmluZSBUVF9NU19MQU5HSURfRlJFTkNIX05PUlRIX0FGUklDQSAgICAgICAgICAgICAgIDB4RTQwY1UKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0hFQlJFV19JU1JBRUwgICAgICAgICAgICAgICAgICAgICAweDA0MGQKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0hVTkdBUklBTl9IVU5HQVJZICAgICAgICAgICAgICAgICAweDA0MGUKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0lDRUxBTkRJQ19JQ0VMQU5EICAgICAgICAgICAgICAgICAweDA0MGYKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0lUQUxJQU5fSVRBTFkgICAgICAgICAgICAgICAgICAgICAweDA0MTAKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0lUQUxJQU5fU1dJVFpFUkxBTkQgICAgICAgICAgICAgICAweDA4MTAKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0pBUEFORVNFX0pBUEFOICAgICAgICAgICAgICAgICAgICAweDA0MTEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tPUkVBTl9FWFRFTkRFRF9XQU5TVU5HX0tPUkVBICAgICAweDA0MTIKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tPUkVBTl9KT0hBQl9LT1JFQSAgICAgICAgICAgICAgICAweDA4MTIKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0RVVENIX05FVEhFUkxBTkRTICAgICAgICAgICAgICAgICAweDA0MTMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0RVVENIX0JFTEdJVU0gICAgICAgICAgICAgICAgICAgICAweDA4MTMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX05PUldFR0lBTl9OT1JXQVlfQk9LTUFMICAgICAgICAgICAweDA0MTQKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX05PUldFR0lBTl9OT1JXQVlfTllOT1JTSyAgICAgICAgICAweDA4MTQKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1BPTElTSF9QT0xBTkQgICAgICAgICAgICAgICAgICAgICAweDA0MTUKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1BPUlRVR1VFU0VfQlJBWklMICAgICAgICAgICAgICAgICAweDA0MTYKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1BPUlRVR1VFU0VfUE9SVFVHQUwgICAgICAgICAgICAgICAweDA4MTYKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1JIQUVUT19ST01BTklDX1NXSVRaRVJMQU5EICAgICAgICAweDA0MTcKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1JPTUFOSUFOX1JPTUFOSUEgICAgICAgICAgICAgICAgICAweDA0MTgKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX01PTERBVklBTl9NT0xEQVZJQSAgICAgICAgICAgICAgICAweDA4MTgKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1JVU1NJQU5fUlVTU0lBICAgICAgICAgICAgICAgICAgICAweDA0MTkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1JVU1NJQU5fTU9MREFWSUEgICAgICAgICAgICAgICAgICAweDA4MTkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0NST0FUSUFOX0NST0FUSUEgICAgICAgICAgICAgICAgICAweDA0MWEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NFUkJJQU5fU0VSQklBX0xBVElOICAgICAgICAgICAgICAweDA4MWEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NFUkJJQU5fU0VSQklBX0NZUklMTElDICAgICAgICAgICAweDBjMWEKKworI2lmIDAgIC8qIHRoaXMgdXNlZCB0byBiZSB0aGlzIHZhbHVlLCBidXQgaXQgbG9va3MgbGlrZSB3ZSB3ZXJlIHdyb25nICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9CT1NOSUFOX0JPU05JQV9IRVJaRUdPVklOQSAgICAgICAgMHgxMDFhCisjZWxzZSAgLyogY3VycmVudCBzb3VyY2VzIHNheSAqLworI2RlZmluZSBUVF9NU19MQU5HSURfQ1JPQVRJQU5fQk9TTklBX0hFUlpFR09WSU5BICAgICAgIDB4MTAxYQorI2RlZmluZSBUVF9NU19MQU5HSURfQk9TTklBTl9CT1NOSUFfSEVSWkVHT1ZJTkEgICAgICAgIDB4MTQxYQorICAgICAgIC8qIGFuZCBYUHNwMiBQbGF0Zm9ybSBTREsgYWRkZWQgKDIwMDQtMDctMjYpICovCisgICAgICAgLyogTmFtZXMgYXJlIHNob3J0ZW5lZCB0byBiZSBzaWduaWZpY2FudCB3aXRoaW4gNDAgY2hhcnMuICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TRVJCSUFOX0JPU05JQV9IRVJaX0xBVElOICAgICAgICAgMHgxODFhCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TRVJCSUFOX0JPU05JQV9IRVJaX0NZUklMTElDICAgICAgMHgxODFhCisjZW5kaWYKKworI2RlZmluZSBUVF9NU19MQU5HSURfU0xPVkFLX1NMT1ZBS0lBICAgICAgICAgICAgICAgICAgIDB4MDQxYgorI2RlZmluZSBUVF9NU19MQU5HSURfQUxCQU5JQU5fQUxCQU5JQSAgICAgICAgICAgICAgICAgIDB4MDQxYworI2RlZmluZSBUVF9NU19MQU5HSURfU1dFRElTSF9TV0VERU4gICAgICAgICAgICAgICAgICAgIDB4MDQxZAorI2RlZmluZSBUVF9NU19MQU5HSURfU1dFRElTSF9GSU5MQU5EICAgICAgICAgICAgICAgICAgIDB4MDgxZAorI2RlZmluZSBUVF9NU19MQU5HSURfVEhBSV9USEFJTEFORCAgICAgICAgICAgICAgICAgICAgIDB4MDQxZQorI2RlZmluZSBUVF9NU19MQU5HSURfVFVSS0lTSF9UVVJLRVkgICAgICAgICAgICAgICAgICAgIDB4MDQxZgorI2RlZmluZSBUVF9NU19MQU5HSURfVVJEVV9QQUtJU1RBTiAgICAgICAgICAgICAgICAgICAgIDB4MDQyMAorI2RlZmluZSBUVF9NU19MQU5HSURfVVJEVV9JTkRJQSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgyMAorI2RlZmluZSBUVF9NU19MQU5HSURfSU5ET05FU0lBTl9JTkRPTkVTSUEgICAgICAgICAgICAgIDB4MDQyMQorI2RlZmluZSBUVF9NU19MQU5HSURfVUtSQUlOSUFOX1VLUkFJTkUgICAgICAgICAgICAgICAgIDB4MDQyMgorI2RlZmluZSBUVF9NU19MQU5HSURfQkVMQVJVU0lBTl9CRUxBUlVTICAgICAgICAgICAgICAgIDB4MDQyMworI2RlZmluZSBUVF9NU19MQU5HSURfU0xPVkVORV9TTE9WRU5JQSAgICAgICAgICAgICAgICAgIDB4MDQyNAorI2RlZmluZSBUVF9NU19MQU5HSURfRVNUT05JQU5fRVNUT05JQSAgICAgICAgICAgICAgICAgIDB4MDQyNQorI2RlZmluZSBUVF9NU19MQU5HSURfTEFUVklBTl9MQVRWSUEgICAgICAgICAgICAgICAgICAgIDB4MDQyNgorI2RlZmluZSBUVF9NU19MQU5HSURfTElUSFVBTklBTl9MSVRIVUFOSUEgICAgICAgICAgICAgIDB4MDQyNworI2RlZmluZSBUVF9NU19MQU5HSURfQ0xBU1NJQ19MSVRIVUFOSUFOX0xJVEhVQU5JQSAgICAgIDB4MDgyNworI2RlZmluZSBUVF9NU19MQU5HSURfVEFKSUtfVEFKSUtJU1RBTiAgICAgICAgICAgICAgICAgIDB4MDQyOAorI2RlZmluZSBUVF9NU19MQU5HSURfRkFSU0lfSVJBTiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQyOQorI2RlZmluZSBUVF9NU19MQU5HSURfVklFVE5BTUVTRV9WSUVUX05BTSAgICAgICAgICAgICAgIDB4MDQyYQorI2RlZmluZSBUVF9NU19MQU5HSURfQVJNRU5JQU5fQVJNRU5JQSAgICAgICAgICAgICAgICAgIDB4MDQyYgorI2RlZmluZSBUVF9NU19MQU5HSURfQVpFUklfQVpFUkJBSUpBTl9MQVRJTiAgICAgICAgICAgIDB4MDQyYworI2RlZmluZSBUVF9NU19MQU5HSURfQVpFUklfQVpFUkJBSUpBTl9DWVJJTExJQyAgICAgICAgIDB4MDgyYworI2RlZmluZSBUVF9NU19MQU5HSURfQkFTUVVFX1NQQUlOICAgICAgICAgICAgICAgICAgICAgIDB4MDQyZAorI2RlZmluZSBUVF9NU19MQU5HSURfU09SQklBTl9HRVJNQU5ZICAgICAgICAgICAgICAgICAgIDB4MDQyZQorI2RlZmluZSBUVF9NU19MQU5HSURfTUFDRURPTklBTl9NQUNFRE9OSUEgICAgICAgICAgICAgIDB4MDQyZgorI2RlZmluZSBUVF9NU19MQU5HSURfU1VUVV9TT1VUSF9BRlJJQ0EgICAgICAgICAgICAgICAgIDB4MDQzMAorI2RlZmluZSBUVF9NU19MQU5HSURfVFNPTkdBX1NPVVRIX0FGUklDQSAgICAgICAgICAgICAgIDB4MDQzMQorI2RlZmluZSBUVF9NU19MQU5HSURfVFNXQU5BX1NPVVRIX0FGUklDQSAgICAgICAgICAgICAgIDB4MDQzMgorI2RlZmluZSBUVF9NU19MQU5HSURfVkVOREFfU09VVEhfQUZSSUNBICAgICAgICAgICAgICAgIDB4MDQzMworI2RlZmluZSBUVF9NU19MQU5HSURfWEhPU0FfU09VVEhfQUZSSUNBICAgICAgICAgICAgICAgIDB4MDQzNAorI2RlZmluZSBUVF9NU19MQU5HSURfWlVMVV9TT1VUSF9BRlJJQ0EgICAgICAgICAgICAgICAgIDB4MDQzNQorI2RlZmluZSBUVF9NU19MQU5HSURfQUZSSUtBQU5TX1NPVVRIX0FGUklDQSAgICAgICAgICAgIDB4MDQzNgorI2RlZmluZSBUVF9NU19MQU5HSURfR0VPUkdJQU5fR0VPUkdJQSAgICAgICAgICAgICAgICAgIDB4MDQzNworI2RlZmluZSBUVF9NU19MQU5HSURfRkFFUk9FU0VfRkFFUk9FX0lTTEFORFMgICAgICAgICAgIDB4MDQzOAorI2RlZmluZSBUVF9NU19MQU5HSURfSElORElfSU5ESUEgICAgICAgICAgICAgICAgICAgICAgIDB4MDQzOQorI2RlZmluZSBUVF9NU19MQU5HSURfTUFMVEVTRV9NQUxUQSAgICAgICAgICAgICAgICAgICAgIDB4MDQzYQorICAvKiBBZGRlZCBieSBYUHNwMiBQbGF0Zm9ybSBTREsgKDIwMDQtMDctMjYpICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQU1JX05PUlRIRVJOX05PUldBWSAgICAgICAgICAgICAgMHgwNDNiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQU1JX05PUlRIRVJOX1NXRURFTiAgICAgICAgICAgICAgMHgwODNiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQU1JX05PUlRIRVJOX0ZJTkxBTkQgICAgICAgICAgICAgMHgwQzNiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQU1JX0xVTEVfTk9SV0FZICAgICAgICAgICAgICAgICAgMHgxMDNiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQU1JX0xVTEVfU1dFREVOICAgICAgICAgICAgICAgICAgMHgxNDNiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQU1JX1NPVVRIRVJOX05PUldBWSAgICAgICAgICAgICAgMHgxODNiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQU1JX1NPVVRIRVJOX1NXRURFTiAgICAgICAgICAgICAgMHgxQzNiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQU1JX1NLT0xUX0ZJTkxBTkQgICAgICAgICAgICAgICAgMHgyMDNiCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQU1JX0lOQVJJX0ZJTkxBTkQgICAgICAgICAgICAgICAgMHgyNDNiCisgIC8qIC4uLiBhbmQgd2UgYWxzbyBrZWVwIG91ciBvbGQgaWRlbnRpZmllci4uLiAqLworI2RlZmluZSBUVF9NU19MQU5HSURfU0FBTUlfTEFQT05JQSAgICAgICAgICAgICAgICAgICAgIDB4MDQzYgorCisjaWYgMCAvKiB0aGlzIHNlZW1zIHRvIGJlIGEgcHJldmlvdXMgaW52ZXJzaW9uICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9JUklTSF9HQUVMSUNfSVJFTEFORCAgICAgICAgICAgICAgMHgwNDNjCisjZGVmaW5lIFRUX01TX0xBTkdJRF9TQ09UVElTSF9HQUVMSUNfVU5JVEVEX0tJTkdET00gICAgMHgwODNjCisjZWxzZQorI2RlZmluZSBUVF9NU19MQU5HSURfU0NPVFRJU0hfR0FFTElDX1VOSVRFRF9LSU5HRE9NICAgIDB4MDgzYworI2RlZmluZSBUVF9NU19MQU5HSURfSVJJU0hfR0FFTElDX0lSRUxBTkQgICAgICAgICAgICAgIDB4MDQzYworI2VuZGlmCisKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1lJRERJU0hfR0VSTUFOWSAgICAgICAgICAgICAgICAgICAweDA0M2QKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX01BTEFZX01BTEFZU0lBICAgICAgICAgICAgICAgICAgICAweDA0M2UKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX01BTEFZX0JSVU5FSV9EQVJVU1NBTEFNICAgICAgICAgICAweDA4M2UKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tBWkFLX0tBWkFLU1RBTiAgICAgICAgICAgICAgICAgICAweDA0M2YKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tJUkdISVpfS0lSR0hJWlNUQU4gLyogQ3lyaWxsaWMqLyAweDA0NDAKKyAgLyogYWxpYXMgZGVjbGFyZWQgaW4gV2luZG93cyAyMDAwICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9LSVJHSElaX0tJUkdISVpfUkVQVUJMSUMgXAorICAgICAgICAgIFRUX01TX0xBTkdJRF9LSVJHSElaX0tJUkdISVpTVEFOCisKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NXQUhJTElfS0VOWUEgICAgICAgICAgICAgICAgICAgICAweDA0NDEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RVUktNRU5fVFVSS01FTklTVEFOICAgICAgICAgICAgICAweDA0NDIKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1VaQkVLX1VaQkVLSVNUQU5fTEFUSU4gICAgICAgICAgICAweDA0NDMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1VaQkVLX1VaQkVLSVNUQU5fQ1lSSUxMSUMgICAgICAgICAweDA4NDMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RBVEFSX1RBVEFSU1RBTiAgICAgICAgICAgICAgICAgICAweDA0NDQKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0JFTkdBTElfSU5ESUEgICAgICAgICAgICAgICAgICAgICAweDA0NDUKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0JFTkdBTElfQkFOR0xBREVTSCAgICAgICAgICAgICAgICAweDA4NDUKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1BVTkpBQklfSU5ESUEgICAgICAgICAgICAgICAgICAgICAweDA0NDYKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1BVTkpBQklfQVJBQklDX1BBS0lTVEFOICAgICAgICAgICAweDA4NDYKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0dVSkFSQVRJX0lORElBICAgICAgICAgICAgICAgICAgICAweDA0NDcKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX09SSVlBX0lORElBICAgICAgICAgICAgICAgICAgICAgICAweDA0NDgKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RBTUlMX0lORElBICAgICAgICAgICAgICAgICAgICAgICAweDA0NDkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RFTFVHVV9JTkRJQSAgICAgICAgICAgICAgICAgICAgICAweDA0NGEKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tBTk5BREFfSU5ESUEgICAgICAgICAgICAgICAgICAgICAweDA0NGIKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX01BTEFZQUxBTV9JTkRJQSAgICAgICAgICAgICAgICAgICAweDA0NGMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0FTU0FNRVNFX0lORElBICAgICAgICAgICAgICAgICAgICAweDA0NGQKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX01BUkFUSElfSU5ESUEgICAgICAgICAgICAgICAgICAgICAweDA0NGUKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NBTlNLUklUX0lORElBICAgICAgICAgICAgICAgICAgICAweDA0NGYKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX01PTkdPTElBTl9NT05HT0xJQSAvKiBDeXJpbGxpYyAqLyAweDA0NTAKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX01PTkdPTElBTl9NT05HT0xJQV9NT05HT0xJQU4gICAgICAweDA4NTAKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RJQkVUQU5fQ0hJTkEgICAgICAgICAgICAgICAgICAgICAweDA0NTEKKyAgLyogRG9uJ3QgdXNlIHRoZSBuZXh0IGNvbnN0YW50ISAgSXQgaGFzICAgICAgICAgICAgKi8KKyAgLyogICAoMSkgdGhlIHdyb25nIHNwZWxsaW5nIChEem9uZ2hrYSkgICAgICAgICAgICAgKi8KKyAgLyogICAoMikgTWljcm9zb2Z0IGRvZXNuJ3Qgb2ZmaWNpYWxseSBkZWZpbmUgaXQgLS0gKi8KKyAgLyogICAgICAgYXQgbGVhc3QgaXQgaXMgbm90IGluIHRoZSBMaXN0IG9mIExvY2FsICAgKi8KKyAgLyogICAgICAgSUQgVmFsdWVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAoMykgRHpvbmdraGEgaXMgbm90IHRoZSBzYW1lIGxhbmd1YWdlIGFzICAgICAgKi8KKyAgLyogICAgICAgVGliZXRhbiwgc28gbWVyZ2luZyBpdCBpcyB3cm9uZyBhbnl3YXkuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVFRfTVNfTEFOR0lEX1RJQkVUQU5fQkhVVEFOIGlzIGNvcnJlY3QsIEJUVy4gICAgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0RaT05HSEtBX0JIVVRBTiAgICAgICAgICAgICAgICAgICAweDA4NTEKKworI2lmIDAKKyAgLyogdGhlIGZvbGxvd2luZyB1c2VkIHRvIGJlIGRlZmluZWQgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RJQkVUQU5fQkhVVEFOICAgICAgICAgICAgICAgICAgICAweDA0NTEKKyAgLyogLi4uIGJ1dCBpdCB3YXMgY2hhbmdlZDsgKi8KKyNlbHNlCisgIC8qIFNvIHdlIHdpbGwgY29udGludWUgdG8gI2RlZmluZSBpdCwgYnV0IHdpdGggdGhlIGNvcnJlY3QgdmFsdWUgKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RJQkVUQU5fQkhVVEFOICAgVFRfTVNfTEFOR0lEX0RaT05HSEtBX0JIVVRBTgorI2VuZGlmCisKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1dFTFNIX1dBTEVTICAgICAgICAgICAgICAgICAgICAgICAweDA0NTIKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tITUVSX0NBTUJPRElBICAgICAgICAgICAgICAgICAgICAweDA0NTMKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0xBT19MQU9TICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0NTQKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0JVUk1FU0VfTVlBTk1BUiAgICAgICAgICAgICAgICAgICAweDA0NTUKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0dBTElDSUFOX1NQQUlOICAgICAgICAgICAgICAgICAgICAweDA0NTYKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX0tPTktBTklfSU5ESUEgICAgICAgICAgICAgICAgICAgICAweDA0NTcKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX01BTklQVVJJX0lORElBICAvKiBCZW5nYWxpICovICAgICAweDA0NTgKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NJTkRISV9JTkRJQSAvKiBBcmFiaWMgKi8gICAgICAgICAweDA0NTkKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1NJTkRISV9QQUtJU1RBTiAgICAgICAgICAgICAgICAgICAweDA4NTkKKyAgLyogTWlzc2luZyBhIExDSUQgZm9yIFNpbmRoaSBpbiBEZXZhbmFnYXJpIHNjcmlwdCAqLworI2RlZmluZSBUVF9NU19MQU5HSURfU1lSSUFDX1NZUklBICAgICAgICAgICAgICAgICAgICAgIDB4MDQ1YQorI2RlZmluZSBUVF9NU19MQU5HSURfU0lOSEFMRVNFX1NSSV9MQU5LQSAgICAgICAgICAgICAgIDB4MDQ1YgorI2RlZmluZSBUVF9NU19MQU5HSURfQ0hFUk9LRUVfVU5JVEVEX1NUQVRFUyAgICAgICAgICAgIDB4MDQ1YworI2RlZmluZSBUVF9NU19MQU5HSURfSU5VS1RJVFVUX0NBTkFEQSAgICAgICAgICAgICAgICAgIDB4MDQ1ZAorI2RlZmluZSBUVF9NU19MQU5HSURfQU1IQVJJQ19FVEhJT1BJQSAgICAgICAgICAgICAgICAgIDB4MDQ1ZQorI2RlZmluZSBUVF9NU19MQU5HSURfVEFNQVpJR0hUX01PUk9DQ08gLyogQXJhYmljICovICAgIDB4MDQ1ZgorI2RlZmluZSBUVF9NU19MQU5HSURfVEFNQVpJR0hUX01PUk9DQ09fTEFUSU4gICAgICAgICAgIDB4MDg1ZgorICAvKiBNaXNzaW5nIGEgTENJRCBmb3IgVGlmaW5hZ2ggc2NyaXB0ICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9LQVNITUlSSV9QQUtJU1RBTiAvKiBBcmFiaWMgKi8gICAgMHgwNDYwCisgIC8qIFNwZWxsZWQgdGhpcyB3YXkgYnkgWFBzcDIgUGxhdGZvcm0gU0RLICgyMDA0LTA3LTI2KSAqLworICAvKiBzY3JpcHQgaXMgeWV0IHVuY2xlYXIuLi4gbWlnaHQgYmUgQXJhYmljLCBOYWdhcmkgb3IgU2hhcmFkYSAqLworI2RlZmluZSBUVF9NU19MQU5HSURfS0FTSE1JUklfU0FTSUEgICAgICAgICAgICAgICAgICAgIDB4MDg2MAorICAvKiAuLi4gYW5kIGFsaWFzZWQgKGJ5IE1TKSBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiAqLworI2RlZmluZSBUVF9NU19MQU5HSURfS0FTSE1JUklfSU5ESUEgVFRfTVNfTEFOR0lEX0tBU0hNSVJJX1NBU0lBCisjZGVmaW5lIFRUX01TX0xBTkdJRF9ORVBBTElfTkVQQUwgICAgICAgICAgICAgICAgICAgICAgMHgwNDYxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9ORVBBTElfSU5ESUEgICAgICAgICAgICAgICAgICAgICAgMHgwODYxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GUklTSUFOX05FVEhFUkxBTkRTICAgICAgICAgICAgICAgMHgwNDYyCisjZGVmaW5lIFRUX01TX0xBTkdJRF9QQVNIVE9fQUZHSEFOSVNUQU4gICAgICAgICAgICAgICAgMHgwNDYzCisjZGVmaW5lIFRUX01TX0xBTkdJRF9GSUxJUElOT19QSElMSVBQSU5FUyAgICAgICAgICAgICAgMHgwNDY0CisjZGVmaW5lIFRUX01TX0xBTkdJRF9ESElWRUhJX01BTERJVkVTICAgICAgICAgICAgICAgICAgMHgwNDY1CisgIC8qIGFsaWFzIGRlY2xhcmVkIGluIFdpbmRvd3MgMjAwMCAqLworI2RlZmluZSBUVF9NU19MQU5HSURfRElWRUhJX01BTERJVkVTICBUVF9NU19MQU5HSURfREhJVkVISV9NQUxESVZFUworI2RlZmluZSBUVF9NU19MQU5HSURfRURPX05JR0VSSUEgICAgICAgICAgICAgICAgICAgICAgIDB4MDQ2NgorI2RlZmluZSBUVF9NU19MQU5HSURfRlVMRlVMREVfTklHRVJJQSAgICAgICAgICAgICAgICAgIDB4MDQ2NworI2RlZmluZSBUVF9NU19MQU5HSURfSEFVU0FfTklHRVJJQSAgICAgICAgICAgICAgICAgICAgIDB4MDQ2OAorI2RlZmluZSBUVF9NU19MQU5HSURfSUJJQklPX05JR0VSSUEgICAgICAgICAgICAgICAgICAgIDB4MDQ2OQorI2RlZmluZSBUVF9NU19MQU5HSURfWU9SVUJBX05JR0VSSUEgICAgICAgICAgICAgICAgICAgIDB4MDQ2YQorI2RlZmluZSBUVF9NU19MQU5HSURfUVVFQ0hVQV9CT0xJVklBICAgICAgICAgICAgICAgICAgIDB4MDQ2YgorI2RlZmluZSBUVF9NU19MQU5HSURfUVVFQ0hVQV9FQ1VBRE9SICAgICAgICAgICAgICAgICAgIDB4MDg2YgorI2RlZmluZSBUVF9NU19MQU5HSURfUVVFQ0hVQV9QRVJVICAgICAgICAgICAgICAgICAgICAgIDB4MGM2YgorI2RlZmluZSBUVF9NU19MQU5HSURfU0VQRURJX1NPVVRIX0FGUklDQSAgICAgICAgICAgICAgIDB4MDQ2YworICAvKiBBbHNvIHNwZWxsZWQgYnkgWFBzcDIgUGxhdGZvcm0gU0RLICgyMDA0LTA3LTI2KSAqLworI2RlZmluZSBUVF9NU19MQU5HSURfU09USE9fU09VVEhFUk5fU09VVEhfQUZSSUNBIFwKKyAgICAgICAgICBUVF9NU19MQU5HSURfU0VQRURJX1NPVVRIX0FGUklDQQorICAvKiBsYW5ndWFnZSBjb2RlcyAweDA0NmQsIDB4MDQ2ZSBhbmQgMHgwNDZmIGFyZSAoc3RpbGwpIHVua25vd24uICovCisjZGVmaW5lIFRUX01TX0xBTkdJRF9JR0JPX05JR0VSSUEgICAgICAgICAgICAgICAgICAgICAgMHgwNDcwCisjZGVmaW5lIFRUX01TX0xBTkdJRF9LQU5VUklfTklHRVJJQSAgICAgICAgICAgICAgICAgICAgMHgwNDcxCisjZGVmaW5lIFRUX01TX0xBTkdJRF9PUk9NT19FVEhJT1BJQSAgICAgICAgICAgICAgICAgICAgMHgwNDcyCisjZGVmaW5lIFRUX01TX0xBTkdJRF9USUdSSUdOQV9FVEhJT1BJQSAgICAgICAgICAgICAgICAgMHgwNDczCisjZGVmaW5lIFRUX01TX0xBTkdJRF9USUdSSUdOQV9FUllUSFJFQSAgICAgICAgICAgICAgICAgMHgwODczCisgIC8qIGFsc28gc3BlbGxlZCBpbiB0aGUgYFBhc3Nwb3J0IFNESycgbGlzdCBhczogKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1RJR1JJR05BX0VSWVRSRUEgIFRUX01TX0xBTkdJRF9USUdSSUdOQV9FUllUSFJFQQorI2RlZmluZSBUVF9NU19MQU5HSURfR1VBUkFOSV9QQVJBR1VBWSAgICAgICAgICAgICAgICAgIDB4MDQ3NAorI2RlZmluZSBUVF9NU19MQU5HSURfSEFXQUlJQU5fVU5JVEVEX1NUQVRFUyAgICAgICAgICAgIDB4MDQ3NQorI2RlZmluZSBUVF9NU19MQU5HSURfTEFUSU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQ3NgorI2RlZmluZSBUVF9NU19MQU5HSURfU09NQUxJX1NPTUFMSUEgICAgICAgICAgICAgICAgICAgIDB4MDQ3NworICAvKiBOb3RlOiBZaSBkb2VzIG5vdCBoYXZlIGEgKHByb3BlcikgSVNPIDYzOS0yIGNvZGUsIHNpbmNlIGl0IGlzIG1vc3RseSAqLworICAvKiAgICAgICBub3Qgd3JpdHRlbiAoYnV0IE9UT0ggdGhlIHBlY3VsaWFyIHdyaXRpbmcgc3lzdGVtIGlzIHdvcnRoICAgICAqLworICAvKiAgICAgICBzdHVkeWluZykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9NU19MQU5HSURfWUlfQ0hJTkEgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQ3OAorI2RlZmluZSBUVF9NU19MQU5HSURfUEFQSUFNRU5UVV9ORVRIRVJMQU5EU19BTlRJTExFUyAgIDB4MDQ3OQorICAvKiBsYW5ndWFnZSBjb2RlcyBmcm9tIDB4MDQ3YSB0byAweDA0N2YgYXJlIChzdGlsbCkgdW5rbm93bi4gKi8KKyNkZWZpbmUgVFRfTVNfTEFOR0lEX1VJR0hVUl9DSElOQSAgICAgICAgICAgICAgICAgICAgICAweDA0ODAKKyNkZWZpbmUgVFRfTVNfTEFOR0lEX01BT1JJX05FV19aRUFMQU5EICAgICAgICAgICAgICAgICAweDA0ODEKKworI2lmIDAgIC8qIG5vdCBkZWVtZWQgdXNlZnVsIGZvciBmb250cyAqLworI2RlZmluZSBUVF9NU19MQU5HSURfSFVNQU5fSU5URVJGQUNFX0RFVklDRSAgICAgICAgICAgIDB4MDRmZgorI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgYG5hbWUnIGlkZW50aWZpZXIgZmllbGQgaW4gdGhlIG5hbWUgcmVjb3JkcyBvZiAqLworICAvKiB0aGUgVFRGIGBuYW1lJyB0YWJsZS4gIFRoZXNlIHZhbHVlcyBhcmUgcGxhdGZvcm0gaW5kZXBlbmRlbnQuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX05BTUVfSURfQ09QWVJJR0hUICAgICAgICAgICAgMAorI2RlZmluZSBUVF9OQU1FX0lEX0ZPTlRfRkFNSUxZICAgICAgICAgIDEKKyNkZWZpbmUgVFRfTkFNRV9JRF9GT05UX1NVQkZBTUlMWSAgICAgICAyCisjZGVmaW5lIFRUX05BTUVfSURfVU5JUVVFX0lEICAgICAgICAgICAgMworI2RlZmluZSBUVF9OQU1FX0lEX0ZVTExfTkFNRSAgICAgICAgICAgIDQKKyNkZWZpbmUgVFRfTkFNRV9JRF9WRVJTSU9OX1NUUklORyAgICAgICA1CisjZGVmaW5lIFRUX05BTUVfSURfUFNfTkFNRSAgICAgICAgICAgICAgNgorI2RlZmluZSBUVF9OQU1FX0lEX1RSQURFTUFSSyAgICAgICAgICAgIDcKKworICAvKiB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgZnJvbSB0aGUgT3BlblR5cGUgc3BlYyAqLworI2RlZmluZSBUVF9OQU1FX0lEX01BTlVGQUNUVVJFUiAgICAgICAgIDgKKyNkZWZpbmUgVFRfTkFNRV9JRF9ERVNJR05FUiAgICAgICAgICAgICA5CisjZGVmaW5lIFRUX05BTUVfSURfREVTQ1JJUFRJT04gICAgICAgICAgMTAKKyNkZWZpbmUgVFRfTkFNRV9JRF9WRU5ET1JfVVJMICAgICAgICAgICAxMQorI2RlZmluZSBUVF9OQU1FX0lEX0RFU0lHTkVSX1VSTCAgICAgICAgIDEyCisjZGVmaW5lIFRUX05BTUVfSURfTElDRU5TRSAgICAgICAgICAgICAgMTMKKyNkZWZpbmUgVFRfTkFNRV9JRF9MSUNFTlNFX1VSTCAgICAgICAgICAxNAorICAvKiBudW1iZXIgMTUgaXMgcmVzZXJ2ZWQgKi8KKyNkZWZpbmUgVFRfTkFNRV9JRF9QUkVGRVJSRURfRkFNSUxZICAgICAxNgorI2RlZmluZSBUVF9OQU1FX0lEX1BSRUZFUlJFRF9TVUJGQU1JTFkgIDE3CisjZGVmaW5lIFRUX05BTUVfSURfTUFDX0ZVTExfTkFNRSAgICAgICAgMTgKKworICAvKiBUaGUgZm9sbG93aW5nIGNvZGUgaXMgbmV3IGFzIG9mIDIwMDAtMDEtMjEgKi8KKyNkZWZpbmUgVFRfTkFNRV9JRF9TQU1QTEVfVEVYVCAgICAgICAgICAxOQorCisgIC8qIFRoaXMgaXMgbmV3IGluIE9wZW5UeXBlIDEuMyAqLworI2RlZmluZSBUVF9OQU1FX0lEX0NJRF9GSU5ERk9OVF9OQU1FICAgIDIwCisKKyAgLyogVGhpcyBpcyBuZXcgaW4gT3BlblR5cGUgMS41ICovCisjZGVmaW5lIFRUX05BTUVfSURfV1dTX0ZBTUlMWSAgICAgICAgICAgMjEKKyNkZWZpbmUgVFRfTkFNRV9JRF9XV1NfU1VCRkFNSUxZICAgICAgICAyMgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBCaXQgbWFzayB2YWx1ZXMgZm9yIHRoZSBVbmljb2RlIFJhbmdlcyBmcm9tIHRoZSBUVEYgYE9TMiAnIHRhYmxlLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFVwZGF0ZWQgMDgtTm92LTIwMDguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAvKiBCaXQgIDAgICBCYXNpYyBMYXRpbiAqLworI2RlZmluZSBUVF9VQ1JfQkFTSUNfTEFUSU4gICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDApIC8qIFUrMDAyMC1VKzAwN0UgKi8KKyAgLyogQml0ICAxICAgQzEgQ29udHJvbHMgYW5kIExhdGluLTEgU3VwcGxlbWVudCAqLworI2RlZmluZSBUVF9VQ1JfTEFUSU4xX1NVUFBMRU1FTlQgICAgICAgICAgICAgICAoMUwgPDwgIDEpIC8qIFUrMDA4MC1VKzAwRkYgKi8KKyAgLyogQml0ICAyICAgTGF0aW4gRXh0ZW5kZWQtQSAqLworI2RlZmluZSBUVF9VQ1JfTEFUSU5fRVhURU5ERURfQSAgICAgICAgICAgICAgICAoMUwgPDwgIDIpIC8qIFUrMDEwMC1VKzAxN0YgKi8KKyAgLyogQml0ICAzICAgTGF0aW4gRXh0ZW5kZWQtQiAqLworI2RlZmluZSBUVF9VQ1JfTEFUSU5fRVhURU5ERURfQiAgICAgICAgICAgICAgICAoMUwgPDwgIDMpIC8qIFUrMDE4MC1VKzAyNEYgKi8KKyAgLyogQml0ICA0ICAgSVBBIEV4dGVuc2lvbnMgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIFBob25ldGljIEV4dGVuc2lvbnMgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBQaG9uZXRpYyBFeHRlbnNpb25zIFN1cHBsZW1lbnQgKi8KKyNkZWZpbmUgVFRfVUNSX0lQQV9FWFRFTlNJT05TICAgICAgICAgICAgICAgICAgKDFMIDw8ICA0KSAvKiBVKzAyNTAtVSswMkFGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsxRDAwLVUrMUQ3RiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMUQ4MC1VKzFEQkYgKi8KKyAgLyogQml0ICA1ICAgU3BhY2luZyBNb2RpZmllciBMZXR0ZXJzICovCisgIC8qICAgICAgICAgIE1vZGlmaWVyIFRvbmUgTGV0dGVycyAgICAqLworI2RlZmluZSBUVF9VQ1JfU1BBQ0lOR19NT0RJRklFUiAgICAgICAgICAgICAgICAoMUwgPDwgIDUpIC8qIFUrMDJCMC1VKzAyRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVK0E3MDAtVStBNzFGICovCisgIC8qIEJpdCAgNiAgIENvbWJpbmluZyBEaWFjcml0aWNhbCBNYXJrcyAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIENvbWJpbmluZyBEaWFjcml0aWNhbCBNYXJrcyBTdXBwbGVtZW50ICovCisjZGVmaW5lIFRUX1VDUl9DT01CSU5JTkdfRElBQ1JJVElDUyAgICAgICAgICAgICgxTCA8PCAgNikgLyogVSswMzAwLVUrMDM2RiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMURDMC1VKzFERkYgKi8KKyAgLyogQml0ICA3ICAgR3JlZWsgYW5kIENvcHRpYyAqLworI2RlZmluZSBUVF9VQ1JfR1JFRUsgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDcpIC8qIFUrMDM3MC1VKzAzRkYgKi8KKyAgLyogQml0ICA4ICAgQ29wdGljICovCisjZGVmaW5lIFRUX1VDUl9DT1BUSUMgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgOCkgLyogVSsyQzgwLVUrMkNGRiAqLworICAvKiBCaXQgIDkgICBDeXJpbGxpYyAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEN5cmlsbGljIFN1cHBsZW1lbnQgKi8KKyAgLyogICAgICAgICAgQ3lyaWxsaWMgRXh0ZW5kZWQtQSAqLworICAvKiAgICAgICAgICBDeXJpbGxpYyBFeHRlbmRlZC1CICovCisjZGVmaW5lIFRUX1VDUl9DWVJJTExJQyAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgOSkgLyogVSswNDAwLVUrMDRGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMDUwMC1VKzA1MkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzJERTAtVSsyREZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVStBNjQwLVUrQTY5RiAqLworICAvKiBCaXQgMTAgICBBcm1lbmlhbiAqLworI2RlZmluZSBUVF9VQ1JfQVJNRU5JQU4gICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTApIC8qIFUrMDUzMC1VKzA1OEYgKi8KKyAgLyogQml0IDExICAgSGVicmV3ICovCisjZGVmaW5lIFRUX1VDUl9IRUJSRVcgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxMSkgLyogVSswNTkwLVUrMDVGRiAqLworICAvKiBCaXQgMTIgICBWYWkgKi8KKyNkZWZpbmUgVFRfVUNSX1ZBSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDEyKSAvKiBVK0E1MDAtVStBNjNGICovCisgIC8qIEJpdCAxMyAgIEFyYWJpYyAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEFyYWJpYyBTdXBwbGVtZW50ICovCisjZGVmaW5lIFRUX1VDUl9BUkFCSUMgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxMykgLyogVSswNjAwLVUrMDZGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMDc1MC1VKzA3N0YgKi8KKyAgLyogQml0IDE0ICAgTktvICovCisjZGVmaW5lIFRUX1VDUl9OS08gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNCkgLyogVSswN0MwLVUrMDdGRiAqLworICAvKiBCaXQgMTUgICBEZXZhbmFnYXJpICovCisjZGVmaW5lIFRUX1VDUl9ERVZBTkFHQVJJICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNSkgLyogVSswOTAwLVUrMDk3RiAqLworICAvKiBCaXQgMTYgICBCZW5nYWxpICovCisjZGVmaW5lIFRUX1VDUl9CRU5HQUxJICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNikgLyogVSswOTgwLVUrMDlGRiAqLworICAvKiBCaXQgMTcgICBHdXJtdWtoaSAqLworI2RlZmluZSBUVF9VQ1JfR1VSTVVLSEkgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTcpIC8qIFUrMEEwMC1VKzBBN0YgKi8KKyAgLyogQml0IDE4ICAgR3VqYXJhdGkgKi8KKyNkZWZpbmUgVFRfVUNSX0dVSkFSQVRJICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE4KSAvKiBVKzBBODAtVSswQUZGICovCisgIC8qIEJpdCAxOSAgIE9yaXlhICovCisjZGVmaW5lIFRUX1VDUl9PUklZQSAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxOSkgLyogVSswQjAwLVUrMEI3RiAqLworICAvKiBCaXQgMjAgICBUYW1pbCAqLworI2RlZmluZSBUVF9VQ1JfVEFNSUwgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjApIC8qIFUrMEI4MC1VKzBCRkYgKi8KKyAgLyogQml0IDIxICAgVGVsdWd1ICovCisjZGVmaW5lIFRUX1VDUl9URUxVR1UgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyMSkgLyogVSswQzAwLVUrMEM3RiAqLworICAvKiBCaXQgMjIgICBLYW5uYWRhICovCisjZGVmaW5lIFRUX1VDUl9LQU5OQURBICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyMikgLyogVSswQzgwLVUrMENGRiAqLworICAvKiBCaXQgMjMgICBNYWxheWFsYW0gKi8KKyNkZWZpbmUgVFRfVUNSX01BTEFZQUxBTSAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDIzKSAvKiBVKzBEMDAtVSswRDdGICovCisgIC8qIEJpdCAyNCAgIFRoYWkgKi8KKyNkZWZpbmUgVFRfVUNSX1RIQUkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDI0KSAvKiBVKzBFMDAtVSswRTdGICovCisgIC8qIEJpdCAyNSAgIExhbyAqLworI2RlZmluZSBUVF9VQ1JfTEFPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjUpIC8qIFUrMEU4MC1VKzBFRkYgKi8KKyAgLyogQml0IDI2ICAgR2VvcmdpYW4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICBHZW9yZ2lhbiBTdXBwbGVtZW50ICovCisjZGVmaW5lIFRUX1VDUl9HRU9SR0lBTiAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyNikgLyogVSsxMEEwLVUrMTBGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMkQwMC1VKzJEMkYgKi8KKyAgLyogQml0IDI3ICAgQmFsaW5lc2UgKi8KKyNkZWZpbmUgVFRfVUNSX0JBTElORVNFICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDI3KSAvKiBVKzFCMDAtVSsxQjdGICovCisgIC8qIEJpdCAyOCAgIEhhbmd1bCBKYW1vICovCisjZGVmaW5lIFRUX1VDUl9IQU5HVUxfSkFNTyAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyOCkgLyogVSsxMTAwLVUrMTFGRiAqLworICAvKiBCaXQgMjkgICBMYXRpbiBFeHRlbmRlZCBBZGRpdGlvbmFsICovCisgIC8qICAgICAgICAgIExhdGluIEV4dGVuZGVkLUMgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgTGF0aW4gRXh0ZW5kZWQtRCAgICAgICAgICAqLworI2RlZmluZSBUVF9VQ1JfTEFUSU5fRVhURU5ERURfQURESVRJT05BTCAgICAgICAoMUwgPDwgMjkpIC8qIFUrMUUwMC1VKzFFRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzJDNjAtVSsyQzdGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVStBNzIwLVUrQTdGRiAqLworICAvKiBCaXQgMzAgICBHcmVlayBFeHRlbmRlZCAqLworI2RlZmluZSBUVF9VQ1JfR1JFRUtfRVhURU5ERUQgICAgICAgICAgICAgICAgICAoMUwgPDwgMzApIC8qIFUrMUYwMC1VKzFGRkYgKi8KKyAgLyogQml0IDMxICAgR2VuZXJhbCBQdW5jdHVhdGlvbiAgICAgICovCisgIC8qICAgICAgICAgIFN1cHBsZW1lbnRhbCBQdW5jdHVhdGlvbiAqLworI2RlZmluZSBUVF9VQ1JfR0VORVJBTF9QVU5DVFVBVElPTiAgICAgICAgICAgICAoMUwgPDwgMzEpIC8qIFUrMjAwMC1VKzIwNkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzJFMDAtVSsyRTdGICovCisgIC8qIEJpdCAzMiAgIFN1cGVyc2NyaXB0cyBBbmQgU3Vic2NyaXB0cyAqLworI2RlZmluZSBUVF9VQ1JfU1VQRVJTQ1JJUFRTX1NVQlNDUklQVFMgICAgICAgICAoMUwgPDwgIDApIC8qIFUrMjA3MC1VKzIwOUYgKi8KKyAgLyogQml0IDMzICAgQ3VycmVuY3kgU3ltYm9scyAqLworI2RlZmluZSBUVF9VQ1JfQ1VSUkVOQ1lfU1lNQk9MUyAgICAgICAgICAgICAgICAoMUwgPDwgIDEpIC8qIFUrMjBBMC1VKzIwQ0YgKi8KKyAgLyogQml0IDM0ICAgQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzIEZvciBTeW1ib2xzICovCisjZGVmaW5lIFRUX1VDUl9DT01CSU5JTkdfRElBQ1JJVElDU19TWU1CICAgICAgICgxTCA8PCAgMikgLyogVSsyMEQwLVUrMjBGRiAqLworICAvKiBCaXQgMzUgICBMZXR0ZXJsaWtlIFN5bWJvbHMgKi8KKyNkZWZpbmUgVFRfVUNSX0xFVFRFUkxJS0VfU1lNQk9MUyAgICAgICAgICAgICAgKDFMIDw8ICAzKSAvKiBVKzIxMDAtVSsyMTRGICovCisgIC8qIEJpdCAzNiAgIE51bWJlciBGb3JtcyAqLworI2RlZmluZSBUVF9VQ1JfTlVNQkVSX0ZPUk1TICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDQpIC8qIFUrMjE1MC1VKzIxOEYgKi8KKyAgLyogQml0IDM3ICAgQXJyb3dzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgU3VwcGxlbWVudGFsIEFycm93cy1BICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgU3VwcGxlbWVudGFsIEFycm93cy1CICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgTWlzY2VsbGFuZW91cyBTeW1ib2xzIGFuZCBBcnJvd3MgKi8KKyNkZWZpbmUgVFRfVUNSX0FSUk9XUyAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICA1KSAvKiBVKzIxOTAtVSsyMUZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsyN0YwLVUrMjdGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMjkwMC1VKzI5N0YgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzJCMDAtVSsyQkZGICovCisgIC8qIEJpdCAzOCAgIE1hdGhlbWF0aWNhbCBPcGVyYXRvcnMgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBTdXBwbGVtZW50YWwgTWF0aGVtYXRpY2FsIE9wZXJhdG9ycyAgKi8KKyAgLyogICAgICAgICAgTWlzY2VsbGFuZW91cyBNYXRoZW1hdGljYWwgU3ltYm9scy1BICovCisgIC8qICAgICAgICAgIE1pc2NlbGxhbmVvdXMgTWF0aGVtYXRpY2FsIFN5bWJvbHMtQiAqLworI2RlZmluZSBUVF9VQ1JfTUFUSEVNQVRJQ0FMX09QRVJBVE9SUyAgICAgICAgICAoMUwgPDwgIDYpIC8qIFUrMjIwMC1VKzIyRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzJBMDAtVSsyQUZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsyN0MwLVUrMjdFRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMjk4MC1VKzI5RkYgKi8KKyAgLyogQml0IDM5IE1pc2NlbGxhbmVvdXMgVGVjaG5pY2FsICovCisjZGVmaW5lIFRUX1VDUl9NSVNDRUxMQU5FT1VTX1RFQ0hOSUNBTCAgICAgICAgICgxTCA8PCAgNykgLyogVSsyMzAwLVUrMjNGRiAqLworICAvKiBCaXQgNDAgICBDb250cm9sIFBpY3R1cmVzICovCisjZGVmaW5lIFRUX1VDUl9DT05UUk9MX1BJQ1RVUkVTICAgICAgICAgICAgICAgICgxTCA8PCAgOCkgLyogVSsyNDAwLVUrMjQzRiAqLworICAvKiBCaXQgNDEgICBPcHRpY2FsIENoYXJhY3RlciBSZWNvZ25pdGlvbiAqLworI2RlZmluZSBUVF9VQ1JfT0NSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDkpIC8qIFUrMjQ0MC1VKzI0NUYgKi8KKyAgLyogQml0IDQyICAgRW5jbG9zZWQgQWxwaGFudW1lcmljcyAqLworI2RlZmluZSBUVF9VQ1JfRU5DTE9TRURfQUxQSEFOVU1FUklDUyAgICAgICAgICAoMUwgPDwgMTApIC8qIFUrMjQ2MC1VKzI0RkYgKi8KKyAgLyogQml0IDQzICAgQm94IERyYXdpbmcgKi8KKyNkZWZpbmUgVFRfVUNSX0JPWF9EUkFXSU5HICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDExKSAvKiBVKzI1MDAtVSsyNTdGICovCisgIC8qIEJpdCA0NCAgIEJsb2NrIEVsZW1lbnRzICovCisjZGVmaW5lIFRUX1VDUl9CTE9DS19FTEVNRU5UUyAgICAgICAgICAgICAgICAgICgxTCA8PCAxMikgLyogVSsyNTgwLVUrMjU5RiAqLworICAvKiBCaXQgNDUgICBHZW9tZXRyaWMgU2hhcGVzICovCisjZGVmaW5lIFRUX1VDUl9HRU9NRVRSSUNfU0hBUEVTICAgICAgICAgICAgICAgICgxTCA8PCAxMykgLyogVSsyNUEwLVUrMjVGRiAqLworICAvKiBCaXQgNDYgICBNaXNjZWxsYW5lb3VzIFN5bWJvbHMgKi8KKyNkZWZpbmUgVFRfVUNSX01JU0NFTExBTkVPVVNfU1lNQk9MUyAgICAgICAgICAgKDFMIDw8IDE0KSAvKiBVKzI2MDAtVSsyNkZGICovCisgIC8qIEJpdCA0NyAgIERpbmdiYXRzICovCisjZGVmaW5lIFRUX1VDUl9ESU5HQkFUUyAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNSkgLyogVSsyNzAwLVUrMjdCRiAqLworICAvKiBCaXQgNDggICBDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb24gKi8KKyNkZWZpbmUgVFRfVUNSX0NKS19TWU1CT0xTICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE2KSAvKiBVKzMwMDAtVSszMDNGICovCisgIC8qIEJpdCA0OSAgIEhpcmFnYW5hICovCisjZGVmaW5lIFRUX1VDUl9ISVJBR0FOQSAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNykgLyogVSszMDQwLVUrMzA5RiAqLworICAvKiBCaXQgNTAgICBLYXRha2FuYSAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEthdGFrYW5hIFBob25ldGljIEV4dGVuc2lvbnMgKi8KKyNkZWZpbmUgVFRfVUNSX0tBVEFLQU5BICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE4KSAvKiBVKzMwQTAtVSszMEZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSszMUYwLVUrMzFGRiAqLworICAvKiBCaXQgNTEgICBCb3BvbW9mbyAgICAgICAgICAqLworICAvKiAgICAgICAgICBCb3BvbW9mbyBFeHRlbmRlZCAqLworI2RlZmluZSBUVF9VQ1JfQk9QT01PRk8gICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTkpIC8qIFUrMzEwMC1VKzMxMkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzMxQTAtVSszMUJGICovCisgIC8qIEJpdCA1MiAgIEhhbmd1bCBDb21wYXRpYmlsaXR5IEphbW8gKi8KKyNkZWZpbmUgVFRfVUNSX0hBTkdVTF9DT01QQVRJQklMSVRZX0pBTU8gICAgICAgKDFMIDw8IDIwKSAvKiBVKzMxMzAtVSszMThGICovCisgIC8qIEJpdCA1MyAgIFBoYWdzLVBhICovCisjZGVmaW5lIFRUX1VDUl9DSktfTUlTQyAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAyMSkgLyogVStBODQwLVUrQTg3RiAqLworI2RlZmluZSBUVF9VQ1JfS0FOQlVOICBUVF9VQ1JfQ0pLX01JU0MgLyogZGVwcmVjYXRlZCAqLworI2RlZmluZSBUVF9VQ1JfUEhBR1NQQQorICAvKiBCaXQgNTQgICBFbmNsb3NlZCBDSksgTGV0dGVycyBhbmQgTW9udGhzICovCisjZGVmaW5lIFRUX1VDUl9FTkNMT1NFRF9DSktfTEVUVEVSU19NT05USFMgICAgICgxTCA8PCAyMikgLyogVSszMjAwLVUrMzJGRiAqLworICAvKiBCaXQgNTUgICBDSksgQ29tcGF0aWJpbGl0eSAqLworI2RlZmluZSBUVF9VQ1JfQ0pLX0NPTVBBVElCSUxJVFkgICAgICAgICAgICAgICAoMUwgPDwgMjMpIC8qIFUrMzMwMC1VKzMzRkYgKi8KKyAgLyogQml0IDU2ICAgSGFuZ3VsIFN5bGxhYmxlcyAqLworI2RlZmluZSBUVF9VQ1JfSEFOR1VMICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjQpIC8qIFUrQUMwMC1VK0Q3QTMgKi8KKyAgLyogQml0IDU3ICAgSGlnaCBTdXJyb2dhdGVzICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBIaWdoIFByaXZhdGUgVXNlIFN1cnJvZ2F0ZXMgICovCisgIC8qICAgICAgICAgIExvdyBTdXJyb2dhdGVzICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBY2NvcmRpbmcgdG8gT3BlblR5cGUgc3BlY3Mgdi4xLjMrLCAgICovCisgIC8qIHNldHRpbmcgYml0IDU3IGltcGxpZXMgdGhhdCB0aGVyZSBpcyAgKi8KKyAgLyogYXQgbGVhc3Qgb25lIGNvZGVwb2ludCBiZXlvbmQgdGhlICAgICAqLworICAvKiBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgdGhhdCBpcyAgICAgICovCisgIC8qIHN1cHBvcnRlZCBieSB0aGlzIGZvbnQuICBTbyBpdCByZWFsbHkgKi8KKyAgLyogbWVhbnMgPj0gVSsxMDAwMCAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9VQ1JfU1VSUk9HQVRFUyAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjUpIC8qIFUrRDgwMC1VK0RCN0YgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVK0RCODAtVStEQkZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVStEQzAwLVUrREZGRiAqLworI2RlZmluZSBUVF9VQ1JfTk9OX1BMQU5FXzAgIFRUX1VDUl9TVVJST0dBVEVTCisgIC8qIEJpdCA1OCAgUGhvZW5pY2lhbiAqLworI2RlZmluZSBUVF9VQ1JfUEhPRU5JQ0lBTiAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjYpIC8qVSsxMDkwMC1VKzEwOTFGKi8KKyAgLyogQml0IDU5ICAgQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBDSksgUmFkaWNhbHMgU3VwcGxlbWVudCAgICAgICAgICAgICovCisgIC8qICAgICAgICAgIEthbmd4aSBSYWRpY2FscyAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gQ2hhcmFjdGVycyAqLworICAvKiAgICAgICAgICBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBBICovCisgIC8qICAgICAgICAgIENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEIgKi8KKyAgLyogICAgICAgICAgS2FuYnVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9VQ1JfQ0pLX1VOSUZJRURfSURFT0dSQVBIUyAgICAgICAgICAoMUwgPDwgMjcpIC8qIFUrNEUwMC1VKzlGRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzJFODAtVSsyRUZGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsyRjAwLVUrMkZERiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMkZGMC1VKzJGRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzM0MDAtVSs0REI1ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVKzIwMDAwLVUrMkE2REYqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMzE5MC1VKzMxOUYgKi8KKyAgLyogQml0IDYwICAgUHJpdmF0ZSBVc2UgKi8KKyNkZWZpbmUgVFRfVUNSX1BSSVZBVEVfVVNFICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDI4KSAvKiBVK0UwMDAtVStGOEZGICovCisgIC8qIEJpdCA2MSAgIENKSyBTdHJva2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyBTdXBwbGVtZW50ICovCisjZGVmaW5lIFRUX1VDUl9DSktfQ09NUEFUSUJJTElUWV9JREVPR1JBUEhTICAgICgxTCA8PCAyOSkgLyogVSszMUMwLVUrMzFFRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrRjkwMC1VK0ZBRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlUrMkY4MDAtVSsyRkExRiovCisgIC8qIEJpdCA2MiAgIEFscGhhYmV0aWMgUHJlc2VudGF0aW9uIEZvcm1zICovCisjZGVmaW5lIFRUX1VDUl9BTFBIQUJFVElDX1BSRVNFTlRBVElPTl9GT1JNUyAgICgxTCA8PCAzMCkgLyogVStGQjAwLVUrRkI0RiAqLworICAvKiBCaXQgNjMgICBBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUEgKi8KKyNkZWZpbmUgVFRfVUNSX0FSQUJJQ19QUkVTRU5UQVRJT05TX0EgICAgICAgICAgKDFMIDw8IDMxKSAvKiBVK0ZCNTAtVStGREZGICovCisgIC8qIEJpdCA2NCAgIENvbWJpbmluZyBIYWxmIE1hcmtzICovCisjZGVmaW5lIFRUX1VDUl9DT01CSU5JTkdfSEFMRl9NQVJLUyAgICAgICAgICAgICgxTCA8PCAgMCkgLyogVStGRTIwLVUrRkUyRiAqLworICAvKiBCaXQgNjUgICBWZXJ0aWNhbCBmb3JtcyAgICAgICAgICAqLworICAvKiAgICAgICAgICBDSksgQ29tcGF0aWJpbGl0eSBGb3JtcyAqLworI2RlZmluZSBUVF9VQ1JfQ0pLX0NPTVBBVElCSUxJVFlfRk9STVMgICAgICAgICAoMUwgPDwgIDEpIC8qIFUrRkUxMC1VK0ZFMUYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVK0ZFMzAtVStGRTRGICovCisgIC8qIEJpdCA2NiAgIFNtYWxsIEZvcm0gVmFyaWFudHMgKi8KKyNkZWZpbmUgVFRfVUNSX1NNQUxMX0ZPUk1fVkFSSUFOVFMgICAgICAgICAgICAgKDFMIDw8ICAyKSAvKiBVK0ZFNTAtVStGRTZGICovCisgIC8qIEJpdCA2NyAgIEFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQiAqLworI2RlZmluZSBUVF9VQ1JfQVJBQklDX1BSRVNFTlRBVElPTlNfQiAgICAgICAgICAoMUwgPDwgIDMpIC8qIFUrRkU3MC1VK0ZFRkUgKi8KKyAgLyogQml0IDY4ICAgSGFsZndpZHRoIGFuZCBGdWxsd2lkdGggRm9ybXMgKi8KKyNkZWZpbmUgVFRfVUNSX0hBTEZXSURUSF9GVUxMV0lEVEhfRk9STVMgICAgICAgKDFMIDw8ICA0KSAvKiBVK0ZGMDAtVStGRkVGICovCisgIC8qIEJpdCA2OSAgIFNwZWNpYWxzICovCisjZGVmaW5lIFRUX1VDUl9TUEVDSUFMUyAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgNSkgLyogVStGRkYwLVUrRkZGRCAqLworICAvKiBCaXQgNzAgICBUaWJldGFuICovCisjZGVmaW5lIFRUX1VDUl9USUJFVEFOICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgNikgLyogVSswRjAwLVUrMEZGRiAqLworICAvKiBCaXQgNzEgICBTeXJpYWMgKi8KKyNkZWZpbmUgVFRfVUNSX1NZUklBQyAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICA3KSAvKiBVKzA3MDAtVSswNzRGICovCisgIC8qIEJpdCA3MiAgIFRoYWFuYSAqLworI2RlZmluZSBUVF9VQ1JfVEhBQU5BICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDgpIC8qIFUrMDc4MC1VKzA3QkYgKi8KKyAgLyogQml0IDczICAgU2luaGFsYSAqLworI2RlZmluZSBUVF9VQ1JfU0lOSEFMQSAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDkpIC8qIFUrMEQ4MC1VKzBERkYgKi8KKyAgLyogQml0IDc0ICAgTXlhbm1hciAqLworI2RlZmluZSBUVF9VQ1JfTVlBTk1BUiAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTApIC8qIFUrMTAwMC1VKzEwOUYgKi8KKyAgLyogQml0IDc1ICAgRXRoaW9waWMgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBFdGhpb3BpYyBTdXBwbGVtZW50ICovCisgIC8qICAgICAgICAgIEV0aGlvcGljIEV4dGVuZGVkICAgKi8KKyNkZWZpbmUgVFRfVUNSX0VUSElPUElDICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDExKSAvKiBVKzEyMDAtVSsxMzdGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsxMzgwLVUrMTM5RiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMkQ4MC1VKzJEREYgKi8KKyAgLyogQml0IDc2ICAgQ2hlcm9rZWUgKi8KKyNkZWZpbmUgVFRfVUNSX0NIRVJPS0VFICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDEyKSAvKiBVKzEzQTAtVSsxM0ZGICovCisgIC8qIEJpdCA3NyAgIFVuaWZpZWQgQ2FuYWRpYW4gQWJvcmlnaW5hbCBTeWxsYWJpY3MgKi8KKyNkZWZpbmUgVFRfVUNSX0NBTkFESUFOX0FCT1JJR0lOQUxfU1lMTEFCSUNTICAgKDFMIDw8IDEzKSAvKiBVKzE0MDAtVSsxNjdGICovCisgIC8qIEJpdCA3OCAgIE9naGFtICovCisjZGVmaW5lIFRUX1VDUl9PR0hBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNCkgLyogVSsxNjgwLVUrMTY5RiAqLworICAvKiBCaXQgNzkgICBSdW5pYyAqLworI2RlZmluZSBUVF9VQ1JfUlVOSUMgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTUpIC8qIFUrMTZBMC1VKzE2RkYgKi8KKyAgLyogQml0IDgwICAgS2htZXIgICAgICAgICAqLworICAvKiAgICAgICAgICBLaG1lciBTeW1ib2xzICovCisjZGVmaW5lIFRUX1VDUl9LSE1FUiAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNikgLyogVSsxNzgwLVUrMTdGRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMTlFMC1VKzE5RkYgKi8KKyAgLyogQml0IDgxICAgTW9uZ29saWFuICovCisjZGVmaW5lIFRUX1VDUl9NT05HT0xJQU4gICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNykgLyogVSsxODAwLVUrMThBRiAqLworICAvKiBCaXQgODIgICBCcmFpbGxlIFBhdHRlcm5zICovCisjZGVmaW5lIFRUX1VDUl9CUkFJTExFICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxOCkgLyogVSsyODAwLVUrMjhGRiAqLworICAvKiBCaXQgODMgICBZaSBTeWxsYWJsZXMgKi8KKyAgLyogICAgICAgICAgWWkgUmFkaWNhbHMgICovCisjZGVmaW5lIFRUX1VDUl9ZSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxOSkgLyogVStBMDAwLVUrQTQ4RiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrQTQ5MC1VK0E0Q0YgKi8KKyAgLyogQml0IDg0ICAgVGFnYWxvZyAgKi8KKyAgLyogICAgICAgICAgSGFudW5vbyAgKi8KKyAgLyogICAgICAgICAgQnVoaWQgICAgKi8KKyAgLyogICAgICAgICAgVGFnYmFud2EgKi8KKyNkZWZpbmUgVFRfVUNSX1BISUxJUFBJTkUgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDIwKSAvKiBVKzE3MDAtVSsxNzFGICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVSsxNzIwLVUrMTczRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFUrMTc0MC1VKzE3NUYgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVKzE3NjAtVSsxNzdGICovCisgIC8qIEJpdCA4NSAgIE9sZCBJdGFsaWMgKi8KKyNkZWZpbmUgVFRfVUNSX09MRF9JVEFMSUMgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDIxKSAvKlUrMTAzMDAtVSsxMDMyRiovCisgIC8qIEJpdCA4NiAgIEdvdGhpYyAqLworI2RlZmluZSBUVF9VQ1JfR09USElDICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjIpIC8qVSsxMDMzMC1VKzEwMzRGKi8KKyAgLyogQml0IDg3ICAgRGVzZXJldCAqLworI2RlZmluZSBUVF9VQ1JfREVTRVJFVCAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjMpIC8qVSsxMDQwMC1VKzEwNDRGKi8KKyAgLyogQml0IDg4ICAgQnl6YW50aW5lIE11c2ljYWwgU3ltYm9scyAgICAgICovCisgIC8qICAgICAgICAgIE11c2ljYWwgU3ltYm9scyAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBBbmNpZW50IEdyZWVrIE11c2ljYWwgTm90YXRpb24gKi8KKyNkZWZpbmUgVFRfVUNSX01VU0lDQUxfU1lNQk9MUyAgICAgICAgICAgICAgICAgKDFMIDw8IDI0KSAvKlUrMUQwMDAtVSsxRDBGRiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVKzFEMTAwLVUrMUQxRkYqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qVSsxRDIwMC1VKzFEMjRGKi8KKyAgLyogQml0IDg5ICAgTWF0aGVtYXRpY2FsIEFscGhhbnVtZXJpYyBTeW1ib2xzICovCisjZGVmaW5lIFRUX1VDUl9NQVRIX0FMUEhBTlVNRVJJQ19TWU1CT0xTICAgICAgICgxTCA8PCAyNSkgLypVKzFENDAwLVUrMUQ3RkYqLworICAvKiBCaXQgOTAgICBQcml2YXRlIFVzZSAocGxhbmUgMTUpICovCisgIC8qICAgICAgICAgIFByaXZhdGUgVXNlIChwbGFuZSAxNikgKi8KKyNkZWZpbmUgVFRfVUNSX1BSSVZBVEVfVVNFX1NVUFBMRU1FTlRBUlkgICAgICAgKDFMIDw8IDI2KSAvKlUrRjAwMDAtVStGRkZGRCovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qVSsxMDAwMDAtVSsxMEZGRkQqLworICAvKiBCaXQgOTEgICBWYXJpYXRpb24gU2VsZWN0b3JzICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgVmFyaWF0aW9uIFNlbGVjdG9ycyBTdXBwbGVtZW50ICovCisjZGVmaW5lIFRUX1VDUl9WQVJJQVRJT05fU0VMRUNUT1JTICAgICAgICAgICAgICgxTCA8PCAyNykgLyogVStGRTAwLVUrRkUwRiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qVStFMDEwMC1VK0UwMUVGKi8KKyAgLyogQml0IDkyICAgVGFncyAqLworI2RlZmluZSBUVF9VQ1JfVEFHUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjgpIC8qVStFMDAwMC1VK0UwMDdGKi8KKyAgLyogQml0IDkzICAgTGltYnUgKi8KKyNkZWZpbmUgVFRfVUNSX0xJTUJVICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDI5KSAvKiBVKzE5MDAtVSsxOTRGICovCisgIC8qIEJpdCA5NCAgIFRhaSBMZSAqLworI2RlZmluZSBUVF9VQ1JfVEFJX0xFICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMzApIC8qIFUrMTk1MC1VKzE5N0YgKi8KKyAgLyogQml0IDk1ICAgTmV3IFRhaSBMdWUgKi8KKyNkZWZpbmUgVFRfVUNSX05FV19UQUlfTFVFICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDMxKSAvKiBVKzE5ODAtVSsxOURGICovCisgIC8qIEJpdCA5NiAgIEJ1Z2luZXNlICovCisjZGVmaW5lIFRUX1VDUl9CVUdJTkVTRSAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgMCkgLyogVSsxQTAwLVUrMUExRiAqLworICAvKiBCaXQgOTcgICBHbGFnb2xpdGljICovCisjZGVmaW5lIFRUX1VDUl9HTEFHT0xJVElDICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAgMSkgLyogVSsyQzAwLVUrMkM1RiAqLworICAvKiBCaXQgOTggICBUaWZpbmFnaCAqLworI2RlZmluZSBUVF9VQ1JfVElGSU5BR0ggICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDIpIC8qIFUrMkQzMC1VKzJEN0YgKi8KKyAgLyogQml0IDk5ICAgWWlqaW5nIEhleGFncmFtIFN5bWJvbHMgKi8KKyNkZWZpbmUgVFRfVUNSX1lJSklORyAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICAzKSAvKiBVKzREQzAtVSs0REZGICovCisgIC8qIEJpdCAxMDAgIFN5bG90aSBOYWdyaSAqLworI2RlZmluZSBUVF9VQ1JfU1lMT1RJX05BR1JJICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDQpIC8qIFUrQTgwMC1VK0E4MkYgKi8KKyAgLyogQml0IDEwMSAgTGluZWFyIEIgU3lsbGFiYXJ5ICovCisgIC8qICAgICAgICAgIExpbmVhciBCIElkZW9ncmFtcyAqLworICAvKiAgICAgICAgICBBZWdlYW4gTnVtYmVycyAgICAgKi8KKyNkZWZpbmUgVFRfVUNSX0xJTkVBUl9CICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICA1KSAvKlUrMTAwMDAtVSsxMDA3RiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVKzEwMDgwLVUrMTAwRkYqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qVSsxMDEwMC1VKzEwMTNGKi8KKyAgLyogQml0IDEwMiAgQW5jaWVudCBHcmVlayBOdW1iZXJzICovCisjZGVmaW5lIFRUX1VDUl9BTkNJRU5UX0dSRUVLX05VTUJFUlMgICAgICAgICAgICgxTCA8PCAgNikgLypVKzEwMTQwLVUrMTAxOEYqLworICAvKiBCaXQgMTAzICBVZ2FyaXRpYyAqLworI2RlZmluZSBUVF9VQ1JfVUdBUklUSUMgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgIDcpIC8qVSsxMDM4MC1VKzEwMzlGKi8KKyAgLyogQml0IDEwNCAgT2xkIFBlcnNpYW4gKi8KKyNkZWZpbmUgVFRfVUNSX09MRF9QRVJTSUFOICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICA4KSAvKlUrMTAzQTAtVSsxMDNERiovCisgIC8qIEJpdCAxMDUgIFNoYXZpYW4gKi8KKyNkZWZpbmUgVFRfVUNSX1NIQVZJQU4gICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8ICA5KSAvKlUrMTA0NTAtVSsxMDQ3RiovCisgIC8qIEJpdCAxMDYgIE9zbWFueWEgKi8KKyNkZWZpbmUgVFRfVUNSX09TTUFOWUEgICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDEwKSAvKlUrMTA0ODAtVSsxMDRBRiovCisgIC8qIEJpdCAxMDcgIEN5cHJpb3QgU3lsbGFiYXJ5ICovCisjZGVmaW5lIFRUX1VDUl9DWVBSSU9UX1NZTExBQkFSWSAgICAgICAgICAgICAgICgxTCA8PCAxMSkgLypVKzEwODAwLVUrMTA4M0YqLworICAvKiBCaXQgMTA4ICBLaGFyb3NodGhpICovCisjZGVmaW5lIFRUX1VDUl9LSEFST1NIVEhJICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxMikgLypVKzEwQTAwLVUrMTBBNUYqLworICAvKiBCaXQgMTA5ICBUYWkgWHVhbiBKaW5nIFN5bWJvbHMgKi8KKyNkZWZpbmUgVFRfVUNSX1RBSV9YVUFOX0pJTkcgICAgICAgICAgICAgICAgICAgKDFMIDw8IDEzKSAvKlUrMUQzMDAtVSsxRDM1RiovCisgIC8qIEJpdCAxMTAgIEN1bmVpZm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICBDdW5laWZvcm0gTnVtYmVycyBhbmQgUHVuY3R1YXRpb24gKi8KKyNkZWZpbmUgVFRfVUNSX0NVTkVJRk9STSAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDE0KSAvKlUrMTIwMDAtVSsxMjNGRiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVKzEyNDAwLVUrMTI0N0YqLworICAvKiBCaXQgMTExICBDb3VudGluZyBSb2QgTnVtZXJhbHMgKi8KKyNkZWZpbmUgVFRfVUNSX0NPVU5USU5HX1JPRF9OVU1FUkFMUyAgICAgICAgICAgKDFMIDw8IDE1KSAvKlUrMUQzNjAtVSsxRDM3RiovCisgIC8qIEJpdCAxMTIgIFN1bmRhbmVzZSAqLworI2RlZmluZSBUVF9VQ1JfU1VOREFORVNFICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTYpIC8qIFUrMUI4MC1VKzFCQkYgKi8KKyAgLyogQml0IDExMyAgTGVwY2hhICovCisjZGVmaW5lIFRUX1VDUl9MRVBDSEEgICAgICAgICAgICAgICAgICAgICAgICAgICgxTCA8PCAxNykgLyogVSsxQzAwLVUrMUM0RiAqLworICAvKiBCaXQgMTE0ICBPbCBDaGlraSAqLworI2RlZmluZSBUVF9VQ1JfT0xfQ0hJS0kgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTgpIC8qIFUrMUM1MC1VKzFDN0YgKi8KKyAgLyogQml0IDExNSAgU2F1cmFzaHRyYSAqLworI2RlZmluZSBUVF9VQ1JfU0FVUkFTSFRSQSAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMTkpIC8qIFUrQTg4MC1VK0E4REYgKi8KKyAgLyogQml0IDExNiAgS2F5YWggTGkgKi8KKyNkZWZpbmUgVFRfVUNSX0tBWUFIX0xJICAgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDIwKSAvKiBVK0E5MDAtVStBOTJGICovCisgIC8qIEJpdCAxMTcgIFJlamFuZyAqLworI2RlZmluZSBUVF9VQ1JfUkVKQU5HICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjEpIC8qIFUrQTkzMC1VK0E5NUYgKi8KKyAgLyogQml0IDExOCAgQ2hhbSAqLworI2RlZmluZSBUVF9VQ1JfQ0hBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjIpIC8qIFUrQUEwMC1VK0FBNUYgKi8KKyAgLyogQml0IDExOSAgQW5jaWVudCBTeW1ib2xzICovCisjZGVmaW5lIFRUX1VDUl9BTkNJRU5UX1NZTUJPTFMgICAgICAgICAgICAgICAgICgxTCA8PCAyMykgLypVKzEwMTkwLVUrMTAxQ0YqLworICAvKiBCaXQgMTIwICBQaGFpc3RvcyBEaXNjICovCisjZGVmaW5lIFRUX1VDUl9QSEFJU1RPU19ESVNDICAgICAgICAgICAgICAgICAgICgxTCA8PCAyNCkgLypVKzEwMUQwLVUrMTAxRkYqLworICAvKiBCaXQgMTIxICBDYXJpYW4gKi8KKyAgLyogICAgICAgICAgTHljaWFuICovCisgIC8qICAgICAgICAgIEx5ZGlhbiAqLworI2RlZmluZSBUVF9VQ1JfT0xEX0FOQVRPTElBTiAgICAgICAgICAgICAgICAgICAoMUwgPDwgMjUpIC8qVSsxMDJBMC1VKzEwMkRGKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlUrMTAyODAtVSsxMDI5RiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVKzEwOTIwLVUrMTA5M0YqLworICAvKiBCaXQgMTIyICBEb21pbm8gVGlsZXMgICovCisgIC8qICAgICAgICAgIE1haGpvbmcgVGlsZXMgKi8KKyNkZWZpbmUgVFRfVUNSX0dBTUVfVElMRVMgICAgICAgICAgICAgICAgICAgICAgKDFMIDw8IDI2KSAvKlUrMUYwMzAtVSsxRjA5RiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypVKzFGMDAwLVUrMUYwMkYqLworICAvKiBCaXQgMTIzLTEyNyBSZXNlcnZlZCBmb3IgcHJvY2Vzcy1pbnRlcm5hbCB1c2FnZSAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTb21lIGNvbXBpbGVycyBoYXZlIGEgdmVyeSBsaW1pdGVkIGxlbmd0aCBvZiBpZGVudGlmaWVycy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWYgZGVmaW5lZCggX19UVVJCT0NfXyApICYmIF9fVFVSQk9DX18gPCAweDA0MTAgfHwgZGVmaW5lZCggX19QQUNJRklDX18gKQorI2RlZmluZSBIQVZFX0xJTUlUX09OX0lERU5UUworI2VuZGlmCisKKworI2lmbmRlZiBIQVZFX0xJTUlUX09OX0lERU5UUworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBIZXJlIHNvbWUgYWxpYXMgI2RlZmluZXMgaW4gb3JkZXIgdG8gYmUgY2xlYXJlci4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZXNlIGFyZSBub3QgYWx3YXlzICNkZWZpbmVkIHRvIHN0YXkgd2l0aGluIHRoZSAzMX5jaGFyYWN0ZXIgbGltaXQgICAqLworICAvKiB3aGljaCBzb21lIGNvbXBpbGVycyBoYXZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIENyZWRpdHMgZ28gdG8gRGF2ZSBIb28gPGRob29AZmxhc2gubmV0PiBmb3IgcG9pbnRpbmcgb3V0IHRoYXQgbW9kZXJuICAqLworICAvKiBCb3JsYW5kIGNvbXBpbGVycyAocmVhZDogZnJvbSBCQysrIDMuMSBvbikgY2FuIGluY3JlYXNlIHRoaXMgbGltaXQuICAgKi8KKyAgLyogSWYgeW91IGdldCBhIHdhcm5pbmcgd2l0aCBzdWNoIGEgY29tcGlsZXIsIHVzZSB0aGUgLWk0MCBzd2l0Y2guICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9VQ1JfQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19BICAgICAgXAorICAgICAgICAgVFRfVUNSX0FSQUJJQ19QUkVTRU5UQVRJT05TX0EKKyNkZWZpbmUgVFRfVUNSX0FSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQiAgICAgIFwKKyAgICAgICAgIFRUX1VDUl9BUkFCSUNfUFJFU0VOVEFUSU9OU19CCisKKyNkZWZpbmUgVFRfVUNSX0NPTUJJTklOR19ESUFDUklUSUNBTF9NQVJLUyAgICAgIFwKKyAgICAgICAgIFRUX1VDUl9DT01CSU5JTkdfRElBQ1JJVElDUworI2RlZmluZSBUVF9VQ1JfQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTX1NZTUIgXAorICAgICAgICAgVFRfVUNSX0NPTUJJTklOR19ESUFDUklUSUNTX1NZTUIKKworCisjZW5kaWYgLyogIUhBVkVfTElNSVRfT05fSURFTlRTICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UVE5BTUVJRF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MjA1NTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oCkBAIC0wLDAgKzEsNzc3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dHRhYmxlcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQmFzaWMgU0ZOVC9UcnVlVHlwZSB0YWJsZXMgZGVmaW5pdGlvbnMgYW5kIGludGVyZmFjZSAgICAgICAgICAgICAgICAgKi8KKy8qICAgIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDUsIDIwMDgtMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVFRUQUJMRVNfSF9fCisjZGVmaW5lIF9fVFRUQUJMRVNfSF9fCisKKworI2luY2x1ZGUgIi4uL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnJlZXR5cGUuaCIKKworI2lmZGVmIEZSRUVUWVBFX0gKKyNlcnJvciAiZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAxIGhhcyBiZWVuIGxvYWRlZCEiCisjZXJyb3IgIlBsZWFzZSBmaXggdGhlIGRpcmVjdG9yeSBzZWFyY2ggb3JkZXIgZm9yIGhlYWRlciBmaWxlcyIKKyNlcnJvciAic28gdGhhdCBmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDIgaXMgZm91bmQgZmlyc3QuIgorI2VuZGlmCisKKworRlRfQkVHSU5fSEVBREVSCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHJ1ZXR5cGVfdGFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VGl0bGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVHJ1ZVR5cGUgVGFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8QWJzdHJhY3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVHJ1ZVR5cGUgc3BlY2lmaWMgdGFibGUgdHlwZXMgYW5kIGZ1bmN0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9mIFRydWVUeXBlLXNwZWNpZmljIHRhYmxlcyAgICovCisgIC8qICAgIGFzIHdlbGwgYXMgc29tZSByb3V0aW5lcyB1c2VkIHRvIGFjY2VzcyBhbmQgcHJvY2VzcyB0aGVtLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9IZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgVHJ1ZVR5cGUgZm9udCBoZWFkZXIgdGFibGUuICBBbGwgICAgICAgKi8KKyAgLyogICAgZmllbGRzIGZvbGxvdyB0aGUgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfSGVhZGVyXworICB7CisgICAgRlRfRml4ZWQgICBUYWJsZV9WZXJzaW9uOworICAgIEZUX0ZpeGVkICAgRm9udF9SZXZpc2lvbjsKKworICAgIEZUX0xvbmcgICAgQ2hlY2tTdW1fQWRqdXN0OworICAgIEZUX0xvbmcgICAgTWFnaWNfTnVtYmVyOworCisgICAgRlRfVVNob3J0ICBGbGFnczsKKyAgICBGVF9VU2hvcnQgIFVuaXRzX1Blcl9FTTsKKworICAgIEZUX0xvbmcgICAgQ3JlYXRlZCBbMl07CisgICAgRlRfTG9uZyAgICBNb2RpZmllZFsyXTsKKworICAgIEZUX1Nob3J0ICAgeE1pbjsKKyAgICBGVF9TaG9ydCAgIHlNaW47CisgICAgRlRfU2hvcnQgICB4TWF4OworICAgIEZUX1Nob3J0ICAgeU1heDsKKworICAgIEZUX1VTaG9ydCAgTWFjX1N0eWxlOworICAgIEZUX1VTaG9ydCAgTG93ZXN0X1JlY19QUEVNOworCisgICAgRlRfU2hvcnQgICBGb250X0RpcmVjdGlvbjsKKyAgICBGVF9TaG9ydCAgIEluZGV4X1RvX0xvY19Gb3JtYXQ7CisgICAgRlRfU2hvcnQgICBHbHlwaF9EYXRhX0Zvcm1hdDsKKworICB9IFRUX0hlYWRlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0hvcmlIZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYSBUcnVlVHlwZSBob3Jpem9udGFsIGhlYWRlciwgdGhlIGBoaGVhJyAqLworICAvKiAgICB0YWJsZSwgYXMgd2VsbCBhcyB0aGUgY29ycmVzcG9uZGluZyBob3Jpem9udGFsIG1ldHJpY3MgdGFibGUsICAgICAgKi8KKyAgLyogICAgaS5lLiwgdGhlIGBobXR4JyB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVmVyc2lvbiAgICAgICAgICAgICAgICA6OiBUaGUgdGFibGUgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBc2NlbmRlciAgICAgICAgICAgICAgIDo6IFRoZSBmb250J3MgYXNjZW5kZXIsIGkuZS4sIHRoZSBkaXN0YW5jZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBiYXNlbGluZSB0byB0aGUgdG9wLW1vc3Qgb2YgYWxsICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGggcG9pbnRzIGZvdW5kIGluIHRoZSBmb250LiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZhbHVlIGlzIGludmFsaWQgaW4gbWFueSBmb250cywgYXMgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgdXN1YWxseSBzZXQgYnkgdGhlIGZvbnQgZGVzaWduZXIsICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvZnRlbiByZWZsZWN0cyBvbmx5IGEgcG9ydGlvbiBvZiB0aGUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHMgZm91bmQgaW4gdGhlIGZvbnQgKG1heWJlIEFTQ0lJKS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgdXNlIHRoZSBgc1R5cG9Bc2NlbmRlcicgZmllbGQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgT1MvMiB0YWJsZSBpbnN0ZWFkIGlmIHlvdSB3YW50ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvcnJlY3Qgb25lLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVzY2VuZGVyICAgICAgICAgICAgICA6OiBUaGUgZm9udCdzIGRlc2NlbmRlciwgaS5lLiwgdGhlIGRpc3RhbmNlICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgYmFzZWxpbmUgdG8gdGhlIGJvdHRvbS1tb3N0IG9mICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBnbHlwaCBwb2ludHMgZm91bmQgaW4gdGhlIGZvbnQuICBJdCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBuZWdhdGl2ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFsdWUgaXMgaW52YWxpZCBpbiBtYW55IGZvbnRzLCBhcyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyB1c3VhbGx5IHNldCBieSB0aGUgZm9udCBkZXNpZ25lciwgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9mdGVuIHJlZmxlY3RzIG9ubHkgYSBwb3J0aW9uIG9mIHRoZSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocyBmb3VuZCBpbiB0aGUgZm9udCAobWF5YmUgQVNDSUkpLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCB1c2UgdGhlIGBzVHlwb0Rlc2NlbmRlcicgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkIG9mIHRoZSBPUy8yIHRhYmxlIGluc3RlYWQgaWYgeW91ICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YW50IHRoZSBjb3JyZWN0IG9uZS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMaW5lX0dhcCAgICAgICAgICAgICAgIDo6IFRoZSBmb250J3MgbGluZSBnYXAsIGkuZS4sIHRoZSBkaXN0YW5jZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZGQgdG8gdGhlIGFzY2VuZGVyIGFuZCBkZXNjZW5kZXIgdG8gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IHRoZSBCVEIsIGkuZS4sIHRoZSAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lLXRvLWJhc2VsaW5lIGRpc3RhbmNlIGZvciB0aGUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZHZhbmNlX1dpZHRoX01heCAgICAgIDo6IFRoaXMgZmllbGQgaXMgdGhlIG1heGltdW0gb2YgYWxsIGFkdmFuY2UgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aHMgZm91bmQgaW4gdGhlIGZvbnQuICBJdCBjYW4gYmUgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCB0byBjb21wdXRlIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGFuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyYml0cmFyeSBzdHJpbmcgb2YgdGV4dC4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1pbl9MZWZ0X1NpZGVfQmVhcmluZyAgOjogVGhlIG1pbmltdW0gbGVmdCBzaWRlIGJlYXJpbmcgb2YgYWxsICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocyB3aXRoaW4gdGhlIGZvbnQuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1pbl9SaWdodF9TaWRlX0JlYXJpbmcgOjogVGhlIG1pbmltdW0gcmlnaHQgc2lkZSBiZWFyaW5nIG9mIGFsbCAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocyB3aXRoaW4gdGhlIGZvbnQuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHhNYXhfRXh0ZW50ICAgICAgICAgICAgOjogVGhlIG1heGltdW0gaG9yaXpvbnRhbCBleHRlbnQgKGkuZS4sIHRoZSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB3aWR0aCcgb2YgYSBnbHlwaCdzIGJvdW5kaW5nIGJveCkgZm9yICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwgZ2x5cGhzIGluIHRoZSBmb250LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYXJldF9TbG9wZV9SaXNlICAgICAgIDo6IFRoZSByaXNlIGNvZWZmaWNpZW50IG9mIHRoZSBjdXJzb3IncyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG9wZSBvZiB0aGUgY3Vyc29yIChzbG9wZT1yaXNlL3J1bikuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjYXJldF9TbG9wZV9SdW4gICAgICAgIDo6IFRoZSBydW4gY29lZmZpY2llbnQgb2YgdGhlIGN1cnNvcidzICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG9wZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXNlcnZlZCAgICAgICAgICAgICAgIDo6IDh+cmVzZXJ2ZWQgYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1ldHJpY19EYXRhX0Zvcm1hdCAgICAgOjogQWx3YXlzfjAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtYmVyX09mX0hNZXRyaWNzICAgICA6OiBOdW1iZXIgb2YgSE1ldHJpY3MgZW50cmllcyBpbiB0aGUgYGhtdHgnICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUgLS0gdGhpcyB2YWx1ZSBjYW4gYmUgc21hbGxlciB0aGFuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0b3RhbCBudW1iZXIgb2YgZ2x5cGhzIGluIHRoZSBmb250LiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvbmdfbWV0cmljcyAgICAgICAgICAgOjogQSBwb2ludGVyIGludG8gdGhlIGBobXR4JyB0YWJsZS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2hvcnRfbWV0cmljcyAgICAgICAgICA6OiBBIHBvaW50ZXIgaW50byB0aGUgYGhtdHgnIHRhYmxlLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSU1QT1JUQU5UOiBUaGUgVFRfSG9yaUhlYWRlciBhbmQgVFRfVmVydEhlYWRlciBzdHJ1Y3R1cmVzIHNob3VsZCAgICovCisgIC8qICAgICAgICAgICAgICAgYmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIG5hbWVzIG9mIHRoZWlyIGZpZWxkcyB3aGljaCAqLworICAvKiAgICAgICAgICAgICAgIGFyZSBkaWZmZXJlbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgYSBzaW5nbGUgZnVuY3Rpb24gaW4gdGhlIGB0dGxvYWQnICAgICAqLworICAvKiAgICAgICAgICAgICAgIG1vZHVsZSBpcyBhYmxlIHRvIHJlYWQgYm90aCB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgKi8KKyAgLyogICAgICAgICAgICAgICBoZWFkZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfSG9yaUhlYWRlcl8KKyAgeworICAgIEZUX0ZpeGVkICAgVmVyc2lvbjsKKyAgICBGVF9TaG9ydCAgIEFzY2VuZGVyOworICAgIEZUX1Nob3J0ICAgRGVzY2VuZGVyOworICAgIEZUX1Nob3J0ICAgTGluZV9HYXA7CisKKyAgICBGVF9VU2hvcnQgIGFkdmFuY2VfV2lkdGhfTWF4OyAgICAgIC8qIGFkdmFuY2Ugd2lkdGggbWF4aW11bSAqLworCisgICAgRlRfU2hvcnQgICBtaW5fTGVmdF9TaWRlX0JlYXJpbmc7ICAvKiBtaW5pbXVtIGxlZnQtc2IgICAgICAgKi8KKyAgICBGVF9TaG9ydCAgIG1pbl9SaWdodF9TaWRlX0JlYXJpbmc7IC8qIG1pbmltdW0gcmlnaHQtc2IgICAgICAqLworICAgIEZUX1Nob3J0ICAgeE1heF9FeHRlbnQ7ICAgICAgICAgICAgLyogeG1heCBleHRlbnRzICAgICAgICAgICovCisgICAgRlRfU2hvcnQgICBjYXJldF9TbG9wZV9SaXNlOworICAgIEZUX1Nob3J0ICAgY2FyZXRfU2xvcGVfUnVuOworICAgIEZUX1Nob3J0ICAgY2FyZXRfT2Zmc2V0OworCisgICAgRlRfU2hvcnQgICBSZXNlcnZlZFs0XTsKKworICAgIEZUX1Nob3J0ICAgbWV0cmljX0RhdGFfRm9ybWF0OworICAgIEZUX1VTaG9ydCAgbnVtYmVyX09mX0hNZXRyaWNzOworCisgICAgLyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIG5vdCBkZWZpbmVkIGJ5IHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uICovCisgICAgLyogYnV0IHRoZXkgYXJlIHVzZWQgdG8gY29ubmVjdCB0aGUgbWV0cmljcyBoZWFkZXIgdG8gdGhlIHJlbGV2YW50ICAgICovCisgICAgLyogYEhNVFgnIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICB2b2lkKiAgICAgIGxvbmdfbWV0cmljczsKKyAgICB2b2lkKiAgICAgIHNob3J0X21ldHJpY3M7CisKKyAgfSBUVF9Ib3JpSGVhZGVyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfVmVydEhlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCBhIFRydWVUeXBlIHZlcnRpY2FsIGhlYWRlciwgdGhlIGB2aGVhJyAgICovCisgIC8qICAgIHRhYmxlLCBhcyB3ZWxsIGFzIHRoZSBjb3JyZXNwb25kaW5nIHZlcnRpY2FsIG1ldHJpY3MgdGFibGUsIGkuZS4sICAqLworICAvKiAgICB0aGUgYHZtdHgnIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBWZXJzaW9uICAgICAgICAgICAgICAgICA6OiBUaGUgdGFibGUgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFzY2VuZGVyICAgICAgICAgICAgICAgIDo6IFRoZSBmb250J3MgYXNjZW5kZXIsIGkuZS4sIHRoZSBkaXN0YW5jZSAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBiYXNlbGluZSB0byB0aGUgdG9wLW1vc3Qgb2YgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsIGdseXBoIHBvaW50cyBmb3VuZCBpbiB0aGUgZm9udC4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZhbHVlIGlzIGludmFsaWQgaW4gbWFueSBmb250cywgYXMgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgdXN1YWxseSBzZXQgYnkgdGhlIGZvbnQgZGVzaWduZXIsICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvZnRlbiByZWZsZWN0cyBvbmx5IGEgcG9ydGlvbiBvZiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZ2x5cGhzIGZvdW5kIGluIHRoZSBmb250IChtYXliZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNDSUkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHVzZSB0aGUgYHNUeXBvQXNjZW5kZXInICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgb2YgdGhlIE9TLzIgdGFibGUgaW5zdGVhZCBpZiB5b3UgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdGhlIGNvcnJlY3Qgb25lLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVzY2VuZGVyICAgICAgICAgICAgICAgOjogVGhlIGZvbnQncyBkZXNjZW5kZXIsIGkuZS4sIHRoZSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlIGZyb20gdGhlIGJhc2VsaW5lIHRvIHRoZSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b20tbW9zdCBvZiBhbGwgZ2x5cGggcG9pbnRzIGZvdW5kICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGZvbnQuICBJdCBpcyBuZWdhdGl2ZS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZhbHVlIGlzIGludmFsaWQgaW4gbWFueSBmb250cywgYXMgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgdXN1YWxseSBzZXQgYnkgdGhlIGZvbnQgZGVzaWduZXIsICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvZnRlbiByZWZsZWN0cyBvbmx5IGEgcG9ydGlvbiBvZiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZ2x5cGhzIGZvdW5kIGluIHRoZSBmb250IChtYXliZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNDSUkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHVzZSB0aGUgYHNUeXBvRGVzY2VuZGVyJyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgb2YgdGhlIE9TLzIgdGFibGUgaW5zdGVhZCBpZiB5b3UgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdGhlIGNvcnJlY3Qgb25lLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTGluZV9HYXAgICAgICAgICAgICAgICAgOjogVGhlIGZvbnQncyBsaW5lIGdhcCwgaS5lLiwgdGhlIGRpc3RhbmNlICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFkZCB0byB0aGUgYXNjZW5kZXIgYW5kIGRlc2NlbmRlciB0byAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgdGhlIEJUQiwgaS5lLiwgdGhlICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUtdG8tYmFzZWxpbmUgZGlzdGFuY2UgZm9yIHRoZSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWR2YW5jZV9IZWlnaHRfTWF4ICAgICAgOjogVGhpcyBmaWVsZCBpcyB0aGUgbWF4aW11bSBvZiBhbGwgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2UgaGVpZ2h0cyBmb3VuZCBpbiB0aGUgZm9udC4gIEl0ICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCB0byBjb21wdXRlIHRoZSBtYXhpbXVtICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0IG9mIGFuIGFyYml0cmFyeSBzdHJpbmcgb2YgdGV4dC4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtaW5fVG9wX1NpZGVfQmVhcmluZyAgICA6OiBUaGUgbWluaW11bSB0b3Agc2lkZSBiZWFyaW5nIG9mIGFsbCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzIHdpdGhpbiB0aGUgZm9udC4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtaW5fQm90dG9tX1NpZGVfQmVhcmluZyA6OiBUaGUgbWluaW11bSBib3R0b20gc2lkZSBiZWFyaW5nIG9mIGFsbCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzIHdpdGhpbiB0aGUgZm9udC4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5TWF4X0V4dGVudCAgICAgICAgICAgICA6OiBUaGUgbWF4aW11bSB2ZXJ0aWNhbCBleHRlbnQgKGkuZS4sIHRoZSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGhlaWdodCcgb2YgYSBnbHlwaCdzIGJvdW5kaW5nIGJveCkgZm9yICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBnbHlwaHMgaW4gdGhlIGZvbnQuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FyZXRfU2xvcGVfUmlzZSAgICAgICAgOjogVGhlIHJpc2UgY29lZmZpY2llbnQgb2YgdGhlIGN1cnNvcidzICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3BlIG9mIHRoZSBjdXJzb3IgKHNsb3BlPXJpc2UvcnVuKS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FyZXRfU2xvcGVfUnVuICAgICAgICAgOjogVGhlIHJ1biBjb2VmZmljaWVudCBvZiB0aGUgY3Vyc29yJ3MgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3BlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2FyZXRfT2Zmc2V0ICAgICAgICAgICAgOjogVGhlIGN1cnNvcidzIG9mZnNldCBmb3Igc2xhbnRlZCBmb250cy4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFsdWUgaXMgYHJlc2VydmVkJyBpbiB2bXR4ICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJlc2VydmVkICAgICAgICAgICAgICAgIDo6IDh+cmVzZXJ2ZWQgYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWV0cmljX0RhdGFfRm9ybWF0ICAgICAgOjogQWx3YXlzfjAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1iZXJfT2ZfSE1ldHJpY3MgICAgICA6OiBOdW1iZXIgb2YgVk1ldHJpY3MgZW50cmllcyBpbiB0aGUgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHZtdHgnIHRhYmxlIC0tIHRoaXMgdmFsdWUgY2FuIGJlICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGdseXBocyAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvbmdfbWV0cmljcyAgICAgICAgICAgOjogQSBwb2ludGVyIGludG8gdGhlIGB2bXR4JyB0YWJsZS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2hvcnRfbWV0cmljcyAgICAgICAgICA6OiBBIHBvaW50ZXIgaW50byB0aGUgYHZtdHgnIHRhYmxlLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSU1QT1JUQU5UOiBUaGUgVFRfSG9yaUhlYWRlciBhbmQgVFRfVmVydEhlYWRlciBzdHJ1Y3R1cmVzIHNob3VsZCAgICovCisgIC8qICAgICAgICAgICAgICAgYmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIG5hbWVzIG9mIHRoZWlyIGZpZWxkcyB3aGljaCAqLworICAvKiAgICAgICAgICAgICAgIGFyZSBkaWZmZXJlbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgYSBzaW5nbGUgZnVuY3Rpb24gaW4gdGhlIGB0dGxvYWQnICAgICAqLworICAvKiAgICAgICAgICAgICAgIG1vZHVsZSBpcyBhYmxlIHRvIHJlYWQgYm90aCB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgKi8KKyAgLyogICAgICAgICAgICAgICBoZWFkZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfVmVydEhlYWRlcl8KKyAgeworICAgIEZUX0ZpeGVkICAgVmVyc2lvbjsKKyAgICBGVF9TaG9ydCAgIEFzY2VuZGVyOworICAgIEZUX1Nob3J0ICAgRGVzY2VuZGVyOworICAgIEZUX1Nob3J0ICAgTGluZV9HYXA7CisKKyAgICBGVF9VU2hvcnQgIGFkdmFuY2VfSGVpZ2h0X01heDsgICAgICAvKiBhZHZhbmNlIGhlaWdodCBtYXhpbXVtICovCisKKyAgICBGVF9TaG9ydCAgIG1pbl9Ub3BfU2lkZV9CZWFyaW5nOyAgICAvKiBtaW5pbXVtIGxlZnQtc2Igb3IgdG9wLXNiICAgICAgICovCisgICAgRlRfU2hvcnQgICBtaW5fQm90dG9tX1NpZGVfQmVhcmluZzsgLyogbWluaW11bSByaWdodC1zYiBvciBib3R0b20tc2IgICAqLworICAgIEZUX1Nob3J0ICAgeU1heF9FeHRlbnQ7ICAgICAgICAgICAgIC8qIHhtYXggb3IgeW1heCBleHRlbnRzICAgICAgICAgICAgKi8KKyAgICBGVF9TaG9ydCAgIGNhcmV0X1Nsb3BlX1Jpc2U7CisgICAgRlRfU2hvcnQgICBjYXJldF9TbG9wZV9SdW47CisgICAgRlRfU2hvcnQgICBjYXJldF9PZmZzZXQ7CisKKyAgICBGVF9TaG9ydCAgIFJlc2VydmVkWzRdOworCisgICAgRlRfU2hvcnQgICBtZXRyaWNfRGF0YV9Gb3JtYXQ7CisgICAgRlRfVVNob3J0ICBudW1iZXJfT2ZfVk1ldHJpY3M7CisKKyAgICAvKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgbm90IGRlZmluZWQgYnkgdGhlIFRydWVUeXBlIHNwZWNpZmljYXRpb24gKi8KKyAgICAvKiBidXQgdGhleSdyZSB1c2VkIHRvIGNvbm5lY3QgdGhlIG1ldHJpY3MgaGVhZGVyIHRvIHRoZSByZWxldmFudCAgICAgKi8KKyAgICAvKiBgSE1UWCcgb3IgYFZNVFgnIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIHZvaWQqICAgICAgbG9uZ19tZXRyaWNzOworICAgIHZvaWQqICAgICAgc2hvcnRfbWV0cmljczsKKworICB9IFRUX1ZlcnRIZWFkZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9PUzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgVHJ1ZVR5cGUgT1MvMiB0YWJsZS4gVGhpcyBpcyB0aGUgbG9uZyAgKi8KKyAgLyogICAgdGFibGUgdmVyc2lvbi4gIEFsbCBmaWVsZHMgY29tcGx5IHRvIHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb3RlIHRoYXQgd2Ugbm93IHN1cHBvcnQgb2xkIE1hYyBmb250cyB3aGljaCBkbyBub3QgaW5jbHVkZSBhbiAgICAgKi8KKyAgLyogICAgT1MvMiB0YWJsZS4gIEluIHRoaXMgY2FzZSwgdGhlIGB2ZXJzaW9uJyBmaWVsZCBpcyBhbHdheXMgc2V0IHRvICAgICovCisgIC8qICAgIDB4RkZGRi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX09TMl8KKyAgeworICAgIEZUX1VTaG9ydCAgdmVyc2lvbjsgICAgICAgICAgICAgICAgLyogMHgwMDAxIC0gbW9yZSBvciAweEZGRkYgKi8KKyAgICBGVF9TaG9ydCAgIHhBdmdDaGFyV2lkdGg7CisgICAgRlRfVVNob3J0ICB1c1dlaWdodENsYXNzOworICAgIEZUX1VTaG9ydCAgdXNXaWR0aENsYXNzOworICAgIEZUX1Nob3J0ICAgZnNUeXBlOworICAgIEZUX1Nob3J0ICAgeVN1YnNjcmlwdFhTaXplOworICAgIEZUX1Nob3J0ICAgeVN1YnNjcmlwdFlTaXplOworICAgIEZUX1Nob3J0ICAgeVN1YnNjcmlwdFhPZmZzZXQ7CisgICAgRlRfU2hvcnQgICB5U3Vic2NyaXB0WU9mZnNldDsKKyAgICBGVF9TaG9ydCAgIHlTdXBlcnNjcmlwdFhTaXplOworICAgIEZUX1Nob3J0ICAgeVN1cGVyc2NyaXB0WVNpemU7CisgICAgRlRfU2hvcnQgICB5U3VwZXJzY3JpcHRYT2Zmc2V0OworICAgIEZUX1Nob3J0ICAgeVN1cGVyc2NyaXB0WU9mZnNldDsKKyAgICBGVF9TaG9ydCAgIHlTdHJpa2VvdXRTaXplOworICAgIEZUX1Nob3J0ICAgeVN0cmlrZW91dFBvc2l0aW9uOworICAgIEZUX1Nob3J0ICAgc0ZhbWlseUNsYXNzOworCisgICAgRlRfQnl0ZSAgICBwYW5vc2VbMTBdOworCisgICAgRlRfVUxvbmcgICB1bFVuaWNvZGVSYW5nZTE7ICAgICAgICAvKiBCaXRzIDAtMzEgICAqLworICAgIEZUX1VMb25nICAgdWxVbmljb2RlUmFuZ2UyOyAgICAgICAgLyogQml0cyAzMi02MyAgKi8KKyAgICBGVF9VTG9uZyAgIHVsVW5pY29kZVJhbmdlMzsgICAgICAgIC8qIEJpdHMgNjQtOTUgICovCisgICAgRlRfVUxvbmcgICB1bFVuaWNvZGVSYW5nZTQ7ICAgICAgICAvKiBCaXRzIDk2LTEyNyAqLworCisgICAgRlRfQ2hhciAgICBhY2hWZW5kSURbNF07CisKKyAgICBGVF9VU2hvcnQgIGZzU2VsZWN0aW9uOworICAgIEZUX1VTaG9ydCAgdXNGaXJzdENoYXJJbmRleDsKKyAgICBGVF9VU2hvcnQgIHVzTGFzdENoYXJJbmRleDsKKyAgICBGVF9TaG9ydCAgIHNUeXBvQXNjZW5kZXI7CisgICAgRlRfU2hvcnQgICBzVHlwb0Rlc2NlbmRlcjsKKyAgICBGVF9TaG9ydCAgIHNUeXBvTGluZUdhcDsKKyAgICBGVF9VU2hvcnQgIHVzV2luQXNjZW50OworICAgIEZUX1VTaG9ydCAgdXNXaW5EZXNjZW50OworCisgICAgLyogb25seSB2ZXJzaW9uIDEgdGFibGVzOiAqLworCisgICAgRlRfVUxvbmcgICB1bENvZGVQYWdlUmFuZ2UxOyAgICAgICAvKiBCaXRzIDAtMzEgICAqLworICAgIEZUX1VMb25nICAgdWxDb2RlUGFnZVJhbmdlMjsgICAgICAgLyogQml0cyAzMi02MyAgKi8KKworICAgIC8qIG9ubHkgdmVyc2lvbiAyIHRhYmxlczogKi8KKworICAgIEZUX1Nob3J0ICAgc3hIZWlnaHQ7CisgICAgRlRfU2hvcnQgICBzQ2FwSGVpZ2h0OworICAgIEZUX1VTaG9ydCAgdXNEZWZhdWx0Q2hhcjsKKyAgICBGVF9VU2hvcnQgIHVzQnJlYWtDaGFyOworICAgIEZUX1VTaG9ydCAgdXNNYXhDb250ZXh0OworCisgIH0gVFRfT1MyOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfUG9zdHNjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBzdHJ1Y3R1cmUgdXNlZCB0byBtb2RlbCBhIFRydWVUeXBlIFBvc3RTY3JpcHQgdGFibGUuICBBbGwgZmllbGRzICovCisgIC8qICAgIGNvbXBseSB0byB0aGUgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbi4gIFRoaXMgc3RydWN0dXJlIGRvZXMgbm90ICAgICAqLworICAvKiAgICByZWZlcmVuY2UgdGhlIFBvc3RTY3JpcHQgZ2x5cGggbmFtZXMsIHdoaWNoIGNhbiBiZSBuZXZlcnRoZWxlc3MgICAgKi8KKyAgLyogICAgYWNjZXNzZWQgd2l0aCB0aGUgYHR0cG9zdCcgbW9kdWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfUG9zdHNjcmlwdF8KKyAgeworICAgIEZUX0ZpeGVkICBGb3JtYXRUeXBlOworICAgIEZUX0ZpeGVkICBpdGFsaWNBbmdsZTsKKyAgICBGVF9TaG9ydCAgdW5kZXJsaW5lUG9zaXRpb247CisgICAgRlRfU2hvcnQgIHVuZGVybGluZVRoaWNrbmVzczsKKyAgICBGVF9VTG9uZyAgaXNGaXhlZFBpdGNoOworICAgIEZUX1VMb25nICBtaW5NZW1UeXBlNDI7CisgICAgRlRfVUxvbmcgIG1heE1lbVR5cGU0MjsKKyAgICBGVF9VTG9uZyAgbWluTWVtVHlwZTE7CisgICAgRlRfVUxvbmcgIG1heE1lbVR5cGUxOworCisgICAgLyogR2x5cGggbmFtZXMgZm9sbG93IGluIHRoZSBmaWxlLCBidXQgd2UgZG9uJ3QgICAqLworICAgIC8qIGxvYWQgdGhlbSBieSBkZWZhdWx0LiAgU2VlIHRoZSB0dHBvc3QuYyBmaWxlLiAgKi8KKworICB9IFRUX1Bvc3RzY3JpcHQ7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9QQ0xUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIHN0cnVjdHVyZSB1c2VkIHRvIG1vZGVsIGEgVHJ1ZVR5cGUgUENMVCB0YWJsZS4gIEFsbCBmaWVsZHMgICAgICAgKi8KKyAgLyogICAgY29tcGx5IHRvIHRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfUENMVF8KKyAgeworICAgIEZUX0ZpeGVkICAgVmVyc2lvbjsKKyAgICBGVF9VTG9uZyAgIEZvbnROdW1iZXI7CisgICAgRlRfVVNob3J0ICBQaXRjaDsKKyAgICBGVF9VU2hvcnQgIHhIZWlnaHQ7CisgICAgRlRfVVNob3J0ICBTdHlsZTsKKyAgICBGVF9VU2hvcnQgIFR5cGVGYW1pbHk7CisgICAgRlRfVVNob3J0ICBDYXBIZWlnaHQ7CisgICAgRlRfVVNob3J0ICBTeW1ib2xTZXQ7CisgICAgRlRfQ2hhciAgICBUeXBlRmFjZVsxNl07CisgICAgRlRfQ2hhciAgICBDaGFyYWN0ZXJDb21wbGVtZW50WzhdOworICAgIEZUX0NoYXIgICAgRmlsZU5hbWVbNl07CisgICAgRlRfQ2hhciAgICBTdHJva2VXZWlnaHQ7CisgICAgRlRfQ2hhciAgICBXaWR0aFR5cGU7CisgICAgRlRfQnl0ZSAgICBTZXJpZlN0eWxlOworICAgIEZUX0J5dGUgICAgUmVzZXJ2ZWQ7CisKKyAgfSBUVF9QQ0xUOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfTWF4UHJvZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG1heGltdW0gcHJvZmlsZSBpcyBhIHRhYmxlIGNvbnRhaW5pbmcgbWFueSBtYXggdmFsdWVzIHdoaWNoICAgICovCisgIC8qICAgIGNhbiBiZSB1c2VkIHRvIHByZS1hbGxvY2F0ZSBhcnJheXMuICBUaGlzIGVuc3VyZXMgdGhhdCBubyBtZW1vcnkgICAqLworICAvKiAgICBhbGxvY2F0aW9uIG9jY3VycyBkdXJpbmcgYSBnbHlwaCBsb2FkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGaWVsZHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJzaW9uICAgICAgICAgICAgICAgOjogVGhlIHZlcnNpb24gbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bUdseXBocyAgICAgICAgICAgICA6OiBUaGUgbnVtYmVyIG9mIGdseXBocyBpbiB0aGlzIFRydWVUeXBlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heFBvaW50cyAgICAgICAgICAgICA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcG9pbnRzIGluIGEgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uLWNvbXBvc2l0ZSBUcnVlVHlwZSBnbHlwaC4gIFNlZSBhbHNvICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdHJ1Y3R1cmUgZWxlbWVudCAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgbWF4Q29tcG9zaXRlUG9pbnRzJy4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4Q29udG91cnMgICAgICAgICAgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb250b3VycyBpbiBhICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub24tY29tcG9zaXRlIFRydWVUeXBlIGdseXBoLiAgU2VlIGFsc28gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cnVjdHVyZSBlbGVtZW50ICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBtYXhDb21wb3NpdGVDb250b3VycycuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhDb21wb3NpdGVQb2ludHMgICAgOjogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBvaW50cyBpbiBhICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0ZSBUcnVlVHlwZSBnbHlwaC4gIFNlZSBhbHNvIHRoZSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgZWxlbWVudCBgbWF4UG9pbnRzJy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4Q29tcG9zaXRlQ29udG91cnMgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb250b3VycyBpbiBhICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGUgVHJ1ZVR5cGUgZ2x5cGguICBTZWUgYWxzbyB0aGUgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlIGVsZW1lbnQgYG1heENvbnRvdXJzJy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heFpvbmVzICAgICAgICAgICAgICA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygem9uZXMgdXNlZCBmb3IgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGggaGludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heFR3aWxpZ2h0UG9pbnRzICAgICA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHdpbGlnaHQgem9uZSB1c2VkIGZvciBnbHlwaCBoaW50aW5nLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heFN0b3JhZ2UgICAgICAgICAgICA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSBhcmVhIHVzZWQgZm9yIGdseXBoIGhpbnRpbmcuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heEZ1bmN0aW9uRGVmcyAgICAgICA6OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZnVuY3Rpb24gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbnMgaW4gdGhlIFRydWVUeXBlIGJ5dGVjb2RlIGZvciAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhJbnN0cnVjdGlvbkRlZnMgICAgOjogVGhlIG1heGltdW0gbnVtYmVyIG9mIGluc3RydWN0aW9uICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25zIGluIHRoZSBUcnVlVHlwZSBieXRlY29kZSBmb3IgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGZvbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4U3RhY2tFbGVtZW50cyAgICAgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBlbGVtZW50cyB1c2VkICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgYnl0ZWNvZGUgaW50ZXJwcmV0YXRpb24uICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBUcnVlVHlwZSBvcGNvZGVzICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGZvciBnbHlwaCBoaW50aW5nLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4Q29tcG9uZW50RWxlbWVudHMgIDo6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzaW1wbGUgKGkuZS4sIG5vbi0gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGUpIGdseXBocyBpbiBhIGNvbXBvc2l0ZSBnbHlwaC4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4Q29tcG9uZW50RGVwdGggICAgIDo6IFRoZSBtYXhpbXVtIG5lc3RpbmcgZGVwdGggb2YgY29tcG9zaXRlICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgc3RydWN0dXJlIGlzIG9ubHkgdXNlZCBkdXJpbmcgZm9udCBsb2FkaW5nLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX01heFByb2ZpbGVfCisgIHsKKyAgICBGVF9GaXhlZCAgIHZlcnNpb247CisgICAgRlRfVVNob3J0ICBudW1HbHlwaHM7CisgICAgRlRfVVNob3J0ICBtYXhQb2ludHM7CisgICAgRlRfVVNob3J0ICBtYXhDb250b3VyczsKKyAgICBGVF9VU2hvcnQgIG1heENvbXBvc2l0ZVBvaW50czsKKyAgICBGVF9VU2hvcnQgIG1heENvbXBvc2l0ZUNvbnRvdXJzOworICAgIEZUX1VTaG9ydCAgbWF4Wm9uZXM7CisgICAgRlRfVVNob3J0ICBtYXhUd2lsaWdodFBvaW50czsKKyAgICBGVF9VU2hvcnQgIG1heFN0b3JhZ2U7CisgICAgRlRfVVNob3J0ICBtYXhGdW5jdGlvbkRlZnM7CisgICAgRlRfVVNob3J0ICBtYXhJbnN0cnVjdGlvbkRlZnM7CisgICAgRlRfVVNob3J0ICBtYXhTdGFja0VsZW1lbnRzOworICAgIEZUX1VTaG9ydCAgbWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zOworICAgIEZUX1VTaG9ydCAgbWF4Q29tcG9uZW50RWxlbWVudHM7CisgICAgRlRfVVNob3J0ICBtYXhDb21wb25lbnREZXB0aDsKKworICB9IFRUX01heFByb2ZpbGU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxFbnVtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9TZm50X1RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBlbnVtZXJhdGlvbiB1c2VkIHRvIHNwZWNpZnkgdGhlIGluZGV4IG9mIGFuIFNGTlQgdGFibGUuICAgICAgICAgKi8KKyAgLyogICAgVXNlZCBpbiB0aGUgQEZUX0dldF9TZm50X1RhYmxlIEFQSSBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIGVudW0gIEZUX1NmbnRfVGFnXworICB7CisgICAgZnRfc2ZudF9oZWFkID0gMCwgICAgLyogVFRfSGVhZGVyICAgICAqLworICAgIGZ0X3NmbnRfbWF4cCA9IDEsICAgIC8qIFRUX01heFByb2ZpbGUgKi8KKyAgICBmdF9zZm50X29zMiAgPSAyLCAgICAvKiBUVF9PUzIgICAgICAgICovCisgICAgZnRfc2ZudF9oaGVhID0gMywgICAgLyogVFRfSG9yaUhlYWRlciAqLworICAgIGZ0X3NmbnRfdmhlYSA9IDQsICAgIC8qIFRUX1ZlcnRIZWFkZXIgKi8KKyAgICBmdF9zZm50X3Bvc3QgPSA1LCAgICAvKiBUVF9Qb3N0c2NyaXB0ICovCisgICAgZnRfc2ZudF9wY2x0ID0gNiwgICAgLyogVFRfUENMVCAgICAgICAqLworCisgICAgc2ZudF9tYXggICAvKiBpbnRlcm5hbCBlbmQgbWFyayAqLworCisgIH0gRlRfU2ZudF9UYWc7CisKKyAgLyogKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX0dldF9TZm50X1RhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBnaXZlbiBTRk5UIHRhYmxlIHdpdGhpbiBhIGZhY2UuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFnICA6OiBUaGUgaW5kZXggb2YgdGhlIFNGTlQgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSB0eXBlLWxlc3MgcG9pbnRlciB0byB0aGUgdGFibGUuICBUaGlzIHdpbGwgYmV+MCBpbiBjYXNlIG9mICAgICAgICovCisgIC8qICAgIGVycm9yLCBvciBpZiB0aGUgY29ycmVzcG9uZGluZyB0YWJsZSB3YXMgbm90IGZvdW5kICpPUiogbG9hZGVkICAgICAqLworICAvKiAgICBmcm9tIHRoZSBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVzZSBhIHR5cGVjYXN0IGFjY29yZGluZyB0byBgdGFnJyB0byBhY2Nlc3MgdGhlIHN0cnVjdHVyZSAgICAgICAgICAqLworICAvKiAgICBlbGVtZW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgdGFibGUgaXMgb3duZWQgYnkgdGhlIGZhY2Ugb2JqZWN0IGFuZCBkaXNhcHBlYXJzIHdpdGggaXQuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VmdWwgdG8gYWNjZXNzIFNGTlQgdGFibGVzIHRoYXQgYXJlIGxvYWRlZCAqLworICAvKiAgICBieSB0aGUgc2ZudCwgdHJ1ZXR5cGUsIGFuZCBvcGVudHlwZSBkcml2ZXJzLiAgU2VlIEBGVF9TZm50X1RhZyBmb3IgKi8KKyAgLyogICAgYSBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBIZXJlIGFuIGV4YW1wbGUgaG93IHRvIGFjY2VzcyB0aGUgYHZoZWEnIHRhYmxlOiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIFRUX1ZlcnRIZWFkZXIqICB2ZXJ0X2hlYWRlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgIHZlcnRfaGVhZGVyID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgIChUVF9WZXJ0SGVhZGVyKilGVF9HZXRfU2ZudF9UYWJsZSggZmFjZSwgZnRfc2ZudF92aGVhICk7ICAgICAgICovCisgIC8qICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCB2b2lkKiApCisgIEZUX0dldF9TZm50X1RhYmxlKCBGVF9GYWNlICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1NmbnRfVGFnICB0YWcgKTsKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAZnVuY3Rpb246CisgICogICBGVF9Mb2FkX1NmbnRfVGFibGUKKyAgKgorICAqIEBkZXNjcmlwdGlvbjoKKyAgKiAgIExvYWQgYW55IGZvbnQgdGFibGUgaW50byBjbGllbnQgbWVtb3J5LgorICAqCisgICogQGlucHV0OgorICAqICAgZmFjZSA6OgorICAqICAgICBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2UuCisgICoKKyAgKiAgIHRhZyA6OgorICAqICAgICBUaGUgZm91ci1ieXRlIHRhZyBvZiB0aGUgdGFibGUgdG8gbG9hZC4gIFVzZSB0aGUgdmFsdWV+MCBpZiB5b3Ugd2FudAorICAqICAgICB0byBhY2Nlc3MgdGhlIHdob2xlIGZvbnQgZmlsZS4gIE90aGVyd2lzZSwgeW91IGNhbiB1c2Ugb25lIG9mIHRoZQorICAqICAgICBkZWZpbml0aW9ucyBmb3VuZCBpbiB0aGUgQEZUX1RSVUVUWVBFX1RBR1NfSCBmaWxlLCBvciBmb3JnZSBhIG5ldworICAqICAgICBvbmUgd2l0aCBARlRfTUFLRV9UQUcuCisgICoKKyAgKiAgIG9mZnNldCA6OgorICAqICAgICBUaGUgc3RhcnRpbmcgb2Zmc2V0IGluIHRoZSB0YWJsZSAob3IgZmlsZSBpZiB0YWcgPT0gMCkuCisgICoKKyAgKiBAb3V0cHV0OgorICAqICAgYnVmZmVyIDo6CisgICogICAgIFRoZSB0YXJnZXQgYnVmZmVyIGFkZHJlc3MuICBUaGUgY2xpZW50IG11c3QgZW5zdXJlIHRoYXQgdGhlIG1lbW9yeQorICAqICAgICBhcnJheSBpcyBiaWcgZW5vdWdoIHRvIGhvbGQgdGhlIGRhdGEuCisgICoKKyAgKiBAaW5vdXQ6CisgICogICBsZW5ndGggOjoKKyAgKiAgICAgSWYgdGhlIGBsZW5ndGgnIHBhcmFtZXRlciBpcyBOVUxMLCB0aGVuIHRyeSB0byBsb2FkIHRoZSB3aG9sZSB0YWJsZS4KKyAgKiAgICAgUmV0dXJuIGFuIGVycm9yIGNvZGUgaWYgaXQgZmFpbHMuCisgICoKKyAgKiAgICAgRWxzZSwgaWYgYCpsZW5ndGgnIGlzfjAsIGV4aXQgaW1tZWRpYXRlbHkgd2hpbGUgcmV0dXJuaW5nIHRoZQorICAqICAgICB0YWJsZSdzIChvciBmaWxlKSBmdWxsIHNpemUgaW4gaXQuCisgICoKKyAgKiAgICAgRWxzZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgZnJvbSB0aGUgdGFibGUgb3IgZmlsZSwgZnJvbSB0aGUKKyAgKiAgICAgc3RhcnRpbmcgb2Zmc2V0LgorICAqCisgICogQHJldHVybjoKKyAgKiAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwfm1lYW5zIHN1Y2Nlc3MuCisgICoKKyAgKiBAbm90ZToKKyAgKiAgIElmIHlvdSBuZWVkIHRvIGRldGVybWluZSB0aGUgdGFibGUncyBsZW5ndGggeW91IHNob3VsZCBmaXJzdCBjYWxsIHRoaXMKKyAgKiAgIGZ1bmN0aW9uIHdpdGggYCpsZW5ndGgnIHNldCB0b34wLCBhcyBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisgICoKKyAgKiAgICAgeworICAqICAgICAgIEZUX1VMb25nICBsZW5ndGggPSAwOworICAqCisgICoKKyAgKiAgICAgICBlcnJvciA9IEZUX0xvYWRfU2ZudF9UYWJsZSggZmFjZSwgdGFnLCAwLCBOVUxMLCAmbGVuZ3RoICk7CisgICogICAgICAgaWYgKCBlcnJvciApIHsgLi4uIHRhYmxlIGRvZXMgbm90IGV4aXN0IC4uLiB9CisgICoKKyAgKiAgICAgICBidWZmZXIgPSBtYWxsb2MoIGxlbmd0aCApOworICAqICAgICAgIGlmICggYnVmZmVyID09IE5VTEwgKSB7IC4uLiBub3QgZW5vdWdoIG1lbW9yeSAuLi4gfQorICAqCisgICogICAgICAgZXJyb3IgPSBGVF9Mb2FkX1NmbnRfVGFibGUoIGZhY2UsIHRhZywgMCwgYnVmZmVyLCAmbGVuZ3RoICk7CisgICogICAgICAgaWYgKCBlcnJvciApIHsgLi4uIGNvdWxkIG5vdCBsb2FkIHRhYmxlIC4uLiB9CisgICogICAgIH0KKyAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIEZUX0xvYWRfU2ZudF9UYWJsZSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgdGFnLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgbGVuZ3RoICk7CisKKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqCisgICogQGZ1bmN0aW9uOgorICAqICAgRlRfU2ZudF9UYWJsZV9JbmZvCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICBSZXR1cm4gaW5mb3JtYXRpb24gb24gYW4gU0ZOVCB0YWJsZS4KKyAgKgorICAqIEBpbnB1dDoKKyAgKiAgIGZhY2UgOjoKKyAgKiAgICAgQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlLgorICAqCisgICogICB0YWJsZV9pbmRleCA6OgorICAqICAgICBUaGUgaW5kZXggb2YgYW4gU0ZOVCB0YWJsZS4gIFRoZSBmdW5jdGlvbiByZXR1cm5zCisgICogICAgIEZUX0Vycl9UYWJsZV9NaXNzaW5nIGZvciBhbiBpbnZhbGlkIHZhbHVlLgorICAqCisgICogQGlub3V0OgorICAqICAgdGFnIDo6CisgICogICAgIFRoZSBuYW1lIHRhZyBvZiB0aGUgU0ZOVCB0YWJsZS4gIElmIHRoZSB2YWx1ZSBpcyBOVUxMLCBgdGFibGVfaW5kZXgnCisgICogICAgIGlzIGlnbm9yZWQsIGFuZCBgbGVuZ3RoJyByZXR1cm5zIHRoZSBudW1iZXIgb2YgU0ZOVCB0YWJsZXMgaW4gdGhlCisgICogICAgIGZvbnQuCisgICoKKyAgKiBAb3V0cHV0OgorICAqICAgbGVuZ3RoIDo6CisgICogICAgIFRoZSBsZW5ndGggb2YgdGhlIFNGTlQgdGFibGUgKG9yIHRoZSBudW1iZXIgb2YgU0ZOVCB0YWJsZXMsIGRlcGVuZGluZworICAqICAgICBvbiBgdGFnJykuCisgICoKKyAgKiBAcmV0dXJuOgorICAqICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDB+bWVhbnMgc3VjY2Vzcy4KKyAgKgorICAqIEBub3RlOgorICAqICAgV2hpbGUgcGFyc2luZyBmb250cywgRnJlZVR5cGUgaGFuZGxlcyBTRk5UIHRhYmxlcyB3aXRoIGxlbmd0aCB6ZXJvIGFzCisgICogICBtaXNzaW5nLgorICAqCisgICovCisgIEZUX0VYUE9SVCggRlRfRXJyb3IgKQorICBGVF9TZm50X1RhYmxlX0luZm8oIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIHRhYmxlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAqdGFnLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAqbGVuZ3RoICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9HZXRfQ01hcF9MYW5ndWFnZV9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm4gVHJ1ZVR5cGUvc2ZudCBzcGVjaWZpYyBjbWFwIGxhbmd1YWdlIElELiAgRGVmaW5pdGlvbnMgb2YgICAgKi8KKyAgLyogICAgbGFuZ3VhZ2UgSUQgdmFsdWVzIGFyZSBpbiBgZnJlZXR5cGUvdHRuYW1laWQuaCcuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2hhcm1hcCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIHRhcmdldCBjaGFybWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBsYW5ndWFnZSBJRCBvZiBgY2hhcm1hcCcuICBJZiBgY2hhcm1hcCcgZG9lc24ndCBiZWxvbmcgdG8gYSAgICAqLworICAvKiAgICBUcnVlVHlwZS9zZm50IGZhY2UsIGp1c3QgcmV0dXJufjAgYXMgdGhlIGRlZmF1bHQgdmFsdWUuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZvciBhIGZvcm1hdH4xNCBjbWFwICh0byBhY2Nlc3MgVW5pY29kZSBJVlMpLCB0aGUgcmV0dXJuIHZhbHVlIGlzICAqLworICAvKiAgICAweEZGRkZGRkZGLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfVUxvbmcgKQorICBGVF9HZXRfQ01hcF9MYW5ndWFnZV9JRCggRlRfQ2hhck1hcCAgY2hhcm1hcCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfR2V0X0NNYXBfRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0dXJuIFRydWVUeXBlL3NmbnQgc3BlY2lmaWMgY21hcCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2hhcm1hcCA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgVGhlIHRhcmdldCBjaGFybWFwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBmb3JtYXQgb2YgYGNoYXJtYXAnLiAgSWYgYGNoYXJtYXAnIGRvZXNuJ3QgYmVsb25nIHRvIGEgICAgICAgICAqLworICAvKiAgICBUcnVlVHlwZS9zZm50IGZhY2UsIHJldHVybiAtMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0VYUE9SVCggRlRfTG9uZyApCisgIEZUX0dldF9DTWFwX0Zvcm1hdCggRlRfQ2hhck1hcCAgY2hhcm1hcCApOworCisgIC8qICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UVFRBQkxFU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM3ZGUyYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oCkBAIC0wLDAgKzEsMTA5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dHRhZ3MuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGFncyBmb3IgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlIHRhYmxlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVEFHU19IX18KKyNkZWZpbmUgX19UVEFHU19IX18KKworCisjaW5jbHVkZSAiLi4vZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmcmVldHlwZS5oIgorCisjaWZkZWYgRlJFRVRZUEVfSAorI2Vycm9yICJmcmVldHlwZS5oIG9mIEZyZWVUeXBlIDEgaGFzIGJlZW4gbG9hZGVkISIKKyNlcnJvciAiUGxlYXNlIGZpeCB0aGUgZGlyZWN0b3J5IHNlYXJjaCBvcmRlciBmb3IgaGVhZGVyIGZpbGVzIgorI2Vycm9yICJzbyB0aGF0IGZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMiBpcyBmb3VuZCBmaXJzdC4iCisjZW5kaWYKKworCitGVF9CRUdJTl9IRUFERVIKKworCisjZGVmaW5lIFRUQUdfYXZhciAgRlRfTUFLRV9UQUcoICdhJywgJ3YnLCAnYScsICdyJyApCisjZGVmaW5lIFRUQUdfQkFTRSAgRlRfTUFLRV9UQUcoICdCJywgJ0EnLCAnUycsICdFJyApCisjZGVmaW5lIFRUQUdfYmRhdCAgRlRfTUFLRV9UQUcoICdiJywgJ2QnLCAnYScsICd0JyApCisjZGVmaW5lIFRUQUdfQkRGICAgRlRfTUFLRV9UQUcoICdCJywgJ0QnLCAnRicsICcgJyApCisjZGVmaW5lIFRUQUdfYmhlZCAgRlRfTUFLRV9UQUcoICdiJywgJ2gnLCAnZScsICdkJyApCisjZGVmaW5lIFRUQUdfYmxvYyAgRlRfTUFLRV9UQUcoICdiJywgJ2wnLCAnbycsICdjJyApCisjZGVmaW5lIFRUQUdfYnNsbiAgRlRfTUFLRV9UQUcoICdiJywgJ3MnLCAnbCcsICduJyApCisjZGVmaW5lIFRUQUdfQ0JEVCAgRlRfTUFLRV9UQUcoICdDJywgJ0InLCAnRCcsICdUJyApCisjZGVmaW5lIFRUQUdfQ0JMQyAgRlRfTUFLRV9UQUcoICdDJywgJ0InLCAnTCcsICdDJyApCisjZGVmaW5lIFRUQUdfQ0ZGICAgRlRfTUFLRV9UQUcoICdDJywgJ0YnLCAnRicsICcgJyApCisjZGVmaW5lIFRUQUdfQ0lEICAgRlRfTUFLRV9UQUcoICdDJywgJ0knLCAnRCcsICcgJyApCisjZGVmaW5lIFRUQUdfY21hcCAgRlRfTUFLRV9UQUcoICdjJywgJ20nLCAnYScsICdwJyApCisjZGVmaW5lIFRUQUdfY3ZhciAgRlRfTUFLRV9UQUcoICdjJywgJ3YnLCAnYScsICdyJyApCisjZGVmaW5lIFRUQUdfY3Z0ICAgRlRfTUFLRV9UQUcoICdjJywgJ3YnLCAndCcsICcgJyApCisjZGVmaW5lIFRUQUdfRFNJRyAgRlRfTUFLRV9UQUcoICdEJywgJ1MnLCAnSScsICdHJyApCisjZGVmaW5lIFRUQUdfRUJEVCAgRlRfTUFLRV9UQUcoICdFJywgJ0InLCAnRCcsICdUJyApCisjZGVmaW5lIFRUQUdfRUJMQyAgRlRfTUFLRV9UQUcoICdFJywgJ0InLCAnTCcsICdDJyApCisjZGVmaW5lIFRUQUdfRUJTQyAgRlRfTUFLRV9UQUcoICdFJywgJ0InLCAnUycsICdDJyApCisjZGVmaW5lIFRUQUdfZmVhdCAgRlRfTUFLRV9UQUcoICdmJywgJ2UnLCAnYScsICd0JyApCisjZGVmaW5lIFRUQUdfRk9ORCAgRlRfTUFLRV9UQUcoICdGJywgJ08nLCAnTicsICdEJyApCisjZGVmaW5lIFRUQUdfZnBnbSAgRlRfTUFLRV9UQUcoICdmJywgJ3AnLCAnZycsICdtJyApCisjZGVmaW5lIFRUQUdfZnZhciAgRlRfTUFLRV9UQUcoICdmJywgJ3YnLCAnYScsICdyJyApCisjZGVmaW5lIFRUQUdfZ2FzcCAgRlRfTUFLRV9UQUcoICdnJywgJ2EnLCAncycsICdwJyApCisjZGVmaW5lIFRUQUdfR0RFRiAgRlRfTUFLRV9UQUcoICdHJywgJ0QnLCAnRScsICdGJyApCisjZGVmaW5lIFRUQUdfZ2x5ZiAgRlRfTUFLRV9UQUcoICdnJywgJ2wnLCAneScsICdmJyApCisjZGVmaW5lIFRUQUdfR1BPUyAgRlRfTUFLRV9UQUcoICdHJywgJ1AnLCAnTycsICdTJyApCisjZGVmaW5lIFRUQUdfR1NVQiAgRlRfTUFLRV9UQUcoICdHJywgJ1MnLCAnVScsICdCJyApCisjZGVmaW5lIFRUQUdfZ3ZhciAgRlRfTUFLRV9UQUcoICdnJywgJ3YnLCAnYScsICdyJyApCisjZGVmaW5lIFRUQUdfaGRteCAgRlRfTUFLRV9UQUcoICdoJywgJ2QnLCAnbScsICd4JyApCisjZGVmaW5lIFRUQUdfaGVhZCAgRlRfTUFLRV9UQUcoICdoJywgJ2UnLCAnYScsICdkJyApCisjZGVmaW5lIFRUQUdfaGhlYSAgRlRfTUFLRV9UQUcoICdoJywgJ2gnLCAnZScsICdhJyApCisjZGVmaW5lIFRUQUdfaG10eCAgRlRfTUFLRV9UQUcoICdoJywgJ20nLCAndCcsICd4JyApCisjZGVmaW5lIFRUQUdfSlNURiAgRlRfTUFLRV9UQUcoICdKJywgJ1MnLCAnVCcsICdGJyApCisjZGVmaW5lIFRUQUdfanVzdCAgRlRfTUFLRV9UQUcoICdqJywgJ3UnLCAncycsICd0JyApCisjZGVmaW5lIFRUQUdfa2VybiAgRlRfTUFLRV9UQUcoICdrJywgJ2UnLCAncicsICduJyApCisjZGVmaW5lIFRUQUdfbGNhciAgRlRfTUFLRV9UQUcoICdsJywgJ2MnLCAnYScsICdyJyApCisjZGVmaW5lIFRUQUdfbG9jYSAgRlRfTUFLRV9UQUcoICdsJywgJ28nLCAnYycsICdhJyApCisjZGVmaW5lIFRUQUdfTFRTSCAgRlRfTUFLRV9UQUcoICdMJywgJ1QnLCAnUycsICdIJyApCisjZGVmaW5lIFRUQUdfTFdGTiAgRlRfTUFLRV9UQUcoICdMJywgJ1cnLCAnRicsICdOJyApCisjZGVmaW5lIFRUQUdfTUFUSCAgRlRfTUFLRV9UQUcoICdNJywgJ0EnLCAnVCcsICdIJyApCisjZGVmaW5lIFRUQUdfbWF4cCAgRlRfTUFLRV9UQUcoICdtJywgJ2EnLCAneCcsICdwJyApCisjZGVmaW5lIFRUQUdfTUVUQSAgRlRfTUFLRV9UQUcoICdNJywgJ0UnLCAnVCcsICdBJyApCisjZGVmaW5lIFRUQUdfTU1GWCAgRlRfTUFLRV9UQUcoICdNJywgJ00nLCAnRicsICdYJyApCisjZGVmaW5lIFRUQUdfTU1TRCAgRlRfTUFLRV9UQUcoICdNJywgJ00nLCAnUycsICdEJyApCisjZGVmaW5lIFRUQUdfbW9ydCAgRlRfTUFLRV9UQUcoICdtJywgJ28nLCAncicsICd0JyApCisjZGVmaW5lIFRUQUdfbW9yeCAgRlRfTUFLRV9UQUcoICdtJywgJ28nLCAncicsICd4JyApCisjZGVmaW5lIFRUQUdfbmFtZSAgRlRfTUFLRV9UQUcoICduJywgJ2EnLCAnbScsICdlJyApCisjZGVmaW5lIFRUQUdfb3BiZCAgRlRfTUFLRV9UQUcoICdvJywgJ3AnLCAnYicsICdkJyApCisjZGVmaW5lIFRUQUdfT1MyICAgRlRfTUFLRV9UQUcoICdPJywgJ1MnLCAnLycsICcyJyApCisjZGVmaW5lIFRUQUdfT1RUTyAgRlRfTUFLRV9UQUcoICdPJywgJ1QnLCAnVCcsICdPJyApCisjZGVmaW5lIFRUQUdfUENMVCAgRlRfTUFLRV9UQUcoICdQJywgJ0MnLCAnTCcsICdUJyApCisjZGVmaW5lIFRUQUdfUE9TVCAgRlRfTUFLRV9UQUcoICdQJywgJ08nLCAnUycsICdUJyApCisjZGVmaW5lIFRUQUdfcG9zdCAgRlRfTUFLRV9UQUcoICdwJywgJ28nLCAncycsICd0JyApCisjZGVmaW5lIFRUQUdfcHJlcCAgRlRfTUFLRV9UQUcoICdwJywgJ3InLCAnZScsICdwJyApCisjZGVmaW5lIFRUQUdfcHJvcCAgRlRfTUFLRV9UQUcoICdwJywgJ3InLCAnbycsICdwJyApCisjZGVmaW5lIFRUQUdfc2ZudCAgRlRfTUFLRV9UQUcoICdzJywgJ2YnLCAnbicsICd0JyApCisjZGVmaW5lIFRUQUdfU0lORyAgRlRfTUFLRV9UQUcoICdTJywgJ0knLCAnTicsICdHJyApCisjZGVmaW5lIFRUQUdfdHJhayAgRlRfTUFLRV9UQUcoICd0JywgJ3InLCAnYScsICdrJyApCisjZGVmaW5lIFRUQUdfdHJ1ZSAgRlRfTUFLRV9UQUcoICd0JywgJ3InLCAndScsICdlJyApCisjZGVmaW5lIFRUQUdfdHRjICAgRlRfTUFLRV9UQUcoICd0JywgJ3QnLCAnYycsICcgJyApCisjZGVmaW5lIFRUQUdfdHRjZiAgRlRfTUFLRV9UQUcoICd0JywgJ3QnLCAnYycsICdmJyApCisjZGVmaW5lIFRUQUdfVFlQMSAgRlRfTUFLRV9UQUcoICdUJywgJ1knLCAnUCcsICcxJyApCisjZGVmaW5lIFRUQUdfdHlwMSAgRlRfTUFLRV9UQUcoICd0JywgJ3knLCAncCcsICcxJyApCisjZGVmaW5lIFRUQUdfVkRNWCAgRlRfTUFLRV9UQUcoICdWJywgJ0QnLCAnTScsICdYJyApCisjZGVmaW5lIFRUQUdfdmhlYSAgRlRfTUFLRV9UQUcoICd2JywgJ2gnLCAnZScsICdhJyApCisjZGVmaW5lIFRUQUdfdm10eCAgRlRfTUFLRV9UQUcoICd2JywgJ20nLCAndCcsICd4JyApCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UVEFHU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL3R0dW5wYXQuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL3R0dW5wYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGUyNzU5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvdHR1bnBhdC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0dW5wYXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBEZWZpbml0aW9ucyBmb3IgdGhlIHVucGF0ZW50ZWQgVHJ1ZVR5cGUgaGludGluZyBzeXN0ZW0gICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMywgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBXcml0dGVuIGJ5IEdyYWhhbSBBc2hlciA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPiAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVFRVTlBBVF9IX18KKyNkZWZpbmUgX19UVFVOUEFUX0hfXworCisKKyNpbmNsdWRlICIuLi9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZyZWV0eXBlLmgiCisKKyNpZmRlZiBGUkVFVFlQRV9ICisjZXJyb3IgImZyZWV0eXBlLmggb2YgRnJlZVR5cGUgMSBoYXMgYmVlbiBsb2FkZWQhIgorI2Vycm9yICJQbGVhc2UgZml4IHRoZSBkaXJlY3Rvcnkgc2VhcmNoIG9yZGVyIGZvciBoZWFkZXIgZmlsZXMiCisjZXJyb3IgInNvIHRoYXQgZnJlZXR5cGUuaCBvZiBGcmVlVHlwZSAyIGlzIGZvdW5kIGZpcnN0LiIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICoKKyAgKiBAY29uc3RhbnQ6CisgICogICBGVF9QQVJBTV9UQUdfVU5QQVRFTlRFRF9ISU5USU5HCisgICoKKyAgKiBAZGVzY3JpcHRpb246CisgICogICBBIGNvbnN0YW50IHVzZWQgYXMgdGhlIHRhZyBvZiBhbiBARlRfUGFyYW1ldGVyIHN0cnVjdHVyZSB0byBpbmRpY2F0ZQorICAqICAgdGhhdCB1bnBhdGVudGVkIG1ldGhvZHMgb25seSBzaG91bGQgYmUgdXNlZCBieSB0aGUgVHJ1ZVR5cGUgYnl0ZWNvZGUKKyAgKiAgIGludGVycHJldGVyIGZvciBhIHR5cGVmYWNlIG9wZW5lZCBieSBARlRfT3Blbl9GYWNlLgorICAqCisgICovCisjZGVmaW5lIEZUX1BBUkFNX1RBR19VTlBBVEVOVEVEX0hJTlRJTkcgIEZUX01BS0VfVEFHKCAndScsICduJywgJ3AnLCAnYScgKQorCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX1RUVU5QQVRfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvaW5jbHVkZS9mdDJidWlsZC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnQyYnVpbGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmM4MTIxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL2luY2x1ZGUvZnQyYnVpbGQuaApAQCAtMCwwICsxLDQwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdDJidWlsZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgMiBidWlsZCBhbmQgc2V0dXAgbWFjcm9zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIChHZW5lcmljIHZlcnNpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGNvcnJlc3BvbmRzIHRvIHRoZSBkZWZhdWx0IGBmdDJidWlsZC5oJyBmaWxlIGZvciAgICAgICAgICAgICovCisgIC8qIEZyZWVUeXBlIDIuICBJdCB1c2VzIHRoZSBgZnJlZXR5cGUnIGluY2x1ZGUgcm9vdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTm90ZSB0aGF0IHNwZWNpZmljIHBsYXRmb3JtcyBtaWdodCB1c2UgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4gICAgICovCisgIC8qIFNlZSBidWlsZHMvdW5peC9mdDJ1bml4LmggZm9yIGFuIGV4YW1wbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUMl9CVUlMRF9HRU5FUklDX0hfXworI2RlZmluZSBfX0ZUMl9CVUlMRF9HRU5FUklDX0hfXworCisjaW5jbHVkZSAiZm94aXRuYW1lcy5oIgorI2luY2x1ZGUgImZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIgorCisjZW5kaWYgLyogX19GVDJfQlVJTERfR0VORVJJQ19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9KYW1maWxlIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL0phbWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMyZThiOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9KYW1maWxlCkBAIC0wLDAgKzEsNjAgQEAKKyMgRnJlZVR5cGUgMiBzcmMvYmFzZSBKYW1maWxlCisjCisjIENvcHlyaWdodCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IGJ5CisjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKKyMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQorIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorIyBmdWxseS4KKworU3ViRGlyICBGVDJfVE9QICQoRlQyX1NSQ19ESVIpIGJhc2UgOworCisKK3sKKyAgbG9jYWwgIF9zb3VyY2VzIDsKKworICBpZiAkKEZUMl9NVUxUSSkKKyAgeworICAgIF9zb3VyY2VzID0gZnRhZHZhbmMgZnRjYWxjICAgZnRkYmdtZW0gZnRnbG9hZHIKKyAgICAgICAgICAgICAgIGZ0b2JqcyAgIGZ0b3V0bG4gIGZ0cmZvcmsgIGZ0c25hbWVzCisgICAgICAgICAgICAgICBmdHN0cmVhbSBmdHRyaWdvbiBmdHV0aWwKKyAgICAgICAgICAgICAgIGJhc2VwaWMgIGZ0cGljCisgICAgICAgICAgICAgICA7CisgIH0KKyAgZWxzZQorICB7CisgICAgX3NvdXJjZXMgPSBmdGJhc2UgOworICB9CisKKyAgTGlicmFyeSAgJChGVDJfTElCKSA6ICQoX3NvdXJjZXMpLmMgOworfQorCisjIEFkZCB0aGUgb3B0aW9uYWwvcmVwbGFjZWFibGUgZmlsZXMuCisjCit7CisgIGxvY2FsICBfc291cmNlcyA9IGJib3ggICBiZGYgICAgYml0bWFwIGRlYnVnICBnYXNwCisgICAgICAgICAgICAgICAgICAgIGdseXBoICBneHZhbCAgaW5pdCAgIGxjZGZpbCBtbQorICAgICAgICAgICAgICAgICAgICBvdHZhbCAgcGZyICAgIHN0cm9rZSBzeW50aCAgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHR5cGUxICB3aW5mbnQgeGY4NiAgIHBhdGVudAorICAgICAgICAgICAgICAgICAgICA7CisKKyAgTGlicmFyeSAgJChGVDJfTElCKSA6IGZ0JChfc291cmNlcykuYyA7Cit9CisKKyMgQWRkIE1hY2ludG9zaC1zcGVjaWZpYyBmaWxlIHRvIHRoZSBsaWJyYXJ5IHdoZW4gbmVjZXNzYXJ5LgorIworaWYgJChNQUMpCit7CisgIExpYnJhcnkgICQoRlQyX0xJQikgOiBmdG1hYy5jIDsKK30KK2Vsc2UgaWYgJChPUykgPSBNQUNPU1gKK3sKKyAgaWYgJChGVDJfTVVMVEkpCisgIHsKKyAgICBMaWJyYXJ5ICAkKEZUMl9MSUIpIDogZnRtYWMuYyA7CisgIH0KK30KKworIyBlbmQgb2Ygc3JjL2Jhc2UgSmFtZmlsZQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Jhc2VwaWMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9iYXNlcGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZmYzAxYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9iYXNlcGljLmMKQEAgLTAsMCArMSwxMDggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGJhc2VwaWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSBzZXJ2aWNlcyBmb3IgYmFzZS4gICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICJiYXNlcGljLmgiCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyAgLyogZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBQSUMgaW5pdCBmdW5jdGlvbnMgZnJvbSBmdGdseXBoLmMgKi8KKyAgdm9pZAorICBGVF9Jbml0X0NsYXNzX2Z0X291dGxpbmVfZ2x5cGhfY2xhc3MoIEZUX0dseXBoX0NsYXNzKiAgY2xhenogKTsKKworICB2b2lkCisgIEZUX0luaXRfQ2xhc3NfZnRfYml0bWFwX2dseXBoX2NsYXNzKCBGVF9HbHlwaF9DbGFzcyogIGNsYXp6ICk7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX01BQ19GT05UUworICAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIFBJQyBpbml0IGZ1bmN0aW9uIGZyb20gZnRyZm9yay5jICovCisgIC8qIChub3QgbW9kdWxhcml6ZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdm9pZAorICBGVF9Jbml0X1RhYmxlX3JhY2Nlc3NfZ3Vlc3NfdGFibGUoIGZ0X3JhY2Nlc3NfZ3Vlc3NfcmVjKiAgcmVjb3JkICk7CisjZW5kaWYKKworICAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIFBJQyBpbml0IGZ1bmN0aW9ucyBmcm9tIGZ0aW5pdC5jICovCisgIEZUX0Vycm9yCisgIGZ0X2NyZWF0ZV9kZWZhdWx0X21vZHVsZV9jbGFzc2VzKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKyAgdm9pZAorICBmdF9kZXN0cm95X2RlZmF1bHRfbW9kdWxlX2NsYXNzZXMoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworCisgIHZvaWQKKyAgZnRfYmFzZV9waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9QSUNfQ29udGFpbmVyKiAgcGljX2NvbnRhaW5lciA9ICZsaWJyYXJ5LT5waWNfY29udGFpbmVyOworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnkgICAgICAgID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICBpZiAoIHBpY19jb250YWluZXItPmJhc2UgKQorICAgIHsKKyAgICAgIC8qIGRlc3Ryb3kgZGVmYXVsdCBtb2R1bGUgY2xhc3NlcyAgICAgICAgICAgICovCisgICAgICAvKiAoaW4gY2FzZSBGVF9BZGRfRGVmYXVsdF9Nb2R1bGVzIHdhcyB1c2VkKSAqLworICAgICAgZnRfZGVzdHJveV9kZWZhdWx0X21vZHVsZV9jbGFzc2VzKCBsaWJyYXJ5ICk7CisKKyAgICAgIEZUX0ZSRUUoIHBpY19jb250YWluZXItPmJhc2UgKTsKKyAgICAgIHBpY19jb250YWluZXItPmJhc2UgPSBOVUxMOworICAgIH0KKyAgfQorCisKKyAgRlRfRXJyb3IKKyAgZnRfYmFzZV9waWNfaW5pdCggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9QSUNfQ29udGFpbmVyKiAgcGljX2NvbnRhaW5lciA9ICZsaWJyYXJ5LT5waWNfY29udGFpbmVyOworICAgIEZUX0Vycm9yICAgICAgICAgICBlcnJvciAgICAgICAgID0gRlRfRXJyX09rOworICAgIEJhc2VQSUMqICAgICAgICAgICBjb250YWluZXIgICAgID0gTlVMTDsKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5ICAgICAgICA9IGxpYnJhcnktPm1lbW9yeTsKKworCisgICAgLyogYWxsb2NhdGUgcG9pbnRlciwgY2xlYXIgYW5kIHNldCBnbG9iYWwgY29udGFpbmVyIHBvaW50ZXIgKi8KKyAgICBpZiAoIEZUX0FMTE9DKCBjb250YWluZXIsIHNpemVvZiAoICpjb250YWluZXIgKSApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICBGVF9NRU1fU0VUKCBjb250YWluZXIsIDAsIHNpemVvZiAoICpjb250YWluZXIgKSApOworICAgIHBpY19jb250YWluZXItPmJhc2UgPSBjb250YWluZXI7CisKKyAgICAvKiBpbml0aWFsaXplIGRlZmF1bHQgbW9kdWxlcyBsaXN0IGFuZCBwb2ludGVycyAqLworICAgIGVycm9yID0gZnRfY3JlYXRlX2RlZmF1bHRfbW9kdWxlX2NsYXNzZXMoIGxpYnJhcnkgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIGluaXRpYWxpemUgcG9pbnRlciB0YWJsZSAtICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIHRoaXMgaXMgaG93IHRoZSBtb2R1bGUgdXN1YWxseSBleHBlY3RzIHRoaXMgZGF0YSAqLworICAgIEZUX0luaXRfQ2xhc3NfZnRfb3V0bGluZV9nbHlwaF9jbGFzcygKKyAgICAgICZjb250YWluZXItPmZ0X291dGxpbmVfZ2x5cGhfY2xhc3MgKTsKKyAgICBGVF9Jbml0X0NsYXNzX2Z0X2JpdG1hcF9nbHlwaF9jbGFzcygKKyAgICAgICZjb250YWluZXItPmZ0X2JpdG1hcF9nbHlwaF9jbGFzcyApOworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fTUFDX0ZPTlRTCisgICAgRlRfSW5pdF9UYWJsZV9yYWNjZXNzX2d1ZXNzX3RhYmxlKAorICAgICAgKGZ0X3JhY2Nlc3NfZ3Vlc3NfcmVjKikmY29udGFpbmVyLT5mdF9yYWNjZXNzX2d1ZXNzX3RhYmxlICk7CisjZW5kaWYKKworICBFeGl0OgorICAgIGlmICggZXJyb3IgKQorICAgICAgZnRfYmFzZV9waWNfZnJlZSggbGlicmFyeSApOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9iYXNlcGljLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvYmFzZXBpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMzA4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvYmFzZXBpYy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGJhc2VwaWMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSBzZXJ2aWNlcyBmb3IgYmFzZS4gICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0JBU0VQSUNfSF9fCisjZGVmaW5lIF9fQkFTRVBJQ19IX18KKworCitGVF9CRUdJTl9IRUFERVIKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRwaWMuaCIKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX09VVExJTkVfR0xZUEhfQ0xBU1NfR0VUICAmZnRfb3V0bGluZV9nbHlwaF9jbGFzcworI2RlZmluZSBGVF9CSVRNQVBfR0xZUEhfQ0xBU1NfR0VUICAgJmZ0X2JpdG1hcF9nbHlwaF9jbGFzcworI2RlZmluZSBGVF9ERUZBVUxUX01PRFVMRVNfR0VUICAgICAgZnRfZGVmYXVsdF9tb2R1bGVzCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0dVRVNTSU5HX0VNQkVEREVEX1JGT1JLCisjZGVmaW5lIEZUX1JBQ0NFU1NfR1VFU1NfVEFCTEVfR0VUICBmdF9yYWNjZXNzX2d1ZXNzX3RhYmxlCisjZW5kaWYKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRnbHlwaC5oIgorCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9HVUVTU0lOR19FTUJFRERFRF9SRk9SSworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oIgorI2VuZGlmCisKKworICB0eXBlZGVmIHN0cnVjdCAgQmFzZVBJQ18KKyAgeworICAgIEZUX01vZHVsZV9DbGFzcyoqICBkZWZhdWx0X21vZHVsZV9jbGFzc2VzOworICAgIEZUX0dseXBoX0NsYXNzICAgICBmdF9vdXRsaW5lX2dseXBoX2NsYXNzOworICAgIEZUX0dseXBoX0NsYXNzICAgICBmdF9iaXRtYXBfZ2x5cGhfY2xhc3M7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0dVRVNTSU5HX0VNQkVEREVEX1JGT1JLCisgICAgZnRfcmFjY2Vzc19ndWVzc19yZWMgIGZ0X3JhY2Nlc3NfZ3Vlc3NfdGFibGVbRlRfUkFDQ0VTU19OX1JVTEVTXTsKKyNlbmRpZgorCisgIH0gQmFzZVBJQzsKKworCisjZGVmaW5lIEdFVF9QSUMoIGxpYiApICAoIChCYXNlUElDKikoIChsaWIpLT5waWNfY29udGFpbmVyLmJhc2UgKSApCisKKyNkZWZpbmUgRlRfT1VUTElORV9HTFlQSF9DTEFTU19HRVQgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggJkdFVF9QSUMoIGxpYnJhcnkgKS0+ZnRfb3V0bGluZV9nbHlwaF9jbGFzcyApCisjZGVmaW5lIEZUX0JJVE1BUF9HTFlQSF9DTEFTU19HRVQgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAmR0VUX1BJQyggbGlicmFyeSApLT5mdF9iaXRtYXBfZ2x5cGhfY2xhc3MgKQorI2RlZmluZSBGVF9ERUZBVUxUX01PRFVMRVNfR0VUICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT5kZWZhdWx0X21vZHVsZV9jbGFzc2VzICkKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fR1VFU1NJTkdfRU1CRURERURfUkZPUksKKyNkZWZpbmUgRlRfUkFDQ0VTU19HVUVTU19UQUJMRV9HRVQgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEdFVF9QSUMoIGxpYnJhcnkgKS0+ZnRfcmFjY2Vzc19ndWVzc190YWJsZSApCisjZW5kaWYKKworCisgIC8qIHNlZSBiYXNlcGljLmMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiAqLworICB2b2lkCisgIGZ0X2Jhc2VfcGljX2ZyZWUoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworICBGVF9FcnJvcgorICBmdF9iYXNlX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fQkFTRVBJQ19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGFkdmFuYy5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0YWR2YW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUyZTUxYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGFkdmFuYy5jCkBAIC0wLDAgKzEsMTYyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGFkdmFuYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgUXVpY2sgY29tcHV0YXRpb24gb2YgYWR2YW5jZSB3aWR0aHMgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDgsIDIwMDksIDIwMTEsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0YWR2YW5jLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBfZnRfZmFjZV9zY2FsZV9hZHZhbmNlcyggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBhZHZhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgIGZsYWdzICkKKyAgeworICAgIEZUX0ZpeGVkICBzY2FsZTsKKyAgICBGVF9VSW50ICAgbm47CisKKworICAgIGlmICggZmxhZ3MgJiBGVF9MT0FEX05PX1NDQUxFICkKKyAgICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgICBpZiAoIGZhY2UtPnNpemUgPT0gTlVMTCApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfU2l6ZV9IYW5kbGUgKTsKKworICAgIGlmICggZmxhZ3MgJiBGVF9MT0FEX1ZFUlRJQ0FMX0xBWU9VVCApCisgICAgICBzY2FsZSA9IGZhY2UtPnNpemUtPm1ldHJpY3MueV9zY2FsZTsKKyAgICBlbHNlCisgICAgICBzY2FsZSA9IGZhY2UtPnNpemUtPm1ldHJpY3MueF9zY2FsZTsKKworICAgIC8qIHRoaXMgbXVzdCBiZSB0aGUgc2FtZSBzY2FsaW5nIGFzIHRvIGdldCBsaW5lYXJ7SG9yaSxWZXJ0fUFkdmFuY2UgKi8KKyAgICAvKiAoc2VlIGBGVF9Mb2FkX0dseXBoJyBpbXBsZW1lbnRhdGlvbiBpbiBzcmMvYmFzZS9mdG9ianMuYykgICAgICAgICovCisKKyAgICBmb3IgKCBubiA9IDA7IG5uIDwgY291bnQ7IG5uKysgKQorICAgICAgYWR2YW5jZXNbbm5dID0gRlRfTXVsRGl2KCBhZHZhbmNlc1tubl0sIHNjYWxlLCA2NCApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgIC8qIGF0IHRoZSBtb21lbnQsIHdlIGNhbiBwZXJmb3JtIGZhc3QgYWR2YW5jZSByZXRyaWV2YWwgb25seSBpbiAqLworICAgLyogdGhlIGZvbGxvd2luZyBjYXNlczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgIC8qICAtIHVuc2NhbGVkIGxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgLyogIC0gdW5oaW50ZWQgbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAvKiAgLSBsaWdodC1oaW50ZWQgbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2RlZmluZSBMT0FEX0FEVkFOQ0VfRkFTVF9DSEVDSyggZmxhZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBmbGFncyAmICggRlRfTE9BRF9OT19TQ0FMRSB8IEZUX0xPQURfTk9fSElOVElORyApICAgIHx8IFwKKyAgICAgICAgICAgIEZUX0xPQURfVEFSR0VUX01PREUoIGZsYWdzICkgPT0gRlRfUkVOREVSX01PREVfTElHSFQgKQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGFkdmFuYy5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9HZXRfQWR2YW5jZSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBnaW5kZXgsCisgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgIGZsYWdzLAorICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICpwYWR2YW5jZSApCisgIHsKKyAgICBGVF9GYWNlX0dldEFkdmFuY2VzRnVuYyAgZnVuYzsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKworICAgIGlmICggZ2luZGV4ID49IChGVF9VSW50KWZhY2UtPm51bV9nbHlwaHMgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0dseXBoX0luZGV4ICk7CisKKyAgICBmdW5jID0gZmFjZS0+ZHJpdmVyLT5jbGF6ei0+Z2V0X2FkdmFuY2VzOworICAgIGlmICggZnVuYyAmJiBMT0FEX0FEVkFOQ0VfRkFTVF9DSEVDSyggZmxhZ3MgKSApCisgICAgeworICAgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICAgIGVycm9yID0gZnVuYyggZmFjZSwgZ2luZGV4LCAxLCBmbGFncywgcGFkdmFuY2UgKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgcmV0dXJuIF9mdF9mYWNlX3NjYWxlX2FkdmFuY2VzKCBmYWNlLCBwYWR2YW5jZSwgMSwgZmxhZ3MgKTsKKworICAgICAgaWYgKCBGVF9FUlJfTkVRKCBlcnJvciwgVW5pbXBsZW1lbnRlZF9GZWF0dXJlICkgKQorICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIEZUX0dldF9BZHZhbmNlcyggZmFjZSwgZ2luZGV4LCAxLCBmbGFncywgcGFkdmFuY2UgKTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGFkdmFuYy5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9HZXRfQWR2YW5jZXMoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgRlRfSW50MzIgICBmbGFncywKKyAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgKnBhZHZhbmNlcyApCisgIHsKKyAgICBGVF9GYWNlX0dldEFkdmFuY2VzRnVuYyAgZnVuYzsKKyAgICBGVF9VSW50ICAgICAgICAgICAgICAgICAgbnVtLCBlbmQsIG5uOworICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKworICAgIG51bSA9IChGVF9VSW50KWZhY2UtPm51bV9nbHlwaHM7CisgICAgZW5kID0gc3RhcnQgKyBjb3VudDsKKyAgICBpZiAoIHN0YXJ0ID49IG51bSB8fCBlbmQgPCBzdGFydCB8fCBlbmQgPiBudW0gKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0dseXBoX0luZGV4ICk7CisKKyAgICBpZiAoIGNvdW50ID09IDAgKQorICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKworICAgIGZ1bmMgPSBmYWNlLT5kcml2ZXItPmNsYXp6LT5nZXRfYWR2YW5jZXM7CisgICAgaWYgKCBmdW5jICYmIExPQURfQURWQU5DRV9GQVNUX0NIRUNLKCBmbGFncyApICkKKyAgICB7CisgICAgICBlcnJvciA9IGZ1bmMoIGZhY2UsIHN0YXJ0LCBjb3VudCwgZmxhZ3MsIHBhZHZhbmNlcyApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICByZXR1cm4gX2Z0X2ZhY2Vfc2NhbGVfYWR2YW5jZXMoIGZhY2UsIHBhZHZhbmNlcywgY291bnQsIGZsYWdzICk7CisKKyAgICAgIGlmICggRlRfRVJSX05FUSggZXJyb3IsIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApICkKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIGVycm9yID0gRlRfRXJyX09rOworCisgICAgaWYgKCBmbGFncyAmIEZUX0FEVkFOQ0VfRkxBR19GQVNUX09OTFkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKTsKKworICAgIGZsYWdzIHw9IChGVF9VSW50MzIpRlRfTE9BRF9BRFZBTkNFX09OTFk7CisgICAgZm9yICggbm4gPSAwOyBubiA8IGNvdW50OyBubisrICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX0xvYWRfR2x5cGgoIGZhY2UsIHN0YXJ0ICsgbm4sIGZsYWdzICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHNjYWxlIGZyb20gMjYuNiB0byAxNi4xNiAqLworICAgICAgcGFkdmFuY2VzW25uXSA9ICggZmxhZ3MgJiBGVF9MT0FEX1ZFUlRJQ0FMX0xBWU9VVCApCisgICAgICAgICAgICAgICAgICAgICAgPyBmYWNlLT5nbHlwaC0+YWR2YW5jZS55IDw8IDEwCisgICAgICAgICAgICAgICAgICAgICAgOiBmYWNlLT5nbHlwaC0+YWR2YW5jZS54IDw8IDEwOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0YXBpLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRhcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWI2NDYyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0YXBpLmMKQEAgLTAsMCArMSwxMjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0YXBpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgY29tcGF0aWJpbGl0eSBmdW5jdGlvbnMgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bGlzdC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgIEMgTyBNIFAgQSBUIEkgQiBJIEwgSSBUIFkgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBBUEkgKi8KKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX05ld19NZW1vcnlfU3RyZWFtKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICBzdHJlYW0gKQorICB7CisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7CisKKyAgICBGVF9TdHJlYW1fT3Blbk1lbW9yeSggc3RyZWFtLCBiYXNlLCBzaXplICk7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIEZUX1NlZWtfU3RyZWFtKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgcG9zICkKKyAgeworICAgIHJldHVybiBGVF9TdHJlYW1fU2Vlayggc3RyZWFtLCBwb3MgKTsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX0Vycm9yICkKKyAgRlRfU2tpcF9TdHJlYW0oIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBkaXN0YW5jZSApCisgIHsKKyAgICByZXR1cm4gRlRfU3RyZWFtX1NraXAoIHN0cmVhbSwgZGlzdGFuY2UgKTsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX0Vycm9yICkKKyAgRlRfUmVhZF9TdHJlYW0oIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBidWZmZXIsCisgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIGNvdW50ICkKKyAgeworICAgIHJldHVybiBGVF9TdHJlYW1fUmVhZCggc3RyZWFtLCBidWZmZXIsIGNvdW50ICk7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIEZUX1JlYWRfU3RyZWFtX0F0KCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgcG9zLAorICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIGNvdW50ICkKKyAgeworICAgIHJldHVybiBGVF9TdHJlYW1fUmVhZEF0KCBzdHJlYW0sIHBvcywgYnVmZmVyLCBjb3VudCApOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfRXJyb3IgKQorICBGVF9FeHRyYWN0X0ZyYW1lKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSoqICBwYnl0ZXMgKQorICB7CisgICAgcmV0dXJuIEZUX1N0cmVhbV9FeHRyYWN0RnJhbWUoIHN0cmVhbSwgY291bnQsIHBieXRlcyApOworICB9CisKKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX1JlbGVhc2VfRnJhbWUoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiogIHBieXRlcyApCisgIHsKKyAgICBGVF9TdHJlYW1fUmVsZWFzZUZyYW1lKCBzdHJlYW0sIHBieXRlcyApOworICB9CisKKyAgRlRfQkFTRV9ERUYoIEZUX0Vycm9yICkKKyAgRlRfQWNjZXNzX0ZyYW1lKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIGNvdW50ICkKKyAgeworICAgIHJldHVybiBGVF9TdHJlYW1fRW50ZXJGcmFtZSggc3RyZWFtLCBjb3VudCApOworICB9CisKKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX0ZvcmdldF9GcmFtZSggRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfU3RyZWFtX0V4aXRGcmFtZSggc3RyZWFtICk7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGJhc2UuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2VkMzAwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0YmFzZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0YmFzZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcHJpdmF0ZSBmdW5jdGlvbnMgdXNlZCBpbiBiYXNlIG1vZHVsZSAoc3BlY2lmaWNhdGlvbikuICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOCwgMjAxMCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgV2VybmVyIExlbWJlcmcsIGFuZCBzdXp1a2kgdG9zaGl5YS4gICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUQkFTRV9IX18KKyNkZWZpbmUgX19GVEJBU0VfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyogQXNzdW1lIHRoZSBzdHJlYW0gaXMgc2ZudC13cmFwcGVkIFBTIFR5cGUxIG9yIHNmbnQtd3JhcHBlZCBDSUQta2V5ZWQgKi8KKyAgLyogZm9udCwgYW5kIHRyeSB0byBsb2FkIGEgZmFjZSBzcGVjaWZpZWQgYnkgdGhlIGZhY2VfaW5kZXguICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgb3Blbl9mYWNlX1BTX2Zyb21fc2ZudF9zdHJlYW0oIEZUX0xpYnJhcnkgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciAgKnBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgKmFmYWNlICk7CisKKworICAvKiBDcmVhdGUgYSBuZXcgRlRfRmFjZSBnaXZlbiBhIGJ1ZmZlciBhbmQgYSBkcml2ZXIgbmFtZS4gKi8KKyAgLyogRnJvbSBmdG1hYy5jLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIG9wZW5fZmFjZV9mcm9tX2J1ZmZlciggRlRfTGlicmFyeSAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIGRyaXZlcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICphZmFjZSApOworCisKKyNpZiAgZGVmaW5lZCggRlRfQ09ORklHX09QVElPTl9HVUVTU0lOR19FTUJFRERFRF9SRk9SSyApICYmIFwKKyAgICAhZGVmaW5lZCggRlRfTUFDSU5UT1NIICkKKyAgLyogTWFjIE9TIFgvRGFyd2luIGtlcm5lbCBvZnRlbiBjaGFuZ2VzIHJlY29tbWVuZGVkIG1ldGhvZCB0byBhY2Nlc3MgKi8KKyAgLyogdGhlIHJlc291cmNlIGZvcmsgYW5kIG9sZGVyIG1ldGhvZHMgbWFrZXMgdGhlIGtlcm5lbCBpc3N1ZSB0aGUgICAgKi8KKyAgLyogd2FybmluZyBvZiBkZXByZWNhdGVkIG1ldGhvZC4gIFRvIGNhbG0gaXQgZG93biwgdGhlIG1ldGhvZHMgYmFzZWQgKi8KKyAgLyogb24gRGFyd2luIFZGUyBzaG91bGQgYmUgZ3JvdXBlZCBhbmQgc2tpcCB0aGUgcmVzdCBtZXRob2RzIGFmdGVyICAgKi8KKyAgLyogdGhlIGNhc2UgdGhlIHJlc291cmNlIGlzIG9wZW5lZCBidXQgZm91bmQgdG8gbGFjayBhIGZvbnQgaW4gaXQuICAgKi8KKyAgRlRfTE9DQUwoIEZUX0Jvb2wgKQorICBmdF9yYWNjZXNzX3J1bGVfYnlfZGFyd2luX3ZmcyggRlRfTGlicmFyeSBsaWJyYXJ5LCBGVF9VSW50ICBydWxlX2luZGV4ICk7CisjZW5kaWYKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUQkFTRV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGJib3guYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGJib3guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTg2MmM1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0YmJveC5jCkBAIC0wLDAgKzEsNjQ5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGJib3guYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgYmJveCBjb21wdXRhdGlvbiAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMiwgMjAwNCwgMjAwNiwgMjAxMCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkICAgICAgICAqLworLyogIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGNvbXBvbmVudCBoYXMgYSBfc2luZ2xlXyByb2xlOiB0byBjb21wdXRlIGV4YWN0IG91dGxpbmUgYm91bmRpbmcgKi8KKyAgLyogYm94ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGJib3guaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisKKworICB0eXBlZGVmIHN0cnVjdCAgVEJCb3hfUmVjXworICB7CisgICAgRlRfVmVjdG9yICBsYXN0OworICAgIEZUX0JCb3ggICAgYmJveDsKKworICB9IFRCQm94X1JlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEJCb3hfTW92ZV9UbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyBhIGBtb3ZlX3RvJyBhbmQgYGxpbmVfdG8nIGVtaXR0ZXIgZHVyaW5nICAqLworICAvKiAgICBGVF9PdXRsaW5lX0RlY29tcG9zZSgpLiAgSXQgc2ltcGx5IHJlY29yZHMgdGhlIGRlc3RpbmF0aW9uIHBvaW50ICAgKi8KKyAgLyogICAgaW4gYHVzZXItPmxhc3QnOyBubyBmdXJ0aGVyIGNvbXB1dGF0aW9ucyBhcmUgbmVjZXNzYXJ5IHNpbmNlIHdlICAgICovCisgIC8qICAgIHVzZSB0aGUgY2JveCBhcyB0aGUgc3RhcnRpbmcgYmJveCB3aGljaCBtdXN0IGJlIHJlZmluZWQuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvICAgOjogQSBwb2ludGVyIHRvIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgOjogQSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHdhbGsgY29udGV4dC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFsd2F5cyAwLiAgTmVlZGVkIGZvciB0aGUgaW50ZXJmYWNlIG9ubHkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIGludAorICBCQm94X01vdmVfVG8oIEZUX1ZlY3RvciogIHRvLAorICAgICAgICAgICAgICAgIFRCQm94X1JlYyogIHVzZXIgKQorICB7CisgICAgdXNlci0+bGFzdCA9ICp0bzsKKworICAgIHJldHVybiAwOworICB9CisKKworI2RlZmluZSBDSEVDS19YKCBwLCBiYm94ICkgIFwKKyAgICAgICAgICAoIHAtPnggPCBiYm94LnhNaW4gfHwgcC0+eCA+IGJib3gueE1heCApCisKKyNkZWZpbmUgQ0hFQ0tfWSggcCwgYmJveCApICBcCisgICAgICAgICAgKCBwLT55IDwgYmJveC55TWluIHx8IHAtPnkgPiBiYm94LnlNYXggKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQkJveF9Db25pY19DaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRmluZHMgdGhlIGV4dHJlbWEgb2YgYSAxLWRpbWVuc2lvbmFsIGNvbmljIEJlemllciBjdXJ2ZSBhbmQgdXBkYXRlICovCisgIC8qICAgIGEgYm91bmRpbmcgcmFuZ2UuICBUaGlzIHZlcnNpb24gdXNlcyBkaXJlY3QgY29tcHV0YXRpb24sIGFzIGl0ICAgICAqLworICAvKiAgICBkb2Vzbid0IG5lZWQgc3F1YXJlIHJvb3RzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5MSAgOjogVGhlIHN0YXJ0IGNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHkyICA6OiBUaGUgY29vcmRpbmF0ZSBvZiB0aGUgY29udHJvbCBwb2ludC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeTMgIDo6IFRoZSBlbmQgY29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWluIDo6IFRoZSBhZGRyZXNzIG9mIHRoZSBjdXJyZW50IG1pbmltdW0uICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXggOjogVGhlIGFkZHJlc3Mgb2YgdGhlIGN1cnJlbnQgbWF4aW11bS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEJCb3hfQ29uaWNfQ2hlY2soIEZUX1BvcyAgIHkxLAorICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICB5MiwKKyAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgeTMsCisgICAgICAgICAgICAgICAgICAgIEZUX1BvcyogIG1pbiwKKyAgICAgICAgICAgICAgICAgICAgRlRfUG9zKiAgbWF4ICkKKyAgeworICAgIGlmICggeTEgPD0geTMgJiYgeTIgPT0geTEgKSAgICAgLyogZmxhdCBhcmMgKi8KKyAgICAgIGdvdG8gU3VpdGU7CisKKyAgICBpZiAoIHkxIDwgeTMgKQorICAgIHsKKyAgICAgIGlmICggeTIgPj0geTEgJiYgeTIgPD0geTMgKSAgIC8qIGFzY2VuZGluZyBhcmMgKi8KKyAgICAgICAgZ290byBTdWl0ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICggeTIgPj0geTMgJiYgeTIgPD0geTEgKSAgIC8qIGRlc2NlbmRpbmcgYXJjICovCisgICAgICB7CisgICAgICAgIHkyID0geTE7CisgICAgICAgIHkxID0geTM7CisgICAgICAgIHkzID0geTI7CisgICAgICAgIGdvdG8gU3VpdGU7CisgICAgICB9CisgICAgfQorCisgICAgeTEgPSB5MyA9IHkxIC0gRlRfTXVsRGl2KCB5MiAtIHkxLCB5MiAtIHkxLCB5MSAtIDIqeTIgKyB5MyApOworCisgIFN1aXRlOgorICAgIGlmICggeTEgPCAqbWluICkgKm1pbiA9IHkxOworICAgIGlmICggeTMgPiAqbWF4ICkgKm1heCA9IHkzOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBCQm94X0NvbmljX1RvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgYSBgY29uaWNfdG8nIGVtaXR0ZXIgZHVyaW5nICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRlRfT3V0bGluZV9EZWNvbXBvc2UoKS4gIEl0IGNoZWNrcyBhIGNvbmljIEJlemllciBjdXJ2ZSB3aXRoIHRoZSAgICovCisgIC8qICAgIGN1cnJlbnQgYm91bmRpbmcgYm94LCBhbmQgY29tcHV0ZXMgaXRzIGV4dHJlbWEgaWYgbmVjZXNzYXJ5IHRvICAgICAqLworICAvKiAgICB1cGRhdGUgaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb250cm9sIDo6IEEgcG9pbnRlciB0byBhIGNvbnRyb2wgcG9pbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvICAgICAgOjogQSBwb2ludGVyIHRvIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgICAgOjogVGhlIGFkZHJlc3Mgb2YgdGhlIGN1cnJlbnQgd2FsayBjb250ZXh0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFsd2F5cyAwLiAgTmVlZGVkIGZvciB0aGUgaW50ZXJmYWNlIG9ubHkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluIHRoZSBjYXNlIG9mIGEgbm9uLW1vbm90b25vdXMgYXJjLCB3ZSBjb21wdXRlIGRpcmVjdGx5IHRoZSAgICAgICAqLworICAvKiAgICBleHRyZW11bSBjb29yZGluYXRlcywgYXMgaXQgaXMgc3VmZmljaWVudGx5IGZhc3QuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBpbnQKKyAgQkJveF9Db25pY19UbyggRlRfVmVjdG9yKiAgY29udHJvbCwKKyAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgdG8sCisgICAgICAgICAgICAgICAgIFRCQm94X1JlYyogIHVzZXIgKQorICB7CisgICAgLyogd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBgdG8nIHNpbmNlIGl0IGlzIGFsd2F5cyBhbiBgb24nIHBvaW50LCB0aHVzICovCisgICAgLyogd2l0aGluIHRoZSBiYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICBpZiAoIENIRUNLX1goIGNvbnRyb2wsIHVzZXItPmJib3ggKSApCisgICAgICBCQm94X0NvbmljX0NoZWNrKCB1c2VyLT5sYXN0LngsCisgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLT54LAorICAgICAgICAgICAgICAgICAgICAgICAgdG8tPngsCisgICAgICAgICAgICAgICAgICAgICAgICAmdXNlci0+YmJveC54TWluLAorICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXItPmJib3gueE1heCApOworCisgICAgaWYgKCBDSEVDS19ZKCBjb250cm9sLCB1c2VyLT5iYm94ICkgKQorICAgICAgQkJveF9Db25pY19DaGVjayggdXNlci0+bGFzdC55LAorICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC0+eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvLT55LAorICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXItPmJib3gueU1pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyLT5iYm94LnlNYXggKTsKKworICAgIHVzZXItPmxhc3QgPSAqdG87CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQkJveF9DdWJpY19DaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRmluZHMgdGhlIGV4dHJlbWEgb2YgYSAxLWRpbWVuc2lvbmFsIGN1YmljIEJlemllciBjdXJ2ZSBhbmQgICAgICAgICovCisgIC8qICAgIHVwZGF0ZXMgYSBib3VuZGluZyByYW5nZS4gIFRoaXMgdmVyc2lvbiB1c2VzIHNwbGl0dGluZyBiZWNhdXNlIHdlICAqLworICAvKiAgICBkb24ndCB3YW50IHRvIHVzZSBzcXVhcmUgcm9vdHMgYW5kIGV4dHJhIGFjY3VyYWN5LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwMSAgOjogVGhlIHN0YXJ0IGNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHAyICA6OiBUaGUgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgY29udHJvbCBwb2ludC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcDMgIDo6IFRoZSBjb29yZGluYXRlIG9mIHRoZSBzZWNvbmQgY29udHJvbCBwb2ludC4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwNCAgOjogVGhlIGVuZCBjb29yZGluYXRlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtaW4gOjogVGhlIGFkZHJlc3Mgb2YgdGhlIGN1cnJlbnQgbWluaW11bS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heCA6OiBUaGUgYWRkcmVzcyBvZiB0aGUgY3VycmVudCBtYXhpbXVtLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmIDAKKworICBzdGF0aWMgdm9pZAorICBCQm94X0N1YmljX0NoZWNrKCBGVF9Qb3MgICBwMSwKKyAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgcDIsCisgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgIHAzLAorICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICBwNCwKKyAgICAgICAgICAgICAgICAgICAgRlRfUG9zKiAgbWluLAorICAgICAgICAgICAgICAgICAgICBGVF9Qb3MqICBtYXggKQorICB7CisgICAgRlRfUG9zICBxMSwgcTIsIHEzLCBxNDsKKworCisgICAgcTEgPSBwMTsKKyAgICBxMiA9IHAyOworICAgIHEzID0gcDM7CisgICAgcTQgPSBwNDsKKworICAgIC8qIGZvciBhIGNvbmljIHNlZ21lbnQgdG8gcG9zc2libHkgcmVhY2ggbmV3IG1heGltdW0gICAgICovCisgICAgLyogb25lIG9mIGl0cyBvZmYtcG9pbnRzIG11c3QgYmUgYWJvdmUgdGhlIGN1cnJlbnQgdmFsdWUgKi8KKyAgICB3aGlsZSAoIHEyID4gKm1heCB8fCBxMyA+ICptYXggKQorICAgIHsKKyAgICAgIC8qIGRldGVybWluZSB3aGljaCBoYWxmIGNvbnRhaW5zIHRoZSBtYXhpbXVtIGFuZCBzcGxpdCAqLworICAgICAgaWYgKCBxMSArIHEyID4gcTMgKyBxNCApIC8qIGZpcnN0IGhhbGYgKi8KKyAgICAgIHsKKyAgICAgICAgcTQgPSBxNCArIHEzOworICAgICAgICBxMyA9IHEzICsgcTI7CisgICAgICAgIHEyID0gcTIgKyBxMTsKKyAgICAgICAgcTQgPSBxNCArIHEzOworICAgICAgICBxMyA9IHEzICsgcTI7CisgICAgICAgIHE0ID0gKCBxNCArIHEzICkgLyA4OworICAgICAgICBxMyA9IHEzIC8gNDsKKyAgICAgICAgcTIgPSBxMiAvIDI7CisgICAgICB9CisgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgLyogc2Vjb25kIGhhbGYgKi8KKyAgICAgIHsKKyAgICAgICAgcTEgPSBxMSArIHEyOworICAgICAgICBxMiA9IHEyICsgcTM7CisgICAgICAgIHEzID0gcTMgKyBxNDsKKyAgICAgICAgcTEgPSBxMSArIHEyOworICAgICAgICBxMiA9IHEyICsgcTM7CisgICAgICAgIHExID0gKCBxMSArIHEyICkgLyA4OworICAgICAgICBxMiA9IHEyIC8gNDsKKyAgICAgICAgcTMgPSBxMyAvIDI7CisgICAgICB9CisKKyAgICAgIC8qIGNoZWNrIGlmIGVpdGhlciBlbmQgcmVhY2hlZCB0aGUgbWF4aW11bSAqLworICAgICAgaWYgKCBxMSA9PSBxMiAmJiBxMSA+PSBxMyApCisgICAgICB7CisgICAgICAgICptYXggPSBxMTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoIHEzID09IHE0ICYmIHEyIDw9IHE0ICkKKyAgICAgIHsKKyAgICAgICAgKm1heCA9IHE0OworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICBxMSA9IHAxOworICAgIHEyID0gcDI7CisgICAgcTMgPSBwMzsKKyAgICBxNCA9IHA0OworCisgICAgLyogZm9yIGEgY29uaWMgc2VnbWVudCB0byBwb3NzaWJseSByZWFjaCBuZXcgbWluaW11bSAgICAgKi8KKyAgICAvKiBvbmUgb2YgaXRzIG9mZi1wb2ludHMgbXVzdCBiZSBiZWxvdyB0aGUgY3VycmVudCB2YWx1ZSAqLworICAgIHdoaWxlICggcTIgPCAqbWluIHx8IHEzIDwgKm1pbiApCisgICAgeworICAgICAgLyogZGV0ZXJtaW5lIHdoaWNoIGhhbGYgY29udGFpbnMgdGhlIG1pbmltdW0gYW5kIHNwbGl0ICovCisgICAgICBpZiAoIHExICsgcTIgPCBxMyArIHE0ICkgLyogZmlyc3QgaGFsZiAqLworICAgICAgeworICAgICAgICBxNCA9IHE0ICsgcTM7CisgICAgICAgIHEzID0gcTMgKyBxMjsKKyAgICAgICAgcTIgPSBxMiArIHExOworICAgICAgICBxNCA9IHE0ICsgcTM7CisgICAgICAgIHEzID0gcTMgKyBxMjsKKyAgICAgICAgcTQgPSAoIHE0ICsgcTMgKSAvIDg7CisgICAgICAgIHEzID0gcTMgLyA0OworICAgICAgICBxMiA9IHEyIC8gMjsKKyAgICAgIH0KKyAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAvKiBzZWNvbmQgaGFsZiAqLworICAgICAgeworICAgICAgICBxMSA9IHExICsgcTI7CisgICAgICAgIHEyID0gcTIgKyBxMzsKKyAgICAgICAgcTMgPSBxMyArIHE0OworICAgICAgICBxMSA9IHExICsgcTI7CisgICAgICAgIHEyID0gcTIgKyBxMzsKKyAgICAgICAgcTEgPSAoIHExICsgcTIgKSAvIDg7CisgICAgICAgIHEyID0gcTIgLyA0OworICAgICAgICBxMyA9IHEzIC8gMjsKKyAgICAgIH0KKworICAgICAgLyogY2hlY2sgaWYgZWl0aGVyIGVuZCByZWFjaGVkIHRoZSBtaW5pbXVtICovCisgICAgICBpZiAoIHExID09IHEyICYmIHExIDw9IHEzICkKKyAgICAgIHsKKyAgICAgICAgKm1pbiA9IHExOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmICggcTMgPT0gcTQgJiYgcTIgPj0gcTQgKQorICAgICAgeworICAgICAgICAqbWluID0gcTQ7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQorCisjZWxzZQorCisgIHN0YXRpYyB2b2lkCisgIHRlc3RfY3ViaWNfZXh0cmVtYSggRlRfUG9zICAgIHkxLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICB5MiwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgeTMsCisgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgIHk0LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICB1LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyogICBtaW4sCisgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zKiAgIG1heCApCisgIHsKKyAvKiBGVF9Qb3MgICAgYSA9IHk0IC0gMyp5MyArIDMqeTIgLSB5MTsgKi8KKyAgICBGVF9Qb3MgICAgYiA9IHkzIC0gMip5MiArIHkxOworICAgIEZUX1BvcyAgICBjID0geTIgLSB5MTsKKyAgICBGVF9Qb3MgICAgZCA9IHkxOworICAgIEZUX1BvcyAgICB5OworICAgIEZUX0ZpeGVkICB1dTsKKworICAgIEZUX1VOVVNFRCAoIHk0ICk7CisKKworICAgIC8qIFRoZSBwb2x5bm9taWFsIGlzICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICBQKHgpID0gYSp4XjMgKyAzYip4XjIgKyAzYyp4ICsgZCAgLCAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICBkUC9keCA9IDNhKnheMiArIDZiKnggKyAzYyAgICAgICAgIC4gKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIEhvd2V2ZXIsIHdlIGFsc28gaGF2ZSAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgIGRQL2R4KHUpID0gMCAgICAgICAgICAgICAgICAgICAgICAgLCAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogd2hpY2ggaW1wbGllcyBieSBzdWJ0cmFjdGlvbiB0aGF0ICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgUCh1KSA9IGIqdV4yICsgMmMqdSArIGQgICAgICAgICAgICAuICovCisKKyAgICBpZiAoIHUgPiAwICYmIHUgPCAweDEwMDAwTCApCisgICAgeworICAgICAgdXUgPSBGVF9NdWxGaXgoIHUsIHUgKTsKKyAgICAgIHkgID0gZCArIEZUX011bEZpeCggYywgMip1ICkgKyBGVF9NdWxGaXgoIGIsIHV1ICk7CisKKyAgICAgIGlmICggeSA8ICptaW4gKSAqbWluID0geTsKKyAgICAgIGlmICggeSA+ICptYXggKSAqbWF4ID0geTsKKyAgICB9CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIEJCb3hfQ3ViaWNfQ2hlY2soIEZUX1BvcyAgIHkxLAorICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICB5MiwKKyAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgeTMsCisgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgIHk0LAorICAgICAgICAgICAgICAgICAgICBGVF9Qb3MqICBtaW4sCisgICAgICAgICAgICAgICAgICAgIEZUX1BvcyogIG1heCApCisgIHsKKyAgICAvKiBhbHdheXMgY29tcGFyZSBmaXJzdCBhbmQgbGFzdCBwb2ludHMgKi8KKyAgICBpZiAgICAgICggeTEgPCAqbWluICkgICptaW4gPSB5MTsKKyAgICBlbHNlIGlmICggeTEgPiAqbWF4ICkgICptYXggPSB5MTsKKworICAgIGlmICAgICAgKCB5NCA8ICptaW4gKSAgKm1pbiA9IHk0OworICAgIGVsc2UgaWYgKCB5NCA+ICptYXggKSAgKm1heCA9IHk0OworCisgICAgLyogbm93LCB0cnkgdG8gc2VlIGlmIHRoZXJlIGFyZSBzcGxpdCBwb2ludHMgaGVyZSAqLworICAgIGlmICggeTEgPD0geTQgKQorICAgIHsKKyAgICAgIC8qIGZsYXQgb3IgYXNjZW5kaW5nIGFyYyB0ZXN0ICovCisgICAgICBpZiAoIHkxIDw9IHkyICYmIHkyIDw9IHk0ICYmIHkxIDw9IHkzICYmIHkzIDw9IHk0ICkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIC8qIHkxID4geTQgKi8KKyAgICB7CisgICAgICAvKiBkZXNjZW5kaW5nIGFyYyB0ZXN0ICovCisgICAgICBpZiAoIHkxID49IHkyICYmIHkyID49IHk0ICYmIHkxID49IHkzICYmIHkzID49IHk0ICkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIFRoZXJlIGFyZSBzb21lIHNwbGl0IHBvaW50cy4gIEZpbmQgdGhlbS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIFdlIGFscmVhZHkgbWFkZSBzdXJlIHRoYXQgYSwgYiwgYW5kIGMgYmVsb3cgY2Fubm90IGJlIGFsbCB6ZXJvLiAqLworICAgIHsKKyAgICAgIEZUX1BvcyAgICBhID0geTQgLSAzKnkzICsgMyp5MiAtIHkxOworICAgICAgRlRfUG9zICAgIGIgPSB5MyAtIDIqeTIgKyB5MTsKKyAgICAgIEZUX1BvcyAgICBjID0geTIgLSB5MTsKKyAgICAgIEZUX1BvcyAgICBkOworICAgICAgRlRfRml4ZWQgIHQ7CisgICAgICBGVF9JbnQgICAgc2hpZnQ7CisKKworICAgICAgLyogV2UgbmVlZCB0byBzb2x2ZSBgYXheMisyYngrYycgaGVyZSwgd2l0aG91dCBmbG9hdGluZyBwb2ludHMhICAgICAgKi8KKyAgICAgIC8qIFRoZSB0cmljayBpcyB0byBub3JtYWxpemUgdG8gYSBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb24gaW4gb3JkZXIgICovCisgICAgICAvKiB0byB1c2Ugb3VyIDE2LjE2IGZpeGVkLXBvaW50IHJvdXRpbmVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qIFdlIGNvbXB1dGUgRlRfTXVsRml4KGIsYikgYW5kIEZUX011bEZpeChhLGMpIGFmdGVyIG5vcm1hbGl6YXRpb24uICovCisgICAgICAvKiBUaGVzZSB2YWx1ZXMgbXVzdCBmaXQgaW50byBhIHNpbmdsZSAxNi4xNiB2YWx1ZS4gICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qIFdlIG5vcm1hbGl6ZSBhLCBiLCBhbmQgYyB0byBgOC4xNicgZml4ZWQtcG9pbnQgdmFsdWVzIHRvIGVuc3VyZSAgICovCisgICAgICAvKiB0aGF0IHRoZWlyIHByb2R1Y3QgaXMgaGVsZCBpbiBhIGAxNi4xNicgdmFsdWUgaW5jbHVkaW5nIHRoZSBzaWduLiAqLworICAgICAgLyogTmVjZXNzYXJpbHksIHdlIG5lZWQgdG8gc2hpZnQgYGEnLCBgYicsIGFuZCBgYycgc28gdGhhdCB0aGUgbW9zdCAgKi8KKyAgICAgIC8qIHNpZ25pZmljYW50IGJpdCBvZiB0aGVpciBhYnNvbHV0ZSB2YWx1ZXMgaXMgYXQgcG9zaXRpb24gMjIuICAgICAgICovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogVGhpcyBhbHNvIG1lYW5zIHRoYXQgd2UgYXJlIHVzaW5nIDIzIGJpdHMgb2YgcHJlY2lzaW9uIHRvIGNvbXB1dGUgKi8KKyAgICAgIC8qIHRoZSB6ZXJvcywgaW5kZXBlbmRlbnRseSBvZiB0aGUgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsIHBvbHlub21pYWwgICovCisgICAgICAvKiBjb2VmZmljaWVudHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qIFRoaXMgYWxnb3JpdGhtIHNob3VsZCBlbnN1cmUgcmVhc29uYWJseSBhY2N1cmF0ZSB2YWx1ZXMgZm9yIHRoZSAgICovCisgICAgICAvKiB6ZXJvcy4gIE5vdGUgdGhhdCB0aGV5IGFyZSBvbmx5IGV4cHJlc3NlZCB3aXRoIDE2IGJpdHMgd2hlbiAgICAgICAqLworICAgICAgLyogY29tcHV0aW5nIHRoZSBleHRyZW1hICh0aGUgemVyb3MgbmVlZCB0byBiZSBpbiAwLi4xIGV4Y2x1c2l2ZSAgICAgKi8KKyAgICAgIC8qIHRvIGJlIGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgYXJjKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIHNoaWZ0ID0gRlRfTVNCKCBGVF9BQlMoIGEgKSB8IEZUX0FCUyggYiApIHwgRlRfQUJTKCBjICkgKTsKKworICAgICAgaWYgKCBzaGlmdCA+IDIyICkKKyAgICAgIHsKKyAgICAgICAgc2hpZnQgLT0gMjI7CisKKyAgICAgICAgLyogdGhpcyBsb3NlcyBzb21lIGJpdHMgb2YgcHJlY2lzaW9uLCBidXQgd2UgdXNlIDIzIG9mIHRoZW0gKi8KKyAgICAgICAgLyogZm9yIHRoZSBjb21wdXRhdGlvbiBhbnl3YXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgYSA+Pj0gc2hpZnQ7CisgICAgICAgIGIgPj49IHNoaWZ0OworICAgICAgICBjID4+PSBzaGlmdDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgc2hpZnQgPSAyMiAtIHNoaWZ0OworCisgICAgICAgIGEgPDw9IHNoaWZ0OworICAgICAgICBiIDw8PSBzaGlmdDsKKyAgICAgICAgYyA8PD0gc2hpZnQ7CisgICAgICB9CisKKyAgICAgIC8qIGhhbmRsZSBhID09IDAgKi8KKyAgICAgIGlmICggYSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBiICE9IDAgKQorICAgICAgICB7CisgICAgICAgICAgdCA9IC0gRlRfRGl2Rml4KCBjLCBiICkgLyAyOworICAgICAgICAgIHRlc3RfY3ViaWNfZXh0cmVtYSggeTEsIHkyLCB5MywgeTQsIHQsIG1pbiwgbWF4ICk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgLyogc29sdmUgdGhlIGVxdWF0aW9uIG5vdyAqLworICAgICAgICBkID0gRlRfTXVsRml4KCBiLCBiICkgLSBGVF9NdWxGaXgoIGEsIGMgKTsKKyAgICAgICAgaWYgKCBkIDwgMCApCisgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICggZCA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgIC8qIHRoZXJlIGlzIGEgc2luZ2xlIHNwbGl0IHBvaW50IGF0IC1iL2EgKi8KKyAgICAgICAgICB0ID0gLSBGVF9EaXZGaXgoIGIsIGEgKTsKKyAgICAgICAgICB0ZXN0X2N1YmljX2V4dHJlbWEoIHkxLCB5MiwgeTMsIHk0LCB0LCBtaW4sIG1heCApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qIHRoZXJlIGFyZSB0d28gc29sdXRpb25zOyB3ZSBuZWVkIHRvIGZpbHRlciB0aGVtICovCisgICAgICAgICAgZCA9IEZUX1NxcnRGaXhlZCggKEZUX0ludDMyKWQgKTsKKyAgICAgICAgICB0ID0gLSBGVF9EaXZGaXgoIGIgLSBkLCBhICk7CisgICAgICAgICAgdGVzdF9jdWJpY19leHRyZW1hKCB5MSwgeTIsIHkzLCB5NCwgdCwgbWluLCBtYXggKTsKKworICAgICAgICAgIHQgPSAtIEZUX0RpdkZpeCggYiArIGQsIGEgKTsKKyAgICAgICAgICB0ZXN0X2N1YmljX2V4dHJlbWEoIHkxLCB5MiwgeTMsIHk0LCB0LCBtaW4sIG1heCApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQkJveF9DdWJpY19UbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFzIGEgYGN1YmljX3RvJyBlbWl0dGVyIGR1cmluZyAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfRGVjb21wb3NlKCkuICBJdCBjaGVja3MgYSBjdWJpYyBCZXppZXIgY3VydmUgd2l0aCB0aGUgICAqLworICAvKiAgICBjdXJyZW50IGJvdW5kaW5nIGJveCwgYW5kIGNvbXB1dGVzIGl0cyBleHRyZW1hIGlmIG5lY2Vzc2FyeSB0byAgICAgKi8KKyAgLyogICAgdXBkYXRlIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29udHJvbDEgOjogQSBwb2ludGVyIHRvIHRoZSBmaXJzdCBjb250cm9sIHBvaW50LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb250cm9sMiA6OiBBIHBvaW50ZXIgdG8gdGhlIHNlY29uZCBjb250cm9sIHBvaW50LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRvICAgICAgIDo6IEEgcG9pbnRlciB0byB0aGUgZGVzdGluYXRpb24gdmVjdG9yLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHVzZXIgICAgIDo6IFRoZSBhZGRyZXNzIG9mIHRoZSBjdXJyZW50IHdhbGsgY29udGV4dC4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFsd2F5cyAwLiAgTmVlZGVkIGZvciB0aGUgaW50ZXJmYWNlIG9ubHkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluIHRoZSBjYXNlIG9mIGEgbm9uLW1vbm90b25vdXMgYXJjLCB3ZSBkb24ndCBjb21wdXRlIGRpcmVjdGx5ICAgICAqLworICAvKiAgICBleHRyZW11bSBjb29yZGluYXRlcywgd2Ugc3ViZGl2aWRlIGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBpbnQKKyAgQkJveF9DdWJpY19UbyggRlRfVmVjdG9yKiAgY29udHJvbDEsCisgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIGNvbnRyb2wyLAorICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICB0bywKKyAgICAgICAgICAgICAgICAgVEJCb3hfUmVjKiAgdXNlciApCisgIHsKKyAgICAvKiB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIGB0bycgc2luY2UgaXQgaXMgYWx3YXlzIGFuIGBvbicgcG9pbnQsIHRodXMgKi8KKyAgICAvKiB3aXRoaW4gdGhlIGJib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIGlmICggQ0hFQ0tfWCggY29udHJvbDEsIHVzZXItPmJib3ggKSB8fAorICAgICAgICAgQ0hFQ0tfWCggY29udHJvbDIsIHVzZXItPmJib3ggKSApCisgICAgICBCQm94X0N1YmljX0NoZWNrKCB1c2VyLT5sYXN0LngsCisgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sMS0+eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wyLT54LAorICAgICAgICAgICAgICAgICAgICAgICAgdG8tPngsCisgICAgICAgICAgICAgICAgICAgICAgICAmdXNlci0+YmJveC54TWluLAorICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXItPmJib3gueE1heCApOworCisgICAgaWYgKCBDSEVDS19ZKCBjb250cm9sMSwgdXNlci0+YmJveCApIHx8CisgICAgICAgICBDSEVDS19ZKCBjb250cm9sMiwgdXNlci0+YmJveCApICkKKyAgICAgIEJCb3hfQ3ViaWNfQ2hlY2soIHVzZXItPmxhc3QueSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wxLT55LAorICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbDItPnksCisgICAgICAgICAgICAgICAgICAgICAgICB0by0+eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyLT5iYm94LnlNaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAmdXNlci0+YmJveC55TWF4ICk7CisKKyAgICB1c2VyLT5sYXN0ID0gKnRvOworCisgICAgcmV0dXJuIDA7CisgIH0KKworRlRfREVGSU5FX09VVExJTkVfRlVOQ1MoYmJveF9pbnRlcmZhY2UsCisgICAgKEZUX091dGxpbmVfTW92ZVRvX0Z1bmMpIEJCb3hfTW92ZV9UbywKKyAgICAoRlRfT3V0bGluZV9MaW5lVG9fRnVuYykgQkJveF9Nb3ZlX1RvLAorICAgIChGVF9PdXRsaW5lX0NvbmljVG9fRnVuYylCQm94X0NvbmljX1RvLAorICAgIChGVF9PdXRsaW5lX0N1YmljVG9fRnVuYylCQm94X0N1YmljX1RvLAorICAgIDAsIDAKKyAgKQorCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRiYm94LmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfR2V0X0JCb3goIEZUX091dGxpbmUqICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9CQm94ICAgICAqYWJib3ggKQorICB7CisgICAgRlRfQkJveCAgICAgY2JveDsKKyAgICBGVF9CQm94ICAgICBiYm94OworICAgIEZUX1ZlY3RvciogIHZlYzsKKyAgICBGVF9VU2hvcnQgICBuOworCisKKyAgICBpZiAoICFhYmJveCApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGlmICggIW91dGxpbmUgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX091dGxpbmUgKTsKKworICAgIC8qIGlmIG91dGxpbmUgaXMgZW1wdHksIHJldHVybiAoMCwwLDAsMCkgKi8KKyAgICBpZiAoIG91dGxpbmUtPm5fcG9pbnRzID09IDAgfHwgb3V0bGluZS0+bl9jb250b3VycyA8PSAwICkKKyAgICB7CisgICAgICBhYmJveC0+eE1pbiA9IGFiYm94LT54TWF4ID0gMDsKKyAgICAgIGFiYm94LT55TWluID0gYWJib3gtPnlNYXggPSAwOworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogV2UgY29tcHV0ZSB0aGUgY29udHJvbCBib3ggYXMgd2VsbCBhcyB0aGUgYm91bmRpbmcgYm94IG9mICAqLworICAgIC8qIGFsbCBgb24nIHBvaW50cyBpbiB0aGUgb3V0bGluZS4gIFRoZW4sIGlmIHRoZSB0d28gYm94ZXMgICAgKi8KKyAgICAvKiBjb2luY2lkZSwgd2UgZXhpdCBpbW1lZGlhdGVseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICB2ZWMgPSBvdXRsaW5lLT5wb2ludHM7CisgICAgYmJveC54TWluID0gYmJveC54TWF4ID0gY2JveC54TWluID0gY2JveC54TWF4ID0gdmVjLT54OworICAgIGJib3gueU1pbiA9IGJib3gueU1heCA9IGNib3gueU1pbiA9IGNib3gueU1heCA9IHZlYy0+eTsKKyAgICB2ZWMrKzsKKworICAgIGZvciAoIG4gPSAxOyBuIDwgb3V0bGluZS0+bl9wb2ludHM7IG4rKyApCisgICAgeworICAgICAgRlRfUG9zICB4ID0gdmVjLT54OworICAgICAgRlRfUG9zICB5ID0gdmVjLT55OworCisKKyAgICAgIC8qIHVwZGF0ZSBjb250cm9sIGJveCAqLworICAgICAgaWYgKCB4IDwgY2JveC54TWluICkgY2JveC54TWluID0geDsKKyAgICAgIGlmICggeCA+IGNib3gueE1heCApIGNib3gueE1heCA9IHg7CisKKyAgICAgIGlmICggeSA8IGNib3gueU1pbiApIGNib3gueU1pbiA9IHk7CisgICAgICBpZiAoIHkgPiBjYm94LnlNYXggKSBjYm94LnlNYXggPSB5OworCisgICAgICBpZiAoIEZUX0NVUlZFX1RBRyggb3V0bGluZS0+dGFnc1tuXSApID09IEZUX0NVUlZFX1RBR19PTiApCisgICAgICB7CisgICAgICAgIC8qIHVwZGF0ZSBiYm94IGZvciBgb24nIHBvaW50cyBvbmx5ICovCisgICAgICAgIGlmICggeCA8IGJib3gueE1pbiApIGJib3gueE1pbiA9IHg7CisgICAgICAgIGlmICggeCA+IGJib3gueE1heCApIGJib3gueE1heCA9IHg7CisKKyAgICAgICAgaWYgKCB5IDwgYmJveC55TWluICkgYmJveC55TWluID0geTsKKyAgICAgICAgaWYgKCB5ID4gYmJveC55TWF4ICkgYmJveC55TWF4ID0geTsKKyAgICAgIH0KKworICAgICAgdmVjKys7CisgICAgfQorCisgICAgLyogdGVzdCB0d28gYm94ZXMgZm9yIGVxdWFsaXR5ICovCisgICAgaWYgKCBjYm94LnhNaW4gPCBiYm94LnhNaW4gfHwgY2JveC54TWF4ID4gYmJveC54TWF4IHx8CisgICAgICAgICBjYm94LnlNaW4gPCBiYm94LnlNaW4gfHwgY2JveC55TWF4ID4gYmJveC55TWF4ICkKKyAgICB7CisgICAgICAvKiB0aGUgdHdvIGJveGVzIGFyZSBkaWZmZXJlbnQsIG5vdyB3YWxrIG92ZXIgdGhlIG91dGxpbmUgdG8gKi8KKyAgICAgIC8qIGdldCB0aGUgQmV6aWVyIGFyYyBleHRyZW1hLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICBGVF9FcnJvciAgIGVycm9yOworICAgICAgVEJCb3hfUmVjICB1c2VyOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKyAgICAgIEZUX091dGxpbmVfRnVuY3MgYmJveF9pbnRlcmZhY2U7CisgICAgICBJbml0X0NsYXNzX2Jib3hfaW50ZXJmYWNlKCZiYm94X2ludGVyZmFjZSk7CisjZW5kaWYKKworICAgICAgdXNlci5iYm94ID0gYmJveDsKKworICAgICAgZXJyb3IgPSBGVF9PdXRsaW5lX0RlY29tcG9zZSggb3V0bGluZSwgJmJib3hfaW50ZXJmYWNlLCAmdXNlciApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIHJldHVybiBlcnJvcjsKKworICAgICAgKmFiYm94ID0gdXNlci5iYm94OworICAgIH0KKyAgICBlbHNlCisgICAgICAqYWJib3ggPSBiYm94OworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0YmRmLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRiZGYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGJjNWZjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0YmRmLmMKQEAgLTAsMCArMSw4OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRiZGYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgYWNjZXNzaW5nIEJERi1zcGVjaWZpYyBzdHJpbmdzIChib2R5KS4gICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLTIwMDQsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmJkZi5oIgorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGJkZi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9HZXRfQkRGX0NoYXJzZXRfSUQoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgKmFjaGFyc2V0X2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqYWNoYXJzZXRfcmVnaXN0cnkgKQorICB7CisgICAgRlRfRXJyb3IgICAgIGVycm9yOworICAgIGNvbnN0IGNoYXIqICBlbmNvZGluZyA9IE5VTEw7CisgICAgY29uc3QgY2hhciogIHJlZ2lzdHJ5ID0gTlVMTDsKKworCisgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGlmICggZmFjZSApCisgICAgeworICAgICAgRlRfU2VydmljZV9CREYgIHNlcnZpY2U7CisKKworICAgICAgRlRfRkFDRV9GSU5EX1NFUlZJQ0UoIGZhY2UsIHNlcnZpY2UsIEJERiApOworCisgICAgICBpZiAoIHNlcnZpY2UgJiYgc2VydmljZS0+Z2V0X2NoYXJzZXRfaWQgKQorICAgICAgICBlcnJvciA9IHNlcnZpY2UtPmdldF9jaGFyc2V0X2lkKCBmYWNlLCAmZW5jb2RpbmcsICZyZWdpc3RyeSApOworICAgIH0KKworICAgIGlmICggYWNoYXJzZXRfZW5jb2RpbmcgKQorICAgICAgKmFjaGFyc2V0X2VuY29kaW5nID0gZW5jb2Rpbmc7CisKKyAgICBpZiAoIGFjaGFyc2V0X3JlZ2lzdHJ5ICkKKyAgICAgICphY2hhcnNldF9yZWdpc3RyeSA9IHJlZ2lzdHJ5OworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0YmRmLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldF9CREZfUHJvcGVydHkoIEZUX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAgICAgIHByb3BfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgQkRGX1Byb3BlcnR5UmVjICAqYXByb3BlcnR5ICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGFwcm9wZXJ0eS0+dHlwZSA9IEJERl9QUk9QRVJUWV9UWVBFX05PTkU7CisKKyAgICBpZiAoIGZhY2UgKQorICAgIHsKKyAgICAgIEZUX1NlcnZpY2VfQkRGICBzZXJ2aWNlOworCisKKyAgICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBCREYgKTsKKworICAgICAgaWYgKCBzZXJ2aWNlICYmIHNlcnZpY2UtPmdldF9wcm9wZXJ0eSApCisgICAgICAgIGVycm9yID0gc2VydmljZS0+Z2V0X3Byb3BlcnR5KCBmYWNlLCBwcm9wX25hbWUsIGFwcm9wZXJ0eSApOworICAgIH0KKworICAgIHJldHVybiAgZXJyb3I7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGNhbGMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGNhbGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzc3M2NmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0Y2FsYy5jCkBAIC0wLDAgKzEsOTcyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGNhbGMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQXJpdGhtZXRpYyBjb21wdXRhdGlvbnMgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNiwgMjAwOCwgMjAxMi0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3VwcG9ydCBmb3IgMS1jb21wbGVtZW50IGFyaXRobWV0aWMgaGFzIGJlZW4gdG90YWxseSBkcm9wcGVkIGluIHRoaXMgICovCisgIC8qIHJlbGVhc2UuICBZb3UgY2FuIHN0aWxsIHdyaXRlIHlvdXIgb3duIGNvZGUgaWYgeW91IG5lZWQgaXQuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJbXBsZW1lbnRpbmcgYmFzaWMgY29tcHV0YXRpb24gcm91dGluZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZUX011bERpdigpLCBGVF9NdWxGaXgoKSwgRlRfRGl2Rml4KCksIEZUX1JvdW5kRml4KCksIEZUX0NlaWxGaXgoKSwgICAqLworICAvKiBhbmQgRlRfRmxvb3JGaXgoKSBhcmUgZGVjbGFyZWQgaW4gZnJlZXR5cGUuaC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGdseXBoLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKworCisvKiB3ZSBuZWVkIHRvIGVtdWxhdGUgYSA2NC1iaXQgZGF0YSB0eXBlIGlmIGEgcmVhbCBvbmUgaXNuJ3QgYXZhaWxhYmxlICovCisKKyNpZm5kZWYgRlRfTE9ORzY0CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX0ludDY0XworICB7CisgICAgRlRfVUludDMyICBsbzsKKyAgICBGVF9VSW50MzIgIGhpOworCisgIH0gRlRfSW50NjQ7CisKKyNlbmRpZiAvKiAhRlRfTE9ORzY0ICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9jYWxjCisKKworICAvKiBUaGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciAqLworICAvKiBGVF9MT05HNjQgaXMgZGVmaW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0ZpeGVkICkKKyAgRlRfUm91bmRGaXgoIEZUX0ZpeGVkICBhICkKKyAgeworICAgIHJldHVybiAoIGEgPj0gMCApID8gICAoIGEgKyAweDgwMDBMICkgJiB+MHhGRkZGTAorICAgICAgICAgICAgICAgICAgICAgIDogLSgoLWEgKyAweDgwMDBMICkgJiB+MHhGRkZGTCApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9GaXhlZCApCisgIEZUX0NlaWxGaXgoIEZUX0ZpeGVkICBhICkKKyAgeworICAgIHJldHVybiAoIGEgPj0gMCApID8gICAoIGEgKyAweEZGRkZMICkgJiB+MHhGRkZGTAorICAgICAgICAgICAgICAgICAgICAgIDogLSgoLWEgKyAweEZGRkZMICkgJiB+MHhGRkZGTCApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9GaXhlZCApCisgIEZUX0Zsb29yRml4KCBGVF9GaXhlZCAgYSApCisgIHsKKyAgICByZXR1cm4gKCBhID49IDAgKSA/ICAgYSAmIH4weEZGRkZMCisgICAgICAgICAgICAgICAgICAgICAgOiAtKCgtYSkgJiB+MHhGRkZGTCApOworICB9CisKKworICBGVF9CQVNFX0RFRiAoIEZUX0ludCApCisgIEZUX01TQiggRlRfVUludDMyIHogKQorICB7CisgICAgRlRfSW50IHNoaWZ0ID0gMDsKKworICAgIC8qIGRldGVybWluZSBtc2IgYml0IGluZGV4IGluIGBzaGlmdCcgKi8KKyAgICBpZiAoIHogPj0gKCAxTCA8PCAxNiApICkKKyAgICB7CisgICAgICB6ICAgICA+Pj0gMTY7CisgICAgICBzaGlmdCAgKz0gMTY7CisgICAgfQorICAgIGlmICggeiA+PSAoIDFMIDw8IDggKSApCisgICAgeworICAgICAgeiAgICAgPj49IDg7CisgICAgICBzaGlmdCAgKz0gODsKKyAgICB9CisgICAgaWYgKCB6ID49ICggMUwgPDwgNCApICkKKyAgICB7CisgICAgICB6ICAgICA+Pj0gNDsKKyAgICAgIHNoaWZ0ICArPSA0OworICAgIH0KKyAgICBpZiAoIHogPj0gKCAxTCA8PCAyICkgKQorICAgIHsKKyAgICAgIHogICAgID4+PSAyOworICAgICAgc2hpZnQgICs9IDI7CisgICAgfQorICAgIGlmICggeiA+PSAoIDFMIDw8IDEgKSApCisgICAgeworICAgICAgeiAgICAgPj49IDE7CisgICAgICBzaGlmdCAgKz0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gc2hpZnQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRjYWxjLmggKi8KKworICBGVF9CQVNFX0RFRiggRlRfRml4ZWQgKQorICBGVF9IeXBvdCggRlRfRml4ZWQgIHgsCisgICAgICAgICAgICBGVF9GaXhlZCAgeSApCisgIHsKKyAgICBGVF9WZWN0b3IgIHY7CisKKworICAgIHYueCA9IHg7CisgICAgdi55ID0geTsKKworICAgIHJldHVybiBGVF9WZWN0b3JfTGVuZ3RoKCAmdiApOworICB9CisKKworI2lmZGVmIEZUX0xPTkc2NAorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfTG9uZyApCisgIEZUX011bERpdiggRlRfTG9uZyAgYSwKKyAgICAgICAgICAgICBGVF9Mb25nICBiLAorICAgICAgICAgICAgIEZUX0xvbmcgIGMgKQorICB7CisgICAgRlRfSW50ICAgczsKKyAgICBGVF9Mb25nICBkOworCisKKyAgICBzID0gMTsKKyAgICBpZiAoIGEgPCAwICkgeyBhID0gLWE7IHMgPSAtMTsgfQorICAgIGlmICggYiA8IDAgKSB7IGIgPSAtYjsgcyA9IC1zOyB9CisgICAgaWYgKCBjIDwgMCApIHsgYyA9IC1jOyBzID0gLXM7IH0KKworICAgIGQgPSAoRlRfTG9uZykoIGMgPiAwID8gKCAoRlRfSW50NjQpYSAqIGIgKyAoIGMgPj4gMSApICkgLyBjCisgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDdGRkZGRkZGTCApOworCisgICAgcmV0dXJuICggcyA+IDAgKSA/IGQgOiAtZDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGNhbGMuaCAqLworCisgIEZUX0JBU0VfREVGKCBGVF9Mb25nICkKKyAgRlRfTXVsRGl2X05vX1JvdW5kKCBGVF9Mb25nICBhLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgIGIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgYyApCisgIHsKKyAgICBGVF9JbnQgICBzOworICAgIEZUX0xvbmcgIGQ7CisKKworICAgIHMgPSAxOworICAgIGlmICggYSA8IDAgKSB7IGEgPSAtYTsgcyA9IC0xOyB9CisgICAgaWYgKCBiIDwgMCApIHsgYiA9IC1iOyBzID0gLXM7IH0KKyAgICBpZiAoIGMgPCAwICkgeyBjID0gLWM7IHMgPSAtczsgfQorCisgICAgZCA9IChGVF9Mb25nKSggYyA+IDAgPyAoRlRfSW50NjQpYSAqIGIgLyBjCisgICAgICAgICAgICAgICAgICAgICAgICAgOiAweDdGRkZGRkZGTCApOworCisgICAgcmV0dXJuICggcyA+IDAgKSA/IGQgOiAtZDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisgICAvKiBpZiBkZWZpbmVkIEZUX01VTEZJWF9JTkxJTkVELCB1c2UgdGhlIGlubGluZSBGVF9NVUxGSVhfQVNTRU1CTEVSIGZ1bmN0aW9uLiAqLworI2lmbmRlZiBGVF9NVUxGSVhfSU5MSU5FRAorICBGVF9FWFBPUlRfREVGKCBGVF9Mb25nICkKKyAgRlRfTXVsRml4KCBGVF9Mb25nICBhLAorICAgICAgICAgICAgIEZUX0xvbmcgIGIgKQorICB7CisjaWZkZWYgRlRfTVVMRklYX0FTU0VNQkxFUgorCisgICAgcmV0dXJuIEZUX01VTEZJWF9BU1NFTUJMRVIoIGEsIGIgKTsKKworI2Vsc2UKKworICAgIEZUX0ludCAgIHMgPSAxOworICAgIEZUX0xvbmcgIGM7CisKKworICAgIGlmICggYSA8IDAgKQorICAgIHsKKyAgICAgIGEgPSAtYTsKKyAgICAgIHMgPSAtMTsKKyAgICB9CisKKyAgICBpZiAoIGIgPCAwICkKKyAgICB7CisgICAgICBiID0gLWI7CisgICAgICBzID0gLXM7CisgICAgfQorCisgICAgYyA9IChGVF9Mb25nKSggKCAoRlRfSW50NjQpYSAqIGIgKyAweDgwMDBMICkgPj4gMTYgKTsKKworICAgIHJldHVybiAoIHMgPiAwICkgPyBjIDogLWM7CisKKyNlbmRpZiAvKiBGVF9NVUxGSVhfQVNTRU1CTEVSICovCisgIH0KKyAgI2VuZGlmLyogRlRfTVVMRklYX0lOTElORUQgKi8KKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9Mb25nICkKKyAgRlRfRGl2Rml4KCBGVF9Mb25nICBhLAorICAgICAgICAgICAgIEZUX0xvbmcgIGIgKQorICB7CisgICAgRlRfSW50MzIgICBzOworICAgIEZUX1VJbnQzMiAgcTsKKworCisgICAgcyA9IDE7CisgICAgaWYgKCBhIDwgMCApCisgICAgeworICAgICAgYSA9IC1hOworICAgICAgcyA9IC0xOworICAgIH0KKyAgICBpZiAoIGIgPCAwICkKKyAgICB7CisgICAgICBiID0gLWI7CisgICAgICBzID0gLXM7CisgICAgfQorCisgICAgaWYgKCBiID09IDAgKQorICAgICAgLyogY2hlY2sgZm9yIGRpdmlzaW9uIGJ5IDAgKi8KKyAgICAgIHEgPSAweDdGRkZGRkZGTDsKKyAgICBlbHNlCisgICAgICAvKiBjb21wdXRlIHJlc3VsdCBkaXJlY3RseSAqLworICAgICAgcSA9IChGVF9VSW50MzIpKCAoICggKEZUX1VJbnQ2NClhIDw8IDE2ICkgKyAoIGIgPj4gMSApICkgLyBiICk7CisKKyAgICByZXR1cm4gKCBzIDwgMCA/IC0oRlRfTG9uZylxIDogKEZUX0xvbmcpcSApOworICB9CisKKworI2Vsc2UgLyogIUZUX0xPTkc2NCAqLworCisKKyAgc3RhdGljIHZvaWQKKyAgZnRfbXVsdG82NCggRlRfVUludDMyICB4LAorICAgICAgICAgICAgICBGVF9VSW50MzIgIHksCisgICAgICAgICAgICAgIEZUX0ludDY0ICAqeiApCisgIHsKKyAgICBGVF9VSW50MzIgIGxvMSwgaGkxLCBsbzIsIGhpMiwgbG8sIGhpLCBpMSwgaTI7CisKKworICAgIGxvMSA9IHggJiAweDAwMDBGRkZGVTsgIGhpMSA9IHggPj4gMTY7CisgICAgbG8yID0geSAmIDB4MDAwMEZGRkZVOyAgaGkyID0geSA+PiAxNjsKKworICAgIGxvID0gbG8xICogbG8yOworICAgIGkxID0gbG8xICogaGkyOworICAgIGkyID0gbG8yICogaGkxOworICAgIGhpID0gaGkxICogaGkyOworCisgICAgLyogQ2hlY2sgY2Fycnkgb3ZlcmZsb3cgb2YgaTEgKyBpMiAqLworICAgIGkxICs9IGkyOworICAgIGhpICs9IChGVF9VSW50MzIpKCBpMSA8IGkyICkgPDwgMTY7CisKKyAgICBoaSArPSBpMSA+PiAxNjsKKyAgICBpMSAgPSBpMSA8PCAxNjsKKworICAgIC8qIENoZWNrIGNhcnJ5IG92ZXJmbG93IG9mIGkxICsgbG8gKi8KKyAgICBsbyArPSBpMTsKKyAgICBoaSArPSAoIGxvIDwgaTEgKTsKKworICAgIHotPmxvID0gbG87CisgICAgei0+aGkgPSBoaTsKKyAgfQorCisKKyAgc3RhdGljIEZUX1VJbnQzMgorICBmdF9kaXY2NGJ5MzIoIEZUX1VJbnQzMiAgaGksCisgICAgICAgICAgICAgICAgRlRfVUludDMyICBsbywKKyAgICAgICAgICAgICAgICBGVF9VSW50MzIgIHkgKQorICB7CisgICAgRlRfVUludDMyICByLCBxOworICAgIEZUX0ludCAgICAgaTsKKworCisgICAgcSA9IDA7CisgICAgciA9IGhpOworCisgICAgaWYgKCByID49IHkgKQorICAgICAgcmV0dXJuIChGVF9VSW50MzIpMHg3RkZGRkZGRkw7CisKKyAgICBpID0gMzI7CisgICAgZG8KKyAgICB7CisgICAgICByIDw8PSAxOworICAgICAgcSA8PD0gMTsKKyAgICAgIHIgIHw9IGxvID4+IDMxOworCisgICAgICBpZiAoIHIgPj0geSApCisgICAgICB7CisgICAgICAgIHIgLT0geTsKKyAgICAgICAgcSB8PSAxOworICAgICAgfQorICAgICAgbG8gPDw9IDE7CisgICAgfSB3aGlsZSAoIC0taSApOworCisgICAgcmV0dXJuIHE7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIEZUX0FkZDY0KCBGVF9JbnQ2NCogIHgsCisgICAgICAgICAgICBGVF9JbnQ2NCogIHksCisgICAgICAgICAgICBGVF9JbnQ2NCAgKnogKQorICB7CisgICAgcmVnaXN0ZXIgRlRfVUludDMyICBsbywgaGk7CisKKworICAgIGxvID0geC0+bG8gKyB5LT5sbzsKKyAgICBoaSA9IHgtPmhpICsgeS0+aGkgKyAoIGxvIDwgeC0+bG8gKTsKKworICAgIHotPmxvID0gbG87CisgICAgei0+aGkgPSBoaTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgLyogVGhlIEZUX011bERpdiBmdW5jdGlvbiBoYXMgYmVlbiBvcHRpbWl6ZWQgdGhhbmtzIHRvIGlkZWFzIGZyb20gICAgICAqLworICAvKiBHcmFoYW0gQXNoZXIuICBUaGUgdHJpY2sgaXMgdG8gb3B0aW1pemUgY29tcHV0YXRpb24gd2hlbiBldmVyeXRoaW5nICovCisgIC8qIGZpdHMgd2l0aGluIDMyLWJpdHMgKGEgcmF0aGVyIGNvbW1vbiBjYXNlKS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgd2UgY29tcHV0ZSAnYSpiK2MvMicsIHRoZW4gZGl2aWRlIGl0IGJ5ICdjJy4gKHBvc2l0aXZlIHZhbHVlcykgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIDQ2MzQwIGlzIEZMT09SKFNRUlQoMl4zMS0xKSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBpZiAoIGEgPD0gNDYzNDAgJiYgYiA8PSA0NjM0MCApIHRoZW4gKCBhKmIgPD0gMHg3RkZFQTgxMCApICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgMHg3RkZGRkZGRiAtIDB4N0ZGRUE4MTAgPSAweDE1N0YwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIGlmICggYyA8IDB4MTU3RjAqMiApIHRoZW4gKCBhKmIrYy8yIDw9IDB4N0ZGRkZGRkYgKSAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBhbmQgMioweDE1N0YwID0gMTc2MDk2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0xvbmcgKQorICBGVF9NdWxEaXYoIEZUX0xvbmcgIGEsCisgICAgICAgICAgICAgRlRfTG9uZyAgYiwKKyAgICAgICAgICAgICBGVF9Mb25nICBjICkKKyAgeworICAgIGxvbmcgIHM7CisKKworICAgIC8qIFhYWDogdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhbGxvdyA2NC1iaXQgYXJndW1lbnRzICovCisgICAgaWYgKCBhID09IDAgfHwgYiA9PSBjICkKKyAgICAgIHJldHVybiBhOworCisgICAgcyAgPSBhOyBhID0gRlRfQUJTKCBhICk7CisgICAgcyBePSBiOyBiID0gRlRfQUJTKCBiICk7CisgICAgcyBePSBjOyBjID0gRlRfQUJTKCBjICk7CisKKyAgICBpZiAoIGEgPD0gNDYzNDBMICYmIGIgPD0gNDYzNDBMICYmIGMgPD0gMTc2MDk1TCAmJiBjID4gMCApCisgICAgICBhID0gKCBhICogYiArICggYyA+PiAxICkgKSAvIGM7CisKKyAgICBlbHNlIGlmICggKEZUX0ludDMyKWMgPiAwICkKKyAgICB7CisgICAgICBGVF9JbnQ2NCAgdGVtcCwgdGVtcDI7CisKKworICAgICAgZnRfbXVsdG82NCggKEZUX0ludDMyKWEsIChGVF9JbnQzMiliLCAmdGVtcCApOworCisgICAgICB0ZW1wMi5oaSA9IDA7CisgICAgICB0ZW1wMi5sbyA9IChGVF9VSW50MzIpKGMgPj4gMSk7CisgICAgICBGVF9BZGQ2NCggJnRlbXAsICZ0ZW1wMiwgJnRlbXAgKTsKKyAgICAgIGEgPSBmdF9kaXY2NGJ5MzIoIHRlbXAuaGksIHRlbXAubG8sIChGVF9JbnQzMiljICk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGEgPSAweDdGRkZGRkZGTDsKKworICAgIHJldHVybiAoIHMgPCAwID8gLWEgOiBhICk7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9Mb25nICkKKyAgRlRfTXVsRGl2X05vX1JvdW5kKCBGVF9Mb25nICBhLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgIGIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgYyApCisgIHsKKyAgICBsb25nICBzOworCisKKyAgICBpZiAoIGEgPT0gMCB8fCBiID09IGMgKQorICAgICAgcmV0dXJuIGE7CisKKyAgICBzICA9IGE7IGEgPSBGVF9BQlMoIGEgKTsKKyAgICBzIF49IGI7IGIgPSBGVF9BQlMoIGIgKTsKKyAgICBzIF49IGM7IGMgPSBGVF9BQlMoIGMgKTsKKworICAgIGlmICggYSA8PSA0NjM0MEwgJiYgYiA8PSA0NjM0MEwgJiYgYyA+IDAgKQorICAgICAgYSA9IGEgKiBiIC8gYzsKKworICAgIGVsc2UgaWYgKCAoRlRfSW50MzIpYyA+IDAgKQorICAgIHsKKyAgICAgIEZUX0ludDY0ICB0ZW1wOworCisKKyAgICAgIGZ0X211bHRvNjQoIChGVF9JbnQzMilhLCAoRlRfSW50MzIpYiwgJnRlbXAgKTsKKyAgICAgIGEgPSBmdF9kaXY2NGJ5MzIoIHRlbXAuaGksIHRlbXAubG8sIChGVF9JbnQzMiljICk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGEgPSAweDdGRkZGRkZGTDsKKworICAgIHJldHVybiAoIHMgPCAwID8gLWEgOiBhICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworICAjaWZuZGVmIEZUX01VTEZJWF9JTkxJTkVECisgIEZUX0VYUE9SVF9ERUYoIEZUX0xvbmcgKQorICBGVF9NdWxGaXgoIEZUX0xvbmcgIGEsCisgICAgICAgICAgICAgRlRfTG9uZyAgYiApCisgIHsKKyNpZmRlZiBGVF9NVUxGSVhfQVNTRU1CTEVSCisKKyAgICByZXR1cm4gRlRfTVVMRklYX0FTU0VNQkxFUiggYSwgYiApOworCisjZWxpZiAwCisKKyAgICAvKgorICAgICAqICBUaGlzIGNvZGUgaXMgbm9ucG9ydGFibGUuICBTZWUgY29tbWVudCBiZWxvdy4KKyAgICAgKgorICAgICAqICBIb3dldmVyLCBvbiBhIHBsYXRmb3JtIHdoZXJlIHJpZ2h0LXNoaWZ0IG9mIGEgc2lnbmVkIHF1YW50aXR5IGZpbGxzCisgICAgICogIHRoZSBsZWZ0bW9zdCBiaXRzIGJ5IGNvcHlpbmcgdGhlIHNpZ24gYml0LCBpdCBtaWdodCBiZSBmYXN0ZXIuCisgICAgICovCisKKyAgICBGVF9Mb25nICAgc2EsIHNiOworICAgIEZUX1VMb25nICB1YSwgdWI7CisKKworICAgIGlmICggYSA9PSAwIHx8IGIgPT0gMHgxMDAwMEwgKQorICAgICAgcmV0dXJuIGE7CisKKyAgICAvKgorICAgICAqICBUaGlzIGlzIGEgY2xldmVyIHdheSBvZiBjb252ZXJ0aW5nIGEgc2lnbmVkIG51bWJlciBgYScgaW50byBpdHMKKyAgICAgKiAgYWJzb2x1dGUgdmFsdWUgKHN0b3JlZCBiYWNrIGludG8gYGEnKSBhbmQgaXRzIHNpZ24uICBUaGUgc2lnbiBpcworICAgICAqICBzdG9yZWQgaW4gYHNhJzsgMCBtZWFucyBgYScgd2FzIHBvc2l0aXZlIG9yIHplcm8sIGFuZCAtMSBtZWFucyBgYScKKyAgICAgKiAgd2FzIG5lZ2F0aXZlLiAgKFNpbWlsYXJseSBmb3IgYGInIGFuZCBgc2InKS4KKyAgICAgKgorICAgICAqICBVbmZvcnR1bmF0ZWx5LCBpdCBkb2Vzbid0IHdvcmsgKGF0IGxlYXN0IG5vdCBwb3J0YWJseSkuCisgICAgICoKKyAgICAgKiAgSXQgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCByaWdodC1zaGlmdCBvbiBhIG5lZ2F0aXZlIHNpZ25lZCB2YWx1ZQorICAgICAqICBmaWxscyB0aGUgbGVmdG1vc3QgYml0cyBieSBjb3B5aW5nIHRoZSBzaWduIGJpdC4gIFRoaXMgaXMgd3JvbmcuCisgICAgICogIEFjY29yZGluZyB0byBLJlIgMm5kIGVkLCBzZWN0aW9uIGBBNy44IFNoaWZ0IE9wZXJhdG9ycycgb24gcGFnZSAyMDYsCisgICAgICogIHRoZSByZXN1bHQgb2YgcmlnaHQtc2hpZnQgb2YgYSBuZWdhdGl2ZSBzaWduZWQgdmFsdWUgaXMKKyAgICAgKiAgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIEF0IGxlYXN0IG9uZSBpbXBsZW1lbnRhdGlvbiBmaWxscyB0aGUKKyAgICAgKiAgbGVmdG1vc3QgYml0cyB3aXRoIDBzIChpLmUuLCBpdCBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGFuIHVuc2lnbmVkCisgICAgICogIHJpZ2h0IHNoaWZ0KS4gIFRoaXMgbWVhbnMgdGhhdCB3aGVuIGBhJyBpcyBuZWdhdGl2ZSwgYHNhJyBlbmRzIHVwCisgICAgICogIHdpdGggdGhlIHZhbHVlIDEgcmF0aGVyIHRoYW4gLTEuICBBZnRlciB0aGF0LCBldmVyeXRoaW5nIGVsc2UgZ29lcworICAgICAqICB3cm9uZy4KKyAgICAgKi8KKyAgICBzYSA9ICggYSA+PiAoIHNpemVvZiAoIGEgKSAqIDggLSAxICkgKTsKKyAgICBhICA9ICggYSBeIHNhICkgLSBzYTsKKyAgICBzYiA9ICggYiA+PiAoIHNpemVvZiAoIGIgKSAqIDggLSAxICkgKTsKKyAgICBiICA9ICggYiBeIHNiICkgLSBzYjsKKworICAgIHVhID0gKEZUX1VMb25nKWE7CisgICAgdWIgPSAoRlRfVUxvbmcpYjsKKworICAgIGlmICggdWEgPD0gMjA0OCAmJiB1YiA8PSAxMDQ4NTc2TCApCisgICAgICB1YSA9ICggdWEgKiB1YiArIDB4ODAwMFUgKSA+PiAxNjsKKyAgICBlbHNlCisgICAgeworICAgICAgRlRfVUxvbmcgIGFsID0gdWEgJiAweEZGRkZVOworCisKKyAgICAgIHVhID0gKCB1YSA+PiAxNiApICogdWIgKyAgYWwgKiAoIHViID4+IDE2ICkgKworICAgICAgICAgICAoICggYWwgKiAoIHViICYgMHhGRkZGVSApICsgMHg4MDAwVSApID4+IDE2ICk7CisgICAgfQorCisgICAgc2EgXj0gc2IsCisgICAgdWEgID0gKEZUX1VMb25nKSgoIHVhIF4gc2EgKSAtIHNhKTsKKworICAgIHJldHVybiAoRlRfTG9uZyl1YTsKKworI2Vsc2UgLyogMCAqLworCisgICAgRlRfTG9uZyAgIHM7CisgICAgRlRfVUxvbmcgIHVhLCB1YjsKKworCisgICAgaWYgKCBhID09IDAgfHwgYiA9PSAweDEwMDAwTCApCisgICAgICByZXR1cm4gYTsKKworICAgIHMgID0gYTsgYSA9IEZUX0FCUyggYSApOworICAgIHMgXj0gYjsgYiA9IEZUX0FCUyggYiApOworCisgICAgdWEgPSAoRlRfVUxvbmcpYTsKKyAgICB1YiA9IChGVF9VTG9uZyliOworCisgICAgaWYgKCB1YSA8PSAyMDQ4ICYmIHViIDw9IDEwNDg1NzZMICkKKyAgICAgIHVhID0gKCB1YSAqIHViICsgMHg4MDAwVUwgKSA+PiAxNjsKKyAgICBlbHNlCisgICAgeworICAgICAgRlRfVUxvbmcgIGFsID0gdWEgJiAweEZGRkZVTDsKKworCisgICAgICB1YSA9ICggdWEgPj4gMTYgKSAqIHViICsgIGFsICogKCB1YiA+PiAxNiApICsKKyAgICAgICAgICAgKCAoIGFsICogKCB1YiAmIDB4RkZGRlVMICkgKyAweDgwMDBVTCApID4+IDE2ICk7CisgICAgfQorCisgICAgcmV0dXJuICggcyA8IDAgPyAtKEZUX0xvbmcpdWEgOiAoRlRfTG9uZyl1YSApOworCisjZW5kaWYgLyogMCAqLworCisgIH0KKyNlbmRpZgorCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0xvbmcgKQorICBGVF9EaXZGaXgoIEZUX0xvbmcgIGEsCisgICAgICAgICAgICAgRlRfTG9uZyAgYiApCisgIHsKKyAgICBGVF9JbnQzMiAgIHM7CisgICAgRlRfVUludDMyICBxOworCisKKyAgICAvKiBYWFg6IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYWxsb3cgNjQtYml0IGFyZ3VtZW50cyAqLworICAgIHMgID0gKEZUX0ludDMyKWE7IGEgPSBGVF9BQlMoIGEgKTsKKyAgICBzIF49IChGVF9JbnQzMiliOyBiID0gRlRfQUJTKCBiICk7CisKKyAgICBpZiAoIChGVF9VSW50MzIpYiA9PSAwICkKKyAgICB7CisgICAgICAvKiBjaGVjayBmb3IgZGl2aXNpb24gYnkgMCAqLworICAgICAgcSA9IChGVF9VSW50MzIpMHg3RkZGRkZGRkw7CisgICAgfQorICAgIGVsc2UgaWYgKCAoIGEgPj4gMTYgKSA9PSAwICkKKyAgICB7CisgICAgICAvKiBjb21wdXRlIHJlc3VsdCBkaXJlY3RseSAqLworICAgICAgcSA9IChGVF9VSW50MzIpKCAoIChGVF9VTG9uZylhIDw8IDE2ICkgKyAoIGIgPj4gMSApICkgLyAoRlRfVUludDMyKWI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiB3ZSBuZWVkIG1vcmUgYml0czsgd2UgaGF2ZSB0byBkbyBpdCBieSBoYW5kICovCisgICAgICBGVF9JbnQ2NCAgdGVtcCwgdGVtcDI7CisKKworICAgICAgdGVtcC5oaSAgPSAoRlRfSW50MzIpKCBhID4+IDE2ICk7CisgICAgICB0ZW1wLmxvICA9IChGVF9VSW50MzIpYSA8PCAxNjsKKyAgICAgIHRlbXAyLmhpID0gMDsKKyAgICAgIHRlbXAyLmxvID0gKEZUX1VJbnQzMikoIGIgPj4gMSApOworICAgICAgRlRfQWRkNjQoICZ0ZW1wLCAmdGVtcDIsICZ0ZW1wICk7CisgICAgICBxID0gZnRfZGl2NjRieTMyKCB0ZW1wLmhpLCB0ZW1wLmxvLCAoRlRfSW50MzIpYiApOworICAgIH0KKworICAgIHJldHVybiAoIHMgPCAwID8gLShGVF9JbnQzMilxIDogKEZUX0ludDMyKXEgKTsKKyAgfQorCisKKyNpZiAwCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGNhbGMuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9NdWxUbzY0KCBGVF9JbnQzMiAgIHgsCisgICAgICAgICAgICAgIEZUX0ludDMyICAgeSwKKyAgICAgICAgICAgICAgRlRfSW50NjQgICp6ICkKKyAgeworICAgIEZUX0ludDMyICBzOworCisKKyAgICBzICA9IHg7IHggPSBGVF9BQlMoIHggKTsKKyAgICBzIF49IHk7IHkgPSBGVF9BQlMoIHkgKTsKKworICAgIGZ0X211bHRvNjQoIHgsIHksIHogKTsKKworICAgIGlmICggcyA8IDAgKQorICAgIHsKKyAgICAgIHotPmxvID0gKEZUX1VJbnQzMiktKEZUX0ludDMyKXotPmxvOworICAgICAgei0+aGkgPSB+ei0+aGkgKyAhKCB6LT5sbyApOworICAgIH0KKyAgfQorCisKKyAgLyogYXBwYXJlbnRseSwgdGhlIHNlY29uZCB2ZXJzaW9uIG9mIHRoaXMgY29kZSBpcyBub3QgY29tcGlsZWQgY29ycmVjdGx5ICovCisgIC8qIG9uIE1hYyBtYWNoaW5lcyB3aXRoIHRoZSBNUFcgQyBjb21waWxlci4uICB0c2ssIHRzaywgdHNrLi4uICAgICAgICAgICAqLworCisjaWYgMQorCisgIEZUX0VYUE9SVF9ERUYoIEZUX0ludDMyICkKKyAgRlRfRGl2NjRieTMyKCBGVF9JbnQ2NCogIHgsCisgICAgICAgICAgICAgICAgRlRfSW50MzIgICB5ICkKKyAgeworICAgIEZUX0ludDMyICAgczsKKyAgICBGVF9VSW50MzIgIHEsIHIsIGksIGxvOworCisKKyAgICBzICA9IHgtPmhpOworICAgIGlmICggcyA8IDAgKQorICAgIHsKKyAgICAgIHgtPmxvID0gKEZUX1VJbnQzMiktKEZUX0ludDMyKXgtPmxvOworICAgICAgeC0+aGkgPSB+eC0+aGkgKyAheC0+bG87CisgICAgfQorICAgIHMgXj0geTsgIHkgPSBGVF9BQlMoIHkgKTsKKworICAgIC8qIFNob3J0Y3V0ICovCisgICAgaWYgKCB4LT5oaSA9PSAwICkKKyAgICB7CisgICAgICBpZiAoIHkgPiAwICkKKyAgICAgICAgcSA9IHgtPmxvIC8geTsKKyAgICAgIGVsc2UKKyAgICAgICAgcSA9IDB4N0ZGRkZGRkZMOworCisgICAgICByZXR1cm4gKCBzIDwgMCA/IC0oRlRfSW50MzIpcSA6IChGVF9JbnQzMilxICk7CisgICAgfQorCisgICAgciAgPSB4LT5oaTsKKyAgICBsbyA9IHgtPmxvOworCisgICAgaWYgKCByID49IChGVF9VSW50MzIpeSApIC8qIHdlIGtub3cgeSBpcyB0byBiZSB0cmVhdGVkIGFzIHVuc2lnbmVkIGhlcmUgKi8KKyAgICAgIHJldHVybiAoIHMgPCAwID8gMHg4MDAwMDAwMVVMIDogMHg3RkZGRkZGRlVMICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJldHVybiBNYXgvTWluIEludDMyIGlmIGRpdmlzaW9uIG92ZXJmbG93LiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGlzIGluY2x1ZGVzIGRpdmlzaW9uIGJ5IHplcm8hICAgICAgICAgICAgKi8KKyAgICBxID0gMDsKKyAgICBmb3IgKCBpID0gMDsgaSA8IDMyOyBpKysgKQorICAgIHsKKyAgICAgIHIgPDw9IDE7CisgICAgICBxIDw8PSAxOworICAgICAgciAgfD0gbG8gPj4gMzE7CisKKyAgICAgIGlmICggciA+PSAoRlRfVUludDMyKXkgKQorICAgICAgeworICAgICAgICByIC09IHk7CisgICAgICAgIHEgfD0gMTsKKyAgICAgIH0KKyAgICAgIGxvIDw8PSAxOworICAgIH0KKworICAgIHJldHVybiAoIHMgPCAwID8gLShGVF9JbnQzMilxIDogKEZUX0ludDMyKXEgKTsKKyAgfQorCisjZWxzZSAvKiAwICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfSW50MzIgKQorICBGVF9EaXY2NGJ5MzIoIEZUX0ludDY0KiAgeCwKKyAgICAgICAgICAgICAgICBGVF9JbnQzMiAgIHkgKQorICB7CisgICAgRlRfSW50MzIgICBzOworICAgIEZUX1VJbnQzMiAgcTsKKworCisgICAgcyAgPSB4LT5oaTsKKyAgICBpZiAoIHMgPCAwICkKKyAgICB7CisgICAgICB4LT5sbyA9IChGVF9VSW50MzIpLShGVF9JbnQzMil4LT5sbzsKKyAgICAgIHgtPmhpID0gfngtPmhpICsgIXgtPmxvOworICAgIH0KKyAgICBzIF49IHk7ICB5ID0gRlRfQUJTKCB5ICk7CisKKyAgICAvKiBTaG9ydGN1dCAqLworICAgIGlmICggeC0+aGkgPT0gMCApCisgICAgeworICAgICAgaWYgKCB5ID4gMCApCisgICAgICAgIHEgPSAoIHgtPmxvICsgKCB5ID4+IDEgKSApIC8geTsKKyAgICAgIGVsc2UKKyAgICAgICAgcSA9IDB4N0ZGRkZGRkZMOworCisgICAgICByZXR1cm4gKCBzIDwgMCA/IC0oRlRfSW50MzIpcSA6IChGVF9JbnQzMilxICk7CisgICAgfQorCisgICAgcSA9IGZ0X2RpdjY0YnkzMiggeC0+aGksIHgtPmxvLCB5ICk7CisKKyAgICByZXR1cm4gKCBzIDwgMCA/IC0oRlRfSW50MzIpcSA6IChGVF9JbnQzMilxICk7CisgIH0KKworI2VuZGlmIC8qIDAgKi8KKworI2VuZGlmIC8qIDAgKi8KKworCisjZW5kaWYgLyogRlRfTE9ORzY0ICovCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0Z2x5cGguaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9NYXRyaXhfTXVsdGlwbHkoIGNvbnN0IEZUX01hdHJpeCogIGEsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTWF0cml4ICAgICAgICAqYiApCisgIHsKKyAgICBGVF9GaXhlZCAgeHgsIHh5LCB5eCwgeXk7CisKKworICAgIGlmICggIWEgfHwgIWIgKQorICAgICAgcmV0dXJuOworCisgICAgeHggPSBGVF9NdWxGaXgoIGEtPnh4LCBiLT54eCApICsgRlRfTXVsRml4KCBhLT54eSwgYi0+eXggKTsKKyAgICB4eSA9IEZUX011bEZpeCggYS0+eHgsIGItPnh5ICkgKyBGVF9NdWxGaXgoIGEtPnh5LCBiLT55eSApOworICAgIHl4ID0gRlRfTXVsRml4KCBhLT55eCwgYi0+eHggKSArIEZUX011bEZpeCggYS0+eXksIGItPnl4ICk7CisgICAgeXkgPSBGVF9NdWxGaXgoIGEtPnl4LCBiLT54eSApICsgRlRfTXVsRml4KCBhLT55eSwgYi0+eXkgKTsKKworICAgIGItPnh4ID0geHg7ICBiLT54eSA9IHh5OworICAgIGItPnl4ID0geXg7ICBiLT55eSA9IHl5OworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0Z2x5cGguaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfTWF0cml4X0ludmVydCggRlRfTWF0cml4KiAgbWF0cml4ICkKKyAgeworICAgIEZUX1BvcyAgZGVsdGEsIHh4LCB5eTsKKworCisgICAgaWYgKCAhbWF0cml4ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgLyogY29tcHV0ZSBkaXNjcmltaW5hbnQgKi8KKyAgICBkZWx0YSA9IEZUX011bEZpeCggbWF0cml4LT54eCwgbWF0cml4LT55eSApIC0KKyAgICAgICAgICAgIEZUX011bEZpeCggbWF0cml4LT54eSwgbWF0cml4LT55eCApOworCisgICAgaWYgKCAhZGVsdGEgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7ICAvKiBtYXRyaXggY2FuJ3QgYmUgaW52ZXJ0ZWQgKi8KKworICAgIG1hdHJpeC0+eHkgPSAtIEZUX0RpdkZpeCggbWF0cml4LT54eSwgZGVsdGEgKTsKKyAgICBtYXRyaXgtPnl4ID0gLSBGVF9EaXZGaXgoIG1hdHJpeC0+eXgsIGRlbHRhICk7CisKKyAgICB4eCA9IG1hdHJpeC0+eHg7CisgICAgeXkgPSBtYXRyaXgtPnl5OworCisgICAgbWF0cml4LT54eCA9IEZUX0RpdkZpeCggeXksIGRlbHRhICk7CisgICAgbWF0cml4LT55eSA9IEZUX0RpdkZpeCggeHgsIGRlbHRhICk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0Y2FsYy5oICovCisKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBGVF9NYXRyaXhfTXVsdGlwbHlfU2NhbGVkKCBjb25zdCBGVF9NYXRyaXgqICBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NYXRyaXggICAgICAgICpiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgICAgICBzY2FsaW5nICkKKyAgeworICAgIEZUX0ZpeGVkICB4eCwgeHksIHl4LCB5eTsKKworICAgIEZUX0xvbmcgICB2YWwgPSAweDEwMDAwTCAqIHNjYWxpbmc7CisKKworICAgIGlmICggIWEgfHwgIWIgKQorICAgICAgcmV0dXJuOworCisgICAgeHggPSBGVF9NdWxEaXYoIGEtPnh4LCBiLT54eCwgdmFsICkgKyBGVF9NdWxEaXYoIGEtPnh5LCBiLT55eCwgdmFsICk7CisgICAgeHkgPSBGVF9NdWxEaXYoIGEtPnh4LCBiLT54eSwgdmFsICkgKyBGVF9NdWxEaXYoIGEtPnh5LCBiLT55eSwgdmFsICk7CisgICAgeXggPSBGVF9NdWxEaXYoIGEtPnl4LCBiLT54eCwgdmFsICkgKyBGVF9NdWxEaXYoIGEtPnl5LCBiLT55eCwgdmFsICk7CisgICAgeXkgPSBGVF9NdWxEaXYoIGEtPnl4LCBiLT54eSwgdmFsICkgKyBGVF9NdWxEaXYoIGEtPnl5LCBiLT55eSwgdmFsICk7CisKKyAgICBiLT54eCA9IHh4OyAgYi0+eHkgPSB4eTsKKyAgICBiLT55eCA9IHl4OyAgYi0+eXkgPSB5eTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGNhbGMuaCAqLworCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgRlRfVmVjdG9yX1RyYW5zZm9ybV9TY2FsZWQoIEZUX1ZlY3RvciogICAgICAgIHZlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX01hdHJpeCogIG1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgICAgIHNjYWxpbmcgKQorICB7CisgICAgRlRfUG9zICAgeHosIHl6OworCisgICAgRlRfTG9uZyAgdmFsID0gMHgxMDAwMEwgKiBzY2FsaW5nOworCisKKyAgICBpZiAoICF2ZWN0b3IgfHwgIW1hdHJpeCApCisgICAgICByZXR1cm47CisKKyAgICB4eiA9IEZUX011bERpdiggdmVjdG9yLT54LCBtYXRyaXgtPnh4LCB2YWwgKSArCisgICAgICAgICBGVF9NdWxEaXYoIHZlY3Rvci0+eSwgbWF0cml4LT54eSwgdmFsICk7CisKKyAgICB5eiA9IEZUX011bERpdiggdmVjdG9yLT54LCBtYXRyaXgtPnl4LCB2YWwgKSArCisgICAgICAgICBGVF9NdWxEaXYoIHZlY3Rvci0+eSwgbWF0cml4LT55eSwgdmFsICk7CisKKyAgICB2ZWN0b3ItPnggPSB4ejsKKyAgICB2ZWN0b3ItPnkgPSB5ejsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGNhbGMuaCAqLworCisgIEZUX0JBU0VfREVGKCBGVF9JbnQzMiApCisgIEZUX1NxcnRGaXhlZCggRlRfSW50MzIgIHggKQorICB7CisgICAgRlRfVUludDMyICByb290LCByZW1faGksIHJlbV9sbywgdGVzdF9kaXY7CisgICAgRlRfSW50ICAgICBjb3VudDsKKworCisgICAgcm9vdCA9IDA7CisKKyAgICBpZiAoIHggPiAwICkKKyAgICB7CisgICAgICByZW1faGkgPSAwOworICAgICAgcmVtX2xvID0geDsKKyAgICAgIGNvdW50ICA9IDI0OworICAgICAgZG8KKyAgICAgIHsKKyAgICAgICAgcmVtX2hpICAgPSAoIHJlbV9oaSA8PCAyICkgfCAoIHJlbV9sbyA+PiAzMCApOworICAgICAgICByZW1fbG8gPDw9IDI7CisgICAgICAgIHJvb3QgICA8PD0gMTsKKyAgICAgICAgdGVzdF9kaXYgPSAoIHJvb3QgPDwgMSApICsgMTsKKworICAgICAgICBpZiAoIHJlbV9oaSA+PSB0ZXN0X2RpdiApCisgICAgICAgIHsKKyAgICAgICAgICByZW1faGkgLT0gdGVzdF9kaXY7CisgICAgICAgICAgcm9vdCAgICs9IDE7CisgICAgICAgIH0KKyAgICAgIH0gd2hpbGUgKCAtLWNvdW50ICk7CisgICAgfQorCisgICAgcmV0dXJuIChGVF9JbnQzMilyb290OworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0Y2FsYy5oICovCisKKyAgRlRfQkFTRV9ERUYoIEZUX0ludCApCisgIGZ0X2Nvcm5lcl9vcmllbnRhdGlvbiggRlRfUG9zICBpbl94LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgaW5feSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgIG91dF94LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgb3V0X3kgKQorICB7CisgICAgRlRfTG9uZyAgcmVzdWx0OyAvKiBhdm9pZCBvdmVyZmxvdyBvbiAxNi1iaXQgc3lzdGVtICovCisKKworICAgIC8qIGRlYWwgd2l0aCB0aGUgdHJpdmlhbCBjYXNlcyBxdWlja2x5ICovCisgICAgaWYgKCBpbl95ID09IDAgKQorICAgIHsKKyAgICAgIGlmICggaW5feCA+PSAwICkKKyAgICAgICAgcmVzdWx0ID0gb3V0X3k7CisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IC1vdXRfeTsKKyAgICB9CisgICAgZWxzZSBpZiAoIGluX3ggPT0gMCApCisgICAgeworICAgICAgaWYgKCBpbl95ID49IDAgKQorICAgICAgICByZXN1bHQgPSAtb3V0X3g7CisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IG91dF94OworICAgIH0KKyAgICBlbHNlIGlmICggb3V0X3kgPT0gMCApCisgICAgeworICAgICAgaWYgKCBvdXRfeCA+PSAwICkKKyAgICAgICAgcmVzdWx0ID0gaW5feTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gLWluX3k7CisgICAgfQorICAgIGVsc2UgaWYgKCBvdXRfeCA9PSAwICkKKyAgICB7CisgICAgICBpZiAoIG91dF95ID49IDAgKQorICAgICAgICByZXN1bHQgPSAtaW5feDsKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gIGluX3g7CisgICAgfQorICAgIGVsc2UgLyogZ2VuZXJhbCBjYXNlICovCisgICAgeworI2lmZGVmIEZUX0xPTkc2NAorCisgICAgICBGVF9JbnQ2NCAgZGVsdGEgPSAoRlRfSW50NjQpaW5feCAqIG91dF95IC0gKEZUX0ludDY0KWluX3kgKiBvdXRfeDsKKworCisgICAgICBpZiAoIGRlbHRhID09IDAgKQorICAgICAgICByZXN1bHQgPSAwOworICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSAxIC0gMiAqICggZGVsdGEgPCAwICk7CisKKyNlbHNlCisKKyAgICAgIEZUX0ludDY0ICB6MSwgejI7CisKKworICAgICAgLyogWFhYOiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFsbG93IDY0LWJpdCBhcmd1bWVudHMgKi8KKyAgICAgIGZ0X211bHRvNjQoIChGVF9JbnQzMilpbl94LCAoRlRfSW50MzIpb3V0X3ksICZ6MSApOworICAgICAgZnRfbXVsdG82NCggKEZUX0ludDMyKWluX3ksIChGVF9JbnQzMilvdXRfeCwgJnoyICk7CisKKyAgICAgIGlmICggejEuaGkgPiB6Mi5oaSApCisgICAgICAgIHJlc3VsdCA9ICsxOworICAgICAgZWxzZSBpZiAoIHoxLmhpIDwgejIuaGkgKQorICAgICAgICByZXN1bHQgPSAtMTsKKyAgICAgIGVsc2UgaWYgKCB6MS5sbyA+IHoyLmxvICkKKyAgICAgICAgcmVzdWx0ID0gKzE7CisgICAgICBlbHNlIGlmICggejEubG8gPCB6Mi5sbyApCisgICAgICAgIHJlc3VsdCA9IC0xOworICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSAwOworCisjZW5kaWYKKyAgICB9CisKKyAgICAvKiBYWFg6IG9ubHkgdGhlIHNpZ24gb2YgcmV0dXJuIHZhbHVlLCArMS8wLy0xIG11c3QgYmUgdXNlZCAqLworICAgIHJldHVybiAoRlRfSW50KXJlc3VsdDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGNhbGMuaCAqLworCisgIEZUX0JBU0VfREVGKCBGVF9JbnQgKQorICBmdF9jb3JuZXJfaXNfZmxhdCggRlRfUG9zICBpbl94LAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICBpbl95LAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICBvdXRfeCwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgb3V0X3kgKQorICB7CisgICAgRlRfUG9zICBheCA9IGluX3g7CisgICAgRlRfUG9zICBheSA9IGluX3k7CisKKyAgICBGVF9Qb3MgIGRfaW4sIGRfb3V0LCBkX2Nvcm5lcjsKKworCisgICAgaWYgKCBheCA8IDAgKQorICAgICAgYXggPSAtYXg7CisgICAgaWYgKCBheSA8IDAgKQorICAgICAgYXkgPSAtYXk7CisgICAgZF9pbiA9IGF4ICsgYXk7CisKKyAgICBheCA9IG91dF94OworICAgIGlmICggYXggPCAwICkKKyAgICAgIGF4ID0gLWF4OworICAgIGF5ID0gb3V0X3k7CisgICAgaWYgKCBheSA8IDAgKQorICAgICAgYXkgPSAtYXk7CisgICAgZF9vdXQgPSBheCArIGF5OworCisgICAgYXggPSBvdXRfeCArIGluX3g7CisgICAgaWYgKCBheCA8IDAgKQorICAgICAgYXggPSAtYXg7CisgICAgYXkgPSBvdXRfeSArIGluX3k7CisgICAgaWYgKCBheSA8IDAgKQorICAgICAgYXkgPSAtYXk7CisgICAgZF9jb3JuZXIgPSBheCArIGF5OworCisgICAgcmV0dXJuICggZF9pbiArIGRfb3V0IC0gZF9jb3JuZXIgKSA8ICggZF9jb3JuZXIgPj4gNCApOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRjaWQuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGNpZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ODE3YTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRjaWQuYwpAQCAtMCwwICsxLDExNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRjaWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgYWNjZXNzaW5nIENJRCBmb250IGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LCAyMDA5LCAyMDEzIGJ5IERlcmVrIENsZWdnLCBNaWNoYWVsIFRvZnRkYWwuICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGNpZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmNpZC5oIgorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGNpZC5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9HZXRfQ0lEX1JlZ2lzdHJ5X09yZGVyaW5nX1N1cHBsZW1lbnQoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgKnJlZ2lzdHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqb3JkZXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICpzdXBwbGVtZW50KQorICB7CisgICAgRlRfRXJyb3IgICAgIGVycm9yOworICAgIGNvbnN0IGNoYXIqICByID0gTlVMTDsKKyAgICBjb25zdCBjaGFyKiAgbyA9IE5VTEw7CisgICAgRlRfSW50ICAgICAgIHMgPSAwOworCisKKyAgICBlcnJvciA9IEZUX0VSUiggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgaWYgKCBmYWNlICkKKyAgICB7CisgICAgICBGVF9TZXJ2aWNlX0NJRCAgc2VydmljZTsKKworCisgICAgICBGVF9GQUNFX0ZJTkRfU0VSVklDRSggZmFjZSwgc2VydmljZSwgQ0lEICk7CisKKyAgICAgIGlmICggc2VydmljZSAmJiBzZXJ2aWNlLT5nZXRfcm9zICkKKyAgICAgICAgZXJyb3IgPSBzZXJ2aWNlLT5nZXRfcm9zKCBmYWNlLCAmciwgJm8sICZzICk7CisgICAgfQorCisgICAgaWYgKCByZWdpc3RyeSApCisgICAgICAqcmVnaXN0cnkgPSByOworCisgICAgaWYgKCBvcmRlcmluZyApCisgICAgICAqb3JkZXJpbmcgPSBvOworCisgICAgaWYgKCBzdXBwbGVtZW50ICkKKyAgICAgICpzdXBwbGVtZW50ID0gczsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9HZXRfQ0lEX0lzX0ludGVybmFsbHlfQ0lEX0tleWVkKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgKmlzX2NpZCApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICBGVF9Cb29sICAgaWMgPSAwOworCisKKyAgICBpZiAoIGZhY2UgKQorICAgIHsKKyAgICAgIEZUX1NlcnZpY2VfQ0lEICBzZXJ2aWNlOworCisKKyAgICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBDSUQgKTsKKworICAgICAgaWYgKCBzZXJ2aWNlICYmIHNlcnZpY2UtPmdldF9pc19jaWQgKQorICAgICAgICBlcnJvciA9IHNlcnZpY2UtPmdldF9pc19jaWQoIGZhY2UsICZpYyk7CisgICAgfQorCisgICAgaWYgKCBpc19jaWQgKQorICAgICAgKmlzX2NpZCA9IGljOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldF9DSURfRnJvbV9HbHlwaF9JbmRleCggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICpjaWQgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRVJSKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgRlRfVUludCAgIGMgPSAwOworCisKKyAgICBpZiAoIGZhY2UgKQorICAgIHsKKyAgICAgIEZUX1NlcnZpY2VfQ0lEICBzZXJ2aWNlOworCisKKyAgICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBDSUQgKTsKKworICAgICAgaWYgKCBzZXJ2aWNlICYmIHNlcnZpY2UtPmdldF9jaWRfZnJvbV9nbHlwaF9pbmRleCApCisgICAgICAgIGVycm9yID0gc2VydmljZS0+Z2V0X2NpZF9mcm9tX2dseXBoX2luZGV4KCBmYWNlLCBnbHlwaF9pbmRleCwgJmMpOworICAgIH0KKworICAgIGlmICggY2lkICkKKyAgICAgICpjaWQgPSBjOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRkYmdtZW0uYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGRiZ21lbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZjU5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRkYmdtZW0uYwpAQCAtMCwwICsxLDk5MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRkYmdtZW0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIE1lbW9yeSBkZWJ1Z2dlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAxLTIwMDYsIDIwMDksIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRzeXN0ZW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmgiCisKKworI2lmZGVmIEZUX0RFQlVHX01FTU9SWQorCisjZGVmaW5lICBLRUVQQUxJVkUgLyogYEtlZXAgYWxpdmUnIG1lYW5zIHRoYXQgZnJlZWQgYmxvY2tzIGFyZW4ndCByZWxlYXNlZAorICAgICAgICAgICAgICAgICAgICAqIHRvIHRoZSBoZWFwLiAgVGhpcyBpcyB1c2VmdWwgdG8gZGV0ZWN0IGRvdWJsZS1mcmVlcworICAgICAgICAgICAgICAgICAgICAqIG9yIHdlaXJkIGhlYXAgY29ycnVwdGlvbiwgYnV0IGl0IHVzZXMgbGFyZ2UgYW1vdW50cyBvZgorICAgICAgICAgICAgICAgICAgICAqIG1lbW9yeSwgaG93ZXZlci4KKyAgICAgICAgICAgICAgICAgICAgKi8KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmgiCisKKyAgRlRfQkFTRV9ERUYoIGNvbnN0IGNoYXIqICkgIF9mdF9kZWJ1Z19maWxlICAgPSAwOworICBGVF9CQVNFX0RFRiggbG9uZyApICAgICAgICAgX2Z0X2RlYnVnX2xpbmVubyA9IDA7CisKKyAgZXh0ZXJuIHZvaWQKKyAgRlRfRHVtcE1lbW9yeSggRlRfTWVtb3J5ICBtZW1vcnkgKTsKKworCisgIHR5cGVkZWYgc3RydWN0IEZUX01lbVNvdXJjZVJlY18qICBGVF9NZW1Tb3VyY2U7CisgIHR5cGVkZWYgc3RydWN0IEZUX01lbU5vZGVSZWNfKiAgICBGVF9NZW1Ob2RlOworICB0eXBlZGVmIHN0cnVjdCBGVF9NZW1UYWJsZVJlY18qICAgRlRfTWVtVGFibGU7CisKKworI2RlZmluZSBGVF9NRU1fVkFMKCBhZGRyICkgICgoRlRfUHRyRGlzdCkoRlRfUG9pbnRlcikoIGFkZHIgKSkKKworICAvKgorICAgKiAgVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgc3RhdGlzdGljcyBmb3IgYSBzaW5nbGUgYWxsb2NhdGlvbi9yZWxlYXNlCisgICAqICBzaXRlLiAgVGhpcyBpcyB1c2VmdWwgdG8ga25vdyB3aGVyZSBtZW1vcnkgb3BlcmF0aW9ucyBoYXBwZW4gdGhlCisgICAqICBtb3N0LgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX01lbVNvdXJjZVJlY18KKyAgeworICAgIGNvbnN0IGNoYXIqICAgZmlsZV9uYW1lOworICAgIGxvbmcgICAgICAgICAgbGluZV9ubzsKKworICAgIEZUX0xvbmcgICAgICAgY3VyX2Jsb2NrczsgICAvKiBjdXJyZW50IG51bWJlciBvZiBhbGxvY2F0ZWQgYmxvY2tzICovCisgICAgRlRfTG9uZyAgICAgICBtYXhfYmxvY2tzOyAgIC8qIG1heC4gbnVtYmVyIG9mIGFsbG9jYXRlZCBibG9ja3MgICAgKi8KKyAgICBGVF9Mb25nICAgICAgIGFsbF9ibG9ja3M7ICAgLyogdG90YWwgbnVtYmVyIG9mIGJsb2NrcyBhbGxvY2F0ZWQgICAqLworCisgICAgRlRfTG9uZyAgICAgICBjdXJfc2l6ZTsgICAgIC8qIGN1cnJlbnQgY3VtdWxhdGl2ZSBhbGxvY2F0ZWQgc2l6ZSAqLworICAgIEZUX0xvbmcgICAgICAgbWF4X3NpemU7ICAgICAvKiBtYXhpbXVtIGN1bXVsYXRpdmUgYWxsb2NhdGVkIHNpemUgKi8KKyAgICBGVF9Mb25nICAgICAgIGFsbF9zaXplOyAgICAgLyogdG90YWwgY3VtdWxhdGl2ZSBhbGxvY2F0ZWQgc2l6ZSAgICovCisKKyAgICBGVF9Mb25nICAgICAgIGN1cl9tYXg7ICAgICAgLyogY3VycmVudCBtYXhpbXVtIGFsbG9jYXRlZCBzaXplICovCisKKyAgICBGVF9VSW50MzIgICAgIGhhc2g7CisgICAgRlRfTWVtU291cmNlICBsaW5rOworCisgIH0gRlRfTWVtU291cmNlUmVjOworCisKKyAgLyoKKyAgICogIFdlIGRvbid0IG5lZWQgYSByZXNpemFibGUgYXJyYXkgZm9yIHRoZSBtZW1vcnkgc291cmNlcywgYmVjYXVzZQorICAgKiAgdGhlaXIgbnVtYmVyIGlzIHByZXR0eSBsaW1pdGVkIHdpdGhpbiBGcmVlVHlwZS4KKyAgICovCisjZGVmaW5lIEZUX01FTV9TT1VSQ0VfQlVDS0VUUyAgMTI4CisKKyAgLyoKKyAgICogIFRoaXMgc3RydWN0dXJlIGhvbGRzIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gYSBzaW5nbGUgYWxsb2NhdGVkCisgICAqICBtZW1vcnkgYmxvY2suICBJZiBLRUVQQUxJVkUgaXMgZGVmaW5lZCwgYmxvY2tzIHRoYXQgYXJlIGZyZWVkIGJ5CisgICAqICBGcmVlVHlwZSBhcmUgbmV2ZXIgcmVsZWFzZWQgdG8gdGhlIHN5c3RlbS4gIEluc3RlYWQsIHRoZWlyIGBzaXplJworICAgKiAgZmllbGQgaXMgc2V0IHRvIC1zaXplLiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIHRvIGRldGVjdCBkb3VibGUgZnJlZXMsCisgICAqICBhdCB0aGUgcHJpY2Ugb2YgbGFyZ2UgbWVtb3J5IGZvb3RwcmludCBkdXJpbmcgZXhlY3V0aW9uLgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX01lbU5vZGVSZWNfCisgIHsKKyAgICBGVF9CeXRlKiAgICAgIGFkZHJlc3M7CisgICAgRlRfTG9uZyAgICAgICBzaXplOyAgICAgLyogPCAwIGlmIHRoZSBibG9jayB3YXMgZnJlZWQgKi8KKworICAgIEZUX01lbVNvdXJjZSAgc291cmNlOworCisjaWZkZWYgS0VFUEFMSVZFCisgICAgY29uc3QgY2hhciogICBmcmVlX2ZpbGVfbmFtZTsKKyAgICBGVF9Mb25nICAgICAgIGZyZWVfbGluZV9ubzsKKyNlbmRpZgorCisgICAgRlRfTWVtTm9kZSAgICBsaW5rOworCisgIH0gRlRfTWVtTm9kZVJlYzsKKworCisgIC8qCisgICAqICBUaGUgZ2xvYmFsIHN0cnVjdHVyZSwgY29udGFpbmluZyBjb21wb3VuZCBzdGF0aXN0aWNzIGFuZCBhbGwgaGFzaAorICAgKiAgdGFibGVzLgorICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX01lbVRhYmxlUmVjXworICB7CisgICAgRlRfVUxvbmcgICAgICAgICBzaXplOworICAgIEZUX1VMb25nICAgICAgICAgbm9kZXM7CisgICAgRlRfTWVtTm9kZSogICAgICBidWNrZXRzOworCisgICAgRlRfVUxvbmcgICAgICAgICBhbGxvY190b3RhbDsKKyAgICBGVF9VTG9uZyAgICAgICAgIGFsbG9jX2N1cnJlbnQ7CisgICAgRlRfVUxvbmcgICAgICAgICBhbGxvY19tYXg7CisgICAgRlRfVUxvbmcgICAgICAgICBhbGxvY19jb3VudDsKKworICAgIEZUX0Jvb2wgICAgICAgICAgYm91bmRfdG90YWw7CisgICAgRlRfVUxvbmcgICAgICAgICBhbGxvY190b3RhbF9tYXg7CisKKyAgICBGVF9Cb29sICAgICAgICAgIGJvdW5kX2NvdW50OworICAgIEZUX1VMb25nICAgICAgICAgYWxsb2NfY291bnRfbWF4OworCisgICAgRlRfTWVtU291cmNlICAgICBzb3VyY2VzW0ZUX01FTV9TT1VSQ0VfQlVDS0VUU107CisKKyAgICBGVF9Cb29sICAgICAgICAgIGtlZXBfYWxpdmU7CisKKyAgICBGVF9NZW1vcnkgICAgICAgIG1lbW9yeTsKKyAgICBGVF9Qb2ludGVyICAgICAgIG1lbW9yeV91c2VyOworICAgIEZUX0FsbG9jX0Z1bmMgICAgYWxsb2M7CisgICAgRlRfRnJlZV9GdW5jICAgICBmcmVlOworICAgIEZUX1JlYWxsb2NfRnVuYyAgcmVhbGxvYzsKKworICB9IEZUX01lbVRhYmxlUmVjOworCisKKyNkZWZpbmUgRlRfTUVNX1NJWkVfTUlOICA3CisjZGVmaW5lIEZUX01FTV9TSVpFX01BWCAgMTM4NDUxNjMKKworI2RlZmluZSBGVF9GSUxFTkFNRSggeCApICAoKHgpID8gKHgpIDogInVua25vd24gZmlsZSIpCisKKworICAvKgorICAgKiAgUHJpbWUgbnVtYmVycyBhcmUgdWdseSB0byBoYW5kbGUuICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gaW1wbGVtZW50CisgICAqICBMLUhhc2hpbmcsIHdoaWNoIGlzIDEwJSBmYXN0ZXIgYW5kIGRvZXNuJ3QgcmVxdWlyZSBkaXZpc2lvbnMuCisgICAqLworICBzdGF0aWMgY29uc3QgRlRfVUludCAgZnRfbWVtX3ByaW1lc1tdID0KKyAgeworICAgIDcsCisgICAgMTEsCisgICAgMTksCisgICAgMzcsCisgICAgNzMsCisgICAgMTA5LAorICAgIDE2MywKKyAgICAyNTEsCisgICAgMzY3LAorICAgIDU1NywKKyAgICA4MjMsCisgICAgMTIzNywKKyAgICAxODYxLAorICAgIDI3NzcsCisgICAgNDE3NywKKyAgICA2MjQ3LAorICAgIDkzNzEsCisgICAgMTQwNTcsCisgICAgMjEwODksCisgICAgMzE2MjcsCisgICAgNDc0MzEsCisgICAgNzExNDMsCisgICAgMTA2NzIxLAorICAgIDE2MDA3MywKKyAgICAyNDAxMDEsCisgICAgMzYwMTYzLAorICAgIDU0MDIxNywKKyAgICA4MTAzNDMsCisgICAgMTIxNTQ5NywKKyAgICAxODIzMjMxLAorICAgIDI3MzQ4NjcsCisgICAgNDEwMjI4MywKKyAgICA2MTUzNDA5LAorICAgIDkyMzAxMTMsCisgICAgMTM4NDUxNjMsCisgIH07CisKKworICBzdGF0aWMgRlRfVUxvbmcKKyAgZnRfbWVtX2Nsb3Nlc3RfcHJpbWUoIEZUX1VMb25nICBudW0gKQorICB7CisgICAgRlRfVUludCAgaTsKKworCisgICAgZm9yICggaSA9IDA7CisgICAgICAgICAgaSA8IHNpemVvZiAoIGZ0X21lbV9wcmltZXMgKSAvIHNpemVvZiAoIGZ0X21lbV9wcmltZXNbMF0gKTsgaSsrICkKKyAgICAgIGlmICggZnRfbWVtX3ByaW1lc1tpXSA+IG51bSApCisgICAgICAgIHJldHVybiBmdF9tZW1fcHJpbWVzW2ldOworCisgICAgcmV0dXJuIEZUX01FTV9TSVpFX01BWDsKKyAgfQorCisKKyAgZXh0ZXJuIHZvaWQKKyAgZnRfbWVtX2RlYnVnX3BhbmljKCBjb25zdCBjaGFyKiAgZm10LAorICAgICAgICAgICAgICAgICAgICAgIC4uLiApCisgIHsKKyAgICB2YV9saXN0ICBhcDsKKworCisgICAgcHJpbnRmKCAiRnJlZVR5cGUuRGVidWc6ICIgKTsKKworICAgIHZhX3N0YXJ0KCBhcCwgZm10ICk7CisgICAgdnByaW50ZiggZm10LCBhcCApOworICAgIHZhX2VuZCggYXAgKTsKKworICAgIHByaW50ZiggIlxuIiApOworICAgIGV4aXQoIEVYSVRfRkFJTFVSRSApOworICB9CisKKworICBzdGF0aWMgRlRfUG9pbnRlcgorICBmdF9tZW1fdGFibGVfYWxsb2MoIEZUX01lbVRhYmxlICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgc2l6ZSApCisgIHsKKyAgICBGVF9NZW1vcnkgICBtZW1vcnkgPSB0YWJsZS0+bWVtb3J5OworICAgIEZUX1BvaW50ZXIgIGJsb2NrOworCisKKyAgICBtZW1vcnktPnVzZXIgPSB0YWJsZS0+bWVtb3J5X3VzZXI7CisgICAgYmxvY2sgPSB0YWJsZS0+YWxsb2MoIG1lbW9yeSwgc2l6ZSApOworICAgIG1lbW9yeS0+dXNlciA9IHRhYmxlOworCisgICAgcmV0dXJuIGJsb2NrOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF9tZW1fdGFibGVfZnJlZSggRlRfTWVtVGFibGUgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgIGJsb2NrICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gdGFibGUtPm1lbW9yeTsKKworCisgICAgbWVtb3J5LT51c2VyID0gdGFibGUtPm1lbW9yeV91c2VyOworICAgIHRhYmxlLT5mcmVlKCBtZW1vcnksIGJsb2NrICk7CisgICAgbWVtb3J5LT51c2VyID0gdGFibGU7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X21lbV90YWJsZV9yZXNpemUoIEZUX01lbVRhYmxlICB0YWJsZSApCisgIHsKKyAgICBGVF9VTG9uZyAgbmV3X3NpemU7CisKKworICAgIG5ld19zaXplID0gZnRfbWVtX2Nsb3Nlc3RfcHJpbWUoIHRhYmxlLT5ub2RlcyApOworICAgIGlmICggbmV3X3NpemUgIT0gdGFibGUtPnNpemUgKQorICAgIHsKKyAgICAgIEZUX01lbU5vZGUqICBuZXdfYnVja2V0czsKKyAgICAgIEZUX1VMb25nICAgICBpOworCisKKyAgICAgIG5ld19idWNrZXRzID0gKEZUX01lbU5vZGUgKikKKyAgICAgICAgICAgICAgICAgICAgICBmdF9tZW1fdGFibGVfYWxsb2MoIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3NpemUgKiBzaXplb2YgKCBGVF9NZW1Ob2RlICkgKTsKKyAgICAgIGlmICggbmV3X2J1Y2tldHMgPT0gTlVMTCApCisgICAgICAgIHJldHVybjsKKworICAgICAgRlRfQVJSQVlfWkVSTyggbmV3X2J1Y2tldHMsIG5ld19zaXplICk7CisKKyAgICAgIGZvciAoIGkgPSAwOyBpIDwgdGFibGUtPnNpemU7IGkrKyApCisgICAgICB7CisgICAgICAgIEZUX01lbU5vZGUgIG5vZGUsIG5leHQsICpwbm9kZTsKKyAgICAgICAgRlRfUHRyRGlzdCAgaGFzaDsKKworCisgICAgICAgIG5vZGUgPSB0YWJsZS0+YnVja2V0c1tpXTsKKyAgICAgICAgd2hpbGUgKCBub2RlICkKKyAgICAgICAgeworICAgICAgICAgIG5leHQgID0gbm9kZS0+bGluazsKKyAgICAgICAgICBoYXNoICA9IEZUX01FTV9WQUwoIG5vZGUtPmFkZHJlc3MgKSAlIG5ld19zaXplOworICAgICAgICAgIHBub2RlID0gbmV3X2J1Y2tldHMgKyBoYXNoOworCisgICAgICAgICAgbm9kZS0+bGluayA9IHBub2RlWzBdOworICAgICAgICAgIHBub2RlWzBdICAgPSBub2RlOworCisgICAgICAgICAgbm9kZSA9IG5leHQ7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCB0YWJsZS0+YnVja2V0cyApCisgICAgICAgIGZ0X21lbV90YWJsZV9mcmVlKCB0YWJsZSwgdGFibGUtPmJ1Y2tldHMgKTsKKworICAgICAgdGFibGUtPmJ1Y2tldHMgPSBuZXdfYnVja2V0czsKKyAgICAgIHRhYmxlLT5zaXplICAgID0gbmV3X3NpemU7CisgICAgfQorICB9CisKKworICBzdGF0aWMgRlRfTWVtVGFibGUKKyAgZnRfbWVtX3RhYmxlX25ldyggRlRfTWVtb3J5ICBtZW1vcnkgKQorICB7CisgICAgRlRfTWVtVGFibGUgIHRhYmxlOworCisKKyAgICB0YWJsZSA9IChGVF9NZW1UYWJsZSltZW1vcnktPmFsbG9jKCBtZW1vcnksIHNpemVvZiAoICp0YWJsZSApICk7CisgICAgaWYgKCB0YWJsZSA9PSBOVUxMICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIEZUX1pFUk8oIHRhYmxlICk7CisKKyAgICB0YWJsZS0+c2l6ZSAgPSBGVF9NRU1fU0laRV9NSU47CisgICAgdGFibGUtPm5vZGVzID0gMDsKKworICAgIHRhYmxlLT5tZW1vcnkgPSBtZW1vcnk7CisKKyAgICB0YWJsZS0+bWVtb3J5X3VzZXIgPSBtZW1vcnktPnVzZXI7CisKKyAgICB0YWJsZS0+YWxsb2MgICA9IG1lbW9yeS0+YWxsb2M7CisgICAgdGFibGUtPnJlYWxsb2MgPSBtZW1vcnktPnJlYWxsb2M7CisgICAgdGFibGUtPmZyZWUgICAgPSBtZW1vcnktPmZyZWU7CisKKyAgICB0YWJsZS0+YnVja2V0cyA9IChGVF9NZW1Ob2RlICopCisgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeS0+YWxsb2MoIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUtPnNpemUgKiBzaXplb2YgKCBGVF9NZW1Ob2RlICkgKTsKKyAgICBpZiAoIHRhYmxlLT5idWNrZXRzICkKKyAgICAgIEZUX0FSUkFZX1pFUk8oIHRhYmxlLT5idWNrZXRzLCB0YWJsZS0+c2l6ZSApOworICAgIGVsc2UKKyAgICB7CisgICAgICBtZW1vcnktPmZyZWUoIG1lbW9yeSwgdGFibGUgKTsKKyAgICAgIHRhYmxlID0gTlVMTDsKKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gdGFibGU7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X21lbV90YWJsZV9kZXN0cm95KCBGVF9NZW1UYWJsZSAgdGFibGUgKQorICB7CisgICAgRlRfVUxvbmcgIGk7CisgICAgRlRfTG9uZyAgIGxlYWtfY291bnQgPSAwOworICAgIEZUX1VMb25nICBsZWFrcyAgICAgID0gMDsKKworCisgICAgRlRfRHVtcE1lbW9yeSggdGFibGUtPm1lbW9yeSApOworCisgICAgLyogcmVtb3ZlIGFsbCBibG9ja3MgZnJvbSB0aGUgdGFibGUsIHJldmVhbGluZyBsZWFrZWQgb25lcyAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgdGFibGUtPnNpemU7IGkrKyApCisgICAgeworICAgICAgRlRfTWVtTm9kZSAgKnBub2RlID0gdGFibGUtPmJ1Y2tldHMgKyBpLCBuZXh0LCBub2RlID0gKnBub2RlOworCisKKyAgICAgIHdoaWxlICggbm9kZSApCisgICAgICB7CisgICAgICAgIG5leHQgICAgICAgPSBub2RlLT5saW5rOworICAgICAgICBub2RlLT5saW5rID0gMDsKKworICAgICAgICBpZiAoIG5vZGUtPnNpemUgPiAwICkKKyAgICAgICAgeworICAgICAgICAgIHByaW50ZigKKyAgICAgICAgICAgICJsZWFrZWQgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgJXAsIHNpemUgJThsZCBpbiAoJXM6JWxkKVxuIiwKKyAgICAgICAgICAgIG5vZGUtPmFkZHJlc3MsIG5vZGUtPnNpemUsCisgICAgICAgICAgICBGVF9GSUxFTkFNRSggbm9kZS0+c291cmNlLT5maWxlX25hbWUgKSwKKyAgICAgICAgICAgIG5vZGUtPnNvdXJjZS0+bGluZV9ubyApOworCisgICAgICAgICAgbGVha19jb3VudCsrOworICAgICAgICAgIGxlYWtzICs9IG5vZGUtPnNpemU7CisKKyAgICAgICAgICBmdF9tZW1fdGFibGVfZnJlZSggdGFibGUsIG5vZGUtPmFkZHJlc3MgKTsKKyAgICAgICAgfQorCisgICAgICAgIG5vZGUtPmFkZHJlc3MgPSBOVUxMOworICAgICAgICBub2RlLT5zaXplICAgID0gMDsKKworICAgICAgICBmdF9tZW1fdGFibGVfZnJlZSggdGFibGUsIG5vZGUgKTsKKyAgICAgICAgbm9kZSA9IG5leHQ7CisgICAgICB9CisgICAgICB0YWJsZS0+YnVja2V0c1tpXSA9IDA7CisgICAgfQorCisgICAgZnRfbWVtX3RhYmxlX2ZyZWUoIHRhYmxlLCB0YWJsZS0+YnVja2V0cyApOworICAgIHRhYmxlLT5idWNrZXRzID0gTlVMTDsKKworICAgIHRhYmxlLT5zaXplICA9IDA7CisgICAgdGFibGUtPm5vZGVzID0gMDsKKworICAgIC8qIHJlbW92ZSBhbGwgc291cmNlcyAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgRlRfTUVNX1NPVVJDRV9CVUNLRVRTOyBpKysgKQorICAgIHsKKyAgICAgIEZUX01lbVNvdXJjZSAgc291cmNlLCBuZXh0OworCisKKyAgICAgIGZvciAoIHNvdXJjZSA9IHRhYmxlLT5zb3VyY2VzW2ldOyBzb3VyY2UgIT0gTlVMTDsgc291cmNlID0gbmV4dCApCisgICAgICB7CisgICAgICAgIG5leHQgPSBzb3VyY2UtPmxpbms7CisgICAgICAgIGZ0X21lbV90YWJsZV9mcmVlKCB0YWJsZSwgc291cmNlICk7CisgICAgICB9CisKKyAgICAgIHRhYmxlLT5zb3VyY2VzW2ldID0gTlVMTDsKKyAgICB9CisKKyAgICBwcmludGYoICJGcmVlVHlwZTogdG90YWwgbWVtb3J5IGFsbG9jYXRpb25zID0gJWxkXG4iLAorICAgICAgICAgICAgdGFibGUtPmFsbG9jX3RvdGFsICk7CisgICAgcHJpbnRmKCAiRnJlZVR5cGU6IG1heGltdW0gbWVtb3J5IGZvb3RwcmludCA9ICVsZFxuIiwKKyAgICAgICAgICAgIHRhYmxlLT5hbGxvY19tYXggKTsKKworICAgIGZ0X21lbV90YWJsZV9mcmVlKCB0YWJsZSwgdGFibGUgKTsKKworICAgIGlmICggbGVha19jb3VudCA+IDAgKQorICAgICAgZnRfbWVtX2RlYnVnX3BhbmljKAorICAgICAgICAiRnJlZVR5cGU6ICVsZCBieXRlcyBvZiBtZW1vcnkgbGVha2VkIGluICVsZCBibG9ja3NcbiIsCisgICAgICAgIGxlYWtzLCBsZWFrX2NvdW50ICk7CisKKyAgICBwcmludGYoICJGcmVlVHlwZTogbm8gbWVtb3J5IGxlYWtzIGRldGVjdGVkXG4iICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9NZW1Ob2RlKgorICBmdF9tZW1fdGFibGVfZ2V0X25vZGVwKCBGVF9NZW1UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICBhZGRyZXNzICkKKyAgeworICAgIEZUX1B0ckRpc3QgICBoYXNoOworICAgIEZUX01lbU5vZGUgICpwbm9kZSwgbm9kZTsKKworCisgICAgaGFzaCAgPSBGVF9NRU1fVkFMKCBhZGRyZXNzICk7CisgICAgcG5vZGUgPSB0YWJsZS0+YnVja2V0cyArICggaGFzaCAlIHRhYmxlLT5zaXplICk7CisKKyAgICBmb3IgKDs7KQorICAgIHsKKyAgICAgIG5vZGUgPSBwbm9kZVswXTsKKyAgICAgIGlmICggIW5vZGUgKQorICAgICAgICBicmVhazsKKworICAgICAgaWYgKCBub2RlLT5hZGRyZXNzID09IGFkZHJlc3MgKQorICAgICAgICBicmVhazsKKworICAgICAgcG5vZGUgPSAmbm9kZS0+bGluazsKKyAgICB9CisgICAgcmV0dXJuIHBub2RlOworICB9CisKKworICBzdGF0aWMgRlRfTWVtU291cmNlCisgIGZ0X21lbV90YWJsZV9nZXRfc291cmNlKCBGVF9NZW1UYWJsZSAgdGFibGUgKQorICB7CisgICAgRlRfVUludDMyICAgICBoYXNoOworICAgIEZUX01lbVNvdXJjZSAgbm9kZSwgKnBub2RlOworCisKKyAgICAvKiBjYXN0IHRvIEZUX1B0ckRpc3QgZmlyc3Qgc2luY2Ugdm9pZCogY2FuIGJlIGxhcmdlciAqLworICAgIC8qIHRoYW4gRlRfVUludDMyIGFuZCBHQ0MgNC4xLjEgZW1pdHMgYSB3YXJuaW5nICAgICAgICovCisgICAgaGFzaCAgPSAoRlRfVUludDMyKShGVF9QdHJEaXN0KSh2b2lkKilfZnRfZGVidWdfZmlsZSArCisgICAgICAgICAgICAgIChGVF9VSW50MzIpKCA1ICogX2Z0X2RlYnVnX2xpbmVubyApOworICAgIHBub2RlID0gJnRhYmxlLT5zb3VyY2VzW2hhc2ggJSBGVF9NRU1fU09VUkNFX0JVQ0tFVFNdOworCisgICAgZm9yICggOzsgKQorICAgIHsKKyAgICAgIG5vZGUgPSAqcG5vZGU7CisgICAgICBpZiAoIG5vZGUgPT0gTlVMTCApCisgICAgICAgIGJyZWFrOworCisgICAgICBpZiAoIG5vZGUtPmZpbGVfbmFtZSA9PSBfZnRfZGVidWdfZmlsZSAmJgorICAgICAgICAgICBub2RlLT5saW5lX25vICAgPT0gX2Z0X2RlYnVnX2xpbmVubyAgICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBwbm9kZSA9ICZub2RlLT5saW5rOworICAgIH0KKworICAgIG5vZGUgPSAoRlRfTWVtU291cmNlKWZ0X21lbV90YWJsZV9hbGxvYyggdGFibGUsIHNpemVvZiAoICpub2RlICkgKTsKKyAgICBpZiAoIG5vZGUgPT0gTlVMTCApCisgICAgICBmdF9tZW1fZGVidWdfcGFuaWMoCisgICAgICAgICJub3QgZW5vdWdoIG1lbW9yeSB0byBwZXJmb3JtIG1lbW9yeSBkZWJ1Z2dpbmdcbiIgKTsKKworICAgIG5vZGUtPmZpbGVfbmFtZSA9IF9mdF9kZWJ1Z19maWxlOworICAgIG5vZGUtPmxpbmVfbm8gICA9IF9mdF9kZWJ1Z19saW5lbm87CisKKyAgICBub2RlLT5jdXJfYmxvY2tzID0gMDsKKyAgICBub2RlLT5tYXhfYmxvY2tzID0gMDsKKyAgICBub2RlLT5hbGxfYmxvY2tzID0gMDsKKworICAgIG5vZGUtPmN1cl9zaXplICAgPSAwOworICAgIG5vZGUtPm1heF9zaXplICAgPSAwOworICAgIG5vZGUtPmFsbF9zaXplICAgPSAwOworCisgICAgbm9kZS0+Y3VyX21heCAgICA9IDA7CisKKyAgICBub2RlLT5saW5rID0gTlVMTDsKKyAgICBub2RlLT5oYXNoID0gaGFzaDsKKyAgICAqcG5vZGUgICAgID0gbm9kZTsKKworICBFeGl0OgorICAgIHJldHVybiBub2RlOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF9tZW1fdGFibGVfc2V0KCBGVF9NZW1UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICBhZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgIGRlbHRhICkKKyAgeworICAgIEZUX01lbU5vZGUgICpwbm9kZSwgbm9kZTsKKworCisgICAgaWYgKCB0YWJsZSApCisgICAgeworICAgICAgRlRfTWVtU291cmNlICBzb3VyY2U7CisKKworICAgICAgcG5vZGUgPSBmdF9tZW1fdGFibGVfZ2V0X25vZGVwKCB0YWJsZSwgYWRkcmVzcyApOworICAgICAgbm9kZSAgPSAqcG5vZGU7CisgICAgICBpZiAoIG5vZGUgKQorICAgICAgeworICAgICAgICBpZiAoIG5vZGUtPnNpemUgPCAwICkKKyAgICAgICAgeworICAgICAgICAgIC8qIFRoaXMgYmxvY2sgd2FzIGFscmVhZHkgZnJlZWQuICBPdXIgbWVtb3J5IGlzIG5vdyBjb21wbGV0ZWx5ICovCisgICAgICAgICAgLyogY29ycnVwdGVkISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpbiBrZWVwLWFsaXZlIG1vZGUuICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIGZ0X21lbV9kZWJ1Z19wYW5pYygKKyAgICAgICAgICAgICJtZW1vcnkgaGVhcCBjb3JydXB0ZWQgKGFsbG9jYXRpbmcgZnJlZWQgYmxvY2spIiApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qIFRoaXMgYmxvY2sgd2FzIGFscmVhZHkgYWxsb2NhdGVkLiAgVGhpcyBtZWFucyB0aGF0IG91ciBtZW1vcnkgKi8KKyAgICAgICAgICAvKiBpcyBhbHNvIGNvcnJ1cHRlZCEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgZnRfbWVtX2RlYnVnX3BhbmljKAorICAgICAgICAgICAgIm1lbW9yeSBoZWFwIGNvcnJ1cHRlZCAocmUtYWxsb2NhdGluZyBhbGxvY2F0ZWQgYmxvY2sgYXQiCisgICAgICAgICAgICAiICVwLCBvZiBzaXplICVsZClcbiIKKyAgICAgICAgICAgICJvcmc9JXM6JWQgbmV3PSVzOiVkXG4iLAorICAgICAgICAgICAgbm9kZS0+YWRkcmVzcywgbm9kZS0+c2l6ZSwKKyAgICAgICAgICAgIEZUX0ZJTEVOQU1FKCBub2RlLT5zb3VyY2UtPmZpbGVfbmFtZSApLCBub2RlLT5zb3VyY2UtPmxpbmVfbm8sCisgICAgICAgICAgICBGVF9GSUxFTkFNRSggX2Z0X2RlYnVnX2ZpbGUgKSwgX2Z0X2RlYnVnX2xpbmVubyApOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IG5vZGUgaW4gdGhpcyB0YWJsZSAqLworICAgICAgbm9kZSA9IChGVF9NZW1Ob2RlKWZ0X21lbV90YWJsZV9hbGxvYyggdGFibGUsIHNpemVvZiAoICpub2RlICkgKTsKKyAgICAgIGlmICggbm9kZSA9PSBOVUxMICkKKyAgICAgICAgZnRfbWVtX2RlYnVnX3BhbmljKCAibm90IGVub3VnaCBtZW1vcnkgdG8gcnVuIG1lbW9yeSB0ZXN0cyIgKTsKKworICAgICAgbm9kZS0+YWRkcmVzcyA9IGFkZHJlc3M7CisgICAgICBub2RlLT5zaXplICAgID0gc2l6ZTsKKyAgICAgIG5vZGUtPnNvdXJjZSAgPSBzb3VyY2UgPSBmdF9tZW1fdGFibGVfZ2V0X3NvdXJjZSggdGFibGUgKTsKKworICAgICAgaWYgKCBkZWx0YSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgLyogdGhpcyBpcyBhbiBhbGxvY2F0aW9uICovCisgICAgICAgIHNvdXJjZS0+YWxsX2Jsb2NrcysrOworICAgICAgICBzb3VyY2UtPmN1cl9ibG9ja3MrKzsKKyAgICAgICAgaWYgKCBzb3VyY2UtPmN1cl9ibG9ja3MgPiBzb3VyY2UtPm1heF9ibG9ja3MgKQorICAgICAgICAgIHNvdXJjZS0+bWF4X2Jsb2NrcyA9IHNvdXJjZS0+Y3VyX2Jsb2NrczsKKyAgICAgIH0KKworICAgICAgaWYgKCBzaXplID4gKEZUX1VMb25nKXNvdXJjZS0+Y3VyX21heCApCisgICAgICAgIHNvdXJjZS0+Y3VyX21heCA9IHNpemU7CisKKyAgICAgIGlmICggZGVsdGEgIT0gMCApCisgICAgICB7CisgICAgICAgIC8qIHdlIGFyZSBncm93aW5nIG9yIHNocmlua2luZyBhIHJlYWxsb2NhdGVkIGJsb2NrICovCisgICAgICAgIHNvdXJjZS0+Y3VyX3NpemUgICAgICs9IGRlbHRhOworICAgICAgICB0YWJsZS0+YWxsb2NfY3VycmVudCArPSBkZWx0YTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgLyogd2UgYXJlIGFsbG9jYXRpbmcgYSBuZXcgYmxvY2sgKi8KKyAgICAgICAgc291cmNlLT5jdXJfc2l6ZSAgICAgKz0gc2l6ZTsKKyAgICAgICAgdGFibGUtPmFsbG9jX2N1cnJlbnQgKz0gc2l6ZTsKKyAgICAgIH0KKworICAgICAgc291cmNlLT5hbGxfc2l6ZSArPSBzaXplOworCisgICAgICBpZiAoIHNvdXJjZS0+Y3VyX3NpemUgPiBzb3VyY2UtPm1heF9zaXplICkKKyAgICAgICAgc291cmNlLT5tYXhfc2l6ZSA9IHNvdXJjZS0+Y3VyX3NpemU7CisKKyAgICAgIG5vZGUtPmZyZWVfZmlsZV9uYW1lID0gTlVMTDsKKyAgICAgIG5vZGUtPmZyZWVfbGluZV9ubyAgID0gMDsKKworICAgICAgbm9kZS0+bGluayA9IHBub2RlWzBdOworCisgICAgICBwbm9kZVswXSA9IG5vZGU7CisgICAgICB0YWJsZS0+bm9kZXMrKzsKKworICAgICAgdGFibGUtPmFsbG9jX3RvdGFsICs9IHNpemU7CisKKyAgICAgIGlmICggdGFibGUtPmFsbG9jX2N1cnJlbnQgPiB0YWJsZS0+YWxsb2NfbWF4ICkKKyAgICAgICAgdGFibGUtPmFsbG9jX21heCA9IHRhYmxlLT5hbGxvY19jdXJyZW50OworCisgICAgICBpZiAoIHRhYmxlLT5ub2RlcyAqIDMgPCB0YWJsZS0+c2l6ZSAgfHwKKyAgICAgICAgICAgdGFibGUtPnNpemUgICogMyA8IHRhYmxlLT5ub2RlcyApCisgICAgICAgIGZ0X21lbV90YWJsZV9yZXNpemUoIHRhYmxlICk7CisgICAgfQorICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF9tZW1fdGFibGVfcmVtb3ZlKCBGVF9NZW1UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICBhZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgZGVsdGEgKQorICB7CisgICAgaWYgKCB0YWJsZSApCisgICAgeworICAgICAgRlRfTWVtTm9kZSAgKnBub2RlLCBub2RlOworCisKKyAgICAgIHBub2RlID0gZnRfbWVtX3RhYmxlX2dldF9ub2RlcCggdGFibGUsIGFkZHJlc3MgKTsKKyAgICAgIG5vZGUgID0gKnBub2RlOworICAgICAgaWYgKCBub2RlICkKKyAgICAgIHsKKyAgICAgICAgRlRfTWVtU291cmNlICBzb3VyY2U7CisKKworICAgICAgICBpZiAoIG5vZGUtPnNpemUgPCAwICkKKyAgICAgICAgICBmdF9tZW1fZGVidWdfcGFuaWMoCisgICAgICAgICAgICAiZnJlZWluZyBtZW1vcnkgYmxvY2sgYXQgJXAgbW9yZSB0aGFuIG9uY2UgYXQgKCVzOiVsZClcbiIKKyAgICAgICAgICAgICJibG9jayBhbGxvY2F0ZWQgYXQgKCVzOiVsZCkgYW5kIHJlbGVhc2VkIGF0ICglczolbGQpIiwKKyAgICAgICAgICAgIGFkZHJlc3MsCisgICAgICAgICAgICBGVF9GSUxFTkFNRSggX2Z0X2RlYnVnX2ZpbGUgKSwgX2Z0X2RlYnVnX2xpbmVubywKKyAgICAgICAgICAgIEZUX0ZJTEVOQU1FKCBub2RlLT5zb3VyY2UtPmZpbGVfbmFtZSApLCBub2RlLT5zb3VyY2UtPmxpbmVfbm8sCisgICAgICAgICAgICBGVF9GSUxFTkFNRSggbm9kZS0+ZnJlZV9maWxlX25hbWUgKSwgbm9kZS0+ZnJlZV9saW5lX25vICk7CisKKyAgICAgICAgLyogc2NyYW1ibGUgdGhlIG5vZGUncyBjb250ZW50IGZvciBhZGRpdGlvbmFsIHNhZmV0eSAqLworICAgICAgICBGVF9NRU1fU0VUKCBhZGRyZXNzLCAweEYzLCBub2RlLT5zaXplICk7CisKKyAgICAgICAgaWYgKCBkZWx0YSA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgIHNvdXJjZSA9IG5vZGUtPnNvdXJjZTsKKworICAgICAgICAgIHNvdXJjZS0+Y3VyX2Jsb2Nrcy0tOworICAgICAgICAgIHNvdXJjZS0+Y3VyX3NpemUgLT0gbm9kZS0+c2l6ZTsKKworICAgICAgICAgIHRhYmxlLT5hbGxvY19jdXJyZW50IC09IG5vZGUtPnNpemU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHRhYmxlLT5rZWVwX2FsaXZlICkKKyAgICAgICAgeworICAgICAgICAgIC8qIHdlIHNpbXBseSBpbnZlcnQgdGhlIG5vZGUncyBzaXplIHRvIGluZGljYXRlIHRoYXQgdGhlIG5vZGUgKi8KKyAgICAgICAgICAvKiB3YXMgZnJlZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgbm9kZS0+c2l6ZSAgICAgICAgICAgPSAtbm9kZS0+c2l6ZTsKKyAgICAgICAgICBub2RlLT5mcmVlX2ZpbGVfbmFtZSA9IF9mdF9kZWJ1Z19maWxlOworICAgICAgICAgIG5vZGUtPmZyZWVfbGluZV9ubyAgID0gX2Z0X2RlYnVnX2xpbmVubzsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB0YWJsZS0+bm9kZXMtLTsKKworICAgICAgICAgICpwbm9kZSA9IG5vZGUtPmxpbms7CisKKyAgICAgICAgICBub2RlLT5zaXplICAgPSAwOworICAgICAgICAgIG5vZGUtPnNvdXJjZSA9IE5VTEw7CisKKyAgICAgICAgICBmdF9tZW1fdGFibGVfZnJlZSggdGFibGUsIG5vZGUgKTsKKworICAgICAgICAgIGlmICggdGFibGUtPm5vZGVzICogMyA8IHRhYmxlLT5zaXplICB8fAorICAgICAgICAgICAgICAgdGFibGUtPnNpemUgICogMyA8IHRhYmxlLT5ub2RlcyApCisgICAgICAgICAgICBmdF9tZW1fdGFibGVfcmVzaXplKCB0YWJsZSApOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGZ0X21lbV9kZWJ1Z19wYW5pYygKKyAgICAgICAgICAidHJ5aW5nIHRvIGZyZWUgdW5rbm93biBibG9jayBhdCAlcCBpbiAoJXM6JWxkKVxuIiwKKyAgICAgICAgICBhZGRyZXNzLAorICAgICAgICAgIEZUX0ZJTEVOQU1FKCBfZnRfZGVidWdfZmlsZSApLCBfZnRfZGVidWdfbGluZW5vICk7CisgICAgfQorICB9CisKKworICBleHRlcm4gRlRfUG9pbnRlcgorICBmdF9tZW1fZGVidWdfYWxsb2MoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgc2l6ZSApCisgIHsKKyAgICBGVF9NZW1UYWJsZSAgdGFibGUgPSAoRlRfTWVtVGFibGUpbWVtb3J5LT51c2VyOworICAgIEZUX0J5dGUqICAgICBibG9jazsKKworCisgICAgaWYgKCBzaXplIDw9IDAgKQorICAgICAgZnRfbWVtX2RlYnVnX3BhbmljKCAibmVnYXRpdmUgYmxvY2sgc2l6ZSBhbGxvY2F0aW9uICglbGQpIiwgc2l6ZSApOworCisgICAgLyogcmV0dXJuIE5VTEwgaWYgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsbG9jYXRpb25zIHdhcyByZWFjaGVkICovCisgICAgaWYgKCB0YWJsZS0+Ym91bmRfY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgdGFibGUtPmFsbG9jX2NvdW50ID49IHRhYmxlLT5hbGxvY19jb3VudF9tYXggKQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiByZXR1cm4gTlVMTCBpZiB0aGlzIGFsbG9jYXRpb24gd291bGQgb3ZlcmZsb3cgdGhlIG1heGltdW0gaGVhcCBzaXplICovCisgICAgaWYgKCB0YWJsZS0+Ym91bmRfdG90YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgdGFibGUtPmFsbG9jX3RvdGFsX21heCAtIHRhYmxlLT5hbGxvY19jdXJyZW50ID4gKEZUX1VMb25nKXNpemUgKQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBibG9jayA9IChGVF9CeXRlICopZnRfbWVtX3RhYmxlX2FsbG9jKCB0YWJsZSwgc2l6ZSApOworICAgIGlmICggYmxvY2sgKQorICAgIHsKKyAgICAgIGZ0X21lbV90YWJsZV9zZXQoIHRhYmxlLCBibG9jaywgKEZUX1VMb25nKXNpemUsIDAgKTsKKworICAgICAgdGFibGUtPmFsbG9jX2NvdW50Kys7CisgICAgfQorCisgICAgX2Z0X2RlYnVnX2ZpbGUgICA9ICI8dW5rbm93bj4iOworICAgIF9mdF9kZWJ1Z19saW5lbm8gPSAwOworCisgICAgcmV0dXJuIChGVF9Qb2ludGVyKWJsb2NrOworICB9CisKKworICBleHRlcm4gdm9pZAorICBmdF9tZW1fZGVidWdfZnJlZSggRlRfTWVtb3J5ICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgYmxvY2sgKQorICB7CisgICAgRlRfTWVtVGFibGUgIHRhYmxlID0gKEZUX01lbVRhYmxlKW1lbW9yeS0+dXNlcjsKKworCisgICAgaWYgKCBibG9jayA9PSBOVUxMICkKKyAgICAgIGZ0X21lbV9kZWJ1Z19wYW5pYyggInRyeWluZyB0byBmcmVlIE5VTEwgaW4gKCVzOiVsZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GSUxFTkFNRSggX2Z0X2RlYnVnX2ZpbGUgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX2Z0X2RlYnVnX2xpbmVubyApOworCisgICAgZnRfbWVtX3RhYmxlX3JlbW92ZSggdGFibGUsIChGVF9CeXRlKilibG9jaywgMCApOworCisgICAgaWYgKCAhdGFibGUtPmtlZXBfYWxpdmUgKQorICAgICAgZnRfbWVtX3RhYmxlX2ZyZWUoIHRhYmxlLCBibG9jayApOworCisgICAgdGFibGUtPmFsbG9jX2NvdW50LS07CisKKyAgICBfZnRfZGVidWdfZmlsZSAgID0gIjx1bmtub3duPiI7CisgICAgX2Z0X2RlYnVnX2xpbmVubyA9IDA7CisgIH0KKworCisgIGV4dGVybiBGVF9Qb2ludGVyCisgIGZ0X21lbV9kZWJ1Z19yZWFsbG9jKCBGVF9NZW1vcnkgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICBjdXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIG5ld19zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgYmxvY2sgKQorICB7CisgICAgRlRfTWVtVGFibGUgIHRhYmxlID0gKEZUX01lbVRhYmxlKW1lbW9yeS0+dXNlcjsKKyAgICBGVF9NZW1Ob2RlICAgbm9kZSwgKnBub2RlOworICAgIEZUX1BvaW50ZXIgICBuZXdfYmxvY2s7CisgICAgRlRfTG9uZyAgICAgIGRlbHRhOworCisgICAgY29uc3QgY2hhciogIGZpbGVfbmFtZSA9IEZUX0ZJTEVOQU1FKCBfZnRfZGVidWdfZmlsZSApOworICAgIEZUX0xvbmcgICAgICBsaW5lX25vICAgPSBfZnRfZGVidWdfbGluZW5vOworCisKKyAgICAvKiB1bmxpa2VseSwgYnV0IHBvc3NpYmxlICovCisgICAgaWYgKCBuZXdfc2l6ZSA9PSBjdXJfc2l6ZSApCisgICAgICByZXR1cm4gYmxvY2s7CisKKyAgICAvKiB0aGUgZm9sbG93aW5nIGlzIHZhbGlkIGFjY29yZGluZyB0byBBTlNJIEMgKi8KKyNpZiAwCisgICAgaWYgKCBibG9jayA9PSBOVUxMIHx8IGN1cl9zaXplID09IDAgKQorICAgICAgZnRfbWVtX2RlYnVnX3BhbmljKCAidHJ5aW5nIHRvIHJlYWxsb2NhdGUgTlVMTCBpbiAoJXM6JWxkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfbmFtZSwgbGluZV9ubyApOworI2VuZGlmCisKKyAgICAvKiB3aGlsZSB0aGUgZm9sbG93aW5nIGlzIGFsbG93ZWQgaW4gQU5TSSBDIGFsc28sIHdlIGFib3J0IHNpbmNlICovCisgICAgLyogc3VjaCBjYXNlIHNob3VsZCBiZSBoYW5kbGVkIGJ5IEZyZWVUeXBlLiAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggbmV3X3NpemUgPD0gMCApCisgICAgICBmdF9tZW1fZGVidWdfcGFuaWMoCisgICAgICAgICJ0cnlpbmcgdG8gcmVhbGxvY2F0ZSAlcCB0byBzaXplIDAgKGN1cnJlbnQgaXMgJWxkKSBpbiAoJXM6JWxkKSIsCisgICAgICAgIGJsb2NrLCBjdXJfc2l6ZSwgZmlsZV9uYW1lLCBsaW5lX25vICk7CisKKyAgICAvKiBjaGVjayBgY3VyX3NpemUnIHZhbHVlICovCisgICAgcG5vZGUgPSBmdF9tZW1fdGFibGVfZ2V0X25vZGVwKCB0YWJsZSwgKEZUX0J5dGUqKWJsb2NrICk7CisgICAgbm9kZSAgPSAqcG5vZGU7CisgICAgaWYgKCAhbm9kZSApCisgICAgICBmdF9tZW1fZGVidWdfcGFuaWMoCisgICAgICAgICJ0cnlpbmcgdG8gcmVhbGxvY2F0ZSB1bmtub3duIGJsb2NrIGF0ICVwIGluICglczolbGQpIiwKKyAgICAgICAgYmxvY2ssIGZpbGVfbmFtZSwgbGluZV9ubyApOworCisgICAgaWYgKCBub2RlLT5zaXplIDw9IDAgKQorICAgICAgZnRfbWVtX2RlYnVnX3BhbmljKAorICAgICAgICAidHJ5aW5nIHRvIHJlYWxsb2NhdGUgZnJlZWQgYmxvY2sgYXQgJXAgaW4gKCVzOiVsZCkiLAorICAgICAgICBibG9jaywgZmlsZV9uYW1lLCBsaW5lX25vICk7CisKKyAgICBpZiAoIG5vZGUtPnNpemUgIT0gY3VyX3NpemUgKQorICAgICAgZnRfbWVtX2RlYnVnX3BhbmljKCAiaW52YWxpZCBmdF9yZWFsbG9jIHJlcXVlc3QgZm9yICVwLiBjdXJfc2l6ZSBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIlbGQgaW5zdGVhZCBvZiAlbGQgaW4gKCVzOiVsZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywgY3VyX3NpemUsIG5vZGUtPnNpemUsIGZpbGVfbmFtZSwgbGluZV9ubyApOworCisgICAgLyogcmV0dXJuIE5VTEwgaWYgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsbG9jYXRpb25zIHdhcyByZWFjaGVkICovCisgICAgaWYgKCB0YWJsZS0+Ym91bmRfY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgdGFibGUtPmFsbG9jX2NvdW50ID49IHRhYmxlLT5hbGxvY19jb3VudF9tYXggKQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBkZWx0YSA9IChGVF9Mb25nKSggbmV3X3NpemUgLSBjdXJfc2l6ZSApOworCisgICAgLyogcmV0dXJuIE5VTEwgaWYgdGhpcyBhbGxvY2F0aW9uIHdvdWxkIG92ZXJmbG93IHRoZSBtYXhpbXVtIGhlYXAgc2l6ZSAqLworICAgIGlmICggZGVsdGEgPiAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICB0YWJsZS0+Ym91bmRfdG90YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIHRhYmxlLT5hbGxvY19jdXJyZW50ICsgKEZUX1VMb25nKWRlbHRhID4gdGFibGUtPmFsbG9jX3RvdGFsX21heCApCisgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5ld19ibG9jayA9IChGVF9CeXRlICopZnRfbWVtX3RhYmxlX2FsbG9jKCB0YWJsZSwgbmV3X3NpemUgKTsKKyAgICBpZiAoIG5ld19ibG9jayA9PSBOVUxMICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgZnRfbWVtX3RhYmxlX3NldCggdGFibGUsIChGVF9CeXRlKiluZXdfYmxvY2ssIG5ld19zaXplLCBkZWx0YSApOworCisgICAgZnRfbWVtY3B5KCBuZXdfYmxvY2ssIGJsb2NrLCBjdXJfc2l6ZSA8IG5ld19zaXplID8gY3VyX3NpemUgOiBuZXdfc2l6ZSApOworCisgICAgZnRfbWVtX3RhYmxlX3JlbW92ZSggdGFibGUsIChGVF9CeXRlKilibG9jaywgZGVsdGEgKTsKKworICAgIF9mdF9kZWJ1Z19maWxlICAgPSAiPHVua25vd24+IjsKKyAgICBfZnRfZGVidWdfbGluZW5vID0gMDsKKworICAgIGlmICggIXRhYmxlLT5rZWVwX2FsaXZlICkKKyAgICAgIGZ0X21lbV90YWJsZV9mcmVlKCB0YWJsZSwgYmxvY2sgKTsKKworICAgIHJldHVybiBuZXdfYmxvY2s7CisgIH0KKworCisgIGV4dGVybiBGVF9JbnQKKyAgZnRfbWVtX2RlYnVnX2luaXQoIEZUX01lbW9yeSAgbWVtb3J5ICkKKyAgeworICAgIEZUX01lbVRhYmxlICB0YWJsZTsKKyAgICBGVF9JbnQgICAgICAgcmVzdWx0ID0gMDsKKworCisgICAgaWYgKDEpLyogWFlROiBhbHdheXMgZW5hYmxlICggZ2V0ZW52KCAiRlQyX0RFQlVHX01FTU9SWSIgKSApICovCisgICAgeworICAgICAgdGFibGUgPSBmdF9tZW1fdGFibGVfbmV3KCBtZW1vcnkgKTsKKyAgICAgIGlmICggdGFibGUgKQorICAgICAgeworICAgICAgICBjb25zdCBjaGFyKiAgcDsKKworCisgICAgICAgIG1lbW9yeS0+dXNlciAgICA9IHRhYmxlOworICAgICAgICBtZW1vcnktPmFsbG9jICAgPSBmdF9tZW1fZGVidWdfYWxsb2M7CisgICAgICAgIG1lbW9yeS0+cmVhbGxvYyA9IGZ0X21lbV9kZWJ1Z19yZWFsbG9jOworICAgICAgICBtZW1vcnktPmZyZWUgICAgPSBmdF9tZW1fZGVidWdfZnJlZTsKKworICAgICAgICBwID0gZ2V0ZW52KCAiRlQyX0FMTE9DX1RPVEFMX01BWCIgKTsKKyAgICAgICAgaWYgKCBwICE9IE5VTEwgKQorICAgICAgICB7CisgICAgICAgICAgRlRfTG9uZyAgIHRvdGFsX21heCA9IGZ0X2F0b2woIHAgKTsKKworCisgICAgICAgICAgaWYgKCB0b3RhbF9tYXggPiAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICB0YWJsZS0+Ym91bmRfdG90YWwgICAgID0gMTsKKyAgICAgICAgICAgIHRhYmxlLT5hbGxvY190b3RhbF9tYXggPSAoRlRfVUxvbmcpdG90YWxfbWF4OworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHAgPSBnZXRlbnYoICJGVDJfQUxMT0NfQ09VTlRfTUFYIiApOworICAgICAgICBpZiAoIHAgIT0gTlVMTCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9Mb25nICB0b3RhbF9jb3VudCA9IGZ0X2F0b2woIHAgKTsKKworCisgICAgICAgICAgaWYgKCB0b3RhbF9jb3VudCA+IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHRhYmxlLT5ib3VuZF9jb3VudCAgICAgPSAxOworICAgICAgICAgICAgdGFibGUtPmFsbG9jX2NvdW50X21heCA9IChGVF9VTG9uZyl0b3RhbF9jb3VudDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwID0gZ2V0ZW52KCAiRlQyX0tFRVBfQUxJVkUiICk7CisgICAgICAgIGlmICggcCAhPSBOVUxMICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0xvbmcgIGtlZXBfYWxpdmUgPSBmdF9hdG9sKCBwICk7CisKKworICAgICAgICAgIGlmICgga2VlcF9hbGl2ZSA+IDAgKQorICAgICAgICAgICAgdGFibGUtPmtlZXBfYWxpdmUgPSAxOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgZXh0ZXJuIHZvaWQKKyAgZnRfbWVtX2RlYnVnX2RvbmUoIEZUX01lbW9yeSAgbWVtb3J5ICkKKyAgeworICAgIEZUX01lbVRhYmxlICB0YWJsZSA9IChGVF9NZW1UYWJsZSltZW1vcnktPnVzZXI7CisKKworICAgIGlmICggdGFibGUgKQorICAgIHsKKyAgICAgIG1lbW9yeS0+ZnJlZSAgICA9IHRhYmxlLT5mcmVlOworICAgICAgbWVtb3J5LT5yZWFsbG9jID0gdGFibGUtPnJlYWxsb2M7CisgICAgICBtZW1vcnktPmFsbG9jICAgPSB0YWJsZS0+YWxsb2M7CisKKyAgICAgIGZ0X21lbV90YWJsZV9kZXN0cm95KCB0YWJsZSApOworICAgICAgbWVtb3J5LT51c2VyID0gTlVMTDsKKyAgICB9CisgIH0KKworCisKKyAgc3RhdGljIGludAorICBmdF9tZW1fc291cmNlX2NvbXBhcmUoIGNvbnN0IHZvaWQqICBwMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiAgcDIgKQorICB7CisgICAgRlRfTWVtU291cmNlICBzMSA9ICooRlRfTWVtU291cmNlKilwMTsKKyAgICBGVF9NZW1Tb3VyY2UgIHMyID0gKihGVF9NZW1Tb3VyY2UqKXAyOworCisKKyAgICBpZiAoIHMyLT5tYXhfc2l6ZSA+IHMxLT5tYXhfc2l6ZSApCisgICAgICByZXR1cm4gMTsKKyAgICBlbHNlIGlmICggczItPm1heF9zaXplIDwgczEtPm1heF9zaXplICkKKyAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgZXh0ZXJuIHZvaWQKKyAgRlRfRHVtcE1lbW9yeSggRlRfTWVtb3J5ICBtZW1vcnkgKQorICB7CisgICAgRlRfTWVtVGFibGUgIHRhYmxlID0gKEZUX01lbVRhYmxlKW1lbW9yeS0+dXNlcjsKKworCisgICAgaWYgKCB0YWJsZSApCisgICAgeworICAgICAgRlRfTWVtU291cmNlKiAgYnVja2V0ID0gdGFibGUtPnNvdXJjZXM7CisgICAgICBGVF9NZW1Tb3VyY2UqICBsaW1pdCAgPSBidWNrZXQgKyBGVF9NRU1fU09VUkNFX0JVQ0tFVFM7CisgICAgICBGVF9NZW1Tb3VyY2UqICBzb3VyY2VzOworICAgICAgRlRfVUludCAgICAgICAgbm4sIGNvdW50OworICAgICAgY29uc3QgY2hhciogICAgZm10OworCisKKyAgICAgIGNvdW50ID0gMDsKKyAgICAgIGZvciAoIDsgYnVja2V0IDwgbGltaXQ7IGJ1Y2tldCsrICkKKyAgICAgIHsKKyAgICAgICAgRlRfTWVtU291cmNlICBzb3VyY2UgPSAqYnVja2V0OworCisKKyAgICAgICAgZm9yICggOyBzb3VyY2U7IHNvdXJjZSA9IHNvdXJjZS0+bGluayApCisgICAgICAgICAgY291bnQrKzsKKyAgICAgIH0KKworICAgICAgc291cmNlcyA9IChGVF9NZW1Tb3VyY2UqKWZ0X21lbV90YWJsZV9hbGxvYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLCBzaXplb2YgKCAqc291cmNlcyApICogY291bnQgKTsKKworICAgICAgY291bnQgPSAwOworICAgICAgZm9yICggYnVja2V0ID0gdGFibGUtPnNvdXJjZXM7IGJ1Y2tldCA8IGxpbWl0OyBidWNrZXQrKyApCisgICAgICB7CisgICAgICAgIEZUX01lbVNvdXJjZSAgc291cmNlID0gKmJ1Y2tldDsKKworCisgICAgICAgIGZvciAoIDsgc291cmNlOyBzb3VyY2UgPSBzb3VyY2UtPmxpbmsgKQorICAgICAgICAgIHNvdXJjZXNbY291bnQrK10gPSBzb3VyY2U7CisgICAgICB9CisKKyAgICAgIGZ0X3Fzb3J0KCBzb3VyY2VzLCBjb3VudCwgc2l6ZW9mICggKnNvdXJjZXMgKSwgZnRfbWVtX3NvdXJjZV9jb21wYXJlICk7CisKKyAgICAgIHByaW50ZiggIkZyZWVUeXBlIE1lbW9yeSBEdW1wOiAiCisgICAgICAgICAgICAgICJjdXJyZW50PSVsZCBtYXg9JWxkIHRvdGFsPSVsZCBjb3VudD0lbGRcbiIsCisgICAgICAgICAgICAgIHRhYmxlLT5hbGxvY19jdXJyZW50LCB0YWJsZS0+YWxsb2NfbWF4LAorICAgICAgICAgICAgICB0YWJsZS0+YWxsb2NfdG90YWwsIHRhYmxlLT5hbGxvY19jb3VudCApOworICAgICAgcHJpbnRmKCAiIGJsb2NrICBibG9jayAgICBzaXplcyAgICBzaXplcyAgICBzaXplcyAgIHNvdXJjZVxuIiApOworICAgICAgcHJpbnRmKCAiIGNvdW50ICAgaGlnaCAgICAgIHN1bSAgaGlnaHN1bSAgICAgIG1heCAgIGxvY2F0aW9uXG4iICk7CisgICAgICBwcmludGYoICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iICk7CisKKyAgICAgIGZtdCA9ICIlNmxkICU2bGQgJThsZCAlOGxkICU4bGQgJXM6JWRcbiI7CisKKyAgICAgIGZvciAoIG5uID0gMDsgbm4gPCBjb3VudDsgbm4rKyApCisgICAgICB7CisgICAgICAgIEZUX01lbVNvdXJjZSAgc291cmNlID0gc291cmNlc1tubl07CisKKworICAgICAgICBwcmludGYoIGZtdCwKKyAgICAgICAgICAgICAgICBzb3VyY2UtPmN1cl9ibG9ja3MsIHNvdXJjZS0+bWF4X2Jsb2NrcywKKyAgICAgICAgICAgICAgICBzb3VyY2UtPmN1cl9zaXplLCBzb3VyY2UtPm1heF9zaXplLCBzb3VyY2UtPmN1cl9tYXgsCisgICAgICAgICAgICAgICAgRlRfRklMRU5BTUUoIHNvdXJjZS0+ZmlsZV9uYW1lICksCisgICAgICAgICAgICAgICAgc291cmNlLT5saW5lX25vICk7CisgICAgICB9CisgICAgICBwcmludGYoICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIgKTsKKworICAgICAgZnRfbWVtX3RhYmxlX2ZyZWUoIHRhYmxlLCBzb3VyY2VzICk7CisgICAgfQorICB9CisKKyNlbHNlICAvKiAhRlRfREVCVUdfTUVNT1JZICovCisKKyAgLyogQU5TSSBDIGRvZXNuJ3QgbGlrZSBlbXB0eSBzb3VyY2UgZmlsZXMgKi8KKyAgdHlwZWRlZiBpbnQgIF9kZWJ1Z19tZW1fZHVtbXk7CisKKyNlbmRpZiAvKiAhRlRfREVCVUdfTUVNT1JZICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRkZWJ1Zy5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0ZGVidWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Yjk4Y2YwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0ZGVidWcuYwpAQCAtMCwwICsxLDI2NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRkZWJ1Zy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIERlYnVnZ2luZyBhbmQgbG9nZ2luZyBjb21wb25lbnQgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIsIDIwMDQsIDIwMDgsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBjb21wb25lbnQgY29udGFpbnMgdmFyaW91cyBtYWNyb3MgYW5kIGZ1bmN0aW9ucyB1c2VkIHRvIGVhc2UgdGhlICovCisgIC8qIGRlYnVnZ2luZyBvZiB0aGUgRnJlZVR5cGUgZW5naW5lLiAgSXRzIG1haW4gcHVycG9zZSBpcyBpbiBhc3NlcnRpb24gICAqLworICAvKiBjaGVja2luZywgdHJhY2luZywgYW5kIGVycm9yIGRldGVjdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZXJlIGFyZSBub3cgdGhyZWUgZGVidWdnaW5nIG1vZGVzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSB0cmFjZSBtb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEVycm9yIGFuZCB0cmFjZSBtZXNzYWdlcyBhcmUgc2VudCB0byB0aGUgbG9nIGZpbGUgKHdoaWNoIGNhbiBiZSB0aGUgKi8KKyAgLyogICBzdGFuZGFyZCBlcnJvciBvdXRwdXQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtIGVycm9yIG1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgT25seSBlcnJvciBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSByZWxlYXNlIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIE5vIGVycm9yIG1lc3NhZ2UgaXMgc2VudCBvciBnZW5lcmF0ZWQuICBUaGUgY29kZSBpcyBmcmVlIGZyb20gYW55ICAgKi8KKyAgLyogICBkZWJ1Z2dpbmcgcGFydHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfRVJST1IKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0ZGVidWcuaCAqLworCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgRlRfTWVzc2FnZSggY29uc3QgY2hhciogIGZtdCwKKyAgICAgICAgICAgICAgLi4uICkKKyAgeworICAgIHZhX2xpc3QgIGFwOworCisKKyAgICB2YV9zdGFydCggYXAsIGZtdCApOworICAgIHZmcHJpbnRmKCBzdGRlcnIsIGZtdCwgYXAgKTsKKyAgICB2YV9lbmQoIGFwICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRkZWJ1Zy5oICovCisKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBGVF9QYW5pYyggY29uc3QgY2hhciogIGZtdCwKKyAgICAgICAgICAgIC4uLiApCisgIHsKKyAgICB2YV9saXN0ICBhcDsKKworCisgICAgdmFfc3RhcnQoIGFwLCBmbXQgKTsKKyAgICB2ZnByaW50Ziggc3RkZXJyLCBmbXQsIGFwICk7CisgICAgdmFfZW5kKCBhcCApOworCisgICAgZXhpdCggRVhJVF9GQUlMVVJFICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRkZWJ1Zy5oICovCisKKyAgRlRfQkFTRV9ERUYoIGludCApCisgIEZUX1Rocm93KCBGVF9FcnJvciAgICAgZXJyb3IsCisgICAgICAgICAgICBpbnQgICAgICAgICAgbGluZSwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqICBmaWxlICkKKyAgeworICAgIEZUX1VOVVNFRCggZXJyb3IgKTsKKyAgICBGVF9VTlVTRUQoIGxpbmUgKTsKKyAgICBGVF9VTlVTRUQoIGZpbGUgKTsKKworICAgIHJldHVybiAwOworICB9CisKKyNlbmRpZiAvKiBGVF9ERUJVR19MRVZFTF9FUlJPUiAqLworCisKKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisKKyAgLyogYXJyYXkgb2YgdHJhY2UgbGV2ZWxzLCBpbml0aWFsaXplZCB0byAwICovCisgIGludCAgZnRfdHJhY2VfbGV2ZWxzW3RyYWNlX2NvdW50XTsKKworCisgIC8qIGRlZmluZSBhcnJheSBvZiB0cmFjZSB0b2dnbGUgbmFtZXMgKi8KKyNkZWZpbmUgRlRfVFJBQ0VfREVGKCB4ICkgICN4ICwKKworICBzdGF0aWMgY29uc3QgY2hhciogIGZ0X3RyYWNlX3RvZ2dsZXNbdHJhY2VfY291bnQgKyAxXSA9CisgIHsKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaCIKKyAgICBOVUxMCisgIH07CisKKyN1bmRlZiBGVF9UUkFDRV9ERUYKKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRkZWJ1Zy5oICovCisKKyAgRlRfQkFTRV9ERUYoIEZUX0ludCApCisgIEZUX1RyYWNlX0dldF9Db3VudCggdm9pZCApCisgIHsKKyAgICByZXR1cm4gdHJhY2VfY291bnQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRkZWJ1Zy5oICovCisKKyAgRlRfQkFTRV9ERUYoIGNvbnN0IGNoYXIgKiApCisgIEZUX1RyYWNlX0dldF9OYW1lKCBGVF9JbnQgIGlkeCApCisgIHsKKyAgICBpbnQgIG1heCA9IEZUX1RyYWNlX0dldF9Db3VudCgpOworCisKKyAgICBpZiAoIGlkeCA8IG1heCApCisgICAgICByZXR1cm4gZnRfdHJhY2VfdG9nZ2xlc1tpZHhdOworICAgIGVsc2UKKyAgICAgIHJldHVybiBOVUxMOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEluaXRpYWxpemUgdGhlIHRyYWNpbmcgc3ViLXN5c3RlbS4gIFRoaXMgaXMgZG9uZSBieSByZXRyaWV2aW5nIHRoZSAgICAqLworICAvKiB2YWx1ZSBvZiB0aGUgYEZUMl9ERUJVRycgZW52aXJvbm1lbnQgdmFyaWFibGUuICBJdCBtdXN0IGJlIGEgbGlzdCBvZiAgKi8KKyAgLyogdG9nZ2xlcywgc2VwYXJhdGVkIGJ5IHNwYWNlcywgYDsnLCBvciBgLCcuICBFeGFtcGxlOiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBleHBvcnQgRlQyX0RFQlVHPSJhbnk6MyBtZW1vcnk6NyBzdHJlYW06NSIgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgcmVxdWVzdHMgdGhhdCBhbGwgbGV2ZWxzIGJlIHNldCB0byAzLCBleGNlcHQgdGhlIHRyYWNlIGxldmVsIGZvciAqLworICAvKiB0aGUgbWVtb3J5IGFuZCBzdHJlYW0gY29tcG9uZW50cyB3aGljaCBhcmUgc2V0IHRvIDcgYW5kIDUsICAgICAgICAgICAgKi8KKyAgLyogcmVzcGVjdGl2ZWx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTZWUgdGhlIGZpbGUgPGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oPiBmb3IgZGV0YWlscyBvZiB0aGUgKi8KKyAgLyogYXZhaWxhYmxlIHRvZ2dsZSBuYW1lcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbGV2ZWwgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDc7IDAgbWVhbnMgcXVpZXQgKGV4Y2VwdCBmb3Igc2VyaW91cyAgKi8KKyAgLyogcnVudGltZSBlcnJvcnMpLCBhbmQgNyBtZWFucyBfdmVyeV8gdmVyYm9zZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIGZ0X2RlYnVnX2luaXQoIHZvaWQgKQorICB7CisgICAgY29uc3QgY2hhciogIGZ0Ml9kZWJ1ZyA9IGdldGVudiggIkZUMl9ERUJVRyIgKTsKKworCisgICAgaWYgKCBmdDJfZGVidWcgKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIqICBwID0gZnQyX2RlYnVnOworICAgICAgY29uc3QgY2hhciogIHE7CisKKworICAgICAgZm9yICggOyAqcDsgcCsrICkKKyAgICAgIHsKKyAgICAgICAgLyogc2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIHNlcGFyYXRvcnMgKi8KKyAgICAgICAgaWYgKCAqcCA9PSAnICcgfHwgKnAgPT0gJ1x0JyB8fCAqcCA9PSAnLCcgfHwgKnAgPT0gJzsnIHx8ICpwID09ICc9JyApCisgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLyogcmVhZCB0b2dnbGUgbmFtZSwgZm9sbG93ZWQgYnkgJzonICovCisgICAgICAgIHEgPSBwOworICAgICAgICB3aGlsZSAoICpwICYmICpwICE9ICc6JyApCisgICAgICAgICAgcCsrOworCisgICAgICAgIGlmICggISpwICkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoICpwID09ICc6JyAmJiBwID4gcSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9JbnQgIG4sIGksIGxlbiA9IChGVF9JbnQpKCBwIC0gcSApOworICAgICAgICAgIEZUX0ludCAgbGV2ZWwgPSAtMSwgZm91bmQgPSAtMTsKKworCisgICAgICAgICAgZm9yICggbiA9IDA7IG4gPCB0cmFjZV9jb3VudDsgbisrICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiAgdG9nZ2xlID0gZnRfdHJhY2VfdG9nZ2xlc1tuXTsKKworCisgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKCB0b2dnbGVbaV0gIT0gcVtpXSApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggaSA9PSBsZW4gJiYgdG9nZ2xlW2ldID09IDAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBmb3VuZCA9IG47CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIC8qIHJlYWQgbGV2ZWwgKi8KKyAgICAgICAgICBwKys7CisgICAgICAgICAgaWYgKCAqcCApCisgICAgICAgICAgeworICAgICAgICAgICAgbGV2ZWwgPSAqcCAtICcwJzsKKyAgICAgICAgICAgIGlmICggbGV2ZWwgPCAwIHx8IGxldmVsID4gNyApCisgICAgICAgICAgICAgIGxldmVsID0gLTE7CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKCBmb3VuZCA+PSAwICYmIGxldmVsID49IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggZm91bmQgPT0gdHJhY2VfYW55ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogc3BlY2lhbCBjYXNlIGZvciBgYW55JyAqLworICAgICAgICAgICAgICBmb3IgKCBuID0gMDsgbiA8IHRyYWNlX2NvdW50OyBuKysgKQorICAgICAgICAgICAgICAgIGZ0X3RyYWNlX2xldmVsc1tuXSA9IGxldmVsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBmdF90cmFjZV9sZXZlbHNbZm91bmRdID0gbGV2ZWw7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKworI2Vsc2UgIC8qICFGVF9ERUJVR19MRVZFTF9UUkFDRSAqLworCisKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBmdF9kZWJ1Z19pbml0KCB2b2lkICkKKyAgeworICAgIC8qIG5vdGhpbmcgKi8KKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX0ludCApCisgIEZUX1RyYWNlX0dldF9Db3VudCggdm9pZCApCisgIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIGNvbnN0IGNoYXIgKiApCisgIEZUX1RyYWNlX0dldF9OYW1lKCBGVF9JbnQgIGlkeCApCisgIHsKKyAgICBGVF9VTlVTRUQoIGlkeCApOworCisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworCisjZW5kaWYgLyogIUZUX0RFQlVHX0xFVkVMX1RSQUNFICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRmc3R5cGUuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGZzdHlwZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ODI2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRmc3R5cGUuYwpAQCAtMCwwICsxLDYyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGZzdHlwZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgdXRpbGl0eSBmaWxlIHRvIGFjY2VzcyBGU1R5cGUgZGF0YSAoYm9keSkuICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNpbmZvLmgiCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9VU2hvcnQgKQorICBGVF9HZXRfRlNUeXBlX0ZsYWdzKCBGVF9GYWNlICBmYWNlICkKKyAgeworICAgIFRUX09TMiogIG9zMjsKKworCisgICAgLyogZmlyc3QsIHRyeSB0byBnZXQgdGhlIGZzX3R5cGUgZGlyZWN0bHkgZnJvbSB0aGUgZm9udCAqLworICAgIGlmICggZmFjZSApCisgICAgeworICAgICAgRlRfU2VydmljZV9Qc0luZm8gIHNlcnZpY2UgPSBOVUxMOworCisKKyAgICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBQT1NUU0NSSVBUX0lORk8gKTsKKworICAgICAgaWYgKCBzZXJ2aWNlICYmIHNlcnZpY2UtPnBzX2dldF9mb250X2V4dHJhICkKKyAgICAgIHsKKyAgICAgICAgUFNfRm9udEV4dHJhUmVjICBleHRyYTsKKworCisgICAgICAgIGlmICggIXNlcnZpY2UtPnBzX2dldF9mb250X2V4dHJhKCBmYWNlLCAmZXh0cmEgKSAmJgorICAgICAgICAgICAgIGV4dHJhLmZzX3R5cGUgIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgIHJldHVybiBleHRyYS5mc190eXBlOworICAgICAgfQorICAgIH0KKworICAgIC8qIGxvb2sgYXQgRlNUeXBlIGJlZm9yZSBmc1R5cGUgZm9yIFR5cGU0MiAqLworCisgICAgaWYgKCAoIG9zMiA9IChUVF9PUzIqKUZUX0dldF9TZm50X1RhYmxlKCBmYWNlLCBmdF9zZm50X29zMiApICkgIT0gTlVMTCAmJgorICAgICAgICAgb3MyLT52ZXJzaW9uICE9IDB4RkZGRlUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgcmV0dXJuIG9zMi0+ZnNUeXBlOworCisgICAgcmV0dXJuIDA7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGdhc3AuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdGdhc3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTg3ZDk2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0Z2FzcC5jCkBAIC0wLDAgKzEsNjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Z2FzcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBY2Nlc3Mgb2YgVHJ1ZVR5cGUncyBgZ2FzcCcgdGFibGUgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z2FzcC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIgorCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfSW50ICkKKyAgRlRfR2V0X0dhc3AoIEZUX0ZhY2UgIGZhY2UsCisgICAgICAgICAgICAgICBGVF9VSW50ICBwcGVtICkKKyAgeworICAgIEZUX0ludCAgcmVzdWx0ID0gRlRfR0FTUF9OT19UQUJMRTsKKworCisgICAgaWYgKCBmYWNlICYmIEZUX0lTX1NGTlQoIGZhY2UgKSApCisgICAgeworICAgICAgVFRfRmFjZSAgdHRmYWNlID0gKFRUX0ZhY2UpZmFjZTsKKworCisgICAgICBpZiAoIHR0ZmFjZS0+Z2FzcC5udW1SYW5nZXMgPiAwICkKKyAgICAgIHsKKyAgICAgICAgVFRfR2FzcFJhbmdlICByYW5nZSAgICAgPSB0dGZhY2UtPmdhc3AuZ2FzcFJhbmdlczsKKyAgICAgICAgVFRfR2FzcFJhbmdlICByYW5nZV9lbmQgPSByYW5nZSArIHR0ZmFjZS0+Z2FzcC5udW1SYW5nZXM7CisKKworICAgICAgICB3aGlsZSAoIHBwZW0gPiByYW5nZS0+bWF4UFBFTSApCisgICAgICAgIHsKKyAgICAgICAgICByYW5nZSsrOworICAgICAgICAgIGlmICggcmFuZ2UgPj0gcmFuZ2VfZW5kICkKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHJhbmdlLT5nYXNwRmxhZzsKKworICAgICAgICAvKiBlbnN1cmUgdGhhdCB3ZSBkb24ndCBoYXZlIHNwdXJpb3VzIGJpdHMgKi8KKyAgICAgICAgaWYgKCB0dGZhY2UtPmdhc3AudmVyc2lvbiA9PSAwICkKKyAgICAgICAgICByZXN1bHQgJj0gMzsKKyAgICAgIH0KKyAgICB9CisgIEV4aXQ6CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0Z2xvYWRyLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRnbG9hZHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGRkODZjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0Z2xvYWRyLmMKQEAgLTAsMCArMSw0MDUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Z2xvYWRyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgZ2x5cGggbG9hZGVyIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMi0yMDA2LCAyMDEwLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisKKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfZ2xvYWRlcgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgIEcgTCBZIFAgSCAgIEwgTyBBIEQgRSBSICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGdseXBoIGxvYWRlciBpcyBhIHNpbXBsZSBvYmplY3Qgd2hpY2ggaXMgdXNlZCB0byBsb2FkIGEgc2V0IG9mICAgICovCisgIC8qIGdseXBocyBlYXNpbHkuICBJdCBpcyBjcml0aWNhbCBmb3IgdGhlIGNvcnJlY3QgbG9hZGluZyBvZiBjb21wb3NpdGVzLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSWRlYWxseSwgb25lIGNhbiBzZWUgaXQgYXMgYSBzdGFjayBvZiBhYnN0cmFjdCBgZ2x5cGgnIG9iamVjdHMuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGxvYWRlci5iYXNlICAgICBJcyByZWFsbHkgdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2suICBJdCBkZXNjcmliZXMgYSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgc2luZ2xlIGdseXBoIGltYWdlIG1hZGUgb2YgdGhlIGp1eHRhcG9zaXRpb24gb2YgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHNldmVyYWwgZ2x5cGhzICh0aG9zZSBgaW4gdGhlIHN0YWNrJykuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBsb2FkZXIuY3VycmVudCAgRGVzY3JpYmVzIHRoZSB0b3Agb2YgdGhlIHN0YWNrLCBvbiB3aGljaCBhIG5ldyAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGdseXBoIGNhbiBiZSBsb2FkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBSZXdpbmQgICAgICAgICAgQ2xlYXJzIHRoZSBzdGFjay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgUHJlcGFyZSAgICAgICAgIFNldCB1cCBgbG9hZGVyLmN1cnJlbnQnIGZvciBhZGRpdGlvbiBvZiBhIG5ldyBnbHlwaCAqLworICAvKiAgICAgICAgICAgICAgICAgICBpbWFnZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBBZGQgICAgICAgICAgICAgQWRkIHRoZSBgY3VycmVudCcgZ2x5cGggaW1hZ2UgdG8gdGhlIGBiYXNlJyBvbmUsICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGFuZCBwcmVwYXJlIGZvciBhbm90aGVyIG9uZS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGdseXBoIGxvYWRlciBpcyBub3cgYSBiYXNlIG9iamVjdC4gIEVhY2ggZHJpdmVyIHVzZWQgdG8gICAgICAgICAgICovCisgIC8qIHJlLWltcGxlbWVudCBpdCBpbiBvbmUgd2F5IG9yIHRoZSBvdGhlciwgd2hpY2ggd2FzdGVkIGNvZGUgYW5kICAgICAgICAqLworICAvKiBlbmVyZ3kuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyogY3JlYXRlIGEgbmV3IGdseXBoIGxvYWRlciAqLworICBGVF9CQVNFX0RFRiggRlRfRXJyb3IgKQorICBGVF9HbHlwaExvYWRlcl9OZXcoIEZUX01lbW9yeSAgICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoTG9hZGVyICAqYWxvYWRlciApCisgIHsKKyAgICBGVF9HbHlwaExvYWRlciAgbG9hZGVyID0gTlVMTDsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3I7CisKKworICAgIGlmICggIUZUX05FVyggbG9hZGVyICkgKQorICAgIHsKKyAgICAgIGxvYWRlci0+bWVtb3J5ID0gbWVtb3J5OworICAgICAgKmFsb2FkZXIgICAgICAgPSBsb2FkZXI7CisgICAgfQorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogcmV3aW5kIHRoZSBnbHlwaCBsb2FkZXIgLSByZXNldCBjb3VudGVycyB0byAwICovCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgRlRfR2x5cGhMb2FkZXJfUmV3aW5kKCBGVF9HbHlwaExvYWRlciAgbG9hZGVyICkKKyAgeworICAgIEZUX0dseXBoTG9hZCAgYmFzZSAgICA9ICZsb2FkZXItPmJhc2U7CisgICAgRlRfR2x5cGhMb2FkICBjdXJyZW50ID0gJmxvYWRlci0+Y3VycmVudDsKKworCisgICAgYmFzZS0+b3V0bGluZS5uX3BvaW50cyAgID0gMDsKKyAgICBiYXNlLT5vdXRsaW5lLm5fY29udG91cnMgPSAwOworICAgIGJhc2UtPm51bV9zdWJnbHlwaHMgICAgICA9IDA7CisKKyAgICAqY3VycmVudCA9ICpiYXNlOworICB9CisKKworICAvKiByZXNldCB0aGUgZ2x5cGggbG9hZGVyLCBmcmVlcyBhbGwgYWxsb2NhdGVkIHRhYmxlcyAqLworICAvKiBhbmQgc3RhcnRzIGZyb20gemVybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX0dseXBoTG9hZGVyX1Jlc2V0KCBGVF9HbHlwaExvYWRlciAgbG9hZGVyICkKKyAgeworICAgIEZUX01lbW9yeSBtZW1vcnkgPSBsb2FkZXItPm1lbW9yeTsKKworCisgICAgRlRfRlJFRSggbG9hZGVyLT5iYXNlLm91dGxpbmUucG9pbnRzICk7CisgICAgRlRfRlJFRSggbG9hZGVyLT5iYXNlLm91dGxpbmUudGFncyApOworICAgIEZUX0ZSRUUoIGxvYWRlci0+YmFzZS5vdXRsaW5lLmNvbnRvdXJzICk7CisgICAgRlRfRlJFRSggbG9hZGVyLT5iYXNlLmV4dHJhX3BvaW50cyApOworICAgIEZUX0ZSRUUoIGxvYWRlci0+YmFzZS5zdWJnbHlwaHMgKTsKKworICAgIGxvYWRlci0+YmFzZS5leHRyYV9wb2ludHMyID0gTlVMTDsKKworICAgIGxvYWRlci0+bWF4X3BvaW50cyAgICA9IDA7CisgICAgbG9hZGVyLT5tYXhfY29udG91cnMgID0gMDsKKyAgICBsb2FkZXItPm1heF9zdWJnbHlwaHMgPSAwOworCisgICAgRlRfR2x5cGhMb2FkZXJfUmV3aW5kKCBsb2FkZXIgKTsKKyAgfQorCisKKyAgLyogZGVsZXRlIGEgZ2x5cGggbG9hZGVyICovCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgRlRfR2x5cGhMb2FkZXJfRG9uZSggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBpZiAoIGxvYWRlciApCisgICAgeworICAgICAgRlRfTWVtb3J5IG1lbW9yeSA9IGxvYWRlci0+bWVtb3J5OworCisKKyAgICAgIEZUX0dseXBoTG9hZGVyX1Jlc2V0KCBsb2FkZXIgKTsKKyAgICAgIEZUX0ZSRUUoIGxvYWRlciApOworICAgIH0KKyAgfQorCisKKyAgLyogcmUtYWRqdXN0IHRoZSBgY3VycmVudCcgb3V0bGluZSBmaWVsZHMgKi8KKyAgc3RhdGljIHZvaWQKKyAgRlRfR2x5cGhMb2FkZXJfQWRqdXN0X1BvaW50cyggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBGVF9PdXRsaW5lKiAgYmFzZSAgICA9ICZsb2FkZXItPmJhc2Uub3V0bGluZTsKKyAgICBGVF9PdXRsaW5lKiAgY3VycmVudCA9ICZsb2FkZXItPmN1cnJlbnQub3V0bGluZTsKKworCisgICAgY3VycmVudC0+cG9pbnRzICAgPSBiYXNlLT5wb2ludHMgICArIGJhc2UtPm5fcG9pbnRzOworICAgIGN1cnJlbnQtPnRhZ3MgICAgID0gYmFzZS0+dGFncyAgICAgKyBiYXNlLT5uX3BvaW50czsKKyAgICBjdXJyZW50LT5jb250b3VycyA9IGJhc2UtPmNvbnRvdXJzICsgYmFzZS0+bl9jb250b3VyczsKKworICAgIC8qIGhhbmRsZSBleHRyYSBwb2ludHMgdGFibGUgLSBpZiBhbnkgKi8KKyAgICBpZiAoIGxvYWRlci0+dXNlX2V4dHJhICkKKyAgICB7CisgICAgICBsb2FkZXItPmN1cnJlbnQuZXh0cmFfcG9pbnRzICA9IGxvYWRlci0+YmFzZS5leHRyYV9wb2ludHMgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLT5uX3BvaW50czsKKworICAgICAgbG9hZGVyLT5jdXJyZW50LmV4dHJhX3BvaW50czIgPSBsb2FkZXItPmJhc2UuZXh0cmFfcG9pbnRzMiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UtPm5fcG9pbnRzOworICAgIH0KKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX0Vycm9yICkKKyAgRlRfR2x5cGhMb2FkZXJfQ3JlYXRlRXh0cmEoIEZUX0dseXBoTG9hZGVyICBsb2FkZXIgKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxvYWRlci0+bWVtb3J5OworCisKKyAgICBpZiAoICFGVF9ORVdfQVJSQVkoIGxvYWRlci0+YmFzZS5leHRyYV9wb2ludHMsIDIgKiBsb2FkZXItPm1heF9wb2ludHMgKSApCisgICAgeworICAgICAgbG9hZGVyLT51c2VfZXh0cmEgICAgICAgICAgPSAxOworICAgICAgbG9hZGVyLT5iYXNlLmV4dHJhX3BvaW50czIgPSBsb2FkZXItPmJhc2UuZXh0cmFfcG9pbnRzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLT5tYXhfcG9pbnRzOworCisgICAgICBGVF9HbHlwaExvYWRlcl9BZGp1c3RfUG9pbnRzKCBsb2FkZXIgKTsKKyAgICB9CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiByZS1hZGp1c3QgdGhlIGBjdXJyZW50JyBzdWJnbHlwaHMgZmllbGQgKi8KKyAgc3RhdGljIHZvaWQKKyAgRlRfR2x5cGhMb2FkZXJfQWRqdXN0X1N1YmdseXBocyggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBGVF9HbHlwaExvYWQgIGJhc2UgICAgPSAmbG9hZGVyLT5iYXNlOworICAgIEZUX0dseXBoTG9hZCAgY3VycmVudCA9ICZsb2FkZXItPmN1cnJlbnQ7CisKKworICAgIGN1cnJlbnQtPnN1YmdseXBocyA9IGJhc2UtPnN1YmdseXBocyArIGJhc2UtPm51bV9zdWJnbHlwaHM7CisgIH0KKworCisgIC8qIEVuc3VyZSB0aGF0IHdlIGNhbiBhZGQgYG5fcG9pbnRzJyBhbmQgYG5fY29udG91cnMnIHRvIG91ciBnbHlwaC4gICAgICAqLworICAvKiBUaGlzIGZ1bmN0aW9uIHJlYWxsb2NhdGVzIGl0cyBvdXRsaW5lIHRhYmxlcyBpZiBuZWNlc3NhcnkuICBOb3RlIHRoYXQgKi8KKyAgLyogaXQgRE9FU04nVCBjaGFuZ2UgdGhlIG51bWJlciBvZiBwb2ludHMgd2l0aGluIHRoZSBsb2FkZXIhICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFX0RFRiggRlRfRXJyb3IgKQorICBGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cyggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBuX3BvaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBuX2NvbnRvdXJzICkKKyAgeworICAgIEZUX01lbW9yeSAgICBtZW1vcnkgID0gbG9hZGVyLT5tZW1vcnk7CisgICAgRlRfRXJyb3IgICAgIGVycm9yICAgPSBGVF9FcnJfT2s7CisgICAgRlRfT3V0bGluZSogIGJhc2UgICAgPSAmbG9hZGVyLT5iYXNlLm91dGxpbmU7CisgICAgRlRfT3V0bGluZSogIGN1cnJlbnQgPSAmbG9hZGVyLT5jdXJyZW50Lm91dGxpbmU7CisgICAgRlRfQm9vbCAgICAgIGFkanVzdCAgPSAwOworCisgICAgRlRfVUludCAgICAgIG5ld19tYXgsIG9sZF9tYXg7CisKKworICAgIC8qIGNoZWNrIHBvaW50cyAmIHRhZ3MgKi8KKyAgICBuZXdfbWF4ID0gYmFzZS0+bl9wb2ludHMgKyBjdXJyZW50LT5uX3BvaW50cyArIG5fcG9pbnRzOworICAgIG9sZF9tYXggPSBsb2FkZXItPm1heF9wb2ludHM7CisKKyAgICBpZiAoIG5ld19tYXggPiBvbGRfbWF4ICkKKyAgICB7CisgICAgICBuZXdfbWF4ID0gRlRfUEFEX0NFSUwoIG5ld19tYXgsIDggKTsKKworICAgICAgaWYgKCBuZXdfbWF4ID4gRlRfT1VUTElORV9QT0lOVFNfTUFYICkKKyAgICAgICAgcmV0dXJuIEZUX1RIUk9XKCBBcnJheV9Ub29fTGFyZ2UgKTsKKworICAgICAgaWYgKCBGVF9SRU5FV19BUlJBWSggYmFzZS0+cG9pbnRzLCBvbGRfbWF4LCBuZXdfbWF4ICkgfHwKKyAgICAgICAgICAgRlRfUkVORVdfQVJSQVkoIGJhc2UtPnRhZ3MsICAgb2xkX21heCwgbmV3X21heCApICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBpZiAoIGxvYWRlci0+dXNlX2V4dHJhICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBGVF9SRU5FV19BUlJBWSggbG9hZGVyLT5iYXNlLmV4dHJhX3BvaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX21heCAqIDIsIG5ld19tYXggKiAyICkgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICBGVF9BUlJBWV9NT1ZFKCBsb2FkZXItPmJhc2UuZXh0cmFfcG9pbnRzICsgbmV3X21heCwKKyAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLT5iYXNlLmV4dHJhX3BvaW50cyArIG9sZF9tYXgsCisgICAgICAgICAgICAgICAgICAgICAgIG9sZF9tYXggKTsKKworICAgICAgICBsb2FkZXItPmJhc2UuZXh0cmFfcG9pbnRzMiA9IGxvYWRlci0+YmFzZS5leHRyYV9wb2ludHMgKyBuZXdfbWF4OworICAgICAgfQorCisgICAgICBhZGp1c3QgPSAxOworICAgICAgbG9hZGVyLT5tYXhfcG9pbnRzID0gbmV3X21heDsKKyAgICB9CisKKyAgICAvKiBjaGVjayBjb250b3VycyAqLworICAgIG9sZF9tYXggPSBsb2FkZXItPm1heF9jb250b3VyczsKKyAgICBuZXdfbWF4ID0gYmFzZS0+bl9jb250b3VycyArIGN1cnJlbnQtPm5fY29udG91cnMgKworICAgICAgICAgICAgICBuX2NvbnRvdXJzOworICAgIGlmICggbmV3X21heCA+IG9sZF9tYXggKQorICAgIHsKKyAgICAgIG5ld19tYXggPSBGVF9QQURfQ0VJTCggbmV3X21heCwgNCApOworCisgICAgICBpZiAoIG5ld19tYXggPiBGVF9PVVRMSU5FX0NPTlRPVVJTX01BWCApCisgICAgICAgIHJldHVybiBGVF9USFJPVyggQXJyYXlfVG9vX0xhcmdlICk7CisKKyAgICAgIGlmICggRlRfUkVORVdfQVJSQVkoIGJhc2UtPmNvbnRvdXJzLCBvbGRfbWF4LCBuZXdfbWF4ICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGFkanVzdCA9IDE7CisgICAgICBsb2FkZXItPm1heF9jb250b3VycyA9IG5ld19tYXg7CisgICAgfQorCisgICAgaWYgKCBhZGp1c3QgKQorICAgICAgRlRfR2x5cGhMb2FkZXJfQWRqdXN0X1BvaW50cyggbG9hZGVyICk7CisKKyAgRXhpdDoKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIEZUX0dseXBoTG9hZGVyX1Jlc2V0KCBsb2FkZXIgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogRW5zdXJlIHRoYXQgd2UgY2FuIGFkZCBgbl9zdWJnbHlwaHMnIHRvIG91ciBnbHlwaC4gdGhpcyBmdW5jdGlvbiAqLworICAvKiByZWFsbG9jYXRlcyBpdHMgc3ViZ2x5cGhzIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIE5vdGUgdGhhdCBpdCBET0VTICovCisgIC8qIE5PVCBjaGFuZ2UgdGhlIG51bWJlciBvZiBzdWJnbHlwaHMgd2l0aGluIHRoZSBsb2FkZXIhICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9CQVNFX0RFRiggRlRfRXJyb3IgKQorICBGVF9HbHlwaExvYWRlcl9DaGVja1N1YkdseXBocyggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBuX3N1YnMgKQorICB7CisgICAgRlRfTWVtb3J5ICAgICBtZW1vcnkgPSBsb2FkZXItPm1lbW9yeTsKKyAgICBGVF9FcnJvciAgICAgIGVycm9yICA9IEZUX0Vycl9PazsKKyAgICBGVF9VSW50ICAgICAgIG5ld19tYXgsIG9sZF9tYXg7CisKKyAgICBGVF9HbHlwaExvYWQgIGJhc2UgICAgPSAmbG9hZGVyLT5iYXNlOworICAgIEZUX0dseXBoTG9hZCAgY3VycmVudCA9ICZsb2FkZXItPmN1cnJlbnQ7CisKKworICAgIG5ld19tYXggPSBiYXNlLT5udW1fc3ViZ2x5cGhzICsgY3VycmVudC0+bnVtX3N1YmdseXBocyArIG5fc3ViczsKKyAgICBvbGRfbWF4ID0gbG9hZGVyLT5tYXhfc3ViZ2x5cGhzOworICAgIGlmICggbmV3X21heCA+IG9sZF9tYXggKQorICAgIHsKKyAgICAgIG5ld19tYXggPSBGVF9QQURfQ0VJTCggbmV3X21heCwgMiApOworICAgICAgaWYgKCBGVF9SRU5FV19BUlJBWSggYmFzZS0+c3ViZ2x5cGhzLCBvbGRfbWF4LCBuZXdfbWF4ICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGxvYWRlci0+bWF4X3N1YmdseXBocyA9IG5ld19tYXg7CisKKyAgICAgIEZUX0dseXBoTG9hZGVyX0FkanVzdF9TdWJnbHlwaHMoIGxvYWRlciApOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogcHJlcGFyZSBsb2FkZXIgZm9yIHRoZSBhZGRpdGlvbiBvZiBhIG5ldyBnbHlwaCBvbiB0b3Agb2YgdGhlIGJhc2Ugb25lICovCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgRlRfR2x5cGhMb2FkZXJfUHJlcGFyZSggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBGVF9HbHlwaExvYWQgIGN1cnJlbnQgPSAmbG9hZGVyLT5jdXJyZW50OworCisKKyAgICBjdXJyZW50LT5vdXRsaW5lLm5fcG9pbnRzICAgPSAwOworICAgIGN1cnJlbnQtPm91dGxpbmUubl9jb250b3VycyA9IDA7CisgICAgY3VycmVudC0+bnVtX3N1YmdseXBocyAgICAgID0gMDsKKworICAgIEZUX0dseXBoTG9hZGVyX0FkanVzdF9Qb2ludHMgICAoIGxvYWRlciApOworICAgIEZUX0dseXBoTG9hZGVyX0FkanVzdF9TdWJnbHlwaHMoIGxvYWRlciApOworICB9CisKKworICAvKiBhZGQgY3VycmVudCBnbHlwaCB0byB0aGUgYmFzZSBpbWFnZSAtLSBhbmQgcHJlcGFyZSBmb3IgYW5vdGhlciAqLworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX0dseXBoTG9hZGVyX0FkZCggRlRfR2x5cGhMb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBGVF9HbHlwaExvYWQgIGJhc2U7CisgICAgRlRfR2x5cGhMb2FkICBjdXJyZW50OworCisgICAgRlRfVUludCAgICAgICBuX2N1cnJfY29udG91cnM7CisgICAgRlRfVUludCAgICAgICBuX2Jhc2VfcG9pbnRzOworICAgIEZUX1VJbnQgICAgICAgbjsKKworCisgICAgaWYgKCAhbG9hZGVyICkKKyAgICAgIHJldHVybjsKKworICAgIGJhc2UgICAgPSAmbG9hZGVyLT5iYXNlOworICAgIGN1cnJlbnQgPSAmbG9hZGVyLT5jdXJyZW50OworCisgICAgbl9jdXJyX2NvbnRvdXJzID0gY3VycmVudC0+b3V0bGluZS5uX2NvbnRvdXJzOworICAgIG5fYmFzZV9wb2ludHMgICA9IGJhc2UtPm91dGxpbmUubl9wb2ludHM7CisKKyAgICBiYXNlLT5vdXRsaW5lLm5fcG9pbnRzID0KKyAgICAgIChzaG9ydCkoIGJhc2UtPm91dGxpbmUubl9wb2ludHMgKyBjdXJyZW50LT5vdXRsaW5lLm5fcG9pbnRzICk7CisgICAgYmFzZS0+b3V0bGluZS5uX2NvbnRvdXJzID0KKyAgICAgIChzaG9ydCkoIGJhc2UtPm91dGxpbmUubl9jb250b3VycyArIGN1cnJlbnQtPm91dGxpbmUubl9jb250b3VycyApOworCisgICAgYmFzZS0+bnVtX3N1YmdseXBocyArPSBjdXJyZW50LT5udW1fc3ViZ2x5cGhzOworCisgICAgLyogYWRqdXN0IGNvbnRvdXJzIGNvdW50IGluIG5ld2VzdCBvdXRsaW5lICovCisgICAgZm9yICggbiA9IDA7IG4gPCBuX2N1cnJfY29udG91cnM7IG4rKyApCisgICAgICBjdXJyZW50LT5vdXRsaW5lLmNvbnRvdXJzW25dID0KKyAgICAgICAgKHNob3J0KSggY3VycmVudC0+b3V0bGluZS5jb250b3Vyc1tuXSArIG5fYmFzZV9wb2ludHMgKTsKKworICAgIC8qIHByZXBhcmUgZm9yIGFub3RoZXIgbmV3IGdseXBoIGltYWdlICovCisgICAgRlRfR2x5cGhMb2FkZXJfUHJlcGFyZSggbG9hZGVyICk7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIEZUX0dseXBoTG9hZGVyX0NvcHlQb2ludHMoIEZUX0dseXBoTG9hZGVyICB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoTG9hZGVyICBzb3VyY2UgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworICAgIEZUX1VJbnQgICBudW1fcG9pbnRzICAgPSBzb3VyY2UtPmJhc2Uub3V0bGluZS5uX3BvaW50czsKKyAgICBGVF9VSW50ICAgbnVtX2NvbnRvdXJzID0gc291cmNlLT5iYXNlLm91dGxpbmUubl9jb250b3VyczsKKworCisgICAgZXJyb3IgPSBGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cyggdGFyZ2V0LCBudW1fcG9pbnRzLCBudW1fY29udG91cnMgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgRlRfT3V0bGluZSogIG91dCA9ICZ0YXJnZXQtPmJhc2Uub3V0bGluZTsKKyAgICAgIEZUX091dGxpbmUqICBpbiAgPSAmc291cmNlLT5iYXNlLm91dGxpbmU7CisKKworICAgICAgRlRfQVJSQVlfQ09QWSggb3V0LT5wb2ludHMsIGluLT5wb2ludHMsCisgICAgICAgICAgICAgICAgICAgICBudW1fcG9pbnRzICk7CisgICAgICBGVF9BUlJBWV9DT1BZKCBvdXQtPnRhZ3MsIGluLT50YWdzLAorICAgICAgICAgICAgICAgICAgICAgbnVtX3BvaW50cyApOworICAgICAgRlRfQVJSQVlfQ09QWSggb3V0LT5jb250b3VycywgaW4tPmNvbnRvdXJzLAorICAgICAgICAgICAgICAgICAgICAgbnVtX2NvbnRvdXJzICk7CisKKyAgICAgIC8qIGRvIHdlIG5lZWQgdG8gY29weSB0aGUgZXh0cmEgcG9pbnRzPyAqLworICAgICAgaWYgKCB0YXJnZXQtPnVzZV9leHRyYSAmJiBzb3VyY2UtPnVzZV9leHRyYSApCisgICAgICB7CisgICAgICAgIEZUX0FSUkFZX0NPUFkoIHRhcmdldC0+YmFzZS5leHRyYV9wb2ludHMsIHNvdXJjZS0+YmFzZS5leHRyYV9wb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgIG51bV9wb2ludHMgKTsKKyAgICAgICAgRlRfQVJSQVlfQ09QWSggdGFyZ2V0LT5iYXNlLmV4dHJhX3BvaW50czIsIHNvdXJjZS0+YmFzZS5leHRyYV9wb2ludHMyLAorICAgICAgICAgICAgICAgICAgICAgICBudW1fcG9pbnRzICk7CisgICAgICB9CisKKyAgICAgIG91dC0+bl9wb2ludHMgICA9IChzaG9ydCludW1fcG9pbnRzOworICAgICAgb3V0LT5uX2NvbnRvdXJzID0gKHNob3J0KW51bV9jb250b3VyczsKKworICAgICAgRlRfR2x5cGhMb2FkZXJfQWRqdXN0X1BvaW50cyggdGFyZ2V0ICk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRneHZhbC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0Z3h2YWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjU4ODRlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0Z3h2YWwuYwpAQCAtMCwwICsxLDE0MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRneHZhbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgdmFsaWRhdGluZyBUcnVlVHllcEdYL0FBVCB0YWJsZXMgKGJvZHkpLiAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA0LTIwMDYsIDIwMTAsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBNYXNhdGFrZSBZQU1BVE8sIFJlZGhhdCBLLkssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogZ3h2YWxpZCBpcyBkZXJpdmVkIGZyb20gYm90aCBneGxheW91dCBtb2R1bGUgYW5kIG90dmFsaWQgbW9kdWxlLiAgICAgICAgKi8KKy8qIERldmVsb3BtZW50IG9mIGd4bGF5b3V0IGlzIHN1cHBvcnRlZCBieSB0aGUgSW5mb3JtYXRpb24tdGVjaG5vbG9neSAgICAgICovCisvKiBQcm9tb3Rpb24gQWdlbmN5KElQQSksIEphcGFuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmd4dmFsLmgiCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0Z3h2YWwuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfVHJ1ZVR5cGVHWF9WYWxpZGF0ZSggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICB2YWxpZGF0aW9uX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgdGFibGVzW0ZUX1ZBTElEQVRFX0dYX0xFTkdUSF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICB0YWJsZV9sZW5ndGggKQorICB7CisgICAgRlRfU2VydmljZV9HWHZhbGlkYXRlICBzZXJ2aWNlOworICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgZXJyb3I7CisKKworICAgIGlmICggIWZhY2UgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoIHRhYmxlcyA9PSBOVUxMICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgRlRfRkFDRV9GSU5EX0dMT0JBTF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBHWF9WQUxJREFURSApOworCisgICAgaWYgKCBzZXJ2aWNlICkKKyAgICAgIGVycm9yID0gc2VydmljZS0+dmFsaWRhdGUoIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfbGVuZ3RoICk7CisgICAgZWxzZQorICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9UcnVlVHlwZUdYX0ZyZWUoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGVzICB0YWJsZSApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgICByZXR1cm47CisKKyAgICBtZW1vcnkgPSBGVF9GQUNFX01FTU9SWSggZmFjZSApOworCisgICAgRlRfRlJFRSggdGFibGUgKTsKKyAgfQorCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9DbGFzc2ljS2Vybl9WYWxpZGF0ZSggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICB2YWxpZGF0aW9uX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgICpja2Vybl90YWJsZSApCisgIHsKKyAgICBGVF9TZXJ2aWNlX0NLRVJOdmFsaWRhdGUgIHNlcnZpY2U7CisgICAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICBlcnJvcjsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GYWNlX0hhbmRsZSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggY2tlcm5fdGFibGUgPT0gTlVMTCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIEZUX0ZBQ0VfRklORF9HTE9CQUxfU0VSVklDRSggZmFjZSwgc2VydmljZSwgQ0xBU1NJQ0tFUk5fVkFMSURBVEUgKTsKKworICAgIGlmICggc2VydmljZSApCisgICAgICBlcnJvciA9IHNlcnZpY2UtPnZhbGlkYXRlKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNrZXJuX3RhYmxlICk7CisgICAgZWxzZQorICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9DbGFzc2ljS2Vybl9GcmVlKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgIHRhYmxlICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5OworCisKKyAgICBpZiAoICFmYWNlICkKKyAgICAgIHJldHVybjsKKworICAgIG1lbW9yeSA9IEZUX0ZBQ0VfTUVNT1JZKCBmYWNlICk7CisKKworICAgIEZUX0ZSRUUoIHRhYmxlICk7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdG1hYy5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0bWFjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzNjFkOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdG1hYy5jCkBAIC0wLDAgKzEsMTA2MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRtYWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIE1hYyBGT05EIHN1cHBvcnQuICBXcml0dGVuIGJ5IGp1c3RAbGV0dGVycm9yLmNvbS4gICAgICAgICAgICAgICAgICAgICovCisvKiAgSGVhdmlseSBtb2RpZmllZCBieSBtcHN1enVraSwgR2VvcmdlIFdpbGxpYW1zLCBhbmQgU2VhbiBNY0JyaWRlLiAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgZm9yIE1hYyBPUyBYIG9ubHk7IHNlZSBidWlsZHMvbWFjL2Z0b2xkbWFjLmMgZm9yICAgICAgICAgICovCisvKiAgY2xhc3NpYyBwbGF0Zm9ybXMgYnVpbHQgYnkgTVBXLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA5LCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgSnVzdCB2YW4gUm9zc3VtLCBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKgorICAgIE5vdGVzCisKKyAgICBNYWMgc3VpdGNhc2UgZmlsZXMgY2FuIChhbmQgb2Z0ZW4gZG8hKSBjb250YWluIG11bHRpcGxlIGZvbnRzLiAgVG8KKyAgICBzdXBwb3J0IHRoaXMgSSB1c2UgdGhlIGZhY2VfaW5kZXggYXJndW1lbnQgb2YgRlRfKE9wZW58TmV3KV9GYWNlKCkKKyAgICBmdW5jdGlvbnMsIGFuZCBwcmV0ZW5kIHRoZSBzdWl0Y2FzZSBmaWxlIGlzIGEgY29sbGVjdGlvbi4KKworICAgIFdhcm5pbmc6IGZiaXQgYW5kIE5GTlQgYml0bWFwIHJlc291cmNlcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuICBJbiBvbGQKKyAgICBzZm50IGZvbnRzLCBiaXRtYXAgZ2x5cGggZGF0YSBmb3IgZWFjaCBzaXplIGlzIHN0b3JlZCBpbiBlYWNoIGBORk5UJworICAgIHJlc291cmNlcyBpbnN0ZWFkIG9mIHRoZSBgYmRhdCcgdGFibGUgaW4gdGhlIHNmbnQgcmVzb3VyY2UuICBUaGVyZWZvcmUsCisgICAgZmFjZS0+bnVtX2ZpeGVkX3NpemVzIGlzIHNldCB0byAwLCBiZWNhdXNlIGJpdG1hcCBkYXRhIGluIGBORk5UJworICAgIHJlc291cmNlIGlzIHVuYXZhaWxhYmxlIGF0IHByZXNlbnQuCisKKyAgICBUaGUgTWFjIEZPTkQgc3VwcG9ydCB3b3JrcyByb3VnaGx5IGxpa2UgdGhpczoKKworICAgIC0gQ2hlY2sgd2hldGhlciB0aGUgb2ZmZXJlZCBzdHJlYW0gcG9pbnRzIHRvIGEgTWFjIHN1aXRjYXNlIGZpbGUuICBUaGlzCisgICAgICBpcyBkb25lIGJ5IGNoZWNraW5nIHRoZSBmaWxlIHR5cGU6IGl0IGhhcyB0byBiZSAnRkZJTCcgb3IgJ3RmaWwnLiAgVGhlCisgICAgICBzdHJlYW0gdGhhdCBnZXRzIHBhc3NlZCB0byBvdXIgaW5pdF9mYWNlKCkgcm91dGluZSBpcyBhIHN0ZGlvIHN0cmVhbSwKKyAgICAgIHdoaWNoIGlzbid0IHVzYWJsZSBmb3IgdXMsIHNpbmNlIHRoZSBGT05EIHJlc291cmNlcyBsaXZlIGluIHRoZQorICAgICAgcmVzb3VyY2UgZm9yay4gIFNvIHdlIGp1c3QgZ3JhYiB0aGUgc3RyZWFtLT5wYXRobmFtZSBmaWVsZC4KKworICAgIC0gUmVhZCB0aGUgRk9ORCByZXNvdXJjZSBpbnRvIG1lbW9yeSwgdGhlbiBjaGVjayB3aGV0aGVyIHRoZXJlIGlzIGEKKyAgICAgIFRydWVUeXBlIGZvbnQgYW5kL29yKCEpIGEgVHlwZSAxIGZvbnQgYXZhaWxhYmxlLgorCisgICAgLSBJZiB0aGVyZSBpcyBhIFR5cGUgMSBmb250IGF2YWlsYWJsZSAoYXMgYSBzZXBhcmF0ZSBgTFdGTicgZmlsZSksIHJlYWQKKyAgICAgIGl0cyBkYXRhIGludG8gbWVtb3J5LCBtYXNzYWdlIGl0IHNsaWdodGx5IHNvIGl0IGJlY29tZXMgUEZCIGRhdGEsIHdyYXAKKyAgICAgIGl0IGludG8gYSBtZW1vcnkgc3RyZWFtLCBsb2FkIHRoZSBUeXBlIDEgZHJpdmVyIGFuZCBkZWxlZ2F0ZSB0aGUgcmVzdAorICAgICAgb2YgdGhlIHdvcmsgdG8gaXQgYnkgY2FsbGluZyBGVF9PcGVuX0ZhY2UoKS4gIChYWFggVE9ETzogYWZ0ZXIgdGhpcworICAgICAgaGFzIGJlZW4gZG9uZSwgdGhlIGtlcm5pbmcgZGF0YSBmcm9tIHRoZSBGT05EIHJlc291cmNlIHNob3VsZCBiZQorICAgICAgYXBwZW5kZWQgdG8gdGhlIGZhY2U6IE9uIHRoZSBNYWMgdGhlcmUgYXJlIHVzdWFsbHkgbm8gQUZNIGZpbGVzCisgICAgICBhdmFpbGFibGUuICBIb3dldmVyLCB0aGlzIGlzIHRyaWNreSBzaW5jZSB3ZSBuZWVkIHRvIG1hcCBNYWMgY2hhcgorICAgICAgY29kZXMgdG8gcHMgZ2x5cGggbmFtZXMgdG8gZ2x5cGggSUQncy4uLikKKworICAgIC0gSWYgdGhlcmUgaXMgYSBUcnVlVHlwZSBmb250IChhbiBgc2ZudCcgcmVzb3VyY2UpLCByZWFkIGl0IGludG8gbWVtb3J5LAorICAgICAgd3JhcCBpdCBpbnRvIGEgbWVtb3J5IHN0cmVhbSwgbG9hZCB0aGUgVHJ1ZVR5cGUgZHJpdmVyIGFuZCBkZWxlZ2F0ZQorICAgICAgdGhlIHJlc3Qgb2YgdGhlIHdvcmsgdG8gaXQsIGJ5IGNhbGxpbmcgRlRfT3Blbl9GYWNlKCkuCisKKyAgICAtIFNvbWUgc3VpdGNhc2UgZm9udHMgKG5vdGFibHkgT255eCkgbWlnaHQgcG9pbnQgdGhlIGBMV0ZOJyBmaWxlIHRvCisgICAgICBpdHNlbGYsIGV2ZW4gdGhvdWdoIGl0IGRvZXNuJ3QgY29udGFpbnMgYFBPU1QnIHJlc291cmNlcy4gIFRvIGhhbmRsZQorICAgICAgdGhpcyBzcGVjaWFsIGNhc2Ugd2l0aG91dCBvcGVuaW5nIHRoZSBmaWxlIGFuIGV4dHJhIHRpbWUsIHdlIGp1c3QKKyAgICAgIGlnbm9yZSBlcnJvcnMgZnJvbSB0aGUgYExXRk4nIGFuZCBmYWxsYmFjayB0byB0aGUgYHNmbnQnIGlmIGJvdGggYXJlCisgICAgICBhdmFpbGFibGUuCisgICovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS90dHRhZ3MuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisjaW5jbHVkZSAiZnRiYXNlLmgiCisKKyAgLyogVGhpcyBpcyBmb3IgTWFjIE9TIFguICBXaXRob3V0IHJlZGVmaW5pdGlvbiwgT1NfSU5MSU5FICovCisgIC8qIGV4cGFuZHMgdG8gYHN0YXRpYyBpbmxpbmUnIHdoaWNoIGRvZXNuJ3Qgc3Vydml2ZSB0aGUgICAqLworICAvKiAtYW5zaSBjb21waWxhdGlvbiBmbGFnIG9mIEdDQy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZiAhSEFWRV9BTlNJX09TX0lOTElORQorI3VuZGVmICBPU19JTkxJTkUKKyNkZWZpbmUgT1NfSU5MSU5FICBzdGF0aWMgX19pbmxpbmVfXworI2VuZGlmCisKKyAgLyogYGNvbmZpZ3VyZScgY2hlY2tzIHRoZSBhdmFpbGFiaWxpdHkgb2YgYFJlc291cmNlSW5kZXgnIHN0cmljdGx5ICovCisgIC8qIGFuZCBzZXRzIEhBVkVfVFlQRV9SRVNPVVJDRV9JTkRFWCAxIG9yIDAgYWx3YXlzLiAgSWYgaXQgaXMgICAgICAqLworICAvKiBub3Qgc2V0IChlLmcuLCBhIGJ1aWxkIHdpdGhvdXQgYGNvbmZpZ3VyZScpLCB0aGUgYXZhaWxhYmlsaXR5ICAgKi8KKyAgLyogaXMgZ3Vlc3NlZCBmcm9tIHRoZSBTREsgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEhBVkVfVFlQRV9SRVNPVVJDRV9JTkRFWAorI2lmICFkZWZpbmVkKCBNQUNfT1NfWF9WRVJTSU9OXzEwXzUgKSB8fCBcCisgICAgKCBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF81ICkKKyNkZWZpbmUgSEFWRV9UWVBFX1JFU09VUkNFX0lOREVYIDAKKyNlbHNlCisjZGVmaW5lIEhBVkVfVFlQRV9SRVNPVVJDRV9JTkRFWCAxCisjZW5kaWYKKyNlbmRpZiAvKiAhSEFWRV9UWVBFX1JFU09VUkNFX0lOREVYICovCisKKyNpZiAoIEhBVkVfVFlQRV9SRVNPVVJDRV9JTkRFWCA9PSAwICkKKyAgdHlwZWRlZiBzaG9ydCAgUmVzb3VyY2VJbmRleDsKKyNlbmRpZgorCisjaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgorI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgorI2luY2x1ZGUgPHN5cy9zeXNsaW1pdHMuaD4gLyogUEFUSF9NQVggKi8KKworICAvKiBEb24ndCB3YW50IHdhcm5pbmdzIGFib3V0IG91ciBvd24gdXNlIG9mIGRlcHJlY2F0ZWQgZnVuY3Rpb25zLiAqLworI2RlZmluZSBGVF9ERVBSRUNBVEVEX0FUVFJJQlVURQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oIgorCisjaWZuZGVmIGtBVFNPcHRpb25GbGFnc1VuUmVzdHJpY3RlZFNjb3BlIC8qIHNpbmNlIE1hYyBPUyBYIDEwLjEgKi8KKyNkZWZpbmUga0FUU09wdGlvbkZsYWdzVW5SZXN0cmljdGVkU2NvcGUga0FUU09wdGlvbkZsYWdzRGVmYXVsdAorI2VuZGlmCisKKworICAvKiBTZXQgUFJFRkVSX0xXRk4gdG8gMSBpZiBMV0ZOIChUeXBlIDEpIGlzIHByZWZlcnJlZCBvdmVyCisgICAgIFRydWVUeXBlIGluIGNhc2UgKmJvdGgqIGFyZSBhdmFpbGFibGUgKHRoaXMgaXMgbm90IGNvbW1vbiwKKyAgICAgYnV0IGl0ICppcyogcG9zc2libGUpLiAqLworI2lmbmRlZiBQUkVGRVJfTFdGTgorI2RlZmluZSBQUkVGRVJfTFdGTiAgMQorI2VuZGlmCisKKworI2lmZGVmIEZUX01BQ0lOVE9TSAorCisgIC8qIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBiZWNhdXNlIEZTU3BlYyBpcyBkZXByZWNhdGVkIGluIE1hYyBPUyBYICAqLworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldEZpbGVfRnJvbV9NYWNfTmFtZSggY29uc3QgY2hhciogIGZvbnROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZTU3BlYyogICAgICBwYXRoU3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nKiAgICAgZmFjZV9pbmRleCApCisgIHsKKyAgICBGVF9VTlVTRUQoIGZvbnROYW1lICk7CisgICAgRlRfVU5VU0VEKCBwYXRoU3BlYyApOworICAgIEZUX1VOVVNFRCggZmFjZV9pbmRleCApOworCisgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKTsKKyAgfQorCisKKyAgLyogUHJpdmF0ZSBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBGU1NwZWMgdHlwZSBoYXMgYmVlbiBkaXNjb3VyYWdlZCBmb3IgYSBsb25nIHRpbWUsICAgICAqLworICAvKiB1bmZvcnR1bmF0ZWx5IGFuIEZTUmVmIHJlcGxhY2VtZW50IEFQSSBmb3IgICAgICAgICAgICAgICAgKi8KKyAgLyogQVRTRm9udEdldEZpbGVTcGVjaWZpY2F0aW9uKCkgaXMgb25seSBhdmFpbGFibGUgaW4gICAgICAgICovCisgIC8qIE1hYyBPUyBYIDEwLjUgYW5kIGxhdGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgT1NTdGF0dXMKKyAgRlRfQVRTRm9udEdldEZpbGVSZWZlcmVuY2UoIEFUU0ZvbnRSZWYgIGF0c19mb250X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNSZWYqICAgICAgYXRzX2ZvbnRfcmVmICkKKyAgeworI2lmIGRlZmluZWQoIE1BQ19PU19YX1ZFUlNJT05fMTBfNSApICYmIFwKKyAgICAoIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IE1BQ19PU19YX1ZFUlNJT05fMTBfNSApCisKKyAgICBPU1N0YXR1cyAgZXJyOworCisgICAgZXJyID0gQVRTRm9udEdldEZpbGVSZWZlcmVuY2UoIGF0c19mb250X2lkLCBhdHNfZm9udF9yZWYgKTsKKworICAgIHJldHVybiBlcnI7CisjZWxpZiBfX0xQNjRfXyAvKiBObyA2NGJpdCBDYXJib24gQVBJIG9uIGxlZ2FjeSBwbGF0Zm9ybXMgKi8KKyAgICBGVF9VTlVTRUQoIGF0c19mb250X2lkICk7CisgICAgRlRfVU5VU0VEKCBhdHNfZm9udF9yZWYgKTsKKworCisgICAgcmV0dXJuIGZuZkVycjsKKyNlbHNlIC8qIDMyYml0IENhcmJvbiBBUEkgb24gbGVnYWN5IHBsYXRmb3JtcyAqLworICAgIE9TU3RhdHVzICBlcnI7CisgICAgRlNTcGVjICAgIHNwZWM7CisKKworICAgIGVyciA9IEFUU0ZvbnRHZXRGaWxlU3BlY2lmaWNhdGlvbiggYXRzX2ZvbnRfaWQsICZzcGVjICk7CisgICAgaWYgKCBub0VyciA9PSBlcnIgKQorICAgICAgZXJyID0gRlNwTWFrZUZTUmVmKCAmc3BlYywgYXRzX2ZvbnRfcmVmICk7CisKKyAgICByZXR1cm4gZXJyOworI2VuZGlmCisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBGVF9HZXRGaWxlUmVmX0Zyb21fTWFjX0FUU19OYW1lKCBjb25zdCBjaGFyKiAgZm9udE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZTUmVmKiAgICAgICBhdHNfZm9udF9yZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICAgICBmYWNlX2luZGV4ICkKKyAgeworICAgIENGU3RyaW5nUmVmICBjZl9mb250TmFtZTsKKyAgICBBVFNGb250UmVmICAgYXRzX2ZvbnRfaWQ7CisKKworICAgICpmYWNlX2luZGV4ID0gMDsKKworICAgIGNmX2ZvbnROYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyggTlVMTCwgZm9udE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY1JvbWFuICk7CisgICAgYXRzX2ZvbnRfaWQgPSBBVFNGb250RmluZEZyb21OYW1lKCBjZl9mb250TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtBVFNPcHRpb25GbGFnc1VuUmVzdHJpY3RlZFNjb3BlICk7CisgICAgQ0ZSZWxlYXNlKCBjZl9mb250TmFtZSApOworCisgICAgaWYgKCBhdHNfZm9udF9pZCA9PSAwIHx8IGF0c19mb250X2lkID09IDB4RkZGRkZGRkZVTCApCisgICAgICByZXR1cm4gRlRfVEhST1coIFVua25vd25fRmlsZV9Gb3JtYXQgKTsKKworICAgIGlmICggbm9FcnIgIT0gRlRfQVRTRm9udEdldEZpbGVSZWZlcmVuY2UoIGF0c19mb250X2lkLCBhdHNfZm9udF9yZWYgKSApCisgICAgICByZXR1cm4gRlRfVEhST1coIFVua25vd25fRmlsZV9Gb3JtYXQgKTsKKworICAgIC8qIGZhY2VfaW5kZXggY2FsY3VsYXRpb24gYnkgc2VhcmNoaW5nIHByZWNlZGluZyBmb250SURzICovCisgICAgLyogd2l0aCBzYW1lIEZTUmVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB7CisgICAgICBBVFNGb250UmVmICBpZDIgPSBhdHNfZm9udF9pZCAtIDE7CisgICAgICBGU1JlZiAgICAgICByZWYyOworCisKKyAgICAgIHdoaWxlICggaWQyID4gMCApCisgICAgICB7CisgICAgICAgIGlmICggbm9FcnIgIT0gRlRfQVRTRm9udEdldEZpbGVSZWZlcmVuY2UoIGlkMiwgJnJlZjIgKSApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICggbm9FcnIgIT0gRlNDb21wYXJlRlNSZWZzKCBhdHNfZm9udF9yZWYsICZyZWYyICkgKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlkMiAtLTsKKyAgICAgIH0KKyAgICAgICpmYWNlX2luZGV4ID0gYXRzX2ZvbnRfaWQgLSAoIGlkMiArIDEgKTsKKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldEZpbGVQYXRoX0Zyb21fTWFjX0FUU19OYW1lKCBjb25zdCBjaGFyKiAgZm9udE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSW50OCogICAgICAgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJbnQzMiAgICAgICBtYXhQYXRoU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICAgICBmYWNlX2luZGV4ICkKKyAgeworICAgIEZTUmVmICAgICByZWY7CisgICAgRlRfRXJyb3IgIGVycjsKKworCisgICAgZXJyID0gRlRfR2V0RmlsZVJlZl9Gcm9tX01hY19BVFNfTmFtZSggZm9udE5hbWUsICZyZWYsIGZhY2VfaW5kZXggKTsKKyAgICBpZiAoIGVyciApCisgICAgICByZXR1cm4gZXJyOworCisgICAgaWYgKCBub0VyciAhPSBGU1JlZk1ha2VQYXRoKCAmcmVmLCBwYXRoLCBtYXhQYXRoU2l6ZSApICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgLyogVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGJlY2F1c2UgRlNTcGVjIGlzIGRlcHJlY2F0ZWQgaW4gTWFjIE9TIFggICovCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfR2V0RmlsZV9Gcm9tX01hY19BVFNfTmFtZSggY29uc3QgY2hhciogIGZvbnROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1NwZWMqICAgICAgcGF0aFNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICAgICBmYWNlX2luZGV4ICkKKyAgeworI2lmICggX19MUDY0X18gKSB8fCAoIGRlZmluZWQoIE1BQ19PU19YX1ZFUlNJT05fMTBfNSApICYmIFwKKyAgICAgICggTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gTUFDX09TX1hfVkVSU0lPTl8xMF81ICkgKQorICAgIEZUX1VOVVNFRCggZm9udE5hbWUgKTsKKyAgICBGVF9VTlVTRUQoIHBhdGhTcGVjICk7CisgICAgRlRfVU5VU0VEKCBmYWNlX2luZGV4ICk7CisKKyAgICByZXR1cm4gRlRfVEhST1coIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApOworI2Vsc2UKKyAgICBGU1JlZiAgICAgcmVmOworICAgIEZUX0Vycm9yICBlcnI7CisKKworICAgIGVyciA9IEZUX0dldEZpbGVSZWZfRnJvbV9NYWNfQVRTX05hbWUoIGZvbnROYW1lLCAmcmVmLCBmYWNlX2luZGV4ICk7CisgICAgaWYgKCBlcnIgKQorICAgICAgcmV0dXJuIGVycjsKKworICAgIGlmICggbm9FcnIgIT0gRlNHZXRDYXRhbG9nSW5mbyggJnJlZiwga0ZTQ2F0SW5mb05vbmUsIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoU3BlYywgTlVMTCApICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyNlbmRpZgorICB9CisKKworICBzdGF0aWMgT1NFcnIKKyAgRlRfRlNQYXRoTWFrZVJlcyggY29uc3QgVUludDgqICAgIHBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgICBSZXNGaWxlUmVmTnVtKiAgcmVzICkKKyAgeworICAgIE9TRXJyICBlcnI7CisgICAgRlNSZWYgIHJlZjsKKworCisgICAgaWYgKCBub0VyciAhPSBGU1BhdGhNYWtlUmVmKCBwYXRobmFtZSwgJnJlZiwgRkFMU0UgKSApCisgICAgICByZXR1cm4gRlRfVEhST1coIENhbm5vdF9PcGVuX1Jlc291cmNlICk7CisKKyAgICAvKiBhdCBwcmVzZW50LCBubyBzdXBwb3J0IGZvciBkZm9udCBmb3JtYXQgKi8KKyAgICBlcnIgPSBGU09wZW5SZXNvdXJjZUZpbGUoICZyZWYsIDAsIE5VTEwsIGZzUmRQZXJtLCByZXMgKTsKKyAgICBpZiAoIG5vRXJyID09IGVyciApCisgICAgICByZXR1cm4gZXJyOworCisgICAgLyogZmFsbGJhY2sgdG8gb3JpZ2luYWwgcmVzb3VyY2UtZm9yayBmb250ICovCisgICAgKnJlcyA9IEZTT3BlblJlc0ZpbGUoICZyZWYsIGZzUmRQZXJtICk7CisgICAgZXJyICA9IFJlc0Vycm9yKCk7CisKKyAgICByZXR1cm4gZXJyOworICB9CisKKworICAvKiBSZXR1cm4gdGhlIGZpbGUgdHlwZSBmb3IgZ2l2ZW4gcGF0aG5hbWUgKi8KKyAgc3RhdGljIE9TVHlwZQorICBnZXRfZmlsZV90eXBlX2Zyb21fcGF0aCggY29uc3QgVUludDgqICBwYXRobmFtZSApCisgIHsKKyAgICBGU1JlZiAgICAgICAgICByZWY7CisgICAgRlNDYXRhbG9nSW5mbyAgaW5mbzsKKworCisgICAgaWYgKCBub0VyciAhPSBGU1BhdGhNYWtlUmVmKCBwYXRobmFtZSwgJnJlZiwgRkFMU0UgKSApCisgICAgICByZXR1cm4gKCBPU1R5cGUgKSAwOworCisgICAgaWYgKCBub0VyciAhPSBGU0dldENhdGFsb2dJbmZvKCAmcmVmLCBrRlNDYXRJbmZvRmluZGVySW5mbywgJmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMICkgKQorICAgICAgcmV0dXJuICggT1NUeXBlICkgMDsKKworICAgIHJldHVybiAoKEZJbmZvICopKGluZm8uZmluZGVySW5mbykpLT5mZFR5cGU7CisgIH0KKworCisgIC8qIEdpdmVuIGEgUG9zdFNjcmlwdCBmb250IG5hbWUsIGNyZWF0ZSB0aGUgTWFjaW50b3NoIExXRk4gZmlsZSBuYW1lLiAqLworICBzdGF0aWMgdm9pZAorICBjcmVhdGVfbHdmbl9uYW1lKCBjaGFyKiAgIHBzX25hbWUsCisgICAgICAgICAgICAgICAgICAgIFN0cjI1NSAgbHdmbl9maWxlX25hbWUgKQorICB7CisgICAgaW50ICAgICAgIG1heCA9IDUsIGNvdW50ID0gMDsKKyAgICBGVF9CeXRlKiAgcCA9IGx3Zm5fZmlsZV9uYW1lOworICAgIEZUX0J5dGUqICBxID0gKEZUX0J5dGUqKXBzX25hbWU7CisKKworICAgIGx3Zm5fZmlsZV9uYW1lWzBdID0gMDsKKworICAgIHdoaWxlICggKnEgKQorICAgIHsKKyAgICAgIGlmICggZnRfaXN1cHBlciggKnEgKSApCisgICAgICB7CisgICAgICAgIGlmICggY291bnQgKQorICAgICAgICAgIG1heCA9IDM7CisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgIH0KKyAgICAgIGlmICggY291bnQgPCBtYXggJiYgKCBmdF9pc2FsbnVtKCAqcSApIHx8ICpxID09ICdfJyApICkKKyAgICAgIHsKKyAgICAgICAgKisrcCA9ICpxOworICAgICAgICBsd2ZuX2ZpbGVfbmFtZVswXSsrOworICAgICAgICBjb3VudCsrOworICAgICAgfQorICAgICAgcSsrOworICAgIH0KKyAgfQorCisKKyAgc3RhdGljIHNob3J0CisgIGNvdW50X2ZhY2VzX3NmbnQoIGNoYXIqICBmb25kX2RhdGEgKQorICB7CisgICAgLyogVGhlIGNvdW50IGlzIDEgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBpbiB0aGUgRk9ORC4gICovCisgICAgLyogSXNuJ3QgdGhhdCBjdXRlPyA6LSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICByZXR1cm4gRW5kaWFuUzE2X0J0b04oICooIChzaG9ydCopKCBmb25kX2RhdGEgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoIEZhbVJlYyApICkgKSApICsgMTsKKyAgfQorCisKKyAgc3RhdGljIHNob3J0CisgIGNvdW50X2ZhY2VzX3NjYWxhYmxlKCBjaGFyKiAgZm9uZF9kYXRhICkKKyAgeworICAgIEFzc2NFbnRyeSogIGFzc29jOworICAgIHNob3J0ICAgICAgIGksIGZhY2UsIGZhY2VfYWxsOworCisKKyAgICBmYWNlX2FsbCA9IEVuZGlhblMxNl9CdG9OKCAqKCAoc2hvcnQgKikoIGZvbmRfZGF0YSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKCBGYW1SZWMgKSApICkgKSArIDE7CisgICAgYXNzb2MgICAgPSAoQXNzY0VudHJ5KikoIGZvbmRfZGF0YSArIHNpemVvZiAoIEZhbVJlYyApICsgMiApOworICAgIGZhY2UgICAgID0gMDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgZmFjZV9hbGw7IGkrKyApCisgICAgeworICAgICAgaWYgKCAwID09IEVuZGlhblMxNl9CdG9OKCBhc3NvY1tpXS5mb250U2l6ZSApICkKKyAgICAgICAgZmFjZSsrOworICAgIH0KKyAgICByZXR1cm4gZmFjZTsKKyAgfQorCisKKyAgLyogTG9vayBpbnNpZGUgdGhlIEZPTkQgZGF0YSwgYW5zd2VyIHdoZXRoZXIgdGhlcmUgc2hvdWxkIGJlIGFuIFNGTlQKKyAgICAgcmVzb3VyY2UsIGFuZCBhbnN3ZXIgdGhlIG5hbWUgb2YgYSBwb3NzaWJsZSBMV0ZOIFR5cGUgMSBmaWxlLgorCisgICAgIFRoYW5rcyB0byBQYXVsIE1pbGxlciAocGF1bG1AcHJvZm91bmRlZmZlY3RzLmNvbSkgZm9yIHRoZSBmaXgKKyAgICAgdG8gbG9hZCBhIGZhY2UgT1RIRVIgdGhhbiB0aGUgZmlyc3Qgb25lIGluIHRoZSBGT05EIQorICAqLworCisKKyAgc3RhdGljIHZvaWQKKyAgcGFyc2VfZm9uZCggY2hhciogICBmb25kX2RhdGEsCisgICAgICAgICAgICAgIHNob3J0KiAgaGF2ZV9zZm50LAorICAgICAgICAgICAgICBSZXNJRCogIHNmbnRfaWQsCisgICAgICAgICAgICAgIFN0cjI1NSAgbHdmbl9maWxlX25hbWUsCisgICAgICAgICAgICAgIHNob3J0ICAgZmFjZV9pbmRleCApCisgIHsKKyAgICBBc3NjRW50cnkqICBhc3NvYzsKKyAgICBBc3NjRW50cnkqICBiYXNlX2Fzc29jOworICAgIEZhbVJlYyogICAgIGZvbmQ7CisKKworICAgICpzZm50X2lkICAgICAgICAgID0gMDsKKyAgICAqaGF2ZV9zZm50ICAgICAgICA9IDA7CisgICAgbHdmbl9maWxlX25hbWVbMF0gPSAwOworCisgICAgZm9uZCAgICAgICA9IChGYW1SZWMqKWZvbmRfZGF0YTsKKyAgICBhc3NvYyAgICAgID0gKEFzc2NFbnRyeSopKCBmb25kX2RhdGEgKyBzaXplb2YgKCBGYW1SZWMgKSArIDIgKTsKKyAgICBiYXNlX2Fzc29jID0gYXNzb2M7CisKKyAgICAvKiB0aGUgbWF4aW11bSBmYWNlcyBpbiBhIEZPTkQgaXMgNDgsIHNpemUgb2YgU3R5bGVUYWJsZS5pbmRleGVzW10gKi8KKyAgICBpZiAoIDQ3IDwgZmFjZV9pbmRleCApCisgICAgICByZXR1cm47CisKKyAgICAvKiBMZXQncyBkbyBhIGxpdHRsZSByYW5nZSBjaGVja2luZyBiZWZvcmUgd2UgZ2V0IHRvbyBleGNpdGVkIGhlcmUgKi8KKyAgICBpZiAoIGZhY2VfaW5kZXggPCBjb3VudF9mYWNlc19zZm50KCBmb25kX2RhdGEgKSApCisgICAgeworICAgICAgYXNzb2MgKz0gZmFjZV9pbmRleDsgICAgICAgIC8qIGFkZCBvbiB0aGUgZmFjZV9pbmRleCEgKi8KKworICAgICAgLyogaWYgdGhlIGZhY2UgYXQgdGhpcyBpbmRleCBpcyBub3Qgc2NhbGFibGUsCisgICAgICAgICBmYWxsIGJhY2sgdG8gdGhlIGZpcnN0IG9uZSAob2xkIGJlaGF2aW9yKSAqLworICAgICAgaWYgKCBFbmRpYW5TMTZfQnRvTiggYXNzb2MtPmZvbnRTaXplICkgPT0gMCApCisgICAgICB7CisgICAgICAgICpoYXZlX3NmbnQgPSAxOworICAgICAgICAqc2ZudF9pZCAgID0gRW5kaWFuUzE2X0J0b04oIGFzc29jLT5mb250SUQgKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCBiYXNlX2Fzc29jLT5mb250U2l6ZSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgKmhhdmVfc2ZudCA9IDE7CisgICAgICAgICpzZm50X2lkICAgPSBFbmRpYW5TMTZfQnRvTiggYmFzZV9hc3NvYy0+Zm9udElEICk7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCBFbmRpYW5TMzJfQnRvTiggZm9uZC0+ZmZTdHlsT2ZmICkgKQorICAgIHsKKyAgICAgIHVuc2lnbmVkIGNoYXIqICBwID0gKHVuc2lnbmVkIGNoYXIqKWZvbmRfZGF0YTsKKyAgICAgIFN0eWxlVGFibGUqICAgICBzdHlsZTsKKyAgICAgIHVuc2lnbmVkIHNob3J0ICBzdHJpbmdfY291bnQ7CisgICAgICBjaGFyICAgICAgICAgICAgcHNfbmFtZVsyNTZdOworICAgICAgdW5zaWduZWQgY2hhciogIG5hbWVzWzY0XTsKKyAgICAgIGludCAgICAgICAgICAgICBpOworCisKKyAgICAgIHAgKz0gRW5kaWFuUzMyX0J0b04oIGZvbmQtPmZmU3R5bE9mZiApOworICAgICAgc3R5bGUgPSAoU3R5bGVUYWJsZSopcDsKKyAgICAgIHAgKz0gc2l6ZW9mICggU3R5bGVUYWJsZSApOworICAgICAgc3RyaW5nX2NvdW50ID0gRW5kaWFuUzE2X0J0b04oICooc2hvcnQqKShwKSApOworICAgICAgcCArPSBzaXplb2YgKCBzaG9ydCApOworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IHN0cmluZ19jb3VudCAmJiBpIDwgNjQ7IGkrKyApCisgICAgICB7CisgICAgICAgIG5hbWVzW2ldID0gcDsKKyAgICAgICAgcCAgICAgICArPSBuYW1lc1tpXVswXTsKKyAgICAgICAgcCsrOworICAgICAgfQorCisgICAgICB7CisgICAgICAgIHNpemVfdCAgcHNfbmFtZV9sZW4gPSAoc2l6ZV90KW5hbWVzWzBdWzBdOworCisKKyAgICAgICAgaWYgKCBwc19uYW1lX2xlbiAhPSAwICkKKyAgICAgICAgeworICAgICAgICAgIGZ0X21lbWNweShwc19uYW1lLCBuYW1lc1swXSArIDEsIHBzX25hbWVfbGVuKTsKKyAgICAgICAgICBwc19uYW1lW3BzX25hbWVfbGVuXSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBzdHlsZS0+aW5kZXhlc1tmYWNlX2luZGV4XSA+IDEgJiYKKyAgICAgICAgICAgICBzdHlsZS0+aW5kZXhlc1tmYWNlX2luZGV4XSA8PSBGVF9NSU4oIHN0cmluZ19jb3VudCwgNjQgKSApCisgICAgICAgIHsKKyAgICAgICAgICB1bnNpZ25lZCBjaGFyKiAgc3VmZml4ZXMgPSBuYW1lc1tzdHlsZS0+aW5kZXhlc1tmYWNlX2luZGV4XSAtIDFdOworCisKKyAgICAgICAgICBmb3IgKCBpID0gMTsgaSA8PSBzdWZmaXhlc1swXTsgaSsrICkKKyAgICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiAgczsKKyAgICAgICAgICAgIHNpemVfdCAgICAgICAgICBqID0gc3VmZml4ZXNbaV0gLSAxOworCisKKyAgICAgICAgICAgIGlmICggaiA8IHN0cmluZ19jb3VudCAmJiAoIHMgPSBuYW1lc1tqXSApICE9IE5VTEwgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBzaXplX3QgIHNfbGVuID0gKHNpemVfdClzWzBdOworCisKKyAgICAgICAgICAgICAgaWYgKCBzX2xlbiAhPSAwICYmIHBzX25hbWVfbGVuICsgc19sZW4gPCBzaXplb2YgKCBwc19uYW1lICkgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnRfbWVtY3B5KCBwc19uYW1lICsgcHNfbmFtZV9sZW4sIHMgKyAxLCBzX2xlbiApOworICAgICAgICAgICAgICAgIHBzX25hbWVfbGVuICs9IHNfbGVuOworICAgICAgICAgICAgICAgIHBzX25hbWVbcHNfbmFtZV9sZW5dID0gMDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBjcmVhdGVfbHdmbl9uYW1lKCBwc19uYW1lLCBsd2ZuX2ZpbGVfbmFtZSApOworICAgIH0KKyAgfQorCisKKyAgc3RhdGljICBGVF9FcnJvcgorICBsb29rdXBfbHdmbl9ieV9mb25kKCBjb25zdCBVSW50OCogICAgICBwYXRoX2ZvbmQsCisgICAgICAgICAgICAgICAgICAgICAgIENvbnN0U3RyMjU1UGFyYW0gIGJhc2VfbHdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgVUludDgqICAgICAgICAgICAgcGF0aF9sd2ZuLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgICBwYXRoX3NpemUgKQorICB7CisgICAgRlNSZWYgICByZWYsIHBhcl9yZWY7CisgICAgc2l6ZV90ICBkaXJuYW1lX2xlbjsKKworCisgICAgLyogUGF0aG5hbWUgZm9yIEZTUmVmIGNhbiBiZSBpbiB2YXJpb3VzIGZvcm1hdHM6IEhGUywgSEZTKywgYW5kIFBPU0lYLiAqLworICAgIC8qIFdlIHNob3VsZCBub3QgZXh0cmFjdCBwYXJlbnQgZGlyZWN0b3J5IGJ5IHN0cmluZyBtYW5pcHVsYXRpb24uICAgICAgKi8KKworICAgIGlmICggbm9FcnIgIT0gRlNQYXRoTWFrZVJlZiggcGF0aF9mb25kLCAmcmVmLCBGQUxTRSApICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgaWYgKCBub0VyciAhPSBGU0dldENhdGFsb2dJbmZvKCAmcmVmLCBrRlNDYXRJbmZvTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsICZwYXJfcmVmICkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBpZiAoIG5vRXJyICE9IEZTUmVmTWFrZVBhdGgoICZwYXJfcmVmLCBwYXRoX2x3Zm4sIHBhdGhfc2l6ZSApICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgaWYgKCBmdF9zdHJsZW4oIChjaGFyICopcGF0aF9sd2ZuICkgKyAxICsgYmFzZV9sd2ZuWzBdID4gcGF0aF9zaXplICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgLyogbm93IHdlIGhhdmUgYWJzb2x1dGUgZGlybmFtZSBpbiBwYXRoX2x3Zm4gKi8KKyAgICBmdF9zdHJjYXQoIChjaGFyICopcGF0aF9sd2ZuLCAiLyIgKTsKKyAgICBkaXJuYW1lX2xlbiA9IGZ0X3N0cmxlbiggKGNoYXIgKilwYXRoX2x3Zm4gKTsKKyAgICBmdF9zdHJjYXQoIChjaGFyICopcGF0aF9sd2ZuLCAoY2hhciAqKWJhc2VfbHdmbiArIDEgKTsKKyAgICBwYXRoX2x3Zm5bZGlybmFtZV9sZW4gKyBiYXNlX2x3Zm5bMF1dID0gJ1wwJzsKKworICAgIGlmICggbm9FcnIgIT0gRlNQYXRoTWFrZVJlZiggcGF0aF9sd2ZuLCAmcmVmLCBGQUxTRSApICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggQ2Fubm90X09wZW5fUmVzb3VyY2UgKTsKKworICAgIGlmICggbm9FcnIgIT0gRlNHZXRDYXRhbG9nSW5mbyggJnJlZiwga0ZTQ2F0SW5mb05vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMICkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBDYW5ub3RfT3Blbl9SZXNvdXJjZSApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgc3RhdGljIHNob3J0CisgIGNvdW50X2ZhY2VzKCBIYW5kbGUgICAgICAgIGZvbmQsCisgICAgICAgICAgICAgICBjb25zdCBVSW50OCogIHBhdGhuYW1lICkKKyAgeworICAgIFJlc0lEICAgICBzZm50X2lkOworICAgIHNob3J0ICAgICBoYXZlX3NmbnQsIGhhdmVfbHdmbjsKKyAgICBTdHIyNTUgICAgbHdmbl9maWxlX25hbWU7CisgICAgVUludDggICAgIGJ1ZmZbUEFUSF9NQVhdOworICAgIEZUX0Vycm9yICBlcnI7CisgICAgc2hvcnQgICAgIG51bV9mYWNlczsKKworCisgICAgaGF2ZV9zZm50ID0gaGF2ZV9sd2ZuID0gMDsKKworICAgIHBhcnNlX2ZvbmQoICpmb25kLCAmaGF2ZV9zZm50LCAmc2ZudF9pZCwgbHdmbl9maWxlX25hbWUsIDAgKTsKKworICAgIGlmICggbHdmbl9maWxlX25hbWVbMF0gKQorICAgIHsKKyAgICAgIGVyciA9IGxvb2t1cF9sd2ZuX2J5X2ZvbmQoIHBhdGhuYW1lLCBsd2ZuX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmYsIHNpemVvZiAoIGJ1ZmYgKSAgKTsKKyAgICAgIGlmICggIWVyciApCisgICAgICAgIGhhdmVfbHdmbiA9IDE7CisgICAgfQorCisgICAgaWYgKCBoYXZlX2x3Zm4gJiYgKCAhaGF2ZV9zZm50IHx8IFBSRUZFUl9MV0ZOICkgKQorICAgICAgbnVtX2ZhY2VzID0gMTsKKyAgICBlbHNlCisgICAgICBudW1fZmFjZXMgPSBjb3VudF9mYWNlc19zY2FsYWJsZSggKmZvbmQgKTsKKworICAgIHJldHVybiBudW1fZmFjZXM7CisgIH0KKworCisgIC8qIFJlYWQgVHlwZSAxIGRhdGEgZnJvbSB0aGUgUE9TVCByZXNvdXJjZXMgaW5zaWRlIHRoZSBMV0ZOIGZpbGUsCisgICAgIHJldHVybiBhIFBGQiBidWZmZXIuICBUaGlzIGlzIHNvbWV3aGF0IGNvbnZvbHV0ZWQgYmVjYXVzZSB0aGUgRlQyCisgICAgIFBGQiBwYXJzZXIgd2FudHMgdGhlIEFTQ0lJIGhlYWRlciBhcyBvbmUgY2h1bmssIGFuZCB0aGUgTFdGTgorICAgICBjaHVua3MgYXJlIG9mdGVuIG5vdCBvcmdhbml6ZWQgdGhhdCB3YXksIHNvIHdlIGdsdWUgY2h1bmtzCisgICAgIG9mIHRoZSBzYW1lIHR5cGUgdG9nZXRoZXIuICovCisgIHN0YXRpYyBGVF9FcnJvcgorICByZWFkX2x3Zm4oIEZUX01lbW9yeSAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICBSZXNGaWxlUmVmTnVtICByZXMsCisgICAgICAgICAgICAgRlRfQnl0ZSoqICAgICAgcGZiX2RhdGEsCisgICAgICAgICAgICAgRlRfVUxvbmcqICAgICAgc2l6ZSApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBSZXNJRCAgICAgICAgICByZXNfaWQ7CisgICAgdW5zaWduZWQgY2hhciAgKmJ1ZmZlciwgKnAsICpzaXplX3AgPSBOVUxMOworICAgIEZUX1VMb25nICAgICAgIHRvdGFsX3NpemUgPSAwOworICAgIEZUX1VMb25nICAgICAgIG9sZF90b3RhbF9zaXplID0gMDsKKyAgICBGVF9VTG9uZyAgICAgICBwb3N0X3NpemUsIHBmYl9jaHVua19zaXplOworICAgIEhhbmRsZSAgICAgICAgIHBvc3RfZGF0YTsKKyAgICBjaGFyICAgICAgICAgICBjb2RlLCBsYXN0X2NvZGU7CisKKworICAgIFVzZVJlc0ZpbGUoIHJlcyApOworCisgICAgLyogRmlyc3QgcGFzczogbG9hZCBhbGwgUE9TVCByZXNvdXJjZXMsIGFuZCBkZXRlcm1pbmUgdGhlIHNpemUgb2YgKi8KKyAgICAvKiB0aGUgb3V0cHV0IGJ1ZmZlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHJlc19pZCAgICA9IDUwMTsKKyAgICBsYXN0X2NvZGUgPSAtMTsKKworICAgIGZvciAoOzspCisgICAgeworICAgICAgcG9zdF9kYXRhID0gR2V0MVJlc291cmNlKCBUVEFHX1BPU1QsIHJlc19pZCsrICk7CisgICAgICBpZiAoIHBvc3RfZGF0YSA9PSBOVUxMICkKKyAgICAgICAgYnJlYWs7ICAvKiB3ZSBhcmUgZG9uZSAqLworCisgICAgICBjb2RlID0gKCpwb3N0X2RhdGEpWzBdOworCisgICAgICBpZiAoIGNvZGUgIT0gbGFzdF9jb2RlICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBjb2RlID09IDUgKQorICAgICAgICAgIHRvdGFsX3NpemUgKz0gMjsgLyoganVzdCB0aGUgZW5kIGNvZGUgKi8KKyAgICAgICAgZWxzZQorICAgICAgICAgIHRvdGFsX3NpemUgKz0gNjsgLyogY29kZSArIDQgYnl0ZXMgY2h1bmsgbGVuZ3RoICovCisgICAgICB9CisKKyAgICAgIHRvdGFsX3NpemUgKz0gR2V0SGFuZGxlU2l6ZSggcG9zdF9kYXRhICkgLSAyOworICAgICAgbGFzdF9jb2RlID0gY29kZTsKKworICAgICAgLyogZGV0ZWN0IGludGVnZXIgb3ZlcmZsb3dzICovCisgICAgICBpZiAoIHRvdGFsX3NpemUgPCBvbGRfdG90YWxfc2l6ZSApCisgICAgICB7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEFycmF5X1Rvb19MYXJnZSApOworICAgICAgICBnb3RvIEVycm9yOworICAgICAgfQorCisgICAgICBvbGRfdG90YWxfc2l6ZSA9IHRvdGFsX3NpemU7CisgICAgfQorCisgICAgaWYgKCBGVF9BTExPQyggYnVmZmVyLCAoRlRfTG9uZyl0b3RhbF9zaXplICkgKQorICAgICAgZ290byBFcnJvcjsKKworICAgIC8qIFNlY29uZCBwYXNzOiBhcHBlbmQgYWxsIFBPU1QgZGF0YSB0byB0aGUgYnVmZmVyLCBhZGQgUEZCIGZpZWxkcy4gKi8KKyAgICAvKiBHbHVlIGFsbCBjb25zZWN1dGl2ZSBjaHVua3Mgb2YgdGhlIHNhbWUgdHlwZSB0b2dldGhlci4gICAgICAgICAgICovCisgICAgcCAgICAgICAgICAgICAgPSBidWZmZXI7CisgICAgcmVzX2lkICAgICAgICAgPSA1MDE7CisgICAgbGFzdF9jb2RlICAgICAgPSAtMTsKKyAgICBwZmJfY2h1bmtfc2l6ZSA9IDA7CisKKyAgICBmb3IgKDs7KQorICAgIHsKKyAgICAgIHBvc3RfZGF0YSA9IEdldDFSZXNvdXJjZSggVFRBR19QT1NULCByZXNfaWQrKyApOworICAgICAgaWYgKCBwb3N0X2RhdGEgPT0gTlVMTCApCisgICAgICAgIGJyZWFrOyAgLyogd2UgYXJlIGRvbmUgKi8KKworICAgICAgcG9zdF9zaXplID0gKEZUX1VMb25nKUdldEhhbmRsZVNpemUoIHBvc3RfZGF0YSApIC0gMjsKKyAgICAgIGNvZGUgPSAoKnBvc3RfZGF0YSlbMF07CisKKyAgICAgIGlmICggY29kZSAhPSBsYXN0X2NvZGUgKQorICAgICAgeworICAgICAgICBpZiAoIGxhc3RfY29kZSAhPSAtMSApCisgICAgICAgIHsKKyAgICAgICAgICAvKiB3ZSBhcmUgZG9uZSBhZGRpbmcgYSBjaHVuaywgZmlsbCBpbiB0aGUgc2l6ZSBmaWVsZCAqLworICAgICAgICAgIGlmICggc2l6ZV9wICE9IE5VTEwgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICpzaXplX3ArKyA9IChGVF9CeXRlKSggICBwZmJfY2h1bmtfc2l6ZSAgICAgICAgICYgMHhGRiApOworICAgICAgICAgICAgKnNpemVfcCsrID0gKEZUX0J5dGUpKCAoIHBmYl9jaHVua19zaXplID4+IDggICkgJiAweEZGICk7CisgICAgICAgICAgICAqc2l6ZV9wKysgPSAoRlRfQnl0ZSkoICggcGZiX2NodW5rX3NpemUgPj4gMTYgKSAmIDB4RkYgKTsKKyAgICAgICAgICAgICpzaXplX3ArKyA9IChGVF9CeXRlKSggKCBwZmJfY2h1bmtfc2l6ZSA+PiAyNCApICYgMHhGRiApOworICAgICAgICAgIH0KKyAgICAgICAgICBwZmJfY2h1bmtfc2l6ZSA9IDA7CisgICAgICAgIH0KKworICAgICAgICAqcCsrID0gMHg4MDsKKyAgICAgICAgaWYgKCBjb2RlID09IDUgKQorICAgICAgICAgICpwKysgPSAweDAzOyAgLyogdGhlIGVuZCAqLworICAgICAgICBlbHNlIGlmICggY29kZSA9PSAyICkKKyAgICAgICAgICAqcCsrID0gMHgwMjsgIC8qIGJpbmFyeSBzZWdtZW50ICovCisgICAgICAgIGVsc2UKKyAgICAgICAgICAqcCsrID0gMHgwMTsgIC8qIEFTQ0lJIHNlZ21lbnQgKi8KKworICAgICAgICBpZiAoIGNvZGUgIT0gNSApCisgICAgICAgIHsKKyAgICAgICAgICBzaXplX3AgPSBwOyAgIC8qIHNhdmUgZm9yIGxhdGVyICovCisgICAgICAgICAgcCArPSA0OyAgICAgICAvKiBtYWtlIHNwYWNlIGZvciBzaXplIGZpZWxkICovCisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZnRfbWVtY3B5KCBwLCAqcG9zdF9kYXRhICsgMiwgcG9zdF9zaXplICk7CisgICAgICBwZmJfY2h1bmtfc2l6ZSArPSBwb3N0X3NpemU7CisgICAgICBwICs9IHBvc3Rfc2l6ZTsKKyAgICAgIGxhc3RfY29kZSA9IGNvZGU7CisgICAgfQorCisgICAgKnBmYl9kYXRhID0gYnVmZmVyOworICAgICpzaXplID0gdG90YWxfc2l6ZTsKKworICBFcnJvcjoKKyAgICBDbG9zZVJlc0ZpbGUoIHJlcyApOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogQ3JlYXRlIGEgbmV3IEZUX0ZhY2UgZnJvbSBhIGZpbGUgcGF0aCB0byBhbiBMV0ZOIGZpbGUuICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBGVF9OZXdfRmFjZV9Gcm9tX0xXRk4oIEZUX0xpYnJhcnkgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVSW50OCogIHBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlKiAgICAgIGFmYWNlICkKKyAgeworICAgIEZUX0J5dGUqICAgICAgIHBmYl9kYXRhOworICAgIEZUX1VMb25nICAgICAgIHBmYl9zaXplOworICAgIEZUX0Vycm9yICAgICAgIGVycm9yOworICAgIFJlc0ZpbGVSZWZOdW0gIHJlczsKKworCisgICAgaWYgKCBub0VyciAhPSBGVF9GU1BhdGhNYWtlUmVzKCBwYXRobmFtZSwgJnJlcyApICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggQ2Fubm90X09wZW5fUmVzb3VyY2UgKTsKKworICAgIHBmYl9kYXRhID0gTlVMTDsKKyAgICBwZmJfc2l6ZSA9IDA7CisgICAgZXJyb3IgPSByZWFkX2x3Zm4oIGxpYnJhcnktPm1lbW9yeSwgcmVzLCAmcGZiX2RhdGEsICZwZmJfc2l6ZSApOworICAgIENsb3NlUmVzRmlsZSggcmVzICk7IC8qIFBGQiBpcyBhbHJlYWR5IGxvYWRlZCwgdXNlbGVzcyBhbnltb3JlICovCisgICAgaWYgKCBlcnJvciApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICByZXR1cm4gb3Blbl9mYWNlX2Zyb21fYnVmZmVyKCBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmYl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmYl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZmFjZSApOworICB9CisKKworICAvKiBDcmVhdGUgYSBuZXcgRlRfRmFjZSBmcm9tIGFuIFNGTlQgcmVzb3VyY2UsIHNwZWNpZmllZCBieSByZXMgSUQuICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBGVF9OZXdfRmFjZV9Gcm9tX1NGTlQoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgUmVzSUQgICAgICAgc2ZudF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UqICAgIGFmYWNlICkKKyAgeworICAgIEhhbmRsZSAgICAgc2ZudCA9IE5VTEw7CisgICAgRlRfQnl0ZSogICBzZm50X2RhdGE7CisgICAgc2l6ZV90ICAgICBzZm50X3NpemU7CisgICAgRlRfRXJyb3IgICBlcnJvciAgPSBGVF9FcnJfT2s7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisgICAgaW50ICAgICAgICBpc19jZmYsIGlzX3NmbnRfcHM7CisKKworICAgIHNmbnQgPSBHZXRSZXNvdXJjZSggVFRBR19zZm50LCBzZm50X2lkICk7CisgICAgaWYgKCBzZm50ID09IE5VTEwgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0hhbmRsZSApOworCisgICAgc2ZudF9zaXplID0gKEZUX1VMb25nKUdldEhhbmRsZVNpemUoIHNmbnQgKTsKKyAgICBpZiAoIEZUX0FMTE9DKCBzZm50X2RhdGEsIChGVF9Mb25nKXNmbnRfc2l6ZSApICkKKyAgICB7CisgICAgICBSZWxlYXNlUmVzb3VyY2UoIHNmbnQgKTsKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBmdF9tZW1jcHkoIHNmbnRfZGF0YSwgKnNmbnQsIHNmbnRfc2l6ZSApOworICAgIFJlbGVhc2VSZXNvdXJjZSggc2ZudCApOworCisgICAgaXNfY2ZmICAgICA9IHNmbnRfc2l6ZSA+IDQgJiYgIWZ0X21lbWNtcCggc2ZudF9kYXRhLCAiT1RUTyIsIDQgKTsKKyAgICBpc19zZm50X3BzID0gc2ZudF9zaXplID4gNCAmJiAhZnRfbWVtY21wKCBzZm50X2RhdGEsICJ0eXAxIiwgNCApOworCisgICAgaWYgKCBpc19zZm50X3BzICkKKyAgICB7CisgICAgICBGVF9TdHJlYW0gIHN0cmVhbTsKKworCisgICAgICBpZiAoIEZUX05FVyggc3RyZWFtICkgKQorICAgICAgICBnb3RvIFRyeV9PcGVuVHlwZTsKKworICAgICAgRlRfU3RyZWFtX09wZW5NZW1vcnkoIHN0cmVhbSwgc2ZudF9kYXRhLCBzZm50X3NpemUgKTsKKyAgICAgIGlmICggIW9wZW5fZmFjZV9QU19mcm9tX3NmbnRfc3RyZWFtKCBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZhY2UgKSApCisgICAgICB7CisgICAgICAgIEZUX1N0cmVhbV9DbG9zZSggc3RyZWFtICk7CisgICAgICAgIEZUX0ZSRUUoIHN0cmVhbSApOworICAgICAgICBGVF9GUkVFKCBzZm50X2RhdGEgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICBGVF9GUkVFKCBzdHJlYW0gKTsKKyAgICB9CisgIFRyeV9PcGVuVHlwZToKKyAgICBlcnJvciA9IG9wZW5fZmFjZV9mcm9tX2J1ZmZlciggbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ZudF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZm50X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NmZiA/ICJjZmYiIDogInRydWV0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZhY2UgKTsKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIENyZWF0ZSBhIG5ldyBGVF9GYWNlIGZyb20gYSBmaWxlIHBhdGggdG8gYSBzdWl0Y2FzZSBmaWxlLiAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgRlRfTmV3X0ZhY2VfRnJvbV9TdWl0Y2FzZSggRlRfTGlicmFyeSAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVSW50OCogIHBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UqICAgICAgYWZhY2UgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgZXJyb3IgPSBGVF9FUlIoIENhbm5vdF9PcGVuX1Jlc291cmNlICk7CisgICAgUmVzRmlsZVJlZk51bSAgcmVzX3JlZjsKKyAgICBSZXNvdXJjZUluZGV4ICByZXNfaW5kZXg7CisgICAgSGFuZGxlICAgICAgICAgZm9uZDsKKyAgICBzaG9ydCAgICAgICAgICBudW1fZmFjZXNfaW5fcmVzOworCisKKyAgICBpZiAoIG5vRXJyICE9IEZUX0ZTUGF0aE1ha2VSZXMoIHBhdGhuYW1lLCAmcmVzX3JlZiApICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggQ2Fubm90X09wZW5fUmVzb3VyY2UgKTsKKworICAgIFVzZVJlc0ZpbGUoIHJlc19yZWYgKTsKKyAgICBpZiAoIFJlc0Vycm9yKCkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBDYW5ub3RfT3Blbl9SZXNvdXJjZSApOworCisgICAgbnVtX2ZhY2VzX2luX3JlcyA9IDA7CisgICAgZm9yICggcmVzX2luZGV4ID0gMTsgOyArK3Jlc19pbmRleCApCisgICAgeworICAgICAgc2hvcnQgIG51bV9mYWNlc19pbl9mb25kOworCisKKyAgICAgIGZvbmQgPSBHZXQxSW5kUmVzb3VyY2UoIFRUQUdfRk9ORCwgcmVzX2luZGV4ICk7CisgICAgICBpZiAoIFJlc0Vycm9yKCkgKQorICAgICAgICBicmVhazsKKworICAgICAgbnVtX2ZhY2VzX2luX2ZvbmQgID0gY291bnRfZmFjZXMoIGZvbmQsIHBhdGhuYW1lICk7CisgICAgICBudW1fZmFjZXNfaW5fcmVzICArPSBudW1fZmFjZXNfaW5fZm9uZDsKKworICAgICAgaWYgKCAwIDw9IGZhY2VfaW5kZXggJiYgZmFjZV9pbmRleCA8IG51bV9mYWNlc19pbl9mb25kICYmIGVycm9yICkKKyAgICAgICAgZXJyb3IgPSBGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQoIGxpYnJhcnksIGZvbmQsIGZhY2VfaW5kZXgsIGFmYWNlICk7CisKKyAgICAgIGZhY2VfaW5kZXggLT0gbnVtX2ZhY2VzX2luX2ZvbmQ7CisgICAgfQorCisgICAgQ2xvc2VSZXNGaWxlKCByZXNfcmVmICk7CisgICAgaWYgKCAhZXJyb3IgJiYgYWZhY2UgJiYgKmFmYWNlICkKKyAgICAgICgqYWZhY2UpLT5udW1fZmFjZXMgPSBudW1fZmFjZXNfaW5fcmVzOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG1hYy5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlICAgICAgZm9uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UqICAgIGFmYWNlICkKKyAgeworICAgIHNob3J0ICAgICBoYXZlX3NmbnQsIGhhdmVfbHdmbiA9IDA7CisgICAgUmVzSUQgICAgIHNmbnRfaWQsIGZvbmRfaWQ7CisgICAgT1NUeXBlICAgIGZvbmRfdHlwZTsKKyAgICBTdHIyNTUgICAgZm9uZF9uYW1lOworICAgIFN0cjI1NSAgICBsd2ZuX2ZpbGVfbmFtZTsKKyAgICBVSW50OCAgICAgcGF0aF9sd2ZuW1BBVEhfTUFYXTsKKyAgICBPU0VyciAgICAgZXJyOworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKworCisgICAgR2V0UmVzSW5mbyggZm9uZCwgJmZvbmRfaWQsICZmb25kX3R5cGUsIGZvbmRfbmFtZSApOworICAgIGlmICggUmVzRXJyb3IoKSAhPSBub0VyciB8fCBmb25kX3R5cGUgIT0gVFRBR19GT05EICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworCisgICAgcGFyc2VfZm9uZCggKmZvbmQsICZoYXZlX3NmbnQsICZzZm50X2lkLCBsd2ZuX2ZpbGVfbmFtZSwgZmFjZV9pbmRleCApOworCisgICAgaWYgKCBsd2ZuX2ZpbGVfbmFtZVswXSApCisgICAgeworICAgICAgUmVzRmlsZVJlZk51bSAgcmVzOworCisKKyAgICAgIHJlcyA9IEhvbWVSZXNGaWxlKCBmb25kICk7CisgICAgICBpZiAoIG5vRXJyICE9IFJlc0Vycm9yKCkgKQorICAgICAgICBnb3RvIGZvdW5kX25vX2x3Zm5fZmlsZTsKKworICAgICAgeworICAgICAgICBVSW50OCAgcGF0aF9mb25kW1BBVEhfTUFYXTsKKyAgICAgICAgRlNSZWYgIHJlZjsKKworCisgICAgICAgIGVyciA9IEZTR2V0Rm9ya0NCSW5mbyggcmVzLCBrRlNJbnZhbGlkVm9sdW1lUmVmTnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsICZyZWYsIE5VTEwgKTsKKyAgICAgICAgaWYgKCBub0VyciAhPSBlcnIgKQorICAgICAgICAgIGdvdG8gZm91bmRfbm9fbHdmbl9maWxlOworCisgICAgICAgIGVyciA9IEZTUmVmTWFrZVBhdGgoICZyZWYsIHBhdGhfZm9uZCwgc2l6ZW9mICggcGF0aF9mb25kICkgKTsKKyAgICAgICAgaWYgKCBub0VyciAhPSBlcnIgKQorICAgICAgICAgIGdvdG8gZm91bmRfbm9fbHdmbl9maWxlOworCisgICAgICAgIGVycm9yID0gbG9va3VwX2x3Zm5fYnlfZm9uZCggcGF0aF9mb25kLCBsd2ZuX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2x3Zm4sIHNpemVvZiAoIHBhdGhfbHdmbiApICk7CisgICAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgICBoYXZlX2x3Zm4gPSAxOworICAgICAgfQorICAgIH0KKworICAgIGlmICggaGF2ZV9sd2ZuICYmICggIWhhdmVfc2ZudCB8fCBQUkVGRVJfTFdGTiApICkKKyAgICAgIGVycm9yID0gRlRfTmV3X0ZhY2VfRnJvbV9MV0ZOKCBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfbHdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmYWNlICk7CisgICAgZWxzZQorICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworCisgIGZvdW5kX25vX2x3Zm5fZmlsZToKKyAgICBpZiAoIGhhdmVfc2ZudCAmJiBlcnJvciApCisgICAgICBlcnJvciA9IEZUX05ld19GYWNlX0Zyb21fU0ZOVCggbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZm50X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZhY2UgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogQ29tbW9uIGZ1bmN0aW9uIHRvIGxvYWQgYSBuZXcgRlRfRmFjZSBmcm9tIGEgcmVzb3VyY2UgZmlsZS4gKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIEZUX05ld19GYWNlX0Zyb21fUmVzb3VyY2UoIEZUX0xpYnJhcnkgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUludDgqICBwYXRobmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlKiAgICAgIGFmYWNlICkKKyAgeworICAgIE9TVHlwZSAgICBmaWxlX3R5cGU7CisgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICAvKiBMV0ZOIGlzIGEgKHZlcnkpIHNwZWNpZmljIGZpbGUgZm9ybWF0LCBjaGVjayBmb3IgaXQgZXhwbGljaXRseSAqLworICAgIGZpbGVfdHlwZSA9IGdldF9maWxlX3R5cGVfZnJvbV9wYXRoKCBwYXRobmFtZSApOworICAgIGlmICggZmlsZV90eXBlID09IFRUQUdfTFdGTiApCisgICAgICByZXR1cm4gRlRfTmV3X0ZhY2VfRnJvbV9MV0ZOKCBsaWJyYXJ5LCBwYXRobmFtZSwgZmFjZV9pbmRleCwgYWZhY2UgKTsKKworICAgIC8qIE90aGVyd2lzZSB0aGUgZmlsZSB0eXBlIGRvZXNuJ3QgbWF0dGVyICh0aGVyZSBhcmUgbW9yZSB0aGFuICAqLworICAgIC8qIGBGRklMJyBhbmQgYHRmaWwnKS4gIEp1c3QgdHJ5IG9wZW5pbmcgaXQgYXMgYSBmb250IHN1aXRjYXNlOyAqLworICAgIC8qIGlmIGl0IHdvcmtzLCBmaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgZXJyb3IgPSBGVF9OZXdfRmFjZV9Gcm9tX1N1aXRjYXNlKCBsaWJyYXJ5LCBwYXRobmFtZSwgZmFjZV9pbmRleCwgYWZhY2UgKTsKKyAgICBpZiAoIGVycm9yID09IDAgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgLyogbGV0IGl0IGZhbGwgdGhyb3VnaCB0byBub3JtYWwgbG9hZGVyICgudHRmLCAub3RmLCBldGMuKTsgKi8KKyAgICAvKiB3ZSBzaWduYWwgdGhpcyBieSByZXR1cm5pbmcgbm8gZXJyb3IgYW5kIG5vIEZUX0ZhY2UgICAgICAqLworICAgICphZmFjZSA9IE5VTEw7CisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX05ld19GYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgaXMgdGhlIE1hYy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBGVF9OZXdfRmFjZS4gIEluICAgICAgICAqLworICAvKiAgICBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQgRlRfTmV3X0ZhY2UoKSBmdW5jdGlvbmFsaXR5LCBpdCBhbHNvICAgICAgKi8KKyAgLyogICAgYWNjZXB0cyBwYXRobmFtZXMgdG8gTWFjIHN1aXRjYXNlIGZpbGVzLiAgRm9yIGZ1cnRoZXIgICAgICAgICAgICAgICovCisgIC8qICAgIGRvY3VtZW50YXRpb24gc2VlIHRoZSBvcmlnaW5hbCBGVF9OZXdfRmFjZSgpIGluIGZyZWV0eXBlLmguICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9OZXdfRmFjZSggRlRfTGlicmFyeSAgIGxpYnJhcnksCisgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgcGF0aG5hbWUsCisgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgIEZUX0ZhY2UqICAgICBhZmFjZSApCisgIHsKKyAgICBGVF9PcGVuX0FyZ3MgIGFyZ3M7CisgICAgRlRfRXJyb3IgICAgICBlcnJvcjsKKworCisgICAgLyogdGVzdCBmb3IgdmFsaWQgYGxpYnJhcnknIGFuZCBgYWZhY2UnIGRlbGF5ZWQgdG8gRlRfT3Blbl9GYWNlKCkgKi8KKyAgICBpZiAoICFwYXRobmFtZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGVycm9yICA9IEZUX0Vycl9PazsKKyAgICAqYWZhY2UgPSBOVUxMOworCisgICAgLyogdHJ5IHJlc291cmNlZm9yayBiYXNlZCBmb250OiBMV0ZOLCBGRklMICovCisgICAgZXJyb3IgPSBGVF9OZXdfRmFjZV9Gcm9tX1Jlc291cmNlKCBsaWJyYXJ5LCAoVUludDggKilwYXRobmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2VfaW5kZXgsIGFmYWNlICk7CisgICAgaWYgKCBlcnJvciAhPSAwIHx8ICphZmFjZSAhPSBOVUxMICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIC8qIGxldCBpdCBmYWxsIHRocm91Z2ggdG8gbm9ybWFsIGxvYWRlciAoLnR0ZiwgLm90ZiwgZXRjLikgKi8KKyAgICBhcmdzLmZsYWdzICAgID0gRlRfT1BFTl9QQVRITkFNRTsKKyAgICBhcmdzLnBhdGhuYW1lID0gKGNoYXIqKXBhdGhuYW1lOworICAgIHJldHVybiBGVF9PcGVuX0ZhY2UoIGxpYnJhcnksICZhcmdzLCBmYWNlX2luZGV4LCBhZmFjZSApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfRmFjZV9Gcm9tX0ZTUmVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfRmFjZV9Gcm9tX0ZTUmVmIGlzIGlkZW50aWNhbCB0byBGVF9OZXdfRmFjZSBleGNlcHQgaXQgICAgICAgKi8KKyAgLyogICAgYWNjZXB0cyBhbiBGU1JlZiBpbnN0ZWFkIG9mIGEgcGF0aC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYmVjYXVzZSBDYXJib24gZGF0YSB0eXBlcyAoRlNSZWYpICAgICAgICAgKi8KKyAgLyogYXJlIG5vdCBjcm9zcy1wbGF0Zm9ybSwgYW5kIHRodXMgbm90IHN1aXRhYmxlIGZvciB0aGUgZnJlZXR5cGUgQVBJLiAgICovCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfTmV3X0ZhY2VfRnJvbV9GU1JlZiggRlRfTGlicmFyeSAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGU1JlZiogIHJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlKiAgICAgIGFmYWNlICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgZXJyb3I7CisgICAgRlRfT3Blbl9BcmdzICBhcmdzOworICAgIE9TRXJyICAgZXJyOworICAgIFVJbnQ4ICAgcGF0aG5hbWVbUEFUSF9NQVhdOworCisKKyAgICBpZiAoICFyZWYgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBlcnIgPSBGU1JlZk1ha2VQYXRoKCByZWYsIHBhdGhuYW1lLCBzaXplb2YgKCBwYXRobmFtZSApICk7CisgICAgaWYgKCBlcnIgKQorICAgICAgZXJyb3IgPSBGVF9USFJPVyggQ2Fubm90X09wZW5fUmVzb3VyY2UgKTsKKworICAgIGVycm9yID0gRlRfTmV3X0ZhY2VfRnJvbV9SZXNvdXJjZSggbGlicmFyeSwgcGF0aG5hbWUsIGZhY2VfaW5kZXgsIGFmYWNlICk7CisgICAgaWYgKCBlcnJvciAhPSAwIHx8ICphZmFjZSAhPSBOVUxMICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIC8qIGZhbGxiYWNrIHRvIGRhdGFmb3JrIGZvbnQgKi8KKyAgICBhcmdzLmZsYWdzICAgID0gRlRfT1BFTl9QQVRITkFNRTsKKyAgICBhcmdzLnBhdGhuYW1lID0gKGNoYXIqKXBhdGhuYW1lOworICAgIHJldHVybiBGVF9PcGVuX0ZhY2UoIGxpYnJhcnksICZhcmdzLCBmYWNlX2luZGV4LCBhZmFjZSApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfRmFjZV9Gcm9tX0ZTU3BlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGVF9OZXdfRmFjZV9Gcm9tX0ZTU3BlYyBpcyBpZGVudGljYWwgdG8gRlRfTmV3X0ZhY2UgZXhjZXB0IGl0ICAgICAgKi8KKyAgLyogICAgYWNjZXB0cyBhbiBGU1NwZWMgaW5zdGVhZCBvZiBhIHBhdGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYmVjYXVzZSBGU1NwZWMgaXMgZGVwcmVjYXRlZCBpbiBNYWMgT1MgWCAgKi8KKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9OZXdfRmFjZV9Gcm9tX0ZTU3BlYyggRlRfTGlicmFyeSAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZTU3BlYyogIHNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSogICAgICAgYWZhY2UgKQorICB7CisjaWYgKCBfX0xQNjRfXyApIHx8ICggZGVmaW5lZCggTUFDX09TX1hfVkVSU0lPTl8xMF81ICkgJiYgXAorICAgICAgKCBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSBNQUNfT1NfWF9WRVJTSU9OXzEwXzUgKSApCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7CisgICAgRlRfVU5VU0VEKCBzcGVjICk7CisgICAgRlRfVU5VU0VEKCBmYWNlX2luZGV4ICk7CisgICAgRlRfVU5VU0VEKCBhZmFjZSApOworCisgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKTsKKyNlbHNlCisgICAgRlNSZWYgIHJlZjsKKworCisgICAgaWYgKCAhc3BlYyB8fCBGU3BNYWtlRlNSZWYoIHNwZWMsICZyZWYgKSAhPSBub0VyciApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICBlbHNlCisgICAgICByZXR1cm4gRlRfTmV3X0ZhY2VfRnJvbV9GU1JlZiggbGlicmFyeSwgJnJlZiwgZmFjZV9pbmRleCwgYWZhY2UgKTsKKyNlbmRpZgorICB9CisKKyNlbmRpZiAvKiBGVF9NQUNJTlRPU0ggKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdG9ianMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdG9ianMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmQ0NjBkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0b2Jqcy5jCkBAIC0wLDAgKzEsNDg2NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRvYmpzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBwcml2YXRlIGJhc2UgY2xhc3NlcyAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRsaXN0LmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHZhbGlkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cmZvcmsuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgiICAgIC8qIGZvciBTRk5UX0xvYWRfVGFibGVfRnVuYyAqLworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCIKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwcm9wLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnNmbnQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cG9zdG5tLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmdsZGljdC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGNtYXAuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2a2Vybi5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGVuZy5oIgorCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9NQUNfRk9OVFMKKyNpbmNsdWRlICJmdGJhc2UuaCIKKyNlbmRpZgorCisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGJpdG1hcC5oIgorCisjaWYgZGVmaW5lZCggX01TQ19WRVIgKSAgICAgIC8qIFZpc3VhbCBDKysgKGFuZCBJbnRlbCBDKyspICAgKi8KKyAgLyogV2UgZGlzYWJsZSB0aGUgd2FybmluZyBgY29udmVyc2lvbiBmcm9tIFhYWCB0byBZWVksICAgICAqLworICAvKiBwb3NzaWJsZSBsb3NzIG9mIGRhdGEnIGluIG9yZGVyIHRvIGNvbXBpbGUgY2xlYW5seSB3aXRoICovCisgIC8qIHRoZSBtYXhpbXVtIGxldmVsIG9mIHdhcm5pbmdzOiBgbWQ1LmMnIGlzIG5vbi1GcmVlVHlwZSAgKi8KKyAgLyogY29kZSwgYW5kIGl0IGdldHMgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQgYnVpbGRzIG9ubHkuICAqLworI3ByYWdtYSB3YXJuaW5nKCBwdXNoICkKKyNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQyNDQgKQorI2VuZGlmIC8qIF9NU0NfVkVSICovCisKKyAgLyogaXQncyBlYXNpZXN0IHRvIGluY2x1ZGUgYG1kNS5jJyBkaXJlY3RseSAqLworI2RlZmluZSBmcmVlICBtZDVfZnJlZSAvKiBzdXBwcmVzcyBhIHNoYWRvdyB3YXJuaW5nICovCisjaW5jbHVkZSAibWQ1LmMiCisjdW5kZWYgZnJlZQorCisjaWYgZGVmaW5lZCggX01TQ19WRVIgKQorI3ByYWdtYSB3YXJuaW5nKCBwb3AgKQorI2VuZGlmCisKKyNlbmRpZiAvKiBGVF9ERUJVR19MRVZFTF9UUkFDRSAqLworCisKKyNkZWZpbmUgR1JJRF9GSVRfTUVUUklDUworCisKKyAgRlRfQkFTRV9ERUYoIEZUX1BvaW50ZXIgKQorICBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwKCBGVF9TZXJ2aWNlRGVzYyAgc2VydmljZV9kZXNjcmlwdG9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICAgIHNlcnZpY2VfaWQgKQorICB7CisgICAgRlRfUG9pbnRlciAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgRlRfU2VydmljZURlc2MgIGRlc2MgICA9IHNlcnZpY2VfZGVzY3JpcHRvcnM7CisKKworICAgIGlmICggZGVzYyAmJiBzZXJ2aWNlX2lkICkKKyAgICB7CisgICAgICBmb3IgKCA7IGRlc2MtPnNlcnZfaWQgIT0gTlVMTDsgZGVzYysrICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBmdF9zdHJjbXAoIGRlc2MtPnNlcnZfaWQsIHNlcnZpY2VfaWQgKSA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgIHJlc3VsdCA9IChGVF9Qb2ludGVyKWRlc2MtPnNlcnZfZGF0YTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgZnRfdmFsaWRhdG9yX2luaXQoIEZUX1ZhbGlkYXRvciAgICAgICAgdmFsaWQsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CeXRlKiAgICAgIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CeXRlKiAgICAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgRlRfVmFsaWRhdGlvbkxldmVsICBsZXZlbCApCisgIHsKKyAgICB2YWxpZC0+YmFzZSAgPSBiYXNlOworICAgIHZhbGlkLT5saW1pdCA9IGxpbWl0OworICAgIHZhbGlkLT5sZXZlbCA9IGxldmVsOworICAgIHZhbGlkLT5lcnJvciA9IEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX0ludCApCisgIGZ0X3ZhbGlkYXRvcl9ydW4oIEZUX1ZhbGlkYXRvciAgdmFsaWQgKQorICB7CisgICAgLyogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IHdvcmshICBOb25lIHNob3VsZCBjYWxsIGl0LiAqLworICAgIEZUX1VOVVNFRCggdmFsaWQgKTsKKworICAgIHJldHVybiAtMTsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBmdF92YWxpZGF0b3JfZXJyb3IoIEZUX1ZhbGlkYXRvciAgdmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IgICAgICBlcnJvciApCisgIHsKKyAgICAvKiBzaW5jZSB0aGUgY2FzdCBiZWxvdyBhbHNvIGRpc2FibGVzIHRoZSBjb21waWxlcidzICovCisgICAgLyogdHlwZSBjaGVjaywgd2UgaW50cm9kdWNlIGEgZHVtbXkgdmFyaWFibGUsIHdoaWNoICAqLworICAgIC8qIHdpbGwgYmUgb3B0aW1pemVkIGF3YXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB2b2xhdGlsZSBmdF9qbXBfYnVmKiBqdW1wX2J1ZmZlciA9ICZ2YWxpZC0+anVtcF9idWZmZXI7CisKKworICAgIHZhbGlkLT5lcnJvciA9IGVycm9yOworCisgICAgLyogdGhyb3cgYXdheSB2b2xhdGlsZW5lc3M7IHVzZSBganVtcF9idWZmZXInIG9yIHRoZSAgKi8KKyAgICAvKiBjb21waWxlciBtYXkgd2FybiBhYm91dCBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUgICAqLworICAgIGZ0X2xvbmdqbXAoICooZnRfam1wX2J1ZiopIGp1bXBfYnVmZmVyLCAxICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICBTIFQgUiBFIEEgTSAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIGNyZWF0ZSBhIG5ldyBpbnB1dCBzdHJlYW0gZnJvbSBhbiBGVF9PcGVuX0FyZ3Mgc3RydWN0dXJlICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9OZXcoIEZUX0xpYnJhcnkgICAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgIGNvbnN0IEZUX09wZW5fQXJncyogIGFyZ3MsCisgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgICAgICAgICAgKmFzdHJlYW0gKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKyAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IE5VTEw7CisKKworICAgICphc3RyZWFtID0gMDsKKworICAgIGlmICggIWxpYnJhcnkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0xpYnJhcnlfSGFuZGxlICk7CisKKyAgICBpZiAoICFhcmdzICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisgICAgaWYgKCBGVF9ORVcoIHN0cmVhbSApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIHN0cmVhbS0+bWVtb3J5ID0gbWVtb3J5OworCisgICAgaWYgKCBhcmdzLT5mbGFncyAmIEZUX09QRU5fTUVNT1JZICkKKyAgICB7CisgICAgICAvKiBjcmVhdGUgYSBtZW1vcnktYmFzZWQgc3RyZWFtICovCisgICAgICBGVF9TdHJlYW1fT3Blbk1lbW9yeSggc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBGVF9CeXRlKilhcmdzLT5tZW1vcnlfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5tZW1vcnlfc2l6ZSApOworICAgIH0KKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX0RJU0FCTEVfU1RSRUFNX1NVUFBPUlQKKworICAgIGVsc2UgaWYgKCBhcmdzLT5mbGFncyAmIEZUX09QRU5fUEFUSE5BTUUgKQorICAgIHsKKyAgICAgIC8qIGNyZWF0ZSBhIG5vcm1hbCBzeXN0ZW0gc3RyZWFtICovCisgICAgICBlcnJvciA9IEZUX1N0cmVhbV9PcGVuKCBzdHJlYW0sIGFyZ3MtPnBhdGhuYW1lICk7CisgICAgICBzdHJlYW0tPnBhdGhuYW1lLnBvaW50ZXIgPSBhcmdzLT5wYXRobmFtZTsKKyAgICB9CisgICAgZWxzZSBpZiAoICggYXJncy0+ZmxhZ3MgJiBGVF9PUEVOX1NUUkVBTSApICYmIGFyZ3MtPnN0cmVhbSApCisgICAgeworICAgICAgLyogdXNlIGFuIGV4aXN0aW5nLCB1c2VyLXByb3ZpZGVkIHN0cmVhbSAqLworCisgICAgICAvKiBpbiB0aGlzIGNhc2UsIHdlIGRvIG5vdCBuZWVkIHRvIGFsbG9jYXRlIGEgbmV3IHN0cmVhbSBvYmplY3QgKi8KKyAgICAgIC8qIHNpbmNlIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGNsb3NpbmcgaXQgaGltc2VsZiAgICAgICAqLworICAgICAgRlRfRlJFRSggc3RyZWFtICk7CisgICAgICBzdHJlYW0gPSBhcmdzLT5zdHJlYW07CisgICAgfQorCisjZW5kaWYKKworICAgIGVsc2UKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGlmICggZXJyb3IgKQorICAgICAgRlRfRlJFRSggc3RyZWFtICk7CisgICAgZWxzZQorICAgICAgc3RyZWFtLT5tZW1vcnkgPSBtZW1vcnk7ICAvKiBqdXN0IHRvIGJlIGNlcnRhaW4gKi8KKworICAgICphc3RyZWFtID0gc3RyZWFtOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX1N0cmVhbV9GcmVlKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgZXh0ZXJuYWwgKQorICB7CisgICAgaWYgKCBzdHJlYW0gKQorICAgIHsKKyAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisKKworICAgICAgRlRfU3RyZWFtX0Nsb3NlKCBzdHJlYW0gKTsKKworICAgICAgaWYgKCAhZXh0ZXJuYWwgKQorICAgICAgICBGVF9GUkVFKCBzdHJlYW0gKTsKKyAgICB9CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX29ianMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICBGQUNFLCBTSVpFICYgR0xZUEggU0xPVCBPQkpFQ1RTICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9nbHlwaHNsb3RfaW5pdCggRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgeworICAgIEZUX0RyaXZlciAgICAgICAgIGRyaXZlciAgID0gc2xvdC0+ZmFjZS0+ZHJpdmVyOworICAgIEZUX0RyaXZlcl9DbGFzcyAgIGNsYXp6ICAgID0gZHJpdmVyLT5jbGF6ejsKKyAgICBGVF9NZW1vcnkgICAgICAgICBtZW1vcnkgICA9IGRyaXZlci0+cm9vdC5tZW1vcnk7CisgICAgRlRfRXJyb3IgICAgICAgICAgZXJyb3IgICAgPSBGVF9FcnJfT2s7CisgICAgRlRfU2xvdF9JbnRlcm5hbCAgaW50ZXJuYWwgPSBOVUxMOworCisKKyAgICBzbG90LT5saWJyYXJ5ID0gZHJpdmVyLT5yb290LmxpYnJhcnk7CisKKyAgICBpZiAoIEZUX05FVyggaW50ZXJuYWwgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBzbG90LT5pbnRlcm5hbCA9IGludGVybmFsOworCisgICAgaWYgKCBGVF9EUklWRVJfVVNFU19PVVRMSU5FUyggZHJpdmVyICkgKQorICAgICAgZXJyb3IgPSBGVF9HbHlwaExvYWRlcl9OZXcoIG1lbW9yeSwgJmludGVybmFsLT5sb2FkZXIgKTsKKworICAgIGlmICggIWVycm9yICYmIGNsYXp6LT5pbml0X3Nsb3QgKQorICAgICAgZXJyb3IgPSBjbGF6ei0+aW5pdF9zbG90KCBzbG90ICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwKCBGVF9HbHlwaFNsb3QgIHNsb3QgKQorICB7CisgICAgaWYgKCBzbG90LT5pbnRlcm5hbCAmJiAoIHNsb3QtPmludGVybmFsLT5mbGFncyAmIEZUX0dMWVBIX09XTl9CSVRNQVAgKSApCisgICAgeworICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBGVF9GQUNFX01FTU9SWSggc2xvdC0+ZmFjZSApOworCisKKyAgICAgIEZUX0ZSRUUoIHNsb3QtPmJpdG1hcC5idWZmZXIgKTsKKyAgICAgIHNsb3QtPmludGVybmFsLT5mbGFncyAmPSB+RlRfR0xZUEhfT1dOX0JJVE1BUDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIGFzc3VtZSB0aGF0IHRoZSBiaXRtYXAgYnVmZmVyIHdhcyBzdG9sZW4gb3Igbm90ICovCisgICAgICAvKiBhbGxvY2F0ZWQgZnJvbSB0aGUgaGVhcCAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgc2xvdC0+Yml0bWFwLmJ1ZmZlciA9IE5VTEw7CisgICAgfQorICB9CisKKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwKCBGVF9HbHlwaFNsb3QgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgICAgIGJ1ZmZlciApCisgIHsKKyAgICBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAoIHNsb3QgKTsKKworICAgIHNsb3QtPmJpdG1hcC5idWZmZXIgPSBidWZmZXI7CisKKyAgICBGVF9BU1NFUlQoIChzbG90LT5pbnRlcm5hbC0+ZmxhZ3MgJiBGVF9HTFlQSF9PV05fQklUTUFQKSA9PSAwICk7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAoIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICBzaXplICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gRlRfRkFDRV9NRU1PUlkoIHNsb3QtPmZhY2UgKTsKKyAgICBGVF9FcnJvciAgIGVycm9yOworCisKKyAgICBpZiAoIHNsb3QtPmludGVybmFsLT5mbGFncyAmIEZUX0dMWVBIX09XTl9CSVRNQVAgKQorICAgICAgRlRfRlJFRSggc2xvdC0+Yml0bWFwLmJ1ZmZlciApOworICAgIGVsc2UKKyAgICAgIHNsb3QtPmludGVybmFsLT5mbGFncyB8PSBGVF9HTFlQSF9PV05fQklUTUFQOworCisgICAgKHZvaWQpRlRfQUxMT0MoIHNsb3QtPmJpdG1hcC5idWZmZXIsIHNpemUgKTsKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X2dseXBoc2xvdF9jbGVhciggRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgeworICAgIC8qIGZyZWUgYml0bWFwIGlmIG5lZWRlZCAqLworICAgIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCggc2xvdCApOworCisgICAgLyogY2xlYXIgYWxsIHB1YmxpYyBmaWVsZHMgaW4gdGhlIGdseXBoIHNsb3QgKi8KKyAgICBGVF9aRVJPKCAmc2xvdC0+bWV0cmljcyApOworICAgIEZUX1pFUk8oICZzbG90LT5vdXRsaW5lICk7CisKKyAgICBzbG90LT5iaXRtYXAud2lkdGggICAgICA9IDA7CisgICAgc2xvdC0+Yml0bWFwLnJvd3MgICAgICAgPSAwOworICAgIHNsb3QtPmJpdG1hcC5waXRjaCAgICAgID0gMDsKKyAgICBzbG90LT5iaXRtYXAucGl4ZWxfbW9kZSA9IDA7CisgICAgLyogYHNsb3QtPmJpdG1hcC5idWZmZXInIGhhcyBiZWVuIGhhbmRsZWQgYnkgZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwICovCisKKyAgICBzbG90LT5iaXRtYXBfbGVmdCAgID0gMDsKKyAgICBzbG90LT5iaXRtYXBfdG9wICAgID0gMDsKKyAgICBzbG90LT5udW1fc3ViZ2x5cGhzID0gMDsKKyAgICBzbG90LT5zdWJnbHlwaHMgICAgID0gMDsKKyAgICBzbG90LT5jb250cm9sX2RhdGEgID0gMDsKKyAgICBzbG90LT5jb250cm9sX2xlbiAgID0gMDsKKyAgICBzbG90LT5vdGhlciAgICAgICAgID0gMDsKKyAgICBzbG90LT5mb3JtYXQgICAgICAgID0gRlRfR0xZUEhfRk9STUFUX05PTkU7CisKKyAgICBzbG90LT5saW5lYXJIb3JpQWR2YW5jZSA9IDA7CisgICAgc2xvdC0+bGluZWFyVmVydEFkdmFuY2UgPSAwOworICAgIHNsb3QtPmxzYl9kZWx0YSAgICAgICAgID0gMDsKKyAgICBzbG90LT5yc2JfZGVsdGEgICAgICAgICA9IDA7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X2dseXBoc2xvdF9kb25lKCBGVF9HbHlwaFNsb3QgIHNsb3QgKQorICB7CisgICAgRlRfRHJpdmVyICAgICAgICBkcml2ZXIgPSBzbG90LT5mYWNlLT5kcml2ZXI7CisgICAgRlRfRHJpdmVyX0NsYXNzICBjbGF6eiAgPSBkcml2ZXItPmNsYXp6OworICAgIEZUX01lbW9yeSAgICAgICAgbWVtb3J5ID0gZHJpdmVyLT5yb290Lm1lbW9yeTsKKworCisgICAgaWYgKCBjbGF6ei0+ZG9uZV9zbG90ICkKKyAgICAgIGNsYXp6LT5kb25lX3Nsb3QoIHNsb3QgKTsKKworICAgIC8qIGZyZWUgYml0bWFwIGJ1ZmZlciBpZiBuZWVkZWQgKi8KKyAgICBmdF9nbHlwaHNsb3RfZnJlZV9iaXRtYXAoIHNsb3QgKTsKKworICAgIC8qIHNsb3QtPmludGVybmFsIG1pZ2h0IGJlIE5VTEwgaW4gb3V0LW9mLW1lbW9yeSBzaXR1YXRpb25zICovCisgICAgaWYgKCBzbG90LT5pbnRlcm5hbCApCisgICAgeworICAgICAgLyogZnJlZSBnbHlwaCBsb2FkZXIgKi8KKyAgICAgIGlmICggRlRfRFJJVkVSX1VTRVNfT1VUTElORVMoIGRyaXZlciApICkKKyAgICAgIHsKKyAgICAgICAgRlRfR2x5cGhMb2FkZXJfRG9uZSggc2xvdC0+aW50ZXJuYWwtPmxvYWRlciApOworICAgICAgICBzbG90LT5pbnRlcm5hbC0+bG9hZGVyID0gMDsKKyAgICAgIH0KKworICAgICAgRlRfRlJFRSggc2xvdC0+aW50ZXJuYWwgKTsKKyAgICB9CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRvYmpzLmggKi8KKworICBGVF9CQVNFX0RFRiggRlRfRXJyb3IgKQorICBGVF9OZXdfR2x5cGhTbG90KCBGVF9GYWNlICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICphc2xvdCApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yOworICAgIEZUX0RyaXZlciAgICAgICAgZHJpdmVyOworICAgIEZUX0RyaXZlcl9DbGFzcyAgY2xheno7CisgICAgRlRfTWVtb3J5ICAgICAgICBtZW1vcnk7CisgICAgRlRfR2x5cGhTbG90ICAgICBzbG90ID0gTlVMTDsKKworCisgICAgaWYgKCAhZmFjZSB8fCAhZmFjZS0+ZHJpdmVyICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgZHJpdmVyID0gZmFjZS0+ZHJpdmVyOworICAgIGNsYXp6ICA9IGRyaXZlci0+Y2xheno7CisgICAgbWVtb3J5ID0gZHJpdmVyLT5yb290Lm1lbW9yeTsKKworICAgIEZUX1RSQUNFNCgoICJGVF9OZXdfR2x5cGhTbG90OiBDcmVhdGluZyBuZXcgc2xvdCBvYmplY3RcbiIgKSk7CisgICAgaWYgKCAhRlRfQUxMT0MoIHNsb3QsIGNsYXp6LT5zbG90X29iamVjdF9zaXplICkgKQorICAgIHsKKyAgICAgIHNsb3QtPmZhY2UgPSBmYWNlOworCisgICAgICBlcnJvciA9IGZ0X2dseXBoc2xvdF9pbml0KCBzbG90ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgIHsKKyAgICAgICAgZnRfZ2x5cGhzbG90X2RvbmUoIHNsb3QgKTsKKyAgICAgICAgRlRfRlJFRSggc2xvdCApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIHNsb3QtPm5leHQgID0gZmFjZS0+Z2x5cGg7CisgICAgICBmYWNlLT5nbHlwaCA9IHNsb3Q7CisKKyAgICAgIGlmICggYXNsb3QgKQorICAgICAgICAqYXNsb3QgPSBzbG90OworICAgIH0KKyAgICBlbHNlIGlmICggYXNsb3QgKQorICAgICAgKmFzbG90ID0gMDsKKworCisgIEV4aXQ6CisgICAgRlRfVFJBQ0U0KCggIkZUX05ld19HbHlwaFNsb3Q6IFJldHVybiAlZFxuIiwgZXJyb3IgKSk7CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0b2Jqcy5oICovCisKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBGVF9Eb25lX0dseXBoU2xvdCggRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgeworICAgIGlmICggc2xvdCApCisgICAgeworICAgICAgRlRfRHJpdmVyICAgICBkcml2ZXIgPSBzbG90LT5mYWNlLT5kcml2ZXI7CisgICAgICBGVF9NZW1vcnkgICAgIG1lbW9yeSA9IGRyaXZlci0+cm9vdC5tZW1vcnk7CisgICAgICBGVF9HbHlwaFNsb3QgIHByZXY7CisgICAgICBGVF9HbHlwaFNsb3QgIGN1cjsKKworCisgICAgICAvKiBSZW1vdmUgc2xvdCBmcm9tIGl0cyBwYXJlbnQgZmFjZSdzIGxpc3QgKi8KKyAgICAgIHByZXYgPSBOVUxMOworICAgICAgY3VyICA9IHNsb3QtPmZhY2UtPmdseXBoOworCisgICAgICB3aGlsZSAoIGN1ciApCisgICAgICB7CisgICAgICAgIGlmICggY3VyID09IHNsb3QgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCAhcHJldiApCisgICAgICAgICAgICBzbG90LT5mYWNlLT5nbHlwaCA9IGN1ci0+bmV4dDsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmV2LT5uZXh0ID0gY3VyLT5uZXh0OworCisgICAgICAgICAgLyogZmluYWxpemUgY2xpZW50LXNwZWNpZmljIGRhdGEgKi8KKyAgICAgICAgICBpZiAoIHNsb3QtPmdlbmVyaWMuZmluYWxpemVyICkKKyAgICAgICAgICAgIHNsb3QtPmdlbmVyaWMuZmluYWxpemVyKCBzbG90ICk7CisKKyAgICAgICAgICBmdF9nbHlwaHNsb3RfZG9uZSggc2xvdCApOworICAgICAgICAgIEZUX0ZSRUUoIHNsb3QgKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBwcmV2ID0gY3VyOworICAgICAgICBjdXIgID0gY3VyLT5uZXh0OworICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX1NldF9UcmFuc2Zvcm0oIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIEZUX01hdHJpeCogIG1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgZGVsdGEgKQorICB7CisgICAgRlRfRmFjZV9JbnRlcm5hbCAgaW50ZXJuYWw7CisKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuOworCisgICAgaW50ZXJuYWwgPSBmYWNlLT5pbnRlcm5hbDsKKworICAgIGludGVybmFsLT50cmFuc2Zvcm1fZmxhZ3MgPSAwOworCisgICAgaWYgKCAhbWF0cml4ICkKKyAgICB7CisgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX21hdHJpeC54eCA9IDB4MTAwMDBMOworICAgICAgaW50ZXJuYWwtPnRyYW5zZm9ybV9tYXRyaXgueHkgPSAwOworICAgICAgaW50ZXJuYWwtPnRyYW5zZm9ybV9tYXRyaXgueXggPSAwOworICAgICAgaW50ZXJuYWwtPnRyYW5zZm9ybV9tYXRyaXgueXkgPSAweDEwMDAwTDsKKyAgICAgIG1hdHJpeCA9ICZpbnRlcm5hbC0+dHJhbnNmb3JtX21hdHJpeDsKKyAgICB9CisgICAgZWxzZQorICAgICAgaW50ZXJuYWwtPnRyYW5zZm9ybV9tYXRyaXggPSAqbWF0cml4OworCisgICAgLyogc2V0IHRyYW5zZm9ybV9mbGFncyBiaXQgZmxhZyAwIGlmIGBtYXRyaXgnIGlzbid0IHRoZSBpZGVudGl0eSAqLworICAgIGlmICggKCBtYXRyaXgtPnh5IHwgbWF0cml4LT55eCApIHx8CisgICAgICAgICBtYXRyaXgtPnh4ICE9IDB4MTAwMDBMICAgICAgfHwKKyAgICAgICAgIG1hdHJpeC0+eXkgIT0gMHgxMDAwMEwgICAgICApCisgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX2ZsYWdzIHw9IDE7CisKKyAgICBpZiAoICFkZWx0YSApCisgICAgeworICAgICAgaW50ZXJuYWwtPnRyYW5zZm9ybV9kZWx0YS54ID0gMDsKKyAgICAgIGludGVybmFsLT50cmFuc2Zvcm1fZGVsdGEueSA9IDA7CisgICAgICBkZWx0YSA9ICZpbnRlcm5hbC0+dHJhbnNmb3JtX2RlbHRhOworICAgIH0KKyAgICBlbHNlCisgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX2RlbHRhID0gKmRlbHRhOworCisgICAgLyogc2V0IHRyYW5zZm9ybV9mbGFncyBiaXQgZmxhZyAxIGlmIGBkZWx0YScgaXNuJ3QgdGhlIG51bGwgdmVjdG9yICovCisgICAgaWYgKCBkZWx0YS0+eCB8IGRlbHRhLT55ICkKKyAgICAgIGludGVybmFsLT50cmFuc2Zvcm1fZmxhZ3MgfD0gMjsKKyAgfQorCisKKyAgc3RhdGljIEZUX1JlbmRlcmVyCisgIGZ0X2xvb2t1cF9nbHlwaF9yZW5kZXJlciggRlRfR2x5cGhTbG90ICBzbG90ICk7CisKKworI2lmZGVmIEdSSURfRklUX01FVFJJQ1MKKyAgc3RhdGljIHZvaWQKKyAgZnRfZ2x5cGhzbG90X2dyaWRfZml0X21ldHJpY3MoIEZUX0dseXBoU2xvdCAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgdmVydGljYWwgKQorICB7CisgICAgRlRfR2x5cGhfTWV0cmljcyogIG1ldHJpY3MgPSAmc2xvdC0+bWV0cmljczsKKyAgICBGVF9Qb3MgICAgICAgICAgICAgcmlnaHQsIGJvdHRvbTsKKworCisgICAgaWYgKCB2ZXJ0aWNhbCApCisgICAgeworICAgICAgbWV0cmljcy0+aG9yaUJlYXJpbmdYID0gRlRfUElYX0ZMT09SKCBtZXRyaWNzLT5ob3JpQmVhcmluZ1ggKTsKKyAgICAgIG1ldHJpY3MtPmhvcmlCZWFyaW5nWSA9IEZUX1BJWF9DRUlMICggbWV0cmljcy0+aG9yaUJlYXJpbmdZICk7CisKKyAgICAgIHJpZ2h0ICA9IEZUX1BJWF9DRUlMKCBtZXRyaWNzLT52ZXJ0QmVhcmluZ1ggKyBtZXRyaWNzLT53aWR0aCApOworICAgICAgYm90dG9tID0gRlRfUElYX0NFSUwoIG1ldHJpY3MtPnZlcnRCZWFyaW5nWSArIG1ldHJpY3MtPmhlaWdodCApOworCisgICAgICBtZXRyaWNzLT52ZXJ0QmVhcmluZ1ggPSBGVF9QSVhfRkxPT1IoIG1ldHJpY3MtPnZlcnRCZWFyaW5nWCApOworICAgICAgbWV0cmljcy0+dmVydEJlYXJpbmdZID0gRlRfUElYX0ZMT09SKCBtZXRyaWNzLT52ZXJ0QmVhcmluZ1kgKTsKKworICAgICAgbWV0cmljcy0+d2lkdGggID0gcmlnaHQgLSBtZXRyaWNzLT52ZXJ0QmVhcmluZ1g7CisgICAgICBtZXRyaWNzLT5oZWlnaHQgPSBib3R0b20gLSBtZXRyaWNzLT52ZXJ0QmVhcmluZ1k7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBtZXRyaWNzLT52ZXJ0QmVhcmluZ1ggPSBGVF9QSVhfRkxPT1IoIG1ldHJpY3MtPnZlcnRCZWFyaW5nWCApOworICAgICAgbWV0cmljcy0+dmVydEJlYXJpbmdZID0gRlRfUElYX0ZMT09SKCBtZXRyaWNzLT52ZXJ0QmVhcmluZ1kgKTsKKworICAgICAgcmlnaHQgID0gRlRfUElYX0NFSUwgKCBtZXRyaWNzLT5ob3JpQmVhcmluZ1ggKyBtZXRyaWNzLT53aWR0aCApOworICAgICAgYm90dG9tID0gRlRfUElYX0ZMT09SKCBtZXRyaWNzLT5ob3JpQmVhcmluZ1kgLSBtZXRyaWNzLT5oZWlnaHQgKTsKKworICAgICAgbWV0cmljcy0+aG9yaUJlYXJpbmdYID0gRlRfUElYX0ZMT09SKCBtZXRyaWNzLT5ob3JpQmVhcmluZ1ggKTsKKyAgICAgIG1ldHJpY3MtPmhvcmlCZWFyaW5nWSA9IEZUX1BJWF9DRUlMICggbWV0cmljcy0+aG9yaUJlYXJpbmdZICk7CisKKyAgICAgIG1ldHJpY3MtPndpZHRoICA9IHJpZ2h0IC0gbWV0cmljcy0+aG9yaUJlYXJpbmdYOworICAgICAgbWV0cmljcy0+aGVpZ2h0ID0gbWV0cmljcy0+aG9yaUJlYXJpbmdZIC0gYm90dG9tOworICAgIH0KKworICAgIG1ldHJpY3MtPmhvcmlBZHZhbmNlID0gRlRfUElYX1JPVU5EKCBtZXRyaWNzLT5ob3JpQWR2YW5jZSApOworICAgIG1ldHJpY3MtPnZlcnRBZHZhbmNlID0gRlRfUElYX1JPVU5EKCBtZXRyaWNzLT52ZXJ0QWR2YW5jZSApOworICB9CisjZW5kaWYgLyogR1JJRF9GSVRfTUVUUklDUyAqLworCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9Mb2FkX0dseXBoKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgRlRfVUludCAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgbG9hZF9mbGFncyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgIGVycm9yOworICAgIEZUX0RyaXZlciAgICAgZHJpdmVyOworICAgIEZUX0dseXBoU2xvdCAgc2xvdDsKKyAgICBGVF9MaWJyYXJ5ICAgIGxpYnJhcnk7CisgICAgRlRfQm9vbCAgICAgICBhdXRvaGludCA9IEZBTFNFOworICAgIEZUX01vZHVsZSAgICAgaGludGVyOworICAgIFRUX0ZhY2UgICAgICAgdHRmYWNlID0gKFRUX0ZhY2UpZmFjZTsKKworCisgICAgaWYgKCAhZmFjZSB8fCAhZmFjZS0+c2l6ZSB8fCAhZmFjZS0+Z2x5cGggKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0ZhY2VfSGFuZGxlICk7CisKKyAgICAvKiBUaGUgdmFsaWRpdHkgdGVzdCBmb3IgYGdseXBoX2luZGV4JyBpcyBwZXJmb3JtZWQgYnkgdGhlICovCisgICAgLyogZm9udCBkcml2ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgc2xvdCA9IGZhY2UtPmdseXBoOworICAgIGZ0X2dseXBoc2xvdF9jbGVhciggc2xvdCApOworCisgICAgZHJpdmVyICA9IGZhY2UtPmRyaXZlcjsKKyAgICBsaWJyYXJ5ID0gZHJpdmVyLT5yb290LmxpYnJhcnk7CisgICAgaGludGVyICA9IGxpYnJhcnktPmF1dG9faGludGVyOworCisgICAgLyogcmVzb2x2ZSBsb2FkIGZsYWdzIGRlcGVuZGVuY2llcyAqLworCisgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19SRUNVUlNFICkKKyAgICAgIGxvYWRfZmxhZ3MgfD0gRlRfTE9BRF9OT19TQ0FMRSAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgRlRfTE9BRF9JR05PUkVfVFJBTlNGT1JNOworCisgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19TQ0FMRSApCisgICAgeworICAgICAgbG9hZF9mbGFncyB8PSBGVF9MT0FEX05PX0hJTlRJTkcgfAorICAgICAgICAgICAgICAgICAgICBGVF9MT0FEX05PX0JJVE1BUDsKKworICAgICAgbG9hZF9mbGFncyAmPSB+RlRfTE9BRF9SRU5ERVI7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBEZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIGF1dG8taGludCBvciBub3QuCisgICAgICogVGhlIGdlbmVyYWwgcnVsZXMgYXJlOgorICAgICAqCisgICAgICogLSBEbyBvbmx5IGF1dG8taGludGluZyBpZiB3ZSBoYXZlIGEgaGludGVyIG1vZHVsZSwgYSBzY2FsYWJsZSBmb250CisgICAgICogICBmb3JtYXQgZGVhbGluZyB3aXRoIG91dGxpbmVzLCBhbmQgbm8gdHJhbnNmb3JtcyBleGNlcHQgc2ltcGxlCisgICAgICogICBzbGFudHMgYW5kL29yIHJvdGF0aW9ucyBieSBpbnRlZ2VyIG11bHRpcGxlcyBvZiA5MCBkZWdyZWVzLgorICAgICAqCisgICAgICogLSBUaGVuLCBhdXRvLWhpbnQgaWYgRlRfTE9BRF9GT1JDRV9BVVRPSElOVCBpcyBzZXQgb3IgaWYgd2UgZG9uJ3QKKyAgICAgKiAgIGhhdmUgYSBuYXRpdmUgZm9udCBoaW50ZXIuCisgICAgICoKKyAgICAgKiAtIE90aGVyd2lzZSwgYXV0by1oaW50IGZvciBMSUdIVCBoaW50aW5nIG1vZGUgb3IgaWYgdGhlcmUgaXNuJ3QKKyAgICAgKiAgIGFueSBoaW50aW5nIGJ5dGVjb2RlIGluIHRoZSBUcnVlVHlwZS9PcGVuVHlwZSBmb250LgorICAgICAqCisgICAgICogLSBFeGNlcHRpb246IFRoZSBmb250IGlzIGB0cmlja3knIGFuZCByZXF1aXJlcyB0aGUgbmF0aXZlIGhpbnRlciB0bworICAgICAqICAgbG9hZCBwcm9wZXJseS4KKyAgICAgKi8KKworICAgIGlmICggaGludGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAhKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19ISU5USU5HICkgICAgICAgICAgICAgJiYKKyAgICAgICAgICEoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX0FVVE9ISU5UICkgICAgICAgICAgICAmJgorICAgICAgICAgRlRfRFJJVkVSX0lTX1NDQUxBQkxFKCBkcml2ZXIgKSAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICBGVF9EUklWRVJfVVNFU19PVVRMSU5FUyggZHJpdmVyICkgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICFGVF9JU19UUklDS1koIGZhY2UgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgKCAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX0lHTk9SRV9UUkFOU0ZPUk0gKSAgICB8fAorICAgICAgICAgICAoIGZhY2UtPmludGVybmFsLT50cmFuc2Zvcm1fbWF0cml4Lnl4ID09IDAgJiYKKyAgICAgICAgICAgICBmYWNlLT5pbnRlcm5hbC0+dHJhbnNmb3JtX21hdHJpeC54eCAhPSAwICkgfHwKKyAgICAgICAgICAgKCBmYWNlLT5pbnRlcm5hbC0+dHJhbnNmb3JtX21hdHJpeC54eCA9PSAwICYmCisgICAgICAgICAgICAgZmFjZS0+aW50ZXJuYWwtPnRyYW5zZm9ybV9tYXRyaXgueXggIT0gMCApICkgKQorICAgIHsKKyAgICAgIGlmICggKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9GT1JDRV9BVVRPSElOVCApIHx8CisgICAgICAgICAgICFGVF9EUklWRVJfSEFTX0hJTlRFUiggZHJpdmVyICkgICAgICAgICApCisgICAgICAgIGF1dG9oaW50ID0gVFJVRTsKKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgRlRfUmVuZGVyX01vZGUgIG1vZGUgPSBGVF9MT0FEX1RBUkdFVF9NT0RFKCBsb2FkX2ZsYWdzICk7CisKKworICAgICAgICAvKiB0aGUgY2hlY2sgZm9yIGBudW1fbG9jYXRpb25zJyBhc3N1cmVzIHRoYXQgd2UgYWN0dWFsbHkgICAgKi8KKyAgICAgICAgLyogdGVzdCBmb3IgaW5zdHJ1Y3Rpb25zIGluIGEgVFRGIGFuZCBub3QgaW4gYSBDRkYtYmFzZWQgT1RGICovCisgICAgICAgIGlmICggbW9kZSA9PSBGVF9SRU5ERVJfTU9ERV9MSUdIVCAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICBmYWNlLT5pbnRlcm5hbC0+aWdub3JlX3VucGF0ZW50ZWRfaGludGVyICAgICAgICAgICB8fAorICAgICAgICAgICAgICggRlRfSVNfU0ZOVCggZmFjZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgdHRmYWNlLT5udW1fbG9jYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgdHRmYWNlLT5tYXhfcHJvZmlsZS5tYXhTaXplT2ZJbnN0cnVjdGlvbnMgPT0gMCApICkKKyAgICAgICAgICBhdXRvaGludCA9IFRSVUU7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCBhdXRvaGludCApCisgICAgeworICAgICAgRlRfQXV0b0hpbnRlcl9JbnRlcmZhY2UgIGhpbnRpbmc7CisKKworICAgICAgLyogdHJ5IHRvIGxvYWQgZW1iZWRkZWQgYml0bWFwcyBmaXJzdCBpZiBhdmFpbGFibGUgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogWFhYOiBUaGlzIGlzIHJlYWxseSBhIHRlbXBvcmFyeSBoYWNrIHRoYXQgc2hvdWxkIGRpc2FwcGVhciAqLworICAgICAgLyogICAgICBwcm9tcHRseSB3aXRoIEZyZWVUeXBlIDIuMSEgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgaWYgKCBGVF9IQVNfRklYRURfU0laRVMoIGZhY2UgKSAgICAgICAgICAgICAmJgorICAgICAgICAgICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fQklUTUFQICkgPT0gMCApCisgICAgICB7CisgICAgICAgIGVycm9yID0gZHJpdmVyLT5jbGF6ei0+bG9hZF9nbHlwaCggc2xvdCwgZmFjZS0+c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkX2ZsYWdzIHwgRlRfTE9BRF9TQklUU19PTkxZICk7CisKKyAgICAgICAgaWYgKCAhZXJyb3IgJiYgc2xvdC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAgKQorICAgICAgICAgIGdvdG8gTG9hZF9PazsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICBGVF9GYWNlX0ludGVybmFsICBpbnRlcm5hbCAgICAgICAgPSBmYWNlLT5pbnRlcm5hbDsKKyAgICAgICAgRlRfSW50ICAgICAgICAgICAgdHJhbnNmb3JtX2ZsYWdzID0gaW50ZXJuYWwtPnRyYW5zZm9ybV9mbGFnczsKKworCisgICAgICAgIC8qIHNpbmNlIHRoZSBhdXRvLWhpbnRlciBjYWxscyBGVF9Mb2FkX0dseXBoIGJ5IGl0c2VsZiwgKi8KKyAgICAgICAgLyogbWFrZSBzdXJlIHRoYXQgZ2x5cGhzIGFyZW4ndCB0cmFuc2Zvcm1lZCAgICAgICAgICAgICAqLworICAgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX2ZsYWdzID0gMDsKKworICAgICAgICAvKiBsb2FkIGF1dG8taGludGVkIG91dGxpbmUgKi8KKyAgICAgICAgaGludGluZyA9IChGVF9BdXRvSGludGVyX0ludGVyZmFjZSloaW50ZXItPmNsYXp6LT5tb2R1bGVfaW50ZXJmYWNlOworCisgICAgICAgIGVycm9yICAgPSBoaW50aW5nLT5sb2FkX2dseXBoKCAoRlRfQXV0b0hpbnRlciloaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG90LCBmYWNlLT5zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsIGxvYWRfZmxhZ3MgKTsKKworICAgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX2ZsYWdzID0gdHJhbnNmb3JtX2ZsYWdzOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgZXJyb3IgPSBkcml2ZXItPmNsYXp6LT5sb2FkX2dseXBoKCBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZF9mbGFncyApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgaWYgKCBzbG90LT5mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgKQorICAgICAgeworICAgICAgICAvKiBjaGVjayB0aGF0IHRoZSBsb2FkZWQgb3V0bGluZSBpcyBjb3JyZWN0ICovCisgICAgICAgIGVycm9yID0gRlRfT3V0bGluZV9DaGVjayggJnNsb3QtPm91dGxpbmUgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBFeGl0OworCisjaWZkZWYgR1JJRF9GSVRfTUVUUklDUworICAgICAgICBpZiAoICEoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX0hJTlRJTkcgKSApCisgICAgICAgICAgZnRfZ2x5cGhzbG90X2dyaWRfZml0X21ldHJpY3MoIHNsb3QsCisgICAgICAgICAgICAgIEZUX0JPT0woIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX1ZFUlRJQ0FMX0xBWU9VVCApICk7CisjZW5kaWYKKyAgICAgIH0KKyAgICB9CisKKyAgTG9hZF9PazoKKyAgICAvKiBjb21wdXRlIHRoZSBhZHZhbmNlICovCisgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgKQorICAgIHsKKyAgICAgIHNsb3QtPmFkdmFuY2UueCA9IDA7CisgICAgICBzbG90LT5hZHZhbmNlLnkgPSBzbG90LT5tZXRyaWNzLnZlcnRBZHZhbmNlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgc2xvdC0+YWR2YW5jZS54ID0gc2xvdC0+bWV0cmljcy5ob3JpQWR2YW5jZTsKKyAgICAgIHNsb3QtPmFkdmFuY2UueSA9IDA7CisgICAgfQorCisgICAgLyogY29tcHV0ZSB0aGUgbGluZWFyIGFkdmFuY2UgaW4gMTYuMTYgcGl4ZWxzICovCisgICAgaWYgKCAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX0xJTkVBUl9ERVNJR04gKSA9PSAwICYmCisgICAgICAgICAoIEZUX0lTX1NDQUxBQkxFKCBmYWNlICkgKSAgICAgICAgICAgICAgICAgICkKKyAgICB7CisgICAgICBGVF9TaXplX01ldHJpY3MqICBtZXRyaWNzID0gJmZhY2UtPnNpemUtPm1ldHJpY3M7CisKKworICAgICAgLyogaXQncyB0cmlja3khICovCisgICAgICBzbG90LT5saW5lYXJIb3JpQWR2YW5jZSA9IEZUX011bERpdiggc2xvdC0+bGluZWFySG9yaUFkdmFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljcy0+eF9zY2FsZSwgNjQgKTsKKworICAgICAgc2xvdC0+bGluZWFyVmVydEFkdmFuY2UgPSBGVF9NdWxEaXYoIHNsb3QtPmxpbmVhclZlcnRBZHZhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3MtPnlfc2NhbGUsIDY0ICk7CisgICAgfQorCisgICAgaWYgKCAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX0lHTk9SRV9UUkFOU0ZPUk0gKSA9PSAwICkKKyAgICB7CisgICAgICBGVF9GYWNlX0ludGVybmFsICBpbnRlcm5hbCA9IGZhY2UtPmludGVybmFsOworCisKKyAgICAgIC8qIG5vdywgdHJhbnNmb3JtIHRoZSBnbHlwaCBpbWFnZSBpZiBuZWVkZWQgKi8KKyAgICAgIGlmICggaW50ZXJuYWwtPnRyYW5zZm9ybV9mbGFncyApCisgICAgICB7CisgICAgICAgIC8qIGdldCByZW5kZXJlciAqLworICAgICAgICBGVF9SZW5kZXJlciAgcmVuZGVyZXIgPSBmdF9sb29rdXBfZ2x5cGhfcmVuZGVyZXIoIHNsb3QgKTsKKworCisgICAgICAgIGlmICggcmVuZGVyZXIgKQorICAgICAgICAgIGVycm9yID0gcmVuZGVyZXItPmNsYXp6LT50cmFuc2Zvcm1fZ2x5cGgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIsIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmludGVybmFsLT50cmFuc2Zvcm1fbWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnRlcm5hbC0+dHJhbnNmb3JtX2RlbHRhICk7CisgICAgICAgIGVsc2UgaWYgKCBzbG90LT5mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgKQorICAgICAgICB7CisgICAgICAgICAgLyogYXBwbHkgYHN0YW5kYXJkJyB0cmFuc2Zvcm1hdGlvbiBpZiBubyByZW5kZXJlciBpcyBhdmFpbGFibGUgKi8KKyAgICAgICAgICBpZiAoIGludGVybmFsLT50cmFuc2Zvcm1fZmxhZ3MgJiAxICkKKyAgICAgICAgICAgIEZUX091dGxpbmVfVHJhbnNmb3JtKCAmc2xvdC0+b3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW50ZXJuYWwtPnRyYW5zZm9ybV9tYXRyaXggKTsKKworICAgICAgICAgIGlmICggaW50ZXJuYWwtPnRyYW5zZm9ybV9mbGFncyAmIDIgKQorICAgICAgICAgICAgRlRfT3V0bGluZV9UcmFuc2xhdGUoICZzbG90LT5vdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLT50cmFuc2Zvcm1fZGVsdGEueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX2RlbHRhLnkgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHRyYW5zZm9ybSBhZHZhbmNlICovCisgICAgICAgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0oICZzbG90LT5hZHZhbmNlLCAmaW50ZXJuYWwtPnRyYW5zZm9ybV9tYXRyaXggKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBGVF9UUkFDRTUoKCAiICB4IGFkdmFuY2U6ICVkXG4iICwgc2xvdC0+YWR2YW5jZS54ICkpOworICAgIEZUX1RSQUNFNSgoICIgIHkgYWR2YW5jZTogJWRcbiIgLCBzbG90LT5hZHZhbmNlLnkgKSk7CisKKyAgICBGVF9UUkFDRTUoKCAiICBsaW5lYXIgeCBhZHZhbmNlOiAlZFxuIiAsIHNsb3QtPmxpbmVhckhvcmlBZHZhbmNlICkpOworICAgIEZUX1RSQUNFNSgoICIgIGxpbmVhciB5IGFkdmFuY2U6ICVkXG4iICwgc2xvdC0+bGluZWFyVmVydEFkdmFuY2UgKSk7CisKKyAgICAvKiBkbyB3ZSBuZWVkIHRvIHJlbmRlciB0aGUgaW1hZ2Ugbm93PyAqLworICAgIGlmICggIWVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIHNsb3QtPmZvcm1hdCAhPSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQICAgICYmCisgICAgICAgICBzbG90LT5mb3JtYXQgIT0gRlRfR0xZUEhfRk9STUFUX0NPTVBPU0lURSAmJgorICAgICAgICAgbG9hZF9mbGFncyAmIEZUX0xPQURfUkVOREVSICkKKyAgICB7CisgICAgICBGVF9SZW5kZXJfTW9kZSAgbW9kZSA9IEZUX0xPQURfVEFSR0VUX01PREUoIGxvYWRfZmxhZ3MgKTsKKworCisgICAgICBpZiAoIG1vZGUgPT0gRlRfUkVOREVSX01PREVfTk9STUFMICAgICAgJiYKKyAgICAgICAgICAgKGxvYWRfZmxhZ3MgJiBGVF9MT0FEX01PTk9DSFJPTUUgKSApCisgICAgICAgIG1vZGUgPSBGVF9SRU5ERVJfTU9ERV9NT05POworCisgICAgICBlcnJvciA9IEZUX1JlbmRlcl9HbHlwaCggc2xvdCwgbW9kZSApOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9Mb2FkX0NoYXIoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgIEZUX1VMb25nICBjaGFyX2NvZGUsCisgICAgICAgICAgICAgICAgRlRfSW50MzIgIGxvYWRfZmxhZ3MgKQorICB7CisgICAgRlRfVUludCAgZ2x5cGhfaW5kZXg7CisKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0ZhY2VfSGFuZGxlICk7CisKKyAgICBnbHlwaF9pbmRleCA9IChGVF9VSW50KWNoYXJfY29kZTsKKyAgICBpZiAoIGZhY2UtPmNoYXJtYXAgKQorICAgICAgZ2x5cGhfaW5kZXggPSBGVF9HZXRfQ2hhcl9JbmRleCggZmFjZSwgY2hhcl9jb2RlICk7CisKKyAgICByZXR1cm4gRlRfTG9hZF9HbHlwaCggZmFjZSwgZ2x5cGhfaW5kZXgsIGxvYWRfZmxhZ3MgKTsKKyAgfQorCisKKyAgLyogZGVzdHJ1Y3RvciBmb3Igc2l6ZXMgbGlzdCAqLworICBzdGF0aWMgdm9pZAorICBkZXN0cm95X3NpemUoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgIEZUX1NpemUgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICBGVF9Ecml2ZXIgIGRyaXZlciApCisgIHsKKyAgICAvKiBmaW5hbGl6ZSBjbGllbnQtc3BlY2lmaWMgZGF0YSAqLworICAgIGlmICggc2l6ZS0+Z2VuZXJpYy5maW5hbGl6ZXIgKQorICAgICAgc2l6ZS0+Z2VuZXJpYy5maW5hbGl6ZXIoIHNpemUgKTsKKworICAgIC8qIGZpbmFsaXplIGZvcm1hdC1zcGVjaWZpYyBzdHVmZiAqLworICAgIGlmICggZHJpdmVyLT5jbGF6ei0+ZG9uZV9zaXplICkKKyAgICAgIGRyaXZlci0+Y2xhenotPmRvbmVfc2l6ZSggc2l6ZSApOworCisgICAgRlRfRlJFRSggc2l6ZS0+aW50ZXJuYWwgKTsKKyAgICBGVF9GUkVFKCBzaXplICk7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X2NtYXBfZG9uZV9pbnRlcm5hbCggRlRfQ01hcCAgY21hcCApOworCisKKyAgc3RhdGljIHZvaWQKKyAgZGVzdHJveV9jaGFybWFwcyggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApCisgIHsKKyAgICBGVF9JbnQgIG47CisKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuOworCisgICAgZm9yICggbiA9IDA7IG4gPCBmYWNlLT5udW1fY2hhcm1hcHM7IG4rKyApCisgICAgeworICAgICAgRlRfQ01hcCAgY21hcCA9IEZUX0NNQVAoIGZhY2UtPmNoYXJtYXBzW25dICk7CisKKworICAgICAgZnRfY21hcF9kb25lX2ludGVybmFsKCBjbWFwICk7CisKKyAgICAgIGZhY2UtPmNoYXJtYXBzW25dID0gTlVMTDsKKyAgICB9CisKKyAgICBGVF9GUkVFKCBmYWNlLT5jaGFybWFwcyApOworICAgIGZhY2UtPm51bV9jaGFybWFwcyA9IDA7CisgIH0KKworCisgIC8qIGRlc3RydWN0b3IgZm9yIGZhY2VzIGxpc3QgKi8KKyAgc3RhdGljIHZvaWQKKyAgZGVzdHJveV9mYWNlKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgRlRfRHJpdmVyICBkcml2ZXIgKQorICB7CisgICAgRlRfRHJpdmVyX0NsYXNzICBjbGF6eiA9IGRyaXZlci0+Y2xheno7CisKKworICAgIC8qIGRpc2NhcmQgYXV0by1oaW50aW5nIGRhdGEgKi8KKyAgICBpZiAoIGZhY2UtPmF1dG9oaW50LmZpbmFsaXplciApCisgICAgICBmYWNlLT5hdXRvaGludC5maW5hbGl6ZXIoIGZhY2UtPmF1dG9oaW50LmRhdGEgKTsKKworICAgIC8qIERpc2NhcmQgZ2x5cGggc2xvdHMgZm9yIHRoaXMgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIEJld2FyZSEgIEZUX0RvbmVfR2x5cGhTbG90KCkgY2hhbmdlcyB0aGUgZmllbGQgYGZhY2UtPmdseXBoJyAqLworICAgIHdoaWxlICggZmFjZS0+Z2x5cGggKQorICAgICAgRlRfRG9uZV9HbHlwaFNsb3QoIGZhY2UtPmdseXBoICk7CisKKyAgICAvKiBkaXNjYXJkIGFsbCBzaXplcyBmb3IgdGhpcyBmYWNlICovCisgICAgRlRfTGlzdF9GaW5hbGl6ZSggJmZhY2UtPnNpemVzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgKEZUX0xpc3RfRGVzdHJ1Y3RvcilkZXN0cm95X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciApOworICAgIGZhY2UtPnNpemUgPSAwOworCisgICAgLyogbm93IGRpc2NhcmQgY2xpZW50IGRhdGEgKi8KKyAgICBpZiAoIGZhY2UtPmdlbmVyaWMuZmluYWxpemVyICkKKyAgICAgIGZhY2UtPmdlbmVyaWMuZmluYWxpemVyKCBmYWNlICk7CisKKyAgICAvKiBkaXNjYXJkIGNoYXJtYXBzICovCisgICAgZGVzdHJveV9jaGFybWFwcyggZmFjZSwgbWVtb3J5ICk7CisKKyAgICAvKiBmaW5hbGl6ZSBmb3JtYXQtc3BlY2lmaWMgc3R1ZmYgKi8KKyAgICBpZiAoIGNsYXp6LT5kb25lX2ZhY2UgKQorICAgICAgY2xhenotPmRvbmVfZmFjZSggZmFjZSApOworCisgICAgLyogY2xvc2UgdGhlIHN0cmVhbSBmb3IgdGhpcyBmYWNlIGlmIG5lZWRlZCAqLworICAgIEZUX1N0cmVhbV9GcmVlKAorICAgICAgZmFjZS0+c3RyZWFtLAorICAgICAgKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX0VYVEVSTkFMX1NUUkVBTSApICE9IDAgKTsKKworICAgIGZhY2UtPnN0cmVhbSA9IDA7CisKKyAgICAvKiBnZXQgcmlkIG9mIGl0ICovCisgICAgaWYgKCBmYWNlLT5pbnRlcm5hbCApCisgICAgeworICAgICAgRlRfRlJFRSggZmFjZS0+aW50ZXJuYWwgKTsKKyAgICB9CisgICAgRlRfRlJFRSggZmFjZSApOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBEZXN0cm95X0RyaXZlciggRlRfRHJpdmVyICBkcml2ZXIgKQorICB7CisgICAgRlRfTGlzdF9GaW5hbGl6ZSggJmRyaXZlci0+ZmFjZXNfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAoRlRfTGlzdF9EZXN0cnVjdG9yKWRlc3Ryb3lfZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBkcml2ZXItPnJvb3QubWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciApOworCisgICAgLyogY2hlY2sgd2hldGhlciB3ZSBuZWVkIHRvIGRyb3AgdGhlIGRyaXZlcidzIGdseXBoIGxvYWRlciAqLworICAgIGlmICggRlRfRFJJVkVSX1VTRVNfT1VUTElORVMoIGRyaXZlciApICkKKyAgICAgIEZUX0dseXBoTG9hZGVyX0RvbmUoIGRyaXZlci0+Z2x5cGhfbG9hZGVyICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZpbmRfdW5pY29kZV9jaGFybWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgZnVuY3Rpb24gZmluZHMgYSBVbmljb2RlIGNoYXJtYXAsIGlmIHRoZXJlIGlzIG9uZS4gICAgICAgICAgICAqLworICAvKiAgICBBbmQgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSwgaXQgdHJpZXMgdG8gZmF2b3VyIHRoZSBtb3JlICAgICAgICAgKi8KKyAgLyogICAgZXh0ZW5zaXZlIG9uZSwgaS5lLiwgb25lIHRoYXQgc3VwcG9ydHMgVUNTLTQgYWdhaW5zdCB0aG9zZSB3aGljaCAgICovCisgIC8qICAgIGFyZSBsaW1pdGVkIHRvIHRoZSBCTVAgKHNhaWQgVUNTLTIgZW5jb2RpbmcuKSAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBvcGVuX2ZhY2UoKSAoanVzdCBiZWxvdyksIGFuZCBhbHNvICAgICovCisgIC8qICAgIGZyb20gRlRfU2VsZWN0X0NoYXJtYXAoIC4uLiwgRlRfRU5DT0RJTkdfVU5JQ09ERSApLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIGZpbmRfdW5pY29kZV9jaGFybWFwKCBGVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX0NoYXJNYXAqICBmaXJzdDsKKyAgICBGVF9DaGFyTWFwKiAgY3VyOworCisKKyAgICAvKiBjYWxsZXIgc2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgYGZhY2UnIGlzIHZhbGlkICovCisgICAgRlRfQVNTRVJUKCBmYWNlICk7CisKKyAgICBmaXJzdCA9IGZhY2UtPmNoYXJtYXBzOworCisgICAgaWYgKCAhZmlyc3QgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0NoYXJNYXBfSGFuZGxlICk7CisKKyAgICAvKgorICAgICAqICBUaGUgb3JpZ2luYWwgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbihzKSBvbmx5IHNwZWNpZmllZCBjaGFybWFwCisgICAgICogIGZvcm1hdHMgdGhhdCBhcmUgY2FwYWJsZSBvZiBtYXBwaW5nIDggb3IgMTYgYml0IGNoYXJhY3RlciBjb2RlcyB0bworICAgICAqICBnbHlwaCBpbmRpY2VzLgorICAgICAqCisgICAgICogIEhvd2V2ZXIsIHJlY2VudCB1cGRhdGVzIHRvIHRoZSBBcHBsZSBhbmQgT3BlblR5cGUgc3BlY2lmaWNhdGlvbnMKKyAgICAgKiAgaW50cm9kdWNlZCBuZXcgZm9ybWF0cyB0aGF0IGFyZSBjYXBhYmxlIG9mIG1hcHBpbmcgMzItYml0IGNoYXJhY3RlcgorICAgICAqICBjb2RlcyBhcyB3ZWxsLiAgQW5kIHRoZXNlIGFyZSBhbHJlYWR5IHVzZWQgb24gc29tZSBmb250cywgbWFpbmx5IHRvCisgICAgICogIG1hcCBub24tQk1QIEFzaWFuIGlkZW9ncmFwaHMgYXMgZGVmaW5lZCBpbiBVbmljb2RlLgorICAgICAqCisgICAgICogIEZvciBjb21wYXRpYmlsaXR5IHB1cnBvc2VzLCB0aGVzZSBmb250cyBnZW5lcmFsbHkgY29tZSB3aXRoCisgICAgICogICpzZXZlcmFsKiBVbmljb2RlIGNoYXJtYXBzOgorICAgICAqCisgICAgICogICAtIE9uZSBvZiB0aGVtIGluIHRoZSAib2xkIiAxNi1iaXQgZm9ybWF0LCB0aGF0IGNhbm5vdCBhY2Nlc3MKKyAgICAgKiAgICAgYWxsIGdseXBocyBpbiB0aGUgZm9udC4KKyAgICAgKgorICAgICAqICAgLSBBbm90aGVyIG9uZSBpbiB0aGUgIm5ldyIgMzItYml0IGZvcm1hdCwgdGhhdCBjYW4gYWNjZXNzIGFsbAorICAgICAqICAgICB0aGUgZ2x5cGhzLgorICAgICAqCisgICAgICogIFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gd3JpdHRlbiB0byBhbHdheXMgZmF2b3IgYSAzMi1iaXQgY2hhcm1hcAorICAgICAqICB3aGVuIGZvdW5kLiAgT3RoZXJ3aXNlLCBhIDE2LWJpdCBvbmUgaXMgcmV0dXJuZWQgd2hlbiBmb3VuZC4KKyAgICAgKi8KKworICAgIC8qIFNpbmNlIHRoZSBgaW50ZXJlc3RpbmcnIHRhYmxlLCB3aXRoIElEcyAoMywxMCksIGlzIG5vcm1hbGx5IHRoZSAqLworICAgIC8qIGxhc3Qgb25lLCB3ZSBsb29wIGJhY2t3YXJkcy4gIFRoaXMgbG9zZXMgd2l0aCB0eXBlMSBmb250cyB3aXRoICAqLworICAgIC8qIG5vbi1CTVAgY2hhcmFjdGVycyAoPC4wMDAxJSksIHRoaXMgd2lucyB3aXRoIC50dGYgd2l0aCBub24tQk1QICAqLworICAgIC8qIGNoYXJzICguMDElID8pLCBhbmQgdGhpcyBpcyB0aGUgc2FtZSBhYm91dCA5OS45OSUgb2YgdGhlIHRpbWUhICAqLworCisgICAgY3VyID0gZmlyc3QgKyBmYWNlLT5udW1fY2hhcm1hcHM7ICAvKiBwb2ludHMgYWZ0ZXIgdGhlIGxhc3Qgb25lICovCisKKyAgICBmb3IgKCA7IC0tY3VyID49IGZpcnN0OyApCisgICAgeworICAgICAgaWYgKCBjdXJbMF0tPmVuY29kaW5nID09IEZUX0VOQ09ESU5HX1VOSUNPREUgKQorICAgICAgeworICAgICAgICAvKiBYWFggSWYgc29tZSBuZXcgZW5jb2RpbmdzIHRvIHJlcHJlc2VudCBVQ1MtNCBhcmUgYWRkZWQsICovCisgICAgICAgIC8qICAgICB0aGV5IHNob3VsZCBiZSBhZGRlZCBoZXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAoIGN1clswXS0+cGxhdGZvcm1faWQgPT0gVFRfUExBVEZPUk1fTUlDUk9TT0ZUICYmCisgICAgICAgICAgICAgICBjdXJbMF0tPmVuY29kaW5nX2lkID09IFRUX01TX0lEX1VDU180ICAgICAgICApICAgICB8fAorICAgICAgICAgICAgICggY3VyWzBdLT5wbGF0Zm9ybV9pZCA9PSBUVF9QTEFURk9STV9BUFBMRV9VTklDT0RFICYmCisgICAgICAgICAgICAgICBjdXJbMF0tPmVuY29kaW5nX2lkID09IFRUX0FQUExFX0lEX1VOSUNPREVfMzIgICAgKSApCisgICAgICAgIHsKKyNpZmRlZiBGVF9NQVhfQ0hBUk1BUF9DQUNIRUFCTEUKKyAgICAgICAgICBpZiAoIGN1ciAtIGZpcnN0ID4gRlRfTUFYX0NIQVJNQVBfQ0FDSEVBQkxFICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9FUlJPUigoICJmaW5kX3VuaWNvZGVfY2hhcm1hcDogVUNTLTQgY21hcCBpcyBmb3VuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICJhdCB0b28gbGF0ZSBwb3NpdGlvbiAoJWQpXG4iLCBjdXIgLSBmaXJzdCApKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgIGZhY2UtPmNoYXJtYXAgPSBjdXJbMF07CisgICAgICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8qIFdlIGRvIG5vdCBoYXZlIGFueSBVQ1MtNCBjaGFybWFwLiAgICAgICAgICAgICAgICAqLworICAgIC8qIERvIHRoZSBsb29wIGFnYWluIGFuZCBzZWFyY2ggZm9yIFVDUy0yIGNoYXJtYXBzLiAqLworICAgIGN1ciA9IGZpcnN0ICsgZmFjZS0+bnVtX2NoYXJtYXBzOworCisgICAgZm9yICggOyAtLWN1ciA+PSBmaXJzdDsgKQorICAgIHsKKyAgICAgIGlmICggY3VyWzBdLT5lbmNvZGluZyA9PSBGVF9FTkNPRElOR19VTklDT0RFICkKKyAgICAgIHsKKyNpZmRlZiBGVF9NQVhfQ0hBUk1BUF9DQUNIRUFCTEUKKyAgICAgICAgaWYgKCBjdXIgLSBmaXJzdCA+IEZUX01BWF9DSEFSTUFQX0NBQ0hFQUJMRSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9FUlJPUigoICJmaW5kX3VuaWNvZGVfY2hhcm1hcDogVUNTLTIgY21hcCBpcyBmb3VuZCAiCisgICAgICAgICAgICAgICAgICAgICAiYXQgdG9vIGxhdGUgcG9zaXRpb24gKCVkKVxuIiwgY3VyIC0gZmlyc3QgKSk7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBmYWNlLT5jaGFybWFwID0gY3VyWzBdOworICAgICAgICByZXR1cm4gRlRfRXJyX09rOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9DaGFyTWFwX0hhbmRsZSApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmaW5kX3ZhcmlhbnRfc2VsZWN0b3JfY2hhcm1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSB2YXJpYW50IHNlbGVjdG9yIGNoYXJtYXAsIGlmIHRoZXJlIGlzIG9uZS4gKi8KKyAgLyogICAgVGhlcmUgY2FuIG9ubHkgYmUgb25lIChwbGF0Zm9ybT0wLCBzcGVjaWZpYz01LCBmb3JtYXQ9MTQpLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfQ2hhck1hcAorICBmaW5kX3ZhcmlhbnRfc2VsZWN0b3JfY2hhcm1hcCggRlRfRmFjZSAgZmFjZSApCisgIHsKKyAgICBGVF9DaGFyTWFwKiAgZmlyc3Q7CisgICAgRlRfQ2hhck1hcCogIGVuZDsKKyAgICBGVF9DaGFyTWFwKiAgY3VyOworCisKKyAgICAvKiBjYWxsZXIgc2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgYGZhY2UnIGlzIHZhbGlkICovCisgICAgRlRfQVNTRVJUKCBmYWNlICk7CisKKyAgICBmaXJzdCA9IGZhY2UtPmNoYXJtYXBzOworCisgICAgaWYgKCAhZmlyc3QgKQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlbmQgPSBmaXJzdCArIGZhY2UtPm51bV9jaGFybWFwczsgIC8qIHBvaW50cyBhZnRlciB0aGUgbGFzdCBvbmUgKi8KKworICAgIGZvciAoIGN1ciA9IGZpcnN0OyBjdXIgPCBlbmQ7ICsrY3VyICkKKyAgICB7CisgICAgICBpZiAoIGN1clswXS0+cGxhdGZvcm1faWQgPT0gVFRfUExBVEZPUk1fQVBQTEVfVU5JQ09ERSAgICAmJgorICAgICAgICAgICBjdXJbMF0tPmVuY29kaW5nX2lkID09IFRUX0FQUExFX0lEX1ZBUklBTlRfU0VMRUNUT1IgJiYKKyAgICAgICAgICAgRlRfR2V0X0NNYXBfRm9ybWF0KCBjdXJbMF0gKSA9PSAxNCAgICAgICAgICAgICAgICAgICkKKyAgICAgIHsKKyNpZmRlZiBGVF9NQVhfQ0hBUk1BUF9DQUNIRUFCTEUKKyAgICAgICAgaWYgKCBjdXIgLSBmaXJzdCA+IEZUX01BWF9DSEFSTUFQX0NBQ0hFQUJMRSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9FUlJPUigoICJmaW5kX3VuaWNvZGVfY2hhcm1hcDogVVZTIGNtYXAgaXMgZm91bmQgIgorICAgICAgICAgICAgICAgICAgICAgImF0IHRvbyBsYXRlIHBvc2l0aW9uICglZClcbiIsIGN1ciAtIGZpcnN0ICkpOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGN1clswXTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb3Blbl9mYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBkb2VzIHNvbWUgd29yayBmb3IgRlRfT3Blbl9GYWNlKCkuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgb3Blbl9mYWNlKCBGVF9Ecml2ZXIgICAgICBkcml2ZXIsCisgICAgICAgICAgICAgRlRfU3RyZWFtICAgICAgc3RyZWFtLAorICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbXMsCisgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAqYWZhY2UgKQorICB7CisgICAgRlRfTWVtb3J5ICAgICAgICAgbWVtb3J5OworICAgIEZUX0RyaXZlcl9DbGFzcyAgIGNsYXp6OworICAgIEZUX0ZhY2UgICAgICAgICAgIGZhY2UgPSAwOworICAgIEZUX0Vycm9yICAgICAgICAgIGVycm9yLCBlcnJvcjI7CisgICAgRlRfRmFjZV9JbnRlcm5hbCAgaW50ZXJuYWwgPSBOVUxMOworCisKKyAgICBjbGF6eiAgPSBkcml2ZXItPmNsYXp6OworICAgIG1lbW9yeSA9IGRyaXZlci0+cm9vdC5tZW1vcnk7CisKKyAgICAvKiBhbGxvY2F0ZSB0aGUgZmFjZSBvYmplY3QgYW5kIHBlcmZvcm0gYmFzaWMgaW5pdGlhbGl6YXRpb24gKi8KKyAgICBpZiAoIEZUX0FMTE9DKCBmYWNlLCBjbGF6ei0+ZmFjZV9vYmplY3Rfc2l6ZSApICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIGZhY2UtPmRyaXZlciA9IGRyaXZlcjsKKyAgICBmYWNlLT5tZW1vcnkgPSBtZW1vcnk7CisgICAgZmFjZS0+c3RyZWFtID0gc3RyZWFtOworCisgICAgaWYgKCBGVF9ORVcoIGludGVybmFsICkgKQorICAgICAgZ290byBGYWlsOworCisgICAgZmFjZS0+aW50ZXJuYWwgPSBpbnRlcm5hbDsKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICB7CisgICAgICBpbnQgIGk7CisKKworICAgICAgZmFjZS0+aW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSA9IDA7CisgICAgICBmb3IgKCBpID0gMDsgaSA8IG51bV9wYXJhbXMgJiYgIWZhY2UtPmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2U7CisgICAgICAgICAgICBpKysgKQorICAgICAgICBpZiAoIHBhcmFtc1tpXS50YWcgPT0gRlRfUEFSQU1fVEFHX0lOQ1JFTUVOVEFMICkKKyAgICAgICAgICBmYWNlLT5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlID0KKyAgICAgICAgICAgIChGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2UpcGFyYW1zW2ldLmRhdGE7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIGNsYXp6LT5pbml0X2ZhY2UgKQorICAgICAgZXJyb3IgPSBjbGF6ei0+aW5pdF9mYWNlKCBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9JbnQpZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEZhaWw7CisKKyAgICAvKiBzZWxlY3QgVW5pY29kZSBjaGFybWFwIGJ5IGRlZmF1bHQgKi8KKyAgICBlcnJvcjIgPSBmaW5kX3VuaWNvZGVfY2hhcm1hcCggZmFjZSApOworCisgICAgLyogaWYgbm8gVW5pY29kZSBjaGFybWFwIGNhbiBiZSBmb3VuZCwgRlRfRXJyX0ludmFsaWRfQ2hhck1hcF9IYW5kbGUgKi8KKyAgICAvKiBpcyByZXR1cm5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgLyogbm8gZXJyb3Igc2hvdWxkIGhhcHBlbiwgYnV0IHdlIHdhbnQgdG8gcGxheSBzYWZlICovCisgICAgaWYgKCBlcnJvcjIgJiYgRlRfRVJSX05FUSggZXJyb3IyLCBJbnZhbGlkX0NoYXJNYXBfSGFuZGxlICkgKQorICAgIHsKKyAgICAgIGVycm9yID0gZXJyb3IyOworICAgICAgZ290byBGYWlsOworICAgIH0KKworICAgICphZmFjZSA9IGZhY2U7CisKKyAgRmFpbDoKKyAgICBpZiAoIGVycm9yICkKKyAgICB7CisgICAgICBkZXN0cm95X2NoYXJtYXBzKCBmYWNlLCBtZW1vcnkgKTsKKyAgICAgIGlmICggY2xhenotPmRvbmVfZmFjZSApCisgICAgICAgIGNsYXp6LT5kb25lX2ZhY2UoIGZhY2UgKTsKKyAgICAgIEZUX0ZSRUUoIGludGVybmFsICk7CisgICAgICBGVF9GUkVFKCBmYWNlICk7CisgICAgICAqYWZhY2UgPSAwOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogdGhlcmUncyBhIE1hYy1zcGVjaWZpYyBleHRlbmRlZCBpbXBsZW1lbnRhdGlvbiBvZiBGVF9OZXdfRmFjZSgpICovCisgIC8qIGluIHNyYy9iYXNlL2Z0bWFjLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisvLyNpZm5kZWYgRlRfTUFDSU5UT1NICisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9OZXdfRmFjZSggRlRfTGlicmFyeSAgIGxpYnJhcnksCisgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgcGF0aG5hbWUsCisgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICphZmFjZSApCisgIHsKKyAgICBGVF9PcGVuX0FyZ3MgIGFyZ3M7CisKKworICAgIC8qIHRlc3QgZm9yIHZhbGlkIGBsaWJyYXJ5JyBhbmQgYGFmYWNlJyBkZWxheWVkIHRvIEZUX09wZW5fRmFjZSgpICovCisgICAgaWYgKCAhcGF0aG5hbWUgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBhcmdzLmZsYWdzICAgID0gRlRfT1BFTl9QQVRITkFNRTsKKyAgICBhcmdzLnBhdGhuYW1lID0gKGNoYXIqKXBhdGhuYW1lOworICAgIGFyZ3Muc3RyZWFtICAgPSBOVUxMOworCisgICAgcmV0dXJuIEZUX09wZW5fRmFjZSggbGlicmFyeSwgJmFyZ3MsIGZhY2VfaW5kZXgsIGFmYWNlICk7CisgIH0KKworLy8jZW5kaWYKKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfTmV3X01lbW9yeV9GYWNlKCBGVF9MaWJyYXJ5ICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CeXRlKiAgZmlsZV9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgICBmaWxlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgKmFmYWNlICkKKyAgeworICAgIEZUX09wZW5fQXJncyAgYXJnczsKKworCisgICAgLyogdGVzdCBmb3IgdmFsaWQgYGxpYnJhcnknIGFuZCBgZmFjZScgZGVsYXllZCB0byBGVF9PcGVuX0ZhY2UoKSAqLworICAgIGlmICggIWZpbGVfYmFzZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGFyZ3MuZmxhZ3MgICAgICAgPSBGVF9PUEVOX01FTU9SWTsKKyAgICBhcmdzLm1lbW9yeV9iYXNlID0gZmlsZV9iYXNlOworICAgIGFyZ3MubWVtb3J5X3NpemUgPSBmaWxlX3NpemU7CisgICAgYXJncy5zdHJlYW0gICAgICA9IE5VTEw7CisKKyAgICByZXR1cm4gRlRfT3Blbl9GYWNlKCBsaWJyYXJ5LCAmYXJncywgZmFjZV9pbmRleCwgYWZhY2UgKTsKKyAgfQorCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX01BQ19GT05UUworCisgIC8qIFRoZSBiZWhhdmlvciBoZXJlIGlzIHZlcnkgc2ltaWxhciB0byB0aGF0IGluIGJhc2UvZnRtYWMuYywgYnV0IGl0ICAgICAqLworICAvKiBpcyBkZXNpZ25lZCB0byB3b3JrIG9uIG5vbi1tYWMgc3lzdGVtcywgc28gbm8gbWFjIHNwZWNpZmljIGNhbGxzLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFdlIGxvb2sgYXQgdGhlIGZpbGUgYW5kIGRldGVybWluZSBpZiBpdCBpcyBhIG1hYyBkZm9udCBmaWxlIG9yIGEgbWFjICAqLworICAvKiByZXNvdXJjZSBmaWxlLCBvciBhIG1hY2JpbmFyeSBmaWxlIGNvbnRhaW5pbmcgYSBtYWMgcmVzb3VyY2UgZmlsZS4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFVubGlrZSBmdG1hYyBJJ20gbm90IGdvaW5nIHRvIGxvb2sgYXQgYSBgRk9ORCcuICBJIGRvbid0IHJlYWxseSBzZWUgICAqLworICAvKiB0aGUgcG9pbnQsIGVzcGVjaWFsbHkgc2luY2UgdGhlcmUgbWF5IGJlIG11bHRpcGxlIGBGT05EJyByZXNvdXJjZXMuICAgKi8KKyAgLyogSW5zdGVhZCBJJ2xsIGp1c3QgbG9vayBmb3IgYHNmbnQnIGFuZCBgUE9TVCcgcmVzb3VyY2VzLCBvcmRlcmVkIGFzICAgICovCisgIC8qIHRoZXkgb2NjdXIgaW4gdGhlIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTm90ZSB0aGF0IG11bHRpcGxlIGBQT1NUJyByZXNvdXJjZXMgZG8gbm90IG1lYW4gbXVsdGlwbGUgcG9zdHNjcmlwdCAgICovCisgIC8qIGZvbnRzOyB0aGV5IGFsbCBnZXQgamFtbWVkIHRvZ2V0aGVyIHRvIG1ha2Ugd2hhdCBpcyBlc3NlbnRpYWxseSBhICAgICAqLworICAvKiBwZmIgZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFdlIGFyZW4ndCBpbnRlcmVzdGVkIGluIGBORk5UJyBvciBgRk9OVCcgYml0bWFwIHJlc291cmNlcy4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQXMgc29vbiBhcyB3ZSBnZXQgYW4gYHNmbnQnIGxvYWQgaXQgaW50byBtZW1vcnkgYW5kIHBhc3MgaXQgb2ZmIHRvICAgICovCisgIC8qIEZUX09wZW5fRmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSWYgd2UgaGF2ZSBhIChzZXQgb2YpIGBQT1NUJyByZXNvdXJjZXMsIG1hc3NhZ2UgdGhlbSBpbnRvIGEgKG1lbW9yeSkgICovCisgIC8qIHBmYiBmaWxlIGFuZCBwYXNzIHRoYXQgdG8gRlRfT3Blbl9GYWNlLiAgKEFzIHdpdGggZnRtYWMuYyBJJ20gbm90ICAgICAqLworICAvKiBnb2luZyB0byB0cnkgdG8gc2F2ZSB0aGUga2VybmluZyBpbmZvLiAgQWZ0ZXIgYWxsIHRoYXQgbGl2ZXMgaW4gdGhlICAgKi8KKyAgLyogYEZPTkQnIHdoaWNoIGlzbid0IGluIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGBQT1NUJyByZXNvdXJjZXMgc28gICAgICovCisgIC8qIHdlIGRvbid0IHJlYWxseSBoYXZlIGFjY2VzcyB0byBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisKKyAgLyogRmluYWxpemVyIGZvciBhIG1lbW9yeSBzdHJlYW07IGdldHMgY2FsbGVkIGJ5IEZUX0RvbmVfRmFjZSgpLiAqLworICAvKiBJdCBmcmVlcyB0aGUgbWVtb3J5IGl0IHVzZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZyb20gZnRtYWMuYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgbWVtb3J5X3N0cmVhbV9jbG9zZSggRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKworCisgICAgRlRfRlJFRSggc3RyZWFtLT5iYXNlICk7CisKKyAgICBzdHJlYW0tPnNpemUgID0gMDsKKyAgICBzdHJlYW0tPmJhc2UgID0gMDsKKyAgICBzdHJlYW0tPmNsb3NlID0gMDsKKyAgfQorCisKKyAgLyogQ3JlYXRlIGEgbmV3IG1lbW9yeSBzdHJlYW0gZnJvbSBhIGJ1ZmZlciBhbmQgYSBzaXplLiAqLworICAvKiBGcm9tIGZ0bWFjLmMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBuZXdfbWVtb3J5X3N0cmVhbSggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtX0Nsb3NlRnVuYyAgY2xvc2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICAgICAgICAgICphc3RyZWFtICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfTWVtb3J5ICBtZW1vcnk7CisgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBOVUxMOworCisKKyAgICBpZiAoICFsaWJyYXJ5ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9MaWJyYXJ5X0hhbmRsZSApOworCisgICAgaWYgKCAhYmFzZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgICphc3RyZWFtID0gMDsKKyAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisgICAgaWYgKCBGVF9ORVcoIHN0cmVhbSApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIEZUX1N0cmVhbV9PcGVuTWVtb3J5KCBzdHJlYW0sIGJhc2UsIHNpemUgKTsKKworICAgIHN0cmVhbS0+Y2xvc2UgPSBjbG9zZTsKKworICAgICphc3RyZWFtID0gc3RyZWFtOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBDcmVhdGUgYSBuZXcgRlRfRmFjZSBnaXZlbiBhIGJ1ZmZlciBhbmQgYSBkcml2ZXIgbmFtZS4gKi8KKyAgLyogZnJvbSBmdG1hYy5jICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBvcGVuX2ZhY2VfZnJvbV9idWZmZXIoIEZUX0xpYnJhcnkgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBkcml2ZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlICAgICAqYWZhY2UgKQorICB7CisgICAgRlRfT3Blbl9BcmdzICBhcmdzOworICAgIEZUX0Vycm9yICAgICAgZXJyb3I7CisgICAgRlRfU3RyZWFtICAgICBzdHJlYW0gPSBOVUxMOworICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICBlcnJvciA9IG5ld19tZW1vcnlfc3RyZWFtKCBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfc3RyZWFtX2Nsb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJlYW0gKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICB7CisgICAgICBGVF9GUkVFKCBiYXNlICk7CisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgYXJncy5mbGFncyA9IEZUX09QRU5fU1RSRUFNOworICAgIGFyZ3Muc3RyZWFtID0gc3RyZWFtOworICAgIGlmICggZHJpdmVyX25hbWUgKQorICAgIHsKKyAgICAgIGFyZ3MuZmxhZ3MgPSBhcmdzLmZsYWdzIHwgRlRfT1BFTl9EUklWRVI7CisgICAgICBhcmdzLmRyaXZlciA9IEZUX0dldF9Nb2R1bGUoIGxpYnJhcnksIGRyaXZlcl9uYW1lICk7CisgICAgfQorCisjaWZkZWYgRlRfTUFDSU5UT1NICisgICAgLyogQXQgdGhpcyBwb2ludCwgZmFjZV9pbmRleCBoYXMgc2VydmVkIGl0cyBwdXJwb3NlOyAgICAgICovCisgICAgLyogd2hvZXZlciBjYWxscyB0aGlzIGZ1bmN0aW9uIGhhcyBhbHJlYWR5IHVzZWQgaXQgdG8gICAgICovCisgICAgLyogbG9jYXRlIHRoZSBjb3JyZWN0IGZvbnQgZGF0YS4gIFdlIHNob3VsZCBub3QgcHJvcGFnYXRlICovCisgICAgLyogdGhpcyBpbmRleCB0byBGVF9PcGVuX0ZhY2UoKSAodW5sZXNzIGl0IGlzIG5lZ2F0aXZlKS4gICovCisKKyAgICBpZiAoIGZhY2VfaW5kZXggPiAwICkKKyAgICAgIGZhY2VfaW5kZXggPSAwOworI2VuZGlmCisKKyAgICBlcnJvciA9IEZUX09wZW5fRmFjZSggbGlicmFyeSwgJmFyZ3MsIGZhY2VfaW5kZXgsIGFmYWNlICk7CisKKyAgICBpZiAoIGVycm9yID09IEZUX0Vycl9PayApCisgICAgICAoKmFmYWNlKS0+ZmFjZV9mbGFncyAmPSB+RlRfRkFDRV9GTEFHX0VYVEVSTkFMX1NUUkVBTTsKKyAgICBlbHNlCisjaWZkZWYgRlRfTUFDSU5UT1NICisgICAgICBGVF9TdHJlYW1fRnJlZSggc3RyZWFtLCAwICk7CisjZWxzZQorICAgIHsKKyAgICAgIEZUX1N0cmVhbV9DbG9zZSggc3RyZWFtICk7CisgICAgICBGVF9GUkVFKCBzdHJlYW0gKTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogTG9vayB1cCBgVFlQMScgb3IgYENJRCAnIHRhYmxlIGZyb20gc2ZudCB0YWJsZSBkaXJlY3RvcnkuICAgICAgICovCisgIC8qIGBvZmZzZXQnIGFuZCBgbGVuZ3RoJyBtdXN0IGV4Y2x1ZGUgdGhlIGJpbmFyeSBoZWFkZXIgaW4gdGFibGVzLiAqLworCisgIC8qIFR5cGUgMSBhbmQgQ0lELWtleWVkIGZvbnQgZHJpdmVycyBzaG91bGQgcmVjb2duaXplIHNmbnQtd3JhcHBlZCAqLworICAvKiBmb3JtYXQgdG9vLiAgSGVyZSwgc2luY2Ugd2UgY2FuJ3QgZXhwZWN0IHRoYXQgdGhlIFRydWVUeXBlIGZvbnQgKi8KKyAgLyogZHJpdmVyIGlzIGxvYWRlZCB1bmNvbmRpdGlhbGx5LCB3ZSBtdXN0IHBhcnNlIHRoZSBmb250IGJ5ICAgICAgICovCisgIC8qIG91cnNlbHZlcy4gIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIG5hbWUgb2YgdGhlIHRhYmxlIGFuZCAqLworICAvKiB0aGUgb2Zmc2V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICBzdGF0aWMgRlRfRXJyb3IKKyAgZnRfbG9va3VwX1BTX2luX3NmbnRfc3RyZWFtKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCogICBpc19zZm50X2NpZCApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX1VTaG9ydCAgbnVtVGFibGVzOworICAgIEZUX0xvbmcgICAgcHN0YWJsZV9pbmRleDsKKyAgICBGVF9VTG9uZyAgIHRhZzsKKyAgICBpbnQgICAgICAgIGk7CisKKworICAgICpvZmZzZXQgPSAwOworICAgICpsZW5ndGggPSAwOworICAgICppc19zZm50X2NpZCA9IEZBTFNFOworCisgICAgLyogVE9ETzogc3VwcG9ydCBmb3Igc2ZudC13cmFwcGVkIFBTL0NJRCBpbiBUVEMgZm9ybWF0ICovCisKKyAgICAvKiB2ZXJzaW9uIGNoZWNrIGZvciAndHlwMScgKHNob3VsZCBiZSBpZ25vcmVkPykgKi8KKyAgICBpZiAoIEZUX1JFQURfVUxPTkcoIHRhZyApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICBpZiAoIHRhZyAhPSBUVEFHX3R5cDEgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisKKyAgICBpZiAoIEZUX1JFQURfVVNIT1JUKCBudW1UYWJsZXMgKSApCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgaWYgKCBGVF9TVFJFQU1fU0tJUCggMiAqIDMgKSApIC8qIHNraXAgYmluYXJ5IHNlYXJjaCBoZWFkZXIgKi8KKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIHBzdGFibGVfaW5kZXggPSAtMTsKKyAgICAqaXNfc2ZudF9jaWQgID0gRkFMU0U7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG51bVRhYmxlczsgaSsrICkKKyAgICB7CisgICAgICBpZiAoIEZUX1JFQURfVUxPTkcoIHRhZyApICAgICB8fCBGVF9TVFJFQU1fU0tJUCggNCApICAgICAgfHwKKyAgICAgICAgICAgRlRfUkVBRF9VTE9ORyggKm9mZnNldCApIHx8IEZUX1JFQURfVUxPTkcoICpsZW5ndGggKSApCisgICAgICAgIHJldHVybiBlcnJvcjsKKworICAgICAgaWYgKCB0YWcgPT0gVFRBR19DSUQgKQorICAgICAgeworICAgICAgICBwc3RhYmxlX2luZGV4Kys7CisgICAgICAgICpvZmZzZXQgKz0gMjI7CisgICAgICAgICpsZW5ndGggLT0gMjI7CisgICAgICAgICppc19zZm50X2NpZCA9IFRSVUU7CisgICAgICAgIGlmICggZmFjZV9pbmRleCA8IDAgKQorICAgICAgICAgIHJldHVybiBGVF9FcnJfT2s7CisgICAgICB9CisgICAgICBlbHNlIGlmICggdGFnID09IFRUQUdfVFlQMSApCisgICAgICB7CisgICAgICAgIHBzdGFibGVfaW5kZXgrKzsKKyAgICAgICAgKm9mZnNldCArPSAyNDsKKyAgICAgICAgKmxlbmd0aCAtPSAyNDsKKyAgICAgICAgKmlzX3NmbnRfY2lkID0gRkFMU0U7CisgICAgICAgIGlmICggZmFjZV9pbmRleCA8IDAgKQorICAgICAgICAgIHJldHVybiBGVF9FcnJfT2s7CisgICAgICB9CisgICAgICBpZiAoIGZhY2VfaW5kZXggPj0gMCAmJiBwc3RhYmxlX2luZGV4ID09IGZhY2VfaW5kZXggKQorICAgICAgICByZXR1cm4gRlRfRXJyX09rOworICAgIH0KKyAgICByZXR1cm4gRlRfVEhST1coIFRhYmxlX01pc3NpbmcgKTsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIG9wZW5fZmFjZV9QU19mcm9tX3NmbnRfc3RyZWFtKCBGVF9MaWJyYXJ5ICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIgICpwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlICAgICAgICphZmFjZSApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworICAgIEZUX1VMb25nICAgb2Zmc2V0LCBsZW5ndGg7CisgICAgRlRfTG9uZyAgICBwb3M7CisgICAgRlRfQm9vbCAgICBpc19zZm50X2NpZDsKKyAgICBGVF9CeXRlKiAgIHNmbnRfcHMgPSBOVUxMOworCisgICAgRlRfVU5VU0VEKCBudW1fcGFyYW1zICk7CisgICAgRlRfVU5VU0VEKCBwYXJhbXMgKTsKKworCisgICAgcG9zID0gRlRfU3RyZWFtX1Bvcyggc3RyZWFtICk7CisKKyAgICBlcnJvciA9IGZ0X2xvb2t1cF9QU19pbl9zZm50X3N0cmVhbSggc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXNfc2ZudF9jaWQgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGlmICggRlRfU3RyZWFtX1NlZWsoIHN0cmVhbSwgcG9zICsgb2Zmc2V0ICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCBGVF9BTExPQyggc2ZudF9wcywgKEZUX0xvbmcpbGVuZ3RoICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgZXJyb3IgPSBGVF9TdHJlYW1fUmVhZCggc3RyZWFtLCAoRlRfQnl0ZSAqKXNmbnRfcHMsIGxlbmd0aCApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgZXJyb3IgPSBvcGVuX2ZhY2VfZnJvbV9idWZmZXIoIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmbnRfcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTUlOKCBmYWNlX2luZGV4LCAwICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NmbnRfY2lkID8gImNpZCIgOiAidHlwZTEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZmFjZSApOworICBFeGl0OgorICAgIHsKKyAgICAgIEZUX0Vycm9yICBlcnJvcjE7CisKKworICAgICAgaWYgKCBGVF9FUlJfRVEoIGVycm9yLCBVbmtub3duX0ZpbGVfRm9ybWF0ICkgKQorICAgICAgeworICAgICAgICBlcnJvcjEgPSBGVF9TdHJlYW1fU2Vlayggc3RyZWFtLCBwb3MgKTsKKyAgICAgICAgaWYgKCBlcnJvcjEgKQorICAgICAgICAgIHJldHVybiBlcnJvcjE7CisgICAgICB9CisKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisgIH0KKworCisjaWZuZGVmIEZUX01BQ0lOVE9TSAorCisgIC8qIFRoZSByZXNvdXJjZSBoZWFkZXIgc2F5cyB3ZSd2ZSBnb3QgcmVzb3VyY2VfY250IGBQT1NUJyAodHlwZTEpICovCisgIC8qIHJlc291cmNlcyBpbiB0aGlzIGZpbGUuICBUaGV5IGFsbCBuZWVkIHRvIGJlIGNvYWxlc2NlZCBpbnRvICAgICovCisgIC8qIG9uZSBsdW1wIHdoaWNoIGdldHMgcGFzc2VkIG9uIHRvIHRoZSB0eXBlMSBkcml2ZXIuICAgICAgICAgICAgICovCisgIC8qIEhlcmUgY2FuIGJlIG9ubHkgb25lIFBvc3RTY3JpcHQgZm9udCBpbiBhIGZpbGUgc28gZmFjZV9pbmRleCAgICovCisgIC8qIG11c3QgYmUgMCAob3IgLTEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBNYWNfUmVhZF9QT1NUX1Jlc291cmNlKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKm9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIHJlc291cmNlX2NudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAqYWZhY2UgKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvciAgPSBGVF9FUlIoIENhbm5vdF9PcGVuX1Jlc291cmNlICk7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisgICAgRlRfQnl0ZSogICBwZmJfZGF0YSA9IE5VTEw7CisgICAgaW50ICAgICAgICBpLCB0eXBlLCBmbGFnczsKKyAgICBGVF9Mb25nICAgIGxlbjsKKyAgICBGVF9Mb25nICAgIHBmYl9sZW4sIHBmYl9wb3MsIHBmYl9sZW5wb3M7CisgICAgRlRfTG9uZyAgICBybGVuLCB0ZW1wOworCisKKyAgICBpZiAoIGZhY2VfaW5kZXggPT0gLTEgKQorICAgICAgZmFjZV9pbmRleCA9IDA7CisgICAgaWYgKCBmYWNlX2luZGV4ICE9IDAgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgLyogRmluZCB0aGUgbGVuZ3RoIG9mIGFsbCB0aGUgUE9TVCByZXNvdXJjZXMsIGNvbmNhdGVuYXRlZC4gIEFzc3VtZSAqLworICAgIC8qIHdvcnN0IGNhc2UgKGVhY2ggcmVzb3VyY2UgaW4gaXRzIG93biBzZWN0aW9uKS4gICAgICAgICAgICAgICAgICAgKi8KKyAgICBwZmJfbGVuID0gMDsKKyAgICBmb3IgKCBpID0gMDsgaSA8IHJlc291cmNlX2NudDsgKytpICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1N0cmVhbV9TZWVrKCBzdHJlYW0sIG9mZnNldHNbaV0gKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgICBpZiAoIEZUX1JFQURfTE9ORyggdGVtcCApICkKKyAgICAgICAgZ290byBFeGl0OworICAgICAgcGZiX2xlbiArPSB0ZW1wICsgNjsKKyAgICB9CisKKyAgICBpZiAoIEZUX0FMTE9DKCBwZmJfZGF0YSwgKEZUX0xvbmcpcGZiX2xlbiArIDIgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBwZmJfZGF0YVswXSA9IDB4ODA7CisgICAgcGZiX2RhdGFbMV0gPSAxOyAgICAgICAgICAgIC8qIEFzY2lpIHNlY3Rpb24gKi8KKyAgICBwZmJfZGF0YVsyXSA9IDA7ICAgICAgICAgICAgLyogNC1ieXRlIGxlbmd0aCwgZmlsbCBpbiBsYXRlciAqLworICAgIHBmYl9kYXRhWzNdID0gMDsKKyAgICBwZmJfZGF0YVs0XSA9IDA7CisgICAgcGZiX2RhdGFbNV0gPSAwOworICAgIHBmYl9wb3MgICAgID0gNjsKKyAgICBwZmJfbGVucG9zICA9IDI7CisKKyAgICBsZW4gPSAwOworICAgIHR5cGUgPSAxOworICAgIGZvciAoIGkgPSAwOyBpIDwgcmVzb3VyY2VfY250OyArK2kgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfU3RyZWFtX1NlZWsoIHN0cmVhbSwgb2Zmc2V0c1tpXSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDI7CisgICAgICBpZiAoIEZUX1JFQURfTE9ORyggcmxlbiApICkKKyAgICAgICAgZ290byBFeGl0OworICAgICAgaWYgKCBGVF9SRUFEX1VTSE9SVCggZmxhZ3MgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIEZUX1RSQUNFMygoICJQT1NUIGZyYWdtZW50WyVkXTogb2Zmc2V0cz0weCUwOHgsIHJsZW49MHglMDh4LCBmbGFncz0weCUwNHhcbiIsCisgICAgICAgICAgICAgICAgICAgaSwgb2Zmc2V0c1tpXSwgcmxlbiwgZmxhZ3MgKSk7CisKKyAgICAgIC8qIHBvc3Rwb25lIHRoZSBjaGVjayBvZiBybGVuIGxvbmdlciB0aGFuIGJ1ZmZlciB1bnRpbCBGVF9TdHJlYW1fUmVhZCgpICovCisgICAgICBpZiAoICggZmxhZ3MgPj4gOCApID09IDAgKSAgICAgICAgLyogQ29tbWVudCwgc2hvdWxkIG5vdCBiZSBsb2FkZWQgKi8KKyAgICAgICAgY29udGludWU7CisKKyAgICAgIC8qIHRoZSBmbGFncyBhcmUgcGFydCBvZiB0aGUgcmVzb3VyY2UsIHNvIHJsZW4gPj0gMi4gICovCisgICAgICAvKiBidXQgc29tZSBmb250cyBkZWNsYXJlIHJsZW4gPSAwIGZvciBlbXB0eSBmcmFnbWVudCAqLworICAgICAgaWYgKCBybGVuID4gMiApCisgICAgICAgIHJsZW4gLT0gMjsKKyAgICAgIGVsc2UKKyAgICAgICAgcmxlbiA9IDA7CisKKyAgICAgIGlmICggKCBmbGFncyA+PiA4ICkgPT0gdHlwZSApCisgICAgICAgIGxlbiArPSBybGVuOworICAgICAgZWxzZQorICAgICAgeworICAgICAgICBpZiAoIHBmYl9sZW5wb3MgKyAzID4gcGZiX2xlbiArIDIgKQorICAgICAgICAgIGdvdG8gRXhpdDI7CisgICAgICAgIHBmYl9kYXRhW3BmYl9sZW5wb3MgICAgXSA9IChGVF9CeXRlKSggbGVuICk7CisgICAgICAgIHBmYl9kYXRhW3BmYl9sZW5wb3MgKyAxXSA9IChGVF9CeXRlKSggbGVuID4+IDggKTsKKyAgICAgICAgcGZiX2RhdGFbcGZiX2xlbnBvcyArIDJdID0gKEZUX0J5dGUpKCBsZW4gPj4gMTYgKTsKKyAgICAgICAgcGZiX2RhdGFbcGZiX2xlbnBvcyArIDNdID0gKEZUX0J5dGUpKCBsZW4gPj4gMjQgKTsKKworICAgICAgICBpZiAoICggZmxhZ3MgPj4gOCApID09IDUgKSAgICAgIC8qIEVuZCBvZiBmb250IG1hcmsgKi8KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIHBmYl9wb3MgKyA2ID4gcGZiX2xlbiArIDIgKQorICAgICAgICAgIGdvdG8gRXhpdDI7CisgICAgICAgIHBmYl9kYXRhW3BmYl9wb3MrK10gPSAweDgwOworCisgICAgICAgIHR5cGUgPSBmbGFncyA+PiA4OworICAgICAgICBsZW4gPSBybGVuOworCisgICAgICAgIHBmYl9kYXRhW3BmYl9wb3MrK10gPSAoRlRfQnl0ZSl0eXBlOworICAgICAgICBwZmJfbGVucG9zICAgICAgICAgID0gcGZiX3BvczsKKyAgICAgICAgcGZiX2RhdGFbcGZiX3BvcysrXSA9IDA7ICAgICAgICAvKiA0LWJ5dGUgbGVuZ3RoLCBmaWxsIGluIGxhdGVyICovCisgICAgICAgIHBmYl9kYXRhW3BmYl9wb3MrK10gPSAwOworICAgICAgICBwZmJfZGF0YVtwZmJfcG9zKytdID0gMDsKKyAgICAgICAgcGZiX2RhdGFbcGZiX3BvcysrXSA9IDA7CisgICAgICB9CisKKyAgICAgIGVycm9yID0gRlRfRVJSKCBDYW5ub3RfT3Blbl9SZXNvdXJjZSApOworICAgICAgaWYgKCBwZmJfcG9zID4gcGZiX2xlbiB8fCBwZmJfcG9zICsgcmxlbiA+IHBmYl9sZW4gKQorICAgICAgICBnb3RvIEV4aXQyOworCisgICAgICBlcnJvciA9IEZUX1N0cmVhbV9SZWFkKCBzdHJlYW0sIChGVF9CeXRlICopcGZiX2RhdGEgKyBwZmJfcG9zLCBybGVuICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0MjsKKyAgICAgIHBmYl9wb3MgKz0gcmxlbjsKKyAgICB9CisKKyAgICBpZiAoIHBmYl9wb3MgKyAyID4gcGZiX2xlbiArIDIgKQorICAgICAgZ290byBFeGl0MjsKKyAgICBwZmJfZGF0YVtwZmJfcG9zKytdID0gMHg4MDsKKyAgICBwZmJfZGF0YVtwZmJfcG9zKytdID0gMzsKKworICAgIGlmICggcGZiX2xlbnBvcyArIDMgPiBwZmJfbGVuICsgMiApCisgICAgICBnb3RvIEV4aXQyOworICAgIHBmYl9kYXRhW3BmYl9sZW5wb3MgICAgXSA9IChGVF9CeXRlKSggbGVuICk7CisgICAgcGZiX2RhdGFbcGZiX2xlbnBvcyArIDFdID0gKEZUX0J5dGUpKCBsZW4gPj4gOCApOworICAgIHBmYl9kYXRhW3BmYl9sZW5wb3MgKyAyXSA9IChGVF9CeXRlKSggbGVuID4+IDE2ICk7CisgICAgcGZiX2RhdGFbcGZiX2xlbnBvcyArIDNdID0gKEZUX0J5dGUpKCBsZW4gPj4gMjQgKTsKKworICAgIHJldHVybiBvcGVuX2ZhY2VfZnJvbV9idWZmZXIoIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZiX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZiX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZhY2UgKTsKKworICBFeGl0MjoKKyAgICBGVF9GUkVFKCBwZmJfZGF0YSApOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBUaGUgcmVzb3VyY2UgaGVhZGVyIHNheXMgd2UndmUgZ290IHJlc291cmNlX2NudCBgc2ZudCcgICAgICAqLworICAvKiAoVHJ1ZVR5cGUvT3BlblR5cGUpIHJlc291cmNlcyBpbiB0aGlzIGZpbGUuICBMb29rIHRocm91Z2ggICAqLworICAvKiB0aGVtIGZvciB0aGUgb25lIGluZGljYXRlZCBieSBmYWNlX2luZGV4LCBsb2FkIGl0IGludG8gbWVtLCAqLworICAvKiBwYXNzIGl0IG9uIHRoZSB0aGUgdHJ1ZXR5cGUgZHJpdmVyIGFuZCByZXR1cm4gaXQuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgTWFjX1JlYWRfc2ZudF9SZXNvdXJjZSggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICpvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICByZXNvdXJjZV9jbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgKmFmYWNlICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworICAgIEZUX0J5dGUqICAgc2ZudF9kYXRhID0gTlVMTDsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX0xvbmcgICAgZmxhZ19vZmZzZXQ7CisgICAgRlRfTG9uZyAgICBybGVuOworICAgIGludCAgICAgICAgaXNfY2ZmOworICAgIEZUX0xvbmcgICAgZmFjZV9pbmRleF9pbl9yZXNvdXJjZSA9IDA7CisKKworICAgIGlmICggZmFjZV9pbmRleCA9PSAtMSApCisgICAgICBmYWNlX2luZGV4ID0gMDsKKyAgICBpZiAoIGZhY2VfaW5kZXggPj0gcmVzb3VyY2VfY250ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggQ2Fubm90X09wZW5fUmVzb3VyY2UgKTsKKworICAgIGZsYWdfb2Zmc2V0ID0gb2Zmc2V0c1tmYWNlX2luZGV4XTsKKyAgICBlcnJvciA9IEZUX1N0cmVhbV9TZWVrKCBzdHJlYW0sIGZsYWdfb2Zmc2V0ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIEZUX1JFQURfTE9ORyggcmxlbiApICkKKyAgICAgIGdvdG8gRXhpdDsKKyAgICBpZiAoIHJsZW4gPT0gLTEgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBDYW5ub3RfT3Blbl9SZXNvdXJjZSApOworCisgICAgZXJyb3IgPSBvcGVuX2ZhY2VfUFNfZnJvbV9zZm50X3N0cmVhbSggbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmYWNlICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogcmV3aW5kIHNmbnQgc3RyZWFtIGJlZm9yZSBvcGVuX2ZhY2VfUFNfZnJvbV9zZm50X3N0cmVhbSgpICovCisgICAgaWYgKCBGVF9TdHJlYW1fU2Vlayggc3RyZWFtLCBmbGFnX29mZnNldCArIDQgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIEZUX0FMTE9DKCBzZm50X2RhdGEsIChGVF9Mb25nKXJsZW4gKSApCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgZXJyb3IgPSBGVF9TdHJlYW1fUmVhZCggc3RyZWFtLCAoRlRfQnl0ZSAqKXNmbnRfZGF0YSwgcmxlbiApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgaXNfY2ZmID0gcmxlbiA+IDQgJiYgIWZ0X21lbWNtcCggc2ZudF9kYXRhLCAiT1RUTyIsIDQgKTsKKyAgICBlcnJvciA9IG9wZW5fZmFjZV9mcm9tX2J1ZmZlciggbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ZudF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlX2luZGV4X2luX3Jlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jZmYgPyAiY2ZmIiA6ICJ0cnVldHlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmYWNlICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIENoZWNrIGZvciBhIHZhbGlkIHJlc291cmNlIGZvcmsgaGVhZGVyLCBvciBhIHZhbGlkIGRmb250ICAgICovCisgIC8qIGhlYWRlci4gIEluIGEgcmVzb3VyY2UgZm9yayB0aGUgZmlyc3QgMTYgYnl0ZXMgYXJlIHJlcGVhdGVkICovCisgIC8qIGF0IHRoZSBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgYnl0ZXMgNC03LiAgSW4gYSBkZm9udCBieXRlcyAgICovCisgIC8qIDQtNyBwb2ludCB0byAxNiBieXRlcyBvZiB6ZXJvZXMgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBJc01hY1Jlc291cmNlKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICBzdHJlYW0sCisgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIHJlc291cmNlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAqYWZhY2UgKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9Mb25nICAgIG1hcF9vZmZzZXQsIHJkYXJhX3BvczsKKyAgICBGVF9Mb25nICAgICpkYXRhX29mZnNldHM7CisgICAgRlRfTG9uZyAgICBjb3VudDsKKworCisgICAgZXJyb3IgPSBGVF9SYWNjZXNzX0dldF9IZWFkZXJJbmZvKCBsaWJyYXJ5LCBzdHJlYW0sIHJlc291cmNlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXBfb2Zmc2V0LCAmcmRhcmFfcG9zICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICBlcnJvciA9IEZUX1JhY2Nlc3NfR2V0X0RhdGFPZmZzZXRzKCBsaWJyYXJ5LCBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwX29mZnNldCwgcmRhcmFfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUQUdfUE9TVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9vZmZzZXRzLCAmY291bnQgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgZXJyb3IgPSBNYWNfUmVhZF9QT1NUX1Jlc291cmNlKCBsaWJyYXJ5LCBzdHJlYW0sIGRhdGFfb2Zmc2V0cywgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2VfaW5kZXgsIGFmYWNlICk7CisgICAgICBGVF9GUkVFKCBkYXRhX29mZnNldHMgKTsKKyAgICAgIC8qIFBPU1QgZXhpc3RzIGluIGFuIExXRk4gcHJvdmlkaW5nIGEgc2luZ2xlIGZhY2UgKi8KKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgKCphZmFjZSktPm51bV9mYWNlcyA9IDE7CisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgZXJyb3IgPSBGVF9SYWNjZXNzX0dldF9EYXRhT2Zmc2V0cyggbGlicmFyeSwgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcF9vZmZzZXQsIHJkYXJhX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVEFHX3NmbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2Zmc2V0cywgJmNvdW50ICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgIHsKKyAgICAgIEZUX0xvbmcgIGZhY2VfaW5kZXhfaW50ZXJuYWwgPSBmYWNlX2luZGV4ICUgY291bnQ7CisKKworICAgICAgZXJyb3IgPSBNYWNfUmVhZF9zZm50X1Jlc291cmNlKCBsaWJyYXJ5LCBzdHJlYW0sIGRhdGFfb2Zmc2V0cywgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2VfaW5kZXhfaW50ZXJuYWwsIGFmYWNlICk7CisgICAgICBGVF9GUkVFKCBkYXRhX29mZnNldHMgKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgKCphZmFjZSktPm51bV9mYWNlcyA9IGNvdW50OworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogQ2hlY2sgZm9yIGEgdmFsaWQgbWFjYmluYXJ5IGhlYWRlciwgYW5kIGlmIHdlIGZpbmQgb25lICAgKi8KKyAgLyogY2hlY2sgdGhhdCB0aGUgKGZsYXR0ZW5lZCkgcmVzb3VyY2UgZm9yayBpbiBpdCBpcyB2YWxpZC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIElzTWFjQmluYXJ5KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgKmFmYWNlICkKKyAgeworICAgIHVuc2lnbmVkIGNoYXIgIGhlYWRlclsxMjhdOworICAgIEZUX0Vycm9yICAgICAgIGVycm9yOworICAgIEZUX0xvbmcgICAgICAgIGRsZW4sIG9mZnNldDsKKworCisgICAgaWYgKCBOVUxMID09IHN0cmVhbSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfU3RyZWFtX09wZXJhdGlvbiApOworCisgICAgZXJyb3IgPSBGVF9TdHJlYW1fU2Vlayggc3RyZWFtLCAwICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBlcnJvciA9IEZUX1N0cmVhbV9SZWFkKCBzdHJlYW0sIChGVF9CeXRlKiloZWFkZXIsIDEyOCApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCAgICAgICAgICAgIGhlYWRlclsgMF0gIT0gIDAgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyWzc0XSAhPSAgMCB8fAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJbODJdICE9ICAwIHx8CisgICAgICAgICAgICAgICAgICAgIGhlYWRlclsgMV0gPT0gIDAgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyWyAxXSA+ICAzMyB8fAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJbNjNdICE9ICAwIHx8CisgICAgICAgICBoZWFkZXJbMiArIGhlYWRlclsxXV0gIT0gIDAgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisKKyAgICBkbGVuID0gKCBoZWFkZXJbMHg1M10gPDwgMjQgKSB8CisgICAgICAgICAgICggaGVhZGVyWzB4NTRdIDw8IDE2ICkgfAorICAgICAgICAgICAoIGhlYWRlclsweDU1XSA8PCAgOCApIHwKKyAgICAgICAgICAgICBoZWFkZXJbMHg1Nl07CisjaWYgMAorICAgIHJsZW4gPSAoIGhlYWRlclsweDU3XSA8PCAyNCApIHwKKyAgICAgICAgICAgKCBoZWFkZXJbMHg1OF0gPDwgMTYgKSB8CisgICAgICAgICAgICggaGVhZGVyWzB4NTldIDw8ICA4ICkgfAorICAgICAgICAgICAgIGhlYWRlclsweDVhXTsKKyNlbmRpZiAvKiAwICovCisgICAgb2Zmc2V0ID0gMTI4ICsgKCAoIGRsZW4gKyAxMjcgKSAmIH4xMjcgKTsKKworICAgIHJldHVybiBJc01hY1Jlc291cmNlKCBsaWJyYXJ5LCBzdHJlYW0sIG9mZnNldCwgZmFjZV9pbmRleCwgYWZhY2UgKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGxvYWRfZmFjZV9pbl9lbWJlZGRlZF9yZm9yayggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICAgICAgICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GYWNlICAgICAgICAgICAgICphZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9PcGVuX0FyZ3MgICphcmdzICkKKyAgeworCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX3JhY2Nlc3MKKworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworICAgIEZUX0Vycm9yICAgZXJyb3IgID0gRlRfRVJSKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisgICAgaW50ICAgICAgICBpOworCisgICAgY2hhciAqICAgICBmaWxlX25hbWVzW0ZUX1JBQ0NFU1NfTl9SVUxFU107CisgICAgRlRfTG9uZyAgICBvZmZzZXRzW0ZUX1JBQ0NFU1NfTl9SVUxFU107CisgICAgRlRfRXJyb3IgICBlcnJvcnNbRlRfUkFDQ0VTU19OX1JVTEVTXTsKKyAgICBGVF9Cb29sICAgIGlzX2Rhcndpbl92ZnMsIHZmc19yZm9ya19oYXNfbm9fZm9udCA9IEZBTFNFOyAvKiBub3QgdGVzdGVkICovCisKKyAgICBGVF9PcGVuX0FyZ3MgIGFyZ3MyOworICAgIEZUX1N0cmVhbSAgICAgc3RyZWFtMiA9IDA7CisKKworICAgIEZUX1JhY2Nlc3NfR3Vlc3MoIGxpYnJhcnksIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5wYXRobmFtZSwgZmlsZV9uYW1lcywgb2Zmc2V0cywgZXJyb3JzICk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEZUX1JBQ0NFU1NfTl9SVUxFUzsgaSsrICkKKyAgICB7CisgICAgICBpc19kYXJ3aW5fdmZzID0gZnRfcmFjY2Vzc19ydWxlX2J5X2Rhcndpbl92ZnMoIGxpYnJhcnksIGkgKTsKKyAgICAgIGlmICggaXNfZGFyd2luX3ZmcyAmJiB2ZnNfcmZvcmtfaGFzX25vX2ZvbnQgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTMoKCAiU2tpcCBydWxlICVkOiBkYXJ3aW4gdmZzIHJlc291cmNlIGZvcmsiCisgICAgICAgICAgICAgICAgICAgICIgaXMgYWxyZWFkeSBjaGVja2VkIGFuZCIKKyAgICAgICAgICAgICAgICAgICAgIiBubyBmb250IGlzIGZvdW5kXG4iLCBpICkpOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgaWYgKCBlcnJvcnNbaV0gKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTMoKCAiRXJyb3JbJWRdIGhhcyBvY2N1cnJlZCBpbiBydWxlICVkXG4iLCBlcnJvcnNbaV0sIGkgKSk7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBhcmdzMi5mbGFncyAgICA9IEZUX09QRU5fUEFUSE5BTUU7CisgICAgICBhcmdzMi5wYXRobmFtZSA9IGZpbGVfbmFtZXNbaV0gPyBmaWxlX25hbWVzW2ldIDogYXJncy0+cGF0aG5hbWU7CisKKyAgICAgIEZUX1RSQUNFMygoICJUcnkgcnVsZSAlZDogJXMgKG9mZnNldD0lZCkgLi4uIiwKKyAgICAgICAgICAgICAgICAgIGksIGFyZ3MyLnBhdGhuYW1lLCBvZmZzZXRzW2ldICkpOworCisgICAgICBlcnJvciA9IEZUX1N0cmVhbV9OZXcoIGxpYnJhcnksICZhcmdzMiwgJnN0cmVhbTIgKTsKKyAgICAgIGlmICggaXNfZGFyd2luX3ZmcyAmJiBGVF9FUlJfRVEoIGVycm9yLCBDYW5ub3RfT3Blbl9TdHJlYW0gKSApCisgICAgICAgIHZmc19yZm9ya19oYXNfbm9fZm9udCA9IFRSVUU7CisKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTMoKCAiZmFpbGVkXG4iICkpOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgZXJyb3IgPSBJc01hY1Jlc291cmNlKCBsaWJyYXJ5LCBzdHJlYW0yLCBvZmZzZXRzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlX2luZGV4LCBhZmFjZSApOworICAgICAgRlRfU3RyZWFtX0ZyZWUoIHN0cmVhbTIsIDAgKTsKKworICAgICAgRlRfVFJBQ0UzKCggIiVzXG4iLCBlcnJvciA/ICJmYWlsZWQiOiAic3VjY2Vzc2Z1bCIgKSk7CisKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgICBicmVhazsKKyAgICAgIGVsc2UgaWYgKCBpc19kYXJ3aW5fdmZzICkKKyAgICAgICAgICB2ZnNfcmZvcmtfaGFzX25vX2ZvbnQgPSBUUlVFOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBGVF9SQUNDRVNTX05fUlVMRVM7IGkrKykKKyAgICB7CisgICAgICBpZiAoIGZpbGVfbmFtZXNbaV0gKQorICAgICAgICBGVF9GUkVFKCBmaWxlX25hbWVzW2ldICk7CisgICAgfQorCisgICAgLyogQ2FsbGVyIChsb2FkX21hY19mYWNlKSByZXF1aXJlcyBGVF9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdC4gKi8KKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGVycm9yID0gRlRfRVJSKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisKKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2Vfb2JqcworCisgIH0KKworCisgIC8qIENoZWNrIGZvciBzb21lIG1hY2ludG9zaCBmb3JtYXRzIHdpdGhvdXQgQ2FyYm9uIGZyYW1ld29yay4gICAgKi8KKyAgLyogSXMgdGhpcyBhIG1hY2JpbmFyeSBmaWxlPyAgSWYgc28gbG9vayBhdCB0aGUgcmVzb3VyY2UgZm9yay4gICAqLworICAvKiBJcyB0aGlzIGEgbWFjIGRmb250IGZpbGU/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIElzIHRoaXMgYW4gb2xkIHN0eWxlIHJlc291cmNlIGZvcms/IChpbiBkYXRhKSAgICAgICAgICAgICAgICAgKi8KKyAgLyogRWxzZSBjYWxsIGxvYWRfZmFjZV9pbl9lbWJlZGRlZF9yZm9yayB0byB0cnkgZXh0cmEgcnVsZXMgICAgICAqLworICAvKiAoZGVmaW5lZCBpbiBgZnRyZm9yay5jJykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIGxvYWRfbWFjX2ZhY2UoIEZUX0xpYnJhcnkgICAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgICAgICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgICAgICAqYWZhY2UsCisgICAgICAgICAgICAgICAgIGNvbnN0IEZUX09wZW5fQXJncyAgKmFyZ3MgKQorICB7CisgICAgRlRfRXJyb3IgZXJyb3I7CisgICAgRlRfVU5VU0VEKCBhcmdzICk7CisKKworICAgIGVycm9yID0gSXNNYWNCaW5hcnkoIGxpYnJhcnksIHN0cmVhbSwgZmFjZV9pbmRleCwgYWZhY2UgKTsKKyAgICBpZiAoIEZUX0VSUl9FUSggZXJyb3IsIFVua25vd25fRmlsZV9Gb3JtYXQgKSApCisgICAgeworCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX3JhY2Nlc3MKKworICAgICAgRlRfVFJBQ0UzKCggIlRyeSBhcyBkZm9udDogJXMgLi4uIiwgYXJncy0+cGF0aG5hbWUgKSk7CisKKyAgICAgIGVycm9yID0gSXNNYWNSZXNvdXJjZSggbGlicmFyeSwgc3RyZWFtLCAwLCBmYWNlX2luZGV4LCBhZmFjZSApOworCisgICAgICBGVF9UUkFDRTMoKCAiJXNcbiIsIGVycm9yID8gImZhaWxlZCIgOiAic3VjY2Vzc2Z1bCIgKSk7CisKKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2Vfb2JqcworCisgICAgfQorCisgICAgaWYgKCAoIEZUX0VSUl9FUSggZXJyb3IsIFVua25vd25fRmlsZV9Gb3JtYXQgKSAgICAgIHx8CisgICAgICAgICAgIEZUX0VSUl9FUSggZXJyb3IsIEludmFsaWRfU3RyZWFtX09wZXJhdGlvbiApICkgJiYKKyAgICAgICAgICggYXJncy0+ZmxhZ3MgJiBGVF9PUEVOX1BBVEhOQU1FICkgICAgICAgICAgICAgICApCisgICAgICBlcnJvciA9IGxvYWRfZmFjZV9pbl9lbWJlZGRlZF9yZm9yayggbGlicmFyeSwgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2VfaW5kZXgsIGFmYWNlLCBhcmdzICk7CisgICAgcmV0dXJuIGVycm9yOworICB9CisjZW5kaWYKKworI2VuZGlmICAvKiAhRlRfTUFDSU5UT1NIICYmIEZUX0NPTkZJR19PUFRJT05fTUFDX0ZPTlRTICovCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX09wZW5fRmFjZSggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICBjb25zdCBGVF9PcGVuX0FyZ3MqICBhcmdzLAorICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgICAgICAqYWZhY2UgKQorICB7CisgICAgRlRfRXJyb3IgICAgIGVycm9yOworICAgIEZUX0RyaXZlciAgICBkcml2ZXIgPSBOVUxMOworICAgIEZUX01lbW9yeSAgICBtZW1vcnkgPSBOVUxMOworICAgIEZUX1N0cmVhbSAgICBzdHJlYW0gPSBOVUxMOworICAgIEZUX0ZhY2UgICAgICBmYWNlICAgPSBOVUxMOworICAgIEZUX0xpc3ROb2RlICBub2RlICAgPSBOVUxMOworICAgIEZUX0Jvb2wgICAgICBleHRlcm5hbF9zdHJlYW07CisgICAgRlRfTW9kdWxlKiAgIGN1cjsKKyAgICBGVF9Nb2R1bGUqICAgbGltaXQ7CisKKworICAgIC8qIHRlc3QgZm9yIHZhbGlkIGBsaWJyYXJ5JyBkZWxheWVkIHRvICovCisgICAgLyogRlRfU3RyZWFtX05ldygpICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIGlmICggKCAhYWZhY2UgJiYgZmFjZV9pbmRleCA+PSAwICkgfHwgIWFyZ3MgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBleHRlcm5hbF9zdHJlYW0gPSBGVF9CT09MKCAoIGFyZ3MtPmZsYWdzICYgRlRfT1BFTl9TVFJFQU0gKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPnN0cmVhbSAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAvKiBjcmVhdGUgaW5wdXQgc3RyZWFtICovCisgICAgZXJyb3IgPSBGVF9TdHJlYW1fTmV3KCBsaWJyYXJ5LCBhcmdzLCAmc3RyZWFtICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEZhaWwzOworCisgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisgICAgLyogSWYgdGhlIGZvbnQgZHJpdmVyIGlzIHNwZWNpZmllZCBpbiB0aGUgYGFyZ3MnIHN0cnVjdHVyZSwgdXNlICovCisgICAgLyogaXQuICBPdGhlcndpc2UsIHdlIHNjYW4gdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBkcml2ZXJzLiAgICAgICovCisgICAgaWYgKCAoIGFyZ3MtPmZsYWdzICYgRlRfT1BFTl9EUklWRVIgKSAmJiBhcmdzLT5kcml2ZXIgKQorICAgIHsKKyAgICAgIGRyaXZlciA9IEZUX0RSSVZFUiggYXJncy0+ZHJpdmVyICk7CisKKyAgICAgIC8qIG5vdCBhbGwgbW9kdWxlcyBhcmUgZHJpdmVycywgc28gY2hlY2suLi4gKi8KKyAgICAgIGlmICggRlRfTU9EVUxFX0lTX0RSSVZFUiggZHJpdmVyICkgKQorICAgICAgeworICAgICAgICBGVF9JbnQgICAgICAgICBudW1fcGFyYW1zID0gMDsKKyAgICAgICAgRlRfUGFyYW1ldGVyKiAgcGFyYW1zICAgICA9IDA7CisKKworICAgICAgICBpZiAoIGFyZ3MtPmZsYWdzICYgRlRfT1BFTl9QQVJBTVMgKQorICAgICAgICB7CisgICAgICAgICAgbnVtX3BhcmFtcyA9IGFyZ3MtPm51bV9wYXJhbXM7CisgICAgICAgICAgcGFyYW1zICAgICA9IGFyZ3MtPnBhcmFtczsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yID0gb3Blbl9mYWNlKCBkcml2ZXIsIHN0cmVhbSwgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9wYXJhbXMsIHBhcmFtcywgJmZhY2UgKTsKKyAgICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICAgIGdvdG8gU3VjY2VzczsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9IYW5kbGUgKTsKKworICAgICAgRlRfU3RyZWFtX0ZyZWUoIHN0cmVhbSwgZXh0ZXJuYWxfc3RyZWFtICk7CisgICAgICBnb3RvIEZhaWw7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBlcnJvciA9IEZUX0VSUiggTWlzc2luZ19Nb2R1bGUgKTsKKworICAgICAgLyogY2hlY2sgZWFjaCBmb250IGRyaXZlciBmb3IgYW4gYXBwcm9wcmlhdGUgZm9ybWF0ICovCisgICAgICBjdXIgICA9IGxpYnJhcnktPm1vZHVsZXM7CisgICAgICBsaW1pdCA9IGN1ciArIGxpYnJhcnktPm51bV9tb2R1bGVzOworCisgICAgICBmb3IgKCA7IGN1ciA8IGxpbWl0OyBjdXIrKyApCisgICAgICB7CisgICAgICAgIC8qIG5vdCBhbGwgbW9kdWxlcyBhcmUgZm9udCBkcml2ZXJzLCBzbyBjaGVjay4uLiAqLworICAgICAgICBpZiAoIEZUX01PRFVMRV9JU19EUklWRVIoIGN1clswXSApICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMgPSAwOworICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtcyAgICAgPSAwOworCisKKyAgICAgICAgICBkcml2ZXIgPSBGVF9EUklWRVIoIGN1clswXSApOworCisgICAgICAgICAgaWYgKCBhcmdzLT5mbGFncyAmIEZUX09QRU5fUEFSQU1TICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBudW1fcGFyYW1zID0gYXJncy0+bnVtX3BhcmFtczsKKyAgICAgICAgICAgIHBhcmFtcyAgICAgPSBhcmdzLT5wYXJhbXM7CisgICAgICAgICAgfQorCisgICAgICAgICAgZXJyb3IgPSBvcGVuX2ZhY2UoIGRyaXZlciwgc3RyZWFtLCBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fcGFyYW1zLCBwYXJhbXMsICZmYWNlICk7CisgICAgICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICAgICAgZ290byBTdWNjZXNzOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9NQUNfRk9OVFMKKyAgICAgICAgICBpZiAoIGZ0X3N0cmNtcCggY3VyWzBdLT5jbGF6ei0+bW9kdWxlX25hbWUsICJ0cnVldHlwZSIgKSA9PSAwICYmCisgICAgICAgICAgICAgICBGVF9FUlJfRVEoIGVycm9yLCBUYWJsZV9NaXNzaW5nICkgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgeworICAgICAgICAgICAgLyogVHJ1ZVR5cGUgYnV0IGVzc2VudGlhbCB0YWJsZXMgYXJlIG1pc3NpbmcgKi8KKyAgICAgICAgICAgIGlmICggRlRfU3RyZWFtX1NlZWsoIHN0cmVhbSwgMCApICkKKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGVycm9yID0gb3Blbl9mYWNlX1BTX2Zyb21fc2ZudF9zdHJlYW0oIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmYWNlICk7CisgICAgICAgICAgICBpZiAoICFlcnJvciApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX1N0cmVhbV9GcmVlKCBzdHJlYW0sIGV4dGVybmFsX3N0cmVhbSApOworICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgICBpZiAoIEZUX0VSUl9ORVEoIGVycm9yLCBVbmtub3duX0ZpbGVfRm9ybWF0ICkgKQorICAgICAgICAgICAgZ290byBGYWlsMzsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgRmFpbDM6CisgICAgICAvKiBJZiB3ZSBhcmUgb24gdGhlIG1hYywgYW5kIHdlIGdldCBhbiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qIEZUX0Vycl9JbnZhbGlkX1N0cmVhbV9PcGVyYXRpb24gaXQgbWF5IGJlIGJlY2F1c2Ugd2UgaGF2ZSBhbiAqLworICAgICAgLyogZW1wdHkgZGF0YSBmb3JrLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHRoZSByZXNvdXJjZSBmb3JrLiAgICAgICovCisgICAgICBpZiAoIEZUX0VSUl9ORVEoIGVycm9yLCBDYW5ub3RfT3Blbl9TdHJlYW0gKSAgICAgICAmJgorICAgICAgICAgICBGVF9FUlJfTkVRKCBlcnJvciwgVW5rbm93bl9GaWxlX0Zvcm1hdCApICAgICAgJiYKKyAgICAgICAgICAgRlRfRVJSX05FUSggZXJyb3IsIEludmFsaWRfU3RyZWFtX09wZXJhdGlvbiApICkKKyAgICAgICAgZ290byBGYWlsMjsKKworI2lmICFkZWZpbmVkKCBGVF9NQUNJTlRPU0ggKSAmJiBkZWZpbmVkKCBGVF9DT05GSUdfT1BUSU9OX01BQ19GT05UUyApCisgICAgICBlcnJvciA9IGxvYWRfbWFjX2ZhY2UoIGxpYnJhcnksIHN0cmVhbSwgZmFjZV9pbmRleCwgYWZhY2UsIGFyZ3MgKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgIHsKKyAgICAgICAgLyogV2UgZG9uJ3Qgd2FudCB0byBnbyB0byBTdWNjZXNzIGhlcmUuICBXZSd2ZSBhbHJlYWR5IGRvbmUgdGhhdC4gKi8KKyAgICAgICAgLyogT24gdGhlIG90aGVyIGhhbmQsIGlmIHdlIHN1Y2NlZWRlZCB3ZSBzdGlsbCBuZWVkIHRvIGNsb3NlIHRoaXMgKi8KKyAgICAgICAgLyogc3RyZWFtICh3ZSBvcGVuZWQgYSBkaWZmZXJlbnQgc3RyZWFtIHdoaWNoIGV4dHJhY3RlZCB0aGUgICAgICAgKi8KKyAgICAgICAgLyogaW50ZXJlc3RpbmcgaW5mb3JtYXRpb24gb3V0IG9mIHRoaXMgc3RyZWFtIGhlcmUuICBUaGF0IHN0cmVhbSAgKi8KKyAgICAgICAgLyogd2lsbCBzdGlsbCBiZSBvcGVuIGFuZCB0aGUgZmFjZSB3aWxsIHBvaW50IHRvIGl0KS4gICAgICAgICAgICAgKi8KKyAgICAgICAgRlRfU3RyZWFtX0ZyZWUoIHN0cmVhbSwgZXh0ZXJuYWxfc3RyZWFtICk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgIH0KKworICAgICAgaWYgKCBGVF9FUlJfTkVRKCBlcnJvciwgVW5rbm93bl9GaWxlX0Zvcm1hdCApICkKKyAgICAgICAgZ290byBGYWlsMjsKKyNlbmRpZiAgLyogIUZUX01BQ0lOVE9TSCAmJiBGVF9DT05GSUdfT1BUSU9OX01BQ19GT05UUyAqLworCisgICAgICAvKiBubyBkcml2ZXIgaXMgYWJsZSB0byBoYW5kbGUgdGhpcyBmb3JtYXQgKi8KKyAgICAgIGVycm9yID0gRlRfVEhST1coIFVua25vd25fRmlsZV9Gb3JtYXQgKTsKKworICBGYWlsMjoKKyAgICAgIEZUX1N0cmVhbV9GcmVlKCBzdHJlYW0sIGV4dGVybmFsX3N0cmVhbSApOworICAgICAgZ290byBGYWlsOworICAgIH0KKworICBTdWNjZXNzOgorICAgIEZUX1RSQUNFNCgoICJGVF9PcGVuX0ZhY2U6IE5ldyBmYWNlIG9iamVjdCwgYWRkaW5nIHRvIGxpc3RcbiIgKSk7CisKKyAgICAvKiBzZXQgdGhlIEZUX0ZBQ0VfRkxBR19FWFRFUk5BTF9TVFJFQU0gYml0IGZvciBGVF9Eb25lX0ZhY2UgKi8KKyAgICBpZiAoIGV4dGVybmFsX3N0cmVhbSApCisgICAgICBmYWNlLT5mYWNlX2ZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19FWFRFUk5BTF9TVFJFQU07CisKKyAgICAvKiBhZGQgdGhlIGZhY2Ugb2JqZWN0IHRvIGl0cyBkcml2ZXIncyBsaXN0ICovCisgICAgaWYgKCBGVF9ORVcoIG5vZGUgKSApCisgICAgICBnb3RvIEZhaWw7CisKKyAgICBub2RlLT5kYXRhID0gZmFjZTsKKyAgICAvKiBkb24ndCBhc3N1bWUgZHJpdmVyIGlzIHRoZSBzYW1lIGFzIGZhY2UtPmRyaXZlciwgc28gdXNlICovCisgICAgLyogZmFjZS0+ZHJpdmVyIGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIEZUX0xpc3RfQWRkKCAmZmFjZS0+ZHJpdmVyLT5mYWNlc19saXN0LCBub2RlICk7CisKKyAgICAvKiBub3cgYWxsb2NhdGUgYSBnbHlwaCBzbG90IG9iamVjdCBmb3IgdGhlIGZhY2UgKi8KKyAgICBGVF9UUkFDRTQoKCAiRlRfT3Blbl9GYWNlOiBDcmVhdGluZyBnbHlwaCBzbG90XG4iICkpOworCisgICAgaWYgKCBmYWNlX2luZGV4ID49IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfTmV3X0dseXBoU2xvdCggZmFjZSwgTlVMTCApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgLyogZmluYWxseSwgYWxsb2NhdGUgYSBzaXplIG9iamVjdCBmb3IgdGhlIGZhY2UgKi8KKyAgICAgIHsKKyAgICAgICAgRlRfU2l6ZSAgc2l6ZTsKKworCisgICAgICAgIEZUX1RSQUNFNCgoICJGVF9PcGVuX0ZhY2U6IENyZWF0aW5nIHNpemUgb2JqZWN0XG4iICkpOworCisgICAgICAgIGVycm9yID0gRlRfTmV3X1NpemUoIGZhY2UsICZzaXplICk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICBmYWNlLT5zaXplID0gc2l6ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBzb21lIGNoZWNrcyAqLworCisgICAgaWYgKCBGVF9JU19TQ0FMQUJMRSggZmFjZSApICkKKyAgICB7CisgICAgICBpZiAoIGZhY2UtPmhlaWdodCA8IDAgKQorICAgICAgICBmYWNlLT5oZWlnaHQgPSAoRlRfU2hvcnQpLWZhY2UtPmhlaWdodDsKKworICAgICAgaWYgKCAhRlRfSEFTX1ZFUlRJQ0FMKCBmYWNlICkgKQorICAgICAgICBmYWNlLT5tYXhfYWR2YW5jZV9oZWlnaHQgPSAoRlRfU2hvcnQpZmFjZS0+aGVpZ2h0OworICAgIH0KKworICAgIGlmICggRlRfSEFTX0ZJWEVEX1NJWkVTKCBmYWNlICkgKQorICAgIHsKKyAgICAgIEZUX0ludCAgaTsKKworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IGZhY2UtPm51bV9maXhlZF9zaXplczsgaSsrICkKKyAgICAgIHsKKyAgICAgICAgRlRfQml0bWFwX1NpemUqICBic2l6ZSA9IGZhY2UtPmF2YWlsYWJsZV9zaXplcyArIGk7CisKKworICAgICAgICBpZiAoIGJzaXplLT5oZWlnaHQgPCAwICkKKyAgICAgICAgICBic2l6ZS0+aGVpZ2h0ID0gKEZUX1Nob3J0KS1ic2l6ZS0+aGVpZ2h0OworICAgICAgICBpZiAoIGJzaXplLT54X3BwZW0gPCAwICkKKyAgICAgICAgICBic2l6ZS0+eF9wcGVtID0gKEZUX1Nob3J0KS1ic2l6ZS0+eF9wcGVtOworICAgICAgICBpZiAoIGJzaXplLT55X3BwZW0gPCAwICkKKyAgICAgICAgICBic2l6ZS0+eV9wcGVtID0gLWJzaXplLT55X3BwZW07CisgICAgICB9CisgICAgfQorCisgICAgLyogaW5pdGlhbGl6ZSBpbnRlcm5hbCBmYWNlIGRhdGEgKi8KKyAgICB7CisgICAgICBGVF9GYWNlX0ludGVybmFsICBpbnRlcm5hbCA9IGZhY2UtPmludGVybmFsOworCisKKyAgICAgIGludGVybmFsLT50cmFuc2Zvcm1fbWF0cml4Lnh4ID0gMHgxMDAwMEw7CisgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX21hdHJpeC54eSA9IDA7CisgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX21hdHJpeC55eCA9IDA7CisgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX21hdHJpeC55eSA9IDB4MTAwMDBMOworCisgICAgICBpbnRlcm5hbC0+dHJhbnNmb3JtX2RlbHRhLnggPSAwOworICAgICAgaW50ZXJuYWwtPnRyYW5zZm9ybV9kZWx0YS55ID0gMDsKKworICAgICAgaW50ZXJuYWwtPnJlZmNvdW50ID0gMTsKKyAgICB9CisKKyAgICBpZiAoIGFmYWNlICkKKyAgICAgICphZmFjZSA9IGZhY2U7CisgICAgZWxzZQorICAgICAgRlRfRG9uZV9GYWNlKCBmYWNlICk7CisKKyAgICBnb3RvIEV4aXQ7CisKKyAgRmFpbDoKKyAgICBpZiAoIG5vZGUgKQorICAgICAgRlRfRG9uZV9GYWNlKCBmYWNlICk7ICAgIC8qIGZhY2UgbXVzdCBiZSBpbiB0aGUgZHJpdmVyJ3MgbGlzdCAqLworICAgIGVsc2UgaWYgKCBmYWNlICkKKyAgICAgIGRlc3Ryb3lfZmFjZSggbWVtb3J5LCBmYWNlLCBkcml2ZXIgKTsKKworICBFeGl0OgorICAgIEZUX1RSQUNFNCgoICJGVF9PcGVuX0ZhY2U6IFJldHVybiAlZFxuIiwgZXJyb3IgKSk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfQXR0YWNoX0ZpbGUoIEZUX0ZhY2UgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIGZpbGVwYXRobmFtZSApCisgIHsKKyAgICBGVF9PcGVuX0FyZ3MgIG9wZW47CisKKworICAgIC8qIHRlc3QgZm9yIHZhbGlkIGBmYWNlJyBkZWxheWVkIHRvIEZUX0F0dGFjaF9TdHJlYW0oKSAqLworCisgICAgaWYgKCAhZmlsZXBhdGhuYW1lICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgb3Blbi5zdHJlYW0gICA9IE5VTEw7CisgICAgb3Blbi5mbGFncyAgICA9IEZUX09QRU5fUEFUSE5BTUU7CisgICAgb3Blbi5wYXRobmFtZSA9IChjaGFyKilmaWxlcGF0aG5hbWU7CisKKyAgICByZXR1cm4gRlRfQXR0YWNoX1N0cmVhbSggZmFjZSwgJm9wZW4gKTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9BdHRhY2hfU3RyZWFtKCBGVF9GYWNlICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9PcGVuX0FyZ3MqICBwYXJhbWV0ZXJzICkKKyAgeworICAgIEZUX1N0cmVhbSAgc3RyZWFtOworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfRHJpdmVyICBkcml2ZXI7CisKKyAgICBGVF9Ecml2ZXJfQ2xhc3MgIGNsYXp6OworCisKKyAgICAvKiB0ZXN0IGZvciB2YWxpZCBgcGFyYW1ldGVycycgZGVsYXllZCB0byBGVF9TdHJlYW1fTmV3KCkgKi8KKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0ZhY2VfSGFuZGxlICk7CisKKyAgICBkcml2ZXIgPSBmYWNlLT5kcml2ZXI7CisgICAgaWYgKCAhZHJpdmVyICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Ecml2ZXJfSGFuZGxlICk7CisKKyAgICBlcnJvciA9IEZUX1N0cmVhbV9OZXcoIGRyaXZlci0+cm9vdC5saWJyYXJ5LCBwYXJhbWV0ZXJzLCAmc3RyZWFtICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiB3ZSBpbXBsZW1lbnQgRlRfQXR0YWNoX1N0cmVhbSBpbiBlYWNoIGRyaXZlciB0aHJvdWdoIHRoZSAqLworICAgIC8qIGBhdHRhY2hfZmlsZScgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICBlcnJvciA9IEZUX0VSUiggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisgICAgY2xhenogPSBkcml2ZXItPmNsYXp6OworICAgIGlmICggY2xhenotPmF0dGFjaF9maWxlICkKKyAgICAgIGVycm9yID0gY2xhenotPmF0dGFjaF9maWxlKCBmYWNlLCBzdHJlYW0gKTsKKworICAgIC8qIGNsb3NlIHRoZSBhdHRhY2hlZCBzdHJlYW0gKi8KKyAgICBGVF9TdHJlYW1fRnJlZSggc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAoRlRfQm9vbCkoIHBhcmFtZXRlcnMtPnN0cmVhbSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcGFyYW1ldGVycy0+ZmxhZ3MgJiBGVF9PUEVOX1NUUkVBTSApICkgKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9SZWZlcmVuY2VfRmFjZSggRlRfRmFjZSAgZmFjZSApCisgIHsKKyAgICBmYWNlLT5pbnRlcm5hbC0+cmVmY291bnQrKzsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfRG9uZV9GYWNlKCBGVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX0Vycm9yICAgICBlcnJvcjsKKyAgICBGVF9Ecml2ZXIgICAgZHJpdmVyOworICAgIEZUX01lbW9yeSAgICBtZW1vcnk7CisgICAgRlRfTGlzdE5vZGUgIG5vZGU7CisKKworICAgIGVycm9yID0gRlRfRVJSKCBJbnZhbGlkX0ZhY2VfSGFuZGxlICk7CisgICAgaWYgKCBmYWNlICYmIGZhY2UtPmRyaXZlciApCisgICAgeworICAgICAgZmFjZS0+aW50ZXJuYWwtPnJlZmNvdW50LS07CisgICAgICBpZiAoIGZhY2UtPmludGVybmFsLT5yZWZjb3VudCA+IDAgKQorICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZHJpdmVyID0gZmFjZS0+ZHJpdmVyOworICAgICAgICBtZW1vcnkgPSBkcml2ZXItPnJvb3QubWVtb3J5OworCisgICAgICAgIC8qIGZpbmQgZmFjZSBpbiBkcml2ZXIncyBsaXN0ICovCisgICAgICAgIG5vZGUgPSBGVF9MaXN0X0ZpbmQoICZkcml2ZXItPmZhY2VzX2xpc3QsIGZhY2UgKTsKKyAgICAgICAgaWYgKCBub2RlICkKKyAgICAgICAgeworICAgICAgICAgIC8qIHJlbW92ZSBmYWNlIG9iamVjdCBmcm9tIHRoZSBkcml2ZXIncyBsaXN0ICovCisgICAgICAgICAgRlRfTGlzdF9SZW1vdmUoICZkcml2ZXItPmZhY2VzX2xpc3QsIG5vZGUgKTsKKyAgICAgICAgICBGVF9GUkVFKCBub2RlICk7CisKKyAgICAgICAgICAvKiBub3cgZGVzdHJveSB0aGUgb2JqZWN0IHByb3BlciAqLworICAgICAgICAgIGRlc3Ryb3lfZmFjZSggbWVtb3J5LCBmYWNlLCBkcml2ZXIgKTsKKyAgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG9ianMuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfTmV3X1NpemUoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgRlRfU2l6ZSAgKmFzaXplICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgICAgZXJyb3I7CisgICAgRlRfTWVtb3J5ICAgICAgICBtZW1vcnk7CisgICAgRlRfRHJpdmVyICAgICAgICBkcml2ZXI7CisgICAgRlRfRHJpdmVyX0NsYXNzICBjbGF6ejsKKworICAgIEZUX1NpemUgICAgICAgICAgc2l6ZSA9IDA7CisgICAgRlRfTGlzdE5vZGUgICAgICBub2RlID0gMDsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKworICAgIGlmICggIWFzaXplICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9TaXplX0hhbmRsZSApOworCisgICAgaWYgKCAhZmFjZS0+ZHJpdmVyICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Ecml2ZXJfSGFuZGxlICk7CisKKyAgICAqYXNpemUgPSAwOworCisgICAgZHJpdmVyID0gZmFjZS0+ZHJpdmVyOworICAgIGNsYXp6ICA9IGRyaXZlci0+Y2xheno7CisgICAgbWVtb3J5ID0gZmFjZS0+bWVtb3J5OworCisgICAgLyogQWxsb2NhdGUgbmV3IHNpemUgb2JqZWN0IGFuZCBwZXJmb3JtIGJhc2ljIGluaXRpYWxpc2F0aW9uICovCisgICAgaWYgKCBGVF9BTExPQyggc2l6ZSwgY2xhenotPnNpemVfb2JqZWN0X3NpemUgKSB8fCBGVF9ORVcoIG5vZGUgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBzaXplLT5mYWNlID0gZmFjZTsKKworICAgIC8qIGZvciBub3csIGRvIG5vdCB1c2UgYW55IGludGVybmFsIGZpZWxkcyBpbiBzaXplIG9iamVjdHMgKi8KKyAgICBzaXplLT5pbnRlcm5hbCA9IDA7CisKKyAgICBpZiAoIGNsYXp6LT5pbml0X3NpemUgKQorICAgICAgZXJyb3IgPSBjbGF6ei0+aW5pdF9zaXplKCBzaXplICk7CisKKyAgICAvKiBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGFkZCB0byB0aGUgZmFjZSdzIGxpc3QgKi8KKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgKmFzaXplICAgICA9IHNpemU7CisgICAgICBub2RlLT5kYXRhID0gc2l6ZTsKKyAgICAgIEZUX0xpc3RfQWRkKCAmZmFjZS0+c2l6ZXNfbGlzdCwgbm9kZSApOworICAgIH0KKworICBFeGl0OgorICAgIGlmICggZXJyb3IgKQorICAgIHsKKyAgICAgIEZUX0ZSRUUoIG5vZGUgKTsKKyAgICAgIEZUX0ZSRUUoIHNpemUgKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRvYmpzLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0RvbmVfU2l6ZSggRlRfU2l6ZSAgc2l6ZSApCisgIHsKKyAgICBGVF9FcnJvciAgICAgZXJyb3I7CisgICAgRlRfRHJpdmVyICAgIGRyaXZlcjsKKyAgICBGVF9NZW1vcnkgICAgbWVtb3J5OworICAgIEZUX0ZhY2UgICAgICBmYWNlOworICAgIEZUX0xpc3ROb2RlICBub2RlOworCisKKyAgICBpZiAoICFzaXplICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9TaXplX0hhbmRsZSApOworCisgICAgZmFjZSA9IHNpemUtPmZhY2U7CisgICAgaWYgKCAhZmFjZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKworICAgIGRyaXZlciA9IGZhY2UtPmRyaXZlcjsKKyAgICBpZiAoICFkcml2ZXIgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0RyaXZlcl9IYW5kbGUgKTsKKworICAgIG1lbW9yeSA9IGRyaXZlci0+cm9vdC5tZW1vcnk7CisKKyAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBub2RlICA9IEZUX0xpc3RfRmluZCggJmZhY2UtPnNpemVzX2xpc3QsIHNpemUgKTsKKyAgICBpZiAoIG5vZGUgKQorICAgIHsKKyAgICAgIEZUX0xpc3RfUmVtb3ZlKCAmZmFjZS0+c2l6ZXNfbGlzdCwgbm9kZSApOworICAgICAgRlRfRlJFRSggbm9kZSApOworCisgICAgICBpZiAoIGZhY2UtPnNpemUgPT0gc2l6ZSApCisgICAgICB7CisgICAgICAgIGZhY2UtPnNpemUgPSAwOworICAgICAgICBpZiAoIGZhY2UtPnNpemVzX2xpc3QuaGVhZCApCisgICAgICAgICAgZmFjZS0+c2l6ZSA9IChGVF9TaXplKShmYWNlLT5zaXplc19saXN0LmhlYWQtPmRhdGEpOworICAgICAgfQorCisgICAgICBkZXN0cm95X3NpemUoIG1lbW9yeSwgc2l6ZSwgZHJpdmVyICk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfU2l6ZV9IYW5kbGUgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG9ianMuaCAqLworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIEZUX01hdGNoX1NpemUoIEZUX0ZhY2UgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEsCisgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICAgaWdub3JlX3dpZHRoLAorICAgICAgICAgICAgICAgICBGVF9VTG9uZyogICAgICAgIHNpemVfaW5kZXggKQorICB7CisgICAgRlRfSW50ICAgaTsKKyAgICBGVF9Mb25nICB3LCBoOworCisKKyAgICBpZiAoICFGVF9IQVNfRklYRURfU0laRVMoIGZhY2UgKSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKworICAgIC8qIEZUX0JpdG1hcF9TaXplIGRvZXNuJ3QgcHJvdmlkZSBlbm91Z2ggaW5mby4uLiAqLworICAgIGlmICggcmVxLT50eXBlICE9IEZUX1NJWkVfUkVRVUVTVF9UWVBFX05PTUlOQUwgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKTsKKworICAgIHcgPSBGVF9SRVFVRVNUX1dJRFRIICggcmVxICk7CisgICAgaCA9IEZUX1JFUVVFU1RfSEVJR0hUKCByZXEgKTsKKworICAgIGlmICggcmVxLT53aWR0aCAmJiAhcmVxLT5oZWlnaHQgKQorICAgICAgaCA9IHc7CisgICAgZWxzZSBpZiAoICFyZXEtPndpZHRoICYmIHJlcS0+aGVpZ2h0ICkKKyAgICAgIHcgPSBoOworCisgICAgdyA9IEZUX1BJWF9ST1VORCggdyApOworICAgIGggPSBGVF9QSVhfUk9VTkQoIGggKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgZmFjZS0+bnVtX2ZpeGVkX3NpemVzOyBpKysgKQorICAgIHsKKyAgICAgIEZUX0JpdG1hcF9TaXplKiAgYnNpemUgPSBmYWNlLT5hdmFpbGFibGVfc2l6ZXMgKyBpOworCisKKyAgICAgIGlmICggaCAhPSBGVF9QSVhfUk9VTkQoIGJzaXplLT55X3BwZW0gKSApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoIHcgPT0gRlRfUElYX1JPVU5EKCBic2l6ZS0+eF9wcGVtICkgfHwgaWdub3JlX3dpZHRoICkKKyAgICAgIHsKKyAgICAgICAgRlRfVFJBQ0UzKCggIkZUX01hdGNoX1NpemU6IGJpdG1hcCBzdHJpa2UgJWQgbWF0Y2hlc1xuIiwgaSApKTsKKworICAgICAgICBpZiAoIHNpemVfaW5kZXggKQorICAgICAgICAgICpzaXplX2luZGV4ID0gKEZUX1VMb25nKWk7CisKKyAgICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfUGl4ZWxfU2l6ZSApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0b2Jqcy5oICovCisKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBmdF9zeW50aGVzaXplX3ZlcnRpY2FsX21ldHJpY3MoIEZUX0dseXBoX01ldHJpY3MqICBtZXRyaWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgICAgICBhZHZhbmNlICkKKyAgeworICAgIEZUX1BvcyAgaGVpZ2h0ID0gbWV0cmljcy0+aGVpZ2h0OworCisKKyAgICAvKiBjb21wZW5zYXRlIGZvciBnbHlwaCB3aXRoIGJib3ggYWJvdmUvYmVsb3cgdGhlIGJhc2VsaW5lICovCisgICAgaWYgKCBtZXRyaWNzLT5ob3JpQmVhcmluZ1kgPCAwICkKKyAgICB7CisgICAgICBpZiAoIGhlaWdodCA8IG1ldHJpY3MtPmhvcmlCZWFyaW5nWSApCisgICAgICAgIGhlaWdodCA9IG1ldHJpY3MtPmhvcmlCZWFyaW5nWTsKKyAgICB9CisgICAgZWxzZSBpZiAoIG1ldHJpY3MtPmhvcmlCZWFyaW5nWSA+IDAgKQorICAgICAgaGVpZ2h0IC09IG1ldHJpY3MtPmhvcmlCZWFyaW5nWTsKKworICAgIC8qIHRoZSBmYWN0b3IgMS4yIGlzIGEgaGV1cmlzdGljYWwgdmFsdWUgKi8KKyAgICBpZiAoICFhZHZhbmNlICkKKyAgICAgIGFkdmFuY2UgPSBoZWlnaHQgKiAxMiAvIDEwOworCisgICAgbWV0cmljcy0+dmVydEJlYXJpbmdYID0gbWV0cmljcy0+aG9yaUJlYXJpbmdYIC0gbWV0cmljcy0+aG9yaUFkdmFuY2UgLyAyOworICAgIG1ldHJpY3MtPnZlcnRCZWFyaW5nWSA9ICggYWR2YW5jZSAtIGhlaWdodCApIC8gMjsKKyAgICBtZXRyaWNzLT52ZXJ0QWR2YW5jZSAgPSBhZHZhbmNlOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF9yZWNvbXB1dGVfc2NhbGVkX21ldHJpY3MoIEZUX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9NZXRyaWNzKiAgbWV0cmljcyApCisgIHsKKyAgICAvKiBDb21wdXRlIHJvb3QgYXNjZW5kZXIsIGRlc2NlbmRlciwgdGVzdCBoZWlnaHQsIGFuZCBtYXhfYWR2YW5jZSAqLworCisjaWZkZWYgR1JJRF9GSVRfTUVUUklDUworICAgIG1ldHJpY3MtPmFzY2VuZGVyICAgID0gRlRfUElYX0NFSUwoIEZUX011bEZpeCggZmFjZS0+YXNjZW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlICkgKTsKKworICAgIG1ldHJpY3MtPmRlc2NlbmRlciAgID0gRlRfUElYX0ZMT09SKCBGVF9NdWxGaXgoIGZhY2UtPmRlc2NlbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlICkgKTsKKworICAgIG1ldHJpY3MtPmhlaWdodCAgICAgID0gRlRfUElYX1JPVU5EKCBGVF9NdWxGaXgoIGZhY2UtPmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlICkgKTsKKworICAgIG1ldHJpY3MtPm1heF9hZHZhbmNlID0gRlRfUElYX1JPVU5EKCBGVF9NdWxGaXgoIGZhY2UtPm1heF9hZHZhbmNlX3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3MtPnhfc2NhbGUgKSApOworI2Vsc2UgLyogIUdSSURfRklUX01FVFJJQ1MgKi8KKyAgICBtZXRyaWNzLT5hc2NlbmRlciAgICA9IEZUX011bEZpeCggZmFjZS0+YXNjZW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3MtPnlfc2NhbGUgKTsKKworICAgIG1ldHJpY3MtPmRlc2NlbmRlciAgID0gRlRfTXVsRml4KCBmYWNlLT5kZXNjZW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3MtPnlfc2NhbGUgKTsKKworICAgIG1ldHJpY3MtPmhlaWdodCAgICAgID0gRlRfTXVsRml4KCBmYWNlLT5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3MtPnlfc2NhbGUgKTsKKworICAgIG1ldHJpY3MtPm1heF9hZHZhbmNlID0gRlRfTXVsRml4KCBmYWNlLT5tYXhfYWR2YW5jZV93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljcy0+eF9zY2FsZSApOworI2VuZGlmIC8qICFHUklEX0ZJVF9NRVRSSUNTICovCisgIH0KKworCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgRlRfU2VsZWN0X01ldHJpY3MoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHN0cmlrZV9pbmRleCApCisgIHsKKyAgICBGVF9TaXplX01ldHJpY3MqICBtZXRyaWNzOworICAgIEZUX0JpdG1hcF9TaXplKiAgIGJzaXplOworCisKKyAgICBtZXRyaWNzID0gJmZhY2UtPnNpemUtPm1ldHJpY3M7CisgICAgYnNpemUgICA9IGZhY2UtPmF2YWlsYWJsZV9zaXplcyArIHN0cmlrZV9pbmRleDsKKworICAgIG1ldHJpY3MtPnhfcHBlbSA9IChGVF9VU2hvcnQpKCAoIGJzaXplLT54X3BwZW0gKyAzMiApID4+IDYgKTsKKyAgICBtZXRyaWNzLT55X3BwZW0gPSAoRlRfVVNob3J0KSggKCBic2l6ZS0+eV9wcGVtICsgMzIgKSA+PiA2ICk7CisKKyAgICBpZiAoIEZUX0lTX1NDQUxBQkxFKCBmYWNlICkgKQorICAgIHsKKyAgICAgIG1ldHJpY3MtPnhfc2NhbGUgPSBGVF9EaXZGaXgoIGJzaXplLT54X3BwZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT51bml0c19wZXJfRU0gKTsKKyAgICAgIG1ldHJpY3MtPnlfc2NhbGUgPSBGVF9EaXZGaXgoIGJzaXplLT55X3BwZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT51bml0c19wZXJfRU0gKTsKKworICAgICAgZnRfcmVjb21wdXRlX3NjYWxlZF9tZXRyaWNzKCBmYWNlLCBtZXRyaWNzICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBtZXRyaWNzLT54X3NjYWxlICAgICA9IDFMIDw8IDE2OworICAgICAgbWV0cmljcy0+eV9zY2FsZSAgICAgPSAxTCA8PCAxNjsKKyAgICAgIG1ldHJpY3MtPmFzY2VuZGVyICAgID0gYnNpemUtPnlfcHBlbTsKKyAgICAgIG1ldHJpY3MtPmRlc2NlbmRlciAgID0gMDsKKyAgICAgIG1ldHJpY3MtPmhlaWdodCAgICAgID0gYnNpemUtPmhlaWdodCA8PCA2OworICAgICAgbWV0cmljcy0+bWF4X2FkdmFuY2UgPSBic2l6ZS0+eF9wcGVtOworICAgIH0KKworICAgIEZUX1RSQUNFNSgoICJGVF9TZWxlY3RfTWV0cmljczpcbiIgKSk7CisgICAgRlRfVFJBQ0U1KCggIiAgeCBzY2FsZTogJWQgKCVmKVxuIiwKKyAgICAgICAgICAgICAgICBtZXRyaWNzLT54X3NjYWxlLCBtZXRyaWNzLT54X3NjYWxlIC8gNjU1MzYuMCApKTsKKyAgICBGVF9UUkFDRTUoKCAiICB5IHNjYWxlOiAlZCAoJWYpXG4iLAorICAgICAgICAgICAgICAgIG1ldHJpY3MtPnlfc2NhbGUsIG1ldHJpY3MtPnlfc2NhbGUgLyA2NTUzNi4wICkpOworICAgIEZUX1RSQUNFNSgoICIgIGFzY2VuZGVyOiAlZlxuIiwgICAgbWV0cmljcy0+YXNjZW5kZXIgLyA2NC4wICkpOworICAgIEZUX1RSQUNFNSgoICIgIGRlc2NlbmRlcjogJWZcbiIsICAgbWV0cmljcy0+ZGVzY2VuZGVyIC8gNjQuMCApKTsKKyAgICBGVF9UUkFDRTUoKCAiICBoZWlnaHQ6ICVmXG4iLCAgICAgIG1ldHJpY3MtPmhlaWdodCAvIDY0LjAgKSk7CisgICAgRlRfVFJBQ0U1KCggIiAgbWF4IGFkdmFuY2U6ICVmXG4iLCBtZXRyaWNzLT5tYXhfYWR2YW5jZSAvIDY0LjAgKSk7CisgICAgRlRfVFJBQ0U1KCggIiAgeCBwcGVtOiAlZFxuIiwgICAgICBtZXRyaWNzLT54X3BwZW0gKSk7CisgICAgRlRfVFJBQ0U1KCggIiAgeSBwcGVtOiAlZFxuIiwgICAgICBtZXRyaWNzLT55X3BwZW0gKSk7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgRlRfUmVxdWVzdF9NZXRyaWNzKCBGVF9GYWNlICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEgKQorICB7CisgICAgRlRfU2l6ZV9NZXRyaWNzKiAgbWV0cmljczsKKworCisgICAgbWV0cmljcyA9ICZmYWNlLT5zaXplLT5tZXRyaWNzOworCisgICAgaWYgKCBGVF9JU19TQ0FMQUJMRSggZmFjZSApICkKKyAgICB7CisgICAgICBGVF9Mb25nICB3ID0gMCwgaCA9IDAsIHNjYWxlZF93ID0gMCwgc2NhbGVkX2ggPSAwOworCisKKyAgICAgIHN3aXRjaCAoIHJlcS0+dHlwZSApCisgICAgICB7CisgICAgICBjYXNlIEZUX1NJWkVfUkVRVUVTVF9UWVBFX05PTUlOQUw6CisgICAgICAgIHcgPSBoID0gZmFjZS0+dW5pdHNfcGVyX0VNOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBGVF9TSVpFX1JFUVVFU1RfVFlQRV9SRUFMX0RJTToKKyAgICAgICAgdyA9IGggPSBmYWNlLT5hc2NlbmRlciAtIGZhY2UtPmRlc2NlbmRlcjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRlRfU0laRV9SRVFVRVNUX1RZUEVfQkJPWDoKKyAgICAgICAgdyA9IGZhY2UtPmJib3gueE1heCAtIGZhY2UtPmJib3gueE1pbjsKKyAgICAgICAgaCA9IGZhY2UtPmJib3gueU1heCAtIGZhY2UtPmJib3gueU1pbjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRlRfU0laRV9SRVFVRVNUX1RZUEVfQ0VMTDoKKyAgICAgICAgdyA9IGZhY2UtPm1heF9hZHZhbmNlX3dpZHRoOworICAgICAgICBoID0gZmFjZS0+YXNjZW5kZXIgLSBmYWNlLT5kZXNjZW5kZXI7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEZUX1NJWkVfUkVRVUVTVF9UWVBFX1NDQUxFUzoKKyAgICAgICAgbWV0cmljcy0+eF9zY2FsZSA9IChGVF9GaXhlZClyZXEtPndpZHRoOworICAgICAgICBtZXRyaWNzLT55X3NjYWxlID0gKEZUX0ZpeGVkKXJlcS0+aGVpZ2h0OworICAgICAgICBpZiAoICFtZXRyaWNzLT54X3NjYWxlICkKKyAgICAgICAgICBtZXRyaWNzLT54X3NjYWxlID0gbWV0cmljcy0+eV9zY2FsZTsKKyAgICAgICAgZWxzZSBpZiAoICFtZXRyaWNzLT55X3NjYWxlICkKKyAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlID0gbWV0cmljcy0+eF9zY2FsZTsKKyAgICAgICAgZ290byBDYWxjdWxhdGVfUHBlbTsKKworICAgICAgY2FzZSBGVF9TSVpFX1JFUVVFU1RfVFlQRV9NQVg6CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICAvKiB0byBiZSBvbiB0aGUgc2FmZSBzaWRlICovCisgICAgICBpZiAoIHcgPCAwICkKKyAgICAgICAgdyA9IC13OworCisgICAgICBpZiAoIGggPCAwICkKKyAgICAgICAgaCA9IC1oOworCisgICAgICBzY2FsZWRfdyA9IEZUX1JFUVVFU1RfV0lEVEggKCByZXEgKTsKKyAgICAgIHNjYWxlZF9oID0gRlRfUkVRVUVTVF9IRUlHSFQoIHJlcSApOworCisgICAgICAvKiBkZXRlcm1pbmUgc2NhbGVzICovCisgICAgICBpZiAoIHJlcS0+d2lkdGggKQorICAgICAgeworICAgICAgICBtZXRyaWNzLT54X3NjYWxlID0gRlRfRGl2Rml4KCBzY2FsZWRfdywgdyApOworCisgICAgICAgIGlmICggcmVxLT5oZWlnaHQgKQorICAgICAgICB7CisgICAgICAgICAgbWV0cmljcy0+eV9zY2FsZSA9IEZUX0RpdkZpeCggc2NhbGVkX2gsIGggKTsKKworICAgICAgICAgIGlmICggcmVxLT50eXBlID09IEZUX1NJWkVfUkVRVUVTVF9UWVBFX0NFTEwgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggbWV0cmljcy0+eV9zY2FsZSA+IG1ldHJpY3MtPnhfc2NhbGUgKQorICAgICAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlID0gbWV0cmljcy0+eF9zY2FsZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgbWV0cmljcy0+eF9zY2FsZSA9IG1ldHJpY3MtPnlfc2NhbGU7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIG1ldHJpY3MtPnlfc2NhbGUgPSBtZXRyaWNzLT54X3NjYWxlOworICAgICAgICAgIHNjYWxlZF9oID0gRlRfTXVsRGl2KCBzY2FsZWRfdywgaCwgdyApOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIG1ldHJpY3MtPnhfc2NhbGUgPSBtZXRyaWNzLT55X3NjYWxlID0gRlRfRGl2Rml4KCBzY2FsZWRfaCwgaCApOworICAgICAgICBzY2FsZWRfdyA9IEZUX011bERpdiggc2NhbGVkX2gsIHcsIGggKTsKKyAgICAgIH0KKworICBDYWxjdWxhdGVfUHBlbToKKyAgICAgIC8qIGNhbGN1bGF0ZSB0aGUgcHBlbXMgKi8KKyAgICAgIGlmICggcmVxLT50eXBlICE9IEZUX1NJWkVfUkVRVUVTVF9UWVBFX05PTUlOQUwgKQorICAgICAgeworICAgICAgICBzY2FsZWRfdyA9IEZUX011bEZpeCggZmFjZS0+dW5pdHNfcGVyX0VNLCBtZXRyaWNzLT54X3NjYWxlICk7CisgICAgICAgIHNjYWxlZF9oID0gRlRfTXVsRml4KCBmYWNlLT51bml0c19wZXJfRU0sIG1ldHJpY3MtPnlfc2NhbGUgKTsKKyAgICAgIH0KKworICAgICAgbWV0cmljcy0+eF9wcGVtID0gKEZUX1VTaG9ydCkoICggc2NhbGVkX3cgKyAzMiApID4+IDYgKTsKKyAgICAgIG1ldHJpY3MtPnlfcHBlbSA9IChGVF9VU2hvcnQpKCAoIHNjYWxlZF9oICsgMzIgKSA+PiA2ICk7CisKKyAgICAgIGZ0X3JlY29tcHV0ZV9zY2FsZWRfbWV0cmljcyggZmFjZSwgbWV0cmljcyApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgRlRfWkVSTyggbWV0cmljcyApOworICAgICAgbWV0cmljcy0+eF9zY2FsZSA9IDFMIDw8IDE2OworICAgICAgbWV0cmljcy0+eV9zY2FsZSA9IDFMIDw8IDE2OworICAgIH0KKworICAgIEZUX1RSQUNFNSgoICJGVF9SZXF1ZXN0X01ldHJpY3M6XG4iICkpOworICAgIEZUX1RSQUNFNSgoICIgIHggc2NhbGU6ICVkICglZilcbiIsCisgICAgICAgICAgICAgICAgbWV0cmljcy0+eF9zY2FsZSwgbWV0cmljcy0+eF9zY2FsZSAvIDY1NTM2LjAgKSk7CisgICAgRlRfVFJBQ0U1KCggIiAgeSBzY2FsZTogJWQgKCVmKVxuIiwKKyAgICAgICAgICAgICAgICBtZXRyaWNzLT55X3NjYWxlLCBtZXRyaWNzLT55X3NjYWxlIC8gNjU1MzYuMCApKTsKKyAgICBGVF9UUkFDRTUoKCAiICBhc2NlbmRlcjogJWZcbiIsICAgIG1ldHJpY3MtPmFzY2VuZGVyIC8gNjQuMCApKTsKKyAgICBGVF9UUkFDRTUoKCAiICBkZXNjZW5kZXI6ICVmXG4iLCAgIG1ldHJpY3MtPmRlc2NlbmRlciAvIDY0LjAgKSk7CisgICAgRlRfVFJBQ0U1KCggIiAgaGVpZ2h0OiAlZlxuIiwgICAgICBtZXRyaWNzLT5oZWlnaHQgLyA2NC4wICkpOworICAgIEZUX1RSQUNFNSgoICIgIG1heCBhZHZhbmNlOiAlZlxuIiwgbWV0cmljcy0+bWF4X2FkdmFuY2UgLyA2NC4wICkpOworICAgIEZUX1RSQUNFNSgoICIgIHggcHBlbTogJWRcbiIsICAgICAgbWV0cmljcy0+eF9wcGVtICkpOworICAgIEZUX1RSQUNFNSgoICIgIHkgcHBlbTogJWRcbiIsICAgICAgbWV0cmljcy0+eV9wcGVtICkpOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1NlbGVjdF9TaXplKCBGVF9GYWNlICBmYWNlLAorICAgICAgICAgICAgICAgICAgRlRfSW50ICAgc3RyaWtlX2luZGV4ICkKKyAgeworICAgIEZUX0RyaXZlcl9DbGFzcyAgY2xheno7CisKKworICAgIGlmICggIWZhY2UgfHwgIUZUX0hBU19GSVhFRF9TSVpFUyggZmFjZSApICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9GYWNlX0hhbmRsZSApOworCisgICAgaWYgKCBzdHJpa2VfaW5kZXggPCAwIHx8IHN0cmlrZV9pbmRleCA+PSBmYWNlLT5udW1fZml4ZWRfc2l6ZXMgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBjbGF6eiA9IGZhY2UtPmRyaXZlci0+Y2xheno7CisKKyAgICBpZiAoIGNsYXp6LT5zZWxlY3Rfc2l6ZSApCisgICAgeworICAgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICAgIGVycm9yID0gY2xhenotPnNlbGVjdF9zaXplKCBmYWNlLT5zaXplLCAoRlRfVUxvbmcpc3RyaWtlX2luZGV4ICk7CisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorICAgICAgeworICAgICAgICBGVF9TaXplX01ldHJpY3MqICBtZXRyaWNzID0gJmZhY2UtPnNpemUtPm1ldHJpY3M7CisKKworICAgICAgICBGVF9UUkFDRTUoKCAiRlRfU2VsZWN0X1NpemUgKGZvbnQgZHJpdmVyJ3MgYHNlbGVjdF9zaXplJyk6XG4iICkpOworICAgICAgICBGVF9UUkFDRTUoKCAiICB4IHNjYWxlOiAlZCAoJWYpXG4iLAorICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLT54X3NjYWxlLCBtZXRyaWNzLT54X3NjYWxlIC8gNjU1MzYuMCApKTsKKyAgICAgICAgRlRfVFJBQ0U1KCggIiAgeSBzY2FsZTogJWQgKCVmKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgbWV0cmljcy0+eV9zY2FsZSwgbWV0cmljcy0+eV9zY2FsZSAvIDY1NTM2LjAgKSk7CisgICAgICAgIEZUX1RSQUNFNSgoICIgIGFzY2VuZGVyOiAlZlxuIiwgICAgbWV0cmljcy0+YXNjZW5kZXIgLyA2NC4wICkpOworICAgICAgICBGVF9UUkFDRTUoKCAiICBkZXNjZW5kZXI6ICVmXG4iLCAgIG1ldHJpY3MtPmRlc2NlbmRlciAvIDY0LjAgKSk7CisgICAgICAgIEZUX1RSQUNFNSgoICIgIGhlaWdodDogJWZcbiIsICAgICAgbWV0cmljcy0+aGVpZ2h0IC8gNjQuMCApKTsKKyAgICAgICAgRlRfVFJBQ0U1KCggIiAgbWF4IGFkdmFuY2U6ICVmXG4iLCBtZXRyaWNzLT5tYXhfYWR2YW5jZSAvIDY0LjAgKSk7CisgICAgICAgIEZUX1RSQUNFNSgoICIgIHggcHBlbTogJWRcbiIsICAgICAgbWV0cmljcy0+eF9wcGVtICkpOworICAgICAgICBGVF9UUkFDRTUoKCAiICB5IHBwZW06ICVkXG4iLCAgICAgIG1ldHJpY3MtPnlfcHBlbSApKTsKKyAgICAgIH0KKyNlbmRpZgorCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgRlRfU2VsZWN0X01ldHJpY3MoIGZhY2UsIChGVF9VTG9uZylzdHJpa2VfaW5kZXggKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfUmVxdWVzdF9TaXplKCBGVF9GYWNlICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEgKQorICB7CisgICAgRlRfRHJpdmVyX0NsYXNzICBjbGF6ejsKKyAgICBGVF9VTG9uZyAgICAgICAgIHN0cmlrZV9pbmRleDsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKworICAgIGlmICggIXJlcSB8fCByZXEtPndpZHRoIDwgMCB8fCByZXEtPmhlaWdodCA8IDAgfHwKKyAgICAgICAgIHJlcS0+dHlwZSA+PSBGVF9TSVpFX1JFUVVFU1RfVFlQRV9NQVggKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBjbGF6eiA9IGZhY2UtPmRyaXZlci0+Y2xheno7CisKKyAgICBpZiAoIGNsYXp6LT5yZXF1ZXN0X3NpemUgKQorICAgIHsKKyAgICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgICBlcnJvciA9IGNsYXp6LT5yZXF1ZXN0X3NpemUoIGZhY2UtPnNpemUsIHJlcSApOworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKyAgICAgIHsKKyAgICAgICAgRlRfU2l6ZV9NZXRyaWNzKiAgbWV0cmljcyA9ICZmYWNlLT5zaXplLT5tZXRyaWNzOworCisKKyAgICAgICAgRlRfVFJBQ0U1KCggIkZUX1JlcXVlc3RfU2l6ZSAoZm9udCBkcml2ZXIncyBgcmVxdWVzdF9zaXplJyk6XG4iICkpOworICAgICAgICBGVF9UUkFDRTUoKCAiICB4IHNjYWxlOiAlZCAoJWYpXG4iLAorICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLT54X3NjYWxlLCBtZXRyaWNzLT54X3NjYWxlIC8gNjU1MzYuMCApKTsKKyAgICAgICAgRlRfVFJBQ0U1KCggIiAgeSBzY2FsZTogJWQgKCVmKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgbWV0cmljcy0+eV9zY2FsZSwgbWV0cmljcy0+eV9zY2FsZSAvIDY1NTM2LjAgKSk7CisgICAgICAgIEZUX1RSQUNFNSgoICIgIGFzY2VuZGVyOiAlZlxuIiwgICAgbWV0cmljcy0+YXNjZW5kZXIgLyA2NC4wICkpOworICAgICAgICBGVF9UUkFDRTUoKCAiICBkZXNjZW5kZXI6ICVmXG4iLCAgIG1ldHJpY3MtPmRlc2NlbmRlciAvIDY0LjAgKSk7CisgICAgICAgIEZUX1RSQUNFNSgoICIgIGhlaWdodDogJWZcbiIsICAgICAgbWV0cmljcy0+aGVpZ2h0IC8gNjQuMCApKTsKKyAgICAgICAgRlRfVFJBQ0U1KCggIiAgbWF4IGFkdmFuY2U6ICVmXG4iLCBtZXRyaWNzLT5tYXhfYWR2YW5jZSAvIDY0LjAgKSk7CisgICAgICAgIEZUX1RSQUNFNSgoICIgIHggcHBlbTogJWRcbiIsICAgICAgbWV0cmljcy0+eF9wcGVtICkpOworICAgICAgICBGVF9UUkFDRTUoKCAiICB5IHBwZW06ICVkXG4iLCAgICAgIG1ldHJpY3MtPnlfcHBlbSApKTsKKyAgICAgIH0KKyNlbmRpZgorCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUaGUgcmVhc29uIHRoYXQgYSBkcml2ZXIgZG9lc24ndCBoYXZlIGByZXF1ZXN0X3NpemUnIGRlZmluZWQgaXMKKyAgICAgKiBlaXRoZXIgdGhhdCB0aGUgc2NhbGluZyBoZXJlIHN1ZmZpY2VzIG9yIHRoYXQgdGhlIHN1cHBvcnRlZCBmb3JtYXRzCisgICAgICogYXJlIGJpdG1hcC1vbmx5IGFuZCBzaXplIG1hdGNoaW5nIGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgKgorICAgICAqIEluIHRoZSBsYXR0ZXIgY2FzZSwgYSBzaW1wbGUgc2l6ZSBtYXRjaGluZyBpcyBkb25lLgorICAgICAqLworICAgIGlmICggIUZUX0lTX1NDQUxBQkxFKCBmYWNlICkgJiYgRlRfSEFTX0ZJWEVEX1NJWkVTKCBmYWNlICkgKQorICAgIHsKKyAgICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgICBlcnJvciA9IEZUX01hdGNoX1NpemUoIGZhY2UsIHJlcSwgMCwgJnN0cmlrZV9pbmRleCApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIHJldHVybiBlcnJvcjsKKworICAgICAgcmV0dXJuIEZUX1NlbGVjdF9TaXplKCBmYWNlLCAoRlRfSW50KXN0cmlrZV9pbmRleCApOworICAgIH0KKworICAgIEZUX1JlcXVlc3RfTWV0cmljcyggZmFjZSwgcmVxICk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1NldF9DaGFyX1NpemUoIEZUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIGNoYXJfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIGNoYXJfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBob3J6X3Jlc29sdXRpb24sCisgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHZlcnRfcmVzb2x1dGlvbiApCisgIHsKKyAgICBGVF9TaXplX1JlcXVlc3RSZWMgIHJlcTsKKworCisgICAgaWYgKCAhY2hhcl93aWR0aCApCisgICAgICBjaGFyX3dpZHRoID0gY2hhcl9oZWlnaHQ7CisgICAgZWxzZSBpZiAoICFjaGFyX2hlaWdodCApCisgICAgICBjaGFyX2hlaWdodCA9IGNoYXJfd2lkdGg7CisKKyAgICBpZiAoICFob3J6X3Jlc29sdXRpb24gKQorICAgICAgaG9yel9yZXNvbHV0aW9uID0gdmVydF9yZXNvbHV0aW9uOworICAgIGVsc2UgaWYgKCAhdmVydF9yZXNvbHV0aW9uICkKKyAgICAgIHZlcnRfcmVzb2x1dGlvbiA9IGhvcnpfcmVzb2x1dGlvbjsKKworICAgIGlmICggY2hhcl93aWR0aCAgPCAxICogNjQgKQorICAgICAgY2hhcl93aWR0aCAgPSAxICogNjQ7CisgICAgaWYgKCBjaGFyX2hlaWdodCA8IDEgKiA2NCApCisgICAgICBjaGFyX2hlaWdodCA9IDEgKiA2NDsKKworICAgIGlmICggIWhvcnpfcmVzb2x1dGlvbiApCisgICAgICBob3J6X3Jlc29sdXRpb24gPSB2ZXJ0X3Jlc29sdXRpb24gPSA3MjsKKworICAgIHJlcS50eXBlICAgICAgICAgICA9IEZUX1NJWkVfUkVRVUVTVF9UWVBFX05PTUlOQUw7CisgICAgcmVxLndpZHRoICAgICAgICAgID0gY2hhcl93aWR0aDsKKyAgICByZXEuaGVpZ2h0ICAgICAgICAgPSBjaGFyX2hlaWdodDsKKyAgICByZXEuaG9yaVJlc29sdXRpb24gPSBob3J6X3Jlc29sdXRpb247CisgICAgcmVxLnZlcnRSZXNvbHV0aW9uID0gdmVydF9yZXNvbHV0aW9uOworCisgICAgcmV0dXJuIEZUX1JlcXVlc3RfU2l6ZSggZmFjZSwgJnJlcSApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1NldF9QaXhlbF9TaXplcyggRlRfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBwaXhlbF93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBwaXhlbF9oZWlnaHQgKQorICB7CisgICAgRlRfU2l6ZV9SZXF1ZXN0UmVjICByZXE7CisKKworICAgIGlmICggcGl4ZWxfd2lkdGggPT0gMCApCisgICAgICBwaXhlbF93aWR0aCA9IHBpeGVsX2hlaWdodDsKKyAgICBlbHNlIGlmICggcGl4ZWxfaGVpZ2h0ID09IDAgKQorICAgICAgcGl4ZWxfaGVpZ2h0ID0gcGl4ZWxfd2lkdGg7CisKKyAgICBpZiAoIHBpeGVsX3dpZHRoICA8IDEgKQorICAgICAgcGl4ZWxfd2lkdGggID0gMTsKKyAgICBpZiAoIHBpeGVsX2hlaWdodCA8IDEgKQorICAgICAgcGl4ZWxfaGVpZ2h0ID0gMTsKKworICAgIC8qIHVzZSBgPj0nIHRvIGF2b2lkIHBvdGVudGlhbCBjb21waWxlciB3YXJuaW5nIG9uIDE2Yml0IHBsYXRmb3JtcyAqLworICAgIGlmICggcGl4ZWxfd2lkdGggID49IDB4RkZGRlUgKQorICAgICAgcGl4ZWxfd2lkdGggID0gMHhGRkZGVTsKKyAgICBpZiAoIHBpeGVsX2hlaWdodCA+PSAweEZGRkZVICkKKyAgICAgIHBpeGVsX2hlaWdodCA9IDB4RkZGRlU7CisKKyAgICByZXEudHlwZSAgICAgICAgICAgPSBGVF9TSVpFX1JFUVVFU1RfVFlQRV9OT01JTkFMOworICAgIHJlcS53aWR0aCAgICAgICAgICA9IHBpeGVsX3dpZHRoIDw8IDY7CisgICAgcmVxLmhlaWdodCAgICAgICAgID0gcGl4ZWxfaGVpZ2h0IDw8IDY7CisgICAgcmVxLmhvcmlSZXNvbHV0aW9uID0gMDsKKyAgICByZXEudmVydFJlc29sdXRpb24gPSAwOworCisgICAgcmV0dXJuIEZUX1JlcXVlc3RfU2l6ZSggZmFjZSwgJnJlcSApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldF9LZXJuaW5nKCBGVF9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgbGVmdF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHJpZ2h0X2dseXBoLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAga2Vybl9tb2RlLAorICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yICAqYWtlcm5pbmcgKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9Ecml2ZXIgIGRyaXZlcjsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKworICAgIGlmICggIWFrZXJuaW5nICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgZHJpdmVyID0gZmFjZS0+ZHJpdmVyOworCisgICAgYWtlcm5pbmctPnggPSAwOworICAgIGFrZXJuaW5nLT55ID0gMDsKKworICAgIGlmICggZHJpdmVyLT5jbGF6ei0+Z2V0X2tlcm5pbmcgKQorICAgIHsKKyAgICAgIGVycm9yID0gZHJpdmVyLT5jbGF6ei0+Z2V0X2tlcm5pbmcoIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0X2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRfZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBha2VybmluZyApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgeworICAgICAgICBpZiAoIGtlcm5fbW9kZSAhPSBGVF9LRVJOSU5HX1VOU0NBTEVEICkKKyAgICAgICAgeworICAgICAgICAgIGFrZXJuaW5nLT54ID0gRlRfTXVsRml4KCBha2VybmluZy0+eCwgZmFjZS0+c2l6ZS0+bWV0cmljcy54X3NjYWxlICk7CisgICAgICAgICAgYWtlcm5pbmctPnkgPSBGVF9NdWxGaXgoIGFrZXJuaW5nLT55LCBmYWNlLT5zaXplLT5tZXRyaWNzLnlfc2NhbGUgKTsKKworICAgICAgICAgIGlmICgga2Vybl9tb2RlICE9IEZUX0tFUk5JTkdfVU5GSVRURUQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIHdlIHNjYWxlIGRvd24ga2VybmluZyB2YWx1ZXMgZm9yIHNtYWxsIHBwZW0gdmFsdWVzICovCisgICAgICAgICAgICAvKiB0byBhdm9pZCB0aGF0IHJvdW5kaW5nIG1ha2VzIHRoZW0gdG9vIGJpZy4gICAgICAgICAqLworICAgICAgICAgICAgLyogYDI1JyBoYXMgYmVlbiBkZXRlcm1pbmVkIGhldXJpc3RpY2FsbHkuICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICggZmFjZS0+c2l6ZS0+bWV0cmljcy54X3BwZW0gPCAyNSApCisgICAgICAgICAgICAgIGFrZXJuaW5nLT54ID0gRlRfTXVsRGl2KCBha2VybmluZy0+eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPnNpemUtPm1ldHJpY3MueF9wcGVtLCAyNSApOworICAgICAgICAgICAgaWYgKCBmYWNlLT5zaXplLT5tZXRyaWNzLnlfcHBlbSA8IDI1ICkKKyAgICAgICAgICAgICAgYWtlcm5pbmctPnkgPSBGVF9NdWxEaXYoIGFrZXJuaW5nLT55LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+c2l6ZS0+bWV0cmljcy55X3BwZW0sIDI1ICk7CisKKyAgICAgICAgICAgIGFrZXJuaW5nLT54ID0gRlRfUElYX1JPVU5EKCBha2VybmluZy0+eCApOworICAgICAgICAgICAgYWtlcm5pbmctPnkgPSBGVF9QSVhfUk9VTkQoIGFrZXJuaW5nLT55ICk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldF9UcmFja19LZXJuaW5nKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgIHBvaW50X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGRlZ3JlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgYWtlcm5pbmcgKQorICB7CisgICAgRlRfU2VydmljZV9LZXJuaW5nICBzZXJ2aWNlOworICAgIEZUX0Vycm9yICAgICAgICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0ZhY2VfSGFuZGxlICk7CisKKyAgICBpZiAoICFha2VybmluZyApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBLRVJOSU5HICk7CisgICAgaWYgKCAhc2VydmljZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApOworCisgICAgZXJyb3IgPSBzZXJ2aWNlLT5nZXRfdHJhY2soIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZ3JlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWtlcm5pbmcgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9TZWxlY3RfQ2hhcm1hcCggRlRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9FbmNvZGluZyAgZW5jb2RpbmcgKQorICB7CisgICAgRlRfQ2hhck1hcCogIGN1cjsKKyAgICBGVF9DaGFyTWFwKiAgbGltaXQ7CisKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0ZhY2VfSGFuZGxlICk7CisKKyAgICBpZiAoIGVuY29kaW5nID09IEZUX0VOQ09ESU5HX05PTkUgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICAvKiBGVF9FTkNPRElOR19VTklDT0RFIGlzIHNwZWNpYWwuICBXZSB0cnkgdG8gZmluZCB0aGUgYGJlc3QnIFVuaWNvZGUgKi8KKyAgICAvKiBjaGFybWFwIGF2YWlsYWJsZSwgaS5lLiwgb25lIHdpdGggVUNTLTQgY2hhcmFjdGVycywgaWYgcG9zc2libGUuICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBUaGlzIGlzIGRvbmUgYnkgZmluZF91bmljb2RlX2NoYXJtYXAoKSBhYm92ZSwgdG8gc2hhcmUgY29kZS4gICAgICAgKi8KKyAgICBpZiAoIGVuY29kaW5nID09IEZUX0VOQ09ESU5HX1VOSUNPREUgKQorICAgICAgcmV0dXJuIGZpbmRfdW5pY29kZV9jaGFybWFwKCBmYWNlICk7CisKKyAgICBjdXIgPSBmYWNlLT5jaGFybWFwczsKKyAgICBpZiAoICFjdXIgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0NoYXJNYXBfSGFuZGxlICk7CisKKyAgICBsaW1pdCA9IGN1ciArIGZhY2UtPm51bV9jaGFybWFwczsKKworICAgIGZvciAoIDsgY3VyIDwgbGltaXQ7IGN1cisrICkKKyAgICB7CisgICAgICBpZiAoIGN1clswXS0+ZW5jb2RpbmcgPT0gZW5jb2RpbmcgKQorICAgICAgeworI2lmZGVmIEZUX01BWF9DSEFSTUFQX0NBQ0hFQUJMRQorICAgICAgICBpZiAoIGN1ciAtIGZhY2UtPmNoYXJtYXBzID4gRlRfTUFYX0NIQVJNQVBfQ0FDSEVBQkxFICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0VSUk9SKCggIkZUX1NlbGVjdF9DaGFybWFwOiByZXF1ZXN0ZWQgY2hhcm1hcCBpcyBmb3VuZCAoJWQpLCAiCisgICAgICAgICAgICAgICAgICAgICAiYnV0IGluIHRvbyBsYXRlIHBvc2l0aW9uIHRvIGNhY2hlXG4iLAorICAgICAgICAgICAgICAgICAgICAgY3VyIC0gZmFjZS0+Y2hhcm1hcHMgKSk7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBmYWNlLT5jaGFybWFwID0gY3VyWzBdOworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9TZXRfQ2hhcm1hcCggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgIEZUX0NoYXJNYXAgIGNoYXJtYXAgKQorICB7CisgICAgRlRfQ2hhck1hcCogIGN1cjsKKyAgICBGVF9DaGFyTWFwKiAgbGltaXQ7CisKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0ZhY2VfSGFuZGxlICk7CisKKyAgICBjdXIgPSBmYWNlLT5jaGFybWFwczsKKyAgICBpZiAoICFjdXIgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0NoYXJNYXBfSGFuZGxlICk7CisgICAgaWYgKCBGVF9HZXRfQ01hcF9Gb3JtYXQoIGNoYXJtYXAgKSA9PSAxNCApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGxpbWl0ID0gY3VyICsgZmFjZS0+bnVtX2NoYXJtYXBzOworCisgICAgZm9yICggOyBjdXIgPCBsaW1pdDsgY3VyKysgKQorICAgIHsKKyAgICAgIGlmICggY3VyWzBdID09IGNoYXJtYXAgKQorICAgICAgeworI2lmZGVmIEZUX01BWF9DSEFSTUFQX0NBQ0hFQUJMRQorICAgICAgICBpZiAoIGN1ciAtIGZhY2UtPmNoYXJtYXBzID4gRlRfTUFYX0NIQVJNQVBfQ0FDSEVBQkxFICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0VSUk9SKCggIkZUX1NldF9DaGFybWFwOiByZXF1ZXN0ZWQgY2hhcm1hcCBpcyBmb3VuZCAoJWQpLCAiCisgICAgICAgICAgICAgICAgICAgICAiYnV0IGluIHRvbyBsYXRlIHBvc2l0aW9uIHRvIGNhY2hlXG4iLAorICAgICAgICAgICAgICAgICAgICAgY3VyIC0gZmFjZS0+Y2hhcm1hcHMgKSk7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBmYWNlLT5jaGFybWFwID0gY3VyWzBdOworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0ludCApCisgIEZUX0dldF9DaGFybWFwX0luZGV4KCBGVF9DaGFyTWFwICBjaGFybWFwICkKKyAgeworICAgIEZUX0ludCAgaTsKKworCisgICAgaWYgKCAhY2hhcm1hcCB8fCAhY2hhcm1hcC0+ZmFjZSApCisgICAgICByZXR1cm4gLTE7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGNoYXJtYXAtPmZhY2UtPm51bV9jaGFybWFwczsgaSsrICkKKyAgICAgIGlmICggY2hhcm1hcC0+ZmFjZS0+Y2hhcm1hcHNbaV0gPT0gY2hhcm1hcCApCisgICAgICAgIGJyZWFrOworCisgICAgRlRfQVNTRVJUKCBpIDwgY2hhcm1hcC0+ZmFjZS0+bnVtX2NoYXJtYXBzICk7CisKKyNpZmRlZiBGVF9NQVhfQ0hBUk1BUF9DQUNIRUFCTEUKKyAgICBpZiAoIGkgPiBGVF9NQVhfQ0hBUk1BUF9DQUNIRUFCTEUgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggIkZUX0dldF9DaGFybWFwX0luZGV4OiByZXF1ZXN0ZWQgY2hhcm1hcCBpcyBmb3VuZCAoJWQpLCAiCisgICAgICAgICAgICAgICAgICJidXQgaW4gdG9vIGxhdGUgcG9zaXRpb24gdG8gY2FjaGVcbiIsCisgICAgICAgICAgICAgICAgIGkgKSk7CisgICAgICByZXR1cm4gLWk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGk7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X2NtYXBfZG9uZV9pbnRlcm5hbCggRlRfQ01hcCAgY21hcCApCisgIHsKKyAgICBGVF9DTWFwX0NsYXNzICBjbGF6eiAgPSBjbWFwLT5jbGF6ejsKKyAgICBGVF9GYWNlICAgICAgICBmYWNlICAgPSBjbWFwLT5jaGFybWFwLmZhY2U7CisgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5ID0gRlRfRkFDRV9NRU1PUlkoIGZhY2UgKTsKKworCisgICAgaWYgKCBjbGF6ei0+ZG9uZSApCisgICAgICBjbGF6ei0+ZG9uZSggY21hcCApOworCisgICAgRlRfRlJFRSggY21hcCApOworICB9CisKKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX0NNYXBfRG9uZSggRlRfQ01hcCAgY21hcCApCisgIHsKKyAgICBpZiAoIGNtYXAgKQorICAgIHsKKyAgICAgIEZUX0ZhY2UgICAgZmFjZSAgID0gY21hcC0+Y2hhcm1hcC5mYWNlOworICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBGVF9GQUNFX01FTU9SWSggZmFjZSApOworICAgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICAgIEZUX0ludCAgICAgaSwgajsKKworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IGZhY2UtPm51bV9jaGFybWFwczsgaSsrICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCAoRlRfQ01hcClmYWNlLT5jaGFybWFwc1tpXSA9PSBjbWFwICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0NoYXJNYXAgIGxhc3RfY2hhcm1hcCA9IGZhY2UtPmNoYXJtYXBzW2ZhY2UtPm51bV9jaGFybWFwcyAtIDFdOworCisKKyAgICAgICAgICBpZiAoIEZUX1JFTkVXX0FSUkFZKCBmYWNlLT5jaGFybWFwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5udW1fY2hhcm1hcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+bnVtX2NoYXJtYXBzIC0gMSApICkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgIC8qIHJlbW92ZSBpdCBmcm9tIG91ciBsaXN0IG9mIGNoYXJtYXBzICovCisgICAgICAgICAgZm9yICggaiA9IGkgKyAxOyBqIDwgZmFjZS0+bnVtX2NoYXJtYXBzOyBqKysgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggaiA9PSBmYWNlLT5udW1fY2hhcm1hcHMgLSAxICkKKyAgICAgICAgICAgICAgZmFjZS0+Y2hhcm1hcHNbaiAtIDFdID0gbGFzdF9jaGFybWFwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBmYWNlLT5jaGFybWFwc1tqIC0gMV0gPSBmYWNlLT5jaGFybWFwc1tqXTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBmYWNlLT5udW1fY2hhcm1hcHMtLTsKKworICAgICAgICAgIGlmICggKEZUX0NNYXApZmFjZS0+Y2hhcm1hcCA9PSBjbWFwICkKKyAgICAgICAgICAgIGZhY2UtPmNoYXJtYXAgPSBOVUxMOworCisgICAgICAgICAgZnRfY21hcF9kb25lX2ludGVybmFsKCBjbWFwICk7CisKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX0Vycm9yICkKKyAgRlRfQ01hcF9OZXcoIEZUX0NNYXBfQ2xhc3MgIGNsYXp6LAorICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgICAgaW5pdF9kYXRhLAorICAgICAgICAgICAgICAgRlRfQ2hhck1hcCAgICAgY2hhcm1hcCwKKyAgICAgICAgICAgICAgIEZUX0NNYXAgICAgICAgKmFjbWFwICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfRmFjZSAgICBmYWNlOworICAgIEZUX01lbW9yeSAgbWVtb3J5OworICAgIEZUX0NNYXAgICAgY21hcCA9IE5VTEw7CisKKworICAgIGlmICggY2xhenogPT0gTlVMTCB8fCBjaGFybWFwID09IE5VTEwgfHwgY2hhcm1hcC0+ZmFjZSA9PSBOVUxMICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgZmFjZSAgID0gY2hhcm1hcC0+ZmFjZTsKKyAgICBtZW1vcnkgPSBGVF9GQUNFX01FTU9SWSggZmFjZSApOworCisgICAgaWYgKCAhRlRfQUxMT0MoIGNtYXAsIGNsYXp6LT5zaXplICkgKQorICAgIHsKKyAgICAgIGNtYXAtPmNoYXJtYXAgPSAqY2hhcm1hcDsKKyAgICAgIGNtYXAtPmNsYXp6ICAgPSBjbGF6ejsKKworICAgICAgaWYgKCBjbGF6ei0+aW5pdCApCisgICAgICB7CisgICAgICAgIGVycm9yID0gY2xhenotPmluaXQoIGNtYXAsIGluaXRfZGF0YSApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICB9CisKKyAgICAgIC8qIGFkZCBpdCB0byBvdXIgbGlzdCBvZiBjaGFybWFwcyAqLworICAgICAgaWYgKCBGVF9SRU5FV19BUlJBWSggZmFjZS0+Y2hhcm1hcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5udW1fY2hhcm1hcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5udW1fY2hhcm1hcHMgKyAxICkgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgIGZhY2UtPmNoYXJtYXBzW2ZhY2UtPm51bV9jaGFybWFwcysrXSA9IChGVF9DaGFyTWFwKWNtYXA7CisgICAgfQorCisgIEV4aXQ6CisgICAgaWYgKCBhY21hcCApCisgICAgICAqYWNtYXAgPSBjbWFwOworCisgICAgcmV0dXJuIGVycm9yOworCisgIEZhaWw6CisgICAgZnRfY21hcF9kb25lX2ludGVybmFsKCBjbWFwICk7CisgICAgY21hcCA9IE5VTEw7CisgICAgZ290byBFeGl0OworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9VSW50ICkKKyAgRlRfR2V0X0NoYXJfSW5kZXgoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIGNoYXJjb2RlICkKKyAgeworICAgIEZUX1VJbnQgIHJlc3VsdCA9IDA7CisKKworICAgIGlmICggZmFjZSAmJiBmYWNlLT5jaGFybWFwICkKKyAgICB7CisgICAgICBGVF9DTWFwICBjbWFwID0gRlRfQ01BUCggZmFjZS0+Y2hhcm1hcCApOworCisKKyAgICAgIGlmICggY2hhcmNvZGUgPiAweEZGRkZGRkZGVUwgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTEoKCAiRlRfR2V0X0NoYXJfSW5kZXg6IHRvbyBsYXJnZSBjaGFyY29kZSIgKSk7CisgICAgICAgIEZUX1RSQUNFMSgoICIgMHgleCBpcyB0cnVuY2F0ZWRcbiIsIGNoYXJjb2RlICkpOworICAgICAgfQorICAgICAgcmVzdWx0ID0gY21hcC0+Y2xhenotPmNoYXJfaW5kZXgoIGNtYXAsIChGVF9VSW50MzIpY2hhcmNvZGUgKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfVUxvbmcgKQorICBGVF9HZXRfRmlyc3RfQ2hhciggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAqYWdpbmRleCApCisgIHsKKyAgICBGVF9VTG9uZyAgcmVzdWx0ID0gMDsKKyAgICBGVF9VSW50ICAgZ2luZGV4ID0gMDsKKworCisgICAgaWYgKCBmYWNlICYmIGZhY2UtPmNoYXJtYXAgJiYgZmFjZS0+bnVtX2dseXBocyApCisgICAgeworICAgICAgZ2luZGV4ID0gRlRfR2V0X0NoYXJfSW5kZXgoIGZhY2UsIDAgKTsKKyAgICAgIGlmICggZ2luZGV4ID09IDAgfHwgZ2luZGV4ID49IChGVF9VSW50KWZhY2UtPm51bV9nbHlwaHMgKQorICAgICAgICByZXN1bHQgPSBGVF9HZXRfTmV4dF9DaGFyKCBmYWNlLCAwLCAmZ2luZGV4ICk7CisgICAgfQorCisgICAgaWYgKCBhZ2luZGV4ICkKKyAgICAgICphZ2luZGV4ID0gZ2luZGV4OworCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfVUxvbmcgKQorICBGVF9HZXRfTmV4dF9DaGFyKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIGNoYXJjb2RlLAorICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAqYWdpbmRleCApCisgIHsKKyAgICBGVF9VTG9uZyAgcmVzdWx0ID0gMDsKKyAgICBGVF9VSW50ICAgZ2luZGV4ID0gMDsKKworCisgICAgaWYgKCBmYWNlICYmIGZhY2UtPmNoYXJtYXAgJiYgZmFjZS0+bnVtX2dseXBocyApCisgICAgeworICAgICAgRlRfVUludDMyICBjb2RlID0gKEZUX1VJbnQzMiljaGFyY29kZTsKKyAgICAgIEZUX0NNYXAgICAgY21hcCA9IEZUX0NNQVAoIGZhY2UtPmNoYXJtYXAgKTsKKworCisgICAgICBkbyB7CisgICAgICAgIGdpbmRleCA9IGNtYXAtPmNsYXp6LT5jaGFyX25leHQoIGNtYXAsICZjb2RlICk7CisgICAgICB9IHdoaWxlICggZ2luZGV4ID49IChGVF9VSW50KWZhY2UtPm51bV9nbHlwaHMgKTsKKworICAgICAgcmVzdWx0ID0gKCBnaW5kZXggPT0gMCApID8gMCA6IGNvZGU7CisgICAgfQorCisgICAgaWYgKCBhZ2luZGV4ICkKKyAgICAgICphZ2luZGV4ID0gZ2luZGV4OworCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfVUludCApCisgIEZUX0ZhY2VfR2V0Q2hhclZhcmlhbnRJbmRleCggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIGNoYXJjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICB2YXJpYW50U2VsZWN0b3IgKQorICB7CisgICAgRlRfVUludCAgcmVzdWx0ID0gMDsKKworCisgICAgaWYgKCBmYWNlICYmIGZhY2UtPmNoYXJtYXAgJiYKKyAgICAgICAgZmFjZS0+Y2hhcm1hcC0+ZW5jb2RpbmcgPT0gRlRfRU5DT0RJTkdfVU5JQ09ERSApCisgICAgeworICAgICAgRlRfQ2hhck1hcCAgY2hhcm1hcCA9IGZpbmRfdmFyaWFudF9zZWxlY3Rvcl9jaGFybWFwKCBmYWNlICk7CisgICAgICBGVF9DTWFwICAgICB1Y21hcCA9IEZUX0NNQVAoIGZhY2UtPmNoYXJtYXAgKTsKKworCisgICAgICBpZiAoIGNoYXJtYXAgIT0gTlVMTCApCisgICAgICB7CisgICAgICAgIEZUX0NNYXAgIHZjbWFwID0gRlRfQ01BUCggY2hhcm1hcCApOworCisKKyAgICAgICAgaWYgKCBjaGFyY29kZSA+IDB4RkZGRkZGRkZVTCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9UUkFDRTEoKCAiRlRfR2V0X0NoYXJfSW5kZXg6IHRvbyBsYXJnZSBjaGFyY29kZSIgKSk7CisgICAgICAgICAgRlRfVFJBQ0UxKCggIiAweCV4IGlzIHRydW5jYXRlZFxuIiwgY2hhcmNvZGUgKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCB2YXJpYW50U2VsZWN0b3IgPiAweEZGRkZGRkZGVUwgKQorICAgICAgICB7CisgICAgICAgICAgRlRfVFJBQ0UxKCggIkZUX0dldF9DaGFyX0luZGV4OiB0b28gbGFyZ2UgdmFyaWFudFNlbGVjdG9yIiApKTsKKyAgICAgICAgICBGVF9UUkFDRTEoKCAiIDB4JXggaXMgdHJ1bmNhdGVkXG4iLCB2YXJpYW50U2VsZWN0b3IgKSk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSB2Y21hcC0+Y2xhenotPmNoYXJfdmFyX2luZGV4KCB2Y21hcCwgdWNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VSW50MzIpY2hhcmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VSW50MzIpdmFyaWFudFNlbGVjdG9yICk7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfSW50ICkKKyAgRlRfRmFjZV9HZXRDaGFyVmFyaWFudElzRGVmYXVsdCggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICBjaGFyY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHZhcmlhbnRTZWxlY3RvciApCisgIHsKKyAgICBGVF9JbnQgIHJlc3VsdCA9IC0xOworCisKKyAgICBpZiAoIGZhY2UgKQorICAgIHsKKyAgICAgIEZUX0NoYXJNYXAgIGNoYXJtYXAgPSBmaW5kX3ZhcmlhbnRfc2VsZWN0b3JfY2hhcm1hcCggZmFjZSApOworCisKKyAgICAgIGlmICggY2hhcm1hcCAhPSBOVUxMICkKKyAgICAgIHsKKyAgICAgICAgRlRfQ01hcCAgdmNtYXAgPSBGVF9DTUFQKCBjaGFybWFwICk7CisKKworICAgICAgICBpZiAoIGNoYXJjb2RlID4gMHhGRkZGRkZGRlVMICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1RSQUNFMSgoICJGVF9HZXRfQ2hhcl9JbmRleDogdG9vIGxhcmdlIGNoYXJjb2RlIiApKTsKKyAgICAgICAgICBGVF9UUkFDRTEoKCAiIDB4JXggaXMgdHJ1bmNhdGVkXG4iLCBjaGFyY29kZSApKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIHZhcmlhbnRTZWxlY3RvciA+IDB4RkZGRkZGRkZVTCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9UUkFDRTEoKCAiRlRfR2V0X0NoYXJfSW5kZXg6IHRvbyBsYXJnZSB2YXJpYW50U2VsZWN0b3IiICkpOworICAgICAgICAgIEZUX1RSQUNFMSgoICIgMHgleCBpcyB0cnVuY2F0ZWRcbiIsIHZhcmlhbnRTZWxlY3RvciApKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHZjbWFwLT5jbGF6ei0+Y2hhcl92YXJfZGVmYXVsdCggdmNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VJbnQzMiljaGFyY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUludDMyKXZhcmlhbnRTZWxlY3RvciApOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX1VJbnQzMiogKQorICBGVF9GYWNlX0dldFZhcmlhbnRTZWxlY3RvcnMoIEZUX0ZhY2UgIGZhY2UgKQorICB7CisgICAgRlRfVUludDMyICAqcmVzdWx0ID0gTlVMTDsKKworCisgICAgaWYgKCBmYWNlICkKKyAgICB7CisgICAgICBGVF9DaGFyTWFwICBjaGFybWFwID0gZmluZF92YXJpYW50X3NlbGVjdG9yX2NoYXJtYXAoIGZhY2UgKTsKKworCisgICAgICBpZiAoIGNoYXJtYXAgIT0gTlVMTCApCisgICAgICB7CisgICAgICAgIEZUX0NNYXAgICAgdmNtYXAgID0gRlRfQ01BUCggY2hhcm1hcCApOworICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IEZUX0ZBQ0VfTUVNT1JZKCBmYWNlICk7CisKKworICAgICAgICByZXN1bHQgPSB2Y21hcC0+Y2xhenotPnZhcmlhbnRfbGlzdCggdmNtYXAsIG1lbW9yeSApOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX1VJbnQzMiogKQorICBGVF9GYWNlX0dldFZhcmlhbnRzT2ZDaGFyKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIGNoYXJjb2RlICkKKyAgeworICAgIEZUX1VJbnQzMiAgKnJlc3VsdCA9IE5VTEw7CisKKworICAgIGlmICggZmFjZSApCisgICAgeworICAgICAgRlRfQ2hhck1hcCAgY2hhcm1hcCA9IGZpbmRfdmFyaWFudF9zZWxlY3Rvcl9jaGFybWFwKCBmYWNlICk7CisKKworICAgICAgaWYgKCBjaGFybWFwICE9IE5VTEwgKQorICAgICAgeworICAgICAgICBGVF9DTWFwICAgIHZjbWFwICA9IEZUX0NNQVAoIGNoYXJtYXAgKTsKKyAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBGVF9GQUNFX01FTU9SWSggZmFjZSApOworCisKKyAgICAgICAgaWYgKCBjaGFyY29kZSA+IDB4RkZGRkZGRkZVTCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9UUkFDRTEoKCAiRlRfR2V0X0NoYXJfSW5kZXg6IHRvbyBsYXJnZSBjaGFyY29kZSIgKSk7CisgICAgICAgICAgRlRfVFJBQ0UxKCggIiAweCV4IGlzIHRydW5jYXRlZFxuIiwgY2hhcmNvZGUgKSk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSB2Y21hcC0+Y2xhenotPmNoYXJ2YXJpYW50X2xpc3QoIHZjbWFwLCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1VJbnQzMiljaGFyY29kZSApOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9VSW50MzIqICkKKyAgRlRfRmFjZV9HZXRDaGFyc09mVmFyaWFudCggRlRfRmFjZSAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICB2YXJpYW50U2VsZWN0b3IgKQorICB7CisgICAgRlRfVUludDMyICAqcmVzdWx0ID0gTlVMTDsKKworCisgICAgaWYgKCBmYWNlICkKKyAgICB7CisgICAgICBGVF9DaGFyTWFwICBjaGFybWFwID0gZmluZF92YXJpYW50X3NlbGVjdG9yX2NoYXJtYXAoIGZhY2UgKTsKKworCisgICAgICBpZiAoIGNoYXJtYXAgIT0gTlVMTCApCisgICAgICB7CisgICAgICAgIEZUX0NNYXAgICAgdmNtYXAgID0gRlRfQ01BUCggY2hhcm1hcCApOworICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IEZUX0ZBQ0VfTUVNT1JZKCBmYWNlICk7CisKKworICAgICAgICBpZiAoIHZhcmlhbnRTZWxlY3RvciA+IDB4RkZGRkZGRkZVTCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9UUkFDRTEoKCAiRlRfR2V0X0NoYXJfSW5kZXg6IHRvbyBsYXJnZSB2YXJpYW50U2VsZWN0b3IiICkpOworICAgICAgICAgIEZUX1RSQUNFMSgoICIgMHgleCBpcyB0cnVuY2F0ZWRcbiIsIHZhcmlhbnRTZWxlY3RvciApKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHZjbWFwLT5jbGF6ei0+dmFyaWFudGNoYXJfbGlzdCggdmNtYXAsIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUludDMyKXZhcmlhbnRTZWxlY3RvciApOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX1VJbnQgKQorICBGVF9HZXRfTmFtZV9JbmRleCggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmluZyogIGdseXBoX25hbWUgKQorICB7CisgICAgRlRfVUludCAgcmVzdWx0ID0gMDsKKworCisgICAgaWYgKCBmYWNlICYmIEZUX0hBU19HTFlQSF9OQU1FUyggZmFjZSApICkKKyAgICB7CisgICAgICBGVF9TZXJ2aWNlX0dseXBoRGljdCAgc2VydmljZTsKKworCisgICAgICBGVF9GQUNFX0xPT0tVUF9TRVJWSUNFKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMWVBIX0RJQ1QgKTsKKworICAgICAgaWYgKCBzZXJ2aWNlICYmIHNlcnZpY2UtPm5hbWVfaW5kZXggKQorICAgICAgICByZXN1bHQgPSBzZXJ2aWNlLT5uYW1lX2luZGV4KCBmYWNlLCBnbHlwaF9uYW1lICk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmcmVldHlwZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9HZXRfR2x5cGhfTmFtZSggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9pbnRlciAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgYnVmZmVyX21heCApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKworCisgICAgLyogY2xlYW4gdXAgYnVmZmVyICovCisgICAgaWYgKCBidWZmZXIgJiYgYnVmZmVyX21heCA+IDAgKQorICAgICAgKChGVF9CeXRlKilidWZmZXIpWzBdID0gMDsKKworICAgIGlmICggZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgKEZUX0xvbmcpZ2x5cGhfaW5kZXggPD0gZmFjZS0+bnVtX2dseXBocyAmJgorICAgICAgICAgRlRfSEFTX0dMWVBIX05BTUVTKCBmYWNlICkgICAgICAgICAgICAgICApCisgICAgeworICAgICAgRlRfU2VydmljZV9HbHlwaERpY3QgIHNlcnZpY2U7CisKKworICAgICAgRlRfRkFDRV9MT09LVVBfU0VSVklDRSggZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTFlQSF9ESUNUICk7CisKKyAgICAgIGlmICggc2VydmljZSAmJiBzZXJ2aWNlLT5nZXRfbmFtZSApCisgICAgICAgIGVycm9yID0gc2VydmljZS0+Z2V0X25hbWUoIGZhY2UsIGdseXBoX2luZGV4LCBidWZmZXIsIGJ1ZmZlcl9tYXggKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIGNvbnN0IGNoYXIqICkKKyAgRlRfR2V0X1Bvc3RzY3JpcHRfTmFtZSggRlRfRmFjZSAgZmFjZSApCisgIHsKKyAgICBjb25zdCBjaGFyKiAgcmVzdWx0ID0gTlVMTDsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoICFyZXN1bHQgKQorICAgIHsKKyAgICAgIEZUX1NlcnZpY2VfUHNGb250TmFtZSAgc2VydmljZTsKKworCisgICAgICBGVF9GQUNFX0xPT0tVUF9TRVJWSUNFKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBPU1RTQ1JJUFRfRk9OVF9OQU1FICk7CisKKyAgICAgIGlmICggc2VydmljZSAmJiBzZXJ2aWNlLT5nZXRfcHNfZm9udF9uYW1lICkKKyAgICAgICAgcmVzdWx0ID0gc2VydmljZS0+Z2V0X3BzX2ZvbnRfbmFtZSggZmFjZSApOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gdHR0YWJsZXMuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQqICkKKyAgRlRfR2V0X1NmbnRfVGFibGUoIEZUX0ZhY2UgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU2ZudF9UYWcgIHRhZyApCisgIHsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgIHRhYmxlID0gMDsKKyAgICBGVF9TZXJ2aWNlX1NGTlRfVGFibGUgIHNlcnZpY2U7CisKKworICAgIGlmICggZmFjZSAmJiBGVF9JU19TRk5UKCBmYWNlICkgKQorICAgIHsKKyAgICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBTRk5UX1RBQkxFICk7CisgICAgICBpZiAoIHNlcnZpY2UgIT0gTlVMTCApCisgICAgICAgIHRhYmxlID0gc2VydmljZS0+Z2V0X3RhYmxlKCBmYWNlLCB0YWcgKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGFibGU7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gdHR0YWJsZXMuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfTG9hZF9TZm50X1RhYmxlKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICB0YWcsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICBsZW5ndGggKQorICB7CisgICAgRlRfU2VydmljZV9TRk5UX1RhYmxlICBzZXJ2aWNlOworCisKKyAgICBpZiAoICFmYWNlIHx8ICFGVF9JU19TRk5UKCBmYWNlICkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0ZhY2VfSGFuZGxlICk7CisKKyAgICBGVF9GQUNFX0ZJTkRfU0VSVklDRSggZmFjZSwgc2VydmljZSwgU0ZOVF9UQUJMRSApOworICAgIGlmICggc2VydmljZSA9PSBOVUxMICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisKKyAgICByZXR1cm4gc2VydmljZS0+bG9hZF90YWJsZSggZmFjZSwgdGFnLCBvZmZzZXQsIGJ1ZmZlciwgbGVuZ3RoICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gdHR0YWJsZXMuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfU2ZudF9UYWJsZV9JbmZvKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICB0YWJsZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgKnRhZywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgKmxlbmd0aCApCisgIHsKKyAgICBGVF9TZXJ2aWNlX1NGTlRfVGFibGUgIHNlcnZpY2U7CisgICAgRlRfVUxvbmcgICAgICAgICAgICAgICBvZmZzZXQ7CisKKworICAgIGlmICggIWZhY2UgfHwgIUZUX0lTX1NGTlQoIGZhY2UgKSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKworICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBTRk5UX1RBQkxFICk7CisgICAgaWYgKCBzZXJ2aWNlID09IE5VTEwgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKTsKKworICAgIHJldHVybiBzZXJ2aWNlLT50YWJsZV9pbmZvKCBmYWNlLCB0YWJsZV9pbmRleCwgdGFnLCAmb2Zmc2V0LCBsZW5ndGggKTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiB0dHRhYmxlcy5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfVUxvbmcgKQorICBGVF9HZXRfQ01hcF9MYW5ndWFnZV9JRCggRlRfQ2hhck1hcCAgY2hhcm1hcCApCisgIHsKKyAgICBGVF9TZXJ2aWNlX1RUQ01hcHMgIHNlcnZpY2U7CisgICAgRlRfRmFjZSAgICAgICAgICAgICBmYWNlOworICAgIFRUX0NNYXBJbmZvICAgICAgICAgY21hcF9pbmZvOworCisKKyAgICBpZiAoICFjaGFybWFwIHx8ICFjaGFybWFwLT5mYWNlICkKKyAgICAgIHJldHVybiAwOworCisgICAgZmFjZSA9IGNoYXJtYXAtPmZhY2U7CisgICAgRlRfRkFDRV9GSU5EX1NFUlZJQ0UoIGZhY2UsIHNlcnZpY2UsIFRUX0NNQVAgKTsKKyAgICBpZiAoIHNlcnZpY2UgPT0gTlVMTCApCisgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIHNlcnZpY2UtPmdldF9jbWFwX2luZm8oIGNoYXJtYXAsICZjbWFwX2luZm8gKSkKKyAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNtYXBfaW5mby5sYW5ndWFnZTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiB0dHRhYmxlcy5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfTG9uZyApCisgIEZUX0dldF9DTWFwX0Zvcm1hdCggRlRfQ2hhck1hcCAgY2hhcm1hcCApCisgIHsKKyAgICBGVF9TZXJ2aWNlX1RUQ01hcHMgIHNlcnZpY2U7CisgICAgRlRfRmFjZSAgICAgICAgICAgICBmYWNlOworICAgIFRUX0NNYXBJbmZvICAgICAgICAgY21hcF9pbmZvOworCisKKyAgICBpZiAoICFjaGFybWFwIHx8ICFjaGFybWFwLT5mYWNlICkKKyAgICAgIHJldHVybiAtMTsKKworICAgIGZhY2UgPSBjaGFybWFwLT5mYWNlOworICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBUVF9DTUFQICk7CisgICAgaWYgKCBzZXJ2aWNlID09IE5VTEwgKQorICAgICAgcmV0dXJuIC0xOworICAgIGlmICggc2VydmljZS0+Z2V0X2NtYXBfaW5mbyggY2hhcm1hcCwgJmNtYXBfaW5mbyApKQorICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGNtYXBfaW5mby5mb3JtYXQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRzaXplcy5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9BY3RpdmF0ZV9TaXplKCBGVF9TaXplICBzaXplICkKKyAgeworICAgIEZUX0ZhY2UgIGZhY2U7CisKKworICAgIGlmICggc2l6ZSA9PSBOVUxMICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgZmFjZSA9IHNpemUtPmZhY2U7CisgICAgaWYgKCBmYWNlID09IE5VTEwgfHwgZmFjZS0+ZHJpdmVyID09IE5VTEwgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICAvKiB3ZSBkb24ndCBuZWVkIGFueXRoaW5nIG1vcmUgY29tcGxleCB0aGFuIHRoYXQ7IGFsbCBzaXplIG9iamVjdHMgKi8KKyAgICAvKiBhcmUgYWxyZWFkeSBsaXN0ZWQgYnkgdGhlIGZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBmYWNlLT5zaXplID0gc2l6ZTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICBSIEUgTiBEIEUgUiBFIFIgUyAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKiBsb29rdXAgYSByZW5kZXJlciBieSBnbHlwaCBmb3JtYXQgaW4gdGhlIGxpYnJhcnkncyBsaXN0ICovCisgIEZUX0JBU0VfREVGKCBGVF9SZW5kZXJlciApCisgIEZUX0xvb2t1cF9SZW5kZXJlciggRlRfTGlicmFyeSAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoX0Zvcm1hdCAgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xpc3ROb2RlKiAgICAgbm9kZSApCisgIHsKKyAgICBGVF9MaXN0Tm9kZSAgY3VyOworICAgIEZUX1JlbmRlcmVyICByZXN1bHQgPSAwOworCisKKyAgICBpZiAoICFsaWJyYXJ5ICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGN1ciA9IGxpYnJhcnktPnJlbmRlcmVycy5oZWFkOworCisgICAgaWYgKCBub2RlICkKKyAgICB7CisgICAgICBpZiAoICpub2RlICkKKyAgICAgICAgY3VyID0gKCpub2RlKS0+bmV4dDsKKyAgICAgICpub2RlID0gMDsKKyAgICB9CisKKyAgICB3aGlsZSAoIGN1ciApCisgICAgeworICAgICAgRlRfUmVuZGVyZXIgIHJlbmRlcmVyID0gRlRfUkVOREVSRVIoIGN1ci0+ZGF0YSApOworCisKKyAgICAgIGlmICggcmVuZGVyZXItPmdseXBoX2Zvcm1hdCA9PSBmb3JtYXQgKQorICAgICAgeworICAgICAgICBpZiAoIG5vZGUgKQorICAgICAgICAgICpub2RlID0gY3VyOworCisgICAgICAgIHJlc3VsdCA9IHJlbmRlcmVyOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGN1ciA9IGN1ci0+bmV4dDsKKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICBzdGF0aWMgRlRfUmVuZGVyZXIKKyAgZnRfbG9va3VwX2dseXBoX3JlbmRlcmVyKCBGVF9HbHlwaFNsb3QgIHNsb3QgKQorICB7CisgICAgRlRfRmFjZSAgICAgIGZhY2UgICAgPSBzbG90LT5mYWNlOworICAgIEZUX0xpYnJhcnkgICBsaWJyYXJ5ID0gRlRfRkFDRV9MSUJSQVJZKCBmYWNlICk7CisgICAgRlRfUmVuZGVyZXIgIHJlc3VsdCAgPSBsaWJyYXJ5LT5jdXJfcmVuZGVyZXI7CisKKworICAgIGlmICggIXJlc3VsdCB8fCByZXN1bHQtPmdseXBoX2Zvcm1hdCAhPSBzbG90LT5mb3JtYXQgKQorICAgICAgcmVzdWx0ID0gRlRfTG9va3VwX1JlbmRlcmVyKCBsaWJyYXJ5LCBzbG90LT5mb3JtYXQsIDAgKTsKKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X3NldF9jdXJyZW50X3JlbmRlcmVyKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX1JlbmRlcmVyICByZW5kZXJlcjsKKworCisgICAgcmVuZGVyZXIgPSBGVF9Mb29rdXBfUmVuZGVyZXIoIGxpYnJhcnksIEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FLCAwICk7CisgICAgbGlicmFyeS0+Y3VyX3JlbmRlcmVyID0gcmVuZGVyZXI7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9hZGRfcmVuZGVyZXIoIEZUX01vZHVsZSAgbW9kdWxlICkKKyAgeworICAgIEZUX0xpYnJhcnkgICBsaWJyYXJ5ID0gbW9kdWxlLT5saWJyYXJ5OworICAgIEZUX01lbW9yeSAgICBtZW1vcnkgID0gbGlicmFyeS0+bWVtb3J5OworICAgIEZUX0Vycm9yICAgICBlcnJvcjsKKyAgICBGVF9MaXN0Tm9kZSAgbm9kZSAgICA9IE5VTEw7CisKKworICAgIGlmICggRlRfTkVXKCBub2RlICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgeworICAgICAgRlRfUmVuZGVyZXIgICAgICAgICByZW5kZXIgPSBGVF9SRU5ERVJFUiggbW9kdWxlICk7CisgICAgICBGVF9SZW5kZXJlcl9DbGFzcyogIGNsYXp6ICA9IChGVF9SZW5kZXJlcl9DbGFzcyopbW9kdWxlLT5jbGF6ejsKKworCisgICAgICByZW5kZXItPmNsYXp6ICAgICAgICA9IGNsYXp6OworICAgICAgcmVuZGVyLT5nbHlwaF9mb3JtYXQgPSBjbGF6ei0+Z2x5cGhfZm9ybWF0OworCisgICAgICAvKiBhbGxvY2F0ZSByYXN0ZXIgb2JqZWN0IGlmIG5lZWRlZCAqLworICAgICAgaWYgKCBjbGF6ei0+Z2x5cGhfZm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FICYmCisgICAgICAgICAgIGNsYXp6LT5yYXN0ZXJfY2xhc3MtPnJhc3Rlcl9uZXcgICAgICAgICAgICAgICAgKQorICAgICAgeworICAgICAgICBlcnJvciA9IGNsYXp6LT5yYXN0ZXJfY2xhc3MtPnJhc3Rlcl9uZXcoIG1lbW9yeSwgJnJlbmRlci0+cmFzdGVyICk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICByZW5kZXItPnJhc3Rlcl9yZW5kZXIgPSBjbGF6ei0+cmFzdGVyX2NsYXNzLT5yYXN0ZXJfcmVuZGVyOworICAgICAgICByZW5kZXItPnJlbmRlciAgICAgICAgPSBjbGF6ei0+cmVuZGVyX2dseXBoOworICAgICAgfQorCisgICAgICAvKiBhZGQgdG8gbGlzdCAqLworICAgICAgbm9kZS0+ZGF0YSA9IG1vZHVsZTsKKyAgICAgIEZUX0xpc3RfQWRkKCAmbGlicmFyeS0+cmVuZGVyZXJzLCBub2RlICk7CisKKyAgICAgIGZ0X3NldF9jdXJyZW50X3JlbmRlcmVyKCBsaWJyYXJ5ICk7CisgICAgfQorCisgIEZhaWw6CisgICAgaWYgKCBlcnJvciApCisgICAgICBGVF9GUkVFKCBub2RlICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X3JlbW92ZV9yZW5kZXJlciggRlRfTW9kdWxlICBtb2R1bGUgKQorICB7CisgICAgRlRfTGlicmFyeSAgIGxpYnJhcnkgPSBtb2R1bGUtPmxpYnJhcnk7CisgICAgRlRfTWVtb3J5ICAgIG1lbW9yeSAgPSBsaWJyYXJ5LT5tZW1vcnk7CisgICAgRlRfTGlzdE5vZGUgIG5vZGU7CisKKworICAgIG5vZGUgPSBGVF9MaXN0X0ZpbmQoICZsaWJyYXJ5LT5yZW5kZXJlcnMsIG1vZHVsZSApOworICAgIGlmICggbm9kZSApCisgICAgeworICAgICAgRlRfUmVuZGVyZXIgIHJlbmRlciA9IEZUX1JFTkRFUkVSKCBtb2R1bGUgKTsKKworCisgICAgICAvKiByZWxlYXNlIHJhc3RlciBvYmplY3QsIGlmIGFueSAqLworICAgICAgaWYgKCByZW5kZXItPmNsYXp6LT5nbHlwaF9mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgJiYKKyAgICAgICAgICAgcmVuZGVyLT5yYXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgcmVuZGVyLT5jbGF6ei0+cmFzdGVyX2NsYXNzLT5yYXN0ZXJfZG9uZSggcmVuZGVyLT5yYXN0ZXIgKTsKKworICAgICAgLyogcmVtb3ZlIGZyb20gbGlzdCAqLworICAgICAgRlRfTGlzdF9SZW1vdmUoICZsaWJyYXJ5LT5yZW5kZXJlcnMsIG5vZGUgKTsKKyAgICAgIEZUX0ZSRUUoIG5vZGUgKTsKKworICAgICAgZnRfc2V0X2N1cnJlbnRfcmVuZGVyZXIoIGxpYnJhcnkgKTsKKyAgICB9CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRyZW5kZXIuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX1JlbmRlcmVyICkKKyAgRlRfR2V0X1JlbmRlcmVyKCBGVF9MaWJyYXJ5ICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhfRm9ybWF0ICBmb3JtYXQgKQorICB7CisgICAgLyogdGVzdCBmb3IgdmFsaWQgYGxpYnJhcnknIGRlbGF5ZWQgdG8gRlRfTG9va3VwX1JlbmRlcmVyKCkgKi8KKworICAgIHJldHVybiBGVF9Mb29rdXBfUmVuZGVyZXIoIGxpYnJhcnksIGZvcm1hdCwgMCApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0cmVuZGVyLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1NldF9SZW5kZXJlciggRlRfTGlicmFyeSAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJlciAgICByZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICBudW1fcGFyYW1zLAorICAgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtZXRlcnMgKQorICB7CisgICAgRlRfTGlzdE5vZGUgIG5vZGU7CisgICAgRlRfRXJyb3IgICAgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICBpZiAoICFsaWJyYXJ5ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9MaWJyYXJ5X0hhbmRsZSApOworCisgICAgaWYgKCAhcmVuZGVyZXIgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBub2RlID0gRlRfTGlzdF9GaW5kKCAmbGlicmFyeS0+cmVuZGVyZXJzLCByZW5kZXJlciApOworICAgIGlmICggIW5vZGUgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBGVF9MaXN0X1VwKCAmbGlicmFyeS0+cmVuZGVyZXJzLCBub2RlICk7CisKKyAgICBpZiAoIHJlbmRlcmVyLT5nbHlwaF9mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgKQorICAgICAgbGlicmFyeS0+Y3VyX3JlbmRlcmVyID0gcmVuZGVyZXI7CisKKyAgICBpZiAoIG51bV9wYXJhbXMgPiAwICkKKyAgICB7CisgICAgICBGVF9SZW5kZXJlcl9TZXRNb2RlRnVuYyAgc2V0X21vZGUgPSByZW5kZXJlci0+Y2xhenotPnNldF9tb2RlOworCisKKyAgICAgIGZvciAoIDsgbnVtX3BhcmFtcyA+IDA7IG51bV9wYXJhbXMtLSApCisgICAgICB7CisgICAgICAgIGVycm9yID0gc2V0X21vZGUoIHJlbmRlcmVyLCBwYXJhbWV0ZXJzLT50YWcsIHBhcmFtZXRlcnMtPmRhdGEgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHBhcmFtZXRlcnMrKzsKKyAgICAgIH0KKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCggRlRfTGlicmFyeSAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICAgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgIHJlbmRlcl9tb2RlICkKKyAgeworICAgIEZUX0Vycm9yICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9SZW5kZXJlciAgcmVuZGVyZXI7CisKKworICAgIC8qIGlmIGl0IGlzIGFscmVhZHkgYSBiaXRtYXAsIG5vIG5lZWQgdG8gZG8gYW55dGhpbmcgKi8KKyAgICBzd2l0Y2ggKCBzbG90LT5mb3JtYXQgKQorICAgIHsKKyAgICBjYXNlIEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVA6ICAgLyogYWxyZWFkeSBhIGJpdG1hcCwgZG9uJ3QgZG8gYW55dGhpbmcgKi8KKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIHsKKyAgICAgICAgRlRfTGlzdE5vZGUgIG5vZGUgICA9IDA7CisgICAgICAgIEZUX0Jvb2wgICAgICB1cGRhdGUgPSAwOworCisKKyAgICAgICAgLyogc21hbGwgc2hvcnRjdXQgZm9yIHRoZSB2ZXJ5IGNvbW1vbiBjYXNlICovCisgICAgICAgIGlmICggc2xvdC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FICkKKyAgICAgICAgeworICAgICAgICAgIHJlbmRlcmVyID0gbGlicmFyeS0+Y3VyX3JlbmRlcmVyOworICAgICAgICAgIG5vZGUgICAgID0gbGlicmFyeS0+cmVuZGVyZXJzLmhlYWQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgIHJlbmRlcmVyID0gRlRfTG9va3VwX1JlbmRlcmVyKCBsaWJyYXJ5LCBzbG90LT5mb3JtYXQsICZub2RlICk7CisKKyAgICAgICAgZXJyb3IgPSBGVF9FUlIoIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApOworICAgICAgICB3aGlsZSAoIHJlbmRlcmVyICkKKyAgICAgICAgeworICAgICAgICAgIGVycm9yID0gcmVuZGVyZXItPnJlbmRlciggcmVuZGVyZXIsIHNsb3QsIHJlbmRlcl9tb2RlLCBOVUxMICk7CisgICAgICAgICAgaWYgKCAhZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICBGVF9FUlJfTkVRKCBlcnJvciwgQ2Fubm90X1JlbmRlcl9HbHlwaCApICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgLyogRlRfRXJyX0Nhbm5vdF9SZW5kZXJfR2x5cGggaXMgcmV0dXJuZWQgaWYgdGhlIHJlbmRlciBtb2RlICAgKi8KKyAgICAgICAgICAvKiBpcyB1bnN1cHBvcnRlZCBieSB0aGUgY3VycmVudCByZW5kZXJlciBmb3IgdGhpcyBnbHlwaCBpbWFnZSAqLworICAgICAgICAgIC8qIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICAvKiBub3csIGxvb2sgZm9yIGFub3RoZXIgcmVuZGVyZXIgdGhhdCBzdXBwb3J0cyB0aGUgc2FtZSAqLworICAgICAgICAgIC8qIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgcmVuZGVyZXIgPSBGVF9Mb29rdXBfUmVuZGVyZXIoIGxpYnJhcnksIHNsb3QtPmZvcm1hdCwgJm5vZGUgKTsKKyAgICAgICAgICB1cGRhdGUgICA9IDE7CisgICAgICAgIH0KKworICAgICAgICAvKiBpZiB3ZSBjaGFuZ2VkIHRoZSBjdXJyZW50IHJlbmRlcmVyIGZvciB0aGUgZ2x5cGggaW1hZ2UgZm9ybWF0ICovCisgICAgICAgIC8qIHdlIG5lZWQgdG8gc2VsZWN0IGl0IGFzIHRoZSBuZXh0IGN1cnJlbnQgb25lICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAhZXJyb3IgJiYgdXBkYXRlICYmIHJlbmRlcmVyICkKKyAgICAgICAgICBGVF9TZXRfUmVuZGVyZXIoIGxpYnJhcnksIHJlbmRlcmVyLCAwLCAwICk7CisgICAgICB9CisgICAgfQorCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9iaXRtYXAKKworICAgIC8qIHdlIGNvbnZlcnQgdG8gYSBzaW5nbGUgYml0bWFwIGZvcm1hdCBmb3IgY29tcHV0aW5nIHRoZSBjaGVja3N1bSAqLworICAgIHsKKyAgICAgIEZUX0JpdG1hcCAgYml0bWFwOworICAgICAgRlRfRXJyb3IgICBlcnI7CisKKworICAgICAgRlRfQml0bWFwX05ldyggJmJpdG1hcCApOworCisgICAgICBlcnIgPSBGVF9CaXRtYXBfQ29udmVydCggbGlicmFyeSwgJnNsb3QtPmJpdG1hcCwgJmJpdG1hcCwgMSApOworICAgICAgaWYgKCAhZXJyICkKKyAgICAgIHsKKyAgICAgICAgTUQ1X0NUWCAgICAgICAgY3R4OworICAgICAgICB1bnNpZ25lZCBjaGFyICBtZDVbMTZdOworICAgICAgICBpbnQgICAgICAgICAgICBpOworCisKKyAgICAgICAgTUQ1X0luaXQoICZjdHgpOworICAgICAgICBNRDVfVXBkYXRlKCAmY3R4LCBiaXRtYXAuYnVmZmVyLCBiaXRtYXAucm93cyAqIGJpdG1hcC5waXRjaCApOworICAgICAgICBNRDVfRmluYWwoIG1kNSwgJmN0eCApOworCisgICAgICAgIEZUX1RSQUNFMygoICJNRDUgY2hlY2tzdW0gZm9yICVkeCVkIGJpdG1hcDpcbiIKKyAgICAgICAgICAgICAgICAgICAgIiAgIiwKKyAgICAgICAgICAgICAgICAgICAgYml0bWFwLnJvd3MsIGJpdG1hcC5waXRjaCApKTsKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCAxNjsgaSsrICkKKyAgICAgICAgICBGVF9UUkFDRTMoKCAiJTAyWCIsIG1kNVtpXSApKTsKKyAgICAgICAgRlRfVFJBQ0UzKCggIlxuIiApKTsKKyAgICAgIH0KKworICAgICAgRlRfQml0bWFwX0RvbmUoIGxpYnJhcnksICZiaXRtYXAgKTsKKyAgICB9CisKKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2Vfb2JqcworCisjZW5kaWYgLyogRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfUmVuZGVyX0dseXBoKCBGVF9HbHlwaFNsb3QgICAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgcmVuZGVyX21vZGUgKQorICB7CisgICAgRlRfTGlicmFyeSAgbGlicmFyeTsKKworICAgIGlmICggIXNsb3QgfHwgIXNsb3QtPmZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBsaWJyYXJ5ID0gRlRfRkFDRV9MSUJSQVJZKCBzbG90LT5mYWNlICk7CisKKyAgICByZXR1cm4gRlRfUmVuZGVyX0dseXBoX0ludGVybmFsKCBsaWJyYXJ5LCBzbG90LCByZW5kZXJfbW9kZSApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgIE0gTyBEIFUgTCBFIFMgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZXN0cm95X01vZHVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZXN0cm95cyBhIGdpdmVuIG1vZHVsZSBvYmplY3QuICBGb3IgZHJpdmVycywgdGhpcyBhbHNvIGRlc3Ryb3lzICAgKi8KKyAgLyogICAgYWxsIGNoaWxkIGZhY2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbW9kdWxlIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZHJpdmVyIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGRyaXZlciBfbXVzdF8gYmUgTE9DS0VEISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBEZXN0cm95X01vZHVsZSggRlRfTW9kdWxlICBtb2R1bGUgKQorICB7CisgICAgRlRfTWVtb3J5ICAgICAgICAgbWVtb3J5ICA9IG1vZHVsZS0+bWVtb3J5OworICAgIEZUX01vZHVsZV9DbGFzcyogIGNsYXp6ICAgPSBtb2R1bGUtPmNsYXp6OworICAgIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnkgPSBtb2R1bGUtPmxpYnJhcnk7CisKKworICAgIGlmICggbGlicmFyeSAmJiBsaWJyYXJ5LT5hdXRvX2hpbnRlciA9PSBtb2R1bGUgKQorICAgICAgbGlicmFyeS0+YXV0b19oaW50ZXIgPSAwOworCisgICAgLyogaWYgdGhlIG1vZHVsZSBpcyBhIHJlbmRlcmVyICovCisgICAgaWYgKCBGVF9NT0RVTEVfSVNfUkVOREVSRVIoIG1vZHVsZSApICkKKyAgICAgIGZ0X3JlbW92ZV9yZW5kZXJlciggbW9kdWxlICk7CisKKyAgICAvKiBpZiB0aGUgbW9kdWxlIGlzIGEgZm9udCBkcml2ZXIsIGFkZCBzb21lIHN0ZXBzICovCisgICAgaWYgKCBGVF9NT0RVTEVfSVNfRFJJVkVSKCBtb2R1bGUgKSApCisgICAgICBEZXN0cm95X0RyaXZlciggRlRfRFJJVkVSKCBtb2R1bGUgKSApOworCisgICAgLyogZmluYWxpemUgdGhlIG1vZHVsZSBvYmplY3QgKi8KKyAgICBpZiAoIGNsYXp6LT5tb2R1bGVfZG9uZSApCisgICAgICBjbGF6ei0+bW9kdWxlX2RvbmUoIG1vZHVsZSApOworCisgICAgLyogZGlzY2FyZCBpdCAqLworICAgIEZUX0ZSRUUoIG1vZHVsZSApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0bW9kYXBpLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0FkZF9Nb2R1bGUoIEZUX0xpYnJhcnkgICAgICAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgIGNvbnN0IEZUX01vZHVsZV9DbGFzcyogIGNsYXp6ICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfTWVtb3J5ICBtZW1vcnk7CisgICAgRlRfTW9kdWxlICBtb2R1bGU7CisgICAgRlRfVUludCAgICBubjsKKworCisjZGVmaW5lIEZSRUVUWVBFX1ZFUl9GSVhFRCAgKCAoIChGVF9Mb25nKUZSRUVUWVBFX01BSk9SIDw8IDE2ICkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSRUVUWVBFX01JTk9SICAgICAgICAgICAgICAgICAgKQorCisgICAgaWYgKCAhbGlicmFyeSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfTGlicmFyeV9IYW5kbGUgKTsKKworICAgIGlmICggIWNsYXp6ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgLyogY2hlY2sgZnJlZXR5cGUgdmVyc2lvbiAqLworICAgIGlmICggY2xhenotPm1vZHVsZV9yZXF1aXJlcyA+IEZSRUVUWVBFX1ZFUl9GSVhFRCApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfVmVyc2lvbiApOworCisgICAgLyogbG9vayBmb3IgYSBtb2R1bGUgd2l0aCB0aGUgc2FtZSBuYW1lIGluIHRoZSBsaWJyYXJ5J3MgdGFibGUgKi8KKyAgICBmb3IgKCBubiA9IDA7IG5uIDwgbGlicmFyeS0+bnVtX21vZHVsZXM7IG5uKysgKQorICAgIHsKKyAgICAgIG1vZHVsZSA9IGxpYnJhcnktPm1vZHVsZXNbbm5dOworICAgICAgaWYgKCBmdF9zdHJjbXAoIG1vZHVsZS0+Y2xhenotPm1vZHVsZV9uYW1lLCBjbGF6ei0+bW9kdWxlX25hbWUgKSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgLyogdGhpcyBpbnN0YWxsZWQgbW9kdWxlIGhhcyB0aGUgc2FtZSBuYW1lLCBjb21wYXJlIHRoZWlyIHZlcnNpb25zICovCisgICAgICAgIGlmICggY2xhenotPm1vZHVsZV92ZXJzaW9uIDw9IG1vZHVsZS0+Y2xhenotPm1vZHVsZV92ZXJzaW9uICkKKyAgICAgICAgICByZXR1cm4gRlRfVEhST1coIExvd2VyX01vZHVsZV9WZXJzaW9uICk7CisKKyAgICAgICAgLyogcmVtb3ZlIHRoZSBtb2R1bGUgZnJvbSBvdXIgbGlzdCwgdGhlbiBleGl0IHRoZSBsb29wIHRvIHJlcGxhY2UgKi8KKyAgICAgICAgLyogaXQgYnkgb3VyIG5ldyB2ZXJzaW9uLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgRlRfUmVtb3ZlX01vZHVsZSggbGlicmFyeSwgbW9kdWxlICk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsKKyAgICBlcnJvciAgPSBGVF9FcnJfT2s7CisKKyAgICBpZiAoIGxpYnJhcnktPm51bV9tb2R1bGVzID49IEZUX01BWF9NT0RVTEVTICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBUb29fTWFueV9Ecml2ZXJzICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLyogYWxsb2NhdGUgbW9kdWxlIG9iamVjdCAqLworICAgIGlmICggRlRfQUxMT0MoIG1vZHVsZSwgY2xhenotPm1vZHVsZV9zaXplICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogYmFzZSBpbml0aWFsaXphdGlvbiAqLworICAgIG1vZHVsZS0+bGlicmFyeSA9IGxpYnJhcnk7CisgICAgbW9kdWxlLT5tZW1vcnkgID0gbWVtb3J5OworICAgIG1vZHVsZS0+Y2xhenogICA9IChGVF9Nb2R1bGVfQ2xhc3MqKWNsYXp6OworCisgICAgLyogY2hlY2sgd2hldGhlciB0aGUgbW9kdWxlIGlzIGEgcmVuZGVyZXIgLSB0aGlzIG11c3QgYmUgcGVyZm9ybWVkICovCisgICAgLyogYmVmb3JlIHRoZSBub3JtYWwgbW9kdWxlIGluaXRpYWxpemF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBGVF9NT0RVTEVfSVNfUkVOREVSRVIoIG1vZHVsZSApICkKKyAgICB7CisgICAgICAvKiBhZGQgdG8gdGhlIHJlbmRlcmVycyBsaXN0ICovCisgICAgICBlcnJvciA9IGZ0X2FkZF9yZW5kZXJlciggbW9kdWxlICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworICAgIH0KKworICAgIC8qIGlzIHRoZSBtb2R1bGUgYSBhdXRvLWhpbnRlcj8gKi8KKyAgICBpZiAoIEZUX01PRFVMRV9JU19ISU5URVIoIG1vZHVsZSApICkKKyAgICAgIGxpYnJhcnktPmF1dG9faGludGVyID0gbW9kdWxlOworCisgICAgLyogaWYgdGhlIG1vZHVsZSBpcyBhIGZvbnQgZHJpdmVyICovCisgICAgaWYgKCBGVF9NT0RVTEVfSVNfRFJJVkVSKCBtb2R1bGUgKSApCisgICAgeworICAgICAgLyogYWxsb2NhdGUgZ2x5cGggbG9hZGVyIGlmIG5lZWRlZCAqLworICAgICAgRlRfRHJpdmVyICBkcml2ZXIgPSBGVF9EUklWRVIoIG1vZHVsZSApOworCisKKyAgICAgIGRyaXZlci0+Y2xhenogPSAoRlRfRHJpdmVyX0NsYXNzKW1vZHVsZS0+Y2xheno7CisgICAgICBpZiAoIEZUX0RSSVZFUl9VU0VTX09VVExJTkVTKCBkcml2ZXIgKSApCisgICAgICB7CisgICAgICAgIGVycm9yID0gRlRfR2x5cGhMb2FkZXJfTmV3KCBtZW1vcnksICZkcml2ZXItPmdseXBoX2xvYWRlciApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCBjbGF6ei0+bW9kdWxlX2luaXQgKQorICAgIHsKKyAgICAgIGVycm9yID0gY2xhenotPm1vZHVsZV9pbml0KCBtb2R1bGUgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEZhaWw7CisgICAgfQorCisgICAgLyogYWRkIG1vZHVsZSB0byB0aGUgbGlicmFyeSdzIHRhYmxlICovCisgICAgbGlicmFyeS0+bW9kdWxlc1tsaWJyYXJ5LT5udW1fbW9kdWxlcysrXSA9IG1vZHVsZTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKworICBGYWlsOgorICAgIGlmICggRlRfTU9EVUxFX0lTX0RSSVZFUiggbW9kdWxlICkgKQorICAgIHsKKyAgICAgIEZUX0RyaXZlciAgZHJpdmVyID0gRlRfRFJJVkVSKCBtb2R1bGUgKTsKKworCisgICAgICBpZiAoIEZUX0RSSVZFUl9VU0VTX09VVExJTkVTKCBkcml2ZXIgKSApCisgICAgICAgIEZUX0dseXBoTG9hZGVyX0RvbmUoIGRyaXZlci0+Z2x5cGhfbG9hZGVyICk7CisgICAgfQorCisgICAgaWYgKCBGVF9NT0RVTEVfSVNfUkVOREVSRVIoIG1vZHVsZSApICkKKyAgICB7CisgICAgICBGVF9SZW5kZXJlciAgcmVuZGVyZXIgPSBGVF9SRU5ERVJFUiggbW9kdWxlICk7CisKKworICAgICAgaWYgKCByZW5kZXJlci0+Y2xhenogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICByZW5kZXJlci0+Y2xhenotPmdseXBoX2Zvcm1hdCA9PSBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSAmJgorICAgICAgICAgICByZW5kZXJlci0+cmFzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIHJlbmRlcmVyLT5jbGF6ei0+cmFzdGVyX2NsYXNzLT5yYXN0ZXJfZG9uZSggcmVuZGVyZXItPnJhc3RlciApOworICAgIH0KKworICAgIEZUX0ZSRUUoIG1vZHVsZSApOworICAgIGdvdG8gRXhpdDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG1vZGFwaS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfTW9kdWxlICkKKyAgRlRfR2V0X01vZHVsZSggRlRfTGlicmFyeSAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBtb2R1bGVfbmFtZSApCisgIHsKKyAgICBGVF9Nb2R1bGUgICByZXN1bHQgPSAwOworICAgIEZUX01vZHVsZSogIGN1cjsKKyAgICBGVF9Nb2R1bGUqICBsaW1pdDsKKworCisgICAgaWYgKCAhbGlicmFyeSB8fCAhbW9kdWxlX25hbWUgKQorICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGN1ciAgID0gbGlicmFyeS0+bW9kdWxlczsKKyAgICBsaW1pdCA9IGN1ciArIGxpYnJhcnktPm51bV9tb2R1bGVzOworCisgICAgZm9yICggOyBjdXIgPCBsaW1pdDsgY3VyKysgKQorICAgICAgaWYgKCBmdF9zdHJjbXAoIGN1clswXS0+Y2xhenotPm1vZHVsZV9uYW1lLCBtb2R1bGVfbmFtZSApID09IDAgKQorICAgICAgeworICAgICAgICByZXN1bHQgPSBjdXJbMF07CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG9ianMuaCAqLworCisgIEZUX0JBU0VfREVGKCBjb25zdCB2b2lkKiApCisgIEZUX0dldF9Nb2R1bGVfSW50ZXJmYWNlKCBGVF9MaWJyYXJ5ICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBtb2RfbmFtZSApCisgIHsKKyAgICBGVF9Nb2R1bGUgIG1vZHVsZTsKKworCisgICAgLyogdGVzdCBmb3IgdmFsaWQgYGxpYnJhcnknIGRlbGF5ZWQgdG8gRlRfR2V0X01vZHVsZSgpICovCisKKyAgICBtb2R1bGUgPSBGVF9HZXRfTW9kdWxlKCBsaWJyYXJ5LCBtb2RfbmFtZSApOworCisgICAgcmV0dXJuIG1vZHVsZSA/IG1vZHVsZS0+Y2xhenotPm1vZHVsZV9pbnRlcmZhY2UgOiAwOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfUG9pbnRlciApCisgIGZ0X21vZHVsZV9nZXRfc2VydmljZSggRlRfTW9kdWxlICAgIG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgc2VydmljZV9pZCApCisgIHsKKyAgICBGVF9Qb2ludGVyICByZXN1bHQgPSBOVUxMOworCisKKyAgICBpZiAoIG1vZHVsZSApCisgICAgeworICAgICAgRlRfQVNTRVJUKCBtb2R1bGUtPmNsYXp6ICYmIG1vZHVsZS0+Y2xhenotPmdldF9pbnRlcmZhY2UgKTsKKworICAgICAgLyogZmlyc3QsIGxvb2sgZm9yIHRoZSBzZXJ2aWNlIGluIHRoZSBtb2R1bGUgKi8KKyAgICAgIGlmICggbW9kdWxlLT5jbGF6ei0+Z2V0X2ludGVyZmFjZSApCisgICAgICAgIHJlc3VsdCA9IG1vZHVsZS0+Y2xhenotPmdldF9pbnRlcmZhY2UoIG1vZHVsZSwgc2VydmljZV9pZCApOworCisgICAgICBpZiAoIHJlc3VsdCA9PSBOVUxMICkKKyAgICAgIHsKKyAgICAgICAgLyogd2UgZGlkbid0IGZpbmQgaXQsIGxvb2sgaW4gYWxsIG90aGVyIG1vZHVsZXMgdGhlbiAqLworICAgICAgICBGVF9MaWJyYXJ5ICBsaWJyYXJ5ID0gbW9kdWxlLT5saWJyYXJ5OworICAgICAgICBGVF9Nb2R1bGUqICBjdXIgICAgID0gbGlicmFyeS0+bW9kdWxlczsKKyAgICAgICAgRlRfTW9kdWxlKiAgbGltaXQgICA9IGN1ciArIGxpYnJhcnktPm51bV9tb2R1bGVzOworCisKKyAgICAgICAgZm9yICggOyBjdXIgPCBsaW1pdDsgY3VyKysgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBjdXJbMF0gIT0gbW9kdWxlICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9BU1NFUlQoIGN1clswXS0+Y2xhenogKTsKKworICAgICAgICAgICAgaWYgKCBjdXJbMF0tPmNsYXp6LT5nZXRfaW50ZXJmYWNlICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcmVzdWx0ID0gY3VyWzBdLT5jbGF6ei0+Z2V0X2ludGVyZmFjZSggY3VyWzBdLCBzZXJ2aWNlX2lkICk7CisgICAgICAgICAgICAgIGlmICggcmVzdWx0ICE9IE5VTEwgKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRtb2RhcGkuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfUmVtb3ZlX01vZHVsZSggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlICAgbW9kdWxlICkKKyAgeworICAgIC8qIHRyeSB0byBmaW5kIHRoZSBtb2R1bGUgZnJvbSB0aGUgdGFibGUsIHRoZW4gcmVtb3ZlIGl0IGZyb20gdGhlcmUgKi8KKworICAgIGlmICggIWxpYnJhcnkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0xpYnJhcnlfSGFuZGxlICk7CisKKyAgICBpZiAoIG1vZHVsZSApCisgICAgeworICAgICAgRlRfTW9kdWxlKiAgY3VyICAgPSBsaWJyYXJ5LT5tb2R1bGVzOworICAgICAgRlRfTW9kdWxlKiAgbGltaXQgPSBjdXIgKyBsaWJyYXJ5LT5udW1fbW9kdWxlczsKKworCisgICAgICBmb3IgKCA7IGN1ciA8IGxpbWl0OyBjdXIrKyApCisgICAgICB7CisgICAgICAgIGlmICggY3VyWzBdID09IG1vZHVsZSApCisgICAgICAgIHsKKyAgICAgICAgICAvKiByZW1vdmUgaXQgZnJvbSB0aGUgdGFibGUgKi8KKyAgICAgICAgICBsaWJyYXJ5LT5udW1fbW9kdWxlcy0tOworICAgICAgICAgIGxpbWl0LS07CisgICAgICAgICAgd2hpbGUgKCBjdXIgPCBsaW1pdCApCisgICAgICAgICAgeworICAgICAgICAgICAgY3VyWzBdID0gY3VyWzFdOworICAgICAgICAgICAgY3VyKys7CisgICAgICAgICAgfQorICAgICAgICAgIGxpbWl0WzBdID0gMDsKKworICAgICAgICAgIC8qIGRlc3Ryb3kgdGhlIG1vZHVsZSAqLworICAgICAgICAgIERlc3Ryb3lfTW9kdWxlKCBtb2R1bGUgKTsKKworICAgICAgICAgIHJldHVybiBGVF9FcnJfT2s7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0RyaXZlcl9IYW5kbGUgKTsKKyAgfQorCisKKyAgRlRfRXJyb3IKKyAgZnRfcHJvcGVydHlfZG8oIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICBtb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1N0cmluZyogIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICAgIHNldCApCisgIHsKKyAgICBGVF9Nb2R1bGUqICAgICAgICAgICBjdXI7CisgICAgRlRfTW9kdWxlKiAgICAgICAgICAgbGltaXQ7CisgICAgRlRfTW9kdWxlX0ludGVyZmFjZSAgaW50ZXJmYWNlMTsKKyAgICBGVF9TZXJ2aWNlX1Byb3BlcnRpZXMgIHNlcnZpY2U7CisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9FUlJPUgorICAgIGNvbnN0IEZUX1N0cmluZyogIHNldF9uYW1lICA9ICJGVF9Qcm9wZXJ0eV9TZXQiOworICAgIGNvbnN0IEZUX1N0cmluZyogIGdldF9uYW1lICA9ICJGVF9Qcm9wZXJ0eV9HZXQiOworICAgIGNvbnN0IEZUX1N0cmluZyogIGZ1bmNfbmFtZSA9IHNldCA/IHNldF9uYW1lIDogZ2V0X25hbWU7CisjZW5kaWYKKworICAgIEZUX0Jvb2wgIG1pc3NpbmdfZnVuYzsKKworCisgICAgaWYgKCAhbGlicmFyeSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfTGlicmFyeV9IYW5kbGUgKTsKKworICAgIGlmICggIW1vZHVsZV9uYW1lIHx8ICFwcm9wZXJ0eV9uYW1lIHx8ICF2YWx1ZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGN1ciAgID0gbGlicmFyeS0+bW9kdWxlczsKKyAgICBsaW1pdCA9IGN1ciArIGxpYnJhcnktPm51bV9tb2R1bGVzOworCisgICAgLyogc2VhcmNoIG1vZHVsZSAqLworICAgIGZvciAoIDsgY3VyIDwgbGltaXQ7IGN1cisrICkKKyAgICAgIGlmICggIWZ0X3N0cmNtcCggY3VyWzBdLT5jbGF6ei0+bW9kdWxlX25hbWUsIG1vZHVsZV9uYW1lICkgKQorICAgICAgICBicmVhazsKKworICAgIGlmICggY3VyID09IGxpbWl0ICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICIlczogY2FuJ3QgZmluZCBtb2R1bGUgYCVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgZnVuY19uYW1lLCBtb2R1bGVfbmFtZSApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggTWlzc2luZ19Nb2R1bGUgKTsKKyAgICB9CisKKyAgICAvKiBjaGVjayB3aGV0aGVyIHdlIGhhdmUgYSBzZXJ2aWNlIGludGVyZmFjZSAqLworICAgIGlmICggIWN1clswXS0+Y2xhenotPmdldF9pbnRlcmZhY2UgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggIiVzOiBtb2R1bGUgYCVzJyBkb2Vzbid0IHN1cHBvcnQgcHJvcGVydGllc1xuIiwKKyAgICAgICAgICAgICAgICAgZnVuY19uYW1lLCBtb2R1bGVfbmFtZSApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisgICAgfQorCisgICAgLyogc2VhcmNoIHByb3BlcnR5IHNlcnZpY2UgKi8KKyAgICBpbnRlcmZhY2UxID0gY3VyWzBdLT5jbGF6ei0+Z2V0X2ludGVyZmFjZSggY3VyWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NFUlZJQ0VfSURfUFJPUEVSVElFUyApOworICAgIGlmICggIWludGVyZmFjZTEgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggIiVzOiBtb2R1bGUgYCVzJyBkb2Vzbid0IHN1cHBvcnQgcHJvcGVydGllc1xuIiwKKyAgICAgICAgICAgICAgICAgZnVuY19uYW1lLCBtb2R1bGVfbmFtZSApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisgICAgfQorCisgICAgc2VydmljZSA9IChGVF9TZXJ2aWNlX1Byb3BlcnRpZXMpaW50ZXJmYWNlMTsKKworICAgIGlmICggc2V0ICkKKyAgICAgIG1pc3NpbmdfZnVuYyA9IChGVF9Cb29sKSggIXNlcnZpY2UtPnNldF9wcm9wZXJ0eSApOworICAgIGVsc2UKKyAgICAgIG1pc3NpbmdfZnVuYyA9IChGVF9Cb29sKSggIXNlcnZpY2UtPmdldF9wcm9wZXJ0eSApOworCisgICAgaWYgKCBtaXNzaW5nX2Z1bmMgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggIiVzOiBwcm9wZXJ0eSBzZXJ2aWNlIG9mIG1vZHVsZSBgJXMnIGlzIGJyb2tlblxuIiwKKyAgICAgICAgICAgICAgICAgZnVuY19uYW1lLCBtb2R1bGVfbmFtZSApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisgICAgfQorCisgICAgcmV0dXJuIHNldCA/IHNlcnZpY2UtPnNldF9wcm9wZXJ0eSggY3VyWzBdLCBwcm9wZXJ0eV9uYW1lLCB2YWx1ZSApCisgICAgICAgICAgICAgICA6IHNlcnZpY2UtPmdldF9wcm9wZXJ0eSggY3VyWzBdLCBwcm9wZXJ0eV9uYW1lLCB2YWx1ZSApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0bW9kYXBpLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1Byb3BlcnR5X1NldCggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICBtb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICBwcm9wZXJ0eV9uYW1lLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICAgICAgIHZhbHVlICkKKyAgeworICAgIHJldHVybiBmdF9wcm9wZXJ0eV9kbyggbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKil2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgKTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG1vZGFwaS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9Qcm9wZXJ0eV9HZXQoIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgbW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgcHJvcGVydHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgICB2YWx1ZSApCisgIHsKKyAgICByZXR1cm4gZnRfcHJvcGVydHlfZG8oIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgTCBJIEIgUiBBIFIgWSAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRtb2RhcGkuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfUmVmZXJlbmNlX0xpYnJhcnkoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKQorICB7CisgICAgbGlicmFyeS0+cmVmY291bnQrKzsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRtb2RhcGkuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfTmV3X0xpYnJhcnkoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICBGVF9MaWJyYXJ5ICAqYWxpYnJhcnkgKQorICB7CisgICAgRlRfTGlicmFyeSAgbGlicmFyeSA9IE5VTEw7CisgICAgRlRfRXJyb3IgICAgZXJyb3I7CisKKworICAgIGlmICggIW1lbW9yeSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX0VSUk9SCisgICAgLyogaW5pdCBkZWJ1Z2dpbmcgc3VwcG9ydCAqLworICAgIGZ0X2RlYnVnX2luaXQoKTsKKyNlbmRpZgorCisgICAgLyogZmlyc3Qgb2YgYWxsLCBhbGxvY2F0ZSB0aGUgbGlicmFyeSBvYmplY3QgKi8KKyAgICBpZiAoIEZUX05FVyggbGlicmFyeSApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIGxpYnJhcnktPm1lbW9yeSA9IG1lbW9yeTsKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisgICAgLyogaW5pdGlhbGl6ZSBwb3NpdGlvbiBpbmRlcGVuZGVudCBjb2RlIGNvbnRhaW5lcnMgKi8KKyAgICBlcnJvciA9IGZ0X3BpY19jb250YWluZXJfaW5pdCggbGlicmFyeSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBGYWlsOworI2VuZGlmCisKKyAgICAvKiBhbGxvY2F0ZSB0aGUgcmVuZGVyIHBvb2wgKi8KKyAgICBsaWJyYXJ5LT5yYXN0ZXJfcG9vbF9zaXplID0gRlRfUkVOREVSX1BPT0xfU0laRTsKKyNpZiBGVF9SRU5ERVJfUE9PTF9TSVpFID4gMAorICAgIGlmICggRlRfQUxMT0MoIGxpYnJhcnktPnJhc3Rlcl9wb29sLCBGVF9SRU5ERVJfUE9PTF9TSVpFICkgKQorICAgICAgZ290byBGYWlsOworI2VuZGlmCisKKyAgICBsaWJyYXJ5LT52ZXJzaW9uX21ham9yID0gRlJFRVRZUEVfTUFKT1I7CisgICAgbGlicmFyeS0+dmVyc2lvbl9taW5vciA9IEZSRUVUWVBFX01JTk9SOworICAgIGxpYnJhcnktPnZlcnNpb25fcGF0Y2ggPSBGUkVFVFlQRV9QQVRDSDsKKworICAgIGxpYnJhcnktPnJlZmNvdW50ID0gMTsKKworICAgIC8qIFRoYXQncyBvayBub3cgKi8KKyAgICAqYWxpYnJhcnkgPSBsaWJyYXJ5OworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKworICBGYWlsOgorI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisgICAgZnRfcGljX2NvbnRhaW5lcl9kZXN0cm95KCBsaWJyYXJ5ICk7CisjZW5kaWYKKyAgICBGVF9GUkVFKCBsaWJyYXJ5ICk7CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfTGlicmFyeV9WZXJzaW9uKCBGVF9MaWJyYXJ5ICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAqYW1ham9yLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICphbWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgKmFwYXRjaCApCisgIHsKKyAgICBGVF9JbnQgIG1ham9yID0gMDsKKyAgICBGVF9JbnQgIG1pbm9yID0gMDsKKyAgICBGVF9JbnQgIHBhdGNoID0gMDsKKworCisgICAgaWYgKCBsaWJyYXJ5ICkKKyAgICB7CisgICAgICBtYWpvciA9IGxpYnJhcnktPnZlcnNpb25fbWFqb3I7CisgICAgICBtaW5vciA9IGxpYnJhcnktPnZlcnNpb25fbWlub3I7CisgICAgICBwYXRjaCA9IGxpYnJhcnktPnZlcnNpb25fcGF0Y2g7CisgICAgfQorCisgICAgaWYgKCBhbWFqb3IgKQorICAgICAgKmFtYWpvciA9IG1ham9yOworCisgICAgaWYgKCBhbWlub3IgKQorICAgICAgKmFtaW5vciA9IG1pbm9yOworCisgICAgaWYgKCBhcGF0Y2ggKQorICAgICAgKmFwYXRjaCA9IHBhdGNoOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0bW9kYXBpLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0RvbmVfTGlicmFyeSggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKworCisgICAgaWYgKCAhbGlicmFyeSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfTGlicmFyeV9IYW5kbGUgKTsKKworICAgIGxpYnJhcnktPnJlZmNvdW50LS07CisgICAgaWYgKCBsaWJyYXJ5LT5yZWZjb3VudCA+IDAgKQorICAgICAgZ290byBFeGl0OworCisgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisgICAgLyoKKyAgICAgKiBDbG9zZSBhbGwgZmFjZXMgaW4gdGhlIGxpYnJhcnkuICBJZiB3ZSBkb24ndCBkbyB0aGlzLCB3ZSBjYW4gaGF2ZQorICAgICAqIHNvbWUgc3VidGxlIG1lbW9yeSBsZWFrcy4KKyAgICAgKgorICAgICAqIEV4YW1wbGU6CisgICAgICoKKyAgICAgKiAgLSB0aGUgY2ZmIGZvbnQgZHJpdmVyIHVzZXMgdGhlIHBzaGludGVyIG1vZHVsZSBpbiBjZmZfc2l6ZV9kb25lCisgICAgICogIC0gaWYgdGhlIHBzaGludGVyIG1vZHVsZSBpcyBkZXN0cm95ZWQgYmVmb3JlIHRoZSBjZmYgZm9udCBkcml2ZXIsCisgICAgICogICAgb3BlbmVkIEZUX0ZhY2Ugb2JqZWN0cyBtYW5hZ2VkIGJ5IHRoZSBkcml2ZXIgYXJlIG5vdCBwcm9wZXJseQorICAgICAqICAgIGRlc3Ryb3llZCwgcmVzdWx0aW5nIGluIGEgbWVtb3J5IGxlYWsKKyAgICAgKgorICAgICAqIFNvbWUgZmFjZXMgYXJlIGRlcGVuZGVudCBvbiBvdGhlciBmYWNlcywgbGlrZSBUeXBlNDIgZmFjZXMgdGhhdAorICAgICAqIGRlcGVuZCBvbiBUcnVlVHlwZSBmYWNlcyBzeW50aGVzaXplZCBpbnRlcm5hbGx5LgorICAgICAqCisgICAgICogVGhlIG9yZGVyIG9mIGRyaXZlcnMgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiBkcml2ZXJfbmFtZVtdLgorICAgICAqLworICAgIHsKKyAgICAgIEZUX1VJbnQgICAgICBtLCBuOworICAgICAgY29uc3QgY2hhciogIGRyaXZlcl9uYW1lW10gPSB7ICJ0eXBlNDIiLCBOVUxMIH07CisKKworICAgICAgZm9yICggbSA9IDA7CisgICAgICAgICAgICBtIDwgc2l6ZW9mICggZHJpdmVyX25hbWUgKSAvIHNpemVvZiAoIGRyaXZlcl9uYW1lWzBdICk7CisgICAgICAgICAgICBtKysgKQorICAgICAgeworICAgICAgICBmb3IgKCBuID0gMDsgbiA8IGxpYnJhcnktPm51bV9tb2R1bGVzOyBuKysgKQorICAgICAgICB7CisgICAgICAgICAgRlRfTW9kdWxlICAgIG1vZHVsZSAgICAgID0gbGlicmFyeS0+bW9kdWxlc1tuXTsKKyAgICAgICAgICBjb25zdCBjaGFyKiAgbW9kdWxlX25hbWUgPSBtb2R1bGUtPmNsYXp6LT5tb2R1bGVfbmFtZTsKKyAgICAgICAgICBGVF9MaXN0ICAgICAgZmFjZXM7CisKKworICAgICAgICAgIGlmICggZHJpdmVyX25hbWVbbV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICBmdF9zdHJjbXAoIG1vZHVsZV9uYW1lLCBkcml2ZXJfbmFtZVttXSApICE9IDAgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICBpZiAoICggbW9kdWxlLT5jbGF6ei0+bW9kdWxlX2ZsYWdzICYgRlRfTU9EVUxFX0ZPTlRfRFJJVkVSICkgPT0gMCApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgIEZUX1RSQUNFNygoICJGVF9Eb25lX0xpYnJhcnk6IGNsb3NlIGZhY2VzIGZvciAlc1xuIiwgbW9kdWxlX25hbWUgKSk7CisKKyAgICAgICAgICBmYWNlcyA9ICZGVF9EUklWRVIoIG1vZHVsZSApLT5mYWNlc19saXN0OworICAgICAgICAgIHdoaWxlICggZmFjZXMtPmhlYWQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0RvbmVfRmFjZSggRlRfRkFDRSggZmFjZXMtPmhlYWQtPmRhdGEgKSApOworICAgICAgICAgICAgaWYgKCBmYWNlcy0+aGVhZCApCisgICAgICAgICAgICAgIEZUX1RSQUNFMCgoICJGVF9Eb25lX0xpYnJhcnk6IGZhaWxlZCB0byBmcmVlIHNvbWUgZmFjZXNcbiIgKSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgLyogQ2xvc2UgYWxsIG90aGVyIG1vZHVsZXMgaW4gdGhlIGxpYnJhcnkgKi8KKyNpZiAxCisgICAgLyogWFhYIE1vZHVsZXMgYXJlIHJlbW92ZWQgaW4gdGhlIHJldmVyc2VkIG9yZGVyIHNvIHRoYXQgICovCisgICAgLyogdHlwZTQyIG1vZHVsZSBpcyByZW1vdmVkIGJlZm9yZSB0cnVldHlwZSBtb2R1bGUuICBUaGlzICovCisgICAgLyogYXZvaWRzIGRvdWJsZSBmcmVlIGluIHNvbWUgb2NjYXNpb25zLiAgSXQgaXMgYSBoYWNrLiAgICovCisgICAgd2hpbGUgKCBsaWJyYXJ5LT5udW1fbW9kdWxlcyA+IDAgKQorICAgICAgRlRfUmVtb3ZlX01vZHVsZSggbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnktPm1vZHVsZXNbbGlicmFyeS0+bnVtX21vZHVsZXMgLSAxXSApOworI2Vsc2UKKyAgICB7CisgICAgICBGVF9VSW50ICBuOworCisKKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgbGlicmFyeS0+bnVtX21vZHVsZXM7IG4rKyApCisgICAgICB7CisgICAgICAgIEZUX01vZHVsZSAgbW9kdWxlID0gbGlicmFyeS0+bW9kdWxlc1tuXTsKKworCisgICAgICAgIGlmICggbW9kdWxlICkKKyAgICAgICAgeworICAgICAgICAgIERlc3Ryb3lfTW9kdWxlKCBtb2R1bGUgKTsKKyAgICAgICAgICBsaWJyYXJ5LT5tb2R1bGVzW25dID0gMDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgLyogRGVzdHJveSByYXN0ZXIgb2JqZWN0cyAqLworICAgIEZUX0ZSRUUoIGxpYnJhcnktPnJhc3Rlcl9wb29sICk7CisgICAgbGlicmFyeS0+cmFzdGVyX3Bvb2xfc2l6ZSA9IDA7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworICAgIC8qIERlc3Ryb3kgcGljIGNvbnRhaW5lciBjb250ZW50cyAqLworICAgIGZ0X3BpY19jb250YWluZXJfZGVzdHJveSggbGlicmFyeSApOworI2VuZGlmCisKKyAgICBGVF9GUkVFKCBsaWJyYXJ5ICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0bW9kYXBpLmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfU2V0X0RlYnVnX0hvb2soIEZUX0xpYnJhcnkgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgIGhvb2tfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICBGVF9EZWJ1Z0hvb2tfRnVuYyAgZGVidWdfaG9vayApCisgIHsKKyAgICBpZiAoIGxpYnJhcnkgJiYgZGVidWdfaG9vayAmJgorICAgICAgICAgaG9va19pbmRleCA8CisgICAgICAgICAgICggc2l6ZW9mICggbGlicmFyeS0+ZGVidWdfaG9va3MgKSAvIHNpemVvZiAoIHZvaWQqICkgKSApCisgICAgICBsaWJyYXJ5LT5kZWJ1Z19ob29rc1tob29rX2luZGV4XSA9IGRlYnVnX2hvb2s7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRtb2RhcGkuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX1RydWVUeXBlRW5naW5lVHlwZSApCisgIEZUX0dldF9UcnVlVHlwZV9FbmdpbmVfVHlwZSggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9UcnVlVHlwZUVuZ2luZVR5cGUgIHJlc3VsdCA9IEZUX1RSVUVUWVBFX0VOR0lORV9UWVBFX05PTkU7CisKKworICAgIGlmICggbGlicmFyeSApCisgICAgeworICAgICAgRlRfTW9kdWxlICBtb2R1bGUgPSBGVF9HZXRfTW9kdWxlKCBsaWJyYXJ5LCAidHJ1ZXR5cGUiICk7CisKKworICAgICAgaWYgKCBtb2R1bGUgKQorICAgICAgeworICAgICAgICBGVF9TZXJ2aWNlX1RydWVUeXBlRW5naW5lICBzZXJ2aWNlOworCisKKyAgICAgICAgc2VydmljZSA9IChGVF9TZXJ2aWNlX1RydWVUeXBlRW5naW5lKQorICAgICAgICAgICAgICAgICAgICBmdF9tb2R1bGVfZ2V0X3NlcnZpY2UoIG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TRVJWSUNFX0lEX1RSVUVUWVBFX0VOR0lORSApOworICAgICAgICBpZiAoIHNlcnZpY2UgKQorICAgICAgICAgIHJlc3VsdCA9IHNlcnZpY2UtPmVuZ2luZV90eXBlOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfR2V0X1N1YkdseXBoX0luZm8oIEZUX0dseXBoU2xvdCAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIHN1Yl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAqcF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAqcF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAqcF9hcmcxLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICpwX2FyZzIsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9NYXRyaXggICAgKnBfdHJhbnNmb3JtICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0VSUiggSW52YWxpZF9Bcmd1bWVudCApOworCisKKyAgICBpZiAoIGdseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgZ2x5cGgtPnN1YmdseXBocyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICBnbHlwaC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9DT01QT1NJVEUgJiYKKyAgICAgICAgIHN1Yl9pbmRleCA8IGdseXBoLT5udW1fc3ViZ2x5cGhzICAgICAgICAgICApCisgICAgeworICAgICAgRlRfU3ViR2x5cGggIHN1YmcgPSBnbHlwaC0+c3ViZ2x5cGhzICsgc3ViX2luZGV4OworCisKKyAgICAgICpwX2luZGV4ICAgICA9IHN1YmctPmluZGV4OworICAgICAgKnBfZmxhZ3MgICAgID0gc3ViZy0+ZmxhZ3M7CisgICAgICAqcF9hcmcxICAgICAgPSBzdWJnLT5hcmcxOworICAgICAgKnBfYXJnMiAgICAgID0gc3ViZy0+YXJnMjsKKyAgICAgICpwX3RyYW5zZm9ybSA9IHN1YmctPnRyYW5zZm9ybTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdG90dmFsLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRvdHZhbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5OGZkMTkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRvdHZhbC5jCkBAIC0wLDAgKzEsOTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0b3R2YWwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIHZhbGlkYXRpbmcgT3BlblR5cGUgdGFibGVzIChib2R5KS4gICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNCwgMjAwNiwgMjAwOCwgMjAxMCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZvdHZhbC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRvdHZhbC5oIgorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG90dmFsLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX09wZW5UeXBlX1ZhbGlkYXRlKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIHZhbGlkYXRpb25fZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgKkJBU0VfdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgKkdERUZfdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgKkdQT1NfdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgKkdTVUJfdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlcyAgKkpTVEZfdGFibGUgKQorICB7CisgICAgRlRfU2VydmljZV9PVHZhbGlkYXRlICBzZXJ2aWNlOworICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgZXJyb3I7CisKKworICAgIGlmICggIWZhY2UgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoICEoIEJBU0VfdGFibGUgJiYKKyAgICAgICAgICAgIEdERUZfdGFibGUgJiYKKyAgICAgICAgICAgIEdQT1NfdGFibGUgJiYKKyAgICAgICAgICAgIEdTVUJfdGFibGUgJiYKKyAgICAgICAgICAgIEpTVEZfdGFibGUgKSApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIEZUX0ZBQ0VfRklORF9HTE9CQUxfU0VSVklDRSggZmFjZSwgc2VydmljZSwgT1BFTlRZUEVfVkFMSURBVEUgKTsKKworICAgIGlmICggc2VydmljZSApCisgICAgICBlcnJvciA9IHNlcnZpY2UtPnZhbGlkYXRlKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBU0VfdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREVGX3RhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BPU190YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVUJfdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1RGX3RhYmxlICk7CisgICAgZWxzZQorICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9PcGVuVHlwZV9GcmVlKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZXMgIHRhYmxlICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5OworCisKKyAgICBpZiAoICFmYWNlICkKKyAgICAgIHJldHVybjsKKworICAgIG1lbW9yeSA9IEZUX0ZBQ0VfTUVNT1JZKCBmYWNlICk7CisKKyAgICBGVF9GUkVFKCB0YWJsZSApOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRvdXRsbi5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0b3V0bG4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTEyNzcwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0b3V0bG4uYwpAQCAtMCwwICsxLDEwODEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0b3V0bG4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBvdXRsaW5lIG1hbmFnZW1lbnQgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA4LCAyMDEwLCAyMDEyLTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEFsbCBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIGluIGZyZWV0eXBlLmguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2Vfb3V0bGluZQorCisKKyAgc3RhdGljCisgIGNvbnN0IEZUX091dGxpbmUgIG51bGxfb3V0bGluZSA9IHsgMCwgMCwgMCwgMCwgMCwgMCB9OworCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG91dGxuLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfRGVjb21wb3NlKCBGVF9PdXRsaW5lKiAgICAgICAgICAgICAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX091dGxpbmVfRnVuY3MqICBmdW5jX2ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICB1c2VyICkKKyAgeworI3VuZGVmIFNDQUxFRAorI2RlZmluZSBTQ0FMRUQoIHggKSAgKCAoICh4KSA8PCBzaGlmdCApIC0gZGVsdGEgKQorCisgICAgRlRfVmVjdG9yICAgdl9sYXN0OworICAgIEZUX1ZlY3RvciAgIHZfY29udHJvbDsKKyAgICBGVF9WZWN0b3IgICB2X3N0YXJ0OworCisgICAgRlRfVmVjdG9yKiAgcG9pbnQ7CisgICAgRlRfVmVjdG9yKiAgbGltaXQ7CisgICAgY2hhciogICAgICAgdGFnczsKKworICAgIEZUX0Vycm9yICAgIGVycm9yOworCisgICAgRlRfSW50ICAgbjsgICAgICAgICAvKiBpbmRleCBvZiBjb250b3VyIGluIG91dGxpbmUgICAgICovCisgICAgRlRfVUludCAgZmlyc3Q7ICAgICAvKiBpbmRleCBvZiBmaXJzdCBwb2ludCBpbiBjb250b3VyICovCisgICAgRlRfSW50ICAgdGFnOyAgICAgICAvKiBjdXJyZW50IHBvaW50J3Mgc3RhdGUgICAgICAgICAgICovCisKKyAgICBGVF9JbnQgICBzaGlmdDsKKyAgICBGVF9Qb3MgICBkZWx0YTsKKworCisgICAgaWYgKCAhb3V0bGluZSB8fCAhZnVuY19pbnRlcmZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBzaGlmdCA9IGZ1bmNfaW50ZXJmYWNlLT5zaGlmdDsKKyAgICBkZWx0YSA9IGZ1bmNfaW50ZXJmYWNlLT5kZWx0YTsKKyAgICBmaXJzdCA9IDA7CisKKyAgICBmb3IgKCBuID0gMDsgbiA8IG91dGxpbmUtPm5fY29udG91cnM7IG4rKyApCisgICAgeworICAgICAgRlRfSW50ICBsYXN0OyAgLyogaW5kZXggb2YgbGFzdCBwb2ludCBpbiBjb250b3VyICovCisKKworICAgICAgRlRfVFJBQ0U1KCggIkZUX091dGxpbmVfRGVjb21wb3NlOiBPdXRsaW5lICVkXG4iLCBuICkpOworCisgICAgICBsYXN0ID0gb3V0bGluZS0+Y29udG91cnNbbl07CisgICAgICBpZiAoIGxhc3QgPCAwICkKKyAgICAgICAgZ290byBJbnZhbGlkX091dGxpbmU7CisgICAgICBsaW1pdCA9IG91dGxpbmUtPnBvaW50cyArIGxhc3Q7CisKKyAgICAgIHZfc3RhcnQgICA9IG91dGxpbmUtPnBvaW50c1tmaXJzdF07CisgICAgICB2X3N0YXJ0LnggPSBTQ0FMRUQoIHZfc3RhcnQueCApOworICAgICAgdl9zdGFydC55ID0gU0NBTEVEKCB2X3N0YXJ0LnkgKTsKKworICAgICAgdl9sYXN0ICAgPSBvdXRsaW5lLT5wb2ludHNbbGFzdF07CisgICAgICB2X2xhc3QueCA9IFNDQUxFRCggdl9sYXN0LnggKTsKKyAgICAgIHZfbGFzdC55ID0gU0NBTEVEKCB2X2xhc3QueSApOworCisgICAgICB2X2NvbnRyb2wgPSB2X3N0YXJ0OworCisgICAgICBwb2ludCA9IG91dGxpbmUtPnBvaW50cyArIGZpcnN0OworICAgICAgdGFncyAgPSBvdXRsaW5lLT50YWdzICAgKyBmaXJzdDsKKyAgICAgIHRhZyAgID0gRlRfQ1VSVkVfVEFHKCB0YWdzWzBdICk7CisKKyAgICAgIC8qIEEgY29udG91ciBjYW5ub3Qgc3RhcnQgd2l0aCBhIGN1YmljIGNvbnRyb2wgcG9pbnQhICovCisgICAgICBpZiAoIHRhZyA9PSBGVF9DVVJWRV9UQUdfQ1VCSUMgKQorICAgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKworICAgICAgLyogY2hlY2sgZmlyc3QgcG9pbnQgdG8gZGV0ZXJtaW5lIG9yaWdpbiAqLworICAgICAgaWYgKCB0YWcgPT0gRlRfQ1VSVkVfVEFHX0NPTklDICkKKyAgICAgIHsKKyAgICAgICAgLyogZmlyc3QgcG9pbnQgaXMgY29uaWMgY29udHJvbC4gIFllcywgdGhpcyBoYXBwZW5zLiAqLworICAgICAgICBpZiAoIEZUX0NVUlZFX1RBRyggb3V0bGluZS0+dGFnc1tsYXN0XSApID09IEZUX0NVUlZFX1RBR19PTiApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBzdGFydCBhdCBsYXN0IHBvaW50IGlmIGl0IGlzIG9uIHRoZSBjdXJ2ZSAqLworICAgICAgICAgIHZfc3RhcnQgPSB2X2xhc3Q7CisgICAgICAgICAgbGltaXQtLTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAvKiBpZiBib3RoIGZpcnN0IGFuZCBsYXN0IHBvaW50cyBhcmUgY29uaWMsICAgICAgICAgKi8KKyAgICAgICAgICAvKiBzdGFydCBhdCB0aGVpciBtaWRkbGUgYW5kIHJlY29yZCBpdHMgcG9zaXRpb24gICAgKi8KKyAgICAgICAgICAvKiBmb3IgY2xvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICB2X3N0YXJ0LnggPSAoIHZfc3RhcnQueCArIHZfbGFzdC54ICkgLyAyOworICAgICAgICAgIHZfc3RhcnQueSA9ICggdl9zdGFydC55ICsgdl9sYXN0LnkgKSAvIDI7CisKKyAgICAgICAgICB2X2xhc3QgPSB2X3N0YXJ0OworICAgICAgICB9CisgICAgICAgIHBvaW50LS07CisgICAgICAgIHRhZ3MtLTsKKyAgICAgIH0KKworICAgICAgRlRfVFJBQ0U1KCggIiAgbW92ZSB0byAoJS4yZiwgJS4yZilcbiIsCisgICAgICAgICAgICAgICAgICB2X3N0YXJ0LnggLyA2NC4wLCB2X3N0YXJ0LnkgLyA2NC4wICkpOworICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+bW92ZV90byggJnZfc3RhcnQsIHVzZXIgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIHdoaWxlICggcG9pbnQgPCBsaW1pdCApCisgICAgICB7CisgICAgICAgIHBvaW50Kys7CisgICAgICAgIHRhZ3MrKzsKKworICAgICAgICB0YWcgPSBGVF9DVVJWRV9UQUcoIHRhZ3NbMF0gKTsKKyAgICAgICAgc3dpdGNoICggdGFnICkKKyAgICAgICAgeworICAgICAgICBjYXNlIEZUX0NVUlZFX1RBR19PTjogIC8qIGVtaXQgYSBzaW5nbGUgbGluZV90byAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1ZlY3RvciAgdmVjOworCisKKyAgICAgICAgICAgIHZlYy54ID0gU0NBTEVEKCBwb2ludC0+eCApOworICAgICAgICAgICAgdmVjLnkgPSBTQ0FMRUQoIHBvaW50LT55ICk7CisKKyAgICAgICAgICAgIEZUX1RSQUNFNSgoICIgIGxpbmUgdG8gKCUuMmYsICUuMmYpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgdmVjLnggLyA2NC4wLCB2ZWMueSAvIDY0LjAgKSk7CisgICAgICAgICAgICBlcnJvciA9IGZ1bmNfaW50ZXJmYWNlLT5saW5lX3RvKCAmdmVjLCB1c2VyICk7CisgICAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgfQorCisgICAgICAgIGNhc2UgRlRfQ1VSVkVfVEFHX0NPTklDOiAgLyogY29uc3VtZSBjb25pYyBhcmNzICovCisgICAgICAgICAgdl9jb250cm9sLnggPSBTQ0FMRUQoIHBvaW50LT54ICk7CisgICAgICAgICAgdl9jb250cm9sLnkgPSBTQ0FMRUQoIHBvaW50LT55ICk7CisKKyAgICAgICAgRG9fQ29uaWM6CisgICAgICAgICAgaWYgKCBwb2ludCA8IGxpbWl0ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9WZWN0b3IgIHZlYzsKKyAgICAgICAgICAgIEZUX1ZlY3RvciAgdl9taWRkbGU7CisKKworICAgICAgICAgICAgcG9pbnQrKzsKKyAgICAgICAgICAgIHRhZ3MrKzsKKyAgICAgICAgICAgIHRhZyA9IEZUX0NVUlZFX1RBRyggdGFnc1swXSApOworCisgICAgICAgICAgICB2ZWMueCA9IFNDQUxFRCggcG9pbnQtPnggKTsKKyAgICAgICAgICAgIHZlYy55ID0gU0NBTEVEKCBwb2ludC0+eSApOworCisgICAgICAgICAgICBpZiAoIHRhZyA9PSBGVF9DVVJWRV9UQUdfT04gKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9UUkFDRTUoKCAiICBjb25pYyB0byAoJS4yZiwgJS4yZikiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgd2l0aCBjb250cm9sICglLjJmLCAlLjJmKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjLnggLyA2NC4wLCB2ZWMueSAvIDY0LjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZfY29udHJvbC54IC8gNjQuMCwgdl9jb250cm9sLnkgLyA2NC4wICkpOworICAgICAgICAgICAgICBlcnJvciA9IGZ1bmNfaW50ZXJmYWNlLT5jb25pY190byggJnZfY29udHJvbCwgJnZlYywgdXNlciApOworICAgICAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIHRhZyAhPSBGVF9DVVJWRV9UQUdfQ09OSUMgKQorICAgICAgICAgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKworICAgICAgICAgICAgdl9taWRkbGUueCA9ICggdl9jb250cm9sLnggKyB2ZWMueCApIC8gMjsKKyAgICAgICAgICAgIHZfbWlkZGxlLnkgPSAoIHZfY29udHJvbC55ICsgdmVjLnkgKSAvIDI7CisKKyAgICAgICAgICAgIEZUX1RSQUNFNSgoICIgIGNvbmljIHRvICglLjJmLCAlLjJmKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgd2l0aCBjb250cm9sICglLjJmLCAlLjJmKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZfbWlkZGxlLnggLyA2NC4wLCB2X21pZGRsZS55IC8gNjQuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZfY29udHJvbC54IC8gNjQuMCwgdl9jb250cm9sLnkgLyA2NC4wICkpOworICAgICAgICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+Y29uaWNfdG8oICZ2X2NvbnRyb2wsICZ2X21pZGRsZSwgdXNlciApOworICAgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAgICAgdl9jb250cm9sID0gdmVjOworICAgICAgICAgICAgZ290byBEb19Db25pYzsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBGVF9UUkFDRTUoKCAiICBjb25pYyB0byAoJS4yZiwgJS4yZikiCisgICAgICAgICAgICAgICAgICAgICAgIiB3aXRoIGNvbnRyb2wgKCUuMmYsICUuMmYpXG4iLAorICAgICAgICAgICAgICAgICAgICAgIHZfc3RhcnQueCAvIDY0LjAsIHZfc3RhcnQueSAvIDY0LjAsCisgICAgICAgICAgICAgICAgICAgICAgdl9jb250cm9sLnggLyA2NC4wLCB2X2NvbnRyb2wueSAvIDY0LjAgKSk7CisgICAgICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+Y29uaWNfdG8oICZ2X2NvbnRyb2wsICZ2X3N0YXJ0LCB1c2VyICk7CisgICAgICAgICAgZ290byBDbG9zZTsKKworICAgICAgICBkZWZhdWx0OiAgLyogRlRfQ1VSVkVfVEFHX0NVQklDICovCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfVmVjdG9yICB2ZWMxLCB2ZWMyOworCisKKyAgICAgICAgICAgIGlmICggcG9pbnQgKyAxID4gbGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgIEZUX0NVUlZFX1RBRyggdGFnc1sxXSApICE9IEZUX0NVUlZFX1RBR19DVUJJQyApCisgICAgICAgICAgICAgIGdvdG8gSW52YWxpZF9PdXRsaW5lOworCisgICAgICAgICAgICBwb2ludCArPSAyOworICAgICAgICAgICAgdGFncyAgKz0gMjsKKworICAgICAgICAgICAgdmVjMS54ID0gU0NBTEVEKCBwb2ludFstMl0ueCApOworICAgICAgICAgICAgdmVjMS55ID0gU0NBTEVEKCBwb2ludFstMl0ueSApOworCisgICAgICAgICAgICB2ZWMyLnggPSBTQ0FMRUQoIHBvaW50Wy0xXS54ICk7CisgICAgICAgICAgICB2ZWMyLnkgPSBTQ0FMRUQoIHBvaW50Wy0xXS55ICk7CisKKyAgICAgICAgICAgIGlmICggcG9pbnQgPD0gbGltaXQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9WZWN0b3IgIHZlYzsKKworCisgICAgICAgICAgICAgIHZlYy54ID0gU0NBTEVEKCBwb2ludC0+eCApOworICAgICAgICAgICAgICB2ZWMueSA9IFNDQUxFRCggcG9pbnQtPnkgKTsKKworICAgICAgICAgICAgICBGVF9UUkFDRTUoKCAiICBjdWJpYyB0byAoJS4yZiwgJS4yZikiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgd2l0aCBjb250cm9scyAoJS4yZiwgJS4yZikgYW5kICglLjJmLCAlLjJmKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjLnggLyA2NC4wLCB2ZWMueSAvIDY0LjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzEueCAvIDY0LjAsIHZlYzEueSAvIDY0LjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzIueCAvIDY0LjAsIHZlYzIueSAvIDY0LjAgKSk7CisgICAgICAgICAgICAgIGVycm9yID0gZnVuY19pbnRlcmZhY2UtPmN1YmljX3RvKCAmdmVjMSwgJnZlYzIsICZ2ZWMsIHVzZXIgKTsKKyAgICAgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgY3ViaWMgdG8gKCUuMmYsICUuMmYpIgorICAgICAgICAgICAgICAgICAgICAgICAgIiB3aXRoIGNvbnRyb2xzICglLjJmLCAlLjJmKSBhbmQgKCUuMmYsICUuMmYpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgdl9zdGFydC54IC8gNjQuMCwgdl9zdGFydC55IC8gNjQuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlYzEueCAvIDY0LjAsIHZlYzEueSAvIDY0LjAsCisgICAgICAgICAgICAgICAgICAgICAgICB2ZWMyLnggLyA2NC4wLCB2ZWMyLnkgLyA2NC4wICkpOworICAgICAgICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+Y3ViaWNfdG8oICZ2ZWMxLCAmdmVjMiwgJnZfc3RhcnQsIHVzZXIgKTsKKyAgICAgICAgICAgIGdvdG8gQ2xvc2U7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIGNsb3NlIHRoZSBjb250b3VyIHdpdGggYSBsaW5lIHNlZ21lbnQgKi8KKyAgICAgIEZUX1RSQUNFNSgoICIgIGxpbmUgdG8gKCUuMmYsICUuMmYpXG4iLAorICAgICAgICAgICAgICAgICAgdl9zdGFydC54IC8gNjQuMCwgdl9zdGFydC55IC8gNjQuMCApKTsKKyAgICAgIGVycm9yID0gZnVuY19pbnRlcmZhY2UtPmxpbmVfdG8oICZ2X3N0YXJ0LCB1c2VyICk7CisKKyAgICBDbG9zZToKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGZpcnN0ID0gbGFzdCArIDE7CisgICAgfQorCisgICAgRlRfVFJBQ0U1KCggIkZUX091dGxpbmVfRGVjb21wb3NlOiBEb25lXG4iLCBuICkpOworICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgRXhpdDoKKyAgICBGVF9UUkFDRTUoKCAiRlRfT3V0bGluZV9EZWNvbXBvc2U6IEVycm9yICVkXG4iLCBlcnJvciApKTsKKyAgICByZXR1cm4gZXJyb3I7CisKKyAgSW52YWxpZF9PdXRsaW5lOgorICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9PdXRsaW5lICk7CisgIH0KKworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9OZXdfSW50ZXJuYWwoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgbnVtUG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgIG51bUNvbnRvdXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSAgKmFub3V0bGluZSApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgIGlmICggIWFub3V0bGluZSB8fCAhbWVtb3J5ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgKmFub3V0bGluZSA9IG51bGxfb3V0bGluZTsKKworICAgIGlmICggbnVtQ29udG91cnMgPCAwICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgIChGVF9VSW50KW51bUNvbnRvdXJzID4gbnVtUG9pbnRzICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgaWYgKCBudW1Qb2ludHMgPiBGVF9PVVRMSU5FX1BPSU5UU19NQVggKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBBcnJheV9Ub29fTGFyZ2UgKTsKKworICAgIGlmICggRlRfTkVXX0FSUkFZKCBhbm91dGxpbmUtPnBvaW50cywgICBudW1Qb2ludHMgICApIHx8CisgICAgICAgICBGVF9ORVdfQVJSQVkoIGFub3V0bGluZS0+dGFncywgICAgIG51bVBvaW50cyAgICkgfHwKKyAgICAgICAgIEZUX05FV19BUlJBWSggYW5vdXRsaW5lLT5jb250b3VycywgbnVtQ29udG91cnMgKSApCisgICAgICBnb3RvIEZhaWw7CisKKyAgICBhbm91dGxpbmUtPm5fcG9pbnRzICAgID0gKEZUX1VTaG9ydCludW1Qb2ludHM7CisgICAgYW5vdXRsaW5lLT5uX2NvbnRvdXJzICA9IChGVF9TaG9ydCludW1Db250b3VyczsKKyAgICBhbm91dGxpbmUtPmZsYWdzICAgICAgfD0gRlRfT1VUTElORV9PV05FUjsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgRmFpbDoKKyAgICBhbm91dGxpbmUtPmZsYWdzIHw9IEZUX09VVExJTkVfT1dORVI7CisgICAgRlRfT3V0bGluZV9Eb25lX0ludGVybmFsKCBtZW1vcnksIGFub3V0bGluZSApOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0b3V0bG4uaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9OZXcoIEZUX0xpYnJhcnkgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIG51bVBvaW50cywKKyAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICBudW1Db250b3VycywKKyAgICAgICAgICAgICAgICAgIEZUX091dGxpbmUgICphbm91dGxpbmUgKQorICB7CisgICAgaWYgKCAhbGlicmFyeSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfTGlicmFyeV9IYW5kbGUgKTsKKworICAgIHJldHVybiBGVF9PdXRsaW5lX05ld19JbnRlcm5hbCggbGlicmFyeS0+bWVtb3J5LCBudW1Qb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1Db250b3VycywgYW5vdXRsaW5lICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRvdXRsbi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9PdXRsaW5lX0NoZWNrKCBGVF9PdXRsaW5lKiAgb3V0bGluZSApCisgIHsKKyAgICBpZiAoIG91dGxpbmUgKQorICAgIHsKKyAgICAgIEZUX0ludCAgbl9wb2ludHMgICA9IG91dGxpbmUtPm5fcG9pbnRzOworICAgICAgRlRfSW50ICBuX2NvbnRvdXJzID0gb3V0bGluZS0+bl9jb250b3VyczsKKyAgICAgIEZUX0ludCAgZW5kMCwgZW5kOworICAgICAgRlRfSW50ICBuOworCisKKyAgICAgIC8qIGVtcHR5IGdseXBoPyAqLworICAgICAgaWYgKCBuX3BvaW50cyA9PSAwICYmIG5fY29udG91cnMgPT0gMCApCisgICAgICAgIHJldHVybiAwOworCisgICAgICAvKiBjaGVjayBwb2ludCBhbmQgY29udG91ciBjb3VudHMgKi8KKyAgICAgIGlmICggbl9wb2ludHMgPD0gMCB8fCBuX2NvbnRvdXJzIDw9IDAgKQorICAgICAgICBnb3RvIEJhZDsKKworICAgICAgZW5kMCA9IGVuZCA9IC0xOworICAgICAgZm9yICggbiA9IDA7IG4gPCBuX2NvbnRvdXJzOyBuKysgKQorICAgICAgeworICAgICAgICBlbmQgPSBvdXRsaW5lLT5jb250b3Vyc1tuXTsKKworICAgICAgICAvKiBub3RlIHRoYXQgd2UgZG9uJ3QgYWNjZXB0IGVtcHR5IGNvbnRvdXJzICovCisgICAgICAgIGlmICggZW5kIDw9IGVuZDAgfHwgZW5kID49IG5fcG9pbnRzICkKKyAgICAgICAgICBnb3RvIEJhZDsKKworICAgICAgICBlbmQwID0gZW5kOworICAgICAgfQorCisgICAgICBpZiAoIGVuZCAhPSBuX3BvaW50cyAtIDEgKQorICAgICAgICBnb3RvIEJhZDsKKworICAgICAgLyogWFhYOiBjaGVjayB0aGUgdGFncyBhcnJheSAqLworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIEJhZDoKKyAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG91dGxuLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfQ29weSggY29uc3QgRlRfT3V0bGluZSogIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lICAgICAgICAqdGFyZ2V0ICkKKyAgeworICAgIEZUX0ludCAgaXNfb3duZXI7CisKKworICAgIGlmICggIXNvdXJjZSAgICAgICAgICAgIHx8ICF0YXJnZXQgICAgICAgICAgICB8fAorICAgICAgICAgc291cmNlLT5uX3BvaW50cyAgICE9IHRhcmdldC0+bl9wb2ludHMgICB8fAorICAgICAgICAgc291cmNlLT5uX2NvbnRvdXJzICE9IHRhcmdldC0+bl9jb250b3VycyApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGlmICggc291cmNlID09IHRhcmdldCApCisgICAgICByZXR1cm4gRlRfRXJyX09rOworCisgICAgRlRfQVJSQVlfQ09QWSggdGFyZ2V0LT5wb2ludHMsIHNvdXJjZS0+cG9pbnRzLCBzb3VyY2UtPm5fcG9pbnRzICk7CisKKyAgICBGVF9BUlJBWV9DT1BZKCB0YXJnZXQtPnRhZ3MsIHNvdXJjZS0+dGFncywgc291cmNlLT5uX3BvaW50cyApOworCisgICAgRlRfQVJSQVlfQ09QWSggdGFyZ2V0LT5jb250b3Vycywgc291cmNlLT5jb250b3Vycywgc291cmNlLT5uX2NvbnRvdXJzICk7CisKKyAgICAvKiBjb3B5IGFsbCBmbGFncywgZXhjZXB0IHRoZSBgRlRfT1VUTElORV9PV05FUicgb25lICovCisgICAgaXNfb3duZXIgICAgICA9IHRhcmdldC0+ZmxhZ3MgJiBGVF9PVVRMSU5FX09XTkVSOworICAgIHRhcmdldC0+ZmxhZ3MgPSBzb3VyY2UtPmZsYWdzOworCisgICAgdGFyZ2V0LT5mbGFncyAmPSB+RlRfT1VUTElORV9PV05FUjsKKyAgICB0YXJnZXQtPmZsYWdzIHw9IGlzX293bmVyOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9PdXRsaW5lX0RvbmVfSW50ZXJuYWwoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT3V0bGluZSogIG91dGxpbmUgKQorICB7CisgICAgaWYgKCBtZW1vcnkgJiYgb3V0bGluZSApCisgICAgeworICAgICAgaWYgKCBvdXRsaW5lLT5mbGFncyAmIEZUX09VVExJTkVfT1dORVIgKQorICAgICAgeworICAgICAgICBGVF9GUkVFKCBvdXRsaW5lLT5wb2ludHMgICApOworICAgICAgICBGVF9GUkVFKCBvdXRsaW5lLT50YWdzICAgICApOworICAgICAgICBGVF9GUkVFKCBvdXRsaW5lLT5jb250b3VycyApOworICAgICAgfQorICAgICAgKm91dGxpbmUgPSBudWxsX291dGxpbmU7CisKKyAgICAgIHJldHVybiBGVF9FcnJfT2s7CisgICAgfQorICAgIGVsc2UKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0b3V0bG4uaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfT3V0bGluZV9Eb25lKCBGVF9MaWJyYXJ5ICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgb3V0bGluZSApCisgIHsKKyAgICAvKiBjaGVjayBmb3IgdmFsaWQgYG91dGxpbmUnIGluIEZUX091dGxpbmVfRG9uZV9JbnRlcm5hbCgpICovCisKKyAgICBpZiAoICFsaWJyYXJ5ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9MaWJyYXJ5X0hhbmRsZSApOworCisgICAgcmV0dXJuIEZUX091dGxpbmVfRG9uZV9JbnRlcm5hbCggbGlicmFyeS0+bWVtb3J5LCBvdXRsaW5lICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRvdXRsbi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX091dGxpbmVfR2V0X0NCb3goIGNvbnN0IEZUX091dGxpbmUqICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9CQm94ICAgICAgICAgICAqYWNib3ggKQorICB7CisgICAgRlRfUG9zICB4TWluLCB5TWluLCB4TWF4LCB5TWF4OworCisKKyAgICBpZiAoIG91dGxpbmUgJiYgYWNib3ggKQorICAgIHsKKyAgICAgIGlmICggb3V0bGluZS0+bl9wb2ludHMgPT0gMCApCisgICAgICB7CisgICAgICAgIHhNaW4gPSAwOworICAgICAgICB5TWluID0gMDsKKyAgICAgICAgeE1heCA9IDA7CisgICAgICAgIHlNYXggPSAwOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBGVF9WZWN0b3IqICB2ZWMgICA9IG91dGxpbmUtPnBvaW50czsKKyAgICAgICAgRlRfVmVjdG9yKiAgbGltaXQgPSB2ZWMgKyBvdXRsaW5lLT5uX3BvaW50czsKKworCisgICAgICAgIHhNaW4gPSB4TWF4ID0gdmVjLT54OworICAgICAgICB5TWluID0geU1heCA9IHZlYy0+eTsKKyAgICAgICAgdmVjKys7CisKKyAgICAgICAgZm9yICggOyB2ZWMgPCBsaW1pdDsgdmVjKysgKQorICAgICAgICB7CisgICAgICAgICAgRlRfUG9zICB4LCB5OworCisKKyAgICAgICAgICB4ID0gdmVjLT54OworICAgICAgICAgIGlmICggeCA8IHhNaW4gKSB4TWluID0geDsKKyAgICAgICAgICBpZiAoIHggPiB4TWF4ICkgeE1heCA9IHg7CisKKyAgICAgICAgICB5ID0gdmVjLT55OworICAgICAgICAgIGlmICggeSA8IHlNaW4gKSB5TWluID0geTsKKyAgICAgICAgICBpZiAoIHkgPiB5TWF4ICkgeU1heCA9IHk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGFjYm94LT54TWluID0geE1pbjsKKyAgICAgIGFjYm94LT54TWF4ID0geE1heDsKKyAgICAgIGFjYm94LT55TWluID0geU1pbjsKKyAgICAgIGFjYm94LT55TWF4ID0geU1heDsKKyAgICB9CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRvdXRsbi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX091dGxpbmVfVHJhbnNsYXRlKCBjb25zdCBGVF9PdXRsaW5lKiAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgICAgICB4T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgICAgICAgIHlPZmZzZXQgKQorICB7CisgICAgRlRfVVNob3J0ICAgbjsKKyAgICBGVF9WZWN0b3IqICB2ZWM7CisKKworICAgIGlmICggIW91dGxpbmUgKQorICAgICAgcmV0dXJuOworCisgICAgdmVjID0gb3V0bGluZS0+cG9pbnRzOworCisgICAgZm9yICggbiA9IDA7IG4gPCBvdXRsaW5lLT5uX3BvaW50czsgbisrICkKKyAgICB7CisgICAgICB2ZWMtPnggKz0geE9mZnNldDsKKyAgICAgIHZlYy0+eSArPSB5T2Zmc2V0OworICAgICAgdmVjKys7CisgICAgfQorICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0b3V0bG4uaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9PdXRsaW5lX1JldmVyc2UoIEZUX091dGxpbmUqICBvdXRsaW5lICkKKyAgeworICAgIEZUX1VTaG9ydCAgbjsKKyAgICBGVF9JbnQgICAgIGZpcnN0LCBsYXN0OworCisKKyAgICBpZiAoICFvdXRsaW5lICkKKyAgICAgIHJldHVybjsKKworICAgIGZpcnN0ID0gMDsKKworICAgIGZvciAoIG4gPSAwOyBuIDwgb3V0bGluZS0+bl9jb250b3VyczsgbisrICkKKyAgICB7CisgICAgICBsYXN0ICA9IG91dGxpbmUtPmNvbnRvdXJzW25dOworCisgICAgICAvKiByZXZlcnNlIHBvaW50IHRhYmxlICovCisgICAgICB7CisgICAgICAgIEZUX1ZlY3RvciogIHAgPSBvdXRsaW5lLT5wb2ludHMgKyBmaXJzdDsKKyAgICAgICAgRlRfVmVjdG9yKiAgcSA9IG91dGxpbmUtPnBvaW50cyArIGxhc3Q7CisgICAgICAgIEZUX1ZlY3RvciAgIHN3YXA7CisKKworICAgICAgICB3aGlsZSAoIHAgPCBxICkKKyAgICAgICAgeworICAgICAgICAgIHN3YXAgPSAqcDsKKyAgICAgICAgICAqcCAgID0gKnE7CisgICAgICAgICAgKnEgICA9IHN3YXA7CisgICAgICAgICAgcCsrOworICAgICAgICAgIHEtLTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiByZXZlcnNlIHRhZ3MgdGFibGUgKi8KKyAgICAgIHsKKyAgICAgICAgY2hhciogIHAgPSBvdXRsaW5lLT50YWdzICsgZmlyc3Q7CisgICAgICAgIGNoYXIqICBxID0gb3V0bGluZS0+dGFncyArIGxhc3Q7CisgICAgICAgIGNoYXIgICBzd2FwOworCisKKyAgICAgICAgd2hpbGUgKCBwIDwgcSApCisgICAgICAgIHsKKyAgICAgICAgICBzd2FwID0gKnA7CisgICAgICAgICAgKnAgICA9ICpxOworICAgICAgICAgICpxICAgPSBzd2FwOworICAgICAgICAgIHArKzsKKyAgICAgICAgICBxLS07CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZmlyc3QgPSBsYXN0ICsgMTsKKyAgICB9CisKKyAgICBvdXRsaW5lLT5mbGFncyBePSBGVF9PVVRMSU5FX1JFVkVSU0VfRklMTDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG91dGxuLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfUmVuZGVyKCBGVF9MaWJyYXJ5ICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX091dGxpbmUqICAgICAgICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgRlRfUmFzdGVyX1BhcmFtcyogIHBhcmFtcyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgZXJyb3I7CisgICAgRlRfQm9vbCAgICAgIHVwZGF0ZSA9IEZBTFNFOworICAgIEZUX1JlbmRlcmVyICByZW5kZXJlcjsKKyAgICBGVF9MaXN0Tm9kZSAgbm9kZTsKKworCisgICAgaWYgKCAhbGlicmFyeSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfTGlicmFyeV9IYW5kbGUgKTsKKworICAgIGlmICggIW91dGxpbmUgfHwgIXBhcmFtcyApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIHJlbmRlcmVyID0gbGlicmFyeS0+Y3VyX3JlbmRlcmVyOworICAgIG5vZGUgICAgID0gbGlicmFyeS0+cmVuZGVyZXJzLmhlYWQ7CisKKyAgICBwYXJhbXMtPnNvdXJjZSA9ICh2b2lkKilvdXRsaW5lOworCisgICAgZXJyb3IgPSBGVF9FUlIoIENhbm5vdF9SZW5kZXJfR2x5cGggKTsKKyAgICB3aGlsZSAoIHJlbmRlcmVyICkKKyAgICB7CisgICAgICBlcnJvciA9IHJlbmRlcmVyLT5yYXN0ZXJfcmVuZGVyKCByZW5kZXJlci0+cmFzdGVyLCBwYXJhbXMgKTsKKyAgICAgIGlmICggIWVycm9yIHx8IEZUX0VSUl9ORVEoIGVycm9yLCBDYW5ub3RfUmVuZGVyX0dseXBoICkgKQorICAgICAgICBicmVhazsKKworICAgICAgLyogRlRfRXJyX0Nhbm5vdF9SZW5kZXJfR2x5cGggaXMgcmV0dXJuZWQgaWYgdGhlIHJlbmRlciBtb2RlICAgKi8KKyAgICAgIC8qIGlzIHVuc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IHJlbmRlcmVyIGZvciB0aGlzIGdseXBoIGltYWdlICovCisgICAgICAvKiBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAvKiBub3csIGxvb2sgZm9yIGFub3RoZXIgcmVuZGVyZXIgdGhhdCBzdXBwb3J0cyB0aGUgc2FtZSAqLworICAgICAgLyogZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIHJlbmRlcmVyID0gRlRfTG9va3VwX1JlbmRlcmVyKCBsaWJyYXJ5LCBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbm9kZSApOworICAgICAgdXBkYXRlICAgPSBUUlVFOworICAgIH0KKworICAgIC8qIGlmIHdlIGNoYW5nZWQgdGhlIGN1cnJlbnQgcmVuZGVyZXIgZm9yIHRoZSBnbHlwaCBpbWFnZSBmb3JtYXQgKi8KKyAgICAvKiB3ZSBuZWVkIHRvIHNlbGVjdCBpdCBhcyB0aGUgbmV4dCBjdXJyZW50IG9uZSAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCAhZXJyb3IgJiYgdXBkYXRlICYmIHJlbmRlcmVyICkKKyAgICAgIEZUX1NldF9SZW5kZXJlciggbGlicmFyeSwgcmVuZGVyZXIsIDAsIDAgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG91dGxuLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfR2V0X0JpdG1hcCggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgICAgICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0JpdG1hcCAgKmFiaXRtYXAgKQorICB7CisgICAgRlRfUmFzdGVyX1BhcmFtcyAgcGFyYW1zOworCisKKyAgICBpZiAoICFhYml0bWFwICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgLyogb3RoZXIgY2hlY2tzIGFyZSBkZWxheWVkIHRvIEZUX091dGxpbmVfUmVuZGVyKCkgKi8KKworICAgIHBhcmFtcy50YXJnZXQgPSBhYml0bWFwOworICAgIHBhcmFtcy5mbGFncyAgPSAwOworCisgICAgaWYgKCBhYml0bWFwLT5waXhlbF9tb2RlID09IEZUX1BJWEVMX01PREVfR1JBWSAgfHwKKyAgICAgICAgIGFiaXRtYXAtPnBpeGVsX21vZGUgPT0gRlRfUElYRUxfTU9ERV9MQ0QgICB8fAorICAgICAgICAgYWJpdG1hcC0+cGl4ZWxfbW9kZSA9PSBGVF9QSVhFTF9NT0RFX0xDRF9WICkKKyAgICAgIHBhcmFtcy5mbGFncyB8PSBGVF9SQVNURVJfRkxBR19BQTsKKworICAgIHJldHVybiBGVF9PdXRsaW5lX1JlbmRlciggbGlicmFyeSwgb3V0bGluZSwgJnBhcmFtcyApOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfVmVjdG9yX1RyYW5zZm9ybSggRlRfVmVjdG9yKiAgICAgICAgdmVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9NYXRyaXgqICBtYXRyaXggKQorICB7CisgICAgRlRfUG9zICB4eiwgeXo7CisKKworICAgIGlmICggIXZlY3RvciB8fCAhbWF0cml4ICkKKyAgICAgIHJldHVybjsKKworICAgIHh6ID0gRlRfTXVsRml4KCB2ZWN0b3ItPngsIG1hdHJpeC0+eHggKSArCisgICAgICAgICBGVF9NdWxGaXgoIHZlY3Rvci0+eSwgbWF0cml4LT54eSApOworCisgICAgeXogPSBGVF9NdWxGaXgoIHZlY3Rvci0+eCwgbWF0cml4LT55eCApICsKKyAgICAgICAgIEZUX011bEZpeCggdmVjdG9yLT55LCBtYXRyaXgtPnl5ICk7CisKKyAgICB2ZWN0b3ItPnggPSB4ejsKKyAgICB2ZWN0b3ItPnkgPSB5ejsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG91dGxuLmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfT3V0bGluZV9UcmFuc2Zvcm0oIGNvbnN0IEZUX091dGxpbmUqICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfTWF0cml4KiAgIG1hdHJpeCApCisgIHsKKyAgICBGVF9WZWN0b3IqICB2ZWM7CisgICAgRlRfVmVjdG9yKiAgbGltaXQ7CisKKworICAgIGlmICggIW91dGxpbmUgfHwgIW1hdHJpeCApCisgICAgICByZXR1cm47CisKKyAgICB2ZWMgICA9IG91dGxpbmUtPnBvaW50czsKKyAgICBsaW1pdCA9IHZlYyArIG91dGxpbmUtPm5fcG9pbnRzOworCisgICAgZm9yICggOyB2ZWMgPCBsaW1pdDsgdmVjKysgKQorICAgICAgRlRfVmVjdG9yX1RyYW5zZm9ybSggdmVjLCBtYXRyaXggKTsKKyAgfQorCisKKyNpZiAwCisKKyNkZWZpbmUgRlRfT1VUTElORV9HRVRfQ09OVE9VUiggb3V0bGluZSwgYywgZmlyc3QsIGxhc3QgKSAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGZpcnN0KSA9ICggYyA+IDAgKSA/IChvdXRsaW5lKS0+cG9pbnRzICsgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3V0bGluZSktPmNvbnRvdXJzW2MgLSAxXSArIDEgXAorICAgICAgICAgICAgICAgICAgICAgICAgOiAob3V0bGluZSktPnBvaW50czsgICAgICAgICAgICAgICBcCisgICAgKGxhc3QpID0gKG91dGxpbmUpLT5wb2ludHMgKyAob3V0bGluZSktPmNvbnRvdXJzW2NdOyAgIFwKKyAgfSB3aGlsZSAoIDAgKQorCisKKyAgLyogSXMgYSBwb2ludCBpbiBzb21lIGNvbnRvdXI/ICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogV2UgdHJlYXQgZXZlcnkgcG9pbnQgb2YgdGhlIGNvbnRvdXIgYXMgaWYgaXQgICAgKi8KKyAgLyogaXQgd2VyZSBPTi4gIFRoYXQgaXMsIHdlIGFsbG93IGZhbHNlIHBvc2l0aXZlcywgKi8KKyAgLyogYnV0IGRpc2FsbG93IGZhbHNlIG5lZ2F0aXZlcy4gIChYWFggcmVhbGx5PykgICAgKi8KKyAgc3RhdGljIEZUX0Jvb2wKKyAgZnRfY29udG91cl9oYXMoIEZUX091dGxpbmUqICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgRlRfU2hvcnQgICAgIGMsCisgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICAgcG9pbnQgKQorICB7CisgICAgRlRfVmVjdG9yKiAgZmlyc3Q7CisgICAgRlRfVmVjdG9yKiAgbGFzdDsKKyAgICBGVF9WZWN0b3IqICBhOworICAgIEZUX1ZlY3RvciogIGI7CisgICAgRlRfVUludCAgICAgbiA9IDA7CisKKworICAgIEZUX09VVExJTkVfR0VUX0NPTlRPVVIoIG91dGxpbmUsIGMsIGZpcnN0LCBsYXN0ICk7CisKKyAgICBmb3IgKCBhID0gZmlyc3Q7IGEgPD0gbGFzdDsgYSsrICkKKyAgICB7CisgICAgICBGVF9Qb3MgIHg7CisgICAgICBGVF9JbnQgIGludGVyc2VjdDsKKworCisgICAgICBiID0gKCBhID09IGxhc3QgKSA/IGZpcnN0IDogYSArIDE7CisKKyAgICAgIGludGVyc2VjdCA9ICggYS0+eSAtIHBvaW50LT55ICkgXiAoIGItPnkgLSBwb2ludC0+eSApOworCisgICAgICAvKiBhIGFuZCBiIGFyZSBvbiB0aGUgc2FtZSBzaWRlICovCisgICAgICBpZiAoIGludGVyc2VjdCA+PSAwICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBpbnRlcnNlY3QgPT0gMCAmJiBhLT55ID09IHBvaW50LT55ICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggKCBhLT54IDw9IHBvaW50LT54ICYmIGItPnggPj0gcG9pbnQtPnggKSB8fAorICAgICAgICAgICAgICAgKCBhLT54ID49IHBvaW50LT54ICYmIGItPnggPD0gcG9pbnQtPnggKSApCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICB4ID0gYS0+eCArICggYi0+eCAtIGEtPnggKSAqIChwb2ludC0+eSAtIGEtPnkgKSAvICggYi0+eSAtIGEtPnkgKTsKKworICAgICAgaWYgKCB4IDwgcG9pbnQtPnggKQorICAgICAgICBuKys7CisgICAgICBlbHNlIGlmICggeCA9PSBwb2ludC0+eCApCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiBuICYgMTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Jvb2wKKyAgZnRfY29udG91cl9lbmNsb3NlZCggRlRfT3V0bGluZSogIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VTaG9ydCAgICBjICkKKyAgeworICAgIEZUX1ZlY3RvciogIGZpcnN0OworICAgIEZUX1ZlY3RvciogIGxhc3Q7CisgICAgRlRfU2hvcnQgICAgaTsKKworCisgICAgRlRfT1VUTElORV9HRVRfQ09OVE9VUiggb3V0bGluZSwgYywgZmlyc3QsIGxhc3QgKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgb3V0bGluZS0+bl9jb250b3VyczsgaSsrICkKKyAgICB7CisgICAgICBpZiAoIGkgIT0gYyAmJiBmdF9jb250b3VyX2hhcyggb3V0bGluZSwgaSwgZmlyc3QgKSApCisgICAgICB7CisgICAgICAgIEZUX1ZlY3RvciogIHB0OworCisKKyAgICAgICAgZm9yICggcHQgPSBmaXJzdCArIDE7IHB0IDw9IGxhc3Q7IHB0KysgKQorICAgICAgICAgIGlmICggIWZ0X2NvbnRvdXJfaGFzKCBvdXRsaW5lLCBpLCBwdCApICkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiAxOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworICB9CisKKworICAvKiBUaGlzIHZlcnNpb24gZGlmZmVycyBmcm9tIHRoZSBwdWJsaWMgb25lIGluIHRoYXQgZWFjaCAqLworICAvKiBwYXJ0IChjb250b3VyIG5vdCBlbmNsb3NlZCBpbiBhbm90aGVyIGNvbnRvdXIpIG9mIHRoZSAqLworICAvKiBvdXRsaW5lIGlzIGNoZWNrZWQgZm9yIG9yaWVudGF0aW9uLiAgVGhpcyBpcyAgICAgICAgICAqLworICAvKiBuZWNlc3NhcnkgZm9yIHNvbWUgYnVnZ3kgQ0pLIGZvbnRzLiAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfT3JpZW50YXRpb24KKyAgZnRfb3V0bGluZV9nZXRfb3JpZW50YXRpb24oIEZUX091dGxpbmUqICBvdXRsaW5lICkKKyAgeworICAgIEZUX1Nob3J0ICAgICAgICBpOworICAgIEZUX1ZlY3RvciogICAgICBmaXJzdDsKKyAgICBGVF9WZWN0b3IqICAgICAgbGFzdDsKKyAgICBGVF9PcmllbnRhdGlvbiAgb3JpZW50ID0gRlRfT1JJRU5UQVRJT05fTk9ORTsKKworCisgICAgZmlyc3QgPSBvdXRsaW5lLT5wb2ludHM7CisgICAgZm9yICggaSA9IDA7IGkgPCBvdXRsaW5lLT5uX2NvbnRvdXJzOyBpKyssIGZpcnN0ID0gbGFzdCArIDEgKQorICAgIHsKKyAgICAgIEZUX1ZlY3RvciogIHBvaW50OworICAgICAgRlRfVmVjdG9yKiAgeG1pbl9wb2ludDsKKyAgICAgIEZUX1BvcyAgICAgIHhtaW47CisKKworICAgICAgbGFzdCA9IG91dGxpbmUtPnBvaW50cyArIG91dGxpbmUtPmNvbnRvdXJzW2ldOworCisgICAgICAvKiBza2lwIGRlZ2VuZXJhdGUgY29udG91cnMgKi8KKyAgICAgIGlmICggbGFzdCA8IGZpcnN0ICsgMiApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoIGZ0X2NvbnRvdXJfZW5jbG9zZWQoIG91dGxpbmUsIGkgKSApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICB4bWluICAgICAgID0gZmlyc3QtPng7CisgICAgICB4bWluX3BvaW50ID0gZmlyc3Q7CisKKyAgICAgIGZvciAoIHBvaW50ID0gZmlyc3QgKyAxOyBwb2ludCA8PSBsYXN0OyBwb2ludCsrICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBwb2ludC0+eCA8IHhtaW4gKQorICAgICAgICB7CisgICAgICAgICAgeG1pbiAgICAgICA9IHBvaW50LT54OworICAgICAgICAgIHhtaW5fcG9pbnQgPSBwb2ludDsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiBjaGVjayB0aGUgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRvdXIgKi8KKyAgICAgIHsKKyAgICAgICAgRlRfVmVjdG9yKiAgICAgIHByZXY7CisgICAgICAgIEZUX1ZlY3RvciogICAgICBuZXh0OworICAgICAgICBGVF9PcmllbnRhdGlvbiAgbzsKKworCisgICAgICAgIHByZXYgPSAoIHhtaW5fcG9pbnQgPT0gZmlyc3QgKSA/IGxhc3QgOiB4bWluX3BvaW50IC0gMTsKKyAgICAgICAgbmV4dCA9ICggeG1pbl9wb2ludCA9PSBsYXN0ICkgPyBmaXJzdCA6IHhtaW5fcG9pbnQgKyAxOworCisgICAgICAgIGlmICggRlRfQXRhbjIoIHByZXYtPnggLSB4bWluX3BvaW50LT54LCBwcmV2LT55IC0geG1pbl9wb2ludC0+eSApID4KKyAgICAgICAgICAgICBGVF9BdGFuMiggbmV4dC0+eCAtIHhtaW5fcG9pbnQtPngsIG5leHQtPnkgLSB4bWluX3BvaW50LT55ICkgKQorICAgICAgICAgIG8gPSBGVF9PUklFTlRBVElPTl9QT1NUU0NSSVBUOworICAgICAgICBlbHNlCisgICAgICAgICAgbyA9IEZUX09SSUVOVEFUSU9OX1RSVUVUWVBFOworCisgICAgICAgIGlmICggb3JpZW50ID09IEZUX09SSUVOVEFUSU9OX05PTkUgKQorICAgICAgICAgIG9yaWVudCA9IG87CisgICAgICAgIGVsc2UgaWYgKCBvcmllbnQgIT0gbyApCisgICAgICAgICAgcmV0dXJuIEZUX09SSUVOVEFUSU9OX05PTkU7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG9yaWVudDsKKyAgfQorCisjZW5kaWYgLyogMCAqLworCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG91dGxuLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX091dGxpbmVfRW1ib2xkZW4oIEZUX091dGxpbmUqICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgc3RyZW5ndGggKQorICB7CisgICAgcmV0dXJuIEZUX091dGxpbmVfRW1ib2xkZW5YWSggb3V0bGluZSwgc3RyZW5ndGgsIHN0cmVuZ3RoICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRvdXRsbi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9PdXRsaW5lX0VtYm9sZGVuWFkoIEZUX091dGxpbmUqICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICB4c3RyZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgIHlzdHJlbmd0aCApCisgIHsKKyAgICBGVF9WZWN0b3IqICBwb2ludHM7CisgICAgRlRfVmVjdG9yICAgdl9wcmV2LCB2X2ZpcnN0LCB2X25leHQsIHZfY3VyOworICAgIEZUX0ludCAgICAgIGMsIG4sIGZpcnN0OworICAgIEZUX0ludCAgICAgIG9yaWVudGF0aW9uOworCisKKyAgICBpZiAoICFvdXRsaW5lICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgeHN0cmVuZ3RoIC89IDI7CisgICAgeXN0cmVuZ3RoIC89IDI7CisgICAgaWYgKCB4c3RyZW5ndGggPT0gMCAmJiB5c3RyZW5ndGggPT0gMCApCisgICAgICByZXR1cm4gRlRfRXJyX09rOworCisgICAgb3JpZW50YXRpb24gPSBGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbiggb3V0bGluZSApOworICAgIGlmICggb3JpZW50YXRpb24gPT0gRlRfT1JJRU5UQVRJT05fTk9ORSApCisgICAgeworICAgICAgaWYgKCBvdXRsaW5lLT5uX2NvbnRvdXJzICkKKyAgICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBlbHNlCisgICAgICAgIHJldHVybiBGVF9FcnJfT2s7CisgICAgfQorCisgICAgcG9pbnRzID0gb3V0bGluZS0+cG9pbnRzOworCisgICAgZmlyc3QgPSAwOworICAgIGZvciAoIGMgPSAwOyBjIDwgb3V0bGluZS0+bl9jb250b3VyczsgYysrICkKKyAgICB7CisgICAgICBGVF9WZWN0b3IgIGluLCBvdXQsIHNoaWZ0OworICAgICAgRlRfRml4ZWQgICBsX2luLCBsX291dCwgbCwgcSwgZDsKKyAgICAgIGludCAgICAgICAgbGFzdCA9IG91dGxpbmUtPmNvbnRvdXJzW2NdOworCisKKyAgICAgIHZfZmlyc3QgPSBwb2ludHNbZmlyc3RdOworICAgICAgdl9wcmV2ICA9IHBvaW50c1tsYXN0XTsKKyAgICAgIHZfY3VyICAgPSB2X2ZpcnN0OworCisgICAgICAvKiBjb21wdXRlIGluY29taW5nIG5vcm1hbGl6ZWQgdmVjdG9yICovCisgICAgICBpbi54ID0gdl9jdXIueCAtIHZfcHJldi54OworICAgICAgaW4ueSA9IHZfY3VyLnkgLSB2X3ByZXYueTsKKyAgICAgIGxfaW4gPSBGVF9WZWN0b3JfTGVuZ3RoKCAmaW4gKTsKKyAgICAgIGlmICggbF9pbiApCisgICAgICB7CisgICAgICAgIGluLnggPSBGVF9EaXZGaXgoIGluLngsIGxfaW4gKTsKKyAgICAgICAgaW4ueSA9IEZUX0RpdkZpeCggaW4ueSwgbF9pbiApOworICAgICAgfQorCisgICAgICBmb3IgKCBuID0gZmlyc3Q7IG4gPD0gbGFzdDsgbisrICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBuIDwgbGFzdCApCisgICAgICAgICAgdl9uZXh0ID0gcG9pbnRzW24gKyAxXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHZfbmV4dCA9IHZfZmlyc3Q7CisKKyAgICAgICAgLyogY29tcHV0ZSBvdXRnb2luZyBub3JtYWxpemVkIHZlY3RvciAqLworICAgICAgICBvdXQueCA9IHZfbmV4dC54IC0gdl9jdXIueDsKKyAgICAgICAgb3V0LnkgPSB2X25leHQueSAtIHZfY3VyLnk7CisgICAgICAgIGxfb3V0ID0gRlRfVmVjdG9yX0xlbmd0aCggJm91dCApOworICAgICAgICBpZiAoIGxfb3V0ICkKKyAgICAgICAgeworICAgICAgICAgIG91dC54ID0gRlRfRGl2Rml4KCBvdXQueCwgbF9vdXQgKTsKKyAgICAgICAgICBvdXQueSA9IEZUX0RpdkZpeCggb3V0LnksIGxfb3V0ICk7CisgICAgICAgIH0KKworICAgICAgICBkID0gRlRfTXVsRml4KCBpbi54LCBvdXQueCApICsgRlRfTXVsRml4KCBpbi55LCBvdXQueSApOworCisgICAgICAgIC8qIHNoaWZ0IG9ubHkgaWYgdHVybiBpcyBsZXNzIHRoYW4gfjE2MCBkZWdyZWVzICovCisgICAgICAgIGlmICggZCA+IC0weEYwMDBMICkKKyAgICAgICAgeworICAgICAgICAgIGQgPSBkICsgMHgxMDAwMEw7CisKKyAgICAgICAgICAvKiBzaGlmdCBjb21wb25lbnRzIGFyZSBhbGlnbmVkIGFsb25nIGxhdGVyYWwgYmlzZWN0b3IgKi8KKyAgICAgICAgICAvKiBhbmQgZGlyZWN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBvdXRsaW5lIG9yaWVudGF0aW9uLiAgKi8KKyAgICAgICAgICBzaGlmdC54ID0gaW4ueSArIG91dC55OworICAgICAgICAgIHNoaWZ0LnkgPSBpbi54ICsgb3V0Lng7CisKKyAgICAgICAgICBpZiAoIG9yaWVudGF0aW9uID09IEZUX09SSUVOVEFUSU9OX1RSVUVUWVBFICkKKyAgICAgICAgICAgIHNoaWZ0LnggPSAtc2hpZnQueDsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBzaGlmdC55ID0gLXNoaWZ0Lnk7CisKKyAgICAgICAgICAvKiByZXN0cmljdCBzaGlmdCBtYWduaXR1ZGUgdG8gYmV0dGVyIGhhbmRsZSBjb2xsYXBzaW5nIHNlZ21lbnRzICovCisgICAgICAgICAgcSA9IEZUX011bEZpeCggb3V0LngsIGluLnkgKSAtIEZUX011bEZpeCggb3V0LnksIGluLnggKTsKKyAgICAgICAgICBpZiAoIG9yaWVudGF0aW9uID09IEZUX09SSUVOVEFUSU9OX1RSVUVUWVBFICkKKyAgICAgICAgICAgIHEgPSAtcTsKKworICAgICAgICAgIGwgPSBGVF9NSU4oIGxfaW4sIGxfb3V0ICk7CisKKyAgICAgICAgICAvKiBub24tc3RyaWN0IGluZXF1YWxpdGllcyBhdm9pZCBkaXZpZGUtYnktemVybyB3aGVuIHEgPT0gbCA9PSAwICovCisgICAgICAgICAgaWYgKCBGVF9NdWxGaXgoIHhzdHJlbmd0aCwgcSApIDw9IEZUX011bEZpeCggZCwgbCApICkKKyAgICAgICAgICAgIHNoaWZ0LnggPSBGVF9NdWxEaXYoIHNoaWZ0LngsIHhzdHJlbmd0aCwgZCApOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNoaWZ0LnggPSBGVF9NdWxEaXYoIHNoaWZ0LngsIGwsIHEgKTsKKworCisgICAgICAgICAgaWYgKCBGVF9NdWxGaXgoIHlzdHJlbmd0aCwgcSApIDw9IEZUX011bEZpeCggZCwgbCApICkKKyAgICAgICAgICAgIHNoaWZ0LnkgPSBGVF9NdWxEaXYoIHNoaWZ0LnksIHlzdHJlbmd0aCwgZCApOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNoaWZ0LnkgPSBGVF9NdWxEaXYoIHNoaWZ0LnksIGwsIHEgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgc2hpZnQueCA9IHNoaWZ0LnkgPSAwOworCisgICAgICAgIG91dGxpbmUtPnBvaW50c1tuXS54ID0gdl9jdXIueCArIHhzdHJlbmd0aCArIHNoaWZ0Lng7CisgICAgICAgIG91dGxpbmUtPnBvaW50c1tuXS55ID0gdl9jdXIueSArIHlzdHJlbmd0aCArIHNoaWZ0Lnk7CisKKyAgICAgICAgaW4gICAgPSBvdXQ7CisgICAgICAgIGxfaW4gID0gbF9vdXQ7CisgICAgICAgIHZfY3VyID0gdl9uZXh0OworICAgICAgfQorCisgICAgICBmaXJzdCA9IGxhc3QgKyAxOworICAgIH0KKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRvdXRsbi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfT3JpZW50YXRpb24gKQorICBGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbiggRlRfT3V0bGluZSogIG91dGxpbmUgKQorICB7CisgICAgRlRfQkJveCAgICAgY2JveDsKKyAgICBGVF9JbnQgICAgICB4c2hpZnQsIHlzaGlmdDsKKyAgICBGVF9WZWN0b3IqICBwb2ludHM7CisgICAgRlRfVmVjdG9yICAgdl9wcmV2LCB2X2N1cjsKKyAgICBGVF9JbnQgICAgICBjLCBuLCBmaXJzdDsKKyAgICBGVF9Qb3MgICAgICBhcmVhID0gMDsKKworCisgICAgaWYgKCAhb3V0bGluZSB8fCBvdXRsaW5lLT5uX3BvaW50cyA8PSAwICkKKyAgICAgIHJldHVybiBGVF9PUklFTlRBVElPTl9UUlVFVFlQRTsKKworICAgIC8qIFdlIHVzZSB0aGUgbm9uemVybyB3aW5kaW5nIHJ1bGUgdG8gZmluZCB0aGUgb3JpZW50YXRpb24uICAgICAgICovCisgICAgLyogU2luY2UgZ2x5cGggb3V0bGluZXMgYmVoYXZlIG11Y2ggbW9yZSBgcmVndWxhcicgdGhhbiBhcmJpdHJhcnkgKi8KKyAgICAvKiBjdWJpYyBvciBxdWFkcmF0aWMgY3VydmVzLCB0aGlzIHRlc3QgZGVhbHMgd2l0aCB0aGUgcG9seWdvbiAgICAqLworICAgIC8qIG9ubHkgd2hpY2ggaXMgc3Bhbm5lZCB1cCBieSB0aGUgY29udHJvbCBwb2ludHMuICAgICAgICAgICAgICAgICovCisKKyAgICBGVF9PdXRsaW5lX0dldF9DQm94KCBvdXRsaW5lLCAmY2JveCApOworCisgICAgeHNoaWZ0ID0gRlRfTVNCKCBGVF9BQlMoIGNib3gueE1heCApIHwgRlRfQUJTKCBjYm94LnhNaW4gKSApIC0gMTQ7CisgICAgeHNoaWZ0ID0gRlRfTUFYKCB4c2hpZnQsIDAgKTsKKworICAgIHlzaGlmdCA9IEZUX01TQiggY2JveC55TWF4IC0gY2JveC55TWluICkgLSAxNDsKKyAgICB5c2hpZnQgPSBGVF9NQVgoIHlzaGlmdCwgMCApOworCisgICAgcG9pbnRzID0gb3V0bGluZS0+cG9pbnRzOworCisgICAgZmlyc3QgPSAwOworICAgIGZvciAoIGMgPSAwOyBjIDwgb3V0bGluZS0+bl9jb250b3VyczsgYysrICkKKyAgICB7CisgICAgICBGVF9JbnQgIGxhc3QgPSBvdXRsaW5lLT5jb250b3Vyc1tjXTsKKworCisgICAgICB2X3ByZXYgPSBwb2ludHNbbGFzdF07CisKKyAgICAgIGZvciAoIG4gPSBmaXJzdDsgbiA8PSBsYXN0OyBuKysgKQorICAgICAgeworICAgICAgICB2X2N1ciA9IHBvaW50c1tuXTsKKyAgICAgICAgYXJlYSArPSAoICggdl9jdXIueSAtIHZfcHJldi55ICkgPj4geXNoaWZ0ICkgKgorICAgICAgICAgICAgICAgICggKCB2X2N1ci54ICsgdl9wcmV2LnggKSA+PiB4c2hpZnQgKTsKKyAgICAgICAgdl9wcmV2ID0gdl9jdXI7CisgICAgICB9CisKKyAgICAgIGZpcnN0ID0gbGFzdCArIDE7CisgICAgfQorCisgICAgaWYgKCBhcmVhID4gMCApCisgICAgICByZXR1cm4gRlRfT1JJRU5UQVRJT05fUE9TVFNDUklQVDsKKyAgICBlbHNlIGlmICggYXJlYSA8IDAgKQorICAgICAgcmV0dXJuIEZUX09SSUVOVEFUSU9OX1RSVUVUWVBFOworICAgIGVsc2UKKyAgICAgIHJldHVybiBGVF9PUklFTlRBVElPTl9OT05FOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRwYXRlbnQuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHBhdGVudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4OTExOWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRwYXRlbnQuYwpAQCAtMCwwICsxLDI4NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRwYXRlbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEFQSSBmb3IgY2hlY2tpbmcgcGF0ZW50ZWQgVHJ1ZVR5cGUgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zICAgICovCisvKiAgICAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNywgMjAwOCwgMjAxMCBieSBEYXZpZCBUdXJuZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS90dHRhZ3MuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2c2ZudC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGdseWYuaCIKKworCisgIHN0YXRpYyBGVF9Cb29sCisgIF90dF9jaGVja19wYXRlbnRzX2luX3JhbmdlKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgc2l6ZSApCisgIHsKKyAgICBGVF9Cb29sICAgcmVzdWx0ID0gRkFMU0U7CisgICAgRlRfRXJyb3IgIGVycm9yOworICAgIEZUX0J5dGVzICBwLCBlbmQ7CisKKworICAgIGlmICggRlRfRlJBTUVfRU5URVIoIHNpemUgKSApCisgICAgICByZXR1cm4gMDsKKworICAgIHAgICA9IHN0cmVhbS0+Y3Vyc29yOworICAgIGVuZCA9IHAgKyBzaXplOworCisgICAgd2hpbGUgKCBwIDwgZW5kICkKKyAgICB7CisgICAgICBzd2l0Y2ggKHBbMF0pCisgICAgICB7CisgICAgICBjYXNlIDB4MDY6ICAvKiBTUHZUTCAvLyAqLworICAgICAgY2FzZSAweDA3OiAgLyogU1B2VEwgKyAgKi8KKyAgICAgIGNhc2UgMHgwODogIC8qIFNGdlRMIC8vICovCisgICAgICBjYXNlIDB4MDk6ICAvKiBTRnZUTCArICAqLworICAgICAgY2FzZSAweDBBOiAgLyogU1B2RlMgICAgKi8KKyAgICAgIGNhc2UgMHgwQjogIC8qIFNGdkZTICAgICovCisgICAgICAgIHJlc3VsdCA9IFRSVUU7CisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgY2FzZSAweDQwOgorICAgICAgICBpZiAoIHAgKyAxID49IGVuZCApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIHAgKz0gcFsxXSArIDI7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDB4NDE6CisgICAgICAgIGlmICggcCArIDEgPj0gZW5kICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgcCArPSBwWzFdICogMiArIDI7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDB4NzE6ICAvKiBERUxUQVAyICovCisgICAgICBjYXNlIDB4NzI6ICAvKiBERUxUQVAzICovCisgICAgICBjYXNlIDB4NzM6ICAvKiBERUxUQUMwICovCisgICAgICBjYXNlIDB4NzQ6ICAvKiBERUxUQUMxICovCisgICAgICBjYXNlIDB4NzU6ICAvKiBERUxUQUMyICovCisgICAgICAgIHJlc3VsdCA9IFRSVUU7CisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgY2FzZSAweEIwOgorICAgICAgY2FzZSAweEIxOgorICAgICAgY2FzZSAweEIyOgorICAgICAgY2FzZSAweEIzOgorICAgICAgY2FzZSAweEI0OgorICAgICAgY2FzZSAweEI1OgorICAgICAgY2FzZSAweEI2OgorICAgICAgY2FzZSAweEI3OgorICAgICAgICBwICs9ICggcFswXSAtIDB4QjAgKSArIDI7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDB4Qjg6CisgICAgICBjYXNlIDB4Qjk6CisgICAgICBjYXNlIDB4QkE6CisgICAgICBjYXNlIDB4QkI6CisgICAgICBjYXNlIDB4QkM6CisgICAgICBjYXNlIDB4QkQ6CisgICAgICBjYXNlIDB4QkU6CisgICAgICBjYXNlIDB4QkY6CisgICAgICAgIHAgKz0gKCBwWzBdIC0gMHhCOCApICogMiArIDM7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBwICs9IDE7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICBFeGl0OgorICAgIEZUX1VOVVNFRCggZXJyb3IgKTsKKyAgICBGVF9GUkFNRV9FWElUKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Jvb2wKKyAgX3R0X2NoZWNrX3BhdGVudHNfaW5fdGFibGUoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHRhZyApCisgIHsKKyAgICBGVF9TdHJlYW0gICAgICAgICAgICAgIHN0cmVhbSA9IGZhY2UtPnN0cmVhbTsKKyAgICBGVF9FcnJvciAgICAgICAgICAgICAgIGVycm9yICA9IEZUX0Vycl9PazsKKyAgICBGVF9TZXJ2aWNlX1NGTlRfVGFibGUgIHNlcnZpY2U7CisgICAgRlRfQm9vbCAgICAgICAgICAgICAgICByZXN1bHQgPSBGQUxTRTsKKworCisgICAgRlRfRkFDRV9GSU5EX1NFUlZJQ0UoIGZhY2UsIHNlcnZpY2UsIFNGTlRfVEFCTEUgKTsKKworICAgIGlmICggc2VydmljZSApCisgICAgeworICAgICAgRlRfVUludCAgIGkgPSAwOworICAgICAgRlRfVUxvbmcgIHRhZ19pID0gMCwgb2Zmc2V0X2kgPSAwLCBsZW5ndGhfaSA9IDA7CisKKworICAgICAgZm9yICggaSA9IDA7ICFlcnJvciAmJiB0YWdfaSAhPSB0YWcgOyBpKysgKQorICAgICAgICBlcnJvciA9IHNlcnZpY2UtPnRhYmxlX2luZm8oIGZhY2UsIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhZ19pLCAmb2Zmc2V0X2ksICZsZW5ndGhfaSApOworCisgICAgICBpZiAoIGVycm9yICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgIEZUX1NUUkVBTV9TRUVLKCBvZmZzZXRfaSApICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICByZXN1bHQgPSBfdHRfY2hlY2tfcGF0ZW50c19pbl9yYW5nZSggc3RyZWFtLCBsZW5ndGhfaSApOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIHN0YXRpYyBGVF9Cb29sCisgIF90dF9mYWNlX2NoZWNrX3BhdGVudHMoIEZUX0ZhY2UgIGZhY2UgKQorICB7CisgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBmYWNlLT5zdHJlYW07CisgICAgRlRfVUludCAgICBnaW5kZXg7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9Cb29sICAgIHJlc3VsdDsKKworICAgIEZUX1NlcnZpY2VfVFRHbHlmICBzZXJ2aWNlOworCisKKyAgICByZXN1bHQgPSBfdHRfY2hlY2tfcGF0ZW50c19pbl90YWJsZSggZmFjZSwgVFRBR19mcGdtICk7CisgICAgaWYgKCByZXN1bHQgKQorICAgICAgZ290byBFeGl0OworCisgICAgcmVzdWx0ID0gX3R0X2NoZWNrX3BhdGVudHNfaW5fdGFibGUoIGZhY2UsIFRUQUdfcHJlcCApOworICAgIGlmICggcmVzdWx0ICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBUVF9HTFlGICk7CisgICAgaWYgKCBzZXJ2aWNlID09IE5VTEwgKQorICAgICAgZ290byBFeGl0OworCisgICAgZm9yICggZ2luZGV4ID0gMDsgZ2luZGV4IDwgKEZUX1VJbnQpZmFjZS0+bnVtX2dseXBoczsgZ2luZGV4KysgKQorICAgIHsKKyAgICAgIEZUX1VMb25nICBvZmZzZXQsIG51bV9pbnMsIHNpemU7CisgICAgICBGVF9JbnQgICAgbnVtX2NvbnRvdXJzOworCisKKyAgICAgIG9mZnNldCA9IHNlcnZpY2UtPmdldF9sb2NhdGlvbiggZmFjZSwgZ2luZGV4LCAmc2l6ZSApOworICAgICAgaWYgKCBzaXplID09IDAgKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggb2Zmc2V0ICkgICAgICB8fAorICAgICAgICAgICBGVF9SRUFEX1NIT1JUKCBudW1fY29udG91cnMgKSApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoIG51bV9jb250b3VycyA+PSAwICkgIC8qIHNpbXBsZSBnbHlwaCAqLworICAgICAgeworICAgICAgICBpZiAoIEZUX1NUUkVBTV9TS0lQKCA4ICsgbnVtX2NvbnRvdXJzICogMiApICkKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIGVsc2UgIC8qIGNvbXBvdW5kIGdseXBoICovCisgICAgICB7CisgICAgICAgIEZUX0Jvb2wgIGhhc19pbnN0ciA9IDA7CisKKworICAgICAgICBpZiAoIEZUX1NUUkVBTV9TS0lQKCA4ICkgKQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qIG5vdyByZWFkIGVhY2ggY29tcG9uZW50ICovCisgICAgICAgIGZvciAoOzspCisgICAgICAgIHsKKyAgICAgICAgICBGVF9VSW50ICBmbGFncywgdG9za2lwOworCisKKyAgICAgICAgICBpZiggRlRfUkVBRF9VU0hPUlQoIGZsYWdzICkgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICB0b3NraXAgPSAyICsgMSArIDE7CisKKyAgICAgICAgICBpZiAoICggZmxhZ3MgJiAoIDEgPDwgMCApICkgIT0gMCApICAgICAgIC8qIEFSR1NfQVJFX1dPUkRTICovCisgICAgICAgICAgICB0b3NraXAgKz0gMjsKKworICAgICAgICAgIGlmICggKCBmbGFncyAmICggMSA8PCAzICkgKSAhPSAwICkgICAgICAgLyogV0VfSEFWRV9BX1NDQUxFICovCisgICAgICAgICAgICB0b3NraXAgKz0gMjsKKyAgICAgICAgICBlbHNlIGlmICggKCBmbGFncyAmICggMSA8PCA2ICkgKSAhPSAwICkgIC8qIFdFX0hBVkVfWF9ZX1NDQUxFICovCisgICAgICAgICAgICB0b3NraXAgKz0gNDsKKyAgICAgICAgICBlbHNlIGlmICggKCBmbGFncyAmICggMSA8PCA3ICkgKSAhPSAwICkgIC8qIFdFX0hBVkVfQV8yeDIgKi8KKyAgICAgICAgICAgIHRvc2tpcCArPSA4OworCisgICAgICAgICAgaWYgKCAoIGZsYWdzICYgKCAxIDw8IDggKSApICE9IDAgKSAgICAgICAvKiBXRV9IQVZFX0lOU1RSVUNUSU9OUyAqLworICAgICAgICAgICAgaGFzX2luc3RyID0gMTsKKworICAgICAgICAgIGlmICggRlRfU1RSRUFNX1NLSVAoIHRvc2tpcCApICkKKyAgICAgICAgICAgIGdvdG8gTmV4dEdseXBoOworCisgICAgICAgICAgaWYgKCAoIGZsYWdzICYgKCAxIDw8IDUgKSApID09IDAgKSAgICAgICAvKiBNT1JFX0NPTVBPTkVOVFMgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAhaGFzX2luc3RyICkKKyAgICAgICAgICBnb3RvIE5leHRHbHlwaDsKKyAgICAgIH0KKworICAgICAgaWYgKCBGVF9SRUFEX1VTSE9SVCggbnVtX2lucyApICkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIHJlc3VsdCA9IF90dF9jaGVja19wYXRlbnRzX2luX3JhbmdlKCBzdHJlYW0sIG51bV9pbnMgKTsKKyAgICAgIGlmICggcmVzdWx0ICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgTmV4dEdseXBoOgorICAgICAgOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Jvb2wgKQorICBGVF9GYWNlX0NoZWNrVHJ1ZVR5cGVQYXRlbnRzKCBGVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX0Jvb2wgIHJlc3VsdCA9IEZBTFNFOworCisKKyAgICBpZiAoIGZhY2UgJiYgRlRfSVNfU0ZOVCggZmFjZSApICkKKyAgICAgIHJlc3VsdCA9IF90dF9mYWNlX2NoZWNrX3BhdGVudHMoIGZhY2UgKTsKKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Jvb2wgKQorICBGVF9GYWNlX1NldFVucGF0ZW50ZWRIaW50aW5nKCBGVF9GYWNlICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICB2YWx1ZSApCisgIHsKKyAgICBGVF9Cb29sICByZXN1bHQgPSBGQUxTRTsKKworCisjaWYgZGVmaW5lZCggVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcgKSAmJiBcCisgICAgIWRlZmluZWQoIFRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIgKQorICAgIGlmICggZmFjZSAmJiBGVF9JU19TRk5UKCBmYWNlICkgKQorICAgIHsKKyAgICAgIHJlc3VsdCA9ICFmYWNlLT5pbnRlcm5hbC0+aWdub3JlX3VucGF0ZW50ZWRfaGludGVyOworICAgICAgZmFjZS0+aW50ZXJuYWwtPmlnbm9yZV91bnBhdGVudGVkX2hpbnRlciA9ICF2YWx1ZTsKKyAgICB9CisjZWxzZQorICAgIEZUX1VOVVNFRCggZmFjZSApOworICAgIEZUX1VOVVNFRCggdmFsdWUgKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHBmci5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0cGZyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVhNjg4OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHBmci5jCkBAIC0wLDAgKzEsMTQ2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHBmci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgQVBJIGZvciBhY2Nlc3NpbmcgUEZSLXNwZWNpZmljIGRhdGEgKGJvZHkpLiAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDItMjAwNCwgMjAwOCwgMjAxMCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cGZyLmgiCisKKworICAvKiBjaGVjayB0aGUgZm9ybWF0ICovCisgIHN0YXRpYyBGVF9TZXJ2aWNlX1Bmck1ldHJpY3MKKyAgZnRfcGZyX2NoZWNrKCBGVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX1NlcnZpY2VfUGZyTWV0cmljcyAgc2VydmljZSA9IE5VTEw7CisKKworICAgIGlmICggZmFjZSApCisgICAgICBGVF9GQUNFX0xPT0tVUF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBQRlJfTUVUUklDUyApOworCisgICAgcmV0dXJuIHNlcnZpY2U7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRwZnIuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfR2V0X1BGUl9NZXRyaWNzKCBGVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICphb3V0bGluZV9yZXNvbHV0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAqYW1ldHJpY3NfcmVzb2x1dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgKmFtZXRyaWNzX3hfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICphbWV0cmljc195X3NjYWxlICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfU2VydmljZV9QZnJNZXRyaWNzICBzZXJ2aWNlOworCisKKyAgICBpZiAoICFmYWNlICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgc2VydmljZSA9IGZ0X3Bmcl9jaGVjayggZmFjZSApOworICAgIGlmICggc2VydmljZSApCisgICAgeworICAgICAgZXJyb3IgPSBzZXJ2aWNlLT5nZXRfbWV0cmljcyggZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFvdXRsaW5lX3Jlc29sdXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbWV0cmljc19yZXNvbHV0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1ldHJpY3NfeF9zY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtZXRyaWNzX3lfc2NhbGUgKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIEZUX0ZpeGVkICB4X3NjYWxlLCB5X3NjYWxlOworCisKKyAgICAgIC8qIHRoaXMgaXMgbm90IGEgUEZSIGZvbnQgKi8KKyAgICAgIGlmICggYW91dGxpbmVfcmVzb2x1dGlvbiApCisgICAgICAgICphb3V0bGluZV9yZXNvbHV0aW9uID0gZmFjZS0+dW5pdHNfcGVyX0VNOworCisgICAgICBpZiAoIGFtZXRyaWNzX3Jlc29sdXRpb24gKQorICAgICAgICAqYW1ldHJpY3NfcmVzb2x1dGlvbiA9IGZhY2UtPnVuaXRzX3Blcl9FTTsKKworICAgICAgeF9zY2FsZSA9IHlfc2NhbGUgPSAweDEwMDAwTDsKKyAgICAgIGlmICggZmFjZS0+c2l6ZSApCisgICAgICB7CisgICAgICAgIHhfc2NhbGUgPSBmYWNlLT5zaXplLT5tZXRyaWNzLnhfc2NhbGU7CisgICAgICAgIHlfc2NhbGUgPSBmYWNlLT5zaXplLT5tZXRyaWNzLnlfc2NhbGU7CisgICAgICB9CisKKyAgICAgIGlmICggYW1ldHJpY3NfeF9zY2FsZSApCisgICAgICAgICphbWV0cmljc194X3NjYWxlID0geF9zY2FsZTsKKworICAgICAgaWYgKCBhbWV0cmljc195X3NjYWxlICkKKyAgICAgICAgKmFtZXRyaWNzX3lfc2NhbGUgPSB5X3NjYWxlOworCisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0cGZyLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldF9QRlJfS2VybmluZyggRlRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciAgKmF2ZWN0b3IgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgICAgICAgICBlcnJvcjsKKyAgICBGVF9TZXJ2aWNlX1Bmck1ldHJpY3MgIHNlcnZpY2U7CisKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBzZXJ2aWNlID0gZnRfcGZyX2NoZWNrKCBmYWNlICk7CisgICAgaWYgKCBzZXJ2aWNlICkKKyAgICAgIGVycm9yID0gc2VydmljZS0+Z2V0X2tlcm5pbmcoIGZhY2UsIGxlZnQsIHJpZ2h0LCBhdmVjdG9yICk7CisgICAgZWxzZQorICAgICAgZXJyb3IgPSBGVF9HZXRfS2VybmluZyggZmFjZSwgbGVmdCwgcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9LRVJOSU5HX1VOU0NBTEVELCBhdmVjdG9yICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRwZnIuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfR2V0X1BGUl9BZHZhbmNlKCBGVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgZ2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICphYWR2YW5jZSApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgICAgICAgIGVycm9yOworICAgIEZUX1NlcnZpY2VfUGZyTWV0cmljcyAgc2VydmljZTsKKworCisgICAgc2VydmljZSA9IGZ0X3Bmcl9jaGVjayggZmFjZSApOworICAgIGlmICggc2VydmljZSApCisgICAgeworICAgICAgZXJyb3IgPSBzZXJ2aWNlLT5nZXRfYWR2YW5jZSggZmFjZSwgZ2luZGV4LCBhYWR2YW5jZSApOworICAgIH0KKyAgICBlbHNlCisgICAgICAvKiBYWFg6IFRPRE86IFBST1ZJREUgQURWQU5DRS1MT0FESU5HIE1FVEhPRCBUTyBBTEwgRk9OVCBEUklWRVJTICovCisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHBpYy5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0cGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVjOWFkMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHBpYy5jCkBAIC0wLDAgKzEsNTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0cGljLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSBzZXJ2aWNlcyAoYm9keSkuICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICJiYXNlcGljLmgiCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRwaWMuaCAqLworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIGZ0X3BpY19jb250YWluZXJfaW5pdCggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9QSUNfQ29udGFpbmVyKiAgcGljX2NvbnRhaW5lciA9ICZsaWJyYXJ5LT5waWNfY29udGFpbmVyOworICAgIEZUX0Vycm9yICAgICAgICAgICBlcnJvciAgICAgICAgID0gRlRfRXJyX09rOworCisKKyAgICBGVF9NRU1fU0VUKCBwaWNfY29udGFpbmVyLCAwLCBzaXplb2YgKCAqcGljX2NvbnRhaW5lciApICk7CisKKyAgICBlcnJvciA9IGZ0X2Jhc2VfcGljX2luaXQoIGxpYnJhcnkgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qIERlc3Ryb3kgdGhlIGNvbnRlbnRzIG9mIHRoZSBjb250YWluZXIuICovCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgZnRfcGljX2NvbnRhaW5lcl9kZXN0cm95KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIGZ0X2Jhc2VfcGljX2ZyZWUoIGxpYnJhcnkgKTsKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHJmb3JrLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRyZm9yay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYjgzMGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRyZm9yay5jCkBAIC0wLDAgKzEsODQ5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHJmb3JrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRW1iZWRkZWQgcmVzb3VyY2UgZm9ya3MgYWNjZXNzb3IgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDQtMjAxMCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE1hc2F0YWtlIFlBTUFUTyBhbmQgUmVkaGF0IEsuSy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRlRfUmFjY2Vzc19HZXRfSGVhZGVySW5mbygpIGFuZCByYWNjZXNzX2d1ZXNzX2Rhcndpbl9oZnNwbHVzKCkgYXJlICAgICAqLworLyogIGRlcml2ZWQgZnJvbSBmdG9ianMuYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogRGV2ZWxvcG1lbnQgb2YgdGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIHN1cHBvcnQgb2YgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIEluZm9ybWF0aW9uLXRlY2hub2xvZ3kgUHJvbW90aW9uIEFnZW5jeSwgSmFwYW4uICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRyZm9yay5oIgorI2luY2x1ZGUgImJhc2VwaWMuaCIKKworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9yYWNjZXNzCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgUmVzb3VyY2UgZm9yayBkaXJlY3RvcnkgYWNjZXNzICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgRlRfQkFTRV9ERUYoIEZUX0Vycm9yICkKKyAgRlRfUmFjY2Vzc19HZXRfSGVhZGVySW5mbyggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICByZm9ya19vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKm1hcF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJkYXRhX3BvcyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICBlcnJvcjsKKyAgICB1bnNpZ25lZCBjaGFyICBoZWFkWzE2XSwgaGVhZDJbMTZdOworICAgIEZUX0xvbmcgICAgICAgIG1hcF9wb3MsIHJkYXRhX2xlbjsKKyAgICBpbnQgICAgICAgICAgICBhbGx6ZXJvcywgYWxsbWF0Y2gsIGk7CisgICAgRlRfTG9uZyAgICAgICAgdHlwZV9saXN0OworCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7CisKKworICAgIGVycm9yID0gRlRfU3RyZWFtX1NlZWsoIHN0cmVhbSwgcmZvcmtfb2Zmc2V0ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICBlcnJvciA9IEZUX1N0cmVhbV9SZWFkKCBzdHJlYW0sIChGVF9CeXRlICopaGVhZCwgMTYgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgICpyZGF0YV9wb3MgPSByZm9ya19vZmZzZXQgKyAoICggaGVhZFswXSA8PCAyNCApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGhlYWRbMV0gPDwgMTYgKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBoZWFkWzJdIDw8ICA4ICkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZFszXSAgICAgICAgICk7CisgICAgbWFwX3BvcyAgICA9IHJmb3JrX29mZnNldCArICggKCBoZWFkWzRdIDw8IDI0ICkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaGVhZFs1XSA8PCAxNiApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGhlYWRbNl0gPDwgIDggKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkWzddICAgICAgICAgKTsKKyAgICByZGF0YV9sZW4gPSAoIGhlYWRbIDhdIDw8IDI0ICkgfAorICAgICAgICAgICAgICAgICggaGVhZFsgOV0gPDwgMTYgKSB8CisgICAgICAgICAgICAgICAgKCBoZWFkWzEwXSA8PCAgOCApIHwKKyAgICAgICAgICAgICAgICAgIGhlYWRbMTFdOworCisgICAgLyogbWFwX2xlbiA9IGhlYWRbMTJdIC4uIGhlYWRbMTVdICovCisKKyAgICBpZiAoICpyZGF0YV9wb3MgKyByZGF0YV9sZW4gIT0gbWFwX3BvcyB8fCBtYXBfcG9zID09IHJmb3JrX29mZnNldCApCisgICAgICByZXR1cm4gRlRfVEhST1coIFVua25vd25fRmlsZV9Gb3JtYXQgKTsKKworICAgIGVycm9yID0gRlRfU3RyZWFtX1NlZWsoIHN0cmVhbSwgbWFwX3BvcyApOworICAgIGlmICggZXJyb3IgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgaGVhZDJbMTVdID0gKEZUX0J5dGUpKCBoZWFkWzE1XSArIDEgKTsgICAgICAgLyogbWFrZSBpdCBiZSBkaWZmZXJlbnQgKi8KKworICAgIGVycm9yID0gRlRfU3RyZWFtX1JlYWQoIHN0cmVhbSwgKEZUX0J5dGUqKWhlYWQyLCAxNiApOworICAgIGlmICggZXJyb3IgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgYWxsemVyb3MgPSAxOworICAgIGFsbG1hdGNoID0gMTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IDE2OyArK2kgKQorICAgIHsKKyAgICAgIGlmICggaGVhZDJbaV0gIT0gMCApCisgICAgICAgIGFsbHplcm9zID0gMDsKKyAgICAgIGlmICggaGVhZDJbaV0gIT0gaGVhZFtpXSApCisgICAgICAgIGFsbG1hdGNoID0gMDsKKyAgICB9CisgICAgaWYgKCAhYWxsemVyb3MgJiYgIWFsbG1hdGNoICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworCisgICAgLyogSWYgd2UgaGF2ZSByZWFjaGVkIHRoaXMgcG9pbnQgdGhlbiBpdCBpcyBwcm9iYWJseSBhIG1hYyByZXNvdXJjZSAqLworICAgIC8qIGZpbGUuICBOb3csIGRvZXMgaXQgY29udGFpbiBhbnkgaW50ZXJlc3RpbmcgcmVzb3VyY2VzPyAgICAgICAgICAgKi8KKyAgICAvKiBTa2lwIGhhbmRsZSB0byBuZXh0IHJlc291cmNlIG1hcCwgdGhlIGZpbGUgcmVzb3VyY2UgbnVtYmVyLCBhbmQgICovCisgICAgLyogYXR0cmlidXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICh2b2lkKUZUX1NUUkVBTV9TS0lQKCA0ICAgICAgICAvKiBza2lwIGhhbmRsZSB0byBuZXh0IHJlc291cmNlIG1hcCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICArIDIgICAgICAvKiBza2lwIGZpbGUgcmVzb3VyY2UgbnVtYmVyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICsgMiApOyAgIC8qIHNraXAgYXR0cmlidXRlcyAqLworCisgICAgaWYgKCBGVF9SRUFEX1VTSE9SVCggdHlwZV9saXN0ICkgKQorICAgICAgcmV0dXJuIGVycm9yOworICAgIGlmICggdHlwZV9saXN0ID09IC0xICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworCisgICAgZXJyb3IgPSBGVF9TdHJlYW1fU2Vlayggc3RyZWFtLCBtYXBfcG9zICsgdHlwZV9saXN0ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAqbWFwX29mZnNldCA9IG1hcF9wb3MgKyB0eXBlX2xpc3Q7CisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgc3RhdGljIGludAorICBmdF9yYWNjZXNzX3NvcnRfcmVmX2J5X2lkKCBGVF9SRm9ya19SZWYqICBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SRm9ya19SZWYqICBiICkKKyAgeworICAgIGlmICggYS0+cmVzX2lkIDwgYi0+cmVzX2lkICkKKyAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlIGlmICggYS0+cmVzX2lkID4gYi0+cmVzX2lkICkKKyAgICAgIHJldHVybiAxOworICAgIGVsc2UKKyAgICAgIHJldHVybiAwOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfRXJyb3IgKQorICBGVF9SYWNjZXNzX0dldF9EYXRhT2Zmc2V0cyggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgIG1hcF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICByZGF0YV9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICB0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgKipvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqY291bnQgKQorICB7CisgICAgRlRfRXJyb3IgICAgICBlcnJvcjsKKyAgICBpbnQgICAgICAgICAgIGksIGosIGNudCwgc3ViY250OworICAgIEZUX0xvbmcgICAgICAgdGFnX2ludGVybmFsLCBycG9zOworICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworICAgIEZUX0xvbmcgICAgICAgdGVtcDsKKyAgICBGVF9Mb25nICAgICAgICpvZmZzZXRzX2ludGVybmFsID0gTlVMTDsKKyAgICBGVF9SRm9ya19SZWYgICpyZWYgPSBOVUxMOworCisKKyAgICBlcnJvciA9IEZUX1N0cmVhbV9TZWVrKCBzdHJlYW0sIG1hcF9vZmZzZXQgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIGlmICggRlRfUkVBRF9VU0hPUlQoIGNudCApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICBjbnQrKzsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgY250OyArK2kgKQorICAgIHsKKyAgICAgIGlmICggRlRfUkVBRF9MT05HKCB0YWdfaW50ZXJuYWwgKSB8fAorICAgICAgICAgICBGVF9SRUFEX1VTSE9SVCggc3ViY250ICkgICAgIHx8CisgICAgICAgICAgIEZUX1JFQURfVVNIT1JUKCBycG9zICkgICAgICAgKQorICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgIEZUX1RSQUNFMigoICJSZXNvdXJjZSB0YWdzOiAlYyVjJWMlY1xuIiwKKyAgICAgICAgICAgICAgICAgIChjaGFyKSggMHhmZiAmICggdGFnX2ludGVybmFsID4+IDI0ICkgKSwKKyAgICAgICAgICAgICAgICAgIChjaGFyKSggMHhmZiAmICggdGFnX2ludGVybmFsID4+IDE2ICkgKSwKKyAgICAgICAgICAgICAgICAgIChjaGFyKSggMHhmZiAmICggdGFnX2ludGVybmFsID4+ICA4ICkgKSwKKyAgICAgICAgICAgICAgICAgIChjaGFyKSggMHhmZiAmICggdGFnX2ludGVybmFsID4+ICAwICkgKSApKTsKKworICAgICAgaWYgKCB0YWdfaW50ZXJuYWwgPT0gdGFnICkKKyAgICAgIHsKKyAgICAgICAgKmNvdW50ID0gc3ViY250ICsgMTsKKyAgICAgICAgcnBvcyAgKz0gbWFwX29mZnNldDsKKworICAgICAgICBlcnJvciA9IEZUX1N0cmVhbV9TZWVrKCBzdHJlYW0sIHJwb3MgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgICAgIGlmICggRlRfTkVXX0FSUkFZKCByZWYsICpjb3VudCApICkKKyAgICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCAqY291bnQ7ICsraiApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIEZUX1JFQURfVVNIT1JUKCByZWZbal0ucmVzX2lkICkgKQorICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgIGlmICggRlRfU1RSRUFNX1NLSVAoIDIgKSApIC8qIHJlc291cmNlIG5hbWUgKi8KKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICBpZiAoIEZUX1JFQURfTE9ORyggdGVtcCApICkKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICBpZiAoIEZUX1NUUkVBTV9TS0lQKCA0ICkgKSAvKiBtYnogKi8KKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAgIHJlZltqXS5vZmZzZXQgPSB0ZW1wICYgMHhGRkZGRkZMOworICAgICAgICB9CisKKyAgICAgICAgZnRfcXNvcnQoIHJlZiwgKmNvdW50LCBzaXplb2YgKCBGVF9SRm9ya19SZWYgKSwKKyAgICAgICAgICAgICAgICAgICggaW50KCopKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKikgKQorICAgICAgICAgICAgICAgICAgZnRfcmFjY2Vzc19zb3J0X3JlZl9ieV9pZCApOworCisgICAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBvZmZzZXRzX2ludGVybmFsLCAqY291bnQgKSApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIC8qIFhYWDogZHVwbGljYXRlZCByZWZlcmVuY2UgSUQsCisgICAgICAgICAqICAgICAgZ2FwIGJldHdlZW4gcmVmZXJlbmNlIElEcyBhcmUgYWNjZXB0YWJsZT8KKyAgICAgICAgICogICAgICBmdXJ0aGVyIGludmVzdGlnYXRpb24gb24gQXBwbGUgaW1wbGVtZW50YXRpb24gaXMgbmVlZGVkLgorICAgICAgICAgKi8KKyAgICAgICAgZm9yICggaiA9IDA7IGogPCAqY291bnQ7ICsraiApCisgICAgICAgICAgb2Zmc2V0c19pbnRlcm5hbFtqXSA9IHJkYXRhX3BvcyArIHJlZltqXS5vZmZzZXQ7CisKKyAgICAgICAgKm9mZnNldHMgPSBvZmZzZXRzX2ludGVybmFsOworICAgICAgICBlcnJvciAgICA9IEZUX0Vycl9PazsKKworICAgICAgRXhpdDoKKyAgICAgICAgRlRfRlJFRSggcmVmICk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfVEhST1coIENhbm5vdF9PcGVuX1Jlc291cmNlICk7CisgIH0KKworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9HVUVTU0lOR19FTUJFRERFRF9SRk9SSworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICBHdWVzc2luZyBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgIFdoZW4geW91IGFkZCBhIG5ldyBndWVzc2luZyBmdW5jdGlvbiwgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgIHVwZGF0ZSBGVF9SQUNDRVNTX05fUlVMRVMgaW4gZnRyZm9yay5oLiAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyBGVF9FcnJvcgorICByYWNjZXNzX2d1ZXNzX2FwcGxlX2RvdWJsZSggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgKmJhc2VfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICoqcmVzdWx0X2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKTsKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmFjY2Vzc19ndWVzc19hcHBsZV9zaW5nbGUoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICpiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAqKnJlc3VsdF9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICpyZXN1bHRfb2Zmc2V0ICk7CisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHJhY2Nlc3NfZ3Vlc3NfZGFyd2luX3Vmc19leHBvcnQoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAqYmFzZV9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAqKnJlc3VsdF9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKTsKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmFjY2Vzc19ndWVzc19kYXJ3aW5fbmV3dmZzKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICpiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgKipyZXN1bHRfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKTsKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmFjY2Vzc19ndWVzc19kYXJ3aW5faGZzcGx1cyggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICpiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICoqcmVzdWx0X2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqcmVzdWx0X29mZnNldCApOworCisgIHN0YXRpYyBGVF9FcnJvcgorICByYWNjZXNzX2d1ZXNzX3ZmYXQoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgKmJhc2VfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAqKnJlc3VsdF9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqcmVzdWx0X29mZnNldCApOworCisgIHN0YXRpYyBGVF9FcnJvcgorICByYWNjZXNzX2d1ZXNzX2xpbnV4X2NhcCggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgKmJhc2VfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICoqcmVzdWx0X2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKTsKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmFjY2Vzc19ndWVzc19saW51eF9kb3VibGUoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICpiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAqKnJlc3VsdF9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICpyZXN1bHRfb2Zmc2V0ICk7CisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHJhY2Nlc3NfZ3Vlc3NfbGludXhfbmV0YXRhbGsoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAqYmFzZV9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAqKnJlc3VsdF9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKTsKKworCisgIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfQkVHSU4oZnRfcmFjY2Vzc19ndWVzc190YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdF9yYWNjZXNzX2d1ZXNzX3JlYykKKyAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWShhcHBsZV9kb3VibGUsICAgICAgYXBwbGVfZG91YmxlKQorICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKGFwcGxlX3NpbmdsZSwgICAgICBhcHBsZV9zaW5nbGUpCisgIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5UUlkoZGFyd2luX3Vmc19leHBvcnQsIGRhcndpbl91ZnNfZXhwb3J0KQorICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKGRhcndpbl9uZXd2ZnMsICAgICBkYXJ3aW5fbmV3dmZzKQorICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKGRhcndpbl9oZnNwbHVzLCAgICBkYXJ3aW5faGZzcGx1cykKKyAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWSh2ZmF0LCAgICAgICAgICAgICAgdmZhdCkKKyAgQ09OU1RfRlRfUkZPUktfUlVMRV9BUlJBWV9FTlRSWShsaW51eF9jYXAsICAgICAgICAgbGludXhfY2FwKQorICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VOVFJZKGxpbnV4X2RvdWJsZSwgICAgICBsaW51eF9kb3VibGUpCisgIENPTlNUX0ZUX1JGT1JLX1JVTEVfQVJSQVlfRU5UUlkobGludXhfbmV0YXRhbGssICAgIGxpbnV4X25ldGF0YWxrKQorICBDT05TVF9GVF9SRk9SS19SVUxFX0FSUkFZX0VORAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgSGVscGVyIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyBGVF9FcnJvcgorICByYWNjZXNzX2d1ZXNzX2FwcGxlX2dlbmVyaWMoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgKmJhc2VfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludDMyICAgIG1hZ2ljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKTsKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmFjY2Vzc19ndWVzc19saW51eF9kb3VibGVfZnJvbV9maWxlX25hbWUoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICogICAgICBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICpyZXN1bHRfb2Zmc2V0ICk7CisKKyAgc3RhdGljIGNoYXIgKgorICByYWNjZXNzX21ha2VfZmlsZV9uYW1lKCBGVF9NZW1vcnkgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAqb3JpZ2luYWxfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgKmluc2VydGlvbiApOworCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgRlRfUmFjY2Vzc19HdWVzcyggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICBjaGFyKiAgICAgICBiYXNlX25hbWUsCisgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAqKm5ld19uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqb2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IgICAqZXJyb3JzICkKKyAgeworICAgIEZUX0ludCAgaTsKKworCisgICAgZm9yICggaSA9IDA7IGkgPCBGVF9SQUNDRVNTX05fUlVMRVM7IGkrKyApCisgICAgeworICAgICAgbmV3X25hbWVzW2ldID0gTlVMTDsKKyAgICAgIGlmICggTlVMTCAhPSBzdHJlYW0gKQorICAgICAgICBlcnJvcnNbaV0gPSBGVF9TdHJlYW1fU2Vlayggc3RyZWFtLCAwICk7CisgICAgICBlbHNlCisgICAgICAgIGVycm9yc1tpXSA9IEZUX0Vycl9PazsKKworICAgICAgaWYgKCBlcnJvcnNbaV0gKQorICAgICAgICBjb250aW51ZSA7CisKKyAgICAgIGVycm9yc1tpXSA9IChGVF9SQUNDRVNTX0dVRVNTX1RBQkxFX0dFVFtpXS5mdW5jKSggbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIGJhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKG5ld19uYW1lc1tpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihvZmZzZXRzW2ldKSApOworICAgIH0KKworICAgIHJldHVybjsKKyAgfQorCisKKyNpZm5kZWYgRlRfTUFDSU5UT1NICisgIHN0YXRpYyBGVF9SRm9ya19SdWxlCisgIHJhY2Nlc3NfZ2V0X3J1bGVfdHlwZV9mcm9tX3J1bGVfaW5kZXgoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHJ1bGVfaW5kZXggKQorICB7CisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7CisKKyAgICBpZiAoIHJ1bGVfaW5kZXggPj0gRlRfUkFDQ0VTU19OX1JVTEVTICkKKyAgICAgIHJldHVybiBGVF9SRm9ya19SdWxlX2ludmFsaWQ7CisKKyAgICByZXR1cm4gRlRfUkFDQ0VTU19HVUVTU19UQUJMRV9HRVRbcnVsZV9pbmRleF0udHlwZTsKKyAgfQorCisKKyAgLyoKKyAgICogRm9yIHRoaXMgZnVuY3Rpb24sIHJlZmVyIGZ0YmFzZS5oLgorICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9Cb29sICkKKyAgZnRfcmFjY2Vzc19ydWxlX2J5X2Rhcndpbl92ZnMoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBydWxlX2luZGV4ICkKKyAgeworICAgIHN3aXRjaCggcmFjY2Vzc19nZXRfcnVsZV90eXBlX2Zyb21fcnVsZV9pbmRleCggbGlicmFyeSwgcnVsZV9pbmRleCApICkKKyAgICB7CisgICAgICBjYXNlIEZUX1JGb3JrX1J1bGVfZGFyd2luX25ld3ZmczoKKyAgICAgIGNhc2UgRlRfUkZvcmtfUnVsZV9kYXJ3aW5faGZzcGx1czoKKyAgICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKyNlbmRpZgorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHJhY2Nlc3NfZ3Vlc3NfYXBwbGVfZG91YmxlKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAqYmFzZV9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgKipyZXN1bHRfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqcmVzdWx0X29mZnNldCApCisgIHsKKyAgICBGVF9JbnQzMiAgbWFnaWMgPSAoIDB4MDAgPDwgMjQgKSB8CisgICAgICAgICAgICAgICAgICAgICAgKCAweDA1IDw8IDE2ICkgfAorICAgICAgICAgICAgICAgICAgICAgICggMHgxNiA8PCAgOCApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDc7CisKKworICAgICpyZXN1bHRfZmlsZV9uYW1lID0gTlVMTDsKKyAgICBpZiAoIE5VTEwgPT0gc3RyZWFtICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggQ2Fubm90X09wZW5fU3RyZWFtICk7CisKKyAgICByZXR1cm4gcmFjY2Vzc19ndWVzc19hcHBsZV9nZW5lcmljKCBsaWJyYXJ5LCBzdHJlYW0sIGJhc2VfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ2ljLCByZXN1bHRfb2Zmc2V0ICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICByYWNjZXNzX2d1ZXNzX2FwcGxlX3NpbmdsZSggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgKmJhc2VfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICoqcmVzdWx0X2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKQorICB7CisgICAgRlRfSW50MzIgIG1hZ2ljID0gKCAweDAwIDw8IDI0ICkgfAorICAgICAgICAgICAgICAgICAgICAgICggMHgwNSA8PCAxNiApIHwKKyAgICAgICAgICAgICAgICAgICAgICAoIDB4MTYgPDwgIDggKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAweDAwOworCisKKyAgICAqcmVzdWx0X2ZpbGVfbmFtZSA9IE5VTEw7CisgICAgaWYgKCBOVUxMID09IHN0cmVhbSApCisgICAgICByZXR1cm4gRlRfVEhST1coIENhbm5vdF9PcGVuX1N0cmVhbSApOworCisgICAgcmV0dXJuIHJhY2Nlc3NfZ3Vlc3NfYXBwbGVfZ2VuZXJpYyggbGlicmFyeSwgc3RyZWFtLCBiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdpYywgcmVzdWx0X29mZnNldCApOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmFjY2Vzc19ndWVzc19kYXJ3aW5fdWZzX2V4cG9ydCggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICpiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICoqcmVzdWx0X2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqcmVzdWx0X29mZnNldCApCisgIHsKKyAgICBjaGFyKiAgICAgIG5ld3BhdGg7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKworICAgIEZUX1VOVVNFRCggc3RyZWFtICk7CisKKworICAgIG1lbW9yeSAgPSBsaWJyYXJ5LT5tZW1vcnk7CisgICAgbmV3cGF0aCA9IHJhY2Nlc3NfbWFrZV9maWxlX25hbWUoIG1lbW9yeSwgYmFzZV9maWxlX25hbWUsICIuXyIgKTsKKyAgICBpZiAoICFuZXdwYXRoICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggT3V0X09mX01lbW9yeSApOworCisgICAgZXJyb3IgPSByYWNjZXNzX2d1ZXNzX2xpbnV4X2RvdWJsZV9mcm9tX2ZpbGVfbmFtZSggbGlicmFyeSwgbmV3cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfb2Zmc2V0ICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgICAgKnJlc3VsdF9maWxlX25hbWUgPSBuZXdwYXRoOworICAgIGVsc2UKKyAgICAgIEZUX0ZSRUUoIG5ld3BhdGggKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHJhY2Nlc3NfZ3Vlc3NfZGFyd2luX2hmc3BsdXMoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAqYmFzZV9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAqKnJlc3VsdF9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKQorICB7CisgICAgLyoKKyAgICAgIE9ubHkgbWVhbmluZ2Z1bCBvbiBzeXN0ZW1zIHdpdGggaGZzKyBkcml2ZXJzIChvciBNYWNzKS4KKyAgICAgKi8KKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIGNoYXIqICAgICAgbmV3cGF0aCA9IE5VTEw7CisgICAgRlRfTWVtb3J5ICBtZW1vcnk7CisgICAgRlRfTG9uZyAgICBiYXNlX2ZpbGVfbGVuID0gKEZUX0xvbmcpZnRfc3RybGVuKCBiYXNlX2ZpbGVfbmFtZSApOworCisgICAgRlRfVU5VU0VEKCBzdHJlYW0gKTsKKworCisgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisgICAgaWYgKCBiYXNlX2ZpbGVfbGVuICsgNiA+IEZUX0lOVF9NQVggKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBBcnJheV9Ub29fTGFyZ2UgKTsKKworICAgIGlmICggRlRfQUxMT0MoIG5ld3BhdGgsIGJhc2VfZmlsZV9sZW4gKyA2ICkgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgRlRfTUVNX0NPUFkoIG5ld3BhdGgsIGJhc2VfZmlsZV9uYW1lLCBiYXNlX2ZpbGVfbGVuICk7CisgICAgRlRfTUVNX0NPUFkoIG5ld3BhdGggKyBiYXNlX2ZpbGVfbGVuLCAiL3JzcmMiLCA2ICk7CisKKyAgICAqcmVzdWx0X2ZpbGVfbmFtZSA9IG5ld3BhdGg7CisgICAgKnJlc3VsdF9vZmZzZXQgICAgPSAwOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHJhY2Nlc3NfZ3Vlc3NfZGFyd2luX25ld3ZmcyggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAqYmFzZV9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICoqcmVzdWx0X2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICpyZXN1bHRfb2Zmc2V0ICkKKyAgeworICAgIC8qCisgICAgICBPbmx5IG1lYW5pbmdmdWwgb24gc3lzdGVtcyB3aXRoIE1hYyBPUyBYICg+IDEwLjEpLgorICAgICAqLworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgY2hhciogICAgICBuZXdwYXRoID0gTlVMTDsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKyAgICBGVF9Mb25nICAgIGJhc2VfZmlsZV9sZW4gPSAoRlRfTG9uZylmdF9zdHJsZW4oIGJhc2VfZmlsZV9uYW1lICk7CisKKyAgICBGVF9VTlVTRUQoIHN0cmVhbSApOworCisKKyAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisKKyAgICBpZiAoIGJhc2VfZmlsZV9sZW4gKyAxOCA+IEZUX0lOVF9NQVggKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBBcnJheV9Ub29fTGFyZ2UgKTsKKworICAgIGlmICggRlRfQUxMT0MoIG5ld3BhdGgsIGJhc2VfZmlsZV9sZW4gKyAxOCApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIEZUX01FTV9DT1BZKCBuZXdwYXRoLCBiYXNlX2ZpbGVfbmFtZSwgYmFzZV9maWxlX2xlbiApOworICAgIEZUX01FTV9DT1BZKCBuZXdwYXRoICsgYmFzZV9maWxlX2xlbiwgIi8uLm5hbWVkZm9yay9yc3JjIiwgMTggKTsKKworICAgICpyZXN1bHRfZmlsZV9uYW1lID0gbmV3cGF0aDsKKyAgICAqcmVzdWx0X29mZnNldCAgICA9IDA7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmFjY2Vzc19ndWVzc192ZmF0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICpiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgKipyZXN1bHRfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKQorICB7CisgICAgY2hhciogICAgICBuZXdwYXRoOworICAgIEZUX01lbW9yeSAgbWVtb3J5OworCisgICAgRlRfVU5VU0VEKCBzdHJlYW0gKTsKKworCisgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisgICAgbmV3cGF0aCA9IHJhY2Nlc3NfbWFrZV9maWxlX25hbWUoIG1lbW9yeSwgYmFzZV9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS5mcmsvIiApOworICAgIGlmICggIW5ld3BhdGggKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBPdXRfT2ZfTWVtb3J5ICk7CisKKyAgICAqcmVzdWx0X2ZpbGVfbmFtZSA9IG5ld3BhdGg7CisgICAgKnJlc3VsdF9vZmZzZXQgICAgPSAwOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHJhY2Nlc3NfZ3Vlc3NfbGludXhfY2FwKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAqYmFzZV9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgKipyZXN1bHRfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqcmVzdWx0X29mZnNldCApCisgIHsKKyAgICBjaGFyKiAgICAgIG5ld3BhdGg7CisgICAgRlRfTWVtb3J5ICBtZW1vcnk7CisKKyAgICBGVF9VTlVTRUQoIHN0cmVhbSApOworCisKKyAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisKKyAgICBuZXdwYXRoID0gcmFjY2Vzc19tYWtlX2ZpbGVfbmFtZSggbWVtb3J5LCBiYXNlX2ZpbGVfbmFtZSwgIi5yZXNvdXJjZS8iICk7CisgICAgaWYgKCAhbmV3cGF0aCApCisgICAgICByZXR1cm4gRlRfVEhST1coIE91dF9PZl9NZW1vcnkgKTsKKworICAgICpyZXN1bHRfZmlsZV9uYW1lID0gbmV3cGF0aDsKKyAgICAqcmVzdWx0X29mZnNldCAgICA9IDA7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmFjY2Vzc19ndWVzc19saW51eF9kb3VibGUoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICpiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAqKnJlc3VsdF9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICpyZXN1bHRfb2Zmc2V0ICkKKyAgeworICAgIGNoYXIqICAgICAgbmV3cGF0aDsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX01lbW9yeSAgbWVtb3J5OworCisgICAgRlRfVU5VU0VEKCBzdHJlYW0gKTsKKworCisgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisgICAgbmV3cGF0aCA9IHJhY2Nlc3NfbWFrZV9maWxlX25hbWUoIG1lbW9yeSwgYmFzZV9maWxlX25hbWUsICIlIiApOworICAgIGlmICggIW5ld3BhdGggKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBPdXRfT2ZfTWVtb3J5ICk7CisKKyAgICBlcnJvciA9IHJhY2Nlc3NfZ3Vlc3NfbGludXhfZG91YmxlX2Zyb21fZmlsZV9uYW1lKCBsaWJyYXJ5LCBuZXdwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9vZmZzZXQgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgICAqcmVzdWx0X2ZpbGVfbmFtZSA9IG5ld3BhdGg7CisgICAgZWxzZQorICAgICAgRlRfRlJFRSggbmV3cGF0aCApOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmFjY2Vzc19ndWVzc19saW51eF9uZXRhdGFsayggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICpiYXNlX2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICoqcmVzdWx0X2ZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqcmVzdWx0X29mZnNldCApCisgIHsKKyAgICBjaGFyKiAgICAgIG5ld3BhdGg7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKworICAgIEZUX1VOVVNFRCggc3RyZWFtICk7CisKKworICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsKKworICAgIG5ld3BhdGggPSByYWNjZXNzX21ha2VfZmlsZV9uYW1lKCBtZW1vcnksIGJhc2VfZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLkFwcGxlRG91YmxlLyIgKTsKKyAgICBpZiAoICFuZXdwYXRoICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggT3V0X09mX01lbW9yeSApOworCisgICAgZXJyb3IgPSByYWNjZXNzX2d1ZXNzX2xpbnV4X2RvdWJsZV9mcm9tX2ZpbGVfbmFtZSggbGlicmFyeSwgbmV3cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfb2Zmc2V0ICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgICAgKnJlc3VsdF9maWxlX25hbWUgPSBuZXdwYXRoOworICAgIGVsc2UKKyAgICAgIEZUX0ZSRUUoIG5ld3BhdGggKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHJhY2Nlc3NfZ3Vlc3NfYXBwbGVfZ2VuZXJpYyggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAqYmFzZV9maWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50MzIgICAgbWFnaWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAqcmVzdWx0X29mZnNldCApCisgIHsKKyAgICBGVF9JbnQzMiAgIG1hZ2ljX2Zyb21fc3RyZWFtOworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfSW50MzIgICB2ZXJzaW9uX251bWJlciA9IDA7CisgICAgRlRfVVNob3J0ICBuX29mX2VudHJpZXM7CisKKyAgICBpbnQgICAgICAgIGk7CisgICAgRlRfVUludDMyICBlbnRyeV9pZCwgZW50cnlfb2Zmc2V0LCBlbnRyeV9sZW5ndGggPSAwOworCisgICAgY29uc3QgRlRfVUludDMyICByZXNvdXJjZV9mb3JrX2VudHJ5X2lkID0gMHgyOworCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7CisgICAgRlRfVU5VU0VEKCBiYXNlX2ZpbGVfbmFtZSApOworICAgIEZUX1VOVVNFRCggdmVyc2lvbl9udW1iZXIgKTsKKyAgICBGVF9VTlVTRUQoIGVudHJ5X2xlbmd0aCAgICk7CisKKworICAgIGlmICggRlRfUkVBRF9MT05HKCBtYWdpY19mcm9tX3N0cmVhbSApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICBpZiAoIG1hZ2ljX2Zyb21fc3RyZWFtICE9IG1hZ2ljICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworCisgICAgaWYgKCBGVF9SRUFEX0xPTkcoIHZlcnNpb25fbnVtYmVyICkgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgLyogZmlsbGVyICovCisgICAgZXJyb3IgPSBGVF9TdHJlYW1fU2tpcCggc3RyZWFtLCAxNiApOworICAgIGlmICggZXJyb3IgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgaWYgKCBGVF9SRUFEX1VTSE9SVCggbl9vZl9lbnRyaWVzICkgKQorICAgICAgcmV0dXJuIGVycm9yOworICAgIGlmICggbl9vZl9lbnRyaWVzID09IDAgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG5fb2ZfZW50cmllczsgaSsrICkKKyAgICB7CisgICAgICBpZiAoIEZUX1JFQURfTE9ORyggZW50cnlfaWQgKSApCisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgIGlmICggZW50cnlfaWQgPT0gcmVzb3VyY2VfZm9ya19lbnRyeV9pZCApCisgICAgICB7CisgICAgICAgIGlmICggRlRfUkVBRF9MT05HKCBlbnRyeV9vZmZzZXQgKSB8fAorICAgICAgICAgICAgIEZUX1JFQURfTE9ORyggZW50cnlfbGVuZ3RoICkgKQorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAqcmVzdWx0X29mZnNldCA9IGVudHJ5X29mZnNldDsKKworICAgICAgICByZXR1cm4gRlRfRXJyX09rOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1N0cmVhbV9Ta2lwKCBzdHJlYW0sIDQgKyA0ICk7ICAgIC8qIG9mZnNldCArIGxlbmd0aCAqLworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICByYWNjZXNzX2d1ZXNzX2xpbnV4X2RvdWJsZV9mcm9tX2ZpbGVfbmFtZSggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgKmZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKnJlc3VsdF9vZmZzZXQgKQorICB7CisgICAgRlRfT3Blbl9BcmdzICBhcmdzMjsKKyAgICBGVF9TdHJlYW0gICAgIHN0cmVhbTI7CisgICAgY2hhciAqICAgICAgICBub3VzZSA9IE5VTEw7CisgICAgRlRfRXJyb3IgICAgICBlcnJvcjsKKworCisgICAgYXJnczIuZmxhZ3MgICAgPSBGVF9PUEVOX1BBVEhOQU1FOworICAgIGFyZ3MyLnBhdGhuYW1lID0gZmlsZV9uYW1lOworICAgIGVycm9yID0gRlRfU3RyZWFtX05ldyggbGlicmFyeSwgJmFyZ3MyLCAmc3RyZWFtMiApOworICAgIGlmICggZXJyb3IgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgZXJyb3IgPSByYWNjZXNzX2d1ZXNzX2FwcGxlX2RvdWJsZSggbGlicmFyeSwgc3RyZWFtMiwgZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZub3VzZSwgcmVzdWx0X29mZnNldCApOworCisgICAgRlRfU3RyZWFtX0ZyZWUoIHN0cmVhbTIsIDAgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIGNoYXIqCisgIHJhY2Nlc3NfbWFrZV9maWxlX25hbWUoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICpvcmlnaW5hbF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAqaW5zZXJ0aW9uICkKKyAgeworICAgIGNoYXIqICAgICAgICBuZXdfbmFtZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciogIHRtcDsKKyAgICBjb25zdCBjaGFyKiAgc2xhc2g7CisgICAgc2l6ZV90ICAgICAgIG5ld19sZW5ndGg7CisgICAgRlRfRXJyb3IgICAgIGVycm9yID0gRlRfRXJyX09rOworCisgICAgRlRfVU5VU0VEKCBlcnJvciApOworCisKKyAgICBuZXdfbGVuZ3RoID0gZnRfc3RybGVuKCBvcmlnaW5hbF9uYW1lICkgKyBmdF9zdHJsZW4oIGluc2VydGlvbiApOworICAgIGlmICggRlRfQUxMT0MoIG5ld19uYW1lLCBuZXdfbGVuZ3RoICsgMSApICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgdG1wID0gZnRfc3RycmNociggb3JpZ2luYWxfbmFtZSwgJy8nICk7CisgICAgaWYgKCB0bXAgKQorICAgIHsKKyAgICAgIGZ0X3N0cm5jcHkoIG5ld19uYW1lLCBvcmlnaW5hbF9uYW1lLCB0bXAgLSBvcmlnaW5hbF9uYW1lICsgMSApOworICAgICAgbmV3X25hbWVbdG1wIC0gb3JpZ2luYWxfbmFtZSArIDFdID0gJ1wwJzsKKyAgICAgIHNsYXNoID0gdG1wICsgMTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHNsYXNoICAgICAgID0gb3JpZ2luYWxfbmFtZTsKKyAgICAgIG5ld19uYW1lWzBdID0gJ1wwJzsKKyAgICB9CisKKyAgICBmdF9zdHJjYXQoIG5ld19uYW1lLCBpbnNlcnRpb24gKTsKKyAgICBmdF9zdHJjYXQoIG5ld19uYW1lLCBzbGFzaCApOworCisgICAgcmV0dXJuIG5ld19uYW1lOworICB9CisKKworI2Vsc2UgICAvKiAhRlRfQ09ORklHX09QVElPTl9HVUVTU0lOR19FTUJFRERFRF9SRk9SSyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgRHVtbXkgZnVuY3Rpb247IGp1c3Qgc2V0cyBlcnJvcnMgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX1JhY2Nlc3NfR3Vlc3MoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAqYmFzZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgKipuZXdfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgKm9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yICAgKmVycm9ycyApCisgIHsKKyAgICBGVF9JbnQgIGk7CisKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsKKyAgICBGVF9VTlVTRUQoIHN0cmVhbSApOworICAgIEZUX1VOVVNFRCggYmFzZV9uYW1lICk7CisKKworICAgIGZvciAoIGkgPSAwOyBpIDwgRlRfUkFDQ0VTU19OX1JVTEVTOyBpKysgKQorICAgIHsKKyAgICAgIG5ld19uYW1lc1tpXSA9IE5VTEw7CisgICAgICBvZmZzZXRzW2ldICAgPSAwOworICAgICAgZXJyb3JzW2ldICAgID0gRlRfRVJSKCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKTsKKyAgICB9CisgIH0KKworCisjZW5kaWYgIC8qICFGVF9DT05GSUdfT1BUSU9OX0dVRVNTSU5HX0VNQkVEREVEX1JGT1JLICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRzbmFtZXMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHNuYW1lcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZTA4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRzbmFtZXMuYwpAQCAtMCwwICsxLDk0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHNuYW1lcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgU2ltcGxlIGludGVyZmFjZSB0byBhY2Nlc3MgU0ZOVCBuYW1lIHRhYmxlcyAod2hpY2ggYXJlIHVzZWQgICAgICAgICAgKi8KKy8qICAgIHRvIGhvbGQgZm9udCBuYW1lcywgY29weXJpZ2h0IGluZm8sIG5vdGljZXMsIGV0Yy4pIChib2R5KS4gICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhpcyBpcyBfbm90XyB1c2VkIHRvIHJldHJpZXZlIGdseXBoIG5hbWVzISAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwOSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TRk5UX05BTUVTCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c25hbWVzLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9VSW50ICkKKyAgRlRfR2V0X1NmbnRfTmFtZV9Db3VudCggRlRfRmFjZSAgZmFjZSApCisgIHsKKyAgICByZXR1cm4gKCBmYWNlICYmIEZUX0lTX1NGTlQoIGZhY2UgKSApID8gKChUVF9GYWNlKWZhY2UpLT5udW1fbmFtZXMgOiAwOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c25hbWVzLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldF9TZm50X05hbWUoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgIEZUX1NmbnROYW1lICAqYW5hbWUgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRVJSKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKworICAgIGlmICggYW5hbWUgJiYgZmFjZSAmJiBGVF9JU19TRk5UKCBmYWNlICkgKQorICAgIHsKKyAgICAgIFRUX0ZhY2UgIHR0ZmFjZSA9IChUVF9GYWNlKWZhY2U7CisKKworICAgICAgaWYgKCBpZHggPCAoRlRfVUludCl0dGZhY2UtPm51bV9uYW1lcyApCisgICAgICB7CisgICAgICAgIFRUX05hbWVFbnRyeVJlYyogIGVudHJ5ID0gdHRmYWNlLT5uYW1lX3RhYmxlLm5hbWVzICsgaWR4OworCisKKyAgICAgICAgLyogbG9hZCBuYW1lIG9uIGRlbWFuZCAqLworICAgICAgICBpZiAoIGVudHJ5LT5zdHJpbmdMZW5ndGggPiAwICYmIGVudHJ5LT5zdHJpbmcgPT0gTlVMTCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGZhY2UtPm1lbW9yeTsKKyAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IGZhY2UtPnN0cmVhbTsKKworCisgICAgICAgICAgaWYgKCBGVF9ORVdfQVJSQVkgICggZW50cnktPnN0cmluZywgZW50cnktPnN0cmluZ0xlbmd0aCApIHx8CisgICAgICAgICAgICAgICBGVF9TVFJFQU1fU0VFSyggZW50cnktPnN0cmluZ09mZnNldCApICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICBGVF9TVFJFQU1fUkVBRCggZW50cnktPnN0cmluZywgZW50cnktPnN0cmluZ0xlbmd0aCApICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9GUkVFKCBlbnRyeS0+c3RyaW5nICk7CisgICAgICAgICAgICBlbnRyeS0+c3RyaW5nTGVuZ3RoID0gMDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBhbmFtZS0+cGxhdGZvcm1faWQgPSBlbnRyeS0+cGxhdGZvcm1JRDsKKyAgICAgICAgYW5hbWUtPmVuY29kaW5nX2lkID0gZW50cnktPmVuY29kaW5nSUQ7CisgICAgICAgIGFuYW1lLT5sYW5ndWFnZV9pZCA9IGVudHJ5LT5sYW5ndWFnZUlEOworICAgICAgICBhbmFtZS0+bmFtZV9pZCAgICAgPSBlbnRyeS0+bmFtZUlEOworICAgICAgICBhbmFtZS0+c3RyaW5nICAgICAgPSAoRlRfQnl0ZSopZW50cnktPnN0cmluZzsKKyAgICAgICAgYW5hbWUtPnN0cmluZ19sZW4gID0gZW50cnktPnN0cmluZ0xlbmd0aDsKKworICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TRk5UX05BTUVTICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRzdHJlYW0uYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHN0cmVhbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMzc1MDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnRzdHJlYW0uYwpAQCAtMCwwICsxLDg2NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRzdHJlYW0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEkvTyBzdHJlYW0gc3VwcG9ydCAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAwLTIwMDIsIDIwMDQtMjAwNiwgMjAwOC0yMDExLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX3N0cmVhbQorCisKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBGVF9TdHJlYW1fT3Blbk1lbW9yeSggRlRfU3RyZWFtICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0J5dGUqICBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgIHNpemUgKQorICB7CisgICAgc3RyZWFtLT5iYXNlICAgPSAoRlRfQnl0ZSopIGJhc2U7CisgICAgc3RyZWFtLT5zaXplICAgPSBzaXplOworICAgIHN0cmVhbS0+cG9zICAgID0gMDsKKyAgICBzdHJlYW0tPmN1cnNvciA9IDA7CisgICAgc3RyZWFtLT5yZWFkICAgPSAwOworICAgIHN0cmVhbS0+Y2xvc2UgID0gMDsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBGVF9TdHJlYW1fQ2xvc2UoIEZUX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIGlmICggc3RyZWFtICYmIHN0cmVhbS0+Y2xvc2UgKQorICAgICAgc3RyZWFtLT5jbG9zZSggc3RyZWFtICk7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9TZWVrKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgcG9zICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKworCisgICAgaWYgKCBzdHJlYW0tPnJlYWQgKQorICAgIHsKKyAgICAgIGlmICggc3RyZWFtLT5yZWFkKCBzdHJlYW0sIHBvcywgMCwgMCApICkKKyAgICAgIHsKKyAgICAgICAgRlRfRVJST1IoKCAiRlRfU3RyZWFtX1NlZWs6IgorICAgICAgICAgICAgICAgICAgICIgaW52YWxpZCBpL287IHBvcyA9IDB4JWx4LCBzaXplID0gMHglbHhcbiIsCisgICAgICAgICAgICAgICAgICAgcG9zLCBzdHJlYW0tPnNpemUgKSk7CisKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisgICAgICB9CisgICAgfQorICAgIC8qIG5vdGUgdGhhdCBzZWVraW5nIHRvIHRoZSBmaXJzdCBwb3NpdGlvbiBhZnRlciB0aGUgZmlsZSBpcyB2YWxpZCAqLworICAgIGVsc2UgaWYgKCBwb3MgPiBzdHJlYW0tPnNpemUgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggIkZUX1N0cmVhbV9TZWVrOiIKKyAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGkvbzsgcG9zID0gMHglbHgsIHNpemUgPSAweCVseFxuIiwKKyAgICAgICAgICAgICAgICAgcG9zLCBzdHJlYW0tPnNpemUgKSk7CisKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfU3RyZWFtX09wZXJhdGlvbiApOworICAgIH0KKworICAgIGlmICggIWVycm9yICkKKyAgICAgIHN0cmVhbS0+cG9zID0gcG9zOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fU2tpcCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGRpc3RhbmNlICkKKyAgeworICAgIGlmICggZGlzdGFuY2UgPCAwICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisKKyAgICByZXR1cm4gRlRfU3RyZWFtX1NlZWsoIHN0cmVhbSwgKEZUX1VMb25nKSggc3RyZWFtLT5wb3MgKyBkaXN0YW5jZSApICk7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9Mb25nICkKKyAgRlRfU3RyZWFtX1BvcyggRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgcmV0dXJuIHN0cmVhbS0+cG9zOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fUmVhZCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgY291bnQgKQorICB7CisgICAgcmV0dXJuIEZUX1N0cmVhbV9SZWFkQXQoIHN0cmVhbSwgc3RyZWFtLT5wb3MsIGJ1ZmZlciwgY291bnQgKTsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX1JlYWRBdCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgcG9zLAorICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICBjb3VudCApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfVUxvbmcgIHJlYWRfYnl0ZXM7CisKKworICAgIGlmICggcG9zID49IHN0cmVhbS0+c2l6ZSApCisgICAgeworICAgICAgRlRfRVJST1IoKCAiRlRfU3RyZWFtX1JlYWRBdDoiCisgICAgICAgICAgICAgICAgICIgaW52YWxpZCBpL287IHBvcyA9IDB4JWx4LCBzaXplID0gMHglbHhcbiIsCisgICAgICAgICAgICAgICAgIHBvcywgc3RyZWFtLT5zaXplICkpOworCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfU3RyZWFtX09wZXJhdGlvbiApOworICAgIH0KKworICAgIGlmICggc3RyZWFtLT5yZWFkICkKKyAgICAgIHJlYWRfYnl0ZXMgPSBzdHJlYW0tPnJlYWQoIHN0cmVhbSwgcG9zLCBidWZmZXIsIGNvdW50ICk7CisgICAgZWxzZQorICAgIHsKKyAgICAgIHJlYWRfYnl0ZXMgPSBzdHJlYW0tPnNpemUgLSBwb3M7CisgICAgICBpZiAoIHJlYWRfYnl0ZXMgPiBjb3VudCApCisgICAgICAgIHJlYWRfYnl0ZXMgPSBjb3VudDsKKworICAgICAgRlRfTUVNX0NPUFkoIGJ1ZmZlciwgc3RyZWFtLT5iYXNlICsgcG9zLCByZWFkX2J5dGVzICk7CisgICAgfQorCisgICAgc3RyZWFtLT5wb3MgPSBwb3MgKyByZWFkX2J5dGVzOworCisgICAgaWYgKCByZWFkX2J5dGVzIDwgY291bnQgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggIkZUX1N0cmVhbV9SZWFkQXQ6IgorICAgICAgICAgICAgICAgICAiIGludmFsaWQgcmVhZDsgZXhwZWN0ZWQgJWx1IGJ5dGVzLCBnb3QgJWx1XG4iLAorICAgICAgICAgICAgICAgICBjb3VudCwgcmVhZF9ieXRlcyApKTsKKworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfVUxvbmcgKQorICBGVF9TdHJlYW1fVHJ5UmVhZCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgY291bnQgKQorICB7CisgICAgRlRfVUxvbmcgIHJlYWRfYnl0ZXMgPSAwOworCisKKyAgICBpZiAoIHN0cmVhbS0+cG9zID49IHN0cmVhbS0+c2l6ZSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIHN0cmVhbS0+cmVhZCApCisgICAgICByZWFkX2J5dGVzID0gc3RyZWFtLT5yZWFkKCBzdHJlYW0sIHN0cmVhbS0+cG9zLCBidWZmZXIsIGNvdW50ICk7CisgICAgZWxzZQorICAgIHsKKyAgICAgIHJlYWRfYnl0ZXMgPSBzdHJlYW0tPnNpemUgLSBzdHJlYW0tPnBvczsKKyAgICAgIGlmICggcmVhZF9ieXRlcyA+IGNvdW50ICkKKyAgICAgICAgcmVhZF9ieXRlcyA9IGNvdW50OworCisgICAgICBGVF9NRU1fQ09QWSggYnVmZmVyLCBzdHJlYW0tPmJhc2UgKyBzdHJlYW0tPnBvcywgcmVhZF9ieXRlcyApOworICAgIH0KKworICAgIHN0cmVhbS0+cG9zICs9IHJlYWRfYnl0ZXM7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gcmVhZF9ieXRlczsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX0Vycm9yICkKKyAgRlRfU3RyZWFtX0V4dHJhY3RGcmFtZSggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqKiAgcGJ5dGVzICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgZXJyb3IgPSBGVF9TdHJlYW1fRW50ZXJGcmFtZSggc3RyZWFtLCBjb3VudCApOworICAgIGlmICggIWVycm9yICkKKyAgICB7CisgICAgICAqcGJ5dGVzID0gKEZUX0J5dGUqKXN0cmVhbS0+Y3Vyc29yOworCisgICAgICAvKiBlcXVpdmFsZW50IHRvIEZUX1N0cmVhbV9FeGl0RnJhbWUoKSwgd2l0aCBubyBtZW1vcnkgYmxvY2sgcmVsZWFzZSAqLworICAgICAgc3RyZWFtLT5jdXJzb3IgPSAwOworICAgICAgc3RyZWFtLT5saW1pdCAgPSAwOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIHZvaWQgKQorICBGVF9TdHJlYW1fUmVsZWFzZUZyYW1lKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSoqICBwYnl0ZXMgKQorICB7CisgICAgaWYgKCBzdHJlYW0gJiYgc3RyZWFtLT5yZWFkICkKKyAgICB7CisgICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworCisjaWZkZWYgRlRfREVCVUdfTUVNT1JZCisgICAgICBmdF9tZW1fZnJlZSggbWVtb3J5LCAqcGJ5dGVzICk7CisgICAgICAqcGJ5dGVzID0gTlVMTDsKKyNlbHNlCisgICAgICBGVF9GUkVFKCAqcGJ5dGVzICk7CisjZW5kaWYKKyAgICB9CisgICAgKnBieXRlcyA9IDA7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9FbnRlckZyYW1lKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgY291bnQgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX1VMb25nICByZWFkX2J5dGVzOworCisKKyAgICAvKiBjaGVjayBmb3IgbmVzdGVkIGZyYW1lIGFjY2VzcyAqLworICAgIEZUX0FTU0VSVCggc3RyZWFtICYmIHN0cmVhbS0+Y3Vyc29yID09IDAgKTsKKworICAgIGlmICggc3RyZWFtLT5yZWFkICkKKyAgICB7CisgICAgICAvKiBhbGxvY2F0ZSB0aGUgZnJhbWUgaW4gbWVtb3J5ICovCisgICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworCisKKyAgICAgIC8qIHNpbXBsZSBzYW5pdHkgY2hlY2sgKi8KKyAgICAgIGlmICggY291bnQgPiBzdHJlYW0tPnNpemUgKQorICAgICAgeworICAgICAgICBGVF9FUlJPUigoICJGVF9TdHJlYW1fRW50ZXJGcmFtZToiCisgICAgICAgICAgICAgICAgICAgIiBmcmFtZSBzaXplICglbHUpIGxhcmdlciB0aGFuIHN0cmVhbSBzaXplICglbHUpXG4iLAorICAgICAgICAgICAgICAgICAgIGNvdW50LCBzdHJlYW0tPnNpemUgKSk7CisKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworI2lmZGVmIEZUX0RFQlVHX01FTU9SWQorICAgICAgLyogYXNzdW1lIF9mdF9kZWJ1Z19maWxlIGFuZCBfZnRfZGVidWdfbGluZW5vIGFyZSBhbHJlYWR5IHNldCAqLworICAgICAgc3RyZWFtLT5iYXNlID0gKHVuc2lnbmVkIGNoYXIqKWZ0X21lbV9xYWxsb2MoIG1lbW9yeSwgY291bnQsICZlcnJvciApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKyNlbHNlCisgICAgICBpZiAoIEZUX1FBTExPQyggc3RyZWFtLT5iYXNlLCBjb3VudCApICkKKyAgICAgICAgZ290byBFeGl0OworI2VuZGlmCisgICAgICAvKiByZWFkIGl0ICovCisgICAgICByZWFkX2J5dGVzID0gc3RyZWFtLT5yZWFkKCBzdHJlYW0sIHN0cmVhbS0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5iYXNlLCBjb3VudCApOworICAgICAgaWYgKCByZWFkX2J5dGVzIDwgY291bnQgKQorICAgICAgeworICAgICAgICBGVF9FUlJPUigoICJGVF9TdHJlYW1fRW50ZXJGcmFtZToiCisgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIHJlYWQ7IGV4cGVjdGVkICVsdSBieXRlcywgZ290ICVsdVxuIiwKKyAgICAgICAgICAgICAgICAgICBjb3VudCwgcmVhZF9ieXRlcyApKTsKKworICAgICAgICBGVF9GUkVFKCBzdHJlYW0tPmJhc2UgKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisgICAgICB9CisgICAgICBzdHJlYW0tPmN1cnNvciA9IHN0cmVhbS0+YmFzZTsKKyAgICAgIHN0cmVhbS0+bGltaXQgID0gc3RyZWFtLT5jdXJzb3IgKyBjb3VudDsKKyAgICAgIHN0cmVhbS0+cG9zICAgKz0gcmVhZF9ieXRlczsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIGNoZWNrIGN1cnJlbnQgYW5kIG5ldyBwb3NpdGlvbiAqLworICAgICAgaWYgKCBzdHJlYW0tPnBvcyA+PSBzdHJlYW0tPnNpemUgICAgICAgIHx8CisgICAgICAgICAgIHN0cmVhbS0+c2l6ZSAtIHN0cmVhbS0+cG9zIDwgY291bnQgKQorICAgICAgeworICAgICAgICBGVF9FUlJPUigoICJGVF9TdHJlYW1fRW50ZXJGcmFtZToiCisgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGkvbzsgcG9zID0gMHglbHgsIGNvdW50ID0gJWx1LCBzaXplID0gMHglbHhcbiIsCisgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5wb3MsIGNvdW50LCBzdHJlYW0tPnNpemUgKSk7CisKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgLyogc2V0IGN1cnNvciAqLworICAgICAgc3RyZWFtLT5jdXJzb3IgPSBzdHJlYW0tPmJhc2UgKyBzdHJlYW0tPnBvczsKKyAgICAgIHN0cmVhbS0+bGltaXQgID0gc3RyZWFtLT5jdXJzb3IgKyBjb3VudDsKKyAgICAgIHN0cmVhbS0+cG9zICAgKz0gY291bnQ7CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX1N0cmVhbV9FeGl0RnJhbWUoIEZUX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIC8qIElNUE9SVEFOVDogVGhlIGFzc2VydGlvbiBzdHJlYW0tPmN1cnNvciAhPSAwIHdhcyByZW1vdmVkLCBnaXZlbiAgICAqLworICAgIC8qICAgICAgICAgICAgdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBhY2Nlc3MgYSBmcmFtZSBvZiBsZW5ndGggMCBpbiAgICAqLworICAgIC8qICAgICAgICAgICAgc29tZSB3ZWlyZCBmb250cyAodXN1YWxseSwgd2hlbiBhY2Nlc3NpbmcgYW4gYXJyYXkgb2YgICAqLworICAgIC8qICAgICAgICAgICAgMCByZWNvcmRzLCBsaWtlIGluIHNvbWUgc3RyYW5nZSBrZXJuIHRhYmxlcykuICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICBJbiB0aGlzIGNhc2UsIHRoZSBsb2FkZXIgY29kZSBoYW5kbGVzIHRoZSAwLWxlbmd0aCB0YWJsZSAgICAgICAgICAqLworICAgIC8qICBncmFjZWZ1bGx5OyBob3dldmVyLCBzdHJlYW0uY3Vyc29yIGlzIHJlYWxseSBzZXQgdG8gMCBieSB0aGUgICAgICAqLworICAgIC8qICBGVF9TdHJlYW1fRW50ZXJGcmFtZSgpIGNhbGwsIGFuZCB0aGlzIGlzIG5vdCBhbiBlcnJvci4gICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIEZUX0FTU0VSVCggc3RyZWFtICk7CisKKyAgICBpZiAoIHN0cmVhbS0+cmVhZCApCisgICAgeworICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKworI2lmZGVmIEZUX0RFQlVHX01FTU9SWQorICAgICAgZnRfbWVtX2ZyZWUoIG1lbW9yeSwgc3RyZWFtLT5iYXNlICk7CisgICAgICBzdHJlYW0tPmJhc2UgPSBOVUxMOworI2Vsc2UKKyAgICAgIEZUX0ZSRUUoIHN0cmVhbS0+YmFzZSApOworI2VuZGlmCisgICAgfQorICAgIHN0cmVhbS0+Y3Vyc29yID0gMDsKKyAgICBzdHJlYW0tPmxpbWl0ICA9IDA7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9DaGFyICkKKyAgRlRfU3RyZWFtX0dldENoYXIoIEZUX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIEZUX0NoYXIgIHJlc3VsdDsKKworCisgICAgRlRfQVNTRVJUKCBzdHJlYW0gJiYgc3RyZWFtLT5jdXJzb3IgKTsKKworICAgIHJlc3VsdCA9IDA7CisgICAgaWYgKCBzdHJlYW0tPmN1cnNvciA8IHN0cmVhbS0+bGltaXQgKQorICAgICAgcmVzdWx0ID0gKnN0cmVhbS0+Y3Vyc29yKys7CisKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfVVNob3J0ICkKKyAgRlRfU3RyZWFtX0dldFVTaG9ydCggRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfQnl0ZSogIHA7CisgICAgRlRfU2hvcnQgIHJlc3VsdDsKKworCisgICAgRlRfQVNTRVJUKCBzdHJlYW0gJiYgc3RyZWFtLT5jdXJzb3IgKTsKKworICAgIHJlc3VsdCAgICAgICAgID0gMDsKKyAgICBwICAgICAgICAgICAgICA9IHN0cmVhbS0+Y3Vyc29yOworICAgIGlmICggcCArIDEgPCBzdHJlYW0tPmxpbWl0ICkKKyAgICAgIHJlc3VsdCAgICAgICA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisgICAgc3RyZWFtLT5jdXJzb3IgPSBwOworCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX1VTaG9ydCApCisgIEZUX1N0cmVhbV9HZXRVU2hvcnRMRSggRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfQnl0ZSogIHA7CisgICAgRlRfU2hvcnQgIHJlc3VsdDsKKworCisgICAgRlRfQVNTRVJUKCBzdHJlYW0gJiYgc3RyZWFtLT5jdXJzb3IgKTsKKworICAgIHJlc3VsdCAgICAgICAgID0gMDsKKyAgICBwICAgICAgICAgICAgICA9IHN0cmVhbS0+Y3Vyc29yOworICAgIGlmICggcCArIDEgPCBzdHJlYW0tPmxpbWl0ICkKKyAgICAgIHJlc3VsdCAgICAgICA9IEZUX05FWFRfVVNIT1JUX0xFKCBwICk7CisgICAgc3RyZWFtLT5jdXJzb3IgPSBwOworCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX1VMb25nICkKKyAgRlRfU3RyZWFtX0dldFVPZmZzZXQoIEZUX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIEZUX0J5dGUqICBwOworICAgIEZUX0xvbmcgICByZXN1bHQ7CisKKworICAgIEZUX0FTU0VSVCggc3RyZWFtICYmIHN0cmVhbS0+Y3Vyc29yICk7CisKKyAgICByZXN1bHQgICAgICAgICA9IDA7CisgICAgcCAgICAgICAgICAgICAgPSBzdHJlYW0tPmN1cnNvcjsKKyAgICBpZiAoIHAgKyAyIDwgc3RyZWFtLT5saW1pdCApCisgICAgICByZXN1bHQgICAgICAgPSBGVF9ORVhUX1VPRkYzKCBwICk7CisgICAgc3RyZWFtLT5jdXJzb3IgPSBwOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9VTG9uZyApCisgIEZUX1N0cmVhbV9HZXRVTG9uZyggRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfQnl0ZSogIHA7CisgICAgRlRfTG9uZyAgIHJlc3VsdDsKKworCisgICAgRlRfQVNTRVJUKCBzdHJlYW0gJiYgc3RyZWFtLT5jdXJzb3IgKTsKKworICAgIHJlc3VsdCAgICAgICAgID0gMDsKKyAgICBwICAgICAgICAgICAgICA9IHN0cmVhbS0+Y3Vyc29yOworICAgIGlmICggcCArIDMgPCBzdHJlYW0tPmxpbWl0ICkKKyAgICAgIHJlc3VsdCAgICAgICA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKyAgICBzdHJlYW0tPmN1cnNvciA9IHA7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX1VMb25nICkKKyAgRlRfU3RyZWFtX0dldFVMb25nTEUoIEZUX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIEZUX0J5dGUqICBwOworICAgIEZUX0xvbmcgICByZXN1bHQ7CisKKworICAgIEZUX0FTU0VSVCggc3RyZWFtICYmIHN0cmVhbS0+Y3Vyc29yICk7CisKKyAgICByZXN1bHQgICAgICAgICA9IDA7CisgICAgcCAgICAgICAgICAgICAgPSBzdHJlYW0tPmN1cnNvcjsKKyAgICBpZiAoIHAgKyAzIDwgc3RyZWFtLT5saW1pdCApCisgICAgICByZXN1bHQgICAgICAgPSBGVF9ORVhUX1VMT05HX0xFKCBwICk7CisgICAgc3RyZWFtLT5jdXJzb3IgPSBwOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9DaGFyICkKKyAgRlRfU3RyZWFtX1JlYWRDaGFyKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICkKKyAgeworICAgIEZUX0J5dGUgIHJlc3VsdCA9IDA7CisKKworICAgIEZUX0FTU0VSVCggc3RyZWFtICk7CisKKyAgICAqZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgICBpZiAoIHN0cmVhbS0+cmVhZCApCisgICAgeworICAgICAgaWYgKCBzdHJlYW0tPnJlYWQoIHN0cmVhbSwgc3RyZWFtLT5wb3MsICZyZXN1bHQsIDFMICkgIT0gMUwgKQorICAgICAgICBnb3RvIEZhaWw7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBpZiAoIHN0cmVhbS0+cG9zIDwgc3RyZWFtLT5zaXplICkKKyAgICAgICAgcmVzdWx0ID0gc3RyZWFtLT5iYXNlW3N0cmVhbS0+cG9zXTsKKyAgICAgIGVsc2UKKyAgICAgICAgZ290byBGYWlsOworICAgIH0KKyAgICBzdHJlYW0tPnBvcysrOworCisgICAgcmV0dXJuIHJlc3VsdDsKKworICBGYWlsOgorICAgICplcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1N0cmVhbV9PcGVyYXRpb24gKTsKKyAgICBGVF9FUlJPUigoICJGVF9TdHJlYW1fUmVhZENoYXI6IgorICAgICAgICAgICAgICAgIiBpbnZhbGlkIGkvbzsgcG9zID0gMHglbHgsIHNpemUgPSAweCVseFxuIiwKKyAgICAgICAgICAgICAgIHN0cmVhbS0+cG9zLCBzdHJlYW0tPnNpemUgKSk7CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX1VTaG9ydCApCisgIEZUX1N0cmVhbV9SZWFkVVNob3J0KCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApCisgIHsKKyAgICBGVF9CeXRlICAgcmVhZHNbMl07CisgICAgRlRfQnl0ZSogIHAgPSAwOworICAgIEZUX1Nob3J0ICByZXN1bHQgPSAwOworCisKKyAgICBGVF9BU1NFUlQoIHN0cmVhbSApOworCisgICAgKmVycm9yID0gRlRfRXJyX09rOworCisgICAgaWYgKCBzdHJlYW0tPnBvcyArIDEgPCBzdHJlYW0tPnNpemUgKQorICAgIHsKKyAgICAgIGlmICggc3RyZWFtLT5yZWFkICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBzdHJlYW0tPnJlYWQoIHN0cmVhbSwgc3RyZWFtLT5wb3MsIHJlYWRzLCAyTCApICE9IDJMICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgcCA9IHJlYWRzOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBwID0gc3RyZWFtLT5iYXNlICsgc3RyZWFtLT5wb3M7CisgICAgICB9CisKKyAgICAgIGlmICggcCApCisgICAgICAgIHJlc3VsdCA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIHN0cmVhbS0+cG9zICs9IDI7CisKKyAgICByZXR1cm4gcmVzdWx0OworCisgIEZhaWw6CisgICAgKmVycm9yID0gRlRfVEhST1coIEludmFsaWRfU3RyZWFtX09wZXJhdGlvbiApOworICAgIEZUX0VSUk9SKCggIkZUX1N0cmVhbV9SZWFkVVNob3J0OiIKKyAgICAgICAgICAgICAgICIgaW52YWxpZCBpL287IHBvcyA9IDB4JWx4LCBzaXplID0gMHglbHhcbiIsCisgICAgICAgICAgICAgICBzdHJlYW0tPnBvcywgc3RyZWFtLT5zaXplICkpOworCisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9VU2hvcnQgKQorICBGVF9TdHJlYW1fUmVhZFVTaG9ydExFKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICkKKyAgeworICAgIEZUX0J5dGUgICByZWFkc1syXTsKKyAgICBGVF9CeXRlKiAgcCA9IDA7CisgICAgRlRfU2hvcnQgIHJlc3VsdCA9IDA7CisKKworICAgIEZUX0FTU0VSVCggc3RyZWFtICk7CisKKyAgICAqZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgICBpZiAoIHN0cmVhbS0+cG9zICsgMSA8IHN0cmVhbS0+c2l6ZSApCisgICAgeworICAgICAgaWYgKCBzdHJlYW0tPnJlYWQgKQorICAgICAgeworICAgICAgICBpZiAoIHN0cmVhbS0+cmVhZCggc3RyZWFtLCBzdHJlYW0tPnBvcywgcmVhZHMsIDJMICkgIT0gMkwgKQorICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICBwID0gcmVhZHM7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHAgPSBzdHJlYW0tPmJhc2UgKyBzdHJlYW0tPnBvczsKKyAgICAgIH0KKworICAgICAgaWYgKCBwICkKKyAgICAgICAgcmVzdWx0ID0gRlRfTkVYVF9VU0hPUlRfTEUoIHAgKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgZ290byBGYWlsOworCisgICAgc3RyZWFtLT5wb3MgKz0gMjsKKworICAgIHJldHVybiByZXN1bHQ7CisKKyAgRmFpbDoKKyAgICAqZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisgICAgRlRfRVJST1IoKCAiRlRfU3RyZWFtX1JlYWRVU2hvcnRMRToiCisgICAgICAgICAgICAgICAiIGludmFsaWQgaS9vOyBwb3MgPSAweCVseCwgc2l6ZSA9IDB4JWx4XG4iLAorICAgICAgICAgICAgICAgc3RyZWFtLT5wb3MsIHN0cmVhbS0+c2l6ZSApKTsKKworICAgIHJldHVybiAwOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfVUxvbmcgKQorICBGVF9TdHJlYW1fUmVhZFVPZmZzZXQoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApCisgIHsKKyAgICBGVF9CeXRlICAgcmVhZHNbM107CisgICAgRlRfQnl0ZSogIHAgPSAwOworICAgIEZUX0xvbmcgICByZXN1bHQgPSAwOworCisKKyAgICBGVF9BU1NFUlQoIHN0cmVhbSApOworCisgICAgKmVycm9yID0gRlRfRXJyX09rOworCisgICAgaWYgKCBzdHJlYW0tPnBvcyArIDIgPCBzdHJlYW0tPnNpemUgKQorICAgIHsKKyAgICAgIGlmICggc3RyZWFtLT5yZWFkICkKKyAgICAgIHsKKyAgICAgICAgaWYgKHN0cmVhbS0+cmVhZCggc3RyZWFtLCBzdHJlYW0tPnBvcywgcmVhZHMsIDNMICkgIT0gM0wgKQorICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICBwID0gcmVhZHM7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHAgPSBzdHJlYW0tPmJhc2UgKyBzdHJlYW0tPnBvczsKKyAgICAgIH0KKworICAgICAgaWYgKCBwICkKKyAgICAgICAgcmVzdWx0ID0gRlRfTkVYVF9VT0ZGMyggcCApOworICAgIH0KKyAgICBlbHNlCisgICAgICBnb3RvIEZhaWw7CisKKyAgICBzdHJlYW0tPnBvcyArPSAzOworCisgICAgcmV0dXJuIHJlc3VsdDsKKworICBGYWlsOgorICAgICplcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1N0cmVhbV9PcGVyYXRpb24gKTsKKyAgICBGVF9FUlJPUigoICJGVF9TdHJlYW1fUmVhZFVPZmZzZXQ6IgorICAgICAgICAgICAgICAgIiBpbnZhbGlkIGkvbzsgcG9zID0gMHglbHgsIHNpemUgPSAweCVseFxuIiwKKyAgICAgICAgICAgICAgIHN0cmVhbS0+cG9zLCBzdHJlYW0tPnNpemUgKSk7CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX1VMb25nICkKKyAgRlRfU3RyZWFtX1JlYWRVTG9uZyggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApCisgIHsKKyAgICBGVF9CeXRlICAgcmVhZHNbNF07CisgICAgRlRfQnl0ZSogIHAgPSAwOworICAgIEZUX0xvbmcgICByZXN1bHQgPSAwOworCisKKyAgICBGVF9BU1NFUlQoIHN0cmVhbSApOworCisgICAgKmVycm9yID0gRlRfRXJyX09rOworCisgICAgaWYgKCBzdHJlYW0tPnBvcyArIDMgPCBzdHJlYW0tPnNpemUgKQorICAgIHsKKyAgICAgIGlmICggc3RyZWFtLT5yZWFkICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBzdHJlYW0tPnJlYWQoIHN0cmVhbSwgc3RyZWFtLT5wb3MsIHJlYWRzLCA0TCApICE9IDRMICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgcCA9IHJlYWRzOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBwID0gc3RyZWFtLT5iYXNlICsgc3RyZWFtLT5wb3M7CisgICAgICB9CisKKyAgICAgIGlmICggcCApCisgICAgICAgIHJlc3VsdCA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgZ290byBGYWlsOworCisgICAgc3RyZWFtLT5wb3MgKz0gNDsKKworICAgIHJldHVybiByZXN1bHQ7CisKKyAgRmFpbDoKKyAgICAqZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisgICAgRlRfRVJST1IoKCAiRlRfU3RyZWFtX1JlYWRVTG9uZzoiCisgICAgICAgICAgICAgICAiIGludmFsaWQgaS9vOyBwb3MgPSAweCVseCwgc2l6ZSA9IDB4JWx4XG4iLAorICAgICAgICAgICAgICAgc3RyZWFtLT5wb3MsIHN0cmVhbS0+c2l6ZSApKTsKKworICAgIHJldHVybiAwOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfVUxvbmcgKQorICBGVF9TdHJlYW1fUmVhZFVMb25nTEUoIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlcnJvciApCisgIHsKKyAgICBGVF9CeXRlICAgcmVhZHNbNF07CisgICAgRlRfQnl0ZSogIHAgPSAwOworICAgIEZUX0xvbmcgICByZXN1bHQgPSAwOworCisKKyAgICBGVF9BU1NFUlQoIHN0cmVhbSApOworCisgICAgKmVycm9yID0gRlRfRXJyX09rOworCisgICAgaWYgKCBzdHJlYW0tPnBvcyArIDMgPCBzdHJlYW0tPnNpemUgKQorICAgIHsKKyAgICAgIGlmICggc3RyZWFtLT5yZWFkICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBzdHJlYW0tPnJlYWQoIHN0cmVhbSwgc3RyZWFtLT5wb3MsIHJlYWRzLCA0TCApICE9IDRMICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgcCA9IHJlYWRzOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBwID0gc3RyZWFtLT5iYXNlICsgc3RyZWFtLT5wb3M7CisgICAgICB9CisKKyAgICAgIGlmICggcCApCisgICAgICAgIHJlc3VsdCA9IEZUX05FWFRfVUxPTkdfTEUoIHAgKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgZ290byBGYWlsOworCisgICAgc3RyZWFtLT5wb3MgKz0gNDsKKworICAgIHJldHVybiByZXN1bHQ7CisKKyAgRmFpbDoKKyAgICAqZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisgICAgRlRfRVJST1IoKCAiRlRfU3RyZWFtX1JlYWRVTG9uZ0xFOiIKKyAgICAgICAgICAgICAgICIgaW52YWxpZCBpL287IHBvcyA9IDB4JWx4LCBzaXplID0gMHglbHhcbiIsCisgICAgICAgICAgICAgICBzdHJlYW0tPnBvcywgc3RyZWFtLT5zaXplICkpOworCisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIEZUX1N0cmVhbV9SZWFkRmllbGRzKCBGVF9TdHJlYW0gICAgICAgICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0ZyYW1lX0ZpZWxkKiAgZmllbGRzLAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworICAgIEZUX0Jvb2wgICBmcmFtZV9hY2Nlc3NlZCA9IDA7CisgICAgRlRfQnl0ZSogIGN1cnNvcjsKKworCisgICAgaWYgKCAhZmllbGRzIHx8ICFzdHJlYW0gKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBjdXJzb3IgPSBzdHJlYW0tPmN1cnNvcjsKKworICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIGRvCisgICAgeworICAgICAgRlRfVUxvbmcgIHZhbHVlOworICAgICAgRlRfSW50ICAgIHNpZ25fc2hpZnQ7CisgICAgICBGVF9CeXRlKiAgcDsKKworCisgICAgICBzd2l0Y2ggKCBmaWVsZHMtPnZhbHVlICkKKyAgICAgIHsKKyAgICAgIGNhc2UgZnRfZnJhbWVfc3RhcnQ6ICAvKiBhY2Nlc3MgYSBuZXcgZnJhbWUgKi8KKyAgICAgICAgZXJyb3IgPSBGVF9TdHJlYW1fRW50ZXJGcmFtZSggc3RyZWFtLCBmaWVsZHMtPm9mZnNldCApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgZnJhbWVfYWNjZXNzZWQgPSAxOworICAgICAgICBjdXJzb3IgICAgICAgICA9IHN0cmVhbS0+Y3Vyc29yOworICAgICAgICBmaWVsZHMrKzsKKyAgICAgICAgY29udGludWU7ICAvKiBsb29wISAqLworCisgICAgICBjYXNlIGZ0X2ZyYW1lX2J5dGVzOiAgLyogcmVhZCBhIGJ5dGUgc2VxdWVuY2UgKi8KKyAgICAgIGNhc2UgZnRfZnJhbWVfc2tpcDogICAvKiBza2lwIHNvbWUgYnl0ZXMgICAgICAqLworICAgICAgICB7CisgICAgICAgICAgRlRfVUludCAgbGVuID0gZmllbGRzLT5zaXplOworCisKKyAgICAgICAgICBpZiAoIGN1cnNvciArIGxlbiA+IHN0cmVhbS0+bGltaXQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfU3RyZWFtX09wZXJhdGlvbiApOworICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICggZmllbGRzLT52YWx1ZSA9PSBmdF9mcmFtZV9ieXRlcyApCisgICAgICAgICAgeworICAgICAgICAgICAgcCA9IChGVF9CeXRlKilzdHJ1Y3R1cmUgKyBmaWVsZHMtPm9mZnNldDsKKyAgICAgICAgICAgIEZUX01FTV9DT1BZKCBwLCBjdXJzb3IsIGxlbiApOworICAgICAgICAgIH0KKyAgICAgICAgICBjdXJzb3IgKz0gbGVuOworICAgICAgICAgIGZpZWxkcysrOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgIGNhc2UgZnRfZnJhbWVfYnl0ZToKKyAgICAgIGNhc2UgZnRfZnJhbWVfc2NoYXI6ICAvKiByZWFkIGEgc2luZ2xlIGJ5dGUgKi8KKyAgICAgICAgdmFsdWUgPSBGVF9ORVhUX0JZVEUoIGN1cnNvciApOworICAgICAgICBzaWduX3NoaWZ0ID0gMjQ7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIGZ0X2ZyYW1lX3Nob3J0X2JlOgorICAgICAgY2FzZSBmdF9mcmFtZV91c2hvcnRfYmU6ICAvKiByZWFkIGEgMi1ieXRlIGJpZy1lbmRpYW4gc2hvcnQgKi8KKyAgICAgICAgdmFsdWUgPSBGVF9ORVhUX1VTSE9SVCggY3Vyc29yKSA7CisgICAgICAgIHNpZ25fc2hpZnQgPSAxNjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgZnRfZnJhbWVfc2hvcnRfbGU6CisgICAgICBjYXNlIGZ0X2ZyYW1lX3VzaG9ydF9sZTogIC8qIHJlYWQgYSAyLWJ5dGUgbGl0dGxlLWVuZGlhbiBzaG9ydCAqLworICAgICAgICB2YWx1ZSA9IEZUX05FWFRfVVNIT1JUX0xFKCBjdXJzb3IgKTsKKyAgICAgICAgc2lnbl9zaGlmdCA9IDE2OworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBmdF9mcmFtZV9sb25nX2JlOgorICAgICAgY2FzZSBmdF9mcmFtZV91bG9uZ19iZTogIC8qIHJlYWQgYSA0LWJ5dGUgYmlnLWVuZGlhbiBsb25nICovCisgICAgICAgIHZhbHVlID0gRlRfTkVYVF9VTE9ORyggY3Vyc29yICk7CisgICAgICAgIHNpZ25fc2hpZnQgPSAwOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBmdF9mcmFtZV9sb25nX2xlOgorICAgICAgY2FzZSBmdF9mcmFtZV91bG9uZ19sZTogIC8qIHJlYWQgYSA0LWJ5dGUgbGl0dGxlLWVuZGlhbiBsb25nICovCisgICAgICAgIHZhbHVlID0gRlRfTkVYVF9VTE9OR19MRSggY3Vyc29yICk7CisgICAgICAgIHNpZ25fc2hpZnQgPSAwOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBmdF9mcmFtZV9vZmYzX2JlOgorICAgICAgY2FzZSBmdF9mcmFtZV91b2ZmM19iZTogIC8qIHJlYWQgYSAzLWJ5dGUgYmlnLWVuZGlhbiBsb25nICovCisgICAgICAgIHZhbHVlID0gRlRfTkVYVF9VT0ZGMyggY3Vyc29yICk7CisgICAgICAgIHNpZ25fc2hpZnQgPSA4OworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBmdF9mcmFtZV9vZmYzX2xlOgorICAgICAgY2FzZSBmdF9mcmFtZV91b2ZmM19sZTogIC8qIHJlYWQgYSAzLWJ5dGUgbGl0dGxlLWVuZGlhbiBsb25nICovCisgICAgICAgIHZhbHVlID0gRlRfTkVYVF9VT0ZGM19MRSggY3Vyc29yICk7CisgICAgICAgIHNpZ25fc2hpZnQgPSA4OworICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgLyogb3RoZXJ3aXNlLCBleGl0IHRoZSBsb29wICovCisgICAgICAgIHN0cmVhbS0+Y3Vyc29yID0gY3Vyc29yOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIC8qIG5vdywgY29tcHV0ZSB0aGUgc2lnbmVkIHZhbHVlIGlzIG5lY2Vzc2FyeSAqLworICAgICAgaWYgKCBmaWVsZHMtPnZhbHVlICYgRlRfRlJBTUVfT1BfU0lHTkVEICkKKyAgICAgICAgdmFsdWUgPSAoRlRfVUxvbmcpKCAoRlRfSW50MzIpKCB2YWx1ZSA8PCBzaWduX3NoaWZ0ICkgPj4gc2lnbl9zaGlmdCApOworCisgICAgICAvKiBmaW5hbGx5LCBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlIG9iamVjdCAqLworCisgICAgICBwID0gKEZUX0J5dGUqKXN0cnVjdHVyZSArIGZpZWxkcy0+b2Zmc2V0OworICAgICAgc3dpdGNoICggZmllbGRzLT5zaXplICkKKyAgICAgIHsKKyAgICAgIGNhc2UgKCA4IC8gRlRfQ0hBUl9CSVQgKToKKyAgICAgICAgKihGVF9CeXRlKilwID0gKEZUX0J5dGUpdmFsdWU7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlICggMTYgLyBGVF9DSEFSX0JJVCApOgorICAgICAgICAqKEZUX1VTaG9ydCopcCA9IChGVF9VU2hvcnQpdmFsdWU7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlICggMzIgLyBGVF9DSEFSX0JJVCApOgorICAgICAgICAqKEZUX1VJbnQzMiopcCA9IChGVF9VSW50MzIpdmFsdWU7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OiAgLyogZm9yIDY0LWJpdCBzeXN0ZW1zICovCisgICAgICAgICooRlRfVUxvbmcqKXAgPSAoRlRfVUxvbmcpdmFsdWU7CisgICAgICB9CisKKyAgICAgIC8qIGdvIHRvIG5leHQgZmllbGQgKi8KKyAgICAgIGZpZWxkcysrOworICAgIH0KKyAgICB3aGlsZSAoIDEgKTsKKworICBFeGl0OgorICAgIC8qIGNsb3NlIHRoZSBmcmFtZSBpZiBpdCB3YXMgb3BlbmVkIGJ5IHRoaXMgcmVhZCAqLworICAgIGlmICggZnJhbWVfYWNjZXNzZWQgKQorICAgICAgRlRfU3RyZWFtX0V4aXRGcmFtZSggc3RyZWFtICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHN0cm9rZS5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0c3Ryb2tlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1YWFhZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHN0cm9rZS5jCkBAIC0wLDAgKzEsMjQxOCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRzdHJva2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIHBhdGggc3Ryb2tlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLTIwMDYsIDIwMDgtMjAxMSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2UuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3Ryb2tlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9TdHJva2VyQm9yZGVyICkKKyAgRlRfT3V0bGluZV9HZXRJbnNpZGVCb3JkZXIoIEZUX091dGxpbmUqICBvdXRsaW5lICkKKyAgeworICAgIEZUX09yaWVudGF0aW9uICBvID0gRlRfT3V0bGluZV9HZXRfT3JpZW50YXRpb24oIG91dGxpbmUgKTsKKworCisgICAgcmV0dXJuIG8gPT0gRlRfT1JJRU5UQVRJT05fVFJVRVRZUEUgPyBGVF9TVFJPS0VSX0JPUkRFUl9SSUdIVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRlRfU1RST0tFUl9CT1JERVJfTEVGVDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHN0cm9rZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfU3Ryb2tlckJvcmRlciApCisgIEZUX091dGxpbmVfR2V0T3V0c2lkZUJvcmRlciggRlRfT3V0bGluZSogIG91dGxpbmUgKQorICB7CisgICAgRlRfT3JpZW50YXRpb24gIG8gPSBGVF9PdXRsaW5lX0dldF9PcmllbnRhdGlvbiggb3V0bGluZSApOworCisKKyAgICByZXR1cm4gbyA9PSBGVF9PUklFTlRBVElPTl9UUlVFVFlQRSA/IEZUX1NUUk9LRVJfQk9SREVSX0xFRlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEZUX1NUUk9LRVJfQk9SREVSX1JJR0hUOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgQkVaSUVSIENPTVBVVEFUSU9OUyAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBGVF9TTUFMTF9DT05JQ19USFJFU0hPTEQgICggRlRfQU5HTEVfUEkgLyA2ICkKKyNkZWZpbmUgRlRfU01BTExfQ1VCSUNfVEhSRVNIT0xEICAoIEZUX0FOR0xFX1BJIC8gOCApCisKKyNkZWZpbmUgRlRfRVBTSUxPTiAgMgorCisjZGVmaW5lIEZUX0lTX1NNQUxMKCB4ICkgICggKHgpID4gLUZUX0VQU0lMT04gJiYgKHgpIDwgRlRfRVBTSUxPTiApCisKKworICBzdGF0aWMgRlRfUG9zCisgIGZ0X3Bvc19hYnMoIEZUX1BvcyAgeCApCisgIHsKKyAgICByZXR1cm4geCA+PSAwID8geCA6IC14OworICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF9jb25pY19zcGxpdCggRlRfVmVjdG9yKiAgYmFzZSApCisgIHsKKyAgICBGVF9Qb3MgIGEsIGI7CisKKworICAgIGJhc2VbNF0ueCA9IGJhc2VbMl0ueDsKKyAgICBiID0gYmFzZVsxXS54OworICAgIGEgPSBiYXNlWzNdLnggPSAoIGJhc2VbMl0ueCArIGIgKSAvIDI7CisgICAgYiA9IGJhc2VbMV0ueCA9ICggYmFzZVswXS54ICsgYiApIC8gMjsKKyAgICBiYXNlWzJdLnggPSAoIGEgKyBiICkgLyAyOworCisgICAgYmFzZVs0XS55ID0gYmFzZVsyXS55OworICAgIGIgPSBiYXNlWzFdLnk7CisgICAgYSA9IGJhc2VbM10ueSA9ICggYmFzZVsyXS55ICsgYiApIC8gMjsKKyAgICBiID0gYmFzZVsxXS55ID0gKCBiYXNlWzBdLnkgKyBiICkgLyAyOworICAgIGJhc2VbMl0ueSA9ICggYSArIGIgKSAvIDI7CisgIH0KKworCisgIHN0YXRpYyBGVF9Cb29sCisgIGZ0X2NvbmljX2lzX3NtYWxsX2Vub3VnaCggRlRfVmVjdG9yKiAgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICphbmdsZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICphbmdsZV9vdXQgKQorICB7CisgICAgRlRfVmVjdG9yICBkMSwgZDI7CisgICAgRlRfQW5nbGUgICB0aGV0YTsKKyAgICBGVF9JbnQgICAgIGNsb3NlMSwgY2xvc2UyOworCisKKyAgICBkMS54ID0gYmFzZVsxXS54IC0gYmFzZVsyXS54OworICAgIGQxLnkgPSBiYXNlWzFdLnkgLSBiYXNlWzJdLnk7CisgICAgZDIueCA9IGJhc2VbMF0ueCAtIGJhc2VbMV0ueDsKKyAgICBkMi55ID0gYmFzZVswXS55IC0gYmFzZVsxXS55OworCisgICAgY2xvc2UxID0gRlRfSVNfU01BTEwoIGQxLnggKSAmJiBGVF9JU19TTUFMTCggZDEueSApOworICAgIGNsb3NlMiA9IEZUX0lTX1NNQUxMKCBkMi54ICkgJiYgRlRfSVNfU01BTEwoIGQyLnkgKTsKKworICAgIGlmICggY2xvc2UxICkKKyAgICB7CisgICAgICBpZiAoIGNsb3NlMiApCisgICAgICB7CisgICAgICAgIC8qIGJhc2ljYWxseSBhIHBvaW50OyAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiBkbyBub3RoaW5nIHRvIHJldGFpbiBvcmlnaW5hbCBkaXJlY3Rpb24gKi8KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgKmFuZ2xlX2luICA9CisgICAgICAgICphbmdsZV9vdXQgPSBGVF9BdGFuMiggZDIueCwgZDIueSApOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIC8qICFjbG9zZTEgKi8KKyAgICB7CisgICAgICBpZiAoIGNsb3NlMiApCisgICAgICB7CisgICAgICAgICphbmdsZV9pbiAgPQorICAgICAgICAqYW5nbGVfb3V0ID0gRlRfQXRhbjIoIGQxLngsIGQxLnkgKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgKmFuZ2xlX2luICA9IEZUX0F0YW4yKCBkMS54LCBkMS55ICk7CisgICAgICAgICphbmdsZV9vdXQgPSBGVF9BdGFuMiggZDIueCwgZDIueSApOworICAgICAgfQorICAgIH0KKworICAgIHRoZXRhID0gZnRfcG9zX2FicyggRlRfQW5nbGVfRGlmZiggKmFuZ2xlX2luLCAqYW5nbGVfb3V0ICkgKTsKKworICAgIHJldHVybiBGVF9CT09MKCB0aGV0YSA8IEZUX1NNQUxMX0NPTklDX1RIUkVTSE9MRCApOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF9jdWJpY19zcGxpdCggRlRfVmVjdG9yKiAgYmFzZSApCisgIHsKKyAgICBGVF9Qb3MgIGEsIGIsIGMsIGQ7CisKKworICAgIGJhc2VbNl0ueCA9IGJhc2VbM10ueDsKKyAgICBjID0gYmFzZVsxXS54OworICAgIGQgPSBiYXNlWzJdLng7CisgICAgYmFzZVsxXS54ID0gYSA9ICggYmFzZVswXS54ICsgYyApIC8gMjsKKyAgICBiYXNlWzVdLnggPSBiID0gKCBiYXNlWzNdLnggKyBkICkgLyAyOworICAgIGMgPSAoIGMgKyBkICkgLyAyOworICAgIGJhc2VbMl0ueCA9IGEgPSAoIGEgKyBjICkgLyAyOworICAgIGJhc2VbNF0ueCA9IGIgPSAoIGIgKyBjICkgLyAyOworICAgIGJhc2VbM10ueCA9ICggYSArIGIgKSAvIDI7CisKKyAgICBiYXNlWzZdLnkgPSBiYXNlWzNdLnk7CisgICAgYyA9IGJhc2VbMV0ueTsKKyAgICBkID0gYmFzZVsyXS55OworICAgIGJhc2VbMV0ueSA9IGEgPSAoIGJhc2VbMF0ueSArIGMgKSAvIDI7CisgICAgYmFzZVs1XS55ID0gYiA9ICggYmFzZVszXS55ICsgZCApIC8gMjsKKyAgICBjID0gKCBjICsgZCApIC8gMjsKKyAgICBiYXNlWzJdLnkgPSBhID0gKCBhICsgYyApIC8gMjsKKyAgICBiYXNlWzRdLnkgPSBiID0gKCBiICsgYyApIC8gMjsKKyAgICBiYXNlWzNdLnkgPSAoIGEgKyBiICkgLyAyOworICB9CisKKworICAvKiBSZXR1cm4gdGhlIGF2ZXJhZ2Ugb2YgYGFuZ2xlMScgYW5kIGBhbmdsZTInLiAgICAgICAgICAgICovCisgIC8qIFRoaXMgZ2l2ZXMgY29ycmVjdCByZXN1bHQgZXZlbiBpZiBgYW5nbGUxJyBhbmQgYGFuZ2xlMicgKi8KKyAgLyogaGF2ZSBvcHBvc2l0ZSBzaWducy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfQW5nbGUKKyAgZnRfYW5nbGVfbWVhbiggRlRfQW5nbGUgIGFuZ2xlMSwKKyAgICAgICAgICAgICAgICAgRlRfQW5nbGUgIGFuZ2xlMiApCisgIHsKKyAgICByZXR1cm4gYW5nbGUxICsgRlRfQW5nbGVfRGlmZiggYW5nbGUxLCBhbmdsZTIgKSAvIDI7CisgIH0KKworCisgIHN0YXRpYyBGVF9Cb29sCisgIGZ0X2N1YmljX2lzX3NtYWxsX2Vub3VnaCggRlRfVmVjdG9yKiAgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICphbmdsZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICphbmdsZV9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAqYW5nbGVfb3V0ICkKKyAgeworICAgIEZUX1ZlY3RvciAgZDEsIGQyLCBkMzsKKyAgICBGVF9BbmdsZSAgIHRoZXRhMSwgdGhldGEyOworICAgIEZUX0ludCAgICAgY2xvc2UxLCBjbG9zZTIsIGNsb3NlMzsKKworCisgICAgZDEueCA9IGJhc2VbMl0ueCAtIGJhc2VbM10ueDsKKyAgICBkMS55ID0gYmFzZVsyXS55IC0gYmFzZVszXS55OworICAgIGQyLnggPSBiYXNlWzFdLnggLSBiYXNlWzJdLng7CisgICAgZDIueSA9IGJhc2VbMV0ueSAtIGJhc2VbMl0ueTsKKyAgICBkMy54ID0gYmFzZVswXS54IC0gYmFzZVsxXS54OworICAgIGQzLnkgPSBiYXNlWzBdLnkgLSBiYXNlWzFdLnk7CisKKyAgICBjbG9zZTEgPSBGVF9JU19TTUFMTCggZDEueCApICYmIEZUX0lTX1NNQUxMKCBkMS55ICk7CisgICAgY2xvc2UyID0gRlRfSVNfU01BTEwoIGQyLnggKSAmJiBGVF9JU19TTUFMTCggZDIueSApOworICAgIGNsb3NlMyA9IEZUX0lTX1NNQUxMKCBkMy54ICkgJiYgRlRfSVNfU01BTEwoIGQzLnkgKTsKKworICAgIGlmICggY2xvc2UxICkKKyAgICB7CisgICAgICBpZiAoIGNsb3NlMiApCisgICAgICB7CisgICAgICAgIGlmICggY2xvc2UzICkKKyAgICAgICAgeworICAgICAgICAgIC8qIGJhc2ljYWxseSBhIHBvaW50OyAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qIGRvIG5vdGhpbmcgdG8gcmV0YWluIG9yaWdpbmFsIGRpcmVjdGlvbiAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogIWNsb3NlMyAqLworICAgICAgICB7CisgICAgICAgICAgKmFuZ2xlX2luICA9CisgICAgICAgICAgKmFuZ2xlX21pZCA9CisgICAgICAgICAgKmFuZ2xlX291dCA9IEZUX0F0YW4yKCBkMy54LCBkMy55ICk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgLyogIWNsb3NlMiAqLworICAgICAgeworICAgICAgICBpZiAoIGNsb3NlMyApCisgICAgICAgIHsKKyAgICAgICAgICAqYW5nbGVfaW4gID0KKyAgICAgICAgICAqYW5nbGVfbWlkID0KKyAgICAgICAgICAqYW5nbGVfb3V0ID0gRlRfQXRhbjIoIGQyLngsIGQyLnkgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qICFjbG9zZTMgKi8KKyAgICAgICAgeworICAgICAgICAgICphbmdsZV9pbiAgPQorICAgICAgICAgICphbmdsZV9taWQgPSBGVF9BdGFuMiggZDIueCwgZDIueSApOworICAgICAgICAgICphbmdsZV9vdXQgPSBGVF9BdGFuMiggZDMueCwgZDMueSApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGVsc2UgLyogIWNsb3NlMSAqLworICAgIHsKKyAgICAgIGlmICggY2xvc2UyICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBjbG9zZTMgKQorICAgICAgICB7CisgICAgICAgICAgKmFuZ2xlX2luICA9CisgICAgICAgICAgKmFuZ2xlX21pZCA9CisgICAgICAgICAgKmFuZ2xlX291dCA9IEZUX0F0YW4yKCBkMS54LCBkMS55ICk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiAhY2xvc2UzICovCisgICAgICAgIHsKKyAgICAgICAgICAqYW5nbGVfaW4gID0gRlRfQXRhbjIoIGQxLngsIGQxLnkgKTsKKyAgICAgICAgICAqYW5nbGVfb3V0ID0gRlRfQXRhbjIoIGQzLngsIGQzLnkgKTsKKyAgICAgICAgICAqYW5nbGVfbWlkID0gZnRfYW5nbGVfbWVhbiggKmFuZ2xlX2luLCAqYW5nbGVfb3V0ICk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgLyogIWNsb3NlMiAqLworICAgICAgeworICAgICAgICBpZiAoIGNsb3NlMyApCisgICAgICAgIHsKKyAgICAgICAgICAqYW5nbGVfaW4gID0gRlRfQXRhbjIoIGQxLngsIGQxLnkgKTsKKyAgICAgICAgICAqYW5nbGVfbWlkID0KKyAgICAgICAgICAqYW5nbGVfb3V0ID0gRlRfQXRhbjIoIGQyLngsIGQyLnkgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qICFjbG9zZTMgKi8KKyAgICAgICAgeworICAgICAgICAgICphbmdsZV9pbiAgPSBGVF9BdGFuMiggZDEueCwgZDEueSApOworICAgICAgICAgICphbmdsZV9taWQgPSBGVF9BdGFuMiggZDIueCwgZDIueSApOworICAgICAgICAgICphbmdsZV9vdXQgPSBGVF9BdGFuMiggZDMueCwgZDMueSApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgdGhldGExID0gZnRfcG9zX2FicyggRlRfQW5nbGVfRGlmZiggKmFuZ2xlX2luLCAgKmFuZ2xlX21pZCApICk7CisgICAgdGhldGEyID0gZnRfcG9zX2FicyggRlRfQW5nbGVfRGlmZiggKmFuZ2xlX21pZCwgKmFuZ2xlX291dCApICk7CisKKyAgICByZXR1cm4gRlRfQk9PTCggdGhldGExIDwgRlRfU01BTExfQ1VCSUNfVEhSRVNIT0xEICYmCisgICAgICAgICAgICAgICAgICAgIHRoZXRhMiA8IEZUX1NNQUxMX0NVQklDX1RIUkVTSE9MRCApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgIFNUUk9LRSBCT1JERVJTICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICB0eXBlZGVmIGVudW0gIEZUX1N0cm9rZVRhZ3NfCisgIHsKKyAgICBGVF9TVFJPS0VfVEFHX09OICAgID0gMSwgICAvKiBvbi1jdXJ2ZSBwb2ludCAgKi8KKyAgICBGVF9TVFJPS0VfVEFHX0NVQklDID0gMiwgICAvKiBjdWJpYyBvZmYtcG9pbnQgKi8KKyAgICBGVF9TVFJPS0VfVEFHX0JFR0lOID0gNCwgICAvKiBzdWItcGF0aCBzdGFydCAgKi8KKyAgICBGVF9TVFJPS0VfVEFHX0VORCAgID0gOCAgICAvKiBzdWItcGF0aCBlbmQgICAgKi8KKworICB9IEZUX1N0cm9rZVRhZ3M7CisKKyNkZWZpbmUgIEZUX1NUUk9LRV9UQUdfQkVHSU5fRU5EICAoIEZUX1NUUk9LRV9UQUdfQkVHSU4gfCBGVF9TVFJPS0VfVEFHX0VORCApCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEZUX1N0cm9rZUJvcmRlclJlY18KKyAgeworICAgIEZUX1VJbnQgICAgIG51bV9wb2ludHM7CisgICAgRlRfVUludCAgICAgbWF4X3BvaW50czsKKyAgICBGVF9WZWN0b3IqICBwb2ludHM7CisgICAgRlRfQnl0ZSogICAgdGFnczsKKyAgICBGVF9Cb29sICAgICBtb3ZhYmxlOyAgLyogVFJVRSBmb3IgZW5kcyBvZiBsaW5ldG8gYm9yZGVycyAqLworICAgIEZUX0ludCAgICAgIHN0YXJ0OyAgICAvKiBpbmRleCBvZiBjdXJyZW50IHN1Yi1wYXRoIHN0YXJ0IHBvaW50ICovCisgICAgRlRfTWVtb3J5ICAgbWVtb3J5OworICAgIEZUX0Jvb2wgICAgIHZhbGlkOworCisgIH0gRlRfU3Ryb2tlQm9yZGVyUmVjLCAqRlRfU3Ryb2tlQm9yZGVyOworCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N0cm9rZV9ib3JkZXJfZ3JvdyggRlRfU3Ryb2tlQm9yZGVyICBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICBuZXdfcG9pbnRzICkKKyAgeworICAgIEZUX1VJbnQgICBvbGRfbWF4ID0gYm9yZGVyLT5tYXhfcG9pbnRzOworICAgIEZUX1VJbnQgICBuZXdfbWF4ID0gYm9yZGVyLT5udW1fcG9pbnRzICsgbmV3X3BvaW50czsKKyAgICBGVF9FcnJvciAgZXJyb3IgICA9IEZUX0Vycl9PazsKKworCisgICAgaWYgKCBuZXdfbWF4ID4gb2xkX21heCApCisgICAgeworICAgICAgRlRfVUludCAgICBjdXJfbWF4ID0gb2xkX21heDsKKyAgICAgIEZUX01lbW9yeSAgbWVtb3J5ICA9IGJvcmRlci0+bWVtb3J5OworCisKKyAgICAgIHdoaWxlICggY3VyX21heCA8IG5ld19tYXggKQorICAgICAgICBjdXJfbWF4ICs9ICggY3VyX21heCA+PiAxICkgKyAxNjsKKworICAgICAgaWYgKCBGVF9SRU5FV19BUlJBWSggYm9yZGVyLT5wb2ludHMsIG9sZF9tYXgsIGN1cl9tYXggKSB8fAorICAgICAgICAgICBGVF9SRU5FV19BUlJBWSggYm9yZGVyLT50YWdzLCAgIG9sZF9tYXgsIGN1cl9tYXggKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgYm9yZGVyLT5tYXhfcG9pbnRzID0gY3VyX21heDsKKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X3N0cm9rZV9ib3JkZXJfY2xvc2UoIEZUX1N0cm9rZUJvcmRlciAgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgIHJldmVyc2UgKQorICB7CisgICAgRlRfVUludCAgc3RhcnQgPSBib3JkZXItPnN0YXJ0OworICAgIEZUX1VJbnQgIGNvdW50ID0gYm9yZGVyLT5udW1fcG9pbnRzOworCisKKyAgICBGVF9BU1NFUlQoIGJvcmRlci0+c3RhcnQgPj0gMCApOworCisgICAgLyogZG9uJ3QgcmVjb3JkIGVtcHR5IHBhdGhzISAqLworICAgIGlmICggY291bnQgPD0gc3RhcnQgKyAxVSApCisgICAgICBib3JkZXItPm51bV9wb2ludHMgPSBzdGFydDsKKyAgICBlbHNlCisgICAgeworICAgICAgLyogY29weSB0aGUgbGFzdCBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhpcyBzdWItcGF0aCwgc2luY2UgKi8KKyAgICAgIC8qIGl0IGNvbnRhaW5zIHRoZSBgYWRqdXN0ZWQnIHN0YXJ0aW5nIGNvb3JkaW5hdGVzICAgICAgICAgICovCisgICAgICBib3JkZXItPm51bV9wb2ludHMgICAgPSAtLWNvdW50OworICAgICAgYm9yZGVyLT5wb2ludHNbc3RhcnRdID0gYm9yZGVyLT5wb2ludHNbY291bnRdOworCisgICAgICBpZiAoIHJldmVyc2UgKQorICAgICAgeworICAgICAgICAvKiByZXZlcnNlIHRoZSBwb2ludHMgKi8KKyAgICAgICAgeworICAgICAgICAgIEZUX1ZlY3RvciogIHZlYzEgPSBib3JkZXItPnBvaW50cyArIHN0YXJ0ICsgMTsKKyAgICAgICAgICBGVF9WZWN0b3IqICB2ZWMyID0gYm9yZGVyLT5wb2ludHMgKyBjb3VudCAtIDE7CisKKworICAgICAgICAgIGZvciAoIDsgdmVjMSA8IHZlYzI7IHZlYzErKywgdmVjMi0tICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9WZWN0b3IgIHRtcDsKKworCisgICAgICAgICAgICB0bXAgICA9ICp2ZWMxOworICAgICAgICAgICAgKnZlYzEgPSAqdmVjMjsKKyAgICAgICAgICAgICp2ZWMyID0gdG1wOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIHRoZW4gdGhlIHRhZ3MgKi8KKyAgICAgICAgeworICAgICAgICAgIEZUX0J5dGUqICB0YWcxID0gYm9yZGVyLT50YWdzICsgc3RhcnQgKyAxOworICAgICAgICAgIEZUX0J5dGUqICB0YWcyID0gYm9yZGVyLT50YWdzICsgY291bnQgLSAxOworCisKKyAgICAgICAgICBmb3IgKCA7IHRhZzEgPCB0YWcyOyB0YWcxKyssIHRhZzItLSApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfQnl0ZSAgdG1wOworCisKKyAgICAgICAgICAgIHRtcCAgID0gKnRhZzE7CisgICAgICAgICAgICAqdGFnMSA9ICp0YWcyOworICAgICAgICAgICAgKnRhZzIgPSB0bXA7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGJvcmRlci0+dGFnc1tzdGFydCAgICBdIHw9IEZUX1NUUk9LRV9UQUdfQkVHSU47CisgICAgICBib3JkZXItPnRhZ3NbY291bnQgLSAxXSB8PSBGVF9TVFJPS0VfVEFHX0VORDsKKyAgICB9CisKKyAgICBib3JkZXItPnN0YXJ0ICAgPSAtMTsKKyAgICBib3JkZXItPm1vdmFibGUgPSBGQUxTRTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N0cm9rZV9ib3JkZXJfbGluZXRvKCBGVF9TdHJva2VCb3JkZXIgIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogICAgICAgdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgIG1vdmFibGUgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICBGVF9BU1NFUlQoIGJvcmRlci0+c3RhcnQgPj0gMCApOworCisgICAgaWYgKCBib3JkZXItPm1vdmFibGUgKQorICAgIHsKKyAgICAgIC8qIG1vdmUgbGFzdCBwb2ludCAqLworICAgICAgYm9yZGVyLT5wb2ludHNbYm9yZGVyLT5udW1fcG9pbnRzIC0gMV0gPSAqdG87CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBkb24ndCBhZGQgemVyby1sZW5ndGggbGluZXRvICovCisgICAgICBpZiAoIGJvcmRlci0+bnVtX3BvaW50cyA+IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICBGVF9JU19TTUFMTCggYm9yZGVyLT5wb2ludHNbYm9yZGVyLT5udW1fcG9pbnRzIC0gMV0ueCAtIHRvLT54ICkgJiYKKyAgICAgICAgICAgRlRfSVNfU01BTEwoIGJvcmRlci0+cG9pbnRzW2JvcmRlci0+bnVtX3BvaW50cyAtIDFdLnkgLSB0by0+eSApICkKKyAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgICAvKiBhZGQgb25lIHBvaW50ICovCisgICAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfZ3JvdyggYm9yZGVyLCAxICk7CisgICAgICBpZiAoICFlcnJvciApCisgICAgICB7CisgICAgICAgIEZUX1ZlY3RvciogIHZlYyA9IGJvcmRlci0+cG9pbnRzICsgYm9yZGVyLT5udW1fcG9pbnRzOworICAgICAgICBGVF9CeXRlKiAgICB0YWcgPSBib3JkZXItPnRhZ3MgICArIGJvcmRlci0+bnVtX3BvaW50czsKKworCisgICAgICAgIHZlY1swXSA9ICp0bzsKKyAgICAgICAgdGFnWzBdID0gRlRfU1RST0tFX1RBR19PTjsKKworICAgICAgICBib3JkZXItPm51bV9wb2ludHMgKz0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgYm9yZGVyLT5tb3ZhYmxlID0gbW92YWJsZTsKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9zdHJva2VfYm9yZGVyX2NvbmljdG8oIEZUX1N0cm9rZUJvcmRlciAgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogICAgICAgY29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICAgICAgIHRvICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgRlRfQVNTRVJUKCBib3JkZXItPnN0YXJ0ID49IDAgKTsKKworICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9ncm93KCBib3JkZXIsIDIgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgRlRfVmVjdG9yKiAgdmVjID0gYm9yZGVyLT5wb2ludHMgKyBib3JkZXItPm51bV9wb2ludHM7CisgICAgICBGVF9CeXRlKiAgICB0YWcgPSBib3JkZXItPnRhZ3MgICArIGJvcmRlci0+bnVtX3BvaW50czsKKworCisgICAgICB2ZWNbMF0gPSAqY29udHJvbDsKKyAgICAgIHZlY1sxXSA9ICp0bzsKKworICAgICAgdGFnWzBdID0gMDsKKyAgICAgIHRhZ1sxXSA9IEZUX1NUUk9LRV9UQUdfT047CisKKyAgICAgIGJvcmRlci0+bnVtX3BvaW50cyArPSAyOworICAgIH0KKworICAgIGJvcmRlci0+bW92YWJsZSA9IEZBTFNFOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgZnRfc3Ryb2tlX2JvcmRlcl9jdWJpY3RvKCBGVF9TdHJva2VCb3JkZXIgIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICAgICAgIGNvbnRyb2wxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogICAgICAgY29udHJvbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgICAgICB0byApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgIEZUX0FTU0VSVCggYm9yZGVyLT5zdGFydCA+PSAwICk7CisKKyAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfZ3JvdyggYm9yZGVyLCAzICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgIHsKKyAgICAgIEZUX1ZlY3RvciogIHZlYyA9IGJvcmRlci0+cG9pbnRzICsgYm9yZGVyLT5udW1fcG9pbnRzOworICAgICAgRlRfQnl0ZSogICAgdGFnID0gYm9yZGVyLT50YWdzICAgKyBib3JkZXItPm51bV9wb2ludHM7CisKKworICAgICAgdmVjWzBdID0gKmNvbnRyb2wxOworICAgICAgdmVjWzFdID0gKmNvbnRyb2wyOworICAgICAgdmVjWzJdID0gKnRvOworCisgICAgICB0YWdbMF0gPSBGVF9TVFJPS0VfVEFHX0NVQklDOworICAgICAgdGFnWzFdID0gRlRfU1RST0tFX1RBR19DVUJJQzsKKyAgICAgIHRhZ1syXSA9IEZUX1NUUk9LRV9UQUdfT047CisKKyAgICAgIGJvcmRlci0+bnVtX3BvaW50cyArPSAzOworICAgIH0KKworICAgIGJvcmRlci0+bW92YWJsZSA9IEZBTFNFOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworI2RlZmluZSBGVF9BUkNfQ1VCSUNfQU5HTEUgICggRlRfQU5HTEVfUEkgLyAyICkKKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9zdHJva2VfYm9yZGVyX2FyY3RvKCBGVF9TdHJva2VCb3JkZXIgIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgICAgICBjZW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgICAgICAgcmFkaXVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICAgICAgIGFuZ2xlX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICAgICAgIGFuZ2xlX2RpZmYgKQorICB7CisgICAgRlRfQW5nbGUgICB0b3RhbCwgYW5nbGUsIHN0ZXAsIHJvdGF0ZSwgbmV4dCwgdGhldGE7CisgICAgRlRfVmVjdG9yICBhLCBiLCBhMiwgYjI7CisgICAgRlRfRml4ZWQgICBsZW5ndGg7CisgICAgRlRfRXJyb3IgICBlcnJvciA9IEZUX0Vycl9PazsKKworCisgICAgLyogY29tcHV0ZSBzdGFydCBwb2ludCAqLworICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmYSwgcmFkaXVzLCBhbmdsZV9zdGFydCApOworICAgIGEueCArPSBjZW50ZXItPng7CisgICAgYS55ICs9IGNlbnRlci0+eTsKKworICAgIHRvdGFsICA9IGFuZ2xlX2RpZmY7CisgICAgYW5nbGUgID0gYW5nbGVfc3RhcnQ7CisgICAgcm90YXRlID0gKCBhbmdsZV9kaWZmID49IDAgKSA/IEZUX0FOR0xFX1BJMiA6IC1GVF9BTkdMRV9QSTI7CisKKyAgICB3aGlsZSAoIHRvdGFsICE9IDAgKQorICAgIHsKKyAgICAgIHN0ZXAgPSB0b3RhbDsKKyAgICAgIGlmICggc3RlcCA+IEZUX0FSQ19DVUJJQ19BTkdMRSApCisgICAgICAgIHN0ZXAgPSBGVF9BUkNfQ1VCSUNfQU5HTEU7CisKKyAgICAgIGVsc2UgaWYgKCBzdGVwIDwgLUZUX0FSQ19DVUJJQ19BTkdMRSApCisgICAgICAgIHN0ZXAgPSAtRlRfQVJDX0NVQklDX0FOR0xFOworCisgICAgICBuZXh0ICA9IGFuZ2xlICsgc3RlcDsKKyAgICAgIHRoZXRhID0gc3RlcDsKKyAgICAgIGlmICggdGhldGEgPCAwICkKKyAgICAgICAgdGhldGEgPSAtdGhldGE7CisKKyAgICAgIHRoZXRhID4+PSAxOworCisgICAgICAvKiBjb21wdXRlIGVuZCBwb2ludCAqLworICAgICAgRlRfVmVjdG9yX0Zyb21fUG9sYXIoICZiLCByYWRpdXMsIG5leHQgKTsKKyAgICAgIGIueCArPSBjZW50ZXItPng7CisgICAgICBiLnkgKz0gY2VudGVyLT55OworCisgICAgICAvKiBjb21wdXRlIGZpcnN0IGFuZCBzZWNvbmQgY29udHJvbCBwb2ludHMgKi8KKyAgICAgIGxlbmd0aCA9IEZUX011bERpdiggcmFkaXVzLCBGVF9TaW4oIHRoZXRhICkgKiA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAoIDB4MTAwMDBMICsgRlRfQ29zKCB0aGV0YSApICkgKiAzICk7CisKKyAgICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmYTIsIGxlbmd0aCwgYW5nbGUgKyByb3RhdGUgKTsKKyAgICAgIGEyLnggKz0gYS54OworICAgICAgYTIueSArPSBhLnk7CisKKyAgICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmYjIsIGxlbmd0aCwgbmV4dCAtIHJvdGF0ZSApOworICAgICAgYjIueCArPSBiLng7CisgICAgICBiMi55ICs9IGIueTsKKworICAgICAgLyogYWRkIGN1YmljIGFyYyAqLworICAgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2N1YmljdG8oIGJvcmRlciwgJmEyLCAmYjIsICZiICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIGFyYyA/PyAqLworICAgICAgYSAgICAgID0gYjsKKyAgICAgIHRvdGFsIC09IHN0ZXA7CisgICAgICBhbmdsZSAgPSBuZXh0OworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N0cm9rZV9ib3JkZXJfbW92ZXRvKCBGVF9TdHJva2VCb3JkZXIgIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogICAgICAgdG8gKQorICB7CisgICAgLyogY2xvc2UgY3VycmVudCBvcGVuIHBhdGggaWYgYW55ID8gKi8KKyAgICBpZiAoIGJvcmRlci0+c3RhcnQgPj0gMCApCisgICAgICBmdF9zdHJva2VfYm9yZGVyX2Nsb3NlKCBib3JkZXIsIEZBTFNFICk7CisKKyAgICBib3JkZXItPnN0YXJ0ID0gYm9yZGVyLT5udW1fcG9pbnRzOworICAgIGJvcmRlci0+bW92YWJsZSA9IEZBTFNFOworCisgICAgcmV0dXJuIGZ0X3N0cm9rZV9ib3JkZXJfbGluZXRvKCBib3JkZXIsIHRvLCBGQUxTRSApOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF9zdHJva2VfYm9yZGVyX2luaXQoIEZUX1N0cm9rZUJvcmRlciAgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgICAgbWVtb3J5ICkKKyAgeworICAgIGJvcmRlci0+bWVtb3J5ID0gbWVtb3J5OworICAgIGJvcmRlci0+cG9pbnRzID0gTlVMTDsKKyAgICBib3JkZXItPnRhZ3MgICA9IE5VTEw7CisKKyAgICBib3JkZXItPm51bV9wb2ludHMgPSAwOworICAgIGJvcmRlci0+bWF4X3BvaW50cyA9IDA7CisgICAgYm9yZGVyLT5zdGFydCAgICAgID0gLTE7CisgICAgYm9yZGVyLT52YWxpZCAgICAgID0gRkFMU0U7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X3N0cm9rZV9ib3JkZXJfcmVzZXQoIEZUX1N0cm9rZUJvcmRlciAgYm9yZGVyICkKKyAgeworICAgIGJvcmRlci0+bnVtX3BvaW50cyA9IDA7CisgICAgYm9yZGVyLT5zdGFydCAgICAgID0gLTE7CisgICAgYm9yZGVyLT52YWxpZCAgICAgID0gRkFMU0U7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X3N0cm9rZV9ib3JkZXJfZG9uZSggRlRfU3Ryb2tlQm9yZGVyICBib3JkZXIgKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBib3JkZXItPm1lbW9yeTsKKworCisgICAgRlRfRlJFRSggYm9yZGVyLT5wb2ludHMgKTsKKyAgICBGVF9GUkVFKCBib3JkZXItPnRhZ3MgKTsKKworICAgIGJvcmRlci0+bnVtX3BvaW50cyA9IDA7CisgICAgYm9yZGVyLT5tYXhfcG9pbnRzID0gMDsKKyAgICBib3JkZXItPnN0YXJ0ICAgICAgPSAtMTsKKyAgICBib3JkZXItPnZhbGlkICAgICAgPSBGQUxTRTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N0cm9rZV9ib3JkZXJfZ2V0X2NvdW50cyggRlRfU3Ryb2tlQm9yZGVyICBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICphbnVtX3BvaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgKmFudW1fY29udG91cnMgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yICAgICAgICA9IEZUX0Vycl9PazsKKyAgICBGVF9VSW50ICAgbnVtX3BvaW50cyAgID0gMDsKKyAgICBGVF9VSW50ICAgbnVtX2NvbnRvdXJzID0gMDsKKworICAgIEZUX1VJbnQgICAgIGNvdW50ICAgICAgPSBib3JkZXItPm51bV9wb2ludHM7CisgICAgRlRfVmVjdG9yKiAgcG9pbnQgICAgICA9IGJvcmRlci0+cG9pbnRzOworICAgIEZUX0J5dGUqICAgIHRhZ3MgICAgICAgPSBib3JkZXItPnRhZ3M7CisgICAgRlRfSW50ICAgICAgaW5fY29udG91ciA9IDA7CisKKworICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCBudW1fcG9pbnRzKyssIHBvaW50KyssIHRhZ3MrKyApCisgICAgeworICAgICAgaWYgKCB0YWdzWzBdICYgRlRfU1RST0tFX1RBR19CRUdJTiApCisgICAgICB7CisgICAgICAgIGlmICggaW5fY29udG91ciAhPSAwICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgaW5fY29udG91ciA9IDE7CisgICAgICB9CisgICAgICBlbHNlIGlmICggaW5fY29udG91ciA9PSAwICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBpZiAoIHRhZ3NbMF0gJiBGVF9TVFJPS0VfVEFHX0VORCApCisgICAgICB7CisgICAgICAgIGluX2NvbnRvdXIgPSAwOworICAgICAgICBudW1fY29udG91cnMrKzsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIGluX2NvbnRvdXIgIT0gMCApCisgICAgICBnb3RvIEZhaWw7CisKKyAgICBib3JkZXItPnZhbGlkID0gVFJVRTsKKworICBFeGl0OgorICAgICphbnVtX3BvaW50cyAgID0gbnVtX3BvaW50czsKKyAgICAqYW51bV9jb250b3VycyA9IG51bV9jb250b3VyczsKKyAgICByZXR1cm4gZXJyb3I7CisKKyAgRmFpbDoKKyAgICBudW1fcG9pbnRzICAgPSAwOworICAgIG51bV9jb250b3VycyA9IDA7CisgICAgZ290byBFeGl0OworICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF9zdHJva2VfYm9yZGVyX2V4cG9ydCggRlRfU3Ryb2tlQm9yZGVyICBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgICAgIG91dGxpbmUgKQorICB7CisgICAgLyogY29weSBwb2ludCBsb2NhdGlvbnMgKi8KKyAgICBGVF9BUlJBWV9DT1BZKCBvdXRsaW5lLT5wb2ludHMgKyBvdXRsaW5lLT5uX3BvaW50cywKKyAgICAgICAgICAgICAgICAgICBib3JkZXItPnBvaW50cywKKyAgICAgICAgICAgICAgICAgICBib3JkZXItPm51bV9wb2ludHMgKTsKKworICAgIC8qIGNvcHkgdGFncyAqLworICAgIHsKKyAgICAgIEZUX1VJbnQgICBjb3VudCA9IGJvcmRlci0+bnVtX3BvaW50czsKKyAgICAgIEZUX0J5dGUqICByZWFkICA9IGJvcmRlci0+dGFnczsKKyAgICAgIEZUX0J5dGUqICB3cml0ZSA9IChGVF9CeXRlKilvdXRsaW5lLT50YWdzICsgb3V0bGluZS0+bl9wb2ludHM7CisKKworICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0sIHJlYWQrKywgd3JpdGUrKyApCisgICAgICB7CisgICAgICAgIGlmICggKnJlYWQgJiBGVF9TVFJPS0VfVEFHX09OICkKKyAgICAgICAgICAqd3JpdGUgPSBGVF9DVVJWRV9UQUdfT047CisgICAgICAgIGVsc2UgaWYgKCAqcmVhZCAmIEZUX1NUUk9LRV9UQUdfQ1VCSUMgKQorICAgICAgICAgICp3cml0ZSA9IEZUX0NVUlZFX1RBR19DVUJJQzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICp3cml0ZSA9IEZUX0NVUlZFX1RBR19DT05JQzsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBjb3B5IGNvbnRvdXJzICovCisgICAgeworICAgICAgRlRfVUludCAgICBjb3VudCA9IGJvcmRlci0+bnVtX3BvaW50czsKKyAgICAgIEZUX0J5dGUqICAgdGFncyAgPSBib3JkZXItPnRhZ3M7CisgICAgICBGVF9TaG9ydCogIHdyaXRlID0gb3V0bGluZS0+Y29udG91cnMgKyBvdXRsaW5lLT5uX2NvbnRvdXJzOworICAgICAgRlRfU2hvcnQgICBpZHggICA9IChGVF9TaG9ydClvdXRsaW5lLT5uX3BvaW50czsKKworCisgICAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSwgdGFncysrLCBpZHgrKyApCisgICAgICB7CisgICAgICAgIGlmICggKnRhZ3MgJiBGVF9TVFJPS0VfVEFHX0VORCApCisgICAgICAgIHsKKyAgICAgICAgICAqd3JpdGUrKyA9IGlkeDsKKyAgICAgICAgICBvdXRsaW5lLT5uX2NvbnRvdXJzKys7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBvdXRsaW5lLT5uX3BvaW50cyA9IChzaG9ydCkoIG91dGxpbmUtPm5fcG9pbnRzICsgYm9yZGVyLT5udW1fcG9pbnRzICk7CisKKyAgICBGVF9BU1NFUlQoIEZUX091dGxpbmVfQ2hlY2soIG91dGxpbmUgKSA9PSAwICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUk9LRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEZUX1NJREVfVE9fUk9UQVRFKCBzICkgICAoIEZUX0FOR0xFX1BJMiAtIChzKSAqIEZUX0FOR0xFX1BJICkKKworICB0eXBlZGVmIHN0cnVjdCAgRlRfU3Ryb2tlclJlY18KKyAgeworICAgIEZUX0FuZ2xlICAgICAgICAgICAgIGFuZ2xlX2luOyAgICAgICAgICAgICAvKiBkaXJlY3Rpb24gaW50byBjdXJyIGpvaW4gKi8KKyAgICBGVF9BbmdsZSAgICAgICAgICAgICBhbmdsZV9vdXQ7ICAgICAgICAgICAgLyogZGlyZWN0aW9uIG91dCBvZiBqb2luICAqLworICAgIEZUX1ZlY3RvciAgICAgICAgICAgIGNlbnRlcjsgICAgICAgICAgICAgICAvKiBjdXJyZW50IHBvc2l0aW9uICovCisgICAgRlRfRml4ZWQgICAgICAgICAgICAgbGluZV9sZW5ndGg7ICAgICAgICAgIC8qIGxlbmd0aCBvZiBsYXN0IGxpbmV0byAqLworICAgIEZUX0Jvb2wgICAgICAgICAgICAgIGZpcnN0X3BvaW50OyAgICAgICAgICAvKiBpcyB0aGlzIHRoZSBzdGFydD8gKi8KKyAgICBGVF9Cb29sICAgICAgICAgICAgICBzdWJwYXRoX29wZW47ICAgICAgICAgLyogaXMgdGhlIHN1YnBhdGggb3Blbj8gKi8KKyAgICBGVF9BbmdsZSAgICAgICAgICAgICBzdWJwYXRoX2FuZ2xlOyAgICAgICAgLyogc3VicGF0aCBzdGFydCBkaXJlY3Rpb24gKi8KKyAgICBGVF9WZWN0b3IgICAgICAgICAgICBzdWJwYXRoX3N0YXJ0OyAgICAgICAgLyogc3VicGF0aCBzdGFydCBwb3NpdGlvbiAqLworICAgIEZUX0ZpeGVkICAgICAgICAgICAgIHN1YnBhdGhfbGluZV9sZW5ndGg7ICAvKiBzdWJwYXRoIHN0YXJ0IGxpbmV0byBsZW4gKi8KKyAgICBGVF9Cb29sICAgICAgICAgICAgICBoYW5kbGVfd2lkZV9zdHJva2VzOyAgLyogdXNlIHdpZGUgc3Ryb2tlcyBsb2dpYz8gKi8KKworICAgIEZUX1N0cm9rZXJfTGluZUNhcCAgIGxpbmVfY2FwOworICAgIEZUX1N0cm9rZXJfTGluZUpvaW4gIGxpbmVfam9pbjsKKyAgICBGVF9TdHJva2VyX0xpbmVKb2luICBsaW5lX2pvaW5fc2F2ZWQ7CisgICAgRlRfRml4ZWQgICAgICAgICAgICAgbWl0ZXJfbGltaXQ7CisgICAgRlRfRml4ZWQgICAgICAgICAgICAgcmFkaXVzOworCisgICAgRlRfU3Ryb2tlQm9yZGVyUmVjICAgYm9yZGVyc1syXTsKKyAgICBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5OworCisgIH0gRlRfU3Ryb2tlclJlYzsKKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRzdHJva2UuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfU3Ryb2tlcl9OZXcoIEZUX0xpYnJhcnkgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlciAgKmFzdHJva2VyICkKKyAgeworICAgIEZUX0Vycm9yICAgIGVycm9yOyAgICAgICAgICAgLyogYXNzaWduZWQgaW4gRlRfTkVXICovCisgICAgRlRfTWVtb3J5ICAgbWVtb3J5OworICAgIEZUX1N0cm9rZXIgIHN0cm9rZXIgPSBOVUxMOworCisKKyAgICBpZiAoICFsaWJyYXJ5ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisgICAgaWYgKCAhRlRfTkVXKCBzdHJva2VyICkgKQorICAgIHsKKyAgICAgIHN0cm9rZXItPmxpYnJhcnkgPSBsaWJyYXJ5OworCisgICAgICBmdF9zdHJva2VfYm9yZGVyX2luaXQoICZzdHJva2VyLT5ib3JkZXJzWzBdLCBtZW1vcnkgKTsKKyAgICAgIGZ0X3N0cm9rZV9ib3JkZXJfaW5pdCggJnN0cm9rZXItPmJvcmRlcnNbMV0sIG1lbW9yeSApOworICAgIH0KKworICAgICphc3Ryb2tlciA9IHN0cm9rZXI7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRzdHJva2UuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9TdHJva2VyX1NldCggRlRfU3Ryb2tlciAgICAgICAgICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgICAgICAgICAgIHJhZGl1cywKKyAgICAgICAgICAgICAgICAgIEZUX1N0cm9rZXJfTGluZUNhcCAgIGxpbmVfY2FwLAorICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlcl9MaW5lSm9pbiAgbGluZV9qb2luLAorICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgICAgICAgICAgbWl0ZXJfbGltaXQgKQorICB7CisgICAgc3Ryb2tlci0+cmFkaXVzICAgICAgPSByYWRpdXM7CisgICAgc3Ryb2tlci0+bGluZV9jYXAgICAgPSBsaW5lX2NhcDsKKyAgICBzdHJva2VyLT5saW5lX2pvaW4gICA9IGxpbmVfam9pbjsKKyAgICBzdHJva2VyLT5taXRlcl9saW1pdCA9IG1pdGVyX2xpbWl0OworCisgICAgLyogZW5zdXJlIG1pdGVyIGxpbWl0IGhhcyBzZW5zaWJsZSB2YWx1ZSAqLworICAgIGlmICggc3Ryb2tlci0+bWl0ZXJfbGltaXQgPCAweDEwMDAwICkKKyAgICAgIHN0cm9rZXItPm1pdGVyX2xpbWl0ID0gMHgxMDAwMDsKKworICAgIC8qIHNhdmUgbGluZSBqb2luIHN0eWxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIGxpbmUgam9pbiBzdHlsZSBjYW4gYmUgdGVtcG9yYXJpbHkgY2hhbmdlZCB3aGVuIHN0cm9raW5nIGN1cnZlcyAqLworICAgIHN0cm9rZXItPmxpbmVfam9pbl9zYXZlZCA9IGxpbmVfam9pbjsKKworICAgIEZUX1N0cm9rZXJfUmV3aW5kKCBzdHJva2VyICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRzdHJva2UuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9TdHJva2VyX1Jld2luZCggRlRfU3Ryb2tlciAgc3Ryb2tlciApCisgIHsKKyAgICBpZiAoIHN0cm9rZXIgKQorICAgIHsKKyAgICAgIGZ0X3N0cm9rZV9ib3JkZXJfcmVzZXQoICZzdHJva2VyLT5ib3JkZXJzWzBdICk7CisgICAgICBmdF9zdHJva2VfYm9yZGVyX3Jlc2V0KCAmc3Ryb2tlci0+Ym9yZGVyc1sxXSApOworICAgIH0KKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHN0cm9rZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX1N0cm9rZXJfRG9uZSggRlRfU3Ryb2tlciAgc3Ryb2tlciApCisgIHsKKyAgICBpZiAoIHN0cm9rZXIgKQorICAgIHsKKyAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gc3Ryb2tlci0+bGlicmFyeS0+bWVtb3J5OworCisKKyAgICAgIGZ0X3N0cm9rZV9ib3JkZXJfZG9uZSggJnN0cm9rZXItPmJvcmRlcnNbMF0gKTsKKyAgICAgIGZ0X3N0cm9rZV9ib3JkZXJfZG9uZSggJnN0cm9rZXItPmJvcmRlcnNbMV0gKTsKKworICAgICAgc3Ryb2tlci0+bGlicmFyeSA9IE5VTEw7CisgICAgICBGVF9GUkVFKCBzdHJva2VyICk7CisgICAgfQorICB9CisKKworICAvKiBjcmVhdGUgYSBjaXJjdWxhciBhcmMgYXQgYSBjb3JuZXIgb3IgY2FwICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9zdHJva2VyX2FyY3RvKCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICBzaWRlICkKKyAgeworICAgIEZUX0FuZ2xlICAgICAgICAgdG90YWwsIHJvdGF0ZTsKKyAgICBGVF9GaXhlZCAgICAgICAgIHJhZGl1cyA9IHN0cm9rZXItPnJhZGl1czsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yICA9IEZUX0Vycl9PazsKKyAgICBGVF9TdHJva2VCb3JkZXIgIGJvcmRlciA9IHN0cm9rZXItPmJvcmRlcnMgKyBzaWRlOworCisKKyAgICByb3RhdGUgPSBGVF9TSURFX1RPX1JPVEFURSggc2lkZSApOworCisgICAgdG90YWwgPSBGVF9BbmdsZV9EaWZmKCBzdHJva2VyLT5hbmdsZV9pbiwgc3Ryb2tlci0+YW5nbGVfb3V0ICk7CisgICAgaWYgKCB0b3RhbCA9PSBGVF9BTkdMRV9QSSApCisgICAgICB0b3RhbCA9IC1yb3RhdGUgKiAyOworCisgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2FyY3RvKCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Ryb2tlci0+Y2VudGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlci0+YW5nbGVfaW4gKyByb3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCApOworICAgIGJvcmRlci0+bW92YWJsZSA9IEZBTFNFOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogYWRkIGEgY2FwIGF0IHRoZSBlbmQgb2YgYW4gb3BlbmVkIHBhdGggKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N0cm9rZXJfY2FwKCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAgYW5nbGUsCisgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICBzaWRlICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKworCisgICAgaWYgKCBzdHJva2VyLT5saW5lX2NhcCA9PSBGVF9TVFJPS0VSX0xJTkVDQVBfUk9VTkQgKQorICAgIHsKKyAgICAgIC8qIGFkZCBhIHJvdW5kIGNhcCAqLworICAgICAgc3Ryb2tlci0+YW5nbGVfaW4gID0gYW5nbGU7CisgICAgICBzdHJva2VyLT5hbmdsZV9vdXQgPSBhbmdsZSArIEZUX0FOR0xFX1BJOworCisgICAgICBlcnJvciA9IGZ0X3N0cm9rZXJfYXJjdG8oIHN0cm9rZXIsIHNpZGUgKTsKKyAgICB9CisgICAgZWxzZSBpZiAoIHN0cm9rZXItPmxpbmVfY2FwID09IEZUX1NUUk9LRVJfTElORUNBUF9TUVVBUkUgKQorICAgIHsKKyAgICAgIC8qIGFkZCBhIHNxdWFyZSBjYXAgKi8KKyAgICAgIEZUX1ZlY3RvciAgICAgICAgZGVsdGEsIGRlbHRhMjsKKyAgICAgIEZUX0FuZ2xlICAgICAgICAgcm90YXRlID0gRlRfU0lERV9UT19ST1RBVEUoIHNpZGUgKTsKKyAgICAgIEZUX0ZpeGVkICAgICAgICAgcmFkaXVzID0gc3Ryb2tlci0+cmFkaXVzOworICAgICAgRlRfU3Ryb2tlQm9yZGVyICBib3JkZXIgPSBzdHJva2VyLT5ib3JkZXJzICsgc2lkZTsKKworCisgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmRlbHRhMiwgcmFkaXVzLCBhbmdsZSArIHJvdGF0ZSApOworICAgICAgRlRfVmVjdG9yX0Zyb21fUG9sYXIoICZkZWx0YSwgIHJhZGl1cywgYW5nbGUgKTsKKworICAgICAgZGVsdGEueCArPSBzdHJva2VyLT5jZW50ZXIueCArIGRlbHRhMi54OworICAgICAgZGVsdGEueSArPSBzdHJva2VyLT5jZW50ZXIueSArIGRlbHRhMi55OworCisgICAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfbGluZXRvKCBib3JkZXIsICZkZWx0YSwgRkFMU0UgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmZGVsdGEyLCByYWRpdXMsIGFuZ2xlIC0gcm90YXRlICk7CisgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmRlbHRhLCAgcmFkaXVzLCBhbmdsZSApOworCisgICAgICBkZWx0YS54ICs9IGRlbHRhMi54ICsgc3Ryb2tlci0+Y2VudGVyLng7CisgICAgICBkZWx0YS55ICs9IGRlbHRhMi55ICsgc3Ryb2tlci0+Y2VudGVyLnk7CisKKyAgICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9saW5ldG8oIGJvcmRlciwgJmRlbHRhLCBGQUxTRSApOworICAgIH0KKyAgICBlbHNlIGlmICggc3Ryb2tlci0+bGluZV9jYXAgPT0gRlRfU1RST0tFUl9MSU5FQ0FQX0JVVFQgKQorICAgIHsKKyAgICAgIC8qIGFkZCBhIGJ1dHQgZW5kaW5nICovCisgICAgICBGVF9WZWN0b3IgICAgICAgIGRlbHRhOworICAgICAgRlRfQW5nbGUgICAgICAgICByb3RhdGUgPSBGVF9TSURFX1RPX1JPVEFURSggc2lkZSApOworICAgICAgRlRfRml4ZWQgICAgICAgICByYWRpdXMgPSBzdHJva2VyLT5yYWRpdXM7CisgICAgICBGVF9TdHJva2VCb3JkZXIgIGJvcmRlciA9IHN0cm9rZXItPmJvcmRlcnMgKyBzaWRlOworCisKKyAgICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmZGVsdGEsIHJhZGl1cywgYW5nbGUgKyByb3RhdGUgKTsKKworICAgICAgZGVsdGEueCArPSBzdHJva2VyLT5jZW50ZXIueDsKKyAgICAgIGRlbHRhLnkgKz0gc3Ryb2tlci0+Y2VudGVyLnk7CisKKyAgICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9saW5ldG8oIGJvcmRlciwgJmRlbHRhLCBGQUxTRSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgRlRfVmVjdG9yX0Zyb21fUG9sYXIoICZkZWx0YSwgcmFkaXVzLCBhbmdsZSAtIHJvdGF0ZSApOworCisgICAgICBkZWx0YS54ICs9IHN0cm9rZXItPmNlbnRlci54OworICAgICAgZGVsdGEueSArPSBzdHJva2VyLT5jZW50ZXIueTsKKworICAgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2xpbmV0byggYm9yZGVyLCAmZGVsdGEsIEZBTFNFICk7CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBwcm9jZXNzIGFuIGluc2lkZSBjb3JuZXIsIGkuZS4gY29tcHV0ZSBpbnRlcnNlY3Rpb24gKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N0cm9rZXJfaW5zaWRlKCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgc2lkZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgIGxpbmVfbGVuZ3RoICkKKyAgeworICAgIEZUX1N0cm9rZUJvcmRlciAgYm9yZGVyID0gc3Ryb2tlci0+Ym9yZGVycyArIHNpZGU7CisgICAgRlRfQW5nbGUgICAgICAgICBwaGksIHRoZXRhLCByb3RhdGU7CisgICAgRlRfRml4ZWQgICAgICAgICBsZW5ndGgsIHRoY29zOworICAgIEZUX1ZlY3RvciAgICAgICAgZGVsdGE7CisgICAgRlRfRXJyb3IgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9Cb29sICAgICAgICAgIGludGVyc2VjdDsgICAgICAgICAgLyogdXNlIGludGVyc2VjdGlvbiBvZiBsaW5lcz8gKi8KKworCisgICAgcm90YXRlID0gRlRfU0lERV9UT19ST1RBVEUoIHNpZGUgKTsKKworICAgIHRoZXRhID0gRlRfQW5nbGVfRGlmZiggc3Ryb2tlci0+YW5nbGVfaW4sIHN0cm9rZXItPmFuZ2xlX291dCApIC8gMjsKKworICAgIC8qIE9ubHkgaW50ZXJzZWN0IGJvcmRlcnMgaWYgYmV0d2VlbiB0d28gbGluZXRvJ3MgYW5kIGJvdGggKi8KKyAgICAvKiBsaW5lcyBhcmUgbG9uZyBlbm91Z2ggKGxpbmVfbGVuZ3RoIGlzIHplcm8gZm9yIGN1cnZlcykuICovCisgICAgaWYgKCAhYm9yZGVyLT5tb3ZhYmxlIHx8IGxpbmVfbGVuZ3RoID09IDAgKQorICAgICAgaW50ZXJzZWN0ID0gRkFMU0U7CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIGNvbXB1dGUgbWluaW11bSByZXF1aXJlZCBsZW5ndGggb2YgbGluZXMgKi8KKyAgICAgIEZUX0ZpeGVkICBtaW5fbGVuZ3RoID0gZnRfcG9zX2FicyggRlRfTXVsRml4KCBzdHJva2VyLT5yYWRpdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVGFuKCB0aGV0YSApICkgKTsKKworCisgICAgICBpbnRlcnNlY3QgPSBGVF9CT09MKCBzdHJva2VyLT5saW5lX2xlbmd0aCA+PSBtaW5fbGVuZ3RoICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2xlbmd0aCAgICAgICAgICA+PSBtaW5fbGVuZ3RoICk7CisgICAgfQorCisgICAgaWYgKCAhaW50ZXJzZWN0ICkKKyAgICB7CisgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmRlbHRhLCBzdHJva2VyLT5yYWRpdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlci0+YW5nbGVfb3V0ICsgcm90YXRlICk7CisgICAgICBkZWx0YS54ICs9IHN0cm9rZXItPmNlbnRlci54OworICAgICAgZGVsdGEueSArPSBzdHJva2VyLT5jZW50ZXIueTsKKworICAgICAgYm9yZGVyLT5tb3ZhYmxlID0gRkFMU0U7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBjb21wdXRlIG1lZGlhbiBhbmdsZSAqLworICAgICAgcGhpID0gc3Ryb2tlci0+YW5nbGVfaW4gKyB0aGV0YTsKKworICAgICAgdGhjb3MgPSBGVF9Db3MoIHRoZXRhICk7CisKKyAgICAgIGxlbmd0aCA9IEZUX0RpdkZpeCggc3Ryb2tlci0+cmFkaXVzLCB0aGNvcyApOworCisgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmRlbHRhLCBsZW5ndGgsIHBoaSArIHJvdGF0ZSApOworICAgICAgZGVsdGEueCArPSBzdHJva2VyLT5jZW50ZXIueDsKKyAgICAgIGRlbHRhLnkgKz0gc3Ryb2tlci0+Y2VudGVyLnk7CisgICAgfQorCisgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2xpbmV0byggYm9yZGVyLCAmZGVsdGEsIEZBTFNFICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIHByb2Nlc3MgYW4gb3V0c2lkZSBjb3JuZXIsIGkuZS4gY29tcHV0ZSBiZXZlbC9taXRlci9yb3VuZCAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgZnRfc3Ryb2tlcl9vdXRzaWRlKCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgIHNpZGUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgbGluZV9sZW5ndGggKQorICB7CisgICAgRlRfU3Ryb2tlQm9yZGVyICBib3JkZXIgPSBzdHJva2VyLT5ib3JkZXJzICsgc2lkZTsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yOworICAgIEZUX0FuZ2xlICAgICAgICAgcm90YXRlOworCisKKyAgICBpZiAoIHN0cm9rZXItPmxpbmVfam9pbiA9PSBGVF9TVFJPS0VSX0xJTkVKT0lOX1JPVU5EICkKKyAgICAgIGVycm9yID0gZnRfc3Ryb2tlcl9hcmN0byggc3Ryb2tlciwgc2lkZSApOworICAgIGVsc2UKKyAgICB7CisgICAgICAvKiB0aGlzIGlzIGEgbWl0ZXJlZCAocG9pbnRlZCkgb3IgYmV2ZWxlZCAodHJ1bmNhdGVkKSBjb3JuZXIgKi8KKyAgICAgIEZUX0ZpeGVkICBzaWdtYSA9IDAsIHJhZGl1cyA9IHN0cm9rZXItPnJhZGl1czsKKyAgICAgIEZUX0FuZ2xlICB0aGV0YSA9IDAsIHBoaSA9IDA7CisgICAgICBGVF9GaXhlZCAgdGhjb3MgPSAwOworICAgICAgRlRfQm9vbCAgIGJldmVsLCBmaXhlZF9iZXZlbDsKKworCisgICAgICByb3RhdGUgPSBGVF9TSURFX1RPX1JPVEFURSggc2lkZSApOworCisgICAgICBiZXZlbCA9CisgICAgICAgIEZUX0JPT0woIHN0cm9rZXItPmxpbmVfam9pbiA9PSBGVF9TVFJPS0VSX0xJTkVKT0lOX0JFVkVMICk7CisKKyAgICAgIGZpeGVkX2JldmVsID0KKyAgICAgICAgRlRfQk9PTCggc3Ryb2tlci0+bGluZV9qb2luICE9IEZUX1NUUk9LRVJfTElORUpPSU5fTUlURVJfVkFSSUFCTEUgKTsKKworICAgICAgaWYgKCAhYmV2ZWwgKQorICAgICAgeworICAgICAgICB0aGV0YSA9IEZUX0FuZ2xlX0RpZmYoIHN0cm9rZXItPmFuZ2xlX2luLCBzdHJva2VyLT5hbmdsZV9vdXQgKTsKKworICAgICAgICBpZiAoIHRoZXRhID09IEZUX0FOR0xFX1BJICkKKyAgICAgICAgeworICAgICAgICAgIHRoZXRhID0gcm90YXRlOworICAgICAgICAgIHBoaSAgID0gc3Ryb2tlci0+YW5nbGVfaW47CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgdGhldGEgLz0gMjsKKyAgICAgICAgICBwaGkgICAgPSBzdHJva2VyLT5hbmdsZV9pbiArIHRoZXRhICsgcm90YXRlOworICAgICAgICB9CisKKyAgICAgICAgdGhjb3MgPSBGVF9Db3MoIHRoZXRhICk7CisgICAgICAgIHNpZ21hID0gRlRfTXVsRml4KCBzdHJva2VyLT5taXRlcl9saW1pdCwgdGhjb3MgKTsKKworICAgICAgICAvKiBpcyBtaXRlciBsaW1pdCBleGNlZWRlZD8gKi8KKyAgICAgICAgaWYgKCBzaWdtYSA8IDB4MTAwMDBMICkKKyAgICAgICAgeworICAgICAgICAgIC8qIGRvbid0IGNyZWF0ZSB2YXJpYWJsZSBiZXZlbHMgZm9yIHZlcnkgc21hbGwgZGV2aWF0aW9uczsgKi8KKyAgICAgICAgICAvKiBGVF9TaW4oeCkgPSAwIGZvciB4IDw9IDU3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgaWYgKCBmaXhlZF9iZXZlbCB8fCBmdF9wb3NfYWJzKCB0aGV0YSApID4gNTcgKQorICAgICAgICAgICAgYmV2ZWwgPSBUUlVFOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmICggYmV2ZWwgKSAgLyogdGhpcyBpcyBhIGJldmVsIChicm9rZW4gYW5nbGUpICovCisgICAgICB7CisgICAgICAgIGlmICggZml4ZWRfYmV2ZWwgKQorICAgICAgICB7CisgICAgICAgICAgLyogdGhlIG91dGVyIGNvcm5lcnMgYXJlIHNpbXBseSBqb2luZWQgdG9nZXRoZXIgKi8KKyAgICAgICAgICBGVF9WZWN0b3IgIGRlbHRhOworCisKKyAgICAgICAgICAvKiBhZGQgYmV2ZWwgKi8KKyAgICAgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmRlbHRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZXItPmFuZ2xlX291dCArIHJvdGF0ZSApOworICAgICAgICAgIGRlbHRhLnggKz0gc3Ryb2tlci0+Y2VudGVyLng7CisgICAgICAgICAgZGVsdGEueSArPSBzdHJva2VyLT5jZW50ZXIueTsKKworICAgICAgICAgIGJvcmRlci0+bW92YWJsZSA9IEZBTFNFOworICAgICAgICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9saW5ldG8oIGJvcmRlciwgJmRlbHRhLCBGQUxTRSApOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogdmFyaWFibGUgYmV2ZWwgKi8KKyAgICAgICAgeworICAgICAgICAgIC8qIHRoZSBtaXRlciBpcyB0cnVuY2F0ZWQgKi8KKyAgICAgICAgICBGVF9WZWN0b3IgIG1pZGRsZSwgZGVsdGE7CisgICAgICAgICAgRlRfRml4ZWQgICBsZW5ndGg7CisKKworICAgICAgICAgIC8qIGNvbXB1dGUgbWlkZGxlIHBvaW50ICovCisgICAgICAgICAgRlRfVmVjdG9yX0Zyb21fUG9sYXIoICZtaWRkbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX011bEZpeCggcmFkaXVzLCBzdHJva2VyLT5taXRlcl9saW1pdCApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaGkgKTsKKyAgICAgICAgICBtaWRkbGUueCArPSBzdHJva2VyLT5jZW50ZXIueDsKKyAgICAgICAgICBtaWRkbGUueSArPSBzdHJva2VyLT5jZW50ZXIueTsKKworICAgICAgICAgIC8qIGNvbXB1dGUgZmlyc3QgYW5nbGUgcG9pbnQgKi8KKyAgICAgICAgICBsZW5ndGggPSBGVF9NdWxEaXYoIHJhZGl1cywgMHgxMDAwMEwgLSBzaWdtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ0X3Bvc19hYnMoIEZUX1NpbiggdGhldGEgKSApICk7CisKKyAgICAgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmRlbHRhLCBsZW5ndGgsIHBoaSArIHJvdGF0ZSApOworICAgICAgICAgIGRlbHRhLnggKz0gbWlkZGxlLng7CisgICAgICAgICAgZGVsdGEueSArPSBtaWRkbGUueTsKKworICAgICAgICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9saW5ldG8oIGJvcmRlciwgJmRlbHRhLCBGQUxTRSApOworICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgICAgLyogY29tcHV0ZSBzZWNvbmQgYW5nbGUgcG9pbnQgKi8KKyAgICAgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmRlbHRhLCBsZW5ndGgsIHBoaSAtIHJvdGF0ZSApOworICAgICAgICAgIGRlbHRhLnggKz0gbWlkZGxlLng7CisgICAgICAgICAgZGVsdGEueSArPSBtaWRkbGUueTsKKworICAgICAgICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9saW5ldG8oIGJvcmRlciwgJmRlbHRhLCBGQUxTRSApOworICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgICAgLyogZmluYWxseSwgYWRkIGFuIGVuZCBwb2ludDsgb25seSBuZWVkZWQgaWYgbm90IGxpbmV0byAqLworICAgICAgICAgIC8qIChsaW5lX2xlbmd0aCBpcyB6ZXJvIGZvciBjdXJ2ZXMpICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICBpZiAoIGxpbmVfbGVuZ3RoID09IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmZGVsdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZXItPmFuZ2xlX291dCArIHJvdGF0ZSApOworCisgICAgICAgICAgICBkZWx0YS54ICs9IHN0cm9rZXItPmNlbnRlci54OworICAgICAgICAgICAgZGVsdGEueSArPSBzdHJva2VyLT5jZW50ZXIueTsKKworICAgICAgICAgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2xpbmV0byggYm9yZGVyLCAmZGVsdGEsIEZBTFNFICk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIC8qIHRoaXMgaXMgYSBtaXRlciAoaW50ZXJzZWN0aW9uKSAqLworICAgICAgeworICAgICAgICBGVF9GaXhlZCAgIGxlbmd0aDsKKyAgICAgICAgRlRfVmVjdG9yICBkZWx0YTsKKworCisgICAgICAgIGxlbmd0aCA9IEZUX0RpdkZpeCggc3Ryb2tlci0+cmFkaXVzLCB0aGNvcyApOworCisgICAgICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmZGVsdGEsIGxlbmd0aCwgcGhpICk7CisgICAgICAgIGRlbHRhLnggKz0gc3Ryb2tlci0+Y2VudGVyLng7CisgICAgICAgIGRlbHRhLnkgKz0gc3Ryb2tlci0+Y2VudGVyLnk7CisKKyAgICAgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2xpbmV0byggYm9yZGVyLCAmZGVsdGEsIEZBTFNFICk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAvKiBub3cgYWRkIGFuIGVuZCBwb2ludDsgb25seSBuZWVkZWQgaWYgbm90IGxpbmV0byAqLworICAgICAgICAvKiAobGluZV9sZW5ndGggaXMgemVybyBmb3IgY3VydmVzKSAgICAgICAgICAgICAgICAqLworICAgICAgICBpZiAoIGxpbmVfbGVuZ3RoID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgRlRfVmVjdG9yX0Zyb21fUG9sYXIoICZkZWx0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlci0+cmFkaXVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VyLT5hbmdsZV9vdXQgKyByb3RhdGUgKTsKKyAgICAgICAgICBkZWx0YS54ICs9IHN0cm9rZXItPmNlbnRlci54OworICAgICAgICAgIGRlbHRhLnkgKz0gc3Ryb2tlci0+Y2VudGVyLnk7CisKKyAgICAgICAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfbGluZXRvKCBib3JkZXIsICZkZWx0YSwgRkFMU0UgKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N0cm9rZXJfcHJvY2Vzc19jb3JuZXIoIEZUX1N0cm9rZXIgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAgIGxpbmVfbGVuZ3RoICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9BbmdsZSAgdHVybjsKKyAgICBGVF9JbnQgICAgaW5zaWRlX3NpZGU7CisKKworICAgIHR1cm4gPSBGVF9BbmdsZV9EaWZmKCBzdHJva2VyLT5hbmdsZV9pbiwgc3Ryb2tlci0+YW5nbGVfb3V0ICk7CisKKyAgICAvKiBubyBzcGVjaWZpYyBjb3JuZXIgcHJvY2Vzc2luZyBpcyByZXF1aXJlZCBpZiB0aGUgdHVybiBpcyAwICovCisgICAgaWYgKCB0dXJuID09IDAgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogd2hlbiB3ZSB0dXJuIHRvIHRoZSByaWdodCwgdGhlIGluc2lkZSBzaWRlIGlzIDAgKi8KKyAgICBpbnNpZGVfc2lkZSA9IDA7CisKKyAgICAvKiBvdGhlcndpc2UsIHRoZSBpbnNpZGUgc2lkZSBpcyAxICovCisgICAgaWYgKCB0dXJuIDwgMCApCisgICAgICBpbnNpZGVfc2lkZSA9IDE7CisKKyAgICAvKiBwcm9jZXNzIHRoZSBpbnNpZGUgc2lkZSAqLworICAgIGVycm9yID0gZnRfc3Ryb2tlcl9pbnNpZGUoIHN0cm9rZXIsIGluc2lkZV9zaWRlLCBsaW5lX2xlbmd0aCApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogcHJvY2VzcyB0aGUgb3V0c2lkZSBzaWRlICovCisgICAgZXJyb3IgPSBmdF9zdHJva2VyX291dHNpZGUoIHN0cm9rZXIsIDEgLSBpbnNpZGVfc2lkZSwgbGluZV9sZW5ndGggKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogYWRkIHR3byBwb2ludHMgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0IGJvcmRlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgKi8KKyAgLyogc3RhcnQgb2YgdGhlIHN1YnBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3N0cm9rZXJfc3VicGF0aF9zdGFydCggRlRfU3Ryb2tlciAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICBzdGFydF9hbmdsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICBsaW5lX2xlbmd0aCApCisgIHsKKyAgICBGVF9WZWN0b3IgICAgICAgIGRlbHRhOworICAgIEZUX1ZlY3RvciAgICAgICAgcG9pbnQ7CisgICAgRlRfRXJyb3IgICAgICAgICBlcnJvcjsKKyAgICBGVF9TdHJva2VCb3JkZXIgIGJvcmRlcjsKKworCisgICAgRlRfVmVjdG9yX0Zyb21fUG9sYXIoICZkZWx0YSwgc3Ryb2tlci0+cmFkaXVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9hbmdsZSArIEZUX0FOR0xFX1BJMiApOworCisgICAgcG9pbnQueCA9IHN0cm9rZXItPmNlbnRlci54ICsgZGVsdGEueDsKKyAgICBwb2ludC55ID0gc3Ryb2tlci0+Y2VudGVyLnkgKyBkZWx0YS55OworCisgICAgYm9yZGVyID0gc3Ryb2tlci0+Ym9yZGVyczsKKyAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfbW92ZXRvKCBib3JkZXIsICZwb2ludCApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgcG9pbnQueCA9IHN0cm9rZXItPmNlbnRlci54IC0gZGVsdGEueDsKKyAgICBwb2ludC55ID0gc3Ryb2tlci0+Y2VudGVyLnkgLSBkZWx0YS55OworCisgICAgYm9yZGVyKys7CisgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX21vdmV0byggYm9yZGVyLCAmcG9pbnQgKTsKKworICAgIC8qIHNhdmUgYW5nbGUsIHBvc2l0aW9uLCBhbmQgbGluZSBsZW5ndGggZm9yIGxhc3Qgam9pbiAqLworICAgIC8qIChsaW5lX2xlbmd0aCBpcyB6ZXJvIGZvciBjdXJ2ZXMpICAgICAgICAgICAgICAgICAgICAqLworICAgIHN0cm9rZXItPnN1YnBhdGhfYW5nbGUgICAgICAgPSBzdGFydF9hbmdsZTsKKyAgICBzdHJva2VyLT5maXJzdF9wb2ludCAgICAgICAgID0gRkFMU0U7CisgICAgc3Ryb2tlci0+c3VicGF0aF9saW5lX2xlbmd0aCA9IGxpbmVfbGVuZ3RoOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3Ryb2tlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1N0cm9rZXJfTGluZVRvKCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgdG8gKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9TdHJva2VCb3JkZXIgIGJvcmRlcjsKKyAgICBGVF9WZWN0b3IgICAgICAgIGRlbHRhOworICAgIEZUX0FuZ2xlICAgICAgICAgYW5nbGU7CisgICAgRlRfSW50ICAgICAgICAgICBzaWRlOworICAgIEZUX0ZpeGVkICAgICAgICAgbGluZV9sZW5ndGg7CisKKworICAgIGRlbHRhLnggPSB0by0+eCAtIHN0cm9rZXItPmNlbnRlci54OworICAgIGRlbHRhLnkgPSB0by0+eSAtIHN0cm9rZXItPmNlbnRlci55OworCisgICAgLyogYSB6ZXJvLWxlbmd0aCBsaW5ldG8gaXMgYSBuby1vcDsgYXZvaWQgY3JlYXRpbmcgYSBzcHVyaW91cyBjb3JuZXIgKi8KKyAgICBpZiAoIGRlbHRhLnggPT0gMCAmJiBkZWx0YS55ID09IDAgKQorICAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIGNvbXB1dGUgbGVuZ3RoIG9mIGxpbmUgKi8KKyAgICBsaW5lX2xlbmd0aCA9IEZUX1ZlY3Rvcl9MZW5ndGgoICZkZWx0YSApOworCisgICAgYW5nbGUgPSBGVF9BdGFuMiggZGVsdGEueCwgZGVsdGEueSApOworICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmZGVsdGEsIHN0cm9rZXItPnJhZGl1cywgYW5nbGUgKyBGVF9BTkdMRV9QSTIgKTsKKworICAgIC8qIHByb2Nlc3MgY29ybmVyIGlmIG5lY2Vzc2FyeSAqLworICAgIGlmICggc3Ryb2tlci0+Zmlyc3RfcG9pbnQgKQorICAgIHsKKyAgICAgIC8qIFRoaXMgaXMgdGhlIGZpcnN0IHNlZ21lbnQgb2YgYSBzdWJwYXRoLiAgV2UgbmVlZCB0byAgICAgKi8KKyAgICAgIC8qIGFkZCBhIHBvaW50IHRvIGVhY2ggYm9yZGVyIGF0IHRoZWlyIHJlc3BlY3RpdmUgc3RhcnRpbmcgKi8KKyAgICAgIC8qIHBvaW50IGxvY2F0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGVycm9yID0gZnRfc3Ryb2tlcl9zdWJwYXRoX3N0YXJ0KCBzdHJva2VyLCBhbmdsZSwgbGluZV9sZW5ndGggKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBwcm9jZXNzIHRoZSBjdXJyZW50IGNvcm5lciAqLworICAgICAgc3Ryb2tlci0+YW5nbGVfb3V0ID0gYW5nbGU7CisgICAgICBlcnJvciA9IGZ0X3N0cm9rZXJfcHJvY2Vzc19jb3JuZXIoIHN0cm9rZXIsIGxpbmVfbGVuZ3RoICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIG5vdyBhZGQgYSBsaW5lIHNlZ21lbnQgdG8gYm90aCB0aGUgYGluc2lkZScgYW5kIGBvdXRzaWRlJyBwYXRocyAqLworICAgIGZvciAoIGJvcmRlciA9IHN0cm9rZXItPmJvcmRlcnMsIHNpZGUgPSAxOyBzaWRlID49IDA7IHNpZGUtLSwgYm9yZGVyKysgKQorICAgIHsKKyAgICAgIEZUX1ZlY3RvciAgcG9pbnQ7CisKKworICAgICAgcG9pbnQueCA9IHRvLT54ICsgZGVsdGEueDsKKyAgICAgIHBvaW50LnkgPSB0by0+eSArIGRlbHRhLnk7CisKKyAgICAgIC8qIHRoZSBlbmRzIG9mIGxpbmV0byBib3JkZXJzIGFyZSBtb3ZhYmxlICovCisgICAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfbGluZXRvKCBib3JkZXIsICZwb2ludCwgVFJVRSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgZGVsdGEueCA9IC1kZWx0YS54OworICAgICAgZGVsdGEueSA9IC1kZWx0YS55OworICAgIH0KKworICAgIHN0cm9rZXItPmFuZ2xlX2luICAgID0gYW5nbGU7CisgICAgc3Ryb2tlci0+Y2VudGVyICAgICAgPSAqdG87CisgICAgc3Ryb2tlci0+bGluZV9sZW5ndGggPSBsaW5lX2xlbmd0aDsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHN0cm9rZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9TdHJva2VyX0NvbmljVG8oIEZUX1N0cm9rZXIgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgY29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICB0byApCisgIHsKKyAgICBGVF9FcnJvciAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9WZWN0b3IgICBiZXpfc3RhY2tbMzRdOworICAgIEZUX1ZlY3RvciogIGFyYzsKKyAgICBGVF9WZWN0b3IqICBsaW1pdCA9IGJlel9zdGFjayArIDMwOworICAgIEZUX0Jvb2wgICAgIGZpcnN0X2FyYyA9IFRSVUU7CisKKworICAgIC8qIGlmIGFsbCBjb250cm9sIHBvaW50cyBhcmUgY29pbmNpZGVudCwgdGhpcyBpcyBhIG5vLW9wOyAqLworICAgIC8qIGF2b2lkIGNyZWF0aW5nIGEgc3B1cmlvdXMgY29ybmVyICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggRlRfSVNfU01BTEwoIHN0cm9rZXItPmNlbnRlci54IC0gY29udHJvbC0+eCApICYmCisgICAgICAgICBGVF9JU19TTUFMTCggc3Ryb2tlci0+Y2VudGVyLnkgLSBjb250cm9sLT55ICkgJiYKKyAgICAgICAgIEZUX0lTX1NNQUxMKCBjb250cm9sLT54ICAgICAgICAtIHRvLT54ICAgICAgKSAmJgorICAgICAgICAgRlRfSVNfU01BTEwoIGNvbnRyb2wtPnkgICAgICAgIC0gdG8tPnkgICAgICApICkKKyAgICB7CisgICAgICAgc3Ryb2tlci0+Y2VudGVyID0gKnRvOworICAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBhcmMgICAgPSBiZXpfc3RhY2s7CisgICAgYXJjWzBdID0gKnRvOworICAgIGFyY1sxXSA9ICpjb250cm9sOworICAgIGFyY1syXSA9IHN0cm9rZXItPmNlbnRlcjsKKworICAgIHdoaWxlICggYXJjID49IGJlel9zdGFjayApCisgICAgeworICAgICAgRlRfQW5nbGUgIGFuZ2xlX2luLCBhbmdsZV9vdXQ7CisKKworICAgICAgLyogaW5pdGlhbGl6ZSB3aXRoIGN1cnJlbnQgZGlyZWN0aW9uICovCisgICAgICBhbmdsZV9pbiA9IGFuZ2xlX291dCA9IHN0cm9rZXItPmFuZ2xlX2luOworCisgICAgICBpZiAoIGFyYyA8IGxpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgIWZ0X2NvbmljX2lzX3NtYWxsX2Vub3VnaCggYXJjLCAmYW5nbGVfaW4sICZhbmdsZV9vdXQgKSApCisgICAgICB7CisgICAgICAgIGlmICggc3Ryb2tlci0+Zmlyc3RfcG9pbnQgKQorICAgICAgICAgIHN0cm9rZXItPmFuZ2xlX2luID0gYW5nbGVfaW47CisKKyAgICAgICAgZnRfY29uaWNfc3BsaXQoIGFyYyApOworICAgICAgICBhcmMgKz0gMjsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAgIGlmICggZmlyc3RfYXJjICkKKyAgICAgIHsKKyAgICAgICAgZmlyc3RfYXJjID0gRkFMU0U7CisKKyAgICAgICAgLyogcHJvY2VzcyBjb3JuZXIgaWYgbmVjZXNzYXJ5ICovCisgICAgICAgIGlmICggc3Ryb2tlci0+Zmlyc3RfcG9pbnQgKQorICAgICAgICAgIGVycm9yID0gZnRfc3Ryb2tlcl9zdWJwYXRoX3N0YXJ0KCBzdHJva2VyLCBhbmdsZV9pbiwgMCApOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBzdHJva2VyLT5hbmdsZV9vdXQgPSBhbmdsZV9pbjsKKyAgICAgICAgICBlcnJvciA9IGZ0X3N0cm9rZXJfcHJvY2Vzc19jb3JuZXIoIHN0cm9rZXIsIDAgKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoIGZ0X3Bvc19hYnMoIEZUX0FuZ2xlX0RpZmYoIHN0cm9rZXItPmFuZ2xlX2luLCBhbmdsZV9pbiApICkgPgorICAgICAgICAgICAgICAgICAgRlRfU01BTExfQ09OSUNfVEhSRVNIT0xEIC8gNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgeworICAgICAgICAvKiBpZiB0aGUgZGV2aWF0aW9uIGZyb20gb25lIGFyYyB0byB0aGUgbmV4dCBpcyB0b28gZ3JlYXQsICovCisgICAgICAgIC8qIGFkZCBhIHJvdW5kIGNvcm5lciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgc3Ryb2tlci0+Y2VudGVyICAgID0gYXJjWzJdOworICAgICAgICBzdHJva2VyLT5hbmdsZV9vdXQgPSBhbmdsZV9pbjsKKyAgICAgICAgc3Ryb2tlci0+bGluZV9qb2luID0gRlRfU1RST0tFUl9MSU5FSk9JTl9ST1VORDsKKworICAgICAgICBlcnJvciA9IGZ0X3N0cm9rZXJfcHJvY2Vzc19jb3JuZXIoIHN0cm9rZXIsIDAgKTsKKworICAgICAgICAvKiByZWluc3RhdGUgbGluZSBqb2luIHN0eWxlICovCisgICAgICAgIHN0cm9rZXItPmxpbmVfam9pbiA9IHN0cm9rZXItPmxpbmVfam9pbl9zYXZlZDsKKyAgICAgIH0KKworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogdGhlIGFyYydzIGFuZ2xlIGlzIHNtYWxsIGVub3VnaDsgd2UgY2FuIGFkZCBpdCBkaXJlY3RseSB0byBlYWNoICovCisgICAgICAvKiBib3JkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIHsKKyAgICAgICAgRlRfVmVjdG9yICAgICAgICBjdHJsLCBlbmQ7CisgICAgICAgIEZUX0FuZ2xlICAgICAgICAgdGhldGEsIHBoaSwgcm90YXRlLCBhbHBoYTAgPSAwOworICAgICAgICBGVF9GaXhlZCAgICAgICAgIGxlbmd0aDsKKyAgICAgICAgRlRfU3Ryb2tlQm9yZGVyICBib3JkZXI7CisgICAgICAgIEZUX0ludCAgICAgICAgICAgc2lkZTsKKworCisgICAgICAgIHRoZXRhICA9IEZUX0FuZ2xlX0RpZmYoIGFuZ2xlX2luLCBhbmdsZV9vdXQgKSAvIDI7CisgICAgICAgIHBoaSAgICA9IGFuZ2xlX2luICsgdGhldGE7CisgICAgICAgIGxlbmd0aCA9IEZUX0RpdkZpeCggc3Ryb2tlci0+cmFkaXVzLCBGVF9Db3MoIHRoZXRhICkgKTsKKworICAgICAgICAvKiBjb21wdXRlIGRpcmVjdGlvbiBvZiBvcmlnaW5hbCBhcmMgKi8KKyAgICAgICAgaWYgKCBzdHJva2VyLT5oYW5kbGVfd2lkZV9zdHJva2VzICkKKyAgICAgICAgICBhbHBoYTAgPSBGVF9BdGFuMiggYXJjWzBdLnggLSBhcmNbMl0ueCwgYXJjWzBdLnkgLSBhcmNbMl0ueSApOworCisgICAgICAgIGZvciAoIGJvcmRlciA9IHN0cm9rZXItPmJvcmRlcnMsIHNpZGUgPSAwOworICAgICAgICAgICAgICBzaWRlIDw9IDE7CisgICAgICAgICAgICAgIHNpZGUrKywgYm9yZGVyKysgKQorICAgICAgICB7CisgICAgICAgICAgcm90YXRlID0gRlRfU0lERV9UT19ST1RBVEUoIHNpZGUgKTsKKworICAgICAgICAgIC8qIGNvbXB1dGUgY29udHJvbCBwb2ludCAqLworICAgICAgICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmY3RybCwgbGVuZ3RoLCBwaGkgKyByb3RhdGUgKTsKKyAgICAgICAgICBjdHJsLnggKz0gYXJjWzFdLng7CisgICAgICAgICAgY3RybC55ICs9IGFyY1sxXS55OworCisgICAgICAgICAgLyogY29tcHV0ZSBlbmQgcG9pbnQgKi8KKyAgICAgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmVuZCwgc3Ryb2tlci0+cmFkaXVzLCBhbmdsZV9vdXQgKyByb3RhdGUgKTsKKyAgICAgICAgICBlbmQueCArPSBhcmNbMF0ueDsKKyAgICAgICAgICBlbmQueSArPSBhcmNbMF0ueTsKKworICAgICAgICAgIGlmICggc3Ryb2tlci0+aGFuZGxlX3dpZGVfc3Ryb2tlcyApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfVmVjdG9yICBzdGFydDsKKyAgICAgICAgICAgIEZUX0FuZ2xlICAgYWxwaGExOworCisKKyAgICAgICAgICAgIC8qIGRldGVybWluZSB3aGV0aGVyIHRoZSBib3JkZXIgcmFkaXVzIGlzIGdyZWF0ZXIgdGhhbiB0aGUgKi8KKyAgICAgICAgICAgIC8qIHJhZGl1cyBvZiBjdXJ2YXR1cmUgb2YgdGhlIG9yaWdpbmFsIGFyYyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHN0YXJ0ID0gYm9yZGVyLT5wb2ludHNbYm9yZGVyLT5udW1fcG9pbnRzIC0gMV07CisKKyAgICAgICAgICAgIGFscGhhMSA9IEZUX0F0YW4yKCBlbmQueCAtIHN0YXJ0LngsIGVuZC55IC0gc3RhcnQueSApOworCisgICAgICAgICAgICAvKiBpcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBib3JkZXIgYXJjIG9wcG9zaXRlIHRvICovCisgICAgICAgICAgICAvKiB0aGF0IG9mIHRoZSBvcmlnaW5hbCBhcmM/ICovCisgICAgICAgICAgICBpZiAoIGZ0X3Bvc19hYnMoIEZUX0FuZ2xlX0RpZmYoIGFscGhhMCwgYWxwaGExICkgKSA+CisgICAgICAgICAgICAgICAgICAgRlRfQU5HTEVfUEkgLyAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX0FuZ2xlICAgYmV0YSwgZ2FtbWE7CisgICAgICAgICAgICAgIEZUX1ZlY3RvciAgYnZlYywgZGVsdGE7CisgICAgICAgICAgICAgIEZUX0ZpeGVkICAgYmxlbiwgc2luQSwgc2luQiwgYWxlbjsKKworCisgICAgICAgICAgICAgIC8qIHVzZSB0aGUgc2luZSBydWxlIHRvIGZpbmQgdGhlIGludGVyc2VjdGlvbiBwb2ludCAqLworICAgICAgICAgICAgICBiZXRhICA9IEZUX0F0YW4yKCBhcmNbMl0ueCAtIHN0YXJ0LngsIGFyY1syXS55IC0gc3RhcnQueSApOworICAgICAgICAgICAgICBnYW1tYSA9IEZUX0F0YW4yKCBhcmNbMF0ueCAtIGVuZC54LCAgIGFyY1swXS55IC0gZW5kLnkgKTsKKworICAgICAgICAgICAgICBidmVjLnggPSBlbmQueCAtIHN0YXJ0Lng7CisgICAgICAgICAgICAgIGJ2ZWMueSA9IGVuZC55IC0gc3RhcnQueTsKKworICAgICAgICAgICAgICBibGVuID0gRlRfVmVjdG9yX0xlbmd0aCggJmJ2ZWMgKTsKKworICAgICAgICAgICAgICBzaW5BID0gZnRfcG9zX2FicyggRlRfU2luKCBhbHBoYTEgLSBnYW1tYSApICk7CisgICAgICAgICAgICAgIHNpbkIgPSBmdF9wb3NfYWJzKCBGVF9TaW4oIGJldGEgLSBnYW1tYSApICk7CisKKyAgICAgICAgICAgICAgYWxlbiA9IEZUX011bERpdiggYmxlbiwgc2luQSwgc2luQiApOworCisgICAgICAgICAgICAgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCAmZGVsdGEsIGFsZW4sIGJldGEgKTsKKyAgICAgICAgICAgICAgZGVsdGEueCArPSBzdGFydC54OworICAgICAgICAgICAgICBkZWx0YS55ICs9IHN0YXJ0Lnk7CisKKyAgICAgICAgICAgICAgLyogY2lyY3VtbmF2aWdhdGUgdGhlIG5lZ2F0aXZlIHNlY3RvciBiYWNrd2FyZHMgKi8KKyAgICAgICAgICAgICAgYm9yZGVyLT5tb3ZhYmxlID0gRkFMU0U7CisgICAgICAgICAgICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9saW5ldG8oIGJvcmRlciwgJmRlbHRhLCBGQUxTRSApOworICAgICAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9saW5ldG8oIGJvcmRlciwgJmVuZCwgRkFMU0UgKTsKKyAgICAgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfY29uaWN0byggYm9yZGVyLCAmY3RybCwgJnN0YXJ0ICk7CisgICAgICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgICAgLyogYW5kIHRoZW4gbW92ZSB0byB0aGUgZW5kcG9pbnQgKi8KKyAgICAgICAgICAgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2xpbmV0byggYm9yZGVyLCAmZW5kLCBGQUxTRSApOworICAgICAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGVsc2UgZmFsbCB0aHJvdWdoICovCisgICAgICAgICAgfQorCisgICAgICAgICAgLyogc2ltcGx5IGFkZCBhbiBhcmMgKi8KKyAgICAgICAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfY29uaWN0byggYm9yZGVyLCAmY3RybCwgJmVuZCApOworICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGFyYyAtPSAyOworCisgICAgICBzdHJva2VyLT5hbmdsZV9pbiA9IGFuZ2xlX291dDsKKyAgICB9CisKKyAgICBzdHJva2VyLT5jZW50ZXIgPSAqdG87CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRzdHJva2UuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfU3Ryb2tlcl9DdWJpY1RvKCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIGNvbnRyb2wxLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIGNvbnRyb2wyLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIHRvICkKKyAgeworICAgIEZUX0Vycm9yICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX1ZlY3RvciAgIGJlel9zdGFja1szN107CisgICAgRlRfVmVjdG9yKiAgYXJjOworICAgIEZUX1ZlY3RvciogIGxpbWl0ID0gYmV6X3N0YWNrICsgMzI7CisgICAgRlRfQm9vbCAgICAgZmlyc3RfYXJjID0gVFJVRTsKKworCisgICAgLyogaWYgYWxsIGNvbnRyb2wgcG9pbnRzIGFyZSBjb2luY2lkZW50LCB0aGlzIGlzIGEgbm8tb3A7ICovCisgICAgLyogYXZvaWQgY3JlYXRpbmcgYSBzcHVyaW91cyBjb3JuZXIgKi8KKyAgICBpZiAoIEZUX0lTX1NNQUxMKCBzdHJva2VyLT5jZW50ZXIueCAtIGNvbnRyb2wxLT54ICkgJiYKKyAgICAgICAgIEZUX0lTX1NNQUxMKCBzdHJva2VyLT5jZW50ZXIueSAtIGNvbnRyb2wxLT55ICkgJiYKKyAgICAgICAgIEZUX0lTX1NNQUxMKCBjb250cm9sMS0+eCAgICAgICAtIGNvbnRyb2wyLT54ICkgJiYKKyAgICAgICAgIEZUX0lTX1NNQUxMKCBjb250cm9sMS0+eSAgICAgICAtIGNvbnRyb2wyLT55ICkgJiYKKyAgICAgICAgIEZUX0lTX1NNQUxMKCBjb250cm9sMi0+eCAgICAgICAtIHRvLT54ICAgICAgICkgJiYKKyAgICAgICAgIEZUX0lTX1NNQUxMKCBjb250cm9sMi0+eSAgICAgICAtIHRvLT55ICAgICAgICkgKQorICAgIHsKKyAgICAgICBzdHJva2VyLT5jZW50ZXIgPSAqdG87CisgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGFyYyAgICA9IGJlel9zdGFjazsKKyAgICBhcmNbMF0gPSAqdG87CisgICAgYXJjWzFdID0gKmNvbnRyb2wyOworICAgIGFyY1syXSA9ICpjb250cm9sMTsKKyAgICBhcmNbM10gPSBzdHJva2VyLT5jZW50ZXI7CisKKyAgICB3aGlsZSAoIGFyYyA+PSBiZXpfc3RhY2sgKQorICAgIHsKKyAgICAgIEZUX0FuZ2xlICBhbmdsZV9pbiwgYW5nbGVfbWlkLCBhbmdsZV9vdXQ7CisKKworICAgICAgLyogaW5pdGlhbGl6ZSB3aXRoIGN1cnJlbnQgZGlyZWN0aW9uICovCisgICAgICBhbmdsZV9pbiA9IGFuZ2xlX291dCA9IGFuZ2xlX21pZCA9IHN0cm9rZXItPmFuZ2xlX2luOworCisgICAgICBpZiAoIGFyYyA8IGxpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAhZnRfY3ViaWNfaXNfc21hbGxfZW5vdWdoKCBhcmMsICZhbmdsZV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFuZ2xlX21pZCwgJmFuZ2xlX291dCApICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBzdHJva2VyLT5maXJzdF9wb2ludCApCisgICAgICAgICAgc3Ryb2tlci0+YW5nbGVfaW4gPSBhbmdsZV9pbjsKKworICAgICAgICBmdF9jdWJpY19zcGxpdCggYXJjICk7CisgICAgICAgIGFyYyArPSAzOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgaWYgKCBmaXJzdF9hcmMgKQorICAgICAgeworICAgICAgICBmaXJzdF9hcmMgPSBGQUxTRTsKKworICAgICAgICAvKiBwcm9jZXNzIGNvcm5lciBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgaWYgKCBzdHJva2VyLT5maXJzdF9wb2ludCApCisgICAgICAgICAgZXJyb3IgPSBmdF9zdHJva2VyX3N1YnBhdGhfc3RhcnQoIHN0cm9rZXIsIGFuZ2xlX2luLCAwICk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHN0cm9rZXItPmFuZ2xlX291dCA9IGFuZ2xlX2luOworICAgICAgICAgIGVycm9yID0gZnRfc3Ryb2tlcl9wcm9jZXNzX2Nvcm5lciggc3Ryb2tlciwgMCApOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmICggZnRfcG9zX2FicyggRlRfQW5nbGVfRGlmZiggc3Ryb2tlci0+YW5nbGVfaW4sIGFuZ2xlX2luICkgKSA+CisgICAgICAgICAgICAgICAgICBGVF9TTUFMTF9DVUJJQ19USFJFU0hPTEQgLyA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICB7CisgICAgICAgIC8qIGlmIHRoZSBkZXZpYXRpb24gZnJvbSBvbmUgYXJjIHRvIHRoZSBuZXh0IGlzIHRvbyBncmVhdCwgKi8KKyAgICAgICAgLyogYWRkIGEgcm91bmQgY29ybmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBzdHJva2VyLT5jZW50ZXIgICAgPSBhcmNbM107CisgICAgICAgIHN0cm9rZXItPmFuZ2xlX291dCA9IGFuZ2xlX2luOworICAgICAgICBzdHJva2VyLT5saW5lX2pvaW4gPSBGVF9TVFJPS0VSX0xJTkVKT0lOX1JPVU5EOworCisgICAgICAgIGVycm9yID0gZnRfc3Ryb2tlcl9wcm9jZXNzX2Nvcm5lciggc3Ryb2tlciwgMCApOworCisgICAgICAgIC8qIHJlaW5zdGF0ZSBsaW5lIGpvaW4gc3R5bGUgKi8KKyAgICAgICAgc3Ryb2tlci0+bGluZV9qb2luID0gc3Ryb2tlci0+bGluZV9qb2luX3NhdmVkOworICAgICAgfQorCisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICAvKiB0aGUgYXJjJ3MgYW5nbGUgaXMgc21hbGwgZW5vdWdoOyB3ZSBjYW4gYWRkIGl0IGRpcmVjdGx5IHRvIGVhY2ggKi8KKyAgICAgIC8qIGJvcmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgeworICAgICAgICBGVF9WZWN0b3IgICAgICAgIGN0cmwxLCBjdHJsMiwgZW5kOworICAgICAgICBGVF9BbmdsZSAgICAgICAgIHRoZXRhMSwgcGhpMSwgdGhldGEyLCBwaGkyLCByb3RhdGUsIGFscGhhMCA9IDA7CisgICAgICAgIEZUX0ZpeGVkICAgICAgICAgbGVuZ3RoMSwgbGVuZ3RoMjsKKyAgICAgICAgRlRfU3Ryb2tlQm9yZGVyICBib3JkZXI7CisgICAgICAgIEZUX0ludCAgICAgICAgICAgc2lkZTsKKworCisgICAgICAgIHRoZXRhMSAgPSBGVF9BbmdsZV9EaWZmKCBhbmdsZV9pbiwgIGFuZ2xlX21pZCApIC8gMjsKKyAgICAgICAgdGhldGEyICA9IEZUX0FuZ2xlX0RpZmYoIGFuZ2xlX21pZCwgYW5nbGVfb3V0ICkgLyAyOworICAgICAgICBwaGkxICAgID0gZnRfYW5nbGVfbWVhbiggYW5nbGVfaW4sICBhbmdsZV9taWQgKTsKKyAgICAgICAgcGhpMiAgICA9IGZ0X2FuZ2xlX21lYW4oIGFuZ2xlX21pZCwgYW5nbGVfb3V0ICk7CisgICAgICAgIGxlbmd0aDEgPSBGVF9EaXZGaXgoIHN0cm9rZXItPnJhZGl1cywgRlRfQ29zKCB0aGV0YTEgKSApOworICAgICAgICBsZW5ndGgyID0gRlRfRGl2Rml4KCBzdHJva2VyLT5yYWRpdXMsIEZUX0NvcyggdGhldGEyICkgKTsKKworICAgICAgICAvKiBjb21wdXRlIGRpcmVjdGlvbiBvZiBvcmlnaW5hbCBhcmMgKi8KKyAgICAgICAgaWYgKCBzdHJva2VyLT5oYW5kbGVfd2lkZV9zdHJva2VzICkKKyAgICAgICAgICBhbHBoYTAgPSBGVF9BdGFuMiggYXJjWzBdLnggLSBhcmNbM10ueCwgYXJjWzBdLnkgLSBhcmNbM10ueSApOworCisgICAgICAgIGZvciAoIGJvcmRlciA9IHN0cm9rZXItPmJvcmRlcnMsIHNpZGUgPSAwOworICAgICAgICAgICAgICBzaWRlIDw9IDE7CisgICAgICAgICAgICAgIHNpZGUrKywgYm9yZGVyKysgKQorICAgICAgICB7CisgICAgICAgICAgcm90YXRlID0gRlRfU0lERV9UT19ST1RBVEUoIHNpZGUgKTsKKworICAgICAgICAgIC8qIGNvbXB1dGUgY29udHJvbCBwb2ludHMgKi8KKyAgICAgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmN0cmwxLCBsZW5ndGgxLCBwaGkxICsgcm90YXRlICk7CisgICAgICAgICAgY3RybDEueCArPSBhcmNbMl0ueDsKKyAgICAgICAgICBjdHJsMS55ICs9IGFyY1syXS55OworCisgICAgICAgICAgRlRfVmVjdG9yX0Zyb21fUG9sYXIoICZjdHJsMiwgbGVuZ3RoMiwgcGhpMiArIHJvdGF0ZSApOworICAgICAgICAgIGN0cmwyLnggKz0gYXJjWzFdLng7CisgICAgICAgICAgY3RybDIueSArPSBhcmNbMV0ueTsKKworICAgICAgICAgIC8qIGNvbXB1dGUgZW5kIHBvaW50ICovCisgICAgICAgICAgRlRfVmVjdG9yX0Zyb21fUG9sYXIoICZlbmQsIHN0cm9rZXItPnJhZGl1cywgYW5nbGVfb3V0ICsgcm90YXRlICk7CisgICAgICAgICAgZW5kLnggKz0gYXJjWzBdLng7CisgICAgICAgICAgZW5kLnkgKz0gYXJjWzBdLnk7CisKKyAgICAgICAgICBpZiAoIHN0cm9rZXItPmhhbmRsZV93aWRlX3N0cm9rZXMgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1ZlY3RvciAgc3RhcnQ7CisgICAgICAgICAgICBGVF9BbmdsZSAgIGFscGhhMTsKKworCisgICAgICAgICAgICAvKiBkZXRlcm1pbmUgd2hldGhlciB0aGUgYm9yZGVyIHJhZGl1cyBpcyBncmVhdGVyIHRoYW4gdGhlICovCisgICAgICAgICAgICAvKiByYWRpdXMgb2YgY3VydmF0dXJlIG9mIHRoZSBvcmlnaW5hbCBhcmMgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICBzdGFydCA9IGJvcmRlci0+cG9pbnRzW2JvcmRlci0+bnVtX3BvaW50cyAtIDFdOworCisgICAgICAgICAgICBhbHBoYTEgPSBGVF9BdGFuMiggZW5kLnggLSBzdGFydC54LCBlbmQueSAtIHN0YXJ0LnkgKTsKKworICAgICAgICAgICAgLyogaXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgYm9yZGVyIGFyYyBvcHBvc2l0ZSB0byAqLworICAgICAgICAgICAgLyogdGhhdCBvZiB0aGUgb3JpZ2luYWwgYXJjPyAqLworICAgICAgICAgICAgaWYgKCBmdF9wb3NfYWJzKCBGVF9BbmdsZV9EaWZmKCBhbHBoYTAsIGFscGhhMSApICkgPgorICAgICAgICAgICAgICAgICAgIEZUX0FOR0xFX1BJIC8gMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9BbmdsZSAgIGJldGEsIGdhbW1hOworICAgICAgICAgICAgICBGVF9WZWN0b3IgIGJ2ZWMsIGRlbHRhOworICAgICAgICAgICAgICBGVF9GaXhlZCAgIGJsZW4sIHNpbkEsIHNpbkIsIGFsZW47CisKKworICAgICAgICAgICAgICAvKiB1c2UgdGhlIHNpbmUgcnVsZSB0byBmaW5kIHRoZSBpbnRlcnNlY3Rpb24gcG9pbnQgKi8KKyAgICAgICAgICAgICAgYmV0YSAgPSBGVF9BdGFuMiggYXJjWzNdLnggLSBzdGFydC54LCBhcmNbM10ueSAtIHN0YXJ0LnkgKTsKKyAgICAgICAgICAgICAgZ2FtbWEgPSBGVF9BdGFuMiggYXJjWzBdLnggLSBlbmQueCwgICBhcmNbMF0ueSAtIGVuZC55ICk7CisKKyAgICAgICAgICAgICAgYnZlYy54ID0gZW5kLnggLSBzdGFydC54OworICAgICAgICAgICAgICBidmVjLnkgPSBlbmQueSAtIHN0YXJ0Lnk7CisKKyAgICAgICAgICAgICAgYmxlbiA9IEZUX1ZlY3Rvcl9MZW5ndGgoICZidmVjICk7CisKKyAgICAgICAgICAgICAgc2luQSA9IGZ0X3Bvc19hYnMoIEZUX1NpbiggYWxwaGExIC0gZ2FtbWEgKSApOworICAgICAgICAgICAgICBzaW5CID0gZnRfcG9zX2FicyggRlRfU2luKCBiZXRhIC0gZ2FtbWEgKSApOworCisgICAgICAgICAgICAgIGFsZW4gPSBGVF9NdWxEaXYoIGJsZW4sIHNpbkEsIHNpbkIgKTsKKworICAgICAgICAgICAgICBGVF9WZWN0b3JfRnJvbV9Qb2xhciggJmRlbHRhLCBhbGVuLCBiZXRhICk7CisgICAgICAgICAgICAgIGRlbHRhLnggKz0gc3RhcnQueDsKKyAgICAgICAgICAgICAgZGVsdGEueSArPSBzdGFydC55OworCisgICAgICAgICAgICAgIC8qIGNpcmN1bW5hdmlnYXRlIHRoZSBuZWdhdGl2ZSBzZWN0b3IgYmFja3dhcmRzICovCisgICAgICAgICAgICAgIGJvcmRlci0+bW92YWJsZSA9IEZBTFNFOworICAgICAgICAgICAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfbGluZXRvKCBib3JkZXIsICZkZWx0YSwgRkFMU0UgKTsKKyAgICAgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfbGluZXRvKCBib3JkZXIsICZlbmQsIEZBTFNFICk7CisgICAgICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2N1YmljdG8oIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdHJsMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdHJsMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCApOworICAgICAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICAgIC8qIGFuZCB0aGVuIG1vdmUgdG8gdGhlIGVuZHBvaW50ICovCisgICAgICAgICAgICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9saW5ldG8oIGJvcmRlciwgJmVuZCwgRkFMU0UgKTsKKyAgICAgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBlbHNlIGZhbGwgdGhyb3VnaCAqLworICAgICAgICAgIH0KKworICAgICAgICAgIC8qIHNpbXBseSBhZGQgYW4gYXJjICovCisgICAgICAgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2N1YmljdG8oIGJvcmRlciwgJmN0cmwxLCAmY3RybDIsICZlbmQgKTsKKyAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBhcmMgLT0gMzsKKworICAgICAgc3Ryb2tlci0+YW5nbGVfaW4gPSBhbmdsZV9vdXQ7CisgICAgfQorCisgICAgc3Ryb2tlci0+Y2VudGVyID0gKnRvOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3Ryb2tlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1N0cm9rZXJfQmVnaW5TdWJQYXRoKCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICBvcGVuICkKKyAgeworICAgIC8qIFdlIGNhbm5vdCBwcm9jZXNzIHRoZSBmaXJzdCBwb2ludCwgYmVjYXVzZSB0aGVyZSBpcyBub3QgZW5vdWdoICAgICAgKi8KKyAgICAvKiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgaXRzIGNvcm5lci9jYXAuICBUaGUgbGF0dGVyIHdpbGwgYmUgcHJvY2Vzc2VkICovCisgICAgLyogaW4gdGhlIGBGVF9TdHJva2VyX0VuZFN1YlBhdGgnIHJvdXRpbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBzdHJva2VyLT5maXJzdF9wb2ludCAgPSBUUlVFOworICAgIHN0cm9rZXItPmNlbnRlciAgICAgICA9ICp0bzsKKyAgICBzdHJva2VyLT5zdWJwYXRoX29wZW4gPSBvcGVuOworCisgICAgLyogRGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgYm9yZGVyIHJhZGl1cyBpcyBncmVhdGVyICovCisgICAgLyogdGhhbiB0aGUgcmFkaXVzIG9mIGN1cnZhdHVyZSBvZiBhIGN1cnZlLCB0byBoYW5kbGUgdGhpcyBjYXNlICAgICAgICovCisgICAgLyogc3BlY2lhbGx5LiAgVGhpcyBpcyBvbmx5IHJlcXVpcmVkIGlmIGJldmVsIGpvaW5zIG9yIGJ1dHQgY2FwcyBtYXkgICovCisgICAgLyogYmUgY3JlYXRlZCwgYmVjYXVzZSByb3VuZCAmIG1pdGVyIGpvaW5zIGFuZCByb3VuZCAmIHNxdWFyZSBjYXBzICAgICovCisgICAgLyogY292ZXIgdGhlIG5lZ2F0aXZlIHNlY3RvciBjcmVhdGVkIHdpdGggd2lkZSBzdHJva2VzLiAgICAgICAgICAgICAgICovCisgICAgc3Ryb2tlci0+aGFuZGxlX3dpZGVfc3Ryb2tlcyA9CisgICAgICBGVF9CT09MKCBzdHJva2VyLT5saW5lX2pvaW4gIT0gRlRfU1RST0tFUl9MSU5FSk9JTl9ST1VORCAgfHwKKyAgICAgICAgICAgICAgICggc3Ryb2tlci0+c3VicGF0aF9vcGVuICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICAgc3Ryb2tlci0+bGluZV9jYXAgPT0gRlRfU1RST0tFUl9MSU5FQ0FQX0JVVFQgKSApOworCisgICAgLyogcmVjb3JkIHRoZSBzdWJwYXRoIHN0YXJ0IHBvaW50IGZvciBlYWNoIGJvcmRlciAqLworICAgIHN0cm9rZXItPnN1YnBhdGhfc3RhcnQgPSAqdG87CisKKyAgICBzdHJva2VyLT5hbmdsZV9pbiA9IDA7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgZnRfc3Ryb2tlcl9hZGRfcmV2ZXJzZV9sZWZ0KCBGVF9TdHJva2VyICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgIG9wZW4gKQorICB7CisgICAgRlRfU3Ryb2tlQm9yZGVyICByaWdodCA9IHN0cm9rZXItPmJvcmRlcnMgKyAwOworICAgIEZUX1N0cm9rZUJvcmRlciAgbGVmdCAgPSBzdHJva2VyLT5ib3JkZXJzICsgMTsKKyAgICBGVF9JbnQgICAgICAgICAgIG5ld19wb2ludHM7CisgICAgRlRfRXJyb3IgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKworCisgICAgRlRfQVNTRVJUKCBsZWZ0LT5zdGFydCA+PSAwICk7CisKKyAgICBuZXdfcG9pbnRzID0gbGVmdC0+bnVtX3BvaW50cyAtIGxlZnQtPnN0YXJ0OworICAgIGlmICggbmV3X3BvaW50cyA+IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9ncm93KCByaWdodCwgKEZUX1VJbnQpbmV3X3BvaW50cyApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgeworICAgICAgICBGVF9WZWN0b3IqICBkc3RfcG9pbnQgPSByaWdodC0+cG9pbnRzICsgcmlnaHQtPm51bV9wb2ludHM7CisgICAgICAgIEZUX0J5dGUqICAgIGRzdF90YWcgICA9IHJpZ2h0LT50YWdzICAgKyByaWdodC0+bnVtX3BvaW50czsKKyAgICAgICAgRlRfVmVjdG9yKiAgc3JjX3BvaW50ID0gbGVmdC0+cG9pbnRzICArIGxlZnQtPm51bV9wb2ludHMgLSAxOworICAgICAgICBGVF9CeXRlKiAgICBzcmNfdGFnICAgPSBsZWZ0LT50YWdzICAgICsgbGVmdC0+bnVtX3BvaW50cyAtIDE7CisKKworICAgICAgICB3aGlsZSAoIHNyY19wb2ludCA+PSBsZWZ0LT5wb2ludHMgKyBsZWZ0LT5zdGFydCApCisgICAgICAgIHsKKyAgICAgICAgICAqZHN0X3BvaW50ID0gKnNyY19wb2ludDsKKyAgICAgICAgICAqZHN0X3RhZyAgID0gKnNyY190YWc7CisKKyAgICAgICAgICBpZiAoIG9wZW4gKQorICAgICAgICAgICAgZHN0X3RhZ1swXSAmPSB+RlRfU1RST0tFX1RBR19CRUdJTl9FTkQ7CisgICAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0J5dGUgIHR0YWcgPQorICAgICAgICAgICAgICAgICAgICAgICAoRlRfQnl0ZSkoIGRzdF90YWdbMF0gJiBGVF9TVFJPS0VfVEFHX0JFR0lOX0VORCApOworCisKKyAgICAgICAgICAgIC8qIHN3aXRjaCBiZWdpbi9lbmQgdGFncyBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgICAgIGlmICggdHRhZyA9PSBGVF9TVFJPS0VfVEFHX0JFR0lOIHx8CisgICAgICAgICAgICAgICAgIHR0YWcgPT0gRlRfU1RST0tFX1RBR19FTkQgICApCisgICAgICAgICAgICAgIGRzdF90YWdbMF0gXj0gRlRfU1RST0tFX1RBR19CRUdJTl9FTkQ7CisgICAgICAgICAgfQorCisgICAgICAgICAgc3JjX3BvaW50LS07CisgICAgICAgICAgc3JjX3RhZy0tOworICAgICAgICAgIGRzdF9wb2ludCsrOworICAgICAgICAgIGRzdF90YWcrKzsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBsZWZ0LT5udW1fcG9pbnRzICAgPSBsZWZ0LT5zdGFydDsKKyAgICAgIHJpZ2h0LT5udW1fcG9pbnRzICs9IG5ld19wb2ludHM7CisKKyAgICAgIHJpZ2h0LT5tb3ZhYmxlID0gRkFMU0U7CisgICAgICBsZWZ0LT5tb3ZhYmxlICA9IEZBTFNFOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHN0cm9rZS5oICovCisKKyAgLyogdGhlcmUncyBhIGxvdCBvZiBtYWdpYyBpbiB0aGlzIGZ1bmN0aW9uISAqLworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1N0cm9rZXJfRW5kU3ViUGF0aCggRlRfU3Ryb2tlciAgc3Ryb2tlciApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIGlmICggc3Ryb2tlci0+c3VicGF0aF9vcGVuICkKKyAgICB7CisgICAgICBGVF9TdHJva2VCb3JkZXIgIHJpZ2h0ID0gc3Ryb2tlci0+Ym9yZGVyczsKKworCisgICAgICAvKiBBbGwgcmlnaHQsIHRoaXMgaXMgYW4gb3BlbmVkIHBhdGgsIHdlIG5lZWQgdG8gYWRkIGEgY2FwIGJldHdlZW4gKi8KKyAgICAgIC8qIHJpZ2h0ICYgbGVmdCwgYWRkIHRoZSByZXZlcnNlIG9mIGxlZnQsIHRoZW4gYWRkIGEgZmluYWwgY2FwICAgICAqLworICAgICAgLyogYmV0d2VlbiBsZWZ0ICYgcmlnaHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBlcnJvciA9IGZ0X3N0cm9rZXJfY2FwKCBzdHJva2VyLCBzdHJva2VyLT5hbmdsZV9pbiwgMCApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogYWRkIHJldmVyc2VkIHBvaW50cyBmcm9tIGBsZWZ0JyB0byBgcmlnaHQnICovCisgICAgICBlcnJvciA9IGZ0X3N0cm9rZXJfYWRkX3JldmVyc2VfbGVmdCggc3Ryb2tlciwgVFJVRSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogbm93IGFkZCB0aGUgZmluYWwgY2FwICovCisgICAgICBzdHJva2VyLT5jZW50ZXIgPSBzdHJva2VyLT5zdWJwYXRoX3N0YXJ0OworICAgICAgZXJyb3IgPSBmdF9zdHJva2VyX2NhcCggc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZXItPnN1YnBhdGhfYW5nbGUgKyBGVF9BTkdMRV9QSSwgMCApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogTm93IGVuZCB0aGUgcmlnaHQgc3VicGF0aCBhY2NvcmRpbmdseS4gIFRoZSBsZWZ0IG9uZSBpcyAqLworICAgICAgLyogcmV3aW5kIGFuZCBkb2Vzbid0IG5lZWQgZnVydGhlciBwcm9jZXNzaW5nLiAgICAgICAgICAgICAqLworICAgICAgZnRfc3Ryb2tlX2JvcmRlcl9jbG9zZSggcmlnaHQsIEZBTFNFICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBGVF9BbmdsZSAgdHVybjsKKyAgICAgIEZUX0ludCAgICBpbnNpZGVfc2lkZTsKKworCisgICAgICAvKiBjbG9zZSB0aGUgcGF0aCBpZiBuZWVkZWQgKi8KKyAgICAgIGlmICggc3Ryb2tlci0+Y2VudGVyLnggIT0gc3Ryb2tlci0+c3VicGF0aF9zdGFydC54IHx8CisgICAgICAgICAgIHN0cm9rZXItPmNlbnRlci55ICE9IHN0cm9rZXItPnN1YnBhdGhfc3RhcnQueSApCisgICAgICB7CisgICAgICAgICBlcnJvciA9IEZUX1N0cm9rZXJfTGluZVRvKCBzdHJva2VyLCAmc3Ryb2tlci0+c3VicGF0aF9zdGFydCApOworICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgLyogcHJvY2VzcyB0aGUgY29ybmVyICovCisgICAgICBzdHJva2VyLT5hbmdsZV9vdXQgPSBzdHJva2VyLT5zdWJwYXRoX2FuZ2xlOworICAgICAgdHVybiAgICAgICAgICAgICAgID0gRlRfQW5nbGVfRGlmZiggc3Ryb2tlci0+YW5nbGVfaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VyLT5hbmdsZV9vdXQgKTsKKworICAgICAgLyogbm8gc3BlY2lmaWMgY29ybmVyIHByb2Nlc3NpbmcgaXMgcmVxdWlyZWQgaWYgdGhlIHR1cm4gaXMgMCAqLworICAgICAgaWYgKCB0dXJuICE9IDAgKQorICAgICAgeworICAgICAgICAvKiB3aGVuIHdlIHR1cm4gdG8gdGhlIHJpZ2h0LCB0aGUgaW5zaWRlIHNpZGUgaXMgMCAqLworICAgICAgICBpbnNpZGVfc2lkZSA9IDA7CisKKyAgICAgICAgLyogb3RoZXJ3aXNlLCB0aGUgaW5zaWRlIHNpZGUgaXMgMSAqLworICAgICAgICBpZiAoIHR1cm4gPCAwICkKKyAgICAgICAgICBpbnNpZGVfc2lkZSA9IDE7CisKKyAgICAgICAgZXJyb3IgPSBmdF9zdHJva2VyX2luc2lkZSggc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlX3NpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZXItPnN1YnBhdGhfbGluZV9sZW5ndGggKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIC8qIHByb2Nlc3MgdGhlIG91dHNpZGUgc2lkZSAqLworICAgICAgICBlcnJvciA9IGZ0X3N0cm9rZXJfb3V0c2lkZSggc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBpbnNpZGVfc2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZXItPnN1YnBhdGhfbGluZV9sZW5ndGggKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICAvKiB0aGVuIGVuZCBvdXIgdHdvIHN1YnBhdGhzICovCisgICAgICBmdF9zdHJva2VfYm9yZGVyX2Nsb3NlKCBzdHJva2VyLT5ib3JkZXJzICsgMCwgRkFMU0UgKTsKKyAgICAgIGZ0X3N0cm9rZV9ib3JkZXJfY2xvc2UoIHN0cm9rZXItPmJvcmRlcnMgKyAxLCBUUlVFICk7CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3Ryb2tlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1N0cm9rZXJfR2V0Qm9yZGVyQ291bnRzKCBGVF9TdHJva2VyICAgICAgICBzdHJva2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3Ryb2tlckJvcmRlciAgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAqYW51bV9wb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICphbnVtX2NvbnRvdXJzICkKKyAgeworICAgIEZUX1VJbnQgICBudW1fcG9pbnRzID0gMCwgbnVtX2NvbnRvdXJzID0gMDsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgIGlmICggIXN0cm9rZXIgfHwgYm9yZGVyID4gMSApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGVycm9yID0gZnRfc3Ryb2tlX2JvcmRlcl9nZXRfY291bnRzKCBzdHJva2VyLT5ib3JkZXJzICsgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbnVtX3BvaW50cywgJm51bV9jb250b3VycyApOworICBFeGl0OgorICAgIGlmICggYW51bV9wb2ludHMgKQorICAgICAgKmFudW1fcG9pbnRzID0gbnVtX3BvaW50czsKKworICAgIGlmICggYW51bV9jb250b3VycyApCisgICAgICAqYW51bV9jb250b3VycyA9IG51bV9jb250b3VyczsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHN0cm9rZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9TdHJva2VyX0dldENvdW50cyggRlRfU3Ryb2tlciAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgKmFudW1fcG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAqYW51bV9jb250b3VycyApCisgIHsKKyAgICBGVF9VSW50ICAgY291bnQxLCBjb3VudDIsIG51bV9wb2ludHMgICA9IDA7CisgICAgRlRfVUludCAgIGNvdW50MywgY291bnQ0LCBudW1fY29udG91cnMgPSAwOworICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgZXJyb3IgPSBmdF9zdHJva2VfYm9yZGVyX2dldF9jb3VudHMoIHN0cm9rZXItPmJvcmRlcnMgKyAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY291bnQxLCAmY291bnQyICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBlcnJvciA9IGZ0X3N0cm9rZV9ib3JkZXJfZ2V0X2NvdW50cyggc3Ryb2tlci0+Ym9yZGVycyArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb3VudDMsICZjb3VudDQgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIG51bV9wb2ludHMgICA9IGNvdW50MSArIGNvdW50MzsKKyAgICBudW1fY29udG91cnMgPSBjb3VudDIgKyBjb3VudDQ7CisKKyAgRXhpdDoKKyAgICAqYW51bV9wb2ludHMgICA9IG51bV9wb2ludHM7CisgICAgKmFudW1fY29udG91cnMgPSBudW1fY29udG91cnM7CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3Ryb2tlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfU3Ryb2tlcl9FeHBvcnRCb3JkZXIoIEZUX1N0cm9rZXIgICAgICAgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJva2VyQm9yZGVyICBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgICAgICBvdXRsaW5lICkKKyAgeworICAgIGlmICggYm9yZGVyID09IEZUX1NUUk9LRVJfQk9SREVSX0xFRlQgIHx8CisgICAgICAgICBib3JkZXIgPT0gRlRfU1RST0tFUl9CT1JERVJfUklHSFQgKQorICAgIHsKKyAgICAgIEZUX1N0cm9rZUJvcmRlciAgc2JvcmRlciA9ICYgc3Ryb2tlci0+Ym9yZGVyc1tib3JkZXJdOworCisKKyAgICAgIGlmICggc2JvcmRlci0+dmFsaWQgKQorICAgICAgICBmdF9zdHJva2VfYm9yZGVyX2V4cG9ydCggc2JvcmRlciwgb3V0bGluZSApOworICAgIH0KKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHN0cm9rZS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX1N0cm9rZXJfRXhwb3J0KCBGVF9TdHJva2VyICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgIEZUX091dGxpbmUqICBvdXRsaW5lICkKKyAgeworICAgIEZUX1N0cm9rZXJfRXhwb3J0Qm9yZGVyKCBzdHJva2VyLCBGVF9TVFJPS0VSX0JPUkRFUl9MRUZULCBvdXRsaW5lICk7CisgICAgRlRfU3Ryb2tlcl9FeHBvcnRCb3JkZXIoIHN0cm9rZXIsIEZUX1NUUk9LRVJfQk9SREVSX1JJR0hULCBvdXRsaW5lICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRzdHJva2UuaCAqLworCisgIC8qCisgICAqICBUaGUgZm9sbG93aW5nIGlzIHZlcnkgc2ltaWxhciB0byBGVF9PdXRsaW5lX0RlY29tcG9zZSwgZXhjZXB0CisgICAqICB0aGF0IHdlIGRvIHN1cHBvcnQgb3BlbmVkIHBhdGhzLCBhbmQgZG8gbm90IHNjYWxlIHRoZSBvdXRsaW5lLgorICAgKi8KKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9TdHJva2VyX1BhcnNlT3V0bGluZSggRlRfU3Ryb2tlciAgIHN0cm9rZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICBvcGVuZWQgKQorICB7CisgICAgRlRfVmVjdG9yICAgdl9sYXN0OworICAgIEZUX1ZlY3RvciAgIHZfY29udHJvbDsKKyAgICBGVF9WZWN0b3IgICB2X3N0YXJ0OworCisgICAgRlRfVmVjdG9yKiAgcG9pbnQ7CisgICAgRlRfVmVjdG9yKiAgbGltaXQ7CisgICAgY2hhciogICAgICAgdGFnczsKKworICAgIEZUX0Vycm9yICAgIGVycm9yOworCisgICAgRlRfSW50ICAgICAgbjsgICAgICAgICAvKiBpbmRleCBvZiBjb250b3VyIGluIG91dGxpbmUgICAgICovCisgICAgRlRfVUludCAgICAgZmlyc3Q7ICAgICAvKiBpbmRleCBvZiBmaXJzdCBwb2ludCBpbiBjb250b3VyICovCisgICAgRlRfSW50ICAgICAgdGFnOyAgICAgICAvKiBjdXJyZW50IHBvaW50J3Mgc3RhdGUgICAgICAgICAgICovCisKKworICAgIGlmICggIW91dGxpbmUgfHwgIXN0cm9rZXIgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBGVF9TdHJva2VyX1Jld2luZCggc3Ryb2tlciApOworCisgICAgZmlyc3QgPSAwOworCisgICAgZm9yICggbiA9IDA7IG4gPCBvdXRsaW5lLT5uX2NvbnRvdXJzOyBuKysgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgIGxhc3Q7ICAvKiBpbmRleCBvZiBsYXN0IHBvaW50IGluIGNvbnRvdXIgKi8KKworCisgICAgICBsYXN0ICA9IG91dGxpbmUtPmNvbnRvdXJzW25dOworICAgICAgbGltaXQgPSBvdXRsaW5lLT5wb2ludHMgKyBsYXN0OworCisgICAgICAvKiBza2lwIGVtcHR5IHBvaW50czsgd2UgZG9uJ3Qgc3Ryb2tlIHRoZXNlICovCisgICAgICBpZiAoIGxhc3QgPD0gZmlyc3QgKQorICAgICAgeworICAgICAgICBmaXJzdCA9IGxhc3QgKyAxOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgdl9zdGFydCA9IG91dGxpbmUtPnBvaW50c1tmaXJzdF07CisgICAgICB2X2xhc3QgID0gb3V0bGluZS0+cG9pbnRzW2xhc3RdOworCisgICAgICB2X2NvbnRyb2wgPSB2X3N0YXJ0OworCisgICAgICBwb2ludCA9IG91dGxpbmUtPnBvaW50cyArIGZpcnN0OworICAgICAgdGFncyAgPSBvdXRsaW5lLT50YWdzICAgKyBmaXJzdDsKKyAgICAgIHRhZyAgID0gRlRfQ1VSVkVfVEFHKCB0YWdzWzBdICk7CisKKyAgICAgIC8qIEEgY29udG91ciBjYW5ub3Qgc3RhcnQgd2l0aCBhIGN1YmljIGNvbnRyb2wgcG9pbnQhICovCisgICAgICBpZiAoIHRhZyA9PSBGVF9DVVJWRV9UQUdfQ1VCSUMgKQorICAgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKworICAgICAgLyogY2hlY2sgZmlyc3QgcG9pbnQgdG8gZGV0ZXJtaW5lIG9yaWdpbiAqLworICAgICAgaWYgKCB0YWcgPT0gRlRfQ1VSVkVfVEFHX0NPTklDICkKKyAgICAgIHsKKyAgICAgICAgLyogRmlyc3QgcG9pbnQgaXMgY29uaWMgY29udHJvbC4gIFllcywgdGhpcyBoYXBwZW5zLiAqLworICAgICAgICBpZiAoIEZUX0NVUlZFX1RBRyggb3V0bGluZS0+dGFnc1tsYXN0XSApID09IEZUX0NVUlZFX1RBR19PTiApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBzdGFydCBhdCBsYXN0IHBvaW50IGlmIGl0IGlzIG9uIHRoZSBjdXJ2ZSAqLworICAgICAgICAgIHZfc3RhcnQgPSB2X2xhc3Q7CisgICAgICAgICAgbGltaXQtLTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAvKiBpZiBib3RoIGZpcnN0IGFuZCBsYXN0IHBvaW50cyBhcmUgY29uaWMsICovCisgICAgICAgICAgLyogc3RhcnQgYXQgdGhlaXIgbWlkZGxlICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIHZfc3RhcnQueCA9ICggdl9zdGFydC54ICsgdl9sYXN0LnggKSAvIDI7CisgICAgICAgICAgdl9zdGFydC55ID0gKCB2X3N0YXJ0LnkgKyB2X2xhc3QueSApIC8gMjsKKyAgICAgICAgfQorICAgICAgICBwb2ludC0tOworICAgICAgICB0YWdzLS07CisgICAgICB9CisKKyAgICAgIGVycm9yID0gRlRfU3Ryb2tlcl9CZWdpblN1YlBhdGgoIHN0cm9rZXIsICZ2X3N0YXJ0LCBvcGVuZWQgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIHdoaWxlICggcG9pbnQgPCBsaW1pdCApCisgICAgICB7CisgICAgICAgIHBvaW50Kys7CisgICAgICAgIHRhZ3MrKzsKKworICAgICAgICB0YWcgPSBGVF9DVVJWRV9UQUcoIHRhZ3NbMF0gKTsKKyAgICAgICAgc3dpdGNoICggdGFnICkKKyAgICAgICAgeworICAgICAgICBjYXNlIEZUX0NVUlZFX1RBR19PTjogIC8qIGVtaXQgYSBzaW5nbGUgbGluZV90byAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1ZlY3RvciAgdmVjOworCisKKyAgICAgICAgICAgIHZlYy54ID0gcG9pbnQtPng7CisgICAgICAgICAgICB2ZWMueSA9IHBvaW50LT55OworCisgICAgICAgICAgICBlcnJvciA9IEZUX1N0cm9rZXJfTGluZVRvKCBzdHJva2VyLCAmdmVjICk7CisgICAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgfQorCisgICAgICAgIGNhc2UgRlRfQ1VSVkVfVEFHX0NPTklDOiAgLyogY29uc3VtZSBjb25pYyBhcmNzICovCisgICAgICAgICAgdl9jb250cm9sLnggPSBwb2ludC0+eDsKKyAgICAgICAgICB2X2NvbnRyb2wueSA9IHBvaW50LT55OworCisgICAgICAgIERvX0NvbmljOgorICAgICAgICAgIGlmICggcG9pbnQgPCBsaW1pdCApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfVmVjdG9yICB2ZWM7CisgICAgICAgICAgICBGVF9WZWN0b3IgIHZfbWlkZGxlOworCisKKyAgICAgICAgICAgIHBvaW50Kys7CisgICAgICAgICAgICB0YWdzKys7CisgICAgICAgICAgICB0YWcgPSBGVF9DVVJWRV9UQUcoIHRhZ3NbMF0gKTsKKworICAgICAgICAgICAgdmVjID0gcG9pbnRbMF07CisKKyAgICAgICAgICAgIGlmICggdGFnID09IEZUX0NVUlZFX1RBR19PTiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGVycm9yID0gRlRfU3Ryb2tlcl9Db25pY1RvKCBzdHJva2VyLCAmdl9jb250cm9sLCAmdmVjICk7CisgICAgICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggdGFnICE9IEZUX0NVUlZFX1RBR19DT05JQyApCisgICAgICAgICAgICAgIGdvdG8gSW52YWxpZF9PdXRsaW5lOworCisgICAgICAgICAgICB2X21pZGRsZS54ID0gKCB2X2NvbnRyb2wueCArIHZlYy54ICkgLyAyOworICAgICAgICAgICAgdl9taWRkbGUueSA9ICggdl9jb250cm9sLnkgKyB2ZWMueSApIC8gMjsKKworICAgICAgICAgICAgZXJyb3IgPSBGVF9TdHJva2VyX0NvbmljVG8oIHN0cm9rZXIsICZ2X2NvbnRyb2wsICZ2X21pZGRsZSApOworICAgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAgICAgdl9jb250cm9sID0gdmVjOworICAgICAgICAgICAgZ290byBEb19Db25pYzsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBlcnJvciA9IEZUX1N0cm9rZXJfQ29uaWNUbyggc3Ryb2tlciwgJnZfY29udHJvbCwgJnZfc3RhcnQgKTsKKyAgICAgICAgICBnb3RvIENsb3NlOworCisgICAgICAgIGRlZmF1bHQ6ICAvKiBGVF9DVVJWRV9UQUdfQ1VCSUMgKi8KKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9WZWN0b3IgIHZlYzEsIHZlYzI7CisKKworICAgICAgICAgICAgaWYgKCBwb2ludCArIDEgPiBsaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAgRlRfQ1VSVkVfVEFHKCB0YWdzWzFdICkgIT0gRlRfQ1VSVkVfVEFHX0NVQklDICkKKyAgICAgICAgICAgICAgZ290byBJbnZhbGlkX091dGxpbmU7CisKKyAgICAgICAgICAgIHBvaW50ICs9IDI7CisgICAgICAgICAgICB0YWdzICArPSAyOworCisgICAgICAgICAgICB2ZWMxID0gcG9pbnRbLTJdOworICAgICAgICAgICAgdmVjMiA9IHBvaW50Wy0xXTsKKworICAgICAgICAgICAgaWYgKCBwb2ludCA8PSBsaW1pdCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX1ZlY3RvciAgdmVjOworCisKKyAgICAgICAgICAgICAgdmVjID0gcG9pbnRbMF07CisKKyAgICAgICAgICAgICAgZXJyb3IgPSBGVF9TdHJva2VyX0N1YmljVG8oIHN0cm9rZXIsICZ2ZWMxLCAmdmVjMiwgJnZlYyApOworICAgICAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlcnJvciA9IEZUX1N0cm9rZXJfQ3ViaWNUbyggc3Ryb2tlciwgJnZlYzEsICZ2ZWMyLCAmdl9zdGFydCApOworICAgICAgICAgICAgZ290byBDbG9zZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKworICAgIENsb3NlOgorICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogZG9uJ3QgdHJ5IHRvIGVuZCB0aGUgcGF0aCBpZiBubyBzZWdtZW50cyBoYXZlIGJlZW4gZ2VuZXJhdGVkICovCisgICAgICBpZiAoICFzdHJva2VyLT5maXJzdF9wb2ludCApCisgICAgICB7CisgICAgICAgIGVycm9yID0gRlRfU3Ryb2tlcl9FbmRTdWJQYXRoKCBzdHJva2VyICk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgZmlyc3QgPSBsYXN0ICsgMTsKKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworCisgIEludmFsaWRfT3V0bGluZToKKyAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfT3V0bGluZSApOworICB9CisKKworICAvKiBkZWNsYXJlIGFuIGV4dGVybiB0byBhY2Nlc3MgYGZ0X291dGxpbmVfZ2x5cGhfY2xhc3MnIGdsb2JhbGx5ICAgICAqLworICAvKiBhbGxvY2F0ZWQgIGluIGBmdGdseXBoLmMnLCBhbmQgdXNlIHRoZSBGVF9PVVRMSU5FX0dMWVBIX0NMQVNTX0dFVCAqLworICAvKiBtYWNybyB0byBhY2Nlc3MgaXQgd2hlbiBGVF9DT05GSUdfT1BUSU9OX1BJQyBpcyBkZWZpbmVkICAgICAgICAgICAqLworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworICBleHRlcm4gY29uc3QgRlRfR2x5cGhfQ2xhc3MgIGZ0X291dGxpbmVfZ2x5cGhfY2xhc3M7CisjZW5kaWYKKyNpbmNsdWRlICJiYXNlcGljLmgiCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3Ryb2tlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dseXBoX1N0cm9rZSggRlRfR2x5cGggICAgKnBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICBGVF9TdHJva2VyICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgZGVzdHJveSApCisgIHsKKyAgICBGVF9FcnJvciAgICBlcnJvciAgID0gRlRfRVJSKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgRlRfR2x5cGggICAgZ2x5cGggICA9IE5VTEw7CisgICAgRlRfTGlicmFyeSAgbGlicmFyeSA9IHN0cm9rZXItPmxpYnJhcnk7CisKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsKKworCisgICAgaWYgKCBwZ2x5cGggPT0gTlVMTCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBnbHlwaCA9ICpwZ2x5cGg7CisgICAgaWYgKCBnbHlwaCA9PSBOVUxMIHx8IGdseXBoLT5jbGF6eiAhPSBGVF9PVVRMSU5FX0dMWVBIX0NMQVNTX0dFVCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICB7CisgICAgICBGVF9HbHlwaCAgY29weTsKKworCisgICAgICBlcnJvciA9IEZUX0dseXBoX0NvcHkoIGdseXBoLCAmY29weSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgZ2x5cGggPSBjb3B5OworICAgIH0KKworICAgIHsKKyAgICAgIEZUX091dGxpbmVHbHlwaCAgb2dseXBoICA9IChGVF9PdXRsaW5lR2x5cGgpZ2x5cGg7CisgICAgICBGVF9PdXRsaW5lKiAgICAgIG91dGxpbmUgPSAmb2dseXBoLT5vdXRsaW5lOworICAgICAgRlRfVUludCAgICAgICAgICBudW1fcG9pbnRzLCBudW1fY29udG91cnM7CisKKworICAgICAgZXJyb3IgPSBGVF9TdHJva2VyX1BhcnNlT3V0bGluZSggc3Ryb2tlciwgb3V0bGluZSwgRkFMU0UgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICh2b2lkKUZUX1N0cm9rZXJfR2V0Q291bnRzKCBzdHJva2VyLCAmbnVtX3BvaW50cywgJm51bV9jb250b3VycyApOworCisgICAgICBGVF9PdXRsaW5lX0RvbmUoIGdseXBoLT5saWJyYXJ5LCBvdXRsaW5lICk7CisKKyAgICAgIGVycm9yID0gRlRfT3V0bGluZV9OZXcoIGdseXBoLT5saWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3BvaW50cywgbnVtX2NvbnRvdXJzLCBvdXRsaW5lICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBvdXRsaW5lLT5uX3BvaW50cyAgID0gMDsKKyAgICAgIG91dGxpbmUtPm5fY29udG91cnMgPSAwOworCisgICAgICBGVF9TdHJva2VyX0V4cG9ydCggc3Ryb2tlciwgb3V0bGluZSApOworICAgIH0KKworICAgIGlmICggZGVzdHJveSApCisgICAgICBGVF9Eb25lX0dseXBoKCAqcGdseXBoICk7CisKKyAgICAqcGdseXBoID0gZ2x5cGg7CisgICAgZ290byBFeGl0OworCisgIEZhaWw6CisgICAgRlRfRG9uZV9HbHlwaCggZ2x5cGggKTsKKyAgICBnbHlwaCA9IE5VTEw7CisKKyAgICBpZiAoICFkZXN0cm95ICkKKyAgICAgICpwZ2x5cGggPSBOVUxMOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3Ryb2tlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dseXBoX1N0cm9rZUJvcmRlciggRlRfR2x5cGggICAgKnBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJva2VyICAgc3Ryb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgaW5zaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICBkZXN0cm95ICkKKyAgeworICAgIEZUX0Vycm9yICAgIGVycm9yICAgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICBGVF9HbHlwaCAgICBnbHlwaCAgID0gTlVMTDsKKyAgICBGVF9MaWJyYXJ5ICBsaWJyYXJ5ID0gc3Ryb2tlci0+bGlicmFyeTsKKworICAgIEZUX1VOVVNFRCggbGlicmFyeSApOworCisKKyAgICBpZiAoIHBnbHlwaCA9PSBOVUxMICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGdseXBoID0gKnBnbHlwaDsKKyAgICBpZiAoIGdseXBoID09IE5VTEwgfHwgZ2x5cGgtPmNsYXp6ICE9IEZUX09VVExJTkVfR0xZUEhfQ0xBU1NfR0VUICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIHsKKyAgICAgIEZUX0dseXBoICBjb3B5OworCisKKyAgICAgIGVycm9yID0gRlRfR2x5cGhfQ29weSggZ2x5cGgsICZjb3B5ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBnbHlwaCA9IGNvcHk7CisgICAgfQorCisgICAgeworICAgICAgRlRfT3V0bGluZUdseXBoICAgb2dseXBoICA9IChGVF9PdXRsaW5lR2x5cGgpZ2x5cGg7CisgICAgICBGVF9TdHJva2VyQm9yZGVyICBib3JkZXI7CisgICAgICBGVF9PdXRsaW5lKiAgICAgICBvdXRsaW5lID0gJm9nbHlwaC0+b3V0bGluZTsKKyAgICAgIEZUX1VJbnQgICAgICAgICAgIG51bV9wb2ludHMsIG51bV9jb250b3VyczsKKworCisgICAgICBib3JkZXIgPSBGVF9PdXRsaW5lX0dldE91dHNpZGVCb3JkZXIoIG91dGxpbmUgKTsKKyAgICAgIGlmICggaW5zaWRlICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBib3JkZXIgPT0gRlRfU1RST0tFUl9CT1JERVJfTEVGVCApCisgICAgICAgICAgYm9yZGVyID0gRlRfU1RST0tFUl9CT1JERVJfUklHSFQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBib3JkZXIgPSBGVF9TVFJPS0VSX0JPUkRFUl9MRUZUOworICAgICAgfQorCisgICAgICBlcnJvciA9IEZUX1N0cm9rZXJfUGFyc2VPdXRsaW5lKCBzdHJva2VyLCBvdXRsaW5lLCBGQUxTRSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgKHZvaWQpRlRfU3Ryb2tlcl9HZXRCb3JkZXJDb3VudHMoIHN0cm9rZXIsIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbnVtX3BvaW50cywgJm51bV9jb250b3VycyApOworCisgICAgICBGVF9PdXRsaW5lX0RvbmUoIGdseXBoLT5saWJyYXJ5LCBvdXRsaW5lICk7CisKKyAgICAgIGVycm9yID0gRlRfT3V0bGluZV9OZXcoIGdseXBoLT5saWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3BvaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9jb250b3VycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmUgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgIG91dGxpbmUtPm5fcG9pbnRzICAgPSAwOworICAgICAgb3V0bGluZS0+bl9jb250b3VycyA9IDA7CisKKyAgICAgIEZUX1N0cm9rZXJfRXhwb3J0Qm9yZGVyKCBzdHJva2VyLCBib3JkZXIsIG91dGxpbmUgKTsKKyAgICB9CisKKyAgICBpZiAoIGRlc3Ryb3kgKQorICAgICAgRlRfRG9uZV9HbHlwaCggKnBnbHlwaCApOworCisgICAgKnBnbHlwaCA9IGdseXBoOworICAgIGdvdG8gRXhpdDsKKworICBGYWlsOgorICAgIEZUX0RvbmVfR2x5cGgoIGdseXBoICk7CisgICAgZ2x5cGggPSBOVUxMOworCisgICAgaWYgKCAhZGVzdHJveSApCisgICAgICAqcGdseXBoID0gTlVMTDsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0c3ludGguYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHN5bnRoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0MjI2MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHN5bnRoLmMKQEAgLTAsMCArMSwxNTMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c3ludGguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBzeW50aGVzaXppbmcgY29kZSBmb3IgZW1ib2xkZW5pbmcgYW5kIHNsYW50aW5nIChib2R5KS4gICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMC0yMDA2LCAyMDEwLCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0c3ludGguaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRiaXRtYXAuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX3N5bnRoCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgIEVYUEVSSU1FTlRBTCBPQkxJUVVJTkcgU1VQUE9SVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3ludGguaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9HbHlwaFNsb3RfT2JsaXF1ZSggRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgeworICAgIEZUX01hdHJpeCAgICB0cmFuc2Zvcm07CisgICAgRlRfT3V0bGluZSogIG91dGxpbmUgPSAmc2xvdC0+b3V0bGluZTsKKworCisgICAgLyogb25seSBvYmxpcXVlIG91dGxpbmUgZ2x5cGhzICovCisgICAgaWYgKCBzbG90LT5mb3JtYXQgIT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgKQorICAgICAgcmV0dXJuOworCisgICAgLyogd2UgZG9uJ3QgdG91Y2ggdGhlIGFkdmFuY2Ugd2lkdGggKi8KKworICAgIC8qIEZvciBpdGFsaWMsIHNpbXBseSBhcHBseSBhIHNoZWFyIHRyYW5zZm9ybSwgd2l0aCBhbiBhbmdsZSAqLworICAgIC8qIG9mIGFib3V0IDEyIGRlZ3JlZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgdHJhbnNmb3JtLnh4ID0gMHgxMDAwMEw7CisgICAgdHJhbnNmb3JtLnl4ID0gMHgwMDAwMEw7CisKKyAgICB0cmFuc2Zvcm0ueHkgPSAweDAzNjZBTDsKKyAgICB0cmFuc2Zvcm0ueXkgPSAweDEwMDAwTDsKKworICAgIEZUX091dGxpbmVfVHJhbnNmb3JtKCBvdXRsaW5lLCAmdHJhbnNmb3JtICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgRVhQRVJJTUVOVEFMIEVNQk9MREVOSU5HIFNVUFBPUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHN5bnRoLmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfR2x5cGhTbG90X0VtYm9sZGVuKCBGVF9HbHlwaFNsb3QgIHNsb3QgKQorICB7CisgICAgRlRfTGlicmFyeSAgbGlicmFyeSA9IHNsb3QtPmxpYnJhcnk7CisgICAgRlRfRmFjZSAgICAgZmFjZSAgICA9IHNsb3QtPmZhY2U7CisgICAgRlRfRXJyb3IgICAgZXJyb3I7CisgICAgRlRfUG9zICAgICAgeHN0ciwgeXN0cjsKKworCisgICAgaWYgKCBzbG90LT5mb3JtYXQgIT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgJiYKKyAgICAgICAgIHNsb3QtPmZvcm1hdCAhPSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQICApCisgICAgICByZXR1cm47CisKKyAgICAvKiBzb21lIHJlYXNvbmFibGUgc3RyZW5ndGggKi8KKyAgICB4c3RyID0gRlRfTXVsRml4KCBmYWNlLT51bml0c19wZXJfRU0sCisgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+c2l6ZS0+bWV0cmljcy55X3NjYWxlICkgLyAyNDsKKyAgICB5c3RyID0geHN0cjsKKworICAgIGlmICggc2xvdC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FICkKKyAgICB7CisgICAgICAvKiBpZ25vcmUgZXJyb3IgKi8KKyAgICAgICh2b2lkKUZUX091dGxpbmVfRW1ib2xkZW5YWSggJnNsb3QtPm91dGxpbmUsIHhzdHIsIHlzdHIgKTsKKyAgICB9CisgICAgZWxzZSAvKiBzbG90LT5mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX0JJVE1BUCAqLworICAgIHsKKyAgICAgIC8qIHJvdW5kIHRvIGZ1bGwgcGl4ZWxzICovCisgICAgICB4c3RyICY9IH42MzsKKyAgICAgIGlmICggeHN0ciA9PSAwICkKKyAgICAgICAgeHN0ciA9IDEgPDwgNjsKKyAgICAgIHlzdHIgJj0gfjYzOworCisgICAgICAvKgorICAgICAgICogWFhYOiBvdmVyZmxvdyBjaGVjayBmb3IgMTYtYml0IHN5c3RlbSwgZm9yIGNvbXBhdGliaWxpdHkKKyAgICAgICAqICAgICAgd2l0aCBGVF9HbHlwaFNsb3RfRW1ib2xkZW4oKSBzaW5jZSBmcmVldHlwZS0yLjEuMTAuCisgICAgICAgKiAgICAgIHVuZm9ydHVuYXRlbHksIHRoaXMgZnVuY3Rpb24gcmV0dXJuIG5vIGluZm9ybWF0aW9ucworICAgICAgICogICAgICBhYm91dCB0aGUgY2F1c2Ugb2YgZXJyb3IuCisgICAgICAgKi8KKyAgICAgIGlmICggKCB5c3RyID4+IDYgKSA+IEZUX0lOVF9NQVggfHwgKCB5c3RyID4+IDYgKSA8IEZUX0lOVF9NSU4gKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTEoKCAiRlRfR2x5cGhTbG90X0VtYm9sZGVuOiIgKSk7CisgICAgICAgIEZUX1RSQUNFMSgoICJ0b28gc3Ryb25nIGVtYm9sZGluZyBwYXJhbWV0ZXIgeXN0cj0lZFxuIiwgeXN0ciApKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgZXJyb3IgPSBGVF9HbHlwaFNsb3RfT3duX0JpdG1hcCggc2xvdCApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIHJldHVybjsKKworICAgICAgZXJyb3IgPSBGVF9CaXRtYXBfRW1ib2xkZW4oIGxpYnJhcnksICZzbG90LT5iaXRtYXAsIHhzdHIsIHlzdHIgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCBzbG90LT5hZHZhbmNlLnggKQorICAgICAgc2xvdC0+YWR2YW5jZS54ICs9IHhzdHI7CisKKyAgICBpZiAoIHNsb3QtPmFkdmFuY2UueSApCisgICAgICBzbG90LT5hZHZhbmNlLnkgKz0geXN0cjsKKworICAgIHNsb3QtPm1ldHJpY3Mud2lkdGggICAgICAgKz0geHN0cjsKKyAgICBzbG90LT5tZXRyaWNzLmhlaWdodCAgICAgICs9IHlzdHI7CisgICAgc2xvdC0+bWV0cmljcy5ob3JpQWR2YW5jZSArPSB4c3RyOworICAgIHNsb3QtPm1ldHJpY3MudmVydEFkdmFuY2UgKz0geXN0cjsKKworICAgIC8qIFhYWDogMTYtYml0IG92ZXJmbG93IGNhc2UgbXVzdCBiZSBleGNsdWRlZCBiZWZvcmUgaGVyZSAqLworICAgIGlmICggc2xvdC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAgKQorICAgICAgc2xvdC0+Yml0bWFwX3RvcCArPSAoRlRfSW50KSggeXN0ciA+PiA2ICk7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHRyaWdvbi5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0dHJpZ29uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlNzFmNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHRyaWdvbi5jCkBAIC0wLDAgKzEsNDkyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHRyaWdvbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEtMjAwNSwgMjAxMi0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBpcyBhIGZpeGVkLXBvaW50IENPUkRJQyBpbXBsZW1lbnRhdGlvbiBvZiB0cmlnb25vbWV0cmljICAgICAgICAgICovCisgIC8qIGZ1bmN0aW9ucyBhcyB3ZWxsIGFzIHRyYW5zZm9ybWF0aW9ucyBiZXR3ZWVuIENhcnRlc2lhbiBhbmQgcG9sYXIgICAgICAqLworICAvKiBjb29yZGluYXRlcy4gIFRoZSBhbmdsZXMgYXJlIHJlcHJlc2VudGVkIGFzIDE2LjE2IGZpeGVkLXBvaW50IHZhbHVlcyAgKi8KKyAgLyogaW4gZGVncmVlcywgaS5lLiwgdGhlIGFuZ3VsYXIgcmVzb2x1dGlvbiBpcyAyXi0xNiBkZWdyZWVzLiAgTm90ZSB0aGF0ICovCisgIC8qIG9ubHkgdmVjdG9ycyBsb25nZXIgdGhhbiAyXjE2KjE4MC9waSAob3IgYXQgbGVhc3QgMjIgYml0cykgb24gYSAgICAgICAqLworICAvKiBkaXNjcmV0ZSBDYXJ0ZXNpYW4gZ3JpZCBjYW4gaGF2ZSB0aGUgc2FtZSBvciBiZXR0ZXIgYW5ndWxhciAgICAgICAgICAgKi8KKyAgLyogcmVzb2x1dGlvbi4gIFRoZXJlZm9yZSwgdG8gbWFpbnRhaW4gdGhpcyBwcmVjaXNpb24sIHNvbWUgZnVuY3Rpb25zICAgICovCisgIC8qIHJlcXVpcmUgYW4gaW50ZXJpbSB1cHNjYWxpbmcgb2YgdGhlIHZlY3RvcnMsIHdoZXJlYXMgb3RoZXJzIG9wZXJhdGUgICAqLworICAvKiB3aXRoIDI0LWJpdCBsb25nIHZlY3RvcnMgZGlyZWN0bHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmgiCisKKworICAvKiB0aGUgQ29yZGljIHNocmluayBmYWN0b3IgMC44NTg3ODUzMzY0ODA0MzYgKiAyXjMyICovCisjZGVmaW5lIEZUX1RSSUdfU0NBTEUgICAgICAweERCRDk1QjE2VUwKKworICAvKiB0aGUgaGlnaGVzdCBiaXQgaW4gb3ZlcmZsb3ctc2FmZSB2ZWN0b3IgY29tcG9uZW50cywgKi8KKyAgLyogTVNCIG9mIDAuODU4Nzg1MzM2NDgwNDM2ICogc3FydCgwLjUpICogMl4zMCAgICAgICAgICovCisjZGVmaW5lIEZUX1RSSUdfU0FGRV9NU0IgICAyOQorCisgIC8qIHRoaXMgdGFibGUgd2FzIGdlbmVyYXRlZCBmb3IgRlRfUEkgPSAxODBMIDw8IDE2LCBpLmUuIGRlZ3JlZXMgKi8KKyNkZWZpbmUgRlRfVFJJR19NQVhfSVRFUlMgIDIzCisKKyAgc3RhdGljIGNvbnN0IEZUX0ZpeGVkCisgIGZ0X3RyaWdfYXJjdGFuX3RhYmxlW10gPQorICB7CisgICAgMTc0MDk2N0wsIDkxOTg3OUwsIDQ2Njk0NUwsIDIzNDM3OUwsIDExNzMwNEwsIDU4NjY2TCwgMjkzMzVMLAorICAgIDE0NjY4TCwgNzMzNEwsIDM2NjdMLCAxODMzTCwgOTE3TCwgNDU4TCwgMjI5TCwgMTE1TCwKKyAgICA1N0wsIDI5TCwgMTRMLCA3TCwgNEwsIDJMLCAxTAorICB9OworCisKKyNpZmRlZiBGVF9MT05HNjQKKworICAvKiBtdWx0aXBseSBhIGdpdmVuIHZhbHVlIGJ5IHRoZSBDT1JESUMgc2hyaW5rIGZhY3RvciAqLworICBzdGF0aWMgRlRfRml4ZWQKKyAgZnRfdHJpZ19kb3duc2NhbGUoIEZUX0ZpeGVkICB2YWwgKQorICB7CisgICAgRlRfRml4ZWQgIHM7CisgICAgRlRfSW50NjQgIHY7CisKKworICAgIHMgICA9IHZhbDsKKyAgICB2YWwgPSBGVF9BQlMoIHZhbCApOworCisgICAgdiAgID0gKCB2YWwgKiAoRlRfSW50NjQpRlRfVFJJR19TQ0FMRSApICsgMHgxMDAwMDAwMDBVTDsKKyAgICB2YWwgPSAoRlRfRml4ZWQpKCB2ID4+IDMyICk7CisKKyAgICByZXR1cm4gKCBzID49IDAgKSA/IHZhbCA6IC12YWw7CisgIH0KKworI2Vsc2UgLyogIUZUX0xPTkc2NCAqLworCisgIC8qIG11bHRpcGx5IGEgZ2l2ZW4gdmFsdWUgYnkgdGhlIENPUkRJQyBzaHJpbmsgZmFjdG9yICovCisgIHN0YXRpYyBGVF9GaXhlZAorICBmdF90cmlnX2Rvd25zY2FsZSggRlRfRml4ZWQgIHZhbCApCisgIHsKKyAgICBGVF9GaXhlZCAgIHM7CisgICAgRlRfVUludDMyICB2MSwgdjIsIGsxLCBrMiwgaGksIGxvMSwgbG8yLCBsbzM7CisKKworICAgIHMgICA9IHZhbDsKKyAgICB2YWwgPSBGVF9BQlMoIHZhbCApOworCisgICAgdjEgPSAoRlRfVUludDMyKXZhbCA+PiAxNjsKKyAgICB2MiA9IChGVF9VSW50MzIpKCB2YWwgJiAweEZGRkZMICk7CisKKyAgICBrMSA9IChGVF9VSW50MzIpRlRfVFJJR19TQ0FMRSA+PiAxNjsgICAgICAgICAgIC8qIGNvbnN0YW50ICovCisgICAgazIgPSAoRlRfVUludDMyKSggRlRfVFJJR19TQ0FMRSAmIDB4RkZGRkwgKTsgICAvKiBjb25zdGFudCAqLworCisgICAgaGkgICA9IGsxICogdjE7CisgICAgbG8xICA9IGsxICogdjIgKyBrMiAqIHYxOyAgICAgICAvKiBjYW4ndCBvdmVyZmxvdyAqLworCisgICAgbG8yICA9ICggazIgKiB2MiApID4+IDE2OworICAgIGxvMyAgPSBGVF9NQVgoIGxvMSwgbG8yICk7CisgICAgbG8xICs9IGxvMjsKKworICAgIGhpICArPSBsbzEgPj4gMTY7CisgICAgaWYgKCBsbzEgPCBsbzMgKQorICAgICAgaGkgKz0gKEZUX1VJbnQzMikweDEwMDAwVUw7CisKKyAgICB2YWwgID0gKEZUX0ZpeGVkKWhpOworCisgICAgcmV0dXJuICggcyA+PSAwICkgPyB2YWwgOiAtdmFsOworICB9CisKKyNlbmRpZiAvKiAhRlRfTE9ORzY0ICovCisKKworICBzdGF0aWMgRlRfSW50CisgIGZ0X3RyaWdfcHJlbm9ybSggRlRfVmVjdG9yKiAgdmVjICkKKyAgeworICAgIEZUX1BvcyAgeCwgeTsKKyAgICBGVF9JbnQgIHNoaWZ0OworCisKKyAgICB4ID0gdmVjLT54OworICAgIHkgPSB2ZWMtPnk7CisKKyAgICBzaGlmdCA9IEZUX01TQiggRlRfQUJTKCB4ICkgfCBGVF9BQlMoIHkgKSApOworCisgICAgaWYgKCBzaGlmdCA8PSBGVF9UUklHX1NBRkVfTVNCICkKKyAgICB7CisgICAgICBzaGlmdCAgPSBGVF9UUklHX1NBRkVfTVNCIC0gc2hpZnQ7CisgICAgICB2ZWMtPnggPSAoRlRfUG9zKSggKEZUX1VMb25nKXggPDwgc2hpZnQgKTsKKyAgICAgIHZlYy0+eSA9IChGVF9Qb3MpKCAoRlRfVUxvbmcpeSA8PCBzaGlmdCApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgc2hpZnQgLT0gRlRfVFJJR19TQUZFX01TQjsKKyAgICAgIHZlYy0+eCA9IHggPj4gc2hpZnQ7CisgICAgICB2ZWMtPnkgPSB5ID4+IHNoaWZ0OworICAgICAgc2hpZnQgID0gLXNoaWZ0OworICAgIH0KKworICAgIHJldHVybiBzaGlmdDsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgZnRfdHJpZ19wc2V1ZG9fcm90YXRlKCBGVF9WZWN0b3IqICB2ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAgdGhldGEgKQorICB7CisgICAgRlRfSW50ICAgICAgICAgICBpOworICAgIEZUX0ZpeGVkICAgICAgICAgeCwgeSwgeHRlbXAsIGI7CisgICAgY29uc3QgRlRfRml4ZWQgICphcmN0YW5wdHI7CisKKworICAgIHggPSB2ZWMtPng7CisgICAgeSA9IHZlYy0+eTsKKworICAgIC8qIFJvdGF0ZSBpbnNpZGUgWy1QSS80LFBJLzRdIHNlY3RvciAqLworICAgIHdoaWxlICggdGhldGEgPCAtRlRfQU5HTEVfUEk0ICkKKyAgICB7CisgICAgICB4dGVtcCAgPSAgeTsKKyAgICAgIHkgICAgICA9IC14OworICAgICAgeCAgICAgID0gIHh0ZW1wOworICAgICAgdGhldGEgKz0gIEZUX0FOR0xFX1BJMjsKKyAgICB9CisKKyAgICB3aGlsZSAoIHRoZXRhID4gRlRfQU5HTEVfUEk0ICkKKyAgICB7CisgICAgICB4dGVtcCAgPSAteTsKKyAgICAgIHkgICAgICA9ICB4OworICAgICAgeCAgICAgID0gIHh0ZW1wOworICAgICAgdGhldGEgLT0gIEZUX0FOR0xFX1BJMjsKKyAgICB9CisKKyAgICBhcmN0YW5wdHIgPSBmdF90cmlnX2FyY3Rhbl90YWJsZTsKKworICAgIC8qIFBzZXVkb3JvdGF0aW9ucywgd2l0aCByaWdodCBzaGlmdHMgKi8KKyAgICBmb3IgKCBpID0gMSwgYiA9IDE7IGkgPCBGVF9UUklHX01BWF9JVEVSUzsgYiA8PD0gMSwgaSsrICkKKyAgICB7CisgICAgICBpZiAoIHRoZXRhIDwgMCApCisgICAgICB7CisgICAgICAgIHh0ZW1wICA9IHggKyAoICggeSArIGIgKSA+PiBpICk7CisgICAgICAgIHkgICAgICA9IHkgLSAoICggeCArIGIgKSA+PiBpICk7CisgICAgICAgIHggICAgICA9IHh0ZW1wOworICAgICAgICB0aGV0YSArPSAqYXJjdGFucHRyKys7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHh0ZW1wICA9IHggLSAoICggeSArIGIgKSA+PiBpICk7CisgICAgICAgIHkgICAgICA9IHkgKyAoICggeCArIGIgKSA+PiBpICk7CisgICAgICAgIHggICAgICA9IHh0ZW1wOworICAgICAgICB0aGV0YSAtPSAqYXJjdGFucHRyKys7CisgICAgICB9CisgICAgfQorCisgICAgdmVjLT54ID0geDsKKyAgICB2ZWMtPnkgPSB5OworICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF90cmlnX3BzZXVkb19wb2xhcml6ZSggRlRfVmVjdG9yKiAgdmVjICkKKyAgeworICAgIEZUX0FuZ2xlICAgICAgICAgdGhldGE7CisgICAgRlRfSW50ICAgICAgICAgICBpOworICAgIEZUX0ZpeGVkICAgICAgICAgeCwgeSwgeHRlbXAsIGI7CisgICAgY29uc3QgRlRfRml4ZWQgICphcmN0YW5wdHI7CisKKworICAgIHggPSB2ZWMtPng7CisgICAgeSA9IHZlYy0+eTsKKworICAgIC8qIEdldCB0aGUgdmVjdG9yIGludG8gWy1QSS80LFBJLzRdIHNlY3RvciAqLworICAgIGlmICggeSA+IHggKQorICAgIHsKKyAgICAgIGlmICggeSA+IC14ICkKKyAgICAgIHsKKyAgICAgICAgdGhldGEgPSAgRlRfQU5HTEVfUEkyOworICAgICAgICB4dGVtcCA9ICB5OworICAgICAgICB5ICAgICA9IC14OworICAgICAgICB4ICAgICA9ICB4dGVtcDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgdGhldGEgPSAgeSA+IDAgPyBGVF9BTkdMRV9QSSA6IC1GVF9BTkdMRV9QSTsKKyAgICAgICAgeCAgICAgPSAteDsKKyAgICAgICAgeSAgICAgPSAteTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICggeSA8IC14ICkKKyAgICAgIHsKKyAgICAgICAgdGhldGEgPSAtRlRfQU5HTEVfUEkyOworICAgICAgICB4dGVtcCA9IC15OworICAgICAgICB5ICAgICA9ICB4OworICAgICAgICB4ICAgICA9ICB4dGVtcDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgdGhldGEgPSAwOworICAgICAgfQorICAgIH0KKworICAgIGFyY3RhbnB0ciA9IGZ0X3RyaWdfYXJjdGFuX3RhYmxlOworCisgICAgLyogUHNldWRvcm90YXRpb25zLCB3aXRoIHJpZ2h0IHNoaWZ0cyAqLworICAgIGZvciAoIGkgPSAxLCBiID0gMTsgaSA8IEZUX1RSSUdfTUFYX0lURVJTOyBiIDw8PSAxLCBpKysgKQorICAgIHsKKyAgICAgIGlmICggeSA+IDAgKQorICAgICAgeworICAgICAgICB4dGVtcCAgPSB4ICsgKCAoIHkgKyBiICkgPj4gaSApOworICAgICAgICB5ICAgICAgPSB5IC0gKCAoIHggKyBiICkgPj4gaSApOworICAgICAgICB4ICAgICAgPSB4dGVtcDsKKyAgICAgICAgdGhldGEgKz0gKmFyY3RhbnB0cisrOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICB4dGVtcCAgPSB4IC0gKCAoIHkgKyBiICkgPj4gaSApOworICAgICAgICB5ICAgICAgPSB5ICsgKCAoIHggKyBiICkgPj4gaSApOworICAgICAgICB4ICAgICAgPSB4dGVtcDsKKyAgICAgICAgdGhldGEgLT0gKmFyY3RhbnB0cisrOworICAgICAgfQorICAgIH0KKworICAgIC8qIHJvdW5kIHRoZXRhICovCisgICAgaWYgKCB0aGV0YSA+PSAwICkKKyAgICAgIHRoZXRhID0gRlRfUEFEX1JPVU5EKCB0aGV0YSwgMzIgKTsKKyAgICBlbHNlCisgICAgICB0aGV0YSA9IC1GVF9QQURfUk9VTkQoIC10aGV0YSwgMzIgKTsKKworICAgIHZlYy0+eCA9IHg7CisgICAgdmVjLT55ID0gdGhldGE7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnR0cmlnb24uaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0ZpeGVkICkKKyAgRlRfQ29zKCBGVF9BbmdsZSAgYW5nbGUgKQorICB7CisgICAgRlRfVmVjdG9yICB2OworCisKKyAgICB2LnggPSBGVF9UUklHX1NDQUxFID4+IDg7CisgICAgdi55ID0gMDsKKyAgICBmdF90cmlnX3BzZXVkb19yb3RhdGUoICZ2LCBhbmdsZSApOworCisgICAgcmV0dXJuICggdi54ICsgMHg4MEwgKSA+PiA4OworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0dHJpZ29uLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9GaXhlZCApCisgIEZUX1NpbiggRlRfQW5nbGUgIGFuZ2xlICkKKyAgeworICAgIHJldHVybiBGVF9Db3MoIEZUX0FOR0xFX1BJMiAtIGFuZ2xlICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnR0cmlnb24uaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0ZpeGVkICkKKyAgRlRfVGFuKCBGVF9BbmdsZSAgYW5nbGUgKQorICB7CisgICAgRlRfVmVjdG9yICB2OworCisKKyAgICB2LnggPSBGVF9UUklHX1NDQUxFID4+IDg7CisgICAgdi55ID0gMDsKKyAgICBmdF90cmlnX3BzZXVkb19yb3RhdGUoICZ2LCBhbmdsZSApOworCisgICAgcmV0dXJuIEZUX0RpdkZpeCggdi55LCB2LnggKTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHRyaWdvbi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfQW5nbGUgKQorICBGVF9BdGFuMiggRlRfRml4ZWQgIGR4LAorICAgICAgICAgICAgRlRfRml4ZWQgIGR5ICkKKyAgeworICAgIEZUX1ZlY3RvciAgdjsKKworCisgICAgaWYgKCBkeCA9PSAwICYmIGR5ID09IDAgKQorICAgICAgcmV0dXJuIDA7CisKKyAgICB2LnggPSBkeDsKKyAgICB2LnkgPSBkeTsKKyAgICBmdF90cmlnX3ByZW5vcm0oICZ2ICk7CisgICAgZnRfdHJpZ19wc2V1ZG9fcG9sYXJpemUoICZ2ICk7CisKKyAgICByZXR1cm4gdi55OworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0dHJpZ29uLmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfVmVjdG9yX1VuaXQoIEZUX1ZlY3RvciogIHZlYywKKyAgICAgICAgICAgICAgICAgIEZUX0FuZ2xlICAgIGFuZ2xlICkKKyAgeworICAgIHZlYy0+eCA9IEZUX1RSSUdfU0NBTEUgPj4gODsKKyAgICB2ZWMtPnkgPSAwOworICAgIGZ0X3RyaWdfcHNldWRvX3JvdGF0ZSggdmVjLCBhbmdsZSApOworICAgIHZlYy0+eCA9ICggdmVjLT54ICsgMHg4MEwgKSA+PiA4OworICAgIHZlYy0+eSA9ICggdmVjLT55ICsgMHg4MEwgKSA+PiA4OworICB9CisKKworICAvKiB0aGVzZSBtYWNyb3MgcmV0dXJuIDAgZm9yIHBvc2l0aXZlIG51bWJlcnMsCisgICAgIGFuZCAtMSBmb3IgbmVnYXRpdmUgb25lcyAqLworI2RlZmluZSBGVF9TSUdOX0xPTkcoIHggKSAgICggKHgpID4+ICggRlRfU0laRU9GX0xPTkcgKiA4IC0gMSApICkKKyNkZWZpbmUgRlRfU0lHTl9JTlQoIHggKSAgICAoICh4KSA+PiAoIEZUX1NJWkVPRl9JTlQgKiA4IC0gMSApICkKKyNkZWZpbmUgRlRfU0lHTl9JTlQzMiggeCApICAoICh4KSA+PiAzMSApCisjZGVmaW5lIEZUX1NJR05fSU5UMTYoIHggKSAgKCAoeCkgPj4gMTUgKQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHRyaWdvbi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX1ZlY3Rvcl9Sb3RhdGUoIEZUX1ZlY3RvciogIHZlYywKKyAgICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAgYW5nbGUgKQorICB7CisgICAgRlRfSW50ICAgICBzaGlmdDsKKyAgICBGVF9WZWN0b3IgIHY7CisKKworICAgIHYueCAgID0gdmVjLT54OworICAgIHYueSAgID0gdmVjLT55OworCisgICAgaWYgKCBhbmdsZSAmJiAoIHYueCAhPSAwIHx8IHYueSAhPSAwICkgKQorICAgIHsKKyAgICAgIHNoaWZ0ID0gZnRfdHJpZ19wcmVub3JtKCAmdiApOworICAgICAgZnRfdHJpZ19wc2V1ZG9fcm90YXRlKCAmdiwgYW5nbGUgKTsKKyAgICAgIHYueCA9IGZ0X3RyaWdfZG93bnNjYWxlKCB2LnggKTsKKyAgICAgIHYueSA9IGZ0X3RyaWdfZG93bnNjYWxlKCB2LnkgKTsKKworICAgICAgaWYgKCBzaGlmdCA+IDAgKQorICAgICAgeworICAgICAgICBGVF9JbnQzMiAgaGFsZiA9IChGVF9JbnQzMikxTCA8PCAoIHNoaWZ0IC0gMSApOworCisKKyAgICAgICAgdmVjLT54ID0gKCB2LnggKyBoYWxmICsgRlRfU0lHTl9MT05HKCB2LnggKSApID4+IHNoaWZ0OworICAgICAgICB2ZWMtPnkgPSAoIHYueSArIGhhbGYgKyBGVF9TSUdOX0xPTkcoIHYueSApICkgPj4gc2hpZnQ7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHNoaWZ0ICA9IC1zaGlmdDsKKyAgICAgICAgdmVjLT54ID0gKEZUX1BvcykoIChGVF9VTG9uZyl2LnggPDwgc2hpZnQgKTsKKyAgICAgICAgdmVjLT55ID0gKEZUX1BvcykoIChGVF9VTG9uZyl2LnkgPDwgc2hpZnQgKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnR0cmlnb24uaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0ZpeGVkICkKKyAgRlRfVmVjdG9yX0xlbmd0aCggRlRfVmVjdG9yKiAgdmVjICkKKyAgeworICAgIEZUX0ludCAgICAgc2hpZnQ7CisgICAgRlRfVmVjdG9yICB2OworCisKKyAgICB2ID0gKnZlYzsKKworICAgIC8qIGhhbmRsZSB0cml2aWFsIGNhc2VzICovCisgICAgaWYgKCB2LnggPT0gMCApCisgICAgeworICAgICAgcmV0dXJuIEZUX0FCUyggdi55ICk7CisgICAgfQorICAgIGVsc2UgaWYgKCB2LnkgPT0gMCApCisgICAgeworICAgICAgcmV0dXJuIEZUX0FCUyggdi54ICk7CisgICAgfQorCisgICAgLyogZ2VuZXJhbCBjYXNlICovCisgICAgc2hpZnQgPSBmdF90cmlnX3ByZW5vcm0oICZ2ICk7CisgICAgZnRfdHJpZ19wc2V1ZG9fcG9sYXJpemUoICZ2ICk7CisKKyAgICB2LnggPSBmdF90cmlnX2Rvd25zY2FsZSggdi54ICk7CisKKyAgICBpZiAoIHNoaWZ0ID4gMCApCisgICAgICByZXR1cm4gKCB2LnggKyAoIDEgPDwgKCBzaGlmdCAtIDEgKSApICkgPj4gc2hpZnQ7CisKKyAgICByZXR1cm4gKEZUX0ZpeGVkKSggKEZUX1VJbnQzMil2LnggPDwgLXNoaWZ0ICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnR0cmlnb24uaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9WZWN0b3JfUG9sYXJpemUoIEZUX1ZlY3RvciogIHZlYywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfQW5nbGUgICAqYW5nbGUgKQorICB7CisgICAgRlRfSW50ICAgICBzaGlmdDsKKyAgICBGVF9WZWN0b3IgIHY7CisKKworICAgIHYgPSAqdmVjOworCisgICAgaWYgKCB2LnggPT0gMCAmJiB2LnkgPT0gMCApCisgICAgICByZXR1cm47CisKKyAgICBzaGlmdCA9IGZ0X3RyaWdfcHJlbm9ybSggJnYgKTsKKyAgICBmdF90cmlnX3BzZXVkb19wb2xhcml6ZSggJnYgKTsKKworICAgIHYueCA9IGZ0X3RyaWdfZG93bnNjYWxlKCB2LnggKTsKKworICAgICpsZW5ndGggPSAoIHNoaWZ0ID49IDAgKSA/ICAgICAgICAgICAgICAgICAgICAgICggdi54ID4+ICBzaGlmdCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKEZUX0ZpeGVkKSggKEZUX1VJbnQzMil2LnggPDwgLXNoaWZ0ICk7CisgICAgKmFuZ2xlICA9IHYueTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHRyaWdvbi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyKCBGVF9WZWN0b3IqICB2ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgICBhbmdsZSApCisgIHsKKyAgICB2ZWMtPnggPSBsZW5ndGg7CisgICAgdmVjLT55ID0gMDsKKworICAgIEZUX1ZlY3Rvcl9Sb3RhdGUoIHZlYywgYW5nbGUgKTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdHRyaWdvbi5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfQW5nbGUgKQorICBGVF9BbmdsZV9EaWZmKCBGVF9BbmdsZSAgYW5nbGUxLAorICAgICAgICAgICAgICAgICBGVF9BbmdsZSAgYW5nbGUyICkKKyAgeworICAgIEZUX0FuZ2xlICBkZWx0YSA9IGFuZ2xlMiAtIGFuZ2xlMTsKKworCisgICAgZGVsdGEgJT0gRlRfQU5HTEVfMlBJOworICAgIGlmICggZGVsdGEgPCAwICkKKyAgICAgIGRlbHRhICs9IEZUX0FOR0xFXzJQSTsKKworICAgIGlmICggZGVsdGEgPiBGVF9BTkdMRV9QSSApCisgICAgICBkZWx0YSAtPSBGVF9BTkdMRV8yUEk7CisKKyAgICByZXR1cm4gZGVsdGE7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHR5cGUxLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnR0eXBlMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MTY3YjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnR0eXBlMS5jCkBAIC0wLDAgKzEsMTIwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHR5cGUxLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgdXRpbGl0eSBmaWxlIGZvciBQUyBuYW1lcyBzdXBwb3J0IChib2R5KS4gICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDItMjAwNCwgMjAxMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2luZm8uaCIKKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gdDF0YWJsZXMuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfR2V0X1BTX0ZvbnRfSW5mbyggRlRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBQU19Gb250SW5mb1JlYyogIGFmb250X2luZm8gKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRVJSKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKworICAgIGlmICggZmFjZSApCisgICAgeworICAgICAgRlRfU2VydmljZV9Qc0luZm8gIHNlcnZpY2UgPSBOVUxMOworCisKKyAgICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBQT1NUU0NSSVBUX0lORk8gKTsKKworICAgICAgaWYgKCBzZXJ2aWNlICYmIHNlcnZpY2UtPnBzX2dldF9mb250X2luZm8gKQorICAgICAgICBlcnJvciA9IHNlcnZpY2UtPnBzX2dldF9mb250X2luZm8oIGZhY2UsIGFmb250X2luZm8gKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gdDF0YWJsZXMuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0ludCApCisgIEZUX0hhc19QU19HbHlwaF9OYW1lcyggRlRfRmFjZSAgZmFjZSApCisgIHsKKyAgICBGVF9JbnQgICAgICAgICAgICAgcmVzdWx0ICA9IDA7CisgICAgRlRfU2VydmljZV9Qc0luZm8gIHNlcnZpY2UgPSBOVUxMOworCisKKyAgICBpZiAoIGZhY2UgKQorICAgIHsKKyAgICAgIEZUX0ZBQ0VfRklORF9TRVJWSUNFKCBmYWNlLCBzZXJ2aWNlLCBQT1NUU0NSSVBUX0lORk8gKTsKKworICAgICAgaWYgKCBzZXJ2aWNlICYmIHNlcnZpY2UtPnBzX2hhc19nbHlwaF9uYW1lcyApCisgICAgICAgIHJlc3VsdCA9IHNlcnZpY2UtPnBzX2hhc19nbHlwaF9uYW1lcyggZmFjZSApOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gdDF0YWJsZXMuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfR2V0X1BTX0ZvbnRfUHJpdmF0ZSggRlRfRmFjZSAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBTX1ByaXZhdGVSZWMqICBhZm9udF9wcml2YXRlICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0VSUiggSW52YWxpZF9Bcmd1bWVudCApOworCisKKyAgICBpZiAoIGZhY2UgKQorICAgIHsKKyAgICAgIEZUX1NlcnZpY2VfUHNJbmZvICBzZXJ2aWNlID0gTlVMTDsKKworCisgICAgICBGVF9GQUNFX0ZJTkRfU0VSVklDRSggZmFjZSwgc2VydmljZSwgUE9TVFNDUklQVF9JTkZPICk7CisKKyAgICAgIGlmICggc2VydmljZSAmJiBzZXJ2aWNlLT5wc19nZXRfZm9udF9wcml2YXRlICkKKyAgICAgICAgZXJyb3IgPSBzZXJ2aWNlLT5wc19nZXRfZm9udF9wcml2YXRlKCBmYWNlLCBhZm9udF9wcml2YXRlICk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIHQxdGFibGVzLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9Mb25nICkKKyAgRlRfR2V0X1BTX0ZvbnRfVmFsdWUoIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBTX0RpY3RfS2V5cyAga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICAgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICB2YWx1ZV9sZW4gKQorICB7CisgICAgRlRfSW50ICAgICAgICAgICAgIHJlc3VsdCAgPSAwOworICAgIEZUX1NlcnZpY2VfUHNJbmZvICBzZXJ2aWNlID0gTlVMTDsKKworCisgICAgaWYgKCBmYWNlICkKKyAgICB7CisgICAgICBGVF9GQUNFX0ZJTkRfU0VSVklDRSggZmFjZSwgc2VydmljZSwgUE9TVFNDUklQVF9JTkZPICk7CisKKyAgICAgIGlmICggc2VydmljZSAmJiBzZXJ2aWNlLT5wc19nZXRfZm9udF92YWx1ZSApCisgICAgICAgIHJlc3VsdCA9IHNlcnZpY2UtPnBzX2dldF9mb250X3ZhbHVlKCBmYWNlLCBrZXksIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCB2YWx1ZV9sZW4gKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnR1dGlsLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnR1dGlsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMwYjkxNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHV0aWwuYwpAQCAtMCwwICsxLDU0OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnR1dGlsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIHV0aWxpdHkgZmlsZSBmb3IgbWVtb3J5IGFuZCBsaXN0IG1hbmFnZW1lbnQgKGJvZHkpLiAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLCAyMDA0LTIwMDcsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRsaXN0LmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9tZW1vcnkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgTSBFIE0gTyBSIFkgICBNIEEgTiBBIEcgRSBNIEUgTiBUICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIEZUX0JBU0VfREVGKCBGVF9Qb2ludGVyICkKKyAgZnRfbWVtX2FsbG9jKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICBGVF9Mb25nICAgIHNpemUsCisgICAgICAgICAgICAgICAgRlRfRXJyb3IgICpwX2Vycm9yICkKKyAgeworICAgIEZUX0Vycm9yICAgIGVycm9yOworICAgIEZUX1BvaW50ZXIgIGJsb2NrID0gZnRfbWVtX3FhbGxvYyggbWVtb3J5LCBzaXplLCAmZXJyb3IgKTsKKworICAgIGlmICggIWVycm9yICYmIHNpemUgPiAwICkKKyAgICAgIEZUX01FTV9aRVJPKCBibG9jaywgc2l6ZSApOworCisgICAgKnBfZXJyb3IgPSBlcnJvcjsKKyAgICByZXR1cm4gYmxvY2s7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9Qb2ludGVyICkKKyAgZnRfbWVtX3FhbGxvYyggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgRlRfRXJyb3IgICpwX2Vycm9yICkKKyAgeworICAgIEZUX0Vycm9yICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX1BvaW50ZXIgIGJsb2NrID0gTlVMTDsKKworCisgICAgaWYgKCBzaXplID4gMCApCisgICAgeworICAgICAgYmxvY2sgPSBtZW1vcnktPmFsbG9jKCBtZW1vcnksIHNpemUgKTsKKyAgICAgIGlmICggYmxvY2sgPT0gTlVMTCApCisgICAgICAgIGVycm9yID0gRlRfVEhST1coIE91dF9PZl9NZW1vcnkgKTsKKyAgICB9CisgICAgZWxzZSBpZiAoIHNpemUgPCAwICkKKyAgICB7CisgICAgICAvKiBtYXkgaGVscCBjYXRjaC9wcmV2ZW50IHNlY3VyaXR5IGlzc3VlcyAqLworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgIH0KKworICAgICpwX2Vycm9yID0gZXJyb3I7CisgICAgcmV0dXJuIGJsb2NrOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfUG9pbnRlciApCisgIGZ0X21lbV9yZWFsbG9jKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgaXRlbV9zaXplLAorICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBjdXJfY291bnQsCisgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIG5ld19jb3VudCwKKyAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgYmxvY2ssCisgICAgICAgICAgICAgICAgICBGVF9FcnJvciAgKnBfZXJyb3IgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICBibG9jayA9IGZ0X21lbV9xcmVhbGxvYyggbWVtb3J5LCBpdGVtX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl9jb3VudCwgbmV3X2NvdW50LCBibG9jaywgJmVycm9yICk7CisgICAgaWYgKCAhZXJyb3IgJiYgbmV3X2NvdW50ID4gY3VyX2NvdW50ICkKKyAgICAgIEZUX01FTV9aRVJPKCAoY2hhciopYmxvY2sgKyBjdXJfY291bnQgKiBpdGVtX3NpemUsCisgICAgICAgICAgICAgICAgICAgKCBuZXdfY291bnQgLSBjdXJfY291bnQgKSAqIGl0ZW1fc2l6ZSApOworCisgICAgKnBfZXJyb3IgPSBlcnJvcjsKKyAgICByZXR1cm4gYmxvY2s7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9Qb2ludGVyICkKKyAgZnRfbWVtX3FyZWFsbG9jKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGl0ZW1fc2l6ZSwKKyAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGN1cl9jb3VudCwKKyAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIG5ld19jb3VudCwKKyAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgIGJsb2NrLAorICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yICAqcF9lcnJvciApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIC8qIE5vdGUgdGhhdCB3ZSBub3cgYWNjZXB0IGBpdGVtX3NpemUgPT0gMCcgYXMgYSB2YWxpZCBwYXJhbWV0ZXIsIGluCisgICAgICogb3JkZXIgdG8gY292ZXIgdmVyeSB3ZWlyZCBjYXNlcyB3aGVyZSBhbiBBTExPQ19NVUxUIG1hY3JvIHdvdWxkIGJlCisgICAgICogY2FsbGVkLgorICAgICAqLworICAgIGlmICggY3VyX2NvdW50IDwgMCB8fCBuZXdfY291bnQgPCAwIHx8IGl0ZW1fc2l6ZSA8IDAgKQorICAgIHsKKyAgICAgIC8qIG1heSBoZWxwIGNhdGNoL3ByZXZlbnQgbmFzdHkgc2VjdXJpdHkgaXNzdWVzICovCisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgfQorICAgIGVsc2UgaWYgKCBuZXdfY291bnQgPT0gMCB8fCBpdGVtX3NpemUgPT0gMCApCisgICAgeworICAgICAgZnRfbWVtX2ZyZWUoIG1lbW9yeSwgYmxvY2sgKTsKKyAgICAgIGJsb2NrID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoIG5ld19jb3VudCA+IEZUX0lOVF9NQVgvaXRlbV9zaXplICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBBcnJheV9Ub29fTGFyZ2UgKTsKKyAgICB9CisgICAgZWxzZSBpZiAoIGN1cl9jb3VudCA9PSAwICkKKyAgICB7CisgICAgICBGVF9BU1NFUlQoIGJsb2NrID09IE5VTEwgKTsKKworICAgICAgYmxvY2sgPSBmdF9tZW1fYWxsb2MoIG1lbW9yeSwgbmV3X2NvdW50Kml0ZW1fc2l6ZSwgJmVycm9yICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBGVF9Qb2ludGVyICBibG9jazI7CisgICAgICBGVF9Mb25nICAgICBjdXJfc2l6ZSA9IGN1cl9jb3VudCppdGVtX3NpemU7CisgICAgICBGVF9Mb25nICAgICBuZXdfc2l6ZSA9IG5ld19jb3VudCppdGVtX3NpemU7CisKKworICAgICAgYmxvY2syID0gbWVtb3J5LT5yZWFsbG9jKCBtZW1vcnksIGN1cl9zaXplLCBuZXdfc2l6ZSwgYmxvY2sgKTsKKyAgICAgIGlmICggYmxvY2syID09IE5VTEwgKQorICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBPdXRfT2ZfTWVtb3J5ICk7CisgICAgICBlbHNlCisgICAgICAgIGJsb2NrID0gYmxvY2syOworICAgIH0KKworICAgICpwX2Vycm9yID0gZXJyb3I7CisgICAgcmV0dXJuIGJsb2NrOworICB9CisKKyAgI2lmZGVmIF9YWVFfTUVNX0RFQlVHCS8qKiBYWVEgMjAwNi0xMC0xMiAqLworICBGVF9CQVNFX0RFRiggRlRfUG9pbnRlciApCisgIGZ0X21lbV9hbGxvY2RlYnVnKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICBGVF9Mb25nICAgIHNpemUsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAorICAgICAgICAgICAgICAgIEZUX0Vycm9yICAqcF9lcnJvciApCisgIHsKKyAgICBGVF9FcnJvciAgICBlcnJvcjsKKyAgICBGVF9Qb2ludGVyICBibG9jayA9IGZ0X21lbV9xYWxsb2NkZWJ1ZyggbWVtb3J5LCBzaXplLCBmaWxlLCBsaW5lLCAmZXJyb3IgKTsKKworICAgIGlmICggIWVycm9yICYmIHNpemUgPiAwICkKKyAgICAgIEZUX01FTV9aRVJPKCBibG9jaywgc2l6ZSApOworCisgICAgKnBfZXJyb3IgPSBlcnJvcjsKKyAgICByZXR1cm4gYmxvY2s7CisgIH0KKworCisgIEZUX0JBU0VfREVGKCBGVF9Qb2ludGVyICkKKyAgZnRfbWVtX3FhbGxvY2RlYnVnKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBzaXplLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwKKyAgICAgICAgICAgICAgICAgRlRfRXJyb3IgICpwX2Vycm9yICkKKyAgeworICAgIEZUX0Vycm9yICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX1BvaW50ZXIgIGJsb2NrID0gTlVMTDsKKworCisgICAgaWYgKCBzaXplID4gMCApCisgICAgeworICAgICAgYmxvY2sgPSBtZW1vcnktPmFsbG9jZGVidWcoIG1lbW9yeSwgc2l6ZSwgZmlsZSwgbGluZSApOworICAgICAgaWYgKCBibG9jayA9PSBOVUxMICkKKyAgICAgICAgZXJyb3IgPSBGVF9FcnJfT3V0X09mX01lbW9yeTsKKyAgICB9CisgICAgZWxzZSBpZiAoIHNpemUgPCAwICkKKyAgICB7CisgICAgICAvKiBtYXkgaGVscCBjYXRjaC9wcmV2ZW50IHNlY3VyaXR5IGlzc3VlcyAqLworICAgICAgZXJyb3IgPSBGVF9FcnJfSW52YWxpZF9Bcmd1bWVudDsKKyAgICB9CisKKyAgICAqcF9lcnJvciA9IGVycm9yOworICAgIHJldHVybiBibG9jazsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX1BvaW50ZXIgKQorICBmdF9tZW1fcmVhbGxvY2RlYnVnKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgaXRlbV9zaXplLAorICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBjdXJfY291bnQsCisgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIG5ld19jb3VudCwKKyAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgYmxvY2ssIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAorICAgICAgICAgICAgICAgICAgRlRfRXJyb3IgICpwX2Vycm9yICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKworICAgIGJsb2NrID0gZnRfbWVtX3FyZWFsbG9jZGVidWcoIG1lbW9yeSwgaXRlbV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfY291bnQsIG5ld19jb3VudCwgYmxvY2ssIGZpbGUsIGxpbmUsICZlcnJvciApOworICAgIGlmICggIWVycm9yICYmIG5ld19jb3VudCA+IGN1cl9jb3VudCApCisgICAgICBGVF9NRU1fWkVSTyggKGNoYXIqKWJsb2NrICsgY3VyX2NvdW50ICogaXRlbV9zaXplLAorICAgICAgICAgICAgICAgICAgICggbmV3X2NvdW50IC0gY3VyX2NvdW50ICkgKiBpdGVtX3NpemUgKTsKKworICAgICpwX2Vycm9yID0gZXJyb3I7CisgICAgcmV0dXJuIGJsb2NrOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfUG9pbnRlciApCisgIGZ0X21lbV9xcmVhbGxvY2RlYnVnKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGl0ZW1fc2l6ZSwKKyAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGN1cl9jb3VudCwKKyAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIG5ld19jb3VudCwKKyAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgIGJsb2NrLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwKKyAgICAgICAgICAgICAgICAgICBGVF9FcnJvciAgKnBfZXJyb3IgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICBpZiAoIGN1cl9jb3VudCA8IDAgfHwgbmV3X2NvdW50IDwgMCB8fCBpdGVtX3NpemUgPD0gMCApCisgICAgeworICAgICAgLyogbWF5IGhlbHAgY2F0Y2gvcHJldmVudCBuYXN0eSBzZWN1cml0eSBpc3N1ZXMgKi8KKyAgICAgIGVycm9yID0gRlRfRXJyX0ludmFsaWRfQXJndW1lbnQ7CisgICAgfQorICAgIGVsc2UgaWYgKCBuZXdfY291bnQgPT0gMCApCisgICAgeworICAgICAgZnRfbWVtX2ZyZWUoIG1lbW9yeSwgYmxvY2sgKTsKKyAgICAgIGJsb2NrID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoIG5ld19jb3VudCA+IEZUX0lOVF9NQVgvaXRlbV9zaXplICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX0Vycl9BcnJheV9Ub29fTGFyZ2U7CisgICAgfQorICAgIGVsc2UgaWYgKCBjdXJfY291bnQgPT0gMCApCisgICAgeworICAgICAgRlRfQVNTRVJUKCBibG9jayA9PSBOVUxMICk7CisKKyAgICAgIGJsb2NrID0gZnRfbWVtX2FsbG9jZGVidWcoIG1lbW9yeSwgbmV3X2NvdW50Kml0ZW1fc2l6ZSwgZmlsZSwgbGluZSwgJmVycm9yICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBGVF9Qb2ludGVyICBibG9jazI7CisgICAgICBGVF9Mb25nICAgICBjdXJfc2l6ZSA9IGN1cl9jb3VudCppdGVtX3NpemU7CisgICAgICBGVF9Mb25nICAgICBuZXdfc2l6ZSA9IG5ld19jb3VudCppdGVtX3NpemU7CisKKworICAgICAgYmxvY2syID0gbWVtb3J5LT5yZWFsbG9jKCBtZW1vcnksIGN1cl9zaXplLCBuZXdfc2l6ZSwgYmxvY2sgKTsKKyAgICAgIGlmICggYmxvY2syID09IE5VTEwgKQorICAgICAgICBlcnJvciA9IEZUX0Vycl9PdXRfT2ZfTWVtb3J5OworICAgICAgZWxzZQorICAgICAgICBibG9jayA9IGJsb2NrMjsKKyAgICB9CisKKyAgICAqcF9lcnJvciA9IGVycm9yOworICAgIHJldHVybiBibG9jazsKKyAgfQorI2VuZGlmCisgIEZUX0JBU0VfREVGKCB2b2lkICkKKyAgZnRfbWVtX2ZyZWUoIEZUX01lbW9yeSAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKlAgKQorICB7CisgICAgaWYgKCBQICkKKyAgICAgIG1lbW9yeS0+ZnJlZSggbWVtb3J5LCAodm9pZCopUCApOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfUG9pbnRlciApCisgIGZ0X21lbV9kdXAoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICBhZGRyZXNzLAorICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgRlRfRXJyb3IgICAgKnBfZXJyb3IgKQorICB7CisgICAgRlRfRXJyb3IgICAgZXJyb3I7CisgICAgRlRfUG9pbnRlciAgcCA9IGZ0X21lbV9xYWxsb2MoIG1lbW9yeSwgc2l6ZSwgJmVycm9yICk7CisKKworICAgIGlmICggIWVycm9yICYmIGFkZHJlc3MgKQorICAgICAgZnRfbWVtY3B5KCBwLCBhZGRyZXNzLCBzaXplICk7CisKKyAgICAqcF9lcnJvciA9IGVycm9yOworICAgIHJldHVybiBwOworICB9CisKKworICBGVF9CQVNFX0RFRiggRlRfUG9pbnRlciApCisgIGZ0X21lbV9zdHJkdXAoIEZUX01lbW9yeSAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBzdHIsCisgICAgICAgICAgICAgICAgIEZUX0Vycm9yICAgICpwX2Vycm9yICkKKyAgeworICAgIEZUX1VMb25nICBsZW4gPSBzdHIgPyAoRlRfVUxvbmcpZnRfc3RybGVuKCBzdHIgKSArIDEKKyAgICAgICAgICAgICAgICAgICAgICAgIDogMDsKKworCisgICAgcmV0dXJuIGZ0X21lbV9kdXAoIG1lbW9yeSwgc3RyLCBsZW4sIHBfZXJyb3IgKTsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX0ludCApCisgIGZ0X21lbV9zdHJjcHluKCBjaGFyKiAgICAgICAgZHN0LAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIHNyYywKKyAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICBzaXplICkKKyAgeworICAgIHdoaWxlICggc2l6ZSA+IDEgJiYgKnNyYyAhPSAwICkKKyAgICB7CisgICAgICAqZHN0KysgPSAqc3JjKys7CisgICAgICBzaXplLS07CisgICAgfQorCisgICAgKmRzdCA9IDA7ICAvKiBhbHdheXMgemVyby10ZXJtaW5hdGUgKi8KKworICAgIHJldHVybiAqc3JjICE9IDA7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgRCBPIFUgQiBMIFkgICBMIEkgTiBLIEUgRCAgIEwgSSBTIFQgUyAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9saXN0CisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGxpc3QuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0xpc3ROb2RlICkKKyAgRlRfTGlzdF9GaW5kKCBGVF9MaXN0ICBsaXN0LAorICAgICAgICAgICAgICAgIHZvaWQqICAgIGRhdGEgKQorICB7CisgICAgRlRfTGlzdE5vZGUgIGN1cjsKKworCisgICAgY3VyID0gbGlzdC0+aGVhZDsKKyAgICB3aGlsZSAoIGN1ciApCisgICAgeworICAgICAgaWYgKCBjdXItPmRhdGEgPT0gZGF0YSApCisgICAgICAgIHJldHVybiBjdXI7CisKKyAgICAgIGN1ciA9IGN1ci0+bmV4dDsKKyAgICB9CisKKyAgICByZXR1cm4gKEZUX0xpc3ROb2RlKTA7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRsaXN0LmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfTGlzdF9BZGQoIEZUX0xpc3QgICAgICBsaXN0LAorICAgICAgICAgICAgICAgRlRfTGlzdE5vZGUgIG5vZGUgKQorICB7CisgICAgRlRfTGlzdE5vZGUgIGJlZm9yZSA9IGxpc3QtPnRhaWw7CisKKworICAgIG5vZGUtPm5leHQgPSAwOworICAgIG5vZGUtPnByZXYgPSBiZWZvcmU7CisKKyAgICBpZiAoIGJlZm9yZSApCisgICAgICBiZWZvcmUtPm5leHQgPSBub2RlOworICAgIGVsc2UKKyAgICAgIGxpc3QtPmhlYWQgPSBub2RlOworCisgICAgbGlzdC0+dGFpbCA9IG5vZGU7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRsaXN0LmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfTGlzdF9JbnNlcnQoIEZUX0xpc3QgICAgICBsaXN0LAorICAgICAgICAgICAgICAgICAgRlRfTGlzdE5vZGUgIG5vZGUgKQorICB7CisgICAgRlRfTGlzdE5vZGUgIGFmdGVyID0gbGlzdC0+aGVhZDsKKworCisgICAgbm9kZS0+bmV4dCA9IGFmdGVyOworICAgIG5vZGUtPnByZXYgPSAwOworCisgICAgaWYgKCAhYWZ0ZXIgKQorICAgICAgbGlzdC0+dGFpbCA9IG5vZGU7CisgICAgZWxzZQorICAgICAgYWZ0ZXItPnByZXYgPSBub2RlOworCisgICAgbGlzdC0+aGVhZCA9IG5vZGU7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRsaXN0LmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfTGlzdF9SZW1vdmUoIEZUX0xpc3QgICAgICBsaXN0LAorICAgICAgICAgICAgICAgICAgRlRfTGlzdE5vZGUgIG5vZGUgKQorICB7CisgICAgRlRfTGlzdE5vZGUgIGJlZm9yZSwgYWZ0ZXI7CisKKworICAgIGJlZm9yZSA9IG5vZGUtPnByZXY7CisgICAgYWZ0ZXIgID0gbm9kZS0+bmV4dDsKKworICAgIGlmICggYmVmb3JlICkKKyAgICAgIGJlZm9yZS0+bmV4dCA9IGFmdGVyOworICAgIGVsc2UKKyAgICAgIGxpc3QtPmhlYWQgPSBhZnRlcjsKKworICAgIGlmICggYWZ0ZXIgKQorICAgICAgYWZ0ZXItPnByZXYgPSBiZWZvcmU7CisgICAgZWxzZQorICAgICAgbGlzdC0+dGFpbCA9IGJlZm9yZTsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGxpc3QuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIHZvaWQgKQorICBGVF9MaXN0X1VwKCBGVF9MaXN0ICAgICAgbGlzdCwKKyAgICAgICAgICAgICAgRlRfTGlzdE5vZGUgIG5vZGUgKQorICB7CisgICAgRlRfTGlzdE5vZGUgIGJlZm9yZSwgYWZ0ZXI7CisKKworICAgIGJlZm9yZSA9IG5vZGUtPnByZXY7CisgICAgYWZ0ZXIgID0gbm9kZS0+bmV4dDsKKworICAgIC8qIGNoZWNrIHdoZXRoZXIgd2UgYXJlIGFscmVhZHkgb24gdG9wIG9mIHRoZSBsaXN0ICovCisgICAgaWYgKCAhYmVmb3JlICkKKyAgICAgIHJldHVybjsKKworICAgIGJlZm9yZS0+bmV4dCA9IGFmdGVyOworCisgICAgaWYgKCBhZnRlciApCisgICAgICBhZnRlci0+cHJldiA9IGJlZm9yZTsKKyAgICBlbHNlCisgICAgICBsaXN0LT50YWlsID0gYmVmb3JlOworCisgICAgbm9kZS0+cHJldiAgICAgICA9IDA7CisgICAgbm9kZS0+bmV4dCAgICAgICA9IGxpc3QtPmhlYWQ7CisgICAgbGlzdC0+aGVhZC0+cHJldiA9IG5vZGU7CisgICAgbGlzdC0+aGVhZCAgICAgICA9IG5vZGU7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRsaXN0LmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0xpc3RfSXRlcmF0ZSggRlRfTGlzdCAgICAgICAgICAgIGxpc3QsCisgICAgICAgICAgICAgICAgICAgRlRfTGlzdF9JdGVyYXRvciAgIGl0ZXJhdG9yLAorICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgICB1c2VyICkKKyAgeworICAgIEZUX0xpc3ROb2RlICBjdXIgICA9IGxpc3QtPmhlYWQ7CisgICAgRlRfRXJyb3IgICAgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICB3aGlsZSAoIGN1ciApCisgICAgeworICAgICAgRlRfTGlzdE5vZGUgIG5leHQgPSBjdXItPm5leHQ7CisKKworICAgICAgZXJyb3IgPSBpdGVyYXRvciggY3VyLCB1c2VyICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGN1ciA9IG5leHQ7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0bGlzdC5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX0xpc3RfRmluYWxpemUoIEZUX0xpc3QgICAgICAgICAgICAgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgRlRfTGlzdF9EZXN0cnVjdG9yICBkZXN0cm95LAorICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICAgICAgICB1c2VyICkKKyAgeworICAgIEZUX0xpc3ROb2RlICBjdXI7CisKKworICAgIGN1ciA9IGxpc3QtPmhlYWQ7CisgICAgd2hpbGUgKCBjdXIgKQorICAgIHsKKyAgICAgIEZUX0xpc3ROb2RlICBuZXh0ID0gY3VyLT5uZXh0OworICAgICAgdm9pZCogICAgICAgIGRhdGEgPSBjdXItPmRhdGE7CisKKworICAgICAgaWYgKCBkZXN0cm95ICkKKyAgICAgICAgZGVzdHJveSggbWVtb3J5LCBkYXRhLCB1c2VyICk7CisKKyAgICAgIEZUX0ZSRUUoIGN1ciApOworICAgICAgY3VyID0gbmV4dDsKKyAgICB9CisKKyAgICBsaXN0LT5oZWFkID0gMDsKKyAgICBsaXN0LT50YWlsID0gMDsKKyAgfQorCisKKyAgRlRfQkFTRV9ERUYoIEZUX1VJbnQzMiApCisgIGZ0X2hpZ2hwb3cyKCBGVF9VSW50MzIgIHZhbHVlICkKKyAgeworICAgIEZUX1VJbnQzMiAgdmFsdWUyOworCisKKyAgICAvKgorICAgICAqICBXZSBzaW1wbHkgY2xlYXIgdGhlIGxvd2VzdCBiaXQgaW4gZWFjaCBpdGVyYXRpb24uICBXaGVuCisgICAgICogIHdlIHJlYWNoIDAsIHdlIGtub3cgdGhhdCB0aGUgcHJldmlvdXMgdmFsdWUgd2FzIG91ciByZXN1bHQuCisgICAgICovCisgICAgZm9yICggOzsgKQorICAgIHsKKyAgICAgIHZhbHVlMiA9IHZhbHVlICYgKHZhbHVlIC0gMSk7ICAvKiBjbGVhciBsb3dlc3QgYml0ICovCisgICAgICBpZiAoIHZhbHVlMiA9PSAwICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIHZhbHVlID0gdmFsdWUyOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHdpbmZudC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z0d2luZm50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDViODFiYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHdpbmZudC5jCkBAIC0wLDAgKzEsNTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0d2luZm50LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBBUEkgZm9yIGFjY2Vzc2luZyBXaW5kb3dzIEZOVCBzcGVjaWZpYyBpbmZvIChib2R5KS4gICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMywgMjAwNCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0d2luZm50LmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2d2luZm50LmgiCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0d2luZm50LmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldF9XaW5GTlRfSGVhZGVyKCBGVF9GYWNlICAgICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1dpbkZOVF9IZWFkZXJSZWMgICpoZWFkZXIgKQorICB7CisgICAgRlRfU2VydmljZV9XaW5GbnQgIHNlcnZpY2U7CisgICAgRlRfRXJyb3IgICAgICAgICAgIGVycm9yOworCisKKyAgICBlcnJvciA9IEZUX0VSUiggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgaWYgKCBmYWNlICE9IE5VTEwgKQorICAgIHsKKyAgICAgIEZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UoIGZhY2UsIHNlcnZpY2UsIFdJTkZOVCApOworCisgICAgICBpZiAoIHNlcnZpY2UgIT0gTlVMTCApCisgICAgICB7CisgICAgICAgIGVycm9yID0gc2VydmljZS0+Z2V0X2hlYWRlciggZmFjZSwgaGVhZGVyICk7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnR4Zjg2LmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnR4Zjg2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI5ZjI5YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9mdHhmODYuYwpAQCAtMCwwICsxLDQwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHhmODYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgdXRpbGl0eSBmaWxlIGZvciBYMTEgc3VwcG9ydCAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDQgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHhmODYuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z4Zjg2bm0uaCIKKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnR4Zjg2LmggKi8KKworICBGVF9FWFBPUlRfREVGKCBjb25zdCBjaGFyKiApCisgIEZUX0dldF9YMTFfRm9udF9Gb3JtYXQoIEZUX0ZhY2UgIGZhY2UgKQorICB7CisgICAgY29uc3QgY2hhciogIHJlc3VsdCA9IE5VTEw7CisKKworICAgIGlmICggZmFjZSApCisgICAgICBGVF9GQUNFX0ZJTkRfU0VSVklDRSggZmFjZSwgcmVzdWx0LCBYRjg2X05BTUUgKTsKKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9meGZ0X2Z0YmFzZS5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z4ZnRfZnRiYXNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM5MjIzYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9meGZ0X2Z0YmFzZS5jCkBAIC0wLDAgKzEsNDQgQEAKKyNpZiAhZGVmaW5lZChfRlhGVF9WRVJTSU9OXykgfHwgX0ZYRlRfVkVSU0lPTl8gPT0gMjUwMQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRiYXNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFNpbmdsZSBvYmplY3QgbGlicmFyeSBjb21wb25lbnQgKGJvZHkgb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgYnkgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBGVDJfQlVJTERfTElCUkFSWQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKworI2RlZmluZSAgRlRfTUFLRV9PUFRJT05fU0lOR0xFX09CSkVDVAorCisjaW5jbHVkZSAiZnRwaWMuYyIKKyNpbmNsdWRlICJiYXNlcGljLmMiCisjaW5jbHVkZSAiZnRhZHZhbmMuYyIKKyNpbmNsdWRlICJmdGNhbGMuYyIKKyNpbmNsdWRlICJmdGRiZ21lbS5jIgorI2luY2x1ZGUgImZ0Z2xvYWRyLmMiCisjaW5jbHVkZSAiZnRvYmpzLmMiCisjaW5jbHVkZSAiZnRvdXRsbi5jIgorI2luY2x1ZGUgImZ0cmZvcmsuYyIKKyNpbmNsdWRlICJmdHNuYW1lcy5jIgorI2luY2x1ZGUgImZ0c3RyZWFtLmMiCisjaW5jbHVkZSAiZnR0cmlnb24uYyIKKyNpbmNsdWRlICJmdHV0aWwuYyIKKyNpbmNsdWRlICJmdHhmODYuYyIKKworI2lmIGRlZmluZWQoIEZUX01BQ0lOVE9TSCApICYmICFkZWZpbmVkICggREFSV0lOX05PX0NBUkJPTiApCisvKiNpbmNsdWRlICJmdG1hYy5jIiovCisjZW5kaWYKKworLyogRU5EICovCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9meGZ0X2Z0Yml0bWFwLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGJpdG1hcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMWVmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGJpdG1hcC5jCkBAIC0wLDAgKzEsNzYwIEBACisjaWYgIWRlZmluZWQoX0ZYRlRfVkVSU0lPTl8pIHx8IF9GWEZUX1ZFUlNJT05fID09IDI1MDEKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0Yml0bWFwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgYml0bWFwcyAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNC0yMDA5LCAyMDExLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgRlQyX0JVSUxEX0xJQlJBUlkKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGJpdG1hcC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisKKworICBzdGF0aWMKKyAgY29uc3QgRlRfQml0bWFwICBudWxsX2JpdG1hcCA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OworCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGJpdG1hcC5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX0JpdG1hcF9OZXcoIEZUX0JpdG1hcCAgKmFiaXRtYXAgKQorICB7CisgICAgKmFiaXRtYXAgPSBudWxsX2JpdG1hcDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGJpdG1hcC5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9CaXRtYXBfQ29weSggRlRfTGlicmFyeSAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0JpdG1hcCAgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgIEZUX0JpdG1hcCAgICAgICAgKnRhcmdldCkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworICAgIEZUX0Vycm9yICAgZXJyb3IgID0gRlRfRXJyX09rOworICAgIEZUX0ludCAgICAgcGl0Y2ggID0gc291cmNlLT5waXRjaDsKKyAgICBGVF9VTG9uZyAgIHNpemU7CisKKworICAgIGlmICggc291cmNlID09IHRhcmdldCApCisgICAgICByZXR1cm4gRlRfRXJyX09rOworCisgICAgaWYgKCBzb3VyY2UtPmJ1ZmZlciA9PSBOVUxMICkKKyAgICB7CisgICAgICAqdGFyZ2V0ID0gKnNvdXJjZTsKKworICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgICB9CisKKyAgICBpZiAoIHBpdGNoIDwgMCApCisgICAgICBwaXRjaCA9IC1waXRjaDsKKyAgICBzaXplID0gKEZUX1VMb25nKSggcGl0Y2ggKiBzb3VyY2UtPnJvd3MgKTsKKworICAgIGlmICggdGFyZ2V0LT5idWZmZXIgKQorICAgIHsKKyAgICAgIEZUX0ludCAgICB0YXJnZXRfcGl0Y2ggPSB0YXJnZXQtPnBpdGNoOworICAgICAgRlRfVUxvbmcgIHRhcmdldF9zaXplOworCisKKyAgICAgIGlmICggdGFyZ2V0X3BpdGNoIDwgMCAgKQorICAgICAgICB0YXJnZXRfcGl0Y2ggPSAtdGFyZ2V0X3BpdGNoOworICAgICAgdGFyZ2V0X3NpemUgPSAoRlRfVUxvbmcpKCB0YXJnZXRfcGl0Y2ggKiB0YXJnZXQtPnJvd3MgKTsKKworICAgICAgaWYgKCB0YXJnZXRfc2l6ZSAhPSBzaXplICkKKyAgICAgICAgKHZvaWQpRlRfUVJFQUxMT0MoIHRhcmdldC0+YnVmZmVyLCB0YXJnZXRfc2l6ZSwgc2l6ZSApOworICAgIH0KKyAgICBlbHNlCisgICAgICAodm9pZClGVF9RQUxMT0MoIHRhcmdldC0+YnVmZmVyLCBzaXplICk7CisKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgdW5zaWduZWQgY2hhciAqcDsKKworCisgICAgICBwID0gdGFyZ2V0LT5idWZmZXI7CisgICAgICAqdGFyZ2V0ID0gKnNvdXJjZTsKKyAgICAgIHRhcmdldC0+YnVmZmVyID0gcDsKKworICAgICAgRlRfTUVNX0NPUFkoIHRhcmdldC0+YnVmZmVyLCBzb3VyY2UtPmJ1ZmZlciwgc2l6ZSApOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X2JpdG1hcF9hc3N1cmVfYnVmZmVyKCBGVF9NZW1vcnkgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CaXRtYXAqICBiaXRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICB4cGl4ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgeXBpeGVscyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3I7CisgICAgaW50ICAgICAgICAgICAgIHBpdGNoOworICAgIGludCAgICAgICAgICAgICBuZXdfcGl0Y2g7CisgICAgRlRfVUludCAgICAgICAgIGJwcDsKKyAgICBGVF9JbnQgICAgICAgICAgaSwgd2lkdGgsIGhlaWdodDsKKyAgICB1bnNpZ25lZCBjaGFyKiAgYnVmZmVyID0gTlVMTDsKKworCisgICAgd2lkdGggID0gYml0bWFwLT53aWR0aDsKKyAgICBoZWlnaHQgPSBiaXRtYXAtPnJvd3M7CisgICAgcGl0Y2ggID0gYml0bWFwLT5waXRjaDsKKyAgICBpZiAoIHBpdGNoIDwgMCApCisgICAgICBwaXRjaCA9IC1waXRjaDsKKworICAgIHN3aXRjaCAoIGJpdG1hcC0+cGl4ZWxfbW9kZSApCisgICAgeworICAgIGNhc2UgRlRfUElYRUxfTU9ERV9NT05POgorICAgICAgYnBwICAgICAgID0gMTsKKyAgICAgIG5ld19waXRjaCA9ICggd2lkdGggKyB4cGl4ZWxzICsgNyApID4+IDM7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfR1JBWTI6CisgICAgICBicHAgICAgICAgPSAyOworICAgICAgbmV3X3BpdGNoID0gKCB3aWR0aCArIHhwaXhlbHMgKyAzICkgPj4gMjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlRfUElYRUxfTU9ERV9HUkFZNDoKKyAgICAgIGJwcCAgICAgICA9IDQ7CisgICAgICBuZXdfcGl0Y2ggPSAoIHdpZHRoICsgeHBpeGVscyArIDEgKSA+PiAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0dSQVk6CisgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0xDRDoKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfTENEX1Y6CisgICAgICBicHAgICAgICAgPSA4OworICAgICAgbmV3X3BpdGNoID0gKCB3aWR0aCArIHhwaXhlbHMgKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfR2x5cGhfRm9ybWF0ICk7CisgICAgfQorCisgICAgLyogaWYgbm8gbmVlZCB0byBhbGxvY2F0ZSBtZW1vcnkgKi8KKyAgICBpZiAoIHlwaXhlbHMgPT0gMCAmJiBuZXdfcGl0Y2ggPD0gcGl0Y2ggKQorICAgIHsKKyAgICAgIC8qIHplcm8gdGhlIHBhZGRpbmcgKi8KKyAgICAgIEZUX0ludCAgYml0X3dpZHRoID0gcGl0Y2ggKiA4OworICAgICAgRlRfSW50ICBiaXRfbGFzdCAgPSAoIHdpZHRoICsgeHBpeGVscyApICogYnBwOworCisKKyAgICAgIGlmICggYml0X2xhc3QgPCBiaXRfd2lkdGggKQorICAgICAgeworICAgICAgICBGVF9CeXRlKiAgbGluZSAgPSBiaXRtYXAtPmJ1ZmZlciArICggYml0X2xhc3QgPj4gMyApOworICAgICAgICBGVF9CeXRlKiAgZW5kICAgPSBiaXRtYXAtPmJ1ZmZlciArIHBpdGNoOworICAgICAgICBGVF9JbnQgICAgc2hpZnQgPSBiaXRfbGFzdCAmIDc7CisgICAgICAgIEZUX1VJbnQgICBtYXNrICA9IDB4RkYwMFUgPj4gc2hpZnQ7CisgICAgICAgIEZUX0ludCAgICBjb3VudCA9IGhlaWdodDsKKworCisgICAgICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCBsaW5lICs9IHBpdGNoLCBlbmQgKz0gcGl0Y2ggKQorICAgICAgICB7CisgICAgICAgICAgRlRfQnl0ZSogIHdyaXRlID0gbGluZTsKKworCisgICAgICAgICAgaWYgKCBzaGlmdCA+IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHdyaXRlWzBdID0gKEZUX0J5dGUpKCB3cml0ZVswXSAmIG1hc2sgKTsKKyAgICAgICAgICAgIHdyaXRlKys7CisgICAgICAgICAgfQorICAgICAgICAgIGlmICggd3JpdGUgPCBlbmQgKQorICAgICAgICAgICAgRlRfTUVNX1pFUk8oIHdyaXRlLCBlbmQtd3JpdGUgKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gRlRfRXJyX09rOworICAgIH0KKworICAgIGlmICggRlRfUUFMTE9DX01VTFQoIGJ1ZmZlciwgbmV3X3BpdGNoLCBiaXRtYXAtPnJvd3MgKyB5cGl4ZWxzICkgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgaWYgKCBiaXRtYXAtPnBpdGNoID4gMCApCisgICAgeworICAgICAgRlRfSW50ICBsZW4gPSAoIHdpZHRoICogYnBwICsgNyApID4+IDM7CisKKworICAgICAgZm9yICggaSA9IDA7IGkgPCBiaXRtYXAtPnJvd3M7IGkrKyApCisgICAgICAgIEZUX01FTV9DT1BZKCBidWZmZXIgKyBuZXdfcGl0Y2ggKiAoIHlwaXhlbHMgKyBpICksCisgICAgICAgICAgICAgICAgICAgICBiaXRtYXAtPmJ1ZmZlciArIHBpdGNoICogaSwgbGVuICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBGVF9JbnQgIGxlbiA9ICggd2lkdGggKiBicHAgKyA3ICkgPj4gMzsKKworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IGJpdG1hcC0+cm93czsgaSsrICkKKyAgICAgICAgRlRfTUVNX0NPUFkoIGJ1ZmZlciArIG5ld19waXRjaCAqIGksCisgICAgICAgICAgICAgICAgICAgICBiaXRtYXAtPmJ1ZmZlciArIHBpdGNoICogaSwgbGVuICk7CisgICAgfQorCisgICAgRlRfRlJFRSggYml0bWFwLT5idWZmZXIgKTsKKyAgICBiaXRtYXAtPmJ1ZmZlciA9IGJ1ZmZlcjsKKworICAgIGlmICggYml0bWFwLT5waXRjaCA8IDAgKQorICAgICAgbmV3X3BpdGNoID0gLW5ld19waXRjaDsKKworICAgIC8qIHNldCBwaXRjaCBvbmx5LCB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBsZWZ0IHVudG91Y2hlZCAqLworICAgIGJpdG1hcC0+cGl0Y2ggPSBuZXdfcGl0Y2g7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0Yml0bWFwLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0JpdG1hcF9FbWJvbGRlbiggRlRfTGlicmFyeSAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9CaXRtYXAqICBiaXRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgeFN0cmVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIHlTdHJlbmd0aCApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3I7CisgICAgdW5zaWduZWQgY2hhciogIHA7CisgICAgRlRfSW50ICAgICAgICAgIGksIHgsIHksIHBpdGNoOworICAgIEZUX0ludCAgICAgICAgICB4c3RyLCB5c3RyOworCisKKyAgICBpZiAoICFsaWJyYXJ5ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9MaWJyYXJ5X0hhbmRsZSApOworCisgICAgaWYgKCAhYml0bWFwIHx8ICFiaXRtYXAtPmJ1ZmZlciApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGlmICggKCAoIEZUX1BJWF9ST1VORCggeFN0cmVuZ3RoICkgPj4gNiApID4gRlRfSU5UX01BWCApIHx8CisgICAgICAgICAoICggRlRfUElYX1JPVU5EKCB5U3RyZW5ndGggKSA+PiA2ICkgPiBGVF9JTlRfTUFYICkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICB4c3RyID0gKEZUX0ludClGVF9QSVhfUk9VTkQoIHhTdHJlbmd0aCApID4+IDY7CisgICAgeXN0ciA9IChGVF9JbnQpRlRfUElYX1JPVU5EKCB5U3RyZW5ndGggKSA+PiA2OworCisgICAgaWYgKCB4c3RyID09IDAgJiYgeXN0ciA9PSAwICkKKyAgICAgIHJldHVybiBGVF9FcnJfT2s7CisgICAgZWxzZSBpZiAoIHhzdHIgPCAwIHx8IHlzdHIgPCAwICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgc3dpdGNoICggYml0bWFwLT5waXhlbF9tb2RlICkKKyAgICB7CisgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0dSQVkyOgorICAgIGNhc2UgRlRfUElYRUxfTU9ERV9HUkFZNDoKKyAgICAgIHsKKyAgICAgICAgRlRfQml0bWFwICB0bXA7CisgICAgICAgIEZUX0ludCAgICAgYWxpZ247CisKKworICAgICAgICBpZiAoIGJpdG1hcC0+cGl4ZWxfbW9kZSA9PSBGVF9QSVhFTF9NT0RFX0dSQVkyICkKKyAgICAgICAgICBhbGlnbiA9ICggYml0bWFwLT53aWR0aCArIHhzdHIgKyAzICkgLyA0OworICAgICAgICBlbHNlCisgICAgICAgICAgYWxpZ24gPSAoIGJpdG1hcC0+d2lkdGggKyB4c3RyICsgMSApIC8gMjsKKworICAgICAgICBGVF9CaXRtYXBfTmV3KCAmdG1wICk7CisKKyAgICAgICAgZXJyb3IgPSBGVF9CaXRtYXBfQ29udmVydCggbGlicmFyeSwgYml0bWFwLCAmdG1wLCBhbGlnbiApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgICAgRlRfQml0bWFwX0RvbmUoIGxpYnJhcnksIGJpdG1hcCApOworICAgICAgICAqYml0bWFwID0gdG1wOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfTU9OTzoKKyAgICAgIGlmICggeHN0ciA+IDggKQorICAgICAgICB4c3RyID0gODsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0xDRDoKKyAgICAgIHhzdHIgKj0gMzsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0xDRF9WOgorICAgICAgeXN0ciAqPSAzOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfQkdSQToKKyAgICAgIC8qIFdlIGRvbid0IGVtYm9sZGVuIGNvbG9yIGdseXBocy4gKi8KKyAgICAgIHJldHVybiBGVF9FcnJfT2s7CisgICAgfQorCisgICAgZXJyb3IgPSBmdF9iaXRtYXBfYXNzdXJlX2J1ZmZlciggbGlicmFyeS0+bWVtb3J5LCBiaXRtYXAsIHhzdHIsIHlzdHIgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIHBpdGNoID0gYml0bWFwLT5waXRjaDsKKyAgICBpZiAoIHBpdGNoID4gMCApCisgICAgICBwID0gYml0bWFwLT5idWZmZXIgKyBwaXRjaCAqIHlzdHI7CisgICAgZWxzZQorICAgIHsKKyAgICAgIHBpdGNoID0gLXBpdGNoOworICAgICAgcCA9IGJpdG1hcC0+YnVmZmVyICsgcGl0Y2ggKiAoIGJpdG1hcC0+cm93cyAtIDEgKTsKKyAgICB9CisKKyAgICAvKiBmb3IgZWFjaCByb3cgKi8KKyAgICBmb3IgKCB5ID0gMDsgeSA8IGJpdG1hcC0+cm93cyA7IHkrKyApCisgICAgeworICAgICAgLyoKKyAgICAgICAqIEhvcml6b250YWxseToKKyAgICAgICAqCisgICAgICAgKiBGcm9tIHRoZSBsYXN0IHBpeGVsIG9uLCBtYWtlIGVhY2ggcGl4ZWwgb3InZWQgd2l0aCB0aGUKKyAgICAgICAqIGB4c3RyJyBwaXhlbHMgYmVmb3JlIGl0LgorICAgICAgICovCisgICAgICBmb3IgKCB4ID0gcGl0Y2ggLSAxOyB4ID49IDA7IHgtLSApCisgICAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgdG1wOworCisKKyAgICAgICAgdG1wID0gcFt4XTsKKyAgICAgICAgZm9yICggaSA9IDE7IGkgPD0geHN0cjsgaSsrICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggYml0bWFwLT5waXhlbF9tb2RlID09IEZUX1BJWEVMX01PREVfTU9OTyApCisgICAgICAgICAgeworICAgICAgICAgICAgcFt4XSB8PSB0bXAgPj4gaTsKKworICAgICAgICAgICAgLyogdGhlIG1heGltdW0gdmFsdWUgb2YgOCBmb3IgYHhzdHInIGNvbWVzIGZyb20gaGVyZSAqLworICAgICAgICAgICAgaWYgKCB4ID4gMCApCisgICAgICAgICAgICAgIHBbeF0gfD0gcFt4IC0gMV0gPDwgKCA4IC0gaSApOworCisjaWYgMAorICAgICAgICAgICAgaWYgKCBwW3hdID09IDB4ZmYgKQorICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKCB4IC0gaSA+PSAwICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKCBwW3hdICsgcFt4IC0gaV0gPiBiaXRtYXAtPm51bV9ncmF5cyAtIDEgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcFt4XSA9ICh1bnNpZ25lZCBjaGFyKShiaXRtYXAtPm51bV9ncmF5cyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBbeF0gPSAodW5zaWduZWQgY2hhcikocFt4XSArIHBbeC1pXSk7CisgICAgICAgICAgICAgICAgaWYgKCBwW3hdID09IGJpdG1hcC0+bnVtX2dyYXlzIC0gMSApCisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyoKKyAgICAgICAqIFZlcnRpY2FsbHk6CisgICAgICAgKgorICAgICAgICogTWFrZSB0aGUgYWJvdmUgYHlzdHInIHJvd3Mgb3InZWQgd2l0aCBpdC4KKyAgICAgICAqLworICAgICAgZm9yICggeCA9IDE7IHggPD0geXN0cjsgeCsrICkKKyAgICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciogIHE7CisKKworICAgICAgICBxID0gcCAtIGJpdG1hcC0+cGl0Y2ggKiB4OworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IHBpdGNoOyBpKysgKQorICAgICAgICAgIHFbaV0gfD0gcFtpXTsKKyAgICAgIH0KKworICAgICAgcCArPSBiaXRtYXAtPnBpdGNoOworICAgIH0KKworICAgIGJpdG1hcC0+d2lkdGggKz0geHN0cjsKKyAgICBiaXRtYXAtPnJvd3MgKz0geXN0cjsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIEZUX0J5dGUKKyAgZnRfZ3JheV9mb3JfcHJlbXVsdGlwbGllZF9zcmdiX2JncmEoIGNvbnN0IEZUX0J5dGUqICBiZ3JhICkKKyAgeworICAgIEZUX0xvbmcgIGEgPSBiZ3JhWzNdOworICAgIEZUX0xvbmcgIGIgPSBiZ3JhWzBdOworICAgIEZUX0xvbmcgIGcgPSBiZ3JhWzFdOworICAgIEZUX0xvbmcgIHIgPSBiZ3JhWzJdOworICAgIEZUX0xvbmcgIGw7CisKKworICAgIC8qCisgICAgICogTHVtaW5vc2l0eSBmb3Igc1JHQiBpcyBkZWZpbmVkIHVzaW5nIH4wLjIxMjYsMC43MTUyLDAuMDcyMgorICAgICAqIGNvZWZmaWNpZW50cyBmb3IgUkdCIGNoYW5uZWxzICpvbiB0aGUgbGluZWFyIGNvbG9ycyouCisgICAgICogQSBnYW1tYSBvZiAyLjIgaXMgZmFpciB0byBhc3N1bWUuICBBbmQgdGhlbiwgd2UgbmVlZCB0bworICAgICAqIHVuZG8gdGhlIHByZW11bHRpcGxpY2F0aW9uIHRvby4KKyAgICAgKgorICAgICAqIGh0dHA6Ly9hY2Nlc3NpYmlsaXR5LmtkZS5vcmcvaHNsLWFkanVzdGVkLnBocAorICAgICAqCisgICAgICogV2UgZG8gdGhlIGNvbXB1dGF0aW9uIHdpdGggaW50ZWdlcnMgb25seS4KKyAgICAgKi8KKworICAgIC8qIFVuZG8gcHJlbXVsdGlmaWNhdGlvbiwgZ2V0IHRoZSBudW1iZXIgaW4gYSAxNi4xNiBmb3JtLiAqLworICAgIGIgPSBGVF9NdWxEaXYoIGIsIDY1NTM2LCBhICk7CisgICAgZyA9IEZUX011bERpdiggZywgNjU1MzYsIGEgKTsKKyAgICByID0gRlRfTXVsRGl2KCByLCA2NTUzNiwgYSApOworICAgIGEgPSBhICogMjU2OworCisgICAgLyogQXBwbHkgZ2FtbWEgb2YgMi4wIGluc3RlYWQgb2YgMi4yLiAqLworICAgIGIgPSBGVF9NdWxGaXgoIGIsIGIgKTsKKyAgICBnID0gRlRfTXVsRml4KCBnLCBnICk7CisgICAgciA9IEZUX011bEZpeCggciwgciApOworCisgICAgLyogQXBwbHkgY29lZmZpY2llbnRzLiAqLworICAgIGIgPSBGVF9NdWxGaXgoIGIsICA0NzMxIC8qIDAuMDcyMiAqIDY1NTM2ICovICk7CisgICAgZyA9IEZUX011bEZpeCggZywgNDY4NzEgLyogMC43MTUyICogNjU1MzYgKi8gKTsKKyAgICByID0gRlRfTXVsRml4KCByLCAxMzkzMyAvKiAwLjIxMjYgKiA2NTUzNiAqLyApOworCisgICAgbCA9IHIgKyBnICsgYjsKKworICAgIC8qCisgICAgICogRmluYWwgdHJhbnNwYXJlbmN5IGNhbiBiZSBkZXRlcm1pbmVkIHRoaXMgd2F5OgorICAgICAqCisgICAgICogLSBJZiBhbHBoYSBpcyB6ZXJvLCB3ZSB3YW50IDAuCisgICAgICogLSBJZiBhbHBoYSBpcyB6ZXJvIGFuZCBsdW1pbm9zaXR5IGlzIHplcm8sIHdlIHdhbnQgMjU1LgorICAgICAqIC0gSWYgYWxwaGEgaXMgemVybyBhbmQgbHVtaW5vc2l0eSBpcyBvbmUsIHdlIHdhbnQgMC4KKyAgICAgKgorICAgICAqIFNvIHRoZSBmb3JtdWxhIGlzIGEgKiAoMSAtIGwpLgorICAgICAqLworCisgICAgcmV0dXJuIChGVF9CeXRlKSggRlRfTXVsRml4KCA2NTUzNSAtIGwsIGEgKSA+PiA4ICk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRiaXRtYXAuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfQml0bWFwX0NvbnZlcnQoIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CaXRtYXAgICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9CaXRtYXAgICAgICAgICp0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgICBhbGlnbm1lbnQgKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKworCisgICAgaWYgKCAhbGlicmFyeSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfTGlicmFyeV9IYW5kbGUgKTsKKworICAgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsKKworICAgIHN3aXRjaCAoIHNvdXJjZS0+cGl4ZWxfbW9kZSApCisgICAgeworICAgIGNhc2UgRlRfUElYRUxfTU9ERV9NT05POgorICAgIGNhc2UgRlRfUElYRUxfTU9ERV9HUkFZOgorICAgIGNhc2UgRlRfUElYRUxfTU9ERV9HUkFZMjoKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfR1JBWTQ6CisgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0xDRDoKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfTENEX1Y6CisgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0JHUkE6CisgICAgICB7CisgICAgICAgIEZUX0ludCAgIHBhZDsKKyAgICAgICAgRlRfTG9uZyAgb2xkX3NpemU7CisKKworICAgICAgICBvbGRfc2l6ZSA9IHRhcmdldC0+cm93cyAqIHRhcmdldC0+cGl0Y2g7CisgICAgICAgIGlmICggb2xkX3NpemUgPCAwICkKKyAgICAgICAgICBvbGRfc2l6ZSA9IC1vbGRfc2l6ZTsKKworICAgICAgICB0YXJnZXQtPnBpeGVsX21vZGUgPSBGVF9QSVhFTF9NT0RFX0dSQVk7CisgICAgICAgIHRhcmdldC0+cm93cyAgICAgICA9IHNvdXJjZS0+cm93czsKKyAgICAgICAgdGFyZ2V0LT53aWR0aCAgICAgID0gc291cmNlLT53aWR0aDsKKworICAgICAgICBwYWQgPSAwOworICAgICAgICBpZiAoIGFsaWdubWVudCA+IDAgKQorICAgICAgICB7CisgICAgICAgICAgcGFkID0gc291cmNlLT53aWR0aCAlIGFsaWdubWVudDsKKyAgICAgICAgICBpZiAoIHBhZCAhPSAwICkKKyAgICAgICAgICAgIHBhZCA9IGFsaWdubWVudCAtIHBhZDsKKyAgICAgICAgfQorCisgICAgICAgIHRhcmdldC0+cGl0Y2ggPSBzb3VyY2UtPndpZHRoICsgcGFkOworCisgICAgICAgIGlmICggdGFyZ2V0LT5waXRjaCA+IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAoRlRfVUxvbmcpdGFyZ2V0LT5yb3dzID4gRlRfVUxPTkdfTUFYIC8gdGFyZ2V0LT5waXRjaCApCisgICAgICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICAgICAgaWYgKCB0YXJnZXQtPnJvd3MgKiB0YXJnZXQtPnBpdGNoID4gb2xkX3NpemUgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICBGVF9RUkVBTExPQyggdGFyZ2V0LT5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9zaXplLCB0YXJnZXQtPnJvd3MgKiB0YXJnZXQtPnBpdGNoICkgKQorICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKCBzb3VyY2UtPnBpeGVsX21vZGUgKQorICAgIHsKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfTU9OTzoKKyAgICAgIHsKKyAgICAgICAgRlRfQnl0ZSogIHMgPSBzb3VyY2UtPmJ1ZmZlcjsKKyAgICAgICAgRlRfQnl0ZSogIHQgPSB0YXJnZXQtPmJ1ZmZlcjsKKyAgICAgICAgRlRfSW50ICAgIGk7CisKKworICAgICAgICB0YXJnZXQtPm51bV9ncmF5cyA9IDI7CisKKyAgICAgICAgZm9yICggaSA9IHNvdXJjZS0+cm93czsgaSA+IDA7IGktLSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9CeXRlKiAgc3MgPSBzOworICAgICAgICAgIEZUX0J5dGUqICB0dCA9IHQ7CisgICAgICAgICAgRlRfSW50ICAgIGo7CisKKworICAgICAgICAgIC8qIGdldCB0aGUgZnVsbCBieXRlcyAqLworICAgICAgICAgIGZvciAoIGogPSBzb3VyY2UtPndpZHRoID4+IDM7IGogPiAwOyBqLS0gKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ludCAgdmFsID0gc3NbMF07IC8qIGF2b2lkIGEgYnl0ZS0+aW50IGNhc3Qgb24gZWFjaCBsaW5lICovCisKKworICAgICAgICAgICAgdHRbMF0gPSAoRlRfQnl0ZSkoICggdmFsICYgMHg4MCApID4+IDcgKTsKKyAgICAgICAgICAgIHR0WzFdID0gKEZUX0J5dGUpKCAoIHZhbCAmIDB4NDAgKSA+PiA2ICk7CisgICAgICAgICAgICB0dFsyXSA9IChGVF9CeXRlKSggKCB2YWwgJiAweDIwICkgPj4gNSApOworICAgICAgICAgICAgdHRbM10gPSAoRlRfQnl0ZSkoICggdmFsICYgMHgxMCApID4+IDQgKTsKKyAgICAgICAgICAgIHR0WzRdID0gKEZUX0J5dGUpKCAoIHZhbCAmIDB4MDggKSA+PiAzICk7CisgICAgICAgICAgICB0dFs1XSA9IChGVF9CeXRlKSggKCB2YWwgJiAweDA0ICkgPj4gMiApOworICAgICAgICAgICAgdHRbNl0gPSAoRlRfQnl0ZSkoICggdmFsICYgMHgwMiApID4+IDEgKTsKKyAgICAgICAgICAgIHR0WzddID0gKEZUX0J5dGUpKCAgIHZhbCAmIDB4MDEgKTsKKworICAgICAgICAgICAgdHQgKz0gODsKKyAgICAgICAgICAgIHNzICs9IDE7CisgICAgICAgICAgfQorCisgICAgICAgICAgLyogZ2V0IHJlbWFpbmluZyBwaXhlbHMgKGlmIGFueSkgKi8KKyAgICAgICAgICBqID0gc291cmNlLT53aWR0aCAmIDc7CisgICAgICAgICAgaWYgKCBqID4gMCApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfSW50ICB2YWwgPSAqc3M7CisKKworICAgICAgICAgICAgZm9yICggOyBqID4gMDsgai0tICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgdHRbMF0gPSAoRlRfQnl0ZSkoICggdmFsICYgMHg4MCApID4+IDcpOworICAgICAgICAgICAgICB2YWwgPDw9IDE7CisgICAgICAgICAgICAgIHR0ICAgKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICBzICs9IHNvdXJjZS0+cGl0Y2g7CisgICAgICAgICAgdCArPSB0YXJnZXQtPnBpdGNoOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKworCisgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0dSQVk6CisgICAgY2FzZSBGVF9QSVhFTF9NT0RFX0xDRDoKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfTENEX1Y6CisgICAgICB7CisgICAgICAgIEZUX0ludCAgICB3aWR0aCAgID0gc291cmNlLT53aWR0aDsKKyAgICAgICAgRlRfQnl0ZSogIHMgICAgICAgPSBzb3VyY2UtPmJ1ZmZlcjsKKyAgICAgICAgRlRfQnl0ZSogIHQgICAgICAgPSB0YXJnZXQtPmJ1ZmZlcjsKKyAgICAgICAgRlRfSW50ICAgIHNfcGl0Y2ggPSBzb3VyY2UtPnBpdGNoOworICAgICAgICBGVF9JbnQgICAgdF9waXRjaCA9IHRhcmdldC0+cGl0Y2g7CisgICAgICAgIEZUX0ludCAgICBpOworCisKKyAgICAgICAgdGFyZ2V0LT5udW1fZ3JheXMgPSAyNTY7CisKKyAgICAgICAgZm9yICggaSA9IHNvdXJjZS0+cm93czsgaSA+IDA7IGktLSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9BUlJBWV9DT1BZKCB0LCBzLCB3aWR0aCApOworCisgICAgICAgICAgcyArPSBzX3BpdGNoOworICAgICAgICAgIHQgKz0gdF9waXRjaDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisKKworICAgIGNhc2UgRlRfUElYRUxfTU9ERV9HUkFZMjoKKyAgICAgIHsKKyAgICAgICAgRlRfQnl0ZSogIHMgPSBzb3VyY2UtPmJ1ZmZlcjsKKyAgICAgICAgRlRfQnl0ZSogIHQgPSB0YXJnZXQtPmJ1ZmZlcjsKKyAgICAgICAgRlRfSW50ICAgIGk7CisKKworICAgICAgICB0YXJnZXQtPm51bV9ncmF5cyA9IDQ7CisKKyAgICAgICAgZm9yICggaSA9IHNvdXJjZS0+cm93czsgaSA+IDA7IGktLSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9CeXRlKiAgc3MgPSBzOworICAgICAgICAgIEZUX0J5dGUqICB0dCA9IHQ7CisgICAgICAgICAgRlRfSW50ICAgIGo7CisKKworICAgICAgICAgIC8qIGdldCB0aGUgZnVsbCBieXRlcyAqLworICAgICAgICAgIGZvciAoIGogPSBzb3VyY2UtPndpZHRoID4+IDI7IGogPiAwOyBqLS0gKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ludCAgdmFsID0gc3NbMF07CisKKworICAgICAgICAgICAgdHRbMF0gPSAoRlRfQnl0ZSkoICggdmFsICYgMHhDMCApID4+IDYgKTsKKyAgICAgICAgICAgIHR0WzFdID0gKEZUX0J5dGUpKCAoIHZhbCAmIDB4MzAgKSA+PiA0ICk7CisgICAgICAgICAgICB0dFsyXSA9IChGVF9CeXRlKSggKCB2YWwgJiAweDBDICkgPj4gMiApOworICAgICAgICAgICAgdHRbM10gPSAoRlRfQnl0ZSkoICggdmFsICYgMHgwMyApICk7CisKKyAgICAgICAgICAgIHNzICs9IDE7CisgICAgICAgICAgICB0dCArPSA0OworICAgICAgICAgIH0KKworICAgICAgICAgIGogPSBzb3VyY2UtPndpZHRoICYgMzsKKyAgICAgICAgICBpZiAoIGogPiAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9JbnQgIHZhbCA9IHNzWzBdOworCisKKyAgICAgICAgICAgIGZvciAoIDsgaiA+IDA7IGotLSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHR0WzBdICA9IChGVF9CeXRlKSggKCB2YWwgJiAweEMwICkgPj4gNiApOworICAgICAgICAgICAgICB2YWwgIDw8PSAyOworICAgICAgICAgICAgICB0dCAgICArPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIHMgKz0gc291cmNlLT5waXRjaDsKKyAgICAgICAgICB0ICs9IHRhcmdldC0+cGl0Y2g7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfR1JBWTQ6CisgICAgICB7CisgICAgICAgIEZUX0J5dGUqICBzID0gc291cmNlLT5idWZmZXI7CisgICAgICAgIEZUX0J5dGUqICB0ID0gdGFyZ2V0LT5idWZmZXI7CisgICAgICAgIEZUX0ludCAgICBpOworCisKKyAgICAgICAgdGFyZ2V0LT5udW1fZ3JheXMgPSAxNjsKKworICAgICAgICBmb3IgKCBpID0gc291cmNlLT5yb3dzOyBpID4gMDsgaS0tICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0J5dGUqICBzcyA9IHM7CisgICAgICAgICAgRlRfQnl0ZSogIHR0ID0gdDsKKyAgICAgICAgICBGVF9JbnQgICAgajsKKworCisgICAgICAgICAgLyogZ2V0IHRoZSBmdWxsIGJ5dGVzICovCisgICAgICAgICAgZm9yICggaiA9IHNvdXJjZS0+d2lkdGggPj4gMTsgaiA+IDA7IGotLSApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfSW50ICB2YWwgPSBzc1swXTsKKworCisgICAgICAgICAgICB0dFswXSA9IChGVF9CeXRlKSggKCB2YWwgJiAweEYwICkgPj4gNCApOworICAgICAgICAgICAgdHRbMV0gPSAoRlRfQnl0ZSkoICggdmFsICYgMHgwRiApICk7CisKKyAgICAgICAgICAgIHNzICs9IDE7CisgICAgICAgICAgICB0dCArPSAyOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICggc291cmNlLT53aWR0aCAmIDEgKQorICAgICAgICAgICAgdHRbMF0gPSAoRlRfQnl0ZSkoICggc3NbMF0gJiAweEYwICkgPj4gNCApOworCisgICAgICAgICAgcyArPSBzb3VyY2UtPnBpdGNoOworICAgICAgICAgIHQgKz0gdGFyZ2V0LT5waXRjaDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZUX1BJWEVMX01PREVfQkdSQToKKyAgICAgIHsKKyAgICAgICAgRlRfQnl0ZSogIHMgICAgICAgPSBzb3VyY2UtPmJ1ZmZlcjsKKyAgICAgICAgRlRfQnl0ZSogIHQgICAgICAgPSB0YXJnZXQtPmJ1ZmZlcjsKKyAgICAgICAgRlRfSW50ICAgIHNfcGl0Y2ggPSBzb3VyY2UtPnBpdGNoOworICAgICAgICBGVF9JbnQgICAgdF9waXRjaCA9IHRhcmdldC0+cGl0Y2g7CisgICAgICAgIEZUX0ludCAgICBpOworCisKKyAgICAgICAgdGFyZ2V0LT5udW1fZ3JheXMgPSAyNTY7CisKKyAgICAgICAgZm9yICggaSA9IHNvdXJjZS0+cm93czsgaSA+IDA7IGktLSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9CeXRlKiAgc3MgPSBzOworICAgICAgICAgIEZUX0J5dGUqICB0dCA9IHQ7CisgICAgICAgICAgRlRfSW50ICAgIGo7CisKKworICAgICAgICAgIGZvciAoIGogPSBzb3VyY2UtPndpZHRoOyBqID4gMDsgai0tICkKKyAgICAgICAgICB7CisgICAgICAgICAgICB0dFswXSA9IGZ0X2dyYXlfZm9yX3ByZW11bHRpcGxpZWRfc3JnYl9iZ3JhKCBzcyApOworCisgICAgICAgICAgICBzcyArPSA0OworICAgICAgICAgICAgdHQgKz0gMTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBzICs9IHNfcGl0Y2g7CisgICAgICAgICAgdCArPSB0X3BpdGNoOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICA7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0Yml0bWFwLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dseXBoU2xvdF9Pd25fQml0bWFwKCBGVF9HbHlwaFNsb3QgIHNsb3QgKQorICB7CisgICAgaWYgKCBzbG90ICYmIHNsb3QtPmZvcm1hdCA9PSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQICAgJiYKKyAgICAgICAgICEoIHNsb3QtPmludGVybmFsLT5mbGFncyAmIEZUX0dMWVBIX09XTl9CSVRNQVAgKSApCisgICAgeworICAgICAgRlRfQml0bWFwICBiaXRtYXA7CisgICAgICBGVF9FcnJvciAgIGVycm9yOworCisKKyAgICAgIEZUX0JpdG1hcF9OZXcoICZiaXRtYXAgKTsKKyAgICAgIGVycm9yID0gRlRfQml0bWFwX0NvcHkoIHNsb3QtPmxpYnJhcnksICZzbG90LT5iaXRtYXAsICZiaXRtYXAgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgIHNsb3QtPmJpdG1hcCA9IGJpdG1hcDsKKyAgICAgIHNsb3QtPmludGVybmFsLT5mbGFncyB8PSBGVF9HTFlQSF9PV05fQklUTUFQOworICAgIH0KKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRiaXRtYXAuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfQml0bWFwX0RvbmUoIEZUX0xpYnJhcnkgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICBGVF9CaXRtYXAgICpiaXRtYXAgKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnk7CisKKworICAgIGlmICggIWxpYnJhcnkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0xpYnJhcnlfSGFuZGxlICk7CisKKyAgICBpZiAoICFiaXRtYXAgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisKKyAgICBGVF9GUkVFKCBiaXRtYXAtPmJ1ZmZlciApOworICAgICpiaXRtYXAgPSBudWxsX2JpdG1hcDsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGdseXBoLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGdseXBoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVkODNkMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9meGZ0X2Z0Z2x5cGguYwpAQCAtMCwwICsxLDYzMSBAQAorI2lmICFkZWZpbmVkKF9GWEZUX1ZFUlNJT05fKSB8fCBfRlhGVF9WRVJTSU9OXyA9PSAyNTAxCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGdseXBoLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgY29udmVuaWVuY2UgZnVuY3Rpb25zIHRvIGhhbmRsZSBnbHlwaHMgKGJvZHkpLiAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNSwgMjAwNywgMjAwOCwgMjAxMCwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiBzZXZlcmFsIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyAgICovCisgIC8qICB0aGF0IGNhbiBiZSB1c2VkIGJ5IGNsaWVudCBhcHBsaWNhdGlvbnMgdG8gZWFzaWx5IHJldHJpZXZlIGdseXBoICAgICAqLworICAvKiAgYml0bWFwcyBhbmQgb3V0bGluZXMgZnJvbSBhIGdpdmVuIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG9wdGlvbmFsIGlmIHlvdSBhcmUgd3JpdGluZyBhIGZvbnQgc2VydmVyICAqLworICAvKiAgb3IgdGV4dCBsYXlvdXQgZW5naW5lIG9uIHRvcCBvZiBGcmVlVHlwZS4gIEhvd2V2ZXIsIHRoZXkgYXJlIHByZXR0eSAgKi8KKyAgLyogIGhhbmR5IGZvciBtYW55IG90aGVyIHNpbXBsZSB1c2VzIG9mIHRoZSBsaWJyYXJ5LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBGVDJfQlVJTERfTElCUkFSWQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0Yml0bWFwLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKworI2luY2x1ZGUgImJhc2VwaWMuaCIKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9nbHlwaAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICBGVF9CaXRtYXBHbHlwaCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIGZ0X2JpdG1hcF9nbHlwaF9pbml0KCBGVF9HbHlwaCAgICAgIGJpdG1hcF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgc2xvdCApCisgIHsKKyAgICBGVF9CaXRtYXBHbHlwaCAgZ2x5cGggICA9IChGVF9CaXRtYXBHbHlwaCliaXRtYXBfZ2x5cGg7CisgICAgRlRfRXJyb3IgICAgICAgIGVycm9yICAgPSBGVF9FcnJfT2s7CisgICAgRlRfTGlicmFyeSAgICAgIGxpYnJhcnkgPSBGVF9HTFlQSCggZ2x5cGggKS0+bGlicmFyeTsKKworCisgICAgaWYgKCBzbG90LT5mb3JtYXQgIT0gRlRfR0xZUEhfRk9STUFUX0JJVE1BUCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9HbHlwaF9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBnbHlwaC0+bGVmdCA9IHNsb3QtPmJpdG1hcF9sZWZ0OworICAgIGdseXBoLT50b3AgID0gc2xvdC0+Yml0bWFwX3RvcDsKKworICAgIC8qIGRvIGxhenkgY29weWluZyB3aGVuZXZlciBwb3NzaWJsZSAqLworICAgIGlmICggc2xvdC0+aW50ZXJuYWwtPmZsYWdzICYgRlRfR0xZUEhfT1dOX0JJVE1BUCApCisgICAgeworICAgICAgZ2x5cGgtPmJpdG1hcCA9IHNsb3QtPmJpdG1hcDsKKyAgICAgIHNsb3QtPmludGVybmFsLT5mbGFncyAmPSB+RlRfR0xZUEhfT1dOX0JJVE1BUDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIEZUX0JpdG1hcF9OZXcoICZnbHlwaC0+Yml0bWFwICk7CisgICAgICBlcnJvciA9IEZUX0JpdG1hcF9Db3B5KCBsaWJyYXJ5LCAmc2xvdC0+Yml0bWFwLCAmZ2x5cGgtPmJpdG1hcCApOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIGZ0X2JpdG1hcF9nbHlwaF9jb3B5KCBGVF9HbHlwaCAgYml0bWFwX3NvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoICBiaXRtYXBfdGFyZ2V0ICkKKyAgeworICAgIEZUX0xpYnJhcnkgICAgICBsaWJyYXJ5ID0gYml0bWFwX3NvdXJjZS0+bGlicmFyeTsKKyAgICBGVF9CaXRtYXBHbHlwaCAgc291cmNlICA9IChGVF9CaXRtYXBHbHlwaCliaXRtYXBfc291cmNlOworICAgIEZUX0JpdG1hcEdseXBoICB0YXJnZXQgID0gKEZUX0JpdG1hcEdseXBoKWJpdG1hcF90YXJnZXQ7CisKKworICAgIHRhcmdldC0+bGVmdCA9IHNvdXJjZS0+bGVmdDsKKyAgICB0YXJnZXQtPnRvcCAgPSBzb3VyY2UtPnRvcDsKKworICAgIHJldHVybiBGVF9CaXRtYXBfQ29weSggbGlicmFyeSwgJnNvdXJjZS0+Yml0bWFwLCAmdGFyZ2V0LT5iaXRtYXAgKTsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCB2b2lkICkKKyAgZnRfYml0bWFwX2dseXBoX2RvbmUoIEZUX0dseXBoICBiaXRtYXBfZ2x5cGggKQorICB7CisgICAgRlRfQml0bWFwR2x5cGggIGdseXBoICAgPSAoRlRfQml0bWFwR2x5cGgpYml0bWFwX2dseXBoOworICAgIEZUX0xpYnJhcnkgICAgICBsaWJyYXJ5ID0gRlRfR0xZUEgoIGdseXBoICktPmxpYnJhcnk7CisKKworICAgIEZUX0JpdG1hcF9Eb25lKCBsaWJyYXJ5LCAmZ2x5cGgtPmJpdG1hcCApOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIHZvaWQgKQorICBmdF9iaXRtYXBfZ2x5cGhfYmJveCggRlRfR2x5cGggIGJpdG1hcF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JCb3gqICBjYm94ICkKKyAgeworICAgIEZUX0JpdG1hcEdseXBoICBnbHlwaCA9IChGVF9CaXRtYXBHbHlwaCliaXRtYXBfZ2x5cGg7CisKKworICAgIGNib3gtPnhNaW4gPSBnbHlwaC0+bGVmdCA8PCA2OworICAgIGNib3gtPnhNYXggPSBjYm94LT54TWluICsgKCBnbHlwaC0+Yml0bWFwLndpZHRoIDw8IDYgKTsKKyAgICBjYm94LT55TWF4ID0gZ2x5cGgtPnRvcCA8PCA2OworICAgIGNib3gtPnlNaW4gPSBjYm94LT55TWF4IC0gKCBnbHlwaC0+Yml0bWFwLnJvd3MgPDwgNiApOworICB9CisKKworICBGVF9ERUZJTkVfR0xZUEgoZnRfYml0bWFwX2dseXBoX2NsYXNzLAorICAgIHNpemVvZiAoIEZUX0JpdG1hcEdseXBoUmVjICksCisgICAgRlRfR0xZUEhfRk9STUFUX0JJVE1BUCwKKworICAgIGZ0X2JpdG1hcF9nbHlwaF9pbml0LAorICAgIGZ0X2JpdG1hcF9nbHlwaF9kb25lLAorICAgIGZ0X2JpdG1hcF9nbHlwaF9jb3B5LAorICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGVF9HbHlwaF9UcmFuc2Zvcm1GdW5jICovCisgICAgZnRfYml0bWFwX2dseXBoX2Jib3gsCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZUX0dseXBoX1ByZXBhcmVGdW5jICAgKi8KKyAgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICBGVF9PdXRsaW5lR2x5cGggc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgZnRfb3V0bGluZV9nbHlwaF9pbml0KCBGVF9HbHlwaCAgICAgIG91dGxpbmVfZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgeworICAgIEZUX091dGxpbmVHbHlwaCAgZ2x5cGggICA9IChGVF9PdXRsaW5lR2x5cGgpb3V0bGluZV9nbHlwaDsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yICAgPSBGVF9FcnJfT2s7CisgICAgRlRfTGlicmFyeSAgICAgICBsaWJyYXJ5ID0gRlRfR0xZUEgoIGdseXBoICktPmxpYnJhcnk7CisgICAgRlRfT3V0bGluZSogICAgICBzb3VyY2UgID0gJnNsb3QtPm91dGxpbmU7CisgICAgRlRfT3V0bGluZSogICAgICB0YXJnZXQgID0gJmdseXBoLT5vdXRsaW5lOworCisKKyAgICAvKiBjaGVjayBmb3JtYXQgaW4gZ2x5cGggc2xvdCAqLworICAgIGlmICggc2xvdC0+Zm9ybWF0ICE9IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0dseXBoX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIGFsbG9jYXRlIG5ldyBvdXRsaW5lICovCisgICAgZXJyb3IgPSBGVF9PdXRsaW5lX05ldyggbGlicmFyeSwgc291cmNlLT5uX3BvaW50cywgc291cmNlLT5uX2NvbnRvdXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnbHlwaC0+b3V0bGluZSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgRlRfT3V0bGluZV9Db3B5KCBzb3VyY2UsIHRhcmdldCApOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIHZvaWQgKQorICBmdF9vdXRsaW5lX2dseXBoX2RvbmUoIEZUX0dseXBoICBvdXRsaW5lX2dseXBoICkKKyAgeworICAgIEZUX091dGxpbmVHbHlwaCAgZ2x5cGggPSAoRlRfT3V0bGluZUdseXBoKW91dGxpbmVfZ2x5cGg7CisKKworICAgIEZUX091dGxpbmVfRG9uZSggRlRfR0xZUEgoIGdseXBoICktPmxpYnJhcnksICZnbHlwaC0+b3V0bGluZSApOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgZnRfb3V0bGluZV9nbHlwaF9jb3B5KCBGVF9HbHlwaCAgb3V0bGluZV9zb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGggIG91dGxpbmVfdGFyZ2V0ICkKKyAgeworICAgIEZUX091dGxpbmVHbHlwaCAgc291cmNlICA9IChGVF9PdXRsaW5lR2x5cGgpb3V0bGluZV9zb3VyY2U7CisgICAgRlRfT3V0bGluZUdseXBoICB0YXJnZXQgID0gKEZUX091dGxpbmVHbHlwaClvdXRsaW5lX3RhcmdldDsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yOworICAgIEZUX0xpYnJhcnkgICAgICAgbGlicmFyeSA9IEZUX0dMWVBIKCBzb3VyY2UgKS0+bGlicmFyeTsKKworCisgICAgZXJyb3IgPSBGVF9PdXRsaW5lX05ldyggbGlicmFyeSwgc291cmNlLT5vdXRsaW5lLm5fcG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS0+b3V0bGluZS5uX2NvbnRvdXJzLCAmdGFyZ2V0LT5vdXRsaW5lICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgICAgRlRfT3V0bGluZV9Db3B5KCAmc291cmNlLT5vdXRsaW5lLCAmdGFyZ2V0LT5vdXRsaW5lICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggdm9pZCApCisgIGZ0X291dGxpbmVfZ2x5cGhfdHJhbnNmb3JtKCBGVF9HbHlwaCAgICAgICAgICBvdXRsaW5lX2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfTWF0cml4KiAgbWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgZGVsdGEgKQorICB7CisgICAgRlRfT3V0bGluZUdseXBoICBnbHlwaCA9IChGVF9PdXRsaW5lR2x5cGgpb3V0bGluZV9nbHlwaDsKKworCisgICAgaWYgKCBtYXRyaXggKQorICAgICAgRlRfT3V0bGluZV9UcmFuc2Zvcm0oICZnbHlwaC0+b3V0bGluZSwgbWF0cml4ICk7CisKKyAgICBpZiAoIGRlbHRhICkKKyAgICAgIEZUX091dGxpbmVfVHJhbnNsYXRlKCAmZ2x5cGgtPm91dGxpbmUsIGRlbHRhLT54LCBkZWx0YS0+eSApOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIHZvaWQgKQorICBmdF9vdXRsaW5lX2dseXBoX2Jib3goIEZUX0dseXBoICBvdXRsaW5lX2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JCb3gqICBiYm94ICkKKyAgeworICAgIEZUX091dGxpbmVHbHlwaCAgZ2x5cGggPSAoRlRfT3V0bGluZUdseXBoKW91dGxpbmVfZ2x5cGg7CisKKworICAgIEZUX091dGxpbmVfR2V0X0NCb3goICZnbHlwaC0+b3V0bGluZSwgYmJveCApOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgZnRfb3V0bGluZV9nbHlwaF9wcmVwYXJlKCBGVF9HbHlwaCAgICAgIG91dGxpbmVfZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgeworICAgIEZUX091dGxpbmVHbHlwaCAgZ2x5cGggPSAoRlRfT3V0bGluZUdseXBoKW91dGxpbmVfZ2x5cGg7CisKKworICAgIHNsb3QtPmZvcm1hdCAgICAgICAgID0gRlRfR0xZUEhfRk9STUFUX09VVExJTkU7CisgICAgc2xvdC0+b3V0bGluZSAgICAgICAgPSBnbHlwaC0+b3V0bGluZTsKKyAgICBzbG90LT5vdXRsaW5lLmZsYWdzICY9IH5GVF9PVVRMSU5FX09XTkVSOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfREVGSU5FX0dMWVBIKCBmdF9vdXRsaW5lX2dseXBoX2NsYXNzLAorICAgIHNpemVvZiAoIEZUX091dGxpbmVHbHlwaFJlYyApLAorICAgIEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FLAorCisgICAgZnRfb3V0bGluZV9nbHlwaF9pbml0LAorICAgIGZ0X291dGxpbmVfZ2x5cGhfZG9uZSwKKyAgICBmdF9vdXRsaW5lX2dseXBoX2NvcHksCisgICAgZnRfb3V0bGluZV9nbHlwaF90cmFuc2Zvcm0sCisgICAgZnRfb3V0bGluZV9nbHlwaF9iYm94LAorICAgIGZ0X291dGxpbmVfZ2x5cGhfcHJlcGFyZQorICApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgIEZUX0dseXBoIGNsYXNzIGFuZCBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAgc3RhdGljIEZUX0Vycm9yCisgICBmdF9uZXdfZ2x5cGgoIEZUX0xpYnJhcnkgICAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgY29uc3QgRlRfR2x5cGhfQ2xhc3MqICBjbGF6eiwKKyAgICAgICAgICAgICAgICAgRlRfR2x5cGgqICAgICAgICAgICAgICBhZ2x5cGggKQorICAgeworICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsKKyAgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICAgRlRfR2x5cGggICBnbHlwaCAgPSBOVUxMOworCisKKyAgICAgKmFnbHlwaCA9IDA7CisKKyAgICAgaWYgKCAhRlRfQUxMT0MoIGdseXBoLCBjbGF6ei0+Z2x5cGhfc2l6ZSApICkKKyAgICAgeworICAgICAgIGdseXBoLT5saWJyYXJ5ID0gbGlicmFyeTsKKyAgICAgICBnbHlwaC0+Y2xhenogICA9IGNsYXp6OworICAgICAgIGdseXBoLT5mb3JtYXQgID0gY2xhenotPmdseXBoX2Zvcm1hdDsKKworICAgICAgICphZ2x5cGggPSBnbHlwaDsKKyAgICAgfQorCisgICAgIHJldHVybiBlcnJvcjsKKyAgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRnbHlwaC5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9HbHlwaF9Db3B5KCBGVF9HbHlwaCAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgRlRfR2x5cGggICp0YXJnZXQgKQorICB7CisgICAgRlRfR2x5cGggICAgICAgICAgICAgICBjb3B5OworICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgZXJyb3I7CisgICAgY29uc3QgRlRfR2x5cGhfQ2xhc3MqICBjbGF6ejsKKworCisgICAgLyogY2hlY2sgYXJndW1lbnRzICovCisgICAgaWYgKCAhdGFyZ2V0ICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgKnRhcmdldCA9IDA7CisKKyAgICBpZiAoICFzb3VyY2UgfHwgIXNvdXJjZS0+Y2xhenogKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBjbGF6eiA9IHNvdXJjZS0+Y2xheno7CisgICAgZXJyb3IgPSBmdF9uZXdfZ2x5cGgoIHNvdXJjZS0+bGlicmFyeSwgY2xhenosICZjb3B5ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBjb3B5LT5hZHZhbmNlID0gc291cmNlLT5hZHZhbmNlOworICAgIGNvcHktPmZvcm1hdCAgPSBzb3VyY2UtPmZvcm1hdDsKKworICAgIGlmICggY2xhenotPmdseXBoX2NvcHkgKQorICAgICAgZXJyb3IgPSBjbGF6ei0+Z2x5cGhfY29weSggc291cmNlLCBjb3B5ICk7CisKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIEZUX0RvbmVfR2x5cGgoIGNvcHkgKTsKKyAgICBlbHNlCisgICAgICAqdGFyZ2V0ID0gY29weTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGdseXBoLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldF9HbHlwaCggRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgIEZUX0dseXBoICAgICAqYWdseXBoICkKKyAgeworICAgIEZUX0xpYnJhcnkgIGxpYnJhcnk7CisgICAgRlRfRXJyb3IgICAgZXJyb3I7CisgICAgRlRfR2x5cGggICAgZ2x5cGg7CisKKyAgICBjb25zdCBGVF9HbHlwaF9DbGFzcyogIGNsYXp6ID0gMDsKKworCisgICAgaWYgKCAhc2xvdCApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfU2xvdF9IYW5kbGUgKTsKKworICAgIGxpYnJhcnkgPSBzbG90LT5saWJyYXJ5OworCisgICAgaWYgKCAhYWdseXBoICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgLyogaWYgaXQgaXMgYSBiaXRtYXAsIHRoYXQncyBlYXN5IDotKSAqLworICAgIGlmICggc2xvdC0+Zm9ybWF0ID09IEZUX0dMWVBIX0ZPUk1BVF9CSVRNQVAgKQorICAgICAgY2xhenogPSBGVF9CSVRNQVBfR0xZUEhfQ0xBU1NfR0VUOworCisgICAgLyogaWYgaXQgaXMgYW4gb3V0bGluZSAqLworICAgIGVsc2UgaWYgKCBzbG90LT5mb3JtYXQgPT0gRlRfR0xZUEhfRk9STUFUX09VVExJTkUgKQorICAgICAgY2xhenogPSBGVF9PVVRMSU5FX0dMWVBIX0NMQVNTX0dFVDsKKworICAgIGVsc2UKKyAgICB7CisgICAgICAvKiB0cnkgdG8gZmluZCBhIHJlbmRlcmVyIHRoYXQgc3VwcG9ydHMgdGhlIGdseXBoIGltYWdlIGZvcm1hdCAqLworICAgICAgRlRfUmVuZGVyZXIgIHJlbmRlciA9IEZUX0xvb2t1cF9SZW5kZXJlciggbGlicmFyeSwgc2xvdC0+Zm9ybWF0LCAwICk7CisKKworICAgICAgaWYgKCByZW5kZXIgKQorICAgICAgICBjbGF6eiA9ICZyZW5kZXItPmdseXBoX2NsYXNzOworICAgIH0KKworICAgIGlmICggIWNsYXp6ICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0dseXBoX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIGNyZWF0ZSBGVF9HbHlwaCBvYmplY3QgKi8KKyAgICBlcnJvciA9IGZ0X25ld19nbHlwaCggbGlicmFyeSwgY2xhenosICZnbHlwaCApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogY29weSBhZHZhbmNlIHdoaWxlIGNvbnZlcnRpbmcgaXQgdG8gMTYuMTYgZm9ybWF0ICovCisgICAgZ2x5cGgtPmFkdmFuY2UueCA9IHNsb3QtPmFkdmFuY2UueCA8PCAxMDsKKyAgICBnbHlwaC0+YWR2YW5jZS55ID0gc2xvdC0+YWR2YW5jZS55IDw8IDEwOworCisgICAgLyogbm93IGltcG9ydCB0aGUgaW1hZ2UgZnJvbSB0aGUgZ2x5cGggc2xvdCAqLworICAgIGVycm9yID0gY2xhenotPmdseXBoX2luaXQoIGdseXBoLCBzbG90ICk7CisKKyAgICAvKiBpZiBhbiBlcnJvciBvY2N1cnJlZCwgZGVzdHJveSB0aGUgZ2x5cGggKi8KKyAgICBpZiAoIGVycm9yICkKKyAgICAgIEZUX0RvbmVfR2x5cGgoIGdseXBoICk7CisgICAgZWxzZQorICAgICAgKmFnbHlwaCA9IGdseXBoOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0Z2x5cGguaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfR2x5cGhfVHJhbnNmb3JtKCBGVF9HbHlwaCAgICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9NYXRyaXgqICBtYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgZGVsdGEgKQorICB7CisgICAgY29uc3QgRlRfR2x5cGhfQ2xhc3MqICBjbGF6ejsKKyAgICBGVF9FcnJvciAgICAgICAgICAgICAgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICBpZiAoICFnbHlwaCB8fCAhZ2x5cGgtPmNsYXp6ICkKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICBlbHNlCisgICAgeworICAgICAgY2xhenogPSBnbHlwaC0+Y2xheno7CisgICAgICBpZiAoIGNsYXp6LT5nbHlwaF90cmFuc2Zvcm0gKQorICAgICAgeworICAgICAgICAvKiB0cmFuc2Zvcm0gZ2x5cGggaW1hZ2UgKi8KKyAgICAgICAgY2xhenotPmdseXBoX3RyYW5zZm9ybSggZ2x5cGgsIG1hdHJpeCwgZGVsdGEgKTsKKworICAgICAgICAvKiB0cmFuc2Zvcm0gYWR2YW5jZSB2ZWN0b3IgKi8KKyAgICAgICAgaWYgKCBtYXRyaXggKQorICAgICAgICAgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0oICZnbHlwaC0+YWR2YW5jZSwgbWF0cml4ICk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfR2x5cGhfRm9ybWF0ICk7CisgICAgfQorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGdseXBoLmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfR2x5cGhfR2V0X0NCb3goIEZUX0dseXBoICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBiYm94X21vZGUsCisgICAgICAgICAgICAgICAgICAgICBGVF9CQm94ICAqYWNib3ggKQorICB7CisgICAgY29uc3QgRlRfR2x5cGhfQ2xhc3MqICBjbGF6ejsKKworCisgICAgaWYgKCAhYWNib3ggKQorICAgICAgcmV0dXJuOworCisgICAgYWNib3gtPnhNaW4gPSBhY2JveC0+eU1pbiA9IGFjYm94LT54TWF4ID0gYWNib3gtPnlNYXggPSAwOworCisgICAgaWYgKCAhZ2x5cGggfHwgIWdseXBoLT5jbGF6eiApCisgICAgICByZXR1cm47CisgICAgZWxzZQorICAgIHsKKyAgICAgIGNsYXp6ID0gZ2x5cGgtPmNsYXp6OworICAgICAgaWYgKCAhY2xhenotPmdseXBoX2Jib3ggKQorICAgICAgICByZXR1cm47CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIHJldHJpZXZlIGJib3ggaW4gMjYuNiBjb29yZGluYXRlcyAqLworICAgICAgICBjbGF6ei0+Z2x5cGhfYmJveCggZ2x5cGgsIGFjYm94ICk7CisKKyAgICAgICAgLyogcGVyZm9ybSBncmlkIGZpdHRpbmcgaWYgbmVlZGVkICovCisgICAgICAgIGlmICggYmJveF9tb2RlID09IEZUX0dMWVBIX0JCT1hfR1JJREZJVCB8fAorICAgICAgICAgICAgIGJib3hfbW9kZSA9PSBGVF9HTFlQSF9CQk9YX1BJWEVMUyAgKQorICAgICAgICB7CisgICAgICAgICAgYWNib3gtPnhNaW4gPSBGVF9QSVhfRkxPT1IoIGFjYm94LT54TWluICk7CisgICAgICAgICAgYWNib3gtPnlNaW4gPSBGVF9QSVhfRkxPT1IoIGFjYm94LT55TWluICk7CisgICAgICAgICAgYWNib3gtPnhNYXggPSBGVF9QSVhfQ0VJTCggYWNib3gtPnhNYXggKTsKKyAgICAgICAgICBhY2JveC0+eU1heCA9IEZUX1BJWF9DRUlMKCBhY2JveC0+eU1heCApOworICAgICAgICB9CisKKyAgICAgICAgLyogY29udmVydCB0byBpbnRlZ2VyIHBpeGVscyBpZiBuZWVkZWQgKi8KKyAgICAgICAgaWYgKCBiYm94X21vZGUgPT0gRlRfR0xZUEhfQkJPWF9UUlVOQ0FURSB8fAorICAgICAgICAgICAgIGJib3hfbW9kZSA9PSBGVF9HTFlQSF9CQk9YX1BJWEVMUyAgICkKKyAgICAgICAgeworICAgICAgICAgIGFjYm94LT54TWluID4+PSA2OworICAgICAgICAgIGFjYm94LT55TWluID4+PSA2OworICAgICAgICAgIGFjYm94LT54TWF4ID4+PSA2OworICAgICAgICAgIGFjYm94LT55TWF4ID4+PSA2OworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJldHVybjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGdseXBoLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dseXBoX1RvX0JpdG1hcCggRlRfR2x5cGgqICAgICAgIHRoZV9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgcmVuZGVyX21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgICAgIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgZGVzdHJveSApCisgIHsKKyAgICBGVF9HbHlwaFNsb3RSZWMgICAgICAgICAgIGR1bW15OworICAgIEZUX0dseXBoU2xvdF9JbnRlcm5hbFJlYyAgZHVtbXlfaW50ZXJuYWw7CisgICAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9HbHlwaCAgICAgICAgICAgICAgICAgIGIsIGdseXBoOworICAgIEZUX0JpdG1hcEdseXBoICAgICAgICAgICAgYml0bWFwID0gTlVMTDsKKyAgICBjb25zdCBGVF9HbHlwaF9DbGFzcyogICAgIGNsYXp6OworCisgICAgLyogRlRfQklUTUFQX0dMWVBIX0NMQVNTX0dFVCBkZXJlZmVycyBgbGlicmFyeScgaW4gUElDIG1vZGUgKi8KKyAgICBGVF9MaWJyYXJ5ICAgICAgICAgICAgICAgIGxpYnJhcnk7CisKKworICAgIC8qIGNoZWNrIGFyZ3VtZW50ICovCisgICAgaWYgKCAhdGhlX2dseXBoICkKKyAgICAgIGdvdG8gQmFkOworICAgIGdseXBoID0gKnRoZV9nbHlwaDsKKyAgICBpZiAoICFnbHlwaCApCisgICAgICBnb3RvIEJhZDsKKworICAgIGNsYXp6ICAgPSBnbHlwaC0+Y2xheno7CisgICAgbGlicmFyeSA9IGdseXBoLT5saWJyYXJ5OworICAgIGlmICggIWxpYnJhcnkgfHwgIWNsYXp6ICkKKyAgICAgIGdvdG8gQmFkOworCisgICAgLyogd2hlbiBjYWxsZWQgd2l0aCBhIGJpdG1hcCBnbHlwaCwgZG8gbm90aGluZyBhbmQgcmV0dXJuIHN1Y2Nlc3NmdWxseSAqLworICAgIGlmICggY2xhenogPT0gRlRfQklUTUFQX0dMWVBIX0NMQVNTX0dFVCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoICFjbGF6ei0+Z2x5cGhfcHJlcGFyZSApCisgICAgICBnb3RvIEJhZDsKKworICAgIC8qIHdlIHJlbmRlciB0aGUgZ2x5cGggaW50byBhIGdseXBoIGJpdG1hcCB1c2luZyBhIGBkdW1teScgZ2x5cGggc2xvdCAqLworICAgIC8qIHRoZW4gY2FsbGluZyBGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgRlRfTUVNX1pFUk8oICZkdW1teSwgc2l6ZW9mICggZHVtbXkgKSApOworICAgIEZUX01FTV9aRVJPKCAmZHVtbXlfaW50ZXJuYWwsIHNpemVvZiAoIGR1bW15X2ludGVybmFsICkgKTsKKyAgICBkdW1teS5pbnRlcm5hbCA9ICZkdW1teV9pbnRlcm5hbDsKKyAgICBkdW1teS5saWJyYXJ5ICA9IGxpYnJhcnk7CisgICAgZHVtbXkuZm9ybWF0ICAgPSBjbGF6ei0+Z2x5cGhfZm9ybWF0OworCisgICAgLyogY3JlYXRlIHJlc3VsdCBiaXRtYXAgZ2x5cGggKi8KKyAgICBlcnJvciA9IGZ0X25ld19nbHlwaCggbGlicmFyeSwgRlRfQklUTUFQX0dMWVBIX0NMQVNTX0dFVCwgJmIgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKyAgICBiaXRtYXAgPSAoRlRfQml0bWFwR2x5cGgpYjsKKworI2lmIDEKKyAgICAvKiBpZiBgb3JpZ2luJyBpcyBzZXQsIHRyYW5zbGF0ZSB0aGUgZ2x5cGggaW1hZ2UgKi8KKyAgICBpZiAoIG9yaWdpbiApCisgICAgICBGVF9HbHlwaF9UcmFuc2Zvcm0oIGdseXBoLCAwLCBvcmlnaW4gKTsKKyNlbHNlCisgICAgRlRfVU5VU0VEKCBvcmlnaW4gKTsKKyNlbmRpZgorCisgICAgLyogcHJlcGFyZSBkdW1teSBzbG90IGZvciByZW5kZXJpbmcgKi8KKyAgICBlcnJvciA9IGNsYXp6LT5nbHlwaF9wcmVwYXJlKCBnbHlwaCwgJmR1bW15ICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgICAgZXJyb3IgPSBGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwoIGdseXBoLT5saWJyYXJ5LCAmZHVtbXksIHJlbmRlcl9tb2RlICk7CisKKyNpZiAxCisgICAgaWYgKCAhZGVzdHJveSAmJiBvcmlnaW4gKQorICAgIHsKKyAgICAgIEZUX1ZlY3RvciAgdjsKKworCisgICAgICB2LnggPSAtb3JpZ2luLT54OworICAgICAgdi55ID0gLW9yaWdpbi0+eTsKKyAgICAgIEZUX0dseXBoX1RyYW5zZm9ybSggZ2x5cGgsIDAsICZ2ICk7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIGluIGNhc2Ugb2Ygc3VjY2VzcywgY29weSB0aGUgYml0bWFwIHRvIHRoZSBnbHlwaCBiaXRtYXAgKi8KKyAgICBlcnJvciA9IGZ0X2JpdG1hcF9nbHlwaF9pbml0KCAoRlRfR2x5cGgpYml0bWFwLCAmZHVtbXkgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIGNvcHkgYWR2YW5jZSAqLworICAgIGJpdG1hcC0+cm9vdC5hZHZhbmNlID0gZ2x5cGgtPmFkdmFuY2U7CisKKyAgICBpZiAoIGRlc3Ryb3kgKQorICAgICAgRlRfRG9uZV9HbHlwaCggZ2x5cGggKTsKKworICAgICp0aGVfZ2x5cGggPSBGVF9HTFlQSCggYml0bWFwICk7CisKKyAgRXhpdDoKKyAgICBpZiAoIGVycm9yICYmIGJpdG1hcCApCisgICAgICBGVF9Eb25lX0dseXBoKCBGVF9HTFlQSCggYml0bWFwICkgKTsKKworICAgIHJldHVybiBlcnJvcjsKKworICBCYWQ6CisgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgIGdvdG8gRXhpdDsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdGdseXBoLmggKi8KKworICBGVF9FWFBPUlRfREVGKCB2b2lkICkKKyAgRlRfRG9uZV9HbHlwaCggRlRfR2x5cGggIGdseXBoICkKKyAgeworICAgIGlmICggZ2x5cGggKQorICAgIHsKKyAgICAgIEZUX01lbW9yeSAgICAgICAgICAgICAgbWVtb3J5ID0gZ2x5cGgtPmxpYnJhcnktPm1lbW9yeTsKKyAgICAgIGNvbnN0IEZUX0dseXBoX0NsYXNzKiAgY2xhenogID0gZ2x5cGgtPmNsYXp6OworCisKKyAgICAgIGlmICggY2xhenotPmdseXBoX2RvbmUgKQorICAgICAgICBjbGF6ei0+Z2x5cGhfZG9uZSggZ2x5cGggKTsKKworICAgICAgRlRfRlJFRSggZ2x5cGggKTsKKyAgICB9CisgIH0KKworCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGluaXQuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9meGZ0X2Z0aW5pdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YmYxZjkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGluaXQuYwpAQCAtMCwwICsxLDI4NSBAQAorI2lmICFkZWZpbmVkKF9GWEZUX1ZFUlNJT05fKSB8fCBfRlhGVF9WRVJTSU9OXyA9PSAyNTAxCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGluaXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgaW5pdGlhbGl6YXRpb24gbGF5ZXIgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMiwgMjAwNSwgMjAwNywgMjAwOSwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFRoZSBwdXJwb3NlIG9mIHRoaXMgZmlsZSBpcyB0byBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyB0d28gICAgICAgICAgICovCisgIC8qICBmdW5jdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIEZUX0FkZF9EZWZhdWx0X01vZHVsZXMoKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYWRkIHRoZSBzZXQgb2YgZGVmYXVsdCBtb2R1bGVzIHRvIGEgICAgICAqLworICAvKiAgICAgZnJlc2ggbmV3IGxpYnJhcnkgb2JqZWN0LiAgVGhlIHNldCBpcyB0YWtlbiBmcm9tIHRoZSBoZWFkZXIgZmlsZSAgKi8KKyAgLyogICAgIGBmcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCcuICBTZWUgdGhlIGRvY3VtZW50IGBGcmVlVHlwZSAyLjAgICAgICovCisgIC8qICAgICBCdWlsZCBTeXN0ZW0nIGZvciBtb3JlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIEZUX0luaXRfRnJlZVR5cGUoKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBzeXN0ZW0gb2JqZWN0IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSwgICAqLworICAvKiAgICAgYnVpbGRzIGEgbGlicmFyeSBvdXQgb2YgaXQsIHRoZW4gY2FsbHMgRlRfRGVmYXVsdF9Ecml2ZXJzKCkuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBOb3RlIHRoYXQgZXZlbiBpZiBGVF9Jbml0X0ZyZWVUeXBlKCkgdXNlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlICAqLworICAvKiAgc3lzdGVtIG9iamVjdCBkZWZpbmVkIGF0IGJ1aWxkIHRpbWUsIGNsaWVudCBhcHBsaWNhdGlvbnMgYXJlIHN0aWxsICAgKi8KKyAgLyogIGFibGUgdG8gcHJvdmlkZSB0aGVpciBvd24gYGZ0c3lzdGVtLmMnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBGVDJfQlVJTERfTElCUkFSWQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1vZGFwaS5oIgorI2luY2x1ZGUgImJhc2VwaWMuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX2luaXQKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKworI3VuZGVmICBGVF9VU0VfTU9EVUxFCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgRlRfVVNFX01PRFVMRSggdHlwZSwgeCApICBleHRlcm4gIkMiIGNvbnN0IHR5cGUgIHg7CisjZWxzZQorI2RlZmluZSBGVF9VU0VfTU9EVUxFKCB0eXBlLCB4ICkgIGV4dGVybiBjb25zdCB0eXBlICB4OworI2VuZGlmCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oIgorCisjdW5kZWYgIEZUX1VTRV9NT0RVTEUKKyNkZWZpbmUgRlRfVVNFX01PRFVMRSggdHlwZSwgeCApICAoY29uc3QgRlRfTW9kdWxlX0NsYXNzKikmKHgpLAorCisgIHN0YXRpYworICBjb25zdCBGVF9Nb2R1bGVfQ2xhc3MqICBjb25zdCBmdF9kZWZhdWx0X21vZHVsZXNbXSA9CisgIHsKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oIgorICAgIDAKKyAgfTsKKworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBGVF9FWFRFUk5DICBleHRlcm4gIkMiCisjZWxzZQorI2RlZmluZSBGVF9FWFRFUk5DICBleHRlcm4KKyNlbmRpZgorCisgIC8qIGRlY2xhcmUgdGhlIG1vZHVsZSdzIGNsYXNzIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGZ1bmN0aW9ucyAqLworI3VuZGVmICBGVF9VU0VfTU9EVUxFCisjZGVmaW5lIEZUX1VTRV9NT0RVTEUoIHR5cGUsIHggKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0VYVEVSTkMgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0NyZWF0ZV9DbGFzc18gIyMgeCggRlRfTGlicmFyeSAgICAgICAgIGxpYnJhcnksICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTW9kdWxlX0NsYXNzKiAgKm91dHB1dF9jbGFzcyApOyBcCisgIEZUX0VYVEVSTkMgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIHgoIEZUX0xpYnJhcnkgICAgICAgIGxpYnJhcnksICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01vZHVsZV9DbGFzcyogIGNsYXp6ICk7CisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oIgorCisgIC8qIGNvdW50IGFsbCBtb2R1bGUgY2xhc3NlcyAqLworI3VuZGVmICBGVF9VU0VfTU9EVUxFCisjZGVmaW5lIEZUX1VTRV9NT0RVTEUoIHR5cGUsIHggKSAgTU9EVUxFX0NMQVNTXyAjIyB4LAorCisgIGVudW0KKyAgeworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgiCisgICAgRlRfTlVNX01PRFVMRV9DTEFTU0VTCisgIH07CisKKyAgLyogZGVzdHJveSBhbGwgbW9kdWxlIGNsYXNzZXMgKi8KKyN1bmRlZiAgRlRfVVNFX01PRFVMRQorI2RlZmluZSBGVF9VU0VfTU9EVUxFKCB0eXBlLCB4ICkgICAgICAgICAgICAgICAgICAgXAorICBpZiAoIGNsYXNzZXNbaV0gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX0Rlc3Ryb3lfQ2xhc3NfICMjIHgoIGxpYnJhcnksIGNsYXNzZXNbaV0gKTsgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpKys7CisKKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIGZ0X2Rlc3Ryb3lfZGVmYXVsdF9tb2R1bGVfY2xhc3NlcyggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9Nb2R1bGVfQ2xhc3MqICAqY2xhc3NlczsKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5OworICAgIEZUX1VJbnQgICAgICAgICAgICBpOworICAgIEJhc2VQSUMqICAgICAgICAgICBwaWNfY29udGFpbmVyID0gKEJhc2VQSUMqKWxpYnJhcnktPnBpY19jb250YWluZXIuYmFzZTsKKworCisgICAgaWYgKCAhcGljX2NvbnRhaW5lci0+ZGVmYXVsdF9tb2R1bGVfY2xhc3NlcyApCisgICAgICByZXR1cm47CisKKyAgICBtZW1vcnkgID0gbGlicmFyeS0+bWVtb3J5OworICAgIGNsYXNzZXMgPSBwaWNfY29udGFpbmVyLT5kZWZhdWx0X21vZHVsZV9jbGFzc2VzOworICAgIGkgICAgICAgPSAwOworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCIKKworICAgIEZUX0ZSRUUoIGNsYXNzZXMgKTsKKyAgICBwaWNfY29udGFpbmVyLT5kZWZhdWx0X21vZHVsZV9jbGFzc2VzID0gMDsKKyAgfQorCisKKyAgLyogaW5pdGlhbGl6ZSBhbGwgbW9kdWxlIGNsYXNzZXMgYW5kIHRoZSBwb2ludGVyIHRhYmxlICovCisjdW5kZWYgIEZUX1VTRV9NT0RVTEUKKyNkZWZpbmUgRlRfVVNFX01PRFVMRSggdHlwZSwgeCApICAgICAgICAgICAgICAgICAgICAgXAorICBlcnJvciA9IEZUX0NyZWF0ZV9DbGFzc18gIyMgeCggbGlicmFyeSwgJmNsYXp6ICk7ICBcCisgIGlmICggZXJyb3IgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnb3RvIEV4aXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBjbGFzc2VzW2krK10gPSBjbGF6ejsKKworCisgIEZUX0JBU0VfREVGKCBGVF9FcnJvciApCisgIGZ0X2NyZWF0ZV9kZWZhdWx0X21vZHVsZV9jbGFzc2VzKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgICAgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5OworICAgIEZUX01vZHVsZV9DbGFzcyogICpjbGFzc2VzID0gTlVMTDsKKyAgICBGVF9Nb2R1bGVfQ2xhc3MqICAgY2xheno7CisgICAgRlRfVUludCAgICAgICAgICAgIGk7CisgICAgQmFzZVBJQyogICAgICAgICAgIHBpY19jb250YWluZXIgPSAoQmFzZVBJQyopbGlicmFyeS0+cGljX2NvbnRhaW5lci5iYXNlOworCisKKyAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisKKyAgICBwaWNfY29udGFpbmVyLT5kZWZhdWx0X21vZHVsZV9jbGFzc2VzID0gMDsKKworICAgIGlmICggRlRfQUxMT0MoIGNsYXNzZXMsIHNpemVvZiAoIEZUX01vZHVsZV9DbGFzcyogKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIEZUX05VTV9NT0RVTEVfQ0xBU1NFUyArIDEgKSApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIC8qIGluaXRpYWxpemUgYWxsIHBvaW50ZXJzIHRvIDAsIGVzcGVjaWFsbHkgdGhlIGxhc3Qgb25lICovCisgICAgZm9yICggaSA9IDA7IGkgPCBGVF9OVU1fTU9EVUxFX0NMQVNTRVM7IGkrKyApCisgICAgICBjbGFzc2VzW2ldID0gMDsKKyAgICBjbGFzc2VzW0ZUX05VTV9NT0RVTEVfQ0xBU1NFU10gPSAwOworCisgICAgaSA9IDA7CisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oIgorCisgIEV4aXQ6CisgICAgaWYgKCBlcnJvciApCisgICAgICBmdF9kZXN0cm95X2RlZmF1bHRfbW9kdWxlX2NsYXNzZXMoIGxpYnJhcnkgKTsKKyAgICBlbHNlCisgICAgICBwaWNfY29udGFpbmVyLT5kZWZhdWx0X21vZHVsZV9jbGFzc2VzID0gY2xhc3NlczsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG1vZGFwaS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggdm9pZCApCisgIEZUX0FkZF9EZWZhdWx0X01vZHVsZXMoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOworICAgIGNvbnN0IEZUX01vZHVsZV9DbGFzcyogY29uc3QqICBjdXI7CisKKworICAgIC8qIEZUX0RFRkFVTFRfTU9EVUxFU19HRVQgZGVyZWZlcmVuY2VzIGBsaWJyYXJ5JyBpbiBQSUMgbW9kZSAqLworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisgICAgaWYgKCAhbGlicmFyeSApCisgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIC8qIEdDQyA0LjYgd2FybnMgdGhlIHR5cGUgZGlmZmVyZW5jZToKKyAgICAgKiAgIEZUX01vZHVsZV9DbGFzcyoqICE9IGNvbnN0IEZUX01vZHVsZV9DbGFzcyogY29uc3QqCisgICAgICovCisgICAgY3VyID0gKGNvbnN0IEZUX01vZHVsZV9DbGFzcyogY29uc3QqKUZUX0RFRkFVTFRfTU9EVUxFU19HRVQ7CisKKyAgICAvKiB0ZXN0IGZvciB2YWxpZCBgbGlicmFyeScgZGVsYXllZCB0byBGVF9BZGRfTW9kdWxlKCkgKi8KKyAgICB3aGlsZSAoICpjdXIgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfQWRkX01vZHVsZSggbGlicmFyeSwgKmN1ciApOworICAgICAgLyogbm90aWZ5IGVycm9ycywgYnV0IGRvbid0IHN0b3AgKi8KKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBGVF9UUkFDRTAoKCAiRlRfQWRkX0RlZmF1bHRfTW9kdWxlOiIKKyAgICAgICAgICAgICAgICAgICAgIiBDYW5ub3QgaW5zdGFsbCBgJXMnLCBlcnJvciA9IDB4JXhcbiIsCisgICAgICAgICAgICAgICAgICAgICgqY3VyKS0+bW9kdWxlX25hbWUsIGVycm9yICkpOworICAgICAgY3VyKys7CisgICAgfQorICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZyZWV0eXBlLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0luaXRfRnJlZVR5cGUoIEZUX0xpYnJhcnkgICphbGlicmFyeSApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX01lbW9yeSAgbWVtb3J5OworCisKKyAgICAvKiBGaXJzdCBvZiBhbGwsIGFsbG9jYXRlIGEgbmV3IHN5c3RlbSBvYmplY3QgLS0gdGhpcyBmdW5jdGlvbiBpcyBwYXJ0ICovCisgICAgLyogb2YgdGhlIHN5c3RlbS1zcGVjaWZpYyBjb21wb25lbnQsIGkuZS4gYGZ0c3lzdGVtLmMnLiAgICAgICAgICAgICAgICAqLworCisgICAgbWVtb3J5ID0gRlRfTmV3X01lbW9yeSgpOworICAgIGlmICggIW1lbW9yeSApCisgICAgeworICAgICAgRlRfRVJST1IoKCAiRlRfSW5pdF9GcmVlVHlwZTogY2Fubm90IGZpbmQgbWVtb3J5IG1hbmFnZXJcbiIgKSk7CisgICAgICByZXR1cm4gRlRfVEhST1coIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApOworICAgIH0KKworICAgIC8qIGJ1aWxkIGEgbGlicmFyeSBvdXQgb2YgaXQsIHRoZW4gZmlsbCBpdCB3aXRoIHRoZSBzZXQgb2YgKi8KKyAgICAvKiBkZWZhdWx0IGRyaXZlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICBlcnJvciA9IEZUX05ld19MaWJyYXJ5KCBtZW1vcnksIGFsaWJyYXJ5ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBGVF9Eb25lX01lbW9yeSggbWVtb3J5ICk7CisgICAgZWxzZQorICAgICAgRlRfQWRkX0RlZmF1bHRfTW9kdWxlcyggKmFsaWJyYXJ5ICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnJlZXR5cGUuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfRG9uZV9GcmVlVHlwZSggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBpZiAoIGxpYnJhcnkgKQorICAgIHsKKyAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICAgIC8qIERpc2NhcmQgdGhlIGxpYnJhcnkgb2JqZWN0ICovCisgICAgICBGVF9Eb25lX0xpYnJhcnkoIGxpYnJhcnkgKTsKKworICAgICAgLyogZGlzY2FyZCBtZW1vcnkgbWFuYWdlciAqLworICAgICAgRlRfRG9uZV9NZW1vcnkoIG1lbW9yeSApOworICAgIH0KKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGxjZGZpbC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z4ZnRfZnRsY2RmaWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjY3NmRlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z4ZnRfZnRsY2RmaWwuYwpAQCAtMCwwICsxLDM4MSBAQAorI2lmICFkZWZpbmVkKF9GWEZUX1ZFUlNJT05fKSB8fCBfRlhGVF9WRVJTSU9OXyA9PSAyNTAxCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdGxjZGZpbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgQVBJIGZvciBjb2xvciBmaWx0ZXJpbmcgb2Ygc3VicGl4ZWwgYml0bWFwIGdseXBocyAoYm9keSkuICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDYsIDIwMDgtMjAxMCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEZUMl9CVUlMRF9MSUJSQVJZCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGxjZGZpbC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfUkVOREVSSU5HCisKKy8qIGRlZmluZSBVU0VfTEVHQUNZIHRvIGltcGxlbWVudCB0aGUgbGVnYWN5IGZpbHRlciAqLworI2RlZmluZSAgVVNFX0xFR0FDWQorCisgIC8qIEZJUiBmaWx0ZXIgdXNlZCBieSB0aGUgZGVmYXVsdCBhbmQgbGlnaHQgZmlsdGVycyAqLworICBzdGF0aWMgdm9pZAorICBfZnRfbGNkX2ZpbHRlcl9maXIoIEZUX0JpdG1hcCogICAgICBiaXRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTGlicmFyeSAgICAgIGxpYnJhcnkgKQorICB7CisgICAgRlRfQnl0ZSogIHdlaWdodHMgPSBsaWJyYXJ5LT5sY2Rfd2VpZ2h0czsKKyAgICBGVF9VSW50ICAgd2lkdGggICA9IChGVF9VSW50KWJpdG1hcC0+d2lkdGg7CisgICAgRlRfVUludCAgIGhlaWdodCAgPSAoRlRfVUludCliaXRtYXAtPnJvd3M7CisKKworICAgIC8qIGhvcml6b250YWwgaW4tcGxhY2UgRklSIGZpbHRlciAqLworICAgIGlmICggbW9kZSA9PSBGVF9SRU5ERVJfTU9ERV9MQ0QgJiYgd2lkdGggPj0gNCApCisgICAgeworICAgICAgRlRfQnl0ZSogIGxpbmUgPSBiaXRtYXAtPmJ1ZmZlcjsKKworCisgICAgICBmb3IgKCA7IGhlaWdodCA+IDA7IGhlaWdodC0tLCBsaW5lICs9IGJpdG1hcC0+cGl0Y2ggKQorICAgICAgeworICAgICAgICBGVF9VSW50ICBmaXJbNV07CisgICAgICAgIEZUX1VJbnQgIHZhbDEsIHh4OworCisKKyAgICAgICAgdmFsMSAgID0gbGluZVswXTsKKyAgICAgICAgZmlyWzBdID0gd2VpZ2h0c1syXSAqIHZhbDE7CisgICAgICAgIGZpclsxXSA9IHdlaWdodHNbM10gKiB2YWwxOworICAgICAgICBmaXJbMl0gPSB3ZWlnaHRzWzRdICogdmFsMTsKKyAgICAgICAgZmlyWzNdID0gMDsKKyAgICAgICAgZmlyWzRdID0gMDsKKworICAgICAgICB2YWwxICAgID0gbGluZVsxXTsKKyAgICAgICAgZmlyWzBdICs9IHdlaWdodHNbMV0gKiB2YWwxOworICAgICAgICBmaXJbMV0gKz0gd2VpZ2h0c1syXSAqIHZhbDE7CisgICAgICAgIGZpclsyXSArPSB3ZWlnaHRzWzNdICogdmFsMTsKKyAgICAgICAgZmlyWzNdICs9IHdlaWdodHNbNF0gKiB2YWwxOworCisgICAgICAgIGZvciAoIHh4ID0gMjsgeHggPCB3aWR0aDsgeHgrKyApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9VSW50ICB2YWwsIHBpeDsKKworCisgICAgICAgICAgdmFsICAgID0gbGluZVt4eF07CisgICAgICAgICAgcGl4ICAgID0gZmlyWzBdICsgd2VpZ2h0c1swXSAqIHZhbDsKKyAgICAgICAgICBmaXJbMF0gPSBmaXJbMV0gKyB3ZWlnaHRzWzFdICogdmFsOworICAgICAgICAgIGZpclsxXSA9IGZpclsyXSArIHdlaWdodHNbMl0gKiB2YWw7CisgICAgICAgICAgZmlyWzJdID0gZmlyWzNdICsgd2VpZ2h0c1szXSAqIHZhbDsKKyAgICAgICAgICBmaXJbM10gPSAgICAgICAgICB3ZWlnaHRzWzRdICogdmFsOworCisgICAgICAgICAgcGl4ICAgICAgICA+Pj0gODsKKyAgICAgICAgICBwaXggICAgICAgICB8PSAoRlRfVUludCktKEZUX0ludCkoIHBpeCA+PiA4ICk7CisgICAgICAgICAgbGluZVt4eCAtIDJdID0gKEZUX0J5dGUpcGl4OworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgIEZUX1VJbnQgIHBpeDsKKworCisgICAgICAgICAgcGl4ICAgICAgICAgID0gZmlyWzBdID4+IDg7CisgICAgICAgICAgcGl4ICAgICAgICAgfD0gKEZUX1VJbnQpLShGVF9JbnQpKCBwaXggPj4gOCApOworICAgICAgICAgIGxpbmVbeHggLSAyXSA9IChGVF9CeXRlKXBpeDsKKworICAgICAgICAgIHBpeCAgICAgICAgICA9IGZpclsxXSA+PiA4OworICAgICAgICAgIHBpeCAgICAgICAgIHw9IChGVF9VSW50KS0oRlRfSW50KSggcGl4ID4+IDggKTsKKyAgICAgICAgICBsaW5lW3h4IC0gMV0gPSAoRlRfQnl0ZSlwaXg7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiB2ZXJ0aWNhbCBpbi1wbGFjZSBGSVIgZmlsdGVyICovCisgICAgZWxzZSBpZiAoIG1vZGUgPT0gRlRfUkVOREVSX01PREVfTENEX1YgJiYgaGVpZ2h0ID49IDQgKQorICAgIHsKKyAgICAgIEZUX0J5dGUqICBjb2x1bW4gPSBiaXRtYXAtPmJ1ZmZlcjsKKyAgICAgIEZUX0ludCAgICBwaXRjaCAgPSBiaXRtYXAtPnBpdGNoOworCisKKyAgICAgIGZvciAoIDsgd2lkdGggPiAwOyB3aWR0aC0tLCBjb2x1bW4rKyApCisgICAgICB7CisgICAgICAgIEZUX0J5dGUqICBjb2wgPSBjb2x1bW47CisgICAgICAgIEZUX1VJbnQgICBmaXJbNV07CisgICAgICAgIEZUX1VJbnQgICB2YWwxLCB5eTsKKworCisgICAgICAgIHZhbDEgICA9IGNvbFswXTsKKyAgICAgICAgZmlyWzBdID0gd2VpZ2h0c1syXSAqIHZhbDE7CisgICAgICAgIGZpclsxXSA9IHdlaWdodHNbM10gKiB2YWwxOworICAgICAgICBmaXJbMl0gPSB3ZWlnaHRzWzRdICogdmFsMTsKKyAgICAgICAgZmlyWzNdID0gMDsKKyAgICAgICAgZmlyWzRdID0gMDsKKyAgICAgICAgY29sICAgKz0gcGl0Y2g7CisKKyAgICAgICAgdmFsMSAgICA9IGNvbFswXTsKKyAgICAgICAgZmlyWzBdICs9IHdlaWdodHNbMV0gKiB2YWwxOworICAgICAgICBmaXJbMV0gKz0gd2VpZ2h0c1syXSAqIHZhbDE7CisgICAgICAgIGZpclsyXSArPSB3ZWlnaHRzWzNdICogdmFsMTsKKyAgICAgICAgZmlyWzNdICs9IHdlaWdodHNbNF0gKiB2YWwxOworICAgICAgICBjb2wgICAgKz0gcGl0Y2g7CisKKyAgICAgICAgZm9yICggeXkgPSAyOyB5eSA8IGhlaWdodDsgeXkrKyApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9VSW50ICB2YWwsIHBpeDsKKworCisgICAgICAgICAgdmFsICAgID0gY29sWzBdOworICAgICAgICAgIHBpeCAgICA9IGZpclswXSArIHdlaWdodHNbMF0gKiB2YWw7CisgICAgICAgICAgZmlyWzBdID0gZmlyWzFdICsgd2VpZ2h0c1sxXSAqIHZhbDsKKyAgICAgICAgICBmaXJbMV0gPSBmaXJbMl0gKyB3ZWlnaHRzWzJdICogdmFsOworICAgICAgICAgIGZpclsyXSA9IGZpclszXSArIHdlaWdodHNbM10gKiB2YWw7CisgICAgICAgICAgZmlyWzNdID0gICAgICAgICAgd2VpZ2h0c1s0XSAqIHZhbDsKKworICAgICAgICAgIHBpeCAgICAgICAgICAgPj49IDg7CisgICAgICAgICAgcGl4ICAgICAgICAgICAgfD0gKEZUX1VJbnQpLShGVF9JbnQpKCBwaXggPj4gOCApOworICAgICAgICAgIGNvbFstMiAqIHBpdGNoXSA9IChGVF9CeXRlKXBpeDsKKyAgICAgICAgICBjb2wgICAgICAgICAgICArPSBwaXRjaDsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICBGVF9VSW50ICBwaXg7CisKKworICAgICAgICAgIHBpeCAgICAgICAgICAgICA9IGZpclswXSA+PiA4OworICAgICAgICAgIHBpeCAgICAgICAgICAgIHw9IChGVF9VSW50KS0oRlRfSW50KSggcGl4ID4+IDggKTsKKyAgICAgICAgICBjb2xbLTIgKiBwaXRjaF0gPSAoRlRfQnl0ZSlwaXg7CisKKyAgICAgICAgICBwaXggICAgICAgICA9IGZpclsxXSA+PiA4OworICAgICAgICAgIHBpeCAgICAgICAgICAgIHw9IChGVF9VSW50KS0oRlRfSW50KSggcGl4ID4+IDggKTsKKyAgICAgICAgICBjb2xbLXBpdGNoXSA9IChGVF9CeXRlKXBpeDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisKKyNpZmRlZiBVU0VfTEVHQUNZCisKKyAgLyogaW50cmEtcGl4ZWwgZmlsdGVyIHVzZWQgYnkgdGhlIGxlZ2FjeSBmaWx0ZXIgKi8KKyAgc3RhdGljIHZvaWQKKyAgX2Z0X2xjZF9maWx0ZXJfbGVnYWN5KCBGVF9CaXRtYXAqICAgICAgYml0bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcl9Nb2RlICBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xpYnJhcnkgICAgICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX1VJbnQgIHdpZHRoICA9IChGVF9VSW50KWJpdG1hcC0+d2lkdGg7CisgICAgRlRfVUludCAgaGVpZ2h0ID0gKEZUX1VJbnQpYml0bWFwLT5yb3dzOworICAgIEZUX0ludCAgIHBpdGNoICA9IGJpdG1hcC0+cGl0Y2g7CisKKyAgICBzdGF0aWMgY29uc3QgaW50ICBmaWx0ZXJzWzNdWzNdID0KKyAgICB7CisgICAgICB7IDY1NTM4ICogOS8xMywgNjU1MzggKiAxLzYsIDY1NTM4ICogMS8xMyB9LAorICAgICAgeyA2NTUzOCAqIDMvMTMsIDY1NTM4ICogNC82LCA2NTUzOCAqIDMvMTMgfSwKKyAgICAgIHsgNjU1MzggKiAxLzEzLCA2NTUzOCAqIDEvNiwgNjU1MzggKiA5LzEzIH0KKyAgICB9OworCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7CisKKworICAgIC8qIGhvcml6b250YWwgaW4tcGxhY2UgaW50cmEtcGl4ZWwgZmlsdGVyICovCisgICAgaWYgKCBtb2RlID09IEZUX1JFTkRFUl9NT0RFX0xDRCAmJiB3aWR0aCA+PSAzICkKKyAgICB7CisgICAgICBGVF9CeXRlKiAgbGluZSA9IGJpdG1hcC0+YnVmZmVyOworCisKKyAgICAgIGZvciAoIDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0sIGxpbmUgKz0gcGl0Y2ggKQorICAgICAgeworICAgICAgICBGVF9VSW50ICB4eDsKKworCisgICAgICAgIGZvciAoIHh4ID0gMDsgeHggPCB3aWR0aDsgeHggKz0gMyApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9VSW50ICByID0gMDsKKyAgICAgICAgICBGVF9VSW50ICBnID0gMDsKKyAgICAgICAgICBGVF9VSW50ICBiID0gMDsKKyAgICAgICAgICBGVF9VSW50ICBwOworCisKKyAgICAgICAgICBwICA9IGxpbmVbeHhdOworICAgICAgICAgIHIgKz0gZmlsdGVyc1swXVswXSAqIHA7CisgICAgICAgICAgZyArPSBmaWx0ZXJzWzBdWzFdICogcDsKKyAgICAgICAgICBiICs9IGZpbHRlcnNbMF1bMl0gKiBwOworCisgICAgICAgICAgcCAgPSBsaW5lW3h4ICsgMV07CisgICAgICAgICAgciArPSBmaWx0ZXJzWzFdWzBdICogcDsKKyAgICAgICAgICBnICs9IGZpbHRlcnNbMV1bMV0gKiBwOworICAgICAgICAgIGIgKz0gZmlsdGVyc1sxXVsyXSAqIHA7CisKKyAgICAgICAgICBwICA9IGxpbmVbeHggKyAyXTsKKyAgICAgICAgICByICs9IGZpbHRlcnNbMl1bMF0gKiBwOworICAgICAgICAgIGcgKz0gZmlsdGVyc1syXVsxXSAqIHA7CisgICAgICAgICAgYiArPSBmaWx0ZXJzWzJdWzJdICogcDsKKworICAgICAgICAgIGxpbmVbeHhdICAgICA9IChGVF9CeXRlKSggciAvIDY1NTM2ICk7CisgICAgICAgICAgbGluZVt4eCArIDFdID0gKEZUX0J5dGUpKCBnIC8gNjU1MzYgKTsKKyAgICAgICAgICBsaW5lW3h4ICsgMl0gPSAoRlRfQnl0ZSkoIGIgLyA2NTUzNiApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKCBtb2RlID09IEZUX1JFTkRFUl9NT0RFX0xDRF9WICYmIGhlaWdodCA+PSAzICkKKyAgICB7CisgICAgICBGVF9CeXRlKiAgY29sdW1uID0gYml0bWFwLT5idWZmZXI7CisKKworICAgICAgZm9yICggOyB3aWR0aCA+IDA7IHdpZHRoLS0sIGNvbHVtbisrICkKKyAgICAgIHsKKyAgICAgICAgRlRfQnl0ZSogIGNvbCAgICAgPSBjb2x1bW47CisgICAgICAgIEZUX0J5dGUqICBjb2xfZW5kID0gY29sICsgaGVpZ2h0ICogcGl0Y2g7CisKKworICAgICAgICBmb3IgKCA7IGNvbCA8IGNvbF9lbmQ7IGNvbCArPSAzICogcGl0Y2ggKQorICAgICAgICB7CisgICAgICAgICAgRlRfVUludCAgciA9IDA7CisgICAgICAgICAgRlRfVUludCAgZyA9IDA7CisgICAgICAgICAgRlRfVUludCAgYiA9IDA7CisgICAgICAgICAgRlRfVUludCAgcDsKKworCisgICAgICAgICAgcCAgPSBjb2xbMF07CisgICAgICAgICAgciArPSBmaWx0ZXJzWzBdWzBdICogcDsKKyAgICAgICAgICBnICs9IGZpbHRlcnNbMF1bMV0gKiBwOworICAgICAgICAgIGIgKz0gZmlsdGVyc1swXVsyXSAqIHA7CisKKyAgICAgICAgICBwICA9IGNvbFtwaXRjaF07CisgICAgICAgICAgciArPSBmaWx0ZXJzWzFdWzBdICogcDsKKyAgICAgICAgICBnICs9IGZpbHRlcnNbMV1bMV0gKiBwOworICAgICAgICAgIGIgKz0gZmlsdGVyc1sxXVsyXSAqIHA7CisKKyAgICAgICAgICBwICA9IGNvbFtwaXRjaCAqIDJdOworICAgICAgICAgIHIgKz0gZmlsdGVyc1syXVswXSAqIHA7CisgICAgICAgICAgZyArPSBmaWx0ZXJzWzJdWzFdICogcDsKKyAgICAgICAgICBiICs9IGZpbHRlcnNbMl1bMl0gKiBwOworCisgICAgICAgICAgY29sWzBdICAgICAgICAgPSAoRlRfQnl0ZSkoIHIgLyA2NTUzNiApOworICAgICAgICAgIGNvbFtwaXRjaF0gICAgID0gKEZUX0J5dGUpKCBnIC8gNjU1MzYgKTsKKyAgICAgICAgICBjb2xbMiAqIHBpdGNoXSA9IChGVF9CeXRlKSggYiAvIDY1NTM2ICk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworI2VuZGlmIC8qIFVTRV9MRUdBQ1kgKi8KKworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfTGlicmFyeV9TZXRMY2RGaWx0ZXJXZWlnaHRzKCBGVF9MaWJyYXJ5ICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICAqd2VpZ2h0cyApCisgIHsKKyAgICBpZiAoICFsaWJyYXJ5IHx8ICF3ZWlnaHRzICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgZnRfbWVtY3B5KCBsaWJyYXJ5LT5sY2Rfd2VpZ2h0cywgd2VpZ2h0cywgNSApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9MaWJyYXJ5X1NldExjZEZpbHRlciggRlRfTGlicmFyeSAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTGNkRmlsdGVyICBmaWx0ZXIgKQorICB7CisgICAgc3RhdGljIGNvbnN0IEZUX0J5dGUgIGxpZ2h0X2ZpbHRlcls1XSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAweDAwLCAweDU1LCAweDU2LCAweDU1LCAweDAwIH07CisgICAgLyogdGhlIHZhbHVlcyBoZXJlIHN1bSB1cCB0byBhIHZhbHVlIGxhcmdlciB0aGFuIDI1NiwgKi8KKyAgICAvKiBwcm92aWRpbmcgYSBjaGVhcCBnYW1tYSBjb3JyZWN0aW9uICAgICAgICAgICAgICAgICAqLworICAgIHN0YXRpYyBjb25zdCBGVF9CeXRlICBkZWZhdWx0X2ZpbHRlcls1XSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAweDEwLCAweDQwLCAweDcwLCAweDQwLCAweDEwIH07CisKKworICAgIGlmICggIWxpYnJhcnkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBzd2l0Y2ggKCBmaWx0ZXIgKQorICAgIHsKKyAgICBjYXNlIEZUX0xDRF9GSUxURVJfTk9ORToKKyAgICAgIGxpYnJhcnktPmxjZF9maWx0ZXJfZnVuYyA9IE5VTEw7CisgICAgICBsaWJyYXJ5LT5sY2RfZXh0cmEgICAgICAgPSAwOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZUX0xDRF9GSUxURVJfREVGQVVMVDoKKyNpZiBkZWZpbmVkKCBGVF9GT1JDRV9MRUdBQ1lfTENEX0ZJTFRFUiApCisKKyAgICAgIGxpYnJhcnktPmxjZF9maWx0ZXJfZnVuYyA9IF9mdF9sY2RfZmlsdGVyX2xlZ2FjeTsKKyAgICAgIGxpYnJhcnktPmxjZF9leHRyYSAgICAgICA9IDA7CisKKyNlbGlmIGRlZmluZWQoIEZUX0ZPUkNFX0xJR0hUX0xDRF9GSUxURVIgKQorCisgICAgICBmdF9tZW1jcHkoIGxpYnJhcnktPmxjZF93ZWlnaHRzLCBsaWdodF9maWx0ZXIsIDUgKTsKKyAgICAgIGxpYnJhcnktPmxjZF9maWx0ZXJfZnVuYyA9IF9mdF9sY2RfZmlsdGVyX2ZpcjsKKyAgICAgIGxpYnJhcnktPmxjZF9leHRyYSAgICAgICA9IDI7CisKKyNlbHNlCisKKyAgICAgIGZ0X21lbWNweSggbGlicmFyeS0+bGNkX3dlaWdodHMsIGRlZmF1bHRfZmlsdGVyLCA1ICk7CisgICAgICBsaWJyYXJ5LT5sY2RfZmlsdGVyX2Z1bmMgPSBfZnRfbGNkX2ZpbHRlcl9maXI7CisgICAgICBsaWJyYXJ5LT5sY2RfZXh0cmEgICAgICAgPSAyOworCisjZW5kaWYKKworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZUX0xDRF9GSUxURVJfTElHSFQ6CisgICAgICBmdF9tZW1jcHkoIGxpYnJhcnktPmxjZF93ZWlnaHRzLCBsaWdodF9maWx0ZXIsIDUgKTsKKyAgICAgIGxpYnJhcnktPmxjZF9maWx0ZXJfZnVuYyA9IF9mdF9sY2RfZmlsdGVyX2ZpcjsKKyAgICAgIGxpYnJhcnktPmxjZF9leHRyYSAgICAgICA9IDI7CisgICAgICBicmVhazsKKworI2lmZGVmIFVTRV9MRUdBQ1kKKworICAgIGNhc2UgRlRfTENEX0ZJTFRFUl9MRUdBQ1k6CisgICAgICBsaWJyYXJ5LT5sY2RfZmlsdGVyX2Z1bmMgPSBfZnRfbGNkX2ZpbHRlcl9sZWdhY3k7CisgICAgICBsaWJyYXJ5LT5sY2RfZXh0cmEgICAgICAgPSAwOworICAgICAgYnJlYWs7CisKKyNlbmRpZgorCisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgIH0KKworICAgIGxpYnJhcnktPmxjZF9maWx0ZXIgPSBmaWx0ZXI7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKyNlbHNlIC8qICFGVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX1JFTkRFUklORyAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfTGlicmFyeV9TZXRMY2RGaWx0ZXJXZWlnaHRzKCBGVF9MaWJyYXJ5ICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICAqd2VpZ2h0cyApCisgIHsKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsKKyAgICBGVF9VTlVTRUQoIHdlaWdodHMgKTsKKworICAgIHJldHVybiBGVF9USFJPVyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisgIH0KKworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfTGlicmFyeV9TZXRMY2RGaWx0ZXIoIEZUX0xpYnJhcnkgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xjZEZpbHRlciAgZmlsdGVyICkKKyAgeworICAgIEZUX1VOVVNFRCggbGlicmFyeSApOworICAgIEZUX1VOVVNFRCggZmlsdGVyICk7CisKKyAgICByZXR1cm4gRlRfVEhST1coIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApOworICB9CisKKyNlbmRpZiAvKiAhRlRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9SRU5ERVJJTkcgKi8KKworCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdG1tLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdG1tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYzMjBkNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9meGZ0X2Z0bW0uYwpAQCAtMCwwICsxLDIwNiBAQAorI2lmICFkZWZpbmVkKF9GWEZUX1ZFUlNJT05fKSB8fCBfRlhGVF9WRVJTSU9OXyA9PSAyNTAxCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdG1tLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgTXVsdGlwbGUgTWFzdGVyIGZvbnQgc3VwcG9ydCAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMywgMjAwNCwgMjAwOSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEZUMl9CVUlMRF9MSUJSQVJZCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRtbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9tbQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X2ZhY2VfZ2V0X21tX3NlcnZpY2UoIEZUX0ZhY2UgICAgICAgICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZV9NdWx0aU1hc3RlcnMgICphc2VydmljZSApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgICphc2VydmljZSA9IE5VTEw7CisKKyAgICBpZiAoICFmYWNlICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9GYWNlX0hhbmRsZSApOworCisgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGlmICggRlRfSEFTX01VTFRJUExFX01BU1RFUlMoIGZhY2UgKSApCisgICAgeworICAgICAgRlRfRkFDRV9MT09LVVBfU0VSVklDRSggZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1VTFRJX01BU1RFUlMgKTsKKworICAgICAgaWYgKCAqYXNlcnZpY2UgKQorICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRtbS5oICovCisKKyAgRlRfRVhQT1JUX0RFRiggRlRfRXJyb3IgKQorICBGVF9HZXRfTXVsdGlfTWFzdGVyKCBGVF9GYWNlICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWx0aV9NYXN0ZXIgICphbWFzdGVyICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgICBlcnJvcjsKKyAgICBGVF9TZXJ2aWNlX011bHRpTWFzdGVycyAgc2VydmljZTsKKworCisgICAgZXJyb3IgPSBmdF9mYWNlX2dldF9tbV9zZXJ2aWNlKCBmYWNlLCAmc2VydmljZSApOworICAgIGlmICggIWVycm9yICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX0VSUiggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgaWYgKCBzZXJ2aWNlLT5nZXRfbW0gKQorICAgICAgICBlcnJvciA9IHNlcnZpY2UtPmdldF9tbSggZmFjZSwgYW1hc3RlciApOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG1tLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX0dldF9NTV9WYXIoIEZUX0ZhY2UgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICBGVF9NTV9WYXIqICAqYW1hc3RlciApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgICAgICAgICAgZXJyb3I7CisgICAgRlRfU2VydmljZV9NdWx0aU1hc3RlcnMgIHNlcnZpY2U7CisKKworICAgIGVycm9yID0gZnRfZmFjZV9nZXRfbW1fc2VydmljZSggZmFjZSwgJnNlcnZpY2UgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGlmICggc2VydmljZS0+Z2V0X21tX3ZhciApCisgICAgICAgIGVycm9yID0gc2VydmljZS0+Z2V0X21tX3ZhciggZmFjZSwgYW1hc3RlciApOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG1tLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1NldF9NTV9EZXNpZ25fQ29vcmRpbmF0ZXMoIEZUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyogIGNvb3JkcyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgICAgICAgICAgZXJyb3I7CisgICAgRlRfU2VydmljZV9NdWx0aU1hc3RlcnMgIHNlcnZpY2U7CisKKworICAgIGVycm9yID0gZnRfZmFjZV9nZXRfbW1fc2VydmljZSggZmFjZSwgJnNlcnZpY2UgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGlmICggc2VydmljZS0+c2V0X21tX2Rlc2lnbiApCisgICAgICAgIGVycm9yID0gc2VydmljZS0+c2V0X21tX2Rlc2lnbiggZmFjZSwgbnVtX2Nvb3JkcywgY29vcmRzICk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0bW0uaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIEZUX0Vycm9yICkKKyAgRlRfU2V0X1Zhcl9EZXNpZ25fQ29vcmRpbmF0ZXMoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRzICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgICBlcnJvcjsKKyAgICBGVF9TZXJ2aWNlX011bHRpTWFzdGVycyAgc2VydmljZTsKKworCisgICAgZXJyb3IgPSBmdF9mYWNlX2dldF9tbV9zZXJ2aWNlKCBmYWNlLCAmc2VydmljZSApOworICAgIGlmICggIWVycm9yICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX0VSUiggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgaWYgKCBzZXJ2aWNlLT5zZXRfdmFyX2Rlc2lnbiApCisgICAgICAgIGVycm9yID0gc2VydmljZS0+c2V0X3Zhcl9kZXNpZ24oIGZhY2UsIG51bV9jb29yZHMsIGNvb3JkcyApOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZG9jdW1lbnRhdGlvbiBpcyBpbiBmdG1tLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1NldF9NTV9CbGVuZF9Db29yZGluYXRlcyggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGNvb3JkcyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgICAgICAgICAgZXJyb3I7CisgICAgRlRfU2VydmljZV9NdWx0aU1hc3RlcnMgIHNlcnZpY2U7CisKKworICAgIGVycm9yID0gZnRfZmFjZV9nZXRfbW1fc2VydmljZSggZmFjZSwgJnNlcnZpY2UgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGlmICggc2VydmljZS0+c2V0X21tX2JsZW5kICkKKyAgICAgICAgIGVycm9yID0gc2VydmljZS0+c2V0X21tX2JsZW5kKCBmYWNlLCBudW1fY29vcmRzLCBjb29yZHMgKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRtbS5oICovCisKKyAgLyogVGhpcyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBmdW5jdGlvbi4gIEl0IGV4aXN0cyBmb3IgKi8KKyAgLyogb3J0aG9nb25hbGl0eS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIEZUX1NldF9WYXJfQmxlbmRfQ29vcmRpbmF0ZXMoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBudW1fY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGNvb3JkcyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgICAgICAgICAgZXJyb3I7CisgICAgRlRfU2VydmljZV9NdWx0aU1hc3RlcnMgIHNlcnZpY2U7CisKKworICAgIGVycm9yID0gZnRfZmFjZV9nZXRfbW1fc2VydmljZSggZmFjZSwgJnNlcnZpY2UgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGlmICggc2VydmljZS0+c2V0X21tX2JsZW5kICkKKyAgICAgICAgIGVycm9yID0gc2VydmljZS0+c2V0X21tX2JsZW5kKCBmYWNlLCBudW1fY29vcmRzLCBjb29yZHMgKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdHN5c3RlbS5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z4ZnRfZnRzeXN0ZW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjcxMzdmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL2Z4ZnRfZnRzeXN0ZW0uYwpAQCAtMCwwICsxLDM3NSBAQAorI2lmICFkZWZpbmVkKF9GWEZUX1ZFUlNJT05fKSB8fCBfRlhGVF9WRVJTSU9OXyA9PSAyNTAxCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHN5c3RlbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQU5TSS1zcGVjaWZpYyBGcmVlVHlwZSBsb3ctbGV2ZWwgc3lzdGVtIGludGVyZmFjZSAoYm9keSkuICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMiwgMjAwNiwgMjAwOC0yMDExLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZWZhdWx0IGludGVyZmFjZSB1c2VkIGJ5IEZyZWVUeXBlIHRvIGFjY2VzcyAgICovCisgIC8qIGxvdy1sZXZlbCwgaS5lLiBtZW1vcnkgbWFuYWdlbWVudCwgaS9vIGFjY2VzcyBhcyB3ZWxsIGFzIHRocmVhZCAgICAgICAqLworICAvKiBzeW5jaHJvbmlzYXRpb24uICBJdCBjYW4gYmUgcmVwbGFjZWQgYnkgdXNlci1zcGVjaWZpYyByb3V0aW5lcyBpZiAgICAgKi8KKyAgLyogbmVjZXNzYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBGVDJfQlVJTERfTElCUkFSWQorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzdGVtLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgTUVNT1JZIE1BTkFHRU1FTlQgSU5URVJGQUNFICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBkbyBhbnkgZXJyb3IgY2hlY2tpbmcgZm9yIHRoZSAgICAgICAgICAgICAgICAgICovCisgIC8qIGFsbG9jYXRpb24tcmVsYXRlZCBmdW5jdGlvbnMuICBUaGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgaGlnaGVyIGxldmVsICAqLworICAvKiByb3V0aW5lcyBsaWtlIGZ0X21lbV9hbGxvYygpIG9yIGZ0X21lbV9yZWFsbG9jKCkuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIF9GT1hJVF9NRU1fTUFOQUdFUl8KKworI2lmIGRlZmluZWQoX0ZYX01BTkFHRURfQ09ERV8pICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQWxsb2NhdGUgbnVtYmVyIG9mIGJ5dGVzICovCit2b2lkKglGWE1FTV9EZWZhdWx0QWxsb2MoaW50IGJ5dGVfc2l6ZSwgaW50IGZsYWdzKTsKKworLyoqIEFsbG9jYXRlIHdpdGggZGVidWcgaW5mb3JtYXRpb24gKi8KK3ZvaWQqCUZYTUVNX0RlZmF1bHRBbGxvY0RlYnVnKGludCBzaXplLCBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKTsKKwordm9pZCoJRlhNRU1fRGVmYXVsdFJlYWxsb2Modm9pZCogcG9pbnRlciwgaW50IG5ld19zaXplLCBpbnQgZmxhZ3MpOworCisvKiogRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgKi8KK3ZvaWQJRlhNRU1fRGVmYXVsdEZyZWUodm9pZCogcG9pbnRlciwgaW50IGZsYWdzKTsKKworI2lmIGRlZmluZWQoX0ZYX01BTkFHRURfQ09ERV8pICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCit9CisjZW5kaWYKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfYWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5IDo6IEEgcG9pbnRlciB0byB0aGUgbWVtb3J5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaXplICAgOjogVGhlIHJlcXVlc3RlZCBzaXplIGluIGJ5dGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgYWRkcmVzcyBvZiBuZXdseSBhbGxvY2F0ZWQgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0NBTExCQUNLX0RFRiggdm9pZCogKQorICBmdF9hbGxvYyggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICBsb25nICAgICAgIHNpemUgKQorICB7CisgICAgRlRfVU5VU0VEKCBtZW1vcnkgKTsKKyAgI2lmZGVmIF9GT1hJVF9NRU1fTUFOQUdFUl8KKwlyZXR1cm4gRlhNRU1fRGVmYXVsdEFsbG9jKHNpemUsIDApOworI2Vsc2UKKyAgICByZXR1cm4gZnRfc21hbGxvYyggc2l6ZSApOworI2VuZGlmCisgIH0KKyAgCisgIC8qIFhZUSAyMDA2LTEwLTEyICovCisjaWZkZWYgX1hZUV9NRU1fREVCVUcKKyAgRlRfQ0FMTEJBQ0tfREVGKCB2b2lkKiApCisJICBmdF9hbGxvY2RlYnVnKCBGVF9NZW1vcnkgIG1lbW9yeSwKKwkgIGxvbmcgICAgICAgc2l6ZSwgY29uc3QgY2hhciogZmlsZW5hbWUsIGludCBsaW5lKQorICB7CisJICBGVF9VTlVTRUQoIG1lbW9yeSApOworCSAgCisJICByZXR1cm4gRlhNRU1fRGVmYXVsdEFsbG9jRGVidWcoIHNpemUsIDAsIGZpbGVuYW1lLCBsaW5lICk7CisgIH0KKyNlbmRpZgorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X3JlYWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBtZW1vcnkgcmVhbGxvY2F0aW9uIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSAgIDo6IEEgcG9pbnRlciB0byB0aGUgbWVtb3J5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY3VyX3NpemUgOjogVGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgYWxsb2NhdGVkIG1lbW9yeSBibG9jay4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuZXdfc2l6ZSA6OiBUaGUgbmV3bHkgcmVxdWVzdGVkIHNpemUgaW4gYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJsb2NrICAgIDo6IFRoZSBjdXJyZW50IGFkZHJlc3Mgb2YgdGhlIGJsb2NrIGluIG1lbW9yeS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBhZGRyZXNzIG9mIHRoZSByZWFsbG9jYXRlZCBtZW1vcnkgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQ0FMTEJBQ0tfREVGKCB2b2lkKiApCisgIGZ0X3JlYWxsb2MoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICBsb25nICAgICAgIGN1cl9zaXplLAorICAgICAgICAgICAgICBsb25nICAgICAgIG5ld19zaXplLAorICAgICAgICAgICAgICB2b2lkKiAgICAgIGJsb2NrICkKKyAgeworICAgIEZUX1VOVVNFRCggbWVtb3J5ICk7CisgICAgRlRfVU5VU0VEKCBjdXJfc2l6ZSApOworCisjaWZkZWYgX0ZPWElUX01FTV9NQU5BR0VSXworCXJldHVybiBGWE1FTV9EZWZhdWx0UmVhbGxvYyhibG9jaywgbmV3X3NpemUsIDApOworI2Vsc2UKKyAgICByZXR1cm4gZnRfc3JlYWxsb2MoIGJsb2NrLCBuZXdfc2l6ZSApOworI2VuZGlmCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X2ZyZWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBtZW1vcnkgcmVsZWFzZSBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSAgOjogQSBwb2ludGVyIHRvIHRoZSBtZW1vcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmxvY2sgICA6OiBUaGUgYWRkcmVzcyBvZiBibG9jayBpbiBtZW1vcnkgdG8gYmUgZnJlZWQuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9DQUxMQkFDS19ERUYoIHZvaWQgKQorICBmdF9mcmVlKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgdm9pZCogICAgICBibG9jayApCisgIHsKKyAgICBGVF9VTlVTRUQoIG1lbW9yeSApOworCisjaWZkZWYgX0ZPWElUX01FTV9NQU5BR0VSXworCUZYTUVNX0RlZmF1bHRGcmVlKGJsb2NrLCAwKTsKKyNlbHNlCisgICAgZnRfc2ZyZWUoIGJsb2NrICk7CisjZW5kaWYKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgIFJFU09VUkNFIE1BTkFHRU1FTlQgSU5URVJGQUNFICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fRElTQUJMRV9TVFJFQU1fU1VQUE9SVAorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX2lvCisKKyAgLyogV2UgdXNlIHRoZSBtYWNybyBTVFJFQU1fRklMRSBmb3IgY29udmVuaWVuY2UgdG8gZXh0cmFjdCB0aGUgICAgICAgKi8KKyAgLyogc3lzdGVtLXNwZWNpZmljIHN0cmVhbSBoYW5kbGUgZnJvbSBhIGdpdmVuIEZyZWVUeXBlIHN0cmVhbSBvYmplY3QgKi8KKyNkZWZpbmUgU1RSRUFNX0ZJTEUoIHN0cmVhbSApICAoIChGVF9GSUxFKilzdHJlYW0tPmRlc2NyaXB0b3IucG9pbnRlciApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF9hbnNpX3N0cmVhbV9jbG9zZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZnVuY3Rpb24gdG8gY2xvc2UgYSBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogQSBwb2ludGVyIHRvIHRoZSBzdHJlYW0gb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0NBTExCQUNLX0RFRiggdm9pZCApCisgIGZ0X2Fuc2lfc3RyZWFtX2Nsb3NlKCBGVF9TdHJlYW0gIHN0cmVhbSApCisgIHsKKy8vI2lmIF9GWF9DT01QSUxFUl8gIT0gX0ZYX0lBUkNDXyAmJiBfRlhfT1NfICE9IF9GWF9QQUxNT1NfCisgICAgZnRfZmNsb3NlKCBTVFJFQU1fRklMRSggc3RyZWFtICkgKTsKKworICAgIHN0cmVhbS0+ZGVzY3JpcHRvci5wb2ludGVyID0gTlVMTDsKKyAgICBzdHJlYW0tPnNpemUgICAgICAgICAgICAgICA9IDA7CisgICAgc3RyZWFtLT5iYXNlICAgICAgICAgICAgICAgPSAwOworLy8jZW5kaWYKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfYW5zaV9zdHJlYW1faW8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGZ1bmN0aW9uIHRvIG9wZW4gYSBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtIDo6IEEgcG9pbnRlciB0byB0aGUgc3RyZWFtIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvZmZzZXQgOjogVGhlIHBvc2l0aW9uIGluIHRoZSBkYXRhIHN0cmVhbSB0byBzdGFydCByZWFkaW5nLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJ1ZmZlciA6OiBUaGUgYWRkcmVzcyBvZiBidWZmZXIgdG8gc3RvcmUgdGhlIHJlYWQgZGF0YS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY291bnQgIDo6IFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBmcm9tIHRoZSBzdHJlYW0uICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkLiAgSWYgYGNvdW50JyBpcyB6ZXJvICh0aGlzIGlzLCAgICovCisgIC8qICAgIHRoZSBmdW5jdGlvbiBpcyB1c2VkIGZvciBzZWVraW5nKSwgYSBub24temVybyByZXR1cm4gdmFsdWUgICAgICAgICAqLworICAvKiAgICBpbmRpY2F0ZXMgYW4gZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0NBTExCQUNLX0RFRiggdW5zaWduZWQgbG9uZyApCisgIGZ0X2Fuc2lfc3RyZWFtX2lvKCBGVF9TdHJlYW0gICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgY291bnQgKQorICB7CisvLyNpZiBfRlhfQ09NUElMRVJfICE9IF9GWF9JQVJDQ18gJiYgX0ZYX09TXyAhPSBfRlhfUEFMTU9TXworICAgIEZUX0ZJTEUqICBmaWxlOworCisKKyAgICBpZiAoICFjb3VudCAmJiBvZmZzZXQgPiBzdHJlYW0tPnNpemUgKQorICAgICAgcmV0dXJuIDE7CisKKyAgICBmaWxlID0gU1RSRUFNX0ZJTEUoIHN0cmVhbSApOworCisgICAgaWYgKCBzdHJlYW0tPnBvcyAhPSBvZmZzZXQgKQorICAgICAgZnRfZnNlZWsoIGZpbGUsIG9mZnNldCwgU0VFS19TRVQgKTsKKworICAgIHJldHVybiAodW5zaWduZWQgbG9uZylmdF9mcmVhZCggYnVmZmVyLCAxLCBjb3VudCwgZmlsZSApOworLy8jZWxzZQorLy8gICAgcmV0dXJuIDA7CisvLyNlbmRpZgorICB9CisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0c3RyZWFtLmggKi8KKworICBGVF9CQVNFX0RFRiggRlRfRXJyb3IgKQorICBGVF9TdHJlYW1fT3BlbiggRlRfU3RyZWFtICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBmaWxlcGF0aG5hbWUgKQorICB7CisvLyNpZiBfRlhfQ09NUElMRVJfICE9IF9GWF9JQVJDQ18gJiYgX0ZYX09TXyAhPSBfRlhfUEFMTU9TXworICAgIEZUX0ZJTEUqICBmaWxlOworCisKKyAgICBpZiAoICFzdHJlYW0gKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX1N0cmVhbV9IYW5kbGUgKTsKKworICAgIHN0cmVhbS0+ZGVzY3JpcHRvci5wb2ludGVyID0gTlVMTDsKKyAgICBzdHJlYW0tPnBhdGhuYW1lLnBvaW50ZXIgICA9IChjaGFyKilmaWxlcGF0aG5hbWU7CisgICAgc3RyZWFtLT5iYXNlICAgICAgICAgICAgICAgPSAwOworICAgIHN0cmVhbS0+cG9zICAgICAgICAgICAgICAgID0gMDsKKyAgICBzdHJlYW0tPnJlYWQgICAgICAgICAgICAgICA9IE5VTEw7CisgICAgc3RyZWFtLT5jbG9zZSAgICAgICAgICAgICAgPSBOVUxMOworCisgICAgZmlsZSA9IGZ0X2ZvcGVuKCBmaWxlcGF0aG5hbWUsICJyYiIgKTsKKyAgICBpZiAoICFmaWxlICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJGVF9TdHJlYW1fT3BlbjoiCisgICAgICAgICAgICAgICAgICIgY291bGQgbm90IG9wZW4gYCVzJ1xuIiwgZmlsZXBhdGhuYW1lICkpOworCisgICAgICByZXR1cm4gRlRfVEhST1coIENhbm5vdF9PcGVuX1Jlc291cmNlICk7CisgICAgfQorCisgICAgZnRfZnNlZWsoIGZpbGUsIDAsIEZYU1lTX1NFRUtfRU5EICk7CisgICAgc3RyZWFtLT5zaXplID0gZnRfZnRlbGwoIGZpbGUgKTsKKyAgICBpZiAoICFzdHJlYW0tPnNpemUgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggIkZUX1N0cmVhbV9PcGVuOiIgKSk7CisgICAgICBGVF9FUlJPUigoICIgb3BlbmVkIGAlcycgYnV0IHplcm8tc2l6ZWRcbiIsIGZpbGVwYXRobmFtZSApKTsKKyAgICAgIGZ0X2ZjbG9zZSggZmlsZSApOworICAgICAgcmV0dXJuIEZUX1RIUk9XKCBDYW5ub3RfT3Blbl9TdHJlYW0gKTsKKyAgICB9CisgICAgZnRfZnNlZWsoIGZpbGUsIDAsIEZYU1lTX1NFRUtfU0VUICk7CisKKyAgICBzdHJlYW0tPmRlc2NyaXB0b3IucG9pbnRlciA9IGZpbGU7CisgICAgc3RyZWFtLT5yZWFkICA9IGZ0X2Fuc2lfc3RyZWFtX2lvOworICAgIHN0cmVhbS0+Y2xvc2UgPSBmdF9hbnNpX3N0cmVhbV9jbG9zZTsKKworICAgIEZUX1RSQUNFMSgoICJGVF9TdHJlYW1fT3BlbjoiICkpOworICAgIEZUX1RSQUNFMSgoICIgb3BlbmVkIGAlcycgKCVkIGJ5dGVzKSBzdWNjZXNzZnVsbHlcbiIsCisgICAgICAgICAgICAgICAgZmlsZXBhdGhuYW1lLCBzdHJlYW0tPnNpemUgKSk7CisvLyNlbmRpZgorCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisjZW5kaWYgLyogIUZUX0NPTkZJR19PUFRJT05fRElTQUJMRV9TVFJFQU1fU1VQUE9SVCAqLworCisjaWZkZWYgRlRfREVCVUdfTUVNT1JZCisKKyAgZXh0ZXJuIEZUX0ludAorICBmdF9tZW1fZGVidWdfaW5pdCggRlRfTWVtb3J5ICBtZW1vcnkgKTsKKworICBleHRlcm4gdm9pZAorICBmdF9tZW1fZGVidWdfZG9uZSggRlRfTWVtb3J5ICBtZW1vcnkgKTsKKworI2VuZGlmCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIGZ0b2Jqcy5oICovCisKKyAgRlRfQkFTRV9ERUYoIEZUX01lbW9yeSApCisgIEZUX05ld19NZW1vcnkoIHZvaWQgKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnk7CisKKworICAgIG1lbW9yeSA9IChGVF9NZW1vcnkpRlhNRU1fRGVmYXVsdEFsbG9jKCBzaXplb2YgKCAqbWVtb3J5ICksIDAgKTsKKyAgICBpZiAoIG1lbW9yeSApCisgICAgeworICAgICAgbWVtb3J5LT51c2VyICAgID0gMDsKKyAgICAgIG1lbW9yeS0+YWxsb2MgICA9IGZ0X2FsbG9jOworI2lmZGVmIF9YWVFfTUVNX0RFQlVHCisJICBtZW1vcnktPmFsbG9jZGVidWcgPSBmdF9hbGxvY2RlYnVnOworI2VuZGlmCisgICAgICBtZW1vcnktPnJlYWxsb2MgPSBmdF9yZWFsbG9jOworICAgICAgbWVtb3J5LT5mcmVlICAgID0gZnRfZnJlZTsKKyNpZmRlZiBGVF9ERUJVR19NRU1PUlkKKyAgICAgIGZ0X21lbV9kZWJ1Z19pbml0KCBtZW1vcnkgKTsKKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiBtZW1vcnk7CisgIH0KKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gZnRvYmpzLmggKi8KKworICBGVF9CQVNFX0RFRiggdm9pZCApCisgIEZUX0RvbmVfTWVtb3J5KCBGVF9NZW1vcnkgIG1lbW9yeSApCisgIHsKKyNpZmRlZiBGVF9ERUJVR19NRU1PUlkKKyAgICBmdF9tZW1fZGVidWdfZG9uZSggbWVtb3J5ICk7CisjZW5kaWYKKyAgICBGWE1FTV9EZWZhdWx0RnJlZSggbWVtb3J5LCAwICk7CisgIH0KKworCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvbWQ1LmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvbWQ1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYwMWM5MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9tZDUuYwpAQCAtMCwwICsxLDI5NSBAQAorLyoKKyAqIFRoaXMgaXMgYW4gT3BlblNTTC1jb21wYXRpYmxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLgorICogTUQ1IE1lc3NhZ2UtRGlnZXN0IEFsZ29yaXRobSAoUkZDIDEzMjEpLgorICoKKyAqIEhvbWVwYWdlOgorICogaHR0cDovL29wZW53YWxsLmluZm8vd2lraS9wZW9wbGUvc29sYXIvc29mdHdhcmUvcHVibGljLWRvbWFpbi1zb3VyY2UtY29kZS9tZDUKKyAqCisgKiBBdXRob3I6CisgKiBBbGV4YW5kZXIgUGVzbHlhaywgYmV0dGVyIGtub3duIGFzIFNvbGFyIERlc2lnbmVyIDxzb2xhciBhdCBvcGVud2FsbC5jb20+CisgKgorICogVGhpcyBzb2Z0d2FyZSB3YXMgd3JpdHRlbiBieSBBbGV4YW5kZXIgUGVzbHlhayBpbiAyMDAxLiAgTm8gY29weXJpZ2h0IGlzCisgKiBjbGFpbWVkLCBhbmQgdGhlIHNvZnR3YXJlIGlzIGhlcmVieSBwbGFjZWQgaW4gdGhlIHB1YmxpYyBkb21haW4uCisgKiBJbiBjYXNlIHRoaXMgYXR0ZW1wdCB0byBkaXNjbGFpbSBjb3B5cmlnaHQgYW5kIHBsYWNlIHRoZSBzb2Z0d2FyZSBpbiB0aGUKKyAqIHB1YmxpYyBkb21haW4gaXMgZGVlbWVkIG51bGwgYW5kIHZvaWQsIHRoZW4gdGhlIHNvZnR3YXJlIGlzCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEgQWxleGFuZGVyIFBlc2x5YWsgYW5kIGl0IGlzIGhlcmVieSByZWxlYXNlZCB0byB0aGUKKyAqIGdlbmVyYWwgcHVibGljIHVuZGVyIHRoZSBmb2xsb3dpbmcgdGVybXM6CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQuCisgKgorICogVGhlcmUncyBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLCBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICogKFRoaXMgaXMgYSBoZWF2aWx5IGN1dC1kb3duICJCU0QgbGljZW5zZSIuKQorICoKKyAqIFRoaXMgZGlmZmVycyBmcm9tIENvbGluIFBsdW1iJ3Mgb2xkZXIgcHVibGljIGRvbWFpbiBpbXBsZW1lbnRhdGlvbiBpbiB0aGF0CisgKiBubyBleGFjdGx5IDMyLWJpdCBpbnRlZ2VyIGRhdGEgdHlwZSBpcyByZXF1aXJlZCAoYW55IDMyLWJpdCBvciB3aWRlcgorICogdW5zaWduZWQgaW50ZWdlciBkYXRhIHR5cGUgd2lsbCBkbyksIHRoZXJlJ3Mgbm8gY29tcGlsZS10aW1lIGVuZGlhbm5lc3MKKyAqIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlcyBtYXRjaCBPcGVuU1NMJ3MuICBObyBjb2RlIGZyb20KKyAqIENvbGluIFBsdW1iJ3MgaW1wbGVtZW50YXRpb24gaGFzIGJlZW4gcmV1c2VkOyB0aGlzIGNvbW1lbnQgbWVyZWx5IGNvbXBhcmVzCisgKiB0aGUgcHJvcGVydGllcyBvZiB0aGUgdHdvIGluZGVwZW5kZW50IGltcGxlbWVudGF0aW9ucy4KKyAqCisgKiBUaGUgcHJpbWFyeSBnb2FscyBvZiB0aGlzIGltcGxlbWVudGF0aW9uIGFyZSBwb3J0YWJpbGl0eSBhbmQgZWFzZSBvZiB1c2UuCisgKiBJdCBpcyBtZWFudCB0byBiZSBmYXN0LCBidXQgbm90IGFzIGZhc3QgYXMgcG9zc2libGUuICBTb21lIGtub3duCisgKiBvcHRpbWl6YXRpb25zIGFyZSBub3QgaW5jbHVkZWQgdG8gcmVkdWNlIHNvdXJjZSBjb2RlIHNpemUgYW5kIGF2b2lkCisgKiBjb21waWxlLXRpbWUgY29uZmlndXJhdGlvbi4KKyAqLworCisjaWZuZGVmIEhBVkVfT1BFTlNTTAorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJtZDUuaCIKKworLyoKKyAqIFRoZSBiYXNpYyBNRDUgZnVuY3Rpb25zLgorICoKKyAqIEYgYW5kIEcgYXJlIG9wdGltaXplZCBjb21wYXJlZCB0byB0aGVpciBSRkMgMTMyMSBkZWZpbml0aW9ucyBmb3IKKyAqIGFyY2hpdGVjdHVyZXMgdGhhdCBsYWNrIGFuIEFORC1OT1QgaW5zdHJ1Y3Rpb24sIGp1c3QgbGlrZSBpbiBDb2xpbiBQbHVtYidzCisgKiBpbXBsZW1lbnRhdGlvbi4KKyAqLworI2RlZmluZSBGKHgsIHksIHopCQkJKCh6KSBeICgoeCkgJiAoKHkpIF4gKHopKSkpCisjZGVmaW5lIEcoeCwgeSwgeikJCQkoKHkpIF4gKCh6KSAmICgoeCkgXiAoeSkpKSkKKyNkZWZpbmUgSCh4LCB5LCB6KQkJCSgoeCkgXiAoeSkgXiAoeikpCisjZGVmaW5lIEkoeCwgeSwgeikJCQkoKHkpIF4gKCh4KSB8IH4oeikpKQorCisvKgorICogVGhlIE1ENSB0cmFuc2Zvcm1hdGlvbiBmb3IgYWxsIGZvdXIgcm91bmRzLgorICovCisjZGVmaW5lIFNURVAoZiwgYSwgYiwgYywgZCwgeCwgdCwgcykgXAorCShhKSArPSBmKChiKSwgKGMpLCAoZCkpICsgKHgpICsgKHQpOyBcCisJKGEpID0gKCgoYSkgPDwgKHMpKSB8ICgoKGEpICYgMHhmZmZmZmZmZikgPj4gKDMyIC0gKHMpKSkpOyBcCisJKGEpICs9IChiKTsKKworLyoKKyAqIFNFVCByZWFkcyA0IGlucHV0IGJ5dGVzIGluIGxpdHRsZS1lbmRpYW4gYnl0ZSBvcmRlciBhbmQgc3RvcmVzIHRoZW0KKyAqIGluIGEgcHJvcGVybHkgYWxpZ25lZCB3b3JkIGluIGhvc3QgYnl0ZSBvcmRlci4KKyAqCisgKiBUaGUgY2hlY2sgZm9yIGxpdHRsZS1lbmRpYW4gYXJjaGl0ZWN0dXJlcyB0aGF0IHRvbGVyYXRlIHVuYWxpZ25lZAorICogbWVtb3J5IGFjY2Vzc2VzIGlzIGp1c3QgYW4gb3B0aW1pemF0aW9uLiAgTm90aGluZyB3aWxsIGJyZWFrIGlmIGl0CisgKiBkb2Vzbid0IHdvcmsuCisgKi8KKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX192YXhfXykKKyNkZWZpbmUgU0VUKG4pIFwKKwkoKihNRDVfdTMycGx1cyAqKSZwdHJbKG4pICogNF0pCisjZGVmaW5lIEdFVChuKSBcCisJU0VUKG4pCisjZWxzZQorI2RlZmluZSBTRVQobikgXAorCShjdHgtPmJsb2NrWyhuKV0gPSBcCisJKE1ENV91MzJwbHVzKXB0clsobikgKiA0XSB8IFwKKwkoKE1ENV91MzJwbHVzKXB0clsobikgKiA0ICsgMV0gPDwgOCkgfCBcCisJKChNRDVfdTMycGx1cylwdHJbKG4pICogNCArIDJdIDw8IDE2KSB8IFwKKwkoKE1ENV91MzJwbHVzKXB0clsobikgKiA0ICsgM10gPDwgMjQpKQorI2RlZmluZSBHRVQobikgXAorCShjdHgtPmJsb2NrWyhuKV0pCisjZW5kaWYKKworLyoKKyAqIFRoaXMgcHJvY2Vzc2VzIG9uZSBvciBtb3JlIDY0LWJ5dGUgZGF0YSBibG9ja3MsIGJ1dCBkb2VzIE5PVCB1cGRhdGUKKyAqIHRoZSBiaXQgY291bnRlcnMuICBUaGVyZSBhcmUgbm8gYWxpZ25tZW50IHJlcXVpcmVtZW50cy4KKyAqLworc3RhdGljIHZvaWQgKmJvZHkoTUQ1X0NUWCAqY3R4LCB2b2lkICpkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisJdW5zaWduZWQgY2hhciAqcHRyOworCU1ENV91MzJwbHVzIGEsIGIsIGMsIGQ7CisJTUQ1X3UzMnBsdXMgc2F2ZWRfYSwgc2F2ZWRfYiwgc2F2ZWRfYywgc2F2ZWRfZDsKKworCXB0ciA9ICh1bnNpZ25lZCBjaGFyICopZGF0YTsKKworCWEgPSBjdHgtPmE7CisJYiA9IGN0eC0+YjsKKwljID0gY3R4LT5jOworCWQgPSBjdHgtPmQ7CisKKwlkbyB7CisJCXNhdmVkX2EgPSBhOworCQlzYXZlZF9iID0gYjsKKwkJc2F2ZWRfYyA9IGM7CisJCXNhdmVkX2QgPSBkOworCisvKiBSb3VuZCAxICovCisJCVNURVAoRiwgYSwgYiwgYywgZCwgU0VUKDApLCAweGQ3NmFhNDc4LCA3KQorCQlTVEVQKEYsIGQsIGEsIGIsIGMsIFNFVCgxKSwgMHhlOGM3Yjc1NiwgMTIpCisJCVNURVAoRiwgYywgZCwgYSwgYiwgU0VUKDIpLCAweDI0MjA3MGRiLCAxNykKKwkJU1RFUChGLCBiLCBjLCBkLCBhLCBTRVQoMyksIDB4YzFiZGNlZWUsIDIyKQorCQlTVEVQKEYsIGEsIGIsIGMsIGQsIFNFVCg0KSwgMHhmNTdjMGZhZiwgNykKKwkJU1RFUChGLCBkLCBhLCBiLCBjLCBTRVQoNSksIDB4NDc4N2M2MmEsIDEyKQorCQlTVEVQKEYsIGMsIGQsIGEsIGIsIFNFVCg2KSwgMHhhODMwNDYxMywgMTcpCisJCVNURVAoRiwgYiwgYywgZCwgYSwgU0VUKDcpLCAweGZkNDY5NTAxLCAyMikKKwkJU1RFUChGLCBhLCBiLCBjLCBkLCBTRVQoOCksIDB4Njk4MDk4ZDgsIDcpCisJCVNURVAoRiwgZCwgYSwgYiwgYywgU0VUKDkpLCAweDhiNDRmN2FmLCAxMikKKwkJU1RFUChGLCBjLCBkLCBhLCBiLCBTRVQoMTApLCAweGZmZmY1YmIxLCAxNykKKwkJU1RFUChGLCBiLCBjLCBkLCBhLCBTRVQoMTEpLCAweDg5NWNkN2JlLCAyMikKKwkJU1RFUChGLCBhLCBiLCBjLCBkLCBTRVQoMTIpLCAweDZiOTAxMTIyLCA3KQorCQlTVEVQKEYsIGQsIGEsIGIsIGMsIFNFVCgxMyksIDB4ZmQ5ODcxOTMsIDEyKQorCQlTVEVQKEYsIGMsIGQsIGEsIGIsIFNFVCgxNCksIDB4YTY3OTQzOGUsIDE3KQorCQlTVEVQKEYsIGIsIGMsIGQsIGEsIFNFVCgxNSksIDB4NDliNDA4MjEsIDIyKQorCisvKiBSb3VuZCAyICovCisJCVNURVAoRywgYSwgYiwgYywgZCwgR0VUKDEpLCAweGY2MWUyNTYyLCA1KQorCQlTVEVQKEcsIGQsIGEsIGIsIGMsIEdFVCg2KSwgMHhjMDQwYjM0MCwgOSkKKwkJU1RFUChHLCBjLCBkLCBhLCBiLCBHRVQoMTEpLCAweDI2NWU1YTUxLCAxNCkKKwkJU1RFUChHLCBiLCBjLCBkLCBhLCBHRVQoMCksIDB4ZTliNmM3YWEsIDIwKQorCQlTVEVQKEcsIGEsIGIsIGMsIGQsIEdFVCg1KSwgMHhkNjJmMTA1ZCwgNSkKKwkJU1RFUChHLCBkLCBhLCBiLCBjLCBHRVQoMTApLCAweDAyNDQxNDUzLCA5KQorCQlTVEVQKEcsIGMsIGQsIGEsIGIsIEdFVCgxNSksIDB4ZDhhMWU2ODEsIDE0KQorCQlTVEVQKEcsIGIsIGMsIGQsIGEsIEdFVCg0KSwgMHhlN2QzZmJjOCwgMjApCisJCVNURVAoRywgYSwgYiwgYywgZCwgR0VUKDkpLCAweDIxZTFjZGU2LCA1KQorCQlTVEVQKEcsIGQsIGEsIGIsIGMsIEdFVCgxNCksIDB4YzMzNzA3ZDYsIDkpCisJCVNURVAoRywgYywgZCwgYSwgYiwgR0VUKDMpLCAweGY0ZDUwZDg3LCAxNCkKKwkJU1RFUChHLCBiLCBjLCBkLCBhLCBHRVQoOCksIDB4NDU1YTE0ZWQsIDIwKQorCQlTVEVQKEcsIGEsIGIsIGMsIGQsIEdFVCgxMyksIDB4YTllM2U5MDUsIDUpCisJCVNURVAoRywgZCwgYSwgYiwgYywgR0VUKDIpLCAweGZjZWZhM2Y4LCA5KQorCQlTVEVQKEcsIGMsIGQsIGEsIGIsIEdFVCg3KSwgMHg2NzZmMDJkOSwgMTQpCisJCVNURVAoRywgYiwgYywgZCwgYSwgR0VUKDEyKSwgMHg4ZDJhNGM4YSwgMjApCisKKy8qIFJvdW5kIDMgKi8KKwkJU1RFUChILCBhLCBiLCBjLCBkLCBHRVQoNSksIDB4ZmZmYTM5NDIsIDQpCisJCVNURVAoSCwgZCwgYSwgYiwgYywgR0VUKDgpLCAweDg3NzFmNjgxLCAxMSkKKwkJU1RFUChILCBjLCBkLCBhLCBiLCBHRVQoMTEpLCAweDZkOWQ2MTIyLCAxNikKKwkJU1RFUChILCBiLCBjLCBkLCBhLCBHRVQoMTQpLCAweGZkZTUzODBjLCAyMykKKwkJU1RFUChILCBhLCBiLCBjLCBkLCBHRVQoMSksIDB4YTRiZWVhNDQsIDQpCisJCVNURVAoSCwgZCwgYSwgYiwgYywgR0VUKDQpLCAweDRiZGVjZmE5LCAxMSkKKwkJU1RFUChILCBjLCBkLCBhLCBiLCBHRVQoNyksIDB4ZjZiYjRiNjAsIDE2KQorCQlTVEVQKEgsIGIsIGMsIGQsIGEsIEdFVCgxMCksIDB4YmViZmJjNzAsIDIzKQorCQlTVEVQKEgsIGEsIGIsIGMsIGQsIEdFVCgxMyksIDB4Mjg5YjdlYzYsIDQpCisJCVNURVAoSCwgZCwgYSwgYiwgYywgR0VUKDApLCAweGVhYTEyN2ZhLCAxMSkKKwkJU1RFUChILCBjLCBkLCBhLCBiLCBHRVQoMyksIDB4ZDRlZjMwODUsIDE2KQorCQlTVEVQKEgsIGIsIGMsIGQsIGEsIEdFVCg2KSwgMHgwNDg4MWQwNSwgMjMpCisJCVNURVAoSCwgYSwgYiwgYywgZCwgR0VUKDkpLCAweGQ5ZDRkMDM5LCA0KQorCQlTVEVQKEgsIGQsIGEsIGIsIGMsIEdFVCgxMiksIDB4ZTZkYjk5ZTUsIDExKQorCQlTVEVQKEgsIGMsIGQsIGEsIGIsIEdFVCgxNSksIDB4MWZhMjdjZjgsIDE2KQorCQlTVEVQKEgsIGIsIGMsIGQsIGEsIEdFVCgyKSwgMHhjNGFjNTY2NSwgMjMpCisKKy8qIFJvdW5kIDQgKi8KKwkJU1RFUChJLCBhLCBiLCBjLCBkLCBHRVQoMCksIDB4ZjQyOTIyNDQsIDYpCisJCVNURVAoSSwgZCwgYSwgYiwgYywgR0VUKDcpLCAweDQzMmFmZjk3LCAxMCkKKwkJU1RFUChJLCBjLCBkLCBhLCBiLCBHRVQoMTQpLCAweGFiOTQyM2E3LCAxNSkKKwkJU1RFUChJLCBiLCBjLCBkLCBhLCBHRVQoNSksIDB4ZmM5M2EwMzksIDIxKQorCQlTVEVQKEksIGEsIGIsIGMsIGQsIEdFVCgxMiksIDB4NjU1YjU5YzMsIDYpCisJCVNURVAoSSwgZCwgYSwgYiwgYywgR0VUKDMpLCAweDhmMGNjYzkyLCAxMCkKKwkJU1RFUChJLCBjLCBkLCBhLCBiLCBHRVQoMTApLCAweGZmZWZmNDdkLCAxNSkKKwkJU1RFUChJLCBiLCBjLCBkLCBhLCBHRVQoMSksIDB4ODU4NDVkZDEsIDIxKQorCQlTVEVQKEksIGEsIGIsIGMsIGQsIEdFVCg4KSwgMHg2ZmE4N2U0ZiwgNikKKwkJU1RFUChJLCBkLCBhLCBiLCBjLCBHRVQoMTUpLCAweGZlMmNlNmUwLCAxMCkKKwkJU1RFUChJLCBjLCBkLCBhLCBiLCBHRVQoNiksIDB4YTMwMTQzMTQsIDE1KQorCQlTVEVQKEksIGIsIGMsIGQsIGEsIEdFVCgxMyksIDB4NGUwODExYTEsIDIxKQorCQlTVEVQKEksIGEsIGIsIGMsIGQsIEdFVCg0KSwgMHhmNzUzN2U4MiwgNikKKwkJU1RFUChJLCBkLCBhLCBiLCBjLCBHRVQoMTEpLCAweGJkM2FmMjM1LCAxMCkKKwkJU1RFUChJLCBjLCBkLCBhLCBiLCBHRVQoMiksIDB4MmFkN2QyYmIsIDE1KQorCQlTVEVQKEksIGIsIGMsIGQsIGEsIEdFVCg5KSwgMHhlYjg2ZDM5MSwgMjEpCisKKwkJYSArPSBzYXZlZF9hOworCQliICs9IHNhdmVkX2I7CisJCWMgKz0gc2F2ZWRfYzsKKwkJZCArPSBzYXZlZF9kOworCisJCXB0ciArPSA2NDsKKwl9IHdoaWxlIChzaXplIC09IDY0KTsKKworCWN0eC0+YSA9IGE7CisJY3R4LT5iID0gYjsKKwljdHgtPmMgPSBjOworCWN0eC0+ZCA9IGQ7CisKKwlyZXR1cm4gcHRyOworfQorCit2b2lkIE1ENV9Jbml0KE1ENV9DVFggKmN0eCkKK3sKKwljdHgtPmEgPSAweDY3NDUyMzAxOworCWN0eC0+YiA9IDB4ZWZjZGFiODk7CisJY3R4LT5jID0gMHg5OGJhZGNmZTsKKwljdHgtPmQgPSAweDEwMzI1NDc2OworCisJY3R4LT5sbyA9IDA7CisJY3R4LT5oaSA9IDA7Cit9CisKK3ZvaWQgTUQ1X1VwZGF0ZShNRDVfQ1RYICpjdHgsIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwlNRDVfdTMycGx1cyBzYXZlZF9sbzsKKwl1bnNpZ25lZCBsb25nIHVzZWQsIGZyZWU7CisKKwlzYXZlZF9sbyA9IGN0eC0+bG87CisJaWYgKChjdHgtPmxvID0gKHNhdmVkX2xvICsgc2l6ZSkgJiAweDFmZmZmZmZmKSA8IHNhdmVkX2xvKQorCQljdHgtPmhpKys7CisJY3R4LT5oaSArPSBzaXplID4+IDI5OworCisJdXNlZCA9IHNhdmVkX2xvICYgMHgzZjsKKworCWlmICh1c2VkKSB7CisJCWZyZWUgPSA2NCAtIHVzZWQ7CisKKwkJaWYgKHNpemUgPCBmcmVlKSB7CisJCQltZW1jcHkoJmN0eC0+YnVmZmVyW3VzZWRdLCBkYXRhLCBzaXplKTsKKwkJCXJldHVybjsKKwkJfQorCisJCW1lbWNweSgmY3R4LT5idWZmZXJbdXNlZF0sIGRhdGEsIGZyZWUpOworCQlkYXRhID0gKHVuc2lnbmVkIGNoYXIgKilkYXRhICsgZnJlZTsKKwkJc2l6ZSAtPSBmcmVlOworCQlib2R5KGN0eCwgY3R4LT5idWZmZXIsIDY0KTsKKwl9CisKKwlpZiAoc2l6ZSA+PSA2NCkgeworCQlkYXRhID0gYm9keShjdHgsIGRhdGEsIHNpemUgJiB+KHVuc2lnbmVkIGxvbmcpMHgzZik7CisJCXNpemUgJj0gMHgzZjsKKwl9CisKKwltZW1jcHkoY3R4LT5idWZmZXIsIGRhdGEsIHNpemUpOworfQorCit2b2lkIE1ENV9GaW5hbCh1bnNpZ25lZCBjaGFyICpyZXN1bHQsIE1ENV9DVFggKmN0eCkKK3sKKwl1bnNpZ25lZCBsb25nIHVzZWQsIGZyZWU7CisKKwl1c2VkID0gY3R4LT5sbyAmIDB4M2Y7CisKKwljdHgtPmJ1ZmZlclt1c2VkKytdID0gMHg4MDsKKworCWZyZWUgPSA2NCAtIHVzZWQ7CisKKwlpZiAoZnJlZSA8IDgpIHsKKwkJbWVtc2V0KCZjdHgtPmJ1ZmZlclt1c2VkXSwgMCwgZnJlZSk7CisJCWJvZHkoY3R4LCBjdHgtPmJ1ZmZlciwgNjQpOworCQl1c2VkID0gMDsKKwkJZnJlZSA9IDY0OworCX0KKworCW1lbXNldCgmY3R4LT5idWZmZXJbdXNlZF0sIDAsIGZyZWUgLSA4KTsKKworCWN0eC0+bG8gPDw9IDM7CisJY3R4LT5idWZmZXJbNTZdID0gY3R4LT5sbzsKKwljdHgtPmJ1ZmZlcls1N10gPSBjdHgtPmxvID4+IDg7CisJY3R4LT5idWZmZXJbNThdID0gY3R4LT5sbyA+PiAxNjsKKwljdHgtPmJ1ZmZlcls1OV0gPSBjdHgtPmxvID4+IDI0OworCWN0eC0+YnVmZmVyWzYwXSA9IGN0eC0+aGk7CisJY3R4LT5idWZmZXJbNjFdID0gY3R4LT5oaSA+PiA4OworCWN0eC0+YnVmZmVyWzYyXSA9IGN0eC0+aGkgPj4gMTY7CisJY3R4LT5idWZmZXJbNjNdID0gY3R4LT5oaSA+PiAyNDsKKworCWJvZHkoY3R4LCBjdHgtPmJ1ZmZlciwgNjQpOworCisJcmVzdWx0WzBdID0gY3R4LT5hOworCXJlc3VsdFsxXSA9IGN0eC0+YSA+PiA4OworCXJlc3VsdFsyXSA9IGN0eC0+YSA+PiAxNjsKKwlyZXN1bHRbM10gPSBjdHgtPmEgPj4gMjQ7CisJcmVzdWx0WzRdID0gY3R4LT5iOworCXJlc3VsdFs1XSA9IGN0eC0+YiA+PiA4OworCXJlc3VsdFs2XSA9IGN0eC0+YiA+PiAxNjsKKwlyZXN1bHRbN10gPSBjdHgtPmIgPj4gMjQ7CisJcmVzdWx0WzhdID0gY3R4LT5jOworCXJlc3VsdFs5XSA9IGN0eC0+YyA+PiA4OworCXJlc3VsdFsxMF0gPSBjdHgtPmMgPj4gMTY7CisJcmVzdWx0WzExXSA9IGN0eC0+YyA+PiAyNDsKKwlyZXN1bHRbMTJdID0gY3R4LT5kOworCXJlc3VsdFsxM10gPSBjdHgtPmQgPj4gODsKKwlyZXN1bHRbMTRdID0gY3R4LT5kID4+IDE2OworCXJlc3VsdFsxNV0gPSBjdHgtPmQgPj4gMjQ7CisKKwltZW1zZXQoY3R4LCAwLCBzaXplb2YoKmN0eCkpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9tZDUuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9tZDUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWE2ODU3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL21kNS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBUaGlzIGlzIGFuIE9wZW5TU0wtY29tcGF0aWJsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUlNBIERhdGEgU2VjdXJpdHksIEluYy4KKyAqIE1ENSBNZXNzYWdlLURpZ2VzdCBBbGdvcml0aG0gKFJGQyAxMzIxKS4KKyAqCisgKiBIb21lcGFnZToKKyAqIGh0dHA6Ly9vcGVud2FsbC5pbmZvL3dpa2kvcGVvcGxlL3NvbGFyL3NvZnR3YXJlL3B1YmxpYy1kb21haW4tc291cmNlLWNvZGUvbWQ1CisgKgorICogQXV0aG9yOgorICogQWxleGFuZGVyIFBlc2x5YWssIGJldHRlciBrbm93biBhcyBTb2xhciBEZXNpZ25lciA8c29sYXIgYXQgb3BlbndhbGwuY29tPgorICoKKyAqIFRoaXMgc29mdHdhcmUgd2FzIHdyaXR0ZW4gYnkgQWxleGFuZGVyIFBlc2x5YWsgaW4gMjAwMS4gIE5vIGNvcHlyaWdodCBpcworICogY2xhaW1lZCwgYW5kIHRoZSBzb2Z0d2FyZSBpcyBoZXJlYnkgcGxhY2VkIGluIHRoZSBwdWJsaWMgZG9tYWluLgorICogSW4gY2FzZSB0aGlzIGF0dGVtcHQgdG8gZGlzY2xhaW0gY29weXJpZ2h0IGFuZCBwbGFjZSB0aGUgc29mdHdhcmUgaW4gdGhlCisgKiBwdWJsaWMgZG9tYWluIGlzIGRlZW1lZCBudWxsIGFuZCB2b2lkLCB0aGVuIHRoZSBzb2Z0d2FyZSBpcworICogQ29weXJpZ2h0IChjKSAyMDAxIEFsZXhhbmRlciBQZXNseWFrIGFuZCBpdCBpcyBoZXJlYnkgcmVsZWFzZWQgdG8gdGhlCisgKiBnZW5lcmFsIHB1YmxpYyB1bmRlciB0aGUgZm9sbG93aW5nIHRlcm1zOgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLgorICoKKyAqIFRoZXJlJ3MgQUJTT0xVVEVMWSBOTyBXQVJSQU5UWSwgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqIFNlZSBtZDUuYyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqLworCisjaWZkZWYgSEFWRV9PUEVOU1NMCisjaW5jbHVkZSA8b3BlbnNzbC9tZDUuaD4KKyNlbGlmICFkZWZpbmVkKF9NRDVfSCkKKyNkZWZpbmUgX01ENV9ICisKKy8qIEFueSAzMi1iaXQgb3Igd2lkZXIgdW5zaWduZWQgaW50ZWdlciBkYXRhIHR5cGUgd2lsbCBkbyAqLwordHlwZWRlZiB1bnNpZ25lZCBpbnQgTUQ1X3UzMnBsdXM7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlNRDVfdTMycGx1cyBsbywgaGk7CisJTUQ1X3UzMnBsdXMgYSwgYiwgYywgZDsKKwl1bnNpZ25lZCBjaGFyIGJ1ZmZlcls2NF07CisJTUQ1X3UzMnBsdXMgYmxvY2tbMTZdOworfSBNRDVfQ1RYOworCitleHRlcm4gdm9pZCBNRDVfSW5pdChNRDVfQ1RYICpjdHgpOworZXh0ZXJuIHZvaWQgTUQ1X1VwZGF0ZShNRDVfQ1RYICpjdHgsIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CitleHRlcm4gdm9pZCBNRDVfRmluYWwodW5zaWduZWQgY2hhciAqcmVzdWx0LCBNRDVfQ1RYICpjdHgpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9ydWxlcy5tayBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvYmFzZS9ydWxlcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTMyMTkxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9iYXNlL3J1bGVzLm1rCkBAIC0wLDAgKzEsOTkgQEAKKyMKKyMgRnJlZVR5cGUgMiBiYXNlIGxheWVyIGNvbmZpZ3VyYXRpb24gcnVsZXMKKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDAsIDIwMDItMjAwOSwgMjAxMyBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKKworIyBJdCBzZXRzIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIHdoaWNoIGFyZSB1c2VkIGJ5IHRoZSBtYXN0ZXIgTWFrZWZpbGUKKyMgYWZ0ZXIgdGhlIGNhbGw6CisjCisjICAgQkFTRV9PQkpfUzogICBUaGUgc2luZ2xlLW9iamVjdCBiYXNlIGxheWVyLgorIyAgIEJBU0VfT0JKX006ICAgQSBsaXN0IG9mIGFsbCBvYmplY3RzIGZvciBhIG11bHRpcGxlLW9iamVjdHMgYnVpbGQuCisjICAgQkFTRV9FWFRfT0JKOiBBIGxpc3Qgb2YgYmFzZSBsYXllciBleHRlbnNpb25zLCBpLmUuLCBjb21wb25lbnRzIGZvdW5kCisjICAgICAgICAgICAgICAgICBpbiBgZnJlZXR5cGUvc3JjL2Jhc2UnIHdoaWNoIGFyZSBub3QgY29tcGlsZWQgd2l0aGluIHRoZQorIyAgICAgICAgICAgICAgICAgYmFzZSBsYXllciBwcm9wZXIuCisKKworQkFTRV9DT01QSUxFIDo9ICQoRlRfQ09NUElMRSkgJEkkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCQoU1JDX0RJUikvYmFzZSkKKworCisjIEJhc2UgbGF5ZXIgc291cmNlcworIworIyAgIGZ0c3lzdGVtLCBmdGluaXQsIGFuZCBmdGRlYnVnIGFyZSBoYW5kbGVkIGJ5IGZyZWV0eXBlLm1rCisjCisjIEFsbCBmaWxlcyBsaXN0ZWQgaGVyZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gYGZ0YmFzZS5jJyAoZm9yIGEgYHNpbmdsZScKKyMgYnVpbGQpLgorIworQkFTRV9TUkMgOj0gJChCQVNFX0RJUikvZnRhZHZhbmMuYyBcCisgICAgICAgICAgICAkKEJBU0VfRElSKS9mdGNhbGMuYyAgIFwKKyAgICAgICAgICAgICQoQkFTRV9ESVIpL2Z0ZGJnbWVtLmMgXAorICAgICAgICAgICAgJChCQVNFX0RJUikvZnRnbG9hZHIuYyBcCisgICAgICAgICAgICAkKEJBU0VfRElSKS9mdG9ianMuYyAgIFwKKyAgICAgICAgICAgICQoQkFTRV9ESVIpL2Z0b3V0bG4uYyAgXAorICAgICAgICAgICAgJChCQVNFX0RJUikvZnRyZm9yay5jICBcCisgICAgICAgICAgICAkKEJBU0VfRElSKS9mdHNuYW1lcy5jIFwKKyAgICAgICAgICAgICQoQkFTRV9ESVIpL2Z0c3RyZWFtLmMgXAorICAgICAgICAgICAgJChCQVNFX0RJUikvZnR0cmlnb24uYyBcCisgICAgICAgICAgICAkKEJBU0VfRElSKS9mdHV0aWwuYworCisKK2lmbmVxICgkKGZ0bWFjX2MpLCkKKyAgQkFTRV9TUkMgKz0gJChCQVNFX0RJUikvJChmdG1hY19jKQorZW5kaWYKKworIyBmb3Igc2ltcGxpY2l0eSwgd2UgYWxzbyBoYW5kbGUgYG1kNS5jJyAod2hpY2ggZ2V0cyBpbmNsdWRlZCBieSBgZnRvYmpzLmgnKQorQkFTRV9IIDo9ICQoQkFTRV9ESVIpL2Z0YmFzZS5oIFwKKyAgICAgICAgICAkKEJBU0VfRElSKS9tZDUuYyAgICBcCisgICAgICAgICAgJChCQVNFX0RJUikvbWQ1LmgKKworIyBCYXNlIGxheWVyIGBleHRlbnNpb25zJyBzb3VyY2VzCisjCisjIEFuIGV4dGVuc2lvbiBpcyBhZGRlZCB0byB0aGUgbGlicmFyeSBmaWxlIGFzIGEgc2VwYXJhdGUgb2JqZWN0LiAgSXQgaXMKKyMgdGhlbiBsaW5rZWQgdG8gdGhlIGZpbmFsIGV4ZWN1dGFibGUgb25seSBpZiBvbmUgb2YgaXRzIHN5bWJvbHMgaXMgdXNlZCBieQorIyB0aGUgYXBwbGljYXRpb24uCisjCitCQVNFX0VYVF9TUkMgOj0gJChwYXRzdWJzdCAlLCQoQkFTRV9ESVIpLyUsJChCQVNFX0VYVEVOU0lPTlMpKQorCisjIERlZmF1bHQgZXh0ZW5zaW9ucyBvYmplY3RzCisjCitCQVNFX0VYVF9PQkogOj0gJChCQVNFX0VYVF9TUkM6JChCQVNFX0RJUikvJS5jPSQoT0JKX0RJUikvJS4kTykKKworCisjIEJhc2UgbGF5ZXIgb2JqZWN0KHMpCisjCisjICAgQkFTRV9PQkpfTSBpcyB1c2VkIGR1cmluZyBgbXVsdGknIGJ1aWxkcyAoZWFjaCBiYXNlIHNvdXJjZSBmaWxlIGNvbXBpbGVzCisjICAgdG8gYSBzaW5nbGUgb2JqZWN0IGZpbGUpLgorIworIyAgIEJBU0VfT0JKX1MgaXMgdXNlZCBkdXJpbmcgYHNpbmdsZScgYnVpbGRzICh0aGUgd2hvbGUgYmFzZSBsYXllciBpcworIyAgIGNvbXBpbGVkIGFzIGEgc2luZ2xlIG9iamVjdCBmaWxlIHVzaW5nIGZ0YmFzZS5jKS4KKyMKK0JBU0VfT0JKX00gOj0gJChCQVNFX1NSQzokKEJBU0VfRElSKS8lLmM9JChPQkpfRElSKS8lLiRPKQorQkFTRV9PQkpfUyA6PSAkKE9CSl9ESVIpL2Z0YmFzZS4kTworCisjIEJhc2UgbGF5ZXIgcm9vdCBzb3VyY2UgZmlsZSBmb3Igc2luZ2xlIGJ1aWxkCisjCitCQVNFX1NSQ19TIDo9ICQoQkFTRV9ESVIpL2Z0YmFzZS5jCisKKworIyBCYXNlIGxheWVyIC0gc2luZ2xlIG9iamVjdCBidWlsZAorIworJChCQVNFX09CSl9TKTogJChCQVNFX1NSQ19TKSAkKEJBU0VfU1JDKSAkKEZSRUVUWVBFX0gpICQoQkFTRV9IKQorCSQoQkFTRV9DT01QSUxFKSAkVCQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJEAgJChCQVNFX1NSQ19TKSkKKworCisjIE11bHRpcGxlIG9iamVjdHMgYnVpbGQgKyBleHRlbnNpb25zCisjCiskKE9CSl9ESVIpLyUuJE86ICQoQkFTRV9ESVIpLyUuYyAkKEZSRUVUWVBFX0gpICQoQkFTRV9IKQorCSQoQkFTRV9DT01QSUxFKSAkVCQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJEAgJDwpCisKKworIyBFT0YKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL0phbWZpbGUgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9KYW1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MDVkM2MKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9KYW1maWxlCkBAIC0wLDAgKzEsMjkgQEAKKyMgRnJlZVR5cGUgMiBzcmMvY2ZmIEphbWZpbGUKKyMKKyMgQ29weXJpZ2h0IDIwMDEsIDIwMDIgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCitTdWJEaXIgIEZUMl9UT1AgJChGVDJfU1JDX0RJUikgY2ZmIDsKKworeworICBsb2NhbCAgX3NvdXJjZXMgOworCisgIGlmICQoRlQyX01VTFRJKQorICB7CisgICAgX3NvdXJjZXMgPSBjZmZkcml2ciBjZmZnbG9hZCBjZmZsb2FkIGNmZm9ianMgY2ZmcGFyc2UgY2ZmY21hcCBjZmZwaWMgOworICB9CisgIGVsc2UKKyAgeworICAgIF9zb3VyY2VzID0gY2ZmIDsKKyAgfQorCisgIExpYnJhcnkgICQoRlQyX0xJQikgOiAkKF9zb3VyY2VzKS5jIDsKK30KKworIyBlbmQgb2Ygc3JjL2NmZiBKYW1maWxlCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJhcnJzdC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyYXJyc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTk2N2ViCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyYXJyc3QuYwpAQCAtMCwwICsxLDI0MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2YyYXJyc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFkb2JlJ3MgY29kZSBmb3IgQXJyYXkgU3RhY2tzIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvciAgICAgICAqLworLyogIG9iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkICAgICAgKi8KKy8qICBoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZSAgICovCisvKiAgdXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCAgICAqLworLyogIExJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cyAgICovCisvKiAgdG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSAgICAqLworLyogIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvciAgICAgKi8KKy8qICAiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgICAgICAgICAgICAgICovCisvKiAgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCAgICAqLworLyogIGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kICAgICAgKi8KKy8qICBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgICovCisvKiAgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgICAgICAqLworLyogIGluZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgICAgKi8KKy8qICBjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMgICAgICAgICovCisvKiAgc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgICAgICAqLworLyogIChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0ICAgKi8KKy8qICB0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzICAgICovCisvKiAgZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMgICAqLworLyogIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiAgKi8KKy8qICB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIEJ5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgICAgKi8KKy8qICBoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAgICAgICAgICAgICAgICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLCAgICAqLworLyogIGFuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICJjZjJmdC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorCisjaW5jbHVkZSAiY2YyZ2x1ZS5oIgorI2luY2x1ZGUgImNmMmFycnN0LmgiCisKKyNpbmNsdWRlICJjZjJlcnJvci5oIgorCisKKyAgLyoKKyAgICogQ0YyX0FyclN0YWNrIHVzZXMgYW4gZXJyb3IgcG9pbnRlciwgdG8gZW5hYmxlIHNoYXJlZCBlcnJvcnMuCisgICAqIFNoYXJlZCBlcnJvcnMgYXJlIG5lY2Vzc2FyeSB3aGVuIG11bHRpcGxlIG9iamVjdHMgYWxsb3cgdGhlIHByb2dyYW0KKyAgICogdG8gY29udGludWUgYWZ0ZXIgZGV0ZWN0aW5nIGVycm9ycy4gIE9ubHkgdGhlIGZpcnN0IGVycm9yIHNob3VsZCBiZQorICAgKiByZWNvcmRlZC4KKyAgICovCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2FycnN0YWNrX2luaXQoIENGMl9BcnJTdGFjayAgYXJyc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX0Vycm9yKiAgICAgZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgIHNpemVJdGVtICkKKyAgeworICAgIEZUX0FTU0VSVCggYXJyc3RhY2sgIT0gTlVMTCApOworCisgICAgLyogaW5pdGlhbGl6ZSB0aGUgc3RydWN0dXJlICovCisgICAgYXJyc3RhY2stPm1lbW9yeSAgICA9IG1lbW9yeTsKKyAgICBhcnJzdGFjay0+ZXJyb3IgICAgID0gZXJyb3I7CisgICAgYXJyc3RhY2stPnNpemVJdGVtICA9IHNpemVJdGVtOworICAgIGFycnN0YWNrLT5hbGxvY2F0ZWQgPSAwOworICAgIGFycnN0YWNrLT5jaHVuayAgICAgPSAxMDsgICAgLyogY2h1bmtzIG9mIDEwIGl0ZW1zICovCisgICAgYXJyc3RhY2stPmNvdW50ICAgICA9IDA7CisgICAgYXJyc3RhY2stPnRvdGFsU2l6ZSA9IDA7CisgICAgYXJyc3RhY2stPnB0ciAgICAgICA9IE5VTEw7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmMl9hcnJzdGFja19maW5hbGl6ZSggQ0YyX0FyclN0YWNrICBhcnJzdGFjayApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGFycnN0YWNrLT5tZW1vcnk7ICAgICAvKiBmb3IgRlRfRlJFRSAqLworCisKKyAgICBGVF9BU1NFUlQoIGFycnN0YWNrICE9IE5VTEwgKTsKKworICAgIGFycnN0YWNrLT5hbGxvY2F0ZWQgPSAwOworICAgIGFycnN0YWNrLT5jb3VudCAgICAgPSAwOworICAgIGFycnN0YWNrLT50b3RhbFNpemUgPSAwOworCisgICAgLyogZnJlZSB0aGUgZGF0YSBidWZmZXIgKi8KKyAgICBGVF9GUkVFKCBhcnJzdGFjay0+cHRyICk7CisgIH0KKworCisgIC8qIGFsbG9jYXRlIG9yIHJlYWxsb2NhdGUgdGhlIGJ1ZmZlciBzaXplOyAqLworICAvKiByZXR1cm4gZmFsc2Ugb24gbWVtb3J5IGVycm9yICovCisgIHN0YXRpYyBGVF9Cb29sCisgIGNmMl9hcnJzdGFja19zZXROdW1FbGVtZW50cyggQ0YyX0FyclN0YWNrICBhcnJzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgIG51bUVsZW1lbnRzICkKKyAgeworICAgIEZUX0FTU0VSVCggYXJyc3RhY2sgIT0gTlVMTCApOworCisgICAgeworICAgICAgRlRfRXJyb3IgICBlcnJvciAgPSBGVF9FcnJfT2s7ICAgICAgICAvKiBmb3IgRlRfUkVBTExPQyAqLworICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBhcnJzdGFjay0+bWVtb3J5OyAvKiBmb3IgRlRfUkVBTExPQyAqLworCisgICAgICBGVF9Mb25nICBuZXdTaXplID0gKEZUX0xvbmcpKCBudW1FbGVtZW50cyAqIGFycnN0YWNrLT5zaXplSXRlbSApOworCisKKyAgICAgIGlmICggbnVtRWxlbWVudHMgPiBMT05HX01BWCAvIGFycnN0YWNrLT5zaXplSXRlbSApCisgICAgICAgIGdvdG8gZXhpdDsKKworCisgICAgICBGVF9BU1NFUlQoIG5ld1NpemUgPiAwICk7ICAgLyogYXZvaWQgcmVhbGxvYyB3aXRoIHplcm8gc2l6ZSAqLworCisgICAgICBpZiAoICFGVF9SRUFMTE9DKCBhcnJzdGFjay0+cHRyLCBhcnJzdGFjay0+dG90YWxTaXplLCBuZXdTaXplICkgKQorICAgICAgeworICAgICAgICBhcnJzdGFjay0+YWxsb2NhdGVkID0gbnVtRWxlbWVudHM7CisgICAgICAgIGFycnN0YWNrLT50b3RhbFNpemUgPSBuZXdTaXplOworCisgICAgICAgIGlmICggYXJyc3RhY2stPmNvdW50ID4gbnVtRWxlbWVudHMgKQorICAgICAgICB7CisgICAgICAgICAgLyogd2UgdHJ1bmNhdGVkIHRoZSBsaXN0ISAqLworICAgICAgICAgIENGMl9TRVRfRVJST1IoIGFycnN0YWNrLT5lcnJvciwgU3RhY2tfT3ZlcmZsb3cgKTsKKyAgICAgICAgICBhcnJzdGFjay0+Y291bnQgPSBudW1FbGVtZW50czsKKyAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gVFJVRTsgICAgIC8qIHN1Y2Nlc3MgKi8KKyAgICAgIH0KKyAgICB9CisKKyAgZXhpdDoKKyAgICAvKiBpZiB0aGVyZSdzIG5vdCBhbHJlYWR5IGFuIGVycm9yLCBzdG9yZSB0aGlzIG9uZSAqLworICAgIENGMl9TRVRfRVJST1IoIGFycnN0YWNrLT5lcnJvciwgT3V0X09mX01lbW9yeSApOworCisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKworICAvKiBzZXQgdGhlIGNvdW50LCBlbnN1cmluZyBhbGxvY2F0aW9uIGlzIHN1ZmZpY2llbnQgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2FycnN0YWNrX3NldENvdW50KCBDRjJfQXJyU3RhY2sgIGFycnN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgbnVtRWxlbWVudHMgKQorICB7CisgICAgRlRfQVNTRVJUKCBhcnJzdGFjayAhPSBOVUxMICk7CisKKyAgICBpZiAoIG51bUVsZW1lbnRzID4gYXJyc3RhY2stPmFsbG9jYXRlZCApCisgICAgeworICAgICAgLyogZXhwYW5kIHRoZSBhbGxvY2F0aW9uIGZpcnN0ICovCisgICAgICBpZiAoICFjZjJfYXJyc3RhY2tfc2V0TnVtRWxlbWVudHMoIGFycnN0YWNrLCBudW1FbGVtZW50cyApICkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFycnN0YWNrLT5jb3VudCA9IG51bUVsZW1lbnRzOworICB9CisKKworICAvKiBjbGVhciB0aGUgY291bnQgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2FycnN0YWNrX2NsZWFyKCBDRjJfQXJyU3RhY2sgIGFycnN0YWNrICkKKyAgeworICAgIEZUX0FTU0VSVCggYXJyc3RhY2sgIT0gTlVMTCApOworCisgICAgYXJyc3RhY2stPmNvdW50ID0gMDsKKyAgfQorCisKKyAgLyogY3VycmVudCBudW1iZXIgb2YgaXRlbXMgKi8KKyAgRlRfTE9DQUxfREVGKCBzaXplX3QgKQorICBjZjJfYXJyc3RhY2tfc2l6ZSggY29uc3QgQ0YyX0FyclN0YWNrICBhcnJzdGFjayApCisgIHsKKyAgICBGVF9BU1NFUlQoIGFycnN0YWNrICE9IE5VTEwgKTsKKworICAgIHJldHVybiBhcnJzdGFjay0+Y291bnQ7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCogKQorICBjZjJfYXJyc3RhY2tfZ2V0QnVmZmVyKCBjb25zdCBDRjJfQXJyU3RhY2sgIGFycnN0YWNrICkKKyAgeworICAgIEZUX0FTU0VSVCggYXJyc3RhY2sgIT0gTlVMTCApOworCisgICAgcmV0dXJuIGFycnN0YWNrLT5wdHI7CisgIH0KKworCisgIC8qIHJldHVybiBwb2ludGVyIHRvIHRoZSBnaXZlbiBlbGVtZW50ICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCogKQorICBjZjJfYXJyc3RhY2tfZ2V0UG9pbnRlciggY29uc3QgQ0YyX0FyclN0YWNrICBhcnJzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICAgICAgaWR4ICkKKyAgeworICAgIHZvaWQqICBuZXdQdHI7CisKKworICAgIEZUX0FTU0VSVCggYXJyc3RhY2sgIT0gTlVMTCApOworCisgICAgaWYgKCBpZHggPj0gYXJyc3RhY2stPmNvdW50ICkKKyAgICB7CisgICAgICAvKiBvdmVyZmxvdyAqLworICAgICAgQ0YyX1NFVF9FUlJPUiggYXJyc3RhY2stPmVycm9yLCBTdGFja19PdmVyZmxvdyApOworICAgICAgaWR4ID0gMDsgICAgLyogY2hvb3NlIHNhZmUgZGVmYXVsdCAqLworICAgIH0KKworICAgIG5ld1B0ciA9IChGVF9CeXRlKilhcnJzdGFjay0+cHRyICsgaWR4ICogYXJyc3RhY2stPnNpemVJdGVtOworCisgICAgcmV0dXJuIG5ld1B0cjsKKyAgfQorCisKKyAgLyogcHVzaCAoYXBwZW5kKSBhbiBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIGxpc3Q7ICAgICAgICAgKi8KKyAgLyogcmV0dXJuIGZhbHNlIG9uIG1lbW9yeSBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVE9ETzogc2hvdWxkIHRoZXJlIGJlIGEgbGVuZ3RoIHBhcmFtIGZvciBleHRyYSBjaGVja2luZz8gKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2FycnN0YWNrX3B1c2goIENGMl9BcnJTdGFjayAgYXJyc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiAgIHB0ciApCisgIHsKKyAgICBGVF9BU1NFUlQoIGFycnN0YWNrICE9IE5VTEwgKTsKKworICAgIGlmICggYXJyc3RhY2stPmNvdW50ID09IGFycnN0YWNrLT5hbGxvY2F0ZWQgKQorICAgIHsKKyAgICAgIC8qIGdyb3cgdGhlIGJ1ZmZlciBieSBvbmUgY2h1bmsgKi8KKyAgICAgIGlmICggIWNmMl9hcnJzdGFja19zZXROdW1FbGVtZW50cygKKyAgICAgICAgICAgICBhcnJzdGFjaywgYXJyc3RhY2stPmFsbG9jYXRlZCArIGFycnN0YWNrLT5jaHVuayApICkKKyAgICAgIHsKKyAgICAgICAgLyogb24gZXJyb3IsIGlnbm9yZSB0aGUgcHVzaCAqLworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorCisgICAgRlRfQVNTRVJUKCBwdHIgIT0gTlVMTCApOworCisgICAgeworICAgICAgc2l6ZV90ICBvZmZzZXQgPSBhcnJzdGFjay0+Y291bnQgKiBhcnJzdGFjay0+c2l6ZUl0ZW07CisgICAgICB2b2lkKiAgIG5ld1B0ciA9IChGVF9CeXRlKilhcnJzdGFjay0+cHRyICsgb2Zmc2V0OworCisKKyAgICAgIEZUX01FTV9DT1BZKCBuZXdQdHIsIHB0ciwgYXJyc3RhY2stPnNpemVJdGVtICk7CisgICAgICBhcnJzdGFjay0+Y291bnQgKz0gMTsKKyAgICB9CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmFycnN0LmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJhcnJzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNWFkOGIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJhcnJzdC5oCkBAIC0wLDAgKzEsMTAwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZjJhcnJzdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQWRvYmUncyBjb2RlIGZvciBBcnJheSBTdGFja3MgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDctMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yICAgICAgICovCisvKiAgb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQgICAgICAqLworLyogIGhlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlICAgKi8KKy8qICB1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsICAgICovCisvKiAgTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzICAgKi8KKy8qICB0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5ICAgICovCisvKiAgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yICAgICAqLworLyogICJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCAgICAgICAgICAgICAgKi8KKy8qICByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50ICAgICovCisvKiAgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgICAgICAqLworLyogIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSAgKi8KKy8qICBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSAgICAgICovCisvKiAgaW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciAgICAqLworLyogIGNvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcyAgICAgICAgKi8KKy8qICBzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAgICAgICovCisvKiAgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgICAqLworLyogIHRoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgICAgKi8KKy8qICBkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyAgICovCisvKiAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mICAqLworLyogIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSAgICAqLworLyogIGhhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICAgICAgICAgICAgICAgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sICAgICovCisvKiAgYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NGMkFSUlNUX0hfXworI2RlZmluZSBfX0NGMkFSUlNUX0hfXworCisKKyNpbmNsdWRlICJjZjJlcnJvci5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyogbmVlZCB0byBkZWZpbmUgdGhlIHN0cnVjdCBoZXJlIChub3Qgb3BhcXVlKSBzbyBpdCBjYW4gYmUgYWxsb2NhdGVkIGJ5ICovCisgIC8qIGNsaWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgQ0YyX0FyclN0YWNrUmVjXworICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnk7CisgICAgRlRfRXJyb3IqICBlcnJvcjsKKworICAgIHNpemVfdCAgc2l6ZUl0ZW07ICAgICAgIC8qIGJ5dGVzIHBlciBlbGVtZW50ICAgICAgICAgICAgICovCisgICAgc2l6ZV90ICBhbGxvY2F0ZWQ7ICAgICAgLyogaXRlbXMgYWxsb2NhdGVkICAgICAgICAgICAgICAgKi8KKyAgICBzaXplX3QgIGNodW5rOyAgICAgICAgICAvKiBhbGxvY2F0aW9uIGluY3JlbWVudCBpbiBpdGVtcyAqLworICAgIHNpemVfdCAgY291bnQ7ICAgICAgICAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBhbGxvY2F0ZWQgICovCisgICAgc2l6ZV90ICB0b3RhbFNpemU7ICAgICAgLyogdG90YWwgYnl0ZXMgYWxsb2NhdGVkICAgICAgICAgKi8KKworICAgIHZvaWQqICBwdHI7ICAgICAgICAgICAgIC8qIHB0ciB0byBkYXRhICAgICAgICAgICAgICAgICAgICovCisKKyAgfSBDRjJfQXJyU3RhY2tSZWMsICpDRjJfQXJyU3RhY2s7CisKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9hcnJzdGFja19pbml0KCBDRjJfQXJyU3RhY2sgIGFycnN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogICAgIGVycm9yLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICBzaXplSXRlbSApOworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9hcnJzdGFja19maW5hbGl6ZSggQ0YyX0FyclN0YWNrICBhcnJzdGFjayApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2YyX2FycnN0YWNrX3NldENvdW50KCBDRjJfQXJyU3RhY2sgIGFycnN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgbnVtRWxlbWVudHMgKTsKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfYXJyc3RhY2tfY2xlYXIoIENGMl9BcnJTdGFjayAgYXJyc3RhY2sgKTsKKyAgRlRfTE9DQUwoIHNpemVfdCApCisgIGNmMl9hcnJzdGFja19zaXplKCBjb25zdCBDRjJfQXJyU3RhY2sgIGFycnN0YWNrICk7CisKKyAgRlRfTE9DQUwoIHZvaWQqICkKKyAgY2YyX2FycnN0YWNrX2dldEJ1ZmZlciggY29uc3QgQ0YyX0FyclN0YWNrICBhcnJzdGFjayApOworICBGVF9MT0NBTCggdm9pZCogKQorICBjZjJfYXJyc3RhY2tfZ2V0UG9pbnRlciggY29uc3QgQ0YyX0FyclN0YWNrICBhcnJzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICAgICAgaWR4ICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfYXJyc3RhY2tfcHVzaCggQ0YyX0FyclN0YWNrICBhcnJzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICAgcHRyICk7CisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX0NGMkFSUlNUX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyYmx1ZXMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmJsdWVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5NDM0MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmJsdWVzLmMKQEAgLTAsMCArMSw1NzggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmMmJsdWVzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBZG9iZSdzIGNvZGUgZm9yIGhhbmRsaW5nIEJsdWUgWm9uZXMgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOS0yMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgc29mdHdhcmUsIGFuZCBhbGwgd29ya3Mgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBzb3VyY2Ugb3IgICAgICAgKi8KKy8qICBvYmplY3QgY29kZSBmb3JtIGFzIGluZGljYXRlZCBieSB0aGUgY29weXJpZ2h0IG5vdGljZShzKSBpbmNsdWRlZCAgICAgICovCisvKiAgaGVyZWluIChjb2xsZWN0aXZlbHksIHRoZSAiV29yayIpIGlzIG1hZGUgYXZhaWxhYmxlLCBhbmQgbWF5IG9ubHkgYmUgICAqLworLyogIHVzZWQsIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgICAgKi8KKy8qICBMSUNFTlNFLlRYVC4gIEFkZGl0aW9uYWxseSwgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCBlYWNoIGNvbnRyaWJ1dG9yIHRvIHRoZSBXb3JrIGhlcmVieSBncmFudHMgICAqLworLyogIHRvIGFueSBpbmRpdmlkdWFsIG9yIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgICAgKi8KKy8qICB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFuZCB0aGlzIHNlY3Rpb24gKGhlcmVhZnRlciwgIllvdSIgb3IgICAgICovCisvKiAgIllvdXIiKSBhIHBlcnBldHVhbCwgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsICAgICAgICAgICAgICAqLworLyogIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgICAgKi8KKy8qICBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCAgICAgICovCisvKiAgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLCB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlICAqLworLyogIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZSBieSBzdWNoIGNvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5ICAgICAgKi8KKy8qICBpbmZyaW5nZWQgYnkgdGhlaXIgY29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyICAgICovCisvKiAgY29udHJpYnV0aW9uKHMpIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBjb250cmlidXRpb24ocykgd2FzICAgICAgICAqLworLyogIHN1Ym1pdHRlZC4gIElmIFlvdSBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5ICAgICAgKi8KKy8qICAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCAgICovCisvKiAgdGhlIFdvcmsgb3IgYSBjb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyAgICAqLworLyogIGRpcmVjdCBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzICAgKi8KKy8qICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgICovCisvKiAgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBCeSB1c2luZywgbW9kaWZ5aW5nLCBvciBkaXN0cmlidXRpbmcgdGhlIFdvcmsgeW91IGluZGljYXRlIHRoYXQgeW91ICAgICovCisvKiAgaGF2ZSByZWFkIGFuZCB1bmRlcnN0b29kIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgICAgICAgICAgICAgICAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhcyB3ZWxsIGFzIHRob3NlIHByb3ZpZGVkIGluIHRoaXMgc2VjdGlvbiwgICAgKi8KKy8qICBhbmQgeW91IGFjY2VwdCB0aGVtIGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiY2YyZnQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKworI2luY2x1ZGUgImNmMmJsdWVzLmgiCisjaW5jbHVkZSAiY2YyaGludHMuaCIKKyNpbmNsdWRlICJjZjJmb250LmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9jZjJibHVlcworCisKKyAgLyoKKyAgICogRm9yIGJsdWUgdmFsdWVzLCB0aGUgRnJlZVR5cGUgcGFyc2VyIHByb2R1Y2VzIGFuIGFycmF5IG9mIGludGVnZXJzLAorICAgKiB3aGlsZSB0aGUgQWRvYmUgQ0ZGIGVuZ2luZSBwcm9kdWNlcyBhbiBhcnJheSBvZiBmaXhlZC4KKyAgICogRGVmaW5lIGEgbWFjcm8gdG8gY29udmVydCBGcmVlVHlwZSB0byBmaXhlZC4KKyAgICovCisjZGVmaW5lIGNmMl9ibHVlVG9GaXhlZCggeCApICBjZjJfaW50VG9GaXhlZCggeCApCisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfYmx1ZXNfaW5pdCggQ0YyX0JsdWVzICBibHVlcywKKyAgICAgICAgICAgICAgICAgIENGMl9Gb250ICAgZm9udCApCisgIHsKKyAgICAvKiBwb2ludGVyIHRvIHBhcnNlZCBmb250IG9iamVjdCAqLworICAgIENGRl9EZWNvZGVyKiAgZGVjb2RlciA9IGZvbnQtPmRlY29kZXI7CisKKyAgICBDRjJfRml4ZWQgIHpvbmVIZWlnaHQ7CisgICAgQ0YyX0ZpeGVkICBtYXhab25lSGVpZ2h0ID0gMDsKKyAgICBDRjJfRml4ZWQgIGNzVW5pdHNQZXJQaXhlbDsKKworICAgIHNpemVfdCAgbnVtQmx1ZVZhbHVlczsKKyAgICBzaXplX3QgIG51bU90aGVyQmx1ZXM7CisgICAgc2l6ZV90ICBudW1GYW1pbHlCbHVlczsKKyAgICBzaXplX3QgIG51bUZhbWlseU90aGVyQmx1ZXM7CisKKyAgICBGVF9Qb3MqICBibHVlVmFsdWVzOworICAgIEZUX1BvcyogIG90aGVyQmx1ZXM7CisgICAgRlRfUG9zKiAgZmFtaWx5Qmx1ZXM7CisgICAgRlRfUG9zKiAgZmFtaWx5T3RoZXJCbHVlczsKKworICAgIHNpemVfdCAgICAgaTsKKyAgICBDRjJfRml4ZWQgIGVtQm94Qm90dG9tLCBlbUJveFRvcDsKKworICAgIENGMl9JbnQgIHVuaXRzUGVyRW0gPSBmb250LT51bml0c1BlckVtOworCisKKyAgICBpZiAoIHVuaXRzUGVyRW0gPT0gMCApCisgICAgICB1bml0c1BlckVtID0gMTAwMDsKKworICAgIEZUX1pFUk8oIGJsdWVzICk7CisgICAgYmx1ZXMtPnNjYWxlID0gZm9udC0+aW5uZXJUcmFuc2Zvcm0uZDsKKworICAgIGNmMl9nZXRCbHVlTWV0cmljcyggZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICZibHVlcy0+Ymx1ZVNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgJmJsdWVzLT5ibHVlU2hpZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAmYmx1ZXMtPmJsdWVGdXp6ICk7CisKKyAgICBjZjJfZ2V0Qmx1ZVZhbHVlcyggZGVjb2RlciwgJm51bUJsdWVWYWx1ZXMsICZibHVlVmFsdWVzICk7CisgICAgY2YyX2dldE90aGVyQmx1ZXMoIGRlY29kZXIsICZudW1PdGhlckJsdWVzLCAmb3RoZXJCbHVlcyApOworICAgIGNmMl9nZXRGYW1pbHlCbHVlcyggZGVjb2RlciwgJm51bUZhbWlseUJsdWVzLCAmZmFtaWx5Qmx1ZXMgKTsKKyAgICBjZjJfZ2V0RmFtaWx5T3RoZXJCbHVlcyggZGVjb2RlciwgJm51bUZhbWlseU90aGVyQmx1ZXMsICZmYW1pbHlPdGhlckJsdWVzICk7CisKKyAgICAvKgorICAgICAqIHN5bnRoZXRpYyBlbSBib3ggaGludCBoZXVyaXN0aWMKKyAgICAgKgorICAgICAqIEFwcGx5IHRoaXMgd2hlbiBpZGVvZ3JhcGhpYyBkaWN0aW9uYXJ5IChMYW5ndWFnZUdyb3VwIDEpIGhhcyBubworICAgICAqIHJlYWwgYWxpZ25tZW50IHpvbmVzLiAgQWRvYmUgdG9vbHMgZ2VuZXJhdGUgZHVtbXkgem9uZXMgYXQgLTI1MCBhbmQKKyAgICAgKiAxMTAwIGZvciBhIDEwMDAgdW5pdCBlbS4gIEZvbnRzIHdpdGggSUNGLWJhc2VkIGFsaWdubWVudCB6b25lcworICAgICAqIHNob3VsZCBub3QgZW5hYmxlIHRoZSBoZXVyaXN0aWMuICBXaGVuIHRoZSBoZXVyaXN0aWMgaXMgZW5hYmxlZCwKKyAgICAgKiB0aGUgZm9udCdzIGJsdWUgem9uZXMgYXJlIGlnbm9yZWQuCisgICAgICoKKyAgICAgKi8KKworICAgIC8qIGdldCBlbSBib3ggZnJvbSBPUy8yIHR5cG9Bc2NlbmRlci9EZXNjZW5kZXIgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBUT0RPOiBGcmVlVHlwZSBkb2VzIG5vdCBwYXJzZSB0aGVzZSBtZXRyaWNzLiAgU2tpcCB0aGVtIGZvciBub3cuICovCisjaWYgMAorICAgIEZDTV9nZXRIb3Jpem9udGFsTGluZU1ldHJpY3MoICZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtPmZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFzY2VuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXNjZW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpbmVnYXAgKTsKKyAgICBpZiAoIGFzY2VuZGVyIC0gZGVzY2VuZGVyID09IHVuaXRzUGVyRW0gKQorICAgIHsKKyAgICAgIGVtQm94Qm90dG9tID0gY2YyX2ludFRvRml4ZWQoIGRlc2NlbmRlciApOworICAgICAgZW1Cb3hUb3AgICAgPSBjZjJfaW50VG9GaXhlZCggYXNjZW5kZXIgKTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgZW1Cb3hCb3R0b20gPSBDRjJfSUNGX0JvdHRvbTsKKyAgICAgIGVtQm94VG9wICAgID0gQ0YyX0lDRl9Ub3A7CisgICAgfQorCisgICAgaWYgKCBjZjJfZ2V0TGFuZ3VhZ2VHcm91cCggZGVjb2RlciApID09IDEgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICggbnVtQmx1ZVZhbHVlcyA9PSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgKCBudW1CbHVlVmFsdWVzID09IDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgY2YyX2JsdWVUb0ZpeGVkKCBibHVlVmFsdWVzWzBdICkgPCBlbUJveEJvdHRvbSAmJgorICAgICAgICAgICAgIGNmMl9ibHVlVG9GaXhlZCggYmx1ZVZhbHVlc1sxXSApIDwgZW1Cb3hCb3R0b20gJiYKKyAgICAgICAgICAgICBjZjJfYmx1ZVRvRml4ZWQoIGJsdWVWYWx1ZXNbMl0gKSA+IGVtQm94VG9wICAgICYmCisgICAgICAgICAgICAgY2YyX2JsdWVUb0ZpeGVkKCBibHVlVmFsdWVzWzNdICkgPiBlbUJveFRvcCAgICApICkgKQorICAgIHsKKyAgICAgIC8qCisgICAgICAgKiBDb25zdHJ1Y3QgaGludCBlZGdlcyBzdWl0YWJsZSBmb3Igc3ludGhldGljIGdob3N0IGhpbnRzIGF0IHRvcAorICAgICAgICogYW5kIGJvdHRvbSBvZiBlbSBib3guICArLUNGMl9NSU5fQ09VTlRFUiBhbGxvd3MgZm9yIHVuaGludGVkCisgICAgICAgKiBmZWF0dXJlcyBhYm92ZSBvciBiZWxvdyB0aGUgbGFzdCBoaW50ZWQgZWRnZS4gIFRoaXMgYWxzbyBnaXZlcyBhCisgICAgICAgKiBuZXQgMSBwaXhlbCBib29zdCB0byB0aGUgaGVpZ2h0IG9mIGlkZW9ncmFwaGljIGdseXBocy4KKyAgICAgICAqCisgICAgICAgKiBOb3RlOiBBZGp1c3Qgc3ludGhldGljIGhpbnRzIG91dHdhcmQgYnkgZXBzaWxvbiAoMHguMDAwMSkgdG8KKyAgICAgICAqICAgICAgIGF2b2lkIGludGVyZmVyZW5jZS4gIEUuZy4sIHNvbWUgZm9udHMgaGF2ZSByZWFsIGhpbnRzIGF0CisgICAgICAgKiAgICAgICA4ODAgYW5kIC0xMjAuCisgICAgICAgKi8KKworICAgICAgYmx1ZXMtPmVtQm94Qm90dG9tRWRnZS5jc0Nvb3JkID0gZW1Cb3hCb3R0b20gLSBDRjJfRklYRURfRVBTSUxPTjsKKyAgICAgIGJsdWVzLT5lbUJveEJvdHRvbUVkZ2UuZHNDb29yZCA9IGNmMl9maXhlZFJvdW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxGaXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1ZXMtPmVtQm94Qm90dG9tRWRnZS5jc0Nvb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdWVzLT5zY2FsZSApICkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX01JTl9DT1VOVEVSOworICAgICAgYmx1ZXMtPmVtQm94Qm90dG9tRWRnZS5zY2FsZSAgID0gYmx1ZXMtPnNjYWxlOworICAgICAgYmx1ZXMtPmVtQm94Qm90dG9tRWRnZS5mbGFncyAgID0gQ0YyX0dob3N0Qm90dG9tIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9Mb2NrZWQgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX1N5bnRoZXRpYzsKKworICAgICAgYmx1ZXMtPmVtQm94VG9wRWRnZS5jc0Nvb3JkID0gZW1Cb3hUb3AgKyBDRjJfRklYRURfRVBTSUxPTiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICogZm9udC0+ZGFya2VuWTsKKyAgICAgIGJsdWVzLT5lbUJveFRvcEVkZ2UuZHNDb29yZCA9IGNmMl9maXhlZFJvdW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxGaXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1ZXMtPmVtQm94VG9wRWRnZS5jc0Nvb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdWVzLT5zY2FsZSApICkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX01JTl9DT1VOVEVSOworICAgICAgYmx1ZXMtPmVtQm94VG9wRWRnZS5zY2FsZSAgID0gYmx1ZXMtPnNjYWxlOworICAgICAgYmx1ZXMtPmVtQm94VG9wRWRnZS5mbGFncyAgID0gQ0YyX0dob3N0VG9wIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9Mb2NrZWQgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX1N5bnRoZXRpYzsKKworICAgICAgYmx1ZXMtPmRvRW1Cb3hIaW50cyA9IFRSVUU7ICAgIC8qIGVuYWJsZSB0aGUgaGV1cmlzdGljICovCisKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBjb3B5IGBCbHVlVmFsdWVzJyBhbmQgYE90aGVyQmx1ZXMnIHRvIGEgY29tYmluZWQgYXJyYXkgb2YgdG9wIGFuZCAqLworICAgIC8qIGJvdHRvbSB6b25lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgZm9yICggaSA9IDA7IGkgPCBudW1CbHVlVmFsdWVzOyBpICs9IDIgKQorICAgIHsKKyAgICAgIGJsdWVzLT56b25lW2JsdWVzLT5jb3VudF0uY3NCb3R0b21FZGdlID0KKyAgICAgICAgY2YyX2JsdWVUb0ZpeGVkKCBibHVlVmFsdWVzW2ldICk7CisgICAgICBibHVlcy0+em9uZVtibHVlcy0+Y291bnRdLmNzVG9wRWRnZSA9CisgICAgICAgIGNmMl9ibHVlVG9GaXhlZCggYmx1ZVZhbHVlc1tpICsgMV0gKTsKKworICAgICAgem9uZUhlaWdodCA9IGJsdWVzLT56b25lW2JsdWVzLT5jb3VudF0uY3NUb3BFZGdlIC0KKyAgICAgICAgICAgICAgICAgICBibHVlcy0+em9uZVtibHVlcy0+Y291bnRdLmNzQm90dG9tRWRnZTsKKworICAgICAgaWYgKCB6b25lSGVpZ2h0IDwgMCApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFNCgoICJjZjJfYmx1ZXNfaW5pdDogaWdub3JpbmcgbmVnYXRpdmUgem9uZSBoZWlnaHRcbiIgKSk7CisgICAgICAgIGNvbnRpbnVlOyAgIC8qIHJlamVjdCB0aGlzIHpvbmUgKi8KKyAgICAgIH0KKworICAgICAgaWYgKCB6b25lSGVpZ2h0ID4gbWF4Wm9uZUhlaWdodCApCisgICAgICB7CisgICAgICAgIC8qIHRha2UgbWF4aW11bSBiZWZvcmUgZGFya2VuaW5nIGFkanVzdG1lbnQgICAgICAqLworICAgICAgICAvKiBzbyBvdmVyc2hvb3Qgc3VwcHJlc3Npb24gcG9pbnQgZG9lc24ndCBjaGFuZ2UgKi8KKyAgICAgICAgbWF4Wm9uZUhlaWdodCA9IHpvbmVIZWlnaHQ7CisgICAgICB9CisKKyAgICAgIC8qIGFkanVzdCBib3RoIGVkZ2VzIG9mIHRvcCB6b25lIHVwd2FyZCBieSB0d2ljZSBkYXJrZW5pbmcgYW1vdW50ICovCisgICAgICBpZiAoIGkgIT0gMCApCisgICAgICB7CisgICAgICAgIGJsdWVzLT56b25lW2JsdWVzLT5jb3VudF0uY3NUb3BFZGdlICAgICs9IDIgKiBmb250LT5kYXJrZW5ZOworICAgICAgICBibHVlcy0+em9uZVtibHVlcy0+Y291bnRdLmNzQm90dG9tRWRnZSArPSAyICogZm9udC0+ZGFya2VuWTsKKyAgICAgIH0KKworICAgICAgLyogZmlyc3QgYEJsdWVWYWx1ZScgaXMgYm90dG9tIHpvbmU7IG90aGVycyBhcmUgdG9wICovCisgICAgICBpZiAoIGkgPT0gMCApCisgICAgICB7CisgICAgICAgIGJsdWVzLT56b25lW2JsdWVzLT5jb3VudF0uYm90dG9tWm9uZSA9CisgICAgICAgICAgVFJVRTsKKyAgICAgICAgYmx1ZXMtPnpvbmVbYmx1ZXMtPmNvdW50XS5jc0ZsYXRFZGdlID0KKyAgICAgICAgICBibHVlcy0+em9uZVtibHVlcy0+Y291bnRdLmNzVG9wRWRnZTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgYmx1ZXMtPnpvbmVbYmx1ZXMtPmNvdW50XS5ib3R0b21ab25lID0KKyAgICAgICAgICBGQUxTRTsKKyAgICAgICAgYmx1ZXMtPnpvbmVbYmx1ZXMtPmNvdW50XS5jc0ZsYXRFZGdlID0KKyAgICAgICAgICBibHVlcy0+em9uZVtibHVlcy0+Y291bnRdLmNzQm90dG9tRWRnZTsKKyAgICAgIH0KKworICAgICAgYmx1ZXMtPmNvdW50ICs9IDE7CisgICAgfQorCisgICAgZm9yICggaSA9IDA7IGkgPCBudW1PdGhlckJsdWVzOyBpICs9IDIgKQorICAgIHsKKyAgICAgIGJsdWVzLT56b25lW2JsdWVzLT5jb3VudF0uY3NCb3R0b21FZGdlID0KKyAgICAgICAgY2YyX2JsdWVUb0ZpeGVkKCBvdGhlckJsdWVzW2ldICk7CisgICAgICBibHVlcy0+em9uZVtibHVlcy0+Y291bnRdLmNzVG9wRWRnZSA9CisgICAgICAgIGNmMl9ibHVlVG9GaXhlZCggb3RoZXJCbHVlc1tpICsgMV0gKTsKKworICAgICAgem9uZUhlaWdodCA9IGJsdWVzLT56b25lW2JsdWVzLT5jb3VudF0uY3NUb3BFZGdlIC0KKyAgICAgICAgICAgICAgICAgICBibHVlcy0+em9uZVtibHVlcy0+Y291bnRdLmNzQm90dG9tRWRnZTsKKworICAgICAgaWYgKCB6b25lSGVpZ2h0IDwgMCApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFNCgoICJjZjJfYmx1ZXNfaW5pdDogaWdub3JpbmcgbmVnYXRpdmUgem9uZSBoZWlnaHRcbiIgKSk7CisgICAgICAgIGNvbnRpbnVlOyAgIC8qIHJlamVjdCB0aGlzIHpvbmUgKi8KKyAgICAgIH0KKworICAgICAgaWYgKCB6b25lSGVpZ2h0ID4gbWF4Wm9uZUhlaWdodCApCisgICAgICB7CisgICAgICAgIC8qIHRha2UgbWF4aW11bSBiZWZvcmUgZGFya2VuaW5nIGFkanVzdG1lbnQgICAgICAqLworICAgICAgICAvKiBzbyBvdmVyc2hvb3Qgc3VwcHJlc3Npb24gcG9pbnQgZG9lc24ndCBjaGFuZ2UgKi8KKyAgICAgICAgbWF4Wm9uZUhlaWdodCA9IHpvbmVIZWlnaHQ7CisgICAgICB9CisKKyAgICAgIC8qIE5vdGU6IGJvdHRvbSB6b25lcyBhcmUgbm90IGFkanVzdGVkIGZvciBkYXJrZW5pbmcgYW1vdW50ICovCisKKyAgICAgIC8qIGFsbCBPdGhlckJsdWVzIGFyZSBib3R0b20gem9uZSAqLworICAgICAgYmx1ZXMtPnpvbmVbYmx1ZXMtPmNvdW50XS5ib3R0b21ab25lID0KKyAgICAgICAgVFJVRTsKKyAgICAgIGJsdWVzLT56b25lW2JsdWVzLT5jb3VudF0uY3NGbGF0RWRnZSA9CisgICAgICAgIGJsdWVzLT56b25lW2JsdWVzLT5jb3VudF0uY3NUb3BFZGdlOworCisgICAgICBibHVlcy0+Y291bnQgKz0gMTsKKyAgICB9CisKKyAgICAvKiBBZGp1c3QgZm9yIEZhbWlseUJsdWVzICovCisKKyAgICAvKiBTZWFyY2ggZm9yIHRoZSBuZWFyZXN0IGZsYXQgZWRnZSBpbiBgRmFtaWx5Qmx1ZXMnIG9yICAgICAgICAgICAgICAgICovCisgICAgLyogYEZhbWlseU90aGVyQmx1ZXMnLiAgQWNjb3JkaW5nIHRvIHRoZSBCbGFjayBCb29rLCBhbnkgbWF0Y2hpbmcgZWRnZSAqLworICAgIC8qIG11c3QgYmUgd2l0aGluIG9uZSBkZXZpY2UgcGl4ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIGNzVW5pdHNQZXJQaXhlbCA9IEZUX0RpdkZpeCggY2YyX2ludFRvRml4ZWQoIDEgKSwgYmx1ZXMtPnNjYWxlICk7CisKKyAgICAvKiBsb29wIG9uIGFsbCB6b25lcyBpbiB0aGlzIGZvbnQgKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IGJsdWVzLT5jb3VudDsgaSsrICkKKyAgICB7CisgICAgICBzaXplX3QgICAgIGo7CisgICAgICBDRjJfRml4ZWQgIG1pbkRpZmY7CisgICAgICBDRjJfRml4ZWQgIGZsYXRGYW1pbHlFZGdlLCBkaWZmOworICAgICAgLyogdmFsdWUgZm9yIHRoaXMgZm9udCAqLworICAgICAgQ0YyX0ZpeGVkICBmbGF0RWRnZSA9IGJsdWVzLT56b25lW2ldLmNzRmxhdEVkZ2U7CisKKworICAgICAgaWYgKCBibHVlcy0+em9uZVtpXS5ib3R0b21ab25lICkKKyAgICAgIHsKKyAgICAgICAgLyogSW4gYSBib3R0b20gem9uZSwgdGhlIHRvcCBlZGdlIGlzIHRoZSBmbGF0IGVkZ2UuICAgICAgICAgICAgICovCisgICAgICAgIC8qIFNlYXJjaCBgRmFtaWx5T3RoZXJCbHVlcycgZm9yIGJvdHRvbSB6b25lczsgbG9vayBmb3IgY2xvc2VzdCAqLworICAgICAgICAvKiBGYW1pbHkgZWRnZSB0aGF0IGlzIHdpdGhpbiB0aGUgb25lIHBpeGVsIHRocmVzaG9sZC4gICAgICAgICAgKi8KKworICAgICAgICBtaW5EaWZmID0gQ0YyX0ZJWEVEX01BWDsKKworICAgICAgICBmb3IgKCBqID0gMDsgaiA8IG51bUZhbWlseU90aGVyQmx1ZXM7IGogKz0gMiApCisgICAgICAgIHsKKyAgICAgICAgICAvKiB0b3AgZWRnZSAqLworICAgICAgICAgIGZsYXRGYW1pbHlFZGdlID0gY2YyX2JsdWVUb0ZpeGVkKCBmYW1pbHlPdGhlckJsdWVzW2ogKyAxXSApOworCisgICAgICAgICAgZGlmZiA9IGNmMl9maXhlZEFicyggZmxhdEVkZ2UgLSBmbGF0RmFtaWx5RWRnZSApOworCisgICAgICAgICAgaWYgKCBkaWZmIDwgbWluRGlmZiAmJiBkaWZmIDwgY3NVbml0c1BlclBpeGVsICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBibHVlcy0+em9uZVtpXS5jc0ZsYXRFZGdlID0gZmxhdEZhbWlseUVkZ2U7CisgICAgICAgICAgICBtaW5EaWZmICAgICAgICAgICAgICAgICAgID0gZGlmZjsKKworICAgICAgICAgICAgaWYgKCBkaWZmID09IDAgKQorICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBjaGVjayB0aGUgZmlyc3QgbWVtYmVyIG9mIEZhbWlseUJsdWVzLCB3aGljaCBpcyBhIGJvdHRvbSB6b25lICovCisgICAgICAgIGlmICggbnVtRmFtaWx5Qmx1ZXMgPj0gMiApCisgICAgICAgIHsKKyAgICAgICAgICAvKiB0b3AgZWRnZSAqLworICAgICAgICAgIGZsYXRGYW1pbHlFZGdlID0gY2YyX2JsdWVUb0ZpeGVkKCBmYW1pbHlCbHVlc1sxXSApOworCisgICAgICAgICAgZGlmZiA9IGNmMl9maXhlZEFicyggZmxhdEVkZ2UgLSBmbGF0RmFtaWx5RWRnZSApOworCisgICAgICAgICAgaWYgKCBkaWZmIDwgbWluRGlmZiAmJiBkaWZmIDwgY3NVbml0c1BlclBpeGVsICkKKyAgICAgICAgICAgIGJsdWVzLT56b25lW2ldLmNzRmxhdEVkZ2UgPSBmbGF0RmFtaWx5RWRnZTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBJbiBhIHRvcCB6b25lLCB0aGUgYm90dG9tIGVkZ2UgaXMgdGhlIGZsYXQgZWRnZS4gICAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogU2VhcmNoIGBGYW1pbHlCbHVlcycgZm9yIHRvcCB6b25lczsgc2tpcCBmaXJzdCB6b25lLCB3aGljaCBpcyBhICovCisgICAgICAgIC8qIGJvdHRvbSB6b25lOyBsb29rIGZvciBjbG9zZXN0IEZhbWlseSBlZGdlIHRoYXQgaXMgd2l0aGluIHRoZSAgICAqLworICAgICAgICAvKiBvbmUgcGl4ZWwgdGhyZXNob2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICBtaW5EaWZmID0gQ0YyX0ZJWEVEX01BWDsKKworICAgICAgICBmb3IgKCBqID0gMjsgaiA8IG51bUZhbWlseUJsdWVzOyBqICs9IDIgKQorICAgICAgICB7CisgICAgICAgICAgLyogYm90dG9tIGVkZ2UgKi8KKyAgICAgICAgICBmbGF0RmFtaWx5RWRnZSA9IGNmMl9ibHVlVG9GaXhlZCggZmFtaWx5Qmx1ZXNbal0gKTsKKworICAgICAgICAgIC8qIGFkanVzdCBlZGdlcyBvZiB0b3Agem9uZSB1cHdhcmQgYnkgdHdpY2UgZGFya2VuaW5nIGFtb3VudCAqLworICAgICAgICAgIGZsYXRGYW1pbHlFZGdlICs9IDIgKiBmb250LT5kYXJrZW5ZOyAgICAgIC8qIGJvdHRvbSBlZGdlICovCisKKyAgICAgICAgICBkaWZmID0gY2YyX2ZpeGVkQWJzKCBmbGF0RWRnZSAtIGZsYXRGYW1pbHlFZGdlICk7CisKKyAgICAgICAgICBpZiAoIGRpZmYgPCBtaW5EaWZmICYmIGRpZmYgPCBjc1VuaXRzUGVyUGl4ZWwgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGJsdWVzLT56b25lW2ldLmNzRmxhdEVkZ2UgPSBmbGF0RmFtaWx5RWRnZTsKKyAgICAgICAgICAgIG1pbkRpZmYgICAgICAgICAgICAgICAgICAgPSBkaWZmOworCisgICAgICAgICAgICBpZiAoIGRpZmYgPT0gMCApCisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8qIFRPRE86IGVuZm9yY2Ugc2VwYXJhdGlvbiBvZiB6b25lcywgaW5jbHVkaW5nIEJsdWVGdXp6ICovCisKKyAgICAvKiBBZGp1c3QgQmx1ZVNjYWxlOyBzaW1pbGFyIHRvIEFkanVzdEJsdWVTY2FsZSgpIGluIGNvcmV0eXBlICovCisgICAgLyogYGJjc2V0dXAuYycuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgaWYgKCBtYXhab25lSGVpZ2h0ID4gMCApCisgICAgeworICAgICAgaWYgKCBibHVlcy0+Ymx1ZVNjYWxlID4gRlRfRGl2Rml4KCBjZjJfaW50VG9GaXhlZCggMSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhab25lSGVpZ2h0ICkgKQorICAgICAgeworICAgICAgICAvKiBjbGFtcCBhdCBtYXhpbXVtIHNjYWxlICovCisgICAgICAgIGJsdWVzLT5ibHVlU2NhbGUgPSBGVF9EaXZGaXgoIGNmMl9pbnRUb0ZpeGVkKCAxICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFpvbmVIZWlnaHQgKTsKKyAgICAgIH0KKworICAgICAgLyoKKyAgICAgICAqIFRPRE86IFJldmlzaXQgdGhlIGJ1ZyBmaXggZm9yIDYxMzQ0OC4gIFRoZSBtaW5pbXVtIHNjYWxlCisgICAgICAgKiAgICAgICByZXF1aXJlbWVudCBjYXRjaGVzIGEgbnVtYmVyIG9mIGxpYnJhcnkgZm9udHMuICBGb3IKKyAgICAgICAqICAgICAgIGV4YW1wbGUsIHdpdGggZGVmYXVsdCBCbHVlU2NhbGUgKC4wMzk2MjUpIGFuZCAwLjQgbWluaW11bSwKKyAgICAgICAqICAgICAgIHRoZSB0ZXN0IGJlbG93IGNhdGNoZXMgYW55IGZvbnQgd2l0aCBtYXhab25lSGVpZ2h0IDwgMTAuMS4KKyAgICAgICAqICAgICAgIFRoZXJlIGFyZSBsaWJyYXJ5IGZvbnRzIHJhbmdpbmcgZnJvbSAyIHRvIDEwIHRoYXQgZ2V0CisgICAgICAgKiAgICAgICBjYXVnaHQsIGluY2x1ZGluZyBlLmcuLCBFdXJvc3RpbGUgTFQgU3RkIE1lZGl1bSB3aXRoCisgICAgICAgKiAgICAgICBtYXhab25lSGVpZ2h0IG9mIDYuCisgICAgICAgKgorICAgICAgICovCisjaWYgMAorICAgICAgaWYgKCBibHVlU2NhbGUgPCAuNCAvIG1heFpvbmVIZWlnaHQgKQorICAgICAgeworICAgICAgICB0ZXRyYXBoaWxpYV9hc3NlcnQoIDAgKTsKKyAgICAgICAgLyogY2xhbXAgYXQgbWluaW11bSBzY2FsZSwgcGVyIGJ1ZyAwNjEzNDQ4IGZpeCAqLworICAgICAgICBibHVlU2NhbGUgPSAuNCAvIG1heFpvbmVIZWlnaHQ7CisgICAgICB9CisjZW5kaWYKKworICAgIH0KKworICAgIC8qCisgICAgICogU3VwcHJlc3Mgb3ZlcnNob290IGFuZCBib29zdCBibHVlIHpvbmVzIGF0IHNtYWxsIHNpemVzLiAgQm9vc3QKKyAgICAgKiBhbW91bnQgdmFyaWVzIGxpbmVhcmx5IGZyb20gMC41IHBpeGVsIG5lYXIgMCB0byAwIHBpeGVsIGF0CisgICAgICogYmx1ZVNjYWxlIGN1dG9mZi4KKyAgICAgKiBOb3RlOiBUaGlzIGJvb3N0IGFtb3VudCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY29yZXR5cGUgaGV1cmlzdGljLgorICAgICAqCisgICAgICovCisKKyAgICBpZiAoIGJsdWVzLT5zY2FsZSA8IGJsdWVzLT5ibHVlU2NhbGUgKQorICAgIHsKKyAgICAgIGJsdWVzLT5zdXBwcmVzc092ZXJzaG9vdCA9IFRSVUU7CisKKyAgICAgIC8qIENoYW5nZSByb3VuZGluZyB0aHJlc2hvbGQgZm9yIGBkc0ZsYXRFZGdlJy4gICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBOb3RlOiBjb25zdGFudCBjaGFuZ2VkIGZyb20gMC41IHRvIDAuNiB0byBhdm9pZCBhIHByb2JsZW0gd2l0aCAqLworICAgICAgLyogICAgICAgMTBwcGVtIEFyaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgYmx1ZXMtPmJvb3N0ID0gRlRfTXVsRml4KAorICAgICAgICAgICAgICAgICAgICAgICBjZjJfZmxvYXRUb0ZpeGVkKCAuNiApLAorICAgICAgICAgICAgICAgICAgICAgICAoIGNmMl9pbnRUb0ZpeGVkKCAxICkgLQorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0RpdkZpeCggYmx1ZXMtPnNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1ZXMtPmJsdWVTY2FsZSApICkgKTsKKyAgICAgIGlmICggYmx1ZXMtPmJvb3N0ID4gMHg3RkZGICkKKyAgICAgIHsKKyAgICAgICAgLyogYm9vc3QgbXVzdCByZW1haW4gbGVzcyB0aGFuIDAuNSwgb3IgYmFzZWxpbmUgY291bGQgZ28gbmVnYXRpdmUgKi8KKyAgICAgICAgYmx1ZXMtPmJvb3N0ID0gMHg3RkZGOworICAgICAgfQorICAgIH0KKworICAgIC8qIGJvb3N0IGFuZCBkYXJrZW5pbmcgaGF2ZSBzaW1pbGFyIGVmZmVjdHM7IGRvbid0IGRvIGJvdGggKi8KKyAgICBpZiAoIGZvbnQtPnN0ZW1EYXJrZW5lZCApCisgICAgICBibHVlcy0+Ym9vc3QgPSAwOworCisgICAgLyogc2V0IGRldmljZSBzcGFjZSBhbGlnbm1lbnQgZm9yIGVhY2ggem9uZTsgICAgKi8KKyAgICAvKiBhcHBseSBib29zdCBhbW91bnQgYmVmb3JlIHJvdW5kaW5nIGZsYXQgZWRnZSAqLworCisgICAgZm9yICggaSA9IDA7IGkgPCBibHVlcy0+Y291bnQ7IGkrKyApCisgICAgeworICAgICAgaWYgKCBibHVlcy0+em9uZVtpXS5ib3R0b21ab25lICkKKyAgICAgICAgYmx1ZXMtPnpvbmVbaV0uZHNGbGF0RWRnZSA9IGNmMl9maXhlZFJvdW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxGaXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1ZXMtPnpvbmVbaV0uY3NGbGF0RWRnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVlcy0+c2NhbGUgKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdWVzLT5ib29zdCApOworICAgICAgZWxzZQorICAgICAgICBibHVlcy0+em9uZVtpXS5kc0ZsYXRFZGdlID0gY2YyX2ZpeGVkUm91bmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX011bEZpeCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVlcy0+em9uZVtpXS5jc0ZsYXRFZGdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdWVzLT5zY2FsZSApICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1ZXMtPmJvb3N0ICk7CisgICAgfQorICB9CisKKworICAvKgorICAgKiBDaGVjayB3aGV0aGVyIGBzdGVtSGludCcgaXMgY2FwdHVyZWQgYnkgb25lIG9mIHRoZSBibHVlIHpvbmVzLgorICAgKgorICAgKiBaZXJvLCBvbmUgb3IgYm90aCBlZGdlcyBtYXkgYmUgdmFsaWQ7IG9ubHkgdmFsaWQgZWRnZXMgY2FuIGJlCisgICAqIGNhcHR1cmVkLiAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBDb29sVHlwZSwgc2VhcmNoIHRvcCBhbmQgYm90dG9tCisgICAqIHpvbmVzIGluIHRoZSBzYW1lIHBhc3MgKHNlZSBgQmx1ZUxvY2snKS4gIElmIGEgaGludCBpcyBjYXB0dXJlZCwKKyAgICogcmV0dXJuIHRydWUgYW5kIHBvc2l0aW9uIHRoZSBlZGdlKHMpIGluIG9uZSBvZiAzIHdheXM6CisgICAqCisgICAqICAxKSBJZiBgQmx1ZVNjYWxlJyBzdXBwcmVzc2VzIG92ZXJzaG9vdCwgcG9zaXRpb24gdGhlIGNhcHR1cmVkIGVkZ2UKKyAgICogICAgIGF0IHRoZSBmbGF0IGVkZ2Ugb2YgdGhlIHpvbmUuCisgICAqICAyKSBJZiBvdmVyc2hvb3QgaXMgbm90IHN1cHByZXNzZWQgYW5kIGBCbHVlU2hpZnQnIHJlcXVpcmVzCisgICAqICAgICBvdmVyc2hvb3QsIHBvc2l0aW9uIHRoZSBjYXB0dXJlZCBlZGdlIGEgbWluaW11bSBvZiAxIGRldmljZSBwaXhlbAorICAgKiAgICAgZnJvbSB0aGUgZmxhdCBlZGdlLgorICAgKiAgMykgSWYgb3ZlcnNob290IGlzIG5vdCBzdXBwcmVzc2VkIG9yIHJlcXVpcmVkLCBwb3NpdGlvbiB0aGUgY2FwdHVyZWQKKyAgICogICAgIGVkZ2UgYXQgdGhlIG5lYXJlc3QgZGV2aWNlIHBpeGVsLgorICAgKgorICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9Cb29sICkKKyAgY2YyX2JsdWVzX2NhcHR1cmUoIGNvbnN0IENGMl9CbHVlcyAgYmx1ZXMsCisgICAgICAgICAgICAgICAgICAgICBDRjJfSGludCAgICAgICAgIGJvdHRvbUhpbnRFZGdlLAorICAgICAgICAgICAgICAgICAgICAgQ0YyX0hpbnQgICAgICAgICB0b3BIaW50RWRnZSApCisgIHsKKyAgICAvKiBUT0RPOiB2YWxpZGF0ZT8gKi8KKyAgICBDRjJfRml4ZWQgIGNzRnV6eiA9IGJsdWVzLT5ibHVlRnV6ejsKKworICAgIC8qIG5ldyBwb3NpdGlvbiBvZiBjYXB0dXJlZCBlZGdlICovCisgICAgQ0YyX0ZpeGVkICBkc05ldzsKKworICAgIC8qIGFtb3VudCB0aGF0IGhpbnQgaXMgbW92ZWQgd2hlbiBwb3NpdGlvbmVkICovCisgICAgQ0YyX0ZpeGVkICBkc01vdmUgPSAwOworCisgICAgRlRfQm9vbCAgIGNhcHR1cmVkID0gRkFMU0U7CisgICAgQ0YyX1VJbnQgIGk7CisKKworICAgIC8qIGFzc2VydCBlZGdlIGZsYWdzIGFyZSBjb25zaXN0ZW50ICovCisgICAgRlRfQVNTRVJUKCAhY2YyX2hpbnRfaXNUb3AoIGJvdHRvbUhpbnRFZGdlICkgJiYKKyAgICAgICAgICAgICAgICFjZjJfaGludF9pc0JvdHRvbSggdG9wSGludEVkZ2UgKSApOworCisgICAgLyogVE9ETzogc2VhcmNoIG9uY2Ugd2l0aG91dCBibHVlIGZ1enogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBjb3JldHlwZT8gKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IGJsdWVzLT5jb3VudDsgaSsrICkKKyAgICB7CisgICAgICBpZiAoIGJsdWVzLT56b25lW2ldLmJvdHRvbVpvbmUgICAgICAgICAgICYmCisgICAgICAgICAgIGNmMl9oaW50X2lzQm90dG9tKCBib3R0b21IaW50RWRnZSApICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCAoIGJsdWVzLT56b25lW2ldLmNzQm90dG9tRWRnZSAtIGNzRnV6eiApIDw9CisgICAgICAgICAgICAgICBib3R0b21IaW50RWRnZS0+Y3NDb29yZCAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgIGJvdHRvbUhpbnRFZGdlLT5jc0Nvb3JkIDw9CisgICAgICAgICAgICAgICAoIGJsdWVzLT56b25lW2ldLmNzVG9wRWRnZSArIGNzRnV6eiApICAgICApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBib3R0b20gZWRnZSBjYXB0dXJlZCBieSBib3R0b20gem9uZSAqLworCisgICAgICAgICAgaWYgKCBibHVlcy0+c3VwcHJlc3NPdmVyc2hvb3QgKQorICAgICAgICAgICAgZHNOZXcgPSBibHVlcy0+em9uZVtpXS5kc0ZsYXRFZGdlOworCisgICAgICAgICAgZWxzZSBpZiAoICggYmx1ZXMtPnpvbmVbaV0uY3NUb3BFZGdlIC0gYm90dG9tSGludEVkZ2UtPmNzQ29vcmQgKSA+PQorICAgICAgICAgICAgICAgICAgICAgIGJsdWVzLT5ibHVlU2hpZnQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIGd1YXJhbnRlZSBtaW5pbXVtIG9mIDEgcGl4ZWwgb3ZlcnNob290ICovCisgICAgICAgICAgICBkc05ldyA9IEZUX01JTigKKyAgICAgICAgICAgICAgICAgICAgICBjZjJfZml4ZWRSb3VuZCggYm90dG9tSGludEVkZ2UtPmRzQ29vcmQgKSwKKyAgICAgICAgICAgICAgICAgICAgICBibHVlcy0+em9uZVtpXS5kc0ZsYXRFZGdlIC0gY2YyX2ludFRvRml4ZWQoIDEgKSApOworICAgICAgICAgIH0KKworICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBzaW1wbHkgcm91bmQgY2FwdHVyZWQgZWRnZSAqLworICAgICAgICAgICAgZHNOZXcgPSBjZjJfZml4ZWRSb3VuZCggYm90dG9tSGludEVkZ2UtPmRzQ29vcmQgKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBkc01vdmUgICA9IGRzTmV3IC0gYm90dG9tSGludEVkZ2UtPmRzQ29vcmQ7CisgICAgICAgICAgY2FwdHVyZWQgPSBUUlVFOworCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCAhYmx1ZXMtPnpvbmVbaV0uYm90dG9tWm9uZSAmJiBjZjJfaGludF9pc1RvcCggdG9wSGludEVkZ2UgKSApCisgICAgICB7CisgICAgICAgIGlmICggKCBibHVlcy0+em9uZVtpXS5jc0JvdHRvbUVkZ2UgLSBjc0Z1enogKSA8PQorICAgICAgICAgICAgICAgdG9wSGludEVkZ2UtPmNzQ29vcmQgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICB0b3BIaW50RWRnZS0+Y3NDb29yZCA8PQorICAgICAgICAgICAgICAgKCBibHVlcy0+em9uZVtpXS5jc1RvcEVkZ2UgKyBjc0Z1enogKSAgICAgKQorICAgICAgICB7CisgICAgICAgICAgLyogdG9wIGVkZ2UgY2FwdHVyZWQgYnkgdG9wIHpvbmUgKi8KKworICAgICAgICAgIGlmICggYmx1ZXMtPnN1cHByZXNzT3ZlcnNob290ICkKKyAgICAgICAgICAgIGRzTmV3ID0gYmx1ZXMtPnpvbmVbaV0uZHNGbGF0RWRnZTsKKworICAgICAgICAgIGVsc2UgaWYgKCAoIHRvcEhpbnRFZGdlLT5jc0Nvb3JkIC0gYmx1ZXMtPnpvbmVbaV0uY3NCb3R0b21FZGdlICkgPj0KKyAgICAgICAgICAgICAgICAgICAgICBibHVlcy0+Ymx1ZVNoaWZ0ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBndWFyYW50ZWUgbWluaW11bSBvZiAxIHBpeGVsIG92ZXJzaG9vdCAqLworICAgICAgICAgICAgZHNOZXcgPSBGVF9NQVgoCisgICAgICAgICAgICAgICAgICAgICAgY2YyX2ZpeGVkUm91bmQoIHRvcEhpbnRFZGdlLT5kc0Nvb3JkICksCisgICAgICAgICAgICAgICAgICAgICAgYmx1ZXMtPnpvbmVbaV0uZHNGbGF0RWRnZSArIGNmMl9pbnRUb0ZpeGVkKCAxICkgKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgLyogc2ltcGx5IHJvdW5kIGNhcHR1cmVkIGVkZ2UgKi8KKyAgICAgICAgICAgIGRzTmV3ID0gY2YyX2ZpeGVkUm91bmQoIHRvcEhpbnRFZGdlLT5kc0Nvb3JkICk7CisgICAgICAgICAgfQorCisgICAgICAgICAgZHNNb3ZlICAgPSBkc05ldyAtIHRvcEhpbnRFZGdlLT5kc0Nvb3JkOworICAgICAgICAgIGNhcHR1cmVkID0gVFJVRTsKKworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCBjYXB0dXJlZCApCisgICAgeworICAgICAgLyogbW92ZSBib3RoIGVkZ2VzIGFuZCBmbGFnIHRoZW0gYGxvY2tlZCcgKi8KKyAgICAgIGlmICggY2YyX2hpbnRfaXNWYWxpZCggYm90dG9tSGludEVkZ2UgKSApCisgICAgICB7CisgICAgICAgIGJvdHRvbUhpbnRFZGdlLT5kc0Nvb3JkICs9IGRzTW92ZTsKKyAgICAgICAgY2YyX2hpbnRfbG9jayggYm90dG9tSGludEVkZ2UgKTsKKyAgICAgIH0KKworICAgICAgaWYgKCBjZjJfaGludF9pc1ZhbGlkKCB0b3BIaW50RWRnZSApICkKKyAgICAgIHsKKyAgICAgICAgdG9wSGludEVkZ2UtPmRzQ29vcmQgKz0gZHNNb3ZlOworICAgICAgICBjZjJfaGludF9sb2NrKCB0b3BIaW50RWRnZSApOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBjYXB0dXJlZDsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyYmx1ZXMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmJsdWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYzOGZjYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmJsdWVzLmgKQEAgLTAsMCArMSwxODUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmMmJsdWVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBZG9iZSdzIGNvZGUgZm9yIGhhbmRsaW5nIEJsdWUgWm9uZXMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOS0yMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgc29mdHdhcmUsIGFuZCBhbGwgd29ya3Mgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBzb3VyY2Ugb3IgICAgICAgKi8KKy8qICBvYmplY3QgY29kZSBmb3JtIGFzIGluZGljYXRlZCBieSB0aGUgY29weXJpZ2h0IG5vdGljZShzKSBpbmNsdWRlZCAgICAgICovCisvKiAgaGVyZWluIChjb2xsZWN0aXZlbHksIHRoZSAiV29yayIpIGlzIG1hZGUgYXZhaWxhYmxlLCBhbmQgbWF5IG9ubHkgYmUgICAqLworLyogIHVzZWQsIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgICAgKi8KKy8qICBMSUNFTlNFLlRYVC4gIEFkZGl0aW9uYWxseSwgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCBlYWNoIGNvbnRyaWJ1dG9yIHRvIHRoZSBXb3JrIGhlcmVieSBncmFudHMgICAqLworLyogIHRvIGFueSBpbmRpdmlkdWFsIG9yIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgICAgKi8KKy8qICB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFuZCB0aGlzIHNlY3Rpb24gKGhlcmVhZnRlciwgIllvdSIgb3IgICAgICovCisvKiAgIllvdXIiKSBhIHBlcnBldHVhbCwgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsICAgICAgICAgICAgICAqLworLyogIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgICAgKi8KKy8qICBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCAgICAgICovCisvKiAgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLCB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlICAqLworLyogIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZSBieSBzdWNoIGNvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5ICAgICAgKi8KKy8qICBpbmZyaW5nZWQgYnkgdGhlaXIgY29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyICAgICovCisvKiAgY29udHJpYnV0aW9uKHMpIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBjb250cmlidXRpb24ocykgd2FzICAgICAgICAqLworLyogIHN1Ym1pdHRlZC4gIElmIFlvdSBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5ICAgICAgKi8KKy8qICAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCAgICovCisvKiAgdGhlIFdvcmsgb3IgYSBjb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyAgICAqLworLyogIGRpcmVjdCBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzICAgKi8KKy8qICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgICovCisvKiAgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBCeSB1c2luZywgbW9kaWZ5aW5nLCBvciBkaXN0cmlidXRpbmcgdGhlIFdvcmsgeW91IGluZGljYXRlIHRoYXQgeW91ICAgICovCisvKiAgaGF2ZSByZWFkIGFuZCB1bmRlcnN0b29kIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgICAgICAgICAgICAgICAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhcyB3ZWxsIGFzIHRob3NlIHByb3ZpZGVkIGluIHRoaXMgc2VjdGlvbiwgICAgKi8KKy8qICBhbmQgeW91IGFjY2VwdCB0aGVtIGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qCisgICAqIEEgYENGMl9CbHVlcycgb2JqZWN0IHN0b3JlcyB0aGUgYmx1ZSB6b25lcyAoaG9yaXpvbnRhbCBhbGlnbm1lbnQKKyAgICogem9uZXMpIG9mIGEgZm9udC4gIFRoZXNlIGFyZSBzcGVjaWZpZWQgaW4gdGhlIENGRiBwcml2YXRlIGRpY3Rpb25hcnkKKyAgICogYnkgYEJsdWVWYWx1ZXMnLCBgT3RoZXJCbHVlcycsIGBGYW1pbHlCbHVlcycsIGFuZCBgRmFtaWx5T3RoZXJCbHVlcycuCisgICAqIEVhY2ggem9uZSBpcyBkZWZpbmVkIGJ5IGEgdG9wIGFuZCBib3R0b20gZWRnZSBpbiBjaGFyYWN0ZXIgc3BhY2UuCisgICAqIEZ1cnRoZXIsIGVhY2ggem9uZSBpcyBlaXRoZXIgYSB0b3Agem9uZSBvciBhIGJvdHRvbSB6b25lLCBhcyByZWNvcmRlZAorICAgKiBieSBgYm90dG9tWm9uZScuCisgICAqCisgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBgQmx1ZVZhbHVlcycgYW5kIGBGYW1pbHlCbHVlcycgaXMgNyBlYWNoLgorICAgKiBIb3dldmVyLCB0aGVzZSBhcmUgY29tYmluZWQgdG8gcHJvZHVjZSBhIHRvdGFsIG9mIDcgem9uZXMuCisgICAqIFNpbWlsYXJseSwgdGhlIG1heGltdW0gbnVtYmVyIG9mIGBPdGhlckJsdWVzJyBhbmQgYEZhbWlseU90aGVyQmx1ZXMnCisgICAqIGlzIDUgYW5kIHRoZXNlIGFyZSBjb21iaW5lZCB0byBwcm9kdWNlIGFuIGFkZGl0aW9uYWwgNSB6b25lcy4KKyAgICoKKyAgICogQmx1ZSB6b25lcyBhcmUgdXNlZCB0byBgY2FwdHVyZScgaGludHMgYW5kIGZvcmNlIHRoZW0gdG8gYSBjb21tb24KKyAgICogYWxpZ25tZW50IHBvaW50LiAgVGhpcyBhbGlnbm1lbnQgaXMgcmVjb3JkZWQgaW4gZGV2aWNlIHNwYWNlIGluCisgICAqIGBkc0ZsYXRFZGdlJy4gIEV4Y2VwdCBmb3IgdGhpcyB2YWx1ZSwgYSBgQ0YyX0JsdWVzJyBvYmplY3QgY291bGQgYmUKKyAgICogY29uc3RydWN0ZWQgaW5kZXBlbmRlbnRseSBvZiBzY2FsaW5nLiAgQ29uc3RydWN0aW9uIG1heSBvY2N1ciBvbmNlCisgICAqIHRoZSBtYXRyaXggaXMga25vd24uICBPdGhlciBmZWF0dXJlcyBpbXBsZW1lbnRlZCBpbiB0aGUgQ2FwdHVyZQorICAgKiBtZXRob2QgYXJlIG92ZXJzaG9vdCBzdXBwcmVzc2lvbiwgb3ZlcnNob290IGVuZm9yY2VtZW50LCBhbmQgQmx1ZQorICAgKiBCb29zdC4KKyAgICoKKyAgICogQ2FwdHVyZSBpcyBkZXRlcm1pbmVkIGJ5IGBCbHVlVmFsdWVzJyBhbmQgYE90aGVyQmx1ZXMnLCBidXQgdGhlCisgICAqIGFsaWdubWVudCBwb2ludCBtYXkgYmUgYWRqdXN0ZWQgdG8gdGhlIHNjYWxlZCBmbGF0IGVkZ2Ugb2YKKyAgICogYEZhbWlseUJsdWVzJyBvciBgRmFtaWx5T3RoZXJCbHVlcycuICBObyBhbGlnbm1lbnQgaXMgZG9uZSB0byB0aGUKKyAgICogY3VydmVkIGVkZ2Ugb2YgYSB6b25lLgorICAgKgorICAgKi8KKworCisjaWZuZGVmIF9fQ0YyQkxVRVNfSF9fCisjZGVmaW5lIF9fQ0YyQkxVRVNfSF9fCisKKworI2luY2x1ZGUgImNmMmdsdWUuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qCisgICAqIGBDRjJfSGludCcgaXMgc2hhcmVkIGJ5IGBjZjJoaW50cy5oJyBhbmQKKyAgICogYGNmMmJsdWVzLmgnLCBidXQgYGNmMmJsdWVzLmgnIGRlcGVuZHMgb24KKyAgICogYGNmMmhpbnRzLmgnLCBzbyBkZWZpbmUgaXQgaGVyZS4gIE5vdGU6IFRoZSB0eXBlZGVmIGlzIGluCisgICAqIGBjZjJnbHVlLmgnLgorICAgKgorICAgKi8KKyAgZW51bQorICB7CisgICAgQ0YyX0dob3N0Qm90dG9tID0gMHgxLCAgLyogYSBzaW5nbGUgYm90dG9tIGVkZ2UgICAgICAgICAgICovCisgICAgQ0YyX0dob3N0VG9wICAgID0gMHgyLCAgLyogYSBzaW5nbGUgdG9wIGVkZ2UgICAgICAgICAgICAgICovCisgICAgQ0YyX1BhaXJCb3R0b20gID0gMHg0LCAgLyogdGhlIGJvdHRvbSBlZGdlIG9mIGEgc3RlbSBoaW50ICovCisgICAgQ0YyX1BhaXJUb3AgICAgID0gMHg4LCAgLyogdGhlIHRvcCBlZGdlIG9mIGEgc3RlbSBoaW50ICAgICovCisgICAgQ0YyX0xvY2tlZCAgICAgID0gMHgxMCwgLyogdGhpcyBlZGdlIGhhcyBiZWVuIGFsaWduZWQgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnkgYSBibHVlIHpvbmUgICAgICAgICAgICAgICAgICovCisgICAgQ0YyX1N5bnRoZXRpYyAgID0gMHgyMCAgLyogdGhpcyBlZGdlIHdhcyBzeW50aGVzaXplZCAgICAgICovCisgIH07CisKKworICAvKgorICAgKiBEZWZhdWx0IHZhbHVlIGZvciBPUy8yIHR5cG9Bc2NlbmRlci9EZXNjZW5kZXIgd2hlbiB0aGVpciBkaWZmZXJlbmNlCisgICAqIGlzIG5vdCBlcXVhbCB0byBgdW5pdHNQZXJFbScuICBUaGUgZGVmYXVsdCBpcyBiYXNlZCBvbiAtMjUwIGFuZCAxMTAwCisgICAqIGluIGBDRjJfQmx1ZXMnLCBhc3N1bWluZyAxMDAwIHVuaXRzIHBlciBlbSBoZXJlLgorICAgKgorICAgKi8KKyAgZW51bQorICB7CisgICAgQ0YyX0lDRl9Ub3AgICAgPSBjZjJfaW50VG9GaXhlZCggIDg4MCApLAorICAgIENGMl9JQ0ZfQm90dG9tID0gY2YyX2ludFRvRml4ZWQoIC0xMjAgKQorICB9OworCisKKyAgLyoKKyAgICogQ29uc3RhbnQgdXNlZCBmb3IgaGludCBhZGp1c3RtZW50IGFuZCBmb3Igc3ludGhldGljIGVtIGJveCBoaW50CisgICAqIHBsYWNlbWVudC4KKyAgICovCisjZGVmaW5lIENGMl9NSU5fQ09VTlRFUiAgY2YyX2Zsb2F0VG9GaXhlZCggMC41ICkKKworCisgIC8qIHNoYXJlZCB0eXBlZGVmIGlzIGluIGNmMmdsdWUuaCAqLworICBzdHJ1Y3QgIENGMl9IaW50UmVjXworICB7CisgICAgQ0YyX1VJbnQgIGZsYWdzOyAgLyogYXR0cmlidXRlcyBvZiB0aGUgZWRnZSAgICAgICAgICAgICovCisgICAgc2l6ZV90ICAgIGluZGV4OyAgLyogaW5kZXggaW4gb3JpZ2luYWwgc3RlbSBoaW50IGFycmF5ICovCisgICAgICAgICAgICAgICAgICAgICAgLyogKGlmIG5vdCBzeW50aGV0aWMpICAgICAgICAgICAgICAgICovCisgICAgQ0YyX0ZpeGVkICBjc0Nvb3JkOworICAgIENGMl9GaXhlZCAgZHNDb29yZDsKKyAgICBDRjJfRml4ZWQgIHNjYWxlOworICB9OworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIENGMl9CbHVlUmVjXworICB7CisgICAgQ0YyX0ZpeGVkICBjc0JvdHRvbUVkZ2U7CisgICAgQ0YyX0ZpeGVkICBjc1RvcEVkZ2U7CisgICAgQ0YyX0ZpeGVkICBjc0ZsYXRFZGdlOyAvKiBtYXkgYmUgZnJvbSBlaXRoZXIgbG9jYWwgb3IgRmFtaWx5IHpvbmVzICovCisgICAgQ0YyX0ZpeGVkICBkc0ZsYXRFZGdlOyAvKiB0b3AgZWRnZSBvZiBib3R0b20gem9uZSBvciBib3R0b20gZWRnZSAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvZiB0b3Agem9uZSAocm91bmRlZCkgICAgICAgICAgICAgICAgICAgICovCisgICAgRlRfQm9vbCAgYm90dG9tWm9uZTsKKworICB9IENGMl9CbHVlUmVjOworCisKKyAgLyogbWF4IHRvdGFsIGJsdWUgem9uZXMgaXMgMTIgKi8KKyAgZW51bQorICB7CisgICAgQ0YyX01BWF9CTFVFUyAgICAgID0gNywKKyAgICBDRjJfTUFYX09USEVSQkxVRVMgPSA1CisgIH07CisKKworICB0eXBlZGVmIHN0cnVjdCAgQ0YyX0JsdWVzUmVjXworICB7CisgICAgQ0YyX0ZpeGVkICBzY2FsZTsKKyAgICBDRjJfVUludCAgIGNvdW50OworICAgIEZUX0Jvb2wgICAgc3VwcHJlc3NPdmVyc2hvb3Q7CisgICAgRlRfQm9vbCAgICBkb0VtQm94SGludHM7CisKKyAgICBDRjJfRml4ZWQgIGJsdWVTY2FsZTsKKyAgICBDRjJfRml4ZWQgIGJsdWVTaGlmdDsKKyAgICBDRjJfRml4ZWQgIGJsdWVGdXp6OworCisgICAgQ0YyX0ZpeGVkICBib29zdDsKKworICAgIENGMl9IaW50UmVjICBlbUJveFRvcEVkZ2U7CisgICAgQ0YyX0hpbnRSZWMgIGVtQm94Qm90dG9tRWRnZTsKKworICAgIENGMl9CbHVlUmVjICB6b25lW0NGMl9NQVhfQkxVRVMgKyBDRjJfTUFYX09USEVSQkxVRVNdOworCisgIH0gQ0YyX0JsdWVzUmVjLCAqQ0YyX0JsdWVzOworCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfYmx1ZXNfaW5pdCggQ0YyX0JsdWVzICBibHVlcywKKyAgICAgICAgICAgICAgICAgIENGMl9Gb250ICAgZm9udCApOworICBGVF9MT0NBTCggRlRfQm9vbCApCisgIGNmMl9ibHVlc19jYXB0dXJlKCBjb25zdCBDRjJfQmx1ZXMgIGJsdWVzLAorICAgICAgICAgICAgICAgICAgICAgQ0YyX0hpbnQgICAgICAgICBib3R0b21IaW50RWRnZSwKKyAgICAgICAgICAgICAgICAgICAgIENGMl9IaW50ICAgICAgICAgdG9wSGludEVkZ2UgKTsKKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fQ0YyQkxVRVNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJlcnJvci5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyZXJyb3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTU5NWEzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyZXJyb3IuYwpAQCAtMCwwICsxLDUyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZjJlcnJvci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQWRvYmUncyBjb2RlIGZvciBlcnJvciBoYW5kbGluZyAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDYtMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yICAgICAgICovCisvKiAgb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQgICAgICAqLworLyogIGhlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlICAgKi8KKy8qICB1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsICAgICovCisvKiAgTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzICAgKi8KKy8qICB0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5ICAgICovCisvKiAgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yICAgICAqLworLyogICJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCAgICAgICAgICAgICAgKi8KKy8qICByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50ICAgICovCisvKiAgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgICAgICAqLworLyogIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSAgKi8KKy8qICBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSAgICAgICovCisvKiAgaW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciAgICAqLworLyogIGNvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcyAgICAgICAgKi8KKy8qICBzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAgICAgICovCisvKiAgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgICAqLworLyogIHRoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgICAgKi8KKy8qICBkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyAgICovCisvKiAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mICAqLworLyogIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSAgICAqLworLyogIGhhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICAgICAgICAgICAgICAgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sICAgICovCisvKiAgYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgImNmMmZ0LmgiCisjaW5jbHVkZSAiY2YyZXJyb3IuaCIKKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmMl9zZXRFcnJvciggRlRfRXJyb3IqICBlcnJvciwKKyAgICAgICAgICAgICAgICBGVF9FcnJvciAgIHZhbHVlICkKKyAgeworICAgIGlmICggZXJyb3IgJiYgKmVycm9yID09IDAgKQorICAgICAgKmVycm9yID0gdmFsdWU7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmVycm9yLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJlcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyODc3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJlcnJvci5oCkBAIC0wLDAgKzEsMTE5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZjJlcnJvci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQWRvYmUncyBjb2RlIGZvciBlcnJvciBoYW5kbGluZyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDYtMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yICAgICAgICovCisvKiAgb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQgICAgICAqLworLyogIGhlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlICAgKi8KKy8qICB1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsICAgICovCisvKiAgTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzICAgKi8KKy8qICB0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5ICAgICovCisvKiAgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yICAgICAqLworLyogICJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCAgICAgICAgICAgICAgKi8KKy8qICByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50ICAgICovCisvKiAgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgICAgICAqLworLyogIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSAgKi8KKy8qICBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSAgICAgICovCisvKiAgaW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciAgICAqLworLyogIGNvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcyAgICAgICAgKi8KKy8qICBzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAgICAgICovCisvKiAgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgICAqLworLyogIHRoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgICAgKi8KKy8qICBkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyAgICovCisvKiAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mICAqLworLyogIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSAgICAqLworLyogIGhhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICAgICAgICAgICAgICAgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sICAgICovCisvKiAgYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NGMkVSUk9SX0hfXworI2RlZmluZSBfX0NGMkVSUk9SX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmgiCisKKyN1bmRlZiBfX0ZURVJST1JTX0hfXworCisjdW5kZWYgIEZUX0VSUl9QUkVGSVgKKyNkZWZpbmUgRlRfRVJSX1BSRUZJWCAgQ0YyX0Vycl8KKyNkZWZpbmUgRlRfRVJSX0JBU0UgICAgRlRfTW9kX0Vycl9DRjIKKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIgorI2luY2x1ZGUgImNmMmZ0LmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKgorICAgKiBBIHBvb3ItbWFuIGVycm9yIGZhY2lsaXR5LgorICAgKgorICAgKiBUaGlzIGNvZGUgYmVpbmcgd3JpdHRlbiBpbiB2YW5pbGxhIEMsIGRvZXNuJ3QgaGF2ZSB0aGUgbHV4dXJ5IG9mIGEKKyAgICogbGFuZ3VhZ2Utc3VwcG9ydGVkIGV4Y2VwdGlvbiBtZWNoYW5pc20gc3VjaCBhcyB0aGUgb25lIGF2YWlsYWJsZSBpbgorICAgKiBKYXZhLiAgSW5zdGVhZCwgd2UgYXJlIHN0dWNrIHdpdGggdXNpbmcgZXJyb3IgY29kZXMgdGhhdCBtdXN0IGJlCisgICAqIGNhcmVmdWxseSBtYW5hZ2VkIGFuZCBwcmVzZXJ2ZWQuICBIb3dldmVyLCBpdCBpcyBjb252ZW5pZW50IGZvciB1cyB0bworICAgKiBtb2RlbCBvdXIgZXJyb3IgbWVjaGFuaXNtIG9uIGEgSmF2YS1saWtlIGV4Y2VwdGlvbiBtZWNoYW5pc20uCisgICAqIFdoZW4gd2UgYXNzaWduIGFuIGVycm9yIGNvZGUgd2UgYXJlIHRodXMgYHRocm93aW5nJyBhbiBlcnJvci4KKyAgICoKKyAgICogVGhlIHBlcnNlcnZhdGlvbiBvZiBhbiBlcnJvciBjb2RlIGlzIGRvbmUgYnkgY29kaW5nIGNvbnZlbnRpb24uCisgICAqIFVwb24gYSBmdW5jdGlvbiBjYWxsIGlmIHRoZSBlcnJvciBjb2RlIGlzIGFueXRoaW5nIG90aGVyIHRoYW4KKyAgICogYEZUX0Vycl9PaycsIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybywgd2UKKyAgICogd2lsbCByZXR1cm4gd2l0aG91dCBhbHRlcmluZyB0aGF0IGVycm9yLiAgVGhpcyB3aWxsIGFsbG93IHRoZQorICAgKiBlcnJvciB0byBwcm9wb2dhdGUgYW5kIGJlIGhhbmRsZWQgYXQgdGhlIGFwcHJvcHJpYXRlIGxvY2F0aW9uIGluCisgICAqIHRoZSBjb2RlLgorICAgKgorICAgKiBUaGlzIGFsbG93cyBhIHN0eWxlIG9mIGNvZGUgd2hlcmUgdGhlIGVycm9yIGNvZGUgaXMgaW5pdGlhbGl6ZWQKKyAgICogdXAgZnJvbnQgYW5kIGEgYmxvY2sgb2YgY2FsbHMgYXJlIG1hZGUgd2l0aCB0aGUgZXJyb3IgY29kZSBvbmx5CisgICAqIGJlaW5nIGNoZWNrZWQgYWZ0ZXIgdGhlIGJsb2NrLiAgSWYgYSBuZXcgZXJyb3Igb2NjdXJzLCB0aGUgb3JpZ2luYWwKKyAgICogZXJyb3Igd2lsbCBiZSBwcmVzZXJ2ZWQgYW5kIGEgZnVuY3Rpb25hbCBuby1vcCBzaG91bGQgcmVzdWx0IGluIGFueQorICAgKiBzdWJzZXF1ZW50IGZ1bmN0aW9uIHRoYXQgaGFzIGFuIGluaXRpYWwgZXJyb3IgY29kZSBub3QgZXF1YWwgdG8KKyAgICogYEZUX0Vycl9PaycuCisgICAqCisgICAqIEVycm9ycyBhcmUgZW5jb2RlZCBieSBjYWxsaW5nIHRoZSBgRlRfVEhST1cnIG1hY3JvLiAgRm9yIGV4YW1wbGUsCisgICAqCisgICAqIHsKKyAgICogICBGVF9FcnJvciAgZTsKKyAgICoKKyAgICoKKyAgICogICAuLi4KKyAgICogICBlID0gRlRfVEhST1coIE91dF9PZl9NZW1vcnkgKTsKKyAgICogfQorICAgKgorICAgKi8KKworCisgIC8qIFNldCBlcnJvciBjb2RlIHRvIGEgcGFydGljdWxhciB2YWx1ZS4gKi8KKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfc2V0RXJyb3IoIEZUX0Vycm9yKiAgZXJyb3IsCisgICAgICAgICAgICAgICAgRlRfRXJyb3IgICB2YWx1ZSApOworCisKKyAgLyoKKyAgICogQSBtYWNybyB0aGF0IGNvbmRpdGlvbmFsbHkgc2V0cyBhbiBlcnJvciBjb2RlLgorICAgKgorICAgKiBUaGlzIG1hY3JvIHdpbGwgZmlyc3QgY2hlY2sgd2hldGhlciBgZXJyb3InIGlzIHNldDsKKyAgICogaWYgbm90LCBpdCB3aWxsIHNldCBpdCB0byBgZScuCisgICAqCisgICovCisjZGVmaW5lIENGMl9TRVRfRVJST1IoIGVycm9yLCBlICkgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjZjJfc2V0RXJyb3IoIGVycm9yLCBGVF9USFJPVyggZSApICkKKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fQ0YyRVJST1JfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJmaXhlZC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyZml4ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDE0NTJhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyZml4ZWQuaApAQCAtMCwwICsxLDk1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZjJmaXhlZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQWRvYmUncyBjb2RlIGZvciBGaXhlZCBQb2ludCBNYXRoZW1hdGljcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDctMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yICAgICAgICovCisvKiAgb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQgICAgICAqLworLyogIGhlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlICAgKi8KKy8qICB1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsICAgICovCisvKiAgTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzICAgKi8KKy8qICB0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5ICAgICovCisvKiAgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yICAgICAqLworLyogICJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCAgICAgICAgICAgICAgKi8KKy8qICByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50ICAgICovCisvKiAgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgICAgICAqLworLyogIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSAgKi8KKy8qICBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSAgICAgICovCisvKiAgaW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciAgICAqLworLyogIGNvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcyAgICAgICAgKi8KKy8qICBzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAgICAgICovCisvKiAgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgICAqLworLyogIHRoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgICAgKi8KKy8qICBkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyAgICovCisvKiAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mICAqLworLyogIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSAgICAqLworLyogIGhhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICAgICAgICAgICAgICAgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sICAgICovCisvKiAgYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NGMkZJWEVEX0hfXworI2RlZmluZSBfX0NGMkZJWEVEX0hfXworCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyogcmFzdGVyaXplciBpbnRlZ2VyIGFuZCBmaXhlZCBwb2ludCBhcml0aG1ldGljIG11c3QgYmUgMzItYml0ICovCisKKyNkZWZpbmUgICBDRjJfRml4ZWQgIENGMl9GMTZEb3QxNgorICB0eXBlZGVmIEZUX0ludDMyICAgQ0YyX0ZyYWM7ICAgLyogMi4zMCBmaXhlZCBwb2ludCAqLworCisKKyNkZWZpbmUgQ0YyX0ZJWEVEX01BWCAgICAgICggKENGMl9GaXhlZCkweDdGRkZGRkZGTCApCisjZGVmaW5lIENGMl9GSVhFRF9NSU4gICAgICAoIChDRjJfRml4ZWQpMHg4MDAwMDAwMEwgKQorI2RlZmluZSBDRjJfRklYRURfT05FICAgICAgMHgxMDAwMEwKKyNkZWZpbmUgQ0YyX0ZJWEVEX0VQU0lMT04gIDB4MDAwMQorCisgIC8qIGluIEMgODksIGxlZnQgYW5kIHJpZ2h0IHNoaWZ0IG9mIG5lZ2F0aXZlIG51bWJlcnMgaXMgICovCisgIC8qIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGJlaGF2aW91ciBpbiB0aGUgZ2VuZXJhbCBjYXNlICovCisKKyNkZWZpbmUgY2YyX2ludFRvRml4ZWQoIGkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIChDRjJfRml4ZWQpKCAoRlRfVUludDMyKShpKSA8PCAxNiApICkKKyNkZWZpbmUgY2YyX2ZpeGVkVG9JbnQoIHggKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIChGVF9TaG9ydCkoICggKEZUX1VJbnQzMikoeCkgKyAweDgwMDBVICkgPj4gMTYgKSApCisjZGVmaW5lIGNmMl9maXhlZFJvdW5kKCB4ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAoQ0YyX0ZpeGVkKSggKCAoeCkgKyAweDgwMDAgKSAmIDB4RkZGRjAwMDBMICkgKQorI2RlZmluZSBjZjJfZmxvYXRUb0ZpeGVkKCBmICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKENGMl9GaXhlZCkoIChmKSAqIDY1NTM2LjAgKyAwLjUgKSApCisjZGVmaW5lIGNmMl9maXhlZEFicyggeCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAoeCkgPCAwID8gLSh4KSA6ICh4KSApCisjZGVmaW5lIGNmMl9maXhlZEZsb29yKCB4ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAoQ0YyX0ZpeGVkKSggKHgpICYgMHhGRkZGMDAwMEwgKSApCisjZGVmaW5lIGNmMl9maXhlZEZyYWN0aW9uKCB4ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAoeCkgLSBjZjJfZml4ZWRGbG9vciggeCApICkKKyNkZWZpbmUgY2YyX2ZyYWNUb0ZpeGVkKCB4ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoICh4KSA8IDAgPyAtKCAoIC0oeCkgKyAweDIwMDAgKSA+PiAxNCApICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgOiAgKCAoICAoeCkgKyAweDIwMDAgKSA+PiAxNCApICkKKworCisgIC8qIHNpZ25lZCBudW1lcmljIHR5cGVzICovCisgIHR5cGVkZWYgZW51bSAgQ0YyX051bWJlclR5cGVfCisgIHsKKyAgICBDRjJfTnVtYmVyRml4ZWQsICAgIC8qIDE2LjE2ICovCisgICAgQ0YyX051bWJlckZyYWMsICAgICAvKiAgMi4zMCAqLworICAgIENGMl9OdW1iZXJJbnQgICAgICAgLyogMzIuMCAgKi8KKworICB9IENGMl9OdW1iZXJUeXBlOworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogIF9fQ0YyRklYRURfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJmb250LmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJmb250LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFlZWVjMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmZvbnQuYwpAQCAtMCwwICsxLDQwNCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2YyZm9udC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFkb2JlJ3MgY29kZSBmb3IgZm9udCBpbnN0YW5jZXMgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvciAgICAgICAqLworLyogIG9iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkICAgICAgKi8KKy8qICBoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZSAgICovCisvKiAgdXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCAgICAqLworLyogIExJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cyAgICovCisvKiAgdG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSAgICAqLworLyogIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvciAgICAgKi8KKy8qICAiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgICAgICAgICAgICAgICovCisvKiAgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCAgICAqLworLyogIGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kICAgICAgKi8KKy8qICBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgICovCisvKiAgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgICAgICAqLworLyogIGluZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgICAgKi8KKy8qICBjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMgICAgICAgICovCisvKiAgc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgICAgICAqLworLyogIChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0ICAgKi8KKy8qICB0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzICAgICovCisvKiAgZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMgICAqLworLyogIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiAgKi8KKy8qICB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIEJ5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgICAgKi8KKy8qICBoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAgICAgICAgICAgICAgICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLCAgICAqLworLyogIGFuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICJjZjJmdC5oIgorCisjaW5jbHVkZSAiY2YyZ2x1ZS5oIgorI2luY2x1ZGUgImNmMmZvbnQuaCIKKyNpbmNsdWRlICJjZjJlcnJvci5oIgorI2luY2x1ZGUgImNmMmludHJwLmgiCisKKworICAvKiBDb21wdXRlIGEgc3RlbSBkYXJrZW5pbmcgYW1vdW50IGluIGNoYXJhY3RlciBzcGFjZS4gKi8KKyAgc3RhdGljIHZvaWQKKyAgY2YyX2NvbXB1dGVEYXJrZW5pbmcoIENGMl9GaXhlZCAgIGVtUmF0aW8sCisgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICBwcGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgc3RlbVdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkKiAgZGFya2VuQW1vdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgYm9sZGVuQW1vdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgc3RlbURhcmtlbmVkICkKKyAgeworICAgIC8qIEludGVybmFsIGNhbGN1bGF0aW9ucyBhcmUgZG9uZSBpbiB1bml0cyBwZXIgdGhvdXNhbmQgZm9yICovCisgICAgLyogY29udmVuaWVuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBDRjJfRml4ZWQgIHN0ZW1XaWR0aFBlcjEwMDAsIHNjYWxlZFN0ZW07CisKKworICAgICpkYXJrZW5BbW91bnQgPSAwOworCisgICAgaWYgKCBib2xkZW5BbW91bnQgPT0gMCAmJiAhc3RlbURhcmtlbmVkICkKKyAgICAgIHJldHVybjsKKworICAgIC8qIHByb3RlY3QgYWdhaW5zdCByYW5nZSBwcm9ibGVtcyBhbmQgZGl2aWRlIGJ5IHplcm8gKi8KKyAgICBpZiAoIGVtUmF0aW8gPCBjZjJfZmxvYXRUb0ZpeGVkKCAuMDEgKSApCisgICAgICByZXR1cm47CisKKyAgICBpZiAoIHN0ZW1EYXJrZW5lZCApCisgICAgeworICAgICAgLyogY29udmVydCBmcm9tIHRydWUgY2hhcmFjdGVyIHNwYWNlIHRvIDEwMDAgdW5pdCBjaGFyYWN0ZXIgc3BhY2U7ICovCisgICAgICAvKiBhZGQgc3ludGhldGljIGVtYm9sZGVuaW5nIGVmZmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgLyogd2UgaGF2ZSB0byBhc3N1cmUgdGhhdCB0aGUgY29tcHV0YXRpb24gb2YgYHNjYWxlZFN0ZW0nICovCisgICAgICAvKiBhbmQgYHN0ZW1XaWR0aFBlcjEwMDAnIGRvbid0IG92ZXJmbG93ICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgc3RlbVdpZHRoUGVyMTAwMCA9IEZUX011bEZpeCggc3RlbVdpZHRoICsgYm9sZGVuQW1vdW50LCBlbVJhdGlvICk7CisKKyAgICAgIGlmICggZW1SYXRpbyA+IENGMl9GSVhFRF9PTkUgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIHN0ZW1XaWR0aFBlcjEwMDAgPD0gKCBzdGVtV2lkdGggKyBib2xkZW5BbW91bnQgKSApCisgICAgICB7CisgICAgICAgIHN0ZW1XaWR0aFBlcjEwMDAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAvKiB0byBwYWNpZnkgY29tcGlsZXIgKi8KKyAgICAgICAgc2NhbGVkU3RlbSAgICAgICA9IGNmMl9pbnRUb0ZpeGVkKCAyMzMzICk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHNjYWxlZFN0ZW0gPSBGVF9NdWxGaXgoIHN0ZW1XaWR0aFBlcjEwMDAsIHBwZW0gKTsKKworICAgICAgICBpZiAoIHBwZW0gPiBDRjJfRklYRURfT05FICAgICAgICAgICAmJgorICAgICAgICAgICAgIHNjYWxlZFN0ZW0gPD0gc3RlbVdpZHRoUGVyMTAwMCApCisgICAgICAgICAgc2NhbGVkU3RlbSA9IGNmMl9pbnRUb0ZpeGVkKCAyMzMzICk7CisgICAgICB9CisKKyAgICAgIC8qCisgICAgICAgKiBUb3RhbCBkYXJrZW5pbmcgYW1vdW50IGlzIGNvbXB1dGVkIGluIDEwMDAgdW5pdCBjaGFyYWN0ZXIgc3BhY2UKKyAgICAgICAqIHVzaW5nIHRoZSBtb2RpZmllZCA1IHBhcnQgY3VydmUgYXMgQXZhbG9uIHJhc3Rlcml6ZXIuCisgICAgICAgKiBUaGUgZGFya2VuaW5nIGFtb3VudCBpcyBzbWFsbGVyIGZvciB0aGlja2VyIHN0ZW1zLgorICAgICAgICogSXQgYmVjb21lcyB6ZXJvIHdoZW4gdGhlIHN0ZW0gaXMgdGhpY2tlciB0aGFuIDIuMzMzIHBpeGVscy4KKyAgICAgICAqCisgICAgICAgKiBJbiBBdmFsb24gcmFzdGVyaXplciwKKyAgICAgICAqCisgICAgICAgKiAgIGRhcmtlbkFtb3VudCA9IDAuNSBwaXhlbHMgICBpZiBzY2FsZWRTdGVtIDw9IDAuNSBwaXhlbHMsCisgICAgICAgKiAgIGRhcmtlbkFtb3VudCA9IDAuMzMzIHBpeGVscyBpZiAxIDw9IHNjYWxlZFN0ZW0gPD0gMS42NjcgcGl4ZWxzLAorICAgICAgICogICBkYXJrZW5BbW91bnQgPSAwIHBpeGVsICAgICAgaWYgc2NhbGVkU3RlbSA+PSAyLjMzMyBwaXhlbHMsCisgICAgICAgKgorICAgICAgICogYW5kIHBpZWNld2lzZSBsaW5lYXIgaW4tYmV0d2Vlbi4KKyAgICAgICAqCisgICAgICAgKi8KKyAgICAgIGlmICggc2NhbGVkU3RlbSA8IGNmMl9pbnRUb0ZpeGVkKCA1MDAgKSApCisgICAgICAgICpkYXJrZW5BbW91bnQgPSBGVF9EaXZGaXgoIGNmMl9pbnRUb0ZpeGVkKCA0MDAgKSwgcHBlbSApOworCisgICAgICBlbHNlIGlmICggc2NhbGVkU3RlbSA8IGNmMl9pbnRUb0ZpeGVkKCAxMDAwICkgKQorICAgICAgICAqZGFya2VuQW1vdW50ID0gRlRfRGl2Rml4KCBjZjJfaW50VG9GaXhlZCggNTI1ICksIHBwZW0gKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX011bEZpeCggc3RlbVdpZHRoUGVyMTAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZjJfZmxvYXRUb0ZpeGVkKCAuMjUgKSApOworCisgICAgICBlbHNlIGlmICggc2NhbGVkU3RlbSA8IGNmMl9pbnRUb0ZpeGVkKCAxNjY3ICkgKQorICAgICAgICAqZGFya2VuQW1vdW50ID0gRlRfRGl2Rml4KCBjZjJfaW50VG9GaXhlZCggMjc1ICksIHBwZW0gKTsKKworICAgICAgZWxzZSBpZiAoIHNjYWxlZFN0ZW0gPCBjZjJfaW50VG9GaXhlZCggMjMzMyApICkKKyAgICAgICAgKmRhcmtlbkFtb3VudCA9IEZUX0RpdkZpeCggY2YyX2ludFRvRml4ZWQoIDk2MyApLCBwcGVtICkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxGaXgoIHN0ZW1XaWR0aFBlcjEwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2YyX2Zsb2F0VG9GaXhlZCggLjQxMyApICk7CisKKyAgICAgIC8qIHVzZSBoYWxmIHRoZSBhbW91bnQgb24gZWFjaCBzaWRlIGFuZCBjb252ZXJ0IGJhY2sgdG8gdHJ1ZSAqLworICAgICAgLyogY2hhcmFjdGVyIHNwYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAqZGFya2VuQW1vdW50ID0gRlRfRGl2Rml4KCAqZGFya2VuQW1vdW50LCAyICogZW1SYXRpbyApOworICAgIH0KKworICAgIC8qIGFkZCBzeW50aGV0aWMgZW1ib2xkZW5pbmcgZWZmZWN0IGluIGNoYXJhY3RlciBzcGFjZSAqLworICAgICpkYXJrZW5BbW91bnQgKz0gYm9sZGVuQW1vdW50IC8gMjsKKyAgfQorCisKKyAgLyogc2V0IHVwIHZhbHVlcyBmb3IgdGhlIGN1cnJlbnQgRm9udERpY3QgYW5kIG1hdHJpeCAqLworCisgIC8qIGNhbGxlcidzIHRyYW5zZm9ybSBpcyBhZGp1c3RlZCBmb3Igc3VicGl4ZWwgcG9zaXRpb25pbmcgKi8KKyAgc3RhdGljIHZvaWQKKyAgY2YyX2ZvbnRfc2V0dXAoIENGMl9Gb250ICAgICAgICAgICBmb250LAorICAgICAgICAgICAgICAgICAgY29uc3QgQ0YyX01hdHJpeCogIHRyYW5zZm9ybSApCisgIHsKKyAgICAvKiBwb2ludGVyIHRvIHBhcnNlZCBmb250IG9iamVjdCAqLworICAgIENGRl9EZWNvZGVyKiAgZGVjb2RlciA9IGZvbnQtPmRlY29kZXI7CisKKyAgICBGVF9Cb29sICBuZWVkRXh0cmFTZXR1cDsKKworICAgIC8qIGNoYXJhY3RlciBzcGFjZSB1bml0cyAqLworICAgIENGMl9GaXhlZCAgYm9sZGVuWCA9IGZvbnQtPnN5bnRoZXRpY0VtYm9sZGVuaW5nQW1vdW50WDsKKyAgICBDRjJfRml4ZWQgIGJvbGRlblkgPSBmb250LT5zeW50aGV0aWNFbWJvbGRlbmluZ0Ftb3VudFk7CisKKyAgICBDRjJfRml4ZWQgIHBwZW07CisKKworICAgIC8qIGNsZWFyIHByZXZpb3VzIGVycm9yICovCisgICAgZm9udC0+ZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgICAvKiBpZiBhIENJRCBmb250RGljdCBoYXMgY2hhbmdlZCwgd2UgbmVlZCB0byByZWNvbXB1dGUgc29tZSBjYWNoZWQgKi8KKyAgICAvKiBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBuZWVkRXh0cmFTZXR1cCA9CisgICAgICAoRlRfQm9vbCkoIGZvbnQtPmxhc3RTdWJmb250ICE9IGNmMl9nZXRTdWJmb250KCBkZWNvZGVyICkgKTsKKworICAgIC8qIGlmIHBwZW0gaGFzIGNoYW5nZWQsIHdlIG5lZWQgdG8gcmVjb21wdXRlIHNvbWUgY2FjaGVkIGRhdGEgICAgICAgICAqLworICAgIC8qIG5vdGU6IGJlY2F1c2Ugb2YgQ0lEIGZvbnQgbWF0cml4IGNvbmNhdGVuYXRpb24sIHBwZW0gYW5kIHRyYW5zZm9ybSAqLworICAgIC8qICAgICAgIGRvIG5vdCBuZWNlc3NhcmlseSB0cmFjay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHBwZW0gPSBjZjJfZ2V0UHBlbVkoIGRlY29kZXIgKTsKKyAgICBpZiAoIGZvbnQtPnBwZW0gIT0gcHBlbSApCisgICAgeworICAgICAgZm9udC0+cHBlbSAgICAgPSBwcGVtOworICAgICAgbmVlZEV4dHJhU2V0dXAgPSBUUlVFOworICAgIH0KKworICAgIC8qIGNvcHkgaGludGVkIGZsYWcgb24gZWFjaCBjYWxsICovCisgICAgZm9udC0+aGludGVkID0gKEZUX0Jvb2wpKCBmb250LT5yZW5kZXJpbmdGbGFncyAmIENGMl9GbGFnc0hpbnRlZCApOworCisgICAgLyogZGV0ZXJtaW5lIGlmIHRyYW5zZm9ybSBoYXMgY2hhbmdlZDsgICAgICAgKi8KKyAgICAvKiBpbmNsdWRlIEZvbnRtYXRyaXggYnV0IGlnbm9yZSB0cmFuc2xhdGlvbiAqLworICAgIGlmICggZnRfbWVtY21wKCB0cmFuc2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICZmb250LT5jdXJyZW50VHJhbnNmb3JtLAorICAgICAgICAgICAgICAgICAgICA0ICogc2l6ZW9mICggQ0YyX0ZpeGVkICkgKSAhPSAwICkKKyAgICB7CisgICAgICAvKiBzYXZlIGBrZXknIGluZm9ybWF0aW9uIGZvciBgY2FjaGUgb2Ygb25lJyBtYXRyaXggZGF0YTsgKi8KKyAgICAgIC8qIHNhdmUgY2xpZW50IHRyYW5zZm9ybSwgd2l0aG91dCB0aGUgdHJhbnNsYXRpb24gICAgICAgICAqLworICAgICAgZm9udC0+Y3VycmVudFRyYW5zZm9ybSAgICA9ICp0cmFuc2Zvcm07CisgICAgICBmb250LT5jdXJyZW50VHJhbnNmb3JtLnR4ID0KKyAgICAgIGZvbnQtPmN1cnJlbnRUcmFuc2Zvcm0udHkgPSBjZjJfaW50VG9GaXhlZCggMCApOworCisgICAgICAvKiBUT0RPOiBGcmVlVHlwZSB0cmFuc2Zvcm0gaXMgc2ltcGxlIHNjYWxhcjsgZm9yIG5vdywgdXNlIGlkZW50aXR5ICovCisgICAgICAvKiAgICAgICBmb3Igb3V0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBmb250LT5pbm5lclRyYW5zZm9ybSAgID0gKnRyYW5zZm9ybTsKKyAgICAgIGZvbnQtPm91dGVyVHJhbnNmb3JtLmEgPQorICAgICAgZm9udC0+b3V0ZXJUcmFuc2Zvcm0uZCA9IGNmMl9pbnRUb0ZpeGVkKCAxICk7CisgICAgICBmb250LT5vdXRlclRyYW5zZm9ybS5iID0KKyAgICAgIGZvbnQtPm91dGVyVHJhbnNmb3JtLmMgPSBjZjJfaW50VG9GaXhlZCggMCApOworCisgICAgICBuZWVkRXh0cmFTZXR1cCA9IFRSVUU7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBmb250LT5kYXJrZW5lZCBpcyBzZXQgdG8gdHJ1ZSBpZiB0aGVyZSBpcyBhIHN0ZW0gZGFya2VuaW5nIHJlcXVlc3Qgb3IKKyAgICAgKiB0aGUgZm9udCBpcyBzeW50aGV0aWMgZW1ib2xkZW5lZC4KKyAgICAgKiBmb250LT5kYXJrZW5lZCBjb250cm9scyB3aGV0aGVyIHRvIGFkanVzdCBibHVlIHpvbmVzLCB3aW5kaW5nIG9yZGVyLAorICAgICAqIGFuZCBoaW50aW5nLgorICAgICAqCisgICAgICovCisgICAgaWYgKCBmb250LT5zdGVtRGFya2VuZWQgIT0gKCBmb250LT5yZW5kZXJpbmdGbGFncyAmIENGMl9GbGFnc0RhcmtlbmVkICkgKQorICAgIHsKKyAgICAgIGZvbnQtPnN0ZW1EYXJrZW5lZCA9CisgICAgICAgIChGVF9Cb29sKSggZm9udC0+cmVuZGVyaW5nRmxhZ3MgJiBDRjJfRmxhZ3NEYXJrZW5lZCApOworCisgICAgICAvKiBibHVlIHpvbmVzIGRlcGVuZCBvbiBkYXJrZW5lZCBmbGFnICovCisgICAgICBuZWVkRXh0cmFTZXR1cCA9IFRSVUU7CisgICAgfQorCisgICAgLyogcmVjb21wdXRlIHZhcmlhYmxlcyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gdHJhbnNmb3JtIG9yIEZvbnREaWN0IG9yICovCisgICAgLyogZGFya2VuIGZsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBuZWVkRXh0cmFTZXR1cCApCisgICAgeworICAgICAgLyogU3RkVlcgaXMgZm91bmQgaW4gdGhlIHByaXZhdGUgZGljdGlvbmFyeTsgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiByZWNvbXB1dGUgZGFya2VuaW5nIGFtb3VudHMgd2hlbmV2ZXIgcHJpdmF0ZSBkaWN0aW9uYXJ5IG9yICAgICAgKi8KKyAgICAgIC8qIHRyYW5zZm9ybSBjaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogTm90ZTogYSByZW5kZXJpbmcgZmxhZyB0dXJucyBkYXJrZW5pbmcgb24gb3Igb2ZmLCBzbyB3ZSB3YW50IHRvICovCisgICAgICAvKiAgICAgICBzdG9yZSB0aGUgYG9uJyBhbW91bnRzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgIGRhcmtlbmluZyBhbW91bnQgaXMgY29tcHV0ZWQgaW4gY2hhcmFjdGVyIHNwYWNlICAgICAgICAgICAqLworICAgICAgLyogVE9ETzogdGVzdGluZyBzaXplLWRlcGVuZGVudCBkYXJrZW5pbmcgaGVyZTsgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiAgICAgICB3aGF0IHRvIGRvIGZvciByb3RhdGlvbnM/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgQ0YyX0ZpeGVkICBlbVJhdGlvOworICAgICAgQ0YyX0ZpeGVkICBzdGRIVzsKKyAgICAgIENGMl9JbnQgICAgdW5pdHNQZXJFbSA9IGZvbnQtPnVuaXRzUGVyRW07CisKKworICAgICAgaWYgKCB1bml0c1BlckVtID09IDAgKQorICAgICAgICB1bml0c1BlckVtID0gMTAwMDsKKworICAgICAgcHBlbSA9IEZUX01BWCggY2YyX2ludFRvRml4ZWQoIDQgKSwKKyAgICAgICAgICAgICAgICAgICAgIGZvbnQtPnBwZW0gKTsgLyogdXNlIG1pbmltdW0gcHBlbSBvZiA0ICovCisKKyNpZiAwCisgICAgICAvKiBzaW5jZSB2c3RlbSBpcyBtZWFzdXJlZCBpbiB0aGUgeC1kaXJlY3Rpb24sIHdlIHVzZSB0aGUgYGEnIG1lbWJlciAqLworICAgICAgLyogb2YgdGhlIGZvbnRNYXRyaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGVtUmF0aW8gPSBjZjJfZml4ZWRGcmFjTXVsKCBjZjJfaW50VG9GaXhlZCggMTAwMCApLCBmb250TWF0cml4LT5hICk7CisjZW5kaWYKKworICAgICAgLyogRnJlZXR5cGUgZG9lcyBub3QgcHJlc2VydmUgdGhlIGZvbnRNYXRyaXggd2hlbiBwYXJzaW5nOyB1c2UgKi8KKyAgICAgIC8qIHVuaXRzUGVyRW0gaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBUT0RPOiBjaGVjayBwcmVjaXNpb24gb2YgdGhpcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgZW1SYXRpbyAgICAgPSBjZjJfaW50VG9GaXhlZCggMTAwMCApIC8gdW5pdHNQZXJFbTsKKyAgICAgIGZvbnQtPnN0ZFZXID0gY2YyX2dldFN0ZFZXKCBkZWNvZGVyICk7CisKKyAgICAgIGlmICggZm9udC0+c3RkVlcgPD0gMCApCisgICAgICAgIGZvbnQtPnN0ZFZXID0gRlRfRGl2Rml4KCBjZjJfaW50VG9GaXhlZCggNzUgKSwgZW1SYXRpbyApOworCisgICAgICBpZiAoIGJvbGRlblggPiAwICkKKyAgICAgIHsKKyAgICAgICAgLyogRW5zdXJlIHRoYXQgYm9sZGVuWCBpcyBhdCBsZWFzdCAxIHBpeGVsIGZvciBzeW50aGV0aWMgYm9sZCBmb250ICovCisgICAgICAgIC8qIChzaW1pbGFyIHRvIHdoYXQgQXZhbG9uIGRvZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBib2xkZW5YID0gRlRfTUFYKCBib2xkZW5YLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9EaXZGaXgoIGNmMl9pbnRUb0ZpeGVkKCB1bml0c1BlckVtICksIHBwZW0gKSApOworCisgICAgICAgIC8qIFN5bnRoZXRpYyBlbWJvbGRlbmluZyBhZGRzIGF0IGxlYXN0IDEgcGl4ZWwgdG8gZGFya2VuWCwgd2hpbGUgKi8KKyAgICAgICAgLyogc3RlbSBkYXJrZW5pbmcgYWRkcyBhdCBtb3N0IGhhbGYgcGl4ZWwuICBTaW5jZSB0aGUgcHVycG9zZSBvZiAqLworICAgICAgICAvKiBzdGVtIGRhcmtlbmluZyAocmVhZGFiaWxpdHkgYXQgc21hbGwgc2l6ZXMpIGlzIG1ldCB3aXRoICAgICAgICovCisgICAgICAgIC8qIHN5bnRoZXRpYyBlbWJvbGRlbmluZywgbm8gbmVlZCB0byBhZGQgc3RlbSBkYXJrZW5pbmcgZm9yIGEgICAgKi8KKyAgICAgICAgLyogc3ludGhldGljIGJvbGQgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBjZjJfY29tcHV0ZURhcmtlbmluZyggZW1SYXRpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LT5zdGRWVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250LT5kYXJrZW5YLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9sZGVuWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFICk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGNmMl9jb21wdXRlRGFya2VuaW5nKCBlbVJhdGlvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHBlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtPnN0ZFZXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbnQtPmRhcmtlblgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC0+c3RlbURhcmtlbmVkICk7CisKKyNpZiAwCisgICAgICAvKiBzaW5jZSBoc3RlbSBpcyBtZWFzdXJlZCBpbiB0aGUgeS1kaXJlY3Rpb24sIHdlIHVzZSB0aGUgYGQnIG1lbWJlciAqLworICAgICAgLyogb2YgdGhlIGZvbnRNYXRyaXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qIFRPRE86IHVzZSB0aGUgc2FtZSB1bml0cyBwZXIgZW0gYXMgYWJvdmU7IGNoZWNrIHRoaXMgICAgICAgICAgICAgICovCisgICAgICBlbVJhdGlvID0gY2YyX2ZpeGVkRnJhY011bCggY2YyX2ludFRvRml4ZWQoIDEwMDAgKSwgZm9udE1hdHJpeC0+ZCApOworI2VuZGlmCisKKyAgICAgIC8qIHNldCB0aGUgZGVmYXVsdCBzdGVtIHdpZHRoLCBiZWNhdXNlIGl0IG11c3QgYmUgdGhlIHNhbWUgZm9yIGFsbCAqLworICAgICAgLyogZmFtaWx5IG1lbWJlcnM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBjaG9vc2UgYSBjb25zdGFudCBmb3IgU3RkSFcgdGhhdCBkZXBlbmRzIG9uIGZvbnQgY29udHJhc3QgICAgICAgKi8KKyAgICAgIHN0ZEhXID0gY2YyX2dldFN0ZEhXKCBkZWNvZGVyICk7CisKKyAgICAgIGlmICggc3RkSFcgPiAwICYmIGZvbnQtPnN0ZFZXID4gMiAqIHN0ZEhXICkKKyAgICAgICAgZm9udC0+c3RkSFcgPSBGVF9EaXZGaXgoIGNmMl9pbnRUb0ZpeGVkKCA3NSApLCBlbVJhdGlvICk7CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIGxvdyBjb250cmFzdCBmb250IGdldHMgbGVzcyBoc3RlbSBkYXJrZW5pbmcgKi8KKyAgICAgICAgZm9udC0+c3RkSFcgPSBGVF9EaXZGaXgoIGNmMl9pbnRUb0ZpeGVkKCAxMTAgKSwgZW1SYXRpbyApOworICAgICAgfQorCisgICAgICBjZjJfY29tcHV0ZURhcmtlbmluZyggZW1SYXRpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtPnN0ZEhXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250LT5kYXJrZW5ZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvbGRlblksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC0+c3RlbURhcmtlbmVkICk7CisKKyAgICAgIGlmICggZm9udC0+ZGFya2VuWCAhPSAwIHx8IGZvbnQtPmRhcmtlblkgIT0gMCApCisgICAgICAgIGZvbnQtPmRhcmtlbmVkID0gVFJVRTsKKyAgICAgIGVsc2UKKyAgICAgICAgZm9udC0+ZGFya2VuZWQgPSBGQUxTRTsKKworICAgICAgZm9udC0+cmV2ZXJzZVdpbmRpbmcgPSBGQUxTRTsgLyogaW5pdGlhbCBleHBlY3RhdGlvbiBpcyBDQ1cgKi8KKworICAgICAgLyogY29tcHV0ZSBibHVlIHpvbmVzIGZvciB0aGlzIGluc3RhbmNlICovCisgICAgICBjZjJfYmx1ZXNfaW5pdCggJmZvbnQtPmJsdWVzLCBmb250ICk7CisgICAgfQorICB9CisKKworICAvKiBlcXVpdmFsZW50IHRvIEFkb2JlR2V0T3V0bGluZSAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2YyX2dldEdseXBoT3V0bGluZSggQ0YyX0ZvbnQgICAgICAgICAgIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgIENGMl9CdWZmZXIgICAgICAgICBjaGFyc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRjJfTWF0cml4KiAgdHJhbnNmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICBDRjJfRjE2RG90MTYqICAgICAgZ2x5cGhXaWR0aCApCisgIHsKKyAgICBGVF9FcnJvciAgbGFzdEVycm9yID0gRlRfRXJyX09rOworCisgICAgRlRfVmVjdG9yICB0cmFuc2xhdGlvbjsKKwlpbnQgcmVmQ291bnQgPSAwOworCisjaWYgMAorICAgIEZUX1ZlY3RvciAgYWR2YW5jZVBvaW50OworI2VuZGlmCisKKyAgICBDRjJfRml4ZWQgIGFkdldpZHRoID0gMDsKKyAgICBGVF9Cb29sICAgIG5lZWRXaW5kaW5nOworCisKKyAgICAvKiBOb3RlOiB1c2UgYm90aCBpbnRlZ2VyIGFuZCBmcmFjdGlvbiBmb3Igb3V0bGluZXMuICBUaGlzIGFsbG93cyBiYm94ICovCisgICAgLyogICAgICAgdG8gY29tZSBvdXQgZGlyZWN0bHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgdHJhbnNsYXRpb24ueCA9IHRyYW5zZm9ybS0+dHg7CisgICAgdHJhbnNsYXRpb24ueSA9IHRyYW5zZm9ybS0+dHk7CisKKyAgICAvKiBzZXQgdXAgdmFsdWVzIGJhc2VkIG9uIHRyYW5zZm9ybSAqLworICAgIGNmMl9mb250X3NldHVwKCBmb250LCB0cmFuc2Zvcm0gKTsKKyAgICBpZiAoIGZvbnQtPmVycm9yICkKKyAgICAgIGdvdG8gZXhpdDsgICAgICAgICAgICAgICAgICAgICAgLyogc2V0dXAgZW5jb3VudGVyZWQgYW4gZXJyb3IgKi8KKworICAgIC8qIHJlc2V0IGRhcmtlbiBkaXJlY3Rpb24gKi8KKyAgICBmb250LT5yZXZlcnNlV2luZGluZyA9IEZBTFNFOworCisgICAgLyogd2luZGluZyBvcmRlciBvbmx5IGFmZmVjdHMgZGFya2VuaW5nICovCisgICAgbmVlZFdpbmRpbmcgPSBmb250LT5kYXJrZW5lZDsKKworICAgIHdoaWxlICggcmVmQ291bnQrKyA8IDEwMjQpCisgICAgeworICAgICAgLyogcmVzZXQgb3V0cHV0IGJ1ZmZlciAqLworICAgICAgY2YyX291dGxpbmVfcmVzZXQoICZmb250LT5vdXRsaW5lICk7CisKKyAgICAgIC8qIGJ1aWxkIHRoZSBvdXRsaW5lLCBwYXNzaW5nIHRoZSBmdWxsIHRyYW5zbGF0aW9uICovCisgICAgICBjZjJfaW50ZXJwVDJDaGFyU3RyaW5nKCBmb250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDRjJfT3V0bGluZUNhbGxiYWNrcykmZm9udC0+b3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc2xhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWR2V2lkdGggKTsKKworICAgICAgaWYgKCBmb250LT5lcnJvciApCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgICAgaWYgKCAhbmVlZFdpbmRpbmcgKQorICAgICAgICBicmVhazsKKworICAgICAgLyogY2hlY2sgd2luZGluZyBvcmRlciAqLworICAgICAgaWYgKCBmb250LT5vdXRsaW5lLnJvb3Qud2luZGluZ01vbWVudHVtID49IDAgKSAvKiBDRkYgaXMgQ0NXICovCisgICAgICAgIGJyZWFrOworCisgICAgICAvKiBpbnZlcnQgZGFya2VuaW5nIGFuZCByZW5kZXIgYWdhaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qIFRPRE86IHRoaXMgc2hvdWxkIGJlIGEgcGFyYW1ldGVyIHRvIGdldE91dGxpbmUtY29tcHV0ZU9mZnNldCAqLworICAgICAgZm9udC0+cmV2ZXJzZVdpbmRpbmcgPSBUUlVFOworCisgICAgICBuZWVkV2luZGluZyA9IEZBTFNFOyAgICAvKiBleGl0IGFmdGVyIG5leHQgaXRlcmF0aW9uICovCisgICAgfQorCisgICAgLyogZmluaXNoIHN0b3JpbmcgY2xpZW50IG91dGxpbmUgKi8KKyAgICBjZjJfb3V0bGluZV9jbG9zZSggJmZvbnQtPm91dGxpbmUgKTsKKworICBleGl0OgorICAgIC8qIEZyZWVUeXBlIGp1c3Qgd2FudHMgdGhlIGFkdmFuY2Ugd2lkdGg7IHRoZXJlIGlzIG5vIHRyYW5zbGF0aW9uICovCisgICAgKmdseXBoV2lkdGggPSBhZHZXaWR0aDsKKworICAgIC8qIGZyZWUgcmVzb3VyY2VzIGFuZCBjb2xsZWN0IGVycm9ycyBmcm9tIG9iamVjdHMgd2UndmUgdXNlZCAqLworICAgIGNmMl9zZXRFcnJvciggJmZvbnQtPmVycm9yLCBsYXN0RXJyb3IgKTsKKworICAgIHJldHVybiBmb250LT5lcnJvcjsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyZm9udC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyZm9udC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGQxYmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJmb250LmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmMmZvbnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBZG9iZSdzIGNvZGUgZm9yIGZvbnQgaW5zdGFuY2VzIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNy0yMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgc29mdHdhcmUsIGFuZCBhbGwgd29ya3Mgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBzb3VyY2Ugb3IgICAgICAgKi8KKy8qICBvYmplY3QgY29kZSBmb3JtIGFzIGluZGljYXRlZCBieSB0aGUgY29weXJpZ2h0IG5vdGljZShzKSBpbmNsdWRlZCAgICAgICovCisvKiAgaGVyZWluIChjb2xsZWN0aXZlbHksIHRoZSAiV29yayIpIGlzIG1hZGUgYXZhaWxhYmxlLCBhbmQgbWF5IG9ubHkgYmUgICAqLworLyogIHVzZWQsIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgICAgKi8KKy8qICBMSUNFTlNFLlRYVC4gIEFkZGl0aW9uYWxseSwgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCBlYWNoIGNvbnRyaWJ1dG9yIHRvIHRoZSBXb3JrIGhlcmVieSBncmFudHMgICAqLworLyogIHRvIGFueSBpbmRpdmlkdWFsIG9yIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgICAgKi8KKy8qICB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFuZCB0aGlzIHNlY3Rpb24gKGhlcmVhZnRlciwgIllvdSIgb3IgICAgICovCisvKiAgIllvdXIiKSBhIHBlcnBldHVhbCwgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsICAgICAgICAgICAgICAqLworLyogIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgICAgKi8KKy8qICBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCAgICAgICovCisvKiAgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLCB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlICAqLworLyogIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZSBieSBzdWNoIGNvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5ICAgICAgKi8KKy8qICBpbmZyaW5nZWQgYnkgdGhlaXIgY29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyICAgICovCisvKiAgY29udHJpYnV0aW9uKHMpIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBjb250cmlidXRpb24ocykgd2FzICAgICAgICAqLworLyogIHN1Ym1pdHRlZC4gIElmIFlvdSBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5ICAgICAgKi8KKy8qICAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCAgICovCisvKiAgdGhlIFdvcmsgb3IgYSBjb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyAgICAqLworLyogIGRpcmVjdCBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzICAgKi8KKy8qICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgICovCisvKiAgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBCeSB1c2luZywgbW9kaWZ5aW5nLCBvciBkaXN0cmlidXRpbmcgdGhlIFdvcmsgeW91IGluZGljYXRlIHRoYXQgeW91ICAgICovCisvKiAgaGF2ZSByZWFkIGFuZCB1bmRlcnN0b29kIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgICAgICAgICAgICAgICAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhcyB3ZWxsIGFzIHRob3NlIHByb3ZpZGVkIGluIHRoaXMgc2VjdGlvbiwgICAgKi8KKy8qICBhbmQgeW91IGFjY2VwdCB0aGVtIGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fQ0YyRk9OVF9IX18KKyNkZWZpbmUgX19DRjJGT05UX0hfXworCisKKyNpbmNsdWRlICJjZjJmdC5oIgorI2luY2x1ZGUgImNmMmJsdWVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBDRjJfT1BFUkFORF9TVEFDS19TSVpFICA0OAorI2RlZmluZSBDRjJfTUFYX1NVQlIgICAgICAgICAgICAxMCAvKiBtYXhpbXVtIHN1YnJvdXRpbmUgbmVzdGluZyAqLworCisKKyAgLyogdHlwZWRlZiBpcyBpbiBgY2YyZ2x1ZS5oJyAqLworICBzdHJ1Y3QgIENGMl9Gb250UmVjXworICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnk7CisgICAgRlRfRXJyb3IgICBlcnJvcjsgICAgIC8qIHNoYXJlZCBlcnJvciBmb3IgdGhpcyBpbnN0YW5jZSAqLworCisgICAgQ0YyX1JlbmRlcmluZ0ZsYWdzICByZW5kZXJpbmdGbGFnczsKKworICAgIC8qIHZhcmlhYmxlcyB0aGF0IGRlcGVuZCBvbiBUcmFuc2Zvcm06ICAqLworICAgIC8qIHRoZSBmb2xsb3dpbmcgaGF2ZSB6ZXJvIHRyYW5zbGF0aW9uOyAqLworICAgIC8qIGlubmVyICogb3V0ZXIgPSBmb250ICogb3JpZ2luYWwgICAgICAqLworCisgICAgQ0YyX01hdHJpeCAgY3VycmVudFRyYW5zZm9ybTsgIC8qIG9yaWdpbmFsIGNsaWVudCBtYXRyaXggICAgICAgICAgICovCisgICAgQ0YyX01hdHJpeCAgaW5uZXJUcmFuc2Zvcm07ICAgIC8qIGZvciBoaW50aW5nOyBlcmVjdCwgc2NhbGVkICAgICAgICovCisgICAgQ0YyX01hdHJpeCAgb3V0ZXJUcmFuc2Zvcm07ICAgIC8qIHBvc3QgaGludGluZzsgaW5jbHVkZXMgcm90YXRpb25zICovCisgICAgQ0YyX0ZpeGVkICAgcHBlbTsgICAgICAgICAgICAgIC8qIHRyYW5zZm9ybS1kZXBlbmRlbnQgICAgICAgICAgICAgICovCisKKyAgICBDRjJfSW50ICB1bml0c1BlckVtOworCisgICAgQ0YyX0ZpeGVkICBzeW50aGV0aWNFbWJvbGRlbmluZ0Ftb3VudFg7ICAgLyogY2hhcmFjdGVyIHNwYWNlIHVuaXRzICovCisgICAgQ0YyX0ZpeGVkICBzeW50aGV0aWNFbWJvbGRlbmluZ0Ftb3VudFk7ICAgLyogY2hhcmFjdGVyIHNwYWNlIHVuaXRzICovCisKKyAgICAvKiBGcmVlVHlwZSByZWxhdGVkIG1lbWJlcnMgKi8KKyAgICBDRjJfT3V0bGluZVJlYyAgb3V0bGluZTsgICAgICAgLyogZnJlZXR5cGUgZ2x5cGggb3V0bGluZSBmdW5jdGlvbnMgKi8KKyAgICBDRkZfRGVjb2RlciogICAgZGVjb2RlcjsKKyAgICBDRkZfU3ViRm9udCAgICAgbGFzdFN1YmZvbnQ7ICAgICAgICAgICAgICAvKiBGcmVlVHlwZSBwYXJzZWQgZGF0YTsgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0b3AgZm9udCBvciBzdWJmb250ICAgKi8KKworICAgIC8qIHRoZXNlIGZsYWdzIGNhbiB2YXJ5IGZyb20gb25lIGNhbGwgdG8gdGhlIG5leHQgKi8KKyAgICBGVF9Cb29sICBoaW50ZWQ7CisgICAgRlRfQm9vbCAgZGFya2VuZWQ7ICAgICAgIC8qIHRydWUgaWYgc3RlbURhcmtlbmVkIG9yIHN5bnRoZXRpYyBib2xkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkuZS4gZGFya2VuWCAhPSAwIHx8IGRhcmtlblkgIT0gMCAgICAgICovCisgICAgRlRfQm9vbCAgc3RlbURhcmtlbmVkOworCisgICAgLyogdmFyaWFibGVzIHRoYXQgZGVwZW5kIG9uIGJvdGggRm9udERpY3QgYW5kIFRyYW5zZm9ybSAqLworICAgIENGMl9GaXhlZCAgc3RkVlc7ICAgICAvKiBpbiBjaGFyYWN0ZXIgc3BhY2U7IGRlcGVuZHMgb24gZGljdCBlbnRyeSAqLworICAgIENGMl9GaXhlZCAgc3RkSFc7ICAgICAvKiBpbiBjaGFyYWN0ZXIgc3BhY2U7IGRlcGVuZHMgb24gZGljdCBlbnRyeSAqLworICAgIENGMl9GaXhlZCAgZGFya2VuWDsgICAgICAgICAgICAgICAgICAgIC8qIGNoYXJhY3RlciBzcGFjZSB1bml0cyAgICAqLworICAgIENGMl9GaXhlZCAgZGFya2VuWTsgICAgICAgICAgICAgICAgICAgIC8qIGRlcGVuZHMgb24gdHJhbnNmb3JtICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFuZCBwcml2YXRlIGRpY3QgKFN0ZFZXKSAqLworICAgIEZUX0Jvb2wgIHJldmVyc2VXaW5kaW5nOyAgICAgICAgICAgICAgIC8qIGRhcmtlbiBhc3N1bWluZyAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvdW50ZXJjbG9ja3dpc2Ugd2luZGluZyAqLworCisgICAgQ0YyX0JsdWVzUmVjICBibHVlczsgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29tcHV0ZWQgem9uZSBkYXRhICovCisgIH07CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjZjJfZ2V0R2x5cGhPdXRsaW5lKCBDRjJfRm9udCAgICAgICAgICAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0J1ZmZlciAgICAgICAgIGNoYXJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGMl9NYXRyaXgqICB0cmFuc2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgIENGMl9GMTZEb3QxNiogICAgICBnbHlwaFdpZHRoICk7CisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX0NGMkZPTlRfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJmdC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyZnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzExZDEwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyZnQuYwpAQCAtMCwwICsxLDYzOSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2YyZnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIEdsdWUgQ29tcG9uZW50IHRvIEFkb2JlJ3MgSW50ZXJwcmV0ZXIgKGJvZHkpLiAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvciAgICAgICAqLworLyogIG9iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkICAgICAgKi8KKy8qICBoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZSAgICovCisvKiAgdXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCAgICAqLworLyogIExJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cyAgICovCisvKiAgdG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSAgICAqLworLyogIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvciAgICAgKi8KKy8qICAiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgICAgICAgICAgICAgICovCisvKiAgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCAgICAqLworLyogIGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kICAgICAgKi8KKy8qICBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgICovCisvKiAgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgICAgICAqLworLyogIGluZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgICAgKi8KKy8qICBjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMgICAgICAgICovCisvKiAgc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgICAgICAqLworLyogIChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0ICAgKi8KKy8qICB0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzICAgICovCisvKiAgZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMgICAqLworLyogIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiAgKi8KKy8qICB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIEJ5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgICAgKi8KKy8qICBoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAgICAgICAgICAgICAgICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLCAgICAqLworLyogIGFuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICJjZjJmdC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorCisjaW5jbHVkZSAiY2YyZm9udC5oIgorI2luY2x1ZGUgImNmMmVycm9yLmgiCisKKworI2RlZmluZSBDRjJfTUFYX1NJWkUgIGNmMl9pbnRUb0ZpeGVkKCAyMDAwICkgICAgLyogbWF4IHBwZW0gKi8KKworCisgIC8qCisgICAqIFRoaXMgY2hlY2sgc2hvdWxkIGF2b2lkIG1vc3QgaW50ZXJuYWwgb3ZlcmZsb3cgY2FzZXMuICBDbGllbnRzIHNob3VsZAorICAgKiBnZW5lcmFsbHkgcmVzcG9uZCB0byBgR2x5cGhfVG9vX0JpZycgYnkgZ2V0dGluZyBhIGdseXBoIG91dGxpbmUKKyAgICogYXQgRU0gc2l6ZSwgc2NhbGluZyBpdCBhbmQgZmlsbGluZyBpdCBhcyBhIGdyYXBoaWNzIG9wZXJhdGlvbi4KKyAgICoKKyAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBjZjJfY2hlY2tUcmFuc2Zvcm0oIGNvbnN0IENGMl9NYXRyaXgqICB0cmFuc2Zvcm0sCisgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ludCAgICAgICAgICAgIHVuaXRzUGVyRW0gKQorICB7CisgICAgQ0YyX0ZpeGVkICBtYXhTY2FsZTsKKworCisgICAgRlRfQVNTRVJUKCB1bml0c1BlckVtID4gMCApOworCisgICAgRlRfQVNTRVJUKCB0cmFuc2Zvcm0tPmEgPiAwICYmIHRyYW5zZm9ybS0+ZCA+IDAgKTsKKyAgICBGVF9BU1NFUlQoIHRyYW5zZm9ybS0+YiA9PSAwICYmIHRyYW5zZm9ybS0+YyA9PSAwICk7CisgICAgRlRfQVNTRVJUKCB0cmFuc2Zvcm0tPnR4ID09IDAgJiYgdHJhbnNmb3JtLT50eSA9PSAwICk7CisKKyAgICBpZiAoIHVuaXRzUGVyRW0gPiAweDdGRkYgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBHbHlwaF9Ub29fQmlnICk7CisKKyAgICBtYXhTY2FsZSA9IEZUX0RpdkZpeCggQ0YyX01BWF9TSVpFLCBjZjJfaW50VG9GaXhlZCggdW5pdHNQZXJFbSApICk7CisKKyAgICBpZiAoIHRyYW5zZm9ybS0+YSA+IG1heFNjYWxlIHx8IHRyYW5zZm9ybS0+ZCA+IG1heFNjYWxlICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggR2x5cGhfVG9vX0JpZyApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgY2YyX3NldEdseXBoV2lkdGgoIENGMl9PdXRsaW5lICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgIHdpZHRoICkKKyAgeworICAgIENGRl9EZWNvZGVyKiAgZGVjb2RlciA9IG91dGxpbmUtPmRlY29kZXI7CisKKworICAgIEZUX0FTU0VSVCggZGVjb2RlciApOworCisgICAgZGVjb2Rlci0+Z2x5cGhfd2lkdGggPSBjZjJfZml4ZWRUb0ludCggd2lkdGggKTsKKyAgfQorCisKKyAgLyogQ2xlYW4gdXAgZm9udCBpbnN0YW5jZS4gKi8KKyAgc3RhdGljIHZvaWQKKyAgY2YyX2ZyZWVfaW5zdGFuY2UoIHZvaWQqICBwdHIgKQorICB7CisgICAgQ0YyX0ZvbnQgIGZvbnQgPSAoQ0YyX0ZvbnQpcHRyOworCisKKyAgICBpZiAoIGZvbnQgKQorICAgIHsKKyAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gZm9udC0+bWVtb3J5OworCisKKyAgICAgICh2b2lkKW1lbW9yeTsKKyAgICB9CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNsaWVudCBvdXRsaW5lOyAgICovCisgIC8qIEZyZWVUeXBlIHVzZXMgY29vcmRpbmF0ZXMgaW4gMjYuNiBmb3JtYXQgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgc3RhdGljIHZvaWQKKyAgY2YyX2J1aWxkZXJfbW92ZVRvKCBDRjJfT3V0bGluZUNhbGxiYWNrcyAgICAgIGNhbGxiYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRjJfQ2FsbGJhY2tQYXJhbXMgIHBhcmFtcyApCisgIHsKKyAgICAvKiBkb3duY2FzdCB0aGUgb2JqZWN0IHBvaW50ZXIgKi8KKyAgICBDRjJfT3V0bGluZSAgIG91dGxpbmUgPSAoQ0YyX091dGxpbmUpY2FsbGJhY2tzOworICAgIENGRl9CdWlsZGVyKiAgYnVpbGRlcjsKKworICAgICh2b2lkKXBhcmFtczsgICAgICAgIC8qIG9ubHkgdXNlZCBpbiBkZWJ1ZyBtb2RlICovCisKKworICAgIEZUX0FTU0VSVCggb3V0bGluZSAmJiBvdXRsaW5lLT5kZWNvZGVyICk7CisgICAgRlRfQVNTRVJUKCBwYXJhbXMtPm9wID09IENGMl9QYXRoT3BNb3ZlVG8gKTsKKworICAgIGJ1aWxkZXIgPSAmb3V0bGluZS0+ZGVjb2Rlci0+YnVpbGRlcjsKKworICAgIC8qIG5vdGU6IHR3byBzdWNjZXNzaXZlIG1vdmVzIHNpbXBseSBjbG9zZSB0aGUgY29udG91ciB0d2ljZSAqLworICAgIGNmZl9idWlsZGVyX2Nsb3NlX2NvbnRvdXIoIGJ1aWxkZXIgKTsKKyAgICBidWlsZGVyLT5wYXRoX2JlZ3VuID0gMDsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgY2YyX2J1aWxkZXJfbGluZVRvKCBDRjJfT3V0bGluZUNhbGxiYWNrcyAgICAgIGNhbGxiYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRjJfQ2FsbGJhY2tQYXJhbXMgIHBhcmFtcyApCisgIHsKKyAgICAvKiBkb3duY2FzdCB0aGUgb2JqZWN0IHBvaW50ZXIgKi8KKyAgICBDRjJfT3V0bGluZSAgIG91dGxpbmUgPSAoQ0YyX091dGxpbmUpY2FsbGJhY2tzOworICAgIENGRl9CdWlsZGVyKiAgYnVpbGRlcjsKKworCisgICAgRlRfQVNTRVJUKCBvdXRsaW5lICYmIG91dGxpbmUtPmRlY29kZXIgKTsKKyAgICBGVF9BU1NFUlQoIHBhcmFtcy0+b3AgPT0gQ0YyX1BhdGhPcExpbmVUbyApOworCisgICAgYnVpbGRlciA9ICZvdXRsaW5lLT5kZWNvZGVyLT5idWlsZGVyOworCisgICAgaWYgKCAhYnVpbGRlci0+cGF0aF9iZWd1biApCisgICAgeworICAgICAgLyogcmVjb3JkIHRoZSBtb3ZlIGJlZm9yZSB0aGUgbGluZTsgYWxzbyBjaGVjayBwb2ludHMgYW5kIHNldCAqLworICAgICAgLyogYHBhdGhfYmVndW4nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgY2ZmX2J1aWxkZXJfc3RhcnRfcG9pbnQoIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLT5wdDAueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMtPnB0MC55ICk7CisgICAgfQorCisgICAgLyogYGNmZl9idWlsZGVyX2FkZF9wb2ludDEnIGluY2x1ZGVzIGEgY2hlY2tfcG9pbnRzIGNhbGwgZm9yIG9uZSBwb2ludCAqLworICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludDEoIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLT5wdDEueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMtPnB0MS55ICk7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGNmMl9idWlsZGVyX2N1YmVUbyggQ0YyX091dGxpbmVDYWxsYmFja3MgICAgICBjYWxsYmFja3MsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0YyX0NhbGxiYWNrUGFyYW1zICBwYXJhbXMgKQorICB7CisgICAgLyogZG93bmNhc3QgdGhlIG9iamVjdCBwb2ludGVyICovCisgICAgQ0YyX091dGxpbmUgICBvdXRsaW5lID0gKENGMl9PdXRsaW5lKWNhbGxiYWNrczsKKyAgICBDRkZfQnVpbGRlciogIGJ1aWxkZXI7CisKKworICAgIEZUX0FTU0VSVCggb3V0bGluZSAmJiBvdXRsaW5lLT5kZWNvZGVyICk7CisgICAgRlRfQVNTRVJUKCBwYXJhbXMtPm9wID09IENGMl9QYXRoT3BDdWJlVG8gKTsKKworICAgIGJ1aWxkZXIgPSAmb3V0bGluZS0+ZGVjb2Rlci0+YnVpbGRlcjsKKworICAgIGlmICggIWJ1aWxkZXItPnBhdGhfYmVndW4gKQorICAgIHsKKyAgICAgIC8qIHJlY29yZCB0aGUgbW92ZSBiZWZvcmUgdGhlIGxpbmU7IGFsc28gY2hlY2sgcG9pbnRzIGFuZCBzZXQgKi8KKyAgICAgIC8qIGBwYXRoX2JlZ3VuJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGNmZl9idWlsZGVyX3N0YXJ0X3BvaW50KCBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy0+cHQwLngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLT5wdDAueSApOworICAgIH0KKworICAgIC8qIHByZXBhcmUgcm9vbSBmb3IgMyBwb2ludHM6IDIgb2ZmLWN1cnZlLCAxIG9uLWN1cnZlICovCisgICAgY2ZmX2NoZWNrX3BvaW50cyggYnVpbGRlciwgMyApOworCisgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLT5wdDEueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy0+cHQxLnksIDAgKTsKKyAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMtPnB0Mi54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLT5wdDIueSwgMCApOworICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy0+cHQzLngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMtPnB0My55LCAxICk7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGNmMl9vdXRsaW5lX2luaXQoIENGMl9PdXRsaW5lICBvdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogICAgZXJyb3IgKQorICB7CisgICAgRlRfTUVNX1pFUk8oIG91dGxpbmUsIHNpemVvZiAoIENGMl9PdXRsaW5lUmVjICkgKTsKKworICAgIG91dGxpbmUtPnJvb3QubWVtb3J5ID0gbWVtb3J5OworICAgIG91dGxpbmUtPnJvb3QuZXJyb3IgID0gZXJyb3I7CisKKyAgICBvdXRsaW5lLT5yb290Lm1vdmVUbyA9IGNmMl9idWlsZGVyX21vdmVUbzsKKyAgICBvdXRsaW5lLT5yb290LmxpbmVUbyA9IGNmMl9idWlsZGVyX2xpbmVUbzsKKyAgICBvdXRsaW5lLT5yb290LmN1YmVUbyA9IGNmMl9idWlsZGVyX2N1YmVUbzsKKyAgfQorCisKKyAgLyogZ2V0IHNjYWxpbmcgYW5kIGhpbnQgZmxhZyBmcm9tIEdseXBoU2xvdCAqLworICBzdGF0aWMgdm9pZAorICBjZjJfZ2V0U2NhbGVBbmRIaW50RmxhZyggQ0ZGX0RlY29kZXIqICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkKiAgICB4X3NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkKiAgICB5X3NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCogICAgICBoaW50ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sKiAgICAgIHNjYWxlZCApCisgIHsKKyAgICBGVF9BU1NFUlQoIGRlY29kZXIgJiYgZGVjb2Rlci0+YnVpbGRlci5nbHlwaCApOworCisgICAgLyogbm90ZTogRnJlZVR5cGUgc2NhbGUgaW5jbHVkZXMgYSBmYWN0b3Igb2YgNjQgKi8KKyAgICAqaGludGVkID0gZGVjb2Rlci0+YnVpbGRlci5nbHlwaC0+aGludDsKKyAgICAqc2NhbGVkID0gZGVjb2Rlci0+YnVpbGRlci5nbHlwaC0+c2NhbGVkOworCisgICAgaWYgKCAqaGludGVkICkKKyAgICB7CisgICAgICAqeF9zY2FsZSA9IEZUX0RpdkZpeCggZGVjb2Rlci0+YnVpbGRlci5nbHlwaC0+eF9zY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZjJfaW50VG9GaXhlZCggNjQgKSApOworICAgICAgKnlfc2NhbGUgPSBGVF9EaXZGaXgoIGRlY29kZXItPmJ1aWxkZXIuZ2x5cGgtPnlfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2YyX2ludFRvRml4ZWQoIDY0ICkgKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIGZvciB1bmhpbnRlZCBvdXRsaW5lcywgYGNmZl9zbG90X2xvYWQnIGRvZXMgdGhlIHNjYWxpbmcsICovCisgICAgICAvKiB0aHVzIHJlbmRlciBhdCBgdW5pdHknIHNjYWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAqeF9zY2FsZSA9IDB4MDQwMDsgICAvKiAxLzY0IGFzIDE2LjE2ICovCisgICAgICAqeV9zY2FsZSA9IDB4MDQwMDsKKyAgICB9CisgIH0KKworCisgIC8qIGdldCB1bml0cyBwZXIgZW0gZnJvbSBgRlRfRmFjZScgKi8KKyAgLyogVE9ETzogc2hvdWxkIGhhbmRsZSBmb250IG1hdHJpeCBjb25jYXRlbmF0aW9uPyAqLworICBzdGF0aWMgRlRfVVNob3J0CisgIGNmMl9nZXRVbml0c1BlckVtKCBDRkZfRGVjb2RlciogIGRlY29kZXIgKQorICB7CisgICAgRlRfQVNTRVJUKCBkZWNvZGVyICYmIGRlY29kZXItPmJ1aWxkZXIuZmFjZSApOworICAgIEZUX0FTU0VSVCggZGVjb2Rlci0+YnVpbGRlci5mYWNlLT5yb290LnVuaXRzX3Blcl9FTSApOworCisgICAgcmV0dXJuIGRlY29kZXItPmJ1aWxkZXIuZmFjZS0+cm9vdC51bml0c19wZXJfRU07CisgIH0KKworCisgIC8qIE1haW4gZW50cnkgcG9pbnQ6IFJlbmRlciBvbmUgZ2x5cGguICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBjZjJfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncyggQ0ZGX0RlY29kZXIqICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICBjaGFyc3RyaW5nX2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgIGNoYXJzdHJpbmdfbGVuICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5OworICAgIEZUX0Vycm9yICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgQ0YyX0ZvbnQgICBmb250OworCisKKyAgICBGVF9BU1NFUlQoIGRlY29kZXIgJiYgZGVjb2Rlci0+Y2ZmICk7CisKKyAgICBtZW1vcnkgPSBkZWNvZGVyLT5idWlsZGVyLm1lbW9yeTsKKworICAgIC8qIENGMiBkYXRhIGlzIHNhdmVkIGhlcmUgYWNyb3NzIGdseXBocyAqLworICAgIGZvbnQgPSAoQ0YyX0ZvbnQpZGVjb2Rlci0+Y2ZmLT5jZjJfaW5zdGFuY2UuZGF0YTsKKworICAgIC8qIG9uIGZpcnN0IGdseXBoLCBhbGxvY2F0ZSBpbnN0YW5jZSBzdHJ1Y3R1cmUgKi8KKyAgICBpZiAoIGRlY29kZXItPmNmZi0+Y2YyX2luc3RhbmNlLmRhdGEgPT0gTlVMTCApCisgICAgeworICAgICAgZGVjb2Rlci0+Y2ZmLT5jZjJfaW5zdGFuY2UuZmluYWxpemVyID0KKyAgICAgICAgKEZUX0dlbmVyaWNfRmluYWxpemVyKWNmMl9mcmVlX2luc3RhbmNlOworCisgICAgICBpZiAoIEZUX0FMTE9DKCBkZWNvZGVyLT5jZmYtPmNmMl9pbnN0YW5jZS5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggQ0YyX0ZvbnRSZWMgKSApICkKKyAgICAgICAgcmV0dXJuIEZUX1RIUk9XKCBPdXRfT2ZfTWVtb3J5ICk7CisKKyAgICAgIGZvbnQgPSAoQ0YyX0ZvbnQpZGVjb2Rlci0+Y2ZmLT5jZjJfaW5zdGFuY2UuZGF0YTsKKworICAgICAgZm9udC0+bWVtb3J5ID0gbWVtb3J5OworCisgICAgICAvKiBpbml0aWFsaXplIGEgY2xpZW50IG91dGxpbmUsIHRvIGJlIHNoYXJlZCBieSBlYWNoIGdseXBoIHJlbmRlcmVkICovCisgICAgICBjZjJfb3V0bGluZV9pbml0KCAmZm9udC0+b3V0bGluZSwgZm9udC0+bWVtb3J5LCAmZm9udC0+ZXJyb3IgKTsKKyAgICB9CisKKyAgICAvKiBzYXZlIGRlY29kZXI7IGl0IGlzIGEgc3RhY2sgdmFyaWFibGUgYW5kIHdpbGwgYmUgZGlmZmVyZW50IG9uIGVhY2ggKi8KKyAgICAvKiBjYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBmb250LT5kZWNvZGVyICAgICAgICAgPSBkZWNvZGVyOworICAgIGZvbnQtPm91dGxpbmUuZGVjb2RlciA9IGRlY29kZXI7CisKKyAgICB7CisgICAgICAvKiBidWlsZCBwYXJhbWV0ZXJzIGZvciBBZG9iZSBlbmdpbmUgKi8KKworICAgICAgQ0ZGX0J1aWxkZXIqICBidWlsZGVyID0gJmRlY29kZXItPmJ1aWxkZXI7CisgICAgICBDRkZfRHJpdmVyICAgIGRyaXZlciAgPSAoQ0ZGX0RyaXZlcilGVF9GQUNFX0RSSVZFUiggYnVpbGRlci0+ZmFjZSApOworCisgICAgICAvKiBsb2NhbCBlcnJvciAqLworICAgICAgRlRfRXJyb3IgICAgICAgZXJyb3IyID0gRlRfRXJyX09rOworICAgICAgQ0YyX0J1ZmZlclJlYyAgYnVmOworICAgICAgQ0YyX01hdHJpeCAgICAgdHJhbnNmb3JtOworICAgICAgQ0YyX0YxNkRvdDE2ICAgZ2x5cGhXaWR0aDsKKworICAgICAgRlRfQm9vbCAgaGludGVkOworICAgICAgRlRfQm9vbCAgc2NhbGVkOworCisKKyAgICAgIC8qIEZyZWVUeXBlIGhhcyBhbHJlYWR5IGxvb2tlZCB1cCB0aGUgR0lEOyBjb252ZXJ0IHRvICAgICAgICAgKi8KKyAgICAgIC8qIGBSZWdpb25CdWZmZXInLCBhc3N1bWluZyB0aGF0IHRoZSBpbnB1dCBoYXMgYmVlbiB2YWxpZGF0ZWQgKi8KKyAgICAgIEZUX0FTU0VSVCggY2hhcnN0cmluZ19iYXNlICsgY2hhcnN0cmluZ19sZW4gPj0gY2hhcnN0cmluZ19iYXNlICk7CisKKyAgICAgIEZUX1pFUk8oICZidWYgKTsKKyAgICAgIGJ1Zi5zdGFydCA9CisgICAgICBidWYucHRyICAgPSBjaGFyc3RyaW5nX2Jhc2U7CisgICAgICBidWYuZW5kICAgPSBjaGFyc3RyaW5nX2Jhc2UgKyBjaGFyc3RyaW5nX2xlbjsKKworICAgICAgRlRfWkVSTyggJnRyYW5zZm9ybSApOworCisgICAgICBjZjJfZ2V0U2NhbGVBbmRIaW50RmxhZyggZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNmb3JtLmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zZm9ybS5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoaW50ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNjYWxlZCApOworCisgICAgICBmb250LT5yZW5kZXJpbmdGbGFncyA9IDA7CisgICAgICBpZiAoIGhpbnRlZCApCisgICAgICAgIGZvbnQtPnJlbmRlcmluZ0ZsYWdzIHw9IENGMl9GbGFnc0hpbnRlZDsKKyAgICAgIGlmICggc2NhbGVkICYmICFkcml2ZXItPm5vX3N0ZW1fZGFya2VuaW5nICkKKyAgICAgICAgZm9udC0+cmVuZGVyaW5nRmxhZ3MgfD0gQ0YyX0ZsYWdzRGFya2VuZWQ7CisKKyAgICAgIC8qIG5vdyBnZXQgYW4gb3V0bGluZSBmb3IgdGhpcyBnbHlwaDsgICAgICAqLworICAgICAgLyogYWxzbyBnZXQgdW5pdHMgcGVyIGVtIHRvIHZhbGlkYXRlIHNjYWxlICovCisgICAgICBmb250LT51bml0c1BlckVtID0gKENGMl9JbnQpY2YyX2dldFVuaXRzUGVyRW0oIGRlY29kZXIgKTsKKworICAgICAgZXJyb3IyID0gY2YyX2NoZWNrVHJhbnNmb3JtKCAmdHJhbnNmb3JtLCBmb250LT51bml0c1BlckVtICk7CisgICAgICBpZiAoIGVycm9yMiApCisgICAgICAgIHJldHVybiBlcnJvcjI7CisKKyAgICAgIGVycm9yMiA9IGNmMl9nZXRHbHlwaE91dGxpbmUoIGZvbnQsICZidWYsICZ0cmFuc2Zvcm0sICZnbHlwaFdpZHRoICk7CisgICAgICBpZiAoIGVycm9yMiApCisgICAgICAgIHJldHVybiBGVF9FUlIoIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKworICAgICAgY2YyX3NldEdseXBoV2lkdGgoICZmb250LT5vdXRsaW5lLCBnbHlwaFdpZHRoICk7CisKKyAgICAgIHJldHVybiBGVF9FcnJfT2s7CisgICAgfQorICB9CisKKworICAvKiBnZXQgcG9pbnRlciB0byBjdXJyZW50IEZyZWVUeXBlIHN1YmZvbnQgKGJhc2VkIG9uIGN1cnJlbnQgZ2x5cGhJRCkgKi8KKyAgRlRfTE9DQUxfREVGKCBDRkZfU3ViRm9udCApCisgIGNmMl9nZXRTdWJmb250KCBDRkZfRGVjb2RlciogIGRlY29kZXIgKQorICB7CisgICAgRlRfQVNTRVJUKCBkZWNvZGVyICYmIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udCApOworCisgICAgcmV0dXJuIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udDsKKyAgfQorCisKKyAgLyogZ2V0IGB5X3BwZW0nIGZyb20gYENGRl9TaXplJyAqLworICBGVF9MT0NBTF9ERUYoIENGMl9GaXhlZCApCisgIGNmMl9nZXRQcGVtWSggQ0ZGX0RlY29kZXIqICBkZWNvZGVyICkKKyAgeworICAgIEZUX0FTU0VSVCggZGVjb2RlciAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgIGRlY29kZXItPmJ1aWxkZXIuZmFjZSAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICBkZWNvZGVyLT5idWlsZGVyLmZhY2UtPnJvb3Quc2l6ZSApOworICAgIEZUX0FTU0VSVCggZGVjb2Rlci0+YnVpbGRlci5mYWNlLT5yb290LnNpemUtPm1ldHJpY3MueV9wcGVtICk7CisKKyAgICByZXR1cm4gY2YyX2ludFRvRml4ZWQoCisgICAgICAgICAgICAgZGVjb2Rlci0+YnVpbGRlci5mYWNlLT5yb290LnNpemUtPm1ldHJpY3MueV9wcGVtICk7CisgIH0KKworCisgIC8qIGdldCBzdGFuZGFyZCBzdGVtIHdpZHRocyBmb3IgdGhlIGN1cnJlbnQgc3ViZm9udDsgKi8KKyAgLyogRnJlZVR5cGUgc3RvcmVzIHRoZXNlIGFzIGludGVnZXIgZm9udCB1bml0cyAgICAgICAqLworICAvKiAobm90ZTogdmFyaWFibGUgbmFtZXMgc2VlbSBzd2FwcGVkKSAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggQ0YyX0ZpeGVkICkKKyAgY2YyX2dldFN0ZFZXKCBDRkZfRGVjb2RlciogIGRlY29kZXIgKQorICB7CisgICAgRlRfQVNTRVJUKCBkZWNvZGVyICYmIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udCApOworCisgICAgcmV0dXJuIGNmMl9pbnRUb0ZpeGVkKAorICAgICAgICAgICAgIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udC0+cHJpdmF0ZV9kaWN0LnN0YW5kYXJkX2hlaWdodCApOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIENGMl9GaXhlZCApCisgIGNmMl9nZXRTdGRIVyggQ0ZGX0RlY29kZXIqICBkZWNvZGVyICkKKyAgeworICAgIEZUX0FTU0VSVCggZGVjb2RlciAmJiBkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQgKTsKKworICAgIHJldHVybiBjZjJfaW50VG9GaXhlZCgKKyAgICAgICAgICAgICBkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQtPnByaXZhdGVfZGljdC5zdGFuZGFyZF93aWR0aCApOworICB9CisKKworICAvKiBub3RlOiBGcmVlVHlwZSBzdG9yZXMgMTAwMCB0aW1lcyB0aGUgYWN0dWFsIHZhbHVlIGZvciBgQmx1ZVNjYWxlJyAqLworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfZ2V0Qmx1ZU1ldHJpY3MoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQqICAgIGJsdWVTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQqICAgIGJsdWVTaGlmdCwKKyAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQqICAgIGJsdWVGdXp6ICkKKyAgeworICAgIEZUX0FTU0VSVCggZGVjb2RlciAmJiBkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQgKTsKKworICAgICpibHVlU2NhbGUgPSBGVF9EaXZGaXgoCisgICAgICAgICAgICAgICAgICAgZGVjb2Rlci0+Y3VycmVudF9zdWJmb250LT5wcml2YXRlX2RpY3QuYmx1ZV9zY2FsZSwKKyAgICAgICAgICAgICAgICAgICBjZjJfaW50VG9GaXhlZCggMTAwMCApICk7CisgICAgKmJsdWVTaGlmdCA9IGNmMl9pbnRUb0ZpeGVkKAorICAgICAgICAgICAgICAgICAgIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udC0+cHJpdmF0ZV9kaWN0LmJsdWVfc2hpZnQgKTsKKyAgICAqYmx1ZUZ1enogID0gY2YyX2ludFRvRml4ZWQoCisgICAgICAgICAgICAgICAgICAgZGVjb2Rlci0+Y3VycmVudF9zdWJmb250LT5wcml2YXRlX2RpY3QuYmx1ZV9mdXp6ICk7CisgIH0KKworCisgIC8qIGdldCBibHVlIHZhbHVlcyBjb3VudHMgYW5kIGFycmF5czsgdGhlIEZyZWVUeXBlIHBhcnNlciBoYXMgdmFsaWRhdGVkICovCisgIC8qIHRoZSBjb3VudHMgYW5kIHZlcmlmaWVkIHRoYXQgZWFjaCBpcyBhbiBldmVuIG51bWJlciAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmMl9nZXRCbHVlVmFsdWVzKCBDRkZfRGVjb2RlciogIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QqICAgICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9zKiAgICAgICpkYXRhICkKKyAgeworICAgIEZUX0FTU0VSVCggZGVjb2RlciAmJiBkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQgKTsKKworICAgICpjb3VudCA9IGRlY29kZXItPmN1cnJlbnRfc3ViZm9udC0+cHJpdmF0ZV9kaWN0Lm51bV9ibHVlX3ZhbHVlczsKKyAgICAqZGF0YSAgPSAoRlRfUG9zKikKKyAgICAgICAgICAgICAgICZkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQtPnByaXZhdGVfZGljdC5ibHVlX3ZhbHVlczsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2dldE90aGVyQmx1ZXMoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogICAgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MqICAgICAgKmRhdGEgKQorICB7CisgICAgRlRfQVNTRVJUKCBkZWNvZGVyICYmIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udCApOworCisgICAgKmNvdW50ID0gZGVjb2Rlci0+Y3VycmVudF9zdWJmb250LT5wcml2YXRlX2RpY3QubnVtX290aGVyX2JsdWVzOworICAgICpkYXRhICA9IChGVF9Qb3MqKQorICAgICAgICAgICAgICAgJmRlY29kZXItPmN1cnJlbnRfc3ViZm9udC0+cHJpdmF0ZV9kaWN0Lm90aGVyX2JsdWVzOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfZ2V0RmFtaWx5Qmx1ZXMoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqICAgICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyogICAgICAqZGF0YSApCisgIHsKKyAgICBGVF9BU1NFUlQoIGRlY29kZXIgJiYgZGVjb2Rlci0+Y3VycmVudF9zdWJmb250ICk7CisKKyAgICAqY291bnQgPSBkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQtPnByaXZhdGVfZGljdC5udW1fZmFtaWx5X2JsdWVzOworICAgICpkYXRhICA9IChGVF9Qb3MqKQorICAgICAgICAgICAgICAgJmRlY29kZXItPmN1cnJlbnRfc3ViZm9udC0+cHJpdmF0ZV9kaWN0LmZhbWlseV9ibHVlczsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2dldEZhbWlseU90aGVyQmx1ZXMoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogICAgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MqICAgICAgKmRhdGEgKQorICB7CisgICAgRlRfQVNTRVJUKCBkZWNvZGVyICYmIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udCApOworCisgICAgKmNvdW50ID0gZGVjb2Rlci0+Y3VycmVudF9zdWJmb250LT5wcml2YXRlX2RpY3QubnVtX2ZhbWlseV9vdGhlcl9ibHVlczsKKyAgICAqZGF0YSAgPSAoRlRfUG9zKikKKyAgICAgICAgICAgICAgICZkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQtPnByaXZhdGVfZGljdC5mYW1pbHlfb3RoZXJfYmx1ZXM7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggQ0YyX0ludCApCisgIGNmMl9nZXRMYW5ndWFnZUdyb3VwKCBDRkZfRGVjb2RlciogIGRlY29kZXIgKQorICB7CisgICAgRlRfQVNTRVJUKCBkZWNvZGVyICYmIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udCApOworCisgICAgcmV0dXJuIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udC0+cHJpdmF0ZV9kaWN0Lmxhbmd1YWdlX2dyb3VwOworICB9CisKKworICAvKiBjb252ZXJ0IHVuYmlhc2VkIHN1YnJvdXRpbmUgaW5kZXggdG8gYENGMl9CdWZmZXInIGFuZCAqLworICAvKiByZXR1cm4gMCBvbiBzdWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIENGMl9JbnQgKQorICBjZjJfaW5pdEdsb2JhbFJlZ2lvbkJ1ZmZlciggQ0ZGX0RlY29kZXIqICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX1VJbnQgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfQnVmZmVyICAgIGJ1ZiApCisgIHsKKyAgICBGVF9BU1NFUlQoIGRlY29kZXIgJiYgZGVjb2Rlci0+Z2xvYmFscyApOworCisgICAgRlRfWkVSTyggYnVmICk7CisKKyAgICBpZHggKz0gZGVjb2Rlci0+Z2xvYmFsc19iaWFzOworICAgIGlmICggaWR4ID49IGRlY29kZXItPm51bV9nbG9iYWxzICkKKyAgICAgIHJldHVybiBUUlVFOyAgICAgLyogZXJyb3IgKi8KKworICAgIGJ1Zi0+c3RhcnQgPQorICAgIGJ1Zi0+cHRyICAgPSBkZWNvZGVyLT5nbG9iYWxzW2lkeF07CisgICAgYnVmLT5lbmQgICA9IGRlY29kZXItPmdsb2JhbHNbaWR4ICsgMV07CisKKyAgICByZXR1cm4gRkFMU0U7ICAgICAgLyogc3VjY2VzcyAqLworICB9CisKKworICAvKiBjb252ZXJ0IEFkb2JlU3RhbmRhcmRFbmNvZGluZyBjb2RlIHRvIENGMl9CdWZmZXI7ICovCisgIC8qIHVzZWQgZm9yIHNlYWMgY29tcG9uZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNmMl9nZXRTZWFjQ29tcG9uZW50KCBDRkZfRGVjb2RlciogIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBDRjJfVUludCAgICAgIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBDRjJfQnVmZmVyICAgIGJ1ZiApCisgIHsKKyAgICBDRjJfSW50ICAgZ2lkOworICAgIEZUX0J5dGUqICBjaGFyc3RyaW5nOworICAgIEZUX1VMb25nICBsZW47CisgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICBGVF9BU1NFUlQoIGRlY29kZXIgKTsKKworICAgIEZUX1pFUk8oIGJ1ZiApOworCisgICAgZ2lkID0gY2ZmX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSggZGVjb2Rlci0+Y2ZmLCBjb2RlICk7CisgICAgaWYgKCBnaWQgPCAwICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9HbHlwaF9Gb3JtYXQgKTsKKworICAgIGVycm9yID0gY2ZmX2dldF9nbHlwaF9kYXRhKCBkZWNvZGVyLT5idWlsZGVyLmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoYXJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZW4gKTsKKyAgICAvKiBUT0RPOiBmb3Igbm93LCBqdXN0IHBhc3MgdGhlIEZyZWVUeXBlIGVycm9yIHRocm91Z2ggKi8KKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIC8qIGFzc3VtZSBpbnB1dCBoYXMgYmVlbiB2YWxpZGF0ZWQgKi8KKyAgICBGVF9BU1NFUlQoIGNoYXJzdHJpbmcgKyBsZW4gPj0gY2hhcnN0cmluZyApOworCisgICAgYnVmLT5zdGFydCA9IGNoYXJzdHJpbmc7CisgICAgYnVmLT5lbmQgICA9IGNoYXJzdHJpbmcgKyBsZW47CisgICAgYnVmLT5wdHIgICA9IGJ1Zi0+c3RhcnQ7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfZnJlZVNlYWNDb21wb25lbnQoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfQnVmZmVyICAgIGJ1ZiApCisgIHsKKyAgICBGVF9BU1NFUlQoIGRlY29kZXIgKTsKKworICAgIGNmZl9mcmVlX2dseXBoX2RhdGEoIGRlY29kZXItPmJ1aWxkZXIuZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfQnl0ZSoqKSZidWYtPnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VTG9uZykoIGJ1Zi0+ZW5kIC0gYnVmLT5zdGFydCApICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggQ0YyX0ludCApCisgIGNmMl9pbml0TG9jYWxSZWdpb25CdWZmZXIoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX1VJbnQgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9CdWZmZXIgICAgYnVmICkKKyAgeworICAgIEZUX0FTU0VSVCggZGVjb2RlciAmJiBkZWNvZGVyLT5sb2NhbHMgKTsKKworICAgIEZUX1pFUk8oIGJ1ZiApOworCisgICAgaWR4ICs9IGRlY29kZXItPmxvY2Fsc19iaWFzOworICAgIGlmICggaWR4ID49IGRlY29kZXItPm51bV9sb2NhbHMgKQorICAgICAgcmV0dXJuIFRSVUU7ICAgICAvKiBlcnJvciAqLworCisgICAgYnVmLT5zdGFydCA9CisgICAgYnVmLT5wdHIgICA9IGRlY29kZXItPmxvY2Fsc1tpZHhdOworICAgIGJ1Zi0+ZW5kICAgPSBkZWNvZGVyLT5sb2NhbHNbaWR4ICsgMV07CisKKyAgICByZXR1cm4gRkFMU0U7ICAgICAgLyogc3VjY2VzcyAqLworICB9CisKKworICBGVF9MT0NBTF9ERUYoIENGMl9GaXhlZCApCisgIGNmMl9nZXREZWZhdWx0V2lkdGhYKCBDRkZfRGVjb2RlciogIGRlY29kZXIgKQorICB7CisgICAgRlRfQVNTRVJUKCBkZWNvZGVyICYmIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udCApOworCisgICAgcmV0dXJuIGNmMl9pbnRUb0ZpeGVkKAorICAgICAgICAgICAgIGRlY29kZXItPmN1cnJlbnRfc3ViZm9udC0+cHJpdmF0ZV9kaWN0LmRlZmF1bHRfd2lkdGggKTsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBDRjJfRml4ZWQgKQorICBjZjJfZ2V0Tm9taW5hbFdpZHRoWCggQ0ZGX0RlY29kZXIqICBkZWNvZGVyICkKKyAgeworICAgIEZUX0FTU0VSVCggZGVjb2RlciAmJiBkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQgKTsKKworICAgIHJldHVybiBjZjJfaW50VG9GaXhlZCgKKyAgICAgICAgICAgICBkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQtPnByaXZhdGVfZGljdC5ub21pbmFsX3dpZHRoICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmMl9vdXRsaW5lX3Jlc2V0KCBDRjJfT3V0bGluZSAgb3V0bGluZSApCisgIHsKKyAgICBDRkZfRGVjb2RlciogIGRlY29kZXIgPSBvdXRsaW5lLT5kZWNvZGVyOworCisKKyAgICBGVF9BU1NFUlQoIGRlY29kZXIgKTsKKworICAgIG91dGxpbmUtPnJvb3Qud2luZGluZ01vbWVudHVtID0gMDsKKworICAgIEZUX0dseXBoTG9hZGVyX1Jld2luZCggZGVjb2Rlci0+YnVpbGRlci5sb2FkZXIgKTsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX291dGxpbmVfY2xvc2UoIENGMl9PdXRsaW5lICBvdXRsaW5lICkKKyAgeworICAgIENGRl9EZWNvZGVyKiAgZGVjb2RlciA9IG91dGxpbmUtPmRlY29kZXI7CisKKworICAgIEZUX0FTU0VSVCggZGVjb2RlciApOworCisgICAgY2ZmX2J1aWxkZXJfY2xvc2VfY29udG91ciggJmRlY29kZXItPmJ1aWxkZXIgKTsKKworICAgIEZUX0dseXBoTG9hZGVyX0FkZCggZGVjb2Rlci0+YnVpbGRlci5sb2FkZXIgKTsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyZnQuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmZ0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBhMGVkNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmZ0LmgKQEAgLTAsMCArMSwxNDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmMmZ0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcmVlVHlwZSBHbHVlIENvbXBvbmVudCB0byBBZG9iZSdzIEludGVycHJldGVyIChzcGVjaWZpY2F0aW9uKS4gICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgc29mdHdhcmUsIGFuZCBhbGwgd29ya3Mgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBzb3VyY2Ugb3IgICAgICAgKi8KKy8qICBvYmplY3QgY29kZSBmb3JtIGFzIGluZGljYXRlZCBieSB0aGUgY29weXJpZ2h0IG5vdGljZShzKSBpbmNsdWRlZCAgICAgICovCisvKiAgaGVyZWluIChjb2xsZWN0aXZlbHksIHRoZSAiV29yayIpIGlzIG1hZGUgYXZhaWxhYmxlLCBhbmQgbWF5IG9ubHkgYmUgICAqLworLyogIHVzZWQsIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgICAgKi8KKy8qICBMSUNFTlNFLlRYVC4gIEFkZGl0aW9uYWxseSwgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCBlYWNoIGNvbnRyaWJ1dG9yIHRvIHRoZSBXb3JrIGhlcmVieSBncmFudHMgICAqLworLyogIHRvIGFueSBpbmRpdmlkdWFsIG9yIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgICAgKi8KKy8qICB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFuZCB0aGlzIHNlY3Rpb24gKGhlcmVhZnRlciwgIllvdSIgb3IgICAgICovCisvKiAgIllvdXIiKSBhIHBlcnBldHVhbCwgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsICAgICAgICAgICAgICAqLworLyogIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgICAgKi8KKy8qICBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCAgICAgICovCisvKiAgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLCB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlICAqLworLyogIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZSBieSBzdWNoIGNvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5ICAgICAgKi8KKy8qICBpbmZyaW5nZWQgYnkgdGhlaXIgY29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyICAgICovCisvKiAgY29udHJpYnV0aW9uKHMpIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBjb250cmlidXRpb24ocykgd2FzICAgICAgICAqLworLyogIHN1Ym1pdHRlZC4gIElmIFlvdSBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5ICAgICAgKi8KKy8qICAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCAgICovCisvKiAgdGhlIFdvcmsgb3IgYSBjb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyAgICAqLworLyogIGRpcmVjdCBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzICAgKi8KKy8qICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgICovCisvKiAgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBCeSB1c2luZywgbW9kaWZ5aW5nLCBvciBkaXN0cmlidXRpbmcgdGhlIFdvcmsgeW91IGluZGljYXRlIHRoYXQgeW91ICAgICovCisvKiAgaGF2ZSByZWFkIGFuZCB1bmRlcnN0b29kIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgICAgICAgICAgICAgICAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhcyB3ZWxsIGFzIHRob3NlIHByb3ZpZGVkIGluIHRoaXMgc2VjdGlvbiwgICAgKi8KKy8qICBhbmQgeW91IGFjY2VwdCB0aGVtIGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fQ0YyRlRfSF9fCisjZGVmaW5lIF9fQ0YyRlRfSF9fCisKKworI2luY2x1ZGUgImNmMnR5cGVzLmgiCisKKworICAvKiBUT0RPOiBkaXNhYmxlIGFzc2VydHMgZm9yIG5vdyAqLworI2RlZmluZSBDRjJfTkRFQlVHCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRzeXN0ZW0uaCIKKworI2luY2x1ZGUgImNmMmdsdWUuaCIKKyNpbmNsdWRlICJjZmZnbG9hZC5oIiAgICAvKiBmb3IgQ0ZGX0RlY29kZXIgKi8KKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNmMl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKCBDRkZfRGVjb2RlciogIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgICAgIGNoYXJzdHJpbmdfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgY2hhcnN0cmluZ19sZW4gKTsKKworICBGVF9MT0NBTCggQ0ZGX1N1YkZvbnQgKQorICBjZjJfZ2V0U3ViZm9udCggQ0ZGX0RlY29kZXIqICBkZWNvZGVyICk7CisKKworICBGVF9MT0NBTCggQ0YyX0ZpeGVkICkKKyAgY2YyX2dldFBwZW1ZKCBDRkZfRGVjb2RlciogIGRlY29kZXIgKTsKKyAgRlRfTE9DQUwoIENGMl9GaXhlZCApCisgIGNmMl9nZXRTdGRWVyggQ0ZGX0RlY29kZXIqICBkZWNvZGVyICk7CisgIEZUX0xPQ0FMKCBDRjJfRml4ZWQgKQorICBjZjJfZ2V0U3RkSFcoIENGRl9EZWNvZGVyKiAgZGVjb2RlciApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2YyX2dldEJsdWVNZXRyaWNzKCBDRkZfRGVjb2RlciogIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkKiAgICBibHVlU2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkKiAgICBibHVlU2hpZnQsCisgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkKiAgICBibHVlRnV6eiApOworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9nZXRCbHVlVmFsdWVzKCBDRkZfRGVjb2RlciogIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QqICAgICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9zKiAgICAgICpkYXRhICk7CisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2YyX2dldE90aGVyQmx1ZXMoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogICAgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MqICAgICAgKmRhdGEgKTsKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfZ2V0RmFtaWx5Qmx1ZXMoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqICAgICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyogICAgICAqZGF0YSApOworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9nZXRGYW1pbHlPdGhlckJsdWVzKCBDRkZfRGVjb2RlciogIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqICAgICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zKiAgICAgICpkYXRhICk7CisKKyAgRlRfTE9DQUwoIENGMl9JbnQgKQorICBjZjJfZ2V0TGFuZ3VhZ2VHcm91cCggQ0ZGX0RlY29kZXIqICBkZWNvZGVyICk7CisKKyAgRlRfTE9DQUwoIENGMl9JbnQgKQorICBjZjJfaW5pdEdsb2JhbFJlZ2lvbkJ1ZmZlciggQ0ZGX0RlY29kZXIqICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX1VJbnQgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfQnVmZmVyICAgIGJ1ZiApOworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjZjJfZ2V0U2VhY0NvbXBvbmVudCggQ0ZGX0RlY29kZXIqICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX1VJbnQgICAgICBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0J1ZmZlciAgICBidWYgKTsKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfZnJlZVNlYWNDb21wb25lbnQoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfQnVmZmVyICAgIGJ1ZiApOworICBGVF9MT0NBTCggQ0YyX0ludCApCisgIGNmMl9pbml0TG9jYWxSZWdpb25CdWZmZXIoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX1VJbnQgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9CdWZmZXIgICAgYnVmICk7CisKKyAgRlRfTE9DQUwoIENGMl9GaXhlZCApCisgIGNmMl9nZXREZWZhdWx0V2lkdGhYKCBDRkZfRGVjb2RlciogIGRlY29kZXIgKTsKKyAgRlRfTE9DQUwoIENGMl9GaXhlZCApCisgIGNmMl9nZXROb21pbmFsV2lkdGhYKCBDRkZfRGVjb2RlciogIGRlY29kZXIgKTsKKworCisgIC8qCisgICAqIEZyZWVUeXBlIGNsaWVudCBvdXRsaW5lCisgICAqCisgICAqIHByb2Nlc3Mgb3V0cHV0IGZyb20gdGhlIGNoYXJzdHJpbmcgaW50ZXJwcmV0ZXIKKyAgICovCisgIHR5cGVkZWYgc3RydWN0ICBDRjJfT3V0bGluZVJlY18KKyAgeworICAgIENGMl9PdXRsaW5lQ2FsbGJhY2tzUmVjICByb290OyAgICAgICAgLyogYmFzZSBjbGFzcyBtdXN0IGJlIGZpcnN0ICovCisgICAgQ0ZGX0RlY29kZXIqICAgICAgICAgICAgIGRlY29kZXI7CisKKyAgfSBDRjJfT3V0bGluZVJlYywgKkNGMl9PdXRsaW5lOworCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfb3V0bGluZV9yZXNldCggQ0YyX091dGxpbmUgIG91dGxpbmUgKTsKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfb3V0bGluZV9jbG9zZSggQ0YyX091dGxpbmUgIG91dGxpbmUgKTsKKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fQ0YyRlRfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJnbHVlLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJnbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI0ZGEzOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmdsdWUuaApAQCAtMCwwICsxLDE0NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2YyZ2x1ZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFkb2JlJ3MgY29kZSBmb3Igc2hhcmVkIHN0dWZmIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvciAgICAgICAqLworLyogIG9iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkICAgICAgKi8KKy8qICBoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZSAgICovCisvKiAgdXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCAgICAqLworLyogIExJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cyAgICovCisvKiAgdG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSAgICAqLworLyogIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvciAgICAgKi8KKy8qICAiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgICAgICAgICAgICAgICovCisvKiAgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCAgICAqLworLyogIGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kICAgICAgKi8KKy8qICBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgICovCisvKiAgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgICAgICAqLworLyogIGluZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgICAgKi8KKy8qICBjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMgICAgICAgICovCisvKiAgc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgICAgICAqLworLyogIChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0ICAgKi8KKy8qICB0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzICAgICovCisvKiAgZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMgICAqLworLyogIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiAgKi8KKy8qICB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIEJ5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgICAgKi8KKy8qICBoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAgICAgICAgICAgICAgICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLCAgICAqLworLyogIGFuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19DRjJHTFVFX0hfXworI2RlZmluZSBfX0NGMkdMVUVfSF9fCisKKworLyogY29tbW9uIGluY2x1ZGVzIGZvciBvdGhlciBtb2R1bGVzICovCisjaW5jbHVkZSAiY2YyZXJyb3IuaCIKKyNpbmNsdWRlICJjZjJmaXhlZC5oIgorI2luY2x1ZGUgImNmMmFycnN0LmgiCisjaW5jbHVkZSAiY2YycmVhZC5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyogcmVuZGVyaW5nIHBhcmFtZXRlcnMgKi8KKworICAvKiBhcHBseSBoaW50cyB0byByZW5kZXJlZCBnbHlwaHMgKi8KKyNkZWZpbmUgQ0YyX0ZsYWdzSGludGVkICAgIDEKKyAgLyogZm9yIHRlc3RpbmcgKi8KKyNkZWZpbmUgQ0YyX0ZsYWdzRGFya2VuZWQgIDIKKworICAvKiB0eXBlIGZvciBob2xkaW5nIHRoZSBmbGFncyAqLworICB0eXBlZGVmIENGMl9JbnQgIENGMl9SZW5kZXJpbmdGbGFnczsKKworCisgIC8qIGVsZW1lbnRzIG9mIGEgZ2x5cGggb3V0bGluZSAqLworICB0eXBlZGVmIGVudW0gIENGMl9QYXRoT3BfCisgIHsKKyAgICBDRjJfUGF0aE9wTW92ZVRvID0gMSwgICAgIC8qIGNoYW5nZSB0aGUgY3VycmVudCBwb2ludCAqLworICAgIENGMl9QYXRoT3BMaW5lVG8gPSAyLCAgICAgLyogbGluZSAgICAgICAgICAgICAgICAgICAgICovCisgICAgQ0YyX1BhdGhPcFF1YWRUbyA9IDMsICAgICAvKiBxdWFkcmF0aWMgY3VydmUgICAgICAgICAgKi8KKyAgICBDRjJfUGF0aE9wQ3ViZVRvID0gNCAgICAgIC8qIGN1YmljIGN1cnZlICAgICAgICAgICAgICAqLworCisgIH0gQ0YyX1BhdGhPcDsKKworCisgIC8qIGEgbWF0cml4IG9mIGZpeGVkIHBvaW50IHZhbHVlcyAqLworICB0eXBlZGVmIHN0cnVjdCAgQ0YyX01hdHJpeF8KKyAgeworICAgIENGMl9GMTZEb3QxNiAgYTsKKyAgICBDRjJfRjE2RG90MTYgIGI7CisgICAgQ0YyX0YxNkRvdDE2ICBjOworICAgIENGMl9GMTZEb3QxNiAgZDsKKyAgICBDRjJfRjE2RG90MTYgIHR4OworICAgIENGMl9GMTZEb3QxNiAgdHk7CisKKyAgfSBDRjJfTWF0cml4OworCisKKyAgLyogdGhlc2UgdHlwZWRlZnMgYXJlIG5lZWRlZCBieSBtb3JlIHRoYW4gb25lIGhlYWRlciBmaWxlICovCisgIC8qIGFuZCBnY2MgY29tcGlsZXIgZG9lc24ndCBhbGxvdyByZWRlZmluaXRpb24gICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBDRjJfRm9udFJlY18gIENGMl9Gb250UmVjLCAqQ0YyX0ZvbnQ7CisgIHR5cGVkZWYgc3RydWN0IENGMl9IaW50UmVjXyAgQ0YyX0hpbnRSZWMsICpDRjJfSGludDsKKworCisgIC8qIEEgY29tbW9uIHN0cnVjdHVyZSBmb3IgYWxsIGNhbGxiYWNrIHBhcmFtZXRlcnMuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU29tZSBtZW1iZXJzIG1heSBiZSB1bnVzZWQuICBGb3IgZXhhbXBsZSwgYHB0MCcgaXMgbm90IHVzZWQgZm9yICAgICAgICovCisgIC8qIGBtb3ZlVG8nIGFuZCBgcHQzJyBpcyBub3QgdXNlZCBmb3IgYHF1YWRUbycuICBUaGUgaW5pdGlhbCBwb2ludCBgcHQwJyAqLworICAvKiBpcyBpbmNsdWRlZCBmb3IgZWFjaCBwYXRoIGVsZW1lbnQgZm9yIGdlbmVyYWxpdHk7IGN1cnZlIGNvbnZlcnNpb25zICAgKi8KKyAgLyogbmVlZCBpdC4gIFRoZSBgb3AnIHBhcmFtZXRlciBhbGxvd3Mgb25lIGZ1bmN0aW9uIHRvIGhhbmRsZSBtdWx0aXBsZSAgICovCisgIC8qIGVsZW1lbnQgdHlwZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIHR5cGVkZWYgc3RydWN0ICBDRjJfQ2FsbGJhY2tQYXJhbXNSZWNfCisgIHsKKyAgICBGVF9WZWN0b3IgIHB0MDsKKyAgICBGVF9WZWN0b3IgIHB0MTsKKyAgICBGVF9WZWN0b3IgIHB0MjsKKyAgICBGVF9WZWN0b3IgIHB0MzsKKworICAgIENGMl9JbnQgIG9wOworCisgIH0gQ0YyX0NhbGxiYWNrUGFyYW1zUmVjLCAqQ0YyX0NhbGxiYWNrUGFyYW1zOworCisKKyAgLyogZm9yd2FyZCByZWZlcmVuY2UgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgQ0YyX091dGxpbmVDYWxsYmFja3NSZWNfICBDRjJfT3V0bGluZUNhbGxiYWNrc1JlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQ0YyX091dGxpbmVDYWxsYmFja3M7CisKKyAgLyogY2FsbGJhY2sgZnVuY3Rpb24gcG9pbnRlcnMgKi8KKyAgdHlwZWRlZiB2b2lkCisgICgqQ0YyX0NhbGxiYWNrX1R5cGUpKCBDRjJfT3V0bGluZUNhbGxiYWNrcyAgICAgIGNhbGxiYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGMl9DYWxsYmFja1BhcmFtcyAgcGFyYW1zICk7CisKKworICBzdHJ1Y3QgIENGMl9PdXRsaW5lQ2FsbGJhY2tzUmVjXworICB7CisgICAgQ0YyX0NhbGxiYWNrX1R5cGUgIG1vdmVUbzsKKyAgICBDRjJfQ2FsbGJhY2tfVHlwZSAgbGluZVRvOworICAgIENGMl9DYWxsYmFja19UeXBlICBxdWFkVG87CisgICAgQ0YyX0NhbGxiYWNrX1R5cGUgIGN1YmVUbzsKKworICAgIENGMl9JbnQgIHdpbmRpbmdNb21lbnR1bTsgICAgLyogZm9yIHdpbmRpbmcgb3JkZXIgZGV0ZWN0aW9uICovCisKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKyAgICBGVF9FcnJvciogIGVycm9yOworICB9OworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19DRjJHTFVFX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyaGludHMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmhpbnRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNmNmEwNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmhpbnRzLmMKQEAgLTAsMCArMSwxNzQ3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZjJoaW50cy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQWRvYmUncyBjb2RlIGZvciBoYW5kbGluZyBDRkYgaGludHMgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDctMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yICAgICAgICovCisvKiAgb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQgICAgICAqLworLyogIGhlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlICAgKi8KKy8qICB1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsICAgICovCisvKiAgTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzICAgKi8KKy8qICB0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5ICAgICovCisvKiAgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yICAgICAqLworLyogICJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCAgICAgICAgICAgICAgKi8KKy8qICByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50ICAgICovCisvKiAgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgICAgICAqLworLyogIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSAgKi8KKy8qICBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSAgICAgICovCisvKiAgaW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciAgICAqLworLyogIGNvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcyAgICAgICAgKi8KKy8qICBzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAgICAgICovCisvKiAgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgICAqLworLyogIHRoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgICAgKi8KKy8qICBkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyAgICovCisvKiAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mICAqLworLyogIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSAgICAqLworLyogIGhhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICAgICAgICAgICAgICAgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sICAgICovCisvKiAgYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgImNmMmZ0LmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisKKyNpbmNsdWRlICJjZjJnbHVlLmgiCisjaW5jbHVkZSAiY2YyZm9udC5oIgorI2luY2x1ZGUgImNmMmhpbnRzLmgiCisjaW5jbHVkZSAiY2YyaW50cnAuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX2NmMmhpbnRzCisKKworICB0eXBlZGVmIHN0cnVjdCAgQ0YyX0hpbnRNb3ZlUmVjXworICB7CisgICAgc2l6ZV90ICAgICBqOyAgICAgICAgICAvKiBpbmRleCBvZiB1cHBlciBoaW50IG1hcCBlZGdlICAgKi8KKyAgICBDRjJfRml4ZWQgIG1vdmVVcDsgICAgIC8qIGFkanVzdG1lbnQgdG8gb3B0aW11bSBwb3NpdGlvbiAqLworCisgIH0gQ0YyX0hpbnRNb3ZlUmVjLCAqQ0YyX0hpbnRNb3ZlOworCisKKyAgLyogQ29tcHV0ZSBhbmd1bGFyIG1vbWVudHVtIGZvciB3aW5kaW5nIG9yZGVyIGRldGVjdGlvbi4gIEl0IGlzIGNhbGxlZCAqLworICAvKiBmb3IgYWxsIGxpbmVzIGFuZCBjdXJ2ZXMsIGJ1dCBub3QgbmVjZXNzYXJpbHkgaW4gZWxlbWVudCBvcmRlci4gICAgICovCisgIHN0YXRpYyBDRjJfSW50CisgIGNmMl9nZXRXaW5kaW5nTW9tZW50dW0oIENGMl9GaXhlZCAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgeTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgeTIgKQorICB7CisgICAgLyogY3Jvc3MgcHJvZHVjdCBvZiBwdDEgcG9zaXRpb24gZnJvbSBvcmlnaW4gd2l0aCBwdDIgcG9zaXRpb24gZnJvbSAgKi8KKyAgICAvKiBwdDE7IHdlIHJlZHVjZSB0aGUgcHJlY2lzaW9uIHNvIHRoYXQgdGhlIHJlc3VsdCBmaXRzIGludG8gMzIgYml0cyAqLworCisgICAgcmV0dXJuICggeDEgPj4gMTYgKSAqICggKCB5MiAtIHkxICkgPj4gMTYgKSAtCisgICAgICAgICAgICggeTEgPj4gMTYgKSAqICggKCB4MiAtIHgxICkgPj4gMTYgKTsKKyAgfQorCisKKyAgLyoKKyAgICogQ29uc3RydWN0IGZyb20gYSBTdGVtSGludDsgdGhpcyBpcyB1c2VkIGFzIGEgcGFyYW1ldGVyIHRvCisgICAqIGBjZjJfYmx1ZXNfY2FwdHVyZScuCisgICAqIGBoaW50T3JpZ2luJyBpcyB0aGUgY2hhcmFjdGVyIHNwYWNlIGRpc3BsYWNlbWVudCBvZiBhIHNlYWMgYWNjZW50LgorICAgKiBBZGp1c3Qgc3RlbSBoaW50IGZvciBkYXJrZW5pbmcgaGVyZS4KKyAgICoKKyAgICovCisgIHN0YXRpYyB2b2lkCisgIGNmMl9oaW50X2luaXQoIENGMl9IaW50ICAgICAgICAgICAgaGludCwKKyAgICAgICAgICAgICAgICAgY29uc3QgQ0YyX0FyclN0YWNrICBzdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgICAgIGluZGV4U3RlbUhpbnQsCisgICAgICAgICAgICAgICAgIGNvbnN0IENGMl9Gb250ICAgICAgZm9udCwKKyAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgICAgICAgICBoaW50T3JpZ2luLAorICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICAgICAgIHNjYWxlLAorICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgICAgIGJvdHRvbSApCisgIHsKKyAgICBDRjJfRml4ZWQgICAgICAgICAgICAgICB3aWR0aDsKKyAgICBjb25zdCBDRjJfU3RlbUhpbnRSZWMqICBzdGVtSGludDsKKworCisgICAgRlRfWkVSTyggaGludCApOworCisgICAgc3RlbUhpbnQgPSAoY29uc3QgQ0YyX1N0ZW1IaW50UmVjKiljZjJfYXJyc3RhY2tfZ2V0UG9pbnRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlbUhpbnRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGVtSGludCApOworCisgICAgd2lkdGggPSBzdGVtSGludC0+bWF4IC0gc3RlbUhpbnQtPm1pbjsKKworICAgIGlmICggd2lkdGggPT0gY2YyX2ludFRvRml4ZWQoIC0yMSApICkKKyAgICB7CisgICAgICAvKiBnaG9zdCBib3R0b20gKi8KKworICAgICAgaWYgKCBib3R0b20gKQorICAgICAgeworICAgICAgICBoaW50LT5jc0Nvb3JkID0gc3RlbUhpbnQtPm1heDsKKyAgICAgICAgaGludC0+ZmxhZ3MgICA9IENGMl9HaG9zdEJvdHRvbTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgaGludC0+ZmxhZ3MgPSAwOworICAgIH0KKworICAgIGVsc2UgaWYgKCB3aWR0aCA9PSBjZjJfaW50VG9GaXhlZCggLTIwICkgKQorICAgIHsKKyAgICAgIC8qIGdob3N0IHRvcCAqLworCisgICAgICBpZiAoIGJvdHRvbSApCisgICAgICAgIGhpbnQtPmZsYWdzID0gMDsKKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgaGludC0+Y3NDb29yZCA9IHN0ZW1IaW50LT5taW47CisgICAgICAgIGhpbnQtPmZsYWdzICAgPSBDRjJfR2hvc3RUb3A7CisgICAgICB9CisgICAgfQorCisgICAgZWxzZSBpZiAoIHdpZHRoIDwgMCApCisgICAgeworICAgICAgLyogaW52ZXJ0ZWQgcGFpciAqLworCisgICAgICAvKgorICAgICAgICogSGludHMgd2l0aCBuZWdhdGl2ZSB3aWR0aHMgd2VyZSBwcm9kdWNlZCBieSBhbiBlYXJseSB2ZXJzaW9uIG9mIGEKKyAgICAgICAqIG5vbi1BZG9iZSBmb250IHRvb2wuICBUaGUgVHlwZSAyIHNwZWMgYWxsb3dzIGVkZ2UgKGdob3N0KSBoaW50cworICAgICAgICogd2l0aCBuZWdhdGl2ZSB3aWR0aHMsIGJ1dCBzYXlzCisgICAgICAgKgorICAgICAgICogICBBbGwgb3RoZXIgbmVnYXRpdmUgd2lkdGhzIGhhdmUgdW5kZWZpbmVkIG1lYW5pbmcuCisgICAgICAgKgorICAgICAgICogQ29vbFR5cGUgaGFzIGEgc2lsZW50IHdvcmthcm91bmQgdGhhdCBuZWdhdGVzIHRoZSBoaW50IHdpZHRoOyBmb3IKKyAgICAgICAqIHBlcm1pc3NpdmUgbW9kZSwgd2UgZG8gdGhlIHNhbWUgaGVyZS4KKyAgICAgICAqCisgICAgICAgKiBOb3RlOiBTdWNoIGZvbnRzIGNhbm5vdCB1c2UgZ2hvc3QgaGludHMsIGJ1dCBzaG91bGQgb3RoZXJ3aXNlIHdvcmsuCisgICAgICAgKiBOb3RlOiBTb21lIHBvb3IgaGludHMgaW4gb3VyIGZhdXggZm9udHMgY2FuIHByb2R1Y2UgbmVnYXRpdmUKKyAgICAgICAqICAgICAgIHdpZHRocyBhdCBzb21lIGJsZW5kcy4gIEZvciBleGFtcGxlLCBzZWUgYSBsaWdodCB3ZWlnaHQgb2YKKyAgICAgICAqICAgICAgIGB1JyBpbiBBU2VyaWZNTS4KKyAgICAgICAqCisgICAgICAgKi8KKyAgICAgIGlmICggYm90dG9tICkKKyAgICAgIHsKKyAgICAgICAgaGludC0+Y3NDb29yZCA9IHN0ZW1IaW50LT5tYXg7CisgICAgICAgIGhpbnQtPmZsYWdzICAgPSBDRjJfUGFpckJvdHRvbTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgaGludC0+Y3NDb29yZCA9IHN0ZW1IaW50LT5taW47CisgICAgICAgIGhpbnQtPmZsYWdzICAgPSBDRjJfUGFpclRvcDsKKyAgICAgIH0KKyAgICB9CisKKyAgICBlbHNlCisgICAgeworICAgICAgLyogbm9ybWFsIHBhaXIgKi8KKworICAgICAgaWYgKCBib3R0b20gKQorICAgICAgeworICAgICAgICBoaW50LT5jc0Nvb3JkID0gc3RlbUhpbnQtPm1pbjsKKyAgICAgICAgaGludC0+ZmxhZ3MgICA9IENGMl9QYWlyQm90dG9tOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBoaW50LT5jc0Nvb3JkID0gc3RlbUhpbnQtPm1heDsKKyAgICAgICAgaGludC0+ZmxhZ3MgICA9IENGMl9QYWlyVG9wOworICAgICAgfQorICAgIH0KKworICAgIC8qIE5vdyB0aGF0IGdob3N0IGhpbnRzIGhhdmUgYmVlbiBkZXRlY3RlZCwgYWRqdXN0IHRoaXMgZWRnZSBmb3IgICAgICAqLworICAgIC8qIGRhcmtlbmluZy4gIEJvdHRvbXMgYXJlIG5vdCBjaGFuZ2VkOyB0b3BzIGFyZSBpbmNyZW1lbnRlZCBieSB0d2ljZSAqLworICAgIC8qIGBkYXJrZW5ZJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggY2YyX2hpbnRfaXNUb3AoIGhpbnQgKSApCisgICAgICBoaW50LT5jc0Nvb3JkICs9IDIgKiBmb250LT5kYXJrZW5ZOworCisgICAgaGludC0+Y3NDb29yZCArPSBoaW50T3JpZ2luOworICAgIGhpbnQtPnNjYWxlICAgID0gc2NhbGU7CisgICAgaGludC0+aW5kZXggICAgPSBpbmRleFN0ZW1IaW50OyAgIC8qIGluZGV4IGluIG9yaWdpbmFsIHN0ZW0gaGludCBhcnJheSAqLworCisgICAgLyogaWYgb3JpZ2luYWwgc3RlbSBoaW50IGhhcyBiZWVuIHVzZWQsIHVzZSB0aGUgc2FtZSBwb3NpdGlvbiAqLworICAgIGlmICggaGludC0+ZmxhZ3MgIT0gMCAmJiBzdGVtSGludC0+dXNlZCApCisgICAgeworICAgICAgaWYgKCBjZjJfaGludF9pc1RvcCggaGludCApICkKKyAgICAgICAgaGludC0+ZHNDb29yZCA9IHN0ZW1IaW50LT5tYXhEUzsKKyAgICAgIGVsc2UKKyAgICAgICAgaGludC0+ZHNDb29yZCA9IHN0ZW1IaW50LT5taW5EUzsKKworICAgICAgY2YyX2hpbnRfbG9jayggaGludCApOworICAgIH0KKyAgICBlbHNlCisgICAgICBoaW50LT5kc0Nvb3JkID0gRlRfTXVsRml4KCBoaW50LT5jc0Nvb3JkLCBzY2FsZSApOworICB9CisKKworICAvKiBpbml0aWFsaXplIGFuIGludmFsaWQgaGludCBtYXAgZWxlbWVudCAqLworICBzdGF0aWMgdm9pZAorICBjZjJfaGludF9pbml0WmVybyggQ0YyX0hpbnQgIGhpbnQgKQorICB7CisgICAgRlRfWkVSTyggaGludCApOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Jvb2wgKQorICBjZjJfaGludF9pc1ZhbGlkKCBjb25zdCBDRjJfSGludCAgaGludCApCisgIHsKKyAgICByZXR1cm4gKEZUX0Jvb2wpKCBoaW50LT5mbGFncyAhPSAwICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9Cb29sCisgIGNmMl9oaW50X2lzUGFpciggY29uc3QgQ0YyX0hpbnQgIGhpbnQgKQorICB7CisgICAgcmV0dXJuIChGVF9Cb29sKSggKCBoaW50LT5mbGFncyAgICAgICAgICAgICAgICAgICAgICAmCisgICAgICAgICAgICAgICAgICAgICAgICAoIENGMl9QYWlyQm90dG9tIHwgQ0YyX1BhaXJUb3AgKSApICE9IDAgKTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Jvb2wKKyAgY2YyX2hpbnRfaXNQYWlyVG9wKCBjb25zdCBDRjJfSGludCAgaGludCApCisgIHsKKyAgICByZXR1cm4gKEZUX0Jvb2wpKCAoIGhpbnQtPmZsYWdzICYgQ0YyX1BhaXJUb3AgKSAhPSAwICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfQm9vbCApCisgIGNmMl9oaW50X2lzVG9wKCBjb25zdCBDRjJfSGludCAgaGludCApCisgIHsKKyAgICByZXR1cm4gKEZUX0Jvb2wpKCAoIGhpbnQtPmZsYWdzICAgICAgICAgICAgICAgICAgICAmCisgICAgICAgICAgICAgICAgICAgICAgICAoIENGMl9QYWlyVG9wIHwgQ0YyX0dob3N0VG9wICkgKSAhPSAwICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfQm9vbCApCisgIGNmMl9oaW50X2lzQm90dG9tKCBjb25zdCBDRjJfSGludCAgaGludCApCisgIHsKKyAgICByZXR1cm4gKEZUX0Jvb2wpKCAoIGhpbnQtPmZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgICAmCisgICAgICAgICAgICAgICAgICAgICAgICAoIENGMl9QYWlyQm90dG9tIHwgQ0YyX0dob3N0Qm90dG9tICkgKSAhPSAwICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9Cb29sCisgIGNmMl9oaW50X2lzTG9ja2VkKCBjb25zdCBDRjJfSGludCAgaGludCApCisgIHsKKyAgICByZXR1cm4gKEZUX0Jvb2wpKCAoIGhpbnQtPmZsYWdzICYgQ0YyX0xvY2tlZCApICE9IDAgKTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Jvb2wKKyAgY2YyX2hpbnRfaXNTeW50aGV0aWMoIGNvbnN0IENGMl9IaW50ICBoaW50ICkKKyAgeworICAgIHJldHVybiAoRlRfQm9vbCkoICggaGludC0+ZmxhZ3MgJiBDRjJfU3ludGhldGljICkgIT0gMCApOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfaGludF9sb2NrKCBDRjJfSGludCAgaGludCApCisgIHsKKyAgICBoaW50LT5mbGFncyB8PSBDRjJfTG9ja2VkOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfaGludG1hcF9pbml0KCBDRjJfSGludE1hcCAgIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgIENGMl9Gb250ICAgICAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgQ0YyX0hpbnRNYXAgICBpbml0aWFsTWFwLAorICAgICAgICAgICAgICAgICAgICBDRjJfQXJyU3RhY2sgIGhpbnRNb3ZlcywKKyAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgICBzY2FsZSApCisgIHsKKyAgICBGVF9aRVJPKCBoaW50bWFwICk7CisKKyAgICAvKiBjb3B5IHBhcmFtZXRlcnMgZnJvbSBmb250IGluc3RhbmNlICovCisgICAgaGludG1hcC0+aGludGVkICAgICAgICAgPSBmb250LT5oaW50ZWQ7CisgICAgaGludG1hcC0+c2NhbGUgICAgICAgICAgPSBzY2FsZTsKKyAgICBoaW50bWFwLT5mb250ICAgICAgICAgICA9IGZvbnQ7CisgICAgaGludG1hcC0+aW5pdGlhbEhpbnRNYXAgPSBpbml0aWFsTWFwOworICAgIC8qIHdpbGwgY2xlYXIgaW4gYGNmMl9oaW50bWFwX2FkanVzdEhpbnRzJyAqLworICAgIGhpbnRtYXAtPmhpbnRNb3ZlcyAgICAgID0gaGludE1vdmVzOworICB9CisKKworICBzdGF0aWMgRlRfQm9vbAorICBjZjJfaGludG1hcF9pc1ZhbGlkKCBjb25zdCBDRjJfSGludE1hcCAgaGludG1hcCApCisgIHsKKyAgICByZXR1cm4gaGludG1hcC0+aXNWYWxpZDsKKyAgfQorCisKKyAgLyogdHJhbnNmb3JtIGNoYXJhY3RlciBzcGFjZSBjb29yZGluYXRlIHRvIGRldmljZSBzcGFjZSB1c2luZyBoaW50IG1hcCAqLworICBzdGF0aWMgQ0YyX0ZpeGVkCisgIGNmMl9oaW50bWFwX21hcCggQ0YyX0hpbnRNYXAgIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgIGNzQ29vcmQgKQorICB7CisgICAgRlRfQVNTRVJUKCBoaW50bWFwLT5pc1ZhbGlkICk7ICAvKiBtdXN0IGNhbGwgQnVpbGQgYmVmb3JlIE1hcCAqLworICAgIEZUX0FTU0VSVCggaGludG1hcC0+bGFzdEluZGV4IDwgQ0YyX01BWF9ISU5UX0VER0VTICk7CisKKyAgICBpZiAoIGhpbnRtYXAtPmNvdW50ID09IDAgfHwgISBoaW50bWFwLT5oaW50ZWQgKQorICAgIHsKKyAgICAgIC8qIHRoZXJlIGFyZSBubyBoaW50czsgdXNlIHVuaWZvcm0gc2NhbGUgYW5kIHplcm8gb2Zmc2V0ICovCisgICAgICByZXR1cm4gRlRfTXVsRml4KCBjc0Nvb3JkLCBoaW50bWFwLT5zY2FsZSApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogc3RhcnQgbGluZWFyIHNlYXJjaCBmcm9tIGxhc3QgaGl0ICovCisgICAgICBDRjJfVUludCAgaSA9IGhpbnRtYXAtPmxhc3RJbmRleDsKKworCisgICAgICAvKiBzZWFyY2ggdXAgKi8KKyAgICAgIHdoaWxlICggaSA8IGhpbnRtYXAtPmNvdW50IC0gMSAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgIGNzQ29vcmQgPj0gaGludG1hcC0+ZWRnZVtpICsgMV0uY3NDb29yZCApCisgICAgICAgIGkgKz0gMTsKKworICAgICAgLyogc2VhcmNoIGRvd24gKi8KKyAgICAgIHdoaWxlICggaSA+IDAgJiYgY3NDb29yZCA8IGhpbnRtYXAtPmVkZ2VbaV0uY3NDb29yZCApCisgICAgICAgIGkgLT0gMTsKKworICAgICAgaGludG1hcC0+bGFzdEluZGV4ID0gaTsKKworICAgICAgaWYgKCBpID09IDAgJiYgY3NDb29yZCA8IGhpbnRtYXAtPmVkZ2VbMF0uY3NDb29yZCApCisgICAgICB7CisgICAgICAgIC8qIHNwZWNpYWwgY2FzZSBmb3IgcG9pbnRzIGJlbG93IGZpcnN0IGVkZ2U6IHVzZSB1bmlmb3JtIHNjYWxlICovCisgICAgICAgIHJldHVybiBGVF9NdWxGaXgoIGNzQ29vcmQgLSBoaW50bWFwLT5lZGdlWzBdLmNzQ29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRtYXAtPnNjYWxlICkgKworICAgICAgICAgICAgICAgICBoaW50bWFwLT5lZGdlWzBdLmRzQ29vcmQ7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIE5vdGU6IGVudHJpZXMgd2l0aCBkdXBsaWNhdGUgY3NDb29yZCBhcmUgYWxsb3dlZC4KKyAgICAgICAgICogVXNlIGVkZ2VbaV0sIHRoZSBoaWdoZXN0IGVudHJ5IHdoZXJlIGNzQ29vcmQgPj0gZW50cnlbaV0uY3NDb29yZAorICAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIEZUX011bEZpeCggY3NDb29yZCAtIGhpbnRtYXAtPmVkZ2VbaV0uY3NDb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGludG1hcC0+ZWRnZVtpXS5zY2FsZSApICsKKyAgICAgICAgICAgICAgICAgaGludG1hcC0+ZWRnZVtpXS5kc0Nvb3JkOworICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgLyoKKyAgICogVGhpcyBoaW50aW5nIHBvbGljeSBtb3ZlcyBhIGhpbnQgcGFpciBpbiBkZXZpY2Ugc3BhY2Ugc28gdGhhdCBvbmUgb2YKKyAgICogaXRzIHR3byBlZGdlcyBpcyBvbiBhIGRldmljZSBwaXhlbCBib3VuZGFyeSAoaXRzIGZyYWN0aW9uYWwgcGFydCBpcworICAgKiB6ZXJvKS4gIGBjZjJfaGludG1hcF9pbnNlcnRIaW50JyBndWFyYW50ZWVzIG5vIG92ZXJsYXAgaW4gQ1MKKyAgICogc3BhY2UuICBFbnN1cmUgaGVyZSB0aGF0IHRoZXJlIGlzIG5vIG92ZXJsYXAgaW4gRFMuCisgICAqCisgICAqIEluIHRoZSBmaXJzdCBwYXNzLCBlZGdlcyBhcmUgYWRqdXN0ZWQgcmVsYXRpdmUgdG8gYWRqYWNlbnQgaGludHMuCisgICAqIFRob3NlIHRoYXQgYXJlIGJlbG93IGhhdmUgYWxyZWFkeSBiZWVuIGFkanVzdGVkLiAgVGhvc2UgdGhhdCBhcmUKKyAgICogYWJvdmUgaGF2ZSBub3QgeWV0IGJlZW4gYWRqdXN0ZWQuICBJZiBhIGhpbnQgYWJvdmUgYmxvY2tzIGFuCisgICAqIGFkanVzdG1lbnQgdG8gYW4gb3B0aW1hbCBwb3NpdGlvbiwgd2Ugd2lsbCB0cnkgYWdhaW4gaW4gYSBzZWNvbmQKKyAgICogcGFzcy4gIFRoZSBzZWNvbmQgcGFzcyBpcyB0b3AtZG93bi4KKyAgICoKKyAgICovCisKKyAgc3RhdGljIHZvaWQKKyAgY2YyX2hpbnRtYXBfYWRqdXN0SGludHMoIENGMl9IaW50TWFwICBoaW50bWFwICkKKyAgeworICAgIHNpemVfdCAgaSwgajsKKworCisgICAgY2YyX2FycnN0YWNrX2NsZWFyKCBoaW50bWFwLT5oaW50TW92ZXMgKTsgICAgICAvKiB3b3JraW5nIHN0b3JhZ2UgKi8KKworICAgIC8qCisgICAgICogRmlyc3QgcGFzcyBpcyBib3R0b20tdXAgKGZvbnQgaGludCBvcmRlcikgd2l0aG91dCBsb29rLWFoZWFkLgorICAgICAqIExvY2tlZCBlZGdlcyBhcmUgYWxyZWFkeSBhZGp1c3RlZC4KKyAgICAgKiBVbmxvY2tlZCBlZGdlcyBiZWdpbiB3aXRoIGRzQ29vcmQgZnJvbSBgaW5pdGlhbEhpbnRNYXAnLgorICAgICAqIFNhdmUgZWRnZXMgdGhhdCBhcmUgbm90IG9wdGltYWxseSBhZGp1c3RlZCBpbiBgaGludE1vdmVzJyBhcnJheSwKKyAgICAgKiBhbmQgcHJvY2VzcyB0aGVtIGluIHNlY29uZCBwYXNzLgorICAgICAqLworCisgICAgZm9yICggaSA9IDA7IGkgPCBoaW50bWFwLT5jb3VudDsgaSsrICkKKyAgICB7CisgICAgICBGVF9Cb29sICBpc1BhaXIgPSBjZjJfaGludF9pc1BhaXIoICZoaW50bWFwLT5lZGdlW2ldICk7CisKKworICAgICAgLyogaW5kZXggb2YgdXBwZXIgZWRnZSAoc2FtZSB2YWx1ZSBmb3IgZ2hvc3QgaGludCkgKi8KKyAgICAgIGogPSBpc1BhaXIgPyBpICsgMSA6IGk7CisKKyAgICAgIEZUX0FTU0VSVCggaiA8IGhpbnRtYXAtPmNvdW50ICk7CisgICAgICBGVF9BU1NFUlQoIGNmMl9oaW50X2lzVmFsaWQoICZoaW50bWFwLT5lZGdlW2ldICkgKTsKKyAgICAgIEZUX0FTU0VSVCggY2YyX2hpbnRfaXNWYWxpZCggJmhpbnRtYXAtPmVkZ2Vbal0gKSApOworICAgICAgRlRfQVNTRVJUKCBjZjJfaGludF9pc0xvY2tlZCggJmhpbnRtYXAtPmVkZ2VbaV0gKSA9PQorICAgICAgICAgICAgICAgICAgIGNmMl9oaW50X2lzTG9ja2VkKCAmaGludG1hcC0+ZWRnZVtqXSApICk7CisKKyAgICAgIGlmICggIWNmMl9oaW50X2lzTG9ja2VkKCAmaGludG1hcC0+ZWRnZVtpXSApICkKKyAgICAgIHsKKyAgICAgICAgLyogaGludCBlZGdlIGlzIG5vdCBsb2NrZWQsIHdlIGNhbiBhZGp1c3QgaXQgKi8KKyAgICAgICAgQ0YyX0ZpeGVkICBmcmFjRG93biA9IGNmMl9maXhlZEZyYWN0aW9uKCBoaW50bWFwLT5lZGdlW2ldLmRzQ29vcmQgKTsKKyAgICAgICAgQ0YyX0ZpeGVkICBmcmFjVXAgICA9IGNmMl9maXhlZEZyYWN0aW9uKCBoaW50bWFwLT5lZGdlW2pdLmRzQ29vcmQgKTsKKworICAgICAgICAvKiBjYWxjdWxhdGUgYWxsIGZvdXIgcG9zc2liaWxpdGllczsgbW92ZXMgZG93biBhcmUgbmVnYXRpdmUgKi8KKyAgICAgICAgQ0YyX0ZpeGVkICBkb3duTW92ZURvd24gPSAwIC0gZnJhY0Rvd247CisgICAgICAgIENGMl9GaXhlZCAgdXBNb3ZlRG93biAgID0gMCAtIGZyYWNVcDsKKyAgICAgICAgQ0YyX0ZpeGVkICBkb3duTW92ZVVwICAgPSBmcmFjRG93biA9PSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2YyX2ludFRvRml4ZWQoIDEgKSAtIGZyYWNEb3duOworICAgICAgICBDRjJfRml4ZWQgIHVwTW92ZVVwICAgICA9IGZyYWNVcCA9PSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2YyX2ludFRvRml4ZWQoIDEgKSAtIGZyYWNVcDsKKworICAgICAgICAvKiBzbWFsbGVzdCBtb3ZlIHVwICovCisgICAgICAgIENGMl9GaXhlZCAgbW92ZVVwICAgPSBGVF9NSU4oIGRvd25Nb3ZlVXAsIHVwTW92ZVVwICk7CisgICAgICAgIC8qIHNtYWxsZXN0IG1vdmUgZG93biAqLworICAgICAgICBDRjJfRml4ZWQgIG1vdmVEb3duID0gRlRfTUFYKCBkb3duTW92ZURvd24sIHVwTW92ZURvd24gKTsKKworICAgICAgICAvKiBmaW5hbCBhbW91bnQgdG8gbW92ZSBlZGdlIG9yIGVkZ2UgcGFpciAqLworICAgICAgICBDRjJfRml4ZWQgIG1vdmU7CisKKyAgICAgICAgQ0YyX0ZpeGVkICBkb3duTWluQ291bnRlciA9IENGMl9NSU5fQ09VTlRFUjsKKyAgICAgICAgQ0YyX0ZpeGVkICB1cE1pbkNvdW50ZXIgICA9IENGMl9NSU5fQ09VTlRFUjsKKyAgICAgICAgRlRfQm9vbCAgICBzYXZlRWRnZSAgICAgICA9IEZBTFNFOworCisKKyAgICAgICAgLyogbWluaW11bSBjb3VudGVyIGNvbnN0cmFpbnQgZG9lc24ndCBhcHBseSB3aGVuIGFkamFjZW50IGVkZ2VzICovCisgICAgICAgIC8qIGFyZSBzeW50aGV0aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiBUT0RPOiBkb2Vzbid0IHNlZW0gYSBiaWcgZWZmZWN0OyBmb3Igbm93LCByZWR1Y2UgdGhlIGNvZGUgICAgKi8KKyNpZiAwCisgICAgICAgIGlmICggaSA9PSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgY2YyX2hpbnRfaXNTeW50aGV0aWMoICZoaW50bWFwLT5lZGdlW2kgLSAxXSApICkKKyAgICAgICAgICBkb3duTWluQ291bnRlciA9IDA7CisKKyAgICAgICAgaWYgKCBqID49IGhpbnRtYXAtPmNvdW50IC0gMSAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICBjZjJfaGludF9pc1N5bnRoZXRpYyggJmhpbnRtYXAtPmVkZ2VbaiArIDFdICkgKQorICAgICAgICAgIHVwTWluQ291bnRlciA9IDA7CisjZW5kaWYKKworICAgICAgICAvKiBpcyB0aGVyZSByb29tIHRvIG1vdmUgdXA/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogdGhlcmUgaXMgaWYgd2UgYXJlIGF0IHRvcCBvZiBhcnJheSBvciB0aGUgbmV4dCBlZGdlIGlzIGF0IG9yICovCisgICAgICAgIC8qIGJleW9uZCBwcm9wb3NlZCBtb3ZlIHVwPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBpZiAoIGogPj0gaGludG1hcC0+Y291bnQgLSAxICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgaGludG1hcC0+ZWRnZVtqICsgMV0uZHNDb29yZCA+PQorICAgICAgICAgICAgICAgaGludG1hcC0+ZWRnZVtqXS5kc0Nvb3JkICsgbW92ZVVwICsgdXBNaW5Db3VudGVyICkKKyAgICAgICAgeworICAgICAgICAgIC8qIHRoZXJlIGlzIHJvb20gdG8gbW92ZSB1cDsgaXMgdGhlcmUgYWxzbyByb29tIHRvIG1vdmUgZG93bj8gKi8KKyAgICAgICAgICBpZiAoIGkgPT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgaGludG1hcC0+ZWRnZVtpIC0gMV0uZHNDb29yZCA8PQorICAgICAgICAgICAgICAgICBoaW50bWFwLT5lZGdlW2ldLmRzQ29vcmQgKyBtb3ZlRG93biAtIGRvd25NaW5Db3VudGVyICkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBtb3ZlIHNtYWxsZXIgYWJzb2x1dGUgYW1vdW50ICovCisgICAgICAgICAgICBtb3ZlID0gKCAtbW92ZURvd24gPCBtb3ZlVXAgKSA/IG1vdmVEb3duIDogbW92ZVVwOyAgLyogb3B0aW11bSAqLworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBtb3ZlID0gbW92ZVVwOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qIGlzIHRoZXJlIHJvb20gdG8gbW92ZSBkb3duPyAqLworICAgICAgICAgIGlmICggaSA9PSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICBoaW50bWFwLT5lZGdlW2kgLSAxXS5kc0Nvb3JkIDw9CisgICAgICAgICAgICAgICAgIGhpbnRtYXAtPmVkZ2VbaV0uZHNDb29yZCArIG1vdmVEb3duIC0gZG93bk1pbkNvdW50ZXIgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIG1vdmUgICAgID0gbW92ZURvd247CisgICAgICAgICAgICAvKiB0cnVlIGlmIG5vbi1vcHRpbXVtIG1vdmUgKi8KKyAgICAgICAgICAgIHNhdmVFZGdlID0gKEZUX0Jvb2wpKCBtb3ZlVXAgPCAtbW92ZURvd24gKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIG5vIHJvb20gdG8gbW92ZSBlaXRoZXIgd2F5IHdpdGhvdXQgb3ZlcmxhcHBpbmcgb3IgcmVkdWNpbmcgKi8KKyAgICAgICAgICAgIC8qIHRoZSBjb3VudGVyIHRvbyBtdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1vdmUgICAgID0gMDsKKyAgICAgICAgICAgIHNhdmVFZGdlID0gVFJVRTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBJZGVudGlmeSBub24tbW92ZXMgYW5kIG1vdmVzIGRvd24gdGhhdCBhcmVuJ3Qgb3B0aW1hbCwgYW5kIHNhdmUgKi8KKyAgICAgICAgLyogdGhlbSBmb3Igc2Vjb25kIHBhc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIERvIHRoaXMgb25seSBpZiB0aGVyZSBpcyBhbiB1bmxvY2tlZCBlZGdlIGFib3ZlICh3aGljaCBjb3VsZCAgICAqLworICAgICAgICAvKiBwb3NzaWJseSBtb3ZlKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBzYXZlRWRnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgaiA8IGhpbnRtYXAtPmNvdW50IC0gMSAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICFjZjJfaGludF9pc0xvY2tlZCggJmhpbnRtYXAtPmVkZ2VbaiArIDFdICkgKQorICAgICAgICB7CisgICAgICAgICAgQ0YyX0hpbnRNb3ZlUmVjICBzYXZlZE1vdmU7CisKKworICAgICAgICAgIHNhdmVkTW92ZS5qICAgICAgPSBqOworICAgICAgICAgIC8qIGRlc2lyZWQgYWRqdXN0bWVudCBpbiBzZWNvbmQgcGFzcyAqLworICAgICAgICAgIHNhdmVkTW92ZS5tb3ZlVXAgPSBtb3ZlVXAgLSBtb3ZlOworCisgICAgICAgICAgY2YyX2FycnN0YWNrX3B1c2goIGhpbnRtYXAtPmhpbnRNb3ZlcywgJnNhdmVkTW92ZSApOworICAgICAgICB9CisKKyAgICAgICAgLyogbW92ZSB0aGUgZWRnZShzKSAqLworICAgICAgICBoaW50bWFwLT5lZGdlW2ldLmRzQ29vcmQgKz0gbW92ZTsKKyAgICAgICAgaWYgKCBpc1BhaXIgKQorICAgICAgICAgIGhpbnRtYXAtPmVkZ2Vbal0uZHNDb29yZCArPSBtb3ZlOworICAgICAgfQorCisgICAgICAvKiBhc3NlcnQgdGhlcmUgYXJlIG5vIG92ZXJsYXBzIGluIGRldmljZSBzcGFjZSAqLworICAgICAgRlRfQVNTRVJUKCBpID09IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgICBoaW50bWFwLT5lZGdlW2kgLSAxXS5kc0Nvb3JkIDw9IGhpbnRtYXAtPmVkZ2VbaV0uZHNDb29yZCApOworICAgICAgRlRfQVNTRVJUKCBpIDwgaiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgIGhpbnRtYXAtPmVkZ2VbaV0uZHNDb29yZCA8PSBoaW50bWFwLT5lZGdlW2pdLmRzQ29vcmQgKTsKKworICAgICAgLyogYWRqdXN0IHRoZSBzY2FsZXMsIGF2b2lkaW5nIGRpdmlkZSBieSB6ZXJvICovCisgICAgICBpZiAoIGkgPiAwICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBoaW50bWFwLT5lZGdlW2ldLmNzQ29vcmQgIT0gaGludG1hcC0+ZWRnZVtpIC0gMV0uY3NDb29yZCApCisgICAgICAgICAgaGludG1hcC0+ZWRnZVtpIC0gMV0uc2NhbGUgPQorICAgICAgICAgICAgRlRfRGl2Rml4KAorICAgICAgICAgICAgICBoaW50bWFwLT5lZGdlW2ldLmRzQ29vcmQgLSBoaW50bWFwLT5lZGdlW2kgLSAxXS5kc0Nvb3JkLAorICAgICAgICAgICAgICBoaW50bWFwLT5lZGdlW2ldLmNzQ29vcmQgLSBoaW50bWFwLT5lZGdlW2kgLSAxXS5jc0Nvb3JkICk7CisgICAgICB9CisKKyAgICAgIGlmICggaXNQYWlyICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBoaW50bWFwLT5lZGdlW2pdLmNzQ29vcmQgIT0gaGludG1hcC0+ZWRnZVtqIC0gMV0uY3NDb29yZCApCisgICAgICAgICAgaGludG1hcC0+ZWRnZVtqIC0gMV0uc2NhbGUgPQorICAgICAgICAgICAgRlRfRGl2Rml4KAorICAgICAgICAgICAgICBoaW50bWFwLT5lZGdlW2pdLmRzQ29vcmQgLSBoaW50bWFwLT5lZGdlW2ogLSAxXS5kc0Nvb3JkLAorICAgICAgICAgICAgICBoaW50bWFwLT5lZGdlW2pdLmNzQ29vcmQgLSBoaW50bWFwLT5lZGdlW2ogLSAxXS5jc0Nvb3JkICk7CisKKyAgICAgICAgaSArPSAxOyAgICAgLyogc2tpcCB1cHBlciBlZGdlIG9uIG5leHQgbG9vcCAqLworICAgICAgfQorICAgIH0KKworICAgIC8qIHNlY29uZCBwYXNzIHRyaWVzIHRvIG1vdmUgbm9uLW9wdGltYWwgaGludHMgdXAsIGluIGNhc2UgdGhlcmUgaXMgKi8KKyAgICAvKiByb29tIG5vdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgZm9yICggaSA9IGNmMl9hcnJzdGFja19zaXplKCBoaW50bWFwLT5oaW50TW92ZXMgKTsgaSA+IDA7IGktLSApCisgICAgeworICAgICAgQ0YyX0hpbnRNb3ZlICBoaW50TW92ZSA9IChDRjJfSGludE1vdmUpCisgICAgICAgICAgICAgICAgICAgICAgY2YyX2FycnN0YWNrX2dldFBvaW50ZXIoIGhpbnRtYXAtPmhpbnRNb3ZlcywgaSAtIDEgKTsKKworCisgICAgICBqID0gaGludE1vdmUtPmo7CisKKyAgICAgIC8qIHRoaXMgd2FzIHRlc3RlZCBiZWZvcmUgdGhlIHB1c2gsIGFib3ZlICovCisgICAgICBGVF9BU1NFUlQoIGogPCBoaW50bWFwLT5jb3VudCAtIDEgKTsKKworICAgICAgLyogaXMgdGhlcmUgcm9vbSB0byBtb3ZlIHVwPyAqLworICAgICAgaWYgKCBoaW50bWFwLT5lZGdlW2ogKyAxXS5kc0Nvb3JkID49CisgICAgICAgICAgICAgaGludG1hcC0+ZWRnZVtqXS5kc0Nvb3JkICsgaGludE1vdmUtPm1vdmVVcCArIENGMl9NSU5fQ09VTlRFUiApCisgICAgICB7CisgICAgICAgIC8qIHRoZXJlIGlzIG1vcmUgcm9vbSBub3csIG1vdmUgZWRnZSB1cCAqLworICAgICAgICBoaW50bWFwLT5lZGdlW2pdLmRzQ29vcmQgKz0gaGludE1vdmUtPm1vdmVVcDsKKworICAgICAgICBpZiAoIGNmMl9oaW50X2lzUGFpciggJmhpbnRtYXAtPmVkZ2Vbal0gKSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9BU1NFUlQoIGogPiAwICk7CisgICAgICAgICAgaGludG1hcC0+ZWRnZVtqIC0gMV0uZHNDb29yZCArPSBoaW50TW92ZS0+bW92ZVVwOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKworICAvKiBpbnNlcnQgaGludCBlZGdlcyBpbnRvIG1hcCwgc29ydGVkIGJ5IGNzQ29vcmQgKi8KKyAgc3RhdGljIHZvaWQKKyAgY2YyX2hpbnRtYXBfaW5zZXJ0SGludCggQ0YyX0hpbnRNYXAgIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9IaW50ICAgICBib3R0b21IaW50RWRnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0hpbnQgICAgIHRvcEhpbnRFZGdlICkKKyAgeworICAgIENGMl9VSW50ICBpbmRleEluc2VydDsKKworICAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcywgdGhlbiBjaGVjayBmb3IgZWRnZSBoaW50cyAqLworICAgIEZUX0Jvb2wgICBpc1BhaXIgICAgICAgICA9IFRSVUU7CisgICAgQ0YyX0hpbnQgIGZpcnN0SGludEVkZ2UgID0gYm90dG9tSGludEVkZ2U7CisgICAgQ0YyX0hpbnQgIHNlY29uZEhpbnRFZGdlID0gdG9wSGludEVkZ2U7CisKKworICAgIC8qIG9uZSBvciBub25lIG9mIHRoZSBpbnB1dCBwYXJhbXMgbWF5IGJlIGludmFsaWQgd2hlbiBkZWFsaW5nIHdpdGggKi8KKyAgICAvKiBlZGdlIGhpbnRzOyBhdCBsZWFzdCBvbmUgZWRnZSBtdXN0IGJlIHZhbGlkICAgICAgICAgICAgICAgICAgICAgICovCisgICAgRlRfQVNTRVJUKCBjZjJfaGludF9pc1ZhbGlkKCBib3R0b21IaW50RWRnZSApIHx8CisgICAgICAgICAgICAgICBjZjJfaGludF9pc1ZhbGlkKCB0b3BIaW50RWRnZSApICAgICk7CisKKyAgICAvKiBkZXRlcm1pbmUgaG93IG1hbnkgYW5kIHdoaWNoIGVkZ2VzIHRvIGluc2VydCAqLworICAgIGlmICggIWNmMl9oaW50X2lzVmFsaWQoIGJvdHRvbUhpbnRFZGdlICkgKQorICAgIHsKKyAgICAgIC8qIGluc2VydCBvbmx5IHRoZSB0b3AgZWRnZSAqLworICAgICAgZmlyc3RIaW50RWRnZSA9IHRvcEhpbnRFZGdlOworICAgICAgaXNQYWlyICAgICAgICA9IEZBTFNFOworICAgIH0KKyAgICBlbHNlIGlmICggIWNmMl9oaW50X2lzVmFsaWQoIHRvcEhpbnRFZGdlICkgKQorICAgIHsKKyAgICAgIC8qIGluc2VydCBvbmx5IHRoZSBib3R0b20gZWRnZSAqLworICAgICAgaXNQYWlyID0gRkFMU0U7CisgICAgfQorCisgICAgLyogcGFpcmVkIGVkZ2VzIG11c3QgYmUgaW4gcHJvcGVyIG9yZGVyICovCisgICAgRlRfQVNTRVJUKCAhaXNQYWlyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgdG9wSGludEVkZ2UtPmNzQ29vcmQgPj0gYm90dG9tSGludEVkZ2UtPmNzQ29vcmQgKTsKKworICAgIC8qIGxpbmVhciBzZWFyY2ggdG8gZmluZCBpbmRleCB2YWx1ZSBvZiBpbnNlcnRpb24gcG9pbnQgKi8KKyAgICBpbmRleEluc2VydCA9IDA7CisgICAgZm9yICggOyBpbmRleEluc2VydCA8IGhpbnRtYXAtPmNvdW50OyBpbmRleEluc2VydCsrICkKKyAgICB7CisgICAgICBpZiAoIGhpbnRtYXAtPmVkZ2VbaW5kZXhJbnNlcnRdLmNzQ29vcmQgPiBmaXJzdEhpbnRFZGdlLT5jc0Nvb3JkICkKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBEaXNjYXJkIGFueSBoaW50cyB0aGF0IG92ZXJsYXAgaW4gY2hhcmFjdGVyIHNwYWNlLiAgTW9zdCBvZnRlbiwKKyAgICAgKiB0aGlzIGlzIHdoaWxlIGJ1aWxkaW5nIHRoZSBpbml0aWFsIG1hcCwgYnV0IGluIHRoZW9yeSwgaXQgY2FuIGFsc28KKyAgICAgKiBvY2N1ciBiZWNhdXNlIG9mIGRhcmtlbmluZy4KKyAgICAgKgorICAgICAqLworICAgIGlmICggaW5kZXhJbnNlcnQgPCBoaW50bWFwLT5jb3VudCApCisgICAgeworICAgICAgLyogd2UgYXJlIGluc2VydGluZyBiZWZvcmUgYW4gZXhpc3RpbmcgZWRnZTogICAgICAgICAgICAgICovCisgICAgICAvKiB2ZXJpZnkgdGhhdCBhIG5ldyBwYWlyIGRvZXMgbm90IHN0cmFkZGxlIHRoZSBuZXh0IGVkZ2UgKi8KKyAgICAgIGlmICggaXNQYWlyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIGhpbnRtYXAtPmVkZ2VbaW5kZXhJbnNlcnRdLmNzQ29vcmQgPCBzZWNvbmRIaW50RWRnZS0+Y3NDb29yZCApCisgICAgICAgIHJldHVybjsgLyogaWdub3JlIG92ZXJsYXBwaW5nIHN0ZW0gaGludCAqLworCisgICAgICAvKiB2ZXJpZnkgdGhhdCB3ZSBhcmUgbm90IGluc2VydGluZyBiZXR3ZWVuIHBhaXJlZCBlZGdlcyAqLworICAgICAgaWYgKCBjZjJfaGludF9pc1BhaXJUb3AoICZoaW50bWFwLT5lZGdlW2luZGV4SW5zZXJ0XSApICkKKyAgICAgICAgcmV0dXJuOyAvKiBpZ25vcmUgb3ZlcmxhcHBpbmcgc3RlbSBoaW50ICovCisgICAgfQorCisgICAgLyogcmVjb21wdXRlIGRldmljZSBzcGFjZSBsb2NhdGlvbnMgdXNpbmcgaW5pdGlhbCBoaW50IG1hcCAqLworICAgIGlmICggY2YyX2hpbnRtYXBfaXNWYWxpZCggaGludG1hcC0+aW5pdGlhbEhpbnRNYXAgKSAmJgorICAgICAgICAgIWNmMl9oaW50X2lzTG9ja2VkKCBmaXJzdEhpbnRFZGdlICkgICAgICAgICAgICApCisgICAgeworICAgICAgaWYgKCBpc1BhaXIgKQorICAgICAgeworICAgICAgICAvKiBVc2UgaGludCBtYXAgdG8gcG9zaXRpb24gdGhlIGNlbnRlciBvZiBzdGVtLCBhbmQgbm9taW5hbCBzY2FsZSAqLworICAgICAgICAvKiB0byBwb3NpdGlvbiB0aGUgdHdvIGVkZ2VzLiAgVGhpcyBwcmVzZXJ2ZXMgdGhlIHN0ZW0gd2lkdGguICAgICAqLworICAgICAgICBDRjJfRml4ZWQgIG1pZHBvaW50ICA9IGNmMl9oaW50bWFwX21hcCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRtYXAtPmluaXRpYWxIaW50TWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBzZWNvbmRIaW50RWRnZS0+Y3NDb29yZCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SGludEVkZ2UtPmNzQ29vcmQgKSAvIDIgKTsKKyAgICAgICAgQ0YyX0ZpeGVkICBoYWxmV2lkdGggPSBGVF9NdWxGaXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHNlY29uZEhpbnRFZGdlLT5jc0Nvb3JkIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RIaW50RWRnZS0+Y3NDb29yZCApIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRtYXAtPnNjYWxlICk7CisKKworICAgICAgICBmaXJzdEhpbnRFZGdlLT5kc0Nvb3JkICA9IG1pZHBvaW50IC0gaGFsZldpZHRoOworICAgICAgICBzZWNvbmRIaW50RWRnZS0+ZHNDb29yZCA9IG1pZHBvaW50ICsgaGFsZldpZHRoOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBmaXJzdEhpbnRFZGdlLT5kc0Nvb3JkID0gY2YyX2hpbnRtYXBfbWFwKCBoaW50bWFwLT5pbml0aWFsSGludE1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RIaW50RWRnZS0+Y3NDb29yZCApOworICAgIH0KKworICAgIC8qIGRpc2NhcmQgYW55IGhpbnRzIHRoYXQgb3ZlcmxhcCBpbiBkZXZpY2Ugc3BhY2U7IHRoaXMgY2FuIG9jY3VyICovCisgICAgLyogYmVjYXVzZSBsb2NrZWQgaGludHMgaGF2ZSBiZWVuIG1vdmVkIHRvIGFsaWduIHdpdGggYmx1ZSB6b25lcyAgKi8KKyAgICBpZiAoIGluZGV4SW5zZXJ0ID4gMCApCisgICAgeworICAgICAgLyogd2UgYXJlIGluc2VydGluZyBhZnRlciBhbiBleGlzdGluZyBlZGdlICovCisgICAgICBpZiAoIGZpcnN0SGludEVkZ2UtPmRzQ29vcmQgPCBoaW50bWFwLT5lZGdlW2luZGV4SW5zZXJ0IC0gMV0uZHNDb29yZCApCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIGluZGV4SW5zZXJ0IDwgaGludG1hcC0+Y291bnQgKQorICAgIHsKKyAgICAgIC8qIHdlIGFyZSBpbnNlcnRpbmcgYmVmb3JlIGFuIGV4aXN0aW5nIGVkZ2UgKi8KKyAgICAgIGlmICggaXNQYWlyICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBzZWNvbmRIaW50RWRnZS0+ZHNDb29yZCA+IGhpbnRtYXAtPmVkZ2VbaW5kZXhJbnNlcnRdLmRzQ29vcmQgKQorICAgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgaWYgKCBmaXJzdEhpbnRFZGdlLT5kc0Nvb3JkID4gaGludG1hcC0+ZWRnZVtpbmRleEluc2VydF0uZHNDb29yZCApCisgICAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgIH0KKworICAgIC8qIG1ha2Ugcm9vbSB0byBpbnNlcnQgKi8KKyAgICB7CisgICAgICBDRjJfSW50ICBpU3JjID0gaGludG1hcC0+Y291bnQgLSAxOworICAgICAgQ0YyX0ludCAgaURzdCA9IGlzUGFpciA/IGhpbnRtYXAtPmNvdW50ICsgMSA6IGhpbnRtYXAtPmNvdW50OworCisgICAgICBDRjJfSW50ICBjb3VudCA9IGhpbnRtYXAtPmNvdW50IC0gaW5kZXhJbnNlcnQ7CisKKworICAgICAgaWYgKCBpRHN0ID49IENGMl9NQVhfSElOVF9FREdFUyApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFNCgoICJjZjJfaGludG1hcF9pbnNlcnRIaW50OiB0b28gbWFueSBoaW50bWFwc1xuIiApKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICB3aGlsZSAoIGNvdW50LS0gKQorICAgICAgICBoaW50bWFwLT5lZGdlW2lEc3QtLV0gPSBoaW50bWFwLT5lZGdlW2lTcmMtLV07CisKKyAgICAgIC8qIGluc2VydCBmaXJzdCBlZGdlICovCisgICAgICBoaW50bWFwLT5lZGdlW2luZGV4SW5zZXJ0XSA9ICpmaXJzdEhpbnRFZGdlOyAgICAgICAgIC8qIGNvcHkgc3RydWN0ICovCisgICAgICBoaW50bWFwLT5jb3VudCArPSAxOworCisgICAgICBpZiAoIGlzUGFpciApCisgICAgICB7CisgICAgICAgIC8qIGluc2VydCBzZWNvbmQgZWRnZSAqLworICAgICAgICBoaW50bWFwLT5lZGdlW2luZGV4SW5zZXJ0ICsgMV0gPSAqc2Vjb25kSGludEVkZ2U7ICAvKiBjb3B5IHN0cnVjdCAqLworICAgICAgICBoaW50bWFwLT5jb3VudCAgICAgICAgICAgICAgICArPSAxOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybjsKKyAgfQorCisKKyAgLyoKKyAgICogQnVpbGQgYSBtYXAgZnJvbSBoaW50cyBhbmQgbWFzay4KKyAgICoKKyAgICogVGhpcyBmdW5jdGlvbiBtYXkgcmVjdXIgb25lIGxldmVsIGlmIGBoaW50bWFwLT5pbml0aWFsSGludE1hcCcgaXMgbm90IHlldAorICAgKiB2YWxpZC4KKyAgICogSWYgYGluaXRpYWxNYXAnIGlzIHRydWUsIHNpbXBseSBidWlsZCBpbml0aWFsIG1hcC4KKyAgICoKKyAgICogU3ludGhldGljIGhpbnRzIGFyZSB1c2VkIGluIHR3byB3YXlzLiAgQSBoaW50IGF0IHplcm8gaXMgaW5zZXJ0ZWQsIGlmCisgICAqIG5lZWRlZCwgaW4gdGhlIGluaXRpYWwgaGludCBtYXAsIHRvIHByZXZlbnQgdHJhbnNsYXRpb25zIGZyb20KKyAgICogcHJvcGFnYXRpbmcgYWNyb3NzIHRoZSBvcmlnaW4uICBJZiBzeW50aGV0aWMgZW0gYm94IGhpbnRzIGFyZSBlbmFibGVkCisgICAqIGZvciBpZGVvZ3JhcGhpYyBkaWN0aW9uYXJpZXMsIHRoZW4gdGhleSBhcmUgaW5zZXJ0ZWQgaW4gYWxsIGhpbnQKKyAgICogbWFwcywgaW5jbHVkaW5nIHRoZSBpbml0aWFsIG9uZS4KKyAgICoKKyAgICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmMl9oaW50bWFwX2J1aWxkKCBDRjJfSGludE1hcCAgIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgICBDRjJfQXJyU3RhY2sgIGhTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgQ0YyX0FyclN0YWNrICB2U3RlbUhpbnRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgIENGMl9IaW50TWFzayAgaGludE1hc2ssCisgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgIGhpbnRPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgIGluaXRpYWxNYXAgKQorICB7CisgICAgRlRfQnl0ZSogIG1hc2tQdHI7CisJRlRfQnl0ZSogIG1hc2tFbmRQdHI7CS8vIGFkZCBieSBYaWFvY2h1YW5fTGl1CisKKyAgICBDRjJfRm9udCAgICAgICAgIGZvbnQgPSBoaW50bWFwLT5mb250OworICAgIENGMl9IaW50TWFza1JlYyAgdGVtcEhpbnRNYXNrOworCisgICAgc2l6ZV90ICAgYml0Q291bnQsIGk7CisgICAgRlRfQnl0ZSAgbWFza0J5dGU7CisKKworICAgIC8qIGNoZWNrIHdoZXRoZXIgaW5pdGlhbCBtYXAgaXMgY29uc3RydWN0ZWQgKi8KKyAgICBpZiAoICFpbml0aWFsTWFwICYmICFjZjJfaGludG1hcF9pc1ZhbGlkKCBoaW50bWFwLT5pbml0aWFsSGludE1hcCApICkKKyAgICB7CisgICAgICAvKiBtYWtlIHJlY3Vyc2l2ZSBjYWxsIHdpdGggaW5pdGlhbEhpbnRNYXAgYW5kIHRlbXBvcmFyeSBtYXNrOyAqLworICAgICAgLyogdGVtcG9yYXJ5IG1hc2sgd2lsbCBnZXQgYWxsIGJpdHMgc2V0LCBiZWxvdyAqLworICAgICAgY2YyX2hpbnRtYXNrX2luaXQoICZ0ZW1wSGludE1hc2ssIGhpbnRNYXNrLT5lcnJvciApOworICAgICAgY2YyX2hpbnRtYXBfYnVpbGQoIGhpbnRtYXAtPmluaXRpYWxIaW50TWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZW1wSGludE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgaGludE9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFICk7CisgICAgfQorCisgICAgaWYgKCAhY2YyX2hpbnRtYXNrX2lzVmFsaWQoIGhpbnRNYXNrICkgKQorICAgIHsKKyAgICAgIC8qIHdpdGhvdXQgYSBoaW50IG1hc2ssIGFzc3VtZSBhbGwgaGludHMgYXJlIGFjdGl2ZSAqLworICAgICAgY2YyX2hpbnRtYXNrX3NldEFsbCggaGludE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjZjJfYXJyc3RhY2tfc2l6ZSggaFN0ZW1IaW50QXJyYXkgKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmMl9hcnJzdGFja19zaXplKCB2U3RlbUhpbnRBcnJheSApICk7CisgICAgfQorCisgICAgLyogYmVnaW4gYnkgY2xlYXJpbmcgdGhlIG1hcCAqLworICAgIGhpbnRtYXAtPmNvdW50ICAgICA9IDA7CisgICAgaGludG1hcC0+bGFzdEluZGV4ID0gMDsKKworICAgIC8qIG1ha2UgYSBjb3B5IG9mIHRoZSBoaW50IG1hc2sgc28gd2UgY2FuIG1vZGlmeSBpdCAqLworICAgIHRlbXBIaW50TWFzayA9ICpoaW50TWFzazsKKyAgICBtYXNrUHRyICAgICAgPSBjZjJfaGludG1hc2tfZ2V0TWFza1B0ciggJnRlbXBIaW50TWFzayApOworCW1hc2tFbmRQdHIgICA9IG1hc2tQdHIgKyAoIENGMl9NQVhfSElOVFMgKyA3ICkgLyA4OworCisKKyAgICAvKiB1c2UgdGhlIGhTdGVtIGhpbnRzIG9ubHksIHdoaWNoIGFyZSBmaXJzdCBpbiB0aGUgbWFzayAqLworICAgIC8qIFRPRE86IGNvbXBhcmUgdGhpcyB0byBjZmZoaW50bWFza0dldEJpdENvdW50ICovCisgICAgYml0Q291bnQgPSBjZjJfYXJyc3RhY2tfc2l6ZSggaFN0ZW1IaW50QXJyYXkgKTsKKworICAgIC8qIHN5bnRoZXRpYyBlbWJveCBoaW50cyBnZXQgaGlnaGVzdCBwcmlvcml0eSAqLworICAgIGlmICggZm9udC0+Ymx1ZXMuZG9FbUJveEhpbnRzICkKKyAgICB7CisgICAgICBDRjJfSGludFJlYyAgZHVtbXk7CisKKworICAgICAgY2YyX2hpbnRfaW5pdFplcm8oICZkdW1teSApOyAgIC8qIGludmFsaWQgaGludCBtYXAgZWxlbWVudCAqLworCisgICAgICAvKiBnaG9zdCBib3R0b20gKi8KKyAgICAgIGNmMl9oaW50bWFwX2luc2VydEhpbnQoIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9udC0+Ymx1ZXMuZW1Cb3hCb3R0b21FZGdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR1bW15ICk7CisgICAgICAvKiBnaG9zdCB0b3AgKi8KKyAgICAgIGNmMl9oaW50bWFwX2luc2VydEhpbnQoIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9udC0+Ymx1ZXMuZW1Cb3hUb3BFZGdlICk7CisgICAgfQorCisgICAgLyogaW5zZXJ0IGhpbnRzIGNhcHR1cmVkIGJ5IGEgYmx1ZSB6b25lIG9yIGFscmVhZHkgbG9ja2VkIChoaWdoZXIgKi8KKyAgICAvKiBwcmlvcml0eSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGZvciAoIGkgPSAwLCBtYXNrQnl0ZSA9IDB4ODA7IGkgPCBiaXRDb3VudDsgaSsrICkKKyAgICB7CisgICAgICBpZiAoIG1hc2tCeXRlICYgKm1hc2tQdHIgKQorICAgICAgeworICAgICAgICAvKiBleHBhbmQgU3RlbUhpbnQgaW50byB0d28gYENGMl9IaW50JyBlbGVtZW50cyAqLworICAgICAgICBDRjJfSGludFJlYyAgYm90dG9tSGludEVkZ2UsIHRvcEhpbnRFZGdlOworCisKKyAgICAgICAgY2YyX2hpbnRfaW5pdCggJmJvdHRvbUhpbnRFZGdlLAorICAgICAgICAgICAgICAgICAgICAgICBoU3RlbUhpbnRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGludE9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgaGludG1hcC0+c2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgLyogYm90dG9tICovICk7CisgICAgICAgIGNmMl9oaW50X2luaXQoICZ0b3BIaW50RWRnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaFN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgIGksCisgICAgICAgICAgICAgICAgICAgICAgIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgIGhpbnRPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgIGhpbnRtYXAtPnNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSAvKiB0b3AgKi8gKTsKKworICAgICAgICBpZiAoIGNmMl9oaW50X2lzTG9ja2VkKCAmYm90dG9tSGludEVkZ2UgKSB8fAorICAgICAgICAgICAgIGNmMl9oaW50X2lzTG9ja2VkKCAmdG9wSGludEVkZ2UgKSAgICB8fAorICAgICAgICAgICAgIGNmMl9ibHVlc19jYXB0dXJlKCAmZm9udC0+Ymx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZib3R0b21IaW50RWRnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRvcEhpbnRFZGdlICkgICApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBpbnNlcnQgY2FwdHVyZWQgaGludCBpbnRvIG1hcCAqLworICAgICAgICAgIGNmMl9oaW50bWFwX2luc2VydEhpbnQoIGhpbnRtYXAsICZib3R0b21IaW50RWRnZSwgJnRvcEhpbnRFZGdlICk7CisKKyAgICAgICAgICAqbWFza1B0ciAmPSB+bWFza0J5dGU7ICAgICAgLyogdHVybiBvZmYgdGhlIGJpdCBmb3IgdGhpcyBoaW50ICovCisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCAoIGkgJiA3ICkgPT0gNyApCisgICAgICB7CisgICAgICAgIC8qIG1vdmUgdG8gbmV4dCBtYXNrIGJ5dGUgKi8KKyAgICAgICAgbWFza1B0cisrOworCQlpZiAobWFza0VuZFB0ciA+PSBtYXNrRW5kUHRyKQorCQl7CisJCQlicmVhazsKKwkJfQorCQkKKyAgICAgICAgbWFza0J5dGUgPSAweDgwOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBtYXNrQnl0ZSA+Pj0gMTsKKyAgICB9CisKKyAgICAvKiBpbml0aWFsIGhpbnQgbWFwIGluY2x1ZGVzIG9ubHkgY2FwdHVyZWQgaGludHMgcGx1cyBtYXliZSBvbmUgYXQgMCAqLworCisgICAgLyoKKyAgICAgKiBUT0RPOiBUaGVyZSBpcyBhIHByb2JsZW0gaGVyZSBiZWNhdXNlIHdlIGFyZSB0cnlpbmcgdG8gYnVpbGQgYQorICAgICAqICAgICAgIHNpbmdsZSBoaW50IG1hcCBjb250YWluaW5nIGFsbCBjYXB0dXJlZCBoaW50cy4gIEl0IGlzCisgICAgICogICAgICAgcG9zc2libGUgZm9yIHRoZXJlIHRvIGJlIGNvbmZsaWN0cyBiZXR3ZWVuIGNhcHR1cmVkIGhpbnRzLAorICAgICAqICAgICAgIGVpdGhlciBiZWNhdXNlIG9mIGRhcmtlbmluZyBvciBiZWNhdXNlIHRoZSBoaW50cyBhcmUgaW4KKyAgICAgKiAgICAgICBzZXBhcmF0ZSBoaW50IHpvbmVzICh3ZSBhcmUgaWdub3JpbmcgaGludCB6b25lcyBmb3IgdGhlCisgICAgICogICAgICAgaW5pdGlhbCBtYXApLiAgQW4gZXhhbXBsZSBvZiB0aGUgbGF0dGVyIGlzIE1pbmlvblByby1SZWd1bGFyCisgICAgICogICAgICAgdjIuMDMwIGdseXBoIDg4MyAoR3JlZWsgQ2FwaXRhbCBBbHBoYSB3aXRoIFBzaWxpKSBhdCAxNXBwZW0uCisgICAgICogICAgICAgQSBzdGVtIGhpbnQgZm9yIHRoZSBwc2lsaSBjb25mbGljdHMgd2l0aCB0aGUgdG9wIGVkZ2UgaGludAorICAgICAqICAgICAgIGZvciB0aGUgYmFzZSBjaGFyYWN0ZXIuICBUaGUgc3RlbSBoaW50IGdldHMgcHJpb3JpdHkgYmVjYXVzZQorICAgICAqICAgICAgIG9mIGl0cyBzb3J0IG9yZGVyLiAgSW4gZ2x5cGggODg0IChHcmVlayBDYXBpdGFsIEFscGhhIHdpdGgKKyAgICAgKiAgICAgICBQc2lsaSBhbmQgT3hpYSksIHRoZSB0b3Agb2YgdGhlIGJhc2UgY2hhcmFjdGVyIGdldHMgYSBzdGVtCisgICAgICogICAgICAgaGludCwgYW5kIHRoZSBwc2lsaSBkb2VzIG5vdC4gIFRoaXMgY3JlYXRlcyBkaWZmZXJlbnQgaW5pdGlhbAorICAgICAqICAgICAgIG1hcHMgZm9yIHRoZSB0d28gZ2x5cGhzIHJlc3VsdGluZyBpbiBkaWZmZXJlbnQgcmVuZGVyaW5ncyBvZgorICAgICAqICAgICAgIHRoZSBiYXNlIGNoYXJhY3Rlci4gIFdpbGwgcHJvYmFibHkgZGVmZXIgdGhpcyBlaXRoZXIgYXMgbm90CisgICAgICogICAgICAgd29ydGggdGhlIGNvc3Qgb3IgYXMgYSBmb250IGJ1Zy4gIEkgZG9uJ3QgdGhpbmsgdGhlcmUgaXMgYW55CisgICAgICogICAgICAgZ29vZCByZWFzb24gZm9yIGFuIGFjY2VudCB0byBiZSBjYXB0dXJlZCBieSBhbiBhbGlnbm1lbnQKKyAgICAgKiAgICAgICB6b25lLiAgLWRhcm5vbGQgMi8xMi8xMAorICAgICAqLworCisgICAgaWYgKCBpbml0aWFsTWFwICkKKyAgICB7CisgICAgICAvKiBBcHBseSBhIGhldXJpc3RpYyB0aGF0IGluc2VydHMgYSBwb2ludCBmb3IgKDAsMCksIHVubGVzcyBpdCdzICAgICAqLworICAgICAgLyogYWxyZWFkeSBjb3ZlcmVkIGJ5IGEgbWFwcGluZy4gIFRoaXMgbG9ja3MgdGhlIGJhc2VsaW5lIGZvciBnbHlwaHMgKi8KKyAgICAgIC8qIHRoYXQgaGF2ZSBubyBiYXNlbGluZSBoaW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIGlmICggaGludG1hcC0+Y291bnQgPT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgIGhpbnRtYXAtPmVkZ2VbMF0uY3NDb29yZCA+IDAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICBoaW50bWFwLT5lZGdlW2hpbnRtYXAtPmNvdW50IC0gMV0uY3NDb29yZCA8IDAgKQorICAgICAgeworICAgICAgICAvKiBhbGwgZWRnZXMgYXJlIGFib3ZlIDAgb3IgYWxsIGVkZ2VzIGFyZSBiZWxvdyAwOyAqLworICAgICAgICAvKiBjb25zdHJ1Y3QgYSBsb2NrZWQgZWRnZSBoaW50IGF0IDAgICAgICAgICAgICAgICAqLworCisgICAgICAgIENGMl9IaW50UmVjICBlZGdlLCBpbnZhbGlkOworCisKKyAgICAgICAgY2YyX2hpbnRfaW5pdFplcm8oICZlZGdlICk7CisKKyAgICAgICAgZWRnZS5mbGFncyA9IENGMl9HaG9zdEJvdHRvbSB8CisgICAgICAgICAgICAgICAgICAgICBDRjJfTG9ja2VkICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgQ0YyX1N5bnRoZXRpYzsKKyAgICAgICAgZWRnZS5zY2FsZSA9IGhpbnRtYXAtPnNjYWxlOworCisgICAgICAgIGNmMl9oaW50X2luaXRaZXJvKCAmaW52YWxpZCApOworICAgICAgICBjZjJfaGludG1hcF9pbnNlcnRIaW50KCBoaW50bWFwLCAmZWRnZSwgJmludmFsaWQgKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIGluc2VydCByZW1haW5pbmcgaGludHMgKi8KKworICAgICAgbWFza1B0ciA9IGNmMl9oaW50bWFza19nZXRNYXNrUHRyKCAmdGVtcEhpbnRNYXNrICk7CisJICBtYXNrRW5kUHRyICAgPSBtYXNrUHRyICsgKCBDRjJfTUFYX0hJTlRTICsgNyApIC8gODsKKworICAgICAgZm9yICggaSA9IDAsIG1hc2tCeXRlID0gMHg4MDsgaSA8IGJpdENvdW50OyBpKysgKQorICAgICAgeworICAgICAgICBpZiAoIG1hc2tCeXRlICYgKm1hc2tQdHIgKQorICAgICAgICB7CisgICAgICAgICAgQ0YyX0hpbnRSZWMgIGJvdHRvbUhpbnRFZGdlLCB0b3BIaW50RWRnZTsKKworCisgICAgICAgICAgY2YyX2hpbnRfaW5pdCggJmJvdHRvbUhpbnRFZGdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoaW50T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRtYXAtPnNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgLyogYm90dG9tICovICk7CisgICAgICAgICAgY2YyX2hpbnRfaW5pdCggJnRvcEhpbnRFZGdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoaW50T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRtYXAtPnNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFIC8qIHRvcCAqLyApOworCisgICAgICAgICAgY2YyX2hpbnRtYXBfaW5zZXJ0SGludCggaGludG1hcCwgJmJvdHRvbUhpbnRFZGdlLCAmdG9wSGludEVkZ2UgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggKCBpICYgNyApID09IDcgKQorICAgICAgICB7CisgICAgICAgICAgLyogbW92ZSB0byBuZXh0IG1hc2sgYnl0ZSAqLworICAgICAgICAgIG1hc2tQdHIrKzsKKwkJICBpZiAobWFza1B0ciA+PSBtYXNrRW5kUHRyKQorCQkgIHsKKwkJCWJyZWFrOworCQkgIH0KKyAgICAgICAgICBtYXNrQnl0ZSA9IDB4ODA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgIG1hc2tCeXRlID4+PSAxOworICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogTm90ZTogVGhlIGZvbGxvd2luZyBsaW5lIGlzIGEgY29udmVuaWVudCBwbGFjZSB0byBicmVhayB3aGVuCisgICAgICogICAgICAgZGVidWdnaW5nIGhpbnRpbmcuICBFeGFtaW5lIGBoaW50bWFwLT5lZGdlJyBmb3IgdGhlIGxpc3Qgb2YKKyAgICAgKiAgICAgICBlbmFibGVkIGhpbnRzLCB0aGVuIHN0ZXAgb3ZlciB0aGUgY2FsbCB0byBzZWUgdGhlIGVmZmVjdCBvZgorICAgICAqICAgICAgIGFkanVzdG1lbnQuICBXZSBzdG9wIGhlcmUgZmlyc3Qgb24gdGhlIHJlY3Vyc2l2ZSBjYWxsIHRoYXQKKyAgICAgKiAgICAgICBjcmVhdGVzIHRoZSBpbml0aWFsIG1hcCwgYW5kIHRoZW4gb24gZWFjaCBjb3VudGVyIGdyb3VwIGFuZAorICAgICAqICAgICAgIGhpbnQgem9uZS4KKyAgICAgKi8KKworICAgIC8qIGFkanVzdCBwb3NpdGlvbnMgb2YgaGludCBlZGdlcyB0aGF0IGFyZSBub3QgbG9ja2VkIHRvIGJsdWUgem9uZXMgKi8KKyAgICBjZjJfaGludG1hcF9hZGp1c3RIaW50cyggaGludG1hcCApOworCisgICAgLyogc2F2ZSB0aGUgcG9zaXRpb24gb2YgYWxsIGhpbnRzIHRoYXQgd2VyZSB1c2VkIGluIHRoaXMgaGludCBtYXA7ICovCisgICAgLyogaWYgd2UgdXNlIHRoZW0gYWdhaW4sIHdlJ2xsIGxvY2F0ZSB0aGVtIGluIHRoZSBzYW1lIHBvc2l0aW9uICAgICovCisgICAgaWYgKCAhaW5pdGlhbE1hcCApCisgICAgeworICAgICAgZm9yICggaSA9IDA7IGkgPCBoaW50bWFwLT5jb3VudDsgaSsrICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCAhY2YyX2hpbnRfaXNTeW50aGV0aWMoICZoaW50bWFwLT5lZGdlW2ldICkgKQorICAgICAgICB7CisgICAgICAgICAgLyogTm90ZTogaW5jbHVkZSBib3RoIHZhbGlkIGFuZCBpbnZhbGlkIGVkZ2VzICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiBOb3RlOiB0b3AgYW5kIGJvdHRvbSBlZGdlcyBhcmUgY29waWVkIGJhY2sgc2VwYXJhdGVseSAqLworICAgICAgICAgIENGMl9TdGVtSGludCAgc3RlbWhpbnQgPSAoQ0YyX1N0ZW1IaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICBjZjJfYXJyc3RhY2tfZ2V0UG9pbnRlciggaFN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50bWFwLT5lZGdlW2ldLmluZGV4ICk7CisKKworICAgICAgICAgIGlmICggY2YyX2hpbnRfaXNUb3AoICZoaW50bWFwLT5lZGdlW2ldICkgKQorICAgICAgICAgICAgc3RlbWhpbnQtPm1heERTID0gaGludG1hcC0+ZWRnZVtpXS5kc0Nvb3JkOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0ZW1oaW50LT5taW5EUyA9IGhpbnRtYXAtPmVkZ2VbaV0uZHNDb29yZDsKKworICAgICAgICAgIHN0ZW1oaW50LT51c2VkID0gVFJVRTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8qIGhpbnQgbWFwIGlzIHJlYWR5IHRvIHVzZSAqLworICAgIGhpbnRtYXAtPmlzVmFsaWQgPSBUUlVFOworCisgICAgLyogcmVtZW1iZXIgdGhpcyBtYXNrIGhhcyBiZWVuIHVzZWQgKi8KKyAgICBjZjJfaGludG1hc2tfc2V0TmV3KCBoaW50TWFzaywgRkFMU0UgKTsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2dseXBocGF0aF9pbml0KCBDRjJfR2x5cGhQYXRoICAgICAgICAgZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgIENGMl9Gb250ICAgICAgICAgICAgICBmb250LAorICAgICAgICAgICAgICAgICAgICAgIENGMl9PdXRsaW5lQ2FsbGJhY2tzICBjYWxsYmFja3MsCisgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgICAgICAgICAgIHNjYWxlWSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBDRjJfRml4ZWQgIGhTaGlmdCwgKi8KKyAgICAgICAgICAgICAgICAgICAgICBDRjJfQXJyU3RhY2sgICAgICAgICAgaFN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgQ0YyX0FyclN0YWNrICAgICAgICAgIHZTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgIENGMl9IaW50TWFzayAgICAgICAgICBoaW50TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICAgICAgICAgaGludE9yaWdpblksCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0YyX0JsdWVzICAgICAgIGJsdWVzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogICAgICBmcmFjdGlvbmFsVHJhbnNsYXRpb24gKQorICB7CisgICAgRlRfWkVSTyggZ2x5cGhwYXRoICk7CisKKyAgICBnbHlwaHBhdGgtPmZvbnQgICAgICA9IGZvbnQ7CisgICAgZ2x5cGhwYXRoLT5jYWxsYmFja3MgPSBjYWxsYmFja3M7CisKKyAgICBjZjJfYXJyc3RhY2tfaW5pdCggJmdseXBocGF0aC0+aGludE1vdmVzLAorICAgICAgICAgICAgICAgICAgICAgICBmb250LT5tZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICZmb250LT5lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggQ0YyX0hpbnRNb3ZlUmVjICkgKTsKKworICAgIGNmMl9oaW50bWFwX2luaXQoICZnbHlwaHBhdGgtPmluaXRpYWxIaW50TWFwLAorICAgICAgICAgICAgICAgICAgICAgIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgJmdseXBocGF0aC0+aW5pdGlhbEhpbnRNYXAsCisgICAgICAgICAgICAgICAgICAgICAgJmdseXBocGF0aC0+aGludE1vdmVzLAorICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWSApOworICAgIGNmMl9oaW50bWFwX2luaXQoICZnbHlwaHBhdGgtPmZpcnN0SGludE1hcCwKKyAgICAgICAgICAgICAgICAgICAgICBmb250LAorICAgICAgICAgICAgICAgICAgICAgICZnbHlwaHBhdGgtPmluaXRpYWxIaW50TWFwLAorICAgICAgICAgICAgICAgICAgICAgICZnbHlwaHBhdGgtPmhpbnRNb3ZlcywKKyAgICAgICAgICAgICAgICAgICAgICBzY2FsZVkgKTsKKyAgICBjZjJfaGludG1hcF9pbml0KCAmZ2x5cGhwYXRoLT5oaW50TWFwLAorICAgICAgICAgICAgICAgICAgICAgIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgJmdseXBocGF0aC0+aW5pdGlhbEhpbnRNYXAsCisgICAgICAgICAgICAgICAgICAgICAgJmdseXBocGF0aC0+aGludE1vdmVzLAorICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWSApOworCisgICAgZ2x5cGhwYXRoLT5zY2FsZVggPSBmb250LT5pbm5lclRyYW5zZm9ybS5hOworICAgIGdseXBocGF0aC0+c2NhbGVDID0gZm9udC0+aW5uZXJUcmFuc2Zvcm0uYzsKKyAgICBnbHlwaHBhdGgtPnNjYWxlWSA9IGZvbnQtPmlubmVyVHJhbnNmb3JtLmQ7CisKKyAgICBnbHlwaHBhdGgtPmZyYWN0aW9uYWxUcmFuc2xhdGlvbiA9ICpmcmFjdGlvbmFsVHJhbnNsYXRpb247CisKKyNpZiAwCisgICAgZ2x5cGhwYXRoLT5oU2hpZnQgPSBoU2hpZnQ7ICAgICAgIC8qIGZvciBmYXV4aW5nICovCisjZW5kaWYKKworICAgIGdseXBocGF0aC0+aFN0ZW1IaW50QXJyYXkgPSBoU3RlbUhpbnRBcnJheTsKKyAgICBnbHlwaHBhdGgtPnZTdGVtSGludEFycmF5ID0gdlN0ZW1IaW50QXJyYXk7CisgICAgZ2x5cGhwYXRoLT5oaW50TWFzayAgICAgICA9IGhpbnRNYXNrOyAgICAgIC8qIHB0ciB0byBjdXJyZW50IG1hc2sgKi8KKyAgICBnbHlwaHBhdGgtPmhpbnRPcmlnaW5ZICAgID0gaGludE9yaWdpblk7CisgICAgZ2x5cGhwYXRoLT5ibHVlcyAgICAgICAgICA9IGJsdWVzOworICAgIGdseXBocGF0aC0+ZGFya2VuICAgICAgICAgPSBmb250LT5kYXJrZW5lZDsgLyogVE9ETzogc2hvdWxkIHdlIG1ha2UgY29waWVzPyAqLworICAgIGdseXBocGF0aC0+eE9mZnNldCAgICAgICAgPSBmb250LT5kYXJrZW5YOworICAgIGdseXBocGF0aC0+eU9mZnNldCAgICAgICAgPSBmb250LT5kYXJrZW5ZOworICAgIGdseXBocGF0aC0+bWl0ZXJMaW1pdCAgICAgPSAyICogRlRfTUFYKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmMl9maXhlZEFicyggZ2x5cGhwYXRoLT54T2Zmc2V0ICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2YyX2ZpeGVkQWJzKCBnbHlwaHBhdGgtPnlPZmZzZXQgKSApOworCisgICAgLyogLjEgY2hhcmFjdGVyIHNwYWNlIHVuaXQgKi8KKyAgICBnbHlwaHBhdGgtPnNuYXBUaHJlc2hvbGQgPSBjZjJfZmxvYXRUb0ZpeGVkKCAwLjFmICk7CisKKyAgICBnbHlwaHBhdGgtPm1vdmVJc1BlbmRpbmcgPSBUUlVFOworICAgIGdseXBocGF0aC0+cGF0aElzT3BlbiAgICA9IEZBTFNFOworICAgIGdseXBocGF0aC0+ZWxlbUlzUXVldWVkICA9IEZBTFNFOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfZ2x5cGhwYXRoX2ZpbmFsaXplKCBDRjJfR2x5cGhQYXRoICBnbHlwaHBhdGggKQorICB7CisgICAgY2YyX2FycnN0YWNrX2ZpbmFsaXplKCAmZ2x5cGhwYXRoLT5oaW50TW92ZXMgKTsKKyAgfQorCisKKyAgLyoKKyAgICogSGludCBwb2ludCBpbiB5LWRpcmVjdGlvbiBhbmQgYXBwbHkgb3V0ZXJUcmFuc2Zvcm0uCisgICAqIElucHV0IGBjdXJyZW50JyBoaW50IG1hcCAod2hpY2ggaXMgYWN0dWFsbHkgZGVsYXllZCBieSBvbmUgZWxlbWVudCkuCisgICAqIElucHV0IHgseSBwb2ludCBpbiBDaGFyYWN0ZXIgU3BhY2UuCisgICAqIE91dHB1dCB4LHkgcG9pbnQgaW4gRGV2aWNlIFNwYWNlLCBpbmNsdWRpbmcgdHJhbnNsYXRpb24uCisgICAqLworICBzdGF0aWMgdm9pZAorICBjZjJfZ2x5cGhwYXRoX2hpbnRQb2ludCggQ0YyX0dseXBoUGF0aCAgZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0hpbnRNYXAgICAgaGludG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogICAgIHBwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB5ICkKKyAgeworICAgIEZUX1ZlY3RvciAgcHQ7ICAgLyogaGludGVkIHBvaW50IGluIHVwcmlnaHQgRFMgKi8KKworCisgICAgcHQueCA9IEZUX011bEZpeCggZ2x5cGhwYXRoLT5zY2FsZVgsIHggKSArCisgICAgICAgICAgICAgRlRfTXVsRml4KCBnbHlwaHBhdGgtPnNjYWxlQywgeSApOworICAgIHB0LnkgPSBjZjJfaGludG1hcF9tYXAoIGhpbnRtYXAsIHkgKTsKKworICAgIHBwdC0+eCA9IEZUX011bEZpeCggZ2x5cGhwYXRoLT5mb250LT5vdXRlclRyYW5zZm9ybS5hLCBwdC54ICkgICArCisgICAgICAgICAgICAgICBGVF9NdWxGaXgoIGdseXBocGF0aC0+Zm9udC0+b3V0ZXJUcmFuc2Zvcm0uYywgcHQueSApICsKKyAgICAgICAgICAgICAgIGdseXBocGF0aC0+ZnJhY3Rpb25hbFRyYW5zbGF0aW9uLng7CisgICAgcHB0LT55ID0gRlRfTXVsRml4KCBnbHlwaHBhdGgtPmZvbnQtPm91dGVyVHJhbnNmb3JtLmIsIHB0LnggKSAgICsKKyAgICAgICAgICAgICAgIEZUX011bEZpeCggZ2x5cGhwYXRoLT5mb250LT5vdXRlclRyYW5zZm9ybS5kLCBwdC55ICkgKworICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5mcmFjdGlvbmFsVHJhbnNsYXRpb24ueTsKKyAgfQorCisKKyAgLyoKKyAgICogRnJvbSB0d28gbGluZSBzZWdtZW50cywgKHUxLHUyKSBhbmQgKHYxLHYyKSwgY29tcHV0ZSBhIHBvaW50IG9mCisgICAqIGludGVyc2VjdGlvbiBvbiB0aGUgY29ycmVzcG9uZGluZyBsaW5lcy4KKyAgICogUmV0dXJuIGZhbHNlIGlmIG5vIGludGVyc2VjdGlvbiBpcyBmb3VuZCwgb3IgaWYgdGhlIGludGVyc2VjdGlvbiBpcworICAgKiB0b28gZmFyIGF3YXkgZnJvbSB0aGUgZW5kcyBvZiB0aGUgbGluZSBzZWdtZW50cywgdTIgYW5kIHYxLgorICAgKgorICAgKi8KKyAgc3RhdGljIEZUX0Jvb2wKKyAgY2YyX2dseXBocGF0aF9jb21wdXRlSW50ZXJzZWN0aW9uKCBDRjJfR2x5cGhQYXRoICAgICBnbHlwaHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgdTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgdTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgdjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAgICAgICAgaW50ZXJzZWN0aW9uICkKKyAgeworICAgIC8qCisgICAgICogTGV0IGB1JyBiZSBhIHplcm8tYmFzZWQgdmVjdG9yIGZyb20gdGhlIGZpcnN0IHNlZ21lbnQsIGB2JyBmcm9tIHRoZQorICAgICAqIHNlY29uZCBzZWdtZW50LgorICAgICAqIExldCBgdyAnYmUgdGhlIHplcm8tYmFzZWQgdmVjdG9yIGZyb20gYHUxJyB0byBgdjEnLgorICAgICAqIGBwZXJwJyBpcyB0aGUgYHBlcnBlbmRpY3VsYXIgZG90IHByb2R1Y3QnOyBzZWUKKyAgICAgKiBodHRwOi8vbWF0aHdvcmxkLndvbGZyYW0uY29tL1BlcnBEb3RQcm9kdWN0Lmh0bWwuCisgICAgICogYHMnIGlzIHRoZSBwYXJhbWV0ZXIgZm9yIHRoZSBwYXJhbWV0cmljIGxpbmUgZm9yIHRoZSBmaXJzdCBzZWdtZW50CisgICAgICogKGB1JykuCisgICAgICoKKyAgICAgKiBTZWUgbm90YXRpb24gaW4KKyAgICAgKiBodHRwOi8vc29mdHN1cmZlci5jb20vQXJjaGl2ZS9hbGdvcml0aG1fMDEwNC9hbGdvcml0aG1fMDEwNEIuaHRtLgorICAgICAqIENhbGN1bGF0aW9ucyBhcmUgZG9uZSBpbiAxNi4xNiwgYnV0IG11c3QgaGFuZGxlIHRoZSBzcXVhcmluZyBvZgorICAgICAqIGxpbmUgbGVuZ3RocyBpbiBjaGFyYWN0ZXIgc3BhY2UuICBXZSBzY2FsZSBhbGwgdmVjdG9ycyBieSAxLzMyIHRvCisgICAgICogYXZvaWQgb3ZlcmZsb3cuICBUaGlzIGFsbG93cyB2YWx1ZXMgdXAgdG8gNDA5NSB0byBiZSBzcXVhcmVkLiAgVGhlCisgICAgICogc2NhbGUgZmFjdG9yIGNhbmNlbHMgaW4gdGhlIGRpdmlkZS4KKyAgICAgKgorICAgICAqIFRPRE86IHRoZSBzY2FsZSBmYWN0b3IgY291bGQgYmUgY29tcHV0ZWQgZnJvbSBVbml0c1BlckVtLgorICAgICAqCisgICAgICovCisKKyNkZWZpbmUgY2YyX3BlcnAoIGEsIGIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEZUX011bEZpeCggYS54LCBiLnkgKSAtIEZUX011bEZpeCggYS55LCBiLnggKSApCisKKyAgLyogcm91bmQgYW5kIGRpdmlkZSBieSAzMiAqLworI2RlZmluZSBDRjJfQ1NfU0NBTEUoIHggKSAgICAgICAgIFwKKyAgICAgICAgICAoICggKHgpICsgMHgxMCApID4+IDUgKQorCisgICAgRlRfVmVjdG9yICB1LCB2LCB3OyAgICAgIC8qIHNjYWxlZCB2ZWN0b3JzICovCisgICAgQ0YyX0ZpeGVkICBkZW5vbWluYXRvciwgczsKKworCisgICAgdS54ID0gQ0YyX0NTX1NDQUxFKCB1Mi0+eCAtIHUxLT54ICk7CisgICAgdS55ID0gQ0YyX0NTX1NDQUxFKCB1Mi0+eSAtIHUxLT55ICk7CisgICAgdi54ID0gQ0YyX0NTX1NDQUxFKCB2Mi0+eCAtIHYxLT54ICk7CisgICAgdi55ID0gQ0YyX0NTX1NDQUxFKCB2Mi0+eSAtIHYxLT55ICk7CisgICAgdy54ID0gQ0YyX0NTX1NDQUxFKCB2MS0+eCAtIHUxLT54ICk7CisgICAgdy55ID0gQ0YyX0NTX1NDQUxFKCB2MS0+eSAtIHUxLT55ICk7CisKKyAgICBkZW5vbWluYXRvciA9IGNmMl9wZXJwKCB1LCB2ICk7CisKKyAgICBpZiAoIGRlbm9taW5hdG9yID09IDAgKQorICAgICAgcmV0dXJuIEZBTFNFOyAgICAgICAgICAgLyogcGFyYWxsZWwgb3IgY29pbmNpZGVudCBsaW5lcyAqLworCisgICAgcyA9IEZUX0RpdkZpeCggY2YyX3BlcnAoIHcsIHYgKSwgZGVub21pbmF0b3IgKTsKKworICAgIGludGVyc2VjdGlvbi0+eCA9IHUxLT54ICsgRlRfTXVsRml4KCBzLCB1Mi0+eCAtIHUxLT54ICk7CisgICAgaW50ZXJzZWN0aW9uLT55ID0gdTEtPnkgKyBGVF9NdWxGaXgoIHMsIHUyLT55IC0gdTEtPnkgKTsKKworICAgIC8qCisgICAgICogU3BlY2lhbCBjYXNlIHNuYXBwaW5nIGZvciBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBsaW5lcy4KKyAgICAgKiBUaGlzIGNsZWFucyB1cCBpbnRlcnNlY3Rpb25zIGFuZCByZWR1Y2VzIHByb2JsZW1zIHdpdGggd2luZGluZworICAgICAqIG9yZGVyIGRldGVjdGlvbi4KKyAgICAgKiBTYW1wbGUgY2FzZSBpcyBzYmMgY2QgS296R29QcjZOLU1lZGl1bS5vdGYgMjAgMTY2ODUuCisgICAgICogTm90ZTogdGhlc2UgY2FsY3VsYXRpb25zIGFyZSBpbiBjaGFyYWN0ZXIgc3BhY2UuCisgICAgICoKKyAgICAgKi8KKworICAgIGlmICggdTEtPnggPT0gdTItPnggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICBjZjJfZml4ZWRBYnMoIGludGVyc2VjdGlvbi0+eCAtIHUxLT54ICkgPCBnbHlwaHBhdGgtPnNuYXBUaHJlc2hvbGQgKQorICAgICAgaW50ZXJzZWN0aW9uLT54ID0gdTEtPng7CisgICAgaWYgKCB1MS0+eSA9PSB1Mi0+eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIGNmMl9maXhlZEFicyggaW50ZXJzZWN0aW9uLT55IC0gdTEtPnkgKSA8IGdseXBocGF0aC0+c25hcFRocmVzaG9sZCApCisgICAgICBpbnRlcnNlY3Rpb24tPnkgPSB1MS0+eTsKKworICAgIGlmICggdjEtPnggPT0gdjItPnggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICBjZjJfZml4ZWRBYnMoIGludGVyc2VjdGlvbi0+eCAtIHYxLT54ICkgPCBnbHlwaHBhdGgtPnNuYXBUaHJlc2hvbGQgKQorICAgICAgaW50ZXJzZWN0aW9uLT54ID0gdjEtPng7CisgICAgaWYgKCB2MS0+eSA9PSB2Mi0+eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIGNmMl9maXhlZEFicyggaW50ZXJzZWN0aW9uLT55IC0gdjEtPnkgKSA8IGdseXBocGF0aC0+c25hcFRocmVzaG9sZCApCisgICAgICBpbnRlcnNlY3Rpb24tPnkgPSB2MS0+eTsKKworICAgIC8qIGxpbWl0IHRoZSBpbnRlcnNlY3Rpb24gZGlzdGFuY2UgZnJvbSBtaWRwb2ludCBvZiB1MiBhbmQgdjEgKi8KKyAgICBpZiAoIGNmMl9maXhlZEFicyggaW50ZXJzZWN0aW9uLT54IC0gKCB1Mi0+eCArIHYxLT54ICkgLyAyICkgPgorICAgICAgICAgICBnbHlwaHBhdGgtPm1pdGVyTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICBjZjJfZml4ZWRBYnMoIGludGVyc2VjdGlvbi0+eSAtICggdTItPnkgKyB2MS0+eSApIC8gMiApID4KKyAgICAgICAgICAgZ2x5cGhwYXRoLT5taXRlckxpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gVFJVRTsKKyAgfQorCisKKyAgLyoKKyAgICogUHVzaCB0aGUgY2FjaGVkIGVsZW1lbnQgKGdseXBocGF0aC0+cHJldkVsZW0qKSB0byB0aGUgb3V0bGluZQorICAgKiBjb25zdW1lci4gIFdoZW4gYSBkYXJrZW5pbmcgb2Zmc2V0IGlzIHVzZWQsIHRoZSBlbmQgcG9pbnQgb2YgdGhlCisgICAqIGNhY2hlZCBlbGVtZW50IG1heSBiZSBhZGp1c3RlZCB0byBhbiBpbnRlcnNlY3Rpb24gcG9pbnQgb3IgaXQgbWF5IGJlCisgICAqIGNvbm5lY3RlZCBieSBhIGxpbmUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudC4gIFRoaXMgY2FsY3VsYXRpb24gbXVzdAorICAgKiB1c2UgYSBIaW50TWFwIHRoYXQgd2FzIHZhbGlkIGF0IHRoZSB0aW1lIHRoZSBlbGVtZW50IHdhcyBzYXZlZC4gIEZvcgorICAgKiB0aGUgZmlyc3QgcG9pbnQgaW4gYSBzdWJwYXRoLCB0aGF0IGlzIGEgc2F2ZWQgSGludE1hcC4gIEZvciBtb3N0CisgICAqIGVsZW1lbnRzLCBpdCBqdXN0IG1lYW5zIHRoZSBjYWxsZXIgaGFzIGRlbGF5ZWQgYnVpbGRpbmcgYSBIaW50TWFwCisgICAqIGZyb20gdGhlIGN1cnJlbnQgSGludE1hc2suCisgICAqCisgICAqIFRyYW5zZm9ybSBlYWNoIHBvaW50IHdpdGggb3V0ZXJUcmFuc2Zvcm0gYW5kIGNhbGwgdGhlIG91dGxpbmUKKyAgICogY2FsbGJhY2tzLiAgVGhpcyBpcyBhIGdlbmVyYWwgM3gzIHRyYW5zZm9ybToKKyAgICoKKyAgICogICB4JyA9IGEqeCArIGMqeSArIHR4LCB5JyA9IGIqeCArIGQqeSArIHR5CisgICAqCisgICAqIGJ1dCBpdCB1c2VzIDQgZWxlbWVudHMgZnJvbSBDRjJfRm9udCBhbmQgdGhlIHRyYW5zbGF0aW9uIHBhcnQKKyAgICogZnJvbSBDRjJfR2x5cGhQYXRoLgorICAgKgorICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgY2YyX2dseXBocGF0aF9wdXNoUHJldkVsZW0oIENGMl9HbHlwaFBhdGggIGdseXBocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9IaW50TWFwICAgIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICAgICBuZXh0UDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IgICAgICBuZXh0UDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICBjbG9zZSApCisgIHsKKyAgICBDRjJfQ2FsbGJhY2tQYXJhbXNSZWMgIHBhcmFtczsKKworICAgIEZUX1ZlY3RvciogIHByZXZQMDsKKyAgICBGVF9WZWN0b3IqICBwcmV2UDE7CisKKyAgICBGVF9WZWN0b3IgIGludGVyc2VjdGlvbiAgICA9IHsgMCwgMCB9OworICAgIEZUX0Jvb2wgICAgdXNlSW50ZXJzZWN0aW9uID0gRkFMU0U7CisKKworICAgIEZUX0FTU0VSVCggZ2x5cGhwYXRoLT5wcmV2RWxlbU9wID09IENGMl9QYXRoT3BMaW5lVG8gfHwKKyAgICAgICAgICAgICAgIGdseXBocGF0aC0+cHJldkVsZW1PcCA9PSBDRjJfUGF0aE9wQ3ViZVRvICk7CisKKyAgICBpZiAoIGdseXBocGF0aC0+cHJldkVsZW1PcCA9PSBDRjJfUGF0aE9wTGluZVRvICkKKyAgICB7CisgICAgICBwcmV2UDAgPSAmZ2x5cGhwYXRoLT5wcmV2RWxlbVAwOworICAgICAgcHJldlAxID0gJmdseXBocGF0aC0+cHJldkVsZW1QMTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHByZXZQMCA9ICZnbHlwaHBhdGgtPnByZXZFbGVtUDI7CisgICAgICBwcmV2UDEgPSAmZ2x5cGhwYXRoLT5wcmV2RWxlbVAzOworICAgIH0KKworICAgIC8qIG9wdGltaXphdGlvbjogaWYgcHJldmlvdXMgYW5kIG5leHQgZWxlbWVudHMgYXJlIG9mZnNldCBieSB0aGUgc2FtZSAqLworICAgIC8qIGFtb3VudCwgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIGdhcCwgYW5kIG5vIG5lZWQgdG8gY29tcHV0ZSBhbiAgICAgICAqLworICAgIC8qIGludGVyc2VjdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggcHJldlAxLT54ICE9IG5leHRQMC0+eCB8fCBwcmV2UDEtPnkgIT0gbmV4dFAwLT55ICkKKyAgICB7CisgICAgICAvKiBwcmV2aW91cyBlbGVtZW50IGRvZXMgbm90IGpvaW4gbmV4dCBlbGVtZW50OiAgICAgICAgICAgICAqLworICAgICAgLyogYWRqdXN0IGVuZCBwb2ludCBvZiBwcmV2aW91cyBlbGVtZW50IHRvIHRoZSBpbnRlcnNlY3Rpb24gKi8KKyAgICAgIHVzZUludGVyc2VjdGlvbiA9IGNmMl9nbHlwaHBhdGhfY29tcHV0ZUludGVyc2VjdGlvbiggZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2UDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZQMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV4dFAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW50ZXJzZWN0aW9uICk7CisgICAgICBpZiAoIHVzZUludGVyc2VjdGlvbiApCisgICAgICB7CisgICAgICAgIC8qIG1vZGlmeSB0aGUgbGFzdCBwb2ludCBvZiB0aGUgY2FjaGVkIGVsZW1lbnQgKGVpdGhlciBsaW5lIG9yICovCisgICAgICAgIC8qIGN1cnZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICpwcmV2UDEgPSBpbnRlcnNlY3Rpb247CisgICAgICB9CisgICAgfQorCisgICAgcGFyYW1zLnB0MCA9IGdseXBocGF0aC0+Y3VycmVudERTOworCisgICAgc3dpdGNoKCBnbHlwaHBhdGgtPnByZXZFbGVtT3AgKQorICAgIHsKKyAgICBjYXNlIENGMl9QYXRoT3BMaW5lVG86CisgICAgICBwYXJhbXMub3AgPSBDRjJfUGF0aE9wTGluZVRvOworCisgICAgICAvKiBub3RlOiBwdDIgYW5kIHB0MyBhcmUgdW51c2VkICovCisgICAgICBjZjJfZ2x5cGhwYXRoX2hpbnRQb2ludCggZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcmFtcy5wdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5wcmV2RWxlbVAxLngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5wcmV2RWxlbVAxLnkgKTsKKworICAgICAgZ2x5cGhwYXRoLT5jYWxsYmFja3MtPmxpbmVUbyggZ2x5cGhwYXRoLT5jYWxsYmFja3MsICZwYXJhbXMgKTsKKworICAgICAgZ2x5cGhwYXRoLT5jdXJyZW50RFMgPSBwYXJhbXMucHQxOworCisgICAgICBicmVhazsKKworICAgIGNhc2UgQ0YyX1BhdGhPcEN1YmVUbzoKKyAgICAgIHBhcmFtcy5vcCA9IENGMl9QYXRoT3BDdWJlVG87CisKKyAgICAgIC8qIFRPRE86IHNob3VsZCB3ZSBpbnRlcnNlY3QgdGhlIGludGVyaW9yIGpvaW5zIChwMS1wMiBhbmQgcDItcDMpPyAqLworICAgICAgY2YyX2dseXBocGF0aF9oaW50UG9pbnQoIGdseXBocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJhbXMucHQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+cHJldkVsZW1QMS54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+cHJldkVsZW1QMS55ICk7CisgICAgICBjZjJfZ2x5cGhwYXRoX2hpbnRQb2ludCggZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcmFtcy5wdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5wcmV2RWxlbVAyLngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5wcmV2RWxlbVAyLnkgKTsKKyAgICAgIGNmMl9nbHlwaHBhdGhfaGludFBvaW50KCBnbHlwaHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyYW1zLnB0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPnByZXZFbGVtUDMueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPnByZXZFbGVtUDMueSApOworCisgICAgICBnbHlwaHBhdGgtPmNhbGxiYWNrcy0+Y3ViZVRvKCBnbHlwaHBhdGgtPmNhbGxiYWNrcywgJnBhcmFtcyApOworCisgICAgICBnbHlwaHBhdGgtPmN1cnJlbnREUyA9IHBhcmFtcy5wdDM7CisKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICggIXVzZUludGVyc2VjdGlvbiB8fCBjbG9zZSApCisgICAgeworICAgICAgLyogaW5zZXJ0IGNvbm5lY3RpbmcgbGluZSBiZXR3ZWVuIGVuZCBvZiBwcmV2aW91cyBlbGVtZW50IGFuZCBzdGFydCAqLworICAgICAgLyogb2YgY3VycmVudCBvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogbm90ZTogYXQgdGhlIGVuZCBvZiBhIHN1YnBhdGgsIHdlIG1pZ2h0IGRvIGJvdGgsIHNvIHVzZSBgbmV4dFAwJyAqLworICAgICAgLyogYmVmb3JlIHdlIGNoYW5nZSBpdCwgYmVsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICBjZjJfZ2x5cGhwYXRoX2hpbnRQb2ludCggZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcmFtcy5wdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFAwLT54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRQMC0+eSApOworCisgICAgICBpZiAoIHBhcmFtcy5wdDEueCAhPSBnbHlwaHBhdGgtPmN1cnJlbnREUy54IHx8CisgICAgICAgICAgIHBhcmFtcy5wdDEueSAhPSBnbHlwaHBhdGgtPmN1cnJlbnREUy55ICkKKyAgICAgIHsKKyAgICAgICAgLyogbGVuZ3RoIGlzIG5vbnplcm8gKi8KKyAgICAgICAgcGFyYW1zLm9wICA9IENGMl9QYXRoT3BMaW5lVG87CisgICAgICAgIHBhcmFtcy5wdDAgPSBnbHlwaHBhdGgtPmN1cnJlbnREUzsKKworICAgICAgICAvKiBub3RlOiBwdDIgYW5kIHB0MyBhcmUgdW51c2VkICovCisgICAgICAgIGdseXBocGF0aC0+Y2FsbGJhY2tzLT5saW5lVG8oIGdseXBocGF0aC0+Y2FsbGJhY2tzLCAmcGFyYW1zICk7CisKKyAgICAgICAgZ2x5cGhwYXRoLT5jdXJyZW50RFMgPSBwYXJhbXMucHQxOworICAgICAgfQorICAgIH0KKworICAgIGlmICggdXNlSW50ZXJzZWN0aW9uICkKKyAgICB7CisgICAgICAvKiByZXR1cm4gaW50ZXJzZWN0aW9uIHBvaW50IHRvIGNhbGxlciAqLworICAgICAgKm5leHRQMCA9IGludGVyc2VjdGlvbjsKKyAgICB9CisgIH0KKworCisgIC8qIHB1c2ggYSBNb3ZlVG8gZWxlbWVudCBiYXNlZCBvbiBjdXJyZW50IHBvaW50IGFuZCBvZmZzZXQgb2YgY3VycmVudCAqLworICAvKiBlbGVtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgY2YyX2dseXBocGF0aF9wdXNoTW92ZSggQ0YyX0dseXBoUGF0aCAgZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IgICAgICBzdGFydCApCisgIHsKKyAgICBDRjJfQ2FsbGJhY2tQYXJhbXNSZWMgIHBhcmFtczsKKworCisgICAgcGFyYW1zLm9wICA9IENGMl9QYXRoT3BNb3ZlVG87CisgICAgcGFyYW1zLnB0MCA9IGdseXBocGF0aC0+Y3VycmVudERTOworCisgICAgLyogVGVzdCBpZiBtb3ZlIGhhcyByZWFsbHkgaGFwcGVuZWQgeWV0OyBpdCB3b3VsZCBoYXZlIGNhbGxlZCAqLworICAgIC8qIGBjZjJfaGludG1hcF9idWlsZCcgdG8gc2V0IGBpc1ZhbGlkJy4gICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoICFjZjJfaGludG1hcF9pc1ZhbGlkKCAmZ2x5cGhwYXRoLT5oaW50TWFwICkgKQorICAgIHsKKyAgICAgIC8qIHdlIGFyZSBoZXJlIGlmZiBmaXJzdCBzdWJwYXRoIGlzIG1pc3NpbmcgYSBtb3ZldG8gb3BlcmF0b3I6ICovCisgICAgICAvKiBzeW50aGVzaXplIGZpcnN0IG1vdmVUbyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24gb2YgaGludE1hcCAqLworICAgICAgY2YyX2dseXBocGF0aF9tb3ZlVG8oIGdseXBocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPnN0YXJ0LngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5zdGFydC55ICk7CisgICAgfQorCisgICAgY2YyX2dseXBocGF0aF9oaW50UG9pbnQoIGdseXBocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBocGF0aC0+aGludE1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcmFtcy5wdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LnkgKTsKKworICAgIC8qIG5vdGU6IHB0MiBhbmQgcHQzIGFyZSB1bnVzZWQgKi8KKyAgICBnbHlwaHBhdGgtPmNhbGxiYWNrcy0+bW92ZVRvKCBnbHlwaHBhdGgtPmNhbGxiYWNrcywgJnBhcmFtcyApOworCisgICAgZ2x5cGhwYXRoLT5jdXJyZW50RFMgICAgPSBwYXJhbXMucHQxOworICAgIGdseXBocGF0aC0+b2Zmc2V0U3RhcnQwID0gc3RhcnQ7CisgIH0KKworCisgIC8qCisgICAqIEFsbCBjb29yZGluYXRlcyBhcmUgaW4gY2hhcmFjdGVyIHNwYWNlLgorICAgKiBPbiBpbnB1dCwgKHgxLCB5MSkgYW5kICh4MiwgeTIpIGdpdmUgbGluZSBzZWdtZW50LgorICAgKiBPbiBvdXRwdXQsICh4LCB5KSBnaXZlIG9mZnNldCB2ZWN0b3IuCisgICAqIFdlIHVzZSBhIHBpZWNld2lzZSBhcHByb3hpbWF0aW9uIHRvIHRyaWcgZnVuY3Rpb25zLgorICAgKgorICAgKiBUT0RPOiBPZmZzZXQgdHJ1ZSBwZXJwZW5kaWN1bGFyIGFuZCBwcm9wZXIgbGVuZ3RoCisgICAqICAgICAgIHN1cHBseSB0aGUgeS10cmFuc2xhdGlvbiBmb3IgaGludGluZyBoZXJlLCB0b28sCisgICAqICAgICAgIHRoYXQgYWRkcyB5T2Zmc2V0IHVuY29uZGl0aW9uYWxseSB0byAqeS4KKyAgICovCisgIHN0YXRpYyB2b2lkCisgIGNmMl9nbHlwaHBhdGhfY29tcHV0ZU9mZnNldCggQ0YyX0dseXBoUGF0aCAgZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgIHkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgIHkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCogICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkKiAgICAgeSApCisgIHsKKyAgICBDRjJfRml4ZWQgIGR4ID0geDIgLSB4MTsKKyAgICBDRjJfRml4ZWQgIGR5ID0geTIgLSB5MTsKKworCisgICAgLyogbm90ZTogbmVnYXRpdmUgb2Zmc2V0cyBkb24ndCB3b3JrIGhlcmU7IG5lZ2F0ZSBkZWx0YXMgdG8gY2hhbmdlICovCisgICAgLyogcXVhZHJhbnRzLCBiZWxvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBnbHlwaHBhdGgtPmZvbnQtPnJldmVyc2VXaW5kaW5nICkKKyAgICB7CisgICAgICBkeCA9IC1keDsKKyAgICAgIGR5ID0gLWR5OworICAgIH0KKworICAgICp4ID0gKnkgPSAwOworCisgICAgaWYgKCAhZ2x5cGhwYXRoLT5kYXJrZW4gKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBhZGQgbW9tZW50dW0gZm9yIHRoaXMgcGF0aCBlbGVtZW50ICovCisgICAgZ2x5cGhwYXRoLT5jYWxsYmFja3MtPndpbmRpbmdNb21lbnR1bSArPQorICAgICAgY2YyX2dldFdpbmRpbmdNb21lbnR1bSggeDEsIHkxLCB4MiwgeTIgKTsKKworICAgIC8qIG5vdGU6IGFsbG93IG1peGVkIGludGVnZXIgYW5kIGZpeGVkIG11bHRpcGxpY2F0aW9uIGhlcmUgKi8KKyAgICBpZiAoIGR4ID49IDAgKQorICAgIHsKKyAgICAgIGlmICggZHkgPj0gMCApCisgICAgICB7CisgICAgICAgIC8qIGZpcnN0IHF1YWRyYW50LCAreCAreSAqLworCisgICAgICAgIGlmICggZHggPiAyICogZHkgKQorICAgICAgICB7CisgICAgICAgICAgLyogK3ggKi8KKyAgICAgICAgICAqeCA9IDA7CisgICAgICAgICAgKnkgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCBkeSA+IDIgKiBkeCApCisgICAgICAgIHsKKyAgICAgICAgICAvKiAreSAqLworICAgICAgICAgICp4ID0gZ2x5cGhwYXRoLT54T2Zmc2V0OworICAgICAgICAgICp5ID0gZ2x5cGhwYXRoLT55T2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qICt4ICt5ICovCisgICAgICAgICAgKnggPSBGVF9NdWxGaXgoIGNmMl9mbG9hdFRvRml4ZWQoIDAuNyApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPnhPZmZzZXQgKTsKKyAgICAgICAgICAqeSA9IEZUX011bEZpeCggY2YyX2Zsb2F0VG9GaXhlZCggMS4wIC0gMC43ICksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+eU9mZnNldCApOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIGZvdXJ0aCBxdWFkcmFudCwgK3ggLXkgKi8KKworICAgICAgICBpZiAoIGR4ID4gLTIgKiBkeSApCisgICAgICAgIHsKKyAgICAgICAgICAvKiAreCAqLworICAgICAgICAgICp4ID0gMDsKKyAgICAgICAgICAqeSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIC1keSA+IDIgKiBkeCApCisgICAgICAgIHsKKyAgICAgICAgICAvKiAteSAqLworICAgICAgICAgICp4ID0gLWdseXBocGF0aC0+eE9mZnNldDsKKyAgICAgICAgICAqeSA9IGdseXBocGF0aC0+eU9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAvKiAreCAteSAqLworICAgICAgICAgICp4ID0gRlRfTXVsRml4KCBjZjJfZmxvYXRUb0ZpeGVkKCAtMC43ICksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+eE9mZnNldCApOworICAgICAgICAgICp5ID0gRlRfTXVsRml4KCBjZjJfZmxvYXRUb0ZpeGVkKCAxLjAgLSAwLjcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT55T2Zmc2V0ICk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICggZHkgPj0gMCApCisgICAgICB7CisgICAgICAgIC8qIHNlY29uZCBxdWFkcmFudCwgLXggK3kgKi8KKworICAgICAgICBpZiAoIC1keCA+IDIgKiBkeSApCisgICAgICAgIHsKKyAgICAgICAgICAvKiAteCAqLworICAgICAgICAgICp4ID0gMDsKKyAgICAgICAgICAqeSA9IDIgKiBnbHlwaHBhdGgtPnlPZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIGR5ID4gLTIgKiBkeCApCisgICAgICAgIHsKKyAgICAgICAgICAvKiAreSAqLworICAgICAgICAgICp4ID0gZ2x5cGhwYXRoLT54T2Zmc2V0OworICAgICAgICAgICp5ID0gZ2x5cGhwYXRoLT55T2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIC8qIC14ICt5ICovCisgICAgICAgICAgKnggPSBGVF9NdWxGaXgoIGNmMl9mbG9hdFRvRml4ZWQoIDAuNyApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPnhPZmZzZXQgKTsKKyAgICAgICAgICAqeSA9IEZUX011bEZpeCggY2YyX2Zsb2F0VG9GaXhlZCggMS4wICsgMC43ICksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+eU9mZnNldCApOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIHRoaXJkIHF1YWRyYW50LCAteCAteSAqLworCisgICAgICAgIGlmICggLWR4ID4gLTIgKiBkeSApCisgICAgICAgIHsKKyAgICAgICAgICAvKiAteCAqLworICAgICAgICAgICp4ID0gMDsKKyAgICAgICAgICAqeSA9IDIgKiBnbHlwaHBhdGgtPnlPZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIC1keSA+IC0yICogZHggKQorICAgICAgICB7CisgICAgICAgICAgLyogLXkgKi8KKyAgICAgICAgICAqeCA9IC1nbHlwaHBhdGgtPnhPZmZzZXQ7CisgICAgICAgICAgKnkgPSBnbHlwaHBhdGgtPnhPZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogLXggLXkgKi8KKyAgICAgICAgICAqeCA9IEZUX011bEZpeCggY2YyX2Zsb2F0VG9GaXhlZCggLTAuNyApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPnhPZmZzZXQgKTsKKyAgICAgICAgICAqeSA9IEZUX011bEZpeCggY2YyX2Zsb2F0VG9GaXhlZCggMS4wICsgMC43ICksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+eU9mZnNldCApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfZ2x5cGhwYXRoX21vdmVUbyggQ0YyX0dseXBoUGF0aCAgZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgIHkgKQorICB7CisgICAgY2YyX2dseXBocGF0aF9jbG9zZU9wZW5QYXRoKCBnbHlwaHBhdGggKTsKKworICAgIC8qIHNhdmUgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIG1vdmUgZm9yIGxhdGVyLCB3aGVuIHdlJ2xsIGtub3cgaG93IHRvICovCisgICAgLyogb2Zmc2V0IGl0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBhbHNvIHNhdmUgbGFzdCBtb3ZlIHBvaW50ICovCisgICAgZ2x5cGhwYXRoLT5jdXJyZW50Q1MueCA9IGdseXBocGF0aC0+c3RhcnQueCA9IHg7CisgICAgZ2x5cGhwYXRoLT5jdXJyZW50Q1MueSA9IGdseXBocGF0aC0+c3RhcnQueSA9IHk7CisKKyAgICBnbHlwaHBhdGgtPm1vdmVJc1BlbmRpbmcgPSBUUlVFOworCisgICAgLyogZW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBtYXAgd2l0aCBjdXJyZW50IG1hc2sgKi8KKyAgICBpZiAoICFjZjJfaGludG1hcF9pc1ZhbGlkKCAmZ2x5cGhwYXRoLT5oaW50TWFwICkgfHwKKyAgICAgICAgIGNmMl9oaW50bWFza19pc05ldyggZ2x5cGhwYXRoLT5oaW50TWFzayApICAgKQorICAgICAgY2YyX2hpbnRtYXBfYnVpbGQoICZnbHlwaHBhdGgtPmhpbnRNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5oU3RlbUhpbnRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPnZTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+aGludE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5oaW50T3JpZ2luWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSApOworCisgICAgLyogc2F2ZSBhIGNvcHkgb2YgY3VycmVudCBIaW50TWFwIHRvIHVzZSB3aGVuIGRyYXdpbmcgaW5pdGlhbCBwb2ludCAqLworICAgIGdseXBocGF0aC0+Zmlyc3RIaW50TWFwID0gZ2x5cGhwYXRoLT5oaW50TWFwOyAgICAgLyogc3RydWN0dXJlIGNvcHkgKi8KKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2dseXBocGF0aF9saW5lVG8oIENGMl9HbHlwaFBhdGggIGdseXBocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB5ICkKKyAgeworICAgIENGMl9GaXhlZCAgeE9mZnNldCwgeU9mZnNldDsKKyAgICBGVF9WZWN0b3IgIFAwLCBQMTsKKworCisgICAgLyogY2FuJ3QgY29tcHV0ZSBvZmZzZXQgb2YgemVybyBsZW5ndGggbGluZSwgc28gaWdub3JlIHRoZW0gKi8KKyAgICBpZiAoIGdseXBocGF0aC0+Y3VycmVudENTLnggPT0geCAmJiBnbHlwaHBhdGgtPmN1cnJlbnRDUy55ID09IHkgKQorICAgICAgcmV0dXJuOworCisgICAgY2YyX2dseXBocGF0aF9jb21wdXRlT2Zmc2V0KCBnbHlwaHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPmN1cnJlbnRDUy54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5jdXJyZW50Q1MueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnhPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeU9mZnNldCApOworCisgICAgLyogY29uc3RydWN0IG9mZnNldCBwb2ludHMgKi8KKyAgICBQMC54ID0gZ2x5cGhwYXRoLT5jdXJyZW50Q1MueCArIHhPZmZzZXQ7CisgICAgUDAueSA9IGdseXBocGF0aC0+Y3VycmVudENTLnkgKyB5T2Zmc2V0OworICAgIFAxLnggPSB4ICsgeE9mZnNldDsKKyAgICBQMS55ID0geSArIHlPZmZzZXQ7CisKKyAgICBpZiAoIGdseXBocGF0aC0+bW92ZUlzUGVuZGluZyApCisgICAgeworICAgICAgLyogZW1pdCBvZmZzZXQgMXN0IHBvaW50IGFzIE1vdmVUbyAqLworICAgICAgY2YyX2dseXBocGF0aF9wdXNoTW92ZSggZ2x5cGhwYXRoLCBQMCApOworCisgICAgICBnbHlwaHBhdGgtPm1vdmVJc1BlbmRpbmcgPSBGQUxTRTsgIC8qIGFkanVzdCBzdGF0ZSBtYWNoaW5lICovCisgICAgICBnbHlwaHBhdGgtPnBhdGhJc09wZW4gICAgPSBUUlVFOworCisgICAgICBnbHlwaHBhdGgtPm9mZnNldFN0YXJ0MSA9IFAxOyAgICAgICAgICAgICAgLyogcmVjb3JkIHNlY29uZCBwb2ludCAqLworICAgIH0KKworICAgIGlmICggZ2x5cGhwYXRoLT5lbGVtSXNRdWV1ZWQgKQorICAgIHsKKyAgICAgIEZUX0FTU0VSVCggY2YyX2hpbnRtYXBfaXNWYWxpZCggJmdseXBocGF0aC0+aGludE1hcCApICk7CisKKyAgICAgIGNmMl9nbHlwaHBhdGhfcHVzaFByZXZFbGVtKCBnbHlwaHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBocGF0aC0+aGludE1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UgKTsKKyAgICB9CisKKyAgICAvKiBxdWV1ZSB0aGUgY3VycmVudCBlbGVtZW50IHdpdGggb2Zmc2V0IHBvaW50cyAqLworICAgIGdseXBocGF0aC0+ZWxlbUlzUXVldWVkID0gVFJVRTsKKyAgICBnbHlwaHBhdGgtPnByZXZFbGVtT3AgICA9IENGMl9QYXRoT3BMaW5lVG87CisgICAgZ2x5cGhwYXRoLT5wcmV2RWxlbVAwICAgPSBQMDsKKyAgICBnbHlwaHBhdGgtPnByZXZFbGVtUDEgICA9IFAxOworCisgICAgLyogdXBkYXRlIGN1cnJlbnQgbWFwICovCisgICAgaWYgKCBjZjJfaGludG1hc2tfaXNOZXcoIGdseXBocGF0aC0+aGludE1hc2sgKSApCisgICAgICBjZjJfaGludG1hcF9idWlsZCggJmdseXBocGF0aC0+aGludE1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPmhTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+dlN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5oaW50TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPmhpbnRPcmlnaW5ZLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFICk7CisKKyAgICBnbHlwaHBhdGgtPmN1cnJlbnRDUy54ID0geDsgICAgIC8qIHByZS1vZmZzZXQgY3VycmVudCBwb2ludCAqLworICAgIGdseXBocGF0aC0+Y3VycmVudENTLnkgPSB5OworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfZ2x5cGhwYXRoX2N1cnZlVG8oIENGMl9HbHlwaFBhdGggIGdseXBocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB5MyApCisgIHsKKyAgICBDRjJfRml4ZWQgIHhPZmZzZXQxLCB5T2Zmc2V0MSwgeE9mZnNldDMsIHlPZmZzZXQzOworICAgIEZUX1ZlY3RvciAgUDAsIFAxLCBQMiwgUDM7CisKKworICAgIC8qIFRPRE86IGlnbm9yZSB6ZXJvIGxlbmd0aCBwb3J0aW9ucyBvZiBjdXJ2ZT8/ICovCisgICAgY2YyX2dseXBocGF0aF9jb21wdXRlT2Zmc2V0KCBnbHlwaHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPmN1cnJlbnRDUy54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5jdXJyZW50Q1MueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeE9mZnNldDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeU9mZnNldDEgKTsKKyAgICBjZjJfZ2x5cGhwYXRoX2NvbXB1dGVPZmZzZXQoIGdseXBocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnhPZmZzZXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnlPZmZzZXQzICk7CisKKyAgICAvKiBhZGQgbW9tZW50dW0gZnJvbSB0aGUgbWlkZGxlIHNlZ21lbnQgKi8KKyAgICBnbHlwaHBhdGgtPmNhbGxiYWNrcy0+d2luZGluZ01vbWVudHVtICs9CisgICAgICBjZjJfZ2V0V2luZGluZ01vbWVudHVtKCB4MSwgeTEsIHgyLCB5MiApOworCisgICAgLyogY29uc3RydWN0IG9mZnNldCBwb2ludHMgKi8KKyAgICBQMC54ID0gZ2x5cGhwYXRoLT5jdXJyZW50Q1MueCArIHhPZmZzZXQxOworICAgIFAwLnkgPSBnbHlwaHBhdGgtPmN1cnJlbnRDUy55ICsgeU9mZnNldDE7CisgICAgUDEueCA9IHgxICsgeE9mZnNldDE7CisgICAgUDEueSA9IHkxICsgeU9mZnNldDE7CisgICAgLyogbm90ZTogcHJlc2VydmUgYW5nbGUgb2YgZmluYWwgc2VnbWVudCBieSB1c2luZyBvZmZzZXQzIGF0IGJvdGggZW5kcyAqLworICAgIFAyLnggPSB4MiArIHhPZmZzZXQzOworICAgIFAyLnkgPSB5MiArIHlPZmZzZXQzOworICAgIFAzLnggPSB4MyArIHhPZmZzZXQzOworICAgIFAzLnkgPSB5MyArIHlPZmZzZXQzOworCisgICAgaWYgKCBnbHlwaHBhdGgtPm1vdmVJc1BlbmRpbmcgKQorICAgIHsKKyAgICAgIC8qIGVtaXQgb2Zmc2V0IDFzdCBwb2ludCBhcyBNb3ZlVG8gKi8KKyAgICAgIGNmMl9nbHlwaHBhdGhfcHVzaE1vdmUoIGdseXBocGF0aCwgUDAgKTsKKworICAgICAgZ2x5cGhwYXRoLT5tb3ZlSXNQZW5kaW5nID0gRkFMU0U7CisgICAgICBnbHlwaHBhdGgtPnBhdGhJc09wZW4gICAgPSBUUlVFOworCisgICAgICBnbHlwaHBhdGgtPm9mZnNldFN0YXJ0MSA9IFAxOyAgICAgICAgICAgICAgLyogcmVjb3JkIHNlY29uZCBwb2ludCAqLworICAgIH0KKworICAgIGlmICggZ2x5cGhwYXRoLT5lbGVtSXNRdWV1ZWQgKQorICAgIHsKKyAgICAgIEZUX0FTU0VSVCggY2YyX2hpbnRtYXBfaXNWYWxpZCggJmdseXBocGF0aC0+aGludE1hcCApICk7CisKKyAgICAgIGNmMl9nbHlwaHBhdGhfcHVzaFByZXZFbGVtKCBnbHlwaHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBocGF0aC0+aGludE1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UgKTsKKyAgICB9CisKKyAgICAvKiBxdWV1ZSB0aGUgY3VycmVudCBlbGVtZW50IHdpdGggb2Zmc2V0IHBvaW50cyAqLworICAgIGdseXBocGF0aC0+ZWxlbUlzUXVldWVkID0gVFJVRTsKKyAgICBnbHlwaHBhdGgtPnByZXZFbGVtT3AgICA9IENGMl9QYXRoT3BDdWJlVG87CisgICAgZ2x5cGhwYXRoLT5wcmV2RWxlbVAwICAgPSBQMDsKKyAgICBnbHlwaHBhdGgtPnByZXZFbGVtUDEgICA9IFAxOworICAgIGdseXBocGF0aC0+cHJldkVsZW1QMiAgID0gUDI7CisgICAgZ2x5cGhwYXRoLT5wcmV2RWxlbVAzICAgPSBQMzsKKworICAgIC8qIHVwZGF0ZSBjdXJyZW50IG1hcCAqLworICAgIGlmICggY2YyX2hpbnRtYXNrX2lzTmV3KCBnbHlwaHBhdGgtPmhpbnRNYXNrICkgKQorICAgICAgY2YyX2hpbnRtYXBfYnVpbGQoICZnbHlwaHBhdGgtPmhpbnRNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5oU3RlbUhpbnRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaHBhdGgtPnZTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+aGludE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5oaW50T3JpZ2luWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSApOworCisgICAgZ2x5cGhwYXRoLT5jdXJyZW50Q1MueCA9IHgzOyAgICAgICAvKiBwcmUtb2Zmc2V0IGN1cnJlbnQgcG9pbnQgKi8KKyAgICBnbHlwaHBhdGgtPmN1cnJlbnRDUy55ID0geTM7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmMl9nbHlwaHBhdGhfY2xvc2VPcGVuUGF0aCggQ0YyX0dseXBoUGF0aCAgZ2x5cGhwYXRoICkKKyAgeworICAgIGlmICggZ2x5cGhwYXRoLT5wYXRoSXNPcGVuICkKKyAgICB7CisgICAgICBGVF9BU1NFUlQoIGNmMl9oaW50bWFwX2lzVmFsaWQoICZnbHlwaHBhdGgtPmZpcnN0SGludE1hcCApICk7CisKKyAgICAgIC8qIHNpbmNlIHdlIG5lZWQgdG8gYXBwbHkgYW4gb2Zmc2V0IHRvIHRoZSBpbXBsaWNpdCBsaW5ldG8sIHdlIG1ha2UgKi8KKyAgICAgIC8qIGl0IGV4cGxpY2l0IGhlcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGNmMl9nbHlwaHBhdGhfbGluZVRvKCBnbHlwaHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhwYXRoLT5zdGFydC54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+c3RhcnQueSApOworCisgICAgICAvKiBEcmF3IHByZXZpb3VzIGVsZW1lbnQgKHRoZSBleHBsaWNpdCBMaW5lVG8gd2UganVzdCBjcmVhdGVkLCAgICAgICovCisgICAgICAvKiBhYm92ZSkgYW5kIGNvbm5lY3QgaXQgdG8gdGhlIHN0YXJ0IHBvaW50LCBidXQgd2l0aCB0aGUgb2Zmc2V0IHdlICovCisgICAgICAvKiBzYXZlZCBmcm9tIHRoZSBmaXJzdCBlbGVtZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBVc2UgdGhlIHNhdmVkIEhpbnRNYXAsIHRvby4gKi8KKyAgICAgIEZUX0FTU0VSVCggZ2x5cGhwYXRoLT5lbGVtSXNRdWV1ZWQgKTsKKworICAgICAgY2YyX2dseXBocGF0aF9wdXNoUHJldkVsZW0oIGdseXBocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2x5cGhwYXRoLT5maXJzdEhpbnRNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBocGF0aC0+b2Zmc2V0U3RhcnQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocGF0aC0+b2Zmc2V0U3RhcnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgKTsKKworICAgICAgLyogcmVzZXQgc3RhdGUgbWFjaGluZSAqLworICAgICAgZ2x5cGhwYXRoLT5tb3ZlSXNQZW5kaW5nID0gVFJVRTsKKyAgICAgIGdseXBocGF0aC0+cGF0aElzT3BlbiAgICA9IEZBTFNFOworICAgICAgZ2x5cGhwYXRoLT5lbGVtSXNRdWV1ZWQgID0gRkFMU0U7CisgICAgfQorICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJoaW50cy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyaGludHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGZhOTIyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyaGludHMuaApAQCAtMCwwICsxLDI4NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2YyaGludHMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFkb2JlJ3MgY29kZSBmb3IgaGFuZGxpbmcgQ0ZGIGhpbnRzIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvciAgICAgICAqLworLyogIG9iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkICAgICAgKi8KKy8qICBoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZSAgICovCisvKiAgdXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCAgICAqLworLyogIExJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cyAgICovCisvKiAgdG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSAgICAqLworLyogIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvciAgICAgKi8KKy8qICAiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgICAgICAgICAgICAgICovCisvKiAgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCAgICAqLworLyogIGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kICAgICAgKi8KKy8qICBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgICovCisvKiAgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgICAgICAqLworLyogIGluZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgICAgKi8KKy8qICBjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMgICAgICAgICovCisvKiAgc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgICAgICAqLworLyogIChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0ICAgKi8KKy8qICB0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzICAgICovCisvKiAgZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMgICAqLworLyogIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiAgKi8KKy8qICB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIEJ5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgICAgKi8KKy8qICBoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAgICAgICAgICAgICAgICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLCAgICAqLworLyogIGFuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19DRjJISU5UU19IX18KKyNkZWZpbmUgX19DRjJISU5UU19IX18KKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIGVudW0KKyAgeworICAgIENGMl9NQVhfSElOVFMgPSA5NiAgICAvKiBtYXhpbXVtICMgb2YgaGludHMgKi8KKyAgfTsKKworCisgIC8qCisgICAqIEEgSGludE1hc2sgb2JqZWN0IHN0b3JlcyBhIGJpdCBtYXNrIHRoYXQgc3BlY2lmaWVzIHdoaWNoIGhpbnRzIGluIHRoZQorICAgKiBjaGFyc3RyaW5nIGFyZSBhY3RpdmUgYXQgYSBnaXZlbiB0aW1lLiAgSGludHMgaW4gQ0ZGIG11c3QgYmUgZGVjbGFyZWQKKyAgICogYXQgdGhlIHN0YXJ0LCBiZWZvcmUgYW55IGRyYXdpbmcgb3BlcmF0b3JzLCB3aXRoIGhvcml6b250YWwgaGludHMKKyAgICogcHJlY2VkaW5nIHZlcnRpY2FsIGhpbnRzLiAgVGhlIEhpbnRNYXNrIGlzIG9yZGVyZWQgdGhlIHNhbWUgd2F5LCB3aXRoCisgICAqIGhvcml6b250YWwgaGludHMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgdmVydGljYWwgaGludHMuICBDbGllbnRzIGFyZQorICAgKiByZXNwb25zaWJsZSBmb3Iga25vd2luZyBob3cgbWFueSBvZiBlYWNoIHR5cGUgYXJlIHByZXNlbnQuCisgICAqCisgICAqIFRoZSBtYXhpbXVtIHRvdGFsIG51bWJlciBvZiBoaW50cyBpcyA5NiwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBDRkYKKyAgICogc3BlY2lmaWNhdGlvbi4KKyAgICoKKyAgICogQSBIaW50TWFzayBpcyBidWlsdCAwIG9yIG1vcmUgdGltZXMgd2hpbGUgaW50ZXJwcmV0aW5nIGEgY2hhcnN0cmluZywgYnkKKyAgICogdGhlIEhpbnRNYXNrIG9wZXJhdG9yLiAgVGhlcmUgaXMgb25seSBvbmUgSGludE1hc2ssIGJ1dCBpdCBpcyBidWlsdCBvcgorICAgKiByZWJ1aWx0IGVhY2ggdGltZSB0aGVyZSBpcyBhIGhpbnQgc3Vic3RpdHV0aW9uIChIaW50TWFzayBvcGVyYXRvcikgaW4KKyAgICogdGhlIGNoYXJzdHJpbmcuICBBIGRlZmF1bHQgSGludE1hc2sgd2l0aCBhbGwgYml0cyBzZXQgaXMgYnVpbHQgaWYgdGhlcmUKKyAgICogaGFzIGJlZW4gbm8gSGludE1hc2sgb3BlcmF0b3IgcHJpb3IgdG8gdGhlIGZpcnN0IGRyYXdpbmcgb3BlcmF0b3IuCisgICAqCisgICAqLworCisgIHR5cGVkZWYgc3RydWN0ICBDRjJfSGludE1hc2tSZWNfCisgIHsKKyAgICBGVF9FcnJvciogIGVycm9yOworCisgICAgRlRfQm9vbCAgaXNWYWxpZDsKKyAgICBGVF9Cb29sICBpc05ldzsKKworICAgIHNpemVfdCAgYml0Q291bnQ7CisgICAgc2l6ZV90ICBieXRlQ291bnQ7CisKKyAgICBGVF9CeXRlICBtYXNrWyggQ0YyX01BWF9ISU5UUyArIDcgKSAvIDhdOworCisgIH0gQ0YyX0hpbnRNYXNrUmVjLCAqQ0YyX0hpbnRNYXNrOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIENGMl9TdGVtSGludFJlY18KKyAgeworICAgIEZUX0Jvb2wgIHVzZWQ7ICAgICAvKiBEUyBwb3NpdGlvbnMgYXJlIHZhbGlkICAgICAgICAgKi8KKworICAgIENGMl9GaXhlZCAgbWluOyAgICAvKiBvcmlnaW5hbCBjaGFyYWN0ZXIgc3BhY2UgdmFsdWUgKi8KKyAgICBDRjJfRml4ZWQgIG1heDsKKworICAgIENGMl9GaXhlZCAgbWluRFM7ICAvKiBEUyBwb3NpdGlvbiBhZnRlciBmaXJzdCB1c2UgICAgKi8KKyAgICBDRjJfRml4ZWQgIG1heERTOworCisgIH0gQ0YyX1N0ZW1IaW50UmVjLCAqQ0YyX1N0ZW1IaW50OworCisKKyAgLyoKKyAgICogQSBIaW50TWFwIG9iamVjdCBzdG9yZXMgYSBwaWVjZXdpc2UgbGluZWFyIGZ1bmN0aW9uIGZvciBtYXBwaW5nCisgICAqIHktY29vcmRpbmF0ZXMgZnJvbSBjaGFyYWN0ZXIgc3BhY2UgdG8gZGV2aWNlIHNwYWNlLCBwcm92aWRpbmcKKyAgICogYXBwcm9wcmlhdGUgcGl4ZWwgYWxpZ25tZW50IHRvIHN0ZW0gZWRnZXMuCisgICAqCisgICAqIFRoZSBtYXAgaXMgaW1wbGVtZW50ZWQgYXMgYW4gYXJyYXkgb2YgYENGMl9IaW50JyBlbGVtZW50cywgZWFjaAorICAgKiByZXByZXNlbnRpbmcgYW4gZWRnZS4gIFdoZW4gZWRnZXMgYXJlIHBhaXJlZCwgYXMgZnJvbSBzdGVtIGhpbnRzLCB0aGUKKyAgICogYm90dG9tIGVkZ2UgbXVzdCBpbW1lZGlhdGVseSBwcmVjZWRlIHRoZSB0b3AgZWRnZSBpbiB0aGUgYXJyYXkuCisgICAqIEVsZW1lbnQgY2hhcmFjdGVyIHNwYWNlIEFORCBkZXZpY2Ugc3BhY2UgcG9zaXRpb25zIG11c3QgYm90aCBpbmNyZWFzZQorICAgKiBtb25vdG9uaWNhbGx5IGluIHRoZSBhcnJheS4gIGBDRjJfSGludCcgZWxlbWVudHMgYXJlIGFsc28gdXNlZCBhcworICAgKiBwYXJhbWV0ZXJzIHRvIGBjZjJfYmx1ZXNfY2FwdHVyZScuCisgICAqCisgICAqIFRoZSBgY2YyX2hpbnRtYXBfYnVpbGQnIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IGRyYXdpbmcKKyAgICogb3BlcmF0aW9uIChiZWdpbm5pbmcgd2l0aCBhIE1vdmUgb3BlcmF0b3IpIGFuZCBhdCBlYWNoIGhpbnQKKyAgICogc3Vic3RpdHV0aW9uIChIaW50TWFzayBvcGVyYXRvcikuCisgICAqCisgICAqIFRoZSBgY2YyX2hpbnRtYXBfbWFwJyBtZXRob2QgaXMgY2FsbGVkIHRvIHRyYW5zZm9ybSB5LWNvb3JkaW5hdGVzIGF0CisgICAqIGVhY2ggZHJhd2luZyBvcGVyYXRpb24gKG1vdmUsIGxpbmUsIGN1cnZlKS4KKyAgICoKKyAgICovCisKKyAgLyogVE9ETzogbWFrZSB0aGlzIGEgQ0YyX0FyclN0YWNrIGFuZCBhZGQgYSBkZWVwIGNvcHkgbWV0aG9kICovCisgIGVudW0KKyAgeworICAgIENGMl9NQVhfSElOVF9FREdFUyA9IENGMl9NQVhfSElOVFMgKiAyCisgIH07CisKKworICB0eXBlZGVmIHN0cnVjdCAgQ0YyX0hpbnRNYXBSZWNfCisgIHsKKyAgICBDRjJfRm9udCAgZm9udDsKKworICAgIC8qIGluaXRpYWwgbWFwIGJhc2VkIG9uIGJsdWUgem9uZXMgKi8KKyAgICBzdHJ1Y3QgQ0YyX0hpbnRNYXBSZWNfKiAgaW5pdGlhbEhpbnRNYXA7CisKKyAgICAvKiB3b3JraW5nIHN0b3JhZ2UgZm9yIDJuZCBwYXNzIGFkanVzdEhpbnRzICovCisgICAgQ0YyX0FyclN0YWNrICBoaW50TW92ZXM7CisKKyAgICBGVF9Cb29sICBpc1ZhbGlkOworICAgIEZUX0Jvb2wgIGhpbnRlZDsKKworICAgIENGMl9GaXhlZCAgc2NhbGU7CisgICAgQ0YyX1VJbnQgICBjb3VudDsKKworICAgIC8qIHN0YXJ0IHNlYXJjaCBmcm9tIHRoaXMgaW5kZXggKi8KKyAgICBDRjJfVUludCAgbGFzdEluZGV4OworCisgICAgQ0YyX0hpbnRSZWMgIGVkZ2VbQ0YyX01BWF9ISU5UX0VER0VTXTsgLyogMTkyICovCisKKyAgfSBDRjJfSGludE1hcFJlYywgKkNGMl9IaW50TWFwOworCisKKyAgRlRfTE9DQUwoIEZUX0Jvb2wgKQorICBjZjJfaGludF9pc1ZhbGlkKCBjb25zdCBDRjJfSGludCAgaGludCApOworICBGVF9MT0NBTCggRlRfQm9vbCApCisgIGNmMl9oaW50X2lzVG9wKCBjb25zdCBDRjJfSGludCAgaGludCApOworICBGVF9MT0NBTCggRlRfQm9vbCApCisgIGNmMl9oaW50X2lzQm90dG9tKCBjb25zdCBDRjJfSGludCAgaGludCApOworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9oaW50X2xvY2soIENGMl9IaW50ICBoaW50ICk7CisKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9oaW50bWFwX2luaXQoIENGMl9IaW50TWFwICAgaGludG1hcCwKKyAgICAgICAgICAgICAgICAgICAgQ0YyX0ZvbnQgICAgICBmb250LAorICAgICAgICAgICAgICAgICAgICBDRjJfSGludE1hcCAgIGluaXRpYWxNYXAsCisgICAgICAgICAgICAgICAgICAgIENGMl9BcnJTdGFjayAgaGludE1vdmVzLAorICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgIHNjYWxlICk7CisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2YyX2hpbnRtYXBfYnVpbGQoIENGMl9IaW50TWFwICAgaGludG1hcCwKKyAgICAgICAgICAgICAgICAgICAgIENGMl9BcnJTdGFjayAgaFN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICBDRjJfQXJyU3RhY2sgIHZTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgQ0YyX0hpbnRNYXNrICBoaW50TWFzaywKKyAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgaGludE9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgaW5pdGlhbE1hcCApOworCisKKyAgLyoKKyAgICogR2x5cGhQYXRoIGlzIGEgd3JhcHBlciBmb3IgZHJhd2luZyBvcGVyYXRpb25zIHRoYXQgc2NhbGVzIHRoZQorICAgKiBjb29yZGluYXRlcyBhY2NvcmRpbmcgdG8gdGhlIHJlbmRlciBtYXRyaXggYW5kIEhpbnRNYXAuICBJdCBhbHNvIHRyYWNrcworICAgKiBvcGVuIHBhdGhzIHRvIGNvbnRyb2wgQ2xvc2VQYXRoIGFuZCB0byBpbnNlcnQgTW92ZVRvIGZvciBicm9rZW4gZm9udHMuCisgICAqCisgICAqLworICB0eXBlZGVmIHN0cnVjdCAgQ0YyX0dseXBoUGF0aFJlY18KKyAgeworICAgIC8qIFRPRE86IGdhdGhlciBzb21lIG9mIHRoZXNlIGludG8gYSBoaW50aW5nIGNvbnRleHQgKi8KKworICAgIENGMl9Gb250ICAgICAgICAgICAgICBmb250OyAgICAgICAgICAgLyogZm9udCBpbnN0YW5jZSAgICAqLworICAgIENGMl9PdXRsaW5lQ2FsbGJhY2tzICBjYWxsYmFja3M7ICAgICAgLyogb3V0bGluZSBjb25zdW1lciAqLworCisKKyAgICBDRjJfSGludE1hcFJlYyAgaGludE1hcDsgICAgICAgIC8qIGN1cnJlbnQgaGludCBtYXAgICAgICAgICAgICAqLworICAgIENGMl9IaW50TWFwUmVjICBmaXJzdEhpbnRNYXA7ICAgLyogc2F2ZWQgY29weSAgICAgICAgICAgICAgICAgICovCisgICAgQ0YyX0hpbnRNYXBSZWMgIGluaXRpYWxIaW50TWFwOyAvKiBiYXNlZCBvbiBhbGwgY2FwdHVyZWQgaGludHMgKi8KKworICAgIENGMl9BcnJTdGFja1JlYyAgaGludE1vdmVzOyAgLyogbGlzdCBvZiBoaW50IG1vdmVzIGZvciAybmQgcGFzcyAqLworCisgICAgQ0YyX0ZpeGVkICBzY2FsZVg7ICAgICAgICAgLyogbWF0cml4IGEgKi8KKyAgICBDRjJfRml4ZWQgIHNjYWxlQzsgICAgICAgICAvKiBtYXRyaXggYyAqLworICAgIENGMl9GaXhlZCAgc2NhbGVZOyAgICAgICAgIC8qIG1hdHJpeCBkICovCisKKyAgICBGVF9WZWN0b3IgIGZyYWN0aW9uYWxUcmFuc2xhdGlvbjsgIC8qIGluY2x1ZGluZyBkZXZpY2VYU2NhbGUgKi8KKyNpZiAwCisgICAgQ0YyX0ZpeGVkICBoU2hpZnQ7ICAgIC8qIGNoYXJhY3RlciBzcGFjZSBob3Jpem9udGFsIHNoaWZ0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChmb3IgZmF1eGluZykgICAgICAgICAgICAgICAgICAgICovCisjZW5kaWYKKworICAgIEZUX0Jvb2wgIHBhdGhJc09wZW47ICAgICAvKiB0cnVlIGFmdGVyIE1vdmVUbyAgICAgICAgICAgICAgICAgICAgICovCisgICAgRlRfQm9vbCAgZGFya2VuOyAgICAgICAgIC8qIHRydWUgaWYgc3RlbSBkYXJrZW5pbmcgICAgICAgICAgICAgICAgKi8KKyAgICBGVF9Cb29sICBtb3ZlSXNQZW5kaW5nOyAgLyogdHJ1ZSBiZXR3ZWVuIE1vdmVUbyBhbmQgb2Zmc2V0IE1vdmVUbyAqLworCisgICAgLyogcmVmZXJlbmNlcyB1c2VkIHRvIGNhbGwgYGNmMl9oaW50bWFwX2J1aWxkJywgaWYgbmVjZXNzYXJ5ICovCisgICAgQ0YyX0FyclN0YWNrICAgICAgICAgaFN0ZW1IaW50QXJyYXk7CisgICAgQ0YyX0FyclN0YWNrICAgICAgICAgdlN0ZW1IaW50QXJyYXk7CisgICAgQ0YyX0hpbnRNYXNrICAgICAgICAgaGludE1hc2s7ICAgICAvKiBwdHIgdG8gdGhlIGN1cnJlbnQgbWFzayAqLworICAgIENGMl9GaXhlZCAgICAgICAgICAgIGhpbnRPcmlnaW5ZOyAgLyogY29weSBvZiBjdXJyZW50IG9yaWdpbiAgKi8KKyAgICBjb25zdCBDRjJfQmx1ZXNSZWMqICBibHVlczsKKworICAgIENGMl9GaXhlZCAgeE9mZnNldDsgICAgICAgIC8qIGNoYXJhY3RlciBzcGFjZSBvZmZzZXRzICovCisgICAgQ0YyX0ZpeGVkICB5T2Zmc2V0OworCisgICAgLyogY2hhcmFjdGVyIHNwYWNlIG1pdGVyIGxpbWl0IHRocmVzaG9sZCAqLworICAgIENGMl9GaXhlZCAgbWl0ZXJMaW1pdDsKKyAgICAvKiB2ZXJ0aWNhbC9ob3J6aXpvbnRhbCBzbmFwIGRpc3RhbmNlIGluIGNoYXJhY3RlciBzcGFjZSAqLworICAgIENGMl9GaXhlZCAgc25hcFRocmVzaG9sZDsKKworICAgIEZUX1ZlY3RvciAgb2Zmc2V0U3RhcnQwOyAgLyogZmlyc3QgYW5kIHNlY29uZCBwb2ludHMgb2YgZmlyc3QgKi8KKyAgICBGVF9WZWN0b3IgIG9mZnNldFN0YXJ0MTsgIC8qIGVsZW1lbnQgd2l0aCBvZmZzZXQgYXBwbGllZCAgICAgICovCisKKyAgICAvKiBjdXJyZW50IHBvaW50LCBjaGFyYWN0ZXIgc3BhY2UsIGJlZm9yZSBvZmZzZXQgKi8KKyAgICBGVF9WZWN0b3IgIGN1cnJlbnRDUzsKKyAgICAvKiBjdXJyZW50IHBvaW50LCBkZXZpY2Ugc3BhY2UgKi8KKyAgICBGVF9WZWN0b3IgIGN1cnJlbnREUzsKKyAgICBGVF9WZWN0b3IgIHN0YXJ0OyAgICAgICAgIC8qIHN0YXJ0IHBvaW50IG9mIHN1YnBhdGggKi8KKworICAgIC8qIHRoZSBmb2xsb3dpbmcgbWVtYmVycyBjb25zdGl0dXRlIHRoZSBgcXVldWUnIG9mIG9uZSBlbGVtZW50ICovCisgICAgRlRfQm9vbCAgZWxlbUlzUXVldWVkOworICAgIENGMl9JbnQgIHByZXZFbGVtT3A7CisKKyAgICBGVF9WZWN0b3IgIHByZXZFbGVtUDA7CisgICAgRlRfVmVjdG9yICBwcmV2RWxlbVAxOworICAgIEZUX1ZlY3RvciAgcHJldkVsZW1QMjsKKyAgICBGVF9WZWN0b3IgIHByZXZFbGVtUDM7CisKKyAgfSBDRjJfR2x5cGhQYXRoUmVjLCAqQ0YyX0dseXBoUGF0aDsKKworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2YyX2dseXBocGF0aF9pbml0KCBDRjJfR2x5cGhQYXRoICAgICAgICAgZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgIENGMl9Gb250ICAgICAgICAgICAgICBmb250LAorICAgICAgICAgICAgICAgICAgICAgIENGMl9PdXRsaW5lQ2FsbGJhY2tzICBjYWxsYmFja3MsCisgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgICAgICAgICAgIHNjYWxlWSwKKyAgICAgICAgICAgICAgICAgICAgICAvKiBDRjJfRml4ZWQgaFNoaWZ0LCAqLworICAgICAgICAgICAgICAgICAgICAgIENGMl9BcnJTdGFjayAgICAgICAgICBoU3RlbUhpbnRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICBDRjJfQXJyU3RhY2sgICAgICAgICAgdlN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgQ0YyX0hpbnRNYXNrICAgICAgICAgIGhpbnRNYXNrLAorICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgICAgICAgICBoaW50T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGMl9CbHVlcyAgICAgICBibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICAgICAgZnJhY3Rpb25hbFRyYW5zbGF0aW9uICk7CisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2YyX2dseXBocGF0aF9maW5hbGl6ZSggQ0YyX0dseXBoUGF0aCAgZ2x5cGhwYXRoICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfZ2x5cGhwYXRoX21vdmVUbyggQ0YyX0dseXBoUGF0aCAgZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgIHkgKTsKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfZ2x5cGhwYXRoX2xpbmVUbyggQ0YyX0dseXBoUGF0aCAgZ2x5cGhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgIHkgKTsKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfZ2x5cGhwYXRoX2N1cnZlVG8oIENGMl9HbHlwaFBhdGggIGdseXBocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB4MywKKyAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICB5MyApOworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9nbHlwaHBhdGhfY2xvc2VPcGVuUGF0aCggQ0YyX0dseXBoUGF0aCAgZ2x5cGhwYXRoICk7CisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX0NGMkhJTlRTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyaW50cnAuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmludHJwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJmNWRkNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMmludHJwLmMKQEAgLTAsMCArMSwxNTQwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZjJpbnRycC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQWRvYmUncyBDRkYgSW50ZXJwcmV0ZXIgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDctMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yICAgICAgICovCisvKiAgb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQgICAgICAqLworLyogIGhlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlICAgKi8KKy8qICB1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsICAgICovCisvKiAgTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzICAgKi8KKy8qICB0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5ICAgICovCisvKiAgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yICAgICAqLworLyogICJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCAgICAgICAgICAgICAgKi8KKy8qICByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50ICAgICovCisvKiAgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgICAgICAqLworLyogIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSAgKi8KKy8qICBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSAgICAgICovCisvKiAgaW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciAgICAqLworLyogIGNvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcyAgICAgICAgKi8KKy8qICBzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAgICAgICovCisvKiAgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgICAqLworLyogIHRoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgICAgKi8KKy8qICBkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyAgICovCisvKiAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mICAqLworLyogIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSAgICAqLworLyogIGhhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICAgICAgICAgICAgICAgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sICAgICovCisvKiAgYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgImNmMmZ0LmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisKKyNpbmNsdWRlICJjZjJnbHVlLmgiCisjaW5jbHVkZSAiY2YyZm9udC5oIgorI2luY2x1ZGUgImNmMnN0YWNrLmgiCisjaW5jbHVkZSAiY2YyaGludHMuaCIKKworI2luY2x1ZGUgImNmMmVycm9yLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9jZjJpbnRlcnAKKworCisgIC8qIHNvbWUgb3BlcmF0b3JzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0ICovCisjZGVmaW5lIENGMl9GSVhNRSAgRlRfVFJBQ0U0KCggImNmMl9pbnRlcnBUMkNoYXJTdHJpbmc6IiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIG9wZXJhdG9yIG5vdCBpbXBsZW1lbnRlZCB5ZXRcbiIgKSkKKworCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2hpbnRtYXNrX2luaXQoIENGMl9IaW50TWFzayAgaGludG1hc2ssCisgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciogICAgIGVycm9yICkKKyAgeworICAgIEZUX1pFUk8oIGhpbnRtYXNrICk7CisKKyAgICBoaW50bWFzay0+ZXJyb3IgPSBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9Cb29sICkKKyAgY2YyX2hpbnRtYXNrX2lzVmFsaWQoIGNvbnN0IENGMl9IaW50TWFzayAgaGludG1hc2sgKQorICB7CisgICAgcmV0dXJuIGhpbnRtYXNrLT5pc1ZhbGlkOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Jvb2wgKQorICBjZjJfaGludG1hc2tfaXNOZXcoIGNvbnN0IENGMl9IaW50TWFzayAgaGludG1hc2sgKQorICB7CisgICAgcmV0dXJuIGhpbnRtYXNrLT5pc05ldzsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX2hpbnRtYXNrX3NldE5ldyggQ0YyX0hpbnRNYXNrICBoaW50bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICB2YWwgKQorICB7CisgICAgaGludG1hc2stPmlzTmV3ID0gdmFsOworICB9CisKKworICAvKiBjbGllbnRzIGNhbGwgYGdldE1hc2tQdHInIGluIG9yZGVyIHRvIGl0ZXJhdGUgKi8KKyAgLyogdGhyb3VnaCBoaW50IG1hc2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgRlRfTE9DQUxfREVGKCBGVF9CeXRlKiApCisgIGNmMl9oaW50bWFza19nZXRNYXNrUHRyKCBDRjJfSGludE1hc2sgIGhpbnRtYXNrICkKKyAgeworICAgIHJldHVybiBoaW50bWFzay0+bWFzazsKKyAgfQorCisKKyAgc3RhdGljIHNpemVfdAorICBjZjJfaGludG1hc2tfc2V0Q291bnRzKCBDRjJfSGludE1hc2sgIGhpbnRtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgIGJpdENvdW50ICkKKyAgeworICAgIGlmICggYml0Q291bnQgPiBDRjJfTUFYX0hJTlRTICkKKyAgICB7CisgICAgICAvKiB0b3RhbCBvZiBoIGFuZCB2IHN0ZW1zIG11c3QgYmUgPD0gOTYgKi8KKyAgICAgIENGMl9TRVRfRVJST1IoIGhpbnRtYXNrLT5lcnJvciwgSW52YWxpZF9HbHlwaF9Gb3JtYXQgKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGhpbnRtYXNrLT5iaXRDb3VudCAgPSBiaXRDb3VudDsKKyAgICBoaW50bWFzay0+Ynl0ZUNvdW50ID0gKCBoaW50bWFzay0+Yml0Q291bnQgKyA3ICkgLyA4OworCisgICAgaGludG1hc2stPmlzVmFsaWQgPSBUUlVFOworICAgIGhpbnRtYXNrLT5pc05ldyAgID0gVFJVRTsKKworICAgIHJldHVybiBiaXRDb3VudDsKKyAgfQorCisKKyAgLyogY29uc3VtZSB0aGUgaGludG1hc2sgYnl0ZXMgZnJvbSB0aGUgY2hhcnN0cmluZywgYWR2YW5jaW5nIHRoZSBzcmMgKi8KKyAgLyogcG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgY2YyX2hpbnRtYXNrX3JlYWQoIENGMl9IaW50TWFzayAgaGludG1hc2ssCisgICAgICAgICAgICAgICAgICAgICBDRjJfQnVmZmVyICAgIGNoYXJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgIGJpdENvdW50ICkKKyAgeworICAgIHNpemVfdCAgaTsKKworI2lmbmRlZiBDRjJfTkRFQlVHCisgICAgLyogdGhlc2UgYXJlIHRoZSBiaXRzIGluIHRoZSBmaW5hbCBtYXNrIGJ5dGUgdGhhdCBzaG91bGQgYmUgemVybyAgKi8KKyAgICAvKiBOb3RlOiB0aGlzIHZhcmlhYmxlIGlzIG9ubHkgdXNlZCBpbiBhbiBhc3NlcnQgZXhwcmVzc2lvbiBiZWxvdyAqLworICAgIC8qIGFuZCB0aGVuIG9ubHkgaWYgQ0YyX05ERUJVRyBpcyBub3QgZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICovCisgICAgQ0YyX1VJbnQgIG1hc2sgPSAoIDEgPDwgKCAtKENGMl9JbnQpYml0Q291bnQgJiA3ICkgKSAtIDE7CisjZW5kaWYKKworCisgICAgLyogaW5pdGlhbGl6ZSBjb3VudHMgYW5kIGlzVmFsaWQgKi8KKyAgICBpZiAoIGNmMl9oaW50bWFza19zZXRDb3VudHMoIGhpbnRtYXNrLCBiaXRDb3VudCApID09IDAgKQorICAgICAgcmV0dXJuOworCisgICAgRlRfQVNTRVJUKCBoaW50bWFzay0+Ynl0ZUNvdW50ID4gMCApOworCisgICAgRlRfVFJBQ0U0KCggIiAobWFza2J5dGVzOiIgKSk7CisKKyAgICAvKiBzZXQgbWFzayBhbmQgYWR2YW5jZSBpbnRlcnByZXRlcidzIGNoYXJzdHJpbmcgcG9pbnRlciAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgaGludG1hc2stPmJ5dGVDb3VudDsgaSsrICkKKyAgICB7CisgICAgICBoaW50bWFzay0+bWFza1tpXSA9IChGVF9CeXRlKWNmMl9idWZfcmVhZEJ5dGUoIGNoYXJzdHJpbmcgKTsKKyAgICAgIEZUX1RSQUNFNCgoICIgMHglMDJYIiwgaGludG1hc2stPm1hc2tbaV0gKSk7CisgICAgfQorCisgICAgRlRfVFJBQ0U0KCggIilcbiIgKSk7CisKKyAgICAvKiBhc3NlcnQgYW55IHVudXNlZCBiaXRzIGluIGxhc3QgYnl0ZSBhcmUgemVybyB1bmxlc3MgdGhlcmUncyBhIHByaW9yICovCisgICAgLyogZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIGJpdENvdW50IC0+IG1hc2ssIDAgLT4gMCwgMSAtPiA3ZiwgMiAtPiAzZiwgLi4uIDYgLT4gMywgNyAtPiAxICAgICAgKi8KKyNpZm5kZWYgQ0YyX05ERUJVRworICAgIEZUX0FTU0VSVCggKCBoaW50bWFzay0+bWFza1toaW50bWFzay0+Ynl0ZUNvdW50IC0gMV0gJiBtYXNrICkgPT0gMCB8fAorICAgICAgICAgICAgICAgKmhpbnRtYXNrLT5lcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworI2VuZGlmCisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmMl9oaW50bWFza19zZXRBbGwoIENGMl9IaW50TWFzayAgaGludG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgYml0Q291bnQgKQorICB7CisgICAgc2l6ZV90ICAgIGk7CisgICAgQ0YyX1VJbnQgIG1hc2sgPSAoIDEgPDwgKCAtKENGMl9JbnQpYml0Q291bnQgJiA3ICkgKSAtIDE7CisKKworICAgIC8qIGluaXRpYWxpemUgY291bnRzIGFuZCBpc1ZhbGlkICovCisgICAgaWYgKCBjZjJfaGludG1hc2tfc2V0Q291bnRzKCBoaW50bWFzaywgYml0Q291bnQgKSA9PSAwICkKKyAgICAgIHJldHVybjsKKworICAgIEZUX0FTU0VSVCggaGludG1hc2stPmJ5dGVDb3VudCA+IDAgKTsKKyAgICBGVF9BU1NFUlQoIGhpbnRtYXNrLT5ieXRlQ291bnQgPAorICAgICAgICAgICAgICAgICBzaXplb2YgKCBoaW50bWFzay0+bWFzayApIC8gc2l6ZW9mICggaGludG1hc2stPm1hc2tbMF0gKSApOworCisgICAgLyogc2V0IG1hc2sgdG8gYWxsIG9uZXMgKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IGhpbnRtYXNrLT5ieXRlQ291bnQ7IGkrKyApCisgICAgICBoaW50bWFzay0+bWFza1tpXSA9IDB4RkY7CisKKyAgICAvKiBjbGVhciB1bnVzZWQgYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIGJpdENvdW50IC0+IG1hc2ssIDAgLT4gMCwgMSAtPiA3ZiwgMiAtPiAzZiwgLi4uIDYgLT4gMywgNyAtPiAxICovCisgICAgaGludG1hc2stPm1hc2tbaGludG1hc2stPmJ5dGVDb3VudCAtIDFdICY9IH5tYXNrOworICB9CisKKworICAvKiBUeXBlMiBjaGFyc3RyaW5nIG9wY29kZXMgKi8KKyAgZW51bQorICB7CisgICAgY2YyX2NtZFJFU0VSVkVEXzAsICAgLyogMCAqLworICAgIGNmMl9jbWRIU1RFTSwgICAgICAgIC8qIDEgKi8KKyAgICBjZjJfY21kUkVTRVJWRURfMiwgICAvKiAyICovCisgICAgY2YyX2NtZFZTVEVNLCAgICAgICAgLyogMyAqLworICAgIGNmMl9jbWRWTU9WRVRPLCAgICAgIC8qIDQgKi8KKyAgICBjZjJfY21kUkxJTkVUTywgICAgICAvKiA1ICovCisgICAgY2YyX2NtZEhMSU5FVE8sICAgICAgLyogNiAqLworICAgIGNmMl9jbWRWTElORVRPLCAgICAgIC8qIDcgKi8KKyAgICBjZjJfY21kUlJDVVJWRVRPLCAgICAvKiA4ICovCisgICAgY2YyX2NtZFJFU0VSVkVEXzksICAgLyogOSAqLworICAgIGNmMl9jbWRDQUxMU1VCUiwgICAgIC8qIDEwICovCisgICAgY2YyX2NtZFJFVFVSTiwgICAgICAgLyogMTEgKi8KKyAgICBjZjJfY21kRVNDLCAgICAgICAgICAvKiAxMiAqLworICAgIGNmMl9jbWRSRVNFUlZFRF8xMywgIC8qIDEzICovCisgICAgY2YyX2NtZEVORENIQVIsICAgICAgLyogMTQgKi8KKyAgICBjZjJfY21kUkVTRVJWRURfMTUsICAvKiAxNSAqLworICAgIGNmMl9jbWRSRVNFUlZFRF8xNiwgIC8qIDE2ICovCisgICAgY2YyX2NtZFJFU0VSVkVEXzE3LCAgLyogMTcgKi8KKyAgICBjZjJfY21kSFNURU1ITSwgICAgICAvKiAxOCAqLworICAgIGNmMl9jbWRISU5UTUFTSywgICAgIC8qIDE5ICovCisgICAgY2YyX2NtZENOVFJNQVNLLCAgICAgLyogMjAgKi8KKyAgICBjZjJfY21kUk1PVkVUTywgICAgICAvKiAyMSAqLworICAgIGNmMl9jbWRITU9WRVRPLCAgICAgIC8qIDIyICovCisgICAgY2YyX2NtZFZTVEVNSE0sICAgICAgLyogMjMgKi8KKyAgICBjZjJfY21kUkNVUlZFTElORSwgICAvKiAyNCAqLworICAgIGNmMl9jbWRSTElORUNVUlZFLCAgIC8qIDI1ICovCisgICAgY2YyX2NtZFZWQ1VSVkVUTywgICAgLyogMjYgKi8KKyAgICBjZjJfY21kSEhDVVJWRVRPLCAgICAvKiAyNyAqLworICAgIGNmMl9jbWRFWFRFTkRFRE5NQlIsIC8qIDI4ICovCisgICAgY2YyX2NtZENBTExHU1VCUiwgICAgLyogMjkgKi8KKyAgICBjZjJfY21kVkhDVVJWRVRPLCAgICAvKiAzMCAqLworICAgIGNmMl9jbWRIVkNVUlZFVE8gICAgIC8qIDMxICovCisgIH07CisKKyAgZW51bQorICB7CisgICAgY2YyX2VzY0RPVFNFQ1RJT04sICAgLyogMCAqLworICAgIGNmMl9lc2NSRVNFUlZFRF8xLCAgIC8qIDEgKi8KKyAgICBjZjJfZXNjUkVTRVJWRURfMiwgICAvKiAyICovCisgICAgY2YyX2VzY0FORCwgICAgICAgICAgLyogMyAqLworICAgIGNmMl9lc2NPUiwgICAgICAgICAgIC8qIDQgKi8KKyAgICBjZjJfZXNjTk9ULCAgICAgICAgICAvKiA1ICovCisgICAgY2YyX2VzY1JFU0VSVkVEXzYsICAgLyogNiAqLworICAgIGNmMl9lc2NSRVNFUlZFRF83LCAgIC8qIDcgKi8KKyAgICBjZjJfZXNjUkVTRVJWRURfOCwgICAvKiA4ICovCisgICAgY2YyX2VzY0FCUywgICAgICAgICAgLyogOSAqLworICAgIGNmMl9lc2NBREQsICAgICAgICAgIC8qIDEwICAgICBsaWtlIG90aGVyQUREICovCisgICAgY2YyX2VzY1NVQiwgICAgICAgICAgLyogMTEgICAgIGxpa2Ugb3RoZXJTVUIgKi8KKyAgICBjZjJfZXNjRElWLCAgICAgICAgICAvKiAxMiAqLworICAgIGNmMl9lc2NSRVNFUlZFRF8xMywgIC8qIDEzICovCisgICAgY2YyX2VzY05FRywgICAgICAgICAgLyogMTQgKi8KKyAgICBjZjJfZXNjRVEsICAgICAgICAgICAvKiAxNSAqLworICAgIGNmMl9lc2NSRVNFUlZFRF8xNiwgIC8qIDE2ICovCisgICAgY2YyX2VzY1JFU0VSVkVEXzE3LCAgLyogMTcgKi8KKyAgICBjZjJfZXNjRFJPUCwgICAgICAgICAvKiAxOCAqLworICAgIGNmMl9lc2NSRVNFUlZFRF8xOSwgIC8qIDE5ICovCisgICAgY2YyX2VzY1BVVCwgICAgICAgICAgLyogMjAgICAgIGxpa2Ugb3RoZXJQVVQgICAgKi8KKyAgICBjZjJfZXNjR0VULCAgICAgICAgICAvKiAyMSAgICAgbGlrZSBvdGhlckdFVCAgICAqLworICAgIGNmMl9lc2NJRkVMU0UsICAgICAgIC8qIDIyICAgICBsaWtlIG90aGVySUZFTFNFICovCisgICAgY2YyX2VzY1JBTkRPTSwgICAgICAgLyogMjMgICAgIGxpa2Ugb3RoZXJSQU5ET00gKi8KKyAgICBjZjJfZXNjTVVMLCAgICAgICAgICAvKiAyNCAgICAgbGlrZSBvdGhlck1VTCAgICAqLworICAgIGNmMl9lc2NSRVNFUlZFRF8yNSwgIC8qIDI1ICovCisgICAgY2YyX2VzY1NRUlQsICAgICAgICAgLyogMjYgKi8KKyAgICBjZjJfZXNjRFVQLCAgICAgICAgICAvKiAyNyAgICAgbGlrZSBvdGhlckRVUCAgICAqLworICAgIGNmMl9lc2NFWENILCAgICAgICAgIC8qIDI4ICAgICBsaWtlIG90aGVyRVhDSCAgICovCisgICAgY2YyX2VzY0lOREVYLCAgICAgICAgLyogMjkgKi8KKyAgICBjZjJfZXNjUk9MTCwgICAgICAgICAvKiAzMCAqLworICAgIGNmMl9lc2NSRVNFUlZFRF8zMSwgIC8qIDMxICovCisgICAgY2YyX2VzY1JFU0VSVkVEXzMyLCAgLyogMzIgKi8KKyAgICBjZjJfZXNjUkVTRVJWRURfMzMsICAvKiAzMyAqLworICAgIGNmMl9lc2NIRkxFWCwgICAgICAgIC8qIDM0ICovCisgICAgY2YyX2VzY0ZMRVgsICAgICAgICAgLyogMzUgKi8KKyAgICBjZjJfZXNjSEZMRVgxLCAgICAgICAvKiAzNiAqLworICAgIGNmMl9lc2NGTEVYMSAgICAgICAgIC8qIDM3ICovCisgIH07CisKKworICAvKiBgc3RlbUhpbnRBcnJheScgZG9lcyBub3QgY2hhbmdlIG9uY2Ugd2Ugc3RhcnQgZHJhd2luZyB0aGUgb3V0bGluZS4gKi8KKyAgc3RhdGljIHZvaWQKKyAgY2YyX2RvU3RlbXMoIGNvbnN0IENGMl9Gb250ICBmb250LAorICAgICAgICAgICAgICAgQ0YyX1N0YWNrICAgICAgIG9wU3RhY2ssCisgICAgICAgICAgICAgICBDRjJfQXJyU3RhY2sgICAgc3RlbUhpbnRBcnJheSwKKyAgICAgICAgICAgICAgIENGMl9GaXhlZCogICAgICB3aWR0aCwKKyAgICAgICAgICAgICAgIEZUX0Jvb2wqICAgICAgICBoYXZlV2lkdGgsCisgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICAgaGludE9mZnNldCApCisgIHsKKyAgICBDRjJfVUludCAgaTsKKyAgICBDRjJfVUludCAgY291bnQgICAgICAgPSBjZjJfc3RhY2tfY291bnQoIG9wU3RhY2sgKTsKKyAgICBGVF9Cb29sICAgaGFzV2lkdGhBcmcgPSAoRlRfQm9vbCkoIGNvdW50ICYgMSApOworCisgICAgLyogdmFyaWFibGUgYWNjdW11bGF0ZXMgZGVsdGEgdmFsdWVzIGZyb20gb3BlcmFuZCBzdGFjayAqLworICAgIENGMl9GaXhlZCAgcG9zaXRpb24gPSBoaW50T2Zmc2V0OworCisgICAgaWYgKCBoYXNXaWR0aEFyZyAmJiAhICpoYXZlV2lkdGggKQorICAgICAgKndpZHRoID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIDAgKSArCisgICAgICAgICAgICAgICAgIGNmMl9nZXROb21pbmFsV2lkdGhYKCBmb250LT5kZWNvZGVyICk7CisKKyAgICBpZiAoIGZvbnQtPmRlY29kZXItPndpZHRoX29ubHkgKQorICAgICAgZ290byBleGl0OworCisgICAgZm9yICggaSA9IGhhc1dpZHRoQXJnID8gMSA6IDA7IGkgPCBjb3VudDsgaSArPSAyICkKKyAgICB7CisgICAgICAvKiBjb25zdHJ1Y3QgYSBDRjJfU3RlbUhpbnQgYW5kIHB1c2ggaXQgb250byB0aGUgbGlzdCAqLworICAgICAgQ0YyX1N0ZW1IaW50UmVjICBzdGVtaGludDsKKworCisgICAgICBzdGVtaGludC5taW4gID0KKyAgICAgICAgcG9zaXRpb24gICArPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaSApOworICAgICAgc3RlbWhpbnQubWF4ICA9CisgICAgICAgIHBvc2l0aW9uICAgKz0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGkgKyAxICk7CisKKyAgICAgIHN0ZW1oaW50LnVzZWQgID0gRkFMU0U7CisgICAgICBzdGVtaGludC5tYXhEUyA9CisgICAgICBzdGVtaGludC5taW5EUyA9IDA7CisKKyAgICAgIGNmMl9hcnJzdGFja19wdXNoKCBzdGVtSGludEFycmF5LCAmc3RlbWhpbnQgKTsgLyogZGVmZXIgZXJyb3IgY2hlY2sgKi8KKyAgICB9CisKKyAgICBjZjJfc3RhY2tfY2xlYXIoIG9wU3RhY2sgKTsKKworICBleGl0OgorICAgIC8qIGNmMl9kb1N0ZW1zIG11c3QgZGVmaW5lIGEgd2lkdGggKG1heSBiZSBkZWZhdWx0KSAqLworICAgICpoYXZlV2lkdGggPSBUUlVFOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBjZjJfZG9GbGV4KCBDRjJfU3RhY2sgICAgICAgb3BTdGFjaywKKyAgICAgICAgICAgICAgQ0YyX0ZpeGVkKiAgICAgIGN1clgsCisgICAgICAgICAgICAgIENGMl9GaXhlZCogICAgICBjdXJZLAorICAgICAgICAgICAgICBDRjJfR2x5cGhQYXRoICAgZ2x5cGhQYXRoLAorICAgICAgICAgICAgICBjb25zdCBGVF9Cb29sKiAgcmVhZEZyb21TdGFjaywKKyAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICAgIGRvQ29uZGl0aW9uYWxMYXN0UmVhZCApCisgIHsKKyAgICBDRjJfRml4ZWQgIHZhbHNbMTRdOworICAgIENGMl9VSW50ICAgaW5kZXg7CisgICAgRlRfQm9vbCAgICBpc0hGbGV4OworICAgIENGMl9JbnQgICAgdG9wLCBpLCBqOworCisKKyAgICB2YWxzWzBdID0gKmN1clg7CisgICAgdmFsc1sxXSA9ICpjdXJZOworICAgIGluZGV4ICAgPSAwOworICAgIGlzSEZsZXggPSByZWFkRnJvbVN0YWNrWzldID09IEZBTFNFOworICAgIHRvcCAgICAgPSBpc0hGbGV4ID8gOSA6IDEwOworCisgICAgZm9yICggaSA9IDA7IGkgPCB0b3A7IGkrKyApCisgICAgeworICAgICAgdmFsc1tpICsgMl0gPSB2YWxzW2ldOworICAgICAgaWYgKCByZWFkRnJvbVN0YWNrW2ldICkKKyAgICAgICAgdmFsc1tpICsgMl0gKz0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4KysgKTsKKyAgICB9CisKKyAgICBpZiAoIGlzSEZsZXggKQorICAgICAgdmFsc1s5ICsgMl0gPSAqY3VyWTsKKworICAgIGlmICggZG9Db25kaXRpb25hbExhc3RSZWFkICkKKyAgICB7CisgICAgICBGVF9Cb29sICAgIGxhc3RJc1ggPSAoRlRfQm9vbCkoIGNmMl9maXhlZEFicyggdmFsc1sxMF0gLSAqY3VyWCApID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZjJfZml4ZWRBYnMoIHZhbHNbMTFdIC0gKmN1clkgKSApOworICAgICAgQ0YyX0ZpeGVkICBsYXN0VmFsID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICk7CisKKworICAgICAgaWYgKCBsYXN0SXNYICkKKyAgICAgIHsKKyAgICAgICAgdmFsc1sxMl0gPSB2YWxzWzEwXSArIGxhc3RWYWw7CisgICAgICAgIHZhbHNbMTNdID0gKmN1clk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHZhbHNbMTJdID0gKmN1clg7CisgICAgICAgIHZhbHNbMTNdID0gdmFsc1sxMV0gKyBsYXN0VmFsOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgaWYgKCByZWFkRnJvbVN0YWNrWzEwXSApCisgICAgICAgIHZhbHNbMTJdID0gdmFsc1sxMF0gKyBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXgrKyApOworICAgICAgZWxzZQorICAgICAgICB2YWxzWzEyXSA9ICpjdXJYOworCisgICAgICBpZiAoIHJlYWRGcm9tU3RhY2tbMTFdICkKKyAgICAgICAgdmFsc1sxM10gPSB2YWxzWzExXSArIGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCApOworICAgICAgZWxzZQorICAgICAgICB2YWxzWzEzXSA9ICpjdXJZOworICAgIH0KKworICAgIGZvciAoIGogPSAwOyBqIDwgMjsgaisrICkKKyAgICAgIGNmMl9nbHlwaHBhdGhfY3VydmVUbyggZ2x5cGhQYXRoLCB2YWxzW2ogKiA2ICsgMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsc1tqICogNiArIDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHNbaiAqIDYgKyA0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzW2ogKiA2ICsgNV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsc1tqICogNiArIDZdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHNbaiAqIDYgKyA3XSApOworCisgICAgY2YyX3N0YWNrX2NsZWFyKCBvcFN0YWNrICk7CisKKyAgICAqY3VyWCA9IHZhbHNbMTJdOworICAgICpjdXJZID0gdmFsc1sxM107CisgIH0KKworCisgIC8qCisgICAqIGBlcnJvcicgaXMgYSBzaGFyZWQgZXJyb3IgY29kZSB1c2VkIGJ5IG1hbnkgb2JqZWN0cyBpbiB0aGlzCisgICAqIHJvdXRpbmUuICBCZWZvcmUgdGhlIGNvZGUgY29udGludWVzIGZyb20gYW4gZXJyb3IsIGl0IG11c3QgY2hlY2sgYW5kCisgICAqIHJlY29yZCB0aGUgZXJyb3IgaW4gYCplcnJvcicuICBUaGUgaWRlYSBpcyB0aGF0IHRoaXMgc2hhcmVkCisgICAqIGVycm9yIGNvZGUgd2lsbCByZWNvcmQgdGhlIGZpcnN0IGVycm9yIGVuY291bnRlcmVkLiAgSWYgdGVzdGluZworICAgKiBmb3IgYW4gZXJyb3IgYW55d2F5LCB0aGUgY29zdCBvZiBgZ290byBleGl0JyBpcyBzbWFsbCwgc28gd2UgZG8gaXQsCisgICAqIGV2ZW4gaWYgY29udGludWluZyB3b3VsZCBiZSBzYWZlLiAgSW4gdGhpcyBjYXNlLCBgbGFzdEVycm9yJyBpcworICAgKiBzZXQsIHNvIHRoZSB0ZXN0aW5nIGFuZCBzdG9yaW5nIGNhbiBiZSBkb25lIGluIG9uZSBwbGFjZSwgYXQgYGV4aXQnLgorICAgKgorICAgKiBDb250aW51aW5nIGFmdGVyIGFuIGVycm9yIGlzIGludGVuZGVkIGZvciBvYmplY3RzIHdoaWNoIGRvIHRoZWlyIG93bgorICAgKiB0ZXN0aW5nIG9mIGAqZXJyb3InLCBlLmcuLCBhcnJheSBzdGFjayBmdW5jdGlvbnMuICBUaGlzIGFsbG93cyB1cyB0bworICAgKiBhdm9pZCBhbiBleHRyYSB0ZXN0IGFmdGVyIHRoZSBjYWxsLgorICAgKgorICAgKiBVbmltcGxlbWVudGVkIG9wY29kZXMgYXJlIGlnbm9yZWQuCisgICAqCisgICAqLworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfaW50ZXJwVDJDaGFyU3RyaW5nKCBDRjJfRm9udCAgICAgICAgICAgICAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0J1ZmZlciAgICAgICAgICAgIGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX091dGxpbmVDYWxsYmFja3MgIGNhbGxiYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgICAgIHRyYW5zbGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgICAgICAgZG9pbmdTZWFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgICAgICAgICAgICAgY3VyWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgICAgICAgICAgIGN1clksCisgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCogICAgICAgICAgICB3aWR0aCApCisgIHsKKyAgICAvKiBsYXN0RXJyb3IgaXMgdXNlZCBmb3IgZXJyb3JzIHRoYXQgYXJlIGltbWVkaWF0ZWx5IHRlc3RlZCAqLworICAgIEZUX0Vycm9yICBsYXN0RXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgICAvKiBwb2ludGVyIHRvIHBhcnNlZCBmb250IG9iamVjdCAqLworICAgIENGRl9EZWNvZGVyKiAgZGVjb2RlciA9IGZvbnQtPmRlY29kZXI7CisKKyAgICBGVF9FcnJvciogIGVycm9yICA9ICZmb250LT5lcnJvcjsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGZvbnQtPm1lbW9yeTsKKworICAgIENGMl9GaXhlZCAgc2NhbGVZICAgICAgICA9IGZvbnQtPmlubmVyVHJhbnNmb3JtLmQ7CisgICAgQ0YyX0ZpeGVkICBub21pbmFsV2lkdGhYID0gY2YyX2dldE5vbWluYWxXaWR0aFgoIGRlY29kZXIgKTsKKworICAgIC8qIHNhdmUgdGhpcyBmb3IgaGludGluZyBzZWFjIGFjY2VudHMgKi8KKyAgICBDRjJfRml4ZWQgIGhpbnRPcmlnaW5ZID0gY3VyWTsKKworICAgIENGMl9TdGFjayAgb3BTdGFjayA9IE5VTEw7CisgICAgRlRfQnl0ZSAgICBvcDE7ICAgICAgICAgICAgICAgICAgICAgICAvKiBmaXJzdCBvcGNvZGUgYnl0ZSAqLworCisgICAgLyogaW5zdHJ1Y3Rpb24gbGltaXQ7IDIwLDAwMCwwMDAgbWF0Y2hlcyBBdmFsb24gKi8KKyAgICBGVF9VSW50MzIgIGluc3RydWN0aW9uTGltaXQgPSAyMDAwMDAwMFVMOworCisgICAgQ0YyX0FyclN0YWNrUmVjICBzdWJyU3RhY2s7CisKKyAgICBGVF9Cb29sICAgICBoYXZlV2lkdGg7CisgICAgQ0YyX0J1ZmZlciAgY2hhcnN0cmluZyA9IE5VTEw7CisKKyAgICBDRjJfSW50ICBjaGFyc3RyaW5nSW5kZXggPSAtMTsgICAgICAgLyogaW5pdGlhbGl6ZSB0byBlbXB0eSAqLworCisgICAgLyogVE9ETzogcGxhY2Vob2xkZXJzIGZvciBoaW50IHN0cnVjdHVyZXMgKi8KKworICAgIC8qIG9iamVjdHMgdXNlZCBmb3IgaGludGluZyAqLworICAgIENGMl9BcnJTdGFja1JlYyAgaFN0ZW1IaW50QXJyYXk7CisgICAgQ0YyX0FyclN0YWNrUmVjICB2U3RlbUhpbnRBcnJheTsKKworICAgIENGMl9IaW50TWFza1JlYyAgIGhpbnRNYXNrOworICAgIENGMl9HbHlwaFBhdGhSZWMgIGdseXBoUGF0aDsKKworCWludCByZWZDb3VudCA9IDA7CisKKworICAgIC8qIGluaXRpYWxpemUgdGhlIHJlbWFpbmluZyBvYmplY3RzICovCisgICAgY2YyX2FycnN0YWNrX2luaXQoICZzdWJyU3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoIENGMl9CdWZmZXJSZWMgKSApOworICAgIGNmMl9hcnJzdGFja19pbml0KCAmaFN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoIENGMl9TdGVtSGludFJlYyApICk7CisgICAgY2YyX2FycnN0YWNrX2luaXQoICZ2U3RlbUhpbnRBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggQ0YyX1N0ZW1IaW50UmVjICkgKTsKKworICAgIC8qIGluaXRpYWxpemUgQ0YyX1N0ZW1IaW50IGFycmF5cyAqLworICAgIGNmMl9oaW50bWFza19pbml0KCAmaGludE1hc2ssIGVycm9yICk7CisKKyAgICAvKiBpbml0aWFsaXplIHBhdGggbWFwIHRvIG1hbmFnZSBkcmF3aW5nIG9wZXJhdGlvbnMgKi8KKworICAgIC8qIE5vdGU6IGxhc3QgNCBwYXJhbXMgYXJlIHVzZWQgdG8gaGFuZGxlIGBNb3ZlVG9QZXJtaXNzaXZlJywgd2hpY2ggKi8KKyAgICAvKiAgICAgICBtYXkgbmVlZCB0byBjYWxsIGBoaW50TWFwLkJ1aWxkJyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogVE9ETzogTW92ZVRvUGVybWlzc2l2ZSBpcyBnb25lOyBhcmUgdGhlc2Ugc3RpbGwgbmVlZGVkPyAgICAgICAgICAqLworICAgIGNmMl9nbHlwaHBhdGhfaW5pdCggJmdseXBoUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MsCisgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVksCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBoU2hpZnQsICovCisgICAgICAgICAgICAgICAgICAgICAgICAmaFN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAmdlN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAmaGludE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICBoaW50T3JpZ2luWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZmb250LT5ibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uICk7CisKKyAgICAvKgorICAgICAqIEluaXRpYWxpemUgc3RhdGUgZm9yIHdpZHRoIHBhcnNpbmcuICBGcm9tIHRoZSBDRkYgU3BlYzoKKyAgICAgKgorICAgICAqICAgVGhlIGZpcnN0IHN0YWNrLWNsZWFyaW5nIG9wZXJhdG9yLCB3aGljaCBtdXN0IGJlIG9uZSBvZiBoc3RlbSwKKyAgICAgKiAgIGhzdGVtaG0sIHZzdGVtLCB2c3RlbWhtLCBjbnRybWFzaywgaGludG1hc2ssIGhtb3ZldG8sIHZtb3ZldG8sCisgICAgICogICBybW92ZXRvLCBvciBlbmRjaGFyLCB0YWtlcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IC0gdGhlIHdpZHRoIChhcworICAgICAqICAgZGVzY3JpYmVkIGVhcmxpZXIpLCB3aGljaCBtYXkgYmUgZXhwcmVzc2VkIGFzIHplcm8gb3Igb25lIG51bWVyaWMKKyAgICAgKiAgIGFyZ3VtZW50LgorICAgICAqCisgICAgICogV2hhdCB3ZSBpbXBsZW1lbnQgaGVyZSB1c2VzIHRoZSBmaXJzdCB2YWxpZGx5IHNwZWNpZmllZCB3aWR0aCwgYnV0CisgICAgICogZG9lcyBub3QgZGV0ZWN0IGVycm9ycyBmb3Igc3BlY2lmeWluZyBtb3JlIHRoYW4gb25lIHdpZHRoLgorICAgICAqCisgICAgICogSWYgb25lIG9mIHRoZSBhYm92ZSBvcGVyYXRvcnMgb2NjdXJzIHdpdGhvdXQgZXhwbGljaXRseSBzcGVjaWZ5aW5nCisgICAgICogYSB3aWR0aCwgd2UgYXNzdW1lIHRoZSBkZWZhdWx0IHdpZHRoLgorICAgICAqCisgICAgICovCisgICAgaGF2ZVdpZHRoID0gRkFMU0U7CisgICAgKndpZHRoICAgID0gY2YyX2dldERlZmF1bHRXaWR0aFgoIGRlY29kZXIgKTsKKworICAgIC8qCisgICAgICogTm90ZTogYXQgdGhpcyBwb2ludCwgYWxsIHBvaW50ZXJzIHRvIHJlc291cmNlcyBtdXN0IGJlIE5VTEwKKyAgICAgKiBhbmQgYWxsIGxvY2FsIG9iamVjdHMgbXVzdCBiZSBpbml0aWFsaXplZC4KKyAgICAgKiBUaGVyZSBtdXN0IGJlIG5vIGJyYW5jaGVzIHRvIGV4aXQ6IGFib3ZlIHRoaXMgcG9pbnQuCisgICAgICoKKyAgICAgKi8KKworICAgIC8qIGFsbG9jYXRlIGFuIG9wZXJhbmQgc3RhY2sgKi8KKyAgICBvcFN0YWNrID0gY2YyX3N0YWNrX2luaXQoIG1lbW9yeSwgZXJyb3IgKTsKKyAgICBpZiAoICFvcFN0YWNrICkKKyAgICB7CisgICAgICBsYXN0RXJyb3IgPSBGVF9USFJPVyggT3V0X09mX01lbW9yeSApOworICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIC8qIGluaXRpYWxpemUgc3Vicm91dGluZSBzdGFjayBieSBwbGFjaW5nIHRvcCBsZXZlbCBjaGFyc3RyaW5nIGFzICovCisgICAgLyogZmlyc3QgZWxlbWVudCAobWF4IGRlcHRoIHBsdXMgb25lIGZvciB0aGUgY2hhcnN0cmluZykgICAgICAgICAgKi8KKyAgICAvKiBOb3RlOiBDYWxsZXIgb3ducyBhbmQgbXVzdCBmaW5hbGl6ZSB0aGUgZmlyc3QgY2hhcnN0cmluZy4gICAgICAqLworICAgIC8qICAgICAgIE91ciBjb3B5IG9mIGl0IGRvZXMgbm90IGNoYW5nZSB0aGF0IHJlcXVpcmVtZW50LiAgICAgICAgICovCisgICAgY2YyX2FycnN0YWNrX3NldENvdW50KCAmc3ViclN0YWNrLCBDRjJfTUFYX1NVQlIgKyAxICk7CisKKyAgICBjaGFyc3RyaW5nICA9IChDRjJfQnVmZmVyKWNmMl9hcnJzdGFja19nZXRCdWZmZXIoICZzdWJyU3RhY2sgKTsKKyAgICAqY2hhcnN0cmluZyA9ICpidWY7ICAgIC8qIHN0cnVjdHVyZSBjb3B5ICovCisKKyAgICBjaGFyc3RyaW5nSW5kZXggPSAwOyAgICAgICAvKiBlbnRyeSBpcyB2YWxpZCBub3cgKi8KKworICAgIC8qIGNhdGNoIGVycm9ycyBzbyBmYXIgKi8KKyAgICBpZiAoICplcnJvciApCisgICAgICBnb3RvIGV4aXQ7CisKKyAgICAvKiBtYWluIGludGVycHJldGVyIGxvb3AgKi8KKyAgICB3aGlsZSAoIHJlZkNvdW50KysgPCAxMDI0MCApCisgICAgeworICAgICAgaWYgKCBjZjJfYnVmX2lzRW5kKCBjaGFyc3RyaW5nICkgKQorICAgICAgeworICAgICAgICAvKiBJZiB3ZSd2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGNoYXJzdHJpbmcsIHNpbXVsYXRlIGEgKi8KKyAgICAgICAgLyogY2YyX2NtZFJFVFVSTiBvciBjZjJfY21kRU5EQ0hBUi4gICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggY2hhcnN0cmluZ0luZGV4ICkKKyAgICAgICAgICBvcDEgPSBjZjJfY21kUkVUVVJOOyAgLyogZW5kIG9mIGJ1ZmZlciBmb3Igc3Vicm91dGluZSAqLworICAgICAgICBlbHNlCisgICAgICAgICAgb3AxID0gY2YyX2NtZEVORENIQVI7IC8qIGVuZCBvZiBidWZmZXIgZm9yIHRvcCBsZXZlbCBjaGFyc3RyaW5nICovCisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIG9wMSA9IChGVF9CeXRlKWNmMl9idWZfcmVhZEJ5dGUoIGNoYXJzdHJpbmcgKTsKKworICAgICAgLyogY2hlY2sgZm9yIGVycm9ycyBvbmNlIHBlciBsb29wICovCisgICAgICBpZiAoICplcnJvciApCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgICAgaW5zdHJ1Y3Rpb25MaW1pdC0tOworICAgICAgaWYgKCBpbnN0cnVjdGlvbkxpbWl0ID09IDAgKQorICAgICAgeworICAgICAgICBsYXN0RXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9HbHlwaF9Gb3JtYXQgKTsKKyAgICAgICAgZ290byBleGl0OworICAgICAgfQorCisgICAgICBzd2l0Y2goIG9wMSApCisgICAgICB7CisgICAgICBjYXNlIGNmMl9jbWRSRVNFUlZFRF8wOgorICAgICAgY2FzZSBjZjJfY21kUkVTRVJWRURfMjoKKyAgICAgIGNhc2UgY2YyX2NtZFJFU0VSVkVEXzk6CisgICAgICBjYXNlIGNmMl9jbWRSRVNFUlZFRF8xMzoKKyAgICAgIGNhc2UgY2YyX2NtZFJFU0VSVkVEXzE1OgorICAgICAgY2FzZSBjZjJfY21kUkVTRVJWRURfMTY6CisgICAgICBjYXNlIGNmMl9jbWRSRVNFUlZFRF8xNzoKKyAgICAgICAgLyogd2UgbWF5IGdldCBoZXJlIGlmIHdlIGhhdmUgYSBwcmlvciBlcnJvciAqLworICAgICAgICBGVF9UUkFDRTQoKCAiIHVua25vd24gb3AgKCVkKVxuIiwgb3AxICkpOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBjZjJfY21kSFNURU1ITToKKyAgICAgIGNhc2UgY2YyX2NtZEhTVEVNOgorICAgICAgICBGVF9UUkFDRTQoKCBvcDEgPT0gY2YyX2NtZEhTVEVNSE0gPyAiIGhzdGVtaG1cbiIgOiAiIGhzdGVtXG4iICkpOworCisgICAgICAgIC8qIG5ldmVyIGFkZCBoaW50cyBhZnRlciB0aGUgbWFzayBpcyBjb21wdXRlZCAqLworICAgICAgICBpZiAoIGNmMl9oaW50bWFza19pc1ZhbGlkKCAmaGludE1hc2sgKSApCisgICAgICAgICAgRlRfVFJBQ0U0KCggImNmMl9pbnRlcnBUMkNoYXJTdHJpbmc6IgorICAgICAgICAgICAgICAgICAgICAgICIgaW52YWxpZCBob3Jpem9udGFsIGhpbnQgbWFza1xuIiApKTsKKworICAgICAgICBjZjJfZG9TdGVtcyggZm9udCwKKyAgICAgICAgICAgICAgICAgICAgIG9wU3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAmaFN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICZoYXZlV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAwICk7CisKKyAgICAgICAgaWYgKCBmb250LT5kZWNvZGVyLT53aWR0aF9vbmx5ICkKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBjZjJfY21kVlNURU1ITToKKyAgICAgIGNhc2UgY2YyX2NtZFZTVEVNOgorICAgICAgICBGVF9UUkFDRTQoKCBvcDEgPT0gY2YyX2NtZFZTVEVNSE0gPyAiIHZzdGVtaG1cbiIgOiAiIHZzdGVtXG4iICkpOworCisgICAgICAgIC8qIG5ldmVyIGFkZCBoaW50cyBhZnRlciB0aGUgbWFzayBpcyBjb21wdXRlZCAqLworICAgICAgICBpZiAoIGNmMl9oaW50bWFza19pc1ZhbGlkKCAmaGludE1hc2sgKSApCisgICAgICAgICAgRlRfVFJBQ0U0KCggImNmMl9pbnRlcnBUMkNoYXJTdHJpbmc6IgorICAgICAgICAgICAgICAgICAgICAgICIgaW52YWxpZCB2ZXJ0aWNhbCBoaW50IG1hc2tcbiIgKSk7CisKKyAgICAgICAgY2YyX2RvU3RlbXMoIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICBvcFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgJnZTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAmaGF2ZVdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgMCApOworCisgICAgICAgIGlmICggZm9udC0+ZGVjb2Rlci0+d2lkdGhfb25seSApCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgY2YyX2NtZFZNT1ZFVE86CisgICAgICAgIEZUX1RSQUNFNCgoICIgdm1vdmV0b1xuIiApKTsKKworICAgICAgICBpZiAoIGNmMl9zdGFja19jb3VudCggb3BTdGFjayApID4gMSAmJiAhaGF2ZVdpZHRoICkKKyAgICAgICAgICAqd2lkdGggPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgMCApICsgbm9taW5hbFdpZHRoWDsKKworICAgICAgICAvKiB3aWR0aCBpcyBkZWZpbmVkIG9yIGRlZmF1bHQgYWZ0ZXIgdGhpcyAqLworICAgICAgICBoYXZlV2lkdGggPSBUUlVFOworCisgICAgICAgIGlmICggZm9udC0+ZGVjb2Rlci0+d2lkdGhfb25seSApCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICAgICAgY3VyWSArPSBjZjJfc3RhY2tfcG9wRml4ZWQoIG9wU3RhY2sgKTsKKworICAgICAgICBjZjJfZ2x5cGhwYXRoX21vdmVUbyggJmdseXBoUGF0aCwgY3VyWCwgY3VyWSApOworCisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIGNmMl9jbWRSTElORVRPOgorICAgICAgICB7CisgICAgICAgICAgQ0YyX1VJbnQgIGluZGV4OworICAgICAgICAgIENGMl9VSW50ICBjb3VudCA9IGNmMl9zdGFja19jb3VudCggb3BTdGFjayApOworCisKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHJsaW5ldG9cbiIgKSk7CisKKyAgICAgICAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7IGluZGV4ICs9IDIgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGN1clggKz0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgMCApOworICAgICAgICAgICAgY3VyWSArPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAxICk7CisKKyAgICAgICAgICAgIGNmMl9nbHlwaHBhdGhfbGluZVRvKCAmZ2x5cGhQYXRoLCBjdXJYLCBjdXJZICk7CisgICAgICAgICAgfQorCisgICAgICAgICAgY2YyX3N0YWNrX2NsZWFyKCBvcFN0YWNrICk7CisgICAgICAgIH0KKyAgICAgICAgY29udGludWU7IC8qIG5vIG5lZWQgdG8gY2xlYXIgc3RhY2sgYWdhaW4gKi8KKworICAgICAgY2FzZSBjZjJfY21kSExJTkVUTzoKKyAgICAgIGNhc2UgY2YyX2NtZFZMSU5FVE86CisgICAgICAgIHsKKyAgICAgICAgICBDRjJfVUludCAgaW5kZXg7CisgICAgICAgICAgQ0YyX1VJbnQgIGNvdW50ID0gY2YyX3N0YWNrX2NvdW50KCBvcFN0YWNrICk7CisKKyAgICAgICAgICBGVF9Cb29sICBpc1ggPSBvcDEgPT0gY2YyX2NtZEhMSU5FVE87CisKKworICAgICAgICAgIEZUX1RSQUNFNCgoIGlzWCA/ICIgaGxpbmV0b1xuIiA6ICIgdmxpbmV0b1xuIiApKTsKKworICAgICAgICAgIGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5kZXgrKyApCisgICAgICAgICAgeworICAgICAgICAgICAgQ0YyX0ZpeGVkICB2ID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICk7CisKKworICAgICAgICAgICAgaWYgKCBpc1ggKQorICAgICAgICAgICAgICBjdXJYICs9IHY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGN1clkgKz0gdjsKKworICAgICAgICAgICAgaXNYID0gIWlzWDsKKworICAgICAgICAgICAgY2YyX2dseXBocGF0aF9saW5lVG8oICZnbHlwaFBhdGgsIGN1clgsIGN1clkgKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBjZjJfc3RhY2tfY2xlYXIoIG9wU3RhY2sgKTsKKyAgICAgICAgfQorICAgICAgICBjb250aW51ZTsKKworICAgICAgY2FzZSBjZjJfY21kUkNVUlZFTElORToKKyAgICAgIGNhc2UgY2YyX2NtZFJSQ1VSVkVUTzoKKyAgICAgICAgeworICAgICAgICAgIENGMl9VSW50ICBjb3VudCA9IGNmMl9zdGFja19jb3VudCggb3BTdGFjayApOworICAgICAgICAgIENGMl9VSW50ICBpbmRleCA9IDA7CisKKworICAgICAgICAgIEZUX1RSQUNFNCgoIG9wMSA9PSBjZjJfY21kUkNVUlZFTElORSA/ICIgcmN1cnZlbGluZVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIgcnJjdXJ2ZXRvXG4iICkpOworCisgICAgICAgICAgd2hpbGUgKCBpbmRleCArIDYgPD0gY291bnQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIENGMl9GaXhlZCAgeDEgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAwICkgKyBjdXJYOworICAgICAgICAgICAgQ0YyX0ZpeGVkICB5MSA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDEgKSArIGN1clk7CisgICAgICAgICAgICBDRjJfRml4ZWQgIHgyID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgMiApICsgeDE7CisgICAgICAgICAgICBDRjJfRml4ZWQgIHkyID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgMyApICsgeTE7CisgICAgICAgICAgICBDRjJfRml4ZWQgIHgzID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgNCApICsgeDI7CisgICAgICAgICAgICBDRjJfRml4ZWQgIHkzID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgNSApICsgeTI7CisKKworICAgICAgICAgICAgY2YyX2dseXBocGF0aF9jdXJ2ZVRvKCAmZ2x5cGhQYXRoLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzICk7CisKKyAgICAgICAgICAgIGN1clggICA9IHgzOworICAgICAgICAgICAgY3VyWSAgID0geTM7CisgICAgICAgICAgICBpbmRleCArPSA2OworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICggb3AxID09IGNmMl9jbWRSQ1VSVkVMSU5FICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBjdXJYICs9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDAgKTsKKyAgICAgICAgICAgIGN1clkgKz0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgMSApOworCisgICAgICAgICAgICBjZjJfZ2x5cGhwYXRoX2xpbmVUbyggJmdseXBoUGF0aCwgY3VyWCwgY3VyWSApOworICAgICAgICAgIH0KKworICAgICAgICAgIGNmMl9zdGFja19jbGVhciggb3BTdGFjayApOworICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlOyAvKiBubyBuZWVkIHRvIGNsZWFyIHN0YWNrIGFnYWluICovCisKKyAgICAgIGNhc2UgY2YyX2NtZENBTExHU1VCUjoKKyAgICAgIGNhc2UgY2YyX2NtZENBTExTVUJSOgorICAgICAgICB7CisgICAgICAgICAgQ0YyX1VJbnQgIHN1YnJJbmRleDsKKworCisgICAgICAgICAgRlRfVFJBQ0U0KCggb3AxID09IGNmMl9jbWRDQUxMR1NVQlIgPyAiIGNhbGxnc3ViciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIgY2FsbHN1YnIiICkpOworCisgICAgICAgICAgaWYgKCBjaGFyc3RyaW5nSW5kZXggPiBDRjJfTUFYX1NVQlIgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIG1heCBzdWJyIHBsdXMgb25lIGZvciBjaGFyc3RyaW5nICovCisgICAgICAgICAgICBsYXN0RXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9HbHlwaF9Gb3JtYXQgKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsgICAgICAgICAgICAgICAgICAgICAgLyogb3ZlcmZsb3cgb2Ygc3RhY2sgKi8KKyAgICAgICAgICB9CisKKyAgICAgICAgICAvKiBwdXNoIG91ciBjdXJyZW50IENGRiBjaGFyc3RyaW5nIHJlZ2lvbiBvbiBzdWJyU3RhY2sgKi8KKyAgICAgICAgICBjaGFyc3RyaW5nID0gKENGMl9CdWZmZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgY2YyX2FycnN0YWNrX2dldFBvaW50ZXIoICZzdWJyU3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzdHJpbmdJbmRleCArIDEgKTsKKworICAgICAgICAgIC8qIHNldCB1cCB0aGUgbmV3IENGRiByZWdpb24gYW5kIHBvaW50ZXIgKi8KKyAgICAgICAgICBzdWJySW5kZXggPSBjZjJfc3RhY2tfcG9wSW50KCBvcFN0YWNrICk7CisKKyAgICAgICAgICBzd2l0Y2ggKCBvcDEgKQorICAgICAgICAgIHsKKyAgICAgICAgICBjYXNlIGNmMl9jbWRDQUxMR1NVQlI6CisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiKCVkKVxuIiwgc3VickluZGV4ICsgZGVjb2Rlci0+Z2xvYmFsc19iaWFzICkpOworCisgICAgICAgICAgICBpZiAoIGNmMl9pbml0R2xvYmFsUmVnaW9uQnVmZmVyKCBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VickluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnN0cmluZyApICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbGFzdEVycm9yID0gRlRfVEhST1coIEludmFsaWRfR2x5cGhfRm9ybWF0ICk7CisgICAgICAgICAgICAgIGdvdG8gZXhpdDsgIC8qIHN1YnJvdXRpbmUgbG9va3VwIG9yIHN0cmVhbSBlcnJvciAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogY2YyX2NtZENBTExTVUJSICovCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiKCVkKVxuIiwgc3VickluZGV4ICsgZGVjb2Rlci0+bG9jYWxzX2JpYXMgKSk7CisKKyAgICAgICAgICAgIGlmICggY2YyX2luaXRMb2NhbFJlZ2lvbkJ1ZmZlciggZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VickluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc3RyaW5nICkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBsYXN0RXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9HbHlwaF9Gb3JtYXQgKTsKKyAgICAgICAgICAgICAgZ290byBleGl0OyAgLyogc3Vicm91dGluZSBsb29rdXAgb3Igc3RyZWFtIGVycm9yICovCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgY2hhcnN0cmluZ0luZGV4ICs9IDE7ICAgICAgIC8qIGVudHJ5IGlzIHZhbGlkIG5vdyAqLworICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlOyAvKiBkbyBub3QgY2xlYXIgdGhlIHN0YWNrICovCisKKyAgICAgIGNhc2UgY2YyX2NtZFJFVFVSTjoKKyAgICAgICAgRlRfVFJBQ0U0KCggIiByZXR1cm5cbiIgKSk7CisKKyAgICAgICAgaWYgKCBjaGFyc3RyaW5nSW5kZXggPCAxICkKKyAgICAgICAgeworICAgICAgICAgIC8qIE5vdGU6IGNhbm5vdCByZXR1cm4gZnJvbSB0b3AgY2hhcnN0cmluZyAqLworICAgICAgICAgIGxhc3RFcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0dseXBoX0Zvcm1hdCApOworICAgICAgICAgIGdvdG8gZXhpdDsgICAgICAgICAgICAgICAgICAgICAgLyogdW5kZXJmbG93IG9mIHN0YWNrICovCisgICAgICAgIH0KKworICAgICAgICAvKiByZXN0b3JlIHBvc2l0aW9uIGluIHByZXZpb3VzIGNoYXJzdHJpbmcgKi8KKyAgICAgICAgY2hhcnN0cmluZyA9IChDRjJfQnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICBjZjJfYXJyc3RhY2tfZ2V0UG9pbnRlciggJnN1YnJTdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tY2hhcnN0cmluZ0luZGV4ICk7CisgICAgICAgIGNvbnRpbnVlOyAgICAgLyogZG8gbm90IGNsZWFyIHRoZSBzdGFjayAqLworCisgICAgICBjYXNlIGNmMl9jbWRFU0M6CisgICAgICAgIHsKKyAgICAgICAgICBGVF9CeXRlICBvcDIgPSAoRlRfQnl0ZSljZjJfYnVmX3JlYWRCeXRlKCBjaGFyc3RyaW5nICk7CisKKworICAgICAgICAgIHN3aXRjaCAoIG9wMiApCisgICAgICAgICAgeworICAgICAgICAgIGNhc2UgY2YyX2VzY0RPVFNFQ1RJT046CisgICAgICAgICAgICAvKiBzb21ldGhpbmcgYWJvdXQgYGZsaXAgdHlwZSBvZiBsb2NraW5nJyAtLSBpZ25vcmUgaXQgKi8KKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgZG90c2VjdGlvblxuIiApKTsKKworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAvKiBUT0RPOiBzaG91bGQgdGhlc2Ugb3BlcmF0b3JzIGJlIHN1cHBvcnRlZD8gKi8KKyAgICAgICAgICBjYXNlIGNmMl9lc2NBTkQ6IC8qIGluIHNwZWMgKi8KKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgYW5kXG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY09SOiAvKiBpbiBzcGVjICovCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIG9yXG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY05PVDogLyogaW4gc3BlYyAqLworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBub3RcbiIgKSk7CisKKyAgICAgICAgICAgIENGMl9GSVhNRTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBjZjJfZXNjQUJTOiAvKiBpbiBzcGVjICovCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGFic1xuIiApKTsKKworICAgICAgICAgICAgQ0YyX0ZJWE1FOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIGNmMl9lc2NBREQ6IC8qIGluIHNwZWMgKi8KKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgYWRkXG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY1NVQjogLyogaW4gc3BlYyAqLworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBzdWJcbiIgKSk7CisKKyAgICAgICAgICAgIENGMl9GSVhNRTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBjZjJfZXNjRElWOiAvKiBpbiBzcGVjICovCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGRpdlxuIiApKTsKKworICAgICAgICAgICAgQ0YyX0ZJWE1FOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIGNmMl9lc2NORUc6IC8qIGluIHNwZWMgKi8KKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgbmVnXG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY0VROiAvKiBpbiBzcGVjICovCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGVxXG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY0RST1A6IC8qIGluIHNwZWMgKi8KKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgZHJvcFxuIiApKTsKKworICAgICAgICAgICAgQ0YyX0ZJWE1FOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIGNmMl9lc2NQVVQ6IC8qIGluIHNwZWMgKi8KKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgcHV0XG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY0dFVDogLyogaW4gc3BlYyAqLworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBnZXRcbiIgKSk7CisKKyAgICAgICAgICAgIENGMl9GSVhNRTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBjZjJfZXNjSUZFTFNFOiAvKiBpbiBzcGVjICovCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGlmZWxzZVxuIiApKTsKKworICAgICAgICAgICAgQ0YyX0ZJWE1FOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIGNmMl9lc2NSQU5ET006IC8qIGluIHNwZWMgKi8KKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgcmFuZG9tXG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY01VTDogLyogaW4gc3BlYyAqLworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBtdWxcbiIgKSk7CisKKyAgICAgICAgICAgIENGMl9GSVhNRTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBjZjJfZXNjU1FSVDogLyogaW4gc3BlYyAqLworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBzcXJ0XG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY0RVUDogLyogaW4gc3BlYyAqLworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBkdXBcbiIgKSk7CisKKyAgICAgICAgICAgIENGMl9GSVhNRTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBjZjJfZXNjRVhDSDogLyogaW4gc3BlYyAqLworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBleGNoXG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY0lOREVYOiAvKiBpbiBzcGVjICovCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGluZGV4XG4iICkpOworCisgICAgICAgICAgICBDRjJfRklYTUU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY1JPTEw6IC8qIGluIHNwZWMgKi8KKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgcm9sbFxuIiApKTsKKworICAgICAgICAgICAgQ0YyX0ZJWE1FOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIGNmMl9lc2NIRkxFWDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZUX0Jvb2wgIHJlYWRGcm9tU3RhY2tbMTJdID0KKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRSVUUgLyogZHgxICovLCBGQUxTRSAvKiBkeTEgKi8sCisgICAgICAgICAgICAgICAgVFJVRSAvKiBkeDIgKi8sIFRSVUUgIC8qIGR5MiAqLywKKyAgICAgICAgICAgICAgICBUUlVFIC8qIGR4MyAqLywgRkFMU0UgLyogZHkzICovLAorICAgICAgICAgICAgICAgIFRSVUUgLyogZHg0ICovLCBGQUxTRSAvKiBkeTQgKi8sCisgICAgICAgICAgICAgICAgVFJVRSAvKiBkeDUgKi8sIEZBTFNFIC8qIGR5NSAqLywKKyAgICAgICAgICAgICAgICBUUlVFIC8qIGR4NiAqLywgRkFMU0UgLyogZHk2ICovCisgICAgICAgICAgICAgIH07CisKKworICAgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGhmbGV4XG4iICkpOworCisgICAgICAgICAgICAgIGNmMl9kb0ZsZXgoIG9wU3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VyWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBoUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZEZyb21TdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UgLyogZG9Db25kaXRpb25hbExhc3RSZWFkICovICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgIGNhc2UgY2YyX2VzY0ZMRVg6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGVF9Cb29sICByZWFkRnJvbVN0YWNrWzEyXSA9CisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUUlVFIC8qIGR4MSAqLywgVFJVRSAvKiBkeTEgKi8sCisgICAgICAgICAgICAgICAgVFJVRSAvKiBkeDIgKi8sIFRSVUUgLyogZHkyICovLAorICAgICAgICAgICAgICAgIFRSVUUgLyogZHgzICovLCBUUlVFIC8qIGR5MyAqLywKKyAgICAgICAgICAgICAgICBUUlVFIC8qIGR4NCAqLywgVFJVRSAvKiBkeTQgKi8sCisgICAgICAgICAgICAgICAgVFJVRSAvKiBkeDUgKi8sIFRSVUUgLyogZHk1ICovLAorICAgICAgICAgICAgICAgIFRSVUUgLyogZHg2ICovLCBUUlVFIC8qIGR5NiAqLworICAgICAgICAgICAgICB9OworCisKKyAgICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBmbGV4XG4iICkpOworCisgICAgICAgICAgICAgIGNmMl9kb0ZsZXgoIG9wU3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VyWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBoUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZEZyb21TdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UgLyogZG9Db25kaXRpb25hbExhc3RSZWFkICovICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsgICAgICAvKiBUT0RPOiB3aHkgaXMgdGhpcyBub3QgYSBjb250aW51ZT8gKi8KKworICAgICAgICAgIGNhc2UgY2YyX2VzY0hGTEVYMToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZUX0Jvb2wgIHJlYWRGcm9tU3RhY2tbMTJdID0KKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRSVUUgLyogZHgxICovLCBUUlVFICAvKiBkeTEgKi8sCisgICAgICAgICAgICAgICAgVFJVRSAvKiBkeDIgKi8sIFRSVUUgIC8qIGR5MiAqLywKKyAgICAgICAgICAgICAgICBUUlVFIC8qIGR4MyAqLywgRkFMU0UgLyogZHkzICovLAorICAgICAgICAgICAgICAgIFRSVUUgLyogZHg0ICovLCBGQUxTRSAvKiBkeTQgKi8sCisgICAgICAgICAgICAgICAgVFJVRSAvKiBkeDUgKi8sIFRSVUUgIC8qIGR5NSAqLywKKyAgICAgICAgICAgICAgICBUUlVFIC8qIGR4NiAqLywgRkFMU0UgLyogZHk2ICovCisgICAgICAgICAgICAgIH07CisKKworICAgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGhmbGV4MVxuIiApKTsKKworICAgICAgICAgICAgICBjZjJfZG9GbGV4KCBvcFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VyWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1clksCisgICAgICAgICAgICAgICAgICAgICAgICAgICZnbHlwaFBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRGcm9tU3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFIC8qIGRvQ29uZGl0aW9uYWxMYXN0UmVhZCAqLyApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICBjYXNlIGNmMl9lc2NGTEVYMToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZUX0Jvb2wgIHJlYWRGcm9tU3RhY2tbMTJdID0KKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRSVUUgIC8qIGR4MSAqLywgVFJVRSAgLyogZHkxICovLAorICAgICAgICAgICAgICAgIFRSVUUgIC8qIGR4MiAqLywgVFJVRSAgLyogZHkyICovLAorICAgICAgICAgICAgICAgIFRSVUUgIC8qIGR4MyAqLywgVFJVRSAgLyogZHkzICovLAorICAgICAgICAgICAgICAgIFRSVUUgIC8qIGR4NCAqLywgVFJVRSAgLyogZHk0ICovLAorICAgICAgICAgICAgICAgIFRSVUUgIC8qIGR4NSAqLywgVFJVRSAgLyogZHk1ICovLAorICAgICAgICAgICAgICAgIEZBTFNFIC8qIGR4NiAqLywgRkFMU0UgLyogZHk2ICovCisgICAgICAgICAgICAgIH07CisKKworICAgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGZsZXgxXG4iICkpOworCisgICAgICAgICAgICAgIGNmMl9kb0ZsZXgoIG9wU3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VyWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBoUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZEZyb21TdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSAvKiBkb0NvbmRpdGlvbmFsTGFzdFJlYWQgKi8gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgY2FzZSBjZjJfZXNjUkVTRVJWRURfMToKKyAgICAgICAgICBjYXNlIGNmMl9lc2NSRVNFUlZFRF8yOgorICAgICAgICAgIGNhc2UgY2YyX2VzY1JFU0VSVkVEXzY6CisgICAgICAgICAgY2FzZSBjZjJfZXNjUkVTRVJWRURfNzoKKyAgICAgICAgICBjYXNlIGNmMl9lc2NSRVNFUlZFRF84OgorICAgICAgICAgIGNhc2UgY2YyX2VzY1JFU0VSVkVEXzEzOgorICAgICAgICAgIGNhc2UgY2YyX2VzY1JFU0VSVkVEXzE2OgorICAgICAgICAgIGNhc2UgY2YyX2VzY1JFU0VSVkVEXzE3OgorICAgICAgICAgIGNhc2UgY2YyX2VzY1JFU0VSVkVEXzE5OgorICAgICAgICAgIGNhc2UgY2YyX2VzY1JFU0VSVkVEXzI1OgorICAgICAgICAgIGNhc2UgY2YyX2VzY1JFU0VSVkVEXzMxOgorICAgICAgICAgIGNhc2UgY2YyX2VzY1JFU0VSVkVEXzMyOgorICAgICAgICAgIGNhc2UgY2YyX2VzY1JFU0VSVkVEXzMzOgorICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIHVua25vd24gb3AgKDEyLCAlZClcbiIsIG9wMiApKTsKKworICAgICAgICAgIH07IC8qIGVuZCBvZiBzd2l0Y2ggc3RhdGVtZW50IGNoZWNraW5nIGBvcDInICovCisKKyAgICAgICAgfSAvKiBjYXNlIGNmMl9jbWRFU0MgKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgY2YyX2NtZEVORENIQVI6CisgICAgICAgIEZUX1RSQUNFNCgoICIgZW5kY2hhclxuIiApKTsKKworICAgICAgICBpZiAoIGNmMl9zdGFja19jb3VudCggb3BTdGFjayApID09IDEgfHwKKyAgICAgICAgICAgICBjZjJfc3RhY2tfY291bnQoIG9wU3RhY2sgKSA9PSA1ICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggIWhhdmVXaWR0aCApCisgICAgICAgICAgICAqd2lkdGggPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgMCApICsgbm9taW5hbFdpZHRoWDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHdpZHRoIGlzIGRlZmluZWQgb3IgZGVmYXVsdCBhZnRlciB0aGlzICovCisgICAgICAgIGhhdmVXaWR0aCA9IFRSVUU7CisKKyAgICAgICAgaWYgKCBmb250LT5kZWNvZGVyLT53aWR0aF9vbmx5ICkKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKworICAgICAgICAvKiBjbG9zZSBwYXRoIGlmIHN0aWxsIG9wZW4gKi8KKyAgICAgICAgY2YyX2dseXBocGF0aF9jbG9zZU9wZW5QYXRoKCAmZ2x5cGhQYXRoICk7CisKKyAgICAgICAgaWYgKCBjZjJfc3RhY2tfY291bnQoIG9wU3RhY2sgKSA+IDEgKQorICAgICAgICB7CisgICAgICAgICAgLyogbXVzdCBiZSBlaXRoZXIgNCBvciA1IC0tICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qIHRoaXMgaXMgYSAoZGVwcmVjYXRlZCkgaW1wbGllZCBgc2VhYycgb3BlcmF0b3IgKi8KKworICAgICAgICAgIENGMl9VSW50ICAgICAgIGFjaGFyOworICAgICAgICAgIENGMl9VSW50ICAgICAgIGJjaGFyOworICAgICAgICAgIENGMl9CdWZmZXJSZWMgIGNvbXBvbmVudDsKKyAgICAgICAgICBDRjJfRml4ZWQgICAgICBkdW1teVdpZHRoOyAgIC8qIGlnbm9yZSBjb21wb25lbnQgd2lkdGggKi8KKyAgICAgICAgICBGVF9FcnJvciAgICAgICBlcnJvcjI7CisKKworICAgICAgICAgIGlmICggZG9pbmdTZWFjICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBsYXN0RXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9HbHlwaF9Gb3JtYXQgKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsgICAgICAvKiBuZXN0ZWQgc2VhYyAqLworICAgICAgICAgIH0KKworICAgICAgICAgIGFjaGFyID0gY2YyX3N0YWNrX3BvcEludCggb3BTdGFjayApOworICAgICAgICAgIGJjaGFyID0gY2YyX3N0YWNrX3BvcEludCggb3BTdGFjayApOworCisgICAgICAgICAgY3VyWSA9IGNmMl9zdGFja19wb3BGaXhlZCggb3BTdGFjayApOworICAgICAgICAgIGN1clggPSBjZjJfc3RhY2tfcG9wRml4ZWQoIG9wU3RhY2sgKTsKKworICAgICAgICAgIGVycm9yMiA9IGNmMl9nZXRTZWFjQ29tcG9uZW50KCBkZWNvZGVyLCBhY2hhciwgJmNvbXBvbmVudCApOworICAgICAgICAgIGlmICggZXJyb3IyICkKKyAgICAgICAgICB7CisgICAgICAgICAgICAgbGFzdEVycm9yID0gZXJyb3IyOyAgICAgIC8qIHBhc3MgRnJlZVR5cGUgZXJyb3IgdGhyb3VnaCAqLworICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICB9CisgICAgICAgICAgY2YyX2ludGVycFQyQ2hhclN0cmluZyggZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXlXaWR0aCApOworICAgICAgICAgIGNmMl9mcmVlU2VhY0NvbXBvbmVudCggZGVjb2RlciwgJmNvbXBvbmVudCApOworCisgICAgICAgICAgZXJyb3IyID0gY2YyX2dldFNlYWNDb21wb25lbnQoIGRlY29kZXIsIGJjaGFyLCAmY29tcG9uZW50ICk7CisgICAgICAgICAgaWYgKCBlcnJvcjIgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGxhc3RFcnJvciA9IGVycm9yMjsgICAgICAvKiBwYXNzIEZyZWVUeXBlIGVycm9yIHRocm91Z2ggKi8KKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICB9CisgICAgICAgICAgY2YyX2ludGVycFQyQ2hhclN0cmluZyggZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXlXaWR0aCApOworICAgICAgICAgIGNmMl9mcmVlU2VhY0NvbXBvbmVudCggZGVjb2RlciwgJmNvbXBvbmVudCApOworICAgICAgICB9CisgICAgICAgIGdvdG8gZXhpdDsKKworICAgICAgY2FzZSBjZjJfY21kQ05UUk1BU0s6CisgICAgICBjYXNlIGNmMl9jbWRISU5UTUFTSzoKKyAgICAgICAgLyogdGhlIGZpbmFsIFxuIGluIHRoZSB0cmFjaW5nIG1lc3NhZ2UgZ2V0cyBhZGRlZCBpbiAgICAgICovCisgICAgICAgIC8qIGBjZjJfaGludG1hc2tfcmVhZCcgKHdoaWNoIGFsc28gdHJhY2VzIHRoZSBtYXNrIGJ5dGVzKSAqLworICAgICAgICBGVF9UUkFDRTQoKCBvcDEgPT0gY2YyX2NtZENOVFJNQVNLID8gIiBjbnRybWFzayIgOiAiIGhpbnRtYXNrIiApKTsKKworICAgICAgICAvKiBpZiB0aGVyZSBhcmUgYXJndW1lbnRzIG9uIHRoZSBzdGFjaywgdGhlcmUgdGhpcyBpcyBhbiAqLworICAgICAgICAvKiBpbXBsaWVkIGNmMl9jbWRWU1RFTUhNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBpZiAoIGNmMl9zdGFja19jb3VudCggb3BTdGFjayApICE9IDAgKQorICAgICAgICB7CisgICAgICAgICAgLyogbmV2ZXIgYWRkIGhpbnRzIGFmdGVyIHRoZSBtYXNrIGlzIGNvbXB1dGVkICovCisgICAgICAgICAgaWYgKCBjZjJfaGludG1hc2tfaXNWYWxpZCggJmhpbnRNYXNrICkgKQorICAgICAgICAgICAgRlRfVFJBQ0U0KCggImNmMl9pbnRlcnBUMkNoYXJTdHJpbmc6IGludmFsaWQgaGludCBtYXNrXG4iICkpOworICAgICAgICB9CisKKyAgICAgICAgY2YyX2RvU3RlbXMoIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICBvcFN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgJnZTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAmaGF2ZVdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgMCApOworCisgICAgICAgIGlmICggZm9udC0+ZGVjb2Rlci0+d2lkdGhfb25seSApCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICAgICAgaWYgKCBvcDEgPT0gY2YyX2NtZEhJTlRNQVNLICkKKyAgICAgICAgeworICAgICAgICAgIC8qIGNvbnN1bWUgdGhlIGhpbnQgbWFzayBieXRlcyB3aGljaCBmb2xsb3cgdGhlIG9wZXJhdG9yICovCisgICAgICAgICAgY2YyX2hpbnRtYXNrX3JlYWQoICZoaW50TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2YyX2FycnN0YWNrX3NpemUoICZoU3RlbUhpbnRBcnJheSApICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZjJfYXJyc3RhY2tfc2l6ZSggJnZTdGVtSGludEFycmF5ICkgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAvKgorICAgICAgICAgICAqIENvbnN1bWUgdGhlIGNvdW50ZXIgbWFzayBieXRlcyB3aGljaCBmb2xsb3cgdGhlIG9wZXJhdG9yOgorICAgICAgICAgICAqIEJ1aWxkIGEgdGVtcG9yYXJ5IGhpbnQgbWFwLCBqdXN0IHRvIHBsYWNlIGFuZCBsb2NrIHRob3NlCisgICAgICAgICAgICogc3RlbXMgcGFydGljaXBhdGluZyBpbiB0aGUgY291bnRlciBtYXNrLiAgVGhlc2UgYXJlIG1vc3QKKyAgICAgICAgICAgKiBsaWtlbHkgdGhlIGRvbWluYW50IGhzdGVtcywgYW5kIGFyZSBncm91cGVkIHRvZ2V0aGVyIGluIGEKKyAgICAgICAgICAgKiBmZXcgY291bnRlciBncm91cHMsIG5vdCBuZWNlc3NhcmlseSBpbiBjb3JyZXNwb25kZW5jZQorICAgICAgICAgICAqIHdpdGggdGhlIGhpbnQgZ3JvdXBzLiAgVGhpcyByZWR1Y2VzIHRoZSBjaGFuY2VzIG9mCisgICAgICAgICAgICogY29uZmxpY3RzIGJldHdlZW4gaHN0ZW1zIHRoYXQgYXJlIGluaXRpYWxseSBwbGFjZWQgaW4KKyAgICAgICAgICAgKiBzZXBhcmF0ZSBoaW50IGdyb3VwcyBhbmQgdGhlbiBicm91Z2h0IHRvZ2V0aGVyLiAgVGhlCisgICAgICAgICAgICogcG9zaXRpb25zIGFyZSBjb3BpZWQgYmFjayB0byBgaFN0ZW1IaW50QXJyYXknLCBzbyB3ZSBjYW4KKyAgICAgICAgICAgKiBkaXNjYXJkIGBjb3VudGVyTWFzaycgYW5kIGBjb3VudGVySGludE1hcCcuCisgICAgICAgICAgICoKKyAgICAgICAgICAgKi8KKyAgICAgICAgICBDRjJfSGludE1hcFJlYyAgIGNvdW50ZXJIaW50TWFwOworICAgICAgICAgIENGMl9IaW50TWFza1JlYyAgY291bnRlck1hc2s7CisKKworICAgICAgICAgIGNmMl9oaW50bWFwX2luaXQoICZjb3VudGVySGludE1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnbHlwaFBhdGguaW5pdGlhbEhpbnRNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBoUGF0aC5oaW50TW92ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVZICk7CisgICAgICAgICAgY2YyX2hpbnRtYXNrX2luaXQoICZjb3VudGVyTWFzaywgZXJyb3IgKTsKKworICAgICAgICAgIGNmMl9oaW50bWFza19yZWFkKCAmY291bnRlck1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmMl9hcnJzdGFja19zaXplKCAmaFN0ZW1IaW50QXJyYXkgKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2YyX2FycnN0YWNrX3NpemUoICZ2U3RlbUhpbnRBcnJheSApICk7CisgICAgICAgICAgY2YyX2hpbnRtYXBfYnVpbGQoICZjb3VudGVySGludE1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhTdGVtSGludEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdlN0ZW1IaW50QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb3VudGVyTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UgKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBjZjJfY21kUk1PVkVUTzoKKyAgICAgICAgRlRfVFJBQ0U0KCggIiBybW92ZXRvXG4iICkpOworCisgICAgICAgIGlmICggY2YyX3N0YWNrX2NvdW50KCBvcFN0YWNrICkgPiAyICYmICFoYXZlV2lkdGggKQorICAgICAgICAgICp3aWR0aCA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCAwICkgKyBub21pbmFsV2lkdGhYOworCisgICAgICAgIC8qIHdpZHRoIGlzIGRlZmluZWQgb3IgZGVmYXVsdCBhZnRlciB0aGlzICovCisgICAgICAgIGhhdmVXaWR0aCA9IFRSVUU7CisKKyAgICAgICAgaWYgKCBmb250LT5kZWNvZGVyLT53aWR0aF9vbmx5ICkKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKworICAgICAgICBjdXJZICs9IGNmMl9zdGFja19wb3BGaXhlZCggb3BTdGFjayApOworICAgICAgICBjdXJYICs9IGNmMl9zdGFja19wb3BGaXhlZCggb3BTdGFjayApOworCisgICAgICAgIGNmMl9nbHlwaHBhdGhfbW92ZVRvKCAmZ2x5cGhQYXRoLCBjdXJYLCBjdXJZICk7CisKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgY2YyX2NtZEhNT1ZFVE86CisgICAgICAgIEZUX1RSQUNFNCgoICIgaG1vdmV0b1xuIiApKTsKKworICAgICAgICBpZiAoIGNmMl9zdGFja19jb3VudCggb3BTdGFjayApID4gMSAmJiAhaGF2ZVdpZHRoICkKKyAgICAgICAgICAqd2lkdGggPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgMCApICsgbm9taW5hbFdpZHRoWDsKKworICAgICAgICAvKiB3aWR0aCBpcyBkZWZpbmVkIG9yIGRlZmF1bHQgYWZ0ZXIgdGhpcyAqLworICAgICAgICBoYXZlV2lkdGggPSBUUlVFOworCisgICAgICAgIGlmICggZm9udC0+ZGVjb2Rlci0+d2lkdGhfb25seSApCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICAgICAgY3VyWCArPSBjZjJfc3RhY2tfcG9wRml4ZWQoIG9wU3RhY2sgKTsKKworICAgICAgICBjZjJfZ2x5cGhwYXRoX21vdmVUbyggJmdseXBoUGF0aCwgY3VyWCwgY3VyWSApOworCisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIGNmMl9jbWRSTElORUNVUlZFOgorICAgICAgICB7CisgICAgICAgICAgQ0YyX1VJbnQgIGNvdW50ID0gY2YyX3N0YWNrX2NvdW50KCBvcFN0YWNrICk7CisgICAgICAgICAgQ0YyX1VJbnQgIGluZGV4ID0gMDsKKworCisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBybGluZWN1cnZlXG4iICkpOworCisgICAgICAgICAgd2hpbGUgKCBpbmRleCArIDYgPCBjb3VudCApCisgICAgICAgICAgeworICAgICAgICAgICAgY3VyWCArPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAwICk7CisgICAgICAgICAgICBjdXJZICs9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDEgKTsKKworICAgICAgICAgICAgY2YyX2dseXBocGF0aF9saW5lVG8oICZnbHlwaFBhdGgsIGN1clgsIGN1clkgKTsKKyAgICAgICAgICAgIGluZGV4ICs9IDI7CisgICAgICAgICAgfQorCisgICAgICAgICAgd2hpbGUgKCBpbmRleCA8IGNvdW50ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBDRjJfRml4ZWQgIHgxID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgMCApICsgY3VyWDsKKyAgICAgICAgICAgIENGMl9GaXhlZCAgeTEgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAxICkgKyBjdXJZOworICAgICAgICAgICAgQ0YyX0ZpeGVkICB4MiA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDIgKSArIHgxOworICAgICAgICAgICAgQ0YyX0ZpeGVkICB5MiA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDMgKSArIHkxOworICAgICAgICAgICAgQ0YyX0ZpeGVkICB4MyA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDQgKSArIHgyOworICAgICAgICAgICAgQ0YyX0ZpeGVkICB5MyA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDUgKSArIHkyOworCisKKyAgICAgICAgICAgIGNmMl9nbHlwaHBhdGhfY3VydmVUbyggJmdseXBoUGF0aCwgeDEsIHkxLCB4MiwgeTIsIHgzLCB5MyApOworCisgICAgICAgICAgICBjdXJYICAgPSB4MzsKKyAgICAgICAgICAgIGN1clkgICA9IHkzOworICAgICAgICAgICAgaW5kZXggKz0gNjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBjZjJfc3RhY2tfY2xlYXIoIG9wU3RhY2sgKTsKKyAgICAgICAgfQorICAgICAgICBjb250aW51ZTsgLyogbm8gbmVlZCB0byBjbGVhciBzdGFjayBhZ2FpbiAqLworCisgICAgICBjYXNlIGNmMl9jbWRWVkNVUlZFVE86CisgICAgICAgIHsKKyAgICAgICAgICBDRjJfVUludCAgY291bnQgPSBjZjJfc3RhY2tfY291bnQoIG9wU3RhY2sgKTsKKyAgICAgICAgICBDRjJfVUludCAgaW5kZXggPSAwOworCisKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHZ2Y3VydmV0b1xuIiApKTsKKworICAgICAgICAgIHdoaWxlICggaW5kZXggPCBjb3VudCApCisgICAgICAgICAgeworICAgICAgICAgICAgQ0YyX0ZpeGVkICB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzOworCisKKyAgICAgICAgICAgIGlmICggKCBjb3VudCAtIGluZGV4ICkgJiAxICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgeDEgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKSArIGN1clg7CisKKyAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeDEgPSBjdXJYOworCisgICAgICAgICAgICB5MSA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDAgKSArIGN1clk7CisgICAgICAgICAgICB4MiA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDEgKSArIHgxOworICAgICAgICAgICAgeTIgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAyICkgKyB5MTsKKyAgICAgICAgICAgIHgzID0geDI7CisgICAgICAgICAgICB5MyA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDMgKSArIHkyOworCisgICAgICAgICAgICBjZjJfZ2x5cGhwYXRoX2N1cnZlVG8oICZnbHlwaFBhdGgsIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMgKTsKKworICAgICAgICAgICAgY3VyWCAgID0geDM7CisgICAgICAgICAgICBjdXJZICAgPSB5MzsKKyAgICAgICAgICAgIGluZGV4ICs9IDQ7CisgICAgICAgICAgfQorCisgICAgICAgICAgY2YyX3N0YWNrX2NsZWFyKCBvcFN0YWNrICk7CisgICAgICAgIH0KKyAgICAgICAgY29udGludWU7IC8qIG5vIG5lZWQgdG8gY2xlYXIgc3RhY2sgYWdhaW4gKi8KKworICAgICAgY2FzZSBjZjJfY21kSEhDVVJWRVRPOgorICAgICAgICB7CisgICAgICAgICAgQ0YyX1VJbnQgIGNvdW50ID0gY2YyX3N0YWNrX2NvdW50KCBvcFN0YWNrICk7CisgICAgICAgICAgQ0YyX1VJbnQgIGluZGV4ID0gMDsKKworCisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBoaGN1cnZldG9cbiIgKSk7CisKKyAgICAgICAgICB3aGlsZSAoIGluZGV4IDwgY291bnQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIENGMl9GaXhlZCAgeDEsIHkxLCB4MiwgeTIsIHgzLCB5MzsKKworCisgICAgICAgICAgICBpZiAoICggY291bnQgLSBpbmRleCApICYgMSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHkxID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICkgKyBjdXJZOworCisgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHkxID0gY3VyWTsKKworICAgICAgICAgICAgeDEgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAwICkgKyBjdXJYOworICAgICAgICAgICAgeDIgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAxICkgKyB4MTsKKyAgICAgICAgICAgIHkyID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgMiApICsgeTE7CisgICAgICAgICAgICB4MyA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDMgKSArIHgyOworICAgICAgICAgICAgeTMgPSB5MjsKKworICAgICAgICAgICAgY2YyX2dseXBocGF0aF9jdXJ2ZVRvKCAmZ2x5cGhQYXRoLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzICk7CisKKyAgICAgICAgICAgIGN1clggICA9IHgzOworICAgICAgICAgICAgY3VyWSAgID0geTM7CisgICAgICAgICAgICBpbmRleCArPSA0OworICAgICAgICAgIH0KKworICAgICAgICAgIGNmMl9zdGFja19jbGVhciggb3BTdGFjayApOworICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlOyAvKiBubyBuZWVkIHRvIGNsZWFyIHN0YWNrIGFnYWluICovCisKKyAgICAgIGNhc2UgY2YyX2NtZFZIQ1VSVkVUTzoKKyAgICAgIGNhc2UgY2YyX2NtZEhWQ1VSVkVUTzoKKyAgICAgICAgeworICAgICAgICAgIENGMl9VSW50ICBjb3VudCA9IGNmMl9zdGFja19jb3VudCggb3BTdGFjayApOworICAgICAgICAgIENGMl9VSW50ICBpbmRleCA9IDA7CisKKyAgICAgICAgICBGVF9Cb29sICBhbHRlcm5hdGUgPSBvcDEgPT0gY2YyX2NtZEhWQ1VSVkVUTzsKKworCisgICAgICAgICAgRlRfVFJBQ0U0KCggYWx0ZXJuYXRlID8gIiBodmN1cnZldG9cbiIgOiAiIHZoY3VydmV0b1xuIiApKTsKKworICAgICAgICAgIHdoaWxlICggaW5kZXggPCBjb3VudCApCisgICAgICAgICAgeworICAgICAgICAgICAgQ0YyX0ZpeGVkIHgxLCB4MiwgeDMsIHkxLCB5MiwgeTM7CisKKworICAgICAgICAgICAgaWYgKCBhbHRlcm5hdGUgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB4MSA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDAgKSArIGN1clg7CisgICAgICAgICAgICAgIHkxID0gY3VyWTsKKyAgICAgICAgICAgICAgeDIgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAxICkgKyB4MTsKKyAgICAgICAgICAgICAgeTIgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAyICkgKyB5MTsKKyAgICAgICAgICAgICAgeTMgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyAzICkgKyB5MjsKKworICAgICAgICAgICAgICBpZiAoIGNvdW50IC0gaW5kZXggPT0gNSApCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB4MyA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDQgKSArIHgyOworCisgICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeDMgPSB4MjsKKworICAgICAgICAgICAgICBhbHRlcm5hdGUgPSBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgeDEgPSBjdXJYOworICAgICAgICAgICAgICB5MSA9IGNmMl9zdGFja19nZXRSZWFsKCBvcFN0YWNrLCBpbmRleCArIDAgKSArIGN1clk7CisgICAgICAgICAgICAgIHgyID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgMSApICsgeDE7CisgICAgICAgICAgICAgIHkyID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgMiApICsgeTE7CisgICAgICAgICAgICAgIHgzID0gY2YyX3N0YWNrX2dldFJlYWwoIG9wU3RhY2ssIGluZGV4ICsgMyApICsgeDI7CisKKyAgICAgICAgICAgICAgaWYgKCBjb3VudCAtIGluZGV4ID09IDUgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeTMgPSBjZjJfc3RhY2tfZ2V0UmVhbCggb3BTdGFjaywgaW5kZXggKyA0ICkgKyB5MjsKKworICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHkzID0geTI7CisKKyAgICAgICAgICAgICAgYWx0ZXJuYXRlID0gVFJVRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2YyX2dseXBocGF0aF9jdXJ2ZVRvKCAmZ2x5cGhQYXRoLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzICk7CisKKyAgICAgICAgICAgIGN1clggICA9IHgzOworICAgICAgICAgICAgY3VyWSAgID0geTM7CisgICAgICAgICAgICBpbmRleCArPSA0OworICAgICAgICAgIH0KKworICAgICAgICAgIGNmMl9zdGFja19jbGVhciggb3BTdGFjayApOworICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlOyAgICAgLyogbm8gbmVlZCB0byBjbGVhciBzdGFjayBhZ2FpbiAqLworCisgICAgICBjYXNlIGNmMl9jbWRFWFRFTkRFRE5NQlI6CisgICAgICAgIHsKKyAgICAgICAgICBDRjJfSW50ICB2OworCisKKyAgICAgICAgICB2ID0gKEZUX1Nob3J0KSggKCBjZjJfYnVmX3JlYWRCeXRlKCBjaGFyc3RyaW5nICkgPDwgOCApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZjJfYnVmX3JlYWRCeXRlKCBjaGFyc3RyaW5nICkgICAgICAgICk7CisKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiICVkIiwgdiApKTsKKworICAgICAgICAgIGNmMl9zdGFja19wdXNoSW50KCBvcFN0YWNrLCB2ICk7CisgICAgICAgIH0KKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIG51bWJlcnMgKi8KKyAgICAgICAgeworICAgICAgICAgIGlmICggLyogb3AxID49IDMyICYmICovIG9wMSA8PSAyNDYgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIENGMl9JbnQgIHY7CisKKworICAgICAgICAgICAgdiA9IG9wMSAtIDEzOTsKKworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiAlZCIsIHYgKSk7CisKKyAgICAgICAgICAgIC8qIC0xMDcgLi4gMTA3ICovCisgICAgICAgICAgICBjZjJfc3RhY2tfcHVzaEludCggb3BTdGFjaywgdiApOworICAgICAgICAgIH0KKworICAgICAgICAgIGVsc2UgaWYgKCAvKiBvcDEgPj0gMjQ3ICYmICovIG9wMSA8PSAyNTAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIENGMl9JbnQgIHY7CisKKworICAgICAgICAgICAgdiAgPSBvcDE7CisgICAgICAgICAgICB2IC09IDI0NzsKKyAgICAgICAgICAgIHYgKj0gMjU2OworICAgICAgICAgICAgdiArPSBjZjJfYnVmX3JlYWRCeXRlKCBjaGFyc3RyaW5nICk7CisgICAgICAgICAgICB2ICs9IDEwODsKKworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiAlZCIsIHYgKSk7CisKKyAgICAgICAgICAgIC8qIDEwOCAuLiAxMTMxICovCisgICAgICAgICAgICBjZjJfc3RhY2tfcHVzaEludCggb3BTdGFjaywgdiApOworICAgICAgICAgIH0KKworICAgICAgICAgIGVsc2UgaWYgKCAvKiBvcDEgPj0gMjUxICYmICovIG9wMSA8PSAyNTQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIENGMl9JbnQgIHY7CisKKworICAgICAgICAgICAgdiAgPSBvcDE7CisgICAgICAgICAgICB2IC09IDI1MTsKKyAgICAgICAgICAgIHYgKj0gMjU2OworICAgICAgICAgICAgdiArPSBjZjJfYnVmX3JlYWRCeXRlKCBjaGFyc3RyaW5nICk7CisgICAgICAgICAgICB2ICA9IC12IC0gMTA4OworCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiICVkIiwgdiApKTsKKworICAgICAgICAgICAgLyogLTExMzEgLi4gLTEwOCAqLworICAgICAgICAgICAgY2YyX3N0YWNrX3B1c2hJbnQoIG9wU3RhY2ssIHYgKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBlbHNlIC8qIG9wMSA9PSAyNTUgKi8KKyAgICAgICAgICB7CisgICAgICAgICAgICBDRjJfRml4ZWQgIHY7CisKKworICAgICAgICAgICAgdiA9IChDRjJfRml4ZWQpCisgICAgICAgICAgICAgICAgICAoICggKEZUX1VJbnQzMiljZjJfYnVmX3JlYWRCeXRlKCBjaGFyc3RyaW5nICkgPDwgMjQgKSB8CisgICAgICAgICAgICAgICAgICAgICggKEZUX1VJbnQzMiljZjJfYnVmX3JlYWRCeXRlKCBjaGFyc3RyaW5nICkgPDwgMTYgKSB8CisgICAgICAgICAgICAgICAgICAgICggKEZUX1VJbnQzMiljZjJfYnVmX3JlYWRCeXRlKCBjaGFyc3RyaW5nICkgPDwgIDggKSB8CisgICAgICAgICAgICAgICAgICAgICAgKEZUX1VJbnQzMiljZjJfYnVmX3JlYWRCeXRlKCBjaGFyc3RyaW5nICkgICAgICAgICApOworCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiICUuMmYiLCB2IC8gNjU1MzYuMCApKTsKKworICAgICAgICAgICAgY2YyX3N0YWNrX3B1c2hGaXhlZCggb3BTdGFjaywgdiApOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjb250aW51ZTsgICAvKiBkb24ndCBjbGVhciBzdGFjayAqLworCisgICAgICB9IC8qIGVuZCBvZiBzd2l0Y2ggc3RhdGVtZW50IGNoZWNraW5nIGBvcDEnICovCisKKyAgICAgIGNmMl9zdGFja19jbGVhciggb3BTdGFjayApOworCisgICAgfSAvKiBlbmQgb2YgbWFpbiBpbnRlcnByZXRlciBsb29wICovCisKKyAgICAvKiB3ZSBnZXQgaGVyZSBpZiB0aGUgY2hhcnN0cmluZyBlbmRzIHdpdGhvdXQgY2YyX2NtZEVORENIQVIgKi8KKyAgICBGVF9UUkFDRTQoKCAiY2YyX2ludGVycFQyQ2hhclN0cmluZzoiCisgICAgICAgICAgICAgICAgIiAgY2hhcnN0cmluZyBlbmRzIHdpdGhvdXQgRU5EQ0hBUlxuIiApKTsKKworICBleGl0OgorICAgIC8qIGNoZWNrIHdoZXRoZXIgbGFzdCBlcnJvciBzZWVuIGlzIGFsc28gdGhlIGZpcnN0IG9uZSAqLworICAgIGNmMl9zZXRFcnJvciggZXJyb3IsIGxhc3RFcnJvciApOworCisgICAgLyogZnJlZSByZXNvdXJjZXMgZnJvbSBvYmplY3RzIHdlJ3ZlIHVzZWQgKi8KKyAgICBjZjJfZ2x5cGhwYXRoX2ZpbmFsaXplKCAmZ2x5cGhQYXRoICk7CisgICAgY2YyX2FycnN0YWNrX2ZpbmFsaXplKCAmdlN0ZW1IaW50QXJyYXkgKTsKKyAgICBjZjJfYXJyc3RhY2tfZmluYWxpemUoICZoU3RlbUhpbnRBcnJheSApOworICAgIGNmMl9hcnJzdGFja19maW5hbGl6ZSggJnN1YnJTdGFjayApOworICAgIGNmMl9zdGFja19mcmVlKCBvcFN0YWNrICk7CisKKyAgICBGVF9UUkFDRTQoKCAiXG4iICkpOworCisgICAgcmV0dXJuOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJpbnRycC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyaW50cnAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWQ4OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2YyaW50cnAuaApAQCAtMCwwICsxLDgzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZjJmb250LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQWRvYmUncyBDRkYgSW50ZXJwcmV0ZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDctMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yICAgICAgICovCisvKiAgb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQgICAgICAqLworLyogIGhlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlICAgKi8KKy8qICB1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsICAgICovCisvKiAgTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzICAgKi8KKy8qICB0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5ICAgICovCisvKiAgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yICAgICAqLworLyogICJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCAgICAgICAgICAgICAgKi8KKy8qICByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50ICAgICovCisvKiAgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgICAgICAqLworLyogIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSAgKi8KKy8qICBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSAgICAgICovCisvKiAgaW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciAgICAqLworLyogIGNvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcyAgICAgICAgKi8KKy8qICBzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAgICAgICovCisvKiAgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgICAqLworLyogIHRoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgICAgKi8KKy8qICBkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyAgICovCisvKiAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mICAqLworLyogIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSAgICAqLworLyogIGhhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICAgICAgICAgICAgICAgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sICAgICovCisvKiAgYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NGMklOVFJQX0hfXworI2RlZmluZSBfX0NGMklOVFJQX0hfXworCisKKyNpbmNsdWRlICJjZjJmdC5oIgorI2luY2x1ZGUgImNmMmhpbnRzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9oaW50bWFza19pbml0KCBDRjJfSGludE1hc2sgIGhpbnRtYXNrLAorICAgICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICAgICBlcnJvciApOworICBGVF9MT0NBTCggRlRfQm9vbCApCisgIGNmMl9oaW50bWFza19pc1ZhbGlkKCBjb25zdCBDRjJfSGludE1hc2sgIGhpbnRtYXNrICk7CisgIEZUX0xPQ0FMKCBGVF9Cb29sICkKKyAgY2YyX2hpbnRtYXNrX2lzTmV3KCBjb25zdCBDRjJfSGludE1hc2sgIGhpbnRtYXNrICk7CisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2YyX2hpbnRtYXNrX3NldE5ldyggQ0YyX0hpbnRNYXNrICBoaW50bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICB2YWwgKTsKKyAgRlRfTE9DQUwoIEZUX0J5dGUqICkKKyAgY2YyX2hpbnRtYXNrX2dldE1hc2tQdHIoIENGMl9IaW50TWFzayAgaGludG1hc2sgKTsKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfaGludG1hc2tfc2V0QWxsKCBDRjJfSGludE1hc2sgIGhpbnRtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgIGJpdENvdW50ICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfaW50ZXJwVDJDaGFyU3RyaW5nKCBDRjJfRm9udCAgICAgICAgICAgICAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0J1ZmZlciAgICAgICAgICAgIGNoYXJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9PdXRsaW5lQ2FsbGJhY2tzICBjYWxsYmFja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogICAgICB0cmFuc2xhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICAgICAgICAgIGRvaW5nU2VhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ0YyX0ZpeGVkICAgICAgICAgICAgIGN1clgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENGMl9GaXhlZCAgICAgICAgICAgICBjdXJZLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQqICAgICAgICAgICAgd2lkdGggKTsKKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fQ0YySU5UUlBfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJyZWFkLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJyZWFkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlOTI5NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMnJlYWQuYwpAQCAtMCwwICsxLDExMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2YycmVhZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFkb2JlJ3MgY29kZSBmb3Igc3RyZWFtIGhhbmRsaW5nIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvciAgICAgICAqLworLyogIG9iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkICAgICAgKi8KKy8qICBoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZSAgICovCisvKiAgdXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCAgICAqLworLyogIExJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cyAgICovCisvKiAgdG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSAgICAqLworLyogIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvciAgICAgKi8KKy8qICAiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgICAgICAgICAgICAgICovCisvKiAgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCAgICAqLworLyogIGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kICAgICAgKi8KKy8qICBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgICovCisvKiAgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgICAgICAqLworLyogIGluZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgICAgKi8KKy8qICBjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMgICAgICAgICovCisvKiAgc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgICAgICAqLworLyogIChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0ICAgKi8KKy8qICB0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzICAgICovCisvKiAgZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMgICAqLworLyogIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiAgKi8KKy8qICB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIEJ5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgICAgKi8KKy8qICBoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAgICAgICAgICAgICAgICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLCAgICAqLworLyogIGFuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICJjZjJmdC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorCisjaW5jbHVkZSAiY2YyZ2x1ZS5oIgorCisjaW5jbHVkZSAiY2YyZXJyb3IuaCIKKworCisgIC8qIERlZmluZSBDRjJfSU9fRkFJTCBhcyAxIHRvIGVuYWJsZSByYW5kb20gZXJyb3JzIGFuZCByYW5kb20gKi8KKyAgLyogdmFsdWUgZXJyb3JzIGluIEkvTy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDRjJfSU9fRkFJTCAgMAorCisKKyNpZiBDRjJfSU9fRkFJTAorCisgIC8qIHNldCB0aGUgLjAwIHZhbHVlIHRvIGEgbm9uemVybyBwcm9iYWJpbGl0eSAqLworICBzdGF0aWMgaW50CisgIHJhbmRvbUVycm9yMiggdm9pZCApCisgIHsKKyAgICAvKiBmb3IgcmVnaW9uIGJ1ZmZlciBSZWFkQnl0ZSAoaW50ZXJwKSBmdW5jdGlvbiAqLworICAgIHJldHVybiAoZG91YmxlKXJhbmQoKSAvIFJBTkRfTUFYIDwgLjAwOworICB9CisKKyAgLyogc2V0IHRoZSAuMDAgdmFsdWUgdG8gYSBub256ZXJvIHByb2JhYmlsaXR5ICovCisgIHN0YXRpYyBDRjJfSW50CisgIHJhbmRvbVZhbHVlKCkKKyAgeworICAgIHJldHVybiAoZG91YmxlKXJhbmQoKSAvIFJBTkRfTUFYIDwgLjAwID8gcmFuZCgpIDogMDsKKyAgfQorCisjZW5kaWYgLyogQ0YyX0lPX0ZBSUwgKi8KKworCisgIC8qIFJlZ2lvbiBCdWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIENhbiBiZSBjb25zdHJ1Y3RlZCBmcm9tIGEgY29waWVkIGJ1ZmZlciBtYW5hZ2VkIGJ5ICovCisgIC8qIGBGQ01fZ2V0RGF0YWJsb2NrJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJlYWRzIGJ5dGVzIHdpdGggY2hlY2sgZm9yIGVuZCBvZiBidWZmZXIuICAgICAgICAgICovCisKKyAgLyogcmVhZGluZyBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciBzZXRzIGVycm9yIGFuZCByZXR1cm5zIHplcm8gKi8KKyAgRlRfTE9DQUxfREVGKCBDRjJfSW50ICkKKyAgY2YyX2J1Zl9yZWFkQnl0ZSggQ0YyX0J1ZmZlciAgYnVmICkKKyAgeworICAgIGlmICggYnVmLT5wdHIgPCBidWYtPmVuZCApCisgICAgeworI2lmIENGMl9JT19GQUlMCisgICAgICBpZiAoIHJhbmRvbUVycm9yMigpICkKKyAgICAgIHsKKyAgICAgICAgQ0YyX1NFVF9FUlJPUiggYnVmLT5lcnJvciwgSW52YWxpZF9TdHJlYW1fT3BlcmF0aW9uICk7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorCisgICAgICByZXR1cm4gKihidWYtPnB0cikrKyArIHJhbmRvbVZhbHVlKCk7CisjZWxzZQorICAgICAgcmV0dXJuICooYnVmLT5wdHIpKys7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIENGMl9TRVRfRVJST1IoIGJ1Zi0+ZXJyb3IsIEludmFsaWRfU3RyZWFtX09wZXJhdGlvbiApOworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9CisKKworICAvKiBub3RlOiBlbmQgY29uZGl0aW9uIGNhbiBvY2N1ciB3aXRob3V0IGVycm9yICovCisgIEZUX0xPQ0FMX0RFRiggRlRfQm9vbCApCisgIGNmMl9idWZfaXNFbmQoIENGMl9CdWZmZXIgIGJ1ZiApCisgIHsKKyAgICByZXR1cm4gKEZUX0Jvb2wpKCBidWYtPnB0ciA+PSBidWYtPmVuZCApOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJyZWFkLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VmN2M4YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMnJlYWQuaApAQCAtMCwwICsxLDY4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZjJyZWFkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQWRvYmUncyBjb2RlIGZvciBzdHJlYW0gaGFuZGxpbmcgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDctMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIHNvZnR3YXJlLCBhbmQgYWxsIHdvcmtzIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gc291cmNlIG9yICAgICAgICovCisvKiAgb2JqZWN0IGNvZGUgZm9ybSBhcyBpbmRpY2F0ZWQgYnkgdGhlIGNvcHlyaWdodCBub3RpY2UocykgaW5jbHVkZWQgICAgICAqLworLyogIGhlcmVpbiAoY29sbGVjdGl2ZWx5LCB0aGUgIldvcmsiKSBpcyBtYWRlIGF2YWlsYWJsZSwgYW5kIG1heSBvbmx5IGJlICAgKi8KKy8qICB1c2VkLCBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsICAgICovCisvKiAgTElDRU5TRS5UWFQuICBBZGRpdGlvbmFsbHksIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgZWFjaCBjb250cmlidXRvciB0byB0aGUgV29yayBoZXJlYnkgZ3JhbnRzICAgKi8KKy8qICB0byBhbnkgaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5ICAgICovCisvKiAgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhbmQgdGhpcyBzZWN0aW9uIChoZXJlYWZ0ZXIsICJZb3UiIG9yICAgICAqLworLyogICJZb3VyIikgYSBwZXJwZXR1YWwsIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCAgICAgICAgICAgICAgKi8KKy8qICByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50ICAgICovCisvKiAgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgICAgICAqLworLyogIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSAgKi8KKy8qICBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgc3VjaCBjb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSAgICAgICovCisvKiAgaW5mcmluZ2VkIGJ5IHRoZWlyIGNvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciAgICAqLworLyogIGNvbnRyaWJ1dGlvbihzKSB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggY29udHJpYnV0aW9uKHMpIHdhcyAgICAgICAgKi8KKy8qICBzdWJtaXR0ZWQuICBJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAgICAgICovCisvKiAgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgICAqLworLyogIHRoZSBXb3JrIG9yIGEgY29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgICAgKi8KKy8qICBkaXJlY3Qgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyAgICovCisvKiAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlIGFzIG9mICAqLworLyogIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQnkgdXNpbmcsIG1vZGlmeWluZywgb3IgZGlzdHJpYnV0aW5nIHRoZSBXb3JrIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSAgICAqLworLyogIGhhdmUgcmVhZCBhbmQgdW5kZXJzdG9vZCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICAgICAgICAgICAgICAgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRlZCBpbiB0aGlzIHNlY3Rpb24sICAgICovCisvKiAgYW5kIHlvdSBhY2NlcHQgdGhlbSBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NGMlJFQURfSF9fCisjZGVmaW5lIF9fQ0YyUkVBRF9IX18KKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIHR5cGVkZWYgc3RydWN0ICBDRjJfQnVmZmVyUmVjXworICB7CisgICAgRlRfRXJyb3IqICAgICAgIGVycm9yOworICAgIGNvbnN0IEZUX0J5dGUqICBzdGFydDsKKyAgICBjb25zdCBGVF9CeXRlKiAgZW5kOworICAgIGNvbnN0IEZUX0J5dGUqICBwdHI7CisKKyAgfSBDRjJfQnVmZmVyUmVjLCAqQ0YyX0J1ZmZlcjsKKworCisgIEZUX0xPQ0FMKCBDRjJfSW50ICkKKyAgY2YyX2J1Zl9yZWFkQnl0ZSggQ0YyX0J1ZmZlciAgYnVmICk7CisgIEZUX0xPQ0FMKCBGVF9Cb29sICkKKyAgY2YyX2J1Zl9pc0VuZCggQ0YyX0J1ZmZlciAgYnVmICk7CisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX0NGMlJFQURfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJzdGFjay5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2Yyc3RhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTMwYTIyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2Yyc3RhY2suYwpAQCAtMCwwICsxLDIwNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2Yyc3RhY2suYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFkb2JlJ3MgY29kZSBmb3IgZW11bGF0aW5nIGEgQ0ZGIHN0YWNrIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvciAgICAgICAqLworLyogIG9iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkICAgICAgKi8KKy8qICBoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZSAgICovCisvKiAgdXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCAgICAqLworLyogIExJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cyAgICovCisvKiAgdG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSAgICAqLworLyogIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvciAgICAgKi8KKy8qICAiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgICAgICAgICAgICAgICovCisvKiAgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCAgICAqLworLyogIGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kICAgICAgKi8KKy8qICBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgICovCisvKiAgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgICAgICAqLworLyogIGluZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgICAgKi8KKy8qICBjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMgICAgICAgICovCisvKiAgc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgICAgICAqLworLyogIChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0ICAgKi8KKy8qICB0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzICAgICovCisvKiAgZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMgICAqLworLyogIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiAgKi8KKy8qICB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIEJ5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgICAgKi8KKy8qICBoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAgICAgICAgICAgICAgICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLCAgICAqLworLyogIGFuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICJjZjJmdC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorCisjaW5jbHVkZSAiY2YyZ2x1ZS5oIgorI2luY2x1ZGUgImNmMmZvbnQuaCIKKyNpbmNsdWRlICJjZjJzdGFjay5oIgorCisjaW5jbHVkZSAiY2YyZXJyb3IuaCIKKworCisgIC8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFuIGluc3RhbmNlIG9mIENGMl9TdGFjay4gICAgICAgKi8KKyAgLyogTm90ZTogVGhpcyBmdW5jdGlvbiByZXR1cm5zIE5VTEwgb24gZXJyb3IgKGRvZXMgbm90IHNldCAqLworICAvKiBgZXJyb3InKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggQ0YyX1N0YWNrICkKKyAgY2YyX3N0YWNrX2luaXQoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgRlRfRXJyb3IqICBlICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsgICAgIC8qIGZvciBGVF9RTkVXICovCisKKyAgICBDRjJfU3RhY2sgIHN0YWNrID0gTlVMTDsKKworCisgICAgaWYgKCAhRlRfUU5FVyggc3RhY2sgKSApCisgICAgeworICAgICAgLyogaW5pdGlhbGl6ZSB0aGUgc3RydWN0dXJlOyBGVF9RTkVXIHplcm9lcyBpdCAqLworICAgICAgc3RhY2stPm1lbW9yeSA9IG1lbW9yeTsKKyAgICAgIHN0YWNrLT5lcnJvciAgPSBlOworICAgICAgc3RhY2stPnRvcCAgICA9ICZzdGFjay0+YnVmZmVyWzBdOyAvKiBlbXB0eSBzdGFjayAqLworICAgIH0KKworICAgIHJldHVybiBzdGFjazsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2YyX3N0YWNrX2ZyZWUoIENGMl9TdGFjayAgc3RhY2sgKQorICB7CisgICAgaWYgKCBzdGFjayApCisgICAgeworICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdGFjay0+bWVtb3J5OworCisKKyAgICAgIC8qIGZyZWUgdGhlIG1haW4gc3RydWN0dXJlICovCisgICAgICBGVF9GUkVFKCBzdGFjayApOworICAgIH0KKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBDRjJfVUludCApCisgIGNmMl9zdGFja19jb3VudCggQ0YyX1N0YWNrICBzdGFjayApCisgIHsKKyAgICByZXR1cm4gKENGMl9VSW50KSggc3RhY2stPnRvcCAtICZzdGFjay0+YnVmZmVyWzBdICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmMl9zdGFja19wdXNoSW50KCBDRjJfU3RhY2sgIHN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgQ0YyX0ludCAgICB2YWwgKQorICB7CisgICAgaWYgKCBzdGFjay0+dG9wID09ICZzdGFjay0+YnVmZmVyW0NGMl9PUEVSQU5EX1NUQUNLX1NJWkVdICkKKyAgICB7CisgICAgICBDRjJfU0VUX0VSUk9SKCBzdGFjay0+ZXJyb3IsIFN0YWNrX092ZXJmbG93ICk7CisgICAgICByZXR1cm47ICAgICAvKiBzdGFjayBvdmVyZmxvdyAqLworICAgIH0KKworICAgIHN0YWNrLT50b3AtPnUuaSAgPSB2YWw7CisgICAgc3RhY2stPnRvcC0+dHlwZSA9IENGMl9OdW1iZXJJbnQ7CisgICAgKytzdGFjay0+dG9wOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfc3RhY2tfcHVzaEZpeGVkKCBDRjJfU3RhY2sgIHN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgIHZhbCApCisgIHsKKyAgICBpZiAoIHN0YWNrLT50b3AgPT0gJnN0YWNrLT5idWZmZXJbQ0YyX09QRVJBTkRfU1RBQ0tfU0laRV0gKQorICAgIHsKKyAgICAgIENGMl9TRVRfRVJST1IoIHN0YWNrLT5lcnJvciwgU3RhY2tfT3ZlcmZsb3cgKTsKKyAgICAgIHJldHVybjsgICAgIC8qIHN0YWNrIG92ZXJmbG93ICovCisgICAgfQorCisgICAgc3RhY2stPnRvcC0+dS5yICA9IHZhbDsKKyAgICBzdGFjay0+dG9wLT50eXBlID0gQ0YyX051bWJlckZpeGVkOworICAgICsrc3RhY2stPnRvcDsKKyAgfQorCisKKyAgLyogdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGFsbG93ZWQgdG8gcG9wIGFuIGludGVnZXIgdHlwZSAqLworICBGVF9MT0NBTF9ERUYoIENGMl9JbnQgKQorICBjZjJfc3RhY2tfcG9wSW50KCBDRjJfU3RhY2sgIHN0YWNrICkKKyAgeworICAgIGlmICggc3RhY2stPnRvcCA9PSAmc3RhY2stPmJ1ZmZlclswXSApCisgICAgeworICAgICAgQ0YyX1NFVF9FUlJPUiggc3RhY2stPmVycm9yLCBTdGFja19VbmRlcmZsb3cgKTsKKyAgICAgIHJldHVybiAwOyAgIC8qIHVuZGVyZmxvdyAqLworICAgIH0KKyAgICBpZiAoIHN0YWNrLT50b3BbLTFdLnR5cGUgIT0gQ0YyX051bWJlckludCApCisgICAgeworICAgICAgQ0YyX1NFVF9FUlJPUiggc3RhY2stPmVycm9yLCBTeW50YXhfRXJyb3IgKTsKKyAgICAgIHJldHVybiAwOyAgIC8qIHR5cGUgbWlzbWF0Y2ggKi8KKyAgICB9CisKKyAgICAtLXN0YWNrLT50b3A7CisKKyAgICByZXR1cm4gc3RhY2stPnRvcC0+dS5pOworICB9CisKKworICAvKiBOb3RlOiB0eXBlIG1pc21hdGNoIGlzIHNpbGVudGx5IGNhc3QgKi8KKyAgLyogVE9ETzogY2hlY2sgdGhpcyAqLworICBGVF9MT0NBTF9ERUYoIENGMl9GaXhlZCApCisgIGNmMl9zdGFja19wb3BGaXhlZCggQ0YyX1N0YWNrICBzdGFjayApCisgIHsKKyAgICBpZiAoIHN0YWNrLT50b3AgPT0gJnN0YWNrLT5idWZmZXJbMF0gKQorICAgIHsKKyAgICAgIENGMl9TRVRfRVJST1IoIHN0YWNrLT5lcnJvciwgU3RhY2tfVW5kZXJmbG93ICk7CisgICAgICByZXR1cm4gY2YyX2ludFRvRml4ZWQoIDAgKTsgICAgLyogdW5kZXJmbG93ICovCisgICAgfQorCisgICAgLS1zdGFjay0+dG9wOworCisgICAgc3dpdGNoICggc3RhY2stPnRvcC0+dHlwZSApCisgICAgeworICAgIGNhc2UgQ0YyX051bWJlckludDoKKyAgICAgIHJldHVybiBjZjJfaW50VG9GaXhlZCggc3RhY2stPnRvcC0+dS5pICk7CisgICAgY2FzZSBDRjJfTnVtYmVyRnJhYzoKKyAgICAgIHJldHVybiBjZjJfZnJhY1RvRml4ZWQoIHN0YWNrLT50b3AtPnUuZiApOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gc3RhY2stPnRvcC0+dS5yOworICAgIH0KKyAgfQorCisKKyAgLyogTm90ZTogdHlwZSBtaXNtYXRjaCBpcyBzaWxlbnRseSBjYXN0ICovCisgIC8qIFRPRE86IGNoZWNrIHRoaXMgKi8KKyAgRlRfTE9DQUxfREVGKCBDRjJfRml4ZWQgKQorICBjZjJfc3RhY2tfZ2V0UmVhbCggQ0YyX1N0YWNrICBzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgIENGMl9VSW50ICAgaWR4ICkKKyAgeworICAgIEZUX0FTU0VSVCggY2YyX3N0YWNrX2NvdW50KCBzdGFjayApIDw9IENGMl9PUEVSQU5EX1NUQUNLX1NJWkUgKTsKKworICAgIGlmICggaWR4ID49IGNmMl9zdGFja19jb3VudCggc3RhY2sgKSApCisgICAgeworICAgICAgQ0YyX1NFVF9FUlJPUiggc3RhY2stPmVycm9yLCBTdGFja19PdmVyZmxvdyApOworICAgICAgcmV0dXJuIGNmMl9pbnRUb0ZpeGVkKCAwICk7ICAgIC8qIGJvdW5kcyBlcnJvciAqLworICAgIH0KKworICAgIHN3aXRjaCAoIHN0YWNrLT5idWZmZXJbaWR4XS50eXBlICkKKyAgICB7CisgICAgY2FzZSBDRjJfTnVtYmVySW50OgorICAgICAgcmV0dXJuIGNmMl9pbnRUb0ZpeGVkKCBzdGFjay0+YnVmZmVyW2lkeF0udS5pICk7CisgICAgY2FzZSBDRjJfTnVtYmVyRnJhYzoKKyAgICAgIHJldHVybiBjZjJfZnJhY1RvRml4ZWQoIHN0YWNrLT5idWZmZXJbaWR4XS51LmYgKTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIHN0YWNrLT5idWZmZXJbaWR4XS51LnI7CisgICAgfQorICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZjJfc3RhY2tfY2xlYXIoIENGMl9TdGFjayAgc3RhY2sgKQorICB7CisgICAgc3RhY2stPnRvcCA9ICZzdGFjay0+YnVmZmVyWzBdOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJzdGFjay5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2Yyc3RhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDZkMTk2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2Yyc3RhY2suaApAQCAtMCwwICsxLDEwNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2Yyc3RhY2suaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFkb2JlJ3MgY29kZSBmb3IgZW11bGF0aW5nIGEgQ0ZGIHN0YWNrIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA3LTIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBzb2Z0d2FyZSwgYW5kIGFsbCB3b3JrcyBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIHNvdXJjZSBvciAgICAgICAqLworLyogIG9iamVjdCBjb2RlIGZvcm0gYXMgaW5kaWNhdGVkIGJ5IHRoZSBjb3B5cmlnaHQgbm90aWNlKHMpIGluY2x1ZGVkICAgICAgKi8KKy8qICBoZXJlaW4gKGNvbGxlY3RpdmVseSwgdGhlICJXb3JrIikgaXMgbWFkZSBhdmFpbGFibGUsIGFuZCBtYXkgb25seSBiZSAgICovCisvKiAgdXNlZCwgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCAgICAqLworLyogIExJQ0VOU0UuVFhULiAgQWRkaXRpb25hbGx5LCBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgKi8KKy8qICBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UsIGVhY2ggY29udHJpYnV0b3IgdG8gdGhlIFdvcmsgaGVyZWJ5IGdyYW50cyAgICovCisvKiAgdG8gYW55IGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSAgICAqLworLyogIHRoZSBGcmVlVHlwZSBQcm9qZWN0IExpY2Vuc2UgYW5kIHRoaXMgc2VjdGlvbiAoaGVyZWFmdGVyLCAiWW91IiBvciAgICAgKi8KKy8qICAiWW91ciIpIGEgcGVycGV0dWFsLCB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgICAgICAgICAgICAgICovCisvKiAgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZSAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCAgICAqLworLyogIGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kICAgICAgKi8KKy8qICBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgICovCisvKiAgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IHN1Y2ggY29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgICAgICAqLworLyogIGluZnJpbmdlZCBieSB0aGVpciBjb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgICAgKi8KKy8qICBjb250cmlidXRpb24ocykgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIGNvbnRyaWJ1dGlvbihzKSB3YXMgICAgICAgICovCisvKiAgc3VibWl0dGVkLiAgSWYgWW91IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgICAgICAqLworLyogIChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0ICAgKi8KKy8qICB0aGUgV29yayBvciBhIGNvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzICAgICovCisvKiAgZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMgICAqLworLyogIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiAgKi8KKy8qICB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIEJ5IHVzaW5nLCBtb2RpZnlpbmcsIG9yIGRpc3RyaWJ1dGluZyB0aGUgV29yayB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgICAgKi8KKy8qICBoYXZlIHJlYWQgYW5kIHVuZGVyc3Rvb2QgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAgICAgICAgICAgICAgICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uLCAgICAqLworLyogIGFuZCB5b3UgYWNjZXB0IHRoZW0gZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19DRjJTVEFDS19IX18KKyNkZWZpbmUgX19DRjJTVEFDS19IX18KKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qIENGRiBvcGVyYW5kIHN0YWNrOyBzcGVjaWZpZWQgbWF4aW11bSBvZiA0OCBvciAxOTIgdmFsdWVzICovCisgIHR5cGVkZWYgc3RydWN0ICBDRjJfU3RhY2tOdW1iZXJfCisgIHsKKyAgICB1bmlvbgorICAgIHsKKyAgICAgIENGMl9GaXhlZCAgcjsgICAgICAvKiAxNi4xNiBmaXhlZCBwb2ludCAqLworICAgICAgQ0YyX0ZyYWMgICBmOyAgICAgIC8qIDIuMzAgZml4ZWQgcG9pbnQgKGZvciBmb250IG1hdHJpeCkgKi8KKyAgICAgIENGMl9JbnQgICAgaTsKKyAgICB9IHU7CisKKyAgICBDRjJfTnVtYmVyVHlwZSAgdHlwZTsKKworICB9IENGMl9TdGFja051bWJlcjsKKworCisgIHR5cGVkZWYgc3RydWN0ICBDRjJfU3RhY2tSZWNfCisgIHsKKyAgICBGVF9NZW1vcnkgICAgICAgICBtZW1vcnk7CisgICAgRlRfRXJyb3IqICAgICAgICAgZXJyb3I7CisgICAgQ0YyX1N0YWNrTnVtYmVyICAgYnVmZmVyW0NGMl9PUEVSQU5EX1NUQUNLX1NJWkVdOworICAgIENGMl9TdGFja051bWJlciogIHRvcDsKKworICB9IENGMl9TdGFja1JlYywgKkNGMl9TdGFjazsKKworCisgIEZUX0xPQ0FMKCBDRjJfU3RhY2sgKQorICBjZjJfc3RhY2tfaW5pdCggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgICBGVF9FcnJvciogIGVycm9yICk7CisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2YyX3N0YWNrX2ZyZWUoIENGMl9TdGFjayAgc3RhY2sgKTsKKworICBGVF9MT0NBTCggQ0YyX1VJbnQgKQorICBjZjJfc3RhY2tfY291bnQoIENGMl9TdGFjayAgc3RhY2sgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9zdGFja19wdXNoSW50KCBDRjJfU3RhY2sgIHN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgQ0YyX0ludCAgICB2YWwgKTsKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZjJfc3RhY2tfcHVzaEZpeGVkKCBDRjJfU3RhY2sgIHN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICBDRjJfRml4ZWQgIHZhbCApOworCisgIEZUX0xPQ0FMKCBDRjJfSW50ICkKKyAgY2YyX3N0YWNrX3BvcEludCggQ0YyX1N0YWNrICBzdGFjayApOworICBGVF9MT0NBTCggQ0YyX0ZpeGVkICkKKyAgY2YyX3N0YWNrX3BvcEZpeGVkKCBDRjJfU3RhY2sgIHN0YWNrICk7CisKKyAgRlRfTE9DQUwoIENGMl9GaXhlZCApCisgIGNmMl9zdGFja19nZXRSZWFsKCBDRjJfU3RhY2sgIHN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgQ0YyX1VJbnQgICBpZHggKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNmMl9zdGFja19jbGVhciggQ0YyX1N0YWNrICBzdGFjayApOworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19DRjJTVEFDS19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmMnR5cGVzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJ0eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiYmVmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZjJ0eXBlcy5oCkBAIC0wLDAgKzEsNzggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmMnR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBZG9iZSdzIGNvZGUgZm9yIGRlZmluaW5nIGRhdGEgdHlwZXMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAxMS0yMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgc29mdHdhcmUsIGFuZCBhbGwgd29ya3Mgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBzb3VyY2Ugb3IgICAgICAgKi8KKy8qICBvYmplY3QgY29kZSBmb3JtIGFzIGluZGljYXRlZCBieSB0aGUgY29weXJpZ2h0IG5vdGljZShzKSBpbmNsdWRlZCAgICAgICovCisvKiAgaGVyZWluIChjb2xsZWN0aXZlbHksIHRoZSAiV29yayIpIGlzIG1hZGUgYXZhaWxhYmxlLCBhbmQgbWF5IG9ubHkgYmUgICAqLworLyogIHVzZWQsIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSwgICAgKi8KKy8qICBMSUNFTlNFLlRYVC4gIEFkZGl0aW9uYWxseSwgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlICovCisvKiAgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlLCBlYWNoIGNvbnRyaWJ1dG9yIHRvIHRoZSBXb3JrIGhlcmVieSBncmFudHMgICAqLworLyogIHRvIGFueSBpbmRpdmlkdWFsIG9yIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgICAgKi8KKy8qICB0aGUgRnJlZVR5cGUgUHJvamVjdCBMaWNlbnNlIGFuZCB0aGlzIHNlY3Rpb24gKGhlcmVhZnRlciwgIllvdSIgb3IgICAgICovCisvKiAgIllvdXIiKSBhIHBlcnBldHVhbCwgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsICAgICAgICAgICAgICAqLworLyogIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgICAgKi8KKy8qICBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCAgICAgICovCisvKiAgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLCB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlICAqLworLyogIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZSBieSBzdWNoIGNvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5ICAgICAgKi8KKy8qICBpbmZyaW5nZWQgYnkgdGhlaXIgY29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyICAgICovCisvKiAgY29udHJpYnV0aW9uKHMpIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBjb250cmlidXRpb24ocykgd2FzICAgICAgICAqLworLyogIHN1Ym1pdHRlZC4gIElmIFlvdSBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5ICAgICAgKi8KKy8qICAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCAgICovCisvKiAgdGhlIFdvcmsgb3IgYSBjb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyAgICAqLworLyogIGRpcmVjdCBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzICAgKi8KKy8qICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgICovCisvKiAgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBCeSB1c2luZywgbW9kaWZ5aW5nLCBvciBkaXN0cmlidXRpbmcgdGhlIFdvcmsgeW91IGluZGljYXRlIHRoYXQgeW91ICAgICovCisvKiAgaGF2ZSByZWFkIGFuZCB1bmRlcnN0b29kIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgICAgICAgICAgICAgICAqLworLyogIEZyZWVUeXBlIFByb2plY3QgTGljZW5zZSBhcyB3ZWxsIGFzIHRob3NlIHByb3ZpZGVkIGluIHRoaXMgc2VjdGlvbiwgICAgKi8KKy8qICBhbmQgeW91IGFjY2VwdCB0aGVtIGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fQ0YyVFlQRVNfSF9fCisjZGVmaW5lIF9fQ0YyVFlQRVNfSF9fCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoKKyAgICogVGhlIGRhdGEgbW9kZWxzIHRoYXQgd2UgZXhwZWN0IHRvIHN1cHBvcnQgYXJlIGFzIGZvbGxvd3M6CisgICAqCisgICAqICAgbmFtZSAgY2hhciBzaG9ydCBpbnQgbG9uZyBsb25nLWxvbmcgcG9pbnRlciBleGFtcGxlCisgICAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgKiAgIElMUDMyICA4ICAgIDE2ICAgIDMyICAzMiAgICAgNjQqICAgICAgMzIgICAgMzItYml0IE1hY09TLCB4ODYKKyAgICogICBMTFA2NCAgOCAgICAxNiAgICAzMiAgMzIgICAgIDY0ICAgICAgIDY0ICAgIHg2NAorICAgKiAgIExQNjQgICA4ICAgIDE2ICAgIDMyICA2NCAgICAgNjQgICAgICAgNjQgICAgNjQtYml0IE1hY09TCisgICAqCisgICAqICAgICopIHR5cGUgbWF5IGJlIHN1cHBvcnRlZCBieSBlbXVsYXRpb24gb24gYSAzMi1iaXQgYXJjaGl0ZWN0dXJlCisgICAqCisgICAqLworCisKKyAgLyogaW50ZWdlcnMgYXQgbGVhc3QgMzIgYml0cyB3aWRlICovCisjZGVmaW5lIENGMl9VSW50ICBGVF9VRmFzdAorI2RlZmluZSBDRjJfSW50ICAgRlRfRmFzdAorCisKKyAgLyogZml4ZWQtZmxvYXQgbnVtYmVycyAqLworICB0eXBlZGVmIEZUX0ludDMyICBDRjJfRjE2RG90MTY7CisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX0NGMlRZUEVTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmY21hcC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmY21hcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZWJlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZjbWFwLmMKQEAgLTAsMCArMSwyMTAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmZmNtYXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDRkYgY2hhcmFjdGVyIG1hcHBpbmcgdGFibGUgKGNtYXApIHN1cHBvcnQgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMi0yMDA3LCAyMDEwLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICJjZmZjbWFwLmgiCisjaW5jbHVkZSAiY2ZmbG9hZC5oIgorCisjaW5jbHVkZSAiY2ZmZXJycy5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICBDRkYgU1RBTkRBUkQgKEFORCBFWFBFUlQpIEVOQ09ESU5HIENNQVBTICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIGNmZl9jbWFwX2VuY29kaW5nX2luaXQoIENGRl9DTWFwU3RkICBjbWFwICkKKyAgeworICAgIFRUX0ZhY2UgICAgICAgZmFjZSAgICAgPSAoVFRfRmFjZSlGVF9DTUFQX0ZBQ0UoIGNtYXAgKTsKKyAgICBDRkZfRm9udCAgICAgIGNmZiAgICAgID0gKENGRl9Gb250KWZhY2UtPmV4dHJhLmRhdGE7CisgICAgQ0ZGX0VuY29kaW5nICBlbmNvZGluZyA9ICZjZmYtPmVuY29kaW5nOworCisKKyAgICBjbWFwLT5naWRzICA9IGVuY29kaW5nLT5jb2RlczsKKworICAgIHJldHVybiAwOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIHZvaWQgKQorICBjZmZfY21hcF9lbmNvZGluZ19kb25lKCBDRkZfQ01hcFN0ZCAgY21hcCApCisgIHsKKyAgICBjbWFwLT5naWRzICA9IE5VTEw7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludCApCisgIGNmZl9jbWFwX2VuY29kaW5nX2NoYXJfaW5kZXgoIENGRl9DTWFwU3RkICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICAgY2hhcl9jb2RlICkKKyAgeworICAgIEZUX1VJbnQgIHJlc3VsdCA9IDA7CisKKworICAgIGlmICggY2hhcl9jb2RlIDwgMjU2ICkKKyAgICAgIHJlc3VsdCA9IGNtYXAtPmdpZHNbY2hhcl9jb2RlXTsKKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludDMyICkKKyAgY2ZmX2NtYXBfZW5jb2RpbmdfY2hhcl9uZXh0KCBDRkZfQ01hcFN0ZCAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAgICpwY2hhcl9jb2RlICkKKyAgeworICAgIEZUX1VJbnQgICAgcmVzdWx0ICAgID0gMDsKKyAgICBGVF9VSW50MzIgIGNoYXJfY29kZSA9ICpwY2hhcl9jb2RlOworCisKKyAgICAqcGNoYXJfY29kZSA9IDA7CisKKyAgICBpZiAoIGNoYXJfY29kZSA8IDI1NSApCisgICAgeworICAgICAgRlRfVUludCAgY29kZSA9IChGVF9VSW50KShjaGFyX2NvZGUgKyAxKTsKKworCisgICAgICBmb3IgKDs7KQorICAgICAgeworICAgICAgICBpZiAoIGNvZGUgPj0gMjU2ICkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICByZXN1bHQgPSBjbWFwLT5naWRzW2NvZGVdOworICAgICAgICBpZiAoIHJlc3VsdCAhPSAwICkKKyAgICAgICAgeworICAgICAgICAgICpwY2hhcl9jb2RlID0gY29kZTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNvZGUrKzsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgRlRfREVGSU5FX0NNQVBfQ0xBU1MoY2ZmX2NtYXBfZW5jb2RpbmdfY2xhc3NfcmVjLAorICAgIHNpemVvZiAoIENGRl9DTWFwU3RkUmVjICksCisKKyAgICAoRlRfQ01hcF9Jbml0RnVuYykgICAgIGNmZl9jbWFwX2VuY29kaW5nX2luaXQsCisgICAgKEZUX0NNYXBfRG9uZUZ1bmMpICAgICBjZmZfY21hcF9lbmNvZGluZ19kb25lLAorICAgIChGVF9DTWFwX0NoYXJJbmRleEZ1bmMpY2ZmX2NtYXBfZW5jb2RpbmdfY2hhcl9pbmRleCwKKyAgICAoRlRfQ01hcF9DaGFyTmV4dEZ1bmMpIGNmZl9jbWFwX2VuY29kaW5nX2NoYXJfbmV4dCwKKworICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwKKyAgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICBDRkYgU1lOVEhFVElDIFVOSUNPREUgRU5DT0RJTkcgQ01BUCAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBjb25zdCBjaGFyKiApCisgIGNmZl9zaWRfdG9fZ2x5cGhfbmFtZSggVFRfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBpZHggKQorICB7CisgICAgQ0ZGX0ZvbnQgICAgIGNmZiAgICAgPSAoQ0ZGX0ZvbnQpZmFjZS0+ZXh0cmEuZGF0YTsKKyAgICBDRkZfQ2hhcnNldCAgY2hhcnNldCA9ICZjZmYtPmNoYXJzZXQ7CisgICAgRlRfVUludCAgICAgIHNpZCAgICAgPSBjaGFyc2V0LT5zaWRzW2lkeF07CisKKworICAgIHJldHVybiBjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcoIGNmZiwgc2lkICk7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICBjZmZfY21hcF91bmljb2RlX2luaXQoIFBTX1VuaWNvZGVzICB1bmljb2RlcyApCisgIHsKKyAgICBUVF9GYWNlICAgICAgICAgICAgIGZhY2UgICAgPSAoVFRfRmFjZSlGVF9DTUFQX0ZBQ0UoIHVuaWNvZGVzICk7CisgICAgRlRfTWVtb3J5ICAgICAgICAgICBtZW1vcnkgID0gRlRfRkFDRV9NRU1PUlkoIGZhY2UgKTsKKyAgICBDRkZfRm9udCAgICAgICAgICAgIGNmZiAgICAgPSAoQ0ZGX0ZvbnQpZmFjZS0+ZXh0cmEuZGF0YTsKKyAgICBDRkZfQ2hhcnNldCAgICAgICAgIGNoYXJzZXQgPSAmY2ZmLT5jaGFyc2V0OworICAgIEZUX1NlcnZpY2VfUHNDTWFwcyAgcHNuYW1lcyA9IChGVF9TZXJ2aWNlX1BzQ01hcHMpY2ZmLT5wc25hbWVzOworCisKKyAgICAvKiBjYW4ndCBidWlsZCBVbmljb2RlIG1hcCBmb3IgQ0lELWtleWVkIGZvbnQgKi8KKyAgICAvKiBiZWNhdXNlIHdlIGRvbid0IGtub3cgZ2x5cGggbmFtZXMuICAgICAgICAgKi8KKyAgICBpZiAoICFjaGFyc2V0LT5zaWRzICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggTm9fVW5pY29kZV9HbHlwaF9OYW1lICk7CisKKyAgICByZXR1cm4gcHNuYW1lcy0+dW5pY29kZXNfaW5pdCggbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZmLT5udW1fZ2x5cGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFNfR2V0R2x5cGhOYW1lRnVuYykmY2ZmX3NpZF90b19nbHlwaF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFNfRnJlZUdseXBoTmFtZUZ1bmMpTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1BvaW50ZXIpZmFjZSApOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIHZvaWQgKQorICBjZmZfY21hcF91bmljb2RlX2RvbmUoIFBTX1VuaWNvZGVzICB1bmljb2RlcyApCisgIHsKKyAgICBGVF9GYWNlICAgIGZhY2UgICA9IEZUX0NNQVBfRkFDRSggdW5pY29kZXMgKTsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IEZUX0ZBQ0VfTUVNT1JZKCBmYWNlICk7CisKKworICAgIEZUX0ZSRUUoIHVuaWNvZGVzLT5tYXBzICk7CisgICAgdW5pY29kZXMtPm51bV9tYXBzID0gMDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9VSW50ICkKKyAgY2ZmX2NtYXBfdW5pY29kZV9jaGFyX2luZGV4KCBQU19Vbmljb2RlcyAgdW5pY29kZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAgIGNoYXJfY29kZSApCisgIHsKKyAgICBUVF9GYWNlICAgICAgICAgICAgIGZhY2UgICAgPSAoVFRfRmFjZSlGVF9DTUFQX0ZBQ0UoIHVuaWNvZGVzICk7CisgICAgQ0ZGX0ZvbnQgICAgICAgICAgICBjZmYgICAgID0gKENGRl9Gb250KWZhY2UtPmV4dHJhLmRhdGE7CisgICAgRlRfU2VydmljZV9Qc0NNYXBzICBwc25hbWVzID0gKEZUX1NlcnZpY2VfUHNDTWFwcyljZmYtPnBzbmFtZXM7CisKKworICAgIHJldHVybiBwc25hbWVzLT51bmljb2Rlc19jaGFyX2luZGV4KCB1bmljb2RlcywgY2hhcl9jb2RlICk7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludDMyICkKKyAgY2ZmX2NtYXBfdW5pY29kZV9jaGFyX25leHQoIFBTX1VuaWNvZGVzICB1bmljb2RlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgICpwY2hhcl9jb2RlICkKKyAgeworICAgIFRUX0ZhY2UgICAgICAgICAgICAgZmFjZSAgICA9IChUVF9GYWNlKUZUX0NNQVBfRkFDRSggdW5pY29kZXMgKTsKKyAgICBDRkZfRm9udCAgICAgICAgICAgIGNmZiAgICAgPSAoQ0ZGX0ZvbnQpZmFjZS0+ZXh0cmEuZGF0YTsKKyAgICBGVF9TZXJ2aWNlX1BzQ01hcHMgIHBzbmFtZXMgPSAoRlRfU2VydmljZV9Qc0NNYXBzKWNmZi0+cHNuYW1lczsKKworCisgICAgcmV0dXJuIHBzbmFtZXMtPnVuaWNvZGVzX2NoYXJfbmV4dCggdW5pY29kZXMsIHBjaGFyX2NvZGUgKTsKKyAgfQorCisKKyAgRlRfREVGSU5FX0NNQVBfQ0xBU1MoY2ZmX2NtYXBfdW5pY29kZV9jbGFzc19yZWMsCisgICAgc2l6ZW9mICggUFNfVW5pY29kZXNSZWMgKSwKKworICAgIChGVF9DTWFwX0luaXRGdW5jKSAgICAgY2ZmX2NtYXBfdW5pY29kZV9pbml0LAorICAgIChGVF9DTWFwX0RvbmVGdW5jKSAgICAgY2ZmX2NtYXBfdW5pY29kZV9kb25lLAorICAgIChGVF9DTWFwX0NoYXJJbmRleEZ1bmMpY2ZmX2NtYXBfdW5pY29kZV9jaGFyX2luZGV4LAorICAgIChGVF9DTWFwX0NoYXJOZXh0RnVuYykgY2ZmX2NtYXBfdW5pY29kZV9jaGFyX25leHQsCisKKyAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMCisgICkKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZjbWFwLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZjbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y3ZjY3YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmNtYXAuaApAQCAtMCwwICsxLDY3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZmZjbWFwLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQ0ZGIGNoYXJhY3RlciBtYXBwaW5nIHRhYmxlIChjbWFwKSBzdXBwb3J0IChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19DRkZDTUFQX0hfXworI2RlZmluZSBfX0NGRkNNQVBfSF9fCisKKyNpbmNsdWRlICJjZmZvYmpzLmgiCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgIFRZUEUxIFNUQU5EQVJEIChBTkQgRVhQRVJUKSBFTkNPRElORyBDTUFQUyAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyogc3RhbmRhcmQgKGFuZCBleHBlcnQpIGVuY29kaW5nIGNtYXBzICovCisgIHR5cGVkZWYgc3RydWN0IENGRl9DTWFwU3RkUmVjXyogIENGRl9DTWFwU3RkOworCisgIHR5cGVkZWYgc3RydWN0ICBDRkZfQ01hcFN0ZFJlY18KKyAgeworICAgIEZUX0NNYXBSZWMgIGNtYXA7CisgICAgRlRfVVNob3J0KiAgZ2lkczsgICAvKiB1cCB0byAyNTYgZWxlbWVudHMgKi8KKworICB9IENGRl9DTWFwU3RkUmVjOworCisKKyAgRlRfREVDTEFSRV9DTUFQX0NMQVNTKGNmZl9jbWFwX2VuY29kaW5nX2NsYXNzX3JlYykKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgIENGRiBTWU5USEVUSUMgVU5JQ09ERSBFTkNPRElORyBDTUFQICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qIHVuaWNvZGUgKHN5bnRoZXRpYykgY21hcHMgKi8KKworICBGVF9ERUNMQVJFX0NNQVBfQ0xBU1MoY2ZmX2NtYXBfdW5pY29kZV9jbGFzc19yZWMpCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19DRkZDTUFQX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmZHJpdnIuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmRyaXZyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmMzA1YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmRyaXZyLmMKQEAgLTAsMCArMSw3ODcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmZmRyaXZyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBPcGVuVHlwZSBmb250IGRyaXZlciBpbXBsZW1lbnRhdGlvbiAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZjaWQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNpbmZvLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGNtYXAuaCIKKworI2luY2x1ZGUgImNmZmRyaXZyLmgiCisjaW5jbHVkZSAiY2ZmZ2xvYWQuaCIKKyNpbmNsdWRlICJjZmZsb2FkLmgiCisjaW5jbHVkZSAiY2ZmY21hcC5oIgorI2luY2x1ZGUgImNmZnBhcnNlLmgiCisKKyNpbmNsdWRlICJjZmZlcnJzLmgiCisjaW5jbHVkZSAiY2ZmcGljLmgiCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2eGY4Nm5tLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmdsZGljdC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwcm9wLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGNmZmRydi5oIgorCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9jZmZkcml2ZXIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgIEYgQSBDIEUgUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjdW5kZWYgIFBBSVJfVEFHCisjZGVmaW5lIFBBSVJfVEFHKCBsZWZ0LCByaWdodCApICAoICggKEZUX1VMb25nKWxlZnQgPDwgMTYgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpcmlnaHQgICAgICAgICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNmZl9nZXRfa2VybmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZHJpdmVyIG1ldGhvZCB1c2VkIHRvIHJldHVybiB0aGUga2VybmluZyB2ZWN0b3IgYmV0d2VlbiB0d28gICAgICAqLworICAvKiAgICBnbHlwaHMgb2YgdGhlIHNhbWUgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlZnRfZ2x5cGggIDo6IFRoZSBpbmRleCBvZiB0aGUgbGVmdCBnbHlwaCBpbiB0aGUga2VybiBwYWlyLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmlnaHRfZ2x5cGggOjogVGhlIGluZGV4IG9mIHRoZSByaWdodCBnbHlwaCBpbiB0aGUga2VybiBwYWlyLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAga2VybmluZyAgICAgOjogVGhlIGtlcm5pbmcgdmVjdG9yLiAgVGhpcyBpcyBpbiBmb250IHVuaXRzIGZvciAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHNjYWxhYmxlIGZvcm1hdHMsIGFuZCBpbiBwaXhlbHMgZm9yIGZpeGVkLXNpemVzICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBPbmx5IGhvcml6b250YWwgbGF5b3V0cyAobGVmdC10by1yaWdodCAmIHJpZ2h0LXRvLWxlZnQpIGFyZSAgICAgICAgKi8KKyAgLyogICAgc3VwcG9ydGVkIGJ5IHRoaXMgZnVuY3Rpb24uICBPdGhlciBsYXlvdXRzLCBvciBtb3JlIHNvcGhpc3RpY2F0ZWQgICovCisgIC8qICAgIGtlcm5pbmdzLCBhcmUgb3V0IG9mIHNjb3BlIG9mIHRoaXMgbWV0aG9kICh0aGUgYmFzaWMgZHJpdmVyICAgICAgICAqLworICAvKiAgICBpbnRlcmZhY2UgaXMgbWVhbnQgdG8gYmUgc2ltcGxlKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZXkgY2FuIGJlIGltcGxlbWVudGVkIGJ5IGZvcm1hdC1zcGVjaWZpYyBpbnRlcmZhY2VzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIGNmZl9nZXRfa2VybmluZyggRlRfRmFjZSAgICAgdHRmYWNlLCAgICAgICAgICAvKiBUVF9GYWNlICovCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgbGVmdF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICByaWdodF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICBrZXJuaW5nICkKKyAgeworICAgIFRUX0ZhY2UgICAgICAgZmFjZSA9IChUVF9GYWNlKXR0ZmFjZTsKKyAgICBTRk5UX1NlcnZpY2UgIHNmbnQgPSAoU0ZOVF9TZXJ2aWNlKWZhY2UtPnNmbnQ7CisKKworICAgIGtlcm5pbmctPnggPSAwOworICAgIGtlcm5pbmctPnkgPSAwOworCisgICAgaWYgKCBzZm50ICkKKyAgICAgIGtlcm5pbmctPnggPSBzZm50LT5nZXRfa2VybmluZyggZmFjZSwgbGVmdF9nbHlwaCwgcmlnaHRfZ2x5cGggKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisjdW5kZWYgUEFJUl9UQUcKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNmZl9nbHlwaF9sb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZHJpdmVyIG1ldGhvZCB1c2VkIHRvIGxvYWQgYSBnbHlwaCB3aXRoaW4gYSBnaXZlbiBnbHlwaCBzbG90LiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNsb3QgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgc2xvdCBvYmplY3Qgd2hlcmUgdGhlIGdseXBoICAqLworICAvKiAgICAgICAgICAgICAgICAgICB3aWxsIGJlIGxvYWRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNpemUgICAgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBzaXplIGF0IHdoaWNoIHRoZSBnbHlwaCAqLworICAvKiAgICAgICAgICAgICAgICAgICBtdXN0IGJlIHNjYWxlZCwgbG9hZGVkLCBldGMuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgZ2x5cGggaW4gdGhlIGZvbnQgZmlsZS4gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbG9hZF9mbGFncyAgOjogQSBmbGFnIGluZGljYXRpbmcgd2hhdCB0byBsb2FkIGZvciB0aGlzIGdseXBoLiAgVGhlICovCisgIC8qICAgICAgICAgICAgICAgICAgIEZUX0xPQURfPz8/IGNvbnN0YW50cyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBnbHlwaCBsb2FkaW5nIHByb2Nlc3MgKGUuZy4sIHdoZXRoZXIgdGhlIG91dGxpbmUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHNjYWxlZCwgd2hldGhlciB0byBsb2FkIGJpdG1hcHMgb3Igbm90LCAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHdoZXRoZXIgdG8gaGludCB0aGUgb3V0bGluZSwgZXRjKS4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIGNmZl9nbHlwaF9sb2FkKCBGVF9HbHlwaFNsb3QgIGNmZnNsb3QsICAgICAgLyogQ0ZGX0dseXBoU2xvdCAqLworICAgICAgICAgICAgICAgICAgRlRfU2l6ZSAgICAgICBjZmZzaXplLCAgICAgIC8qIENGRl9TaXplICAgICAgKi8KKyAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgICAgIGxvYWRfZmxhZ3MgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgZXJyb3I7CisgICAgQ0ZGX0dseXBoU2xvdCAgc2xvdCA9IChDRkZfR2x5cGhTbG90KWNmZnNsb3Q7CisgICAgQ0ZGX1NpemUgICAgICAgc2l6ZSA9IChDRkZfU2l6ZSljZmZzaXplOworCisKKyAgICBpZiAoICFzbG90ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9TbG90X0hhbmRsZSApOworCisgICAgLyogY2hlY2sgd2hldGhlciB3ZSB3YW50IGEgc2NhbGVkIG91dGxpbmUgb3IgYml0bWFwICovCisgICAgaWYgKCAhc2l6ZSApCisgICAgICBsb2FkX2ZsYWdzIHw9IEZUX0xPQURfTk9fU0NBTEUgfCBGVF9MT0FEX05PX0hJTlRJTkc7CisKKyAgICAvKiByZXNldCB0aGUgc2l6ZSBvYmplY3QgaWYgbmVjZXNzYXJ5ICovCisgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19TQ0FMRSApCisgICAgICBzaXplID0gTlVMTDsKKworICAgIGlmICggc2l6ZSApCisgICAgeworICAgICAgLyogdGhlc2UgdHdvIG9iamVjdHMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmVudCAqLworICAgICAgaWYgKCBjZmZzaXplLT5mYWNlICE9IGNmZnNsb3QtPmZhY2UgKQorICAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmFjZV9IYW5kbGUgKTsKKyAgICB9CisKKyAgICAvKiBub3cgbG9hZCB0aGUgZ2x5cGggb3V0bGluZSBpZiBuZWNlc3NhcnkgKi8KKyAgICBlcnJvciA9IGNmZl9zbG90X2xvYWQoIHNsb3QsIHNpemUsIGdseXBoX2luZGV4LCBsb2FkX2ZsYWdzICk7CisKKyAgICAvKiBmb3JjZSBkcm9wLW91dCBtb2RlIHRvIDIgLSBpcnJlbGV2YW50IG5vdyAqLworICAgIC8qIHNsb3QtPm91dGxpbmUuZHJvcG91dF9tb2RlID0gMjsgKi8KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIGNmZl9nZXRfYWR2YW5jZXMoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgRlRfSW50MzIgICBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBhZHZhbmNlcyApCisgIHsKKyAgICBGVF9VSW50ICAgICAgIG5uOworICAgIEZUX0Vycm9yICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfR2x5cGhTbG90ICBzbG90ICA9IGZhY2UtPmdseXBoOworCisKKyAgICBmbGFncyB8PSAoRlRfVUludDMyKUZUX0xPQURfQURWQU5DRV9PTkxZOworCisgICAgZm9yICggbm4gPSAwOyBubiA8IGNvdW50OyBubisrICkKKyAgICB7CisgICAgICBlcnJvciA9IGNmZl9nbHlwaF9sb2FkKCBzbG90LCBmYWNlLT5zaXplLCBzdGFydCArIG5uLCBmbGFncyApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGJyZWFrOworCisgICAgICBhZHZhbmNlc1tubl0gPSAoIGZsYWdzICYgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgKQorICAgICAgICAgICAgICAgICAgICAgPyBzbG90LT5saW5lYXJWZXJ0QWR2YW5jZQorICAgICAgICAgICAgICAgICAgICAgOiBzbG90LT5saW5lYXJIb3JpQWR2YW5jZTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qCisgICAqICBHTFlQSCBESUNUIFNFUlZJQ0UKKyAgICoKKyAgICovCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNmZl9nZXRfZ2x5cGhfbmFtZSggQ0ZGX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgYnVmZmVyX21heCApCisgIHsKKyAgICBDRkZfRm9udCAgICBmb250ICAgPSAoQ0ZGX0ZvbnQpZmFjZS0+ZXh0cmEuZGF0YTsKKyAgICBGVF9TdHJpbmcqICBnbmFtZTsKKyAgICBGVF9VU2hvcnQgICBzaWQ7CisgICAgRlRfRXJyb3IgICAgZXJyb3I7CisKKworICAgIGlmICggIWZvbnQtPnBzbmFtZXMgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggImNmZl9nZXRfZ2x5cGhfbmFtZToiCisgICAgICAgICAgICAgICAgICIgY2Fubm90IGdldCBnbHlwaCBuYW1lIGZyb20gQ0ZGICYgQ0VGIGZvbnRzXG4iCisgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgIgorICAgICAgICAgICAgICAgICAiIHdpdGhvdXQgdGhlIGBQU05hbWVzJyBtb2R1bGVcbiIgKSk7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBNaXNzaW5nX01vZHVsZSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIGZpcnN0LCBsb2NhdGUgdGhlIHNpZCBpbiB0aGUgY2hhcnNldCB0YWJsZSAqLworICAgIHNpZCA9IGZvbnQtPmNoYXJzZXQuc2lkc1tnbHlwaF9pbmRleF07CisKKyAgICAvKiBub3csIGxvb2t1cCB0aGUgbmFtZSBpdHNlbGYgKi8KKyAgICBnbmFtZSA9IGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZyggZm9udCwgc2lkICk7CisKKyAgICBpZiAoIGduYW1lICkKKyAgICAgIEZUX1NUUkNQWU4oIGJ1ZmZlciwgZ25hbWUsIGJ1ZmZlcl9tYXggKTsKKworICAgIGVycm9yID0gRlRfRXJyX09rOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgRlRfVUludAorICBjZmZfZ2V0X25hbWVfaW5kZXgoIENGRl9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyaW5nKiAgZ2x5cGhfbmFtZSApCisgIHsKKyAgICBDRkZfRm9udCAgICAgICAgICAgIGNmZjsKKyAgICBDRkZfQ2hhcnNldCAgICAgICAgIGNoYXJzZXQ7CisgICAgRlRfU2VydmljZV9Qc0NNYXBzICBwc25hbWVzOworICAgIEZUX1N0cmluZyogICAgICAgICAgbmFtZTsKKyAgICBGVF9VU2hvcnQgICAgICAgICAgIHNpZDsKKyAgICBGVF9VSW50ICAgICAgICAgICAgIGk7CisKKworICAgIGNmZiAgICAgPSAoQ0ZGX0ZvbnRSZWMgKilmYWNlLT5leHRyYS5kYXRhOworICAgIGNoYXJzZXQgPSAmY2ZmLT5jaGFyc2V0OworCisgICAgRlRfRkFDRV9GSU5EX0dMT0JBTF9TRVJWSUNFKCBmYWNlLCBwc25hbWVzLCBQT1NUU0NSSVBUX0NNQVBTICk7CisgICAgaWYgKCAhcHNuYW1lcyApCisgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgY2ZmLT5udW1fZ2x5cGhzOyBpKysgKQorICAgIHsKKyAgICAgIHNpZCA9IGNoYXJzZXQtPnNpZHNbaV07CisKKyAgICAgIGlmICggc2lkID4gMzkwICkKKyAgICAgICAgbmFtZSA9IGNmZl9pbmRleF9nZXRfc3RyaW5nKCBjZmYsIHNpZCAtIDM5MSApOworICAgICAgZWxzZQorICAgICAgICBuYW1lID0gKEZUX1N0cmluZyAqKXBzbmFtZXMtPmFkb2JlX3N0ZF9zdHJpbmdzKCBzaWQgKTsKKworICAgICAgaWYgKCAhbmFtZSApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoICFmdF9zdHJjbXAoIGdseXBoX25hbWUsIG5hbWUgKSApCisgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIHJldHVybiAwOworICB9CisKKworICBGVF9ERUZJTkVfU0VSVklDRV9HTFlQSERJQ1RSRUMoCisgICAgY2ZmX3NlcnZpY2VfZ2x5cGhfZGljdCwKKyAgICAoRlRfR2x5cGhEaWN0X0dldE5hbWVGdW5jKSAgY2ZmX2dldF9nbHlwaF9uYW1lLAorICAgIChGVF9HbHlwaERpY3RfTmFtZUluZGV4RnVuYyljZmZfZ2V0X25hbWVfaW5kZXgKKyAgKQorCisKKyAgLyoKKyAgICogIFBPU1RTQ1JJUFQgSU5GTyBTRVJWSUNFCisgICAqCisgICAqLworCisgIHN0YXRpYyBGVF9JbnQKKyAgY2ZmX3BzX2hhc19nbHlwaF9uYW1lcyggRlRfRmFjZSAgZmFjZSApCisgIHsKKyAgICByZXR1cm4gKCBmYWNlLT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX0dMWVBIX05BTUVTICkgPiAwOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2ZmX3BzX2dldF9mb250X2luZm8oIENGRl9GYWNlICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBTX0ZvbnRJbmZvUmVjKiAgYWZvbnRfaW5mbyApCisgIHsKKyAgICBDRkZfRm9udCAgY2ZmICAgPSAoQ0ZGX0ZvbnQpZmFjZS0+ZXh0cmEuZGF0YTsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIGlmICggY2ZmICYmIGNmZi0+Zm9udF9pbmZvID09IE5VTEwgKQorICAgIHsKKyAgICAgIENGRl9Gb250UmVjRGljdCAgZGljdCAgID0gJmNmZi0+dG9wX2ZvbnQuZm9udF9kaWN0OworICAgICAgUFNfRm9udEluZm9SZWMgICpmb250X2luZm8gPSBOVUxMOworICAgICAgRlRfTWVtb3J5ICAgICAgICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKworCisgICAgICBpZiAoIEZUX0FMTE9DKCBmb250X2luZm8sIHNpemVvZiAoICpmb250X2luZm8gKSApICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBmb250X2luZm8tPnZlcnNpb24gICAgID0gY2ZmX2luZGV4X2dldF9zaWRfc3RyaW5nKCBjZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0LT52ZXJzaW9uICk7CisgICAgICBmb250X2luZm8tPm5vdGljZSAgICAgID0gY2ZmX2luZGV4X2dldF9zaWRfc3RyaW5nKCBjZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0LT5ub3RpY2UgKTsKKyAgICAgIGZvbnRfaW5mby0+ZnVsbF9uYW1lICAgPSBjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcoIGNmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QtPmZ1bGxfbmFtZSApOworICAgICAgZm9udF9pbmZvLT5mYW1pbHlfbmFtZSA9IGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZyggY2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdC0+ZmFtaWx5X25hbWUgKTsKKyAgICAgIGZvbnRfaW5mby0+d2VpZ2h0ICAgICAgPSBjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcoIGNmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QtPndlaWdodCApOworICAgICAgZm9udF9pbmZvLT5pdGFsaWNfYW5nbGUgICAgICAgID0gZGljdC0+aXRhbGljX2FuZ2xlOworICAgICAgZm9udF9pbmZvLT5pc19maXhlZF9waXRjaCAgICAgID0gZGljdC0+aXNfZml4ZWRfcGl0Y2g7CisgICAgICBmb250X2luZm8tPnVuZGVybGluZV9wb3NpdGlvbiAgPSAoRlRfU2hvcnQpZGljdC0+dW5kZXJsaW5lX3Bvc2l0aW9uOworICAgICAgZm9udF9pbmZvLT51bmRlcmxpbmVfdGhpY2tuZXNzID0gKEZUX1Nob3J0KWRpY3QtPnVuZGVybGluZV90aGlja25lc3M7CisKKyAgICAgIGNmZi0+Zm9udF9pbmZvID0gZm9udF9pbmZvOworICAgIH0KKworICAgIGlmICggY2ZmICkKKyAgICAgICphZm9udF9pbmZvID0gKmNmZi0+Zm9udF9pbmZvOworCisgIEZhaWw6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9ERUZJTkVfU0VSVklDRV9QU0lORk9SRUMoCisgICAgY2ZmX3NlcnZpY2VfcHNfaW5mbywKKyAgICAoUFNfR2V0Rm9udEluZm9GdW5jKSAgIGNmZl9wc19nZXRfZm9udF9pbmZvLAorICAgIChQU19HZXRGb250RXh0cmFGdW5jKSAgTlVMTCwKKyAgICAoUFNfSGFzR2x5cGhOYW1lc0Z1bmMpIGNmZl9wc19oYXNfZ2x5cGhfbmFtZXMsCisgICAgKFBTX0dldEZvbnRQcml2YXRlRnVuYylOVUxMLCAgICAgICAgLyogdW5zdXBwb3J0ZWQgd2l0aCBDRkYgZm9udHMgKi8KKyAgICAoUFNfR2V0Rm9udFZhbHVlRnVuYykgIE5VTEwgICAgICAgICAvKiBub3QgaW1wbGVtZW50ZWQgICAgICAgICAgICAqLworICApCisKKworICAvKgorICAgKiAgUE9TVFNDUklQVCBOQU1FIFNFUlZJQ0UKKyAgICoKKyAgICovCisKKyAgc3RhdGljIGNvbnN0IGNoYXIqCisgIGNmZl9nZXRfcHNfbmFtZSggQ0ZGX0ZhY2UgIGZhY2UgKQorICB7CisgICAgQ0ZGX0ZvbnQgIGNmZiA9IChDRkZfRm9udClmYWNlLT5leHRyYS5kYXRhOworCisKKyAgICByZXR1cm4gKGNvbnN0IGNoYXIqKWNmZi0+Zm9udF9uYW1lOworICB9CisKKworICBGVF9ERUZJTkVfU0VSVklDRV9QU0ZPTlROQU1FUkVDKAorICAgIGNmZl9zZXJ2aWNlX3BzX25hbWUsCisgICAgKEZUX1BzTmFtZV9HZXRGdW5jKWNmZl9nZXRfcHNfbmFtZQorICApCisKKworICAvKgorICAgKiBUVCBDTUFQIElORk8KKyAgICoKKyAgICogSWYgdGhlIGNoYXJtYXAgaXMgYSBzeW50aGV0aWMgVW5pY29kZSBlbmNvZGluZyBjbWFwIG9yCisgICAqIGEgVHlwZSAxIHN0YW5kYXJkIChvciBleHBlcnQpIGVuY29kaW5nIGNtYXAsIGhpZGUgVFQgQ01BUCBJTkZPCisgICAqIHNlcnZpY2UgZGVmaW5lZCBpbiBTRk5UIG1vZHVsZS4KKyAgICoKKyAgICogT3RoZXJ3aXNlIGNhbGwgdGhlIHNlcnZpY2UgZnVuY3Rpb24gaW4gdGhlIHNmbnQgbW9kdWxlLgorICAgKgorICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIGNmZl9nZXRfY21hcF9pbmZvKCBGVF9DaGFyTWFwICAgIGNoYXJtYXAsCisgICAgICAgICAgICAgICAgICAgICBUVF9DTWFwSW5mbyAgKmNtYXBfaW5mbyApCisgIHsKKyAgICBGVF9DTWFwICAgY21hcCAgPSBGVF9DTUFQKCBjaGFybWFwICk7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworCisgICAgRlRfRmFjZSAgICAgZmFjZSAgICA9IEZUX0NNQVBfRkFDRSggY21hcCApOworICAgIEZUX0xpYnJhcnkgIGxpYnJhcnkgPSBGVF9GQUNFX0xJQlJBUlkoIGZhY2UgKTsKKworCisgICAgY21hcF9pbmZvLT5sYW5ndWFnZSA9IDA7CisgICAgY21hcF9pbmZvLT5mb3JtYXQgICA9IDA7CisKKyAgICBpZiAoIGNtYXAtPmNsYXp6ICE9ICZDRkZfQ01BUF9FTkNPRElOR19DTEFTU19SRUNfR0VUICYmCisgICAgICAgICBjbWFwLT5jbGF6eiAhPSAmQ0ZGX0NNQVBfVU5JQ09ERV9DTEFTU19SRUNfR0VUICApCisgICAgeworICAgICAgRlRfTW9kdWxlICAgICAgICAgICBzZm50ICAgID0gRlRfR2V0X01vZHVsZSggbGlicmFyeSwgInNmbnQiICk7CisgICAgICBGVF9TZXJ2aWNlX1RUQ01hcHMgIHNlcnZpY2UgPQorICAgICAgICAoRlRfU2VydmljZV9UVENNYXBzKWZ0X21vZHVsZV9nZXRfc2VydmljZSggc2ZudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NFUlZJQ0VfSURfVFRfQ01BUCApOworCisKKyAgICAgIGlmICggc2VydmljZSAmJiBzZXJ2aWNlLT5nZXRfY21hcF9pbmZvICkKKyAgICAgICAgZXJyb3IgPSBzZXJ2aWNlLT5nZXRfY21hcF9pbmZvKCBjaGFybWFwLCBjbWFwX2luZm8gKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0RFRklORV9TRVJWSUNFX1RUQ01BUFNSRUMoCisgICAgY2ZmX3NlcnZpY2VfZ2V0X2NtYXBfaW5mbywKKyAgICAoVFRfQ01hcF9JbmZvX0dldEZ1bmMpY2ZmX2dldF9jbWFwX2luZm8KKyAgKQorCisKKyAgLyoKKyAgICogIENJRCBJTkZPIFNFUlZJQ0UKKyAgICoKKyAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBjZmZfZ2V0X3JvcyggQ0ZGX0ZhY2UgICAgICBmYWNlLAorICAgICAgICAgICAgICAgY29uc3QgY2hhciogICpyZWdpc3RyeSwKKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqb3JkZXJpbmcsCisgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgKnN1cHBsZW1lbnQgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworICAgIENGRl9Gb250ICBjZmYgICA9IChDRkZfRm9udClmYWNlLT5leHRyYS5kYXRhOworCisKKyAgICBpZiAoIGNmZiApCisgICAgeworICAgICAgQ0ZGX0ZvbnRSZWNEaWN0ICBkaWN0ID0gJmNmZi0+dG9wX2ZvbnQuZm9udF9kaWN0OworCisKKyAgICAgIGlmICggZGljdC0+Y2lkX3JlZ2lzdHJ5ID09IDB4RkZGRlUgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgIH0KKworICAgICAgaWYgKCByZWdpc3RyeSApCisgICAgICB7CisgICAgICAgIGlmICggY2ZmLT5yZWdpc3RyeSA9PSBOVUxMICkKKyAgICAgICAgICBjZmYtPnJlZ2lzdHJ5ID0gY2ZmX2luZGV4X2dldF9zaWRfc3RyaW5nKCBjZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdC0+Y2lkX3JlZ2lzdHJ5ICk7CisgICAgICAgICpyZWdpc3RyeSA9IGNmZi0+cmVnaXN0cnk7CisgICAgICB9CisKKyAgICAgIGlmICggb3JkZXJpbmcgKQorICAgICAgeworICAgICAgICBpZiAoIGNmZi0+b3JkZXJpbmcgPT0gTlVMTCApCisgICAgICAgICAgY2ZmLT5vcmRlcmluZyA9IGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZyggY2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QtPmNpZF9vcmRlcmluZyApOworICAgICAgICAqb3JkZXJpbmcgPSBjZmYtPm9yZGVyaW5nOworICAgICAgfQorCisgICAgICAvKgorICAgICAgICogWFhYOiBBY2NvcmRpbmcgdG8gQWRvYmUgVGVjaE5vdGUgIzUxNzYsIHRoZSBzdXBwbGVtZW50IGluIENGRgorICAgICAgICogICAgICBjYW4gYmUgYSByZWFsIG51bWJlci4gV2UgdHJ1bmNhdGUgaXQgdG8gZml0IHB1YmxpYyBBUEkKKyAgICAgICAqICAgICAgc2luY2UgZnJlZXR5cGUtMi4zLjYuCisgICAgICAgKi8KKyAgICAgIGlmICggc3VwcGxlbWVudCApCisgICAgICB7CisgICAgICAgIGlmICggZGljdC0+Y2lkX3N1cHBsZW1lbnQgPCBGVF9JTlRfTUlOIHx8CisgICAgICAgICAgICAgZGljdC0+Y2lkX3N1cHBsZW1lbnQgPiBGVF9JTlRfTUFYICkKKyAgICAgICAgICBGVF9UUkFDRTEoKCAiY2ZmX2dldF9yb3M6IHRvbyBsYXJnZSBzdXBwbGVtZW50ICVkIGlzIHRydW5jYXRlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICBkaWN0LT5jaWRfc3VwcGxlbWVudCApKTsKKyAgICAgICAgKnN1cHBsZW1lbnQgPSAoRlRfSW50KWRpY3QtPmNpZF9zdXBwbGVtZW50OworICAgICAgfQorICAgIH0KKworICBGYWlsOgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNmZl9nZXRfaXNfY2lkKCBDRkZfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICppc19jaWQgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworICAgIENGRl9Gb250ICBjZmYgICA9IChDRkZfRm9udClmYWNlLT5leHRyYS5kYXRhOworCisKKyAgICAqaXNfY2lkID0gMDsKKworICAgIGlmICggY2ZmICkKKyAgICB7CisgICAgICBDRkZfRm9udFJlY0RpY3QgIGRpY3QgPSAmY2ZmLT50b3BfZm9udC5mb250X2RpY3Q7CisKKworICAgICAgaWYgKCBkaWN0LT5jaWRfcmVnaXN0cnkgIT0gMHhGRkZGVSApCisgICAgICAgICppc19jaWQgPSAxOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNmZl9nZXRfY2lkX2Zyb21fZ2x5cGhfaW5kZXgoIENGRl9GYWNlICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICpjaWQgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworICAgIENGRl9Gb250ICBjZmY7CisKKworICAgIGNmZiA9IChDRkZfRm9udClmYWNlLT5leHRyYS5kYXRhOworCisgICAgaWYgKCBjZmYgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgICAgICAgICAgYzsKKyAgICAgIENGRl9Gb250UmVjRGljdCAgZGljdCA9ICZjZmYtPnRvcF9mb250LmZvbnRfZGljdDsKKworCisgICAgICBpZiAoIGRpY3QtPmNpZF9yZWdpc3RyeSA9PSAweEZGRkZVICkKKyAgICAgIHsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgICBnb3RvIEZhaWw7CisgICAgICB9CisKKyAgICAgIGlmICggZ2x5cGhfaW5kZXggPiBjZmYtPm51bV9nbHlwaHMgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgIH0KKworICAgICAgYyA9IGNmZi0+Y2hhcnNldC5zaWRzW2dseXBoX2luZGV4XTsKKworICAgICAgaWYgKCBjaWQgKQorICAgICAgICAqY2lkID0gYzsKKyAgICB9CisKKyAgRmFpbDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0RFRklORV9TRVJWSUNFX0NJRFJFQygKKyAgICBjZmZfc2VydmljZV9jaWRfaW5mbywKKyAgICAoRlRfQ0lEX0dldFJlZ2lzdHJ5T3JkZXJpbmdTdXBwbGVtZW50RnVuYyljZmZfZ2V0X3JvcywKKyAgICAoRlRfQ0lEX0dldElzSW50ZXJuYWxseUNJREtleWVkRnVuYykgICAgICBjZmZfZ2V0X2lzX2NpZCwKKyAgICAoRlRfQ0lEX0dldENJREZyb21HbHlwaEluZGV4RnVuYykgICAgICAgICBjZmZfZ2V0X2NpZF9mcm9tX2dseXBoX2luZGV4CisgICkKKworCisgIC8qCisgICAqICBQUk9QRVJUWSBTRVJWSUNFCisgICAqCisgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2ZmX3Byb3BlcnR5X3NldCggRlRfTW9kdWxlICAgIG1vZHVsZSwgICAgICAgICAvKiBDRkZfRHJpdmVyICovCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBwcm9wZXJ0eV9uYW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiAgdmFsdWUgKQorICB7CisgICAgRlRfRXJyb3IgICAgZXJyb3IgID0gRlRfRXJyX09rOworICAgIENGRl9Ecml2ZXIgIGRyaXZlciA9IChDRkZfRHJpdmVyKW1vZHVsZTsKKworCisgICAgaWYgKCAhZnRfc3RyY21wKCBwcm9wZXJ0eV9uYW1lLCAiaGludGluZy1lbmdpbmUiICkgKQorICAgIHsKKyAgICAgIEZUX1VJbnQqICBoaW50aW5nX2VuZ2luZSA9IChGVF9VSW50Kil2YWx1ZTsKKworCisjaWZuZGVmIENGRl9DT05GSUdfT1BUSU9OX09MRF9FTkdJTkUKKyAgICAgIGlmICggKmhpbnRpbmdfZW5naW5lICE9IEZUX0NGRl9ISU5USU5HX0FET0JFICkKKyAgICAgICAgZXJyb3IgPSBGVF9FUlIoIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApOworICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGRyaXZlci0+aGludGluZ19lbmdpbmUgPSAqaGludGluZ19lbmdpbmU7CisKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisgICAgZWxzZSBpZiAoICFmdF9zdHJjbXAoIHByb3BlcnR5X25hbWUsICJuby1zdGVtLWRhcmtlbmluZyIgKSApCisgICAgeworICAgICAgRlRfQm9vbCogIG5vX3N0ZW1fZGFya2VuaW5nID0gKEZUX0Jvb2wqKXZhbHVlOworCisKKyAgICAgIGRyaXZlci0+bm9fc3RlbV9kYXJrZW5pbmcgPSAqbm9fc3RlbV9kYXJrZW5pbmc7CisKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBGVF9UUkFDRTAoKCAiY2ZmX3Byb3BlcnR5X3NldDogbWlzc2luZyBwcm9wZXJ0eSBgJXMnXG4iLAorICAgICAgICAgICAgICAgIHByb3BlcnR5X25hbWUgKSk7CisgICAgcmV0dXJuIEZUX1RIUk9XKCBNaXNzaW5nX1Byb3BlcnR5ICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBjZmZfcHJvcGVydHlfZ2V0KCBGVF9Nb2R1bGUgICAgbW9kdWxlLCAgICAgICAgIC8qIENGRl9Ecml2ZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICB2YWx1ZSApCisgIHsKKyAgICBGVF9FcnJvciAgICBlcnJvciAgPSBGVF9FcnJfT2s7CisgICAgQ0ZGX0RyaXZlciAgZHJpdmVyID0gKENGRl9Ecml2ZXIpbW9kdWxlOworCisgICAgRlRfVUludCAgaGludGluZ19lbmdpbmUgICAgPSBkcml2ZXItPmhpbnRpbmdfZW5naW5lOworICAgIEZUX0Jvb2wgIG5vX3N0ZW1fZGFya2VuaW5nID0gZHJpdmVyLT5ub19zdGVtX2RhcmtlbmluZzsKKworCisgICAgaWYgKCAhZnRfc3RyY21wKCBwcm9wZXJ0eV9uYW1lLCAiaGludGluZy1lbmdpbmUiICkgKQorICAgIHsKKyAgICAgIEZUX1VJbnQqICB2YWwgPSAoRlRfVUludCopdmFsdWU7CisKKworICAgICAgKnZhbCA9IGhpbnRpbmdfZW5naW5lOworCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYgKCAhZnRfc3RyY21wKCBwcm9wZXJ0eV9uYW1lLCAibm8tc3RlbS1kYXJrZW5pbmciICkgKQorICAgIHsKKyAgICAgIEZUX0Jvb2wqICB2YWwgPSAoRlRfQm9vbCopdmFsdWU7CisKKworICAgICAgKnZhbCA9IG5vX3N0ZW1fZGFya2VuaW5nOworCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgRlRfVFJBQ0UwKCggImNmZl9wcm9wZXJ0eV9nZXQ6IG1pc3NpbmcgcHJvcGVydHkgYCVzJ1xuIiwKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eV9uYW1lICkpOworICAgIHJldHVybiBGVF9USFJPVyggTWlzc2luZ19Qcm9wZXJ0eSApOworICB9CisKKworICBGVF9ERUZJTkVfU0VSVklDRV9QUk9QRVJUSUVTUkVDKAorICAgIGNmZl9zZXJ2aWNlX3Byb3BlcnRpZXMsCisgICAgKEZUX1Byb3BlcnRpZXNfU2V0RnVuYyljZmZfcHJvcGVydHlfc2V0LAorICAgIChGVF9Qcm9wZXJ0aWVzX0dldEZ1bmMpY2ZmX3Byb3BlcnR5X2dldCApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgIEQgUiBJIFYgRSBSICBJIE4gVCBFIFIgRiBBIEMgRSAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9OT19HTFlQSF9OQU1FUworICBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM3KAorICAgIGNmZl9zZXJ2aWNlcywKKyAgICBGVF9TRVJWSUNFX0lEX1hGODZfTkFNRSwgICAgICAgICAgICBGVF9YRjg2X0ZPUk1BVF9DRkYsCisgICAgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0lORk8sICAgICAgJkNGRl9TRVJWSUNFX1BTX0lORk9fR0VULAorICAgIEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9GT05UX05BTUUsICZDRkZfU0VSVklDRV9QU19OQU1FX0dFVCwKKyAgICBGVF9TRVJWSUNFX0lEX0dMWVBIX0RJQ1QsICAgICAgICAgICAmQ0ZGX1NFUlZJQ0VfR0xZUEhfRElDVF9HRVQsCisgICAgRlRfU0VSVklDRV9JRF9UVF9DTUFQLCAgICAgICAgICAgICAgJkNGRl9TRVJWSUNFX0dFVF9DTUFQX0lORk9fR0VULAorICAgIEZUX1NFUlZJQ0VfSURfQ0lELCAgICAgICAgICAgICAgICAgICZDRkZfU0VSVklDRV9DSURfSU5GT19HRVQsCisgICAgRlRfU0VSVklDRV9JRF9QUk9QRVJUSUVTLCAgICAgICAgICAgJkNGRl9TRVJWSUNFX1BST1BFUlRJRVNfR0VUCisgICkKKyNlbHNlCisgIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzYoCisgICAgY2ZmX3NlcnZpY2VzLAorICAgIEZUX1NFUlZJQ0VfSURfWEY4Nl9OQU1FLCAgICAgICAgICAgIEZUX1hGODZfRk9STUFUX0NGRiwKKyAgICBGVF9TRVJWSUNFX0lEX1BPU1RTQ1JJUFRfSU5GTywgICAgICAmQ0ZGX1NFUlZJQ0VfUFNfSU5GT19HRVQsCisgICAgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0ZPTlRfTkFNRSwgJkNGRl9TRVJWSUNFX1BTX05BTUVfR0VULAorICAgIEZUX1NFUlZJQ0VfSURfVFRfQ01BUCwgICAgICAgICAgICAgICZDRkZfU0VSVklDRV9HRVRfQ01BUF9JTkZPX0dFVCwKKyAgICBGVF9TRVJWSUNFX0lEX0NJRCwgICAgICAgICAgICAgICAgICAmQ0ZGX1NFUlZJQ0VfQ0lEX0lORk9fR0VULAorICAgIEZUX1NFUlZJQ0VfSURfUFJPUEVSVElFUywgICAgICAgICAgICZDRkZfU0VSVklDRV9QUk9QRVJUSUVTX0dFVAorICApCisjZW5kaWYKKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfTW9kdWxlX0ludGVyZmFjZSApCisgIGNmZl9nZXRfaW50ZXJmYWNlKCBGVF9Nb2R1bGUgICAgZHJpdmVyLCAgICAgICAvKiBDRkZfRHJpdmVyICovCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgbW9kdWxlX2ludGVyZmFjZSApCisgIHsKKyAgICBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5OworICAgIEZUX01vZHVsZSAgICAgICAgICAgIHNmbnQ7CisgICAgRlRfTW9kdWxlX0ludGVyZmFjZSAgcmVzdWx0OworCisKKyAgICAvKiBDRkZfU0VSVklDRVNfR0VUIGRlcmVmZXJzIGBsaWJyYXJ5JyBpbiBQSUMgbW9kZSAqLworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisgICAgaWYgKCAhZHJpdmVyICkKKyAgICAgIHJldHVybiBOVUxMOworICAgIGxpYnJhcnkgPSBkcml2ZXItPmxpYnJhcnk7CisgICAgaWYgKCAhbGlicmFyeSApCisgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCisgICAgcmVzdWx0ID0gZnRfc2VydmljZV9saXN0X2xvb2t1cCggQ0ZGX1NFUlZJQ0VTX0dFVCwgbW9kdWxlX2ludGVyZmFjZSApOworICAgIGlmICggcmVzdWx0ICE9IE5VTEwgKQorICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIC8qIGBkcml2ZXInIGlzIG5vdCB5ZXQgZXZhbHVhdGVkIGluIG5vbi1QSUMgbW9kZSAqLworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworICAgIGlmICggIWRyaXZlciApCisgICAgICByZXR1cm4gTlVMTDsKKyAgICBsaWJyYXJ5ID0gZHJpdmVyLT5saWJyYXJ5OworICAgIGlmICggIWxpYnJhcnkgKQorICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKworICAgIC8qIHdlIHBhc3Mgb3VyIHJlcXVlc3QgdG8gdGhlIGBzZm50JyBtb2R1bGUgKi8KKyAgICBzZm50ID0gRlRfR2V0X01vZHVsZSggbGlicmFyeSwgInNmbnQiICk7CisKKyAgICByZXR1cm4gc2ZudCA/IHNmbnQtPmNsYXp6LT5nZXRfaW50ZXJmYWNlKCBzZm50LCBtb2R1bGVfaW50ZXJmYWNlICkgOiAwOworICB9CisKKworICAvKiBUaGUgRlRfRHJpdmVySW50ZXJmYWNlIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIGZ0ZHJpdmVyLmguICovCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMKKyNkZWZpbmUgQ0ZGX1NJWkVfU0VMRUNUIGNmZl9zaXplX3NlbGVjdAorI2Vsc2UKKyNkZWZpbmUgQ0ZGX1NJWkVfU0VMRUNUIDAKKyNlbmRpZgorCisgIEZUX0RFRklORV9EUklWRVIoCisgICAgY2ZmX2RyaXZlcl9jbGFzcywKKworICAgICAgRlRfTU9EVUxFX0ZPTlRfRFJJVkVSICAgICAgIHwKKyAgICAgIEZUX01PRFVMRV9EUklWRVJfU0NBTEFCTEUgICB8CisgICAgICBGVF9NT0RVTEVfRFJJVkVSX0hBU19ISU5URVIsCisKKyAgICAgIHNpemVvZiAoIENGRl9Ecml2ZXJSZWMgKSwKKyAgICAgICJjZmYiLAorICAgICAgMHgxMDAwMEwsCisgICAgICAweDIwMDAwTCwKKworICAgICAgMCwgICAvKiBtb2R1bGUtc3BlY2lmaWMgaW50ZXJmYWNlICovCisKKyAgICAgIGNmZl9kcml2ZXJfaW5pdCwKKyAgICAgIGNmZl9kcml2ZXJfZG9uZSwKKyAgICAgIGNmZl9nZXRfaW50ZXJmYWNlLAorCisgICAgLyogbm93IHRoZSBzcGVjaWZpYyBkcml2ZXIgZmllbGRzICovCisgICAgc2l6ZW9mICggVFRfRmFjZVJlYyApLAorICAgIHNpemVvZiAoIENGRl9TaXplUmVjICksCisgICAgc2l6ZW9mICggQ0ZGX0dseXBoU2xvdFJlYyApLAorCisgICAgY2ZmX2ZhY2VfaW5pdCwKKyAgICBjZmZfZmFjZV9kb25lLAorICAgIGNmZl9zaXplX2luaXQsCisgICAgY2ZmX3NpemVfZG9uZSwKKyAgICBjZmZfc2xvdF9pbml0LAorICAgIGNmZl9zbG90X2RvbmUsCisKKyAgICBjZmZfZ2x5cGhfbG9hZCwKKworICAgIGNmZl9nZXRfa2VybmluZywKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogRlRfRmFjZV9BdHRhY2hGdW5jICovCisgICAgY2ZmX2dldF9hZHZhbmNlcywKKworICAgIGNmZl9zaXplX3JlcXVlc3QsCisKKyAgICBDRkZfU0laRV9TRUxFQ1QKKyAgKQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmZHJpdnIuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmRyaXZyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q0MWY1NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmRyaXZyLmgKQEAgLTAsMCArMSwzOCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2ZmZHJpdnIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEhpZ2gtbGV2ZWwgT3BlblR5cGUgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fQ0ZGRFJJVkVSX0hfXworI2RlZmluZSBfX0NGRkRSSVZFUl9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIEZUX0RFQ0xBUkVfRFJJVkVSKCBjZmZfZHJpdmVyX2NsYXNzICkKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0NGRkRSSVZFUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmVycnMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmVycnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2U3NTVjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmZXJycy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmZmVycnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDRkYgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgZmlsZSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgQ0ZGIGVycm9yIGVudW1lcmF0aW9uIGNvbnN0YW50cy4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19DRkZFUlJTX0hfXworI2RlZmluZSBfX0NGRkVSUlNfSF9fCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmgiCisKKyN1bmRlZiBfX0ZURVJST1JTX0hfXworCisjdW5kZWYgIEZUX0VSUl9QUkVGSVgKKyNkZWZpbmUgRlRfRVJSX1BSRUZJWCAgQ0ZGX0Vycl8KKyNkZWZpbmUgRlRfRVJSX0JBU0UgICAgRlRfTW9kX0Vycl9DRkYKKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIgorCisjZW5kaWYgLyogX19DRkZFUlJTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmZ2xvYWQuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmdsb2FkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJiNzVhYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmdsb2FkLmMKQEAgLTAsMCArMSwzMDcyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZmZnbG9hZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgT3BlblR5cGUgR2x5cGggTG9hZGVyIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRjZmZkcnYuaCIKKworI2luY2x1ZGUgImNmZm9ianMuaCIKKyNpbmNsdWRlICJjZmZsb2FkLmgiCisjaW5jbHVkZSAiY2ZmZ2xvYWQuaCIKKyNpbmNsdWRlICJjZjJmdC5oIiAgICAgIC8qIGZvciBjZjJfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncyAqLworCisjaW5jbHVkZSAiY2ZmZXJycy5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfY2ZmZ2xvYWQKKworCisjaWZkZWYgQ0ZGX0NPTkZJR19PUFRJT05fT0xEX0VOR0lORQorCisgIHR5cGVkZWYgZW51bSAgQ0ZGX09wZXJhdG9yXworICB7CisgICAgY2ZmX29wX3Vua25vd24gPSAwLAorCisgICAgY2ZmX29wX3Jtb3ZldG8sCisgICAgY2ZmX29wX2htb3ZldG8sCisgICAgY2ZmX29wX3Ztb3ZldG8sCisKKyAgICBjZmZfb3BfcmxpbmV0bywKKyAgICBjZmZfb3BfaGxpbmV0bywKKyAgICBjZmZfb3BfdmxpbmV0bywKKworICAgIGNmZl9vcF9ycmN1cnZldG8sCisgICAgY2ZmX29wX2hoY3VydmV0bywKKyAgICBjZmZfb3BfaHZjdXJ2ZXRvLAorICAgIGNmZl9vcF9yY3VydmVsaW5lLAorICAgIGNmZl9vcF9ybGluZWN1cnZlLAorICAgIGNmZl9vcF92aGN1cnZldG8sCisgICAgY2ZmX29wX3Z2Y3VydmV0bywKKworICAgIGNmZl9vcF9mbGV4LAorICAgIGNmZl9vcF9oZmxleCwKKyAgICBjZmZfb3BfaGZsZXgxLAorICAgIGNmZl9vcF9mbGV4MSwKKworICAgIGNmZl9vcF9lbmRjaGFyLAorCisgICAgY2ZmX29wX2hzdGVtLAorICAgIGNmZl9vcF92c3RlbSwKKyAgICBjZmZfb3BfaHN0ZW1obSwKKyAgICBjZmZfb3BfdnN0ZW1obSwKKworICAgIGNmZl9vcF9oaW50bWFzaywKKyAgICBjZmZfb3BfY250cm1hc2ssCisgICAgY2ZmX29wX2RvdHNlY3Rpb24sICAvKiBkZXByZWNhdGVkLCBhY3RzIGFzIG5vLW9wICovCisKKyAgICBjZmZfb3BfYWJzLAorICAgIGNmZl9vcF9hZGQsCisgICAgY2ZmX29wX3N1YiwKKyAgICBjZmZfb3BfZGl2LAorICAgIGNmZl9vcF9uZWcsCisgICAgY2ZmX29wX3JhbmRvbSwKKyAgICBjZmZfb3BfbXVsLAorICAgIGNmZl9vcF9zcXJ0LAorCisgICAgY2ZmX29wX2JsZW5kLAorCisgICAgY2ZmX29wX2Ryb3AsCisgICAgY2ZmX29wX2V4Y2gsCisgICAgY2ZmX29wX2luZGV4LAorICAgIGNmZl9vcF9yb2xsLAorICAgIGNmZl9vcF9kdXAsCisKKyAgICBjZmZfb3BfcHV0LAorICAgIGNmZl9vcF9nZXQsCisgICAgY2ZmX29wX3N0b3JlLAorICAgIGNmZl9vcF9sb2FkLAorCisgICAgY2ZmX29wX2FuZCwKKyAgICBjZmZfb3Bfb3IsCisgICAgY2ZmX29wX25vdCwKKyAgICBjZmZfb3BfZXEsCisgICAgY2ZmX29wX2lmZWxzZSwKKworICAgIGNmZl9vcF9jYWxsc3ViciwKKyAgICBjZmZfb3BfY2FsbGdzdWJyLAorICAgIGNmZl9vcF9yZXR1cm4sCisKKyAgICAvKiBUeXBlIDEgb3Bjb2RlczogaW52YWxpZCBidXQgc2VlbiBpbiByZWFsIGxpZmUgKi8KKyAgICBjZmZfb3BfaHNidywKKyAgICBjZmZfb3BfY2xvc2VwYXRoLAorICAgIGNmZl9vcF9jYWxsb3RoZXJzdWJyLAorICAgIGNmZl9vcF9wb3AsCisgICAgY2ZmX29wX3NlYWMsCisgICAgY2ZmX29wX3NidywKKyAgICBjZmZfb3Bfc2V0Y3VycmVudHBvaW50LAorCisgICAgLyogZG8gbm90IHJlbW92ZSAqLworICAgIGNmZl9vcF9tYXgKKworICB9IENGRl9PcGVyYXRvcjsKKworCisjZGVmaW5lIENGRl9DT1VOVF9DSEVDS19XSURUSCAgMHg4MAorI2RlZmluZSBDRkZfQ09VTlRfRVhBQ1QgICAgICAgIDB4NDAKKyNkZWZpbmUgQ0ZGX0NPVU5UX0NMRUFSX1NUQUNLICAweDIwCisKKyAgLyogY291bnQgdmFsdWVzIHdoaWNoIGhhdmUgdGhlIGBDRkZfQ09VTlRfQ0hFQ0tfV0lEVEgnIGZsYWcgc2V0IGFyZSAgKi8KKyAgLyogdXNlZCBmb3IgY2hlY2tpbmcgdGhlIHdpZHRoIGFuZCByZXF1ZXN0ZWQgbnVtYmVycyBvZiBhcmd1bWVudHMgICAgKi8KKyAgLyogb25seTsgdGhleSBhcmUgc2V0IHRvIHplcm8gYWZ0ZXJ3YXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAvKiB0aGUgb3RoZXIgdHdvIGZsYWdzIGFyZSBpbmZvcm1hdGl2ZSBvbmx5IGFuZCB1bnVzZWQgY3VycmVudGx5ICAgICAqLworCisgIHN0YXRpYyBjb25zdCBGVF9CeXRlICBjZmZfYXJndW1lbnRfY291bnRzW10gPQorICB7CisgICAgMCwgIC8qIHVua25vd24gKi8KKworICAgIDIgfCBDRkZfQ09VTlRfQ0hFQ0tfV0lEVEggfCBDRkZfQ09VTlRfRVhBQ1QsIC8qIHJtb3ZldG8gKi8KKyAgICAxIHwgQ0ZGX0NPVU5UX0NIRUNLX1dJRFRIIHwgQ0ZGX0NPVU5UX0VYQUNULAorICAgIDEgfCBDRkZfQ09VTlRfQ0hFQ0tfV0lEVEggfCBDRkZfQ09VTlRfRVhBQ1QsCisKKyAgICAwIHwgQ0ZGX0NPVU5UX0NMRUFSX1NUQUNLLCAvKiBybGluZXRvICovCisgICAgMCB8IENGRl9DT1VOVF9DTEVBUl9TVEFDSywKKyAgICAwIHwgQ0ZGX0NPVU5UX0NMRUFSX1NUQUNLLAorCisgICAgMCB8IENGRl9DT1VOVF9DTEVBUl9TVEFDSywgLyogcnJjdXJ2ZXRvICovCisgICAgMCB8IENGRl9DT1VOVF9DTEVBUl9TVEFDSywKKyAgICAwIHwgQ0ZGX0NPVU5UX0NMRUFSX1NUQUNLLAorICAgIDAgfCBDRkZfQ09VTlRfQ0xFQVJfU1RBQ0ssCisgICAgMCB8IENGRl9DT1VOVF9DTEVBUl9TVEFDSywKKyAgICAwIHwgQ0ZGX0NPVU5UX0NMRUFSX1NUQUNLLAorICAgIDAgfCBDRkZfQ09VTlRfQ0xFQVJfU1RBQ0ssCisKKyAgICAxMywgLyogZmxleCAqLworICAgIDcsCisgICAgOSwKKyAgICAxMSwKKworICAgIDAgfCBDRkZfQ09VTlRfQ0hFQ0tfV0lEVEgsIC8qIGVuZGNoYXIgKi8KKworICAgIDIgfCBDRkZfQ09VTlRfQ0hFQ0tfV0lEVEgsIC8qIGhzdGVtICovCisgICAgMiB8IENGRl9DT1VOVF9DSEVDS19XSURUSCwKKyAgICAyIHwgQ0ZGX0NPVU5UX0NIRUNLX1dJRFRILAorICAgIDIgfCBDRkZfQ09VTlRfQ0hFQ0tfV0lEVEgsCisKKyAgICAwIHwgQ0ZGX0NPVU5UX0NIRUNLX1dJRFRILCAvKiBoaW50bWFzayAqLworICAgIDAgfCBDRkZfQ09VTlRfQ0hFQ0tfV0lEVEgsIC8qIGNudHJtYXNrICovCisgICAgMCwgLyogZG90c2VjdGlvbiAqLworCisgICAgMSwgLyogYWJzICovCisgICAgMiwKKyAgICAyLAorICAgIDIsCisgICAgMSwKKyAgICAwLAorICAgIDIsCisgICAgMSwKKworICAgIDEsIC8qIGJsZW5kICovCisKKyAgICAxLCAvKiBkcm9wICovCisgICAgMiwKKyAgICAxLAorICAgIDIsCisgICAgMSwKKworICAgIDIsIC8qIHB1dCAqLworICAgIDEsCisgICAgNCwKKyAgICAzLAorCisgICAgMiwgLyogYW5kICovCisgICAgMiwKKyAgICAxLAorICAgIDIsCisgICAgNCwKKworICAgIDEsIC8qIGNhbGxzdWJyICovCisgICAgMSwKKyAgICAwLAorCisgICAgMiwgLyogaHNidyAqLworICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDUsIC8qIHNlYWMgKi8KKyAgICA0LCAvKiBzYncgKi8KKyAgICAyICAvKiBzZXRjdXJyZW50cG9pbnQgKi8KKyAgfTsKKworI2VuZGlmIC8qIENGRl9DT05GSUdfT1BUSU9OX09MRF9FTkdJTkUgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgICAgICAgICAgR0VORVJJQyBDSEFSU1RSSU5HIFBBUlNJTkcgICAgICAgICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNmZl9idWlsZGVyX2luaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRpYWxpemVzIGEgZ2l2ZW4gZ2x5cGggYnVpbGRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJ1aWxkZXIgOjogQSBwb2ludGVyIHRvIHRoZSBnbHlwaCBidWlsZGVyIHRvIGluaXRpYWxpemUuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgOjogVGhlIGN1cnJlbnQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2l6ZSAgICA6OiBUaGUgY3VycmVudCBzaXplIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaCAgIDo6IFRoZSBjdXJyZW50IGdseXBoIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhpbnRpbmcgOjogV2hldGhlciBoaW50aW5nIGlzIGFjdGl2ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgY2ZmX2J1aWxkZXJfaW5pdCggQ0ZGX0J1aWxkZXIqICAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgVFRfRmFjZSAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgQ0ZGX1NpemUgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgQ0ZGX0dseXBoU2xvdCAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgIGhpbnRpbmcgKQorICB7CisgICAgYnVpbGRlci0+cGF0aF9iZWd1biAgPSAwOworICAgIGJ1aWxkZXItPmxvYWRfcG9pbnRzID0gMTsKKworICAgIGJ1aWxkZXItPmZhY2UgICA9IGZhY2U7CisgICAgYnVpbGRlci0+Z2x5cGggID0gZ2x5cGg7CisgICAgYnVpbGRlci0+bWVtb3J5ID0gZmFjZS0+cm9vdC5tZW1vcnk7CisKKyAgICBpZiAoIGdseXBoICkKKyAgICB7CisgICAgICBGVF9HbHlwaExvYWRlciAgbG9hZGVyID0gZ2x5cGgtPnJvb3QuaW50ZXJuYWwtPmxvYWRlcjsKKworCisgICAgICBidWlsZGVyLT5sb2FkZXIgID0gbG9hZGVyOworICAgICAgYnVpbGRlci0+YmFzZSAgICA9ICZsb2FkZXItPmJhc2Uub3V0bGluZTsKKyAgICAgIGJ1aWxkZXItPmN1cnJlbnQgPSAmbG9hZGVyLT5jdXJyZW50Lm91dGxpbmU7CisgICAgICBGVF9HbHlwaExvYWRlcl9SZXdpbmQoIGxvYWRlciApOworCisgICAgICBidWlsZGVyLT5oaW50c19nbG9iYWxzID0gMDsKKyAgICAgIGJ1aWxkZXItPmhpbnRzX2Z1bmNzICAgPSAwOworCisgICAgICBpZiAoIGhpbnRpbmcgJiYgc2l6ZSApCisgICAgICB7CisgICAgICAgIENGRl9JbnRlcm5hbCAgaW50ZXJuYWwgPSAoQ0ZGX0ludGVybmFsKXNpemUtPnJvb3QuaW50ZXJuYWw7CisKKworICAgICAgICBidWlsZGVyLT5oaW50c19nbG9iYWxzID0gKHZvaWQgKilpbnRlcm5hbC0+dG9wZm9udDsKKyAgICAgICAgYnVpbGRlci0+aGludHNfZnVuY3MgICA9IGdseXBoLT5yb290LmludGVybmFsLT5nbHlwaF9oaW50czsKKyAgICAgIH0KKyAgICB9CisKKyAgICBidWlsZGVyLT5wb3NfeCA9IDA7CisgICAgYnVpbGRlci0+cG9zX3kgPSAwOworCisgICAgYnVpbGRlci0+bGVmdF9iZWFyaW5nLnggPSAwOworICAgIGJ1aWxkZXItPmxlZnRfYmVhcmluZy55ID0gMDsKKyAgICBidWlsZGVyLT5hZHZhbmNlLnggICAgICA9IDA7CisgICAgYnVpbGRlci0+YWR2YW5jZS55ICAgICAgPSAwOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjZmZfYnVpbGRlcl9kb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGaW5hbGl6ZXMgYSBnaXZlbiBnbHlwaCBidWlsZGVyLiAgSXRzIGNvbnRlbnRzIGNhbiBzdGlsbCBiZSB1c2VkICAgKi8KKyAgLyogICAgYWZ0ZXIgdGhlIGNhbGwsIGJ1dCB0aGUgZnVuY3Rpb24gc2F2ZXMgaW1wb3J0YW50IGluZm9ybWF0aW9uICAgICAgICovCisgIC8qICAgIHdpdGhpbiB0aGUgY29ycmVzcG9uZGluZyBnbHlwaCBzbG90LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJ1aWxkZXIgOjogQSBwb2ludGVyIHRvIHRoZSBnbHlwaCBidWlsZGVyIHRvIGZpbmFsaXplLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgY2ZmX2J1aWxkZXJfZG9uZSggQ0ZGX0J1aWxkZXIqICBidWlsZGVyICkKKyAgeworICAgIENGRl9HbHlwaFNsb3QgIGdseXBoID0gYnVpbGRlci0+Z2x5cGg7CisKKworICAgIGlmICggZ2x5cGggKQorICAgICAgZ2x5cGgtPnJvb3Qub3V0bGluZSA9ICpidWlsZGVyLT5iYXNlOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjZmZfY29tcHV0ZV9iaWFzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDb21wdXRlcyB0aGUgYmlhcyB2YWx1ZSBpbiBkZXBlbmRlbmNlIG9mIHRoZSBudW1iZXIgb2YgZ2x5cGggICAgICAgKi8KKyAgLyogICAgc3Vicm91dGluZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW5fY2hhcnN0cmluZ190eXBlIDo6IFRoZSBgQ2hhcnN0cmluZ1R5cGUnIHZhbHVlIG9mIHRoZSB0b3AgRElDVCAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX3N1YnJzICAgICAgICAgIDo6IFRoZSBudW1iZXIgb2YgZ2x5cGggc3Vicm91dGluZXMuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGJpYXMgdmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9JbnQKKyAgY2ZmX2NvbXB1dGVfYmlhcyggRlRfSW50ICAgaW5fY2hhcnN0cmluZ190eXBlLAorICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBudW1fc3VicnMgKQorICB7CisgICAgRlRfSW50ICByZXN1bHQ7CisKKworICAgIGlmICggaW5fY2hhcnN0cmluZ190eXBlID09IDEgKQorICAgICAgcmVzdWx0ID0gMDsKKyAgICBlbHNlIGlmICggbnVtX3N1YnJzIDwgMTI0MCApCisgICAgICByZXN1bHQgPSAxMDc7CisgICAgZWxzZSBpZiAoIG51bV9zdWJycyA8IDMzOTAwVSApCisgICAgICByZXN1bHQgPSAxMTMxOworICAgIGVsc2UKKyAgICAgIHJlc3VsdCA9IDMyNzY4VTsKKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNmZl9kZWNvZGVyX2luaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRpYWxpemVzIGEgZ2l2ZW4gZ2x5cGggZGVjb2Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlY29kZXIgOjogQSBwb2ludGVyIHRvIHRoZSBnbHlwaCBidWlsZGVyIHRvIGluaXRpYWxpemUuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICA6OiBUaGUgY3VycmVudCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2l6ZSAgICAgIDo6IFRoZSBjdXJyZW50IHNpemUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzbG90ICAgICAgOjogVGhlIGN1cnJlbnQgZ2x5cGggb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGhpbnRpbmcgICA6OiBXaGV0aGVyIGhpbnRpbmcgaXMgYWN0aXZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGludF9tb2RlIDo6IFRoZSBoaW50aW5nIG1vZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZmZfZGVjb2Rlcl9pbml0KCBDRkZfRGVjb2RlciogICAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgVFRfRmFjZSAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIENGRl9TaXplICAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgICBDRkZfR2x5cGhTbG90ICAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICAgIGhpbnRpbmcsCisgICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcl9Nb2RlICBoaW50X21vZGUgKQorICB7CisgICAgQ0ZGX0ZvbnQgIGNmZiA9IChDRkZfRm9udClmYWNlLT5leHRyYS5kYXRhOworCisKKyAgICAvKiBjbGVhciBldmVyeXRoaW5nICovCisgICAgRlRfTUVNX1pFUk8oIGRlY29kZXIsIHNpemVvZiAoICpkZWNvZGVyICkgKTsKKworICAgIC8qIGluaXRpYWxpemUgYnVpbGRlciAqLworICAgIGNmZl9idWlsZGVyX2luaXQoICZkZWNvZGVyLT5idWlsZGVyLCBmYWNlLCBzaXplLCBzbG90LCBoaW50aW5nICk7CisKKyAgICAvKiBpbml0aWFsaXplIFR5cGUyIGRlY29kZXIgKi8KKyAgICBkZWNvZGVyLT5jZmYgICAgICAgICAgPSBjZmY7CisgICAgZGVjb2Rlci0+bnVtX2dsb2JhbHMgID0gY2ZmLT5nbG9iYWxfc3VicnNfaW5kZXguY291bnQ7CisgICAgZGVjb2Rlci0+Z2xvYmFscyAgICAgID0gY2ZmLT5nbG9iYWxfc3VicnM7CisgICAgZGVjb2Rlci0+Z2xvYmFsc19iaWFzID0gY2ZmX2NvbXB1dGVfYmlhcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmZi0+dG9wX2ZvbnQuZm9udF9kaWN0LmNoYXJzdHJpbmdfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXItPm51bV9nbG9iYWxzICk7CisKKyAgICBkZWNvZGVyLT5oaW50X21vZGUgICAgPSBoaW50X21vZGU7CisgIH0KKworCisgIC8qIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzZWxlY3QgdGhlIHN1YmZvbnQgKi8KKyAgLyogYW5kIHRoZSBsb2NhbHMgc3VicnMgYXJyYXkgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2ZmX2RlY29kZXJfcHJlcGFyZSggQ0ZGX0RlY29kZXIqICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICBDRkZfU2l6ZSAgICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgZ2x5cGhfaW5kZXggKQorICB7CisgICAgQ0ZGX0J1aWxkZXIgICpidWlsZGVyID0gJmRlY29kZXItPmJ1aWxkZXI7CisgICAgQ0ZGX0ZvbnQgICAgICBjZmYgICAgID0gKENGRl9Gb250KWJ1aWxkZXItPmZhY2UtPmV4dHJhLmRhdGE7CisgICAgQ0ZGX1N1YkZvbnQgICBzdWIgICAgID0gJmNmZi0+dG9wX2ZvbnQ7CisgICAgRlRfRXJyb3IgICAgICBlcnJvciAgID0gRlRfRXJyX09rOworCisKKyAgICAvKiBtYW5hZ2UgQ0lEIGZvbnRzICovCisgICAgaWYgKCBjZmYtPm51bV9zdWJmb250cyApCisgICAgeworICAgICAgRlRfQnl0ZSAgZmRfaW5kZXggPSBjZmZfZmRfc2VsZWN0X2dldCggJmNmZi0+ZmRfc2VsZWN0LCBnbHlwaF9pbmRleCApOworCisKKyAgICAgIGlmICggZmRfaW5kZXggPj0gY2ZmLT5udW1fc3ViZm9udHMgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTQoKCAiY2ZmX2RlY29kZXJfcHJlcGFyZTogaW52YWxpZCBDSUQgc3ViZm9udCBpbmRleFxuIiApKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIEZUX1RSQUNFMygoICJnbHlwaCBpbmRleCAlZCAoc3ViZm9udCAlZCk6XG4iLCBnbHlwaF9pbmRleCwgZmRfaW5kZXggKSk7CisKKyAgICAgIHN1YiA9IGNmZi0+c3ViZm9udHNbZmRfaW5kZXhdOworCisgICAgICBpZiAoIGJ1aWxkZXItPmhpbnRzX2Z1bmNzICYmIHNpemUgKQorICAgICAgeworICAgICAgICBDRkZfSW50ZXJuYWwgIGludGVybmFsID0gKENGRl9JbnRlcm5hbClzaXplLT5yb290LmludGVybmFsOworCisKKyAgICAgICAgLyogZm9yIENGRnMgd2l0aG91dCBzdWJmb250cywgdGhpcyB2YWx1ZSBoYXMgYWxyZWFkeSBiZWVuIHNldCAqLworICAgICAgICBidWlsZGVyLT5oaW50c19nbG9iYWxzID0gKHZvaWQgKilpbnRlcm5hbC0+c3ViZm9udHNbZmRfaW5kZXhdOworICAgICAgfQorICAgIH0KKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorICAgIGVsc2UKKyAgICAgIEZUX1RSQUNFMygoICJnbHlwaCBpbmRleCAlZDpcbiIsIGdseXBoX2luZGV4ICkpOworI2VuZGlmCisKKyAgICBkZWNvZGVyLT5udW1fbG9jYWxzICAgID0gc3ViLT5sb2NhbF9zdWJyc19pbmRleC5jb3VudDsKKyAgICBkZWNvZGVyLT5sb2NhbHMgICAgICAgID0gc3ViLT5sb2NhbF9zdWJyczsKKyAgICBkZWNvZGVyLT5sb2NhbHNfYmlhcyAgID0gY2ZmX2NvbXB1dGVfYmlhcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLT5jZmYtPnRvcF9mb250LmZvbnRfZGljdC5jaGFyc3RyaW5nX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2Rlci0+bnVtX2xvY2FscyApOworCisgICAgZGVjb2Rlci0+Z2x5cGhfd2lkdGggICA9IHN1Yi0+cHJpdmF0ZV9kaWN0LmRlZmF1bHRfd2lkdGg7CisgICAgZGVjb2Rlci0+bm9taW5hbF93aWR0aCA9IHN1Yi0+cHJpdmF0ZV9kaWN0Lm5vbWluYWxfd2lkdGg7CisKKyAgICBkZWNvZGVyLT5jdXJyZW50X3N1YmZvbnQgPSBzdWI7ICAgICAvKiBmb3IgQWRvYmUncyBDRkYgaGFuZGxlciAqLworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBjaGVjayB0aGF0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBmb3IgYGNvdW50JyBtb3JlIHBvaW50cyAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2ZmX2NoZWNrX3BvaW50cyggQ0ZGX0J1aWxkZXIqICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgIGNvdW50ICkKKyAgeworICAgIHJldHVybiBGVF9HTFlQSExPQURFUl9DSEVDS19QT0lOVFMoIGJ1aWxkZXItPmxvYWRlciwgY291bnQsIDAgKTsKKyAgfQorCisKKyAgLyogYWRkIGEgbmV3IHBvaW50LCBkbyBub3QgY2hlY2sgc3BhY2UgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBDRkZfQnVpbGRlciogIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlICAgICAgIGZsYWcgKQorICB7CisgICAgRlRfT3V0bGluZSogIG91dGxpbmUgPSBidWlsZGVyLT5jdXJyZW50OworCisKKyAgICBpZiAoIGJ1aWxkZXItPmxvYWRfcG9pbnRzICkKKyAgICB7CisgICAgICBGVF9WZWN0b3IqICBwb2ludCAgID0gb3V0bGluZS0+cG9pbnRzICsgb3V0bGluZS0+bl9wb2ludHM7CisgICAgICBGVF9CeXRlKiAgICBjb250cm9sID0gKEZUX0J5dGUqKW91dGxpbmUtPnRhZ3MgKyBvdXRsaW5lLT5uX3BvaW50czsKKworI2lmZGVmIENGRl9DT05GSUdfT1BUSU9OX09MRF9FTkdJTkUKKyAgICAgIENGRl9Ecml2ZXIgIGRyaXZlciAgPSAoQ0ZGX0RyaXZlcilGVF9GQUNFX0RSSVZFUiggYnVpbGRlci0+ZmFjZSApOworCisKKyAgICAgIGlmICggZHJpdmVyLT5oaW50aW5nX2VuZ2luZSA9PSBGVF9DRkZfSElOVElOR19GUkVFVFlQRSApCisgICAgICB7CisgICAgICAgIHBvaW50LT54ID0geCA+PiAxNjsKKyAgICAgICAgcG9pbnQtPnkgPSB5ID4+IDE2OworICAgICAgfQorICAgICAgZWxzZQorI2VuZGlmCisgICAgICB7CisgICAgICAgIC8qIGNmMl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzIHVzZXMgMTYuMTYgY29vcmRpbmF0ZXMgKi8KKyAgICAgICAgcG9pbnQtPnggPSB4ID4+IDEwOworICAgICAgICBwb2ludC0+eSA9IHkgPj4gMTA7CisgICAgICB9CisgICAgICAqY29udHJvbCA9IChGVF9CeXRlKSggZmxhZyA/IEZUX0NVUlZFX1RBR19PTiA6IEZUX0NVUlZFX1RBR19DVUJJQyApOworICAgIH0KKworICAgIG91dGxpbmUtPm5fcG9pbnRzKys7CisgIH0KKworCisgIC8qIGNoZWNrIHNwYWNlIGZvciBhIG5ldyBvbi1jdXJ2ZSBwb2ludCwgdGhlbiBhZGQgaXQgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNmZl9idWlsZGVyX2FkZF9wb2ludDEoIENGRl9CdWlsZGVyKiAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgIHkgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICBlcnJvciA9IGNmZl9jaGVja19wb2ludHMoIGJ1aWxkZXIsIDEgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDEgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogY2hlY2sgc3BhY2UgZm9yIGEgbmV3IGNvbnRvdXIsIHRoZW4gYWRkIGl0ICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBjZmZfYnVpbGRlcl9hZGRfY29udG91ciggQ0ZGX0J1aWxkZXIqICBidWlsZGVyICkKKyAgeworICAgIEZUX091dGxpbmUqICBvdXRsaW5lID0gYnVpbGRlci0+Y3VycmVudDsKKyAgICBGVF9FcnJvciAgICAgZXJyb3I7CisKKworICAgIGlmICggIWJ1aWxkZXItPmxvYWRfcG9pbnRzICkKKyAgICB7CisgICAgICBvdXRsaW5lLT5uX2NvbnRvdXJzKys7CisgICAgICByZXR1cm4gRlRfRXJyX09rOworICAgIH0KKworICAgIGVycm9yID0gRlRfR0xZUEhMT0FERVJfQ0hFQ0tfUE9JTlRTKCBidWlsZGVyLT5sb2FkZXIsIDAsIDEgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgaWYgKCBvdXRsaW5lLT5uX2NvbnRvdXJzID4gMCApCisgICAgICAgIG91dGxpbmUtPmNvbnRvdXJzW291dGxpbmUtPm5fY29udG91cnMgLSAxXSA9CisgICAgICAgICAgKHNob3J0KSggb3V0bGluZS0+bl9wb2ludHMgLSAxICk7CisKKyAgICAgIG91dGxpbmUtPm5fY29udG91cnMrKzsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGlmIGEgcGF0aCB3YXMgYmVndW4sIGFkZCBpdHMgZmlyc3Qgb24tY3VydmUgcG9pbnQgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNmZl9idWlsZGVyX3N0YXJ0X3BvaW50KCBDRkZfQnVpbGRlciogIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgIHkgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICAvKiB0ZXN0IHdoZXRoZXIgd2UgYXJlIGJ1aWxkaW5nIGEgbmV3IGNvbnRvdXIgKi8KKyAgICBpZiAoICFidWlsZGVyLT5wYXRoX2JlZ3VuICkKKyAgICB7CisgICAgICBidWlsZGVyLT5wYXRoX2JlZ3VuID0gMTsKKyAgICAgIGVycm9yID0gY2ZmX2J1aWxkZXJfYWRkX2NvbnRvdXIoIGJ1aWxkZXIgKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgZXJyb3IgPSBjZmZfYnVpbGRlcl9hZGRfcG9pbnQxKCBidWlsZGVyLCB4LCB5ICk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBjbG9zZSB0aGUgY3VycmVudCBjb250b3VyICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmZl9idWlsZGVyX2Nsb3NlX2NvbnRvdXIoIENGRl9CdWlsZGVyKiAgYnVpbGRlciApCisgIHsKKyAgICBGVF9PdXRsaW5lKiAgb3V0bGluZSA9IGJ1aWxkZXItPmN1cnJlbnQ7CisgICAgRlRfSW50ICAgICAgIGZpcnN0OworCisKKyAgICBpZiAoICFvdXRsaW5lICkKKyAgICAgIHJldHVybjsKKworICAgIGZpcnN0ID0gb3V0bGluZS0+bl9jb250b3VycyA8PSAxCisgICAgICAgICAgICA/IDAgOiBvdXRsaW5lLT5jb250b3Vyc1tvdXRsaW5lLT5uX2NvbnRvdXJzIC0gMl0gKyAxOworCisgICAgLyogV2UgbXVzdCBub3QgaW5jbHVkZSB0aGUgbGFzdCBwb2ludCBpbiB0aGUgcGF0aCBpZiBpdCAqLworICAgIC8qIGlzIGxvY2F0ZWQgb24gdGhlIGZpcnN0IHBvaW50LiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIG91dGxpbmUtPm5fcG9pbnRzID4gMSApCisgICAgeworICAgICAgRlRfVmVjdG9yKiAgcDEgICAgICA9IG91dGxpbmUtPnBvaW50cyArIGZpcnN0OworICAgICAgRlRfVmVjdG9yKiAgcDIgICAgICA9IG91dGxpbmUtPnBvaW50cyArIG91dGxpbmUtPm5fcG9pbnRzIC0gMTsKKyAgICAgIEZUX0J5dGUqICAgIGNvbnRyb2wgPSAoRlRfQnl0ZSopb3V0bGluZS0+dGFncyArIG91dGxpbmUtPm5fcG9pbnRzIC0gMTsKKworCisgICAgICAvKiBgZGVsZXRlJyBsYXN0IHBvaW50IG9ubHkgaWYgaXQgY29pbmNpZGVzIHdpdGggdGhlIGZpcnN0ICAgICovCisgICAgICAvKiBwb2ludCBhbmQgaWYgaXQgaXMgbm90IGEgY29udHJvbCBwb2ludCAod2hpY2ggY2FuIGhhcHBlbikuICovCisgICAgICBpZiAoIHAxLT54ID09IHAyLT54ICYmIHAxLT55ID09IHAyLT55ICkKKyAgICAgICAgaWYgKCAqY29udHJvbCA9PSBGVF9DVVJWRV9UQUdfT04gKQorICAgICAgICAgIG91dGxpbmUtPm5fcG9pbnRzLS07CisgICAgfQorCisgICAgaWYgKCBvdXRsaW5lLT5uX2NvbnRvdXJzID4gMCApCisgICAgeworICAgICAgLyogRG9uJ3QgYWRkIGNvbnRvdXJzIG9ubHkgY29uc2lzdGluZyBvZiBvbmUgcG9pbnQsIGkuZS4sICovCisgICAgICAvKiBjaGVjayB3aGV0aGVyIGJlZ2luIHBvaW50IGFuZCBsYXN0IHBvaW50IGFyZSB0aGUgc2FtZS4gKi8KKyAgICAgIGlmICggZmlyc3QgPT0gb3V0bGluZS0+bl9wb2ludHMgLSAxICkKKyAgICAgIHsKKyAgICAgICAgb3V0bGluZS0+bl9jb250b3Vycy0tOworICAgICAgICBvdXRsaW5lLT5uX3BvaW50cy0tOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBvdXRsaW5lLT5jb250b3Vyc1tvdXRsaW5lLT5uX2NvbnRvdXJzIC0gMV0gPQorICAgICAgICAgIChzaG9ydCkoIG91dGxpbmUtPm5fcG9pbnRzIC0gMSApOworICAgIH0KKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9JbnQgKQorICBjZmZfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlKCBDRkZfRm9udCAgY2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgY2hhcmNvZGUgKQorICB7CisgICAgRlRfVUludCAgICBuOworICAgIEZUX1VTaG9ydCAgZ2x5cGhfc2lkOworCisKKyAgICAvKiBDSUQta2V5ZWQgZm9udHMgZG9uJ3QgaGF2ZSBnbHlwaCBuYW1lcyAqLworICAgIGlmICggIWNmZi0+Y2hhcnNldC5zaWRzICkKKyAgICAgIHJldHVybiAtMTsKKworICAgIC8qIGNoZWNrIHJhbmdlIG9mIHN0YW5kYXJkIGNoYXIgY29kZSAqLworICAgIGlmICggY2hhcmNvZGUgPCAwIHx8IGNoYXJjb2RlID4gMjU1ICkKKyAgICAgIHJldHVybiAtMTsKKworICAgIC8qIEdldCBjb2RlIHRvIFNJRCBtYXBwaW5nIGZyb20gYGNmZl9zdGFuZGFyZF9lbmNvZGluZycuICovCisgICAgZ2x5cGhfc2lkID0gY2ZmX2dldF9zdGFuZGFyZF9lbmNvZGluZyggKEZUX1VJbnQpY2hhcmNvZGUgKTsKKworICAgIGZvciAoIG4gPSAwOyBuIDwgY2ZmLT5udW1fZ2x5cGhzOyBuKysgKQorICAgIHsKKyAgICAgIGlmICggY2ZmLT5jaGFyc2V0LnNpZHNbbl0gPT0gZ2x5cGhfc2lkICkKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorCisgICAgcmV0dXJuIC0xOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2ZmX2dldF9nbHlwaF9kYXRhKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiogIHBvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICBsZW5ndGggKQorICB7CisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorICAgIC8qIEZvciBpbmNyZW1lbnRhbCBmb250cyBnZXQgdGhlIGNoYXJhY3RlciBkYXRhIHVzaW5nIHRoZSAqLworICAgIC8qIGNhbGxiYWNrIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlICkKKyAgICB7CisgICAgICBGVF9EYXRhICAgZGF0YTsKKyAgICAgIEZUX0Vycm9yICBlcnJvciA9CisgICAgICAgICAgICAgICAgICBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UtPmZ1bmNzLT5nZXRfZ2x5cGhfZGF0YSgKKyAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LCAmZGF0YSApOworCisKKyAgICAgICpwb2ludGVyID0gKEZUX0J5dGUqKWRhdGEucG9pbnRlcjsKKyAgICAgICpsZW5ndGggPSBkYXRhLmxlbmd0aDsKKworICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCAqLworCisgICAgeworICAgICAgQ0ZGX0ZvbnQgIGNmZiAgPSAoQ0ZGX0ZvbnQpKGZhY2UtPmV4dHJhLmRhdGEpOworCisKKyAgICAgIHJldHVybiBjZmZfaW5kZXhfYWNjZXNzX2VsZW1lbnQoICZjZmYtPmNoYXJzdHJpbmdzX2luZGV4LCBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIsIGxlbmd0aCApOworICAgIH0KKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2ZmX2ZyZWVfZ2x5cGhfZGF0YSggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiogIHBvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgbGVuZ3RoICkKKyAgeworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisgICAgRlRfVU5VU0VEKCBsZW5ndGggKTsKKyNlbmRpZgorCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorICAgIC8qIEZvciBpbmNyZW1lbnRhbCBmb250cyBnZXQgdGhlIGNoYXJhY3RlciBkYXRhIHVzaW5nIHRoZSAqLworICAgIC8qIGNhbGxiYWNrIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlICkKKyAgICB7CisgICAgICBGVF9EYXRhIGRhdGE7CisKKworICAgICAgZGF0YS5wb2ludGVyID0gKnBvaW50ZXI7CisgICAgICBkYXRhLmxlbmd0aCAgPSBsZW5ndGg7CisKKyAgICAgIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZS0+ZnVuY3MtPmZyZWVfZ2x5cGhfZGF0YSgKKyAgICAgICAgZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5vYmplY3QsICZkYXRhICk7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMICovCisKKyAgICB7CisgICAgICBDRkZfRm9udCAgY2ZmID0gKENGRl9Gb250KShmYWNlLT5leHRyYS5kYXRhKTsKKworCisgICAgICBjZmZfaW5kZXhfZm9yZ2V0X2VsZW1lbnQoICZjZmYtPmNoYXJzdHJpbmdzX2luZGV4LCBwb2ludGVyICk7CisgICAgfQorICB9CisKKworI2lmZGVmIENGRl9DT05GSUdfT1BUSU9OX09MRF9FTkdJTkUKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2ZmX29wZXJhdG9yX3NlYWMoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgYXNiLAorICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgICBhZHgsCisgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgIGFkeSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgYmNoYXIsCisgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgIGFjaGFyICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgZXJyb3I7CisgICAgQ0ZGX0J1aWxkZXIqICBidWlsZGVyID0gJmRlY29kZXItPmJ1aWxkZXI7CisgICAgRlRfSW50ICAgICAgICBiY2hhcl9pbmRleCwgYWNoYXJfaW5kZXg7CisgICAgVFRfRmFjZSAgICAgICBmYWNlID0gZGVjb2Rlci0+YnVpbGRlci5mYWNlOworICAgIEZUX1ZlY3RvciAgICAgbGVmdF9iZWFyaW5nLCBhZHZhbmNlOworICAgIEZUX0J5dGUqICAgICAgY2hhcnN0cmluZzsKKyAgICBGVF9VTG9uZyAgICAgIGNoYXJzdHJpbmdfbGVuOworICAgIEZUX1BvcyAgICAgICAgZ2x5cGhfd2lkdGg7CisKKworICAgIGlmICggZGVjb2Rlci0+c2VhYyApCisgICAgeworICAgICAgRlRfRVJST1IoKCAiY2ZmX29wZXJhdG9yX3NlYWM6IGludmFsaWQgbmVzdGVkIHNlYWNcbiIgKSk7CisgICAgICByZXR1cm4gRlRfVEhST1coIFN5bnRheF9FcnJvciApOworICAgIH0KKworICAgIGFkeCArPSBkZWNvZGVyLT5idWlsZGVyLmxlZnRfYmVhcmluZy54OworICAgIGFkeSArPSBkZWNvZGVyLT5idWlsZGVyLmxlZnRfYmVhcmluZy55OworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorICAgIC8qIEluY3JlbWVudGFsIGZvbnRzIGRvbid0IG5lY2Vzc2FyaWx5IGhhdmUgdmFsaWQgY2hhcnNldHMuICAgICAgICAqLworICAgIC8qIFRoZXkgdXNlIHRoZSBjaGFyYWN0ZXIgY29kZSwgbm90IHRoZSBnbHlwaCBpbmRleCwgaW4gdGhpcyBjYXNlLiAqLworICAgIGlmICggZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlICkKKyAgICB7CisgICAgICBiY2hhcl9pbmRleCA9IGJjaGFyOworICAgICAgYWNoYXJfaW5kZXggPSBhY2hhcjsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KKyAgICB7CisgICAgICBDRkZfRm9udCBjZmYgPSAoQ0ZGX0ZvbnQpKGZhY2UtPmV4dHJhLmRhdGEpOworCisKKyAgICAgIGJjaGFyX2luZGV4ID0gY2ZmX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSggY2ZmLCBiY2hhciApOworICAgICAgYWNoYXJfaW5kZXggPSBjZmZfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlKCBjZmYsIGFjaGFyICk7CisgICAgfQorCisgICAgaWYgKCBiY2hhcl9pbmRleCA8IDAgfHwgYWNoYXJfaW5kZXggPCAwICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJjZmZfb3BlcmF0b3Jfc2VhYzoiCisgICAgICAgICAgICAgICAgICIgaW52YWxpZCBzZWFjIGNoYXJhY3RlciBjb2RlIGFyZ3VtZW50c1xuIiApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggU3ludGF4X0Vycm9yICk7CisgICAgfQorCisgICAgLyogSWYgd2UgYXJlIHRyeWluZyB0byBsb2FkIGEgY29tcG9zaXRlIGdseXBoLCBkbyBub3QgbG9hZCB0aGUgKi8KKyAgICAvKiBhY2NlbnQgY2hhcmFjdGVyIGFuZCByZXR1cm4gdGhlIGFycmF5IG9mIHN1YmdseXBocy4gICAgICAgICAqLworICAgIGlmICggYnVpbGRlci0+bm9fcmVjdXJzZSApCisgICAgeworICAgICAgRlRfR2x5cGhTbG90ICAgIGdseXBoICA9IChGVF9HbHlwaFNsb3QpYnVpbGRlci0+Z2x5cGg7CisgICAgICBGVF9HbHlwaExvYWRlciAgbG9hZGVyID0gZ2x5cGgtPmludGVybmFsLT5sb2FkZXI7CisgICAgICBGVF9TdWJHbHlwaCAgICAgc3ViZzsKKworCisgICAgICAvKiByZWFsbG9jYXRlIHN1YmdseXBoIGFycmF5IGlmIG5lY2Vzc2FyeSAqLworICAgICAgZXJyb3IgPSBGVF9HbHlwaExvYWRlcl9DaGVja1N1YkdseXBocyggbG9hZGVyLCAyICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBzdWJnID0gbG9hZGVyLT5jdXJyZW50LnN1YmdseXBoczsKKworICAgICAgLyogc3ViZ2x5cGggMCA9IGJhc2UgY2hhcmFjdGVyICovCisgICAgICBzdWJnLT5pbmRleCA9IGJjaGFyX2luZGV4OworICAgICAgc3ViZy0+ZmxhZ3MgPSBGVF9TVUJHTFlQSF9GTEFHX0FSR1NfQVJFX1hZX1ZBTFVFUyB8CisgICAgICAgICAgICAgICAgICAgIEZUX1NVQkdMWVBIX0ZMQUdfVVNFX01ZX01FVFJJQ1M7CisgICAgICBzdWJnLT5hcmcxICA9IDA7CisgICAgICBzdWJnLT5hcmcyICA9IDA7CisgICAgICBzdWJnKys7CisKKyAgICAgIC8qIHN1YmdseXBoIDEgPSBhY2NlbnQgY2hhcmFjdGVyICovCisgICAgICBzdWJnLT5pbmRleCA9IGFjaGFyX2luZGV4OworICAgICAgc3ViZy0+ZmxhZ3MgPSBGVF9TVUJHTFlQSF9GTEFHX0FSR1NfQVJFX1hZX1ZBTFVFUzsKKyAgICAgIHN1YmctPmFyZzEgID0gKEZUX0ludCkoIGFkeCA+PiAxNiApOworICAgICAgc3ViZy0+YXJnMiAgPSAoRlRfSW50KSggYWR5ID4+IDE2ICk7CisKKyAgICAgIC8qIHNldCB1cCByZW1haW5pbmcgZ2x5cGggZmllbGRzICovCisgICAgICBnbHlwaC0+bnVtX3N1YmdseXBocyA9IDI7CisgICAgICBnbHlwaC0+c3ViZ2x5cGhzICAgICA9IGxvYWRlci0+YmFzZS5zdWJnbHlwaHM7CisgICAgICBnbHlwaC0+Zm9ybWF0ICAgICAgICA9IEZUX0dMWVBIX0ZPUk1BVF9DT01QT1NJVEU7CisKKyAgICAgIGxvYWRlci0+Y3VycmVudC5udW1fc3ViZ2x5cGhzID0gMjsKKyAgICB9CisKKyAgICBGVF9HbHlwaExvYWRlcl9QcmVwYXJlKCBidWlsZGVyLT5sb2FkZXIgKTsKKworICAgIC8qIEZpcnN0IGxvYWQgYGJjaGFyJyBpbiBidWlsZGVyICovCisgICAgZXJyb3IgPSBjZmZfZ2V0X2dseXBoX2RhdGEoIGZhY2UsIGJjaGFyX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hhcnN0cmluZywgJmNoYXJzdHJpbmdfbGVuICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgIHsKKyAgICAgIC8qIHRoZSBzZWFjIG9wZXJhdG9yIG11c3Qgbm90IGJlIG5lc3RlZCAqLworICAgICAgZGVjb2Rlci0+c2VhYyA9IFRSVUU7CisgICAgICBlcnJvciA9IGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKCBkZWNvZGVyLCBjaGFyc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnN0cmluZ19sZW4gKTsKKyAgICAgIGRlY29kZXItPnNlYWMgPSBGQUxTRTsKKworICAgICAgY2ZmX2ZyZWVfZ2x5cGhfZGF0YSggZmFjZSwgJmNoYXJzdHJpbmcsIGNoYXJzdHJpbmdfbGVuICk7CisKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLyogU2F2ZSB0aGUgbGVmdCBiZWFyaW5nLCBhZHZhbmNlIGFuZCBnbHlwaCB3aWR0aCBvZiB0aGUgYmFzZSAqLworICAgIC8qIGNoYXJhY3RlciBhcyB0aGV5IHdpbGwgYmUgZXJhc2VkIGJ5IHRoZSBuZXh0IGxvYWQuICAgICAgICAgKi8KKworICAgIGxlZnRfYmVhcmluZyA9IGJ1aWxkZXItPmxlZnRfYmVhcmluZzsKKyAgICBhZHZhbmNlICAgICAgPSBidWlsZGVyLT5hZHZhbmNlOworICAgIGdseXBoX3dpZHRoICA9IGRlY29kZXItPmdseXBoX3dpZHRoOworCisgICAgYnVpbGRlci0+bGVmdF9iZWFyaW5nLnggPSAwOworICAgIGJ1aWxkZXItPmxlZnRfYmVhcmluZy55ID0gMDsKKworICAgIGJ1aWxkZXItPnBvc194ID0gYWR4IC0gYXNiOworICAgIGJ1aWxkZXItPnBvc195ID0gYWR5OworCisgICAgLyogTm93IGxvYWQgYGFjaGFyJyBvbiB0b3Agb2YgdGhlIGJhc2Ugb3V0bGluZS4gKi8KKyAgICBlcnJvciA9IGNmZl9nZXRfZ2x5cGhfZGF0YSggZmFjZSwgYWNoYXJfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGFyc3RyaW5nLCAmY2hhcnN0cmluZ19sZW4gKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgLyogdGhlIHNlYWMgb3BlcmF0b3IgbXVzdCBub3QgYmUgbmVzdGVkICovCisgICAgICBkZWNvZGVyLT5zZWFjID0gVFJVRTsKKyAgICAgIGVycm9yID0gY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MoIGRlY29kZXIsIGNoYXJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc3RyaW5nX2xlbiApOworICAgICAgZGVjb2Rlci0+c2VhYyA9IEZBTFNFOworCisgICAgICBjZmZfZnJlZV9nbHlwaF9kYXRhKCBmYWNlLCAmY2hhcnN0cmluZywgY2hhcnN0cmluZ19sZW4gKTsKKworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICAvKiBSZXN0b3JlIHRoZSBsZWZ0IHNpZGUgYmVhcmluZywgYWR2YW5jZSBhbmQgZ2x5cGggd2lkdGggKi8KKyAgICAvKiBvZiB0aGUgYmFzZSBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBidWlsZGVyLT5sZWZ0X2JlYXJpbmcgPSBsZWZ0X2JlYXJpbmc7CisgICAgYnVpbGRlci0+YWR2YW5jZSAgICAgID0gYWR2YW5jZTsKKyAgICBkZWNvZGVyLT5nbHlwaF93aWR0aCAgPSBnbHlwaF93aWR0aDsKKworICAgIGJ1aWxkZXItPnBvc194ID0gMDsKKyAgICBidWlsZGVyLT5wb3NfeSA9IDA7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBhcnNlcyBhIGdpdmVuIFR5cGUgMiBjaGFyc3RyaW5ncyBwcm9ncmFtLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlY29kZXIgICAgICAgICA6OiBUaGUgY3VycmVudCBUeXBlIDEgZGVjb2Rlci4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNoYXJzdHJpbmdfYmFzZSA6OiBUaGUgYmFzZSBvZiB0aGUgY2hhcnN0cmluZyBzdHJlYW0uICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2hhcnN0cmluZ19sZW4gIDo6IFRoZSBsZW5ndGggaW4gYnl0ZXMgb2YgdGhlIGNoYXJzdHJpbmcgc3RyZWFtLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MoIENGRl9EZWNvZGVyKiAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICAgY2hhcnN0cmluZ19iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICBjaGFyc3RyaW5nX2xlbiApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgICAgZXJyb3I7CisgICAgQ0ZGX0RlY29kZXJfWm9uZSogIHpvbmU7CisgICAgRlRfQnl0ZSogICAgICAgICAgIGlwOworICAgIEZUX0J5dGUqICAgICAgICAgICBsaW1pdDsKKyAgICBDRkZfQnVpbGRlciogICAgICAgYnVpbGRlciA9ICZkZWNvZGVyLT5idWlsZGVyOworICAgIEZUX1BvcyAgICAgICAgICAgICB4LCB5OworICAgIEZUX0ZpeGVkICAgICAgICAgICBzZWVkOworICAgIEZUX0ZpeGVkKiAgICAgICAgICBzdGFjazsKKyAgICBGVF9JbnQgICAgICAgICAgICAgY2hhcnN0cmluZ190eXBlID0KKyAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLT5jZmYtPnRvcF9mb250LmZvbnRfZGljdC5jaGFyc3RyaW5nX3R5cGU7CisKKyAgICBUMl9IaW50c19GdW5jcyAgICAgaGludGVyOworCisKKyAgICAvKiBzZXQgZGVmYXVsdCB3aWR0aCAqLworICAgIGRlY29kZXItPm51bV9oaW50cyAgPSAwOworICAgIGRlY29kZXItPnJlYWRfd2lkdGggPSAxOworCisgICAgLyogY29tcHV0ZSByYW5kb20gc2VlZCBmcm9tIHN0YWNrIGFkZHJlc3Mgb2YgcGFyYW1ldGVyICovCisgICAgc2VlZCA9IChGVF9GaXhlZCkoICggKEZUX1B0ckRpc3QpKGNoYXIqKSZzZWVkICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1B0ckRpc3QpKGNoYXIqKSZkZWNvZGVyICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX1B0ckRpc3QpKGNoYXIqKSZjaGFyc3RyaW5nX2Jhc2UgKSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxPTkdfTUFYICkgOworICAgIHNlZWQgPSAoIHNlZWQgXiAoIHNlZWQgPj4gMTAgKSBeICggc2VlZCA+PiAyMCApICkgJiAweEZGRkZMOworICAgIGlmICggc2VlZCA9PSAwICkKKyAgICAgIHNlZWQgPSAweDczODQ7CisKKyAgICAvKiBpbml0aWFsaXplIHRoZSBkZWNvZGVyICovCisgICAgZGVjb2Rlci0+dG9wICA9IGRlY29kZXItPnN0YWNrOworICAgIGRlY29kZXItPnpvbmUgPSBkZWNvZGVyLT56b25lczsKKyAgICB6b25lICAgICAgICAgID0gZGVjb2Rlci0+em9uZXM7CisgICAgc3RhY2sgICAgICAgICA9IGRlY29kZXItPnRvcDsKKworICAgIGhpbnRlciA9IChUMl9IaW50c19GdW5jcylidWlsZGVyLT5oaW50c19mdW5jczsKKworICAgIGJ1aWxkZXItPnBhdGhfYmVndW4gPSAwOworCisgICAgem9uZS0+YmFzZSAgICAgICAgICAgPSBjaGFyc3RyaW5nX2Jhc2U7CisgICAgbGltaXQgPSB6b25lLT5saW1pdCAgPSBjaGFyc3RyaW5nX2Jhc2UgKyBjaGFyc3RyaW5nX2xlbjsKKyAgICBpcCAgICA9IHpvbmUtPmN1cnNvciA9IHpvbmUtPmJhc2U7CisKKyAgICBlcnJvciA9IEZUX0Vycl9PazsKKworICAgIHggPSBidWlsZGVyLT5wb3NfeDsKKyAgICB5ID0gYnVpbGRlci0+cG9zX3k7CisKKyAgICAvKiBiZWdpbiBoaW50cyByZWNvcmRpbmcgc2Vzc2lvbiwgaWYgYW55ICovCisgICAgaWYgKCBoaW50ZXIgKQorICAgICAgaGludGVyLT5vcGVuKCBoaW50ZXItPmhpbnRzICk7CisKKyAgICAvKiBub3cgZXhlY3V0ZSBsb29wICovCisgICAgd2hpbGUgKCBpcCA8IGxpbWl0ICkKKyAgICB7CisgICAgICBDRkZfT3BlcmF0b3IgIG9wOworICAgICAgRlRfQnl0ZSAgICAgICB2OworCisKKyAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qIERlY29kZSBvcGVyYXRvciBvciBvcGVyYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIHYgPSAqaXArKzsKKyAgICAgIGlmICggdiA+PSAzMiB8fCB2ID09IDI4ICkKKyAgICAgIHsKKyAgICAgICAgRlRfSW50ICAgIHNoaWZ0ID0gMTY7CisgICAgICAgIEZUX0ludDMyICB2YWw7CisKKworICAgICAgICAvKiB0aGlzIGlzIGFuIG9wZXJhbmQsIHB1c2ggaXQgb24gdGhlIHN0YWNrICovCisKKyAgICAgICAgLyogaWYgd2UgdXNlIHNoaWZ0cywgYWxsIGNvbXB1dGF0aW9ucyBhcmUgZG9uZSB3aXRoIHVuc2lnbmVkICovCisgICAgICAgIC8qIHZhbHVlczsgdGhlIGNvbnZlcnNpb24gdG8gYSBzaWduZWQgdmFsdWUgaXMgdGhlIGxhc3Qgc3RlcCAqLworICAgICAgICBpZiAoIHYgPT0gMjggKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBpcCArIDEgPj0gbGltaXQgKQorICAgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgICAgdmFsID0gKEZUX1Nob3J0KSggKCAoRlRfVVNob3J0KWlwWzBdIDw8IDggKSB8IGlwWzFdICk7CisgICAgICAgICAgaXAgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggdiA8IDI0NyApCisgICAgICAgICAgdmFsID0gKEZUX0ludDMyKXYgLSAxMzk7CisgICAgICAgIGVsc2UgaWYgKCB2IDwgMjUxICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggaXAgPj0gbGltaXQgKQorICAgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgICAgdmFsID0gKCAoRlRfSW50MzIpdiAtIDI0NyApICogMjU2ICsgKmlwKysgKyAxMDg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIHYgPCAyNTUgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBpcCA+PSBsaW1pdCApCisgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICB2YWwgPSAtKCAoRlRfSW50MzIpdiAtIDI1MSApICogMjU2IC0gKmlwKysgLSAxMDg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBpcCArIDMgPj0gbGltaXQgKQorICAgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgICAgdmFsID0gKEZUX0ludDMyKSggKCAoRlRfVUludDMyKWlwWzBdIDw8IDI0ICkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKEZUX1VJbnQzMilpcFsxXSA8PCAxNiApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChGVF9VSW50MzIpaXBbMl0gPDwgIDggKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUludDMyKWlwWzNdICAgICAgICAgKTsKKyAgICAgICAgICBpcCAgICArPSA0OworICAgICAgICAgIGlmICggY2hhcnN0cmluZ190eXBlID09IDIgKQorICAgICAgICAgICAgc2hpZnQgPSAwOworICAgICAgICB9CisgICAgICAgIGlmICggZGVjb2Rlci0+dG9wIC0gc3RhY2sgPj0gQ0ZGX01BWF9PUEVSQU5EUyApCisgICAgICAgICAgZ290byBTdGFja19PdmVyZmxvdzsKKworICAgICAgICB2YWwgICAgICAgICAgICAgPSAoRlRfSW50MzIpKCAoRlRfVUludDMyKXZhbCA8PCBzaGlmdCApOworICAgICAgICAqZGVjb2Rlci0+dG9wKysgPSB2YWw7CisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorICAgICAgICBpZiAoICEoIHZhbCAmIDB4RkZGRkwgKSApCisgICAgICAgICAgRlRfVFJBQ0U0KCggIiAlaGQiLCAoRlRfU2hvcnQpKCAoRlRfVUludDMyKXZhbCA+PiAxNiApICkpOworICAgICAgICBlbHNlCisgICAgICAgICAgRlRfVFJBQ0U0KCggIiAlLjJmIiwgdmFsIC8gNjU1MzYuMCApKTsKKyNlbmRpZgorCisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIFRoZSBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBub3JtYWxseSBhcmd1bWVudHMgYXJlIHRvIGJlIHRha2VuICovCisgICAgICAgIC8qIGZyb20gdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2suICBIb3dldmVyLCB0aGlzIHNlZW1zIG5vdCB0byBiZSAgICovCisgICAgICAgIC8qIGNvcnJlY3QsIGF0IGxlYXN0IGZvciBBY3JvcmVhZCA3LjAuOCBvbiBHTlUvTGludXg6IEl0IHBvcHMgdGhlICovCisgICAgICAgIC8qIGFyZ3VtZW50cyBzaW1pbGFyIHRvIGEgUFMgaW50ZXJwcmV0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgRlRfRml4ZWQqICBhcmdzICAgICA9IGRlY29kZXItPnRvcDsKKyAgICAgICAgRlRfSW50ICAgICBudW1fYXJncyA9IChGVF9JbnQpKCBhcmdzIC0gZGVjb2Rlci0+c3RhY2sgKTsKKyAgICAgICAgRlRfSW50ICAgICByZXFfYXJnczsKKworCisgICAgICAgIC8qIGZpbmQgb3BlcmF0b3IgKi8KKyAgICAgICAgb3AgPSBjZmZfb3BfdW5rbm93bjsKKworICAgICAgICBzd2l0Y2ggKCB2ICkKKyAgICAgICAgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgb3AgPSBjZmZfb3BfaHN0ZW07CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICBvcCA9IGNmZl9vcF92c3RlbTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgIG9wID0gY2ZmX29wX3Ztb3ZldG87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNToKKyAgICAgICAgICBvcCA9IGNmZl9vcF9ybGluZXRvOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDY6CisgICAgICAgICAgb3AgPSBjZmZfb3BfaGxpbmV0bzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA3OgorICAgICAgICAgIG9wID0gY2ZmX29wX3ZsaW5ldG87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgODoKKyAgICAgICAgICBvcCA9IGNmZl9vcF9ycmN1cnZldG87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgOToKKyAgICAgICAgICBvcCA9IGNmZl9vcF9jbG9zZXBhdGg7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTA6CisgICAgICAgICAgb3AgPSBjZmZfb3BfY2FsbHN1YnI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTE6CisgICAgICAgICAgb3AgPSBjZmZfb3BfcmV0dXJuOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDEyOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggaXAgPj0gbGltaXQgKQorICAgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICAgIHYgPSAqaXArKzsKKworICAgICAgICAgICAgc3dpdGNoICggdiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX2RvdHNlY3Rpb247CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOiAvKiB0aGlzIGlzIGFjdHVhbGx5IHRoZSBUeXBlMSB2c3RlbTMgb3BlcmF0b3IgKi8KKyAgICAgICAgICAgICAgb3AgPSBjZmZfb3BfdnN0ZW07CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiAvKiB0aGlzIGlzIGFjdHVhbGx5IHRoZSBUeXBlMSBoc3RlbTMgb3BlcmF0b3IgKi8KKyAgICAgICAgICAgICAgb3AgPSBjZmZfb3BfaHN0ZW07CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9hbmQ7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9vcjsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX25vdDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX3NlYWM7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9zYnc7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9zdG9yZTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX2FiczsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEwOgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9hZGQ7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMToKKyAgICAgICAgICAgICAgb3AgPSBjZmZfb3Bfc3ViOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX2RpdjsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9sb2FkOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX25lZzsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE1OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9lcTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9jYWxsb3RoZXJzdWJyOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTc6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX3BvcDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9kcm9wOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjA6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX3B1dDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDIxOgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9nZXQ7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMjoKKyAgICAgICAgICAgICAgb3AgPSBjZmZfb3BfaWZlbHNlOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjM6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX3JhbmRvbTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI0OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9tdWw7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyNjoKKyAgICAgICAgICAgICAgb3AgPSBjZmZfb3Bfc3FydDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI3OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9kdXA7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyODoKKyAgICAgICAgICAgICAgb3AgPSBjZmZfb3BfZXhjaDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI5OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9pbmRleDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDMwOgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9yb2xsOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzM6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX3NldGN1cnJlbnRwb2ludDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM0OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9oZmxleDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM1OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9mbGV4OworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzY6CisgICAgICAgICAgICAgIG9wID0gY2ZmX29wX2hmbGV4MTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM3OgorICAgICAgICAgICAgICBvcCA9IGNmZl9vcF9mbGV4MTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKmRlZmF1bHQ6ICovICAvKiBYWVEgMjAwNy05LTY6IHdlIGNhbid0IGp1c3QgcXVpdCBpZiB3ZSBzZWUgc29tZSByZXNlcnZlZCBvcCAqLworICAgICAgICAgICAgICAvKiBkZWNyZW1lbnQgaXAgZm9yIHN5bnRheCBlcnJvciBtZXNzYWdlICovCisgICAgICAgICAgICAgLyogaXAtLTsqLworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMzoKKyAgICAgICAgICBvcCA9IGNmZl9vcF9oc2J3OworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE0OgorICAgICAgICAgIG9wID0gY2ZmX29wX2VuZGNoYXI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTY6CisgICAgICAgICAgb3AgPSBjZmZfb3BfYmxlbmQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTg6CisgICAgICAgICAgb3AgPSBjZmZfb3BfaHN0ZW1obTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOToKKyAgICAgICAgICBvcCA9IGNmZl9vcF9oaW50bWFzazsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyMDoKKyAgICAgICAgICBvcCA9IGNmZl9vcF9jbnRybWFzazsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyMToKKyAgICAgICAgICBvcCA9IGNmZl9vcF9ybW92ZXRvOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDIyOgorICAgICAgICAgIG9wID0gY2ZmX29wX2htb3ZldG87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjM6CisgICAgICAgICAgb3AgPSBjZmZfb3BfdnN0ZW1obTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyNDoKKyAgICAgICAgICBvcCA9IGNmZl9vcF9yY3VydmVsaW5lOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI1OgorICAgICAgICAgIG9wID0gY2ZmX29wX3JsaW5lY3VydmU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjY6CisgICAgICAgICAgb3AgPSBjZmZfb3BfdnZjdXJ2ZXRvOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI3OgorICAgICAgICAgIG9wID0gY2ZmX29wX2hoY3VydmV0bzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOToKKyAgICAgICAgICBvcCA9IGNmZl9vcF9jYWxsZ3N1YnI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzA6CisgICAgICAgICAgb3AgPSBjZmZfb3BfdmhjdXJ2ZXRvOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDMxOgorICAgICAgICAgIG9wID0gY2ZmX29wX2h2Y3VydmV0bzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHVua25vd24gb3AgKCVkKVxuIiwgdiApKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggb3AgPT0gY2ZmX29wX3Vua25vd24gKQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qIGNoZWNrIGFyZ3VtZW50cyAqLworICAgICAgICByZXFfYXJncyA9IGNmZl9hcmd1bWVudF9jb3VudHNbb3BdOworICAgICAgICBpZiAoIHJlcV9hcmdzICYgQ0ZGX0NPVU5UX0NIRUNLX1dJRFRIICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggbnVtX2FyZ3MgPiAwICYmIGRlY29kZXItPnJlYWRfd2lkdGggKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIElmIGBub21pbmFsX3dpZHRoJyBpcyBub24temVybywgdGhlIG51bWJlciBpcyByZWFsbHkgYSAgICAgICovCisgICAgICAgICAgICAvKiBkaWZmZXJlbmNlIGFnYWluc3QgYG5vbWluYWxfd2lkdGgnLiAgRWxzZSwgdGhlIG51bWJlciBoZXJlICAqLworICAgICAgICAgICAgLyogaXMgdHJ1bHkgYSB3aWR0aCwgbm90IGEgZGlmZmVyZW5jZSBhZ2FpbnN0IGBub21pbmFsX3dpZHRoJy4gKi8KKyAgICAgICAgICAgIC8qIElmIHRoZSBmb250IGRvZXMgbm90IHNldCBgbm9taW5hbF93aWR0aCcsIHRoZW4gICAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiBgbm9taW5hbF93aWR0aCcgZGVmYXVsdHMgdG8gemVybywgYW5kIHNvIHdlIGNhbiBzZXQgICAgICAgICAqLworICAgICAgICAgICAgLyogYGdseXBoX3dpZHRoJyB0byBgbm9taW5hbF93aWR0aCcgcGx1cyBudW1iZXIgb24gdGhlIHN0YWNrICAgKi8KKyAgICAgICAgICAgIC8qIC0tIGZvciBlaXRoZXIgY2FzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICAgIEZUX0ludCAgc2V0X3dpZHRoX29rOworCisKKyAgICAgICAgICAgIHN3aXRjaCAoIG9wICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgY2ZmX29wX2htb3ZldG86CisgICAgICAgICAgICBjYXNlIGNmZl9vcF92bW92ZXRvOgorICAgICAgICAgICAgICBzZXRfd2lkdGhfb2sgPSBudW1fYXJncyAmIDI7CisgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIGNmZl9vcF9oc3RlbToKKyAgICAgICAgICAgIGNhc2UgY2ZmX29wX3ZzdGVtOgorICAgICAgICAgICAgY2FzZSBjZmZfb3BfaHN0ZW1obToKKyAgICAgICAgICAgIGNhc2UgY2ZmX29wX3ZzdGVtaG06CisgICAgICAgICAgICBjYXNlIGNmZl9vcF9ybW92ZXRvOgorICAgICAgICAgICAgY2FzZSBjZmZfb3BfaGludG1hc2s6CisgICAgICAgICAgICBjYXNlIGNmZl9vcF9jbnRybWFzazoKKyAgICAgICAgICAgICAgc2V0X3dpZHRoX29rID0gbnVtX2FyZ3MgJiAxOworICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBjZmZfb3BfZW5kY2hhcjoKKyAgICAgICAgICAgICAgLyogSWYgdGhlcmUgaXMgYSB3aWR0aCBzcGVjaWZpZWQgZm9yIGVuZGNoYXIsIHdlIGVpdGhlciBoYXZlICovCisgICAgICAgICAgICAgIC8qIDEgYXJndW1lbnQgb3IgNSBhcmd1bWVudHMuICBXZSBsaWtlIHRvIGFyZ3VlLiAgICAgICAgICAgICAqLworICAgICAgICAgICAgICBzZXRfd2lkdGhfb2sgPSAoIG51bV9hcmdzID09IDUgKSB8fCAoIG51bV9hcmdzID09IDEgKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgIHNldF93aWR0aF9vayA9IDA7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIHNldF93aWR0aF9vayApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGRlY29kZXItPmdseXBoX3dpZHRoID0gZGVjb2Rlci0+bm9taW5hbF93aWR0aCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0YWNrWzBdID4+IDE2ICk7CisKKyAgICAgICAgICAgICAgaWYgKCBkZWNvZGVyLT53aWR0aF9vbmx5ICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIHdlIG9ubHkgd2FudCB0aGUgYWR2YW5jZSB3aWR0aDsgc3RvcCBoZXJlICovCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAvKiBDb25zdW1lZCBhbiBhcmd1bWVudC4gKi8KKyAgICAgICAgICAgICAgbnVtX2FyZ3MtLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICBkZWNvZGVyLT5yZWFkX3dpZHRoID0gMDsKKyAgICAgICAgICByZXFfYXJncyAgICAgICAgICAgID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIHJlcV9hcmdzICY9IDB4MDAwRjsKKyAgICAgICAgaWYgKCBudW1fYXJncyA8IHJlcV9hcmdzICkKKyAgICAgICAgICBnb3RvIFN0YWNrX1VuZGVyZmxvdzsKKyAgICAgICAgYXJncyAgICAgLT0gcmVxX2FyZ3M7CisgICAgICAgIG51bV9hcmdzIC09IHJlcV9hcmdzOworCisJCS8qIFN1bmxpYW5nLkxpdSBzeW5jIDIyMSdzIHJldmlzb24uICovCisJCWlmIChhcmdzID4gZGVjb2Rlci0+c3RhY2sgKyBDRkZfTUFYX09QRVJBTkRTKQorCQkJZ290byBTdGFja19PdmVyZmxvdzsKKworICAgICAgICAvKiBBdCB0aGlzIHBvaW50LCBgYXJncycgcG9pbnRzIHRvIHRoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgICovCisgICAgICAgIC8qIG9wZXJhbmQgaW4gY2FzZSBgcmVxX2FyZ3MnIGlzbid0IHplcm8uICBPdGhlcndpc2UsIHdlIGhhdmUgKi8KKyAgICAgICAgLyogdG8gYWRqdXN0IGBhcmdzJyBtYW51YWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgIC8qIE5vdGUgdGhhdCB3ZSBvbmx5IHBvcCBhcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgd2hpY2ggd2UgICAgKi8KKyAgICAgICAgLyogcmVhbGx5IG5lZWQgYW5kIGNhbiBkaWdlc3Qgc28gdGhhdCB3ZSBjYW4gY29udGludWUgaW4gY2FzZSAqLworICAgICAgICAvKiBvZiBzdXBlcmZsdW91cyBzdGFjayBlbGVtZW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgc3dpdGNoICggb3AgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgY2ZmX29wX2hzdGVtOgorICAgICAgICBjYXNlIGNmZl9vcF92c3RlbToKKyAgICAgICAgY2FzZSBjZmZfb3BfaHN0ZW1obToKKyAgICAgICAgY2FzZSBjZmZfb3BfdnN0ZW1obToKKyAgICAgICAgICAvKiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBpcyBhbHdheXMgZXZlbiBoZXJlICovCisgICAgICAgICAgRlRfVFJBQ0U0KCgKKyAgICAgICAgICAgICAgb3AgPT0gY2ZmX29wX2hzdGVtICAgPyAiIGhzdGVtXG4iICAgOgorICAgICAgICAgICAgKCBvcCA9PSBjZmZfb3BfdnN0ZW0gICA/ICIgdnN0ZW1cbiIgICA6CisgICAgICAgICAgICAoIG9wID09IGNmZl9vcF9oc3RlbWhtID8gIiBoc3RlbWhtXG4iIDogIiB2c3RlbWhtXG4iICkgKSApKTsKKworICAgICAgICAgIGlmICggaGludGVyICkKKyAgICAgICAgICAgIGhpbnRlci0+c3RlbXMoIGhpbnRlci0+aGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG9wID09IGNmZl9vcF9oc3RlbSB8fCBvcCA9PSBjZmZfb3BfaHN0ZW1obSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2FyZ3MgLyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyAtICggbnVtX2FyZ3MgJiB+MSApICk7CisKKyAgICAgICAgICBkZWNvZGVyLT5udW1faGludHMgKz0gbnVtX2FyZ3MgLyAyOworICAgICAgICAgIGFyZ3MgPSBzdGFjazsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNmZl9vcF9oaW50bWFzazoKKyAgICAgICAgY2FzZSBjZmZfb3BfY250cm1hc2s6CisgICAgICAgICAgRlRfVFJBQ0U0KCggb3AgPT0gY2ZmX29wX2hpbnRtYXNrID8gIiBoaW50bWFzayIgOiAiIGNudHJtYXNrIiApKTsKKworICAgICAgICAgIC8qIGltcGxlbWVudCB2c3RlbSB3aGVuIG5lZWRlZCAtLSAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogdGhlIHNwZWNpZmljYXRpb24gZG9lc24ndCBzYXkgaXQsIGJ1dCB0aGlzIGFsc28gd29ya3MgKi8KKyAgICAgICAgICAvKiB3aXRoIHRoZSAnY250cm1hc2snIG9wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgaWYgKCBudW1fYXJncyA+IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggaGludGVyICkKKyAgICAgICAgICAgICAgaGludGVyLT5zdGVtcyggaGludGVyLT5oaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2FyZ3MgLyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzIC0gKCBudW1fYXJncyAmIH4xICkgKTsKKworICAgICAgICAgICAgZGVjb2Rlci0+bnVtX2hpbnRzICs9IG51bV9hcmdzIC8gMjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvKiBJbiBhIHZhbGlkIGNoYXJzdHJpbmcgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgYnl0ZSAqLworICAgICAgICAgIC8qIGFmdGVyIGBoaW50bWFzaycgb3IgYGNudHJtYXNrJyAoZS5nLiwgZm9yIGEgYHJldHVybicgICovCisgICAgICAgICAgLyogaW5zdHJ1Y3Rpb24pLiAgQWRkaXRpb25hbGx5LCB0aGVyZSBtdXN0IGJlIHNwYWNlIGZvciAgKi8KKyAgICAgICAgICAvKiBgbnVtX2hpbnRzJyBiaXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgICAgaWYgKCAoIGlwICsgKCAoIGRlY29kZXItPm51bV9oaW50cyArIDcgKSA+PiAzICkgKSA+PSBsaW1pdCApCisgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKworICAgICAgICAgIGlmICggaGludGVyICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoIG9wID09IGNmZl9vcF9oaW50bWFzayApCisgICAgICAgICAgICAgIGhpbnRlci0+aGludG1hc2soIGhpbnRlci0+aGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXItPmN1cnJlbnQtPm5fcG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLT5udW1faGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwICk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGhpbnRlci0+Y291bnRlciggaGludGVyLT5oaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLT5udW1faGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAgKTsKKyAgICAgICAgICB9CisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VJbnQgbWFza2J5dGU7CisKKworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiAobWFza2J5dGVzOiIgKSk7CisKKyAgICAgICAgICAgIGZvciAoIG1hc2tieXRlID0gMDsKKyAgICAgICAgICAgICAgICAgIG1hc2tieXRlIDwgKEZUX1VJbnQpKCAoIGRlY29kZXItPm51bV9oaW50cyArIDcgKSA+PiAzICk7CisgICAgICAgICAgICAgICAgICBtYXNrYnl0ZSsrLCBpcCsrICkKKyAgICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiAweCUwMlgiLCAqaXAgKSk7CisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIpXG4iICkpOworICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgaXAgKz0gKCBkZWNvZGVyLT5udW1faGludHMgKyA3ICkgPj4gMzsKKyNlbmRpZgorICAgICAgICAgIGFyZ3MgPSBzdGFjazsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNmZl9vcF9ybW92ZXRvOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgcm1vdmV0b1xuIiApKTsKKworICAgICAgICAgIGNmZl9idWlsZGVyX2Nsb3NlX2NvbnRvdXIoIGJ1aWxkZXIgKTsKKyAgICAgICAgICBidWlsZGVyLT5wYXRoX2JlZ3VuID0gMDsKKyAgICAgICAgICB4ICAgKz0gYXJnc1stMl07CisgICAgICAgICAgeSAgICs9IGFyZ3NbLTFdOworICAgICAgICAgIGFyZ3MgPSBzdGFjazsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNmZl9vcF92bW92ZXRvOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgdm1vdmV0b1xuIiApKTsKKworICAgICAgICAgIGNmZl9idWlsZGVyX2Nsb3NlX2NvbnRvdXIoIGJ1aWxkZXIgKTsKKyAgICAgICAgICBidWlsZGVyLT5wYXRoX2JlZ3VuID0gMDsKKyAgICAgICAgICB5ICAgKz0gYXJnc1stMV07CisgICAgICAgICAgYXJncyA9IHN0YWNrOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX2htb3ZldG86CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBobW92ZXRvXG4iICkpOworCisgICAgICAgICAgY2ZmX2J1aWxkZXJfY2xvc2VfY29udG91ciggYnVpbGRlciApOworICAgICAgICAgIGJ1aWxkZXItPnBhdGhfYmVndW4gPSAwOworICAgICAgICAgIHggICArPSBhcmdzWy0xXTsKKyAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfcmxpbmV0bzoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHJsaW5ldG9cbiIgKSk7CisKKyAgICAgICAgICBpZiAoIGNmZl9idWlsZGVyX3N0YXJ0X3BvaW50KCBidWlsZGVyLCB4LCB5ICkgIHx8CisgICAgICAgICAgICAgICBjZmZfY2hlY2tfcG9pbnRzKCBidWlsZGVyLCBudW1fYXJncyAvIDIgKSApCisgICAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgICBpZiAoIG51bV9hcmdzIDwgMiApCisgICAgICAgICAgICBnb3RvIFN0YWNrX1VuZGVyZmxvdzsKKworICAgICAgICAgIGFyZ3MgLT0gbnVtX2FyZ3MgJiB+MTsKKyAgICAgICAgICB3aGlsZSAoIGFyZ3MgPCBkZWNvZGVyLT50b3AgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHggKz0gYXJnc1swXTsKKyAgICAgICAgICAgIHkgKz0gYXJnc1sxXTsKKyAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworICAgICAgICAgICAgYXJncyArPSAyOworICAgICAgICAgIH0KKyAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfaGxpbmV0bzoKKyAgICAgICAgY2FzZSBjZmZfb3BfdmxpbmV0bzoKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9JbnQgIHBoYXNlID0gKCBvcCA9PSBjZmZfb3BfaGxpbmV0byApOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoIG9wID09IGNmZl9vcF9obGluZXRvID8gIiBobGluZXRvXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIgdmxpbmV0b1xuIiApKTsKKworICAgICAgICAgICAgaWYgKCBudW1fYXJncyA8IDAgKQorICAgICAgICAgICAgICBnb3RvIFN0YWNrX1VuZGVyZmxvdzsKKworICAgICAgICAgICAgLyogdGhlcmUgZXhpc3Qgc3Vic2V0dGVkIGZvbnRzIChmb3VuZCBpbiBQREZzKSAqLworICAgICAgICAgICAgLyogd2hpY2ggY2FsbCBgaGxpbmV0bycgd2l0aG91dCBhcmd1bWVudHMgICAgICAqLworICAgICAgICAgICAgaWYgKCBudW1fYXJncyA9PSAwICkKKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmICggY2ZmX2J1aWxkZXJfc3RhcnRfcG9pbnQoIGJ1aWxkZXIsIHgsIHkgKSB8fAorICAgICAgICAgICAgICAgICBjZmZfY2hlY2tfcG9pbnRzKCBidWlsZGVyLCBudW1fYXJncyApICAgICkKKyAgICAgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgICB3aGlsZSAoIGFyZ3MgPCBkZWNvZGVyLT50b3AgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZiAoIHBoYXNlICkKKyAgICAgICAgICAgICAgICB4ICs9IGFyZ3NbMF07CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB5ICs9IGFyZ3NbMF07CisKKyAgICAgICAgICAgICAgaWYgKCBjZmZfYnVpbGRlcl9hZGRfcG9pbnQxKCBidWlsZGVyLCB4LCB5ICkgKQorICAgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgICAgICBhcmdzKys7CisgICAgICAgICAgICAgIHBoYXNlIF49IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX3JyY3VydmV0bzoKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9JbnQgIG5hcmdzOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgcnJjdXJ2ZXRvXG4iICkpOworCisgICAgICAgICAgICBpZiAoIG51bV9hcmdzIDwgNiApCisgICAgICAgICAgICAgIGdvdG8gU3RhY2tfVW5kZXJmbG93OworCisgICAgICAgICAgICBuYXJncyA9IG51bV9hcmdzIC0gbnVtX2FyZ3MgJSA2OworCisgICAgICAgICAgICBpZiAoIGNmZl9idWlsZGVyX3N0YXJ0X3BvaW50KCBidWlsZGVyLCB4LCB5ICkgfHwKKyAgICAgICAgICAgICAgICAgY2ZmX2NoZWNrX3BvaW50cyggYnVpbGRlciwgbmFyZ3MgLyAyICkgICApCisgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgICAgYXJncyAtPSBuYXJnczsKKyAgICAgICAgICAgIHdoaWxlICggYXJncyA8IGRlY29kZXItPnRvcCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHggKz0gYXJnc1swXTsKKyAgICAgICAgICAgICAgeSArPSBhcmdzWzFdOworICAgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKyAgICAgICAgICAgICAgeCArPSBhcmdzWzJdOworICAgICAgICAgICAgICB5ICs9IGFyZ3NbM107CisgICAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworICAgICAgICAgICAgICB4ICs9IGFyZ3NbNF07CisgICAgICAgICAgICAgIHkgKz0gYXJnc1s1XTsKKyAgICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAxICk7CisgICAgICAgICAgICAgIGFyZ3MgKz0gNjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFyZ3MgPSBzdGFjazsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfdnZjdXJ2ZXRvOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ludCAgbmFyZ3M7CisKKworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiB2dmN1cnZldG9cbiIgKSk7CisKKyAgICAgICAgICAgIGlmICggbnVtX2FyZ3MgPCA0ICkKKyAgICAgICAgICAgICAgZ290byBTdGFja19VbmRlcmZsb3c7CisKKyAgICAgICAgICAgIC8qIGlmIG51bV9hcmdzIGlzbid0IG9mIHRoZSBmb3JtIDRuIG9yIDRuKzEsICovCisgICAgICAgICAgICAvKiB3ZSBlbmZvcmNlIGl0IGJ5IGNsZWFyaW5nIHRoZSBzZWNvbmQgYml0ICAqLworCisgICAgICAgICAgICBuYXJncyA9IG51bV9hcmdzICYgfjI7CisKKyAgICAgICAgICAgIGlmICggY2ZmX2J1aWxkZXJfc3RhcnRfcG9pbnQoIGJ1aWxkZXIsIHgsIHkgKSApCisgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgICAgYXJncyAtPSBuYXJnczsKKworICAgICAgICAgICAgaWYgKCBuYXJncyAmIDEgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB4ICs9IGFyZ3NbMF07CisgICAgICAgICAgICAgIGFyZ3MrKzsKKyAgICAgICAgICAgICAgbmFyZ3MtLTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBjZmZfY2hlY2tfcG9pbnRzKCBidWlsZGVyLCAzICogKCBuYXJncyAvIDQgKSApICkKKyAgICAgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgICAgICB3aGlsZSAoIGFyZ3MgPCBkZWNvZGVyLT50b3AgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB5ICs9IGFyZ3NbMF07CisgICAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworICAgICAgICAgICAgICB4ICs9IGFyZ3NbMV07CisgICAgICAgICAgICAgIHkgKz0gYXJnc1syXTsKKyAgICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAwICk7CisgICAgICAgICAgICAgIHkgKz0gYXJnc1szXTsKKyAgICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAxICk7CisgICAgICAgICAgICAgIGFyZ3MgKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFyZ3MgPSBzdGFjazsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfaGhjdXJ2ZXRvOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ludCAgbmFyZ3M7CisKKworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBoaGN1cnZldG9cbiIgKSk7CisKKyAgICAgICAgICAgIGlmICggbnVtX2FyZ3MgPCA0ICkKKyAgICAgICAgICAgICAgZ290byBTdGFja19VbmRlcmZsb3c7CisKKyAgICAgICAgICAgIC8qIGlmIG51bV9hcmdzIGlzbid0IG9mIHRoZSBmb3JtIDRuIG9yIDRuKzEsICovCisgICAgICAgICAgICAvKiB3ZSBlbmZvcmNlIGl0IGJ5IGNsZWFyaW5nIHRoZSBzZWNvbmQgYml0ICAqLworCisgICAgICAgICAgICBuYXJncyA9IG51bV9hcmdzICYgfjI7CisKKyAgICAgICAgICAgIGlmICggY2ZmX2J1aWxkZXJfc3RhcnRfcG9pbnQoIGJ1aWxkZXIsIHgsIHkgKSApCisgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgICAgYXJncyAtPSBuYXJnczsKKyAgICAgICAgICAgIGlmICggbmFyZ3MgJiAxICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgeSArPSBhcmdzWzBdOworICAgICAgICAgICAgICBhcmdzKys7CisgICAgICAgICAgICAgIG5hcmdzLS07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggY2ZmX2NoZWNrX3BvaW50cyggYnVpbGRlciwgMyAqICggbmFyZ3MgLyA0ICkgKSApCisgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgICAgd2hpbGUgKCBhcmdzIDwgZGVjb2Rlci0+dG9wICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgeCArPSBhcmdzWzBdOworICAgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKyAgICAgICAgICAgICAgeCArPSBhcmdzWzFdOworICAgICAgICAgICAgICB5ICs9IGFyZ3NbMl07CisgICAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworICAgICAgICAgICAgICB4ICs9IGFyZ3NbM107CisgICAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworICAgICAgICAgICAgICBhcmdzICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX3ZoY3VydmV0bzoKKyAgICAgICAgY2FzZSBjZmZfb3BfaHZjdXJ2ZXRvOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ludCAgcGhhc2U7CisgICAgICAgICAgICBGVF9JbnQgIG5hcmdzOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoIG9wID09IGNmZl9vcF92aGN1cnZldG8gPyAiIHZoY3VydmV0b1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIgaHZjdXJ2ZXRvXG4iICkpOworCisgICAgICAgICAgICBpZiAoIGNmZl9idWlsZGVyX3N0YXJ0X3BvaW50KCBidWlsZGVyLCB4LCB5ICkgKQorICAgICAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgICAgIGlmICggbnVtX2FyZ3MgPCA0ICkKKyAgICAgICAgICAgICAgZ290byBTdGFja19VbmRlcmZsb3c7CisKKyAgICAgICAgICAgIC8qIGlmIG51bV9hcmdzIGlzbid0IG9mIHRoZSBmb3JtIDhuLCA4bisxLCA4bis0LCBvciA4bis1LCAqLworICAgICAgICAgICAgLyogd2UgZW5mb3JjZSBpdCBieSBjbGVhcmluZyB0aGUgc2Vjb25kIGJpdCAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICAgIG5hcmdzID0gbnVtX2FyZ3MgJiB+MjsKKworICAgICAgICAgICAgYXJncyAtPSBuYXJnczsKKyAgICAgICAgICAgIGlmICggY2ZmX2NoZWNrX3BvaW50cyggYnVpbGRlciwgKCBuYXJncyAvIDQgKSAqIDMgKSApCisgICAgICAgICAgICAgIGdvdG8gU3RhY2tfVW5kZXJmbG93OworCisgICAgICAgICAgICBwaGFzZSA9ICggb3AgPT0gY2ZmX29wX2h2Y3VydmV0byApOworCisgICAgICAgICAgICB3aGlsZSAoIG5hcmdzID49IDQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBuYXJncyAtPSA0OworICAgICAgICAgICAgICBpZiAoIHBoYXNlICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHggKz0gYXJnc1swXTsKKyAgICAgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKyAgICAgICAgICAgICAgICB4ICs9IGFyZ3NbMV07CisgICAgICAgICAgICAgICAgeSArPSBhcmdzWzJdOworICAgICAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworICAgICAgICAgICAgICAgIHkgKz0gYXJnc1szXTsKKyAgICAgICAgICAgICAgICBpZiAoIG5hcmdzID09IDEgKQorICAgICAgICAgICAgICAgICAgeCArPSBhcmdzWzRdOworICAgICAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHkgKz0gYXJnc1swXTsKKyAgICAgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKyAgICAgICAgICAgICAgICB4ICs9IGFyZ3NbMV07CisgICAgICAgICAgICAgICAgeSArPSBhcmdzWzJdOworICAgICAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworICAgICAgICAgICAgICAgIHggKz0gYXJnc1szXTsKKyAgICAgICAgICAgICAgICBpZiAoIG5hcmdzID09IDEgKQorICAgICAgICAgICAgICAgICAgeSArPSBhcmdzWzRdOworICAgICAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGFyZ3MgICs9IDQ7CisgICAgICAgICAgICAgIHBoYXNlIF49IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX3JsaW5lY3VydmU6CisgICAgICAgICAgeworICAgICAgICAgICAgRlRfSW50ICBudW1fbGluZXM7CisgICAgICAgICAgICBGVF9JbnQgIG5hcmdzOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgcmxpbmVjdXJ2ZVxuIiApKTsKKworICAgICAgICAgICAgaWYgKCBudW1fYXJncyA8IDggKQorICAgICAgICAgICAgICBnb3RvIFN0YWNrX1VuZGVyZmxvdzsKKworICAgICAgICAgICAgbmFyZ3MgICAgID0gbnVtX2FyZ3MgJiB+MTsKKyAgICAgICAgICAgIG51bV9saW5lcyA9ICggbmFyZ3MgLSA2ICkgLyAyOworCisgICAgICAgICAgICBpZiAoIGNmZl9idWlsZGVyX3N0YXJ0X3BvaW50KCBidWlsZGVyLCB4LCB5ICkgICB8fAorICAgICAgICAgICAgICAgICBjZmZfY2hlY2tfcG9pbnRzKCBidWlsZGVyLCBudW1fbGluZXMgKyAzICkgKQorICAgICAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgICAgIGFyZ3MgLT0gbmFyZ3M7CisKKyAgICAgICAgICAgIC8qIGZpcnN0LCBhZGQgdGhlIGxpbmUgc2VnbWVudHMgKi8KKyAgICAgICAgICAgIHdoaWxlICggbnVtX2xpbmVzID4gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHggKz0gYXJnc1swXTsKKyAgICAgICAgICAgICAgeSArPSBhcmdzWzFdOworICAgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDEgKTsKKyAgICAgICAgICAgICAgYXJncyArPSAyOworICAgICAgICAgICAgICBudW1fbGluZXMtLTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogdGhlbiB0aGUgY3VydmUgKi8KKyAgICAgICAgICAgIHggKz0gYXJnc1swXTsKKyAgICAgICAgICAgIHkgKz0gYXJnc1sxXTsKKyAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworICAgICAgICAgICAgeCArPSBhcmdzWzJdOworICAgICAgICAgICAgeSArPSBhcmdzWzNdOworICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAwICk7CisgICAgICAgICAgICB4ICs9IGFyZ3NbNF07CisgICAgICAgICAgICB5ICs9IGFyZ3NbNV07CisgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDEgKTsKKyAgICAgICAgICAgIGFyZ3MgPSBzdGFjazsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfcmN1cnZlbGluZToKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9JbnQgIG51bV9jdXJ2ZXM7CisgICAgICAgICAgICBGVF9JbnQgIG5hcmdzOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgcmN1cnZlbGluZVxuIiApKTsKKworICAgICAgICAgICAgaWYgKCBudW1fYXJncyA8IDggKQorICAgICAgICAgICAgICBnb3RvIFN0YWNrX1VuZGVyZmxvdzsKKworICAgICAgICAgICAgbmFyZ3MgICAgICA9IG51bV9hcmdzIC0gMjsKKyAgICAgICAgICAgIG5hcmdzICAgICAgPSBuYXJncyAtIG5hcmdzICUgNiArIDI7CisgICAgICAgICAgICBudW1fY3VydmVzID0gKCBuYXJncyAtIDIgKSAvIDY7CisKKyAgICAgICAgICAgIGlmICggY2ZmX2J1aWxkZXJfc3RhcnRfcG9pbnQoIGJ1aWxkZXIsIHgsIHkgKSAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAgY2ZmX2NoZWNrX3BvaW50cyggYnVpbGRlciwgbnVtX2N1cnZlcyAqIDMgKyAyICkgKQorICAgICAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgICAgIGFyZ3MgLT0gbmFyZ3M7CisKKyAgICAgICAgICAgIC8qIGZpcnN0LCBhZGQgdGhlIGN1cnZlcyAqLworICAgICAgICAgICAgd2hpbGUgKCBudW1fY3VydmVzID4gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHggKz0gYXJnc1swXTsKKyAgICAgICAgICAgICAgeSArPSBhcmdzWzFdOworICAgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKyAgICAgICAgICAgICAgeCArPSBhcmdzWzJdOworICAgICAgICAgICAgICB5ICs9IGFyZ3NbM107CisgICAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworICAgICAgICAgICAgICB4ICs9IGFyZ3NbNF07CisgICAgICAgICAgICAgIHkgKz0gYXJnc1s1XTsKKyAgICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAxICk7CisgICAgICAgICAgICAgIGFyZ3MgKz0gNjsKKyAgICAgICAgICAgICAgbnVtX2N1cnZlcy0tOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiB0aGVuIHRoZSBmaW5hbCBsaW5lICovCisgICAgICAgICAgICB4ICs9IGFyZ3NbMF07CisgICAgICAgICAgICB5ICs9IGFyZ3NbMV07CisgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDEgKTsKKyAgICAgICAgICAgIGFyZ3MgPSBzdGFjazsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfaGZsZXgxOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1BvcyBzdGFydF95OworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgaGZsZXgxXG4iICkpOworCisgICAgICAgICAgICAvKiBhZGRpbmcgZml2ZSBtb3JlIHBvaW50czogNCBjb250cm9sIHBvaW50cywgMSBvbi1jdXJ2ZSBwb2ludCAqLworICAgICAgICAgICAgLyogLS0gbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgc3RhcnQgcG9pbnQgaWYgaXQgKi8KKyAgICAgICAgICAgIC8qIG5lZWRzIHRvIGJlIGFkZGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIGNmZl9idWlsZGVyX3N0YXJ0X3BvaW50KCBidWlsZGVyLCB4LCB5ICkgfHwKKyAgICAgICAgICAgICAgICAgY2ZmX2NoZWNrX3BvaW50cyggYnVpbGRlciwgNiApICAgICAgICAgICApCisgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgICAgLyogcmVjb3JkIHRoZSBzdGFydGluZyBwb2ludCdzIHkgcG9zaXRpb24gZm9yIGxhdGVyIHVzZSAqLworICAgICAgICAgICAgc3RhcnRfeSA9IHk7CisKKyAgICAgICAgICAgIC8qIGZpcnN0IGNvbnRyb2wgcG9pbnQgKi8KKyAgICAgICAgICAgIHggKz0gYXJnc1swXTsKKyAgICAgICAgICAgIHkgKz0gYXJnc1sxXTsKKyAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworCisgICAgICAgICAgICAvKiBzZWNvbmQgY29udHJvbCBwb2ludCAqLworICAgICAgICAgICAgeCArPSBhcmdzWzJdOworICAgICAgICAgICAgeSArPSBhcmdzWzNdOworICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAwICk7CisKKyAgICAgICAgICAgIC8qIGpvaW4gcG9pbnQ7IG9uIGN1cnZlLCB3aXRoIHktdmFsdWUgdGhlIHNhbWUgYXMgdGhlIGxhc3QgKi8KKyAgICAgICAgICAgIC8qIGNvbnRyb2wgcG9pbnQncyB5LXZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHggKz0gYXJnc1s0XTsKKyAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworCisgICAgICAgICAgICAvKiB0aGlyZCBjb250cm9sIHBvaW50LCB3aXRoIHktdmFsdWUgdGhlIHNhbWUgYXMgdGhlIGpvaW4gKi8KKyAgICAgICAgICAgIC8qIHBvaW50J3MgeS12YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgeCArPSBhcmdzWzVdOworICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAwICk7CisKKyAgICAgICAgICAgIC8qIGZvdXJ0aCBjb250cm9sIHBvaW50ICovCisgICAgICAgICAgICB4ICs9IGFyZ3NbNl07CisgICAgICAgICAgICB5ICs9IGFyZ3NbN107CisgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKworICAgICAgICAgICAgLyogZW5kaW5nIHBvaW50LCB3aXRoIHktdmFsdWUgdGhlIHNhbWUgYXMgdGhlIHN0YXJ0ICAgKi8KKyAgICAgICAgICAgIHggKz0gYXJnc1s4XTsKKyAgICAgICAgICAgIHkgID0gc3RhcnRfeTsKKyAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworCisgICAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSBjZmZfb3BfaGZsZXg6CisgICAgICAgICAgeworICAgICAgICAgICAgRlRfUG9zIHN0YXJ0X3k7CisKKworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBoZmxleFxuIiApKTsKKworICAgICAgICAgICAgLyogYWRkaW5nIHNpeCBtb3JlIHBvaW50czsgNCBjb250cm9sIHBvaW50cywgMiBvbi1jdXJ2ZSBwb2ludHMgKi8KKyAgICAgICAgICAgIGlmICggY2ZmX2J1aWxkZXJfc3RhcnRfcG9pbnQoIGJ1aWxkZXIsIHgsIHkgKSB8fAorICAgICAgICAgICAgICAgICBjZmZfY2hlY2tfcG9pbnRzKCBidWlsZGVyLCA2ICkgICAgICAgICAgICkKKyAgICAgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgICAgICAvKiByZWNvcmQgdGhlIHN0YXJ0aW5nIHBvaW50J3MgeS1wb3NpdGlvbiBmb3IgbGF0ZXIgdXNlICovCisgICAgICAgICAgICBzdGFydF95ID0geTsKKworICAgICAgICAgICAgLyogZmlyc3QgY29udHJvbCBwb2ludCAqLworICAgICAgICAgICAgeCArPSBhcmdzWzBdOworICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAwICk7CisKKyAgICAgICAgICAgIC8qIHNlY29uZCBjb250cm9sIHBvaW50ICovCisgICAgICAgICAgICB4ICs9IGFyZ3NbMV07CisgICAgICAgICAgICB5ICs9IGFyZ3NbMl07CisgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKworICAgICAgICAgICAgLyogam9pbiBwb2ludDsgb24gY3VydmUsIHdpdGggeS12YWx1ZSB0aGUgc2FtZSBhcyB0aGUgbGFzdCAqLworICAgICAgICAgICAgLyogY29udHJvbCBwb2ludCdzIHktdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgeCArPSBhcmdzWzNdOworICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAxICk7CisKKyAgICAgICAgICAgIC8qIHRoaXJkIGNvbnRyb2wgcG9pbnQsIHdpdGggeS12YWx1ZSB0aGUgc2FtZSBhcyB0aGUgam9pbiAqLworICAgICAgICAgICAgLyogcG9pbnQncyB5LXZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICB4ICs9IGFyZ3NbNF07CisgICAgICAgICAgICBjZmZfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKworICAgICAgICAgICAgLyogZm91cnRoIGNvbnRyb2wgcG9pbnQgKi8KKyAgICAgICAgICAgIHggKz0gYXJnc1s1XTsKKyAgICAgICAgICAgIHkgID0gc3RhcnRfeTsKKyAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworCisgICAgICAgICAgICAvKiBlbmRpbmcgcG9pbnQsIHdpdGggeS12YWx1ZSB0aGUgc2FtZSBhcyB0aGUgc3RhcnQgcG9pbnQncyAqLworICAgICAgICAgICAgLyogeS12YWx1ZSAtLSB3ZSBkb24ndCBhZGQgdGhpcyBwb2ludCwgdGhvdWdoICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHggKz0gYXJnc1s2XTsKKyAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworCisgICAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSBjZmZfb3BfZmxleDE6CisgICAgICAgICAgeworICAgICAgICAgICAgRlRfUG9zICAgICBzdGFydF94LCBzdGFydF95OyAvKiByZWNvcmQgc3RhcnQgeCwgeSB2YWx1ZXMgZm9yICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFsdGVyIHVzZSAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIEZUX0ZpeGVkICAgZHggPSAwLCBkeSA9IDA7ICAgLyogdXNlZCBpbiBob3Jpem9udGFsL3ZlcnRpY2FsICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbGdvcml0aG0gYmVsb3cgICAgICAgICAgICAgICovCisgICAgICAgICAgICBGVF9JbnQgICAgIGhvcml6b250YWwsIGNvdW50OworICAgICAgICAgICAgRlRfRml4ZWQqICB0ZW1wOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgZmxleDFcbiIgKSk7CisKKyAgICAgICAgICAgIC8qIGFkZGluZyBzaXggbW9yZSBwb2ludHM7IDQgY29udHJvbCBwb2ludHMsIDIgb24tY3VydmUgcG9pbnRzICovCisgICAgICAgICAgICBpZiAoIGNmZl9idWlsZGVyX3N0YXJ0X3BvaW50KCBidWlsZGVyLCB4LCB5ICkgfHwKKyAgICAgICAgICAgICAgICAgY2ZmX2NoZWNrX3BvaW50cyggYnVpbGRlciwgNiApICAgICAgICAgICApCisgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgICAgLyogcmVjb3JkIHRoZSBzdGFydGluZyBwb2ludCdzIHgsIHkgcG9zaXRpb24gZm9yIGxhdGVyIHVzZSAqLworICAgICAgICAgICAgc3RhcnRfeCA9IHg7CisgICAgICAgICAgICBzdGFydF95ID0geTsKKworICAgICAgICAgICAgLyogWFhYOiBmaWd1cmUgb3V0IHdoZXRoZXIgdGhpcyBpcyBzdXBwb3NlZCB0byBiZSBhIGhvcml6b250YWwgKi8KKyAgICAgICAgICAgIC8qICAgICAgb3IgdmVydGljYWwgZmxleDsgdGhlIFR5cGUgMiBzcGVjaWZpY2F0aW9uIGlzIHZhZ3VlLi4uICovCisKKyAgICAgICAgICAgIHRlbXAgPSBhcmdzOworCisgICAgICAgICAgICAvKiBncmFiIHVwIHRvIHRoZSBsYXN0IGFyZ3VtZW50ICovCisgICAgICAgICAgICBmb3IgKCBjb3VudCA9IDU7IGNvdW50ID4gMDsgY291bnQtLSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGR4ICs9IHRlbXBbMF07CisgICAgICAgICAgICAgIGR5ICs9IHRlbXBbMV07CisgICAgICAgICAgICAgIHRlbXAgKz0gMjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBkeCA8IDAgKQorICAgICAgICAgICAgICBkeCA9IC1keDsKKyAgICAgICAgICAgIGlmICggZHkgPCAwICkKKyAgICAgICAgICAgICAgZHkgPSAtZHk7CisKKyAgICAgICAgICAgIC8qIHN0cmFuZ2UgdGVzdCwgYnV0IGhlcmUgaXQgaXMuLi4gKi8KKyAgICAgICAgICAgIGhvcml6b250YWwgPSAoIGR4ID4gZHkgKTsKKworICAgICAgICAgICAgZm9yICggY291bnQgPSA1OyBjb3VudCA+IDA7IGNvdW50LS0gKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB4ICs9IGFyZ3NbMF07CisgICAgICAgICAgICAgIHkgKz0gYXJnc1sxXTsKKyAgICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Cb29sKSggY291bnQgPT0gMyApICk7CisgICAgICAgICAgICAgIGFyZ3MgKz0gMjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogaXMgbGFzdCBvcGVyYW5kIGFuIHgtIG9yIHktZGVsdGE/ICovCisgICAgICAgICAgICBpZiAoIGhvcml6b250YWwgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB4ICs9IGFyZ3NbMF07CisgICAgICAgICAgICAgIHkgID0gc3RhcnRfeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgeCAgPSBzdGFydF94OworICAgICAgICAgICAgICB5ICs9IGFyZ3NbMF07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworCisgICAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgfQorCisgICAgICAgIGNhc2UgY2ZmX29wX2ZsZXg6CisgICAgICAgICAgeworICAgICAgICAgICAgRlRfVUludCAgY291bnQ7CisKKworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBmbGV4XG4iICkpOworCisgICAgICAgICAgICBpZiAoIGNmZl9idWlsZGVyX3N0YXJ0X3BvaW50KCBidWlsZGVyLCB4LCB5ICkgfHwKKyAgICAgICAgICAgICAgICAgY2ZmX2NoZWNrX3BvaW50cyggYnVpbGRlciwgNiApICAgICAgICAgICApCisgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgICAgZm9yICggY291bnQgPSA2OyBjb3VudCA+IDA7IGNvdW50LS0gKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB4ICs9IGFyZ3NbMF07CisgICAgICAgICAgICAgIHkgKz0gYXJnc1sxXTsKKyAgICAgICAgICAgICAgY2ZmX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9Cb29sKSggY291bnQgPT0gNCB8fCBjb3VudCA9PSAxICkgKTsKKyAgICAgICAgICAgICAgYXJncyArPSAyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX3NlYWM6CisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIHNlYWNcbiIgKSk7CisKKyAgICAgICAgICAgIGVycm9yID0gY2ZmX29wZXJhdG9yX3NlYWMoIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0ludCkoIGFyZ3NbM10gPj4gMTYgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9JbnQpKCBhcmdzWzRdID4+IDE2ICkgKTsKKworICAgICAgICAgICAgLyogYWRkIGN1cnJlbnQgb3V0bGluZSB0byB0aGUgZ2x5cGggc2xvdCAqLworICAgICAgICAgICAgRlRfR2x5cGhMb2FkZXJfQWRkKCBidWlsZGVyLT5sb2FkZXIgKTsKKworICAgICAgICAgICAgLyogcmV0dXJuIG5vdyEgKi8KKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICJcbiIgKSk7CisgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfZW5kY2hhcjoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIGVuZGNoYXJcbiIgKSk7CisKKyAgICAgICAgICAvKiBXZSBhcmUgZ29pbmcgdG8gZW11bGF0ZSB0aGUgc2VhYyBvcGVyYXRvci4gKi8KKyAgICAgICAgICBpZiAoIG51bV9hcmdzID49IDQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIFNhdmUgZ2x5cGggd2lkdGggc28gdGhhdCB0aGUgc3ViZ2x5cGhzIGRvbid0IG92ZXJ3cml0ZSBpdC4gKi8KKyAgICAgICAgICAgIEZUX1BvcyAgZ2x5cGhfd2lkdGggPSBkZWNvZGVyLT5nbHlwaF93aWR0aDsKKworCisgICAgICAgICAgICBlcnJvciA9IGNmZl9vcGVyYXRvcl9zZWFjKCBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEwsIGFyZ3NbLTRdLCBhcmdzWy0zXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9JbnQpKCBhcmdzWy0yXSA+PiAxNiApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0ludCkoIGFyZ3NbLTFdID4+IDE2ICkgKTsKKworICAgICAgICAgICAgZGVjb2Rlci0+Z2x5cGhfd2lkdGggPSBnbHlwaF93aWR0aDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgICAgICAgICAgIGNmZl9idWlsZGVyX2Nsb3NlX2NvbnRvdXIoIGJ1aWxkZXIgKTsKKworICAgICAgICAgICAgLyogY2xvc2UgaGludHMgcmVjb3JkaW5nIHNlc3Npb24gKi8KKyAgICAgICAgICAgIGlmICggaGludGVyICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKCBoaW50ZXItPmNsb3NlKCBoaW50ZXItPmhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXItPmN1cnJlbnQtPm5fcG9pbnRzICkgKQorICAgICAgICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworCisgICAgICAgICAgICAgIC8qIGFwcGx5IGhpbnRzIHRvIHRoZSBsb2FkZWQgZ2x5cGggb3V0bGluZSBub3cgKi8KKyAgICAgICAgICAgICAgaGludGVyLT5hcHBseSggaGludGVyLT5oaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci0+Y3VycmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBTSF9HbG9iYWxzKWJ1aWxkZXItPmhpbnRzX2dsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXItPmhpbnRfbW9kZSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBhZGQgY3VycmVudCBvdXRsaW5lIHRvIHRoZSBnbHlwaCBzbG90ICovCisgICAgICAgICAgICBGVF9HbHlwaExvYWRlcl9BZGQoIGJ1aWxkZXItPmxvYWRlciApOworICAgICAgICAgIH0KKworICAgICAgICAgIC8qIHJldHVybiBub3chICovCisgICAgICAgICAgRlRfVFJBQ0U0KCggIlxuIiApKTsKKyAgICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfYWJzOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgYWJzXG4iICkpOworCisgICAgICAgICAgaWYgKCBhcmdzWzBdIDwgMCApCisgICAgICAgICAgICBhcmdzWzBdID0gLWFyZ3NbMF07CisgICAgICAgICAgYXJncysrOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX2FkZDoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIGFkZFxuIiApKTsKKworICAgICAgICAgIGFyZ3NbMF0gKz0gYXJnc1sxXTsKKyAgICAgICAgICBhcmdzKys7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3Bfc3ViOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgc3ViXG4iICkpOworCisgICAgICAgICAgYXJnc1swXSAtPSBhcmdzWzFdOworICAgICAgICAgIGFyZ3MrKzsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNmZl9vcF9kaXY6CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBkaXZcbiIgKSk7CisKKyAgICAgICAgICBhcmdzWzBdID0gRlRfRGl2Rml4KCBhcmdzWzBdLCBhcmdzWzFdICk7CisgICAgICAgICAgYXJncysrOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX25lZzoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIG5lZ1xuIiApKTsKKworICAgICAgICAgIGFyZ3NbMF0gPSAtYXJnc1swXTsKKyAgICAgICAgICBhcmdzKys7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfcmFuZG9tOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ZpeGVkICBSYW5kOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgcmFuZFxuIiApKTsKKworICAgICAgICAgICAgUmFuZCA9IHNlZWQ7CisgICAgICAgICAgICBpZiAoIFJhbmQgPj0gMHg4MDAwTCApCisgICAgICAgICAgICAgIFJhbmQrKzsKKworICAgICAgICAgICAgYXJnc1swXSA9IFJhbmQ7CisgICAgICAgICAgICBzZWVkICAgID0gRlRfTXVsRml4KCBzZWVkLCAweDEwMDAwTCAtIHNlZWQgKTsKKyAgICAgICAgICAgIGlmICggc2VlZCA9PSAwICkKKyAgICAgICAgICAgICAgc2VlZCArPSAweDI4NzM7CisgICAgICAgICAgICBhcmdzKys7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX211bDoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIG11bFxuIiApKTsKKworICAgICAgICAgIGFyZ3NbMF0gPSBGVF9NdWxGaXgoIGFyZ3NbMF0sIGFyZ3NbMV0gKTsKKyAgICAgICAgICBhcmdzKys7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3Bfc3FydDoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHNxcnRcbiIgKSk7CisKKyAgICAgICAgICBpZiAoIGFyZ3NbMF0gPiAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9JbnQgICAgY291bnQgPSA5OworICAgICAgICAgICAgRlRfRml4ZWQgIHJvb3QgID0gYXJnc1swXTsKKyAgICAgICAgICAgIEZUX0ZpeGVkICBuZXdfcm9vdDsKKworCisgICAgICAgICAgICBmb3IgKDs7KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBuZXdfcm9vdCA9ICggcm9vdCArIEZUX0RpdkZpeCggYXJnc1swXSwgcm9vdCApICsgMSApID4+IDE7CisgICAgICAgICAgICAgIGlmICggbmV3X3Jvb3QgPT0gcm9vdCB8fCBjb3VudCA8PSAwICkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgcm9vdCA9IG5ld19yb290OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXJnc1swXSA9IG5ld19yb290OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzWzBdID0gMDsKKyAgICAgICAgICBhcmdzKys7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfZHJvcDoKKyAgICAgICAgICAvKiBub3RoaW5nICovCisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBkcm9wXG4iICkpOworCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfZXhjaDoKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9GaXhlZCAgdG1wOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgZXhjaFxuIiApKTsKKworICAgICAgICAgICAgdG1wICAgICA9IGFyZ3NbMF07CisgICAgICAgICAgICBhcmdzWzBdID0gYXJnc1sxXTsKKyAgICAgICAgICAgIGFyZ3NbMV0gPSB0bXA7CisgICAgICAgICAgICBhcmdzICAgKz0gMjsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfaW5kZXg6CisgICAgICAgICAgeworICAgICAgICAgICAgRlRfSW50ICBpZHggPSAoRlRfSW50KSggYXJnc1swXSA+PiAxNiApOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgaW5kZXhcbiIgKSk7CisKKyAgICAgICAgICAgIGlmICggaWR4IDwgMCApCisgICAgICAgICAgICAgIGlkeCA9IDA7CisgICAgICAgICAgICBlbHNlIGlmICggaWR4ID4gbnVtX2FyZ3MgLSAyICkKKyAgICAgICAgICAgICAgaWR4ID0gbnVtX2FyZ3MgLSAyOworICAgICAgICAgICAgYXJnc1swXSA9IGFyZ3NbLSggaWR4ICsgMSApXTsKKyAgICAgICAgICAgIGFyZ3MrKzsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3Bfcm9sbDoKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9JbnQgIGNvdW50ID0gKEZUX0ludCkoIGFyZ3NbMF0gPj4gMTYgKTsKKyAgICAgICAgICAgIEZUX0ludCAgaWR4ICAgPSAoRlRfSW50KSggYXJnc1sxXSA+PiAxNiApOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgcm9sbFxuIiApKTsKKworICAgICAgICAgICAgaWYgKCBjb3VudCA8PSAwICkKKyAgICAgICAgICAgICAgY291bnQgPSAxOworCisgICAgICAgICAgICBhcmdzIC09IGNvdW50OworICAgICAgICAgICAgaWYgKCBhcmdzIDwgc3RhY2sgKQorICAgICAgICAgICAgICBnb3RvIFN0YWNrX1VuZGVyZmxvdzsKKworICAgICAgICAgICAgaWYgKCBpZHggPj0gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHdoaWxlICggaWR4ID4gMCApCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBGVF9GaXhlZCAgdG1wID0gYXJnc1tjb3VudCAtIDFdOworICAgICAgICAgICAgICAgIEZUX0ludCAgICBpOworCisKKyAgICAgICAgICAgICAgICBmb3IgKCBpID0gY291bnQgLSAyOyBpID49IDA7IGktLSApCisgICAgICAgICAgICAgICAgICBhcmdzW2kgKyAxXSA9IGFyZ3NbaV07CisgICAgICAgICAgICAgICAgYXJnc1swXSA9IHRtcDsKKyAgICAgICAgICAgICAgICBpZHgtLTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB3aGlsZSAoIGlkeCA8IDAgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRlRfRml4ZWQgIHRtcCA9IGFyZ3NbMF07CisgICAgICAgICAgICAgICAgRlRfSW50ICAgIGk7CisKKworICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKysgKQorICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGFyZ3NbaSArIDFdOworICAgICAgICAgICAgICAgIGFyZ3NbY291bnQgLSAxXSA9IHRtcDsKKyAgICAgICAgICAgICAgICBpZHgrKzsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYXJncyArPSBjb3VudDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfZHVwOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgZHVwXG4iICkpOworCisgICAgICAgICAgYXJnc1sxXSA9IGFyZ3NbMF07CisgICAgICAgICAgYXJncyArPSAyOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX3B1dDoKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9GaXhlZCAgdmFsID0gYXJnc1swXTsKKyAgICAgICAgICAgIEZUX0ludCAgICBpZHggPSAoRlRfSW50KSggYXJnc1sxXSA+PiAxNiApOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgcHV0XG4iICkpOworCisgICAgICAgICAgICBpZiAoIGlkeCA+PSAwICYmIGlkeCA8IENGRl9NQVhfVFJBTlNfRUxFTUVOVFMgKQorICAgICAgICAgICAgICBkZWNvZGVyLT5idWlsZGNoYXJbaWR4XSA9IHZhbDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfZ2V0OgorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ludCAgICBpZHggPSAoRlRfSW50KSggYXJnc1swXSA+PiAxNiApOworICAgICAgICAgICAgRlRfRml4ZWQgIHZhbCA9IDA7CisKKworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiBnZXRcbiIgKSk7CisKKyAgICAgICAgICAgIGlmICggaWR4ID49IDAgJiYgaWR4IDwgQ0ZGX01BWF9UUkFOU19FTEVNRU5UUyApCisgICAgICAgICAgICAgIHZhbCA9IGRlY29kZXItPmJ1aWxkY2hhcltpZHhdOworCisgICAgICAgICAgICBhcmdzWzBdID0gdmFsOworICAgICAgICAgICAgYXJncysrOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNmZl9vcF9zdG9yZToKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHN0b3JlXG4iKSk7CisKKyAgICAgICAgICBnb3RvIFVuaW1wbGVtZW50ZWQ7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfbG9hZDoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIGxvYWRcbiIgKSk7CisKKyAgICAgICAgICBnb3RvIFVuaW1wbGVtZW50ZWQ7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfZG90c2VjdGlvbjoKKyAgICAgICAgICAvKiB0aGlzIG9wZXJhdG9yIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQgYnkgdGhlIHBhcnNlciAqLworICAgICAgICAgIEZUX1RSQUNFNCgoICIgZG90c2VjdGlvblxuIiApKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNmZl9vcF9jbG9zZXBhdGg6CisgICAgICAgICAgLyogdGhpcyBpcyBhbiBpbnZhbGlkIFR5cGUgMiBvcGVyYXRvcjsgaG93ZXZlciwgdGhlcmUgICAgICAgICovCisgICAgICAgICAgLyogZXhpc3QgZm9udHMgd2hpY2ggYXJlIGluY29ycmVjdGx5IGNvbnZlcnRlZCBmcm9tIHByb2JhYmx5ICovCisgICAgICAgICAgLyogVHlwZSAxIHRvIENGRiwgYW5kIHNvbWUgcGFyc2VycyBzZWVtIHRvIGFjY2VwdCBpdCAgICAgICAgICovCisKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIGNsb3NlcGF0aCAoaW52YWxpZCBvcClcbiIgKSk7CisKKyAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfaHNidzoKKyAgICAgICAgICAvKiB0aGlzIGlzIGFuIGludmFsaWQgVHlwZSAyIG9wZXJhdG9yOyBob3dldmVyLCB0aGVyZSAgICAgICAgKi8KKyAgICAgICAgICAvKiBleGlzdCBmb250cyB3aGljaCBhcmUgaW5jb3JyZWN0bHkgY29udmVydGVkIGZyb20gcHJvYmFibHkgKi8KKyAgICAgICAgICAvKiBUeXBlIDEgdG8gQ0ZGLCBhbmQgc29tZSBwYXJzZXJzIHNlZW0gdG8gYWNjZXB0IGl0ICAgICAgICAgKi8KKworICAgICAgICAgIEZUX1RSQUNFNCgoICIgaHNidyAoaW52YWxpZCBvcClcbiIgKSk7CisKKyAgICAgICAgICBkZWNvZGVyLT5nbHlwaF93aWR0aCA9IGRlY29kZXItPm5vbWluYWxfd2lkdGggKyAoIGFyZ3NbMV0gPj4gMTYgKTsKKworICAgICAgICAgIGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nLnggPSBhcmdzWzBdOworICAgICAgICAgIGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nLnkgPSAwOworCisgICAgICAgICAgeCAgICA9IGRlY29kZXItPmJ1aWxkZXIucG9zX3ggKyBhcmdzWzBdOworICAgICAgICAgIHkgICAgPSBkZWNvZGVyLT5idWlsZGVyLnBvc195OworICAgICAgICAgIGFyZ3MgPSBzdGFjazsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNmZl9vcF9zYnc6CisgICAgICAgICAgLyogdGhpcyBpcyBhbiBpbnZhbGlkIFR5cGUgMiBvcGVyYXRvcjsgaG93ZXZlciwgdGhlcmUgICAgICAgICovCisgICAgICAgICAgLyogZXhpc3QgZm9udHMgd2hpY2ggYXJlIGluY29ycmVjdGx5IGNvbnZlcnRlZCBmcm9tIHByb2JhYmx5ICovCisgICAgICAgICAgLyogVHlwZSAxIHRvIENGRiwgYW5kIHNvbWUgcGFyc2VycyBzZWVtIHRvIGFjY2VwdCBpdCAgICAgICAgICovCisKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHNidyAoaW52YWxpZCBvcClcbiIgKSk7CisKKyAgICAgICAgICBkZWNvZGVyLT5nbHlwaF93aWR0aCA9IGRlY29kZXItPm5vbWluYWxfd2lkdGggKyAoIGFyZ3NbMl0gPj4gMTYgKTsKKworICAgICAgICAgIGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nLnggPSBhcmdzWzBdOworICAgICAgICAgIGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nLnkgPSBhcmdzWzFdOworCisgICAgICAgICAgeCAgICA9IGRlY29kZXItPmJ1aWxkZXIucG9zX3ggKyBhcmdzWzBdOworICAgICAgICAgIHkgICAgPSBkZWNvZGVyLT5idWlsZGVyLnBvc195ICsgYXJnc1sxXTsKKyAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3Bfc2V0Y3VycmVudHBvaW50OgorICAgICAgICAgIC8qIHRoaXMgaXMgYW4gaW52YWxpZCBUeXBlIDIgb3BlcmF0b3I7IGhvd2V2ZXIsIHRoZXJlICAgICAgICAqLworICAgICAgICAgIC8qIGV4aXN0IGZvbnRzIHdoaWNoIGFyZSBpbmNvcnJlY3RseSBjb252ZXJ0ZWQgZnJvbSBwcm9iYWJseSAqLworICAgICAgICAgIC8qIFR5cGUgMSB0byBDRkYsIGFuZCBzb21lIHBhcnNlcnMgc2VlbSB0byBhY2NlcHQgaXQgICAgICAgICAqLworCisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBzZXRjdXJyZW50cG9pbnQgKGludmFsaWQgb3ApXG4iICkpOworCisgICAgICAgICAgeCAgICA9IGRlY29kZXItPmJ1aWxkZXIucG9zX3ggKyBhcmdzWzBdOworICAgICAgICAgIHkgICAgPSBkZWNvZGVyLT5idWlsZGVyLnBvc195ICsgYXJnc1sxXTsKKyAgICAgICAgICBhcmdzID0gc3RhY2s7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfY2FsbG90aGVyc3VicjoKKyAgICAgICAgICAvKiB0aGlzIGlzIGFuIGludmFsaWQgVHlwZSAyIG9wZXJhdG9yOyBob3dldmVyLCB0aGVyZSAgICAgICAgKi8KKyAgICAgICAgICAvKiBleGlzdCBmb250cyB3aGljaCBhcmUgaW5jb3JyZWN0bHkgY29udmVydGVkIGZyb20gcHJvYmFibHkgKi8KKyAgICAgICAgICAvKiBUeXBlIDEgdG8gQ0ZGLCBhbmQgc29tZSBwYXJzZXJzIHNlZW0gdG8gYWNjZXB0IGl0ICAgICAgICAgKi8KKworICAgICAgICAgIEZUX1RSQUNFNCgoICIgY2FsbG90aGVyc3ViciAoaW52YWxpZCBvcClcbiIgKSk7CisKKyAgICAgICAgICAvKiBzdWJzZXF1ZW50IGBwb3AnIG9wZXJhbmRzIHNob3VsZCBhZGQgdGhlIGFyZ3VtZW50cywgICAgICAgKi8KKyAgICAgICAgICAvKiB0aGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXNjcmliZWQgZm9yIGB1bmtub3duJyBvdGhlciAgKi8KKyAgICAgICAgICAvKiBzdWJyb3V0aW5lcyBpbiB0aGUgVHlwZTEgc3BlYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiBYWFggRml4IHJldHVybiBhcmd1bWVudHMgKHNlZSBkaXNjdXNzaW9uIGJlbG93KS4gICAgICAgICAgKi8KKyAgICAgICAgICBhcmdzIC09IDIgKyAoIGFyZ3NbLTJdID4+IDE2ICk7CisgICAgICAgICAgaWYgKCBhcmdzIDwgc3RhY2sgKQorICAgICAgICAgICAgZ290byBTdGFja19VbmRlcmZsb3c7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfcG9wOgorICAgICAgICAgIC8qIHRoaXMgaXMgYW4gaW52YWxpZCBUeXBlIDIgb3BlcmF0b3I7IGhvd2V2ZXIsIHRoZXJlICAgICAgICAqLworICAgICAgICAgIC8qIGV4aXN0IGZvbnRzIHdoaWNoIGFyZSBpbmNvcnJlY3RseSBjb252ZXJ0ZWQgZnJvbSBwcm9iYWJseSAqLworICAgICAgICAgIC8qIFR5cGUgMSB0byBDRkYsIGFuZCBzb21lIHBhcnNlcnMgc2VlbSB0byBhY2NlcHQgaXQgICAgICAgICAqLworCisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBwb3AgKGludmFsaWQgb3ApXG4iICkpOworCisgICAgICAgICAgLyogWFhYIEluY3JlYXNpbmcgYGFyZ3MnIGlzIHdyb25nOiBBZnRlciBhIGNlcnRhaW4gbnVtYmVyIG9mICovCisgICAgICAgICAgLyogYHBvcCdzIHdlIGdldCBhIHN0YWNrIG92ZXJmbG93LiAgUmVhc29uIGZvciBkb2luZyBpdCBpcyAgICovCisgICAgICAgICAgLyogY29kZSBsaWtlIHRoaXMgKGFjdHVhbGx5IGZvdW5kIGluIGEgQ0ZGIGZvbnQpOiAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAxNyAxIDMgY2FsbG90aGVyc3ViciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICBwb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICBjYWxsc3ViciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogU2luY2Ugd2UgaGFuZGxlIGBjYWxsb3RoZXJzdWJyJyBhcyBhIG5vLW9wLCBhbmQgICAgICAgICAgICovCisgICAgICAgICAgLyogYGNhbGxzdWJyJyBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQsIGBwb3AnIGNhbid0IGJlIGEgICovCisgICAgICAgICAgLyogbm8tb3AgdG9vIGFzIGl0IGJhc2ljYWxseSBzaG91bGQgYmUuICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogVGhlIHJpZ2h0IHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByb3ZpZGUgcmVhbCBzdXBwb3J0IGZvciAgICovCisgICAgICAgICAgLyogYGNhbGxvdGhlcnN1YnInIGFzIGRvbmUgaW4gYHQxZGVjb2RlLmMnLCBob3dldmVyLCBnaXZlbiAgICovCisgICAgICAgICAgLyogdGhlIGZhY3QgdGhhdCBDRkYgZm9udHMgd2l0aCBgcG9wJyBhcmUgaW52YWxpZCwgaXQgaXMgICAgICovCisgICAgICAgICAgLyogcXVlc3Rpb25hYmxlIHdoZXRoZXIgaXQgaXMgd29ydGggdGhlIHRpbWUuICAgICAgICAgICAgICAgICovCisgICAgICAgICAgYXJncysrOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX2FuZDoKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9GaXhlZCAgY29uZCA9IGFyZ3NbMF0gJiYgYXJnc1sxXTsKKworCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGFuZFxuIiApKTsKKworICAgICAgICAgICAgYXJnc1swXSA9IGNvbmQgPyAweDEwMDAwTCA6IDA7CisgICAgICAgICAgICBhcmdzKys7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX29yOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ZpeGVkICBjb25kID0gYXJnc1swXSB8fCBhcmdzWzFdOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgb3JcbiIgKSk7CisKKyAgICAgICAgICAgIGFyZ3NbMF0gPSBjb25kID8gMHgxMDAwMEwgOiAwOworICAgICAgICAgICAgYXJncysrOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNmZl9vcF9lcToKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9GaXhlZCAgY29uZCA9ICFhcmdzWzBdOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgZXFcbiIgKSk7CisKKyAgICAgICAgICAgIGFyZ3NbMF0gPSBjb25kID8gMHgxMDAwMEwgOiAwOworICAgICAgICAgICAgYXJncysrOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIGNmZl9vcF9pZmVsc2U6CisgICAgICAgICAgeworICAgICAgICAgICAgRlRfRml4ZWQgIGNvbmQgPSAoIGFyZ3NbMl0gPD0gYXJnc1szXSApOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgaWZlbHNlXG4iICkpOworCisgICAgICAgICAgICBpZiAoICFjb25kICkKKyAgICAgICAgICAgICAgYXJnc1swXSA9IGFyZ3NbMV07CisgICAgICAgICAgICBhcmdzKys7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgY2ZmX29wX2NhbGxzdWJyOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VJbnQgIGlkeCA9IChGVF9VSW50KSggKCBhcmdzWzBdID4+IDE2ICkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLT5sb2NhbHNfYmlhcyApOworCisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgY2FsbHN1YnIoJWQpXG4iLCBpZHggKSk7CisKKyAgICAgICAgICAgIGlmICggaWR4ID49IGRlY29kZXItPm51bV9sb2NhbHMgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9FUlJPUigoICJjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGxvY2FsIHN1YnIgaW5kZXhcbiIgKSk7CisgICAgICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIHpvbmUgLSBkZWNvZGVyLT56b25lcyA+PSBDRkZfTUFYX1NVQlJTX0NBTExTICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfRVJST1IoKCAiY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3M6IgorICAgICAgICAgICAgICAgICAgICAgICAgICIgdG9vIG1hbnkgbmVzdGVkIHN1YnJzXG4iICkpOworICAgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgem9uZS0+Y3Vyc29yID0gaXA7ICAvKiBzYXZlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gcG9pbnRlciAqLworCisgICAgICAgICAgICB6b25lKys7CisgICAgICAgICAgICB6b25lLT5iYXNlICAgPSBkZWNvZGVyLT5sb2NhbHNbaWR4XTsKKyAgICAgICAgICAgIHpvbmUtPmxpbWl0ICA9IGRlY29kZXItPmxvY2Fsc1tpZHggKyAxXTsKKyAgICAgICAgICAgIHpvbmUtPmN1cnNvciA9IHpvbmUtPmJhc2U7CisKKyAgICAgICAgICAgIGlmICggIXpvbmUtPmJhc2UgfHwgem9uZS0+bGltaXQgPT0gem9uZS0+YmFzZSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX0VSUk9SKCggImNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIGludm9raW5nIGVtcHR5IHN1YnJzXG4iICkpOworICAgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVjb2Rlci0+em9uZSA9IHpvbmU7CisgICAgICAgICAgICBpcCAgICAgICAgICAgID0gem9uZS0+YmFzZTsKKyAgICAgICAgICAgIGxpbWl0ICAgICAgICAgPSB6b25lLT5saW1pdDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfY2FsbGdzdWJyOgorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VJbnQgIGlkeCA9IChGVF9VSW50KSggKCBhcmdzWzBdID4+IDE2ICkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLT5nbG9iYWxzX2JpYXMgKTsKKworCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGNhbGxnc3ViciglZClcbiIsIGlkeCApKTsKKworICAgICAgICAgICAgaWYgKCBpZHggPj0gZGVjb2Rlci0+bnVtX2dsb2JhbHMgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9FUlJPUigoICJjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGdsb2JhbCBzdWJyIGluZGV4XG4iICkpOworICAgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCB6b25lIC0gZGVjb2Rlci0+em9uZXMgPj0gQ0ZGX01BWF9TVUJSU19DQUxMUyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX0VSUk9SKCggImNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIHRvbyBtYW55IG5lc3RlZCBzdWJyc1xuIiApKTsKKyAgICAgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHpvbmUtPmN1cnNvciA9IGlwOyAgLyogc2F2ZSBjdXJyZW50IGluc3RydWN0aW9uIHBvaW50ZXIgKi8KKworICAgICAgICAgICAgem9uZSsrOworICAgICAgICAgICAgem9uZS0+YmFzZSAgID0gZGVjb2Rlci0+Z2xvYmFsc1tpZHhdOworICAgICAgICAgICAgem9uZS0+bGltaXQgID0gZGVjb2Rlci0+Z2xvYmFsc1tpZHggKyAxXTsKKyAgICAgICAgICAgIHpvbmUtPmN1cnNvciA9IHpvbmUtPmJhc2U7CisKKyAgICAgICAgICAgIGlmICggIXpvbmUtPmJhc2UgfHwgem9uZS0+bGltaXQgPT0gem9uZS0+YmFzZSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX0VSUk9SKCggImNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIGludm9raW5nIGVtcHR5IHN1YnJzXG4iICkpOworICAgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVjb2Rlci0+em9uZSA9IHpvbmU7CisgICAgICAgICAgICBpcCAgICAgICAgICAgID0gem9uZS0+YmFzZTsKKyAgICAgICAgICAgIGxpbWl0ICAgICAgICAgPSB6b25lLT5saW1pdDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBjZmZfb3BfcmV0dXJuOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgcmV0dXJuXG4iICkpOworCisgICAgICAgICAgaWYgKCBkZWNvZGVyLT56b25lIDw9IGRlY29kZXItPnpvbmVzICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9FUlJPUigoICJjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICIgdW5leHBlY3RlZCByZXR1cm5cbiIgKSk7CisgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBkZWNvZGVyLT56b25lLS07CisgICAgICAgICAgem9uZSAgPSBkZWNvZGVyLT56b25lOworICAgICAgICAgIGlwICAgID0gem9uZS0+Y3Vyc29yOworICAgICAgICAgIGxpbWl0ID0gem9uZS0+bGltaXQ7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgVW5pbXBsZW1lbnRlZDoKKyAgICAgICAgICBGVF9FUlJPUigoICJVbmltcGxlbWVudGVkIG9wY29kZTogJWQiLCBpcFstMV0gKSk7CisKKyAgICAgICAgICBpZiAoIGlwWy0xXSA9PSAxMiApCisgICAgICAgICAgICBGVF9FUlJPUigoICIgJWQiLCBpcFswXSApKTsKKyAgICAgICAgICBGVF9FUlJPUigoICJcbiIgKSk7CisKKyAgICAgICAgICByZXR1cm4gRlRfVEhST1coIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApOworICAgICAgICB9CisKKyAgICAgICAgZGVjb2Rlci0+dG9wID0gYXJnczsKKworICAgICAgICBpZiAoIGRlY29kZXItPnRvcCAtIHN0YWNrID49IENGRl9NQVhfT1BFUkFORFMgKQorICAgICAgICAgIGdvdG8gU3RhY2tfT3ZlcmZsb3c7CisKKyAgICAgIH0gLyogZ2VuZXJhbCBvcGVyYXRvciBwcm9jZXNzaW5nICovCisKKyAgICB9IC8qIHdoaWxlIGlwIDwgbGltaXQgKi8KKworICAgIEZUX1RSQUNFNCgoICIuLmVuZC4uXG5cbiIgKSk7CisKKyAgRmFpbDoKKyAgICByZXR1cm4gZXJyb3I7CisKKyAgU3ludGF4X0Vycm9yOgorICAgIEZUX1RSQUNFNCgoICJjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczogc3ludGF4IGVycm9yXG4iICkpOworICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworCisgIFN0YWNrX1VuZGVyZmxvdzoKKyAgICBGVF9UUkFDRTQoKCAiY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3M6IHN0YWNrIHVuZGVyZmxvd1xuIiApKTsKKyAgICByZXR1cm4gRlRfVEhST1coIFRvb19GZXdfQXJndW1lbnRzICk7CisKKyAgU3RhY2tfT3ZlcmZsb3c6CisgICAgRlRfVFJBQ0U0KCggImNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiBzdGFjayBvdmVyZmxvd1xuIiApKTsKKyAgICByZXR1cm4gRlRfVEhST1coIFN0YWNrX092ZXJmbG93ICk7CisgIH0KKworI2VuZGlmIC8qIENGRl9DT05GSUdfT1BUSU9OX09MRF9FTkdJTkUgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgICAgICAgICBDT01QVVRFIFRIRSBNQVhJTVVNIEFEVkFOQ0UgV0lEVEggICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICBUaGUgZm9sbG93aW5nIGNvZGUgaXMgaW4gY2hhcmdlIG9mIGNvbXB1dGluZyAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgdGhlIG1heGltdW0gYWR2YW5jZSB3aWR0aCBvZiB0aGUgZm9udC4gIEl0ICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgIHF1aWNrbHkgcHJvY2Vzc2VzIGVhY2ggZ2x5cGggY2hhcnN0cmluZyB0byAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICBleHRyYWN0IHRoZSB2YWx1ZSBmcm9tIGVpdGhlciBhIGBzYncnIG9yIGBzZWFjJyAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgb3BlcmF0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZiAwIC8qIHVudXNlZCB1bnRpbCB3ZSBzdXBwb3J0IHB1cmUgQ0ZGIGZvbnRzICovCisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2ZmX2NvbXB1dGVfbWF4X2FkdmFuY2UoIFRUX0ZhY2UgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQqICBtYXhfYWR2YW5jZSApCisgIHsKKyAgICBGVF9FcnJvciAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgQ0ZGX0RlY29kZXIgIGRlY29kZXI7CisgICAgRlRfSW50ICAgICAgIGdseXBoX2luZGV4OworICAgIENGRl9Gb250ICAgICBjZmYgPSAoQ0ZGX0ZvbnQpZmFjZS0+b3RoZXI7CisKKworICAgICptYXhfYWR2YW5jZSA9IDA7CisKKyAgICAvKiBJbml0aWFsaXplIGxvYWQgZGVjb2RlciAqLworICAgIGNmZl9kZWNvZGVyX2luaXQoICZkZWNvZGVyLCBmYWNlLCAwLCAwLCAwLCAwICk7CisKKyAgICBkZWNvZGVyLmJ1aWxkZXIubWV0cmljc19vbmx5ID0gMTsKKyAgICBkZWNvZGVyLmJ1aWxkZXIubG9hZF9wb2ludHMgID0gMDsKKworICAgIC8qIEZvciBlYWNoIGdseXBoLCBwYXJzZSB0aGUgZ2x5cGggY2hhcnN0cmluZyBhbmQgZXh0cmFjdCAqLworICAgIC8qIHRoZSBhZHZhbmNlIHdpZHRoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGZvciAoIGdseXBoX2luZGV4ID0gMDsgZ2x5cGhfaW5kZXggPCBmYWNlLT5yb290Lm51bV9nbHlwaHM7CisgICAgICAgICAgZ2x5cGhfaW5kZXgrKyApCisgICAgeworICAgICAgRlRfQnl0ZSogIGNoYXJzdHJpbmc7CisgICAgICBGVF9VTG9uZyAgY2hhcnN0cmluZ19sZW47CisKKworICAgICAgLyogbm93IGdldCBsb2FkIHRoZSB1bnNjYWxlZCBvdXRsaW5lICovCisgICAgICBlcnJvciA9IGNmZl9nZXRfZ2x5cGhfZGF0YSggZmFjZSwgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoYXJzdHJpbmcsICZjaGFyc3RyaW5nX2xlbiApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgeworICAgICAgICBlcnJvciA9IGNmZl9kZWNvZGVyX3ByZXBhcmUoICZkZWNvZGVyLCBzaXplLCBnbHlwaF9pbmRleCApOworICAgICAgICBpZiAoICFlcnJvciApCisgICAgICAgICAgZXJyb3IgPSBjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncyggJmRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc3RyaW5nX2xlbiApOworCisgICAgICAgIGNmZl9mcmVlX2dseXBoX2RhdGEoIGZhY2UsICZjaGFyc3RyaW5nLCAmY2hhcnN0cmluZ19sZW4gKTsKKyAgICAgIH0KKworICAgICAgLyogaWdub3JlIHRoZSBlcnJvciBpZiBvbmUgaGFzIG9jY3VycmVkIC0tIHNraXAgdG8gbmV4dCBnbHlwaCAqLworICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgfQorCisgICAgKm1heF9hZHZhbmNlID0gZGVjb2Rlci5idWlsZGVyLmFkdmFuY2UueDsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisjZW5kaWYgLyogMCAqLworCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNmZl9zbG90X2xvYWQoIENGRl9HbHlwaFNsb3QgIGdseXBoLAorICAgICAgICAgICAgICAgICBDRkZfU2l6ZSAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgRlRfSW50MzIgICAgICAgbG9hZF9mbGFncyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgZXJyb3I7CisgICAgQ0ZGX0RlY29kZXIgIGRlY29kZXI7CisgICAgVFRfRmFjZSAgICAgIGZhY2UgPSAoVFRfRmFjZSlnbHlwaC0+cm9vdC5mYWNlOworICAgIEZUX0Jvb2wgICAgICBoaW50aW5nLCBzY2FsZWQsIGZvcmNlX3NjYWxpbmc7CisgICAgQ0ZGX0ZvbnQgICAgIGNmZiAgPSAoQ0ZGX0ZvbnQpZmFjZS0+ZXh0cmEuZGF0YTsKKworICAgIEZUX01hdHJpeCAgICBmb250X21hdHJpeDsKKyAgICBGVF9WZWN0b3IgICAgZm9udF9vZmZzZXQ7CisKKworICAgIGZvcmNlX3NjYWxpbmcgPSBGQUxTRTsKKworICAgIC8qIGluIGEgQ0lELWtleWVkIGZvbnQsIGNvbnNpZGVyIGBnbHlwaF9pbmRleCcgYXMgYSBDSUQgYW5kIG1hcCAqLworICAgIC8qIGl0IGltbWVkaWF0ZWx5IHRvIHRoZSByZWFsIGdseXBoX2luZGV4IC0tIGlmIGl0IGlzbid0IGEgICAgICAqLworICAgIC8qIHN1YnNldHRlZCBmb250LCBnbHlwaF9pbmRpY2VzIGFuZCBDSURzIGFyZSBpZGVudGljYWwsIHRob3VnaCAqLworICAgIGlmICggY2ZmLT50b3BfZm9udC5mb250X2RpY3QuY2lkX3JlZ2lzdHJ5ICE9IDB4RkZGRlUgJiYKKyAgICAgICAgIGNmZi0+Y2hhcnNldC5jaWRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICB7CisgICAgICAvKiBkb24ndCBoYW5kbGUgQ0lEIDAgKC5ub3RkZWYpIHdoaWNoIGlzIGRpcmVjdGx5IG1hcHBlZCB0byBHSUQgMCAqLworICAgICAgaWYgKCBnbHlwaF9pbmRleCAhPSAwICkKKyAgICAgIHsKKyAgICAgICAgZ2x5cGhfaW5kZXggPSBjZmZfY2hhcnNldF9jaWRfdG9fZ2luZGV4KCAmY2ZmLT5jaGFyc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4ICk7CisgICAgICAgIGlmICggZ2x5cGhfaW5kZXggPT0gMCApCisgICAgICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKCBnbHlwaF9pbmRleCA+PSBjZmYtPm51bV9nbHlwaHMgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX1JFQ1VSU0UgKQorICAgICAgbG9hZF9mbGFncyB8PSBGVF9MT0FEX05PX1NDQUxFIHwgRlRfTE9BRF9OT19ISU5USU5HOworCisgICAgZ2x5cGgtPnhfc2NhbGUgPSAweDEwMDAwTDsKKyAgICBnbHlwaC0+eV9zY2FsZSA9IDB4MTAwMDBMOworICAgIGlmICggc2l6ZSApCisgICAgeworICAgICAgZ2x5cGgtPnhfc2NhbGUgPSBzaXplLT5yb290Lm1ldHJpY3MueF9zY2FsZTsKKyAgICAgIGdseXBoLT55X3NjYWxlID0gc2l6ZS0+cm9vdC5tZXRyaWNzLnlfc2NhbGU7CisgICAgfQorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTCisKKyAgICAvKiB0cnkgdG8gbG9hZCBlbWJlZGRlZCBiaXRtYXAgaWYgYW55ICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogWFhYOiBUaGUgY29udmVudGlvbiBzaG91bGQgYmUgZW1waGFzaXplZCBpbiAgICAgKi8KKyAgICAvKiAgICAgIHRoZSBkb2N1bWVudHMgYmVjYXVzZSBpdCBjYW4gYmUgY29uZnVzaW5nLiAqLworICAgIGlmICggc2l6ZSApCisgICAgeworICAgICAgQ0ZGX0ZhY2UgICAgICBjZmZfZmFjZSA9IChDRkZfRmFjZSlzaXplLT5yb290LmZhY2U7CisgICAgICBTRk5UX1NlcnZpY2UgIHNmbnQgICAgID0gKFNGTlRfU2VydmljZSljZmZfZmFjZS0+c2ZudDsKKyAgICAgIEZUX1N0cmVhbSAgICAgc3RyZWFtICAgPSBjZmZfZmFjZS0+cm9vdC5zdHJlYW07CisKKworICAgICAgaWYgKCBzaXplLT5zdHJpa2VfaW5kZXggIT0gMHhGRkZGRkZGRlVMICAgICAgJiYKKyAgICAgICAgICAgc2ZudC0+bG9hZF9lYmxjICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fQklUTUFQICkgPT0gMCApCisgICAgICB7CisgICAgICAgIFRUX1NCaXRfTWV0cmljc1JlYyAgbWV0cmljczsKKworCisgICAgICAgIGVycm9yID0gc2ZudC0+bG9hZF9zYml0X2ltYWdlKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0+c3RyaWtlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfSW50KWxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2x5cGgtPnJvb3QuYml0bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1ldHJpY3MgKTsKKworICAgICAgICBpZiAoICFlcnJvciApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9Cb29sICAgIGhhc192ZXJ0aWNhbF9pbmZvOworICAgICAgICAgIEZUX1VTaG9ydCAgYWR2YW5jZTsKKyAgICAgICAgICBGVF9TaG9ydCAgIGR1bW15OworCisKKyAgICAgICAgICBnbHlwaC0+cm9vdC5vdXRsaW5lLm5fcG9pbnRzICAgPSAwOworICAgICAgICAgIGdseXBoLT5yb290Lm91dGxpbmUubl9jb250b3VycyA9IDA7CisKKyAgICAgICAgICBnbHlwaC0+cm9vdC5tZXRyaWNzLndpZHRoICA9IChGVF9Qb3MpbWV0cmljcy53aWR0aCAgPDwgNjsKKyAgICAgICAgICBnbHlwaC0+cm9vdC5tZXRyaWNzLmhlaWdodCA9IChGVF9Qb3MpbWV0cmljcy5oZWlnaHQgPDwgNjsKKworICAgICAgICAgIGdseXBoLT5yb290Lm1ldHJpY3MuaG9yaUJlYXJpbmdYID0gKEZUX1BvcyltZXRyaWNzLmhvcmlCZWFyaW5nWCA8PCA2OworICAgICAgICAgIGdseXBoLT5yb290Lm1ldHJpY3MuaG9yaUJlYXJpbmdZID0gKEZUX1BvcyltZXRyaWNzLmhvcmlCZWFyaW5nWSA8PCA2OworICAgICAgICAgIGdseXBoLT5yb290Lm1ldHJpY3MuaG9yaUFkdmFuY2UgID0gKEZUX1BvcyltZXRyaWNzLmhvcmlBZHZhbmNlICA8PCA2OworCisgICAgICAgICAgZ2x5cGgtPnJvb3QubWV0cmljcy52ZXJ0QmVhcmluZ1ggPSAoRlRfUG9zKW1ldHJpY3MudmVydEJlYXJpbmdYIDw8IDY7CisgICAgICAgICAgZ2x5cGgtPnJvb3QubWV0cmljcy52ZXJ0QmVhcmluZ1kgPSAoRlRfUG9zKW1ldHJpY3MudmVydEJlYXJpbmdZIDw8IDY7CisgICAgICAgICAgZ2x5cGgtPnJvb3QubWV0cmljcy52ZXJ0QWR2YW5jZSAgPSAoRlRfUG9zKW1ldHJpY3MudmVydEFkdmFuY2UgIDw8IDY7CisKKyAgICAgICAgICBnbHlwaC0+cm9vdC5mb3JtYXQgPSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQOworCisgICAgICAgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGdseXBoLT5yb290LmJpdG1hcF9sZWZ0ID0gbWV0cmljcy52ZXJ0QmVhcmluZ1g7CisgICAgICAgICAgICBnbHlwaC0+cm9vdC5iaXRtYXBfdG9wICA9IG1ldHJpY3MudmVydEJlYXJpbmdZOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgZ2x5cGgtPnJvb3QuYml0bWFwX2xlZnQgPSBtZXRyaWNzLmhvcmlCZWFyaW5nWDsKKyAgICAgICAgICAgIGdseXBoLT5yb290LmJpdG1hcF90b3AgID0gbWV0cmljcy5ob3JpQmVhcmluZ1k7CisgICAgICAgICAgfQorCisgICAgICAgICAgLyogY29tcHV0ZSBsaW5lYXIgYWR2YW5jZSB3aWR0aHMgKi8KKworICAgICAgICAgICggKFNGTlRfU2VydmljZSlmYWNlLT5zZm50ICktPmdldF9tZXRyaWNzKCBmYWNlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR1bW15LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWR2YW5jZSApOworICAgICAgICAgIGdseXBoLT5yb290LmxpbmVhckhvcmlBZHZhbmNlID0gYWR2YW5jZTsKKworICAgICAgICAgIGhhc192ZXJ0aWNhbF9pbmZvID0gRlRfQk9PTCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+dmVydGljYWxfaW5mbyAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT52ZXJ0aWNhbC5udW1iZXJfT2ZfVk1ldHJpY3MgPiAwICk7CisKKyAgICAgICAgICAvKiBnZXQgdGhlIHZlcnRpY2FsIG1ldHJpY3MgZnJvbSB0aGUgdnRteCB0YWJsZSBpZiB3ZSBoYXZlIG9uZSAqLworICAgICAgICAgIGlmICggaGFzX3ZlcnRpY2FsX2luZm8gKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICggKFNGTlRfU2VydmljZSlmYWNlLT5zZm50ICktPmdldF9tZXRyaWNzKCBmYWNlLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWR2YW5jZSApOworICAgICAgICAgICAgZ2x5cGgtPnJvb3QubGluZWFyVmVydEFkdmFuY2UgPSBhZHZhbmNlOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgLyogbWFrZSB1cCB2ZXJ0aWNhbCBvbmVzICovCisgICAgICAgICAgICBpZiAoIGZhY2UtPm9zMi52ZXJzaW9uICE9IDB4RkZGRlUgKQorICAgICAgICAgICAgICBnbHlwaC0+cm9vdC5saW5lYXJWZXJ0QWR2YW5jZSA9IChGVF9Qb3MpCisgICAgICAgICAgICAgICAgKCBmYWNlLT5vczIuc1R5cG9Bc2NlbmRlciAtIGZhY2UtPm9zMi5zVHlwb0Rlc2NlbmRlciApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBnbHlwaC0+cm9vdC5saW5lYXJWZXJ0QWR2YW5jZSA9IChGVF9Qb3MpCisgICAgICAgICAgICAgICAgKCBmYWNlLT5ob3Jpem9udGFsLkFzY2VuZGVyIC0gZmFjZS0+aG9yaXpvbnRhbC5EZXNjZW5kZXIgKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMgKi8KKworICAgIC8qIHJldHVybiBpbW1lZGlhdGVseSBpZiB3ZSBvbmx5IHdhbnQgdGhlIGVtYmVkZGVkIGJpdG1hcHMgKi8KKyAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX1NCSVRTX09OTFkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICAvKiBpZiB3ZSBoYXZlIGEgQ0lEIHN1YmZvbnQsIHVzZSBpdHMgbWF0cml4ICh3aGljaCBoYXMgYWxyZWFkeSAqLworICAgIC8qIGJlZW4gbXVsdGlwbGllZCB3aXRoIHRoZSByb290IG1hdHJpeCkgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAvKiB0aGlzIHNjYWxpbmcgaXMgb25seSByZWxldmFudCBpZiB0aGUgUFMgaGludGVyIGlzbid0IGFjdGl2ZSAqLworICAgIGlmICggY2ZmLT5udW1fc3ViZm9udHMgKQorICAgIHsKKyAgICAgIEZUX1VMb25nICB0b3BfdXBtLCBzdWJfdXBtOworICAgICAgRlRfQnl0ZSAgIGZkX2luZGV4ID0gY2ZmX2ZkX3NlbGVjdF9nZXQoICZjZmYtPmZkX3NlbGVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCApOworCisKKyAgICAgIGlmICggZmRfaW5kZXggPj0gY2ZmLT5udW1fc3ViZm9udHMgKQorICAgICAgICBmZF9pbmRleCA9IChGVF9CeXRlKSggY2ZmLT5udW1fc3ViZm9udHMgLSAxICk7CisKKyAgICAgIHRvcF91cG0gPSBjZmYtPnRvcF9mb250LmZvbnRfZGljdC51bml0c19wZXJfZW07CisgICAgICBzdWJfdXBtID0gY2ZmLT5zdWJmb250c1tmZF9pbmRleF0tPmZvbnRfZGljdC51bml0c19wZXJfZW07CisKKworICAgICAgZm9udF9tYXRyaXggPSBjZmYtPnN1YmZvbnRzW2ZkX2luZGV4XS0+Zm9udF9kaWN0LmZvbnRfbWF0cml4OworICAgICAgZm9udF9vZmZzZXQgPSBjZmYtPnN1YmZvbnRzW2ZkX2luZGV4XS0+Zm9udF9kaWN0LmZvbnRfb2Zmc2V0OworCisgICAgICBpZiAoIHRvcF91cG0gIT0gc3ViX3VwbSApCisgICAgICB7CisgICAgICAgIGdseXBoLT54X3NjYWxlID0gRlRfTXVsRGl2KCBnbHlwaC0+eF9zY2FsZSwgdG9wX3VwbSwgc3ViX3VwbSApOworICAgICAgICBnbHlwaC0+eV9zY2FsZSA9IEZUX011bERpdiggZ2x5cGgtPnlfc2NhbGUsIHRvcF91cG0sIHN1Yl91cG0gKTsKKworICAgICAgICBmb3JjZV9zY2FsaW5nID0gVFJVRTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGZvbnRfbWF0cml4ID0gY2ZmLT50b3BfZm9udC5mb250X2RpY3QuZm9udF9tYXRyaXg7CisgICAgICBmb250X29mZnNldCA9IGNmZi0+dG9wX2ZvbnQuZm9udF9kaWN0LmZvbnRfb2Zmc2V0OworICAgIH0KKworICAgIGdseXBoLT5yb290Lm91dGxpbmUubl9wb2ludHMgICA9IDA7CisgICAgZ2x5cGgtPnJvb3Qub3V0bGluZS5uX2NvbnRvdXJzID0gMDsKKworICAgIC8qIHRvcC1sZXZlbCBjb2RlIGVuc3VyZXMgdGhhdCBGVF9MT0FEX05PX0hJTlRJTkcgaXMgc2V0ICovCisgICAgLyogaWYgRlRfTE9BRF9OT19TQ0FMRSBpcyBhY3RpdmUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBoaW50aW5nID0gRlRfQk9PTCggKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19ISU5USU5HICkgPT0gMCApOworICAgIHNjYWxlZCAgPSBGVF9CT09MKCAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX1NDQUxFICAgKSA9PSAwICk7CisKKyAgICBnbHlwaC0+aGludCAgICAgICAgPSBoaW50aW5nOworICAgIGdseXBoLT5zY2FsZWQgICAgICA9IHNjYWxlZDsKKyAgICBnbHlwaC0+cm9vdC5mb3JtYXQgPSBGVF9HTFlQSF9GT1JNQVRfT1VUTElORTsgIC8qIGJ5IGRlZmF1bHQgKi8KKworICAgIHsKKyNpZmRlZiBDRkZfQ09ORklHX09QVElPTl9PTERfRU5HSU5FCisgICAgICBDRkZfRHJpdmVyICBkcml2ZXIgPSAoQ0ZGX0RyaXZlcilGVF9GQUNFX0RSSVZFUiggZmFjZSApOworI2VuZGlmCisKKworICAgICAgRlRfQnl0ZSogIGNoYXJzdHJpbmc7CisgICAgICBGVF9VTG9uZyAgY2hhcnN0cmluZ19sZW47CisKKworICAgICAgY2ZmX2RlY29kZXJfaW5pdCggJmRlY29kZXIsIGZhY2UsIHNpemUsIGdseXBoLCBoaW50aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfTE9BRF9UQVJHRVRfTU9ERSggbG9hZF9mbGFncyApICk7CisKKyAgICAgIGlmICggbG9hZF9mbGFncyAmIEZUX0xPQURfQURWQU5DRV9PTkxZICkKKyAgICAgICAgZGVjb2Rlci53aWR0aF9vbmx5ID0gVFJVRTsKKworICAgICAgZGVjb2Rlci5idWlsZGVyLm5vX3JlY3Vyc2UgPQorICAgICAgICAoRlRfQm9vbCkoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX1JFQ1VSU0UgKTsKKworICAgICAgLyogbm93IGxvYWQgdGhlIHVuc2NhbGVkIG91dGxpbmUgKi8KKyAgICAgIGVycm9yID0gY2ZmX2dldF9nbHlwaF9kYXRhKCBmYWNlLCBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hhcnN0cmluZywgJmNoYXJzdHJpbmdfbGVuICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBHbHlwaF9CdWlsZF9GaW5pc2hlZDsKKworICAgICAgZXJyb3IgPSBjZmZfZGVjb2Rlcl9wcmVwYXJlKCAmZGVjb2Rlciwgc2l6ZSwgZ2x5cGhfaW5kZXggKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEdseXBoX0J1aWxkX0ZpbmlzaGVkOworCisjaWZkZWYgQ0ZGX0NPTkZJR19PUFRJT05fT0xEX0VOR0lORQorICAgICAgLyogY2hvb3NlIHdoaWNoIENGRiByZW5kZXJlciB0byB1c2UgKi8KKyAgICAgIGlmICggZHJpdmVyLT5oaW50aW5nX2VuZ2luZSA9PSBGVF9DRkZfSElOVElOR19GUkVFVFlQRSApCisgICAgICAgIGVycm9yID0gY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MoICZkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc3RyaW5nX2xlbiApOworICAgICAgZWxzZQorI2VuZGlmCisgICAgICB7CisgICAgICAgIGVycm9yID0gY2YyX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MoICZkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc3RyaW5nX2xlbiApOworCisgICAgICAgIC8qIEFkb2JlJ3MgZW5naW5lIHVzZXMgMTYuMTYgbnVtYmVycyBldmVyeXdoZXJlOyAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogYXMgYSBjb25zZXF1ZW5jZSwgZ2x5cGhzIGxhcmdlciB0aGFuIDIwMDBwcGVtIGdldCByZWplY3RlZCAqLworICAgICAgICBpZiAoIEZUX0VSUl9FUSggZXJyb3IsIEdseXBoX1Rvb19CaWcgKSApCisgICAgICAgIHsKKyAgICAgICAgICAvKiB0aGlzIHRpbWUsIHdlIHJldHJ5IHVuaGludGVkIGFuZCBzY2FsZSB1cCB0aGUgZ2x5cGggbGF0ZXIgb24gKi8KKyAgICAgICAgICAvKiAodGhlIGVuZ2luZSB1c2VzIGFuZCBzZXRzIHRoZSBoYXJkY29kZWQgdmFsdWUgMHgxMDAwMCAvIDY0ID0gKi8KKyAgICAgICAgICAvKiAweDQwMCBmb3IgYm90aCBgeF9zY2FsZScgYW5kIGB5X3NjYWxlJyBpbiB0aGlzIGNhc2UpICAgICAgICAgKi8KKyAgICAgICAgICBoaW50aW5nICAgICAgID0gRkFMU0U7CisgICAgICAgICAgZm9yY2Vfc2NhbGluZyA9IFRSVUU7CisgICAgICAgICAgZ2x5cGgtPmhpbnQgICA9IGhpbnRpbmc7CisKKyAgICAgICAgICBlcnJvciA9IGNmMl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKCAmZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzdHJpbmdfbGVuICk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgY2ZmX2ZyZWVfZ2x5cGhfZGF0YSggZmFjZSwgJmNoYXJzdHJpbmcsIGNoYXJzdHJpbmdfbGVuICk7CisKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEdseXBoX0J1aWxkX0ZpbmlzaGVkOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorICAgICAgLyogQ29udHJvbCBkYXRhIGFuZCBsZW5ndGggbWF5IG5vdCBiZSBhdmFpbGFibGUgZm9yIGluY3JlbWVudGFsICovCisgICAgICAvKiBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGlmICggZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlICkKKyAgICAgIHsKKyAgICAgICAgZ2x5cGgtPnJvb3QuY29udHJvbF9kYXRhID0gMDsKKyAgICAgICAgZ2x5cGgtPnJvb3QuY29udHJvbF9sZW4gPSAwOworICAgICAgfQorICAgICAgZWxzZQorI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KKworICAgICAgLyogV2Ugc2V0IGNvbnRyb2xfZGF0YSBhbmQgY29udHJvbF9sZW4gaWYgY2hhcnN0cmluZ3MgaXMgbG9hZGVkLiAqLworICAgICAgLyogU2VlIGhvdyBjaGFyc3RyaW5nIGxvYWRzIGF0IGNmZl9pbmRleF9hY2Nlc3NfZWxlbWVudCgpIGluICAgICAqLworICAgICAgLyogY2ZmbG9hZC5jLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgeworICAgICAgICBDRkZfSW5kZXggIGNzaW5kZXggPSAmY2ZmLT5jaGFyc3RyaW5nc19pbmRleDsKKworCisgICAgICAgIGlmICggY3NpbmRleC0+b2Zmc2V0cyApCisgICAgICAgIHsKKyAgICAgICAgICBnbHlwaC0+cm9vdC5jb250cm9sX2RhdGEgPSBjc2luZGV4LT5ieXRlcyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NpbmRleC0+b2Zmc2V0c1tnbHlwaF9pbmRleF0gLSAxOworICAgICAgICAgIGdseXBoLT5yb290LmNvbnRyb2xfbGVuICA9IGNoYXJzdHJpbmdfbGVuOworICAgICAgICB9CisgICAgICB9CisKKyAgR2x5cGhfQnVpbGRfRmluaXNoZWQ6CisgICAgICAvKiBzYXZlIG5ldyBnbHlwaCB0YWJsZXMsIGlmIG5vIGVycm9yICovCisgICAgICBpZiAoICFlcnJvciApCisgICAgICAgIGNmZl9idWlsZGVyX2RvbmUoICZkZWNvZGVyLmJ1aWxkZXIgKTsKKyAgICAgIC8qIFhYWDogYW55dGhpbmcgdG8gZG8gZm9yIGJyb2tlbiBnbHlwaCBlbnRyeT8gKi8KKyAgICB9CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisKKyAgICAvKiBJbmNyZW1lbnRhbCBmb250cyBjYW4gb3B0aW9uYWxseSBvdmVycmlkZSB0aGUgbWV0cmljcy4gKi8KKyAgICBpZiAoICFlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5mdW5jcy0+Z2V0X2dseXBoX21ldHJpY3MgKQorICAgIHsKKyAgICAgIEZUX0luY3JlbWVudGFsX01ldHJpY3NSZWMgIG1ldHJpY3M7CisKKworICAgICAgbWV0cmljcy5iZWFyaW5nX3ggPSBkZWNvZGVyLmJ1aWxkZXIubGVmdF9iZWFyaW5nLng7CisgICAgICBtZXRyaWNzLmJlYXJpbmdfeSA9IDA7CisgICAgICBtZXRyaWNzLmFkdmFuY2UgICA9IGRlY29kZXIuYnVpbGRlci5hZHZhbmNlLng7CisgICAgICBtZXRyaWNzLmFkdmFuY2VfdiA9IGRlY29kZXIuYnVpbGRlci5hZHZhbmNlLnk7CisKKyAgICAgIGVycm9yID0gZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5mdW5jcy0+Z2V0X2dseXBoX21ldHJpY3MoCisgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5vYmplY3QsCisgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsIEZBTFNFLCAmbWV0cmljcyApOworCisgICAgICBkZWNvZGVyLmJ1aWxkZXIubGVmdF9iZWFyaW5nLnggPSBtZXRyaWNzLmJlYXJpbmdfeDsKKyAgICAgIGRlY29kZXIuYnVpbGRlci5hZHZhbmNlLnggICAgICA9IG1ldHJpY3MuYWR2YW5jZTsKKyAgICAgIGRlY29kZXIuYnVpbGRlci5hZHZhbmNlLnkgICAgICA9IG1ldHJpY3MuYWR2YW5jZV92OworICAgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KKworICAgIGlmICggIWVycm9yICkKKyAgICB7CisgICAgICAvKiBOb3csIHNldCB0aGUgbWV0cmljcyAtLSB0aGlzIGlzIHJhdGhlciBzaW1wbGUsIGFzICAgKi8KKyAgICAgIC8qIHRoZSBsZWZ0IHNpZGUgYmVhcmluZyBpcyB0aGUgeE1pbiwgYW5kIHRoZSB0b3Agc2lkZSAqLworICAgICAgLyogYmVhcmluZyB0aGUgeU1heC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIC8qIEZvciBjb21wb3NpdGUgZ2x5cGhzLCByZXR1cm4gb25seSBsZWZ0IHNpZGUgYmVhcmluZyBhbmQgKi8KKyAgICAgIC8qIGFkdmFuY2Ugd2lkdGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGlmICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fUkVDVVJTRSApCisgICAgICB7CisgICAgICAgIEZUX1Nsb3RfSW50ZXJuYWwgIGludGVybmFsID0gZ2x5cGgtPnJvb3QuaW50ZXJuYWw7CisKKworICAgICAgICBnbHlwaC0+cm9vdC5tZXRyaWNzLmhvcmlCZWFyaW5nWCA9IGRlY29kZXIuYnVpbGRlci5sZWZ0X2JlYXJpbmcueDsKKyAgICAgICAgZ2x5cGgtPnJvb3QubWV0cmljcy5ob3JpQWR2YW5jZSAgPSBkZWNvZGVyLmdseXBoX3dpZHRoOworICAgICAgICBpbnRlcm5hbC0+Z2x5cGhfbWF0cml4ICAgICAgICAgICA9IGZvbnRfbWF0cml4OworICAgICAgICBpbnRlcm5hbC0+Z2x5cGhfZGVsdGEgICAgICAgICAgICA9IGZvbnRfb2Zmc2V0OworICAgICAgICBpbnRlcm5hbC0+Z2x5cGhfdHJhbnNmb3JtZWQgICAgICA9IDE7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIEZUX0JCb3ggICAgICAgICAgICBjYm94OworICAgICAgICBGVF9HbHlwaF9NZXRyaWNzKiAgbWV0cmljcyA9ICZnbHlwaC0+cm9vdC5tZXRyaWNzOworICAgICAgICBGVF9WZWN0b3IgICAgICAgICAgYWR2YW5jZTsKKyAgICAgICAgRlRfQm9vbCAgICAgICAgICAgIGhhc192ZXJ0aWNhbF9pbmZvOworCisKKyAgICAgICAgLyogY29weSB0aGUgX3Vuc2NhbGVkXyBhZHZhbmNlIHdpZHRoICovCisgICAgICAgIG1ldHJpY3MtPmhvcmlBZHZhbmNlICAgICAgICAgICAgICAgICAgICA9IGRlY29kZXIuZ2x5cGhfd2lkdGg7CisgICAgICAgIGdseXBoLT5yb290LmxpbmVhckhvcmlBZHZhbmNlICAgICAgICAgICA9IGRlY29kZXIuZ2x5cGhfd2lkdGg7CisgICAgICAgIGdseXBoLT5yb290LmludGVybmFsLT5nbHlwaF90cmFuc2Zvcm1lZCA9IDA7CisKKyAgICAgICAgaGFzX3ZlcnRpY2FsX2luZm8gPSBGVF9CT09MKCBmYWNlLT52ZXJ0aWNhbF9pbmZvICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+dmVydGljYWwubnVtYmVyX09mX1ZNZXRyaWNzID4gMCApOworCisgICAgICAgIC8qIGdldCB0aGUgdmVydGljYWwgbWV0cmljcyBmcm9tIHRoZSB2dG14IHRhYmxlIGlmIHdlIGhhdmUgb25lICovCisgICAgICAgIGlmICggaGFzX3ZlcnRpY2FsX2luZm8gKQorICAgICAgICB7CisgICAgICAgICAgRlRfU2hvcnQgICB2ZXJ0QmVhcmluZ1kgPSAwOworICAgICAgICAgIEZUX1VTaG9ydCAgdmVydEFkdmFuY2UgID0gMDsKKworCisgICAgICAgICAgKCAoU0ZOVF9TZXJ2aWNlKWZhY2UtPnNmbnQgKS0+Z2V0X21ldHJpY3MoIGZhY2UsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmVydEJlYXJpbmdZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmVydEFkdmFuY2UgKTsKKyAgICAgICAgICBtZXRyaWNzLT52ZXJ0QmVhcmluZ1kgPSB2ZXJ0QmVhcmluZ1k7CisgICAgICAgICAgbWV0cmljcy0+dmVydEFkdmFuY2UgID0gdmVydEFkdmFuY2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogbWFrZSB1cCB2ZXJ0aWNhbCBvbmVzICovCisgICAgICAgICAgaWYgKCBmYWNlLT5vczIudmVyc2lvbiAhPSAweEZGRkZVICkKKyAgICAgICAgICAgIG1ldHJpY3MtPnZlcnRBZHZhbmNlID0gKEZUX1BvcykoIGZhY2UtPm9zMi5zVHlwb0FzY2VuZGVyIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPm9zMi5zVHlwb0Rlc2NlbmRlciApOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1ldHJpY3MtPnZlcnRBZHZhbmNlID0gKEZUX1BvcykoIGZhY2UtPmhvcml6b250YWwuQXNjZW5kZXIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+aG9yaXpvbnRhbC5EZXNjZW5kZXIgKTsKKyAgICAgICAgfQorCisgICAgICAgIGdseXBoLT5yb290LmxpbmVhclZlcnRBZHZhbmNlID0gbWV0cmljcy0+dmVydEFkdmFuY2U7CisKKyAgICAgICAgZ2x5cGgtPnJvb3QuZm9ybWF0ID0gRlRfR0xZUEhfRk9STUFUX09VVExJTkU7CisKKyAgICAgICAgZ2x5cGgtPnJvb3Qub3V0bGluZS5mbGFncyA9IDA7CisgICAgICAgIGlmICggc2l6ZSAmJiBzaXplLT5yb290Lm1ldHJpY3MueV9wcGVtIDwgMjQgKQorICAgICAgICAgIGdseXBoLT5yb290Lm91dGxpbmUuZmxhZ3MgfD0gRlRfT1VUTElORV9ISUdIX1BSRUNJU0lPTjsKKworICAgICAgICBnbHlwaC0+cm9vdC5vdXRsaW5lLmZsYWdzIHw9IEZUX09VVExJTkVfUkVWRVJTRV9GSUxMOworCisgICAgICAgIGlmICggISggZm9udF9tYXRyaXgueHggPT0gMHgxMDAwMEwgJiYKKyAgICAgICAgICAgICAgICBmb250X21hdHJpeC55eSA9PSAweDEwMDAwTCAmJgorICAgICAgICAgICAgICAgIGZvbnRfbWF0cml4Lnh5ID09IDAgICAgICAgICYmCisgICAgICAgICAgICAgICAgZm9udF9tYXRyaXgueXggPT0gMCAgICAgICAgKSApCisgICAgICAgICAgRlRfT3V0bGluZV9UcmFuc2Zvcm0oICZnbHlwaC0+cm9vdC5vdXRsaW5lLCAmZm9udF9tYXRyaXggKTsKKworICAgICAgICBpZiAoICEoIGZvbnRfb2Zmc2V0LnggPT0gMCAmJgorICAgICAgICAgICAgICAgIGZvbnRfb2Zmc2V0LnkgPT0gMCApICkKKyAgICAgICAgICBGVF9PdXRsaW5lX1RyYW5zbGF0ZSggJmdseXBoLT5yb290Lm91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRfb2Zmc2V0LngsIGZvbnRfb2Zmc2V0LnkgKTsKKworICAgICAgICBhZHZhbmNlLnggPSBtZXRyaWNzLT5ob3JpQWR2YW5jZTsKKyAgICAgICAgYWR2YW5jZS55ID0gMDsKKyAgICAgICAgRlRfVmVjdG9yX1RyYW5zZm9ybSggJmFkdmFuY2UsICZmb250X21hdHJpeCApOworICAgICAgICBtZXRyaWNzLT5ob3JpQWR2YW5jZSA9IGFkdmFuY2UueCArIGZvbnRfb2Zmc2V0Lng7CisKKyAgICAgICAgYWR2YW5jZS54ID0gMDsKKyAgICAgICAgYWR2YW5jZS55ID0gbWV0cmljcy0+dmVydEFkdmFuY2U7CisgICAgICAgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0oICZhZHZhbmNlLCAmZm9udF9tYXRyaXggKTsKKyAgICAgICAgbWV0cmljcy0+dmVydEFkdmFuY2UgPSBhZHZhbmNlLnkgKyBmb250X29mZnNldC55OworCisgICAgICAgIGlmICggKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19TQ0FMRSApID09IDAgfHwgZm9yY2Vfc2NhbGluZyApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBzY2FsZSB0aGUgb3V0bGluZSBhbmQgdGhlIG1ldHJpY3MgKi8KKyAgICAgICAgICBGVF9JbnQgICAgICAgbjsKKyAgICAgICAgICBGVF9PdXRsaW5lKiAgY3VyICAgICA9ICZnbHlwaC0+cm9vdC5vdXRsaW5lOworICAgICAgICAgIEZUX1ZlY3RvciogICB2ZWMgICAgID0gY3VyLT5wb2ludHM7CisgICAgICAgICAgRlRfRml4ZWQgICAgIHhfc2NhbGUgPSBnbHlwaC0+eF9zY2FsZTsKKyAgICAgICAgICBGVF9GaXhlZCAgICAgeV9zY2FsZSA9IGdseXBoLT55X3NjYWxlOworCisKKyAgICAgICAgICAvKiBGaXJzdCBvZiBhbGwsIHNjYWxlIHRoZSBwb2ludHMgKi8KKyAgICAgICAgICBpZiAoICFoaW50aW5nIHx8ICFkZWNvZGVyLmJ1aWxkZXIuaGludHNfZnVuY3MgKQorICAgICAgICAgICAgZm9yICggbiA9IGN1ci0+bl9wb2ludHM7IG4gPiAwOyBuLS0sIHZlYysrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgdmVjLT54ID0gRlRfTXVsRml4KCB2ZWMtPngsIHhfc2NhbGUgKTsKKyAgICAgICAgICAgICAgdmVjLT55ID0gRlRfTXVsRml4KCB2ZWMtPnksIHlfc2NhbGUgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIC8qIFRoZW4gc2NhbGUgdGhlIG1ldHJpY3MgKi8KKyAgICAgICAgICBtZXRyaWNzLT5ob3JpQWR2YW5jZSA9IEZUX011bEZpeCggbWV0cmljcy0+aG9yaUFkdmFuY2UsIHhfc2NhbGUgKTsKKyAgICAgICAgICBtZXRyaWNzLT52ZXJ0QWR2YW5jZSA9IEZUX011bEZpeCggbWV0cmljcy0+dmVydEFkdmFuY2UsIHlfc2NhbGUgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGNvbXB1dGUgdGhlIG90aGVyIG1ldHJpY3MgKi8KKyAgICAgICAgRlRfT3V0bGluZV9HZXRfQ0JveCggJmdseXBoLT5yb290Lm91dGxpbmUsICZjYm94ICk7CisKKyAgICAgICAgbWV0cmljcy0+d2lkdGggID0gY2JveC54TWF4IC0gY2JveC54TWluOworICAgICAgICBtZXRyaWNzLT5oZWlnaHQgPSBjYm94LnlNYXggLSBjYm94LnlNaW47CisKKyAgICAgICAgbWV0cmljcy0+aG9yaUJlYXJpbmdYID0gY2JveC54TWluOworICAgICAgICBtZXRyaWNzLT5ob3JpQmVhcmluZ1kgPSBjYm94LnlNYXg7CisKKyAgICAgICAgaWYgKCBoYXNfdmVydGljYWxfaW5mbyApCisgICAgICAgICAgbWV0cmljcy0+dmVydEJlYXJpbmdYID0gbWV0cmljcy0+aG9yaUJlYXJpbmdYIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3MtPmhvcmlBZHZhbmNlIC8gMjsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgKQorICAgICAgICAgICAgZnRfc3ludGhlc2l6ZV92ZXJ0aWNhbF9tZXRyaWNzKCBtZXRyaWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLT52ZXJ0QWR2YW5jZSApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZnbG9hZC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmZ2xvYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODZiYmExCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmZ2xvYWQuaApAQCAtMCwwICsxLDI0MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2ZmZ2xvYWQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIE9wZW5UeXBlIEdseXBoIExvYWRlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDQsIDIwMDYtMjAwOSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fQ0ZGR0xPQURfSF9fCisjZGVmaW5lIF9fQ0ZGR0xPQURfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiCisjaW5jbHVkZSAiY2Zmb2Jqcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNkZWZpbmUgQ0ZGX01BWF9PUEVSQU5EUyAgICAgICAgNDgKKyNkZWZpbmUgQ0ZGX01BWF9TVUJSU19DQUxMUyAgICAgMzIKKyNkZWZpbmUgQ0ZGX01BWF9UUkFOU19FTEVNRU5UUyAgMzIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdHVyZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENGRl9CdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBBIHN0cnVjdHVyZSB1c2VkIGR1cmluZyBnbHlwaCBsb2FkaW5nIHRvIHN0b3JlIGl0cyBvdXRsaW5lLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSAgICAgICAgOjogVGhlIGN1cnJlbnQgbWVtb3J5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgICA6OiBUaGUgY3VycmVudCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaCAgICAgICAgIDo6IFRoZSBjdXJyZW50IGdseXBoIHNsb3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRlciAgICAgICAgOjogVGhlIGN1cnJlbnQgZ2x5cGggbG9hZGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmFzZSAgICAgICAgICA6OiBUaGUgYmFzZSBnbHlwaCBvdXRsaW5lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjdXJyZW50ICAgICAgIDo6IFRoZSBjdXJyZW50IGdseXBoIG91dGxpbmUuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBvc194ICAgICAgICAgOjogVGhlIGhvcml6b250YWwgdHJhbnNsYXRpb24gKGlmIGNvbXBvc2l0ZSBnbHlwaCkuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcG9zX3kgICAgICAgICA6OiBUaGUgdmVydGljYWwgdHJhbnNsYXRpb24gKGlmIGNvbXBvc2l0ZSBnbHlwaCkuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsZWZ0X2JlYXJpbmcgIDo6IFRoZSBsZWZ0IHNpZGUgYmVhcmluZyBwb2ludC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFkdmFuY2UgICAgICAgOjogVGhlIGhvcml6b250YWwgYWR2YW5jZSB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmJveCAgICAgICAgICA6OiBVbnVzZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwYXRoX2JlZ3VuICAgIDo6IEEgZmxhZyB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIG5ldyBwYXRoIGhhcyBiZWd1bi4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRfcG9pbnRzICAgOjogSWYgdGhpcyBmbGFnIGlzIG5vdCBzZXQsIG5vIHBvaW50cyBhcmUgbG9hZGVkLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbm9fcmVjdXJzZSAgICA6OiBTZXQgYnV0IG5vdCB1c2VkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtZXRyaWNzX29ubHkgIDo6IEEgYm9vbGVhbiBpbmRpY2F0aW5nIHRoYXQgd2Ugb25seSB3YW50IHRvIGNvbXB1dGUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICB0aGUgbWV0cmljcyBvZiBhIGdpdmVuIGdseXBoLCBub3QgbG9hZCBhbGwgb2YgaXRzICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGludHNfZnVuY3MgICA6OiBBdXhpbGlhcnkgcG9pbnRlciBmb3IgaGludGluZy4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBoaW50c19nbG9iYWxzIDo6IEF1eGlsaWFyeSBwb2ludGVyIGZvciBoaW50aW5nLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBDRkZfQnVpbGRlcl8KKyAgeworICAgIEZUX01lbW9yeSAgICAgICBtZW1vcnk7CisgICAgVFRfRmFjZSAgICAgICAgIGZhY2U7CisgICAgQ0ZGX0dseXBoU2xvdCAgIGdseXBoOworICAgIEZUX0dseXBoTG9hZGVyICBsb2FkZXI7CisgICAgRlRfT3V0bGluZSogICAgIGJhc2U7CisgICAgRlRfT3V0bGluZSogICAgIGN1cnJlbnQ7CisKKyAgICBGVF9Qb3MgICAgICAgICAgcG9zX3g7CisgICAgRlRfUG9zICAgICAgICAgIHBvc195OworCisgICAgRlRfVmVjdG9yICAgICAgIGxlZnRfYmVhcmluZzsKKyAgICBGVF9WZWN0b3IgICAgICAgYWR2YW5jZTsKKworICAgIEZUX0JCb3ggICAgICAgICBiYm94OyAgICAgICAgICAvKiBib3VuZGluZyBib3ggKi8KKyAgICBGVF9Cb29sICAgICAgICAgcGF0aF9iZWd1bjsKKyAgICBGVF9Cb29sICAgICAgICAgbG9hZF9wb2ludHM7CisgICAgRlRfQm9vbCAgICAgICAgIG5vX3JlY3Vyc2U7CisKKyAgICBGVF9Cb29sICAgICAgICAgbWV0cmljc19vbmx5OworCisgICAgdm9pZCogICAgICAgICAgIGhpbnRzX2Z1bmNzOyAgICAvKiBoaW50ZXItc3BlY2lmaWMgKi8KKyAgICB2b2lkKiAgICAgICAgICAgaGludHNfZ2xvYmFsczsgIC8qIGhpbnRlci1zcGVjaWZpYyAqLworCisgIH0gQ0ZGX0J1aWxkZXI7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjZmZfY2hlY2tfcG9pbnRzKCBDRkZfQnVpbGRlciogIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgY291bnQgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNmZl9idWlsZGVyX2FkZF9wb2ludCggQ0ZGX0J1aWxkZXIqICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgIHksCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSAgICAgICBmbGFnICk7CisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNmZl9idWlsZGVyX2FkZF9wb2ludDEoIENGRl9CdWlsZGVyKiAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICAgIHkgKTsKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgY2ZmX2J1aWxkZXJfc3RhcnRfcG9pbnQoIENGRl9CdWlsZGVyKiAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgICAgeSApOworICBGVF9MT0NBTCggdm9pZCApCisgIGNmZl9idWlsZGVyX2Nsb3NlX2NvbnRvdXIoIENGRl9CdWlsZGVyKiAgYnVpbGRlciApOworCisKKyAgRlRfTE9DQUwoIEZUX0ludCApCisgIGNmZl9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUoIENGRl9Gb250ICBjZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICBjaGFyY29kZSApOworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjZmZfZ2V0X2dseXBoX2RhdGEoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqKiAgcG9pbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogIGxlbmd0aCApOworICBGVF9MT0NBTCggdm9pZCApCisgIGNmZl9mcmVlX2dseXBoX2RhdGEoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSoqICBwb2ludGVyLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIGxlbmd0aCApOworCisKKyAgLyogZXhlY3V0aW9uIGNvbnRleHQgY2hhcnN0cmluZyB6b25lICovCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIENGRl9EZWNvZGVyX1pvbmVfCisgIHsKKyAgICBGVF9CeXRlKiAgYmFzZTsKKyAgICBGVF9CeXRlKiAgbGltaXQ7CisgICAgRlRfQnl0ZSogIGN1cnNvcjsKKworICB9IENGRl9EZWNvZGVyX1pvbmU7CisKKworICB0eXBlZGVmIHN0cnVjdCAgQ0ZGX0RlY29kZXJfCisgIHsKKyAgICBDRkZfQnVpbGRlciAgICAgICAgYnVpbGRlcjsKKyAgICBDRkZfRm9udCAgICAgICAgICAgY2ZmOworCisgICAgRlRfRml4ZWQgICAgICAgICAgIHN0YWNrW0NGRl9NQVhfT1BFUkFORFMgKyAxXTsKKyAgICBGVF9GaXhlZCogICAgICAgICAgdG9wOworCisgICAgQ0ZGX0RlY29kZXJfWm9uZSAgIHpvbmVzW0NGRl9NQVhfU1VCUlNfQ0FMTFMgKyAxXTsKKyAgICBDRkZfRGVjb2Rlcl9ab25lKiAgem9uZTsKKworICAgIEZUX0ludCAgICAgICAgICAgICBmbGV4X3N0YXRlOworICAgIEZUX0ludCAgICAgICAgICAgICBudW1fZmxleF92ZWN0b3JzOworICAgIEZUX1ZlY3RvciAgICAgICAgICBmbGV4X3ZlY3RvcnNbN107CisKKyAgICBGVF9Qb3MgICAgICAgICAgICAgZ2x5cGhfd2lkdGg7CisgICAgRlRfUG9zICAgICAgICAgICAgIG5vbWluYWxfd2lkdGg7CisKKyAgICBGVF9Cb29sICAgICAgICAgICAgcmVhZF93aWR0aDsKKyAgICBGVF9Cb29sICAgICAgICAgICAgd2lkdGhfb25seTsKKyAgICBGVF9JbnQgICAgICAgICAgICAgbnVtX2hpbnRzOworICAgIEZUX0ZpeGVkICAgICAgICAgICBidWlsZGNoYXJbQ0ZGX01BWF9UUkFOU19FTEVNRU5UU107CisKKyAgICBGVF9VSW50ICAgICAgICAgICAgbnVtX2xvY2FsczsKKyAgICBGVF9VSW50ICAgICAgICAgICAgbnVtX2dsb2JhbHM7CisKKyAgICBGVF9JbnQgICAgICAgICAgICAgbG9jYWxzX2JpYXM7CisgICAgRlRfSW50ICAgICAgICAgICAgIGdsb2JhbHNfYmlhczsKKworICAgIEZUX0J5dGUqKiAgICAgICAgICBsb2NhbHM7CisgICAgRlRfQnl0ZSoqICAgICAgICAgIGdsb2JhbHM7CisKKyAgICBGVF9CeXRlKiogICAgICAgICAgZ2x5cGhfbmFtZXM7ICAgLyogZm9yIHB1cmUgQ0ZGIGZvbnRzIG9ubHkgICovCisgICAgRlRfVUludCAgICAgICAgICAgIG51bV9nbHlwaHM7ICAgIC8qIG51bWJlciBvZiBnbHlwaHMgaW4gZm9udCAqLworCisgICAgRlRfUmVuZGVyX01vZGUgICAgIGhpbnRfbW9kZTsKKworICAgIEZUX0Jvb2wgICAgICAgICAgICBzZWFjOworCisgICAgQ0ZGX1N1YkZvbnQgICAgICAgIGN1cnJlbnRfc3ViZm9udDsgLyogZm9yIGN1cnJlbnQgZ2x5cGhfaW5kZXggKi8KKworICB9IENGRl9EZWNvZGVyOworCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZmZfZGVjb2Rlcl9pbml0KCBDRkZfRGVjb2RlciogICAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgVFRfRmFjZSAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIENGRl9TaXplICAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgICBDRkZfR2x5cGhTbG90ICAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICAgIGhpbnRpbmcsCisgICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcl9Nb2RlICBoaW50X21vZGUgKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjZmZfZGVjb2Rlcl9wcmVwYXJlKCBDRkZfRGVjb2RlciogIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgIENGRl9TaXplICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaF9pbmRleCApOworCisjaWYgMCAgLyogdW51c2VkIHVudGlsIHdlIHN1cHBvcnQgcHVyZSBDRkYgZm9udHMgKi8KKworICAvKiBDb21wdXRlIHRoZSBtYXhpbXVtIGFkdmFuY2Ugd2lkdGggb2YgYSBmb250IHRocm91Z2ggcXVpY2sgcGFyc2luZyAqLworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjZmZfY29tcHV0ZV9tYXhfYWR2YW5jZSggVFRfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCogIG1heF9hZHZhbmNlICk7CisKKyNlbmRpZiAvKiAwICovCisKKyNpZmRlZiBDRkZfQ09ORklHX09QVElPTl9PTERfRU5HSU5FCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKCBDRkZfRGVjb2RlciogIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgICAgIGNoYXJzdHJpbmdfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgY2hhcnN0cmluZ19sZW4gKTsKKyNlbmRpZgorCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNmZl9zbG90X2xvYWQoIENGRl9HbHlwaFNsb3QgIGdseXBoLAorICAgICAgICAgICAgICAgICBDRkZfU2l6ZSAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgRlRfSW50MzIgICAgICAgbG9hZF9mbGFncyApOworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fQ0ZGR0xPQURfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZsb2FkLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZsb2FkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU1Y2Q5ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmxvYWQuYwpAQCAtMCwwICsxLDE2OTYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmZmxvYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBPcGVuVHlwZSBhbmQgQ0ZGIGRhdGEvcHJvZ3JhbSB0YWJsZXMgbG9hZGVyIChib2R5KS4gICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCIKKworI2luY2x1ZGUgImNmZmxvYWQuaCIKKyNpbmNsdWRlICJjZmZwYXJzZS5oIgorCisjaW5jbHVkZSAiY2ZmZXJycy5oIgorCisKKyNpZiAxCisKKyAgc3RhdGljIGNvbnN0IEZUX1VTaG9ydCAgY2ZmX2lzb2Fkb2JlX2NoYXJzZXRbMjI5XSA9CisgIHsKKyAgICAgIDAsICAgMSwgICAyLCAgIDMsICAgNCwgICA1LCAgIDYsICAgNywKKyAgICAgIDgsICAgOSwgIDEwLCAgMTEsICAxMiwgIDEzLCAgMTQsICAxNSwKKyAgICAgMTYsICAxNywgIDE4LCAgMTksICAyMCwgIDIxLCAgMjIsICAyMywKKyAgICAgMjQsICAyNSwgIDI2LCAgMjcsICAyOCwgIDI5LCAgMzAsICAzMSwKKyAgICAgMzIsICAzMywgIDM0LCAgMzUsICAzNiwgIDM3LCAgMzgsICAzOSwKKyAgICAgNDAsICA0MSwgIDQyLCAgNDMsICA0NCwgIDQ1LCAgNDYsICA0NywKKyAgICAgNDgsICA0OSwgIDUwLCAgNTEsICA1MiwgIDUzLCAgNTQsICA1NSwKKyAgICAgNTYsICA1NywgIDU4LCAgNTksICA2MCwgIDYxLCAgNjIsICA2MywKKyAgICAgNjQsICA2NSwgIDY2LCAgNjcsICA2OCwgIDY5LCAgNzAsICA3MSwKKyAgICAgNzIsICA3MywgIDc0LCAgNzUsICA3NiwgIDc3LCAgNzgsICA3OSwKKyAgICAgODAsICA4MSwgIDgyLCAgODMsICA4NCwgIDg1LCAgODYsICA4NywKKyAgICAgODgsICA4OSwgIDkwLCAgOTEsICA5MiwgIDkzLCAgOTQsICA5NSwKKyAgICAgOTYsICA5NywgIDk4LCAgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywKKyAgICAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDExMSwKKyAgICAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwKKyAgICAxMjAsIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywKKyAgICAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwKKyAgICAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywKKyAgICAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwKKyAgICAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwKKyAgICAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywKKyAgICAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwKKyAgICAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywKKyAgICAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwKKyAgICAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwKKyAgICAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywKKyAgICAyMDgsIDIwOSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwKKyAgICAyMTYsIDIxNywgMjE4LCAyMTksIDIyMCwgMjIxLCAyMjIsIDIyMywKKyAgICAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOAorICB9OworCisgIHN0YXRpYyBjb25zdCBGVF9VU2hvcnQgIGNmZl9leHBlcnRfY2hhcnNldFsxNjZdID0KKyAgeworICAgICAgMCwgICAxLCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywgMjM0LAorICAgIDIzNSwgMjM2LCAyMzcsIDIzOCwgIDEzLCAgMTQsICAxNSwgIDk5LAorICAgIDIzOSwgMjQwLCAyNDEsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMjQ2LAorICAgIDI0NywgMjQ4LCAgMjcsICAyOCwgMjQ5LCAyNTAsIDI1MSwgMjUyLAorICAgIDI1MywgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjYwLAorICAgIDI2MSwgMjYyLCAyNjMsIDI2NCwgMjY1LCAyNjYsIDEwOSwgMTEwLAorICAgIDI2NywgMjY4LCAyNjksIDI3MCwgMjcxLCAyNzIsIDI3MywgMjc0LAorICAgIDI3NSwgMjc2LCAyNzcsIDI3OCwgMjc5LCAyODAsIDI4MSwgMjgyLAorICAgIDI4MywgMjg0LCAyODUsIDI4NiwgMjg3LCAyODgsIDI4OSwgMjkwLAorICAgIDI5MSwgMjkyLCAyOTMsIDI5NCwgMjk1LCAyOTYsIDI5NywgMjk4LAorICAgIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwgMzA2LAorICAgIDMwNywgMzA4LCAzMDksIDMxMCwgMzExLCAzMTIsIDMxMywgMzE0LAorICAgIDMxNSwgMzE2LCAzMTcsIDMxOCwgMTU4LCAxNTUsIDE2MywgMzE5LAorICAgIDMyMCwgMzIxLCAzMjIsIDMyMywgMzI0LCAzMjUsIDMyNiwgMTUwLAorICAgIDE2NCwgMTY5LCAzMjcsIDMyOCwgMzI5LCAzMzAsIDMzMSwgMzMyLAorICAgIDMzMywgMzM0LCAzMzUsIDMzNiwgMzM3LCAzMzgsIDMzOSwgMzQwLAorICAgIDM0MSwgMzQyLCAzNDMsIDM0NCwgMzQ1LCAzNDYsIDM0NywgMzQ4LAorICAgIDM0OSwgMzUwLCAzNTEsIDM1MiwgMzUzLCAzNTQsIDM1NSwgMzU2LAorICAgIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAzNjIsIDM2MywgMzY0LAorICAgIDM2NSwgMzY2LCAzNjcsIDM2OCwgMzY5LCAzNzAsIDM3MSwgMzcyLAorICAgIDM3MywgMzc0LCAzNzUsIDM3NiwgMzc3LCAzNzgKKyAgfTsKKworICBzdGF0aWMgY29uc3QgRlRfVVNob3J0ICBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXRbODddID0KKyAgeworICAgICAgMCwgICAxLCAyMzEsIDIzMiwgMjM1LCAyMzYsIDIzNywgMjM4LAorICAgICAxMywgIDE0LCAgMTUsICA5OSwgMjM5LCAyNDAsIDI0MSwgMjQyLAorICAgIDI0MywgMjQ0LCAyNDUsIDI0NiwgMjQ3LCAyNDgsICAyNywgIDI4LAorICAgIDI0OSwgMjUwLCAyNTEsIDI1MywgMjU0LCAyNTUsIDI1NiwgMjU3LAorICAgIDI1OCwgMjU5LCAyNjAsIDI2MSwgMjYyLCAyNjMsIDI2NCwgMjY1LAorICAgIDI2NiwgMTA5LCAxMTAsIDI2NywgMjY4LCAyNjksIDI3MCwgMjcyLAorICAgIDMwMCwgMzAxLCAzMDIsIDMwNSwgMzE0LCAzMTUsIDE1OCwgMTU1LAorICAgIDE2MywgMzIwLCAzMjEsIDMyMiwgMzIzLCAzMjQsIDMyNSwgMzI2LAorICAgIDE1MCwgMTY0LCAxNjksIDMyNywgMzI4LCAzMjksIDMzMCwgMzMxLAorICAgIDMzMiwgMzMzLCAzMzQsIDMzNSwgMzM2LCAzMzcsIDMzOCwgMzM5LAorICAgIDM0MCwgMzQxLCAzNDIsIDM0MywgMzQ0LCAzNDUsIDM0NgorICB9OworCisgIHN0YXRpYyBjb25zdCBGVF9VU2hvcnQgIGNmZl9zdGFuZGFyZF9lbmNvZGluZ1syNTZdID0KKyAgeworICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMSwgICAyLCAgIDMsICAgNCwgICA1LCAgIDYsICAgNywgICA4LAorICAgICAgOSwgIDEwLCAgMTEsICAxMiwgIDEzLCAgMTQsICAxNSwgIDE2LAorICAgICAxNywgIDE4LCAgMTksICAyMCwgIDIxLCAgMjIsICAyMywgIDI0LAorICAgICAyNSwgIDI2LCAgMjcsICAyOCwgIDI5LCAgMzAsICAzMSwgIDMyLAorICAgICAzMywgIDM0LCAgMzUsICAzNiwgIDM3LCAgMzgsICAzOSwgIDQwLAorICAgICA0MSwgIDQyLCAgNDMsICA0NCwgIDQ1LCAgNDYsICA0NywgIDQ4LAorICAgICA0OSwgIDUwLCAgNTEsICA1MiwgIDUzLCAgNTQsICA1NSwgIDU2LAorICAgICA1NywgIDU4LCAgNTksICA2MCwgIDYxLCAgNjIsICA2MywgIDY0LAorICAgICA2NSwgIDY2LCAgNjcsICA2OCwgIDY5LCAgNzAsICA3MSwgIDcyLAorICAgICA3MywgIDc0LCAgNzUsICA3NiwgIDc3LCAgNzgsICA3OSwgIDgwLAorICAgICA4MSwgIDgyLCAgODMsICA4NCwgIDg1LCAgODYsICA4NywgIDg4LAorICAgICA4OSwgIDkwLCAgOTEsICA5MiwgIDkzLCAgOTQsICA5NSwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgIDk2LCAgOTcsICA5OCwgIDk5LCAxMDAsIDEwMSwgMTAyLAorICAgIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSwgMTEwLAorICAgICAgMCwgMTExLCAxMTIsIDExMywgMTE0LCAgIDAsIDExNSwgMTE2LAorICAgIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsICAgMCwgMTIzLAorICAgICAgMCwgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLAorICAgIDEzMSwgICAwLCAxMzIsIDEzMywgICAwLCAxMzQsIDEzNSwgMTM2LAorICAgIDEzNywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgMTM4LCAgIDAsIDEzOSwgICAwLCAgIDAsICAgMCwgICAwLAorICAgIDE0MCwgMTQxLCAxNDIsIDE0MywgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgMTQ0LCAgIDAsICAgMCwgICAwLCAxNDUsICAgMCwgICAwLAorICAgIDE0NiwgMTQ3LCAxNDgsIDE0OSwgICAwLCAgIDAsICAgMCwgICAwCisgIH07CisKKyAgc3RhdGljIGNvbnN0IEZUX1VTaG9ydCAgY2ZmX2V4cGVydF9lbmNvZGluZ1syNTZdID0KKyAgeworICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMSwgMjI5LCAyMzAsICAgMCwgMjMxLCAyMzIsIDIzMywgMjM0LAorICAgIDIzNSwgMjM2LCAyMzcsIDIzOCwgIDEzLCAgMTQsICAxNSwgIDk5LAorICAgIDIzOSwgMjQwLCAyNDEsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMjQ2LAorICAgIDI0NywgMjQ4LCAgMjcsICAyOCwgMjQ5LCAyNTAsIDI1MSwgMjUyLAorICAgICAgMCwgMjUzLCAyNTQsIDI1NSwgMjU2LCAyNTcsICAgMCwgICAwLAorICAgICAgMCwgMjU4LCAgIDAsICAgMCwgMjU5LCAyNjAsIDI2MSwgMjYyLAorICAgICAgMCwgICAwLCAyNjMsIDI2NCwgMjY1LCAgIDAsIDI2NiwgMTA5LAorICAgIDExMCwgMjY3LCAyNjgsIDI2OSwgICAwLCAyNzAsIDI3MSwgMjcyLAorICAgIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIDI3OSwgMjgwLAorICAgIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1LCAyODYsIDI4NywgMjg4LAorICAgIDI4OSwgMjkwLCAyOTEsIDI5MiwgMjkzLCAyOTQsIDI5NSwgMjk2LAorICAgIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgICAgMCwgMzA0LCAzMDUsIDMwNiwgICAwLCAgIDAsIDMwNywgMzA4LAorICAgIDMwOSwgMzEwLCAzMTEsICAgMCwgMzEyLCAgIDAsICAgMCwgMzEyLAorICAgICAgMCwgICAwLCAzMTQsIDMxNSwgICAwLCAgIDAsIDMxNiwgMzE3LAorICAgIDMxOCwgICAwLCAgIDAsICAgMCwgMTU4LCAxNTUsIDE2MywgMzE5LAorICAgIDMyMCwgMzIxLCAzMjIsIDMyMywgMzI0LCAzMjUsICAgMCwgICAwLAorICAgIDMyNiwgMTUwLCAxNjQsIDE2OSwgMzI3LCAzMjgsIDMyOSwgMzMwLAorICAgIDMzMSwgMzMyLCAzMzMsIDMzNCwgMzM1LCAzMzYsIDMzNywgMzM4LAorICAgIDMzOSwgMzQwLCAzNDEsIDM0MiwgMzQzLCAzNDQsIDM0NSwgMzQ2LAorICAgIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAzNTIsIDM1MywgMzU0LAorICAgIDM1NSwgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMzYyLAorICAgIDM2MywgMzY0LCAzNjUsIDM2NiwgMzY3LCAzNjgsIDM2OSwgMzcwLAorICAgIDM3MSwgMzcyLCAzNzMsIDM3NCwgMzc1LCAzNzYsIDM3NywgMzc4CisgIH07CisKKyNlbmRpZiAvKiAxICovCisKKworICBGVF9MT0NBTF9ERUYoIEZUX1VTaG9ydCApCisgIGNmZl9nZXRfc3RhbmRhcmRfZW5jb2RpbmcoIEZUX1VJbnQgIGNoYXJjb2RlICkKKyAgeworICAgIHJldHVybiAoRlRfVVNob3J0KSggY2hhcmNvZGUgPCAyNTYgPyBjZmZfc3RhbmRhcmRfZW5jb2RpbmdbY2hhcmNvZGVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDAgKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfY2ZmbG9hZAorCisKKyAgLyogcmVhZCBhbiBvZmZzZXQgZnJvbSB0aGUgaW5kZXgncyBzdHJlYW0gY3VycmVudCBwb3NpdGlvbiAqLworICBzdGF0aWMgRlRfVUxvbmcKKyAgY2ZmX2luZGV4X3JlYWRfb2Zmc2V0KCBDRkZfSW5kZXggIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9FcnJvciAgKmVycm9ycCApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gaWR4LT5zdHJlYW07CisgICAgRlRfQnl0ZSAgICB0bXBbNF07CisgICAgRlRfVUxvbmcgICByZXN1bHQgPSAwOworCisKKyAgICBpZiAoICFGVF9TVFJFQU1fUkVBRCggdG1wLCBpZHgtPm9mZl9zaXplICkgKQorICAgIHsKKyAgICAgIEZUX0ludCAgbm47CisKKworICAgICAgZm9yICggbm4gPSAwOyBubiA8IGlkeC0+b2ZmX3NpemU7IG5uKysgKQorICAgICAgICByZXN1bHQgPSAoIHJlc3VsdCA8PCA4ICkgfCB0bXBbbm5dOworICAgIH0KKworICAgICplcnJvcnAgPSBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2ZmX2luZGV4X2luaXQoIENGRl9JbmRleCAgaWR4LAorICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgIGxvYWQgKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIEZUX1VTaG9ydCAgY291bnQ7CisKKworICAgIEZUX01FTV9aRVJPKCBpZHgsIHNpemVvZiAoICppZHggKSApOworCisgICAgaWR4LT5zdHJlYW0gPSBzdHJlYW07CisgICAgaWR4LT5zdGFydCAgPSBGVF9TVFJFQU1fUE9TKCk7CisgICAgaWYgKCAhRlRfUkVBRF9VU0hPUlQoIGNvdW50ICkgJiYKKyAgICAgICAgIGNvdW50ID4gMCAgICAgICAgICAgICAgICApCisgICAgeworICAgICAgRlRfQnl0ZSAgIG9mZnNpemU7CisgICAgICBGVF9VTG9uZyAgc2l6ZTsKKworCisgICAgICAvKiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZWxlbWVudDsgcmVhZCB0aGUgb2Zmc2V0IHNpemUsICAgICAgICAgICAqLworICAgICAgLyogdGhlbiBhY2Nlc3MgdGhlIG9mZnNldCB0YWJsZSB0byBjb21wdXRlIHRoZSBpbmRleCdzIHRvdGFsIHNpemUgKi8KKyAgICAgIGlmICggRlRfUkVBRF9CWVRFKCBvZmZzaXplICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGlmICggb2Zmc2l6ZSA8IDEgfHwgb2Zmc2l6ZSA+IDQgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgaWR4LT5jb3VudCAgICA9IGNvdW50OworICAgICAgaWR4LT5vZmZfc2l6ZSA9IG9mZnNpemU7CisgICAgICBzaXplICAgICAgICAgID0gKEZUX1VMb25nKSggY291bnQgKyAxICkgKiBvZmZzaXplOworCisgICAgICBpZHgtPmRhdGFfb2Zmc2V0ID0gaWR4LT5zdGFydCArIDMgKyBzaXplOworCisgICAgICBpZiAoIEZUX1NUUkVBTV9TS0lQKCBzaXplIC0gb2Zmc2l6ZSApICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBzaXplID0gY2ZmX2luZGV4X3JlYWRfb2Zmc2V0KCBpZHgsICZlcnJvciApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgaWYgKCBzaXplID09IDAgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgaWR4LT5kYXRhX3NpemUgPSAtLXNpemU7CisKKyAgICAgIGlmICggbG9hZCApCisgICAgICB7CisgICAgICAgIC8qIGxvYWQgdGhlIGRhdGEgKi8KKyAgICAgICAgaWYgKCBGVF9GUkFNRV9FWFRSQUNUKCBzaXplLCBpZHgtPmJ5dGVzICkgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgLyogc2tpcCB0aGUgZGF0YSAqLworICAgICAgICBpZiAoIEZUX1NUUkVBTV9TS0lQKCBzaXplICkgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKyAgICB9CisKKyAgRXhpdDoKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIEZUX0ZSRUUoIGlkeC0+b2Zmc2V0cyApOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBjZmZfaW5kZXhfZG9uZSggQ0ZGX0luZGV4ICBpZHggKQorICB7CisgICAgaWYgKCBpZHgtPnN0cmVhbSApCisgICAgeworICAgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBpZHgtPnN0cmVhbTsKKyAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisKKworICAgICAgaWYgKCBpZHgtPmJ5dGVzICkKKyAgICAgICAgRlRfRlJBTUVfUkVMRUFTRSggaWR4LT5ieXRlcyApOworCisgICAgICBGVF9GUkVFKCBpZHgtPm9mZnNldHMgKTsKKyAgICAgIEZUX01FTV9aRVJPKCBpZHgsIHNpemVvZiAoICppZHggKSApOworICAgIH0KKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNmZl9pbmRleF9sb2FkX29mZnNldHMoIENGRl9JbmRleCAgaWR4ICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3IgID0gRlRfRXJyX09rOworICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gaWR4LT5zdHJlYW07CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKworCisgICAgaWYgKCBpZHgtPmNvdW50ID4gMCAmJiBpZHgtPm9mZnNldHMgPT0gTlVMTCApCisgICAgeworICAgICAgRlRfQnl0ZSAgICBvZmZzaXplID0gaWR4LT5vZmZfc2l6ZTsKKyAgICAgIEZUX1VMb25nICAgZGF0YV9zaXplOworICAgICAgRlRfQnl0ZSogICBwOworICAgICAgRlRfQnl0ZSogICBwX2VuZDsKKyAgICAgIEZUX1VMb25nKiAgcG9mZjsKKworCisgICAgICBkYXRhX3NpemUgPSAoRlRfVUxvbmcpKCBpZHgtPmNvdW50ICsgMSApICogb2Zmc2l6ZTsKKworICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGlkeC0+b2Zmc2V0cywgaWR4LT5jb3VudCArIDEgKSB8fAorICAgICAgICAgICBGVF9TVFJFQU1fU0VFSyggaWR4LT5zdGFydCArIDMgKSAgICAgICAgICAgICB8fAorICAgICAgICAgICBGVF9GUkFNRV9FTlRFUiggZGF0YV9zaXplICkgICAgICAgICAgICAgICAgICApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgcG9mZiAgID0gaWR4LT5vZmZzZXRzOworICAgICAgcCAgICAgID0gKEZUX0J5dGUqKXN0cmVhbS0+Y3Vyc29yOworICAgICAgcF9lbmQgID0gcCArIGRhdGFfc2l6ZTsKKworICAgICAgc3dpdGNoICggb2Zmc2l6ZSApCisgICAgICB7CisgICAgICBjYXNlIDE6CisgICAgICAgIGZvciAoIDsgcCA8IHBfZW5kOyBwKyssIHBvZmYrKyApCisgICAgICAgICAgcG9mZlswXSA9IHBbMF07CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDI6CisgICAgICAgIGZvciAoIDsgcCA8IHBfZW5kOyBwICs9IDIsIHBvZmYrKyApCisgICAgICAgICAgcG9mZlswXSA9IEZUX1BFRUtfVVNIT1JUKCBwICk7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDM6CisgICAgICAgIGZvciAoIDsgcCA8IHBfZW5kOyBwICs9IDMsIHBvZmYrKyApCisgICAgICAgICAgcG9mZlswXSA9IEZUX1BFRUtfT0ZGMyggcCApOworICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgZm9yICggOyBwIDwgcF9lbmQ7IHAgKz0gNCwgcG9mZisrICkKKyAgICAgICAgICBwb2ZmWzBdID0gRlRfUEVFS19VTE9ORyggcCApOworICAgICAgfQorCisgICAgICBGVF9GUkFNRV9FWElUKCk7CisgICAgfQorCisgIEV4aXQ6CisgICAgaWYgKCBlcnJvciApCisgICAgICBGVF9GUkVFKCBpZHgtPm9mZnNldHMgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogQWxsb2NhdGUgYSB0YWJsZSBjb250YWluaW5nIHBvaW50ZXJzIHRvIGFuIGluZGV4J3MgZWxlbWVudHMuICovCisgIC8qIFRoZSBgcG9vbCcgYXJndW1lbnQgbWFrZXMgdGhpcyBmdW5jdGlvbiBjb252ZXJ0IHRoZSBpbmRleCAgICAqLworICAvKiBlbnRyaWVzIHRvIEMtc3R5bGUgc3RyaW5ncyAodGhpcyBpcywgTlVMTC10ZXJtaW5hdGVkKS4gICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIGNmZl9pbmRleF9nZXRfcG9pbnRlcnMoIENGRl9JbmRleCAgIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSoqKiAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqKiAgIHBvb2wgKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvciAgICAgPSBGVF9FcnJfT2s7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgICAgPSBpZHgtPnN0cmVhbS0+bWVtb3J5OworCisgICAgRlRfQnl0ZSoqICB0ICAgICAgICAgPSBOVUxMOworICAgIEZUX0J5dGUqICAgbmV3X2J5dGVzID0gTlVMTDsKKworCisgICAgKnRhYmxlID0gTlVMTDsKKworICAgIGlmICggaWR4LT5vZmZzZXRzID09IE5VTEwgKQorICAgIHsKKyAgICAgIGVycm9yID0gY2ZmX2luZGV4X2xvYWRfb2Zmc2V0cyggaWR4ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggaWR4LT5jb3VudCA+IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICFGVF9ORVdfQVJSQVkoIHQsIGlkeC0+Y291bnQgKyAxICkgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAoICFwb29sIHx8ICFGVF9BTExPQyggbmV3X2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeC0+ZGF0YV9zaXplICsgaWR4LT5jb3VudCApICkgKQorICAgIHsKKyAgICAgIEZUX1VMb25nICBuLCBjdXJfb2Zmc2V0OworICAgICAgRlRfVUxvbmcgIGV4dHJhID0gMDsKKyAgICAgIEZUX0J5dGUqICBvcmdfYnl0ZXMgPSBpZHgtPmJ5dGVzOworCisKKyAgICAgIC8qIGF0IHRoaXMgcG9pbnQsIGBpZHgtPm9mZnNldHMnIGNhbid0IGJlIE5VTEwgKi8KKyAgICAgIGN1cl9vZmZzZXQgPSBpZHgtPm9mZnNldHNbMF0gLSAxOworCisgICAgICAvKiBzYW5pdHkgY2hlY2sgKi8KKyAgICAgIGlmICggY3VyX29mZnNldCA+PSBpZHgtPmRhdGFfc2l6ZSApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFMCgoICJjZmZfaW5kZXhfZ2V0X3BvaW50ZXJzOiIKKyAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGZpcnN0IG9mZnNldCB2YWx1ZSAlZCBzZXQgdG8gemVyb1xuIiwKKyAgICAgICAgICAgICAgICAgICAgY3VyX29mZnNldCApKTsKKyAgICAgICAgY3VyX29mZnNldCA9IDA7CisgICAgICB9CisKKyAgICAgIGlmICggIXBvb2wgKQorICAgICAgICB0WzBdID0gb3JnX2J5dGVzICsgY3VyX29mZnNldDsKKyAgICAgIGVsc2UKKyAgICAgICAgdFswXSA9IG5ld19ieXRlcyArIGN1cl9vZmZzZXQ7CisKKyAgICAgIGZvciAoIG4gPSAxOyBuIDw9IGlkeC0+Y291bnQ7IG4rKyApCisgICAgICB7CisgICAgICAgIEZUX1VMb25nICBuZXh0X29mZnNldCA9IGlkeC0+b2Zmc2V0c1tuXSAtIDE7CisKKworICAgICAgICAvKiBlbXB0eSBzbG90ICsgdHdvIHNhbml0eSBjaGVja3MgZm9yIGludmFsaWQgb2Zmc2V0IHRhYmxlcyAqLworICAgICAgICBpZiAoIG5leHRfb2Zmc2V0ID09IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgIG5leHRfb2Zmc2V0IDwgY3VyX29mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICggbmV4dF9vZmZzZXQgPj0gaWR4LT5kYXRhX3NpemUgJiYgbiA8IGlkeC0+Y291bnQgKSApCisgICAgICAgICAgbmV4dF9vZmZzZXQgPSBjdXJfb2Zmc2V0OworCisgICAgICAgIGlmICggIXBvb2wgKQorICAgICAgICAgIHRbbl0gPSBvcmdfYnl0ZXMgKyBuZXh0X29mZnNldDsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgdFtuXSA9IG5ld19ieXRlcyArIG5leHRfb2Zmc2V0ICsgZXh0cmE7CisKKyAgICAgICAgICBpZiAoIG5leHRfb2Zmc2V0ICE9IGN1cl9vZmZzZXQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX01FTV9DT1BZKCB0W24gLSAxXSwgb3JnX2J5dGVzICsgY3VyX29mZnNldCwgdFtuXSAtIHRbbiAtIDFdICk7CisgICAgICAgICAgICB0W25dWzBdID0gJ1wwJzsKKyAgICAgICAgICAgIHRbbl0gICArPSAxOworICAgICAgICAgICAgZXh0cmErKzsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjdXJfb2Zmc2V0ID0gbmV4dF9vZmZzZXQ7CisgICAgICB9CisgICAgICAqdGFibGUgPSB0OworCisgICAgICBpZiAoIHBvb2wgKQorICAgICAgICAqcG9vbCA9IG5ld19ieXRlczsKKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBjZmZfaW5kZXhfYWNjZXNzX2VsZW1lbnQoIENGRl9JbmRleCAgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiogIHBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogIHBieXRlX2xlbiApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIGlmICggaWR4ICYmIGlkeC0+Y291bnQgPiBlbGVtZW50ICkKKyAgICB7CisgICAgICAvKiBjb21wdXRlIHN0YXJ0IGFuZCBlbmQgb2Zmc2V0cyAqLworICAgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBpZHgtPnN0cmVhbTsKKyAgICAgIEZUX1VMb25nICAgb2ZmMSwgb2ZmMiA9IDA7CisKKworICAgICAgLyogbG9hZCBvZmZzZXRzIGZyb20gZmlsZSBvciB0aGUgb2Zmc2V0IHRhYmxlICovCisgICAgICBpZiAoICFpZHgtPm9mZnNldHMgKQorICAgICAgeworICAgICAgICBGVF9VTG9uZyAgcG9zID0gZWxlbWVudCAqIGlkeC0+b2ZmX3NpemU7CisKKworICAgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBpZHgtPnN0YXJ0ICsgMyArIHBvcyApICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgb2ZmMSA9IGNmZl9pbmRleF9yZWFkX29mZnNldCggaWR4LCAmZXJyb3IgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIGlmICggb2ZmMSAhPSAwICkKKyAgICAgICAgeworICAgICAgICAgIGRvCisgICAgICAgICAgeworICAgICAgICAgICAgZWxlbWVudCsrOworICAgICAgICAgICAgb2ZmMiA9IGNmZl9pbmRleF9yZWFkX29mZnNldCggaWR4LCAmZXJyb3IgKTsKKyAgICAgICAgICB9CisgICAgICAgICAgd2hpbGUgKCBvZmYyID09IDAgJiYgZWxlbWVudCA8IGlkeC0+Y291bnQgKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSAgIC8qIHVzZSBvZmZzZXRzIHRhYmxlICovCisgICAgICB7CisgICAgICAgIG9mZjEgPSBpZHgtPm9mZnNldHNbZWxlbWVudF07CisgICAgICAgIGlmICggb2ZmMSApCisgICAgICAgIHsKKyAgICAgICAgICBkbworICAgICAgICAgIHsKKyAgICAgICAgICAgIGVsZW1lbnQrKzsKKyAgICAgICAgICAgIG9mZjIgPSBpZHgtPm9mZnNldHNbZWxlbWVudF07CisKKyAgICAgICAgICB9IHdoaWxlICggb2ZmMiA9PSAwICYmIGVsZW1lbnQgPCBpZHgtPmNvdW50ICk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyogWFhYOiBzaG91bGQgY2hlY2sgb2ZmMiBkb2VzIG5vdCBleGNlZWQgdGhlIGVuZCBvZiB0aGlzIGVudHJ5OyAqLworICAgICAgLyogICAgICBhdCBwcmVzZW50LCBvbmx5IHRydW5jYXRlIG9mZjIgYXQgdGhlIGVuZCBvZiB0aGlzIHN0cmVhbSAqLworICAgICAgaWYgKCBvZmYyID4gc3RyZWFtLT5zaXplICsgMSAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgaWR4LT5kYXRhX29mZnNldCA+IHN0cmVhbS0+c2l6ZSAtIG9mZjIgKyAxICkKKyAgICAgIHsKKyAgICAgICAgRlRfRVJST1IoKCAiY2ZmX2luZGV4X2FjY2Vzc19lbGVtZW50OiIKKyAgICAgICAgICAgICAgICAgICAiIG9mZnNldCB0byBuZXh0IGVudHJ5ICglZCkiCisgICAgICAgICAgICAgICAgICAgIiBleGNlZWRzIHRoZSBlbmQgb2Ygc3RyZWFtICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgb2ZmMiwgc3RyZWFtLT5zaXplIC0gaWR4LT5kYXRhX29mZnNldCArIDEgKSk7CisgICAgICAgIG9mZjIgPSBzdHJlYW0tPnNpemUgLSBpZHgtPmRhdGFfb2Zmc2V0ICsgMTsKKyAgICAgIH0KKworICAgICAgLyogYWNjZXNzIGVsZW1lbnQgKi8KKyAgICAgIGlmICggb2ZmMSAmJiBvZmYyID4gb2ZmMSApCisgICAgICB7CisgICAgICAgICpwYnl0ZV9sZW4gPSBvZmYyIC0gb2ZmMTsKKworICAgICAgICBpZiAoIGlkeC0+Ynl0ZXMgKQorICAgICAgICB7CisgICAgICAgICAgLyogdGhpcyBpbmRleCB3YXMgY29tcGxldGVseSBsb2FkZWQgaW4gbWVtb3J5LCB0aGF0J3MgZWFzeSAqLworICAgICAgICAgICpwYnl0ZXMgPSBpZHgtPmJ5dGVzICsgb2ZmMSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogdGhpcyBpbmRleCBpcyBzdGlsbCBvbiBkaXNrL2ZpbGUsIGFjY2VzcyBpdCB0aHJvdWdoIGEgZnJhbWUgKi8KKyAgICAgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBpZHgtPmRhdGFfb2Zmc2V0ICsgb2ZmMSAtIDEgKSB8fAorICAgICAgICAgICAgICAgRlRfRlJBTUVfRVhUUkFDVCggb2ZmMiAtIG9mZjEsICpwYnl0ZXMgKSAgICAgICkKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBlbXB0eSBpbmRleCBlbGVtZW50ICovCisgICAgICAgICpwYnl0ZXMgICAgPSAwOworICAgICAgICAqcGJ5dGVfbGVuID0gMDsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZmZfaW5kZXhfZm9yZ2V0X2VsZW1lbnQoIENGRl9JbmRleCAgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqKiAgcGJ5dGVzICkKKyAgeworICAgIGlmICggaWR4LT5ieXRlcyA9PSAwICkKKyAgICB7CisgICAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IGlkeC0+c3RyZWFtOworCisKKyAgICAgIEZUX0ZSQU1FX1JFTEVBU0UoICpwYnl0ZXMgKTsKKyAgICB9CisgIH0KKworCisgIC8qIGdldCBhbiBlbnRyeSBmcm9tIE5hbWUgSU5ERVggKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9TdHJpbmcqICkKKyAgY2ZmX2luZGV4X2dldF9uYW1lKCBDRkZfRm9udCAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgZWxlbWVudCApCisgIHsKKyAgICBDRkZfSW5kZXggICBpZHggPSAmZm9udC0+bmFtZV9pbmRleDsKKyAgICBGVF9NZW1vcnkgICBtZW1vcnkgPSBpZHgtPnN0cmVhbS0+bWVtb3J5OworICAgIEZUX0J5dGUqICAgIGJ5dGVzOworICAgIEZUX1VMb25nICAgIGJ5dGVfbGVuOworICAgIEZUX0Vycm9yICAgIGVycm9yOworICAgIEZUX1N0cmluZyogIG5hbWUgPSAwOworCisKKyAgICBlcnJvciA9IGNmZl9pbmRleF9hY2Nlc3NfZWxlbWVudCggaWR4LCBlbGVtZW50LCAmYnl0ZXMsICZieXRlX2xlbiApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCAhRlRfQUxMT0MoIG5hbWUsIGJ5dGVfbGVuICsgMSApICkKKyAgICB7CisgICAgICBGVF9NRU1fQ09QWSggbmFtZSwgYnl0ZXMsIGJ5dGVfbGVuICk7CisgICAgICBuYW1lW2J5dGVfbGVuXSA9IDA7CisgICAgfQorICAgIGNmZl9pbmRleF9mb3JnZXRfZWxlbWVudCggaWR4LCAmYnl0ZXMgKTsKKworICBFeGl0OgorICAgIHJldHVybiBuYW1lOworICB9CisKKworICAvKiBnZXQgYW4gZW50cnkgZnJvbSBTdHJpbmcgSU5ERVggKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9TdHJpbmcqICkKKyAgY2ZmX2luZGV4X2dldF9zdHJpbmcoIENGRl9Gb250ICBmb250LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGVsZW1lbnQgKQorICB7CisgICAgcmV0dXJuICggZWxlbWVudCA8IGZvbnQtPm51bV9zdHJpbmdzICkKKyAgICAgICAgICAgICA/IChGVF9TdHJpbmcqKWZvbnQtPnN0cmluZ3NbZWxlbWVudF0KKyAgICAgICAgICAgICA6IE5VTEw7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfU3RyaW5nKiApCisgIGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZyggQ0ZGX0ZvbnQgIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIHNpZCApCisgIHsKKyAgICAvKiB2YWx1ZSAweEZGRkZVIGluZGljYXRlcyBhIG1pc3NpbmcgZGljdGlvbmFyeSBlbnRyeSAqLworICAgIGlmICggc2lkID09IDB4RkZGRlUgKQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBpZiBpdCBpcyBub3QgYSBzdGFuZGFyZCBzdHJpbmcsIHJldHVybiBpdCAqLworICAgIGlmICggc2lkID4gMzkwICkKKyAgICAgIHJldHVybiBjZmZfaW5kZXhfZ2V0X3N0cmluZyggZm9udCwgc2lkIC0gMzkxICk7CisKKyAgICAvKiBDSUQta2V5ZWQgQ0ZGIGZvbnRzIGRvbid0IGhhdmUgZ2x5cGggbmFtZXMgKi8KKyAgICBpZiAoICFmb250LT5wc25hbWVzICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogdGhpcyBpcyBhIHN0YW5kYXJkIHN0cmluZyAqLworICAgIHJldHVybiAoRlRfU3RyaW5nICopZm9udC0+cHNuYW1lcy0+YWRvYmVfc3RkX3N0cmluZ3MoIHNpZCApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgRkQgU2VsZWN0IHRhYmxlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIHN0YXRpYyB2b2lkCisgIENGRl9Eb25lX0ZEX1NlbGVjdCggQ0ZGX0ZEU2VsZWN0ICBmZHNlbGVjdCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICAgIHN0cmVhbSApCisgIHsKKyAgICBpZiAoIGZkc2VsZWN0LT5kYXRhICkKKyAgICAgIEZUX0ZSQU1FX1JFTEVBU0UoIGZkc2VsZWN0LT5kYXRhICk7CisKKyAgICBmZHNlbGVjdC0+ZGF0YV9zaXplICAgPSAwOworICAgIGZkc2VsZWN0LT5mb3JtYXQgICAgICA9IDA7CisgICAgZmRzZWxlY3QtPnJhbmdlX2NvdW50ID0gMDsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIENGRl9Mb2FkX0ZEX1NlbGVjdCggQ0ZGX0ZEU2VsZWN0ICBmZHNlbGVjdCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIG51bV9nbHlwaHMsCisgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICBvZmZzZXQgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworICAgIEZUX0J5dGUgICBmb3JtYXQ7CisgICAgRlRfVUludCAgIG51bV9yYW5nZXM7CisKKworICAgIC8qIHJlYWQgZm9ybWF0ICovCisgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggb2Zmc2V0ICkgfHwgRlRfUkVBRF9CWVRFKCBmb3JtYXQgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBmZHNlbGVjdC0+Zm9ybWF0ICAgICAgPSBmb3JtYXQ7CisgICAgZmRzZWxlY3QtPmNhY2hlX2NvdW50ID0gMDsgICAvKiBjbGVhciBjYWNoZSAqLworCisgICAgc3dpdGNoICggZm9ybWF0ICkKKyAgICB7CisgICAgY2FzZSAwOiAgICAgLyogZm9ybWF0IDAsIHRoYXQncyBzaW1wbGUgKi8KKyAgICAgIGZkc2VsZWN0LT5kYXRhX3NpemUgPSBudW1fZ2x5cGhzOworICAgICAgZ290byBMb2FkX0RhdGE7CisKKyAgICBjYXNlIDM6ICAgICAvKiBmb3JtYXQgMywgYSB0YWQgbW9yZSBjb21wbGV4ICovCisgICAgICBpZiAoIEZUX1JFQURfVVNIT1JUKCBudW1fcmFuZ2VzICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGZkc2VsZWN0LT5kYXRhX3NpemUgPSBudW1fcmFuZ2VzICogMyArIDI7CisKKyAgICBMb2FkX0RhdGE6CisgICAgICBpZiAoIEZUX0ZSQU1FX0VYVFJBQ1QoIGZkc2VsZWN0LT5kYXRhX3NpemUsIGZkc2VsZWN0LT5kYXRhICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6ICAgIC8qIGhtbS4uLiB0aGF0J3Mgd3JvbmcgKi8KKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfQnl0ZSApCisgIGNmZl9mZF9zZWxlY3RfZ2V0KCBDRkZfRkRTZWxlY3QgIGZkc2VsZWN0LAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaF9pbmRleCApCisgIHsKKyAgICBGVF9CeXRlICBmZCA9IDA7CisKKworICAgIHN3aXRjaCAoIGZkc2VsZWN0LT5mb3JtYXQgKQorICAgIHsKKyAgICBjYXNlIDA6CisgICAgICBmZCA9IGZkc2VsZWN0LT5kYXRhW2dseXBoX2luZGV4XTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAzOgorICAgICAgLyogZmlyc3QsIGNvbXBhcmUgdG8gY2FjaGUgKi8KKyAgICAgIGlmICggKEZUX1VJbnQpKCBnbHlwaF9pbmRleCAtIGZkc2VsZWN0LT5jYWNoZV9maXJzdCApIDwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZkc2VsZWN0LT5jYWNoZV9jb3VudCApCisgICAgICB7CisgICAgICAgIGZkID0gZmRzZWxlY3QtPmNhY2hlX2ZkOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgLyogdGhlbiwgbG9va3VwIHRoZSByYW5nZXMgYXJyYXkgKi8KKyAgICAgIHsKKyAgICAgICAgRlRfQnl0ZSogIHAgICAgICAgPSBmZHNlbGVjdC0+ZGF0YTsKKyAgICAgICAgRlRfQnl0ZSogIHBfbGltaXQgPSBwICsgZmRzZWxlY3QtPmRhdGFfc2l6ZTsKKyAgICAgICAgRlRfQnl0ZSAgIGZkMjsKKyAgICAgICAgRlRfVUludCAgIGZpcnN0LCBsaW1pdDsKKworCisgICAgICAgIGZpcnN0ID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgIGlmICggZ2x5cGhfaW5kZXggPCBmaXJzdCApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGZkMiAgID0gKnArKzsKKyAgICAgICAgICBsaW1pdCA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisKKyAgICAgICAgICBpZiAoIGdseXBoX2luZGV4IDwgbGltaXQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGZkID0gZmQyOworCisgICAgICAgICAgICAvKiB1cGRhdGUgY2FjaGUgKi8KKyAgICAgICAgICAgIGZkc2VsZWN0LT5jYWNoZV9maXJzdCA9IGZpcnN0OworICAgICAgICAgICAgZmRzZWxlY3QtPmNhY2hlX2NvdW50ID0gbGltaXQtZmlyc3Q7CisgICAgICAgICAgICBmZHNlbGVjdC0+Y2FjaGVfZmQgICAgPSBmZDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgZmlyc3QgPSBsaW1pdDsKKworICAgICAgICB9IHdoaWxlICggcCA8IHBfbGltaXQgKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIDsKKyAgICB9CisKKyAgICByZXR1cm4gZmQ7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiovCisgIC8qKiogICBDRkYgZm9udCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqLworICAvKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyBGVF9FcnJvcgorICBjZmZfY2hhcnNldF9jb21wdXRlX2NpZHMoIENGRl9DaGFyc2V0ICBjaGFyc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICBudW1fZ2x5cGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICBtZW1vcnkgKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvciAgID0gRlRfRXJyX09rOworICAgIEZUX1VJbnQgICAgaTsKKyAgICBGVF9Mb25nICAgIGo7CisgICAgRlRfVVNob3J0ICBtYXhfY2lkID0gMDsKKworCisgICAgaWYgKCBjaGFyc2V0LT5tYXhfY2lkID4gMCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG51bV9nbHlwaHM7IGkrKyApCisgICAgeworICAgICAgaWYgKCBjaGFyc2V0LT5zaWRzW2ldID4gbWF4X2NpZCApCisgICAgICAgIG1heF9jaWQgPSBjaGFyc2V0LT5zaWRzW2ldOworICAgIH0KKworICAgIGlmICggRlRfTkVXX0FSUkFZKCBjaGFyc2V0LT5jaWRzLCAoRlRfVUxvbmcpbWF4X2NpZCArIDEgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBXaGVuIG11bHRpcGxlIEdJRHMgbWFwIHRvIHRoZSBzYW1lIENJRCwgd2UgY2hvb3NlIHRoZSBsb3dlc3QgKi8KKyAgICAvKiBHSUQuICBUaGlzIGlzIG5vdCBkZXNjcmliZWQgaW4gYW55IHNwZWMsIGJ1dCBpdCBtYXRjaGVzIHRoZSAgKi8KKyAgICAvKiBiZWhhdmlvdXIgb2YgcmVjZW50IEFjcm9yZWFkIHZlcnNpb25zLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBmb3IgKCBqID0gbnVtX2dseXBocyAtIDE7IGogPj0gMCA7IGotLSApCisgICAgICBjaGFyc2V0LT5jaWRzW2NoYXJzZXQtPnNpZHNbal1dID0gKEZUX1VTaG9ydClqOworCisgICAgY2hhcnNldC0+bWF4X2NpZCAgICA9IG1heF9jaWQ7CisgICAgY2hhcnNldC0+bnVtX2dseXBocyA9IG51bV9nbHlwaHM7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfVUludCApCisgIGNmZl9jaGFyc2V0X2NpZF90b19naW5kZXgoIENGRl9DaGFyc2V0ICBjaGFyc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgY2lkICkKKyAgeworICAgIEZUX1VJbnQgIHJlc3VsdCA9IDA7CisKKworICAgIGlmICggY2lkIDw9IGNoYXJzZXQtPm1heF9jaWQgKQorICAgICAgcmVzdWx0ID0gY2hhcnNldC0+Y2lkc1tjaWRdOworCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgY2ZmX2NoYXJzZXRfZnJlZV9jaWRzKCBDRkZfQ2hhcnNldCAgY2hhcnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgbWVtb3J5ICkKKyAgeworICAgIEZUX0ZSRUUoIGNoYXJzZXQtPmNpZHMgKTsKKyAgICBjaGFyc2V0LT5tYXhfY2lkID0gMDsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgY2ZmX2NoYXJzZXRfZG9uZSggQ0ZGX0NoYXJzZXQgIGNoYXJzZXQsCisgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgICBzdHJlYW0gKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKworCisgICAgY2ZmX2NoYXJzZXRfZnJlZV9jaWRzKCBjaGFyc2V0LCBtZW1vcnkgKTsKKworICAgIEZUX0ZSRUUoIGNoYXJzZXQtPnNpZHMgKTsKKyAgICBjaGFyc2V0LT5mb3JtYXQgPSAwOworICAgIGNoYXJzZXQtPm9mZnNldCA9IDA7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBjZmZfY2hhcnNldF9sb2FkKCBDRkZfQ2hhcnNldCAgY2hhcnNldCwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIG51bV9nbHlwaHMsCisgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICBiYXNlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgIGludmVydCApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIEZUX0Vycm9yICAgZXJyb3IgID0gRlRfRXJyX09rOworICAgIEZUX1VTaG9ydCAgZ2x5cGhfc2lkOworCisKKyAgICAvKiBJZiB0aGUgdGhlIG9mZnNldCBpcyBncmVhdGVyIHRoYW4gMiwgd2UgaGF2ZSB0byBwYXJzZSB0aGUgKi8KKyAgICAvKiBjaGFyc2V0IHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIG9mZnNldCA+IDIgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgIGo7CisKKworICAgICAgY2hhcnNldC0+b2Zmc2V0ID0gYmFzZV9vZmZzZXQgKyBvZmZzZXQ7CisKKyAgICAgIC8qIEdldCB0aGUgZm9ybWF0IG9mIHRoZSB0YWJsZS4gKi8KKyAgICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIGNoYXJzZXQtPm9mZnNldCApIHx8CisgICAgICAgICAgIEZUX1JFQURfQllURSggY2hhcnNldC0+Zm9ybWF0ICkgICApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogQWxsb2NhdGUgbWVtb3J5IGZvciBzaWRzLiAqLworICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGNoYXJzZXQtPnNpZHMsIG51bV9nbHlwaHMgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogYXNzaWduIHRoZSAubm90ZGVmIGdseXBoICovCisgICAgICBjaGFyc2V0LT5zaWRzWzBdID0gMDsKKworICAgICAgc3dpdGNoICggY2hhcnNldC0+Zm9ybWF0ICkKKyAgICAgIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAgaWYgKCBudW1fZ2x5cGhzID4gMCApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIEZUX0ZSQU1FX0VOVEVSKCAoIG51bV9nbHlwaHMgLSAxICkgKiAyICkgKQorICAgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgICAgZm9yICggaiA9IDE7IGogPCBudW1fZ2x5cGhzOyBqKysgKQorICAgICAgICAgICAgY2hhcnNldC0+c2lkc1tqXSA9IEZUX0dFVF9VU0hPUlQoKTsKKworICAgICAgICAgIEZUX0ZSQU1FX0VYSVQoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAxOgorICAgICAgY2FzZSAyOgorICAgICAgICB7CisgICAgICAgICAgRlRfVUludCAgbmxlZnQ7CisgICAgICAgICAgRlRfVUludCAgaTsKKworCisgICAgICAgICAgaiA9IDE7CisKKyAgICAgICAgICB3aGlsZSAoIGogPCBudW1fZ2x5cGhzICkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBSZWFkIHRoZSBmaXJzdCBnbHlwaCBzaWQgb2YgdGhlIHJhbmdlLiAqLworICAgICAgICAgICAgaWYgKCBGVF9SRUFEX1VTSE9SVCggZ2x5cGhfc2lkICkgKQorICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgICAgIC8qIFJlYWQgdGhlIG51bWJlciBvZiBnbHlwaHMgaW4gdGhlIHJhbmdlLiAgKi8KKyAgICAgICAgICAgIGlmICggY2hhcnNldC0+Zm9ybWF0ID09IDIgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZiAoIEZUX1JFQURfVVNIT1JUKCBubGVmdCApICkKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlmICggRlRfUkVBRF9CWVRFKCBubGVmdCApICkKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIHRyeSB0byByZXNjdWUgc29tZSBvZiB0aGUgU0lEcyBpZiBgbmxlZnQnIGlzIHRvbyBsYXJnZSAqLworICAgICAgICAgICAgaWYgKCBnbHlwaF9zaWQgPiAweEZGRkZMIC0gbmxlZnQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9FUlJPUigoICJjZmZfY2hhcnNldF9sb2FkOiBpbnZhbGlkIFNJRCByYW5nZSB0cmltbWVkIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgbmxlZnQ9JWQgLT4gJWRcbiIsIG5sZWZ0LCAweEZGRkZMIC0gZ2x5cGhfc2lkICkpOworICAgICAgICAgICAgICBubGVmdCA9ICggRlRfVUludCApKCAweEZGRkZMIC0gZ2x5cGhfc2lkICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEZpbGwgaW4gdGhlIHJhbmdlIG9mIHNpZHMgLS0gYG5sZWZ0ICsgMScgZ2x5cGhzLiAqLworICAgICAgICAgICAgZm9yICggaSA9IDA7IGogPCBudW1fZ2x5cGhzICYmIGkgPD0gbmxlZnQ7IGkrKywgaisrLCBnbHlwaF9zaWQrKyApCisgICAgICAgICAgICAgIGNoYXJzZXQtPnNpZHNbal0gPSBnbHlwaF9zaWQ7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBGVF9FUlJPUigoICJjZmZfY2hhcnNldF9sb2FkOiBpbnZhbGlkIHRhYmxlIGZvcm1hdFxuIiApKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBQYXJzZSBkZWZhdWx0IHRhYmxlcyBjb3JyZXNwb25kaW5nIHRvIG9mZnNldCA9PSAwLCAxLCBvciAyLiAgKi8KKyAgICAgIC8qIENGRiBzcGVjaWZpY2F0aW9uIGludGltYXRlcyB0aGUgZm9sbG93aW5nOiAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBJbiBvcmRlciB0byB1c2UgYSBwcmVkZWZpbmVkIGNoYXJzZXQsIHRoZSBmb2xsb3dpbmcgbXVzdCBiZSAgKi8KKyAgICAgIC8qIHRydWU6IFRoZSBjaGFyc2V0IGNvbnN0cnVjdGVkIGZvciB0aGUgZ2x5cGhzIGluIHRoZSBmb250J3MgICAqLworICAgICAgLyogY2hhcnN0cmluZ3MgZGljdGlvbmFyeSBtdXN0IG1hdGNoIHRoZSBwcmVkZWZpbmVkIGNoYXJzZXQgaW4gICovCisgICAgICAvKiB0aGUgZmlyc3QgbnVtX2dseXBocy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgY2hhcnNldC0+b2Zmc2V0ID0gb2Zmc2V0OyAgLyogcmVjb3JkIGNoYXJzZXQgdHlwZSAqLworCisgICAgICBzd2l0Y2ggKCAoRlRfVUludClvZmZzZXQgKQorICAgICAgeworICAgICAgY2FzZSAwOgorICAgICAgICBpZiAoIG51bV9nbHlwaHMgPiAyMjkgKQorICAgICAgICB7CisgICAgICAgICAgRlRfRVJST1IoKCAiY2ZmX2NoYXJzZXRfbG9hZDogaW1wbGljaXQgY2hhcnNldCBsYXJnZXIgdGhhblxuIgorICAgICAgICAgICAgICAgICAgICAgInByZWRlZmluZWQgY2hhcnNldCAoQWRvYmUgSVNPLUxhdGluKVxuIiApKTsKKyAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisKKyAgICAgICAgLyogQWxsb2NhdGUgbWVtb3J5IGZvciBzaWRzLiAqLworICAgICAgICBpZiAoIEZUX05FV19BUlJBWSggY2hhcnNldC0+c2lkcywgbnVtX2dseXBocyApICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgLyogQ29weSB0aGUgcHJlZGVmaW5lZCBjaGFyc2V0IGludG8gdGhlIGFsbG9jYXRlZCBtZW1vcnkuICovCisgICAgICAgIEZUX0FSUkFZX0NPUFkoIGNoYXJzZXQtPnNpZHMsIGNmZl9pc29hZG9iZV9jaGFyc2V0LCBudW1fZ2x5cGhzICk7CisKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgMToKKyAgICAgICAgaWYgKCBudW1fZ2x5cGhzID4gMTY2ICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0VSUk9SKCggImNmZl9jaGFyc2V0X2xvYWQ6IGltcGxpY2l0IGNoYXJzZXQgbGFyZ2VyIHRoYW5cbiIKKyAgICAgICAgICAgICAgICAgICAgICJwcmVkZWZpbmVkIGNoYXJzZXQgKEFkb2JlIEV4cGVydClcbiIgKSk7CisgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEFsbG9jYXRlIG1lbW9yeSBmb3Igc2lkcy4gKi8KKyAgICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGNoYXJzZXQtPnNpZHMsIG51bV9nbHlwaHMgKSApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIC8qIENvcHkgdGhlIHByZWRlZmluZWQgY2hhcnNldCBpbnRvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LiAgICAgKi8KKyAgICAgICAgRlRfQVJSQVlfQ09QWSggY2hhcnNldC0+c2lkcywgY2ZmX2V4cGVydF9jaGFyc2V0LCBudW1fZ2x5cGhzICk7CisKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKCBudW1fZ2x5cGhzID4gODcgKQorICAgICAgICB7CisgICAgICAgICAgRlRfRVJST1IoKCAiY2ZmX2NoYXJzZXRfbG9hZDogaW1wbGljaXQgY2hhcnNldCBsYXJnZXIgdGhhblxuIgorICAgICAgICAgICAgICAgICAgICAgInByZWRlZmluZWQgY2hhcnNldCAoQWRvYmUgRXhwZXJ0IFN1YnNldClcbiIgKSk7CisgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEFsbG9jYXRlIG1lbW9yeSBmb3Igc2lkcy4gKi8KKyAgICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGNoYXJzZXQtPnNpZHMsIG51bV9nbHlwaHMgKSApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIC8qIENvcHkgdGhlIHByZWRlZmluZWQgY2hhcnNldCBpbnRvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LiAgICAgKi8KKyAgICAgICAgRlRfQVJSQVlfQ09QWSggY2hhcnNldC0+c2lkcywgY2ZmX2V4cGVydHN1YnNldF9jaGFyc2V0LCBudW1fZ2x5cGhzICk7CisKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorICAgIH0KKworICAgIC8qIHdlIGhhdmUgdG8gaW52ZXJ0IHRoZSBgc2lkcycgYXJyYXkgZm9yIHN1YnNldHRlZCBDSUQta2V5ZWQgZm9udHMgKi8KKyAgICBpZiAoIGludmVydCApCisgICAgICBlcnJvciA9IGNmZl9jaGFyc2V0X2NvbXB1dGVfY2lkcyggY2hhcnNldCwgbnVtX2dseXBocywgbWVtb3J5ICk7CisKKyAgRXhpdDoKKyAgICAvKiBDbGVhbiB1cCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuICovCisgICAgaWYgKCBlcnJvciApCisgICAgeworICAgICAgRlRfRlJFRSggY2hhcnNldC0+c2lkcyApOworICAgICAgRlRfRlJFRSggY2hhcnNldC0+Y2lkcyApOworICAgICAgY2hhcnNldC0+Zm9ybWF0ID0gMDsKKyAgICAgIGNoYXJzZXQtPm9mZnNldCA9IDA7CisgICAgICBjaGFyc2V0LT5zaWRzICAgPSAwOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgY2ZmX2VuY29kaW5nX2RvbmUoIENGRl9FbmNvZGluZyAgZW5jb2RpbmcgKQorICB7CisgICAgZW5jb2RpbmctPmZvcm1hdCA9IDA7CisgICAgZW5jb2RpbmctPm9mZnNldCA9IDA7CisgICAgZW5jb2RpbmctPmNvdW50ICA9IDA7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBjZmZfZW5jb2RpbmdfbG9hZCggQ0ZGX0VuY29kaW5nICBlbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgIENGRl9DaGFyc2V0ICAgY2hhcnNldCwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgbnVtX2dseXBocywKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICBiYXNlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgb2Zmc2V0ICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfVUludCAgICBjb3VudDsKKyAgICBGVF9VSW50ICAgIGo7CisgICAgRlRfVVNob3J0ICBnbHlwaF9zaWQ7CisgICAgRlRfVUludCAgICBnbHlwaF9jb2RlOworCisKKyAgICAvKiBDaGVjayBmb3IgY2hhcnNldC0+c2lkcy4gIElmIHdlIGRvIG5vdCBoYXZlIHRoaXMsIHdlIGZhaWwuICovCisgICAgaWYgKCAhY2hhcnNldC0+c2lkcyApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIFplcm8gb3V0IHRoZSBjb2RlIHRvIGdpZC9zaWQgbWFwcGluZ3MuICovCisgICAgZm9yICggaiA9IDA7IGogPCAyNTY7IGorKyApCisgICAgeworICAgICAgZW5jb2RpbmctPnNpZHMgW2pdID0gMDsKKyAgICAgIGVuY29kaW5nLT5jb2Rlc1tqXSA9IDA7CisgICAgfQorCisgICAgLyogTm90ZTogVGhlIGVuY29kaW5nIHRhYmxlIGluIGEgQ0ZGIGZvbnQgaXMgaW5kZXhlZCBieSBnbHlwaCBpbmRleDsgICovCisgICAgLyogdGhlIGZpcnN0IGVuY29kZWQgZ2x5cGggaW5kZXggaXMgMS4gIEhlbmNlLCB3ZSByZWFkIHRoZSBjaGFyYWN0ZXIgICovCisgICAgLyogY29kZSAoYGdseXBoX2NvZGUnKSBhdCBpbmRleCBqIGFuZCBtYWtlIHRoZSBhc3NpZ25tZW50OiAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgZW5jb2RpbmctPmNvZGVzW2dseXBoX2NvZGVdID0gaiArIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogV2UgYWxzbyBtYWtlIHRoZSBhc3NpZ25tZW50OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgZW5jb2RpbmctPnNpZHNbZ2x5cGhfY29kZV0gPSBjaGFyc2V0LT5zaWRzW2ogKyAxXSAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogVGhpcyBnaXZlcyB1cyBib3RoIGEgY29kZSB0byBHSUQgYW5kIGEgY29kZSB0byBTSUQgbWFwcGluZy4gICAgICAgICovCisKKyAgICBpZiAoIG9mZnNldCA+IDEgKQorICAgIHsKKyAgICAgIGVuY29kaW5nLT5vZmZzZXQgPSBiYXNlX29mZnNldCArIG9mZnNldDsKKworICAgICAgLyogd2UgbmVlZCB0byBwYXJzZSB0aGUgdGFibGUgdG8gZGV0ZXJtaW5lIGl0cyBzaXplICovCisgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBlbmNvZGluZy0+b2Zmc2V0ICkgfHwKKyAgICAgICAgICAgRlRfUkVBRF9CWVRFKCBlbmNvZGluZy0+Zm9ybWF0ICkgICB8fAorICAgICAgICAgICBGVF9SRUFEX0JZVEUoIGNvdW50ICkgICAgICAgICAgICAgICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBzd2l0Y2ggKCBlbmNvZGluZy0+Zm9ybWF0ICYgMHg3RiApCisgICAgICB7CisgICAgICBjYXNlIDA6CisgICAgICAgIHsKKyAgICAgICAgICBGVF9CeXRlKiAgcDsKKworCisgICAgICAgICAgLyogQnkgY29udmVudGlvbiwgR0lEIDAgaXMgYWx3YXlzICIubm90ZGVmIiBhbmQgaXMgbmV2ZXIgKi8KKyAgICAgICAgICAvKiBjb2RlZCBpbiB0aGUgZm9udC4gIEhlbmNlLCB0aGUgbnVtYmVyIG9mIGNvZGVzIGZvdW5kICAqLworICAgICAgICAgIC8qIGluIHRoZSB0YWJsZSBpcyBgY291bnQrMScuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICBlbmNvZGluZy0+Y291bnQgPSBjb3VudCArIDE7CisKKyAgICAgICAgICBpZiAoIEZUX0ZSQU1FX0VOVEVSKCBjb3VudCApICkKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAgIHAgPSAoRlRfQnl0ZSopc3RyZWFtLT5jdXJzb3I7CisKKyAgICAgICAgICBmb3IgKCBqID0gMTsgaiA8PSBjb3VudDsgaisrICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBnbHlwaF9jb2RlID0gKnArKzsKKworICAgICAgICAgICAgLyogTWFrZSBzdXJlIGogaXMgbm90IHRvbyBiaWcuICovCisgICAgICAgICAgICBpZiAoIGogPCBudW1fZ2x5cGhzICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogQXNzaWduIGNvZGUgdG8gR0lEIG1hcHBpbmcuICovCisgICAgICAgICAgICAgIGVuY29kaW5nLT5jb2Rlc1tnbHlwaF9jb2RlXSA9IChGVF9VU2hvcnQpajsKKworICAgICAgICAgICAgICAvKiBBc3NpZ24gY29kZSB0byBTSUQgbWFwcGluZy4gKi8KKyAgICAgICAgICAgICAgZW5jb2RpbmctPnNpZHNbZ2x5cGhfY29kZV0gPSBjaGFyc2V0LT5zaWRzW2pdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIEZUX0ZSQU1FX0VYSVQoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAxOgorICAgICAgICB7CisgICAgICAgICAgRlRfVUludCAgbmxlZnQ7CisgICAgICAgICAgRlRfVUludCAgaSA9IDE7CisgICAgICAgICAgRlRfVUludCAgazsKKworCisgICAgICAgICAgZW5jb2RpbmctPmNvdW50ID0gMDsKKworICAgICAgICAgIC8qIFBhcnNlIHRoZSBGb3JtYXQxIHJhbmdlcy4gKi8KKyAgICAgICAgICBmb3IgKCBqID0gMDsgIGogPCBjb3VudDsgaisrLCBpICs9IG5sZWZ0ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBSZWFkIHRoZSBmaXJzdCBnbHlwaCBjb2RlIG9mIHRoZSByYW5nZS4gKi8KKyAgICAgICAgICAgIGlmICggRlRfUkVBRF9CWVRFKCBnbHlwaF9jb2RlICkgKQorICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgICAgIC8qIFJlYWQgdGhlIG51bWJlciBvZiBjb2RlcyBpbiB0aGUgcmFuZ2UuICovCisgICAgICAgICAgICBpZiAoIEZUX1JFQURfQllURSggbmxlZnQgKSApCisgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAgICAgLyogSW5jcmVtZW50IG5sZWZ0LCBzbyB3ZSByZWFkIGBubGVmdCArIDEnIGNvZGVzL3NpZHMuICovCisgICAgICAgICAgICBubGVmdCsrOworCisgICAgICAgICAgICAvKiBjb21wdXRlIG1heCBudW1iZXIgb2YgY2hhcmFjdGVyIGNvZGVzICovCisgICAgICAgICAgICBpZiAoIChGVF9VSW50KW5sZWZ0ID4gZW5jb2RpbmctPmNvdW50ICkKKyAgICAgICAgICAgICAgZW5jb2RpbmctPmNvdW50ID0gbmxlZnQ7CisKKyAgICAgICAgICAgIC8qIEZpbGwgaW4gdGhlIHJhbmdlIG9mIGNvZGVzL3NpZHMuICovCisgICAgICAgICAgICBmb3IgKCBrID0gaTsgayA8IG5sZWZ0ICsgaTsgaysrLCBnbHlwaF9jb2RlKysgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBNYWtlIHN1cmUgayBpcyBub3QgdG9vIGJpZy4gKi8KKyAgICAgICAgICAgICAgaWYgKCBrIDwgbnVtX2dseXBocyAmJiBnbHlwaF9jb2RlIDwgMjU2ICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIEFzc2lnbiBjb2RlIHRvIEdJRCBtYXBwaW5nLiAqLworICAgICAgICAgICAgICAgIGVuY29kaW5nLT5jb2Rlc1tnbHlwaF9jb2RlXSA9IChGVF9VU2hvcnQpazsKKworICAgICAgICAgICAgICAgIC8qIEFzc2lnbiBjb2RlIHRvIFNJRCBtYXBwaW5nLiAqLworICAgICAgICAgICAgICAgIGVuY29kaW5nLT5zaWRzW2dseXBoX2NvZGVdID0gY2hhcnNldC0+c2lkc1trXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIC8qIHNpbXBsZSBjaGVjazsgb25lIG5ldmVyIGtub3dzIHdoYXQgY2FuIGJlIGZvdW5kIGluIGEgZm9udCAqLworICAgICAgICAgIGlmICggZW5jb2RpbmctPmNvdW50ID4gMjU2ICkKKyAgICAgICAgICAgIGVuY29kaW5nLT5jb3VudCA9IDI1NjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgRlRfRVJST1IoKCAiY2ZmX2VuY29kaW5nX2xvYWQ6IGludmFsaWQgdGFibGUgZm9ybWF0XG4iICkpOworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgLyogUGFyc2Ugc3VwcGxlbWVudGFsIGVuY29kaW5ncywgaWYgYW55LiAqLworICAgICAgaWYgKCBlbmNvZGluZy0+Zm9ybWF0ICYgMHg4MCApCisgICAgICB7CisgICAgICAgIEZUX1VJbnQgIGdpbmRleDsKKworCisgICAgICAgIC8qIGNvdW50IHN1cHBsZW1lbnRzICovCisgICAgICAgIGlmICggRlRfUkVBRF9CWVRFKCBjb3VudCApICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBjb3VudDsgaisrICkKKyAgICAgICAgeworICAgICAgICAgIC8qIFJlYWQgc3VwcGxlbWVudGFsIGdseXBoIGNvZGUuICovCisgICAgICAgICAgaWYgKCBGVF9SRUFEX0JZVEUoIGdseXBoX2NvZGUgKSApCisgICAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgICAvKiBSZWFkIHRoZSBTSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZ2x5cGggY29kZS4gKi8KKyAgICAgICAgICBpZiAoIEZUX1JFQURfVVNIT1JUKCBnbHlwaF9zaWQgKSApCisgICAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgICAvKiBBc3NpZ24gY29kZSB0byBTSUQgbWFwcGluZy4gKi8KKyAgICAgICAgICBlbmNvZGluZy0+c2lkc1tnbHlwaF9jb2RlXSA9IGdseXBoX3NpZDsKKworICAgICAgICAgIC8qIEZpcnN0LCBsb29rIHVwIEdJRCB3aGljaCBoYXMgYmVlbiBhc3NpZ25lZCB0byAqLworICAgICAgICAgIC8qIFNJRCBnbHlwaF9zaWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIGZvciAoIGdpbmRleCA9IDA7IGdpbmRleCA8IG51bV9nbHlwaHM7IGdpbmRleCsrICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGNoYXJzZXQtPnNpZHNbZ2luZGV4XSA9PSBnbHlwaF9zaWQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBlbmNvZGluZy0+Y29kZXNbZ2x5cGhfY29kZV0gPSAoRlRfVVNob3J0KWdpbmRleDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBXZSB0YWtlIGludG8gYWNjb3VudCB0aGUgZmFjdCBhIENGRiBmb250IGNhbiB1c2UgYSBwcmVkZWZpbmVkICovCisgICAgICAvKiBlbmNvZGluZyB3aXRob3V0IGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBnbHlwaHMgZW5jb2RlZCBieSB0aGlzICovCisgICAgICAvKiBlbmNvZGluZyAoc2VlIHRoZSBub3RlIGF0IHRoZSBlbmQgb2Ygc2VjdGlvbiAxMiBpbiB0aGUgQ0ZGICAgICovCisgICAgICAvKiBzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIHN3aXRjaCAoIChGVF9VSW50KW9mZnNldCApCisgICAgICB7CisgICAgICBjYXNlIDA6CisgICAgICAgIC8qIEZpcnN0LCBjb3B5IHRoZSBjb2RlIHRvIFNJRCBtYXBwaW5nLiAqLworICAgICAgICBGVF9BUlJBWV9DT1BZKCBlbmNvZGluZy0+c2lkcywgY2ZmX3N0YW5kYXJkX2VuY29kaW5nLCAyNTYgKTsKKyAgICAgICAgZ290byBQb3B1bGF0ZTsKKworICAgICAgY2FzZSAxOgorICAgICAgICAvKiBGaXJzdCwgY29weSB0aGUgY29kZSB0byBTSUQgbWFwcGluZy4gKi8KKyAgICAgICAgRlRfQVJSQVlfQ09QWSggZW5jb2RpbmctPnNpZHMsIGNmZl9leHBlcnRfZW5jb2RpbmcsIDI1NiApOworCisgICAgICBQb3B1bGF0ZToKKyAgICAgICAgLyogQ29uc3RydWN0IGNvZGUgdG8gR0lEIG1hcHBpbmcgZnJvbSBjb2RlIHRvIFNJRCBtYXBwaW5nICovCisgICAgICAgIC8qIGFuZCBjaGFyc2V0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgIGVuY29kaW5nLT5jb3VudCA9IDA7CisKKyAgICAgICAgZXJyb3IgPSBjZmZfY2hhcnNldF9jb21wdXRlX2NpZHMoIGNoYXJzZXQsIG51bV9nbHlwaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPm1lbW9yeSApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCAyNTY7IGorKyApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9VSW50ICBzaWQgPSBlbmNvZGluZy0+c2lkc1tqXTsKKyAgICAgICAgICBGVF9VSW50ICBnaWQgPSAwOworCisKKyAgICAgICAgICBpZiAoIHNpZCApCisgICAgICAgICAgICBnaWQgPSBjZmZfY2hhcnNldF9jaWRfdG9fZ2luZGV4KCBjaGFyc2V0LCBzaWQgKTsKKworICAgICAgICAgIGlmICggZ2lkICE9IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGVuY29kaW5nLT5jb2Rlc1tqXSA9IChGVF9VU2hvcnQpZ2lkOworICAgICAgICAgICAgZW5jb2RpbmctPmNvdW50ICAgID0gaiArIDE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBlbmNvZGluZy0+Y29kZXNbal0gPSAwOworICAgICAgICAgICAgZW5jb2RpbmctPnNpZHMgW2pdID0gMDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIEZUX0VSUk9SKCggImNmZl9lbmNvZGluZ19sb2FkOiBpbnZhbGlkIHRhYmxlIGZvcm1hdFxuIiApKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisgICAgfQorCisgIEV4aXQ6CisKKyAgICAvKiBDbGVhbiB1cCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuICovCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2ZmX3N1YmZvbnRfbG9hZCggQ0ZGX1N1YkZvbnQgIGZvbnQsCisgICAgICAgICAgICAgICAgICAgIENGRl9JbmRleCAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICBmb250X2luZGV4LAorICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgYmFzZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIEZUX0xpYnJhcnkgICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgICAgZXJyb3I7CisgICAgQ0ZGX1BhcnNlclJlYyAgICBwYXJzZXI7CisgICAgRlRfQnl0ZSogICAgICAgICBkaWN0ID0gTlVMTDsKKyAgICBGVF9VTG9uZyAgICAgICAgIGRpY3RfbGVuOworICAgIENGRl9Gb250UmVjRGljdCAgdG9wICA9ICZmb250LT5mb250X2RpY3Q7CisgICAgQ0ZGX1ByaXZhdGUgICAgICBwcml2ID0gJmZvbnQtPnByaXZhdGVfZGljdDsKKworCisgICAgY2ZmX3BhcnNlcl9pbml0KCAmcGFyc2VyLCBDRkZfQ09ERV9UT1BESUNULCAmZm9udC0+Zm9udF9kaWN0LCBsaWJyYXJ5ICk7CisKKyAgICAvKiBzZXQgZGVmYXVsdHMgKi8KKyAgICBGVF9NRU1fWkVSTyggdG9wLCBzaXplb2YgKCAqdG9wICkgKTsKKworICAgIHRvcC0+dW5kZXJsaW5lX3Bvc2l0aW9uICA9IC0oIDEwMEwgPDwgMTYgKTsKKyAgICB0b3AtPnVuZGVybGluZV90aGlja25lc3MgPSA1MEwgPDwgMTY7CisgICAgdG9wLT5jaGFyc3RyaW5nX3R5cGUgICAgID0gMjsKKyAgICB0b3AtPmZvbnRfbWF0cml4Lnh4ICAgICAgPSAweDEwMDAwTDsKKyAgICB0b3AtPmZvbnRfbWF0cml4Lnl5ICAgICAgPSAweDEwMDAwTDsKKyAgICB0b3AtPmNpZF9jb3VudCAgICAgICAgICAgPSA4NzIwOworCisgICAgLyogd2UgdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBTSUQgdmFsdWUgMHhGRkZGIHRvIGluZGljYXRlICovCisgICAgLyogbWlzc2luZyBlbnRyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgdG9wLT52ZXJzaW9uICAgICAgICAgICAgID0gMHhGRkZGVTsKKyAgICB0b3AtPm5vdGljZSAgICAgICAgICAgICAgPSAweEZGRkZVOworICAgIHRvcC0+Y29weXJpZ2h0ICAgICAgICAgICA9IDB4RkZGRlU7CisgICAgdG9wLT5mdWxsX25hbWUgICAgICAgICAgID0gMHhGRkZGVTsKKyAgICB0b3AtPmZhbWlseV9uYW1lICAgICAgICAgPSAweEZGRkZVOworICAgIHRvcC0+d2VpZ2h0ICAgICAgICAgICAgICA9IDB4RkZGRlU7CisgICAgdG9wLT5lbWJlZGRlZF9wb3N0c2NyaXB0ID0gMHhGRkZGVTsKKworICAgIHRvcC0+Y2lkX3JlZ2lzdHJ5ICAgICAgICA9IDB4RkZGRlU7CisgICAgdG9wLT5jaWRfb3JkZXJpbmcgICAgICAgID0gMHhGRkZGVTsKKyAgICB0b3AtPmNpZF9mb250X25hbWUgICAgICAgPSAweEZGRkZVOworCisgICAgZXJyb3IgPSBjZmZfaW5kZXhfYWNjZXNzX2VsZW1lbnQoIGlkeCwgZm9udF9pbmRleCwgJmRpY3QsICZkaWN0X2xlbiApOworICAgIGlmICggIWVycm9yICkKKyAgICB7CisgICAgICBGVF9UUkFDRTQoKCAiIHRvcCBkaWN0aW9uYXJ5OlxuIiApKTsKKyAgICAgIGVycm9yID0gY2ZmX3BhcnNlcl9ydW4oICZwYXJzZXIsIGRpY3QsIGRpY3QgKyBkaWN0X2xlbiApOworICAgIH0KKworICAgIGNmZl9pbmRleF9mb3JnZXRfZWxlbWVudCggaWR4LCAmZGljdCApOworCisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBpZiBpdCBpcyBhIENJRCBmb250LCB3ZSBzdG9wIHRoZXJlICovCisgICAgaWYgKCB0b3AtPmNpZF9yZWdpc3RyeSAhPSAweEZGRkZVICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIHBhcnNlIHRoZSBwcml2YXRlIGRpY3Rpb25hcnksIGlmIGFueSAqLworICAgIGlmICggdG9wLT5wcml2YXRlX29mZnNldCAmJiB0b3AtPnByaXZhdGVfc2l6ZSApCisgICAgeworICAgICAgLyogc2V0IGRlZmF1bHRzICovCisgICAgICBGVF9NRU1fWkVSTyggcHJpdiwgc2l6ZW9mICggKnByaXYgKSApOworCisgICAgICBwcml2LT5ibHVlX3NoaWZ0ICAgICAgID0gNzsKKyAgICAgIHByaXYtPmJsdWVfZnV6eiAgICAgICAgPSAxOworICAgICAgcHJpdi0+bGVuSVYgICAgICAgICAgICA9IC0xOworICAgICAgcHJpdi0+ZXhwYW5zaW9uX2ZhY3RvciA9IChGVF9GaXhlZCkoIDAuMDYgKiAweDEwMDAwTCApOworICAgICAgcHJpdi0+Ymx1ZV9zY2FsZSAgICAgICA9IChGVF9GaXhlZCkoIDAuMDM5NjI1ICogMHgxMDAwMEwgKiAxMDAwICk7CisKKyAgICAgIGNmZl9wYXJzZXJfaW5pdCggJnBhcnNlciwgQ0ZGX0NPREVfUFJJVkFURSwgcHJpdiwgbGlicmFyeSApOworCisgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBiYXNlX29mZnNldCArIGZvbnQtPmZvbnRfZGljdC5wcml2YXRlX29mZnNldCApIHx8CisgICAgICAgICAgIEZUX0ZSQU1FX0VOVEVSKCBmb250LT5mb250X2RpY3QucHJpdmF0ZV9zaXplICkgICAgICAgICAgICAgICAgICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBGVF9UUkFDRTQoKCAiIHByaXZhdGUgZGljdGlvbmFyeTpcbiIgKSk7CisgICAgICBlcnJvciA9IGNmZl9wYXJzZXJfcnVuKCAmcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0J5dGUqKXN0cmVhbS0+Y3Vyc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0J5dGUqKXN0cmVhbS0+bGltaXQgKTsKKyAgICAgIEZUX0ZSQU1FX0VYSVQoKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIC8qIGVuc3VyZSB0aGF0IGBudW1fYmx1ZV92YWx1ZXMnIGlzIGV2ZW4gKi8KKyAgICAgIHByaXYtPm51bV9ibHVlX3ZhbHVlcyAmPSB+MTsKKyAgICB9CisKKyAgICAvKiByZWFkIHRoZSBsb2NhbCBzdWJycywgaWYgYW55ICovCisgICAgaWYgKCBwcml2LT5sb2NhbF9zdWJyc19vZmZzZXQgKQorICAgIHsKKyAgICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIGJhc2Vfb2Zmc2V0ICsgdG9wLT5wcml2YXRlX29mZnNldCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5sb2NhbF9zdWJyc19vZmZzZXQgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgZXJyb3IgPSBjZmZfaW5kZXhfaW5pdCggJmZvbnQtPmxvY2FsX3N1YnJzX2luZGV4LCBzdHJlYW0sIDEgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGVycm9yID0gY2ZmX2luZGV4X2dldF9wb2ludGVycyggJmZvbnQtPmxvY2FsX3N1YnJzX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9udC0+bG9jYWxfc3VicnMsIE5VTEwgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBjZmZfc3ViZm9udF9kb25lKCBGVF9NZW1vcnkgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICBDRkZfU3ViRm9udCAgc3ViZm9udCApCisgIHsKKyAgICBpZiAoIHN1YmZvbnQgKQorICAgIHsKKyAgICAgIGNmZl9pbmRleF9kb25lKCAmc3ViZm9udC0+bG9jYWxfc3VicnNfaW5kZXggKTsKKyAgICAgIEZUX0ZSRUUoIHN1YmZvbnQtPmxvY2FsX3N1YnJzICk7CisgICAgfQorICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2ZmX2ZvbnRfbG9hZCggRlRfTGlicmFyeSBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICBDRkZfRm9udCAgIGZvbnQsCisgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgcHVyZV9jZmYgKQorICB7CisgICAgc3RhdGljIGNvbnN0IEZUX0ZyYW1lX0ZpZWxkICBjZmZfaGVhZGVyX2ZpZWxkc1tdID0KKyAgICB7CisjdW5kZWYgIEZUX1NUUlVDVFVSRQorI2RlZmluZSBGVF9TVFJVQ1RVUkUgIENGRl9Gb250UmVjCisKKyAgICAgIEZUX0ZSQU1FX1NUQVJUKCA0ICksCisgICAgICAgIEZUX0ZSQU1FX0JZVEUoIHZlcnNpb25fbWFqb3IgKSwKKyAgICAgICAgRlRfRlJBTUVfQllURSggdmVyc2lvbl9taW5vciApLAorICAgICAgICBGVF9GUkFNRV9CWVRFKCBoZWFkZXJfc2l6ZSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFKCBhYnNvbHV0ZV9vZmZzaXplICksCisgICAgICBGVF9GUkFNRV9FTkQKKyAgICB9OworCisgICAgRlRfRXJyb3IgICAgICAgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgICAgICAgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIEZUX1VMb25nICAgICAgICAgYmFzZV9vZmZzZXQ7CisgICAgQ0ZGX0ZvbnRSZWNEaWN0ICBkaWN0OworICAgIENGRl9JbmRleFJlYyAgICAgc3RyaW5nX2luZGV4OworICAgIEZUX0ludCAgICAgICAgICAgc3ViZm9udF9pbmRleDsKKworCisgICAgRlRfWkVSTyggZm9udCApOworICAgIEZUX1pFUk8oICZzdHJpbmdfaW5kZXggKTsKKworICAgIGZvbnQtPnN0cmVhbSA9IHN0cmVhbTsKKyAgICBmb250LT5tZW1vcnkgPSBtZW1vcnk7CisgICAgZGljdCAgICAgICAgID0gJmZvbnQtPnRvcF9mb250LmZvbnRfZGljdDsKKyAgICBiYXNlX29mZnNldCAgPSBGVF9TVFJFQU1fUE9TKCk7CisKKyAgICAvKiByZWFkIENGRiBmb250IGhlYWRlciAqLworICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCBjZmZfaGVhZGVyX2ZpZWxkcywgZm9udCApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIGNoZWNrIGZvcm1hdCAqLworICAgIGlmICggZm9udC0+dmVyc2lvbl9tYWpvciAgICE9IDEgfHwKKyAgICAgICAgIGZvbnQtPmhlYWRlcl9zaXplICAgICAgPCA0IHx8CisgICAgICAgICBmb250LT5hYnNvbHV0ZV9vZmZzaXplID4gNCApCisgICAgeworICAgICAgRlRfVFJBQ0UyKCggIiAgbm90IGEgQ0ZGIGZvbnQgaGVhZGVyXG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIHNraXAgdGhlIHJlc3Qgb2YgdGhlIGhlYWRlciAqLworICAgIGlmICggRlRfU1RSRUFNX1NLSVAoIGZvbnQtPmhlYWRlcl9zaXplIC0gNCApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIHJlYWQgdGhlIG5hbWUsIHRvcCBkaWN0LCBzdHJpbmcgYW5kIGdsb2JhbCBzdWJycyBpbmRleCAqLworICAgIGlmICggRlRfU0VUX0VSUk9SKCBjZmZfaW5kZXhfaW5pdCggJmZvbnQtPm5hbWVfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIDAgKSApICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgIEZUX1NFVF9FUlJPUiggY2ZmX2luZGV4X2luaXQoICZmb250LT5mb250X2RpY3RfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIDAgKSApICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgIEZUX1NFVF9FUlJPUiggY2ZmX2luZGV4X2luaXQoICZzdHJpbmdfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIDEgKSApICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgIEZUX1NFVF9FUlJPUiggY2ZmX2luZGV4X2luaXQoICZmb250LT5nbG9iYWxfc3VicnNfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIDEgKSApICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgIEZUX1NFVF9FUlJPUiggY2ZmX2luZGV4X2dldF9wb2ludGVycyggJnN0cmluZ19pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbnQtPnN0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250LT5zdHJpbmdfcG9vbCApICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgZm9udC0+bnVtX3N0cmluZ3MgPSBzdHJpbmdfaW5kZXguY291bnQ7CisKKyAgICBpZiAoIHB1cmVfY2ZmICkKKyAgICB7CisgICAgICAvKiB3ZWxsLCB3ZSBkb24ndCByZWFsbHkgZm9yZ2V0IHRoZSBgZGlzYWJsZWQnIGZvbnRzLi4uICovCisgICAgICBzdWJmb250X2luZGV4ID0gZmFjZV9pbmRleDsKKworICAgICAgaWYgKCBzdWJmb250X2luZGV4ID49IChGVF9JbnQpZm9udC0+bmFtZV9pbmRleC5jb3VudCApCisgICAgICB7CisgICAgICAgIEZUX0VSUk9SKCggImNmZl9mb250X2xvYWQ6IgorICAgICAgICAgICAgICAgICAgICIgaW52YWxpZCBzdWJmb250IGluZGV4IGZvciBwdXJlIENGRiBmb250ICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgc3ViZm9udF9pbmRleCApKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIGZvbnQtPm51bV9mYWNlcyA9IGZvbnQtPm5hbWVfaW5kZXguY291bnQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBzdWJmb250X2luZGV4ID0gMDsKKworICAgICAgaWYgKCBmb250LT5uYW1lX2luZGV4LmNvdW50ID4gMSApCisgICAgICB7CisgICAgICAgIEZUX0VSUk9SKCggImNmZl9mb250X2xvYWQ6IgorICAgICAgICAgICAgICAgICAgICIgaW52YWxpZCBDRkYgZm9udCB3aXRoIG11bHRpcGxlIHN1YmZvbnRzXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgIgorICAgICAgICAgICAgICAgICAgICIgaW4gU0ZOVCB3cmFwcGVyXG4iICkpOworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBpbiBjYXNlIG9mIGEgZm9udCBmb3JtYXQgY2hlY2ssIHNpbXBseSBleGl0IG5vdyAqLworICAgIGlmICggZmFjZV9pbmRleCA8IDAgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogbm93LCBwYXJzZSB0aGUgdG9wLWxldmVsIGZvbnQgZGljdGlvbmFyeSAqLworICAgIEZUX1RSQUNFNCgoICJwYXJzaW5nIHRvcC1sZXZlbFxuIiApKTsKKyAgICBlcnJvciA9IGNmZl9zdWJmb250X2xvYWQoICZmb250LT50b3BfZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250LT5mb250X2RpY3RfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJmb250X2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBiYXNlX29mZnNldCArIGRpY3QtPmNoYXJzdHJpbmdzX29mZnNldCApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGVycm9yID0gY2ZmX2luZGV4X2luaXQoICZmb250LT5jaGFyc3RyaW5nc19pbmRleCwgc3RyZWFtLCAwICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBub3csIGNoZWNrIGZvciBhIENJRCBmb250ICovCisgICAgaWYgKCBkaWN0LT5jaWRfcmVnaXN0cnkgIT0gMHhGRkZGVSApCisgICAgeworICAgICAgQ0ZGX0luZGV4UmVjICBmZF9pbmRleDsKKyAgICAgIENGRl9TdWJGb250ICAgc3ViID0gTlVMTDsKKyAgICAgIEZUX1VJbnQgICAgICAgaWR4OworCisKKyAgICAgIC8qIHRoaXMgaXMgYSBDSUQta2V5ZWQgZm9udCwgd2UgbXVzdCBub3cgYWxsb2NhdGUgYSB0YWJsZSBvZiAqLworICAgICAgLyogc3ViLWZvbnRzLCB0aGVuIGxvYWQgZWFjaCBvZiB0aGVtIHNlcGFyYXRlbHkgICAgICAgICAgICAgICovCisgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBiYXNlX29mZnNldCArIGRpY3QtPmNpZF9mZF9hcnJheV9vZmZzZXQgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgZXJyb3IgPSBjZmZfaW5kZXhfaW5pdCggJmZkX2luZGV4LCBzdHJlYW0sIDAgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGlmICggZmRfaW5kZXguY291bnQgPiBDRkZfTUFYX0NJRF9GT05UUyApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFMCgoICJjZmZfZm9udF9sb2FkOiBGRCBhcnJheSB0b28gbGFyZ2UgaW4gQ0lEIGZvbnRcbiIgKSk7CisgICAgICAgIGdvdG8gRmFpbF9DSUQ7CisgICAgICB9CisKKyAgICAgIC8qIGFsbG9jYXRlICYgcmVhZCBlYWNoIGZvbnQgZGljdCBpbmRlcGVuZGVudGx5ICovCisgICAgICBmb250LT5udW1fc3ViZm9udHMgPSBmZF9pbmRleC5jb3VudDsKKyAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBzdWIsIGZkX2luZGV4LmNvdW50ICkgKQorICAgICAgICBnb3RvIEZhaWxfQ0lEOworCisgICAgICAvKiBzZXQgdXAgcG9pbnRlciB0YWJsZSAqLworICAgICAgZm9yICggaWR4ID0gMDsgaWR4IDwgZmRfaW5kZXguY291bnQ7IGlkeCsrICkKKyAgICAgICAgZm9udC0+c3ViZm9udHNbaWR4XSA9IHN1YiArIGlkeDsKKworICAgICAgLyogbm93IGxvYWQgZWFjaCBzdWJmb250IGluZGVwZW5kZW50bHkgKi8KKyAgICAgIGZvciAoIGlkeCA9IDA7IGlkeCA8IGZkX2luZGV4LmNvdW50OyBpZHgrKyApCisgICAgICB7CisgICAgICAgIHN1YiA9IGZvbnQtPnN1YmZvbnRzW2lkeF07CisgICAgICAgIEZUX1RSQUNFNCgoICJwYXJzaW5nIHN1YmZvbnQgJXVcbiIsIGlkeCApKTsKKyAgICAgICAgZXJyb3IgPSBjZmZfc3ViZm9udF9sb2FkKCBzdWIsICZmZF9pbmRleCwgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwgYmFzZV9vZmZzZXQsIGxpYnJhcnkgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBGYWlsX0NJRDsKKyAgICAgIH0KKworICAgICAgLyogbm93IGxvYWQgdGhlIEZEIFNlbGVjdCBhcnJheSAqLworICAgICAgZXJyb3IgPSBDRkZfTG9hZF9GRF9TZWxlY3QoICZmb250LT5mZF9zZWxlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC0+Y2hhcnN0cmluZ3NfaW5kZXguY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vfb2Zmc2V0ICsgZGljdC0+Y2lkX2ZkX3NlbGVjdF9vZmZzZXQgKTsKKworICAgIEZhaWxfQ0lEOgorICAgICAgY2ZmX2luZGV4X2RvbmUoICZmZF9pbmRleCApOworCisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKyAgICBlbHNlCisgICAgICBmb250LT5udW1fc3ViZm9udHMgPSAwOworCisgICAgLyogcmVhZCB0aGUgY2hhcnN0cmluZ3MgaW5kZXggbm93ICovCisgICAgaWYgKCBkaWN0LT5jaGFyc3RyaW5nc19vZmZzZXQgPT0gMCApCisgICAgeworICAgICAgRlRfRVJST1IoKCAiY2ZmX2ZvbnRfbG9hZDogbm8gY2hhcnN0cmluZ3Mgb2Zmc2V0XG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGZvbnQtPm51bV9nbHlwaHMgPSBmb250LT5jaGFyc3RyaW5nc19pbmRleC5jb3VudDsKKworICAgIGVycm9yID0gY2ZmX2luZGV4X2dldF9wb2ludGVycyggJmZvbnQtPmdsb2JhbF9zdWJyc19pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250LT5nbG9iYWxfc3VicnMsIE5VTEwgKTsKKworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogcmVhZCB0aGUgQ2hhcnNldCBhbmQgRW5jb2RpbmcgdGFibGVzIGlmIGF2YWlsYWJsZSAqLworICAgIGlmICggZm9udC0+bnVtX2dseXBocyA+IDAgKQorICAgIHsKKyAgICAgIEZUX0Jvb2wgIGludmVydCA9IEZUX0JPT0woIGRpY3QtPmNpZF9yZWdpc3RyeSAhPSAweEZGRkZVICYmIHB1cmVfY2ZmICk7CisKKworICAgICAgZXJyb3IgPSBjZmZfY2hhcnNldF9sb2FkKCAmZm9udC0+Y2hhcnNldCwgZm9udC0+bnVtX2dseXBocywgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX29mZnNldCwgZGljdC0+Y2hhcnNldF9vZmZzZXQsIGludmVydCApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogQ0lELWtleWVkIENGRnMgZG9uJ3QgaGF2ZSBhbiBlbmNvZGluZyAqLworICAgICAgaWYgKCBkaWN0LT5jaWRfcmVnaXN0cnkgPT0gMHhGRkZGVSApCisgICAgICB7CisgICAgICAgIGVycm9yID0gY2ZmX2VuY29kaW5nX2xvYWQoICZmb250LT5lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbnQtPmNoYXJzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtPm51bV9nbHlwaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QtPmVuY29kaW5nX29mZnNldCApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisgICAgfQorCisgICAgLyogZ2V0IHRoZSBmb250IG5hbWUgKC9DSURGb250TmFtZSBmb3IgQ0lELWtleWVkIGZvbnRzLCAqLworICAgIC8qIC9Gb250TmFtZSBvdGhlcndpc2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBmb250LT5mb250X25hbWUgPSBjZmZfaW5kZXhfZ2V0X25hbWUoIGZvbnQsIHN1YmZvbnRfaW5kZXggKTsKKworICBFeGl0OgorICAgIGNmZl9pbmRleF9kb25lKCAmc3RyaW5nX2luZGV4ICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmZl9mb250X2RvbmUoIENGRl9Gb250ICBmb250ICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gZm9udC0+bWVtb3J5OworICAgIEZUX1VJbnQgICAgaWR4OworCisKKyAgICBjZmZfaW5kZXhfZG9uZSggJmZvbnQtPmdsb2JhbF9zdWJyc19pbmRleCApOworICAgIGNmZl9pbmRleF9kb25lKCAmZm9udC0+Zm9udF9kaWN0X2luZGV4ICk7CisgICAgY2ZmX2luZGV4X2RvbmUoICZmb250LT5uYW1lX2luZGV4ICk7CisgICAgY2ZmX2luZGV4X2RvbmUoICZmb250LT5jaGFyc3RyaW5nc19pbmRleCApOworCisgICAgLyogcmVsZWFzZSBmb250IGRpY3Rpb25hcmllcywgYnV0IG9ubHkgaWYgd29ya2luZyB3aXRoICovCisgICAgLyogYSBDSUQga2V5ZWQgQ0ZGIGZvbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBmb250LT5udW1fc3ViZm9udHMgPiAwICkKKyAgICB7CisgICAgICBmb3IgKCBpZHggPSAwOyBpZHggPCBmb250LT5udW1fc3ViZm9udHM7IGlkeCsrICkKKyAgICAgICAgY2ZmX3N1YmZvbnRfZG9uZSggbWVtb3J5LCBmb250LT5zdWJmb250c1tpZHhdICk7CisKKyAgICAgIC8qIHRoZSBzdWJmb250cyBhcnJheSBoYXMgYmVlbiBhbGxvY2F0ZWQgYXMgYSBzaW5nbGUgYmxvY2sgKi8KKyAgICAgIEZUX0ZSRUUoIGZvbnQtPnN1YmZvbnRzWzBdICk7CisgICAgfQorCisgICAgY2ZmX2VuY29kaW5nX2RvbmUoICZmb250LT5lbmNvZGluZyApOworICAgIGNmZl9jaGFyc2V0X2RvbmUoICZmb250LT5jaGFyc2V0LCBmb250LT5zdHJlYW0gKTsKKworICAgIGNmZl9zdWJmb250X2RvbmUoIG1lbW9yeSwgJmZvbnQtPnRvcF9mb250ICk7CisKKyAgICBDRkZfRG9uZV9GRF9TZWxlY3QoICZmb250LT5mZF9zZWxlY3QsIGZvbnQtPnN0cmVhbSApOworCisgICAgRlRfRlJFRSggZm9udC0+Zm9udF9pbmZvICk7CisKKyAgICBGVF9GUkVFKCBmb250LT5mb250X25hbWUgKTsKKyAgICBGVF9GUkVFKCBmb250LT5nbG9iYWxfc3VicnMgKTsKKyAgICBGVF9GUkVFKCBmb250LT5zdHJpbmdzICk7CisgICAgRlRfRlJFRSggZm9udC0+c3RyaW5nX3Bvb2wgKTsKKworICAgIGlmICggZm9udC0+Y2YyX2luc3RhbmNlLmZpbmFsaXplciApCisgICAgeworICAgICAgZm9udC0+Y2YyX2luc3RhbmNlLmZpbmFsaXplciggZm9udC0+Y2YyX2luc3RhbmNlLmRhdGEgKTsKKyAgICAgIEZUX0ZSRUUoIGZvbnQtPmNmMl9pbnN0YW5jZS5kYXRhICk7CisgICAgfQorICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZsb2FkLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZsb2FkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBkODAxNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZmxvYWQuaApAQCAtMCwwICsxLDgzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZmZsb2FkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgT3BlblR5cGUgJiBDRkYgZGF0YS9wcm9ncmFtIHRhYmxlcyBsb2FkZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwMywgMjAwNywgMjAwOCwgMjAxMCBieSAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19DRkZMT0FEX0hfXworI2RlZmluZSBfX0NGRkxPQURfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJjZmZ0eXBlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisgIEZUX0xPQ0FMKCBGVF9VU2hvcnQgKQorICBjZmZfZ2V0X3N0YW5kYXJkX2VuY29kaW5nKCBGVF9VSW50ICBjaGFyY29kZSApOworCisKKyAgRlRfTE9DQUwoIEZUX1N0cmluZyogKQorICBjZmZfaW5kZXhfZ2V0X3N0cmluZyggQ0ZGX0ZvbnQgIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgZWxlbWVudCApOworCisgIEZUX0xPQ0FMKCBGVF9TdHJpbmcqICkKKyAgY2ZmX2luZGV4X2dldF9zaWRfc3RyaW5nKCBDRkZfRm9udCAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgc2lkICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjZmZfaW5kZXhfYWNjZXNzX2VsZW1lbnQoIENGRl9JbmRleCAgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiogIHBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogIHBieXRlX2xlbiApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2ZmX2luZGV4X2ZvcmdldF9lbGVtZW50KCBDRkZfSW5kZXggIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiogIHBieXRlcyApOworCisgIEZUX0xPQ0FMKCBGVF9TdHJpbmcqICkKKyAgY2ZmX2luZGV4X2dldF9uYW1lKCBDRkZfRm9udCAgZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgZWxlbWVudCApOworCisKKyAgRlRfTE9DQUwoIEZUX1VJbnQgKQorICBjZmZfY2hhcnNldF9jaWRfdG9fZ2luZGV4KCBDRkZfQ2hhcnNldCAgY2hhcnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIGNpZCApOworCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgY2ZmX2ZvbnRfbG9hZCggRlRfTGlicmFyeSBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICBDRkZfRm9udCAgIGZvbnQsCisgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgcHVyZV9jZmYgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNmZl9mb250X2RvbmUoIENGRl9Gb250ICBmb250ICk7CisKKworICBGVF9MT0NBTCggRlRfQnl0ZSApCisgIGNmZl9mZF9zZWxlY3RfZ2V0KCBDRkZfRkRTZWxlY3QgIGZkc2VsZWN0LAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaF9pbmRleCApOworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fQ0ZGTE9BRF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZm9ianMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZm9ianMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGVjNzQyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2Zmb2Jqcy5jCkBAIC0wLDAgKzEsMTA4MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2Zmb2Jqcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIE9wZW5UeXBlIG9iamVjdHMgbWFuYWdlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRjZmZkcnYuaCIKKworI2luY2x1ZGUgImNmZm9ianMuaCIKKyNpbmNsdWRlICJjZmZsb2FkLmgiCisjaW5jbHVkZSAiY2ZmY21hcC5oIgorI2luY2x1ZGUgImNmZnBpYy5oIgorCisjaW5jbHVkZSAiY2ZmZXJycy5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfY2Zmb2JqcworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFIEZVTkNUSU9OUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBOb3RlIHRoYXQgd2Ugc3RvcmUgdGhlIGdsb2JhbCBoaW50cyBpbiB0aGUgc2l6ZSdzIGBpbnRlcm5hbCcgcm9vdCAgICAqLworICAvKiAgZmllbGQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgc3RhdGljIFBTSF9HbG9iYWxzX0Z1bmNzCisgIGNmZl9zaXplX2dldF9nbG9iYWxzX2Z1bmNzKCBDRkZfU2l6ZSAgc2l6ZSApCisgIHsKKyAgICBDRkZfRmFjZSAgICAgICAgICBmYWNlICAgICA9IChDRkZfRmFjZSlzaXplLT5yb290LmZhY2U7CisgICAgQ0ZGX0ZvbnQgICAgICAgICAgZm9udCAgICAgPSAoQ0ZGX0ZvbnQpZmFjZS0+ZXh0cmEuZGF0YTsKKyAgICBQU0hpbnRlcl9TZXJ2aWNlICBwc2hpbnRlciA9IGZvbnQtPnBzaGludGVyOworICAgIEZUX01vZHVsZSAgICAgICAgIG1vZHVsZTsKKworCisgICAgbW9kdWxlID0gRlRfR2V0X01vZHVsZSggc2l6ZS0+cm9vdC5mYWNlLT5kcml2ZXItPnJvb3QubGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNoaW50ZXIiICk7CisgICAgcmV0dXJuICggbW9kdWxlICYmIHBzaGludGVyICYmIHBzaGludGVyLT5nZXRfZ2xvYmFsc19mdW5jcyApCisgICAgICAgICAgID8gcHNoaW50ZXItPmdldF9nbG9iYWxzX2Z1bmNzKCBtb2R1bGUgKQorICAgICAgICAgICA6IDA7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmZl9zaXplX2RvbmUoIEZUX1NpemUgIGNmZnNpemUgKSAgICAgICAgLyogQ0ZGX1NpemUgKi8KKyAgeworICAgIENGRl9TaXplICAgICAgc2l6ZSAgICAgPSAoQ0ZGX1NpemUpY2Zmc2l6ZTsKKyAgICBDRkZfRmFjZSAgICAgIGZhY2UgICAgID0gKENGRl9GYWNlKXNpemUtPnJvb3QuZmFjZTsKKyAgICBDRkZfRm9udCAgICAgIGZvbnQgICAgID0gKENGRl9Gb250KWZhY2UtPmV4dHJhLmRhdGE7CisgICAgQ0ZGX0ludGVybmFsICBpbnRlcm5hbCA9IChDRkZfSW50ZXJuYWwpY2Zmc2l6ZS0+aW50ZXJuYWw7CisKKworICAgIGlmICggaW50ZXJuYWwgKQorICAgIHsKKyAgICAgIFBTSF9HbG9iYWxzX0Z1bmNzICBmdW5jczsKKworCisgICAgICBmdW5jcyA9IGNmZl9zaXplX2dldF9nbG9iYWxzX2Z1bmNzKCBzaXplICk7CisgICAgICBpZiAoIGZ1bmNzICkKKyAgICAgIHsKKyAgICAgICAgRlRfVUludCAgaTsKKworCisgICAgICAgIGZ1bmNzLT5kZXN0cm95KCBpbnRlcm5hbC0+dG9wZm9udCApOworCisgICAgICAgIGZvciAoIGkgPSBmb250LT5udW1fc3ViZm9udHM7IGkgPiAwOyBpLS0gKQorICAgICAgICAgIGZ1bmNzLT5kZXN0cm95KCBpbnRlcm5hbC0+c3ViZm9udHNbaSAtIDFdICk7CisgICAgICB9CisKKyAgICAgIC8qIGBpbnRlcm5hbCcgaXMgZnJlZWQgYnkgZGVzdHJveV9zaXplIChpbiBmdG9ianMuYykgKi8KKyAgICB9CisgIH0KKworCisgIC8qIENGRiBhbmQgVHlwZSAxIHByaXZhdGUgZGljdGlvbmFyaWVzIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50ICAgICAgKi8KKyAgLyogc3RydWN0dXJlczsgd2UgbmVlZCB0byBzeW50aGVzaXplIGEgVHlwZSAxIGRpY3Rpb25hcnkgb24gdGhlIGZseSAqLworCisgIHN0YXRpYyB2b2lkCisgIGNmZl9tYWtlX3ByaXZhdGVfZGljdCggQ0ZGX1N1YkZvbnQgIHN1YmZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFNfUHJpdmF0ZSAgIHByaXYgKQorICB7CisgICAgQ0ZGX1ByaXZhdGUgIGNwcml2ID0gJnN1YmZvbnQtPnByaXZhdGVfZGljdDsKKyAgICBGVF9VSW50ICAgICAgbiwgY291bnQ7CisKKworICAgIEZUX01FTV9aRVJPKCBwcml2LCBzaXplb2YgKCAqcHJpdiApICk7CisKKyAgICBjb3VudCA9IHByaXYtPm51bV9ibHVlX3ZhbHVlcyA9IGNwcml2LT5udW1fYmx1ZV92YWx1ZXM7CisgICAgZm9yICggbiA9IDA7IG4gPCBjb3VudDsgbisrICkKKyAgICAgIHByaXYtPmJsdWVfdmFsdWVzW25dID0gKEZUX1Nob3J0KWNwcml2LT5ibHVlX3ZhbHVlc1tuXTsKKworICAgIGNvdW50ID0gcHJpdi0+bnVtX290aGVyX2JsdWVzID0gY3ByaXYtPm51bV9vdGhlcl9ibHVlczsKKyAgICBmb3IgKCBuID0gMDsgbiA8IGNvdW50OyBuKysgKQorICAgICAgcHJpdi0+b3RoZXJfYmx1ZXNbbl0gPSAoRlRfU2hvcnQpY3ByaXYtPm90aGVyX2JsdWVzW25dOworCisgICAgY291bnQgPSBwcml2LT5udW1fZmFtaWx5X2JsdWVzID0gY3ByaXYtPm51bV9mYW1pbHlfYmx1ZXM7CisgICAgZm9yICggbiA9IDA7IG4gPCBjb3VudDsgbisrICkKKyAgICAgIHByaXYtPmZhbWlseV9ibHVlc1tuXSA9IChGVF9TaG9ydCljcHJpdi0+ZmFtaWx5X2JsdWVzW25dOworCisgICAgY291bnQgPSBwcml2LT5udW1fZmFtaWx5X290aGVyX2JsdWVzID0gY3ByaXYtPm51bV9mYW1pbHlfb3RoZXJfYmx1ZXM7CisgICAgZm9yICggbiA9IDA7IG4gPCBjb3VudDsgbisrICkKKyAgICAgIHByaXYtPmZhbWlseV9vdGhlcl9ibHVlc1tuXSA9IChGVF9TaG9ydCljcHJpdi0+ZmFtaWx5X290aGVyX2JsdWVzW25dOworCisgICAgcHJpdi0+Ymx1ZV9zY2FsZSA9IGNwcml2LT5ibHVlX3NjYWxlOworICAgIHByaXYtPmJsdWVfc2hpZnQgPSAoRlRfSW50KWNwcml2LT5ibHVlX3NoaWZ0OworICAgIHByaXYtPmJsdWVfZnV6eiAgPSAoRlRfSW50KWNwcml2LT5ibHVlX2Z1eno7CisKKyAgICBwcml2LT5zdGFuZGFyZF93aWR0aFswXSAgPSAoRlRfVVNob3J0KWNwcml2LT5zdGFuZGFyZF93aWR0aDsKKyAgICBwcml2LT5zdGFuZGFyZF9oZWlnaHRbMF0gPSAoRlRfVVNob3J0KWNwcml2LT5zdGFuZGFyZF9oZWlnaHQ7CisKKyAgICBjb3VudCA9IHByaXYtPm51bV9zbmFwX3dpZHRocyA9IGNwcml2LT5udW1fc25hcF93aWR0aHM7CisgICAgZm9yICggbiA9IDA7IG4gPCBjb3VudDsgbisrICkKKyAgICAgIHByaXYtPnNuYXBfd2lkdGhzW25dID0gKEZUX1Nob3J0KWNwcml2LT5zbmFwX3dpZHRoc1tuXTsKKworICAgIGNvdW50ID0gcHJpdi0+bnVtX3NuYXBfaGVpZ2h0cyA9IGNwcml2LT5udW1fc25hcF9oZWlnaHRzOworICAgIGZvciAoIG4gPSAwOyBuIDwgY291bnQ7IG4rKyApCisgICAgICBwcml2LT5zbmFwX2hlaWdodHNbbl0gPSAoRlRfU2hvcnQpY3ByaXYtPnNuYXBfaGVpZ2h0c1tuXTsKKworICAgIHByaXYtPmZvcmNlX2JvbGQgICAgID0gY3ByaXYtPmZvcmNlX2JvbGQ7CisgICAgcHJpdi0+bGFuZ3VhZ2VfZ3JvdXAgPSBjcHJpdi0+bGFuZ3VhZ2VfZ3JvdXA7CisgICAgcHJpdi0+bGVuSVYgICAgICAgICAgPSBjcHJpdi0+bGVuSVY7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBjZmZfc2l6ZV9pbml0KCBGVF9TaXplICBjZmZzaXplICkgICAgICAgICAvKiBDRkZfU2l6ZSAqLworICB7CisgICAgQ0ZGX1NpemUgICAgICAgICAgIHNpemUgID0gKENGRl9TaXplKWNmZnNpemU7CisgICAgRlRfRXJyb3IgICAgICAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIFBTSF9HbG9iYWxzX0Z1bmNzICBmdW5jcyA9IGNmZl9zaXplX2dldF9nbG9iYWxzX2Z1bmNzKCBzaXplICk7CisKKworICAgIGlmICggZnVuY3MgKQorICAgIHsKKyAgICAgIENGRl9GYWNlICAgICAgZmFjZSAgICAgPSAoQ0ZGX0ZhY2UpY2Zmc2l6ZS0+ZmFjZTsKKyAgICAgIENGRl9Gb250ICAgICAgZm9udCAgICAgPSAoQ0ZGX0ZvbnQpZmFjZS0+ZXh0cmEuZGF0YTsKKyAgICAgIENGRl9JbnRlcm5hbCAgaW50ZXJuYWwgPSBOVUxMOworCisgICAgICBQU19Qcml2YXRlUmVjICBwcml2OworICAgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5ID0gY2Zmc2l6ZS0+ZmFjZS0+bWVtb3J5OworCisgICAgICBGVF9VSW50ICBpOworCisKKyAgICAgIGlmICggRlRfTkVXKCBpbnRlcm5hbCApICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBjZmZfbWFrZV9wcml2YXRlX2RpY3QoICZmb250LT50b3BfZm9udCwgJnByaXYgKTsKKyAgICAgIGVycm9yID0gZnVuY3MtPmNyZWF0ZSggY2Zmc2l6ZS0+ZmFjZS0+bWVtb3J5LCAmcHJpdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmludGVybmFsLT50b3Bmb250ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBmb3IgKCBpID0gZm9udC0+bnVtX3N1YmZvbnRzOyBpID4gMDsgaS0tICkKKyAgICAgIHsKKyAgICAgICAgQ0ZGX1N1YkZvbnQgIHN1YiA9IGZvbnQtPnN1YmZvbnRzW2kgLSAxXTsKKworCisgICAgICAgIGNmZl9tYWtlX3ByaXZhdGVfZGljdCggc3ViLCAmcHJpdiApOworICAgICAgICBlcnJvciA9IGZ1bmNzLT5jcmVhdGUoIGNmZnNpemUtPmZhY2UtPm1lbW9yeSwgJnByaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmludGVybmFsLT5zdWJmb250c1tpIC0gMV0gKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICBjZmZzaXplLT5pbnRlcm5hbCA9IChGVF9TaXplX0ludGVybmFsKSh2b2lkKilpbnRlcm5hbDsKKyAgICB9CisKKyAgICBzaXplLT5zdHJpa2VfaW5kZXggPSAweEZGRkZGRkZGVUw7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNmZl9zaXplX3NlbGVjdCggRlRfU2l6ZSAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHN0cmlrZV9pbmRleCApCisgIHsKKyAgICBDRkZfU2l6ZSAgICAgICAgICAgY2Zmc2l6ZSA9IChDRkZfU2l6ZSlzaXplOworICAgIFBTSF9HbG9iYWxzX0Z1bmNzICBmdW5jczsKKworCisgICAgY2Zmc2l6ZS0+c3RyaWtlX2luZGV4ID0gc3RyaWtlX2luZGV4OworCisgICAgRlRfU2VsZWN0X01ldHJpY3MoIHNpemUtPmZhY2UsIHN0cmlrZV9pbmRleCApOworCisgICAgZnVuY3MgPSBjZmZfc2l6ZV9nZXRfZ2xvYmFsc19mdW5jcyggY2Zmc2l6ZSApOworCisgICAgaWYgKCBmdW5jcyApCisgICAgeworICAgICAgQ0ZGX0ZhY2UgICAgICBmYWNlICAgICA9IChDRkZfRmFjZSlzaXplLT5mYWNlOworICAgICAgQ0ZGX0ZvbnQgICAgICBmb250ICAgICA9IChDRkZfRm9udClmYWNlLT5leHRyYS5kYXRhOworICAgICAgQ0ZGX0ludGVybmFsICBpbnRlcm5hbCA9IChDRkZfSW50ZXJuYWwpc2l6ZS0+aW50ZXJuYWw7CisKKyAgICAgIEZUX1VMb25nICB0b3BfdXBtICA9IGZvbnQtPnRvcF9mb250LmZvbnRfZGljdC51bml0c19wZXJfZW07CisgICAgICBGVF9VSW50ICAgaTsKKworCisgICAgICBmdW5jcy0+c2V0X3NjYWxlKCBpbnRlcm5hbC0+dG9wZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtPm1ldHJpY3MueF9zY2FsZSwgc2l6ZS0+bWV0cmljcy55X3NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCApOworCisgICAgICBmb3IgKCBpID0gZm9udC0+bnVtX3N1YmZvbnRzOyBpID4gMDsgaS0tICkKKyAgICAgIHsKKyAgICAgICAgQ0ZGX1N1YkZvbnQgIHN1YiAgICAgPSBmb250LT5zdWJmb250c1tpIC0gMV07CisgICAgICAgIEZUX1VMb25nICAgICBzdWJfdXBtID0gc3ViLT5mb250X2RpY3QudW5pdHNfcGVyX2VtOworICAgICAgICBGVF9Qb3MgICAgICAgeF9zY2FsZSwgeV9zY2FsZTsKKworCisgICAgICAgIGlmICggdG9wX3VwbSAhPSBzdWJfdXBtICkKKyAgICAgICAgeworICAgICAgICAgIHhfc2NhbGUgPSBGVF9NdWxEaXYoIHNpemUtPm1ldHJpY3MueF9zY2FsZSwgdG9wX3VwbSwgc3ViX3VwbSApOworICAgICAgICAgIHlfc2NhbGUgPSBGVF9NdWxEaXYoIHNpemUtPm1ldHJpY3MueV9zY2FsZSwgdG9wX3VwbSwgc3ViX3VwbSApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHhfc2NhbGUgPSBzaXplLT5tZXRyaWNzLnhfc2NhbGU7CisgICAgICAgICAgeV9zY2FsZSA9IHNpemUtPm1ldHJpY3MueV9zY2FsZTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmNzLT5zZXRfc2NhbGUoIGludGVybmFsLT5zdWJmb250c1tpIC0gMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHhfc2NhbGUsIHlfc2NhbGUsIDAsIDAgKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMgKi8KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBjZmZfc2l6ZV9yZXF1ZXN0KCBGVF9TaXplICAgICAgICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgIEZUX1NpemVfUmVxdWVzdCAgcmVxICkKKyAgeworICAgIENGRl9TaXplICAgICAgICAgICBjZmZzaXplID0gKENGRl9TaXplKXNpemU7CisgICAgUFNIX0dsb2JhbHNfRnVuY3MgIGZ1bmNzOworCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMKKworICAgIGlmICggRlRfSEFTX0ZJWEVEX1NJWkVTKCBzaXplLT5mYWNlICkgKQorICAgIHsKKyAgICAgIENGRl9GYWNlICAgICAgY2ZmZmFjZSA9IChDRkZfRmFjZSlzaXplLT5mYWNlOworICAgICAgU0ZOVF9TZXJ2aWNlICBzZm50ICAgID0gKFNGTlRfU2VydmljZSljZmZmYWNlLT5zZm50OworICAgICAgRlRfVUxvbmcgICAgICBzdHJpa2VfaW5kZXg7CisKKworICAgICAgaWYgKCBzZm50LT5zZXRfc2JpdF9zdHJpa2UoIGNmZmZhY2UsIHJlcSwgJnN0cmlrZV9pbmRleCApICkKKyAgICAgICAgY2Zmc2l6ZS0+c3RyaWtlX2luZGV4ID0gMHhGRkZGRkZGRlVMOworICAgICAgZWxzZQorICAgICAgICByZXR1cm4gY2ZmX3NpemVfc2VsZWN0KCBzaXplLCBzdHJpa2VfaW5kZXggKTsKKyAgICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMgKi8KKworICAgIEZUX1JlcXVlc3RfTWV0cmljcyggc2l6ZS0+ZmFjZSwgcmVxICk7CisKKyAgICBmdW5jcyA9IGNmZl9zaXplX2dldF9nbG9iYWxzX2Z1bmNzKCBjZmZzaXplICk7CisKKyAgICBpZiAoIGZ1bmNzICkKKyAgICB7CisgICAgICBDRkZfRmFjZSAgICAgIGNmZmZhY2UgID0gKENGRl9GYWNlKXNpemUtPmZhY2U7CisgICAgICBDRkZfRm9udCAgICAgIGZvbnQgICAgID0gKENGRl9Gb250KWNmZmZhY2UtPmV4dHJhLmRhdGE7CisgICAgICBDRkZfSW50ZXJuYWwgIGludGVybmFsID0gKENGRl9JbnRlcm5hbClzaXplLT5pbnRlcm5hbDsKKworICAgICAgRlRfVUxvbmcgIHRvcF91cG0gID0gZm9udC0+dG9wX2ZvbnQuZm9udF9kaWN0LnVuaXRzX3Blcl9lbTsKKyAgICAgIEZUX1VJbnQgICBpOworCisKKyAgICAgIGZ1bmNzLT5zZXRfc2NhbGUoIGludGVybmFsLT50b3Bmb250LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0+bWV0cmljcy54X3NjYWxlLCBzaXplLT5tZXRyaWNzLnlfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAwLCAwICk7CisKKyAgICAgIGZvciAoIGkgPSBmb250LT5udW1fc3ViZm9udHM7IGkgPiAwOyBpLS0gKQorICAgICAgeworICAgICAgICBDRkZfU3ViRm9udCAgc3ViICAgICA9IGZvbnQtPnN1YmZvbnRzW2kgLSAxXTsKKyAgICAgICAgRlRfVUxvbmcgICAgIHN1Yl91cG0gPSBzdWItPmZvbnRfZGljdC51bml0c19wZXJfZW07CisgICAgICAgIEZUX1BvcyAgICAgICB4X3NjYWxlLCB5X3NjYWxlOworCisKKyAgICAgICAgaWYgKCB0b3BfdXBtICE9IHN1Yl91cG0gKQorICAgICAgICB7CisgICAgICAgICAgeF9zY2FsZSA9IEZUX011bERpdiggc2l6ZS0+bWV0cmljcy54X3NjYWxlLCB0b3BfdXBtLCBzdWJfdXBtICk7CisgICAgICAgICAgeV9zY2FsZSA9IEZUX011bERpdiggc2l6ZS0+bWV0cmljcy55X3NjYWxlLCB0b3BfdXBtLCBzdWJfdXBtICk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgeF9zY2FsZSA9IHNpemUtPm1ldHJpY3MueF9zY2FsZTsKKyAgICAgICAgICB5X3NjYWxlID0gc2l6ZS0+bWV0cmljcy55X3NjYWxlOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3MtPnNldF9zY2FsZSggaW50ZXJuYWwtPnN1YmZvbnRzW2kgLSAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeF9zY2FsZSwgeV9zY2FsZSwgMCwgMCApOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVCAgRlVOQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjZmZfc2xvdF9kb25lKCBGVF9HbHlwaFNsb3QgIHNsb3QgKQorICB7CisgICAgc2xvdC0+aW50ZXJuYWwtPmdseXBoX2hpbnRzID0gMDsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNmZl9zbG90X2luaXQoIEZUX0dseXBoU2xvdCAgc2xvdCApCisgIHsKKyAgICBDRkZfRmFjZSAgICAgICAgICBmYWNlICAgICA9IChDRkZfRmFjZSlzbG90LT5mYWNlOworICAgIENGRl9Gb250ICAgICAgICAgIGZvbnQgICAgID0gKENGRl9Gb250KWZhY2UtPmV4dHJhLmRhdGE7CisgICAgUFNIaW50ZXJfU2VydmljZSAgcHNoaW50ZXIgPSBmb250LT5wc2hpbnRlcjsKKworCisgICAgaWYgKCBwc2hpbnRlciApCisgICAgeworICAgICAgRlRfTW9kdWxlICBtb2R1bGU7CisKKworICAgICAgbW9kdWxlID0gRlRfR2V0X01vZHVsZSggc2xvdC0+ZmFjZS0+ZHJpdmVyLT5yb290LmxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNoaW50ZXIiICk7CisgICAgICBpZiAoIG1vZHVsZSApCisgICAgICB7CisgICAgICAgIFQyX0hpbnRzX0Z1bmNzICBmdW5jczsKKworCisgICAgICAgIGZ1bmNzID0gcHNoaW50ZXItPmdldF90Ml9mdW5jcyggbW9kdWxlICk7CisgICAgICAgIHNsb3QtPmludGVybmFsLT5nbHlwaF9oaW50cyA9ICh2b2lkKilmdW5jczsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFDRSAgRlVOQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgc3RhdGljIEZUX1N0cmluZyoKKyAgY2ZmX3N0cmNweSggRlRfTWVtb3J5ICAgICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICBzb3VyY2UgKQorICB7CisgICAgRlRfRXJyb3IgICAgZXJyb3I7CisgICAgRlRfU3RyaW5nKiAgcmVzdWx0OworCisKKyAgICAodm9pZClGVF9TVFJEVVAoIHJlc3VsdCwgc291cmNlICk7CisKKyAgICBGVF9VTlVTRUQoIGVycm9yICk7CisKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICAvKiBTdHJpcCBhbGwgc3Vic2V0IHByZWZpeGVzIG9mIHRoZSBmb3JtIGBBQkNERUYrJy4gIFVzdWFsbHksIHRoZXJlICovCisgIC8qIGlzIG9ubHkgb25lLCBidXQgZm9udCBuYW1lcyBsaWtlIGBBUENPT0crSkZBQlREK0Z1dHVyYUJRLUJvbGQnICAgKi8KKyAgLyogaGF2ZSBiZWVuIHNlZW4gaW4gdGhlIHdpbGQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIHN0YXRpYyB2b2lkCisgIHJlbW92ZV9zdWJzZXRfcHJlZml4KCBGVF9TdHJpbmcqICBuYW1lICkKKyAgeworICAgIEZUX0ludDMyICBpZHggICAgICAgICAgICAgPSAwOworICAgIEZUX0ludDMyICBsZW5ndGggICAgICAgICAgPSAoRlRfSW50MzIpc3RybGVuKCBuYW1lICkgKyAxOworICAgIEZUX0Jvb2wgICBjb250aW51ZV9zZWFyY2ggPSAxOworCisKKyAgICB3aGlsZSAoIGNvbnRpbnVlX3NlYXJjaCApCisgICAgeworICAgICAgaWYgKCBsZW5ndGggPj0gNyAmJiBuYW1lWzZdID09ICcrJyApCisgICAgICB7CisgICAgICAgIGZvciAoIGlkeCA9IDA7IGlkeCA8IDY7IGlkeCsrICkKKyAgICAgICAgeworICAgICAgICAgIC8qIEFTQ0lJIHVwcGVyY2FzZSBsZXR0ZXJzICovCisgICAgICAgICAgaWYgKCAhKCAnQScgPD0gbmFtZVtpZHhdICYmIG5hbWVbaWR4XSA8PSAnWicgKSApCisgICAgICAgICAgICBjb250aW51ZV9zZWFyY2ggPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBjb250aW51ZV9zZWFyY2ggKQorICAgICAgICB7CisgICAgICAgICAgZm9yICggaWR4ID0gNzsgaWR4IDwgbGVuZ3RoOyBpZHgrKyApCisgICAgICAgICAgICBuYW1lW2lkeCAtIDddID0gbmFtZVtpZHhdOworICAgICAgICAgIGxlbmd0aCAtPSA3OworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGNvbnRpbnVlX3NlYXJjaCA9IDA7CisgICAgfQorICB9CisKKworICAvKiBSZW1vdmUgdGhlIHN0eWxlIHBhcnQgZnJvbSB0aGUgZmFtaWx5IG5hbWUgKGlmIHByZXNlbnQpLiAqLworCisgIHN0YXRpYyB2b2lkCisgIHJlbW92ZV9zdHlsZSggRlRfU3RyaW5nKiAgICAgICAgZmFtaWx5X25hbWUsCisgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgc3R5bGVfbmFtZSApCisgIHsKKyAgICBGVF9JbnQzMiAgZmFtaWx5X25hbWVfbGVuZ3RoLCBzdHlsZV9uYW1lX2xlbmd0aDsKKworCisgICAgZmFtaWx5X25hbWVfbGVuZ3RoID0gKEZUX0ludDMyKXN0cmxlbiggZmFtaWx5X25hbWUgKTsKKyAgICBzdHlsZV9uYW1lX2xlbmd0aCAgPSAoRlRfSW50MzIpc3RybGVuKCBzdHlsZV9uYW1lICk7CisKKyAgICBpZiAoIGZhbWlseV9uYW1lX2xlbmd0aCA+IHN0eWxlX25hbWVfbGVuZ3RoICkKKyAgICB7CisgICAgICBGVF9JbnQgIGlkeDsKKworCisgICAgICBmb3IgKCBpZHggPSAxOyBpZHggPD0gc3R5bGVfbmFtZV9sZW5ndGg7ICsraWR4ICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBmYW1pbHlfbmFtZVtmYW1pbHlfbmFtZV9sZW5ndGggLSBpZHhdICE9CisgICAgICAgICAgICAgc3R5bGVfbmFtZVtzdHlsZV9uYW1lX2xlbmd0aCAtIGlkeF0gKQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAoIGlkeCA+IHN0eWxlX25hbWVfbGVuZ3RoICkKKyAgICAgIHsKKyAgICAgICAgLyogZmFtaWx5X25hbWUgZW5kcyB3aXRoIHN0eWxlX25hbWU7IHJlbW92ZSBpdCAqLworICAgICAgICBpZHggPSBmYW1pbHlfbmFtZV9sZW5ndGggLSBzdHlsZV9uYW1lX2xlbmd0aCAtIDE7CisKKyAgICAgICAgLyogYWxzbyByZW1vdmUgc3BlY2lhbCBjaGFyYWN0ZXJzICAgICAqLworICAgICAgICAvKiBiZXR3ZWVuIHJlYWwgZmFtaWx5IG5hbWUgYW5kIHN0eWxlICovCisgICAgICAgIHdoaWxlICggaWR4ID4gMCAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAgKCBmYW1pbHlfbmFtZVtpZHhdID09ICctJyB8fAorICAgICAgICAgICAgICAgICAgZmFtaWx5X25hbWVbaWR4XSA9PSAnICcgfHwKKyAgICAgICAgICAgICAgICAgIGZhbWlseV9uYW1lW2lkeF0gPT0gJ18nIHx8CisgICAgICAgICAgICAgICAgICBmYW1pbHlfbmFtZVtpZHhdID09ICcrJyApICkKKyAgICAgICAgICAtLWlkeDsKKworICAgICAgICBpZiAoIGlkeCA+IDAgKQorICAgICAgICAgIGZhbWlseV9uYW1lW2lkeCArIDFdID0gJ1wwJzsKKyAgICAgIH0KKyAgICB9CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBjZmZfZmFjZV9pbml0KCBGVF9TdHJlYW0gICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgIGNmZmZhY2UsICAgICAgICAvKiBDRkZfRmFjZSAqLworICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBudW1fcGFyYW1zLAorICAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbXMgKQorICB7CisgICAgQ0ZGX0ZhY2UgICAgICAgICAgICBmYWNlICAgICAgICA9IChDRkZfRmFjZSljZmZmYWNlOworICAgIEZUX0Vycm9yICAgICAgICAgICAgZXJyb3I7CisgICAgU0ZOVF9TZXJ2aWNlICAgICAgICBzZm50OworICAgIEZUX1NlcnZpY2VfUHNDTWFwcyAgcHNuYW1lczsKKyAgICBQU0hpbnRlcl9TZXJ2aWNlICAgIHBzaGludGVyOworICAgIEZUX0Jvb2wgICAgICAgICAgICAgcHVyZV9jZmYgICAgPSAxOworICAgIEZUX0Jvb2wgICAgICAgICAgICAgc2ZudF9mb3JtYXQgPSAwOworICAgIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSAgICAgPSBjZmZmYWNlLT5kcml2ZXItPnJvb3QubGlicmFyeTsKKworCisgICAgc2ZudCA9IChTRk5UX1NlcnZpY2UpRlRfR2V0X01vZHVsZV9JbnRlcmZhY2UoCisgICAgICAgICAgICAgbGlicmFyeSwgInNmbnQiICk7CisgICAgaWYgKCAhc2ZudCApCisgICAgeworICAgICAgRlRfRVJST1IoKCAiY2ZmX2ZhY2VfaW5pdDogY2Fubm90IGFjY2VzcyBgc2ZudCcgbW9kdWxlXG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggTWlzc2luZ19Nb2R1bGUgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBGVF9GQUNFX0ZJTkRfR0xPQkFMX1NFUlZJQ0UoIGZhY2UsIHBzbmFtZXMsIFBPU1RTQ1JJUFRfQ01BUFMgKTsKKworICAgIHBzaGludGVyID0gKFBTSGludGVyX1NlcnZpY2UpRlRfR2V0X01vZHVsZV9JbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgIGxpYnJhcnksICJwc2hpbnRlciIgKTsKKworICAgIEZUX1RSQUNFMigoICJDRkYgZHJpdmVyXG4iICkpOworCisgICAgLyogY3JlYXRlIGlucHV0IHN0cmVhbSBmcm9tIHJlc291cmNlICovCisgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggMCApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIGNoZWNrIHdoZXRoZXIgd2UgaGF2ZSBhIHZhbGlkIE9wZW5UeXBlIGZpbGUgKi8KKyAgICBlcnJvciA9IHNmbnQtPmluaXRfZmFjZSggc3RyZWFtLCBmYWNlLCBmYWNlX2luZGV4LCBudW1fcGFyYW1zLCBwYXJhbXMgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgaWYgKCBmYWNlLT5mb3JtYXRfdGFnICE9IFRUQUdfT1RUTyAmJiAKKwkJICAgZmFjZS0+Zm9ybWF0X3RhZyAhPSAweDAwMDEwMDAwVUwgKSAgLyogYE9UVE8nOyBPcGVuVHlwZS9DRkYgZm9udCAqLworICAgICAgeworICAgICAgICBGVF9UUkFDRTIoKCAiICBub3QgYW4gT3BlblR5cGUvQ0ZGIGZvbnRcbiIgKSk7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIFVua25vd25fRmlsZV9Gb3JtYXQgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICAvKiBpZiB3ZSBhcmUgcGVyZm9ybWluZyBhIHNpbXBsZSBmb250IGZvcm1hdCBjaGVjaywgZXhpdCBpbW1lZGlhdGVseSAqLworICAgICAgaWYgKCBmYWNlX2luZGV4IDwgMCApCisgICAgICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgICAgIHNmbnRfZm9ybWF0ID0gMTsKKworICAgICAgLyogbm93LCB0aGUgZm9udCBjYW4gYmUgZWl0aGVyIGFuIE9wZW5UeXBlL0NGRiBmb250LCBvciBhbiBTVkcgQ0VGICovCisgICAgICAvKiBmb250OyBpbiB0aGUgbGF0dGVyIGNhc2UgaXQgZG9lc24ndCBoYXZlIGEgYGhlYWQnIHRhYmxlICAgICAgICAgKi8KKyAgICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19oZWFkLCBzdHJlYW0sIDAgKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgIHsKKyAgICAgICAgcHVyZV9jZmYgPSAwOworCisgICAgICAgIC8qIGxvYWQgZm9udCBkaXJlY3RvcnkgKi8KKyAgICAgICAgZXJyb3IgPSBzZm50LT5sb2FkX2ZhY2UoIHN0cmVhbSwgZmFjZSwgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9wYXJhbXMsIHBhcmFtcyApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIGxvYWQgdGhlIGBjbWFwJyB0YWJsZSBleHBsaWNpdGx5ICovCisgICAgICAgIGVycm9yID0gc2ZudC0+bG9hZF9jbWFwKCBmYWNlLCBzdHJlYW0gKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICAvKiBub3cgbG9hZCB0aGUgQ0ZGIHBhcnQgb2YgdGhlIGZpbGUgKi8KKyAgICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19DRkYsIHN0cmVhbSwgMCApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIHJld2luZCB0byBzdGFydCBvZiBmaWxlOyB3ZSBhcmUgZ29pbmcgdG8gbG9hZCBhIHB1cmUtQ0ZGIGZvbnQgKi8KKyAgICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIDAgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIH0KKworICAgIC8qIG5vdyBsb2FkIGFuZCBwYXJzZSB0aGUgQ0ZGIHRhYmxlIGluIHRoZSBmaWxlICovCisgICAgeworICAgICAgQ0ZGX0ZvbnQgICAgICAgICBjZmYgPSBOVUxMOworICAgICAgQ0ZGX0ZvbnRSZWNEaWN0ICBkaWN0OworICAgICAgRlRfTWVtb3J5ICAgICAgICBtZW1vcnkgPSBjZmZmYWNlLT5tZW1vcnk7CisgICAgICBGVF9JbnQzMiAgICAgICAgIGZsYWdzOworICAgICAgRlRfVUludCAgICAgICAgICBpOworCisKKyAgICAgIGlmICggRlRfTkVXKCBjZmYgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgZmFjZS0+ZXh0cmEuZGF0YSA9IGNmZjsKKyAgICAgIGVycm9yID0gY2ZmX2ZvbnRfbG9hZCggbGlicmFyeSwgc3RyZWFtLCBmYWNlX2luZGV4LCBjZmYsIHB1cmVfY2ZmICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBjZmYtPnBzaGludGVyID0gcHNoaW50ZXI7CisgICAgICBjZmYtPnBzbmFtZXMgID0gcHNuYW1lczsKKworICAgICAgY2ZmZmFjZS0+ZmFjZV9pbmRleCA9IGZhY2VfaW5kZXg7CisKKyAgICAgIC8qIENvbXBsZW1lbnQgdGhlIHJvb3QgZmxhZ3Mgd2l0aCBzb21lIGludGVyZXN0aW5nIGluZm9ybWF0aW9uLiAqLworICAgICAgLyogTm90ZSB0aGF0IHRoaXMgaXMgb25seSBuZWNlc3NhcnkgZm9yIHB1cmUgQ0ZGIGFuZCBDRUYgZm9udHM7ICovCisgICAgICAvKiBTRk5UIGJhc2VkIGZvbnRzIHVzZSB0aGUgYG5hbWUnIHRhYmxlIGluc3RlYWQuICAgICAgICAgICAgICAgKi8KKworICAgICAgY2ZmZmFjZS0+bnVtX2dseXBocyA9IGNmZi0+bnVtX2dseXBoczsKKworICAgICAgZGljdCA9ICZjZmYtPnRvcF9mb250LmZvbnRfZGljdDsKKworICAgICAgLyogd2UgbmVlZCB0aGUgYFBTTmFtZXMnIG1vZHVsZSBmb3IgQ0ZGIGFuZCBDRUYgZm9ybWF0cyAqLworICAgICAgLyogd2hpY2ggYXJlbid0IENJRC1rZXllZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgaWYgKCBkaWN0LT5jaWRfcmVnaXN0cnkgPT0gMHhGRkZGVSAmJiAhcHNuYW1lcyApCisgICAgICB7CisgICAgICAgIEZUX0VSUk9SKCggImNmZl9mYWNlX2luaXQ6IgorICAgICAgICAgICAgICAgICAgICIgY2Fubm90IG9wZW4gQ0ZGICYgQ0VGIGZvbnRzXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgIgorICAgICAgICAgICAgICAgICAgICIgd2l0aG91dCB0aGUgYFBTTmFtZXMnIG1vZHVsZVxuIiApKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggTWlzc2luZ19Nb2R1bGUgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKyAgICAgIHsKKyAgICAgICAgRlRfVUludCAgICAgaWR4OworICAgICAgICBGVF9TdHJpbmcqICBzOworCisKKyAgICAgICAgRlRfVFJBQ0U0KCggIlNJRHNcbiIgKSk7CisKKyAgICAgICAgLyogZHVtcCBzdHJpbmcgaW5kZXgsIGluY2x1ZGluZyBkZWZhdWx0IHN0cmluZ3MgZm9yIGNvbnZlbmllbmNlICovCisgICAgICAgIGZvciAoIGlkeCA9IDA7IGlkeCA8IGNmZi0+bnVtX3N0cmluZ3MgKyAzOTA7IGlkeCsrICkKKyAgICAgICAgeworICAgICAgICAgIHMgPSBjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcoIGNmZiwgaWR4ICk7CisgICAgICAgICAgaWYgKCBzICkKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoIiAgJTVkICVzXG4iLCBpZHgsIHMgKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyNlbmRpZiAvKiBGVF9ERUJVR19MRVZFTF9UUkFDRSAqLworCisgICAgICBpZiAoICFkaWN0LT5oYXNfZm9udF9tYXRyaXggKQorICAgICAgICBkaWN0LT51bml0c19wZXJfZW0gPSBwdXJlX2NmZiA/IDEwMDAgOiBmYWNlLT5yb290LnVuaXRzX3Blcl9FTTsKKworICAgICAgLyogTm9ybWFsaXplIHRoZSBmb250IG1hdHJpeCBzbyB0aGF0IGBtYXRyaXgtPnh4JyBpcyAxOyB0aGUgKi8KKyAgICAgIC8qIHNjYWxpbmcgaXMgZG9uZSB3aXRoIGB1bml0c19wZXJfZW0nIHRoZW4gKGF0IHRoaXMgcG9pbnQsICovCisgICAgICAvKiBpdCBhbHJlYWR5IGNvbnRhaW5zIHRoZSBzY2FsaW5nIGZhY3RvciwgYnV0IHdpdGhvdXQgICAgICAqLworICAgICAgLyogbm9ybWFsaXphdGlvbiBvZiB0aGUgbWF0cml4KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBOb3RlIHRoYXQgdGhlIG9mZnNldHMgbXVzdCBiZSBleHByZXNzZWQgaW4gaW50ZWdlciBmb250ICAqLworICAgICAgLyogdW5pdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgeworICAgICAgICBGVF9NYXRyaXgqICBtYXRyaXggPSAmZGljdC0+Zm9udF9tYXRyaXg7CisgICAgICAgIEZUX1ZlY3RvciogIG9mZnNldCA9ICZkaWN0LT5mb250X29mZnNldDsKKyAgICAgICAgRlRfVUxvbmcqICAgdXBtICAgID0gJmRpY3QtPnVuaXRzX3Blcl9lbTsKKyAgICAgICAgRlRfRml4ZWQgICAgdGVtcCAgID0gRlRfQUJTKCBtYXRyaXgtPnl5ICk7CisKKworICAgICAgICBpZiAoIHRlbXAgIT0gMHgxMDAwMEwgKQorICAgICAgICB7CisgICAgICAgICAgKnVwbSA9IEZUX0RpdkZpeCggKnVwbSwgdGVtcCApOworCisgICAgICAgICAgbWF0cml4LT54eCA9IEZUX0RpdkZpeCggbWF0cml4LT54eCwgdGVtcCApOworICAgICAgICAgIG1hdHJpeC0+eXggPSBGVF9EaXZGaXgoIG1hdHJpeC0+eXgsIHRlbXAgKTsKKyAgICAgICAgICBtYXRyaXgtPnh5ID0gRlRfRGl2Rml4KCBtYXRyaXgtPnh5LCB0ZW1wICk7CisgICAgICAgICAgbWF0cml4LT55eSA9IEZUX0RpdkZpeCggbWF0cml4LT55eSwgdGVtcCApOworICAgICAgICAgIG9mZnNldC0+eCAgPSBGVF9EaXZGaXgoIG9mZnNldC0+eCwgIHRlbXAgKTsKKyAgICAgICAgICBvZmZzZXQtPnkgID0gRlRfRGl2Rml4KCBvZmZzZXQtPnksICB0ZW1wICk7CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXQtPnggPj49IDE2OworICAgICAgICBvZmZzZXQtPnkgPj49IDE2OworICAgICAgfQorCisgICAgICBmb3IgKCBpID0gY2ZmLT5udW1fc3ViZm9udHM7IGkgPiAwOyBpLS0gKQorICAgICAgeworICAgICAgICBDRkZfRm9udFJlY0RpY3QgIHN1YiA9ICZjZmYtPnN1YmZvbnRzW2kgLSAxXS0+Zm9udF9kaWN0OworICAgICAgICBDRkZfRm9udFJlY0RpY3QgIHRvcCA9ICZjZmYtPnRvcF9mb250LmZvbnRfZGljdDsKKworICAgICAgICBGVF9NYXRyaXgqICBtYXRyaXg7CisgICAgICAgIEZUX1ZlY3RvciogIG9mZnNldDsKKyAgICAgICAgRlRfVUxvbmcqICAgdXBtOworICAgICAgICBGVF9GaXhlZCAgICB0ZW1wOworCisKKyAgICAgICAgaWYgKCBzdWItPmhhc19mb250X21hdHJpeCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9Mb25nICBzY2FsaW5nOworCisKKyAgICAgICAgICAvKiBpZiB3ZSBoYXZlIGEgdG9wLWxldmVsIG1hdHJpeCwgKi8KKyAgICAgICAgICAvKiBjb25jYXRlbmF0ZSB0aGUgc3ViZm9udCBtYXRyaXggKi8KKworICAgICAgICAgIGlmICggdG9wLT5oYXNfZm9udF9tYXRyaXggKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggdG9wLT51bml0c19wZXJfZW0gPiAxICYmIHN1Yi0+dW5pdHNfcGVyX2VtID4gMSApCisgICAgICAgICAgICAgIHNjYWxpbmcgPSBGVF9NSU4oIHRvcC0+dW5pdHNfcGVyX2VtLCBzdWItPnVuaXRzX3Blcl9lbSApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBzY2FsaW5nID0gMTsKKworICAgICAgICAgICAgRlRfTWF0cml4X011bHRpcGx5X1NjYWxlZCggJnRvcC0+Zm9udF9tYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3ViLT5mb250X21hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxpbmcgKTsKKyAgICAgICAgICAgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm1fU2NhbGVkKCAmc3ViLT5mb250X29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdG9wLT5mb250X21hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsaW5nICk7CisKKyAgICAgICAgICAgIHN1Yi0+dW5pdHNfcGVyX2VtID0gRlRfTXVsRGl2KCBzdWItPnVuaXRzX3Blcl9lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AtPnVuaXRzX3Blcl9lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsaW5nICk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHN1Yi0+Zm9udF9tYXRyaXggPSB0b3AtPmZvbnRfbWF0cml4OworICAgICAgICAgIHN1Yi0+Zm9udF9vZmZzZXQgPSB0b3AtPmZvbnRfb2Zmc2V0OworCisgICAgICAgICAgc3ViLT51bml0c19wZXJfZW0gPSB0b3AtPnVuaXRzX3Blcl9lbTsKKyAgICAgICAgfQorCisgICAgICAgIG1hdHJpeCA9ICZzdWItPmZvbnRfbWF0cml4OworICAgICAgICBvZmZzZXQgPSAmc3ViLT5mb250X29mZnNldDsKKyAgICAgICAgdXBtICAgID0gJnN1Yi0+dW5pdHNfcGVyX2VtOworICAgICAgICB0ZW1wICAgPSBGVF9BQlMoIG1hdHJpeC0+eXkgKTsKKworICAgICAgICBpZiAoIHRlbXAgIT0gMHgxMDAwMEwgKQorICAgICAgICB7CisgICAgICAgICAgKnVwbSA9IEZUX0RpdkZpeCggKnVwbSwgdGVtcCApOworCisgICAgICAgICAgbWF0cml4LT54eCA9IEZUX0RpdkZpeCggbWF0cml4LT54eCwgdGVtcCApOworICAgICAgICAgIG1hdHJpeC0+eXggPSBGVF9EaXZGaXgoIG1hdHJpeC0+eXgsIHRlbXAgKTsKKyAgICAgICAgICBtYXRyaXgtPnh5ID0gRlRfRGl2Rml4KCBtYXRyaXgtPnh5LCB0ZW1wICk7CisgICAgICAgICAgbWF0cml4LT55eSA9IEZUX0RpdkZpeCggbWF0cml4LT55eSwgdGVtcCApOworICAgICAgICAgIG9mZnNldC0+eCAgPSBGVF9EaXZGaXgoIG9mZnNldC0+eCwgIHRlbXAgKTsKKyAgICAgICAgICBvZmZzZXQtPnkgID0gRlRfRGl2Rml4KCBvZmZzZXQtPnksICB0ZW1wICk7CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXQtPnggPj49IDE2OworICAgICAgICBvZmZzZXQtPnkgPj49IDE2OworICAgICAgfQorCisgICAgICBpZiAoIHB1cmVfY2ZmICkKKyAgICAgIHsKKyAgICAgICAgY2hhciogIHN0eWxlX25hbWUgPSBOVUxMOworCisKKyAgICAgICAgLyogc2V0IHVwIG51bV9mYWNlcyAqLworICAgICAgICBjZmZmYWNlLT5udW1fZmFjZXMgPSBjZmYtPm51bV9mYWNlczsKKworICAgICAgICAvKiBjb21wdXRlIG51bWJlciBvZiBnbHlwaHMgKi8KKyAgICAgICAgaWYgKCBkaWN0LT5jaWRfcmVnaXN0cnkgIT0gMHhGRkZGVSApCisgICAgICAgICAgY2ZmZmFjZS0+bnVtX2dseXBocyA9IGNmZi0+Y2hhcnNldC5tYXhfY2lkICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGNmZmZhY2UtPm51bV9nbHlwaHMgPSBjZmYtPmNoYXJzdHJpbmdzX2luZGV4LmNvdW50OworCisgICAgICAgIC8qIHNldCBnbG9iYWwgYmJveCwgYXMgd2VsbCBhcyBFTSBzaXplICovCisgICAgICAgIGNmZmZhY2UtPmJib3gueE1pbiA9ICAgZGljdC0+Zm9udF9iYm94LnhNaW4gICAgICAgICAgICA+PiAxNjsKKyAgICAgICAgY2ZmZmFjZS0+YmJveC55TWluID0gICBkaWN0LT5mb250X2Jib3gueU1pbiAgICAgICAgICAgID4+IDE2OworICAgICAgICAvKiBubyBgVScgc3VmZml4IGhlcmUgdG8gMHhGRkZGISAqLworICAgICAgICBjZmZmYWNlLT5iYm94LnhNYXggPSAoIGRpY3QtPmZvbnRfYmJveC54TWF4ICsgMHhGRkZGICkgPj4gMTY7CisgICAgICAgIGNmZmZhY2UtPmJib3gueU1heCA9ICggZGljdC0+Zm9udF9iYm94LnlNYXggKyAweEZGRkYgKSA+PiAxNjsKKworICAgICAgICBjZmZmYWNlLT51bml0c19wZXJfRU0gPSAoRlRfVVNob3J0KSggZGljdC0+dW5pdHNfcGVyX2VtICk7CisKKyAgICAgICAgY2ZmZmFjZS0+YXNjZW5kZXIgID0gKEZUX1Nob3J0KSggY2ZmZmFjZS0+YmJveC55TWF4ICk7CisgICAgICAgIGNmZmZhY2UtPmRlc2NlbmRlciA9IChGVF9TaG9ydCkoIGNmZmZhY2UtPmJib3gueU1pbiApOworCisgICAgICAgIGNmZmZhY2UtPmhlaWdodCA9IChGVF9TaG9ydCkoICggY2ZmZmFjZS0+dW5pdHNfcGVyX0VNICogMTIgKSAvIDEwICk7CisgICAgICAgIGlmICggY2ZmZmFjZS0+aGVpZ2h0IDwgY2ZmZmFjZS0+YXNjZW5kZXIgLSBjZmZmYWNlLT5kZXNjZW5kZXIgKQorICAgICAgICAgIGNmZmZhY2UtPmhlaWdodCA9IChGVF9TaG9ydCkoIGNmZmZhY2UtPmFzY2VuZGVyIC0gY2ZmZmFjZS0+ZGVzY2VuZGVyICk7CisKKyAgICAgICAgY2ZmZmFjZS0+dW5kZXJsaW5lX3Bvc2l0aW9uICA9CisgICAgICAgICAgKEZUX1Nob3J0KSggZGljdC0+dW5kZXJsaW5lX3Bvc2l0aW9uID4+IDE2ICk7CisgICAgICAgIGNmZmZhY2UtPnVuZGVybGluZV90aGlja25lc3MgPQorICAgICAgICAgIChGVF9TaG9ydCkoIGRpY3QtPnVuZGVybGluZV90aGlja25lc3MgPj4gMTYgKTsKKworICAgICAgICAvKiByZXRyaWV2ZSBmb250IGZhbWlseSAmIHN0eWxlIG5hbWUgKi8KKyAgICAgICAgY2ZmZmFjZS0+ZmFtaWx5X25hbWUgPSBjZmZfaW5kZXhfZ2V0X25hbWUoIGNmZiwgZmFjZV9pbmRleCApOworICAgICAgICBpZiAoIGNmZmZhY2UtPmZhbWlseV9uYW1lICkKKyAgICAgICAgeworICAgICAgICAgIGNoYXIqICBmdWxsICAgPSBjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcoIGNmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0LT5mdWxsX25hbWUgKTsKKyAgICAgICAgICBjaGFyKiAgZnVsbHAgID0gZnVsbDsKKyAgICAgICAgICBjaGFyKiAgZmFtaWx5ID0gY2ZmZmFjZS0+ZmFtaWx5X25hbWU7CisgICAgICAgICAgY2hhciogIGZhbWlseV9uYW1lID0gTlVMTDsKKworCisgICAgICAgICAgcmVtb3ZlX3N1YnNldF9wcmVmaXgoIGNmZmZhY2UtPmZhbWlseV9uYW1lICk7CisKKyAgICAgICAgICBpZiAoIGRpY3QtPmZhbWlseV9uYW1lICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBmYW1pbHlfbmFtZSA9IGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZyggY2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QtPmZhbWlseV9uYW1lICk7CisgICAgICAgICAgICBpZiAoIGZhbWlseV9uYW1lICkKKyAgICAgICAgICAgICAgZmFtaWx5ID0gZmFtaWx5X25hbWU7CisgICAgICAgICAgfQorCisgICAgICAgICAgLyogV2UgdHJ5IHRvIGV4dHJhY3QgdGhlIHN0eWxlIG5hbWUgZnJvbSB0aGUgZnVsbCBuYW1lLiAgICovCisgICAgICAgICAgLyogV2UgbmVlZCB0byBpZ25vcmUgc3BhY2VzIGFuZCBkYXNoZXMgZHVyaW5nIHRoZSBzZWFyY2guICovCisgICAgICAgICAgaWYgKCBmdWxsICYmIGZhbWlseSApCisgICAgICAgICAgeworICAgICAgICAgICAgd2hpbGUgKCAqZnVsbHAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBza2lwIGNvbW1vbiBjaGFyYWN0ZXJzIGF0IHRoZSBzdGFydCBvZiBib3RoIHN0cmluZ3MgKi8KKyAgICAgICAgICAgICAgaWYgKCAqZnVsbHAgPT0gKmZhbWlseSApCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmYW1pbHkrKzsKKyAgICAgICAgICAgICAgICBmdWxscCsrOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgLyogaWdub3JlIHNwYWNlcyBhbmQgZGFzaGVzIGluIGZ1bGwgbmFtZSBkdXJpbmcgY29tcGFyaXNvbiAqLworICAgICAgICAgICAgICBpZiAoICpmdWxscCA9PSAnICcgfHwgKmZ1bGxwID09ICctJyApCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmdWxscCsrOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgLyogaWdub3JlIHNwYWNlcyBhbmQgZGFzaGVzIGluIGZhbWlseSBuYW1lIGR1cmluZyBjb21wYXJpc29uICovCisgICAgICAgICAgICAgIGlmICggKmZhbWlseSA9PSAnICcgfHwgKmZhbWlseSA9PSAnLScgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmFtaWx5Kys7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBpZiAoICEqZmFtaWx5ICYmICpmdWxscCApCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZnVsbCBuYW1lIGJlZ2lucyB3aXRoIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMgdGhlICAqLworICAgICAgICAgICAgICAgIC8qIGZhbWlseSBuYW1lLCB3aXRoIHNwYWNlcyBhbmQgZGFzaGVzIHJlbW92ZWQuICBJbiB0aGlzICovCisgICAgICAgICAgICAgICAgLyogY2FzZSwgdGhlIHJlbWFpbmluZyBzdHJpbmcgaW4gYGZ1bGxwJyB3aWxsIGJlIHVzZWQgYXMgKi8KKyAgICAgICAgICAgICAgICAvKiB0aGUgc3R5bGUgbmFtZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHN0eWxlX25hbWUgPSBjZmZfc3RyY3B5KCBtZW1vcnksIGZ1bGxwICk7CisKKyAgICAgICAgICAgICAgICAvKiByZW1vdmUgdGhlIHN0eWxlIHBhcnQgZnJvbSB0aGUgZmFtaWx5IG5hbWUgKGlmIHByZXNlbnQpICovCisgICAgICAgICAgICAgICAgcmVtb3ZlX3N0eWxlKCBjZmZmYWNlLT5mYW1pbHlfbmFtZSwgc3R5bGVfbmFtZSApOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBjaGFyICAqY2lkX2ZvbnRfbmFtZSA9CisgICAgICAgICAgICAgICAgICAgY2ZmX2luZGV4X2dldF9zaWRfc3RyaW5nKCBjZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0LT5jaWRfZm9udF9uYW1lICk7CisKKworICAgICAgICAgIC8qIGRvIHdlIGhhdmUgYSBgL0ZvbnROYW1lJyBmb3IgYSBDSUQta2V5ZWQgZm9udD8gKi8KKyAgICAgICAgICBpZiAoIGNpZF9mb250X25hbWUgKQorICAgICAgICAgICAgY2ZmZmFjZS0+ZmFtaWx5X25hbWUgPSBjZmZfc3RyY3B5KCBtZW1vcnksIGNpZF9mb250X25hbWUgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggc3R5bGVfbmFtZSApCisgICAgICAgICAgY2ZmZmFjZS0+c3R5bGVfbmFtZSA9IHN0eWxlX25hbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAvKiBhc3N1bWUgIlJlZ3VsYXIiIHN0eWxlIGlmIHdlIGRvbid0IGtub3cgYmV0dGVyICovCisgICAgICAgICAgY2ZmZmFjZS0+c3R5bGVfbmFtZSA9IGNmZl9zdHJjcHkoIG1lbW9yeSwgKGNoYXIgKikiUmVndWxhciIgKTsKKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIENvbXB1dGUgZmFjZSBmbGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgZmxhZ3MgPSBGVF9GQUNFX0ZMQUdfU0NBTEFCTEUgICB8IC8qIHNjYWxhYmxlIG91dGxpbmVzICovCisgICAgICAgICAgICAgICAgRlRfRkFDRV9GTEFHX0hPUklaT05UQUwgfCAvKiBob3Jpem9udGFsIGRhdGEgICAqLworICAgICAgICAgICAgICAgIEZUX0ZBQ0VfRkxBR19ISU5URVI7ICAgICAgLyogaGFzIG5hdGl2ZSBoaW50ZXIgKi8KKworICAgICAgICBpZiAoIHNmbnRfZm9ybWF0ICkKKyAgICAgICAgICBmbGFncyB8PSBGVF9GQUNFX0ZMQUdfU0ZOVDsKKworICAgICAgICAvKiBmaXhlZCB3aWR0aCBmb250PyAqLworICAgICAgICBpZiAoIGRpY3QtPmlzX2ZpeGVkX3BpdGNoICkKKyAgICAgICAgICBmbGFncyB8PSBGVF9GQUNFX0ZMQUdfRklYRURfV0lEVEg7CisKKyAgLyogWFhYOiBXRSBETyBOT1QgU1VQUE9SVCBLRVJOSU5HIE1FVFJJQ1MgSU4gVEhFIEdQT1MgVEFCTEUgRk9SIE5PVyAqLworI2lmIDAKKyAgICAgICAgLyoga2VybmluZyBhdmFpbGFibGU/ICovCisgICAgICAgIGlmICggZmFjZS0+a2Vybl9wYWlycyApCisgICAgICAgICAgZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX0tFUk5JTkc7CisjZW5kaWYKKworICAgICAgICBjZmZmYWNlLT5mYWNlX2ZsYWdzID0gZmxhZ3M7CisKKyAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiBDb21wdXRlIHN0eWxlIGZsYWdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGZsYWdzID0gMDsKKworICAgICAgICBpZiAoIGRpY3QtPml0YWxpY19hbmdsZSApCisgICAgICAgICAgZmxhZ3MgfD0gRlRfU1RZTEVfRkxBR19JVEFMSUM7CisKKyAgICAgICAgeworICAgICAgICAgIGNoYXIgICp3ZWlnaHQgPSBjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcoIGNmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0LT53ZWlnaHQgKTsKKworCisgICAgICAgICAgaWYgKCB3ZWlnaHQgKQorICAgICAgICAgICAgaWYgKCAhZnRfc3RyY21wKCB3ZWlnaHQsICJCb2xkIiAgKSB8fAorICAgICAgICAgICAgICAgICAhZnRfc3RyY21wKCB3ZWlnaHQsICJCbGFjayIgKSApCisgICAgICAgICAgICAgIGZsYWdzIHw9IEZUX1NUWUxFX0ZMQUdfQk9MRDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGRvdWJsZSBjaGVjayAqLworICAgICAgICBpZiAoICEoZmxhZ3MgJiBGVF9TVFlMRV9GTEFHX0JPTEQpICYmIGNmZmZhY2UtPnN0eWxlX25hbWUgKQorICAgICAgICAgIGlmICggIWZ0X3N0cm5jbXAoIGNmZmZhY2UtPnN0eWxlX25hbWUsICJCb2xkIiwgNCApICB8fAorICAgICAgICAgICAgICAgIWZ0X3N0cm5jbXAoIGNmZmZhY2UtPnN0eWxlX25hbWUsICJCbGFjayIsIDUgKSApCisgICAgICAgICAgICBmbGFncyB8PSBGVF9TVFlMRV9GTEFHX0JPTEQ7CisKKwkJaWYgKCAhKGZsYWdzICYgRlRfU1RZTEVfRkxBR19JVEFMSUMpICYmIGNmZmZhY2UtPnN0eWxlX25hbWUgKQorCQkJaWYgKCAhZnRfc3RybmNtcCggY2ZmZmFjZS0+c3R5bGVfbmFtZSwgIkl0YWxpYyIsIDYgKSApCisgICAgICAgICAgZmxhZ3MgfD0gRlRfU1RZTEVfRkxBR19JVEFMSUM7CisKKyAgICAgICAgY2ZmZmFjZS0+c3R5bGVfZmxhZ3MgPSBmbGFnczsKKyAgICAgIH0KKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fTk9fR0xZUEhfTkFNRVMKKyAgICAgIC8qIENJRC1rZXllZCBDRkYgZm9udHMgZG9uJ3QgaGF2ZSBnbHlwaCBuYW1lcyAtLSB0aGUgU0ZOVCBsb2FkZXIgKi8KKyAgICAgIC8qIGhhcyB1bnNldCB0aGlzIGZsYWcgYmVjYXVzZSBvZiB0aGUgMy4wIGBwb3N0JyB0YWJsZS4gICAgICAgICAgKi8KKyAgICAgIGlmICggZGljdC0+Y2lkX3JlZ2lzdHJ5ID09IDB4RkZGRlUgKQorICAgICAgICBjZmZmYWNlLT5mYWNlX2ZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUzsKKyNlbmRpZgorCisgICAgICBpZiAoIGRpY3QtPmNpZF9yZWdpc3RyeSAhPSAweEZGRkZVICYmIHB1cmVfY2ZmICkKKyAgICAgICAgY2ZmZmFjZS0+ZmFjZV9mbGFncyB8PSBGVF9GQUNFX0ZMQUdfQ0lEX0tFWUVEOworCisKKyAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBDb21wdXRlIGNoYXIgbWFwcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAvKiBUcnkgdG8gc3ludGhlc2l6ZSBhIFVuaWNvZGUgY2hhcm1hcCBpZiB0aGVyZSBpcyBub25lIGF2YWlsYWJsZSAqLworICAgICAgLyogYWxyZWFkeS4gIElmIGFuIE9wZW5UeXBlIGZvbnQgY29udGFpbnMgYSBVbmljb2RlICJjbWFwIiwgd2UgICAgKi8KKyAgICAgIC8qIHdpbGwgdXNlIGl0LCB3aGF0ZXZlciBiZSBpbiB0aGUgQ0ZGIHBhcnQgb2YgdGhlIGZpbGUuICAgICAgICAgICovCisgICAgICB7CisgICAgICAgIEZUX0NoYXJNYXBSZWMgIGNtYXByZWM7CisgICAgICAgIEZUX0NoYXJNYXAgICAgIGNtYXA7CisgICAgICAgIEZUX1VJbnQgICAgICAgIG5uOworICAgICAgICBDRkZfRW5jb2RpbmcgICBlbmNvZGluZyA9ICZjZmYtPmVuY29kaW5nOworCisKKyAgICAgICAgZm9yICggbm4gPSAwOyBubiA8IChGVF9VSW50KWNmZmZhY2UtPm51bV9jaGFybWFwczsgbm4rKyApCisgICAgICAgIHsKKyAgICAgICAgICBjbWFwID0gY2ZmZmFjZS0+Y2hhcm1hcHNbbm5dOworCisgICAgICAgICAgLyogV2luZG93cyBVbmljb2RlPyAqLworICAgICAgICAgIGlmICggY21hcC0+cGxhdGZvcm1faWQgPT0gVFRfUExBVEZPUk1fTUlDUk9TT0ZUICYmCisgICAgICAgICAgICAgICBjbWFwLT5lbmNvZGluZ19pZCA9PSBUVF9NU19JRF9VTklDT0RFX0NTICAgKQorICAgICAgICAgICAgZ290byBTa2lwX1VuaWNvZGU7CisKKyAgICAgICAgICAvKiBBcHBsZSBVbmljb2RlIHBsYXRmb3JtIGlkPyAqLworICAgICAgICAgIGlmICggY21hcC0+cGxhdGZvcm1faWQgPT0gVFRfUExBVEZPUk1fQVBQTEVfVU5JQ09ERSApCisgICAgICAgICAgICBnb3RvIFNraXBfVW5pY29kZTsgLyogQXBwbGUgVW5pY29kZSAqLworICAgICAgICB9CisKKyAgICAgICAgLyogc2luY2UgQ0lELWtleWVkIGZvbnRzIGRvbid0IGNvbnRhaW4gZ2x5cGggbmFtZXMsIHdlIGNhbid0ICovCisgICAgICAgIC8qIGNvbnN0cnVjdCBhIGNtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBpZiAoIHB1cmVfY2ZmICYmIGNmZi0+dG9wX2ZvbnQuZm9udF9kaWN0LmNpZF9yZWdpc3RyeSAhPSAweEZGRkZVICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKKyNpZmRlZiBGVF9NQVhfQ0hBUk1BUF9DQUNIRUFCTEUKKyAgICAgICAgaWYgKCBubiArIDEgPiBGVF9NQVhfQ0hBUk1BUF9DQUNIRUFCTEUgKQorICAgICAgICB7CisgICAgICAgICAgRlRfRVJST1IoKCAiY2ZmX2ZhY2VfaW5pdDogbm8gVW5pY29kZSBjbWFwIGlzIGZvdW5kLCAiCisgICAgICAgICAgICAgICAgICAgICAiYW5kIHRvbyBtYW55IHN1YnRhYmxlcyAoJWQpIHRvIGFkZCBzeW50aGVzaXplZCBjbWFwXG4iLAorICAgICAgICAgICAgICAgICAgICAgbm4gKSk7CisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICAvKiB3ZSBkaWRuJ3QgZmluZCBhIFVuaWNvZGUgY2hhcm1hcCAtLSBzeW50aGVzaXplIG9uZSAqLworICAgICAgICBjbWFwcmVjLmZhY2UgICAgICAgID0gY2ZmZmFjZTsKKyAgICAgICAgY21hcHJlYy5wbGF0Zm9ybV9pZCA9IFRUX1BMQVRGT1JNX01JQ1JPU09GVDsKKyAgICAgICAgY21hcHJlYy5lbmNvZGluZ19pZCA9IFRUX01TX0lEX1VOSUNPREVfQ1M7CisgICAgICAgIGNtYXByZWMuZW5jb2RpbmcgICAgPSBGVF9FTkNPRElOR19VTklDT0RFOworCisgICAgICAgIG5uID0gKEZUX1VJbnQpY2ZmZmFjZS0+bnVtX2NoYXJtYXBzOworCisgICAgICAgIGVycm9yID0gRlRfQ01hcF9OZXcoICZDRkZfQ01BUF9VTklDT0RFX0NMQVNTX1JFQ19HRVQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbWFwcmVjLCBOVUxMICk7CisgICAgICAgIGlmICggZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgRlRfRVJSX05FUSggZXJyb3IsIE5vX1VuaWNvZGVfR2x5cGhfTmFtZSApICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIGVycm9yID0gRlRfRXJyX09rOworCisgICAgICAgIC8qIGlmIG5vIFVuaWNvZGUgY2hhcm1hcCB3YXMgcHJldmlvdXNseSBzZWxlY3RlZCwgc2VsZWN0IHRoaXMgb25lICovCisgICAgICAgIGlmICggY2ZmZmFjZS0+Y2hhcm1hcCA9PSBOVUxMICYmIG5uICE9IChGVF9VSW50KWNmZmZhY2UtPm51bV9jaGFybWFwcyApCisgICAgICAgICAgY2ZmZmFjZS0+Y2hhcm1hcCA9IGNmZmZhY2UtPmNoYXJtYXBzW25uXTsKKworICAgICAgU2tpcF9Vbmljb2RlOgorI2lmZGVmIEZUX01BWF9DSEFSTUFQX0NBQ0hFQUJMRQorICAgICAgICBpZiAoIG5uID4gRlRfTUFYX0NIQVJNQVBfQ0FDSEVBQkxFICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0VSUk9SKCggImNmZl9mYWNlX2luaXQ6IFVuaWNvZGUgY21hcCBpcyBmb3VuZCwgIgorICAgICAgICAgICAgICAgICAgICAgImJ1dCB0b28gbWFueSBwcmVjZWRpbmcgc3VidGFibGVzICglZCkgdG8gYWNjZXNzXG4iLAorICAgICAgICAgICAgICAgICAgICAgbm4gLSAxICkpOworICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGlmICggZW5jb2RpbmctPmNvdW50ID4gMCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9DTWFwX0NsYXNzICBjbGF6ejsKKworCisgICAgICAgICAgY21hcHJlYy5mYWNlICAgICAgICA9IGNmZmZhY2U7CisgICAgICAgICAgY21hcHJlYy5wbGF0Zm9ybV9pZCA9IFRUX1BMQVRGT1JNX0FET0JFOyAgLyogQWRvYmUgcGxhdGZvcm0gaWQgKi8KKworICAgICAgICAgIGlmICggZW5jb2RpbmctPm9mZnNldCA9PSAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBjbWFwcmVjLmVuY29kaW5nX2lkID0gVFRfQURPQkVfSURfU1RBTkRBUkQ7CisgICAgICAgICAgICBjbWFwcmVjLmVuY29kaW5nICAgID0gRlRfRU5DT0RJTkdfQURPQkVfU1RBTkRBUkQ7CisgICAgICAgICAgICBjbGF6eiAgICAgICAgICAgICAgID0gJkNGRl9DTUFQX0VOQ09ESU5HX0NMQVNTX1JFQ19HRVQ7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKCBlbmNvZGluZy0+b2Zmc2V0ID09IDEgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGNtYXByZWMuZW5jb2RpbmdfaWQgPSBUVF9BRE9CRV9JRF9FWFBFUlQ7CisgICAgICAgICAgICBjbWFwcmVjLmVuY29kaW5nICAgID0gRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJUOworICAgICAgICAgICAgY2xhenogICAgICAgICAgICAgICA9ICZDRkZfQ01BUF9FTkNPRElOR19DTEFTU19SRUNfR0VUOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgY21hcHJlYy5lbmNvZGluZ19pZCA9IFRUX0FET0JFX0lEX0NVU1RPTTsKKyAgICAgICAgICAgIGNtYXByZWMuZW5jb2RpbmcgICAgPSBGVF9FTkNPRElOR19BRE9CRV9DVVNUT007CisgICAgICAgICAgICBjbGF6eiAgICAgICAgICAgICAgID0gJkNGRl9DTUFQX0VOQ09ESU5HX0NMQVNTX1JFQ19HRVQ7CisgICAgICAgICAgfQorCisgICAgICAgICAgZXJyb3IgPSBGVF9DTWFwX05ldyggY2xhenosIE5VTEwsICZjbWFwcmVjLCBOVUxMICk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmZl9mYWNlX2RvbmUoIEZUX0ZhY2UgIGNmZmZhY2UgKSAgICAgICAgIC8qIENGRl9GYWNlICovCisgIHsKKyAgICBDRkZfRmFjZSAgICAgIGZhY2UgPSAoQ0ZGX0ZhY2UpY2ZmZmFjZTsKKyAgICBGVF9NZW1vcnkgICAgIG1lbW9yeTsKKyAgICBTRk5UX1NlcnZpY2UgIHNmbnQ7CisKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuOworCisgICAgbWVtb3J5ID0gY2ZmZmFjZS0+bWVtb3J5OworICAgIHNmbnQgICA9IChTRk5UX1NlcnZpY2UpZmFjZS0+c2ZudDsKKworICAgIGlmICggc2ZudCApCisgICAgICBzZm50LT5kb25lX2ZhY2UoIGZhY2UgKTsKKworICAgIHsKKyAgICAgIENGRl9Gb250ICBjZmYgPSAoQ0ZGX0ZvbnQpZmFjZS0+ZXh0cmEuZGF0YTsKKworCisgICAgICBpZiAoIGNmZiApCisgICAgICB7CisgICAgICAgIGNmZl9mb250X2RvbmUoIGNmZiApOworICAgICAgICBGVF9GUkVFKCBmYWNlLT5leHRyYS5kYXRhICk7CisgICAgICB9CisgICAgfQorICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2ZmX2RyaXZlcl9pbml0KCBGVF9Nb2R1bGUgIG1vZHVsZSApICAgICAgICAvKiBDRkZfRHJpdmVyICovCisgIHsKKyAgICBDRkZfRHJpdmVyICBkcml2ZXIgPSAoQ0ZGX0RyaXZlciltb2R1bGU7CisKKworICAgIC8qIHNldCBkZWZhdWx0IHByb3BlcnR5IHZhbHVlcyAqLworI2lmZGVmIENGRl9DT05GSUdfT1BUSU9OX09MRF9FTkdJTkUKKyAgICBkcml2ZXItPmhpbnRpbmdfZW5naW5lICAgID0gRlRfQ0ZGX0hJTlRJTkdfRlJFRVRZUEU7CisjZWxzZQorICAgIGRyaXZlci0+aGludGluZ19lbmdpbmUgICAgPSBGVF9DRkZfSElOVElOR19BRE9CRTsKKyNlbmRpZgorICAgIGRyaXZlci0+bm9fc3RlbV9kYXJrZW5pbmcgPSBGQUxTRTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNmZl9kcml2ZXJfZG9uZSggRlRfTW9kdWxlICBtb2R1bGUgKSAgICAgICAgLyogQ0ZGX0RyaXZlciAqLworICB7CisgICAgRlRfVU5VU0VEKCBtb2R1bGUgKTsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2Zmb2Jqcy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2Zmb2Jqcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMDIzMmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZvYmpzLmgKQEAgLTAsMCArMSwxODMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmZm9ianMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBPcGVuVHlwZSBvYmplY3RzIG1hbmFnZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA0LCAyMDA2LTIwMDgsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NGRk9CSlNfSF9fCisjZGVmaW5lIF9fQ0ZGT0JKU19IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiY2ZmdHlwZXMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNjbWFwLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDRkZfRHJpdmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhbiBPcGVuVHlwZSBkcml2ZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IENGRl9Ecml2ZXJSZWNfKiAgQ0ZGX0RyaXZlcjsKKworICB0eXBlZGVmIFRUX0ZhY2UgIENGRl9GYWNlOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ0ZGX1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYW4gT3BlblR5cGUgc2l6ZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgQ0ZGX1NpemVSZWNfCisgIHsKKyAgICBGVF9TaXplUmVjICByb290OworICAgIEZUX1VMb25nICAgIHN0cmlrZV9pbmRleDsgICAgLyogMHhGRkZGRkZGRiB0byBpbmRpY2F0ZSBpbnZhbGlkICovCisKKyAgfSBDRkZfU2l6ZVJlYywgKkNGRl9TaXplOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ0ZGX0dseXBoU2xvdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYW4gT3BlblR5cGUgZ2x5cGggc2xvdCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgQ0ZGX0dseXBoU2xvdFJlY18KKyAgeworICAgIEZUX0dseXBoU2xvdFJlYyAgcm9vdDsKKworICAgIEZUX0Jvb2wgICAgICAgICAgaGludDsKKyAgICBGVF9Cb29sICAgICAgICAgIHNjYWxlZDsKKworICAgIEZUX0ZpeGVkICAgICAgICAgeF9zY2FsZTsKKyAgICBGVF9GaXhlZCAgICAgICAgIHlfc2NhbGU7CisKKyAgfSBDRkZfR2x5cGhTbG90UmVjLCAqQ0ZGX0dseXBoU2xvdDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENGRl9JbnRlcm5hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBpbnRlcmZhY2UgdG8gdGhlIGBpbnRlcm5hbCcgZmllbGQgb2YgYEZUX1NpemUnLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIENGRl9JbnRlcm5hbFJlY18KKyAgeworICAgIFBTSF9HbG9iYWxzICB0b3Bmb250OworICAgIFBTSF9HbG9iYWxzICBzdWJmb250c1tDRkZfTUFYX0NJRF9GT05UU107CisKKyAgfSBDRkZfSW50ZXJuYWxSZWMsICpDRkZfSW50ZXJuYWw7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN1YmdseXBoIHRyYW5zZm9ybWF0aW9uIHJlY29yZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIENGRl9UcmFuc2Zvcm1fCisgIHsKKyAgICBGVF9GaXhlZCAgICB4eCwgeHk7ICAgICAvKiB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggY29lZmZpY2llbnRzICovCisgICAgRlRfRml4ZWQgICAgeXgsIHl5OworICAgIEZUX0YyNkRvdDYgIG94LCBveTsgICAgIC8qIG9mZnNldHMgICAgICAgICovCisKKyAgfSBDRkZfVHJhbnNmb3JtOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIENGRiBkcml2ZXIgY2xhc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgQ0ZGX0RyaXZlclJlY18KKyAgeworICAgIEZUX0RyaXZlclJlYyAgcm9vdDsKKworICAgIEZUX1VJbnQgIGhpbnRpbmdfZW5naW5lOworICAgIEZUX0Jvb2wgIG5vX3N0ZW1fZGFya2VuaW5nOworCisgIH0gQ0ZGX0RyaXZlclJlYzsKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNmZl9zaXplX2luaXQoIEZUX1NpemUgIHNpemUgKTsgICAgICAgICAgIC8qIENGRl9TaXplICovCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZmZfc2l6ZV9kb25lKCBGVF9TaXplICBzaXplICk7ICAgICAgICAgICAvKiBDRkZfU2l6ZSAqLworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNmZl9zaXplX3JlcXVlc3QoIEZUX1NpemUgICAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEgKTsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNmZl9zaXplX3NlbGVjdCggRlRfU2l6ZSAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHN0cmlrZV9pbmRleCApOworCisjZW5kaWYKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNmZl9zbG90X2RvbmUoIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNmZl9zbG90X2luaXQoIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGYWNlIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNmZl9mYWNlX2luaXQoIEZUX1N0cmVhbSAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgZmFjZSwgICAgICAgICAgIC8qIENGRl9GYWNlICovCisgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMsCisgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtcyApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2ZmX2ZhY2VfZG9uZSggRlRfRmFjZSAgZmFjZSApOyAgICAgICAgICAgICAgIC8qIENGRl9GYWNlICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERyaXZlciBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgY2ZmX2RyaXZlcl9pbml0KCBGVF9Nb2R1bGUgIG1vZHVsZSApOyAgICAgICAgIC8qIENGRl9Ecml2ZXIgKi8KKworICBGVF9MT0NBTCggdm9pZCApCisgIGNmZl9kcml2ZXJfZG9uZSggRlRfTW9kdWxlICBtb2R1bGUgKTsgICAgICAgICAvKiBDRkZfRHJpdmVyICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19DRkZPQkpTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmcGFyc2UuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnBhcnNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJkODU1MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnBhcnNlLmMKQEAgLTAsMCArMSwxMTc3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZmZwYXJzZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQ0ZGIHRva2VuIHN0cmVhbSBwYXJzZXIgKGJvZHkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNCwgMjAwNy0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiY2ZmcGFyc2UuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisKKyNpbmNsdWRlICJjZmZlcnJzLmgiCisjaW5jbHVkZSAiY2ZmcGljLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9jZmZwYXJzZQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2ZmX3BhcnNlcl9pbml0KCBDRkZfUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgY29kZSwKKyAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICBvYmplY3QsCisgICAgICAgICAgICAgICAgICAgRlRfTGlicmFyeSAgbGlicmFyeSkKKyAgeworICAgIEZUX01FTV9aRVJPKCBwYXJzZXIsIHNpemVvZiAoICpwYXJzZXIgKSApOworCisgICAgcGFyc2VyLT50b3AgICAgICAgICA9IHBhcnNlci0+c3RhY2s7CisgICAgcGFyc2VyLT5vYmplY3RfY29kZSA9IGNvZGU7CisgICAgcGFyc2VyLT5vYmplY3QgICAgICA9IG9iamVjdDsKKyAgICBwYXJzZXItPmxpYnJhcnkgICAgID0gbGlicmFyeTsKKyAgfQorCisKKyAgLyogcmVhZCBhbiBpbnRlZ2VyICovCisgIHN0YXRpYyBGVF9Mb25nCisgIGNmZl9wYXJzZV9pbnRlZ2VyKCBGVF9CeXRlKiAgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgbGltaXQgKQorICB7CisgICAgRlRfQnl0ZSogIHAgICA9IHN0YXJ0OworICAgIEZUX0ludCAgICB2ICAgPSAqcCsrOworICAgIEZUX0xvbmcgICB2YWwgPSAwOworCisKKyAgICBpZiAoIHYgPT0gMjggKQorICAgIHsKKyAgICAgIGlmICggcCArIDIgPiBsaW1pdCApCisgICAgICAgIGdvdG8gQmFkOworCisgICAgICB2YWwgPSAoRlRfU2hvcnQpKCAoIChGVF9VU2hvcnQpcFswXSA8PCA4ICkgfCBwWzFdICk7CisgICAgICBwICArPSAyOworICAgIH0KKyAgICBlbHNlIGlmICggdiA9PSAyOSApCisgICAgeworICAgICAgaWYgKCBwICsgNCA+IGxpbWl0ICkKKyAgICAgICAgZ290byBCYWQ7CisKKyAgICAgIHZhbCA9IChGVF9Mb25nKSggKCAoRlRfVUxvbmcpcFswXSA8PCAyNCApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgKCAoRlRfVUxvbmcpcFsxXSA8PCAxNiApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgKCAoRlRfVUxvbmcpcFsyXSA8PCAgOCApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpcFszXSAgICAgICAgICk7CisgICAgICBwICs9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKCB2IDwgMjQ3ICkKKyAgICB7CisgICAgICB2YWwgPSB2IC0gMTM5OworICAgIH0KKyAgICBlbHNlIGlmICggdiA8IDI1MSApCisgICAgeworICAgICAgaWYgKCBwICsgMSA+IGxpbWl0ICkKKyAgICAgICAgZ290byBCYWQ7CisKKyAgICAgIHZhbCA9ICggdiAtIDI0NyApICogMjU2ICsgcFswXSArIDEwODsKKyAgICAgIHArKzsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICggcCArIDEgPiBsaW1pdCApCisgICAgICAgIGdvdG8gQmFkOworCisgICAgICB2YWwgPSAtKCB2IC0gMjUxICkgKiAyNTYgLSBwWzBdIC0gMTA4OworICAgICAgcCsrOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiB2YWw7CisKKyAgQmFkOgorICAgIHZhbCA9IDA7CisgICAgRlRfVFJBQ0U0KCggIiEhIUVORCBPRiBEQVRBOiEhISIgKSk7CisgICAgZ290byBFeGl0OworICB9CisKKworICBzdGF0aWMgY29uc3QgRlRfTG9uZyBwb3dlcl90ZW5zW10gPQorICB7CisgICAgMUwsCisgICAgMTBMLAorICAgIDEwMEwsCisgICAgMTAwMEwsCisgICAgMTAwMDBMLAorICAgIDEwMDAwMEwsCisgICAgMTAwMDAwMEwsCisgICAgMTAwMDAwMDBMLAorICAgIDEwMDAwMDAwMEwsCisgICAgMTAwMDAwMDAwMEwKKyAgfTsKKworCisgIC8qIHJlYWQgYSByZWFsICovCisgIHN0YXRpYyBGVF9GaXhlZAorICBjZmZfcGFyc2VfcmVhbCggRlRfQnl0ZSogIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogIGxpbWl0LAorICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgIHBvd2VyX3RlbiwKKyAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICBzY2FsaW5nICkKKyAgeworICAgIEZUX0J5dGUqICBwID0gc3RhcnQ7CisgICAgRlRfVUludCAgIG5pYjsKKyAgICBGVF9VSW50ICAgcGhhc2U7CisKKyAgICBGVF9Mb25nICAgcmVzdWx0LCBudW1iZXIsIGV4cG9uZW50OworICAgIEZUX0ludCAgICBzaWduID0gMCwgZXhwb25lbnRfc2lnbiA9IDAsIGhhdmVfb3ZlcmZsb3cgPSAwOworICAgIEZUX0xvbmcgICBleHBvbmVudF9hZGQsIGludGVnZXJfbGVuZ3RoLCBmcmFjdGlvbl9sZW5ndGg7CisKKworICAgIGlmICggc2NhbGluZyApCisgICAgICAqc2NhbGluZyA9IDA7CisKKyAgICByZXN1bHQgPSAwOworCisgICAgbnVtYmVyICAgPSAwOworICAgIGV4cG9uZW50ID0gMDsKKworICAgIGV4cG9uZW50X2FkZCAgICA9IDA7CisgICAgaW50ZWdlcl9sZW5ndGggID0gMDsKKyAgICBmcmFjdGlvbl9sZW5ndGggPSAwOworCisgICAgLyogRmlyc3Qgb2YgYWxsLCByZWFkIHRoZSBpbnRlZ2VyIHBhcnQuICovCisgICAgcGhhc2UgPSA0OworCisgICAgZm9yICg7OykKKyAgICB7CisgICAgICAvKiBJZiB3ZSBlbnRlcmVkIHRoaXMgaXRlcmF0aW9uIHdpdGggcGhhc2UgPT0gNCwgd2UgbmVlZCB0byAqLworICAgICAgLyogcmVhZCBhIG5ldyBieXRlLiAgVGhpcyBhbHNvIHNraXBzIHBhc3QgdGhlIGluaXRpYWwgMHgxRS4gKi8KKyAgICAgIGlmICggcGhhc2UgKQorICAgICAgeworICAgICAgICBwKys7CisKKyAgICAgICAgLyogTWFrZSBzdXJlIHdlIGRvbid0IHJlYWQgcGFzdCB0aGUgZW5kLiAqLworICAgICAgICBpZiAoIHAgPj0gbGltaXQgKQorICAgICAgICAgIGdvdG8gQmFkOworICAgICAgfQorCisgICAgICAvKiBHZXQgdGhlIG5pYmJsZS4gKi8KKyAgICAgIG5pYiAgID0gKCBwWzBdID4+IHBoYXNlICkgJiAweEY7CisgICAgICBwaGFzZSA9IDQgLSBwaGFzZTsKKworICAgICAgaWYgKCBuaWIgPT0gMHhFICkKKyAgICAgICAgc2lnbiA9IDE7CisgICAgICBlbHNlIGlmICggbmliID4gOSApCisgICAgICAgIGJyZWFrOworICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBJbmNyZWFzZSBleHBvbmVudCBpZiB3ZSBjYW4ndCBhZGQgdGhlIGRpZ2l0LiAqLworICAgICAgICBpZiAoIG51bWJlciA+PSAweENDQ0NDQ0NMICkKKyAgICAgICAgICBleHBvbmVudF9hZGQrKzsKKyAgICAgICAgLyogU2tpcCBsZWFkaW5nIHplcm9zLiAqLworICAgICAgICBlbHNlIGlmICggbmliIHx8IG51bWJlciApCisgICAgICAgIHsKKyAgICAgICAgICBpbnRlZ2VyX2xlbmd0aCsrOworICAgICAgICAgIG51bWJlciA9IG51bWJlciAqIDEwICsgbmliOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgLyogUmVhZCBmcmFjdGlvbiBwYXJ0LCBpZiBhbnkuICovCisgICAgaWYgKCBuaWIgPT0gMHhhICkKKyAgICAgIGZvciAoOzspCisgICAgICB7CisgICAgICAgIC8qIElmIHdlIGVudGVyZWQgdGhpcyBpdGVyYXRpb24gd2l0aCBwaGFzZSA9PSA0LCB3ZSBuZWVkICovCisgICAgICAgIC8qIHRvIHJlYWQgYSBuZXcgYnl0ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggcGhhc2UgKQorICAgICAgICB7CisgICAgICAgICAgcCsrOworCisgICAgICAgICAgLyogTWFrZSBzdXJlIHdlIGRvbid0IHJlYWQgcGFzdCB0aGUgZW5kLiAqLworICAgICAgICAgIGlmICggcCA+PSBsaW1pdCApCisgICAgICAgICAgICBnb3RvIEJhZDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEdldCB0aGUgbmliYmxlLiAqLworICAgICAgICBuaWIgICA9ICggcFswXSA+PiBwaGFzZSApICYgMHhGOworICAgICAgICBwaGFzZSA9IDQgLSBwaGFzZTsKKyAgICAgICAgaWYgKCBuaWIgPj0gMTAgKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIFNraXAgbGVhZGluZyB6ZXJvcyBpZiBwb3NzaWJsZS4gKi8KKyAgICAgICAgaWYgKCAhbmliICYmICFudW1iZXIgKQorICAgICAgICAgIGV4cG9uZW50X2FkZC0tOworICAgICAgICAvKiBPbmx5IGFkZCBkaWdpdCBpZiB3ZSBkb24ndCBvdmVyZmxvdy4gKi8KKyAgICAgICAgZWxzZSBpZiAoIG51bWJlciA8IDB4Q0NDQ0NDQ0wgJiYgZnJhY3Rpb25fbGVuZ3RoIDwgOSApCisgICAgICAgIHsKKyAgICAgICAgICBmcmFjdGlvbl9sZW5ndGgrKzsKKyAgICAgICAgICBudW1iZXIgPSBudW1iZXIgKiAxMCArIG5pYjsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgLyogUmVhZCBleHBvbmVudCwgaWYgYW55LiAqLworICAgIGlmICggbmliID09IDEyICkKKyAgICB7CisgICAgICBleHBvbmVudF9zaWduID0gMTsKKyAgICAgIG5pYiAgICAgICAgICAgPSAxMTsKKyAgICB9CisKKyAgICBpZiAoIG5pYiA9PSAxMSApCisgICAgeworICAgICAgZm9yICg7OykKKyAgICAgIHsKKyAgICAgICAgLyogSWYgd2UgZW50ZXJlZCB0aGlzIGl0ZXJhdGlvbiB3aXRoIHBoYXNlID09IDQsICovCisgICAgICAgIC8qIHdlIG5lZWQgdG8gcmVhZCBhIG5ldyBieXRlLiAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBpZiAoIHBoYXNlICkKKyAgICAgICAgeworICAgICAgICAgIHArKzsKKworICAgICAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBkb24ndCByZWFkIHBhc3QgdGhlIGVuZC4gKi8KKyAgICAgICAgICBpZiAoIHAgPj0gbGltaXQgKQorICAgICAgICAgICAgZ290byBCYWQ7CisgICAgICAgIH0KKworICAgICAgICAvKiBHZXQgdGhlIG5pYmJsZS4gKi8KKyAgICAgICAgbmliICAgPSAoIHBbMF0gPj4gcGhhc2UgKSAmIDB4RjsKKyAgICAgICAgcGhhc2UgPSA0IC0gcGhhc2U7CisgICAgICAgIGlmICggbmliID49IDEwICkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBBcmJpdHJhcmlseSBsaW1pdCBleHBvbmVudC4gKi8KKyAgICAgICAgaWYgKCBleHBvbmVudCA+IDEwMDAgKQorICAgICAgICAgIGhhdmVfb3ZlcmZsb3cgPSAxOworICAgICAgICBlbHNlCisgICAgICAgICAgZXhwb25lbnQgPSBleHBvbmVudCAqIDEwICsgbmliOworICAgICAgfQorCisgICAgICBpZiAoIGV4cG9uZW50X3NpZ24gKQorICAgICAgICBleHBvbmVudCA9IC1leHBvbmVudDsKKyAgICB9CisKKyAgICBpZiAoICFudW1iZXIgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCBoYXZlX292ZXJmbG93ICkKKyAgICB7CisgICAgICBpZiAoIGV4cG9uZW50X3NpZ24gKQorICAgICAgICBnb3RvIFVuZGVyZmxvdzsKKyAgICAgIGVsc2UKKyAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICB9CisKKyAgICAvKiBXZSBkb24ndCBjaGVjayBgcG93ZXJfdGVuJyBhbmQgYGV4cG9uZW50X2FkZCcuICovCisgICAgZXhwb25lbnQgKz0gcG93ZXJfdGVuICsgZXhwb25lbnRfYWRkOworCisgICAgaWYgKCBzY2FsaW5nICkKKyAgICB7CisgICAgICAvKiBPbmx5IHVzZSBgZnJhY3Rpb25fbGVuZ3RoJy4gKi8KKyAgICAgIGZyYWN0aW9uX2xlbmd0aCArPSBpbnRlZ2VyX2xlbmd0aDsKKyAgICAgIGV4cG9uZW50ICAgICAgICArPSBpbnRlZ2VyX2xlbmd0aDsKKworICAgICAgaWYgKCBmcmFjdGlvbl9sZW5ndGggPD0gNSApCisgICAgICB7CisgICAgICAgIGlmICggbnVtYmVyID4gMHg3RkZGTCApCisgICAgICAgIHsKKyAgICAgICAgICByZXN1bHQgICA9IEZUX0RpdkZpeCggbnVtYmVyLCAxMCApOworICAgICAgICAgICpzY2FsaW5nID0gZXhwb25lbnQgLSBmcmFjdGlvbl9sZW5ndGggKyAxOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGlmICggZXhwb25lbnQgPiAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9Mb25nICBuZXdfZnJhY3Rpb25fbGVuZ3RoLCBzaGlmdDsKKworCisgICAgICAgICAgICAvKiBNYWtlIGBzY2FsaW5nJyBhcyBzbWFsbCBhcyBwb3NzaWJsZS4gKi8KKyAgICAgICAgICAgIG5ld19mcmFjdGlvbl9sZW5ndGggPSBGVF9NSU4oIGV4cG9uZW50LCA1ICk7CisgICAgICAgICAgICBzaGlmdCAgICAgICAgICAgICAgID0gbmV3X2ZyYWN0aW9uX2xlbmd0aCAtIGZyYWN0aW9uX2xlbmd0aDsKKworICAgICAgICAgICAgaWYgKCBzaGlmdCA+IDAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBleHBvbmVudCAtPSBuZXdfZnJhY3Rpb25fbGVuZ3RoOworICAgICAgICAgICAgICBudW1iZXIgICAqPSBwb3dlcl90ZW5zW3NoaWZ0XTsKKyAgICAgICAgICAgICAgaWYgKCBudW1iZXIgPiAweDdGRkZMICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG51bWJlciAgIC89IDEwOworICAgICAgICAgICAgICAgIGV4cG9uZW50ICs9IDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZXhwb25lbnQgLT0gZnJhY3Rpb25fbGVuZ3RoOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBleHBvbmVudCAtPSBmcmFjdGlvbl9sZW5ndGg7CisKKyAgICAgICAgICByZXN1bHQgICA9IChGVF9Mb25nKSggKEZUX1VMb25nKW51bWJlciA8PCAxNiApOworICAgICAgICAgICpzY2FsaW5nID0gZXhwb25lbnQ7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgaWYgKCAoIG51bWJlciAvIHBvd2VyX3RlbnNbZnJhY3Rpb25fbGVuZ3RoIC0gNV0gKSA+IDB4N0ZGRkwgKQorICAgICAgICB7CisgICAgICAgICAgcmVzdWx0ICAgPSBGVF9EaXZGaXgoIG51bWJlciwgcG93ZXJfdGVuc1tmcmFjdGlvbl9sZW5ndGggLSA0XSApOworICAgICAgICAgICpzY2FsaW5nID0gZXhwb25lbnQgLSA0OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHJlc3VsdCAgID0gRlRfRGl2Rml4KCBudW1iZXIsIHBvd2VyX3RlbnNbZnJhY3Rpb25fbGVuZ3RoIC0gNV0gKTsKKyAgICAgICAgICAqc2NhbGluZyA9IGV4cG9uZW50IC0gNTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgaW50ZWdlcl9sZW5ndGggICs9IGV4cG9uZW50OworICAgICAgZnJhY3Rpb25fbGVuZ3RoIC09IGV4cG9uZW50OworCisgICAgICBpZiAoIGludGVnZXJfbGVuZ3RoID4gNSApCisgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICBpZiAoIGludGVnZXJfbGVuZ3RoIDwgLTUgKQorICAgICAgICBnb3RvIFVuZGVyZmxvdzsKKworICAgICAgLyogUmVtb3ZlIG5vbi1zaWduaWZpY2FudCBkaWdpdHMuICovCisgICAgICBpZiAoIGludGVnZXJfbGVuZ3RoIDwgMCApCisgICAgICB7CisgICAgICAgIG51bWJlciAgICAgICAgICAvPSBwb3dlcl90ZW5zWy1pbnRlZ2VyX2xlbmd0aF07CisgICAgICAgIGZyYWN0aW9uX2xlbmd0aCArPSBpbnRlZ2VyX2xlbmd0aDsKKyAgICAgIH0KKworICAgICAgLyogdGhpcyBjYW4gb25seSBoYXBwZW4gaWYgZXhwb25lbnQgd2FzIG5vbi16ZXJvICovCisgICAgICBpZiAoIGZyYWN0aW9uX2xlbmd0aCA9PSAxMCApCisgICAgICB7CisgICAgICAgIG51bWJlciAgICAgICAgICAvPSAxMDsKKyAgICAgICAgZnJhY3Rpb25fbGVuZ3RoIC09IDE7CisgICAgICB9CisKKyAgICAgIC8qIENvbnZlcnQgaW50byAxNi4xNiBmb3JtYXQuICovCisgICAgICBpZiAoIGZyYWN0aW9uX2xlbmd0aCA+IDAgKQorICAgICAgeworICAgICAgICBpZiAoICggbnVtYmVyIC8gcG93ZXJfdGVuc1tmcmFjdGlvbl9sZW5ndGhdICkgPiAweDdGRkZMICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgcmVzdWx0ID0gRlRfRGl2Rml4KCBudW1iZXIsIHBvd2VyX3RlbnNbZnJhY3Rpb25fbGVuZ3RoXSApOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBudW1iZXIgKj0gcG93ZXJfdGVuc1stZnJhY3Rpb25fbGVuZ3RoXTsKKworICAgICAgICBpZiAoIG51bWJlciA+IDB4N0ZGRkwgKQorICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisKKyAgICAgICAgcmVzdWx0ID0gKEZUX0xvbmcpKCAoRlRfVUxvbmcpbnVtYmVyIDw8IDE2ICk7CisgICAgICB9CisgICAgfQorCisgIEV4aXQ6CisgICAgaWYgKCBzaWduICkKKyAgICAgIHJlc3VsdCA9IC1yZXN1bHQ7CisKKyAgICByZXR1cm4gcmVzdWx0OworCisgIE92ZXJmbG93OgorICAgIHJlc3VsdCA9IDB4N0ZGRkZGRkZMOworICAgIEZUX1RSQUNFNCgoICIhISFPVkVSRkxPVzohISEiICkpOworICAgIGdvdG8gRXhpdDsKKworICBVbmRlcmZsb3c6CisgICAgcmVzdWx0ID0gMDsKKyAgICBGVF9UUkFDRTQoKCAiISEhVU5ERVJGTE9XOiEhISIgKSk7CisgICAgZ290byBFeGl0OworCisgIEJhZDoKKyAgICByZXN1bHQgPSAwOworICAgIEZUX1RSQUNFNCgoICIhISFFTkQgT0YgREFUQTohISEiICkpOworICAgIGdvdG8gRXhpdDsKKyAgfQorCisKKyAgLyogcmVhZCBhIG51bWJlciwgZWl0aGVyIGludGVnZXIgb3IgcmVhbCAqLworICBzdGF0aWMgRlRfTG9uZworICBjZmZfcGFyc2VfbnVtKCBGVF9CeXRlKiogIGQgKQorICB7CisgICAgcmV0dXJuICoqZCA9PSAzMCA/ICggY2ZmX3BhcnNlX3JlYWwoIGRbMF0sIGRbMV0sIDAsIE5VTEwgKSA+PiAxNiApCisgICAgICAgICAgICAgICAgICAgICA6ICAgY2ZmX3BhcnNlX2ludGVnZXIoIGRbMF0sIGRbMV0gKTsKKyAgfQorCisKKyAgLyogcmVhZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgZWl0aGVyIGludGVnZXIgb3IgcmVhbCAqLworICBzdGF0aWMgRlRfRml4ZWQKKyAgZG9fZml4ZWQoIEZUX0J5dGUqKiAgZCwKKyAgICAgICAgICAgIEZUX0xvbmcgICAgc2NhbGluZyApCisgIHsKKyAgICBpZiAoICoqZCA9PSAzMCApCisgICAgICByZXR1cm4gY2ZmX3BhcnNlX3JlYWwoIGRbMF0sIGRbMV0sIHNjYWxpbmcsIE5VTEwgKTsKKyAgICBlbHNlCisgICAgeworICAgICAgRlRfTG9uZyAgdmFsID0gY2ZmX3BhcnNlX2ludGVnZXIoIGRbMF0sIGRbMV0gKTsKKworCisgICAgICBpZiAoIHNjYWxpbmcgKQorICAgICAgICB2YWwgKj0gcG93ZXJfdGVuc1tzY2FsaW5nXTsKKworICAgICAgaWYgKCB2YWwgPiAweDdGRkYgKQorICAgICAgeworICAgICAgICB2YWwgPSAweDdGRkZGRkZGTDsKKyAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCB2YWwgPCAtMHg3RkZGICkKKyAgICAgIHsKKyAgICAgICAgdmFsID0gLTB4N0ZGRkZGRkZMOworICAgICAgICBnb3RvIE92ZXJmbG93OworICAgICAgfQorCisgICAgICByZXR1cm4gKEZUX0xvbmcpKCAoRlRfVUxvbmcpdmFsIDw8IDE2ICk7CisKKyAgICBPdmVyZmxvdzoKKyAgICAgIEZUX1RSQUNFNCgoICIhISFPVkVSRkxPVzohISEiICkpOworICAgICAgcmV0dXJuIHZhbDsKKyAgICB9CisgIH0KKworCisgIC8qIHJlYWQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIGVpdGhlciBpbnRlZ2VyIG9yIHJlYWwgKi8KKyAgc3RhdGljIEZUX0ZpeGVkCisgIGNmZl9wYXJzZV9maXhlZCggRlRfQnl0ZSoqICBkICkKKyAgeworICAgIHJldHVybiBkb19maXhlZCggZCwgMCApOworICB9CisKKworICAvKiByZWFkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBlaXRoZXIgaW50ZWdlciBvciByZWFsLCAqLworICAvKiBidXQgcmV0dXJuIGAxMF5zY2FsaW5nJyB0aW1lcyB0aGUgbnVtYmVyIHJlYWQgaW4gICAgICAqLworICBzdGF0aWMgRlRfRml4ZWQKKyAgY2ZmX3BhcnNlX2ZpeGVkX3NjYWxlZCggRlRfQnl0ZSoqICBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIHNjYWxpbmcgKQorICB7CisgICAgcmV0dXJuIGRvX2ZpeGVkKCBkLCBzY2FsaW5nICk7CisgIH0KKworCisgIC8qIHJlYWQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIGVpdGhlciBpbnRlZ2VyIG9yIHJlYWwsICAgICAqLworICAvKiBhbmQgcmV0dXJuIGl0IGFzIHByZWNpc2UgYXMgcG9zc2libGUgLS0gYHNjYWxpbmcnIHJldHVybnMgKi8KKyAgLyogdGhlIHNjYWxpbmcgZmFjdG9yIChhcyBhIHBvd2VyIG9mIDEwKSAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9GaXhlZAorICBjZmZfcGFyc2VfZml4ZWRfZHluYW1pYyggRlRfQnl0ZSoqICBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyogICBzY2FsaW5nICkKKyAgeworICAgIEZUX0FTU0VSVCggc2NhbGluZyApOworCisgICAgaWYgKCAqKmQgPT0gMzAgKQorICAgICAgcmV0dXJuIGNmZl9wYXJzZV9yZWFsKCBkWzBdLCBkWzFdLCAwLCBzY2FsaW5nICk7CisgICAgZWxzZQorICAgIHsKKyAgICAgIEZUX0xvbmcgIG51bWJlcjsKKyAgICAgIEZUX0ludCAgIGludGVnZXJfbGVuZ3RoOworCisKKyAgICAgIG51bWJlciA9IGNmZl9wYXJzZV9pbnRlZ2VyKCBkWzBdLCBkWzFdICk7CisKKyAgICAgIGlmICggbnVtYmVyID4gMHg3RkZGTCApCisgICAgICB7CisgICAgICAgIGZvciAoIGludGVnZXJfbGVuZ3RoID0gNTsgaW50ZWdlcl9sZW5ndGggPCAxMDsgaW50ZWdlcl9sZW5ndGgrKyApCisgICAgICAgICAgaWYgKCBudW1iZXIgPCBwb3dlcl90ZW5zW2ludGVnZXJfbGVuZ3RoXSApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoICggbnVtYmVyIC8gcG93ZXJfdGVuc1tpbnRlZ2VyX2xlbmd0aCAtIDVdICkgPiAweDdGRkZMICkKKyAgICAgICAgeworICAgICAgICAgICpzY2FsaW5nID0gaW50ZWdlcl9sZW5ndGggLSA0OworICAgICAgICAgIHJldHVybiBGVF9EaXZGaXgoIG51bWJlciwgcG93ZXJfdGVuc1tpbnRlZ2VyX2xlbmd0aCAtIDRdICk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgKnNjYWxpbmcgPSBpbnRlZ2VyX2xlbmd0aCAtIDU7CisgICAgICAgICAgcmV0dXJuIEZUX0RpdkZpeCggbnVtYmVyLCBwb3dlcl90ZW5zW2ludGVnZXJfbGVuZ3RoIC0gNV0gKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAqc2NhbGluZyA9IDA7CisgICAgICAgIHJldHVybiAoRlRfTG9uZykoIChGVF9VTG9uZyludW1iZXIgPDwgMTYgKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBjZmZfcGFyc2VfZm9udF9tYXRyaXgoIENGRl9QYXJzZXIgIHBhcnNlciApCisgIHsKKyAgICBDRkZfRm9udFJlY0RpY3QgIGRpY3QgICA9IChDRkZfRm9udFJlY0RpY3QpcGFyc2VyLT5vYmplY3Q7CisgICAgRlRfTWF0cml4KiAgICAgICBtYXRyaXggPSAmZGljdC0+Zm9udF9tYXRyaXg7CisgICAgRlRfVmVjdG9yKiAgICAgICBvZmZzZXQgPSAmZGljdC0+Zm9udF9vZmZzZXQ7CisgICAgRlRfVUxvbmcqICAgICAgICB1cG0gICAgPSAmZGljdC0+dW5pdHNfcGVyX2VtOworICAgIEZUX0J5dGUqKiAgICAgICAgZGF0YSAgID0gcGFyc2VyLT5zdGFjazsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yICA9IEZUX0VSUiggU3RhY2tfVW5kZXJmbG93ICk7CisKKworICAgIGlmICggcGFyc2VyLT50b3AgPj0gcGFyc2VyLT5zdGFjayArIDYgKQorICAgIHsKKyAgICAgIEZUX0xvbmcgIHNjYWxpbmc7CisKKworICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgICAgIGRpY3QtPmhhc19mb250X21hdHJpeCA9IFRSVUU7CisKKyAgICAgIC8qIFdlIGV4cGVjdCBhIHdlbGwtZm9ybWVkIGZvbnQgbWF0cml4LCB0aGlzIGlzLCB0aGUgbWF0cml4IGVsZW1lbnRzICovCisgICAgICAvKiBgeHgnIGFuZCBgeXknIGFyZSBvZiBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIG1hZ25pdHVkZS4gIFRvIGF2b2lkICAqLworICAgICAgLyogbG9zcyBvZiBwcmVjaXNpb24sIHdlIHVzZSB0aGUgbWFnbml0dWRlIG9mIGVsZW1lbnQgYHh4JyB0byBzY2FsZSAgKi8KKyAgICAgIC8qIGFsbCBvdGhlciBlbGVtZW50cy4gIFRoZSBzY2FsaW5nIGZhY3RvciBpcyB0aGVuIGNvbnRhaW5lZCBpbiB0aGUgICovCisgICAgICAvKiBgdW5pdHNfcGVyX2VtJyB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICBtYXRyaXgtPnh4ID0gY2ZmX3BhcnNlX2ZpeGVkX2R5bmFtaWMoIGRhdGErKywgJnNjYWxpbmcgKTsKKworICAgICAgc2NhbGluZyA9IC1zY2FsaW5nOworCisgICAgICBpZiAoIHNjYWxpbmcgPCAwIHx8IHNjYWxpbmcgPiA5ICkKKyAgICAgIHsKKyAgICAgICAgLyogUmV0dXJuIGRlZmF1bHQgbWF0cml4IGluIGNhc2Ugb2YgdW5saWtlbHkgdmFsdWVzLiAqLworCisgICAgICAgIEZUX1RSQUNFMSgoICJjZmZfcGFyc2VfZm9udF9tYXRyaXg6IgorICAgICAgICAgICAgICAgICAgICAiIHN0cmFuZ2Ugc2NhbGluZyB2YWx1ZSBmb3IgeHggZWxlbWVudCAoJWQpLFxuIgorICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICIKKyAgICAgICAgICAgICAgICAgICAgIiB1c2luZyBkZWZhdWx0IG1hdHJpeFxuIiwgc2NhbGluZyApKTsKKworICAgICAgICBtYXRyaXgtPnh4ID0gMHgxMDAwMEw7CisgICAgICAgIG1hdHJpeC0+eXggPSAwOworICAgICAgICBtYXRyaXgtPnh5ID0gMDsKKyAgICAgICAgbWF0cml4LT55eSA9IDB4MTAwMDBMOworICAgICAgICBvZmZzZXQtPnggID0gMDsKKyAgICAgICAgb2Zmc2V0LT55ICA9IDA7CisgICAgICAgICp1cG0gICAgICAgPSAxOworCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgbWF0cml4LT55eCA9IGNmZl9wYXJzZV9maXhlZF9zY2FsZWQoIGRhdGErKywgc2NhbGluZyApOworICAgICAgbWF0cml4LT54eSA9IGNmZl9wYXJzZV9maXhlZF9zY2FsZWQoIGRhdGErKywgc2NhbGluZyApOworICAgICAgbWF0cml4LT55eSA9IGNmZl9wYXJzZV9maXhlZF9zY2FsZWQoIGRhdGErKywgc2NhbGluZyApOworICAgICAgb2Zmc2V0LT54ICA9IGNmZl9wYXJzZV9maXhlZF9zY2FsZWQoIGRhdGErKywgc2NhbGluZyApOworICAgICAgb2Zmc2V0LT55ICA9IGNmZl9wYXJzZV9maXhlZF9zY2FsZWQoIGRhdGEsICAgc2NhbGluZyApOworCisgICAgICAqdXBtID0gcG93ZXJfdGVuc1tzY2FsaW5nXTsKKworICAgICAgRlRfVFJBQ0U0KCggIiBbJWYgJWYgJWYgJWYgJWYgJWZdXG4iLAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltYXRyaXgtPnh4IC8gKnVwbSAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltYXRyaXgtPnh5IC8gKnVwbSAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltYXRyaXgtPnl4IC8gKnVwbSAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSltYXRyaXgtPnl5IC8gKnVwbSAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSlvZmZzZXQtPnggIC8gKnVwbSAvIDY1NTM2LAorICAgICAgICAgICAgICAgICAgKGRvdWJsZSlvZmZzZXQtPnkgIC8gKnVwbSAvIDY1NTM2ICkpOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNmZl9wYXJzZV9mb250X2Jib3goIENGRl9QYXJzZXIgIHBhcnNlciApCisgIHsKKyAgICBDRkZfRm9udFJlY0RpY3QgIGRpY3QgPSAoQ0ZGX0ZvbnRSZWNEaWN0KXBhcnNlci0+b2JqZWN0OworICAgIEZUX0JCb3gqICAgICAgICAgYmJveCA9ICZkaWN0LT5mb250X2Jib3g7CisgICAgRlRfQnl0ZSoqICAgICAgICBkYXRhID0gcGFyc2VyLT5zdGFjazsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yOworCisKKyAgICBlcnJvciA9IEZUX0VSUiggU3RhY2tfVW5kZXJmbG93ICk7CisKKyAgICBpZiAoIHBhcnNlci0+dG9wID49IHBhcnNlci0+c3RhY2sgKyA0ICkKKyAgICB7CisgICAgICBiYm94LT54TWluID0gRlRfUm91bmRGaXgoIGNmZl9wYXJzZV9maXhlZCggZGF0YSsrICkgKTsKKyAgICAgIGJib3gtPnlNaW4gPSBGVF9Sb3VuZEZpeCggY2ZmX3BhcnNlX2ZpeGVkKCBkYXRhKysgKSApOworICAgICAgYmJveC0+eE1heCA9IEZUX1JvdW5kRml4KCBjZmZfcGFyc2VfZml4ZWQoIGRhdGErKyApICk7CisgICAgICBiYm94LT55TWF4ID0gRlRfUm91bmRGaXgoIGNmZl9wYXJzZV9maXhlZCggZGF0YSAgICkgKTsKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworCisgICAgICBGVF9UUkFDRTQoKCAiIFslZCAlZCAlZCAlZF1cbiIsCisgICAgICAgICAgICAgICAgICBiYm94LT54TWluIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICBiYm94LT55TWluIC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICBiYm94LT54TWF4IC8gNjU1MzYsCisgICAgICAgICAgICAgICAgICBiYm94LT55TWF4IC8gNjU1MzYgKSk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2ZmX3BhcnNlX3ByaXZhdGVfZGljdCggQ0ZGX1BhcnNlciAgcGFyc2VyICkKKyAgeworICAgIENGRl9Gb250UmVjRGljdCAgZGljdCA9IChDRkZfRm9udFJlY0RpY3QpcGFyc2VyLT5vYmplY3Q7CisgICAgRlRfQnl0ZSoqICAgICAgICBkYXRhID0gcGFyc2VyLT5zdGFjazsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yOworCisKKyAgICBlcnJvciA9IEZUX0VSUiggU3RhY2tfVW5kZXJmbG93ICk7CisKKyAgICBpZiAoIHBhcnNlci0+dG9wID49IHBhcnNlci0+c3RhY2sgKyAyICkKKyAgICB7CisgICAgICBkaWN0LT5wcml2YXRlX3NpemUgICA9IGNmZl9wYXJzZV9udW0oIGRhdGErKyApOworICAgICAgZGljdC0+cHJpdmF0ZV9vZmZzZXQgPSBjZmZfcGFyc2VfbnVtKCBkYXRhICAgKTsKKyAgICAgIEZUX1RSQUNFNCgoICIgJWx1ICVsdVxuIiwKKyAgICAgICAgICAgICAgICAgIGRpY3QtPnByaXZhdGVfc2l6ZSwgZGljdC0+cHJpdmF0ZV9vZmZzZXQgKSk7CisKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNmZl9wYXJzZV9jaWRfcm9zKCBDRkZfUGFyc2VyICBwYXJzZXIgKQorICB7CisgICAgQ0ZGX0ZvbnRSZWNEaWN0ICBkaWN0ID0gKENGRl9Gb250UmVjRGljdClwYXJzZXItPm9iamVjdDsKKyAgICBGVF9CeXRlKiogICAgICAgIGRhdGEgPSBwYXJzZXItPnN0YWNrOworICAgIEZUX0Vycm9yICAgICAgICAgZXJyb3I7CisKKworICAgIGVycm9yID0gRlRfRVJSKCBTdGFja19VbmRlcmZsb3cgKTsKKworICAgIGlmICggcGFyc2VyLT50b3AgPj0gcGFyc2VyLT5zdGFjayArIDMgKQorICAgIHsKKyAgICAgIGRpY3QtPmNpZF9yZWdpc3RyeSA9IChGVF9VSW50KWNmZl9wYXJzZV9udW0oIGRhdGErKyApOworICAgICAgZGljdC0+Y2lkX29yZGVyaW5nID0gKEZUX1VJbnQpY2ZmX3BhcnNlX251bSggZGF0YSsrICk7CisgICAgICBpZiAoICoqZGF0YSA9PSAzMCApCisgICAgICAgIEZUX1RSQUNFMSgoICJjZmZfcGFyc2VfY2lkX3JvczogcmVhbCBzdXBwbGVtZW50IGlzIHJvdW5kZWRcbiIgKSk7CisgICAgICBkaWN0LT5jaWRfc3VwcGxlbWVudCA9IGNmZl9wYXJzZV9udW0oIGRhdGEgKTsKKyAgICAgIGlmICggZGljdC0+Y2lkX3N1cHBsZW1lbnQgPCAwICkKKyAgICAgICAgRlRfVFJBQ0UxKCggImNmZl9wYXJzZV9jaWRfcm9zOiBuZWdhdGl2ZSBzdXBwbGVtZW50ICVkIGlzIGZvdW5kXG4iLAorICAgICAgICAgICAgICAgICAgIGRpY3QtPmNpZF9zdXBwbGVtZW50ICkpOworICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgICAgIEZUX1RSQUNFNCgoICIgJWQgJWQgJWRcbiIsCisgICAgICAgICAgICAgICAgICBkaWN0LT5jaWRfcmVnaXN0cnksCisgICAgICAgICAgICAgICAgICBkaWN0LT5jaWRfb3JkZXJpbmcsCisgICAgICAgICAgICAgICAgICBkaWN0LT5jaWRfc3VwcGxlbWVudCApKTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisjZGVmaW5lIENGRl9GSUVMRF9OVU0oIGNvZGUsIG5hbWUsIGlkICkgICAgICAgICAgICAgXAorICAgICAgICAgIENGRl9GSUVMRCggY29kZSwgbmFtZSwgaWQsIGNmZl9raW5kX251bSApCisjZGVmaW5lIENGRl9GSUVMRF9GSVhFRCggY29kZSwgbmFtZSwgaWQgKSAgICAgICAgICAgICBcCisgICAgICAgICAgQ0ZGX0ZJRUxEKCBjb2RlLCBuYW1lLCBpZCwgY2ZmX2tpbmRfZml4ZWQgKQorI2RlZmluZSBDRkZfRklFTERfRklYRURfMTAwMCggY29kZSwgbmFtZSwgaWQgKSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIENGRl9GSUVMRCggY29kZSwgbmFtZSwgaWQsIGNmZl9raW5kX2ZpeGVkX3Rob3VzYW5kICkKKyNkZWZpbmUgQ0ZGX0ZJRUxEX1NUUklORyggY29kZSwgbmFtZSwgaWQgKSAgICAgICAgICAgICBcCisgICAgICAgICAgQ0ZGX0ZJRUxEKCBjb2RlLCBuYW1lLCBpZCwgY2ZmX2tpbmRfc3RyaW5nICkKKyNkZWZpbmUgQ0ZGX0ZJRUxEX0JPT0woIGNvZGUsIG5hbWUsIGlkICkgICAgICAgICAgICAgXAorICAgICAgICAgIENGRl9GSUVMRCggY29kZSwgbmFtZSwgaWQsIGNmZl9raW5kX2Jvb2wgKQorCisjZGVmaW5lIENGRkNPREVfVE9QRElDVCAgMHgxMDAwCisjZGVmaW5lIENGRkNPREVfUFJJVkFURSAgMHgyMDAwCisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisKKyN1bmRlZiAgQ0ZGX0ZJRUxECisjdW5kZWYgIENGRl9GSUVMRF9ERUxUQQorCisKKyNpZm5kZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKworCisjZGVmaW5lIENGRl9GSUVMRF9DQUxMQkFDSyggY29kZSwgbmFtZSwgaWQgKSBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjZmZfa2luZF9jYWxsYmFjaywgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjb2RlIHwgQ0ZGQ09ERSwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAwLCAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjZmZfcGFyc2VfICMjIG5hbWUsICAgICAgICAgICAgICBcCisgICAgICAgICAgICAwLCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSwKKworI2RlZmluZSBDRkZfRklFTEQoIGNvZGUsIG5hbWUsIGlkLCBraW5kICkgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAga2luZCwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY29kZSB8IENGRkNPREUsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfT0ZGU0VUKCBuYW1lICksICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfU0laRSggbmFtZSApLCAgICAgICAgXAorICAgICAgICAgICAgMCwgMCwgMCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIH0sCisKKyNkZWZpbmUgQ0ZGX0ZJRUxEX0RFTFRBKCBjb2RlLCBuYW1lLCBtYXgsIGlkICkgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjZmZfa2luZF9kZWx0YSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNvZGUgfCBDRkZDT0RFLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfT0ZGU0VUKCBuYW1lICksICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9TSVpFX0RFTFRBKCBuYW1lICksICAgICAgIFwKKyAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgbWF4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBGVF9GSUVMRF9PRkZTRVQoIG51bV8gIyMgbmFtZSApICAgIFwKKyAgICAgICAgICB9LAorCisgIHN0YXRpYyBjb25zdCBDRkZfRmllbGRfSGFuZGxlciAgY2ZmX2ZpZWxkX2hhbmRsZXJzW10gPQorICB7CisKKyNpbmNsdWRlICJjZmZ0b2tlbi5oIgorCisgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KKyAgfTsKKworCisjZWxzZSAvKiBGVF9ERUJVR19MRVZFTF9UUkFDRSAqLworCisKKworI2RlZmluZSBDRkZfRklFTERfQ0FMTEJBQ0soIGNvZGUsIG5hbWUsIGlkICkgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY2ZmX2tpbmRfY2FsbGJhY2ssICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY29kZSB8IENGRkNPREUsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgMCwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY2ZmX3BhcnNlXyAjIyBuYW1lLCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgMCwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIH0sCisKKyNkZWZpbmUgQ0ZGX0ZJRUxEKCBjb2RlLCBuYW1lLCBpZCwga2luZCApIFwKKyAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGtpbmQsICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNvZGUgfCBDRkZDT0RFLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZUX0ZJRUxEX09GRlNFVCggbmFtZSApLCAgICAgIFwKKyAgICAgICAgICAgIEZUX0ZJRUxEX1NJWkUoIG5hbWUgKSwgICAgICAgIFwKKyAgICAgICAgICAgIDAsIDAsIDAsICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB9LAorCisjZGVmaW5lIENGRl9GSUVMRF9ERUxUQSggY29kZSwgbmFtZSwgbWF4LCBpZCApIFwKKyAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY2ZmX2tpbmRfZGVsdGEsICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjb2RlIHwgQ0ZGQ09ERSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEZUX0ZJRUxEX09GRlNFVCggbmFtZSApLCAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfU0laRV9ERUxUQSggbmFtZSApLCAgICAgICBcCisgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIG1heCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRlRfRklFTERfT0ZGU0VUKCBudW1fICMjIG5hbWUgKSwgICBcCisgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB9LAorCisgIHN0YXRpYyBjb25zdCBDRkZfRmllbGRfSGFuZGxlciAgY2ZmX2ZpZWxkX2hhbmRsZXJzW10gPQorICB7CisKKyNpbmNsdWRlICJjZmZ0b2tlbi5oIgorCisgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KKyAgfTsKKworCisjZW5kaWYgLyogRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisKKyAgdm9pZAorICBGVF9EZXN0cm95X0NsYXNzX2NmZl9maWVsZF9oYW5kbGVycyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZGX0ZpZWxkX0hhbmRsZXIqICBjbGF6eiApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGxpYnJhcnktPm1lbW9yeTsKKworCisgICAgaWYgKCBjbGF6eiApCisgICAgICBGVF9GUkVFKCBjbGF6eiApOworICB9CisKKworICBGVF9FcnJvcgorICBGVF9DcmVhdGVfQ2xhc3NfY2ZmX2ZpZWxkX2hhbmRsZXJzKCBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRkZfRmllbGRfSGFuZGxlcioqICBvdXRwdXRfY2xhc3MgKQorICB7CisgICAgQ0ZGX0ZpZWxkX0hhbmRsZXIqICBjbGF6eiAgPSBOVUxMOworICAgIEZUX0Vycm9yICAgICAgICAgICAgZXJyb3I7CisgICAgRlRfTWVtb3J5ICAgICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisKKyAgICBpbnQgIGkgPSAwOworCisKKyN1bmRlZiBDRkZfRklFTEQKKyNkZWZpbmUgQ0ZGX0ZJRUxEKCBjb2RlLCBuYW1lLCBpZCwga2luZCApIGkrKzsKKyN1bmRlZiBDRkZfRklFTERfREVMVEEKKyNkZWZpbmUgQ0ZGX0ZJRUxEX0RFTFRBKCBjb2RlLCBuYW1lLCBtYXgsIGlkICkgaSsrOworI3VuZGVmIENGRl9GSUVMRF9DQUxMQkFDSworI2RlZmluZSBDRkZfRklFTERfQ0FMTEJBQ0soIGNvZGUsIG5hbWUsIGlkICkgaSsrOworCisjaW5jbHVkZSAiY2ZmdG9rZW4uaCIKKworICAgIGkrKzsgLyogeyAwLCAwLCAwLCAwLCAwLCAwLCAwIH0gKi8KKworICAgIGlmICggRlRfQUxMT0MoIGNsYXp6LCBzaXplb2YgKCBDRkZfRmllbGRfSGFuZGxlciApICogaSApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIGkgPSAwOworCisKKyNpZm5kZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKworCisjdW5kZWYgQ0ZGX0ZJRUxEX0NBTExCQUNLCisjZGVmaW5lIENGRl9GSUVMRF9DQUxMQkFDSyggY29kZV8sIG5hbWVfLCBpZF8gKSAgICAgICAgXAorICAgICAgICAgIGNsYXp6W2ldLmtpbmQgICAgICAgICA9IGNmZl9raW5kX2NhbGxiYWNrOyAgIFwKKyAgICAgICAgICBjbGF6eltpXS5jb2RlICAgICAgICAgPSBjb2RlXyB8IENGRkNPREU7ICAgICBcCisgICAgICAgICAgY2xhenpbaV0ub2Zmc2V0ICAgICAgID0gMDsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXp6W2ldLnNpemUgICAgICAgICA9IDA7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5yZWFkZXIgICAgICAgPSBjZmZfcGFyc2VfICMjIG5hbWVfOyBcCisgICAgICAgICAgY2xhenpbaV0uYXJyYXlfbWF4ICAgID0gMDsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXp6W2ldLmNvdW50X29mZnNldCA9IDA7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpKys7CisKKyN1bmRlZiAgQ0ZGX0ZJRUxECisjZGVmaW5lIENGRl9GSUVMRCggY29kZV8sIG5hbWVfLCBpZF8sIGtpbmRfICkgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0ua2luZCAgICAgICAgID0ga2luZF87ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0uY29kZSAgICAgICAgID0gY29kZV8gfCBDRkZDT0RFOyAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0ub2Zmc2V0ICAgICAgID0gRlRfRklFTERfT0ZGU0VUKCBuYW1lXyApOyBcCisgICAgICAgICAgY2xhenpbaV0uc2l6ZSAgICAgICAgID0gRlRfRklFTERfU0laRSggbmFtZV8gKTsgICBcCisgICAgICAgICAgY2xhenpbaV0ucmVhZGVyICAgICAgID0gMDsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0uYXJyYXlfbWF4ICAgID0gMDsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0uY291bnRfb2Zmc2V0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaSsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisKKyN1bmRlZiAgQ0ZGX0ZJRUxEX0RFTFRBCisjZGVmaW5lIENGRl9GSUVMRF9ERUxUQSggY29kZV8sIG5hbWVfLCBtYXhfLCBpZF8gKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5raW5kICAgICAgICAgPSBjZmZfa2luZF9kZWx0YTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXp6W2ldLmNvZGUgICAgICAgICA9IGNvZGVfIHwgQ0ZGQ09ERTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0ub2Zmc2V0ICAgICAgID0gRlRfRklFTERfT0ZGU0VUKCBuYW1lXyApOyAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5zaXplICAgICAgICAgPSBGVF9GSUVMRF9TSVpFX0RFTFRBKCBuYW1lXyApOyAgICAgXAorICAgICAgICAgIGNsYXp6W2ldLnJlYWRlciAgICAgICA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0uYXJyYXlfbWF4ICAgID0gbWF4XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5jb3VudF9vZmZzZXQgPSBGVF9GSUVMRF9PRkZTRVQoIG51bV8gIyMgbmFtZV8gKTsgXAorICAgICAgICAgIGkrKzsKKworI2luY2x1ZGUgImNmZnRva2VuLmgiCisKKyAgICBjbGF6eltpXS5raW5kICAgICAgICAgPSAwOworICAgIGNsYXp6W2ldLmNvZGUgICAgICAgICA9IDA7CisgICAgY2xhenpbaV0ub2Zmc2V0ICAgICAgID0gMDsKKyAgICBjbGF6eltpXS5zaXplICAgICAgICAgPSAwOworICAgIGNsYXp6W2ldLnJlYWRlciAgICAgICA9IDA7CisgICAgY2xhenpbaV0uYXJyYXlfbWF4ICAgID0gMDsKKyAgICBjbGF6eltpXS5jb3VudF9vZmZzZXQgPSAwOworCisKKyNlbHNlIC8qIEZUX0RFQlVHX0xFVkVMX1RSQUNFICovCisKKworI3VuZGVmIENGRl9GSUVMRF9DQUxMQkFDSworI2RlZmluZSBDRkZfRklFTERfQ0FMTEJBQ0soIGNvZGVfLCBuYW1lXywgaWRfICkgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5raW5kICAgICAgICAgPSBjZmZfa2luZF9jYWxsYmFjazsgICBcCisgICAgICAgICAgY2xhenpbaV0uY29kZSAgICAgICAgID0gY29kZV8gfCBDRkZDT0RFOyAgICAgXAorICAgICAgICAgIGNsYXp6W2ldLm9mZnNldCAgICAgICA9IDA7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5zaXplICAgICAgICAgPSAwOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0ucmVhZGVyICAgICAgID0gY2ZmX3BhcnNlXyAjIyBuYW1lXzsgXAorICAgICAgICAgIGNsYXp6W2ldLmFycmF5X21heCAgICA9IDA7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5jb3VudF9vZmZzZXQgPSAwOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0uaWQgICAgICAgICAgID0gaWRfOyAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGkrKzsKKworI3VuZGVmICBDRkZfRklFTEQKKyNkZWZpbmUgQ0ZGX0ZJRUxEKCBjb2RlXywgbmFtZV8sIGlkXywga2luZF8gKSAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5raW5kICAgICAgICAgPSBraW5kXzsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5jb2RlICAgICAgICAgPSBjb2RlXyB8IENGRkNPREU7ICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5vZmZzZXQgICAgICAgPSBGVF9GSUVMRF9PRkZTRVQoIG5hbWVfICk7IFwKKyAgICAgICAgICBjbGF6eltpXS5zaXplICAgICAgICAgPSBGVF9GSUVMRF9TSVpFKCBuYW1lXyApOyAgIFwKKyAgICAgICAgICBjbGF6eltpXS5yZWFkZXIgICAgICAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5hcnJheV9tYXggICAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5jb3VudF9vZmZzZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5pZCAgICAgICAgICAgPSBpZF87ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKworI3VuZGVmICBDRkZfRklFTERfREVMVEEKKyNkZWZpbmUgQ0ZGX0ZJRUxEX0RFTFRBKCBjb2RlXywgbmFtZV8sIG1heF8sIGlkXyApICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXp6W2ldLmtpbmQgICAgICAgICA9IGNmZl9raW5kX2RlbHRhOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgY2xhenpbaV0uY29kZSAgICAgICAgID0gY29kZV8gfCBDRkZDT0RFOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5vZmZzZXQgICAgICAgPSBGVF9GSUVMRF9PRkZTRVQoIG5hbWVfICk7ICAgICAgICAgXAorICAgICAgICAgIGNsYXp6W2ldLnNpemUgICAgICAgICA9IEZUX0ZJRUxEX1NJWkVfREVMVEEoIG5hbWVfICk7ICAgICBcCisgICAgICAgICAgY2xhenpbaV0ucmVhZGVyICAgICAgID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjbGF6eltpXS5hcnJheV9tYXggICAgPSBtYXhfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGNsYXp6W2ldLmNvdW50X29mZnNldCA9IEZUX0ZJRUxEX09GRlNFVCggbnVtXyAjIyBuYW1lXyApOyBcCisgICAgICAgICAgY2xhenpbaV0uaWQgICAgICAgICAgID0gaWRfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpKys7CisKKyNpbmNsdWRlICJjZmZ0b2tlbi5oIgorCisgICAgY2xhenpbaV0ua2luZCAgICAgICAgID0gMDsKKyAgICBjbGF6eltpXS5jb2RlICAgICAgICAgPSAwOworICAgIGNsYXp6W2ldLm9mZnNldCAgICAgICA9IDA7CisgICAgY2xhenpbaV0uc2l6ZSAgICAgICAgID0gMDsKKyAgICBjbGF6eltpXS5yZWFkZXIgICAgICAgPSAwOworICAgIGNsYXp6W2ldLmFycmF5X21heCAgICA9IDA7CisgICAgY2xhenpbaV0uY291bnRfb2Zmc2V0ID0gMDsKKyAgICBjbGF6eltpXS5pZCAgICAgICAgICAgPSAwOworCisKKyNlbmRpZiAvKiBGVF9ERUJVR19MRVZFTF9UUkFDRSAqLworCisKKyAgICAqb3V0cHV0X2NsYXNzID0gY2xheno7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2ZmX3BhcnNlcl9ydW4oIENGRl9QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgbGltaXQgKQorICB7CisgICAgRlRfQnl0ZSogICAgcCAgICAgICA9IHN0YXJ0OworICAgIEZUX0Vycm9yICAgIGVycm9yICAgPSBGVF9FcnJfT2s7CisgICAgRlRfTGlicmFyeSAgbGlicmFyeSA9IHBhcnNlci0+bGlicmFyeTsKKyAgICBGVF9VTlVTRUQoIGxpYnJhcnkgKTsKKworCisgICAgcGFyc2VyLT50b3AgICAgPSBwYXJzZXItPnN0YWNrOworICAgIHBhcnNlci0+c3RhcnQgID0gc3RhcnQ7CisgICAgcGFyc2VyLT5saW1pdCAgPSBsaW1pdDsKKyAgICBwYXJzZXItPmN1cnNvciA9IHN0YXJ0OworCisgICAgd2hpbGUgKCBwIDwgbGltaXQgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgIHYgPSAqcDsKKworCisgICAgICBpZiAoIHYgPj0gMjcgJiYgdiAhPSAzMSApCisgICAgICB7CisgICAgICAgIC8qIGl0J3MgYSBudW1iZXI7IHdlIHdpbGwgcHVzaCBpdHMgcG9zaXRpb24gb24gdGhlIHN0YWNrICovCisgICAgICAgIGlmICggcGFyc2VyLT50b3AgLSBwYXJzZXItPnN0YWNrID49IENGRl9NQVhfU1RBQ0tfREVQVEggKQorICAgICAgICAgIGdvdG8gU3RhY2tfT3ZlcmZsb3c7CisKKyAgICAgICAgKnBhcnNlci0+dG9wICsrID0gcDsKKworICAgICAgICAvKiBub3csIHNraXAgaXQgKi8KKyAgICAgICAgaWYgKCB2ID09IDMwICkKKyAgICAgICAgeworICAgICAgICAgIC8qIHNraXAgcmVhbCBudW1iZXIgKi8KKyAgICAgICAgICBwKys7CisgICAgICAgICAgZm9yICg7OykKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBBbiB1bnRlcm1pbmF0ZWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGF0IHRoZSAqLworICAgICAgICAgICAgLyogZW5kIG9mIGEgZGljdGlvbmFyeSBpcyBpbnZhbGlkIGJ1dCBoYXJtbGVzcy4gKi8KKyAgICAgICAgICAgIGlmICggcCA+PSBsaW1pdCApCisgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgIHYgPSBwWzBdID4+IDQ7CisgICAgICAgICAgICBpZiAoIHYgPT0gMTUgKQorICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHYgPSBwWzBdICYgMHhGOworICAgICAgICAgICAgaWYgKCB2ID09IDE1ICkKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBwKys7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCB2ID09IDI4ICkKKyAgICAgICAgICBwICs9IDI7CisgICAgICAgIGVsc2UgaWYgKCB2ID09IDI5ICkKKyAgICAgICAgICBwICs9IDQ7CisgICAgICAgIGVsc2UgaWYgKCB2ID4gMjQ2ICkKKyAgICAgICAgICBwICs9IDE7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIFRoaXMgaXMgbm90IGEgbnVtYmVyLCBoZW5jZSBpdCdzIGFuIG9wZXJhdG9yLiAgQ29tcHV0ZSBpdHMgY29kZSAqLworICAgICAgICAvKiBhbmQgbG9vayBmb3IgaXQgaW4gb3VyIGN1cnJlbnQgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICBGVF9VSW50ICAgICAgICAgICAgICAgICAgIGNvZGU7CisgICAgICAgIEZUX1VJbnQgICAgICAgICAgICAgICAgICAgbnVtX2FyZ3MgPSAoRlRfVUludCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcGFyc2VyLT50b3AgLSBwYXJzZXItPnN0YWNrICk7CisgICAgICAgIGNvbnN0IENGRl9GaWVsZF9IYW5kbGVyKiAgZmllbGQ7CisKKworICAgICAgICAqcGFyc2VyLT50b3AgPSBwOworICAgICAgICBjb2RlID0gdjsKKyAgICAgICAgaWYgKCB2ID09IDEyICkKKyAgICAgICAgeworICAgICAgICAgIC8qIHR3byBieXRlIG9wZXJhdG9yICovCisgICAgICAgICAgcCsrOworICAgICAgICAgIGlmICggcCA+PSBsaW1pdCApCisgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKworICAgICAgICAgIGNvZGUgPSAweDEwMCB8IHBbMF07CisgICAgICAgIH0KKyAgICAgICAgY29kZSA9IGNvZGUgfCBwYXJzZXItPm9iamVjdF9jb2RlOworCisgICAgICAgIGZvciAoIGZpZWxkID0gQ0ZGX0ZJRUxEX0hBTkRMRVJTX0dFVDsgZmllbGQtPmtpbmQ7IGZpZWxkKysgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBmaWVsZC0+Y29kZSA9PSAoRlRfSW50KWNvZGUgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIHdlIGZvdW5kIG91ciBmaWVsZCdzIGhhbmRsZXI7IHJlYWQgaXQgKi8KKyAgICAgICAgICAgIEZUX0xvbmcgICB2YWw7CisgICAgICAgICAgICBGVF9CeXRlKiAgcSA9IChGVF9CeXRlKilwYXJzZXItPm9iamVjdCArIGZpZWxkLT5vZmZzZXQ7CisKKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiICAlcyIsIGZpZWxkLT5pZCApKTsKKyNlbmRpZgorCisgICAgICAgICAgICAvKiBjaGVjayB0aGF0IHdlIGhhdmUgZW5vdWdoIGFyZ3VtZW50cyAtLSBleGNlcHQgZm9yICovCisgICAgICAgICAgICAvKiBkZWx0YSBlbmNvZGVkIGFycmF5cywgd2hpY2ggY2FuIGJlIGVtcHR5ICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIGZpZWxkLT5raW5kICE9IGNmZl9raW5kX2RlbHRhICYmIG51bV9hcmdzIDwgMSApCisgICAgICAgICAgICAgIGdvdG8gU3RhY2tfVW5kZXJmbG93OworCisgICAgICAgICAgICBzd2l0Y2ggKCBmaWVsZC0+a2luZCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIGNmZl9raW5kX2Jvb2w6CisgICAgICAgICAgICBjYXNlIGNmZl9raW5kX3N0cmluZzoKKyAgICAgICAgICAgIGNhc2UgY2ZmX2tpbmRfbnVtOgorICAgICAgICAgICAgICB2YWwgPSBjZmZfcGFyc2VfbnVtKCBwYXJzZXItPnN0YWNrICk7CisgICAgICAgICAgICAgIGdvdG8gU3RvcmVfTnVtYmVyOworCisgICAgICAgICAgICBjYXNlIGNmZl9raW5kX2ZpeGVkOgorICAgICAgICAgICAgICB2YWwgPSBjZmZfcGFyc2VfZml4ZWQoIHBhcnNlci0+c3RhY2sgKTsKKyAgICAgICAgICAgICAgZ290byBTdG9yZV9OdW1iZXI7CisKKyAgICAgICAgICAgIGNhc2UgY2ZmX2tpbmRfZml4ZWRfdGhvdXNhbmQ6CisgICAgICAgICAgICAgIHZhbCA9IGNmZl9wYXJzZV9maXhlZF9zY2FsZWQoIHBhcnNlci0+c3RhY2ssIDMgKTsKKworICAgICAgICAgICAgU3RvcmVfTnVtYmVyOgorICAgICAgICAgICAgICBzd2l0Y2ggKCBmaWVsZC0+c2l6ZSApCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSAoOCAvIEZUX0NIQVJfQklUKToKKyAgICAgICAgICAgICAgICAqKEZUX0J5dGUqKXEgPSAoRlRfQnl0ZSl2YWw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgY2FzZSAoMTYgLyBGVF9DSEFSX0JJVCk6CisgICAgICAgICAgICAgICAgKihGVF9TaG9ydCopcSA9IChGVF9TaG9ydCl2YWw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgY2FzZSAoMzIgLyBGVF9DSEFSX0JJVCk6CisgICAgICAgICAgICAgICAgKihGVF9JbnQzMiopcSA9IChGVF9JbnQpdmFsOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGRlZmF1bHQ6ICAvKiBmb3IgNjQtYml0IHN5c3RlbXMgKi8KKyAgICAgICAgICAgICAgICAqKEZUX0xvbmcqKXEgPSB2YWw7CisgICAgICAgICAgICAgIH0KKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisgICAgICAgICAgICAgIHN3aXRjaCAoIGZpZWxkLT5raW5kICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIGNmZl9raW5kX2Jvb2w6CisgICAgICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiAlc1xuIiwgdmFsID8gInRydWUiIDogImZhbHNlIiApKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICBjYXNlIGNmZl9raW5kX3N0cmluZzoKKyAgICAgICAgICAgICAgICBGVF9UUkFDRTQoKCAiICVsZCAoU0lEKVxuIiwgdmFsICkpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGNhc2UgY2ZmX2tpbmRfbnVtOgorICAgICAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgJWxkXG4iLCB2YWwgKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgY2FzZSBjZmZfa2luZF9maXhlZDoKKyAgICAgICAgICAgICAgICBGVF9UUkFDRTQoKCAiICVmXG4iLCAoZG91YmxlKXZhbCAvIDY1NTM2ICkpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGNhc2UgY2ZmX2tpbmRfZml4ZWRfdGhvdXNhbmQ6CisgICAgICAgICAgICAgICAgRlRfVFJBQ0U0KCggIiAlZlxuIiwgKGRvdWJsZSl2YWwgLyA2NTUzNiAvIDEwMDAgKSk7CisKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICA7IC8qIG5ldmVyIHJlYWNoZWQgKi8KKyAgICAgICAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgY2ZmX2tpbmRfZGVsdGE6CisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIHFjb3VudCA9IChGVF9CeXRlKilwYXJzZXItPm9iamVjdCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLT5jb3VudF9vZmZzZXQ7CisKKyAgICAgICAgICAgICAgICBGVF9CeXRlKiogIGRhdGEgPSBwYXJzZXItPnN0YWNrOworCisKKyAgICAgICAgICAgICAgICBpZiAoIG51bV9hcmdzID4gZmllbGQtPmFycmF5X21heCApCisgICAgICAgICAgICAgICAgICBudW1fYXJncyA9IGZpZWxkLT5hcnJheV9tYXg7CisKKyAgICAgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIFsiICkpOworCisgICAgICAgICAgICAgICAgLyogc3RvcmUgY291bnQgKi8KKyAgICAgICAgICAgICAgICAqcWNvdW50ID0gKEZUX0J5dGUpbnVtX2FyZ3M7CisKKyAgICAgICAgICAgICAgICB2YWwgPSAwOworICAgICAgICAgICAgICAgIHdoaWxlICggbnVtX2FyZ3MgPiAwICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICB2YWwgKz0gY2ZmX3BhcnNlX251bSggZGF0YSsrICk7CisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKCBmaWVsZC0+c2l6ZSApCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlICg4IC8gRlRfQ0hBUl9CSVQpOgorICAgICAgICAgICAgICAgICAgICAqKEZUX0J5dGUqKXEgPSAoRlRfQnl0ZSl2YWw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICBjYXNlICgxNiAvIEZUX0NIQVJfQklUKToKKyAgICAgICAgICAgICAgICAgICAgKihGVF9TaG9ydCopcSA9IChGVF9TaG9ydCl2YWw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICBjYXNlICgzMiAvIEZUX0NIQVJfQklUKToKKyAgICAgICAgICAgICAgICAgICAgKihGVF9JbnQzMiopcSA9IChGVF9JbnQpdmFsOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgZGVmYXVsdDogIC8qIGZvciA2NC1iaXQgc3lzdGVtcyAqLworICAgICAgICAgICAgICAgICAgICAqKEZUX0xvbmcqKXEgPSB2YWw7CisgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgIEZUX1RSQUNFNCgoICIgJWxkIiwgdmFsICkpOworCisgICAgICAgICAgICAgICAgICBxICs9IGZpZWxkLT5zaXplOworICAgICAgICAgICAgICAgICAgbnVtX2FyZ3MtLTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBGVF9UUkFDRTQoKCAiXVxuIiApKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDogIC8qIGNhbGxiYWNrICovCisgICAgICAgICAgICAgIGVycm9yID0gZmllbGQtPnJlYWRlciggcGFyc2VyICk7CisgICAgICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gRm91bmQ7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogdGhpcyBpcyBhbiB1bmtub3duIG9wZXJhdG9yLCBvciBpdCBpcyB1bnN1cHBvcnRlZDsgKi8KKyAgICAgICAgLyogd2Ugd2lsbCBpZ25vcmUgaXQgZm9yIG5vdy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgRm91bmQ6CisgICAgICAgIC8qIGNsZWFyIHN0YWNrICovCisgICAgICAgIHBhcnNlci0+dG9wID0gcGFyc2VyLT5zdGFjazsKKyAgICAgIH0KKyAgICAgIHArKzsKKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisKKyAgU3RhY2tfT3ZlcmZsb3c6CisgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgIGdvdG8gRXhpdDsKKworICBTdGFja19VbmRlcmZsb3c6CisgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgIGdvdG8gRXhpdDsKKworICBTeW50YXhfRXJyb3I6CisgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgIGdvdG8gRXhpdDsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmcGFyc2UuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnBhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM3MWZkMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnBhcnNlLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNmZnBhcnNlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDRkYgdG9rZW4gc3RyZWFtIHBhcnNlciAoc3BlY2lmaWNhdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAzLCAyMDExIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NGRl9QQVJTRV9IX18KKyNkZWZpbmUgX19DRkZfUEFSU0VfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJjZmZ0eXBlcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBDRkZfTUFYX1NUQUNLX0RFUFRIICA5NgorCisjZGVmaW5lIENGRl9DT0RFX1RPUERJQ1QgIDB4MTAwMAorI2RlZmluZSBDRkZfQ09ERV9QUklWQVRFICAweDIwMDAKKworCisgIHR5cGVkZWYgc3RydWN0ICBDRkZfUGFyc2VyUmVjXworICB7CisgICAgRlRfTGlicmFyeSBsaWJyYXJ5OworICAgIEZUX0J5dGUqICAgc3RhcnQ7CisgICAgRlRfQnl0ZSogICBsaW1pdDsKKyAgICBGVF9CeXRlKiAgIGN1cnNvcjsKKworICAgIEZUX0J5dGUqICAgc3RhY2tbQ0ZGX01BWF9TVEFDS19ERVBUSCArIDFdOworICAgIEZUX0J5dGUqKiAgdG9wOworCisgICAgRlRfVUludCAgICBvYmplY3RfY29kZTsKKyAgICB2b2lkKiAgICAgIG9iamVjdDsKKworICB9IENGRl9QYXJzZXJSZWMsICpDRkZfUGFyc2VyOworCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjZmZfcGFyc2VyX2luaXQoIENGRl9QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBjb2RlLAorICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgIG9iamVjdCwKKyAgICAgICAgICAgICAgICAgICBGVF9MaWJyYXJ5ICBsaWJyYXJ5KTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjZmZfcGFyc2VyX3J1biggQ0ZGX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgc3RhcnQsCisgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgICBsaW1pdCApOworCisKKyAgZW51bQorICB7CisgICAgY2ZmX2tpbmRfbm9uZSA9IDAsCisgICAgY2ZmX2tpbmRfbnVtLAorICAgIGNmZl9raW5kX2ZpeGVkLAorICAgIGNmZl9raW5kX2ZpeGVkX3Rob3VzYW5kLAorICAgIGNmZl9raW5kX3N0cmluZywKKyAgICBjZmZfa2luZF9ib29sLAorICAgIGNmZl9raW5kX2RlbHRhLAorICAgIGNmZl9raW5kX2NhbGxiYWNrLAorCisgICAgY2ZmX2tpbmRfbWF4ICAvKiBkbyBub3QgcmVtb3ZlICovCisgIH07CisKKworICAvKiBub3cgZ2VuZXJhdGUgaGFuZGxlcnMgZm9yIHRoZSBtb3N0IHNpbXBsZSBmaWVsZHMgKi8KKyAgdHlwZWRlZiBGVF9FcnJvciAgKCpDRkZfRmllbGRfUmVhZGVyKSggQ0ZGX1BhcnNlciAgcGFyc2VyICk7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIENGRl9GaWVsZF9IYW5kbGVyXworICB7CisgICAgaW50ICAgICAgICAgICAgICAga2luZDsKKyAgICBpbnQgICAgICAgICAgICAgICBjb2RlOworICAgIEZUX1VJbnQgICAgICAgICAgIG9mZnNldDsKKyAgICBGVF9CeXRlICAgICAgICAgICBzaXplOworICAgIENGRl9GaWVsZF9SZWFkZXIgIHJlYWRlcjsKKyAgICBGVF9VSW50ICAgICAgICAgICBhcnJheV9tYXg7CisgICAgRlRfVUludCAgICAgICAgICAgY291bnRfb2Zmc2V0OworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKyAgICBjb25zdCBjaGFyKiAgICAgICBpZDsKKyNlbmRpZgorCisgIH0gQ0ZGX0ZpZWxkX0hhbmRsZXI7CisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX0NGRl9QQVJTRV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnBpYy5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmcGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY3NWU3MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnBpYy5jCkBAIC0wLDAgKzEsMTM4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZmZwaWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUgc2VydmljZXMgZm9yIGNmZiBtb2R1bGUuICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDksIDIwMTAsIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiY2ZmY21hcC5oIgorI2luY2x1ZGUgImNmZnBpYy5oIgorI2luY2x1ZGUgImNmZmVycnMuaCIKKworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworICAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIFBJQyBpbml0IGZ1bmN0aW9ucyBmcm9tIGNmZmRyaXZyLmMgKi8KKyAgRlRfRXJyb3IKKyAgRlRfQ3JlYXRlX0NsYXNzX2NmZl9zZXJ2aWNlcyggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqKiAgb3V0cHV0X2NsYXNzICk7CisgIHZvaWQKKyAgRlRfRGVzdHJveV9DbGFzc19jZmZfc2VydmljZXMoIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogKTsKKyAgdm9pZAorICBGVF9Jbml0X0NsYXNzX2NmZl9zZXJ2aWNlX3BzX2luZm8oIEZUX0xpYnJhcnkgICAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlX1BzSW5mb1JlYyogIGNsYXp6ICk7CisgIHZvaWQKKyAgRlRfSW5pdF9DbGFzc19jZmZfc2VydmljZV9nbHlwaF9kaWN0KCBGVF9MaWJyYXJ5ICAgICAgICAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZV9HbHlwaERpY3RSZWMqICBjbGF6eiApOworICB2b2lkCisgIEZUX0luaXRfQ2xhc3NfY2ZmX3NlcnZpY2VfcHNfbmFtZSggRlRfTGlicmFyeSAgICAgICAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlX1BzRm9udE5hbWVSZWMqICBjbGF6eiApOworICB2b2lkCisgIEZUX0luaXRfQ2xhc3NfY2ZmX3NlcnZpY2VfZ2V0X2NtYXBfaW5mbyggRlRfTGlicmFyeSAgICAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlX1RUQ01hcHNSZWMqICBjbGF6eiApOworICB2b2lkCisgIEZUX0luaXRfQ2xhc3NfY2ZmX3NlcnZpY2VfY2lkX2luZm8oIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZV9DSURSZWMqICBjbGF6eiApOworCisgIC8qIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgUElDIGluaXQgZnVuY3Rpb25zIGZyb20gY2ZmcGFyc2UuYyAqLworICBGVF9FcnJvcgorICBGVF9DcmVhdGVfQ2xhc3NfY2ZmX2ZpZWxkX2hhbmRsZXJzKCBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRkZfRmllbGRfSGFuZGxlcioqICBvdXRwdXRfY2xhc3MgKTsKKyAgdm9pZAorICBGVF9EZXN0cm95X0NsYXNzX2NmZl9maWVsZF9oYW5kbGVycyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZGX0ZpZWxkX0hhbmRsZXIqICBjbGF6eiApOworCisKKyAgdm9pZAorICBjZmZfZHJpdmVyX2NsYXNzX3BpY19mcmVlKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX1BJQ19Db250YWluZXIqICBwaWNfY29udGFpbmVyID0gJmxpYnJhcnktPnBpY19jb250YWluZXI7CisgICAgRlRfTWVtb3J5ICAgICAgICAgIG1lbW9yeSAgICAgICAgPSBsaWJyYXJ5LT5tZW1vcnk7CisKKworICAgIGlmICggcGljX2NvbnRhaW5lci0+Y2ZmICkKKyAgICB7CisgICAgICBDZmZNb2R1bGVQSUMqICBjb250YWluZXIgPSAoQ2ZmTW9kdWxlUElDKilwaWNfY29udGFpbmVyLT5jZmY7CisKKworICAgICAgaWYgKCBjb250YWluZXItPmNmZl9zZXJ2aWNlcyApCisgICAgICAgIEZUX0Rlc3Ryb3lfQ2xhc3NfY2ZmX3NlcnZpY2VzKCBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLT5jZmZfc2VydmljZXMgKTsKKyAgICAgIGNvbnRhaW5lci0+Y2ZmX3NlcnZpY2VzID0gTlVMTDsKKyAgICAgIGlmICggY29udGFpbmVyLT5jZmZfZmllbGRfaGFuZGxlcnMgKQorICAgICAgICBGVF9EZXN0cm95X0NsYXNzX2NmZl9maWVsZF9oYW5kbGVycygKKyAgICAgICAgICBsaWJyYXJ5LCBjb250YWluZXItPmNmZl9maWVsZF9oYW5kbGVycyApOworICAgICAgY29udGFpbmVyLT5jZmZfZmllbGRfaGFuZGxlcnMgPSBOVUxMOworICAgICAgRlRfRlJFRSggY29udGFpbmVyICk7CisgICAgICBwaWNfY29udGFpbmVyLT5jZmYgPSBOVUxMOworICAgIH0KKyAgfQorCisKKyAgRlRfRXJyb3IKKyAgY2ZmX2RyaXZlcl9jbGFzc19waWNfaW5pdCggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9QSUNfQ29udGFpbmVyKiAgcGljX2NvbnRhaW5lciA9ICZsaWJyYXJ5LT5waWNfY29udGFpbmVyOworICAgIEZUX0Vycm9yICAgICAgICAgICBlcnJvciAgICAgICAgID0gRlRfRXJyX09rOworICAgIENmZk1vZHVsZVBJQyogICAgICBjb250YWluZXIgICAgID0gTlVMTDsKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5ICAgICAgICA9IGxpYnJhcnktPm1lbW9yeTsKKworCisgICAgLyogYWxsb2NhdGUgcG9pbnRlciwgY2xlYXIgYW5kIHNldCBnbG9iYWwgY29udGFpbmVyIHBvaW50ZXIgKi8KKyAgICBpZiAoIEZUX0FMTE9DICggY29udGFpbmVyLCBzaXplb2YgKCAqY29udGFpbmVyICkgKSApCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgRlRfTUVNX1NFVCggY29udGFpbmVyLCAwLCBzaXplb2YgKCAqY29udGFpbmVyICkgKTsKKyAgICBwaWNfY29udGFpbmVyLT5jZmYgPSBjb250YWluZXI7CisKKyAgICAvKiBpbml0aWFsaXplIHBvaW50ZXIgdGFibGUgLSAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiB0aGlzIGlzIGhvdyB0aGUgbW9kdWxlIHVzdWFsbHkgZXhwZWN0cyB0aGlzIGRhdGEgKi8KKyAgICBlcnJvciA9IEZUX0NyZWF0ZV9DbGFzc19jZmZfc2VydmljZXMoIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGFpbmVyLT5jZmZfc2VydmljZXMgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGVycm9yID0gRlRfQ3JlYXRlX0NsYXNzX2NmZl9maWVsZF9oYW5kbGVycygKKyAgICAgICAgICAgICAgbGlicmFyeSwgJmNvbnRhaW5lci0+Y2ZmX2ZpZWxkX2hhbmRsZXJzICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBGVF9Jbml0X0NsYXNzX2NmZl9zZXJ2aWNlX3BzX2luZm8oCisgICAgICBsaWJyYXJ5LCAmY29udGFpbmVyLT5jZmZfc2VydmljZV9wc19pbmZvICk7CisgICAgRlRfSW5pdF9DbGFzc19jZmZfc2VydmljZV9nbHlwaF9kaWN0KAorICAgICAgbGlicmFyeSwgJmNvbnRhaW5lci0+Y2ZmX3NlcnZpY2VfZ2x5cGhfZGljdCApOworICAgIEZUX0luaXRfQ2xhc3NfY2ZmX3NlcnZpY2VfcHNfbmFtZSgKKyAgICAgIGxpYnJhcnksICZjb250YWluZXItPmNmZl9zZXJ2aWNlX3BzX25hbWUgKTsKKyAgICBGVF9Jbml0X0NsYXNzX2NmZl9zZXJ2aWNlX2dldF9jbWFwX2luZm8oCisgICAgICBsaWJyYXJ5LCAmY29udGFpbmVyLT5jZmZfc2VydmljZV9nZXRfY21hcF9pbmZvICk7CisgICAgRlRfSW5pdF9DbGFzc19jZmZfc2VydmljZV9jaWRfaW5mbygKKyAgICAgIGxpYnJhcnksICZjb250YWluZXItPmNmZl9zZXJ2aWNlX2NpZF9pbmZvICk7CisgICAgRlRfSW5pdF9DbGFzc19jZmZfY21hcF9lbmNvZGluZ19jbGFzc19yZWMoCisgICAgICBsaWJyYXJ5LCAmY29udGFpbmVyLT5jZmZfY21hcF9lbmNvZGluZ19jbGFzc19yZWMgKTsKKyAgICBGVF9Jbml0X0NsYXNzX2NmZl9jbWFwX3VuaWNvZGVfY2xhc3NfcmVjKAorICAgICAgbGlicmFyeSwgJmNvbnRhaW5lci0+Y2ZmX2NtYXBfdW5pY29kZV9jbGFzc19yZWMgKTsKKworICBFeGl0OgorICAgIGlmICggZXJyb3IgKQorICAgICAgY2ZmX2RyaXZlcl9jbGFzc19waWNfZnJlZSggbGlicmFyeSApOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnBpYy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmcGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiNzZlNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnBpYy5oCkBAIC0wLDAgKzEsMTA4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZmZwaWMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUgc2VydmljZXMgZm9yIGNmZiBtb2R1bGUuICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDksIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19DRkZQSUNfSF9fCisjZGVmaW5lIF9fQ0ZGUElDX0hfXworCisKK0ZUX0JFR0lOX0hFQURFUgorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHBpYy5oIgorCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBDRkZfU0VSVklDRV9QU19JTkZPX0dFVCAgICAgICAgICBjZmZfc2VydmljZV9wc19pbmZvCisjZGVmaW5lIENGRl9TRVJWSUNFX0dMWVBIX0RJQ1RfR0VUICAgICAgIGNmZl9zZXJ2aWNlX2dseXBoX2RpY3QKKyNkZWZpbmUgQ0ZGX1NFUlZJQ0VfUFNfTkFNRV9HRVQgICAgICAgICAgY2ZmX3NlcnZpY2VfcHNfbmFtZQorI2RlZmluZSBDRkZfU0VSVklDRV9HRVRfQ01BUF9JTkZPX0dFVCAgICBjZmZfc2VydmljZV9nZXRfY21hcF9pbmZvCisjZGVmaW5lIENGRl9TRVJWSUNFX0NJRF9JTkZPX0dFVCAgICAgICAgIGNmZl9zZXJ2aWNlX2NpZF9pbmZvCisjZGVmaW5lIENGRl9TRVJWSUNFX1BST1BFUlRJRVNfR0VUICAgICAgIGNmZl9zZXJ2aWNlX3Byb3BlcnRpZXMKKyNkZWZpbmUgQ0ZGX1NFUlZJQ0VTX0dFVCAgICAgICAgICAgICAgICAgY2ZmX3NlcnZpY2VzCisjZGVmaW5lIENGRl9DTUFQX0VOQ09ESU5HX0NMQVNTX1JFQ19HRVQgIGNmZl9jbWFwX2VuY29kaW5nX2NsYXNzX3JlYworI2RlZmluZSBDRkZfQ01BUF9VTklDT0RFX0NMQVNTX1JFQ19HRVQgICBjZmZfY21hcF91bmljb2RlX2NsYXNzX3JlYworI2RlZmluZSBDRkZfRklFTERfSEFORExFUlNfR0VUICAgICAgICAgICBjZmZfZmllbGRfaGFuZGxlcnMKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZnbGRpY3QuaCIKKyNpbmNsdWRlICJjZmZwYXJzZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2luZm8uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cG9zdG5tLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnR0Y21hcC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZjaWQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHJvcC5oIgorCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIENmZk1vZHVsZVBJQ18KKyAgeworICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgICAgICAgY2ZmX3NlcnZpY2VzOworICAgIENGRl9GaWVsZF9IYW5kbGVyKiAgICAgICAgY2ZmX2ZpZWxkX2hhbmRsZXJzOworICAgIEZUX1NlcnZpY2VfUHNJbmZvUmVjICAgICAgY2ZmX3NlcnZpY2VfcHNfaW5mbzsKKyAgICBGVF9TZXJ2aWNlX0dseXBoRGljdFJlYyAgIGNmZl9zZXJ2aWNlX2dseXBoX2RpY3Q7CisgICAgRlRfU2VydmljZV9Qc0ZvbnROYW1lUmVjICBjZmZfc2VydmljZV9wc19uYW1lOworICAgIEZUX1NlcnZpY2VfVFRDTWFwc1JlYyAgICAgY2ZmX3NlcnZpY2VfZ2V0X2NtYXBfaW5mbzsKKyAgICBGVF9TZXJ2aWNlX0NJRFJlYyAgICAgICAgIGNmZl9zZXJ2aWNlX2NpZF9pbmZvOworICAgIEZUX1NlcnZpY2VfUHJvcGVydGllc1JlYyAgY2ZmX3NlcnZpY2VfcHJvcGVydGllczsKKyAgICBGVF9DTWFwX0NsYXNzUmVjICAgICAgICAgIGNmZl9jbWFwX2VuY29kaW5nX2NsYXNzX3JlYzsKKyAgICBGVF9DTWFwX0NsYXNzUmVjICAgICAgICAgIGNmZl9jbWFwX3VuaWNvZGVfY2xhc3NfcmVjOworCisgIH0gQ2ZmTW9kdWxlUElDOworCisKKyNkZWZpbmUgR0VUX1BJQyggbGliICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCAoQ2ZmTW9kdWxlUElDKikoIChsaWIpLT5waWNfY29udGFpbmVyLmNmZiApICkKKworI2RlZmluZSBDRkZfU0VSVklDRV9QU19JTkZPX0dFVCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT5jZmZfc2VydmljZV9wc19pbmZvICkKKyNkZWZpbmUgQ0ZGX1NFUlZJQ0VfR0xZUEhfRElDVF9HRVQgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEdFVF9QSUMoIGxpYnJhcnkgKS0+Y2ZmX3NlcnZpY2VfZ2x5cGhfZGljdCApCisjZGVmaW5lIENGRl9TRVJWSUNFX1BTX05BTUVfR0VUICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBHRVRfUElDKCBsaWJyYXJ5ICktPmNmZl9zZXJ2aWNlX3BzX25hbWUgKQorI2RlZmluZSBDRkZfU0VSVklDRV9HRVRfQ01BUF9JTkZPX0dFVCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT5jZmZfc2VydmljZV9nZXRfY21hcF9pbmZvICkKKyNkZWZpbmUgQ0ZGX1NFUlZJQ0VfQ0lEX0lORk9fR0VUICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBHRVRfUElDKCBsaWJyYXJ5ICktPmNmZl9zZXJ2aWNlX2NpZF9pbmZvICkKKyNkZWZpbmUgQ0ZGX1NFUlZJQ0VfUFJPUEVSVElFU19HRVQgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEdFVF9QSUMoIGxpYnJhcnkgKS0+Y2ZmX3NlcnZpY2VfcHJvcGVydGllcyApCisjZGVmaW5lIENGRl9TRVJWSUNFU19HRVQgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEdFVF9QSUMoIGxpYnJhcnkgKS0+Y2ZmX3NlcnZpY2VzICkKKyNkZWZpbmUgQ0ZGX0NNQVBfRU5DT0RJTkdfQ0xBU1NfUkVDX0dFVCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT5jZmZfY21hcF9lbmNvZGluZ19jbGFzc19yZWMgKQorI2RlZmluZSBDRkZfQ01BUF9VTklDT0RFX0NMQVNTX1JFQ19HRVQgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEdFVF9QSUMoIGxpYnJhcnkgKS0+Y2ZmX2NtYXBfdW5pY29kZV9jbGFzc19yZWMgKQorI2RlZmluZSBDRkZfRklFTERfSEFORExFUlNfR0VUICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBHRVRfUElDKCBsaWJyYXJ5ICktPmNmZl9maWVsZF9oYW5kbGVycyApCisKKyAgLyogc2VlIGNmZnBpYy5jIGZvciB0aGUgaW1wbGVtZW50YXRpb24gKi8KKyAgdm9pZAorICBjZmZfZHJpdmVyX2NsYXNzX3BpY19mcmVlKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKyAgRlRfRXJyb3IKKyAgY2ZmX2RyaXZlcl9jbGFzc19waWNfaW5pdCggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fQ0ZGUElDX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmdG9rZW4uaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnRva2VuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNiNDI3NgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZnRva2VuLmgKQEAgLTAsMCArMSw5NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2ZmdG9rZW4uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIENGRiB0b2tlbiBkZWZpbml0aW9ucyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDMsIDIwMTEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjdW5kZWYgIEZUX1NUUlVDVFVSRQorI2RlZmluZSBGVF9TVFJVQ1RVUkUgIENGRl9Gb250UmVjRGljdFJlYworCisjdW5kZWYgIENGRkNPREUKKyNkZWZpbmUgQ0ZGQ09ERSAgICAgICBDRkZDT0RFX1RPUERJQ1QKKworICBDRkZfRklFTERfU1RSSU5HICAoIDAsICAgICB2ZXJzaW9uLCAgICAgICAgICAgICAiVmVyc2lvbiIgKQorICBDRkZfRklFTERfU1RSSU5HICAoIDEsICAgICBub3RpY2UsICAgICAgICAgICAgICAiTm90aWNlIiApCisgIENGRl9GSUVMRF9TVFJJTkcgICggMHgxMDAsIGNvcHlyaWdodCwgICAgICAgICAgICJDb3B5cmlnaHQiICkKKyAgQ0ZGX0ZJRUxEX1NUUklORyAgKCAyLCAgICAgZnVsbF9uYW1lLCAgICAgICAgICAgIkZ1bGxOYW1lIiApCisgIENGRl9GSUVMRF9TVFJJTkcgICggMywgICAgIGZhbWlseV9uYW1lLCAgICAgICAgICJGYW1pbHlOYW1lIiApCisgIENGRl9GSUVMRF9TVFJJTkcgICggNCwgICAgIHdlaWdodCwgICAgICAgICAgICAgICJXZWlnaHQiICkKKyAgQ0ZGX0ZJRUxEX0JPT0wgICAgKCAweDEwMSwgaXNfZml4ZWRfcGl0Y2gsICAgICAgImlzRml4ZWRQaXRjaCIgKQorICBDRkZfRklFTERfRklYRUQgICAoIDB4MTAyLCBpdGFsaWNfYW5nbGUsICAgICAgICAiSXRhbGljQW5nbGUiICkKKyAgQ0ZGX0ZJRUxEX0ZJWEVEICAgKCAweDEwMywgdW5kZXJsaW5lX3Bvc2l0aW9uLCAgIlVuZGVybGluZVBvc2l0aW9uIiApCisgIENGRl9GSUVMRF9GSVhFRCAgICggMHgxMDQsIHVuZGVybGluZV90aGlja25lc3MsICJVbmRlcmxpbmVUaGlja25lc3MiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgKCAweDEwNSwgcGFpbnRfdHlwZSwgICAgICAgICAgIlBhaW50VHlwZSIgKQorICBDRkZfRklFTERfTlVNICAgICAoIDB4MTA2LCBjaGFyc3RyaW5nX3R5cGUsICAgICAiQ2hhcnN0cmluZ1R5cGUiICkKKyAgQ0ZGX0ZJRUxEX0NBTExCQUNLKCAweDEwNywgZm9udF9tYXRyaXgsICAgICAgICAgIkZvbnRNYXRyaXgiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgKCAxMywgICAgdW5pcXVlX2lkLCAgICAgICAgICAgIlVuaXF1ZUlEIiApCisgIENGRl9GSUVMRF9DQUxMQkFDSyggNSwgICAgIGZvbnRfYmJveCwgICAgICAgICAgICJGb250QkJveCIgKQorICBDRkZfRklFTERfTlVNICAgICAoIDB4MTA4LCBzdHJva2Vfd2lkdGgsICAgICAgICAiU3Ryb2tlV2lkdGgiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgKCAxNSwgICAgY2hhcnNldF9vZmZzZXQsICAgICAgImNoYXJzZXQiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgKCAxNiwgICAgZW5jb2Rpbmdfb2Zmc2V0LCAgICAgIkVuY29kaW5nIiApCisgIENGRl9GSUVMRF9OVU0gICAgICggMTcsICAgIGNoYXJzdHJpbmdzX29mZnNldCwgICJDaGFyU3RyaW5ncyIgKQorICBDRkZfRklFTERfQ0FMTEJBQ0soIDE4LCAgICBwcml2YXRlX2RpY3QsICAgICAgICAiUHJpdmF0ZSIgKQorICBDRkZfRklFTERfTlVNICAgICAoIDB4MTE0LCBzeW50aGV0aWNfYmFzZSwgICAgICAiU3ludGhldGljQmFzZSIgKQorICBDRkZfRklFTERfU1RSSU5HICAoIDB4MTE1LCBlbWJlZGRlZF9wb3N0c2NyaXB0LCAiUG9zdFNjcmlwdCIgKQorCisjaWYgMAorICBDRkZfRklFTERfU1RSSU5HICAoIDB4MTE2LCBiYXNlX2ZvbnRfbmFtZSwgICAgICAiQmFzZUZvbnROYW1lIiApCisgIENGRl9GSUVMRF9ERUxUQSAgICggMHgxMTcsIGJhc2VfZm9udF9ibGVuZCwgMTYsICJCYXNlRm9udEJsZW5kIiApCisgIENGRl9GSUVMRF9DQUxMQkFDSyggMHgxMTgsIG11bHRpcGxlX21hc3RlciwgICAgICJNdWx0aXBsZU1hc3RlciIgKQorICBDRkZfRklFTERfQ0FMTEJBQ0soIDB4MTE5LCBibGVuZF9heGlzX3R5cGVzLCAgICAiQmxlbmRBeGlzVHlwZXMiICkKKyNlbmRpZgorCisgIENGRl9GSUVMRF9DQUxMQkFDSyggMHgxMUUsIGNpZF9yb3MsICAgICAgICAgICAgICAiUk9TIiApCisgIENGRl9GSUVMRF9OVU0gICAgICggMHgxMUYsIGNpZF9mb250X3ZlcnNpb24sICAgICAiQ0lERm9udFZlcnNpb24iICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgKCAweDEyMCwgY2lkX2ZvbnRfcmV2aXNpb24sICAgICJDSURGb250UmV2aXNpb24iICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgKCAweDEyMSwgY2lkX2ZvbnRfdHlwZSwgICAgICAgICJDSURGb250VHlwZSIgKQorICBDRkZfRklFTERfTlVNICAgICAoIDB4MTIyLCBjaWRfY291bnQsICAgICAgICAgICAgIkNJRENvdW50IiApCisgIENGRl9GSUVMRF9OVU0gICAgICggMHgxMjMsIGNpZF91aWRfYmFzZSwgICAgICAgICAiVUlEQmFzZSIgKQorICBDRkZfRklFTERfTlVNICAgICAoIDB4MTI0LCBjaWRfZmRfYXJyYXlfb2Zmc2V0LCAgIkZEQXJyYXkiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgKCAweDEyNSwgY2lkX2ZkX3NlbGVjdF9vZmZzZXQsICJGRFNlbGVjdCIgKQorICBDRkZfRklFTERfU1RSSU5HICAoIDB4MTI2LCBjaWRfZm9udF9uYW1lLCAgICAgICAgIkZvbnROYW1lIiApCisKKyNpZiAwCisgIENGRl9GSUVMRF9OVU0gICAgICggMHgxMjcsIGNoYW1lbGVvbiwgIkNoYW1lbGVvbiIgKQorI2VuZGlmCisKKworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBDRkZfUHJpdmF0ZVJlYworI3VuZGVmICBDRkZDT0RFCisjZGVmaW5lIENGRkNPREUgICAgICAgQ0ZGQ09ERV9QUklWQVRFCisKKyAgQ0ZGX0ZJRUxEX0RFTFRBICAgICAoIDYsICAgICBibHVlX3ZhbHVlcywgMTQsICAgICAgICAiQmx1ZVZhbHVlcyIgKQorICBDRkZfRklFTERfREVMVEEgICAgICggNywgICAgIG90aGVyX2JsdWVzLCAxMCwgICAgICAgICJPdGhlckJsdWVzIiApCisgIENGRl9GSUVMRF9ERUxUQSAgICAgKCA4LCAgICAgZmFtaWx5X2JsdWVzLCAxNCwgICAgICAgIkZhbWlseUJsdWVzIiApCisgIENGRl9GSUVMRF9ERUxUQSAgICAgKCA5LCAgICAgZmFtaWx5X290aGVyX2JsdWVzLCAxMCwgIkZhbWlseU90aGVyQmx1ZXMiICkKKyAgQ0ZGX0ZJRUxEX0ZJWEVEXzEwMDAoIDB4MTA5LCBibHVlX3NjYWxlLCAgICAgICAgICAgICAiQmx1ZVNjYWxlIiApCisgIENGRl9GSUVMRF9OVU0gICAgICAgKCAweDEwQSwgYmx1ZV9zaGlmdCwgICAgICAgICAgICAgIkJsdWVTaGlmdCIgKQorICBDRkZfRklFTERfTlVNICAgICAgICggMHgxMEIsIGJsdWVfZnV6eiwgICAgICAgICAgICAgICJCbHVlRnV6eiIgKQorICBDRkZfRklFTERfTlVNICAgICAgICggMTAsICAgIHN0YW5kYXJkX3dpZHRoLCAgICAgICAgICJTdGRIVyIgKQorICBDRkZfRklFTERfTlVNICAgICAgICggMTEsICAgIHN0YW5kYXJkX2hlaWdodCwgICAgICAgICJTdGRWVyIgKQorICBDRkZfRklFTERfREVMVEEgICAgICggMHgxMEMsIHNuYXBfd2lkdGhzLCAxMywgICAgICAgICJTdGVtU25hcEgiICkKKyAgQ0ZGX0ZJRUxEX0RFTFRBICAgICAoIDB4MTBELCBzbmFwX2hlaWdodHMsIDEzLCAgICAgICAiU3RlbVNuYXBWIiApCisgIENGRl9GSUVMRF9CT09MICAgICAgKCAweDEwRSwgZm9yY2VfYm9sZCwgICAgICAgICAgICAgIkZvcmNlQm9sZCIgKQorICBDRkZfRklFTERfRklYRUQgICAgICggMHgxMEYsIGZvcmNlX2JvbGRfdGhyZXNob2xkLCAgICJGb3JjZUJvbGRUaHJlc2hvbGQiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgICAoIDB4MTEwLCBsZW5JViwgICAgICAgICAgICAgICAgICAibGVuSVYiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgICAoIDB4MTExLCBsYW5ndWFnZV9ncm91cCwgICAgICAgICAiTGFuZ3VhZ2VHcm91cCIgKQorICBDRkZfRklFTERfRklYRUQgICAgICggMHgxMTIsIGV4cGFuc2lvbl9mYWN0b3IsICAgICAgICJFeHBhbnNpb25GYWN0b3IiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgICAoIDB4MTEzLCBpbml0aWFsX3JhbmRvbV9zZWVkLCAgICAiaW5pdGlhbFJhbmRvbVNlZWQiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgICAoIDE5LCAgICBsb2NhbF9zdWJyc19vZmZzZXQsICAgICAiU3VicnMiICkKKyAgQ0ZGX0ZJRUxEX05VTSAgICAgICAoIDIwLCAgICBkZWZhdWx0X3dpZHRoLCAgICAgICAgICAiZGVmYXVsdFdpZHRoWCIgKQorICBDRkZfRklFTERfTlVNICAgICAgICggMjEsICAgIG5vbWluYWxfd2lkdGgsICAgICAgICAgICJub21pbmFsV2lkdGhYIiApCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZ0eXBlcy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmdHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDhlMDY0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvY2ZmdHlwZXMuaApAQCAtMCwwICsxLDI4NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2ZmdHlwZXMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEJhc2ljIE9wZW5UeXBlL0NGRiB0eXBlIGRlZmluaXRpb25zIGFuZCBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24gICAgICovCisvKiAgICBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAzLCAyMDA2LTIwMDgsIDIwMTAtMjAxMSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NGRlRZUEVTX0hfXworI2RlZmluZSBfX0NGRlRZUEVTX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2NtYXAuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFN0cnVjdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENGRl9JbmRleFJlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgc3RydWN0dXJlIHVzZWQgdG8gbW9kZWwgYSBDRkYgSW5kZXggdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSAgICAgIDo6IFRoZSBzb3VyY2UgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RhcnQgICAgICAgOjogVGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBpbmRleCBieXRlIGluIHRoZSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY291bnQgICAgICAgOjogVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgaW5kZXguICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvZmZfc2l6ZSAgICA6OiBUaGUgc2l6ZSBpbiBieXRlcyBvZiBvYmplY3Qgb2Zmc2V0cyBpbiBpbmRleC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRhdGFfb2Zmc2V0IDo6IFRoZSBwb3NpdGlvbiBvZiBmaXJzdCBkYXRhIGJ5dGUgaW4gdGhlIGluZGV4J3MgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBieXRlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRhdGFfc2l6ZSAgIDo6IFRoZSBzaXplIG9mIHRoZSBkYXRhIHRhYmxlIGluIHRoaXMgaW5kZXguICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb2Zmc2V0cyAgICAgOjogQSB0YWJsZSBvZiBlbGVtZW50IG9mZnNldHMgaW4gdGhlIGluZGV4LiAgTXVzdCBiZSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGxvYWRlZCBleHBsaWNpdGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYnl0ZXMgICAgICAgOjogSWYgdGhlIGluZGV4IGlzIGxvYWRlZCBpbiBtZW1vcnksIGl0cyBieXRlcy4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgQ0ZGX0luZGV4UmVjXworICB7CisgICAgRlRfU3RyZWFtICBzdHJlYW07CisgICAgRlRfVUxvbmcgICBzdGFydDsKKyAgICBGVF9VSW50ICAgIGNvdW50OworICAgIEZUX0J5dGUgICAgb2ZmX3NpemU7CisgICAgRlRfVUxvbmcgICBkYXRhX29mZnNldDsKKyAgICBGVF9VTG9uZyAgIGRhdGFfc2l6ZTsKKworICAgIEZUX1VMb25nKiAgb2Zmc2V0czsKKyAgICBGVF9CeXRlKiAgIGJ5dGVzOworCisgIH0gQ0ZGX0luZGV4UmVjLCAqQ0ZGX0luZGV4OworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIENGRl9FbmNvZGluZ1JlY18KKyAgeworICAgIEZUX1VJbnQgICAgIGZvcm1hdDsKKyAgICBGVF9VTG9uZyAgICBvZmZzZXQ7CisKKyAgICBGVF9VSW50ICAgICBjb3VudDsKKyAgICBGVF9VU2hvcnQgICBzaWRzIFsyNTZdOyAgLyogYXZvaWQgZHluYW1pYyBhbGxvY2F0aW9ucyAqLworICAgIEZUX1VTaG9ydCAgIGNvZGVzWzI1Nl07CisKKyAgfSBDRkZfRW5jb2RpbmdSZWMsICpDRkZfRW5jb2Rpbmc7CisKKworICB0eXBlZGVmIHN0cnVjdCAgQ0ZGX0NoYXJzZXRSZWNfCisgIHsKKworICAgIEZUX1VJbnQgICAgIGZvcm1hdDsKKyAgICBGVF9VTG9uZyAgICBvZmZzZXQ7CisKKyAgICBGVF9VU2hvcnQqICBzaWRzOworICAgIEZUX1VTaG9ydCogIGNpZHM7ICAgICAgIC8qIHRoZSBpbnZlcnNlIG1hcHBpbmcgb2YgYHNpZHMnOyBvbmx5IG5lZWRlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciBDSUQta2V5ZWQgZm9udHMgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIEZUX1VJbnQgICAgIG1heF9jaWQ7CisgICAgRlRfVUludCAgICAgbnVtX2dseXBoczsKKworICB9IENGRl9DaGFyc2V0UmVjLCAqQ0ZGX0NoYXJzZXQ7CisKKworICB0eXBlZGVmIHN0cnVjdCAgQ0ZGX0ZvbnRSZWNEaWN0UmVjXworICB7CisgICAgRlRfVUludCAgICB2ZXJzaW9uOworICAgIEZUX1VJbnQgICAgbm90aWNlOworICAgIEZUX1VJbnQgICAgY29weXJpZ2h0OworICAgIEZUX1VJbnQgICAgZnVsbF9uYW1lOworICAgIEZUX1VJbnQgICAgZmFtaWx5X25hbWU7CisgICAgRlRfVUludCAgICB3ZWlnaHQ7CisgICAgRlRfQm9vbCAgICBpc19maXhlZF9waXRjaDsKKyAgICBGVF9GaXhlZCAgIGl0YWxpY19hbmdsZTsKKyAgICBGVF9GaXhlZCAgIHVuZGVybGluZV9wb3NpdGlvbjsKKyAgICBGVF9GaXhlZCAgIHVuZGVybGluZV90aGlja25lc3M7CisgICAgRlRfSW50ICAgICBwYWludF90eXBlOworICAgIEZUX0ludCAgICAgY2hhcnN0cmluZ190eXBlOworICAgIEZUX01hdHJpeCAgZm9udF9tYXRyaXg7CisgICAgRlRfQm9vbCAgICBoYXNfZm9udF9tYXRyaXg7CisgICAgRlRfVUxvbmcgICB1bml0c19wZXJfZW07ICAvKiB0ZW1wb3JhcmlseSB1c2VkIGFzIHNjYWxpbmcgdmFsdWUgYWxzbyAqLworICAgIEZUX1ZlY3RvciAgZm9udF9vZmZzZXQ7CisgICAgRlRfVUxvbmcgICB1bmlxdWVfaWQ7CisgICAgRlRfQkJveCAgICBmb250X2Jib3g7CisgICAgRlRfUG9zICAgICBzdHJva2Vfd2lkdGg7CisgICAgRlRfVUxvbmcgICBjaGFyc2V0X29mZnNldDsKKyAgICBGVF9VTG9uZyAgIGVuY29kaW5nX29mZnNldDsKKyAgICBGVF9VTG9uZyAgIGNoYXJzdHJpbmdzX29mZnNldDsKKyAgICBGVF9VTG9uZyAgIHByaXZhdGVfb2Zmc2V0OworICAgIEZUX1VMb25nICAgcHJpdmF0ZV9zaXplOworICAgIEZUX0xvbmcgICAgc3ludGhldGljX2Jhc2U7CisgICAgRlRfVUludCAgICBlbWJlZGRlZF9wb3N0c2NyaXB0OworCisgICAgLyogdGhlc2Ugc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGhlIHRvcC1sZXZlbCBmb250IGRpY3Rpb25hcnkgKi8KKyAgICBGVF9VSW50ICAgIGNpZF9yZWdpc3RyeTsKKyAgICBGVF9VSW50ICAgIGNpZF9vcmRlcmluZzsKKyAgICBGVF9Mb25nICAgIGNpZF9zdXBwbGVtZW50OworCisgICAgRlRfTG9uZyAgICBjaWRfZm9udF92ZXJzaW9uOworICAgIEZUX0xvbmcgICAgY2lkX2ZvbnRfcmV2aXNpb247CisgICAgRlRfTG9uZyAgICBjaWRfZm9udF90eXBlOworICAgIEZUX1VMb25nICAgY2lkX2NvdW50OworICAgIEZUX1VMb25nICAgY2lkX3VpZF9iYXNlOworICAgIEZUX1VMb25nICAgY2lkX2ZkX2FycmF5X29mZnNldDsKKyAgICBGVF9VTG9uZyAgIGNpZF9mZF9zZWxlY3Rfb2Zmc2V0OworICAgIEZUX1VJbnQgICAgY2lkX2ZvbnRfbmFtZTsKKworICB9IENGRl9Gb250UmVjRGljdFJlYywgKkNGRl9Gb250UmVjRGljdDsKKworCisgIHR5cGVkZWYgc3RydWN0ICBDRkZfUHJpdmF0ZVJlY18KKyAgeworICAgIEZUX0J5dGUgICBudW1fYmx1ZV92YWx1ZXM7CisgICAgRlRfQnl0ZSAgIG51bV9vdGhlcl9ibHVlczsKKyAgICBGVF9CeXRlICAgbnVtX2ZhbWlseV9ibHVlczsKKyAgICBGVF9CeXRlICAgbnVtX2ZhbWlseV9vdGhlcl9ibHVlczsKKworICAgIEZUX1BvcyAgICBibHVlX3ZhbHVlc1sxNF07CisgICAgRlRfUG9zICAgIG90aGVyX2JsdWVzWzEwXTsKKyAgICBGVF9Qb3MgICAgZmFtaWx5X2JsdWVzWzE0XTsKKyAgICBGVF9Qb3MgICAgZmFtaWx5X290aGVyX2JsdWVzWzEwXTsKKworICAgIEZUX0ZpeGVkICBibHVlX3NjYWxlOworICAgIEZUX1BvcyAgICBibHVlX3NoaWZ0OworICAgIEZUX1BvcyAgICBibHVlX2Z1eno7CisgICAgRlRfUG9zICAgIHN0YW5kYXJkX3dpZHRoOworICAgIEZUX1BvcyAgICBzdGFuZGFyZF9oZWlnaHQ7CisKKyAgICBGVF9CeXRlICAgbnVtX3NuYXBfd2lkdGhzOworICAgIEZUX0J5dGUgICBudW1fc25hcF9oZWlnaHRzOworICAgIEZUX1BvcyAgICBzbmFwX3dpZHRoc1sxM107CisgICAgRlRfUG9zICAgIHNuYXBfaGVpZ2h0c1sxM107CisgICAgRlRfQm9vbCAgIGZvcmNlX2JvbGQ7CisgICAgRlRfRml4ZWQgIGZvcmNlX2JvbGRfdGhyZXNob2xkOworICAgIEZUX0ludCAgICBsZW5JVjsKKyAgICBGVF9JbnQgICAgbGFuZ3VhZ2VfZ3JvdXA7CisgICAgRlRfRml4ZWQgIGV4cGFuc2lvbl9mYWN0b3I7CisgICAgRlRfTG9uZyAgIGluaXRpYWxfcmFuZG9tX3NlZWQ7CisgICAgRlRfVUxvbmcgIGxvY2FsX3N1YnJzX29mZnNldDsKKyAgICBGVF9Qb3MgICAgZGVmYXVsdF93aWR0aDsKKyAgICBGVF9Qb3MgICAgbm9taW5hbF93aWR0aDsKKworICB9IENGRl9Qcml2YXRlUmVjLCAqQ0ZGX1ByaXZhdGU7CisKKworICB0eXBlZGVmIHN0cnVjdCAgQ0ZGX0ZEU2VsZWN0UmVjXworICB7CisgICAgRlRfQnl0ZSAgIGZvcm1hdDsKKyAgICBGVF9VSW50ICAgcmFuZ2VfY291bnQ7CisKKyAgICAvKiB0aGF0J3MgdGhlIHRhYmxlLCB0YWtlbiBmcm9tIHRoZSBmaWxlIGBhcyBpcycgKi8KKyAgICBGVF9CeXRlKiAgZGF0YTsKKyAgICBGVF9VSW50ICAgZGF0YV9zaXplOworCisgICAgLyogc21hbGwgY2FjaGUgZm9yIGZvcm1hdCAzIG9ubHkgKi8KKyAgICBGVF9VSW50ICAgY2FjaGVfZmlyc3Q7CisgICAgRlRfVUludCAgIGNhY2hlX2NvdW50OworICAgIEZUX0J5dGUgICBjYWNoZV9mZDsKKworICB9IENGRl9GRFNlbGVjdFJlYywgKkNGRl9GRFNlbGVjdDsKKworCisgIC8qIEEgU3ViRm9udCBwYWNrcyBhIGZvbnQgZGljdCBhbmQgYSBwcml2YXRlIGRpY3QgdG9nZXRoZXIuICBUaGV5IGFyZSAqLworICAvKiBuZWVkZWQgdG8gc3VwcG9ydCBDSUQta2V5ZWQgQ0ZGIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIENGRl9TdWJGb250UmVjXworICB7CisgICAgQ0ZGX0ZvbnRSZWNEaWN0UmVjICBmb250X2RpY3Q7CisgICAgQ0ZGX1ByaXZhdGVSZWMgICAgICBwcml2YXRlX2RpY3Q7CisKKyAgICBDRkZfSW5kZXhSZWMgICAgICAgIGxvY2FsX3N1YnJzX2luZGV4OworICAgIEZUX0J5dGUqKiAgICAgICAgICAgbG9jYWxfc3VicnM7IC8qIGFycmF5IG9mIHBvaW50ZXJzIGludG8gTG9jYWwgU3VicnMgSU5ERVggZGF0YSAqLworCisgIH0gQ0ZGX1N1YkZvbnRSZWMsICpDRkZfU3ViRm9udDsKKworCisjZGVmaW5lIENGRl9NQVhfQ0lEX0ZPTlRTICAyNTYKKworCisgIHR5cGVkZWYgc3RydWN0ICBDRkZfRm9udFJlY18KKyAgeworICAgIEZUX1N0cmVhbSAgICAgICAgc3RyZWFtOworICAgIEZUX01lbW9yeSAgICAgICAgbWVtb3J5OworICAgIEZUX1VJbnQgICAgICAgICAgbnVtX2ZhY2VzOworICAgIEZUX1VJbnQgICAgICAgICAgbnVtX2dseXBoczsKKworICAgIEZUX0J5dGUgICAgICAgICAgdmVyc2lvbl9tYWpvcjsKKyAgICBGVF9CeXRlICAgICAgICAgIHZlcnNpb25fbWlub3I7CisgICAgRlRfQnl0ZSAgICAgICAgICBoZWFkZXJfc2l6ZTsKKyAgICBGVF9CeXRlICAgICAgICAgIGFic29sdXRlX29mZnNpemU7CisKKworICAgIENGRl9JbmRleFJlYyAgICAgbmFtZV9pbmRleDsKKyAgICBDRkZfSW5kZXhSZWMgICAgIHRvcF9kaWN0X2luZGV4OworICAgIENGRl9JbmRleFJlYyAgICAgZ2xvYmFsX3N1YnJzX2luZGV4OworCisgICAgQ0ZGX0VuY29kaW5nUmVjICBlbmNvZGluZzsKKyAgICBDRkZfQ2hhcnNldFJlYyAgIGNoYXJzZXQ7CisKKyAgICBDRkZfSW5kZXhSZWMgICAgIGNoYXJzdHJpbmdzX2luZGV4OworICAgIENGRl9JbmRleFJlYyAgICAgZm9udF9kaWN0X2luZGV4OworICAgIENGRl9JbmRleFJlYyAgICAgcHJpdmF0ZV9pbmRleDsKKyAgICBDRkZfSW5kZXhSZWMgICAgIGxvY2FsX3N1YnJzX2luZGV4OworCisgICAgRlRfU3RyaW5nKiAgICAgICBmb250X25hbWU7CisKKyAgICAvKiBhcnJheSBvZiBwb2ludGVycyBpbnRvIEdsb2JhbCBTdWJycyBJTkRFWCBkYXRhICovCisgICAgRlRfQnl0ZSoqICAgICAgICBnbG9iYWxfc3VicnM7CisKKyAgICAvKiBhcnJheSBvZiBwb2ludGVycyBpbnRvIFN0cmluZyBJTkRFWCBkYXRhIHN0b3JlZCBhdCBzdHJpbmdfcG9vbCAqLworICAgIEZUX1VJbnQgICAgICAgICAgbnVtX3N0cmluZ3M7CisgICAgRlRfQnl0ZSoqICAgICAgICBzdHJpbmdzOworICAgIEZUX0J5dGUqICAgICAgICAgc3RyaW5nX3Bvb2w7CisKKyAgICBDRkZfU3ViRm9udFJlYyAgIHRvcF9mb250OworICAgIEZUX1VJbnQgICAgICAgICAgbnVtX3N1YmZvbnRzOworICAgIENGRl9TdWJGb250ICAgICAgc3ViZm9udHNbQ0ZGX01BWF9DSURfRk9OVFNdOworCisgICAgQ0ZGX0ZEU2VsZWN0UmVjICBmZF9zZWxlY3Q7CisKKyAgICAvKiBpbnRlcmZhY2UgdG8gUG9zdFNjcmlwdCBoaW50ZXIgKi8KKyAgICBQU0hpbnRlcl9TZXJ2aWNlICBwc2hpbnRlcjsKKworICAgIC8qIGludGVyZmFjZSB0byBQb3N0c2NyaXB0IE5hbWVzIHNlcnZpY2UgKi8KKyAgICBGVF9TZXJ2aWNlX1BzQ01hcHMgIHBzbmFtZXM7CisKKyAgICAvKiBzaW5jZSB2ZXJzaW9uIDIuMy4wICovCisgICAgUFNfRm9udEluZm9SZWMqICBmb250X2luZm87ICAgLyogZm9udCBpbmZvIGRpY3Rpb25hcnkgKi8KKworICAgIC8qIHNpbmNlIHZlcnNpb24gMi4zLjYgKi8KKyAgICBGVF9TdHJpbmcqICAgICAgIHJlZ2lzdHJ5OworICAgIEZUX1N0cmluZyogICAgICAgb3JkZXJpbmc7CisKKyAgICAvKiBzaW5jZSB2ZXJzaW9uIDIuNC4xMiAqLworICAgIEZUX0dlbmVyaWMgICAgICAgY2YyX2luc3RhbmNlOworCisgIH0gQ0ZGX0ZvbnRSZWMsICpDRkZfRm9udDsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0NGRlRZUEVTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvZnhmdF9jZmYuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2Z4ZnRfY2ZmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRkYmFiYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL2Z4ZnRfY2ZmLmMKQEAgLTAsMCArMSw0NSBAQAorI2lmICFkZWZpbmVkKF9GWEZUX1ZFUlNJT05fKSB8fCBfRlhGVF9WRVJTSU9OXyA9PSAyNTAxCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjZmYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgT3BlblR5cGUgZHJpdmVyIGNvbXBvbmVudCAoYm9keSBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNkZWZpbmUgRlRfTUFLRV9PUFRJT05fU0lOR0xFX09CSkVDVAorI2RlZmluZSBGVDJfQlVJTERfTElCUkFSWQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorCisjaW5jbHVkZSAiY2ZmcGljLmMiCisjaW5jbHVkZSAiY2ZmZHJpdnIuYyIKKyNpbmNsdWRlICJjZmZwYXJzZS5jIgorI2luY2x1ZGUgImNmZmxvYWQuYyIKKyNpbmNsdWRlICJjZmZvYmpzLmMiCisjaW5jbHVkZSAiY2ZmZ2xvYWQuYyIKKyNpbmNsdWRlICJjZmZjbWFwLmMiCisKKyNpbmNsdWRlICJjZjJhcnJzdC5jIgorI2luY2x1ZGUgImNmMmJsdWVzLmMiCisjaW5jbHVkZSAiY2YyZXJyb3IuYyIKKyNpbmNsdWRlICJjZjJmb250LmMiCisjaW5jbHVkZSAiY2YyZnQuYyIKKyNpbmNsdWRlICJjZjJoaW50cy5jIgorI2luY2x1ZGUgImNmMmludHJwLmMiCisjaW5jbHVkZSAiY2YycmVhZC5jIgorI2luY2x1ZGUgImNmMnN0YWNrLmMiCisKKy8qIEVORCAqLworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL21vZHVsZS5tayBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL21vZHVsZS5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjEzOTFjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvbW9kdWxlLm1rCkBAIC0wLDAgKzEsMjMgQEAKKyMKKyMgRnJlZVR5cGUgMiBDRkYgbW9kdWxlIGRlZmluaXRpb24KKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDAsIDIwMDYgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKK0ZUTU9EVUxFX0hfQ09NTUFORFMgKz0gQ0ZGX0RSSVZFUgorCitkZWZpbmUgQ0ZGX0RSSVZFUgorJChPUEVOX0RSSVZFUikgRlRfRHJpdmVyX0NsYXNzUmVjLCBjZmZfZHJpdmVyX2NsYXNzICQoQ0xPU0VfRFJJVkVSKQorJChFQ0hPX0RSSVZFUiljZmYgICAgICAgJChFQ0hPX0RSSVZFUl9ERVNDKU9wZW5UeXBlIGZvbnRzIHdpdGggZXh0ZW5zaW9uICoub3RmJChFQ0hPX0RSSVZFUl9ET05FKQorZW5kZWYKKworIyBFT0YKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL3J1bGVzLm1rIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jZmYvcnVsZXMubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMxMTVjMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2ZmL3J1bGVzLm1rCkBAIC0wLDAgKzEsODYgQEAKKyMKKyMgRnJlZVR5cGUgMiBPcGVuVHlwZS9DRkYgZHJpdmVyIGNvbmZpZ3VyYXRpb24gcnVsZXMKKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDMsIDIwMTEsIDIwMTMgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKKyMgT3BlblR5cGUgZHJpdmVyIGRpcmVjdG9yeQorIworQ0ZGX0RJUiA6PSAkKFNSQ19ESVIpL2NmZgorCisKK0NGRl9DT01QSUxFIDo9ICQoRlRfQ09NUElMRSkgJEkkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCQoQ0ZGX0RJUikpCisKKworIyBDRkYgZHJpdmVyIHNvdXJjZXMgKGkuZS4sIEMgZmlsZXMpCisjCitDRkZfRFJWX1NSQyA6PSAkKENGRl9ESVIpL2NmZmNtYXAuYyAgXAorICAgICAgICAgICAgICAgJChDRkZfRElSKS9jZmZkcml2ci5jIFwKKyAgICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2ZmZ2xvYWQuYyBcCisgICAgICAgICAgICAgICAkKENGRl9ESVIpL2NmZmxvYWQuYyAgXAorICAgICAgICAgICAgICAgJChDRkZfRElSKS9jZmZvYmpzLmMgIFwKKyAgICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2ZmcGFyc2UuYyBcCisgICAgICAgICAgICAgICAkKENGRl9ESVIpL2NmZnBpYy5jICAgXAorICAgICAgICAgICAgICAgJChDRkZfRElSKS9jZjJhcnJzdC5jIFwKKyAgICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2YyYmx1ZXMuYyBcCisgICAgICAgICAgICAgICAkKENGRl9ESVIpL2NmMmVycm9yLmMgXAorICAgICAgICAgICAgICAgJChDRkZfRElSKS9jZjJmb250LmMgIFwKKyAgICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2YyZnQuYyAgICBcCisgICAgICAgICAgICAgICAkKENGRl9ESVIpL2NmMmhpbnRzLmMgXAorICAgICAgICAgICAgICAgJChDRkZfRElSKS9jZjJpbnRycC5jIFwKKyAgICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2YycmVhZC5jICBcCisgICAgICAgICAgICAgICAkKENGRl9ESVIpL2NmMnN0YWNrLmMKKworCisjIENGRiBkcml2ZXIgaGVhZGVycworIworQ0ZGX0RSVl9IIDo9ICQoQ0ZGX0RSVl9TUkM6JS5jPSUuaCkgXAorICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2ZmZXJycy5oICAgXAorICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2ZmdG9rZW4uaCAgXAorICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2ZmdHlwZXMuaCAgXAorICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2YyZml4ZWQuaCAgXAorICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2YyZ2x1ZS5oICAgXAorICAgICAgICAgICAgICQoQ0ZGX0RJUikvY2YydHlwZXMuaAorCisKKyMgQ0ZGIGRyaXZlciBvYmplY3QocykKKyMKKyMgICBDRkZfRFJWX09CSl9NIGlzIHVzZWQgZHVyaW5nIGBtdWx0aScgYnVpbGRzCisjICAgQ0ZGX0RSVl9PQkpfUyBpcyB1c2VkIGR1cmluZyBgc2luZ2xlJyBidWlsZHMKKyMKK0NGRl9EUlZfT0JKX00gOj0gJChDRkZfRFJWX1NSQzokKENGRl9ESVIpLyUuYz0kKE9CSl9ESVIpLyUuJE8pCitDRkZfRFJWX09CSl9TIDo9ICQoT0JKX0RJUikvY2ZmLiRPCisKKyMgQ0ZGIGRyaXZlciBzb3VyY2UgZmlsZSBmb3Igc2luZ2xlIGJ1aWxkCisjCitDRkZfRFJWX1NSQ19TIDo9ICQoQ0ZGX0RJUikvY2ZmLmMKKworCisjIENGRiBkcml2ZXIgLSBzaW5nbGUgb2JqZWN0CisjCiskKENGRl9EUlZfT0JKX1MpOiAkKENGRl9EUlZfU1JDX1MpICQoQ0ZGX0RSVl9TUkMpICQoRlJFRVRZUEVfSCkgJChDRkZfRFJWX0gpCisJJChDRkZfQ09NUElMRSkgJFQkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCRAICQoQ0ZGX0RSVl9TUkNfUykpCisKKworIyBDRkYgZHJpdmVyIC0gbXVsdGlwbGUgb2JqZWN0cworIworJChPQkpfRElSKS8lLiRPOiAkKENGRl9ESVIpLyUuYyAkKEZSRUVUWVBFX0gpICQoQ0ZGX0RSVl9IKQorCSQoQ0ZGX0NPTVBJTEUpICRUJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkQCAkPCkKKworCisjIHVwZGF0ZSBtYWluIGRyaXZlciBvYmplY3QgbGlzdHMKKyMKK0RSVl9PQkpTX1MgKz0gJChDRkZfRFJWX09CSl9TKQorRFJWX09CSlNfTSArPSAkKENGRl9EUlZfT0JKX00pCisKKworIyBFT0YKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL0phbWZpbGUgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9KYW1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZWFlZDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9KYW1maWxlCkBAIC0wLDAgKzEsMjkgQEAKKyMgRnJlZVR5cGUgMiBzcmMvY2lkIEphbWZpbGUKKyMKKyMgQ29weXJpZ2h0IDIwMDEgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCitTdWJEaXIgIEZUMl9UT1AgJChGVDJfU1JDX0RJUikgY2lkIDsKKworeworICBsb2NhbCAgX3NvdXJjZXMgOworCisgIGlmICQoRlQyX01VTFRJKQorICB7CisgICAgX3NvdXJjZXMgPSBjaWRvYmpzIGNpZGxvYWQgY2lkZ2xvYWQgY2lkcml2ZXIgY2lkcGFyc2UgOworICB9CisgIGVsc2UKKyAgeworICAgIF9zb3VyY2VzID0gdHlwZTFjaWQgOworICB9CisKKyAgTGlicmFyeSAgJChGVDJfTElCKSA6ICQoX3NvdXJjZXMpLmMgOworfQorCisjIGVuZCBvZiBzcmMvY2lkIEphbWZpbGUKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZGVycnMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZGVycnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmRjMjRmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvY2lkZXJycy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNpZGVycnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDSUQgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgZmlsZSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgQ0lEIGVycm9yIGVudW1lcmF0aW9uIGNvbnN0YW50cy4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19DSURFUlJTX0hfXworI2RlZmluZSBfX0NJREVSUlNfSF9fCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmgiCisKKyN1bmRlZiBfX0ZURVJST1JTX0hfXworCisjdW5kZWYgIEZUX0VSUl9QUkVGSVgKKyNkZWZpbmUgRlRfRVJSX1BSRUZJWCAgQ0lEX0Vycl8KKyNkZWZpbmUgRlRfRVJSX0JBU0UgICAgRlRfTW9kX0Vycl9DSUQKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCIKKworI2VuZGlmIC8qIF9fQ0lERVJSU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZGdsb2FkLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRnbG9hZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMDRlZDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRnbG9hZC5jCkBAIC0wLDAgKzEsNDQyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjaWRnbG9hZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQ0lELWtleWVkIFR5cGUxIEdseXBoIExvYWRlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNywgMjAwOSwgMjAxMCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiY2lkbG9hZC5oIgorI2luY2x1ZGUgImNpZGdsb2FkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgiCisKKyNpbmNsdWRlICJjaWRlcnJzLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9jaWRnbG9hZAorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIGNpZF9sb2FkX2dseXBoKCBUMV9EZWNvZGVyICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2x5cGhfaW5kZXggKQorICB7CisgICAgQ0lEX0ZhY2UgICAgICAgZmFjZSA9IChDSURfRmFjZSlkZWNvZGVyLT5idWlsZGVyLmZhY2U7CisgICAgQ0lEX0ZhY2VJbmZvICAgY2lkICA9ICZmYWNlLT5jaWQ7CisgICAgRlRfQnl0ZSogICAgICAgcDsKKyAgICBGVF9VSW50ICAgICAgICBmZF9zZWxlY3Q7CisgICAgRlRfU3RyZWFtICAgICAgc3RyZWFtICAgICAgID0gZmFjZS0+Y2lkX3N0cmVhbTsKKyAgICBGVF9FcnJvciAgICAgICBlcnJvciAgICAgICAgPSBGVF9FcnJfT2s7CisgICAgRlRfQnl0ZSogICAgICAgY2hhcnN0cmluZyAgID0gMDsKKyAgICBGVF9NZW1vcnkgICAgICBtZW1vcnkgICAgICAgPSBmYWNlLT5yb290Lm1lbW9yeTsKKyAgICBGVF9VTG9uZyAgICAgICBnbHlwaF9sZW5ndGggPSAwOworICAgIFBTQXV4X1NlcnZpY2UgIHBzYXV4ICAgICAgICA9IChQU0F1eF9TZXJ2aWNlKWZhY2UtPnBzYXV4OworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorICAgIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZVJlYyAqaW5jID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2U7CisjZW5kaWYKKworCisgICAgRlRfVFJBQ0U0KCggImNpZF9sb2FkX2dseXBoOiBnbHlwaCBpbmRleCAlZFxuIiwgZ2x5cGhfaW5kZXggKSk7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisKKyAgICAvKiBGb3IgaW5jcmVtZW50YWwgZm9udHMgZ2V0IHRoZSBjaGFyYWN0ZXIgZGF0YSB1c2luZyAqLworICAgIC8qIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBpbmMgKQorICAgIHsKKyAgICAgIEZUX0RhdGEgIGdseXBoX2RhdGE7CisKKworICAgICAgZXJyb3IgPSBpbmMtPmZ1bmNzLT5nZXRfZ2x5cGhfZGF0YSggaW5jLT5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwgJmdseXBoX2RhdGEgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIHAgICAgICAgICA9IChGVF9CeXRlKilnbHlwaF9kYXRhLnBvaW50ZXI7CisgICAgICBmZF9zZWxlY3QgPSAoRlRfVUludCljaWRfZ2V0X29mZnNldCggJnAsIChGVF9CeXRlKWNpZC0+ZmRfYnl0ZXMgKTsKKworICAgICAgaWYgKCBnbHlwaF9kYXRhLmxlbmd0aCAhPSAwICkKKyAgICAgIHsKKyAgICAgICAgZ2x5cGhfbGVuZ3RoID0gZ2x5cGhfZGF0YS5sZW5ndGggLSBjaWQtPmZkX2J5dGVzOworICAgICAgICAodm9pZClGVF9BTExPQyggY2hhcnN0cmluZywgZ2x5cGhfbGVuZ3RoICk7CisgICAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgICBmdF9tZW1jcHkoIGNoYXJzdHJpbmcsIGdseXBoX2RhdGEucG9pbnRlciArIGNpZC0+ZmRfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICBnbHlwaF9sZW5ndGggKTsKKyAgICAgIH0KKworICAgICAgaW5jLT5mdW5jcy0+ZnJlZV9nbHlwaF9kYXRhKCBpbmMtPm9iamVjdCwgJmdseXBoX2RhdGEgKTsKKworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBlbHNlCisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMICovCisKKyAgICAvKiBGb3Igb3JkaW5hcnkgZm9udHMgcmVhZCB0aGUgQ0lEIGZvbnQgZGljdGlvbmFyeSBpbmRleCAqLworICAgIC8qIGFuZCBjaGFyc3RyaW5nIG9mZnNldCBmcm9tIHRoZSBDSURNYXAuICAgICAgICAgICAgICAgICovCisgICAgeworICAgICAgRlRfVUludCAgIGVudHJ5X2xlbiA9IGNpZC0+ZmRfYnl0ZXMgKyBjaWQtPmdkX2J5dGVzOworICAgICAgRlRfVUxvbmcgIG9mZjE7CisKKworICAgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggY2lkLT5kYXRhX29mZnNldCArIGNpZC0+Y2lkbWFwX29mZnNldCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCAqIGVudHJ5X2xlbiApICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgRlRfRlJBTUVfRU5URVIoIDIgKiBlbnRyeV9sZW4gKSAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgcCAgICAgICAgICAgID0gKEZUX0J5dGUqKXN0cmVhbS0+Y3Vyc29yOworICAgICAgZmRfc2VsZWN0ICAgID0gKEZUX1VJbnQpIGNpZF9nZXRfb2Zmc2V0KCAmcCwgKEZUX0J5dGUpY2lkLT5mZF9ieXRlcyApOworICAgICAgb2ZmMSAgICAgICAgID0gKEZUX1VMb25nKWNpZF9nZXRfb2Zmc2V0KCAmcCwgKEZUX0J5dGUpY2lkLT5nZF9ieXRlcyApOworICAgICAgcCAgICAgICAgICAgKz0gY2lkLT5mZF9ieXRlczsKKyAgICAgIGdseXBoX2xlbmd0aCA9IGNpZF9nZXRfb2Zmc2V0KCAmcCwgKEZUX0J5dGUpY2lkLT5nZF9ieXRlcyApIC0gb2ZmMTsKKyAgICAgIEZUX0ZSQU1FX0VYSVQoKTsKKworICAgICAgaWYgKCBmZF9zZWxlY3QgPj0gKEZUX1VJbnQpY2lkLT5udW1fZGljdHMgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX09mZnNldCApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisgICAgICBpZiAoIGdseXBoX2xlbmd0aCA9PSAwICkKKyAgICAgICAgZ290byBFeGl0OworICAgICAgaWYgKCBGVF9BTExPQyggY2hhcnN0cmluZywgZ2x5cGhfbGVuZ3RoICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgICBpZiAoIEZUX1NUUkVBTV9SRUFEX0FUKCBjaWQtPmRhdGFfb2Zmc2V0ICsgb2ZmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzdHJpbmcsIGdseXBoX2xlbmd0aCApICkKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIE5vdyBzZXQgdXAgdGhlIHN1YnJzIGFycmF5IGFuZCBwYXJzZSB0aGUgY2hhcnN0cmluZ3MuICovCisgICAgeworICAgICAgQ0lEX0ZhY2VEaWN0ICBkaWN0OworICAgICAgQ0lEX1N1YnJzICAgICBjaWRfc3VicnMgPSBmYWNlLT5zdWJycyArIGZkX3NlbGVjdDsKKyAgICAgIEZUX0ludCAgICAgICAgY3Nfb2Zmc2V0OworCisKKyAgICAgIC8qIFNldCB1cCBzdWJycyAqLworICAgICAgZGVjb2Rlci0+bnVtX3N1YnJzID0gY2lkX3N1YnJzLT5udW1fc3VicnM7CisgICAgICBkZWNvZGVyLT5zdWJycyAgICAgPSBjaWRfc3VicnMtPmNvZGU7CisgICAgICBkZWNvZGVyLT5zdWJyc19sZW4gPSAwOworCisgICAgICAvKiBTZXQgdXAgZm9udCBtYXRyaXggKi8KKyAgICAgIGRpY3QgICAgICAgICAgICAgICAgID0gY2lkLT5mb250X2RpY3RzICsgZmRfc2VsZWN0OworCisgICAgICBkZWNvZGVyLT5mb250X21hdHJpeCA9IGRpY3QtPmZvbnRfbWF0cml4OworICAgICAgZGVjb2Rlci0+Zm9udF9vZmZzZXQgPSBkaWN0LT5mb250X29mZnNldDsKKyAgICAgIGRlY29kZXItPmxlbklWICAgICAgID0gZGljdC0+cHJpdmF0ZV9kaWN0LmxlbklWOworCisgICAgICAvKiBEZWNvZGUgdGhlIGNoYXJzdHJpbmcuICovCisKKyAgICAgIC8qIEFkanVzdG1lbnQgZm9yIHNlZWQgYnl0ZXMuICovCisgICAgICBjc19vZmZzZXQgPSAoIGRlY29kZXItPmxlbklWID49IDAgPyBkZWNvZGVyLT5sZW5JViA6IDAgKTsKKworICAgICAgLyogRGVjcnlwdCBvbmx5IGlmIGxlbklWID49IDAuICovCisgICAgICBpZiAoIGRlY29kZXItPmxlbklWID49IDAgKQorICAgICAgICBwc2F1eC0+dDFfZGVjcnlwdCggY2hhcnN0cmluZywgZ2x5cGhfbGVuZ3RoLCA0MzMwICk7CisKKyAgICAgIGVycm9yID0gZGVjb2Rlci0+ZnVuY3MucGFyc2VfY2hhcnN0cmluZ3MoCisgICAgICAgICAgICAgICAgZGVjb2RlciwgY2hhcnN0cmluZyArIGNzX29mZnNldCwKKyAgICAgICAgICAgICAgICAoRlRfSW50KWdseXBoX2xlbmd0aCAtIGNzX29mZnNldCApOworICAgIH0KKworICAgIEZUX0ZSRUUoIGNoYXJzdHJpbmcgKTsKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKworICAgIC8qIEluY3JlbWVudGFsIGZvbnRzIGNhbiBvcHRpb25hbGx5IG92ZXJyaWRlIHRoZSBtZXRyaWNzLiAqLworICAgIGlmICggIWVycm9yICYmIGluYyAmJiBpbmMtPmZ1bmNzLT5nZXRfZ2x5cGhfbWV0cmljcyApCisgICAgeworICAgICAgRlRfSW5jcmVtZW50YWxfTWV0cmljc1JlYyAgbWV0cmljczsKKworCisgICAgICBtZXRyaWNzLmJlYXJpbmdfeCA9IEZJWEVEX1RPX0lOVCggZGVjb2Rlci0+YnVpbGRlci5sZWZ0X2JlYXJpbmcueCApOworICAgICAgbWV0cmljcy5iZWFyaW5nX3kgPSAwOworICAgICAgbWV0cmljcy5hZHZhbmNlICAgPSBGSVhFRF9UT19JTlQoIGRlY29kZXItPmJ1aWxkZXIuYWR2YW5jZS54ICk7CisgICAgICBtZXRyaWNzLmFkdmFuY2VfdiA9IEZJWEVEX1RPX0lOVCggZGVjb2Rlci0+YnVpbGRlci5hZHZhbmNlLnkgKTsKKworICAgICAgZXJyb3IgPSBpbmMtPmZ1bmNzLT5nZXRfZ2x5cGhfbWV0cmljcyggaW5jLT5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwgRkFMU0UsICZtZXRyaWNzICk7CisKKyAgICAgIGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nLnggPSBJTlRfVE9fRklYRUQoIG1ldHJpY3MuYmVhcmluZ194ICk7CisgICAgICBkZWNvZGVyLT5idWlsZGVyLmFkdmFuY2UueCAgICAgID0gSU5UX1RPX0ZJWEVEKCBtZXRyaWNzLmFkdmFuY2UgKTsKKyAgICAgIGRlY29kZXItPmJ1aWxkZXIuYWR2YW5jZS55ICAgICAgPSBJTlRfVE9fRklYRUQoIG1ldHJpY3MuYWR2YW5jZV92ICk7CisgICAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCAqLworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworI2lmIDAKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgICAgICAgICBDT01QVVRFIFRIRSBNQVhJTVVNIEFEVkFOQ0UgV0lEVEggICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICBUaGUgZm9sbG93aW5nIGNvZGUgaXMgaW4gY2hhcmdlIG9mIGNvbXB1dGluZyAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgdGhlIG1heGltdW0gYWR2YW5jZSB3aWR0aCBvZiB0aGUgZm9udC4gIEl0ICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgIHF1aWNrbHkgcHJvY2Vzc2VzIGVhY2ggZ2x5cGggY2hhcnN0cmluZyB0byAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICBleHRyYWN0IHRoZSB2YWx1ZSBmcm9tIGVpdGhlciBhIGBzYncnIG9yIGBzZWFjJyAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgb3BlcmF0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNpZF9mYWNlX2NvbXB1dGVfbWF4X2FkdmFuY2UoIENJRF9GYWNlICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQqICAgbWF4X2FkdmFuY2UgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgZXJyb3I7CisgICAgVDFfRGVjb2RlclJlYyAgZGVjb2RlcjsKKyAgICBGVF9JbnQgICAgICAgICBnbHlwaF9pbmRleDsKKworICAgIFBTQXV4X1NlcnZpY2UgIHBzYXV4ID0gKFBTQXV4X1NlcnZpY2UpZmFjZS0+cHNhdXg7CisKKworICAgICptYXhfYWR2YW5jZSA9IDA7CisKKyAgICAvKiBJbml0aWFsaXplIGxvYWQgZGVjb2RlciAqLworICAgIGVycm9yID0gcHNhdXgtPnQxX2RlY29kZXJfZnVuY3MtPmluaXQoICZkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9GYWNlKWZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogc2l6ZSAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGdseXBoIHNsb3QgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiBnbHlwaCBuYW1lcyEgWFhYICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogYmxlbmQgPT0gMCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGhpbnRpbmcgPT0gMCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZF9sb2FkX2dseXBoICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAvKiBUT0RPOiBpbml0aWFsaXplIGRlY29kZXIubGVuX2J1aWxkY2hhciBhbmQgZGVjb2Rlci5idWlsZGNoYXIgKi8KKyAgICAvKiAgICAgICBpZiB3ZSBldmVyIHN1cHBvcnQgQ0lELWtleWVkIG11bHRpcGxlIG1hc3RlciBmb250cyAgICAgKi8KKworICAgIGRlY29kZXIuYnVpbGRlci5tZXRyaWNzX29ubHkgPSAxOworICAgIGRlY29kZXIuYnVpbGRlci5sb2FkX3BvaW50cyAgPSAwOworCisgICAgLyogZm9yIGVhY2ggZ2x5cGgsIHBhcnNlIHRoZSBnbHlwaCBjaGFyc3RyaW5nIGFuZCBleHRyYWN0ICovCisgICAgLyogdGhlIGFkdmFuY2Ugd2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgZm9yICggZ2x5cGhfaW5kZXggPSAwOyBnbHlwaF9pbmRleCA8IGZhY2UtPnJvb3QubnVtX2dseXBoczsKKyAgICAgICAgICBnbHlwaF9pbmRleCsrICkKKyAgICB7CisgICAgICAvKiBub3cgZ2V0IGxvYWQgdGhlIHVuc2NhbGVkIG91dGxpbmUgKi8KKyAgICAgIGVycm9yID0gY2lkX2xvYWRfZ2x5cGgoICZkZWNvZGVyLCBnbHlwaF9pbmRleCApOworICAgICAgLyogaWdub3JlIHRoZSBlcnJvciBpZiBvbmUgb2NjdXJyZWQgLSBza2lwIHRvIG5leHQgZ2x5cGggKi8KKyAgICB9CisKKyAgICAqbWF4X2FkdmFuY2UgPSBGSVhFRF9UT19JTlQoIGRlY29kZXIuYnVpbGRlci5hZHZhbmNlLnggKTsKKworICAgIHBzYXV4LT50MV9kZWNvZGVyX2Z1bmNzLT5kb25lKCAmZGVjb2RlciApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyNlbmRpZiAvKiAwICovCisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2lkX3Nsb3RfbG9hZF9nbHlwaCggRlRfR2x5cGhTbG90ICBjaWRnbHlwaCwgICAgICAvKiBDSURfR2x5cGhTbG90ICovCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1NpemUgICAgICAgY2lkc2l6ZSwgICAgICAgLyogQ0lEX1NpemUgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgICAgIGxvYWRfZmxhZ3MgKQorICB7CisgICAgQ0lEX0dseXBoU2xvdCAgZ2x5cGggPSAoQ0lEX0dseXBoU2xvdCljaWRnbHlwaDsKKyAgICBGVF9FcnJvciAgICAgICBlcnJvcjsKKyAgICBUMV9EZWNvZGVyUmVjICBkZWNvZGVyOworICAgIENJRF9GYWNlICAgICAgIGZhY2UgPSAoQ0lEX0ZhY2UpY2lkZ2x5cGgtPmZhY2U7CisgICAgRlRfQm9vbCAgICAgICAgaGludGluZzsKKworICAgIFBTQXV4X1NlcnZpY2UgIHBzYXV4ID0gKFBTQXV4X1NlcnZpY2UpZmFjZS0+cHNhdXg7CisgICAgRlRfTWF0cml4ICAgICAgZm9udF9tYXRyaXg7CisgICAgRlRfVmVjdG9yICAgICAgZm9udF9vZmZzZXQ7CisKKworICAgIGlmICggZ2x5cGhfaW5kZXggPj0gKEZUX1VJbnQpZmFjZS0+cm9vdC5udW1fZ2x5cGhzICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19SRUNVUlNFICkKKyAgICAgIGxvYWRfZmxhZ3MgfD0gRlRfTE9BRF9OT19TQ0FMRSB8IEZUX0xPQURfTk9fSElOVElORzsKKworICAgIGdseXBoLT54X3NjYWxlID0gY2lkc2l6ZS0+bWV0cmljcy54X3NjYWxlOworICAgIGdseXBoLT55X3NjYWxlID0gY2lkc2l6ZS0+bWV0cmljcy55X3NjYWxlOworCisgICAgY2lkZ2x5cGgtPm91dGxpbmUubl9wb2ludHMgICA9IDA7CisgICAgY2lkZ2x5cGgtPm91dGxpbmUubl9jb250b3VycyA9IDA7CisKKyAgICBoaW50aW5nID0gRlRfQk9PTCggKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19TQ0FMRSAgICkgPT0gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX0hJTlRJTkcgKSA9PSAwICk7CisKKyAgICBjaWRnbHlwaC0+Zm9ybWF0ID0gRlRfR0xZUEhfRk9STUFUX09VVExJTkU7CisKKyAgICBlcnJvciA9IHBzYXV4LT50MV9kZWNvZGVyX2Z1bmNzLT5pbml0KCAmZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWRnbHlwaC0+ZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWRzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZGdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGdseXBoIG5hbWVzIC0tIFhYWCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGJsZW5kID09IDAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xPQURfVEFSR0VUX01PREUoIGxvYWRfZmxhZ3MgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWRfbG9hZF9nbHlwaCApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogVE9ETzogaW5pdGlhbGl6ZSBkZWNvZGVyLmxlbl9idWlsZGNoYXIgYW5kIGRlY29kZXIuYnVpbGRjaGFyICovCisgICAgLyogICAgICAgaWYgd2UgZXZlciBzdXBwb3J0IENJRC1rZXllZCBtdWx0aXBsZSBtYXN0ZXIgZm9udHMgICAgICovCisKKyAgICAvKiBzZXQgdXAgdGhlIGRlY29kZXIgKi8KKyAgICBkZWNvZGVyLmJ1aWxkZXIubm9fcmVjdXJzZSA9IEZUX0JPT0woCisgICAgICAoICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fUkVDVVJTRSApICE9IDAgKSApOworCisgICAgZXJyb3IgPSBjaWRfbG9hZF9nbHlwaCggJmRlY29kZXIsIGdseXBoX2luZGV4ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBmb250X21hdHJpeCA9IGRlY29kZXIuZm9udF9tYXRyaXg7CisgICAgZm9udF9vZmZzZXQgPSBkZWNvZGVyLmZvbnRfb2Zmc2V0OworCisgICAgLyogc2F2ZSBuZXcgZ2x5cGggdGFibGVzICovCisgICAgcHNhdXgtPnQxX2RlY29kZXJfZnVuY3MtPmRvbmUoICZkZWNvZGVyICk7CisKKyAgICAvKiBub3cgc2V0IHRoZSBtZXRyaWNzIC0tIHRoaXMgaXMgcmF0aGVyIHNpbXBsZSwgYXMgICAgKi8KKyAgICAvKiB0aGUgbGVmdCBzaWRlIGJlYXJpbmcgaXMgdGhlIHhNaW4sIGFuZCB0aGUgdG9wIHNpZGUgKi8KKyAgICAvKiBiZWFyaW5nIHRoZSB5TWF4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjaWRnbHlwaC0+b3V0bGluZS5mbGFncyAmPSBGVF9PVVRMSU5FX09XTkVSOworICAgIGNpZGdseXBoLT5vdXRsaW5lLmZsYWdzIHw9IEZUX09VVExJTkVfUkVWRVJTRV9GSUxMOworCisgICAgLyogZm9yIGNvbXBvc2l0ZSBnbHlwaHMsIHJldHVybiBvbmx5IGxlZnQgc2lkZSBiZWFyaW5nIGFuZCAqLworICAgIC8qIGFkdmFuY2Ugd2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX1JFQ1VSU0UgKQorICAgIHsKKyAgICAgIEZUX1Nsb3RfSW50ZXJuYWwgIGludGVybmFsID0gY2lkZ2x5cGgtPmludGVybmFsOworCisKKyAgICAgIGNpZGdseXBoLT5tZXRyaWNzLmhvcmlCZWFyaW5nWCA9CisgICAgICAgIEZJWEVEX1RPX0lOVCggZGVjb2Rlci5idWlsZGVyLmxlZnRfYmVhcmluZy54ICk7CisgICAgICBjaWRnbHlwaC0+bWV0cmljcy5ob3JpQWR2YW5jZSA9CisgICAgICAgIEZJWEVEX1RPX0lOVCggZGVjb2Rlci5idWlsZGVyLmFkdmFuY2UueCApOworCisgICAgICBpbnRlcm5hbC0+Z2x5cGhfbWF0cml4ICAgICAgPSBmb250X21hdHJpeDsKKyAgICAgIGludGVybmFsLT5nbHlwaF9kZWx0YSAgICAgICA9IGZvbnRfb2Zmc2V0OworICAgICAgaW50ZXJuYWwtPmdseXBoX3RyYW5zZm9ybWVkID0gMTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIEZUX0JCb3ggICAgICAgICAgICBjYm94OworICAgICAgRlRfR2x5cGhfTWV0cmljcyogIG1ldHJpY3MgPSAmY2lkZ2x5cGgtPm1ldHJpY3M7CisgICAgICBGVF9WZWN0b3IgICAgICAgICAgYWR2YW5jZTsKKworCisgICAgICAvKiBjb3B5IHRoZSBfdW5zY2FsZWRfIGFkdmFuY2Ugd2lkdGggKi8KKyAgICAgIG1ldHJpY3MtPmhvcmlBZHZhbmNlID0KKyAgICAgICAgRklYRURfVE9fSU5UKCBkZWNvZGVyLmJ1aWxkZXIuYWR2YW5jZS54ICk7CisgICAgICBjaWRnbHlwaC0+bGluZWFySG9yaUFkdmFuY2UgPQorICAgICAgICBGSVhFRF9UT19JTlQoIGRlY29kZXIuYnVpbGRlci5hZHZhbmNlLnggKTsKKyAgICAgIGNpZGdseXBoLT5pbnRlcm5hbC0+Z2x5cGhfdHJhbnNmb3JtZWQgPSAwOworCisgICAgICAvKiBtYWtlIHVwIHZlcnRpY2FsIG9uZXMgKi8KKyAgICAgIG1ldHJpY3MtPnZlcnRBZHZhbmNlICAgICAgICA9ICggZmFjZS0+Y2lkLmZvbnRfYmJveC55TWF4IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+Y2lkLmZvbnRfYmJveC55TWluICkgPj4gMTY7CisgICAgICBjaWRnbHlwaC0+bGluZWFyVmVydEFkdmFuY2UgPSBtZXRyaWNzLT52ZXJ0QWR2YW5jZTsKKworICAgICAgY2lkZ2x5cGgtPmZvcm1hdCAgICAgICAgICAgID0gRlRfR0xZUEhfRk9STUFUX09VVExJTkU7CisKKyAgICAgIGlmICggY2lkc2l6ZS0+bWV0cmljcy55X3BwZW0gPCAyNCApCisgICAgICAgIGNpZGdseXBoLT5vdXRsaW5lLmZsYWdzIHw9IEZUX09VVExJTkVfSElHSF9QUkVDSVNJT047CisKKyAgICAgIC8qIGFwcGx5IHRoZSBmb250IG1hdHJpeCAqLworICAgICAgRlRfT3V0bGluZV9UcmFuc2Zvcm0oICZjaWRnbHlwaC0+b3V0bGluZSwgJmZvbnRfbWF0cml4ICk7CisKKyAgICAgIEZUX091dGxpbmVfVHJhbnNsYXRlKCAmY2lkZ2x5cGgtPm91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udF9vZmZzZXQueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250X29mZnNldC55ICk7CisKKyAgICAgIGFkdmFuY2UueCA9IG1ldHJpY3MtPmhvcmlBZHZhbmNlOworICAgICAgYWR2YW5jZS55ID0gMDsKKyAgICAgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0oICZhZHZhbmNlLCAmZm9udF9tYXRyaXggKTsKKyAgICAgIG1ldHJpY3MtPmhvcmlBZHZhbmNlID0gYWR2YW5jZS54ICsgZm9udF9vZmZzZXQueDsKKworICAgICAgYWR2YW5jZS54ID0gMDsKKyAgICAgIGFkdmFuY2UueSA9IG1ldHJpY3MtPnZlcnRBZHZhbmNlOworICAgICAgRlRfVmVjdG9yX1RyYW5zZm9ybSggJmFkdmFuY2UsICZmb250X21hdHJpeCApOworICAgICAgbWV0cmljcy0+dmVydEFkdmFuY2UgPSBhZHZhbmNlLnkgKyBmb250X29mZnNldC55OworCisgICAgICBpZiAoICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fU0NBTEUgKSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgLyogc2NhbGUgdGhlIG91dGxpbmUgYW5kIHRoZSBtZXRyaWNzICovCisgICAgICAgIEZUX0ludCAgICAgICBuOworICAgICAgICBGVF9PdXRsaW5lKiAgY3VyID0gZGVjb2Rlci5idWlsZGVyLmJhc2U7CisgICAgICAgIEZUX1ZlY3RvciogICB2ZWMgPSBjdXItPnBvaW50czsKKyAgICAgICAgRlRfRml4ZWQgICAgIHhfc2NhbGUgPSBnbHlwaC0+eF9zY2FsZTsKKyAgICAgICAgRlRfRml4ZWQgICAgIHlfc2NhbGUgPSBnbHlwaC0+eV9zY2FsZTsKKworCisgICAgICAgIC8qIEZpcnN0IG9mIGFsbCwgc2NhbGUgdGhlIHBvaW50cyAqLworICAgICAgICBpZiAoICFoaW50aW5nIHx8ICFkZWNvZGVyLmJ1aWxkZXIuaGludHNfZnVuY3MgKQorICAgICAgICAgIGZvciAoIG4gPSBjdXItPm5fcG9pbnRzOyBuID4gMDsgbi0tLCB2ZWMrKyApCisgICAgICAgICAgeworICAgICAgICAgICAgdmVjLT54ID0gRlRfTXVsRml4KCB2ZWMtPngsIHhfc2NhbGUgKTsKKyAgICAgICAgICAgIHZlYy0+eSA9IEZUX011bEZpeCggdmVjLT55LCB5X3NjYWxlICk7CisgICAgICAgICAgfQorCisgICAgICAgIC8qIFRoZW4gc2NhbGUgdGhlIG1ldHJpY3MgKi8KKyAgICAgICAgbWV0cmljcy0+aG9yaUFkdmFuY2UgPSBGVF9NdWxGaXgoIG1ldHJpY3MtPmhvcmlBZHZhbmNlLCB4X3NjYWxlICk7CisgICAgICAgIG1ldHJpY3MtPnZlcnRBZHZhbmNlID0gRlRfTXVsRml4KCBtZXRyaWNzLT52ZXJ0QWR2YW5jZSwgeV9zY2FsZSApOworICAgICAgfQorCisgICAgICAvKiBjb21wdXRlIHRoZSBvdGhlciBtZXRyaWNzICovCisgICAgICBGVF9PdXRsaW5lX0dldF9DQm94KCAmY2lkZ2x5cGgtPm91dGxpbmUsICZjYm94ICk7CisKKyAgICAgIG1ldHJpY3MtPndpZHRoICA9IGNib3gueE1heCAtIGNib3gueE1pbjsKKyAgICAgIG1ldHJpY3MtPmhlaWdodCA9IGNib3gueU1heCAtIGNib3gueU1pbjsKKworICAgICAgbWV0cmljcy0+aG9yaUJlYXJpbmdYID0gY2JveC54TWluOworICAgICAgbWV0cmljcy0+aG9yaUJlYXJpbmdZID0gY2JveC55TWF4OworCisgICAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX1ZFUlRJQ0FMX0xBWU9VVCApCisgICAgICB7CisgICAgICAgIC8qIG1ha2UgdXAgdmVydGljYWwgb25lcyAqLworICAgICAgICBmdF9zeW50aGVzaXplX3ZlcnRpY2FsX21ldHJpY3MoIG1ldHJpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljcy0+dmVydEFkdmFuY2UgKTsKKyAgICAgIH0KKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZGdsb2FkLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRnbG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MDE3OTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRnbG9hZC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNpZGdsb2FkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBPcGVuVHlwZSBHbHlwaCBMb2FkZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAyLCAyMDA0IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NJREdMT0FEX0hfXworI2RlZmluZSBfX0NJREdMT0FEX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiY2lkb2Jqcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNpZiAwCisKKyAgLyogQ29tcHV0ZSB0aGUgbWF4aW11bSBhZHZhbmNlIHdpZHRoIG9mIGEgZm9udCB0aHJvdWdoIHF1aWNrIHBhcnNpbmcgKi8KKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgY2lkX2ZhY2VfY29tcHV0ZV9tYXhfYWR2YW5jZSggQ0lEX0ZhY2UgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCogICBtYXhfYWR2YW5jZSApOworCisjZW5kaWYgLyogMCAqLworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNpZF9zbG90X2xvYWRfZ2x5cGgoIEZUX0dseXBoU2xvdCAgZ2x5cGgsICAgICAgICAgLyogQ0lEX0dseXBoX1Nsb3QgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZSAgICAgICBzaXplLCAgICAgICAgICAvKiBDSURfU2l6ZSAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgICAgIGxvYWRfZmxhZ3MgKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0NJREdMT0FEX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvY2lkbG9hZC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvY2lkbG9hZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYjI1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRsb2FkLmMKQEAgLTAsMCArMSw2OTAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNpZGxvYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDSUQta2V5ZWQgVHlwZTEgZm9udCBsb2FkZXIgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA2LCAyMDA5LCAyMDExLTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRtbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIgorCisjaW5jbHVkZSAiY2lkbG9hZC5oIgorCisjaW5jbHVkZSAiY2lkZXJycy5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfY2lkbG9hZAorCisKKyAgLyogcmVhZCBhIHNpbmdsZSBvZmZzZXQgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9Mb25nICkKKyAgY2lkX2dldF9vZmZzZXQoIEZUX0J5dGUqICAqc3RhcnQsCisgICAgICAgICAgICAgICAgICBGVF9CeXRlICAgIG9mZnNpemUgKQorICB7CisgICAgRlRfVUxvbmcgIHJlc3VsdDsKKyAgICBGVF9CeXRlKiAgcCA9ICpzdGFydDsKKworCisgICAgZm9yICggcmVzdWx0ID0gMDsgb2Zmc2l6ZSA+IDA7IG9mZnNpemUtLSApCisgICAgeworICAgICAgcmVzdWx0IDw8PSA4OworICAgICAgcmVzdWx0ICB8PSAqcCsrOworICAgIH0KKworICAgICpzdGFydCA9IHA7CisgICAgcmV0dXJuIChGVF9Mb25nKXJlc3VsdDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICBUWVBFIDEgU1lNQk9MIFBBUlNJTkcgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2lkX2xvYWRfa2V5d29yZCggQ0lEX0ZhY2UgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIENJRF9Mb2FkZXIqICAgICBsb2FkZXIsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxX0ZpZWxkICBrZXl3b3JkICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgZXJyb3I7CisgICAgQ0lEX1BhcnNlciogICBwYXJzZXIgPSAmbG9hZGVyLT5wYXJzZXI7CisgICAgRlRfQnl0ZSogICAgICBvYmplY3Q7CisgICAgdm9pZCogICAgICAgICBkdW1teV9vYmplY3Q7CisgICAgQ0lEX0ZhY2VJbmZvICBjaWQgPSAmZmFjZS0+Y2lkOworCisKKyAgICAvKiBpZiB0aGUga2V5d29yZCBoYXMgYSBkZWRpY2F0ZWQgY2FsbGJhY2ssIGNhbGwgaXQgKi8KKyAgICBpZiAoIGtleXdvcmQtPnR5cGUgPT0gVDFfRklFTERfVFlQRV9DQUxMQkFDSyApCisgICAgeworICAgICAga2V5d29yZC0+cmVhZGVyKCAoRlRfRmFjZSlmYWNlLCBwYXJzZXIgKTsKKyAgICAgIGVycm9yID0gcGFyc2VyLT5yb290LmVycm9yOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIHdlIG11c3Qgbm93IGNvbXB1dGUgdGhlIGFkZHJlc3Mgb2Ygb3VyIHRhcmdldCBvYmplY3QgKi8KKyAgICBzd2l0Y2ggKCBrZXl3b3JkLT5sb2NhdGlvbiApCisgICAgeworICAgIGNhc2UgVDFfRklFTERfTE9DQVRJT05fQ0lEX0lORk86CisgICAgICBvYmplY3QgPSAoRlRfQnl0ZSopY2lkOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFQxX0ZJRUxEX0xPQ0FUSU9OX0ZPTlRfSU5GTzoKKyAgICAgIG9iamVjdCA9IChGVF9CeXRlKikmY2lkLT5mb250X2luZm87CisgICAgICBicmVhazsKKworICAgIGNhc2UgVDFfRklFTERfTE9DQVRJT05fRk9OVF9FWFRSQToKKyAgICAgIG9iamVjdCA9IChGVF9CeXRlKikmZmFjZS0+Zm9udF9leHRyYTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBUMV9GSUVMRF9MT0NBVElPTl9CQk9YOgorICAgICAgb2JqZWN0ID0gKEZUX0J5dGUqKSZjaWQtPmZvbnRfYmJveDsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIHsKKyAgICAgICAgQ0lEX0ZhY2VEaWN0ICBkaWN0OworCisKKyAgICAgICAgaWYgKCBwYXJzZXItPm51bV9kaWN0IDwgMCB8fCBwYXJzZXItPm51bV9kaWN0ID49IGNpZC0+bnVtX2RpY3RzICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0VSUk9SKCggImNpZF9sb2FkX2tleXdvcmQ6IGludmFsaWQgdXNlIG9mIGAlcydcbiIsCisgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLT5pZGVudCApKTsKKyAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBTeW50YXhfRXJyb3IgKTsKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBkaWN0ID0gY2lkLT5mb250X2RpY3RzICsgcGFyc2VyLT5udW1fZGljdDsKKyAgICAgICAgc3dpdGNoICgga2V5d29yZC0+bG9jYXRpb24gKQorICAgICAgICB7CisgICAgICAgIGNhc2UgVDFfRklFTERfTE9DQVRJT05fUFJJVkFURToKKyAgICAgICAgICBvYmplY3QgPSAoRlRfQnl0ZSopJmRpY3QtPnByaXZhdGVfZGljdDsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIG9iamVjdCA9IChGVF9CeXRlKilkaWN0OworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgZHVtbXlfb2JqZWN0ID0gb2JqZWN0OworCisgICAgLyogbm93LCBsb2FkIHRoZSBrZXl3b3JkIGRhdGEgaW4gdGhlIG9iamVjdCdzIGZpZWxkKHMpICovCisgICAgaWYgKCBrZXl3b3JkLT50eXBlID09IFQxX0ZJRUxEX1RZUEVfSU5URUdFUl9BUlJBWSB8fAorICAgICAgICAga2V5d29yZC0+dHlwZSA9PSBUMV9GSUVMRF9UWVBFX0ZJWEVEX0FSUkFZICAgKQorICAgICAgZXJyb3IgPSBjaWRfcGFyc2VyX2xvYWRfZmllbGRfdGFibGUoICZsb2FkZXItPnBhcnNlciwga2V5d29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXlfb2JqZWN0ICk7CisgICAgZWxzZQorICAgICAgZXJyb3IgPSBjaWRfcGFyc2VyX2xvYWRfZmllbGQoICZsb2FkZXItPnBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCAmZHVtbXlfb2JqZWN0ICk7CisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgY2lkX3BhcnNlX2ZvbnRfbWF0cml4KCBDSURfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDSURfUGFyc2VyKiAgcGFyc2VyICkKKyAgeworICAgIEZUX01hdHJpeCogICAgbWF0cml4OworICAgIEZUX1ZlY3RvciogICAgb2Zmc2V0OworICAgIENJRF9GYWNlRGljdCAgZGljdDsKKyAgICBGVF9GYWNlICAgICAgIHJvb3QgPSAoRlRfRmFjZSkmZmFjZS0+cm9vdDsKKyAgICBGVF9GaXhlZCAgICAgIHRlbXBbNl07CisgICAgRlRfRml4ZWQgICAgICB0ZW1wX3NjYWxlOworCisKKyAgICBpZiAoIHBhcnNlci0+bnVtX2RpY3QgPj0gMCAmJiBwYXJzZXItPm51bV9kaWN0IDwgZmFjZS0+Y2lkLm51bV9kaWN0cyApCisgICAgeworICAgICAgZGljdCAgID0gZmFjZS0+Y2lkLmZvbnRfZGljdHMgKyBwYXJzZXItPm51bV9kaWN0OworICAgICAgbWF0cml4ID0gJmRpY3QtPmZvbnRfbWF0cml4OworICAgICAgb2Zmc2V0ID0gJmRpY3QtPmZvbnRfb2Zmc2V0OworCisgICAgICAodm9pZCljaWRfcGFyc2VyX3RvX2ZpeGVkX2FycmF5KCBwYXJzZXIsIDYsIHRlbXAsIDMgKTsKKworICAgICAgdGVtcF9zY2FsZSA9IEZUX0FCUyggdGVtcFszXSApOworCisgICAgICAvKiBTZXQgVW5pdHMgcGVyIEVNIGJhc2VkIG9uIEZvbnRNYXRyaXggdmFsdWVzLiAgV2Ugc2V0IHRoZSB2YWx1ZSB0byAqLworICAgICAgLyogMTAwMCAvIHRlbXBfc2NhbGUsIGJlY2F1c2UgdGVtcF9zY2FsZSB3YXMgYWxyZWFkeSBtdWx0aXBsaWVkIGJ5ICAgKi8KKyAgICAgIC8qIDEwMDAgKGluIHQxX3RvZml4ZWQsIGZyb20gcHNvYmpzLmMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIHJvb3QtPnVuaXRzX3Blcl9FTSA9IChGVF9VU2hvcnQpRlRfRGl2Rml4KCAxMDAwLCB0ZW1wX3NjYWxlICk7CisKKyAgICAgIC8qIHdlIG5lZWQgdG8gc2NhbGUgdGhlIHZhbHVlcyBieSAxLjAvdGVtcFszXSAqLworICAgICAgaWYgKCB0ZW1wX3NjYWxlICE9IDB4MTAwMDBMICkKKyAgICAgIHsKKyAgICAgICAgdGVtcFswXSA9IEZUX0RpdkZpeCggdGVtcFswXSwgdGVtcF9zY2FsZSApOworICAgICAgICB0ZW1wWzFdID0gRlRfRGl2Rml4KCB0ZW1wWzFdLCB0ZW1wX3NjYWxlICk7CisgICAgICAgIHRlbXBbMl0gPSBGVF9EaXZGaXgoIHRlbXBbMl0sIHRlbXBfc2NhbGUgKTsKKyAgICAgICAgdGVtcFs0XSA9IEZUX0RpdkZpeCggdGVtcFs0XSwgdGVtcF9zY2FsZSApOworICAgICAgICB0ZW1wWzVdID0gRlRfRGl2Rml4KCB0ZW1wWzVdLCB0ZW1wX3NjYWxlICk7CisgICAgICAgIHRlbXBbM10gPSAweDEwMDAwTDsKKyAgICAgIH0KKworICAgICAgbWF0cml4LT54eCA9IHRlbXBbMF07CisgICAgICBtYXRyaXgtPnl4ID0gdGVtcFsxXTsKKyAgICAgIG1hdHJpeC0+eHkgPSB0ZW1wWzJdOworICAgICAgbWF0cml4LT55eSA9IHRlbXBbM107CisKKyAgICAgIC8qIG5vdGUgdGhhdCB0aGUgZm9udCBvZmZzZXRzIGFyZSBleHByZXNzZWQgaW4gaW50ZWdlciBmb250IHVuaXRzICovCisgICAgICBvZmZzZXQtPnggID0gdGVtcFs0XSA+PiAxNjsKKyAgICAgIG9mZnNldC0+eSAgPSB0ZW1wWzVdID4+IDE2OworICAgIH0KKworICAgIHJldHVybiBGVF9FcnJfT2s7ICAgICAgLyogdGhpcyBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uOyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdlIG11c3QgcmV0dXJuIGFuIGVycm9yIGNvZGUgKi8KKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHBhcnNlX2ZkX2FycmF5KCBDSURfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgIENJRF9QYXJzZXIqICBwYXJzZXIgKQorICB7CisgICAgQ0lEX0ZhY2VJbmZvICBjaWQgICAgPSAmZmFjZS0+Y2lkOworICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ID0gZmFjZS0+cm9vdC5tZW1vcnk7CisgICAgRlRfRXJyb3IgICAgICBlcnJvciAgPSBGVF9FcnJfT2s7CisgICAgRlRfTG9uZyAgICAgICBudW1fZGljdHM7CisKKworICAgIG51bV9kaWN0cyA9IGNpZF9wYXJzZXJfdG9faW50KCBwYXJzZXIgKTsKKworICAgIGlmICggIWNpZC0+Zm9udF9kaWN0cyApCisgICAgeworICAgICAgRlRfSW50ICBuOworCisKKyAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBjaWQtPmZvbnRfZGljdHMsIG51bV9kaWN0cyApICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBjaWQtPm51bV9kaWN0cyA9IChGVF9VSW50KW51bV9kaWN0czsKKworICAgICAgLyogZG9uJ3QgZm9yZ2V0IHRvIHNldCBhIGZldyBkZWZhdWx0cyAqLworICAgICAgZm9yICggbiA9IDA7IG4gPCBjaWQtPm51bV9kaWN0czsgbisrICkKKyAgICAgIHsKKyAgICAgICAgQ0lEX0ZhY2VEaWN0ICBkaWN0ID0gY2lkLT5mb250X2RpY3RzICsgbjsKKworCisgICAgICAgIC8qIGRlZmF1bHQgdmFsdWUgZm9yIGxlbklWICovCisgICAgICAgIGRpY3QtPnByaXZhdGVfZGljdC5sZW5JViA9IDQ7CisgICAgICB9CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBieSBtaXN0YWtlLCBgZXhwYW5zaW9uX2ZhY3RvcicgYXBwZWFycyBib3RoIGluIFBTX1ByaXZhdGVSZWMgKi8KKyAgLyogYW5kIENJRF9GYWNlRGljdFJlYyAoYm90aCBhcmUgcHVibGljIGhlYWRlciBmaWxlcyBhbmQgY2FuJ3QgICovCisgIC8qIGNoYW5nZWQpOyB3ZSBzaW1wbHkgY29weSB0aGUgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICBwYXJzZV9leHBhbnNpb25fZmFjdG9yKCBDSURfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ0lEX1BhcnNlciogIHBhcnNlciApCisgIHsKKyAgICBDSURfRmFjZURpY3QgIGRpY3Q7CisKKworICAgIGlmICggcGFyc2VyLT5udW1fZGljdCA+PSAwICYmIHBhcnNlci0+bnVtX2RpY3QgPCBmYWNlLT5jaWQubnVtX2RpY3RzICkKKyAgICB7CisgICAgICBkaWN0ID0gZmFjZS0+Y2lkLmZvbnRfZGljdHMgKyBwYXJzZXItPm51bV9kaWN0OworCisgICAgICBkaWN0LT5leHBhbnNpb25fZmFjdG9yICAgICAgICAgICAgICA9IGNpZF9wYXJzZXJfdG9fZml4ZWQoIHBhcnNlciwgMCApOworICAgICAgZGljdC0+cHJpdmF0ZV9kaWN0LmV4cGFuc2lvbl9mYWN0b3IgPSBkaWN0LT5leHBhbnNpb25fZmFjdG9yOworICAgIH0KKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIHN0YXRpYworICBjb25zdCBUMV9GaWVsZFJlYyAgY2lkX2ZpZWxkX3JlY29yZHNbXSA9CisgIHsKKworI2luY2x1ZGUgImNpZHRva2VuLmgiCisKKyAgICBUMV9GSUVMRF9DQUxMQkFDSyggIkZEQXJyYXkiLCAgICAgICAgIHBhcnNlX2ZkX2FycmF5LCAwICkKKyAgICBUMV9GSUVMRF9DQUxMQkFDSyggIkZvbnRNYXRyaXgiLCAgICAgIGNpZF9wYXJzZV9mb250X21hdHJpeCwgMCApCisgICAgVDFfRklFTERfQ0FMTEJBQ0soICJFeHBhbnNpb25GYWN0b3IiLCBwYXJzZV9leHBhbnNpb25fZmFjdG9yLCAwICkKKworICAgIHsgMCwgVDFfRklFTERfTE9DQVRJT05fQ0lEX0lORk8sIFQxX0ZJRUxEX1RZUEVfTk9ORSwgMCwgMCwgMCwgMCwgMCwgMCB9CisgIH07CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2lkX3BhcnNlX2RpY3QoIENJRF9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgQ0lEX0xvYWRlciogIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICBiYXNlLAorICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgIHNpemUgKQorICB7CisgICAgQ0lEX1BhcnNlciogIHBhcnNlciA9ICZsb2FkZXItPnBhcnNlcjsKKworCisgICAgcGFyc2VyLT5yb290LmN1cnNvciA9IGJhc2U7CisgICAgcGFyc2VyLT5yb290LmxpbWl0ICA9IGJhc2UgKyBzaXplOworICAgIHBhcnNlci0+cm9vdC5lcnJvciAgPSBGVF9FcnJfT2s7CisKKyAgICB7CisgICAgICBGVF9CeXRlKiAgY3VyICAgPSBiYXNlOworICAgICAgRlRfQnl0ZSogIGxpbWl0ID0gY3VyICsgc2l6ZTsKKworCisgICAgICBmb3IgKDs7KQorICAgICAgeworICAgICAgICBGVF9CeXRlKiAgbmV3bGltaXQ7CisKKworICAgICAgICBwYXJzZXItPnJvb3QuY3Vyc29yID0gY3VyOworICAgICAgICBjaWRfcGFyc2VyX3NraXBfc3BhY2VzKCBwYXJzZXIgKTsKKworICAgICAgICBpZiAoIHBhcnNlci0+cm9vdC5jdXJzb3IgPj0gbGltaXQgKQorICAgICAgICAgIG5ld2xpbWl0ID0gbGltaXQgLSAxIC0gMTc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdsaW1pdCA9IHBhcnNlci0+cm9vdC5jdXJzb3IgLSAxNzsKKworICAgICAgICAvKiBsb29rIGZvciBgJUFET0JlZ2luRm9udERpY3QnICovCisgICAgICAgIGZvciAoIDsgY3VyIDwgbmV3bGltaXQ7IGN1cisrICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggKmN1ciA9PSAnJScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICBmdF9zdHJuY21wKCAoY2hhciopY3VyLCAiJUFET0JlZ2luRm9udERpY3QiLCAxNyApID09IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIGlmIC9GREFycmF5IHdhcyBmb3VuZCwgdGhlbiBjaWQtPm51bV9kaWN0cyBpcyA+IDAsIGFuZCAqLworICAgICAgICAgICAgLyogd2UgY2FuIHN0YXJ0IGluY3JlYXNpbmcgcGFyc2VyLT5udW1fZGljdCAgICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIGZhY2UtPmNpZC5udW1fZGljdHMgPiAwICkKKyAgICAgICAgICAgICAgcGFyc2VyLT5udW1fZGljdCsrOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGN1ciA9IHBhcnNlci0+cm9vdC5jdXJzb3I7CisgICAgICAgIC8qIG5vIGVycm9yIGNhbiBvY2N1ciBpbiBjaWRfcGFyc2VyX3NraXBfc3BhY2VzICovCisgICAgICAgIGlmICggY3VyID49IGxpbWl0ICkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjaWRfcGFyc2VyX3NraXBfUFNfdG9rZW4oIHBhcnNlciApOworICAgICAgICBpZiAoIHBhcnNlci0+cm9vdC5jdXJzb3IgPj0gbGltaXQgfHwgcGFyc2VyLT5yb290LmVycm9yICkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBsb29rIGZvciBpbW1lZGlhdGVzICovCisgICAgICAgIGlmICggKmN1ciA9PSAnLycgJiYgY3VyICsgMiA8IGxpbWl0ICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1B0ckRpc3QgIGxlbjsKKworCisgICAgICAgICAgY3VyKys7CisgICAgICAgICAgbGVuID0gcGFyc2VyLT5yb290LmN1cnNvciAtIGN1cjsKKworICAgICAgICAgIGlmICggbGVuID4gMCAmJiBsZW4gPCAyMiApCisgICAgICAgICAgeworICAgICAgICAgICAgLyogbm93IGNvbXBhcmUgdGhlIGltbWVkaWF0ZSBuYW1lIHRvIHRoZSBrZXl3b3JkIHRhYmxlICovCisgICAgICAgICAgICBUMV9GaWVsZCAga2V5d29yZCA9IChUMV9GaWVsZCljaWRfZmllbGRfcmVjb3JkczsKKworCisgICAgICAgICAgICBmb3IgKDs7KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9CeXRlKiAgbmFtZTsKKworCisgICAgICAgICAgICAgIG5hbWUgPSAoRlRfQnl0ZSopa2V5d29yZC0+aWRlbnQ7CisgICAgICAgICAgICAgIGlmICggIW5hbWUgKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGlmICggY3VyWzBdID09IG5hbWVbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgICAgIGxlbiA9PSAoRlRfUHRyRGlzdClmdF9zdHJsZW4oIChjb25zdCBjaGFyKiluYW1lICkgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRlRfUHRyRGlzdCAgbjsKKworCisgICAgICAgICAgICAgICAgZm9yICggbiA9IDE7IG4gPCBsZW47IG4rKyApCisgICAgICAgICAgICAgICAgICBpZiAoIGN1cltuXSAhPSBuYW1lW25dICkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBpZiAoIG4gPj0gbGVuICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAvKiB3ZSBmb3VuZCBpdCAtIHJ1biB0aGUgcGFyc2luZyBjYWxsYmFjayAqLworICAgICAgICAgICAgICAgICAgcGFyc2VyLT5yb290LmVycm9yID0gY2lkX2xvYWRfa2V5d29yZCggZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQgKTsKKyAgICAgICAgICAgICAgICAgIGlmICggcGFyc2VyLT5yb290LmVycm9yICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+cm9vdC5lcnJvcjsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBrZXl3b3JkKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY3VyID0gcGFyc2VyLT5yb290LmN1cnNvcjsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHBhcnNlci0+cm9vdC5lcnJvcjsKKyAgfQorCisKKyAgLyogcmVhZCB0aGUgc3Vicm1hcCBhbmQgdGhlIHN1YnJzIG9mIGVhY2ggZm9udCBkaWN0ICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBjaWRfcmVhZF9zdWJycyggQ0lEX0ZhY2UgIGZhY2UgKQorICB7CisgICAgQ0lEX0ZhY2VJbmZvICAgY2lkICAgID0gJmZhY2UtPmNpZDsKKyAgICBGVF9NZW1vcnkgICAgICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKyAgICBGVF9TdHJlYW0gICAgICBzdHJlYW0gPSBmYWNlLT5jaWRfc3RyZWFtOworICAgIEZUX0Vycm9yICAgICAgIGVycm9yOworICAgIEZUX0ludCAgICAgICAgIG47CisgICAgQ0lEX1N1YnJzICAgICAgc3VicjsKKyAgICBGVF9VSW50ICAgICAgICBtYXhfb2Zmc2V0cyA9IDA7CisgICAgRlRfVUxvbmcqICAgICAgb2Zmc2V0cyA9IDA7CisgICAgUFNBdXhfU2VydmljZSAgcHNhdXggPSAoUFNBdXhfU2VydmljZSlmYWNlLT5wc2F1eDsKKworCisgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGZhY2UtPnN1YnJzLCBjaWQtPm51bV9kaWN0cyApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIHN1YnIgPSBmYWNlLT5zdWJyczsKKyAgICBmb3IgKCBuID0gMDsgbiA8IGNpZC0+bnVtX2RpY3RzOyBuKyssIHN1YnIrKyApCisgICAgeworICAgICAgQ0lEX0ZhY2VEaWN0ICBkaWN0ICA9IGNpZC0+Zm9udF9kaWN0cyArIG47CisgICAgICBGVF9JbnQgICAgICAgIGxlbklWID0gZGljdC0+cHJpdmF0ZV9kaWN0LmxlbklWOworICAgICAgRlRfVUludCAgICAgICBjb3VudCwgbnVtX3N1YnJzID0gZGljdC0+bnVtX3N1YnJzOworICAgICAgRlRfVUxvbmcgICAgICBkYXRhX2xlbjsKKyAgICAgIEZUX0J5dGUqICAgICAgcDsKKworCisgICAgICAvKiBDaGVjayBmb3IgcG9zc2libGUgb3ZlcmZsb3cuICovCisgICAgICBpZiAoIG51bV9zdWJycyA9PSBGVF9VSU5UX01BWCApCisgICAgICB7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIFN5bnRheF9FcnJvciApOworICAgICAgICBnb3RvIEZhaWw7CisgICAgICB9CisKKyAgICAgIC8qIHJlYWxsb2NhdGUgb2Zmc2V0cyBhcnJheSBpZiBuZWVkZWQgKi8KKyAgICAgIGlmICggbnVtX3N1YnJzICsgMSA+IG1heF9vZmZzZXRzICkKKyAgICAgIHsKKyAgICAgICAgRlRfVUludCAgbmV3X21heCA9IEZUX1BBRF9DRUlMKCBudW1fc3VicnMgKyAxLCA0ICk7CisKKworICAgICAgICBpZiAoIG5ld19tYXggPD0gbWF4X29mZnNldHMgKQorICAgICAgICB7CisgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggU3ludGF4X0Vycm9yICk7CisgICAgICAgICAgZ290byBGYWlsOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBGVF9SRU5FV19BUlJBWSggb2Zmc2V0cywgbWF4X29mZnNldHMsIG5ld19tYXggKSApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgIG1heF9vZmZzZXRzID0gbmV3X21heDsKKyAgICAgIH0KKworICAgICAgLyogcmVhZCB0aGUgc3Vicm1hcCdzIG9mZnNldHMgKi8KKyAgICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIGNpZC0+ZGF0YV9vZmZzZXQgKyBkaWN0LT5zdWJybWFwX29mZnNldCApIHx8CisgICAgICAgICAgIEZUX0ZSQU1FX0VOVEVSKCAoIG51bV9zdWJycyArIDEgKSAqIGRpY3QtPnNkX2J5dGVzICkgICAgICApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgcCA9IChGVF9CeXRlKilzdHJlYW0tPmN1cnNvcjsKKyAgICAgIGZvciAoIGNvdW50ID0gMDsgY291bnQgPD0gbnVtX3N1YnJzOyBjb3VudCsrICkKKyAgICAgICAgb2Zmc2V0c1tjb3VudF0gPSBjaWRfZ2V0X29mZnNldCggJnAsIChGVF9CeXRlKWRpY3QtPnNkX2J5dGVzICk7CisKKyAgICAgIEZUX0ZSQU1FX0VYSVQoKTsKKworICAgICAgLyogb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgKi8KKyAgICAgIGZvciAoIGNvdW50ID0gMTsgY291bnQgPD0gbnVtX3N1YnJzOyBjb3VudCsrICkKKyAgICAgICAgaWYgKCBvZmZzZXRzW2NvdW50IC0gMV0gPiBvZmZzZXRzW2NvdW50XSApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAvKiBub3csIGNvbXB1dGUgdGhlIHNpemUgb2Ygc3VicnMgY2hhcnN0cmluZ3MsICovCisgICAgICAvKiBhbGxvY2F0ZSwgYW5kIHJlYWQgdGhlbSAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBkYXRhX2xlbiA9IG9mZnNldHNbbnVtX3N1YnJzXSAtIG9mZnNldHNbMF07CisKKyAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBzdWJyLT5jb2RlLCBudW1fc3VicnMgKyAxICkgfHwKKyAgICAgICAgICAgICAgIEZUX0FMTE9DKCBzdWJyLT5jb2RlWzBdLCBkYXRhX2xlbiApICAgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIGNpZC0+ZGF0YV9vZmZzZXQgKyBvZmZzZXRzWzBdICkgfHwKKyAgICAgICAgICAgRlRfU1RSRUFNX1JFQUQoIHN1YnItPmNvZGVbMF0sIGRhdGFfbGVuICkgICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICAvKiBzZXQgdXAgcG9pbnRlcnMgKi8KKyAgICAgIGZvciAoIGNvdW50ID0gMTsgY291bnQgPD0gbnVtX3N1YnJzOyBjb3VudCsrICkKKyAgICAgIHsKKyAgICAgICAgRlRfVUxvbmcgIGxlbjsKKworCisgICAgICAgIGxlbiAgICAgICAgICAgICAgID0gb2Zmc2V0c1tjb3VudF0gLSBvZmZzZXRzW2NvdW50IC0gMV07CisgICAgICAgIHN1YnItPmNvZGVbY291bnRdID0gc3Vici0+Y29kZVtjb3VudCAtIDFdICsgbGVuOworICAgICAgfQorCisgICAgICAvKiBkZWNyeXB0IHN1YnJvdXRpbmVzLCBidXQgb25seSBpZiBsZW5JViA+PSAwICovCisgICAgICBpZiAoIGxlbklWID49IDAgKQorICAgICAgeworICAgICAgICBmb3IgKCBjb3VudCA9IDA7IGNvdW50IDwgbnVtX3N1YnJzOyBjb3VudCsrICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1VMb25nICBsZW47CisKKworICAgICAgICAgIGxlbiA9IG9mZnNldHNbY291bnQgKyAxXSAtIG9mZnNldHNbY291bnRdOworICAgICAgICAgIHBzYXV4LT50MV9kZWNyeXB0KCBzdWJyLT5jb2RlW2NvdW50XSwgbGVuLCA0MzMwICk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgc3Vici0+bnVtX3N1YnJzID0gbnVtX3N1YnJzOworICAgIH0KKworICBFeGl0OgorICAgIEZUX0ZSRUUoIG9mZnNldHMgKTsKKyAgICByZXR1cm4gZXJyb3I7CisKKyAgRmFpbDoKKyAgICBpZiAoIGZhY2UtPnN1YnJzICkKKyAgICB7CisgICAgICBmb3IgKCBuID0gMDsgbiA8IGNpZC0+bnVtX2RpY3RzOyBuKysgKQorICAgICAgeworICAgICAgICBpZiAoIGZhY2UtPnN1YnJzW25dLmNvZGUgKQorICAgICAgICAgIEZUX0ZSRUUoIGZhY2UtPnN1YnJzW25dLmNvZGVbMF0gKTsKKworICAgICAgICBGVF9GUkVFKCBmYWNlLT5zdWJyc1tuXS5jb2RlICk7CisgICAgICB9CisgICAgICBGVF9GUkVFKCBmYWNlLT5zdWJycyApOworICAgIH0KKyAgICBnb3RvIEV4aXQ7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGNpZF9pbml0X2xvYWRlciggQ0lEX0xvYWRlciogIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICBDSURfRmFjZSAgICAgZmFjZSApCisgIHsKKyAgICBGVF9VTlVTRUQoIGZhY2UgKTsKKworICAgIEZUX01FTV9aRVJPKCBsb2FkZXIsIHNpemVvZiAoICpsb2FkZXIgKSApOworICB9CisKKworICBzdGF0aWMgIHZvaWQKKyAgY2lkX2RvbmVfbG9hZGVyKCBDSURfTG9hZGVyKiAgbG9hZGVyICkKKyAgeworICAgIENJRF9QYXJzZXIqICBwYXJzZXIgPSAmbG9hZGVyLT5wYXJzZXI7CisKKworICAgIC8qIGZpbmFsaXplIHBhcnNlciAqLworICAgIGNpZF9wYXJzZXJfZG9uZSggcGFyc2VyICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBjaWRfaGV4X3RvX2JpbmFyeSggRlRfQnl0ZSogIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgZGF0YV9sZW4sCisgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgQ0lEX0ZhY2UgIGZhY2UgKQorICB7CisgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBmYWNlLT5yb290LnN0cmVhbTsKKyAgICBGVF9FcnJvciAgIGVycm9yOworCisgICAgRlRfQnl0ZSAgICBidWZmZXJbMjU2XTsKKyAgICBGVF9CeXRlICAgKnAsICpwbGltaXQ7CisgICAgRlRfQnl0ZSAgICpkLCAqZGxpbWl0OworICAgIEZUX0J5dGUgICAgdmFsOworCisgICAgRlRfQm9vbCAgICB1cHBlcl9uaWJibGUsIGRvbmU7CisKKworICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIG9mZnNldCApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGQgICAgICA9IGRhdGE7CisgICAgZGxpbWl0ID0gZCArIGRhdGFfbGVuOworICAgIHAgICAgICA9IGJ1ZmZlcjsKKyAgICBwbGltaXQgPSBwOworCisgICAgdXBwZXJfbmliYmxlID0gMTsKKyAgICBkb25lICAgICAgICAgPSAwOworCisgICAgd2hpbGUgKCBkIDwgZGxpbWl0ICkKKyAgICB7CisgICAgICBpZiAoIHAgPj0gcGxpbWl0ICkKKyAgICAgIHsKKyAgICAgICAgRlRfVUxvbmcgIG9sZHBvcyA9IEZUX1NUUkVBTV9QT1MoKTsKKyAgICAgICAgRlRfVUxvbmcgIHNpemUgICA9IHN0cmVhbS0+c2l6ZSAtIG9sZHBvczsKKworCisgICAgICAgIGlmICggc2l6ZSA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIFN5bnRheF9FcnJvciApOworICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggRlRfU1RSRUFNX1JFQUQoIGJ1ZmZlciwgMjU2ID4gc2l6ZSA/IHNpemUgOiAyNTYgKSApCisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICBwICAgICAgPSBidWZmZXI7CisgICAgICAgIHBsaW1pdCA9IHAgKyBGVF9TVFJFQU1fUE9TKCkgLSBvbGRwb3M7CisgICAgICB9CisKKyAgICAgIGlmICggZnRfaXNkaWdpdCggKnAgKSApCisgICAgICAgIHZhbCA9IChGVF9CeXRlKSggKnAgLSAnMCcgKTsKKyAgICAgIGVsc2UgaWYgKCAqcCA+PSAnYScgJiYgKnAgPD0gJ2YnICkKKyAgICAgICAgdmFsID0gKEZUX0J5dGUpKCAqcCAtICdhJyApOworICAgICAgZWxzZSBpZiAoICpwID49ICdBJyAmJiAqcCA8PSAnRicgKQorICAgICAgICB2YWwgPSAoRlRfQnl0ZSkoICpwIC0gJ0EnICsgMTAgKTsKKyAgICAgIGVsc2UgaWYgKCAqcCA9PSAnICcgIHx8CisgICAgICAgICAgICAgICAgKnAgPT0gJ1x0JyB8fAorICAgICAgICAgICAgICAgICpwID09ICdccicgfHwKKyAgICAgICAgICAgICAgICAqcCA9PSAnXG4nIHx8CisgICAgICAgICAgICAgICAgKnAgPT0gJ1xmJyB8fAorICAgICAgICAgICAgICAgICpwID09ICdcMCcgKQorICAgICAgeworICAgICAgICBwKys7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgZWxzZSBpZiAoICpwID09ICc+JyApCisgICAgICB7CisgICAgICAgIHZhbCAgPSAwOworICAgICAgICBkb25lID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggU3ludGF4X0Vycm9yICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgaWYgKCB1cHBlcl9uaWJibGUgKQorICAgICAgICAqZCA9IChGVF9CeXRlKSggdmFsIDw8IDQgKTsKKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgKmQgPSAoRlRfQnl0ZSkoICpkICsgdmFsICk7CisgICAgICAgIGQrKzsKKyAgICAgIH0KKworICAgICAgdXBwZXJfbmliYmxlID0gKEZUX0J5dGUpKCAxIC0gdXBwZXJfbmliYmxlICk7CisKKyAgICAgIGlmICggZG9uZSApCisgICAgICAgIGJyZWFrOworCisgICAgICBwKys7CisgICAgfQorCisgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBjaWRfZmFjZV9vcGVuKCBDSURfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgIGZhY2VfaW5kZXggKQorICB7CisgICAgQ0lEX0xvYWRlciAgIGxvYWRlcjsKKyAgICBDSURfUGFyc2VyKiAgcGFyc2VyOworICAgIEZUX01lbW9yeSAgICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKyAgICBGVF9FcnJvciAgICAgZXJyb3I7CisKKworICAgIGNpZF9pbml0X2xvYWRlciggJmxvYWRlciwgZmFjZSApOworCisgICAgcGFyc2VyID0gJmxvYWRlci5wYXJzZXI7CisgICAgZXJyb3IgPSBjaWRfcGFyc2VyX25ldyggcGFyc2VyLCBmYWNlLT5yb290LnN0cmVhbSwgZmFjZS0+cm9vdC5tZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBTQXV4X1NlcnZpY2UpZmFjZS0+cHNhdXggKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGVycm9yID0gY2lkX3BhcnNlX2RpY3QoIGZhY2UsICZsb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5wb3N0c2NyaXB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+cG9zdHNjcmlwdF9sZW4gKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGlmICggZmFjZV9pbmRleCA8IDAgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCBGVF9ORVcoIGZhY2UtPmNpZF9zdHJlYW0gKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIHBhcnNlci0+YmluYXJ5X2xlbmd0aCApCisgICAgeworICAgICAgLyogd2UgbXVzdCBjb252ZXJ0IHRoZSBkYXRhIHNlY3Rpb24gZnJvbSBoZXhhZGVjaW1hbCB0byBiaW5hcnkgKi8KKyAgICAgIGlmICggRlRfQUxMT0MoIGZhY2UtPmJpbmFyeV9kYXRhLCBwYXJzZXItPmJpbmFyeV9sZW5ndGggKSAgICAgICAgIHx8CisgICAgICAgICAgIGNpZF9oZXhfdG9fYmluYXJ5KCBmYWNlLT5iaW5hcnlfZGF0YSwgcGFyc2VyLT5iaW5hcnlfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5kYXRhX29mZnNldCwgZmFjZSApICAgICAgICAgICAgICAgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIEZUX1N0cmVhbV9PcGVuTWVtb3J5KCBmYWNlLT5jaWRfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPmJpbmFyeV9kYXRhLCBwYXJzZXItPmJpbmFyeV9sZW5ndGggKTsKKyAgICAgIGZhY2UtPmNpZC5kYXRhX29mZnNldCA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAqZmFjZS0+Y2lkX3N0cmVhbSAgICAgPSAqZmFjZS0+cm9vdC5zdHJlYW07CisgICAgICBmYWNlLT5jaWQuZGF0YV9vZmZzZXQgPSBsb2FkZXIucGFyc2VyLmRhdGFfb2Zmc2V0OworICAgIH0KKworICAgIGVycm9yID0gY2lkX3JlYWRfc3VicnMoIGZhY2UgKTsKKworICBFeGl0OgorICAgIGNpZF9kb25lX2xvYWRlciggJmxvYWRlciApOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvY2lkbG9hZC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvY2lkbG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyM2Y3ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRsb2FkLmgKQEAgLTAsMCArMSw1MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2lkbG9hZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIENJRC1rZXllZCBUeXBlMSBmb250IGxvYWRlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fQ0lETE9BRF9IX18KKyNkZWZpbmUgX19DSURMT0FEX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgImNpZHBhcnNlLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICB0eXBlZGVmIHN0cnVjdCAgQ0lEX0xvYWRlcl8KKyAgeworICAgIENJRF9QYXJzZXIgIHBhcnNlcjsgICAgICAgICAgLyogcGFyc2VyIHVzZWQgdG8gcmVhZCB0aGUgc3RyZWFtICovCisgICAgRlRfSW50ICAgICAgbnVtX2NoYXJzOyAgICAgICAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBlbmNvZGluZyAqLworCisgIH0gQ0lEX0xvYWRlcjsKKworCisgIEZUX0xPQ0FMKCBGVF9Mb25nICkKKyAgY2lkX2dldF9vZmZzZXQoIEZUX0J5dGUqKiAgc3RhcnQsCisgICAgICAgICAgICAgICAgICBGVF9CeXRlICAgIG9mZnNpemUgKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjaWRfZmFjZV9vcGVuKCBDSURfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgIGZhY2VfaW5kZXggKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0NJRExPQURfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRvYmpzLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRvYmpzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcwODYwMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZG9ianMuYwpAQCAtMCwwICsxLDQ5MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2lkb2Jqcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIENJRCBvYmplY3RzIG1hbmFnZXIgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDYsIDIwMDgsIDIwMTAtMjAxMSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKworI2luY2x1ZGUgImNpZGdsb2FkLmgiCisjaW5jbHVkZSAiY2lkbG9hZC5oIgorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzY21hcC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCIKKworI2luY2x1ZGUgImNpZGVycnMuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX2NpZG9ianMKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVCAgRlVOQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBjaWRfc2xvdF9kb25lKCBGVF9HbHlwaFNsb3QgIHNsb3QgKQorICB7CisgICAgc2xvdC0+aW50ZXJuYWwtPmdseXBoX2hpbnRzID0gMDsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNpZF9zbG90X2luaXQoIEZUX0dseXBoU2xvdCAgc2xvdCApCisgIHsKKyAgICBDSURfRmFjZSAgICAgICAgICBmYWNlOworICAgIFBTSGludGVyX1NlcnZpY2UgIHBzaGludGVyOworCisKKyAgICBmYWNlICAgICA9IChDSURfRmFjZSlzbG90LT5mYWNlOworICAgIHBzaGludGVyID0gKFBTSGludGVyX1NlcnZpY2UpZmFjZS0+cHNoaW50ZXI7CisKKyAgICBpZiAoIHBzaGludGVyICkKKyAgICB7CisgICAgICBGVF9Nb2R1bGUgIG1vZHVsZTsKKworCisgICAgICBtb2R1bGUgPSBGVF9HZXRfTW9kdWxlKCBzbG90LT5mYWNlLT5kcml2ZXItPnJvb3QubGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwc2hpbnRlciIgKTsKKyAgICAgIGlmICggbW9kdWxlICkKKyAgICAgIHsKKyAgICAgICAgVDFfSGludHNfRnVuY3MgIGZ1bmNzOworCisKKyAgICAgICAgZnVuY3MgPSBwc2hpbnRlci0+Z2V0X3QxX2Z1bmNzKCBtb2R1bGUgKTsKKyAgICAgICAgc2xvdC0+aW50ZXJuYWwtPmdseXBoX2hpbnRzID0gKHZvaWQqKWZ1bmNzOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRSAgRlVOQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICBzdGF0aWMgUFNIX0dsb2JhbHNfRnVuY3MKKyAgY2lkX3NpemVfZ2V0X2dsb2JhbHNfZnVuY3MoIENJRF9TaXplICBzaXplICkKKyAgeworICAgIENJRF9GYWNlICAgICAgICAgIGZhY2UgICAgID0gKENJRF9GYWNlKXNpemUtPnJvb3QuZmFjZTsKKyAgICBQU0hpbnRlcl9TZXJ2aWNlICBwc2hpbnRlciA9IChQU0hpbnRlcl9TZXJ2aWNlKWZhY2UtPnBzaGludGVyOworICAgIEZUX01vZHVsZSAgICAgICAgIG1vZHVsZTsKKworCisgICAgbW9kdWxlID0gRlRfR2V0X01vZHVsZSggc2l6ZS0+cm9vdC5mYWNlLT5kcml2ZXItPnJvb3QubGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNoaW50ZXIiICk7CisgICAgcmV0dXJuICggbW9kdWxlICYmIHBzaGludGVyICYmIHBzaGludGVyLT5nZXRfZ2xvYmFsc19mdW5jcyApCisgICAgICAgICAgID8gcHNoaW50ZXItPmdldF9nbG9iYWxzX2Z1bmNzKCBtb2R1bGUgKQorICAgICAgICAgICA6IDA7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNpZF9zaXplX2RvbmUoIEZUX1NpemUgIGNpZHNpemUgKSAgICAgICAgIC8qIENJRF9TaXplICovCisgIHsKKyAgICBDSURfU2l6ZSAgc2l6ZSA9IChDSURfU2l6ZSljaWRzaXplOworCisKKyAgICBpZiAoIGNpZHNpemUtPmludGVybmFsICkKKyAgICB7CisgICAgICBQU0hfR2xvYmFsc19GdW5jcyAgZnVuY3M7CisKKworICAgICAgZnVuY3MgPSBjaWRfc2l6ZV9nZXRfZ2xvYmFsc19mdW5jcyggc2l6ZSApOworICAgICAgaWYgKCBmdW5jcyApCisgICAgICAgIGZ1bmNzLT5kZXN0cm95KCAoUFNIX0dsb2JhbHMpY2lkc2l6ZS0+aW50ZXJuYWwgKTsKKworICAgICAgY2lkc2l6ZS0+aW50ZXJuYWwgPSAwOworICAgIH0KKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNpZF9zaXplX2luaXQoIEZUX1NpemUgIGNpZHNpemUgKSAgICAgLyogQ0lEX1NpemUgKi8KKyAgeworICAgIENJRF9TaXplICAgICAgICAgICBzaXplICA9IChDSURfU2l6ZSljaWRzaXplOworICAgIEZUX0Vycm9yICAgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBQU0hfR2xvYmFsc19GdW5jcyAgZnVuY3MgPSBjaWRfc2l6ZV9nZXRfZ2xvYmFsc19mdW5jcyggc2l6ZSApOworCisKKyAgICBpZiAoIGZ1bmNzICkKKyAgICB7CisgICAgICBQU0hfR2xvYmFscyAgIGdsb2JhbHM7CisgICAgICBDSURfRmFjZSAgICAgIGZhY2UgPSAoQ0lEX0ZhY2UpY2lkc2l6ZS0+ZmFjZTsKKyAgICAgIENJRF9GYWNlRGljdCAgZGljdCA9IGZhY2UtPmNpZC5mb250X2RpY3RzICsgZmFjZS0+cm9vdC5mYWNlX2luZGV4OworICAgICAgUFNfUHJpdmF0ZSAgICBwcml2ID0gJmRpY3QtPnByaXZhdGVfZGljdDsKKworCisgICAgICBlcnJvciA9IGZ1bmNzLT5jcmVhdGUoIGNpZHNpemUtPmZhY2UtPm1lbW9yeSwgcHJpdiwgJmdsb2JhbHMgKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgY2lkc2l6ZS0+aW50ZXJuYWwgPSAoRlRfU2l6ZV9JbnRlcm5hbCkodm9pZCopZ2xvYmFsczsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNpZF9zaXplX3JlcXVlc3QoIEZUX1NpemUgICAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEgKQorICB7CisgICAgUFNIX0dsb2JhbHNfRnVuY3MgIGZ1bmNzOworCisKKyAgICBGVF9SZXF1ZXN0X01ldHJpY3MoIHNpemUtPmZhY2UsIHJlcSApOworCisgICAgZnVuY3MgPSBjaWRfc2l6ZV9nZXRfZ2xvYmFsc19mdW5jcyggKENJRF9TaXplKXNpemUgKTsKKworICAgIGlmICggZnVuY3MgKQorICAgICAgZnVuY3MtPnNldF9zY2FsZSggKFBTSF9HbG9iYWxzKXNpemUtPmludGVybmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0+bWV0cmljcy54X3NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0+bWV0cmljcy55X3NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBQ0UgIEZVTkNUSU9OUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNpZF9mYWNlX2RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZpbmFsaXplcyBhIGdpdmVuIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSBwb2ludGVyIHRvIHRoZSBmYWNlIG9iamVjdCB0byBkZXN0cm95LiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2lkX2ZhY2VfZG9uZSggRlRfRmFjZSAgY2lkZmFjZSApICAgICAgICAgLyogQ0lEX0ZhY2UgKi8KKyAgeworICAgIENJRF9GYWNlICAgICAgZmFjZSA9IChDSURfRmFjZSljaWRmYWNlOworICAgIEZUX01lbW9yeSAgICAgbWVtb3J5OworICAgIENJRF9GYWNlSW5mbyAgY2lkOworICAgIFBTX0ZvbnRJbmZvICAgaW5mbzsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgICByZXR1cm47CisKKyAgICBjaWQgICAgPSAmZmFjZS0+Y2lkOworICAgIGluZm8gICA9ICZjaWQtPmZvbnRfaW5mbzsKKyAgICBtZW1vcnkgPSBjaWRmYWNlLT5tZW1vcnk7CisKKyAgICAvKiByZWxlYXNlIHN1YnJzICovCisgICAgaWYgKCBmYWNlLT5zdWJycyApCisgICAgeworICAgICAgRlRfSW50ICBuOworCisKKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgY2lkLT5udW1fZGljdHM7IG4rKyApCisgICAgICB7CisgICAgICAgIENJRF9TdWJycyAgc3ViciA9IGZhY2UtPnN1YnJzICsgbjsKKworCisgICAgICAgIGlmICggc3Vici0+Y29kZSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9GUkVFKCBzdWJyLT5jb2RlWzBdICk7CisgICAgICAgICAgRlRfRlJFRSggc3Vici0+Y29kZSApOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIEZUX0ZSRUUoIGZhY2UtPnN1YnJzICk7CisgICAgfQorCisgICAgLyogcmVsZWFzZSBGb250SW5mbyBzdHJpbmdzICovCisgICAgRlRfRlJFRSggaW5mby0+dmVyc2lvbiApOworICAgIEZUX0ZSRUUoIGluZm8tPm5vdGljZSApOworICAgIEZUX0ZSRUUoIGluZm8tPmZ1bGxfbmFtZSApOworICAgIEZUX0ZSRUUoIGluZm8tPmZhbWlseV9uYW1lICk7CisgICAgRlRfRlJFRSggaW5mby0+d2VpZ2h0ICk7CisKKyAgICAvKiByZWxlYXNlIGZvbnQgZGljdGlvbmFyaWVzICovCisgICAgRlRfRlJFRSggY2lkLT5mb250X2RpY3RzICk7CisgICAgY2lkLT5udW1fZGljdHMgPSAwOworCisgICAgLyogcmVsZWFzZSBvdGhlciBzdHJpbmdzICovCisgICAgRlRfRlJFRSggY2lkLT5jaWRfZm9udF9uYW1lICk7CisgICAgRlRfRlJFRSggY2lkLT5yZWdpc3RyeSApOworICAgIEZUX0ZSRUUoIGNpZC0+b3JkZXJpbmcgKTsKKworICAgIGNpZGZhY2UtPmZhbWlseV9uYW1lID0gMDsKKyAgICBjaWRmYWNlLT5zdHlsZV9uYW1lICA9IDA7CisKKyAgICBGVF9GUkVFKCBmYWNlLT5iaW5hcnlfZGF0YSApOworICAgIEZUX0ZSRUUoIGZhY2UtPmNpZF9zdHJlYW0gKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2lkX2ZhY2VfaW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW5pdGlhbGl6ZXMgYSBnaXZlbiBDSUQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgICA6OiBUaGUgc291cmNlIGZvbnQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgZm9udCBmYWNlIGluIHRoZSByZXNvdXJjZS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9wYXJhbXMgOjogTnVtYmVyIG9mIGFkZGl0aW9uYWwgZ2VuZXJpYyBwYXJhbWV0ZXJzLiAgSWdub3JlZC4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGFyYW1zICAgICA6OiBBZGRpdGlvbmFsIGdlbmVyaWMgcGFyYW1ldGVycy4gIElnbm9yZWQuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICA6OiBUaGUgbmV3bHkgYnVpbHQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgY2lkX2ZhY2VfaW5pdCggRlRfU3RyZWFtICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICBGVF9GYWNlICAgICAgICBjaWRmYWNlLCAgICAgICAgLyogQ0lEX0ZhY2UgKi8KKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgRlRfUGFyYW1ldGVyKiAgcGFyYW1zICkKKyAgeworICAgIENJRF9GYWNlICAgICAgICAgIGZhY2UgPSAoQ0lEX0ZhY2UpY2lkZmFjZTsKKyAgICBGVF9FcnJvciAgICAgICAgICBlcnJvcjsKKyAgICBQU0F1eF9TZXJ2aWNlICAgICBwc2F1eDsKKyAgICBQU0hpbnRlcl9TZXJ2aWNlICBwc2hpbnRlcjsKKworICAgIEZUX1VOVVNFRCggbnVtX3BhcmFtcyApOworICAgIEZUX1VOVVNFRCggcGFyYW1zICk7CisgICAgRlRfVU5VU0VEKCBzdHJlYW0gKTsKKworCisgICAgY2lkZmFjZS0+bnVtX2ZhY2VzID0gMTsKKworICAgIHBzYXV4ID0gKFBTQXV4X1NlcnZpY2UpZmFjZS0+cHNhdXg7CisgICAgaWYgKCAhcHNhdXggKQorICAgIHsKKyAgICAgIHBzYXV4ID0gKFBTQXV4X1NlcnZpY2UpRlRfR2V0X01vZHVsZV9JbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgRlRfRkFDRV9MSUJSQVJZKCBmYWNlICksICJwc2F1eCIgKTsKKworICAgICAgaWYgKCAhcHNhdXggKQorICAgICAgeworICAgICAgICBGVF9FUlJPUigoICJjaWRfZmFjZV9pbml0OiBjYW5ub3QgYWNjZXNzIGBwc2F1eCcgbW9kdWxlXG4iICkpOworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBNaXNzaW5nX01vZHVsZSApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIGZhY2UtPnBzYXV4ID0gcHNhdXg7CisgICAgfQorCisgICAgcHNoaW50ZXIgPSAoUFNIaW50ZXJfU2VydmljZSlmYWNlLT5wc2hpbnRlcjsKKyAgICBpZiAoICFwc2hpbnRlciApCisgICAgeworICAgICAgcHNoaW50ZXIgPSAoUFNIaW50ZXJfU2VydmljZSlGVF9HZXRfTW9kdWxlX0ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICBGVF9GQUNFX0xJQlJBUlkoIGZhY2UgKSwgInBzaGludGVyIiApOworCisgICAgICBmYWNlLT5wc2hpbnRlciA9IHBzaGludGVyOworICAgIH0KKworICAgIEZUX1RSQUNFMigoICJDSUQgZHJpdmVyXG4iICkpOworCisgICAgLyogb3BlbiB0aGUgdG9rZW5pemVyOyB0aGlzIHdpbGwgYWxzbyBjaGVjayB0aGUgZm9udCBmb3JtYXQgKi8KKyAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCAwICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgZXJyb3IgPSBjaWRfZmFjZV9vcGVuKCBmYWNlLCBmYWNlX2luZGV4ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBpZiB3ZSBqdXN0IHdhbnRlZCB0byBjaGVjayB0aGUgZm9ybWF0LCBsZWF2ZSBzdWNjZXNzZnVsbHkgbm93ICovCisgICAgaWYgKCBmYWNlX2luZGV4IDwgMCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBjaGVjayB0aGUgZmFjZSBpbmRleCAqLworICAgIC8qIFhYWDogaGFuZGxlIENJRCBmb250cyB3aXRoIG1vcmUgdGhhbiBhIHNpbmdsZSBmYWNlICovCisgICAgaWYgKCBmYWNlX2luZGV4ICE9IDAgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggImNpZF9mYWNlX2luaXQ6IGludmFsaWQgZmFjZSBpbmRleFxuIiApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICAvKiBub3cgbG9hZCB0aGUgZm9udCBwcm9ncmFtIGludG8gdGhlIGZhY2Ugb2JqZWN0ICovCisKKyAgICAvKiBpbml0aWFsaXplIHRoZSBmYWNlIG9iamVjdCBmaWVsZHMgKi8KKworICAgIC8qIHNldCB1cCByb290IGZhY2UgZmllbGRzICovCisgICAgeworICAgICAgQ0lEX0ZhY2VJbmZvICBjaWQgID0gJmZhY2UtPmNpZDsKKyAgICAgIFBTX0ZvbnRJbmZvICAgaW5mbyA9ICZjaWQtPmZvbnRfaW5mbzsKKworCisgICAgICBjaWRmYWNlLT5udW1fZ2x5cGhzICAgPSBjaWQtPmNpZF9jb3VudDsKKyAgICAgIGNpZGZhY2UtPm51bV9jaGFybWFwcyA9IDA7CisKKyAgICAgIGNpZGZhY2UtPmZhY2VfaW5kZXggPSBmYWNlX2luZGV4OworICAgICAgY2lkZmFjZS0+ZmFjZV9mbGFncyA9IEZUX0ZBQ0VfRkxBR19TQ0FMQUJMRSAgIHwgLyogc2NhbGFibGUgb3V0bGluZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GQUNFX0ZMQUdfSE9SSVpPTlRBTCB8IC8qIGhvcml6b250YWwgZGF0YSAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRkFDRV9GTEFHX0hJTlRFUjsgICAgICAvKiBoYXMgbmF0aXZlIGhpbnRlciAqLworCisgICAgICBpZiAoIGluZm8tPmlzX2ZpeGVkX3BpdGNoICkKKyAgICAgICAgY2lkZmFjZS0+ZmFjZV9mbGFncyB8PSBGVF9GQUNFX0ZMQUdfRklYRURfV0lEVEg7CisKKyAgICAgIC8qIFhYWDogVE9ETzogYWRkIGtlcm5pbmcgd2l0aCAuYWZtIHN1cHBvcnQgKi8KKworICAgICAgLyogZ2V0IHN0eWxlIG5hbWUgLS0gYmUgY2FyZWZ1bCwgc29tZSBicm9rZW4gZm9udHMgb25seSAqLworICAgICAgLyogaGF2ZSBhIC9Gb250TmFtZSBkaWN0aW9uYXJ5IGVudHJ5ISAgICAgICAgICAgICAgICAgICAqLworICAgICAgY2lkZmFjZS0+ZmFtaWx5X25hbWUgPSBpbmZvLT5mYW1pbHlfbmFtZTsKKyAgICAgIC8qIGFzc3VtZSAiUmVndWxhciIgc3R5bGUgaWYgd2UgZG9uJ3Qga25vdyBiZXR0ZXIgKi8KKyAgICAgIGNpZGZhY2UtPnN0eWxlX25hbWUgPSAoY2hhciAqKSJSZWd1bGFyIjsKKyAgICAgIGlmICggY2lkZmFjZS0+ZmFtaWx5X25hbWUgKQorICAgICAgeworICAgICAgICBjaGFyKiAgZnVsbCAgID0gaW5mby0+ZnVsbF9uYW1lOworICAgICAgICBjaGFyKiAgZmFtaWx5ID0gY2lkZmFjZS0+ZmFtaWx5X25hbWU7CisKKworICAgICAgICBpZiAoIGZ1bGwgKQorICAgICAgICB7CisgICAgICAgICAgd2hpbGUgKCAqZnVsbCApCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKCAqZnVsbCA9PSAqZmFtaWx5ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZmFtaWx5Kys7CisgICAgICAgICAgICAgIGZ1bGwrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKCAqZnVsbCA9PSAnICcgfHwgKmZ1bGwgPT0gJy0nICkKKyAgICAgICAgICAgICAgICBmdWxsKys7CisgICAgICAgICAgICAgIGVsc2UgaWYgKCAqZmFtaWx5ID09ICcgJyB8fCAqZmFtaWx5ID09ICctJyApCisgICAgICAgICAgICAgICAgZmFtaWx5Kys7CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICggISpmYW1pbHkgKQorICAgICAgICAgICAgICAgICAgY2lkZmFjZS0+c3R5bGVfbmFtZSA9IGZ1bGw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgLyogZG8gd2UgaGF2ZSBhIGAvRm9udE5hbWUnPyAqLworICAgICAgICBpZiAoIGNpZC0+Y2lkX2ZvbnRfbmFtZSApCisgICAgICAgICAgY2lkZmFjZS0+ZmFtaWx5X25hbWUgPSBjaWQtPmNpZF9mb250X25hbWU7CisgICAgICB9CisKKyAgICAgIC8qIGNvbXB1dGUgc3R5bGUgZmxhZ3MgKi8KKyAgICAgIGNpZGZhY2UtPnN0eWxlX2ZsYWdzID0gMDsKKyAgICAgIGlmICggaW5mby0+aXRhbGljX2FuZ2xlICkKKyAgICAgICAgY2lkZmFjZS0+c3R5bGVfZmxhZ3MgfD0gRlRfU1RZTEVfRkxBR19JVEFMSUM7CisgICAgICBpZiAoIGluZm8tPndlaWdodCApCisgICAgICB7CisgICAgICAgIGlmICggIWZ0X3N0cmNtcCggaW5mby0+d2VpZ2h0LCAiQm9sZCIgICkgfHwKKyAgICAgICAgICAgICAhZnRfc3RyY21wKCBpbmZvLT53ZWlnaHQsICJCbGFjayIgKSApCisgICAgICAgICAgY2lkZmFjZS0+c3R5bGVfZmxhZ3MgfD0gRlRfU1RZTEVfRkxBR19CT0xEOworICAgICAgfQorCisgICAgICAvKiBubyBlbWJlZGRlZCBiaXRtYXAgc3VwcG9ydCAqLworICAgICAgY2lkZmFjZS0+bnVtX2ZpeGVkX3NpemVzID0gMDsKKyAgICAgIGNpZGZhY2UtPmF2YWlsYWJsZV9zaXplcyA9IDA7CisKKyAgICAgIGNpZGZhY2UtPmJib3gueE1pbiA9ICAgY2lkLT5mb250X2Jib3gueE1pbiAgICAgICAgICAgID4+IDE2OworICAgICAgY2lkZmFjZS0+YmJveC55TWluID0gICBjaWQtPmZvbnRfYmJveC55TWluICAgICAgICAgICAgPj4gMTY7CisgICAgICAvKiBubyBgVScgc3VmZml4IGhlcmUgdG8gMHhGRkZGISAqLworICAgICAgY2lkZmFjZS0+YmJveC54TWF4ID0gKCBjaWQtPmZvbnRfYmJveC54TWF4ICsgMHhGRkZGICkgPj4gMTY7CisgICAgICBjaWRmYWNlLT5iYm94LnlNYXggPSAoIGNpZC0+Zm9udF9iYm94LnlNYXggKyAweEZGRkYgKSA+PiAxNjsKKworICAgICAgaWYgKCAhY2lkZmFjZS0+dW5pdHNfcGVyX0VNICkKKyAgICAgICAgY2lkZmFjZS0+dW5pdHNfcGVyX0VNID0gMTAwMDsKKworICAgICAgY2lkZmFjZS0+YXNjZW5kZXIgID0gKEZUX1Nob3J0KSggY2lkZmFjZS0+YmJveC55TWF4ICk7CisgICAgICBjaWRmYWNlLT5kZXNjZW5kZXIgPSAoRlRfU2hvcnQpKCBjaWRmYWNlLT5iYm94LnlNaW4gKTsKKworICAgICAgY2lkZmFjZS0+aGVpZ2h0ID0gKEZUX1Nob3J0KSggKCBjaWRmYWNlLT51bml0c19wZXJfRU0gKiAxMiApIC8gMTAgKTsKKyAgICAgIGlmICggY2lkZmFjZS0+aGVpZ2h0IDwgY2lkZmFjZS0+YXNjZW5kZXIgLSBjaWRmYWNlLT5kZXNjZW5kZXIgKQorICAgICAgICBjaWRmYWNlLT5oZWlnaHQgPSAoRlRfU2hvcnQpKCBjaWRmYWNlLT5hc2NlbmRlciAtIGNpZGZhY2UtPmRlc2NlbmRlciApOworCisgICAgICBjaWRmYWNlLT51bmRlcmxpbmVfcG9zaXRpb24gID0gKEZUX1Nob3J0KWluZm8tPnVuZGVybGluZV9wb3NpdGlvbjsKKyAgICAgIGNpZGZhY2UtPnVuZGVybGluZV90aGlja25lc3MgPSAoRlRfU2hvcnQpaW5mby0+dW5kZXJsaW5lX3RoaWNrbmVzczsKKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNpZF9kcml2ZXJfaW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRpYWxpemVzIGEgZ2l2ZW4gQ0lEIGRyaXZlciBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRyaXZlciA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGRyaXZlciBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIGNpZF9kcml2ZXJfaW5pdCggRlRfTW9kdWxlICBkcml2ZXIgKQorICB7CisgICAgRlRfVU5VU0VEKCBkcml2ZXIgKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNpZF9kcml2ZXJfZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZpbmFsaXplcyBhIGdpdmVuIENJRCBkcml2ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRyaXZlciA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IENJRCBkcml2ZXIuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgY2lkX2RyaXZlcl9kb25lKCBGVF9Nb2R1bGUgIGRyaXZlciApCisgIHsKKyAgICBGVF9VTlVTRUQoIGRyaXZlciApOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRvYmpzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRvYmpzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNjNGMzOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZG9ianMuaApAQCAtMCwwICsxLDE1NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgY2lkb2Jqcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIENJRCBvYmplY3RzIG1hbmFnZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIsIDIwMDQsIDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fQ0lET0JKU19IX18KKyNkZWZpbmUgX19DSURPQkpTX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmVzIG11c3QgYmUgZGVmaW5lZCBieSB0aGUgaGludGVyICovCisgIHR5cGVkZWYgc3RydWN0IENJRF9TaXplX0hpbnRzXyAgIENJRF9TaXplX0hpbnRzOworICB0eXBlZGVmIHN0cnVjdCBDSURfR2x5cGhfSGludHNfICBDSURfR2x5cGhfSGludHM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDSURfRHJpdmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIFR5cGUgMSBkcml2ZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IENJRF9Ecml2ZXJSZWNfKiAgQ0lEX0RyaXZlcjsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENJRF9TaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgVHlwZSAxIHNpemUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgQ0lEX1NpemVSZWNfKiAgQ0lEX1NpemU7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDSURfR2x5cGhTbG90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIFR5cGUgMSBnbHlwaCBzbG90IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IENJRF9HbHlwaFNsb3RSZWNfKiAgQ0lEX0dseXBoU2xvdDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENJRF9DaGFyTWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgVHlwZSAxIGNoYXJhY3RlciBtYXBwaW5nIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBUeXBlIDEgZm9ybWF0IGRvZXNuJ3QgdXNlIGEgY2hhcm1hcCBidXQgYW4gZW5jb2RpbmcgdGFibGUuICAgICAqLworICAvKiAgICBUaGUgZHJpdmVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgdXAgY2hhcm1hcCBvYmplY3RzICAgICAgICAgICAgKi8KKyAgLyogICAgY29ycmVzcG9uZGluZyB0byB0aGVzZSB0YWJsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBDSURfQ2hhck1hcFJlY18qICBDSURfQ2hhck1hcDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSEVSRSBCRUdJTlMgVEhFIFRZUEUgMSBTUEVDSUZJQyBTVFVGRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIHR5cGVkZWYgc3RydWN0ICBDSURfU2l6ZVJlY18KKyAgeworICAgIEZUX1NpemVSZWMgIHJvb3Q7CisgICAgRlRfQm9vbCAgICAgdmFsaWQ7CisKKyAgfSBDSURfU2l6ZVJlYzsKKworCisgIHR5cGVkZWYgc3RydWN0ICBDSURfR2x5cGhTbG90UmVjXworICB7CisgICAgRlRfR2x5cGhTbG90UmVjICByb290OworCisgICAgRlRfQm9vbCAgICAgICAgICBoaW50OworICAgIEZUX0Jvb2wgICAgICAgICAgc2NhbGVkOworCisgICAgRlRfRml4ZWQgICAgICAgICB4X3NjYWxlOworICAgIEZUX0ZpeGVkICAgICAgICAgeV9zY2FsZTsKKworICB9IENJRF9HbHlwaFNsb3RSZWM7CisKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNpZF9zbG90X2RvbmUoIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNpZF9zbG90X2luaXQoIEZUX0dseXBoU2xvdCAgc2xvdCApOworCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjaWRfc2l6ZV9kb25lKCBGVF9TaXplICBzaXplICk7ICAgICAgIC8qIENJRF9TaXplICovCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgY2lkX3NpemVfaW5pdCggRlRfU2l6ZSAgc2l6ZSApOyAgICAgICAvKiBDSURfU2l6ZSAqLworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNpZF9zaXplX3JlcXVlc3QoIEZUX1NpemUgICAgICAgICAgc2l6ZSwgICAgICAvKiBDSURfU2l6ZSAqLworICAgICAgICAgICAgICAgICAgICBGVF9TaXplX1JlcXVlc3QgIHJlcSApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGNpZF9mYWNlX2luaXQoIEZUX1N0cmVhbSAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgZmFjZSwgICAgICAgICAgIC8qIENJRF9GYWNlICovCisgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMsCisgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtcyApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgY2lkX2ZhY2VfZG9uZSggRlRfRmFjZSAgZmFjZSApOyAgICAgICAgICAgICAgIC8qIENJRF9GYWNlICovCisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjaWRfZHJpdmVyX2luaXQoIEZUX01vZHVsZSAgZHJpdmVyICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBjaWRfZHJpdmVyX2RvbmUoIEZUX01vZHVsZSAgZHJpdmVyICk7CisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19DSURPQkpTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvY2lkcGFyc2UuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZHBhcnNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNjYzRkYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZHBhcnNlLmMKQEAgLTAsMCArMSwyMjUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNpZHBhcnNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDSUQta2V5ZWQgVHlwZTEgcGFyc2VyIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA3LCAyMDA5LCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKworI2luY2x1ZGUgImNpZHBhcnNlLmgiCisKKyNpbmNsdWRlICJjaWRlcnJzLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9jaWRwYXJzZQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgSU5QVVQgU1RSRUFNIFBBUlNFUiAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBjaWRfcGFyc2VyX25ldyggQ0lEX1BhcnNlciogICAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgUFNBdXhfU2VydmljZSAgcHNhdXggKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworICAgIEZUX1VMb25nICBiYXNlX29mZnNldCwgb2Zmc2V0LCBwc19sZW47CisgICAgRlRfQnl0ZSAgICpjdXIsICpsaW1pdDsKKyAgICBGVF9CeXRlICAgKmFyZzEsICphcmcyOworCisKKyAgICBGVF9NRU1fWkVSTyggcGFyc2VyLCBzaXplb2YgKCAqcGFyc2VyICkgKTsKKyAgICBwc2F1eC0+cHNfcGFyc2VyX2Z1bmNzLT5pbml0KCAmcGFyc2VyLT5yb290LCAwLCAwLCBtZW1vcnkgKTsKKworICAgIHBhcnNlci0+c3RyZWFtID0gc3RyZWFtOworCisgICAgYmFzZV9vZmZzZXQgPSBGVF9TVFJFQU1fUE9TKCk7CisKKyAgICAvKiBmaXJzdCBvZiBhbGwsIGNoZWNrIHRoZSBmb250IGZvcm1hdCBpbiB0aGUgaGVhZGVyICovCisgICAgaWYgKCBGVF9GUkFNRV9FTlRFUiggMzEgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIGZ0X3N0cm5jbXAoIChjaGFyICopc3RyZWFtLT5jdXJzb3IsCisgICAgICAgICAgICAgICAgICAgICAiJSFQUy1BZG9iZS0zLjAgUmVzb3VyY2UtQ0lERm9udCIsIDMxICkgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMigoICIgIG5vdCBhIENJRC1rZXllZCBmb250XG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworICAgIH0KKworICAgIEZUX0ZSQU1FX0VYSVQoKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICBBZ2FpbjoKKyAgICAvKiBub3csIHJlYWQgdGhlIHJlc3Qgb2YgdGhlIGZpbGUgdW50aWwgd2UgZmluZCAqLworICAgIC8qIGBTdGFydERhdGEnIG9yIGAvc2ZudHMnICAgICAgICAgICAgICAgICAgICAgICovCisgICAgeworICAgICAgRlRfQnl0ZSAgIGJ1ZmZlclsyNTYgKyAxMF07CisgICAgICBGVF9Mb25nICAgcmVhZF9sZW4gPSAyNTYgKyAxMDsgLyogc2FtZSBhcyBzaWduZWQgRlRfU3RyZWFtLT5zaXplICovCisgICAgICBGVF9CeXRlKiAgcCAgICAgICAgPSBidWZmZXI7CisKKworICAgICAgZm9yICggb2Zmc2V0ID0gRlRfU1RSRUFNX1BPUygpOyA7IG9mZnNldCArPSAyNTYgKQorICAgICAgeworICAgICAgICBGVF9Mb25nICBzdHJlYW1fbGVuOyAvKiBzYW1lIGFzIHNpZ25lZCBGVF9TdHJlYW0tPnNpemUgKi8KKworCisgICAgICAgIHN0cmVhbV9sZW4gPSBzdHJlYW0tPnNpemUgLSBGVF9TVFJFQU1fUE9TKCk7CisgICAgICAgIGlmICggc3RyZWFtX2xlbiA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1RSQUNFMigoICJjaWRfcGFyc2VyX25ldzogbm8gYFN0YXJ0RGF0YScga2V5d29yZCBmb3VuZFxuIiApKTsKKyAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisKKyAgICAgICAgcmVhZF9sZW4gPSBGVF9NSU4oIHJlYWRfbGVuLCBzdHJlYW1fbGVuICk7CisgICAgICAgIGlmICggRlRfU1RSRUFNX1JFQUQoIHAsIHJlYWRfbGVuICkgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICBpZiAoIHJlYWRfbGVuIDwgMjU2ICkKKyAgICAgICAgICBwW3JlYWRfbGVuXSAgPSAnXDAnOworCisgICAgICAgIGxpbWl0ID0gcCArIHJlYWRfbGVuIC0gMTA7CisKKyAgICAgICAgZm9yICggcCA9IGJ1ZmZlcjsgcCA8IGxpbWl0OyBwKysgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBwWzBdID09ICdTJyAmJiBmdF9zdHJuY21wKCAoY2hhciopcCwgIlN0YXJ0RGF0YSIsIDkgKSA9PSAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBzYXZlIG9mZnNldCBvZiBiaW5hcnkgZGF0YSBhZnRlciBgU3RhcnREYXRhJyAqLworICAgICAgICAgICAgb2Zmc2V0ICs9IChGVF9VTG9uZykoIHAgLSBidWZmZXIgKyAxMCApOworICAgICAgICAgICAgZ290byBGb3VuZDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoIHBbMV0gPT0gJ3MnICYmIGZ0X3N0cm5jbXAoIChjaGFyKilwLCAiL3NmbnRzIiwgNiApID09IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIG9mZnNldCArPSAoRlRfVUxvbmcpKCBwIC0gYnVmZmVyICsgNyApOworICAgICAgICAgICAgZ290byBGb3VuZDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBGVF9NRU1fTU9WRSggYnVmZmVyLCBwLCAxMCApOworICAgICAgICByZWFkX2xlbiA9IDI1NjsKKyAgICAgICAgcCA9IGJ1ZmZlciArIDEwOworICAgICAgfQorICAgIH0KKworICBGb3VuZDoKKyAgICAvKiBXZSBoYXZlIGZvdW5kIHRoZSBzdGFydCBvZiB0aGUgYmluYXJ5IGRhdGEgb3IgdGhlIGAvc2ZudHMnIHRva2VuLiAqLworICAgIC8qIE5vdyByZXdpbmQgYW5kIGV4dHJhY3QgdGhlIGZyYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBQb3N0U2NyaXB0ICovCisgICAgLyogc2VjdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIHBzX2xlbiA9IG9mZnNldCAtIGJhc2Vfb2Zmc2V0OworICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIGJhc2Vfb2Zmc2V0ICkgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgRlRfRlJBTUVfRVhUUkFDVCggcHNfbGVuLCBwYXJzZXItPnBvc3RzY3JpcHQgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBwYXJzZXItPmRhdGFfb2Zmc2V0ICAgID0gb2Zmc2V0OworICAgIHBhcnNlci0+cG9zdHNjcmlwdF9sZW4gPSBwc19sZW47CisgICAgcGFyc2VyLT5yb290LmJhc2UgICAgICA9IHBhcnNlci0+cG9zdHNjcmlwdDsKKyAgICBwYXJzZXItPnJvb3QuY3Vyc29yICAgID0gcGFyc2VyLT5wb3N0c2NyaXB0OworICAgIHBhcnNlci0+cm9vdC5saW1pdCAgICAgPSBwYXJzZXItPnJvb3QuY3Vyc29yICsgcHNfbGVuOworICAgIHBhcnNlci0+bnVtX2RpY3QgICAgICAgPSAtMTsKKworICAgIC8qIEZpbmFsbHksIHdlIGNoZWNrIHdoZXRoZXIgYFN0YXJ0RGF0YScgb3IgYC9zZm50cycgd2FzIHJlYWwgLS0gICovCisgICAgLyogaXQgY291bGQgYmUgaW4gYSBjb21tZW50IG9yIHN0cmluZy4gIFdlIGFsc28gZ2V0IHRoZSBhcmd1bWVudHMgKi8KKyAgICAvKiBvZiBgU3RhcnREYXRhJyB0byBmaW5kIG91dCB3aGV0aGVyIHRoZSBkYXRhIGlzIHJlcHJlc2VudGVkIGluICAqLworICAgIC8qIGJpbmFyeSBvciBoZXggZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICBhcmcxID0gcGFyc2VyLT5yb290LmN1cnNvcjsKKyAgICBjaWRfcGFyc2VyX3NraXBfUFNfdG9rZW4oIHBhcnNlciApOworICAgIGNpZF9wYXJzZXJfc2tpcF9zcGFjZXMgICggcGFyc2VyICk7CisgICAgYXJnMiA9IHBhcnNlci0+cm9vdC5jdXJzb3I7CisgICAgY2lkX3BhcnNlcl9za2lwX1BTX3Rva2VuKCBwYXJzZXIgKTsKKyAgICBjaWRfcGFyc2VyX3NraXBfc3BhY2VzICAoIHBhcnNlciApOworCisgICAgbGltaXQgPSBwYXJzZXItPnJvb3QubGltaXQ7CisgICAgY3VyICAgPSBwYXJzZXItPnJvb3QuY3Vyc29yOworCisgICAgd2hpbGUgKCBjdXIgPCBsaW1pdCApCisgICAgeworICAgICAgaWYgKCBwYXJzZXItPnJvb3QuZXJyb3IgKQorICAgICAgeworICAgICAgICBlcnJvciA9IHBhcnNlci0+cm9vdC5lcnJvcjsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICBpZiAoIGN1clswXSA9PSAnUycgJiYgZnRfc3RybmNtcCggKGNoYXIqKWN1ciwgIlN0YXJ0RGF0YSIsIDkgKSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBmdF9zdHJuY21wKCAoY2hhciopYXJnMSwgIihIZXgpIiwgNSApID09IDAgKQorICAgICAgICAgIHBhcnNlci0+YmluYXJ5X2xlbmd0aCA9IGZ0X2F0b2woIChjb25zdCBjaGFyICopYXJnMiApOworCisgICAgICAgIGxpbWl0ID0gcGFyc2VyLT5yb290LmxpbWl0OworICAgICAgICBjdXIgICA9IHBhcnNlci0+cm9vdC5jdXJzb3I7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCBjdXJbMV0gPT0gJ3MnICYmIGZ0X3N0cm5jbXAoIChjaGFyKiljdXIsICIvc2ZudHMiLCA2ICkgPT0gMCApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFMigoICJjaWRfcGFyc2VyX25ldzogY2Fubm90IGhhbmRsZSBUeXBlIDExIGZvbnRzXG4iICkpOworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgY2lkX3BhcnNlcl9za2lwX1BTX3Rva2VuKCBwYXJzZXIgKTsKKyAgICAgIGNpZF9wYXJzZXJfc2tpcF9zcGFjZXMgICggcGFyc2VyICk7CisgICAgICBhcmcxID0gYXJnMjsKKyAgICAgIGFyZzIgPSBjdXI7CisgICAgICBjdXIgID0gcGFyc2VyLT5yb290LmN1cnNvcjsKKyAgICB9CisKKyAgICAvKiB3ZSBoYXZlbid0IGZvdW5kIHRoZSBjb3JyZWN0IGBTdGFydERhdGEnOyBnbyBiYWNrIGFuZCBjb250aW51ZSAqLworICAgIC8qIHNlYXJjaGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgRlRfRlJBTUVfUkVMRUFTRSggcGFyc2VyLT5wb3N0c2NyaXB0ICk7CisgICAgaWYgKCAhRlRfU1RSRUFNX1NFRUsoIG9mZnNldCApICkKKyAgICAgIGdvdG8gQWdhaW47CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIGNpZF9wYXJzZXJfZG9uZSggQ0lEX1BhcnNlciogIHBhcnNlciApCisgIHsKKyAgICAvKiBhbHdheXMgZnJlZSB0aGUgcHJpdmF0ZSBkaWN0aW9uYXJ5ICovCisgICAgaWYgKCBwYXJzZXItPnBvc3RzY3JpcHQgKQorICAgIHsKKyAgICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gcGFyc2VyLT5zdHJlYW07CisKKworICAgICAgRlRfRlJBTUVfUkVMRUFTRSggcGFyc2VyLT5wb3N0c2NyaXB0ICk7CisgICAgfQorICAgIHBhcnNlci0+cm9vdC5mdW5jcy5kb25lKCAmcGFyc2VyLT5yb290ICk7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZHBhcnNlLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRwYXJzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2Mjg0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRwYXJzZS5oCkBAIC0wLDAgKzEsMTIzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjaWRwYXJzZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQ0lELWtleWVkIFR5cGUxIHBhcnNlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19DSURQQVJTRV9IX18KKyNkZWZpbmUgX19DSURQQVJTRV9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDSURfUGFyc2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIENJRF9QYXJzZXIgaXMgYW4gb2JqZWN0IHVzZWQgdG8gcGFyc2UgYSBUeXBlIDEgZm9udHMgdmVyeSAgICAgICAgKi8KKyAgLyogICAgcXVpY2tseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcm9vdCAgICAgICAgICAgOjogVGhlIHJvb3QgUFNfUGFyc2VyUmVjIGZpZWxkcy4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gICAgICAgICA6OiBUaGUgY3VycmVudCBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBvc3RzY3JpcHQgICAgIDo6IEEgcG9pbnRlciB0byB0aGUgZGF0YSB0byBiZSBwYXJzZWQuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcG9zdHNjcmlwdF9sZW4gOjogVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSB0byBiZSBwYXJzZWQuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkYXRhX29mZnNldCAgICA6OiBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGJpbmFyeSBkYXRhIChpLmUuLCB0aGUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgZW5kIG9mIHRoZSBkYXRhIHRvIGJlIHBhcnNlZC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiaW5hcnlfbGVuZ3RoICA6OiBUaGUgbGVuZ3RoIG9mIHRoZSBkYXRhIGFmdGVyIHRoZSBgU3RhcnREYXRhJyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBpZiB0aGUgZGF0YSBmb3JtYXQgaXMgaGV4YWRlY2ltYWwuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaWQgICAgICAgICAgICA6OiBBIHN0cnVjdHVyZSB3aGljaCBob2xkcyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fZGljdCAgICAgICA6OiBUaGUgbnVtYmVyIG9mIGZvbnQgZGljdGlvbmFyaWVzLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBDSURfUGFyc2VyXworICB7CisgICAgUFNfUGFyc2VyUmVjICByb290OworICAgIEZUX1N0cmVhbSAgICAgc3RyZWFtOworCisgICAgRlRfQnl0ZSogICAgICBwb3N0c2NyaXB0OworICAgIEZUX0xvbmcgICAgICAgcG9zdHNjcmlwdF9sZW47CisKKyAgICBGVF9VTG9uZyAgICAgIGRhdGFfb2Zmc2V0OworCisgICAgRlRfTG9uZyAgICAgICBiaW5hcnlfbGVuZ3RoOworCisgICAgQ0lEX0ZhY2VJbmZvICBjaWQ7CisgICAgRlRfSW50ICAgICAgICBudW1fZGljdDsKKworICB9IENJRF9QYXJzZXI7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBjaWRfcGFyc2VyX25ldyggQ0lEX1BhcnNlciogICAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgUFNBdXhfU2VydmljZSAgcHNhdXggKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIGNpZF9wYXJzZXJfZG9uZSggQ0lEX1BhcnNlciogIHBhcnNlciApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJTSU5HIFJPVVRJTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIGNpZF9wYXJzZXJfc2tpcF9zcGFjZXMoIHAgKSBcCisgICAgICAgICAgKHApLT5yb290LmZ1bmNzLnNraXBfc3BhY2VzKCAmKHApLT5yb290ICkKKyNkZWZpbmUgY2lkX3BhcnNlcl9za2lwX1BTX3Rva2VuKCBwICkgXAorICAgICAgICAgIChwKS0+cm9vdC5mdW5jcy5za2lwX1BTX3Rva2VuKCAmKHApLT5yb290ICkKKworI2RlZmluZSBjaWRfcGFyc2VyX3RvX2ludCggcCApICAgICAgICAocCktPnJvb3QuZnVuY3MudG9faW50KCAmKHApLT5yb290ICkKKyNkZWZpbmUgY2lkX3BhcnNlcl90b19maXhlZCggcCwgdCApICAgKHApLT5yb290LmZ1bmNzLnRvX2ZpeGVkKCAmKHApLT5yb290LCB0ICkKKworI2RlZmluZSBjaWRfcGFyc2VyX3RvX2Nvb3JkX2FycmF5KCBwLCBtLCBjICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAocCktPnJvb3QuZnVuY3MudG9fY29vcmRfYXJyYXkoICYocCktPnJvb3QsIG0sIGMgKQorI2RlZmluZSBjaWRfcGFyc2VyX3RvX2ZpeGVkX2FycmF5KCBwLCBtLCBmLCB0ICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAocCktPnJvb3QuZnVuY3MudG9fZml4ZWRfYXJyYXkoICYocCktPnJvb3QsIG0sIGYsIHQgKQorI2RlZmluZSBjaWRfcGFyc2VyX3RvX3Rva2VuKCBwLCB0ICkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIChwKS0+cm9vdC5mdW5jcy50b190b2tlbiggJihwKS0+cm9vdCwgdCApCisjZGVmaW5lIGNpZF9wYXJzZXJfdG9fdG9rZW5fYXJyYXkoIHAsIHQsIG0sIGMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIChwKS0+cm9vdC5mdW5jcy50b190b2tlbl9hcnJheSggJihwKS0+cm9vdCwgdCwgbSwgYyApCisKKyNkZWZpbmUgY2lkX3BhcnNlcl9sb2FkX2ZpZWxkKCBwLCBmLCBvICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKHApLT5yb290LmZ1bmNzLmxvYWRfZmllbGQoICYocCktPnJvb3QsIGYsIG8sIDAsIDAgKQorI2RlZmluZSBjaWRfcGFyc2VyX2xvYWRfZmllbGRfdGFibGUoIHAsIGYsIG8gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAocCktPnJvb3QuZnVuY3MubG9hZF9maWVsZF90YWJsZSggJihwKS0+cm9vdCwgZiwgbywgMCwgMCApCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19DSURQQVJTRV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZHJpdmVyLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRyaXZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZDI1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRyaXZlci5jCkBAIC0wLDAgKzEsMjM2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBjaWRyaXZlci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQ0lEIGRyaXZlciBpbnRlcmZhY2UgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNCwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiY2lkcml2ZXIuaCIKKyNpbmNsdWRlICJjaWRnbG9hZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorCisjaW5jbHVkZSAiY2lkZXJycy5oIgorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBvc3RubS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z4Zjg2bm0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNpbmZvLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmNpZC5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfY2lkZHJpdmVyCisKKworICAvKgorICAgKiAgUE9TVFNDUklQVCBOQU1FIFNFUlZJQ0UKKyAgICoKKyAgICovCisKKyAgc3RhdGljIGNvbnN0IGNoYXIqCisgIGNpZF9nZXRfcG9zdHNjcmlwdF9uYW1lKCBDSURfRmFjZSAgZmFjZSApCisgIHsKKyAgICBjb25zdCBjaGFyKiAgcmVzdWx0ID0gZmFjZS0+Y2lkLmNpZF9mb250X25hbWU7CisKKworICAgIGlmICggcmVzdWx0ICYmIHJlc3VsdFswXSA9PSAnLycgKQorICAgICAgcmVzdWx0Kys7CisKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9Qc0ZvbnROYW1lUmVjICBjaWRfc2VydmljZV9wc19uYW1lID0KKyAgeworICAgIChGVF9Qc05hbWVfR2V0RnVuYykgY2lkX2dldF9wb3N0c2NyaXB0X25hbWUKKyAgfTsKKworCisgIC8qCisgICAqICBQT1NUU0NSSVBUIElORk8gU0VSVklDRQorICAgKgorICAgKi8KKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2lkX3BzX2dldF9mb250X2luZm8oIEZUX0ZhY2UgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBTX0ZvbnRJbmZvUmVjKiAgYWZvbnRfaW5mbyApCisgIHsKKyAgICAqYWZvbnRfaW5mbyA9ICgoQ0lEX0ZhY2UpZmFjZSktPmNpZC5mb250X2luZm87CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNpZF9wc19nZXRfZm9udF9leHRyYSggRlRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgUFNfRm9udEV4dHJhUmVjKiAgYWZvbnRfZXh0cmEgKQorICB7CisgICAgKmFmb250X2V4dHJhID0gKChDSURfRmFjZSlmYWNlKS0+Zm9udF9leHRyYTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9Qc0luZm9SZWMgIGNpZF9zZXJ2aWNlX3BzX2luZm8gPQorICB7CisgICAgKFBTX0dldEZvbnRJbmZvRnVuYykgICBjaWRfcHNfZ2V0X2ZvbnRfaW5mbywKKyAgICAoUFNfR2V0Rm9udEV4dHJhRnVuYykgIGNpZF9wc19nZXRfZm9udF9leHRyYSwKKyAgICAoUFNfSGFzR2x5cGhOYW1lc0Z1bmMpIE5VTEwsICAgICAgICAvKiB1bnN1cHBvcnRlZCB3aXRoIENJRCBmb250cyAqLworICAgIChQU19HZXRGb250UHJpdmF0ZUZ1bmMpTlVMTCwgICAgICAgIC8qIHVuc3VwcG9ydGVkICAgICAgICAgICAgICAgICovCisgICAgKFBTX0dldEZvbnRWYWx1ZUZ1bmMpICBOVUxMICAgICAgICAgLyogbm90IGltcGxlbWVudGVkICAgICAgICAgICAgKi8KKyAgfTsKKworCisgIC8qCisgICAqICBDSUQgSU5GTyBTRVJWSUNFCisgICAqCisgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2lkX2dldF9yb3MoIENJRF9GYWNlICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAqcmVnaXN0cnksCisgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgKm9yZGVyaW5nLAorICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICpzdXBwbGVtZW50ICkKKyAgeworICAgIENJRF9GYWNlSW5mbyAgY2lkID0gJmZhY2UtPmNpZDsKKworCisgICAgaWYgKCByZWdpc3RyeSApCisgICAgICAqcmVnaXN0cnkgPSBjaWQtPnJlZ2lzdHJ5OworCisgICAgaWYgKCBvcmRlcmluZyApCisgICAgICAqb3JkZXJpbmcgPSBjaWQtPm9yZGVyaW5nOworCisgICAgaWYgKCBzdXBwbGVtZW50ICkKKyAgICAgICpzdXBwbGVtZW50ID0gY2lkLT5zdXBwbGVtZW50OworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNpZF9nZXRfaXNfY2lkKCBDSURfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICppc19jaWQgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX1VOVVNFRCggZmFjZSApOworCisKKyAgICBpZiAoIGlzX2NpZCApCisgICAgICAqaXNfY2lkID0gMTsgLyogY2lkIGRyaXZlciBpcyBvbmx5IHVzZWQgZm9yIENJRCBrZXllZCBmb250cyAqLworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2lkX2dldF9jaWRfZnJvbV9nbHlwaF9pbmRleCggQ0lEX0ZhY2UgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgKmNpZCApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfVU5VU0VEKCBmYWNlICk7CisKKworICAgIGlmICggY2lkICkKKyAgICAgICpjaWQgPSBnbHlwaF9pbmRleDsgLyogaWRlbnRpdHkgbWFwcGluZyAqLworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9DSURSZWMgIGNpZF9zZXJ2aWNlX2NpZF9pbmZvID0KKyAgeworICAgICAoRlRfQ0lEX0dldFJlZ2lzdHJ5T3JkZXJpbmdTdXBwbGVtZW50RnVuYyljaWRfZ2V0X3JvcywKKyAgICAgKEZUX0NJRF9HZXRJc0ludGVybmFsbHlDSURLZXllZEZ1bmMpICAgICAgY2lkX2dldF9pc19jaWQsCisgICAgIChGVF9DSURfR2V0Q0lERnJvbUdseXBoSW5kZXhGdW5jKSAgICAgICAgIGNpZF9nZXRfY2lkX2Zyb21fZ2x5cGhfaW5kZXgKKyAgfTsKKworCisgIC8qCisgICAqICBTRVJWSUNFIExJU1QKKyAgICoKKyAgICovCisKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VEZXNjUmVjICBjaWRfc2VydmljZXNbXSA9CisgIHsKKyAgICB7IEZUX1NFUlZJQ0VfSURfWEY4Nl9OQU1FLCAgICAgICAgICAgIEZUX1hGODZfRk9STUFUX0NJRCB9LAorICAgIHsgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0ZPTlRfTkFNRSwgJmNpZF9zZXJ2aWNlX3BzX25hbWUgfSwKKyAgICB7IEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9JTkZPLCAgICAgICZjaWRfc2VydmljZV9wc19pbmZvIH0sCisgICAgeyBGVF9TRVJWSUNFX0lEX0NJRCwgICAgICAgICAgICAgICAgICAmY2lkX3NlcnZpY2VfY2lkX2luZm8gfSwKKyAgICB7IE5VTEwsIE5VTEwgfQorICB9OworCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9Nb2R1bGVfSW50ZXJmYWNlICkKKyAgY2lkX2dldF9pbnRlcmZhY2UoIEZUX01vZHVsZSAgICBtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgY2lkX2ludGVyZmFjZSApCisgIHsKKyAgICBGVF9VTlVTRUQoIG1vZHVsZSApOworCisgICAgcmV0dXJuIGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAoIGNpZF9zZXJ2aWNlcywgY2lkX2ludGVyZmFjZSApOworICB9CisKKworCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRgorICBjb25zdCBGVF9Ecml2ZXJfQ2xhc3NSZWMgIHQxY2lkX2RyaXZlcl9jbGFzcyA9CisgIHsKKyAgICAvKiBmaXJzdCBvZiBhbGwsIHRoZSBGVF9Nb2R1bGVfQ2xhc3MgZmllbGRzICovCisgICAgeworICAgICAgRlRfTU9EVUxFX0ZPTlRfRFJJVkVSICAgICAgIHwKKyAgICAgIEZUX01PRFVMRV9EUklWRVJfU0NBTEFCTEUgICB8CisgICAgICBGVF9NT0RVTEVfRFJJVkVSX0hBU19ISU5URVIsCisKKyAgICAgIHNpemVvZiAoIEZUX0RyaXZlclJlYyApLAorICAgICAgInQxY2lkIiwgICAvKiBtb2R1bGUgbmFtZSAgICAgICAgICAgKi8KKyAgICAgIDB4MTAwMDBMLCAgLyogdmVyc2lvbiAxLjAgb2YgZHJpdmVyICovCisgICAgICAweDIwMDAwTCwgIC8qIHJlcXVpcmVzIEZyZWVUeXBlIDIuMCAqLworCisgICAgICAwLAorCisgICAgICBjaWRfZHJpdmVyX2luaXQsCisgICAgICBjaWRfZHJpdmVyX2RvbmUsCisgICAgICBjaWRfZ2V0X2ludGVyZmFjZQorICAgIH0sCisKKyAgICAvKiB0aGVuIHRoZSBvdGhlciBmb250IGRyaXZlcnMgZmllbGRzICovCisgICAgc2l6ZW9mICggQ0lEX0ZhY2VSZWMgKSwKKyAgICBzaXplb2YgKCBDSURfU2l6ZVJlYyApLAorICAgIHNpemVvZiAoIENJRF9HbHlwaFNsb3RSZWMgKSwKKworICAgIGNpZF9mYWNlX2luaXQsCisgICAgY2lkX2ZhY2VfZG9uZSwKKworICAgIGNpZF9zaXplX2luaXQsCisgICAgY2lkX3NpemVfZG9uZSwKKyAgICBjaWRfc2xvdF9pbml0LAorICAgIGNpZF9zbG90X2RvbmUsCisKKyAgICBjaWRfc2xvdF9sb2FkX2dseXBoLAorCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogRlRfRmFjZV9HZXRLZXJuaW5nRnVuYyAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiBGVF9GYWNlX0F0dGFjaEZ1bmMgICAgICAqLworCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogRlRfRmFjZV9HZXRBZHZhbmNlc0Z1bmMgKi8KKworICAgIGNpZF9zaXplX3JlcXVlc3QsCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAgLyogRlRfU2l6ZV9TZWxlY3RGdW5jICAgICAgKi8KKyAgfTsKKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZHJpdmVyLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRyaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlOThiZjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9jaWRyaXZlci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNpZHJpdmVyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBIaWdoLWxldmVsIENJRCBkcml2ZXIgaW50ZXJmYWNlIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0NJRFJJVkVSX0hfXworI2RlZmluZSBfX0NJRFJJVkVSX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKyNlcnJvciAidGhpcyBtb2R1bGUgZG9lcyBub3Qgc3VwcG9ydCBQSUMgeWV0IgorI2VuZGlmCisKKworICBGVF9DQUxMQkFDS19UQUJMRQorICBjb25zdCBGVF9Ecml2ZXJfQ2xhc3NSZWMgIHQxY2lkX2RyaXZlcl9jbGFzczsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0NJRFJJVkVSX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvY2lkdG9rZW4uaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZHRva2VuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA0Y2IwOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2NpZHRva2VuLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGNpZHRva2VuLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBDSUQgdG9rZW4gZGVmaW5pdGlvbnMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAyLCAyMDAzLCAyMDA2LCAyMDA4LCAyMDA5IGJ5ICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBDSURfRmFjZUluZm9SZWMKKyN1bmRlZiAgVDFDT0RFCisjZGVmaW5lIFQxQ09ERSAgICAgICAgVDFfRklFTERfTE9DQVRJT05fQ0lEX0lORk8KKworICBUMV9GSUVMRF9LRVkgICAoICJDSURGb250TmFtZSIsICAgIGNpZF9mb250X25hbWUsIDAgKQorICBUMV9GSUVMRF9GSVhFRCAoICJDSURGb250VmVyc2lvbiIsIGNpZF92ZXJzaW9uLCAgIDAgKQorICBUMV9GSUVMRF9OVU0gICAoICJDSURGb250VHlwZSIsICAgIGNpZF9mb250X3R5cGUsIDAgKQorICBUMV9GSUVMRF9TVFJJTkcoICJSZWdpc3RyeSIsICAgICAgIHJlZ2lzdHJ5LCAgICAgIDAgKQorICBUMV9GSUVMRF9TVFJJTkcoICJPcmRlcmluZyIsICAgICAgIG9yZGVyaW5nLCAgICAgIDAgKQorICBUMV9GSUVMRF9OVU0gICAoICJTdXBwbGVtZW50IiwgICAgIHN1cHBsZW1lbnQsICAgIDAgKQorICBUMV9GSUVMRF9OVU0gICAoICJVSURCYXNlIiwgICAgICAgIHVpZF9iYXNlLCAgICAgIDAgKQorICBUMV9GSUVMRF9OVU0gICAoICJDSURNYXBPZmZzZXQiLCAgIGNpZG1hcF9vZmZzZXQsIDAgKQorICBUMV9GSUVMRF9OVU0gICAoICJGREJ5dGVzIiwgICAgICAgIGZkX2J5dGVzLCAgICAgIDAgKQorICBUMV9GSUVMRF9OVU0gICAoICJHREJ5dGVzIiwgICAgICAgIGdkX2J5dGVzLCAgICAgIDAgKQorICBUMV9GSUVMRF9OVU0gICAoICJDSURDb3VudCIsICAgICAgIGNpZF9jb3VudCwgICAgIDAgKQorCisKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgUFNfRm9udEluZm9SZWMKKyN1bmRlZiAgVDFDT0RFCisjZGVmaW5lIFQxQ09ERSAgICAgICAgVDFfRklFTERfTE9DQVRJT05fRk9OVF9JTkZPCisKKyAgVDFfRklFTERfU1RSSU5HKCAidmVyc2lvbiIsICAgICAgICAgICAgdmVyc2lvbiwgICAgICAgICAgICAgMCApCisgIFQxX0ZJRUxEX1NUUklORyggIk5vdGljZSIsICAgICAgICAgICAgIG5vdGljZSwgICAgICAgICAgICAgIDAgKQorICBUMV9GSUVMRF9TVFJJTkcoICJGdWxsTmFtZSIsICAgICAgICAgICBmdWxsX25hbWUsICAgICAgICAgICAwICkKKyAgVDFfRklFTERfU1RSSU5HKCAiRmFtaWx5TmFtZSIsICAgICAgICAgZmFtaWx5X25hbWUsICAgICAgICAgMCApCisgIFQxX0ZJRUxEX1NUUklORyggIldlaWdodCIsICAgICAgICAgICAgIHdlaWdodCwgICAgICAgICAgICAgIDAgKQorICBUMV9GSUVMRF9OVU0gICAoICJJdGFsaWNBbmdsZSIsICAgICAgICBpdGFsaWNfYW5nbGUsICAgICAgICAwICkKKyAgVDFfRklFTERfQk9PTCAgKCAiaXNGaXhlZFBpdGNoIiwgICAgICAgaXNfZml4ZWRfcGl0Y2gsICAgICAgMCApCisgIFQxX0ZJRUxEX05VTSAgICggIlVuZGVybGluZVBvc2l0aW9uIiwgIHVuZGVybGluZV9wb3NpdGlvbiwgIDAgKQorICBUMV9GSUVMRF9OVU0gICAoICJVbmRlcmxpbmVUaGlja25lc3MiLCB1bmRlcmxpbmVfdGhpY2tuZXNzLCAwICkKKworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBQU19Gb250RXh0cmFSZWMKKyN1bmRlZiAgVDFDT0RFCisjZGVmaW5lIFQxQ09ERSAgICAgICAgVDFfRklFTERfTE9DQVRJT05fRk9OVF9FWFRSQQorCisgIFQxX0ZJRUxEX05VTSAgICggIkZTVHlwZSIsICAgICAgICAgICAgIGZzX3R5cGUsICAgICAgICAgICAgIDAgKQorCisKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgQ0lEX0ZhY2VEaWN0UmVjCisjdW5kZWYgIFQxQ09ERQorI2RlZmluZSBUMUNPREUgICAgICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX0ZPTlRfRElDVAorCisgIFQxX0ZJRUxEX05VTSAgKCAiUGFpbnRUeXBlIiwgICAgICAgICAgcGFpbnRfdHlwZSwgICAgICAgICAgMCApCisgIFQxX0ZJRUxEX05VTSAgKCAiRm9udFR5cGUiLCAgICAgICAgICAgZm9udF90eXBlLCAgICAgICAgICAgMCApCisgIFQxX0ZJRUxEX05VTSAgKCAiU3Vick1hcE9mZnNldCIsICAgICAgc3Vicm1hcF9vZmZzZXQsICAgICAgMCApCisgIFQxX0ZJRUxEX05VTSAgKCAiU0RCeXRlcyIsICAgICAgICAgICAgc2RfYnl0ZXMsICAgICAgICAgICAgMCApCisgIFQxX0ZJRUxEX05VTSAgKCAiU3VickNvdW50IiwgICAgICAgICAgbnVtX3N1YnJzLCAgICAgICAgICAgMCApCisgIFQxX0ZJRUxEX05VTSAgKCAibGVuQnVpbGRDaGFyQXJyYXkiLCAgbGVuX2J1aWxkY2hhciwgICAgICAgMCApCisgIFQxX0ZJRUxEX0ZJWEVEKCAiRm9yY2VCb2xkVGhyZXNob2xkIiwgZm9yY2Vib2xkX3RocmVzaG9sZCwgMCApCisgIFQxX0ZJRUxEX0ZJWEVEKCAiU3Ryb2tlV2lkdGgiLCAgICAgICAgc3Ryb2tlX3dpZHRoLCAgICAgICAgMCApCisKKworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBQU19Qcml2YXRlUmVjCisjdW5kZWYgIFQxQ09ERQorI2RlZmluZSBUMUNPREUgICAgICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX1BSSVZBVEUKKworICBUMV9GSUVMRF9OVU0gICAgICAgKCAiVW5pcXVlSUQiLCAgICAgICAgIHVuaXF1ZV9pZCwgICAgICAwICkKKyAgVDFfRklFTERfTlVNICAgICAgICggImxlbklWIiwgICAgICAgICAgICBsZW5JViwgICAgICAgICAgMCApCisgIFQxX0ZJRUxEX05VTSAgICAgICAoICJMYW5ndWFnZUdyb3VwIiwgICAgbGFuZ3VhZ2VfZ3JvdXAsIDAgKQorICBUMV9GSUVMRF9OVU0gICAgICAgKCAicGFzc3dvcmQiLCAgICAgICAgIHBhc3N3b3JkLCAgICAgICAwICkKKworICBUMV9GSUVMRF9GSVhFRF8xMDAwKCAiQmx1ZVNjYWxlIiwgICAgICAgIGJsdWVfc2NhbGUsICAgICAwICkKKyAgVDFfRklFTERfTlVNICAgICAgICggIkJsdWVTaGlmdCIsICAgICAgICBibHVlX3NoaWZ0LCAgICAgMCApCisgIFQxX0ZJRUxEX05VTSAgICAgICAoICJCbHVlRnV6eiIsICAgICAgICAgYmx1ZV9mdXp6LCAgICAgIDAgKQorCisgIFQxX0ZJRUxEX05VTV9UQUJMRSAoICJCbHVlVmFsdWVzIiwgICAgICAgYmx1ZV92YWx1ZXMsICAgICAgICAxNCwgMCApCisgIFQxX0ZJRUxEX05VTV9UQUJMRSAoICJPdGhlckJsdWVzIiwgICAgICAgb3RoZXJfYmx1ZXMsICAgICAgICAxMCwgMCApCisgIFQxX0ZJRUxEX05VTV9UQUJMRSAoICJGYW1pbHlCbHVlcyIsICAgICAgZmFtaWx5X2JsdWVzLCAgICAgICAxNCwgMCApCisgIFQxX0ZJRUxEX05VTV9UQUJMRSAoICJGYW1pbHlPdGhlckJsdWVzIiwgZmFtaWx5X290aGVyX2JsdWVzLCAxMCwgMCApCisKKyAgVDFfRklFTERfTlVNX1RBQkxFMiggIlN0ZEhXIiwgICAgICAgICAgICBzdGFuZGFyZF93aWR0aCwgICAgICAxLCAwICkKKyAgVDFfRklFTERfTlVNX1RBQkxFMiggIlN0ZFZXIiwgICAgICAgICAgICBzdGFuZGFyZF9oZWlnaHQsICAgICAxLCAwICkKKyAgVDFfRklFTERfTlVNX1RBQkxFMiggIk1pbkZlYXR1cmUiLCAgICAgICBtaW5fZmVhdHVyZSwgICAgICAgICAyLCAwICkKKworICBUMV9GSUVMRF9OVU1fVEFCTEUgKCAiU3RlbVNuYXBIIiwgICAgICAgIHNuYXBfd2lkdGhzLCAgICAgICAgMTIsIDAgKQorICBUMV9GSUVMRF9OVU1fVEFCTEUgKCAiU3RlbVNuYXBWIiwgICAgICAgIHNuYXBfaGVpZ2h0cywgICAgICAgMTIsIDAgKQorCisgIFQxX0ZJRUxEX0JPT0wgICAgICAoICJGb3JjZUJvbGQiLCAgICAgICAgZm9yY2VfYm9sZCwgICAgICAgICAgMCApCisKKworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBGVF9CQm94CisjdW5kZWYgIFQxQ09ERQorI2RlZmluZSBUMUNPREUgICAgICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1gKKworICBUMV9GSUVMRF9CQk9YKCAiRm9udEJCb3giLCB4TWluLCAwICkKKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2Z4ZnRfdHlwZTFjaWQuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL2Z4ZnRfdHlwZTFjaWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTc1NTcxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvZnhmdF90eXBlMWNpZC5jCkBAIC0wLDAgKzEsMzMgQEAKKyNpZiAhZGVmaW5lZChfRlhGVF9WRVJTSU9OXykgfHwgX0ZYRlRfVkVSU0lPTl8gPT0gMjUwMQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHlwZTFjaWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIE9wZW5UeXBlIGRyaXZlciBjb21wb25lbnQgKGJvZHkgb25seSkuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjZGVmaW5lIEZUX01BS0VfT1BUSU9OX1NJTkdMRV9PQkpFQ1QKKyNkZWZpbmUgRlQyX0JVSUxEX0xJQlJBUlkKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJjaWRwYXJzZS5jIgorI2luY2x1ZGUgImNpZGxvYWQuYyIKKyNpbmNsdWRlICJjaWRvYmpzLmMiCisjaW5jbHVkZSAiY2lkcml2ZXIuYyIKKyNpbmNsdWRlICJjaWRnbG9hZC5jIgorCisKKy8qIEVORCAqLworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL21vZHVsZS5tayBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvY2lkL21vZHVsZS5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTMwYmZkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvbW9kdWxlLm1rCkBAIC0wLDAgKzEsMjMgQEAKKyMKKyMgRnJlZVR5cGUgMiBDSUQgbW9kdWxlIGRlZmluaXRpb24KKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDAsIDIwMDYgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKK0ZUTU9EVUxFX0hfQ09NTUFORFMgKz0gVFlQRTFDSURfRFJJVkVSCisKK2RlZmluZSBUWVBFMUNJRF9EUklWRVIKKyQoT1BFTl9EUklWRVIpIEZUX0RyaXZlcl9DbGFzc1JlYywgdDFjaWRfZHJpdmVyX2NsYXNzICQoQ0xPU0VfRFJJVkVSKQorJChFQ0hPX0RSSVZFUiljaWQgICAgICAgJChFQ0hPX0RSSVZFUl9ERVNDKVBvc3RzY3JpcHQgQ0lELWtleWVkIGZvbnRzLCBubyBrbm93biBleHRlbnNpb24kKEVDSE9fRFJJVkVSX0RPTkUpCitlbmRlZgorCisjIEVPRgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvcnVsZXMubWsgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL2NpZC9ydWxlcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzYyNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9jaWQvcnVsZXMubWsKQEAgLTAsMCArMSw3MCBAQAorIworIyBGcmVlVHlwZSAyIENJRCBkcml2ZXIgY29uZmlndXJhdGlvbiBydWxlcworIworCisKKyMgQ29weXJpZ2h0IDE5OTYtMjAwMCwgMjAwMSwgMjAwMyBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKKworIyBDSUQgZHJpdmVyIGRpcmVjdG9yeQorIworQ0lEX0RJUiA6PSAkKFNSQ19ESVIpL2NpZAorCisKK0NJRF9DT01QSUxFIDo9ICQoRlRfQ09NUElMRSkgJEkkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCQoQ0lEX0RJUikpCisKKworIyBDSUQgZHJpdmVyIHNvdXJjZXMgKGkuZS4sIEMgZmlsZXMpCisjCitDSURfRFJWX1NSQyA6PSAkKENJRF9ESVIpL2NpZHBhcnNlLmMgXAorICAgICAgICAgICAgICAgJChDSURfRElSKS9jaWRsb2FkLmMgIFwKKyAgICAgICAgICAgICAgICQoQ0lEX0RJUikvY2lkcml2ZXIuYyBcCisgICAgICAgICAgICAgICAkKENJRF9ESVIpL2NpZGdsb2FkLmMgXAorICAgICAgICAgICAgICAgJChDSURfRElSKS9jaWRvYmpzLmMKKworIyBDSUQgZHJpdmVyIGhlYWRlcnMKKyMKK0NJRF9EUlZfSCA6PSAkKENJRF9EUlZfU1JDOiUuYz0lLmgpIFwKKyAgICAgICAgICAgICAkKENJRF9ESVIpL2NpZHRva2VuLmggIFwKKyAgICAgICAgICAgICAkKENJRF9ESVIpL2NpZGVycnMuaAorCisKKyMgQ0lEIGRyaXZlciBvYmplY3QocykKKyMKKyMgICBDSURfRFJWX09CSl9NIGlzIHVzZWQgZHVyaW5nIGBtdWx0aScgYnVpbGRzCisjICAgQ0lEX0RSVl9PQkpfUyBpcyB1c2VkIGR1cmluZyBgc2luZ2xlJyBidWlsZHMKKyMKK0NJRF9EUlZfT0JKX00gOj0gJChDSURfRFJWX1NSQzokKENJRF9ESVIpLyUuYz0kKE9CSl9ESVIpLyUuJE8pCitDSURfRFJWX09CSl9TIDo9ICQoT0JKX0RJUikvdHlwZTFjaWQuJE8KKworIyBDSUQgZHJpdmVyIHNvdXJjZSBmaWxlIGZvciBzaW5nbGUgYnVpbGQKKyMKK0NJRF9EUlZfU1JDX1MgOj0gJChDSURfRElSKS90eXBlMWNpZC5jCisKKworIyBDSUQgZHJpdmVyIC0gc2luZ2xlIG9iamVjdAorIworJChDSURfRFJWX09CSl9TKTogJChDSURfRFJWX1NSQ19TKSAkKENJRF9EUlZfU1JDKSAkKEZSRUVUWVBFX0gpICQoQ0lEX0RSVl9IKQorCSQoQ0lEX0NPTVBJTEUpICRUJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkQCAkKENJRF9EUlZfU1JDX1MpKQorCisKKyMgQ0lEIGRyaXZlciAtIG11bHRpcGxlIG9iamVjdHMKKyMKKyQoT0JKX0RJUikvJS4kTzogJChDSURfRElSKS8lLmMgJChGUkVFVFlQRV9IKSAkKENJRF9EUlZfSCkKKwkkKENJRF9DT01QSUxFKSAkVCQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJEAgJDwpCisKKworIyB1cGRhdGUgbWFpbiBkcml2ZXIgb2JqZWN0IGxpc3RzCisjCitEUlZfT0JKU19TICs9ICQoQ0lEX0RSVl9PQkpfUykKK0RSVl9PQkpTX00gKz0gJChDSURfRFJWX09CSl9NKQorCisKKyMgRU9GCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L0phbWZpbGUgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L0phbWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFlZGVkOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvSmFtZmlsZQpAQCAtMCwwICsxLDMxIEBACisjIEZyZWVUeXBlIDIgc3JjL3BzYXV4IEphbWZpbGUKKyMKKyMgQ29weXJpZ2h0IDIwMDEsIDIwMDIgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCitTdWJEaXIgIEZUMl9UT1AgJChGVDJfU1JDX0RJUikgcHNhdXggOworCit7CisgIGxvY2FsICBfc291cmNlcyA7CisKKyAgaWYgJChGVDJfTVVMVEkpCisgIHsKKyAgICBfc291cmNlcyA9IHBzYXV4bW9kIHBzb2JqcyAgIHQxZGVjb2RlIHQxY21hcAorICAgICAgICAgICAgICAgcHNjb252ICAgYWZtcGFyc2UKKyAgICAgICAgICAgICAgIDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBfc291cmNlcyA9IHBzYXV4IDsKKyAgfQorCisgIExpYnJhcnkgICQoRlQyX0xJQikgOiAkKF9zb3VyY2VzKS5jIDsKK30KKworIyBlbmQgb2Ygc3JjL3BzYXV4IEphbWZpbGUKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvYWZtcGFyc2UuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvYWZtcGFyc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTFjZDNkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9hZm1wYXJzZS5jCkBAIC0wLDAgKzEsOTY0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBhZm1wYXJzZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQUZNIHBhcnNlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDYtMjAxMCwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgiCisKKyNpbmNsdWRlICJhZm1wYXJzZS5oIgorI2luY2x1ZGUgInBzY29udi5oIgorCisjaW5jbHVkZSAicHNhdXhlcnIuaCIKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEFGTV9TdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogVGhlIHVzZSBvZiBBRk1fU3RyZWFtIGlzIGxhcmdlbHkgaW5zcGlyZWQgYnkgcGFyc2VBRk0uW2NoXSBmcm9tIHQxbGliLiAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIGVudW0KKyAgeworICAgIEFGTV9TVFJFQU1fU1RBVFVTX05PUk1BTCwKKyAgICBBRk1fU1RSRUFNX1NUQVRVU19FT0MsCisgICAgQUZNX1NUUkVBTV9TVEFUVVNfRU9MLAorICAgIEFGTV9TVFJFQU1fU1RBVFVTX0VPRgorICB9OworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEFGTV9TdHJlYW1SZWNfCisgIHsKKyAgICBGVF9CeXRlKiAgY3Vyc29yOworICAgIEZUX0J5dGUqICBiYXNlOworICAgIEZUX0J5dGUqICBsaW1pdDsKKworICAgIEZUX0ludCAgICBzdGF0dXM7CisKKyAgfSBBRk1fU3RyZWFtUmVjOworCisKKyNpZm5kZWYgRU9GCisjZGVmaW5lIEVPRiAtMQorI2VuZGlmCisKKworICAvKiB0aGlzIHdvcmtzIGJlY2F1c2UgZW1wdHkgbGluZXMgYXJlIGlnbm9yZWQgKi8KKyNkZWZpbmUgQUZNX0lTX05FV0xJTkUoIGNoICkgICggKGNoKSA9PSAnXHInIHx8IChjaCkgPT0gJ1xuJyApCisKKyNkZWZpbmUgQUZNX0lTX0VPRiggY2ggKSAgICAgICggKGNoKSA9PSBFT0YgIHx8IChjaCkgPT0gJ1x4MWEnICkKKyNkZWZpbmUgQUZNX0lTX1NQQUNFKCBjaCApICAgICggKGNoKSA9PSAnICcgIHx8IChjaCkgPT0gJ1x0JyApCisKKyAgLyogY29sdW1uIHNlcGFyYXRvcjsgdGhlcmUgaXMgbm8gYGNvbHVtbicgaW4gdGhlIHNwZWMgYWN0dWFsbHkgKi8KKyNkZWZpbmUgQUZNX0lTX1NFUCggY2ggKSAgICAgICggKGNoKSA9PSAnOycgKQorCisjZGVmaW5lIEFGTV9HRVRDKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKCAoc3RyZWFtKS0+Y3Vyc29yIDwgKHN0cmVhbSktPmxpbWl0ICkgPyAqKHN0cmVhbSktPmN1cnNvcisrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRU9GICkKKworI2RlZmluZSBBRk1fU1RSRUFNX0tFWV9CRUdJTiggc3RyZWFtICkgICAgXAorICAgICAgICAgIChjaGFyKikoIChzdHJlYW0pLT5jdXJzb3IgLSAxICkKKworI2RlZmluZSBBRk1fU1RSRUFNX0tFWV9MRU4oIHN0cmVhbSwga2V5ICkgICAgICAgXAorICAgICAgICAgICggKGNoYXIqKShzdHJlYW0pLT5jdXJzb3IgLSBrZXkgLSAxICkKKworI2RlZmluZSBBRk1fU1RBVFVTX0VPQyggc3RyZWFtICkgXAorICAgICAgICAgICggKHN0cmVhbSktPnN0YXR1cyA+PSBBRk1fU1RSRUFNX1NUQVRVU19FT0MgKQorCisjZGVmaW5lIEFGTV9TVEFUVVNfRU9MKCBzdHJlYW0gKSBcCisgICAgICAgICAgKCAoc3RyZWFtKS0+c3RhdHVzID49IEFGTV9TVFJFQU1fU1RBVFVTX0VPTCApCisKKyNkZWZpbmUgQUZNX1NUQVRVU19FT0YoIHN0cmVhbSApIFwKKyAgICAgICAgICAoIChzdHJlYW0pLT5zdGF0dXMgPj0gQUZNX1NUUkVBTV9TVEFUVVNfRU9GICkKKworCisgIHN0YXRpYyBpbnQKKyAgYWZtX3N0cmVhbV9za2lwX3NwYWNlcyggQUZNX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIGludCAgY2ggPSAwOyAgLyogbWFrZSBzdHVwaWQgY29tcGlsZXIgaGFwcHkgKi8KKworCisgICAgaWYgKCBBRk1fU1RBVFVTX0VPQyggc3RyZWFtICkgKQorICAgICAgcmV0dXJuICc7JzsKKworICAgIHdoaWxlICggMSApCisgICAgeworICAgICAgY2ggPSBBRk1fR0VUQygpOworICAgICAgaWYgKCAhQUZNX0lTX1NQQUNFKCBjaCApICkKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCBBRk1fSVNfTkVXTElORSggY2ggKSApCisgICAgICBzdHJlYW0tPnN0YXR1cyA9IEFGTV9TVFJFQU1fU1RBVFVTX0VPTDsKKyAgICBlbHNlIGlmICggQUZNX0lTX1NFUCggY2ggKSApCisgICAgICBzdHJlYW0tPnN0YXR1cyA9IEFGTV9TVFJFQU1fU1RBVFVTX0VPQzsKKyAgICBlbHNlIGlmICggQUZNX0lTX0VPRiggY2ggKSApCisgICAgICBzdHJlYW0tPnN0YXR1cyA9IEFGTV9TVFJFQU1fU1RBVFVTX0VPRjsKKworICAgIHJldHVybiBjaDsKKyAgfQorCisKKyAgLyogcmVhZCBhIGtleSBvciB2YWx1ZSBpbiBjdXJyZW50IGNvbHVtbiAqLworICBzdGF0aWMgY2hhcioKKyAgYWZtX3N0cmVhbV9yZWFkX29uZSggQUZNX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIGNoYXIqICBzdHI7CisKKworICAgIGFmbV9zdHJlYW1fc2tpcF9zcGFjZXMoIHN0cmVhbSApOworICAgIGlmICggQUZNX1NUQVRVU19FT0MoIHN0cmVhbSApICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RyID0gQUZNX1NUUkVBTV9LRVlfQkVHSU4oIHN0cmVhbSApOworCisgICAgd2hpbGUgKCAxICkKKyAgICB7CisgICAgICBpbnQgIGNoID0gQUZNX0dFVEMoKTsKKworCisgICAgICBpZiAoIEFGTV9JU19TUEFDRSggY2ggKSApCisgICAgICAgIGJyZWFrOworICAgICAgZWxzZSBpZiAoIEFGTV9JU19ORVdMSU5FKCBjaCApICkKKyAgICAgIHsKKyAgICAgICAgc3RyZWFtLT5zdGF0dXMgPSBBRk1fU1RSRUFNX1NUQVRVU19FT0w7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZWxzZSBpZiAoIEFGTV9JU19TRVAoIGNoICkgKQorICAgICAgeworICAgICAgICBzdHJlYW0tPnN0YXR1cyA9IEFGTV9TVFJFQU1fU1RBVFVTX0VPQzsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBlbHNlIGlmICggQUZNX0lTX0VPRiggY2ggKSApCisgICAgICB7CisgICAgICAgIHN0cmVhbS0+c3RhdHVzID0gQUZNX1NUUkVBTV9TVEFUVVNfRU9GOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3RyOworICB9CisKKworICAvKiByZWFkIGEgc3RyaW5nIChpLmUuLCByZWFkIHRvIEVPTCkgKi8KKyAgc3RhdGljIGNoYXIqCisgIGFmbV9zdHJlYW1fcmVhZF9zdHJpbmcoIEFGTV9TdHJlYW0gIHN0cmVhbSApCisgIHsKKyAgICBjaGFyKiAgc3RyOworCisKKyAgICBhZm1fc3RyZWFtX3NraXBfc3BhY2VzKCBzdHJlYW0gKTsKKyAgICBpZiAoIEFGTV9TVEFUVVNfRU9MKCBzdHJlYW0gKSApCisgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IEFGTV9TVFJFQU1fS0VZX0JFR0lOKCBzdHJlYW0gKTsKKworICAgIC8qIHNjYW4gdG8gZW9sICovCisgICAgd2hpbGUgKCAxICkKKyAgICB7CisgICAgICBpbnQgIGNoID0gQUZNX0dFVEMoKTsKKworCisgICAgICBpZiAoIEFGTV9JU19ORVdMSU5FKCBjaCApICkKKyAgICAgIHsKKyAgICAgICAgc3RyZWFtLT5zdGF0dXMgPSBBRk1fU1RSRUFNX1NUQVRVU19FT0w7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZWxzZSBpZiAoIEFGTV9JU19FT0YoIGNoICkgKQorICAgICAgeworICAgICAgICBzdHJlYW0tPnN0YXR1cyA9IEFGTV9TVFJFQU1fU1RBVFVTX0VPRjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN0cjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBRk1fUGFyc2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIC8qIGFsbCBrZXlzIGRlZmluZWQgaW4gQ2guIDctMTAgb2YgNTAwNC5BRk1fU3BlYy5wZGYgKi8KKyAgdHlwZWRlZiBlbnVtICBBRk1fVG9rZW5fCisgIHsKKyAgICBBRk1fVE9LRU5fQVNDRU5ERVIsCisgICAgQUZNX1RPS0VOX0FYSVNMQUJFTCwKKyAgICBBRk1fVE9LRU5fQVhJU1RZUEUsCisgICAgQUZNX1RPS0VOX0IsCisgICAgQUZNX1RPS0VOX0JMRU5EQVhJU1RZUEVTLAorICAgIEFGTV9UT0tFTl9CTEVORERFU0lHTk1BUCwKKyAgICBBRk1fVE9LRU5fQkxFTkRERVNJR05QT1NJVElPTlMsCisgICAgQUZNX1RPS0VOX0MsCisgICAgQUZNX1RPS0VOX0NDLAorICAgIEFGTV9UT0tFTl9DSCwKKyAgICBBRk1fVE9LRU5fQ0FQSEVJR0hULAorICAgIEFGTV9UT0tFTl9DSEFSV0lEVEgsCisgICAgQUZNX1RPS0VOX0NIQVJBQ1RFUlNFVCwKKyAgICBBRk1fVE9LRU5fQ0hBUkFDVEVSUywKKyAgICBBRk1fVE9LRU5fREVTQ0VOREVSLAorICAgIEFGTV9UT0tFTl9FTkNPRElOR1NDSEVNRSwKKyAgICBBRk1fVE9LRU5fRU5EQVhJUywKKyAgICBBRk1fVE9LRU5fRU5EQ0hBUk1FVFJJQ1MsCisgICAgQUZNX1RPS0VOX0VORENPTVBPU0lURVMsCisgICAgQUZNX1RPS0VOX0VORERJUkVDVElPTiwKKyAgICBBRk1fVE9LRU5fRU5ERk9OVE1FVFJJQ1MsCisgICAgQUZNX1RPS0VOX0VOREtFUk5EQVRBLAorICAgIEFGTV9UT0tFTl9FTkRLRVJOUEFJUlMsCisgICAgQUZNX1RPS0VOX0VORFRSQUNLS0VSTiwKKyAgICBBRk1fVE9LRU5fRVNDQ0hBUiwKKyAgICBBRk1fVE9LRU5fRkFNSUxZTkFNRSwKKyAgICBBRk1fVE9LRU5fRk9OVEJCT1gsCisgICAgQUZNX1RPS0VOX0ZPTlROQU1FLAorICAgIEFGTV9UT0tFTl9GVUxMTkFNRSwKKyAgICBBRk1fVE9LRU5fSVNCQVNFRk9OVCwKKyAgICBBRk1fVE9LRU5fSVNDSURGT05ULAorICAgIEFGTV9UT0tFTl9JU0ZJWEVEUElUQ0gsCisgICAgQUZNX1RPS0VOX0lTRklYRURWLAorICAgIEFGTV9UT0tFTl9JVEFMSUNBTkdMRSwKKyAgICBBRk1fVE9LRU5fS1AsCisgICAgQUZNX1RPS0VOX0tQSCwKKyAgICBBRk1fVE9LRU5fS1BYLAorICAgIEFGTV9UT0tFTl9LUFksCisgICAgQUZNX1RPS0VOX0wsCisgICAgQUZNX1RPS0VOX01BUFBJTkdTQ0hFTUUsCisgICAgQUZNX1RPS0VOX01FVFJJQ1NTRVRTLAorICAgIEFGTV9UT0tFTl9OLAorICAgIEFGTV9UT0tFTl9OT1RJQ0UsCisgICAgQUZNX1RPS0VOX1BDQywKKyAgICBBRk1fVE9LRU5fU1RBUlRBWElTLAorICAgIEFGTV9UT0tFTl9TVEFSVENIQVJNRVRSSUNTLAorICAgIEFGTV9UT0tFTl9TVEFSVENPTVBPU0lURVMsCisgICAgQUZNX1RPS0VOX1NUQVJURElSRUNUSU9OLAorICAgIEFGTV9UT0tFTl9TVEFSVEZPTlRNRVRSSUNTLAorICAgIEFGTV9UT0tFTl9TVEFSVEtFUk5EQVRBLAorICAgIEFGTV9UT0tFTl9TVEFSVEtFUk5QQUlSUywKKyAgICBBRk1fVE9LRU5fU1RBUlRLRVJOUEFJUlMwLAorICAgIEFGTV9UT0tFTl9TVEFSVEtFUk5QQUlSUzEsCisgICAgQUZNX1RPS0VOX1NUQVJUVFJBQ0tLRVJOLAorICAgIEFGTV9UT0tFTl9TVERIVywKKyAgICBBRk1fVE9LRU5fU1REVlcsCisgICAgQUZNX1RPS0VOX1RSQUNLS0VSTiwKKyAgICBBRk1fVE9LRU5fVU5ERVJMSU5FUE9TSVRJT04sCisgICAgQUZNX1RPS0VOX1VOREVSTElORVRISUNLTkVTUywKKyAgICBBRk1fVE9LRU5fVlYsCisgICAgQUZNX1RPS0VOX1ZWRUNUT1IsCisgICAgQUZNX1RPS0VOX1ZFUlNJT04sCisgICAgQUZNX1RPS0VOX1csCisgICAgQUZNX1RPS0VOX1cwLAorICAgIEFGTV9UT0tFTl9XMFgsCisgICAgQUZNX1RPS0VOX1cwWSwKKyAgICBBRk1fVE9LRU5fVzEsCisgICAgQUZNX1RPS0VOX1cxWCwKKyAgICBBRk1fVE9LRU5fVzFZLAorICAgIEFGTV9UT0tFTl9XWCwKKyAgICBBRk1fVE9LRU5fV1ksCisgICAgQUZNX1RPS0VOX1dFSUdIVCwKKyAgICBBRk1fVE9LRU5fV0VJR0hUVkVDVE9SLAorICAgIEFGTV9UT0tFTl9YSEVJR0hULAorICAgIE5fQUZNX1RPS0VOUywKKyAgICBBRk1fVE9LRU5fVU5LTk9XTgorCisgIH0gQUZNX1Rva2VuOworCisKKyAgc3RhdGljIGNvbnN0IGNoYXIqICBjb25zdCBhZm1fa2V5X3RhYmxlW05fQUZNX1RPS0VOU10gPQorICB7CisgICAgIkFzY2VuZGVyIiwKKyAgICAiQXhpc0xhYmVsIiwKKyAgICAiQXhpc1R5cGUiLAorICAgICJCIiwKKyAgICAiQmxlbmRBeGlzVHlwZXMiLAorICAgICJCbGVuZERlc2lnbk1hcCIsCisgICAgIkJsZW5kRGVzaWduUG9zaXRpb25zIiwKKyAgICAiQyIsCisgICAgIkNDIiwKKyAgICAiQ0giLAorICAgICJDYXBIZWlnaHQiLAorICAgICJDaGFyV2lkdGgiLAorICAgICJDaGFyYWN0ZXJTZXQiLAorICAgICJDaGFyYWN0ZXJzIiwKKyAgICAiRGVzY2VuZGVyIiwKKyAgICAiRW5jb2RpbmdTY2hlbWUiLAorICAgICJFbmRBeGlzIiwKKyAgICAiRW5kQ2hhck1ldHJpY3MiLAorICAgICJFbmRDb21wb3NpdGVzIiwKKyAgICAiRW5kRGlyZWN0aW9uIiwKKyAgICAiRW5kRm9udE1ldHJpY3MiLAorICAgICJFbmRLZXJuRGF0YSIsCisgICAgIkVuZEtlcm5QYWlycyIsCisgICAgIkVuZFRyYWNrS2VybiIsCisgICAgIkVzY0NoYXIiLAorICAgICJGYW1pbHlOYW1lIiwKKyAgICAiRm9udEJCb3giLAorICAgICJGb250TmFtZSIsCisgICAgIkZ1bGxOYW1lIiwKKyAgICAiSXNCYXNlRm9udCIsCisgICAgIklzQ0lERm9udCIsCisgICAgIklzRml4ZWRQaXRjaCIsCisgICAgIklzRml4ZWRWIiwKKyAgICAiSXRhbGljQW5nbGUiLAorICAgICJLUCIsCisgICAgIktQSCIsCisgICAgIktQWCIsCisgICAgIktQWSIsCisgICAgIkwiLAorICAgICJNYXBwaW5nU2NoZW1lIiwKKyAgICAiTWV0cmljc1NldHMiLAorICAgICJOIiwKKyAgICAiTm90aWNlIiwKKyAgICAiUENDIiwKKyAgICAiU3RhcnRBeGlzIiwKKyAgICAiU3RhcnRDaGFyTWV0cmljcyIsCisgICAgIlN0YXJ0Q29tcG9zaXRlcyIsCisgICAgIlN0YXJ0RGlyZWN0aW9uIiwKKyAgICAiU3RhcnRGb250TWV0cmljcyIsCisgICAgIlN0YXJ0S2VybkRhdGEiLAorICAgICJTdGFydEtlcm5QYWlycyIsCisgICAgIlN0YXJ0S2VyblBhaXJzMCIsCisgICAgIlN0YXJ0S2VyblBhaXJzMSIsCisgICAgIlN0YXJ0VHJhY2tLZXJuIiwKKyAgICAiU3RkSFciLAorICAgICJTdGRWVyIsCisgICAgIlRyYWNrS2VybiIsCisgICAgIlVuZGVybGluZVBvc2l0aW9uIiwKKyAgICAiVW5kZXJsaW5lVGhpY2tuZXNzIiwKKyAgICAiVlYiLAorICAgICJWVmVjdG9yIiwKKyAgICAiVmVyc2lvbiIsCisgICAgIlciLAorICAgICJXMCIsCisgICAgIlcwWCIsCisgICAgIlcwWSIsCisgICAgIlcxIiwKKyAgICAiVzFYIiwKKyAgICAiVzFZIiwKKyAgICAiV1giLAorICAgICJXWSIsCisgICAgIldlaWdodCIsCisgICAgIldlaWdodFZlY3RvciIsCisgICAgIlhIZWlnaHQiCisgIH07CisKKworICAvKgorICAgKiBgYWZtX3BhcnNlcl9yZWFkX3ZhbHMnIGFuZCBgYWZtX3BhcnNlcl9uZXh0X2tleScgcHJvdmlkZQorICAgKiBoaWdoLWxldmVsIG9wZXJhdGlvbnMgdG8gYW4gQUZNX1N0cmVhbS4gIFRoZSByZXN0IG9mIHRoZQorICAgKiBwYXJzZXIgZnVuY3Rpb25zIHNob3VsZCB1c2UgdGhlbSB3aXRob3V0IGFjY2Vzc2luZyB0aGUKKyAgICogQUZNX1N0cmVhbSBkaXJlY3RseS4KKyAgICovCisKKyAgRlRfTE9DQUxfREVGKCBGVF9JbnQgKQorICBhZm1fcGFyc2VyX3JlYWRfdmFscyggQUZNX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgQUZNX1ZhbHVlICAgdmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIG4gKQorICB7CisgICAgQUZNX1N0cmVhbSAgc3RyZWFtID0gcGFyc2VyLT5zdHJlYW07CisgICAgY2hhciogICAgICAgc3RyOworICAgIEZUX1VJbnQgICAgIGk7CisKKworICAgIGlmICggbiA+IEFGTV9NQVhfQVJHVU1FTlRTICkKKyAgICAgIHJldHVybiAwOworCisgICAgZm9yICggaSA9IDA7IGkgPCBuOyBpKysgKQorICAgIHsKKyAgICAgIEZUX09mZnNldCAgbGVuOworICAgICAgQUZNX1ZhbHVlICB2YWwgPSB2YWxzICsgaTsKKworCisgICAgICBpZiAoIHZhbC0+dHlwZSA9PSBBRk1fVkFMVUVfVFlQRV9TVFJJTkcgKQorICAgICAgICBzdHIgPSBhZm1fc3RyZWFtX3JlYWRfc3RyaW5nKCBzdHJlYW0gKTsKKyAgICAgIGVsc2UKKyAgICAgICAgc3RyID0gYWZtX3N0cmVhbV9yZWFkX29uZSggc3RyZWFtICk7CisKKyAgICAgIGlmICggIXN0ciApCisgICAgICAgIGJyZWFrOworCisgICAgICBsZW4gPSBBRk1fU1RSRUFNX0tFWV9MRU4oIHN0cmVhbSwgc3RyICk7CisKKyAgICAgIHN3aXRjaCAoIHZhbC0+dHlwZSApCisgICAgICB7CisgICAgICBjYXNlIEFGTV9WQUxVRV9UWVBFX1NUUklORzoKKyAgICAgIGNhc2UgQUZNX1ZBTFVFX1RZUEVfTkFNRToKKyAgICAgICAgeworICAgICAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gcGFyc2VyLT5tZW1vcnk7CisgICAgICAgICAgRlRfRXJyb3IgICBlcnJvcjsKKworCisgICAgICAgICAgaWYgKCAhRlRfUUFMTE9DKCB2YWwtPnUucywgbGVuICsgMSApICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBmdF9tZW1jcHkoIHZhbC0+dS5zLCBzdHIsIGxlbiApOworICAgICAgICAgICAgdmFsLT51LnNbbGVuXSA9ICdcMCc7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEFGTV9WQUxVRV9UWVBFX0ZJWEVEOgorICAgICAgICB2YWwtPnUuZiA9IFBTX0NvbnZfVG9GaXhlZCggKEZUX0J5dGUqKikodm9pZCopJnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9CeXRlKilzdHIgKyBsZW4sIDAgKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgQUZNX1ZBTFVFX1RZUEVfSU5URUdFUjoKKyAgICAgICAgdmFsLT51LmkgPSBQU19Db252X1RvSW50KCAoRlRfQnl0ZSoqKSh2b2lkKikmc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9CeXRlKilzdHIgKyBsZW4gKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgQUZNX1ZBTFVFX1RZUEVfQk9PTDoKKyAgICAgICAgdmFsLT51LmIgPSBGVF9CT09MKCBsZW4gPT0gNCAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFmdF9zdHJuY21wKCBzdHIsICJ0cnVlIiwgNCApICk7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEFGTV9WQUxVRV9UWVBFX0lOREVYOgorICAgICAgICBpZiAoIHBhcnNlci0+Z2V0X2luZGV4ICkKKyAgICAgICAgICB2YWwtPnUuaSA9IHBhcnNlci0+Z2V0X2luZGV4KCBzdHIsIGxlbiwgcGFyc2VyLT51c2VyX2RhdGEgKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHZhbC0+dS5pID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggY2hhciogKQorICBhZm1fcGFyc2VyX25leHRfa2V5KCBBRk1fUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX09mZnNldCogIGxlbiApCisgIHsKKyAgICBBRk1fU3RyZWFtICBzdHJlYW0gPSBwYXJzZXItPnN0cmVhbTsKKyAgICBjaGFyKiAgICAgICBrZXkgICAgPSAwOyAgLyogbWFrZSBzdHVwaWQgY29tcGlsZXIgaGFwcHkgKi8KKworCisgICAgaWYgKCBsaW5lICkKKyAgICB7CisgICAgICB3aGlsZSAoIDEgKQorICAgICAgeworICAgICAgICAvKiBza2lwIGN1cnJlbnQgbGluZSAqLworICAgICAgICBpZiAoICFBRk1fU1RBVFVTX0VPTCggc3RyZWFtICkgKQorICAgICAgICAgIGFmbV9zdHJlYW1fcmVhZF9zdHJpbmcoIHN0cmVhbSApOworCisgICAgICAgIHN0cmVhbS0+c3RhdHVzID0gQUZNX1NUUkVBTV9TVEFUVVNfTk9STUFMOworICAgICAgICBrZXkgPSBhZm1fc3RyZWFtX3JlYWRfb25lKCBzdHJlYW0gKTsKKworICAgICAgICAvKiBza2lwIGVtcHR5IGxpbmUgKi8KKyAgICAgICAgaWYgKCAha2V5ICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgIUFGTV9TVEFUVVNfRU9GKCBzdHJlYW0gKSAmJgorICAgICAgICAgICAgIEFGTV9TVEFUVVNfRU9MKCBzdHJlYW0gKSAgKQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgd2hpbGUgKCAxICkKKyAgICAgIHsKKyAgICAgICAgLyogc2tpcCBjdXJyZW50IGNvbHVtbiAqLworICAgICAgICB3aGlsZSAoICFBRk1fU1RBVFVTX0VPQyggc3RyZWFtICkgKQorICAgICAgICAgIGFmbV9zdHJlYW1fcmVhZF9vbmUoIHN0cmVhbSApOworCisgICAgICAgIHN0cmVhbS0+c3RhdHVzID0gQUZNX1NUUkVBTV9TVEFUVVNfTk9STUFMOworICAgICAgICBrZXkgPSBhZm1fc3RyZWFtX3JlYWRfb25lKCBzdHJlYW0gKTsKKworICAgICAgICAvKiBza2lwIGVtcHR5IGNvbHVtbiAqLworICAgICAgICBpZiAoICFrZXkgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAhQUZNX1NUQVRVU19FT0YoIHN0cmVhbSApICYmCisgICAgICAgICAgICAgQUZNX1NUQVRVU19FT0MoIHN0cmVhbSApICApCisgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCBsZW4gKQorICAgICAgKmxlbiA9ICgga2V5ICkgPyAoRlRfT2Zmc2V0KUFGTV9TVFJFQU1fS0VZX0xFTiggc3RyZWFtLCBrZXkgKQorICAgICAgICAgICAgICAgICAgICAgOiAwOworCisgICAgcmV0dXJuIGtleTsKKyAgfQorCisKKyAgc3RhdGljIEFGTV9Ub2tlbgorICBhZm1fdG9rZW5pemUoIGNvbnN0IGNoYXIqICBrZXksCisgICAgICAgICAgICAgICAgRlRfT2Zmc2V0ICAgIGxlbiApCisgIHsKKyAgICBpbnQgIG47CisKKworICAgIGZvciAoIG4gPSAwOyBuIDwgTl9BRk1fVE9LRU5TOyBuKysgKQorICAgIHsKKyAgICAgIGlmICggKiggYWZtX2tleV90YWJsZVtuXSApID09ICprZXkgKQorICAgICAgeworICAgICAgICBmb3IgKCA7IG4gPCBOX0FGTV9UT0tFTlM7IG4rKyApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoICooIGFmbV9rZXlfdGFibGVbbl0gKSAhPSAqa2V5ICkKKyAgICAgICAgICAgIHJldHVybiBBRk1fVE9LRU5fVU5LTk9XTjsKKworICAgICAgICAgIGlmICggZnRfc3RybmNtcCggYWZtX2tleV90YWJsZVtuXSwga2V5LCBsZW4gKSA9PSAwICkKKyAgICAgICAgICAgIHJldHVybiAoQUZNX1Rva2VuKSBuOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEFGTV9UT0tFTl9VTktOT1dOOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgYWZtX3BhcnNlcl9pbml0KCBBRk1fUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgIGJhc2UsCisgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgbGltaXQgKQorICB7CisgICAgQUZNX1N0cmVhbSAgc3RyZWFtID0gTlVMTDsKKyAgICBGVF9FcnJvciAgICBlcnJvcjsKKworCisgICAgaWYgKCBGVF9ORVcoIHN0cmVhbSApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIHN0cmVhbS0+Y3Vyc29yID0gc3RyZWFtLT5iYXNlID0gYmFzZTsKKyAgICBzdHJlYW0tPmxpbWl0ICA9IGxpbWl0OworCisgICAgLyogZG9uJ3Qgc2tpcCB0aGUgZmlyc3QgbGluZSBkdXJpbmcgdGhlIGZpcnN0IGNhbGwgKi8KKyAgICBzdHJlYW0tPnN0YXR1cyA9IEFGTV9TVFJFQU1fU1RBVFVTX0VPTDsKKworICAgIHBhcnNlci0+bWVtb3J5ICAgID0gbWVtb3J5OworICAgIHBhcnNlci0+c3RyZWFtICAgID0gc3RyZWFtOworICAgIHBhcnNlci0+Rm9udEluZm8gID0gTlVMTDsKKyAgICBwYXJzZXItPmdldF9pbmRleCA9IE5VTEw7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9MT0NBTCggdm9pZCApCisgIGFmbV9wYXJzZXJfZG9uZSggQUZNX1BhcnNlciAgcGFyc2VyICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gcGFyc2VyLT5tZW1vcnk7CisKKworICAgIEZUX0ZSRUUoIHBhcnNlci0+c3RyZWFtICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBhZm1fcGFyc2VyX3JlYWRfaW50KCBBRk1fUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCogICAgIGFpbnQgKQorICB7CisgICAgQUZNX1ZhbHVlUmVjICB2YWw7CisKKworICAgIHZhbC50eXBlID0gQUZNX1ZBTFVFX1RZUEVfSU5URUdFUjsKKworICAgIGlmICggYWZtX3BhcnNlcl9yZWFkX3ZhbHMoIHBhcnNlciwgJnZhbCwgMSApID09IDEgKQorICAgIHsKKyAgICAgICphaW50ID0gdmFsLnUuaTsKKworICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgICB9CisgICAgZWxzZQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBTeW50YXhfRXJyb3IgKTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGFmbV9wYXJzZV90cmFja19rZXJuKCBBRk1fUGFyc2VyICBwYXJzZXIgKQorICB7CisgICAgQUZNX0ZvbnRJbmZvICAgZmkgPSBwYXJzZXItPkZvbnRJbmZvOworICAgIEFGTV9UcmFja0tlcm4gIHRrOworICAgIGNoYXIqICAgICAgICAgIGtleTsKKyAgICBGVF9PZmZzZXQgICAgICBsZW47CisgICAgaW50ICAgICAgICAgICAgbiA9IC0xOworCisKKyAgICBpZiAoIGFmbV9wYXJzZXJfcmVhZF9pbnQoIHBhcnNlciwgJmZpLT5OdW1UcmFja0tlcm4gKSApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgIGlmICggZmktPk51bVRyYWNrS2VybiApCisgICAgeworICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBwYXJzZXItPm1lbW9yeTsKKyAgICAgIEZUX0Vycm9yICAgZXJyb3I7CisKKworICAgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBmaS0+VHJhY2tLZXJucywgZmktPk51bVRyYWNrS2VybiApICkKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIHdoaWxlICggKCBrZXkgPSBhZm1fcGFyc2VyX25leHRfa2V5KCBwYXJzZXIsIDEsICZsZW4gKSApICE9IDAgKQorICAgIHsKKyAgICAgIEFGTV9WYWx1ZVJlYyAgc2hhcmVkX3ZhbHNbNV07CisKKworICAgICAgc3dpdGNoICggYWZtX3Rva2VuaXplKCBrZXksIGxlbiApICkKKyAgICAgIHsKKyAgICAgIGNhc2UgQUZNX1RPS0VOX1RSQUNLS0VSTjoKKyAgICAgICAgbisrOworCisgICAgICAgIGlmICggbiA+PSBmaS0+TnVtVHJhY2tLZXJuICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgdGsgPSBmaS0+VHJhY2tLZXJucyArIG47CisKKyAgICAgICAgc2hhcmVkX3ZhbHNbMF0udHlwZSA9IEFGTV9WQUxVRV9UWVBFX0lOVEVHRVI7CisgICAgICAgIHNoYXJlZF92YWxzWzFdLnR5cGUgPSBBRk1fVkFMVUVfVFlQRV9GSVhFRDsKKyAgICAgICAgc2hhcmVkX3ZhbHNbMl0udHlwZSA9IEFGTV9WQUxVRV9UWVBFX0ZJWEVEOworICAgICAgICBzaGFyZWRfdmFsc1szXS50eXBlID0gQUZNX1ZBTFVFX1RZUEVfRklYRUQ7CisgICAgICAgIHNoYXJlZF92YWxzWzRdLnR5cGUgPSBBRk1fVkFMVUVfVFlQRV9GSVhFRDsKKyAgICAgICAgaWYgKCBhZm1fcGFyc2VyX3JlYWRfdmFscyggcGFyc2VyLCBzaGFyZWRfdmFscywgNSApICE9IDUgKQorICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICB0ay0+ZGVncmVlICAgICA9IHNoYXJlZF92YWxzWzBdLnUuaTsKKyAgICAgICAgdGstPm1pbl9wdHNpemUgPSBzaGFyZWRfdmFsc1sxXS51LmY7CisgICAgICAgIHRrLT5taW5fa2VybiAgID0gc2hhcmVkX3ZhbHNbMl0udS5mOworICAgICAgICB0ay0+bWF4X3B0c2l6ZSA9IHNoYXJlZF92YWxzWzNdLnUuZjsKKyAgICAgICAgdGstPm1heF9rZXJuICAgPSBzaGFyZWRfdmFsc1s0XS51LmY7CisKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0VORFRSQUNLS0VSTjoKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0VOREtFUk5EQVRBOgorICAgICAgY2FzZSBBRk1fVE9LRU5fRU5ERk9OVE1FVFJJQ1M6CisgICAgICAgIGZpLT5OdW1UcmFja0tlcm4gPSBuICsgMTsKKyAgICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKworICAgICAgY2FzZSBBRk1fVE9LRU5fVU5LTk9XTjoKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgIH0KKyAgICB9CisKKyAgRmFpbDoKKyAgICByZXR1cm4gRlRfVEhST1coIFN5bnRheF9FcnJvciApOworICB9CisKKworI3VuZGVmICBLRVJOX0lOREVYCisjZGVmaW5lIEtFUk5fSU5ERVgoIGcxLCBnMiApICAoICggKEZUX1VMb25nKWcxIDw8IDE2ICkgfCBnMiApCisKKworICAvKiBjb21wYXJlIHR3byBrZXJuaW5nIHBhaXJzICovCisgIEZUX0NBTExCQUNLX0RFRiggaW50ICkKKyAgYWZtX2NvbXBhcmVfa2Vybl9wYWlycyggY29uc3Qgdm9pZCogIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICBiICkKKyAgeworICAgIEFGTV9LZXJuUGFpciAga3AxID0gKEFGTV9LZXJuUGFpcilhOworICAgIEFGTV9LZXJuUGFpciAga3AyID0gKEFGTV9LZXJuUGFpciliOworCisgICAgRlRfVUxvbmcgIGluZGV4MSA9IEtFUk5fSU5ERVgoIGtwMS0+aW5kZXgxLCBrcDEtPmluZGV4MiApOworICAgIEZUX1VMb25nICBpbmRleDIgPSBLRVJOX0lOREVYKCBrcDItPmluZGV4MSwga3AyLT5pbmRleDIgKTsKKworCisgICAgaWYgKCBpbmRleDEgPiBpbmRleDIgKQorICAgICAgcmV0dXJuIDE7CisgICAgZWxzZSBpZiAoIGluZGV4MSA8IGluZGV4MiApCisgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgcmV0dXJuIDA7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBhZm1fcGFyc2Vfa2Vybl9wYWlycyggQUZNX1BhcnNlciAgcGFyc2VyICkKKyAgeworICAgIEFGTV9Gb250SW5mbyAgZmkgPSBwYXJzZXItPkZvbnRJbmZvOworICAgIEFGTV9LZXJuUGFpciAga3A7CisgICAgY2hhciogICAgICAgICBrZXk7CisgICAgRlRfT2Zmc2V0ICAgICBsZW47CisgICAgaW50ICAgICAgICAgICBuID0gLTE7CisKKworICAgIGlmICggYWZtX3BhcnNlcl9yZWFkX2ludCggcGFyc2VyLCAmZmktPk51bUtlcm5QYWlyICkgKQorICAgICAgZ290byBGYWlsOworCisgICAgaWYgKCBmaS0+TnVtS2VyblBhaXIgKQorICAgIHsKKyAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gcGFyc2VyLT5tZW1vcnk7CisgICAgICBGVF9FcnJvciAgIGVycm9yOworCisKKyAgICAgIGlmICggRlRfUU5FV19BUlJBWSggZmktPktlcm5QYWlycywgZmktPk51bUtlcm5QYWlyICkgKQorICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgd2hpbGUgKCAoIGtleSA9IGFmbV9wYXJzZXJfbmV4dF9rZXkoIHBhcnNlciwgMSwgJmxlbiApICkgIT0gMCApCisgICAgeworICAgICAgQUZNX1Rva2VuICB0b2tlbiA9IGFmbV90b2tlbml6ZSgga2V5LCBsZW4gKTsKKworCisgICAgICBzd2l0Y2ggKCB0b2tlbiApCisgICAgICB7CisgICAgICBjYXNlIEFGTV9UT0tFTl9LUDoKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0tQWDoKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0tQWToKKyAgICAgICAgeworICAgICAgICAgIEZUX0ludCAgICAgICAgcjsKKyAgICAgICAgICBBRk1fVmFsdWVSZWMgIHNoYXJlZF92YWxzWzRdOworCisKKyAgICAgICAgICBuKys7CisKKyAgICAgICAgICBpZiAoIG4gPj0gZmktPk51bUtlcm5QYWlyICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgIGtwID0gZmktPktlcm5QYWlycyArIG47CisKKyAgICAgICAgICBzaGFyZWRfdmFsc1swXS50eXBlID0gQUZNX1ZBTFVFX1RZUEVfSU5ERVg7CisgICAgICAgICAgc2hhcmVkX3ZhbHNbMV0udHlwZSA9IEFGTV9WQUxVRV9UWVBFX0lOREVYOworICAgICAgICAgIHNoYXJlZF92YWxzWzJdLnR5cGUgPSBBRk1fVkFMVUVfVFlQRV9JTlRFR0VSOworICAgICAgICAgIHNoYXJlZF92YWxzWzNdLnR5cGUgPSBBRk1fVkFMVUVfVFlQRV9JTlRFR0VSOworICAgICAgICAgIHIgPSBhZm1fcGFyc2VyX3JlYWRfdmFscyggcGFyc2VyLCBzaGFyZWRfdmFscywgNCApOworICAgICAgICAgIGlmICggciA8IDMgKQorICAgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgICAga3AtPmluZGV4MSA9IHNoYXJlZF92YWxzWzBdLnUuaTsKKyAgICAgICAgICBrcC0+aW5kZXgyID0gc2hhcmVkX3ZhbHNbMV0udS5pOworICAgICAgICAgIGlmICggdG9rZW4gPT0gQUZNX1RPS0VOX0tQWSApCisgICAgICAgICAgeworICAgICAgICAgICAga3AtPnggPSAwOworICAgICAgICAgICAga3AtPnkgPSBzaGFyZWRfdmFsc1syXS51Lmk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBrcC0+eCA9IHNoYXJlZF92YWxzWzJdLnUuaTsKKyAgICAgICAgICAgIGtwLT55ID0gKCB0b2tlbiA9PSBBRk1fVE9LRU5fS1AgJiYgciA9PSA0ICkKKyAgICAgICAgICAgICAgICAgICAgICA/IHNoYXJlZF92YWxzWzNdLnUuaSA6IDA7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEFGTV9UT0tFTl9FTkRLRVJOUEFJUlM6CisgICAgICBjYXNlIEFGTV9UT0tFTl9FTkRLRVJOREFUQToKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0VOREZPTlRNRVRSSUNTOgorICAgICAgICBmaS0+TnVtS2VyblBhaXIgPSBuICsgMTsKKyAgICAgICAgZnRfcXNvcnQoIGZpLT5LZXJuUGFpcnMsIGZpLT5OdW1LZXJuUGFpciwKKyAgICAgICAgICAgICAgICAgIHNpemVvZiAoIEFGTV9LZXJuUGFpclJlYyApLAorICAgICAgICAgICAgICAgICAgYWZtX2NvbXBhcmVfa2Vybl9wYWlycyApOworICAgICAgICByZXR1cm4gRlRfRXJyX09rOworCisgICAgICBjYXNlIEFGTV9UT0tFTl9VTktOT1dOOgorICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgZ290byBGYWlsOworICAgICAgfQorICAgIH0KKworICBGYWlsOgorICAgIHJldHVybiBGVF9USFJPVyggU3ludGF4X0Vycm9yICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBhZm1fcGFyc2Vfa2Vybl9kYXRhKCBBRk1fUGFyc2VyICBwYXJzZXIgKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBjaGFyKiAgICAgIGtleTsKKyAgICBGVF9PZmZzZXQgIGxlbjsKKworCisgICAgd2hpbGUgKCAoIGtleSA9IGFmbV9wYXJzZXJfbmV4dF9rZXkoIHBhcnNlciwgMSwgJmxlbiApICkgIT0gMCApCisgICAgeworICAgICAgc3dpdGNoICggYWZtX3Rva2VuaXplKCBrZXksIGxlbiApICkKKyAgICAgIHsKKyAgICAgIGNhc2UgQUZNX1RPS0VOX1NUQVJUVFJBQ0tLRVJOOgorICAgICAgICBlcnJvciA9IGFmbV9wYXJzZV90cmFja19rZXJuKCBwYXJzZXIgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBBRk1fVE9LRU5fU1RBUlRLRVJOUEFJUlM6CisgICAgICBjYXNlIEFGTV9UT0tFTl9TVEFSVEtFUk5QQUlSUzA6CisgICAgICAgIGVycm9yID0gYWZtX3BhcnNlX2tlcm5fcGFpcnMoIHBhcnNlciApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEFGTV9UT0tFTl9FTkRLRVJOREFUQToKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0VOREZPTlRNRVRSSUNTOgorICAgICAgICByZXR1cm4gRlRfRXJyX09rOworCisgICAgICBjYXNlIEFGTV9UT0tFTl9VTktOT1dOOgorICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgZ290byBGYWlsOworICAgICAgfQorICAgIH0KKworICBGYWlsOgorICAgIHJldHVybiBGVF9USFJPVyggU3ludGF4X0Vycm9yICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBhZm1fcGFyc2VyX3NraXBfc2VjdGlvbiggQUZNX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFGTV9Ub2tlbiAgIGVuZF9zZWN0aW9uICkKKyAgeworICAgIGNoYXIqICAgICAga2V5OworICAgIEZUX09mZnNldCAgbGVuOworCisKKyAgICB3aGlsZSAoIG4tLSA+IDAgKQorICAgIHsKKyAgICAgIGtleSA9IGFmbV9wYXJzZXJfbmV4dF9rZXkoIHBhcnNlciwgMSwgTlVMTCApOworICAgICAgaWYgKCAha2V5ICkKKyAgICAgICAgZ290byBGYWlsOworICAgIH0KKworICAgIHdoaWxlICggKCBrZXkgPSBhZm1fcGFyc2VyX25leHRfa2V5KCBwYXJzZXIsIDEsICZsZW4gKSApICE9IDAgKQorICAgIHsKKyAgICAgIEFGTV9Ub2tlbiAgdG9rZW4gPSBhZm1fdG9rZW5pemUoIGtleSwgbGVuICk7CisKKworICAgICAgaWYgKCB0b2tlbiA9PSBlbmRfc2VjdGlvbiB8fCB0b2tlbiA9PSBBRk1fVE9LRU5fRU5ERk9OVE1FVFJJQ1MgKQorICAgICAgICByZXR1cm4gRlRfRXJyX09rOworICAgIH0KKworICBGYWlsOgorICAgIHJldHVybiBGVF9USFJPVyggU3ludGF4X0Vycm9yICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBhZm1fcGFyc2VyX3BhcnNlKCBBRk1fUGFyc2VyICBwYXJzZXIgKQorICB7CisgICAgRlRfTWVtb3J5ICAgICBtZW1vcnkgPSBwYXJzZXItPm1lbW9yeTsKKyAgICBBRk1fRm9udEluZm8gIGZpICAgICA9IHBhcnNlci0+Rm9udEluZm87CisgICAgRlRfRXJyb3IgICAgICBlcnJvciAgPSBGVF9FUlIoIFN5bnRheF9FcnJvciApOworICAgIGNoYXIqICAgICAgICAga2V5OworICAgIEZUX09mZnNldCAgICAgbGVuOworICAgIEZUX0ludCAgICAgICAgbWV0cmljc19zZXRzID0gMDsKKworCisgICAgaWYgKCAhZmkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBrZXkgPSBhZm1fcGFyc2VyX25leHRfa2V5KCBwYXJzZXIsIDEsICZsZW4gKTsKKyAgICBpZiAoICFrZXkgfHwgbGVuICE9IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgIGZ0X3N0cm5jbXAoIGtleSwgIlN0YXJ0Rm9udE1ldHJpY3MiLCAxNiApICE9IDAgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisKKyAgICB3aGlsZSAoICgga2V5ID0gYWZtX3BhcnNlcl9uZXh0X2tleSggcGFyc2VyLCAxLCAmbGVuICkgKSAhPSAwICkKKyAgICB7CisgICAgICBBRk1fVmFsdWVSZWMgIHNoYXJlZF92YWxzWzRdOworCisKKyAgICAgIHN3aXRjaCAoIGFmbV90b2tlbml6ZSgga2V5LCBsZW4gKSApCisgICAgICB7CisgICAgICBjYXNlIEFGTV9UT0tFTl9NRVRSSUNTU0VUUzoKKyAgICAgICAgaWYgKCBhZm1fcGFyc2VyX3JlYWRfaW50KCBwYXJzZXIsICZtZXRyaWNzX3NldHMgKSApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgIGlmICggbWV0cmljc19zZXRzICE9IDAgJiYgbWV0cmljc19zZXRzICE9IDIgKQorICAgICAgICB7CisgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5pbXBsZW1lbnRlZF9GZWF0dXJlICk7CisKKyAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0lTQ0lERk9OVDoKKyAgICAgICAgc2hhcmVkX3ZhbHNbMF0udHlwZSA9IEFGTV9WQUxVRV9UWVBFX0JPT0w7CisgICAgICAgIGlmICggYWZtX3BhcnNlcl9yZWFkX3ZhbHMoIHBhcnNlciwgc2hhcmVkX3ZhbHMsIDEgKSAhPSAxICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgZmktPklzQ0lERm9udCA9IHNoYXJlZF92YWxzWzBdLnUuYjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0ZPTlRCQk9YOgorICAgICAgICBzaGFyZWRfdmFsc1swXS50eXBlID0gQUZNX1ZBTFVFX1RZUEVfRklYRUQ7CisgICAgICAgIHNoYXJlZF92YWxzWzFdLnR5cGUgPSBBRk1fVkFMVUVfVFlQRV9GSVhFRDsKKyAgICAgICAgc2hhcmVkX3ZhbHNbMl0udHlwZSA9IEFGTV9WQUxVRV9UWVBFX0ZJWEVEOworICAgICAgICBzaGFyZWRfdmFsc1szXS50eXBlID0gQUZNX1ZBTFVFX1RZUEVfRklYRUQ7CisgICAgICAgIGlmICggYWZtX3BhcnNlcl9yZWFkX3ZhbHMoIHBhcnNlciwgc2hhcmVkX3ZhbHMsIDQgKSAhPSA0ICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgZmktPkZvbnRCQm94LnhNaW4gPSBzaGFyZWRfdmFsc1swXS51LmY7CisgICAgICAgIGZpLT5Gb250QkJveC55TWluID0gc2hhcmVkX3ZhbHNbMV0udS5mOworICAgICAgICBmaS0+Rm9udEJCb3gueE1heCA9IHNoYXJlZF92YWxzWzJdLnUuZjsKKyAgICAgICAgZmktPkZvbnRCQm94LnlNYXggPSBzaGFyZWRfdmFsc1szXS51LmY7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEFGTV9UT0tFTl9BU0NFTkRFUjoKKyAgICAgICAgc2hhcmVkX3ZhbHNbMF0udHlwZSA9IEFGTV9WQUxVRV9UWVBFX0ZJWEVEOworICAgICAgICBpZiAoIGFmbV9wYXJzZXJfcmVhZF92YWxzKCBwYXJzZXIsIHNoYXJlZF92YWxzLCAxICkgIT0gMSApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgIGZpLT5Bc2NlbmRlciA9IHNoYXJlZF92YWxzWzBdLnUuZjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0RFU0NFTkRFUjoKKyAgICAgICAgc2hhcmVkX3ZhbHNbMF0udHlwZSA9IEFGTV9WQUxVRV9UWVBFX0ZJWEVEOworICAgICAgICBpZiAoIGFmbV9wYXJzZXJfcmVhZF92YWxzKCBwYXJzZXIsIHNoYXJlZF92YWxzLCAxICkgIT0gMSApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgIGZpLT5EZXNjZW5kZXIgPSBzaGFyZWRfdmFsc1swXS51LmY7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEFGTV9UT0tFTl9TVEFSVENIQVJNRVRSSUNTOgorICAgICAgICB7CisgICAgICAgICAgRlRfSW50ICBuID0gMDsKKworCisgICAgICAgICAgaWYgKCBhZm1fcGFyc2VyX3JlYWRfaW50KCBwYXJzZXIsICZuICkgKQorICAgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgICAgZXJyb3IgPSBhZm1fcGFyc2VyX3NraXBfc2VjdGlvbiggcGFyc2VyLCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFGTV9UT0tFTl9FTkRDSEFSTUVUUklDUyApOworICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEFGTV9UT0tFTl9TVEFSVEtFUk5EQVRBOgorICAgICAgICBlcnJvciA9IGFmbV9wYXJzZV9rZXJuX2RhdGEoIHBhcnNlciApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCBzaW5jZSB3ZSBvbmx5IHN1cHBvcnQga2VybiBkYXRhICovCisKKyAgICAgIGNhc2UgQUZNX1RPS0VOX0VOREZPTlRNRVRSSUNTOgorICAgICAgICByZXR1cm4gRlRfRXJyX09rOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgRmFpbDoKKyAgICBGVF9GUkVFKCBmaS0+VHJhY2tLZXJucyApOworICAgIGZpLT5OdW1UcmFja0tlcm4gPSAwOworCisgICAgRlRfRlJFRSggZmktPktlcm5QYWlycyApOworICAgIGZpLT5OdW1LZXJuUGFpciA9IDA7CisKKyAgICBmaS0+SXNDSURGb250ID0gMDsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9hZm1wYXJzZS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9hZm1wYXJzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmYTYwZDRhYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvYWZtcGFyc2UuaApAQCAtMCwwICsxLDg4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBhZm1wYXJzZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQUZNIHBhcnNlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19BRk1QQVJTRV9IX18KKyNkZWZpbmUgX19BRk1QQVJTRV9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIGFmbV9wYXJzZXJfaW5pdCggQUZNX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgICBiYXNlLAorICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgIGxpbWl0ICk7CisKKworICBGVF9MT0NBTCggdm9pZCApCisgIGFmbV9wYXJzZXJfZG9uZSggQUZNX1BhcnNlciAgcGFyc2VyICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBhZm1fcGFyc2VyX3BhcnNlKCBBRk1fUGFyc2VyICBwYXJzZXIgKTsKKworCisgIGVudW0gIEFGTV9WYWx1ZVR5cGVfCisgIHsKKyAgICBBRk1fVkFMVUVfVFlQRV9TVFJJTkcsCisgICAgQUZNX1ZBTFVFX1RZUEVfTkFNRSwKKyAgICBBRk1fVkFMVUVfVFlQRV9GSVhFRCwgICAvKiByZWFsIG51bWJlciAqLworICAgIEFGTV9WQUxVRV9UWVBFX0lOVEVHRVIsCisgICAgQUZNX1ZBTFVFX1RZUEVfQk9PTCwKKyAgICBBRk1fVkFMVUVfVFlQRV9JTkRFWCAgICAvKiBnbHlwaCBpbmRleCAqLworICB9OworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIEFGTV9WYWx1ZVJlY18KKyAgeworICAgIGVudW0gQUZNX1ZhbHVlVHlwZV8gIHR5cGU7CisgICAgdW5pb24KKyAgICB7CisgICAgICBjaGFyKiAgICAgczsKKyAgICAgIEZUX0ZpeGVkICBmOworICAgICAgRlRfSW50ICAgIGk7CisgICAgICBGVF9Cb29sICAgYjsKKworICAgIH0gdTsKKworICB9IEFGTV9WYWx1ZVJlYywgKkFGTV9WYWx1ZTsKKworI2RlZmluZSAgQUZNX01BWF9BUkdVTUVOVFMgIDUKKworICBGVF9MT0NBTCggRlRfSW50ICkKKyAgYWZtX3BhcnNlcl9yZWFkX3ZhbHMoIEFGTV9QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEFGTV9WYWx1ZSAgIHZhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBuICk7CisKKyAgLyogcmVhZCB0aGUgbmV4dCBrZXkgZnJvbSB0aGUgbmV4dCBsaW5lIG9yIGNvbHVtbiAqLworICBGVF9MT0NBTCggY2hhciogKQorICBhZm1fcGFyc2VyX25leHRfa2V5KCBBRk1fUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX09mZnNldCogIGxlbiApOworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0FGTVBBUlNFX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9meGZ0X3BzYXV4LmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L2Z4ZnRfcHNhdXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWFhZDA0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9meGZ0X3BzYXV4LmMKQEAgLTAsMCArMSwzOCBAQAorI2lmICFkZWZpbmVkKF9GWEZUX1ZFUlNJT05fKSB8fCBfRlhGVF9WRVJTSU9OXyA9PSAyNTAxCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2F1eC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgYXV4aWxpYXJ5IFBvc3RTY3JpcHQgZHJpdmVyIGNvbXBvbmVudCAoYm9keSBvbmx5KS4gICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNkZWZpbmUgRlRfTUFLRV9PUFRJT05fU0lOR0xFX09CSkVDVAorI2RlZmluZSBGVDJfQlVJTERfTElCUkFSWQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgInBzb2Jqcy5jIgorI2luY2x1ZGUgInBzYXV4bW9kLmMiCisjaW5jbHVkZSAidDFkZWNvZGUuYyIKKyNpbmNsdWRlICJ0MWNtYXAuYyIKKworI2lmbmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX0FGTQorI2luY2x1ZGUgImFmbXBhcnNlLmMiCisjZW5kaWYKKworI2luY2x1ZGUgInBzY29udi5jIgorCisKKy8qIEVORCAqLworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvbW9kdWxlLm1rIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9tb2R1bGUubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJiZjZmNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvbW9kdWxlLm1rCkBAIC0wLDAgKzEsMjMgQEAKKyMKKyMgRnJlZVR5cGUgMiBQU2F1eCBtb2R1bGUgZGVmaW5pdGlvbgorIworCisKKyMgQ29weXJpZ2h0IDE5OTYtMjAwMCwgMjAwNiBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKKworRlRNT0RVTEVfSF9DT01NQU5EUyArPSBQU0FVWF9NT0RVTEUKKworZGVmaW5lIFBTQVVYX01PRFVMRQorJChPUEVOX0RSSVZFUikgRlRfTW9kdWxlX0NsYXNzLCBwc2F1eF9tb2R1bGVfY2xhc3MgJChDTE9TRV9EUklWRVIpCiskKEVDSE9fRFJJVkVSKXBzYXV4ICAgICAkKEVDSE9fRFJJVkVSX0RFU0MpUG9zdHNjcmlwdCBUeXBlIDEgJiBUeXBlIDIgaGVscGVyIG1vZHVsZSQoRUNIT19EUklWRVJfRE9ORSkKK2VuZGVmCisKKyMgRU9GCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3BzYXV4ZXJyLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3BzYXV4ZXJyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU3ZjE3YQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvcHNhdXhlcnIuaApAQCAtMCwwICsxLDQyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2F1eGVyci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgUFMgYXV4aWxpYXJ5IG1vZHVsZSBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEsIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIFBTIGF1eGlsaWFyeSBtb2R1bGUgZXJyb3IgZW51bWVyYXRpb24gKi8KKyAgLyogY29uc3RhbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX1BTQVVYRVJSX0hfXworI2RlZmluZSBfX1BTQVVYRVJSX0hfXworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oIgorCisjdW5kZWYgX19GVEVSUk9SU19IX18KKworI3VuZGVmICBGVF9FUlJfUFJFRklYCisjZGVmaW5lIEZUX0VSUl9QUkVGSVggIFBTYXV4X0Vycl8KKyNkZWZpbmUgRlRfRVJSX0JBU0UgICAgRlRfTW9kX0Vycl9QU2F1eAorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIgorCisjZW5kaWYgLyogX19QU0FVWEVSUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvcHNhdXhtb2QuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvcHNhdXhtb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGQ4ODY2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9wc2F1eG1vZC5jCkBAIC0wLDAgKzEsMTM5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2F1eG1vZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgYXV4aWxpYXJ5IFBvc3RTY3JpcHQgbW9kdWxlIGltcGxlbWVudGF0aW9uIChib2R5KS4gICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDAtMjAwMSwgMjAwMiwgMjAwMywgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAicHNhdXhtb2QuaCIKKyNpbmNsdWRlICJwc29ianMuaCIKKyNpbmNsdWRlICJ0MWRlY29kZS5oIgorI2luY2x1ZGUgInQxY21hcC5oIgorCisjaWZuZGVmIFQxX0NPTkZJR19PUFRJT05fTk9fQUZNCisjaW5jbHVkZSAiYWZtcGFyc2UuaCIKKyNlbmRpZgorCisKKyAgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGCisgIGNvbnN0IFBTX1RhYmxlX0Z1bmNzUmVjICBwc190YWJsZV9mdW5jcyA9CisgIHsKKyAgICBwc190YWJsZV9uZXcsCisgICAgcHNfdGFibGVfZG9uZSwKKyAgICBwc190YWJsZV9hZGQsCisgICAgcHNfdGFibGVfcmVsZWFzZQorICB9OworCisKKyAgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGCisgIGNvbnN0IFBTX1BhcnNlcl9GdW5jc1JlYyAgcHNfcGFyc2VyX2Z1bmNzID0KKyAgeworICAgIHBzX3BhcnNlcl9pbml0LAorICAgIHBzX3BhcnNlcl9kb25lLAorICAgIHBzX3BhcnNlcl9za2lwX3NwYWNlcywKKyAgICBwc19wYXJzZXJfc2tpcF9QU190b2tlbiwKKyAgICBwc19wYXJzZXJfdG9faW50LAorICAgIHBzX3BhcnNlcl90b19maXhlZCwKKyAgICBwc19wYXJzZXJfdG9fYnl0ZXMsCisgICAgcHNfcGFyc2VyX3RvX2Nvb3JkX2FycmF5LAorICAgIHBzX3BhcnNlcl90b19maXhlZF9hcnJheSwKKyAgICBwc19wYXJzZXJfdG9fdG9rZW4sCisgICAgcHNfcGFyc2VyX3RvX3Rva2VuX2FycmF5LAorICAgIHBzX3BhcnNlcl9sb2FkX2ZpZWxkLAorICAgIHBzX3BhcnNlcl9sb2FkX2ZpZWxkX3RhYmxlCisgIH07CisKKworICBGVF9DQUxMQkFDS19UQUJMRV9ERUYKKyAgY29uc3QgVDFfQnVpbGRlcl9GdW5jc1JlYyAgdDFfYnVpbGRlcl9mdW5jcyA9CisgIHsKKyAgICB0MV9idWlsZGVyX2luaXQsCisgICAgdDFfYnVpbGRlcl9kb25lLAorICAgIHQxX2J1aWxkZXJfY2hlY2tfcG9pbnRzLAorICAgIHQxX2J1aWxkZXJfYWRkX3BvaW50LAorICAgIHQxX2J1aWxkZXJfYWRkX3BvaW50MSwKKyAgICB0MV9idWlsZGVyX2FkZF9jb250b3VyLAorICAgIHQxX2J1aWxkZXJfc3RhcnRfcG9pbnQsCisgICAgdDFfYnVpbGRlcl9jbG9zZV9jb250b3VyCisgIH07CisKKworICBGVF9DQUxMQkFDS19UQUJMRV9ERUYKKyAgY29uc3QgVDFfRGVjb2Rlcl9GdW5jc1JlYyAgdDFfZGVjb2Rlcl9mdW5jcyA9CisgIHsKKyAgICB0MV9kZWNvZGVyX2luaXQsCisgICAgdDFfZGVjb2Rlcl9kb25lLAorICAgIHQxX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MKKyAgfTsKKworCisjaWZuZGVmIFQxX0NPTkZJR19PUFRJT05fTk9fQUZNCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRgorICBjb25zdCBBRk1fUGFyc2VyX0Z1bmNzUmVjICBhZm1fcGFyc2VyX2Z1bmNzID0KKyAgeworICAgIGFmbV9wYXJzZXJfaW5pdCwKKyAgICBhZm1fcGFyc2VyX2RvbmUsCisgICAgYWZtX3BhcnNlcl9wYXJzZQorICB9OworI2VuZGlmCisKKworICBGVF9DQUxMQkFDS19UQUJMRV9ERUYKKyAgY29uc3QgVDFfQ01hcF9DbGFzc2VzUmVjICB0MV9jbWFwX2NsYXNzZXMgPQorICB7CisgICAgJnQxX2NtYXBfc3RhbmRhcmRfY2xhc3NfcmVjLAorICAgICZ0MV9jbWFwX2V4cGVydF9jbGFzc19yZWMsCisgICAgJnQxX2NtYXBfY3VzdG9tX2NsYXNzX3JlYywKKyAgICAmdDFfY21hcF91bmljb2RlX2NsYXNzX3JlYworICB9OworCisKKyAgc3RhdGljCisgIGNvbnN0IFBTQXV4X0ludGVyZmFjZSAgcHNhdXhfaW50ZXJmYWNlID0KKyAgeworICAgICZwc190YWJsZV9mdW5jcywKKyAgICAmcHNfcGFyc2VyX2Z1bmNzLAorICAgICZ0MV9idWlsZGVyX2Z1bmNzLAorICAgICZ0MV9kZWNvZGVyX2Z1bmNzLAorICAgIHQxX2RlY3J5cHQsCisKKyAgICAoY29uc3QgVDFfQ01hcF9DbGFzc2VzUmVjKikgJnQxX2NtYXBfY2xhc3NlcywKKworI2lmbmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX0FGTQorICAgICZhZm1fcGFyc2VyX2Z1bmNzLAorI2Vsc2UKKyAgICAwLAorI2VuZGlmCisgIH07CisKKworICBGVF9DQUxMQkFDS19UQUJMRV9ERUYKKyAgY29uc3QgRlRfTW9kdWxlX0NsYXNzICBwc2F1eF9tb2R1bGVfY2xhc3MgPQorICB7CisgICAgMCwKKyAgICBzaXplb2YgKCBGVF9Nb2R1bGVSZWMgKSwKKyAgICAicHNhdXgiLAorICAgIDB4MjAwMDBMLAorICAgIDB4MjAwMDBMLAorCisgICAgJnBzYXV4X2ludGVyZmFjZSwgIC8qIG1vZHVsZS1zcGVjaWZpYyBpbnRlcmZhY2UgKi8KKworICAgIChGVF9Nb2R1bGVfQ29uc3RydWN0b3IpMCwKKyAgICAoRlRfTW9kdWxlX0Rlc3RydWN0b3IpIDAsCisgICAgKEZUX01vZHVsZV9SZXF1ZXN0ZXIpICAwCisgIH07CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3BzYXV4bW9kLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3BzYXV4bW9kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y2NzdlZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvcHNhdXhtb2QuaApAQCAtMCwwICsxLDQyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2F1eG1vZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgYXV4aWxpYXJ5IFBvc3RTY3JpcHQgbW9kdWxlIGltcGxlbWVudGF0aW9uIChzcGVjaWZpY2F0aW9uKS4gKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDAtMjAwMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19QU0FVWE1PRF9IX18KKyNkZWZpbmUgX19QU0FVWE1PRF9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRtb2RhcGkuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisjZXJyb3IgInRoaXMgbW9kdWxlIGRvZXMgbm90IHN1cHBvcnQgUElDIHlldCIKKyNlbmRpZgorCisKKyAgRlRfRVhQT1JUX1ZBUiggY29uc3QgRlRfTW9kdWxlX0NsYXNzICkgIHBzYXV4X2RyaXZlcl9jbGFzczsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1BTQVVYTU9EX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9wc2NvbnYuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvcHNjb252LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJlMmY3ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvcHNjb252LmMKQEAgLTAsMCArMSw2NDEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHBzY29udi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBTb21lIGNvbnZlbmllbmNlIGNvbnZlcnNpb25zIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMi0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisKKyNpbmNsdWRlICJwc2NvbnYuaCIKKyNpbmNsdWRlICJwc2F1eGVyci5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfcHNjb252CisKKworICAvKiBUaGUgZm9sbG93aW5nIGFycmF5IGlzIHVzZWQgYnkgdmFyaW91cyBmdW5jdGlvbnMgdG8gcXVpY2tseSBjb252ZXJ0ICovCisgIC8qIGRpZ2l0cyAoYm90aCBkZWNpbWFsIGFuZCBub24tZGVjaW1hbCkgaW50byBudW1iZXJzLiAgICAgICAgICAgICAgICAgKi8KKworI2lmICdBJyA9PSA2NQorICAvKiBBU0NJSSAqLworCisgIHN0YXRpYyBjb25zdCBGVF9DaGFyICBmdF9jaGFyX3RhYmxlWzEyOF0gPQorICB7CisgICAgLyogMHgwMCAqLworICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorICAgICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorICAgIC0xLCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LAorICAgIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorICAgIC0xLCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LAorICAgIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorICB9OworCisgIC8qIG5vIGNoYXJhY3RlciA+PSAweDgwIGNhbiByZXByZXNlbnQgYSB2YWxpZCBudW1iZXIgKi8KKyNkZWZpbmUgT1AgID49CisKKyNlbmRpZiAvKiAnQScgPT0gNjUgKi8KKworI2lmICdBJyA9PSAxOTMKKyAgLyogRUJDRElDICovCisKKyAgc3RhdGljIGNvbnN0IEZUX0NoYXIgIGZ0X2NoYXJfdGFibGVbMTI4XSA9CisgIHsKKyAgICAvKiAweDgwICovCisgICAgLTEsIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisgICAgLTEsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisgICAgLTEsIC0xLCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisgICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisgICAgLTEsIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisgICAgLTEsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisgICAgLTEsIC0xLCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisgICAgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisgIH07CisKKyAgLyogbm8gY2hhcmFjdGVyIDwgMHg4MCBjYW4gcmVwcmVzZW50IGEgdmFsaWQgbnVtYmVyICovCisjZGVmaW5lIE9QICA8CisKKyNlbmRpZiAvKiAnQScgPT0gMTkzICovCisKKworICBGVF9MT0NBTF9ERUYoIEZUX0xvbmcgKQorICBQU19Db252X1N0cnRvbCggRlRfQnl0ZSoqICBjdXJzb3IsCisgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBiYXNlICkKKyAgeworICAgIEZUX0J5dGUqICBwID0gKmN1cnNvcjsKKworICAgIEZUX0xvbmcgICBudW0gICAgICAgICAgID0gMDsKKyAgICBGVF9Cb29sICAgc2lnbiAgICAgICAgICA9IDA7CisgICAgRlRfQm9vbCAgIGhhdmVfb3ZlcmZsb3cgPSAwOworCisgICAgRlRfTG9uZyAgIG51bV9saW1pdDsKKyAgICBGVF9DaGFyICAgY19saW1pdDsKKworCisgICAgaWYgKCBwID49IGxpbWl0ICkKKyAgICAgIGdvdG8gQmFkOworCisgICAgaWYgKCBiYXNlIDwgMiB8fCBiYXNlID4gMzYgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFNCgoICIhISFJTlZBTElEIEJBU0U6ISEhIiApKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICggKnAgPT0gJy0nIHx8ICpwID09ICcrJyApCisgICAgeworICAgICAgc2lnbiA9IEZUX0JPT0woICpwID09ICctJyApOworCisgICAgICBwKys7CisgICAgICBpZiAoIHAgPT0gbGltaXQgKQorICAgICAgICBnb3RvIEJhZDsKKyAgICB9CisKKyAgICBudW1fbGltaXQgPSAweDdGRkZGRkZGTCAvIGJhc2U7CisgICAgY19saW1pdCAgID0gKEZUX0NoYXIpKCAweDdGRkZGRkZGTCAlIGJhc2UgKTsKKworICAgIGZvciAoIDsgcCA8IGxpbWl0OyBwKysgKQorICAgIHsKKyAgICAgIEZUX0NoYXIgIGM7CisKKworICAgICAgaWYgKCBJU19QU19TUEFDRSggKnAgKSB8fCAqcCBPUCAweDgwICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGMgPSBmdF9jaGFyX3RhYmxlWypwICYgMHg3Zl07CisKKyAgICAgIGlmICggYyA8IDAgfHwgYyA+PSBiYXNlICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGlmICggbnVtID4gbnVtX2xpbWl0IHx8ICggbnVtID09IG51bV9saW1pdCAmJiBjID4gY19saW1pdCApICkKKyAgICAgICAgaGF2ZV9vdmVyZmxvdyA9IDE7CisgICAgICBlbHNlCisgICAgICAgIG51bSA9IG51bSAqIGJhc2UgKyBjOworICAgIH0KKworICAgICpjdXJzb3IgPSBwOworCisgICAgaWYgKCBoYXZlX292ZXJmbG93ICkKKyAgICB7CisgICAgICBudW0gPSAweDdGRkZGRkZGTDsKKyAgICAgIEZUX1RSQUNFNCgoICIhISFPVkVSRkxPVzohISEiICkpOworICAgIH0KKworICAgIGlmICggc2lnbiApCisgICAgICBudW0gPSAtbnVtOworCisgICAgcmV0dXJuIG51bTsKKworICBCYWQ6CisgICAgRlRfVFJBQ0U0KCggIiEhIUVORCBPRiBEQVRBOiEhISIgKSk7CisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfTG9uZyApCisgIFBTX0NvbnZfVG9JbnQoIEZUX0J5dGUqKiAgY3Vyc29yLAorICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0ICkKKworICB7CisgICAgRlRfQnl0ZSogIHAgPSAqY3Vyc29yOworICAgIEZUX0J5dGUqICBjdXJwOworCisgICAgRlRfTG9uZyAgIG51bTsKKworCisgICAgY3VycCA9IHA7CisgICAgbnVtICA9IFBTX0NvbnZfU3RydG9sKCAmcCwgbGltaXQsIDEwICk7CisKKyAgICBpZiAoIHAgPT0gY3VycCApCisgICAgICByZXR1cm4gMDsKKworICAgIGlmICggcCA8IGxpbWl0ICYmICpwID09ICcjJyApCisgICAgeworICAgICAgcCsrOworCisgICAgICBjdXJwID0gcDsKKyAgICAgIG51bSAgPSBQU19Db252X1N0cnRvbCggJnAsIGxpbWl0LCBudW0gKTsKKworICAgICAgaWYgKCBwID09IGN1cnAgKQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAqY3Vyc29yID0gcDsKKworICAgIHJldHVybiBudW07CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRml4ZWQgKQorICBQU19Db252X1RvRml4ZWQoIEZUX0J5dGUqKiAgY3Vyc29yLAorICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQsCisgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBwb3dlcl90ZW4gKQorICB7CisgICAgRlRfQnl0ZSogIHAgPSAqY3Vyc29yOworICAgIEZUX0J5dGUqICBjdXJwOworCS8vIEZpeCB0aGUgVnVsbmVyYWJpbGl0eSBSZXBvcnQgRm94SVQgUmVhZGVyIC0gTVNWUi0xMC0wMDc3LgorCS8vIFdlIG11c3QgdXNlIDY0LWJpdCBpbnRlZ2VyIHRvIGF2b2lkIG92ZXJmbG93LiBJZiB0aGVyZSBpcyBzb21lIDY0LWJpdCBpbnRlZ2VyIHN1cHBvcnQuCisJLy8gU2luY2Ugc29tZSBwbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQgNjQtYml0IGludGVnZXIsIHRoZW4gdXNlIGludGVnZXIgaW5zdGVhZC4KKyNpZiBkZWZpbmVkKEZUX0lOVDY0KQorICAgIEZUX0lOVDY0ICBpbnRlZ3JhbCA9IDA7CisgICAgRlRfSU5UNjQgIGRlY2ltYWwgPSAwOworI2Vsc2UKKwlGVF9Mb25nIGludGVncmFsOworCUZUX0xvbmcgZGVjaW1hbCA9IDA7CisJRlRfSW50IHRlbXAwID0gNjU1MzY7CisJRlRfSW50IHRlbXAxID0gcG93ZXJfdGVuOworI2VuZGlmCisJRlRfTG9uZyBkaXZpZGVyID0gMTsKKworCUZUX0Jvb2wgICBzaWduID0gMDsKKyAgICBGVF9Cb29sICAgaGF2ZV9vdmVyZmxvdyAgPSAwOworICAgIEZUX0Jvb2wgICBoYXZlX3VuZGVyZmxvdyA9IDA7CisKKyAgICBpZiAoIHAgPj0gbGltaXQgKQorICAgICAgZ290byBCYWQ7CisKKyAgICBpZiAoICpwID09ICctJyB8fCAqcCA9PSAnKycgKQorICAgIHsKKyAgICAgIHNpZ24gPSBGVF9CT09MKCAqcCA9PSAnLScgKTsKKworICAgICAgcCsrOworICAgICAgaWYgKCBwID09IGxpbWl0ICkKKyAgICAgICAgZ290byBCYWQ7CisgICAgfQorCisgICAgLyogcmVhZCB0aGUgaW50ZWdlciBwYXJ0ICovCisgICAgaWYgKCAqcCAhPSAnLicgKQorICAgIHsKKyAgICAgIGN1cnAgICAgID0gcDsKKworCQkvLyBGaXggdGhlIFZ1bG5lcmFiaWxpdHkgUmVwb3J0IEZveElUIFJlYWRlciAtIE1TVlItMTAtMDA3Ny4KKwkJLy8gTGltaXRlZCB0byB0aGUgZml4LXBvaW50IG1lY2hhbmlzbSwgd2UgaGF2ZSBubyBjaG9pY2Ugbm93IHRvIGNyb3AgdGhlIHZhbHVlIGRvbWFpbi4KKwkJLy8gRG8gYWNjdXJhdGUgb3ZlcmZsb3cgY2hlY2sgaWYgRlRfSU5UNjQgc3VwcG9ydGVkLCBvdGhlcndpc2UgdmFndWUgY2hlY2suCisjaWYgZGVmaW5lZChGVF9JTlQ2NCkKKwkJaW50ZWdyYWwgPSAoKEZUX0lOVDY0KVBTX0NvbnZfVG9JbnQoICZwLCBsaW1pdCApKSA8PCAxNjsKKyNlbHNlCisJCS8vIFdlIHVzZSAncG93ZXJfdGVuJyBhbmQgMl4xNiB0byBjb21wdXRlIHRoZSBjb2VmZmljaWVudC4KKwkJLy93aGlsZSAoIHRlbXAxID4gMCApIHsgdGVtcDAgKj0gMTA7IHRlbXAxIC0tOyB9CisJCS8vd2hpbGUgKCB0ZW1wMSA8IDAgKSB7IHRlbXAwIC89IDEwOyB0ZW1wMSArKzsgfQorCQkKKwkJaW50ZWdyYWwgPSBQU19Db252X1RvSW50KCAmcCwgbGltaXQgKTsKKwkJaWYgKCBwID09IGN1cnAgKQorCQkJcmV0dXJuIDA7CisJCWlmICggaW50ZWdyYWwgPiAweDdGRkYgKQorCQkJaGF2ZV9vdmVyZmxvdyA9IDE7CisJCWVsc2UgCisJCQlpbnRlZ3JhbCA9IGludGVncmFsIDw8IDE2OworI2VuZGlmICAgCisgICAgfQorCisgICAgLyogcmVhZCB0aGUgZGVjaW1hbCBwYXJ0ICovCisgICAgaWYgKCBwIDwgbGltaXQgJiYgKnAgPT0gJy4nICkKKyAgICB7CisgICAgICBwKys7CisKKyAgICAgIGZvciAoIDsgcCA8IGxpbWl0OyBwKysgKQorICAgICAgeworICAgICAgICBGVF9DaGFyICBjOworCisKKyAgICAgICAgaWYgKCBJU19QU19TUEFDRSggKnAgKSB8fCAqcCBPUCAweDgwICkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjID0gZnRfY2hhcl90YWJsZVsqcCAmIDB4N2ZdOworCisgICAgICAgIGlmICggYyA8IDAgfHwgYyA+PSAxMCApCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKCBkZWNpbWFsIDwgMHhDQ0NDQ0NDTCApCisgICAgICAgIHsKKyAgICAgICAgICBkZWNpbWFsID0gZGVjaW1hbCAqIDEwICsgYzsKKworICAgICAgICAgIGlmICggIWludGVncmFsICYmIHBvd2VyX3RlbiA+IDAgKQorICAgICAgICAgICAgcG93ZXJfdGVuLS07CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZGl2aWRlciAqPSAxMDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8qIHJlYWQgZXhwb25lbnQsIGlmIGFueSAqLworICAgIGlmICggcCArIDEgPCBsaW1pdCAmJiAoICpwID09ICdlJyB8fCAqcCA9PSAnRScgKSApCisgICAgeworICAgICAgRlRfTG9uZyAgZXhwb25lbnQ7CisKKworICAgICAgcCsrOworCisgICAgICBjdXJwICAgICA9IHA7CisgICAgICBleHBvbmVudCA9IFBTX0NvbnZfVG9JbnQoICZwLCBsaW1pdCApOworCisgICAgICBpZiAoIGN1cnAgPT0gcCApCisgICAgICAgIHJldHVybiAwOworCisgICAgICAvKiBhcmJpdHJhcmlseSBsaW1pdCBleHBvbmVudCAqLworICAgICAgaWYgKCBleHBvbmVudCA+IDEwMDAgKQorICAgICAgICBoYXZlX292ZXJmbG93ID0gMTsKKyAgICAgIGVsc2UgaWYgKCBleHBvbmVudCA8IC0xMDAwICkKKyAgICAgICAgaGF2ZV91bmRlcmZsb3cgPSAxOworICAgICAgZWxzZQorICAgICAgICBwb3dlcl90ZW4gKz0gZXhwb25lbnQ7CisgICAgfQorCisgICAgKmN1cnNvciA9IHA7CisKKyAgICBpZiAoICFpbnRlZ3JhbCAmJiAhZGVjaW1hbCApCisgICAgICByZXR1cm4gMDsKKworICAgIGlmICggaGF2ZV9vdmVyZmxvdyApCisgICAgICBnb3RvIE92ZXJmbG93OworICAgIGlmICggaGF2ZV91bmRlcmZsb3cgKQorICAgICAgZ290byBVbmRlcmZsb3c7CisKKyAgICB3aGlsZSAoIHBvd2VyX3RlbiA+IDAgKQorICAgIHsKKyAgICAgIGlmICggaW50ZWdyYWwgPj0gMHhDQ0NDQ0NDTCApCisgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICBpbnRlZ3JhbCAqPSAxMDsKKworICAgICAgaWYgKCBkZWNpbWFsID49IDB4Q0NDQ0NDQ0wgKQorICAgICAgeworICAgICAgICBpZiAoIGRpdmlkZXIgPT0gMSApCisgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgZGl2aWRlciAvPSAxMDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgZGVjaW1hbCAqPSAxMDsKKworICAgICAgcG93ZXJfdGVuLS07CisgICAgfQorCisgICAgd2hpbGUgKCBwb3dlcl90ZW4gPCAwICkKKyAgICB7CisgICAgICBpbnRlZ3JhbCAvPSAxMDsKKyAgICAgIGlmICggZGl2aWRlciA8IDB4Q0NDQ0NDQ0wgKQorICAgICAgICBkaXZpZGVyICo9IDEwOworICAgICAgZWxzZQorICAgICAgICBkZWNpbWFsIC89IDEwOworCisgICAgICBpZiAoICFpbnRlZ3JhbCAmJiAhZGVjaW1hbCApCisgICAgICAgIGdvdG8gVW5kZXJmbG93OworCisgICAgICBwb3dlcl90ZW4rKzsKKyAgICB9CisKKy8vIEZpeCB0aGUgVnVsbmVyYWJpbGl0eSBSZXBvcnQgRm94SVQgUmVhZGVyIC0gTVNWUi0xMC0wMDc3LgorCS8vIExpbWl0ZWQgdG8gdGhlIGZpeC1wb2ludCBtZWNoYW5pc20sIHdlIGhhdmUgbm8gY2hvaWNlIG5vdyB0byBjcm9wIHRoZSB2YWx1ZSBkb21haW4uCisJLy8gRG8gYWNjdXJhdGUgb3ZlcmZsb3cgY2hlY2sgaWYgRlRfSU5UNjQgc3VwcG9ydGVkLCBvdGhlcndpc2UgaWdub3JlIHRoZSBjaGVjayBhdCB0aGlzIG1vbWVudC4KKwkvLyBTaW5jZSB0aGVyZSBpcyBhbHNvIGEgY2hlY2sgdXNpbmcgZGl2aWRlciA8IDEwMDAwMDAwTC4gIAorI2lmIGRlZmluZWQoRlRfSU5UNjQpIAorICAgIGlmICggZGVjaW1hbCApIHsKKwkJaW50ZWdyYWwgKz0gRlRfRGl2Rml4KCAoRlRfTG9uZylkZWNpbWFsLCBkaXZpZGVyICk7CisJfQorCWlmICggaW50ZWdyYWwgPiAyMTQ3NDgzNjQ3KSBpbnRlZ3JhbCA9IDIxNDc0ODM2NDc7CisjZWxzZQorCWlmICggZGVjaW1hbCApIHsKKwkJaW50ZWdyYWwgKz0gRlRfRGl2Rml4KCBkZWNpbWFsLCBkaXZpZGVyICk7CisJfQorI2VuZGlmCisKKworICBFeGl0OgorICAgIGlmICggc2lnbiApCisgICAgICBpbnRlZ3JhbCA9IC1pbnRlZ3JhbDsKKworICAgIHJldHVybiAoRlRfTG9uZylpbnRlZ3JhbDsKKworICBCYWQ6CisgICAgRlRfVFJBQ0U0KCggIiEhIUVORCBPRiBEQVRBOiEhISIgKSk7CisgICAgcmV0dXJuIDA7CisKKyAgT3ZlcmZsb3c6CisgICAgaW50ZWdyYWwgPSAweDdGRkZGRkZGTDsKKyAgICBGVF9UUkFDRTQoKCAiISEhT1ZFUkZMT1c6ISEhIiApKTsKKyAgICBnb3RvIEV4aXQ7CisKKyAgVW5kZXJmbG93OgorICAgIEZUX1RSQUNFNCgoICIhISFVTkRFUkZMT1c6ISEhIiApKTsKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyNpZiAwCisgIEZUX0xPQ0FMX0RFRiggRlRfVUludCApCisgIFBTX0NvbnZfU3RyaW5nRGVjb2RlKCBGVF9CeXRlKiogIGN1cnNvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX09mZnNldCAgbiApCisgIHsKKyAgICBGVF9CeXRlKiAgcDsKKyAgICBGVF9VSW50ICAgciA9IDA7CisKKworICAgIGZvciAoIHAgPSAqY3Vyc29yOyByIDwgbiAmJiBwIDwgbGltaXQ7IHArKyApCisgICAgeworICAgICAgRlRfQnl0ZSAgYjsKKworCisgICAgICBpZiAoICpwICE9ICdcXCcgKQorICAgICAgeworICAgICAgICBidWZmZXJbcisrXSA9ICpwOworCisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBwKys7CisKKyAgICAgIHN3aXRjaCAoICpwICkKKyAgICAgIHsKKyAgICAgIGNhc2UgJ24nOgorICAgICAgICBiID0gJ1xuJzsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdyJzoKKyAgICAgICAgYiA9ICdccic7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndCc6CisgICAgICAgIGIgPSAnXHQnOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ2InOgorICAgICAgICBiID0gJ1xiJzsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdmJzoKKyAgICAgICAgYiA9ICdcZic7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnXHInOgorICAgICAgICBwKys7CisgICAgICAgIGlmICggKnAgIT0gJ1xuJyApCisgICAgICAgIHsKKyAgICAgICAgICBiID0gKnA7CisKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvKiBubyBicmVhayAqLworICAgICAgY2FzZSAnXG4nOgorICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBpZiAoIElTX1BTX0RJR0lUKCAqcCApICkKKyAgICAgICAgeworICAgICAgICAgIGIgPSAqcCAtICcwJzsKKworICAgICAgICAgIHArKzsKKworICAgICAgICAgIGlmICggSVNfUFNfRElHSVQoICpwICkgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGIgPSBiICogOCArICpwIC0gJzAnOworCisgICAgICAgICAgICBwKys7CisKKyAgICAgICAgICAgIGlmICggSVNfUFNfRElHSVQoICpwICkgKQorICAgICAgICAgICAgICBiID0gYiAqIDggKyAqcCAtICcwJzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgYnVmZmVyW3IrK10gPSBiOworICAgICAgICAgICAgICBiID0gKnA7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBidWZmZXJbcisrXSA9IGI7CisgICAgICAgICAgICBiID0gKnA7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICBiID0gKnA7CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBidWZmZXJbcisrXSA9IGI7CisgICAgfQorCisgICAgKmN1cnNvciA9IHA7CisKKyAgICByZXR1cm4gcjsKKyAgfQorI2VuZGlmIC8qIDAgKi8KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfVUludCApCisgIFBTX0NvbnZfQVNDSUlIZXhEZWNvZGUoIEZUX0J5dGUqKiAgY3Vyc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT2Zmc2V0ICBuICkKKyAgeworICAgIEZUX0J5dGUqICBwOworICAgIEZUX1VJbnQgICByICAgPSAwOworICAgIEZUX1VJbnQgICB3ICAgPSAwOworICAgIEZUX1VJbnQgICBwYWQgPSAweDAxOworCisKKyAgICBuICo9IDI7CisKKyNpZiAxCisKKyAgICBwID0gKmN1cnNvcjsKKworICAgIGlmICggcCA+PSBsaW1pdCApCisgICAgICByZXR1cm4gMDsKKworICAgIGlmICggbiA+IChGVF9VSW50KSggbGltaXQgLSBwICkgKQorICAgICAgbiA9IChGVF9VSW50KSggbGltaXQgLSBwICk7CisKKyAgICAvKiB3ZSB0cnkgdG8gcHJvY2VzcyB0d28gbmliYmxlcyBhdCBhIHRpbWUgdG8gYmUgYXMgZmFzdCBhcyBwb3NzaWJsZSAqLworICAgIGZvciAoIDsgciA8IG47IHIrKyApCisgICAgeworICAgICAgRlRfVUludCAgYyA9IHBbcl07CisKKworICAgICAgaWYgKCBJU19QU19TUEFDRSggYyApICkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGlmICggYyBPUCAweDgwICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGMgPSBmdF9jaGFyX3RhYmxlW2MgJiAweDdGXTsKKyAgICAgIGlmICggKHVuc2lnbmVkKWMgPj0gMTYgKQorICAgICAgICBicmVhazsKKworICAgICAgcGFkID0gKCBwYWQgPDwgNCApIHwgYzsKKyAgICAgIGlmICggcGFkICYgMHgxMDAgKQorICAgICAgeworICAgICAgICBidWZmZXJbdysrXSA9IChGVF9CeXRlKXBhZDsKKyAgICAgICAgcGFkICAgICAgICAgPSAweDAxOworICAgICAgfQorICAgIH0KKworICAgIGlmICggcGFkICE9IDB4MDEgKQorICAgICAgYnVmZmVyW3crK10gPSAoRlRfQnl0ZSkoIHBhZCA8PCA0ICk7CisKKyAgICAqY3Vyc29yID0gcCArIHI7CisKKyAgICByZXR1cm4gdzsKKworI2Vsc2UgLyogMCAqLworCisgICAgZm9yICggciA9IDA7IHIgPCBuOyByKysgKQorICAgIHsKKyAgICAgIEZUX0NoYXIgIGM7CisKKworICAgICAgaWYgKCBJU19QU19TUEFDRSggKnAgKSApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoICpwIE9QIDB4ODAgKQorICAgICAgICBicmVhazsKKworICAgICAgYyA9IGZ0X2NoYXJfdGFibGVbKnAgJiAweDdmXTsKKworICAgICAgaWYgKCAodW5zaWduZWQpYyA+PSAxNiApCisgICAgICAgIGJyZWFrOworCisgICAgICBpZiAoIHIgJiAxICkKKyAgICAgIHsKKyAgICAgICAgKmJ1ZmZlciA9IChGVF9CeXRlKSgqYnVmZmVyICsgYyk7CisgICAgICAgIGJ1ZmZlcisrOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICAqYnVmZmVyID0gKEZUX0J5dGUpKGMgPDwgNCk7CisKKyAgICAgIHIrKzsKKyAgICB9CisKKyAgICAqY3Vyc29yID0gcDsKKworICAgIHJldHVybiAoIHIgKyAxICkgLyAyOworCisjZW5kaWYgLyogMCAqLworCisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfVUludCApCisgIFBTX0NvbnZfRWV4ZWNEZWNvZGUoIEZUX0J5dGUqKiAgIGN1cnNvciwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfT2Zmc2V0ICAgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0KiAgc2VlZCApCisgIHsKKyAgICBGVF9CeXRlKiAgcDsKKyAgICBGVF9VSW50ICAgcjsKKyAgICBGVF9VSW50ICAgcyA9ICpzZWVkOworCisKKyNpZiAxCisKKyAgICBwID0gKmN1cnNvcjsKKworICAgIGlmICggcCA+PSBsaW1pdCApCisgICAgICByZXR1cm4gMDsKKworICAgIGlmICggbiA+IChGVF9VSW50KShsaW1pdCAtIHApICkKKyAgICAgIG4gPSAoRlRfVUludCkobGltaXQgLSBwKTsKKworICAgIGZvciAoIHIgPSAwOyByIDwgbjsgcisrICkKKyAgICB7CisgICAgICBGVF9VSW50ICB2YWwgPSBwW3JdOworICAgICAgRlRfVUludCAgYiAgID0gKCB2YWwgXiAoIHMgPj4gOCApICk7CisKKworICAgICAgcyAgICAgICAgID0gKCAodmFsICsgcykqNTI4NDVVICsgMjI3MTkgKSAmIDB4RkZGRlU7CisgICAgICBidWZmZXJbcl0gPSAoRlRfQnl0ZSkgYjsKKyAgICB9CisKKyAgICAqY3Vyc29yID0gcCArIG47CisgICAgKnNlZWQgICA9IChGVF9VU2hvcnQpczsKKworI2Vsc2UgLyogMCAqLworCisgICAgZm9yICggciA9IDAsIHAgPSAqY3Vyc29yOyByIDwgbiAmJiBwIDwgbGltaXQ7IHIrKywgcCsrICkKKyAgICB7CisgICAgICBGVF9CeXRlICBiID0gKEZUX0J5dGUpKCAqcCBeICggcyA+PiA4ICkgKTsKKworCisgICAgICBzID0gKEZUX1VTaG9ydCkoICggKnAgKyBzICkgKiA1Mjg0NVUgKyAyMjcxOSApOworICAgICAgKmJ1ZmZlcisrID0gYjsKKyAgICB9CisgICAgKmN1cnNvciA9IHA7CisgICAgKnNlZWQgICA9IHM7CisKKyNlbmRpZiAvKiAwICovCisKKyAgICByZXR1cm4gcjsKKyAgfQorCitGVF9MT0NBTF9ERUYoIEZUX0Jvb2wgKQorCSAgeHlxX1BTX0NvbnZfVG9JbnQoIEZUX0J5dGUqKiAgY3Vyc29yLAorCSAgRlRfQnl0ZSogICBsaW1pdCwgRlRfTG9uZyogdmFsICkKKwkgIAorICB7CisJICBGVF9CeXRlIGZpcnN0X2NoYXIgPSAqKmN1cnNvcjsKKwkgIGlmIChmaXJzdF9jaGFyID09ICcrJyB8fCBmaXJzdF9jaGFyID09ICctJyB8fCAoZmlyc3RfY2hhciA+PSAnMCcgJiYgZmlyc3RfY2hhciA8PSAnOScpKSB7CisJCSAgKnZhbCA9IFBTX0NvbnZfVG9JbnQoY3Vyc29yLCBsaW1pdCk7CisJCSAgcmV0dXJuIDE7CisJICB9CisJICByZXR1cm4gMDsKKyAgfQorCisvKiBFTkQgKi8KKwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9wc2NvbnYuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvcHNjb252LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZhNzcyNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvcHNjb252LmgKQEAgLTAsMCArMSw3NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcHNjb252LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFNvbWUgY29udmVuaWVuY2UgY29udmVyc2lvbnMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA2LCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fUFNDT05WX0hfXworI2RlZmluZSBfX1BTQ09OVl9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCIKKworRlRfQkVHSU5fSEVBREVSCisKKworICBGVF9MT0NBTCggRlRfTG9uZyApCisgIFBTX0NvbnZfU3RydG9sKCBGVF9CeXRlKiogIGN1cnNvciwKKyAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQsCisgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIGJhc2UgKTsKKworCisgIEZUX0xPQ0FMKCBGVF9Mb25nICkKKyAgUFNfQ29udl9Ub0ludCggRlRfQnl0ZSoqICBjdXJzb3IsCisgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQgKTsKKyAgRlRfTE9DQUwoIEZUX0Jvb2wgKQorCSAgeHlxX1BTX0NvbnZfVG9JbnQoIEZUX0J5dGUqKiAgY3Vyc29yLAorCSAgRlRfQnl0ZSogICBsaW1pdCwgRlRfTG9uZyogdmFsICk7CS8qIFhZUSAyMDA3LTEwLTEwOiB3ZSBhZGQgcmV0dXJuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciBpdCdzIGFjdHVhbGx5IGEgbnVtYmVyICovCisKKyAgRlRfTE9DQUwoIEZUX0ZpeGVkICkKKyAgUFNfQ29udl9Ub0ZpeGVkKCBGVF9CeXRlKiogIGN1cnNvciwKKyAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgcG93ZXJfdGVuICk7CisKKyNpZiAwCisgIEZUX0xPQ0FMKCBGVF9VSW50ICkKKyAgUFNfQ29udl9TdHJpbmdEZWNvZGUoIEZUX0J5dGUqKiAgY3Vyc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfT2Zmc2V0ICBuICk7CisjZW5kaWYKKworICBGVF9MT0NBTCggRlRfVUludCApCisgIFBTX0NvbnZfQVNDSUlIZXhEZWNvZGUoIEZUX0J5dGUqKiAgY3Vyc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfT2Zmc2V0ICBuICk7CisKKyAgRlRfTE9DQUwoIEZUX1VJbnQgKQorICBQU19Db252X0VleGVjRGVjb2RlKCBGVF9CeXRlKiogICBjdXJzb3IsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX09mZnNldCAgIG4sCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VTaG9ydCogIHNlZWQgKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1BTQ09OVl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvcHNvYmpzLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3Bzb2Jqcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZDkwMDMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3Bzb2Jqcy5jCkBAIC0wLDAgKzEsMTc2NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcHNvYmpzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEF1eGlsaWFyeSBmdW5jdGlvbnMgZm9yIFBvc3RTY3JpcHQgZm9udHMgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oIgorCisjaW5jbHVkZSAicHNvYmpzLmgiCisjaW5jbHVkZSAicHNjb252LmgiCisKKyNpbmNsdWRlICJwc2F1eGVyci5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfcHNvYmpzCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTX1RBQkxFICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwc190YWJsZV9uZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbml0aWFsaXplcyBhIFBTX1RhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWJsZSAgOjogVGhlIGFkZHJlc3Mgb2YgdGhlIHRhcmdldCB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb3VudCAgOjogVGhlIHRhYmxlIHNpemUgPSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSA6OiBUaGUgbWVtb3J5IG9iamVjdCB0byB1c2UgZm9yIGFsbCBzdWJzZXF1ZW50ICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgcmVhbGxvY2F0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBwc190YWJsZV9uZXcoIFBTX1RhYmxlICAgdGFibGUsCisgICAgICAgICAgICAgICAgRlRfSW50ICAgICBjb3VudCwKKyAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgIHRhYmxlLT5tZW1vcnkgPSBtZW1vcnk7CisgICAgaWYgKCBGVF9ORVdfQVJSQVkoIHRhYmxlLT5lbGVtZW50cywgY291bnQgKSB8fAorICAgICAgICAgRlRfTkVXX0FSUkFZKCB0YWJsZS0+bGVuZ3RocywgIGNvdW50ICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgdGFibGUtPm1heF9lbGVtcyA9IGNvdW50OworICAgIHRhYmxlLT5pbml0ICAgICAgPSAweERFQURCRUVGVUw7CisgICAgdGFibGUtPm51bV9lbGVtcyA9IDA7CisgICAgdGFibGUtPmJsb2NrICAgICA9IDA7CisgICAgdGFibGUtPmNhcGFjaXR5ICA9IDA7CisgICAgdGFibGUtPmN1cnNvciAgICA9IDA7CisKKyAgICAqKFBTX1RhYmxlX0Z1bmNzUmVjKikmdGFibGUtPmZ1bmNzID0gcHNfdGFibGVfZnVuY3M7CisKKyAgRXhpdDoKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIEZUX0ZSRUUoIHRhYmxlLT5lbGVtZW50cyApOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBzaGlmdF9lbGVtZW50cyggUFNfVGFibGUgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogIG9sZF9iYXNlICkKKyAgeworICAgIEZUX1B0ckRpc3QgIGRlbHRhICA9IHRhYmxlLT5ibG9jayAtIG9sZF9iYXNlOworICAgIEZUX0J5dGUqKiAgIG9mZnNldCA9IHRhYmxlLT5lbGVtZW50czsKKyAgICBGVF9CeXRlKiogICBsaW1pdCAgPSBvZmZzZXQgKyB0YWJsZS0+bWF4X2VsZW1zOworCisKKyAgICBmb3IgKCA7IG9mZnNldCA8IGxpbWl0OyBvZmZzZXQrKyApCisgICAgeworICAgICAgaWYgKCBvZmZzZXRbMF0gKQorICAgICAgICBvZmZzZXRbMF0gKz0gZGVsdGE7CisgICAgfQorICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgcmVhbGxvY2F0ZV90MV90YWJsZSggUFNfVGFibGUgICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfT2Zmc2V0ICBuZXdfc2l6ZSApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSAgID0gdGFibGUtPm1lbW9yeTsKKyAgICBGVF9CeXRlKiAgIG9sZF9iYXNlID0gdGFibGUtPmJsb2NrOworICAgIEZUX0Vycm9yICAgZXJyb3I7CisKKworICAgIC8qIGFsbG9jYXRlIG5ldyBiYXNlIGJsb2NrICovCisgICAgaWYgKCBGVF9BTExPQyggdGFibGUtPmJsb2NrLCBuZXdfc2l6ZSApICkKKyAgICB7CisgICAgICB0YWJsZS0+YmxvY2sgPSBvbGRfYmFzZTsKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBjb3B5IGVsZW1lbnRzIGFuZCBzaGlmdCBvZmZzZXRzICovCisgICAgaWYgKCBvbGRfYmFzZSApCisgICAgeworICAgICAgRlRfTUVNX0NPUFkoIHRhYmxlLT5ibG9jaywgb2xkX2Jhc2UsIHRhYmxlLT5jYXBhY2l0eSApOworICAgICAgc2hpZnRfZWxlbWVudHMoIHRhYmxlLCBvbGRfYmFzZSApOworICAgICAgRlRfRlJFRSggb2xkX2Jhc2UgKTsKKyAgICB9CisKKyAgICB0YWJsZS0+Y2FwYWNpdHkgPSBuZXdfc2l6ZTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBzX3RhYmxlX2FkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFkZHMgYW4gb2JqZWN0IHRvIGEgUFNfVGFibGUsIHBvc3NpYmx5IGdyb3dpbmcgaXRzIG1lbW9yeSBibG9jay4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhYmxlICA6OiBUaGUgdGFyZ2V0IHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGlkeCAgICA6OiBUaGUgaW5kZXggb2YgdGhlIG9iamVjdCBpbiB0aGUgdGFibGUuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgb2JqZWN0IDo6IFRoZSBhZGRyZXNzIG9mIHRoZSBvYmplY3QgdG8gY29weSBpbiBtZW1vcnkuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsZW5ndGggOjogVGhlIGxlbmd0aCBpbiBieXRlcyBvZiB0aGUgc291cmNlIG9iamVjdC4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgQW4gZXJyb3IgaXMgcmV0dXJuZWQgaWYgYSAgKi8KKyAgLyogICAgcmVhbGxvY2F0aW9uIGZhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgcHNfdGFibGVfYWRkKCBQU19UYWJsZSAgICB0YWJsZSwKKyAgICAgICAgICAgICAgICBGVF9JbnQgICAgICBpZHgsCisgICAgICAgICAgICAgICAgdm9pZCogICAgICAgb2JqZWN0LAorICAgICAgICAgICAgICAgIEZUX1B0ckRpc3QgIGxlbmd0aCApCisgIHsKKyAgICBpZiAoIGlkeCA8IDAgfHwgaWR4ID49IHRhYmxlLT5tYXhfZWxlbXMgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggInBzX3RhYmxlX2FkZDogaW52YWxpZCBpbmRleFxuIiApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgIH0KKworICAgIGlmICggbGVuZ3RoIDwgMCApCisgICAgeworICAgICAgRlRfRVJST1IoKCAicHNfdGFibGVfYWRkOiBpbnZhbGlkIGxlbmd0aFxuIiApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgIH0KKworICAgIC8qIGdyb3cgdGhlIGJhc2UgYmxvY2sgaWYgbmVlZGVkICovCisgICAgaWYgKCB0YWJsZS0+Y3Vyc29yICsgbGVuZ3RoID4gdGFibGUtPmNhcGFjaXR5ICkKKyAgICB7CisgICAgICBGVF9FcnJvciAgICBlcnJvcjsKKyAgICAgIEZUX09mZnNldCAgIG5ld19zaXplID0gdGFibGUtPmNhcGFjaXR5OworICAgICAgRlRfUHRyRGlzdCAgaW5fb2Zmc2V0OworCisKKyAgICAgIGluX29mZnNldCA9IChGVF9CeXRlKilvYmplY3QgLSB0YWJsZS0+YmxvY2s7CisgICAgICBpZiAoIGluX29mZnNldCA8IDAgfHwgKEZUX09mZnNldClpbl9vZmZzZXQgPj0gdGFibGUtPmNhcGFjaXR5ICkKKyAgICAgICAgaW5fb2Zmc2V0ID0gLTE7CisKKyAgICAgIHdoaWxlICggbmV3X3NpemUgPCB0YWJsZS0+Y3Vyc29yICsgbGVuZ3RoICkKKyAgICAgIHsKKyAgICAgICAgLyogaW5jcmVhc2Ugc2l6ZSBieSAyNSUgYW5kIHJvdW5kIHVwIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlCisgICAgICAgICAgIG9mIDEwMjQgKi8KKyAgICAgICAgbmV3X3NpemUgKz0gKCBuZXdfc2l6ZSA+PiAyICkgKyAxOworICAgICAgICBuZXdfc2l6ZSAgPSBGVF9QQURfQ0VJTCggbmV3X3NpemUsIDEwMjQgKTsKKyAgICAgIH0KKworICAgICAgZXJyb3IgPSByZWFsbG9jYXRlX3QxX3RhYmxlKCB0YWJsZSwgbmV3X3NpemUgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgIGlmICggaW5fb2Zmc2V0ID49IDAgKQorICAgICAgICBvYmplY3QgPSB0YWJsZS0+YmxvY2sgKyBpbl9vZmZzZXQ7CisgICAgfQorCisgICAgLyogYWRkIHRoZSBvYmplY3QgdG8gdGhlIGJhc2UgYmxvY2sgYW5kIGFkanVzdCBvZmZzZXQgKi8KKyAgICB0YWJsZS0+ZWxlbWVudHNbaWR4XSA9IHRhYmxlLT5ibG9jayArIHRhYmxlLT5jdXJzb3I7CisgICAgdGFibGUtPmxlbmd0aHMgW2lkeF0gPSBsZW5ndGg7CisgICAgRlRfTUVNX0NPUFkoIHRhYmxlLT5ibG9jayArIHRhYmxlLT5jdXJzb3IsIG9iamVjdCwgbGVuZ3RoICk7CisKKyAgICB0YWJsZS0+Y3Vyc29yICs9IGxlbmd0aDsKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwc190YWJsZV9kb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGaW5hbGl6ZXMgYSBQU19UYWJsZVJlYyAoaS5lLiwgcmVhbGxvY2F0ZSBpdCB0byBpdHMgY3VycmVudCAgICAgICAgKi8KKyAgLyogICAgY3Vyc29yKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFibGUgOjogVGhlIHRhcmdldCB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCByZWxlYXNlIHRoZSBoZWFwJ3MgbWVtb3J5IGJsb2NrLiAgSXQgaXMgdXAgICovCisgIC8qICAgIHRvIHRoZSBjYWxsZXIgdG8gY2xlYW4gaXQsIG9yIHJlZmVyZW5jZSBpdCBpbiBpdHMgb3duIHN0cnVjdHVyZXMuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgcHNfdGFibGVfZG9uZSggUFNfVGFibGUgIHRhYmxlICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gdGFibGUtPm1lbW9yeTsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX0J5dGUqICAgb2xkX2Jhc2UgPSB0YWJsZS0+YmxvY2s7CisKKworICAgIC8qIHNob3VsZCBuZXZlciBmYWlsLCBiZWNhdXNlIHJlYy5jdXJzb3IgPD0gcmVjLnNpemUgKi8KKyAgICBpZiAoICFvbGRfYmFzZSApCisgICAgICByZXR1cm47CisKKyAgICBpZiAoIEZUX0FMTE9DKCB0YWJsZS0+YmxvY2ssIHRhYmxlLT5jdXJzb3IgKSApCisgICAgICByZXR1cm47CisgICAgRlRfTUVNX0NPUFkoIHRhYmxlLT5ibG9jaywgb2xkX2Jhc2UsIHRhYmxlLT5jdXJzb3IgKTsKKyAgICBzaGlmdF9lbGVtZW50cyggdGFibGUsIG9sZF9iYXNlICk7CisKKyAgICB0YWJsZS0+Y2FwYWNpdHkgPSB0YWJsZS0+Y3Vyc29yOworICAgIEZUX0ZSRUUoIG9sZF9iYXNlICk7CisKKyAgICBGVF9VTlVTRUQoIGVycm9yICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHBzX3RhYmxlX3JlbGVhc2UoIFBTX1RhYmxlICB0YWJsZSApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHRhYmxlLT5tZW1vcnk7CisKKworICAgIGlmICggKEZUX1VMb25nKXRhYmxlLT5pbml0ID09IDB4REVBREJFRUZVTCApCisgICAgeworICAgICAgRlRfRlJFRSggdGFibGUtPmJsb2NrICk7CisgICAgICBGVF9GUkVFKCB0YWJsZS0+ZWxlbWVudHMgKTsKKyAgICAgIEZUX0ZSRUUoIHRhYmxlLT5sZW5ndGhzICk7CisgICAgICB0YWJsZS0+aW5pdCA9IDA7CisgICAgfQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgVDEgUEFSU0VSICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIGZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGFscmVhZHkgcGFydCBvZiB0aGUgY29tbWVudCAqLworCisgIHN0YXRpYyB2b2lkCisgIHNraXBfY29tbWVudCggRlRfQnl0ZSogICphY3VyLAorICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQgKQorICB7CisgICAgRlRfQnl0ZSogIGN1ciA9ICphY3VyOworCisKKyAgICB3aGlsZSAoIGN1ciA8IGxpbWl0ICkKKyAgICB7CisgICAgICBpZiAoIElTX1BTX05FV0xJTkUoICpjdXIgKSApCisgICAgICAgIGJyZWFrOworICAgICAgY3VyKys7CisgICAgfQorCisgICAgKmFjdXIgPSBjdXI7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIHNraXBfc3BhY2VzKCBGVF9CeXRlKiAgKmFjdXIsCisgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0ICkKKyAgeworICAgIEZUX0J5dGUqICBjdXIgPSAqYWN1cjsKKworCisgICAgd2hpbGUgKCBjdXIgPCBsaW1pdCApCisgICAgeworICAgICAgaWYgKCAhSVNfUFNfU1BBQ0UoICpjdXIgKSApCisgICAgICB7CisgICAgICAgIGlmICggKmN1ciA9PSAnJScgKQorICAgICAgICAgIC8qIEFjY29yZGluZyB0byB0aGUgUExSTSwgYSBjb21tZW50IGlzIGVxdWFsIHRvIGEgc3BhY2UuICovCisgICAgICAgICAgc2tpcF9jb21tZW50KCAmY3VyLCBsaW1pdCApOworICAgICAgICBlbHNlCisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBjdXIrKzsKKyAgICB9CisKKyAgICAqYWN1ciA9IGN1cjsKKyAgfQorCisKKyNkZWZpbmUgSVNfT0NUQUxfRElHSVQoIGMgKSAoICcwJyA8PSAoYykgJiYgKGMpIDw9ICc3JyApCisKKworICAvKiBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBgKCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICphY3VyIGlzIHBvc2l0aW9uZWQgYXQgdGhlIGNoYXJhY3RlciBhZnRlciB0aGUgY2xvc2luZyBgKScgKi8KKworICBzdGF0aWMgRlRfRXJyb3IKKyAgc2tpcF9saXRlcmFsX3N0cmluZyggRlRfQnl0ZSogICphY3VyLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0ICkKKyAgeworICAgIEZUX0J5dGUqICAgICAgY3VyICAgPSAqYWN1cjsKKyAgICBGVF9JbnQgICAgICAgIGVtYmVkID0gMDsKKyAgICBGVF9FcnJvciAgICAgIGVycm9yID0gRlRfRVJSKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgdW5zaWduZWQgaW50ICBpOworCisKKyAgICB3aGlsZSAoIGN1ciA8IGxpbWl0ICkKKyAgICB7CisgICAgICBGVF9CeXRlICBjID0gKmN1cjsKKworCisgICAgICArK2N1cjsKKworICAgICAgaWYgKCBjID09ICdcXCcgKQorICAgICAgeworICAgICAgICAvKiBSZWQgQm9vayAzcmQgZWQuLCBzZWN0aW9uIGBMaXRlcmFsIFRleHQgU3RyaW5ncycsIHAuIDI5OiAgICAgKi8KKyAgICAgICAgLyogQSBiYWNrc2xhc2ggY2FuIGludHJvZHVjZSB0aHJlZSBkaWZmZXJlbnQgdHlwZXMgICAgICAgICAgICAgICovCisgICAgICAgIC8qIG9mIGVzY2FwZSBzZXF1ZW5jZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgIC0gYSBzcGVjaWFsIGVzY2FwZWQgY2hhciBsaWtlIFxyLCBcbiwgZXRjLiAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogICAtIGEgb25lLSwgdHdvLSwgb3IgdGhyZWUtZGlnaXQgb2N0YWwgbnVtYmVyICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qICAgLSBub25lIG9mIHRoZSBhYm92ZSBpbiB3aGljaCBjYXNlIHRoZSBiYWNrc2xhc2ggaXMgaWdub3JlZCAqLworCisgICAgICAgIGlmICggY3VyID09IGxpbWl0ICkKKyAgICAgICAgICAvKiBlcnJvciAob3IgdG8gYmUgaWdub3JlZD8pICovCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgc3dpdGNoICggKmN1ciApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBza2lwIGBzcGVjaWFsJyBlc2NhcGUgKi8KKyAgICAgICAgY2FzZSAnbic6CisgICAgICAgIGNhc2UgJ3InOgorICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgIGNhc2UgJ2YnOgorICAgICAgICBjYXNlICdcXCc6CisgICAgICAgIGNhc2UgJygnOgorICAgICAgICBjYXNlICcpJzoKKyAgICAgICAgICArK2N1cjsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIC8qIHNraXAgb2N0YWwgZXNjYXBlIG9yIGlnbm9yZSBiYWNrc2xhc2ggKi8KKyAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IDMgJiYgY3VyIDwgbGltaXQ7ICsraSApCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKCAhSVNfT0NUQUxfRElHSVQoICpjdXIgKSApCisgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICArK2N1cjsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCBjID09ICcoJyApCisgICAgICAgIGVtYmVkKys7CisgICAgICBlbHNlIGlmICggYyA9PSAnKScgKQorICAgICAgeworICAgICAgICBlbWJlZC0tOworICAgICAgICBpZiAoIGVtYmVkID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAqYWN1ciA9IGN1cjsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgYDwnICovCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHNraXBfc3RyaW5nKCBGVF9CeXRlKiAgKmFjdXIsCisgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0ICkKKyAgeworICAgIEZUX0J5dGUqICBjdXIgPSAqYWN1cjsKKyAgICBGVF9FcnJvciAgZXJyID0gIEZUX0Vycl9PazsKKworCisgICAgd2hpbGUgKCArK2N1ciA8IGxpbWl0ICkKKyAgICB7CisgICAgICAvKiBBbGwgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpZ25vcmVkLiAqLworICAgICAgc2tpcF9zcGFjZXMoICZjdXIsIGxpbWl0ICk7CisgICAgICBpZiAoIGN1ciA+PSBsaW1pdCApCisgICAgICAgIGJyZWFrOworCisgICAgICBpZiAoICFJU19QU19YRElHSVQoICpjdXIgKSApCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICggY3VyIDwgbGltaXQgJiYgKmN1ciAhPSAnPicgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggInNraXBfc3RyaW5nOiBtaXNzaW5nIGNsb3NpbmcgZGVsaW1pdGVyIGA+J1xuIiApKTsKKyAgICAgIGVyciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGN1cisrOworCisgICAgKmFjdXIgPSBjdXI7CisgICAgcmV0dXJuIGVycjsKKyAgfQorCisKKyAgLyogZmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgdGhlIG9wZW5pbmcgYnJhY2UgdGhhdCAqLworICAvKiBzdGFydHMgdGhlIHByb2NlZHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgLyogTkI6IFsgYW5kIF0gbmVlZCBub3QgbWF0Y2g6ICAgICAgICAgICAgICAgICAgICAqLworICAvKiBgL2ZvbyB7W30gZGVmJyBpcyBhIHZhbGlkIFBvc3RTY3JpcHQgZnJhZ21lbnQsICovCisgIC8qIGV2ZW4gd2l0aGluIGEgVHlwZTEgZm9udCAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICBzdGF0aWMgRlRfRXJyb3IKKyAgc2tpcF9wcm9jZWR1cmUoIEZUX0J5dGUqICAqYWN1ciwKKyAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQgKQorICB7CisgICAgRlRfQnl0ZSogIGN1cjsKKyAgICBGVF9JbnQgICAgZW1iZWQgPSAwOworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKworCisgICAgRlRfQVNTRVJUKCAqKmFjdXIgPT0gJ3snICk7CisKKyAgICBmb3IgKCBjdXIgPSAqYWN1cjsgY3VyIDwgbGltaXQgJiYgZXJyb3IgPT0gRlRfRXJyX09rOyArK2N1ciApCisgICAgeworICAgICAgc3dpdGNoICggKmN1ciApCisgICAgICB7CisgICAgICBjYXNlICd7JzoKKyAgICAgICAgKytlbWJlZDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgJ30nOgorICAgICAgICAtLWVtYmVkOworICAgICAgICBpZiAoIGVtYmVkID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgKytjdXI7CisgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgJygnOgorICAgICAgICBlcnJvciA9IHNraXBfbGl0ZXJhbF9zdHJpbmcoICZjdXIsIGxpbWl0ICk7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlICc8JzoKKyAgICAgICAgZXJyb3IgPSBza2lwX3N0cmluZyggJmN1ciwgbGltaXQgKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgJyUnOgorICAgICAgICBza2lwX2NvbW1lbnQoICZjdXIsIGxpbWl0ICk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICBlbmQ6CisgICAgaWYgKCBlbWJlZCAhPSAwICkKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKworICAgICphY3VyID0gY3VyOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQWxsIGV4cG9ydGVkIHBhcnNpbmcgcm91dGluZXMgaGFuZGxlIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgc3RvcCBhdCAqLworICAvKiB0aGUgZmlyc3QgY2hhcmFjdGVyIHdoaWNoIGlzbid0IHBhcnQgb2YgdGhlIGp1c3QgaGFuZGxlZCB0b2tlbi4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgcHNfcGFyc2VyX3NraXBfUFNfdG9rZW4oIFBTX1BhcnNlciAgcGFyc2VyICkKKyAgeworICAgIC8qIE5vdGU6IFBvc3RTY3JpcHQgYWxsb3dzIGFueSBub24tZGVsaW1pdGluZywgbm9uLXdoaXRlc3BhY2UgICAgICAgICovCisgICAgLyogICAgICAgY2hhcmFjdGVyIGluIGEgbmFtZSAoUFMgUmVmIE1hbnVhbCwgM3JkIGVkLCBwMzEpLiAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICBQb3N0U2NyaXB0IGRlbGltaXRlcnMgYXJlICgsICksIDwsID4sIFssIF0sIHssIH0sIC8sIGFuZCAlLiAqLworCisgICAgRlRfQnl0ZSogIGN1ciAgID0gcGFyc2VyLT5jdXJzb3I7CisgICAgRlRfQnl0ZSogIGxpbWl0ID0gcGFyc2VyLT5saW1pdDsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIHNraXBfc3BhY2VzKCAmY3VyLCBsaW1pdCApOyAgICAgICAgICAgICAvKiB0aGlzIGFsc28gc2tpcHMgY29tbWVudHMgKi8KKyAgICBpZiAoIGN1ciA+PSBsaW1pdCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBzZWxmLWRlbGltaXRpbmcsIHNpbmdsZS1jaGFyYWN0ZXIgdG9rZW5zICovCisgICAgaWYgKCAqY3VyID09ICdbJyB8fCAqY3VyID09ICddJyApCisgICAgeworICAgICAgY3VyKys7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLyogc2tpcCBiYWxhbmNlZCBleHByZXNzaW9ucyAocHJvY2VkdXJlcyBhbmQgc3RyaW5ncykgKi8KKworICAgIGlmICggKmN1ciA9PSAneycgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHsuLi59ICovCisgICAgeworICAgICAgZXJyb3IgPSBza2lwX3Byb2NlZHVyZSggJmN1ciwgbGltaXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoICpjdXIgPT0gJygnICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoLi4uKSAqLworICAgIHsKKyAgICAgIGVycm9yID0gc2tpcF9saXRlcmFsX3N0cmluZyggJmN1ciwgbGltaXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoICpjdXIgPT0gJzwnICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA8Li4uPiAqLworICAgIHsKKyAgICAgIGlmICggY3VyICsgMSA8IGxpbWl0ICYmICooY3VyICsgMSkgPT0gJzwnICkgICAvKiA8PCAqLworICAgICAgeworICAgICAgICBjdXIrKzsKKyAgICAgICAgY3VyKys7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGVycm9yID0gc2tpcF9zdHJpbmcoICZjdXIsIGxpbWl0ICk7CisKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoICpjdXIgPT0gJz4nICkKKyAgICB7CisgICAgICBjdXIrKzsKKyAgICAgIGlmICggY3VyID49IGxpbWl0IHx8ICpjdXIgIT0gJz4nICkgICAgICAgICAgICAgLyogPj4gKi8KKyAgICAgIHsKKyAgICAgICAgRlRfRVJST1IoKCAicHNfcGFyc2VyX3NraXBfUFNfdG9rZW46IgorICAgICAgICAgICAgICAgICAgICIgdW5leHBlY3RlZCBjbG9zaW5nIGRlbGltaXRlciBgPidcbiIgKSk7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorICAgICAgY3VyKys7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgaWYgKCAqY3VyID09ICcvJyApCisgICAgICBjdXIrKzsKKworICAgIC8qIGFueXRoaW5nIGVsc2UgKi8KKyAgICB3aGlsZSAoIGN1ciA8IGxpbWl0ICkKKyAgICB7CisgICAgICAvKiAqY3VyIG1pZ2h0IGJlIGludmFsaWQgKGUuZy4sICcpJyBvciAnfScpLCBidXQgdGhpcyAgICovCisgICAgICAvKiBpcyBoYW5kbGVkIGJ5IHRoZSB0ZXN0IGBjdXIgPT0gcGFyc2VyLT5jdXJzb3InIGJlbG93ICovCisgICAgICBpZiAoIElTX1BTX0RFTElNKCAqY3VyICkgKQorICAgICAgICBicmVhazsKKworICAgICAgY3VyKys7CisgICAgfQorCisgIEV4aXQ6CisgICAgaWYgKCBjdXIgPCBsaW1pdCAmJiBjdXIgPT0gcGFyc2VyLT5jdXJzb3IgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggInBzX3BhcnNlcl9za2lwX1BTX3Rva2VuOiIKKyAgICAgICAgICAgICAgICAgIiBjdXJyZW50IHRva2VuIGlzIGAlYycgd2hpY2ggaXMgc2VsZi1kZWxpbWl0aW5nXG4iCisgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAiCisgICAgICAgICAgICAgICAgICIgYnV0IGludmFsaWQgYXQgdGhpcyBwb2ludFxuIiwKKyAgICAgICAgICAgICAgICAgKmN1ciApKTsKKworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgIH0KKworICAgIHBhcnNlci0+ZXJyb3IgID0gZXJyb3I7CisgICAgcGFyc2VyLT5jdXJzb3IgPSBjdXI7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHBzX3BhcnNlcl9za2lwX3NwYWNlcyggUFNfUGFyc2VyICBwYXJzZXIgKQorICB7CisgICAgc2tpcF9zcGFjZXMoICZwYXJzZXItPmN1cnNvciwgcGFyc2VyLT5saW1pdCApOworICB9CisKKworICAvKiBgdG9rZW4nIGhlcmUgbWVhbnMgZWl0aGVyIHNvbWV0aGluZyBiZXR3ZWVuIGJhbGFuY2VkIGRlbGltaXRlcnMgKi8KKyAgLyogb3IgdGhlIG5leHQgdG9rZW47IHRoZSBkZWxpbWl0ZXJzIGFyZSBub3QgcmVtb3ZlZC4gICAgICAgICAgICAgICovCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgcHNfcGFyc2VyX3RvX3Rva2VuKCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICBUMV9Ub2tlbiAgIHRva2VuICkKKyAgeworICAgIEZUX0J5dGUqICBjdXI7CisgICAgRlRfQnl0ZSogIGxpbWl0OworICAgIEZUX0ludCAgICBlbWJlZDsKKworCisgICAgdG9rZW4tPnR5cGUgID0gVDFfVE9LRU5fVFlQRV9OT05FOworICAgIHRva2VuLT5zdGFydCA9IDA7CisgICAgdG9rZW4tPmxpbWl0ID0gMDsKKworICAgIC8qIGZpcnN0IG9mIGFsbCwgc2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgKi8KKyAgICBwc19wYXJzZXJfc2tpcF9zcGFjZXMoIHBhcnNlciApOworCisgICAgY3VyICAgPSBwYXJzZXItPmN1cnNvcjsKKyAgICBsaW1pdCA9IHBhcnNlci0+bGltaXQ7CisKKyAgICBpZiAoIGN1ciA+PSBsaW1pdCApCisgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2ggKCAqY3VyICkKKyAgICB7CisgICAgICAvKioqKioqKioqKioqKiBjaGVjayBmb3IgbGl0ZXJhbCBzdHJpbmcgKioqKioqKioqKioqKioqKiovCisgICAgY2FzZSAnKCc6CisgICAgICB0b2tlbi0+dHlwZSAgPSBUMV9UT0tFTl9UWVBFX1NUUklORzsKKyAgICAgIHRva2VuLT5zdGFydCA9IGN1cjsKKworICAgICAgaWYgKCBza2lwX2xpdGVyYWxfc3RyaW5nKCAmY3VyLCBsaW1pdCApID09IEZUX0Vycl9PayApCisgICAgICAgIHRva2VuLT5saW1pdCA9IGN1cjsKKyAgICAgIGJyZWFrOworCisgICAgICAvKioqKioqKioqKioqKiBjaGVjayBmb3IgcHJvZ3JhbXMvYXJyYXkgKioqKioqKioqKioqKioqKiovCisgICAgY2FzZSAneyc6CisgICAgICB0b2tlbi0+dHlwZSAgPSBUMV9UT0tFTl9UWVBFX0FSUkFZOworICAgICAgdG9rZW4tPnN0YXJ0ID0gY3VyOworCisgICAgICBpZiAoIHNraXBfcHJvY2VkdXJlKCAmY3VyLCBsaW1pdCApID09IEZUX0Vycl9PayApCisgICAgICAgIHRva2VuLT5saW1pdCA9IGN1cjsKKyAgICAgIGJyZWFrOworCisgICAgICAvKioqKioqKioqKioqKiBjaGVjayBmb3IgdGFibGUvYXJyYXkgKioqKioqKioqKioqKioqKioqKiovCisgICAgICAvKiBYWFg6IGluIHRoZW9yeSB3ZSBzaG91bGQgYWxzbyBsb29rIGZvciAiPDwiICAgICAgICAgICovCisgICAgICAvKiAgICAgIHNpbmNlIHRoaXMgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gIlsiOyAgICovCisgICAgICAvKiAgICAgIGluIHByYWN0aWNlIGl0IGRvZXNuJ3QgbWF0dGVyICg/KSAgICAgICAgICAgICAgICovCisgICAgY2FzZSAnWyc6CisgICAgICB0b2tlbi0+dHlwZSAgPSBUMV9UT0tFTl9UWVBFX0FSUkFZOworICAgICAgZW1iZWQgICAgICAgID0gMTsKKyAgICAgIHRva2VuLT5zdGFydCA9IGN1cisrOworCisgICAgICAvKiB3ZSBuZWVkIHRoaXMgdG8gY2F0Y2ggYFsgXScgKi8KKyAgICAgIHBhcnNlci0+Y3Vyc29yID0gY3VyOworICAgICAgcHNfcGFyc2VyX3NraXBfc3BhY2VzKCBwYXJzZXIgKTsKKyAgICAgIGN1ciA9IHBhcnNlci0+Y3Vyc29yOworCisgICAgICB3aGlsZSAoIGN1ciA8IGxpbWl0ICYmICFwYXJzZXItPmVycm9yICkKKyAgICAgIHsKKyAgICAgICAgLyogWFhYOiB0aGlzIGlzIHdyb25nIGJlY2F1c2UgaXQgZG9lcyBub3QgICAgICAqLworICAgICAgICAvKiAgICAgIHNraXAgY29tbWVudHMsIHByb2NlZHVyZXMsIGFuZCBzdHJpbmdzICovCisgICAgICAgIGlmICggKmN1ciA9PSAnWycgKQorICAgICAgICAgIGVtYmVkKys7CisgICAgICAgIGVsc2UgaWYgKCAqY3VyID09ICddJyApCisgICAgICAgIHsKKyAgICAgICAgICBlbWJlZC0tOworICAgICAgICAgIGlmICggZW1iZWQgPD0gMCApCisgICAgICAgICAgeworICAgICAgICAgICAgdG9rZW4tPmxpbWl0ID0gKytjdXI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwYXJzZXItPmN1cnNvciA9IGN1cjsKKyAgICAgICAgcHNfcGFyc2VyX3NraXBfUFNfdG9rZW4oIHBhcnNlciApOworICAgICAgICAvKiB3ZSBuZWVkIHRoaXMgdG8gY2F0Y2ggYFtYWFggXScgKi8KKyAgICAgICAgcHNfcGFyc2VyX3NraXBfc3BhY2VzICAoIHBhcnNlciApOworICAgICAgICBjdXIgPSBwYXJzZXItPmN1cnNvcjsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiAqKioqKioqKioqKiogb3RoZXJ3aXNlLCBpdCBpcyBhbnkgdG9rZW4gKioqKioqKioqKioqKiovCisgICAgZGVmYXVsdDoKKyAgICAgIHRva2VuLT5zdGFydCA9IGN1cjsKKyAgICAgIHRva2VuLT50eXBlICA9ICggKmN1ciA9PSAnLycgPyBUMV9UT0tFTl9UWVBFX0tFWSA6IFQxX1RPS0VOX1RZUEVfQU5ZICk7CisgICAgICBwc19wYXJzZXJfc2tpcF9QU190b2tlbiggcGFyc2VyICk7CisgICAgICBjdXIgPSBwYXJzZXItPmN1cnNvcjsKKyAgICAgIGlmICggIXBhcnNlci0+ZXJyb3IgKQorICAgICAgICB0b2tlbi0+bGltaXQgPSBjdXI7CisgICAgfQorCisgICAgaWYgKCAhdG9rZW4tPmxpbWl0ICkKKyAgICB7CisgICAgICB0b2tlbi0+c3RhcnQgPSAwOworICAgICAgdG9rZW4tPnR5cGUgID0gVDFfVE9LRU5fVFlQRV9OT05FOworICAgIH0KKworICAgIHBhcnNlci0+Y3Vyc29yID0gY3VyOworICB9CisKKworICAvKiBOQjogYHRva2VucycgY2FuIGJlIE5VTEwgaWYgd2Ugb25seSB3YW50IHRvIGNvdW50ICovCisgIC8qIHRoZSBudW1iZXIgb2YgYXJyYXkgZWxlbWVudHMgICAgICAgICAgICAgICAgICAgICAgKi8KKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBwc19wYXJzZXJfdG9fdG9rZW5fYXJyYXkoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQxX1Rva2VuICAgdG9rZW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgbWF4X3Rva2VucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQqICAgIHBudW1fdG9rZW5zICkKKyAgeworICAgIFQxX1Rva2VuUmVjICBtYXN0ZXI7CisKKworICAgICpwbnVtX3Rva2VucyA9IC0xOworCisgICAgLyogdGhpcyBhbHNvIGhhbmRsZXMgbGVhZGluZyB3aGl0ZXNwYWNlICovCisgICAgcHNfcGFyc2VyX3RvX3Rva2VuKCBwYXJzZXIsICZtYXN0ZXIgKTsKKworICAgIGlmICggbWFzdGVyLnR5cGUgPT0gVDFfVE9LRU5fVFlQRV9BUlJBWSApCisgICAgeworICAgICAgRlRfQnl0ZSogIG9sZF9jdXJzb3IgPSBwYXJzZXItPmN1cnNvcjsKKyAgICAgIEZUX0J5dGUqICBvbGRfbGltaXQgID0gcGFyc2VyLT5saW1pdDsKKyAgICAgIFQxX1Rva2VuICBjdXIgICAgICAgID0gdG9rZW5zOworICAgICAgVDFfVG9rZW4gIGxpbWl0ICAgICAgPSBjdXIgKyBtYXhfdG9rZW5zOworCisKKyAgICAgIC8qIGRvbid0IGluY2x1ZGUgb3V0ZXJtb3N0IGRlbGltaXRlcnMgKi8KKyAgICAgIHBhcnNlci0+Y3Vyc29yID0gbWFzdGVyLnN0YXJ0ICsgMTsKKyAgICAgIHBhcnNlci0+bGltaXQgID0gbWFzdGVyLmxpbWl0IC0gMTsKKworICAgICAgd2hpbGUgKCBwYXJzZXItPmN1cnNvciA8IHBhcnNlci0+bGltaXQgKQorICAgICAgeworICAgICAgICBUMV9Ub2tlblJlYyAgdG9rZW47CisKKworICAgICAgICBwc19wYXJzZXJfdG9fdG9rZW4oIHBhcnNlciwgJnRva2VuICk7CisgICAgICAgIGlmICggIXRva2VuLnR5cGUgKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICggdG9rZW5zICE9IE5VTEwgJiYgY3VyIDwgbGltaXQgKQorICAgICAgICAgICpjdXIgPSB0b2tlbjsKKworICAgICAgICBjdXIrKzsKKyAgICAgIH0KKworICAgICAgKnBudW1fdG9rZW5zID0gKEZUX0ludCkoIGN1ciAtIHRva2VucyApOworCisgICAgICBwYXJzZXItPmN1cnNvciA9IG9sZF9jdXJzb3I7CisgICAgICBwYXJzZXItPmxpbWl0ICA9IG9sZF9saW1pdDsKKyAgICB9CisgIH0KKworCisgIC8qIGZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGEgZGVsaW1pdGVyIG9yIGEgcGFydCBvZiBhIG51bWJlciAqLworICAvKiBOQjogYGNvb3JkcycgY2FuIGJlIE5VTEwgaWYgd2UganVzdCB3YW50IHRvIHNraXAgdGhlICAgICAgKi8KKyAgLyogICAgIGFycmF5OyBpbiB0aGlzIGNhc2Ugd2UgaWdub3JlIGBtYXhfY29vcmRzJyAgICAgICAgICAgICovCisKKyAgc3RhdGljIEZUX0ludAorICBwc190b2Nvb3JkYXJyYXkoIEZUX0J5dGUqICAqYWN1ciwKKyAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgbWF4X2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICBGVF9TaG9ydCogIGNvb3JkcyApCisgIHsKKyAgICBGVF9CeXRlKiAgY3VyICAgPSAqYWN1cjsKKyAgICBGVF9JbnQgICAgY291bnQgPSAwOworICAgIEZUX0J5dGUgICBjLCBlbmRlcjsKKworCisgICAgaWYgKCBjdXIgPj0gbGltaXQgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogY2hlY2sgZm9yIHRoZSBiZWdpbm5pbmcgb2YgYW4gYXJyYXk7IG90aGVyd2lzZSwgb25seSBvbmUgbnVtYmVyICovCisgICAgLyogd2lsbCBiZSByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgYyAgICAgPSAqY3VyOworICAgIGVuZGVyID0gMDsKKworICAgIGlmICggYyA9PSAnWycgKQorICAgICAgZW5kZXIgPSAnXSc7CisgICAgZWxzZSBpZiAoIGMgPT0gJ3snICkKKyAgICAgIGVuZGVyID0gJ30nOworCisgICAgaWYgKCBlbmRlciApCisgICAgICBjdXIrKzsKKworICAgIC8qIG5vdywgcmVhZCB0aGUgY29vcmRpbmF0ZXMgKi8KKyAgICB3aGlsZSAoIGN1ciA8IGxpbWl0ICkKKyAgICB7CisgICAgICBGVF9TaG9ydCAgZHVtbXk7CisgICAgICBGVF9CeXRlKiAgb2xkX2N1cjsKKworCisgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgaW4gZnJvbnQgb2YgZGF0YSAqLworICAgICAgc2tpcF9zcGFjZXMoICZjdXIsIGxpbWl0ICk7CisgICAgICBpZiAoIGN1ciA+PSBsaW1pdCApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgaWYgKCAqY3VyID09IGVuZGVyICkKKyAgICAgIHsKKyAgICAgICAgY3VyKys7CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBvbGRfY3VyID0gY3VyOworCisgICAgICBpZiAoIGNvb3JkcyAhPSBOVUxMICYmIGNvdW50ID49IG1heF9jb29yZHMgKQorICAgICAgICBicmVhazsKKworICAgICAgLyogY2FsbCBQU19Db252X1RvRml4ZWQoKSBldmVuIGlmIGNvb3JkcyA9PSBOVUxMICovCisgICAgICAvKiB0byBwcm9wZXJseSBwYXJzZSBudW1iZXIgYXQgYGN1cicgICAgICAgICAgICAgKi8KKyAgICAgICooIGNvb3JkcyAhPSBOVUxMID8gJmNvb3Jkc1tjb3VudF0gOiAmZHVtbXkgKSA9CisgICAgICAgIChGVF9TaG9ydCkoIFBTX0NvbnZfVG9GaXhlZCggJmN1ciwgbGltaXQsIDAgKSA+PiAxNiApOworCisgICAgICBpZiAoIG9sZF9jdXIgPT0gY3VyICkKKyAgICAgIHsKKyAgICAgICAgY291bnQgPSAtMTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBjb3VudCsrOworCisgICAgICBpZiAoICFlbmRlciApCisgICAgICAgIGJyZWFrOworICAgIH0KKworICBFeGl0OgorICAgICphY3VyID0gY3VyOworICAgIHJldHVybiBjb3VudDsKKyAgfQorCisKKyAgLyogZmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgYSBkZWxpbWl0ZXIgb3IgYSBwYXJ0IG9mIGEgbnVtYmVyICovCisgIC8qIE5COiBgdmFsdWVzJyBjYW4gYmUgTlVMTCBpZiB3ZSBqdXN0IHdhbnQgdG8gc2tpcCB0aGUgICAgICAqLworICAvKiAgICAgYXJyYXk7IGluIHRoaXMgY2FzZSB3ZSBpZ25vcmUgYG1heF92YWx1ZXMnICAgICAgICAgICAgKi8KKworICBzdGF0aWMgRlRfSW50CisgIHBzX3RvZml4ZWRhcnJheSggRlRfQnl0ZSogICphY3VyLAorICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQsCisgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBtYXhfdmFsdWVzLAorICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgcG93ZXJfdGVuICkKKyAgeworICAgIEZUX0J5dGUqICBjdXIgICA9ICphY3VyOworICAgIEZUX0ludCAgICBjb3VudCA9IDA7CisgICAgRlRfQnl0ZSAgIGMsIGVuZGVyOworCisKKyAgICBpZiAoIGN1ciA+PSBsaW1pdCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBDaGVjayBmb3IgdGhlIGJlZ2lubmluZyBvZiBhbiBhcnJheS4gIE90aGVyd2lzZSwgb25seSBvbmUgbnVtYmVyICovCisgICAgLyogd2lsbCBiZSByZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGMgICAgID0gKmN1cjsKKyAgICBlbmRlciA9IDA7CisKKyAgICBpZiAoIGMgPT0gJ1snICkKKyAgICAgIGVuZGVyID0gJ10nOworICAgIGVsc2UgaWYgKCBjID09ICd7JyApCisgICAgICBlbmRlciA9ICd9JzsKKworICAgIGlmICggZW5kZXIgKQorICAgICAgY3VyKys7CisKKyAgICAvKiBub3csIHJlYWQgdGhlIHZhbHVlcyAqLworICAgIHdoaWxlICggY3VyIDwgbGltaXQgKQorICAgIHsKKyAgICAgIEZUX0ZpeGVkICBkdW1teTsKKyAgICAgIEZUX0J5dGUqICBvbGRfY3VyOworCisKKyAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBpbiBmcm9udCBvZiBkYXRhICovCisgICAgICBza2lwX3NwYWNlcyggJmN1ciwgbGltaXQgKTsKKyAgICAgIGlmICggY3VyID49IGxpbWl0ICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBpZiAoICpjdXIgPT0gZW5kZXIgKQorICAgICAgeworICAgICAgICBjdXIrKzsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIG9sZF9jdXIgPSBjdXI7CisKKyAgICAgIGlmICggdmFsdWVzICE9IE5VTEwgJiYgY291bnQgPj0gbWF4X3ZhbHVlcyApCisgICAgICAgIGJyZWFrOworCisgICAgICAvKiBjYWxsIFBTX0NvbnZfVG9GaXhlZCgpIGV2ZW4gaWYgY29vcmRzID09IE5VTEwgKi8KKyAgICAgIC8qIHRvIHByb3Blcmx5IHBhcnNlIG51bWJlciBhdCBgY3VyJyAgICAgICAgICAgICAqLworICAgICAgKiggdmFsdWVzICE9IE5VTEwgPyAmdmFsdWVzW2NvdW50XSA6ICZkdW1teSApID0KKyAgICAgICAgUFNfQ29udl9Ub0ZpeGVkKCAmY3VyLCBsaW1pdCwgcG93ZXJfdGVuICk7CisKKyAgICAgIGlmICggb2xkX2N1ciA9PSBjdXIgKQorICAgICAgeworICAgICAgICBjb3VudCA9IC0xOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGNvdW50Kys7CisKKyAgICAgIGlmICggIWVuZGVyICkKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgIEV4aXQ6CisgICAgKmFjdXIgPSBjdXI7CisgICAgcmV0dXJuIGNvdW50OworICB9CisKKworI2lmIDAKKworICBzdGF0aWMgRlRfU3RyaW5nKgorICBwc190b3N0cmluZyggRlRfQnl0ZSoqICBjdXJzb3IsCisgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGxpbWl0LAorICAgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgKQorICB7CisgICAgRlRfQnl0ZSogICAgY3VyID0gKmN1cnNvcjsKKyAgICBGVF9QdHJEaXN0ICBsZW4gPSAwOworICAgIEZUX0ludCAgICAgIGNvdW50OworICAgIEZUX1N0cmluZyogIHJlc3VsdDsKKyAgICBGVF9FcnJvciAgICBlcnJvcjsKKworCisgICAgLyogWFhYOiBzb21lIHN0dXBpZCBmb250cyBoYXZlIGEgYE5vdGljZScgb3IgYENvcHlyaWdodCcgc3RyaW5nICAgICAqLworICAgIC8qICAgICAgdGhhdCBzaW1wbHkgZG9lc24ndCBiZWdpbiB3aXRoIGFuIG9wZW5pbmcgcGFyZW50aGVzaXMsIGV2ZW4gKi8KKyAgICAvKiAgICAgIHRob3VnaCB0aGV5IGhhdmUgYSBjbG9zaW5nIG9uZSEgIEUuZy4gImFtdW5jaWFsLnBmYiIgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgV2UgbXVzdCBkZWFsIHdpdGggdGhlc2UgaWxsLWZhdGVkIGNhc2VzIHRoZXJlLiAgTm90ZSB0aGF0ICAgKi8KKyAgICAvKiAgICAgIHRoZXNlIGZvbnRzIGRpZG4ndCB3b3JrIHdpdGggdGhlIG9sZCBUeXBlIDEgZHJpdmVyIGFzIHRoZSAgICovCisgICAgLyogICAgICBub3RpY2UvY29weXJpZ2h0IHdhcyBub3QgcmVjb2duaXplZCBhcyBhIHZhbGlkIHN0cmluZyB0b2tlbiAqLworICAgIC8qICAgICAgYW5kIG1hZGUgdGhlIG9sZCB0b2tlbiBwYXJzZXIgY29tbWl0IGVycm9ycy4gICAgICAgICAgICAgICAgKi8KKworICAgIHdoaWxlICggY3VyIDwgbGltaXQgJiYgKCAqY3VyID09ICcgJyB8fCAqY3VyID09ICdcdCcgKSApCisgICAgICBjdXIrKzsKKyAgICBpZiAoIGN1ciArIDEgPj0gbGltaXQgKQorICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoICpjdXIgPT0gJygnICkKKyAgICAgIGN1cisrOyAgLyogc2tpcCB0aGUgb3BlbmluZyBwYXJlbnRoZXNpcywgaWYgdGhlcmUgaXMgb25lICovCisKKyAgICAqY3Vyc29yID0gY3VyOworICAgIGNvdW50ICAgPSAwOworCisgICAgLyogdGhlbiwgY291bnQgaXRzIGxlbmd0aCAqLworICAgIGZvciAoIDsgY3VyIDwgbGltaXQ7IGN1cisrICkKKyAgICB7CisgICAgICBpZiAoICpjdXIgPT0gJygnICkKKyAgICAgICAgY291bnQrKzsKKworICAgICAgZWxzZSBpZiAoICpjdXIgPT0gJyknICkKKyAgICAgIHsKKyAgICAgICAgY291bnQtLTsKKyAgICAgICAgaWYgKCBjb3VudCA8IDAgKQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIGxlbiA9IGN1ciAtICpjdXJzb3I7CisgICAgaWYgKCBjdXIgPj0gbGltaXQgfHwgRlRfQUxMT0MoIHJlc3VsdCwgbGVuICsgMSApICkKKyAgICAgIHJldHVybiAwOworCisgICAgLyogbm93IGNvcHkgdGhlIHN0cmluZyAqLworICAgIEZUX01FTV9DT1BZKCByZXN1bHQsICpjdXJzb3IsIGxlbiApOworICAgIHJlc3VsdFtsZW5dID0gJ1wwJzsKKyAgICAqY3Vyc29yID0gY3VyOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworI2VuZGlmIC8qIDAgKi8KKworCisgIHN0YXRpYyBpbnQKKyAgcHNfdG9ib29sKCBGVF9CeXRlKiAgKmFjdXIsCisgICAgICAgICAgICAgRlRfQnl0ZSogICBsaW1pdCApCisgIHsKKyAgICBGVF9CeXRlKiAgY3VyICAgID0gKmFjdXI7CisgICAgRlRfQm9vbCAgIHJlc3VsdCA9IDA7CisKKworICAgIC8qIHJldHVybiAxIGlmIHdlIGZpbmQgYHRydWUnLCAwIG90aGVyd2lzZSAqLworICAgIGlmICggY3VyICsgMyA8IGxpbWl0ICYmCisgICAgICAgICBjdXJbMF0gPT0gJ3QnICAgJiYKKyAgICAgICAgIGN1clsxXSA9PSAncicgICAmJgorICAgICAgICAgY3VyWzJdID09ICd1JyAgICYmCisgICAgICAgICBjdXJbM10gPT0gJ2UnICAgKQorICAgIHsKKyAgICAgIHJlc3VsdCA9IDE7CisgICAgICBjdXIgICArPSA1OworICAgIH0KKyAgICBlbHNlIGlmICggY3VyICsgNCA8IGxpbWl0ICYmCisgICAgICAgICAgICAgIGN1clswXSA9PSAnZicgICAmJgorICAgICAgICAgICAgICBjdXJbMV0gPT0gJ2EnICAgJiYKKyAgICAgICAgICAgICAgY3VyWzJdID09ICdsJyAgICYmCisgICAgICAgICAgICAgIGN1clszXSA9PSAncycgICAmJgorICAgICAgICAgICAgICBjdXJbNF0gPT0gJ2UnICAgKQorICAgIHsKKyAgICAgIHJlc3VsdCA9IDA7CisgICAgICBjdXIgICArPSA2OworICAgIH0KKworICAgICphY3VyID0gY3VyOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIGxvYWQgYSBzaW1wbGUgZmllbGQgKGkuZS4gbm9uLXRhYmxlKSBpbnRvIHRoZSBjdXJyZW50IGxpc3Qgb2Ygb2JqZWN0cyAqLworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBwc19wYXJzZXJfbG9hZF9maWVsZCggUFNfUGFyc2VyICAgICAgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxX0ZpZWxkICBmaWVsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKiAgICAgICAgICBvYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIG1heF9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICAgICAgIHBmbGFncyApCisgIHsKKyAgICBUMV9Ub2tlblJlYyAgIHRva2VuOworICAgIEZUX0J5dGUqICAgICAgY3VyOworICAgIEZUX0J5dGUqICAgICAgbGltaXQ7CisgICAgRlRfVUludCAgICAgICBjb3VudDsKKyAgICBGVF9VSW50ICAgICAgIGlkeDsKKyAgICBGVF9FcnJvciAgICAgIGVycm9yOworICAgIFQxX0ZpZWxkVHlwZSAgdHlwZTsKKworCisgICAgLyogdGhpcyBhbHNvIHNraXBzIGxlYWRpbmcgd2hpdGVzcGFjZSAqLworICAgIHBzX3BhcnNlcl90b190b2tlbiggcGFyc2VyLCAmdG9rZW4gKTsKKyAgICBpZiAoICF0b2tlbi50eXBlICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIGNvdW50ID0gMTsKKyAgICBpZHggICA9IDA7CisgICAgY3VyICAgPSB0b2tlbi5zdGFydDsKKyAgICBsaW1pdCA9IHRva2VuLmxpbWl0OworCisgICAgdHlwZSA9IGZpZWxkLT50eXBlOworCisgICAgLyogd2UgbXVzdCBkZXRlY3QgYXJyYXlzIGluIC9Gb250QkJveCAqLworICAgIGlmICggdHlwZSA9PSBUMV9GSUVMRF9UWVBFX0JCT1ggKQorICAgIHsKKyAgICAgIFQxX1Rva2VuUmVjICB0b2tlbjI7CisgICAgICBGVF9CeXRlKiAgICAgb2xkX2N1ciAgID0gcGFyc2VyLT5jdXJzb3I7CisgICAgICBGVF9CeXRlKiAgICAgb2xkX2xpbWl0ID0gcGFyc2VyLT5saW1pdDsKKworCisgICAgICAvKiBkb24ndCBpbmNsdWRlIGRlbGltaXRlcnMgKi8KKyAgICAgIHBhcnNlci0+Y3Vyc29yID0gdG9rZW4uc3RhcnQgKyAxOworICAgICAgcGFyc2VyLT5saW1pdCAgPSB0b2tlbi5saW1pdCAtIDE7CisKKyAgICAgIHBzX3BhcnNlcl90b190b2tlbiggcGFyc2VyLCAmdG9rZW4yICk7CisgICAgICBwYXJzZXItPmN1cnNvciA9IG9sZF9jdXI7CisgICAgICBwYXJzZXItPmxpbWl0ICA9IG9sZF9saW1pdDsKKworICAgICAgaWYgKCB0b2tlbjIudHlwZSA9PSBUMV9UT0tFTl9UWVBFX0FSUkFZICkKKyAgICAgIHsKKyAgICAgICAgdHlwZSA9IFQxX0ZJRUxEX1RZUEVfTU1fQkJPWDsKKyAgICAgICAgZ290byBGaWVsZEFycmF5OworICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICggdG9rZW4udHlwZSA9PSBUMV9UT0tFTl9UWVBFX0FSUkFZICkKKyAgICB7CisgICAgICBjb3VudCA9IG1heF9vYmplY3RzOworCisgICAgRmllbGRBcnJheToKKyAgICAgIC8qIGlmIHRoaXMgaXMgYW4gYXJyYXkgYW5kIHdlIGhhdmUgbm8gYmxlbmQsIGFuIGVycm9yIG9jY3VycyAqLworICAgICAgaWYgKCBtYXhfb2JqZWN0cyA9PSAwICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBpZHggPSAxOworCisgICAgICAvKiBkb24ndCBpbmNsdWRlIGRlbGltaXRlcnMgKi8KKyAgICAgIGN1cisrOworICAgICAgbGltaXQtLTsKKyAgICB9CisKKyAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSwgaWR4KysgKQorICAgIHsKKyAgICAgIEZUX0J5dGUqICAgIHEgPSAoRlRfQnl0ZSopb2JqZWN0c1tpZHhdICsgZmllbGQtPm9mZnNldDsKKyAgICAgIEZUX0xvbmcgICAgIHZhbDsKKyAgICAgIEZUX1N0cmluZyogIHN0cmluZzsKKworCisgICAgICBza2lwX3NwYWNlcyggJmN1ciwgbGltaXQgKTsKKworICAgICAgc3dpdGNoICggdHlwZSApCisgICAgICB7CisgICAgICBjYXNlIFQxX0ZJRUxEX1RZUEVfQk9PTDoKKyAgICAgICAgdmFsID0gcHNfdG9ib29sKCAmY3VyLCBsaW1pdCApOworICAgICAgICBnb3RvIFN0b3JlX0ludGVnZXI7CisKKyAgICAgIGNhc2UgVDFfRklFTERfVFlQRV9GSVhFRDoKKyAgICAgICAgdmFsID0gUFNfQ29udl9Ub0ZpeGVkKCAmY3VyLCBsaW1pdCwgMCApOworICAgICAgICBnb3RvIFN0b3JlX0ludGVnZXI7CisKKyAgICAgIGNhc2UgVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwOgorICAgICAgICB2YWwgPSBQU19Db252X1RvRml4ZWQoICZjdXIsIGxpbWl0LCAzICk7CisgICAgICAgIGdvdG8gU3RvcmVfSW50ZWdlcjsKKworICAgICAgY2FzZSBUMV9GSUVMRF9UWVBFX0lOVEVHRVI6CisgICAgICAgIHsgRlRfQm9vbCByZXQgPSB4eXFfUFNfQ29udl9Ub0ludCggJmN1ciwgbGltaXQsICZ2YWwgKTsgIC8qIFhZUSAyMDA3LTEwLTEwOiBhYm9ydCBpZiBub3QgYSBudW1iZXIqLworCQlpZiAoIXJldCkgYnJlYWs7IH0KKyAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisKKyAgICAgIFN0b3JlX0ludGVnZXI6CisgICAgICAgIHN3aXRjaCAoIGZpZWxkLT5zaXplICkKKyAgICAgICAgeworICAgICAgICBjYXNlICg4IC8gRlRfQ0hBUl9CSVQpOgorICAgICAgICAgICooRlRfQnl0ZSopcSA9IChGVF9CeXRlKXZhbDsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICgxNiAvIEZUX0NIQVJfQklUKToKKyAgICAgICAgICAqKEZUX1VTaG9ydCopcSA9IChGVF9VU2hvcnQpdmFsOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgKDMyIC8gRlRfQ0hBUl9CSVQpOgorICAgICAgICAgICooRlRfVUludDMyKilxID0gKEZUX1VJbnQzMil2YWw7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgLyogZm9yIDY0LWJpdCBzeXN0ZW1zICovCisgICAgICAgICAgKihGVF9Mb25nKilxID0gdmFsOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIFQxX0ZJRUxEX1RZUEVfU1RSSU5HOgorICAgICAgY2FzZSBUMV9GSUVMRF9UWVBFX0tFWToKKyAgICAgICAgeworICAgICAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gcGFyc2VyLT5tZW1vcnk7CisgICAgICAgICAgRlRfVUludCAgICBsZW4gICAgPSAoRlRfVUludCkoIGxpbWl0IC0gY3VyICk7CisKKworICAgICAgICAgIGlmICggY3VyID49IGxpbWl0ICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgLyogd2UgYWxsb3cgYm90aCBhIHN0cmluZyBvciBhIG5hbWUgICAqLworICAgICAgICAgIC8qIGZvciBjYXNlcyBsaWtlIC9Gb250TmFtZSAoZm9vKSBkZWYgKi8KKyAgICAgICAgICBpZiAoIHRva2VuLnR5cGUgPT0gVDFfVE9LRU5fVFlQRV9LRVkgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIGRvbid0IGluY2x1ZGUgbGVhZGluZyBgLycgKi8KKyAgICAgICAgICAgIGxlbi0tOworICAgICAgICAgICAgY3VyKys7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKCB0b2tlbi50eXBlID09IFQxX1RPS0VOX1RZUEVfU1RSSU5HICkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBkb24ndCBpbmNsdWRlIGRlbGltaXRpbmcgcGFyZW50aGVzZXMgICAgKi8KKyAgICAgICAgICAgIC8qIFhYWCB3ZSBkb24ndCBoYW5kbGUgPDwuLi4+PiBoZXJlICAgICAgICAqLworICAgICAgICAgICAgLyogWFhYIHNob3VsZCB3ZSBjb252ZXJ0IG9jdGFsIGVzY2FwZXM/ICAgICovCisgICAgICAgICAgICAvKiAgICAgaWYgc28sIHdoYXQgZW5jb2Rpbmcgc2hvdWxkIHdlIHVzZT8gKi8KKyAgICAgICAgICAgIGN1cisrOworICAgICAgICAgICAgbGVuIC09IDI7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9FUlJPUigoICJwc19wYXJzZXJfbG9hZF9maWVsZDoiCisgICAgICAgICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQgYSBuYW1lIG9yIHN0cmluZ1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgIgorICAgICAgICAgICAgICAgICAgICAgICAiIGJ1dCBmb3VuZCB0b2tlbiBvZiB0eXBlICVkIGluc3RlYWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgKSk7CisgICAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgfQorCisgICAgICAgICAgLyogZm9yIHRoaXMgdG8gd29yayAoRlRfU3RyaW5nKiopcSBtdXN0IGhhdmUgYmVlbiAqLworICAgICAgICAgIC8qIGluaXRpYWxpemVkIHRvIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICBpZiAoICooRlRfU3RyaW5nKiopcSAhPSBOVUxMICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9UUkFDRTAoKCAicHNfcGFyc2VyX2xvYWRfZmllbGQ6IG92ZXJ3cml0aW5nIGZpZWxkICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQtPmlkZW50ICkpOworICAgICAgICAgICAgRlRfRlJFRSggKihGVF9TdHJpbmcqKilxICk7CisgICAgICAgICAgICAqKEZUX1N0cmluZyoqKXEgPSBOVUxMOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICggRlRfQUxMT0MoIHN0cmluZywgbGVuICsgMSApICkKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAgIEZUX01FTV9DT1BZKCBzdHJpbmcsIGN1ciwgbGVuICk7CisgICAgICAgICAgc3RyaW5nW2xlbl0gPSAwOworCisgICAgICAgICAgKihGVF9TdHJpbmcqKilxID0gc3RyaW5nOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIFQxX0ZJRUxEX1RZUEVfQkJPWDoKKyAgICAgICAgeworCQkgIC8vIEFkZCBieSBKb2huc29uLCBmaXggYSBFcnJvciAjMTogVU5JTklUSUFMSVpFRCBSRUFELiAjdGVzdGRvYyAxMjgyLnBkZgorICAgICAgICAgIEZUX0ZpeGVkICB0ZW1wWzRdID0gezAsMCwwLDB9OworICAgICAgICAgIEZUX0JCb3gqICBiYm94ID0gKEZUX0JCb3gqKXE7CisgICAgICAgICAgRlRfSW50ICAgIHJlc3VsdDsKKworCisgICAgICAgICAgcmVzdWx0ID0gcHNfdG9maXhlZGFycmF5KCAmY3VyLCBsaW1pdCwgNCwgdGVtcCwgMCApOworCisgICAgICAgICAgaWYgKCByZXN1bHQgPCAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9FUlJPUigoICJwc19wYXJzZXJfbG9hZF9maWVsZDoiCisgICAgICAgICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQgZm91ciBpbnRlZ2VycyBpbiBib3VuZGluZyBib3hcbiIgKSk7CisgICAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgfQorCisgICAgICAgICAgYmJveC0+eE1pbiA9IEZUX1JvdW5kRml4KCB0ZW1wWzBdICk7CisgICAgICAgICAgYmJveC0+eU1pbiA9IEZUX1JvdW5kRml4KCB0ZW1wWzFdICk7CisgICAgICAgICAgYmJveC0+eE1heCA9IEZUX1JvdW5kRml4KCB0ZW1wWzJdICk7CisgICAgICAgICAgYmJveC0+eU1heCA9IEZUX1JvdW5kRml4KCB0ZW1wWzNdICk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgVDFfRklFTERfVFlQRV9NTV9CQk9YOgorICAgICAgICB7CisgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBwYXJzZXItPm1lbW9yeTsKKyAgICAgICAgICBGVF9GaXhlZCogIHRlbXA7CisgICAgICAgICAgRlRfSW50ICAgICByZXN1bHQ7CisgICAgICAgICAgRlRfVUludCAgICBpOworCisKKyAgICAgICAgICBpZiAoIEZUX05FV19BUlJBWSggdGVtcCwgbWF4X29iamVjdHMgKiA0ICkgKQorICAgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCA0OyBpKysgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHBzX3RvZml4ZWRhcnJheSggJmN1ciwgbGltaXQsIG1heF9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wICsgaSAqIG1heF9vYmplY3RzLCAwICk7CisgICAgICAgICAgICBpZiAoIHJlc3VsdCA8IDAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9FUlJPUigoICJwc19wYXJzZXJfbG9hZF9maWVsZDoiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiBleHBlY3RlZCAlZCBpbnRlZ2VycyBpbiB0aGUgJXMgc3ViYXJyYXlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgb2YgL0ZvbnRCQm94IGluIHRoZSAvQmxlbmQgZGljdGlvbmFyeVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpID09IDAgPyAiZmlyc3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCBpID09IDEgPyAic2Vjb25kIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCBpID09IDIgPyAidGhpcmQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJmb3VydGgiICkgKSApKTsKKyAgICAgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNraXBfc3BhY2VzKCAmY3VyLCBsaW1pdCApOworICAgICAgICAgIH0KKworICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbWF4X29iamVjdHM7IGkrKyApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfQkJveCogIGJib3ggPSAoRlRfQkJveCopb2JqZWN0c1tpXTsKKworCisgICAgICAgICAgICBiYm94LT54TWluID0gRlRfUm91bmRGaXgoIHRlbXBbaSAgICAgICAgICAgICAgICAgIF0gKTsKKyAgICAgICAgICAgIGJib3gtPnlNaW4gPSBGVF9Sb3VuZEZpeCggdGVtcFtpICsgICAgIG1heF9vYmplY3RzXSApOworICAgICAgICAgICAgYmJveC0+eE1heCA9IEZUX1JvdW5kRml4KCB0ZW1wW2kgKyAyICogbWF4X29iamVjdHNdICk7CisgICAgICAgICAgICBiYm94LT55TWF4ID0gRlRfUm91bmRGaXgoIHRlbXBbaSArIDMgKiBtYXhfb2JqZWN0c10gKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBGVF9GUkVFKCB0ZW1wICk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIGFuIGVycm9yIG9jY3VycmVkICovCisgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgIH0KKyAgICB9CisKKyNpZiAwICAvKiBvYnNvbGV0ZSAtLSBrZWVwIGZvciByZWZlcmVuY2UgKi8KKyAgICBpZiAoIHBmbGFncyApCisgICAgICAqcGZsYWdzIHw9IDFMIDw8IGZpZWxkLT5mbGFnX2JpdDsKKyNlbHNlCisgICAgRlRfVU5VU0VEKCBwZmxhZ3MgKTsKKyNlbmRpZgorCisgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisKKyAgRmFpbDoKKyAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgZ290byBFeGl0OworICB9CisKKworI2RlZmluZSBUMV9NQVhfVEFCTEVfRUxFTUVOVFMgIDMyCisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgcHNfcGFyc2VyX2xvYWRfZmllbGRfdGFibGUoIFBTX1BhcnNlciAgICAgICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMV9GaWVsZCAgZmllbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogICAgICAgICAgb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBtYXhfb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgICAgICBwZmxhZ3MgKQorICB7CisgICAgVDFfVG9rZW5SZWMgIGVsZW1lbnRzW1QxX01BWF9UQUJMRV9FTEVNRU5UU107CisgICAgVDFfVG9rZW4gICAgIHRva2VuOworICAgIEZUX0ludCAgICAgICBudW1fZWxlbWVudHM7CisgICAgRlRfRXJyb3IgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX0J5dGUqICAgICBvbGRfY3Vyc29yOworICAgIEZUX0J5dGUqICAgICBvbGRfbGltaXQ7CisgICAgVDFfRmllbGRSZWMgIGZpZWxkcmVjID0gKihUMV9GaWVsZClmaWVsZDsKKworCisgICAgZmllbGRyZWMudHlwZSA9IFQxX0ZJRUxEX1RZUEVfSU5URUdFUjsKKyAgICBpZiAoIGZpZWxkLT50eXBlID09IFQxX0ZJRUxEX1RZUEVfRklYRURfQVJSQVkgfHwKKyAgICAgICAgIGZpZWxkLT50eXBlID09IFQxX0ZJRUxEX1RZUEVfQkJPWCAgICAgICAgKQorICAgICAgZmllbGRyZWMudHlwZSA9IFQxX0ZJRUxEX1RZUEVfRklYRUQ7CisKKyAgICBwc19wYXJzZXJfdG9fdG9rZW5fYXJyYXkoIHBhcnNlciwgZWxlbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMV9NQVhfVEFCTEVfRUxFTUVOVFMsICZudW1fZWxlbWVudHMgKTsKKyAgICBpZiAoIG51bV9lbGVtZW50cyA8IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfRVJSKCBJZ25vcmUgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisgICAgaWYgKCAoRlRfVUludCludW1fZWxlbWVudHMgPiBmaWVsZC0+YXJyYXlfbWF4ICkKKyAgICAgIG51bV9lbGVtZW50cyA9IGZpZWxkLT5hcnJheV9tYXg7CisKKyAgICBvbGRfY3Vyc29yID0gcGFyc2VyLT5jdXJzb3I7CisgICAgb2xkX2xpbWl0ICA9IHBhcnNlci0+bGltaXQ7CisKKyAgICAvKiB3ZSBzdG9yZSB0aGUgZWxlbWVudHMgY291bnQgaWYgbmVjZXNzYXJ5OyAgICAgICAgICAgKi8KKyAgICAvKiB3ZSBmdXJ0aGVyIGFzc3VtZSB0aGF0IGBjb3VudF9vZmZzZXQnIGNhbid0IGJlIHplcm8gKi8KKyAgICBpZiAoIGZpZWxkLT50eXBlICE9IFQxX0ZJRUxEX1RZUEVfQkJPWCAmJiBmaWVsZC0+Y291bnRfb2Zmc2V0ICE9IDAgKQorICAgICAgKihGVF9CeXRlKikoIChGVF9CeXRlKilvYmplY3RzWzBdICsgZmllbGQtPmNvdW50X29mZnNldCApID0KKyAgICAgICAgKEZUX0J5dGUpbnVtX2VsZW1lbnRzOworCisgICAgLyogd2Ugbm93IGxvYWQgZWFjaCBlbGVtZW50LCBhZGp1c3RpbmcgdGhlIGZpZWxkLm9mZnNldCBvbiBlYWNoIG9uZSAqLworICAgIHRva2VuID0gZWxlbWVudHM7CisgICAgZm9yICggOyBudW1fZWxlbWVudHMgPiAwOyBudW1fZWxlbWVudHMtLSwgdG9rZW4rKyApCisgICAgeworICAgICAgcGFyc2VyLT5jdXJzb3IgPSB0b2tlbi0+c3RhcnQ7CisgICAgICBwYXJzZXItPmxpbWl0ICA9IHRva2VuLT5saW1pdDsKKyAgICAgIHBzX3BhcnNlcl9sb2FkX2ZpZWxkKCBwYXJzZXIsICZmaWVsZHJlYywgb2JqZWN0cywgbWF4X29iamVjdHMsIDAgKTsKKyAgICAgIGZpZWxkcmVjLm9mZnNldCArPSBmaWVsZHJlYy5zaXplOworICAgIH0KKworI2lmIDAgIC8qIG9ic29sZXRlIC0tIGtlZXAgZm9yIHJlZmVyZW5jZSAqLworICAgIGlmICggcGZsYWdzICkKKyAgICAgICpwZmxhZ3MgfD0gMUwgPDwgZmllbGQtPmZsYWdfYml0OworI2Vsc2UKKyAgICBGVF9VTlVTRUQoIHBmbGFncyApOworI2VuZGlmCisKKyAgICBwYXJzZXItPmN1cnNvciA9IG9sZF9jdXJzb3I7CisgICAgcGFyc2VyLT5saW1pdCAgPSBvbGRfbGltaXQ7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfTG9uZyApCisgIHBzX3BhcnNlcl90b19pbnQoIFBTX1BhcnNlciAgcGFyc2VyICkKKyAgeworICAgIHBzX3BhcnNlcl9za2lwX3NwYWNlcyggcGFyc2VyICk7CisgICAgcmV0dXJuIFBTX0NvbnZfVG9JbnQoICZwYXJzZXItPmN1cnNvciwgcGFyc2VyLT5saW1pdCApOworICB9CisKKworICAvKiBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBgPCcgaWYgYGRlbGltaXRlcnMnIGlzIG5vbi16ZXJvICovCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHBzX3BhcnNlcl90b19ieXRlcyggUFNfUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9PZmZzZXQgIG1heF9ieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nKiAgIHBudW1fYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICBkZWxpbWl0ZXJzICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9CeXRlKiAgY3VyOworCisKKyAgICBwc19wYXJzZXJfc2tpcF9zcGFjZXMoIHBhcnNlciApOworICAgIGN1ciA9IHBhcnNlci0+Y3Vyc29yOworCisgICAgaWYgKCBjdXIgPj0gcGFyc2VyLT5saW1pdCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIGRlbGltaXRlcnMgKQorICAgIHsKKyAgICAgIGlmICggKmN1ciAhPSAnPCcgKQorICAgICAgeworICAgICAgICBGVF9FUlJPUigoICJwc19wYXJzZXJfdG9fYnl0ZXM6IE1pc3Npbmcgc3RhcnRpbmcgZGVsaW1pdGVyIGA8J1xuIiApKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIGN1cisrOworICAgIH0KKworICAgICpwbnVtX2J5dGVzID0gUFNfQ29udl9BU0NJSUhleERlY29kZSggJmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9ieXRlcyApOworCisgICAgaWYgKCBkZWxpbWl0ZXJzICkKKyAgICB7CisgICAgICBpZiAoIGN1ciA8IHBhcnNlci0+bGltaXQgJiYgKmN1ciAhPSAnPicgKQorICAgICAgeworICAgICAgICBGVF9FUlJPUigoICJwc19wYXJzZXJfdG9fYnl0ZXM6IE1pc3NpbmcgY2xvc2luZyBkZWxpbWl0ZXIgYD4nXG4iICkpOworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgY3VyKys7CisgICAgfQorCisgICAgcGFyc2VyLT5jdXJzb3IgPSBjdXI7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRml4ZWQgKQorICBwc19wYXJzZXJfdG9fZml4ZWQoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgcG93ZXJfdGVuICkKKyAgeworICAgIHBzX3BhcnNlcl9za2lwX3NwYWNlcyggcGFyc2VyICk7CisgICAgcmV0dXJuIFBTX0NvbnZfVG9GaXhlZCggJnBhcnNlci0+Y3Vyc29yLCBwYXJzZXItPmxpbWl0LCBwb3dlcl90ZW4gKTsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9JbnQgKQorICBwc19wYXJzZXJfdG9fY29vcmRfYXJyYXkoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgbWF4X2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TaG9ydCogIGNvb3JkcyApCisgIHsKKyAgICBwc19wYXJzZXJfc2tpcF9zcGFjZXMoIHBhcnNlciApOworICAgIHJldHVybiBwc190b2Nvb3JkYXJyYXkoICZwYXJzZXItPmN1cnNvciwgcGFyc2VyLT5saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfY29vcmRzLCBjb29yZHMgKTsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9JbnQgKQorICBwc19wYXJzZXJfdG9fZml4ZWRfYXJyYXkoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgbWF4X3ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIHBvd2VyX3RlbiApCisgIHsKKyAgICBwc19wYXJzZXJfc2tpcF9zcGFjZXMoIHBhcnNlciApOworICAgIHJldHVybiBwc190b2ZpeGVkYXJyYXkoICZwYXJzZXItPmN1cnNvciwgcGFyc2VyLT5saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfdmFsdWVzLCB2YWx1ZXMsIHBvd2VyX3RlbiApOworICB9CisKKworI2lmIDAKKworICBGVF9MT0NBTF9ERUYoIEZUX1N0cmluZyogKQorICBUMV9Ub1N0cmluZyggUFNfUGFyc2VyICBwYXJzZXIgKQorICB7CisgICAgcmV0dXJuIHBzX3Rvc3RyaW5nKCAmcGFyc2VyLT5jdXJzb3IsIHBhcnNlci0+bGltaXQsIHBhcnNlci0+bWVtb3J5ICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfQm9vbCApCisgIFQxX1RvQm9vbCggUFNfUGFyc2VyICBwYXJzZXIgKQorICB7CisgICAgcmV0dXJuIHBzX3RvYm9vbCggJnBhcnNlci0+Y3Vyc29yLCBwYXJzZXItPmxpbWl0ICk7CisgIH0KKworI2VuZGlmIC8qIDAgKi8KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHBzX3BhcnNlcl9pbml0KCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgYmFzZSwKKyAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQsCisgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApCisgIHsKKyAgICBwYXJzZXItPmVycm9yICA9IEZUX0Vycl9PazsKKyAgICBwYXJzZXItPmJhc2UgICA9IGJhc2U7CisgICAgcGFyc2VyLT5saW1pdCAgPSBsaW1pdDsKKyAgICBwYXJzZXItPmN1cnNvciA9IGJhc2U7CisgICAgcGFyc2VyLT5tZW1vcnkgPSBtZW1vcnk7CisgICAgcGFyc2VyLT5mdW5jcyAgPSBwc19wYXJzZXJfZnVuY3M7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHBzX3BhcnNlcl9kb25lKCBQU19QYXJzZXIgIHBhcnNlciApCisgIHsKKyAgICBGVF9VTlVTRUQoIHBhcnNlciApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgVDEgQlVJTERFUiAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0MV9idWlsZGVyX2luaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbml0aWFsaXplcyBhIGdpdmVuIGdseXBoIGJ1aWxkZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBidWlsZGVyIDo6IEEgcG9pbnRlciB0byB0aGUgZ2x5cGggYnVpbGRlciB0byBpbml0aWFsaXplLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgIDo6IFRoZSBjdXJyZW50IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNpemUgICAgOjogVGhlIGN1cnJlbnQgc2l6ZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGggICA6OiBUaGUgY3VycmVudCBnbHlwaCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBoaW50aW5nIDo6IFdoZXRoZXIgaGludGluZyBzaG91bGQgYmUgYXBwbGllZC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHQxX2J1aWxkZXJfaW5pdCggVDFfQnVpbGRlciAgICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9TaXplICAgICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgIGhpbnRpbmcgKQorICB7CisgICAgYnVpbGRlci0+cGFyc2Vfc3RhdGUgPSBUMV9QYXJzZV9TdGFydDsKKyAgICBidWlsZGVyLT5sb2FkX3BvaW50cyA9IDE7CisKKyAgICBidWlsZGVyLT5mYWNlICAgPSBmYWNlOworICAgIGJ1aWxkZXItPmdseXBoICA9IGdseXBoOworICAgIGJ1aWxkZXItPm1lbW9yeSA9IGZhY2UtPm1lbW9yeTsKKworICAgIGlmICggZ2x5cGggKQorICAgIHsKKyAgICAgIEZUX0dseXBoTG9hZGVyICBsb2FkZXIgPSBnbHlwaC0+aW50ZXJuYWwtPmxvYWRlcjsKKworCisgICAgICBidWlsZGVyLT5sb2FkZXIgID0gbG9hZGVyOworICAgICAgYnVpbGRlci0+YmFzZSAgICA9ICZsb2FkZXItPmJhc2Uub3V0bGluZTsKKyAgICAgIGJ1aWxkZXItPmN1cnJlbnQgPSAmbG9hZGVyLT5jdXJyZW50Lm91dGxpbmU7CisgICAgICBGVF9HbHlwaExvYWRlcl9SZXdpbmQoIGxvYWRlciApOworCisgICAgICBidWlsZGVyLT5oaW50c19nbG9iYWxzID0gc2l6ZS0+aW50ZXJuYWw7CisgICAgICBidWlsZGVyLT5oaW50c19mdW5jcyAgID0gMDsKKworICAgICAgaWYgKCBoaW50aW5nICkKKyAgICAgICAgYnVpbGRlci0+aGludHNfZnVuY3MgPSBnbHlwaC0+aW50ZXJuYWwtPmdseXBoX2hpbnRzOworICAgIH0KKworICAgIGJ1aWxkZXItPnBvc194ID0gMDsKKyAgICBidWlsZGVyLT5wb3NfeSA9IDA7CisKKyAgICBidWlsZGVyLT5sZWZ0X2JlYXJpbmcueCA9IDA7CisgICAgYnVpbGRlci0+bGVmdF9iZWFyaW5nLnkgPSAwOworICAgIGJ1aWxkZXItPmFkdmFuY2UueCAgICAgID0gMDsKKyAgICBidWlsZGVyLT5hZHZhbmNlLnkgICAgICA9IDA7CisKKyAgICBidWlsZGVyLT5mdW5jcyA9IHQxX2J1aWxkZXJfZnVuY3M7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHQxX2J1aWxkZXJfZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZpbmFsaXplcyBhIGdpdmVuIGdseXBoIGJ1aWxkZXIuICBJdHMgY29udGVudHMgY2FuIHN0aWxsIGJlIHVzZWQgICAqLworICAvKiAgICBhZnRlciB0aGUgY2FsbCwgYnV0IHRoZSBmdW5jdGlvbiBzYXZlcyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gICAgICAgKi8KKyAgLyogICAgd2l0aGluIHRoZSBjb3JyZXNwb25kaW5nIGdseXBoIHNsb3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYnVpbGRlciA6OiBBIHBvaW50ZXIgdG8gdGhlIGdseXBoIGJ1aWxkZXIgdG8gZmluYWxpemUuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICB0MV9idWlsZGVyX2RvbmUoIFQxX0J1aWxkZXIgIGJ1aWxkZXIgKQorICB7CisgICAgRlRfR2x5cGhTbG90ICBnbHlwaCA9IGJ1aWxkZXItPmdseXBoOworCisKKyAgICBpZiAoIGdseXBoICkKKyAgICAgIGdseXBoLT5vdXRsaW5lID0gKmJ1aWxkZXItPmJhc2U7CisgIH0KKworCisgIC8qIGNoZWNrIHRoYXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGZvciBgY291bnQnIG1vcmUgcG9pbnRzICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0MV9idWlsZGVyX2NoZWNrX3BvaW50cyggVDFfQnVpbGRlciAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgIGNvdW50ICkKKyAgeworICAgIHJldHVybiBGVF9HTFlQSExPQURFUl9DSEVDS19QT0lOVFMoIGJ1aWxkZXItPmxvYWRlciwgY291bnQsIDAgKTsKKyAgfQorCisKKyAgLyogYWRkIGEgbmV3IHBvaW50LCBkbyBub3QgY2hlY2sgc3BhY2UgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgdDFfYnVpbGRlcl9hZGRfcG9pbnQoIFQxX0J1aWxkZXIgIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUgICAgIGZsYWcgKQorICB7CisgICAgRlRfT3V0bGluZSogIG91dGxpbmUgPSBidWlsZGVyLT5jdXJyZW50OworCisKKyAgICBpZiAoIGJ1aWxkZXItPmxvYWRfcG9pbnRzICkKKyAgICB7CisgICAgICBGVF9WZWN0b3IqICBwb2ludCAgID0gb3V0bGluZS0+cG9pbnRzICsgb3V0bGluZS0+bl9wb2ludHM7CisgICAgICBGVF9CeXRlKiAgICBjb250cm9sID0gKEZUX0J5dGUqKW91dGxpbmUtPnRhZ3MgKyBvdXRsaW5lLT5uX3BvaW50czsKKworCisgICAgICBwb2ludC0+eCA9IEZJWEVEX1RPX0lOVCggeCApOworICAgICAgcG9pbnQtPnkgPSBGSVhFRF9UT19JTlQoIHkgKTsKKyAgICAgICpjb250cm9sID0gKEZUX0J5dGUpKCBmbGFnID8gRlRfQ1VSVkVfVEFHX09OIDogRlRfQ1VSVkVfVEFHX0NVQklDICk7CisgICAgfQorICAgIG91dGxpbmUtPm5fcG9pbnRzKys7CisgIH0KKworCisgIC8qIGNoZWNrIHNwYWNlIGZvciBhIG5ldyBvbi1jdXJ2ZSBwb2ludCwgdGhlbiBhZGQgaXQgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHQxX2J1aWxkZXJfYWRkX3BvaW50MSggVDFfQnVpbGRlciAgYnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIHkgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICBlcnJvciA9IHQxX2J1aWxkZXJfY2hlY2tfcG9pbnRzKCBidWlsZGVyLCAxICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgICAgdDFfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDEgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogY2hlY2sgc3BhY2UgZm9yIGEgbmV3IGNvbnRvdXIsIHRoZW4gYWRkIGl0ICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0MV9idWlsZGVyX2FkZF9jb250b3VyKCBUMV9CdWlsZGVyICBidWlsZGVyICkKKyAgeworICAgIEZUX091dGxpbmUqICBvdXRsaW5lID0gYnVpbGRlci0+Y3VycmVudDsKKyAgICBGVF9FcnJvciAgICAgZXJyb3I7CisKKworICAgIC8qIHRoaXMgbWlnaHQgaGFwcGVuIGluIGludmFsaWQgZm9udHMgKi8KKyAgICBpZiAoICFvdXRsaW5lICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJ0MV9idWlsZGVyX2FkZF9jb250b3VyOiBubyBvdXRsaW5lIHRvIGFkZCBwb2ludHMgdG9cbiIgKSk7CisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICB9CisKKyAgICBpZiAoICFidWlsZGVyLT5sb2FkX3BvaW50cyApCisgICAgeworICAgICAgb3V0bGluZS0+bl9jb250b3VycysrOworICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgICB9CisKKyAgICBlcnJvciA9IEZUX0dMWVBITE9BREVSX0NIRUNLX1BPSU5UUyggYnVpbGRlci0+bG9hZGVyLCAwLCAxICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgIHsKKyAgICAgIGlmICggb3V0bGluZS0+bl9jb250b3VycyA+IDAgKQorICAgICAgICBvdXRsaW5lLT5jb250b3Vyc1tvdXRsaW5lLT5uX2NvbnRvdXJzIC0gMV0gPQorICAgICAgICAgIChzaG9ydCkoIG91dGxpbmUtPm5fcG9pbnRzIC0gMSApOworCisgICAgICBvdXRsaW5lLT5uX2NvbnRvdXJzKys7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBpZiBhIHBhdGggd2FzIGJlZ3VuLCBhZGQgaXRzIGZpcnN0IG9uLWN1cnZlIHBvaW50ICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0MV9idWlsZGVyX3N0YXJ0X3BvaW50KCBUMV9CdWlsZGVyICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICB5ICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0VSUiggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworCisKKyAgICAvKiB0ZXN0IHdoZXRoZXIgd2UgYXJlIGJ1aWxkaW5nIGEgbmV3IGNvbnRvdXIgKi8KKworICAgIGlmICggYnVpbGRlci0+cGFyc2Vfc3RhdGUgPT0gVDFfUGFyc2VfSGF2ZV9QYXRoICkKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIGVsc2UKKyAgICB7CisgICAgICBidWlsZGVyLT5wYXJzZV9zdGF0ZSA9IFQxX1BhcnNlX0hhdmVfUGF0aDsKKyAgICAgIGVycm9yID0gdDFfYnVpbGRlcl9hZGRfY29udG91ciggYnVpbGRlciApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICBlcnJvciA9IHQxX2J1aWxkZXJfYWRkX3BvaW50MSggYnVpbGRlciwgeCwgeSApOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogY2xvc2UgdGhlIGN1cnJlbnQgY29udG91ciAqLworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICB0MV9idWlsZGVyX2Nsb3NlX2NvbnRvdXIoIFQxX0J1aWxkZXIgIGJ1aWxkZXIgKQorICB7CisgICAgRlRfT3V0bGluZSogIG91dGxpbmUgPSBidWlsZGVyLT5jdXJyZW50OworICAgIEZUX0ludCAgICAgICBmaXJzdDsKKworCisgICAgaWYgKCAhb3V0bGluZSApCisgICAgICByZXR1cm47CisKKyAgICBmaXJzdCA9IG91dGxpbmUtPm5fY29udG91cnMgPD0gMQorICAgICAgICAgICAgPyAwIDogb3V0bGluZS0+Y29udG91cnNbb3V0bGluZS0+bl9jb250b3VycyAtIDJdICsgMTsKKworICAgIC8qIFdlIG11c3Qgbm90IGluY2x1ZGUgdGhlIGxhc3QgcG9pbnQgaW4gdGhlIHBhdGggaWYgaXQgKi8KKyAgICAvKiBpcyBsb2NhdGVkIG9uIHRoZSBmaXJzdCBwb2ludC4gICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBvdXRsaW5lLT5uX3BvaW50cyA+IDEgKQorICAgIHsKKyAgICAgIEZUX1ZlY3RvciogIHAxICAgICAgPSBvdXRsaW5lLT5wb2ludHMgKyBmaXJzdDsKKyAgICAgIEZUX1ZlY3RvciogIHAyICAgICAgPSBvdXRsaW5lLT5wb2ludHMgKyBvdXRsaW5lLT5uX3BvaW50cyAtIDE7CisgICAgICBGVF9CeXRlKiAgICBjb250cm9sID0gKEZUX0J5dGUqKW91dGxpbmUtPnRhZ3MgKyBvdXRsaW5lLT5uX3BvaW50cyAtIDE7CisKKworICAgICAgLyogYGRlbGV0ZScgbGFzdCBwb2ludCBvbmx5IGlmIGl0IGNvaW5jaWRlcyB3aXRoIHRoZSBmaXJzdCAqLworICAgICAgLyogcG9pbnQgYW5kIGl0IGlzIG5vdCBhIGNvbnRyb2wgcG9pbnQgKHdoaWNoIGNhbiBoYXBwZW4pLiAqLworICAgICAgaWYgKCBwMS0+eCA9PSBwMi0+eCAmJiBwMS0+eSA9PSBwMi0+eSApCisgICAgICAgIGlmICggKmNvbnRyb2wgPT0gRlRfQ1VSVkVfVEFHX09OICkKKyAgICAgICAgICBvdXRsaW5lLT5uX3BvaW50cy0tOworICAgIH0KKworICAgIGlmICggb3V0bGluZS0+bl9jb250b3VycyA+IDAgKQorICAgIHsKKyAgICAgIC8qIERvbid0IGFkZCBjb250b3VycyBvbmx5IGNvbnNpc3Rpbmcgb2Ygb25lIHBvaW50LCBpLmUuLCAgKi8KKyAgICAgIC8qIGNoZWNrIHdoZXRoZXIgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdCBwb2ludCBpcyB0aGUgc2FtZS4gKi8KKyAgICAgIGlmICggZmlyc3QgPT0gb3V0bGluZS0+bl9wb2ludHMgLSAxICkKKyAgICAgIHsKKyAgICAgICAgb3V0bGluZS0+bl9jb250b3Vycy0tOworICAgICAgICBvdXRsaW5lLT5uX3BvaW50cy0tOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBvdXRsaW5lLT5jb250b3Vyc1tvdXRsaW5lLT5uX2NvbnRvdXJzIC0gMV0gPQorICAgICAgICAgIChzaG9ydCkoIG91dGxpbmUtPm5fcG9pbnRzIC0gMSApOworICAgIH0KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9USEVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgdDFfZGVjcnlwdCggRlRfQnl0ZSogICBidWZmZXIsCisgICAgICAgICAgICAgIEZUX09mZnNldCAgbGVuZ3RoLAorICAgICAgICAgICAgICBGVF9VU2hvcnQgIHNlZWQgKQorICB7CisgICAgUFNfQ29udl9FZXhlY0RlY29kZSggJmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIgKyBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmc2VlZCApOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3Bzb2Jqcy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9wc29ianMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmIwNWVjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9wc29ianMuaApAQCAtMCwwICsxLDIxMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcHNvYmpzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEF1eGlsaWFyeSBmdW5jdGlvbnMgZm9yIFBvc3RTY3JpcHQgZm9udHMgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIsIDIwMDMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fUFNPQkpTX0hfXworI2RlZmluZSBfX1BTT0JKU19IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVDFfVEFCTEUgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUKKyAgY29uc3QgUFNfVGFibGVfRnVuY3NSZWMgICAgcHNfdGFibGVfZnVuY3M7CisKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUKKyAgY29uc3QgUFNfUGFyc2VyX0Z1bmNzUmVjICAgcHNfcGFyc2VyX2Z1bmNzOworCisgIEZUX0NBTExCQUNLX1RBQkxFCisgIGNvbnN0IFQxX0J1aWxkZXJfRnVuY3NSZWMgIHQxX2J1aWxkZXJfZnVuY3M7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBwc190YWJsZV9uZXcoIFBTX1RhYmxlICAgdGFibGUsCisgICAgICAgICAgICAgICAgRlRfSW50ICAgICBjb3VudCwKKyAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHBzX3RhYmxlX2FkZCggUFNfVGFibGUgICAgdGFibGUsCisgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgaWR4LAorICAgICAgICAgICAgICAgIHZvaWQqICAgICAgIG9iamVjdCwKKyAgICAgICAgICAgICAgICBGVF9QdHJEaXN0ICBsZW5ndGggKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIHBzX3RhYmxlX2RvbmUoIFBTX1RhYmxlICB0YWJsZSApOworCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBwc190YWJsZV9yZWxlYXNlKCBQU19UYWJsZSAgdGFibGUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMSBQQVJTRVIgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBwc19wYXJzZXJfc2tpcF9zcGFjZXMoIFBTX1BhcnNlciAgcGFyc2VyICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBwc19wYXJzZXJfc2tpcF9QU190b2tlbiggUFNfUGFyc2VyICBwYXJzZXIgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIHBzX3BhcnNlcl90b190b2tlbiggUFNfUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgVDFfVG9rZW4gICB0b2tlbiApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgcHNfcGFyc2VyX3RvX3Rva2VuX2FycmF5KCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMV9Ub2tlbiAgIHRva2VucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIG1heF90b2tlbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50KiAgICBwbnVtX3Rva2VucyApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHBzX3BhcnNlcl9sb2FkX2ZpZWxkKCBQU19QYXJzZXIgICAgICAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDFfRmllbGQgIGZpZWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCoqICAgICAgICAgIG9iamVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgbWF4X29iamVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogICAgICAgcGZsYWdzICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgcHNfcGFyc2VyX2xvYWRfZmllbGRfdGFibGUoIFBTX1BhcnNlciAgICAgICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMV9GaWVsZCAgZmllbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogICAgICAgICAgb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBtYXhfb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgICAgICBwZmxhZ3MgKTsKKworICBGVF9MT0NBTCggRlRfTG9uZyApCisgIHBzX3BhcnNlcl90b19pbnQoIFBTX1BhcnNlciAgcGFyc2VyICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBwc19wYXJzZXJfdG9fYnl0ZXMoIFBTX1BhcnNlciAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgRlRfT2Zmc2V0ICBtYXhfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyogICBwbnVtX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgZGVsaW1pdGVycyApOworCisKKyAgRlRfTE9DQUwoIEZUX0ZpeGVkICkKKyAgcHNfcGFyc2VyX3RvX2ZpeGVkKCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIHBvd2VyX3RlbiApOworCisKKyAgRlRfTE9DQUwoIEZUX0ludCApCisgIHBzX3BhcnNlcl90b19jb29yZF9hcnJheSggUFNfUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBtYXhfY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1Nob3J0KiAgY29vcmRzICk7CisKKyAgRlRfTE9DQUwoIEZUX0ludCApCisgIHBzX3BhcnNlcl90b19maXhlZF9hcnJheSggUFNfUGFyc2VyICBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBtYXhfdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgcG93ZXJfdGVuICk7CisKKworICBGVF9MT0NBTCggdm9pZCApCisgIHBzX3BhcnNlcl9pbml0KCBQU19QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgYmFzZSwKKyAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgbGltaXQsCisgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgcHNfcGFyc2VyX2RvbmUoIFBTX1BhcnNlciAgcGFyc2VyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgVDEgQlVJTERFUiAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBGVF9MT0NBTCggdm9pZCApCisgIHQxX2J1aWxkZXJfaW5pdCggVDFfQnVpbGRlciAgICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9TaXplICAgICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgIGhpbnRpbmcgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIHQxX2J1aWxkZXJfZG9uZSggVDFfQnVpbGRlciAgYnVpbGRlciApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHQxX2J1aWxkZXJfY2hlY2tfcG9pbnRzKCBUMV9CdWlsZGVyICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgY291bnQgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIHQxX2J1aWxkZXJfYWRkX3BvaW50KCBUMV9CdWlsZGVyICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIHksCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlICAgICBmbGFnICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdDFfYnVpbGRlcl9hZGRfcG9pbnQxKCBUMV9CdWlsZGVyICBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgeSApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHQxX2J1aWxkZXJfYWRkX2NvbnRvdXIoIFQxX0J1aWxkZXIgIGJ1aWxkZXIgKTsKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHQxX2J1aWxkZXJfc3RhcnRfcG9pbnQoIFQxX0J1aWxkZXIgIGJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIHkgKTsKKworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgdDFfYnVpbGRlcl9jbG9zZV9jb250b3VyKCBUMV9CdWlsZGVyICBidWlsZGVyICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgT1RIRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBGVF9MT0NBTCggdm9pZCApCisgIHQxX2RlY3J5cHQoIEZUX0J5dGUqICAgYnVmZmVyLAorICAgICAgICAgICAgICBGVF9PZmZzZXQgIGxlbmd0aCwKKyAgICAgICAgICAgICAgRlRfVVNob3J0ICBzZWVkICk7CisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19QU09CSlNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3J1bGVzLm1rIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9ydWxlcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTFiZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC9ydWxlcy5tawpAQCAtMCwwICsxLDczIEBACisjCisjIEZyZWVUeXBlIDIgUFNhdXggZHJpdmVyIGNvbmZpZ3VyYXRpb24gcnVsZXMKKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDAsIDIwMDIsIDIwMDMsIDIwMDYgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKKyMgUFNBVVggZHJpdmVyIGRpcmVjdG9yeQorIworUFNBVVhfRElSIDo9ICQoU1JDX0RJUikvcHNhdXgKKworCisjIGNvbXBpbGF0aW9uIGZsYWdzIGZvciB0aGUgZHJpdmVyCisjCitQU0FVWF9DT01QSUxFIDo9ICQoRlRfQ09NUElMRSkgJEkkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCQoUFNBVVhfRElSKSkKKworCisjIFBTQVVYIGRyaXZlciBzb3VyY2VzIChpLmUuLCBDIGZpbGVzKQorIworUFNBVVhfRFJWX1NSQyA6PSAkKFBTQVVYX0RJUikvcHNvYmpzLmMgICBcCisgICAgICAgICAgICAgICAgICQoUFNBVVhfRElSKS90MWRlY29kZS5jIFwKKyAgICAgICAgICAgICAgICAgJChQU0FVWF9ESVIpL3QxY21hcC5jICAgXAorICAgICAgICAgICAgICAgICAkKFBTQVVYX0RJUikvYWZtcGFyc2UuYyBcCisgICAgICAgICAgICAgICAgICQoUFNBVVhfRElSKS9wc2NvbnYuYyAgIFwKKyAgICAgICAgICAgICAgICAgJChQU0FVWF9ESVIpL3BzYXV4bW9kLmMKKworIyBQU0FVWCBkcml2ZXIgaGVhZGVycworIworUFNBVVhfRFJWX0ggOj0gJChQU0FVWF9EUlZfU1JDOiVjPSVoKSAgXAorICAgICAgICAgICAgICAgJChQU0FVWF9ESVIpL3BzYXV4ZXJyLmgKKworCisjIFBTQVVYIGRyaXZlciBvYmplY3QocykKKyMKKyMgICBQU0FVWF9EUlZfT0JKX00gaXMgdXNlZCBkdXJpbmcgYG11bHRpJyBidWlsZHMuCisjICAgUFNBVVhfRFJWX09CSl9TIGlzIHVzZWQgZHVyaW5nIGBzaW5nbGUnIGJ1aWxkcy4KKyMKK1BTQVVYX0RSVl9PQkpfTSA6PSAkKFBTQVVYX0RSVl9TUkM6JChQU0FVWF9ESVIpLyUuYz0kKE9CSl9ESVIpLyUuJE8pCitQU0FVWF9EUlZfT0JKX1MgOj0gJChPQkpfRElSKS9wc2F1eC4kTworCisjIFBTQVVYIGRyaXZlciBzb3VyY2UgZmlsZSBmb3Igc2luZ2xlIGJ1aWxkCisjCitQU0FVWF9EUlZfU1JDX1MgOj0gJChQU0FVWF9ESVIpL3BzYXV4LmMKKworCisjIFBTQVVYIGRyaXZlciAtIHNpbmdsZSBvYmplY3QKKyMKKyQoUFNBVVhfRFJWX09CSl9TKTogJChQU0FVWF9EUlZfU1JDX1MpICQoUFNBVVhfRFJWX1NSQykgXAorICAgICAgICAgICAgICAgICAgICQoRlJFRVRZUEVfSCkgJChQU0FVWF9EUlZfSCkKKwkkKFBTQVVYX0NPTVBJTEUpICRUJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkQCAkKFBTQVVYX0RSVl9TUkNfUykpCisKKworIyBQU0FVWCBkcml2ZXIgLSBtdWx0aXBsZSBvYmplY3RzCisjCiskKE9CSl9ESVIpLyUuJE86ICQoUFNBVVhfRElSKS8lLmMgJChGUkVFVFlQRV9IKSAkKFBTQVVYX0RSVl9IKQorCSQoUFNBVVhfQ09NUElMRSkgJFQkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCRAICQ8KQorCisKKyMgdXBkYXRlIG1haW4gZHJpdmVyIG9iamVjdCBsaXN0cworIworRFJWX09CSlNfUyArPSAkKFBTQVVYX0RSVl9PQkpfUykKK0RSVl9PQkpTX00gKz0gJChQU0FVWF9EUlZfT0JKX00pCisKKworIyBFT0YKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvdDFjbWFwLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3QxY21hcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNzAzMDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3QxY21hcC5jCkBAIC0wLDAgKzEsMzQxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MWNtYXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHlwZSAxIGNoYXJhY3RlciBtYXAgc3VwcG9ydCAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDIsIDIwMDMsIDIwMDYsIDIwMDcsIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICJ0MWNtYXAuaCIKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorCisjaW5jbHVkZSAicHNhdXhlcnIuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICBUWVBFMSBTVEFOREFSRCAoQU5EIEVYUEVSVCkgRU5DT0RJTkcgQ01BUFMgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyB2b2lkCisgIHQxX2NtYXBfc3RkX2luaXQoIFQxX0NNYXBTdGQgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgIGlzX2V4cGVydCApCisgIHsKKyAgICBUMV9GYWNlICAgICAgICAgICAgIGZhY2UgICAgPSAoVDFfRmFjZSlGVF9DTUFQX0ZBQ0UoIGNtYXAgKTsKKyAgICBGVF9TZXJ2aWNlX1BzQ01hcHMgIHBzbmFtZXMgPSAoRlRfU2VydmljZV9Qc0NNYXBzKWZhY2UtPnBzbmFtZXM7CisKKworICAgIGNtYXAtPm51bV9nbHlwaHMgICAgPSBmYWNlLT50eXBlMS5udW1fZ2x5cGhzOworICAgIGNtYXAtPmdseXBoX25hbWVzICAgPSAoY29uc3QgY2hhciogY29uc3QqKWZhY2UtPnR5cGUxLmdseXBoX25hbWVzOworICAgIGNtYXAtPnNpZF90b19zdHJpbmcgPSBwc25hbWVzLT5hZG9iZV9zdGRfc3RyaW5nczsKKyAgICBjbWFwLT5jb2RlX3RvX3NpZCAgID0gaXNfZXhwZXJ0ID8gcHNuYW1lcy0+YWRvYmVfZXhwZXJ0X2VuY29kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBzbmFtZXMtPmFkb2JlX3N0ZF9lbmNvZGluZzsKKworICAgIEZUX0FTU0VSVCggY21hcC0+Y29kZV90b19zaWQgIT0gTlVMTCApOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIHZvaWQgKQorICB0MV9jbWFwX3N0ZF9kb25lKCBUMV9DTWFwU3RkICBjbWFwICkKKyAgeworICAgIGNtYXAtPm51bV9nbHlwaHMgICAgPSAwOworICAgIGNtYXAtPmdseXBoX25hbWVzICAgPSBOVUxMOworICAgIGNtYXAtPnNpZF90b19zdHJpbmcgPSBOVUxMOworICAgIGNtYXAtPmNvZGVfdG9fc2lkICAgPSBOVUxMOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQgKQorICB0MV9jbWFwX3N0ZF9jaGFyX2luZGV4KCBUMV9DTWFwU3RkICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICBjaGFyX2NvZGUgKQorICB7CisgICAgRlRfVUludCAgcmVzdWx0ID0gMDsKKworCisgICAgaWYgKCBjaGFyX2NvZGUgPCAyNTYgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgICAgICBjb2RlLCBuOworICAgICAgY29uc3QgY2hhciogIGdseXBoX25hbWU7CisKKworICAgICAgLyogY29udmVydCBjaGFyYWN0ZXIgY29kZSB0byBBZG9iZSBTSUQgc3RyaW5nICovCisgICAgICBjb2RlICAgICAgID0gY21hcC0+Y29kZV90b19zaWRbY2hhcl9jb2RlXTsKKyAgICAgIGdseXBoX25hbWUgPSBjbWFwLT5zaWRfdG9fc3RyaW5nKCBjb2RlICk7CisKKyAgICAgIC8qIGxvb2sgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGdseXBoIG5hbWUgKi8KKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgY21hcC0+bnVtX2dseXBoczsgbisrICkKKyAgICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogZ25hbWUgPSBjbWFwLT5nbHlwaF9uYW1lc1tuXTsKKworCisgICAgICAgIGlmICggZ25hbWUgJiYgZ25hbWVbMF0gPT0gZ2x5cGhfbmFtZVswXSAgJiYKKyAgICAgICAgICAgICBmdF9zdHJjbXAoIGduYW1lLCBnbHlwaF9uYW1lICkgPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICByZXN1bHQgPSBuOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9VSW50MzIgKQorICB0MV9jbWFwX3N0ZF9jaGFyX25leHQoIFQxX0NNYXBTdGQgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgICpwY2hhcl9jb2RlICkKKyAgeworICAgIEZUX1VJbnQgICAgcmVzdWx0ICAgID0gMDsKKyAgICBGVF9VSW50MzIgIGNoYXJfY29kZSA9ICpwY2hhcl9jb2RlICsgMTsKKworCisgICAgd2hpbGUgKCBjaGFyX2NvZGUgPCAyNTYgKQorICAgIHsKKyAgICAgIHJlc3VsdCA9IHQxX2NtYXBfc3RkX2NoYXJfaW5kZXgoIGNtYXAsIGNoYXJfY29kZSApOworICAgICAgaWYgKCByZXN1bHQgIT0gMCApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgY2hhcl9jb2RlKys7CisgICAgfQorICAgIGNoYXJfY29kZSA9IDA7CisKKyAgRXhpdDoKKyAgICAqcGNoYXJfY29kZSA9IGNoYXJfY29kZTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgdDFfY21hcF9zdGFuZGFyZF9pbml0KCBUMV9DTWFwU3RkICBjbWFwICkKKyAgeworICAgIHQxX2NtYXBfc3RkX2luaXQoIGNtYXAsIDAgKTsKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGIGNvbnN0IEZUX0NNYXBfQ2xhc3NSZWMKKyAgdDFfY21hcF9zdGFuZGFyZF9jbGFzc19yZWMgPQorICB7CisgICAgc2l6ZW9mICggVDFfQ01hcFN0ZFJlYyApLAorCisgICAgKEZUX0NNYXBfSW5pdEZ1bmMpICAgICB0MV9jbWFwX3N0YW5kYXJkX2luaXQsCisgICAgKEZUX0NNYXBfRG9uZUZ1bmMpICAgICB0MV9jbWFwX3N0ZF9kb25lLAorICAgIChGVF9DTWFwX0NoYXJJbmRleEZ1bmMpdDFfY21hcF9zdGRfY2hhcl9pbmRleCwKKyAgICAoRlRfQ01hcF9DaGFyTmV4dEZ1bmMpIHQxX2NtYXBfc3RkX2NoYXJfbmV4dCwKKworICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwKKyAgfTsKKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICB0MV9jbWFwX2V4cGVydF9pbml0KCBUMV9DTWFwU3RkICBjbWFwICkKKyAgeworICAgIHQxX2NtYXBfc3RkX2luaXQoIGNtYXAsIDEgKTsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIEZUX0NBTExCQUNLX1RBQkxFX0RFRiBjb25zdCBGVF9DTWFwX0NsYXNzUmVjCisgIHQxX2NtYXBfZXhwZXJ0X2NsYXNzX3JlYyA9CisgIHsKKyAgICBzaXplb2YgKCBUMV9DTWFwU3RkUmVjICksCisKKyAgICAoRlRfQ01hcF9Jbml0RnVuYykgICAgIHQxX2NtYXBfZXhwZXJ0X2luaXQsCisgICAgKEZUX0NNYXBfRG9uZUZ1bmMpICAgICB0MV9jbWFwX3N0ZF9kb25lLAorICAgIChGVF9DTWFwX0NoYXJJbmRleEZ1bmMpdDFfY21hcF9zdGRfY2hhcl9pbmRleCwKKyAgICAoRlRfQ01hcF9DaGFyTmV4dEZ1bmMpIHQxX2NtYXBfc3RkX2NoYXJfbmV4dCwKKworICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwKKyAgfTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgVFlQRTEgQ1VTVE9NIEVOQ09ESU5HIENNQVAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHQxX2NtYXBfY3VzdG9tX2luaXQoIFQxX0NNYXBDdXN0b20gIGNtYXAgKQorICB7CisgICAgVDFfRmFjZSAgICAgIGZhY2UgICAgID0gKFQxX0ZhY2UpRlRfQ01BUF9GQUNFKCBjbWFwICk7CisgICAgVDFfRW5jb2RpbmcgIGVuY29kaW5nID0gJmZhY2UtPnR5cGUxLmVuY29kaW5nOworCisKKyAgICBjbWFwLT5maXJzdCAgID0gZW5jb2RpbmctPmNvZGVfZmlyc3Q7CisgICAgY21hcC0+Y291bnQgICA9IChGVF9VSW50KSggZW5jb2RpbmctPmNvZGVfbGFzdCAtIGNtYXAtPmZpcnN0ICk7CisgICAgY21hcC0+aW5kaWNlcyA9IGVuY29kaW5nLT5jaGFyX2luZGV4OworCisgICAgRlRfQVNTRVJUKCBjbWFwLT5pbmRpY2VzICE9IE5VTEwgKTsKKyAgICBGVF9BU1NFUlQoIGVuY29kaW5nLT5jb2RlX2ZpcnN0IDw9IGVuY29kaW5nLT5jb2RlX2xhc3QgKTsKKworICAgIHJldHVybiAwOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIHZvaWQgKQorICB0MV9jbWFwX2N1c3RvbV9kb25lKCBUMV9DTWFwQ3VzdG9tICBjbWFwICkKKyAgeworICAgIGNtYXAtPmluZGljZXMgPSBOVUxMOworICAgIGNtYXAtPmZpcnN0ICAgPSAwOworICAgIGNtYXAtPmNvdW50ICAgPSAwOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQgKQorICB0MV9jbWFwX2N1c3RvbV9jaGFyX2luZGV4KCBUMV9DTWFwQ3VzdG9tICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICAgICBjaGFyX2NvZGUgKQorICB7CisgICAgRlRfVUludCAgICByZXN1bHQgPSAwOworCisKKyAgICBpZiAoICggY2hhcl9jb2RlID49IGNtYXAtPmZpcnN0ICkgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgKCBjaGFyX2NvZGUgPCAoIGNtYXAtPmZpcnN0ICsgY21hcC0+Y291bnQgKSApICkKKyAgICAgIHJlc3VsdCA9IGNtYXAtPmluZGljZXNbY2hhcl9jb2RlXTsKKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludDMyICkKKyAgdDFfY21hcF9jdXN0b21fY2hhcl9uZXh0KCBUMV9DTWFwQ3VzdG9tICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgICAgKnBjaGFyX2NvZGUgKQorICB7CisgICAgRlRfVUludCAgICByZXN1bHQgPSAwOworICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlID0gKnBjaGFyX2NvZGU7CisKKworICAgICsrY2hhcl9jb2RlOworCisgICAgaWYgKCBjaGFyX2NvZGUgPCBjbWFwLT5maXJzdCApCisgICAgICBjaGFyX2NvZGUgPSBjbWFwLT5maXJzdDsKKworICAgIGZvciAoIDsgY2hhcl9jb2RlIDwgKCBjbWFwLT5maXJzdCArIGNtYXAtPmNvdW50ICk7IGNoYXJfY29kZSsrICkKKyAgICB7CisgICAgICByZXN1bHQgPSBjbWFwLT5pbmRpY2VzW2NoYXJfY29kZV07CisgICAgICBpZiAoIHJlc3VsdCAhPSAwICkKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGNoYXJfY29kZSA9IDA7CisKKyAgRXhpdDoKKyAgICAqcGNoYXJfY29kZSA9IGNoYXJfY29kZTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICBGVF9DQUxMQkFDS19UQUJMRV9ERUYgY29uc3QgRlRfQ01hcF9DbGFzc1JlYworICB0MV9jbWFwX2N1c3RvbV9jbGFzc19yZWMgPQorICB7CisgICAgc2l6ZW9mICggVDFfQ01hcEN1c3RvbVJlYyApLAorCisgICAgKEZUX0NNYXBfSW5pdEZ1bmMpICAgICB0MV9jbWFwX2N1c3RvbV9pbml0LAorICAgIChGVF9DTWFwX0RvbmVGdW5jKSAgICAgdDFfY21hcF9jdXN0b21fZG9uZSwKKyAgICAoRlRfQ01hcF9DaGFySW5kZXhGdW5jKXQxX2NtYXBfY3VzdG9tX2NoYXJfaW5kZXgsCisgICAgKEZUX0NNYXBfQ2hhck5leHRGdW5jKSB0MV9jbWFwX2N1c3RvbV9jaGFyX25leHQsCisKKyAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMCisgIH07CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICBUWVBFMSBTWU5USEVUSUMgVU5JQ09ERSBFTkNPRElORyBDTUFQICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBGVF9DQUxMQkFDS19ERUYoIGNvbnN0IGNoYXIgKiApCisgIHBzYXV4X2dldF9nbHlwaF9uYW1lKCBUMV9GYWNlICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgaWR4ICkKKyAgeworICAgIHJldHVybiBmYWNlLT50eXBlMS5nbHlwaF9uYW1lc1tpZHhdOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgdDFfY21hcF91bmljb2RlX2luaXQoIFBTX1VuaWNvZGVzICB1bmljb2RlcyApCisgIHsKKyAgICBUMV9GYWNlICAgICAgICAgICAgIGZhY2UgICAgPSAoVDFfRmFjZSlGVF9DTUFQX0ZBQ0UoIHVuaWNvZGVzICk7CisgICAgRlRfTWVtb3J5ICAgICAgICAgICBtZW1vcnkgID0gRlRfRkFDRV9NRU1PUlkoIGZhY2UgKTsKKyAgICBGVF9TZXJ2aWNlX1BzQ01hcHMgIHBzbmFtZXMgPSAoRlRfU2VydmljZV9Qc0NNYXBzKWZhY2UtPnBzbmFtZXM7CisKKworICAgIHJldHVybiBwc25hbWVzLT51bmljb2Rlc19pbml0KCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT50eXBlMS5udW1fZ2x5cGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFNfR2V0R2x5cGhOYW1lRnVuYykmcHNhdXhfZ2V0X2dseXBoX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQU19GcmVlR2x5cGhOYW1lRnVuYylOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfUG9pbnRlcilmYWNlICk7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggdm9pZCApCisgIHQxX2NtYXBfdW5pY29kZV9kb25lKCBQU19Vbmljb2RlcyAgdW5pY29kZXMgKQorICB7CisgICAgRlRfRmFjZSAgICBmYWNlICAgPSBGVF9DTUFQX0ZBQ0UoIHVuaWNvZGVzICk7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBGVF9GQUNFX01FTU9SWSggZmFjZSApOworCisKKyAgICBGVF9GUkVFKCB1bmljb2Rlcy0+bWFwcyApOworICAgIHVuaWNvZGVzLT5udW1fbWFwcyA9IDA7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludCApCisgIHQxX2NtYXBfdW5pY29kZV9jaGFyX2luZGV4KCBQU19Vbmljb2RlcyAgdW5pY29kZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICAgY2hhcl9jb2RlICkKKyAgeworICAgIFQxX0ZhY2UgICAgICAgICAgICAgZmFjZSAgICA9IChUMV9GYWNlKUZUX0NNQVBfRkFDRSggdW5pY29kZXMgKTsKKyAgICBGVF9TZXJ2aWNlX1BzQ01hcHMgIHBzbmFtZXMgPSAoRlRfU2VydmljZV9Qc0NNYXBzKWZhY2UtPnBzbmFtZXM7CisKKworICAgIHJldHVybiBwc25hbWVzLT51bmljb2Rlc19jaGFyX2luZGV4KCB1bmljb2RlcywgY2hhcl9jb2RlICk7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludDMyICkKKyAgdDFfY21hcF91bmljb2RlX2NoYXJfbmV4dCggUFNfVW5pY29kZXMgIHVuaWNvZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICAqcGNoYXJfY29kZSApCisgIHsKKyAgICBUMV9GYWNlICAgICAgICAgICAgIGZhY2UgICAgPSAoVDFfRmFjZSlGVF9DTUFQX0ZBQ0UoIHVuaWNvZGVzICk7CisgICAgRlRfU2VydmljZV9Qc0NNYXBzICBwc25hbWVzID0gKEZUX1NlcnZpY2VfUHNDTWFwcylmYWNlLT5wc25hbWVzOworCisKKyAgICByZXR1cm4gcHNuYW1lcy0+dW5pY29kZXNfY2hhcl9uZXh0KCB1bmljb2RlcywgcGNoYXJfY29kZSApOworICB9CisKKworICBGVF9DQUxMQkFDS19UQUJMRV9ERUYgY29uc3QgRlRfQ01hcF9DbGFzc1JlYworICB0MV9jbWFwX3VuaWNvZGVfY2xhc3NfcmVjID0KKyAgeworICAgIHNpemVvZiAoIFBTX1VuaWNvZGVzUmVjICksCisKKyAgICAoRlRfQ01hcF9Jbml0RnVuYykgICAgIHQxX2NtYXBfdW5pY29kZV9pbml0LAorICAgIChGVF9DTWFwX0RvbmVGdW5jKSAgICAgdDFfY21hcF91bmljb2RlX2RvbmUsCisgICAgKEZUX0NNYXBfQ2hhckluZGV4RnVuYyl0MV9jbWFwX3VuaWNvZGVfY2hhcl9pbmRleCwKKyAgICAoRlRfQ01hcF9DaGFyTmV4dEZ1bmMpIHQxX2NtYXBfdW5pY29kZV9jaGFyX25leHQsCisKKyAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMCisgIH07CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzYXV4L3QxY21hcC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC90MWNtYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzJlMGViCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC90MWNtYXAuaApAQCAtMCwwICsxLDEwNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdDFjbWFwLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFR5cGUgMSBjaGFyYWN0ZXIgbWFwIHN1cHBvcnQgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLCAyMDAzLCAyMDA2IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVDFDTUFQX0hfXworI2RlZmluZSBfX1QxQ01BUF9IX18KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIgorCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICBUWVBFMSBTVEFOREFSRCAoQU5EIEVYUEVSVCkgRU5DT0RJTkcgQ01BUFMgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qIHN0YW5kYXJkIChhbmQgZXhwZXJ0KSBlbmNvZGluZyBjbWFwcyAqLworICB0eXBlZGVmIHN0cnVjdCBUMV9DTWFwU3RkUmVjXyogIFQxX0NNYXBTdGQ7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0NNYXBTdGRSZWNfCisgIHsKKyAgICBGVF9DTWFwUmVjICAgICAgICAgICAgICAgIGNtYXA7CisKKyAgICBjb25zdCBGVF9VU2hvcnQqICAgICAgICAgIGNvZGVfdG9fc2lkOworICAgIFBTX0Fkb2JlX1N0ZF9TdHJpbmdzRnVuYyAgc2lkX3RvX3N0cmluZzsKKworICAgIEZUX1VJbnQgICAgICAgICAgICAgICAgICAgbnVtX2dseXBoczsKKyAgICBjb25zdCBjaGFyKiBjb25zdCogICAgICAgIGdseXBoX25hbWVzOworCisgIH0gVDFfQ01hcFN0ZFJlYzsKKworCisgIEZUX0NBTExCQUNLX1RBQkxFIGNvbnN0IEZUX0NNYXBfQ2xhc3NSZWMKKyAgdDFfY21hcF9zdGFuZGFyZF9jbGFzc19yZWM7CisKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUgY29uc3QgRlRfQ01hcF9DbGFzc1JlYworICB0MV9jbWFwX2V4cGVydF9jbGFzc19yZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICBUWVBFMSBDVVNUT00gRU5DT0RJTkcgQ01BUCAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICB0eXBlZGVmIHN0cnVjdCBUMV9DTWFwQ3VzdG9tUmVjXyogIFQxX0NNYXBDdXN0b207CisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0NNYXBDdXN0b21SZWNfCisgIHsKKyAgICBGVF9DTWFwUmVjICBjbWFwOworICAgIEZUX1VJbnQgICAgIGZpcnN0OworICAgIEZUX1VJbnQgICAgIGNvdW50OworICAgIEZUX1VTaG9ydCogIGluZGljZXM7CisKKyAgfSBUMV9DTWFwQ3VzdG9tUmVjOworCisKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUgY29uc3QgRlRfQ01hcF9DbGFzc1JlYworICB0MV9jbWFwX2N1c3RvbV9jbGFzc19yZWM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgVFlQRTEgU1lOVEhFVElDIFVOSUNPREUgRU5DT0RJTkcgQ01BUCAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKiB1bmljb2RlIChzeW50aGV0aWMpIGNtYXBzICovCisKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUgY29uc3QgRlRfQ01hcF9DbGFzc1JlYworICB0MV9jbWFwX3VuaWNvZGVfY2xhc3NfcmVjOworCisgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1QxQ01BUF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvdDFkZWNvZGUuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvdDFkZWNvZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmYxZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC90MWRlY29kZS5jCkBAIC0wLDAgKzEsMTYyMCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdDFkZWNvZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFBvc3RTY3JpcHQgVHlwZSAxIGRlY29kaW5nIHJvdXRpbmVzIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAwLTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmgiCisKKyNpbmNsdWRlICJ0MWRlY29kZS5oIgorI2luY2x1ZGUgInBzb2Jqcy5oIgorCisjaW5jbHVkZSAicHNhdXhlcnIuaCIKKworLyogZW5zdXJlIHByb3BlciBzaWduIGV4dGVuc2lvbiAqLworI2RlZmluZSBGaXgySW50KCBmICkgICggKEZUX0ludCkoRlRfU2hvcnQpKCAoZikgPj4gMTYgKSApCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfdDFkZWNvZGUKKworCisgIHR5cGVkZWYgZW51bSAgVDFfT3BlcmF0b3JfCisgIHsKKyAgICBvcF9ub25lID0gMCwKKyAgICBvcF9lbmRjaGFyLAorICAgIG9wX2hzYncsCisgICAgb3Bfc2VhYywKKyAgICBvcF9zYncsCisgICAgb3BfY2xvc2VwYXRoLAorICAgIG9wX2hsaW5ldG8sCisgICAgb3BfaG1vdmV0bywKKyAgICBvcF9odmN1cnZldG8sCisgICAgb3BfcmxpbmV0bywKKyAgICBvcF9ybW92ZXRvLAorICAgIG9wX3JyY3VydmV0bywKKyAgICBvcF92aGN1cnZldG8sCisgICAgb3BfdmxpbmV0bywKKyAgICBvcF92bW92ZXRvLAorICAgIG9wX2RvdHNlY3Rpb24sCisgICAgb3BfaHN0ZW0sCisgICAgb3BfaHN0ZW0zLAorICAgIG9wX3ZzdGVtLAorICAgIG9wX3ZzdGVtMywKKyAgICBvcF9kaXYsCisgICAgb3BfY2FsbG90aGVyc3ViciwKKyAgICBvcF9jYWxsc3ViciwKKyAgICBvcF9wb3AsCisgICAgb3BfcmV0dXJuLAorICAgIG9wX3NldGN1cnJlbnRwb2ludCwKKyAgICBvcF91bmtub3duMTUsCisKKyAgICBvcF9tYXggICAgLyogbmV2ZXIgcmVtb3ZlIHRoaXMgb25lICovCisKKyAgfSBUMV9PcGVyYXRvcjsKKworCisgIHN0YXRpYworICBjb25zdCBGVF9JbnQgIHQxX2FyZ3NfY291bnRbb3BfbWF4XSA9CisgIHsKKyAgICAwLCAvKiBub25lICovCisgICAgMCwgLyogZW5kY2hhciAqLworICAgIDIsIC8qIGhzYncgKi8KKyAgICA1LCAvKiBzZWFjICovCisgICAgNCwgLyogc2J3ICovCisgICAgMCwgLyogY2xvc2VwYXRoICovCisgICAgMSwgLyogaGxpbmV0byAqLworICAgIDEsIC8qIGhtb3ZldG8gKi8KKyAgICA0LCAvKiBodmN1cnZldG8gKi8KKyAgICAyLCAvKiBybGluZXRvICovCisgICAgMiwgLyogcm1vdmV0byAqLworICAgIDYsIC8qIHJyY3VydmV0byAqLworICAgIDQsIC8qIHZoY3VydmV0byAqLworICAgIDEsIC8qIHZsaW5ldG8gKi8KKyAgICAxLCAvKiB2bW92ZXRvICovCisgICAgMCwgLyogZG90c2VjdGlvbiAqLworICAgIDIsIC8qIGhzdGVtICovCisgICAgNiwgLyogaHN0ZW0zICovCisgICAgMiwgLyogdnN0ZW0gKi8KKyAgICA2LCAvKiB2c3RlbTMgKi8KKyAgICAyLCAvKiBkaXYgKi8KKyAgIC0xLCAvKiBjYWxsb3RoZXJzdWJyICovCisgICAgMSwgLyogY2FsbHN1YnIgKi8KKyAgICAwLCAvKiBwb3AgKi8KKyAgICAwLCAvKiByZXR1cm4gKi8KKyAgICAyLCAvKiBzZXRjdXJyZW50cG9pbnQgKi8KKyAgICAyICAvKiBvcGNvZGUgMTUgKHVuZG9jdW1lbnRlZCBhbmQgb2Jzb2xldGUpICovCisgIH07CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0MV9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb29rcyB1cCBhIGdpdmVuIGdseXBoIGJ5IGl0cyBTdGFuZGFyZEVuY29kaW5nIGNoYXJjb2RlLiAgVXNlZCB0byAgKi8KKyAgLyogICAgaW1wbGVtZW50IHRoZSBTRUFDIFR5cGUgMSBvcGVyYXRvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgOjogVGhlIGN1cnJlbnQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjaGFyY29kZSA6OiBUaGUgY2hhcmFjdGVyIGNvZGUgdG8gbG9vayBmb3IuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGdseXBoIGluZGV4IGluIHRoZSBmb250IGZhY2UuICBSZXR1cm5zIC0xIGlmIHRoZSBjb3JyZXNwb25kaW5nICAgKi8KKyAgLyogICAgZ2x5cGggd2Fzbid0IGZvdW5kLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfSW50CisgIHQxX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSggVDFfRGVjb2RlciAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICBjaGFyY29kZSApCisgIHsKKyAgICBGVF9VSW50ICAgICAgICAgICAgIG47CisgICAgY29uc3QgRlRfU3RyaW5nKiAgICBnbHlwaF9uYW1lOworICAgIEZUX1NlcnZpY2VfUHNDTWFwcyAgcHNuYW1lcyA9IGRlY29kZXItPnBzbmFtZXM7CisKKworICAgIC8qIGNoZWNrIHJhbmdlIG9mIHN0YW5kYXJkIGNoYXIgY29kZSAqLworICAgIGlmICggY2hhcmNvZGUgPCAwIHx8IGNoYXJjb2RlID4gMjU1ICkKKyAgICAgIHJldHVybiAtMTsKKworICAgIGdseXBoX25hbWUgPSBwc25hbWVzLT5hZG9iZV9zdGRfc3RyaW5ncygKKyAgICAgICAgICAgICAgICAgICBwc25hbWVzLT5hZG9iZV9zdGRfZW5jb2RpbmdbY2hhcmNvZGVdKTsKKworICAgIGZvciAoIG4gPSAwOyBuIDwgZGVjb2Rlci0+bnVtX2dseXBoczsgbisrICkKKyAgICB7CisgICAgICBGVF9TdHJpbmcqICBuYW1lID0gKEZUX1N0cmluZyopZGVjb2Rlci0+Z2x5cGhfbmFtZXNbbl07CisKKworICAgICAgaWYgKCBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIG5hbWVbMF0gPT0gZ2x5cGhfbmFtZVswXSAgICAgICAgICAgJiYKKyAgICAgICAgICAgZnRfc3RyY21wKCBuYW1lLCBnbHlwaF9uYW1lICkgPT0gMCApCisgICAgICAgIHJldHVybiBuOworICAgIH0KKworICAgIHJldHVybiAtMTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdDFvcGVyYXRvcl9zZWFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW1wbGVtZW50cyB0aGUgYHNlYWMnIFR5cGUgMSBvcGVyYXRvciBmb3IgYSBUeXBlIDEgZGVjb2Rlci4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVjb2RlciA6OiBUaGUgY3VycmVudCBDSUQgZGVjb2Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhc2IgICAgIDo6IFRoZSBhY2NlbnQncyBzaWRlIGJlYXJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFkeCAgICAgOjogVGhlIGhvcml6b250YWwgb2Zmc2V0IG9mIHRoZSBhY2NlbnQuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYWR5ICAgICA6OiBUaGUgdmVydGljYWwgb2Zmc2V0IG9mIHRoZSBhY2NlbnQuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBiY2hhciAgIDo6IFRoZSBiYXNlIGNoYXJhY3RlcidzIFN0YW5kYXJkRW5jb2RpbmcgY2hhcmNvZGUuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFjaGFyICAgOjogVGhlIGFjY2VudCBjaGFyYWN0ZXIncyBTdGFuZGFyZEVuY29kaW5nIGNoYXJjb2RlLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIHQxb3BlcmF0b3Jfc2VhYyggVDFfRGVjb2RlciAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICBhc2IsCisgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgYWR4LAorICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgICAgIGFkeSwKKyAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICBiY2hhciwKKyAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICBhY2hhciApCisgIHsKKyAgICBGVF9FcnJvciAgICAgZXJyb3I7CisgICAgRlRfSW50ICAgICAgIGJjaGFyX2luZGV4LCBhY2hhcl9pbmRleDsKKyNpZiAwCisgICAgRlRfSW50ICAgICAgIG5fYmFzZV9wb2ludHM7CisgICAgRlRfT3V0bGluZSogIGJhc2UgPSBkZWNvZGVyLT5idWlsZGVyLmJhc2U7CisjZW5kaWYKKyAgICBGVF9WZWN0b3IgICAgbGVmdF9iZWFyaW5nLCBhZHZhbmNlOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorICAgIFQxX0ZhY2UgICAgICBmYWNlICA9IChUMV9GYWNlKWRlY29kZXItPmJ1aWxkZXIuZmFjZTsKKyNlbmRpZgorCisKKyAgICBpZiAoIGRlY29kZXItPnNlYWMgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggInQxb3BlcmF0b3Jfc2VhYzogaW52YWxpZCBuZXN0ZWQgc2VhY1xuIiApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggU3ludGF4X0Vycm9yICk7CisgICAgfQorCisgICAgaWYgKCBkZWNvZGVyLT5idWlsZGVyLm1ldHJpY3Nfb25seSApCisgICAgeworICAgICAgRlRfRVJST1IoKCAidDFvcGVyYXRvcl9zZWFjOiB1bmV4cGVjdGVkIHNlYWNcbiIgKSk7CisgICAgICByZXR1cm4gRlRfVEhST1coIFN5bnRheF9FcnJvciApOworICAgIH0KKworICAgIC8qIHNlYWMgd2VpcmRuZXNzICovCisgICAgYWR4ICs9IGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nLng7CisKKyAgICAvKiBgZ2x5cGhfbmFtZXMnIGlzIHNldCB0byAwIGZvciBDSUQgZm9udHMgd2hpY2ggZG8gbm90ICovCisgICAgLyogaW5jbHVkZSBhbiBlbmNvZGluZy4gIEhvdyBjYW4gd2UgZGVhbCB3aXRoIHRoZXNlPyAgICAqLworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICBpZiAoIGRlY29kZXItPmdseXBoX25hbWVzID09IDAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICFmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UgKQorI2Vsc2UKKyAgICBpZiAoIGRlY29kZXItPmdseXBoX25hbWVzID09IDAgKQorI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KKyAgICB7CisgICAgICBGVF9FUlJPUigoICJ0MW9wZXJhdG9yX3NlYWM6IgorICAgICAgICAgICAgICAgICAiIGdseXBoIG5hbWVzIHRhYmxlIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBmb250XG4iICkpOworICAgICAgcmV0dXJuIEZUX1RIUk9XKCBTeW50YXhfRXJyb3IgKTsKKyAgICB9CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisgICAgaWYgKCBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UgKQorICAgIHsKKyAgICAgIC8qIHRoZSBjYWxsZXIgbXVzdCBoYW5kbGUgdGhlIGZvbnQgZW5jb2RpbmcgYWxzbyAqLworICAgICAgYmNoYXJfaW5kZXggPSBiY2hhcjsKKyAgICAgIGFjaGFyX2luZGV4ID0gYWNoYXI7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgIGJjaGFyX2luZGV4ID0gdDFfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlKCBkZWNvZGVyLCBiY2hhciApOworICAgICAgYWNoYXJfaW5kZXggPSB0MV9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUoIGRlY29kZXIsIGFjaGFyICk7CisgICAgfQorCisgICAgaWYgKCBiY2hhcl9pbmRleCA8IDAgfHwgYWNoYXJfaW5kZXggPCAwICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJ0MW9wZXJhdG9yX3NlYWM6IgorICAgICAgICAgICAgICAgICAiIGludmFsaWQgc2VhYyBjaGFyYWN0ZXIgY29kZSBhcmd1bWVudHNcbiIgKSk7CisgICAgICByZXR1cm4gRlRfVEhST1coIFN5bnRheF9FcnJvciApOworICAgIH0KKworICAgIC8qIGlmIHdlIGFyZSB0cnlpbmcgdG8gbG9hZCBhIGNvbXBvc2l0ZSBnbHlwaCwgZG8gbm90IGxvYWQgdGhlICovCisgICAgLyogYWNjZW50IGNoYXJhY3RlciBhbmQgcmV0dXJuIHRoZSBhcnJheSBvZiBzdWJnbHlwaHMuICAgICAgICAgKi8KKyAgICBpZiAoIGRlY29kZXItPmJ1aWxkZXIubm9fcmVjdXJzZSApCisgICAgeworICAgICAgRlRfR2x5cGhTbG90ICAgIGdseXBoICA9IChGVF9HbHlwaFNsb3QpZGVjb2Rlci0+YnVpbGRlci5nbHlwaDsKKyAgICAgIEZUX0dseXBoTG9hZGVyICBsb2FkZXIgPSBnbHlwaC0+aW50ZXJuYWwtPmxvYWRlcjsKKyAgICAgIEZUX1N1YkdseXBoICAgICBzdWJnOworCisKKyAgICAgIC8qIHJlYWxsb2NhdGUgc3ViZ2x5cGggYXJyYXkgaWYgbmVjZXNzYXJ5ICovCisgICAgICBlcnJvciA9IEZUX0dseXBoTG9hZGVyX0NoZWNrU3ViR2x5cGhzKCBsb2FkZXIsIDIgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIHN1YmcgPSBsb2FkZXItPmN1cnJlbnQuc3ViZ2x5cGhzOworCisgICAgICAvKiBzdWJnbHlwaCAwID0gYmFzZSBjaGFyYWN0ZXIgKi8KKyAgICAgIHN1YmctPmluZGV4ID0gYmNoYXJfaW5kZXg7CisgICAgICBzdWJnLT5mbGFncyA9IEZUX1NVQkdMWVBIX0ZMQUdfQVJHU19BUkVfWFlfVkFMVUVTIHwKKyAgICAgICAgICAgICAgICAgICAgRlRfU1VCR0xZUEhfRkxBR19VU0VfTVlfTUVUUklDUzsKKyAgICAgIHN1YmctPmFyZzEgID0gMDsKKyAgICAgIHN1YmctPmFyZzIgID0gMDsKKyAgICAgIHN1YmcrKzsKKworICAgICAgLyogc3ViZ2x5cGggMSA9IGFjY2VudCBjaGFyYWN0ZXIgKi8KKyAgICAgIHN1YmctPmluZGV4ID0gYWNoYXJfaW5kZXg7CisgICAgICBzdWJnLT5mbGFncyA9IEZUX1NVQkdMWVBIX0ZMQUdfQVJHU19BUkVfWFlfVkFMVUVTOworICAgICAgc3ViZy0+YXJnMSAgPSAoRlRfSW50KUZJWEVEX1RPX0lOVCggYWR4IC0gYXNiICk7CisgICAgICBzdWJnLT5hcmcyICA9IChGVF9JbnQpRklYRURfVE9fSU5UKCBhZHkgKTsKKworICAgICAgLyogc2V0IHVwIHJlbWFpbmluZyBnbHlwaCBmaWVsZHMgKi8KKyAgICAgIGdseXBoLT5udW1fc3ViZ2x5cGhzID0gMjsKKyAgICAgIGdseXBoLT5zdWJnbHlwaHMgICAgID0gbG9hZGVyLT5iYXNlLnN1YmdseXBoczsKKyAgICAgIGdseXBoLT5mb3JtYXQgICAgICAgID0gRlRfR0xZUEhfRk9STUFUX0NPTVBPU0lURTsKKworICAgICAgbG9hZGVyLT5jdXJyZW50Lm51bV9zdWJnbHlwaHMgPSAyOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIEZpcnN0IGxvYWQgYGJjaGFyJyBpbiBidWlsZGVyICovCisgICAgLyogbm93IGxvYWQgdGhlIHVuc2NhbGVkIG91dGxpbmUgKi8KKworICAgIEZUX0dseXBoTG9hZGVyX1ByZXBhcmUoIGRlY29kZXItPmJ1aWxkZXIubG9hZGVyICk7ICAvKiBwcmVwYXJlIGxvYWRlciAqLworCisgICAgLyogdGhlIHNlYWMgb3BlcmF0b3IgbXVzdCBub3QgYmUgbmVzdGVkICovCisgICAgZGVjb2Rlci0+c2VhYyA9IFRSVUU7CisgICAgZXJyb3IgPSB0MV9kZWNvZGVyX3BhcnNlX2dseXBoKCBkZWNvZGVyLCBiY2hhcl9pbmRleCApOworICAgIGRlY29kZXItPnNlYWMgPSBGQUxTRTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIHNhdmUgdGhlIGxlZnQgYmVhcmluZyBhbmQgd2lkdGggb2YgdGhlIGJhc2UgY2hhcmFjdGVyICovCisgICAgLyogYXMgdGhleSB3aWxsIGJlIGVyYXNlZCBieSB0aGUgbmV4dCBsb2FkLiAgICAgICAgICAgICAgKi8KKworICAgIGxlZnRfYmVhcmluZyA9IGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nOworICAgIGFkdmFuY2UgICAgICA9IGRlY29kZXItPmJ1aWxkZXIuYWR2YW5jZTsKKworICAgIGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nLnggPSAwOworICAgIGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nLnkgPSAwOworCisgICAgZGVjb2Rlci0+YnVpbGRlci5wb3NfeCA9IGFkeCAtIGFzYjsKKyAgICBkZWNvZGVyLT5idWlsZGVyLnBvc195ID0gYWR5OworCisgICAgLyogTm93IGxvYWQgYGFjaGFyJyBvbiB0b3Agb2YgKi8KKyAgICAvKiB0aGUgYmFzZSBvdXRsaW5lICAgICAgICAgICAqLworCisgICAgLyogdGhlIHNlYWMgb3BlcmF0b3IgbXVzdCBub3QgYmUgbmVzdGVkICovCisgICAgZGVjb2Rlci0+c2VhYyA9IFRSVUU7CisgICAgZXJyb3IgPSB0MV9kZWNvZGVyX3BhcnNlX2dseXBoKCBkZWNvZGVyLCBhY2hhcl9pbmRleCApOworICAgIGRlY29kZXItPnNlYWMgPSBGQUxTRTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIHJlc3RvcmUgdGhlIGxlZnQgc2lkZSBiZWFyaW5nIGFuZCAgICovCisgICAgLyogYWR2YW5jZSB3aWR0aCBvZiB0aGUgYmFzZSBjaGFyYWN0ZXIgKi8KKworICAgIGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nID0gbGVmdF9iZWFyaW5nOworICAgIGRlY29kZXItPmJ1aWxkZXIuYWR2YW5jZSAgICAgID0gYWR2YW5jZTsKKworICAgIGRlY29kZXItPmJ1aWxkZXIucG9zX3ggPSAwOworICAgIGRlY29kZXItPmJ1aWxkZXIucG9zX3kgPSAwOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQYXJzZXMgYSBnaXZlbiBUeXBlIDEgY2hhcnN0cmluZ3MgcHJvZ3JhbS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkZWNvZGVyICAgICAgICAgOjogVGhlIGN1cnJlbnQgVHlwZSAxIGRlY29kZXIuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNoYXJzdHJpbmdfYmFzZSA6OiBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBjaGFyc3RyaW5nIHN0cmVhbS4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY2hhcnN0cmluZ19sZW4gIDo6IFRoZSBsZW5ndGggaW4gYnl0ZXMgb2YgdGhlIGNoYXJzdHJpbmcgc3RyZWFtLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncyggVDFfRGVjb2RlciAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgY2hhcnN0cmluZ19iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBjaGFyc3RyaW5nX2xlbiApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yOworICAgIFQxX0RlY29kZXJfWm9uZSAgem9uZTsKKyAgICBGVF9CeXRlKiAgICAgICAgIGlwOworICAgIEZUX0J5dGUqICAgICAgICAgbGltaXQ7CisgICAgVDFfQnVpbGRlciAgICAgICBidWlsZGVyID0gJmRlY29kZXItPmJ1aWxkZXI7CisgICAgRlRfUG9zICAgICAgICAgICB4LCB5LCBvcmlnX3gsIG9yaWdfeTsKKyAgICBGVF9JbnQgICAgICAgICAgIGtub3duX290aGVyc3Vicl9yZXN1bHRfY250ICAgPSAwOworICAgIEZUX0ludCAgICAgICAgICAgdW5rbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA9IDA7CisgICAgRlRfQm9vbCAgICAgICAgICBsYXJnZV9pbnQ7CisgICAgRlRfRml4ZWQgICAgICAgICBzZWVkOworCisgICAgVDFfSGludHNfRnVuY3MgICBoaW50ZXI7CisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorICAgIEZUX0Jvb2wgICAgICAgICAgYm9sID0gVFJVRTsKKyNlbmRpZgorCisKKyAgICAvKiBjb21wdXRlIHJhbmRvbSBzZWVkIGZyb20gc3RhY2sgYWRkcmVzcyBvZiBwYXJhbWV0ZXIgKi8KKyAgICBzZWVkID0gKEZUX0ZpeGVkKSggKCAoRlRfUHRyRGlzdCkoY2hhciopJnNlZWQgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfUHRyRGlzdCkoY2hhciopJmRlY29kZXIgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfUHRyRGlzdCkoY2hhciopJmNoYXJzdHJpbmdfYmFzZSApICYKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTE9OR19NQVggKSA7CisgICAgc2VlZCA9ICggc2VlZCBeICggc2VlZCA+PiAxMCApIF4gKCBzZWVkID4+IDIwICkgKSAmIDB4RkZGRkw7CisgICAgaWYgKCBzZWVkID09IDAgKQorICAgICAgc2VlZCA9IDB4NzM4NDsKKworICAgIC8qIEZpcnN0IG9mIGFsbCwgaW5pdGlhbGl6ZSB0aGUgZGVjb2RlciAqLworICAgIGRlY29kZXItPnRvcCAgPSBkZWNvZGVyLT5zdGFjazsKKyAgICBkZWNvZGVyLT56b25lID0gZGVjb2Rlci0+em9uZXM7CisgICAgem9uZSAgICAgICAgICA9IGRlY29kZXItPnpvbmVzOworCisgICAgYnVpbGRlci0+cGFyc2Vfc3RhdGUgPSBUMV9QYXJzZV9TdGFydDsKKworICAgIGhpbnRlciA9IChUMV9IaW50c19GdW5jcylidWlsZGVyLT5oaW50c19mdW5jczsKKworICAgIC8qIGEgZm9udCB0aGF0IHJlYWRzIEJ1aWxkQ2hhckFycmF5IHdpdGhvdXQgc2V0dGluZyAqLworICAgIC8qIGl0cyB2YWx1ZXMgZmlyc3QgaXMgYnVnZ3ksIGJ1dCAuLi4gICAgICAgICAgICAgICAqLworICAgIEZUX0FTU0VSVCggKCBkZWNvZGVyLT5sZW5fYnVpbGRjaGFyID09IDAgKSA9PQorICAgICAgICAgICAgICAgKCBkZWNvZGVyLT5idWlsZGNoYXIgPT0gTlVMTCApICApOworCisgICAgaWYgKCBkZWNvZGVyLT5idWlsZGNoYXIgJiYgZGVjb2Rlci0+bGVuX2J1aWxkY2hhciA+IDAgKQorICAgICAgZnRfbWVtc2V0KCAmZGVjb2Rlci0+YnVpbGRjaGFyWzBdLAorICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICBzaXplb2YgKCBkZWNvZGVyLT5idWlsZGNoYXJbMF0gKSAqIGRlY29kZXItPmxlbl9idWlsZGNoYXIgKTsKKworICAgIEZUX1RSQUNFNCgoICJcbiIKKyAgICAgICAgICAgICAgICAiU3RhcnQgY2hhcnN0cmluZ1xuIiApKTsKKworICAgIHpvbmUtPmJhc2UgICAgICAgICAgID0gY2hhcnN0cmluZ19iYXNlOworICAgIGxpbWl0ID0gem9uZS0+bGltaXQgID0gY2hhcnN0cmluZ19iYXNlICsgY2hhcnN0cmluZ19sZW47CisgICAgaXAgICAgPSB6b25lLT5jdXJzb3IgPSB6b25lLT5iYXNlOworCisgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgICB4ID0gb3JpZ194ID0gYnVpbGRlci0+cG9zX3g7CisgICAgeSA9IG9yaWdfeSA9IGJ1aWxkZXItPnBvc195OworCisgICAgLyogYmVnaW4gaGludHMgcmVjb3JkaW5nIHNlc3Npb24sIGlmIGFueSAqLworICAgIGlmICggaGludGVyICkKKyAgICAgIGhpbnRlci0+b3BlbiggaGludGVyLT5oaW50cyApOworCisgICAgbGFyZ2VfaW50ID0gRkFMU0U7CisKKyAgICAvKiBub3csIGV4ZWN1dGUgbG9vcCAqLworICAgIHdoaWxlICggaXAgPCBsaW1pdCApCisgICAgeworICAgICAgRlRfTG9uZyogICAgIHRvcCAgID0gZGVjb2Rlci0+dG9wOworICAgICAgVDFfT3BlcmF0b3IgIG9wICAgID0gb3Bfbm9uZTsKKyAgICAgIEZUX0ludDMyICAgICB2YWx1ZSA9IDA7CisKKworICAgICAgRlRfQVNTRVJUKCBrbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA9PSAwICAgfHwKKyAgICAgICAgICAgICAgICAgdW5rbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA9PSAwICk7CisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorICAgICAgaWYgKCBib2wgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTUoKCAiICglZCkiLCBkZWNvZGVyLT50b3AgLSBkZWNvZGVyLT5zdGFjayApKTsKKyAgICAgICAgYm9sID0gRkFMU0U7CisgICAgICB9CisjZW5kaWYKKworICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBEZWNvZGUgb3BlcmF0b3Igb3Igb3BlcmFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIC8qIGZpcnN0IG9mIGFsbCwgZGVjb21wcmVzcyBvcGVyYXRvciBvciB2YWx1ZSAqLworICAgICAgc3dpdGNoICggKmlwKysgKQorICAgICAgeworICAgICAgY2FzZSAxOgorICAgICAgICBvcCA9IG9wX2hzdGVtOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAzOgorICAgICAgICBvcCA9IG9wX3ZzdGVtOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNDoKKyAgICAgICAgb3AgPSBvcF92bW92ZXRvOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNToKKyAgICAgICAgb3AgPSBvcF9ybGluZXRvOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNjoKKyAgICAgICAgb3AgPSBvcF9obGluZXRvOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNzoKKyAgICAgICAgb3AgPSBvcF92bGluZXRvOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgODoKKyAgICAgICAgb3AgPSBvcF9ycmN1cnZldG87CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA5OgorICAgICAgICBvcCA9IG9wX2Nsb3NlcGF0aDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDEwOgorICAgICAgICBvcCA9IG9wX2NhbGxzdWJyOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTE6CisgICAgICAgIG9wID0gb3BfcmV0dXJuOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAxMzoKKyAgICAgICAgb3AgPSBvcF9oc2J3OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTQ6CisgICAgICAgIG9wID0gb3BfZW5kY2hhcjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgMTU6ICAgICAgICAgIC8qIHVuZG9jdW1lbnRlZCwgb2Jzb2xldGUgb3BlcmF0b3IgKi8KKyAgICAgICAgb3AgPSBvcF91bmtub3duMTU7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDIxOgorICAgICAgICBvcCA9IG9wX3Jtb3ZldG87CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyMjoKKyAgICAgICAgb3AgPSBvcF9obW92ZXRvOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAzMDoKKyAgICAgICAgb3AgPSBvcF92aGN1cnZldG87CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzMToKKyAgICAgICAgb3AgPSBvcF9odmN1cnZldG87CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDEyOgorICAgICAgICBpZiAoIGlwID4gbGltaXQgKQorICAgICAgICB7CisgICAgICAgICAgRlRfRVJST1IoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAiIGludmFsaWQgZXNjYXBlICgxMitFT0YpXG4iICkpOworICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoICggKmlwKysgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICBvcCA9IG9wX2RvdHNlY3Rpb247CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICBvcCA9IG9wX3ZzdGVtMzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgIG9wID0gb3BfaHN0ZW0zOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDY6CisgICAgICAgICAgb3AgPSBvcF9zZWFjOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDc6CisgICAgICAgICAgb3AgPSBvcF9zYnc7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTI6CisgICAgICAgICAgb3AgPSBvcF9kaXY7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTY6CisgICAgICAgICAgb3AgPSBvcF9jYWxsb3RoZXJzdWJyOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE3OgorICAgICAgICAgIG9wID0gb3BfcG9wOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDMzOgorICAgICAgICAgIG9wID0gb3Bfc2V0Y3VycmVudHBvaW50OworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgRlRfRVJST1IoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAiIGludmFsaWQgZXNjYXBlICgxMislZClcbiIsCisgICAgICAgICAgICAgICAgICAgICBpcFstMV0gKSk7CisgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgMjU1OiAgICAvKiBmb3VyIGJ5dGVzIGludGVnZXIgKi8KKyAgICAgICAgaWYgKCBpcCArIDQgPiBsaW1pdCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9FUlJPUigoICJ0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICIgdW5leHBlY3RlZCBFT0YgaW4gaW50ZWdlclxuIiApKTsKKyAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHZhbHVlID0gKEZUX0ludDMyKSggKCAoRlRfVUludDMyKWlwWzBdIDw8IDI0ICkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKEZUX1VJbnQzMilpcFsxXSA8PCAxNiApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChGVF9VSW50MzIpaXBbMl0gPDwgOCAgKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUludDMyKWlwWzNdICAgICAgICAgKTsKKyAgICAgICAgaXAgKz0gNDsKKworICAgICAgICAvKiBBY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24sIHZhbHVlcyA+IDMyMDAwIG9yIDwgLTMyMDAwIG11c3QgKi8KKyAgICAgICAgLyogYmUgZm9sbG93ZWQgYnkgYSBgZGl2JyBvcGVyYXRvciB0byBtYWtlIHRoZSByZXN1bHQgYmUgaW4gdGhlICAgICovCisgICAgICAgIC8qIHJhbmdlIFstMzIwMDA7MzIwMDBdLiAgV2UgZXhwZWN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiAgICAqLworICAgICAgICAvKiBgZGl2JyBpcyBub3QgYSBsYXJnZSBudW1iZXIuICBBZGRpdGlvbmFsbHksIHdlIGRvbid0IGhhbmRsZSAgICAgKi8KKyAgICAgICAgLyogc3R1ZmYgbGlrZSBgPGxhcmdlMT4gPGxhcmdlMj4gPG51bT4gZGl2IDxudW0+IGRpdicgb3IgICAgICAgICAgICovCisgICAgICAgIC8qIDxsYXJnZTE+IDxsYXJnZTI+IDxudW0+IGRpdiBkaXYnLiAgVGhpcyBpcyBwcm9iYWJseSBub3QgYWxsb3dlZCAqLworICAgICAgICAvKiBhbnl3YXkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKCB2YWx1ZSA+IDMyMDAwIHx8IHZhbHVlIDwgLTMyMDAwICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggbGFyZ2VfaW50ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9FUlJPUigoICJ0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiBubyBgZGl2JyBhZnRlciBsYXJnZSBpbnRlZ2VyXG4iICkpOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXJnZV9pbnQgPSBUUlVFOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGlmICggIWxhcmdlX2ludCApCisgICAgICAgICAgICB2YWx1ZSA9IChGVF9JbnQzMikoIChGVF9VSW50MzIpdmFsdWUgPDwgMTYgKTsKKyAgICAgICAgfQorCisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBpZiAoIGlwWy0xXSA+PSAzMiApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIGlwWy0xXSA8IDI0NyApCisgICAgICAgICAgICB2YWx1ZSA9IChGVF9JbnQzMilpcFstMV0gLSAxMzk7CisgICAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggKytpcCA+IGxpbWl0ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfRVJST1IoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiB1bmV4cGVjdGVkIEVPRiBpbiBpbnRlZ2VyXG4iICkpOworICAgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBpcFstMl0gPCAyNTEgKQorICAgICAgICAgICAgICB2YWx1ZSA9ICAgICggKCBpcFstMl0gLSAyNDcgKSAqIDI1NiApICsgaXBbLTFdICsgMTA4OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB2YWx1ZSA9IC0oICggKCBpcFstMl0gLSAyNTEgKSAqIDI1NiApICsgaXBbLTFdICsgMTA4ICk7CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKCAhbGFyZ2VfaW50ICkKKyAgICAgICAgICAgIHZhbHVlID0gKEZUX0ludDMyKSggKEZUX1VJbnQzMil2YWx1ZSA8PCAxNiApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIEZUX0VSUk9SKCggInQxX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3M6IgorICAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGJ5dGUgKCVkKVxuIiwgaXBbLTFdICkpOworICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmICggdW5rbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA+IDAgKQorICAgICAgeworICAgICAgICBzd2l0Y2ggKCBvcCApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBvcF9jYWxsc3VicjoKKyAgICAgICAgY2FzZSBvcF9yZXR1cm46CisgICAgICAgIGNhc2Ugb3Bfbm9uZToKKyAgICAgICAgY2FzZSBvcF9wb3A6CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAvKiBhbGwgb3BlcmFuZHMgaGF2ZSBiZWVuIHRyYW5zZmVycmVkIGJ5IHByZXZpb3VzIHBvcHMgKi8KKyAgICAgICAgICB1bmtub3duX290aGVyc3Vicl9yZXN1bHRfY250ID0gMDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAoIGxhcmdlX2ludCAmJiAhKCBvcCA9PSBvcF9ub25lIHx8IG9wID09IG9wX2RpdiApICkKKyAgICAgIHsKKyAgICAgICAgRlRfRVJST1IoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgIiBubyBgZGl2JyBhZnRlciBsYXJnZSBpbnRlZ2VyXG4iICkpOworCisgICAgICAgIGxhcmdlX2ludCA9IEZBTFNFOworICAgICAgfQorCisgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICBQdXNoIHZhbHVlIG9uIHN0YWNrLCBvciBwcm9jZXNzIG9wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGlmICggb3AgPT0gb3Bfbm9uZSApCisgICAgICB7CisgICAgICAgIGlmICggdG9wIC0gZGVjb2Rlci0+c3RhY2sgPj0gVDFfTUFYX0NIQVJTVFJJTkdTX09QRVJBTkRTICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0VSUk9SKCggInQxX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3M6IHN0YWNrIG92ZXJmbG93XG4iICkpOworICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworICAgICAgICB9CisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorICAgICAgICBpZiAoIGxhcmdlX2ludCApCisgICAgICAgICAgRlRfVFJBQ0U0KCggIiAlbGQiLCB2YWx1ZSApKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIEZUX1RSQUNFNCgoICIgJWxkIiwgRml4MkludCggdmFsdWUgKSApKTsKKyNlbmRpZgorCisgICAgICAgICp0b3ArKyAgICAgICA9IHZhbHVlOworICAgICAgICBkZWNvZGVyLT50b3AgPSB0b3A7CisgICAgICB9CisgICAgICBlbHNlIGlmICggb3AgPT0gb3BfY2FsbG90aGVyc3ViciApICAvKiBjYWxsb3RoZXJzdWJyICovCisgICAgICB7CisgICAgICAgIEZUX0ludCAgc3Vicl9ubzsKKyAgICAgICAgRlRfSW50ICBhcmdfY250OworCisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorICAgICAgICBGVF9UUkFDRTQoKCAiIGNhbGxvdGhlcnN1YnJcbiIgKSk7CisgICAgICAgIGJvbCA9IFRSVUU7CisjZW5kaWYKKworICAgICAgICBpZiAoIHRvcCAtIGRlY29kZXItPnN0YWNrIDwgMiApCisgICAgICAgICAgZ290byBTdGFja19VbmRlcmZsb3c7CisKKyAgICAgICAgdG9wIC09IDI7CisKKyAgICAgICAgc3Vicl9ubyA9IEZpeDJJbnQoIHRvcFsxXSApOworICAgICAgICBhcmdfY250ID0gRml4MkludCggdG9wWzBdICk7CisKKyAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIHJlbW92ZSBhbGwgb3BlcmFuZHMgdG8gY2FsbG90aGVyc3ViciBmcm9tIHRoZSBzdGFjayAgICAgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiBmb3IgaGFuZGxlZCBvdGhlcnN1YnJzLCB3aGVyZSB3ZSBrbm93IHRoZSBudW1iZXIgb2YgICAgICovCisgICAgICAgIC8qIGFyZ3VtZW50cywgd2UgaW5jcmVhc2UgdGhlIHN0YWNrIGJ5IHRoZSB2YWx1ZSBvZiAgICAgICAgKi8KKyAgICAgICAgLyoga25vd25fb3RoZXJzdWJyX3Jlc3VsdF9jbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIGZvciB1bmhhbmRsZWQgb3RoZXJzdWJycyB0aGUgZm9sbG93aW5nIHBvcHMgYWRqdXN0IHRoZSAgKi8KKyAgICAgICAgLyogc3RhY2sgcG9pbnRlciBhcyBuZWNlc3NhcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgIGlmICggYXJnX2NudCA+IHRvcCAtIGRlY29kZXItPnN0YWNrICkKKyAgICAgICAgICBnb3RvIFN0YWNrX1VuZGVyZmxvdzsKKworICAgICAgICB0b3AgLT0gYXJnX2NudDsKKworICAgICAgICBrbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCAgID0gMDsKKyAgICAgICAgdW5rbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA9IDA7CisKKyAgICAgICAgLyogWFhYIFRPRE86IFRoZSBjaGVja3MgdG8gYGFyZ19jb3VudCA9PSA8d2hhdGV2ZXI+JyAgICAgICAqLworICAgICAgICAvKiBtaWdodCBub3QgYmUgY29ycmVjdDsgYW4gb3RoZXJzdWJyIGV4cGVjdHMgYSBjZXJ0YWluICAgICovCisgICAgICAgIC8qIG51bWJlciBvZiBvcGVyYW5kcyBvbiB0aGUgUG9zdFNjcmlwdCBzdGFjayAoYXMgb3Bwb3NlZCAgKi8KKyAgICAgICAgLyogdG8gdGhlIFQxIHN0YWNrKSBidXQgaXQgZG9lc24ndCBoYXZlIHRvIHB1dCB0aGVtIHRoZXJlICAqLworICAgICAgICAvKiBieSBpdHNlbGY7IHByZXZpb3VzIG90aGVyc3VicnMgbWlnaHQgaGF2ZSBsZWZ0IHRoZSAgICAgICovCisgICAgICAgIC8qIG9wZXJhbmRzIHRoZXJlIGlmIHRoZXkgd2VyZSBub3QgZm9sbG93ZWQgYnkgYW4gICAgICAgICAgKi8KKyAgICAgICAgLyogYXBwcm9wcmlhdGUgbnVtYmVyIG9mIHBvcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIE9uIHRoZSBvdGhlciBoYW5kLCBBZG9iZSBSZWFkZXIgNy4wLjggZm9yIExpbnV4IGRvZXNuJ3QgKi8KKyAgICAgICAgLyogYWNjZXB0IGEgZm9udCB0aGF0IGNvbnRhaW5zIGNoYXJzdHJpbmdzIGxpa2UgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qICAgICAxMDAgMjAwIDIgMjAgY2FsbG90aGVyc3ViciAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogICAgIDMwMCAxIDIwIGNhbGxvdGhlcnN1YnIgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIFBlcmhhcHMgdGhpcyBpcyB0aGUgcmVhc29uIHdoeSBCdWlsZENoYXJBcnJheSBleGlzdHMuICAgKi8KKworICAgICAgICBzd2l0Y2ggKCBzdWJyX25vICkKKyAgICAgICAgeworICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgLyogZW5kIGZsZXggZmVhdHVyZSAqLworICAgICAgICAgIGlmICggYXJnX2NudCAhPSAzICkKKyAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZF9PdGhlclN1YnI7CisKKyAgICAgICAgICBpZiAoIGRlY29kZXItPmZsZXhfc3RhdGUgICAgICAgPT0gMCB8fAorICAgICAgICAgICAgICAgZGVjb2Rlci0+bnVtX2ZsZXhfdmVjdG9ycyAhPSA3ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9FUlJPUigoICJ0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiB1bmV4cGVjdGVkIGZsZXggZW5kXG4iICkpOworICAgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgICAgfQorCisgICAgICAgICAgLyogdGhlIHR3byBgcmVzdWx0cycgYXJlIHBvcHBlZCBieSB0aGUgZm9sbG93aW5nIHNldGN1cnJlbnRwb2ludCAqLworICAgICAgICAgIHRvcFswXSA9IHg7CisgICAgICAgICAgdG9wWzFdID0geTsKKyAgICAgICAgICBrbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA9IDI7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0IGZsZXggZmVhdHVyZSAqLworICAgICAgICAgIGlmICggYXJnX2NudCAhPSAwICkKKyAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZF9PdGhlclN1YnI7CisKKyAgICAgICAgICBkZWNvZGVyLT5mbGV4X3N0YXRlICAgICAgICA9IDE7CisgICAgICAgICAgZGVjb2Rlci0+bnVtX2ZsZXhfdmVjdG9ycyAgPSAwOworICAgICAgICAgIGlmICggKCBlcnJvciA9IHQxX2J1aWxkZXJfc3RhcnRfcG9pbnQoIGJ1aWxkZXIsIHgsIHkgKSApCisgICAgICAgICAgICAgICAgICE9IEZUX0Vycl9PayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICggZXJyb3IgPSB0MV9idWlsZGVyX2NoZWNrX3BvaW50cyggYnVpbGRlciwgNiApICkKKyAgICAgICAgICAgICAgICAgIT0gRlRfRXJyX09rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBmbGV4IHZlY3RvcnMgKi8KKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9JbnQgIGlkeDsKKworCisgICAgICAgICAgICBpZiAoIGFyZ19jbnQgIT0gMCApCisgICAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZF9PdGhlclN1YnI7CisKKyAgICAgICAgICAgIGlmICggZGVjb2Rlci0+ZmxleF9zdGF0ZSA9PSAwICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfRVJST1IoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiBtaXNzaW5nIGZsZXggc3RhcnRcbiIgKSk7CisgICAgICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBub3RlIHRoYXQgd2Ugc2hvdWxkIG5vdCBhZGQgYSBwb2ludCBmb3IgaW5kZXggMDsgKi8KKyAgICAgICAgICAgIC8qIHRoaXMgd2lsbCBtb3ZlIG91ciBjdXJyZW50IHBvc2l0aW9uIHRvIHRoZSBmbGV4ICAqLworICAgICAgICAgICAgLyogcG9pbnQgd2l0aG91dCBhZGRpbmcgYW55IHBvaW50IHRvIHRoZSBvdXRsaW5lICAgICovCisgICAgICAgICAgICBpZHggPSBkZWNvZGVyLT5udW1fZmxleF92ZWN0b3JzKys7CisgICAgICAgICAgICBpZiAoIGlkeCA+IDAgJiYgaWR4IDwgNyApCisgICAgICAgICAgICAgIHQxX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfQnl0ZSkoIGlkeCA9PSAzIHx8IGlkeCA9PSA2ICkgKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAzOiAgICAgICAgICAgICAgICAgICAgIC8qIGNoYW5nZSBoaW50cyAqLworICAgICAgICAgIGlmICggYXJnX2NudCAhPSAxICkKKyAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZF9PdGhlclN1YnI7CisKKyAgICAgICAgICBrbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA9IDE7CisKKyAgICAgICAgICBpZiAoIGhpbnRlciApCisgICAgICAgICAgICBoaW50ZXItPnJlc2V0KCBoaW50ZXItPmhpbnRzLCBidWlsZGVyLT5jdXJyZW50LT5uX3BvaW50cyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMTI6CisgICAgICAgIGNhc2UgMTM6CisgICAgICAgICAgLyogY291bnRlciBjb250cm9sIGhpbnRzLCBjbGVhciBzdGFjayAqLworICAgICAgICAgIHRvcCA9IGRlY29kZXItPnN0YWNrOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMTQ6CisgICAgICAgIGNhc2UgMTU6CisgICAgICAgIGNhc2UgMTY6CisgICAgICAgIGNhc2UgMTc6CisgICAgICAgIGNhc2UgMTg6ICAgICAgICAgICAgICAgICAgICAvKiBtdWx0aXBsZSBtYXN0ZXJzICovCisgICAgICAgICAgeworICAgICAgICAgICAgUFNfQmxlbmQgIGJsZW5kID0gZGVjb2Rlci0+YmxlbmQ7CisgICAgICAgICAgICBGVF9VSW50ICAgbnVtX3BvaW50cywgbm4sIG1tOworICAgICAgICAgICAgRlRfTG9uZyogIGRlbHRhOworICAgICAgICAgICAgRlRfTG9uZyogIHZhbHVlczsKKworCisgICAgICAgICAgICBpZiAoICFibGVuZCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX0VSUk9SKCggInQxX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3M6IgorICAgICAgICAgICAgICAgICAgICAgICAgICIgdW5leHBlY3RlZCBtdWx0aXBsZSBtYXN0ZXJzIG9wZXJhdG9yXG4iICkpOworICAgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbnVtX3BvaW50cyA9IChGVF9VSW50KXN1YnJfbm8gLSAxMyArICggc3Vicl9ubyA9PSAxOCApOworICAgICAgICAgICAgaWYgKCBhcmdfY250ICE9IChGVF9JbnQpKCBudW1fcG9pbnRzICogYmxlbmQtPm51bV9kZXNpZ25zICkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9FUlJPUigoICJ0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIGluY29ycmVjdCBudW1iZXIgb2YgbXVsdGlwbGUgbWFzdGVycyBhcmd1bWVudHNcbiIgKSk7CisgICAgICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBXZSB3YW50IHRvIGNvbXB1dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIC8qICAgYTAqdzAgKyBhMSp3MSArIC4uLiArIGFrKndrICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgLyogYnV0IHdlIG9ubHkgaGF2ZSBhMCwgYTEtYTAsIGEyLWEwLCAuLi4sIGFrLWEwLiAgICAgICAgKi8KKyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiBIb3dldmVyLCBnaXZlbiB0aGF0IHcwICsgdzEgKyAuLi4gKyB3ayA9PSAxLCB3ZSBjYW4gICAqLworICAgICAgICAgICAgLyogcmV3cml0ZSBpdCBlYXNpbHkgYXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiAgIGEwICsgKGExLWEwKSp3MSArIChhMi1hMCkqdzIgKyAuLi4gKyAoYWstYTApKndrICAgICAqLworICAgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIC8qIHdoZXJlIGsgPT0gbnVtX2Rlc2lnbnMtMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgLyogSSBndWVzcyB0aGF0J3Mgd2h5IGl0J3Mgd3JpdHRlbiBpbiB0aGlzIGBjb21wYWN0JyAgICAgKi8KKyAgICAgICAgICAgIC8qIGZvcm0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgZGVsdGEgID0gdG9wICsgbnVtX3BvaW50czsKKyAgICAgICAgICAgIHZhbHVlcyA9IHRvcDsKKyAgICAgICAgICAgIGZvciAoIG5uID0gMDsgbm4gPCBudW1fcG9pbnRzOyBubisrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfTG9uZyAgdG1wID0gdmFsdWVzWzBdOworCisKKyAgICAgICAgICAgICAgZm9yICggbW0gPSAxOyBtbSA8IGJsZW5kLT5udW1fZGVzaWduczsgbW0rKyApCisgICAgICAgICAgICAgICAgdG1wICs9IEZUX011bEZpeCggKmRlbHRhKyssIGJsZW5kLT53ZWlnaHRfdmVjdG9yW21tXSApOworCisgICAgICAgICAgICAgICp2YWx1ZXMrKyA9IHRtcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAga25vd25fb3RoZXJzdWJyX3Jlc3VsdF9jbnQgPSBudW1fcG9pbnRzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorCisgICAgICAgIGNhc2UgMTk6CisgICAgICAgICAgLyogPGlkeD4gMSAxOSBjYWxsb3RoZXJzdWJyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qID0+IHJlcGxhY2UgZWxlbWVudHMgc3RhcnRpbmcgZnJvbSBpbmRleCBjdmkoIDxpZHg+ICkgKi8KKyAgICAgICAgICAvKiAgICBvZiBCdWlsZENoYXJBcnJheSB3aXRoIFdlaWdodFZlY3RvciAgICAgICAgICAgICAgICovCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfSW50ICAgIGlkeDsKKyAgICAgICAgICAgIFBTX0JsZW5kICBibGVuZCA9IGRlY29kZXItPmJsZW5kOworCisKKyAgICAgICAgICAgIGlmICggYXJnX2NudCAhPSAxIHx8IGJsZW5kID09IE5VTEwgKQorICAgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRfT3RoZXJTdWJyOworCisgICAgICAgICAgICBpZHggPSBGaXgySW50KCB0b3BbMF0gKTsKKworICAgICAgICAgICAgaWYgKCBpZHggPCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgIGlkeCArIGJsZW5kLT5udW1fZGVzaWducyA+IGRlY29kZXItPmxlbl9idWlsZGNoYXIgKQorICAgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRfT3RoZXJTdWJyOworCisgICAgICAgICAgICBmdF9tZW1jcHkoICZkZWNvZGVyLT5idWlsZGNoYXJbaWR4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQtPndlaWdodF92ZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kLT5udW1fZGVzaWducyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggYmxlbmQtPndlaWdodF92ZWN0b3JbMF0gKSApOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDIwOgorICAgICAgICAgIC8qIDxhcmcxPiA8YXJnMj4gMiAyMCBjYWxsb3RoZXJzdWJyIHBvcCAgICovCisgICAgICAgICAgLyogPT0+IHB1c2ggPGFyZzE+ICsgPGFyZzI+IG9udG8gVDEgc3RhY2sgKi8KKyAgICAgICAgICBpZiAoIGFyZ19jbnQgIT0gMiApCisgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRfT3RoZXJTdWJyOworCisgICAgICAgICAgdG9wWzBdICs9IHRvcFsxXTsgLyogWFhYIChvdmVyfHVuZGVyKWZsb3cgKi8KKworICAgICAgICAgIGtub3duX290aGVyc3Vicl9yZXN1bHRfY250ID0gMTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDIxOgorICAgICAgICAgIC8qIDxhcmcxPiA8YXJnMj4gMiAyMSBjYWxsb3RoZXJzdWJyIHBvcCAgICovCisgICAgICAgICAgLyogPT0+IHB1c2ggPGFyZzE+IC0gPGFyZzI+IG9udG8gVDEgc3RhY2sgKi8KKyAgICAgICAgICBpZiAoIGFyZ19jbnQgIT0gMiApCisgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRfT3RoZXJTdWJyOworCisgICAgICAgICAgdG9wWzBdIC09IHRvcFsxXTsgLyogWFhYIChvdmVyfHVuZGVyKWZsb3cgKi8KKworICAgICAgICAgIGtub3duX290aGVyc3Vicl9yZXN1bHRfY250ID0gMTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDIyOgorICAgICAgICAgIC8qIDxhcmcxPiA8YXJnMj4gMiAyMiBjYWxsb3RoZXJzdWJyIHBvcCAgICovCisgICAgICAgICAgLyogPT0+IHB1c2ggPGFyZzE+ICogPGFyZzI+IG9udG8gVDEgc3RhY2sgKi8KKyAgICAgICAgICBpZiAoIGFyZ19jbnQgIT0gMiApCisgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRfT3RoZXJTdWJyOworCisgICAgICAgICAgdG9wWzBdID0gRlRfTXVsRml4KCB0b3BbMF0sIHRvcFsxXSApOworCisgICAgICAgICAga25vd25fb3RoZXJzdWJyX3Jlc3VsdF9jbnQgPSAxOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMjM6CisgICAgICAgICAgLyogPGFyZzE+IDxhcmcyPiAyIDIzIGNhbGxvdGhlcnN1YnIgcG9wICAgKi8KKyAgICAgICAgICAvKiA9PT4gcHVzaCA8YXJnMT4gLyA8YXJnMj4gb250byBUMSBzdGFjayAqLworICAgICAgICAgIGlmICggYXJnX2NudCAhPSAyIHx8IHRvcFsxXSA9PSAwICkKKyAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZF9PdGhlclN1YnI7CisKKyAgICAgICAgICB0b3BbMF0gPSBGVF9EaXZGaXgoIHRvcFswXSwgdG9wWzFdICk7CisKKyAgICAgICAgICBrbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA9IDE7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAyNDoKKyAgICAgICAgICAvKiA8dmFsPiA8aWR4PiAyIDI0IGNhbGxvdGhlcnN1YnIgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qID09PiBzZXQgQnVpbGRDaGFyQXJyYXlbY3ZpKCA8aWR4PiApXSA9IDx2YWw+ICovCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfSW50ICAgIGlkeDsKKyAgICAgICAgICAgIFBTX0JsZW5kICBibGVuZCA9IGRlY29kZXItPmJsZW5kOworCisKKyAgICAgICAgICAgIGlmICggYXJnX2NudCAhPSAyIHx8IGJsZW5kID09IE5VTEwgKQorICAgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRfT3RoZXJTdWJyOworCisgICAgICAgICAgICBpZHggPSBGaXgySW50KCB0b3BbMV0gKTsKKworICAgICAgICAgICAgaWYgKCBpZHggPCAwIHx8IChGVF9VSW50KSBpZHggPj0gZGVjb2Rlci0+bGVuX2J1aWxkY2hhciApCisgICAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZF9PdGhlclN1YnI7CisKKyAgICAgICAgICAgIGRlY29kZXItPmJ1aWxkY2hhcltpZHhdID0gdG9wWzBdOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDI1OgorICAgICAgICAgIC8qIDxpZHg+IDEgMjUgY2FsbG90aGVyc3ViciBwb3AgICAgICAgICovCisgICAgICAgICAgLyogPT0+IHB1c2ggQnVpbGRDaGFyQXJyYXlbY3ZpKCBpZHggKV0gKi8KKyAgICAgICAgICAvKiAgICAgb250byBUMSBzdGFjayAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0ludCAgICBpZHg7CisgICAgICAgICAgICBQU19CbGVuZCAgYmxlbmQgPSBkZWNvZGVyLT5ibGVuZDsKKworCisgICAgICAgICAgICBpZiAoIGFyZ19jbnQgIT0gMSB8fCBibGVuZCA9PSBOVUxMICkKKyAgICAgICAgICAgICAgZ290byBVbmV4cGVjdGVkX090aGVyU3VicjsKKworICAgICAgICAgICAgaWR4ID0gRml4MkludCggdG9wWzBdICk7CisKKyAgICAgICAgICAgIGlmICggaWR4IDwgMCB8fCAoRlRfVUludCkgaWR4ID49IGRlY29kZXItPmxlbl9idWlsZGNoYXIgKQorICAgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRfT3RoZXJTdWJyOworCisgICAgICAgICAgICB0b3BbMF0gPSBkZWNvZGVyLT5idWlsZGNoYXJbaWR4XTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBrbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA9IDE7CisgICAgICAgICAgYnJlYWs7CisKKyNpZiAwCisgICAgICAgIGNhc2UgMjY6CisgICAgICAgICAgLyogPHZhbD4gbWFyayA8aWR4PiA9PT4gc2V0IEJ1aWxkQ2hhckFycmF5W2N2aSggPGlkeD4gKV0gPSA8dmFsPiwgKi8KKyAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICBsZWF2ZSBtYXJrIG9uIFQxIHN0YWNrICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qIDx2YWw+IDxpZHg+ICAgICAgPT0+IHNldCBCdWlsZENoYXJBcnJheVtjdmkoIDxpZHg+ICldID0gPHZhbD4gICovCisgICAgICAgICAgWFhYIHdoaWNoIHJvdXRpbmUgaGFzIGxlZnQgaXRzIG1hcmsgb24gdGhlIChQb3N0U2NyaXB0KSBzdGFjaz87CisgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKworICAgICAgICBjYXNlIDI3OgorICAgICAgICAgIC8qIDxyZXMxPiA8cmVzMj4gPHZhbDE+IDx2YWwyPiA0IDI3IGNhbGxvdGhlcnN1YnIgcG9wICovCisgICAgICAgICAgLyogPT0+IHB1c2ggPHJlczE+IG9udG8gVDEgc3RhY2sgaWYgPHZhbDE+IDw9IDx2YWwyPiwgKi8KKyAgICAgICAgICAvKiAgICAgb3RoZXJ3aXNlIHB1c2ggPHJlczI+ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIGlmICggYXJnX2NudCAhPSA0ICkKKyAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZF9PdGhlclN1YnI7CisKKyAgICAgICAgICBpZiAoIHRvcFsyXSA+IHRvcFszXSApCisgICAgICAgICAgICB0b3BbMF0gPSB0b3BbMV07CisKKyAgICAgICAgICBrbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA9IDE7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAyODoKKyAgICAgICAgICAvKiAwIDI4IGNhbGxvdGhlcnN1YnIgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogPT4gcHVzaCByYW5kb20gdmFsdWUgZnJvbSBpbnRlcnZhbCBbMCwgMSkgb250byBzdGFjayAqLworICAgICAgICAgIGlmICggYXJnX2NudCAhPSAwICkKKyAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZF9PdGhlclN1YnI7CisKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9GaXhlZCAgUmFuZDsKKworCisgICAgICAgICAgICBSYW5kID0gc2VlZDsKKyAgICAgICAgICAgIGlmICggUmFuZCA+PSAweDgwMDBMICkKKyAgICAgICAgICAgICAgUmFuZCsrOworCisgICAgICAgICAgICB0b3BbMF0gPSBSYW5kOworCisgICAgICAgICAgICBzZWVkID0gRlRfTXVsRml4KCBzZWVkLCAweDEwMDAwTCAtIHNlZWQgKTsKKyAgICAgICAgICAgIGlmICggc2VlZCA9PSAwICkKKyAgICAgICAgICAgICAgc2VlZCArPSAweDI4NzM7CisgICAgICAgICAgfQorCisgICAgICAgICAga25vd25fb3RoZXJzdWJyX3Jlc3VsdF9jbnQgPSAxOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgaWYgKCBhcmdfY250ID49IDAgJiYgc3Vicl9ubyA+PSAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9FUlJPUigoICJ0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiB1bmtub3duIG90aGVyc3ViciBbJWQgJWRdLCB3aXNoIG1lIGx1Y2tcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIGFyZ19jbnQsIHN1YnJfbm8gKSk7CisgICAgICAgICAgICB1bmtub3duX290aGVyc3Vicl9yZXN1bHRfY250ID0gYXJnX2NudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKworICAgICAgICBVbmV4cGVjdGVkX090aGVyU3VicjoKKyAgICAgICAgICBGVF9FUlJPUigoICJ0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICIgaW52YWxpZCBvdGhlcnN1YnIgWyVkICVkXVxuIiwgYXJnX2NudCwgc3Vicl9ubyApKTsKKyAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHRvcCArPSBrbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudDsKKworICAgICAgICBkZWNvZGVyLT50b3AgPSB0b3A7CisgICAgICB9CisgICAgICBlbHNlICAvKiBnZW5lcmFsIG9wZXJhdG9yICovCisgICAgICB7CisgICAgICAgIEZUX0ludCAgbnVtX2FyZ3MgPSB0MV9hcmdzX2NvdW50W29wXTsKKworCisgICAgICAgIEZUX0FTU0VSVCggbnVtX2FyZ3MgPj0gMCApOworCisgICAgICAgIGlmICggdG9wIC0gZGVjb2Rlci0+c3RhY2sgPCBudW1fYXJncyApCisgICAgICAgICAgZ290byBTdGFja19VbmRlcmZsb3c7CisKKyAgICAgICAgLyogWFhYIE9wZXJhdG9ycyB1c3VhbGx5IHRha2UgdGhlaXIgb3BlcmFuZHMgZnJvbSB0aGUgICAgICAgICovCisgICAgICAgIC8qICAgICBib3R0b20gb2YgdGhlIHN0YWNrLCBpLmUuLCB0aGUgb3BlcmFuZHMgYXJlICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgZGVjb2Rlci0+c3RhY2tbMF0sIC4uLiwgZGVjb2Rlci0+c3RhY2tbbnVtX2FyZ3MgLSAxXTsgKi8KKyAgICAgICAgLyogICAgIG9ubHkgZGl2LCBjYWxsc3ViciwgYW5kIGNhbGxvdGhlcnN1YnIgYXJlIGRpZmZlcmVudC4gICovCisgICAgICAgIC8qICAgICBJbiBwcmFjdGljZSBpdCBkb2Vzbid0IG1hdHRlciAoPykuICAgICAgICAgICAgICAgICAgICAqLworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKworICAgICAgICBzd2l0Y2ggKCBvcCApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBvcF9jYWxsc3VicjoKKyAgICAgICAgY2FzZSBvcF9kaXY6CisgICAgICAgIGNhc2Ugb3BfY2FsbG90aGVyc3VicjoKKyAgICAgICAgY2FzZSBvcF9wb3A6CisgICAgICAgIGNhc2Ugb3BfcmV0dXJuOgorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgaWYgKCB0b3AgLSBkZWNvZGVyLT5zdGFjayAhPSBudW1fYXJncyApCisgICAgICAgICAgICBGVF9UUkFDRTAoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICAiIHRvbyBtdWNoIG9wZXJhbmRzIG9uIHRoZSBzdGFjayIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgKHNlZW4gJWQsIGV4cGVjdGVkICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvcCAtIGRlY29kZXItPnN0YWNrLCBudW1fYXJncyApKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyNlbmRpZiAvKiBGVF9ERUJVR19MRVZFTF9UUkFDRSAqLworCisgICAgICAgIHRvcCAtPSBudW1fYXJnczsKKworICAgICAgICBzd2l0Y2ggKCBvcCApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBvcF9lbmRjaGFyOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgZW5kY2hhclxuIiApKTsKKworICAgICAgICAgIHQxX2J1aWxkZXJfY2xvc2VfY29udG91ciggYnVpbGRlciApOworCisgICAgICAgICAgLyogY2xvc2UgaGludHMgcmVjb3JkaW5nIHNlc3Npb24gKi8KKyAgICAgICAgICBpZiAoIGhpbnRlciApCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKCBoaW50ZXItPmNsb3NlKCBoaW50ZXItPmhpbnRzLCBidWlsZGVyLT5jdXJyZW50LT5uX3BvaW50cyApICkKKyAgICAgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisKKyAgICAgICAgICAgIC8qIGFwcGx5IGhpbnRzIHRvIHRoZSBsb2FkZWQgZ2x5cGggb3V0bGluZSBub3cgKi8KKyAgICAgICAgICAgIGhpbnRlci0+YXBwbHkoIGhpbnRlci0+aGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLT5jdXJyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBTSF9HbG9iYWxzKWJ1aWxkZXItPmhpbnRzX2dsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLT5oaW50X21vZGUgKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvKiBhZGQgY3VycmVudCBvdXRsaW5lIHRvIHRoZSBnbHlwaCBzbG90ICovCisgICAgICAgICAgRlRfR2x5cGhMb2FkZXJfQWRkKCBidWlsZGVyLT5sb2FkZXIgKTsKKworICAgICAgICAgIC8qIHRoZSBjb21waWxlciBzaG91bGQgb3B0aW1pemUgYXdheSB0aGlzIGVtcHR5IGxvb3AgYnV0IC4uLiAqLworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKworICAgICAgICAgIGlmICggZGVjb2Rlci0+bGVuX2J1aWxkY2hhciA+IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VJbnQgIGk7CisKKworICAgICAgICAgICAgRlRfVFJBQ0U0KCggIkJ1aWxkQ2hhckFycmF5ID0gWyAiICkpOworCisgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGRlY29kZXItPmxlbl9idWlsZGNoYXI7ICsraSApCisgICAgICAgICAgICAgIEZUX1RSQUNFNCgoICIlZCAiLCBkZWNvZGVyLT5idWlsZGNoYXJbaV0gKSk7CisKKyAgICAgICAgICAgIEZUX1RSQUNFNCgoICJdXG4iICkpOworICAgICAgICAgIH0KKworI2VuZGlmIC8qIEZUX0RFQlVHX0xFVkVMX1RSQUNFICovCisKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiXG4iICkpOworCisgICAgICAgICAgLyogcmV0dXJuIG5vdyEgKi8KKyAgICAgICAgICByZXR1cm4gRlRfRXJyX09rOworCisgICAgICAgIGNhc2Ugb3BfaHNidzoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIGhzYnciICkpOworCisgICAgICAgICAgYnVpbGRlci0+cGFyc2Vfc3RhdGUgPSBUMV9QYXJzZV9IYXZlX1dpZHRoOworCisgICAgICAgICAgYnVpbGRlci0+bGVmdF9iZWFyaW5nLnggKz0gdG9wWzBdOworICAgICAgICAgIGJ1aWxkZXItPmFkdmFuY2UueCAgICAgICA9IHRvcFsxXTsKKyAgICAgICAgICBidWlsZGVyLT5hZHZhbmNlLnkgICAgICAgPSAwOworCisgICAgICAgICAgb3JpZ194ID0geCA9IGJ1aWxkZXItPnBvc194ICsgdG9wWzBdOworICAgICAgICAgIG9yaWdfeSA9IHkgPSBidWlsZGVyLT5wb3NfeTsKKworICAgICAgICAgIEZUX1VOVVNFRCggb3JpZ195ICk7CisKKyAgICAgICAgICAvKiB0aGUgYG1ldHJpY3Nfb25seScgaW5kaWNhdGVzIHRoYXQgd2Ugb25seSB3YW50IHRvIGNvbXB1dGUgKi8KKyAgICAgICAgICAvKiB0aGUgZ2x5cGgncyBtZXRyaWNzIChsc2IgKyBhZHZhbmNlIHdpZHRoKSwgbm90IGxvYWQgdGhlICAgKi8KKyAgICAgICAgICAvKiByZXN0IG9mIGl0OyBzbyBleGl0IGltbWVkaWF0ZWx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICBpZiAoIGJ1aWxkZXItPm1ldHJpY3Nfb25seSApCisgICAgICAgICAgICByZXR1cm4gRlRfRXJyX09rOworCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9zZWFjOgorICAgICAgICAgIHJldHVybiB0MW9wZXJhdG9yX3NlYWMoIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcFsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml4MkludCggdG9wWzNdICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml4MkludCggdG9wWzRdICkgKTsKKworICAgICAgICBjYXNlIG9wX3NidzoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHNidyIgKSk7CisKKyAgICAgICAgICBidWlsZGVyLT5wYXJzZV9zdGF0ZSA9IFQxX1BhcnNlX0hhdmVfV2lkdGg7CisKKyAgICAgICAgICBidWlsZGVyLT5sZWZ0X2JlYXJpbmcueCArPSB0b3BbMF07CisgICAgICAgICAgYnVpbGRlci0+bGVmdF9iZWFyaW5nLnkgKz0gdG9wWzFdOworICAgICAgICAgIGJ1aWxkZXItPmFkdmFuY2UueCAgICAgICA9IHRvcFsyXTsKKyAgICAgICAgICBidWlsZGVyLT5hZHZhbmNlLnkgICAgICAgPSB0b3BbM107CisKKyAgICAgICAgICB4ID0gYnVpbGRlci0+cG9zX3ggKyB0b3BbMF07CisgICAgICAgICAgeSA9IGJ1aWxkZXItPnBvc195ICsgdG9wWzFdOworCisgICAgICAgICAgLyogdGhlIGBtZXRyaWNzX29ubHknIGluZGljYXRlcyB0aGF0IHdlIG9ubHkgd2FudCB0byBjb21wdXRlICovCisgICAgICAgICAgLyogdGhlIGdseXBoJ3MgbWV0cmljcyAobHNiICsgYWR2YW5jZSB3aWR0aCksIG5vdCBsb2FkIHRoZSAgICovCisgICAgICAgICAgLyogcmVzdCBvZiBpdDsgc28gZXhpdCBpbW1lZGlhdGVseSAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgaWYgKCBidWlsZGVyLT5tZXRyaWNzX29ubHkgKQorICAgICAgICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfY2xvc2VwYXRoOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgY2xvc2VwYXRoIiApKTsKKworICAgICAgICAgIC8qIGlmIHRoZXJlIGlzIG5vIHBhdGgsIGBjbG9zZXBhdGgnIGlzIGEgbm8tb3AgKi8KKyAgICAgICAgICBpZiAoIGJ1aWxkZXItPnBhcnNlX3N0YXRlID09IFQxX1BhcnNlX0hhdmVfUGF0aCAgIHx8CisgICAgICAgICAgICAgICBidWlsZGVyLT5wYXJzZV9zdGF0ZSA9PSBUMV9QYXJzZV9IYXZlX01vdmV0byApCisgICAgICAgICAgICB0MV9idWlsZGVyX2Nsb3NlX2NvbnRvdXIoIGJ1aWxkZXIgKTsKKworICAgICAgICAgIGJ1aWxkZXItPnBhcnNlX3N0YXRlID0gVDFfUGFyc2VfSGF2ZV9XaWR0aDsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2hsaW5ldG86CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBobGluZXRvIiApKTsKKworICAgICAgICAgIGlmICggKCBlcnJvciA9IHQxX2J1aWxkZXJfc3RhcnRfcG9pbnQoIGJ1aWxkZXIsIHgsIHkgKSApCisgICAgICAgICAgICAgICAgICE9IEZUX0Vycl9PayApCisgICAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgICB4ICs9IHRvcFswXTsKKyAgICAgICAgICBnb3RvIEFkZF9MaW5lOworCisgICAgICAgIGNhc2Ugb3BfaG1vdmV0bzoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIGhtb3ZldG8iICkpOworCisgICAgICAgICAgeCArPSB0b3BbMF07CisgICAgICAgICAgaWYgKCAhZGVjb2Rlci0+ZmxleF9zdGF0ZSApCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKCBidWlsZGVyLT5wYXJzZV9zdGF0ZSA9PSBUMV9QYXJzZV9TdGFydCApCisgICAgICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworICAgICAgICAgICAgYnVpbGRlci0+cGFyc2Vfc3RhdGUgPSBUMV9QYXJzZV9IYXZlX01vdmV0bzsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9odmN1cnZldG86CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBodmN1cnZldG8iICkpOworCisgICAgICAgICAgaWYgKCAoIGVycm9yID0gdDFfYnVpbGRlcl9zdGFydF9wb2ludCggYnVpbGRlciwgeCwgeSApICkKKyAgICAgICAgICAgICAgICAgIT0gRlRfRXJyX09rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgKCBlcnJvciA9IHQxX2J1aWxkZXJfY2hlY2tfcG9pbnRzKCBidWlsZGVyLCAzICkgKQorICAgICAgICAgICAgICAgICAhPSBGVF9FcnJfT2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgIHggKz0gdG9wWzBdOworICAgICAgICAgIHQxX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAwICk7CisgICAgICAgICAgeCArPSB0b3BbMV07CisgICAgICAgICAgeSArPSB0b3BbMl07CisgICAgICAgICAgdDFfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKyAgICAgICAgICB5ICs9IHRvcFszXTsKKyAgICAgICAgICB0MV9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfcmxpbmV0bzoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHJsaW5ldG8iICkpOworCisgICAgICAgICAgaWYgKCAoIGVycm9yID0gdDFfYnVpbGRlcl9zdGFydF9wb2ludCggYnVpbGRlciwgeCwgeSApICkKKyAgICAgICAgICAgICAgICAgIT0gRlRfRXJyX09rICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgIHggKz0gdG9wWzBdOworICAgICAgICAgIHkgKz0gdG9wWzFdOworCisgICAgICAgIEFkZF9MaW5lOgorICAgICAgICAgIGlmICggKCBlcnJvciA9IHQxX2J1aWxkZXJfYWRkX3BvaW50MSggYnVpbGRlciwgeCwgeSApICkKKyAgICAgICAgICAgICAgICAgIT0gRlRfRXJyX09rICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3Jtb3ZldG86CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBybW92ZXRvIiApKTsKKworICAgICAgICAgIHggKz0gdG9wWzBdOworICAgICAgICAgIHkgKz0gdG9wWzFdOworICAgICAgICAgIGlmICggIWRlY29kZXItPmZsZXhfc3RhdGUgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggYnVpbGRlci0+cGFyc2Vfc3RhdGUgPT0gVDFfUGFyc2VfU3RhcnQgKQorICAgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICAgIGJ1aWxkZXItPnBhcnNlX3N0YXRlID0gVDFfUGFyc2VfSGF2ZV9Nb3ZldG87CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfcnJjdXJ2ZXRvOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgcnJjdXJ2ZXRvIiApKTsKKworICAgICAgICAgIGlmICggKCBlcnJvciA9IHQxX2J1aWxkZXJfc3RhcnRfcG9pbnQoIGJ1aWxkZXIsIHgsIHkgKSApCisgICAgICAgICAgICAgICAgICE9IEZUX0Vycl9PayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICggZXJyb3IgPSB0MV9idWlsZGVyX2NoZWNrX3BvaW50cyggYnVpbGRlciwgMyApICkKKyAgICAgICAgICAgICAgICAgIT0gRlRfRXJyX09rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgICB4ICs9IHRvcFswXTsKKyAgICAgICAgICB5ICs9IHRvcFsxXTsKKyAgICAgICAgICB0MV9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMCApOworCisgICAgICAgICAgeCArPSB0b3BbMl07CisgICAgICAgICAgeSArPSB0b3BbM107CisgICAgICAgICAgdDFfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKworICAgICAgICAgIHggKz0gdG9wWzRdOworICAgICAgICAgIHkgKz0gdG9wWzVdOworICAgICAgICAgIHQxX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAxICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF92aGN1cnZldG86CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiB2aGN1cnZldG8iICkpOworCisgICAgICAgICAgaWYgKCAoIGVycm9yID0gdDFfYnVpbGRlcl9zdGFydF9wb2ludCggYnVpbGRlciwgeCwgeSApICkKKyAgICAgICAgICAgICAgICAgIT0gRlRfRXJyX09rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgKCBlcnJvciA9IHQxX2J1aWxkZXJfY2hlY2tfcG9pbnRzKCBidWlsZGVyLCAzICkgKQorICAgICAgICAgICAgICAgICAhPSBGVF9FcnJfT2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgIHkgKz0gdG9wWzBdOworICAgICAgICAgIHQxX2J1aWxkZXJfYWRkX3BvaW50KCBidWlsZGVyLCB4LCB5LCAwICk7CisgICAgICAgICAgeCArPSB0b3BbMV07CisgICAgICAgICAgeSArPSB0b3BbMl07CisgICAgICAgICAgdDFfYnVpbGRlcl9hZGRfcG9pbnQoIGJ1aWxkZXIsIHgsIHksIDAgKTsKKyAgICAgICAgICB4ICs9IHRvcFszXTsKKyAgICAgICAgICB0MV9idWlsZGVyX2FkZF9wb2ludCggYnVpbGRlciwgeCwgeSwgMSApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfdmxpbmV0bzoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHZsaW5ldG8iICkpOworCisgICAgICAgICAgaWYgKCAoIGVycm9yID0gdDFfYnVpbGRlcl9zdGFydF9wb2ludCggYnVpbGRlciwgeCwgeSApICkKKyAgICAgICAgICAgICAgICAgIT0gRlRfRXJyX09rICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgIHkgKz0gdG9wWzBdOworICAgICAgICAgIGdvdG8gQWRkX0xpbmU7CisKKyAgICAgICAgY2FzZSBvcF92bW92ZXRvOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgdm1vdmV0byIgKSk7CisKKyAgICAgICAgICB5ICs9IHRvcFswXTsKKyAgICAgICAgICBpZiAoICFkZWNvZGVyLT5mbGV4X3N0YXRlICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGJ1aWxkZXItPnBhcnNlX3N0YXRlID09IFQxX1BhcnNlX1N0YXJ0ICkKKyAgICAgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgICAgICBidWlsZGVyLT5wYXJzZV9zdGF0ZSA9IFQxX1BhcnNlX0hhdmVfTW92ZXRvOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2RpdjoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIGRpdiIgKSk7CisKKyAgICAgICAgICAvKiBpZiBgbGFyZ2VfaW50JyBpcyBzZXQsIHdlIGRpdmlkZSB1bnNjYWxlZCBudW1iZXJzOyAqLworICAgICAgICAgIC8qIG90aGVyd2lzZSwgd2UgZGl2aWRlIG51bWJlcnMgaW4gMTYuMTYgZm9ybWF0IC0tICAgICovCisgICAgICAgICAgLyogaW4gYm90aCBjYXNlcywgaXQgaXMgdGhlIHNhbWUgb3BlcmF0aW9uICAgICAgICAgICAgKi8KKyAgICAgICAgICAqdG9wID0gRlRfRGl2Rml4KCB0b3BbMF0sIHRvcFsxXSApOworICAgICAgICAgICsrdG9wOworCisgICAgICAgICAgbGFyZ2VfaW50ID0gRkFMU0U7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9jYWxsc3VicjoKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9JbnQgIGlkeDsKKworCisgICAgICAgICAgICBGVF9UUkFDRTQoKCAiIGNhbGxzdWJyIiApKTsKKworICAgICAgICAgICAgaWR4ID0gRml4MkludCggdG9wWzBdICk7CisgICAgICAgICAgICBpZiAoIGlkeCA8IDAgfHwgaWR4ID49IChGVF9JbnQpZGVjb2Rlci0+bnVtX3N1YnJzICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfRVJST1IoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIHN1YnJzIGluZGV4XG4iICkpOworICAgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCB6b25lIC0gZGVjb2Rlci0+em9uZXMgPj0gVDFfTUFYX1NVQlJTX0NBTExTICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfRVJST1IoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiB0b28gbWFueSBuZXN0ZWQgc3VicnNcbiIgKSk7CisgICAgICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB6b25lLT5jdXJzb3IgPSBpcDsgIC8qIHNhdmUgY3VycmVudCBpbnN0cnVjdGlvbiBwb2ludGVyICovCisKKyAgICAgICAgICAgIHpvbmUrKzsKKworICAgICAgICAgICAgLyogVGhlIFR5cGUgMSBkcml2ZXIgc3RvcmVzIHN1YnJvdXRpbmVzIHdpdGhvdXQgdGhlIHNlZWQgYnl0ZXMuICovCisgICAgICAgICAgICAvKiBUaGUgQ0lEIGRyaXZlciBzdG9yZXMgc3Vicm91dGluZXMgd2l0aCBzZWVkIGJ5dGVzLiAgVGhpcyAgICAgKi8KKyAgICAgICAgICAgIC8qIGNhc2UgaXMgdGFrZW4gY2FyZSBvZiB3aGVuIGRlY29kZXItPnN1YnJzX2xlbiA9PSAwLiAgICAgICAgICAqLworICAgICAgICAgICAgem9uZS0+YmFzZSA9IGRlY29kZXItPnN1YnJzW2lkeF07CisKKyAgICAgICAgICAgIGlmICggZGVjb2Rlci0+c3VicnNfbGVuICkKKyAgICAgICAgICAgICAgem9uZS0+bGltaXQgPSB6b25lLT5iYXNlICsgZGVjb2Rlci0+c3VicnNfbGVuW2lkeF07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIC8qIFdlIGFyZSB1c2luZyBzdWJyb3V0aW5lcyBmcm9tIGEgQ0lEIGZvbnQuICBXZSBtdXN0IGFkanVzdCAqLworICAgICAgICAgICAgICAvKiBmb3IgdGhlIHNlZWQgYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgem9uZS0+YmFzZSAgKz0gKCBkZWNvZGVyLT5sZW5JViA+PSAwID8gZGVjb2Rlci0+bGVuSVYgOiAwICk7CisgICAgICAgICAgICAgIHpvbmUtPmxpbWl0ICA9IGRlY29kZXItPnN1YnJzW2lkeCArIDFdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB6b25lLT5jdXJzb3IgPSB6b25lLT5iYXNlOworCisgICAgICAgICAgICBpZiAoICF6b25lLT5iYXNlICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfRVJST1IoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbnZva2luZyBlbXB0eSBzdWJyc1xuIiApKTsKKyAgICAgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlY29kZXItPnpvbmUgPSB6b25lOworICAgICAgICAgICAgaXAgICAgICAgICAgICA9IHpvbmUtPmJhc2U7CisgICAgICAgICAgICBsaW1pdCAgICAgICAgID0gem9uZS0+bGltaXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9wb3A6CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBwb3AiICkpOworCisgICAgICAgICAgaWYgKCBrbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudCA+IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGtub3duX290aGVyc3Vicl9yZXN1bHRfY250LS07CisgICAgICAgICAgICAvKiBpZ25vcmUsIHdlIHB1c2hlZCB0aGUgb3BlcmFuZHMgb3Vyc2VsdmVzICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoIHVua25vd25fb3RoZXJzdWJyX3Jlc3VsdF9jbnQgPT0gMCApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfRVJST1IoKCAidDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5nczoiCisgICAgICAgICAgICAgICAgICAgICAgICIgbm8gbW9yZSBvcGVyYW5kcyBmb3Igb3RoZXJzdWJyXG4iICkpOworICAgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgICAgfQorCisgICAgICAgICAgdW5rbm93bl9vdGhlcnN1YnJfcmVzdWx0X2NudC0tOworICAgICAgICAgIHRvcCsrOyAgIC8qIGBwdXNoJyB0aGUgb3BlcmFuZCB0byBjYWxsb3RoZXJzdWJyIG9udG8gdGhlIHN0YWNrICovCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9yZXR1cm46CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiByZXR1cm4iICkpOworCisgICAgICAgICAgaWYgKCB6b25lIDw9IGRlY29kZXItPnpvbmVzICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9FUlJPUigoICJ0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiB1bmV4cGVjdGVkIHJldHVyblxuIiApKTsKKyAgICAgICAgICAgIGdvdG8gU3ludGF4X0Vycm9yOworICAgICAgICAgIH0KKworICAgICAgICAgIHpvbmUtLTsKKyAgICAgICAgICBpcCAgICAgICAgICAgID0gem9uZS0+Y3Vyc29yOworICAgICAgICAgIGxpbWl0ICAgICAgICAgPSB6b25lLT5saW1pdDsKKyAgICAgICAgICBkZWNvZGVyLT56b25lID0gem9uZTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2RvdHNlY3Rpb246CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBkb3RzZWN0aW9uIiApKTsKKworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfaHN0ZW06CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiBoc3RlbSIgKSk7CisKKyAgICAgICAgICAvKiByZWNvcmQgaG9yaXpvbnRhbCBoaW50ICovCisgICAgICAgICAgaWYgKCBoaW50ZXIgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIHRvcFswXSArPSBidWlsZGVyLT5sZWZ0X2JlYXJpbmcueTsgKi8KKyAgICAgICAgICAgIGhpbnRlci0+c3RlbSggaGludGVyLT5oaW50cywgMSwgdG9wICk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfaHN0ZW0zOgorICAgICAgICAgIEZUX1RSQUNFNCgoICIgaHN0ZW0zIiApKTsKKworICAgICAgICAgIC8qIHJlY29yZCBob3Jpem9udGFsIGNvdW50ZXItY29udHJvbGxlZCBoaW50cyAqLworICAgICAgICAgIGlmICggaGludGVyICkKKyAgICAgICAgICAgIGhpbnRlci0+c3RlbTMoIGhpbnRlci0+aGludHMsIDEsIHRvcCApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfdnN0ZW06CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiB2c3RlbSIgKSk7CisKKyAgICAgICAgICAvKiByZWNvcmQgdmVydGljYWwgaGludCAqLworICAgICAgICAgIGlmICggaGludGVyICkKKyAgICAgICAgICB7CisgICAgICAgICAgICB0b3BbMF0gKz0gb3JpZ194OworICAgICAgICAgICAgaGludGVyLT5zdGVtKCBoaW50ZXItPmhpbnRzLCAwLCB0b3AgKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF92c3RlbTM6CisgICAgICAgICAgRlRfVFJBQ0U0KCggIiB2c3RlbTMiICkpOworCisgICAgICAgICAgLyogcmVjb3JkIHZlcnRpY2FsIGNvdW50ZXItY29udHJvbGxlZCBoaW50cyAqLworICAgICAgICAgIGlmICggaGludGVyICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9Qb3MgIGR4ID0gb3JpZ194OworCisKKyAgICAgICAgICAgIHRvcFswXSArPSBkeDsKKyAgICAgICAgICAgIHRvcFsyXSArPSBkeDsKKyAgICAgICAgICAgIHRvcFs0XSArPSBkeDsKKyAgICAgICAgICAgIGhpbnRlci0+c3RlbTMoIGhpbnRlci0+aGludHMsIDAsIHRvcCApOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3NldGN1cnJlbnRwb2ludDoKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIHNldGN1cnJlbnRwb2ludCIgKSk7CisKKyAgICAgICAgICAvKiBGcm9tIHRoZSBUMSBzcGVjaWZpY2F0aW9uLCBzZWN0aW9uIDYuNDogICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiAgIFRoZSBzZXRjdXJyZW50cG9pbnQgY29tbWFuZCBpcyB1c2VkIG9ubHkgaW4gICAgICAgICAgKi8KKyAgICAgICAgICAvKiAgIGNvbmp1bmN0aW9uIHdpdGggcmVzdWx0cyBmcm9tIE90aGVyU3VicnMgcHJvY2VkdXJlcy4gKi8KKworICAgICAgICAgIC8qIGtub3duX290aGVyc3Vicl9yZXN1bHRfY250ICE9IDAgaXMgYWxyZWFkeSBoYW5kbGVkICAgICAqLworICAgICAgICAgIC8qIGFib3ZlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgICAgLyogTm90ZSwgaG93ZXZlciwgdGhhdCBib3RoIEdob3N0c2NyaXB0IGFuZCBBZG9iZSAgICAgICAgICovCisgICAgICAgICAgLyogRGlzdGlsbGVyIGhhbmRsZSB0aGlzIHNpdHVhdGlvbiBieSBzaWxlbnRseSBpZ25vcmluZyAgICovCisgICAgICAgICAgLyogdGhlIGluYXBwcm9wcmlhdGUgYHNldGN1cnJlbnRwb2ludCcgaW5zdHJ1Y3Rpb24uICBTbyAgICovCisgICAgICAgICAgLyogd2UgZG8gdGhlIHNhbWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjaWYgMAorCisgICAgICAgICAgaWYgKCBkZWNvZGVyLT5mbGV4X3N0YXRlICE9IDEgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0VSUk9SKCggInQxX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3M6IgorICAgICAgICAgICAgICAgICAgICAgICAiIHVuZXhwZWN0ZWQgYHNldGN1cnJlbnRwb2ludCdcbiIgKSk7CisgICAgICAgICAgICBnb3RvIFN5bnRheF9FcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgLi4uCisjZW5kaWYKKworICAgICAgICAgIHggPSB0b3BbMF07CisgICAgICAgICAgeSA9IHRvcFsxXTsKKyAgICAgICAgICBkZWNvZGVyLT5mbGV4X3N0YXRlID0gMDsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3Vua25vd24xNToKKyAgICAgICAgICBGVF9UUkFDRTQoKCAiIG9wY29kZV8xNSIgKSk7CisgICAgICAgICAgLyogbm90aGluZyB0byBkbyBleGNlcHQgdG8gcG9wIHRoZSB0d28gYXJndW1lbnRzICovCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBGVF9FUlJPUigoICJ0MV9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzOiIKKyAgICAgICAgICAgICAgICAgICAgICIgdW5oYW5kbGVkIG9wY29kZSAlZFxuIiwgb3AgKSk7CisgICAgICAgICAgZ290byBTeW50YXhfRXJyb3I7CisgICAgICAgIH0KKworICAgICAgICAvKiBYWFggT3BlcmF0b3JzIHVzdWFsbHkgY2xlYXIgdGhlIG9wZXJhbmQgc3RhY2s7ICAqLworICAgICAgICAvKiAgICAgb25seSBkaXYsIGNhbGxzdWJyLCBjYWxsb3RoZXJzdWJyLCBwb3AsIGFuZCAqLworICAgICAgICAvKiAgICAgcmV0dXJuIGFyZSBkaWZmZXJlbnQuICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgSW4gcHJhY3RpY2UgaXQgZG9lc24ndCBtYXR0ZXIgKD8pLiAgICAgICAgICAqLworCisgICAgICAgIGRlY29kZXItPnRvcCA9IHRvcDsKKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisgICAgICAgIEZUX1RSQUNFNCgoICJcbiIgKSk7CisgICAgICAgIGJvbCA9IFRSVUU7CisjZW5kaWYKKworICAgICAgfSAvKiBnZW5lcmFsIG9wZXJhdG9yIHByb2Nlc3NpbmcgKi8KKworICAgIH0gLyogd2hpbGUgaXAgPCBsaW1pdCAqLworCisgICAgRlRfVFJBQ0U0KCggIi4uZW5kLi5cblxuIiApKTsKKworICBGYWlsOgorICAgIHJldHVybiBlcnJvcjsKKworICBTeW50YXhfRXJyb3I6CisgICAgcmV0dXJuIEZUX1RIUk9XKCBTeW50YXhfRXJyb3IgKTsKKworICBTdGFja19VbmRlcmZsb3c6CisgICAgcmV0dXJuIEZUX1RIUk9XKCBTdGFja19VbmRlcmZsb3cgKTsKKyAgfQorCisKKyAgLyogcGFyc2UgYSBzaW5nbGUgVHlwZSAxIGdseXBoICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0MV9kZWNvZGVyX3BhcnNlX2dseXBoKCBUMV9EZWNvZGVyICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBnbHlwaCApCisgIHsKKyAgICByZXR1cm4gZGVjb2Rlci0+cGFyc2VfY2FsbGJhY2soIGRlY29kZXIsIGdseXBoICk7CisgIH0KKworCisgIC8qIGluaXRpYWxpemUgVDEgZGVjb2RlciAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdDFfZGVjb2Rlcl9pbml0KCBUMV9EZWNvZGVyICAgICAgICAgICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgRlRfU2l6ZSAgICAgICAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgICAgICBzbG90LAorICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqKiAgICAgICAgICAgIGdseXBoX25hbWVzLAorICAgICAgICAgICAgICAgICAgIFBTX0JsZW5kICAgICAgICAgICAgIGJsZW5kLAorICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICAgICAgIGhpbnRpbmcsCisgICAgICAgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgICAgICAgaGludF9tb2RlLAorICAgICAgICAgICAgICAgICAgIFQxX0RlY29kZXJfQ2FsbGJhY2sgIHBhcnNlX2NhbGxiYWNrICkKKyAgeworICAgIEZUX01FTV9aRVJPKCBkZWNvZGVyLCBzaXplb2YgKCAqZGVjb2RlciApICk7CisKKyAgICAvKiByZXRyaWV2ZSBQU05hbWVzIGludGVyZmFjZSBmcm9tIGxpc3Qgb2YgY3VycmVudCBtb2R1bGVzICovCisgICAgeworICAgICAgRlRfU2VydmljZV9Qc0NNYXBzICBwc25hbWVzID0gMDsKKworCisgICAgICBGVF9GQUNFX0ZJTkRfR0xPQkFMX1NFUlZJQ0UoIGZhY2UsIHBzbmFtZXMsIFBPU1RTQ1JJUFRfQ01BUFMgKTsKKyAgICAgIGlmICggIXBzbmFtZXMgKQorICAgICAgeworICAgICAgICBGVF9FUlJPUigoICJ0MV9kZWNvZGVyX2luaXQ6IgorICAgICAgICAgICAgICAgICAgICIgdGhlIGBwc25hbWVzJyBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZVxuIiApKTsKKyAgICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKTsKKyAgICAgIH0KKworICAgICAgZGVjb2Rlci0+cHNuYW1lcyA9IHBzbmFtZXM7CisgICAgfQorCisgICAgdDFfYnVpbGRlcl9pbml0KCAmZGVjb2Rlci0+YnVpbGRlciwgZmFjZSwgc2l6ZSwgc2xvdCwgaGludGluZyApOworCisgICAgLyogZGVjb2Rlci0+YnVpbGRjaGFyIGFuZCBkZWNvZGVyLT5sZW5fYnVpbGRjaGFyIGhhdmUgdG8gYmUgICovCisgICAgLyogaW5pdGlhbGl6ZWQgYnkgdGhlIGNhbGxlciBzaW5jZSB3ZSBjYW5ub3Qga25vdyB0aGUgbGVuZ3RoICovCisgICAgLyogb2YgdGhlIEJ1aWxkQ2hhckFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICBkZWNvZGVyLT5udW1fZ2x5cGhzICAgICA9IChGVF9VSW50KWZhY2UtPm51bV9nbHlwaHM7CisgICAgZGVjb2Rlci0+Z2x5cGhfbmFtZXMgICAgPSBnbHlwaF9uYW1lczsKKyAgICBkZWNvZGVyLT5oaW50X21vZGUgICAgICA9IGhpbnRfbW9kZTsKKyAgICBkZWNvZGVyLT5ibGVuZCAgICAgICAgICA9IGJsZW5kOworICAgIGRlY29kZXItPnBhcnNlX2NhbGxiYWNrID0gcGFyc2VfY2FsbGJhY2s7CisKKyAgICBkZWNvZGVyLT5mdW5jcyAgICAgICAgICA9IHQxX2RlY29kZXJfZnVuY3M7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKiBmaW5hbGl6ZSBUMSBkZWNvZGVyICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHQxX2RlY29kZXJfZG9uZSggVDFfRGVjb2RlciAgZGVjb2RlciApCisgIHsKKyAgICB0MV9idWlsZGVyX2RvbmUoICZkZWNvZGVyLT5idWlsZGVyICk7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvdDFkZWNvZGUuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNhdXgvdDFkZWNvZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2JkOTlmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2F1eC90MWRlY29kZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHQxZGVjb2RlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBQb3N0U2NyaXB0IFR5cGUgMSBkZWNvZGluZyByb3V0aW5lcyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMC0yMDAxLCAyMDAyLCAyMDAzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1QxREVDT0RFX0hfXworI2RlZmluZSBfX1QxREVDT0RFX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfQ0FMTEJBQ0tfVEFCTEUKKyAgY29uc3QgVDFfRGVjb2Rlcl9GdW5jc1JlYyAgdDFfZGVjb2Rlcl9mdW5jczsKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHQxX2RlY29kZXJfcGFyc2VfZ2x5cGgoIFQxX0RlY29kZXIgIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGdseXBoX2luZGV4ICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncyggVDFfRGVjb2RlciAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgbGVuICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdDFfZGVjb2Rlcl9pbml0KCBUMV9EZWNvZGVyICAgICAgICAgICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgRlRfU2l6ZSAgICAgICAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgICAgICBzbG90LAorICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqKiAgICAgICAgICAgIGdseXBoX25hbWVzLAorICAgICAgICAgICAgICAgICAgIFBTX0JsZW5kICAgICAgICAgICAgIGJsZW5kLAorICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICAgICAgIGhpbnRpbmcsCisgICAgICAgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgICAgICAgaGludF9tb2RlLAorICAgICAgICAgICAgICAgICAgIFQxX0RlY29kZXJfQ2FsbGJhY2sgIHBhcnNlX2dseXBoICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICB0MV9kZWNvZGVyX2RvbmUoIFQxX0RlY29kZXIgIGRlY29kZXIgKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1QxREVDT0RFX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9KYW1maWxlIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9KYW1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3OWYxYjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL0phbWZpbGUKQEAgLTAsMCArMSwyOSBAQAorIyBGcmVlVHlwZSAyIHNyYy9wc2hpbnRlciBKYW1maWxlCisjCisjIENvcHlyaWdodCAyMDAxLCAyMDAzIGJ5CisjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKKyMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQorIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorIyBmdWxseS4KKworU3ViRGlyICBGVDJfVE9QICQoRlQyX1NSQ19ESVIpIHBzaGludGVyIDsKKworeworICBsb2NhbCAgX3NvdXJjZXMgOworCisgIGlmICQoRlQyX01VTFRJKQorICB7CisgICAgX3NvdXJjZXMgPSBwc2hyZWMgcHNoZ2xvYiBwc2hhbGdvIHBzaG1vZCBwc2hwaWMgOworICB9CisgIGVsc2UKKyAgeworICAgIF9zb3VyY2VzID0gcHNoaW50ZXIgOworICB9CisKKyAgTGlicmFyeSAgJChGVDJfTElCKSA6ICQoX3NvdXJjZXMpLmMgOworfQorCisjIGVuZCBvZiBzcmMvcHNoaW50ZXIgSmFtZmlsZQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9meGZ0X3BzaGludGVyLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL2Z4ZnRfcHNoaW50ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2NmMzA4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9meGZ0X3BzaGludGVyLmMKQEAgLTAsMCArMSwzMyBAQAorI2lmICFkZWZpbmVkKF9GWEZUX1ZFUlNJT05fKSB8fCBfRlhGVF9WRVJTSU9OXyA9PSAyNTAxCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2hpbnRlci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgUG9zdFNjcmlwdCBIaW50aW5nIG1vZHVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEsIDIwMDMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNkZWZpbmUgRlRfTUFLRV9PUFRJT05fU0lOR0xFX09CSkVDVAorI2RlZmluZSBGVDJfQlVJTERfTElCUkFSWQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgInBzaHBpYy5jIgorI2luY2x1ZGUgInBzaHJlYy5jIgorI2luY2x1ZGUgInBzaGdsb2IuYyIKKyNpbmNsdWRlICJwc2hhbGdvLmMiCisjaW5jbHVkZSAicHNobW9kLmMiCisKKworLyogRU5EICovCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9tb2R1bGUubWsgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL21vZHVsZS5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDI0ZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9tb2R1bGUubWsKQEAgLTAsMCArMSwyMyBAQAorIworIyBGcmVlVHlwZSAyIFBTSGludGVyIG1vZHVsZSBkZWZpbml0aW9uCisjCisKKworIyBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDA2IGJ5CisjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKKyMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQorIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorIyBmdWxseS4KKworCitGVE1PRFVMRV9IX0NPTU1BTkRTICs9IFBTSElOVEVSX01PRFVMRQorCitkZWZpbmUgUFNISU5URVJfTU9EVUxFCiskKE9QRU5fRFJJVkVSKSBGVF9Nb2R1bGVfQ2xhc3MsIHBzaGludGVyX21vZHVsZV9jbGFzcyAkKENMT1NFX0RSSVZFUikKKyQoRUNIT19EUklWRVIpcHNoaW50ZXIgICQoRUNIT19EUklWRVJfREVTQylQb3N0c2NyaXB0IGhpbnRlciBtb2R1bGUkKEVDSE9fRFJJVkVSX0RPTkUpCitlbmRlZgorCisjIEVPRgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hhbGdvLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL3BzaGFsZ28uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmYyY2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hhbGdvLmMKQEAgLTAsMCArMSwyMzA1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2hhbGdvLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgUG9zdFNjcmlwdCBoaW50aW5nIGFsZ29yaXRobSAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEtMjAxMCwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkICAgICAgICAqLworLyogIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oIgorI2luY2x1ZGUgInBzaGFsZ28uaCIKKworI2luY2x1ZGUgInBzaG50ZXJyLmgiCisKKworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9wc2hhbGdvMgorCisKKyNpZmRlZiBERUJVR19ISU5URVIKKyAgUFNIX0hpbnRfVGFibGUgIHBzX2RlYnVnX2hpbnRfdGFibGUgPSAwOworICBQU0hfSGludEZ1bmMgICAgcHNfZGVidWdfaGludF9mdW5jICA9IDA7CisgIFBTSF9HbHlwaCAgICAgICBwc19kZWJ1Z19nbHlwaCAgICAgID0gMDsKKyNlbmRpZgorCisKKyNkZWZpbmUgIENPTVBVVEVfSU5GTEVYUyAgLyogY29tcHV0ZSBpbmZsZWN0aW9uIHBvaW50cyB0byBvcHRpbWl6ZSBgUycgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW5kIHNpbWlsYXIgZ2x5cGhzICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgIFNUUk9OR0VSICAgICAgICAgLyogc2xpZ2h0bHkgaW5jcmVhc2UgdGhlIGNvbnRyYXN0IG9mIHNtb290aCAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaGludGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgIEJBU0lDIEhJTlRTIFJFQ09SRElOR1MgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qIHJldHVybiB0cnVlIGlmIHR3byBzdGVtIGhpbnRzIG92ZXJsYXAgKi8KKyAgc3RhdGljIEZUX0ludAorICBwc2hfaGludF9vdmVybGFwKCBQU0hfSGludCAgaGludDEsCisgICAgICAgICAgICAgICAgICAgIFBTSF9IaW50ICBoaW50MiApCisgIHsKKyAgICByZXR1cm4gaGludDEtPm9yZ19wb3MgKyBoaW50MS0+b3JnX2xlbiA+PSBoaW50Mi0+b3JnX3BvcyAmJgorICAgICAgICAgICBoaW50Mi0+b3JnX3BvcyArIGhpbnQyLT5vcmdfbGVuID49IGhpbnQxLT5vcmdfcG9zOworICB9CisKKworICAvKiBkZXN0cm95IGhpbnRzIHRhYmxlICovCisgIHN0YXRpYyB2b2lkCisgIHBzaF9oaW50X3RhYmxlX2RvbmUoIFBTSF9IaW50X1RhYmxlICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICAgIG1lbW9yeSApCisgIHsKKyAgICBGVF9GUkVFKCB0YWJsZS0+em9uZXMgKTsKKyAgICB0YWJsZS0+bnVtX3pvbmVzID0gMDsKKyAgICB0YWJsZS0+em9uZSAgICAgID0gMDsKKworICAgIEZUX0ZSRUUoIHRhYmxlLT5zb3J0ICk7CisgICAgRlRfRlJFRSggdGFibGUtPmhpbnRzICk7CisgICAgdGFibGUtPm51bV9oaW50cyAgID0gMDsKKyAgICB0YWJsZS0+bWF4X2hpbnRzICAgPSAwOworICAgIHRhYmxlLT5zb3J0X2dsb2JhbCA9IDA7CisgIH0KKworCisgIC8qIGRlYWN0aXZhdGUgYWxsIGhpbnRzIGluIGEgdGFibGUgKi8KKyAgc3RhdGljIHZvaWQKKyAgcHNoX2hpbnRfdGFibGVfZGVhY3RpdmF0ZSggUFNIX0hpbnRfVGFibGUgIHRhYmxlICkKKyAgeworICAgIEZUX1VJbnQgICBjb3VudCA9IHRhYmxlLT5tYXhfaGludHM7CisgICAgUFNIX0hpbnQgIGhpbnQgID0gdGFibGUtPmhpbnRzOworCisKKyAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSwgaGludCsrICkKKyAgICB7CisgICAgICBwc2hfaGludF9kZWFjdGl2YXRlKCBoaW50ICk7CisgICAgICBoaW50LT5vcmRlciA9IC0xOworICAgIH0KKyAgfQorCisKKyAgLyogaW50ZXJuYWwgZnVuY3Rpb24gdG8gcmVjb3JkIGEgbmV3IGhpbnQgKi8KKyAgc3RhdGljIHZvaWQKKyAgcHNoX2hpbnRfdGFibGVfcmVjb3JkKCBQU0hfSGludF9UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGlkeCApCisgIHsKKyAgICBQU0hfSGludCAgaGludCA9IHRhYmxlLT5oaW50cyArIGlkeDsKKworCisgICAgaWYgKCBpZHggPj0gdGFibGUtPm1heF9oaW50cyApCisgICAgeworICAgICAgRlRfVFJBQ0UwKCggInBzaF9oaW50X3RhYmxlX3JlY29yZDogaW52YWxpZCBoaW50IGluZGV4ICVkXG4iLCBpZHggKSk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogaWdub3JlIGFjdGl2ZSBoaW50cyAqLworICAgIGlmICggcHNoX2hpbnRfaXNfYWN0aXZlKCBoaW50ICkgKQorICAgICAgcmV0dXJuOworCisgICAgcHNoX2hpbnRfYWN0aXZhdGUoIGhpbnQgKTsKKworICAgIC8qIG5vdyBzY2FuIHRoZSBjdXJyZW50IGFjdGl2ZSBoaW50IHNldCB0byBjaGVjayAqLworICAgIC8qIHdoZXRoZXIgYGhpbnQnIG92ZXJsYXBzIHdpdGggYW5vdGhlciBoaW50ICAgICAqLworICAgIHsKKyAgICAgIFBTSF9IaW50KiAgc29ydGVkID0gdGFibGUtPnNvcnRfZ2xvYmFsOworICAgICAgRlRfVUludCAgICBjb3VudCAgPSB0YWJsZS0+bnVtX2hpbnRzOworICAgICAgUFNIX0hpbnQgICBoaW50MjsKKworCisgICAgICBoaW50LT5wYXJlbnQgPSAwOworICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0sIHNvcnRlZCsrICkKKyAgICAgIHsKKyAgICAgICAgaGludDIgPSBzb3J0ZWRbMF07CisKKyAgICAgICAgaWYgKCBwc2hfaGludF9vdmVybGFwKCBoaW50LCBoaW50MiApICkKKyAgICAgICAgeworICAgICAgICAgIGhpbnQtPnBhcmVudCA9IGhpbnQyOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCB0YWJsZS0+bnVtX2hpbnRzIDwgdGFibGUtPm1heF9oaW50cyApCisgICAgICB0YWJsZS0+c29ydF9nbG9iYWxbdGFibGUtPm51bV9oaW50cysrXSA9IGhpbnQ7CisgICAgZWxzZQorICAgICAgRlRfVFJBQ0UwKCggInBzaF9oaW50X3RhYmxlX3JlY29yZDogdG9vIG1hbnkgc29ydGVkIGhpbnRzISAgQlVHIVxuIiApKTsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgcHNoX2hpbnRfdGFibGVfcmVjb3JkX21hc2soIFBTSF9IaW50X1RhYmxlICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTX01hc2sgICAgICAgICBoaW50X21hc2sgKQorICB7CisgICAgRlRfSW50ICAgIG1hc2sgPSAwLCB2YWwgPSAwOworICAgIEZUX0J5dGUqICBjdXJzb3IgPSBoaW50X21hc2stPmJ5dGVzOworICAgIEZUX1VJbnQgICBpZHgsIGxpbWl0OworCisKKyAgICBsaW1pdCA9IGhpbnRfbWFzay0+bnVtX2JpdHM7CisKKyAgICBmb3IgKCBpZHggPSAwOyBpZHggPCBsaW1pdDsgaWR4KysgKQorICAgIHsKKyAgICAgIGlmICggbWFzayA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgdmFsICA9ICpjdXJzb3IrKzsKKyAgICAgICAgbWFzayA9IDB4ODA7CisgICAgICB9CisKKyAgICAgIGlmICggdmFsICYgbWFzayApCisgICAgICAgIHBzaF9oaW50X3RhYmxlX3JlY29yZCggdGFibGUsIGlkeCApOworCisgICAgICBtYXNrID4+PSAxOworICAgIH0KKyAgfQorCisKKyAgLyogY3JlYXRlIGhpbnRzIHRhYmxlICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc2hfaGludF90YWJsZV9pbml0KCBQU0hfSGludF9UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgIFBTX0hpbnRfVGFibGUgICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgUFNfTWFza19UYWJsZSAgIGhpbnRfbWFza3MsCisgICAgICAgICAgICAgICAgICAgICAgIFBTX01hc2tfVGFibGUgICBjb3VudGVyX21hc2tzLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICAgbWVtb3J5ICkKKyAgeworICAgIEZUX1VJbnQgICBjb3VudDsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKyAgICBGVF9VTlVTRUQoIGNvdW50ZXJfbWFza3MgKTsKKworCisgICAgY291bnQgPSBoaW50cy0+bnVtX2hpbnRzOworCisgICAgLyogYWxsb2NhdGUgb3VyIHRhYmxlcyAqLworICAgIGlmICggRlRfTkVXX0FSUkFZKCB0YWJsZS0+c29ydCwgIDIgKiBjb3VudCAgICAgKSB8fAorICAgICAgICAgRlRfTkVXX0FSUkFZKCB0YWJsZS0+aGludHMsICAgICBjb3VudCAgICAgKSB8fAorICAgICAgICAgRlRfTkVXX0FSUkFZKCB0YWJsZS0+em9uZXMsIDIgKiBjb3VudCArIDEgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICB0YWJsZS0+bWF4X2hpbnRzICAgPSBjb3VudDsKKyAgICB0YWJsZS0+c29ydF9nbG9iYWwgPSB0YWJsZS0+c29ydCArIGNvdW50OworICAgIHRhYmxlLT5udW1faGludHMgICA9IDA7CisgICAgdGFibGUtPm51bV96b25lcyAgID0gMDsKKyAgICB0YWJsZS0+em9uZSAgICAgICAgPSAwOworCisgICAgLyogaW5pdGlhbGl6ZSB0aGUgYHRhYmxlLT5oaW50cycgYXJyYXkgKi8KKyAgICB7CisgICAgICBQU0hfSGludCAgd3JpdGUgPSB0YWJsZS0+aGludHM7CisgICAgICBQU19IaW50ICAgcmVhZCAgPSBoaW50cy0+aGludHM7CisKKworICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0sIHdyaXRlKyssIHJlYWQrKyApCisgICAgICB7CisgICAgICAgIHdyaXRlLT5vcmdfcG9zID0gcmVhZC0+cG9zOworICAgICAgICB3cml0ZS0+b3JnX2xlbiA9IHJlYWQtPmxlbjsKKyAgICAgICAgd3JpdGUtPmZsYWdzICAgPSByZWFkLT5mbGFnczsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiB3ZSBub3cgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGluaXRpYWwgYHBhcmVudCcgc3RlbXM7IGZpcnN0ICAqLworICAgIC8qIGFjdGl2YXRlIHRoZSBoaW50cyB0aGF0IGFyZSBnaXZlbiBieSB0aGUgaW5pdGlhbCBoaW50IG1hc2tzICovCisgICAgaWYgKCBoaW50X21hc2tzICkKKyAgICB7CisgICAgICBQU19NYXNrICBtYXNrID0gaGludF9tYXNrcy0+bWFza3M7CisKKworICAgICAgY291bnQgICAgICAgICAgICAgPSBoaW50X21hc2tzLT5udW1fbWFza3M7CisgICAgICB0YWJsZS0+aGludF9tYXNrcyA9IGhpbnRfbWFza3M7CisKKyAgICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCBtYXNrKysgKQorICAgICAgICBwc2hfaGludF90YWJsZV9yZWNvcmRfbWFzayggdGFibGUsIG1hc2sgKTsKKyAgICB9CisKKyAgICAvKiBmaW5hbGx5LCBkbyBhIGxpbmVhciBwYXJzZSBpbiBjYXNlIHNvbWUgaGludHMgd2VyZSBsZWZ0IGFsb25lICovCisgICAgaWYgKCB0YWJsZS0+bnVtX2hpbnRzICE9IHRhYmxlLT5tYXhfaGludHMgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgIGlkeDsKKworCisgICAgICBGVF9UUkFDRTAoKCAicHNoX2hpbnRfdGFibGVfaW5pdDogbWlzc2luZy9pbmNvcnJlY3QgaGludCBtYXNrc1xuIiApKTsKKworICAgICAgY291bnQgPSB0YWJsZS0+bWF4X2hpbnRzOworICAgICAgZm9yICggaWR4ID0gMDsgaWR4IDwgY291bnQ7IGlkeCsrICkKKyAgICAgICAgcHNoX2hpbnRfdGFibGVfcmVjb3JkKCB0YWJsZSwgaWR4ICk7CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBwc2hfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKCBQU0hfSGludF9UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTX01hc2sgICAgICAgICBoaW50X21hc2sgKQorICB7CisgICAgRlRfSW50ICAgIG1hc2sgPSAwLCB2YWwgPSAwOworICAgIEZUX0J5dGUqICBjdXJzb3IgPSBoaW50X21hc2stPmJ5dGVzOworICAgIEZUX1VJbnQgICBpZHgsIGxpbWl0LCBjb3VudDsKKworCisgICAgbGltaXQgPSBoaW50X21hc2stPm51bV9iaXRzOworICAgIGNvdW50ID0gMDsKKworICAgIHBzaF9oaW50X3RhYmxlX2RlYWN0aXZhdGUoIHRhYmxlICk7CisKKyAgICBmb3IgKCBpZHggPSAwOyBpZHggPCBsaW1pdDsgaWR4KysgKQorICAgIHsKKyAgICAgIGlmICggbWFzayA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgdmFsICA9ICpjdXJzb3IrKzsKKyAgICAgICAgbWFzayA9IDB4ODA7CisgICAgICB9CisKKyAgICAgIGlmICggdmFsICYgbWFzayApCisgICAgICB7CisgICAgICAgIFBTSF9IaW50ICBoaW50ID0gJnRhYmxlLT5oaW50c1tpZHhdOworCisKKyAgICAgICAgaWYgKCAhcHNoX2hpbnRfaXNfYWN0aXZlKCBoaW50ICkgKQorICAgICAgICB7CisgICAgICAgICAgRlRfVUludCAgICAgY291bnQyOworCisjaWYgMAorICAgICAgICAgIFBTSF9IaW50KiAgc29ydCA9IHRhYmxlLT5zb3J0OworICAgICAgICAgIFBTSF9IaW50ICAgaGludDI7CisKKworICAgICAgICAgIGZvciAoIGNvdW50MiA9IGNvdW50OyBjb3VudDIgPiAwOyBjb3VudDItLSwgc29ydCsrICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBoaW50MiA9IHNvcnRbMF07CisgICAgICAgICAgICBpZiAoIHBzaF9oaW50X292ZXJsYXAoIGhpbnQsIGhpbnQyICkgKQorICAgICAgICAgICAgICBGVF9UUkFDRTAoKCAicHNoX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzazoiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgZm91bmQgb3ZlcmxhcHBpbmcgaGludHNcbiIgKSkKKyAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgIGNvdW50MiA9IDA7CisjZW5kaWYKKworICAgICAgICAgIGlmICggY291bnQyID09IDAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHBzaF9oaW50X2FjdGl2YXRlKCBoaW50ICk7CisgICAgICAgICAgICBpZiAoIGNvdW50IDwgdGFibGUtPm1heF9oaW50cyApCisgICAgICAgICAgICAgIHRhYmxlLT5zb3J0W2NvdW50KytdID0gaGludDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgRlRfVFJBQ0UwKCggInBzaF9oaW50X3RhYmxlYWN0aXZhdGVfbWFzazoiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgdG9vIG1hbnkgYWN0aXZlIGhpbnRzXG4iICkpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBtYXNrID4+PSAxOworICAgIH0KKyAgICB0YWJsZS0+bnVtX2hpbnRzID0gY291bnQ7CisKKyAgICAvKiBub3csIHNvcnQgdGhlIGhpbnRzOyB0aGV5IGFyZSBndWFyYW50ZWVkIHRvIG5vdCBvdmVybGFwICovCisgICAgLyogc28gd2UgY2FuIGNvbXBhcmUgdGhlaXIgIm9yZ19wb3MiIGZpZWxkIGRpcmVjdGx5ICAgICAgICAqLworICAgIHsKKyAgICAgIEZUX0ludCAgICAgaTEsIGkyOworICAgICAgUFNIX0hpbnQgICBoaW50MSwgaGludDI7CisgICAgICBQU0hfSGludCogIHNvcnQgPSB0YWJsZS0+c29ydDsKKworCisgICAgICAvKiBhIHNpbXBsZSBidWJibGUgc29ydCB3aWxsIGRvLCBzaW5jZSBpbiA5OSUgb2YgY2FzZXMsIHRoZSBoaW50cyAqLworICAgICAgLyogd2lsbCBiZSBhbHJlYWR5IHNvcnRlZCAtLSBhbmQgdGhlIHNvcnQgd2lsbCBiZSBsaW5lYXIgICAgICAgICAgKi8KKyAgICAgIGZvciAoIGkxID0gMTsgaTEgPCAoRlRfSW50KWNvdW50OyBpMSsrICkKKyAgICAgIHsKKyAgICAgICAgaGludDEgPSBzb3J0W2kxXTsKKyAgICAgICAgZm9yICggaTIgPSBpMSAtIDE7IGkyID49IDA7IGkyLS0gKQorICAgICAgICB7CisgICAgICAgICAgaGludDIgPSBzb3J0W2kyXTsKKworICAgICAgICAgIGlmICggaGludDItPm9yZ19wb3MgPCBoaW50MS0+b3JnX3BvcyApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIHNvcnRbaTIgKyAxXSA9IGhpbnQyOworICAgICAgICAgIHNvcnRbaTJdICAgICA9IGhpbnQxOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICBISU5UUyBHUklELUZJVFRJTkcgQU5EIE9QVElNSVpBVElPTiAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmIDEKKyAgc3RhdGljIEZUX1BvcworICBwc2hfZGltZW5zaW9uX3F1YW50aXplX2xlbiggUFNIX0RpbWVuc2lvbiAgZGltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgICAgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgICAgZG9fc25hcHBpbmcgKQorICB7CisgICAgaWYgKCBsZW4gPD0gNjQgKQorICAgICAgbGVuID0gNjQ7CisgICAgZWxzZQorICAgIHsKKyAgICAgIEZUX1BvcyAgZGVsdGEgPSBsZW4gLSBkaW0tPnN0ZHcud2lkdGhzWzBdLmN1cjsKKworCisgICAgICBpZiAoIGRlbHRhIDwgMCApCisgICAgICAgIGRlbHRhID0gLWRlbHRhOworCisgICAgICBpZiAoIGRlbHRhIDwgNDAgKQorICAgICAgeworICAgICAgICBsZW4gPSBkaW0tPnN0ZHcud2lkdGhzWzBdLmN1cjsKKyAgICAgICAgaWYgKCBsZW4gPCA0OCApCisgICAgICAgICAgbGVuID0gNDg7CisgICAgICB9CisKKyAgICAgIGlmICggbGVuIDwgMyAqIDY0ICkKKyAgICAgIHsKKyAgICAgICAgZGVsdGEgPSAoIGxlbiAmIDYzICk7CisgICAgICAgIGxlbiAgJj0gLTY0OworCisgICAgICAgIGlmICggZGVsdGEgPCAxMCApCisgICAgICAgICAgbGVuICs9IGRlbHRhOworCisgICAgICAgIGVsc2UgaWYgKCBkZWx0YSA8IDMyICkKKyAgICAgICAgICBsZW4gKz0gMTA7CisKKyAgICAgICAgZWxzZSBpZiAoIGRlbHRhIDwgNTQgKQorICAgICAgICAgIGxlbiArPSA1NDsKKworICAgICAgICBlbHNlCisgICAgICAgICAgbGVuICs9IGRlbHRhOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBsZW4gPSBGVF9QSVhfUk9VTkQoIGxlbiApOworICAgIH0KKworICAgIGlmICggZG9fc25hcHBpbmcgKQorICAgICAgbGVuID0gRlRfUElYX1JPVU5EKCBsZW4gKTsKKworICAgIHJldHVybiAgbGVuOworICB9CisjZW5kaWYgLyogMCAqLworCisKKyNpZmRlZiBERUJVR19ISU5URVIKKworICBzdGF0aWMgdm9pZAorICBwc19zaW1wbGVfc2NhbGUoIFBTSF9IaW50X1RhYmxlICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICAgICAgc2NhbGUsCisgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgICAgIGRlbHRhLAorICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICBkaW1lbnNpb24gKQorICB7CisgICAgRlRfVUludCAgY291bnQ7CisKKworICAgIGZvciAoIGNvdW50ID0gMDsgY291bnQgPCB0YWJsZS0+bWF4X2hpbnRzOyBjb3VudCsrICkKKyAgICB7CisgICAgICBQU0hfSGludCAgaGludCA9IHRhYmxlLT5oaW50cyArIGNvdW50OworCisKKyAgICAgIGhpbnQtPmN1cl9wb3MgPSBGVF9NdWxGaXgoIGhpbnQtPm9yZ19wb3MsIHNjYWxlICkgKyBkZWx0YTsKKyAgICAgIGhpbnQtPmN1cl9sZW4gPSBGVF9NdWxGaXgoIGhpbnQtPm9yZ19sZW4sIHNjYWxlICk7CisKKyAgICAgIGlmICggcHNfZGVidWdfaGludF9mdW5jICkKKyAgICAgICAgcHNfZGVidWdfaGludF9mdW5jKCBoaW50LCBkaW1lbnNpb24gKTsKKyAgICB9CisgIH0KKworI2VuZGlmIC8qIERFQlVHX0hJTlRFUiAqLworCisKKyAgc3RhdGljIEZUX0ZpeGVkCisgIHBzaF9oaW50X3NuYXBfc3RlbV9zaWRlX2RlbHRhKCBGVF9GaXhlZCAgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgIGxlbiApCisgIHsKKyAgICBGVF9GaXhlZCAgZGVsdGExID0gRlRfUElYX1JPVU5EKCBwb3MgKSAtIHBvczsKKyAgICBGVF9GaXhlZCAgZGVsdGEyID0gRlRfUElYX1JPVU5EKCBwb3MgKyBsZW4gKSAtIHBvcyAtIGxlbjsKKworCisgICAgaWYgKCBGVF9BQlMoIGRlbHRhMSApIDw9IEZUX0FCUyggZGVsdGEyICkgKQorICAgICAgcmV0dXJuIGRlbHRhMTsKKyAgICBlbHNlCisgICAgICByZXR1cm4gZGVsdGEyOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBwc2hfaGludF9hbGlnbiggUFNIX0hpbnQgICAgIGhpbnQsCisgICAgICAgICAgICAgICAgICBQU0hfR2xvYmFscyAgZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICBQU0hfR2x5cGggICAgZ2x5cGggKQorICB7CisgICAgUFNIX0RpbWVuc2lvbiAgZGltICAgPSAmZ2xvYmFscy0+ZGltZW5zaW9uW2RpbWVuc2lvbl07CisgICAgRlRfRml4ZWQgICAgICAgc2NhbGUgPSBkaW0tPnNjYWxlX211bHQ7CisgICAgRlRfRml4ZWQgICAgICAgZGVsdGEgPSBkaW0tPnNjYWxlX2RlbHRhOworCisKKyAgICBpZiAoICFwc2hfaGludF9pc19maXR0ZWQoIGhpbnQgKSApCisgICAgeworICAgICAgRlRfUG9zICBwb3MgPSBGVF9NdWxGaXgoIGhpbnQtPm9yZ19wb3MsIHNjYWxlICkgKyBkZWx0YTsKKyAgICAgIEZUX1BvcyAgbGVuID0gRlRfTXVsRml4KCBoaW50LT5vcmdfbGVuLCBzY2FsZSApOworCisgICAgICBGVF9JbnQgICAgICAgICAgICBkb19zbmFwcGluZzsKKyAgICAgIEZUX1BvcyAgICAgICAgICAgIGZpdF9sZW47CisgICAgICBQU0hfQWxpZ25tZW50UmVjICBhbGlnbjsKKworCisgICAgICAvKiBpZ25vcmUgc3RlbSBhbGlnbm1lbnRzIHdoZW4gcmVxdWVzdGVkIHRocm91Z2ggdGhlIGhpbnQgZmxhZ3MgKi8KKyAgICAgIGlmICggKCBkaW1lbnNpb24gPT0gMCAmJiAhZ2x5cGgtPmRvX2hvcnpfaGludHMgKSB8fAorICAgICAgICAgICAoIGRpbWVuc2lvbiA9PSAxICYmICFnbHlwaC0+ZG9fdmVydF9oaW50cyApICkKKyAgICAgIHsKKyAgICAgICAgaGludC0+Y3VyX3BvcyA9IHBvczsKKyAgICAgICAgaGludC0+Y3VyX2xlbiA9IGxlbjsKKworICAgICAgICBwc2hfaGludF9zZXRfZml0dGVkKCBoaW50ICk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgLyogcGVyZm9ybSBzdGVtIHNuYXBwaW5nIHdoZW4gcmVxdWVzdGVkIC0gdGhpcyBpcyBuZWNlc3NhcnkKKyAgICAgICAqIGZvciBtb25vY2hyb21lIGFuZCBMQ0QgaGludGluZyBtb2RlcyBvbmx5CisgICAgICAgKi8KKyAgICAgIGRvX3NuYXBwaW5nID0gKCBkaW1lbnNpb24gPT0gMCAmJiBnbHlwaC0+ZG9faG9yel9zbmFwcGluZyApIHx8CisgICAgICAgICAgICAgICAgICAgICggZGltZW5zaW9uID09IDEgJiYgZ2x5cGgtPmRvX3ZlcnRfc25hcHBpbmcgKTsKKworICAgICAgaGludC0+Y3VyX2xlbiA9IGZpdF9sZW4gPSBsZW47CisKKyAgICAgIC8qIGNoZWNrIGJsdWUgem9uZXMgZm9yIGhvcml6b250YWwgc3RlbXMgKi8KKyAgICAgIGFsaWduLmFsaWduICAgICA9IFBTSF9CTFVFX0FMSUdOX05PTkU7CisgICAgICBhbGlnbi5hbGlnbl9ib3QgPSBhbGlnbi5hbGlnbl90b3AgPSAwOworCisgICAgICBpZiAoIGRpbWVuc2lvbiA9PSAxICkKKyAgICAgICAgcHNoX2JsdWVzX3NuYXBfc3RlbSggJmdsb2JhbHMtPmJsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50LT5vcmdfcG9zICsgaGludC0+b3JnX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludC0+b3JnX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFsaWduICk7CisKKyAgICAgIHN3aXRjaCAoIGFsaWduLmFsaWduICkKKyAgICAgIHsKKyAgICAgIGNhc2UgUFNIX0JMVUVfQUxJR05fVE9QOgorICAgICAgICAvKiB0aGUgdG9wIG9mIHRoZSBzdGVtIGlzIGFsaWduZWQgYWdhaW5zdCBhIGJsdWUgem9uZSAqLworICAgICAgICBoaW50LT5jdXJfcG9zID0gYWxpZ24uYWxpZ25fdG9wIC0gZml0X2xlbjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgUFNIX0JMVUVfQUxJR05fQk9UOgorICAgICAgICAvKiB0aGUgYm90dG9tIG9mIHRoZSBzdGVtIGlzIGFsaWduZWQgYWdhaW5zdCBhIGJsdWUgem9uZSAqLworICAgICAgICBoaW50LT5jdXJfcG9zID0gYWxpZ24uYWxpZ25fYm90OworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBQU0hfQkxVRV9BTElHTl9UT1AgfCBQU0hfQkxVRV9BTElHTl9CT1Q6CisgICAgICAgIC8qIGJvdGggZWRnZXMgb2YgdGhlIHN0ZW0gYXJlIGFsaWduZWQgYWdhaW5zdCBibHVlIHpvbmVzICovCisgICAgICAgIGhpbnQtPmN1cl9wb3MgPSBhbGlnbi5hbGlnbl9ib3Q7CisgICAgICAgIGhpbnQtPmN1cl9sZW4gPSBhbGlnbi5hbGlnbl90b3AgLSBhbGlnbi5hbGlnbl9ib3Q7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICB7CisgICAgICAgICAgUFNIX0hpbnQgIHBhcmVudCA9IGhpbnQtPnBhcmVudDsKKworCisgICAgICAgICAgaWYgKCBwYXJlbnQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1BvcyAgcGFyX29yZ19jZW50ZXIsIHBhcl9jdXJfY2VudGVyOworICAgICAgICAgICAgRlRfUG9zICBjdXJfb3JnX2NlbnRlciwgY3VyX2RlbHRhOworCisKKyAgICAgICAgICAgIC8qIGVuc3VyZSB0aGF0IHBhcmVudCBpcyBhbHJlYWR5IGZpdHRlZCAqLworICAgICAgICAgICAgaWYgKCAhcHNoX2hpbnRfaXNfZml0dGVkKCBwYXJlbnQgKSApCisgICAgICAgICAgICAgIHBzaF9oaW50X2FsaWduKCBwYXJlbnQsIGdsb2JhbHMsIGRpbWVuc2lvbiwgZ2x5cGggKTsKKworICAgICAgICAgICAgLyoga2VlcCBvcmlnaW5hbCByZWxhdGlvbiBiZXR3ZWVuIGhpbnRzLCB0aGlzIGlzLCB1c2UgdGhlICovCisgICAgICAgICAgICAvKiBzY2FsZWQgZGlzdGFuY2UgYmV0d2VlbiB0aGUgY2VudGVycyBvZiB0aGUgaGludHMgdG8gICAgKi8KKyAgICAgICAgICAgIC8qIGNvbXB1dGUgdGhlIG5ldyBwb3NpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgcGFyX29yZ19jZW50ZXIgPSBwYXJlbnQtPm9yZ19wb3MgKyAoIHBhcmVudC0+b3JnX2xlbiA+PiAxICk7CisgICAgICAgICAgICBwYXJfY3VyX2NlbnRlciA9IHBhcmVudC0+Y3VyX3BvcyArICggcGFyZW50LT5jdXJfbGVuID4+IDEgKTsKKyAgICAgICAgICAgIGN1cl9vcmdfY2VudGVyID0gaGludC0+b3JnX3BvcyAgICsgKCBoaW50LT5vcmdfbGVuICAgPj4gMSApOworCisgICAgICAgICAgICBjdXJfZGVsdGEgPSBGVF9NdWxGaXgoIGN1cl9vcmdfY2VudGVyIC0gcGFyX29yZ19jZW50ZXIsIHNjYWxlICk7CisgICAgICAgICAgICBwb3MgICAgICAgPSBwYXJfY3VyX2NlbnRlciArIGN1cl9kZWx0YSAtICggbGVuID4+IDEgKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBoaW50LT5jdXJfcG9zID0gcG9zOworICAgICAgICAgIGhpbnQtPmN1cl9sZW4gPSBmaXRfbGVuOworCisgICAgICAgICAgLyogU3RlbSBhZGp1c3RtZW50IHRyaWVzIHRvIHNuYXAgc3RlbSB3aWR0aHMgdG8gc3RhbmRhcmQKKyAgICAgICAgICAgKiBvbmVzLiAgVGhpcyBpcyBpbXBvcnRhbnQgdG8gcHJldmVudCB1bnBsZWFzYW50IHJvdW5kaW5nCisgICAgICAgICAgICogYXJ0ZWZhY3RzLgorICAgICAgICAgICAqLworICAgICAgICAgIGlmICggZ2x5cGgtPmRvX3N0ZW1fYWRqdXN0ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGxlbiA8PSA2NCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIC8qIHRoZSBzdGVtIGlzIGxlc3MgdGhhbiBvbmUgcGl4ZWw7IHdlIHdpbGwgY2VudGVyIGl0CisgICAgICAgICAgICAgICAqIGFyb3VuZCB0aGUgbmVhcmVzdCBwaXhlbCBjZW50ZXIKKyAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgIGlmICggbGVuID49IDMyICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UgYWxzbyB3aWRlbiB0aGUgc3RlbQorICAgICAgICAgICAgICAgICAqIGFuZCBhbGlnbiBpdCB0byB0aGUgcGl4ZWwgZ3JpZC4KKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqICAgc3RlbV9jZW50ZXIgICAgICAgICAgPSBwb3MgKyAobGVuLzIpCisgICAgICAgICAgICAgICAgICogICBuZWFyZXN0X3BpeGVsX2NlbnRlciA9IEZUX1JPVU5EKHN0ZW1fY2VudGVyLTMyKSszMgorICAgICAgICAgICAgICAgICAqICAgbmV3X3BvcyAgICAgICAgICAgICAgPSBuZWFyZXN0X3BpeGVsX2NlbnRlci0zMgorICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgPSBGVF9ST1VORChzdGVtX2NlbnRlci0zMikKKyAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgID0gRlRfRkxPT1Ioc3RlbV9jZW50ZXItMzIrMzIpCisgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICA9IEZUX0ZMT09SKHN0ZW1fY2VudGVyKQorICAgICAgICAgICAgICAgICAqICAgbmV3X2xlbiAgICAgICAgICAgICAgPSA2NAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHBvcyA9IEZUX1BJWF9GTE9PUiggcG9zICsgKCBsZW4gPj4gMSApICk7CisgICAgICAgICAgICAgICAgbGVuID0gNjQ7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSBpZiAoIGxlbiA+IDAgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogVGhpcyBpcyBhIHZlcnkgc21hbGwgc3RlbTsgd2Ugc2ltcGx5IGFsaWduIGl0IHRvIHRoZQorICAgICAgICAgICAgICAgICAqIHBpeGVsIGdyaWQsIHRyeWluZyB0byBmaW5kIHRoZSBtaW5pbXVtIGRpc3BsYWNlbWVudC4KKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqIGxlZnQgICAgICAgICAgICAgICA9IHBvcworICAgICAgICAgICAgICAgICAqIHJpZ2h0ICAgICAgICAgICAgICA9IHBvcyArIGxlbgorICAgICAgICAgICAgICAgICAqIGxlZnRfbmVhcmVzdF9lZGdlICA9IFJPVU5EKHBvcykKKyAgICAgICAgICAgICAgICAgKiByaWdodF9uZWFyZXN0X2VkZ2UgPSBST1VORChyaWdodCkKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqIGlmICggQUJTKGxlZnRfbmVhcmVzdF9lZGdlIC0gbGVmdCkgPD0KKyAgICAgICAgICAgICAgICAgKiAgICAgIEFCUyhyaWdodF9uZWFyZXN0X2VkZ2UgLSByaWdodCkgKQorICAgICAgICAgICAgICAgICAqICAgIG5ld19wb3MgPSBsZWZ0CisgICAgICAgICAgICAgICAgICogZWxzZQorICAgICAgICAgICAgICAgICAqICAgIG5ld19wb3MgPSByaWdodAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIEZUX1BvcyAgbGVmdF9uZWFyZXN0ICA9IEZUX1BJWF9ST1VORCggcG9zICk7CisgICAgICAgICAgICAgICAgRlRfUG9zICByaWdodF9uZWFyZXN0ID0gRlRfUElYX1JPVU5EKCBwb3MgKyBsZW4gKTsKKyAgICAgICAgICAgICAgICBGVF9Qb3MgIGxlZnRfZGlzcCAgICAgPSBsZWZ0X25lYXJlc3QgLSBwb3M7CisgICAgICAgICAgICAgICAgRlRfUG9zICByaWdodF9kaXNwICAgID0gcmlnaHRfbmVhcmVzdCAtICggcG9zICsgbGVuICk7CisKKworICAgICAgICAgICAgICAgIGlmICggbGVmdF9kaXNwIDwgMCApCisgICAgICAgICAgICAgICAgICBsZWZ0X2Rpc3AgPSAtbGVmdF9kaXNwOworICAgICAgICAgICAgICAgIGlmICggcmlnaHRfZGlzcCA8IDAgKQorICAgICAgICAgICAgICAgICAgcmlnaHRfZGlzcCA9IC1yaWdodF9kaXNwOworICAgICAgICAgICAgICAgIGlmICggbGVmdF9kaXNwIDw9IHJpZ2h0X2Rpc3AgKQorICAgICAgICAgICAgICAgICAgcG9zID0gbGVmdF9uZWFyZXN0OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgIHBvcyA9IHJpZ2h0X25lYXJlc3Q7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogdGhpcyBpcyBhIGdob3N0IHN0ZW07IHdlIHNpbXBseSByb3VuZCBpdCAqLworICAgICAgICAgICAgICAgIHBvcyA9IEZUX1BJWF9ST1VORCggcG9zICk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbGVuID0gcHNoX2RpbWVuc2lvbl9xdWFudGl6ZV9sZW4oIGRpbSwgbGVuLCAwICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgLyogbm93IHRoYXQgd2UgaGF2ZSBhIGdvb2QgaGludGVkIHN0ZW0gd2lkdGgsIHRyeSB0byBwb3NpdGlvbiAqLworICAgICAgICAgIC8qIHRoZSBzdGVtIGFsb25nIGEgcGl4ZWwgZ3JpZCBpbnRlZ2VyIGNvb3JkaW5hdGUgICAgICAgICAgICAgKi8KKyAgICAgICAgICBoaW50LT5jdXJfcG9zID0gcG9zICsgcHNoX2hpbnRfc25hcF9zdGVtX3NpZGVfZGVsdGEoIHBvcywgbGVuICk7CisgICAgICAgICAgaGludC0+Y3VyX2xlbiA9IGxlbjsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAoIGRvX3NuYXBwaW5nICkKKyAgICAgIHsKKyAgICAgICAgcG9zID0gaGludC0+Y3VyX3BvczsKKyAgICAgICAgbGVuID0gaGludC0+Y3VyX2xlbjsKKworICAgICAgICBpZiAoIGxlbiA8IDY0ICkKKyAgICAgICAgICBsZW4gPSA2NDsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGxlbiA9IEZUX1BJWF9ST1VORCggbGVuICk7CisKKyAgICAgICAgc3dpdGNoICggYWxpZ24uYWxpZ24gKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBQU0hfQkxVRV9BTElHTl9UT1A6CisgICAgICAgICAgICBoaW50LT5jdXJfcG9zID0gYWxpZ24uYWxpZ25fdG9wIC0gbGVuOworICAgICAgICAgICAgaGludC0+Y3VyX2xlbiA9IGxlbjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBQU0hfQkxVRV9BTElHTl9CT1Q6CisgICAgICAgICAgICBoaW50LT5jdXJfbGVuID0gbGVuOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIFBTSF9CTFVFX0FMSUdOX0JPVCB8IFBTSF9CTFVFX0FMSUdOX1RPUDoKKyAgICAgICAgICAgIC8qIGRvbid0IHRvdWNoICovCisgICAgICAgICAgICBicmVhazsKKworCisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGhpbnQtPmN1cl9sZW4gPSBsZW47CisgICAgICAgICAgICBpZiAoIGxlbiAmIDY0ICkKKyAgICAgICAgICAgICAgcG9zID0gRlRfUElYX0ZMT09SKCBwb3MgKyAoIGxlbiA+PiAxICkgKSArIDMyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwb3MgPSBGVF9QSVhfUk9VTkQoIHBvcyArICggbGVuID4+IDEgKSApOworCisgICAgICAgICAgICBoaW50LT5jdXJfcG9zID0gcG9zIC0gKCBsZW4gPj4gMSApOworICAgICAgICAgICAgaGludC0+Y3VyX2xlbiA9IGxlbjsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBwc2hfaGludF9zZXRfZml0dGVkKCBoaW50ICk7CisKKyNpZmRlZiBERUJVR19ISU5URVIKKyAgICAgIGlmICggcHNfZGVidWdfaGludF9mdW5jICkKKyAgICAgICAgcHNfZGVidWdfaGludF9mdW5jKCBoaW50LCBkaW1lbnNpb24gKTsKKyNlbmRpZgorICAgIH0KKyAgfQorCisKKyNpZiAwICAvKiBub3QgdXNlZCBmb3Igbm93LCBleHBlcmltZW50YWwgKi8KKworIC8qCisgICogIEEgdmFyaWFudCB0byBwZXJmb3JtICJsaWdodCIgaGludGluZyAoaS5lLiBGVF9SRU5ERVJfTU9ERV9MSUdIVCkKKyAgKiAgb2Ygc3RlbXMKKyAgKi8KKyAgc3RhdGljIHZvaWQKKyAgcHNoX2hpbnRfYWxpZ25fbGlnaHQoIFBTSF9IaW50ICAgICBoaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgUFNIX0dsb2JhbHMgIGdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgZGltZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgUFNIX0dseXBoICAgIGdseXBoICkKKyAgeworICAgIFBTSF9EaW1lbnNpb24gIGRpbSAgID0gJmdsb2JhbHMtPmRpbWVuc2lvbltkaW1lbnNpb25dOworICAgIEZUX0ZpeGVkICAgICAgIHNjYWxlID0gZGltLT5zY2FsZV9tdWx0OworICAgIEZUX0ZpeGVkICAgICAgIGRlbHRhID0gZGltLT5zY2FsZV9kZWx0YTsKKworCisgICAgaWYgKCAhcHNoX2hpbnRfaXNfZml0dGVkKCBoaW50ICkgKQorICAgIHsKKyAgICAgIEZUX1BvcyAgcG9zID0gRlRfTXVsRml4KCBoaW50LT5vcmdfcG9zLCBzY2FsZSApICsgZGVsdGE7CisgICAgICBGVF9Qb3MgIGxlbiA9IEZUX011bEZpeCggaGludC0+b3JnX2xlbiwgc2NhbGUgKTsKKworICAgICAgRlRfUG9zICBmaXRfbGVuOworCisgICAgICBQU0hfQWxpZ25tZW50UmVjICBhbGlnbjsKKworCisgICAgICAvKiBpZ25vcmUgc3RlbSBhbGlnbm1lbnRzIHdoZW4gcmVxdWVzdGVkIHRocm91Z2ggdGhlIGhpbnQgZmxhZ3MgKi8KKyAgICAgIGlmICggKCBkaW1lbnNpb24gPT0gMCAmJiAhZ2x5cGgtPmRvX2hvcnpfaGludHMgKSB8fAorICAgICAgICAgICAoIGRpbWVuc2lvbiA9PSAxICYmICFnbHlwaC0+ZG9fdmVydF9oaW50cyApICkKKyAgICAgIHsKKyAgICAgICAgaGludC0+Y3VyX3BvcyA9IHBvczsKKyAgICAgICAgaGludC0+Y3VyX2xlbiA9IGxlbjsKKworICAgICAgICBwc2hfaGludF9zZXRfZml0dGVkKCBoaW50ICk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgZml0X2xlbiA9IGxlbjsKKworICAgICAgaGludC0+Y3VyX2xlbiA9IGZpdF9sZW47CisKKyAgICAgIC8qIGNoZWNrIGJsdWUgem9uZXMgZm9yIGhvcml6b250YWwgc3RlbXMgKi8KKyAgICAgIGFsaWduLmFsaWduID0gUFNIX0JMVUVfQUxJR05fTk9ORTsKKyAgICAgIGFsaWduLmFsaWduX2JvdCA9IGFsaWduLmFsaWduX3RvcCA9IDA7CisKKyAgICAgIGlmICggZGltZW5zaW9uID09IDEgKQorICAgICAgICBwc2hfYmx1ZXNfc25hcF9zdGVtKCAmZ2xvYmFscy0+Ymx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnQtPm9yZ19wb3MgKyBoaW50LT5vcmdfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50LT5vcmdfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWxpZ24gKTsKKworICAgICAgc3dpdGNoICggYWxpZ24uYWxpZ24gKQorICAgICAgeworICAgICAgY2FzZSBQU0hfQkxVRV9BTElHTl9UT1A6CisgICAgICAgIC8qIHRoZSB0b3Agb2YgdGhlIHN0ZW0gaXMgYWxpZ25lZCBhZ2FpbnN0IGEgYmx1ZSB6b25lICovCisgICAgICAgIGhpbnQtPmN1cl9wb3MgPSBhbGlnbi5hbGlnbl90b3AgLSBmaXRfbGVuOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBQU0hfQkxVRV9BTElHTl9CT1Q6CisgICAgICAgIC8qIHRoZSBib3R0b20gb2YgdGhlIHN0ZW0gaXMgYWxpZ25lZCBhZ2FpbnN0IGEgYmx1ZSB6b25lICovCisgICAgICAgIGhpbnQtPmN1cl9wb3MgPSBhbGlnbi5hbGlnbl9ib3Q7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIFBTSF9CTFVFX0FMSUdOX1RPUCB8IFBTSF9CTFVFX0FMSUdOX0JPVDoKKyAgICAgICAgLyogYm90aCBlZGdlcyBvZiB0aGUgc3RlbSBhcmUgYWxpZ25lZCBhZ2FpbnN0IGJsdWUgem9uZXMgKi8KKyAgICAgICAgaGludC0+Y3VyX3BvcyA9IGFsaWduLmFsaWduX2JvdDsKKyAgICAgICAgaGludC0+Y3VyX2xlbiA9IGFsaWduLmFsaWduX3RvcCAtIGFsaWduLmFsaWduX2JvdDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAgICBQU0hfSGludCAgcGFyZW50ID0gaGludC0+cGFyZW50OworCisKKyAgICAgICAgICBpZiAoIHBhcmVudCApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfUG9zICBwYXJfb3JnX2NlbnRlciwgcGFyX2N1cl9jZW50ZXI7CisgICAgICAgICAgICBGVF9Qb3MgIGN1cl9vcmdfY2VudGVyLCBjdXJfZGVsdGE7CisKKworICAgICAgICAgICAgLyogZW5zdXJlIHRoYXQgcGFyZW50IGlzIGFscmVhZHkgZml0dGVkICovCisgICAgICAgICAgICBpZiAoICFwc2hfaGludF9pc19maXR0ZWQoIHBhcmVudCApICkKKyAgICAgICAgICAgICAgcHNoX2hpbnRfYWxpZ25fbGlnaHQoIHBhcmVudCwgZ2xvYmFscywgZGltZW5zaW9uLCBnbHlwaCApOworCisgICAgICAgICAgICBwYXJfb3JnX2NlbnRlciA9IHBhcmVudC0+b3JnX3BvcyArICggcGFyZW50LT5vcmdfbGVuIC8gMiApOworICAgICAgICAgICAgcGFyX2N1cl9jZW50ZXIgPSBwYXJlbnQtPmN1cl9wb3MgKyAoIHBhcmVudC0+Y3VyX2xlbiAvIDIgKTsKKyAgICAgICAgICAgIGN1cl9vcmdfY2VudGVyID0gaGludC0+b3JnX3BvcyAgICsgKCBoaW50LT5vcmdfbGVuICAgLyAyICk7CisKKyAgICAgICAgICAgIGN1cl9kZWx0YSA9IEZUX011bEZpeCggY3VyX29yZ19jZW50ZXIgLSBwYXJfb3JnX2NlbnRlciwgc2NhbGUgKTsKKyAgICAgICAgICAgIHBvcyAgICAgICA9IHBhcl9jdXJfY2VudGVyICsgY3VyX2RlbHRhIC0gKCBsZW4gPj4gMSApOworICAgICAgICAgIH0KKworICAgICAgICAgIC8qIFN0ZW1zIGxlc3MgdGhhbiBvbmUgcGl4ZWwgd2lkZSBhcmUgZWFzeSAtLSB3ZSB3YW50IHRvCisgICAgICAgICAgICogbWFrZSB0aGVtIGFzIGRhcmsgYXMgcG9zc2libGUsIHNvIHRoZXkgbXVzdCBmYWxsIHdpdGhpbgorICAgICAgICAgICAqIG9uZSBwaXhlbC4gIElmIHRoZSBzdGVtIGlzIHNwbGl0IGJldHdlZW4gdHdvIHBpeGVscworICAgICAgICAgICAqIHRoZW4gc25hcCB0aGUgZWRnZSB0aGF0IGlzIG5lYXJlciB0byB0aGUgcGl4ZWwgYm91bmRhcnkKKyAgICAgICAgICAgKiB0byB0aGUgcGl4ZWwgYm91bmRhcnkuCisgICAgICAgICAgICovCisgICAgICAgICAgaWYgKCBsZW4gPD0gNjQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggKCBwb3MgKyBsZW4gKyA2MyApIC8gNjQgICE9IHBvcyAvIDY0ICsgMSApCisgICAgICAgICAgICAgIHBvcyArPSBwc2hfaGludF9zbmFwX3N0ZW1fc2lkZV9kZWx0YSAoIHBvcywgbGVuICk7CisgICAgICAgICAgfQorCisgICAgICAgICAgLyogUG9zaXRpb24gc3RlbXMgb3RoZXIgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBtaWQtZ3JheXMuCisgICAgICAgICAgICogVGhlcmUgYXJlLCBpbiBnZW5lcmFsLCB0d28gcG9zaXRpb25zIHRoYXQgZG8gdGhpcywKKyAgICAgICAgICAgKiBpbGx1c3RyYXRlZCBhcyBBKSBhbmQgQikgYmVsb3cuCisgICAgICAgICAgICoKKyAgICAgICAgICAgKiAgICsgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICArICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgKgorICAgICAgICAgICAqIEEpICAgICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgICAgICAgICAgKiBCKSAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgICAgICAgICAgKiBDKSAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICAgICAgICAgICoKKyAgICAgICAgICAgKiBQb3NpdGlvbiBBKSAoc3BsaXQgdGhlIGV4Y2VzcyBzdGVtIGVxdWFsbHkpIHNob3VsZCBiZSBiZXR0ZXIKKyAgICAgICAgICAgKiBmb3Igc3RlbXMgb2Ygd2lkdGggTiArIGYgd2hlcmUgZiA8IDAuNS4KKyAgICAgICAgICAgKgorICAgICAgICAgICAqIFBvc2l0aW9uIEIpIChzcGxpdCB0aGUgZGVmaWNpZW5jeSBlcXVhbGx5KSBzaG91bGQgYmUgYmV0dGVyCisgICAgICAgICAgICogZm9yIHN0ZW1zIG9mIHdpZHRoIE4gKyBmIHdoZXJlIGYgPiAwLjUuCisgICAgICAgICAgICoKKyAgICAgICAgICAgKiBJdCB0dXJucyBvdXQgdGhvdWdoIHRoYXQgbWluaW1pemluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGxpdAorICAgICAgICAgICAqIHBpeGVscyBpcyBhbHNvIGltcG9ydGFudCwgc28gcG9zaXRpb24gQyksIHdpdGggb25lIGVkZ2UKKyAgICAgICAgICAgKiBhbGlnbmVkIHdpdGggYSBwaXhlbCBib3VuZGFyeSBpcyBhY3R1YWxseSBwcmVmZXJhYmxlCisgICAgICAgICAgICogdG8gQSkuICBUaGVyZSBhcmUgYWxzbyBtb3JlIHBvc3NpYmlsZSBwb3NpdGlvbnMgZm9yIEMpIHRoYW4KKyAgICAgICAgICAgKiBmb3IgQSkgb3IgQiksIHNvIGl0IGludm9sdmVzIGxlc3MgZGlzdG9ydGlvbiBvZiB0aGUgb3ZlcmFsbAorICAgICAgICAgICAqIGNoYXJhY3RlciBzaGFwZS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBlbHNlIC8qIGxlbiA+IDY0ICovCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfRml4ZWQgIGZyYWNfbGVuID0gbGVuICYgNjM7CisgICAgICAgICAgICBGVF9GaXhlZCAgY2VudGVyID0gcG9zICsgKCBsZW4gPj4gMSApOworICAgICAgICAgICAgRlRfRml4ZWQgIGRlbHRhX2EsIGRlbHRhX2I7CisKKworICAgICAgICAgICAgaWYgKCAoIGxlbiAvIDY0ICkgJiAxICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZGVsdGFfYSA9IEZUX1BJWF9GTE9PUiggY2VudGVyICkgKyAzMiAtIGNlbnRlcjsKKyAgICAgICAgICAgICAgZGVsdGFfYiA9IEZUX1BJWF9ST1VORCggY2VudGVyICkgLSBjZW50ZXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGRlbHRhX2EgPSBGVF9QSVhfUk9VTkQoIGNlbnRlciApIC0gY2VudGVyOworICAgICAgICAgICAgICBkZWx0YV9iID0gRlRfUElYX0ZMT09SKCBjZW50ZXIgKSArIDMyIC0gY2VudGVyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBXZSBjaG9vc2UgYmV0d2VlbiBCKSBhbmQgQykgYWJvdmUgYmFzZWQgb24gdGhlIGFtb3VudAorICAgICAgICAgICAgICogb2YgZnJhY3RpbmFsIHN0ZW0gd2lkdGg7IGZvciBzbWFsbCBhbW91bnRzLCBjaG9vc2UKKyAgICAgICAgICAgICAqIEMpIGFsd2F5cywgZm9yIGxhcmdlIGFtb3VudHMsIEIpIGFsd2F5cywgYW5kIGluYmV0d2VlbiwKKyAgICAgICAgICAgICAqIHBpY2sgd2hpY2hldmVyIG9uZSBpbnZvbHZlcyBsZXNzIHN0ZW0gbW92ZW1lbnQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICggZnJhY19sZW4gPCAzMiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHBvcyArPSBwc2hfaGludF9zbmFwX3N0ZW1fc2lkZV9kZWx0YSAoIHBvcywgbGVuICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICggZnJhY19sZW4gPCA0OCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX0ZpeGVkICBzaWRlX2RlbHRhID0gcHNoX2hpbnRfc25hcF9zdGVtX3NpZGVfZGVsdGEgKCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gKTsKKworICAgICAgICAgICAgICBpZiAoIEZUX0FCUyggc2lkZV9kZWx0YSApIDwgRlRfQUJTKCBkZWx0YV9iICkgKQorICAgICAgICAgICAgICAgIHBvcyArPSBzaWRlX2RlbHRhOworICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcG9zICs9IGRlbHRhX2I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHBvcyArPSBkZWx0YV9iOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIGhpbnQtPmN1cl9wb3MgPSBwb3M7CisgICAgICAgIH0KKyAgICAgIH0gIC8qIHN3aXRjaCAqLworCisgICAgICBwc2hfaGludF9zZXRfZml0dGVkKCBoaW50ICk7CisKKyNpZmRlZiBERUJVR19ISU5URVIKKyAgICAgIGlmICggcHNfZGVidWdfaGludF9mdW5jICkKKyAgICAgICAgcHNfZGVidWdfaGludF9mdW5jKCBoaW50LCBkaW1lbnNpb24gKTsKKyNlbmRpZgorICAgIH0KKyAgfQorCisjZW5kaWYgLyogMCAqLworCisKKyAgc3RhdGljIHZvaWQKKyAgcHNoX2hpbnRfdGFibGVfYWxpZ25faGludHMoIFBTSF9IaW50X1RhYmxlICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTSF9HbG9iYWxzICAgICBnbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTSF9HbHlwaCAgICAgICBnbHlwaCApCisgIHsKKyAgICBQU0hfSGludCAgICAgICBoaW50OworICAgIEZUX1VJbnQgICAgICAgIGNvdW50OworCisjaWZkZWYgREVCVUdfSElOVEVSCisKKyAgICBQU0hfRGltZW5zaW9uICBkaW0gICA9ICZnbG9iYWxzLT5kaW1lbnNpb25bZGltZW5zaW9uXTsKKyAgICBGVF9GaXhlZCAgICAgICBzY2FsZSA9IGRpbS0+c2NhbGVfbXVsdDsKKyAgICBGVF9GaXhlZCAgICAgICBkZWx0YSA9IGRpbS0+c2NhbGVfZGVsdGE7CisKKworICAgIGlmICggcHNfZGVidWdfbm9fdmVydF9oaW50cyAmJiBkaW1lbnNpb24gPT0gMCApCisgICAgeworICAgICAgcHNfc2ltcGxlX3NjYWxlKCB0YWJsZSwgc2NhbGUsIGRlbHRhLCBkaW1lbnNpb24gKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIHBzX2RlYnVnX25vX2hvcnpfaGludHMgJiYgZGltZW5zaW9uID09IDEgKQorICAgIHsKKyAgICAgIHBzX3NpbXBsZV9zY2FsZSggdGFibGUsIHNjYWxlLCBkZWx0YSwgZGltZW5zaW9uICk7CisgICAgICByZXR1cm47CisgICAgfQorCisjZW5kaWYgLyogREVCVUdfSElOVEVSKi8KKworICAgIGhpbnQgID0gdGFibGUtPmhpbnRzOworICAgIGNvdW50ID0gdGFibGUtPm1heF9oaW50czsKKworICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCBoaW50KysgKQorICAgICAgcHNoX2hpbnRfYWxpZ24oIGhpbnQsIGdsb2JhbHMsIGRpbWVuc2lvbiwgZ2x5cGggKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgIFBPSU5UUyBJTlRFUlBPTEFUSU9OIFJPVVRJTkVTICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgUFNIX1pPTkVfTUlOICAtMzIwMDAwMEwKKyNkZWZpbmUgUFNIX1pPTkVfTUFYICArMzIwMDAwMEwKKworI2RlZmluZSB4eERFQlVHX1pPTkVTCisKKworI2lmZGVmIERFQlVHX1pPTkVTCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIgorCisgIHN0YXRpYyB2b2lkCisgIHBzaF9wcmludF96b25lKCBQU0hfWm9uZSAgem9uZSApCisgIHsKKyAgICBwcmludGYoICJ6b25lIFtzY2FsZSxkZWx0YSxtaW4sbWF4XSA9IFslLjNmLCUuM2YsJWQsJWRdXG4iLAorICAgICAgICAgICAgIHpvbmUtPnNjYWxlIC8gNjU1MzYuMCwKKyAgICAgICAgICAgICB6b25lLT5kZWx0YSAvIDY0LjAsCisgICAgICAgICAgICAgem9uZS0+bWluLAorICAgICAgICAgICAgIHpvbmUtPm1heCApOworICB9CisKKyNlbHNlCisKKyNkZWZpbmUgcHNoX3ByaW50X3pvbmUoIHggKSAgZG8geyB9IHdoaWxlICggMCApCisKKyNlbmRpZiAvKiBERUJVR19aT05FUyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICBISU5URVIgR0xZUEggTUFOQUdFTUVOVCAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZiAxCisKKyNkZWZpbmUgIHBzaF9jb3JuZXJfaXNfZmxhdCAgICAgIGZ0X2Nvcm5lcl9pc19mbGF0CisjZGVmaW5lICBwc2hfY29ybmVyX29yaWVudGF0aW9uICBmdF9jb3JuZXJfb3JpZW50YXRpb24KKworI2Vsc2UKKworICBGVF9MT0NBTF9ERUYoIEZUX0ludCApCisgIHBzaF9jb3JuZXJfaXNfZmxhdCggRlRfUG9zICB4X2luLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgeV9pbiwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgIHhfb3V0LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgeV9vdXQgKQorICB7CisgICAgRlRfUG9zICBheCA9IHhfaW47CisgICAgRlRfUG9zICBheSA9IHlfaW47CisKKyAgICBGVF9Qb3MgIGRfaW4sIGRfb3V0LCBkX2Nvcm5lcjsKKworCisgICAgaWYgKCBheCA8IDAgKQorICAgICAgYXggPSAtYXg7CisgICAgaWYgKCBheSA8IDAgKQorICAgICAgYXkgPSAtYXk7CisgICAgZF9pbiA9IGF4ICsgYXk7CisKKyAgICBheCA9IHhfb3V0OworICAgIGlmICggYXggPCAwICkKKyAgICAgIGF4ID0gLWF4OworICAgIGF5ID0geV9vdXQ7CisgICAgaWYgKCBheSA8IDAgKQorICAgICAgYXkgPSAtYXk7CisgICAgZF9vdXQgPSBheCArIGF5OworCisgICAgYXggPSB4X291dCArIHhfaW47CisgICAgaWYgKCBheCA8IDAgKQorICAgICAgYXggPSAtYXg7CisgICAgYXkgPSB5X291dCArIHlfaW47CisgICAgaWYgKCBheSA8IDAgKQorICAgICAgYXkgPSAtYXk7CisgICAgZF9jb3JuZXIgPSBheCArIGF5OworCisgICAgcmV0dXJuICggZF9pbiArIGRfb3V0IC0gZF9jb3JuZXIgKSA8ICggZF9jb3JuZXIgPj4gNCApOworICB9CisKKyAgc3RhdGljIEZUX0ludAorICBwc2hfY29ybmVyX29yaWVudGF0aW9uKCBGVF9Qb3MgIGluX3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgaW5feSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICBvdXRfeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICBvdXRfeSApCisgIHsKKyAgICBGVF9JbnQgIHJlc3VsdDsKKworCisgICAgLyogZGVhbCB3aXRoIHRoZSB0cml2aWFsIGNhc2VzIHF1aWNrbHkgKi8KKyAgICBpZiAoIGluX3kgPT0gMCApCisgICAgeworICAgICAgaWYgKCBpbl94ID49IDAgKQorICAgICAgICByZXN1bHQgPSBvdXRfeTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gLW91dF95OworICAgIH0KKyAgICBlbHNlIGlmICggaW5feCA9PSAwICkKKyAgICB7CisgICAgICBpZiAoIGluX3kgPj0gMCApCisgICAgICAgIHJlc3VsdCA9IC1vdXRfeDsKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gb3V0X3g7CisgICAgfQorICAgIGVsc2UgaWYgKCBvdXRfeSA9PSAwICkKKyAgICB7CisgICAgICBpZiAoIG91dF94ID49IDAgKQorICAgICAgICByZXN1bHQgPSBpbl95OworICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSAtaW5feTsKKyAgICB9CisgICAgZWxzZSBpZiAoIG91dF94ID09IDAgKQorICAgIHsKKyAgICAgIGlmICggb3V0X3kgPj0gMCApCisgICAgICAgIHJlc3VsdCA9IC1pbl94OworICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSAgaW5feDsKKyAgICB9CisgICAgZWxzZSAvKiBnZW5lcmFsIGNhc2UgKi8KKyAgICB7CisgICAgICBsb25nIGxvbmcgIGRlbHRhID0gKGxvbmcgbG9uZylpbl94ICogb3V0X3kgLSAobG9uZyBsb25nKWluX3kgKiBvdXRfeDsKKworICAgICAgaWYgKCBkZWx0YSA9PSAwICkKKyAgICAgICAgcmVzdWx0ID0gMDsKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gMSAtIDIgKiAoIGRlbHRhIDwgMCApOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworI2VuZGlmIC8qICExICovCisKKworI2lmZGVmIENPTVBVVEVfSU5GTEVYUworCisgIC8qIGNvbXB1dGUgYWxsIGluZmxleCBwb2ludHMgaW4gYSBnaXZlbiBnbHlwaCAqLworICBzdGF0aWMgdm9pZAorICBwc2hfZ2x5cGhfY29tcHV0ZV9pbmZsZWN0aW9ucyggUFNIX0dseXBoICBnbHlwaCApCisgIHsKKyAgICBGVF9VSW50ICBuOworCisKKyAgICBmb3IgKCBuID0gMDsgbiA8IGdseXBoLT5udW1fY29udG91cnM7IG4rKyApCisgICAgeworICAgICAgUFNIX1BvaW50ICBmaXJzdCwgc3RhcnQsIGVuZCwgYmVmb3JlLCBhZnRlcjsKKyAgICAgIEZUX1BvcyAgICAgaW5feCwgaW5feSwgb3V0X3gsIG91dF95OworICAgICAgRlRfSW50ICAgICBvcmllbnRfcHJldiwgb3JpZW50X2N1cjsKKyAgICAgIEZUX0ludCAgICAgZmluaXNoZWQgPSAwOworCisKKyAgICAgIC8qIHdlIG5lZWQgYXQgbGVhc3QgNCBwb2ludHMgdG8gY3JlYXRlIGFuIGluZmxlY3Rpb24gcG9pbnQgKi8KKyAgICAgIGlmICggZ2x5cGgtPmNvbnRvdXJzW25dLmNvdW50IDwgNCApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICAvKiBjb21wdXRlIGZpcnN0IHNlZ21lbnQgaW4gY29udG91ciAqLworICAgICAgZmlyc3QgPSBnbHlwaC0+Y29udG91cnNbbl0uc3RhcnQ7CisKKyAgICAgIHN0YXJ0ID0gZW5kID0gZmlyc3Q7CisgICAgICBkbworICAgICAgeworICAgICAgICBlbmQgPSBlbmQtPm5leHQ7CisgICAgICAgIGlmICggZW5kID09IGZpcnN0ICkKKyAgICAgICAgICBnb3RvIFNraXA7CisKKyAgICAgICAgaW5feCA9IGVuZC0+b3JnX3UgLSBzdGFydC0+b3JnX3U7CisgICAgICAgIGluX3kgPSBlbmQtPm9yZ192IC0gc3RhcnQtPm9yZ192OworCisgICAgICB9IHdoaWxlICggaW5feCA9PSAwICYmIGluX3kgPT0gMCApOworCisgICAgICAvKiBleHRlbmQgdGhlIHNlZ21lbnQgc3RhcnQgd2hlbmV2ZXIgcG9zc2libGUgKi8KKyAgICAgIGJlZm9yZSA9IHN0YXJ0OworICAgICAgZG8KKyAgICAgIHsKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgIHN0YXJ0ICA9IGJlZm9yZTsKKyAgICAgICAgICBiZWZvcmUgPSBiZWZvcmUtPnByZXY7CisgICAgICAgICAgaWYgKCBiZWZvcmUgPT0gZmlyc3QgKQorICAgICAgICAgICAgZ290byBTa2lwOworCisgICAgICAgICAgb3V0X3ggPSBzdGFydC0+b3JnX3UgLSBiZWZvcmUtPm9yZ191OworICAgICAgICAgIG91dF95ID0gc3RhcnQtPm9yZ192IC0gYmVmb3JlLT5vcmdfdjsKKworICAgICAgICB9IHdoaWxlICggb3V0X3ggPT0gMCAmJiBvdXRfeSA9PSAwICk7CisKKyAgICAgICAgb3JpZW50X3ByZXYgPSBwc2hfY29ybmVyX29yaWVudGF0aW9uKCBpbl94LCBpbl95LCBvdXRfeCwgb3V0X3kgKTsKKworICAgICAgfSB3aGlsZSAoIG9yaWVudF9wcmV2ID09IDAgKTsKKworICAgICAgZmlyc3QgPSBzdGFydDsKKyAgICAgIGluX3ggID0gb3V0X3g7CisgICAgICBpbl95ICA9IG91dF95OworCisgICAgICAvKiBub3csIHByb2Nlc3MgYWxsIHNlZ21lbnRzIGluIHRoZSBjb250b3VyICovCisgICAgICBkbworICAgICAgeworICAgICAgICAvKiBmaXJzdCwgZXh0ZW5kIGN1cnJlbnQgc2VnbWVudCdzIGVuZCB3aGVuZXZlciBwb3NzaWJsZSAqLworICAgICAgICBhZnRlciA9IGVuZDsKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgIGRvCisgICAgICAgICAgeworICAgICAgICAgICAgZW5kICAgPSBhZnRlcjsKKyAgICAgICAgICAgIGFmdGVyID0gYWZ0ZXItPm5leHQ7CisgICAgICAgICAgICBpZiAoIGFmdGVyID09IGZpcnN0ICkKKyAgICAgICAgICAgICAgZmluaXNoZWQgPSAxOworCisgICAgICAgICAgICBvdXRfeCA9IGFmdGVyLT5vcmdfdSAtIGVuZC0+b3JnX3U7CisgICAgICAgICAgICBvdXRfeSA9IGFmdGVyLT5vcmdfdiAtIGVuZC0+b3JnX3Y7CisKKyAgICAgICAgICB9IHdoaWxlICggb3V0X3ggPT0gMCAmJiBvdXRfeSA9PSAwICk7CisKKyAgICAgICAgICBvcmllbnRfY3VyID0gcHNoX2Nvcm5lcl9vcmllbnRhdGlvbiggaW5feCwgaW5feSwgb3V0X3gsIG91dF95ICk7CisKKyAgICAgICAgfSB3aGlsZSAoIG9yaWVudF9jdXIgPT0gMCApOworCisgICAgICAgIGlmICggKCBvcmllbnRfY3VyIF4gb3JpZW50X3ByZXYgKSA8IDAgKQorICAgICAgICB7CisgICAgICAgICAgZG8KKyAgICAgICAgICB7CisgICAgICAgICAgICBwc2hfcG9pbnRfc2V0X2luZmxleCggc3RhcnQgKTsKKyAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnQtPm5leHQ7CisgICAgICAgICAgfQorICAgICAgICAgIHdoaWxlICggc3RhcnQgIT0gZW5kICk7CisKKyAgICAgICAgICBwc2hfcG9pbnRfc2V0X2luZmxleCggc3RhcnQgKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXJ0ICAgICAgID0gZW5kOworICAgICAgICBlbmQgICAgICAgICA9IGFmdGVyOworICAgICAgICBvcmllbnRfcHJldiA9IG9yaWVudF9jdXI7CisgICAgICAgIGluX3ggICAgICAgID0gb3V0X3g7CisgICAgICAgIGluX3kgICAgICAgID0gb3V0X3k7CisKKyAgICAgIH0gd2hpbGUgKCAhZmluaXNoZWQgKTsKKworICAgIFNraXA6CisgICAgICA7CisgICAgfQorICB9CisKKyNlbmRpZiAvKiBDT01QVVRFX0lORkxFWFMgKi8KKworCisgIHN0YXRpYyB2b2lkCisgIHBzaF9nbHlwaF9kb25lKCBQU0hfR2x5cGggIGdseXBoICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gZ2x5cGgtPm1lbW9yeTsKKworCisgICAgcHNoX2hpbnRfdGFibGVfZG9uZSggJmdseXBoLT5oaW50X3RhYmxlc1sxXSwgbWVtb3J5ICk7CisgICAgcHNoX2hpbnRfdGFibGVfZG9uZSggJmdseXBoLT5oaW50X3RhYmxlc1swXSwgbWVtb3J5ICk7CisKKyAgICBGVF9GUkVFKCBnbHlwaC0+cG9pbnRzICk7CisgICAgRlRfRlJFRSggZ2x5cGgtPmNvbnRvdXJzICk7CisKKyAgICBnbHlwaC0+bnVtX3BvaW50cyAgID0gMDsKKyAgICBnbHlwaC0+bnVtX2NvbnRvdXJzID0gMDsKKworICAgIGdseXBoLT5tZW1vcnkgPSAwOworICB9CisKKworICBzdGF0aWMgaW50CisgIHBzaF9jb21wdXRlX2RpciggRlRfUG9zICBkeCwKKyAgICAgICAgICAgICAgICAgICBGVF9Qb3MgIGR5ICkKKyAgeworICAgIEZUX1BvcyAgYXgsIGF5OworICAgIGludCAgICAgcmVzdWx0ID0gUFNIX0RJUl9OT05FOworCisKKyAgICBheCA9IEZUX0FCUyggZHggKTsKKyAgICBheSA9IEZUX0FCUyggZHkgKTsKKworICAgIGlmICggYXkgKiAxMiA8IGF4ICkKKyAgICB7CisgICAgICAvKiB8ZHl8IDw8PCB8ZHh8ICBtZWFucyBhIG5lYXItaG9yaXpvbnRhbCBzZWdtZW50ICovCisgICAgICByZXN1bHQgPSAoIGR4ID49IDAgKSA/IFBTSF9ESVJfUklHSFQgOiBQU0hfRElSX0xFRlQ7CisgICAgfQorICAgIGVsc2UgaWYgKCBheCAqIDEyIDwgYXkgKQorICAgIHsKKyAgICAgIC8qIHxkeHwgPDw8IHxkeXwgIG1lYW5zIGEgbmVhci12ZXJ0aWNhbCBzZWdtZW50ICovCisgICAgICByZXN1bHQgPSAoIGR5ID49IDAgKSA/IFBTSF9ESVJfVVAgOiBQU0hfRElSX0RPV047CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgLyogbG9hZCBvdXRsaW5lIHBvaW50IGNvb3JkaW5hdGVzIGludG8gaGludGVyIGdseXBoICovCisgIHN0YXRpYyB2b2lkCisgIHBzaF9nbHlwaF9sb2FkX3BvaW50cyggUFNIX0dseXBoICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGRpbWVuc2lvbiApCisgIHsKKyAgICBGVF9WZWN0b3IqICB2ZWMgICA9IGdseXBoLT5vdXRsaW5lLT5wb2ludHM7CisgICAgUFNIX1BvaW50ICAgcG9pbnQgPSBnbHlwaC0+cG9pbnRzOworICAgIEZUX1VJbnQgICAgIGNvdW50ID0gZ2x5cGgtPm51bV9wb2ludHM7CisKKworICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCBwb2ludCsrLCB2ZWMrKyApCisgICAgeworICAgICAgcG9pbnQtPmZsYWdzMiA9IDA7CisgICAgICBwb2ludC0+aGludCAgID0gTlVMTDsKKyAgICAgIGlmICggZGltZW5zaW9uID09IDAgKQorICAgICAgeworICAgICAgICBwb2ludC0+b3JnX3UgPSB2ZWMtPng7CisgICAgICAgIHBvaW50LT5vcmdfdiA9IHZlYy0+eTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgcG9pbnQtPm9yZ191ID0gdmVjLT55OworICAgICAgICBwb2ludC0+b3JnX3YgPSB2ZWMtPng7CisgICAgICB9CisKKyNpZmRlZiBERUJVR19ISU5URVIKKyAgICAgIHBvaW50LT5vcmdfeCA9IHZlYy0+eDsKKyAgICAgIHBvaW50LT5vcmdfeSA9IHZlYy0+eTsKKyNlbmRpZgorCisgICAgfQorICB9CisKKworICAvKiBzYXZlIGhpbnRlZCBwb2ludCBjb29yZGluYXRlcyBiYWNrIHRvIG91dGxpbmUgKi8KKyAgc3RhdGljIHZvaWQKKyAgcHNoX2dseXBoX3NhdmVfcG9pbnRzKCBQU0hfR2x5cGggIGdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgZGltZW5zaW9uICkKKyAgeworICAgIEZUX1VJbnQgICAgIG47CisgICAgUFNIX1BvaW50ICAgcG9pbnQgPSBnbHlwaC0+cG9pbnRzOworICAgIEZUX1ZlY3RvciogIHZlYyAgID0gZ2x5cGgtPm91dGxpbmUtPnBvaW50czsKKyAgICBjaGFyKiAgICAgICB0YWdzICA9IGdseXBoLT5vdXRsaW5lLT50YWdzOworCisKKyAgICBmb3IgKCBuID0gMDsgbiA8IGdseXBoLT5udW1fcG9pbnRzOyBuKysgKQorICAgIHsKKyAgICAgIGlmICggZGltZW5zaW9uID09IDAgKQorICAgICAgICB2ZWNbbl0ueCA9IHBvaW50LT5jdXJfdTsKKyAgICAgIGVsc2UKKyAgICAgICAgdmVjW25dLnkgPSBwb2ludC0+Y3VyX3U7CisKKyAgICAgIGlmICggcHNoX3BvaW50X2lzX3N0cm9uZyggcG9pbnQgKSApCisgICAgICAgIHRhZ3Nbbl0gfD0gKGNoYXIpKCAoIGRpbWVuc2lvbiA9PSAwICkgPyAzMiA6IDY0ICk7CisKKyNpZmRlZiBERUJVR19ISU5URVIKKworICAgICAgaWYgKCBkaW1lbnNpb24gPT0gMCApCisgICAgICB7CisgICAgICAgIHBvaW50LT5jdXJfeCAgID0gcG9pbnQtPmN1cl91OworICAgICAgICBwb2ludC0+ZmxhZ3NfeCA9IHBvaW50LT5mbGFnczIgfCBwb2ludC0+ZmxhZ3M7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHBvaW50LT5jdXJfeSAgID0gcG9pbnQtPmN1cl91OworICAgICAgICBwb2ludC0+ZmxhZ3NfeSA9IHBvaW50LT5mbGFnczIgfCBwb2ludC0+ZmxhZ3M7CisgICAgICB9CisKKyNlbmRpZgorCisgICAgICBwb2ludCsrOworICAgIH0KKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHBzaF9nbHlwaF9pbml0KCBQU0hfR2x5cGggICAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgIFBTX0hpbnRzICAgICBwc19oaW50cywKKyAgICAgICAgICAgICAgICAgIFBTSF9HbG9iYWxzICBnbG9iYWxzICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfTWVtb3J5ICBtZW1vcnk7CisKKworICAgIC8qIGNsZWFyIGFsbCBmaWVsZHMgKi8KKyAgICBGVF9NRU1fWkVSTyggZ2x5cGgsIHNpemVvZiAoICpnbHlwaCApICk7CisKKyAgICBtZW1vcnkgPSBnbHlwaC0+bWVtb3J5ID0gZ2xvYmFscy0+bWVtb3J5OworCisgICAgLyogYWxsb2NhdGUgYW5kIHNldHVwIHBvaW50cyArIGNvbnRvdXJzIGFycmF5cyAqLworICAgIGlmICggRlRfTkVXX0FSUkFZKCBnbHlwaC0+cG9pbnRzLCAgIG91dGxpbmUtPm5fcG9pbnRzICAgKSB8fAorICAgICAgICAgRlRfTkVXX0FSUkFZKCBnbHlwaC0+Y29udG91cnMsIG91dGxpbmUtPm5fY29udG91cnMgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBnbHlwaC0+bnVtX3BvaW50cyAgID0gb3V0bGluZS0+bl9wb2ludHM7CisgICAgZ2x5cGgtPm51bV9jb250b3VycyA9IG91dGxpbmUtPm5fY29udG91cnM7CisKKyAgICB7CisgICAgICBGVF9VSW50ICAgICAgZmlyc3QgPSAwLCBuZXh0LCBuOworICAgICAgUFNIX1BvaW50ICAgIHBvaW50cyAgPSBnbHlwaC0+cG9pbnRzOworICAgICAgUFNIX0NvbnRvdXIgIGNvbnRvdXIgPSBnbHlwaC0+Y29udG91cnM7CisKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBnbHlwaC0+bnVtX2NvbnRvdXJzOyBuKysgKQorICAgICAgeworICAgICAgICBGVF9JbnQgICAgIGNvdW50OworICAgICAgICBQU0hfUG9pbnQgIHBvaW50OworCisKKyAgICAgICAgbmV4dCAgPSBvdXRsaW5lLT5jb250b3Vyc1tuXSArIDE7CisgICAgICAgIGNvdW50ID0gbmV4dCAtIGZpcnN0OworCisgICAgICAgIGNvbnRvdXItPnN0YXJ0ID0gcG9pbnRzICsgZmlyc3Q7CisgICAgICAgIGNvbnRvdXItPmNvdW50ID0gKEZUX1VJbnQpY291bnQ7CisKKyAgICAgICAgaWYgKCBjb3VudCA+IDAgKQorICAgICAgICB7CisgICAgICAgICAgcG9pbnQgPSBwb2ludHMgKyBmaXJzdDsKKworICAgICAgICAgIHBvaW50LT5wcmV2ICAgID0gcG9pbnRzICsgbmV4dCAtIDE7CisgICAgICAgICAgcG9pbnQtPmNvbnRvdXIgPSBjb250b3VyOworCisgICAgICAgICAgZm9yICggOyBjb3VudCA+IDE7IGNvdW50LS0gKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHBvaW50WzBdLm5leHQgPSBwb2ludCArIDE7CisgICAgICAgICAgICBwb2ludFsxXS5wcmV2ID0gcG9pbnQ7CisgICAgICAgICAgICBwb2ludCsrOworICAgICAgICAgICAgcG9pbnQtPmNvbnRvdXIgPSBjb250b3VyOworICAgICAgICAgIH0KKyAgICAgICAgICBwb2ludC0+bmV4dCA9IHBvaW50cyArIGZpcnN0OworICAgICAgICB9CisKKyAgICAgICAgY29udG91cisrOworICAgICAgICBmaXJzdCA9IG5leHQ7CisgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgUFNIX1BvaW50ICAgcG9pbnRzID0gZ2x5cGgtPnBvaW50czsKKyAgICAgIFBTSF9Qb2ludCAgIHBvaW50ICA9IHBvaW50czsKKyAgICAgIEZUX1ZlY3RvciogIHZlYyAgICA9IG91dGxpbmUtPnBvaW50czsKKyAgICAgIEZUX1VJbnQgICAgIG47CisKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBnbHlwaC0+bnVtX3BvaW50czsgbisrLCBwb2ludCsrICkKKyAgICAgIHsKKyAgICAgICAgRlRfSW50ICBuX3ByZXYgPSAoRlRfSW50KSggcG9pbnQtPnByZXYgLSBwb2ludHMgKTsKKyAgICAgICAgRlRfSW50ICBuX25leHQgPSAoRlRfSW50KSggcG9pbnQtPm5leHQgLSBwb2ludHMgKTsKKyAgICAgICAgRlRfUG9zICBkeGksIGR5aSwgZHhvLCBkeW87CisKKworICAgICAgICBpZiAoICEoIG91dGxpbmUtPnRhZ3Nbbl0gJiBGVF9DVVJWRV9UQUdfT04gKSApCisgICAgICAgICAgcG9pbnQtPmZsYWdzID0gUFNIX1BPSU5UX09GRjsKKworICAgICAgICBkeGkgPSB2ZWNbbl0ueCAtIHZlY1tuX3ByZXZdLng7CisgICAgICAgIGR5aSA9IHZlY1tuXS55IC0gdmVjW25fcHJldl0ueTsKKworICAgICAgICBwb2ludC0+ZGlyX2luID0gKEZUX0NoYXIpcHNoX2NvbXB1dGVfZGlyKCBkeGksIGR5aSApOworCisgICAgICAgIGR4byA9IHZlY1tuX25leHRdLnggLSB2ZWNbbl0ueDsKKyAgICAgICAgZHlvID0gdmVjW25fbmV4dF0ueSAtIHZlY1tuXS55OworCisgICAgICAgIHBvaW50LT5kaXJfb3V0ID0gKEZUX0NoYXIpcHNoX2NvbXB1dGVfZGlyKCBkeG8sIGR5byApOworCisgICAgICAgIC8qIGRldGVjdCBzbW9vdGggcG9pbnRzICovCisgICAgICAgIGlmICggcG9pbnQtPmZsYWdzICYgUFNIX1BPSU5UX09GRiApCisgICAgICAgICAgcG9pbnQtPmZsYWdzIHw9IFBTSF9QT0lOVF9TTU9PVEg7CisKKyAgICAgICAgZWxzZSBpZiAoIHBvaW50LT5kaXJfaW4gPT0gcG9pbnQtPmRpcl9vdXQgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBwb2ludC0+ZGlyX291dCAhPSBQU0hfRElSX05PTkUgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICBwc2hfY29ybmVyX2lzX2ZsYXQoIGR4aSwgZHlpLCBkeG8sIGR5byApICkKKyAgICAgICAgICAgIHBvaW50LT5mbGFncyB8PSBQU0hfUE9JTlRfU01PT1RIOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgZ2x5cGgtPm91dGxpbmUgPSBvdXRsaW5lOworICAgIGdseXBoLT5nbG9iYWxzID0gZ2xvYmFsczsKKworI2lmZGVmIENPTVBVVEVfSU5GTEVYUworICAgIHBzaF9nbHlwaF9sb2FkX3BvaW50cyggZ2x5cGgsIDAgKTsKKyAgICBwc2hfZ2x5cGhfY29tcHV0ZV9pbmZsZWN0aW9ucyggZ2x5cGggKTsKKyNlbmRpZiAvKiBDT01QVVRFX0lORkxFWFMgKi8KKworICAgIC8qIG5vdyBkZWFsIHdpdGggaGludHMgdGFibGVzICovCisgICAgZXJyb3IgPSBwc2hfaGludF90YWJsZV9pbml0KCAmZ2x5cGgtPmhpbnRfdGFibGVzIFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwc19oaW50cy0+ZGltZW5zaW9uWzBdLmhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBzX2hpbnRzLT5kaW1lbnNpb25bMF0ubWFza3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHNfaGludHMtPmRpbWVuc2lvblswXS5jb3VudGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgZXJyb3IgPSBwc2hfaGludF90YWJsZV9pbml0KCAmZ2x5cGgtPmhpbnRfdGFibGVzIFsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwc19oaW50cy0+ZGltZW5zaW9uWzFdLmhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBzX2hpbnRzLT5kaW1lbnNpb25bMV0ubWFza3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHNfaGludHMtPmRpbWVuc2lvblsxXS5jb3VudGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBjb21wdXRlIGFsbCBleHRyZW1hIGluIGEgZ2x5cGggZm9yIGEgZ2l2ZW4gZGltZW5zaW9uICovCisgIHN0YXRpYyB2b2lkCisgIHBzaF9nbHlwaF9jb21wdXRlX2V4dHJlbWEoIFBTSF9HbHlwaCAgZ2x5cGggKQorICB7CisgICAgRlRfVUludCAgbjsKKworCisgICAgLyogZmlyc3Qgb2YgYWxsLCBjb21wdXRlIGFsbCBsb2NhbCBleHRyZW1hICovCisgICAgZm9yICggbiA9IDA7IG4gPCBnbHlwaC0+bnVtX2NvbnRvdXJzOyBuKysgKQorICAgIHsKKyAgICAgIFBTSF9Qb2ludCAgZmlyc3QgPSBnbHlwaC0+Y29udG91cnNbbl0uc3RhcnQ7CisgICAgICBQU0hfUG9pbnQgIHBvaW50LCBiZWZvcmUsIGFmdGVyOworCisKKyAgICAgIGlmICggZ2x5cGgtPmNvbnRvdXJzW25dLmNvdW50ID09IDAgKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgcG9pbnQgID0gZmlyc3Q7CisgICAgICBiZWZvcmUgPSBwb2ludDsKKyAgICAgIGFmdGVyICA9IHBvaW50OworCisgICAgICBkbworICAgICAgeworICAgICAgICBiZWZvcmUgPSBiZWZvcmUtPnByZXY7CisgICAgICAgIGlmICggYmVmb3JlID09IGZpcnN0ICkKKyAgICAgICAgICBnb3RvIFNraXA7CisKKyAgICAgIH0gd2hpbGUgKCBiZWZvcmUtPm9yZ191ID09IHBvaW50LT5vcmdfdSApOworCisgICAgICBmaXJzdCA9IHBvaW50ID0gYmVmb3JlLT5uZXh0OworCisgICAgICBmb3IgKDs7KQorICAgICAgeworICAgICAgICBhZnRlciA9IHBvaW50OworICAgICAgICBkbworICAgICAgICB7CisgICAgICAgICAgYWZ0ZXIgPSBhZnRlci0+bmV4dDsKKyAgICAgICAgICBpZiAoIGFmdGVyID09IGZpcnN0ICkKKyAgICAgICAgICAgIGdvdG8gTmV4dDsKKworICAgICAgICB9IHdoaWxlICggYWZ0ZXItPm9yZ191ID09IHBvaW50LT5vcmdfdSApOworCisgICAgICAgIGlmICggYmVmb3JlLT5vcmdfdSA8IHBvaW50LT5vcmdfdSApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIGFmdGVyLT5vcmdfdSA8IHBvaW50LT5vcmdfdSApCisgICAgICAgICAgeworICAgICAgICAgICAgLyogbG9jYWwgbWF4aW11bSAqLworICAgICAgICAgICAgZ290byBFeHRyZW11bTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiBiZWZvcmUtPm9yZ191ID4gcG9pbnQtPm9yZ191ICovCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIGFmdGVyLT5vcmdfdSA+IHBvaW50LT5vcmdfdSApCisgICAgICAgICAgeworICAgICAgICAgICAgLyogbG9jYWwgbWluaW11bSAqLworICAgICAgICAgIEV4dHJlbXVtOgorICAgICAgICAgICAgZG8KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcHNoX3BvaW50X3NldF9leHRyZW11bSggcG9pbnQgKTsKKyAgICAgICAgICAgICAgcG9pbnQgPSBwb2ludC0+bmV4dDsKKworICAgICAgICAgICAgfSB3aGlsZSAoIHBvaW50ICE9IGFmdGVyICk7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYmVmb3JlID0gYWZ0ZXItPnByZXY7CisgICAgICAgIHBvaW50ICA9IGFmdGVyOworCisgICAgICB9IC8qIGZvciAgKi8KKworICAgIE5leHQ6CisgICAgICA7CisgICAgfQorCisgICAgLyogZm9yIGVhY2ggZXh0cmVtdW0sIGRldGVybWluZSBpdHMgZGlyZWN0aW9uIGFsb25nIHRoZSAqLworICAgIC8qIG9ydGhvZ29uYWwgYXhpcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBmb3IgKCBuID0gMDsgbiA8IGdseXBoLT5udW1fcG9pbnRzOyBuKysgKQorICAgIHsKKyAgICAgIFBTSF9Qb2ludCAgcG9pbnQsIGJlZm9yZSwgYWZ0ZXI7CisKKworICAgICAgcG9pbnQgID0gJmdseXBoLT5wb2ludHNbbl07CisgICAgICBiZWZvcmUgPSBwb2ludDsKKyAgICAgIGFmdGVyICA9IHBvaW50OworCisgICAgICBpZiAoIHBzaF9wb2ludF9pc19leHRyZW11bSggcG9pbnQgKSApCisgICAgICB7CisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAgICAgICBiZWZvcmUgPSBiZWZvcmUtPnByZXY7CisgICAgICAgICAgaWYgKCBiZWZvcmUgPT0gcG9pbnQgKQorICAgICAgICAgICAgZ290byBTa2lwOworCisgICAgICAgIH0gd2hpbGUgKCBiZWZvcmUtPm9yZ192ID09IHBvaW50LT5vcmdfdiApOworCisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAgICAgICBhZnRlciA9IGFmdGVyLT5uZXh0OworICAgICAgICAgIGlmICggYWZ0ZXIgPT0gcG9pbnQgKQorICAgICAgICAgICAgZ290byBTa2lwOworCisgICAgICAgIH0gd2hpbGUgKCBhZnRlci0+b3JnX3YgPT0gcG9pbnQtPm9yZ192ICk7CisgICAgICB9CisKKyAgICAgIGlmICggYmVmb3JlLT5vcmdfdiA8IHBvaW50LT5vcmdfdiAmJgorICAgICAgICAgICBhZnRlci0+b3JnX3YgID4gcG9pbnQtPm9yZ192ICkKKyAgICAgIHsKKyAgICAgICAgcHNoX3BvaW50X3NldF9wb3NpdGl2ZSggcG9pbnQgKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCBiZWZvcmUtPm9yZ192ID4gcG9pbnQtPm9yZ192ICYmCisgICAgICAgICAgICAgICAgYWZ0ZXItPm9yZ192ICA8IHBvaW50LT5vcmdfdiApCisgICAgICB7CisgICAgICAgIHBzaF9wb2ludF9zZXRfbmVnYXRpdmUoIHBvaW50ICk7CisgICAgICB9CisKKyAgICBTa2lwOgorICAgICAgOworICAgIH0KKyAgfQorCisKKyAgLyogbWFqb3JfZGlyIGlzIHRoZSBkaXJlY3Rpb24gZm9yIHBvaW50cyBvbiB0aGUgYm90dG9tL2xlZnQgb2YgdGhlIHN0ZW07ICovCisgIC8qIFBvaW50cyBvbiB0aGUgdG9wL3JpZ2h0IG9mIHRoZSBzdGVtIHdpbGwgaGF2ZSBhIGRpcmVjdGlvbiBvZiAgICAgICAgICAqLworICAvKiAtbWFqb3JfZGlyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICBzdGF0aWMgdm9pZAorICBwc2hfaGludF90YWJsZV9maW5kX3N0cm9uZ19wb2ludHMoIFBTSF9IaW50X1RhYmxlICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU0hfUG9pbnQgICAgICAgcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICB0aHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgIG1ham9yX2RpciApCisgIHsKKyAgICBQU0hfSGludCogIHNvcnQgICAgICA9IHRhYmxlLT5zb3J0OworICAgIEZUX1VJbnQgICAgbnVtX2hpbnRzID0gdGFibGUtPm51bV9oaW50czsKKworCisgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0sIHBvaW50KysgKQorICAgIHsKKyAgICAgIEZUX0ludCAgcG9pbnRfZGlyID0gMDsKKyAgICAgIEZUX1BvcyAgb3JnX3UgICAgID0gcG9pbnQtPm9yZ191OworCisKKyAgICAgIGlmICggcHNoX3BvaW50X2lzX3N0cm9uZyggcG9pbnQgKSApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoIFBTSF9ESVJfQ09NUEFSRSggcG9pbnQtPmRpcl9pbiwgbWFqb3JfZGlyICkgKQorICAgICAgICBwb2ludF9kaXIgPSBwb2ludC0+ZGlyX2luOworCisgICAgICBlbHNlIGlmICggUFNIX0RJUl9DT01QQVJFKCBwb2ludC0+ZGlyX291dCwgbWFqb3JfZGlyICkgKQorICAgICAgICBwb2ludF9kaXIgPSBwb2ludC0+ZGlyX291dDsKKworICAgICAgaWYgKCBwb2ludF9kaXIgKQorICAgICAgeworICAgICAgICBpZiAoIHBvaW50X2RpciA9PSBtYWpvcl9kaXIgKQorICAgICAgICB7CisgICAgICAgICAgRlRfVUludCAgbm47CisKKworICAgICAgICAgIGZvciAoIG5uID0gMDsgbm4gPCBudW1faGludHM7IG5uKysgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIFBTSF9IaW50ICBoaW50ID0gc29ydFtubl07CisgICAgICAgICAgICBGVF9Qb3MgICAgZCAgICA9IG9yZ191IC0gaGludC0+b3JnX3BvczsKKworCisgICAgICAgICAgICBpZiAoIGQgPCB0aHJlc2hvbGQgJiYgLWQgPCB0aHJlc2hvbGQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBwc2hfcG9pbnRfc2V0X3N0cm9uZyggcG9pbnQgKTsKKyAgICAgICAgICAgICAgcG9pbnQtPmZsYWdzMiB8PSBQU0hfUE9JTlRfRURHRV9NSU47CisgICAgICAgICAgICAgIHBvaW50LT5oaW50ICAgID0gaGludDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCBwb2ludF9kaXIgPT0gLW1ham9yX2RpciApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9VSW50ICBubjsKKworCisgICAgICAgICAgZm9yICggbm4gPSAwOyBubiA8IG51bV9oaW50czsgbm4rKyApCisgICAgICAgICAgeworICAgICAgICAgICAgUFNIX0hpbnQgIGhpbnQgPSBzb3J0W25uXTsKKyAgICAgICAgICAgIEZUX1BvcyAgICBkICAgID0gb3JnX3UgLSBoaW50LT5vcmdfcG9zIC0gaGludC0+b3JnX2xlbjsKKworCisgICAgICAgICAgICBpZiAoIGQgPCB0aHJlc2hvbGQgJiYgLWQgPCB0aHJlc2hvbGQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBwc2hfcG9pbnRfc2V0X3N0cm9uZyggcG9pbnQgKTsKKyAgICAgICAgICAgICAgcG9pbnQtPmZsYWdzMiB8PSBQU0hfUE9JTlRfRURHRV9NQVg7CisgICAgICAgICAgICAgIHBvaW50LT5oaW50ICAgID0gaGludDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyNpZiAxCisgICAgICBlbHNlIGlmICggcHNoX3BvaW50X2lzX2V4dHJlbXVtKCBwb2ludCApICkKKyAgICAgIHsKKyAgICAgICAgLyogdHJlYXQgZXh0cmVtYSBhcyBzcGVjaWFsIGNhc2VzIGZvciBzdGVtIGVkZ2UgYWxpZ25tZW50ICovCisgICAgICAgIEZUX1VJbnQgIG5uLCBtaW5fZmxhZywgbWF4X2ZsYWc7CisKKworICAgICAgICBpZiAoIG1ham9yX2RpciA9PSBQU0hfRElSX0hPUklaT05UQUwgKQorICAgICAgICB7CisgICAgICAgICAgbWluX2ZsYWcgPSBQU0hfUE9JTlRfUE9TSVRJVkU7CisgICAgICAgICAgbWF4X2ZsYWcgPSBQU0hfUE9JTlRfTkVHQVRJVkU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgbWluX2ZsYWcgPSBQU0hfUE9JTlRfTkVHQVRJVkU7CisgICAgICAgICAgbWF4X2ZsYWcgPSBQU0hfUE9JTlRfUE9TSVRJVkU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHBvaW50LT5mbGFnczIgJiBtaW5fZmxhZyApCisgICAgICAgIHsKKyAgICAgICAgICBmb3IgKCBubiA9IDA7IG5uIDwgbnVtX2hpbnRzOyBubisrICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBQU0hfSGludCAgaGludCA9IHNvcnRbbm5dOworICAgICAgICAgICAgRlRfUG9zICAgIGQgICAgPSBvcmdfdSAtIGhpbnQtPm9yZ19wb3M7CisKKworICAgICAgICAgICAgaWYgKCBkIDwgdGhyZXNob2xkICYmIC1kIDwgdGhyZXNob2xkICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcG9pbnQtPmZsYWdzMiB8PSBQU0hfUE9JTlRfRURHRV9NSU47CisgICAgICAgICAgICAgIHBvaW50LT5oaW50ICAgID0gaGludDsKKyAgICAgICAgICAgICAgcHNoX3BvaW50X3NldF9zdHJvbmcoIHBvaW50ICk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggcG9pbnQtPmZsYWdzMiAmIG1heF9mbGFnICkKKyAgICAgICAgeworICAgICAgICAgIGZvciAoIG5uID0gMDsgbm4gPCBudW1faGludHM7IG5uKysgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIFBTSF9IaW50ICBoaW50ID0gc29ydFtubl07CisgICAgICAgICAgICBGVF9Qb3MgICAgZCAgICA9IG9yZ191IC0gaGludC0+b3JnX3BvcyAtIGhpbnQtPm9yZ19sZW47CisKKworICAgICAgICAgICAgaWYgKCBkIDwgdGhyZXNob2xkICYmIC1kIDwgdGhyZXNob2xkICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcG9pbnQtPmZsYWdzMiB8PSBQU0hfUE9JTlRfRURHRV9NQVg7CisgICAgICAgICAgICAgIHBvaW50LT5oaW50ICAgID0gaGludDsKKyAgICAgICAgICAgICAgcHNoX3BvaW50X3NldF9zdHJvbmcoIHBvaW50ICk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggcG9pbnQtPmhpbnQgPT0gTlVMTCApCisgICAgICAgIHsKKyAgICAgICAgICBmb3IgKCBubiA9IDA7IG5uIDwgbnVtX2hpbnRzOyBubisrICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBQU0hfSGludCAgaGludCA9IHNvcnRbbm5dOworCisKKyAgICAgICAgICAgIGlmICggb3JnX3UgPj0gaGludC0+b3JnX3BvcyAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICBvcmdfdSA8PSBoaW50LT5vcmdfcG9zICsgaGludC0+b3JnX2xlbiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHBvaW50LT5oaW50ID0gaGludDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyNlbmRpZiAvKiAxICovCisgICAgfQorICB9CisKKworICAvKiB0aGUgYWNjZXB0ZWQgc2hpZnQgZm9yIHN0cm9uZyBwb2ludHMgaW4gZnJhY3Rpb25hbCBwaXhlbHMgKi8KKyNkZWZpbmUgUFNIX1NUUk9OR19USFJFU0hPTEQgIDMyCisKKyAgLyogdGhlIG1heGltdW0gc2hpZnQgdmFsdWUgaW4gZm9udCB1bml0cyAqLworI2RlZmluZSBQU0hfU1RST05HX1RIUkVTSE9MRF9NQVhJTVVNICAzMAorCisKKyAgLyogZmluZCBzdHJvbmcgcG9pbnRzIGluIGEgZ2x5cGggKi8KKyAgc3RhdGljIHZvaWQKKyAgcHNoX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyggUFNIX0dseXBoICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBkaW1lbnNpb24gKQorICB7CisgICAgLyogYSBwb2ludCBpcyBgc3Ryb25nJyBpZiBpdCBpcyBsb2NhdGVkIG9uIGEgc3RlbSBlZGdlIGFuZCAgICAgICAqLworICAgIC8qIGhhcyBhbiBgaW4nIG9yIGBvdXQnIHRhbmdlbnQgcGFyYWxsZWwgdG8gdGhlIGhpbnQncyBkaXJlY3Rpb24gKi8KKworICAgIFBTSF9IaW50X1RhYmxlICB0YWJsZSAgICAgPSAmZ2x5cGgtPmhpbnRfdGFibGVzW2RpbWVuc2lvbl07CisgICAgUFNfTWFzayAgICAgICAgIG1hc2sgICAgICA9IHRhYmxlLT5oaW50X21hc2tzLT5tYXNrczsKKyAgICBGVF9VSW50ICAgICAgICAgbnVtX21hc2tzID0gdGFibGUtPmhpbnRfbWFza3MtPm51bV9tYXNrczsKKyAgICBGVF9VSW50ICAgICAgICAgZmlyc3QgICAgID0gMDsKKyAgICBGVF9JbnQgICAgICAgICAgbWFqb3JfZGlyID0gZGltZW5zaW9uID09IDAgPyBQU0hfRElSX1ZFUlRJQ0FMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUFNIX0RJUl9IT1JJWk9OVEFMOworICAgIFBTSF9EaW1lbnNpb24gICBkaW0gICAgICAgPSAmZ2x5cGgtPmdsb2JhbHMtPmRpbWVuc2lvbltkaW1lbnNpb25dOworICAgIEZUX0ZpeGVkICAgICAgICBzY2FsZSAgICAgPSBkaW0tPnNjYWxlX211bHQ7CisgICAgRlRfSW50ICAgICAgICAgIHRocmVzaG9sZDsKKworCisgICAgdGhyZXNob2xkID0gKEZUX0ludClGVF9EaXZGaXgoIFBTSF9TVFJPTkdfVEhSRVNIT0xELCBzY2FsZSApOworICAgIGlmICggdGhyZXNob2xkID4gUFNIX1NUUk9OR19USFJFU0hPTERfTUFYSU1VTSApCisgICAgICB0aHJlc2hvbGQgPSBQU0hfU1RST05HX1RIUkVTSE9MRF9NQVhJTVVNOworCisgICAgLyogcHJvY2VzcyBzZWNvbmRhcnkgaGludHMgdG8gYHNlbGVjdGVkJyBwb2ludHMgKi8KKyAgICBpZiAoIG51bV9tYXNrcyA+IDEgJiYgZ2x5cGgtPm51bV9wb2ludHMgPiAwICkKKyAgICB7CisgICAgICAvKiB0aGUgYGVuZGNoYXInIG9wIGNhbiByZWR1Y2UgdGhlIG51bWJlciBvZiBwb2ludHMgKi8KKyAgICAgIGZpcnN0ID0gbWFzay0+ZW5kX3BvaW50ID4gZ2x5cGgtPm51bV9wb2ludHMKKyAgICAgICAgICAgICAgICA/IGdseXBoLT5udW1fcG9pbnRzCisgICAgICAgICAgICAgICAgOiBtYXNrLT5lbmRfcG9pbnQ7CisgICAgICBtYXNrKys7CisgICAgICBmb3IgKCA7IG51bV9tYXNrcyA+IDE7IG51bV9tYXNrcy0tLCBtYXNrKysgKQorICAgICAgeworICAgICAgICBGVF9VSW50ICBuZXh0OworICAgICAgICBGVF9JbnQgICBjb3VudDsKKworCisgICAgICAgIG5leHQgID0gbWFzay0+ZW5kX3BvaW50ID4gZ2x5cGgtPm51bV9wb2ludHMKKyAgICAgICAgICAgICAgICAgID8gZ2x5cGgtPm51bV9wb2ludHMKKyAgICAgICAgICAgICAgICAgIDogbWFzay0+ZW5kX3BvaW50OworICAgICAgICBjb3VudCA9IG5leHQgLSBmaXJzdDsKKyAgICAgICAgaWYgKCBjb3VudCA+IDAgKQorICAgICAgICB7CisgICAgICAgICAgUFNIX1BvaW50ICBwb2ludCA9IGdseXBoLT5wb2ludHMgKyBmaXJzdDsKKworCisgICAgICAgICAgcHNoX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayggdGFibGUsIG1hc2sgKTsKKworICAgICAgICAgIHBzaF9oaW50X3RhYmxlX2ZpbmRfc3Ryb25nX3BvaW50cyggdGFibGUsIHBvaW50LCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZCwgbWFqb3JfZGlyICk7CisgICAgICAgIH0KKyAgICAgICAgZmlyc3QgPSBuZXh0OworICAgICAgfQorICAgIH0KKworICAgIC8qIHByb2Nlc3MgcHJpbWFyeSBoaW50cyBmb3IgYWxsIHBvaW50cyAqLworICAgIGlmICggbnVtX21hc2tzID09IDEgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgICAgY291bnQgPSBnbHlwaC0+bnVtX3BvaW50czsKKyAgICAgIFBTSF9Qb2ludCAgcG9pbnQgPSBnbHlwaC0+cG9pbnRzOworCisKKyAgICAgIHBzaF9oaW50X3RhYmxlX2FjdGl2YXRlX21hc2soIHRhYmxlLCB0YWJsZS0+aGludF9tYXNrcy0+bWFza3MgKTsKKworICAgICAgcHNoX2hpbnRfdGFibGVfZmluZF9zdHJvbmdfcG9pbnRzKCB0YWJsZSwgcG9pbnQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQsIG1ham9yX2RpciApOworICAgIH0KKworICAgIC8qIG5vdywgY2VydGFpbiBwb2ludHMgbWF5IGhhdmUgYmVlbiBhdHRhY2hlZCB0byBhIGhpbnQgYW5kICovCisgICAgLyogbm90IG1hcmtlZCBhcyBzdHJvbmc7IHVwZGF0ZSB0aGVpciBmbGFncyB0aGVuICAgICAgICAgICAgKi8KKyAgICB7CisgICAgICBGVF9VSW50ICAgIGNvdW50ID0gZ2x5cGgtPm51bV9wb2ludHM7CisgICAgICBQU0hfUG9pbnQgIHBvaW50ID0gZ2x5cGgtPnBvaW50czsKKworCisgICAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSwgcG9pbnQrKyApCisgICAgICAgIGlmICggcG9pbnQtPmhpbnQgJiYgIXBzaF9wb2ludF9pc19zdHJvbmcoIHBvaW50ICkgKQorICAgICAgICAgIHBzaF9wb2ludF9zZXRfc3Ryb25nKCBwb2ludCApOworICAgIH0KKyAgfQorCisKKyAgLyogZmluZCBwb2ludHMgaW4gYSBnbHlwaCB3aGljaCBhcmUgaW4gYSBibHVlIHpvbmUgYW5kIGhhdmUgYGluJyBvciAqLworICAvKiBgb3V0JyB0YW5nZW50cyBwYXJhbGxlbCB0byB0aGUgaG9yaXpvbnRhbCBheGlzICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIHBzaF9nbHlwaF9maW5kX2JsdWVfcG9pbnRzKCBQU0hfQmx1ZXMgIGJsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNIX0dseXBoICBnbHlwaCApCisgIHsKKyAgICBQU0hfQmx1ZV9UYWJsZSAgdGFibGU7CisgICAgUFNIX0JsdWVfWm9uZSAgIHpvbmU7CisgICAgRlRfVUludCAgICAgICAgIGdseXBoX2NvdW50ID0gZ2x5cGgtPm51bV9wb2ludHM7CisgICAgRlRfVUludCAgICAgICAgIGJsdWVfY291bnQ7CisgICAgUFNIX1BvaW50ICAgICAgIHBvaW50ID0gZ2x5cGgtPnBvaW50czsKKworCisgICAgZm9yICggOyBnbHlwaF9jb3VudCA+IDA7IGdseXBoX2NvdW50LS0sIHBvaW50KysgKQorICAgIHsKKyAgICAgIEZUX1BvcyAgeTsKKworCisgICAgICAvKiBjaGVjayB0YW5nZW50cyAqLworICAgICAgaWYgKCAhUFNIX0RJUl9DT01QQVJFKCBwb2ludC0+ZGlyX2luLCAgUFNIX0RJUl9IT1JJWk9OVEFMICkgJiYKKyAgICAgICAgICAgIVBTSF9ESVJfQ09NUEFSRSggcG9pbnQtPmRpcl9vdXQsIFBTSF9ESVJfSE9SSVpPTlRBTCApICkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIC8qIHNraXAgc3Ryb25nIHBvaW50cyAqLworICAgICAgaWYgKCBwc2hfcG9pbnRfaXNfc3Ryb25nKCBwb2ludCApICkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIHkgPSBwb2ludC0+b3JnX3U7CisKKyAgICAgIC8qIGxvb2sgdXAgdG9wIHpvbmVzICovCisgICAgICB0YWJsZSAgICAgID0gJmJsdWVzLT5ub3JtYWxfdG9wOworICAgICAgYmx1ZV9jb3VudCA9IHRhYmxlLT5jb3VudDsKKyAgICAgIHpvbmUgICAgICAgPSB0YWJsZS0+em9uZXM7CisKKyAgICAgIGZvciAoIDsgYmx1ZV9jb3VudCA+IDA7IGJsdWVfY291bnQtLSwgem9uZSsrICkKKyAgICAgIHsKKyAgICAgICAgRlRfUG9zICBkZWx0YSA9IHkgLSB6b25lLT5vcmdfYm90dG9tOworCisKKyAgICAgICAgaWYgKCBkZWx0YSA8IC1ibHVlcy0+Ymx1ZV9mdXp6ICkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIHkgPD0gem9uZS0+b3JnX3RvcCArIGJsdWVzLT5ibHVlX2Z1enogKQorICAgICAgICAgIGlmICggYmx1ZXMtPm5vX292ZXJzaG9vdHMgfHwgZGVsdGEgPD0gYmx1ZXMtPmJsdWVfdGhyZXNob2xkICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBwb2ludC0+Y3VyX3UgPSB6b25lLT5jdXJfYm90dG9tOworICAgICAgICAgICAgcHNoX3BvaW50X3NldF9zdHJvbmcoIHBvaW50ICk7CisgICAgICAgICAgICBwc2hfcG9pbnRfc2V0X2ZpdHRlZCggcG9pbnQgKTsKKyAgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIGxvb2sgdXAgYm90dG9tIHpvbmVzICovCisgICAgICB0YWJsZSAgICAgID0gJmJsdWVzLT5ub3JtYWxfYm90dG9tOworICAgICAgYmx1ZV9jb3VudCA9IHRhYmxlLT5jb3VudDsKKyAgICAgIHpvbmUgICAgICAgPSB0YWJsZS0+em9uZXMgKyBibHVlX2NvdW50IC0gMTsKKworICAgICAgZm9yICggOyBibHVlX2NvdW50ID4gMDsgYmx1ZV9jb3VudC0tLCB6b25lLS0gKQorICAgICAgeworICAgICAgICBGVF9Qb3MgIGRlbHRhID0gem9uZS0+b3JnX3RvcCAtIHk7CisKKworICAgICAgICBpZiAoIGRlbHRhIDwgLWJsdWVzLT5ibHVlX2Z1enogKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICggeSA+PSB6b25lLT5vcmdfYm90dG9tIC0gYmx1ZXMtPmJsdWVfZnV6eiApCisgICAgICAgICAgaWYgKCBibHVlcy0+bm9fb3ZlcnNob290cyB8fCBkZWx0YSA8IGJsdWVzLT5ibHVlX3RocmVzaG9sZCApCisgICAgICAgICAgeworICAgICAgICAgICAgcG9pbnQtPmN1cl91ID0gem9uZS0+Y3VyX3RvcDsKKyAgICAgICAgICAgIHBzaF9wb2ludF9zZXRfc3Ryb25nKCBwb2ludCApOworICAgICAgICAgICAgcHNoX3BvaW50X3NldF9maXR0ZWQoIHBvaW50ICk7CisgICAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgLyogaW50ZXJwb2xhdGUgc3Ryb25nIHBvaW50cyB3aXRoIHRoZSBoZWxwIG9mIGhpbnRlZCBjb29yZGluYXRlcyAqLworICBzdGF0aWMgdm9pZAorICBwc2hfZ2x5cGhfaW50ZXJwb2xhdGVfc3Ryb25nX3BvaW50cyggUFNIX0dseXBoICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgZGltZW5zaW9uICkKKyAgeworICAgIFBTSF9EaW1lbnNpb24gIGRpbSAgID0gJmdseXBoLT5nbG9iYWxzLT5kaW1lbnNpb25bZGltZW5zaW9uXTsKKyAgICBGVF9GaXhlZCAgICAgICBzY2FsZSA9IGRpbS0+c2NhbGVfbXVsdDsKKworICAgIEZUX1VJbnQgICAgICAgIGNvdW50ID0gZ2x5cGgtPm51bV9wb2ludHM7CisgICAgUFNIX1BvaW50ICAgICAgcG9pbnQgPSBnbHlwaC0+cG9pbnRzOworCisKKyAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSwgcG9pbnQrKyApCisgICAgeworICAgICAgUFNIX0hpbnQgIGhpbnQgPSBwb2ludC0+aGludDsKKworCisgICAgICBpZiAoIGhpbnQgKQorICAgICAgeworICAgICAgICBGVF9Qb3MgIGRlbHRhOworCisKKyAgICAgICAgaWYgKCBwc2hfcG9pbnRfaXNfZWRnZV9taW4oIHBvaW50ICkgKQorICAgICAgICAgIHBvaW50LT5jdXJfdSA9IGhpbnQtPmN1cl9wb3M7CisKKyAgICAgICAgZWxzZSBpZiAoIHBzaF9wb2ludF9pc19lZGdlX21heCggcG9pbnQgKSApCisgICAgICAgICAgcG9pbnQtPmN1cl91ID0gaGludC0+Y3VyX3BvcyArIGhpbnQtPmN1cl9sZW47CisKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgZGVsdGEgPSBwb2ludC0+b3JnX3UgLSBoaW50LT5vcmdfcG9zOworCisgICAgICAgICAgaWYgKCBkZWx0YSA8PSAwICkKKyAgICAgICAgICAgIHBvaW50LT5jdXJfdSA9IGhpbnQtPmN1cl9wb3MgKyBGVF9NdWxGaXgoIGRlbHRhLCBzY2FsZSApOworCisgICAgICAgICAgZWxzZSBpZiAoIGRlbHRhID49IGhpbnQtPm9yZ19sZW4gKQorICAgICAgICAgICAgcG9pbnQtPmN1cl91ID0gaGludC0+Y3VyX3BvcyArIGhpbnQtPmN1cl9sZW4gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxGaXgoIGRlbHRhIC0gaGludC0+b3JnX2xlbiwgc2NhbGUgKTsKKworICAgICAgICAgIGVsc2UgLyogaGludC0+b3JnX2xlbiA+IDAgKi8KKyAgICAgICAgICAgIHBvaW50LT5jdXJfdSA9IGhpbnQtPmN1cl9wb3MgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxEaXYoIGRlbHRhLCBoaW50LT5jdXJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnQtPm9yZ19sZW4gKTsKKyAgICAgICAgfQorICAgICAgICBwc2hfcG9pbnRfc2V0X2ZpdHRlZCggcG9pbnQgKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworCisjZGVmaW5lICBQU0hfTUFYX1NUUk9OR19JTlRFUk5BTCAgMTYKKworICBzdGF0aWMgdm9pZAorICBwc2hfZ2x5cGhfaW50ZXJwb2xhdGVfbm9ybWFsX3BvaW50cyggUFNIX0dseXBoICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgZGltZW5zaW9uICkKKyAgeworCisjaWYgMQorICAgIC8qIGZpcnN0IHRlY2huaXF1ZTogYSBwb2ludCBpcyBzdHJvbmcgaWYgaXQgaXMgYSBsb2NhbCBleHRyZW11bSAqLworCisgICAgUFNIX0RpbWVuc2lvbiAgZGltICAgID0gJmdseXBoLT5nbG9iYWxzLT5kaW1lbnNpb25bZGltZW5zaW9uXTsKKyAgICBGVF9GaXhlZCAgICAgICBzY2FsZSAgPSBkaW0tPnNjYWxlX211bHQ7CisgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5ID0gZ2x5cGgtPm1lbW9yeTsKKworICAgIFBTSF9Qb2ludCogICAgIHN0cm9uZ3MgICAgID0gTlVMTDsKKyAgICBQU0hfUG9pbnQgICAgICBzdHJvbmdzXzBbUFNIX01BWF9TVFJPTkdfSU5URVJOQUxdOworICAgIEZUX1VJbnQgICAgICAgIG51bV9zdHJvbmdzID0gMDsKKworICAgIFBTSF9Qb2ludCAgICAgIHBvaW50cyA9IGdseXBoLT5wb2ludHM7CisgICAgUFNIX1BvaW50ICAgICAgcG9pbnRzX2VuZCA9IHBvaW50cyArIGdseXBoLT5udW1fcG9pbnRzOworICAgIFBTSF9Qb2ludCAgICAgIHBvaW50OworCisKKyAgICAvKiBmaXJzdCBjb3VudCB0aGUgbnVtYmVyIG9mIHN0cm9uZyBwb2ludHMgKi8KKyAgICBmb3IgKCBwb2ludCA9IHBvaW50czsgcG9pbnQgPCBwb2ludHNfZW5kOyBwb2ludCsrICkKKyAgICB7CisgICAgICBpZiAoIHBzaF9wb2ludF9pc19zdHJvbmcoIHBvaW50ICkgKQorICAgICAgICBudW1fc3Ryb25ncysrOworICAgIH0KKworICAgIGlmICggbnVtX3N0cm9uZ3MgPT0gMCApICAvKiBub3RoaW5nIHRvIGRvIGhlcmUgKi8KKyAgICAgIHJldHVybjsKKworICAgIC8qIGFsbG9jYXRlIGFuIGFycmF5IHRvIHN0b3JlIGEgbGlzdCBvZiBwb2ludHMsICovCisgICAgLyogc3RvcmVkIGluIGluY3JlYXNpbmcgb3JnX3Ugb3JkZXIgICAgICAgICAgICAgKi8KKyAgICBpZiAoIG51bV9zdHJvbmdzIDw9IFBTSF9NQVhfU1RST05HX0lOVEVSTkFMICkKKyAgICAgIHN0cm9uZ3MgPSBzdHJvbmdzXzA7CisgICAgZWxzZQorICAgIHsKKyAgICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgICBpZiAoIEZUX05FV19BUlJBWSggc3Ryb25ncywgbnVtX3N0cm9uZ3MgKSApCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBudW1fc3Ryb25ncyA9IDA7CisgICAgZm9yICggcG9pbnQgPSBwb2ludHM7IHBvaW50IDwgcG9pbnRzX2VuZDsgcG9pbnQrKyApCisgICAgeworICAgICAgUFNIX1BvaW50KiAgaW5zZXJ0OworCisKKyAgICAgIGlmICggIXBzaF9wb2ludF9pc19zdHJvbmcoIHBvaW50ICkgKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgZm9yICggaW5zZXJ0ID0gc3Ryb25ncyArIG51bV9zdHJvbmdzOyBpbnNlcnQgPiBzdHJvbmdzOyBpbnNlcnQtLSApCisgICAgICB7CisgICAgICAgIGlmICggaW5zZXJ0Wy0xXS0+b3JnX3UgPD0gcG9pbnQtPm9yZ191ICkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBpbnNlcnRbMF0gPSBpbnNlcnRbLTFdOworICAgICAgfQorICAgICAgaW5zZXJ0WzBdID0gcG9pbnQ7CisgICAgICBudW1fc3Ryb25ncysrOworICAgIH0KKworICAgIC8qIG5vdyB0cnkgdG8gaW50ZXJwb2xhdGUgYWxsIG5vcm1hbCBwb2ludHMgKi8KKyAgICBmb3IgKCBwb2ludCA9IHBvaW50czsgcG9pbnQgPCBwb2ludHNfZW5kOyBwb2ludCsrICkKKyAgICB7CisgICAgICBpZiAoIHBzaF9wb2ludF9pc19zdHJvbmcoIHBvaW50ICkgKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgLyogc29tZXRpbWVzLCBzb21lIGxvY2FsIGV4dHJlbWEgYXJlIHNtb290aCBwb2ludHMgKi8KKyAgICAgIGlmICggcHNoX3BvaW50X2lzX3Ntb290aCggcG9pbnQgKSApCisgICAgICB7CisgICAgICAgIGlmICggcG9pbnQtPmRpcl9pbiA9PSBQU0hfRElSX05PTkUgICB8fAorICAgICAgICAgICAgIHBvaW50LT5kaXJfaW4gIT0gcG9pbnQtPmRpcl9vdXQgKQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggIXBzaF9wb2ludF9pc19leHRyZW11bSggcG9pbnQgKSAmJgorICAgICAgICAgICAgICFwc2hfcG9pbnRfaXNfaW5mbGV4KCBwb2ludCApICAgKQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHBvaW50LT5mbGFncyAmPSB+UFNIX1BPSU5UX1NNT09USDsKKyAgICAgIH0KKworICAgICAgLyogZmluZCBiZXN0IGVuY2xvc2luZyBwb2ludCBjb29yZGluYXRlcyB0aGVuIGludGVycG9sYXRlICovCisgICAgICB7CisgICAgICAgIFBTSF9Qb2ludCAgIGJlZm9yZSwgYWZ0ZXI7CisgICAgICAgIEZUX1VJbnQgICAgIG5uOworCisKKyAgICAgICAgZm9yICggbm4gPSAwOyBubiA8IG51bV9zdHJvbmdzOyBubisrICkKKyAgICAgICAgICBpZiAoIHN0cm9uZ3Nbbm5dLT5vcmdfdSA+IHBvaW50LT5vcmdfdSApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIG5uID09IDAgKSAgLyogcG9pbnQgYmVmb3JlIHRoZSBmaXJzdCBzdHJvbmcgcG9pbnQgKi8KKyAgICAgICAgeworICAgICAgICAgIGFmdGVyID0gc3Ryb25nc1swXTsKKworICAgICAgICAgIHBvaW50LT5jdXJfdSA9IGFmdGVyLT5jdXJfdSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxGaXgoIHBvaW50LT5vcmdfdSAtIGFmdGVyLT5vcmdfdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBiZWZvcmUgPSBzdHJvbmdzW25uIC0gMV07CisKKyAgICAgICAgICBmb3IgKCBubiA9IG51bV9zdHJvbmdzOyBubiA+IDA7IG5uLS0gKQorICAgICAgICAgICAgaWYgKCBzdHJvbmdzW25uIC0gMV0tPm9yZ191IDwgcG9pbnQtPm9yZ191ICkKKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBpZiAoIG5uID09IG51bV9zdHJvbmdzICkgIC8qIHBvaW50IGlzIGFmdGVyIGxhc3Qgc3Ryb25nIHBvaW50ICovCisgICAgICAgICAgeworICAgICAgICAgICAgYmVmb3JlID0gc3Ryb25nc1tubiAtIDFdOworCisgICAgICAgICAgICBwb2ludC0+Y3VyX3UgPSBiZWZvcmUtPmN1cl91ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTXVsRml4KCBwb2ludC0+b3JnX3UgLSBiZWZvcmUtPm9yZ191LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlICk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9Qb3MgIHU7CisKKworICAgICAgICAgICAgYWZ0ZXIgPSBzdHJvbmdzW25uXTsKKworICAgICAgICAgICAgLyogbm93IGludGVycG9sYXRlIHBvaW50IGJldHdlZW4gYmVmb3JlIGFuZCBhZnRlciAqLworICAgICAgICAgICAgdSA9IHBvaW50LT5vcmdfdTsKKworICAgICAgICAgICAgaWYgKCB1ID09IGJlZm9yZS0+b3JnX3UgKQorICAgICAgICAgICAgICBwb2ludC0+Y3VyX3UgPSBiZWZvcmUtPmN1cl91OworCisgICAgICAgICAgICBlbHNlIGlmICggdSA9PSBhZnRlci0+b3JnX3UgKQorICAgICAgICAgICAgICBwb2ludC0+Y3VyX3UgPSBhZnRlci0+Y3VyX3U7CisKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcG9pbnQtPmN1cl91ID0gYmVmb3JlLT5jdXJfdSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTXVsRGl2KCB1IC0gYmVmb3JlLT5vcmdfdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyLT5jdXJfdSAtIGJlZm9yZS0+Y3VyX3UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlci0+b3JnX3UgLSBiZWZvcmUtPm9yZ191ICk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHBzaF9wb2ludF9zZXRfZml0dGVkKCBwb2ludCApOworICAgICAgfQorICAgIH0KKworICAgIGlmICggc3Ryb25ncyAhPSBzdHJvbmdzXzAgKQorICAgICAgRlRfRlJFRSggc3Ryb25ncyApOworCisjZW5kaWYgLyogMSAqLworCisgIH0KKworCisgIC8qIGludGVycG9sYXRlIG90aGVyIHBvaW50cyAqLworICBzdGF0aWMgdm9pZAorICBwc2hfZ2x5cGhfaW50ZXJwb2xhdGVfb3RoZXJfcG9pbnRzKCBQU0hfR2x5cGggIGdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGRpbWVuc2lvbiApCisgIHsKKyAgICBQU0hfRGltZW5zaW9uICBkaW0gICAgICAgICAgPSAmZ2x5cGgtPmdsb2JhbHMtPmRpbWVuc2lvbltkaW1lbnNpb25dOworICAgIEZUX0ZpeGVkICAgICAgIHNjYWxlICAgICAgICA9IGRpbS0+c2NhbGVfbXVsdDsKKyAgICBGVF9GaXhlZCAgICAgICBkZWx0YSAgICAgICAgPSBkaW0tPnNjYWxlX2RlbHRhOworICAgIFBTSF9Db250b3VyICAgIGNvbnRvdXIgICAgICA9IGdseXBoLT5jb250b3VyczsKKyAgICBGVF9VSW50ICAgICAgICBudW1fY29udG91cnMgPSBnbHlwaC0+bnVtX2NvbnRvdXJzOworCisKKyAgICBmb3IgKCA7IG51bV9jb250b3VycyA+IDA7IG51bV9jb250b3Vycy0tLCBjb250b3VyKysgKQorICAgIHsKKyAgICAgIFBTSF9Qb2ludCAgc3RhcnQgPSBjb250b3VyLT5zdGFydDsKKyAgICAgIFBTSF9Qb2ludCAgZmlyc3QsIG5leHQsIHBvaW50OworICAgICAgRlRfVUludCAgICBmaXRfY291bnQ7CisKKworICAgICAgLyogY291bnQgdGhlIG51bWJlciBvZiBzdHJvbmcgcG9pbnRzIGluIHRoaXMgY29udG91ciAqLworICAgICAgbmV4dCAgICAgID0gc3RhcnQgKyBjb250b3VyLT5jb3VudDsKKyAgICAgIGZpdF9jb3VudCA9IDA7CisgICAgICBmaXJzdCAgICAgPSAwOworCisgICAgICBmb3IgKCBwb2ludCA9IHN0YXJ0OyBwb2ludCA8IG5leHQ7IHBvaW50KysgKQorICAgICAgICBpZiAoIHBzaF9wb2ludF9pc19maXR0ZWQoIHBvaW50ICkgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCAhZmlyc3QgKQorICAgICAgICAgICAgZmlyc3QgPSBwb2ludDsKKworICAgICAgICAgIGZpdF9jb3VudCsrOworICAgICAgICB9CisKKyAgICAgIC8qIGlmIHRoZXJlIGFyZSBsZXNzIHRoYW4gMiBmaXR0ZWQgcG9pbnRzIGluIHRoZSBjb250b3VyLCB3ZSAqLworICAgICAgLyogc2ltcGx5IHNjYWxlIGFuZCBldmVudHVhbGx5IHRyYW5zbGF0ZSB0aGUgY29udG91ciBwb2ludHMgICovCisgICAgICBpZiAoIGZpdF9jb3VudCA8IDIgKQorICAgICAgeworICAgICAgICBpZiAoIGZpdF9jb3VudCA9PSAxICkKKyAgICAgICAgICBkZWx0YSA9IGZpcnN0LT5jdXJfdSAtIEZUX011bEZpeCggZmlyc3QtPm9yZ191LCBzY2FsZSApOworCisgICAgICAgIGZvciAoIHBvaW50ID0gc3RhcnQ7IHBvaW50IDwgbmV4dDsgcG9pbnQrKyApCisgICAgICAgICAgaWYgKCBwb2ludCAhPSBmaXJzdCApCisgICAgICAgICAgICBwb2ludC0+Y3VyX3UgPSBGVF9NdWxGaXgoIHBvaW50LT5vcmdfdSwgc2NhbGUgKSArIGRlbHRhOworCisgICAgICAgIGdvdG8gTmV4dF9Db250b3VyOworICAgICAgfQorCisgICAgICAvKiB0aGVyZSBhcmUgbW9yZSB0aGFuIDIgc3Ryb25nIHBvaW50cyBpbiB0aGlzIGNvbnRvdXI7IHdlICovCisgICAgICAvKiBuZWVkIHRvIGludGVycG9sYXRlIHdlYWsgcG9pbnRzIGJldHdlZW4gdGhlbSAgICAgICAgICAgICovCisgICAgICBzdGFydCA9IGZpcnN0OworICAgICAgZG8KKyAgICAgIHsKKyAgICAgICAgcG9pbnQgPSBmaXJzdDsKKworICAgICAgICAvKiBza2lwIGNvbnNlY3V0aXZlIGZpdHRlZCBwb2ludHMgKi8KKyAgICAgICAgZm9yICg7OykKKyAgICAgICAgeworICAgICAgICAgIG5leHQgPSBmaXJzdC0+bmV4dDsKKyAgICAgICAgICBpZiAoIG5leHQgPT0gc3RhcnQgKQorICAgICAgICAgICAgZ290byBOZXh0X0NvbnRvdXI7CisKKyAgICAgICAgICBpZiAoICFwc2hfcG9pbnRfaXNfZml0dGVkKCBuZXh0ICkgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBmaXJzdCA9IG5leHQ7CisgICAgICAgIH0KKworICAgICAgICAvKiBmaW5kIG5leHQgZml0dGVkIHBvaW50IGFmdGVyIHVuZml0dGVkIG9uZSAqLworICAgICAgICBmb3IgKDs7KQorICAgICAgICB7CisgICAgICAgICAgbmV4dCA9IG5leHQtPm5leHQ7CisgICAgICAgICAgaWYgKCBwc2hfcG9pbnRfaXNfZml0dGVkKCBuZXh0ICkgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKiBub3cgaW50ZXJwb2xhdGUgYmV0d2VlbiB0aGVtICovCisgICAgICAgIHsKKyAgICAgICAgICBGVF9Qb3MgICAgb3JnX2EsIG9yZ19hYiwgY3VyX2EsIGN1cl9hYjsKKyAgICAgICAgICBGVF9Qb3MgICAgb3JnX2MsIG9yZ19hYywgY3VyX2M7CisgICAgICAgICAgRlRfRml4ZWQgIHNjYWxlX2FiOworCisKKyAgICAgICAgICBpZiAoIGZpcnN0LT5vcmdfdSA8PSBuZXh0LT5vcmdfdSApCisgICAgICAgICAgeworICAgICAgICAgICAgb3JnX2EgID0gZmlyc3QtPm9yZ191OworICAgICAgICAgICAgY3VyX2EgID0gZmlyc3QtPmN1cl91OworICAgICAgICAgICAgb3JnX2FiID0gbmV4dC0+b3JnX3UgLSBvcmdfYTsKKyAgICAgICAgICAgIGN1cl9hYiA9IG5leHQtPmN1cl91IC0gY3VyX2E7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBvcmdfYSAgPSBuZXh0LT5vcmdfdTsKKyAgICAgICAgICAgIGN1cl9hICA9IG5leHQtPmN1cl91OworICAgICAgICAgICAgb3JnX2FiID0gZmlyc3QtPm9yZ191IC0gb3JnX2E7CisgICAgICAgICAgICBjdXJfYWIgPSBmaXJzdC0+Y3VyX3UgLSBjdXJfYTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBzY2FsZV9hYiA9IDB4MTAwMDBMOworICAgICAgICAgIGlmICggb3JnX2FiID4gMCApCisgICAgICAgICAgICBzY2FsZV9hYiA9IEZUX0RpdkZpeCggY3VyX2FiLCBvcmdfYWIgKTsKKworICAgICAgICAgIHBvaW50ID0gZmlyc3QtPm5leHQ7CisgICAgICAgICAgZG8KKyAgICAgICAgICB7CisgICAgICAgICAgICBvcmdfYyAgPSBwb2ludC0+b3JnX3U7CisgICAgICAgICAgICBvcmdfYWMgPSBvcmdfYyAtIG9yZ19hOworCisgICAgICAgICAgICBpZiAoIG9yZ19hYyA8PSAwICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogb24gdGhlIGxlZnQgb2YgdGhlIGludGVycG9sYXRpb24gem9uZSAqLworICAgICAgICAgICAgICBjdXJfYyA9IGN1cl9hICsgRlRfTXVsRml4KCBvcmdfYWMsIHNjYWxlICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICggb3JnX2FjID49IG9yZ19hYiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIC8qIG9uIHRoZSByaWdodCBvbiB0aGUgaW50ZXJwb2xhdGlvbiB6b25lICovCisgICAgICAgICAgICAgIGN1cl9jID0gY3VyX2EgKyBjdXJfYWIgKyBGVF9NdWxGaXgoIG9yZ19hYyAtIG9yZ19hYiwgc2NhbGUgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogd2l0aGluIHRoZSBpbnRlcnBvbGF0aW9uIHpvbmUgKi8KKyAgICAgICAgICAgICAgY3VyX2MgPSBjdXJfYSArIEZUX011bEZpeCggb3JnX2FjLCBzY2FsZV9hYiApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwb2ludC0+Y3VyX3UgPSBjdXJfYzsKKworICAgICAgICAgICAgcG9pbnQgPSBwb2ludC0+bmV4dDsKKworICAgICAgICAgIH0gd2hpbGUgKCBwb2ludCAhPSBuZXh0ICk7CisgICAgICAgIH0KKworICAgICAgICAvKiBrZWVwIGdvaW5nIHVudGlsIGFsbCBwb2ludHMgaW4gdGhlIGNvbnRvdXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgKi8KKyAgICAgICAgZmlyc3QgPSBuZXh0OworCisgICAgICB9IHdoaWxlICggZmlyc3QgIT0gc3RhcnQgKTsKKworICAgIE5leHRfQ29udG91cjoKKyAgICAgIDsKKyAgICB9CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgIEhJR0gtTEVWRUwgSU5URVJGQUNFICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIEZUX0Vycm9yCisgIHBzX2hpbnRzX2FwcGx5KCBQU19IaW50cyAgICAgICAgcHNfaGludHMsCisgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgICAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgIFBTSF9HbG9iYWxzICAgICBnbG9iYWxzLAorICAgICAgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgIGhpbnRfbW9kZSApCisgIHsKKyAgICBQU0hfR2x5cGhSZWMgIGdseXBocmVjOworICAgIFBTSF9HbHlwaCAgICAgZ2x5cGggPSAmZ2x5cGhyZWM7CisgICAgRlRfRXJyb3IgICAgICBlcnJvcjsKKyNpZmRlZiBERUJVR19ISU5URVIKKyAgICBGVF9NZW1vcnkgICAgIG1lbW9yeTsKKyNlbmRpZgorICAgIEZUX0ludCAgICAgICAgZGltZW5zaW9uOworCisKKyAgICAvKiBzb21ldGhpbmcgdG8gZG8/ICovCisgICAgaWYgKCBvdXRsaW5lLT5uX3BvaW50cyA9PSAwIHx8IG91dGxpbmUtPm5fY29udG91cnMgPT0gMCApCisgICAgICByZXR1cm4gRlRfRXJyX09rOworCisjaWZkZWYgREVCVUdfSElOVEVSCisKKyAgICBtZW1vcnkgPSBnbG9iYWxzLT5tZW1vcnk7CisKKyAgICBpZiAoIHBzX2RlYnVnX2dseXBoICkKKyAgICB7CisgICAgICBwc2hfZ2x5cGhfZG9uZSggcHNfZGVidWdfZ2x5cGggKTsKKyAgICAgIEZUX0ZSRUUoIHBzX2RlYnVnX2dseXBoICk7CisgICAgfQorCisgICAgaWYgKCBGVF9ORVcoIGdseXBoICkgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgcHNfZGVidWdfZ2x5cGggPSBnbHlwaDsKKworI2VuZGlmIC8qIERFQlVHX0hJTlRFUiAqLworCisgICAgZXJyb3IgPSBwc2hfZ2x5cGhfaW5pdCggZ2x5cGgsIG91dGxpbmUsIHBzX2hpbnRzLCBnbG9iYWxzICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiB0cnkgdG8gb3B0aW1pemUgdGhlIHlfc2NhbGUgc28gdGhhdCB0aGUgdG9wIG9mIG5vbi1jYXBpdGFsIGxldHRlcnMKKyAgICAgKiBpcyBhbGlnbmVkIG9uIGEgcGl4ZWwgYm91bmRhcnkgd2hlbmV2ZXIgcG9zc2libGUKKyAgICAgKi8KKyAgICB7CisgICAgICBQU0hfRGltZW5zaW9uICBkaW1feCA9ICZnbHlwaC0+Z2xvYmFscy0+ZGltZW5zaW9uWzBdOworICAgICAgUFNIX0RpbWVuc2lvbiAgZGltX3kgPSAmZ2x5cGgtPmdsb2JhbHMtPmRpbWVuc2lvblsxXTsKKworICAgICAgRlRfRml4ZWQgIHhfc2NhbGUgPSBkaW1feC0+c2NhbGVfbXVsdDsKKyAgICAgIEZUX0ZpeGVkICB5X3NjYWxlID0gZGltX3ktPnNjYWxlX211bHQ7CisKKyAgICAgIEZUX0ZpeGVkICBvbGRfeF9zY2FsZSA9IHhfc2NhbGU7CisgICAgICBGVF9GaXhlZCAgb2xkX3lfc2NhbGUgPSB5X3NjYWxlOworCisgICAgICBGVF9GaXhlZCAgc2NhbGVkOworICAgICAgRlRfRml4ZWQgIGZpdHRlZDsKKworICAgICAgRlRfQm9vbCAgcmVzY2FsZSA9IEZBTFNFOworCisKKyAgICAgIHNjYWxlZCA9IEZUX011bEZpeCggZ2xvYmFscy0+Ymx1ZXMubm9ybWFsX3RvcC56b25lcy0+b3JnX3JlZiwgeV9zY2FsZSApOworICAgICAgZml0dGVkID0gRlRfUElYX1JPVU5EKCBzY2FsZWQgKTsKKworICAgICAgaWYgKCBmaXR0ZWQgIT0gMCAmJiBzY2FsZWQgIT0gZml0dGVkICkKKyAgICAgIHsKKyAgICAgICAgcmVzY2FsZSA9IFRSVUU7CisKKyAgICAgICAgeV9zY2FsZSA9IEZUX011bERpdiggeV9zY2FsZSwgZml0dGVkLCBzY2FsZWQgKTsKKworICAgICAgICBpZiAoIGZpdHRlZCA8IHNjYWxlZCApCisgICAgICAgICAgeF9zY2FsZSAtPSB4X3NjYWxlIC8gNTA7CisKKyAgICAgICAgcHNoX2dsb2JhbHNfc2V0X3NjYWxlKCBnbHlwaC0+Z2xvYmFscywgeF9zY2FsZSwgeV9zY2FsZSwgMCwgMCApOworICAgICAgfQorCisgICAgICBnbHlwaC0+ZG9faG9yel9oaW50cyA9IDE7CisgICAgICBnbHlwaC0+ZG9fdmVydF9oaW50cyA9IDE7CisKKyAgICAgIGdseXBoLT5kb19ob3J6X3NuYXBwaW5nID0gRlRfQk9PTCggaGludF9tb2RlID09IEZUX1JFTkRFUl9NT0RFX01PTk8gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludF9tb2RlID09IEZUX1JFTkRFUl9NT0RFX0xDRCAgKTsKKworICAgICAgZ2x5cGgtPmRvX3ZlcnRfc25hcHBpbmcgPSBGVF9CT09MKCBoaW50X21vZGUgPT0gRlRfUkVOREVSX01PREVfTU9OTyAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludF9tb2RlID09IEZUX1JFTkRFUl9NT0RFX0xDRF9WICk7CisKKyAgICAgIGdseXBoLT5kb19zdGVtX2FkanVzdCAgID0gRlRfQk9PTCggaGludF9tb2RlICE9IEZUX1JFTkRFUl9NT0RFX0xJR0hUICk7CisKKyAgICAgIGZvciAoIGRpbWVuc2lvbiA9IDA7IGRpbWVuc2lvbiA8IDI7IGRpbWVuc2lvbisrICkKKyAgICAgIHsKKyAgICAgICAgLyogbG9hZCBvdXRsaW5lIGNvb3JkaW5hdGVzIGludG8gZ2x5cGggKi8KKyAgICAgICAgcHNoX2dseXBoX2xvYWRfcG9pbnRzKCBnbHlwaCwgZGltZW5zaW9uICk7CisKKyAgICAgICAgLyogY29tcHV0ZSBsb2NhbCBleHRyZW1hICovCisgICAgICAgIHBzaF9nbHlwaF9jb21wdXRlX2V4dHJlbWEoIGdseXBoICk7CisKKyAgICAgICAgLyogY29tcHV0ZSBhbGlnbmVkIHN0ZW0vaGludHMgcG9zaXRpb25zICovCisgICAgICAgIHBzaF9oaW50X3RhYmxlX2FsaWduX2hpbnRzKCAmZ2x5cGgtPmhpbnRfdGFibGVzW2RpbWVuc2lvbl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaC0+Z2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoICk7CisKKyAgICAgICAgLyogZmluZCBzdHJvbmcgcG9pbnRzLCBhbGlnbiB0aGVtLCB0aGVuIGludGVycG9sYXRlIG90aGVycyAqLworICAgICAgICBwc2hfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzKCBnbHlwaCwgZGltZW5zaW9uICk7CisgICAgICAgIGlmICggZGltZW5zaW9uID09IDEgKQorICAgICAgICAgIHBzaF9nbHlwaF9maW5kX2JsdWVfcG9pbnRzKCAmZ2xvYmFscy0+Ymx1ZXMsIGdseXBoICk7CisgICAgICAgIHBzaF9nbHlwaF9pbnRlcnBvbGF0ZV9zdHJvbmdfcG9pbnRzKCBnbHlwaCwgZGltZW5zaW9uICk7CisgICAgICAgIHBzaF9nbHlwaF9pbnRlcnBvbGF0ZV9ub3JtYWxfcG9pbnRzKCBnbHlwaCwgZGltZW5zaW9uICk7CisgICAgICAgIHBzaF9nbHlwaF9pbnRlcnBvbGF0ZV9vdGhlcl9wb2ludHMoIGdseXBoLCBkaW1lbnNpb24gKTsKKworICAgICAgICAvKiBzYXZlIGhpbnRlZCBjb29yZGluYXRlcyBiYWNrIHRvIG91dGxpbmUgKi8KKyAgICAgICAgcHNoX2dseXBoX3NhdmVfcG9pbnRzKCBnbHlwaCwgZGltZW5zaW9uICk7CisKKyAgICAgICAgaWYgKCByZXNjYWxlICkKKyAgICAgICAgICBwc2hfZ2xvYmFsc19zZXRfc2NhbGUoIGdseXBoLT5nbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3hfc2NhbGUsIG9sZF95X3NjYWxlLCAwLCAwICk7CisgICAgICB9CisgICAgfQorCisgIEV4aXQ6CisKKyNpZm5kZWYgREVCVUdfSElOVEVSCisgICAgcHNoX2dseXBoX2RvbmUoIGdseXBoICk7CisjZW5kaWYKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hhbGdvLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL3BzaGFsZ28uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzBmMzFlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hhbGdvLmgKQEAgLTAsMCArMSwyNDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHBzaGFsZ28uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBQb3N0U2NyaXB0IGhpbnRpbmcgYWxnb3JpdGhtIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMS0yMDAzLCAyMDA4LCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1BTSEFMR09fSF9fCisjZGVmaW5lIF9fUFNIQUxHT19IX18KKworCisjaW5jbHVkZSAicHNocmVjLmgiCisjaW5jbHVkZSAicHNoZ2xvYi5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyogaGFuZGxlIHRvIEhpbnQgc3RydWN0dXJlICovCisgIHR5cGVkZWYgc3RydWN0IFBTSF9IaW50UmVjXyogIFBTSF9IaW50OworCisgIC8qIGhpbnQgYml0LWZsYWdzICovCisgIHR5cGVkZWYgZW51bSAgUFNIX0hpbnRfRmxhZ3NfCisgIHsKKyAgICBQU0hfSElOVF9HSE9TVCAgPSBQU19ISU5UX0ZMQUdfR0hPU1QsCisgICAgUFNIX0hJTlRfQk9UVE9NID0gUFNfSElOVF9GTEFHX0JPVFRPTSwKKyAgICBQU0hfSElOVF9BQ1RJVkUgPSA0LAorICAgIFBTSF9ISU5UX0ZJVFRFRCA9IDgKKworICB9IFBTSF9IaW50X0ZsYWdzOworCisKKyNkZWZpbmUgcHNoX2hpbnRfaXNfYWN0aXZlKCB4ICkgICggKCAoeCktPmZsYWdzICYgUFNIX0hJTlRfQUNUSVZFICkgIT0gMCApCisjZGVmaW5lIHBzaF9oaW50X2lzX2dob3N0KCB4ICkgICAoICggKHgpLT5mbGFncyAmIFBTSF9ISU5UX0dIT1NUICApICE9IDAgKQorI2RlZmluZSBwc2hfaGludF9pc19maXR0ZWQoIHggKSAgKCAoICh4KS0+ZmxhZ3MgJiBQU0hfSElOVF9GSVRURUQgKSAhPSAwICkKKworI2RlZmluZSBwc2hfaGludF9hY3RpdmF0ZSggeCApICAgICh4KS0+ZmxhZ3MgfD0gIFBTSF9ISU5UX0FDVElWRQorI2RlZmluZSBwc2hfaGludF9kZWFjdGl2YXRlKCB4ICkgICh4KS0+ZmxhZ3MgJj0gflBTSF9ISU5UX0FDVElWRQorI2RlZmluZSBwc2hfaGludF9zZXRfZml0dGVkKCB4ICkgICh4KS0+ZmxhZ3MgfD0gIFBTSF9ISU5UX0ZJVFRFRAorCisgIC8qIGhpbnQgc3RydWN0dXJlICovCisgIHR5cGVkZWYgc3RydWN0ICBQU0hfSGludFJlY18KKyAgeworICAgIEZUX0ludCAgICBvcmdfcG9zOworICAgIEZUX0ludCAgICBvcmdfbGVuOworICAgIEZUX1BvcyAgICBjdXJfcG9zOworICAgIEZUX1BvcyAgICBjdXJfbGVuOworICAgIEZUX1VJbnQgICBmbGFnczsKKyAgICBQU0hfSGludCAgcGFyZW50OworICAgIEZUX0ludCAgICBvcmRlcjsKKworICB9IFBTSF9IaW50UmVjOworCisKKyAgLyogdGhpcyBpcyBhbiBpbnRlcnBvbGF0aW9uIHpvbmUgdXNlZCBmb3Igc3Ryb25nIHBvaW50czsgICovCisgIC8qIHdlYWsgcG9pbnRzIGFyZSBpbnRlcnBvbGF0ZWQgYWNjb3JkaW5nIHRvIHRoZWlyIHN0cm9uZyAqLworICAvKiBuZWlnaGJvdXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTSF9ab25lUmVjXworICB7CisgICAgRlRfRml4ZWQgIHNjYWxlOworICAgIEZUX0ZpeGVkICBkZWx0YTsKKyAgICBGVF9Qb3MgICAgbWluOworICAgIEZUX1BvcyAgICBtYXg7CisKKyAgfSBQU0hfWm9uZVJlYywgKlBTSF9ab25lOworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTSF9IaW50X1RhYmxlUmVjXworICB7CisgICAgRlRfVUludCAgICAgICAgbWF4X2hpbnRzOworICAgIEZUX1VJbnQgICAgICAgIG51bV9oaW50czsKKyAgICBQU0hfSGludCAgICAgICBoaW50czsKKyAgICBQU0hfSGludCogICAgICBzb3J0OworICAgIFBTSF9IaW50KiAgICAgIHNvcnRfZ2xvYmFsOworICAgIEZUX1VJbnQgICAgICAgIG51bV96b25lczsKKyAgICBQU0hfWm9uZVJlYyogICB6b25lczsKKyAgICBQU0hfWm9uZSAgICAgICB6b25lOworICAgIFBTX01hc2tfVGFibGUgIGhpbnRfbWFza3M7CisgICAgUFNfTWFza19UYWJsZSAgY291bnRlcl9tYXNrczsKKworICB9IFBTSF9IaW50X1RhYmxlUmVjLCAqUFNIX0hpbnRfVGFibGU7CisKKworICB0eXBlZGVmIHN0cnVjdCBQU0hfUG9pbnRSZWNfKiAgICBQU0hfUG9pbnQ7CisgIHR5cGVkZWYgc3RydWN0IFBTSF9Db250b3VyUmVjXyogIFBTSF9Db250b3VyOworCisgIGVudW0KKyAgeworICAgIFBTSF9ESVJfTk9ORSAgPSAgNCwKKyAgICBQU0hfRElSX1VQICAgID0gLTEsCisgICAgUFNIX0RJUl9ET1dOICA9ICAxLAorICAgIFBTSF9ESVJfTEVGVCAgPSAtMiwKKyAgICBQU0hfRElSX1JJR0hUID0gIDIKKyAgfTsKKworI2RlZmluZSBQU0hfRElSX0hPUklaT05UQUwgIDIKKyNkZWZpbmUgUFNIX0RJUl9WRVJUSUNBTCAgICAxCisKKyNkZWZpbmUgUFNIX0RJUl9DT01QQVJFKCBkMSwgZDIgKSAgICggKGQxKSA9PSAoZDIpIHx8IChkMSkgPT0gLShkMikgKQorI2RlZmluZSBQU0hfRElSX0lTX0hPUklaT05UQUwoIGQgKSAgUFNIX0RJUl9DT01QQVJFKCBkLCBQU0hfRElSX0hPUklaT05UQUwgKQorI2RlZmluZSBQU0hfRElSX0lTX1ZFUlRJQ0FMKCBkICkgICAgUFNIX0RJUl9DT01QQVJFKCBkLCBQU0hfRElSX1ZFUlRJQ0FMICkKKworCisgLyogdGhlIGZvbGxvd2luZyBiaXQtZmxhZ3MgYXJlIGNvbXB1dGVkIG9uY2UgYnkgdGhlIGdseXBoICovCisgLyogYW5hbHl6ZXIsIGZvciBib3RoIGRpbWVuc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIGVudW0KKyAgeworICAgIFBTSF9QT0lOVF9PRkYgICAgPSAxLCAgIC8qIHBvaW50IGlzIG9mZiB0aGUgY3VydmUgKi8KKyAgICBQU0hfUE9JTlRfU01PT1RIID0gMiwgICAvKiBwb2ludCBpcyBzbW9vdGggICAgICAgICovCisgICAgUFNIX1BPSU5UX0lORkxFWCA9IDQgICAgLyogcG9pbnQgaXMgaW5mbGVjdGlvbiAgICAqLworICB9OworCisjZGVmaW5lIHBzaF9wb2ludF9pc19zbW9vdGgoIHAgKSAgKCAocCktPmZsYWdzICYgUFNIX1BPSU5UX1NNT09USCApCisjZGVmaW5lIHBzaF9wb2ludF9pc19vZmYoIHAgKSAgICAgKCAocCktPmZsYWdzICYgUFNIX1BPSU5UX09GRiAgICApCisjZGVmaW5lIHBzaF9wb2ludF9pc19pbmZsZXgoIHAgKSAgKCAocCktPmZsYWdzICYgUFNIX1BPSU5UX0lORkxFWCApCisKKyNkZWZpbmUgcHNoX3BvaW50X3NldF9zbW9vdGgoIHAgKSAgKHApLT5mbGFncyB8PSBQU0hfUE9JTlRfU01PT1RICisjZGVmaW5lIHBzaF9wb2ludF9zZXRfb2ZmKCBwICkgICAgIChwKS0+ZmxhZ3MgfD0gUFNIX1BPSU5UX09GRgorI2RlZmluZSBwc2hfcG9pbnRfc2V0X2luZmxleCggcCApICAocCktPmZsYWdzIHw9IFBTSF9QT0lOVF9JTkZMRVgKKworICAvKiB0aGUgZm9sbG93aW5nIGJpdC1mbGFncyBhcmUgcmUtY29tcHV0ZWQgZm9yIGVhY2ggZGltZW5zaW9uICovCisgIGVudW0KKyAgeworICAgIFBTSF9QT0lOVF9TVFJPTkcgICA9IDE2LCAgIC8qIHBvaW50IGlzIHN0cm9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgUFNIX1BPSU5UX0ZJVFRFRCAgID0gMzIsICAgLyogcG9pbnQgaXMgYWxyZWFkeSBmaXR0ZWQgICAgICAgICAgICAgICAgICAgKi8KKyAgICBQU0hfUE9JTlRfRVhUUkVNVU0gPSA2NCwgICAvKiBwb2ludCBpcyBsb2NhbCBleHRyZW11bSAgICAgICAgICAgICAgICAgICAqLworICAgIFBTSF9QT0lOVF9QT1NJVElWRSA9IDEyOCwgIC8qIGV4dHJlbXVtIGhhcyBwb3NpdGl2ZSBjb250b3VyIGZsb3cgICAgICAgICovCisgICAgUFNIX1BPSU5UX05FR0FUSVZFID0gMjU2LCAgLyogZXh0cmVtdW0gaGFzIG5lZ2F0aXZlIGNvbnRvdXIgZmxvdyAgICAgICAgKi8KKyAgICBQU0hfUE9JTlRfRURHRV9NSU4gPSA1MTIsICAvKiBwb2ludCBpcyBhbGlnbmVkIHRvIGxlZnQvYm90dG9tIHN0ZW0gZWRnZSAqLworICAgIFBTSF9QT0lOVF9FREdFX01BWCA9IDEwMjQgIC8qIHBvaW50IGlzIGFsaWduZWQgdG8gdG9wL3JpZ2h0IHN0ZW0gZWRnZSAgICovCisgIH07CisKKyNkZWZpbmUgcHNoX3BvaW50X2lzX3N0cm9uZyggcCApICAgICggKHApLT5mbGFnczIgJiBQU0hfUE9JTlRfU1RST05HICkKKyNkZWZpbmUgcHNoX3BvaW50X2lzX2ZpdHRlZCggcCApICAgICggKHApLT5mbGFnczIgJiBQU0hfUE9JTlRfRklUVEVEICkKKyNkZWZpbmUgcHNoX3BvaW50X2lzX2V4dHJlbXVtKCBwICkgICggKHApLT5mbGFnczIgJiBQU0hfUE9JTlRfRVhUUkVNVU0gKQorI2RlZmluZSBwc2hfcG9pbnRfaXNfcG9zaXRpdmUoIHAgKSAgKCAocCktPmZsYWdzMiAmIFBTSF9QT0lOVF9QT1NJVElWRSApCisjZGVmaW5lIHBzaF9wb2ludF9pc19uZWdhdGl2ZSggcCApICAoIChwKS0+ZmxhZ3MyICYgUFNIX1BPSU5UX05FR0FUSVZFICkKKyNkZWZpbmUgcHNoX3BvaW50X2lzX2VkZ2VfbWluKCBwICkgICggKHApLT5mbGFnczIgJiBQU0hfUE9JTlRfRURHRV9NSU4gKQorI2RlZmluZSBwc2hfcG9pbnRfaXNfZWRnZV9tYXgoIHAgKSAgKCAocCktPmZsYWdzMiAmIFBTSF9QT0lOVF9FREdFX01BWCApCisKKyNkZWZpbmUgcHNoX3BvaW50X3NldF9zdHJvbmcoIHAgKSAgICAocCktPmZsYWdzMiB8PSBQU0hfUE9JTlRfU1RST05HCisjZGVmaW5lIHBzaF9wb2ludF9zZXRfZml0dGVkKCBwICkgICAgKHApLT5mbGFnczIgfD0gUFNIX1BPSU5UX0ZJVFRFRAorI2RlZmluZSBwc2hfcG9pbnRfc2V0X2V4dHJlbXVtKCBwICkgIChwKS0+ZmxhZ3MyIHw9IFBTSF9QT0lOVF9FWFRSRU1VTQorI2RlZmluZSBwc2hfcG9pbnRfc2V0X3Bvc2l0aXZlKCBwICkgIChwKS0+ZmxhZ3MyIHw9IFBTSF9QT0lOVF9QT1NJVElWRQorI2RlZmluZSBwc2hfcG9pbnRfc2V0X25lZ2F0aXZlKCBwICkgIChwKS0+ZmxhZ3MyIHw9IFBTSF9QT0lOVF9ORUdBVElWRQorI2RlZmluZSBwc2hfcG9pbnRfc2V0X2VkZ2VfbWluKCBwICkgIChwKS0+ZmxhZ3MyIHw9IFBTSF9QT0lOVF9FREdFX01JTgorI2RlZmluZSBwc2hfcG9pbnRfc2V0X2VkZ2VfbWF4KCBwICkgIChwKS0+ZmxhZ3MyIHw9IFBTSF9QT0lOVF9FREdFX01BWAorCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTSF9Qb2ludFJlY18KKyAgeworICAgIFBTSF9Qb2ludCAgICBwcmV2OworICAgIFBTSF9Qb2ludCAgICBuZXh0OworICAgIFBTSF9Db250b3VyICBjb250b3VyOworICAgIEZUX1VJbnQgICAgICBmbGFnczsKKyAgICBGVF9VSW50ICAgICAgZmxhZ3MyOworICAgIEZUX0NoYXIgICAgICBkaXJfaW47CisgICAgRlRfQ2hhciAgICAgIGRpcl9vdXQ7CisgICAgUFNIX0hpbnQgICAgIGhpbnQ7CisgICAgRlRfUG9zICAgICAgIG9yZ191OworICAgIEZUX1BvcyAgICAgICBvcmdfdjsKKyAgICBGVF9Qb3MgICAgICAgY3VyX3U7CisjaWZkZWYgREVCVUdfSElOVEVSCisgICAgRlRfUG9zICAgICAgIG9yZ194OworICAgIEZUX1BvcyAgICAgICBjdXJfeDsKKyAgICBGVF9Qb3MgICAgICAgb3JnX3k7CisgICAgRlRfUG9zICAgICAgIGN1cl95OworICAgIEZUX1VJbnQgICAgICBmbGFnc194OworICAgIEZUX1VJbnQgICAgICBmbGFnc195OworI2VuZGlmCisKKyAgfSBQU0hfUG9pbnRSZWM7CisKKworICB0eXBlZGVmIHN0cnVjdCAgUFNIX0NvbnRvdXJSZWNfCisgIHsKKyAgICBQU0hfUG9pbnQgIHN0YXJ0OworICAgIEZUX1VJbnQgICAgY291bnQ7CisKKyAgfSBQU0hfQ29udG91clJlYzsKKworCisgIHR5cGVkZWYgc3RydWN0ICBQU0hfR2x5cGhSZWNfCisgIHsKKyAgICBGVF9VSW50ICAgICAgICAgICAgbnVtX3BvaW50czsKKyAgICBGVF9VSW50ICAgICAgICAgICAgbnVtX2NvbnRvdXJzOworCisgICAgUFNIX1BvaW50ICAgICAgICAgIHBvaW50czsKKyAgICBQU0hfQ29udG91ciAgICAgICAgY29udG91cnM7CisKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5OworICAgIEZUX091dGxpbmUqICAgICAgICBvdXRsaW5lOworICAgIFBTSF9HbG9iYWxzICAgICAgICBnbG9iYWxzOworICAgIFBTSF9IaW50X1RhYmxlUmVjICBoaW50X3RhYmxlc1syXTsKKworICAgIEZUX0Jvb2wgICAgICAgICAgICB2ZXJ0aWNhbDsKKyAgICBGVF9JbnQgICAgICAgICAgICAgbWFqb3JfZGlyOworICAgIEZUX0ludCAgICAgICAgICAgICBtaW5vcl9kaXI7CisKKyAgICBGVF9Cb29sICAgICAgICAgICAgZG9faG9yel9oaW50czsKKyAgICBGVF9Cb29sICAgICAgICAgICAgZG9fdmVydF9oaW50czsKKyAgICBGVF9Cb29sICAgICAgICAgICAgZG9faG9yel9zbmFwcGluZzsKKyAgICBGVF9Cb29sICAgICAgICAgICAgZG9fdmVydF9zbmFwcGluZzsKKyAgICBGVF9Cb29sICAgICAgICAgICAgZG9fc3RlbV9hZGp1c3Q7CisKKyAgfSBQU0hfR2x5cGhSZWMsICpQU0hfR2x5cGg7CisKKworI2lmZGVmIERFQlVHX0hJTlRFUgorICBleHRlcm4gUFNIX0hpbnRfVGFibGUgIHBzX2RlYnVnX2hpbnRfdGFibGU7CisKKyAgdHlwZWRlZiB2b2lkCisgICgqUFNIX0hpbnRGdW5jKSggUFNIX0hpbnQgIGhpbnQsCisgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgIHZlcnRpY2FsICk7CisKKyAgZXh0ZXJuIFBTSF9IaW50RnVuYyAgICBwc19kZWJ1Z19oaW50X2Z1bmM7CisKKyAgZXh0ZXJuIFBTSF9HbHlwaCAgICAgICBwc19kZWJ1Z19nbHlwaDsKKyNlbmRpZgorCisKKyAgZXh0ZXJuIEZUX0Vycm9yCisgIHBzX2hpbnRzX2FwcGx5KCBQU19IaW50cyAgICAgICAgcHNfaGludHMsCisgICAgICAgICAgICAgICAgICBGVF9PdXRsaW5lKiAgICAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgIFBTSF9HbG9iYWxzICAgICBnbG9iYWxzLAorICAgICAgICAgICAgICAgICAgRlRfUmVuZGVyX01vZGUgIGhpbnRfbW9kZSApOworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19QU0hBTEdPX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hnbG9iLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL3BzaGdsb2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTA4NmRjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hnbG9iLmMKQEAgLTAsMCArMSw4MDUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHBzaGdsb2IuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBQb3N0U2NyaXB0IGhpbnRlciBnbG9iYWwgaGludGluZyBtYW5hZ2VtZW50IChib2R5KS4gICAgICAgICAgICAgICAgICAqLworLyogICAgSW5zcGlyZWQgYnkgdGhlIG5ldyBhdXRvLWhpbnRlciBtb2R1bGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEtMjAwNCwgMjAwNiwgMjAxMCwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkICAgICAgICAqLworLyogIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAicHNoZ2xvYi5oIgorCisjaWZkZWYgREVCVUdfSElOVEVSCisgIFBTSF9HbG9iYWxzICBwc19kZWJ1Z19nbG9iYWxzID0gMDsKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICBTVEFOREFSRCBXSURUSFMgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBzY2FsZSB0aGUgd2lkdGhzL2hlaWdodHMgdGFibGUgKi8KKyAgc3RhdGljIHZvaWQKKyAgcHNoX2dsb2JhbHNfc2NhbGVfd2lkdGhzKCBQU0hfR2xvYmFscyAgZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgZGlyZWN0aW9uICkKKyAgeworICAgIFBTSF9EaW1lbnNpb24gIGRpbSAgID0gJmdsb2JhbHMtPmRpbWVuc2lvbltkaXJlY3Rpb25dOworICAgIFBTSF9XaWR0aHMgICAgIHN0ZHcgID0gJmRpbS0+c3RkdzsKKyAgICBGVF9VSW50ICAgICAgICBjb3VudCA9IHN0ZHctPmNvdW50OworICAgIFBTSF9XaWR0aCAgICAgIHdpZHRoID0gc3Rkdy0+d2lkdGhzOworICAgIFBTSF9XaWR0aCAgICAgIHN0YW5kID0gd2lkdGg7ICAgICAgICAgICAgICAgLyogc3RhbmRhcmQgd2lkdGgvaGVpZ2h0ICovCisgICAgRlRfRml4ZWQgICAgICAgc2NhbGUgPSBkaW0tPnNjYWxlX211bHQ7CisKKworICAgIGlmICggY291bnQgPiAwICkKKyAgICB7CisgICAgICB3aWR0aC0+Y3VyID0gRlRfTXVsRml4KCB3aWR0aC0+b3JnLCBzY2FsZSApOworICAgICAgd2lkdGgtPmZpdCA9IEZUX1BJWF9ST1VORCggd2lkdGgtPmN1ciApOworCisgICAgICB3aWR0aCsrOworICAgICAgY291bnQtLTsKKworICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0sIHdpZHRoKysgKQorICAgICAgeworICAgICAgICBGVF9Qb3MgIHcsIGRpc3Q7CisKKworICAgICAgICB3ICAgID0gRlRfTXVsRml4KCB3aWR0aC0+b3JnLCBzY2FsZSApOworICAgICAgICBkaXN0ID0gdyAtIHN0YW5kLT5jdXI7CisKKyAgICAgICAgaWYgKCBkaXN0IDwgMCApCisgICAgICAgICAgZGlzdCA9IC1kaXN0OworCisgICAgICAgIGlmICggZGlzdCA8IDEyOCApCisgICAgICAgICAgdyA9IHN0YW5kLT5jdXI7CisKKyAgICAgICAgd2lkdGgtPmN1ciA9IHc7CisgICAgICAgIHdpZHRoLT5maXQgPSBGVF9QSVhfUk9VTkQoIHcgKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworCisjaWYgMAorCisgIC8qIG9yZ193aWR0aCBpcyBpcyBmb250IHVuaXRzLCByZXN1bHQgaW4gZGV2aWNlIHBpeGVscywgMjYuNiBmb3JtYXQgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9Qb3MgKQorICBwc2hfZGltZW5zaW9uX3NuYXBfd2lkdGgoIFBTSF9EaW1lbnNpb24gIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBvcmdfd2lkdGggKQorICB7CisgICAgRlRfVUludCAgbjsKKyAgICBGVF9Qb3MgICB3aWR0aCAgICAgPSBGVF9NdWxGaXgoIG9yZ193aWR0aCwgZGltZW5zaW9uLT5zY2FsZV9tdWx0ICk7CisgICAgRlRfUG9zICAgYmVzdCAgICAgID0gNjQgKyAzMiArIDI7CisgICAgRlRfUG9zICAgcmVmZXJlbmNlID0gd2lkdGg7CisKKworICAgIGZvciAoIG4gPSAwOyBuIDwgZGltZW5zaW9uLT5zdGR3LmNvdW50OyBuKysgKQorICAgIHsKKyAgICAgIEZUX1BvcyAgdzsKKyAgICAgIEZUX1BvcyAgZGlzdDsKKworCisgICAgICB3ID0gZGltZW5zaW9uLT5zdGR3LndpZHRoc1tuXS5jdXI7CisgICAgICBkaXN0ID0gd2lkdGggLSB3OworICAgICAgaWYgKCBkaXN0IDwgMCApCisgICAgICAgIGRpc3QgPSAtZGlzdDsKKyAgICAgIGlmICggZGlzdCA8IGJlc3QgKQorICAgICAgeworICAgICAgICBiZXN0ICAgICAgPSBkaXN0OworICAgICAgICByZWZlcmVuY2UgPSB3OworICAgICAgfQorICAgIH0KKworICAgIGlmICggd2lkdGggPj0gcmVmZXJlbmNlICkKKyAgICB7CisgICAgICB3aWR0aCAtPSAweDIxOworICAgICAgaWYgKCB3aWR0aCA8IHJlZmVyZW5jZSApCisgICAgICAgIHdpZHRoID0gcmVmZXJlbmNlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgd2lkdGggKz0gMHgyMTsKKyAgICAgIGlmICggd2lkdGggPiByZWZlcmVuY2UgKQorICAgICAgICB3aWR0aCA9IHJlZmVyZW5jZTsKKyAgICB9CisKKyAgICByZXR1cm4gd2lkdGg7CisgIH0KKworI2VuZGlmIC8qIDAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgQkxVRSBaT05FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyB2b2lkCisgIHBzaF9ibHVlc19zZXRfem9uZXNfMCggUFNIX0JsdWVzICAgICAgIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgaXNfb3RoZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICByZWFkX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1Nob3J0KiAgICAgICByZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgIFBTSF9CbHVlX1RhYmxlICB0b3BfdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFNIX0JsdWVfVGFibGUgIGJvdF90YWJsZSApCisgIHsKKyAgICBGVF9VSW50ICBjb3VudF90b3AgPSB0b3BfdGFibGUtPmNvdW50OworICAgIEZUX1VJbnQgIGNvdW50X2JvdCA9IGJvdF90YWJsZS0+Y291bnQ7CisgICAgRlRfQm9vbCAgZmlyc3QgICAgID0gMTsKKworICAgIEZUX1VOVVNFRCggdGFyZ2V0ICk7CisKKworICAgIGZvciAoIDsgcmVhZF9jb3VudCA+IDE7IHJlYWRfY291bnQgLT0gMiApCisgICAgeworICAgICAgRlRfSW50ICAgICAgICAgcmVmZXJlbmNlLCBkZWx0YTsKKyAgICAgIEZUX1VJbnQgICAgICAgIGNvdW50OworICAgICAgUFNIX0JsdWVfWm9uZSAgem9uZXMsIHpvbmU7CisgICAgICBGVF9Cb29sICAgICAgICB0b3A7CisKKworICAgICAgLyogcmVhZCBibHVlIHpvbmUgZW50cnksIGFuZCBzZWxlY3QgdGFyZ2V0IHRvcC9ib3R0b20gem9uZSAqLworICAgICAgdG9wID0gMDsKKyAgICAgIGlmICggZmlyc3QgfHwgaXNfb3RoZXJzICkKKyAgICAgIHsKKyAgICAgICAgcmVmZXJlbmNlID0gcmVhZFsxXTsKKyAgICAgICAgZGVsdGEgICAgID0gcmVhZFswXSAtIHJlZmVyZW5jZTsKKworICAgICAgICB6b25lcyA9IGJvdF90YWJsZS0+em9uZXM7CisgICAgICAgIGNvdW50ID0gY291bnRfYm90OworICAgICAgICBmaXJzdCA9IDA7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHJlZmVyZW5jZSA9IHJlYWRbMF07CisgICAgICAgIGRlbHRhICAgICA9IHJlYWRbMV0gLSByZWZlcmVuY2U7CisKKyAgICAgICAgem9uZXMgPSB0b3BfdGFibGUtPnpvbmVzOworICAgICAgICBjb3VudCA9IGNvdW50X3RvcDsKKyAgICAgICAgdG9wICAgPSAxOworICAgICAgfQorCisgICAgICAvKiBpbnNlcnQgaW50byBzb3J0ZWQgdGFibGUgKi8KKyAgICAgIHpvbmUgPSB6b25lczsKKyAgICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCB6b25lKysgKQorICAgICAgeworICAgICAgICBpZiAoIHJlZmVyZW5jZSA8IHpvbmUtPm9yZ19yZWYgKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICggcmVmZXJlbmNlID09IHpvbmUtPm9yZ19yZWYgKQorICAgICAgICB7CisgICAgICAgICAgRlRfSW50ICBkZWx0YTAgPSB6b25lLT5vcmdfZGVsdGE7CisKKworICAgICAgICAgIC8qIHdlIGhhdmUgdHdvIHpvbmVzIG9uIHRoZSBzYW1lIHJlZmVyZW5jZSBwb3NpdGlvbiAtLSAqLworICAgICAgICAgIC8qIG9ubHkga2VlcCB0aGUgbGFyZ2VzdCBvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIGlmICggZGVsdGEgPCAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGRlbHRhIDwgZGVsdGEwICkKKyAgICAgICAgICAgICAgem9uZS0+b3JnX2RlbHRhID0gZGVsdGE7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGRlbHRhID4gZGVsdGEwICkKKyAgICAgICAgICAgICAgem9uZS0+b3JnX2RlbHRhID0gZGVsdGE7CisgICAgICAgICAgfQorICAgICAgICAgIGdvdG8gU2tpcDsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSApCisgICAgICAgIHpvbmVbY291bnRdID0gem9uZVtjb3VudC0xXTsKKworICAgICAgem9uZS0+b3JnX3JlZiAgID0gcmVmZXJlbmNlOworICAgICAgem9uZS0+b3JnX2RlbHRhID0gZGVsdGE7CisKKyAgICAgIGlmICggdG9wICkKKyAgICAgICAgY291bnRfdG9wKys7CisgICAgICBlbHNlCisgICAgICAgIGNvdW50X2JvdCsrOworCisgICAgU2tpcDoKKyAgICAgIHJlYWQgKz0gMjsKKyAgICB9CisKKyAgICB0b3BfdGFibGUtPmNvdW50ID0gY291bnRfdG9wOworICAgIGJvdF90YWJsZS0+Y291bnQgPSBjb3VudF9ib3Q7CisgIH0KKworCisgIC8qIFJlLXJlYWQgYmx1ZSB6b25lcyBmcm9tIHRoZSBvcmlnaW5hbCBmb250cyBhbmQgc3RvcmUgdGhlbSBpbnRvIG91dCAqLworICAvKiBwcml2YXRlIHN0cnVjdHVyZS4gIFRoaXMgZnVuY3Rpb24gcmUtb3JkZXJzLCBzYW5pdGl6ZXMgYW5kICAgICAgICAgKi8KKyAgLyogZnV6ei1leHBhbmRzIHRoZSB6b25lcyBhcyB3ZWxsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIHBzaF9ibHVlc19zZXRfem9uZXMoIFBTSF9CbHVlcyAgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9TaG9ydCogIGJsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGNvdW50X290aGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfU2hvcnQqICBvdGhlcl9ibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBmdXp6LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGZhbWlseSApCisgIHsKKyAgICBQU0hfQmx1ZV9UYWJsZSAgdG9wX3RhYmxlLCBib3RfdGFibGU7CisgICAgRlRfSW50ICAgICAgICAgIGNvdW50X3RvcCwgY291bnRfYm90OworCisKKyAgICBpZiAoIGZhbWlseSApCisgICAgeworICAgICAgdG9wX3RhYmxlID0gJnRhcmdldC0+ZmFtaWx5X3RvcDsKKyAgICAgIGJvdF90YWJsZSA9ICZ0YXJnZXQtPmZhbWlseV9ib3R0b207CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB0b3BfdGFibGUgPSAmdGFyZ2V0LT5ub3JtYWxfdG9wOworICAgICAgYm90X3RhYmxlID0gJnRhcmdldC0+bm9ybWFsX2JvdHRvbTsKKyAgICB9CisKKyAgICAvKiByZWFkIHRoZSBpbnB1dCBibHVlIHpvbmVzLCBhbmQgYnVpbGQgdHdvIHNvcnRlZCB0YWJsZXMgICovCisgICAgLyogKG9uZSBmb3IgdGhlIHRvcCB6b25lcywgdGhlIG90aGVyIGZvciB0aGUgYm90dG9tIHpvbmVzKSAqLworICAgIHRvcF90YWJsZS0+Y291bnQgPSAwOworICAgIGJvdF90YWJsZS0+Y291bnQgPSAwOworCisgICAgLyogZmlyc3QsIHRoZSBibHVlcyAqLworICAgIHBzaF9ibHVlc19zZXRfem9uZXNfMCggdGFyZ2V0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIGJsdWVzLCB0b3BfdGFibGUsIGJvdF90YWJsZSApOworICAgIHBzaF9ibHVlc19zZXRfem9uZXNfMCggdGFyZ2V0LCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRfb3RoZXJzLCBvdGhlcl9ibHVlcywgdG9wX3RhYmxlLCBib3RfdGFibGUgKTsKKworICAgIGNvdW50X3RvcCA9IHRvcF90YWJsZS0+Y291bnQ7CisgICAgY291bnRfYm90ID0gYm90X3RhYmxlLT5jb3VudDsKKworICAgIC8qIHNhbml0aXplIHRvcCB0YWJsZSAqLworICAgIGlmICggY291bnRfdG9wID4gMCApCisgICAgeworICAgICAgUFNIX0JsdWVfWm9uZSAgem9uZSA9IHRvcF90YWJsZS0+em9uZXM7CisKKworICAgICAgZm9yICggY291bnQgPSBjb3VudF90b3A7IGNvdW50ID4gMDsgY291bnQtLSwgem9uZSsrICkKKyAgICAgIHsKKyAgICAgICAgRlRfSW50ICBkZWx0YTsKKworCisgICAgICAgIGlmICggY291bnQgPiAxICkKKyAgICAgICAgeworICAgICAgICAgIGRlbHRhID0gem9uZVsxXS5vcmdfcmVmIC0gem9uZVswXS5vcmdfcmVmOworICAgICAgICAgIGlmICggem9uZS0+b3JnX2RlbHRhID4gZGVsdGEgKQorICAgICAgICAgICAgem9uZS0+b3JnX2RlbHRhID0gZGVsdGE7CisgICAgICAgIH0KKworICAgICAgICB6b25lLT5vcmdfYm90dG9tID0gem9uZS0+b3JnX3JlZjsKKyAgICAgICAgem9uZS0+b3JnX3RvcCAgICA9IHpvbmUtPm9yZ19kZWx0YSArIHpvbmUtPm9yZ19yZWY7CisgICAgICB9CisgICAgfQorCisgICAgLyogc2FuaXRpemUgYm90dG9tIHRhYmxlICovCisgICAgaWYgKCBjb3VudF9ib3QgPiAwICkKKyAgICB7CisgICAgICBQU0hfQmx1ZV9ab25lICB6b25lID0gYm90X3RhYmxlLT56b25lczsKKworCisgICAgICBmb3IgKCBjb3VudCA9IGNvdW50X2JvdDsgY291bnQgPiAwOyBjb3VudC0tLCB6b25lKysgKQorICAgICAgeworICAgICAgICBGVF9JbnQgIGRlbHRhOworCisKKyAgICAgICAgaWYgKCBjb3VudCA+IDEgKQorICAgICAgICB7CisgICAgICAgICAgZGVsdGEgPSB6b25lWzBdLm9yZ19yZWYgLSB6b25lWzFdLm9yZ19yZWY7CisgICAgICAgICAgaWYgKCB6b25lLT5vcmdfZGVsdGEgPCBkZWx0YSApCisgICAgICAgICAgICB6b25lLT5vcmdfZGVsdGEgPSBkZWx0YTsKKyAgICAgICAgfQorCisgICAgICAgIHpvbmUtPm9yZ190b3AgICAgPSB6b25lLT5vcmdfcmVmOworICAgICAgICB6b25lLT5vcmdfYm90dG9tID0gem9uZS0+b3JnX2RlbHRhICsgem9uZS0+b3JnX3JlZjsKKwkJLy8gWFlRIDIwMDYtMy0xMTogRlQgUFMgaGludGVyIGRvZXNuJ3QgcHJvY2VzcyB3aWRlIHpvbmUgd2VsbCAoYWxsIHBvaW50cyBzaHJpbmtlZCB0byBvbmUgaG9yaXpvbnRhbCBsaW5lKQorCQkvLyB0aGVyZWZvcmUsIHdlIGhhdmUgdG8gZG8gc29tZSBuYXN0eSB0aGluZyBoZXJlLCBiZWNhdXNlIHNvbWUgZm9udHMgZG8gZ2l2ZSB3aWRlIGJvdHRvbSB6b25lcy4KKwkJLy8gT3VyIHByaW5jaXBsZSBpcyB0byBwcmVzZXJ2ZSB0aGUgYm90dG9tIGxpbmUKKwkJLy8gVEVTVCBET0M6IGJ1ZyMzOTUgY3NsLnBkZiAgbGV0dGVycyAieSIsICJqIiwgZXRjLgorCQlpZiAoem9uZS0+b3JnX3RvcCAtIHpvbmUtPm9yZ19ib3R0b20gPiAxMCkgeworCQkJem9uZS0+b3JnX3RvcCA9IHpvbmUtPm9yZ19ib3R0b207CisJCQl6b25lLT5vcmdfZGVsdGEgPSAwOworCQl9CisgICAgICB9CisgICAgfQorCisgICAgLyogZXhwYW5kIHRvcCBhbmQgYm90dG9tIHRhYmxlcyB3aXRoIGJsdWUgZnV6eiAqLworICAgIHsKKyAgICAgIEZUX0ludCAgICAgICAgIGRpbSwgdG9wLCBib3QsIGRlbHRhOworICAgICAgUFNIX0JsdWVfWm9uZSAgem9uZTsKKworCisgICAgICB6b25lICA9IHRvcF90YWJsZS0+em9uZXM7CisgICAgICBjb3VudCA9IGNvdW50X3RvcDsKKworICAgICAgZm9yICggZGltID0gMTsgZGltID49IDA7IGRpbS0tICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBjb3VudCA+IDAgKQorICAgICAgICB7CisgICAgICAgICAgLyogZXhwYW5kIHRoZSBib3R0b20gb2YgdGhlIGxvd2VzdCB6b25lIG5vcm1hbGx5ICovCisgICAgICAgICAgem9uZS0+b3JnX2JvdHRvbSAtPSBmdXp6OworCisgICAgICAgICAgLyogZXhwYW5kIHRoZSB0b3AgYW5kIGJvdHRvbSBvZiBpbnRlcm1lZGlhdGUgem9uZXM7ICAgICovCisgICAgICAgICAgLyogY2hlY2tpbmcgdGhhdCB0aGUgaW50ZXJ2YWwgaXMgc21hbGxlciB0aGFuIHRoZSBmdXp6ICovCisgICAgICAgICAgdG9wID0gem9uZS0+b3JnX3RvcDsKKworICAgICAgICAgIGZvciAoIGNvdW50LS07IGNvdW50ID4gMDsgY291bnQtLSApCisgICAgICAgICAgeworICAgICAgICAgICAgYm90ICAgPSB6b25lWzFdLm9yZ19ib3R0b207CisgICAgICAgICAgICBkZWx0YSA9IGJvdCAtIHRvcDsKKworICAgICAgICAgICAgaWYgKCBkZWx0YSA8IDIgKiBmdXp6ICkKKyAgICAgICAgICAgICAgem9uZVswXS5vcmdfdG9wID0gem9uZVsxXS5vcmdfYm90dG9tID0gdG9wICsgZGVsdGEgLyAyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB6b25lWzBdLm9yZ190b3AgICAgPSB0b3AgKyBmdXp6OworICAgICAgICAgICAgICB6b25lWzFdLm9yZ19ib3R0b20gPSBib3QgLSBmdXp6OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB6b25lKys7CisgICAgICAgICAgICB0b3AgPSB6b25lLT5vcmdfdG9wOworICAgICAgICAgIH0KKworICAgICAgICAgIC8qIGV4cGFuZCB0aGUgdG9wIG9mIHRoZSBoaWdoZXN0IHpvbmUgbm9ybWFsbHkgKi8KKyAgICAgICAgICB6b25lLT5vcmdfdG9wID0gdG9wICsgZnV6ejsKKyAgICAgICAgfQorICAgICAgICB6b25lICA9IGJvdF90YWJsZS0+em9uZXM7CisgICAgICAgIGNvdW50ID0gY291bnRfYm90OworICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgLyogcmVzZXQgdGhlIGJsdWVzIHRhYmxlIHdoZW4gdGhlIGRldmljZSB0cmFuc2Zvcm0gY2hhbmdlcyAqLworICBzdGF0aWMgdm9pZAorICBwc2hfYmx1ZXNfc2NhbGVfem9uZXMoIFBTSF9CbHVlcyAgYmx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICBzY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgIGRlbHRhICkKKyAgeworICAgIEZUX1VJbnQgICAgICAgICBjb3VudDsKKyAgICBGVF9VSW50ICAgICAgICAgbnVtOworICAgIFBTSF9CbHVlX1RhYmxlICB0YWJsZSA9IDA7CisKKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBEZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIHN1cHByZXNzIG92ZXJzaG9vdHMgb3IgICAgKi8KKyAgICAvKiBub3QuICBXZSBzaW1wbHkgbmVlZCB0byBjb21wYXJlIHRoZSB2ZXJ0aWNhbCBzY2FsZSAgICAgKi8KKyAgICAvKiBwYXJhbWV0ZXIgdG8gdGhlIHJhdyBibHVlc2NhbGUgdmFsdWUuICBIZXJlIGlzIHdoeTogICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgIFdlIG5lZWQgdG8gc3VwcHJlc3Mgb3ZlcnNob290cyBmb3IgYWxsIHBvaW50c2l6ZXMuICAgKi8KKyAgICAvKiAgIEF0IDMwMGRwaSB0aGF0IHNhdGlzZmllczogICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgIHBvaW50c2l6ZSA8IDI0MCpibHVlc2NhbGUgKyAwLjQ5ICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgIFRoaXMgY29ycmVzcG9uZHMgdG86ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgIHBpeGVsc2l6ZSA8IDEwMDAqYmx1ZXNjYWxlICsgNDkvMjQgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgIHNjYWxlKkVNX1NpemUgPCAxMDAwKmJsdWVzY2FsZSArIDQ5LzI0ICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgIEhvd2V2ZXIsIGZvciBub3JtYWwgVHlwZSAxIGZvbnRzLCBFTV9TaXplIGlzIDEwMDAhICAgKi8KKyAgICAvKiAgIFdlIHRodXMgb25seSBjaGVjazogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgIHNjYWxlIDwgYmx1ZXNjYWxlICsgNDkvMjQwMDAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgIHdoaWNoIHdlIHNob3J0ZW4gdG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICJzY2FsZSA8IGJsdWVzY2FsZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBOb3RlIHRoYXQgYGJsdWVfc2NhbGUnIGlzIHN0b3JlZCAxMDAwIHRpbWVzIGl0cyByZWFsICAgKi8KKyAgICAvKiB2YWx1ZSwgYW5kIHRoYXQgYHNjYWxlJyBjb252ZXJ0cyBmcm9tIGZvbnQgdW5pdHMgdG8gICAgKi8KKyAgICAvKiBmcmFjdGlvbmFsIHBpeGVscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIC8qIDEwMDAgLyA2NCA9IDEyNSAvIDggKi8KKyAgICBpZiAoIHNjYWxlID49IDB4MjBDNDlCQUwgKQorICAgICAgYmx1ZXMtPm5vX292ZXJzaG9vdHMgPSBGVF9CT09MKCBzY2FsZSA8IGJsdWVzLT5ibHVlX3NjYWxlICogOCAvIDEyNSApOworICAgIGVsc2UKKyAgICAgIGJsdWVzLT5ub19vdmVyc2hvb3RzID0gRlRfQk9PTCggc2NhbGUgKiAxMjUgPCBibHVlcy0+Ymx1ZV9zY2FsZSAqIDggKTsKKworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICBUaGUgYmx1ZSB0aHJlc2hvbGQgaXMgdGhlIGZvbnQgdW5pdHMgZGlzdGFuY2UgdW5kZXIgICAqLworICAgIC8qICB3aGljaCBvdmVyc2hvb3RzIGFyZSBzdXBwcmVzc2VkIGR1ZSB0byB0aGUgQmx1ZVNoaWZ0ICAqLworICAgIC8qICBldmVuIGlmIHRoZSBzY2FsZSBpcyBncmVhdGVyIHRoYW4gQmx1ZVNjYWxlLiAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICBJdCBpcyB0aGUgc21hbGxlc3QgZGlzdGFuY2Ugc3VjaCB0aGF0ICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgIGRpc3QgPD0gQmx1ZVNoaWZ0ICYmIGRpc3Qqc2NhbGUgPD0gMC41IHBpeGVscyAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHsKKyAgICAgIEZUX0ludCAgdGhyZXNob2xkID0gYmx1ZXMtPmJsdWVfc2hpZnQ7CisKKworICAgICAgd2hpbGUgKCB0aHJlc2hvbGQgPiAwICYmIEZUX011bEZpeCggdGhyZXNob2xkLCBzY2FsZSApID4gMzIgKQorICAgICAgICB0aHJlc2hvbGQtLTsKKworICAgICAgYmx1ZXMtPmJsdWVfdGhyZXNob2xkID0gdGhyZXNob2xkOworICAgIH0KKworICAgIGZvciAoIG51bSA9IDA7IG51bSA8IDQ7IG51bSsrICkKKyAgICB7CisgICAgICBQU0hfQmx1ZV9ab25lICB6b25lOworCisKKyAgICAgIHN3aXRjaCAoIG51bSApCisgICAgICB7CisgICAgICBjYXNlIDA6CisgICAgICAgIHRhYmxlID0gJmJsdWVzLT5ub3JtYWxfdG9wOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgdGFibGUgPSAmYmx1ZXMtPm5vcm1hbF9ib3R0b207CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyOgorICAgICAgICB0YWJsZSA9ICZibHVlcy0+ZmFtaWx5X3RvcDsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICB0YWJsZSA9ICZibHVlcy0+ZmFtaWx5X2JvdHRvbTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIHpvbmUgID0gdGFibGUtPnpvbmVzOworICAgICAgY291bnQgPSB0YWJsZS0+Y291bnQ7CisgICAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSwgem9uZSsrICkKKyAgICAgIHsKKyAgICAgICAgem9uZS0+Y3VyX3RvcCAgICA9IEZUX011bEZpeCggem9uZS0+b3JnX3RvcCwgICAgc2NhbGUgKSArIGRlbHRhOworICAgICAgICB6b25lLT5jdXJfYm90dG9tID0gRlRfTXVsRml4KCB6b25lLT5vcmdfYm90dG9tLCBzY2FsZSApICsgZGVsdGE7CisgICAgICAgIHpvbmUtPmN1cl9yZWYgICAgPSBGVF9NdWxGaXgoIHpvbmUtPm9yZ19yZWYsICAgIHNjYWxlICkgKyBkZWx0YTsKKyAgICAgICAgem9uZS0+Y3VyX2RlbHRhICA9IEZUX011bEZpeCggem9uZS0+b3JnX2RlbHRhLCAgc2NhbGUgKTsKKworICAgICAgICAvKiByb3VuZCBzY2FsZWQgcmVmZXJlbmNlIHBvc2l0aW9uICovCisgICAgICAgIHpvbmUtPmN1cl9yZWYgPSBGVF9QSVhfUk9VTkQoIHpvbmUtPmN1cl9yZWYgKTsKKworI2lmIDAKKyAgICAgICAgaWYgKCB6b25lLT5jdXJfcmVmID4gem9uZS0+Y3VyX3RvcCApCisgICAgICAgICAgem9uZS0+Y3VyX3JlZiAtPSA2NDsKKyAgICAgICAgZWxzZSBpZiAoIHpvbmUtPmN1cl9yZWYgPCB6b25lLT5jdXJfYm90dG9tICkKKyAgICAgICAgICB6b25lLT5jdXJfcmVmICs9IDY0OworI2VuZGlmCisgICAgICB9CisgICAgfQorCisgICAgLyogcHJvY2VzcyB0aGUgZmFtaWxpZXMgbm93ICovCisKKyAgICBmb3IgKCBudW0gPSAwOyBudW0gPCAyOyBudW0rKyApCisgICAgeworICAgICAgUFNIX0JsdWVfWm9uZSAgIHpvbmUxLCB6b25lMjsKKyAgICAgIEZUX1VJbnQgICAgICAgICBjb3VudDEsIGNvdW50MjsKKyAgICAgIFBTSF9CbHVlX1RhYmxlICBub3JtYWwsIGZhbWlseTsKKworCisgICAgICBzd2l0Y2ggKCBudW0gKQorICAgICAgeworICAgICAgY2FzZSAwOgorICAgICAgICBub3JtYWwgPSAmYmx1ZXMtPm5vcm1hbF90b3A7CisgICAgICAgIGZhbWlseSA9ICZibHVlcy0+ZmFtaWx5X3RvcDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIG5vcm1hbCA9ICZibHVlcy0+bm9ybWFsX2JvdHRvbTsKKyAgICAgICAgZmFtaWx5ID0gJmJsdWVzLT5mYW1pbHlfYm90dG9tOworICAgICAgfQorCisgICAgICB6b25lMSAgPSBub3JtYWwtPnpvbmVzOworICAgICAgY291bnQxID0gbm9ybWFsLT5jb3VudDsKKworICAgICAgZm9yICggOyBjb3VudDEgPiAwOyBjb3VudDEtLSwgem9uZTErKyApCisgICAgICB7CisgICAgICAgIC8qIHRyeSB0byBmaW5kIGEgZmFtaWx5IHpvbmUgd2hvc2UgcmVmZXJlbmNlIHBvc2l0aW9uIGlzIGxlc3MgKi8KKyAgICAgICAgLyogdGhhbiAxIHBpeGVsIGZhciBmcm9tIHRoZSBjdXJyZW50IHpvbmUgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICB6b25lMiAgPSBmYW1pbHktPnpvbmVzOworICAgICAgICBjb3VudDIgPSBmYW1pbHktPmNvdW50OworCisgICAgICAgIGZvciAoIDsgY291bnQyID4gMDsgY291bnQyLS0sIHpvbmUyKysgKQorICAgICAgICB7CisgICAgICAgICAgRlRfUG9zICBEZWx0YTsKKworCisgICAgICAgICAgRGVsdGEgPSB6b25lMS0+b3JnX3JlZiAtIHpvbmUyLT5vcmdfcmVmOworICAgICAgICAgIGlmICggRGVsdGEgPCAwICkKKyAgICAgICAgICAgIERlbHRhID0gLURlbHRhOworCisgICAgICAgICAgaWYgKCBGVF9NdWxGaXgoIERlbHRhLCBzY2FsZSApIDwgNjQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHpvbmUxLT5jdXJfdG9wICAgID0gem9uZTItPmN1cl90b3A7CisgICAgICAgICAgICB6b25lMS0+Y3VyX2JvdHRvbSA9IHpvbmUyLT5jdXJfYm90dG9tOworICAgICAgICAgICAgem9uZTEtPmN1cl9yZWYgICAgPSB6b25lMi0+Y3VyX3JlZjsKKyAgICAgICAgICAgIHpvbmUxLT5jdXJfZGVsdGEgID0gem9uZTItPmN1cl9kZWx0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgLyogY2FsY3VsYXRlIHRoZSBtYXhpbXVtIGhlaWdodCBvZiBnaXZlbiBibHVlIHpvbmVzICovCisgIHN0YXRpYyBGVF9TaG9ydAorICBwc2hfY2FsY19tYXhfaGVpZ2h0KCBGVF9VSW50ICAgICAgICAgIG51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU2hvcnQqICB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1Nob3J0ICAgICAgICAgY3VyX21heCApCisgIHsKKyAgICBGVF9VSW50ICBjb3VudDsKKworCisgICAgZm9yICggY291bnQgPSAwOyBjb3VudCA8IG51bTsgY291bnQgKz0gMiApCisgICAgeworICAgICAgRlRfU2hvcnQgIGN1cl9oZWlnaHQgPSB2YWx1ZXNbY291bnQgKyAxXSAtIHZhbHVlc1tjb3VudF07CisKKworICAgICAgaWYgKCBjdXJfaGVpZ2h0ID4gY3VyX21heCApCisgICAgICAgIGN1cl9tYXggPSBjdXJfaGVpZ2h0OworICAgIH0KKworICAgIHJldHVybiBjdXJfbWF4OworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBwc2hfYmx1ZXNfc25hcF9zdGVtKCBQU0hfQmx1ZXMgICAgICBibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgc3RlbV90b3AsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIHN0ZW1fYm90LAorICAgICAgICAgICAgICAgICAgICAgICBQU0hfQWxpZ25tZW50ICBhbGlnbm1lbnQgKQorICB7CisgICAgUFNIX0JsdWVfVGFibGUgIHRhYmxlOworICAgIEZUX1VJbnQgICAgICAgICBjb3VudDsKKyAgICBGVF9Qb3MgICAgICAgICAgZGVsdGE7CisgICAgUFNIX0JsdWVfWm9uZSAgIHpvbmU7CisgICAgRlRfSW50ICAgICAgICAgIG5vX3Nob290czsKKworCisgICAgYWxpZ25tZW50LT5hbGlnbiA9IFBTSF9CTFVFX0FMSUdOX05PTkU7CisKKyAgICBub19zaG9vdHMgPSBibHVlcy0+bm9fb3ZlcnNob290czsKKworICAgIC8qIGxvb2sgdXAgc3RlbSB0b3AgaW4gdG9wIHpvbmVzIHRhYmxlICovCisgICAgdGFibGUgPSAmYmx1ZXMtPm5vcm1hbF90b3A7CisgICAgY291bnQgPSB0YWJsZS0+Y291bnQ7CisgICAgem9uZSAgPSB0YWJsZS0+em9uZXM7CisKKyAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSwgem9uZSsrICkKKyAgICB7CisgICAgICBkZWx0YSA9IHN0ZW1fdG9wIC0gem9uZS0+b3JnX2JvdHRvbTsKKyAgICAgIGlmICggZGVsdGEgPCAtYmx1ZXMtPmJsdWVfZnV6eiApCisgICAgICAgIGJyZWFrOworCisgICAgICBpZiAoIHN0ZW1fdG9wIDw9IHpvbmUtPm9yZ190b3AgKyBibHVlcy0+Ymx1ZV9mdXp6ICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBub19zaG9vdHMgfHwgZGVsdGEgPD0gYmx1ZXMtPmJsdWVfdGhyZXNob2xkICkKKyAgICAgICAgeworICAgICAgICAgIGFsaWdubWVudC0+YWxpZ24gICAgfD0gUFNIX0JMVUVfQUxJR05fVE9QOworICAgICAgICAgIGFsaWdubWVudC0+YWxpZ25fdG9wID0gem9uZS0+Y3VyX3JlZjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBsb29rIHVwIHN0ZW0gYm90dG9tIGluIGJvdHRvbSB6b25lcyB0YWJsZSAqLworICAgIHRhYmxlID0gJmJsdWVzLT5ub3JtYWxfYm90dG9tOworICAgIGNvdW50ID0gdGFibGUtPmNvdW50OworICAgIHpvbmUgID0gdGFibGUtPnpvbmVzICsgY291bnQtMTsKKworICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCB6b25lLS0gKQorICAgIHsKKyAgICAgIGRlbHRhID0gem9uZS0+b3JnX3RvcCAtIHN0ZW1fYm90OworICAgICAgaWYgKCBkZWx0YSA8IC1ibHVlcy0+Ymx1ZV9mdXp6ICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGlmICggc3RlbV9ib3QgPj0gem9uZS0+b3JnX2JvdHRvbSAtIGJsdWVzLT5ibHVlX2Z1enogKQorICAgICAgeworICAgICAgICBpZiAoIG5vX3Nob290cyB8fCBkZWx0YSA8IGJsdWVzLT5ibHVlX3RocmVzaG9sZCApCisgICAgICAgIHsKKyAgICAgICAgICBhbGlnbm1lbnQtPmFsaWduICAgIHw9IFBTSF9CTFVFX0FMSUdOX0JPVDsKKyAgICAgICAgICBhbGlnbm1lbnQtPmFsaWduX2JvdCA9IHpvbmUtPmN1cl9yZWY7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUwgSElOVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBzdGF0aWMgdm9pZAorICBwc2hfZ2xvYmFsc19kZXN0cm95KCBQU0hfR2xvYmFscyAgZ2xvYmFscyApCisgIHsKKyAgICBpZiAoIGdsb2JhbHMgKQorICAgIHsKKyAgICAgIEZUX01lbW9yeSAgbWVtb3J5OworCisKKyAgICAgIG1lbW9yeSA9IGdsb2JhbHMtPm1lbW9yeTsKKyAgICAgIGdsb2JhbHMtPmRpbWVuc2lvblswXS5zdGR3LmNvdW50ID0gMDsKKyAgICAgIGdsb2JhbHMtPmRpbWVuc2lvblsxXS5zdGR3LmNvdW50ID0gMDsKKworICAgICAgZ2xvYmFscy0+Ymx1ZXMubm9ybWFsX3RvcC5jb3VudCAgICA9IDA7CisgICAgICBnbG9iYWxzLT5ibHVlcy5ub3JtYWxfYm90dG9tLmNvdW50ID0gMDsKKyAgICAgIGdsb2JhbHMtPmJsdWVzLmZhbWlseV90b3AuY291bnQgICAgPSAwOworICAgICAgZ2xvYmFscy0+Ymx1ZXMuZmFtaWx5X2JvdHRvbS5jb3VudCA9IDA7CisKKyAgICAgIEZUX0ZSRUUoIGdsb2JhbHMgKTsKKworI2lmZGVmIERFQlVHX0hJTlRFUgorICAgICAgcHNfZGVidWdfZ2xvYmFscyA9IDA7CisjZW5kaWYKKyAgICB9CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc2hfZ2xvYmFsc19uZXcoIEZUX01lbW9yeSAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgIFQxX1ByaXZhdGUqICAgcHJpdiwKKyAgICAgICAgICAgICAgICAgICBQU0hfR2xvYmFscyAgKmFnbG9iYWxzICkKKyAgeworICAgIFBTSF9HbG9iYWxzICBnbG9iYWxzID0gTlVMTDsKKyAgICBGVF9FcnJvciAgICAgZXJyb3I7CisKKworICAgIGlmICggIUZUX05FVyggZ2xvYmFscyApICkKKyAgICB7CisgICAgICBGVF9VSW50ICAgIGNvdW50OworICAgICAgRlRfU2hvcnQqICByZWFkOworCisKKyAgICAgIGdsb2JhbHMtPm1lbW9yeSA9IG1lbW9yeTsKKworICAgICAgLyogY29weSBzdGFuZGFyZCB3aWR0aHMgKi8KKyAgICAgIHsKKyAgICAgICAgUFNIX0RpbWVuc2lvbiAgZGltICAgPSAmZ2xvYmFscy0+ZGltZW5zaW9uWzFdOworICAgICAgICBQU0hfV2lkdGggICAgICB3cml0ZSA9IGRpbS0+c3Rkdy53aWR0aHM7CisKKworICAgICAgICB3cml0ZS0+b3JnID0gcHJpdi0+c3RhbmRhcmRfd2lkdGhbMF07CisgICAgICAgIHdyaXRlKys7CisKKyAgICAgICAgcmVhZCA9IHByaXYtPnNuYXBfd2lkdGhzOworICAgICAgICBmb3IgKCBjb3VudCA9IHByaXYtPm51bV9zbmFwX3dpZHRoczsgY291bnQgPiAwOyBjb3VudC0tICkKKyAgICAgICAgeworICAgICAgICAgIHdyaXRlLT5vcmcgPSAqcmVhZDsKKyAgICAgICAgICB3cml0ZSsrOworICAgICAgICAgIHJlYWQrKzsKKyAgICAgICAgfQorCisgICAgICAgIGRpbS0+c3Rkdy5jb3VudCA9IHByaXYtPm51bV9zbmFwX3dpZHRocyArIDE7CisgICAgICB9CisKKyAgICAgIC8qIGNvcHkgc3RhbmRhcmQgaGVpZ2h0cyAqLworICAgICAgeworICAgICAgICBQU0hfRGltZW5zaW9uICBkaW0gPSAmZ2xvYmFscy0+ZGltZW5zaW9uWzBdOworICAgICAgICBQU0hfV2lkdGggICAgICB3cml0ZSA9IGRpbS0+c3Rkdy53aWR0aHM7CisKKworICAgICAgICB3cml0ZS0+b3JnID0gcHJpdi0+c3RhbmRhcmRfaGVpZ2h0WzBdOworICAgICAgICB3cml0ZSsrOworICAgICAgICByZWFkID0gcHJpdi0+c25hcF9oZWlnaHRzOworICAgICAgICBmb3IgKCBjb3VudCA9IHByaXYtPm51bV9zbmFwX2hlaWdodHM7IGNvdW50ID4gMDsgY291bnQtLSApCisgICAgICAgIHsKKyAgICAgICAgICB3cml0ZS0+b3JnID0gKnJlYWQ7CisgICAgICAgICAgd3JpdGUrKzsKKyAgICAgICAgICByZWFkKys7CisgICAgICAgIH0KKworICAgICAgICBkaW0tPnN0ZHcuY291bnQgPSBwcml2LT5udW1fc25hcF9oZWlnaHRzICsgMTsKKyAgICAgIH0KKworICAgICAgLyogY29weSBibHVlIHpvbmVzICovCisgICAgICBwc2hfYmx1ZXNfc2V0X3pvbmVzKCAmZ2xvYmFscy0+Ymx1ZXMsIHByaXYtPm51bV9ibHVlX3ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmJsdWVfdmFsdWVzLCBwcml2LT5udW1fb3RoZXJfYmx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5vdGhlcl9ibHVlcywgcHJpdi0+Ymx1ZV9mdXp6LCAwICk7CisKKyAgICAgIHBzaF9ibHVlc19zZXRfem9uZXMoICZnbG9iYWxzLT5ibHVlcywgcHJpdi0+bnVtX2ZhbWlseV9ibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmZhbWlseV9ibHVlcywgcHJpdi0+bnVtX2ZhbWlseV9vdGhlcl9ibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmZhbWlseV9vdGhlcl9ibHVlcywgcHJpdi0+Ymx1ZV9mdXp6LCAxICk7CisKKyAgICAgIC8qIGxpbWl0IHRoZSBCbHVlU2NhbGUgdmFsdWUgdG8gYDEgLyBtYXhfb2ZfYmx1ZV96b25lX2hlaWdodHMnICovCisgICAgICB7CisgICAgICAgIEZUX0ZpeGVkICBtYXhfc2NhbGU7CisgICAgICAgIEZUX1Nob3J0ICBtYXhfaGVpZ2h0ID0gMTsKKworCisgICAgICAgIG1heF9oZWlnaHQgPSBwc2hfY2FsY19tYXhfaGVpZ2h0KCBwcml2LT5udW1fYmx1ZV92YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5ibHVlX3ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9oZWlnaHQgKTsKKyAgICAgICAgbWF4X2hlaWdodCA9IHBzaF9jYWxjX21heF9oZWlnaHQoIHByaXYtPm51bV9vdGhlcl9ibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPm90aGVyX2JsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2hlaWdodCApOworICAgICAgICBtYXhfaGVpZ2h0ID0gcHNoX2NhbGNfbWF4X2hlaWdodCggcHJpdi0+bnVtX2ZhbWlseV9ibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmZhbWlseV9ibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9oZWlnaHQgKTsKKyAgICAgICAgbWF4X2hlaWdodCA9IHBzaF9jYWxjX21heF9oZWlnaHQoIHByaXYtPm51bV9mYW1pbHlfb3RoZXJfYmx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5mYW1pbHlfb3RoZXJfYmx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfaGVpZ2h0ICk7CisKKyAgICAgICAgLyogQmx1ZVNjYWxlIGlzIHNjYWxlZCAxMDAwIHRpbWVzICovCisgICAgICAgIG1heF9zY2FsZSA9IEZUX0RpdkZpeCggMTAwMCwgbWF4X2hlaWdodCApOworICAgICAgICBnbG9iYWxzLT5ibHVlcy5ibHVlX3NjYWxlID0gcHJpdi0+Ymx1ZV9zY2FsZSA8IG1heF9zY2FsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByaXYtPmJsdWVfc2NhbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtYXhfc2NhbGU7CisgICAgICB9CisKKyAgICAgIGdsb2JhbHMtPmJsdWVzLmJsdWVfc2hpZnQgPSBwcml2LT5ibHVlX3NoaWZ0OworICAgICAgZ2xvYmFscy0+Ymx1ZXMuYmx1ZV9mdXp6ICA9IHByaXYtPmJsdWVfZnV6ejsKKworICAgICAgZ2xvYmFscy0+ZGltZW5zaW9uWzBdLnNjYWxlX211bHQgID0gMDsKKyAgICAgIGdsb2JhbHMtPmRpbWVuc2lvblswXS5zY2FsZV9kZWx0YSA9IDA7CisgICAgICBnbG9iYWxzLT5kaW1lbnNpb25bMV0uc2NhbGVfbXVsdCAgPSAwOworICAgICAgZ2xvYmFscy0+ZGltZW5zaW9uWzFdLnNjYWxlX2RlbHRhID0gMDsKKworI2lmZGVmIERFQlVHX0hJTlRFUgorICAgICAgcHNfZGVidWdfZ2xvYmFscyA9IGdsb2JhbHM7CisjZW5kaWYKKyAgICB9CisKKyAgICAqYWdsb2JhbHMgPSBnbG9iYWxzOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHBzaF9nbG9iYWxzX3NldF9zY2FsZSggUFNIX0dsb2JhbHMgIGdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHhfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHlfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHhfZGVsdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHlfZGVsdGEgKQorICB7CisgICAgUFNIX0RpbWVuc2lvbiAgZGltID0gJmdsb2JhbHMtPmRpbWVuc2lvblswXTsKKworCisgICAgZGltID0gJmdsb2JhbHMtPmRpbWVuc2lvblswXTsKKyAgICBpZiAoIHhfc2NhbGUgIT0gZGltLT5zY2FsZV9tdWx0ICB8fAorICAgICAgICAgeF9kZWx0YSAhPSBkaW0tPnNjYWxlX2RlbHRhICkKKyAgICB7CisgICAgICBkaW0tPnNjYWxlX211bHQgID0geF9zY2FsZTsKKyAgICAgIGRpbS0+c2NhbGVfZGVsdGEgPSB4X2RlbHRhOworCisgICAgICBwc2hfZ2xvYmFsc19zY2FsZV93aWR0aHMoIGdsb2JhbHMsIDAgKTsKKyAgICB9CisKKyAgICBkaW0gPSAmZ2xvYmFscy0+ZGltZW5zaW9uWzFdOworICAgIGlmICggeV9zY2FsZSAhPSBkaW0tPnNjYWxlX211bHQgIHx8CisgICAgICAgICB5X2RlbHRhICE9IGRpbS0+c2NhbGVfZGVsdGEgKQorICAgIHsKKyAgICAgIGRpbS0+c2NhbGVfbXVsdCAgPSB5X3NjYWxlOworICAgICAgZGltLT5zY2FsZV9kZWx0YSA9IHlfZGVsdGE7CisKKyAgICAgIHBzaF9nbG9iYWxzX3NjYWxlX3dpZHRocyggZ2xvYmFscywgMSApOworICAgICAgcHNoX2JsdWVzX3NjYWxlX3pvbmVzKCAmZ2xvYmFscy0+Ymx1ZXMsIHlfc2NhbGUsIHlfZGVsdGEgKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgcHNoX2dsb2JhbHNfZnVuY3NfaW5pdCggUFNIX0dsb2JhbHNfRnVuY3NSZWMqICBmdW5jcyApCisgIHsKKyAgICBmdW5jcy0+Y3JlYXRlICAgID0gcHNoX2dsb2JhbHNfbmV3OworICAgIGZ1bmNzLT5zZXRfc2NhbGUgPSBwc2hfZ2xvYmFsc19zZXRfc2NhbGU7CisgICAgZnVuY3MtPmRlc3Ryb3kgICA9IHBzaF9nbG9iYWxzX2Rlc3Ryb3k7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hnbG9iLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZjMjAwMQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNoZ2xvYi5oCkBAIC0wLDAgKzEsMTk2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2hnbG9iLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgUG9zdFNjcmlwdCBoaW50ZXIgZ2xvYmFsIGhpbnRpbmcgbWFuYWdlbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEsIDIwMDIsIDIwMDMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19QU0hHTE9CX0hfXworI2RlZmluZSBfX1BTSEdMT0JfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgR0xPQkFMIEhJTlRTIElOVEVSTkFMUyAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBAY29uc3RhbnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUFNfR0xPQkFMU19NQVhfQkxVRV9aT05FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBAZGVzY3JpcHRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGJsdWUgem9uZXMgaW4gYSBmb250IGdsb2JhbCBoaW50cyBzdHJ1Y3R1cmUuICovCisgIC8qICAgIFNlZSBAUFNfR2xvYmFsc19CbHVlc1JlYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUFNfR0xPQkFMU19NQVhfQkxVRV9aT05FUyAgMTYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQGNvbnN0YW50OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBTX0dMT0JBTFNfTUFYX1NURF9XSURUSFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQGRlc2NyaXB0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFuZGFyZCBhbmQgc25hcCB3aWR0aHMgaW4gZWl0aGVyIHRoZSAgICAgICAqLworICAvKiAgICBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGRpcmVjdGlvbi4gIFNlZSBAUFNfR2xvYmFsc19XaWR0aHNSZWMuICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBTX0dMT0JBTFNfTUFYX1NURF9XSURUSFMgIDE2CisKKworICAvKiBzdGFuZGFyZCBhbmQgc25hcCB3aWR0aCAqLworICB0eXBlZGVmIHN0cnVjdCAgUFNIX1dpZHRoUmVjXworICB7CisgICAgRlRfSW50ICBvcmc7CisgICAgRlRfUG9zICBjdXI7CisgICAgRlRfUG9zICBmaXQ7CisKKyAgfSBQU0hfV2lkdGhSZWMsICpQU0hfV2lkdGg7CisKKworICAvKiBzdGFuZGFyZCBhbmQgc25hcCB3aWR0aHMgdGFibGUgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTSF9XaWR0aHNSZWNfCisgIHsKKyAgICBGVF9VSW50ICAgICAgIGNvdW50OworICAgIFBTSF9XaWR0aFJlYyAgd2lkdGhzW1BTX0dMT0JBTFNfTUFYX1NURF9XSURUSFNdOworCisgIH0gUFNIX1dpZHRoc1JlYywgKlBTSF9XaWR0aHM7CisKKworICB0eXBlZGVmIHN0cnVjdCAgUFNIX0RpbWVuc2lvblJlY18KKyAgeworICAgIFBTSF9XaWR0aHNSZWMgIHN0ZHc7CisgICAgRlRfRml4ZWQgICAgICAgc2NhbGVfbXVsdDsKKyAgICBGVF9GaXhlZCAgICAgICBzY2FsZV9kZWx0YTsKKworICB9IFBTSF9EaW1lbnNpb25SZWMsICpQU0hfRGltZW5zaW9uOworCisKKyAgLyogYmx1ZSB6b25lIGRlc2NyaXB0b3IgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTSF9CbHVlX1pvbmVSZWNfCisgIHsKKyAgICBGVF9JbnQgIG9yZ19yZWY7CisgICAgRlRfSW50ICBvcmdfZGVsdGE7CisgICAgRlRfSW50ICBvcmdfdG9wOworICAgIEZUX0ludCAgb3JnX2JvdHRvbTsKKworICAgIEZUX1BvcyAgY3VyX3JlZjsKKyAgICBGVF9Qb3MgIGN1cl9kZWx0YTsKKyAgICBGVF9Qb3MgIGN1cl9ib3R0b207CisgICAgRlRfUG9zICBjdXJfdG9wOworCisgIH0gUFNIX0JsdWVfWm9uZVJlYywgKlBTSF9CbHVlX1pvbmU7CisKKworICB0eXBlZGVmIHN0cnVjdCAgUFNIX0JsdWVfVGFibGVSZWNfCisgIHsKKyAgICBGVF9VSW50ICAgICAgICAgICBjb3VudDsKKyAgICBQU0hfQmx1ZV9ab25lUmVjICB6b25lc1tQU19HTE9CQUxTX01BWF9CTFVFX1pPTkVTXTsKKworICB9IFBTSF9CbHVlX1RhYmxlUmVjLCAqUFNIX0JsdWVfVGFibGU7CisKKworICAvKiBibHVlIHpvbmVzIHRhYmxlICovCisgIHR5cGVkZWYgc3RydWN0ICBQU0hfQmx1ZXNSZWNfCisgIHsKKyAgICBQU0hfQmx1ZV9UYWJsZVJlYyAgbm9ybWFsX3RvcDsKKyAgICBQU0hfQmx1ZV9UYWJsZVJlYyAgbm9ybWFsX2JvdHRvbTsKKyAgICBQU0hfQmx1ZV9UYWJsZVJlYyAgZmFtaWx5X3RvcDsKKyAgICBQU0hfQmx1ZV9UYWJsZVJlYyAgZmFtaWx5X2JvdHRvbTsKKworICAgIEZUX0ZpeGVkICAgICAgICAgICBibHVlX3NjYWxlOworICAgIEZUX0ludCAgICAgICAgICAgICBibHVlX3NoaWZ0OworICAgIEZUX0ludCAgICAgICAgICAgICBibHVlX3RocmVzaG9sZDsKKyAgICBGVF9JbnQgICAgICAgICAgICAgYmx1ZV9mdXp6OworICAgIEZUX0Jvb2wgICAgICAgICAgICBub19vdmVyc2hvb3RzOworCisgIH0gUFNIX0JsdWVzUmVjLCAqUFNIX0JsdWVzOworCisKKyAgLyogZm9udCBnbG9iYWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogZGltZW5zaW9uIDAgPT4gWCBjb29yZGluYXRlcyArIHZlcnRpY2FsIGhpbnRzL3N0ZW1zICAgKi8KKyAgLyogZGltZW5zaW9uIDEgPT4gWSBjb29yZGluYXRlcyArIGhvcml6b250YWwgaGludHMvc3RlbXMgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTSF9HbG9iYWxzUmVjXworICB7CisgICAgRlRfTWVtb3J5ICAgICAgICAgbWVtb3J5OworICAgIFBTSF9EaW1lbnNpb25SZWMgIGRpbWVuc2lvblsyXTsKKyAgICBQU0hfQmx1ZXNSZWMgICAgICBibHVlczsKKworICB9IFBTSF9HbG9iYWxzUmVjOworCisKKyNkZWZpbmUgUFNIX0JMVUVfQUxJR05fTk9ORSAgMAorI2RlZmluZSBQU0hfQkxVRV9BTElHTl9UT1AgICAxCisjZGVmaW5lIFBTSF9CTFVFX0FMSUdOX0JPVCAgIDIKKworCisgIHR5cGVkZWYgc3RydWN0ICBQU0hfQWxpZ25tZW50UmVjXworICB7CisgICAgaW50ICAgICBhbGlnbjsKKyAgICBGVF9Qb3MgIGFsaWduX3RvcDsKKyAgICBGVF9Qb3MgIGFsaWduX2JvdDsKKworICB9IFBTSF9BbGlnbm1lbnRSZWMsICpQU0hfQWxpZ25tZW50OworCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBwc2hfZ2xvYmFsc19mdW5jc19pbml0KCBQU0hfR2xvYmFsc19GdW5jc1JlYyogIGZ1bmNzICk7CisKKworI2lmIDAKKyAgLyogc25hcCBhIHN0ZW0gd2lkdGggdG8gZml0dGVyIGNvb3JkaW5hdGVzLiAgYG9yZ193aWR0aCcgaXMgaW4gZm9udCAqLworICAvKiB1bml0cy4gIFRoZSByZXN1bHQgaXMgaW4gZGV2aWNlIHBpeGVscyAoMjYuNiBmb3JtYXQpLiAgICAgICAgICAgICovCisgIEZUX0xPQ0FMKCBGVF9Qb3MgKQorICBwc2hfZGltZW5zaW9uX3NuYXBfd2lkdGgoIFBTSF9EaW1lbnNpb24gIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBvcmdfd2lkdGggKTsKKyNlbmRpZgorCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHBzaF9nbG9iYWxzX3NldF9zY2FsZSggUFNIX0dsb2JhbHMgIGdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHhfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHlfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHhfZGVsdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICAgIHlfZGVsdGEgKTsKKworICAvKiBzbmFwIGEgc3RlbSB0byBvbmUgb3IgdHdvIGJsdWUgem9uZXMgKi8KKyAgRlRfTE9DQUwoIHZvaWQgKQorICBwc2hfYmx1ZXNfc25hcF9zdGVtKCBQU0hfQmx1ZXMgICAgICBibHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgc3RlbV90b3AsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIHN0ZW1fYm90LAorICAgICAgICAgICAgICAgICAgICAgICBQU0hfQWxpZ25tZW50ICBhbGlnbm1lbnQgKTsKKyAgLyogKi8KKworI2lmZGVmIERFQlVHX0hJTlRFUgorICBleHRlcm4gUFNIX0dsb2JhbHMgIHBzX2RlYnVnX2dsb2JhbHM7CisjZW5kaWYKKworCitGVF9FTkRfSEVBREVSCisKKworI2VuZGlmIC8qIF9fUFNIR0xPQl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNobW9kLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL3BzaG1vZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZWRhZDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL3BzaG1vZC5jCkBAIC0wLDAgKzEsMTE5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2htb2QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgUG9zdFNjcmlwdCBoaW50ZXIgbW9kdWxlIGltcGxlbWVudGF0aW9uIChib2R5KS4gICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEsIDIwMDIsIDIwMDcsIDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICJwc2hyZWMuaCIKKyNpbmNsdWRlICJwc2hhbGdvLmgiCisjaW5jbHVkZSAicHNocGljLmgiCisKKworICAvKiB0aGUgUG9zdHNjcmlwdCBIaW50ZXIgbW9kdWxlIHN0cnVjdHVyZSAqLworICB0eXBlZGVmIHN0cnVjdCAgUFNfSGludGVyX01vZHVsZV9SZWNfCisgIHsKKyAgICBGVF9Nb2R1bGVSZWMgICAgICAgICAgcm9vdDsKKyAgICBQU19IaW50c1JlYyAgICAgICAgICAgcHNfaGludHM7CisKKyAgICBQU0hfR2xvYmFsc19GdW5jc1JlYyAgZ2xvYmFsc19mdW5jczsKKyAgICBUMV9IaW50c19GdW5jc1JlYyAgICAgdDFfZnVuY3M7CisgICAgVDJfSGludHNfRnVuY3NSZWMgICAgIHQyX2Z1bmNzOworCisgIH0gUFNfSGludGVyX01vZHVsZVJlYywgKlBTX0hpbnRlcl9Nb2R1bGU7CisKKworICAvKiBmaW5hbGl6ZSBtb2R1bGUgKi8KKyAgRlRfQ0FMTEJBQ0tfREVGKCB2b2lkICkKKyAgcHNfaGludGVyX2RvbmUoIFBTX0hpbnRlcl9Nb2R1bGUgIG1vZHVsZSApCisgIHsKKyAgICBtb2R1bGUtPnQxX2Z1bmNzLmhpbnRzID0gTlVMTDsKKyAgICBtb2R1bGUtPnQyX2Z1bmNzLmhpbnRzID0gTlVMTDsKKworICAgIHBzX2hpbnRzX2RvbmUoICZtb2R1bGUtPnBzX2hpbnRzICk7CisgIH0KKworCisgIC8qIGluaXRpYWxpemUgbW9kdWxlLCBjcmVhdGUgaGludHMgcmVjb3JkZXIgYW5kIHRoZSBpbnRlcmZhY2UgKi8KKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHBzX2hpbnRlcl9pbml0KCBQU19IaW50ZXJfTW9kdWxlICBtb2R1bGUgKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBtb2R1bGUtPnJvb3QubWVtb3J5OworICAgIHZvaWQqICAgICAgcGggICAgID0gJm1vZHVsZS0+cHNfaGludHM7CisKKworICAgIHBzX2hpbnRzX2luaXQoICZtb2R1bGUtPnBzX2hpbnRzLCBtZW1vcnkgKTsKKworICAgIHBzaF9nbG9iYWxzX2Z1bmNzX2luaXQoICZtb2R1bGUtPmdsb2JhbHNfZnVuY3MgKTsKKworICAgIHQxX2hpbnRzX2Z1bmNzX2luaXQoICZtb2R1bGUtPnQxX2Z1bmNzICk7CisgICAgbW9kdWxlLT50MV9mdW5jcy5oaW50cyA9IChUMV9IaW50cylwaDsKKworICAgIHQyX2hpbnRzX2Z1bmNzX2luaXQoICZtb2R1bGUtPnQyX2Z1bmNzICk7CisgICAgbW9kdWxlLT50Ml9mdW5jcy5oaW50cyA9IChUMl9IaW50cylwaDsKKworICAgIHJldHVybiAwOworICB9CisKKworICAvKiByZXR1cm5zIGdsb2JhbCBoaW50cyBpbnRlcmZhY2UgKi8KKyAgRlRfQ0FMTEJBQ0tfREVGKCBQU0hfR2xvYmFsc19GdW5jcyApCisgIHBzaGludGVyX2dldF9nbG9iYWxzX2Z1bmNzKCBGVF9Nb2R1bGUgIG1vZHVsZSApCisgIHsKKyAgICByZXR1cm4gJigoUFNfSGludGVyX01vZHVsZSltb2R1bGUpLT5nbG9iYWxzX2Z1bmNzOworICB9CisKKworICAvKiByZXR1cm4gVHlwZSAxIGhpbnRzIGludGVyZmFjZSAqLworICBGVF9DQUxMQkFDS19ERUYoIFQxX0hpbnRzX0Z1bmNzICkKKyAgcHNoaW50ZXJfZ2V0X3QxX2Z1bmNzKCBGVF9Nb2R1bGUgIG1vZHVsZSApCisgIHsKKyAgICByZXR1cm4gJigoUFNfSGludGVyX01vZHVsZSltb2R1bGUpLT50MV9mdW5jczsKKyAgfQorCisKKyAgLyogcmV0dXJuIFR5cGUgMiBoaW50cyBpbnRlcmZhY2UgKi8KKyAgRlRfQ0FMTEJBQ0tfREVGKCBUMl9IaW50c19GdW5jcyApCisgIHBzaGludGVyX2dldF90Ml9mdW5jcyggRlRfTW9kdWxlICBtb2R1bGUgKQorICB7CisgICAgcmV0dXJuICYoKFBTX0hpbnRlcl9Nb2R1bGUpbW9kdWxlKS0+dDJfZnVuY3M7CisgIH0KKworCisgIEZUX0RFRklORV9QU0hJTlRFUl9JTlRFUkZBQ0UoCisgICAgcHNoaW50ZXJfaW50ZXJmYWNlLAorICAgIHBzaGludGVyX2dldF9nbG9iYWxzX2Z1bmNzLAorICAgIHBzaGludGVyX2dldF90MV9mdW5jcywKKyAgICBwc2hpbnRlcl9nZXRfdDJfZnVuY3MgKQorCisKKyAgRlRfREVGSU5FX01PRFVMRSgKKyAgICBwc2hpbnRlcl9tb2R1bGVfY2xhc3MsCisKKyAgICAwLAorICAgIHNpemVvZiAoIFBTX0hpbnRlcl9Nb2R1bGVSZWMgKSwKKyAgICAicHNoaW50ZXIiLAorICAgIDB4MTAwMDBMLAorICAgIDB4MjAwMDBMLAorCisgICAgJlBTSElOVEVSX0lOVEVSRkFDRV9HRVQsICAgICAgICAgICAgICAvKiBtb2R1bGUtc3BlY2lmaWMgaW50ZXJmYWNlICovCisKKyAgICAoRlRfTW9kdWxlX0NvbnN0cnVjdG9yKXBzX2hpbnRlcl9pbml0LAorICAgIChGVF9Nb2R1bGVfRGVzdHJ1Y3RvcikgcHNfaGludGVyX2RvbmUsCisgICAgKEZUX01vZHVsZV9SZXF1ZXN0ZXIpICBOVUxMICkgICAvKiBubyBhZGRpdGlvbmFsIGludGVyZmFjZSBmb3Igbm93ICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL3BzaG1vZC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2htb2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjE0M2FjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2htb2QuaApAQCAtMCwwICsxLDM5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2htb2QuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgUG9zdFNjcmlwdCBoaW50ZXIgbW9kdWxlIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19QU0hNT0RfSF9fCisjZGVmaW5lIF9fUFNITU9EX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1vZGFwaS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfREVDTEFSRV9NT0RVTEUoIHBzaGludGVyX21vZHVsZV9jbGFzcyApCisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX1BTSE1PRF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNobnRlcnIuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNobnRlcnIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzJmZGJmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hudGVyci5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHBzaG50ZXJyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBQUyBIaW50ZXIgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMywgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgZmlsZSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgUFNIaW50ZXIgZXJyb3IgZW51bWVyYXRpb24gY29uc3RhbnRzLiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19QU0hOVEVSUl9IX18KKyNkZWZpbmUgX19QU0hOVEVSUl9IX18KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaCIKKworI3VuZGVmIF9fRlRFUlJPUlNfSF9fCisKKyN1bmRlZiAgRlRfRVJSX1BSRUZJWAorI2RlZmluZSBGVF9FUlJfUFJFRklYICBQU0hfRXJyXworI2RlZmluZSBGVF9FUlJfQkFTRSAgICBGVF9Nb2RfRXJyX1BTaGludGVyCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmgiCisKKyNlbmRpZiAvKiBfX1BTSE5URVJSX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hwaWMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNocGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM1Yzk5ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNocGljLmMKQEAgLTAsMCArMSw3NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcHNocGljLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBwb3NpdGlvbiBpbmRlcGVuZGVudCBjb2RlIHNlcnZpY2VzIGZvciBwc2hpbnRlciBtb2R1bGUuICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA5LCAyMDEwLCAyMDEyLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBPcmFuIEFncmEgYW5kIE1pY2tleSBHYWJlbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgInBzaHBpYy5oIgorI2luY2x1ZGUgInBzaG50ZXJyLmgiCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyAgLyogZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBQSUMgaW5pdCBmdW5jdGlvbnMgZnJvbSBwc2htb2QuYyAqLworICB2b2lkCisgIEZUX0luaXRfQ2xhc3NfcHNoaW50ZXJfaW50ZXJmYWNlKCBGVF9MaWJyYXJ5ICAgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNIaW50ZXJfSW50ZXJmYWNlKiAgY2xhenogKTsKKworICB2b2lkCisgIHBzaGludGVyX21vZHVsZV9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9QSUNfQ29udGFpbmVyKiAgcGljX2NvbnRhaW5lciA9ICZsaWJyYXJ5LT5waWNfY29udGFpbmVyOworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnkgICAgICAgID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICBpZiAoIHBpY19jb250YWluZXItPnBzaGludGVyICkKKyAgICB7CisgICAgICBGVF9GUkVFKCBwaWNfY29udGFpbmVyLT5wc2hpbnRlciApOworICAgICAgcGljX2NvbnRhaW5lci0+cHNoaW50ZXIgPSBOVUxMOworICAgIH0KKyAgfQorCisKKyAgRlRfRXJyb3IKKyAgcHNoaW50ZXJfbW9kdWxlX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX1BJQ19Db250YWluZXIqICBwaWNfY29udGFpbmVyID0gJmxpYnJhcnktPnBpY19jb250YWluZXI7CisgICAgRlRfRXJyb3IgICAgICAgICAgIGVycm9yICAgICAgICAgPSBGVF9FcnJfT2s7CisgICAgUFNIaW50ZXJQSUMqICAgICAgIGNvbnRhaW5lciAgICAgPSBOVUxMOworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnkgICAgICAgID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICAvKiBhbGxvY2F0ZSBwb2ludGVyLCBjbGVhciBhbmQgc2V0IGdsb2JhbCBjb250YWluZXIgcG9pbnRlciAqLworICAgIGlmICggRlRfQUxMT0MoIGNvbnRhaW5lciwgc2l6ZW9mICggKmNvbnRhaW5lciApICkgKQorICAgICAgcmV0dXJuIGVycm9yOworICAgIEZUX01FTV9TRVQoIGNvbnRhaW5lciwgMCwgc2l6ZW9mICggKmNvbnRhaW5lciApICk7CisgICAgcGljX2NvbnRhaW5lci0+cHNoaW50ZXIgPSBjb250YWluZXI7CisKKyAgICAvKiBhZGQgY2FsbCB0byBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiB3aGVuIHlvdSBhZGQgbmV3IHNjcmlwdHMgKi8KKyAgICBGVF9Jbml0X0NsYXNzX3BzaGludGVyX2ludGVyZmFjZSgKKyAgICAgIGxpYnJhcnksICZjb250YWluZXItPnBzaGludGVyX2ludGVyZmFjZSApOworCisgICAgaWYgKCBlcnJvciApCisgICAgICBwc2hpbnRlcl9tb2R1bGVfY2xhc3NfcGljX2ZyZWUoIGxpYnJhcnkgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNocGljLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL3BzaHBpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MjFhYWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzaGludGVyL3BzaHBpYy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHBzaHBpYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSBzZXJ2aWNlcyBmb3IgcHNoaW50ZXIgbW9kdWxlLiAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOSwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1BTSFBJQ19IX18KKyNkZWZpbmUgX19QU0hQSUNfSF9fCisKKworRlRfQkVHSU5fSEVBREVSCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cGljLmgiCisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIFBTSElOVEVSX0lOVEVSRkFDRV9HRVQgIHBzaGludGVyX2ludGVyZmFjZQorCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgiCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTSGludGVyUElDXworICB7CisgICAgUFNIaW50ZXJfSW50ZXJmYWNlICBwc2hpbnRlcl9pbnRlcmZhY2U7CisKKyAgfSBQU0hpbnRlclBJQzsKKworCisjZGVmaW5lIEdFVF9QSUMoIGxpYiApICAoIChQU0hpbnRlclBJQyopKCAobGliKS0+cGljX2NvbnRhaW5lci5wc2hpbnRlciApICkKKworI2RlZmluZSBQU0hJTlRFUl9JTlRFUkZBQ0VfR0VUICAoIEdFVF9QSUMoIGxpYnJhcnkgKS0+cHNoaW50ZXJfaW50ZXJmYWNlICkKKworICAvKiBzZWUgcHNocGljLmMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiAqLworICB2b2lkCisgIHBzaGludGVyX21vZHVsZV9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisgIEZUX0Vycm9yCisgIHBzaGludGVyX21vZHVsZV9jbGFzc19waWNfaW5pdCggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworIC8qICovCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fUFNIUElDX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hyZWMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNocmVjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZjOWEzMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNocmVjLmMKQEAgLTAsMCArMSwxMjI1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc2hyZWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgUG9zdFNjcmlwdCBoaW50cyByZWNvcmRlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEtMjAwNCwgMjAwNywgMjAwOSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCIKKworI2luY2x1ZGUgInBzaHJlYy5oIgorI2luY2x1ZGUgInBzaGFsZ28uaCIKKworI2luY2x1ZGUgInBzaG50ZXJyLmgiCisKKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfcHNocmVjCisKKyNpZmRlZiBERUJVR19ISU5URVIKKyAgUFNfSGludHMgIHBzX2RlYnVnX2hpbnRzICAgICAgICAgPSAwOworICBpbnQgICAgICAgcHNfZGVidWdfbm9faG9yel9oaW50cyA9IDA7CisgIGludCAgICAgICBwc19kZWJ1Z19ub192ZXJ0X2hpbnRzID0gMDsKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgIFBTX0hJTlQgTUFOQUdFTUVOVCAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyogZGVzdHJveSBoaW50cyB0YWJsZSAqLworICBzdGF0aWMgdm9pZAorICBwc19oaW50X3RhYmxlX2RvbmUoIFBTX0hpbnRfVGFibGUgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgIG1lbW9yeSApCisgIHsKKyAgICBGVF9GUkVFKCB0YWJsZS0+aGludHMgKTsKKyAgICB0YWJsZS0+bnVtX2hpbnRzID0gMDsKKyAgICB0YWJsZS0+bWF4X2hpbnRzID0gMDsKKyAgfQorCisKKyAgLyogZW5zdXJlIHRoYXQgYSB0YWJsZSBjYW4gY29udGFpbiAiY291bnQiIGVsZW1lbnRzICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19oaW50X3RhYmxlX2Vuc3VyZSggUFNfSGludF9UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgIG1lbW9yeSApCisgIHsKKyAgICBGVF9VSW50ICAgb2xkX21heCA9IHRhYmxlLT5tYXhfaGludHM7CisgICAgRlRfVUludCAgIG5ld19tYXggPSBjb3VudDsKKyAgICBGVF9FcnJvciAgZXJyb3IgICA9IEZUX0Vycl9PazsKKworCisgICAgaWYgKCBuZXdfbWF4ID4gb2xkX21heCApCisgICAgeworICAgICAgLyogdHJ5IHRvIGdyb3cgdGhlIHRhYmxlICovCisgICAgICBuZXdfbWF4ID0gRlRfUEFEX0NFSUwoIG5ld19tYXgsIDggKTsKKyAgICAgIGlmICggIUZUX1JFTkVXX0FSUkFZKCB0YWJsZS0+aGludHMsIG9sZF9tYXgsIG5ld19tYXggKSApCisgICAgICAgIHRhYmxlLT5tYXhfaGludHMgPSBuZXdfbWF4OworICAgIH0KKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19oaW50X3RhYmxlX2FsbG9jKCBQU19IaW50X1RhYmxlICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICBQU19IaW50ICAgICAgICphaGludCApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfVUludCAgIGNvdW50OworICAgIFBTX0hpbnQgICBoaW50ID0gMDsKKworCisgICAgY291bnQgPSB0YWJsZS0+bnVtX2hpbnRzOworICAgIGNvdW50Kys7CisKKyAgICBpZiAoIGNvdW50ID49IHRhYmxlLT5tYXhfaGludHMgKQorICAgIHsKKyAgICAgIGVycm9yID0gcHNfaGludF90YWJsZV9lbnN1cmUoIHRhYmxlLCBjb3VudCwgbWVtb3J5ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGhpbnQgICAgICAgID0gdGFibGUtPmhpbnRzICsgY291bnQgLSAxOworICAgIGhpbnQtPnBvcyAgID0gMDsKKyAgICBoaW50LT5sZW4gICA9IDA7CisgICAgaGludC0+ZmxhZ3MgPSAwOworCisgICAgdGFibGUtPm51bV9oaW50cyA9IGNvdW50OworCisgIEV4aXQ6CisgICAgKmFoaW50ID0gaGludDsKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICBQU19NQVNLIE1BTkFHRU1FTlQgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qIGRlc3Ryb3kgbWFzayAqLworICBzdGF0aWMgdm9pZAorICBwc19tYXNrX2RvbmUoIFBTX01hc2sgICAgbWFzaywKKyAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApCisgIHsKKyAgICBGVF9GUkVFKCBtYXNrLT5ieXRlcyApOworICAgIG1hc2stPm51bV9iaXRzICA9IDA7CisgICAgbWFzay0+bWF4X2JpdHMgID0gMDsKKyAgICBtYXNrLT5lbmRfcG9pbnQgPSAwOworICB9CisKKworICAvKiBlbnN1cmUgdGhhdCBhIG1hc2sgY2FuIGNvbnRhaW4gImNvdW50IiBiaXRzICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19tYXNrX2Vuc3VyZSggUFNfTWFzayAgICBtYXNrLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgbWVtb3J5ICkKKyAgeworICAgIEZUX1VJbnQgICBvbGRfbWF4ID0gKCBtYXNrLT5tYXhfYml0cyArIDcgKSA+PiAzOworICAgIEZUX1VJbnQgICBuZXdfbWF4ID0gKCBjb3VudCAgICAgICAgICArIDcgKSA+PiAzOworICAgIEZUX0Vycm9yICBlcnJvciAgID0gRlRfRXJyX09rOworCisKKyAgICBpZiAoIG5ld19tYXggPiBvbGRfbWF4ICkKKyAgICB7CisgICAgICBuZXdfbWF4ID0gRlRfUEFEX0NFSUwoIG5ld19tYXgsIDggKTsKKyAgICAgIGlmICggIUZUX1JFTkVXX0FSUkFZKCBtYXNrLT5ieXRlcywgb2xkX21heCwgbmV3X21heCApICkKKyAgICAgICAgbWFzay0+bWF4X2JpdHMgPSBuZXdfbWF4ICogODsKKyAgICB9CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiB0ZXN0IGEgYml0IHZhbHVlIGluIGEgZ2l2ZW4gbWFzayAqLworICBzdGF0aWMgRlRfSW50CisgIHBzX21hc2tfdGVzdF9iaXQoIFBTX01hc2sgIG1hc2ssCisgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgIGlkeCApCisgIHsKKyAgICBpZiAoIChGVF9VSW50KWlkeCA+PSBtYXNrLT5udW1fYml0cyApCisgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtYXNrLT5ieXRlc1tpZHggPj4gM10gJiAoIDB4ODAgPj4gKCBpZHggJiA3ICkgKTsKKyAgfQorCisKKyAgLyogY2xlYXIgYSBnaXZlbiBiaXQgKi8KKyAgc3RhdGljIHZvaWQKKyAgcHNfbWFza19jbGVhcl9iaXQoIFBTX01hc2sgIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICBpZHggKQorICB7CisgICAgRlRfQnl0ZSogIHA7CisKKworICAgIGlmICggKEZUX1VJbnQpaWR4ID49IG1hc2stPm51bV9iaXRzICkKKyAgICAgIHJldHVybjsKKworICAgIHAgICAgPSBtYXNrLT5ieXRlcyArICggaWR4ID4+IDMgKTsKKyAgICBwWzBdID0gKEZUX0J5dGUpKCBwWzBdICYgfiggMHg4MCA+PiAoIGlkeCAmIDcgKSApICk7CisgIH0KKworCisgIC8qIHNldCBhIGdpdmVuIGJpdCwgcG9zc2libHkgZ3JvdyB0aGUgbWFzayAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgcHNfbWFza19zZXRfYml0KCBQU19NYXNrICAgIG1hc2ssCisgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX0J5dGUqICBwOworCisKKyAgICBpZiAoIGlkeCA8IDAgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCAoRlRfVUludClpZHggPj0gbWFzay0+bnVtX2JpdHMgKQorICAgIHsKKyAgICAgIGVycm9yID0gcHNfbWFza19lbnN1cmUoIG1hc2ssIGlkeCArIDEsIG1lbW9yeSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgbWFzay0+bnVtX2JpdHMgPSBpZHggKyAxOworICAgIH0KKworICAgIHAgICAgPSBtYXNrLT5ieXRlcyArICggaWR4ID4+IDMgKTsKKyAgICBwWzBdID0gKEZUX0J5dGUpKCBwWzBdIHwgKCAweDgwID4+ICggaWR4ICYgNyApICkgKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZGVzdHJveSBtYXNrIHRhYmxlICovCisgIHN0YXRpYyB2b2lkCisgIHBzX21hc2tfdGFibGVfZG9uZSggUFNfTWFza19UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5ICkKKyAgeworICAgIEZUX1VJbnQgIGNvdW50ID0gdGFibGUtPm1heF9tYXNrczsKKyAgICBQU19NYXNrICBtYXNrICA9IHRhYmxlLT5tYXNrczsKKworCisgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0sIG1hc2srKyApCisgICAgICBwc19tYXNrX2RvbmUoIG1hc2ssIG1lbW9yeSApOworCisgICAgRlRfRlJFRSggdGFibGUtPm1hc2tzICk7CisgICAgdGFibGUtPm51bV9tYXNrcyA9IDA7CisgICAgdGFibGUtPm1heF9tYXNrcyA9IDA7CisgIH0KKworCisgIC8qIGVuc3VyZSB0aGF0IGEgbWFzayB0YWJsZSBjYW4gY29udGFpbiAiY291bnQiIG1hc2tzICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19tYXNrX3RhYmxlX2Vuc3VyZSggUFNfTWFza19UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgIG1lbW9yeSApCisgIHsKKyAgICBGVF9VSW50ICAgb2xkX21heCA9IHRhYmxlLT5tYXhfbWFza3M7CisgICAgRlRfVUludCAgIG5ld19tYXggPSBjb3VudDsKKyAgICBGVF9FcnJvciAgZXJyb3IgICA9IEZUX0Vycl9PazsKKworCisgICAgaWYgKCBuZXdfbWF4ID4gb2xkX21heCApCisgICAgeworICAgICAgbmV3X21heCA9IEZUX1BBRF9DRUlMKCBuZXdfbWF4LCA4ICk7CisgICAgICBpZiAoICFGVF9SRU5FV19BUlJBWSggdGFibGUtPm1hc2tzLCBvbGRfbWF4LCBuZXdfbWF4ICkgKQorICAgICAgICB0YWJsZS0+bWF4X21hc2tzID0gbmV3X21heDsKKyAgICB9CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBhbGxvY2F0ZSBhIG5ldyBtYXNrIGluIGEgdGFibGUgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIHBzX21hc2tfdGFibGVfYWxsb2MoIFBTX01hc2tfVGFibGUgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgIFBTX01hc2sgICAgICAgKmFtYXNrICkKKyAgeworICAgIEZUX1VJbnQgICBjb3VudDsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgUFNfTWFzayAgIG1hc2sgID0gMDsKKworCisgICAgY291bnQgPSB0YWJsZS0+bnVtX21hc2tzOworICAgIGNvdW50Kys7CisKKyAgICBpZiAoIGNvdW50ID4gdGFibGUtPm1heF9tYXNrcyApCisgICAgeworICAgICAgZXJyb3IgPSBwc19tYXNrX3RhYmxlX2Vuc3VyZSggdGFibGUsIGNvdW50LCBtZW1vcnkgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgbWFzayAgICAgICAgICAgICA9IHRhYmxlLT5tYXNrcyArIGNvdW50IC0gMTsKKyAgICBtYXNrLT5udW1fYml0cyAgID0gMDsKKyAgICBtYXNrLT5lbmRfcG9pbnQgID0gMDsKKyAgICB0YWJsZS0+bnVtX21hc2tzID0gY291bnQ7CisKKyAgRXhpdDoKKyAgICAqYW1hc2sgPSBtYXNrOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogcmV0dXJuIGxhc3QgaGludCBtYXNrIGluIGEgdGFibGUsIGNyZWF0ZSBvbmUgaWYgdGhlIHRhYmxlIGlzIGVtcHR5ICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19tYXNrX3RhYmxlX2xhc3QoIFBTX01hc2tfVGFibGUgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICBQU19NYXNrICAgICAgICphbWFzayApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfVUludCAgIGNvdW50OworICAgIFBTX01hc2sgICBtYXNrOworCisKKyAgICBjb3VudCA9IHRhYmxlLT5udW1fbWFza3M7CisgICAgaWYgKCBjb3VudCA9PSAwICkKKyAgICB7CisgICAgICBlcnJvciA9IHBzX21hc2tfdGFibGVfYWxsb2MoIHRhYmxlLCBtZW1vcnksICZtYXNrICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKyAgICBlbHNlCisgICAgICBtYXNrID0gdGFibGUtPm1hc2tzICsgY291bnQgLSAxOworCisgIEV4aXQ6CisgICAgKmFtYXNrID0gbWFzazsKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIHNldCBhIG5ldyBtYXNrIHRvIGEgZ2l2ZW4gYml0IHJhbmdlICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19tYXNrX3RhYmxlX3NldF9iaXRzKCBQU19NYXNrX1RhYmxlICAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0J5dGUqICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBiaXRfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgYml0X2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICAgbWVtb3J5ICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvcjsKKyAgICBQU19NYXNrICAgbWFzazsKKworCisgICAgZXJyb3IgPSBwc19tYXNrX3RhYmxlX2xhc3QoIHRhYmxlLCBtZW1vcnksICZtYXNrICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBlcnJvciA9IHBzX21hc2tfZW5zdXJlKCBtYXNrLCBiaXRfY291bnQsIG1lbW9yeSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgbWFzay0+bnVtX2JpdHMgPSBiaXRfY291bnQ7CisKKyAgICAvKiBub3csIGNvcHkgYml0cyAqLworICAgIHsKKyAgICAgIEZUX0J5dGUqICByZWFkICA9IChGVF9CeXRlKilzb3VyY2UgKyAoIGJpdF9wb3MgPj4gMyApOworICAgICAgRlRfSW50ICAgIHJtYXNrID0gMHg4MCA+PiAoIGJpdF9wb3MgJiA3ICk7CisgICAgICBGVF9CeXRlKiAgd3JpdGUgPSBtYXNrLT5ieXRlczsKKyAgICAgIEZUX0ludCAgICB3bWFzayA9IDB4ODA7CisgICAgICBGVF9JbnQgICAgdmFsOworCisKKyAgICAgIGZvciAoIDsgYml0X2NvdW50ID4gMDsgYml0X2NvdW50LS0gKQorICAgICAgeworICAgICAgICB2YWwgPSB3cml0ZVswXSAmIH53bWFzazsKKworICAgICAgICBpZiAoIHJlYWRbMF0gJiBybWFzayApCisgICAgICAgICAgdmFsIHw9IHdtYXNrOworCisgICAgICAgIHdyaXRlWzBdID0gKEZUX0J5dGUpdmFsOworCisgICAgICAgIHJtYXNrID4+PSAxOworICAgICAgICBpZiAoIHJtYXNrID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgcmVhZCsrOworICAgICAgICAgIHJtYXNrID0gMHg4MDsKKyAgICAgICAgfQorCisgICAgICAgIHdtYXNrID4+PSAxOworICAgICAgICBpZiAoIHdtYXNrID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgd3JpdGUrKzsKKyAgICAgICAgICB3bWFzayA9IDB4ODA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIHRlc3Qgd2hldGhlciB0d28gbWFza3MgaW4gYSB0YWJsZSBpbnRlcnNlY3QgKi8KKyAgc3RhdGljIEZUX0ludAorICBwc19tYXNrX3RhYmxlX3Rlc3RfaW50ZXJzZWN0KCBQU19NYXNrX1RhYmxlICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgaW5kZXgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBpbmRleDIgKQorICB7CisgICAgUFNfTWFzayAgIG1hc2sxICA9IHRhYmxlLT5tYXNrcyArIGluZGV4MTsKKyAgICBQU19NYXNrICAgbWFzazIgID0gdGFibGUtPm1hc2tzICsgaW5kZXgyOworICAgIEZUX0J5dGUqICBwMSAgICAgPSBtYXNrMS0+Ynl0ZXM7CisgICAgRlRfQnl0ZSogIHAyICAgICA9IG1hc2syLT5ieXRlczsKKyAgICBGVF9VSW50ICAgY291bnQxID0gbWFzazEtPm51bV9iaXRzOworICAgIEZUX1VJbnQgICBjb3VudDIgPSBtYXNrMi0+bnVtX2JpdHM7CisgICAgRlRfVUludCAgIGNvdW50OworCisKKyAgICBjb3VudCA9IEZUX01JTiggY291bnQxLCBjb3VudDIgKTsKKyAgICBmb3IgKCA7IGNvdW50ID49IDg7IGNvdW50IC09IDggKQorICAgIHsKKyAgICAgIGlmICggcDFbMF0gJiBwMlswXSApCisgICAgICAgIHJldHVybiAxOworCisgICAgICBwMSsrOworICAgICAgcDIrKzsKKyAgICB9CisKKyAgICBpZiAoIGNvdW50ID09IDAgKQorICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gKCBwMVswXSAmIHAyWzBdICkgJiB+KCAweEZGID4+IGNvdW50ICk7CisgIH0KKworCisgIC8qIG1lcmdlIHR3byBtYXNrcywgdXNlZCBieSBwc19tYXNrX3RhYmxlX21lcmdlX2FsbCAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgcHNfbWFza190YWJsZV9tZXJnZSggUFNfTWFza19UYWJsZSAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIGluZGV4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgaW5kZXgyLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICBtZW1vcnkgKQorICB7CisgICAgRlRfVUludCAgIHRlbXA7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICAvKiBzd2FwIGluZGV4MSBhbmQgaW5kZXgyIHNvIHRoYXQgaW5kZXgxIDwgaW5kZXgyICovCisgICAgaWYgKCBpbmRleDEgPiBpbmRleDIgKQorICAgIHsKKyAgICAgIHRlbXAgICA9IGluZGV4MTsKKyAgICAgIGluZGV4MSA9IGluZGV4MjsKKyAgICAgIGluZGV4MiA9IHRlbXA7CisgICAgfQorCisgICAgaWYgKCBpbmRleDEgPCBpbmRleDIgJiYgaW5kZXgxID49IDAgJiYgaW5kZXgyIDwgKEZUX0ludCl0YWJsZS0+bnVtX21hc2tzICkKKyAgICB7CisgICAgICAvKiB3ZSBuZWVkIHRvIG1lcmdlIHRoZSBiaXRzZXRzIG9mIGluZGV4MSBhbmQgaW5kZXgyIHdpdGggYSAqLworICAgICAgLyogc2ltcGxlIHVuaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIFBTX01hc2sgIG1hc2sxICA9IHRhYmxlLT5tYXNrcyArIGluZGV4MTsKKyAgICAgIFBTX01hc2sgIG1hc2syICA9IHRhYmxlLT5tYXNrcyArIGluZGV4MjsKKyAgICAgIEZUX1VJbnQgIGNvdW50MSA9IG1hc2sxLT5udW1fYml0czsKKyAgICAgIEZUX1VJbnQgIGNvdW50MiA9IG1hc2syLT5udW1fYml0czsKKyAgICAgIEZUX0ludCAgIGRlbHRhOworCisKKyAgICAgIGlmICggY291bnQyID4gMCApCisgICAgICB7CisgICAgICAgIEZUX1VJbnQgICBwb3M7CisgICAgICAgIEZUX0J5dGUqICByZWFkOworICAgICAgICBGVF9CeXRlKiAgd3JpdGU7CisKKworICAgICAgICAvKiBpZiAiY291bnQyIiBpcyBncmVhdGVyIHRoYW4gImNvdW50MSIsIHdlIG5lZWQgdG8gZ3JvdyB0aGUgKi8KKyAgICAgICAgLyogZmlyc3QgYml0c2V0LCBhbmQgY2xlYXIgdGhlIGhpZ2hlc3QgYml0cyAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggY291bnQyID4gY291bnQxICkKKyAgICAgICAgeworICAgICAgICAgIGVycm9yID0gcHNfbWFza19lbnN1cmUoIG1hc2sxLCBjb3VudDIsIG1lbW9yeSApOworICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgICAgZm9yICggcG9zID0gY291bnQxOyBwb3MgPCBjb3VudDI7IHBvcysrICkKKyAgICAgICAgICAgIHBzX21hc2tfY2xlYXJfYml0KCBtYXNrMSwgcG9zICk7CisgICAgICAgIH0KKworICAgICAgICAvKiBtZXJnZSAodW5pdGUpIHRoZSBiaXRzZXRzICovCisgICAgICAgIHJlYWQgID0gbWFzazItPmJ5dGVzOworICAgICAgICB3cml0ZSA9IG1hc2sxLT5ieXRlczsKKyAgICAgICAgcG9zICAgPSAoRlRfVUludCkoICggY291bnQyICsgNyApID4+IDMgKTsKKworICAgICAgICBmb3IgKCA7IHBvcyA+IDA7IHBvcy0tICkKKyAgICAgICAgeworICAgICAgICAgIHdyaXRlWzBdID0gKEZUX0J5dGUpKCB3cml0ZVswXSB8IHJlYWRbMF0gKTsKKyAgICAgICAgICB3cml0ZSsrOworICAgICAgICAgIHJlYWQrKzsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiBOb3csIHJlbW92ZSAibWFzazIiIGZyb20gdGhlIGxpc3QuICBXZSBuZWVkIHRvIGtlZXAgdGhlIG1hc2tzICovCisgICAgICAvKiBzb3J0ZWQgaW4gb3JkZXIgb2YgaW1wb3J0YW5jZSwgc28gbW92ZSB0YWJsZSBlbGVtZW50cy4gICAgICAgICovCisgICAgICBtYXNrMi0+bnVtX2JpdHMgID0gMDsKKyAgICAgIG1hc2syLT5lbmRfcG9pbnQgPSAwOworCisgICAgICBkZWx0YSA9IHRhYmxlLT5udW1fbWFza3MgLSAxIC0gaW5kZXgyOyAvKiBudW1iZXIgb2YgbWFza3MgdG8gbW92ZSAqLworICAgICAgaWYgKCBkZWx0YSA+IDAgKQorICAgICAgeworICAgICAgICAvKiBtb3ZlIHRvIGVuZCBvZiB0YWJsZSBmb3IgcmV1c2UgKi8KKyAgICAgICAgUFNfTWFza1JlYyAgZHVtbXkgPSAqbWFzazI7CisKKworICAgICAgICBmdF9tZW1tb3ZlKCBtYXNrMiwgbWFzazIgKyAxLCBkZWx0YSAqIHNpemVvZiAoIFBTX01hc2tSZWMgKSApOworCisgICAgICAgIG1hc2syW2RlbHRhXSA9IGR1bW15OworICAgICAgfQorCisgICAgICB0YWJsZS0+bnVtX21hc2tzLS07CisgICAgfQorICAgIGVsc2UKKyAgICAgIEZUX1RSQUNFMCgoICJwc19tYXNrX3RhYmxlX21lcmdlOiBpZ25vcmluZyBpbnZhbGlkIGluZGljZXMgKCVkLCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgIGluZGV4MSwgaW5kZXgyICkpOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBUcnkgdG8gbWVyZ2UgYWxsIG1hc2tzIGluIGEgZ2l2ZW4gdGFibGUuICBUaGlzIGlzIHVzZWQgdG8gbWVyZ2UgKi8KKyAgLyogYWxsIGNvdW50ZXIgbWFza3MgaW50byBpbmRlcGVuZGVudCBjb3VudGVyICJwYXRocyIuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgcHNfbWFza190YWJsZV9tZXJnZV9hbGwoIFBTX01hc2tfVGFibGUgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5ICkKKyAgeworICAgIEZUX0ludCAgICBpbmRleDEsIGluZGV4MjsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIGZvciAoIGluZGV4MSA9IHRhYmxlLT5udW1fbWFza3MgLSAxOyBpbmRleDEgPiAwOyBpbmRleDEtLSApCisgICAgeworICAgICAgZm9yICggaW5kZXgyID0gaW5kZXgxIC0gMTsgaW5kZXgyID49IDA7IGluZGV4Mi0tICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBwc19tYXNrX3RhYmxlX3Rlc3RfaW50ZXJzZWN0KCB0YWJsZSwgaW5kZXgxLCBpbmRleDIgKSApCisgICAgICAgIHsKKyAgICAgICAgICBlcnJvciA9IHBzX21hc2tfdGFibGVfbWVyZ2UoIHRhYmxlLCBpbmRleDIsIGluZGV4MSwgbWVtb3J5ICk7CisgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICBQU19ESU1FTlNJT04gTUFOQUdFTUVOVCAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBmaW5hbGl6ZSBhIGdpdmVuIGRpbWVuc2lvbiAqLworICBzdGF0aWMgdm9pZAorICBwc19kaW1lbnNpb25fZG9uZSggUFNfRGltZW5zaW9uICBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgIG1lbW9yeSApCisgIHsKKyAgICBwc19tYXNrX3RhYmxlX2RvbmUoICZkaW1lbnNpb24tPmNvdW50ZXJzLCBtZW1vcnkgKTsKKyAgICBwc19tYXNrX3RhYmxlX2RvbmUoICZkaW1lbnNpb24tPm1hc2tzLCAgICBtZW1vcnkgKTsKKyAgICBwc19oaW50X3RhYmxlX2RvbmUoICZkaW1lbnNpb24tPmhpbnRzLCAgICBtZW1vcnkgKTsKKyAgfQorCisKKyAgLyogaW5pdGlhbGl6ZSBhIGdpdmVuIGRpbWVuc2lvbiAqLworICBzdGF0aWMgdm9pZAorICBwc19kaW1lbnNpb25faW5pdCggUFNfRGltZW5zaW9uICBkaW1lbnNpb24gKQorICB7CisgICAgZGltZW5zaW9uLT5oaW50cy5udW1faGludHMgICAgPSAwOworICAgIGRpbWVuc2lvbi0+bWFza3MubnVtX21hc2tzICAgID0gMDsKKyAgICBkaW1lbnNpb24tPmNvdW50ZXJzLm51bV9tYXNrcyA9IDA7CisgIH0KKworCisjaWYgMAorCisgIC8qIHNldCBhIGJpdCBhdCBhIGdpdmVuIGluZGV4IGluIHRoZSBjdXJyZW50IGhpbnQgbWFzayAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgcHNfZGltZW5zaW9uX3NldF9tYXNrX2JpdCggUFNfRGltZW5zaW9uICBkaW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgIG1lbW9yeSApCisgIHsKKyAgICBQU19NYXNrICAgbWFzazsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIC8qIGdldCBsYXN0IGhpbnQgbWFzayAqLworICAgIGVycm9yID0gcHNfbWFza190YWJsZV9sYXN0KCAmZGltLT5tYXNrcywgbWVtb3J5LCAmbWFzayApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgZXJyb3IgPSBwc19tYXNrX3NldF9iaXQoIG1hc2ssIGlkeCwgbWVtb3J5ICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworI2VuZGlmCisKKyAgLyogc2V0IHRoZSBlbmQgcG9pbnQgaW4gYSBtYXNrLCBjYWxsZWQgZnJvbSAiRW5kIiAmICJSZXNldCIgbWV0aG9kcyAqLworICBzdGF0aWMgdm9pZAorICBwc19kaW1lbnNpb25fZW5kX21hc2soIFBTX0RpbWVuc2lvbiAgZGltLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgZW5kX3BvaW50ICkKKyAgeworICAgIEZUX1VJbnQgIGNvdW50ID0gZGltLT5tYXNrcy5udW1fbWFza3M7CisKKworICAgIGlmICggY291bnQgPiAwICkKKyAgICB7CisgICAgICBQU19NYXNrICBtYXNrID0gZGltLT5tYXNrcy5tYXNrcyArIGNvdW50IC0gMTsKKworCisgICAgICBtYXNrLT5lbmRfcG9pbnQgPSBlbmRfcG9pbnQ7CisgICAgfQorICB9CisKKworICAvKiBzZXQgdGhlIGVuZCBwb2ludCBpbiB0aGUgY3VycmVudCBtYXNrLCB0aGVuIGNyZWF0ZSBhIG5ldyBlbXB0eSBvbmUgKi8KKyAgLyogKGNhbGxlZCBieSAiUmVzZXQiIG1ldGhvZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19kaW1lbnNpb25fcmVzZXRfbWFzayggUFNfRGltZW5zaW9uICBkaW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIGVuZF9wb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ICkKKyAgeworICAgIFBTX01hc2sgIG1hc2s7CisKKworICAgIC8qIGVuZCBjdXJyZW50IG1hc2sgKi8KKyAgICBwc19kaW1lbnNpb25fZW5kX21hc2soIGRpbSwgZW5kX3BvaW50ICk7CisKKyAgICAvKiBhbGxvY2F0ZSBuZXcgb25lICovCisgICAgcmV0dXJuIHBzX21hc2tfdGFibGVfYWxsb2MoICZkaW0tPm1hc2tzLCBtZW1vcnksICZtYXNrICk7CisgIH0KKworCisgIC8qIHNldCBhIG5ldyBtYXNrLCBjYWxsZWQgZnJvbSB0aGUgIlQyU3RlbSIgbWV0aG9kICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19kaW1lbnNpb25fc2V0X21hc2tfYml0cyggUFNfRGltZW5zaW9uICAgIGRpbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0J5dGUqICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgc291cmNlX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBzb3VyY2VfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBlbmRfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICAgbWVtb3J5ICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgLyogcmVzZXQgY3VycmVudCBtYXNrLCBpZiBhbnkgKi8KKyAgICBlcnJvciA9IHBzX2RpbWVuc2lvbl9yZXNldF9tYXNrKCBkaW0sIGVuZF9wb2ludCwgbWVtb3J5ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBzZXQgYml0cyBpbiBuZXcgbWFzayAqLworICAgIGVycm9yID0gcHNfbWFza190YWJsZV9zZXRfYml0cyggJmRpbS0+bWFza3MsIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wb3MsIHNvdXJjZV9iaXRzLCBtZW1vcnkgKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogYWRkIGEgbmV3IHNpbmdsZSBzdGVtIChjYWxsZWQgZnJvbSAiVDFTdGVtIiBtZXRob2QpICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19kaW1lbnNpb25fYWRkX3Qxc3RlbSggUFNfRGltZW5zaW9uICBkaW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgKmFpbmRleCApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfVUludCAgIGZsYWdzID0gMDsKKworCisgICAgLyogZGV0ZWN0IGdob3N0IHN0ZW0gKi8KKyAgICBpZiAoIGxlbiA8IDAgKQorICAgIHsKKyAgICAgIGZsYWdzIHw9IFBTX0hJTlRfRkxBR19HSE9TVDsKKyAgICAgIGlmICggbGVuID09IC0yMSApCisgICAgICB7CisgICAgICAgIGZsYWdzIHw9IFBTX0hJTlRfRkxBR19CT1RUT007CisgICAgICAgIHBvcyAgICs9IGxlbjsKKyAgICAgIH0KKyAgICAgIGxlbiA9IDA7CisgICAgfQorCisgICAgaWYgKCBhaW5kZXggKQorICAgICAgKmFpbmRleCA9IC0xOworCisgICAgLyogbm93LCBsb29rdXAgc3RlbSBpbiB0aGUgY3VycmVudCBoaW50cyB0YWJsZSAqLworICAgIHsKKyAgICAgIFBTX01hc2sgIG1hc2s7CisgICAgICBGVF9VSW50ICBpZHg7CisgICAgICBGVF9VSW50ICBtYXggICA9IGRpbS0+aGludHMubnVtX2hpbnRzOworICAgICAgUFNfSGludCAgaGludCAgPSBkaW0tPmhpbnRzLmhpbnRzOworCisKKyAgICAgIGZvciAoIGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyssIGhpbnQrKyApCisgICAgICB7CisgICAgICAgIGlmICggaGludC0+cG9zID09IHBvcyAmJiBoaW50LT5sZW4gPT0gbGVuICkKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgLyogd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgaGludCBpbiB0aGUgdGFibGUgKi8KKyAgICAgIGlmICggaWR4ID49IG1heCApCisgICAgICB7CisgICAgICAgIGVycm9yID0gcHNfaGludF90YWJsZV9hbGxvYyggJmRpbS0+aGludHMsIG1lbW9yeSwgJmhpbnQgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIGhpbnQtPnBvcyAgID0gcG9zOworICAgICAgICBoaW50LT5sZW4gICA9IGxlbjsKKyAgICAgICAgaGludC0+ZmxhZ3MgPSBmbGFnczsKKyAgICAgIH0KKworICAgICAgLyogbm93LCBzdG9yZSB0aGUgaGludCBpbiB0aGUgY3VycmVudCBtYXNrICovCisgICAgICBlcnJvciA9IHBzX21hc2tfdGFibGVfbGFzdCggJmRpbS0+bWFza3MsIG1lbW9yeSwgJm1hc2sgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGVycm9yID0gcHNfbWFza19zZXRfYml0KCBtYXNrLCBpZHgsIG1lbW9yeSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgaWYgKCBhaW5kZXggKQorICAgICAgICAqYWluZGV4ID0gKEZUX0ludClpZHg7CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBhZGQgYSAiaHN0ZW0zL3ZzdGVtMyIgY291bnRlciB0byBvdXIgZGltZW5zaW9uIHRhYmxlICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19kaW1lbnNpb25fYWRkX2NvdW50ZXIoIFBTX0RpbWVuc2lvbiAgZGltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgaGludDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICBoaW50MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgIGhpbnQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciAgID0gRlRfRXJyX09rOworICAgIEZUX1VJbnQgICBjb3VudCAgID0gZGltLT5jb3VudGVycy5udW1fbWFza3M7CisgICAgUFNfTWFzayAgIGNvdW50ZXIgPSBkaW0tPmNvdW50ZXJzLm1hc2tzOworCisKKyAgICAvKiB0cnkgdG8gZmluZCBhbiBleGlzdGluZyBjb3VudGVyIG1hc2sgdGhhdCBhbHJlYWR5IHVzZXMgKi8KKyAgICAvKiBvbmUgb2YgdGhlc2Ugc3RlbXMgaGVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSwgY291bnRlcisrICkKKyAgICB7CisgICAgICBpZiAoIHBzX21hc2tfdGVzdF9iaXQoIGNvdW50ZXIsIGhpbnQxICkgfHwKKyAgICAgICAgICAgcHNfbWFza190ZXN0X2JpdCggY291bnRlciwgaGludDIgKSB8fAorICAgICAgICAgICBwc19tYXNrX3Rlc3RfYml0KCBjb3VudGVyLCBoaW50MyApICkKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyogY3JlYXRlIGEgbmV3IGNvdW50ZXIgd2hlbiBuZWVkZWQgKi8KKyAgICBpZiAoIGNvdW50ID09IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gcHNfbWFza190YWJsZV9hbGxvYyggJmRpbS0+Y291bnRlcnMsIG1lbW9yeSwgJmNvdW50ZXIgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLyogbm93LCBzZXQgdGhlIGJpdHMgZm9yIG91ciBoaW50cyBpbiB0aGUgY291bnRlciBtYXNrICovCisgICAgZXJyb3IgPSBwc19tYXNrX3NldF9iaXQoIGNvdW50ZXIsIGhpbnQxLCBtZW1vcnkgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGVycm9yID0gcHNfbWFza19zZXRfYml0KCBjb3VudGVyLCBoaW50MiwgbWVtb3J5ICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBlcnJvciA9IHBzX21hc2tfc2V0X2JpdCggY291bnRlciwgaGludDMsIG1lbW9yeSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBlbmQgb2YgcmVjb3JkaW5nIHNlc3Npb24gZm9yIGEgZ2l2ZW4gZGltZW5zaW9uICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19kaW1lbnNpb25fZW5kKCBQU19EaW1lbnNpb24gIGRpbSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBlbmRfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ICkKKyAgeworICAgIC8qIGVuZCBoaW50IG1hc2sgdGFibGUgKi8KKyAgICBwc19kaW1lbnNpb25fZW5kX21hc2soIGRpbSwgZW5kX3BvaW50ICk7CisKKyAgICAvKiBtZXJnZSBhbGwgY291bnRlciBtYXNrcyBpbnRvIGluZGVwZW5kZW50ICJwYXRocyIgKi8KKyAgICByZXR1cm4gcHNfbWFza190YWJsZV9tZXJnZV9hbGwoICZkaW0tPmNvdW50ZXJzLCBtZW1vcnkgKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICBQU19SRUNPUkRFUiBNQU5BR0VNRU5UICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBkZXN0cm95IGhpbnRzICovCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgcHNfaGludHNfZG9uZSggUFNfSGludHMgIGhpbnRzICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gaGludHMtPm1lbW9yeTsKKworCisgICAgcHNfZGltZW5zaW9uX2RvbmUoICZoaW50cy0+ZGltZW5zaW9uWzBdLCBtZW1vcnkgKTsKKyAgICBwc19kaW1lbnNpb25fZG9uZSggJmhpbnRzLT5kaW1lbnNpb25bMV0sIG1lbW9yeSApOworCisgICAgaGludHMtPmVycm9yICA9IEZUX0Vycl9PazsKKyAgICBoaW50cy0+bWVtb3J5ID0gMDsKKyAgfQorCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgcHNfaGludHNfaW5pdCggUFNfSGludHMgICBoaW50cywKKyAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgKQorICB7CisgICAgRlRfTUVNX1pFUk8oIGhpbnRzLCBzaXplb2YgKCAqaGludHMgKSApOworICAgIGhpbnRzLT5tZW1vcnkgPSBtZW1vcnk7CisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgLyogaW5pdGlhbGl6ZSBhIGhpbnRzIGZvciBhIG5ldyBzZXNzaW9uICovCisgIHN0YXRpYyB2b2lkCisgIHBzX2hpbnRzX29wZW4oIFBTX0hpbnRzICAgICAgaGludHMsCisgICAgICAgICAgICAgICAgIFBTX0hpbnRfVHlwZSAgaGludF90eXBlICkKKyAgeworICAgIHN3aXRjaCAoIGhpbnRfdHlwZSApCisgICAgeworICAgIGNhc2UgUFNfSElOVF9UWVBFXzE6CisgICAgY2FzZSBQU19ISU5UX1RZUEVfMjoKKyAgICAgIGhpbnRzLT5lcnJvciAgICAgPSBGVF9FcnJfT2s7CisgICAgICBoaW50cy0+aGludF90eXBlID0gaGludF90eXBlOworCisgICAgICBwc19kaW1lbnNpb25faW5pdCggJmhpbnRzLT5kaW1lbnNpb25bMF0gKTsKKyAgICAgIHBzX2RpbWVuc2lvbl9pbml0KCAmaGludHMtPmRpbWVuc2lvblsxXSApOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgaGludHMtPmVycm9yICAgICA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBoaW50cy0+aGludF90eXBlID0gaGludF90eXBlOworCisgICAgICBGVF9UUkFDRTAoKCAicHNfaGludHNfb3BlbjogaW52YWxpZCBjaGFyc3RyaW5nIHR5cGVcbiIgKSk7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKworCisgIC8qIGFkZCBvbmUgb3IgbW9yZSBzdGVtcyB0byB0aGUgY3VycmVudCBoaW50cyB0YWJsZSAqLworICBzdGF0aWMgdm9pZAorICBwc19oaW50c19zdGVtKCBQU19IaW50cyAgaGludHMsCisgICAgICAgICAgICAgICAgIEZUX0ludCAgICBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgRlRfTG9uZyogIHN0ZW1zICkKKyAgeworICAgIGlmICggIWhpbnRzLT5lcnJvciApCisgICAgeworICAgICAgLyogbGltaXQgImRpbWVuc2lvbiIgdG8gMC4uMSAqLworICAgICAgaWYgKCBkaW1lbnNpb24gPCAwIHx8IGRpbWVuc2lvbiA+IDEgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTAoKCAicHNfaGludHNfc3RlbTogaW52YWxpZCBkaW1lbnNpb24gKCVkKSB1c2VkXG4iLAorICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb24gKSk7CisgICAgICAgIGRpbWVuc2lvbiA9ICggZGltZW5zaW9uICE9IDAgKTsKKyAgICAgIH0KKworICAgICAgLyogcmVjb3JkIHRoZSBzdGVtcyBpbiB0aGUgY3VycmVudCBoaW50cy9tYXNrcyB0YWJsZSAqLworICAgICAgc3dpdGNoICggaGludHMtPmhpbnRfdHlwZSApCisgICAgICB7CisgICAgICBjYXNlIFBTX0hJTlRfVFlQRV8xOiAgLyogVHlwZSAxICJoc3RlbSIgb3IgInZzdGVtIiBvcGVyYXRvciAqLworICAgICAgY2FzZSBQU19ISU5UX1RZUEVfMjogIC8qIFR5cGUgMiAiaHN0ZW0iIG9yICJ2c3RlbSIgb3BlcmF0b3IgKi8KKyAgICAgICAgeworICAgICAgICAgIFBTX0RpbWVuc2lvbiAgZGltID0gJmhpbnRzLT5kaW1lbnNpb25bZGltZW5zaW9uXTsKKworCisgICAgICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0sIHN0ZW1zICs9IDIgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGhpbnRzLT5tZW1vcnk7CisKKworICAgICAgICAgICAgZXJyb3IgPSBwc19kaW1lbnNpb25fYWRkX3Qxc3RlbSgKKyAgICAgICAgICAgICAgICAgICAgICBkaW0sIChGVF9JbnQpc3RlbXNbMF0sIChGVF9JbnQpc3RlbXNbMV0sCisgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5LCBOVUxMICk7CisgICAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfRVJST1IoKCAicHNfaGludHNfc3RlbTogY291bGQgbm90IGFkZCBzdGVtIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgKCVkLCVkKSB0byBoaW50cyB0YWJsZVxuIiwgc3RlbXNbMF0sIHN0ZW1zWzFdICkpOworCisgICAgICAgICAgICAgIGhpbnRzLT5lcnJvciA9IGVycm9yOworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIEZUX1RSQUNFMCgoICJwc19oaW50c19zdGVtOiBjYWxsZWQgd2l0aCBpbnZhbGlkIGhpbnQgdHlwZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICBoaW50cy0+aGludF90eXBlICkpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKworCisgIC8qIGFkZCBvbmUgVHlwZTEgY291bnRlciBzdGVtIHRvIHRoZSBjdXJyZW50IGhpbnRzIHRhYmxlICovCisgIHN0YXRpYyB2b2lkCisgIHBzX2hpbnRzX3Qxc3RlbTMoIFBTX0hpbnRzICAgaGludHMsCisgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgZGltZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIHN0ZW1zICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKworCisgICAgaWYgKCAhaGludHMtPmVycm9yICkKKyAgICB7CisgICAgICBQU19EaW1lbnNpb24gIGRpbTsKKyAgICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ID0gaGludHMtPm1lbW9yeTsKKyAgICAgIEZUX0ludCAgICAgICAgY291bnQ7CisgICAgICBGVF9JbnQgICAgICAgIGlkeFszXTsKKworCisgICAgICAvKiBsaW1pdCAiZGltZW5zaW9uIiB0byAwLi4xICovCisgICAgICBpZiAoIGRpbWVuc2lvbiA8IDAgfHwgZGltZW5zaW9uID4gMSApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFMCgoICJwc19oaW50c190MXN0ZW0zOiBpbnZhbGlkIGRpbWVuc2lvbiAoJWQpIHVzZWRcbiIsCisgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbiApKTsKKyAgICAgICAgZGltZW5zaW9uID0gKCBkaW1lbnNpb24gIT0gMCApOworICAgICAgfQorCisgICAgICBkaW0gPSAmaGludHMtPmRpbWVuc2lvbltkaW1lbnNpb25dOworCisgICAgICAvKiB0aGVyZSBtdXN0IGJlIDYgZWxlbWVudHMgaW4gdGhlICdzdGVtJyBhcnJheSAqLworICAgICAgaWYgKCBoaW50cy0+aGludF90eXBlID09IFBTX0hJTlRfVFlQRV8xICkKKyAgICAgIHsKKyAgICAgICAgLyogYWRkIHRoZSB0aHJlZSBzdGVtcyB0byBvdXIgaGludHMvbWFza3MgdGFibGUgKi8KKyAgICAgICAgZm9yICggY291bnQgPSAwOyBjb3VudCA8IDM7IGNvdW50KyssIHN0ZW1zICs9IDIgKQorICAgICAgICB7CisgICAgICAgICAgZXJyb3IgPSBwc19kaW1lbnNpb25fYWRkX3Qxc3RlbSggZGltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9JbnQpRklYRURfVE9fSU5UKCBzdGVtc1swXSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9JbnQpRklYRURfVE9fSU5UKCBzdGVtc1sxXSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSwgJmlkeFtjb3VudF0gKTsKKyAgICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIG5vdywgYWRkIHRoZSBoaW50cyB0byB0aGUgY291bnRlcnMgdGFibGUgKi8KKyAgICAgICAgZXJyb3IgPSBwc19kaW1lbnNpb25fYWRkX2NvdW50ZXIoIGRpbSwgaWR4WzBdLCBpZHhbMV0sIGlkeFsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIEZUX0VSUk9SKCggInBzX2hpbnRzX3Qxc3RlbTM6IGNhbGxlZCB3aXRoIGludmFsaWQgaGludCB0eXBlXG4iICkpOworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm47CisKKyAgRmFpbDoKKyAgICBGVF9FUlJPUigoICJwc19oaW50c190MXN0ZW0zOiBjb3VsZCBub3QgYWRkIGNvdW50ZXIgc3RlbXMgdG8gdGFibGVcbiIgKSk7CisgICAgaGludHMtPmVycm9yID0gZXJyb3I7CisgIH0KKworCisgIC8qIHJlc2V0IGhpbnRzIChvbmx5IHdpdGggVHlwZSAxIGhpbnRzKSAqLworICBzdGF0aWMgdm9pZAorICBwc19oaW50c190MXJlc2V0KCBQU19IaW50cyAgaGludHMsCisgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBlbmRfcG9pbnQgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICBpZiAoICFoaW50cy0+ZXJyb3IgKQorICAgIHsKKyAgICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gaGludHMtPm1lbW9yeTsKKworCisgICAgICBpZiAoIGhpbnRzLT5oaW50X3R5cGUgPT0gUFNfSElOVF9UWVBFXzEgKQorICAgICAgeworICAgICAgICBlcnJvciA9IHBzX2RpbWVuc2lvbl9yZXNldF9tYXNrKCAmaGludHMtPmRpbWVuc2lvblswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3BvaW50LCBtZW1vcnkgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgIGVycm9yID0gcHNfZGltZW5zaW9uX3Jlc2V0X21hc2soICZoaW50cy0+ZGltZW5zaW9uWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfcG9pbnQsIG1lbW9yeSApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIGludmFsaWQgaGludCB0eXBlICovCisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgICAgZ290byBGYWlsOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm47CisKKyAgRmFpbDoKKyAgICBoaW50cy0+ZXJyb3IgPSBlcnJvcjsKKyAgfQorCisKKyAgLyogVHlwZTIgImhpbnRtYXNrIiBvcGVyYXRvciwgYWRkIGEgbmV3IGhpbnRtYXNrIHRvIGVhY2ggZGlyZWN0aW9uICovCisgIHN0YXRpYyB2b2lkCisgIHBzX2hpbnRzX3QybWFzayggUFNfSGludHMgICAgICAgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBlbmRfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGJpdF9jb3VudCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9CeXRlKiAgYnl0ZXMgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICBpZiAoICFoaW50cy0+ZXJyb3IgKQorICAgIHsKKyAgICAgIFBTX0RpbWVuc2lvbiAgZGltICAgID0gaGludHMtPmRpbWVuc2lvbjsKKyAgICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ID0gaGludHMtPm1lbW9yeTsKKyAgICAgIEZUX1VJbnQgICAgICAgY291bnQxID0gZGltWzBdLmhpbnRzLm51bV9oaW50czsKKyAgICAgIEZUX1VJbnQgICAgICAgY291bnQyID0gZGltWzFdLmhpbnRzLm51bV9oaW50czsKKworCisgICAgICAvKiBjaGVjayBiaXQgY291bnQ7IG11c3QgYmUgZXF1YWwgdG8gY3VycmVudCB0b3RhbCBoaW50IGNvdW50ICovCisgICAgICBpZiAoIGJpdF9jb3VudCAhPSAgY291bnQxICsgY291bnQyICkKKyAgICAgIHsKKyAgICAgICAgRlRfVFJBQ0UwKCggInBzX2hpbnRzX3QybWFzazoiCisgICAgICAgICAgICAgICAgICAgICIgY2FsbGVkIHdpdGggaW52YWxpZCBiaXRjb3VudCAlZCAoaW5zdGVhZCBvZiAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgYml0X2NvdW50LCBjb3VudDEgKyBjb3VudDIgKSk7CisKKyAgICAgICAgLyogc2ltcGx5IGlnbm9yZSB0aGUgb3BlcmF0b3IgKi8KKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICAvKiBzZXQtdXAgbmV3IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGhpbnQgbWFzayBub3cgKi8KKyAgICAgIGVycm9yID0gcHNfZGltZW5zaW9uX3NldF9tYXNrX2JpdHMoICZkaW1bMF0sIGJ5dGVzLCBjb3VudDIsIGNvdW50MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9wb2ludCwgbWVtb3J5ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBlcnJvciA9IHBzX2RpbWVuc2lvbl9zZXRfbWFza19iaXRzKCAmZGltWzFdLCBieXRlcywgMCwgY291bnQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3BvaW50LCBtZW1vcnkgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEZhaWw7CisgICAgfQorICAgIHJldHVybjsKKworICBGYWlsOgorICAgIGhpbnRzLT5lcnJvciA9IGVycm9yOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBwc19oaW50c190MmNvdW50ZXIoIFBTX0hpbnRzICAgICAgICBoaW50cywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgYml0X2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX0J5dGUqICBieXRlcyApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgIGlmICggIWhpbnRzLT5lcnJvciApCisgICAgeworICAgICAgUFNfRGltZW5zaW9uICBkaW0gICAgPSBoaW50cy0+ZGltZW5zaW9uOworICAgICAgRlRfTWVtb3J5ICAgICBtZW1vcnkgPSBoaW50cy0+bWVtb3J5OworICAgICAgRlRfVUludCAgICAgICBjb3VudDEgPSBkaW1bMF0uaGludHMubnVtX2hpbnRzOworICAgICAgRlRfVUludCAgICAgICBjb3VudDIgPSBkaW1bMV0uaGludHMubnVtX2hpbnRzOworCisKKyAgICAgIC8qIGNoZWNrIGJpdCBjb3VudCwgbXVzdCBiZSBlcXVhbCB0byBjdXJyZW50IHRvdGFsIGhpbnQgY291bnQgKi8KKyAgICAgIGlmICggYml0X2NvdW50ICE9ICBjb3VudDEgKyBjb3VudDIgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTAoKCAicHNfaGludHNfdDJjb3VudGVyOiIKKyAgICAgICAgICAgICAgICAgICAgIiBjYWxsZWQgd2l0aCBpbnZhbGlkIGJpdGNvdW50ICVkIChpbnN0ZWFkIG9mICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICBiaXRfY291bnQsIGNvdW50MSArIGNvdW50MiApKTsKKworICAgICAgICAvKiBzaW1wbHkgaWdub3JlIHRoZSBvcGVyYXRvciAqLworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIC8qIHNldC11cCBuZXcgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgaGludCBtYXNrIG5vdyAqLworICAgICAgZXJyb3IgPSBwc19kaW1lbnNpb25fc2V0X21hc2tfYml0cyggJmRpbVswXSwgYnl0ZXMsIDAsIGNvdW50MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG1lbW9yeSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgZXJyb3IgPSBwc19kaW1lbnNpb25fc2V0X21hc2tfYml0cyggJmRpbVsxXSwgYnl0ZXMsIGNvdW50MSwgY291bnQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbWVtb3J5ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworICAgIH0KKyAgICByZXR1cm47CisKKyAgRmFpbDoKKyAgICBoaW50cy0+ZXJyb3IgPSBlcnJvcjsKKyAgfQorCisKKyAgLyogZW5kIHJlY29yZGluZyBzZXNzaW9uICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBwc19oaW50c19jbG9zZSggUFNfSGludHMgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgIGVuZF9wb2ludCApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgIGVycm9yID0gaGludHMtPmVycm9yOworICAgIGlmICggIWVycm9yICkKKyAgICB7CisgICAgICBGVF9NZW1vcnkgICAgIG1lbW9yeSA9IGhpbnRzLT5tZW1vcnk7CisgICAgICBQU19EaW1lbnNpb24gIGRpbSAgICA9IGhpbnRzLT5kaW1lbnNpb247CisKKworICAgICAgZXJyb3IgPSBwc19kaW1lbnNpb25fZW5kKCAmZGltWzBdLCBlbmRfcG9pbnQsIG1lbW9yeSApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgeworICAgICAgICBlcnJvciA9IHBzX2RpbWVuc2lvbl9lbmQoICZkaW1bMV0sIGVuZF9wb2ludCwgbWVtb3J5ICk7CisgICAgICB9CisgICAgfQorCisjaWZkZWYgREVCVUdfSElOVEVSCisgICAgaWYgKCAhZXJyb3IgKQorICAgICAgcHNfZGVidWdfaGludHMgPSBoaW50czsKKyNlbmRpZgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgIFRZUEUgMSBISU5UUyBSRUNPUkRJTkcgSU5URVJGQUNFICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgc3RhdGljIHZvaWQKKyAgdDFfaGludHNfb3BlbiggVDFfSGludHMgIGhpbnRzICkKKyAgeworICAgIHBzX2hpbnRzX29wZW4oIChQU19IaW50cyloaW50cywgUFNfSElOVF9UWVBFXzEgKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkCisgIHQxX2hpbnRzX3N0ZW0oIFQxX0hpbnRzICAgaGludHMsCisgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgZGltZW5zaW9uLAorICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGNvb3JkcyApCisgIHsKKyAgICBGVF9Qb3MgIHN0ZW1zWzJdOworCisKKyAgICBzdGVtc1swXSA9IEZJWEVEX1RPX0lOVCggY29vcmRzWzBdICk7CisgICAgc3RlbXNbMV0gPSBGSVhFRF9UT19JTlQoIGNvb3Jkc1sxXSApOworCisgICAgcHNfaGludHNfc3RlbSggKFBTX0hpbnRzKWhpbnRzLCBkaW1lbnNpb24sIDEsIHN0ZW1zICk7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHQxX2hpbnRzX2Z1bmNzX2luaXQoIFQxX0hpbnRzX0Z1bmNzUmVjKiAgZnVuY3MgKQorICB7CisgICAgRlRfTUVNX1pFUk8oIChjaGFyKilmdW5jcywgc2l6ZW9mICggKmZ1bmNzICkgKTsKKworICAgIGZ1bmNzLT5vcGVuICA9IChUMV9IaW50c19PcGVuRnVuYykgICAgdDFfaGludHNfb3BlbjsKKyAgICBmdW5jcy0+Y2xvc2UgPSAoVDFfSGludHNfQ2xvc2VGdW5jKSAgIHBzX2hpbnRzX2Nsb3NlOworICAgIGZ1bmNzLT5zdGVtICA9IChUMV9IaW50c19TZXRTdGVtRnVuYykgdDFfaGludHNfc3RlbTsKKyAgICBmdW5jcy0+c3RlbTMgPSAoVDFfSGludHNfU2V0U3RlbTNGdW5jKXBzX2hpbnRzX3Qxc3RlbTM7CisgICAgZnVuY3MtPnJlc2V0ID0gKFQxX0hpbnRzX1Jlc2V0RnVuYykgICBwc19oaW50c190MXJlc2V0OworICAgIGZ1bmNzLT5hcHBseSA9IChUMV9IaW50c19BcHBseUZ1bmMpICAgcHNfaGludHNfYXBwbHk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICBUWVBFIDIgSElOVFMgUkVDT1JESU5HIElOVEVSRkFDRSAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyB2b2lkCisgIHQyX2hpbnRzX29wZW4oIFQyX0hpbnRzICBoaW50cyApCisgIHsKKyAgICBwc19oaW50c19vcGVuKCAoUFNfSGludHMpaGludHMsIFBTX0hJTlRfVFlQRV8yICk7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIHQyX2hpbnRzX3N0ZW1zKCBUMl9IaW50cyAgIGhpbnRzLAorICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZHMgKQorICB7CisgICAgRlRfUG9zICBzdGVtc1szMl0sIHksIG47CisgICAgRlRfSW50ICB0b3RhbCA9IGNvdW50OworCisKKyAgICB5ID0gMDsKKyAgICB3aGlsZSAoIHRvdGFsID4gMCApCisgICAgeworICAgICAgLyogZGV0ZXJtaW5lIG51bWJlciBvZiBzdGVtcyB0byB3cml0ZSAqLworICAgICAgY291bnQgPSB0b3RhbDsKKyAgICAgIGlmICggY291bnQgPiAxNiApCisgICAgICAgIGNvdW50ID0gMTY7CisKKyAgICAgIC8qIGNvbXB1dGUgaW50ZWdlciBzdGVtIHBvc2l0aW9ucyBpbiBmb250IHVuaXRzICovCisgICAgICBmb3IgKCBuID0gMDsgbiA8IGNvdW50ICogMjsgbisrICkKKyAgICAgIHsKKyAgICAgICAgeSAgICAgICArPSBjb29yZHNbbl07CisgICAgICAgIHN0ZW1zW25dID0gRklYRURfVE9fSU5UKCB5ICk7CisgICAgICB9CisKKyAgICAgIC8qIGNvbXB1dGUgbGVuZ3RocyAqLworICAgICAgZm9yICggbiA9IDA7IG4gPCBjb3VudCAqIDI7IG4gKz0gMiApCisgICAgICAgIHN0ZW1zW24gKyAxXSA9IHN0ZW1zW24gKyAxXSAtIHN0ZW1zW25dOworCisgICAgICAvKiBhZGQgdGhlbSB0byB0aGUgY3VycmVudCBkaW1lbnNpb24gKi8KKyAgICAgIHBzX2hpbnRzX3N0ZW0oIChQU19IaW50cyloaW50cywgZGltZW5zaW9uLCBjb3VudCwgc3RlbXMgKTsKKworICAgICAgdG90YWwgLT0gY291bnQ7CisgICAgfQorICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICB0Ml9oaW50c19mdW5jc19pbml0KCBUMl9IaW50c19GdW5jc1JlYyogIGZ1bmNzICkKKyAgeworICAgIEZUX01FTV9aRVJPKCBmdW5jcywgc2l6ZW9mICggKmZ1bmNzICkgKTsKKworICAgIGZ1bmNzLT5vcGVuICAgID0gKFQyX0hpbnRzX09wZW5GdW5jKSAgIHQyX2hpbnRzX29wZW47CisgICAgZnVuY3MtPmNsb3NlICAgPSAoVDJfSGludHNfQ2xvc2VGdW5jKSAgcHNfaGludHNfY2xvc2U7CisgICAgZnVuY3MtPnN0ZW1zICAgPSAoVDJfSGludHNfU3RlbXNGdW5jKSAgdDJfaGludHNfc3RlbXM7CisgICAgZnVuY3MtPmhpbnRtYXNrPSAoVDJfSGludHNfTWFza0Z1bmMpICAgcHNfaGludHNfdDJtYXNrOworICAgIGZ1bmNzLT5jb3VudGVyID0gKFQyX0hpbnRzX0NvdW50ZXJGdW5jKXBzX2hpbnRzX3QyY291bnRlcjsKKyAgICBmdW5jcy0+YXBwbHkgICA9IChUMl9IaW50c19BcHBseUZ1bmMpICBwc19oaW50c19hcHBseTsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9wc2hyZWMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNocmVjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE4MjVkYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcHNocmVjLmgKQEAgLTAsMCArMSwxNzYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHBzaHJlYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBQb3N0c2NyaXB0IChUeXBlMS9UeXBlMikgaGludHMgcmVjb3JkZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMSwgMjAwMiwgMjAwMywgMjAwNiwgMjAwOCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFRoZSBmdW5jdGlvbnMgZGVmaW5lZCBoZXJlIGFyZSBjYWxsZWQgZnJvbSB0aGUgVHlwZSAxLCBDSUQgYW5kIENGRiAgICAqLworICAvKiAgZm9udCBkcml2ZXJzIHRvIHJlY29yZCB0aGUgaGludHMgb2YgYSBnaXZlbiBjaGFyYWN0ZXIvZ2x5cGguICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFRoZSBoaW50cyBhcmUgcmVjb3JkZWQgaW4gYSB1bmlmaWVkIGZvcm1hdCwgYW5kIGFyZSBsYXRlciBwcm9jZXNzZWQgICAqLworICAvKiAgYnkgdGhlIGBvcHRpbWl6ZXInIGFuZCBgZml0dGVyJyB0byBhZGp1c3QgdGhlIG91dGxpbmVzIHRvIHRoZSBwaXhlbCAgICovCisgIC8qICBncmlkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1BTSFJFQ19IX18KKyNkZWZpbmUgX19QU0hSRUNfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCIKKyNpbmNsdWRlICJwc2hnbG9iLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgIEdMWVBIIEhJTlRTIFJFQ09SREVSIElOVEVSTkFMUyAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKiBoYW5kbGUgdG8gaGludCByZWNvcmQgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgUFNfSGludFJlY18qICBQU19IaW50OworCisgIC8qIGhpbnQgdHlwZXMgKi8KKyAgdHlwZWRlZiBlbnVtICBQU19IaW50X1R5cGVfCisgIHsKKyAgICBQU19ISU5UX1RZUEVfMSA9IDEsCisgICAgUFNfSElOVF9UWVBFXzIgPSAyCisKKyAgfSBQU19IaW50X1R5cGU7CisKKworICAvKiBoaW50IGZsYWdzICovCisgIHR5cGVkZWYgZW51bSAgUFNfSGludF9GbGFnc18KKyAgeworICAgIFBTX0hJTlRfRkxBR19HSE9TVCAgPSAxLAorICAgIFBTX0hJTlRfRkxBR19CT1RUT00gPSAyCisKKyAgfSBQU19IaW50X0ZsYWdzOworCisKKyAgLyogaGludCBkZXNjcmlwdG9yICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19IaW50UmVjXworICB7CisgICAgRlRfSW50ICAgcG9zOworICAgIEZUX0ludCAgIGxlbjsKKyAgICBGVF9VSW50ICBmbGFnczsKKworICB9IFBTX0hpbnRSZWM7CisKKworI2RlZmluZSBwc19oaW50X2lzX2FjdGl2ZSggeCApICAoICh4KS0+ZmxhZ3MgJiBQU19ISU5UX0ZMQUdfQUNUSVZFICkKKyNkZWZpbmUgcHNfaGludF9pc19naG9zdCggeCApICAgKCAoeCktPmZsYWdzICYgUFNfSElOVF9GTEFHX0dIT1NUICApCisjZGVmaW5lIHBzX2hpbnRfaXNfYm90dG9tKCB4ICkgICggKHgpLT5mbGFncyAmIFBTX0hJTlRfRkxBR19CT1RUT00gKQorCisKKyAgLyogaGludHMgdGFibGUgZGVzY3JpcHRvciAqLworICB0eXBlZGVmIHN0cnVjdCAgUFNfSGludF9UYWJsZVJlY18KKyAgeworICAgIEZUX1VJbnQgIG51bV9oaW50czsKKyAgICBGVF9VSW50ICBtYXhfaGludHM7CisgICAgUFNfSGludCAgaGludHM7CisKKyAgfSBQU19IaW50X1RhYmxlUmVjLCAqUFNfSGludF9UYWJsZTsKKworCisgIC8qIGhpbnQgYW5kIGNvdW50ZXIgbWFzayBkZXNjcmlwdG9yICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19NYXNrUmVjXworICB7CisgICAgRlRfVUludCAgIG51bV9iaXRzOworICAgIEZUX1VJbnQgICBtYXhfYml0czsKKyAgICBGVF9CeXRlKiAgYnl0ZXM7CisgICAgRlRfVUludCAgIGVuZF9wb2ludDsKKworICB9IFBTX01hc2tSZWMsICpQU19NYXNrOworCisKKyAgLyogbWFza3MgYW5kIGNvdW50ZXJzIHRhYmxlIGRlc2NyaXB0b3IgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTX01hc2tfVGFibGVSZWNfCisgIHsKKyAgICBGVF9VSW50ICBudW1fbWFza3M7CisgICAgRlRfVUludCAgbWF4X21hc2tzOworICAgIFBTX01hc2sgIG1hc2tzOworCisgIH0gUFNfTWFza19UYWJsZVJlYywgKlBTX01hc2tfVGFibGU7CisKKworIC8qIGRpbWVuc2lvbi1zcGVjaWZpYyBoaW50cyBkZXNjcmlwdG9yICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19EaW1lbnNpb25SZWNfCisgIHsKKyAgICBQU19IaW50X1RhYmxlUmVjICBoaW50czsKKyAgICBQU19NYXNrX1RhYmxlUmVjICBtYXNrczsKKyAgICBQU19NYXNrX1RhYmxlUmVjICBjb3VudGVyczsKKworICB9IFBTX0RpbWVuc2lvblJlYywgKlBTX0RpbWVuc2lvbjsKKworCisgIC8qIGdseXBoIGhpbnRzIGRlc2NyaXB0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIGRpbWVuc2lvbiAwID0+IFggY29vcmRpbmF0ZXMgKyB2ZXJ0aWNhbCBoaW50cy9zdGVtcyAgICovCisgIC8qIGRpbWVuc2lvbiAxID0+IFkgY29vcmRpbmF0ZXMgKyBob3Jpem9udGFsIGhpbnRzL3N0ZW1zICovCisgIHR5cGVkZWYgc3RydWN0ICBQU19IaW50c1JlY18KKyAgeworICAgIEZUX01lbW9yeSAgICAgICAgbWVtb3J5OworICAgIEZUX0Vycm9yICAgICAgICAgZXJyb3I7CisgICAgRlRfVUludDMyICAgICAgICBtYWdpYzsKKyAgICBQU19IaW50X1R5cGUgICAgIGhpbnRfdHlwZTsKKyAgICBQU19EaW1lbnNpb25SZWMgIGRpbWVuc2lvblsyXTsKKworICB9IFBTX0hpbnRzUmVjLCAqUFNfSGludHM7CisKKyAgLyogKi8KKworICAvKiBpbml0aWFsaXplIGhpbnRzIHJlY29yZGVyICovCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHBzX2hpbnRzX2luaXQoIFBTX0hpbnRzICAgaGludHMsCisgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgbWVtb3J5ICk7CisKKyAgLyogZmluYWxpemUgaGludHMgcmVjb3JkZXIgKi8KKyAgRlRfTE9DQUwoIHZvaWQgKQorICBwc19oaW50c19kb25lKCBQU19IaW50cyAgaGludHMgKTsKKworICAvKiBpbml0aWFsaXplIFR5cGUxIGhpbnRzIHJlY29yZGVyIGludGVyZmFjZSAqLworICBGVF9MT0NBTCggdm9pZCApCisgIHQxX2hpbnRzX2Z1bmNzX2luaXQoIFQxX0hpbnRzX0Z1bmNzUmVjKiAgZnVuY3MgKTsKKworICAvKiBpbml0aWFsaXplIFR5cGUyIGhpbnRzIHJlY29yZGVyIGludGVyZmFjZSAqLworICBGVF9MT0NBTCggdm9pZCApCisgIHQyX2hpbnRzX2Z1bmNzX2luaXQoIFQyX0hpbnRzX0Z1bmNzUmVjKiAgZnVuY3MgKTsKKworCisjaWZkZWYgREVCVUdfSElOVEVSCisgIGV4dGVybiBQU19IaW50cyAgcHNfZGVidWdfaGludHM7CisgIGV4dGVybiAgaW50ICAgICAgcHNfZGVidWdfbm9faG9yel9oaW50czsKKyAgZXh0ZXJuICBpbnQgICAgICBwc19kZWJ1Z19ub192ZXJ0X2hpbnRzOworI2VuZGlmCisKKyAvKiAqLworCisKK0ZUX0VORF9IRUFERVIKKworCisjZW5kaWYgLyogX19QU19ISU5URVJfUkVDT1JEX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc2hpbnRlci9ydWxlcy5tayBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcnVsZXMubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg4ZWNlMQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvcnVsZXMubWsKQEAgLTAsMCArMSw3MyBAQAorIworIyBGcmVlVHlwZSAyIFBTSGludGVyIGRyaXZlciBjb25maWd1cmF0aW9uIHJ1bGVzCisjCisKKworIyBDb3B5cmlnaHQgMjAwMSwgMjAwMywgMjAxMSBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKKworIyBQU0hJTlRFUiBkcml2ZXIgZGlyZWN0b3J5CisjCitQU0hJTlRFUl9ESVIgOj0gJChTUkNfRElSKS9wc2hpbnRlcgorCisKKyMgY29tcGlsYXRpb24gZmxhZ3MgZm9yIHRoZSBkcml2ZXIKKyMKK1BTSElOVEVSX0NPTVBJTEUgOj0gJChGVF9DT01QSUxFKSAkSSQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJChQU0hJTlRFUl9ESVIpKQorCisKKyMgUFNISU5URVIgZHJpdmVyIHNvdXJjZXMgKGkuZS4sIEMgZmlsZXMpCisjCitQU0hJTlRFUl9EUlZfU1JDIDo9ICQoUFNISU5URVJfRElSKS9wc2hhbGdvLmMgXAorICAgICAgICAgICAgICAgICAgICAkKFBTSElOVEVSX0RJUikvcHNoZ2xvYi5jIFwKKyAgICAgICAgICAgICAgICAgICAgJChQU0hJTlRFUl9ESVIpL3BzaG1vZC5jICBcCisgICAgICAgICAgICAgICAgICAgICQoUFNISU5URVJfRElSKS9wc2hwaWMuYyAgXAorICAgICAgICAgICAgICAgICAgICAkKFBTSElOVEVSX0RJUikvcHNocmVjLmMKKworCisjIFBTSElOVEVSIGRyaXZlciBoZWFkZXJzCisjCitQU0hJTlRFUl9EUlZfSCA6PSAkKFBTSElOVEVSX0RSVl9TUkM6JWM9JWgpIFwKKyAgICAgICAgICAgICAgICAgICQoUFNISU5URVJfRElSKS9wc2hudGVyci5oCisKKworIyBQU0hJTlRFUiBkcml2ZXIgb2JqZWN0KHMpCisjCisjICAgUFNISU5URVJfRFJWX09CSl9NIGlzIHVzZWQgZHVyaW5nIGBtdWx0aScgYnVpbGRzLgorIyAgIFBTSElOVEVSX0RSVl9PQkpfUyBpcyB1c2VkIGR1cmluZyBgc2luZ2xlJyBidWlsZHMuCisjCitQU0hJTlRFUl9EUlZfT0JKX00gOj0gJChQU0hJTlRFUl9EUlZfU1JDOiQoUFNISU5URVJfRElSKS8lLmM9JChPQkpfRElSKS8lLiRPKQorUFNISU5URVJfRFJWX09CSl9TIDo9ICQoT0JKX0RJUikvcHNoaW50ZXIuJE8KKworIyBQU0hJTlRFUiBkcml2ZXIgc291cmNlIGZpbGUgZm9yIHNpbmdsZSBidWlsZAorIworUFNISU5URVJfRFJWX1NSQ19TIDo9ICQoUFNISU5URVJfRElSKS9wc2hpbnRlci5jCisKKworIyBQU0hJTlRFUiBkcml2ZXIgLSBzaW5nbGUgb2JqZWN0CisjCiskKFBTSElOVEVSX0RSVl9PQkpfUyk6ICQoUFNISU5URVJfRFJWX1NSQ19TKSAkKFBTSElOVEVSX0RSVl9TUkMpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJChGUkVFVFlQRV9IKSAkKFBTSElOVEVSX0RSVl9IKQorCSQoUFNISU5URVJfQ09NUElMRSkgJFQkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCRAICQoUFNISU5URVJfRFJWX1NSQ19TKSkKKworCisjIFBTSElOVEVSIGRyaXZlciAtIG11bHRpcGxlIG9iamVjdHMKKyMKKyQoT0JKX0RJUikvJS4kTzogJChQU0hJTlRFUl9ESVIpLyUuYyAkKEZSRUVUWVBFX0gpICQoUFNISU5URVJfRFJWX0gpCisJJChQU0hJTlRFUl9DT01QSUxFKSAkVCQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJEAgJDwpCisKKworIyB1cGRhdGUgbWFpbiBkcml2ZXIgb2JqZWN0IGxpc3RzCisjCitEUlZfT0JKU19TICs9ICQoUFNISU5URVJfRFJWX09CSl9TKQorRFJWX09CSlNfTSArPSAkKFBTSElOVEVSX0RSVl9PQkpfTSkKKworCisjIEVPRgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc25hbWVzL0phbWZpbGUgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvSmFtZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmMwZGRhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc25hbWVzL0phbWZpbGUKQEAgLTAsMCArMSwyOSBAQAorIyBGcmVlVHlwZSAyIHNyYy9wc25hbWVzIEphbWZpbGUKKyMKKyMgQ29weXJpZ2h0IDIwMDEgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCitTdWJEaXIgIEZUMl9UT1AgJChGVDJfU1JDX0RJUikgcHNuYW1lcyA7CisKK3sKKyAgbG9jYWwgIF9zb3VyY2VzIDsKKworICBpZiAkKEZUMl9NVUxUSSkKKyAgeworICAgIF9zb3VyY2VzID0gcHNtb2R1bGUgcHNwaWMgOworICB9CisgIGVsc2UKKyAgeworICAgIF9zb3VyY2VzID0gcHNuYW1lcyA7CisgIH0KKworICBMaWJyYXJ5ICAkKEZUMl9MSUIpIDogJChfc291cmNlcykuYyA7Cit9CisKKyMgZW5kIG9mIHNyYy9wc25hbWVzIEphbWZpbGUKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9meGZ0X3BzbW9kdWxlLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvZnhmdF9wc21vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NWFhODcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvZnhmdF9wc21vZHVsZS5jCkBAIC0wLDAgKzEsNjcwIEBACisjaWYgIWRlZmluZWQoX0ZYRlRfVkVSU0lPTl8pIHx8IF9GWEZUX1ZFUlNJT05fID09IDI1MDEKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHBzbW9kdWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBQU05hbWVzIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAzLCAyMDA1LTIwMDgsIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgRlQyX0JVSUxEX0xJQlJBUlkKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNjbWFwLmgiCisKKyNpbmNsdWRlICJwc21vZHVsZS5oIgorI2luY2x1ZGUgInBzdGFibGVzLmgiCisKKyNpbmNsdWRlICJwc25hbWVyci5oIgorI2luY2x1ZGUgInBzcGljLmgiCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUworCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0FET0JFX0dMWVBIX0xJU1QKKworCisjZGVmaW5lIFZBUklBTlRfQklUICAgICAgICAgMHg4MDAwMDAwMFVMCisjZGVmaW5lIEJBU0VfR0xZUEgoIGNvZGUgKSAgKCAoRlRfVUludDMyKSggKGNvZGUpICYgflZBUklBTlRfQklUICkgKQorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisgIC8qIFJldHVybiB0aGUgVW5pY29kZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4gZ2x5cGguICBOb3RlIHRoYXQgKi8KKyAgLyogd2UgZG8gZGVhbCB3aXRoIGdseXBoIHZhcmlhbnRzIGJ5IGRldGVjdGluZyBhIG5vbi1pbml0aWFsIGRvdCBpbiAgICAqLworICAvKiB0aGUgbmFtZSwgYXMgaW4gYEEuc3dhc2gnIG9yIGBlLmZpbmFsJzsgaW4gdGhpcyBjYXNlLCB0aGUgICAgICAgICAgICovCisgIC8qIFZBUklBTlRfQklUIGlzIHNldCBpbiB0aGUgcmV0dXJuIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworaW50IEZYRlRfdW5pY29kZV9mcm9tX2Fkb2JlX25hbWUoIGNvbnN0IGNoYXIqICBnbHlwaF9uYW1lICkKKyAgeworICAgIC8qIElmIHRoZSBuYW1lIGJlZ2lucyB3aXRoIGB1bmknLCB0aGVuIHRoZSBnbHlwaCBuYW1lIG1heSBiZSBhICovCisgICAgLyogaGFyZC1jb2RlZCB1bmljb2RlIGNoYXJhY3RlciBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIGdseXBoX25hbWVbMF0gPT0gJ3UnICYmCisgICAgICAgICBnbHlwaF9uYW1lWzFdID09ICduJyAmJgorICAgICAgICAgZ2x5cGhfbmFtZVsyXSA9PSAnaScgKQorICAgIHsKKyAgICAgIC8qIGRldGVybWluZSB3aGV0aGVyIHRoZSBuZXh0IGZvdXIgY2hhcmFjdGVycyBmb2xsb3dpbmcgYXJlICovCisgICAgICAvKiBoZXhhZGVjaW1hbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAvKiBYWFg6IEFkZCBjb2RlIHRvIGRlYWwgd2l0aCBsaWdhdHVyZXMsIGkuZS4gZ2x5cGggbmFtZXMgbGlrZSAqLworICAgICAgLyogICAgICBgdW5pWFhYWFlZWVlaWlpaJy4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgRlRfSW50ICAgICAgIGNvdW50OworICAgICAgRlRfVUludDMyICAgIHZhbHVlID0gMDsKKyAgICAgIGNvbnN0IGNoYXIqICBwICAgICA9IGdseXBoX25hbWUgKyAzOworCisKKyAgICAgIGZvciAoIGNvdW50ID0gNDsgY291bnQgPiAwOyBjb3VudC0tLCBwKysgKQorICAgICAgeworICAgICAgICBjaGFyICAgICAgICAgIGMgPSAqcDsKKyAgICAgICAgdW5zaWduZWQgaW50ICBkOworCisKKyAgICAgICAgZCA9ICh1bnNpZ25lZCBjaGFyKWMgLSAnMCc7CisgICAgICAgIGlmICggZCA+PSAxMCApCisgICAgICAgIHsKKyAgICAgICAgICBkID0gKHVuc2lnbmVkIGNoYXIpYyAtICdBJzsKKyAgICAgICAgICBpZiAoIGQgPj0gNiApCisgICAgICAgICAgICBkID0gMTY7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZCArPSAxMDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEV4aXQgaWYgYSBub24tdXBwZXJjYXNlIGhleGFkZWNpbWFsIGNoYXJhY3RlciB3YXMgZm91bmQgICAqLworICAgICAgICAvKiAtLSB0aGlzIGFsc28gY2F0Y2hlcyBjaGFyYWN0ZXIgY29kZXMgYmVsb3cgYDAnIHNpbmNlIHN1Y2ggKi8KKyAgICAgICAgLyogbmVnYXRpdmUgbnVtYmVycyBjYXN0IHRvIGB1bnNpZ25lZCBpbnQnIGFyZSBmYXIgdG9vIGJpZy4gICovCisgICAgICAgIGlmICggZCA+PSAxNiApCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdmFsdWUgPSAoIHZhbHVlIDw8IDQgKSArIGQ7CisgICAgICB9CisKKyAgICAgIC8qIHRoZXJlIG11c3QgYmUgZXhhY3RseSBmb3VyIGhleCBkaWdpdHMgKi8KKyAgICAgIGlmICggY291bnQgPT0gMCApCisgICAgICB7CisgICAgICAgIGlmICggKnAgPT0gJ1wwJyApCisgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBpZiAoICpwID09ICcuJyApCisgICAgICAgICAgcmV0dXJuIChGVF9VSW50MzIpKCB2YWx1ZSB8IFZBUklBTlRfQklUICk7CisgICAgICB9CisgICAgfQorCisgICAgLyogSWYgdGhlIG5hbWUgYmVnaW5zIHdpdGggYHUnLCBmb2xsb3dlZCBieSBmb3VyIHRvIHNpeCB1cHBlcmNhc2UgKi8KKyAgICAvKiBoZXhhZGVjaW1hbCBkaWdpdHMsIGl0IGlzIGEgaGFyZC1jb2RlZCB1bmljb2RlIGNoYXJhY3RlciBjb2RlLiAqLworICAgIGlmICggZ2x5cGhfbmFtZVswXSA9PSAndScgKQorICAgIHsKKyAgICAgIEZUX0ludCAgICAgICBjb3VudDsKKyAgICAgIEZUX1VJbnQzMiAgICB2YWx1ZSA9IDA7CisgICAgICBjb25zdCBjaGFyKiAgcCAgICAgPSBnbHlwaF9uYW1lICsgMTsKKworCisgICAgICBmb3IgKCBjb3VudCA9IDY7IGNvdW50ID4gMDsgY291bnQtLSwgcCsrICkKKyAgICAgIHsKKyAgICAgICAgY2hhciAgICAgICAgICBjID0gKnA7CisgICAgICAgIHVuc2lnbmVkIGludCAgZDsKKworCisgICAgICAgIGQgPSAodW5zaWduZWQgY2hhciljIC0gJzAnOworICAgICAgICBpZiAoIGQgPj0gMTAgKQorICAgICAgICB7CisgICAgICAgICAgZCA9ICh1bnNpZ25lZCBjaGFyKWMgLSAnQSc7CisgICAgICAgICAgaWYgKCBkID49IDYgKQorICAgICAgICAgICAgZCA9IDE2OworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGQgKz0gMTA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGQgPj0gMTYgKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHZhbHVlID0gKCB2YWx1ZSA8PCA0ICkgKyBkOworICAgICAgfQorCisgICAgICBpZiAoIGNvdW50IDw9IDIgKQorICAgICAgeworICAgICAgICBpZiAoICpwID09ICdcMCcgKQorICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgaWYgKCAqcCA9PSAnLicgKQorICAgICAgICAgIHJldHVybiAoRlRfVUludDMyKSggdmFsdWUgfCBWQVJJQU5UX0JJVCApOworICAgICAgfQorICAgIH0KKworICAgIC8qIExvb2sgZm9yIGEgbm9uLWluaXRpYWwgZG90IGluIHRoZSBnbHlwaCBuYW1lIGluIG9yZGVyIHRvICovCisgICAgLyogZmluZCB2YXJpYW50cyBsaWtlIGBBLnN3YXNoJywgYGUuZmluYWwnLCBldGMuICAgICAgICAgICAgKi8KKyAgICB7CisgICAgICBjb25zdCBjaGFyKiAgcCAgID0gZ2x5cGhfbmFtZTsKKyAgICAgIGNvbnN0IGNoYXIqICBkb3QgPSBOVUxMOworCisKKyAgICAgIGZvciAoIDsgKnA7IHArKyApCisgICAgICB7CisgICAgICAgIGlmICggKnAgPT0gJy4nICYmIHAgPiBnbHlwaF9uYW1lICkKKyAgICAgICAgeworICAgICAgICAgIGRvdCA9IHA7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyogbm93IGxvb2sgdXAgdGhlIGdseXBoIGluIHRoZSBBZG9iZSBHbHlwaCBMaXN0ICovCisgICAgICBpZiAoICFkb3QgKQorICAgICAgICByZXR1cm4gKEZUX1VJbnQzMilmdF9nZXRfYWRvYmVfZ2x5cGhfaW5kZXgoIGdseXBoX25hbWUsIHAgKTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIChGVF9VSW50MzIpKCBmdF9nZXRfYWRvYmVfZ2x5cGhfaW5kZXgoIGdseXBoX25hbWUsIGRvdCApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQVJJQU5UX0JJVCApOworICAgIH0KKyAgfQorICAjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX0ZQREZBUElfTUlOSV8pIHx8IGRlZmluZWQoX0ZYQ09SRV9GRUFUVVJFX0FMTF8pCitzdGF0aWMgaW50IHh5cV9zZWFyY2hfbm9kZShjaGFyKiBnbHlwaF9uYW1lLCBpbnQgbmFtZV9vZmZzZXQsIGludCB0YWJsZV9vZmZzZXQsIEZUX1VJbnQzMiB1bmljb2RlKQoreworCWludCBpLCBjb3VudDsKKworCS8vIGNvcHkgbGV0dGVycworCXdoaWxlICgxKSB7CisJCWdseXBoX25hbWVbbmFtZV9vZmZzZXRdID0gZnRfYWRvYmVfZ2x5cGhfbGlzdFt0YWJsZV9vZmZzZXRdICYgMHg3ZjsKKwkJbmFtZV9vZmZzZXQgKys7CisJCXRhYmxlX29mZnNldCArKzsKKwkJaWYgKCEoZnRfYWRvYmVfZ2x5cGhfbGlzdFt0YWJsZV9vZmZzZXQtMV0gJiAweDgwKSkgYnJlYWs7CisJfQorCWdseXBoX25hbWVbbmFtZV9vZmZzZXRdID0gMDsKKworCS8vIGdldCBjaGlsZCBjb3VudAorCWNvdW50ID0gZnRfYWRvYmVfZ2x5cGhfbGlzdFt0YWJsZV9vZmZzZXRdICYgMHg3ZjsKKworCS8vIGNoZWNrIGlmIHdlIGhhdmUgdmFsdWUgZm9yIHRoaXMgbm9kZQorCWlmIChmdF9hZG9iZV9nbHlwaF9saXN0W3RhYmxlX29mZnNldF0gJiAweDgwKSB7CisJCXVuc2lnbmVkIHNob3J0IHRoaXNjb2RlID0gZnRfYWRvYmVfZ2x5cGhfbGlzdFt0YWJsZV9vZmZzZXQrMV0gKiAyNTYgKyBmdF9hZG9iZV9nbHlwaF9saXN0W3RhYmxlX29mZnNldCsyXTsKKwkJaWYgKHRoaXNjb2RlID09IHVuaWNvZGUpCS8vIGZvdW5kIGl0IQorCQkJcmV0dXJuIDE7CisJCXRhYmxlX29mZnNldCArPSAzOworCX0gZWxzZQorCQl0YWJsZV9vZmZzZXQgKys7CisKKwkvLyBub3cgc2VhcmNoIGluIHN1Yi1ub2RlcworCWlmIChjb3VudCA9PSAwKSByZXR1cm4gMDsKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsKKwkJaW50IGNoaWxkX29mZnNldCA9IGZ0X2Fkb2JlX2dseXBoX2xpc3RbdGFibGVfb2Zmc2V0K2kqMl0gKiAyNTYgKyBmdF9hZG9iZV9nbHlwaF9saXN0W3RhYmxlX29mZnNldCtpKjIrMV07CisJCWlmICh4eXFfc2VhcmNoX25vZGUoZ2x5cGhfbmFtZSwgbmFtZV9vZmZzZXQsIGNoaWxkX29mZnNldCwgdW5pY29kZSkpCisJCQkvLyBmb3VuZCBpbiBjaGlsZAorCQkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCisvLyBYWVE6IGZ1bmN0aW9uIGZvciBzZWFyY2hpbmcgVW5pY29kZSBpbiB0aGUgZ2x5cGggbGlzdAordm9pZCBGWEZUX2Fkb2JlX25hbWVfZnJvbV91bmljb2RlKGNoYXIqIGdseXBoX25hbWUsIEZUX1VJbnQzMiB1bmljb2RlKQoreworCWludCBpLCBjb3VudDsKKwkKKwkvLyBzdGFydCBmcm9tIHRvcCBsZXZlbCBub2RlCisJY291bnQgPSBmdF9hZG9iZV9nbHlwaF9saXN0WzFdOworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSArKykgeworCQlpbnQgY2hpbGRfb2Zmc2V0ID0gZnRfYWRvYmVfZ2x5cGhfbGlzdFtpKjIrMl0gKiAyNTYgKyBmdF9hZG9iZV9nbHlwaF9saXN0W2kqMiszXTsKKwkJaWYgKHh5cV9zZWFyY2hfbm9kZShnbHlwaF9uYW1lLCAwLCBjaGlsZF9vZmZzZXQsIHVuaWNvZGUpKQorCQkJcmV0dXJuOworCX0KKworCS8vIGZhaWxlZCwgY2xlYXIgdGhlIGJ1ZmZlcgorCWdseXBoX25hbWVbMF0gPSAwOworfQorI2VuZGlmCisKKyAgLyogZnRfcXNvcnQgY2FsbGJhY2sgdG8gc29ydCB0aGUgdW5pY29kZSBtYXAgKi8KKyAgRlRfQ0FMTEJBQ0tfREVGKCBpbnQgKQorICBjb21wYXJlX3VuaV9tYXBzKCBjb25zdCB2b2lkKiAgYSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogIGIgKQorICB7CisgICAgUFNfVW5pTWFwKiAgbWFwMSA9IChQU19VbmlNYXAqKWE7CisgICAgUFNfVW5pTWFwKiAgbWFwMiA9IChQU19VbmlNYXAqKWI7CisgICAgRlRfVUludDMyICAgdW5pY29kZTEgPSBCQVNFX0dMWVBIKCBtYXAxLT51bmljb2RlICk7CisgICAgRlRfVUludDMyICAgdW5pY29kZTIgPSBCQVNFX0dMWVBIKCBtYXAyLT51bmljb2RlICk7CisKKworICAgIC8qIHNvcnQgYmFzZSBnbHlwaHMgYmVmb3JlIGdseXBoIHZhcmlhbnRzICovCisgICAgaWYgKCB1bmljb2RlMSA9PSB1bmljb2RlMiApCisgICAgeworICAgICAgaWYgKCBtYXAxLT51bmljb2RlID4gbWFwMi0+dW5pY29kZSApCisgICAgICAgIHJldHVybiAxOworICAgICAgZWxzZSBpZiAoIG1hcDEtPnVuaWNvZGUgPCBtYXAyLT51bmljb2RlICkKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICggdW5pY29kZTEgPiB1bmljb2RlMiApCisgICAgICAgIHJldHVybiAxOworICAgICAgZWxzZSBpZiAoIHVuaWNvZGUxIDwgdW5pY29kZTIgKQorICAgICAgICByZXR1cm4gLTE7CisgICAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgfQorCisKKyAgLyogc3VwcG9ydCBmb3IgZXh0cmEgZ2x5cGhzIG5vdCBoYW5kbGVkICh3ZWxsKSBpbiBBR0w7ICovCisgIC8qIHdlIGFkZCBleHRyYSBtYXBwaW5ncyBmb3IgdGhlbSBpZiBuZWNlc3NhcnkgICAgICAgICAqLworCisjZGVmaW5lIEVYVFJBX0dMWVBIX0xJU1RfU0laRSAgMTAKKworICBzdGF0aWMgY29uc3QgRlRfVUludDMyICBmdF9leHRyYV9nbHlwaF91bmljb2Rlc1tFWFRSQV9HTFlQSF9MSVNUX1NJWkVdID0KKyAgeworICAgIC8qIFdHTCA0ICovCisgICAgMHgwMzk0LAorICAgIDB4MDNBOSwKKyAgICAweDIyMTUsCisgICAgMHgwMEFELAorICAgIDB4MDJDOSwKKyAgICAweDAzQkMsCisgICAgMHgyMjE5LAorICAgIDB4MDBBMCwKKyAgICAvKiBSb21hbmlhbiAqLworICAgIDB4MDIxQSwKKyAgICAweDAyMUIKKyAgfTsKKworICBzdGF0aWMgY29uc3QgY2hhciAgZnRfZXh0cmFfZ2x5cGhfbmFtZXNbXSA9CisgIHsKKyAgICAnRCcsJ2UnLCdsJywndCcsJ2EnLDAsCisgICAgJ08nLCdtJywnZScsJ2cnLCdhJywwLAorICAgICdmJywncicsJ2EnLCdjJywndCcsJ2knLCdvJywnbicsMCwKKyAgICAnaCcsJ3knLCdwJywnaCcsJ2UnLCduJywwLAorICAgICdtJywnYScsJ2MnLCdyJywnbycsJ24nLDAsCisgICAgJ20nLCd1JywwLAorICAgICdwJywnZScsJ3InLCdpJywnbycsJ2QnLCdjJywnZScsJ24nLCd0JywnZScsJ3InLCdlJywnZCcsMCwKKyAgICAncycsJ3AnLCdhJywnYycsJ2UnLDAsCisgICAgJ1QnLCdjJywnbycsJ20nLCdtJywnYScsJ2EnLCdjJywnYycsJ2UnLCduJywndCcsMCwKKyAgICAndCcsJ2MnLCdvJywnbScsJ20nLCdhJywnYScsJ2MnLCdjJywnZScsJ24nLCd0JywwCisgIH07CisKKyAgc3RhdGljIGNvbnN0IEZUX0ludAorICBmdF9leHRyYV9nbHlwaF9uYW1lX29mZnNldHNbRVhUUkFfR0xZUEhfTElTVF9TSVpFXSA9CisgIHsKKyAgICAgMCwKKyAgICAgNiwKKyAgICAxMiwKKyAgICAyMSwKKyAgICAyOCwKKyAgICAzNSwKKyAgICAzOCwKKyAgICA1MywKKyAgICA1OSwKKyAgICA3MgorICB9OworCisKKyAgc3RhdGljIHZvaWQKKyAgcHNfY2hlY2tfZXh0cmFfZ2x5cGhfbmFtZSggY29uc3QgY2hhciogIGduYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgZ2x5cGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQqICAgICBleHRyYV9nbHlwaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICpzdGF0ZXMgKQorICB7CisgICAgRlRfVUludCAgbjsKKworCisgICAgZm9yICggbiA9IDA7IG4gPCBFWFRSQV9HTFlQSF9MSVNUX1NJWkU7IG4rKyApCisgICAgeworICAgICAgaWYgKCBmdF9zdHJjbXAoIGZ0X2V4dHJhX2dseXBoX25hbWVzICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ0X2V4dHJhX2dseXBoX25hbWVfb2Zmc2V0c1tuXSwgZ25hbWUgKSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBzdGF0ZXNbbl0gPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBtYXJrIHRoaXMgZXh0cmEgZ2x5cGggYXMgYSBjYW5kaWRhdGUgZm9yIHRoZSBjbWFwICovCisgICAgICAgICAgc3RhdGVzW25dICAgICA9IDE7CisgICAgICAgICAgZXh0cmFfZ2x5cGhzW25dID0gZ2x5cGg7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorICB9CisKKworICBzdGF0aWMgdm9pZAorICBwc19jaGVja19leHRyYV9nbHlwaF91bmljb2RlKCBGVF9VSW50MzIgIHVuaV9jaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgKnN0YXRlcyApCisgIHsKKyAgICBGVF9VSW50ICBuOworCisKKyAgICBmb3IgKCBuID0gMDsgbiA8IEVYVFJBX0dMWVBIX0xJU1RfU0laRTsgbisrICkKKyAgICB7CisgICAgICBpZiAoIHVuaV9jaGFyID09IGZ0X2V4dHJhX2dseXBoX3VuaWNvZGVzW25dICkKKyAgICAgIHsKKyAgICAgICAgLyogZGlzYWJsZSB0aGlzIGV4dHJhIGdseXBoIGZyb20gYmVpbmcgYWRkZWQgdG8gdGhlIGNtYXAgKi8KKyAgICAgICAgc3RhdGVzW25dID0gMjsKKworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorICB9CisKKworICAvKiBCdWlsZCBhIHRhYmxlIHRoYXQgbWFwcyBVbmljb2RlIHZhbHVlcyB0byBnbHlwaCBpbmRpY2VzLiAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgcHNfdW5pY29kZXNfaW5pdCggRlRfTWVtb3J5ICAgICAgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgUFNfVW5pY29kZXMgICAgICAgICAgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgICAgbnVtX2dseXBocywKKyAgICAgICAgICAgICAgICAgICAgUFNfR2V0R2x5cGhOYW1lRnVuYyAgIGdldF9nbHlwaF9uYW1lLAorICAgICAgICAgICAgICAgICAgICBQU19GcmVlR2x5cGhOYW1lRnVuYyAgZnJlZV9nbHlwaF9uYW1lLAorICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICAgICAgICAgICAgZ2x5cGhfZGF0YSApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKyAgICBGVF9VSW50ICBleHRyYV9nbHlwaF9saXN0X3N0YXRlc1tdID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07CisgICAgRlRfVUludCAgZXh0cmFfZ2x5cGhzW0VYVFJBX0dMWVBIX0xJU1RfU0laRV07CisKKworICAgIC8qIHdlIGZpcnN0IGFsbG9jYXRlIHRoZSB0YWJsZSAqLworICAgIHRhYmxlLT5udW1fbWFwcyA9IDA7CisgICAgdGFibGUtPm1hcHMgICAgID0gMDsKKworICAgIGlmICggIUZUX05FV19BUlJBWSggdGFibGUtPm1hcHMsIG51bV9nbHlwaHMgKyBFWFRSQV9HTFlQSF9MSVNUX1NJWkUgKSApCisgICAgeworICAgICAgRlRfVUludCAgICAgbjsKKyAgICAgIEZUX1VJbnQgICAgIGNvdW50OworICAgICAgUFNfVW5pTWFwKiAgbWFwOworICAgICAgRlRfVUludDMyICAgdW5pX2NoYXI7CisKKworICAgICAgbWFwID0gdGFibGUtPm1hcHM7CisKKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgbnVtX2dseXBoczsgbisrICkKKyAgICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogIGduYW1lID0gZ2V0X2dseXBoX25hbWUoIGdseXBoX2RhdGEsIG4gKTsKKworCisgICAgICAgIGlmICggZ25hbWUgKQorICAgICAgICB7CisgICAgICAgICAgcHNfY2hlY2tfZXh0cmFfZ2x5cGhfbmFtZSggZ25hbWUsIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZ2x5cGhzLCBleHRyYV9nbHlwaF9saXN0X3N0YXRlcyApOworICAgICAgICAgIHVuaV9jaGFyID0gRlhGVF91bmljb2RlX2Zyb21fYWRvYmVfbmFtZSggZ25hbWUgKTsKKworICAgICAgICAgIGlmICggQkFTRV9HTFlQSCggdW5pX2NoYXIgKSAhPSAwICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBwc19jaGVja19leHRyYV9nbHlwaF91bmljb2RlKCB1bmlfY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2dseXBoX2xpc3Rfc3RhdGVzICk7CisgICAgICAgICAgICBtYXAtPnVuaWNvZGUgICAgID0gdW5pX2NoYXI7CisgICAgICAgICAgICBtYXAtPmdseXBoX2luZGV4ID0gbjsKKyAgICAgICAgICAgIG1hcCsrOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICggZnJlZV9nbHlwaF9uYW1lICkKKyAgICAgICAgICAgIGZyZWVfZ2x5cGhfbmFtZSggZ2x5cGhfZGF0YSwgZ25hbWUgKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBmb3IgKCBuID0gMDsgbiA8IEVYVFJBX0dMWVBIX0xJU1RfU0laRTsgbisrICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBleHRyYV9nbHlwaF9saXN0X3N0YXRlc1tuXSA9PSAxICkKKyAgICAgICAgeworICAgICAgICAgIC8qIFRoaXMgZ2x5cGggbmFtZSBoYXMgYW4gYWRkaXRpb25hbCByZXByZXNlbnRhdGlvbi4gKi8KKyAgICAgICAgICAvKiBBZGQgaXQgdG8gdGhlIGNtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICBtYXAtPnVuaWNvZGUgICAgID0gZnRfZXh0cmFfZ2x5cGhfdW5pY29kZXNbbl07CisgICAgICAgICAgbWFwLT5nbHlwaF9pbmRleCA9IGV4dHJhX2dseXBoc1tuXTsKKyAgICAgICAgICBtYXArKzsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiBub3cgY29tcHJlc3MgdGhlIHRhYmxlIGEgYml0ICovCisgICAgICBjb3VudCA9IChGVF9VSW50KSggbWFwIC0gdGFibGUtPm1hcHMgKTsKKworICAgICAgaWYgKCBjb3VudCA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgLyogTm8gdW5pY29kZSBjaGFycyBoZXJlISAqLworICAgICAgICBGVF9GUkVFKCB0YWJsZS0+bWFwcyApOworICAgICAgICBpZiAoICFlcnJvciApCisgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggTm9fVW5pY29kZV9HbHlwaF9OYW1lICk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIFJlYWxsb2NhdGUgaWYgdGhlIG51bWJlciBvZiB1c2VkIGVudHJpZXMgaXMgbXVjaCBzbWFsbGVyLiAqLworICAgICAgICBpZiAoIGNvdW50IDwgbnVtX2dseXBocyAvIDIgKQorICAgICAgICB7CisgICAgICAgICAgKHZvaWQpRlRfUkVORVdfQVJSQVkoIHRhYmxlLT5tYXBzLCBudW1fZ2x5cGhzLCBjb3VudCApOworICAgICAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgICAgICB9CisKKyAgICAgICAgLyogU29ydCB0aGUgdGFibGUgaW4gaW5jcmVhc2luZyBvcmRlciBvZiB1bmljb2RlIHZhbHVlcywgKi8KKyAgICAgICAgLyogdGFraW5nIGNhcmUgb2YgZ2x5cGggdmFyaWFudHMuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgZnRfcXNvcnQoIHRhYmxlLT5tYXBzLCBjb3VudCwgc2l6ZW9mICggUFNfVW5pTWFwICksCisgICAgICAgICAgICAgICAgICBjb21wYXJlX3VuaV9tYXBzICk7CisgICAgICB9CisKKyAgICAgIHRhYmxlLT5udW1fbWFwcyA9IGNvdW50OworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX1VJbnQKKyAgcHNfdW5pY29kZXNfY2hhcl9pbmRleCggUFNfVW5pY29kZXMgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICAgdW5pY29kZSApCisgIHsKKyAgICBQU19VbmlNYXAgICptaW4sICptYXgsICptaWQsICpyZXN1bHQgPSBOVUxMOworCisKKyAgICAvKiBQZXJmb3JtIGEgYmluYXJ5IHNlYXJjaCBvbiB0aGUgdGFibGUuICovCisKKyAgICBtaW4gPSB0YWJsZS0+bWFwczsKKyAgICBtYXggPSBtaW4gKyB0YWJsZS0+bnVtX21hcHMgLSAxOworCisgICAgd2hpbGUgKCBtaW4gPD0gbWF4ICkKKyAgICB7CisgICAgICBGVF9VSW50MzIgIGJhc2VfZ2x5cGg7CisKKworICAgICAgbWlkID0gbWluICsgKCAoIG1heCAtIG1pbiApID4+IDEgKTsKKworICAgICAgaWYgKCBtaWQtPnVuaWNvZGUgPT0gdW5pY29kZSApCisgICAgICB7CisgICAgICAgIHJlc3VsdCA9IG1pZDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGJhc2VfZ2x5cGggPSBCQVNFX0dMWVBIKCBtaWQtPnVuaWNvZGUgKTsKKworICAgICAgaWYgKCBiYXNlX2dseXBoID09IHVuaWNvZGUgKQorICAgICAgICByZXN1bHQgPSBtaWQ7IC8qIHJlbWVtYmVyIG1hdGNoIGJ1dCBjb250aW51ZSBzZWFyY2ggZm9yIGJhc2UgZ2x5cGggKi8KKworICAgICAgaWYgKCBtaW4gPT0gbWF4ICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGlmICggYmFzZV9nbHlwaCA8IHVuaWNvZGUgKQorICAgICAgICBtaW4gPSBtaWQgKyAxOworICAgICAgZWxzZQorICAgICAgICBtYXggPSBtaWQgLSAxOworICAgIH0KKworICAgIGlmICggcmVzdWx0ICkKKyAgICAgIHJldHVybiByZXN1bHQtPmdseXBoX2luZGV4OworICAgIGVsc2UKKyAgICAgIHJldHVybiAwOworICB9CisKKworICBzdGF0aWMgRlRfVUludDMyCisgIHBzX3VuaWNvZGVzX2NoYXJfbmV4dCggUFNfVW5pY29kZXMgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgICp1bmljb2RlICkKKyAgeworICAgIEZUX1VJbnQgICAgcmVzdWx0ICAgID0gMDsKKyAgICBGVF9VSW50MzIgIGNoYXJfY29kZSA9ICp1bmljb2RlICsgMTsKKworCisgICAgeworICAgICAgRlRfVUludCAgICAgbWluID0gMDsKKyAgICAgIEZUX1VJbnQgICAgIG1heCA9IHRhYmxlLT5udW1fbWFwczsKKyAgICAgIEZUX1VJbnQgICAgIG1pZDsKKyAgICAgIFBTX1VuaU1hcCogIG1hcDsKKyAgICAgIEZUX1VJbnQzMiAgIGJhc2VfZ2x5cGg7CisKKworICAgICAgd2hpbGUgKCBtaW4gPCBtYXggKQorICAgICAgeworICAgICAgICBtaWQgPSBtaW4gKyAoICggbWF4IC0gbWluICkgPj4gMSApOworICAgICAgICBtYXAgPSB0YWJsZS0+bWFwcyArIG1pZDsKKworICAgICAgICBpZiAoIG1hcC0+dW5pY29kZSA9PSBjaGFyX2NvZGUgKQorICAgICAgICB7CisgICAgICAgICAgcmVzdWx0ID0gbWFwLT5nbHlwaF9pbmRleDsKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBiYXNlX2dseXBoID0gQkFTRV9HTFlQSCggbWFwLT51bmljb2RlICk7CisKKyAgICAgICAgaWYgKCBiYXNlX2dseXBoID09IGNoYXJfY29kZSApCisgICAgICAgICAgcmVzdWx0ID0gbWFwLT5nbHlwaF9pbmRleDsKKworICAgICAgICBpZiAoIGJhc2VfZ2x5cGggPCBjaGFyX2NvZGUgKQorICAgICAgICAgIG1pbiA9IG1pZCArIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBtYXggPSBtaWQ7CisgICAgICB9CisKKyAgICAgIGlmICggcmVzdWx0ICkKKyAgICAgICAgZ290byBFeGl0OyAgICAgICAgICAgICAgIC8qIHdlIGhhdmUgYSB2YXJpYW50IGdseXBoICovCisKKyAgICAgIC8qIHdlIGRpZG4ndCBmaW5kIGl0OyBjaGVjayB3aGV0aGVyIHdlIGhhdmUgYSBtYXAganVzdCBhYm92ZSBpdCAqLworICAgICAgY2hhcl9jb2RlID0gMDsKKworICAgICAgaWYgKCBtaW4gPCB0YWJsZS0+bnVtX21hcHMgKQorICAgICAgeworICAgICAgICBtYXAgICAgICAgPSB0YWJsZS0+bWFwcyArIG1pbjsKKyAgICAgICAgcmVzdWx0ICAgID0gbWFwLT5nbHlwaF9pbmRleDsKKyAgICAgICAgY2hhcl9jb2RlID0gQkFTRV9HTFlQSCggbWFwLT51bmljb2RlICk7CisgICAgICB9CisgICAgfQorCisgIEV4aXQ6CisgICAgKnVuaWNvZGUgPSBjaGFyX2NvZGU7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX0FET0JFX0dMWVBIX0xJU1QgKi8KKworCisgIHN0YXRpYyBjb25zdCBjaGFyKgorICBwc19nZXRfbWFjaW50b3NoX25hbWUoIEZUX1VJbnQgIG5hbWVfaW5kZXggKQorICB7CisgICAgaWYgKCBuYW1lX2luZGV4ID49IEZUX05VTV9NQUNfTkFNRVMgKQorICAgICAgbmFtZV9pbmRleCA9IDA7CisKKyAgICByZXR1cm4gZnRfc3RhbmRhcmRfZ2x5cGhfbmFtZXMgKyBmdF9tYWNfbmFtZXNbbmFtZV9pbmRleF07CisgIH0KKworCisgIHN0YXRpYyBjb25zdCBjaGFyKgorICBwc19nZXRfc3RhbmRhcmRfc3RyaW5ncyggRlRfVUludCAgc2lkICkKKyAgeworICAgIGlmICggc2lkID49IEZUX05VTV9TSURfTkFNRVMgKQorICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gZnRfc3RhbmRhcmRfZ2x5cGhfbmFtZXMgKyBmdF9zaWRfbmFtZXNbc2lkXTsKKyAgfQorCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0FET0JFX0dMWVBIX0xJU1QKKworICBGVF9ERUZJTkVfU0VSVklDRV9QU0NNQVBTUkVDKAorICAgIHBzY21hcHNfaW50ZXJmYWNlLAorICAgIChQU19Vbmljb2RlX1ZhbHVlRnVuYykgICAgIEZYRlRfdW5pY29kZV9mcm9tX2Fkb2JlX25hbWUsCisgICAgKFBTX1VuaWNvZGVzX0luaXRGdW5jKSAgICAgcHNfdW5pY29kZXNfaW5pdCwKKyAgICAoUFNfVW5pY29kZXNfQ2hhckluZGV4RnVuYylwc191bmljb2Rlc19jaGFyX2luZGV4LAorICAgIChQU19Vbmljb2Rlc19DaGFyTmV4dEZ1bmMpIHBzX3VuaWNvZGVzX2NoYXJfbmV4dCwKKworICAgIChQU19NYWNpbnRvc2hfTmFtZUZ1bmMpICAgIHBzX2dldF9tYWNpbnRvc2hfbmFtZSwKKyAgICAoUFNfQWRvYmVfU3RkX1N0cmluZ3NGdW5jKSBwc19nZXRfc3RhbmRhcmRfc3RyaW5ncywKKworICAgIHQxX3N0YW5kYXJkX2VuY29kaW5nLAorICAgIHQxX2V4cGVydF9lbmNvZGluZyApCisKKyNlbHNlCisKKyAgRlRfREVGSU5FX1NFUlZJQ0VfUFNDTUFQU1JFQygKKyAgICBwc2NtYXBzX2ludGVyZmFjZSwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorCisgICAgKFBTX01hY2ludG9zaF9OYW1lRnVuYykgICAgcHNfZ2V0X21hY2ludG9zaF9uYW1lLAorICAgIChQU19BZG9iZV9TdGRfU3RyaW5nc0Z1bmMpIHBzX2dldF9zdGFuZGFyZF9zdHJpbmdzLAorCisgICAgdDFfc3RhbmRhcmRfZW5jb2RpbmcsCisgICAgdDFfZXhwZXJ0X2VuY29kaW5nICkKKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fQURPQkVfR0xZUEhfTElTVCAqLworCisKKyAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDMSgKKyAgICBwc2NtYXBzX3NlcnZpY2VzLAorICAgIEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9DTUFQUywgJlBTQ01BUFNfSU5URVJGQUNFX0dFVCApCisKKworICBzdGF0aWMgRlRfUG9pbnRlcgorICBwc25hbWVzX2dldF9zZXJ2aWNlKCBGVF9Nb2R1bGUgICAgbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgc2VydmljZV9pZCApCisgIHsKKyAgICAvKiBQU0NNQVBTX1NFUlZJQ0VTX0dFVCBkZXJlZmVycyBgbGlicmFyeScgaW4gUElDIG1vZGUgKi8KKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworICAgIEZUX0xpYnJhcnkgIGxpYnJhcnk7CisKKworICAgIGlmICggIW1vZHVsZSApCisgICAgICByZXR1cm4gTlVMTDsKKyAgICBsaWJyYXJ5ID0gbW9kdWxlLT5saWJyYXJ5OworICAgIGlmICggIWxpYnJhcnkgKQorICAgICAgcmV0dXJuIE5VTEw7CisjZWxzZQorICAgIEZUX1VOVVNFRCggbW9kdWxlICk7CisjZW5kaWYKKworICAgIHJldHVybiBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwKCBQU0NNQVBTX1NFUlZJQ0VTX0dFVCwgc2VydmljZV9pZCApOworICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMgKi8KKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUworI2RlZmluZSBQVVRfUFNfTkFNRVNfU0VSVklDRSggYSApICBOVUxMCisjZWxzZQorI2RlZmluZSBQVVRfUFNfTkFNRVNfU0VSVklDRSggYSApICBhCisjZW5kaWYKKworICBGVF9ERUZJTkVfTU9EVUxFKAorICAgIHBzbmFtZXNfbW9kdWxlX2NsYXNzLAorCisgICAgMCwgIC8qIHRoaXMgaXMgbm90IGEgZm9udCBkcml2ZXIsIG5vciBhIHJlbmRlcmVyICovCisgICAgc2l6ZW9mICggRlRfTW9kdWxlUmVjICksCisKKyAgICAicHNuYW1lcyIsICAvKiBkcml2ZXIgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIDB4MTAwMDBMLCAgIC8qIGRyaXZlciB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICovCisgICAgMHgyMDAwMEwsICAgLyogZHJpdmVyIHJlcXVpcmVzIEZyZWVUeXBlIDIgb3IgYWJvdmUgKi8KKworICAgIFBVVF9QU19OQU1FU19TRVJWSUNFKAorICAgICAgKHZvaWQqKSZQU0NNQVBTX0lOVEVSRkFDRV9HRVQgKSwgICAvKiBtb2R1bGUgc3BlY2lmaWMgaW50ZXJmYWNlICovCisgICAgKEZUX01vZHVsZV9Db25zdHJ1Y3RvcilOVUxMLAorICAgIChGVF9Nb2R1bGVfRGVzdHJ1Y3RvcikgTlVMTCwKKyAgICAoRlRfTW9kdWxlX1JlcXVlc3RlcikgIFBVVF9QU19OQU1FU19TRVJWSUNFKCBwc25hbWVzX2dldF9zZXJ2aWNlICkgKQorCisKKy8qIEVORCAqLworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9tb2R1bGUubWsgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvbW9kdWxlLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZTkwODIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvbW9kdWxlLm1rCkBAIC0wLDAgKzEsMjMgQEAKKyMKKyMgRnJlZVR5cGUgMiBQU25hbWVzIG1vZHVsZSBkZWZpbml0aW9uCisjCisKKworIyBDb3B5cmlnaHQgMTk5Ni0yMDAwLCAyMDA2IGJ5CisjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKKyMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQorIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorIyBmdWxseS4KKworCitGVE1PRFVMRV9IX0NPTU1BTkRTICs9IFBTTkFNRVNfTU9EVUxFCisKK2RlZmluZSBQU05BTUVTX01PRFVMRQorJChPUEVOX0RSSVZFUikgRlRfTW9kdWxlX0NsYXNzLCBwc25hbWVzX21vZHVsZV9jbGFzcyAkKENMT1NFX0RSSVZFUikKKyQoRUNIT19EUklWRVIpcHNuYW1lcyAgICQoRUNIT19EUklWRVJfREVTQylQb3N0c2NyaXB0ICYgVW5pY29kZSBHbHlwaCBuYW1lIGhhbmRsaW5nJChFQ0hPX0RSSVZFUl9ET05FKQorZW5kZWYKKworIyBFT0YKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9wc21vZHVsZS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc25hbWVzL3BzbW9kdWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYzN2E4YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9wc21vZHVsZS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHBzbW9kdWxlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBIaWdoLWxldmVsIFBTTmFtZXMgbW9kdWxlIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1BTTU9EVUxFX0hfXworI2RlZmluZSBfX1BTTU9EVUxFX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1vZGFwaS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfREVDTEFSRV9NT0RVTEUoIHBzbmFtZXNfbW9kdWxlX2NsYXNzICkKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1BTTU9EVUxFX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc25hbWVzL3BzbmFtZXJyLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvcHNuYW1lcnIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2I2YzdlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc25hbWVzL3BzbmFtZXJyLmgKQEAgLTAsMCArMSw0MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcHNuYW1lcnIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFBTIG5hbWVzIG1vZHVsZSBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAxLCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBQUyBuYW1lcyBtb2R1bGUgZXJyb3IgZW51bWVyYXRpb24gICAgICovCisgIC8qIGNvbnN0YW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19QU05BTUVSUl9IX18KKyNkZWZpbmUgX19QU05BTUVSUl9IX18KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaCIKKworI3VuZGVmIF9fRlRFUlJPUlNfSF9fCisKKyN1bmRlZiAgRlRfRVJSX1BSRUZJWAorI2RlZmluZSBGVF9FUlJfUFJFRklYICBQU25hbWVzX0Vycl8KKyNkZWZpbmUgRlRfRVJSX0JBU0UgICAgRlRfTW9kX0Vycl9QU25hbWVzCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmgiCisKKyNlbmRpZiAvKiBfX1BTTkFNRVJSX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc25hbWVzL3BzbmFtZXMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9wc25hbWVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjOTU5NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9wc25hbWVzLmMKQEAgLTAsMCArMSwyNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcHNuYW1lcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIFBTTmFtZXMgbW9kdWxlIGNvbXBvbmVudCAoYm9keSBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjZGVmaW5lIEZUX01BS0VfT1BUSU9OX1NJTkdMRV9PQkpFQ1QKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJwc3BpYy5jIgorI2luY2x1ZGUgInBzbW9kdWxlLmMiCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvcHNwaWMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9wc3BpYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZGZjZDkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvcHNwaWMuYwpAQCAtMCwwICsxLDk3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc3BpYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUgc2VydmljZXMgZm9yIHBzbmFtZXMgbW9kdWxlLiAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDksIDIwMTAsIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAicHNwaWMuaCIKKyNpbmNsdWRlICJwc25hbWVyci5oIgorCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisgIC8qIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgUElDIGluaXQgZnVuY3Rpb25zIGZyb20gcHNtb2R1bGUuYyAqLworICBGVF9FcnJvcgorICBGVF9DcmVhdGVfQ2xhc3NfcHNjbWFwc19zZXJ2aWNlcyggRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiogIG91dHB1dF9jbGFzcyApOworICB2b2lkCisgIEZUX0Rlc3Ryb3lfQ2xhc3NfcHNjbWFwc19zZXJ2aWNlcyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgY2xhenogKTsKKworICB2b2lkCisgIEZUX0luaXRfQ2xhc3NfcHNjbWFwc19pbnRlcmZhY2UoIEZUX0xpYnJhcnkgICAgICAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NlcnZpY2VfUHNDTWFwc1JlYyogIGNsYXp6ICk7CisKKworICB2b2lkCisgIHBzbmFtZXNfbW9kdWxlX2NsYXNzX3BpY19mcmVlKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX1BJQ19Db250YWluZXIqICBwaWNfY29udGFpbmVyID0gJmxpYnJhcnktPnBpY19jb250YWluZXI7CisgICAgRlRfTWVtb3J5ICAgICAgICAgIG1lbW9yeSAgICAgICAgPSBsaWJyYXJ5LT5tZW1vcnk7CisKKworICAgIGlmICggcGljX2NvbnRhaW5lci0+cHNuYW1lcyApCisgICAgeworICAgICAgUFNNb2R1bGVQSUMqICBjb250YWluZXIgPSAoUFNNb2R1bGVQSUMqKXBpY19jb250YWluZXItPnBzbmFtZXM7CisKKworICAgICAgaWYgKCBjb250YWluZXItPnBzY21hcHNfc2VydmljZXMgKQorICAgICAgICBGVF9EZXN0cm95X0NsYXNzX3BzY21hcHNfc2VydmljZXMoIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLT5wc2NtYXBzX3NlcnZpY2VzICk7CisgICAgICBjb250YWluZXItPnBzY21hcHNfc2VydmljZXMgPSBOVUxMOworICAgICAgRlRfRlJFRSggY29udGFpbmVyICk7CisgICAgICBwaWNfY29udGFpbmVyLT5wc25hbWVzID0gTlVMTDsKKyAgICB9CisgIH0KKworCisgIEZUX0Vycm9yCisgIHBzbmFtZXNfbW9kdWxlX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX1BJQ19Db250YWluZXIqICBwaWNfY29udGFpbmVyID0gJmxpYnJhcnktPnBpY19jb250YWluZXI7CisgICAgRlRfRXJyb3IgICAgICAgICAgIGVycm9yICAgICAgICAgPSBGVF9FcnJfT2s7CisgICAgUFNNb2R1bGVQSUMqICAgICAgIGNvbnRhaW5lciAgICAgPSBOVUxMOworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnkgICAgICAgID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICAvKiBhbGxvY2F0ZSBwb2ludGVyLCBjbGVhciBhbmQgc2V0IGdsb2JhbCBjb250YWluZXIgcG9pbnRlciAqLworICAgIGlmICggRlRfQUxMT0MoIGNvbnRhaW5lciwgc2l6ZW9mICggKmNvbnRhaW5lciApICkgKQorICAgICAgcmV0dXJuIGVycm9yOworICAgIEZUX01FTV9TRVQoIGNvbnRhaW5lciwgMCwgc2l6ZW9mICggKmNvbnRhaW5lciApICk7CisgICAgcGljX2NvbnRhaW5lci0+cHNuYW1lcyA9IGNvbnRhaW5lcjsKKworICAgIC8qIGluaXRpYWxpemUgcG9pbnRlciB0YWJsZSAtICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIHRoaXMgaXMgaG93IHRoZSBtb2R1bGUgdXN1YWxseSBleHBlY3RzIHRoaXMgZGF0YSAqLworICAgIGVycm9yID0gRlRfQ3JlYXRlX0NsYXNzX3BzY21hcHNfc2VydmljZXMoCisgICAgICAgICAgICAgIGxpYnJhcnksICZjb250YWluZXItPnBzY21hcHNfc2VydmljZXMgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKyAgICBGVF9Jbml0X0NsYXNzX3BzY21hcHNfaW50ZXJmYWNlKCBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250YWluZXItPnBzY21hcHNfaW50ZXJmYWNlICk7CisKKyAgRXhpdDoKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHBzbmFtZXNfbW9kdWxlX2NsYXNzX3BpY19mcmVlKCBsaWJyYXJ5ICk7CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvcHNwaWMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9wc3BpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNTVlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvcHNwaWMuaApAQCAtMCwwICsxLDY2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwc3BpYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUgc2VydmljZXMgZm9yIHBzbmFtZXMgbW9kdWxlLiAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19QU1BJQ19IX18KKyNkZWZpbmUgX19QU1BJQ19IX18KKworCitGVF9CRUdJTl9IRUFERVIKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRwaWMuaCIKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIFBTQ01BUFNfU0VSVklDRVNfR0VUICAgcHNjbWFwc19zZXJ2aWNlcworI2RlZmluZSBQU0NNQVBTX0lOVEVSRkFDRV9HRVQgIHBzY21hcHNfaW50ZXJmYWNlCisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNjbWFwLmgiCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFBTTW9kdWxlUElDXworICB7CisgICAgRlRfU2VydmljZURlc2NSZWMqICAgICBwc2NtYXBzX3NlcnZpY2VzOworICAgIEZUX1NlcnZpY2VfUHNDTWFwc1JlYyAgcHNjbWFwc19pbnRlcmZhY2U7CisKKyAgfSBQU01vZHVsZVBJQzsKKworCisjZGVmaW5lIEdFVF9QSUMoIGxpYiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIChQU01vZHVsZVBJQyopKChsaWIpLT5waWNfY29udGFpbmVyLnBzbmFtZXMpICkKKyNkZWZpbmUgUFNDTUFQU19TRVJWSUNFU19HRVQgICAoIEdFVF9QSUMoIGxpYnJhcnkgKS0+cHNjbWFwc19zZXJ2aWNlcyApCisjZGVmaW5lIFBTQ01BUFNfSU5URVJGQUNFX0dFVCAgKCBHRVRfUElDKCBsaWJyYXJ5ICktPnBzY21hcHNfaW50ZXJmYWNlICkKKworCisgIC8qIHNlZSBwc3BpYy5jIGZvciB0aGUgaW1wbGVtZW50YXRpb24gKi8KKyAgdm9pZAorICBwc25hbWVzX21vZHVsZV9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisgIEZUX0Vycm9yCisgIHBzbmFtZXNfbW9kdWxlX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19QU1BJQ19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9wc3RhYmxlcy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc25hbWVzL3BzdGFibGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZmMDM5ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9wc3RhYmxlcy5oCkBAIC0wLDAgKzEsNDE4NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcHN0YWJsZXMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFBvc3RTY3JpcHQgZ2x5cGggbmFtZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA1LCAyMDA4LCAyMDExIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSAtLSBkbyBub3QgZWRpdCEgKi8KKworI2lmZGVmIF9GWF9NQU5BR0VEX0NPREVfCitfX2RlY2xzcGVjKHByb2Nlc3MpCisjZW5kaWYKKyAgc3RhdGljIGNvbnN0IGNoYXIgIGZ0X3N0YW5kYXJkX2dseXBoX25hbWVzWzM2OTZdID0KKyAgeworICAgICcuJywnbicsJ3UnLCdsJywnbCcsIDAsCisgICAgJ24nLCdvJywnbicsJ20nLCdhJywncicsJ2snLCdpJywnbicsJ2cnLCdyJywnZScsJ3QnLCd1JywncicsJ24nLCAwLAorICAgICduJywnbycsJ3QnLCdlJywncScsJ3UnLCdhJywnbCcsIDAsCisgICAgJ2knLCduJywnZicsJ2knLCduJywnaScsJ3QnLCd5JywgMCwKKyAgICAnbCcsJ2UnLCdzJywncycsJ2UnLCdxJywndScsJ2EnLCdsJywgMCwKKyAgICAnZycsJ3InLCdlJywnYScsJ3QnLCdlJywncicsJ2UnLCdxJywndScsJ2EnLCdsJywgMCwKKyAgICAncCcsJ2EnLCdyJywndCcsJ2knLCdhJywnbCcsJ2QnLCdpJywnZicsJ2YnLCAwLAorICAgICdzJywndScsJ20nLCdtJywnYScsJ3QnLCdpJywnbycsJ24nLCAwLAorICAgICdwJywncicsJ28nLCdkJywndScsJ2MnLCd0JywgMCwKKyAgICAncCcsJ2knLCAwLAorICAgICdpJywnbicsJ3QnLCdlJywnZycsJ3InLCdhJywnbCcsIDAsCisgICAgJ08nLCdtJywnZScsJ2cnLCdhJywgMCwKKyAgICAncicsJ2EnLCdkJywnaScsJ2MnLCdhJywnbCcsIDAsCisgICAgJ2EnLCdwJywncCcsJ3InLCdvJywneCcsJ2UnLCdxJywndScsJ2EnLCdsJywgMCwKKyAgICAnRCcsJ2UnLCdsJywndCcsJ2EnLCAwLAorICAgICduJywnbycsJ24nLCdiJywncicsJ2UnLCdhJywnaycsJ2knLCduJywnZycsJ3MnLCdwJywnYScsJ2MnLCdlJywgMCwKKyAgICAnbCcsJ28nLCd6JywnZScsJ24nLCdnJywnZScsIDAsCisgICAgJ2EnLCdwJywncCcsJ2wnLCdlJywgMCwKKyAgICAnZicsJ3InLCdhJywnbicsJ2MnLCAwLAorICAgICdHJywnYicsJ3InLCdlJywndicsJ2UnLCAwLAorICAgICdnJywnYicsJ3InLCdlJywndicsJ2UnLCAwLAorICAgICdJJywnZCcsJ28nLCd0JywnYScsJ2MnLCdjJywnZScsJ24nLCd0JywgMCwKKyAgICAnUycsJ2MnLCdlJywnZCcsJ2knLCdsJywnbCcsJ2EnLCAwLAorICAgICdzJywnYycsJ2UnLCdkJywnaScsJ2wnLCdsJywnYScsIDAsCisgICAgJ0MnLCdhJywnYycsJ3UnLCd0JywnZScsIDAsCisgICAgJ2MnLCdhJywnYycsJ3UnLCd0JywnZScsIDAsCisgICAgJ0MnLCdjJywnYScsJ3InLCdvJywnbicsIDAsCisgICAgJ2MnLCdjJywnYScsJ3InLCdvJywnbicsIDAsCisgICAgJ2QnLCdjJywncicsJ28nLCdhJywndCcsIDAsCisgICAgJy4nLCduJywnbycsJ3QnLCdkJywnZScsJ2YnLCAwLAorICAgICdzJywncCcsJ2EnLCdjJywnZScsIDAsCisgICAgJ2UnLCd4JywnYycsJ2wnLCdhJywnbScsIDAsCisgICAgJ3EnLCd1JywnbycsJ3QnLCdlJywnZCcsJ2InLCdsJywgMCwKKyAgICAnbicsJ3UnLCdtJywnYicsJ2UnLCdyJywncycsJ2knLCdnJywnbicsIDAsCisgICAgJ2QnLCdvJywnbCcsJ2wnLCdhJywncicsIDAsCisgICAgJ3AnLCdlJywncicsJ2MnLCdlJywnbicsJ3QnLCAwLAorICAgICdhJywnbScsJ3AnLCdlJywncicsJ3MnLCdhJywnbicsJ2QnLCAwLAorICAgICdxJywndScsJ28nLCd0JywnZScsJ3InLCdpJywnZycsJ2gnLCd0JywgMCwKKyAgICAncCcsJ2EnLCdyJywnZScsJ24nLCdsJywnZScsJ2YnLCd0JywgMCwKKyAgICAncCcsJ2EnLCdyJywnZScsJ24nLCdyJywnaScsJ2cnLCdoJywndCcsIDAsCisgICAgJ2EnLCdzJywndCcsJ2UnLCdyJywnaScsJ3MnLCdrJywgMCwKKyAgICAncCcsJ2wnLCd1JywncycsIDAsCisgICAgJ2MnLCdvJywnbScsJ20nLCdhJywgMCwKKyAgICAnaCcsJ3knLCdwJywnaCcsJ2UnLCduJywgMCwKKyAgICAncCcsJ2UnLCdyJywnaScsJ28nLCdkJywgMCwKKyAgICAncycsJ2wnLCdhJywncycsJ2gnLCAwLAorICAgICd6JywnZScsJ3InLCdvJywgMCwKKyAgICAnbycsJ24nLCdlJywgMCwKKyAgICAndCcsJ3cnLCdvJywgMCwKKyAgICAndCcsJ2gnLCdyJywnZScsJ2UnLCAwLAorICAgICdmJywnbycsJ3UnLCdyJywgMCwKKyAgICAnZicsJ2knLCd2JywnZScsIDAsCisgICAgJ3MnLCdpJywneCcsIDAsCisgICAgJ3MnLCdlJywndicsJ2UnLCduJywgMCwKKyAgICAnZScsJ2knLCdnJywnaCcsJ3QnLCAwLAorICAgICduJywnaScsJ24nLCdlJywgMCwKKyAgICAnYycsJ28nLCdsJywnbycsJ24nLCAwLAorICAgICdzJywnZScsJ20nLCdpJywnYycsJ28nLCdsJywnbycsJ24nLCAwLAorICAgICdsJywnZScsJ3MnLCdzJywgMCwKKyAgICAnZScsJ3EnLCd1JywnYScsJ2wnLCAwLAorICAgICdnJywncicsJ2UnLCdhJywndCcsJ2UnLCdyJywgMCwKKyAgICAncScsJ3UnLCdlJywncycsJ3QnLCdpJywnbycsJ24nLCAwLAorICAgICdhJywndCcsIDAsCisgICAgJ0EnLCAwLAorICAgICdCJywgMCwKKyAgICAnQycsIDAsCisgICAgJ0QnLCAwLAorICAgICdFJywgMCwKKyAgICAnRicsIDAsCisgICAgJ0cnLCAwLAorICAgICdIJywgMCwKKyAgICAnSScsIDAsCisgICAgJ0onLCAwLAorICAgICdLJywgMCwKKyAgICAnTCcsIDAsCisgICAgJ00nLCAwLAorICAgICdOJywgMCwKKyAgICAnTycsIDAsCisgICAgJ1AnLCAwLAorICAgICdRJywgMCwKKyAgICAnUicsIDAsCisgICAgJ1MnLCAwLAorICAgICdUJywgMCwKKyAgICAnVScsIDAsCisgICAgJ1YnLCAwLAorICAgICdXJywgMCwKKyAgICAnWCcsIDAsCisgICAgJ1knLCAwLAorICAgICdaJywgMCwKKyAgICAnYicsJ3InLCdhJywnYycsJ2snLCdlJywndCcsJ2wnLCdlJywnZicsJ3QnLCAwLAorICAgICdiJywnYScsJ2MnLCdrJywncycsJ2wnLCdhJywncycsJ2gnLCAwLAorICAgICdiJywncicsJ2EnLCdjJywnaycsJ2UnLCd0JywncicsJ2knLCdnJywnaCcsJ3QnLCAwLAorICAgICdhJywncycsJ2MnLCdpJywnaScsJ2MnLCdpJywncicsJ2MnLCd1JywnbScsIDAsCisgICAgJ3UnLCduJywnZCcsJ2UnLCdyJywncycsJ2MnLCdvJywncicsJ2UnLCAwLAorICAgICdxJywndScsJ28nLCd0JywnZScsJ2wnLCdlJywnZicsJ3QnLCAwLAorICAgICdhJywgMCwKKyAgICAnYicsIDAsCisgICAgJ2MnLCAwLAorICAgICdkJywgMCwKKyAgICAnZScsIDAsCisgICAgJ2YnLCAwLAorICAgICdnJywgMCwKKyAgICAnaCcsIDAsCisgICAgJ2knLCAwLAorICAgICdqJywgMCwKKyAgICAnaycsIDAsCisgICAgJ2wnLCAwLAorICAgICdtJywgMCwKKyAgICAnbicsIDAsCisgICAgJ28nLCAwLAorICAgICdwJywgMCwKKyAgICAncScsIDAsCisgICAgJ3InLCAwLAorICAgICdzJywgMCwKKyAgICAndCcsIDAsCisgICAgJ3UnLCAwLAorICAgICd2JywgMCwKKyAgICAndycsIDAsCisgICAgJ3gnLCAwLAorICAgICd5JywgMCwKKyAgICAneicsIDAsCisgICAgJ2InLCdyJywnYScsJ2MnLCdlJywnbCcsJ2UnLCdmJywndCcsIDAsCisgICAgJ2InLCdhJywncicsIDAsCisgICAgJ2InLCdyJywnYScsJ2MnLCdlJywncicsJ2knLCdnJywnaCcsJ3QnLCAwLAorICAgICdhJywncycsJ2MnLCdpJywnaScsJ3QnLCdpJywnbCcsJ2QnLCdlJywgMCwKKyAgICAnZScsJ3gnLCdjJywnbCcsJ2EnLCdtJywnZCcsJ28nLCd3JywnbicsIDAsCisgICAgJ2MnLCdlJywnbicsJ3QnLCAwLAorICAgICdzJywndCcsJ2UnLCdyJywnbCcsJ2knLCduJywnZycsIDAsCisgICAgJ2YnLCdyJywnYScsJ2MnLCd0JywnaScsJ28nLCduJywgMCwKKyAgICAneScsJ2UnLCduJywgMCwKKyAgICAnZicsJ2wnLCdvJywncicsJ2knLCduJywgMCwKKyAgICAncycsJ2UnLCdjJywndCcsJ2knLCdvJywnbicsIDAsCisgICAgJ2MnLCd1JywncicsJ3InLCdlJywnbicsJ2MnLCd5JywgMCwKKyAgICAncScsJ3UnLCdvJywndCcsJ2UnLCdzJywnaScsJ24nLCdnJywnbCcsJ2UnLCAwLAorICAgICdxJywndScsJ28nLCd0JywnZScsJ2QnLCdiJywnbCcsJ2wnLCdlJywnZicsJ3QnLCAwLAorICAgICdnJywndScsJ2knLCdsJywnbCcsJ2UnLCdtJywnbycsJ3QnLCdsJywnZScsJ2YnLCd0JywgMCwKKyAgICAnZycsJ3UnLCdpJywnbCcsJ3MnLCdpJywnbicsJ2cnLCdsJywnbCcsJ2UnLCdmJywndCcsIDAsCisgICAgJ2cnLCd1JywnaScsJ2wnLCdzJywnaScsJ24nLCdnJywnbCcsJ3InLCdpJywnZycsJ2gnLCd0JywgMCwKKyAgICAnZicsJ2knLCAwLAorICAgICdmJywnbCcsIDAsCisgICAgJ2UnLCduJywnZCcsJ2EnLCdzJywnaCcsIDAsCisgICAgJ2QnLCdhJywnZycsJ2cnLCdlJywncicsIDAsCisgICAgJ2QnLCdhJywnZycsJ2cnLCdlJywncicsJ2QnLCdiJywnbCcsIDAsCisgICAgJ3AnLCdlJywncicsJ2knLCdvJywnZCcsJ2MnLCdlJywnbicsJ3QnLCdlJywncicsJ2UnLCdkJywgMCwKKyAgICAncCcsJ2EnLCdyJywnYScsJ2cnLCdyJywnYScsJ3AnLCdoJywgMCwKKyAgICAnYicsJ3UnLCdsJywnbCcsJ2UnLCd0JywgMCwKKyAgICAncScsJ3UnLCdvJywndCcsJ2UnLCdzJywnaScsJ24nLCdnJywnbCcsJ2InLCdhJywncycsJ2UnLCAwLAorICAgICdxJywndScsJ28nLCd0JywnZScsJ2QnLCdiJywnbCcsJ2InLCdhJywncycsJ2UnLCAwLAorICAgICdxJywndScsJ28nLCd0JywnZScsJ2QnLCdiJywnbCcsJ3InLCdpJywnZycsJ2gnLCd0JywgMCwKKyAgICAnZycsJ3UnLCdpJywnbCcsJ2wnLCdlJywnbScsJ28nLCd0JywncicsJ2knLCdnJywnaCcsJ3QnLCAwLAorICAgICdlJywnbCcsJ2wnLCdpJywncCcsJ3MnLCdpJywncycsIDAsCisgICAgJ3AnLCdlJywncicsJ3QnLCdoJywnbycsJ3UnLCdzJywnYScsJ24nLCdkJywgMCwKKyAgICAncScsJ3UnLCdlJywncycsJ3QnLCdpJywnbycsJ24nLCdkJywnbycsJ3cnLCduJywgMCwKKyAgICAnZycsJ3InLCdhJywndicsJ2UnLCAwLAorICAgICdhJywnYycsJ3UnLCd0JywnZScsIDAsCisgICAgJ2MnLCdpJywncicsJ2MnLCd1JywnbScsJ2YnLCdsJywnZScsJ3gnLCAwLAorICAgICd0JywnaScsJ2wnLCdkJywnZScsIDAsCisgICAgJ20nLCdhJywnYycsJ3InLCdvJywnbicsIDAsCisgICAgJ2InLCdyJywnZScsJ3YnLCdlJywgMCwKKyAgICAnZCcsJ28nLCd0JywnYScsJ2MnLCdjJywnZScsJ24nLCd0JywgMCwKKyAgICAnZCcsJ2knLCdlJywncicsJ2UnLCdzJywnaScsJ3MnLCAwLAorICAgICdyJywnaScsJ24nLCdnJywgMCwKKyAgICAnYycsJ2UnLCdkJywnaScsJ2wnLCdsJywnYScsIDAsCisgICAgJ2gnLCd1JywnbicsJ2cnLCdhJywncicsJ3UnLCdtJywnbCcsJ2EnLCd1JywndCcsIDAsCisgICAgJ28nLCdnJywnbycsJ24nLCdlJywnaycsIDAsCisgICAgJ2MnLCdhJywncicsJ28nLCduJywgMCwKKyAgICAnZScsJ20nLCdkJywnYScsJ3MnLCdoJywgMCwKKyAgICAnQScsJ0UnLCAwLAorICAgICdvJywncicsJ2QnLCdmJywnZScsJ20nLCdpJywnbicsJ2knLCduJywnZScsIDAsCisgICAgJ0wnLCdzJywnbCcsJ2EnLCdzJywnaCcsIDAsCisgICAgJ08nLCdzJywnbCcsJ2EnLCdzJywnaCcsIDAsCisgICAgJ08nLCdFJywgMCwKKyAgICAnbycsJ3InLCdkJywnbScsJ2EnLCdzJywnYycsJ3UnLCdsJywnaScsJ24nLCdlJywgMCwKKyAgICAnYScsJ2UnLCAwLAorICAgICdkJywnbycsJ3QnLCdsJywnZScsJ3MnLCdzJywnaScsIDAsCisgICAgJ2wnLCdzJywnbCcsJ2EnLCdzJywnaCcsIDAsCisgICAgJ28nLCdzJywnbCcsJ2EnLCdzJywnaCcsIDAsCisgICAgJ28nLCdlJywgMCwKKyAgICAnZycsJ2UnLCdyJywnbScsJ2EnLCduJywnZCcsJ2InLCdsJywncycsIDAsCisgICAgJ28nLCduJywnZScsJ3MnLCd1JywncCcsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnbCcsJ28nLCdnJywnaScsJ2MnLCdhJywnbCcsJ24nLCdvJywndCcsIDAsCisgICAgJ20nLCd1JywgMCwKKyAgICAndCcsJ3InLCdhJywnZCcsJ2UnLCdtJywnYScsJ3InLCdrJywgMCwKKyAgICAnRScsJ3QnLCdoJywgMCwKKyAgICAnbycsJ24nLCdlJywnaCcsJ2EnLCdsJywnZicsIDAsCisgICAgJ3AnLCdsJywndScsJ3MnLCdtJywnaScsJ24nLCd1JywncycsIDAsCisgICAgJ1QnLCdoJywnbycsJ3InLCduJywgMCwKKyAgICAnbycsJ24nLCdlJywncScsJ3UnLCdhJywncicsJ3QnLCdlJywncicsIDAsCisgICAgJ2QnLCdpJywndicsJ2knLCdkJywnZScsIDAsCisgICAgJ2InLCdyJywnbycsJ2snLCdlJywnbicsJ2InLCdhJywncicsIDAsCisgICAgJ2QnLCdlJywnZycsJ3InLCdlJywnZScsIDAsCisgICAgJ3QnLCdoJywnbycsJ3InLCduJywgMCwKKyAgICAndCcsJ2gnLCdyJywnZScsJ2UnLCdxJywndScsJ2EnLCdyJywndCcsJ2UnLCdyJywncycsIDAsCisgICAgJ3QnLCd3JywnbycsJ3MnLCd1JywncCcsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAncicsJ2UnLCdnJywnaScsJ3MnLCd0JywnZScsJ3InLCdlJywnZCcsIDAsCisgICAgJ20nLCdpJywnbicsJ3UnLCdzJywgMCwKKyAgICAnZScsJ3QnLCdoJywgMCwKKyAgICAnbScsJ3UnLCdsJywndCcsJ2knLCdwJywnbCcsJ3knLCAwLAorICAgICd0JywnaCcsJ3InLCdlJywnZScsJ3MnLCd1JywncCcsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnYycsJ28nLCdwJywneScsJ3InLCdpJywnZycsJ2gnLCd0JywgMCwKKyAgICAnQScsJ2EnLCdjJywndScsJ3QnLCdlJywgMCwKKyAgICAnQScsJ2MnLCdpJywncicsJ2MnLCd1JywnbScsJ2YnLCdsJywnZScsJ3gnLCAwLAorICAgICdBJywnZCcsJ2knLCdlJywncicsJ2UnLCdzJywnaScsJ3MnLCAwLAorICAgICdBJywnZycsJ3InLCdhJywndicsJ2UnLCAwLAorICAgICdBJywncicsJ2knLCduJywnZycsIDAsCisgICAgJ0EnLCd0JywnaScsJ2wnLCdkJywnZScsIDAsCisgICAgJ0MnLCdjJywnZScsJ2QnLCdpJywnbCcsJ2wnLCdhJywgMCwKKyAgICAnRScsJ2EnLCdjJywndScsJ3QnLCdlJywgMCwKKyAgICAnRScsJ2MnLCdpJywncicsJ2MnLCd1JywnbScsJ2YnLCdsJywnZScsJ3gnLCAwLAorICAgICdFJywnZCcsJ2knLCdlJywncicsJ2UnLCdzJywnaScsJ3MnLCAwLAorICAgICdFJywnZycsJ3InLCdhJywndicsJ2UnLCAwLAorICAgICdJJywnYScsJ2MnLCd1JywndCcsJ2UnLCAwLAorICAgICdJJywnYycsJ2knLCdyJywnYycsJ3UnLCdtJywnZicsJ2wnLCdlJywneCcsIDAsCisgICAgJ0knLCdkJywnaScsJ2UnLCdyJywnZScsJ3MnLCdpJywncycsIDAsCisgICAgJ0knLCdnJywncicsJ2EnLCd2JywnZScsIDAsCisgICAgJ04nLCd0JywnaScsJ2wnLCdkJywnZScsIDAsCisgICAgJ08nLCdhJywnYycsJ3UnLCd0JywnZScsIDAsCisgICAgJ08nLCdjJywnaScsJ3InLCdjJywndScsJ20nLCdmJywnbCcsJ2UnLCd4JywgMCwKKyAgICAnTycsJ2QnLCdpJywnZScsJ3InLCdlJywncycsJ2knLCdzJywgMCwKKyAgICAnTycsJ2cnLCdyJywnYScsJ3YnLCdlJywgMCwKKyAgICAnTycsJ3QnLCdpJywnbCcsJ2QnLCdlJywgMCwKKyAgICAnUycsJ2MnLCdhJywncicsJ28nLCduJywgMCwKKyAgICAnVScsJ2EnLCdjJywndScsJ3QnLCdlJywgMCwKKyAgICAnVScsJ2MnLCdpJywncicsJ2MnLCd1JywnbScsJ2YnLCdsJywnZScsJ3gnLCAwLAorICAgICdVJywnZCcsJ2knLCdlJywncicsJ2UnLCdzJywnaScsJ3MnLCAwLAorICAgICdVJywnZycsJ3InLCdhJywndicsJ2UnLCAwLAorICAgICdZJywnYScsJ2MnLCd1JywndCcsJ2UnLCAwLAorICAgICdZJywnZCcsJ2knLCdlJywncicsJ2UnLCdzJywnaScsJ3MnLCAwLAorICAgICdaJywnYycsJ2EnLCdyJywnbycsJ24nLCAwLAorICAgICdhJywnYScsJ2MnLCd1JywndCcsJ2UnLCAwLAorICAgICdhJywnYycsJ2knLCdyJywnYycsJ3UnLCdtJywnZicsJ2wnLCdlJywneCcsIDAsCisgICAgJ2EnLCdkJywnaScsJ2UnLCdyJywnZScsJ3MnLCdpJywncycsIDAsCisgICAgJ2EnLCdnJywncicsJ2EnLCd2JywnZScsIDAsCisgICAgJ2EnLCdyJywnaScsJ24nLCdnJywgMCwKKyAgICAnYScsJ3QnLCdpJywnbCcsJ2QnLCdlJywgMCwKKyAgICAnYycsJ2MnLCdlJywnZCcsJ2knLCdsJywnbCcsJ2EnLCAwLAorICAgICdlJywnYScsJ2MnLCd1JywndCcsJ2UnLCAwLAorICAgICdlJywnYycsJ2knLCdyJywnYycsJ3UnLCdtJywnZicsJ2wnLCdlJywneCcsIDAsCisgICAgJ2UnLCdkJywnaScsJ2UnLCdyJywnZScsJ3MnLCdpJywncycsIDAsCisgICAgJ2UnLCdnJywncicsJ2EnLCd2JywnZScsIDAsCisgICAgJ2knLCdhJywnYycsJ3UnLCd0JywnZScsIDAsCisgICAgJ2knLCdjJywnaScsJ3InLCdjJywndScsJ20nLCdmJywnbCcsJ2UnLCd4JywgMCwKKyAgICAnaScsJ2QnLCdpJywnZScsJ3InLCdlJywncycsJ2knLCdzJywgMCwKKyAgICAnaScsJ2cnLCdyJywnYScsJ3YnLCdlJywgMCwKKyAgICAnbicsJ3QnLCdpJywnbCcsJ2QnLCdlJywgMCwKKyAgICAnbycsJ2EnLCdjJywndScsJ3QnLCdlJywgMCwKKyAgICAnbycsJ2MnLCdpJywncicsJ2MnLCd1JywnbScsJ2YnLCdsJywnZScsJ3gnLCAwLAorICAgICdvJywnZCcsJ2knLCdlJywncicsJ2UnLCdzJywnaScsJ3MnLCAwLAorICAgICdvJywnZycsJ3InLCdhJywndicsJ2UnLCAwLAorICAgICdvJywndCcsJ2knLCdsJywnZCcsJ2UnLCAwLAorICAgICdzJywnYycsJ2EnLCdyJywnbycsJ24nLCAwLAorICAgICd1JywnYScsJ2MnLCd1JywndCcsJ2UnLCAwLAorICAgICd1JywnYycsJ2knLCdyJywnYycsJ3UnLCdtJywnZicsJ2wnLCdlJywneCcsIDAsCisgICAgJ3UnLCdkJywnaScsJ2UnLCdyJywnZScsJ3MnLCdpJywncycsIDAsCisgICAgJ3UnLCdnJywncicsJ2EnLCd2JywnZScsIDAsCisgICAgJ3knLCdhJywnYycsJ3UnLCd0JywnZScsIDAsCisgICAgJ3knLCdkJywnaScsJ2UnLCdyJywnZScsJ3MnLCdpJywncycsIDAsCisgICAgJ3onLCdjJywnYScsJ3InLCdvJywnbicsIDAsCisgICAgJ2UnLCd4JywnYycsJ2wnLCdhJywnbScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnSCcsJ3UnLCduJywnZycsJ2EnLCdyJywndScsJ20nLCdsJywnYScsJ3UnLCd0JywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdkJywnbycsJ2wnLCdsJywnYScsJ3InLCdvJywnbCcsJ2QnLCdzJywndCcsJ3knLCdsJywnZScsIDAsCisgICAgJ2QnLCdvJywnbCcsJ2wnLCdhJywncicsJ3MnLCd1JywncCcsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnYScsJ20nLCdwJywnZScsJ3InLCdzJywnYScsJ24nLCdkJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdBJywnYycsJ3UnLCd0JywnZScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAncCcsJ2EnLCdyJywnZScsJ24nLCdsJywnZScsJ2YnLCd0JywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdwJywnYScsJ3InLCdlJywnbicsJ3InLCdpJywnZycsJ2gnLCd0JywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICd0JywndycsJ28nLCdkJywnbycsJ3QnLCdlJywnbicsJ2wnLCdlJywnYScsJ2QnLCdlJywncicsIDAsCisgICAgJ28nLCduJywnZScsJ2QnLCdvJywndCcsJ2UnLCduJywnbCcsJ2UnLCdhJywnZCcsJ2UnLCdyJywgMCwKKyAgICAneicsJ2UnLCdyJywnbycsJ28nLCdsJywnZCcsJ3MnLCd0JywneScsJ2wnLCdlJywgMCwKKyAgICAnbycsJ24nLCdlJywnbycsJ2wnLCdkJywncycsJ3QnLCd5JywnbCcsJ2UnLCAwLAorICAgICd0JywndycsJ28nLCdvJywnbCcsJ2QnLCdzJywndCcsJ3knLCdsJywnZScsIDAsCisgICAgJ3QnLCdoJywncicsJ2UnLCdlJywnbycsJ2wnLCdkJywncycsJ3QnLCd5JywnbCcsJ2UnLCAwLAorICAgICdmJywnbycsJ3UnLCdyJywnbycsJ2wnLCdkJywncycsJ3QnLCd5JywnbCcsJ2UnLCAwLAorICAgICdmJywnaScsJ3YnLCdlJywnbycsJ2wnLCdkJywncycsJ3QnLCd5JywnbCcsJ2UnLCAwLAorICAgICdzJywnaScsJ3gnLCdvJywnbCcsJ2QnLCdzJywndCcsJ3knLCdsJywnZScsIDAsCisgICAgJ3MnLCdlJywndicsJ2UnLCduJywnbycsJ2wnLCdkJywncycsJ3QnLCd5JywnbCcsJ2UnLCAwLAorICAgICdlJywnaScsJ2cnLCdoJywndCcsJ28nLCdsJywnZCcsJ3MnLCd0JywneScsJ2wnLCdlJywgMCwKKyAgICAnbicsJ2knLCduJywnZScsJ28nLCdsJywnZCcsJ3MnLCd0JywneScsJ2wnLCdlJywgMCwKKyAgICAnYycsJ28nLCdtJywnbScsJ2EnLCdzJywndScsJ3AnLCdlJywncicsJ2knLCdvJywncicsIDAsCisgICAgJ3QnLCdoJywncicsJ2UnLCdlJywncScsJ3UnLCdhJywncicsJ3QnLCdlJywncicsJ3MnLCdlJywnbScsJ2QnLCdhJywncycsJ2gnLCAwLAorICAgICdwJywnZScsJ3InLCdpJywnbycsJ2QnLCdzJywndScsJ3AnLCdlJywncicsJ2knLCdvJywncicsIDAsCisgICAgJ3EnLCd1JywnZScsJ3MnLCd0JywnaScsJ28nLCduJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdhJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdiJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdjJywnZScsJ24nLCd0JywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdkJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdlJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdpJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdsJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdtJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICduJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdvJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdyJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdzJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICd0JywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdmJywnZicsIDAsCisgICAgJ2YnLCdmJywnaScsIDAsCisgICAgJ2YnLCdmJywnbCcsIDAsCisgICAgJ3AnLCdhJywncicsJ2UnLCduJywnbCcsJ2UnLCdmJywndCcsJ2knLCduJywnZicsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAncCcsJ2EnLCdyJywnZScsJ24nLCdyJywnaScsJ2cnLCdoJywndCcsJ2knLCduJywnZicsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnQycsJ2knLCdyJywnYycsJ3UnLCdtJywnZicsJ2wnLCdlJywneCcsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnaCcsJ3knLCdwJywnaCcsJ2UnLCduJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdHJywncicsJ2EnLCd2JywnZScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnQScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnQicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnQycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnRCcsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnRScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnRicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnRycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnSCcsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnSScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnSicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnSycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnTCcsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnTScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnTicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnTycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnUCcsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnUScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnUicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnUycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnVCcsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnVScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnVicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnVycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnWCcsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnWScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnWicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnYycsJ28nLCdsJywnbycsJ24nLCdtJywnbycsJ24nLCdlJywndCcsJ2EnLCdyJywneScsIDAsCisgICAgJ28nLCduJywnZScsJ2YnLCdpJywndCcsJ3QnLCdlJywnZCcsIDAsCisgICAgJ3InLCd1JywncCcsJ2knLCdhJywnaCcsIDAsCisgICAgJ1QnLCdpJywnbCcsJ2QnLCdlJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdlJywneCcsJ2MnLCdsJywnYScsJ20nLCdkJywnbycsJ3cnLCduJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdjJywnZScsJ24nLCd0JywnbycsJ2wnLCdkJywncycsJ3QnLCd5JywnbCcsJ2UnLCAwLAorICAgICdMJywncycsJ2wnLCdhJywncycsJ2gnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ1MnLCdjJywnYScsJ3InLCdvJywnbicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnWicsJ2MnLCdhJywncicsJ28nLCduJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdEJywnaScsJ2UnLCdyJywnZScsJ3MnLCdpJywncycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnQicsJ3InLCdlJywndicsJ2UnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ0MnLCdhJywncicsJ28nLCduJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdEJywnbycsJ3QnLCdhJywnYycsJ2MnLCdlJywnbicsJ3QnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ00nLCdhJywnYycsJ3InLCdvJywnbicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnZicsJ2knLCdnJywndScsJ3InLCdlJywnZCcsJ2EnLCdzJywnaCcsIDAsCisgICAgJ2gnLCd5JywncCcsJ2gnLCdlJywnbicsJ2knLCduJywnZicsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnTycsJ2cnLCdvJywnbicsJ2UnLCdrJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdSJywnaScsJ24nLCdnJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdDJywnZScsJ2QnLCdpJywnbCcsJ2wnLCdhJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdxJywndScsJ2UnLCdzJywndCcsJ2knLCdvJywnbicsJ2QnLCdvJywndycsJ24nLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ28nLCduJywnZScsJ2UnLCdpJywnZycsJ2gnLCd0JywnaCcsIDAsCisgICAgJ3QnLCdoJywncicsJ2UnLCdlJywnZScsJ2knLCdnJywnaCcsJ3QnLCdoJywncycsIDAsCisgICAgJ2YnLCdpJywndicsJ2UnLCdlJywnaScsJ2cnLCdoJywndCcsJ2gnLCdzJywgMCwKKyAgICAncycsJ2UnLCd2JywnZScsJ24nLCdlJywnaScsJ2cnLCdoJywndCcsJ2gnLCdzJywgMCwKKyAgICAnbycsJ24nLCdlJywndCcsJ2gnLCdpJywncicsJ2QnLCAwLAorICAgICd0JywndycsJ28nLCd0JywnaCcsJ2knLCdyJywnZCcsJ3MnLCAwLAorICAgICd6JywnZScsJ3InLCdvJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdmJywnbycsJ3UnLCdyJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdmJywnaScsJ3YnLCdlJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdzJywnaScsJ3gnLCdzJywndScsJ3AnLCdlJywncicsJ2knLCdvJywncicsIDAsCisgICAgJ3MnLCdlJywndicsJ2UnLCduJywncycsJ3UnLCdwJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdlJywnaScsJ2cnLCdoJywndCcsJ3MnLCd1JywncCcsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnbicsJ2knLCduJywnZScsJ3MnLCd1JywncCcsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAneicsJ2UnLCdyJywnbycsJ2knLCduJywnZicsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnbycsJ24nLCdlJywnaScsJ24nLCdmJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICd0JywndycsJ28nLCdpJywnbicsJ2YnLCdlJywncicsJ2knLCdvJywncicsIDAsCisgICAgJ3QnLCdoJywncicsJ2UnLCdlJywnaScsJ24nLCdmJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdmJywnbycsJ3UnLCdyJywnaScsJ24nLCdmJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdmJywnaScsJ3YnLCdlJywnaScsJ24nLCdmJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdzJywnaScsJ3gnLCdpJywnbicsJ2YnLCdlJywncicsJ2knLCdvJywncicsIDAsCisgICAgJ3MnLCdlJywndicsJ2UnLCduJywnaScsJ24nLCdmJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdlJywnaScsJ2cnLCdoJywndCcsJ2knLCduJywnZicsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnbicsJ2knLCduJywnZScsJ2knLCduJywnZicsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnYycsJ2UnLCduJywndCcsJ2knLCduJywnZicsJ2UnLCdyJywnaScsJ28nLCdyJywgMCwKKyAgICAnZCcsJ28nLCdsJywnbCcsJ2EnLCdyJywnaScsJ24nLCdmJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdwJywnZScsJ3InLCdpJywnbycsJ2QnLCdpJywnbicsJ2YnLCdlJywncicsJ2knLCdvJywncicsIDAsCisgICAgJ2MnLCdvJywnbScsJ20nLCdhJywnaScsJ24nLCdmJywnZScsJ3InLCdpJywnbycsJ3InLCAwLAorICAgICdBJywnZycsJ3InLCdhJywndicsJ2UnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ0EnLCdhJywnYycsJ3UnLCd0JywnZScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnQScsJ2MnLCdpJywncicsJ2MnLCd1JywnbScsJ2YnLCdsJywnZScsJ3gnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ0EnLCd0JywnaScsJ2wnLCdkJywnZScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnQScsJ2QnLCdpJywnZScsJ3InLCdlJywncycsJ2knLCdzJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdBJywncicsJ2knLCduJywnZycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnQScsJ0UnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ0MnLCdjJywnZScsJ2QnLCdpJywnbCcsJ2wnLCdhJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdFJywnZycsJ3InLCdhJywndicsJ2UnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ0UnLCdhJywnYycsJ3UnLCd0JywnZScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnRScsJ2MnLCdpJywncicsJ2MnLCd1JywnbScsJ2YnLCdsJywnZScsJ3gnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ0UnLCdkJywnaScsJ2UnLCdyJywnZScsJ3MnLCdpJywncycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnSScsJ2cnLCdyJywnYScsJ3YnLCdlJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdJJywnYScsJ2MnLCd1JywndCcsJ2UnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ0knLCdjJywnaScsJ3InLCdjJywndScsJ20nLCdmJywnbCcsJ2UnLCd4JywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdJJywnZCcsJ2knLCdlJywncicsJ2UnLCdzJywnaScsJ3MnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ0UnLCd0JywnaCcsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnTicsJ3QnLCdpJywnbCcsJ2QnLCdlJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdPJywnZycsJ3InLCdhJywndicsJ2UnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ08nLCdhJywnYycsJ3UnLCd0JywnZScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnTycsJ2MnLCdpJywncicsJ2MnLCd1JywnbScsJ2YnLCdsJywnZScsJ3gnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ08nLCd0JywnaScsJ2wnLCdkJywnZScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnTycsJ2QnLCdpJywnZScsJ3InLCdlJywncycsJ2knLCdzJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdPJywnRScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnTycsJ3MnLCdsJywnYScsJ3MnLCdoJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdVJywnZycsJ3InLCdhJywndicsJ2UnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ1UnLCdhJywnYycsJ3UnLCd0JywnZScsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnVScsJ2MnLCdpJywncicsJ2MnLCd1JywnbScsJ2YnLCdsJywnZScsJ3gnLCdzJywnbScsJ2EnLCdsJywnbCcsIDAsCisgICAgJ1UnLCdkJywnaScsJ2UnLCdyJywnZScsJ3MnLCdpJywncycsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnWScsJ2EnLCdjJywndScsJ3QnLCdlJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICdUJywnaCcsJ28nLCdyJywnbicsJ3MnLCdtJywnYScsJ2wnLCdsJywgMCwKKyAgICAnWScsJ2QnLCdpJywnZScsJ3InLCdlJywncycsJ2knLCdzJywncycsJ20nLCdhJywnbCcsJ2wnLCAwLAorICAgICcwJywnMCcsJzEnLCcuJywnMCcsJzAnLCcwJywgMCwKKyAgICAnMCcsJzAnLCcxJywnLicsJzAnLCcwJywnMScsIDAsCisgICAgJzAnLCcwJywnMScsJy4nLCcwJywnMCcsJzInLCAwLAorICAgICcwJywnMCcsJzEnLCcuJywnMCcsJzAnLCczJywgMCwKKyAgICAnQicsJ2wnLCdhJywnYycsJ2snLCAwLAorICAgICdCJywnbycsJ2wnLCdkJywgMCwKKyAgICAnQicsJ28nLCdvJywnaycsIDAsCisgICAgJ0wnLCdpJywnZycsJ2gnLCd0JywgMCwKKyAgICAnTScsJ2UnLCdkJywnaScsJ3UnLCdtJywgMCwKKyAgICAnUicsJ2UnLCdnJywndScsJ2wnLCdhJywncicsIDAsCisgICAgJ1InLCdvJywnbScsJ2EnLCduJywgMCwKKyAgICAnUycsJ2UnLCdtJywnaScsJ2InLCdvJywnbCcsJ2QnLCAwLAorICB9OworCisKKyNkZWZpbmUgRlRfTlVNX01BQ19OQU1FUyAgMjU4CisKKyAgLyogVmFsdWVzIGFyZSBvZmZzZXRzIGludG8gdGhlIGBmdF9zdGFuZGFyZF9nbHlwaF9uYW1lcycgdGFibGUgKi8KKyNpZmRlZiBfRlhfTUFOQUdFRF9DT0RFXworX19kZWNsc3BlYyhwcm9jZXNzKQorI2VuZGlmCisgIHN0YXRpYyBjb25zdCBzaG9ydCAgZnRfbWFjX25hbWVzW0ZUX05VTV9NQUNfTkFNRVNdID0KKyAgeworICAgICAyNTMsICAgMCwgICA2LCAyNjEsIDI2NywgMjc0LCAyODMsIDI5NCwgMzAxLCAzMDksIDc1OCwgMzMwLCAzNDAsIDM1MSwKKyAgICAgMzYwLCAzNjUsIDM3MSwgMzc4LCAzODUsIDM5MSwgMzk2LCA0MDAsIDQwNCwgNDEwLCA0MTUsIDQyMCwgNDI0LCA0MzAsCisgICAgIDQzNiwgNDQxLCA0NDcsIDQ1NywgNDYyLCA0NjgsIDQ3NiwgNDg1LCA0ODgsIDQ5MCwgNDkyLCA0OTQsIDQ5NiwgNDk4LAorICAgICA1MDAsIDUwMiwgNTA0LCA1MDYsIDUwOCwgNTEwLCA1MTIsIDUxNCwgNTE2LCA1MTgsIDUyMCwgNTIyLCA1MjQsIDUyNiwKKyAgICAgNTI4LCA1MzAsIDUzMiwgNTM0LCA1MzYsIDUzOCwgNTQwLCA1NTIsIDU2MiwgNTc1LCA1ODcsIDk3OSwgNjA4LCA2MTAsCisgICAgIDYxMiwgNjE0LCA2MTYsIDYxOCwgNjIwLCA2MjIsIDYyNCwgNjI2LCA2MjgsIDYzMCwgNjMyLCA2MzQsIDYzNiwgNjM4LAorICAgICA2NDAsIDY0MiwgNjQ0LCA2NDYsIDY0OCwgNjUwLCA2NTIsIDY1NCwgNjU2LCA2NTgsIDY2MCwgNjcwLCA2NzQsIDY4NSwKKyAgICAxMzc1LDEzOTIsMTQwNSwxNDE0LDE0ODYsMTUxMiwxNTYyLDE2MDMsMTYzMiwxNjEwLDE2MjIsMTY0NSwxNjM5LDE2NTIsCisgICAgMTY2MSwxNjkwLDE2NjgsMTY4MCwxNjk3LDE3MjYsMTcwNCwxNzE2LDE3MzMsMTc0MCwxNzY5LDE3NDcsMTc1OSwxNzc2LAorICAgIDE3OTAsMTgxOSwxNzk3LDE4MDksIDgzOSwxMjYzLCA3MDcsIDcxMiwgNzQxLCA4ODEsIDg3MSwxMTYwLDEzMDIsMTM0NiwKKyAgICAxMTk3LCA5ODUsMTAzMSwgIDIzLDEwODYsMTEwOCwgIDMyLDEyMTksICA0MSwgIDUxLCA3MzAsMTE5NCwgIDY0LCAgNzYsCisgICAgICA4NiwgIDk0LCAgOTcsMTA4OSwxMTE4LCAxMDYsMTEzMSwxMTUwLCA5NjYsIDY5NiwxMTgzLCAxMTIsIDczNCwgMTIwLAorICAgICAxMzIsIDc4MywgOTMwLCA5NDUsIDEzOCwxMzg1LDEzOTgsMTUyOSwxMTE1LDExNTcsIDgzMiwxMDc5LCA3NzAsIDkxNiwKKyAgICAgNTk4LCAzMTksMTI0NiwgMTU1LDE4MzMsMTU4NiwgNzIxLCA3NDksIDc5NywgODExLCA4MjYsIDgyOSwgODQ2LCA4NTYsCisgICAgIDg4OCwgOTAzLCA5NTQsMTM2MywxNDIxLDEzNTYsMTQzMywxNDQzLDE0NTAsMTQ1NywxNDY5LDE0NzksMTQ5MywxNTAwLAorICAgICAxNjMsMTUyMiwxNTQzLDE1NTAsMTU3MiwxMTM0LCA5OTEsMTAwMiwxMDA4LDEwMTUsMTAyMSwxMDQwLDEwNDUsMTA1MywKKyAgICAxMDY2LDEwNzMsMTEwMSwxMTQzLDE1MzYsMTc4MywxNTk2LDE4NDMsMTI1MywxMjA3LDEzMTksMTU3OSwxODI2LDEyMjksCisgICAgMTI3MCwxMzEzLDEzMjMsMTE3MSwxMjkwLDEzMzIsMTIxMSwxMjM1LDEyNzYsIDE2OSwgMTc1LCAxODIsIDE4OSwgMjAwLAorICAgICAyMDksIDIxOCwgMjI1LCAyMzIsIDIzOSwgMjQ2CisgIH07CisKKworI2RlZmluZSBGVF9OVU1fU0lEX05BTUVTICAzOTEKKworICAvKiBWYWx1ZXMgYXJlIG9mZnNldHMgaW50byB0aGUgYGZ0X3N0YW5kYXJkX2dseXBoX25hbWVzJyB0YWJsZSAqLworI2lmZGVmIF9GWF9NQU5BR0VEX0NPREVfCitfX2RlY2xzcGVjKHByb2Nlc3MpCisjZW5kaWYKKyAgc3RhdGljIGNvbnN0IHNob3J0ICBmdF9zaWRfbmFtZXNbRlRfTlVNX1NJRF9OQU1FU10gPQorICB7CisgICAgIDI1MywgMjYxLCAyNjcsIDI3NCwgMjgzLCAyOTQsIDMwMSwgMzA5LCAzMTksIDMzMCwgMzQwLCAzNTEsIDM2MCwgMzY1LAorICAgICAzNzEsIDM3OCwgMzg1LCAzOTEsIDM5NiwgNDAwLCA0MDQsIDQxMCwgNDE1LCA0MjAsIDQyNCwgNDMwLCA0MzYsIDQ0MSwKKyAgICAgNDQ3LCA0NTcsIDQ2MiwgNDY4LCA0NzYsIDQ4NSwgNDg4LCA0OTAsIDQ5MiwgNDk0LCA0OTYsIDQ5OCwgNTAwLCA1MDIsCisgICAgIDUwNCwgNTA2LCA1MDgsIDUxMCwgNTEyLCA1MTQsIDUxNiwgNTE4LCA1MjAsIDUyMiwgNTI0LCA1MjYsIDUyOCwgNTMwLAorICAgICA1MzIsIDUzNCwgNTM2LCA1MzgsIDU0MCwgNTUyLCA1NjIsIDU3NSwgNTg3LCA1OTgsIDYwOCwgNjEwLCA2MTIsIDYxNCwKKyAgICAgNjE2LCA2MTgsIDYyMCwgNjIyLCA2MjQsIDYyNiwgNjI4LCA2MzAsIDYzMiwgNjM0LCA2MzYsIDYzOCwgNjQwLCA2NDIsCisgICAgIDY0NCwgNjQ2LCA2NDgsIDY1MCwgNjUyLCA2NTQsIDY1NiwgNjU4LCA2NjAsIDY3MCwgNjc0LCA2ODUsIDY5NiwgNzA3LAorICAgICA3MTIsIDcyMSwgNzMwLCA3MzQsIDc0MSwgNzQ5LCA3NTgsIDc3MCwgNzgzLCA3OTcsIDgxMSwgODI2LCA4MjksIDgzMiwKKyAgICAgODM5LCA4NDYsIDg1NiwgODcxLCA4ODEsIDg4OCwgOTAzLCA5MTYsIDkzMCwgOTQ1LCA5NTQsIDk2NiwgOTc5LCA5ODUsCisgICAgIDk5MSwxMDAyLDEwMDgsMTAxNSwxMDIxLDEwMzEsMTA0MCwxMDQ1LDEwNTMsMTA2NiwxMDczLDEwNzksMTA4NiwxMDg5LAorICAgIDExMDEsMTEwOCwxMTE1LDExMTgsMTEzMSwxMTM0LDExNDMsMTE1MCwxMTU3LDExNjAsMTE3MSwxMTgzLDExOTQsMTE5NywKKyAgICAxMjA3LDEyMTEsMTIxOSwxMjI5LDEyMzUsMTI0NiwxMjUzLDEyNjMsMTI3MCwxMjc2LDEyOTAsMTMwMiwxMzEzLDEzMTksCisgICAgMTMyMywxMzMyLDEzNDYsMTM1NiwxMzYzLDEzNzUsMTM4NSwxMzkyLDEzOTgsMTQwNSwxNDE0LDE0MjEsMTQzMywxNDQzLAorICAgIDE0NTAsMTQ1NywxNDY5LDE0NzksMTQ4NiwxNDkzLDE1MDAsMTUxMiwxNTIyLDE1MjksMTUzNiwxNTQzLDE1NTAsMTU2MiwKKyAgICAxNTcyLDE1NzksMTU4NiwxNTk2LDE2MDMsMTYxMCwxNjIyLDE2MzIsMTYzOSwxNjQ1LDE2NTIsMTY2MSwxNjY4LDE2ODAsCisgICAgMTY5MCwxNjk3LDE3MDQsMTcxNiwxNzI2LDE3MzMsMTc0MCwxNzQ3LDE3NTksMTc2OSwxNzc2LDE3ODMsMTc5MCwxNzk3LAorICAgIDE4MDksMTgxOSwxODI2LDE4MzMsMTg0MywxODUwLDE4NjIsMTg4MCwxODk1LDE5MTAsMTkyNSwxOTM2LDE5NTQsMTk3MywKKyAgICAxOTg4LDIwMDMsMjAxNiwyMDI4LDIwNDAsMjA1NCwyMDY3LDIwODAsMjA5MiwyMTA2LDIxMjAsMjEzMywyMTQ3LDIxNjcsCisgICAgMjE4MiwyMTk2LDIyMDYsMjIxNiwyMjI5LDIyMzksMjI0OSwyMjU5LDIyNjksMjI3OSwyMjg5LDIyOTksMjMwOSwyMzE5LAorICAgIDIzMjksMjMzMiwyMzM2LDIzNDAsMjM1OCwyMzc3LDIzOTMsMjQwOCwyNDE5LDI0MjYsMjQzMywyNDQwLDI0NDcsMjQ1NCwKKyAgICAyNDYxLDI0NjgsMjQ3NSwyNDgyLDI0ODksMjQ5NiwyNTAzLDI1MTAsMjUxNywyNTI0LDI1MzEsMjUzOCwyNTQ1LDI1NTIsCisgICAgMjU1OSwyNTY2LDI1NzMsMjU4MCwyNTg3LDI1OTQsMjYwMSwyNjE1LDI2MjUsMjYzMiwyNjQzLDI2NTksMjY3MiwyNjg0LAorICAgIDI2OTYsMjcwOCwyNzIyLDI3MzMsMjc0NCwyNzU5LDI3NzEsMjc4MiwyNzk3LDI4MDksMjgxOSwyODMyLDI4NTAsMjg2MCwKKyAgICAyODczLDI4ODUsMjg5OCwyOTA3LDI5MTcsMjkzMCwyOTQzLDI5NTYsMjk2OCwyOTgyLDI5OTYsMzAwOSwzMDIyLDMwMzQsCisgICAgMzA0NiwzMDYwLDMwNzMsMzA4NiwzMDk4LDMxMTIsMzEyNiwzMTM5LDMxNTIsMzE2NywzMTgyLDMxOTYsMzIwOCwzMjIwLAorICAgIDMyMzcsMzI0OSwzMjY0LDMyNzUsMzI4MywzMjk3LDMzMDksMzMyMSwzMzM4LDMzNTMsMzM2NSwzMzc3LDMzOTQsMzQwOSwKKyAgICAzNDE4LDM0MzAsMzQ0MiwzNDU0LDM0NzEsMzQ4MywzNDk4LDM1MDYsMzUxOCwzNTMwLDM1NDIsMzU1OSwzNTc0LDM1ODYsCisgICAgMzU5NywzNjEyLDM2MjAsMzYyOCwzNjM2LDM2NDQsMzY1MCwzNjU1LDM2NjAsMzY2NiwzNjczLDM2ODEsMzY4NworICB9OworCisKKyAgLyogdGhlIGZvbGxvd2luZyBhcmUgaW5kaWNlcyBpbnRvIHRoZSBTSUQgbmFtZSB0YWJsZSAqLworI2lmZGVmIF9GWF9NQU5BR0VEX0NPREVfCitfX2RlY2xzcGVjKHByb2Nlc3MpCisjZW5kaWYKKyAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0ICB0MV9zdGFuZGFyZF9lbmNvZGluZ1syNTZdID0KKyAgeworICAgICAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwKKyAgICAgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCisgICAgICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LAorICAgICAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwKKyAgICAgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsCisgICAgIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LAorICAgICA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwKKyAgICAgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgIDAsCisgICAgICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLAorICAgICAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwKKyAgICAgIDAsIDk2LCA5NywgOTgsIDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsCisgICAgICAwLDExMSwxMTIsMTEzLDExNCwgIDAsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwgIDAsMTIzLAorICAgICAgMCwxMjQsMTI1LDEyNiwxMjcsMTI4LDEyOSwxMzAsMTMxLCAgMCwxMzIsMTMzLCAgMCwxMzQsMTM1LDEzNiwKKyAgICAxMzcsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCisgICAgICAwLDEzOCwgIDAsMTM5LCAgMCwgIDAsICAwLCAgMCwxNDAsMTQxLDE0MiwxNDMsICAwLCAgMCwgIDAsICAwLAorICAgICAgMCwxNDQsICAwLCAgMCwgIDAsMTQ1LCAgMCwgIDAsMTQ2LDE0NywxNDgsMTQ5LCAgMCwgIDAsICAwLCAgMAorICB9OworCisKKyAgLyogdGhlIGZvbGxvd2luZyBhcmUgaW5kaWNlcyBpbnRvIHRoZSBTSUQgbmFtZSB0YWJsZSAqLworI2lmZGVmIF9GWF9NQU5BR0VEX0NPREVfCitfX2RlY2xzcGVjKHByb2Nlc3MpCisjZW5kaWYKKyAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0ICB0MV9leHBlcnRfZW5jb2RpbmdbMjU2XSA9CisgIHsKKyAgICAgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCisgICAgICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLAorICAgICAgMSwyMjksMjMwLCAgMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LCAxMywgMTQsIDE1LCA5OSwKKyAgICAyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsIDI3LCAyOCwyNDksMjUwLDI1MSwyNTIsCisgICAgICAwLDI1MywyNTQsMjU1LDI1NiwyNTcsICAwLCAgMCwgIDAsMjU4LCAgMCwgIDAsMjU5LDI2MCwyNjEsMjYyLAorICAgICAgMCwgIDAsMjYzLDI2NCwyNjUsICAwLDI2NiwxMDksMTEwLDI2NywyNjgsMjY5LCAgMCwyNzAsMjcxLDI3MiwKKyAgICAyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsCisgICAgMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsICAwLAorICAgICAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwKKyAgICAgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCisgICAgICAwLDMwNCwzMDUsMzA2LCAgMCwgIDAsMzA3LDMwOCwzMDksMzEwLDMxMSwgIDAsMzEyLCAgMCwgIDAsMzEzLAorICAgICAgMCwgIDAsMzE0LDMxNSwgIDAsICAwLDMxNiwzMTcsMzE4LCAgMCwgIDAsICAwLDE1OCwxNTUsMTYzLDMxOSwKKyAgICAzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwgIDAsICAwLDMyNiwxNTAsMTY0LDE2OSwzMjcsMzI4LDMyOSwzMzAsCisgICAgMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LAorICAgIDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwKKyAgICAzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgKKyAgfTsKKworCisgIC8qCisgICAqICBUaGlzIHRhYmxlIGlzIGEgY29tcHJlc3NlZCB2ZXJzaW9uIG9mIHRoZSBBZG9iZSBHbHlwaCBMaXN0IChBR0wpLAorICAgKiAgb3B0aW1pemVkIGZvciBlZmZpY2llbnQgc2VhcmNoaW5nLiAgSXQgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZQorICAgKiAgYGdsbmFtZXMucHknIHB5dGhvbiBzY3JpcHQgbG9jYXRlZCBpbiB0aGUgYHNyYy90b29scycgZGlyZWN0b3J5LgorICAgKgorICAgKiAgVGhlIGxvb2t1cCBmdW5jdGlvbiB0byBnZXQgdGhlIFVuaWNvZGUgdmFsdWUgZm9yIGEgZ2l2ZW4gc3RyaW5nCisgICAqICBpcyBkZWZpbmVkIGJlbG93IHRoZSB0YWJsZS4KKyAgICovCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0FET0JFX0dMWVBIX0xJU1QKKyNpZmRlZiBfRlhfTUFOQUdFRF9DT0RFXworX19kZWNsc3BlYyhwcm9jZXNzKQorI2VuZGlmCisgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICBmdF9hZG9iZV9nbHlwaF9saXN0WzU1OTk3TF0gPQorICB7CisgICAgICAwLCA1MiwgIDAsMTA2LCAgMiwxNjcsICAzLCA2MywgIDQsMjIwLCAgNiwxMjUsICA5LDE0MywgMTAsIDIzLAorICAgICAxMSwxMzcsIDEyLDE5OSwgMTQsMjQ2LCAxNSwgODcsIDE2LDIzMywgMTcsMjE5LCAxOCwxMDQsIDE5LCA4OCwKKyAgICAgMjIsMTEwLCAyMywgMzIsIDIzLCA3MSwgMjQsIDc3LCAyNywxNTYsIDI5LCA3MywgMzEsMjQ3LCAzMiwxMDcsCisgICAgIDMyLDIyMiwgMzMsIDU1LCAzNCwxNTQsIDM1LDIxOCwgNTgsIDEwLCA2NCwxMjIsIDcyLDE4OCwgODAsMTA5LAorICAgICA4OCwxMDQsIDkzLCA2MSwgOTgsMTY4LDEwNiwgOTEsMTE0LDExMSwxMTUsMjM3LDEyMiwxODAsMTI3LDI1NSwKKyAgICAxMzUsMTY0LDE0MywxMzIsMTQ5LDIxMywxNTgsMTA4LDE2MSwxMTUsMTY4LDE3NSwxODMsMTQ3LDE5NywxOTksCisgICAgMjAyLCAyNSwyMDQsMTY2LDIwOCwyMDksMjA5LCA4MSwyMTUsIDI2LCA2NSwxNDMsICAwLCA2NSwgIDAsMTQwLAorICAgICAgMCwxNzUsICAwLDE5MywgIDEsIDE1LCAgMSwxNDcsICAxLDIzMywgIDEsMjUxLCAgMiwgIDcsICAyLCA0MCwKKyAgICAgIDIsIDU3LCAgMiwgODIsICAyLCA5MSwgIDIsMTI4LCAgMiwxMzYsICAyLDE1NCwgNjksMTMxLCAgMCwxOTgsCisgICAgICAwLDE1MCwgIDAsMTU4LCAgMCwxNjcsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsICAxLDI1MiwyMzcsMjI1LAorICAgIDIyNywyNDIsMjM5LDExMCwxMjgsICAxLDIyNiwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMjMwLDIyNSwKKyAgICAyMjcsMjQ1LDI0NCwxMDEsMTI5LCAgMCwxOTMsICAwLDE4NSwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsCisgICAgMjI1LDIyNiwyNDIsMjI5LDI0NiwxMDEsMTM0LCAgMSwgIDIsICAwLDIxMywgIDAsMjIxLCAgMCwyMzIsICAwLAorICAgIDI0MywgIDAsMjUxLCAgMSwgIDcsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsIDMwLDE3NCwyMjcsMjQ5LDI0MiwKKyAgICAyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMjA4LDIyOCwyMzksMjQ0LDIyNiwyMjksMjM2LDIzOSwxMTksCisgICAgMTI4LCAzMCwxODIsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsIDMwLDE3NiwyMzIsMjM5LDIzOSwyMzUsMjI1LAorICAgIDIyNiwyMzksMjQ2LDEwMSwxMjgsIDMwLDE3OCwyNDQsMjMzLDIzNiwyMjgsMTAxLDEyOCwgMzAsMTgwLCA5OSwKKyAgICAgIDQsICAxLCAyNSwgIDEsIDMyLCAgMSwxMjEsICAxLDEzNywyMjUsMjQyLDIzOSwxMTAsMTI4LCAgMSwyMDUsCisgICAgMjMzLDI0MiwgOTksICAyLCAgMSwgNDAsICAxLCA0NSwyMzYsMTAxLDEyOCwgMzYsMTgyLDI0NSwyMzcsMjMwLAorICAgIDIzNiwyMjksMTIwLDEzNCwgIDAsMTk0LCAgMSwgNjYsICAxLCA3NCwgIDEsIDg1LCAgMSwgOTMsICAxLDEwNSwKKyAgICAgIDEsMTEzLDIyNSwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAzMCwxNjQsMjI4LDIzOSwyNDQsMjI2LDIyOSwyMzYsCisgICAgMjM5LDExOSwxMjgsIDMwLDE3MiwyMzEsMjQyLDIyNSwyNDYsMTAxLDEyOCwgMzAsMTY2LDIzMiwyMzksMjM5LAorICAgIDIzNSwyMjUsMjI2LDIzOSwyNDYsMTAxLDEyOCwgMzAsMTY4LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywKKyAgICAyMjYsMjQ0LDIzMywyMzYsMjI4LDEwMSwxMjgsIDMwLDE3MCwyNDUsMjQ0LDEwMSwxMjksMjQ2LDIwMSwgIDEsCisgICAgMTI5LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywxODAsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LAorICAgIDEyOCwgIDQsIDE2LDEwMCwgIDMsICAxLDE1NSwgIDEsMTY1LCAgMSwyMDksMjI2LDIzNiwyMzEsMjQyLDIyNSwKKyAgICAyNDYsMTAxLDEyOCwgIDIsICAwLDIzMywyMjksMjQyLDIyOSwyNDMsMjMzLDExNSwxMzEsICAwLDE5NiwgIDEsCisgICAgMTgxLCAgMSwxOTIsICAxLDIwMSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMjEwLAorICAgIDIzNywyMjUsMjI3LDI0MiwyMzksMTEwLDEyOCwgIDEsMjIyLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywKKyAgICAyMjgsMjM5LDExNiwgIDIsICAxLDIxNiwgIDEsMjI0LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwxNjAsCisgICAgMjM3LDIyNSwyMjcsMjQyLDIzOSwxMTAsMTI4LCAgMSwyMjQsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjksICAwLAorICAgIDE5MiwgIDEsMjQzLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyMjQsMjMyLDIzOSwyMzksMjM1LDIyNSwKKyAgICAyMjYsMjM5LDI0NiwxMDEsMTI4LCAzMCwxNjIsMTA1LCAgMiwgIDIsIDEzLCAgMiwgMjUsMjI5LDIyNywyNDksCisgICAgMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwyMTIsMjM4LDI0NiwyMjksMjQyLDI0NCwyMjksMjI4LAorICAgIDIyNiwyNDIsMjI5LDI0NiwxMDEsMTI4LCAgMiwgIDIsMjM2LDI0MCwyMzIsIDk3LDEyOSwgIDMsMTQ1LCAgMiwKKyAgICAgNDksMjQ0LDIzOSwyMzgsMjM5LDExNSwxMjgsICAzLDEzNCwxMDksICAyLCAgMiwgNjMsICAyLCA3MSwyMjUsCisgICAgMjI3LDI0MiwyMzksMTEwLDEyOCwgIDEsICAwLDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LAorICAgIDI1NSwgMzMsMjM5LDIzMSwyMzksMjM4LDIyOSwxMDcsMTI4LCAgMSwgIDQsMjQyLDIzMywyMzgsMTAzLDEzMSwKKyAgICAgIDAsMTk3LCAgMiwxMDQsICAyLDExMiwgIDIsMTIwLDIyNSwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAgMSwyNTAsCisgICAgMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLCAgMCwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMjI5LAorICAgIDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywgOTcsMjQ0LDIzMywyMzYsMjI4LDEwMSwxMjksICAwLDE5NSwKKyAgICAgIDIsMTQ2LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyMjcsMjQ5LDIyNiwyMjUsMjQyLDIzNywyMjksCisgICAgMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDQ5LCA2NiwxMzcsICAwLCA2NiwgIDIsMTg5LCAgMiwxOTgsICAyLAorICAgIDIyMywgIDMsICAzLCAgMywgMTAsICAzLCAyMiwgIDMsIDM0LCAgMywgNDYsICAzLCA1NCwyMjcsMjMzLDI0MiwKKyAgICAyMjcsMjM2LDEwMSwxMjgsIDM2LDE4MywyMjgsMjM5LDExNiwgIDIsICAyLDIwNiwgIDIsMjE1LDIyNSwyMjcsCisgICAgMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsICAyLDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgIDQsMTAxLAorICAgICAgMywgIDIsMjMxLCAgMiwyNDIsICAyLDI1NCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwKKyAgICAgIDQsIDE3LDIzOCwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDUwLDI0NCwgOTcsCisgICAgMTI4LCAgMywxNDYsMjMyLDIzOSwyMzksMTA3LDEyOCwgIDEsMTI5LDIzNiwyMzMsMjM4LDIyOSwyMjYsMjI5LAorICAgIDIzNiwyMzksMTE5LDEyOCwgMzAsICA2LDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwKKyAgICAyNTUsIDM0LDI0MiwyMjksMjQ2LDIyOSwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDYsMjQ0LDI0MywyMzcsCisgICAgMjI1LDIzNiwxMDgsMTI4LDI0NywgOTgsMjQ0LDIzOSwyNDAsMjI2LDIyNSwxMTQsMTI4LCAgMSwxMzAsIDY3LAorICAgIDEzNywgIDAsIDY3LCAgMywgODUsICAzLDEyNywgIDMsMTkzLCAgMywyMTAsICAzLDIyNCwgIDQsMTcxLCAgNCwKKyAgICAxODgsICA0LDIwMCwgIDQsMjEyLCA5NywgIDMsICAzLCA5MywgIDMsMTA0LCAgMywxMTEsMjI1LDI0MiwyMzcsCisgICAgMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA2MiwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAgMSwgIDYsMjQyLAorICAgIDIzOSwxMTAsMTI5LDI0NiwyMDIsICAzLDExOSwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDYsMjQ1LCA5OSwKKyAgICAgIDMsICAzLDEzNSwgIDMsMTQyLCAgMywxNzEsMjI1LDI0MiwyMzksMTEwLDEyOCwgIDEsIDEyLDIyOSwyMjgsCisgICAgMjMzLDIzNiwyMzYsIDk3LDEzMCwgIDAsMTk5LCAgMywxNTUsICAzLDE2MywyMjUsMjI3LDI0NSwyNDQsMTAxLAorICAgIDEyOCwgMzAsICA4LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyMzEsMjMzLDI0MiwgOTksICAyLCAgMywKKyAgICAxNzksICAzLDE4NCwyMzYsMTAxLDEyOCwgMzYsMTg0LDI0NSwyMzcsMjMwLDIzNiwyMjksMTIwLDEyOCwgIDEsCisgICAgICA4LDIyOCwyMzksMTE2LDEyOSwgIDEsIDEwLCAgMywyMDEsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LAorICAgICAgMSwgMTAsMjI5LDIyOCwyMzMsMjM2LDIzNiwyMjUsMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDE4NCwKKyAgICAxMDQsICA0LCAgMywyMzQsICAzLDI0NiwgIDQsMTYxLCAgNCwxNjUsMjI1LDIyNSwyNDIsMjM3LDIyOSwyMzgsCisgICAgMjMzLDIyNSwxMTAsMTI4LCAgNSwgNzMsMTAxLCAgNiwgIDQsICA0LCAgNCwgMjQsICA0LCAzNSwgIDQsMTAzLAorICAgICAgNCwxMTUsICA0LDEzNiwyMjUsMjI2LDIzNSwyMzIsMjI1LDI0MywyMzMsMjI1LDIzOCwyMjcsMjQ5LDI0MiwKKyAgICAyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTg4LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksCisgICAgMTI4LCAgNCwgMzksMTAwLCAgMiwgIDQsIDQxLCAgNCwgODUsMjI5LDI0MywyMjcsMjI5LDIzOCwyMjgsMjI5LAorICAgIDExNCwgIDIsICA0LCA1NCwgIDQsIDc0LDIyNSwyMjYsMjM1LDIzMiwyMjUsMjQzLDIzMywyMjUsMjM4LDIyNywKKyAgICAyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxOTAsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsCisgICAgMjMzLCA5OSwxMjgsICA0LDE4MiwyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywyNDMsMjI3LDI0OSwyNDIsMjMzLAorICAgIDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDI0NCwyMzIsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwKKyAgICAxMjgsICA1LCA2NywyMzUsMjMyLDIyNSwyMzUsMjI1LDI0MywyNDMsMjMzLDIyNSwyMzgsMjI3LDI0OSwyNDIsCisgICAgMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDIwMywyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMjM2LAorICAgIDI0MywyNDQsMjQyLDIzOSwyMzUsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwKKyAgICAxODQsMTA1LDEyOCwgIDMsMTY3LDIzOSwyMzksMTA3LDEyOCwgIDEsMTM1LDIzMywyNDIsMjI3LDI0NSwyMzcsCisgICAgMjMwLDIzNiwyMjksMjQ4LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NiwyNDYsMjM3LDIzOSwyMzgsMjM5LAorICAgIDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMzUsMjM5LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwKKyAgICAxMTAsMTI4LCAgNSwgODEsMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LCA5OSwgNjgsMTQyLCAgMCwgNjgsCisgICAgICA0LDI1MiwgIDUsIDEwLCAgNSwgMzYsICA1LCA5NiwgIDUsMTIxLCAgNSwxNjYsICA1LDE3MywgIDUsMjMxLAorICAgICAgNSwyNDQsICA2LCAgMCwgIDYsIDEyLCAgNiwgMjgsICA2LCA0OCwgIDYsIDU3LCA5MCwxMjksICAxLDI0MSwKKyAgICAgIDUsICAyLDIyNywyMjUsMjQyLDIzOSwxMTAsMTI4LCAgMSwxOTYsIDk3LCAgMiwgIDUsIDE2LCAgNSwgMjcsCisgICAgMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA1MiwyMzAsMjQyLDIzMywyMjcsMjI1LAorICAgIDExMCwxMjgsICAxLDEzNywgOTksICA0LCAgNSwgNDYsICA1LCA1MywgIDUsIDYyLCAgNSwgODksMjI1LDI0MiwKKyAgICAyMzksMTEwLDEyOCwgIDEsIDE0LDIyOSwyMjgsMjMzLDIzNiwyMzYsIDk3LDEyOCwgMzAsIDE2LDIzMywyNDIsCisgICAgIDk5LCAgMiwgIDUsIDcwLCAgNSwgNzUsMjM2LDEwMSwxMjgsIDM2LDE4NSwyNDUsMjM3LDIzMCwyMzYsMjI5LAorICAgIDI0OCwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDE4LDI0MiwyMzksMjI1LDExNiwxMjgsICAxLCAxNiwKKyAgICAyMjgsMjM5LDExNiwgIDIsICA1LDEwNCwgIDUsMTEzLDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsCisgICAgIDEwLDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgMTIsMTAxLCAgMywgIDUsMTI5LCAgNSwxNDAsICA1LAorICAgIDE1MCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDIwLDIzMywyMjcsMjM5LDI0MCwKKyAgICAyNDQsMjMzLCA5OSwxMjgsICAzLDIzOCwyMzYsMjQ0LCA5NywxMjksIDM0LCAgNiwgIDUsMTU4LDIzMSwyNDIsCisgICAgMjI5LDIyOSwxMDcsMTI4LCAgMywxNDgsMjMyLDIzOSwyMzksMTA3LDEyOCwgIDEsMTM4LDEwNSwgIDIsICA1LAorICAgIDE3OSwgIDUsMjE4LDIyOSwyNDIsMjI5LDI0MywyMzMsMTE1LDEzMSwyNDYsMjAzLCAgNSwxOTQsICA1LDIwMiwKKyAgICAgIDUsMjEwLDE5MywyMjcsMjQ1LDI0NCwxMDEsMTI4LDI0NiwyMDQsMTk5LDI0MiwyMjUsMjQ2LDEwMSwxMjgsCisgICAgMjQ2LDIwNSwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMTY4LDIzMSwyMjUsMjM3LDIzNywyMjUsMjMxLAorICAgIDI0MiwyMjksMjI5LDEwNywxMjgsICAzLDIyMCwyMzQsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywKKyAgICAgOTksMTI4LCAgNCwgIDIsMjM2LDIzMywyMzgsMjI5LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgMTQsCisgICAgMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMzYsMjM5LDI0NCwyMjUsMjI3LAorICAgIDIyNywyMjksMjM4LDI0NCwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDYsMjQ3LDExNSwgIDIsICA2LCAzNCwKKyAgICAgIDYsIDQxLDIzNiwyMjUsMjQzLDEwNCwxMjgsICAxLCAxNiwyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywxMDAsCisgICAgMjQ0LDIzOSwyNDAsMjI2LDIyNSwxMTQsMTI4LCAgMSwxMzksMTIyLDEzMSwgIDEsMjQyLCAgNiwgNjcsICA2LAorICAgICA3NSwgIDYsMTEyLDIyNywyMjUsMjQyLDIzOSwxMTAsMTI4LCAgMSwxOTcsMTAxLCAgMiwgIDYsIDgxLCAgNiwKKyAgICAxMDEsMjI1LDIyNiwyMzUsMjMyLDIyNSwyNDMsMjMzLDIyNSwyMzgsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsCisgICAgMjMzLCA5OSwxMjgsICA0LDIyNCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsICA1LAorICAgIDIzMiwyMjksMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAxNSwgNjksMTQ2LCAgMCwKKyAgICAgNjksICA2LDE2NSwgIDYsMTgzLCAgNiwxOTEsICA3LCA4OSwgIDcsMTUzLCAgNywxNjUsICA3LDE4MywgIDcsCisgICAgMjExLCAgOCwgIDcsICA4LCAzNiwgIDgsIDk0LCAgOCwxNjksICA4LDE4OSwgIDgsMjA4LCAgOCwyNDgsICA5LAorICAgICA0NCwgIDksMTA5LCAgOSwxMTUsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjksICAwLDIwMSwgIDYsMTc1LDI0MywKKyAgICAyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyMzMsMjI2LDI0MiwyMjksMjQ2LDEwMSwxMjgsICAxLCAyMCwgOTksCisgICAgICA1LCAgNiwyMDMsICA2LDIxMCwgIDYsMjI0LCAgNiwyMzYsICA3LCA3OSwyMjUsMjQyLDIzOSwxMTAsMTI4LAorICAgICAgMSwgMjYsMjI5LDIyOCwyMzMsMjM2LDIzNiwyMjUsMjI2LDI0MiwyMjksMjQ2LDEwMSwxMjgsIDMwLCAyOCwKKyAgICAyMzIsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA1MywyMzMsMjQyLCA5OSwgIDIsCisgICAgICA2LDI0NCwgIDYsMjQ5LDIzNiwxMDEsMTI4LCAzNiwxODYsMjQ1LDIzNywyMzAsMjM2LDIyOSwxMjAsMTM1LAorICAgICAgMCwyMDIsICA3LCAxNiwgIDcsIDI0LCAgNywgMzIsICA3LCA0MywgIDcsIDUxLCAgNywgNjMsICA3LCA3MSwKKyAgICAyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOCwgMzAsMTkwLDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgMjQsCisgICAgMjI4LDIzOSwyNDQsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDE5OCwyMzEsMjQyLDIyNSwyNDYsMTAxLAorICAgIDEyOCwgMzAsMTkyLDIzMiwyMzksMjM5LDIzNSwyMjUsMjI2LDIzOSwyNDYsMTAxLDEyOCwgMzAsMTk0LDI0MywKKyAgICAyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyMzQsMjQ0LDIzMywyMzYsMjI4LDEwMSwxMjgsIDMwLDE5NiwyNDksCisgICAgMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgIDQsMTAwLCAgMywgIDcsIDk3LCAgNywxMDcsICA3LAorICAgIDEyNywyMjYsMjM2LDIzMSwyNDIsMjI1LDI0NiwxMDEsMTI4LCAgMiwgIDQsMjMzLDIyOSwyNDIsMjI5LDI0MywKKyAgICAyMzMsMTE1LDEyOSwgIDAsMjAzLCAgNywxMTksMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDIzNSwyMzksCisgICAgMTE2LDEzMCwgIDEsIDIyLCAgNywxMzYsICA3LDE0NSwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsICAxLAorICAgICAyMiwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMTg0LDIzMCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwKKyAgICAyMzMsIDk5LDEyOCwgIDQsIDM2LDIzMSwyNDIsMjI1LDI0NiwxMDEsMTI5LCAgMCwyMDAsICA3LDE3NSwyNDMsCisgICAgMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMjMyLDEwNCwgIDIsICA3LDE4OSwgIDcsMjAwLDIyNSwyNDIsMjM3LAorICAgIDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwgNTUsMjM5LDIzOSwyMzUsMjI1LDIyNiwyMzksMjQ2LDEwMSwKKyAgICAxMjgsIDMwLDE4NiwxMDUsICAzLCAgNywyMTksICA3LDIzMCwgIDcsMjQ1LDIzMSwyMzIsMjQ0LDI0MiwyMzksCisgICAgMjM3LDIyNSwxMTAsMTI4LCAzMywxMDMsMjM4LDI0NiwyMjksMjQyLDI0NCwyMjksMjI4LDIyNiwyNDIsMjI5LAorICAgIDI0NiwxMDEsMTI4LCAgMiwgIDYsMjM5LDI0NCwyMzMsMjMwLDIzMywyMjksMjI4LDIyNywyNDksMjQyLDIzMywKKyAgICAyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxMDAsMTA4LCAgMiwgIDgsIDEzLCAgOCwgMjQsMjI3LDI0OSwyNDIsCisgICAgMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAyNywyMjksMjQ2LDIyOSwyMzgsMjQyLDIzOSwyMzcsMjI1LAorICAgIDExMCwxMjgsIDMzLDEwNiwxMDksICAzLCAgOCwgNDQsICA4LCA3MiwgIDgsIDgzLDIyNSwyMjcsMjQyLDIzOSwKKyAgICAxMTAsMTMwLCAgMSwgMTgsICA4LCA1NiwgIDgsIDY0LDIyNSwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAzMCwgMjIsCisgICAgMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsIDMwLCAyMCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LAorICAgIDEyOCwgIDQsIDI4LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMzcsMTEwLCAgNCwKKyAgICAgIDgsMTA0LCAgOCwxMTUsICA4LDEzNSwgIDgsMTU0LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksCisgICAgMTI4LCAgNCwgMjksMjI4LDIyOSwyNDMsMjI3LDIyOSwyMzgsMjI4LDIyOSwyNDIsMjI3LDI0OSwyNDIsMjMzLAorICAgIDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDE2MiwxMDMsMTI5LCAgMSwgNzQsICA4LDE0MSwyMzIsMjI5LDIyNywKKyAgICAyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNjQsMjMyLDIzOSwyMzksMjM1LDIyNywyNDksCisgICAgMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxOTksMTExLCAgMiwgIDgsMTc1LCAgOCwxODMsMjMxLAorICAgIDIzOSwyMzgsMjI5LDEwNywxMjgsICAxLCAyNCwyNDAsMjI5LDExMCwxMjgsICAxLDE0NCwyNDAsMjQzLDIzMywKKyAgICAyMzYsMjM5LDExMCwxMjksICAzLDE0OSwgIDgsMjAwLDI0NCwyMzksMjM4LDIzOSwxMTUsMTI4LCAgMywxMzYsCisgICAgMTE0LCAgMiwgIDgsMjE0LCAgOCwyMjUsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LAorICAgICAzMiwyMjksMjQ2LDIyOSwyNDIsMjQzLDIyOSwxMDAsMTI5LCAgMSwxNDIsICA4LDIzNywyMjcsMjQ5LDI0MiwKKyAgICAyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDQ1LDExNSwgIDQsICA5LCAgMiwgIDksIDEzLCAgOSwgMzMsCisgICAgICA5LCAzNywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDMzLDIyOCwyMjksMjQzLAorICAgIDIyNywyMjksMjM4LDIyOCwyMjksMjQyLDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwKKyAgICAxNzAsMTA0LDEyOCwgIDEsMTY5LDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDEwMSwxMTYsICAzLCAgOSwgNTIsCisgICAgICA5LCA3OCwgIDksIDkyLCA5NywxMzAsICAzLDE1MSwgIDksIDYwLCAgOSwgNzAsMjQyLDIzNywyMjksMjM4LAorICAgIDIzMywyMjUsMTEwLDEyOCwgIDUsIDU2LDI0NCwyMzksMjM4LDIzOSwxMTUsMTI4LCAgMywxMzcsMTA0LDEyOSwKKyAgICAgIDAsMjA4LCAgOSwgODQsMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDI0MCwyMzMsMjM2LDIyOCwxMDEsCisgICAgMTI5LCAzMCwxODgsICA5LDEwMSwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDI2LDI0NSwyNDIsMTExLAorICAgIDEyOCwgMzIsMTcyLDI1MCwxMDQsMTMwLCAgMSwxODMsICA5LDEyNCwgIDksMTMyLDIyNywyMjUsMjQyLDIzOSwKKyAgICAxMTAsMTI4LCAgMSwyMzgsMjQyLDIyOSwyNDYsMjI5LDI0MiwyNDMsMjI5LDEwMCwxMjgsICAxLDE4NCwgNzAsCisgICAgMTM2LCAgMCwgNzAsICA5LDE2MywgIDksMTcyLCAgOSwxODQsICA5LDIxMiwgIDksMjE5LCAgOSwyNDgsIDEwLAorICAgICAgNCwgMTAsIDE1LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgMzYsMTg3LDIyOCwyMzksMjQ0LDIyNSwKKyAgICAyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsIDMwLDEwMSwgIDIsICA5LDE5MCwgIDksMjAyLDIzMiwyMjUsCisgICAgMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDg2LDIzMywyMjcsMjM5LDI0MCwyNDQsMjMzLAorICAgICA5OSwxMjgsICAzLDIyOCwyMzIsMjM5LDIzOSwxMDcsMTI4LCAgMSwxNDUsMTA1LCAgMiwgIDksMjI1LCAgOSwKKyAgICAyMzgsMjQ0LDIyNSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTE0LDI0NiwyMjksCisgICAgMjQyLDIzOSwyMzcsMjI1LDExMCwxMjgsIDMzLDEwMCwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LAorICAgIDEwMSwxMjgsMjU1LCAzOCwyMzksMjQ1LDI0MiwyNDIsMjM5LDIzNywyMjUsMTEwLDEyOCwgMzMsIDk5LDI0MywKKyAgICAyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywxMDIsIDcxLDE0MCwgIDAsIDcxLCAxMCwgNTEsIDEwLCA2MSwgMTAsCisgICAgMTA3LCAxMCwxMTUsIDEwLDE3NiwgMTAsMTkzLCAxMCwyMDUsIDExLCAzOSwgMTEsIDUyLCAxMSwgNjUsIDExLAorICAgICA5MCwgMTEsMTA3LDE5NCwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDEzNSwgOTcsICAzLCAxMCwKKyAgICAgNjksIDEwLCA3NiwgMTAsIDk0LDIyNywyNDUsMjQ0LDEwMSwxMjgsICAxLDI0NCwyMzcsMjM3LCA5NywxMjksCisgICAgICAzLDE0NywgMTAsIDg0LDIyNSwyMzAsMjQyLDIzMywyMjcsMjI1LDExMCwxMjgsICAxLDE0OCwyMzgsMjMxLAorICAgIDIzMywyMjUsMjI3LDIzOSwyNDAsMjQ0LDIzMywgOTksMTI4LCAgMywyMzQsMjI2LDI0MiwyMjksMjQ2LDEwMSwKKyAgICAxMjgsICAxLCAzMCwgOTksICA0LCAxMCwxMjUsIDEwLDEzMiwgMTAsMTQxLCAxMCwxNjMsMjI1LDI0MiwyMzksCisgICAgMTEwLDEyOCwgIDEsMjMwLDIyOSwyMjgsMjMzLDIzNiwyMzYsIDk3LDEyOCwgIDEsIDM0LDIzMywyNDIsIDk5LAorICAgICAgMiwgMTAsMTQ5LCAxMCwxNTQsMjM2LDEwMSwxMjgsIDM2LDE4OCwyNDUsMjM3LDIzMCwyMzYsMjI5LDEyMCwKKyAgICAxMjgsICAxLCAyOCwyMzksMjM3LDIzNywyMjUsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LCAgMSwgMzQsCisgICAgMjI4LDIzOSwxMTYsMTI5LCAgMSwgMzIsIDEwLDE4NCwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsICAxLAorICAgICAzMiwyMjksMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAxOSwxMDQsICAzLCAxMCwKKyAgICAyMTMsIDEwLDIyNiwgMTEsIDMzLDIyNSwyMjgsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsCisgICAgICA1LCA2NiwxMDEsICAzLCAxMCwyMzQsIDEwLDI1NSwgMTEsIDE2LDIzNywyMzMsMjI4LDIyOCwyMzYsMjI5LAorICAgIDIzMiwyMzksMjM5LDIzNSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTQ4LDI0MywKKyAgICAyNDQsMjQyLDIzOSwyMzUsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNDYsCisgICAgMjQ1LDI0MCwyNDQsMjQ1LDI0MiwyMzgsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LAorICAgIDE0NCwyMzksMjM5LDEwNywxMjgsICAxLDE0NywyMzMsMjM3LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwKKyAgICAxMTAsMTI4LCAgNSwgNTEsMjM0LDIyOSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsCisgICAgICAzLDEwOSwgIDIsIDExLCA3MSwgMTEsIDc5LDIyNSwyMjcsMjQyLDIzOSwxMTAsMTI4LCAzMCwgMzIsMjM5LAorICAgIDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCAzOSwyNDIsMjI1LDI0NiwxMDEsMTI5LDI0NiwKKyAgICAyMDYsIDExLCA5OSwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsIDk2LDExNSwgIDIsIDExLDExMywgMTEsCisgICAgMTI5LDIzNywyMjUsMjM2LDEwOCwxMjksMjQ3LDEwMywgMTEsMTIyLDIzMiwyMzksMjM5LDEwNywxMjgsICAyLAorICAgIDE1NSwyNDQsMjQyLDIzOSwyMzUsMTAxLDEyOCwgIDEsMjI4LCA3MiwxNDAsICAwLCA3MiwgMTEsMTY1LCAxMSwKKyAgICAxOTAsIDExLDE5OCwgMTEsMjA4LCAxMiwgMTcsIDEyLCA0MCwgMTIsIDc3LCAxMiwxMTcsIDEyLDEyOSwgMTIsCisgICAgMTU3LCAxMiwxNjUsIDEyLDE4OSwxNzcsMTg0LCA1MywgIDMsIDExLDE3NSwgMTEsMTgwLCAxMSwxODUsMTc5LAorICAgICA1MSwxMjgsIDM3LDIwNywxODAsIDUxLDEyOCwgMzcsMTcwLDE4MSwgNDksMTI4LCAzNywxNzEsMTc4LDE3OCwKKyAgICAxNzYsMTgzLCA1MSwxMjgsIDM3LDE2MSwyMDgsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwyMDMsCisgICAgIDk3LCAgMywgMTEsMjE2LCAxMSwyMzYsIDEyLCAgMCwyMjUsMjI2LDIzNSwyMzIsMjI1LDI0MywyMzMsMjI1LAorICAgIDIzOCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTY4LDIyOCwyMjksMjQzLDIyNywKKyAgICAyMjksMjM4LDIyOCwyMjksMjQyLDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNzgsCisgICAgMjQyLDIyOCwyNDMsMjMzLDIzMSwyMzgsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LAorICAgICA0MiwgOTgsICAyLCAxMiwgMjMsIDEyLCAyOCwyMjUsMTE0LDEyOCwgIDEsIDM4LDI0MiwyMjksMjQ2LDIyOSwKKyAgICAyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDQyLCA5OSwgIDIsIDEyLCA0NiwgMTIsIDU1LDIyOSwyMjgsCisgICAgMjMzLDIzNiwyMzYsIDk3LDEyOCwgMzAsIDQwLDIzMywyNDIsIDk5LCAgMiwgMTIsIDYzLCAxMiwgNjgsMjM2LAorICAgIDEwMSwxMjgsIDM2LDE4OSwyNDUsMjM3LDIzMCwyMzYsMjI5LDEyMCwxMjgsICAxLCAzNiwxMDAsICAyLCAxMiwKKyAgICAgODMsIDEyLCA5MywyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywxMTUsMTI4LCAzMCwgMzgsMjM5LDExNiwgIDIsCisgICAgIDEyLDEwMCwgMTIsMTA5LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsIDM0LDIyNiwyMjksMjM2LAorICAgIDIzOSwxMTksMTI4LCAzMCwgMzYsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwKKyAgICAgNDAsMTExLCAgMiwgMTIsMTM1LCAxMiwxNDYsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsCisgICAgICA1LCA2NCwyNDIsMjMzLDIyNywyMzksMjQwLDI0NCwyMzMsIDk5LDEyOCwgIDMsMjMyLDI0MywyMzcsMjI1LAorICAgIDIzNiwxMDgsMTI4LDI0NywxMDQsMjQ1LDIzOCwyMzEsMjI1LDI0MiwyNDUsMjM3LDIzNiwyMjUsMjQ1LDExNiwKKyAgICAxMjksMjQ2LDIwNywgMTIsMTgxLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NiwyNDgsMjUwLDI0MywyNDEsCisgICAgMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTQ0LCA3MywxNDYsICAwLCA3MywgMTIsMjM5LCAxMiwyNTEsIDEyLAorICAgIDI1NSwgMTMsIDExLCAxMywgMjksIDEzLCAzNywgMTMsIDk0LCAxMywxODEsIDEzLDIxNCwgMTMsMjI0LCAxMywKKyAgICAyNDIsIDEzLDI1NCwgMTQsIDQ4LCAxNCwgODYsIDE0LCA5OSwgMTQsMTY2LCAxNCwxODcsIDE0LDIwNSwxOTMsCisgICAgMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA0NywgNzQsMTI4LCAgMSwgNTAsMjEzLAorICAgIDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgNDYsMjI1LDIyNywyNDUsMjQ0LDEwMSwKKyAgICAxMjksICAwLDIwNSwgMTMsIDIxLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyMzcsMjI2LDI0MiwyMjksCisgICAgMjQ2LDEwMSwxMjgsICAxLCA0NCwgOTksICAzLCAxMywgNDUsIDEzLCA1MiwgMTMsIDg0LDIyNSwyNDIsMjM5LAorICAgIDExMCwxMjgsICAxLDIwNywyMzMsMjQyLCA5OSwgIDIsIDEzLCA2MCwgMTMsIDY1LDIzNiwxMDEsMTI4LCAzNiwKKyAgICAxOTAsMjQ1LDIzNywyMzAsMjM2LDIyOSwxMjAsMTI5LCAgMCwyMDYsIDEzLCA3NiwyNDMsMjM3LDIyNSwyMzYsCisgICAgMTA4LDEyOCwyNDcsMjM4LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAgNiwxMDAsICAzLAorICAgICAxMywxMDIsIDEzLDExMiwgMTMsMTU1LDIyNiwyMzYsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsICAyLCAgOCwKKyAgICAyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywxMTUsMTMxLCAgMCwyMDcsIDEzLDEyOCwgMTMsMTM2LCAxMywxNDcsCisgICAgMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsIDMwLCA0NiwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LAorICAgIDEyOCwgIDQsMjI4LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyMzksMjM5LDExNiwxMzAsICAxLCA0OCwKKyAgICAgMTMsMTY0LCAxMywxNzMsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LCAgMSwgNDgsMjI2LDIyOSwyMzYsCisgICAgMjM5LDExOSwxMjgsIDMwLDIwMiwxMDEsICAyLCAxMywxODcsIDEzLDIwMywyMjYsMjQyLDIyOSwyNDYsMjI5LAorICAgIDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwyMTQsMjI3LDI0OSwyNDIsMjMzLDIzNiwKKyAgICAyMzYsMjMzLCA5OSwxMjgsICA0LCAyMSwyMzAsMjQyLDIyNSwyMzUsMjQ0LDI0NSwxMTQsMTI4LCAzMywgMTcsCisgICAgMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjksICAwLDIwNCwgMTMsMjM0LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LAorICAgIDI0NywyMzYsMjMyLDIzOSwyMzksMjM1LDIyNSwyMjYsMjM5LDI0NiwxMDEsMTI4LCAzMCwyMDAsMTA1LCAgMywKKyAgICAgMTQsICA2LCAxNCwgMTcsIDE0LCAzMiwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsCisgICAgIDI0LDIzOCwyNDYsMjI5LDI0MiwyNDQsMjI5LDIyOCwyMjYsMjQyLDIyOSwyNDYsMTAxLDEyOCwgIDIsIDEwLAorICAgIDI0MywyMzIsMjM5LDI0MiwyNDQsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAyNSwKKyAgICAxMDksICAyLCAxNCwgNTQsIDE0LCA3NSwyMjUsMjI3LDI0MiwyMzksMTEwLDEyOSwgIDEsIDQyLCAxNCwgNjQsCisgICAgMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDIyNiwyMzksMjM4LDIzOSwyNDMsMjQwLAorICAgIDIyNSwyMjcsMTAxLDEyOCwyNTUsIDQxLDIzOCwyMzMsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwKKyAgICAxMjgsICA1LCA1OSwxMTEsICAzLCAxNCwxMDcsIDE0LDExOCwgMTQsMTI2LDIyNywyNDksMjQyLDIzMywyMzYsCisgICAgMjM2LDIzMywgOTksMTI4LCAgNCwgIDEsMjMxLDIzOSwyMzgsMjI5LDEwNywxMjgsICAxLCA0NiwyNDQsIDk3LAorICAgIDEzMSwgIDMsMTUzLCAxNCwxMzcsIDE0LDE0NywgMTQsMTU4LDIyNSwyMzAsMjQyLDIzMywyMjcsMjI1LDExMCwKKyAgICAxMjgsICAxLDE1MCwyMjgsMjMzLDIyOSwyNDIsMjI5LDI0MywyMzMsMTE1LDEyOCwgIDMsMTcwLDI0NCwyMzksCisgICAgMjM4LDIzOSwxMTUsMTI4LCAgMywxMzgsMTE1LCAgMiwgMTQsMTcyLCAxNCwxNzksMjM3LDIyNSwyMzYsMTA4LAorICAgIDEyOCwyNDcsMTA1LDI0NCwyNDIsMjM5LDIzNSwxMDEsMTI4LCAgMSwxNTEsMjQ0LDIzMywyMzYsMjI4LDEwMSwKKyAgICAxMjksICAxLCA0MCwgMTQsMTk3LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgNDQsMjUwLDIzMiwyMzMsCisgICAgMjQ0LDI0MywgOTcsICAyLCAxNCwyMTYsIDE0LDIyNywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LAorICAgIDEyOCwgIDQsMTE2LDIyOCwyMjYsMjM2LDIzMSwyNDIsMjI1LDI0NiwyMjksMjI3LDI0OSwyNDIsMjMzLDIzNiwKKyAgICAyMzYsMjMzLCA5OSwxMjgsICA0LDExOCwgNzQsMTM0LCAgMCwgNzQsIDE1LCAgNiwgMTUsIDE4LCAxNSwgNDEsCisgICAgIDE1LCA1MywgMTUsIDY3LCAxNSwgNzksMjI1LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LAorICAgICAgNSwgNjUsMjI3LDIzMywyNDIsIDk5LCAgMiwgMTUsIDI3LCAxNSwgMzIsMjM2LDEwMSwxMjgsIDM2LDE5MSwKKyAgICAyNDUsMjM3LDIzMCwyMzYsMjI5LDEyMCwxMjgsICAxLCA1MiwyMjksMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsCisgICAgMjMzLCA5OSwxMjgsICA0LCAgOCwyMzIsMjI5LDIzMiwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLAorICAgIDEyOCwgIDUsIDc1LDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDQyLDI0MywKKyAgICAyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywxMDYsIDc1LDE0MCwgIDAsIDc1LCAxNSwxMTUsIDE1LDEyNSwgMTUsCisgICAgMTM1LCAxNiwgMTgsIDE2LCA2NSwgMTYsIDc2LCAxNiwxMDYsIDE2LDE0MywgMTYsMTU2LCAxNiwxNjgsIDE2LAorICAgIDE4MCwgMTYsMjA4LDE5NCwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDEzMywyMDMsMjQzLDI0MSwKKyAgICAyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwyMDUsIDk3LCAgNywgMTUsMTUxLCAxNSwxNjksIDE1LDE5MSwgMTUsCisgICAgMjExLCAxNSwyMjYsIDE1LDIzMiwgMTUsMjQ5LDIyNiwyMjUsMjQzLDIzMiwyMzUsMjMzLDI0MiwyMjcsMjQ5LAorICAgIDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTYwLCA5OSwgIDIsIDE1LDE3NSwgMTUsMTgxLDI0NSwKKyAgICAyNDQsMTAxLDEyOCwgMzAsIDQ4LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAyNiwyMjgsCisgICAgMjI5LDI0MywyMjcsMjI5LDIzOCwyMjgsMjI5LDI0MiwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LAorICAgIDEyOCwgIDQsMTU0LDIzMiwyMzksMjM5LDIzNSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwKKyAgICAgIDQsMTk1LDI0MCwyNDAsIDk3LDEyOCwgIDMsMTU0LDI0MywyNDQsMjQyLDIzOSwyMzUsMjI5LDIyNywyNDksCisgICAgMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNTgsMjQ2LDIyOSwyNDIsMjQ0LDIzMywyMjcsMjI1LAorICAgIDIzNiwyNDMsMjQ0LDI0MiwyMzksMjM1LDIyOSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwKKyAgICAgIDQsMTU2LCA5OSwgIDQsIDE2LCAyOCwgMTYsIDM1LCAxNiwgNDQsIDE2LCA1MiwyMjUsMjQyLDIzOSwxMTAsCisgICAgMTI4LCAgMSwyMzIsMjI5LDIyOCwyMzMsMjM2LDIzNiwgOTcsMTI4LCAgMSwgNTQsMjMzLDI0MiwyMjcsMjM2LAorICAgIDEwMSwxMjgsIDM2LDE5MiwyMzksMjM3LDIzNywyMjUsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LCAgMSwKKyAgICAgNTQsMjI4LDIzOSwyNDQsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLCA1MCwxMDEsICAyLCAxNiwgODIsCisgICAgIDE2LCA5NCwyMzIsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA4NCwyMzgsMjI1LAorICAgIDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA2MywxMDQsICAzLCAxNiwxMTQsIDE2LDEyNiwKKyAgICAgMTYsMTM3LDIyNSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDM3LDIyOSwyMzMsCisgICAgMjI3LDIzOSwyNDAsMjQ0LDIzMywgOTksMTI4LCAgMywyMzAsMjM5LDIzOSwxMDcsMTI4LCAgMSwxNTIsMjM0LAorICAgIDIyOSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDEyLDIzNiwyMzMsMjM4LDIyOSwKKyAgICAyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDUyLDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsCisgICAgMTAxLDEyOCwyNTUsIDQzLDIzOSwyNDAsMjQwLCA5NywgIDIsIDE2LDE4OSwgMTYsMjAwLDIyNywyNDksMjQyLAorICAgIDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxMjgsMjMxLDI0MiwyMjksMjI5LDEwNywxMjgsICAzLDIyMiwKKyAgICAxMTUsICAyLCAxNiwyMTQsIDE2LDIyNiwyMzMsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsCisgICAgICA0LDExMCwyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywxMDcsIDc2LDEzOCwgIDAsIDc2LCAxNywgIDEsIDE3LAorICAgICAgNSwgMTcsICA5LCAxNywgMjksIDE3LCA5NSwgMTcsMTMzLCAxNywxNDcsIDE3LDE2NSwgMTcsMTc3LCAxNywKKyAgICAxODksIDc0LDEyOCwgIDEsMTk5LCA3NiwxMjgsMjQ2LDE5MSwgOTcsICAyLCAxNywgMTUsIDE3LCAyMiwyMjcsCisgICAgMjQ1LDI0NCwxMDEsMTI4LCAgMSwgNTcsMjM3LDIyNiwyMjgsIDk3LDEyOCwgIDMsMTU1LCA5OSwgIDQsIDE3LAorICAgICAzOSwgMTcsIDQ2LCAxNywgNTUsIDE3LCA4MiwyMjUsMjQyLDIzOSwxMTAsMTI4LCAgMSwgNjEsMjI5LDIyOCwKKyAgICAyMzMsMjM2LDIzNiwgOTcsMTI4LCAgMSwgNTksMjMzLDI0MiwgOTksICAyLCAxNywgNjMsIDE3LCA2OCwyMzYsCisgICAgMTAxLDEyOCwgMzYsMTkzLDI0NSwyMzcsMjMwLDIzNiwyMjksMjQ4LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LAorICAgICAzMCwgNjAsMjM5LDIzNywyMzcsMjI1LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgIDEsIDU5LDIyOCwKKyAgICAyMzksMTE2LDEzMCwgIDEsIDYzLCAxNywxMDUsIDE3LDExNCwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsCisgICAgICAxLCA2MywyMjYsMjI5LDIzNiwyMzksMTE5LDEyOSwgMzAsIDU0LCAxNywxMjQsMjM3LDIyNSwyMjcsMjQyLAorICAgIDIzOSwxMTAsMTI4LCAzMCwgNTYsMjMzLDI0NywyMzgsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwKKyAgICAxMjgsICA1LCA2MCwxMDYsMTI5LCAgMSwyMDAsIDE3LDE1MywyMjksMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsCisgICAgMjMzLCA5OSwxMjgsICA0LCAgOSwyMzYsMjMzLDIzOCwyMjksMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLAorICAgICA1OCwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCA0NCwxMTUsICAyLCAxNywKKyAgICAxOTUsIDE3LDIxMiwyMzYsMjI1LDI0MywxMDQsMTI5LCAgMSwgNjUsIDE3LDIwNCwyNDMsMjM3LDIyNSwyMzYsCisgICAgMTA4LDEyOCwyNDYsMjQ5LDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDEwOCwgNzcsMTM3LCAgMCwgNzcsIDE3LAorICAgIDI0MSwgMTcsMjUxLCAxOCwgMjQsIDE4LCAzMywgMTgsIDU4LCAxOCwgNzEsIDE4LCA4MywgMTgsIDkxLCAxOCwKKyAgICAxMDAsMTk0LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTM0LDIyNSwgOTksICAyLCAxOCwgIDIsCisgICAgIDE4LCAxOCwyNDIsMjM5LDExMCwxMjksMjQ2LDIwOCwgMTgsIDEwLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LAorICAgIDI0NywxNzUsMjQ1LDI0NCwxMDEsMTI4LCAzMCwgNjIsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI4LCAzNiwKKyAgICAxOTQsMjI4LDIzOSwxMTYsICAyLCAxOCwgNDEsIDE4LCA1MCwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsCisgICAgIDMwLCA2NCwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDY2LDIyOSwyMzgsMjI1LDI0MiwyMzcsMjI5LAorICAgIDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA2OCwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwKKyAgICAxMjgsMjU1LCA0NSwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMTA5LDI0NCwyNDUsMjQyLDIzOCwyMjksCisgICAgMTAwLDEyOCwgIDEsMTU2LDExNywxMjgsICAzLDE1NiwgNzgsMTQxLCAgMCwgNzgsIDE4LDEzNCwgMTgsMTM4LAorICAgICAxOCwxNDYsIDE4LDIxMiwgMTgsMjM3LCAxOCwyNDgsIDE5LCAgMywgMTksIDIxLCAxOSwgMzMsIDE5LCA0NSwKKyAgICAgMTksIDU4LCAxOSwgNjYsIDE5LCA4NCwgNzQsMTI4LCAgMSwyMDIsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsCisgICAgICAxLCA2NywgOTksICA0LCAxOCwxNTYsIDE4LDE2MywgMTgsMTcyLCAxOCwxOTksMjI1LDI0MiwyMzksMTEwLAorICAgIDEyOCwgIDEsIDcxLDIyOSwyMjgsMjMzLDIzNiwyMzYsIDk3LDEyOCwgIDEsIDY5LDIzMywyNDIsIDk5LCAgMiwKKyAgICAgMTgsMTgwLCAxOCwxODUsMjM2LDEwMSwxMjgsIDM2LDE5NSwyNDUsMjM3LDIzMCwyMzYsMjI5LDI0OCwyMjYsCisgICAgMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDc0LDIzOSwyMzcsMjM3LDIyNSwyMjUsMjI3LDIyNywyMjksMjM4LAorICAgIDExNiwxMjgsICAxLCA2OSwyMjgsMjM5LDExNiwgIDIsIDE4LDIyMCwgMTgsMjI5LDIyNSwyMjcsMjI3LDIyOSwKKyAgICAyMzgsMTE2LDEyOCwgMzAsIDY4LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgNzAsMjMyLDIzOSwyMzksCisgICAgMjM1LDIzNiwyMjksMjMwLDExNiwxMjgsICAxLDE1NywyMzMsMjM4LDIyOSwyNDIsMjM5LDIzNywyMjUsMTEwLAorICAgIDEyOCwgMzMsMTA0LDEwNiwxMjksICAxLDIwMywgMTksICA5LDIyOSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwKKyAgICAyMzMsIDk5LDEyOCwgIDQsIDEwLDIzNiwyMzMsMjM4LDIyOSwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsCisgICAgIDcyLDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDQ2LDIzOSwyNDcsMjI1LAorICAgIDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA3MCwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwKKyAgICAyNDcsMTEwLDI0NCwyMzMsMjM2LDIyOCwxMDEsMTI5LCAgMCwyMDksIDE5LCA3NiwyNDMsMjM3LDIyNSwyMzYsCisgICAgMTA4LDEyOCwyNDcsMjQxLDExNywxMjgsICAzLDE1NywgNzksMTQxLCAgMCwgNzksIDE5LDExOCwgMTksMTMyLAorICAgICAxOSwxNTAsIDE5LDIwMywgMjAsIDc4LCAyMCwxNTIsIDIwLDE4NywgMjEsIDQ4LCAyMSwgNjksIDIxLDIxMywKKyAgICAgMjEsMjIzLCAyMSwyNTQsIDIyLCA1MywgNjksMTI5LCAgMSwgODIsIDE5LDEyNCwyNDMsMjM3LDIyNSwyMzYsCisgICAgMTA4LDEyOCwyNDYsMjUwLDIyNSwyMjcsMjQ1LDI0NCwxMDEsMTI5LCAgMCwyMTEsIDE5LDE0MiwyNDMsMjM3LAorICAgIDIyNSwyMzYsMTA4LDEyOCwyNDcsMjQzLCA5OCwgIDIsIDE5LDE1NiwgMTksMTk2LDIyNSwyNDIsMjQyLDIyOSwKKyAgICAxMDAsICAyLCAxOSwxNjYsIDE5LDE3NywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsCisgICAgMjMyLDIyOCwyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywyNDMsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLAorICAgICA5OSwxMjgsICA0LDIzNCwyNDIsMjI5LDI0NiwxMDEsMTI4LCAgMSwgNzgsIDk5LCAgNCwgMTksMjEzLCAxOSwKKyAgICAyMjAsIDE5LDIzNSwgMjAsIDY4LDIyNSwyNDIsMjM5LDExMCwxMjgsICAxLDIwOSwyMjksMjM4LDI0NCwyMjksCisgICAgMjQyLDIyOSwyMjgsMjQ0LDIzMywyMzYsMjI4LDEwMSwxMjgsICAxLDE1OSwyMzMsMjQyLCA5OSwgIDIsIDE5LAorICAgIDI0MywgMTksMjQ4LDIzNiwxMDEsMTI4LCAzNiwxOTYsMjQ1LDIzNywyMzAsMjM2LDIyOSwxMjAsMTM0LCAgMCwKKyAgICAyMTIsIDIwLCAxMywgMjAsIDIxLCAyMCwgMzIsIDIwLCA0MCwgMjAsIDUyLCAyMCwgNjAsMjI1LDIyNywyNDUsCisgICAgMjQ0LDEwMSwxMjgsIDMwLDIwOCwyMjgsMjM5LDI0NCwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMjE2LAorICAgIDIzMSwyNDIsMjI1LDI0NiwxMDEsMTI4LCAzMCwyMTAsMjMyLDIzOSwyMzksMjM1LDIyNSwyMjYsMjM5LDI0NiwKKyAgICAxMDEsMTI4LCAzMCwyMTIsMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDI0NCwyNDQsMjMzLDIzNiwyMjgsCisgICAgMTAxLDEyOCwgMzAsMjE0LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAzMCwxMDAsICAzLAorICAgICAyMCwgODYsIDIwLDEwOSwgMjAsMTQyLDIyNiwxMDgsICAyLCAyMCwgOTMsIDIwLDEwMSwyMjUsMjI3LDI0NSwKKyAgICAyNDQsMTAxLDEyOCwgIDEsIDgwLDIzMSwyNDIsMjI1LDI0NiwxMDEsMTI4LCAgMiwgMTIsMjMzLDIyOSwyNDIsCisgICAgMjI5LDI0MywyMzMsMTE1LDEzMCwgIDAsMjE0LCAyMCwxMjMsIDIwLDEzNCwyMjcsMjQ5LDI0MiwyMzMsMjM2LAorICAgIDIzNiwyMzMsIDk5LDEyOCwgIDQsMjMwLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyNDYsMjM5LDI0NCwKKyAgICAyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMjA0LDEwMywgIDIsIDIwLDE1OCwgMjAsMTcwLDIzOSwyMzgsCisgICAgMjI5LDIzNSwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDYsMjUxLDI0MiwyMjUsMjQ2LDEwMSwxMjksICAwLAorICAgIDIxMCwgMjAsMTc5LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyNDIsMTA0LCAgNCwgMjAsMTk3LCAyMCwKKyAgICAyMDgsIDIwLDIxMiwgMjEsIDM0LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwgODUsCisgICAgMTA5LDEyOCwgMzMsIDM4LDExMSwgIDIsIDIwLDIxOCwgMjAsMjI4LDIzOSwyMzUsMjI1LDIyNiwyMzksMjQ2LAorICAgIDEwMSwxMjgsIDMwLDIwNiwyNDIsMTEwLDEzMywgIDEsMTYwLCAyMCwyNDMsIDIwLDI1MSwgMjEsICA2LCAyMSwKKyAgICAgMTQsIDIxLCAyNiwyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOCwgMzAsMjE4LDIyOCwyMzksMjQ0LDIyNiwyMjksCisgICAgMjM2LDIzOSwxMTksMTI4LCAzMCwyMjYsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsIDMwLDIyMCwyMzIsMjM5LAorICAgIDIzOSwyMzUsMjI1LDIyNiwyMzksMjQ2LDEwMSwxMjgsIDMwLDIyMiwyNDQsMjMzLDIzNiwyMjgsMTAxLDEyOCwKKyAgICAgMzAsMjI0LDI0NSwyMzgsMjMxLDIyNSwyNDIsMjQ1LDIzNywyMzYsMjI1LDI0NSwxMTYsMTI4LCAgMSwgODAsCisgICAgMTA1LDEyOSwgIDEsMTYyLCAyMSwgNTQsMjM4LDI0NiwyMjksMjQyLDI0NCwyMjksMjI4LDIyNiwyNDIsMjI5LAorICAgIDI0NiwxMDEsMTI4LCAgMiwgMTQsMTA5LCAgNCwgMjEsIDc5LCAyMSwxMDcsIDIxLDE4NCwgMjEsMjAyLDIyNSwKKyAgICAyMjcsMjQyLDIzOSwxMTAsMTMwLCAgMSwgNzYsIDIxLCA5MSwgMjEsIDk5LDIyNSwyMjcsMjQ1LDI0NCwxMDEsCisgICAgMTI4LCAzMCwgODIsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsIDMwLCA4MCwyMjksMjMxLCA5NywxMzIsIDMzLAorICAgICAzOCwgMjEsMTIxLCAyMSwxMzIsIDIxLDE0MCwgMjEsMTU2LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywKKyAgICAgOTksMTI4LCAgNCwgOTYsMjMxLDI0MiwyMjksMjI5LDEwNywxMjgsICAzLDE2OSwyNDIsMjM5LDI0NSwyMzgsCisgICAgMjI4LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxMjIsMTE2LCAgMiwgMjEsMTYyLAorICAgICAyMSwxNzcsMjMzLDI0NCwyMzYsMjM5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwKKyAgICAxMjQsMjM5LDIzOCwyMzksMTE1LDEyOCwgIDMsMTQzLDIzMywyMjcsMjQyLDIzOSwxMTAsMTI5LCAgMywxNTksCisgICAgIDIxLDE5NCwyNDQsMjM5LDIzOCwyMzksMTE1LDEyOCwgIDMsMTQwLDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LAorICAgIDIyNywxMDEsMTI4LDI1NSwgNDcsMjM4LDIyOSwyNDIsMjM5LDIzNywyMjUsMTEwLDEyOCwgMzMsIDk2LDExMSwKKyAgICAgIDIsIDIxLDIyOSwgMjEsMjQ4LDIzMSwyMzksMjM4LDIyOSwxMDcsMTI5LCAgMSwyMzQsIDIxLDIzOSwyMzcsCisgICAgMjI1LDIyNywyNDIsMjM5LDExMCwxMjgsICAxLDIzNiwyNDAsMjI5LDExMCwxMjgsICAxLDEzNCwxMTUsICAzLAorICAgICAyMiwgIDYsIDIyLCAzMywgMjIsIDQwLDIzNiwyMjUsMjQzLDEwNCwxMzAsICAwLDIxNiwgMjIsIDE3LCAyMiwKKyAgICAgMjUsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsICAxLDI1NCwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsCisgICAgMjQ4LDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDExMSwyNDQsMjQyLDIzOSwyMzUsMjI5LDIyNSwyMjcsMjQ1LAorICAgIDI0NCwxMDEsMTI4LCAgMSwyNTQsMTE2LCAgMiwgMjIsIDU5LCAyMiwgNzAsMjI3LDI0OSwyNDIsMjMzLDIzNiwKKyAgICAyMzYsMjMzLCA5OSwxMjgsICA0LDEyNiwyMzMsMjM2LDIyOCwxMDEsMTMxLCAgMCwyMTMsIDIyLCA4MywgMjIsCisgICAgIDkxLCAyMiwxMDIsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsIDMwLCA3NiwyMjgsMjMzLDIyOSwyNDIsMjI5LAorICAgIDI0MywyMzMsMTE1LDEyOCwgMzAsIDc4LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyNDUsIDgwLDEzNiwKKyAgICAgIDAsIDgwLCAyMiwxMzAsIDIyLDEzOCwgMjIsMTQ3LCAyMiwxNTksIDIyLDIxMSwgMjIsMjI3LCAyMiwyNDYsCisgICAgIDIzLCAgMiwyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOCwgMzAsIDg0LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLAorICAgIDEyOCwgMzYsMTk3LDIyOCwyMzksMjQ0LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsIDg2LDEwMSwKKyAgICAgIDMsIDIyLDE2NywgMjIsMTc4LCAyMiwxOTAsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsCisgICAgICA0LCAzMSwyMzIsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA3NCwyMzcsMjMzLAorICAgIDIyOCwyMjgsMjM2LDIyOSwyMzIsMjM5LDIzOSwyMzUsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwKKyAgICAxMjgsICA0LDE2NiwxMDQsICAyLCAyMiwyMTcsIDIyLDIyMSwxMDUsMTI4LCAgMywxNjYsMjM5LDIzOSwxMDcsCisgICAgMTI4LCAgMSwxNjQsMTA1LDEyOSwgIDMsMTYwLCAyMiwyMzMsMjQ3LDI0MiwyMjUsMjQyLDIzNywyMjksMjM4LAorICAgIDIzMywyMjUsMTEwLDEyOCwgIDUsIDgzLDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwKKyAgICAyNTUsIDQ4LDExNSwgIDIsIDIzLCAgOCwgMjMsIDI1LDEwNSwxMjksICAzLDE2OCwgMjMsIDE0LDIyNywyNDksCisgICAgMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxMTIsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMTEyLAorICAgICA4MSwxMzEsICAwLCA4MSwgMjMsIDQyLCAyMywgNTEsIDIzLCA2MywyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwKKyAgICAxMjgsIDM2LDE5OCwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCA0OSwyNDMsCisgICAgMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMTEzLCA4MiwxMzgsICAwLCA4MiwgMjMsIDk1LCAyMywxMTksIDIzLAorICAgIDE2NiwgMjMsMjE3LCAyMywyMzAsIDIzLDI0MCwgMjMsMjQ1LCAyNCwgMTksIDI0LCAzMSwgMjQsIDQzLCA5NywKKyAgICAgIDIsIDIzLDEwMSwgMjMsMTEyLDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwgNzYsCisgICAgMjI3LDI0NSwyNDQsMTAxLDEyOCwgIDEsIDg0LCA5OSwgIDQsIDIzLDEyOSwgMjMsMTM2LCAyMywxNDUsIDIzLAorICAgIDE1MywyMjUsMjQyLDIzOSwxMTAsMTI4LCAgMSwgODgsMjI5LDIyOCwyMzMsMjM2LDIzNiwgOTcsMTI4LCAgMSwKKyAgICAgODYsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsIDM2LDE5OSwyMzksMjM3LDIzNywyMjUsMjI1LDIyNywyMjcsCisgICAgMjI5LDIzOCwxMTYsMTI4LCAgMSwgODYsMTAwLCAgMiwgMjMsMTcyLCAyMywxODIsMjI2LDIzNiwyMzEsMjQyLAorICAgIDIyNSwyNDYsMTAxLDEyOCwgIDIsIDE2LDIzOSwxMTYsICAyLCAyMywxODksIDIzLDE5OCwyMjUsMjI3LDIyNywKKyAgICAyMjksMjM4LDExNiwxMjgsIDMwLCA4OCwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOSwgMzAsIDkwLCAyMywyMDgsCisgICAgMjM3LDIyNSwyMjcsMjQyLDIzOSwxMTAsMTI4LCAzMCwgOTIsMjI5LDIzMiwyMjUsMjQyLDIzNywyMjksMjM4LAorICAgIDIzMywyMjUsMTEwLDEyOCwgIDUsIDgwLDIzMCwyNDIsMjI1LDIzNSwyNDQsMjQ1LDExNCwxMjgsIDMzLCAyOCwKKyAgICAyMzIsMTExLDEyOCwgIDMsMTYxLDIzMywxMTAsICAyLCAyMywyNTIsIDI0LCAgNSwyMzEsMjQzLDIzNywyMjUsCisgICAgMjM2LDEwOCwxMjgsMjQ2LDI1MiwyNDYsMjI5LDI0MiwyNDQsMjI5LDIyOCwyMjYsMjQyLDIyOSwyNDYsMTAxLAorICAgIDEyOCwgIDIsIDE4LDIzNiwyMzMsMjM4LDIyOSwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDk0LDIzNywKKyAgICAyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDUwLDI0MywyMzcsMjI1LDIzNiwxMDgsCisgICAgMTI5LDI0NywxMTQsIDI0LCA1MywyMzMsMjM4LDI0NiwyMjksMjQyLDI0NCwyMjksMTAwLDEyOSwgIDIsMTI5LAorICAgICAyNCwgNjYsMjQzLDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsICAyLDE4MiwgODMsMTM5LCAgMCwKKyAgICAgODMsIDI0LDEwMywgMjYsIDE3LCAyNiwgNTUsIDI2LDE4MiwgMjYsMjIxLCAyNiwyNTAsIDI3LCA4NCwgMjcsCisgICAgMTA1LCAyNywxMTcsIDI3LDEzNSwgMjcsMTQzLCA3MCwgIDYsIDI0LDExNywgMjQsMjA5LCAyNCwyNDEsIDI1LAorICAgICA3NywgMjUsMTE5LCAyNSwyMjEsIDQ4LCAgOSwgMjQsMTM3LCAyNCwxNDUsIDI0LDE1MywgMjQsMTYxLCAyNCwKKyAgICAxNjksIDI0LDE3NywgMjQsMTg1LCAyNCwxOTMsIDI0LDIwMSwxNzcsMTc2LDE3NiwxNzYsIDQ4LDEyOCwgMzcsCisgICAgIDEyLDE3OCwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywgMjAsMTc5LDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LAorICAgICAxNiwxODAsMTc2LDE3NiwxNzYsIDQ4LDEyOCwgMzcsIDI0LDE4MSwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywKKyAgICAgNjAsMTgyLDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LCA0NCwxODMsMTc2LDE3NiwxNzYsIDQ4LDEyOCwgMzcsCisgICAgIDUyLDE4NCwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywgMjgsMTg1LDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LAorICAgICAzNiwgNDksICAzLCAyNCwyMTcsIDI0LDIyNSwgMjQsMjMzLDE3NiwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywKKyAgICAgIDAsMTc3LDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LCAgMiwxODUsMTc2LDE3NiwxNzYsIDQ4LDEyOCwgMzcsCisgICAgIDk3LCA1MCwgIDksIDI1LCAgNSwgMjUsIDEzLCAyNSwgMjEsIDI1LCAyOSwgMjUsIDM3LCAyNSwgNDUsIDI1LAorICAgICA1MywgMjUsIDYxLCAyNSwgNjksMTc2LDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LCA5OCwxNzcsMTc2LDE3NiwKKyAgICAxNzYsIDQ4LDEyOCwgMzcsIDg2LDE3OCwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywgODUsMTc5LDE3NiwxNzYsCisgICAgMTc2LCA0OCwxMjgsIDM3LCA5OSwxODAsMTc2LDE3NiwxNzYsIDQ4LDEyOCwgMzcsIDgxLDE4MSwxNzYsMTc2LAorICAgIDE3NiwgNDgsMTI4LCAzNywgODcsMTgyLDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LCA5MywxODMsMTc2LDE3NiwKKyAgICAxNzYsIDQ4LDEyOCwgMzcsIDkyLDE4NCwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywgOTEsIDUxLCAgNCwgMjUsCisgICAgIDg3LCAyNSwgOTUsIDI1LDEwMywgMjUsMTExLDE4MiwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywgOTQsMTgzLAorICAgIDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LCA5NSwxODQsMTc2LDE3NiwxNzYsIDQ4LDEyOCwgMzcsIDkwLDE4NSwKKyAgICAxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywgODQsIDUyLCAxMCwgMjUsMTQxLCAyNSwxNDksIDI1LDE1NywgMjUsCisgICAgMTY1LCAyNSwxNzMsIDI1LDE4MSwgMjUsMTg5LCAyNSwxOTcsIDI1LDIwNSwgMjUsMjEzLDE3NiwxNzYsMTc2LAorICAgIDE3NiwgNDgsMTI4LCAzNywxMDUsMTc3LDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LDEwMiwxNzgsMTc2LDE3NiwKKyAgICAxNzYsIDQ4LDEyOCwgMzcsIDk2LDE3OSwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywgODAsMTgwLDE3NiwxNzYsCisgICAgMTc2LCA0OCwxMjgsIDM3LDEwOCwxODEsMTc2LDE3NiwxNzYsIDQ4LDEyOCwgMzcsMTAzLDE4MiwxNzYsMTc2LAorICAgIDE3NiwgNDgsMTI4LCAzNywxMDQsMTgzLDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LDEwMCwxODQsMTc2LDE3NiwKKyAgICAxNzYsIDQ4LDEyOCwgMzcsMTAxLDE4NSwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywgODksIDUzLCAgNSwgMjUsCisgICAgMjMzLCAyNSwyNDEsIDI1LDI0OSwgMjYsICAxLCAyNiwgIDksMTc2LDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LAorICAgICA4OCwxNzcsMTc2LDE3NiwxNzYsIDQ4LDEyOCwgMzcsIDgyLDE3OCwxNzYsMTc2LDE3NiwgNDgsMTI4LCAzNywKKyAgICAgODMsMTc5LDE3NiwxNzYsMTc2LCA0OCwxMjgsIDM3LDEwNywxODAsMTc2LDE3NiwxNzYsIDQ4LDEyOCwgMzcsCisgICAgMTA2LCA5NywgIDIsIDI2LCAyMywgMjYsIDQ0LDIyNywyNDUsMjQ0LDEwMSwxMjksICAxLCA5MCwgMjYsIDMyLAorICAgIDIyOCwyMzksMjQ0LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsMTAwLDIzNywyNDAsMjMzLDIzMSwKKyAgICAyNDIsMjI5LDIyOSwxMDcsMTI4LCAgMywyMjQsIDk5LCAgNSwgMjYsIDY3LCAyNiwgOTgsIDI2LDEwNywgMjYsCisgICAgMTQ3LCAyNiwxNjksMjI1LDI0MiwyMzksMTEwLDEzMCwgIDEsIDk2LCAyNiwgNzgsIDI2LCA5MCwyMjgsMjM5LAorICAgIDI0NCwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsIDMwLDEwMiwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwKKyAgICAyNDYsMjUzLDIyOSwyMjgsMjMzLDIzNiwyMzYsIDk3LDEyOCwgIDEsIDk0LDIzMiwyNDcsIDk3LDEzMCwgIDEsCisgICAgMTQzLCAyNiwxMTcsIDI2LDEyOCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMjE2LAorICAgIDIyOCwyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywyNDMsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwKKyAgICAxMjgsICA0LDIxOCwyMzMsMjQyLCA5OSwgIDIsIDI2LDE1NSwgMjYsMTYwLDIzNiwxMDEsMTI4LCAzNiwyMDAsCisgICAgMjQ1LDIzNywyMzAsMjM2LDIyOSwxMjAsMTI4LCAgMSwgOTIsMjM5LDIzNywyMzcsMjI1LDIyNSwyMjcsMjI3LAorICAgIDIyOSwyMzgsMTE2LDEyOCwgIDIsIDI0LDIyOCwyMzksMTE2LCAgMiwgMjYsMTkwLCAyNiwxOTksMjI1LDIyNywKKyAgICAyMjcsMjI5LDIzOCwxMTYsMTI4LCAzMCwgOTYsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjksIDMwLCA5OCwgMjYsCisgICAgMjA5LDIyOCwyMzksMjQ0LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsMTA0LDEwMSwgIDIsIDI2LAorICAgIDIyNywgMjYsMjM5LDIzMiwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDc3LDI0NiwKKyAgICAyMjksMjM4LDI0MiwyMzksMjM3LDIyNSwxMTAsMTI4LCAzMywxMDIsMTA0LCAgNSwgMjcsICA2LCAyNywgMzQsCisgICAgIDI3LCA0OCwgMjcsIDU5LCAyNywgNzIsIDk3LCAgMiwgMjcsIDEyLCAyNywgMjMsMjI1LDI0MiwyMzcsMjI5LAorICAgIDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA3MSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwKKyAgICAgIDQsIDQwLDIyNywyMzIsMjI1LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgNDEsCisgICAgMjI5LDIzMywyMjcsMjM5LDI0MCwyNDQsMjMzLCA5OSwxMjgsICAzLDIyNiwyMzIsMjI1LDIyNywyNDksMjQyLAorICAgIDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxODYsMjMzLDIzNywyMjUsMjI3LDIzOSwyNDAsMjQ0LDIzMywKKyAgICAgOTksMTI4LCAgMywyMzYsMTA1LCAgMiwgMjcsIDkwLCAyNywgOTYsMjMxLDIzNywgOTcsMTI4LCAgMywxNjMsCisgICAgMjQ4LDI0MiwyMzksMjM3LDIyNSwxMTAsMTI4LCAzMywxMDEsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LAorICAgIDIyNywxMDEsMTI4LDI1NSwgNTEsMjM5LDIzMCwyNDQsMjQzLDIzMywyMzEsMjM4LDIyNywyNDksMjQyLDIzMywKKyAgICAyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgNDQsMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDExNSwyNDQsCisgICAgMjMzLDIzMSwyMzcsMjI1LDIzMSwyNDIsMjI5LDIyOSwxMDcsMTI4LCAgMywyMTgsIDg0LDE0MSwgIDAsIDg0LAorICAgICAyNywxODYsIDI3LDE5MSwgMjcsMTk3LCAyOCwgIDcsIDI4LCAzMiwgMjgsIDk2LCAyOCwxNDcsIDI4LDE3NywKKyAgICAgMjgsMTg5LCAyOCwyMDEsIDI4LDI0NiwgMjksICA2LCAyOSwgNDYsMjI1LDExNywxMjgsICAzLDE2NCwyMjYsCisgICAgMjI1LDExNCwxMjgsICAxLDEwMiwgOTksICA0LCAyNywyMDcsIDI3LDIxNCwgMjcsMjIzLCAyNywyNTAsMjI1LAorICAgIDI0MiwyMzksMTEwLDEyOCwgIDEsMTAwLDIyOSwyMjgsMjMzLDIzNiwyMzYsIDk3LDEyOCwgIDEsIDk4LDIzMywKKyAgICAyNDIsIDk5LCAgMiwgMjcsMjMxLCAyNywyMzYsMjM2LDEwMSwxMjgsIDM2LDIwMSwyNDUsMjM3LDIzMCwyMzYsCisgICAgMjI5LDI0OCwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMTEyLDIzOSwyMzcsMjM3LDIyNSwyMjUsMjI3LAorICAgIDIyNywyMjksMjM4LDExNiwxMjgsICAxLCA5OCwyMjgsMjM5LDExNiwgIDIsIDI4LCAxNSwgMjgsIDI0LDIyNSwKKyAgICAyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsMTA2LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwxMDgsCisgICAgMTAxLCAgNCwgMjgsIDQyLCAyOCwgNTMsIDI4LCA3MywgMjgsIDgyLDIyNywyNDksMjQyLDIzMywyMzYsMjM2LAorICAgIDIzMywgOTksMTI4LCAgNCwgMzQsMjI4LDIyOSwyNDMsMjI3LDIyOSwyMzgsMjI4LDIyOSwyNDIsMjI3LDI0OSwKKyAgICAyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDE3MiwyMzgsMjQyLDIzOSwyMzcsMjI1LDExMCwxMjgsCisgICAgIDMzLDEwNSwyNDQsMjQzLDIyOSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTgwLAorICAgIDEwNCwgIDMsIDI4LDEwNCwgMjgsMTEwLCAyOCwxMzYsMjI5LDI0NCwgOTcsMTI4LCAgMywxNTIsMTExLCAgMiwKKyAgICAgMjgsMTE2LCAyOCwxMjEsMjM5LDEwNywxMjgsICAxLDE3MiwyNDIsMTEwLDEyOSwgIDAsMjIyLCAyOCwxMjgsCisgICAgMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDI1NCwyNDIsMjI5LDIyOSwyNDIsMjM5LDIzNywyMjUsMTEwLAorICAgIDEyOCwgMzMsIDk4LDEwNSwgIDIsIDI4LDE1MywgMjgsMTY0LDIzNiwyMjgsMjI5LDI0MywyMzcsMjI1LDIzNiwKKyAgICAxMDgsMTI4LDI0NiwyNTQsMjQ3LDIzOCwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsCisgICAgIDc5LDIzNiwyMzMsMjM4LDIyOSwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMTEwLDIzNywyMzksMjM4LAorICAgIDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDUyLDExMSwgIDIsIDI4LDIwNywgMjgsMjE4LDIyNSwKKyAgICAyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwgNTcsMjM4LDEwMSwgIDMsIDI4LDIyNywgMjgsCisgICAgMjM0LCAyOCwyNDAsMjMwLDIzMywyNDYsMTAxLDEyOCwgIDEsMTg4LDI0MywyMzMsMTIwLDEyOCwgIDEsMTMyLAorICAgIDI0NCwyNDcsMTExLDEyOCwgIDEsMTY3LDI0MiwyMjksMjQ0LDI0MiwyMzksMjMwLDIzNiwyMjksMjQ4LDIzMiwKKyAgICAyMzksMjM5LDEwNywxMjgsICAxLDE3NCwxMTUsICAzLCAyOSwgMTQsIDI5LCAyNiwgMjksIDM5LDIyOSwyMjcsCisgICAgMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDM4LDIzMiwyMjksMjI3LDI0OSwyNDIsMjMzLAorICAgIDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAxMSwyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywxMTYsMTE5LCAgMiwKKyAgICAgMjksIDUyLCAyOSwgNjQsMjI5LDIzNiwyNDYsMjI5LDI0MiwyMzksMjM3LDIyNSwxMTAsMTI4LCAzMywxMDcsCisgICAgMjM5LDI0MiwyMzksMjM3LDIyNSwxMTAsMTI4LCAzMywgOTcsIDg1LDE0MiwgIDAsIDg1LCAyOSwxMDUsIDI5LAorICAgIDEyMywgMjksMTMxLCAyOSwxOTgsIDMwLCA2OSwgMzAsIDg3LCAzMCwxOTgsIDMwLDIxNCwgMzAsMjI2LCAzMSwKKyAgICAgMjEsIDMxLCAzMCwgMzEsMTQyLCAzMSwxNDksIDMxLDIxOSwyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOSwgIDAsCisgICAgMjE4LCAyOSwxMTUsMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDI1MCwyMjYsMjQyLDIyOSwyNDYsMTAxLAorICAgIDEyOCwgIDEsMTA4LCA5OSwgIDMsIDI5LDEzOSwgMjksMTQ2LCAyOSwxODgsMjI1LDI0MiwyMzksMTEwLDEyOCwKKyAgICAgIDEsMjExLDIzMywyNDIsIDk5LCAgMiwgMjksMTU0LCAyOSwxNTksMjM2LDEwMSwxMjgsIDM2LDIwMiwyNDUsCisgICAgMjM3LDIzMCwyMzYsMjI5LDEyMCwxMzAsICAwLDIxOSwgMjksMTcyLCAyOSwxODAsMjI2LDIyOSwyMzYsMjM5LAorICAgIDExOSwxMjgsIDMwLDExOCwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMjUxLDI0OSwyNDIsMjMzLDIzNiwKKyAgICAyMzYsMjMzLCA5OSwxMjgsICA0LCAzNSwxMDAsICAzLCAyOSwyMDYsIDI5LDIyOSwgMzAsIDU5LDIyNiwxMDgsCisgICAgICAyLCAyOSwyMTMsIDI5LDIyMSwyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOCwgIDEsMTEyLDIzMSwyNDIsMjI1LAorICAgIDI0NiwxMDEsMTI4LCAgMiwgMjAsMjMzLDIyOSwyNDIsMjI5LDI0MywyMzMsMTE1LDEzNCwgIDAsMjIwLCAyOSwKKyAgICAyNTEsIDMwLCAgMywgMzAsIDExLCAzMCwgMzQsIDMwLCA0MiwgMzAsIDUxLDIyNSwyMjcsMjQ1LDI0NCwxMDEsCisgICAgMTI4LCAgMSwyMTUsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDExNCwgOTksICAyLCAzMCwgMTcsIDMwLAorICAgICAyNCwyMjUsMjQyLDIzOSwxMTAsMTI4LCAgMSwyMTcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwKKyAgICAgIDQsMjQwLDIzMSwyNDIsMjI1LDI0NiwxMDEsMTI4LCAgMSwyMTksMjM3LDIyNSwyMjcsMjQyLDIzOSwxMTAsCisgICAgMTI4LCAgMSwyMTMsMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDI1MiwyMzksMjQ0LDIyNiwyMjksMjM2LAorICAgIDIzOSwxMTksMTI4LCAzMCwyMjgsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjksICAwLDIxNywgMzAsIDc5LDI0MywKKyAgICAyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywyNDksMTA0LCAgMiwgMzAsIDkzLCAzMCwxNzEsMTExLCAgMiwgMzAsCisgICAgIDk5LCAzMCwxMDksMjM5LDIzNSwyMjUsMjI2LDIzOSwyNDYsMTAxLDEyOCwgMzAsMjMwLDI0MiwxMTAsMTMzLAorICAgICAgMSwxNzUsIDMwLDEyNCwgMzAsMTMyLCAzMCwxNDMsIDMwLDE1MSwgMzAsMTYzLDIyNSwyMjcsMjQ1LDI0NCwKKyAgICAxMDEsMTI4LCAzMCwyMzIsMjI4LDIzOSwyNDQsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDI0MCwyMzEsCisgICAgMjQyLDIyNSwyNDYsMTAxLDEyOCwgMzAsMjM0LDIzMiwyMzksMjM5LDIzNSwyMjUsMjI2LDIzOSwyNDYsMTAxLAorICAgIDEyOCwgMzAsMjM2LDI0NCwyMzMsMjM2LDIyOCwxMDEsMTI4LCAzMCwyMzgsMjQ1LDIzOCwyMzEsMjI1LDI0MiwKKyAgICAyNDUsMjM3LDIzNiwyMjUsMjQ1LDExNiwxMjksICAxLDExMiwgMzAsMTg3LDIyNywyNDksMjQyLDIzMywyMzYsCisgICAgMjM2LDIzMywgOTksMTI4LCAgNCwyNDIsMjMzLDIzOCwyNDYsMjI5LDI0MiwyNDQsMjI5LDIyOCwyMjYsMjQyLAorICAgIDIyOSwyNDYsMTAxLDEyOCwgIDIsIDIyLDIzNSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwKKyAgICAgIDQsMTIwLDEwOSwgIDIsIDMwLDIzMiwgMzEsIDEwLDIyNSwyMjcsMjQyLDIzOSwxMTAsMTMwLCAgMSwxMDYsCisgICAgIDMwLDI0NCwgMzAsMjU1LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwyMzgsMjI4LAorICAgIDIzMywyMjksMjQyLDIyOSwyNDMsMjMzLDExNSwxMjgsIDMwLDEyMiwyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwKKyAgICAyMjcsMTAxLDEyOCwyNTUsIDUzLDIzOSwyMzEsMjM5LDIzOCwyMjksMTA3LDEyOCwgIDEsMTE0LDI0MCwyNDMsCisgICAgMjMzLDIzNiwyMzksMTEwLDEzMywgIDMsMTY1LCAzMSwgNDksIDMxLCA1MywgMzEsIDkwLCAzMSwxMjEsIDMxLAorICAgIDEzNCwgNDksMTI4LCAgMywyMTAsIDk3LCAgMiwgMzEsIDU5LCAzMSwgODEsMjI3LDI0NSwyNDQsMjI5LDIzMiwKKyAgICAyMzksMjM5LDIzNSwyNDMsMjQ5LDIzNywyMjYsMjM5LDIzNiwyMzEsMjQyLDIyOSwyMjksMTA3LDEyOCwgIDMsCisgICAgMjExLDIzMCwyNDIsMjMzLDIyNywyMjUsMTEwLDEyOCwgIDEsMTc3LDIyOCwyMzMsMjI5LDI0MiwyMjksMjQzLAorICAgIDIzMywxMTUsMTI5LCAgMywxNzEsIDMxLDEwMywyMzIsMjM5LDIzOSwyMzUsMjQzLDI0OSwyMzcsMjI2LDIzOSwKKyAgICAyMzYsMjMxLDI0MiwyMjksMjI5LDEwNywxMjgsICAzLDIxMiwyMzIsMjM5LDIzOSwyMzUsMjQzLDI0OSwyMzcsCisgICAgMjI2LDIzOSwxMDgsMTI4LCAgMywyMTAsMjQ0LDIzOSwyMzgsMjM5LDExNSwxMjgsICAzLDE0MiwyNDIsMjMzLAorICAgIDIzOCwxMDMsMTI4LCAgMSwxMTAsMTE1LCAgMywgMzEsMTU3LCAzMSwxNzIsIDMxLDE3OSwyMzIsMjM5LDI0MiwKKyAgICAyNDQsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAxNCwyMzcsMjI1LDIzNiwxMDgsCisgICAgMTI4LDI0NywxMTcsMjQ0LDI0MiwyMjUsMjMzLDIzMSwyMzIsMTE2LCAgMiwgMzEsMTkxLCAzMSwyMDIsMjI3LAorICAgIDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDE3NCwyNDMsMjQ0LDI0MiwyMzksMjM1LDIyOSwKKyAgICAyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTc2LDI0NCwyMzMsMjM2LDIyOCwxMDEsCisgICAgMTMwLCAgMSwxMDQsIDMxLDIzMSwgMzEsMjM5LDIyNSwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAzMCwxMjAsMjI2LAorICAgIDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDExNiwgODYsMTM2LCAgMCwgODYsIDMyLCAxMSwgMzIsIDIwLCAzMiwKKyAgICAgMzEsIDMyLCA2MCwgMzIsIDY3LCAzMiwgNzksIDMyLCA5MSwgMzIsIDk5LDIyNywyMzMsMjQyLDIyNywyMzYsCisgICAgMTAxLDEyOCwgMzYsMjAzLDIyOCwyMzksMjQ0LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwxMjYsMTAxLAorICAgICAgMiwgMzIsIDM3LCAzMiwgNDgsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCAxOCwKKyAgICAyNDcsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA3OCwyMzIsMjM5LDIzOSwxMDcsCisgICAgMTI4LCAgMSwxNzgsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgNTQsMjM5LAorICAgIDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwgNzIsMjQzLDIzNywyMjUsMjM2LDEwOCwKKyAgICAxMjgsMjQ3LDExOCwyNDQsMjMzLDIzNiwyMjgsMTAxLDEyOCwgMzAsMTI0LCA4NywxMzQsICAwLCA4NywgMzIsCisgICAgMTIzLCAzMiwxMzEsIDMyLDE1NCwgMzIsMTk0LCAzMiwyMDIsIDMyLDIxNCwyMjUsMjI3LDI0NSwyNDQsMTAxLAorICAgIDEyOCwgMzAsMTMwLDIyNywyMzMsMjQyLCA5OSwgIDIsIDMyLDE0MCwgMzIsMTQ1LDIzNiwxMDEsMTI4LCAzNiwKKyAgICAyMDQsMjQ1LDIzNywyMzAsMjM2LDIyOSwxMjAsMTI4LCAgMSwxMTYsMTAwLCAgMiwgMzIsMTYwLCAzMiwxNzAsCisgICAgMjMzLDIyOSwyNDIsMjI5LDI0MywyMzMsMTE1LDEyOCwgMzAsMTMyLDIzOSwxMTYsICAyLCAzMiwxNzcsIDMyLAorICAgIDE4NiwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsIDMwLDEzNCwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwKKyAgICAgMzAsMTM2LDIzMSwyNDIsMjI1LDI0NiwxMDEsMTI4LCAzMCwxMjgsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsCisgICAgMjI1LDIyNywxMDEsMTI4LDI1NSwgNTUsMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDExOSwgODgsMTM0LAorICAgICAgMCwgODgsIDMyLDIzOCwgMzIsMjQ3LCAzMywgMTgsIDMzLCAzMSwgMzMsIDM1LCAzMywgNDcsMjI3LDIzMywKKyAgICAyNDIsMjI3LDIzNiwxMDEsMTI4LCAzNiwyMDUsMTAwLCAgMiwgMzIsMjUzLCAzMywgIDcsMjMzLDIyOSwyNDIsCisgICAgMjI5LDI0MywyMzMsMTE1LDEyOCwgMzAsMTQwLDIzOSwyNDQsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LAorICAgICAzMCwxMzgsMjI5LDIzMiwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDYxLDEwNSwKKyAgICAxMjgsICAzLDE1OCwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCA1NiwyNDMsCisgICAgMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMTIwLCA4OSwxMzksICAwLCA4OSwgMzMsIDgxLCAzMywxMTYsIDMzLAorICAgIDEzOSwgMzMsMTg5LCAzMywyMjgsIDMzLDIzNiwgMzMsMjUzLCAzNCwgNDAsIDM0LCA1MiwgMzQsIDYwLCAzNCwKKyAgICAgNjgsIDk3LCAgMiwgMzMsIDg3LCAzMywxMDQsMjI3LDI0NSwyNDQsMTAxLDEyOSwgIDAsMjIxLCAzMywgOTYsCisgICAgMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjQ3LDI1MywyNDQsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLAorICAgICA5OSwxMjgsICA0LCA5OCwyMjcsMjMzLDI0MiwgOTksICAyLCAzMywxMjUsIDMzLDEzMCwyMzYsMTAxLDEyOCwKKyAgICAgMzYsMjA2LDI0NSwyMzcsMjMwLDIzNiwyMjksMTIwLDEyOCwgIDEsMTE4LDEwMCwgIDIsIDMzLDE0NSwgMzMsCisgICAgMTY1LDIzMywyMjksMjQyLDIyOSwyNDMsMjMzLDExNSwxMjksICAxLDEyMCwgMzMsMTU3LDI0MywyMzcsMjI1LAorICAgIDIzNiwxMDgsMTI4LDI0NywyNTUsMjM5LDExNiwgIDIsIDMzLDE3MiwgMzMsMTgxLDIyNSwyMjcsMjI3LDIyOSwKKyAgICAyMzgsMTE2LDEyOCwgMzAsMTQyLDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwyNDQsMjI5LDExNCwgIDIsCisgICAgIDMzLDE5NiwgMzMsMjA4LDIzMywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDQzLAorICAgIDI0NSwyMjgsMjMzLDIyOSwyNDIsMjI5LDI0MywyMzMsMjQzLDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywKKyAgICAgOTksMTI4LCAgNCwyNDgsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsIDMwLDI0MiwyMzIsMjM5LDIzOSwxMDcsCisgICAgMTI5LCAgMSwxNzksIDMzLDI0NSwyMjUsMjI2LDIzOSwyNDYsMTAxLDEyOCwgMzAsMjQ2LDEwNSwgIDMsIDM0LAorICAgICAgNSwgMzQsIDE2LCAzNCwgMjcsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA2OSwKKyAgICAyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsICA3LDI0NywyMzgsMjI1LDI0MiwyMzcsCisgICAgMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA4MiwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LAorICAgIDEwMSwxMjgsMjU1LCA1NywyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMTIxLDI0NCwyMzMsMjM2LDIyOCwKKyAgICAxMDEsMTI4LCAzMCwyNDgsMjQ1LDExNSwgIDIsIDM0LCA3NSwgMzQsMTEzLDIyNiwyMzMsMTAzLCAgMiwgMzQsCisgICAgIDgzLCAzNCwgOTQsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDEwNiwyMzMsMjM5LAorICAgIDI0NCwyMzMsMjMwLDIzMywyMjksMjI4LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwKKyAgICAxMDgsMjM2LDIzMywyNDQsMjQ0LDIzNiwxMDEsICAyLCAzNCwxMjQsIDM0LDEzNSwyMjcsMjQ5LDI0MiwyMzMsCisgICAgMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTAyLDIzMywyMzksMjQ0LDIzMywyMzAsMjMzLDIyOSwyMjgsMjI3LAorICAgIDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDEwNCwgOTAsMTM2LCAgMCwgOTAsIDM0LDE3NCwKKyAgICAgMzQsMTk4LCAzNCwyNDMsIDM1LCAxNCwgMzUsIDgxLCAzNSwxNzMsIDM1LDE4NSwgMzUsMTk3LCA5NywgIDIsCisgICAgIDM0LDE4MCwgMzQsMTkxLDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwgNTQsMjI3LAorICAgIDI0NSwyNDQsMTAxLDEyOCwgIDEsMTIxLCA5OSwgIDIsIDM0LDIwNCwgMzQsMjIxLDIyNSwyNDIsMjM5LDExMCwKKyAgICAxMjksICAxLDEyNSwgMzQsMjEzLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NiwyNTUsMjMzLDI0MiwgOTksCisgICAgICAyLCAzNCwyMjksIDM0LDIzNCwyMzYsMTAxLDEyOCwgMzYsMjA3LDI0NSwyMzcsMjMwLDIzNiwyMjksMTIwLAorICAgIDEyOCwgMzAsMTQ0LDIyOCwyMzksMTE2LDEzMCwgIDEsMTIzLCAzNCwyNTMsIDM1LCAgNiwyMjUsMjI3LDIyNywKKyAgICAyMjksMjM4LDExNiwxMjgsICAxLDEyMywyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMTQ2LDEwMSwgIDMsCisgICAgIDM1LCAyMiwgMzUsIDMzLCAzNSwgNzYsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LAorICAgICAyMywxMDAsICAyLCAzNSwgMzksIDM1LCA1OCwyMjksMjQzLDIyNywyMjksMjM4LDIyOCwyMjksMjQyLDIyNywKKyAgICAyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNTIsMjMzLDIyOSwyNDIsMjI5LDI0MywyMzMsCisgICAgMjQzLDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwyMjIsMjQ0LCA5NywxMjgsICAzLAorICAgIDE1MCwyMzIsMTAxLCAgNCwgMzUsIDkyLCAzNSwxMDMsIDM1LDExOSwgMzUsMTMwLDIyNSwyNDIsMjM3LDIyOSwKKyAgICAyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwgNTgsMjI2LDI0MiwyMjksMjQ2LDIyOSwyMjcsMjQ5LDI0MiwyMzMsCisgICAgMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTkzLDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LAorICAgICAgNCwgMjIsMTAwLCAgMiwgMzUsMTM2LCAzNSwxNTUsMjI5LDI0MywyMjcsMjI5LDIzOCwyMjgsMjI5LDI0MiwKKyAgICAyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTUwLDIzMywyMjksMjQyLDIyOSwyNDMsCisgICAgMjMzLDI0MywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMjIwLDIzNiwyMzMsMjM4LAorICAgIDIyOSwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMTQ4LDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwKKyAgICAyMjcsMTAxLDEyOCwyNTUsIDU4LDExNSwgIDIsIDM1LDIwMywgMzUsMjEwLDIzNywyMjUsMjM2LDEwOCwxMjgsCisgICAgMjQ3LDEyMiwyNDQsMjQyLDIzOSwyMzUsMTAxLDEyOCwgIDEsMTgxLCA5NywxNTgsICAwLCA5NywgMzYsIDI2LAorICAgICAzOCwxNTQsIDM5LCAgNCwgMzksIDY4LCAzOSwxMzIsIDM5LDE5NiwgNDAsICA0LCA0MCwgNjgsIDQwLDEyNiwKKyAgICAgNDAsMTkwLCA0MSwgNzAsIDQxLDIxNywgNDIsMTM3LCA0MiwyMzcsIDQzLCAxNywgNDksMTkyLCA0OSwyMjksCisgICAgIDUwLCAgMCwgNTAsMjI1LCA1MSwgIDcsIDUyLCA5NiwgNTIsMTY4LCA1MywxMjMsIDUzLDEzMiwgNTQsICA1LAorICAgICA1NiwgMTMsIDU3LCAgMywgNTcsIDUwLCA1NywyMDEsIDU3LDIxNSwgNDksMTM4LCAzOSwgIDEsIDM2LCA1MCwKKyAgICAgMzYsMTE0LCAzNiwxNTQsIDM2LDIxOCwgMzcsIDI2LCAzNywgOTAsIDM3LDE1NCwgMzcsMjE4LCAzOCwgMjYsCisgICAgIDM4LCA5MCwgNDgsMTM4LCAzOSwgMzMsIDM2LCA3NCwgMzYsIDc4LCAzNiwgODIsIDM2LCA4NiwgMzYsIDkwLAorICAgICAzNiwgOTQsIDM2LCA5OCwgMzYsMTAyLCAzNiwxMDYsIDM2LDExMCwgNDgsMTI4LCAzOSwgOTQsIDQ5LDEyOCwKKyAgICAgMzksIDk3LCA1MCwxMjgsIDM5LCA5OCwgNTEsMTI4LCAzOSwgOTksIDUyLDEyOCwgMzksMTAwLCA1MywxMjgsCisgICAgIDM5LCAxNiwgNTQsMTI4LCAzOSwxMDEsIDU1LDEyOCwgMzksMTAyLCA1NiwxMjgsIDM5LDEwMywgNTcsMTI4LAorICAgICAzOCwgOTYsIDQ5LDEzNCwgMzgsIDI3LCAzNiwxMzAsIDM2LDEzNCwgMzYsMTM4LCAzNiwxNDIsIDM2LDE0NiwKKyAgICAgMzYsMTUwLCA0OCwxMjgsIDM4LDEwMSwgNDksMTI4LCAzOCwxMDIsIDUwLDEyOCwgMzgsIDk5LCA1NSwxMjgsCisgICAgIDM5LCAgOSwgNTYsMTI4LCAzOSwgIDgsIDU3LDEyOCwgMzksICA3LCA1MCwxMzgsIDM4LCAzMCwgMzYsMTc4LAorICAgICAzNiwxODIsIDM2LDE4NiwgMzYsMTkwLCAzNiwxOTQsIDM2LDE5OCwgMzYsMjAyLCAzNiwyMDYsIDM2LDIxMCwKKyAgICAgMzYsMjE0LCA0OCwxMjgsIDM2LCA5NiwgNDksMTI4LCAzNiwgOTcsIDUwLDEyOCwgMzYsIDk4LCA1MSwxMjgsCisgICAgIDM2LCA5OSwgNTIsMTI4LCAzNiwxMDAsIDUzLDEyOCwgMzYsMTAxLCA1NCwxMjgsIDM2LDEwMiwgNTUsMTI4LAorICAgICAzNiwxMDMsIDU2LDEyOCwgMzYsMTA0LCA1NywxMjgsIDM2LDEwNSwgNTEsMTM4LCAzOSwgMTIsIDM2LDI0MiwKKyAgICAgMzYsMjQ2LCAzNiwyNTAsIDM2LDI1NCwgMzcsICAyLCAzNywgIDYsIDM3LCAxMCwgMzcsIDE0LCAzNywgMTgsCisgICAgIDM3LCAyMiwgNDgsMTI4LCAzOSwxMTgsIDQ5LDEyOCwgMzksMTE5LCA1MCwxMjgsIDM5LDEyMCwgNTEsMTI4LAorICAgICAzOSwxMjEsIDUyLDEyOCwgMzksMTIyLCA1MywxMjgsIDM5LDEyMywgNTQsMTI4LCAzOSwxMjQsIDU1LDEyOCwKKyAgICAgMzksMTI1LCA1NiwxMjgsIDM5LDEyNiwgNTcsMTI4LCAzOSwxMjcsIDUyLDEzOCwgMzksIDEzLCAzNywgNTAsCisgICAgIDM3LCA1NCwgMzcsIDU4LCAzNywgNjIsIDM3LCA2NiwgMzcsIDcwLCAzNywgNzQsIDM3LCA3OCwgMzcsIDgyLAorICAgICAzNywgODYsIDQ4LDEyOCwgMzksMTI4LCA0OSwxMjgsIDM5LDEyOSwgNTAsMTI4LCAzOSwxMzAsIDUxLDEyOCwKKyAgICAgMzksMTMxLCA1MiwxMjgsIDM5LDEzMiwgNTMsMTI4LCAzOSwxMzMsIDU0LDEyOCwgMzksMTM0LCA1NSwxMjgsCisgICAgIDM5LDEzNSwgNTYsMTI4LCAzOSwxMzYsIDU3LDEyOCwgMzksMTM3LCA1MywxMzgsIDM5LCAxNCwgMzcsMTE0LAorICAgICAzNywxMTgsIDM3LDEyMiwgMzcsMTI2LCAzNywxMzAsIDM3LDEzNCwgMzcsMTM4LCAzNywxNDIsIDM3LDE0NiwKKyAgICAgMzcsMTUwLCA0OCwxMjgsIDM5LDEzOCwgNDksMTI4LCAzOSwxMzksIDUwLDEyOCwgMzksMTQwLCA1MSwxMjgsCisgICAgIDM5LDE0MSwgNTIsMTI4LCAzOSwxNDIsIDUzLDEyOCwgMzksMTQzLCA1NCwxMjgsIDM5LDE0NCwgNTUsMTI4LAorICAgICAzOSwxNDUsIDU2LDEyOCwgMzksMTQ2LCA1NywxMjgsIDM5LDE0NywgNTQsMTM4LCAzOSwgMTUsIDM3LDE3OCwKKyAgICAgMzcsMTgyLCAzNywxODYsIDM3LDE5MCwgMzcsMTk0LCAzNywxOTgsIDM3LDIwMiwgMzcsMjA2LCAzNywyMTAsCisgICAgIDM3LDIxNCwgNDgsMTI4LCAzOSwxNDgsIDQ5LDEyOCwgMzMsMTQ2LCA1MCwxMjgsIDM5LDE2MywgNTEsMTI4LAorICAgICAzMywxNDgsIDUyLDEyOCwgMzMsMTQ5LCA1MywxMjgsIDM5LDE1MywgNTQsMTI4LCAzOSwxNTUsIDU1LDEyOCwKKyAgICAgMzksMTU2LCA1NiwxMjgsIDM5LDE1NywgNTcsMTI4LCAzOSwxNTgsIDU1LDEzOCwgMzksIDE3LCAzNywyNDIsCisgICAgIDM3LDI0NiwgMzcsMjUwLCAzNywyNTQsIDM4LCAgMiwgMzgsICA2LCAzOCwgMTAsIDM4LCAxNCwgMzgsIDE4LAorICAgICAzOCwgMjIsIDQ4LDEyOCwgMzksMTU5LCA0OSwxMjgsIDM5LDE2MCwgNTAsMTI4LCAzOSwxNjEsIDUxLDEyOCwKKyAgICAgMzksMTYyLCA1MiwxMjgsIDM5LDE2NCwgNTMsMTI4LCAzOSwxNjUsIDU0LDEyOCwgMzksMTY2LCA1NSwxMjgsCisgICAgIDM5LDE2NywgNTYsMTI4LCAzOSwxNjgsIDU3LDEyOCwgMzksMTY5LCA1NiwxMzgsIDM5LCAxOCwgMzgsIDUwLAorICAgICAzOCwgNTQsIDM4LCA1OCwgMzgsIDYyLCAzOCwgNjYsIDM4LCA3MCwgMzgsIDc0LCAzOCwgNzgsIDM4LCA4MiwKKyAgICAgMzgsIDg2LCA0OCwxMjgsIDM5LDE3MSwgNDksMTI4LCAzOSwxNzMsIDUwLDEyOCwgMzksMTc1LCA1MSwxMjgsCisgICAgIDM5LDE3OCwgNTIsMTI4LCAzOSwxNzksIDUzLDEyOCwgMzksMTgxLCA1NCwxMjgsIDM5LDE4NCwgNTUsMTI4LAorICAgICAzOSwxODYsIDU2LDEyOCwgMzksMTg3LCA1NywxMjgsIDM5LDE4OCwgNTcsMTM4LCAzOSwgMTksIDM4LDExNCwKKyAgICAgMzgsMTE4LCAzOCwxMjIsIDM4LDEyNiwgMzgsMTMwLCAzOCwxMzQsIDM4LDEzOCwgMzgsMTQyLCAzOCwxNDYsCisgICAgIDM4LDE1MCwgNDgsMTI4LCAzOSwxODksIDQ5LDEyOCwgMzksMTkwLCA1MCwxMjgsIDM5LDE1NCwgNTEsMTI4LAorICAgICAzOSwxNzAsIDUyLDEyOCwgMzksMTgyLCA1MywxMjgsIDM5LDE4NSwgNTQsMTI4LCAzOSwxNTIsIDU1LDEyOCwKKyAgICAgMzksMTgwLCA1NiwxMjgsIDM5LDE4MywgNTcsMTI4LCAzOSwxNzIsIDUwLDEzOCwgMzksICAyLCAzOCwxNzgsCisgICAgIDM4LDIyNCwgMzgsMjI4LCAzOCwyMzIsIDM4LDIzNiwgMzgsMjQwLCAzOCwyNDQsIDM4LDI0OCwgMzgsMjUyLAorICAgICAzOSwgIDAsIDQ4LDEzNSwgMzksIDIwLCAzOCwxOTYsIDM4LDIwMCwgMzgsMjA0LCAzOCwyMDgsIDM4LDIxMiwKKyAgICAgMzgsMjE2LCAzOCwyMjAsIDQ4LDEyOCwgMzksMTc0LCA0OSwxMjgsIDM5LDE3NywgNTAsMTI4LCAzOSwgIDMsCisgICAgIDUxLDEyOCwgMzksIDgwLCA1MiwxMjgsIDM5LCA4MiwgNTMsMTI4LCAzOSwxMTAsIDU0LDEyOCwgMzksMTEyLAorICAgICA0OSwxMjgsIDM5LCAyMSwgNTAsMTI4LCAzOSwgMjIsIDUxLDEyOCwgMzksIDIzLCA1MiwxMjgsIDM5LCAyNCwKKyAgICAgNTMsMTI4LCAzOSwgMjUsIDU0LDEyOCwgMzksIDI2LCA1NSwxMjgsIDM5LCAyNywgNTYsMTI4LCAzOSwgMjgsCisgICAgIDU3LDEyOCwgMzksIDM0LCA1MSwxMzgsIDM5LCAgNCwgMzksIDI4LCAzOSwgMzIsIDM5LCAzNiwgMzksIDQwLAorICAgICAzOSwgNDQsIDM5LCA0OCwgMzksIDUyLCAzOSwgNTYsIDM5LCA2MCwgMzksIDY0LCA0OCwxMjgsIDM5LCAzNSwKKyAgICAgNDksMTI4LCAzOSwgMzYsIDUwLDEyOCwgMzksIDM3LCA1MSwxMjgsIDM5LCAzOCwgNTIsMTI4LCAzOSwgMzksCisgICAgIDUzLDEyOCwgMzgsICA1LCA1NCwxMjgsIDM5LCA0MSwgNTUsMTI4LCAzOSwgNDIsIDU2LDEyOCwgMzksIDQzLAorICAgICA1NywxMjgsIDM5LCA0NCwgNTIsMTM4LCAzOCwgMTQsIDM5LCA5MiwgMzksIDk2LCAzOSwxMDAsIDM5LDEwNCwKKyAgICAgMzksMTA4LCAzOSwxMTIsIDM5LDExNiwgMzksMTIwLCAzOSwxMjQsIDM5LDEyOCwgNDgsMTI4LCAzOSwgNDUsCisgICAgIDQ5LDEyOCwgMzksIDQ2LCA1MCwxMjgsIDM5LCA0NywgNTEsMTI4LCAzOSwgNDgsIDUyLDEyOCwgMzksIDQ5LAorICAgICA1MywxMjgsIDM5LCA1MCwgNTQsMTI4LCAzOSwgNTEsIDU1LDEyOCwgMzksIDUyLCA1NiwxMjgsIDM5LCA1MywKKyAgICAgNTcsMTI4LCAzOSwgNTQsIDUzLDEzOCwgMzksICA2LCAzOSwxNTYsIDM5LDE2MCwgMzksMTY0LCAzOSwxNjgsCisgICAgIDM5LDE3MiwgMzksMTc2LCAzOSwxODAsIDM5LDE4NCwgMzksMTg4LCAzOSwxOTIsIDQ4LDEyOCwgMzksIDU1LAorICAgICA0OSwxMjgsIDM5LCA1NiwgNTAsMTI4LCAzOSwgNTcsIDUxLDEyOCwgMzksIDU4LCA1MiwxMjgsIDM5LCA1OSwKKyAgICAgNTMsMTI4LCAzOSwgNjAsIDU0LDEyOCwgMzksIDYxLCA1NSwxMjgsIDM5LCA2MiwgNTYsMTI4LCAzOSwgNjMsCisgICAgIDU3LDEyOCwgMzksIDY0LCA1NCwxMzgsIDM5LCAyOSwgMzksMjIwLCAzOSwyMjQsIDM5LDIyOCwgMzksMjMyLAorICAgICAzOSwyMzYsIDM5LDI0MCwgMzksMjQ0LCAzOSwyNDgsIDM5LDI1MiwgNDAsICAwLCA0OCwxMjgsIDM5LCA2NSwKKyAgICAgNDksMTI4LCAzOSwgNjYsIDUwLDEyOCwgMzksIDY3LCA1MSwxMjgsIDM5LCA2OCwgNTIsMTI4LCAzOSwgNjksCisgICAgIDUzLDEyOCwgMzksIDcwLCA1NCwxMjgsIDM5LCA3MSwgNTUsMTI4LCAzOSwgNzIsIDU2LDEyOCwgMzksIDczLAorICAgICA1NywxMjgsIDM5LCA3NCwgNTUsMTM4LCAzOSwgMzAsIDQwLCAyOCwgNDAsIDMyLCA0MCwgMzYsIDQwLCA0MCwKKyAgICAgNDAsIDQ0LCA0MCwgNDgsIDQwLCA1MiwgNDAsIDU2LCA0MCwgNjAsIDQwLCA2NCwgNDgsMTI4LCAzOSwgNzUsCisgICAgIDQ5LDEyOCwgMzcsMjA3LCA1MCwxMjgsIDM5LCA3NywgNTEsMTI4LCAzNywxNjAsIDUyLDEyOCwgMzksIDc5LAorICAgICA1MywxMjgsIDM5LCA4MSwgNTQsMTI4LCAzNywxNzgsIDU1LDEyOCwgMzcsMTg4LCA1NiwxMjgsIDM3LDE5OCwKKyAgICAgNTcsMTI4LCAzOSwgODYsIDU2LDEzNywgMzksIDMxLCA0MCwgOTAsIDQwLCA5NCwgNDAsIDk4LCA0MCwxMDIsCisgICAgIDQwLDEwNiwgNDAsMTEwLCA0MCwxMTQsIDQwLDExOCwgNDAsMTIyLCA0OSwxMjgsIDM3LDIxNSwgNTAsMTI4LAorICAgICAzOSwgODgsIDUxLDEyOCwgMzksIDg5LCA1MiwxMjgsIDM5LCA5MCwgNTMsMTI4LCAzOSwxMTEsIDU0LDEyOCwKKyAgICAgMzksMTEzLCA1NSwxMjgsIDM5LDExNCwgNTYsMTI4LCAzOSwxMTUsIDU3LDEyOCwgMzksMTA0LCA1NywxMzgsCisgICAgIDM5LCAzMiwgNDAsMTUwLCA0MCwxNTQsIDQwLDE1OCwgNDAsMTYyLCA0MCwxNjYsIDQwLDE3MCwgNDAsMTc0LAorICAgICA0MCwxNzgsIDQwLDE4MiwgNDAsMTg2LCA0OCwxMjgsIDM5LDEwNSwgNDksMTI4LCAzOSwxMDgsIDUwLDEyOCwKKyAgICAgMzksMTA5LCA1MSwxMjgsIDM5LDEwNiwgNTIsMTI4LCAzOSwxMDcsIDUzLDEyOCwgMzksMTE2LCA1NCwxMjgsCisgICAgIDM5LDExNywgNTUsMTI4LCAzOSwgOTEsIDU2LDEyOCwgMzksIDkyLCA1NywxMjgsIDM5LCA5MywgOTcsICA3LAorICAgICA0MCwyMDYsIDQwLDIxNiwgNDAsMjIzLCA0MCwyMzAsIDQwLDI1NSwgNDEsIDE1LCA0MSwgMjYsMjI2LDIyOSwKKyAgICAyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTM0LDIyNywyNDUsMjQ0LDEwMSwxMjgsICAwLDIyNSwyMjgsCisgICAgMjI5LDI0NiwgOTcsMTI4LCAgOSwgIDYsMjMxLDExNywgIDIsIDQwLDIzNywgNDAsMjQ2LDIzNCwyMjUsMjQyLAorICAgIDIyNSwyNDQsMTA1LDEyOCwgMTAsMTM0LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsICA2LDIzNywKKyAgICAyMjUsMjQ0LDI0MiwyMjUsMjMxLDI0NSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCA2MiwyNDIsCisgICAgMjQ1LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsICAzLDI0NiwyMzksMjQ3LDIyOSwyMzYsMjQzLAorICAgIDIzMywyMzEsMTEwLCAgMywgNDEsIDQyLCA0MSwgNTIsIDQxLCA1OSwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwKKyAgICAxMDUsMTI4LCAgOSwxOTAsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDYyLDIzMSwyNDUsMjM0LDIyNSwyNDIsCisgICAgMjI1LDI0NCwxMDUsMTI4LCAxMCwxOTAsIDk4LCAgNCwgNDEsIDgwLCA0MSwxMjEsIDQxLDEzMCwgNDEsMTQwLAorICAgIDIyNiwyNDIsMjI5LDI0NiwyMzMsMjI1LDI0NCwyMzMsMjM5LDExMCwgIDIsIDQxLCA5NSwgNDEsMTEwLDIzNywKKyAgICAyMjUsMjQyLDIzNSwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDk1LDI0MywyMzMsCisgICAgMjMxLDIzOCwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwxMTIsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LAorICAgICAgOSwxMzMsMjM5LDI0MCwyMzksMjM3LDIzOSwyMzAsMTExLDEyOCwgNDksIDI2LDI0MiwyMjksMjQ2LDEwMSwKKyAgICAxMzQsICAxLCAgMywgNDEsMTU5LCA0MSwxNjcsIDQxLDE3OCwgNDEsMTg5LCA0MSwxOTcsIDQxLDIwOSwyMjUsCisgICAgMjI3LDI0NSwyNDQsMTAxLDEyOCwgMzAsMTc1LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LAorICAgICAgNCwyMDksMjI4LDIzOSwyNDQsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDE4MywyMzEsMjQyLDIyNSwKKyAgICAyNDYsMTAxLDEyOCwgMzAsMTc3LDIzMiwyMzksMjM5LDIzNSwyMjUsMjI2LDIzOSwyNDYsMTAxLDEyOCwgMzAsCisgICAgMTc5LDI0NCwyMzMsMjM2LDIyOCwxMDEsMTI4LCAzMCwxODEsIDk5LCAgNCwgNDEsMjI3LCA0MSwyMzQsIDQyLAorICAgICA1NywgNDIsMTI3LDIyNSwyNDIsMjM5LDExMCwxMjgsICAxLDIwNiwyMzMsMjQyLCA5OSwgIDIsIDQxLDI0MiwKKyAgICAgNDEsMjQ3LDIzNiwxMDEsMTI4LCAzNiwyMDgsMjQ1LDIzNywyMzAsMjM2LDIyOSwxMjAsMTMzLCAgMCwyMjYsCisgICAgIDQyLCAxMCwgNDIsIDE4LCA0MiwgMjksIDQyLCAzNywgNDIsIDQ5LDIyNSwyMjcsMjQ1LDI0NCwxMDEsMTI4LAorICAgICAzMCwxNjUsMjI4LDIzOSwyNDQsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDE3MywyMzEsMjQyLDIyNSwKKyAgICAyNDYsMTAxLDEyOCwgMzAsMTY3LDIzMiwyMzksMjM5LDIzNSwyMjUsMjI2LDIzOSwyNDYsMTAxLDEyOCwgMzAsCisgICAgMTY5LDI0NCwyMzMsMjM2LDIyOCwxMDEsMTI4LCAzMCwxNzEsMjQ1LDI0NCwxMDEsMTMzLCAgMCwxODAsIDQyLAorICAgICA3MywgNDIsIDg0LCA0MiwxMDEsIDQyLDEwOCwgNDIsMTE3LDIyNiwyMjksMjM2LDIzOSwyNDcsMjI3LDIzNywKKyAgICAgOTgsMTI4LCAgMywgMjMsIDk5LCAgMiwgNDIsIDkwLCA0MiwgOTUsMjM3LCA5OCwxMjgsICAzLCAgMSwyMzksCisgICAgMjM3LCA5OCwxMjgsICAzLCAgMSwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgODQsMjM2LDIzOSwyNDcsMjM3LAorICAgIDIzOSwxMDAsMTI4LCAgMiwyMDcsMjQ0LDIzOSwyMzgsMjI5LDIyNywyMzcsIDk4LDEyOCwgIDMsIDY1LDI0OSwKKyAgICAyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA0OCwxMDAsICA1LCA0MiwxNDksIDQyLDE1OSwgNDIsCisgICAgMTczLCA0MiwxNzksIDQyLDIxMywyMjYsMjM2LDIzMSwyNDIsMjI1LDI0NiwxMDEsMTI4LCAgMiwgIDEsMjI4LAorICAgIDIyNSwyMzUsMjMxLDI0NSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLDExMywyMjksMjQ2LCA5NywKKyAgICAxMjgsICA5LCAgNSwyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywxMTUsMTMwLCAgMCwyMjgsIDQyLDE5MywgNDIsCisgICAgMjA0LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwyMTEsMjM3LDIyNSwyMjcsMjQyLAorICAgIDIzOSwxMTAsMTI4LCAgMSwyMjMsMjM5LDExNiwgIDIsIDQyLDIyMCwgNDIsMjI4LDIyNiwyMjksMjM2LDIzOSwKKyAgICAxMTksMTI4LCAzMCwxNjEsMjM3LDIyNSwyMjcsMjQyLDIzOSwxMTAsMTI4LCAgMSwyMjUsMTAxLDEzMSwgIDAsCisgICAgMjMwLCA0MiwyNDcsIDQyLDI1NSwgNDMsICA4LDIyNSwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAgMSwyNTMsMjM1LAorICAgIDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgODAsMjM3LDIyNSwyMjcsMjQyLDIzOSwxMTAsMTI4LCAgMSwKKyAgICAyMjcsMjMwLDIzMywxMDUsICA2LCA0MywgMzMsIDQzLCA1MywgNDUsMjQ2LCA0NSwyNTIsIDQ2LCAxMSwgNDksCisgICAgMTExLCA0OCwgIDIsIDQzLCAzOSwgNDMsIDQ2LDE3NiwxNzgsMTc2LCA1NiwxMjgsIDMyLCAyMSwxODQsMTg1LAorICAgIDE4MCwgNDksMTI4LCAzMiwxNjQsMTc3LCA0OCwgIDMsIDQzLCA2MiwgNDUsIDg2LCA0NSwyMjEsIDQ4LCAgOSwKKyAgICAgNDMsIDgyLCA0MywxMDIsIDQzLDE2NCwgNDMsMjI2LCA0NCwgMzIsIDQ0LCA5NCwgNDQsMTU2LCA0NCwyMTgsCisgICAgIDQ1LCAyNCwgNDksICAzLCA0MywgOTAsIDQzLCA5NCwgNDMsIDk4LCA1NSwxMjgsICA0LCAxNiwgNTYsMTI4LAorICAgICAgNCwgMTcsIDU3LDEyOCwgIDQsIDE4LCA1MCwgMTAsIDQzLDEyNCwgNDMsMTI4LCA0MywxMzIsIDQzLDEzNiwKKyAgICAgNDMsMTQwLCA0MywxNDQsIDQzLDE0OCwgNDMsMTUyLCA0MywxNTYsIDQzLDE2MCwgNDgsMTI4LCAgNCwgMTksCisgICAgIDQ5LDEyOCwgIDQsIDIwLCA1MCwxMjgsICA0LCAyMSwgNTEsMTI4LCAgNCwgIDEsIDUyLDEyOCwgIDQsIDIyLAorICAgICA1MywxMjgsICA0LCAyMywgNTQsMTI4LCAgNCwgMjQsIDU1LDEyOCwgIDQsIDI1LCA1NiwxMjgsICA0LCAyNiwKKyAgICAgNTcsMTI4LCAgNCwgMjcsIDUxLCAxMCwgNDMsMTg2LCA0MywxOTAsIDQzLDE5NCwgNDMsMTk4LCA0MywyMDIsCisgICAgIDQzLDIwNiwgNDMsMjEwLCA0MywyMTQsIDQzLDIxOCwgNDMsMjIyLCA0OCwxMjgsICA0LCAyOCwgNDksMTI4LAorICAgICAgNCwgMjksIDUwLDEyOCwgIDQsIDMwLCA1MSwxMjgsICA0LCAzMSwgNTIsMTI4LCAgNCwgMzIsIDUzLDEyOCwKKyAgICAgIDQsIDMzLCA1NCwxMjgsICA0LCAzNCwgNTUsMTI4LCAgNCwgMzUsIDU2LDEyOCwgIDQsIDM2LCA1NywxMjgsCisgICAgICA0LCAzNywgNTIsIDEwLCA0MywyNDgsIDQzLDI1MiwgNDQsICAwLCA0NCwgIDQsIDQ0LCAgOCwgNDQsIDEyLAorICAgICA0NCwgMTYsIDQ0LCAyMCwgNDQsIDI0LCA0NCwgMjgsIDQ4LDEyOCwgIDQsIDM4LCA0OSwxMjgsICA0LCAzOSwKKyAgICAgNTAsMTI4LCAgNCwgNDAsIDUxLDEyOCwgIDQsIDQxLCA1MiwxMjgsICA0LCA0MiwgNTMsMTI4LCAgNCwgNDMsCisgICAgIDU0LDEyOCwgIDQsIDQ0LCA1NSwxMjgsICA0LCA0NSwgNTYsMTI4LCAgNCwgNDYsIDU3LDEyOCwgIDQsIDQ3LAorICAgICA1MywgMTAsIDQ0LCA1NCwgNDQsIDU4LCA0NCwgNjIsIDQ0LCA2NiwgNDQsIDcwLCA0NCwgNzQsIDQ0LCA3OCwKKyAgICAgNDQsIDgyLCA0NCwgODYsIDQ0LCA5MCwgNDgsMTI4LCAgNCwxNDQsIDQ5LDEyOCwgIDQsICAyLCA1MCwxMjgsCisgICAgICA0LCAgMywgNTEsMTI4LCAgNCwgIDQsIDUyLDEyOCwgIDQsICA1LCA1MywxMjgsICA0LCAgNiwgNTQsMTI4LAorICAgICAgNCwgIDcsIDU1LDEyOCwgIDQsICA4LCA1NiwxMjgsICA0LCAgOSwgNTcsMTI4LCAgNCwgMTAsIDU0LCAxMCwKKyAgICAgNDQsMTE2LCA0NCwxMjAsIDQ0LDEyNCwgNDQsMTI4LCA0NCwxMzIsIDQ0LDEzNiwgNDQsMTQwLCA0NCwxNDQsCisgICAgIDQ0LDE0OCwgNDQsMTUyLCA0OCwxMjgsICA0LCAxMSwgNDksMTI4LCAgNCwgMTIsIDUwLDEyOCwgIDQsIDE0LAorICAgICA1MSwxMjgsMjQ2LDE5NiwgNTIsMTI4LDI0NiwxOTcsIDUzLDEyOCwgIDQsIDQ4LCA1NCwxMjgsICA0LCA0OSwKKyAgICAgNTUsMTI4LCAgNCwgNTAsIDU2LDEyOCwgIDQsIDUxLCA1NywxMjgsICA0LCA1MiwgNTUsIDEwLCA0NCwxNzgsCisgICAgIDQ0LDE4MiwgNDQsMTg2LCA0NCwxOTAsIDQ0LDE5NCwgNDQsMTk4LCA0NCwyMDIsIDQ0LDIwNiwgNDQsMjEwLAorICAgICA0NCwyMTQsIDQ4LDEyOCwgIDQsIDUzLCA0OSwxMjgsICA0LCA4MSwgNTAsMTI4LCAgNCwgNTQsIDUxLDEyOCwKKyAgICAgIDQsIDU1LCA1MiwxMjgsICA0LCA1NiwgNTMsMTI4LCAgNCwgNTcsIDU0LDEyOCwgIDQsIDU4LCA1NSwxMjgsCisgICAgICA0LCA1OSwgNTYsMTI4LCAgNCwgNjAsIDU3LDEyOCwgIDQsIDYxLCA1NiwgMTAsIDQ0LDI0MCwgNDQsMjQ0LAorICAgICA0NCwyNDgsIDQ0LDI1MiwgNDUsICAwLCA0NSwgIDQsIDQ1LCAgOCwgNDUsIDEyLCA0NSwgMTYsIDQ1LCAyMCwKKyAgICAgNDgsMTI4LCAgNCwgNjIsIDQ5LDEyOCwgIDQsIDYzLCA1MCwxMjgsICA0LCA2NCwgNTEsMTI4LCAgNCwgNjUsCisgICAgIDUyLDEyOCwgIDQsIDY2LCA1MywxMjgsICA0LCA2NywgNTQsMTI4LCAgNCwgNjgsIDU1LDEyOCwgIDQsIDY5LAorICAgICA1NiwxMjgsICA0LCA3MCwgNTcsMTI4LCAgNCwgNzEsIDU3LCAxMCwgNDUsIDQ2LCA0NSwgNTAsIDQ1LCA1NCwKKyAgICAgNDUsIDU4LCA0NSwgNjIsIDQ1LCA2NiwgNDUsIDcwLCA0NSwgNzQsIDQ1LCA3OCwgNDUsIDgyLCA0OCwxMjgsCisgICAgICA0LCA3MiwgNDksMTI4LCAgNCwgNzMsIDUwLDEyOCwgIDQsIDc0LCA1MSwxMjgsICA0LCA3NSwgNTIsMTI4LAorICAgICAgNCwgNzYsIDUzLDEyOCwgIDQsIDc3LCA1NCwxMjgsICA0LCA3OCwgNTUsMTI4LCAgNCwgNzksIDU2LDEyOCwKKyAgICAgIDQsMTQ1LCA1NywxMjgsICA0LCA4MiwgNDksICA0LCA0NSwgOTYsIDQ1LDE1OCwgNDUsMTYzLCA0NSwxODksCisgICAgIDQ4LCAxMCwgNDUsMTE4LCA0NSwxMjIsIDQ1LDEyNiwgNDUsMTMwLCA0NSwxMzQsIDQ1LDEzOCwgNDUsMTQyLAorICAgICA0NSwxNDYsIDQ1LDE1MCwgNDUsMTU0LCA0OCwxMjgsICA0LCA4MywgNDksMTI4LCAgNCwgODQsIDUwLDEyOCwKKyAgICAgIDQsIDg1LCA1MSwxMjgsICA0LCA4NiwgNTIsMTI4LCAgNCwgODcsIDUzLDEyOCwgIDQsIDg4LCA1NCwxMjgsCisgICAgICA0LCA4OSwgNTUsMTI4LCAgNCwgOTAsIDU2LDEyOCwgIDQsIDkxLCA1NywxMjgsICA0LCA5MiwxNzcsIDQ4LAorICAgIDEyOCwgIDQsIDk0LCA1MiwgIDQsIDQ1LDE3MywgNDUsMTc3LCA0NSwxODEsIDQ1LDE4NSwgNTMsMTI4LCAgNCwKKyAgICAgMTUsIDU0LDEyOCwgIDQsIDk4LCA1NSwxMjgsICA0LDExNCwgNTYsMTI4LCAgNCwxMTYsIDU3LCAgNSwgNDUsCisgICAgMjAxLCA0NSwyMDUsIDQ1LDIwOSwgNDUsMjEzLCA0NSwyMTcsIDUwLDEyOCwyNDYsMTk4LCA1MSwxMjgsICA0LAorICAgICA5NSwgNTIsMTI4LCAgNCwgOTksIDUzLDEyOCwgIDQsMTE1LCA1NCwxMjgsICA0LDExNywgNTYsICAyLCA0NSwKKyAgICAyMjcsIDQ1LDI0MSwgNTEsICAyLCA0NSwyMzMsIDQ1LDIzNywgNDksMTI4LDI0NiwxOTksIDUwLDEyOCwyNDYsCisgICAgMjAwLDE4MCwgNTQsMTI4LCAgNCwyMTcsMTc4LDE4NSwgNTcsMTI4LCAzMiwgMTQsMTc5LCA0OCwgIDIsIDQ2LAorICAgICAgMywgNDYsICA3LCA0OCwxMjgsIDMyLCAxNSwgNDksMTI4LCAzMiwgMTMsMTgxLCA1NSwgIDcsIDQ2LCAyOCwKKyAgICAgNDYsIDk4LCA0NywxNjMsIDQ3LDI0MCwgNDgsMTk3LCA0OSwgMzQsIDQ5LDEwNSwgNTEsICAyLCA0NiwgMzQsCisgICAgIDQ2LCA0OCwgNTYsICAyLCA0NiwgNDAsIDQ2LCA0NCwgNDksMTI4LCAgNiwxMDYsIDU2LDEyOCwgIDYsIDEyLAorICAgICA1NywgIDgsIDQ2LCA2NiwgNDYsIDcwLCA0NiwgNzQsIDQ2LCA3OCwgNDYsIDgyLCA0NiwgODYsIDQ2LCA5MCwKKyAgICAgNDYsIDk0LCA1MCwxMjgsICA2LCA5NiwgNTEsMTI4LCAgNiwgOTcsIDUyLDEyOCwgIDYsIDk4LCA1MywxMjgsCisgICAgICA2LCA5OSwgNTQsMTI4LCAgNiwxMDAsIDU1LDEyOCwgIDYsMTAxLCA1NiwxMjgsICA2LDEwMiwgNTcsMTI4LAorICAgICAgNiwxMDMsIDUyLCAgNywgNDYsMTE0LCA0NiwxNDYsIDQ2LDIwOCwgNDcsIDE0LCA0NywgNDYsIDQ3LDEwMiwKKyAgICAgNDcsMTU4LCA0OCwgIDUsIDQ2LDEyNiwgNDYsMTMwLCA0NiwxMzQsIDQ2LDEzOCwgNDYsMTQyLCA0OCwxMjgsCisgICAgICA2LDEwNCwgNDksMTI4LCAgNiwxMDUsIDUxLDEyOCwgIDYsIDI3LCA1NSwxMjgsICA2LCAzMSwgNTcsMTI4LAorICAgICAgNiwgMzMsIDQ5LCAxMCwgNDYsMTY4LCA0NiwxNzIsIDQ2LDE3NiwgNDYsMTgwLCA0NiwxODQsIDQ2LDE4OCwKKyAgICAgNDYsMTkyLCA0NiwxOTYsIDQ2LDIwMCwgNDYsMjA0LCA0OCwxMjgsICA2LCAzNCwgNDksMTI4LCAgNiwgMzUsCisgICAgIDUwLDEyOCwgIDYsIDM2LCA1MSwxMjgsICA2LCAzNywgNTIsMTI4LCAgNiwgMzgsIDUzLDEyOCwgIDYsIDM5LAorICAgICA1NCwxMjgsICA2LCA0MCwgNTUsMTI4LCAgNiwgNDEsIDU2LDEyOCwgIDYsIDQyLCA1NywxMjgsICA2LCA0MywKKyAgICAgNTAsIDEwLCA0NiwyMzAsIDQ2LDIzNCwgNDYsMjM4LCA0NiwyNDIsIDQ2LDI0NiwgNDYsMjUwLCA0NiwyNTQsCisgICAgIDQ3LCAgMiwgNDcsICA2LCA0NywgMTAsIDQ4LDEyOCwgIDYsIDQ0LCA0OSwxMjgsICA2LCA0NSwgNTAsMTI4LAorICAgICAgNiwgNDYsIDUxLDEyOCwgIDYsIDQ3LCA1MiwxMjgsICA2LCA0OCwgNTMsMTI4LCAgNiwgNDksIDU0LDEyOCwKKyAgICAgIDYsIDUwLCA1NSwxMjgsICA2LCA1MSwgNTYsMTI4LCAgNiwgNTIsIDU3LDEyOCwgIDYsIDUzLCA1MSwgIDUsCisgICAgIDQ3LCAyNiwgNDcsIDMwLCA0NywgMzQsIDQ3LCAzOCwgNDcsIDQyLCA0OCwxMjgsICA2LCA1NCwgNDksMTI4LAorICAgICAgNiwgNTUsIDUwLDEyOCwgIDYsIDU2LCA1MSwxMjgsICA2LCA1NywgNTIsMTI4LCAgNiwgNTgsIDUyLCAgOSwKKyAgICAgNDcsIDY2LCA0NywgNzAsIDQ3LCA3NCwgNDcsIDc4LCA0NywgODIsIDQ3LCA4NiwgNDcsIDkwLCA0NywgOTQsCisgICAgIDQ3LCA5OCwgNDgsMTI4LCAgNiwgNjQsIDQ5LDEyOCwgIDYsIDY1LCA1MCwxMjgsICA2LCA2NiwgNTEsMTI4LAorICAgICAgNiwgNjcsIDUyLDEyOCwgIDYsIDY4LCA1MywxMjgsICA2LCA2OSwgNTQsMTI4LCAgNiwgNzAsIDU2LDEyOCwKKyAgICAgIDYsIDcyLCA1NywxMjgsICA2LCA3MywgNTMsICA5LCA0NywxMjIsIDQ3LDEyNiwgNDcsMTMwLCA0NywxMzQsCisgICAgIDQ3LDEzOCwgNDcsMTQyLCA0NywxNDYsIDQ3LDE1MCwgNDcsMTU0LCA0OCwxMjgsICA2LCA3NCwgNDksMTI4LAorICAgICAgNiwgNzUsIDUwLDEyOCwgIDYsIDc2LCA1MSwxMjgsICA2LCA3NywgNTIsMTI4LCAgNiwgNzgsIDUzLDEyOCwKKyAgICAgIDYsIDc5LCA1NCwxMjgsICA2LCA4MCwgNTUsMTI4LCAgNiwgODEsIDU2LDEyOCwgIDYsIDgyLDE4MywgNDgsCisgICAgMTI4LCAgNiwgNzEsIDUzLCAgMywgNDcsMTcxLCA0NywyMDMsIDQ3LDIzNSwgNDgsICA1LCA0NywxODMsIDQ3LAorICAgIDE4NywgNDcsMTkxLCA0NywxOTUsIDQ3LDE5OSwgNTMsMTI4LCAgNiwxNjQsIDU0LDEyOCwgIDYsMTI2LCA1NSwKKyAgICAxMjgsICA2LDEzNCwgNTYsMTI4LCAgNiwxNTIsIDU3LDEyOCwgIDYsMTc1LCA0OSwgIDUsIDQ3LDIxNSwgNDcsCisgICAgMjE5LCA0NywyMjMsIDQ3LDIyNywgNDcsMjMxLCA0OSwxMjgsICA2LDEyMSwgNTAsMTI4LCAgNiwxMzYsIDUxLAorICAgIDEyOCwgIDYsMTQ1LCA1MiwxMjgsICA2LDE4NiwgNTcsMTI4LCAgNiwyMTAsMTc5LCA1MiwxMjgsICA2LDIxMywKKyAgICAgNTQsICA3LCA0OCwgIDAsIDQ4LCAgNSwgNDgsIDEwLCA0OCwgMTUsIDQ4LCA1MywgNDgsMTE1LCA0OCwxNzcsCisgICAgMTc5LCA1NCwxMjgsIDMyLDE3MCwxODAsIDUzLDEyOCwgIDUsMTkwLDE4MSwgNTYsMTI4LCAgNSwxOTUsIDU0LAorICAgICAgNiwgNDgsIDI5LCA0OCwgMzMsIDQ4LCAzNywgNDgsIDQxLCA0OCwgNDUsIDQ4LCA0OSwgNTIsMTI4LCAgNSwKKyAgICAyMDgsIDUzLDEyOCwgIDUsMjA5LCA1NCwxMjgsICA1LDIxMCwgNTUsMTI4LCAgNSwyMTEsIDU2LDEyOCwgIDUsCisgICAgMjEyLCA1NywxMjgsICA1LDIxMywgNTUsIDEwLCA0OCwgNzUsIDQ4LCA3OSwgNDgsIDgzLCA0OCwgODcsIDQ4LAorICAgICA5MSwgNDgsIDk1LCA0OCwgOTksIDQ4LDEwMywgNDgsMTA3LCA0OCwxMTEsIDQ4LDEyOCwgIDUsMjE0LCA0OSwKKyAgICAxMjgsICA1LDIxNSwgNTAsMTI4LCAgNSwyMTYsIDUxLDEyOCwgIDUsMjE3LCA1MiwxMjgsICA1LDIxOCwgNTMsCisgICAgMTI4LCAgNSwyMTksIDU0LDEyOCwgIDUsMjIwLCA1NSwxMjgsICA1LDIyMSwgNTYsMTI4LCAgNSwyMjIsIDU3LAorICAgIDEyOCwgIDUsMjIzLCA1NiwgMTAsIDQ4LDEzNywgNDgsMTQxLCA0OCwxNDUsIDQ4LDE0OSwgNDgsMTUzLCA0OCwKKyAgICAxNTcsIDQ4LDE2MSwgNDgsMTY1LCA0OCwxNjksIDQ4LDE3MywgNDgsMTI4LCAgNSwyMjQsIDQ5LDEyOCwgIDUsCisgICAgMjI1LCA1MCwxMjgsICA1LDIyNiwgNTEsMTI4LCAgNSwyMjcsIDUyLDEyOCwgIDUsMjI4LCA1MywxMjgsICA1LAorICAgIDIyOSwgNTQsMTI4LCAgNSwyMzAsIDU1LDEyOCwgIDUsMjMxLCA1NiwxMjgsICA1LDIzMiwgNTcsMTI4LCAgNSwKKyAgICAyMzMsIDU3LCAgMywgNDgsMTg1LCA0OCwxODksIDQ4LDE5MywgNDgsMTI4LCAgNSwyMzQsIDUyLDEyOCwyNTEsCisgICAgIDQyLCA1MywxMjgsMjUxLCA0MywgNTUsICA0LCA0OCwyMDcsIDQ4LDIyMSwgNDgsMjQxLCA0OCwyNDYsIDQ4LAorICAgICAgMiwgNDgsMjEzLCA0OCwyMTcsIDQ4LDEyOCwyNTEsIDc1LCA1MywxMjgsMjUxLCAzMSwgNDksICAzLCA0OCwKKyAgICAyMjksIDQ4LDIzMywgNDgsMjM3LCA1NCwxMjgsICA1LDI0MCwgNTUsMTI4LCAgNSwyNDEsIDU2LDEyOCwgIDUsCisgICAgMjQyLDE3OCwgNTEsMTI4LDI1MSwgNTMsIDU3LCAgNywgNDksICA2LCA0OSwgMTAsIDQ5LCAxNCwgNDksIDE4LAorICAgICA0OSwgMjIsIDQ5LCAyNiwgNDksIDMwLCA1MSwxMjgsICA1LDE4MCwgNTIsMTI4LCAgNSwxODEsIDUzLDEyOCwKKyAgICAgIDUsMTgyLCA1NCwxMjgsICA1LDE4NywgNTUsMTI4LCAgNSwxODQsIDU2LDEyOCwgIDUsMTgzLCA1NywxMjgsCisgICAgICA1LDE3NiwgNTYsICAzLCA0OSwgNDIsIDQ5LCA4NiwgNDksIDkxLCA0OCwgIDcsIDQ5LCA1OCwgNDksIDYyLAorICAgICA0OSwgNjYsIDQ5LCA3MCwgNDksIDc0LCA0OSwgNzgsIDQ5LCA4MiwgNDgsMTI4LCAgNSwxNzgsIDQ5LDEyOCwKKyAgICAgIDUsMTc3LCA1MCwxMjgsICA1LDE3OSwgNTEsMTI4LCAgNSwxOTQsIDUyLDEyOCwgIDUsMTkzLCA1NCwxMjgsCisgICAgICA1LDE4NSwgNTUsMTI4LCAgNSwxODgsMTc5LCA1NywxMjgsICA1LDE4OSwgNTIsICAyLCA0OSwgOTcsIDQ5LAorICAgIDEwMSwgNDksMTI4LCAgNSwxOTEsIDUwLDEyOCwgIDUsMTkyLDE4NSwxNzgsIDU3LDEyOCwgIDIsMTg4LCA1NCwKKyAgICAgIDMsIDQ5LDExOSwgNDksMTc4LCA0OSwxODUsIDQ5LCAgNCwgNDksMTI5LCA0OSwxNDUsIDQ5LDE1MSwgNDksCisgICAgMTcyLCA1MCwgIDIsIDQ5LDEzNSwgNDksMTQwLDE4MCwgNTYsMTI4LCAzMywgIDUsMTg0LCA1NywxMjgsIDMzLAorICAgICAxOSwxNzksMTgxLCA1MCwxMjgsIDMzLCAyMiwxODEsIDU1LCAgMywgNDksMTYwLCA0OSwxNjQsIDQ5LDE2OCwKKyAgICAgNTEsMTI4LCAzMiwgNDQsIDUyLDEyOCwgMzIsIDQ1LCA1MywxMjgsIDMyLCA0NiwxODIsMTgyLCA1MiwxMjgsCisgICAgIDMyLCAxMiwxNzksMTc3LDE4MiwgNTUsMTI4LCAgNiwxMDksMTgwLDE4NSwxNzksIDU1LDEyOCwgIDIsMTg5LAorICAgIDEwMywgIDIsIDQ5LDE5OCwgNDksMjA1LDI0MiwyMjUsMjQ2LDEwMSwxMjgsICAwLDIyNCwxMTcsICAyLCA0OSwKKyAgICAyMTEsIDQ5LDIyMCwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDEzMywyNDIsMjM3LDI0NSwyMzUsCisgICAgMjMyLDEwNSwxMjgsIDEwLCAgNSwxMDQsICAyLCA0OSwyMzUsIDQ5LDI0NSwyMzMsMjQyLDIyNSwyMzEsMjI1LAorICAgIDIzOCwgOTcsMTI4LCA0OCwgNjYsMjM5LDIzOSwyMzUsMjI1LDIyNiwyMzksMjQ2LDEwMSwxMjgsIDMwLDE2MywKKyAgICAxMDUsICA3LCA1MCwgMTYsIDUwLCA0MSwgNTAsIDQ4LCA1MCwgNjAsIDUwLCA4NSwgNTAsMTAxLCA1MCwxODEsCisgICAgIDk4LCAgMiwgNTAsIDIyLCA1MCwgMzEsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwxNDQsMjM5LAorICAgIDI0MCwyMzksMjM3LDIzOSwyMzAsMTExLDEyOCwgNDksIDMwLDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCAxNiwKKyAgICAyMjksMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDIxMywyMzEsMTE3LCAgMiwgNTAsCisgICAgIDY3LCA1MCwgNzYsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNDQsMjQyLDIzNywyNDUsMjM1LAorICAgIDIzMiwxMDUsMTI4LCAxMCwgMTYsMjM3LDIyNSwyNDQsMjQyLDIyNSwyMzEsMjQ1LDI0MiwyMzcsMjQ1LDIzNSwKKyAgICAyMzIsMTA1LDEyOCwgMTAsIDcyLDExMCwgIDUsIDUwLDExMywgNTAsMTIyLCA1MCwxMzYsIDUwLDE1MiwgNTAsCisgICAgMTY3LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDU3LDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LAorICAgIDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwyMDIsMjMzLDIzOCwyMzMsMjQ0LDIzMywyMjUsMjM2LDIyNSwKKyAgICAyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMjAzLDIzNywyMjksMjI4LDIzMywyMjUsMjM2LDIyNSwyNDIsCisgICAgMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMjA0LDI0NiwyMjksMjQyLDI0NCwyMjksMjI4LDIyNiwyNDIsMjI5LAorICAgIDI0NiwxMDEsMTI4LCAgMiwgIDMsMjQ2LDIzOSwyNDcsMjI5LDIzNiwyNDMsMjMzLDIzMSwxMTAsICAzLCA1MCwKKyAgICAxOTcsIDUwLDIwNywgNTAsMjE0LDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDIwMCwyMjgsCisgICAgMjI5LDI0NiwgOTcsMTI4LCAgOSwgNzIsMjMxLDI0NSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLAorICAgIDIwMCwxMDcsICAyLCA1MCwyMzEsIDUwLDI1NSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwKKyAgICAxNjIsIDUwLDI0MywyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDExMywyMzksCisgICAgMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksIDc5LDEwOCwgIDMsIDUxLCAxNSwgNTIsIDcxLCA1MiwgODAsMTAxLAorICAgICAgMiwgNTEsIDIxLCA1MiwgNjYsMTAyLDEzNiwgIDUsMjA4LCA1MSwgNDEsIDUxLCA1MCwgNTEsIDY1LCA1MSwKKyAgICAgNzksIDUxLDE2OCwgNTEsMTgyLCA1MiwgMzcsIDUyLCA1MSwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsCisgICAgICA2LCAzOSwyMjgsMjI1LDIzMSwyMjksMjQzLDIzMiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLAorICAgICA0OCwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTQyLDEwNCwKKyAgICAgIDIsIDUxLCA4NSwgNTEsMTYwLDIyNSwyMzcsMjUwLCA5NywgIDIsIDUxLCA5NCwgNTEsMTI3LDIyNSwyMjYsCisgICAgMjM5LDI0NiwxMDEsICAyLCA1MSwxMDQsIDUxLDExMywyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LAorICAgICAzNSwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTMyLDIyNiwKKyAgICAyMjksMjM2LDIzOSwxMTksICAyLCA1MSwxMzcsIDUxLDE0NiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsCisgICAgICA2LCAzNywyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTM2LAorICAgIDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwyMDgsMjM2LDIyNSwyMzcsMjI5LDIyOCwyMzIsMjI5LDIyNiwKKyAgICAyNDIsMjI5LDExOSwxMjgsMjUxLCA3OSwyMzcsIDk3LCAgMiwgNTEsMTg5LCA1MSwyMjUsMjI4LDIyOCwyMjUsCisgICAgMjI1LDIyNiwyMzksMjQ2LDEwMSwgIDIsIDUxLDIwMiwgNTEsMjExLDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LAorICAgIDEyOCwgIDYsIDM0LDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwKKyAgICAxMzAsMjM1LDI0MywyNDUsMjQyLCA5NywgIDQsIDUxLDIzOSwgNTEsMjQ4LCA1MiwgIDYsIDUyLCAyMiwyMjUsCisgICAgMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA3MywyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LAorICAgIDIyNiwyMzMsIDk5LDEyOCwyNTQsMjQwLDIzMywyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwKKyAgICAyMjYsMjMzLCA5OSwxMjgsMjU0LDI0MywyMzcsMjI5LDIyOCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsCisgICAgMjMzLCA5OSwxMjgsMjU0LDI0NCwyNDAsMjI1LDI0NCwyMjUsMjMyLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LAorICAgIDEyOCwyNTEsIDQ2LDI0MSwyMjUsMjM3LDIyNSwyNDQsMjQzLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwKKyAgICAyNTEsIDQ3LDI0MCwxMDQsMTI4LCAzMywgNTMsMjM2LDIyOSwyNDEsMjQ1LDIyNSwxMDgsMTI4LCAzNCwgNzYsCisgICAgMjQwLDIzMiwgOTcsMTI5LCAgMywxNzcsIDUyLCA4OCwyNDQsMjM5LDIzOCwyMzksMTE1LDEyOCwgIDMsMTcyLAorICAgIDEwOSwgIDQsIDUyLDEwNiwgNTIsMTE0LCA1MiwxMjUsIDUyLDE1OSwyMjUsMjI3LDI0MiwyMzksMTEwLDEyOCwKKyAgICAgIDEsICAxLDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgNjUsMjQwLDIyOSwyNDIsCisgICAgMjQzLDIyNSwyMzgsMTAwLDEzMCwgIDAsIDM4LCA1MiwxMzksIDUyLDE1MSwyMzcsMjM5LDIzOCwyMzksMjQzLAorICAgIDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCAgNiwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsIDM4LDI0MywKKyAgICAyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTk0LDExMCwgIDQsIDUyLDE3OCwgNTIsMTg5LCA1MywgNTUsCisgICAgIDUzLCA2NSwyMjYsMjM5LDI0MCwyMzksMjM3LDIzOSwyMzAsMTExLDEyOCwgNDksIDM0LDEwMywgIDQsIDUyLAorICAgIDE5OSwgNTIsMjEwLCA1MiwyMjQsIDUzLCA0NywyMjYsMjM5LDI0MCwyMzksMjM3LDIzOSwyMzAsMTExLDEyOCwKKyAgICAgNDksIDM2LDIzNSwyMzIsMjI1LDIzOCwyMzUsMjMyLDI0NSwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgOTAsCisgICAgMjM2LDEwMSwxMzEsIDM0LCAzMiwgNTIsMjM1LCA1MywgMzIsIDUzLCAzOSwyMjYsMjQyLDIyNSwyMjcsMjM1LAorICAgIDIyOSwxMTYsICAyLCA1MiwyNDcsIDUzLCAxMSwyMzYsMjI5LDIzMCwxMTYsMTI5LCA0OCwgIDgsIDUzLCAgMCwKKyAgICAyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMTA4LDEyOCwyNTQsIDYzLDI0MiwyMzMsMjMxLDIzMiwxMTYsCisgICAgMTI5LCA0OCwgIDksIDUzLCAyMSwyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMTA4LDEyOCwyNTQsIDY0LAorICAgIDIzNiwyMjksMjMwLDExNiwxMjgsIDM1LCA0MSwyNDIsMjMzLDIzMSwyMzIsMTE2LDEyOCwgMzUsIDQyLDI0MywKKyAgICAyNDQsMjQyLDIzOSwxMDksMTI4LCAzMywgNDMsMjM5LDI0NCwyMjksMjM2LDIyOSwyMzMsIDk3LDEyOCwgIDMsCisgICAgMTM1LDExNywgIDIsIDUzLCA3MSwgNTMsIDgzLDIyOCwyMjUsMjQ0LDI0NCwyMjUsMjI4LDIyOSwyNDYsIDk3LAorICAgIDEyOCwgIDksIDgyLDI0MywyNDYsMjI1LDI0MiwgOTcsICAzLCA1MywgOTUsIDUzLDEwNSwgNTMsMTEyLDIyNiwKKyAgICAyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDEzMCwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgIDIsCisgICAgMjMxLDI0NSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDEzMCwyMzksMjMxLDIzOSwyMzgsMjI5LAorICAgIDEwNywxMjgsICAxLCAgNSwxMTIsICAzLCA1MywxNDAsIDUzLDE2NCwgNTMsMTk0LCA5NywgIDIsIDUzLDE0NiwKKyAgICAgNTMsMTU4LDIyNSwyNDQsMjM5LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsICAwLDI0MiwyMjksCisgICAgMTEwLDEyOCwgMzYsMTU2LDIzOSwyNDMsMjQ0LDI0MiwyMzksMjQwLDIzMiwxMDEsICAyLCA1MywxNzcsIDUzLAorICAgIDE4OCwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDkwLDIzNywyMzksMTAwLDEyOCwKKyAgICAgIDIsMTg4LDExMiwgIDIsIDUzLDIwMCwgNTMsMjA1LDIzNiwxMDEsMTI4LDI0OCwyNTUsMjQyLDExMSwgIDIsCisgICAgIDUzLDIxMiwgNTMsMjIwLDIyNSwyMjcsMjMyLDIyOSwxMTUsMTI4LCAzNCwgODAsMTIwLCAgMiwgNTMsMjI2LAorICAgICA1MywyNDYsMjI5LDI0MSwyNDUsMjI1LDEwOCwxMjksIDM0LCA3MiwgNTMsMjM2LDIzOSwyNDIsMjMzLDIzNywKKyAgICAyMjUsMjMxLDEwMSwxMjgsIDM0LCA4MiwyMzMsMjM3LDIyNSwyNDQsMjI5LDIzNiwyNDksMjI5LDI0MSwyNDUsCisgICAgMjI1LDEwOCwxMjgsIDM0LCA2OSwxMTQsICA0LCA1NCwgMTUsIDU0LCA0MiwgNTQsIDQ2LCA1NCwgOTEsMjI1LAorICAgIDIyOSwgOTcsICAyLCA1NCwgMjMsIDU0LCAzMywyMjksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwKKyAgICAxNDIsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxNDEsIDk5LDEyOCwgMzUsIDE4LDEwNSwgIDIsCisgICAgIDU0LCA1MiwgNTQsIDY2LDIzMSwyMzIsMjQ0LDIzMiwyMjUsMjM2LDIzMCwyNDIsMjMzLDIzOCwxMDMsMTI4LAorICAgICAzMCwxNTQsMjM4LDEwMywxMzAsICAwLDIyOSwgNTQsIDc1LCA1NCwgODMsMjI1LDIyNywyNDUsMjQ0LDEwMSwKKyAgICAxMjgsICAxLDI1MSwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsICAxLDI0MiwyMzksMTE5LCAgOCwgNTQsCisgICAgMTExLCA1NCwxMTgsIDU0LDI0NywgNTUsIDU3LCA1NSwxMDcsIDU1LDE2MiwgNTUsMTg1LCA1NiwgIDQsMjI2LAorICAgIDIzOSwyNDQsMTA0LDEyOCwgMzMsMTQ4LDEwMCwgIDMsIDU0LDEyNiwgNTQsMTY1LCA1NCwyMTIsMjI1LDI0MywKKyAgICAxMDQsICA0LCA1NCwxMzgsIDU0LDE0NSwgNTQsMTUyLCA1NCwxNjAsMjI4LDIzOSwyNDcsMTEwLDEyOCwgMzMsCisgICAgMjI3LDIzNiwyMjksMjMwLDExNiwxMjgsIDMzLDIyNCwyNDIsMjMzLDIzMSwyMzIsMTE2LDEyOCwgMzMsMjI2LAorICAgIDI0NSwxMTIsMTI4LCAzMywyMjUsMjI2LDEwOCwgIDUsIDU0LDE3OCwgNTQsMTg1LCA1NCwxOTIsIDU0LDE5OSwKKyAgICAgNTQsMjA3LDIyNiwyMzksMjQ0LDEwNCwxMjgsIDMzLDIxMiwyMjgsMjM5LDI0NywxMTAsMTI4LCAzMywyMTEsCisgICAgMjM2LDIyOSwyMzAsMTE2LDEyOCwgMzMsMjA4LDI0MiwyMzMsMjMxLDIzMiwxMTYsMTI4LCAzMywyMTAsMjQ1LAorICAgIDExMiwxMjgsIDMzLDIwOSwyMzksMjQ3LDExMCwxMzEsIDMzLDE0NywgNTQsMjI0LCA1NCwyMzEsIDU0LDIzOSwKKyAgICAyMzYsMjI5LDIzMCwxMTYsMTI4LCAzMywxNTMsMjQyLDIzMywyMzEsMjMyLDExNiwxMjgsIDMzLDE1MiwyNDcsCisgICAgMjMyLDIzMywyNDQsMTAxLDEyOCwgMzMsMjMzLDEwNCwgIDIsIDU0LDI1MywgNTUsIDQ4LDIyOSwyMjUsMTAwLAorICAgICAgNCwgNTUsICA5LCA1NSwgMTksIDU1LCAyOSwgNTUsIDQwLDIyOCwyMzksMjQ3LDIzOCwyMzcsMjM5LDEwMCwKKyAgICAxMjgsICAyLDE5NywyMzYsMjI5LDIzMCwyNDQsMjM3LDIzOSwxMDAsMTI4LCAgMiwxOTQsMjQyLDIzMywyMzEsCisgICAgMjMyLDI0NCwyMzcsMjM5LDEwMCwxMjgsICAyLDE5NSwyNDUsMjQwLDIzNywyMzksMTAwLDEyOCwgIDIsMTk2LAorICAgIDIzOSwyNDIsMjMzLDI1MCwyMjksMTIwLDEyOCwyNDgsMjMxLDIzNiwyMjksMjMwLDExNiwxMzEsIDMzLDE0NCwKKyAgICAgNTUsIDcwLCA1NSwgODcsIDU1LCA5OSwyMjgsMjI2LDEwOCwxMjksIDMzLDIwOCwgNTUsIDc4LDI0MywyNDQsCisgICAgMjQyLDIzOSwyMzUsMTAxLDEyOCwgMzMsMjA1LDIzOSwyNDYsMjI5LDI0MiwyNDIsMjMzLDIzMSwyMzIsMTE2LAorICAgIDEyOCwgMzMsMTk4LDI0NywyMzIsMjMzLDI0NCwxMDEsMTI4LCAzMywyMzAsMjQyLDIzMywyMzEsMjMyLDExNiwKKyAgICAxMzIsIDMzLDE0NiwgNTUsMTIzLCA1NSwxMzUsIDU1LDE0MywgNTUsMTU0LDIyOCwyMjYsMjM2LDI0MywyNDQsCisgICAgMjQyLDIzOSwyMzUsMTAxLDEyOCwgMzMsMjA3LDIzMiwyMjksMjI1LDI0NiwxMjEsMTI4LCAzOSwxNTgsMjM5LAorICAgIDI0NiwyMjksMjQyLDIzNiwyMjksMjMwLDExNiwxMjgsIDMzLDE5NiwyNDcsMjMyLDIzMywyNDQsMTAxLDEyOCwKKyAgICAgMzMsMjMyLDI0NCwyMjUsIDk4LCAgMiwgNTUsMTcwLCA1NSwxNzcsMjM2LDIyOSwyMzAsMTE2LDEyOCwgMzMsCisgICAgMjI4LDI0MiwyMzMsMjMxLDIzMiwxMTYsMTI4LCAzMywyMjksMjQ1LDExMiwxMzIsIDMzLDE0NSwgNTUsMTk4LAorICAgICA1NSwyMjYsIDU1LDI0NCwgNTUsMjUyLDEwMCwgIDIsIDU1LDIwNCwgNTUsMjE2LDExMCwxMjksIDMzLDE0OSwKKyAgICAgNTUsMjEwLDIyNiwyNDMsMTAxLDEyOCwgMzMsMTY4LDIzOSwyNDcsMjM4LDIyNiwyMjUsMjQzLDEwMSwxMjgsCisgICAgIDMzLDE2OCwyMzYsMjI5LDIzMCwxMTYsMTI5LCAzMywxNTAsIDU1LDIzNSwyMzksMjMwLDIyOCwyMzksMjQ3LAorICAgIDExMCwxMjgsIDMzLDE5NywyNDIsMjMzLDIzMSwyMzIsMTE2LDEyOCwgMzMsMTUxLDI0NywyMzIsMjMzLDI0NCwKKyAgICAxMDEsMTI4LCAzMywyMzEsMjQ2LDIyOSwyNDIsMjQ0LDIyOSwxMjAsMTI4LDI0OCwyMzAsMTE1LCAgNSwgNTYsCisgICAgIDI1LCA1NiwxMDEsIDU2LDE0NiwgNTYsMjI5LCA1NiwyMzksIDk5LCAgMiwgNTYsIDMxLCA1NiwgODMsMjMzLAorICAgIDEwNSwgIDIsIDU2LCAzOCwgNTYsIDYxLDIyNywyMzMsMjQyLDIyNywyNDUsMTA5LDEyOSwgIDAsIDk0LCA1NiwKKyAgICAgNDksMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgNjIsMjQ0LDIzMywyMzYsCisgICAgMjI4LDEwMSwxMjksICAwLDEyNiwgNTYsIDcxLDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLAorICAgIDEyOCwyNTUsIDk0LDI0MiwyMzMsMjQwLDExNiwxMjksICAyLCA4MSwgNTYsIDkyLDI0NCwyNDUsMjQyLDIzOCwKKyAgICAyMjksMTAwLDEyOCwgIDIsIDgyLDIzNywyMjUsMjM2LDEwOCwgIDIsIDU2LDExMCwgNTYsMTIxLDIzMiwyMzMsCisgICAgMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwgNjUsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LAorICAgICA5NywxMjksIDQ4LDE2MSwgNTYsMTM0LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwKKyAgICAyNTUsMTAzLDI0NCwyMjksMjQyLDIzMywxMTUsICAyLCA1NiwxNTYsIDU2LDIyNSwxMDcsMTMxLCAgMCwgNDIsCisgICAgIDU2LDE2NiwgNTYsMTk0LCA1NiwyMTcsIDk3LCAgMiwgNTYsMTcyLCA1NiwxODYsMjM2LDI0NCwyMzksMjM4LAorICAgIDIyOSwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LDEwOSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwKKyAgICAgIDYsMTA5LDEwOSwgIDIsIDU2LDIwMCwgNTYsMjA2LDIyNSwyNDQsMTA0LDEyOCwgMzQsIDIzLDIzOSwyMzgsCisgICAgMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMTAsMjQzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjU0LAorICAgICA5NywxMDksMTI4LCAzMiwgNjYsMjQ1LDI0MCwyMjksMjQyLDIzMywyMzksMTE0LDEyOCwyNDYsMjMzLDI0OSwKKyAgICAyMzcsMjQwLDI0NCwyMzksMjQ0LDIzMywyMjcsMjI1LDIzNiwyMzYsMjQ5LDIyOSwyNDEsMjQ1LDIyNSwxMDgsCisgICAgMTI4LCAzNCwgNjcsMTE2LDEzMiwgIDAsIDY0LCA1NywgMTUsIDU3LCAyMiwgNTcsIDM0LCA1NywgNDIsMjMzLAorICAgIDIzNiwyMjgsMTAxLDEyOCwgIDAsMjI3LDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwKKyAgICAyNTUsIDMyLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI1NCwxMDcsMjQ1LDI0MiwyMzgsMjI5LDEwMCwxMjgsCisgICAgICAyLCA4MCwxMTcsICA2LCA1NywgNjQsIDU3LCA4OSwgNTcsIDk2LCA1NywxMjEsIDU3LDE0MSwgNTcsMTU3LAorICAgICA5OCwgIDIsIDU3LCA3MCwgNTcsIDc5LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTQ4LDIzOSwKKyAgICAyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAzMiwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgMjAsCisgICAgMjMxLDExNywgIDIsIDU3LDEwMywgNTcsMTEyLDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTQ4LAorICAgIDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDIwLDIzNiwyMjksMjM4LDIzMSwyNDQsMjMyLDIzNywKKyAgICAyMjUsMjQyLDIzNSwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyMTUsMjM3LDIyNSwyNDQsCisgICAgMjQyLDIyNSwyMzEsMjQ1LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDc2LDI0NiwyMzksMjQ3LAorICAgIDIyOSwyMzYsMjQzLDIzMywyMzEsMTEwLCAgMywgNTcsMTczLCA1NywxODMsIDU3LDE5MCwyMjYsMjI5LDIzOCwKKyAgICAyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyMDQsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDc2LDIzMSwyNDUsCisgICAgMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwyMDQsMjQ2LDIyNSwyMzEsMjQyLDIyNSwyMzIsMjI1LAorICAgIDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCA2MSwxMjEsICAyLCA1NywyMjEsIDU3LDIzMywyMjYsMjI1LDI0MiwKKyAgICAyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LCA5NywyMzMsMTEwLDEzMCwgIDUsMjI2LCA1NywyNDIsCisgICAgIDU4LCAgMSwyMjUsMjM2LDI0NCwyMzksMjM4LDIyOSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLAorICAgICAzMiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIyNiwgOTgsMTQ0LCAgMCwgOTgsIDU4LCA0NiwKKyAgICAgNTgsMTgxLCA1OCwxOTIsIDU4LDIwMSwgNTgsMjI2LCA2MCwgMTEsIDYwLCA3MywgNjAsMTQ2LCA2MiwgNzIsCisgICAgIDYyLCA4NCwgNjIsMTI3LCA2MiwxMzUsIDYyLDE0NSwgNjQsIDE1LCA2NCwgMzksIDY0LCA0OCwgOTcsICA3LAorICAgICA1OCwgNjIsIDU4LCA3MiwgNTgsIDk2LCA1OCwxMDMsIDU4LDEyOCwgNTgsMTUyLCA1OCwxNjMsMjI2LDIyOSwKKyAgICAyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTcyLDIyNywyMzUsMjQzLDIzNiwyMjUsMjQzLDEwNCwxMjksCisgICAgICAwLCA5MiwgNTgsIDg0LDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDYwLAorICAgIDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCA0NCwyMzEsMTE3LCAgMiwgNTgsMTEwLCA1OCwxMTksMjM0LDIyNSwKKyAgICAyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNzIsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgNDQsCisgICAgMTA0LCAgMiwgNTgsMTM0LCA1OCwxNDQsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTEyLAorICAgIDI0NCwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNjMsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywKKyAgICAxMjgsIDQ4LDIwOCwxMTQsMTI5LCAgMCwxMjQsIDU4LDE2OSwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsCisgICAgMjI3LDEwMSwxMjgsMjU1LCA5MiwyMjYsMjM5LDI0MCwyMzksMjM3LDIzOSwyMzAsMTExLDEyOCwgNDksICA1LAorICAgIDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgMzYsMjA5LDIyOCwyMzksMTE2LCAgMiwgNTgsMjA5LCA1OCwKKyAgICAyMTgsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LCAzMCwgIDMsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsCisgICAgIDMwLCAgNSwxMDEsICA2LCA1OCwyNDAsIDU5LCAgNSwgNTksIDI4LCA1OSwxNzAsIDU5LDE4MSwgNTksMTkzLAorICAgIDIyNSwyMzcsMjI5LDIyOCwyNDMsMjMzLDI0OCwyNDQsMjI5LDIyOSwyMzgsMjQ0LDIzMiwyMzgsMjM5LDI0NCwKKyAgICAyMjksMTE1LDEyOCwgMzgsMTA4LCA5OSwgIDIsIDU5LCAxMSwgNTksIDE4LDIyNSwyNDUsMjQzLDEwMSwxMjgsCisgICAgIDM0LCA1MywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgNDksMTA0LCAgNSwgNTksIDQwLAorICAgICA1OSwgNDksIDU5LCA2MywgNTksIDkzLCA1OSwxNTIsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwKKyAgICAgNDAsMjMwLDIzMywyMzgsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDE0NCwxMDUsCisgICAgICAyLCA1OSwgNjksIDU5LCA4NCwyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLAorICAgICA5OSwxMjgsMjU0LDE0NSwyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDEyMSwyMzcsMTAxLCAgMiwKKyAgICAgNTksMTAwLCA1OSwxMTMsMjI4LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsCisgICAgMTQ2LDIyOSwyMzcsMTA1LCAgMiwgNTksMTIxLCA1OSwxMzYsMjM4LDIzMywyNDQsMjMzLDIyNSwyMzYsMjI1LAorICAgIDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MiwxNTksMjQzLDIzOSwyMzYsMjI1LDI0NCwyMjksMjI4LDIyNSwKKyAgICAyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTIsICA4LDIzOCwyMzksMjM5LDIzOCwyMzAsMjMzLDIzOCwyMjUsCisgICAgMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTIsMTA5LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LAorICAgIDIzOCwgOTcsMTI4LCA0OCwyMTcsMjM4LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwKKyAgICAgOTgsMTE2LDEzMiwgIDUsMjA5LCA1OSwyMDUsIDU5LDIyNSwgNTksMjQ1LCA1OSwyNTQsIDk3LDEyOSwgIDMsCisgICAgMTc4LCA1OSwyMTEsMjQzLDI0OSwyMzcsMjI2LDIzOSwyMzYsMjMxLDI0MiwyMjksMjI5LDEwNywxMjgsICAzLAorICAgIDIwOCwyMjgsMjI1LDIzMSwyMjksMjQzLDEwNCwxMjksMjUxLCA0OSwgNTksMjM2LDIzMiwyMjksMjI2LDI0MiwKKyAgICAyMjksMTE5LDEyOCwyNTEsIDQ5LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMjA5LDI0MiwyMjUsCisgICAgMjMwLDIyOSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLCA3NiwxMDQsICAyLCA2MCwgMTcsIDYwLAorICAgICA2NywgOTcsICAzLCA2MCwgMjUsIDYwLCAzNSwgNjAsIDQyLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwKKyAgICAxMjgsICA5LDE3MywyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNDUsMjMxLDExNywgIDIsIDYwLCA0OSwgNjAsCisgICAgIDU4LDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTczLDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LAorICAgIDEyOCwgMTAsIDQ1LDIzOSwyMzksMTA3LDEyOCwgIDIsIDgzLDEwNSwgIDUsIDYwLCA4NSwgNjAsIDk2LCA2MCwKKyAgICAxMDcsIDYwLDEyMSwgNjAsMTM1LDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxMTUsCisgICAgMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDIxMSwyMzYsMjI1LDIyNiwyMzMsMjI1LAorICAgIDIzNiwyMjcsMjM2LDIzMywyMjcsMTA3LDEyOCwgIDIsMTUyLDIzOCwyMjgsMjMzLDIzMSwyNDUsMjQyLDIzNywKKyAgICAyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgIDIsMjQyLDI0NSwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsCisgICAgIDUxLCA0OSwxMDgsICAzLCA2MCwxNTQsIDYyLCA1NSwgNjIsIDY2LCA5NywgIDIsIDYwLDE2MCwgNjIsIDUwLAorICAgIDIyNywxMDcsICA2LCA2MCwxNzUsIDYwLDE4NCwgNjAsMjIxLCA2MSwxMTQsIDYxLDE2OSwgNjEsMjIxLDIyNywKKyAgICAyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgMzcsMjA3LDEwMCwgIDIsIDYwLDE5MCwgNjAsMTk5LDIzMywyMjUsCisgICAgMjM3LDIzOSwyMzgsMTAwLDEyOCwgMzcsMTk4LDIzOSwyNDcsMjM4LDI0MCwyMzksMjMzLDIzOCwyNDQsMjMzLAorICAgIDIzOCwyMzEsMjQ0LDI0MiwyMzMsMjI1LDIzOCwyMzEsMjM2LDEwMSwxMjgsIDM3LDE4OCwxMDgsICAyLCA2MCwKKyAgICAyMjcsIDYxLCA3NCwxMDEsICAyLCA2MCwyMzMsIDYxLCAxMywyMzAsMjQ0LDI0MCwyMzksMjMzLDIzOCwyNDQsCisgICAgMjMzLDIzOCwxMDMsICAyLCA2MCwyNDgsIDYxLCAgMiwyNDAsMjM5LDIzMywyMzgsMjQ0LDIyOSwxMTQsMTI4LAorICAgICAzNywxOTYsMjQ0LDI0MiwyMzMsMjI1LDIzOCwyMzEsMjM2LDEwMSwxMjgsIDM3LDE5MiwyMzgsMjQ0LDIzMywKKyAgICAyMjcsMjQ1LDIzNiwyMjUsMjQyLDIyNiwyNDIsMjI1LDIyNywyMzUsMjI5LDExNiwgIDIsIDYxLCAzMywgNjEsCisgICAgIDUzLDIzNiwyMjksMjMwLDExNiwxMjksIDQ4LCAxNiwgNjEsIDQyLDI0NiwyMjksMjQyLDI0NCwyMzMsMjI3LAorICAgIDIyNSwxMDgsMTI4LDI1NCwgNTksMjQyLDIzMywyMzEsMjMyLDExNiwxMjksIDQ4LCAxNywgNjEsIDYzLDI0NiwKKyAgICAyMjksMjQyLDI0NCwyMzMsMjI3LDIyNSwxMDgsMTI4LDI1NCwgNjAsMjM5LDI0NywyMjksMTE0LCAgMiwgNjEsCisgICAgIDgzLCA2MSwgOTgsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyNDIsMjMzLDIyNSwyMzgsMjMxLDIzNiwxMDEsMTI4LAorICAgICAzNywyMjcsMjQyLDIzMywyMzEsMjMyLDI0NCwyNDQsMjQyLDIzMywyMjUsMjM4LDIzMSwyMzYsMTAxLDEyOCwKKyAgICAgMzcsMjI2LDExNCwgIDIsIDYxLDEyMCwgNjEsMTMxLDIyOSwyMjcsMjQ0LDIyNSwyMzgsMjMxLDIzNiwxMDEsCisgICAgMTI4LCAzNywxNzIsMjMzLDIzMSwyMzIsMjQ0LDI0MCwyMzksMjMzLDIzOCwyNDQsMjMzLDIzOCwxMDMsICAyLAorICAgICA2MSwxNDgsIDYxLDE1OCwyNDAsMjM5LDIzMywyMzgsMjQ0LDIyOSwxMTQsMTI4LCAzNywxODYsMjQ0LDI0MiwKKyAgICAyMzMsMjI1LDIzOCwyMzEsMjM2LDEwMSwxMjgsIDM3LDE4MiwxMTUsICAzLCA2MSwxNzcsIDYxLDIwNywgNjEsCisgICAgMjE1LDEwOSwgIDIsIDYxLDE4MywgNjEsMTk1LDIyNSwyMzYsMjM2LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLAorICAgIDEyOCwgMzcsMTcwLDIzMywyMzYsMjMzLDIzOCwyMzEsMjMwLDIyNSwyMjcsMTAxLDEyOCwgMzgsIDU5LDI0MSwKKyAgICAyNDUsMjI1LDI0MiwxMDEsMTI4LCAzNywxNjAsMjQ0LDIyNSwxMTQsMTI4LCAzOCwgIDUsMjQ1LDI0MCwxMTIsCisgICAgICAyLCA2MSwyMjksIDYyLCAxMSwyMjksMTE0LCAgMiwgNjEsMjM2LCA2MSwyNTEsMjM2LDIyOSwyMzAsMjQ0LAorICAgIDI0NCwyNDIsMjMzLDIyNSwyMzgsMjMxLDIzNiwxMDEsMTI4LCAzNywyMjgsMjQyLDIzMywyMzEsMjMyLDI0NCwKKyAgICAyNDQsMjQyLDIzMywyMjUsMjM4LDIzMSwyMzYsMTAxLDEyOCwgMzcsMjI5LDIzOSwyMzMsMjM4LDI0NCwyMzMsCisgICAgMjM4LDEwMywgIDIsIDYyLCAyMywgNjIsIDM5LDI0MywyMzcsMjI1LDIzNiwyMzYsMjQ0LDI0MiwyMzMsMjI1LAorICAgIDIzOCwyMzEsMjM2LDEwMSwxMjgsIDM3LDE4MCwyNDQsMjQyLDIzMywyMjUsMjM4LDIzMSwyMzYsMTAxLDEyOCwKKyAgICAgMzcsMTc4LDIzOCwxMDcsMTI4LCAzNiwgMzUsMjMzLDIzOCwyMjksMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsCisgICAgIDMwLCAgNywyMzksMjI3LDEwNywxMjgsIDM3LDEzNiwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LAorICAgIDEwMSwxMjgsMjU1LCA2NiwxMTEsICAzLCA2MiwgOTIsIDYyLDEwNSwgNjIsMTE2LDIyNiwyMjUsMjMzLDIzNywKKyAgICAyMjUsMjMzLDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAyNiwyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsCisgICAgIDk3LDEyOCwgNDgsMTI0LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwyMjAsMjQwLAorICAgIDIyNSwyNDIsMjI5LDExMCwxMjgsIDM2LDE1NywyNDEsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwKKyAgICAxOTUsMTE0LCAgNCwgNjIsMTU1LCA2MywxNDksIDYzLDIyMiwgNjQsICA1LDIyNSwgOTksICAyLCA2MiwxNjIsCisgICAgIDYzLCA1NiwxMDEsICAzLCA2MiwxNzAsIDYyLDE3NSwgNjIsMjQzLDIyOSwxMjAsMTI4LDI0OCwyNDQsMjM2LAorICAgIDIyOSwyMzAsMTE2LDEzMywgIDAsMTIzLCA2MiwxOTIsIDYyLDE5NywgNjIsMjE5LCA2MiwyMjcsIDYyLDIzMiwKKyAgICAyMjYsMTE2LDEyOCwyNDgsMjQzLDEwOSwgIDIsIDYyLDIwMywgNjIsMjA4LDIzMywxMDAsMTI4LDI0OCwyNDIsCisgICAgMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCA5MSwyNDMsMjM3LDIyNSwyMzYsMTA4LAorICAgIDEyOCwyNTQsIDkxLDI0NCwxMTIsMTI4LDI0OCwyNDEsMjQ2LDIyOSwyNDIsMjQ0LDIzMywyMjcsMjI1LDEwOCwKKyAgICAxMjgsMjU0LCA1NSwyNDIsMjMzLDIzMSwyMzIsMTE2LDEzMywgIDAsMTI1LCA2MywgIDUsIDYzLCAxMCwgNjMsCisgICAgIDMyLCA2MywgNDAsIDYzLCA0NSwyMjYsMTE2LDEyOCwyNDgsMjU0LDEwOSwgIDIsIDYzLCAxNiwgNjMsIDIxLAorICAgIDIzMywxMDAsMTI4LDI0OCwyNTMsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCA5MywKKyAgICAyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNTQsIDkyLDI0NCwxMTIsMTI4LDI0OCwyNTIsMjQ2LDIyOSwyNDIsCisgICAgMjQ0LDIzMywyMjcsMjI1LDEwOCwxMjgsMjU0LCA1NiwyMzUsMjI5LDExNiwgIDIsIDYzLCA2NCwgNjMsMTA2LAorICAgIDIzNiwyMjksMjMwLDExNiwxMzIsICAwLCA5MSwgNjMsIDc5LCA2MywgODQsIDYzLCA4OSwgNjMsMTAxLDIyNiwKKyAgICAxMTYsMTI4LDI0OCwyNDAsMjI5LDEyMCwxMjgsMjQ4LDIzOSwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsCisgICAgMjI3LDEwMSwxMjgsMjU1LCA1OSwyNDQsMTEyLDEyOCwyNDgsMjM4LDI0MiwyMzMsMjMxLDIzMiwxMTYsMTMyLAorICAgICAgMCwgOTMsIDYzLDEyMiwgNjMsMTI3LCA2MywxMzIsIDYzLDE0NCwyMjYsMTE2LDEyOCwyNDgsMjUxLDIyOSwKKyAgICAxMjAsMTI4LDI0OCwyNTAsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgNjEsCisgICAgMjQ0LDExMiwxMjgsMjQ4LDI0OSwyMjksMjQ2LDEwMSwxMzEsICAyLDIxNiwgNjMsMTYxLCA2MywxNzIsIDYzLAorICAgIDE3OCwyMjYsMjI5LDIzNiwyMzksMjQ3LDIyNywyMzcsIDk4LDEyOCwgIDMsIDQ2LDIyNywyMzcsIDk4LDEyOCwKKyAgICAgIDMsICA2LDIzMywyMzgsMjQ2LDIyOSwyNDIsMjQ0LDIyOSwxMDAsICAzLCA2MywxOTMsIDYzLDIwNCwgNjMsCisgICAgMjEwLDIyNiwyMjksMjM2LDIzOSwyNDcsMjI3LDIzNywgOTgsMTI4LCAgMywgNDcsMjI3LDIzNywgOTgsMTI4LAorICAgICAgMywgMTcsMjI4LDIzOSwyNDUsMjI2LDIzNiwyMjksMjI3LDIzNywgOTgsMTI4LCAgMywgOTcsMjMzLDIyOCwKKyAgICAyMzEsMTAxLCAgMiwgNjMsMjMxLCA2MywyNDIsMjI2LDIyOSwyMzYsMjM5LDI0NywyMjcsMjM3LCA5OCwxMjgsCisgICAgICAzLCA0MiwyMzMsMjM4LDI0NiwyMjksMjQyLDI0NCwyMjksMjI4LDIyNiwyMjksMjM2LDIzOSwyNDcsMjI3LAorICAgIDIzNywgOTgsMTI4LCAgMywgNTgsMjM5LDIzNSwyMjksMjM4LDIyNiwyMjUsMTE0LDEyOCwgIDAsMTY2LDExNSwKKyAgICAgIDIsIDY0LCAyMSwgNjQsIDI5LDI0NCwyNDIsMjM5LDIzNSwxMDEsMTI4LCAgMSwxMjgsMjQ1LDI0MCwyMjksCisgICAgMjQyLDIzMywyMzksMTE0LDEyOCwyNDYsMjM0LDI0NCwyMzksMjQwLDIyNiwyMjUsMTE0LDEyOCwgIDEsMTMxLAorICAgIDExNywgIDMsIDY0LCA1NiwgNjQsIDY3LCA2NCwgNzgsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywKKyAgICAxMjgsIDQ4LDExOCwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOCwgNDgsMjE0LDIzNiwxMDgsCisgICAgICAyLCA2NCwgODUsIDY0LDExNSwyMjksMTE2LDEzMCwgMzIsIDM0LCA2NCwgOTQsIDY0LDEwNCwyMzMsMjM4LAorICAgIDI0NiwyMjksMjQyLDI0MywxMDEsMTI4LCAzNywyMTYsMjM5LDI0MCwyMjksMjQyLDIyNSwyNDQsMjM5LDExNCwKKyAgICAxMjgsIDM0LCAyNSwyNDMsMjI5LDI0OSwxMDEsMTI4LCAzNywyMDYsIDk5LDE0MywgIDAsIDk5LCA2NCwxNTYsCisgICAgIDY1LDEwNSwgNjUsMTE2LCA2NSwxODAsIDY1LDIxMSwgNjYsIDQ4LCA2NywyMTUsIDY4LDE5OSwgNjksIDQzLAorICAgICA2OSwgOTIsIDcyLCA4NCwgNzIsIDkyLCA3MiwxMDIsIDcyLDExNCwgNzIsMTQ3LCA5NywgIDksIDY0LDE3NiwKKyAgICAgNjQsMTg3LCA2NCwxOTcsIDY0LDIwNCwgNjQsMjExLCA2NCwyMzYsIDY0LDI0NiwgNjUsIDQyLCA2NSwgNTEsCisgICAgMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LDExMCwyMjYsMjI5LDIzOCwyMzEsMjI1LAorICAgIDIzNiwxMDUsMTI4LCAgOSwxNTQsMjI3LDI0NSwyNDQsMTAxLDEyOCwgIDEsICA3LDIyOCwyMjksMjQ2LCA5NywKKyAgICAxMjgsICA5LCAyNiwyMzEsMTE3LCAgMiwgNjQsMjE4LCA2NCwyMjcsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsCisgICAgMTI4LCAxMCwxNTQsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgMjYsMjM2LDI0MywyNDEsMjQ1LAorICAgIDIyNSwyNDIsMTAxLDEyOCwgNTEsMTM2LDIzOCwyMjgsMjQyLDIyNSwyMjYsMjMzLDIzOCwyMjgsMTE3LCAgNCwKKyAgICAgNjUsICA4LCA2NSwgMTgsIDY1LCAyNCwgNjUsIDMxLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsCisgICAgICA5LDEyOSwyMjcsMjM3LCA5OCwxMjgsICAzLCAxNiwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgIDEsMjMxLAorICAgIDI0NSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDEyOSwyNDAsMjQzLDIzNiwyMzksMjI3LDEwNywKKyAgICAxMjgsIDMzLDIzNCwxMTQsICAzLCA2NSwgNTksIDY1LCA2NSwgNjUsIDkxLDIyOSwyMzksMTAyLDEyOCwgMzMsCisgICAgICA1LDIzOSwxMTAsMTMwLCAgMiwxOTksIDY1LCA3NCwgNjUsIDg1LDIyNiwyMjksMjM2LDIzOSwyNDcsMjI3LAorICAgIDIzNywgOTgsMTI4LCAgMywgNDQsMjI3LDIzNywgOTgsMTI4LCAgMywgMTIsMjQyLDIzMywyMjUsMjMxLDIyOSwKKyAgICAyNDIsMjI5LDI0NCwyNDUsMjQyLDExMCwxMjgsIDMzLDE4MSwyMjYsMjM5LDI0MCwyMzksMjM3LDIzOSwyMzAsCisgICAgMTExLDEyOCwgNDksIDI0LCA5OSwgIDQsIDY1LDEyNiwgNjUsMTMzLCA2NSwxNTIsIDY1LDE3NCwyMjUsMjQyLAorICAgIDIzOSwxMTAsMTI4LCAgMSwgMTMsMjI5LDIyOCwyMzMsMjM2LDIzNiwgOTcsMTI5LCAgMCwyMzEsIDY1LDE0NCwKKyAgICAyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOCwgMzAsICA5LDIzMywyNDIsIDk5LCAgMiwgNjUsMTYwLCA2NSwxNjUsCisgICAgMjM2LDEwMSwxMjgsIDM2LDIxMCwyNDUsMjM3LDIzMCwyMzYsMjI5LDEyMCwxMjgsICAxLCAgOSwyNDUsMjQyLAorICAgIDEwOCwxMjgsICAyLCA4NSwxMDAsICAyLCA2NSwxODYsIDY1LDIwMiwyMzksMTE2LDEyOSwgIDEsIDExLCA2NSwKKyAgICAxOTMsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LCAgMSwgMTEsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsCisgICAgMTI4LCA1MSwxOTcsMTAxLCAgMiwgNjUsMjE3LCA2NSwyMzMsMjI4LDIzMywyMzYsMjM2LCA5NywxMjksICAwLAorICAgIDE4NCwgNjUsMjI3LDIyNywyMzcsIDk4LDEyOCwgIDMsIDM5LDIzOCwxMTYsMTMyLCAgMCwxNjIsIDY1LDI0NiwKKyAgICAgNjYsIDE0LCA2NiwgMjYsIDY2LCAzNywxMDUsICAyLCA2NSwyNTIsIDY2LCAgNCwyMzEsMjQyLDIyNSwyMjgsCisgICAgMTAxLDEyOCwgMzMsICAzLDIzOCwyMzAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsMjQ2LDIyMywyMzcsMjM5LAorICAgIDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LDIyNCwyMzksMjM2LDIyOCwyNDMsMjQ0LDI0OSwKKyAgICAyMzYsMTAxLDEyOCwyNDcsMTYyLDI0MywyNDUsMjQwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LDI0NiwyMjQsCisgICAgMTA0LCAgNSwgNjYsIDYwLCA2NiwxMjMsIDY2LDEzNCwgNjcsIDYyLCA2NywxNTQsIDk3LCAgNCwgNjYsIDcwLAorICAgICA2NiwgODEsIDY2LCA5MSwgNjYsIDk4LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwKKyAgICAxMjEsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTU1LDIyOCwyMjksMjQ2LCA5NywxMjgsCisgICAgICA5LCAyNywyMzEsMTE3LCAgMiwgNjYsMTA1LCA2NiwxMTQsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LAorICAgICAxMCwxNTUsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgMjcsMjI2LDIzOSwyNDAsMjM5LDIzNywKKyAgICAyMzksMjMwLDExMSwxMjgsIDQ5LCAyMCwxMDEsICA2LCA2NiwxNDgsIDY2LDE2OCwgNjYsMTkyLCA2NywgIDQsCisgICAgIDY3LCAxNiwgNjcsIDM3LDIyNSwyMjYsMjM1LDIzMiwyMjUsMjQzLDIzMywyMjUsMjM4LDIyNywyNDksMjQyLAorICAgIDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxODksIDk5LCAgMiwgNjYsMTc0LCA2NiwxODIsMjM1LDIzNywKKyAgICAyMjUsMjQyLDEwNywxMjgsIDM5LCAxOSwyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgNzEsCisgICAgMTAwLCAgMiwgNjYsMTk4LCA2NiwyNDIsMjI5LDI0MywyMjcsMjI5LDIzOCwyMjgsMjI5LDExNCwgIDIsIDY2LAorICAgIDIxMSwgNjYsMjMxLDIyNSwyMjYsMjM1LDIzMiwyMjUsMjQzLDIzMywyMjUsMjM4LDIyNywyNDksMjQyLDIzMywKKyAgICAyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxOTEsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsCisgICAgICA0LDE4MywyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywyNDMsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLAorICAgICA5OSwxMjgsICA0LDI0NSwyMzIsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LDExNSwKKyAgICAyMzUsMjMyLDIyNSwyMzUsMjI1LDI0MywyNDMsMjMzLDIyNSwyMzgsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsCisgICAgMjMzLCA5OSwxMjgsICA0LDIwNCwyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMjM2LDI0MywyNDQsMjQyLAorICAgIDIzOSwyMzUsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxODUsMTA1LDEyOSwKKyAgICAgIDMsMTk5LCA2NywgNjgsMjI5LDI0NSwyMjcsMTA0LCAgNCwgNjcsIDgxLCA2NywxMTYsIDY3LDEzMSwgNjcsCisgICAgMTQwLCA5NywgIDIsIDY3LCA4NywgNjcsMTAyLDIyNywyMzMsMjQyLDIyNywyMzYsMjI5LDIzNSwyMzksMjQyLAorICAgIDIyOSwyMjUsMTEwLDEyOCwgNTAsMTE5LDI0MCwyMjUsMjQyLDIyOSwyMzgsMjM1LDIzOSwyNDIsMjI5LDIyNSwKKyAgICAxMTAsMTI4LCA1MCwgMjMsMjI3LDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsCisgICAgMTI4LCA1MCwxMDUsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgNzQsMjQwLDIyNSwyNDIsMjI5LAorICAgIDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLCAgOSwxMTEsICAyLCA2NywxNjAsIDY3LDIxMCwKKyAgICAyMjcsMTA0LCAgMywgNjcsMTY5LCA2NywxOTEsIDY3LDIwMSwyMjUsMTEwLCAgMiwgNjcsMTc2LCA2NywxODQsCisgICAgMjMxLDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAxMCwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgIDgsMjMzLAorICAgIDIzOCwyMzEsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsICA5LDIzOSwyMjksMjQ0LDIzMiwyMjUsMTA1LDEyOCwKKyAgICAgMTQsIDEyLDIzOSwxMDcsMTI4LCAgMSwxMzYsMTA1LCAgMiwgNjcsMjIxLCA2OCwgNjcsMjI5LDI0NSwgOTksCisgICAgICA1LCA2NywyMzUsIDY4LCAxNCwgNjgsIDI5LCA2OCwgMzgsIDY4LCA1MiwgOTcsICAyLCA2NywyNDEsIDY4LAorICAgICAgMCwyMjcsMjMzLDI0MiwyMjcsMjM2LDIyOSwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLDExOCwKKyAgICAyNDAsMjI1LDI0MiwyMjksMjM4LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsIDIyLDIyNywyMzMsCisgICAgMjQyLDIyNywyMzYsMjI5LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsMTA0LDIzNSwyMzksMjQyLAorICAgIDIyOSwyMjUsMTEwLDEyOCwgNDksIDcyLDI0MCwyMjUsMjQyLDIyOSwyMzgsMjM1LDIzOSwyNDIsMjI5LDIyNSwKKyAgICAxMTAsMTI4LCA1MCwgIDgsMjQ1LDI0MCwyMjUsMjQyLDIyOSwyMzgsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsCisgICAgMTI4LCA1MCwgMjgsMjQyLCA5OSwgIDIsIDY4LCA3NCwgNjgsMTY5LDIzNiwxMDEsMTMyLCAzNywyMDMsIDY4LAorICAgICA4NywgNjgsIDk4LCA2OCwxMDMsIDY4LDEyNywyMzcsMjQ1LDIzNiwyNDQsMjMzLDI0MCwyMzYsMTIxLDEyOCwKKyAgICAgMzQsMTUxLDIzOSwxMTYsMTI4LCAzNCwxNTMsMTEyLCAgMiwgNjgsMTA5LCA2OCwxMTUsMjM2LDI0NSwxMTUsCisgICAgMTI4LCAzNCwxNDksMjM5LDI0MywyNDQsMjI1LDIzNiwyMzcsMjI1LDI0MiwxMDcsMTI4LCA0OCwgNTQsMjQ3LAorICAgIDIzMywyNDQsMTA0LCAgMiwgNjgsMTM2LCA2OCwxNTIsMjM2LDIyOSwyMzAsMjQ0LDIzMiwyMjUsMjM2LDIzMCwKKyAgICAyMjYsMjM2LDIyNSwyMjcsMTA3LDEyOCwgMzcsMjA4LDI0MiwyMzMsMjMxLDIzMiwyNDQsMjMyLDIyNSwyMzYsCisgICAgMjMwLDIyNiwyMzYsMjI1LDIyNywxMDcsMTI4LCAzNywyMDksMjQ1LDIzNywyMzAsMjM2LDIyOSwxMjAsMTMwLAorICAgICAgMiwxOTgsIDY4LDE4MiwgNjgsMTkzLDIyNiwyMjksMjM2LDIzOSwyNDcsMjI3LDIzNywgOTgsMTI4LCAgMywKKyAgICAgNDUsMjI3LDIzNywgOTgsMTI4LCAgMywgIDIsMTA4LCAgMywgNjgsMjA3LCA2OCwyMTMsIDY5LCAxMSwyMjksCisgICAgMjI1LDExNCwxMjgsIDM1LCAzOSwyMzMsMjI3LDEwNywgIDQsIDY4LDIyNSwgNjgsMjM2LCA2OCwyNDUsIDY4LAorICAgIDI1NSwyMjUsMjM2LDI0NiwyMjksMjM5LDIzNiwyMjUsMTE0LDEyOCwgIDEsMTk0LDIyOCwyMjksMjM4LDI0NCwKKyAgICAyMjUsMTA4LDEyOCwgIDEsMTkyLDIzNiwyMjUsMjQ0LDIyOSwyNDIsMjI1LDEwOCwxMjgsICAxLDE5MywyNDIsCisgICAgMjI5LDI0NCwyNDIsMjM5LDIzMCwyMzYsMjI5LDEyMCwxMjgsICAxLDE5NSwyNDUsIDk4LDEyOSwgMzgsIDk5LAorICAgICA2OSwgMTgsMjQzLDI0NSwyMzMsMTE2LCAgMiwgNjksIDI3LCA2OSwgMzUsMjI2LDIzNiwyMjUsMjI3LDEwNywKKyAgICAxMjgsIDM4LCA5OSwyNDcsMjMyLDIzMywyNDQsMTAxLDEyOCwgMzgsMTAzLDEwOSwgIDMsIDY5LCA1MSwgNjksCisgICAgIDY1LCA2OSwgNzYsMjI3LDI0NSwyMjYsMjI5LDIyOCwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLAorICAgIDE2NCwyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDY3LDI0MywyNDEsMjQ1LDIyNSwKKyAgICAyNDIsMjI5LDIyOCwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDE2MCwxMTEsICA4LCA2OSwxMTAsCisgICAgIDY5LDEyMSwgNjksMjA4LCA3MCwxNTAsIDcxLDE3OSwgNzEsMjEwLCA3MiwgNjEsIDcyLCA3MCwyMjUsMjQyLAorICAgIDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsMTI5LDIzNiwyMzksMTEwLDEzMSwgIDAsIDU4LCA2OSwKKyAgICAxMzMsIDY5LDE1OCwgNjksMTc3LDIzNywyMzksMTEwLCAgMiwgNjksMTQxLCA2OSwxNDksMjI5LDI0NCwyMjUsCisgICAgMjQyLDEyMSwxMjgsIDMyLDE2MSwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCAyNiwxMTUsICAyLAorICAgICA2OSwxNjQsIDY5LDE3MCwyMzMsMjMxLDExMCwxMjgsIDMyLDE2MSwyMzcsMjI1LDIzNiwxMDgsMTI4LDI1NCwKKyAgICAgODUsMjQ0LDI0MiwyMzMsMjI1LDIzOCwyMzEsMjQ1LDIzNiwyMjUsMTE0LCAgMiwgNjksMTkyLCA2OSwyMDIsCisgICAgMjMyLDIyNSwyMzYsMjMwLDIzNywyMzksMTAwLDEyOCwgIDIsMjA5LDIzNywyMzksMTAwLDEyOCwgIDIsMjA4LAorICAgIDEwOSwgIDIsIDY5LDIxNCwgNzAsMTQzLDIzNywgOTcsMTM0LCAgMCwgNDQsIDY5LDIzMSwgNzAsIDM5LCA3MCwKKyAgICAgNTAsIDcwLCA2MiwgNzAsIDkyLCA3MCwxMTUsIDk3LCAgMywgNjksMjM5LCA3MCwgIDksIDcwLCAxNywyMjYsCisgICAgMjM5LDI0NiwxMDEsICAyLCA2OSwyNDgsIDY5LDI1NCwyMjcsMjM3LCA5OCwxMjgsICAzLCAxOSwyNDIsMjMzLAorICAgIDIzMSwyMzIsMjQ0LDIyNywyMzcsIDk4LDEyOCwgIDMsIDIxLDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LDI0NiwKKyAgICAxOTUsMTE0LCAgMiwgNzAsIDIzLCA3MCwgMzAsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDEyLDIzNywyMjksCisgICAgMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDkzLDIzMywyMzgsMjMwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LAorICAgIDI0NiwyMjUsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMTIsMjQyLDIyOSwKKyAgICAyNDYsMjI5LDI0MiwyNDMsMjI5LDEwMCwgIDIsIDcwLCA3NSwgNzAsIDg2LDIyNSwyMjYsMjM5LDI0NiwyMjksCisgICAgMjI3LDIzNywgOTgsMTI4LCAgMywgMjAsMjM3LDIzOSwxMDAsMTI4LCAgMiwxODksMTE1LCAgMiwgNzAsIDk4LAorICAgICA3MCwxMDUsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNTQsIDgwLDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LDExNCwKKyAgICAxMjgsMjQ2LDIyNiwyNDQsMjQ1LDI0MiwyMzgsMjI5LDEwMCwgIDIsIDcwLDEyNiwgNzAsMTM3LDIyNSwyMjYsCisgICAgMjM5LDI0NiwyMjksMjI3LDIzNywgOTgsMTI4LCAgMywgMTgsMjM3LDIzOSwxMDAsMTI4LCAgMiwxODcsMjQwLAorICAgIDIyNSwyNDMsMTE1LDEyOCwgMzgsIDYwLDExMCwgIDIsIDcwLDE1NiwgNzAsMTY1LDIzMSwyNDIsMjQ1LDIyOSwKKyAgICAyMzgsMTE2LDEyOCwgMzQsIDY5LDExNiwgIDIsIDcwLDE3MSwgNzAsMTg1LDIzOSwyNDUsMjQyLDIzMywyMzgsCisgICAgMjQ0LDIyOSwyMzEsMjQyLDIyNSwxMDgsMTI4LCAzNCwgNDYsMjQyLDIzOSwxMDgsMTQyLCAzNSwgIDMsIDcwLAorICAgIDIxOSwgNzAsMjI1LCA3MCwyNDAsIDcwLDI1NSwgNzEsIDQzLCA3MSwgODgsIDcxLDEwMiwgNzEsMTA3LCA3MSwKKyAgICAxMTIsIDcxLDExNywgNzEsMTIzLCA3MSwxMjgsIDcxLDE2OSwgNzEsMTc0LDE5MywxOTUsIDc1LDEyOCwgIDAsCisgICAgICA2LCA2NiwgIDIsIDcwLDIzMSwgNzAsMjM2LDE5NywgNzYsMTI4LCAgMCwgIDcsIDgzLDEyOCwgIDAsICA4LAorICAgICA2NywgIDIsIDcwLDI0NiwgNzAsMjUxLDE5MywgNzgsMTI4LCAgMCwgMjQsIDgyLDEyOCwgIDAsIDEzLCA2OCwKKyAgICAgIDMsIDcxLCAgNywgNzEsIDMzLCA3MSwgMzgsIDY3LCAgNCwgNzEsIDE3LCA3MSwgMjEsIDcxLCAyNSwgNzEsCisgICAgIDI5LCA0OSwxMjgsICAwLCAxNywgNTAsMTI4LCAgMCwgMTgsIDUxLDEyOCwgIDAsIDE5LCA1MiwxMjgsICAwLAorICAgICAyMCwxOTcsIDc2LDEyOCwgIDAsMTI3LDIwNCwgNjksMTI4LCAgMCwgMTYsIDY5LCAgNSwgNzEsIDU1LCA3MSwKKyAgICAgNTksIDcxLCA2NCwgNzEsIDY5LCA3MSwgNzQsIDc3LDEyOCwgIDAsIDI1LDIwNiwgODEsMTI4LCAgMCwgIDUsCisgICAgMjA3LCA4NCwxMjgsICAwLCAgNCwyMTEsIDY3LDEyOCwgIDAsIDI3LCA4NCwgIDIsIDcxLCA4MCwgNzEsIDg0LAorICAgICA2NiwxMjgsICAwLCAyMywgODgsMTI4LCAgMCwgIDMsIDcwLCAgMiwgNzEsIDk0LCA3MSwgOTgsIDcwLDEyOCwKKyAgICAgIDAsIDEyLCA4MywxMjgsICAwLCAyOCwxOTksIDgzLDEyOCwgIDAsIDI5LDIwMCwgODQsMTI4LCAgMCwgIDksCisgICAgMjA0LCA3MCwxMjgsICAwLCAxMCwyMDYsMTkzLCA3NSwxMjgsICAwLCAyMSwyMTAsIDgzLDEyOCwgIDAsIDMwLAorICAgICA4MywgIDUsIDcxLDE0MCwgNzEsMTQ0LCA3MSwxNTQsIDcxLDE1OSwgNzEsMTY0LCA3MywxMjgsICAwLCAxNSwKKyAgICAgNzksMTI5LCAgMCwgMTQsIDcxLDE1MCwgODQsMTI4LCAgMCwgIDIsMjEyLCA4OCwxMjgsICAwLCAgMSwyMTMsCisgICAgIDY2LDEyOCwgIDAsIDI2LDIxNywgNzgsMTI4LCAgMCwgMjIsMjEzLCA4MywxMjgsICAwLCAzMSwyMTQsIDg0LAorICAgIDEyOCwgIDAsIDExLDI0MCwyNDksMjQyLDIzMywyMzEsMjMyLDExNiwxMjksICAwLDE2OSwgNzEsMTkxLDExNSwKKyAgICAgIDIsIDcxLDE5NywgNzEsMjAzLDIyNSwyMzgsMTE1LDEyOCwyNDgsMjMzLDIyOSwyNDIsMjMzLDEwMiwxMjgsCisgICAgMjQ2LDIxNywxMTQsICAyLCA3MSwyMTYsIDcyLCA0NCwyMzgsMjI5LDI0MiwyMjYsMjQyLDIyNSwyMjcsMjM1LAorICAgIDIyOSwxMTYsICAyLCA3MSwyMzEsIDcyLCAgOSwyMzYsMjI5LDIzMCwxMTYsMTMwLCA0OCwgMTIsIDcxLDI0MiwKKyAgICAgNzEsMjU0LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsIDk4LDI0NiwyMjksCisgICAgMjQyLDI0NCwyMzMsMjI3LDIyNSwxMDgsMTI4LDI1NCwgNjUsMjQyLDIzMywyMzEsMjMyLDExNiwxMzAsIDQ4LAorICAgICAxMywgNzIsIDIxLCA3MiwgMzMsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwKKyAgICAgOTksMjQ2LDIyOSwyNDIsMjQ0LDIzMywyMjcsMjI1LDEwOCwxMjgsMjU0LCA2NiwyNDAsMjM5LDI0MiwyMjUsCisgICAgMjQ0LDIzMywyMzksMjM4LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTI3LDI0MywyNDEsMjQ1LAorICAgIDIyNSwyNDIsMTAxLDEyOCwgNTEsMTk5LDI0NiwyMjksMjQyLDIzNSwyMzEsMjQzLDI0MSwyNDUsMjI1LDI0MiwKKyAgICAxMDEsMTI4LCA1MSwxOTgsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDM2LDE1OCwyNDIsMjQ1LDI1MCwyMjksCisgICAgMjMzLDI0MiwxMTEsMTI4LCAzMiwxNjIsMjQzLDI0NCwyNDIsMjI5LDI0NCwyMjcsMjMyLDIyOSwxMDAsMTI4LAorICAgICAgMiwxNTEsMjQ1LDExNCwgIDIsIDcyLDEyMSwgNzIsMTM5LDIzNiwxMjEsICAyLCA3MiwxMjgsIDcyLDEzNCwKKyAgICAyMjUsMjM4LDEwMCwxMjgsIDM0LDIwNywyMzksMTE0LDEyOCwgMzQsMjA2LDI0MiwyMjksMjM4LDIyNywxMjEsCisgICAgMTI4LCAgMCwxNjQsMjQ5LDExNCwgIDQsIDcyLDE1OCwgNzIsMTY2LCA3MiwxNzMsIDcyLDE4MSwxOTQsMjQyLAorICAgIDIyOSwyNDYsMTAxLDEyOCwyNDYsMjA5LDE5OCwyMzYsMjI5LDEyMCwxMjgsMjQ2LDIxMCwyMjYsMjQyLDIyOSwKKyAgICAyNDYsMTAxLDEyOCwyNDYsMjEyLDIzMCwyMzYsMjI5LDEyMCwxMjgsMjQ2LDIxMywxMDAsMTQ2LCAgMCwxMDAsCisgICAgIDcyLDIyOCwgNzQsMTEwLCA3NSwxMzQsIDc1LDE5NCwgNzYsMTE0LCA3NywgNjgsIDc3LDEzMCwgNzgsIDU5LAorICAgICA3OCwgNzIsIDc4LCA4MSwgNzgsMTA3LCA3OCwxMzIsIDc4LDE0MSwgNzksMjA4LCA3OSwyMTYsIDc5LDIyNywKKyAgICAgNzksMjQ3LCA4MCwgMTksIDk3LCAxMSwgNzIsMjUyLCA3MywgIDcsIDczLCAxNywgNzMsIDg5LCA3MywxNTIsCisgICAgIDczLDE2MywgNzMsMTc0LCA3MywyNDMsIDc0LCA0OSwgNzQsIDU1LCA3NCwgODUsMjI1LDI0MiwyMzcsMjI5LAorICAgIDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LDEwMCwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwKKyAgICAxNjYsMTAwLCAgNSwgNzMsIDI5LCA3MywgMzgsIDczLCA0NCwgNzMsIDU4LCA3MywgNzQsMjI1LDI0MiwyMjUsCisgICAgMjI2LDIzMywgOTksMTI4LCAgNiwgNTQsMjI5LDI0NiwgOTcsMTI4LCAgOSwgMzgsMjMwLDIzMywyMzgsMjI1LAorICAgIDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDE5MCwyMzMsMjM4LDIzMywyNDQsMjMzLDIyNSwKKyAgICAyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwxOTEsMjM3LDIyOSwyMjgsMjMzLDIyNSwyMzYsCisgICAgMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwxOTIsMTAzLCAgMywgNzMsIDk3LCA3MywxMTQsIDczLAorICAgIDEyOCwyMjksMjQzLDEwNCwxMjksICA1LDE4OCwgNzMsMTA1LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwKKyAgICAgIDUsMTg4LDIzMSwyMjksMTE0LDEyOSwgMzIsIDMyLCA3MywxMjIsMjI4LDIyNiwxMDgsMTI4LCAzMiwgMzMsCisgICAgMTE3LCAgMiwgNzMsMTM0LCA3MywxNDMsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNjYsMjQyLAorICAgIDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgMzgsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywKKyAgICAxMjgsIDQ4LCA5NiwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOCwgNDgsMTkyLDEwOCwgIDMsCisgICAgIDczLDE4MiwgNzMsMTkxLCA3MywyMjksMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwgNDcsMjI5LAorICAgIDExNiwxMzAsICA1LDIxMSwgNzMsMjAwLCA3MywyMjAsMjI4LDIyNSwyMzEsMjI5LDI0MywxMDQsMTI5LDI1MSwKKyAgICAgNTEsIDczLDIxMSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLCA1MSwyMzIsMjI5LDIyNiwyNDIsCisgICAgMjI5LDExOSwxMjgsICA1LDIxMSwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LAorICAgIDEyOCwyNTQsMTcwLDIzNywyMzcsIDk3LCAgMywgNzMsMjUzLCA3NCwgIDYsIDc0LCAxOCwyMjUsMjQyLDIyNSwKKyAgICAyMjYsMjMzLCA5OSwxMjgsICA2LCA3OSwyMzYsMjM5LDI0NywyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsCisgICAgICA2LCA3OSwyNDQsMjI1LDIzOCwgOTcsICAyLCA3NCwgMjcsIDc0LCA0MSwyMzYsMjQ0LDIzOSwyMzgsMjI5LAorICAgIDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDc2LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwKKyAgICAgNzYsMjM4LDIyOCwgOTcsMTI4LCAgOSwxMDAsMjQyLDIzMSwgOTcsICAyLCA3NCwgNjMsIDc0LCA3MiwyMzIsCisgICAgMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE2NywyMzYsMjI5LDIzMCwyNDQsMjMyLDIyOSwyMjYsMjQyLAorICAgIDIyOSwxMTksMTI4LCAgNSwxNjcsMjQzLDIzMywyMjUsMjQwLDIzOCwyMjksMjQ1LDIzNywyMjUsMjQ0LDIyNSwKKyAgICAyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsMjI3LDIyNywyMzcsIDk4LDEyOCwgIDQsMTMzLCA5OCwgIDMsCisgICAgIDc0LDExOCwgNzUsMTE1LCA3NSwxMjUsMTA4LCAgOSwgNzQsMTM4LCA3NCwxNDYsIDc1LCAgMywgNzUsIDExLAorICAgICA3NSwgMjcsIDc1LCAzOCwgNzUsIDU2LCA3NSwgNzAsIDc1LCA4MSwxOTksMjQyLDIyNSwyNDYsMTAxLDEyOCwKKyAgICAyNDYsMjExLCA5NywgIDIsIDc0LDE1MiwgNzQsMjA5LDIzOCwyMzEsMjM2LDIyOSwyMjYsMjQyLDIyNSwyMjcsCisgICAgMjM1LDIyOSwxMTYsICAyLCA3NCwxNjgsIDc0LDE4OCwyMzYsMjI5LDIzMCwxMTYsMTI5LCA0OCwgMTAsIDc0LAorICAgIDE3NywyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMTA4LDEyOCwyNTQsIDYxLDI0MiwyMzMsMjMxLDIzMiwKKyAgICAxMTYsMTI5LCA0OCwgMTEsIDc0LDE5OCwyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMTA4LDEyOCwyNTQsCisgICAgIDYyLDExNCwgIDIsIDc0LDIxNSwgNzQsMjM2LDIyNywyMzIsMjMzLDIzOCwyNDYsMjI5LDI0MiwyNDQsMjI5LAorICAgIDIyOCwyMjYsMjI5LDIzNiwyMzksMjQ3LDIyNywyMzcsIDk4LDEyOCwgIDMsIDQzLDI0MiwyMzksMTE5LCAgMiwKKyAgICAgNzQsMjQ0LCA3NCwyNTEsMjM2LDIyOSwyMzAsMTE2LDEyOCwgMzMsMjEyLDI0MiwyMzMsMjMxLDIzMiwxMTYsCisgICAgMTI4LCAzMywyMTAsMjI4LDIyNSwyMzgsMjI4LCA5NywxMjgsICA5LDEwMSwyMzEsMjQyLDIyNSwyNDYsMTAxLAorICAgIDEyOSwyNDYsMjE0LCA3NSwgMjEsMjI3LDIzNywgOTgsMTI4LCAgMywgMTUsMjMzLDIzOCwyNDQsMjI5LDIzMSwKKyAgICAyNDIsMjI1LDEwOCwxMjgsIDM0LCA0NCwyMzYsMjM5LDI0NywyMzYsMjMzLDIzOCwxMDEsMTI5LCAzMiwgMjMsCisgICAgIDc1LCA1MCwyMjcsMjM3LCA5OCwxMjgsICAzLCA1MSwyMzksMjQ2LDIyOSwyNDIsMjM2LDIzMywyMzgsMjI5LAorICAgIDIyNywyMzcsIDk4LDEyOCwgIDMsIDYzLDI0MCwyNDIsMjMzLDIzNywyMjksMjM3LDIzOSwxMDAsMTI4LCAgMiwKKyAgICAxODYsMjQ2LDIyOSwyNDIsMjQ0LDIzMywyMjcsMjI1LDEwOCwgIDIsIDc1LCA5NCwgNzUsMTAwLDIyNiwyMjUsCisgICAgMTE0LDEyOCwgMzIsIDIyLDIzNiwyMzMsMjM4LDIyOSwyMjUsMjI2LDIzOSwyNDYsMjI5LDIyNywyMzcsIDk4LAorICAgIDEyOCwgIDMsIDE0LDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAgOSwyNDMsMjQxLDI0NSwKKyAgICAyMjUsMjQyLDEwMSwxMjgsIDUxLDIwMCwgOTksICA0LCA3NSwxNDQsIDc1LDE1MSwgNzUsMTYwLCA3NSwxODcsCisgICAgMjI1LDI0MiwyMzksMTEwLDEyOCwgIDEsIDE1LDIyOSwyMjgsMjMzLDIzNiwyMzYsIDk3LDEyOCwgMzAsIDE3LAorICAgIDIzMywyNDIsIDk5LCAgMiwgNzUsMTY4LCA3NSwxNzMsMjM2LDEwMSwxMjgsIDM2LDIxMSwyNDUsMjM3LDIzMCwKKyAgICAyMzYsMjI5LDI0OCwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDE5LDI0MiwyMzksMjI1LDExNiwxMjgsCisgICAgICAxLCAxNywxMDAsICA0LCA3NSwyMDQsIDc2LCAyOSwgNzYsIDM5LCA3NiwgOTAsIDk3LCAgNCwgNzUsMjE0LAorICAgICA3NSwyMjQsIDc1LDIzMSwgNzYsICAwLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDE2MSwKKyAgICAyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgMzMsMjMxLDExNywgIDIsIDc1LDIzOCwgNzUsMjQ3LDIzNCwyMjUsCisgICAgMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTYxLDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDMzLAorICAgIDEwOCwgIDIsIDc2LCAgNiwgNzYsIDE1LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsMTM2LDIzMCwKKyAgICAyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MSwxMzcsMjI4LDIzMiwyMjUsCisgICAgMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDkyLDIzMiwgOTcsICAzLCA3NiwgNDgsIDc2LCA1OCwgNzYsIDY1LAorICAgIDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDE2MiwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwKKyAgICAgMzQsMjMxLDExNywgIDIsIDc2LCA3MiwgNzYsIDgxLDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsCisgICAgMTYyLDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDM0LDIzOSwxMTYsICAyLCA3NiwgOTcsIDc2LAorICAgIDEwNiwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsIDMwLCAxMSwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwKKyAgICAgMzAsIDEzLDEwMSwgIDgsIDc2LDEzMiwgNzYsMTg1LCA3NiwxOTIsIDc2LDIxNywgNzYsMjI3LCA3NiwyMzgsCisgICAgIDc3LCAyNywgNzcsIDYzLCA5OSwgIDIsIDc2LDEzOCwgNzYsMTc1LDIzMywyMzcsMjI1LDIzNiwyNDMsMjI5LAorICAgIDI0MCwyMjUsMjQyLDIyNSwyNDQsMjM5LDExNCwgIDIsIDc2LDE1NiwgNzYsMTY1LDIyNSwyNDIsMjI1LDIyNiwKKyAgICAyMzMsIDk5LDEyOCwgIDYsMTA3LDI0MCwyMjksMjQyLDI0MywyMzMsMjI1LDExMCwxMjgsICA2LDEwNywyNDksCisgICAgMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgNTIsMjMxLDI0MiwyMjksMTAxLDEyOCwgIDAsMTc2LAorICAgIDIzMiwxMDUsICAyLCA3NiwxOTksIDc2LDIwOCwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE3MywKKyAgICAyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDEwMywyMzMsMjI3LDIzOSwyNDAsMjQ0LDIzMywgOTksCisgICAgMTI4LCAgMywyMzksMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDE5OSwxMDgsICAyLAorICAgICA3NiwyNDQsIDc3LCAxMSwyMjksMjQ0LDEwMSwgIDIsIDc2LDI1MiwgNzcsICAzLDIzNiwyMjksMjMwLDExNiwKKyAgICAxMjgsIDM1LCA0MywyNDIsMjMzLDIzMSwyMzIsMTE2LDEyOCwgMzUsIDM4LDI0NCwgOTcsMTI5LCAgMywxODAsCisgICAgIDc3LCAxOCwyNDQsMjQ1LDI0MiwyMzgsMjI5LDEwMCwxMjgsICAxLDE0MSwyMzgsMjM5LDIzNywyMzMsMjM4LAorICAgIDIyNSwyNDQsMjM5LDI0MiwyMzcsMjMzLDIzOCwyNDUsMjQzLDIzOSwyMzgsMjI5LDIzOCwyNDUsMjM3LDIyOSwKKyAgICAyNDIsMjI1LDI0NCwyMzksMjQyLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDI0OCwyNTAsCisgICAgMTA0LDEyOCwgIDIsMTY0LDEwNCwgIDIsIDc3LCA3NCwgNzcsMTI0LCA5NywgIDMsIDc3LCA4MiwgNzcsIDkyLAorICAgICA3NywgOTksMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTY3LDIyOCwyMjksMjQ2LCA5NywKKyAgICAxMjgsICA5LCAzOSwyMzEsMTE3LCAgMiwgNzcsMTA2LCA3NywxMTUsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsCisgICAgMTI4LCAxMCwxNjcsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgMzksMjM5LDIzOSwxMDcsMTI4LAorICAgICAgMiwgODcsMTA1LCAgNiwgNzcsMTQ0LCA3NywxOTMsIDc3LDI1MywgNzgsICA4LCA3OCwgMTksIDc4LCAyOSwKKyAgICAgOTcsICAyLCA3NywxNTAsIDc3LDE3MiwyMzYsMjQ5LDI0NCwyMzMsMjM1LDIyNSwyNDQsMjM5LDIzOCwyMzksCisgICAgMTE1LDEyOSwgIDMsMTMzLCA3NywxNjYsMjI3LDIzNywgOTgsMTI4LCAgMywgNjgsMjM3LDIzOSwyMzgsMTAwLAorICAgIDEyOSwgMzgsMTAyLCA3NywxODEsMjQzLDI0NSwyMzMsMjQ0LDI0NywyMzIsMjMzLDI0NCwxMDEsMTI4LCAzOCwKKyAgICAgOTgsMjI5LDI0MiwyMjksMjQzLDIzMywxMTUsMTMzLCAgMCwxNjgsIDc3LDIxMiwgNzcsMjIwLCA3NywyMzEsCisgICAgIDc3LDIzNywgNzcsMjQ1LDIyNSwyMjcsMjQ1LDI0NCwxMDEsMTI4LDI0NiwyMTUsMjI2LDIyOSwyMzYsMjM5LAorICAgIDI0NywyMjcsMjM3LCA5OCwxMjgsICAzLCAzNiwyMjcsMjM3LCA5OCwxMjgsICAzLCAgOCwyMzEsMjQyLDIyNSwKKyAgICAyNDYsMTAxLDEyOCwyNDYsMjE2LDI0NCwyMzksMjM4LDIzOSwxMTUsMTI4LCAgMywxMzMsMjMyLDIzMywyNDIsCisgICAgMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LCA5OCwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LAorICAgIDEyOCwgNDgsMTk0LDI0NCwyNDQsMjM5LDIzNywyMjUsMjQyLDEwNywxMjgsIDQ4LCAgMywyNDYsMTA1LCAgMiwKKyAgICAgNzgsIDM2LCA3OCwgNDcsMjI4LDEwMSwxMjksICAwLDI0NywgNzgsIDQzLDExNSwxMjgsIDM0LCAzNSwyNDMsCisgICAgMjMzLDIzOSwyMzgsMjQzLDIzNiwyMjUsMjQzLDEwNCwxMjgsIDM0LCAyMSwyMzQsMjI5LDIyNywyNDksMjQyLAorICAgIDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgODIsMjM1LDI0MywyMzIsMjI1LDIyOCwxMDEsMTI4LCAzNywKKyAgICAxNDcsMTA4LCAgMiwgNzgsIDg3LCA3OCwgOTgsMjMzLDIzOCwyMjksMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsCisgICAgIDMwLCAxNSwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDE1MSwxMDksICAyLCA3OCwxMTMsIDc4LAorICAgIDEyMSwyMjUsMjI3LDI0MiwyMzksMTEwLDEyOCwgIDEsIDE3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywKKyAgICAxMDEsMTI4LDI1NSwgNjgsMjM4LDIyNiwyMzYsMjM5LDIyNywxMDcsMTI4LCAzNywxMzIsMTExLCAxMCwgNzgsCisgICAgMTYzLCA3OCwxNzUsIDc4LDE4NSwgNzgsMTk2LCA3OCwyMDcsIDc5LCAyMywgNzksIDI4LCA3OSwgMzksIDc5LAorICAgIDE1NCwgNzksMTgwLDIyNywyMzIsMjI1LDIyOCwyMjUsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDE0LDIyOCwKKyAgICAyMjksMjM1LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAyMCwyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsCisgICAgIDk3LDEyOCwgNDgsMTA1LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwyMDEsMjM2LAorICAgIDIzNiwyMjUsMTE0LDEzMiwgIDAsIDM2LCA3OCwyMjIsIDc4LDIzMywgNzgsMjQ1LCA3OSwgIDAsMjMzLDIzOCwKKyAgICAyMzAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsMjQ2LDIyNywyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsCisgICAgMjI3LDEwMSwxMjgsMjU1LCAgNCwyMzksMjM2LDIyOCwyNDMsMjQ0LDI0OSwyMzYsMTAxLDEyOCwyNDcsIDM2LAorICAgIDExNSwgIDIsIDc5LCAgNiwgNzksIDEzLDIzNywyMjUsMjM2LDEwOCwxMjgsMjU0LDEwNSwyNDUsMjQwLDIyOSwKKyAgICAyNDIsMjMzLDIzOSwxMTQsMTI4LDI0NiwyMjgsMjM4LDEwMywxMjgsIDMyLDE3MSwyNDIsMjQ1LDI0MywyNDEsCisgICAgMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsIDM4LDExNiwgIDYsIDc5LCA1MywgNzksIDcwLCA3OSwgOTIsIDc5LAorICAgIDEwMywgNzksMTM1LCA3OSwxNDIsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI5LCAgMiwyMTcsIDc5LCA2NCwKKyAgICAyMjcsMjM3LCA5OCwxMjgsICAzLCAgNywyMjYsMjI5LDIzNiwyMzksMjQ3LCA5OSwgIDIsIDc5LCA4MSwgNzksCisgICAgIDg2LDIzNywgOTgsMTI4LCAgMywgMzUsMjM5LDIzNywgOTgsMTI4LCAgMywgMzUsMjM1LDIyNSwyNDQsMjI1LAorICAgIDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDI1MSwyMzYsMjI5LDI0MywxMTUsICAyLCA3OSwxMTIsIDc5LDExNiwKKyAgICAxMDUsMTI4LCAgMSwgNDksMTA2LDEyOSwyNDYsMTkwLCA3OSwxMjIsMjQzLDI0NCwyNDIsMjM5LDIzNSwyMjksCisgICAgMjMyLDIzOSwyMzksMTA3LDEyOCwgIDIsMTMyLDIzNywyMjUsMjQ0LDEwNCwxMjgsIDM0LDE5NywyNDQsMjI5LAorICAgIDIyOCwyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsIDM3LDIwNCwyNDUsMjI2LDIzNiwyMjksMjQ5LDIzOSwKKyAgICAyMjgsMjQwLDIyNSwyNDQsMjI1LDEwNCwxMjksMjUxLCAzMSwgNzksMTcxLDIzMiwyMjksMjI2LDI0MiwyMjksCisgICAgMTE5LDEyOCwyNTEsIDMxLDI0NywyMzgsMjQ0LDIyNSwyMjcsMTA3LCAgMiwgNzksMTkxLCA3OSwyMDIsMjI2LAorICAgIDIyOSwyMzYsMjM5LDI0NywyMjcsMjM3LCA5OCwxMjgsICAzLCAzMCwyMzcsMjM5LDEwMCwxMjgsICAyLDIxMywKKyAgICAyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTU5LDI0MywyNDUsMjQwLDIyOSwyNDIsMjMzLDIzOSwxMTQsCisgICAgMTI4LDI0NiwyMzUsMTE2LCAgMiwgNzksMjMzLCA3OSwyMzksMjI1LDIzMywxMDgsMTI4LCAgMiwgODYsMjM5LAorICAgIDI0MCwyMjYsMjI1LDExNCwxMjgsICAxLDE0MCwxMTcsICAyLCA3OSwyNTMsIDgwLCAgOCwyMzIsMjMzLDI0MiwKKyAgICAyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTAxLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsCisgICAgMTI4LCA0OCwxOTcsMTIyLDEzMiwgIDEsMjQzLCA4MCwgMzEsIDgwLCA0MCwgODAsIDU5LCA4MCwgOTYsMjI1LAorICAgIDIzNiwyNDQsMjM5LDIzOCwxMDEsMTI4LCAgMiwxNjMsIDk5LCAgMiwgODAsIDQ2LCA4MCwgNTMsMjI1LDI0MiwKKyAgICAyMzksMTEwLDEyOCwgIDEsMTk4LDI0NSwyNDIsMTA4LDEyOCwgIDIsMTY1LDEwMSwgIDIsIDgwLCA2NSwgODAsCisgICAgIDg1LDIyNSwyMjYsMjM1LDIzMiwyMjUsMjQzLDIzMywyMjUsMjM4LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LAorICAgIDIzMywgOTksMTI4LCAgNCwyMjUsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA4NSwKKyAgICAyMzIsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgOTUsMTAxLDE1MSwgIDAsCisgICAgMTAxLCA4MCwxNTksIDgwLDE3OCwgODAsMjEyLCA4MSwxODYsIDgxLDI0OCwgODIsIDI1LCA4MiwgMzcsIDgyLAorICAgICA2MCwgODIsMTEzLCA4MywyMjUsIDg0LCAyNywgODQsMTI5LCA4NCwyNDUsIDg1LDEyNCwgODUsMTk5LCA4NSwKKyAgICAyMzAsIDg2LCAzNiwgODYsIDg5LCA4NywgMjQsIDg3LDE1NywgODcsMTc3LCA4NywyMjEsIDg4LCA1NiwgOTcsCisgICAgICAyLCA4MCwxNjUsIDgwLDE3MiwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAgMCwyMzMsMjQyLDI0NCwxMDQsMTI4LAorICAgICAzOCwgNjUsIDk4LCAgMywgODAsMTg2LCA4MCwxOTUsIDgwLDIwNSwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwKKyAgICAxMjgsICA5LDE0MywyMzksMjQwLDIzOSwyMzcsMjM5LDIzMCwxMTEsMTI4LCA0OSwgMjgsMjQyLDIyOSwyNDYsCisgICAgMTAxLDEyOCwgIDEsIDIxLCA5OSwgIDUsIDgwLDIyNCwgODEsIDQxLCA4MSwgNTUsIDgxLCA4NywgODEsMTc2LAorICAgICA5NywgIDIsIDgwLDIzMCwgODEsIDM1LDIzOCwyMjgsMjQyLCA5NywgIDMsIDgwLDI0MSwgODAsMjQ4LCA4MSwKKyAgICAgIDMsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDEzLDIzMSwyNDUsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsCisgICAgMTI4LCAxMCwxNDEsMjQ2LDIzOSwyNDcsMjI5LDIzNiwyNDMsMjMzLDIzMSwxMTAsICAyLCA4MSwgMTcsIDgxLAorICAgICAyNCwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNjksMjMxLDI0NSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwKKyAgICAxMjgsIDEwLDE5NywyNDIsMjM5LDExMCwxMjgsICAxLCAyNywyMjksMjI4LDIzMywyMzYsMjM2LDIyNSwyMjYsCisgICAgMjQyLDIyOSwyNDYsMTAxLDEyOCwgMzAsIDI5LDEwNCwgIDIsIDgxLCA2MSwgODEsIDcyLDIyNSwyNDIsMjM3LAorICAgIDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMDEsMjQ5LDIzMywyNDcsMjM4LDIyNSwyNDIsMjM3LDIyOSwKKyAgICAyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMzUsMjMzLDI0MiwgOTksICAyLCA4MSwgOTUsIDgxLDEwMCwyMzYsCisgICAgMTAxLDEyOCwgMzYsMjEyLDI0NSwyMzcsMjMwLDIzNiwyMjksMTIwLDEzNCwgIDAsMjM0LCA4MSwxMjEsIDgxLAorICAgIDEyOSwgODEsMTM3LCA4MSwxNDgsIDgxLDE1NiwgODEsMTY4LDIyNSwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAzMCwKKyAgICAxOTEsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLCAyNSwyMjgsMjM5LDI0NCwyMjYsMjI5LDIzNiwyMzksCisgICAgMTE5LDEyOCwgMzAsMTk5LDIzMSwyNDIsMjI1LDI0NiwxMDEsMTI4LCAzMCwxOTMsMjMyLDIzOSwyMzksMjM1LAorICAgIDIyNSwyMjYsMjM5LDI0NiwxMDEsMTI4LCAzMCwxOTUsMjQ0LDIzMywyMzYsMjI4LDEwMSwxMjgsIDMwLDE5NywKKyAgICAyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgODQsMTAwLCAgNCwgODEsMTk2LCA4MSwyMDYsCisgICAgIDgxLDIxMiwgODEsMjIyLDIyNiwyMzYsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsICAyLCAgNSwyMjksMjQ2LAorICAgICA5NywxMjgsICA5LCAxNSwyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywxMTUsMTI4LCAgMCwyMzUsMjM5LDExNiwKKyAgICAxMzAsICAxLCAyMywgODEsMjMxLCA4MSwyNDAsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LCAgMSwgMjMsCisgICAgMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDE4NSwxMDEsICAyLCA4MSwyNTQsIDgyLCAgOSwyMzEsMjQ1LAorICAgIDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDE1LDIzNywyMjUsMjQ0LDI0MiwyMjUsMjMxLDI0NSwKKyAgICAyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCA3MSwyMzAsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsCisgICAgMjMzLCA5OSwxMjgsICA0LCA2OCwxMDMsICAyLCA4MiwgNDMsIDgyLCA1MCwyNDIsMjI1LDI0NiwxMDEsMTI4LAorICAgICAgMCwyMzIsMjQ1LDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTQzLDEwNCwgIDQsIDgyLCA3MCwKKyAgICAgODIsIDgxLCA4MiwgOTIsIDgyLDEwMiwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsCisgICAgMTAzLDIyNiwyMzksMjQwLDIzOSwyMzcsMjM5LDIzMCwxMTEsMTI4LCA0OSwgMjksMjMzLDI0MiwyMjUsMjMxLAorICAgIDIyNSwyMzgsIDk3LDEyOCwgNDgsIDcyLDIzOSwyMzksMjM1LDIyNSwyMjYsMjM5LDI0NiwxMDEsMTI4LCAzMCwKKyAgICAxODcsMTA1LCAgNCwgODIsMTIzLCA4MiwxMzQsIDgzLDE5MiwgODMsMjA3LDIyNiwyMzksMjQwLDIzOSwyMzcsCisgICAgMjM5LDIzMCwxMTEsMTI4LCA0OSwgMzEsMjMxLDIzMiwxMTYsMTQyLCAgMCwgNTYsIDgyLDE2OCwgODIsMTc3LAorICAgICA4MiwxODcsIDgyLDIxNywgODIsMjI0LCA4MywgIDYsIDgzLCAzMSwgODMsIDc2LCA4MywxMTAsIDgzLDEyMiwKKyAgICAgODMsMTMzLCA4MywxNjYsIDgzLDE3NCwgODMsMTg1LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsCisgICAgMTA0LDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDIzOCwyMjcsMjMzLDI0MiwyMjcsMjM2LAorICAgIDEwMSwxMjksIDM2LDEwMywgODIsMTk4LDIzMywyMzgsMjQ2LDIyOSwyNDIsMjQzLDIyOSwyNDMsMjI1LDIzOCwKKyAgICAyNDMsMjQzLDIyOSwyNDIsMjMzLDEwMiwxMjgsIDM5LDE0NSwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwxMTAsCisgICAgMjI5LDIyOSwxMTAsICAyLCA4MiwyMzIsIDgyLDI0MSwyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsIDM2LAorICAgIDExMywxMTIsICAyLCA4MiwyNDcsIDgyLDI1NCwyMjUsMjQyLDIyOSwxMTAsMTI4LCAzNiwxMzMsMjI5LDI0MiwKKyAgICAyMzMsMjM5LDEwMCwxMjgsIDM2LDE1MywyMzEsMTE3LCAgMiwgODMsIDEzLCA4MywgMjIsMjM0LDIyNSwyNDIsCisgICAgMjI1LDI0NCwxMDUsMTI4LCAxMCwyMzgsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwxMTAsMTA0LAorICAgICAgMiwgODMsIDM3LCA4MywgNjMsIDk3LCAgMiwgODMsIDQzLCA4MywgNTQsMjI3LDIzNSwyMjUsMjQyLDIyNSwKKyAgICAyMjYsMjMzLCA5OSwxMjgsICA2LDEwNCwyMzgsMjMxLDI1MCwyMzIsMjM5LDExNywxMjgsIDQ4LCA0MCwyMzgsCisgICAgMjM5LDI0NCwyMjksMjI2LDIyOSwyMjUsMjM3LDIyOSwxMDAsMTI4LCAzOCwxMDcsMTA1LCAgMiwgODMsIDgyLAorICAgICA4MywxMDAsMjI4LDIyOSwyMzksMjMxLDI0MiwyMjUsMjQwLDIzMiwyMzMsMjI3LDI0MCwyMjUsMjQyLDIyOSwKKyAgICAxMTAsMTI4LCA1MCwgMzksMjM4LDIzMCwyMjksMjQyLDIzMywyMzksMTE0LDEyOCwgMzIsMTM2LDIzNywyMzksCisgICAgMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDI0LDIzOSwyMzYsMjI4LDI0MywyNDQsMjQ5LAorICAgIDIzNiwxMDEsMTI4LDI0NywgNTYsMTEyLCAgMiwgODMsMTM5LCA4MywxNDYsMjI1LDI0MiwyMjksMTEwLDEyOCwKKyAgICAgMzYsMTIzLDIyOSwxMTQsICAyLCA4MywxNTMsIDgzLDE1OSwyMzMsMjM5LDEwMCwxMjgsIDM2LDE0MywyNDMsCisgICAgMjMzLDIyNSwxMTAsMTI4LCAgNiwyNDgsMjQyLDIzOSwyMzcsMjI1LDExMCwxMjgsIDMzLDExOSwyNDMsMjQ1LAorICAgIDI0MCwyMjksMjQyLDIzMywyMzksMTE0LDEyOCwgMzIsMTIwLDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCA4OCwKKyAgICAyMzgsMjQ2LDIyOSwyNDIsMjQ0LDIyOSwyMjgsMjI2LDI0MiwyMjksMjQ2LDEwMSwxMjgsICAyLCAgNywyMzksCisgICAgMjQ0LDIzMywyMzAsMjMzLDIyOSwyMjgsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LAorICAgIDEwMSwxMDcsICAyLCA4MywyMzEsIDgzLDI1NSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwKKyAgICAxNjgsIDgzLDI0MywyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDExNiwxMTEsCisgICAgICAyLCA4NCwgIDUsIDg0LCAyMCwyMzgsMjM1LDIyNSwyNDIsMjMxLDI0NSwyNDIsMjM3LDI0NSwyMzUsMjMyLAorICAgIDEwNSwxMjgsIDEwLDExNiwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgODQsMTA4LCAgMywgODQsIDM1LCA4NCwKKyAgICAgNDYsIDg0LDEwNywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDU5LDEwMSwgIDIsCisgICAgIDg0LCA1MiwgODQsIDU5LDIzNywyMjksMjM4LDExNiwxMjgsIDM0LCAgOCwyNDYsMjI5LDExMCwgIDMsIDg0LAorICAgICA2OSwgODQsIDc4LCA4NCwgOTksMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI4LCAzNiwxMDYsMTEyLCAgMiwKKyAgICAgODQsIDg0LCA4NCwgOTEsMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTI2LDIyOSwyNDIsMjMzLDIzOSwxMDAsCisgICAgMTI4LCAzNiwxNDYsMjQyLDIzOSwyMzcsMjI1LDExMCwxMjgsIDMzLDEyMiwyMzYsMjMzLDI0MCwyNDMsMjMzLAorICAgIDExNSwxMjksIDMyLCAzOCwgODQsMTE4LDI0NiwyMjksMjQyLDI0NCwyMzMsMjI3LDIyNSwxMDgsMTI4LCAzNCwKKyAgICAyMzgsMTA5LCAgNSwgODQsMTQxLCA4NCwxNjksIDg0LDE4MCwgODQsMjAwLCA4NCwyMTEsMjI1LDIyNywyNDIsCisgICAgMjM5LDExMCwxMzAsICAxLCAxOSwgODQsMTUzLCA4NCwxNjEsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsIDMwLAorICAgICAyMywyMzEsMjQyLDIyNSwyNDYsMTAxLDEyOCwgMzAsIDIxLDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywKKyAgICAgOTksMTI4LCAgNCwgNjAsMjI4LDIyNSwyNDMsMTA0LDEyOSwgMzIsIDIwLCA4NCwxODksMjQ2LDIyOSwyNDIsCisgICAgMjQ0LDIzMywyMjcsMjI1LDEwOCwxMjgsMjU0LCA0OSwyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLAorICAgIDEyOCwyNTUsIDY5LDExMiwgIDIsIDg0LDIxNywgODQsMjM3LDIzMiwyMjUsMjQzLDIzMywyNDMsMjM3LDIyNSwKKyAgICAyNDIsMjM1LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwgOTEsMjQ0LDI0OSwyNDMsCisgICAgMjI5LDExNiwxMjgsIDM0LCAgNSwxMTAsICA2LCA4NSwgIDMsIDg1LCAxNCwgODUsIDI1LCA4NSwgNjksIDg1LAorICAgIDEwMSwgODUsMTE2LDIyNiwyMzksMjQwLDIzOSwyMzcsMjM5LDIzMCwxMTEsMTI4LCA0OSwgMzUsMjI3LDI0OSwKKyAgICAyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA2MSwxMDAsICAyLCA4NSwgMzEsIDg1LCA1MCwyMjUsCisgICAgMjQzLDEwNCwxMjksIDMyLCAxOSwgODUsIDM5LDI0NiwyMjksMjQyLDI0NCwyMzMsMjI3LDIyNSwxMDgsMTI4LAorICAgIDI1NCwgNTAsMjI5LDI0MywyMjcsMjI5LDIzOCwyMjgsMjI5LDI0MiwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwKKyAgICAyMzMsIDk5LDEyOCwgIDQsMTYzLDEwMywxMzAsICAxLCA3NSwgODUsIDc3LCA4NSwgODgsMjI2LDIzOSwyNDAsCisgICAgMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAzNywyMzIsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LAorICAgIDIzMywgOTksMTI4LCAgNCwxNjUsMjMyLDIzOSwyMzksMjM1LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywKKyAgICAgOTksMTI4LCAgNCwyMDAsMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsIDMyLCAgMiwxMTEsICAzLCA4NSwxMzIsCisgICAgIDg1LDE0MCwgODUsMTQ5LDIzMSwyMzksMjM4LDIyOSwxMDcsMTI4LCAgMSwgMjUsMjM1LDIzOSwyNDIsMjI5LAorICAgIDIyNSwxMTAsMTI4LCA0OSwgODMsMjQwLDIyOSwxMTAsMTMwLCAgMiwgOTEsIDg1LDE1OSwgODUsMTY4LDIyNywKKyAgICAyMzYsMjM5LDI0MywyMjksMTAwLDEyOCwgIDIsMTU0LDI0MiwyMjksMjQ2LDIyOSwyNDIsMjQzLDIyOSwxMDAsCisgICAgMTMwLCAgMiwgOTIsIDg1LDE4MywgODUsMTkyLDIyNywyMzYsMjM5LDI0MywyMjksMTAwLDEyOCwgIDIsIDk0LAorICAgIDIzMiwyMzksMjM5LDEwNywxMjgsICAyLCA5MywxMTIsICAyLCA4NSwyMDUsIDg1LDIxMiwyMjUsMjQyLDIyOSwKKyAgICAxMTAsMTI4LCAzNiwxNjAsMjQzLDIzMywyMzYsMjM5LDExMCwxMjksICAzLDE4MSwgODUsMjIyLDI0NCwyMzksCisgICAgMjM4LDIzOSwxMTUsMTI4LCAgMywxNzMsMjQxLDExNywgIDIsIDg1LDIzNywgODYsIDI1LDIyNSwxMDgsMTMwLAorICAgICAgMCwgNjEsIDg1LDI0NiwgODYsICAyLDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwKKyAgICAyNTUsIDI5LDExNSwgIDIsIDg2LCAgOCwgODYsIDE1LDIzNywyMjUsMjM2LDEwOCwxMjgsMjU0LDEwMiwyNDUsCisgICAgMjQwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LCAzMiwxMjQsMjMzLDI0NiwyMjUsMjM2LDIyOSwyMzgsMjI3LAorICAgIDEwMSwxMjgsIDM0LCA5NywxMTQsICAzLCA4NiwgNDQsIDg2LCA1NSwgODYsIDY2LDIyNiwyMzksMjQwLDIzOSwKKyAgICAyMzcsMjM5LDIzMCwxMTEsMTI4LCA0OSwgMzgsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsCisgICAgICA0LCA2NCwyMjksMjQ2LDIyOSwyNDIsMjQzLDIyOSwxMDAsMTI5LCAgMiwgODgsIDg2LCA3OCwyMjcsMjQ5LAorICAgIDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDc3LDExNSwgIDYsIDg2LDEwMywgODYsMTE0LCA4NiwKKyAgICAxMzQsIDg2LDIxNSwgODcsICA0LCA4NywgMTQsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsCisgICAgICA0LCA2NSwyMjgsMjI5LDI0MywyMjcsMjI5LDIzOCwyMjgsMjI5LDI0MiwyMjcsMjQ5LDI0MiwyMzMsMjM2LAorICAgIDIzNiwyMzMsIDk5LDEyOCwgIDQsMTcxLDEwNCwxMzIsICAyLDEzMSwgODYsMTQ2LCA4NiwxNTMsIDg2LDE4NCwKKyAgICAgODYsMTk5LDIyNywyNDUsMjQyLDEwOCwxMjgsICAyLDEzNCwyMzksMjQyLDExNiwgIDIsIDg2LDE2MSwgODYsCisgICAgMTY4LDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCAxNCwyNDYsMjM5LDI0NywyMjksMjM2LDI0MywyMzMsMjMxLAorICAgIDIzOCwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNzAsMjQyLDIyOSwyNDYsMjI5LDI0MiwyNDMsMjI5LDIyOCwKKyAgICAyMzYsMjM5LDIzOSwxMTIsMTI4LCAgMSwxNzAsMjQzLDI0MSwyNDUsMjI1LDI0NCwyNDIsMjI5LDI0NiwyMjksCisgICAgMjQyLDI0MywyMjksMTAwLDEyOCwgIDIsMTMzLDIzNywyMjUsMjM2LDEwOCwgIDIsIDg2LDIyNCwgODYsMjM1LAorICAgIDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwgNzEsMjM1LDIyNSwyNDQsMjI1LDIzNSwKKyAgICAyMjUsMjM4LCA5NywxMjksIDQ4LDE2NywgODYsMjQ4LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsCisgICAgMTA0LDEyOCwyNTUsMTA2LDI0NCwyMzMsMjM3LDIyNSwyNDQsMjI5LDEwMCwxMjgsIDMzLCA0NiwyNDUsMjQwLAorICAgIDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LDI0NiwyMzYsMTE2LCAgNSwgODcsIDM2LCA4NywgNjIsIDg3LCA2NiwKKyAgICAgODcsIDgzLCA4NywxNDksIDk3LDEzMCwgIDMsMTgzLCA4NywgNDQsIDg3LCA1NCwyNDIsMjM3LDIyOSwyMzgsCisgICAgMjMzLDIyNSwxMTAsMTI4LCAgNSwxMDQsMjQ0LDIzOSwyMzgsMjM5LDExNSwxMjgsICAzLDE3NCwxMDQsMTI4LAorICAgICAgMCwyNDAsMjMzLDIzNiwyMjgsMTAxLDEyOSwgMzAsMTg5LCA4NywgNzUsMjI2LDIyOSwyMzYsMjM5LDExOSwKKyAgICAxMjgsIDMwLCAyNywyMzgsMjI1LDIzMiwyNDQsIDk3LCAgMywgODcsIDk1LCA4NywxMjcsIDg3LDEzNiwyMzAsCisgICAgMjM5LDI0NSwyMzUsMTA0LCAgMiwgODcsMTA1LCA4NywxMTQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LAorICAgICAgNSwxNDUsMjM2LDIyOSwyMzAsMjQ0LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTQ1LDIzMiwKKyAgICAyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTQ1LDIzNiwyMjksMjMwLDI0NCwyMzIsMjI5LDIyNiwyNDIsCisgICAgMjI5LDExOSwxMjgsICA1LDE0NSwyNDUsMjQyLDIzOCwyMjksMTAwLDEyOCwgIDEsMjIxLDExNywgIDIsIDg3LAorICAgIDE2MywgODcsMTcyLDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksIDk3LDI0MiwxMTEsMTI4LCAzMiwKKyAgICAxNzIsMjQ2LDIzOSwyNDcsMjI5LDIzNiwyNDMsMjMzLDIzMSwxMTAsICAzLCA4NywxOTMsIDg3LDIwMywgODcsCisgICAgMjEwLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDE5OSwyMjgsMjI5LDI0NiwgOTcsMTI4LAorICAgICAgOSwgNzEsMjMxLDI0NSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE5OSwxMjAsICAyLCA4NywKKyAgICAyMjcsIDg4LCA0NCwyMjcsMjM2LDIyNSwxMDksMTMyLCAgMCwgMzMsIDg3LDI0MiwgODcsMjUzLCA4OCwgMjQsCisgICAgIDg4LCAzNiwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDkyLDEwMCwgIDIsIDg4LAorICAgICAgMywgODgsICA4LDIyNiwxMDgsMTI4LCAzMiwgNjAsMjM5LDI0NywxMTAsMTI5LCAgMCwxNjEsIDg4LCAxNiwKKyAgICAyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsMTYxLDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsCisgICAgMTAxLDEyOCwyNTUsICAxLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywgMzMsMjMzLDI0MywyNDQsMjI5LAorICAgIDIzOCwyNDQsMjMzLDIyNSwxMDgsMTI4LCAzNCwgIDMsMjUwLDEwNCwxMzEsICAyLDE0NiwgODgsIDY3LCA4OCwKKyAgICAgODYsIDg4LCA5NywgOTksICAyLCA4OCwgNzMsIDg4LCA4MCwyMjUsMjQyLDIzOSwxMTAsMTI4LCAgMSwyMzksCisgICAgMjQ1LDI0MiwxMDgsMTI4LCAgMiwxNDcsMjQyLDIyOSwyNDYsMjI5LDI0MiwyNDMsMjI5LDEwMCwxMjgsICAxLAorICAgIDE4NSwyNDQsMjI1LDIzMywxMDgsMTI4LCAgMSwxODYsMTAyLDE0MCwgIDAsMTAyLCA4OCwxMzIsIDg4LDIxNCwKKyAgICAgODgsMjI1LCA4OCwyMzQsIDg4LDI0NiwgODksIDkzLCA4OSwxMDksIDkxLDExNywgOTEsMTMwLCA5MSwxNTYsCisgICAgIDkzLCAzMywgOTMsIDQxLCA5NywgIDQsIDg4LDE0MiwgODgsMTQ5LCA4OCwxNjAsIDg4LDE3MSwyMjgsMjI5LAorICAgIDI0NiwgOTcsMTI4LCAgOSwgOTQsMjMxLDI0NSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCA5NCwKKyAgICAyMzIsMjQyLDIyOSwyMzgsMjMyLDIyOSwyMzMsMTE2LDEyOCwgMzMsICA5LDI0NCwyMzIsIDk3LCAgMywgODgsCisgICAgMTgxLCA4OCwxOTAsIDg4LDIwMiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA3OCwyMzYsMjM5LAorICAgIDI0NywyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA3OCwyNDQsMjI1LDIzOCwyMjUsMjQyLDIyNSwKKyAgICAyMjYsMjMzLCA5OSwxMjgsICA2LCA3NSwyMjYsMjM5LDI0MCwyMzksMjM3LDIzOSwyMzAsMTExLDEyOCwgNDksCisgICAgICA4LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgMzYsMjEzLDIyOCwyMzksMjQ0LDIyNSwyMjcsMjI3LAorICAgIDIyOSwyMzgsMTE2LDEyOCwgMzAsIDMxLDEwMSwgIDMsIDg4LDI1NCwgODksIDc2LCA4OSwgODYsMTA0LCAgNCwKKyAgICAgODksICA4LCA4OSwgMzEsIDg5LCA0NSwgODksIDYxLDIyNSwxMTQsICAyLCA4OSwgMTUsIDg5LCAyMiwyMjUsCisgICAgMjI2LDIzMywgOTksMTI4LCAgNiwgNjUsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMzQsMjMwLAorICAgIDIzMywyMzgsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDIxMCwyMzMsMjM4LDIzMywKKyAgICAyNDQsMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwyMTEsMjM3LDIyOSwyMjgsCisgICAgMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwyMTIsMjMzLDIyNywyMzksMjQwLAorICAgIDI0NCwyMzMsIDk5LDEyOCwgIDMsMjI5LDIzNywyMjUsMjM2LDEwMSwxMjgsIDM4LCA2NCwxMDIsMTMwLDI1MSwKKyAgICAgIDAsIDg5LDEwMSwgODksMTA1LDEwNSwxMjgsMjUxLCAgMywxMDgsMTI4LDI1MSwgIDQsMTA1LDEzNiwyNTEsCisgICAgICAxLCA4OSwxMjksIDg5LDE2OSwgODksMTgwLCA4OSwyMDIsIDkwLCA2OCwgOTAsIDg1LCA5MCwgOTMsIDkwLAorICAgIDEwNiwyMzAsMjQ0LDIyOSwyMjksMTEwLCAgMiwgODksMTM5LCA4OSwxNDgsMjI3LDIzMywyNDIsMjI3LDIzNiwKKyAgICAxMDEsMTI4LCAzNiwxMTAsMTEyLCAgMiwgODksMTU0LCA4OSwxNjEsMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsCisgICAgMTMwLDIyOSwyNDIsMjMzLDIzOSwxMDAsMTI4LCAzNiwxNTAsMjMxLDI0NSwyNDIsMjI5LDIyOCwyMjUsMjQzLAorICAgIDEwNCwxMjgsIDMyLCAxOCwyMzYsMjM2LDIyOSwxMDAsICAyLCA4OSwxODksIDg5LDE5NSwyMjYsMjM5LDEyMCwKKyAgICAxMjgsIDM3LDE2MCwyNDIsMjI5LDIyNywxMTYsMTI4LCAzNywxNzIsMjM4LDIyNSwxMDgsICA1LCA4OSwyMTYsCisgICAgIDg5LDI1NSwgOTAsIDE2LCA5MCwgMzMsIDkwLCA0OSwyMzUsMjI1LDEwMiwxMzAsICA1LDIxOCwgODksMjI2LAorICAgICA4OSwyNDYsMjI4LDIyNSwyMzEsMjI5LDI0MywxMDQsMTI5LDI1MSwgNTgsIDg5LDIzNywyMzIsMjI5LDIyNiwKKyAgICAyNDIsMjI5LDExOSwxMjgsMjUxLCA1OCwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIxOCwyMzcsCisgICAgMjI5LDEwOSwxMjksICA1LDIyMSwgOTAsICA3LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMjIxLAorICAgIDIzOCwyNDUsMTEwLDEyOSwgIDUsMjIzLCA5MCwgMjQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwKKyAgICAyMjMsMjQwLDEwMSwxMjksICA1LDIyNywgOTAsIDQwLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsCisgICAgMjI3LDI0NCwyNDMsMjI1LDIyOCwxMDUsMTI5LCAgNSwyMjksIDkwLCA1OSwyMzIsMjI5LDIyNiwyNDIsMjI5LAorICAgIDExOSwxMjgsICA1LDIyOSwyNDIsMjQzLDI0NCwyNDQsMjM5LDIzOCwyMjksMjI3LDIzMiwyMzMsMjM4LDIyOSwKKyAgICAyNDMsMTAxLDEyOCwgIDIsMjAxLDI0MywyMzIsMjI5LDI0OSwxMDEsMTI4LCAzNywyMDEsMjQ0LDIyNSwyMjcsCisgICAgMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTE1LDI0NiwxMDEsMTQyLCAgMCwgNTMsIDkwLAorICAgIDEzOSwgOTAsMTQ4LCA5MCwxNTgsIDkwLDE4OCwgOTAsMTk1LCA5MCwyMDUsIDkwLDIzMCwgOTEsICAxLCA5MSwKKyAgICAgMzUsIDkxLCA0NywgOTEsIDU4LCA5MSwgOTEsIDkxLCA5OSwgOTEsMTEwLDIyNSwyNDIsMjI1LDIyNiwyMzMsCisgICAgIDk5LDEyOCwgIDYsMTAxLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDIzNSwyMjcsMjMzLAorICAgIDI0MiwyMjcsMjM2LDEwMSwxMjksIDM2LDEwMCwgOTAsMTY5LDIzMywyMzgsMjQ2LDIyOSwyNDIsMjQzLDIyOSwKKyAgICAyNDMsMjI1LDIzOCwyNDMsMjQzLDIyOSwyNDIsMjMzLDEwMiwxMjgsIDM5LDE0MiwyMjgsMjI5LDI0NiwgOTcsCisgICAgMTI4LCAgOSwxMDcsMjI5LDIzMywyMzEsMjMyLDI0NCwyMzIsMTE1LDEyOCwgMzMsIDkzLDIzMSwxMTcsICAyLAorICAgICA5MCwyMTIsIDkwLDIyMSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDIzNSwyNDIsMjM3LDI0NSwKKyAgICAyMzUsMjMyLDEwNSwxMjgsIDEwLDEwNywyMzIsIDk3LCAgMiwgOTAsMjM3LCA5MCwyNDgsMjI3LDIzNSwyMjUsCisgICAgMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LDEwMSwyMzgsMjMxLDI1MCwyMzIsMjM5LDExNywxMjgsIDQ4LAorICAgICAzNywxMDUsICAyLCA5MSwgIDcsIDkxLCAyNSwyMjgsMjI5LDIzOSwyMzEsMjQyLDIyNSwyNDAsMjMyLDIzMywKKyAgICAyMjcsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDUwLCAzNiwyMzgsMjMwLDIyOSwyNDIsMjMzLDIzOSwxMTQsCisgICAgMTI4LCAzMiwxMzMsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMjEsMjM5LAorICAgIDIzNiwyMjgsMjQzLDI0NCwyNDksMjM2LDEwMSwxMjgsMjQ3LCA1MywxMTIsICAyLCA5MSwgNjQsIDkxLCA3MSwKKyAgICAyMjUsMjQyLDIyOSwxMTAsMTI4LCAzNiwxMjAsMjI5LDExNCwgIDIsIDkxLCA3OCwgOTEsIDg0LDIzMywyMzksCisgICAgMTAwLDEyOCwgMzYsMTQwLDI0MywyMzMsMjI1LDExMCwxMjgsICA2LDI0NSwyNDIsMjM5LDIzNywyMjUsMTEwLAorICAgIDEyOCwgMzMsMTE2LDI0MywyNDUsMjQwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LCAzMiwxMTcsMjQ0LDIzMiwKKyAgICAyMjUsMTA1LDEyOCwgMTQsIDg1LDEwOCwxMjksMjUxLCAgMiwgOTEsMTIzLDIzOSwyNDIsMjMzLDExMCwxMjgsCisgICAgICAxLDE0NiwxMDksICAyLCA5MSwxMzYsIDkxLDE0NywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLAorICAgIDEyOCwyNTUsIDcwLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTUzLDExMSwgIDQsIDkxLDE2NiwKKyAgICAgOTEsMTg4LCA5MSwyMDAsIDkxLDIwNywyMzAsIDk3LCAgMiwgOTEsMTczLCA5MSwxODEsMjM4LDI0NCwyMzIsCisgICAgMjI1LDEwNSwxMjgsIDE0LCAzMSwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgMjksMjM4LDIzMSwyMzcsMjI1LAorICAgIDIzOCwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNzksMjQyLDIyNSwyMzYsMTA4LDEyOCwgMzQsICAwLDI0NSwKKyAgICAxMTQsMTQyLCAgMCwgNTIsIDkxLDI0MCwgOTEsMjQ5LCA5MiwgIDMsIDkyLCAzMywgOTIsIDQwLCA5MiwgNjUsCisgICAgIDkyLCA5MiwgOTIsMTI2LCA5MiwxMzgsIDkyLDE1NywgOTIsMTY4LCA5MiwyMDEsIDkyLDIwOSwgOTIsMjIwLAorICAgIDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsMTAwLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwKKyAgICAxMjgsICA5LDIzNCwyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjksIDM2LCA5OSwgOTIsIDE0LDIzMywyMzgsCisgICAgMjQ2LDIyOSwyNDIsMjQzLDIyOSwyNDMsMjI1LDIzOCwyNDMsMjQzLDIyOSwyNDIsMjMzLDEwMiwxMjgsIDM5LAorICAgIDE0MSwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwxMDYsMjMxLDExNywgIDIsIDkyLCA0NywgOTIsIDU2LDIzNCwKKyAgICAyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMjM0LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsCisgICAgMTA2LDIzMiwgOTcsICAyLCA5MiwgNzIsIDkyLCA4MywyMjcsMjM1LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LAorICAgIDEyOCwgIDYsMTAwLDIzOCwyMzEsMjUwLDIzMiwyMzksMTE3LDEyOCwgNDgsIDM2LDEwNSwgIDIsIDkyLCA5OCwKKyAgICAgOTIsMTE2LDIyOCwyMjksMjM5LDIzMSwyNDIsMjI1LDI0MCwyMzIsMjMzLDIyNywyNDAsMjI1LDI0MiwyMjksCisgICAgMTEwLDEyOCwgNTAsIDM1LDIzOCwyMzAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsIDMyLDEzMiwyMzcsMjM5LAorICAgIDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCAyMCwyMzgsMjQ1LDIzNywyMjksMjQyLDIyNSwKKyAgICAyNDQsMjM5LDI0MiwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyNDcsMjM5LDIzNiwyMjgsCisgICAgMjQzLDI0NCwyNDksMjM2LDEwMSwxMjgsMjQ3LCA1MiwxMTIsICAyLCA5MiwxNzQsIDkyLDE4MSwyMjUsMjQyLAorICAgIDIyOSwxMTAsMTI4LCAzNiwxMTksMjI5LDExNCwgIDIsIDkyLDE4OCwgOTIsMTk0LDIzMywyMzksMTAwLDEyOCwKKyAgICAgMzYsMTM5LDI0MywyMzMsMjI1LDExMCwxMjgsICA2LDI0NCwyNDIsMjM5LDIzNywyMjUsMTEwLDEyOCwgMzMsCisgICAgMTE1LDI0MywyNDUsMjQwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LCAzMiwxMTYsMTE2LCAgMiwgOTIsMjI2LAorICAgICA5MywgIDgsMjI5LDIyOSwxMTAsICAyLCA5MiwyMzQsIDkyLDI0MywyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwKKyAgICAxMjgsIDM2LDEwOSwxMTIsICAyLCA5MiwyNDksIDkzLCAgMCwyMjUsMjQyLDIyOSwxMTAsMTI4LCAzNiwxMjksCisgICAgMjI5LDI0MiwyMzMsMjM5LDEwMCwxMjgsIDM2LDE0OSwxMDQsICAyLCA5MywgMTQsIDkzLCAxOSwyMjUsMTA1LAorICAgIDEyOCwgMTQsIDg0LDI0NCwyMzksMjM4LDIyOSwyMjcsMjMyLDIzMywyMzgsMjI5LDI0MywxMDEsMTI4LCAgMiwKKyAgICAyMDMsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDM2LDE2MSwyNDIsIDk3LCAgMiwgOTMsIDQ4LCA5MywgNTYsCisgICAgMjI3LDI0NCwyMzMsMjM5LDExMCwxMjgsIDMyLCA2OCwyMzgsIDk5LDEyOCwgMzIsMTYzLDEwMywxNDQsICAwLAorICAgIDEwMywgOTMsIDk3LCA5NCwgNDMsIDk0LCA2NiwgOTQsMTI3LCA5NCwxNDQsIDk1LCA2NSwgOTYsIDU4LCA5NiwKKyAgICAxNDMsIDk2LDE1NiwgOTcsIDE0LCA5NywgMzksIDk3LCA2NywgOTcsIDg5LCA5OCwgMzQsIDk4LCA1NiwgOTgsCisgICAgMTU4LCA5NywgIDksIDkzLDExNywgOTMsMTI3LCA5MywxMzQsIDkzLDE0MSwgOTMsMjA1LCA5MywyMzAsIDkzLAorICAgIDI0MSwgOTMsMjUyLCA5NCwgMzAsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTUxLDIyNywKKyAgICAyNDUsMjQ0LDEwMSwxMjgsICAxLDI0NSwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgMjMsMTAyLCAgNCwgOTMsCisgICAgMTUxLCA5MywxNjAsIDkzLDE3NCwgOTMsMTkwLDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsMTc1LAorICAgIDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MSwxNDcsMjMzLDIzOCwKKyAgICAyMzMsMjQ0LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTEsMTQ4LDIzNywyMjksCisgICAgMjI4LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTEsMTQ5LDIzMSwxMTcsICAyLAorICAgICA5MywyMTIsIDkzLDIyMSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE1MSwyNDIsMjM3LDI0NSwKKyAgICAyMzUsMjMyLDEwNSwxMjgsIDEwLCAyMywyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsCisgICAgIDc2LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwxNzIsMjM3LDIzNywgOTcsMTMwLAorICAgICAgMywxNzksIDk0LCAgNiwgOTQsIDE5LDIzNiwyMjUsMjQ0LDIzMywyMzgsMjQzLDIzNywyMjUsMjM2LDEwOCwKKyAgICAxMjgsICAyLCA5OSwyNDMsMjQ1LDI0MCwyMjksMjQyLDIzMywyMzksMTE0LDEyOCwgIDIsMjI0LDIzOCwyMzEsCisgICAgMjMzLDIyNSwyMjcsMjM5LDI0MCwyNDQsMjMzLCA5OSwxMjgsICAzLDIzNSwgOTgsICAyLCA5NCwgNDksIDk0LAorICAgICA1OSwyMzksMjQwLDIzOSwyMzcsMjM5LDIzMCwxMTEsMTI4LCA0OSwgMTMsMjQyLDIyOSwyNDYsMTAxLDEyOCwKKyAgICAgIDEsIDMxLCA5OSwgIDQsIDk0LCA3NiwgOTQsIDgzLCA5NCwgOTIsIDk0LDExNCwyMjUsMjQyLDIzOSwxMTAsCisgICAgMTI4LCAgMSwyMzEsMjI5LDIyOCwyMzMsMjM2LDIzNiwgOTcsMTI4LCAgMSwgMzUsMjMzLDI0MiwgOTksICAyLAorICAgICA5NCwxMDAsIDk0LDEwNSwyMzYsMTAxLDEyOCwgMzYsMjE0LDI0NSwyMzcsMjMwLDIzNiwyMjksMTIwLDEyOCwKKyAgICAgIDEsIDI5LDIzOSwyMzcsMjM3LDIyNSwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsICAxLCAzNSwyMjgsCisgICAgMjM5LDExNiwxMjksICAxLCAzMywgOTQsMTM1LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgIDEsIDMzLAorICAgIDEwMSwgIDYsIDk0LDE1OCwgOTQsMTY5LCA5NCwxODAsIDk0LDE5MSwgOTQsMjEwLCA5NSwgNTYsMjI3LDI0OSwKKyAgICAyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA1MSwyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsCisgICAgIDk3LDEyOCwgNDgsIDgyLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwxNzgsMjM5LAorICAgIDIzNywyMjksMjQ0LDI0MiwyMzMsMjI3LDIyNSwyMzYsMjM2LDI0OSwyMjksMjQxLDI0NSwyMjUsMTA4LDEyOCwKKyAgICAgMzQsIDgxLDExNCwgIDMsIDk0LDIxOCwgOTUsIDExLCA5NSwgMjEsMjI5LDI0MywxMDQsICAzLCA5NCwyMjgsCisgICAgIDk0LDI0MywgOTQsMjUyLDIyNSwyMjcsMjI3LDIyOSwyMzgsMjQ0LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LAorICAgIDEyOCwgIDUsMTU2LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMjQzLDIzNywyNDUsMjQxLDIyOCwKKyAgICAyMjUsMjM3LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTU3LDIzNywyMjUsMjM4LDIyOCwyMjYsCisgICAgMjM2LDExNSwxMjgsICAwLDIyMywyNDMsMjMyLDIyNSwyNDksMjMzLDEwOSwgIDIsIDk1LCAzMiwgOTUsIDQ3LAorICAgIDIyNSwyMjcsMjI3LDIyOSwyMzgsMjQ0LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTU4LDIzMiwKKyAgICAyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMjQ0LDI0NCwyMjUsMjM3LDIyNSwyNDIsMTA3LDEyOCwgNDgsCisgICAgIDE5LDEwNCwgIDUsIDk1LCA3NywgOTUsMjEwLCA5NiwgMTcsIDk2LCA0MiwgOTYsIDQ4LCA5NywgIDQsIDk1LAorICAgICA4NywgOTUsIDk3LCA5NSwxMjAsIDk1LDE0NSwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwKKyAgICAxNTIsMTAwLCAgMiwgOTUsMTAzLCA5NSwxMTQsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsCisgICAgICA1LDExNCwyMjksMjQ2LCA5NywxMjgsICA5LCAyNCwyMzEsMTE3LCAgMiwgOTUsMTI3LCA5NSwxMzYsMjM0LAorICAgIDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNTIsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwKKyAgICAgMjQsMjMzLDExMCwgIDQsIDk1LDE1NiwgOTUsMTY1LCA5NSwxNzksIDk1LDE5NSwyMjUsMjQyLDIyNSwyMjYsCisgICAgMjMzLCA5OSwxMjgsICA2LCA1OCwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LAorICAgIDEyOCwyNTQsMjA2LDIzMywyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwKKyAgICAxMjgsMjU0LDIwNywyMzcsMjI5LDIyOCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsCisgICAgMjU0LDIwOCwxMDEsICAzLCA5NSwyMTgsIDk1LDIzOSwgOTYsICAwLDIzNywyMzMsMjI4LDIyOCwyMzYsMjI5LAorICAgIDIzMiwyMzksMjM5LDIzNSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTQ5LDI0MywKKyAgICAyNDQsMjQyLDIzOSwyMzUsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNDcsCisgICAgMjQ1LDI0MCwyNDQsMjQ1LDI0MiwyMzgsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LAorICAgIDE0NSwyMzIsIDk3LCAgMiwgOTYsIDI0LCA5NiwgMzEsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDkwLDIzMSwKKyAgICAyNDUsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgOTAsMjM5LDIzOSwxMDcsMTI4LCAgMiwgOTYsCisgICAgMjUwLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTQ3LDEwNSwgIDMsIDk2LCA2NiwgOTYsIDc3LAorICAgICA5NiwgODgsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LCA3OCwyMzUsMjI1LDI0NCwKKyAgICAyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOCwgNDgsMTc0LDEwOSwgIDIsIDk2LCA5NCwgOTYsMTA1LDIyNSwyNDIsCisgICAgMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwgOTksMjI5LDEwOCwxMzAsICA1LDIxMCwgOTYsMTE0LAorICAgICA5NiwxMzQsMjI4LDIyNSwyMzEsMjI5LDI0MywxMDQsMTI5LDI1MSwgNTAsIDk2LDEyNSwyMzIsMjI5LDIyNiwKKyAgICAyNDIsMjI5LDExOSwxMjgsMjUxLCA1MCwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIxMCwyMzQsCisgICAgMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgODMsMjM2LDIzOSwyNDQsMjQ0LAorICAgIDIyNSwxMDgsICAyLCA5NiwxNjcsIDk2LDE4NCwyMzMsMjM4LDI0NiwyMjksMjQyLDI0NCwyMjksMjI4LDI0MywKKyAgICAyNDQsMjQyLDIzOSwyMzUsMTAxLDEyOCwgIDEsMTkwLDI0MywyNDQsMjM5LDExMiwxMzIsICAyLDE0OCwgOTYsCisgICAgMTk5LCA5NiwyMTAsIDk2LDIxNiwgOTYsMjQ4LDIzMywyMzgsMjQ2LDIyOSwyNDIsMjQ0LDIyOSwxMDAsMTI4LAorICAgICAgMiwxNTAsMjM3LDIzOSwxMDAsMTI4LCAgMiwxOTIsMjQyLDIyOSwyNDYsMjI5LDI0MiwyNDMsMjI5LDEwMCwKKyAgICAxMzAsICAyLDE0OSwgOTYsMjMxLCA5NiwyMzcsMjM3LDIzOSwxMDAsMTI4LCAgMiwxOTMsMjQzLDI0NSwyNDAsCisgICAgMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsICAyLDIyOCwyNDMsMjQ0LDI0MiwyMzksMjM1LDEwMSwxMjksICAyLAorICAgIDE2MSwgOTcsICAzLDI0MiwyMjksMjQ2LDIyOSwyNDIsMjQzLDIyOSwxMDAsMTI4LCAgMiwxNjIsMTA5LCAgMiwKKyAgICAgOTcsIDIwLCA5NywgMjgsMjI1LDIyNywyNDIsMjM5LDExMCwxMjgsIDMwLCAzMywyMzksMjM4LDIzOSwyNDMsCisgICAgMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDcxLDExMSwgIDIsIDk3LCA0NSwgOTcsIDU2LDIzMiwyMzMsMjQyLAorICAgIDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwgODQsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywKKyAgICAxMjgsIDQ4LDE4MCwyNDAsIDk3LCAgMiwgOTcsIDc0LCA5NywgODAsMjQyLDIyOSwxMTAsMTI4LCAzNiwxNjIsCisgICAgMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwxNzIsMTE0LCAgMiwgOTcsIDk1LCA5NywxOTIsIDk3LAorICAgICAgMiwgOTcsMTAxLCA5NywxMDksMjI4LDIzMywyMjksMjM4LDExNiwxMjgsIDM0LCAgNywyNDYsMTAxLDEzNCwKKyAgICAgIDAsIDk2LCA5NywxMjYsIDk3LDEzNywgOTcsMTU0LCA5NywxNjEsIDk3LDE3MCwgOTcsMTgyLDIyNiwyMjksCisgICAgMjM2LDIzOSwyNDcsMjI3LDIzNywgOTgsMTI4LCAgMywgMjIsIDk5LCAgMiwgOTcsMTQzLCA5NywxNDgsMjM3LAorICAgICA5OCwxMjgsICAzLCAgMCwyMzksMjM3LCA5OCwxMjgsICAzLCAgMCwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwKKyAgICAgODMsMjM2LDIzOSwyNDcsMjM3LDIzOSwxMDAsMTI4LCAgMiwyMDYsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsCisgICAgMjI1LDIyNywxMDEsMTI4LDI1NSwgNjQsMjQ0LDIzOSwyMzgsMjI5LDIyNywyMzcsIDk4LDEyOCwgIDMsIDY0LAorICAgIDIyOSwyMjUsMjQ0LDIyOSwxMTQsMTMyLCAgMCwgNjIsIDk3LDIwOCwgOTcsMjI3LCA5NywyMzksIDk4LCAyNiwKKyAgICAyMjksMjQxLDI0NSwyMjUsMTA4LDEyOSwgMzQsMTAxLCA5NywyMTgsMjM5LDI0MiwyMzYsMjI5LDI0MywxMTUsCisgICAgMTI4LCAzNCwyMTksMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMzAsMTExLAorICAgICAgMiwgOTcsMjQ1LCA5OCwgMTUsMTE0LCAgMiwgOTcsMjUxLCA5OCwgIDgsMjI5LDI0MSwyNDUsMjMzLDI0NiwKKyAgICAyMjUsMjM2LDIyOSwyMzgsMTE2LDEyOCwgMzQsMTE1LDIzNiwyMjksMjQzLDExNSwxMjgsIDM0LDExOSwyNDYsCisgICAgMjI5LDI0MiwyMjksMjQxLDI0NSwyMjUsMTA4LDEyOCwgMzQsMTAzLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LAorICAgIDI1NCwxMDEsMTE1LCAgMiwgOTgsIDQwLCA5OCwgNDgsMjI3LDI0MiwyMzMsMjQwLDExNiwxMjgsICAyLCA5NywKKyAgICAyNDQsMjQyLDIzOSwyMzUsMTAxLDEyOCwgIDEsMjI5LDExNywgIDQsIDk4LCA2NiwgOTgsIDc3LCA5OCwxMzQsCisgICAgIDk4LDE0NSwyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDgwLDIzMywxMDgsICAyLAorICAgICA5OCwgODQsIDk4LDEwOSwyMzYsMjI5LDIzNywyMzksMTE2LCAgMiwgOTgsIDk0LCA5OCwxMDEsMjM2LDIyOSwKKyAgICAyMzAsMTE2LDEyOCwgIDAsMTcxLDI0MiwyMzMsMjMxLDIzMiwxMTYsMTI4LCAgMCwxODcsMjQzLDIzMywyMzgsCisgICAgMjMxLDEwOCwgIDIsIDk4LDExOSwgOTgsMTI2LDIzNiwyMjksMjMwLDExNiwxMjgsIDMyLCA1NywyNDIsMjMzLAorICAgIDIzMSwyMzIsMTE2LDEyOCwgMzIsIDU4LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwKKyAgICAxNzYsMjQyLDIyNSwyMzcsMjQ1LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsIDI0LDI0OSwyNDMsCisgICAgMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDIwMSwxMDQsMTQ0LCAgMCwxMDQsIDk4LDIwNCwxMDEsIDkwLAorICAgIDEwMSwxMjUsMTAxLDE2MiwxMDEsMjAyLDEwMywgOTAsMTAzLDExMCwxMDQsIDc1LDEwNCwgODcsMTA0LCA5OSwKKyAgICAxMDUsMTY3LDEwNSwxNzUsMTA1LDE4NiwxMDUsMTk1LDEwNiwgMTksMTA2LCAyMywgOTcsIDEzLCA5OCwyMzIsCisgICAgIDk5LCAxNSwgOTksIDI1LCA5OSwgNTUsIDk5LCA4MCwgOTksMTU4LCA5OSwxNzAsIDk5LDE5NSwgOTksMjEwLAorICAgICA5OSwyMzksIDk5LDI1MiwxMDAsIDU0LDEwMCwgNjMsIDk3LCAgMiwgOTgsMjM4LCA5OSwgIDEsMjI2LDIzNSwKKyAgICAyMzIsMjI1LDI0MywyMzMsMjI1LDIzOCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsCisgICAgMTY5LDIzNiwyNDQsMjM5LDIzOCwyMjksMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwxOTMsMjI2LAorICAgIDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTg1LDIyOCwxMDEsICAyLCA5OSwgMzIsIDk5LCA1MCwKKyAgICAyNDMsMjI3LDIyOSwyMzgsMjI4LDIyOSwyNDIsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsCisgICAgICA0LDE3OSwyNDYsIDk3LDEyOCwgIDksIDU3LDIzMSwxMTcsICAyLCA5OSwgNjIsIDk5LCA3MSwyMzQsMjI1LAorICAgIDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE4NSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCA1NywKKyAgICAxMDQsICA0LCA5OSwgOTAsIDk5LCA5OSwgOTksMTEzLCA5OSwxNDMsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksCisgICAgMTI4LCAgNiwgNDUsMjMwLDIzMywyMzgsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LAorICAgIDE2MiwxMDUsICAyLCA5OSwxMTksIDk5LDEzNCwyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwKKyAgICAyMjYsMjMzLCA5OSwxMjgsMjU0LDE2MywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDExMSwyMzcsCisgICAgMjI5LDIyOCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDE2NCwyMzMsMjQ0LAorICAgIDI0NSwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLCA0MiwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwKKyAgICAyMzgsIDk3LDEyOSwgNDgsMjA3LCA5OSwxODMsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsCisgICAgMTI4LDI1NSwxMzgsMjM2LDIyNSwyMzgsMjQ0LDIzMSwyNDUsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LAorICAgICAxMCwgNzcsMjM3LDI1MCwgOTcsICAyLCA5OSwyMTgsIDk5LDIyNywyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwKKyAgICAxMjgsICA2LCAzMywyMzYsMjM5LDI0NywyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCAzMywyMzgsCisgICAgMjMxLDI0NSwyMzYsMjMwLDIzMywyMzYsMjM2LDIyOSwxMTQsMTI4LCA0OSwxMDAsMTE0LCAgMiwxMDAsICAyLAorICAgIDEwMCwgMTgsMjI4LDI0MywyMzMsMjMxLDIzOCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwKKyAgICAgIDQsIDc0LDI0MCwyMzksMjM5LDExMCwgIDIsMTAwLCAyNywxMDAsIDQwLDIzNiwyMjksMjMwLDI0NCwyMjYsCisgICAgMjI1LDI0MiwyMjYsMjQ1LDExMiwxMjgsIDMzLDE4OCwyNDIsMjMzLDIzMSwyMzIsMjQ0LDIyNiwyMjUsMjQyLAorICAgIDIyNiwyNDUsMTEyLDEyOCwgMzMsMTkyLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMjAyLDI0NCwKKyAgICAyMjUsMTAyLCAgMywxMDAsIDczLDEwMCwxNjUsMTAxLCAgMCwyNDAsMjI1LDI0NCwyMjUsMTA0LDEzNCwgIDUsCisgICAgMTc4LDEwMCwgOTMsMTAwLCA5OCwxMDAsMTEyLDEwMCwxMjEsMTAwLDEzNiwxMDAsMTUyLDE3NywgNTQsMTI4LAorICAgICAgNSwxNzgsIDUwLCAgMiwxMDAsMTA0LDEwMCwxMDgsIDUxLDEyOCwgIDUsMTc4LDEwMiwxMjgsICA1LDE3OCwKKyAgICAyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE3OCwyMzgsMjI1LDI0MiwyNDIsMjM5LDI0NywyMzIsCisgICAgMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE3OCwyNDEsMjQ1LDIyNSwyNDIsMjQ0LDIyOSwyNDIsMjMyLAorICAgIDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNzgsMjQ3LDIzMywyMjgsMjI5LDIzMiwyMjksMjI2LDI0MiwKKyAgICAyMjksMTE5LDEyOCwgIDUsMTc4LDI0MSwyMjUsMjM3LDIyNSwyNDQsMTE1LDEzNSwgIDUsMTc5LDEwMCwxODgsCisgICAgMTAwLDE5MywxMDAsMTk4LDEwMCwyMDMsMTAwLDIxMiwxMDAsMjI3LDEwMCwyNDMsMTc3LCA5OCwxMjgsICA1LAorICAgIDE3OSwxNzgsIDU2LDEyOCwgIDUsMTc5LDE3OSwgNTIsMTI4LCAgNSwxNzksMjMyLDIyOSwyMjYsMjQyLDIyOSwKKyAgICAxMTksMTI4LCAgNSwxNzksMjM4LDIyNSwyNDIsMjQyLDIzOSwyNDcsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksCisgICAgMTI4LCAgNSwxNzksMjQxLDI0NSwyMjUsMjQyLDI0NCwyMjksMjQyLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LAorICAgIDEyOCwgIDUsMTc5LDI0NywyMzMsMjI4LDIyOSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE3OSwKKyAgICAyNDMsMjI5LDIzMSwyMzksMTA4LDEzNSwgIDUsMTc3LDEwMSwgMjIsMTAxLCAyNywxMDEsIDMyLDEwMSwgMzcsCisgICAgMTAxLCA0NiwxMDEsIDYxLDEwMSwgNzcsMTc3LCA1NSwxMjgsICA1LDE3NywxNzgsIDUyLDEyOCwgIDUsMTc3LAorICAgIDE3OSwgNDgsMTI4LCAgNSwxNzcsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNzcsMjM4LDIyNSwKKyAgICAyNDIsMjQyLDIzOSwyNDcsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNzcsMjQxLDI0NSwyMjUsCisgICAgMjQyLDI0NCwyMjksMjQyLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTc3LDI0NywyMzMsMjI4LAorICAgIDIyOSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE3NywgOTgsICAzLDEwMSwgOTgsMTAxLDEwMywKKyAgICAxMDEsMTEzLDIyNSwxMTQsMTI4LCAgMSwgMzksMjM5LDI0MCwyMzksMjM3LDIzOSwyMzAsMTExLDEyOCwgNDksCisgICAgIDE1LDI0MiwyMjksMjQ2LDIyOSwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDQzLCA5OSwgIDIsMTAxLAorICAgIDEzMSwxMDEsMTQwLDIyOSwyMjgsMjMzLDIzNiwyMzYsIDk3LDEyOCwgMzAsIDQxLDIzMywyNDIsIDk5LCAgMiwKKyAgICAxMDEsMTQ4LDEwMSwxNTMsMjM2LDEwMSwxMjgsIDM2LDIxNSwyNDUsMjM3LDIzMCwyMzYsMjI5LDEyMCwxMjgsCisgICAgICAxLCAzNywxMDAsICAyLDEwMSwxNjgsMTAxLDE3OCwyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywxMTUsMTI4LAorICAgICAzMCwgMzksMjM5LDExNiwgIDIsMTAxLDE4NSwxMDEsMTk0LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwKKyAgICAgMzAsIDM1LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgMzcsMTAxLDEzNiwgIDUsMjEyLDEwMSwyMjIsCisgICAgMTAxLDI1NSwxMDIsIDE5LDEwMiwyNDgsMTAzLCAgOCwxMDMsIDUzLDEwMywgNjIsMTAzLCA3NSwyMjUsMjQyLAorICAgIDExNiwxMjksIDM4LDEwMSwxMDEsMjMwLDI0MywyNDUsMjMzLDExNiwgIDIsMTAxLDIzOSwxMDEsMjQ3LDIyNiwKKyAgICAyMzYsMjI1LDIyNywxMDcsMTI4LCAzOCwxMDEsMjQ3LDIzMiwyMzMsMjQ0LDEwMSwxMjgsIDM4LCA5NywyMjgsCisgICAgMjI1LDIzMSwyMjksMjQzLDEwNCwxMjksMjUxLCA1MiwxMDIsIDEwLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LAorICAgIDEyOCwyNTEsIDUyLDEwNCwgIDYsMTAyLCAzMywxMDIsIDYxLDEwMiwgNjksMTAyLDExOSwxMDIsMTY1LDEwMiwKKyAgICAyMTQsIDk3LCAgMiwxMDIsIDM5LDEwMiwgNTMsMjM2LDI0NCwyMzksMjM4LDIyOSwyMjUsMjQyLDIyNSwyMjYsCisgICAgMjMzLCA5OSwxMjgsICA2LDE5MywyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDcxLDIyOSwyMjYsMjQyLAorICAgIDIyOSwxMTksMTI4LCAgNSwyMTIsMjMwLDIzMywyMzgsMjI1LDIzNiwgOTcsICAyLDEwMiwgODAsMTAyLDExMSwKKyAgICAyMzYsMTE2LCAgMiwxMDIsIDg3LDEwMiwgOTksMjM5LDIzOCwyMjksMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksCisgICAgMTI4LDI1MSwxNjcsMjQ0LDI0NywyMzksMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwyMzQsMjQyLAorICAgIDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDIzNCwyMzIsMjI1LDIzNywyNTAsMjI1LDIyNSwyMjYsMjM5LDI0NiwKKyAgICAxMDEsICAyLDEwMiwxMzQsMTAyLDE0OCwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsCisgICAgIDk5LDEyOCwyNTEsMTY1LDIzMywyNDMsMjM5LDIzNiwyMjUsMjQ0LDIyOSwyMjgsMjI1LDI0MiwyMjUsMjI2LAorICAgIDIzMywgOTksMTI4LDI1MSwxNjQsMTA1LCAgMiwxMDIsMTcxLDEwMiwyMDUsMjM4LDIzMywyNDQsMjMzLDIyNSwKKyAgICAyMzYsIDk3LCAgMiwxMDIsMTgzLDEwMiwxOTcsMjM2LDI0NCwyMzksMjM4LDIyOSwyMjUsMjQyLDIyNSwyMjYsCisgICAgMjMzLCA5OSwxMjgsMjUxLDE2OCwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMjM1LDI0MiwyMjUsMjMxLAorICAgIDIyNSwyMzgsIDk3LDEyOCwgNDgsMTIwLDIzNywyMjksMjI4LDIzMywyMjUsMjM2LCA5NywgIDIsMTAyLDIyNiwKKyAgICAxMDIsMjQwLDIzNiwyNDQsMjM5LDIzOCwyMjksMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MSwxNjksCisgICAgMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDIzNiwyMzMsMjQzLDIyOSwyMzMsMjI5LDI0MiwyMjUsMjQzLAorICAgIDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwxMjMsMTA3LCAgMiwxMDMsIDE0LDEwMywgMzgsMjI1LDI0NCwKKyAgICAyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsMjE2LDEwMywgMjYsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsCisgICAgMjI4LDI0NCwxMDQsMTI4LDI1NSwxNDEsMjQ1LDI0NCwyMjUsMjI1LDI0MiwyNDUsMjQzLDI0MSwyNDUsMjI1LAorICAgIDI0MiwxMDEsMTI4LCA1MSwgNTQsMjM4LDIzMSwyMzIsMjM5LDIzOSwxMDcsMTI4LCAgMiwxMDMsMjQyLDI0NSwKKyAgICAyNDQsMjQ1LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsIDU3LDExNiwxMjksICA1LDIxNSwxMDMsCisgICAgIDgxLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMjE1LDIzMiwyMzksMjM5LDEwNywxMjksICAyLAorICAgIDEwMiwxMDMsIDk5LDI0MywyNDUsMjQwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LCAgMiwxNzcsMTA1LCAgNCwKKyAgICAxMDMsMTIwLDEwMywyMDUsMTAzLDIxNiwxMDMsMjQxLDIyOSwyNDUsMTA0LCAgNCwxMDMsMTMyLDEwMywxNjcsCisgICAgMTAzLDE4MiwxMDMsMTkxLCA5NywgIDIsMTAzLDEzOCwxMDMsMTUzLDIyNywyMzMsMjQyLDIyNywyMzYsMjI5LAorICAgIDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsMTIzLDI0MCwyMjUsMjQyLDIyOSwyMzgsMjM1LDIzOSwKKyAgICAyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwgMjcsMjI3LDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LDIzOSwyNDIsCisgICAgMjI5LDIyNSwxMTAsMTI4LCA1MCwxMDksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgNzgsMjQwLAorICAgIDIyNSwyNDIsMjI5LDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLCAxMywyMzIsMjMzLDI0MiwKKyAgICAyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTE0LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsCisgICAgMTI5LCA0OCwyMTAsMTAzLDIyOSwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LAorICAgIDEzOSwyNDIsMjMzLDExMywxMzQsICA1LDE4MCwxMDQsICAzLDEwNCwgIDgsMTA0LCAyMiwxMDQsIDMxLDEwNCwKKyAgICAgNDYsMTA0LCA2MiwxNzcsIDUyLDEyOCwgIDUsMTgwLCA1MCwgIDIsMTA0LCAxNCwxMDQsIDE4LCA0OSwxMjgsCisgICAgICA1LDE4MCwxMDAsMTI4LCAgNSwxODAsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxODAsMjM4LAorICAgIDIyNSwyNDIsMjQyLDIzOSwyNDcsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxODAsMjQxLDI0NSwKKyAgICAyMjUsMjQyLDI0NCwyMjksMjQyLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTgwLDI0NywyMzMsCisgICAgMjI4LDIyOSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE4MCwyMzYsMjMzLDIzOCwyMjksMjI2LAorICAgIDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDE1MCwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwKKyAgICAxMjgsMjU1LCA3MiwxMTEsICA5LDEwNCwxMTksMTA0LDEzMCwxMDQsMTU0LDEwNCwxNzksMTA1LCAxMSwxMDUsCisgICAgIDI0LDEwNSwxMTAsMTA1LDE1MCwxMDUsMTYxLDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LAorICAgICAgNSwxMTIsMjMyLDEwNSwgIDIsMTA0LDEzNywxMDQsMTQ1LDI0MCwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwKKyAgICAgNDMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxMjMsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsCisgICAgMjM4LCA5NywxMjksIDQ4LDIxOSwxMDQsMTY3LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LAorICAgIDEyOCwyNTUsMTQyLDIzNiwyMjUsMTA5LDEzNSwgIDUsMTg1LDEwNCwxOTksMTA0LDIwNCwxMDQsMjA5LDEwNCwKKyAgICAyMTQsMTA0LDIyMywxMDQsMjM4LDEwNCwyNTQsMTc3LCA1NywxMjgsICA1LDE4NSwxNzgsIDU0LDEyOCwgIDUsCisgICAgMTg1LDE3OSwgNTAsMTI4LCAgNSwxODUsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxODUsMjM4LAorICAgIDIyNSwyNDIsMjQyLDIzOSwyNDcsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxODUsMjQxLDI0NSwKKyAgICAyMjUsMjQyLDI0NCwyMjksMjQyLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTg1LDI0NywyMzMsCisgICAgMjI4LDIyOSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE4NSwyMzgsMjM5LDIzNSwyMzIsMjQ1LAorICAgIDIzNSwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNDYsMTExLCAgMiwxMDUsIDMwLDEwNSwxMDAsMTA3LCAgNCwKKyAgICAxMDUsIDQwLDEwNSwgNTIsMTA1LCA1OCwxMDUsIDgwLDIyNSwyMjYsMjM5LDI0NiwyMjksMjI3LDIzOSwyMzcsCisgICAgIDk4LDEyOCwgIDMsICA5LDIyNywyMzcsIDk4LDEyOCwgIDMsICA5LDI0MCwyMjUsMjM2LDIyNSwyNDQsMjI1LAorICAgIDIzNiwyMzMsMjUwLDIyOSwyMjgsMjI2LDIyOSwyMzYsMjM5LDI0NywyMjcsMjM3LCA5OCwxMjgsICAzLCAzMywKKyAgICAyNDIsMjI5LDI0NCwyNDIsMjM5LDIzMCwyMzYsMjI5LDI0OCwyMjYsMjI5LDIzNiwyMzksMjQ3LDIyNywyMzcsCisgICAgIDk4LDEyOCwgIDMsIDM0LDIzOCwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLCA2NiwxMTQsICAyLAorICAgIDEwNSwxMTYsMTA1LDE0MywxMDUsICAyLDEwNSwxMjIsMTA1LDEzMSwyMjcsMjM5LDI0MCwyNDQsMjMzLCA5OSwKKyAgICAxMjgsICAzLDIzMywyNTAsMjM5LDIzOCwyNDQsMjI1LDIzNiwyMjYsMjI1LDExNCwxMjgsIDMyLCAyMSwyMzgsCisgICAgMjI3LDIzNywgOTgsMTI4LCAgMywgMjcsMjQ0LDI0MywyNDAsMjQyLDIzMywyMzgsMjMxLDExNSwxMjgsIDM4LAorICAgIDEwNCwyNDUsMjQzLDEwMSwxMjgsIDM1LCAgMiwyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTYzLDI0MywKKyAgICAyNDUsMjQwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LCAgMiwxNzYsMjQ0LDI0NSwyNDIsMjM4LDIyOSwxMDAsCisgICAgMTI4LCAgMiwxMDEsMTE3LCAgNCwxMDUsMjA1LDEwNSwyMTYsMTA1LDIyOSwxMDUsMjU0LDIzMiwyMzMsMjQyLAorICAgIDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxMTcsMjMzLDIzMywyNDQsMjM5LDI0MywyNDEsMjQ1LDIyNSwKKyAgICAyNDIsMTAxLDEyOCwgNTEsIDUxLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwyMTMsCisgICAgMTA1LDI0MiwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDE0MCwyMzgsMjMxLAorICAgIDIyNSwyNDIsMjQ1LDIzNywyMzYsMjI1LDI0NSwxMTYsMTI5LCAgMiwyMjEsMTA2LCAxMywyMjcsMjM3LCA5OCwKKyAgICAxMjgsICAzLCAxMSwxMTgsMTI4LCAgMSwxNDksMjQ5LDI0MCwyMzIsMjI5LDExMCwxMzIsICAwLCA0NSwxMDYsCisgICAgIDM5LDEwNiwgNTAsMTA2LCA2MiwxMDYsIDg1LDIzMywyMzgsMjMwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LAorICAgIDI0NiwyMjksMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMTMsMTE1LCAgMiwKKyAgICAxMDYsIDY4LDEwNiwgNzUsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNTQsIDk5LDI0NSwyNDAsMjI5LDI0MiwyMzMsCisgICAgMjM5LDExNCwxMjgsMjQ2LDIzMCwyNDQsMjQ3LDExMSwxMjgsIDMyLCAxNiwxMDUsMTQ5LCAgMCwxMDUsMTA2LAorICAgIDEzNywxMDYsMTYwLDEwNiwxOTQsMTA2LDI0MSwxMTAsMTIzLDExMCwyNDMsMTExLCAyNCwxMTEsIDUxLDExMSwKKyAgICAyMTMsMTExLDIxNywxMTEsMjU1LDExMiwgMjEsMTEyLDEwNSwxMTMsIDE0LDExMywgODksMTEzLCA5NywxMTMsCisgICAgMTEwLDExMywxOTcsMTEzLDI1NCwxMTQsIDI2LDExNCwgNzAsMjI1LCA5OSwgIDIsMTA2LDE0NCwxMDYsMTUwLAorICAgIDI0NSwyNDQsMTAxLDEyOCwgIDAsMjM3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA3OSwKKyAgICAgOTgsICAzLDEwNiwxNjgsMTA2LDE3NywxMDYsMTg3LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksCisgICAgMTM1LDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAzOSwyNDIsMjI5LDI0NiwxMDEsMTI4LAorICAgICAgMSwgNDUsIDk5LCAgMywxMDYsMjAyLDEwNiwyMDksMTA2LDIzMSwyMjUsMjQyLDIzOSwxMTAsMTI4LCAgMSwKKyAgICAyMDgsMjMzLDI0MiwgOTksICAyLDEwNiwyMTcsMTA2LDIyMiwyMzYsMTAxLDEyOCwgMzYsMjE2LDI0NSwyMzcsCisgICAgMjMwLDIzNiwyMjksMTIwLDEyOCwgIDAsMjM4LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LAorICAgICA4NiwxMDAsICA0LDEwNiwyNTEsMTA3LCAgNSwxMTAsIDgwLDExMCwxMTMsMjI2LDIzNiwyMzEsMjQyLDIyNSwKKyAgICAyNDYsMTAxLDEyOCwgIDIsICA5LDEwMSwgIDIsMTA3LCAxMSwxMTAsIDc1LDIzOSwyMzEsMjQyLDIyNSwyNDAsCisgICAgMTA0LCAgNywxMDcsIDMyLDEwNywgNDYsMTA3LCA1OSwxMDksMjQ0LDExMCwgMTksMTEwLCAzMiwxMTAsIDQ0LAorICAgIDIyOSwyMjUsMjQyLDI0NCwyMzIsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI4LCA1MCwxNDMsMjMwLDIzMywKKyAgICAyNDIsMjI5LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgNTAsMTM5LDIzMywgOTksIDE0LDEwNywgOTAsCisgICAgMTA3LDEwNiwxMDcsMjA1LDEwOCwgIDMsMTA4LCA2OSwxMDgsIDk4LDEwOCwxMTQsMTA4LDE3MSwxMDgsMjIwLAorICAgIDEwOCwyMzIsMTA5LCAgMywxMDksIDcwLDEwOSwyMDgsMTA5LDIzNywyMjUsMjM2LDIzNiwyMzMsMjI1LDIzOCwKKyAgICAyMjcsMjI5LDI0MCwyMjUsMjQyLDIyOSwxMTAsMTI4LCA1MCwgNjMsIDk5LCAgNCwxMDcsMTE2LDEwNywxMjcsCisgICAgMTA3LDE0MSwxMDcsMTQ4LDIyNSwyMzYsMjM2LDI0MCwyMjUsMjQyLDIyOSwxMTAsMTI4LCA1MCwgNTgsMjI5LAorICAgIDIzOCwyNDQsMjQyLDIyOSwyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsIDUwLDE2NSwyMzYsMjM5LDI0MywKKyAgICAxMDEsMTI4LCA0OCwgIDYsMTExLCAgMywxMDcsMTU2LDEwNywxNzEsMTA3LDE5MSwyMzcsMjM3LCA5NywxMjksCisgICAgIDQ4LCAgMSwxMDcsMTY0LDIzNiwyMjksMjMwLDExNiwxMjgsMjU1LDEwMCwyMzgsMjMxLDI0MiwyMjUsMjQ0LAorICAgIDI0NSwyMzYsMjI1LDI0NCwyMzMsMjM5LDIzOCwyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgNTAsIDU1LDI0MiwKKyAgICAyNDIsMjI5LDIyNywyNDQsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI4LCA1MCwxNjMsMTAxLCAgMywxMDcsCisgICAgMjEzLDEwNywyMjUsMTA3LDI0MiwyMjUsMjQyLDI0NCwyMzIsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDUwLAorICAgICA0NywyMzgsMjQ0LDIyOSwyNDIsMjQwLDI0MiwyMzMsMjQzLDIyOSwyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwKKyAgICAgNTAsIDYxLDI0OCwyMjcsMjI5LDIzNiwyMzYsMjI5LDIzOCwyNDQsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsCisgICAgMTI4LCA1MCwxNTcsMTAyLCAgMiwxMDgsICA5LDEwOCwgMjQsMjI5LDI0MywyNDQsMjMzLDI0NiwyMjUsMjM2LAorICAgIDI0MCwyMjUsMjQyLDIyOSwxMTAsMTI4LCA1MCwgNjQsMTA1LCAgMiwxMDgsIDMwLDEwOCwgNTksMjM4LDIyNSwKKyAgICAyMzgsMjI3LDIzMywyMjUsMTA4LCAgMiwxMDgsIDQyLDEwOCwgNTEsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsCisgICAgMTI4LCA1MCwxNTAsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDUwLCA1NCwyNDIsMjI5LDI0MCwyMjUsMjQyLAorICAgIDIyOSwxMTAsMTI4LCA1MCwgNDMsMTA0LCAgMiwxMDgsIDc1LDEwOCwgODYsMjI1LDI0NiwyMjksMjQwLDIyNSwKKyAgICAyNDIsMjI5LDExMCwxMjgsIDUwLCA1MCwyMzMsMjMxLDIzMiwyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsCisgICAgIDUwLDE2NCwyMzMsMjQ0LDIyOSwyNDIsMjI1LDI0NCwyMzMsMjM5LDIzOCwyMzcsMjI1LDI0MiwxMDcsMTI4LAorICAgICA0OCwgIDUsMTA4LCAgMywxMDgsMTIyLDEwOCwxNDgsMTA4LDE2MCwyMjUsMjI2LDIzOSwxMTQsICAyLDEwOCwKKyAgICAxMzEsMTA4LDE0MCwyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsIDUwLDE1MiwyNDAsMjI1LDI0MiwyMjksCisgICAgMTEwLDEyOCwgNTAsIDU2LDIyOSwyMzAsMjQ0LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgNTAsMTY3LAorICAgIDIzOSwyNDcsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI4LCA1MCwxNjYsMTA5LCAgMiwxMDgsMTc3LDEwOCwKKyAgICAyMDksMTAxLCAgMiwxMDgsMTgzLDEwOCwxOTgsMjI4LDIzMywyMjcsMjMzLDIzOCwyMjksMjI3LDIzMywyNDIsCisgICAgMjI3LDIzNiwxMDEsMTI4LCA1MCwxNjksMjQ0LDIyNSwyMzYsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDUwLAorICAgICA0NiwyMzksMjM5LDIzOCwyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgNTAsIDQyLDIzOCwyMjUsMjM3LDIyOSwKKyAgICAyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgNTAsIDUyLDExMiwgIDIsMTA4LDIzOCwxMDgsMjQ2LDIyOSwyNDIsCisgICAgMjMzLDIzOSwxMDAsMTI4LCA0OCwgIDIsMjQyLDIzMywyMzgsMjQ0LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLAorICAgIDEyOCwgNTAsMTU4LDExNCwgIDIsMTA5LCAgOSwxMDksIDU3LDEwMSwgIDMsMTA5LCAxNywxMDksIDI4LDEwOSwKKyAgICAgNDMsMjI1LDIyNywyMzIsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDUwLCA2NywyNDAsMjQyLDIyOSwyNDMsCisgICAgMjI5LDIzOCwyNDQsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDUwLCA1NywyNDMsMjM5LDI0NSwyNDIsMjI3LAorICAgIDIyOSwyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgNTAsIDYyLDIzMywyMzEsMjMyLDI0NCwyMjcsMjMzLDI0MiwKKyAgICAyMjcsMjM2LDEwMSwxMjgsIDUwLDE2OCwxMTUsICA1LDEwOSwgODIsMTA5LDExMSwxMDksMTI1LDEwOSwxNTAsCisgICAgMTA5LDE3OCwxMDEsICAyLDEwOSwgODgsMTA5LDEwMSwyMjcsMjQyLDIyOSwyNDQsMjI3LDIzMywyNDIsMjI3LAorICAgIDIzNiwxMDEsMTI4LCA1MCwxNTMsMjM2LDIzMCwyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgNTAsIDY2LDIzOSwKKyAgICAyMjcsMjMzLDIyOSwyNDQsMjQ5LDI0MCwyMjUsMjQyLDIyOSwxMTAsMTI4LCA1MCwgNTEsMTEyLCAgMiwxMDksCisgICAgMTMxLDEwOSwxMzcsMjI1LDIyNywxMDEsMTI4LCA0OCwgIDAsMjI5LDIyNywyMzMsMjI1LDIzNiwyNDAsMjI1LAorICAgIDI0MiwyMjksMTEwLDEyOCwgNTAsIDUzLDExNiwgIDIsMTA5LDE1NiwxMDksMTY3LDIzOSwyMjcsMjM1LDI0MCwKKyAgICAyMjUsMjQyLDIyOSwxMTAsMTI4LCA1MCwgNDksMjQ1LDIyOCwyNDksMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsCisgICAgIDUwLCA1OSwxMTcsICAyLDEwOSwxODQsMTA5LDE5MywyMzgsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDUwLAorICAgICA0OCwyNDAsMjI5LDI0MiwyNDYsMjMzLDI0MywyMjksMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDUwLCA2MCwKKyAgICAxMTksICAyLDEwOSwyMTQsMTA5LDIyNiwyMjUsMjQ0LDIyOSwyNDIsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsCisgICAgIDUwLCA0NCwyMzksMjM5LDIyOCwyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgNTAsIDQ1LDI1MCwyMjksMjQyLAorICAgIDExMSwxMjgsIDQ4LCAgNywxMDksICAyLDEwOSwyNTAsMTEwLCAgNywyMjksMjQ0LDIyNSwyMzYsMjI3LDIzMywKKyAgICAyNDIsMjI3LDIzNiwxMDEsMTI4LCA1MCwxNDIsMjM5LDIzOSwyMzgsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsCisgICAgMTI4LCA1MCwxMzgsMjM4LDIyNSwyMzcsMjI5LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgNTAsMTQ4LAorICAgIDI0MywyNDUsMjM4LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgNTAsMTQ0LDExOSwgIDIsMTEwLCA1MCwKKyAgICAxMTAsIDYzLDIyNSwyNDQsMjI5LDI0MiwyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsIDUwLDE0MCwyMzksCisgICAgMjM5LDIyOCwyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsIDUwLDE0MSwyNDYsIDk3LDEyOCwgIDksICA3LAorICAgIDIzMywyMjksMjQyLDIyOSwyNDMsMjMzLDExNSwxMzAsICAwLDIzOSwxMTAsIDk0LDExMCwxMDIsMjI1LDIyNywKKyAgICAyNDUsMjQ0LDEwMSwxMjgsIDMwLCA0NywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsCisgICAgMjI5LDIzOSwyNDQsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDIwMywxMDEsICAzLDExMCwxMzEsMTEwLAorICAgIDE0NywxMTAsMTU4LDIyNiwyNDIsMjI5LDI0NiwyMjksMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwKKyAgICAxMjgsICA0LDIxNSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDUzLDI0NSwyMzgsCisgICAgMTAzLCAgNCwxMTAsMTcwLDExMCwyMDUsMTEwLDIyMCwxMTAsMjI5LCA5NywgIDIsMTEwLDE3NiwxMTAsMTkxLAorICAgIDIyNywyMzMsMjQyLDIyNywyMzYsMjI5LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsMTE3LDI0MCwKKyAgICAyMjUsMjQyLDIyOSwyMzgsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwgMjEsMjI3LDIzMywyNDIsCisgICAgMjI3LDIzNiwyMjksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwxMDMsMjM1LDIzOSwyNDIsMjI5LAorICAgIDIyNSwxMTAsMTI4LCA0OSwgNzEsMjQwLDIyNSwyNDIsMjI5LDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwKKyAgICAxMjgsIDUwLCAgNywxMDMsICAyLDExMCwyNDksMTExLCAgMCwyNDIsMjI1LDI0NiwxMDEsMTI4LCAgMCwyMzYsCisgICAgMTE3LCAgMiwxMTEsICA2LDExMSwgMTUsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxMzUsMjQyLAorICAgIDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgIDcsMTA0LCAgMiwxMTEsIDMwLDExMSwgNDAsMjMzLDI0MiwKKyAgICAyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDY4LDIzOSwyMzksMjM1LDIyNSwyMjYsMjM5LDI0NiwxMDEsCisgICAgMTI4LCAzMCwyMDEsMTA1LCAgOCwxMTEsIDY5LDExMSwgNzksMTExLCA5MCwxMTEsIDk3LDExMSwxMjIsMTExLAorICAgIDEzOCwxMTEsMTUzLDExMSwxNjksMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTM2LDIyNywKKyAgICAyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgNTYsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksCisgICAgICA4LDIzMSwxMTcsICAyLDExMSwxMDQsMTExLDExMywyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLAorICAgIDEzNiwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCAgOCwyMzcsMjI1LDI0NCwyNDIsMjI1LDIzMSwKKyAgICAyNDUsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgNjQsMjM4LDI0NiwyMjksMjQyLDI0NCwyMjksCisgICAgMjI4LDIyNiwyNDIsMjI5LDI0NiwxMDEsMTI4LCAgMiwgMTEsMjQzLDIzMiwyMzksMjQyLDI0NCwyMjcsMjQ5LAorICAgIDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDU3LDI0NiwyMzksMjQ3LDIyOSwyMzYsMjQzLDIzMywKKyAgICAyMzEsMTEwLCAgMywxMTEsMTg1LDExMSwxOTUsMTExLDIwMiwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsCisgICAgMTI4LCAgOSwxOTIsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDY0LDIzMSwyNDUsMjM0LDIyNSwyNDIsMjI1LAorICAgIDI0NCwxMDUsMTI4LCAxMCwxOTIsMTA2LDEyOCwgIDEsIDUxLDEwNywgIDIsMTExLDIyMywxMTEsMjQ3LDIyNSwKKyAgICAyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDE2NCwxMTEsMjM1LDIzMiwyMjUsMjM2LDIzMCwyNDcsCisgICAgMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTE0LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgOTksMTA4LAorICAgICAgMiwxMTIsICA1LDExMiwgMTAsMjI4LDEwMSwxMjgsICAyLDIyMCwyNDUsMjQ5LDIzMiwyMjksMjI2LDI0MiwKKyAgICAyMjksMTE5LDEyOCwgIDUsMTcyLDEwOSwgIDIsMTEyLCAyNywxMTIsIDk0LCA5NywgIDMsMTEyLCAzNSwxMTIsCisgICAgIDU1LDExMiwgODAsMjI3LDI0MiwyMzksMTEwLDEyOSwgIDEsIDQzLDExMiwgNDQsMjI3LDI0OSwyNDIsMjMzLAorICAgIDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDIyNywyMzEsMjI5LDIzOSwyNDIsMjI1LDI0MCwyNDAsMjQyLDIzOSwKKyAgICAyNDgsMjMzLDIzNywyMjUsMjQ0LDIyOSwyMzYsMjQ5LDIyOSwyNDEsMjQ1LDIyNSwxMDgsMTI4LCAzNCwgODMsCisgICAgMjQ0LDI0MiwyMjUsMjMxLDI0NSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCA2MywyMzksMjM4LAorICAgIDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDczLDExMCwgIDUsMTEyLDExNywxMTIsMTI3LDExMiwKKyAgICAxMzYsMTEyLDE0OCwxMTIsMjMyLDIyNywyNDIsMjI5LDIzNywyMjksMjM4LDExNiwxMjgsIDM0LCAgNiwyMzAsCisgICAgMjMzLDIzOCwyMzMsMjQ0LDEyMSwxMjgsIDM0LCAzMCwyMzMsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LAorICAgIDExMCwxMjgsICA1LDEwNywxMTYsICAyLDExMiwxNTQsMTEyLDIyMiwxMDEsICAyLDExMiwxNjAsMTEyLDIxMSwKKyAgICAyMzEsMjQyLDIyNSwxMDgsMTMxLCAzNCwgNDMsMTEyLDE3MywxMTIsMTkxLDExMiwxOTYsIDk4LCAgMiwxMTIsCisgICAgMTc5LDExMiwxODcsMjM5LDI0NCwyNDQsMjM5LDEwOSwxMjgsIDM1LCAzMywxMTYsMTI4LCAzNSwgMzMsMjI5LAorICAgIDEyMCwxMjgsMjQ4LDI0NSwxMTYsICAyLDExMiwyMDIsMTEyLDIwNywyMzksMTEyLDEyOCwgMzUsIDMyLDExMiwKKyAgICAxMjgsIDM1LCAzMiwyNDIsMjQzLDIyOSwyMjcsMjQ0LDIzMywyMzksMTEwLDEyOCwgMzQsIDQxLDIzMywyNDMsCisgICAgMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLCAgNSwxMTgsICAzLDExMiwyNDAsMTEyLDI0OSwxMTMsICAyLAorICAgIDIyNiwyNDUsMjM2LDIzNiwyMjksMTE2LDEyOCwgMzcsMjE2LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwKKyAgICAgMzcsMjE3LDI0MywyMzcsMjMzLDIzNiwyMjksMjMwLDIyNSwyMjcsMTAxLDEyOCwgMzgsIDU5LDExMSwgIDMsCisgICAgMTEzLCAyMiwxMTMsIDMzLDExMywgNDEsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LAorICAgICA4MSwyMzEsMjM5LDIzOCwyMjksMTA3LDEyOCwgIDEsIDQ3LDI0NCwgOTcsMTMxLCAgMywxODUsMTEzLCA1MiwKKyAgICAxMTMsIDczLDExMywgODEsMjI4LDIzMywyMjksMjQyLDIyOSwyNDMsMjMzLDExNSwxMjksICAzLDIwMiwxMTMsCisgICAgIDY1LDI0NCwyMzksMjM4LDIzOSwxMTUsMTI4LCAgMywxNDQsMjM2LDIyNSwyNDQsMjMzLDExMCwxMjgsICAyLAorICAgIDEwNSwyNDQsMjM5LDIzOCwyMzksMTE1LDEyOCwgIDMsMTc1LDI0MCwyMjUsMjQyLDIyOSwxMTAsMTI4LCAzNiwKKyAgICAxNjQsMjQyLDIzMywyMzEsMjQ1LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsMTE0LDExNSwgIDQsCisgICAgMTEzLDEyMCwxMTMsMTY1LDExMywxNzksMTEzLDE4NywyMzcsMjI1LDIzNiwxMDgsICAyLDExMywxMjksMTEzLAorICAgIDE0MCwyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDY3LDIzNSwyMjUsMjQ0LDIyNSwKKyAgICAyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwxNjMsMTEzLDE1MywyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsCisgICAgMjQ0LDEwNCwxMjgsMjU1LDEwNCwyNDMsMjMyLDIyNSwyNDIsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LAorICAgIDEyOCwgIDksMjUwLDI0NCwyNDIsMjM5LDIzNSwxMDEsMTI4LCAgMiwxMDQsMjQ1LDI0MCwyMjksMjQyLDIzMywKKyAgICAyMzksMTE0LDEyOCwyNDYsMjM3LDExNiwgIDIsMTEzLDIwMywxMTMsMjM3LDIyOSwyNDIsMjI1LDI0NCwyMzMsCisgICAgMjM5LDExMCwgIDIsMTEzLDIxNSwxMTMsMjI2LDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LAorICAgICA0OCwxNTcsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDI1MywyMzMsMjM2LDIyOCwKKyAgICAxMDEsMTI5LCAgMSwgNDEsMTEzLDI0NiwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDQ1LDExNywgIDIsCisgICAgMTE0LCAgNCwxMTQsIDE1LDIyNiwyMzksMjQwLDIzOSwyMzcsMjM5LDIzMCwxMTEsMTI4LCA0OSwgNDEsMjI3LAorICAgIDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA3OCwyNDYsMjM5LDI0NywyMjksMjM2LDI0MywKKyAgICAyMzMsMjMxLDExMCwgIDMsMTE0LCA0MiwxMTQsIDUyLDExNCwgNTksMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsCisgICAgMTA1LDEyOCwgIDksMTkxLDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCA2MywyMzEsMjQ1LDIzNCwyMjUsMjQyLAorICAgIDIyNSwyNDQsMTA1LDEyOCwgMTAsMTkxLDI1MCwyMzIsMjMzLDI0NCwyNDMsIDk3LCAgMiwxMTQsIDgxLDExNCwKKyAgICAgOTIsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDExNywyMjgsMjI2LDIzNiwyMzEsCisgICAgMjQyLDIyNSwyNDYsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxMTksMTA2LAorICAgIDEzOCwgIDAsMTA2LDExNCwxMzUsMTE0LDE5OCwxMTQsMjA5LDExNSwgIDMsMTE1LCAxOSwxMTUsMTMyLDExNSwKKyAgICAyMDEsMTE1LDIwNiwxMTUsMjE4LDExNSwyMjYsIDk3LCAgNCwxMTQsMTQ1LDExNCwxNTYsMTE0LDE2NiwxMTQsCisgICAgMTczLDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMTMsMjI2LDIyOSwyMzgsMjMxLAorICAgIDIyNSwyMzYsMTA1LDEyOCwgIDksMTU2LDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCAyOCwyMzEsMTE3LCAgMiwKKyAgICAxMTQsMTgwLDExNCwxODksMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNTYsMjQyLDIzNywyNDUsCisgICAgMjM1LDIzMiwxMDUsMTI4LCAxMCwgMjgsMjI2LDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LAorICAgICAxNiwgOTksICAzLDExNCwyMTcsMTE0LDIyNCwxMTQsMjQ2LDIyNSwyNDIsMjM5LDExMCwxMjgsICAxLDI0MCwKKyAgICAyMzMsMjQyLCA5OSwgIDIsMTE0LDIzMiwxMTQsMjM3LDIzNiwxMDEsMTI4LCAzNiwyMTcsMjQ1LDIzNywyMzAsCisgICAgMjM2LDIyOSwxMjAsMTI4LCAgMSwgNTMsMjQyLDIzOSwyNDMsMjQzLDIyOSwyMjgsMjQ0LDIyNSwyMzMsMTA4LAorICAgIDEyOCwgIDIsMTU3LDIyOCwyMzksMjQ0LDIzNiwyMjksMjQzLDI0MywyNDMsMjQ0LDI0MiwyMzksMjM1LDEwMSwKKyAgICAxMjgsICAyLCA5NSwxMDEsICAzLDExNSwgMjcsMTE1LCAzOCwxMTUsMTAzLDIyNywyNDksMjQyLDIzMywyMzYsCisgICAgMjM2LDIzMywgOTksMTI4LCAgNCwgODgsMjI5LDEwOSwgIDQsMTE1LCA0OSwxMTUsIDU4LDExNSwgNzIsMTE1LAorICAgICA4OCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA0NCwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwKKyAgICAyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTU4LDIzMywyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsCisgICAgMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDE1OSwyMzcsMjI5LDIyOCwyMzMsMjI1LDIzNiwyMjUsMjQyLAorICAgIDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDE2MCwxMDQsICAyLDExNSwxMDksMTE1LDExOCwyMjUsMjQyLDIyNSwKKyAgICAyMjYsMjMzLCA5OSwxMjgsICA2LDE1MiwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsCisgICAgIDk5LDEyOCwyNTEsMTM5LDEwNCwgIDIsMTE1LDEzOCwxMTUsMTg4LCA5NywgIDMsMTE1LDE0NiwxMTUsMTU2LAorICAgIDExNSwxNjMsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTU3LDIyOCwyMjksMjQ2LCA5NywKKyAgICAxMjgsICA5LCAyOSwyMzEsMTE3LCAgMiwxMTUsMTcwLDExNSwxNzksMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsCisgICAgMTI4LCAxMCwxNTcsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgMjksMjI5LDIzMiwyMjUsMjQyLAorICAgIDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsMTIzLDIzMywxMTUsMTI4LCA0OCwgIDQsMjM3LDIzOSwKKyAgICAyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgNzQsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsCisgICAgIDM2LDE2NSwyNDMsMjQ1LDI0MCwyMjksMjQyLDIzMywyMzksMTE0LDEyOCwgIDIsMTc4LDEwNywxNDYsICAwLAorICAgIDEwNywxMTYsIDIxLDExOCwxMTAsMTE4LDEyMSwxMTgsMTgzLDExOCwxOTQsMTE5LCAyOCwxMTksIDQyLDEyMCwKKyAgICAxNTAsMTIxLCA5MCwxMjEsMTAzLDEyMSwxMjksMTIxLDE3OCwxMjIsIDYwLDEyMiwgODIsMTIyLCA5NSwxMjIsCisgICAgMTE4LDEyMiwxNjAsMTIyLDE3MCwgOTcsIDEyLDExNiwgNDcsMTE2LCA3OSwxMTYsMTAxLDExNiwxMzEsMTE2LAorICAgIDI0NSwxMTcsIDE0LDExNywgNDQsMTE3LCA2OSwxMTcsMTc1LDExNywxODksMTE4LCA1NiwxMTgsIDg1LCA5OCwKKyAgICAgIDIsMTE2LCA1MywxMTYsIDcwLDIyNSwyNDMsMjMyLDIzNSwyMzMsMjQyLDIyNywyNDksMjQyLDIzMywyMzYsCisgICAgMjM2LDIzMywgOTksMTI4LCAgNCwxNjEsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwxNDksIDk5LAorICAgICAgMiwxMTYsIDg1LDExNiwgOTEsMjQ1LDI0NCwxMDEsMTI4LCAzMCwgNDksMjQ5LDI0MiwyMzMsMjM2LDIzNiwKKyAgICAyMzMsIDk5LDEyOCwgIDQsIDU4LDIyOCwxMDEsICAyLDExNiwxMDgsMTE2LDEyNiwyNDMsMjI3LDIyOSwyMzgsCisgICAgMjI4LDIyOSwyNDIsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDE1NSwyNDYsIDk3LAorICAgIDEyOCwgIDksIDIxLDEwMiwxMzUsICA1LDIxOSwxMTYsMTQ5LDExNiwxNTgsMTE2LDE3OCwxMTYsMTkyLDExNiwKKyAgICAyMDEsMTE2LDIxNywxMTYsMjMyLDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDY3LDIyOCwyMjUsCisgICAgMjMxLDIyOSwyNDMsMTA0LDEyOSwyNTEsIDU5LDExNiwxNjksMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LAorICAgIDI1MSwgNTksMjMwLDIzMywyMzgsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDIxOCwKKyAgICAyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIxOSwyMzMsMjM4LDIzMywyNDQsMjMzLDIyNSwyMzYsCisgICAgMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwyMTksMjM3LDIyOSwyMjgsMjMzLDIyNSwyMzYsMjI1LAorICAgIDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwyMjAsMjQyLDIyNSwyMzAsMjI5LDIzMiwyMjksMjI2LDI0MiwKKyAgICAyMjksMTE5LDEyOCwyNTEsIDc3LDIzMSwxMTcsICAyLDExNiwyNTIsMTE3LCAgNSwyMzQsMjI1LDI0MiwyMjUsCisgICAgMjQ0LDEwNSwxMjgsIDEwLDE0OSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCAyMSwxMDQsICAyLAorICAgIDExNywgMjAsMTE3LCAzMCwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwgNzUsMjM5LDIzOSwKKyAgICAyMzUsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDE5NiwyMzUsMjI1LDI0NCwyMjUsCisgICAgMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsMTcxLDExNywgNTcsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LAorICAgIDI0NCwxMDQsMTI4LDI1NSwxMTgsMTEyLCAgMiwxMTcsIDc1LDExNywgOTYsMjQwLCA5NywxMjksICAzLDE4NiwKKyAgICAxMTcsIDgyLDI0MywyNDksMjM3LDIyNiwyMzksMjM2LDIzMSwyNDIsMjI5LDIyOSwxMDcsMTI4LCAgMywyNDAsCisgICAgMjQ5LDIyOSwyMzksMjQ1LDExMCwgIDMsMTE3LDEwOCwxMTcsMTIyLDExNywxNTYsMjM3LDIzMywyMjksMjQ1LAorICAgIDIzNywyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LDExMywxMTIsICAyLDExNywxMjgsMTE3LDE0MywKKyAgICAyMzIsMjMzLDIyOSwyNDUsMjQwLDIzMiwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LDEzMiwyMzMsCisgICAgMjI5LDI0NSwyNDAsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxMjAsMjQzLDI0MywyMjUsMjM4LAorICAgIDIzMSwyNDAsMjMzLDIyOSwyNDUsMjQwLDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTIxLDI0MiwKKyAgICAyMzksMjQyLDIzMywyMzMsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwgMTMsMTE1LCAgNSwxMTcsCisgICAgMjAxLDExNywyNDUsMTE4LCAgNCwxMTgsIDEyLDExOCwgNDAsMjMyLDIzMywyMjgsMjI1LDIyNSwyNDUsMjQ0LAorICAgIDExMSwgIDIsMTE3LDIxNCwxMTcsMjIzLDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDY0LDIzOCwKKyAgICAyMzksMjQzLDIzMywyMjgsMjI5LDIyNiwyMjksMjI1LDI0MiwyMzMsMjM4LDIzMSwyMjUsMjQyLDIyNSwyMjYsCisgICAgMjMzLCA5OSwxMjgsICA2LCA2NCwyMzcsMjI1LDIzNiwyMzYsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LAorICAgICA5NywxMjgsIDQ4LDI0NSwyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTMyLDI0MiwgOTcsICAyLDExOCwKKyAgICAgMTksMTE4LCAyOCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA4MCwyNDQsMjI1LDIzOCwyMjUsCisgICAgMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA3NywyNDQsMjQyLDIzOSwyMzUsMjI5LDIyNywyNDksMjQyLAorICAgIDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNTksMjQ0LDIyNSwyMzIsMjMzLDI0MiwyMjUsMjQwLDI0MiwKKyAgICAyMzksMjM2LDIzOSwyMzgsMjMxLDIzNywyMjUsMjQyLDIzNSwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsCisgICAgMjQ0LDEwNCwxMjgsMjU1LDExMiwyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMjM2LDI0MywyNDQsMjQyLAorICAgIDIzOSwyMzUsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNTcsMjI2LDIzOSwKKyAgICAyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAxNCwgOTksICA0LDExOCwxMzEsMTE4LDE1MywxMTgsCisgICAgMTYyLDExOCwxNzAsIDk3LCAgMiwxMTgsMTM3LDExOCwxNDcsMjM2LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLAorICAgIDEyOCwgNTEsMTM3LDI0MiwyMzksMTEwLDEyOCwgIDEsMjMzLDIyOSwyMjgsMjMzLDIzNiwyMzYsIDk3LDEyOCwKKyAgICAgIDEsIDU1LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI4LCAzNiwyMTgsMjM5LDIzNywyMzcsMjI1LDIyNSwyMjcsCisgICAgMjI3LDIyOSwyMzgsMTE2LDEyOCwgIDEsIDU1LDIyOCwyMzksMjQ0LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LAorICAgICAzMCwgNTEsMTAxLCAgNCwxMTgsMjA0LDExOCwyMzEsMTE5LCAgMCwxMTksIDEyLDEwNCwgIDIsMTE4LDIxMCwKKyAgICAxMTgsMjIxLDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMzIsMjMzLDI0MiwyMjUsCisgICAgMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDgxLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LAorICAgICA0OCwxNzcsMTE4LDI0NCwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDEyMSwKKyAgICAyMzgsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LDExMSwyNDMsMjM3LDIyNSwyMzYsCisgICAgMjM2LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwyNDYsMjMxLDI0MiwyMjksMjI5LAorICAgIDIzOCwyMzYsMjI1LDIzOCwyMjgsMjMzLCA5OSwxMjgsICAxLCA1NiwxMDQsICA2LDExOSwgNTYsMTE5LDE4NSwKKyAgICAxMTksMTk2LDExOSwyMjEsMTIwLCA1MiwxMjAsMTQwLCA5NywgIDUsMTE5LCA2OCwxMTksIDc4LDExOSwgODksCisgICAgMTE5LCA5NiwxMTksMTIxLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDE1MCwyMjcsMjQ5LAorICAgIDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDY5LDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCAyMiwKKyAgICAyMzEsMTE3LCAgMiwxMTksMTAzLDExOSwxMTIsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNTAsCisgICAgMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgMjIsMTA0LCAgNCwxMTksMTMxLDExOSwxNDAsMTE5LAorICAgIDE1NCwxMTksMTcwLDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDQ2LDIzMCwyMzMsMjM4LDIyNSwKKyAgICAyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwxNjYsMjMzLDIzOCwyMzMsMjQ0LDIzMywyMjUsCisgICAgMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTY3LDIzNywyMjksMjI4LDIzMywyMjUsMjM2LAorICAgIDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTY4LDIyOSwyMzMsMjI3LDIzOSwyNDAsMjQ0LDIzMywKKyAgICAgOTksMTI4LCAgMywyMzEsMjMyLCA5NywgIDIsMTE5LDIwMywxMTksMjEwLDIyOCwyMjksMjQ2LCA5NywxMjgsCisgICAgICA5LCA4OSwyMzEsMjQ1LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDg5LDIzMywyMjksMjQ1LAorICAgIDIzNSwxMDQsICA0LDExOSwyMzUsMTIwLCAxNCwxMjAsIDI5LDEyMCwgMzgsIDk3LCAgMiwxMTksMjQxLDEyMCwKKyAgICAgIDAsMjI3LDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwxMjAsCisgICAgMjQwLDIyNSwyNDIsMjI5LDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLCAyNCwyMjcsMjMzLAorICAgIDI0MiwyMjcsMjM2LDIyOSwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLDEwNiwyMzUsMjM5LDI0MiwKKyAgICAyMjksMjI1LDExMCwxMjgsIDQ5LCA3NSwyNDAsMjI1LDI0MiwyMjksMjM4LDIzNSwyMzksMjQyLDIyOSwyMjUsCisgICAgMTEwLDEyOCwgNTAsIDEwLDExMSwgIDQsMTIwLCA2MiwxMjAsMTExLDEyMCwxMjEsMTIwLDEyNiwyMzUsMTA0LAorICAgICAgNCwxMjAsIDczLDEyMCwgODIsMTIwLCA5MSwxMjAsMTAxLDIyNSwyMzMsMjQ0LDIzMiwyMjUsMTA1LDEyOCwKKyAgICAgMTQsICAyLDIzOSwyMzgsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsICA1LDI0NSwyMjUsMjQ0LDI0NCwyMzIsCisgICAgMjI1LDEwNSwxMjgsIDE0LCAgMywyNDcsMjI1LDIzMywyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgIDQsMjM3LAorICAgIDI0NSwyNDQsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDkxLDIzOSwxMDcsMTI4LCAgMSwxNTMsMjQyLDIyNSwKKyAgICAyMzUsMjMyLDIyNSwyMzgsMjMxLDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAgNiwyNTAsMjQzLDI0MSwyNDUsCisgICAgMjI1LDI0MiwxMDEsMTI4LCA1MSwxNDUsMTA1LCAgNCwxMjAsMTYwLDEyMCwxNzEsMTIwLDE5NiwxMjAsMjQ1LAorICAgIDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwgNzcsMjM1LDIyNSwyNDQsMjI1LDIzNSwKKyAgICAyMjUsMjM4LCA5NywxMjksIDQ4LDE3MywxMjAsMTg0LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsCisgICAgMTA0LDEyOCwyNTUsMTE5LDI0MiwxMTEsICAzLDEyMCwyMDUsMTIwLDIyMCwxMjAsMjM2LDIzMSwyNDUsMjQyLAorICAgIDIyNSwyMzcsMjQ1LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsIDIxLDIzNywyMjksMjI5LDI0NCwKKyAgICAyMzksMjQyLDI0NSwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLCAyMiwyNDMsMjQxLDI0NSwyMjUsCisgICAgMjQyLDEwMSwxMjgsIDUxLCAyMCwyNDksMjI5LDIzOSwxMDcsICA1LDEyMSwgIDQsMTIxLCAzOSwxMjEsIDU0LAorICAgIDEyMSwgNjMsMTIxLCA3NywgOTcsICAyLDEyMSwgMTAsMTIxLCAyNSwyMjcsMjMzLDI0MiwyMjcsMjM2LDIyOSwKKyAgICAyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLDExMCwyNDAsMjI1LDI0MiwyMjksMjM4LDIzNSwyMzksCisgICAgMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsIDE0LDIyNywyMzMsMjQyLDIyNywyMzYsMjI5LDIzNSwyMzksMjQyLAorICAgIDIyOSwyMjUsMTEwLDEyOCwgNTAsIDk2LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksIDQ5LDI0MCwKKyAgICAyMjUsMjQyLDIyOSwyMzgsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwgIDAsMjQzLDIzMywyMzksCisgICAgMjQzLDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksIDUxLDIzNCwyMjksMjI3LDI0OSwyNDIsMjMzLAorICAgIDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA5MiwxMDgsICAyLDEyMSwxMDksMTIxLDEyMCwyMzMsMjM4LDIyOSwKKyAgICAyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsIDUzLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsCisgICAgMTUyLDEwOSwgIDMsMTIxLDEzNywxMjEsMTUxLDEyMSwxNjIsMjI3LDI0NSwyMjYsMjI5LDIyOCwyNDMsMjQxLAorICAgIDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDE2NiwyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwKKyAgICAyNTUsIDc1LDI0MywyNDEsMjQ1LDIyNSwyNDIsMjI5LDIyOCwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsCisgICAgIDUxLDE2MiwxMTEsICA1LDEyMSwxOTAsMTIxLDIxNiwxMjEsMjU0LDEyMiwgMTAsMTIyLCAyNCwxMDQsICAyLAorICAgIDEyMSwxOTYsMTIxLDIwNiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwgODMsMjM3LDI0MywKKyAgICAyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTkyLDIzNSwgOTcsICAyLDEyMSwyMjMsMTIxLDIzMSwyMzMsCisgICAgMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsICAxLDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsMTc5LAorICAgIDEyMSwyNDIsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwxMjIsMjM5LDI0MCwKKyAgICAyMzksMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwgMzAsMjQwLDI0MCwyMjUsMjI3LDI0OSwyNDIsCisgICAgMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDEyOSwxMTQsICAyLDEyMiwgMzAsMTIyLCA1MCwyMjksMjI1LAorICAgIDIzOCwyNDMsMjQ0LDIyNSwyMzgsMjI4LDIyNSwyNDIsMjI4LDI0MywyNDksMjM3LDIyNiwyMzksMTA4LDEyOCwKKyAgICAgNTAsMTI3LDIzOSwyMzgsMjMzLDI0MywyMjcsMjM3LCA5OCwxMjgsICAzLCA2NywyNDAsIDk3LCAgMiwxMjIsCisgICAgIDY3LDEyMiwgNzMsMjQyLDIyOSwxMTAsMTI4LCAzNiwxNjYsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LAorICAgICA1MSwxNzAsMjQzLDIzMywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTExLDExNiwKKyAgICAgIDIsMTIyLDEwMSwxMjIsMTEwLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMjA3LDI0NSwyNDIsCisgICAgMjM4LDIyOSwxMDAsMTI4LCAgMiwxNTgsMTE3LCAgMiwxMjIsMTI0LDEyMiwxMzUsMjMyLDIzMywyNDIsMjI1LAorICAgIDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LCA3OSwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwKKyAgICAgNDgsMTc1LDEyMiwxNDgsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwxMjAsCisgICAgMjQ2LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTg0LDI0NywyNDMsMjQxLDI0NSwyMjUsMjQyLAorICAgIDEwMSwxMjgsIDUxLDE5MCwxMDgsMTQ2LCAgMCwxMDgsMTIyLDIyMCwxMjQsMjQ3LDEyNSwgMjAsMTI1LCA4NiwKKyAgICAxMjUsMTI0LDEyNiwgMjAsMTI2LCAyOSwxMjYsIDQ1LDEyNiwgNjksMTI2LCA4NywxMjYsMjA1LDEyNiwyNDYsCisgICAgMTI3LDEyNSwxMjcsMTMzLDEyNywxNjYsMTI3LDE3NSwxMjcsMTgzLDEyNywyNDUsIDk3LCAgNywxMjIsMjM2LAorICAgIDEyMiwyNDYsMTIyLDI1MywxMjMsICA0LDEyMywgMjksMTIzLCA0NSwxMjQsMjM1LDIyNiwyMjksMjM4LDIzMSwKKyAgICAyMjUsMjM2LDEwNSwxMjgsICA5LDE3OCwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAgMSwgNTgsMjI4LDIyOSwyNDYsCisgICAgIDk3LDEyOCwgIDksIDUwLDIzMSwxMTcsICAyLDEyMywgMTEsMTIzLCAyMCwyMzQsMjI1LDI0MiwyMjUsMjQ0LAorICAgIDEwNSwxMjgsIDEwLDE3OCwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCA1MCwyMzUsMjM1LDIzMiwKKyAgICAyMjUsMjM4LDIzMSwyNDksMjI1LDIzOSwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNjksMTA5LCAxMCwxMjMsCisgICAgIDY3LDEyNCwgIDYsMTI0LCAyMywxMjQsIDYxLDEyNCwgNzUsMTI0LCA5NCwxMjQsMTEwLDEyNCwxMzAsMTI0LAorICAgIDE1MCwxMjQsMTczLCA5NywgIDIsMTIzLCA3MywxMjMsMjU0LDIzNiwyMjksMTAyLCAgNCwxMjMsIDg1LDEyMywKKyAgICAgOTksMTIzLDE5MSwxMjMsMjA4LDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksCisgICAgMTI4LDI1NCwyNTIsMjMyLDIyNSwyMzcsMjUwLCA5NywgIDIsMTIzLDEwOSwxMjMsMTUwLDIyNSwyMjYsMjM5LAorICAgIDI0NiwxMDEsICAyLDEyMywxMTksMTIzLDEzMywyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwKKyAgICAyMzMsIDk5LDEyOCwyNTQsMjQ4LDIzMywyNDMsMjM5LDIzNiwyMjUsMjQ0LDIyOSwyMjgsMjI1LDI0MiwyMjUsCisgICAgMjI2LDIzMywgOTksMTI4LDI1NCwyNDcsMjI2LDIyOSwyMzYsMjM5LDExOSwgIDIsMTIzLDE2MCwxMjMsMTc0LAorICAgIDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwyNTAsMjMzLDI0MywKKyAgICAyMzksMjM2LDIyNSwyNDQsMjI5LDIyOCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDI0OSwyMzMsCisgICAgMjQzLDIzOSwyMzYsMjI1LDI0NCwyMjksMjI4LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMjUxLAorICAgIDIzNywyMjUsMjI4LDIyOCwyMjUsMjI1LDIyNiwyMzksMjQ2LDEwMSwgIDIsMTIzLDIyMywxMjMsMjM3LDIzMCwKKyAgICAyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwyNDYsMjMzLDI0MywyMzksCisgICAgMjM2LDIyNSwyNDQsMjI5LDIyOCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDI0NSwyNDIsMjI1LAorICAgIDIyNiwyMzMsIDk5LDEyOCwgIDYsIDY4LDIyNiwyMjgsIDk3LDEyOSwgIDMsMTg3LDEyNCwgMTQsMjQzLDI0NCwKKyAgICAyNDIsMjM5LDIzNSwxMDEsMTI4LCAgMSwxNTUsMjI5LDEwMCwxMzAsICA1LDIyMCwxMjQsIDMyLDEyNCwgNTIsCisgICAgMjI4LDIyNSwyMzEsMjI5LDI0MywxMDQsMTI5LDI1MSwgNjAsMTI0LCA0MywyMzIsMjI5LDIyNiwyNDIsMjI5LAorICAgIDExOSwxMjgsMjUxLCA2MCwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIyMCwyMzAsMjMzLDIzOCwKKyAgICAyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMjIyLDIzMiwyMjUsMjMyLDIzMywyMzgsCisgICAgMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUyLDIwMiwyMzMsMjM4LAorICAgIDIzMywyNDQsMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwyMjMsMjM0LDIyOSwKKyAgICAyMjksMjM3LDIzMywyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsCisgICAgMjUyLDIwMSwyMzUsMjMyLDIyNSwyMzIsMjMzLDIzOCwyMzMsMjQ0LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LAorICAgIDIyNiwyMzMsIDk5LDEyOCwyNTIsMjAzLDIzNiwyMjUsMjM3LDIzMiwyMjksMjMyLDIzMywyNDMsMjM5LDIzNiwKKyAgICAyMjUsMjQ0LDIyOSwyMjgsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MywyNDIsMjM3LDEwMSwgIDIsCisgICAgMTI0LDE4MCwxMjQsMTkzLDIyOCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LAorICAgIDIyNCwyMjksMTA5LCAgMiwxMjQsMjAwLDEyNCwyMTksMjMyLDIyNSwyMzIsMjMzLDIzOCwyMzMsMjQ0LDIzMywKKyAgICAyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTMsMTM2LDIzMywyMzgsMjMzLDI0NCwyMzMsCisgICAgMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUyLDIwNCwyNDIsMjMxLDIyOSwyMjcsMjMzLAorICAgIDI0MiwyMjcsMjM2LDEwMSwxMjgsIDM3LDIzOSwgOTgsICAzLDEyNCwyNTUsMTI1LCAgNCwxMjUsIDEwLDIyNSwKKyAgICAxMTQsMTI4LCAgMSwxNTQsMjI5LDIzNiwxMTYsMTI4LCAgMiwxMDgsMjM5LDI0MCwyMzksMjM3LDIzOSwyMzAsCisgICAgMTExLDEyOCwgNDksIDEyLCA5OSwgIDQsMTI1LCAzMCwxMjUsIDM3LDEyNSwgNDYsMTI1LCA3MywyMjUsMjQyLAorICAgIDIzOSwxMTAsMTI4LCAgMSwgNjIsMjI5LDIyOCwyMzMsMjM2LDIzNiwgOTcsMTI4LCAgMSwgNjAsMjMzLDI0MiwKKyAgICAgOTksICAyLDEyNSwgNTQsMTI1LCA1OSwyMzYsMTAxLDEyOCwgMzYsMjE5LDI0NSwyMzcsMjMwLDIzNiwyMjksCisgICAgMjQ4LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgNjEsMjM5LDIzNywyMzcsMjI1LDIyNSwyMjcsMjI3LAorICAgIDIyOSwyMzgsMTE2LDEyOCwgIDEsIDYwLDIyOCwyMzksMTE2LDEzMCwgIDEsIDY0LDEyNSwgOTYsMTI1LDEwNSwKKyAgICAyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsICAxLCA2NCwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOSwgMzAsCisgICAgIDU1LDEyNSwxMTUsMjM3LDIyNSwyMjcsMjQyLDIzOSwxMTAsMTI4LCAzMCwgNTcsMTAxLCAgMywxMjUsMTMyLAorICAgIDEyNSwxNzAsMTI2LCAxNSwyMzAsMTE2LCAgMiwxMjUsMTM5LDEyNSwxNTUsMjI1LDIzOCwyMzEsMjM2LDIyOSwKKyAgICAyMjUsMjI2LDIzOSwyNDYsMjI5LDIyNywyMzcsIDk4LDEyOCwgIDMsIDI2LDI0NCwyMjUsMjI3LDIzNSwyMjYsCisgICAgMjI5LDIzNiwyMzksMjQ3LDIyNywyMzcsIDk4LDEyOCwgIDMsIDI0LDI0MywxMTUsMTMyLCAgMCwgNjAsMTI1LAorICAgIDE4MywxMjUsMjA1LDEyNSwyMTcsMTI2LCAgNywyMjksMjQxLDI0NSwyMjUsMTA4LDEyOSwgMzQsMTAwLDEyNSwKKyAgICAxOTMsMjM5LDI0MiwyMzEsMjQyLDIyOSwyMjUsMjQ0LDIyOSwxMTQsMTI4LCAzNCwyMTgsMjM3LDIzOSwyMzgsCisgICAgMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMjgsMTExLCAgMiwxMjUsMjIzLDEyNSwyNTIsMTE0LAorICAgICAgMiwxMjUsMjI5LDEyNSwyNDIsMjI5LDI0MSwyNDUsMjMzLDI0NiwyMjUsMjM2LDIyOSwyMzgsMTE2LDEyOCwKKyAgICAgMzQsMTE0LDIzMSwyNDIsMjI5LDIyNSwyNDQsMjI5LDExNCwxMjgsIDM0LDExOCwyNDYsMjI5LDI0MiwyMjksCisgICAgMjQxLDI0NSwyMjUsMTA4LDEyOCwgMzQsMTAyLDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI1NCwxMDAsMjUwLAorICAgIDEwNCwxMjgsICAyLDExMCwyMzAsMjI2LDIzNiwyMzksMjI3LDEwNywxMjgsIDM3LDE0MCwyMzIsMjM5LDIzOSwKKyAgICAyMzUsMjQyLDIyOSwyNDQsMjQyLDIzOSwyMzAsMjM2LDIyOSwxMjAsMTI4LCAgMiwxMDksMTA1LCAgMiwxMjYsCisgICAgIDUxLDEyNiwgNTYsMjQyLCA5NywxMjgsIDMyLDE2NCwyNDcsMjM4LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLAorICAgIDIyNSwxMTAsMTI4LCAgNSwxMDgsMTA2LDEyOSwgIDEsMjAxLDEyNiwgNzUsMjI5LDIyNywyNDksMjQyLDIzMywKKyAgICAyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgODksMTA4LDEzMiwyNDYsMTkyLDEyNiwgOTksMTI2LDEyMywxMjYsCisgICAgMTM0LDEyNiwxNDMsIDk3LCAgMiwxMjYsMTA1LDEyNiwxMTIsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDUxLAorICAgIDIzMSwyNDUsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNzksMjMzLDIzOCwyMjksMjI2LDIyOSwKKyAgICAyMzYsMjM5LDExOSwxMjgsIDMwLCA1OSwyMzYsMjI1LDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCA1MiwyNDYsCisgICAgMjM5LDIyNywyMjUsMjM2LDIzMywgOTksICAzLDEyNiwxNTcsMTI2LDE2NywxMjYsMTc0LDIyNiwyMjksMjM4LAorICAgIDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDIyNSwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgOTcsMjQ2LDIzOSwKKyAgICAyNDcsMjI5LDIzNiwyNDMsMjMzLDIzMSwxMTAsICAyLDEyNiwxODgsMTI2LDE5OCwyMjYsMjI5LDIzOCwyMzEsCisgICAgMjI1LDIzNiwxMDUsMTI4LCAgOSwyMjcsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDk5LDEwOSwgIDMsMTI2LAorICAgIDIxMywxMjYsMjI2LDEyNiwyMzcsMjMzLDIyOCwyMjgsMjM2LDIyOSwyNDQsMjMzLDIzNiwyMjgsMTAxLDEyOCwKKyAgICAgIDIsMTA3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgNzYsMjQzLDI0MSwyNDUsCisgICAgMjI1LDI0MiwxMDEsMTI4LCA1MSwyMDgsMTExLCAgNiwxMjcsICA0LDEyNywgMTYsMTI3LCA1OCwxMjcsIDY5LAorICAgIDEyNywgNzUsMTI3LDExNywyMjcsMjMyLDI0NSwyMzYsMjI1LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCA0NCwKKyAgICAyMzEsMjMzLDIyNywyMjUsMTA4LCAgMywxMjcsIDI4LDEyNywgMzQsMTI3LCA1MywyMjUsMjM4LDEwMCwxMjgsCisgICAgIDM0LCAzOSwyMzgsMjM5LDExNiwxMjksICAwLDE3MiwxMjcsIDQyLDI0MiwyMjksMjQ2LDIyOSwyNDIsMjQzLAorICAgIDIyOSwxMDAsMTI4LCAzNSwgMTYsMjM5LDExNCwxMjgsIDM0LCA0MCwyMzYsMjMzLDIzOCwyMzEsMjQ0LDIzMiwKKyAgICAyMjUsMTA1LDEyOCwgMTQsIDM3LDIzOCwyMzEsMTE1LDEyOCwgIDEsMTI3LDI0NywyMzYsMjMzLDIzOCwxMDEsCisgICAgICAyLDEyNywgODUsMTI3LDEwOCwgOTksICAyLDEyNywgOTEsMTI3LDEwMywyMjksMjM4LDI0NCwyMjksMjQyLAorICAgIDIzNiwyMzMsMjM4LDEwMSwxMjgsMjU0LCA3OCwyMzcsIDk4LDEyOCwgIDMsIDUwLDIyOCwyMjUsMjQzLDIzMiwKKyAgICAyMjksMTAwLDEyOCwyNTQsIDc3LDI1MCwyMjksMjM4LDIzMSwxMDEsMTI4LCAzNywyMDIsMjQwLDIyNSwyNDIsCisgICAgMjI5LDExMCwxMjgsIDM2LDE2NywxMTUsICAzLDEyNywxNDEsMTI3LDE0OCwxMjcsMTU2LDIzNiwyMjUsMjQzLAorICAgIDEwNCwxMjgsICAxLCA2NiwyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgMzMsIDE5LDI0NSwyNDAsMjI5LDI0MiwKKyAgICAyMzMsMjM5LDExNCwxMjgsMjQ2LDIzOCwyNDQsMjQzLDIzMiwyMjUsMjI4LDEwMSwxMjgsIDM3LDE0NSwyNDUsCisgICAgMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDM4LDI0NiwyMzksMjI3LDIyNSwyMzYsMjMzLCA5OSwgIDMsMTI3LAorICAgIDE5NywxMjcsMjA3LDEyNywyMTQsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTQwLDIyOCwKKyAgICAyMjksMjQ2LCA5NywxMjgsICA5LCAxMiwyNDYsMjM5LDI0NywyMjksMjM2LDI0MywyMzMsMjMxLDExMCwgIDIsCisgICAgMTI3LDIyOCwxMjcsMjM4LDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDIyNiwyMjgsMjI5LAorICAgIDI0NiwgOTcsMTI4LCAgOSwgOTgsMjQ4LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMjExLDEwOSwKKyAgICAxNDQsICAwLDEwOSwxMjgsIDM1LDEzMCwxNDQsMTMwLDE2OSwxMzAsMTk2LDEzMCwyMjEsMTMyLCAxOCwxMzIsCisgICAgIDQwLDEzMywgOTUsMTMzLDEyNSwxMzMsMTc0LDEzNCwgMjUsMTM0LCA0NywxMzQsIDcyLDEzNCwgODEsMTM1LAorICAgIDEwOCwxMzUsMTM2LCA5NywgMTIsMTI4LCA2MSwxMjgsIDcxLDEyOCwxMzUsMTI4LDE0MiwxMjgsMTY3LDEyOCwKKyAgICAyMTUsMTMwLCA1MSwxMzAsIDc2LDEzMCwgODEsMTMwLCA5NSwxMzAsMTA3LDEzMCwxMTIsMjI2LDIyOSwyMzgsCisgICAgMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTc0LCA5OSwgIDIsMTI4LCA3NywxMjgsMTI5LDI0MiwyMzksMTEwLAorICAgIDEzMiwgIDAsMTc1LDEyOCwgOTEsMTI4LDEwMiwxMjgsMTA4LDEyOCwxMTcsMjI2LDIyOSwyMzYsMjM5LDI0NywKKyAgICAyMjcsMjM3LCA5OCwxMjgsICAzLCA0OSwyMjcsMjM3LCA5OCwxMjgsICAzLCAgNCwyMzYsMjM5LDI0NywyMzcsCisgICAgMjM5LDEwMCwxMjgsICAyLDIwNSwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LAorICAgIDIyNywyNDUsMjQ0LDEwMSwxMjgsIDMwLCA2MywyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNDYsMjMxLDExNywKKyAgICAgIDIsMTI4LDE0OSwxMjgsMTU4LDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTc0LDI0MiwyMzcsCisgICAgMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDQ2LDEwNCwgIDIsMTI4LDE3MywxMjgsMjA1LDIyNSwyNDAsMjI1LAorICAgIDIzNSwxMDQsICAyLDEyOCwxODMsMTI4LDE5MiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE2NCwKKyAgICAyMzYsMjI5LDIzMCwyNDQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNjQsMjMzLDI0MiwyMjUsCisgICAgMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTI2LDEwNSwgIDUsMTI4LDIyNywxMjksIDQwLDEyOSwxMDMsMTI5LAorICAgIDEzMywxMzAsIDM5LDIyNywyMzIsMjI1LDI0NCwyNDQsMjI1LDI0NywgOTcsICAzLDEyOCwyNDIsMTI5LCAxNywKKyAgICAxMjksIDI0LDIzNiwyMzksMTE5LCAgMiwxMjgsMjUwLDEyOSwgIDUsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyMzIsCisgICAgMjI1LDEwNSwxMjgsMjQ4LDE0OSwyNDIsMjMzLDIzMSwyMzIsMjQ0LDI0NCwyMzIsMjI1LDEwNSwxMjgsMjQ4LAorICAgIDE0OCwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNzUsMjQ1LDI0MCwyNDAsMjI5LDI0MiwyMzYsMjI5LDIzMCwKKyAgICAyNDQsMjQ0LDIzMiwyMjUsMTA1LDEyOCwyNDgsMTQ3LDIyOSwxMDcsICAzLDEyOSwgNDksMTI5LCA4MCwxMjksCisgICAgIDg3LDIzNiwyMzksMTE5LCAgMiwxMjksIDU3LDEyOSwgNjgsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyMzIsMjI1LAorICAgIDEwNSwxMjgsMjQ4LDE0MCwyNDIsMjMzLDIzMSwyMzIsMjQ0LDI0NCwyMzIsMjI1LDEwNSwxMjgsMjQ4LDEzOSwKKyAgICAyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNzIsMjQ1LDI0MCwyNDAsMjI5LDI0MiwyMzYsMjI5LDIzMCwyNDQsCisgICAgMjQ0LDIzMiwyMjUsMTA1LDEyOCwyNDgsMTM4LDIzMiwyMjUsMjM4LDIyNSwyMzUsMjI1LDExNiwgIDIsMTI5LAorICAgIDExNSwxMjksMTI2LDIzNiwyMjksMjMwLDI0NCwyNDQsMjMyLDIyNSwxMDUsMTI4LDI0OCwxMzIsMjQ0LDIzMiwKKyAgICAyMjUsMTA1LDEyOCwgMTQsIDQ5LDExNiwgIDMsMTI5LDE0MSwxMjksMTY5LDEyOSwyMzIsMjI1LDIzMywyMzUsCisgICAgMjMyLDExNywgIDIsMTI5LDE1MSwxMjksMTYyLDIzNiwyMjksMjMwLDI0NCwyNDQsMjMyLDIyNSwxMDUsMTI4LAorICAgIDI0OCwxMzcsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDcxLDIzMiwxMTEsICAzLDEyOSwxNzgsMTI5LDIwOSwKKyAgICAxMjksMjE2LDIzNiwyMzksMTE5LCAgMiwxMjksMTg2LDEyOSwxOTcsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyMzIsCisgICAgMjI1LDEwNSwxMjgsMjQ4LDE0MywyNDIsMjMzLDIzMSwyMzIsMjQ0LDI0NCwyMzIsMjI1LDEwNSwxMjgsMjQ4LAorICAgIDE0MiwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNzMsMjQ1LDI0MCwyNDAsMjI5LDI0MiwyMzYsMjI5LDIzMCwKKyAgICAyNDQsMjQ0LDIzMiwyMjUsMTA1LDEyOCwyNDgsMTQxLDI0MiwxMDUsICAzLDEyOSwyNDEsMTMwLCAxNiwxMzAsCisgICAgIDIzLDIzNiwyMzksMTE5LCAgMiwxMjksMjQ5LDEzMCwgIDQsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyMzIsMjI1LAorICAgIDEwNSwxMjgsMjQ4LDE0NiwyNDIsMjMzLDIzMSwyMzIsMjQ0LDI0NCwyMzIsMjI1LDEwNSwxMjgsMjQ4LDE0NSwKKyAgICAyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNzQsMjQ1LDI0MCwyNDAsMjI5LDI0MiwyMzYsMjI5LDIzMCwyNDQsCisgICAgMjQ0LDIzMiwyMjUsMTA1LDEyOCwyNDgsMTQ0LDI0OSwyMjUsMjM3LDIzOSwyMzUsMjQ0LDIzMiwyMjUsMTA1LAorICAgIDEyOCwgMTQsIDcwLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwyMjIsMTMwLCA2NCwKKyAgICAyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDE0MywyMzYsMTAxLDEyOCwgMzgsCisgICAgIDY2LDIzOCwyNDMsMjQ5LDIzOSwyMzgsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwgNzEsMjQxLAorICAgIDIyNSwyMzAsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxOTAsMjQyLDExNSwxMjgsIDM4LCA2NiwKKyAgICAxMTUsICAyLDEzMCwxMTgsMTMwLDEzNiwyMzksMjQyLDIyNSwyMjcsMjMzLDI0MiwyMjcsMjM2LDIyOSwyMzIsCisgICAgMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE3NSwyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTMxLAorICAgICA5OCwgIDIsMTMwLDE1MCwxMzAsMTYwLDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAgNywKKyAgICAyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDIxMiwgOTksICAyLDEzMCwxNzUsMTMwLDE4MywyMzMsCisgICAgMjQyLDIyNywyMzYsMTAxLDEyOCwgMzYsMjIwLDI0NSwyMjYsMjI5LDIyOCwyNDMsMjQxLDI0NSwyMjUsMjQyLAorICAgIDEwMSwxMjgsIDUxLDE2NSwyMjgsMjM5LDExNiwgIDIsMTMwLDIwNCwxMzAsMjEzLDIyNSwyMjcsMjI3LDIyOSwKKyAgICAyMzgsMTE2LDEyOCwgMzAsIDY1LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgNjcsMTAxLCAgNywxMzAsCisgICAgMjM3LDEzMSwxMDgsMTMxLDExOSwxMzEsMTM0LDEzMSwxNTksMTMxLDE5NiwxMzEsMjA4LDEwMSwgIDIsMTMwLAorICAgIDI0MywxMzEsIDk1LDEwOSwgIDQsMTMwLDI1MywxMzEsICA2LDEzMSwgMjAsMTMxLCAzNiwyMjUsMjQyLDIyNSwKKyAgICAyMjYsMjMzLCA5OSwxMjgsICA2LCA2OSwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsCisgICAgIDk5LDEyOCwyNTQsMjI2LDIzMywyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLAorICAgICA5OSwxMjgsMjU0LDIyNywyMzcsMTAxLCAgMiwxMzEsIDQzLDEzMSwgNTYsMjI4LDIzMywyMjUsMjM2LDIyNSwKKyAgICAyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMjI4LDIyOSwyMzcsMTA1LCAgMiwxMzEsIDY0LDEzMSwgNzksCisgICAgMjM4LDIzMywyNDQsMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MiwyMDksMjQzLAorICAgIDIzOSwyMzYsMjI1LDI0NCwyMjksMjI4LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTIsIDcyLDI0NCwKKyAgICAyMzksMjQyLDI0NSwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLCA3NywyMzIsMjMzLDI0MiwyMjUsCisgICAgMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTI5LDIzMywyNTAsMjMzLDIyOSwyNDIsMjI1LDI0MywyNDEsMjQ1LAorICAgIDIyNSwyNDIsMTAxLDEyOCwgNTEsMTI2LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwKKyAgICAyMjUsMTMxLDE0NywyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDE0NiwxMDksCisgICAgMTMwLCAgNSwyMjIsMTMxLDE2NywxMzEsMTg3LDIyOCwyMjUsMjMxLDIyOSwyNDMsMTA0LDEyOSwyNTEsIDYyLAorICAgIDEzMSwxNzgsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LDI1MSwgNjIsMjMyLDIyOSwyMjYsMjQyLDIyOSwKKyAgICAxMTksMTI4LCAgNSwyMjIsMjM4LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMTYsCisgICAgMjQyLDIzNSwyMzIsIDk3LCAgMywxMzEsMjE5LDEzMSwyMjgsMTMyLCAgNSwyMzIsMjI5LDIyNiwyNDIsMjI5LAorICAgIDExOSwxMjgsICA1LDE2NSwyMzUsMjI5LDIzMCwyNDUsMjM2LCA5NywgIDIsMTMxLDIzOSwxMzEsMjQ4LDIzMiwKKyAgICAyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTY2LDIzNiwyMjksMjMwLDI0NCwyMzIsMjI5LDIyNiwyNDIsCisgICAgMjI5LDExOSwxMjgsICA1LDE2NiwyMzYsMjI5LDIzMCwyNDQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LAorICAgICAgNSwxNjUsMTA0LCAgMiwxMzIsIDI0LDEzMiwgMzAsMjM5LDIzOSwxMDcsMTI4LCAgMiwxMTMsMjUwLDI0MywKKyAgICAyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTQ2LDEwNSwgIDYsMTMyLCA1NCwxMzIsIDkxLDEzMiwyMjgsCisgICAgMTMyLDIzOSwxMzMsICA4LDEzMywgNjUsMjI4LDEwMCwgIDIsMTMyLCA2MSwxMzIsIDg2LDIzNiwyMjksMjI4LAorICAgIDIzOSwyNDQsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LDIyNSwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywKKyAgICAyMjgsMjQ0LDEwNCwxMjgsMjU1LDEwMSwyMzksMTE2LDEyOCwgIDAsMTgzLDIyOSwyNDUsMTA5LCAgNSwxMzIsCisgICAgMTA1LDEzMiwxNDAsMTMyLDE1NSwxMzIsMTY0LDEzMiwyMTUsIDk3LCAgMiwxMzIsMTExLDEzMiwxMjYsMjI3LAorICAgIDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwxMTQsMjQwLDIyNSwKKyAgICAyNDIsMjI5LDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLCAxOCwyMjcsMjMzLDI0MiwyMjcsCisgICAgMjM2LDIyOSwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLDEwMCwyMzUsMjM5LDI0MiwyMjksMjI1LAorICAgIDExMCwxMjgsIDQ5LCA2NSwxMTIsICAyLDEzMiwxNzAsMTMyLDIwMiwgOTcsICAyLDEzMiwxNzYsMTMyLDE5MCwKKyAgICAyMzgsMjQzLDIzMywyMzksMjQzLDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTEyLDI0MiwyMjksCisgICAgMjM4LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsICA0LDIzMywyMjksMjQ1LDI0MCwyMzUsMjM5LAorICAgIDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LDExMCwyNDMsMjMzLDIzOSwyNDMsMjM1LDIzOSwyNDIsMjI5LDIyNSwKKyAgICAxMTAsMTI4LCA0OSwxMTEsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDEyNywyMzUsCisgICAgMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsMjIzLDEzMiwyNTIsMjMyLDIyNSwyMzYsMjMwLAorICAgIDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwxNDQsMjM4LDExNywgIDIsMTMzLCAxNSwxMzMsIDYwLDExNSwKKyAgICAxMzIsIDM0LCAxOCwxMzMsIDI3LDEzMywgMzgsMTMzLCA0NywxMzMsIDUzLDIyNiwyMjksMjM2LDIzOSwyNDcsCisgICAgMjI3LDIzNywgOTgsMTI4LCAgMywgMzIsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI4LCAzNCwxNTAsMjM3LAorICAgIDIzOSwxMDAsMTI4LCAgMiwyMTUsMjQwLDIzNiwyNDUsMTE1LDEyOCwgMzQsIDE5LDI0NCwxMDEsMTI4LCAzMiwKKyAgICAgNTAsMjQyLDEwNSwgIDIsMTMzLCA3MiwxMzMsIDg2LDIyNiwyMjUsMjI1LDI0MiwyNDUsMjQzLDI0MSwyNDUsCisgICAgMjI1LDI0MiwxMDEsMTI4LCA1MSwgNzQsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwgNzMsMTA4LAorICAgICAgMiwxMzMsMTAxLDEzMywxMTYsMjM5LDIzOCwyMzEsMjM2LDIyOSwyMzEsMjQ0LDI0NSwyNDIsMjM4LDIyOSwKKyAgICAxMDAsMTI4LCAgMiwxMTIsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwxNTAsMTA5LCAgMywxMzMsCisgICAgMTMzLDEzMywxNDcsMTMzLDE1OCwyMjcsMjQ1LDIyNiwyMjksMjI4LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLAorICAgIDEyOCwgNTEsMTYzLDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgNzcsMjQzLDI0MSwKKyAgICAyNDUsMjI1LDI0MiwyMjksMjI4LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTU5LDExMSwgIDUsCisgICAgMTMzLDE4NiwxMzMsMjEyLDEzMywyMzcsMTMzLDI0NywxMzQsICAwLDEwNCwgIDIsMTMzLDE5MiwxMzMsMjAyLAorICAgIDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDEzMCwyMzcsMjQzLDI0MSwyNDUsMjI1LDI0MiwKKyAgICAxMDEsMTI4LCA1MSwxOTMsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIyNiwxMzMsCisgICAgMjI1LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTQ3LDIzNiwyNDMsMjQxLAorICAgIDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDIxNCwyMzcsMjI1LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAzMywKKyAgICAyNDYsMjI5LDI0MiwyNDMsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI5LCA1MSwxNjcsMTM0LCAxNSwyMjgsCisgICAgMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwxNjgsMjQwLCA5NywgIDIsMTM0LCAzMiwxMzQsIDM4LAorICAgIDI0MiwyMjksMTEwLDEyOCwgMzYsMTY4LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTcxLDExNSwKKyAgICAgIDIsMTM0LCA1MywxMzQsIDYyLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTc5LDI0NSwyNDAsCisgICAgMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsMjQ2LDIzOSwyNDQsMjQ1LDI0MiwyMzgsMjI5LDEwMCwxMjgsICAyLAorICAgIDExMSwxMTcsMTQxLCAgMCwxODEsMTM0LDExMSwxMzQsMTE1LDEzNCwxMjUsMTM0LDE0OSwxMzQsMTU5LDEzNCwKKyAgICAxODEsMTM0LDE5MiwxMzQsMjE3LDEzNCwyNDAsMTM0LDI1MCwxMzUsIDI0LDEzNSwgODgsMTM1LCA5OCwgNDksCisgICAgMTI4LCAgMCwxODEsMjI1LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTMwLDIyNywxMDQsICAyLAorICAgIDEzNCwxMzIsMTM0LDE0MiwyMzEsMjQyLDIyOSwyMjUsMjQ0LDIyOSwxMTQsMTI4LCAzNCwxMDcsMjM2LDIyOSwKKyAgICAyNDMsMTE1LDEyOCwgMzQsMTA2LDIzMCwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDE0MCwxMDMsCisgICAgICAyLDEzNCwxNjUsMTM0LDE3MiwyNDIsMjI5LDIyOSwxMDcsMTI4LCAgMywxODgsMjQzLDI0MSwyNDUsMjI1LAorICAgIDI0MiwxMDEsMTI4LCA1MSwxNDEsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDEyOCwKKyAgICAyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsMjI0LDEzNCwyMDUsMjMyLDIyNSwyMzYsCisgICAgMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwxNDUsMTA4LCAgMiwxMzQsMjIzLDEzNCwyMzIsMjQzLAorICAgIDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwxNDksMjQ0LDIzMywyNDAsMjM2LDEyMSwxMjgsICAwLDIxNSwKKyAgICAyMzcsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwxNTUsMjM4LDIyNSwxMDQsICAyLDEzNSwgIDIsCisgICAgMTM1LCAxMSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE2MywyMzYsMjI5LDIzMCwyNDQsMjMyLAorICAgIDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNjMsMTE1LCAgMiwxMzUsIDMwLDEzNSwgNzksMjMzLCA5OSwKKyAgICAgIDMsMTM1LCAzOSwxMzUsIDU2LDEzNSwgNjcsMjI1LDIzNiwyMzgsMjM5LDI0NCwxMDEsMTI5LCAzOCwxMDYsCisgICAgMTM1LCA1MCwyMjgsMjI2LDEwOCwxMjgsIDM4LDEwNywyMzAsMjM2LDIyNSwyNDQsMjQzLDIzMywyMzEsMTEwLAorICAgIDEyOCwgMzgsMTA5LDI0MywyMzIsMjI1LDI0MiwyNDAsMjQzLDIzMywyMzEsMTEwLDEyOCwgMzgsMTExLDI0MywKKyAgICAyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTc4LDI0NiwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsCisgICAgIDUxLDE4MiwyNDcsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwxODgsMTE4LCAgMiwxMzUsMTE0LAorICAgIDEzNSwxMjcsMjM3LDIyOSwyMzEsMjI1LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTg1LDI0MywKKyAgICAyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTgzLDExOSwgIDIsMTM1LDE0MiwxMzUsMTU1LDIzNywyMjksCisgICAgMjMxLDIyNSwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDE5MSwyNDMsMjQxLDI0NSwyMjUsMjQyLAorICAgIDEwMSwxMjgsIDUxLDE4OSwxMTAsMTUwLCAgMCwxMTAsMTM1LDIxMiwxMzYsIDkwLDEzNiwxMTQsMTM2LDE4MCwKKyAgICAxMzYsMjA1LDEzNywgIDcsMTM3LCAxNywxMzcsIDg0LDEzNywxMjcsMTM5LDE2MSwxMzksMTc5LDEzOSwyMDQsCisgICAgMTM5LDIzNSwxNDAsICA1LDE0MCwgNzAsMTQyLCA1MiwxNDIsIDYwLDE0MiwgODUsMTQyLCA5MywxNDMsIDYxLAorICAgIDE0MywgNzEsMTQzLCA4MSwgOTcsICA4LDEzNSwyMzAsMTM1LDI1MCwxMzYsICAxLDEzNiwgIDgsMTM2LCAzMywKKyAgICAxMzYsIDQ0LDEzNiwgNjksMTM2LCA4MSwgOTgsICAyLDEzNSwyMzYsMTM1LDI0NSwyMjksMjM4LDIzMSwyMjUsCisgICAgMjM2LDEwNSwxMjgsICA5LDE2OCwyMzYsIDk3LDEyOCwgMzQsICA3LDIyNywyNDUsMjQ0LDEwMSwxMjgsICAxLAorICAgICA2OCwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNDAsMjMxLDExNywgIDIsMTM2LCAxNSwxMzYsIDI0LDIzNCwKKyAgICAyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTY4LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsCisgICAgIDQwLDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxMDYsMjM1LDIyNSwyNDQsMjI1LAorICAgIDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIwMiwxMzYsIDU3LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwKKyAgICAyNDQsMTA0LDEyOCwyNTUsMTMzLDI0MCwyMzksMjQzLDI0NCwyNDIsMjM5LDI0MCwyMzIsMTAxLDEyOCwgIDEsCisgICAgIDczLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTI5LCA5OCwgIDIsMTM2LCA5NiwxMzYsMTA2LAorICAgIDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAxMSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwKKyAgICAgIDAsMTYwLCA5OSwgIDQsMTM2LDEyNCwxMzYsMTMxLDEzNiwxNDAsMTM2LDE2NywyMjUsMjQyLDIzOSwxMTAsCisgICAgMTI4LCAgMSwgNzIsMjI5LDIyOCwyMzMsMjM2LDIzNiwgOTcsMTI4LCAgMSwgNzAsMjMzLDI0MiwgOTksICAyLAorICAgIDEzNiwxNDgsMTM2LDE1MywyMzYsMTAxLDEyOCwgMzYsMjIxLDI0NSwyMzcsMjMwLDIzNiwyMjksMjQ4LDIyNiwKKyAgICAyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwgNzUsMjM5LDIzNywyMzcsMjI1LDIyNSwyMjcsMjI3LDIyOSwyMzgsCisgICAgMTE2LDEyOCwgIDEsIDcwLDIyOCwyMzksMTE2LCAgMiwxMzYsMTg4LDEzNiwxOTcsMjI1LDIyNywyMjcsMjI5LAorICAgIDIzOCwxMTYsMTI4LCAzMCwgNjksMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLCA3MSwxMDEsICAzLDEzNiwKKyAgICAyMTMsMTM2LDIyNCwxMzYsMjQ5LDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxMDksCisgICAgMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIwNSwxMzYsMjM3LDIzMiwyMjUsMjM2LAorICAgIDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTM2LDI0NywyNDMsMjMyLDIyOSwyNDEsMjI5LDIzNiwKKyAgICAyNDMsMjMzLDIzMSwxMTAsMTI4LCAzMiwxNzAsMjMwLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsCisgICAgMTM5LDEwMywgIDIsMTM3LCAyMywxMzcsIDczLCA5NywgIDMsMTM3LCAzMSwxMzcsIDQxLDEzNywgNDgsMjI2LAorICAgIDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTUzLDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCAyNSwKKyAgICAyMzEsMTE3LCAgMiwxMzcsIDU1LDEzNywgNjQsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNTMsCisgICAgMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgMjUsMjM5LDIzOCwyMzEsMjQ1LDI0NCwyMzIsMjI1LAorICAgIDEwNSwxMjgsIDE0LCAgNywxMDQsICAyLDEzNywgOTAsMTM3LDEwMCwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwKKyAgICAgOTcsMTI4LCA0OCwxNDcsMjM5LDIzOSwxMDcsICAyLDEzNywxMDgsMTM3LDExNSwyMzYsMjI5LDIzMCwxMTYsCisgICAgMTI4LCAgMiwxMTQsMjQyLDIyOSwyNDQsMjQyLDIzOSwyMzAsMjM2LDIyOSwxMjAsMTI4LCAgMiwxMTUsMTA1LAorICAgICAgNCwxMzcsMTM3LDEzOCwgNTAsMTM4LCA2MSwxMzgsMTE5LDIyOSwyNDUsMTEwLCAgNywxMzcsMTU1LDEzNywKKyAgICAxOTAsMTM3LDIyMiwxMzcsMjM2LDEzNywyNDUsMTM4LCAyMiwxMzgsIDM1LCA5NywgIDIsMTM3LDE2MSwxMzcsCisgICAgMTc2LDIyNywyMzMsMjQyLDIyNywyMzYsMjI5LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsMTExLAorICAgIDI0MCwyMjUsMjQyLDIyOSwyMzgsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwgMTUsMjI3LDEwNSwKKyAgICAgIDIsMTM3LDE5NywxMzcsMjA5LDIyOSwyNDUsMjI3LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksCisgICAgIDUzLDI0MiwyMjcsMjM2LDIyOSwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLCA5NywyMzIsMjMzLAorICAgIDIyOSwyNDUsMjMyLDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksIDU0LDIzNSwyMzksMjQyLDIyOSwKKyAgICAyMjUsMTEwLDEyOCwgNDksIDUyLDI0MCwgOTcsICAyLDEzNywyNTIsMTM4LCAxMCwyMzgsMjQzLDIzMywyMzksCisgICAgMjQzLDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTA0LDI0MiwyMjksMjM4LDIzNSwyMzksMjQyLAorICAgIDIyOSwyMjUsMTEwLDEyOCwgNTAsICAxLDI0MywyMzMsMjM5LDI0MywyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwKKyAgICAxMjgsIDQ5LDEwMywyNDQsMjMzLDIzNSwyMjksMjQ1LDI0NCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsCisgICAgIDQ5LDEwMiwyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTA3LDEwNywgIDIsMTM4LAorICAgICA2NywxMzgsIDkxLDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIwMywxMzgsIDc5LDIzMiwKKyAgICAyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTM0LDIzMiwyMjUsMjMyLDIzMywxMTYsCisgICAgICAyLDEzOCwxMDEsMTM4LDExMiwyMzYsMjI5LDIzMCwyNDQsMjQ0LDIzMiwyMjUsMTA1LDEyOCwyNDgsMTUzLAorICAgIDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCA3NywyMzgsMTAxLDE0MSwgIDAsIDU3LDEzOCwxNTAsMTM4LDE1OSwKKyAgICAxMzgsMTY5LDEzOCwxOTksMTM4LDIwNiwxMzgsMjMxLDEzOSwgIDIsMTM5LCAzNiwxMzksIDQ4LDEzOSwgNTksCisgICAgMTM5LCA5MiwxMzksMTAwLDEzOSwxMTEsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwxMDUsMjI2LAorICAgIDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMjM5LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOSwKKyAgICAgMzYsMTA0LDEzOCwxODAsMjMzLDIzOCwyNDYsMjI5LDI0MiwyNDMsMjI5LDI0MywyMjUsMjM4LDI0MywyNDMsCisgICAgMjI5LDI0MiwyMzMsMTAyLDEyOCwgMzksMTQ2LDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LDExMSwyMzEsMTE3LAorICAgICAgMiwxMzgsMjEzLDEzOCwyMjIsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwyMzksMjQyLDIzNywKKyAgICAyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwxMTEsMjMyLCA5NywgIDIsMTM4LDIzOCwxMzgsMjQ5LDIyNywyMzUsCisgICAgMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwxMDUsMjM4LDIzMSwyNTAsMjMyLDIzOSwxMTcsMTI4LAorICAgICA0OCwgNDEsMTA1LCAgMiwxMzksICA4LDEzOSwgMjYsMjI4LDIyOSwyMzksMjMxLDI0MiwyMjUsMjQwLDIzMiwKKyAgICAyMzMsMjI3LDI0MCwyMjUsMjQyLDIyOSwxMTAsMTI4LCA1MCwgNDAsMjM4LDIzMCwyMjksMjQyLDIzMywyMzksCisgICAgMTE0LDEyOCwgMzIsMTM3LDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDI1LAorICAgIDIzOSwyMzYsMjI4LDI0MywyNDQsMjQ5LDIzNiwxMDEsMTI4LDI0NywgNTcsMTEyLCAgMiwxMzksIDY1LDEzOSwKKyAgICAgNzIsMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTI0LDIyOSwxMTQsICAyLDEzOSwgNzksMTM5LCA4NSwyMzMsCisgICAgMjM5LDEwMCwxMjgsIDM2LDE0NCwyNDMsMjMzLDIyNSwxMTAsMTI4LCAgNiwyNDksMjQyLDIzOSwyMzcsMjI1LAorICAgIDExMCwxMjgsIDMzLDEyMCwyNDMsMjQ1LDI0MCwyMjksMjQyLDIzMywyMzksMTE0LDEyOCwgMzIsMTIxLDExNiwKKyAgICAgIDIsMTM5LDExNywxMzksMTU1LDIyOSwyMjksMTEwLCAgMiwxMzksMTI1LDEzOSwxMzQsMjI3LDIzMywyNDIsCisgICAgMjI3LDIzNiwxMDEsMTI4LCAzNiwxMTQsMTEyLCAgMiwxMzksMTQwLDEzOSwxNDcsMjI1LDI0MiwyMjksMTEwLAorICAgIDEyOCwgMzYsMTM0LDIyOSwyNDIsMjMzLDIzOSwxMDAsMTI4LCAzNiwxNTQsMjMyLDIyNSwxMDUsMTI4LCAxNCwKKyAgICAgODksMTA2LDEyOSwgIDEsMjA0LDEzOSwxNjcsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksCisgICAgMTI4LCAgNCwgOTAsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDI0MywxMzksMTkyLAorICAgIDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTU3LDEwOCwgIDIsMTM5LDIxMCwKKyAgICAxMzksMjI0LDIyOSwyMzEsMjQyLDIzMywyMzEsMjMyLDI0NCwyMzYsMjM5LDIzOCwxMDMsMTI4LCAgMSwxNTgsCisgICAgMjMzLDIzOCwyMjksMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLCA3MywxMDksICAyLDEzOSwyNDEsMTM5LAorICAgIDI1MiwyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDc4LDI0MywyNDEsMjQ1LDIyNSwKKyAgICAyNDIsMTAxLDEyOCwgNTEsMTU0LDExMCwgIDIsMTQwLCAxMSwxNDAsIDYxLCA5NywgIDMsMTQwLCAxOSwxNDAsCisgICAgIDI5LDE0MCwgMzYsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTYzLDIyOCwyMjksMjQ2LAorICAgICA5NywxMjgsICA5LCAzNSwyMzEsMTE3LCAgMiwxNDAsIDQzLDE0MCwgNTIsMjM0LDIyNSwyNDIsMjI1LDI0NCwKKyAgICAxMDUsMTI4LCAxMCwxNjMsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgMzUsMjM4LDIyNSwyMjgsCisgICAgMjI5LDI0NiwgOTcsMTI4LCAgOSwgNDEsMTExLCAgNiwxNDAsIDg0LDE0MCwgOTUsMTQwLDEyMCwxNDAsMTYxLAorICAgIDE0MSwxMTMsMTQyLCA0MCwyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTEwLDIzNSwKKyAgICAyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwyMDYsMTQwLDEwOCwyMzIsMjI1LDIzNiwyMzAsCisgICAgMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDEzNywxMTAsICAzLDE0MCwxMjgsMTQwLDE0NCwxNDAsMTUzLAorICAgIDIyNiwyNDIsMjI5LDIyNSwyMzUsMjMzLDIzOCwyMzEsMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsICAwLDE2MCwKKyAgICAyMjksMjM4LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAxOSwyNDUsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsCisgICAgIDI1LDIzOSwxMTAsICA3LDE0MCwxNzgsMTQwLDE4NywxNDAsMjAxLDE0MCwyMzUsMTQwLDI1MSwxNDEsIDM2LAorICAgIDE0MSwgOTUsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwgNzAsMjMwLDIzMywyMzgsMjI1LDIzNiwKKyAgICAyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDIzMCwyMzEsMjMyLDI0NSwyMzgsMjM4LCA5NywgIDIsCisgICAgMTQwLDIxMiwxNDAsMjIxLDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsMTg2LDIzMCwyMzMsMjM4LAorICAgIDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MSwxNTksMjMzLDIzOCwyMzMsMjQ0LDIzMywKKyAgICAyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMjMxLDIzNCwyMjksMjI5LDIzNywxMDUsCisgICAgICAyLDE0MSwgIDUsMTQxLCAyMCwyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLAorICAgICA5OSwxMjgsMjUyLDIxMCwyNDMsMjM5LDIzNiwyMjUsMjQ0LDIyOSwyMjgsMjI1LDI0MiwyMjUsMjI2LDIzMywKKyAgICAgOTksMTI4LDI1MiwgNzUsMjM3LDEwMSwgIDIsMTQxLCA0MywxNDEsIDU2LDIyOCwyMzMsMjI1LDIzNiwyMjUsCisgICAgMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDIzMiwyMjksMjM3LDEwNSwgIDIsMTQxLCA2NCwxNDEsIDc5LAorICAgIDIzOCwyMzMsMjQ0LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTIsMjEzLDI0MywKKyAgICAyMzksMjM2LDIyNSwyNDQsMjI5LDIyOCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUyLCA3OCwyMzgsCisgICAgMjM5LDIzOSwyMzgsMjMwLDIzMywyMzgsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUyLAorICAgIDE0MSwxMTYsICA3LDE0MSwxMjksMTQxLDE0MCwxNDEsMTY5LDE0MSwyMDQsMTQxLDIxNiwxNDEsMjM2LDE0MiwKKyAgICAgIDYsMjI3LDIzOSwyMzgsMjQ0LDIyNSwyMzMsMjM4LDExNSwxMjgsIDM0LCAxMiwxMDEsICAyLDE0MSwxNDYsCisgICAgMTQxLDE2MiwyMzYsMjI5LDIzNywyMjksMjM4LDExNiwxMjksIDM0LCAgOSwxNDEsMTU3LDIzOSwxMDIsMTI4LAorICAgICAzNCwgIDksMjQxLDI0NSwyMjUsMTA4LDEyOCwgMzQsIDk2LDIzMSwyNDIsMjI5LDIyNSwyNDQsMjI5LDExNCwKKyAgICAxMjksIDM0LDExMSwxNDEsMTgxLDIzOCwyMzksMTE0LCAgMiwxNDEsMTg5LDE0MSwxOTcsMjI5LDI0MSwyNDUsCisgICAgMjI1LDEwOCwxMjgsIDM0LDExMywyMzYsMjI5LDI0MywxMTUsMTI4LCAzNCwxMjEsMjMzLDIyOCwyMjksMjM4LAorICAgIDI0NCwyMzMsMjI3LDIyNSwxMDgsMTI4LCAzNCwgOTgsMjM2LDIyOSwyNDMsMTE1LDEyOSwgMzQsMTEwLDE0MSwKKyAgICAyMjUsMjM4LDIzOSwyNDIsMjI5LDI0MSwyNDUsMjI1LDEwOCwxMjgsIDM0LDExMiwxMTIsICAyLDE0MSwyNDIsCisgICAgMTQxLDI1MiwyMjUsMjQyLDIyNSwyMzYsMjM2LDIyOSwxMDgsMTI4LCAzNCwgMzgsMjQyLDIyOSwyMjcsMjI5LAorICAgIDIyOCwyMjksMTE1LDEyOCwgMzQsMTI4LDI0MywxMTcsICAzLDE0MiwgMTUsMTQyLCAyMiwxNDIsIDMxLDIyNiwKKyAgICAyNDMsMjI5LDExNiwxMjgsIDM0LDEzMiwyMjcsMjI3LDIyOSwyMjksMjI4LDExNSwxMjgsIDM0LDEyOSwyNDAsCisgICAgMjI5LDI0MiwyNDMsMjI5LDExNiwxMjgsIDM0LDEzMywyNDcsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LAorICAgIDExMCwxMjgsICA1LDExOCwyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTY5LDExNSwgIDIsMTQyLCA2NiwKKyAgICAxNDIsIDc1LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTc3LDI0NSwyNDAsMjI5LDI0MiwyMzMsCisgICAgMjM5LDExNCwxMjgsIDMyLDEyNywyNDQsMjMzLDIzNiwyMjgsMTAxLDEyOCwgIDAsMjQxLDExNywxMzIsICAzLAorICAgIDE4OSwxNDIsMTA1LDE0MiwxMTYsMTQyLDE5NywxNDMsIDI0LDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwKKyAgICAgOTcsMTI4LCA0OCwxMDgsMTA3LCAgMiwxNDIsMTIyLDE0MiwxNDYsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsCisgICAgIDk3LDEyOSwgNDgsMjA0LDE0MiwxMzQsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LAorICAgIDI1NSwxMzUsMjQ0LCA5NywgIDMsMTQyLDE1NSwxNDIsMTY1LDE0MiwxNzIsMjI2LDIyOSwyMzgsMjMxLDIyNSwKKyAgICAyMzYsMTA1LDEyOCwgIDksMTg4LDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCA2MCwyMzEsMTE3LCAgMiwxNDIsCisgICAgMTc5LDE0MiwxODgsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxODgsMjQyLDIzNywyNDUsMjM1LAorICAgIDIzMiwxMDUsMTI4LCAxMCwgNjAsMTA5LCAgMiwxNDIsMjAzLDE0MiwyMzcsMjI2LDIyOSwyNDIsMjQzLDIzMywKKyAgICAyMzEsMTEwLDEzMCwgIDAsIDM1LDE0MiwyMTcsMTQyLDIyOSwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsCisgICAgMjI3LDEwMSwxMjgsMjU1LCAgMywyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNTQsIDk1LDIyOSwxMTQsICAyLAorICAgIDE0MiwyNDQsMTQzLCAyMCwyMjUsMjM2LDI0MywyMzMsMjMxLDExMCwgIDIsMTQyLDI1NSwxNDMsICA3LDIzMSwKKyAgICAyNDIsMjI5LDIyOSwxMDcsMTI4LCAgMywxMTYsMjM2LDIzOSwyNDcsMjI5LDI0MiwyMzEsMjQyLDIyOSwyMjksCisgICAgMTA3LDEyOCwgIDMsMTE3LDExMSwxMjgsIDMzLCAyMiwxMTAsMTMwLCAgNSwyMjQsMTQzLCAzMiwxNDMsIDUyLAorICAgIDIyOCwyMjUsMjMxLDIyOSwyNDMsMTA0LDEyOSwyNTEsIDY0LDE0MywgNDMsMjMyLDIyOSwyMjYsMjQyLDIyOSwKKyAgICAxMTksMTI4LDI1MSwgNjQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwyMjQsMjQ2LDI0MywyNDEsCisgICAgMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTgxLDI0NywyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLAorICAgIDE4NywyNDksIDk3LCAgMywxNDMsIDkwLDE0MywxMDAsMTQzLDEwNywyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwKKyAgICAxMDUsMTI4LCAgOSwxNTgsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDMwLDIzMSwxMTcsICAyLDE0MywxMTQsCisgICAgMTQzLDEyMywyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE1OCwyNDIsMjM3LDI0NSwyMzUsMjMyLAorICAgIDEwNSwxMjgsIDEwLCAzMCwxMTEsMTQ3LCAgMCwxMTEsMTQzLDE3NCwxNDMsMTk2LDE0NCwgMTgsMTQ0LDE4OCwKKyAgICAxNDUsICA0LDE0NSwgMTksMTQ1LCA1OSwxNDUsMTgyLDE0NSwyMDMsMTQ1LDI0MSwxNDUsMjUyLDE0NiwxNzQsCisgICAgMTQ4LCAgOCwxNDgsIDcyLDE0OCwxMDUsMTQ4LDE1MSwxNDksIDI0LDE0OSwgNzEsMTQ5LCA4MywgOTcsICAyLAorICAgIDE0MywxODAsMTQzLDE4NywyMjcsMjQ1LDI0NCwxMDEsMTI4LCAgMCwyNDMsMjM4LDIzMSwyNDQsMjMyLDIyNSwKKyAgICAxMDUsMTI4LCAxNCwgNDUsIDk4LCAgNCwxNDMsMjA2LDE0MywyNDgsMTQ0LCAgMSwxNDQsIDExLDIyNSwyNDIsCisgICAgMjQyLDIyOSwxMDAsMTMwLCAgMiwxMTcsMTQzLDIxOCwxNDMsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LAorICAgIDIzMywgOTksMTI4LCAgNCwyMzMsMjI4LDIzMywyMjksMjQyLDIyOSwyNDMsMjMzLDI0MywyMjcsMjQ5LDI0MiwKKyAgICAyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMjM1LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksCisgICAgMTQ3LDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAyNywyNDIsMjI5LDI0NiwxMDEsMTI4LAorICAgICAgMSwgNzksIDk5LCAgMywxNDQsIDI2LDE0NCwgOTksMTQ0LDE3OCwgOTcsICAyLDE0NCwgMzIsMTQ0LCA5MywKKyAgICAyMzgsMjI4LDI0MiwgOTcsICAzLDE0NCwgNDMsMTQ0LCA1MCwxNDQsIDYxLDIyOCwyMjksMjQ2LCA5NywxMjgsCisgICAgICA5LCAxNywyMzEsMjQ1LDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTQ1LDI0NiwyMzksMjQ3LAorICAgIDIyOSwyMzYsMjQzLDIzMywyMzEsMTEwLCAgMiwxNDQsIDc1LDE0NCwgODIsMjI4LDIyOSwyNDYsIDk3LDEyOCwKKyAgICAgIDksIDczLDIzMSwyNDUsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwyMDEsMjQyLDIzOSwxMTAsCisgICAgMTI4LCAgMSwyMTAsMjMzLDI0MiwgOTksICAyLDE0NCwxMDcsMTQ0LDExMiwyMzYsMTAxLDEyOCwgMzYsMjIyLAorICAgIDI0NSwyMzcsMjMwLDIzNiwyMjksMTIwLDEzMywgIDAsMjQ0LDE0NCwxMzEsMTQ0LDEzOSwxNDQsMTUwLDE0NCwKKyAgICAxNTgsMTQ0LDE3MCwyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOCwgMzAsMjA5LDIyOCwyMzksMjQ0LDIyNiwyMjksCisgICAgMjM2LDIzOSwxMTksMTI4LCAzMCwyMTcsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsIDMwLDIxMSwyMzIsMjM5LAorICAgIDIzOSwyMzUsMjI1LDIyNiwyMzksMjQ2LDEwMSwxMjgsIDMwLDIxMywyNDQsMjMzLDIzNiwyMjgsMTAxLDEyOCwKKyAgICAgMzAsMjE1LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA2MiwxMDAsICA0LDE0NCwxOTgsCisgICAgMTQ0LDIyMSwxNDQsMjI3LDE0NCwyNTAsMjI2LDEwOCwgIDIsMTQ0LDIwNSwxNDQsMjEzLDIyNSwyMjcsMjQ1LAorICAgIDI0NCwxMDEsMTI4LCAgMSwgODEsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsICAyLCAxMywyMjksMjQ2LCA5NywKKyAgICAxMjgsICA5LCAxOSwyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywxMTUsMTI5LCAgMCwyNDYsMTQ0LDIzOSwyMjcsCisgICAgMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMjMxLDIzOSwyNDQsMjI2LDIyOSwyMzYsMjM5LAorICAgIDExOSwxMjgsIDMwLDIwNSwxMDEsMTI5LCAgMSwgODMsMTQ1LCAxMCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwKKyAgICAxMjgsIDQ5LCA5MCwxMDMsICAzLDE0NSwgMjcsMTQ1LCA0MiwxNDUsIDQ5LDIzOSwyMzgsMjI5LDEwNywxMjksCisgICAgICAyLDIxOSwxNDUsIDM2LDIyNywyMzcsIDk4LDEyOCwgIDMsIDQwLDI0MiwyMjUsMjQ2LDEwMSwxMjgsICAwLAorICAgIDI0MiwyNDUsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNDcsMTA0LCAgNCwxNDUsIDY5LDE0NSwKKyAgICAgODAsMTQ1LCA5MCwxNDUsMTY4LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMzMsCisgICAgMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDc0LDExMSwgIDIsMTQ1LCA5NiwxNDUsMTA2LAorICAgIDIzOSwyMzUsMjI1LDIyNiwyMzksMjQ2LDEwMSwxMjgsIDMwLDIwNywyNDIsMTEwLDEzMywgIDEsMTYxLDE0NSwKKyAgICAxMjEsMTQ1LDEyOSwxNDUsMTQwLDE0NSwxNDgsMTQ1LDE2MCwyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOCwgMzAsCisgICAgMjE5LDIyOCwyMzksMjQ0LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwyMjcsMjMxLDI0MiwyMjUsMjQ2LAorICAgIDEwMSwxMjgsIDMwLDIyMSwyMzIsMjM5LDIzOSwyMzUsMjI1LDIyNiwyMzksMjQ2LDEwMSwxMjgsIDMwLDIyMywKKyAgICAyNDQsMjMzLDIzNiwyMjgsMTAxLDEyOCwgMzAsMjI1LDI0NSwyMzgsMjMxLDIyNSwyNDIsMjQ1LDIzNywyMzYsCisgICAgMjI1LDI0NSwxMTYsMTI4LCAgMSwgODEsMTA1LDEyOSwgIDEsMTYzLDE0NSwxODgsMjM4LDI0NiwyMjksMjQyLAorICAgIDI0NCwyMjksMjI4LDIyNiwyNDIsMjI5LDI0NiwxMDEsMTI4LCAgMiwgMTUsMTA3LCAgMiwxNDUsMjA5LDE0NSwKKyAgICAyMzMsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsMTcwLDE0NSwyMjEsMjMyLDIyNSwyMzYsCisgICAgMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwxMTcsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LAorICAgICA4NywyMzYsMjI5LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTcxLDEwOSwgIDYsMTQ2LCAxMCwKKyAgICAxNDYsIDM4LDE0NiwgNDUsMTQ2LDEzNCwxNDYsMTQ1LDE0NiwxNjMsMjI1LDIyNywyNDIsMjM5LDExMCwxMzAsCisgICAgICAxLCA3NywxNDYsIDIyLDE0NiwgMzAsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsIDMwLCA4MywyMzEsMjQyLAorICAgIDIyNSwyNDYsMTAxLDEyOCwgMzAsIDgxLDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCA4MCwyMjksMjMxLCA5NywKKyAgICAxMzMsICAzLDIwMSwxNDYsIDYxLDE0NiwgNjUsMTQ2LCA3NiwxNDYsIDkwLDE0NiwxMDYsIDQ5LDEyOCwgIDMsCisgICAgMjE0LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgOTcsMjM2LDIyNSwyNDQsMjMzLAorICAgIDIzOCwyMjcsMjM2LDIzOSwyNDMsMjI5LDEwMCwxMjgsICAyLDExOSwyNDIsMjM5LDI0NSwyMzgsMjI4LDIyNywKKyAgICAyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxMjMsMTE2LCAgMiwxNDYsMTEyLDE0NiwxMjcsCisgICAgMjMzLDI0NCwyMzYsMjM5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxMjUsMjM5LAorICAgIDIzOCwyMzksMTE1LDEyOCwgIDMsMjA2LDIzMSwyNDUsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwKKyAgICAyMDgsMjMzLDIyNywyNDIsMjM5LDExMCwxMjksICAzLDE5MSwxNDYsMTU1LDI0NCwyMzksMjM4LDIzOSwxMTUsCisgICAgMTI4LCAgMywyMDQsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCA3OSwyMzgsMTAxLAorICAgIDE0NSwgIDAsIDQ5LDE0NiwyMTMsMTQ2LDIyMiwxNDYsMjMyLDE0NywgIDYsMTQ3LCAzMSwxNDcsIDQwLDE0NywKKyAgICAgNDksMTQ3LCA3NCwxNDcsMTA4LDE0NywxNDIsMTQ3LDE1NCwxNDcsMTczLDE0NywxODQsMTQ3LDIxNywxNDcsCisgICAgMjI3LDE0NywyMzUsMTQ3LDI0NiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA5NywyMjYsMjI5LAorICAgIDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyMzEsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI5LCAzNiwKKyAgICAgOTYsMTQ2LDI0MywyMzMsMjM4LDI0NiwyMjksMjQyLDI0MywyMjksMjQzLDIyNSwyMzgsMjQzLDI0MywyMjksCisgICAgMjQyLDIzMywxMDIsMTI4LCAzOSwxMzgsMTAwLCAgMiwxNDcsIDEyLDE0NywgMTgsMjI5LDI0NiwgOTcsMTI4LAorICAgICAgOSwxMDMsMjM5LDI0NCwyMjksMjM4LDIzNiwyMjksMjI1LDIyOCwyMjksMTE0LDEyOCwgMzIsIDM2LDIyOSwKKyAgICAyMzMsMjMxLDIzMiwyNDQsMTA0LDEyOCwgMzMsIDkxLDIzMCwyMzMsMjQ0LDI0NCwyMjksMTAwLDEyOCwyNDYsCisgICAgMjIwLDIzMSwxMTcsICAyLDE0NywgNTYsMTQ3LCA2NSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLAorICAgIDIzMSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLDEwMywyMzIsIDk3LCAgMywxNDcsIDgzLDE0NywKKyAgICAgOTQsMTQ3LCA5OSwyMjcsMjM1LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDk3LDIzNiwxMDIsCisgICAgMTI4LCAgMCwxODksMjM4LDIzMSwyNTAsMjMyLDIzOSwxMTcsMTI4LCA0OCwgMzMsMTA1LCAgMiwxNDcsMTE0LAorICAgIDE0NywxMzIsMjI4LDIyOSwyMzksMjMxLDI0MiwyMjUsMjQwLDIzMiwyMzMsMjI3LDI0MCwyMjUsMjQyLDIyOSwKKyAgICAxMTAsMTI4LCA1MCwgMzIsMjM4LDIzMCwyMjksMjQyLDIzMywyMzksMTE0LDEyOCwgMzIsMTI5LDIzNywyMzksCisgICAgMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDE3LDIzOCwyNDUsMjM3LDIyOSwyNDIsMjI1LAorICAgIDI0NCwyMzksMjQyLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDI0NCwyMzksMjM2LDIyOCwKKyAgICAyNDMsMjQ0LDI0OSwyMzYsMTAxLDEyOCwyNDcsIDQ5LDExMiwgIDIsMTQ3LDE5MCwxNDcsMTk3LDIyNSwyNDIsCisgICAgMjI5LDExMCwxMjgsIDM2LDExNiwyMjksMTE0LCAgMiwxNDcsMjA0LDE0NywyMTAsMjMzLDIzOSwxMDAsMTI4LAorICAgICAzNiwxMzYsMjQzLDIzMywyMjUsMTEwLDEyOCwgIDYsMjQxLDI0MSwyNDUsMjI1LDI0MiwyNDQsMjI5LDExNCwKKyAgICAxMjgsICAwLDE4OCwyNDIsMjM5LDIzNywyMjUsMTEwLDEyOCwgMzMsMTEyLDI0MywyNDUsMjQwLDIyOSwyNDIsCisgICAgMjMzLDIzOSwxMTQsMTI4LCAgMCwxODUsMjQ0LDEwNCwgIDIsMTQ3LDI1MywxNDgsICAyLDIyNSwxMDUsMTI4LAorICAgICAxNCwgODEsMjMzLDI0MiwxMDAsMTI4LCAzMywgODMsMTExLCAgMywxNDgsIDE2LDE0OCwgNTAsMTQ4LCA2NiwKKyAgICAxMDMsICAyLDE0OCwgMjIsMTQ4LCA0MCwyMzksMjM4LDIyOSwxMDcsMTI5LCAgMSwyMzUsMTQ4LCAzMSwyMzcsCisgICAgMjI1LDIyNywyNDIsMjM5LDExMCwxMjgsICAxLDIzNywyNDUsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LAorICAgICAxMCwgMTksMjM3LDIyNSwyNDQsMjQyLDIyNSwyMzEsMjQ1LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwKKyAgICAgMTAsIDc1LDI0MCwyMjksMTEwLDEyOCwgIDIsIDg0LDExMiwgIDMsMTQ4LCA4MCwxNDgsIDg3LDE0OCwgOTgsCisgICAgMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTcwLDIyOSwyMzgsMjI2LDI0NSwyMzYsMjM2LDIyOSwxMTYsMTI4LAorICAgICAzNywyMzAsMjQ0LDIzMywyMzksMTEwLDEyOCwgMzUsIDM3LDExNCwgIDIsMTQ4LDExMSwxNDgsMTQwLDEwMCwKKyAgICAgIDIsMTQ4LDExNywxNDgsMTI4LDIzMCwyMjksMjM3LDIzMywyMzgsMjMzLDIzOCwxMDEsMTI4LCAgMCwxNzAsCisgICAgMjM3LDIyNSwyNDMsMjI3LDI0NSwyMzYsMjMzLDIzOCwxMDEsMTI4LCAgMCwxODYsMjQ0LDIzMiwyMzksMjMxLAorICAgIDIzOSwyMzgsMjI1LDEwOCwxMjgsIDM0LCAzMSwxMTUsICA1LDE0OCwxNjMsMTQ4LDE5NSwxNDgsMjEyLDE0OSwKKyAgICAgIDEsMTQ5LCAxNCwyMzIsMjM5LDI0MiwxMTYsICAyLDE0OCwxNzIsMTQ4LDE3OSwyMjgsMjI5LDI0NiwgOTcsCisgICAgMTI4LCAgOSwgMTgsMjQ2LDIzOSwyNDcsMjI5LDIzNiwyNDMsMjMzLDIzMSwyMzgsMjI4LDIyOSwyNDYsIDk3LAorICAgIDEyOCwgIDksIDc0LDIzNiwyMjUsMjQzLDEwNCwxMjksICAwLDI0OCwxNDgsMjA0LDIyNSwyMjcsMjQ1LDI0NCwKKyAgICAxMDEsMTI4LCAgMSwyNTUsMjM3LDIyNSwyMzYsMTA4LCAgMiwxNDgsMjIxLDE0OCwyMzIsMjMyLDIzMywyNDIsCisgICAgMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LCA3MywyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LAorICAgIDEyOSwgNDgsMTY5LDE0OCwyNDUsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwKKyAgICAxMDcsMjQ0LDI0MiwyMzksMjM1LDIyOSwyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOCwgIDEsMjU1LDI0NSwyNDAsCisgICAgMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsMjQ2LDI0MCwxMTYsICAyLDE0OSwgMzAsMTQ5LCA0MSwyMjcsMjQ5LAorICAgIDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTI3LDIzMywyMzYsMjI4LDEwMSwxMzAsICAwLDI0NSwKKyAgICAxNDksIDUyLDE0OSwgNjAsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsIDMwLCA3NywyMjgsMjMzLDIyOSwyNDIsCisgICAgMjI5LDI0MywyMzMsMTE1LDEyOCwgMzAsIDc5LDI0NSwyMjYsMjM5LDI0MCwyMzksMjM3LDIzOSwyMzAsMTExLAorICAgIDEyOCwgNDksIDMzLDExOCwgIDIsMTQ5LCA4OSwxNDksMTcwLDIyOSwxMTQsICAyLDE0OSwgOTYsMTQ5LDE2MiwKKyAgICAyMzYsMjMzLDIzOCwxMDEsMTMxLCAzMiwgNjIsMTQ5LDEwOSwxNDksMTMyLDE0OSwxNTUsIDk5LCAgMiwxNDksCisgICAgMTE1LDE0OSwxMjcsMjI5LDIzOCwyNDQsMjI5LDI0MiwyMzYsMjMzLDIzOCwxMDEsMTI4LDI1NCwgNzQsMjM3LAorICAgICA5OCwxMjgsICAzLCAgNSwxMDAsICAyLDE0OSwxMzgsMTQ5LDE0NiwyMjUsMjQzLDIzMiwyMjksMTAwLDEyOCwKKyAgICAyNTQsIDczLDIyNiwyMzYsMjQ3LDIyNSwyNDYsMTIxLDEyOCwyNTQsIDc2LDI0NywyMjUsMjQ2LDEyMSwxMjgsCisgICAgMjU0LCA3NSwyNDMsMjI3LDIzOSwyNDIsMTAxLDEyOCwgIDAsMTc1LDIzOSwyNDcsMjI5LDIzNiwyNDMsMjMzLAorICAgIDIzMSwxMTAsICAzLDE0OSwxODUsMTQ5LDE5NSwxNDksMjAyLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwKKyAgICAxMjgsICA5LDIwMywyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNzUsMjMxLDI0NSwyMzQsMjI1LDI0MiwyMjUsCisgICAgMjQ0LDEwNSwxMjgsIDEwLDIwMywxMTIsMTQ1LCAgMCwxMTIsMTQ5LDI1MSwxNTIsMTIzLDE1MiwxMzQsMTUyLAorICAgIDE0MywxNTIsMTU1LDE1NCwgODAsMTU0LCA5MCwxNTUsIDgyLDE1NiwxMDEsMTU2LDE5MSwxNTYsMjE3LDE1NywKKyAgICAgOTIsMTU3LDEwMCwxNTgsICAyLDE1OCwgNjAsMTU4LCA4OCwxNTgsIDk4LCA5NywgMTQsMTUwLCAyNSwxNTAsCisgICAgIDU3LDE1MCwgNjcsMTUwLCA3NCwxNTAsIDgxLDE1MCwxMjksMTUwLDE0MCwxNTAsMTU0LDE1MCwxNjUsMTUwLAorICAgIDIxMiwxNTAsMjI2LDE1MSwyMzgsMTUyLCAyMSwxNTIsMTExLCA5NywgIDIsMTUwLCAzMSwxNTAsIDQzLDIzNywKKyAgICAyNDAsMjQzLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTI4LDI0MywyMjksMjM4LDI0NCwyMzksCisgICAgMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwgNDMsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LAorICAgIDEyOCwgIDksMTcwLDIyNywyNDUsMjQ0LDEwMSwxMjgsIDMwLCA4NSwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwKKyAgICAgNDIsMTAzLCAgMiwxNTAsIDg3LDE1MCwxMDUsMTAxLCAgMiwxNTAsIDkzLDE1MCwxMDAsMjI4LDIzOSwyNDcsCisgICAgMTEwLDEyOCwgMzMsMjIzLDI0NSwxMTIsMTI4LCAzMywyMjIsMTE3LCAgMiwxNTAsMTExLDE1MCwxMjAsMjM0LAorICAgIDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxNzAsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwKKyAgICAgNDIsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDExMywyMzMsMjQ5LDIyNSwyMzgsCisgICAgMjM4LDIzOSwyMzMsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDQ3LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LAorICAgIDIzOCwgOTcsMTI4LCA0OCwyMDksMTA4LCAgMiwxNTAsMTcxLDE1MCwxOTYsMjI1LDI0NCwyMjUsMjM2LDIzMywKKyAgICAyNTAsMjI1LDI0NCwyMzMsMjM5LDIzOCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsMjI3LDIyNywyMzcsCisgICAgIDk4LDEyOCwgIDQsMTMyLDIzOSwyMjcsMjMyLDIzNSwyMjUsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLAorICAgICA5OSwxMjgsICA0LDE5MiwyMzgsMjQzLDIzMywyMzksMjQzLDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwKKyAgICAgNDksMTI3LDExNCwgIDMsMTUwLDIzNCwxNTAsMjU1LDE1MSwyMjcsIDk3LCAgMiwxNTAsMjQwLDE1MCwyNDgsCisgICAgMjMxLDI0MiwyMjUsMjQwLDEwNCwxMjgsICAwLDE4MiwyMzYsMjM2LDIyOSwxMDgsMTI4LCAzNCwgMzcsMjI5LAorICAgIDExMCwgIDIsMTUxLCAgNiwxNTEsMTE2LDIzNiwyMjksMjMwLDExNiwxMzYsICAwLCA0MCwxNTEsIDI5LDE1MSwKKyAgICAgNDQsMTUxLCA0OSwxNTEsIDU0LDE1MSwgNjUsMTUxLCA3NywxNTEsMTAwLDE1MSwxMDUsMjI1LDIzNiwyNDQsCisgICAgMjM5LDIzOCwyMjksMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MywgNjIsMjI2LDExNiwxMjgsMjQ4LAorICAgIDIzNywyMjksMTIwLDEyOCwyNDgsMjM2LDIzMywyMzgsMjMwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LCAzMiwKKyAgICAxNDEsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgIDgsMTE1LCAgMiwxNTEsCisgICAgIDgzLDE1MSwgOTAsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNTQsIDg5LDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LAorICAgIDExNCwxMjgsIDMyLDEyNSwyNDQsMTEyLDEyOCwyNDgsMjM1LDI0NiwyMjksMjQyLDI0NCwyMzMsMjI3LDIyNSwKKyAgICAxMDgsMTI4LDI1NCwgNTMsMjQyLDIzMywyMzEsMjMyLDExNiwxMzYsICAwLCA0MSwxNTEsMTQwLDE1MSwxNTUsCisgICAgMTUxLDE2MCwxNTEsMTY1LDE1MSwxNzYsMTUxLDE4OCwxNTEsMjExLDE1MSwyMTYsMjI1LDIzNiwyNDQsMjM5LAorICAgIDIzOCwyMjksMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MywgNjMsMjI2LDExNiwxMjgsMjQ4LDI0OCwKKyAgICAyMjksMTIwLDEyOCwyNDgsMjQ3LDIzMywyMzgsMjMwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LCAzMiwxNDIsCisgICAgMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgIDksMTE1LCAgMiwxNTEsMTk0LAorICAgIDE1MSwyMDEsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNTQsIDkwLDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LDExNCwKKyAgICAxMjgsIDMyLDEyNiwyNDQsMTEyLDEyOCwyNDgsMjQ2LDI0NiwyMjksMjQyLDI0NCwyMzMsMjI3LDIyNSwxMDgsCisgICAgMTI4LDI1NCwgNTQsMjQ0LDIzMywyMjUsMjM2LDIyOCwyMzMsMjMwLDEwMiwxMjgsIDM0LCAgMiwxMTUsICAzLAorICAgIDE1MSwyNDYsMTUyLCAgMSwxNTIsIDEzLDIyOSwyNDEsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwKKyAgICAxOTIsMjMyLDI0NCwyMjUsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNTMsMjQxLDI0NSwyMjUsCisgICAgMjQyLDEwMSwxMjgsIDUxLDE2OSwyNDQsMjI1LDEwNCwxMzQsICA1LDE4MywxNTIsIDM5LDE1MiwgNTMsMTUyLAorICAgICA1OCwxNTIsIDY3LDE1MiwgODIsMTUyLCA5OCwgNDksICAyLDE1MiwgNDUsMTUyLCA0OSwgNDksMTI4LCAgNSwKKyAgICAxODMsMTAwLDEyOCwgIDUsMTgzLDE3OCwgOTcsMTI4LCAgNSwxODMsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksCisgICAgMTI4LCAgNSwxODMsMjM4LDIyNSwyNDIsMjQyLDIzOSwyNDcsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LAorICAgICAgNSwxODMsMjQxLDI0NSwyMjUsMjQyLDI0NCwyMjksMjQyLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwKKyAgICAgIDUsMTgzLDI0NywyMzMsMjI4LDIyOSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE4MywyNTAsCisgICAgMjI5LDI0MiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE2MSwyMjYsMjM5LDI0MCwyMzksMjM3LAorICAgIDIzOSwyMzAsMTExLDEyOCwgNDksICA2LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgMzYsMjIzLDIyOCwKKyAgICAyMzksMjQ0LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsIDg3LDEwMSwxMzcsICA1LDIyOCwxNTIsCisgICAgMTc3LDE1MiwxODgsMTUyLDIwOCwxNTIsMjIwLDE1MiwyNDAsMTUzLCA4NiwxNTMsIDk3LDE1MywxMTgsMTU0LAorICAgICA3MywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDYzLDIyOCwyMjUsMjMxLDIyOSwKKyAgICAyNDMsMTA0LDEyOSwyNTEsIDY4LDE1MiwxOTksMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LDI1MSwgNjgsCisgICAgMjI5LDI1MCwyMzMsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwgNTksMjMwLDIzMywyMzgsMjI1LAorICAgIDIzNiwyMjgsMjI1LDIzMSwyMjksMjQzLDIzMiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLCA2NywKKyAgICAxMDQsICA1LDE1MiwyNTIsMTUzLCAxOSwxNTMsIDI3LDE1MywgNDEsMTUzLCA3MSwyMjUsMTE0LCAgMiwxNTMsCisgICAgICAzLDE1MywgMTAsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsMTI2LDIzNywyMjksMjM4LDIzMywyMjUsMTEwLAorICAgIDEyOCwgIDUsMTIyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwyMjgsMjMwLDIzMywyMzgsMjI1LDIzNiwKKyAgICAyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUxLCA4NywxMDUsICAyLDE1MywgNDcsMTUzLCA2MiwyMzgsCisgICAgMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUxLCA4OCwyNDIsMjI1LAorICAgIDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDEyMiwyMzcsMjI5LDIyOCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwKKyAgICAyMjYsMjMzLCA5OSwxMjgsMjUxLCA4OSwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOCwgNDgsCisgICAgMjE4LDIzNywyMzMsMjI4LDIyOCwyMzYsMjI5LDIzMiwyMzksMjM5LDIzNSwyMjcsMjQ5LDI0MiwyMzMsMjM2LAorICAgIDIzNiwyMzMsIDk5LDEyOCwgIDQsMTY3LDExNCwgIDUsMTUzLDEzMCwxNTMsMTQyLDE1MywxODQsMTU0LCA0OSwKKyAgICAxNTQsIDYyLDIyNSwyMzAsMjI5LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwyNTEsIDc4LDIyNywyMjksCisgICAgMjM4LDExNiwxMzEsICAwLCAzNywxNTMsMTU1LDE1MywxNjQsMTUzLDE3NiwyMjUsMjQyLDIyNSwyMjYsMjMzLAorICAgICA5OSwxMjgsICA2LDEwNiwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCAgNSwKKyAgICAyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNTQsMTA2LDEwNSwgIDIsMTUzLDE5MCwxNTQsIDMxLDIzOSwxMDAsCisgICAgMTM0LCAgMCwgNDYsMTUzLDIwNywxNTMsMjE4LDE1MywyMjksMTUzLDI0MSwxNTMsMjUyLDE1NCwgIDgsMjI1LAorICAgIDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LDEzNywyMjcsMjI5LDIzOCwyNDQsMjI5LDI0MiwKKyAgICAyMjksMTAwLDEyOCwgIDAsMTgzLDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsCisgICAgIDk3LDIzMywyMzgsMjMwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LDI0NiwyMzEsMjM3LDIzOSwyMzgsMjM5LAorICAgIDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMTQsMTE1LCAgMiwxNTQsIDE0LDE1NCwgMjEsMjM3LDIyNSwKKyAgICAyMzYsMTA4LDEyOCwyNTQsIDgyLDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsMjQ2LDIzMiwyNDMsCisgICAgMjQwLDIzOSwyMzcsMjI5LDIzOCwyMzMsMjMxLDI0MiwyMjksMjI5LDIzNSwyMjcsMjM3LCA5OCwxMjgsICAzLAorICAgICA2NiwyNDAsMjI5LDIzOCwyMjgsMjMzLDIyNywyNDUsMjM2LDIyNSwxMTQsMTI4LCAzNCwxNjUsMjQ0LDIzMiwKKyAgICAyMzksMjQ1LDI0MywyMjUsMjM4LDEwMCwxMjgsIDMyLCA0OCwyNDMsMjI5LDI0NCwgOTcsMTI4LCAzMiwxNjcsCisgICAgMjMwLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMTM4LDEwNCwgIDMsMTU0LCA5OCwxNTQsMTQ4LAorICAgIDE1NSwgMjksIDk3LCAgMywxNTQsMTA2LDE1NCwxMTYsMTU0LDEyMywyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwKKyAgICAxMDUsMTI4LCAgOSwxNzEsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDQzLDIzMSwxMTcsICAyLDE1NCwxMzAsCisgICAgMTU0LDEzOSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE3MSwyNDIsMjM3LDI0NSwyMzUsMjMyLAorICAgIDEwNSwxMjgsIDEwLCA0MywxMDUsMTMzLCAgMywxOTgsMTU0LDE2MiwxNTQsMTY2LDE1NCwyNTIsMTU1LCAgNCwKKyAgICAxNTUsIDE1LCA0OSwxMjgsICAzLDIxMywyMjksMjQ1LDI0MCwxMDQsICA0LDE1NCwxNzksMTU0LDIxNCwxNTQsCisgICAgMjI5LDE1NCwyMzgsIDk3LCAgMiwxNTQsMTg1LDE1NCwyMDAsMjI3LDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LAorICAgIDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwxMjIsMjQwLDIyNSwyNDIsMjI5LDIzOCwyMzUsMjM5LDI0MiwKKyAgICAyMjksMjI1LDExMCwxMjgsIDUwLCAyNiwyMjcsMjMzLDI0MiwyMjcsMjM2LDIyOSwyMzUsMjM5LDI0MiwyMjksCisgICAgMjI1LDExMCwxMjgsIDUwLDEwOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LCA3NywyNDAsMjI1LAorICAgIDI0MiwyMjksMjM4LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsIDEyLDIzNiwyMjUsMjQ0LDIzMywKKyAgICAxMTAsMTI4LCAgMiwxMjAsMjM4LDI0NCwyMzIsMjQ1LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCA1OCwyNDMsCisgICAgMjQ5LDIzNywyMjYsMjM5LDIzNiwyMzEsMjQyLDIyOSwyMjksMTA3LDEyOCwgIDMsMjEzLDExMSwgIDMsMTU1LAorICAgICAzNywxNTUsIDQyLDE1NSwgNjgsMjM5LDEwNywxMjgsICAxLDE2NSwyNDAsMTA0LCAgMiwxNTUsIDQ5LDE1NSwKKyAgICAgNTgsMjI1LDIzOCwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgMzAsMjQ1LDIzOCwyMzEsMjQ0LDIzMiwyMjUsCisgICAgMTA1LDEyOCwgMTQsIDI4LDI0MywyMjUsMjM3LDI0MCwyMzIsMjI1LDIzOSwyNDQsMjMyLDIyNSwxMDUsMTI4LAorICAgICAxNCwgMzIsMTA1LDEzMywgIDMsMTkyLDE1NSwgOTYsMTU2LCA1MiwxNTYsIDYzLDE1NiwgNzQsMTU2LCA4OCwKKyAgICAyMjksMjQ1LDExMiwgIDYsMTU1LDExMiwxNTUsMTQ3LDE1NSwxNzksMTU1LDIwNywxNTUsMjIxLDE1NiwgMTcsCisgICAgIDk3LCAgMiwxNTUsMTE4LDE1NSwxMzMsMjI3LDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LDIzOSwyNDIsMjI5LAorICAgIDIyNSwxMTAsMTI4LCA1MCwxMTUsMjQwLDIyNSwyNDIsMjI5LDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwKKyAgICAxMjgsIDUwLCAxOSwyMjcsMTA1LCAgMiwxNTUsMTU0LDE1NSwxNjYsMjI5LDI0NSwyMjcsMjM1LDIzOSwyNDIsCisgICAgMjI5LDIyNSwxMTAsMTI4LCA0OSwxMTgsMjQyLDIyNywyMzYsMjI5LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLAorICAgIDEyOCwgNTAsMTAxLDEwNywgIDIsMTU1LDE4NSwxNTUsMTk5LDIzMywyNDksMjI5LDIzOSwyMzUsMjM1LDIzOSwKKyAgICAyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxMTQsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LCA2NiwyNDAsCisgICAgMjI1LDI0MiwyMjksMjM4LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsICA1LDI0MywyMzMsMjM5LAorICAgIDExNSwgIDIsMTU1LDIzMCwxNTYsICAyLDEwNywgIDIsMTU1LDIzNiwxNTUsMjUwLDIzMywyNDksMjI5LDIzOSwKKyAgICAyMzUsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxMTYsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsCisgICAgIDQ5LCA2OCwyNDQsMjMzLDIzNSwyMjksMjQ1LDI0NCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LAorICAgIDExNywxMTYsICAyLDE1NiwgMjMsMTU2LCAzOCwyMzIsMjMzLDIyOSwyNDUsMjQ0LDIzMiwyMzUsMjM5LDI0MiwKKyAgICAyMjksMjI1LDExMCwxMjgsIDQ5LDExOSwyMzMsMjM1LDIyOSwyNDUsMjQ0LDIzNSwyMzksMjQyLDIyOSwyMjUsCisgICAgMTEwLDEyOCwgNDksMTE1LDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxMTYsMjM1LAorICAgIDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDIxMiwyNDMsMjQ5LDIzNywyMjYsMjM5LDIzNiwKKyAgICAyMzEsMjQyLDIyOSwyMjksMTA3LDEyOCwgIDMsMjE0LDI0NywyNDIsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsCisgICAgMjI1LDExMCwxMjgsICA1LDEzMSwyMzYsMjQ1LDExNSwxMzIsICAwLCA0MywxNTYsMTE1LDE1NiwxMjYsMTU2LAorICAgIDEzNSwxNTYsMTY4LDIyNiwyMjksMjM2LDIzOSwyNDcsMjI3LDIzNywgOTgsMTI4LCAgMywgMzEsMjI3LDIzMywKKyAgICAyNDIsMjI3LDIzNiwxMDEsMTI4LCAzNCwxNDksMTA5LCAgMiwxNTYsMTQxLDE1NiwxNDgsMjMzLDIzOCwyNDUsCisgICAgMTE1LDEyOCwgIDAsMTc3LDExMSwgIDIsMTU2LDE1NCwxNTYsMTU4LDEwMCwxMjgsICAyLDIxNCwyMzgsMjM5LAorICAgIDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgMTEsMTE1LCAgMiwxNTYsMTc0LDE1NiwxODEsMjM3LDIyNSwKKyAgICAyMzYsMTA4LDEyOCwyNTQsIDk4LDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsIDMyLDEyMiwxMDksCisgICAgICAyLDE1NiwxOTcsMTU2LDIwOCwyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDgwLAorICAgIDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsMjE2LDExMSwgIDUsMTU2LDIyOSwxNTYsMjQwLDE1NywKKyAgICAgNTEsMTU3LCA2MiwxNTcsIDcyLDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxMjUsCisgICAgMjMzLDIzOCwyNDQsMjMzLDIzOCwyMzEsMjMzLDIzOCwyMjgsMjI5LDEyMCwgIDQsMTU3LCAgNCwxNTcsIDE2LAorICAgIDE1NywgMjgsMTU3LCA0MSwyMjgsMjM5LDI0NywyMzgsMjQ3LDIzMiwyMzMsMjQ0LDEwMSwxMjgsIDM4LCAzMSwKKyAgICAyMzYsMjI5LDIzMCwyNDQsMjQ3LDIzMiwyMzMsMjQ0LDEwMSwxMjgsIDM4LCAyOCwyNDIsMjMzLDIzMSwyMzIsCisgICAgMjQ0LDI0NywyMzIsMjMzLDI0NCwxMDEsMTI4LCAzOCwgMzAsMjQ1LDI0MCwyNDcsMjMyLDIzMywyNDQsMTAxLAorICAgIDEyOCwgMzgsIDI5LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwyMjEsMjQwLDIzNiwKKyAgICAyMjUsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDI3LDI0MywyNDQsMjI1LDIzNiwyMzcsMjI1LDI0MiwxMDcsCisgICAgMTI5LCA0OCwgMTgsMTU3LCA4NSwyMzAsMjI1LDIyNywxMDEsMTI4LCA0OCwgMzIsMjQwLDIyNSwyNDIsMjI5LAorICAgIDExMCwxMjgsIDM2LDE3MSwxMTQsICAzLDE1NywxMDgsMTU3LDEzNCwxNTcsMTU5LDEwMSwgIDIsMTU3LDExNCwKKyAgICAxNTcsMTIyLDIyNywyMjksMjI4LDIyOSwxMTUsMTI4LCAzNCwxMjIsMjQzLDIyNywyNDIsMjMzLDI0MCwyNDQsCisgICAgMjMzLDIzOSwxMTAsMTI4LCAzMywgMzAsMjMzLDIzNywxMDEsICAyLDE1NywxNDIsMTU3LDE0OCwyMzcsMjM5LAorICAgIDEwMCwxMjgsICAyLDE4NSwyNDIsMjI5LDI0NiwyMjksMjQyLDI0MywyMjksMTAwLDEyOCwgMzIsIDUzLDExMSwKKyAgICAgIDQsMTU3LDE2OSwxNTcsMTc2LDE1NywxODYsMTU3LDE5OSwyMjgsMjQ1LDIyNywxMTYsMTI4LCAzNCwgMTUsCisgICAgMjM0LDIyOSwyMjcsMjQ0LDIzMywyNDYsMTAxLDEyOCwgMzUsICA1LDIzNiwyMzksMjM4LDIzMSwyMjksMjI4LAorICAgIDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDI1MiwxMTIsICAyLDE1NywyMDUsMTU3LDI0MiwxMDEsICAyLDE1NywKKyAgICAyMTEsMTU3LDIxOCwyMzYsMjM2LDIzOSwxMTQsMTI4LCAzNSwgMjQsMjQyLDI0MywxMTcsICAyLDE1NywyMjYsCisgICAgMTU3LDIzMywyMjYsMjQzLDIyOSwxMTYsMTI4LCAzNCwxMzAsMjQwLDIyOSwyNDIsMjQzLDIyOSwxMTYsMTI4LAorICAgICAzNCwxMzEsMjM5LDI0MiwyNDQsMjMzLDIzOSwxMTAsMTI5LCAzNCwgNTUsMTU3LDI1MywyMjUsMTA4LDEyOCwKKyAgICAgMzQsIDI5LDExNSwgIDIsMTU4LCAgOCwxNTgsIDUxLDEwNSwxMzAsICAzLDIwMCwxNTgsIDE2LDE1OCwgMjcsCisgICAgMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDExMywyMzYsMjMzLDI0MCwyMzgsMjI5LAorICAgIDI0NSwyMzcsMjI1LDI0NCwyMjUsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLDIyNywyMjcsMjM3LCA5OCwKKyAgICAxMjgsICA0LDEzNCwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDE3NiwxMTcsICAyLDE1OCwgNjYsCisgICAgMTU4LCA3NywyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTE5LDIzNSwyMjUsMjQ0LAorICAgIDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwyMTUsMjQ2LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwKKyAgICAgNTEsMTgwLDI0NywyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDE4NiwxMTMsMTM2LCAgMCwxMTMsCisgICAgMTU4LDEyOCwxNTksMTc3LDE1OSwxODgsMTU5LDE5NywxNTksMjA0LDE1OSwyMTYsMTU5LDI1NCwxNjAsICA2LAorICAgICA5NywgIDQsMTU4LDEzOCwxNTgsMTYxLDE1OCwyMjUsMTU5LDE2MCwxMDAsICAyLDE1OCwxNDQsMTU4LDE1MCwKKyAgICAyMjksMjQ2LCA5NywxMjgsICA5LCA4OCwyMzcsMjI1LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsCisgICAgMTY4LDEwMiwgIDQsMTU4LDE3MSwxNTgsMTgwLDE1OCwxOTQsMTU4LDIxMCwyMjUsMjQyLDIyNSwyMjYsMjMzLAorICAgICA5OSwxMjgsICA2LCA2NiwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwKKyAgICAyNTQsMjE0LDIzMywyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsCisgICAgMjU0LDIxNSwyMzcsMjI5LDIyOCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LAorICAgIDIxNiwyMzcsMjI1LDI0NCwxMTUsMTM2LCAgNSwxODQsMTU4LDI0OCwxNTksIDEyLDE1OSwgMjYsMTU5LCAzMSwKKyAgICAxNTksIDM2LDE1OSwgNDUsMTU5LCA2MCwxNTksMTQ3LCA0OSwgIDMsMTU5LCAgMCwxNTksICA0LDE1OSwgIDgsCisgICAgIDQ4LDEyOCwgIDUsMTg0LCA5NywxMjgsICA1LDE4NCwgOTksMTI4LCAgNSwxODQsIDUwLCAgMiwxNTksIDE4LAorICAgIDE1OSwgMjIsIDU1LDEyOCwgIDUsMTg0LCA1NywxMjgsICA1LDE4NCwxNzksIDUxLDEyOCwgIDUsMTg0LDIyOCwKKyAgICAxMDEsMTI4LCAgNSwxODQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxODQsMjM4LDIyNSwyNDIsCisgICAgMjQyLDIzOSwyNDcsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxODQsMTEzLCAgMiwxNTksIDY2LAorICAgIDE1OSwxMzIsMjI1LDI0NCwyMjUsMTEwLCAgNCwxNTksIDc5LDE1OSwgODgsMTU5LDEwMywxNTksMTE5LDIzMiwKKyAgICAyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTg0LDIzOCwyMjUsMjQyLDI0MiwyMzksMjQ3LDIzMiwyMjksCisgICAgMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTg0LDI0MSwyNDUsMjI1LDI0MiwyNDQsMjI5LDI0MiwyMzIsMjI5LAorICAgIDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE4NCwyNDcsMjMzLDIyOCwyMjksMjMyLDIyOSwyMjYsMjQyLDIyOSwKKyAgICAxMTksMTI4LCAgNSwxODQsMjQ1LDIyNSwyNDIsMjQ0LDIyOSwyNDIsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksCisgICAgMTI4LCAgNSwxODQsMjQ3LDIzMywyMjgsMjI5LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTg0LAorICAgIDI0MiwyMzgsMjI5LDI0OSwyNDAsMjI1LDI0MiwyMjUsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwKKyAgICAxNTksMjI2LDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAxNywyMjcsMjMzLDI0MiwyMjcsCisgICAgMjM2LDEwMSwxMjgsIDM2LDIyNCwyMzIsMjM5LDIzOSwxMDcsMTI4LCAgMiwxNjAsMjM3LDIzOSwyMzgsMjM5LAorICAgIDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgODEsMjM5LDEwMiwxMzAsICA1LDIzMSwxNTksMjI1LDE1OSwKKyAgICAyNDUsMjI4LDIyNSwyMzEsMjI5LDI0MywxMDQsMTI5LDI1MSwgNzEsMTU5LDIzNiwyMzIsMjI5LDIyNiwyNDIsCisgICAgMjI5LDExOSwxMjgsMjUxLCA3MSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIzMSwyNDAsMjI1LAorICAgIDI0MiwyMjksMTEwLDEyOCwgMzYsMTcyLDExNywgIDQsMTYwLCAxNiwxNjAsIDI4LDE2MCwxMTcsMTYwLDIwNCwKKyAgICAyMjUsMjQyLDI0NCwyMjksMjQyLDIzOCwyMzksMjQ0LDEwMSwxMjgsIDM4LDEwNSwyMjYsMjQ1LDI0NCwxMTUsCisgICAgMTM1LCAgNSwxODcsMTYwLCA0OSwxNjAsIDU0LDE2MCwgNTksMTYwLCA2NCwxNjAsIDczLDE2MCwgODgsMTYwLAorICAgIDEwNCwxNzcsIDU2LDEyOCwgIDUsMTg3LDE3OCwgNTMsMTI4LCAgNSwxODcsMTc5LCA0OSwxMjgsICA1LDE4NywKKyAgICAyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE4NywyMzgsMjI1LDI0MiwyNDIsMjM5LDI0NywyMzIsCisgICAgMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE4NywyNDEsMjQ1LDIyNSwyNDIsMjQ0LDIyOSwyNDIsMjMyLAorICAgIDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxODcsMjQ3LDIzMywyMjgsMjI5LDIzMiwyMjksMjI2LDI0MiwKKyAgICAyMjksMTE5LDEyOCwgIDUsMTg3LDIyOSwyNDMsMjQ0LDIzMywyMzksMTEwLDEzMywgIDAsIDYzLDE2MCwxMzYsCisgICAgMTYwLDE1OSwxNjAsMTc2LDE2MCwxODQsMTYwLDE5NiwyMjUsMTE0LCAgMiwxNjAsMTQzLDE2MCwxNTAsMjI1LAorICAgIDIyNiwyMzMsIDk5LDEyOCwgIDYsIDMxLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDk0LDIyOCwKKyAgICAyMzksMjQ3LDExMCwxMjksICAwLDE5MSwxNjAsMTY4LDI0MywyMzcsMjI1LDIzNiwxMDgsMTI4LDI0NywxOTEsCisgICAgMjMxLDI0MiwyMjksMjI5LDEwNywxMjgsICAzLDEyNiwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LAorICAgIDEwMSwxMjgsMjU1LCAzMSwyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNDcsIDYzLDIzOSwyNDQsMTAxLCAgNCwKKyAgICAxNjAsMjE2LDE2MSwgMzEsMTYxLCA1MSwxNjEsIDgwLDIyOCwyMjYsMTA4LDEzMywgIDAsIDM0LDE2MCwyMzIsCisgICAgMTYwLDIzOSwxNjAsMjQ2LDE2MSwgIDIsMTYxLCAyMywyMjYsMjI1LDI0MywxMDEsMTI4LCAzMiwgMzAsMjM2LAorICAgIDIyOSwyMzAsMTE2LDEyOCwgMzIsIDI4LDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwKKyAgICAyNTUsICAyLDI0MCwyNDIsMjMzLDIzNywxMDEsMTI5LCA0OCwgMzAsMTYxLCAxMiwyNDIsMjI5LDI0NiwyMjksCisgICAgMjQyLDI0MywyMjksMTAwLDEyOCwgNDgsIDI5LDI0MiwyMzMsMjMxLDIzMiwxMTYsMTI4LCAzMiwgMjksMjM2LAorICAgIDIyOSwyMzAsMTE2LDEyOSwgMzIsIDI0LDE2MSwgNDAsMjQyLDIyOSwyNDYsMjI5LDI0MiwyNDMsMjI5LDEwMCwKKyAgICAxMjgsIDMyLCAyNywxMTQsICAyLDE2MSwgNTcsMTYxLCA2NywyMjksMjQ2LDIyOSwyNDIsMjQzLDIyOSwxMDAsCisgICAgMTI4LCAzMiwgMjcsMjMzLDIzMSwyMzIsMTE2LDEyOSwgMzIsIDI1LDE2MSwgNzYsMTEwLDEyOCwgIDEsIDczLAorICAgIDI0MywyMzMsMjM4LDIzMSwxMDgsICAyLDE2MSwgOTAsMTYxLCA5NywyMjYsMjI1LDI0MywxMDEsMTI4LCAzMiwKKyAgICAgMjYsMTAxLDEyOSwgIDAsIDM5LDE2MSwxMDMsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsCisgICAgMTI4LDI1NSwgIDcsMTE0LDE0NSwgIDAsMTE0LDE2MSwxNTMsMTYyLDE1NywxNjIsMTY4LDE2MiwyMTUsMTYzLAorICAgICAxMCwxNjQsIDI3LDE2NCwgNTEsMTY0LDE0NiwxNjYsMTgwLDE2NiwyMTcsMTY2LDIyOSwxNjcsIDI3LDE2NywKKyAgICAgMzUsMTY3LDE5NywxNjcsMjA4LDE2NywyNDMsMTY4LCA4NywgOTcsIDExLDE2MSwxNzcsMTYxLDE4OCwxNjEsCisgICAgMTk4LDE2MSwyMDUsMTYyLCAxNCwxNjIsIDMwLDE2MiwgNTUsMTYyLCA2NiwxNjIsIDkxLDE2MiwxMTQsMTYyLAorICAgIDE1MSwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsMTI0LDIyNiwyMjksMjM4LDIzMSwKKyAgICAyMjUsMjM2LDEwNSwxMjgsICA5LDE3NiwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAgMSwgODUsMTAwLCAgNCwxNjEsCisgICAgMjE1LDE2MSwyMjEsMTYxLDIzNSwxNjIsICA1LDIyOSwyNDYsIDk3LDEyOCwgIDksIDQ4LDIzMywyMjcsMjI1LAorICAgIDEwOCwxMjksIDM0LCAyNiwxNjEsMjMwLDIyOSwxMjAsMTI4LDI0OCwyMjksMjM5LDI0NiwyMjksMjQyLDI0MywKKyAgICAyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjksIDUxLDE3NCwxNjEsMjUxLDIyOCwyNDMsMjQxLDI0NSwyMjUsCisgICAgMjQyLDEwMSwxMjgsIDUxLDE3NSwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDE3MywyMzAsMTAxLAorICAgIDEyOSwgIDUsMTkxLDE2MiwgMjEsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxOTEsMjMxLDExNywKKyAgICAgIDIsMTYyLCAzNywxNjIsIDQ2LDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTc2LDI0MiwyMzcsCisgICAgMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDQ4LDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LAorICAgICA0OCwxMzcsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIzMywxNjIsIDc5LDIzMiwKKyAgICAyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTUxLDIzNiwyMzksMjQ3LDIyOSwyNDIsCisgICAgMjI4LDIzMywyMjUsMjMxLDIzOSwyMzgsMjI1LDIzNiwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LAorICAgICAgOSwyNDEsMTA5LCAgMiwxNjIsMTIwLDE2MiwxNDMsMjMzLDIyOCwyMjgsMjM2LDIyOSwyMjgsMjMzLDIyNSwKKyAgICAyMzEsMjM5LDIzOCwyMjUsMjM2LDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDI0MCwyNDMsCisgICAgMjMyLDIzOSwyNDIsMTEwLDEyOCwgIDIsMTAwLDI0NCwyMzMsMTExLDEyOCwgMzQsIDU0LDIyNiwyMzksMjQwLAorICAgIDIzOSwyMzcsMjM5LDIzMCwxMTEsMTI4LCA0OSwgMjIsIDk5LCAgNCwxNjIsMTc4LDE2MiwxODUsMTYyLDE5NCwKKyAgICAxNjIsMjAyLDIyNSwyNDIsMjM5LDExMCwxMjgsICAxLCA4OSwyMjksMjI4LDIzMywyMzYsMjM2LCA5NywxMjgsCisgICAgICAxLCA4NywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgMzYsMjI1LDIzOSwyMzcsMjM3LDIyNSwyMjUsMjI3LAorICAgIDIyNywyMjksMjM4LDExNiwxMjgsICAxLCA4NywxMDAsICAyLDE2MiwyMjEsMTYyLDIzMSwyMjYsMjM2LDIzMSwKKyAgICAyNDIsMjI1LDI0NiwxMDEsMTI4LCAgMiwgMTcsMjM5LDExNiwgIDIsMTYyLDIzOCwxNjIsMjQ3LDIyNSwyMjcsCisgICAgMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsIDg5LDIyNiwyMjksMjM2LDIzOSwxMTksMTI5LCAzMCwgOTEsMTYzLAorICAgICAgMSwyMzcsMjI1LDIyNywyNDIsMjM5LDExMCwxMjgsIDMwLCA5MywxMDEsICA2LDE2MywgMjQsMTYzLCA2OSwKKyAgICAxNjMsMTA0LDE2MywxNTksMTYzLDE4NCwxNjMsMjE3LDEwMiwgIDIsMTYzLCAzMCwxNjMsIDQzLDIyOSwyNDIsCisgICAgMjI5LDIzOCwyMjcsMjI5LDIzNywyMjUsMjQyLDEwNywxMjgsIDMyLCA1OSwyMzYsMjI5LDI0OCwyNDMsMTE3LAorICAgICAgMiwxNjMsIDUzLDE2MywgNjAsMjI2LDI0MywyMjksMTE2LDEyOCwgMzQsMTM0LDI0MCwyMjksMjQyLDI0MywKKyAgICAyMjksMTE2LDEyOCwgMzQsMTM1LDIzMSwyMzMsMjQzLDI0NCwyMjksMTE0LCAgMiwxNjMsIDgwLDE2MywgODUsCisgICAgMjI5LDEwMCwxMjgsICAwLDE3NCwxMTUsICAyLDE2MywgOTEsMTYzLCA5NywyMjUsMjM4LDExNSwxMjgsMjQ4LAorICAgIDIzMiwyMjksMjQyLDIzMywxMDIsMTI4LDI0NiwyMTgsMTA0LCAgMywxNjMsMTEyLDE2MywxMzUsMTYzLDE0OSwKKyAgICAyMjUsMTE0LCAgMiwxNjMsMTE5LDE2MywxMjYsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDQ5LDIzNywyMjksCisgICAgMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsMTI4LDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LAorICAgIDIzMywgOTksMTI4LDI1NCwxNzQsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTQwLDIzNSwKKyAgICAyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwyMzYsMTYzLDE3MiwyMzIsMjI1LDIzNiwyMzAsCisgICAgMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDE1NCwyNDMsMTA0LDEzMCwgIDUsMjMyLDE2MywxOTMsMTYzLAorICAgIDIwOCwyMjgsMjI1LDIzMSwyMjksMjQzLDIzMiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLCA3MiwKKyAgICAyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIzMiwxMTgsICAzLDE2MywyMjUsMTYzLDIzOCwxNjQsCisgICAgIDE0LDIyOSwyNDIsMjQzLDIyOSwyMjgsMjQ0LDIzMywyMzYsMjI4LDEwMSwxMjgsIDM0LCA2MSwyMzMsIDk3LAorICAgICAgMiwxNjMsMjQ1LDE2MywyNTQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNTEsMjM3LDI0NSwKKyAgICAyMzEsMjQyLDIyNSwyNDMsMjMyLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTUxLDIzNiwyMzksCisgICAgMjMxLDIzMywyMjcsMjI1LDIzNiwyMzgsMjM5LDExNiwxMjgsIDM1LCAxNiwyMzAsMjMzLDI0MywyMzIsMjMyLAorICAgIDIzOSwyMzksMTA3LDEyOSwgIDIsMTI2LDE2NCwgNDAsMjQyLDIyOSwyNDYsMjI5LDI0MiwyNDMsMjI5LDEwMCwKKyAgICAxMjgsICAyLDEyNywxMDQsICAyLDE2NCwgNTcsMTY0LCA4MCwgOTcsICAyLDE2NCwgNjMsMTY0LCA3MywyMjYsCisgICAgMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyMjEsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDkzLAorICAgIDExMSwxMzEsICAzLDE5MywxNjQsIDkwLDE2NCwxMTksMTY0LDEzMywyMzksMTA3LDEyOSwgIDIsMTI1LDE2NCwKKyAgICAgOTcsMjQ0LDI0NSwyNDIsMjM4LDIyOSwxMDAsMTI5LCAgMiwxMjMsMTY0LDEwOCwyNDMsMjQ1LDI0MCwyMjksCisgICAgMjQyLDIzMywyMzksMTE0LDEyOCwgIDIsMTgxLDI0MywyNDksMjM3LDIyNiwyMzksMjM2LDIzMSwyNDIsMjI5LAorICAgIDIyOSwxMDcsMTI4LCAgMywyNDEsMjQ0LDIzMywyMjcsMjMyLDIzOSwyMzksMjM1LDIzNywyMzksMTAwLDEyOCwKKyAgICAgIDIsMjIyLDEwNSwgIDYsMTY0LDE2MCwxNjUsMjA0LDE2NSwyNTAsMTY2LCAgNSwxNjYsIDMwLDE2NiwxNjYsCisgICAgMjI5LDI0NSwxMDgsICA5LDE2NCwxODIsMTY0LDIxNywxNjQsMjMyLDE2NCwyNDYsMTY1LCAzNiwxNjUsIDUwLAorICAgIDE2NSwxMzYsMTY1LDE0OSwxNjUsMTg0LCA5NywgIDIsMTY0LDE4OCwxNjQsMjAzLDIyNywyMzMsMjQyLDIyNywKKyAgICAyMzYsMjI5LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNTAsMTEzLDI0MCwyMjUsMjQyLDIyOSwyMzgsCisgICAgMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwgMTcsMjI3LDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LAorICAgIDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwgOTksMjMyLDIzMywyMjksMjQ1LDIzMiwyMzUsMjM5LDI0MiwKKyAgICAyMjksMjI1LDExMCwxMjgsIDQ5LCA2NCwxMDcsICAyLDE2NCwyNTIsMTY1LCAyOCwyMzMsMjQ5LDIyOSwyMzksCisgICAgMTA3LCAgMiwxNjUsICA2LDE2NSwgMTUsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgNTgsMjQzLAorICAgIDIzMywyMzksMjQzLDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTA1LDIzOSwyNDIsMjI5LDIyNSwKKyAgICAxMTAsMTI4LCA0OSwgNTcsMjM3LDIzMywyMjksMjQ1LDIzNywyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsCisgICAgIDQ5LCA1OSwxMTIsICAzLDE2NSwgNTgsMTY1LCA5MCwxNjUsMTA1LCA5NywgIDIsMTY1LCA2NCwxNjUsIDc4LAorICAgIDIzOCwyNDMsMjMzLDIzOSwyNDMsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxMDgsMjQyLDIyOSwKKyAgICAyMzgsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwgIDMsMjMyLDIzMywyMjksMjQ1LDI0MCwyMzIsCisgICAgMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgNjMsMjMzLDIyOSwyNDUsMTEyLCAgMiwxNjUsMTE0LAorICAgIDE2NSwxMjMsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgNjAsMjQzLDIzMywyMzksMjQzLDIzNSwKKyAgICAyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTA3LDI0MywyMzMsMjM5LDI0MywyMzUsMjM5LDI0MiwyMjksCisgICAgMjI1LDExMCwxMjgsIDQ5LCA2MSwxMTYsICAyLDE2NSwxNTUsMTY1LDE3MCwyMzIsMjMzLDIyOSwyNDUsMjQ0LAorICAgIDIzMiwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LCA2MiwyMzMsMjM1LDIyOSwyNDUsMjQ0LDIzNSwKKyAgICAyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTA2LDI0OSwyMjksMjM5LDI0MiwyMzMsMjM4LDIzMiwyMzMsCisgICAgMjI5LDI0NSwyMzIsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxMDksMjMxLDIzMiwxMTYsICAyLAorICAgIDE2NSwyMTIsMTY1LDIyMCwyMjUsMjM4LDIzMSwyMzYsMTAxLDEyOCwgMzQsIDMxLDExNiwgIDIsMTY1LDIyNiwKKyAgICAxNjUsMjQwLDIyNSwyMjcsMjM1LDIyNiwyMjksMjM2LDIzOSwyNDcsMjI3LDIzNywgOTgsMTI4LCAgMywgMjUsCisgICAgMjQyLDIzMywyMjUsMjM4LDIzMSwyMzYsMTAxLDEyOCwgMzQsMTkxLDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LAorICAgIDIzOCwgOTcsMTI4LCA0OCwxMzgsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIzNCwKKyAgICAxNjYsIDE4LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTUyLDExMCwgIDIsCisgICAgMTY2LCAzNiwxNjYsMTUyLDEwMywxMzEsICAyLDIxOCwxNjYsIDQ2LDE2NiwgNTcsMTY2LCA2MywyMjYsMjI5LAorICAgIDIzNiwyMzksMjQ3LDIyNywyMzcsIDk4LDEyOCwgIDMsIDM3LDIyNywyMzcsIDk4LDEyOCwgIDMsIDEwLDIzMiwKKyAgICAyMjUsMjM2LDEwMiwgIDIsMTY2LCA3MiwxNjYsMTE4LDIzNiwyMjksMjMwLDExNiwxMzEsICAyLDE5MSwxNjYsCisgICAgIDg1LDE2NiwgOTYsMTY2LDEwNywyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsIDg5LAorICAgIDIyNiwyMjksMjM2LDIzOSwyNDcsMjI3LDIzNywgOTgsMTI4LCAgMywgMjgsMjI3LDIyOSwyMzgsMjQ0LDIyOSwKKyAgICAyNDIsMjI5LDEwMCwxMjgsICAyLDIxMSwyNDIsMjMzLDIzMSwyMzIsMTE2LDEzMCwgIDIsMTkwLDE2NiwxMzAsCisgICAgMTY2LDE0MSwyMjYsMjI5LDIzNiwyMzksMjQ3LDIyNywyMzcsIDk4LDEyOCwgIDMsIDU3LDIyNywyMjksMjM4LAorICAgIDI0NCwyMjksMjQyLDIyOSwxMDAsMTI4LCAgMiwyMTAsMjQ2LDIyOSwyNDIsMjQ0LDIyOSwyMjgsMjI2LDI0MiwKKyAgICAyMjksMjQ2LDEwMSwxMjgsICAyLCAxOSwyNDQsMjQ0LDIzOSwyNDIsMjQ1LDI0MywyNDEsMjQ1LDIyNSwyNDIsCisgICAgMTAxLDEyOCwgNTEsIDgxLDEwOCwgIDIsMTY2LDE4NiwxNjYsMTk3LDIzMywyMzgsMjI5LDIyNiwyMjksMjM2LAorICAgIDIzOSwxMTksMTI4LCAzMCwgOTUsMjM5LDIzOCwyMzEsMjM2LDIyOSwxMDMsMTI5LCAgMiwxMjQsMTY2LDIwOCwKKyAgICAyNDQsMjQ1LDI0MiwyMzgsMjI5LDEwMCwxMjgsICAyLDEyMiwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsCisgICAgMjI3LDEwMSwxMjgsMjU1LCA4MiwxMTEsICAzLDE2NiwyMzcsMTY2LDI0OCwxNjcsIDE3LDIzMiwyMzMsMjQyLAorICAgIDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxNDEsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywKKyAgICAxMjksIDQ4LDIzNywxNjcsICA1LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsCisgICAgMTU1LDI0MiwyNDUsMjI1LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAzNSwyNDAsMjI1LDI0MiwyMjksMTEwLAorICAgIDEyOCwgMzYsMTczLDExNCwgIDMsMTY3LCA0MywxNjcsIDc5LDE2NywxMDksIDk3LCAgMywxNjcsIDUxLDE2NywKKyAgICAgNjEsMTY3LCA2OCwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyMjAsMjI4LDIyOSwyNDYsCisgICAgIDk3LDEyOCwgIDksIDQ5LDIzMSwyNDUsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwgOTIsMjI5LAorICAgIDEwNCwgIDIsMTY3LCA4NiwxNjcsIDk1LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsMTQ1LDIzMCwKKyAgICAyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MSwxNDEsMjQ2LDIzOSwyMjcsCisgICAgMjI1LDIzNiwyMzMsIDk5LCAgNCwxNjcsMTI1LDE2NywxMzUsMTY3LDE0MiwxNjcsMTUzLDIyNiwyMjksMjM4LAorICAgIDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDIyNCwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgOTYsMjMxLDI0NSwKKyAgICAyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDIyNCwyNDYsMjM5LDI0NywyMjksMjM2LDI0MywyMzMsCisgICAgMjMxLDExMCwgIDMsMTY3LDE2OSwxNjcsMTc5LDE2NywxODYsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LAorICAgIDEyOCwgIDksMTk2LDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCA2OCwyMzEsMjQ1LDIzNCwyMjUsMjQyLDIyNSwKKyAgICAyNDQsMTA1LDEyOCwgMTAsMTk2LDI0MywyNDUsMjQwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LDI0NiwyNDEsCisgICAgMTE2LCAgMiwxNjcsMjE0LDE2NywyMjIsMjI2LDIzNiwyMzksMjI3LDEwNywxMjgsIDM3LDE0NCwyNDUsMjQyLAorICAgIDIzOCwyMjksMTAwLDEyOSwgIDIsMTIxLDE2NywyMzIsMjQzLDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LDExNCwKKyAgICAxMjgsICAyLDE4MCwxMTcsICA0LDE2NywyNTMsMTY4LCAgOCwxNjgsIDMzLDE2OCwgODAsMjMyLDIzMywyNDIsCisgICAgMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDEzOSwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LAorICAgIDEyOSwgNDgsMjM1LDE2OCwgMjEsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwKKyAgICAxNTMsMTEyLCAgMiwxNjgsIDM5LDE2OCwgNzQsMjI5LDEwMSwgIDIsMTY4LCA0NiwxNjgsIDYwLDIzNywyMjUsCisgICAgMjQyLDIzNSwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyNDIsMjQzLDIzMywyMzEsMjM4LAorICAgIDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDI0MywyMzMsMjI1LDEwNCwxMjgsMjQ2LDIyMSwKKyAgICAyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgMzYsMjQ2LDIzOSwyMjcsMjI1LDIzNiwyMzMsIDk5LCAgNCwxNjgsCisgICAgMTAzLDE2OCwxMTMsMTY4LDEyMCwxNjgsMTMxLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LAorICAgIDEzOSwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgMTEsMjMxLDI0NSwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwKKyAgICAxMjgsIDEwLDEzOSwyNDYsMjM5LDI0NywyMjksMjM2LDI0MywyMzMsMjMxLDExMCwgIDMsMTY4LDE0NywxNjgsCisgICAgMTU3LDE2OCwxNjQsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTk1LDIyOCwyMjksMjQ2LAorICAgICA5NywxMjgsICA5LCA2NywyMzEsMjQ1LDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTk1LDExNSwKKyAgICAxNDcsICAwLDExNSwxNjgsMjE3LDE3MCwxODcsMTcwLDE5OCwxNzEsIDY4LDE3MSwxMDcsMTc0LCA0OSwxNzQsCisgICAgIDYwLDE3NiwyMDMsMTc5LCA4NSwxNzksMTMxLDE3OSwxNTgsMTgwLCA5MywxODAsMTYwLDE4MSwxOTMsMTgxLAorICAgIDIwMywxODIsMTMzLDE4MiwyMDYsMTgzLDEyMCwxODMsMTMwLCA5NywgIDksMTY4LDIzNywxNjgsMjQ3LDE2OSwKKyAgICAgMTIsMTY5LCA4NCwxNjksMTA5LDE2OSwxMjAsMTY5LDE0NSwxNjksMTc3LDE2OSwyMTcsMjI2LDIyOSwyMzgsCisgICAgMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTg0LDIyNywyNDUsMjQ0LDEwMSwxMjksICAxLCA5MSwxNjksICAwLAorICAgIDIyOCwyMzksMjQ0LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgMzAsMTAxLDEwMCwgIDUsMTY5LCAyNCwKKyAgICAxNjksIDMzLDE2OSwgMzksMTY5LCA1MywxNjksIDY5LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsCisgICAgIDUzLDIyOSwyNDYsIDk3LDEyOCwgIDksIDU2LDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LAorICAgIDIzMywgOTksMTI4LDI1NCwxODYsMjMzLDIzOCwyMzMsMjQ0LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwKKyAgICAyMzMsIDk5LDEyOCwyNTQsMTg3LDIzNywyMjksMjI4LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsCisgICAgIDk5LDEyOCwyNTQsMTg4LDIzMSwxMTcsICAyLDE2OSwgOTEsMTY5LDEwMCwyMzQsMjI1LDI0MiwyMjUsMjQ0LAorICAgIDEwNSwxMjgsIDEwLDE4NCwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCA1NiwyMzIsMjMzLDI0MiwKKyAgICAyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDg1LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsCisgICAgMTI5LCA0OCwxODEsMTY5LDEzMywyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LAorICAgIDEyMywyMzYsMjM2LDIyNSwyMzYsMjM2LDIyNSwyMzIsMjM5LDI0NSwyMjUsMjM2LDIyNSwyNDksMjMyLDIyOSwKKyAgICAyNDcsMjI1LDI0MywyMjUsMjM2LDIzNiwyMjUsMjM3LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTMsCisgICAgMjUwLDIzNywyMjksMjM1LDEwNCwxMzAsICA1LDIyNSwxNjksMTg4LDE2OSwyMDgsMjI4LDIyNSwyMzEsMjI5LAorICAgIDI0MywxMDQsMTI5LDI1MSwgNjUsMTY5LDE5OSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLCA2NSwKKyAgICAyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIyNSwyNDIsIDk3LCAgNSwxNjksMjMwLDE3MCwgNDgsCisgICAgMTcwLCA1NiwxNzAsMTA2LDE3MCwxMTQsIDk3LCAgNSwxNjksMjQyLDE2OSwyNTAsMTcwLCAgMiwxNzAsIDMzLAorICAgIDE3MCwgNDEsMjI1LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCA1MCwyMjksMjQ0LDIzMiwyMjUsMTA1LDEyOCwKKyAgICAgMTQsIDY1LDIzMywyMzcsMjI1LDIzMywxMDksICAyLDE3MCwgMTIsMTcwLCAyMywyMjUsMjM2LDIyNSwyMzMsCisgICAgMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDY4LDI0NSwyMjUsMjM4LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LAorICAgICA2NywyMzcsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDUxLDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCA0OCwKKyAgICAyMjksMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDY0LDEwNSwgIDMsMTcwLCA2NCwxNzAsIDg4LDE3MCwgOTksCisgICAgMTA1LCAgMiwxNzAsIDcwLDE3MCwgODEsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyMzIsMjI1LDEwNSwxMjgsMjQ4LAorICAgIDEzNCwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNTMsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyMzIsMjI1LDEwNSwKKyAgICAxMjgsMjQ4LDEzMywyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNTIsMjM5LDI0NCwyMzIsMjI1LDEwNSwxMjgsCisgICAgIDE0LCA2NiwxMTcsICAzLDE3MCwxMjIsMTcwLDE3MiwxNzAsMTc5LDEwMSwgIDMsMTcwLDEzMCwxNzAsMTU0LAorICAgIDE3MCwxNjUsMTAxLCAgMiwxNzAsMTM2LDE3MCwxNDcsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyMzIsMjI1LDEwNSwKKyAgICAxMjgsMjQ4LDEzNiwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNTUsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyMzIsCisgICAgMjI1LDEwNSwxMjgsMjQ4LDEzNSwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNTQsMjQ0LDIzMiwyMjUsMTA1LAorICAgIDEyOCwgMTQsIDU2LDI0NSwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNTcsMjI2LDIzOSwyNDAsMjM5LDIzNywKKyAgICAyMzksMjMwLDExMSwxMjgsIDQ5LCAyNSwgOTksICA1LDE3MCwyMTAsMTcwLDIzMSwxNzAsMjQwLDE3MSwgMzMsCisgICAgMTcxLCA1NSwyMjUsMjQyLDIzOSwxMTAsMTI5LCAgMSwgOTcsMTcwLDIxOSwyMjgsMjM5LDI0NCwyMjUsMjI3LAorICAgIDIyNywyMjksMjM4LDExNiwxMjgsIDMwLDEwMywyMjksMjI4LDIzMywyMzYsMjM2LCA5NywxMjgsICAxLCA5NSwKKyAgICAyMzIsMjQ3LCA5NywxMzEsICAyLCA4OSwxNzAsMjUyLDE3MSwgIDcsMTcxLCAyNiwyMjcsMjQ5LDI0MiwyMzMsCisgICAgMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMjE3LDIyOCwyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywyNDMsMjI3LAorICAgIDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDIxOSwyMzIsMjM5LDIzOSwxMDcsMTI4LCAgMiwKKyAgICAgOTAsMjMzLDI0MiwgOTksICAyLDE3MSwgNDEsMTcxLCA0NiwyMzYsMTAxLDEyOCwgMzYsMjI2LDI0NSwyMzcsCisgICAgMjMwLDIzNiwyMjksMTIwLDEyOCwgIDEsIDkzLDIzOSwyMzcsMjM3LDIyNSwyMjUsMjI3LDIyNywyMjksMjM4LAorICAgIDExNiwxMjgsICAyLCAyNSwyMjgsMjM5LDExNiwgIDIsMTcxLCA3NiwxNzEsIDg1LDIyNSwyMjcsMjI3LDIyOSwKKyAgICAyMzgsMTE2LDEyOCwgMzAsIDk3LDIyNiwyMjksMjM2LDIzOSwxMTksMTI5LCAzMCwgOTksMTcxLCA5NSwyMjgsCisgICAgMjM5LDI0NCwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsIDMwLDEwNSwxMDEsICA5LDE3MSwxMjcsMTcxLAorICAgIDE0MywxNzEsMTc4LDE3MSwyNDMsMTcyLCA5MCwxNzIsMTE3LDE3MiwxNDIsMTcyLDIyMywxNzIsMjUwLDIyNSwKKyAgICAyMzEsMjQ1LDIzNiwyMzYsMjI2LDIyOSwyMzYsMjM5LDI0NywyMjcsMjM3LCA5OCwxMjgsICAzLCA2MCwgOTksCisgICAgICAyLDE3MSwxNDksMTcxLDE3MSwyMzksMjM4LDEwMCwxMjksIDMyLCA1MSwxNzEsMTU3LDI0NCwyMzksMjM4LAorICAgIDIyOSwyMjcsMjMyLDIzMywyMzgsMjI5LDI0MywxMDEsMTI4LCAgMiwyMDIsMjQ0LDIzMywyMzksMTEwLDEyOCwKKyAgICAgIDAsMTY3LDIyOSwxMTAsICA0LDE3MSwxODksMTcxLDE5OCwxNzEsMjEyLDE3MSwyMjgsMjI1LDI0MiwyMjUsCisgICAgMjI2LDIzMywgOTksMTI4LCAgNiwgNTEsMjMwLDIzMywyMzgsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLAorICAgICA5OSwxMjgsMjU0LDE3OCwyMzMsMjM4LDIzMywyNDQsMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywKKyAgICAgOTksMTI4LDI1NCwxNzksMjM3LDIyOSwyMjgsMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksCisgICAgMTI4LDI1NCwxODAsMjMxLDIzOSwxMDgsMTM1LCAgNSwxODIsMTcyLCAgNywxNzIsIDIxLDE3MiwgMjYsMTcyLAorICAgICAzNSwxNzIsIDUwLDE3MiwgNjYsMTcyLCA3NywgNDksICAyLDE3MiwgMTMsMTcyLCAxNywgNTEsMTI4LCAgNSwKKyAgICAxODIsMTAyLDEyOCwgIDUsMTgyLDE3OCwgOTksMTI4LCAgNSwxODIsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksCisgICAgMTI4LCAgNSwxODIsMjM4LDIyNSwyNDIsMjQyLDIzOSwyNDcsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LAorICAgICAgNSwxODIsMjQxLDI0NSwyMjUsMjQyLDI0NCwyMjksMjQyLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwKKyAgICAgIDUsMTgyLDI0NCwyMjUsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNDYsMjQ3LDIzMywyMjgsCisgICAgMjI5LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTgyLDEwNCwgIDIsMTcyLCA5NiwxNzIsMTA3LAorICAgIDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMjUsMjMzLDI0MiwyMjUsMjMxLDIyNSwKKyAgICAyMzgsIDk3LDEyOCwgNDgsIDkxLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwxODcsCisgICAgMTcyLDEzMCwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDEyNiwyMzcsMTA1LAorICAgICAgMiwxNzIsMTQ5LDE3MiwxOTIsMjI3LDIzOSwyMzYsMjM5LDExMCwxMzEsICAwLCA1OSwxNzIsMTYzLDE3MiwKKyAgICAxNzIsMTcyLDE4NCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCAyNywyMzcsMjM5LDIzOCwyMzksCisgICAgMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCAyNywyNDMsMjM3LDIyNSwyMzYsMTA4LDEyOCwyNTQsIDg0LAorICAgIDI0NiwyMzksMjMzLDIyNywyMjksMjI4LDIzNywyMjUsMjQyLDIzNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwKKyAgICAxNTYsMTcyLDIxMSwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDE1OSwyMzgsCisgICAgMTE2LCAgMiwxNzIsMjMwLDE3MiwyNDAsMjMzLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsIDM0LAorICAgIDIzOSwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLCAzNSwyNDYsMjI5LDExMCwxNDIsICAwLCA1NSwKKyAgICAxNzMsIDI4LDE3MywgMzcsMTczLCA0NywxNzMsIDc3LDE3MywgODQsMTczLCA5NCwxNzMsMTE5LDE3MywxNDYsCisgICAgMTczLDE4MCwxNzMsMTkyLDE3MywyMDMsMTczLDIzNiwxNzMsMjQ0LDE3MywyNTUsMjI1LDI0MiwyMjUsMjI2LAorICAgIDIzMywgOTksMTI4LCAgNiwxMDMsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMjM3LDIyNywKKyAgICAyMzMsMjQyLDIyNywyMzYsMTAxLDEyOSwgMzYsMTAyLDE3MywgNTgsMjMzLDIzOCwyNDYsMjI5LDI0MiwyNDMsCisgICAgMjI5LDI0MywyMjUsMjM4LDI0MywyNDMsMjI5LDI0MiwyMzMsMTAyLDEyOCwgMzksMTQ0LDIyOCwyMjksMjQ2LAorICAgICA5NywxMjgsICA5LDEwOSwyMjksMjMzLDIzMSwyMzIsMjQ0LDIzMiwxMTUsMTI4LCAzMywgOTQsMjMxLDExNywKKyAgICAgIDIsMTczLDEwMSwxNzMsMTEwLDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMjM3LDI0MiwyMzcsCisgICAgMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsMTA5LDIzMiwgOTcsICAyLDE3MywxMjYsMTczLDEzNywyMjcsMjM1LAorICAgIDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsMTAzLDIzOCwyMzEsMjUwLDIzMiwyMzksMTE3LDEyOCwKKyAgICAgNDgsIDM5LDEwNSwgIDIsMTczLDE1MiwxNzMsMTcwLDIyOCwyMjksMjM5LDIzMSwyNDIsMjI1LDI0MCwyMzIsCisgICAgMjMzLDIyNywyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgNTAsIDM4LDIzOCwyMzAsMjI5LDI0MiwyMzMsMjM5LAorICAgIDExNCwxMjgsIDMyLDEzNSwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCAyMywKKyAgICAyMzksMjM2LDIyOCwyNDMsMjQ0LDI0OSwyMzYsMTAxLDEyOCwyNDcsIDU1LDExMiwgIDIsMTczLDIwOSwxNzMsCisgICAgMjE2LDIyNSwyNDIsMjI5LDExMCwxMjgsIDM2LDEyMiwyMjksMTE0LCAgMiwxNzMsMjIzLDE3MywyMjksMjMzLAorICAgIDIzOSwxMDAsMTI4LCAzNiwxNDIsMjQzLDIzMywyMjUsMTEwLDEyOCwgIDYsMjQ3LDI0MiwyMzksMjM3LDIyNSwKKyAgICAxMTAsMTI4LCAzMywxMTgsMjQzLDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsIDMyLDExOSwxMTYsCisgICAgICAyLDE3NCwgIDUsMTc0LCA0MywyMjksMjI5LDExMCwgIDIsMTc0LCAxMywxNzQsIDIyLDIyNywyMzMsMjQyLAorICAgIDIyNywyMzYsMTAxLDEyOCwgMzYsMTEyLDExMiwgIDIsMTc0LCAyOCwxNzQsIDM1LDIyNSwyNDIsMjI5LDExMCwKKyAgICAxMjgsIDM2LDEzMiwyMjksMjQyLDIzMywyMzksMTAwLDEyOCwgMzYsMTUyLDIzMiwyMjUsMTA1LDEyOCwgMTQsCisgICAgIDg3LDIzMCwyNDQsMjMyLDI0OSwyNDAsMjMyLDIyOSwxMTAsMTI4LCAgMCwxNzMsMTA0LCAgNywxNzQsIDc2LAorICAgIDE3NSwgNTAsMTc1LCA2MSwxNzUsIDc1LDE3NiwgMjAsMTc2LCAzMywxNzYsMTk3LCA5NywgIDYsMTc0LCA5MCwKKyAgICAxNzQsMTAxLDE3NCwxMTEsMTc0LDEyMiwxNzUsICA5LDE3NSwgMzQsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsCisgICAgMjI1LDExMCwxMjgsICA1LDExOSwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwxODIsMjI3LAorICAgIDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA3MiwxMDAsICAyLDE3NCwxMjgsMTc0LDIyNCwKKyAgICAyMjgsIDk3LCAgNCwxNzQsMTM5LDE3NCwxNDgsMTc0LDE3OSwxNzQsMTkzLDIyNSwyNDIsMjI1LDIyNiwyMzMsCisgICAgIDk5LDEyOCwgIDYsIDgxLDIyOCwyMjUsMjM3LDIzNywgOTcsICAyLDE3NCwxNTgsMTc0LDE2NywyMjUsMjQyLAorICAgIDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUyLCA5NywyNDQsMjI1LDIzOCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwKKyAgICAxMjgsMjUyLCA5NCwyMzAsMjI1LDI0NCwyMzIsMjI1LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTIsCisgICAgIDk2LDIzNSwyMjUsMjQzLDI0MiwgOTcsICAyLDE3NCwyMDMsMTc0LDIxMiwyMjUsMjQyLDIyNSwyMjYsMjMzLAorICAgICA5OSwxMjgsMjUyLCA5OCwyNDQsMjI1LDIzOCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUyLCA5NSwKKyAgICAxMDEsMTMyLCAzNywxNDYsMTc0LDIzNiwxNzQsMjQzLDE3NCwyNTEsMTc1LCAgNCwyMjgsMjI1LDI0MiwxMDcsCisgICAgMTI4LCAzNywxNDcsMjM2LDIzMywyMzEsMjMyLDExNiwxMjgsIDM3LDE0NSwyMzcsMjI5LDIyOCwyMzMsMjQ1LAorICAgIDEwOSwxMjgsIDM3LDE0NiwyNDYsIDk3LDEyOCwgIDksIDU0LDIzMSwxMTcsICAyLDE3NSwgMTYsMTc1LCAyNSwKKyAgICAyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE4MiwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsCisgICAgIDEwLCA1NCwyMzYsMjQzLDIzMiwyMjksMjM2LDIyOSwyNDQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LAorICAgICAgNSwxNDcsMjI2LDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAyMSwyMjcsMjMyLDIyNSwKKyAgICAyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDczLDEwMSwgIDQsMTc1LCA4NSwxNzUsCisgICAgMTUwLDE3NSwxNjAsMTc1LDE3NywyMjksMTEwLCAgNCwxNzUsIDk2LDE3NSwxMDUsMTc1LDExOSwxNzUsMTM1LAorICAgIDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDUyLDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwKKyAgICAyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwxODIsMjMzLDIzOCwyMzMsMjQ0LDIzMywyMjUsMjM2LDIyNSwyNDIsCisgICAgMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTgzLDIzNywyMjksMjI4LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LAorICAgIDIyNiwyMzMsIDk5LDEyOCwyNTQsMTg0LDIzMywyMjcsMjM5LDI0MCwyNDQsMjMzLCA5OSwxMjgsICAzLDIyNywKKyAgICAyNDEsMjI5LDEwOCwxMjksIDMyLDE3MCwxNzUsMTY4LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgMzIsCisgICAgMTcwLDI0NiwgOTcsMTM0LCAgNSwxNzYsMTc1LDE5NCwxNzUsMjA5LDE3NSwyMjMsMTc1LDIzMiwxNzUsMjQ3LAorICAgIDE3NiwgIDcsIDQ5LCAgMiwxNzUsMjAwLDE3NSwyMDUsMTc3LCA1MywxMjgsICA1LDE3NiwgNTMsMTI4LCAgNSwKKyAgICAxNzYsIDUwLCAgMiwxNzUsMjE1LDE3NSwyMTksIDUwLDEyOCwgIDUsMTc2LDEwMSwxMjgsICA1LDE3NiwyMzIsCisgICAgMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE3NiwyMzgsMjI1LDI0MiwyNDIsMjM5LDI0NywyMzIsMjI5LAorICAgIDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE3NiwyNDEsMjQ1LDIyNSwyNDIsMjQ0LDIyOSwyNDIsMjMyLDIyOSwKKyAgICAyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNzYsMjQ3LDIzMywyMjgsMjI5LDIzMiwyMjksMjI2LDI0MiwyMjksCisgICAgMTE5LDEyOCwgIDUsMTc2LDIzMiwyMjUsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LAorICAgIDE4NywxMDUsICAyLDE3NiwgMzksMTc2LCA1MCwyMzcsMjI1LDIyNywyMzksMjQwLDI0NCwyMzMsIDk5LDEyOCwKKyAgICAgIDMsMjM3LDExMCwxMzEsICA1LDIzMywxNzYsIDYwLDE3NiwxNDMsMTc2LDE1MiwxMDAsICAyLDE3NiwgNjYsCisgICAgMTc2LDEzMiwyMjUsMjMxLDIyOSwyNDMsMTA0LDEzMCwyNTEsIDczLDE3NiwgNzgsMTc2LCA4NywyMzIsMjI5LAorICAgIDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLCA3MywxMTUsICAyLDE3NiwgOTMsMTc2LDExMywyMzIsMjMzLDIzOCwKKyAgICAyMjgsMjM5LDExNiwxMjksMjUxLCA0NCwxNzYsMTA0LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwyNTEsCisgICAgIDQ0LDIzMywyMzgsMjI4LDIzOSwxMTYsMTI5LDI1MSwgNDUsMTc2LDEyMywyMzIsMjI5LDIyNiwyNDIsMjI5LAorICAgIDExOSwxMjgsMjUxLCA0NSwyMzksMjQ0LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTkzLDIzMiwKKyAgICAyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMjMzLDExNSwgIDIsMTc2LDE1OCwxNzYsMTc4LDIzMiwyMzMsCisgICAgMjM4LDIyOCwyMzksMTE2LDEyOSwyNTEsIDQyLDE3NiwxNjksMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LAorICAgIDI1MSwgNDIsMjMzLDIzOCwyMjgsMjM5LDExNiwxMjksMjUxLCA0MywxNzYsMTg4LDIzMiwyMjksMjI2LDI0MiwKKyAgICAyMjksMTE5LDEyOCwyNTEsIDQzLDIzOSwyMzksMTA3LDEyOCwgIDIsMTMwLDEwNSwgIDgsMTc2LDIyMSwxNzcsCisgICAgICA5LDE3NywgMjAsMTc3LCA0NSwxNzcsIDc1LDE3NywgODMsMTc3LCA5NiwxNzgsIDExLDIzMSwyMzcsIDk3LAorICAgIDEzMSwgIDMsMTk1LDE3NiwyMzMsMTc2LDIzNywxNzYsMjQ1LCA0OSwxMjgsICAzLDE5NCwyMzAsMjMzLDIzOCwKKyAgICAyMjUsMTA4LDEyOCwgIDMsMTk0LDIzNiwyNDUsMjM4LDIyNSwyNDQsMjI5LDI0MywyNDksMjM3LDIyNiwyMzksCisgICAgMjM2LDIzMSwyNDIsMjI5LDIyOSwxMDcsMTI4LCAgMywyNDIsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LAorICAgICA5NywxMjgsIDQ4LCA4NywyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsMTgzLDE3NywKKyAgICAgMzMsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwxMjQsMjM2LDI0NSwxMTMsCisgICAgICAyLDE3NywgNTMsMTc3LCA2MiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE4OSwyMzYsMjI5LAorICAgIDIzMCwyNDQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxODksMjM3LDIzMywyMzYsMjI1LDExNCwKKyAgICAxMjgsIDM0LCA2MCwyMzgsMjI4LDIzOSwyNDQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxOTQsCisgICAgMjM5LDExNSwgIDYsMTc3LDExMSwxNzcsMTQ2LDE3NywxNzgsMTc3LDIwNiwxNzcsMjIwLDE3NywyNTIsIDk3LAorICAgICAgMiwxNzcsMTE3LDE3NywxMzIsMjI3LDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LDIzOSwyNDIsMjI5LDIyNSwKKyAgICAxMTAsMTI4LCA1MCwxMTYsMjQwLDIyNSwyNDIsMjI5LDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsCisgICAgIDUwLCAyMCwyMjcsMTA1LCAgMiwxNzcsMTUzLDE3NywxNjUsMjI5LDI0NSwyMjcsMjM1LDIzOSwyNDIsMjI5LAorICAgIDIyNSwxMTAsMTI4LCA0OSwxMjYsMjQyLDIyNywyMzYsMjI5LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwKKyAgICAgNTAsMTAyLDEwNywgIDIsMTc3LDE4NCwxNzcsMTk4LDIzMywyNDksMjI5LDIzOSwyMzUsMjM1LDIzOSwyNDIsCisgICAgMjI5LDIyNSwxMTAsMTI4LCA0OSwxMjIsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LCA2OSwyMzgsMjMzLAorICAgIDIyOSwyNDUsMjM4LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTIzLDExMiwgIDIsMTc3LDIyNiwKKyAgICAxNzcsMjM5LDIyNSwyNDIsMjI5LDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLCAgNiwyMzMsCisgICAgMjI5LDI0NSwyNDAsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxMjUsMjQ0LDIzMywyMzUsMjI5LAorICAgIDI0NSwyNDQsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxMjQsMTIwLDE0MSwgIDAsIDU0LDE3OCwKKyAgICAgNDEsMTc4LCA1MCwxNzgsIDYwLDE3OCwgOTAsMTc4LCA5NywxNzgsMTIyLDE3OCwxNDksMTc4LDE4MywxNzgsCisgICAgMTk1LDE3OCwyMDYsMTc4LDIzOSwxNzgsMjQ3LDE3OSwgIDIsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LAorICAgICAgNiwxMDIsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMjM2LDIyNywyMzMsMjQyLDIyNywKKyAgICAyMzYsMTAxLDEyOSwgMzYsMTAxLDE3OCwgNzEsMjMzLDIzOCwyNDYsMjI5LDI0MiwyNDMsMjI5LDI0MywyMjUsCisgICAgMjM4LDI0MywyNDMsMjI5LDI0MiwyMzMsMTAyLDEyOCwgMzksMTQzLDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LAorICAgIDEwOCwyMzEsMTE3LCAgMiwxNzgsMTA0LDE3OCwxMTMsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwKKyAgICAyMzYsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwxMDgsMjMyLCA5NywgIDIsMTc4LDEyOSwxNzgsCisgICAgMTQwLDIyNywyMzUsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwxMDIsMjM4LDIzMSwyNTAsMjMyLAorICAgIDIzOSwxMTcsMTI4LCA0OCwgMzgsMTA1LCAgMiwxNzgsMTU1LDE3OCwxNzMsMjI4LDIyOSwyMzksMjMxLDI0MiwKKyAgICAyMjUsMjQwLDIzMiwyMzMsMjI3LDI0MCwyMjUsMjQyLDIyOSwxMTAsMTI4LCA1MCwgMzcsMjM4LDIzMCwyMjksCisgICAgMjQyLDIzMywyMzksMTE0LDEyOCwgMzIsMTM0LDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLAorICAgIDEyOCwyNTUsIDIyLDIzOSwyMzYsMjI4LDI0MywyNDQsMjQ5LDIzNiwxMDEsMTI4LDI0NywgNTQsMTEyLCAgMiwKKyAgICAxNzgsMjEyLDE3OCwyMTksMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTIxLDIyOSwxMTQsICAyLDE3OCwyMjYsCisgICAgMTc4LDIzMiwyMzMsMjM5LDEwMCwxMjgsIDM2LDE0MSwyNDMsMjMzLDIyNSwxMTAsMTI4LCAgNiwyNDYsMjQyLAorICAgIDIzOSwyMzcsMjI1LDExMCwxMjgsIDMzLDExNywyNDMsMjQ1LDI0MCwyMjksMjQyLDIzMywyMzksMTE0LDEyOCwKKyAgICAgMzIsMTE4LDExNiwgIDIsMTc5LCAgOCwxNzksIDc5LDIyOSwyMjksMTEwLCAgMiwxNzksIDE2LDE3OSwgNTgsCisgICAgIDk5LCAgMiwxNzksIDIyLDE3OSwgMzAsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsIDM2LDExMSwyNDUsMjQyLAorICAgIDI0MiwyMjksMjM4LDIyNywyNDksMjI4LDIyOSwyMzgsMjM5LDIzNywyMzMsMjM4LDIyNSwyNDQsMjM5LDI0MiwKKyAgICAyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyNDksMTEyLCAgMiwxNzksIDY0LDE3OSwgNzEsCisgICAgMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTMxLDIyOSwyNDIsMjMzLDIzOSwxMDAsMTI4LCAzNiwxNTEsMjMyLAorICAgIDIyNSwxMDUsMTI4LCAxNCwgODYsMTA4LCAgMiwxNzksIDkxLDE3OSwxMTEsMjI1LDI0MywxMDQsMTI5LCAgMCwKKyAgICAgNDcsMTc5LCA5OSwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCAxNSwyMzksCisgICAgMjM4LDEwMywxMjksICAxLDEyNywxNzksMTE5LDIyOCwyMzksMjQ0LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LAorICAgIDEyOCwgMzAsMTU1LDEwOSwgIDIsMTc5LDEzNywxNzksMTQ3LDIzMywyMzYsMjI5LDIzMCwyMjUsMjI3LDEwMSwKKyAgICAxMjgsIDM4LCA1OCwyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDgzLDExMSwgIDYsCisgICAgMTc5LDE3MiwxNzksMjIyLDE3OSwyMzMsMTgwLCAgMiwxODAsIDQ3LDE4MCwgNTgsMTAyLCAgMiwxNzksMTc4LAorICAgIDE3OSwxOTIsMjQwLDIyNSwyNDMsMjQ1LDI0MSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE5NSwKKyAgICAxMTYsICAyLDE3OSwxOTgsMTc5LDIwNywyMzIsMjQ5LDI0MCwyMzIsMjI5LDExMCwxMjgsICAwLDE3MywyNDMsCisgICAgMjMzLDIzMSwyMzgsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA3NiwyMzIsMjMzLAorICAgIDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDkzLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwKKyAgICAgOTcsMTI5LCA0OCwxODksMTc5LDI0NiwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsCisgICAgMjU1LDEyNywyMzYsMjMzLDIyOCwyNDUsMTE1LCAgMiwxODAsIDEyLDE4MCwgMjksMjM2LDIzOSwyMzgsMjMxLAorICAgIDIzOSwyNDYsMjI5LDI0MiwyMzYsMjI1LDI0OSwyMjcsMjM3LCA5OCwxMjgsICAzLCA1NiwyNDMsMjMyLDIzOSwKKyAgICAyNDIsMjQ0LDIzOSwyNDYsMjI5LDI0MiwyMzYsMjI1LDI0OSwyMjcsMjM3LCA5OCwxMjgsICAzLCA1NSwyNDIsCisgICAgMjQ1LDI0MywyMzMsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDQxLDExNSwgIDMsMTgwLCA2NiwxODAsIDc2LAorICAgIDE4MCwgODQsMjI1LDIzNiwyMjUsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDQwLDIzOSwyNDQsMjMyLDIyNSwKKyAgICAxMDUsMTI4LCAxNCwgMTEsMjQ1LDIyNSwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgNDIsMjQwLCA5NywgIDMsCisgICAgMTgwLDEwMiwxODAsMTIyLDE4MCwxNTQsMjI3LDEwMSwxMjksICAwLCAzMiwxODAsMTA5LDIzMiwyMjUsMjI3LAorICAgIDIzNSwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICAwLCAzMiwyMjgsMTAxLDEyOSwgMzgsIDk2LDE4MCwKKyAgICAxMjksMjQzLDI0NSwyMzMsMTE2LCAgMiwxODAsMTM4LDE4MCwxNDYsMjI2LDIzNiwyMjUsMjI3LDEwNywxMjgsCisgICAgIDM4LCA5NiwyNDcsMjMyLDIzMywyNDQsMTAxLDEyOCwgMzgsMTAwLDI0MiwyMjksMTEwLDEyOCwgMzYsMTc0LAorICAgIDI0MSwyNDUsMjI1LDI0MiwxMDEsIDExLDE4MCwxODgsMTgwLDE5OSwxODAsMjEzLDE4MCwyMzgsMTgwLDI1NSwKKyAgICAxODEsIDI1LDE4MSwgNDAsMTgxLCA3MywxODEsMTAwLDE4MSwxNTYsMTgxLDE3MSwyMjYsMjI5LDIzNiwyMzksCisgICAgMjQ3LDIyNywyMzcsIDk4LDEyOCwgIDMsIDU5LCA5OSwgIDIsMTgwLDIwNSwxODAsMjA5LCA5OSwxMjgsIDUxLAorICAgIDE5NiwxMDksMTI4LCA1MSwxNTcsMjI4LDIzMywyMjUsMjMxLDIzOSwyMzgsMjI1LDIzNiwyMjcsMjQyLDIzOSwKKyAgICAyNDMsMjQzLDIzMiwyMjUsMjQ0LDIyNywyMzIsMjMwLDIzMywyMzYsMTA4LDEyOCwgMzcsMTY5LDIzMiwyMzksCisgICAgMjQyLDIzMywyNTAsMjM5LDIzOCwyNDQsMjI1LDIzNiwyMzAsMjMzLDIzNiwxMDgsMTI4LCAzNywxNjQsMTA3LAorICAgICAgMiwxODEsICA1LDE4MSwgIDksMTAzLDEyOCwgNTEsMTQzLDEwOSwxMjksIDUxLDE1OCwxODEsIDE1LDIyNywKKyAgICAyMjUsMjQwLDIzMywyNDQsMjI1LDEwOCwxMjgsIDUxLDIwNiwxMDgsICAyLDE4MSwgMzEsMTgxLCAzNSwxMTAsCisgICAgMTI4LCA1MSwyMDksMjM5LDEwMywxMjgsIDUxLDIxMCwxMDksICA0LDE4MSwgNTAsMTgxLCA1NCwxODEsIDU5LAorICAgIDE4MSwgNjMsMTAzLDEyOCwgNTEsMTQyLDIzMywxMDgsMTI4LCA1MSwyMTMsMTA5LDEyOCwgNTEsMTU2LDI0MywKKyAgICAyNDEsMjQ1LDIyNSwyNDIsMjI5LDEwMCwxMjgsIDUxLDE2MSwyMzksMjQyLDI0NCwyMzIsMjM5LDIzMSwyMzksCisgICAgMjM4LDIyNSwyMzYsMjI3LDI0MiwyMzksMjQzLDI0MywyMzIsMjI1LDI0NCwyMjcsMjMyLDIzMCwyMzMsMjM2LAorICAgIDEwOCwxMjgsIDM3LDE2NiwyNDUsMjQwLDI0MCwyMjksMTE0LCAgMiwxODEsMTEwLDE4MSwxMzMsMjM2LDIyOSwKKyAgICAyMzAsMjQ0LDI0NCwyMzksMjM2LDIzOSwyNDcsMjI5LDI0MiwyNDIsMjMzLDIzMSwyMzIsMjQ0LDIzMCwyMzMsCisgICAgMjM2LDEwOCwxMjgsIDM3LDE2NywyNDIsMjMzLDIzMSwyMzIsMjQ0LDI0NCwyMzksMjM2LDIzOSwyNDcsMjI5LAorICAgIDI0MiwyMzYsMjI5LDIzMCwyNDQsMjMwLDIzMywyMzYsMTA4LDEyOCwgMzcsMTY4LDI0NiwyMjksMjQyLDI0NCwKKyAgICAyMzMsMjI3LDIyNSwyMzYsMjMwLDIzMywyMzYsMTA4LDEyOCwgMzcsMTY1LDI0NywyMzIsMjMzLDI0NCwyMjksCisgICAgMjQ3LDIzMywyNDQsMjMyLDI0MywyMzcsMjI1LDIzNiwyMzYsMjI2LDIzNiwyMjUsMjI3LDEwNywxMjgsIDM3LAorICAgIDE2MywyNDIsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwyMTksMTE1LCAgMiwxODEsMjA5LDE4MiwKKyAgICAxMjMsIDk3LCAgNCwxODEsMjE5LDE4MSwyMjksMTgxLDIzNiwxODEsMjQ3LDIyNiwyMjksMjM4LDIzMSwyMjUsCisgICAgMjM2LDEwNSwxMjgsICA5LDE4MywyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNTUsMjMxLDI0NSwyMzQsMjI1LAorICAgIDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE4MywyMzgsMTAzLCAgOCwxODIsIDEwLDE4MiwgMjQsMTgyLCAzOCwKKyAgICAxODIsIDUyLDE4MiwgNjcsMTgyLCA4MSwxODIsIDk1LDE4MiwxMDgsMjI3LDIzMywyMjksMjQ1LDIyNywyMzUsCisgICAgMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LCA3MywyMzIsMjMzLDIyOSwyNDUsMjMyLDIzNSwyMzksMjQyLAorICAgIDIyOSwyMjUsMTEwLDEyOCwgNDksMTMzLDIzMywyMjksMjQ1LDIzOCwyMzEsMjM1LDIzOSwyNDIsMjI5LDIyNSwKKyAgICAxMTAsMTI4LCA0OSwxMjgsMjM1LDIzMywyNDksMjI5LDIzOSwyMzUsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsCisgICAgMTI4LCA0OSwgNTAsMjM4LDIzMywyMjksMjQ1LDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LAorICAgIDEwMSwyNDAsMjMzLDIyOSwyNDUsMjQwLDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksIDY3LDI0MywKKyAgICAyMzMsMjM5LDI0MywyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LCA3MCwyNDQsMjMzLDIzNSwyMjksCisgICAgMjQ1LDI0NCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LCA1NiwyNDUsMjQwLDIyOSwyNDIsMjMzLAorICAgIDIzOSwxMTQsMTI4LDI0NiwyNDIsMTE2LCAgMiwxODIsMTM5LDE4MiwxNjIsMjI5LDI0MiwyMzYsMjMzLDIzOCwKKyAgICAxMDMsMTI5LCAgMCwxNjMsMTgyLDE1MCwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsCisgICAgMjU1LDIyNSwyNDIsMjM5LDIzNSwxMDEsICAyLDE4MiwxNzEsMTgyLDE4OCwyMzYsMjM5LDIzOCwyMzEsMjM5LAorICAgIDI0NiwyMjksMjQyLDIzNiwyMjUsMjQ5LDIyNywyMzcsIDk4LDEyOCwgIDMsIDU0LDI0MywyMzIsMjM5LDI0MiwKKyAgICAyNDQsMjM5LDI0NiwyMjksMjQyLDIzNiwyMjUsMjQ5LDIyNywyMzcsIDk4LDEyOCwgIDMsIDUzLDExNywgIDcsCisgICAgMTgyLDIyMiwxODIsMjU0LDE4MywgMjAsMTgzLCAzMSwxODMsIDcyLDE4MywgODIsMTgzLCA4NiwyMjYsMjQzLAorICAgIDIyOSwxMTYsMTMwLCAzNCwxMzAsMTgyLDIzMywxODIsMjQ0LDIzOCwyMzksMjQ0LDIyOSwyNDEsMjQ1LDIyNSwKKyAgICAxMDgsMTI4LCAzNCwxMzgsMjM5LDI0MiwyMjksMjQxLDI0NSwyMjUsMTA4LDEyOCwgMzQsMTM0LCA5OSwgIDIsCisgICAgMTgzLCAgNCwxODMsIDEyLDIyNywyMjksMjI5LDIyOCwxMTUsMTI4LCAzNCwxMjMsMjMyLDI0NCwyMzIsMjI1LAorICAgIDExNiwxMjgsIDM0LCAxMSwyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDg5LDEwNywKKyAgICAgIDIsMTgzLCAzNywxODMsIDYxLDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDE4NSwxODMsCisgICAgIDQ5LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTI1LDI0NSwyMzgsMjI1LAorICAgIDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwgODIsMjM3LDIzNywyMjUsMjQ0LDIzMywyMzksMTEwLDEyOCwKKyAgICAgMzQsIDE3LDExMCwxMjgsIDM4LCA2MCwyNDAsMjI5LDI0MiwyNDMsMjI5LDExNiwxMzAsIDM0LDEzMSwxODMsCisgICAgIDk5LDE4MywxMTAsMjM4LDIzOSwyNDQsMjI5LDI0MSwyNDUsMjI1LDEwOCwxMjgsIDM0LDEzOSwyMzksMjQyLAorICAgIDIyOSwyNDEsMjQ1LDIyNSwxMDgsMTI4LCAzNCwxMzUsMjQ2LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwKKyAgICAgNTEsMjIwLDI0OSwyMzksMjQ1LDI0NywyMjUsMjI5LDI0MiwyMjUsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsCisgICAgMTI4LCA1MSwxMjQsMTE2LDE0NCwgIDAsMTE2LDE4MywxODMsMTg0LDE5MiwxODQsMjEzLDE4NSwxMDAsMTg1LAorICAgIDE0MCwxODcsMTg4LDE5MSwgNzAsMTkyLDE0NSwxOTIsMTU3LDE5MiwxNjksMTkzLDIwMiwxOTMsMjI3LDE5NCwKKyAgICAgNTcsMTk0LDIzNywxOTUsMTY1LDE5NSwyNTUsIDk3LCAxMCwxODMsMjA1LDE4MywyMTUsMTgzLDIzNiwxODMsCisgICAgMjQzLDE4NCwgMTIsMTg0LCA5MCwxODQsMTA3LDE4NCwxMzIsMTg0LDE0NiwxODQsMTUwLDIyNiwyMjksMjM4LAorICAgIDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDE2NCwyMjcsMTA3LCAgMiwxODMsMjIyLDE4MywyMjksMjI4LDIzOSwKKyAgICAyNDcsMTEwLDEyOCwgMzQsMTY0LDIzNiwyMjksMjMwLDExNiwxMjgsIDM0LDE2MywyMjgsMjI5LDI0NiwgOTcsCisgICAgMTI4LCAgOSwgMzYsMjMxLDExNywgIDIsMTgzLDI1MCwxODQsICAzLDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LAorICAgIDEyOCwgMTAsMTY0LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDM2LDEwNCwgIDQsMTg0LCAyMiwKKyAgICAxODQsIDMxLDE4NCwgNDUsMTg0LCA3NSwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA1NSwyMzAsCisgICAgMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTk0LDEwNSwgIDIsMTg0LAorICAgICA1MSwxODQsIDY2LDIzOCwyMzMsMjQ0LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwKKyAgICAyNTQsMTk1LDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDk1LDIzNywyMjksMjI4LDIzMywyMjUsCisgICAgMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTk2LDIzMywyNDMsMjQ5LDIzOSwyNDUsMjI5LAorICAgIDI0MiwyMjUsMjQzLDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwxMjUsMjM1LDIyNSwyNDQsMjI1LDIzNSwKKyAgICAyMjUsMjM4LCA5NywxMjksIDQ4LDE5MSwxODQsMTIwLDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsCisgICAgMTA0LDEyOCwyNTUsMTI4LDI0NCwyNDcsMjI5LDIyOSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LAorICAgICAgNiwgNjQsMTE3LDEyOCwgIDMsMTk2LDExOCwxMzAsICA1LDIzNCwxODQsMTU4LDE4NCwxODMsMjI4LDIyNSwKKyAgICAyMzEsMjI5LDExNSwxMjksMjUxLCA3NCwxODQsMTY4LDEwNCwxMjksMjUxLCA3NCwxODQsMTc0LDIzMiwyMjksCisgICAgMjI2LDI0MiwyMjksMTE5LDEyOCwyNTEsIDc0LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMjM0LAorICAgICA5OCwgIDIsMTg0LDE5OCwxODQsMjAzLDIyNSwxMTQsMTI4LCAgMSwxMDMsMjM5LDI0MCwyMzksMjM3LDIzOSwKKyAgICAyMzAsMTExLDEyOCwgNDksIDEwLCA5OSwgIDYsMTg0LDIyNywxODQsMjM0LDE4NCwyNDEsMTg0LDI1MCwxODUsCisgICAgIDYwLDE4NSwgODcsMjI1LDI0MiwyMzksMTEwLDEyOCwgIDEsMTAxLDIyNywyNDUsMjQyLDEwOCwxMjgsICAyLAorICAgIDE2OCwyMjksMjI4LDIzMywyMzYsMjM2LCA5NywxMjgsICAxLCA5OSwyMzIsMjI5LDEwNCwgIDQsMTg1LCAgNiwKKyAgICAxODUsIDE1LDE4NSwgMjksMTg1LCA0NSwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LDEzNCwyMzAsCisgICAgMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTEsMTIzLDIzMywyMzgsMjMzLAorICAgIDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUxLDEyNCwyMzcsMjI5LDIyOCwKKyAgICAyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUxLDEyNSwyMzMsMjQyLCA5OSwgIDIsCisgICAgMTg1LCA2OCwxODUsIDczLDIzNiwxMDEsMTI4LCAzNiwyMjcsMjQ1LDIzNywyMzAsMjM2LDIyOSwyNDgsMjI2LAorICAgIDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDExMywyMzksMjM3LDIzNywyMjUsMjI1LDIyNywyMjcsMjI5LDIzOCwKKyAgICAxMTYsMTI4LCAgMSwgOTksMTAwLCAgMiwxODUsMTA2LDE4NSwxMTYsMjMzLDIyOSwyNDIsMjI5LDI0MywyMzMsCisgICAgMTE1LDEyOCwgMzAsMTUxLDIzOSwxMTYsICAyLDE4NSwxMjMsMTg1LDEzMiwyMjUsMjI3LDIyNywyMjksMjM4LAorICAgIDExNiwxMjgsIDMwLDEwNywyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMTA5LDEwMSwgIDksMTg1LDE2MCwKKyAgICAxODUsMTcxLDE4NSwxOTEsMTg2LDIwMSwxODYsMjI2LDE4NywgMzQsMTg3LDEwMSwxODcsMTA2LDE4NywxNTgsCisgICAgMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA2NiwyMjgsMjI5LDI0MywyMjcsMjI5LAorICAgIDIzOCwyMjgsMjI5LDI0MiwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTczLDEwNCwKKyAgICAgIDcsMTg1LDIwNywxODUsMjE2LDE4NSwyMzAsMTg2LCAxNCwxODYsIDQ0LDE4NiwgODUsMTg2LDE4MywyMjUsCisgICAgMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA0MiwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LAorICAgIDIyNiwyMzMsIDk5LDEyOCwyNTQsMTUwLDIzMiwyMjUsMjMyLDEwNSwgIDIsMTg1LDIzOSwxODUsMjU0LDIzOCwKKyAgICAyMzMsMjQ0LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTIsMTYyLDI0MywyMzksCisgICAgMjM2LDIyNSwyNDQsMjI5LDIyOCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUyLCAxMiwxMDUsICAyLAorICAgIDE4NiwgMjAsMTg2LCAzNSwyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwKKyAgICAxMjgsMjU0LDE1MSwyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDEwMiwyMzQsMjI5LDIyOSwyMzcsCisgICAgMTA1LCAgMiwxODYsIDU0LDE4NiwgNjksMjM4LDIzMywyNDQsMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LAorICAgIDIzMywgOTksMTI4LDI1MiwxNjEsMjQzLDIzOSwyMzYsMjI1LDI0NCwyMjksMjI4LDIyNSwyNDIsMjI1LDIyNiwKKyAgICAyMzMsIDk5LDEyOCwyNTIsIDExLDEwOSwgIDIsMTg2LCA5MSwxODYsMTI1LDIyNSwyNDIsMjI2LDI0NSwyNDQsCisgICAgIDk3LCAgMiwxODYsMTAyLDE4NiwxMTEsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwgNDEsMjMwLAorICAgIDIzMywyMzgsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDE0OCwxMDEsICAyLDE4NiwKKyAgICAxMzEsMTg2LDE0NCwyMjgsMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwxNTIsCisgICAgMjI5LDIzNywxMDUsICAyLDE4NiwxNTIsMTg2LDE2NywyMzgsMjMzLDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLAorICAgIDIyNSwyMjYsMjMzLCA5OSwxMjgsMjUyLDE2NCwyNDMsMjM5LDIzNiwyMjUsMjQ0LDIyOSwyMjgsMjI1LDI0MiwKKyAgICAyMjUsMjI2LDIzMywgOTksMTI4LDI1MiwgMTQsMjM4LDIzOSwyMzksMjM4LDIzMCwyMzMsMjM4LDIyNSwyMzYsCisgICAgMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MiwxMTUsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LAorICAgICA5NywxMjksIDQ4LDE5OCwxODYsMjE0LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwKKyAgICAyNTUsMTMxLDEwOCwgIDIsMTg2LDIzMiwxODYsMjUxLDIyOSwyNDAsMjMyLDIzOSwyMzgsMTAxLDEyOSwgMzMsCisgICAgIDMzLDE4NiwyNDMsMjI2LDIzNiwyMjUsMjI3LDEwNywxMjgsIDM4LCAxNCwyMzMsMjQzLDIzMiwgOTcsICAyLAorICAgIDE4NywgIDQsMTg3LCAxOSwyMzEsMjI5LDIyOCwyMzksMjM2LDIyNSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwKKyAgICAxMjgsICA1LDE2MCwyNDEsMjI5LDI0NCwyMjUsMjM4LDIyNSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsCisgICAgICA1LDE2OSwxMTAsICA0LDE4NywgNDQsMTg3LCA1MywxODcsIDcyLDE4NywgOTMsMjI3LDIzMywyNDIsMjI3LAorICAgIDIzNiwxMDEsMTI4LCAzNiwxMDUsMjMzLDIyOCwyMjksMjM5LDIzMSwyNDIsMjI1LDI0MCwyMzIsMjMzLDIyNywKKyAgICAyNDAsMjI1LDI0MiwyMjksMTEwLDEyOCwgNTAsIDQxLDExMiwgIDIsMTg3LCA3OCwxODcsIDg1LDIyNSwyNDIsCisgICAgMjI5LDExMCwxMjgsIDM2LDEyNSwyMjksMjQyLDIzMywyMzksMTAwLDEyOCwgMzYsMTQ1LDI0MiwyMzksMjM3LAorICAgIDIyNSwxMTAsMTI4LCAzMywxMjEsMjQzLDEwNCwxMjgsICAyLDE2NywxMTYsMTMxLCAgNSwyMTYsMTg3LDExNiwKKyAgICAxODcsMTM2LDE4NywxNDUsMjI4LDIyNSwyMzEsMjI5LDI0MywxMDQsMTI5LDI1MSwgNTYsMTg3LDEyNywyMzIsCisgICAgMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLCA1NiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LAorICAgIDIxNiwyNDMsMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxODEsMjQ2LDIzMywKKyAgICAxMTQsICAyLDE4NywxNjYsMTg3LDE3NSwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE1NSwyMzYsCisgICAgMjI5LDIzMCwyNDQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNTUsMTA0LCAgNiwxODcsMjAyLAorICAgIDE4OCwgOTgsMTg4LDIyMCwxODksIDk2LDE5MCwgIDMsMTkxLCA2MCwgOTcsICA1LDE4NywyMTQsMTg3LDIyNCwKKyAgICAxODcsMjMxLDE4OCwgIDAsMTg4LCAyOSwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwxNjUsCisgICAgMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDM3LDIzMSwxMTcsICAyLDE4NywyMzgsMTg3LDI0NywyMzQsMjI1LAorICAgIDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE2NSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCAzNywKKyAgICAxMDgsICAyLDE4OCwgIDYsMTg4LCAxNSwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA0OCwyMzAsCisgICAgMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTcyLDIzOCwyNDQsMjMyLAorICAgIDIyNSwyMzUsMjMyLDIyNSwxMTYsICAzLDE4OCwgNDQsMTg4LCA3NSwxODgsIDgyLDIzNiwyMzksMTE5LCAgMiwKKyAgICAxODgsIDUyLDE4OCwgNjMsMjM2LDIyOSwyMzAsMjQ0LDI0NCwyMzIsMjI1LDEwNSwxMjgsMjQ4LDE1MiwyNDIsCisgICAgMjMzLDIzMSwyMzIsMjQ0LDI0NCwyMzIsMjI1LDEwNSwxMjgsMjQ4LDE1MSwyNDQsMjMyLDIyNSwxMDUsMTI4LAorICAgICAxNCwgNzYsMjQ1LDI0MCwyNDAsMjI5LDI0MiwyMzYsMjI5LDIzMCwyNDQsMjQ0LDIzMiwyMjUsMTA1LDEyOCwKKyAgICAyNDgsMTUwLDEwMSwgIDMsMTg4LDEwNiwxODgsMTcwLDE4OCwxOTMsMTA0LCAgNCwxODgsMTE2LDE4OCwxMjUsCisgICAgMTg4LDEzOSwxODgsMTU1LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDQzLDIzMCwyMzMsMjM4LAorICAgIDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwxNTQsMjMzLDIzOCwyMzMsMjQ0LDIzMywKKyAgICAyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTU1LDIzNywyMjksMjI4LDIzMywyMjUsCisgICAgMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTU2LDI0MiwxMDEsICAyLDE4OCwxNzcsMTg4LAorICAgIDE4NiwyMjksMjQ4LDIzMywyNDMsMjQ0LDExNSwxMjgsIDM0LCAgMywyMzAsMjM5LDI0MiwxMDEsMTI4LCAzNCwKKyAgICAgNTIsMjQ0LCA5NywxMzAsICAzLDE4NCwxODgsMjAyLDE4OCwyMDYsIDQ5LDEyOCwgIDMsMjA5LDI0MywyNDksCisgICAgMjM3LDIyNiwyMzksMjM2LDIzMSwyNDIsMjI5LDIyOSwxMDcsMTI4LCAgMywyMDksMTA1LCAgMiwxODgsMjI2LAorICAgIDE4OSwgNTYsMjI5LDI0NSwyNDQsMTA0LCAgNCwxODgsMjM5LDE4OSwgMTgsMTg5LCAzMywxODksIDQyLCA5NywKKyAgICAgIDIsMTg4LDI0NSwxODksICA0LDIyNywyMzMsMjQyLDIyNywyMzYsMjI5LDIzNSwyMzksMjQyLDIyOSwyMjUsCisgICAgMTEwLDEyOCwgNTAsMTIxLDI0MCwyMjUsMjQyLDIyOSwyMzgsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LAorICAgICA1MCwgMjUsMjI3LDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwKKyAgICAxMDcsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgNzYsMjQwLDIyNSwyNDIsMjI5LDIzOCwyMzUsCisgICAgMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLCAxMSwyNDIsMjQ0LDIyOSwyMjksMTEwLCAgMiwxODksIDY2LAorICAgIDE4OSwgNzUsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI4LCAzNiwxMDgsMTEyLCAgMiwxODksIDgxLDE4OSwKKyAgICAgODgsMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTI4LDIyOSwyNDIsMjMzLDIzOSwxMDAsMTI4LCAzNiwxNDgsCisgICAgMTExLCAgNiwxODksMTEwLDE4OSwxMjcsMTg5LDEzMiwxODksMTQ2LDE4OSwxNTEsMTg5LDIwNCwyMzgsMjI1LAorICAgIDIzOCwyMzEsMjM3LDIzOSwyMzgsMjQ0LDIzMiwyMzksMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDE3LDIzOSwKKyAgICAxMDcsMTI4LCAgMSwxNzMsMjQwLDIzMiwyNDUsMjQ0LDIzMiwyMjUsMjM5LDI0NCwyMzIsMjI1LDEwNSwxMjgsCisgICAgIDE0LCAxOCwyNDIsMTEwLDEyOCwgIDAsMjU0LDI0NCwxMDQsICAzLDE4OSwxNjAsMTg5LDE4NCwxODksMTk0LAorICAgICA5NywgIDIsMTg5LDE2NiwxODksMTc2LDIzMiwyMjUsMjM4LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAyMywKKyAgICAyMzgsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDE2LDIzOSwyMzgsMjMxLDI0NCwyMzIsMjI1LDEwNSwxMjgsCisgICAgIDE0LCAyNCwyNDUsMjM4LDIzMSwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgMjIsMjQ1LDI0MywyMjUsMjM4LAorICAgIDEwMCwgIDIsMTg5LDIxNCwxODksMjI1LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwKKyAgICAxMzAsMjQzLDI0MywyMjksMjQwLDIyNSwyNDIsMjI1LDI0NCwyMzksMTE0LCAgMiwxODksMjQwLDE4OSwyNDksCisgICAgMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwxMDgsMjQwLDIyOSwyNDIsMjQzLDIzMywyMjUsMTEwLAorICAgIDEyOCwgIDYsMTA4LDI0MiwyMjksMTAxLDE0NCwgIDAsIDUxLDE5MCwgNDEsMTkwLCA1MCwxOTAsIDYwLDE5MCwKKyAgICAgOTAsMTkwLCA5NywxOTAsMTA3LDE5MCwxMzIsMTkwLDE1OSwxOTAsMTkzLDE5MCwyMDUsMTkwLDIyNCwxOTAsCisgICAgMjM1LDE5MSwgMTIsMTkxLCAzNCwxOTEsIDQyLDE5MSwgNTMsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LAorICAgICAgNiwgOTksMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMjMzLDIyNywyMzMsMjQyLDIyNywKKyAgICAyMzYsMTAxLDEyOSwgMzYsIDk4LDE5MCwgNzEsMjMzLDIzOCwyNDYsMjI5LDI0MiwyNDMsMjI5LDI0MywyMjUsCisgICAgMjM4LDI0MywyNDMsMjI5LDI0MiwyMzMsMTAyLDEyOCwgMzksMTQwLDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LAorICAgIDEwNSwyMjksMjMzLDIzMSwyMzIsMjQ0LDIzMiwxMTUsMTI4LCAzMywgOTIsMjMxLDExNywgIDIsMTkwLDExNCwKKyAgICAxOTAsMTIzLDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMjMzLDI0MiwyMzcsMjQ1LDIzNSwyMzIsCisgICAgMTA1LDEyOCwgMTAsMTA1LDIzMiwgOTcsICAyLDE5MCwxMzksMTkwLDE1MCwyMjcsMjM1LDIyNSwyNDIsMjI1LAorICAgIDIyNiwyMzMsIDk5LDEyOCwgIDYsIDk5LDIzOCwyMzEsMjUwLDIzMiwyMzksMTE3LDEyOCwgNDgsIDM1LDEwNSwKKyAgICAgIDIsMTkwLDE2NSwxOTAsMTgzLDIyOCwyMjksMjM5LDIzMSwyNDIsMjI1LDI0MCwyMzIsMjMzLDIyNywyNDAsCisgICAgMjI1LDI0MiwyMjksMTEwLDEyOCwgNTAsIDM0LDIzOCwyMzAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsIDMyLAorICAgIDEzMSwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCAxOSwyMzgsMjQ1LDIzNywKKyAgICAyMjksMjQyLDIyNSwyNDQsMjM5LDI0MiwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyNDYsCisgICAgMjM5LDIzNiwyMjgsMjQzLDI0NCwyNDksMjM2LDEwMSwxMjgsMjQ3LCA1MSwxMTIsICAyLDE5MCwyNDEsMTkwLAorICAgIDI0OCwyMjUsMjQyLDIyOSwxMTAsMTI4LCAzNiwxMTgsMjI5LDExNCwgIDIsMTkwLDI1NSwxOTEsICA1LDIzMywKKyAgICAyMzksMTAwLDEyOCwgMzYsMTM4LDI0MywyMzMsMjI1LDExMCwxMjgsICA2LDI0MywyNDEsMjQ1LDIyNSwyNDIsCisgICAgMjQ0LDIyOSwyNDIsMTE1LDEyOSwgIDAsMTkwLDE5MSwgMjUsMjI5LDIzNywyMjgsMjI1LDI0MywxMDQsMTI4LAorICAgIDI0NiwyMjIsMjQyLDIzOSwyMzcsMjI1LDExMCwxMjgsIDMzLDExNCwyNDMsMjQ1LDI0MCwyMjksMjQyLDIzMywKKyAgICAyMzksMTE0LDEyOCwgIDAsMTc5LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCA4MywyNTAsMjQzLDI0MSwyNDUsCisgICAgMjI1LDI0MiwxMDEsMTI4LCA1MSwxNDgsMTA1LCAgNywxOTEsIDg2LDE5MSwgOTcsMTkxLDIxMiwxOTIsIDU0LAorICAgIDE5MiwgNjYsMTkyLDExNSwxOTIsMTMyLDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwKKyAgICAgOTcsMTA3LCAgMiwxOTEsMTAzLDE5MSwxMjcsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsCisgICAgMTkzLDE5MSwxMTUsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwxMjksMjI5LAorICAgIDI0NSwxMTYsICA0LDE5MSwxMzksMTkxLDE3NCwxOTEsMTg5LDE5MSwxOTgsIDk3LCAgMiwxOTEsMTQ1LDE5MSwKKyAgICAxNjAsMjI3LDIzMywyNDIsMjI3LDIzNiwyMjksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA1MCwxMTIsCisgICAgMjQwLDIyNSwyNDIsMjI5LDIzOCwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLCAxNiwyMjcsMjMzLAorICAgIDI0MiwyMjcsMjM2LDIyOSwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDUwLCA5OCwyMzUsMjM5LDI0MiwKKyAgICAyMjksMjI1LDExMCwxMjgsIDQ5LCA1NSwyNDAsMjI1LDI0MiwyMjksMjM4LDIzNSwyMzksMjQyLDIyOSwyMjUsCisgICAgMTEwLDEyOCwgNTAsICAyLDIzNiwyMjgsMTAxLDEzMywgIDIsMjIwLDE5MSwyMjgsMTkxLDIzOSwxOTIsICAwLAorICAgIDE5MiwgMTIsMTkyLCA0MCwyMjYsMjI5LDIzNiwyMzksMjQ3LDIyNywyMzcsIDk4LDEyOCwgIDMsIDQ4LCA5OSwKKyAgICAgIDIsMTkxLDI0NSwxOTEsMjUwLDIzNywgOTgsMTI4LCAgMywgIDMsMjM5LDIzNywgOTgsMTI4LCAgMywgIDMsCisgICAgMjI4LDIzOSwyNDUsMjI2LDIzNiwyMjksMjI3LDIzNywgOTgsMTI4LCAgMywgOTYsMTExLCAgMiwxOTIsIDE4LAorICAgIDE5MiwgMjgsMjQwLDIyOSwyNDIsMjI1LDI0NCwyMzksMTE0LDEyOCwgMzQsIDYwLDI0NiwyMjksMjQyLDIzNiwKKyAgICAyMjUsMjQ5LDIyNywyMzcsIDk4LDEyOCwgIDMsIDUyLDI0NiwyMjksMjQyLDI0NCwyMzMsMjI3LDIyNSwyMzYsCisgICAgMjI3LDIzNywgOTgsMTI4LCAgMywgNjIsMjM3LDIyOSwyNDMsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI4LAorICAgICAzNCwxNTEsMTEyLCAgMiwxOTIsIDcyLDE5MiwxMDIsMjI5LDIzMiwgOTcsICAyLDE5MiwgODAsMTkyLCA4OSwKKyAgICAyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE1MCwyMzYsMjI5LDIzMCwyNDQsMjMyLDIyOSwyMjYsCisgICAgMjQyLDIyOSwxMTksMTI4LCAgNSwxNTAsMjQwLDIzMywyMzEsMjQ1LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LAorICAgIDEyOCwgMTAsMTEyLDI0NCwyMzYsMjM5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywyMjcsMjI3LDIzNywKKyAgICAgOTgsMTI4LCAgNCwxMzEsMjQ3LDIzOCwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsCisgICAgMTI3LDIzNiwyMzMsMjM4LDIyOSwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMTExLDIzNywyMzksMjM4LAorICAgIDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDg0LDExMSwgIDcsMTkyLDE4NSwxOTIsMTk2LDE5MiwKKyAgICAyMDcsMTkyLDIzMiwxOTMsIDk2LDE5MywxMDgsMTkzLDE5MiwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsCisgICAgMTEwLDEyOCwgIDUsMTA1LDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxMDQsMjM1LAorICAgIDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIwMCwxOTIsMjIwLDIzMiwyMjUsMjM2LDIzMCwKKyAgICAyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTMyLDExMCwgIDMsMTkyLDI0MCwxOTMsIDgyLDE5MywgODcsCisgICAgMTAxLCAgNCwxOTIsMjUwLDE5MywgNjMsMTkzLCA3MCwxOTMsIDc2LDIyNiwyMjUsMTE0LCAgNCwxOTMsICA2LAorICAgIDE5MywgMzUsMTkzLCA0NSwxOTMsIDU0LDIyOSwyNDgsMjQ0LDI0MiwgOTcsICAyLDE5MywgMTYsMTkzLCAyNiwKKyAgICAyMzIsMjMzLDIzMSwyMzIsMjM3LDIzOSwxMDAsMTI4LCAgMiwyMjksMjM2LDIzOSwyNDcsMjM3LDIzOSwxMDAsCisgICAgMTI4LCAgMiwyMzMsMjMyLDIzMywyMzEsMjMyLDIzNywyMzksMTAwLDEyOCwgIDIsMjMwLDIzNiwyMzksMjQ3LAorICAgIDIzNywyMzksMTAwLDEyOCwgIDIsMjMyLDIzNywyMzMsMjI4LDIzNywyMzksMTAwLDEyOCwgIDIsMjMxLDIzMCwKKyAgICAyMzMsMjQ2LDEwMSwxMjgsICAxLDE4OSwyNDMsMjMzLDEyMCwxMjgsICAxLDEzMywyNDQsMjQ3LDExMSwxMjgsCisgICAgICAxLDE2OCwyMzksMTE1LDEyOCwgIDMsMTMyLDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsIDM5LAorICAgIDI0MCwyMjUsMjQ0LDIyNSwyMzUsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDE1LDI0MiwyNDQsMjM5LDIzMywKKyAgICAyNDMsMjI5LDI0MywyMzIsMjI5LDIzNiwyMzYsMjI2LDI0MiwyMjUsMjI3LDIzNSwyMjksMTE2LCAgMiwxOTMsCisgICAgMTMxLDE5MywxNjEsMjM2LDIyOSwyMzAsMTE2LDEzMCwgNDgsIDIwLDE5MywxNDIsMTkzLDE1MCwyNDMsMjM3LAorICAgIDIyNSwyMzYsMTA4LDEyOCwyNTQsIDkzLDI0NiwyMjksMjQyLDI0NCwyMzMsMjI3LDIyNSwxMDgsMTI4LDI1NCwKKyAgICAgNTcsMjQyLDIzMywyMzEsMjMyLDExNiwxMzAsIDQ4LCAyMSwxOTMsMTczLDE5MywxODEsMjQzLDIzNywyMjUsCisgICAgMjM2LDEwOCwxMjgsMjU0LCA5NCwyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMTA4LDEyOCwyNTQsIDU4LAorICAgIDI0NCwyMjUsMjM5LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAyMSwyNDAsIDk3LCAgMiwxOTMsMjA5LDE5MywKKyAgICAyMjEsMjM2LDIyNSwyNDQsMjI1LDIzNiwyMzIsMjM5LDIzOSwxMDcsMTI4LCAgMSwxNzEsMjQyLDIyOSwxMTAsCisgICAgMTI4LCAzNiwxNzUsMTE0LCAgMywxOTMsMjM1LDE5NCwgMTAsMTk0LCAyNSwyMjUsMjI4LDIyOSwyMzcsMjI1LAorICAgIDI0MiwxMDcsMTI5LCAzMywgMzQsMTkzLDI0NywxMTUsICAyLDE5MywyNTMsMTk0LCAgMywyMjUsMjM4LDExNSwKKyAgICAxMjgsMjQ4LDIzNCwyMjksMjQyLDIzMywxMDIsMTI4LDI0NiwyMTksMjI5LDI0NCwyNDIsMjM5LDIzMCwyMzYsCisgICAgMjI5LDI0OCwyMzIsMjM5LDIzOSwxMDcsMTI4LCAgMiwxMzYsMjMzLDIyNSwxMDMsICA0LDE5NCwgMzcsMTk0LAorICAgICA0MiwxOTQsIDQ3LDE5NCwgNTIsMjI4LDExMCwxMjgsIDM3LDE4OCwyMzYsMTAyLDEyOCwgMzcsMTk2LDI0MiwKKyAgICAxMTYsMTI4LCAzNywxODYsMjQ1LDExMiwxMjgsIDM3LDE3OCwxMTUsMTMyLCAgMiwxNjYsMTk0LCA2OSwxOTQsCisgICAgMTA4LDE5NCwyMTQsMTk0LDIyNywyMjUsMjI4LDEwNSwxMzAsICA1LDIzMCwxOTQsIDc5LDE5NCwgOTksMjI4LAorICAgIDIyNSwyMzEsMjI5LDI0MywxMDQsMTI5LDI1MSwgNzAsMTk0LCA5MCwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwKKyAgICAxMjgsMjUxLCA3MCwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIzMCwxMDEsICAyLDE5NCwxMTQsCisgICAgMTk0LDEyNSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDcwLDI0MiwxMDEsMTM0LAorICAgICAgNSwxODEsMTk0LDE0MiwxOTQsMTU2LDE5NCwxNjEsMTk0LDE3MCwxOTQsMTg1LDE5NCwyMDEsIDQ5LCAgMiwKKyAgICAxOTQsMTQ4LDE5NCwxNTIsIDUwLDEyOCwgIDUsMTgxLDEwMSwxMjgsICA1LDE4MSwxNzgsIDk4LDEyOCwgIDUsCisgICAgMTgxLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTgxLDIzOCwyMjUsMjQyLDI0MiwyMzksMjQ3LAorICAgIDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTgxLDI0MSwyNDUsMjI1LDI0MiwyNDQsMjI5LDI0MiwKKyAgICAyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDE4MSwyNDcsMjMzLDIyOCwyMjksMjMyLDIyOSwyMjYsCisgICAgMjQyLDIyOSwxMTksMTI4LCAgNSwxODEsMjMyLDIyOSwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LAorICAgIDEyOCwgIDQsIDkxLDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsMjQ2LDI0MywxMTYsICA0LDE5NCwKKyAgICAyNDcsMTk1LCA0MSwxOTUsMTA2LDE5NSwxNTcsIDk3LCAgMywxOTQsMjU1LDE5NSwgIDksMTk1LCAxNiwyMjYsCisgICAgMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwxNTksMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDMxLAorICAgIDIzMSwxMTcsICAyLDE5NSwgMjMsMTk1LCAzMiwyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE1OSwKKyAgICAyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLCAzMSwyMjksMTA0LCAgNCwxOTUsIDUyLDE5NSwgNjEsCisgICAgMTk1LCA3NSwxOTUsIDkxLDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsMTIxLDIzMCwyMzMsMjM4LAorICAgIDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MSwxMDMsMjMzLDIzOCwyMzMsMjQ0LDIzMywKKyAgICAyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTEsMTA0LDIzNywyMjksMjI4LDIzMywyMjUsCisgICAgMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTEsMTA1LDIzMiwgOTcsICAzLDE5NSwxMTUsMTk1LAorICAgIDEyNSwxOTUsMTMyLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDE2MCwyMjgsMjI5LDI0NiwKKyAgICAgOTcsMTI4LCAgOSwgMzIsMjMxLDExNywgIDIsMTk1LDEzOSwxOTUsMTQ4LDIzNCwyMjUsMjQyLDIyNSwyNDQsCisgICAgMTA1LDEyOCwgMTAsMTYwLDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDMyLDI0NSwyNDIsMjM4LAorICAgIDIyOSwxMDAsMTI4LCAgMiwxMzUsMTE3LCAgMywxOTUsMTczLDE5NSwxODQsMTk1LDIwOSwyMzIsMjMzLDI0MiwKKyAgICAyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTAwLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsCisgICAgMTI5LCA0OCwxOTYsMTk1LDE5NywyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LAorICAgIDEzMCwyNDMsMjM3LDIyNSwyMzYsMTA4LCAgMiwxOTUsMjE5LDE5NSwyMzAsMjMyLDIzMywyNDIsMjI1LDIzMSwKKyAgICAyMjUsMjM4LCA5NywxMjgsIDQ4LCA5OSwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsCisgICAgMTk1LDE5NSwyNDMsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwxMTEsMTE5LAorICAgICAgMiwxOTYsICA1LDE5NiwxMTAsMTAxLCAgMiwxOTYsIDExLDE5NiwgNTksMjM2LDI0NiwxMDEsICAzLDE5NiwKKyAgICAgMjEsMTk2LCAzMCwxOTYsIDUxLDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgMzYsMTA3LDExMiwgIDIsCisgICAgMTk2LCAzNiwxOTYsIDQzLDIyNSwyNDIsMjI5LDExMCwxMjgsIDM2LDEyNywyMjksMjQyLDIzMywyMzksMTAwLAorICAgIDEyOCwgMzYsMTQ3LDI0MiwyMzksMjM3LDIyNSwxMTAsMTI4LCAzMywxMjMsMjM4LDI0NCwxMjEsICAzLDE5NiwKKyAgICAgNjksMTk2LCA3OCwxOTYsIDg5LDIyNywyMzMsMjQyLDIyNywyMzYsMTAxLDEyOCwgMzYsMTE1LDIzMiwyMjUsCisgICAgMjM4LDIzMSwyNTAsMjMyLDIzOSwxMTcsMTI4LCA4MywgNjgsMTEyLCAgMiwxOTYsIDk1LDE5NiwxMDIsMjI1LAorICAgIDI0MiwyMjksMTEwLDEyOCwgMzYsMTM1LDIyOSwyNDIsMjMzLDIzOSwxMDAsMTI4LCAzNiwxNTUsMTExLDE0MiwKKyAgICAgIDAsIDUwLDE5NiwxNDIsMTk2LDE1MSwxOTYsMTYxLDE5NiwxOTEsMTk2LDI0MywxOTcsIDEyLDE5NywgMzksCisgICAgMTk3LCA3MywxOTcsIDg1LDE5NywxMDQsMTk3LDExNSwxOTcsMTQ4LDE5NywxNTYsMTk3LDE4MCwyMjUsMjQyLAorICAgIDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA5OCwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwKKyAgICAyMzIsMjI3LDIzMywyNDIsMjI3LDIzNiwxMDEsMTI5LCAzNiwgOTcsMTk2LDE3MiwyMzMsMjM4LDI0NiwyMjksCisgICAgMjQyLDI0MywyMjksMjQzLDIyNSwyMzgsMjQzLDI0MywyMjksMjQyLDIzMywxMDIsMTI4LCAzOSwxMzksMTAwLAorICAgICAgMiwxOTYsMTk3LDE5NiwyMDMsMjI5LDI0NiwgOTcsMTI4LCAgOSwxMDQsMjM5LDExNiwgIDIsMTk2LDIxMCwKKyAgICAxOTYsMjIxLDIyOSwyMzgsMjM2LDIyOSwyMjUsMjI4LDIyOSwxMTQsMTI4LCAzMiwgMzcsMjM2LDIyOSwyMjUsCisgICAgMjI4LDIyOSwxMTQsMTI5LCAzMiwgMzcsMTk2LDIzMiwyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMTA4LAorICAgIDEyOCwyNTQsIDQ4LDIzMSwxMTcsICAyLDE5NiwyNTAsMTk3LCAgMywyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwKKyAgICAxMjgsIDEwLDIzMiwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLDEwNCwyMzIsIDk3LCAgMiwxOTcsCisgICAgIDE5LDE5NywgMzAsMjI3LDIzNSwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA5OCwyMzgsMjMxLAorICAgIDI1MCwyMzIsMjM5LDExNywxMjgsIDQ4LCAzNCwxMDUsICAyLDE5NywgNDUsMTk3LCA2MywyMjgsMjI5LDIzOSwKKyAgICAyMzEsMjQyLDIyNSwyNDAsMjMyLDIzMywyMjcsMjQwLDIyNSwyNDIsMjI5LDExMCwxMjgsIDUwLCAzMywyMzgsCisgICAgMjMwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LCAzMiwxMzAsMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LAorICAgIDIyNywxMDEsMTI4LDI1NSwgMTgsMjM4LDI0NSwyMzcsMjI5LDI0MiwyMjUsMjQ0LDIzOSwyNDIsMjI2LDIyOSwKKyAgICAyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMjQ1LDIzOSwyMzYsMjI4LDI0MywyNDQsMjQ5LDIzNiwxMDEsCisgICAgMTI4LDI0NywgNTAsMTEyLCAgMiwxOTcsMTIxLDE5NywxMjgsMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTE3LAorICAgIDIyOSwxMTQsICAyLDE5NywxMzUsMTk3LDE0MSwyMzMsMjM5LDEwMCwxMjgsIDM2LDEzNywyNDMsMjMzLDIyNSwKKyAgICAxMTAsMTI4LCAgNiwyNDIsMjQyLDIzOSwyMzcsMjI1LDExMCwxMjgsIDMzLDExMywxMTUsICAyLDE5NywxNjIsCisgICAgMTk3LDE3MCwyNDQsMjQyLDIzOSwyMzUsMTAxLDEyOCwgIDEsMTg3LDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LAorICAgIDExNCwxMjgsICAwLDE3OCwyNDQsMTA0LCAgMiwxOTcsMTg3LDE5NywxOTIsMjI1LDEwNSwxMjgsIDE0LCA4MiwKKyAgICAyMzMsMjQyLDIyOCwxMTUsMTI4LCAzMywgODQsMTE3LDE0NSwgIDAsMTE3LDE5NywyMzcsMTk3LDI0NSwxOTgsCisgICAgIDMwLDE5OCwgODcsMTk4LDIyNSwxOTksICA2LDE5OSwxMjksMTk5LDE0NSwxOTksMTk2LDIwMCwgMTAsMjAwLAorICAgICA5MSwyMDAsMTAwLDIwMCwyMTksMjAwLDI0MywyMDEsIDk1LDIwMSwxMjMsMjAxLDIzNywyMjUsMjI3LDI0NSwKKyAgICAyNDQsMTAxLDEyOCwgIDAsMjUwLCA5OCwgIDQsMTk3LDI1NSwxOTgsICA0LDE5OCwgMTMsMTk4LCAyMywyMjUsCisgICAgMTE0LDEyOCwgIDIsMTM3LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksMTM3LDIzOSwyNDAsMjM5LAorICAgIDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCA0MCwyNDIsMjI5LDI0NiwxMDEsMTI4LCAgMSwxMDksIDk5LCAgMywKKyAgICAxOTgsIDM4LDE5OCwgNDUsMTk4LCA3NywyMjUsMjQyLDIzOSwxMTAsMTI4LCAgMSwyMTIsMjMzLDI0MiwgOTksCisgICAgICAyLDE5OCwgNTMsMTk4LCA1OCwyMzYsMTAxLDEyOCwgMzYsMjI4LDI0NSwyMzcsMjMwLDIzNiwyMjksMTIwLAorICAgIDEyOSwgIDAsMjUxLDE5OCwgNjksMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDExOSwyNDksMjQyLDIzMywKKyAgICAyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwgNjcsMTAwLCAgNSwxOTgsIDk5LDE5OCwxMTAsMTk4LDEzMywxOTgsCisgICAgMTM5LDE5OCwyMTUsMjI1LDI0NCwyNDQsMjI1LDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCA4MSwyMjYsMTA4LAorICAgICAgMiwxOTgsMTE3LDE5OCwxMjUsMjI1LDIyNywyNDUsMjQ0LDEwMSwxMjgsICAxLDExMywyMzEsMjQyLDIyNSwKKyAgICAyNDYsMTAxLDEyOCwgIDIsIDIxLDIyOSwyNDYsIDk3LDEyOCwgIDksICA5LDIzMywyMjksMjQyLDIyOSwyNDMsCisgICAgMjMzLDExNSwxMzMsICAwLDI1MiwxOTgsMTU5LDE5OCwxNjcsMTk4LDE3NSwxOTgsMTk4LDE5OCwyMDYsMjI1LAorICAgIDIyNywyNDUsMjQ0LDEwMSwxMjgsICAxLDIxNiwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMTE1LCA5OSwKKyAgICAgIDIsMTk4LDE4MSwxOTgsMTg4LDIyNSwyNDIsMjM5LDExMCwxMjgsICAxLDIxOCwyNDksMjQyLDIzMywyMzYsCisgICAgMjM2LDIzMywgOTksMTI4LCAgNCwyNDEsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsICAxLDIyMCwyMzcsMjI1LAorICAgIDIyNywyNDIsMjM5LDExMCwxMjgsICAxLDIxNCwyMzksMjQ0LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwKKyAgICAyMjksMTAzLCAgMiwxOTgsMjMxLDE5OCwyMzgsMjQyLDIyNSwyNDYsMTAxLDEyOCwgIDAsMjQ5LDExNywgIDIsCisgICAgMTk4LDI0NCwxOTgsMjUzLDIzNCwyMjUsMjQyLDIyNSwyNDQsMTA1LDEyOCwgMTAsMTM3LDI0MiwyMzcsMjQ1LAorICAgIDIzNSwyMzIsMTA1LDEyOCwgMTAsICA5LDEwNCwgIDMsMTk5LCAxNCwxOTksIDI0LDE5OSwxMDIsMjMzLDI0MiwKKyAgICAyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsIDcwLDExMSwgIDIsMTk5LCAzMCwxOTksIDQwLDIzOSwyMzUsCisgICAgMjI1LDIyNiwyMzksMjQ2LDEwMSwxMjgsIDMwLDIzMSwyNDIsMTEwLDEzMywgIDEsMTc2LDE5OSwgNTUsMTk5LAorICAgICA2MywxOTksIDc0LDE5OSwgODIsMTk5LCA5NCwyMjUsMjI3LDI0NSwyNDQsMTAxLDEyOCwgMzAsMjMzLDIyOCwKKyAgICAyMzksMjQ0LDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwyNDEsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsCisgICAgIDMwLDIzNSwyMzIsMjM5LDIzOSwyMzUsMjI1LDIyNiwyMzksMjQ2LDEwMSwxMjgsIDMwLDIzNywyNDQsMjMzLAorICAgIDIzNiwyMjgsMTAxLDEyOCwgMzAsMjM5LDI0NSwyMzgsMjMxLDIyNSwyNDIsMjQ1LDIzNywyMzYsMjI1LDI0NSwKKyAgICAxMTYsMTI5LCAgMSwxMTMsMTk5LDExOCwyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsCisgICAgMjQzLDIzMywyMzgsMjQ2LDIyOSwyNDIsMjQ0LDIyOSwyMjgsMjI2LDI0MiwyMjksMjQ2LDEwMSwxMjgsICAyLAorICAgICAyMywxMDcsICAzLDE5OSwxNTMsMTk5LDE3NywxOTksMTg4LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywKKyAgICAxMjksIDQ4LDE2NiwxOTksMTY1LDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsCisgICAgMTE1LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxMjEsMjM5LDI0MiwyMjksMjI1LAorICAgIDExMCwxMjgsIDQ5LCA5MiwxMDksICAyLDE5OSwyMDIsMTk5LDI1NSwgOTcsICAyLDE5OSwyMDgsMTk5LDI0MSwKKyAgICAyMjcsMjQyLDIzOSwxMTAsMTMwLCAgMSwxMDcsMTk5LDIxOSwxOTksMjMwLDIyNywyNDksMjQyLDIzMywyMzYsCisgICAgMjM2LDIzMywgOTksMTI4LCAgNCwyMzksMjI4LDIzMywyMjksMjQyLDIyOSwyNDMsMjMzLDExNSwxMjgsIDMwLAorICAgIDEyMywyNDQsMjQyLDIyNSwyMzEsMjQ1LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDY1LDIzOSwKKyAgICAyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgODUsMTEwLCAgMiwyMDAsIDE2LDIwMCwgNzEsCisgICAgMjI4LDIyOSwyNDIsMjQzLDIyNywyMzksMjQyLDEwMSwxMzIsICAwLCA5NSwyMDAsIDM1LDIwMCwgNDEsMjAwLAorICAgICA1MywyMDAsIDY0LDIyOCwyMjYsMTA4LDEyOCwgMzIsIDIzLDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwKKyAgICAyMjcsMTAxLDEyOCwyNTUsIDYzLDI0NiwyMjksMjQyLDI0NCwyMzMsMjI3LDIyNSwxMDgsMTI4LDI1NCwgNTEsCisgICAgMjQ3LDIyNSwyNDYsMTIxLDEyOCwyNTQsIDc5LDEwNSwgIDIsMjAwLCA3NywyMDAsIDgyLDIzOSwxMTAsMTI4LAorICAgICAzNCwgNDIsMjQ2LDIyOSwyNDIsMjQzLDIyNSwxMDgsMTI4LCAzNCwgIDAsMjM5LDIzMSwyMzksMjM4LDIyOSwKKyAgICAxMDcsMTI4LCAgMSwxMTUsMTEyLCAgNSwyMDAsMTEyLDIwMCwxMTksMjAwLDEyNywyMDAsMTQyLDIwMCwxOTMsCisgICAgMjI1LDI0MiwyMjksMTEwLDEyOCwgMzYsMTc2LDIyNiwyMzYsMjM5LDIyNywxMDcsMTI4LCAzNywxMjgsMjQwLAorICAgIDIyOSwyNDIsMjI4LDIzOSwyNDQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxOTYsMjQzLDIzMywKKyAgICAyMzYsMjM5LDExMCwxMzEsICAzLDE5NywyMDAsMTU2LDIwMCwxNzcsMjAwLDE4NSwyMjgsMjMzLDIyOSwyNDIsCisgICAgMjI5LDI0MywyMzMsMTE1LDEyOSwgIDMsMjAzLDIwMCwxNjksMjQ0LDIzOSwyMzgsMjM5LDExNSwxMjgsICAzLAorICAgIDE3NiwyMzYsMjI1LDI0NCwyMzMsMTEwLDEyOCwgIDIsMTM4LDI0NCwyMzksMjM4LDIzOSwxMTUsMTI4LCAgMywKKyAgICAyMDUsMjQ0LDIyNSwyMjcsMTA3LCAgMiwyMDAsMjAyLDIwMCwyMTMsMjI2LDIyOSwyMzYsMjM5LDI0NywyMjcsCisgICAgMjM3LCA5OCwxMjgsICAzLCAyOSwyMzcsMjM5LDEwMCwxMjgsICAyLDIxMiwxMTQsICAyLDIwMCwyMjUsMjAwLAorICAgIDIzNywyMjUsMjMxLDI0NSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLDExNSwyMzMsMjM4LDEwMywKKyAgICAxMjgsICAxLDExMSwxMTUsICAzLDIwMCwyNTEsMjAxLCAxMCwyMDEsIDU1LDIzMiwyMzksMjQyLDI0NCwyMjcsCisgICAgMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDk0LDIzNywyMjUsMjM2LDEwOCwgIDIsMjAxLAorICAgICAxOSwyMDEsIDMwLDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwgNjksMjM1LDIyNSwKKyAgICAyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDE2NSwyMDEsIDQzLDIzMiwyMjUsMjM2LDIzMCwyNDcsCisgICAgMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTA1LDI0NCwyNDIsMjI1LDIzMywyMzEsMjMyLDExNiwgIDIsMjAxLAorICAgICA2NywyMDEsIDc4LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNzUsMjQzLDI0NCwKKyAgICAyNDIsMjM5LDIzNSwyMjksMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDE3NywyNDQsCisgICAgMjMzLDIzNiwyMjgsMTAxLDEzMCwgIDEsMTA1LDIwMSwxMDcsMjAxLDExNSwyMjUsMjI3LDI0NSwyNDQsMTAxLAorICAgIDEyOCwgMzAsMTIxLDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwxMTcsMTE3LCAgNSwyMDEsMTM1LDIwMSwKKyAgICAxNDUsMjAxLDE1MiwyMDEsMTc3LDIwMSwxOTMsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksCisgICAgMTM4LDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCAxMCwyMzEsMTE3LCAgMiwyMDEsMTU5LDIwMSwxNjgsMjM0LAorICAgIDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxMzgsMjQyLDIzNywyNDUsMjM1LDIzMiwxMDUsMTI4LCAxMCwKKyAgICAgMTAsMjM3LDIyNSwyNDQsMjQyLDIyNSwyMzEsMjQ1LDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsCisgICAgIDY2LDI0NiwyMzksMjQ3LDIyOSwyMzYsMjQzLDIzMywyMzEsMTEwLCAgMywyMDEsMjA5LDIwMSwyMTksMjAxLAorICAgIDIyNiwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwxOTQsMjI4LDIyOSwyNDYsIDk3LDEyOCwKKyAgICAgIDksIDY2LDIzMSwyNDUsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxOTQsMjQ2LDIzOSwyNDcsCisgICAgMjI5LDIzNiwyNDMsMjMzLDIzMSwxMTAsICAzLDIwMSwyNTMsMjAyLCAgNywyMDIsIDE0LDIyNiwyMjksMjM4LAorICAgIDIzMSwyMjUsMjM2LDEwNSwxMjgsICA5LDE5MywyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNjUsMjMxLDI0NSwKKyAgICAyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE5MywxMTgsMTM5LCAgMCwxMTgsMjAyLCA1MSwyMDIsCisgICAgMTk5LDIwMiwyMDgsMjAyLDIxOSwyMDMsMTQ4LDIwMywxNTUsMjAzLDI1MywyMDQsICA5LDIwNCwxMDksMjA0LAorICAgIDExNywyMDQsMTM4LCA5NywgIDQsMjAyLCA2MSwyMDIsIDY4LDIwMiwgOTMsMjAyLDEwNCwyMjgsMjI5LDI0NiwKKyAgICAgOTcsMTI4LCAgOSwgNTMsMjMxLDExNywgIDIsMjAyLCA3NSwyMDIsIDg0LDIzNCwyMjUsMjQyLDIyNSwyNDQsCisgICAgMTA1LDEyOCwgMTAsMTgxLDI0MiwyMzcsMjQ1LDIzNSwyMzIsMTA1LDEyOCwgMTAsIDUzLDIzNSwyMjUsMjQ0LAorICAgIDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwyNDcsMTE4LDEzMiwgIDUsMjEzLDIwMiwxMTYsMjAyLDE0MywKKyAgICAyMDIsMTc1LDIwMiwxODcsMjI4LDIyNSwyMzEsMjI5LDI0MywxMDQsMTMwLDI1MSwgNTMsMjAyLDEyOSwyMDIsCisgICAgMTM0LDE4MiwgNTMsMTI4LDI1MSwgNTMsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LDI1MSwgNTMsMTA0LAorICAgICAgMiwyMDIsMTQ5LDIwMiwxNTcsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDIxMywyMzksMjM2LDIyNSwKKyAgICAxMDksMTI5LDI1MSwgNzUsMjAyLDE2NiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsMjUxLCA3NSwyNDYsCisgICAgMjI1LDI0NiwyMzIsMjI5LDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDI0MCwyNDksMjM5LDIyOCwyMzIsMjI5LAorICAgIDIyNiwyNDIsMjI5LDExOSwxMjgsICA1LDI0MSwyMjcsMjMzLDI0MiwyMjcsMjM2LDEwMSwxMjgsIDM2LDIyOSwKKyAgICAyMjgsMjM5LDI0NCwyMjYsMjI5LDIzNiwyMzksMTE5LDEyOCwgMzAsMTI3LDEwMSwgIDYsMjAyLDIzMywyMDIsCisgICAgMjQ0LDIwMywgNTIsMjAzLCA2MywyMDMsIDY5LDIwMywxMzYsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLAorICAgICA5OSwxMjgsICA0LCA1MCwxMDQsICA0LDIwMiwyNTQsMjAzLCAgNywyMDMsIDIxLDIwMywgMzcsMjI1LDI0MiwKKyAgICAyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwxNjQsMjMwLDIzMywyMzgsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsCisgICAgMjMzLCA5OSwxMjgsMjUxLDEwNywyMzMsMjM4LDIzMywyNDQsMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LAorICAgIDIzMywgOTksMTI4LDI1MSwxMDgsMjM3LDIyOSwyMjgsMjMzLDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywKKyAgICAgOTksMTI4LDI1MSwxMDksMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDI0OSwyMzgsCisgICAgMjQ1LDExNSwxMjgsIDM4LCA2NCwyNDIsMjQ0LDIzMywyMjcsMjI1LDEwOCwgIDIsMjAzLCA4MCwyMDMsIDg2LAorICAgIDIyNiwyMjUsMTE0LDEyOCwgIDAsMTI0LDIzNiwyMzMsMjM4LDEwMSwgIDQsMjAzLCA5OSwyMDMsMTEwLDIwMywKKyAgICAxMjEsMjAzLDEzMCwyMjUsMjI2LDIzOSwyNDYsMjI5LDIyNywyMzcsIDk4LDEyOCwgIDMsIDEzLDIyNiwyMjksCisgICAgMjM2LDIzOSwyNDcsMjI3LDIzNywgOTgsMTI4LCAgMywgNDEsMjM2LDIzOSwyNDcsMjM3LDIzOSwxMDAsMTI4LAorICAgICAgMiwyMDQsMjM3LDIzOSwxMDAsMTI4LCAgMiwyMDAsMjQ3LDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwKKyAgICAxMTAsMTI4LCAgNSwxMjYsMjMyLDIzOSwyMzksMTA3LDEyOCwgIDIsMTM5LDEwNSwgIDMsMjAzLDE2MywyMDMsCisgICAgMTc0LDIwMywyMTMsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDI0OCwyNDIsMjI1LAorICAgIDIzNywgOTcsICAzLDIwMywxODUsMjAzLDE5NSwyMDMsMjAyLDIyNiwyMjksMjM4LDIzMSwyMjUsMjM2LDEwNSwKKyAgICAxMjgsICA5LDIwNSwyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNzcsMjMxLDI0NSwyMzQsMjI1LDI0MiwyMjUsCisgICAgMjQ0LDEwNSwxMjgsIDEwLDIwNSwyNDMsMjI1LDI0MiwyMzEsIDk3LCAgMywyMDMsMjI1LDIwMywyMzUsMjAzLAorICAgIDI0MiwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwxMzEsMjI4LDIyOSwyNDYsIDk3LDEyOCwKKyAgICAgIDksICAzLDIzMSwyNDUsMjM0LDIyNSwyNDIsMjI1LDI0NCwxMDUsMTI4LCAxMCwxMzEsMjM3LDIzOSwyMzgsCisgICAgMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwgODYsMTExLCAgMywyMDQsIDE3LDIwNCwgMjgsMjA0LAorICAgICA5OCwyMjUsMjQyLDIzNywyMjksMjM4LDIzMywyMjUsMTEwLDEyOCwgIDUsMTIwLDIzMywyMjcsMjI5LDEwMCwKKyAgICAgIDIsMjA0LCAzNywyMDQsIDczLDIzMywyNDQsMjI5LDI0MiwyMjUsMjQ0LDIzMywyMzksMTEwLCAgMiwyMDQsCisgICAgIDUxLDIwNCwgNjIsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDE1OCwyMzUsMjI1LAorICAgIDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOCwgNDgsMjU0LDIzNywyMjUsMjQyLDIzNSwyMzUsMjI1LDIzOCwKKyAgICAgOTcsMTI5LCA0OCwxNTUsMjA0LCA4NiwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsCisgICAgMjU1LDE1OCwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOCwgNDgsMjUwLDI0MCwyMjUsMjQyLAorICAgIDIyOSwxMTAsMTI4LCAzNiwxNzcsMTE2LCAgMiwyMDQsMTIzLDIwNCwxMzAsMjMzLDIzNiwyMjgsMTAxLDEyOCwKKyAgICAgMzAsMTI1LDI0NSwyNDIsMjM4LDIyOSwxMDAsMTI4LCAgMiwxNDAsMTE3LCAgMiwyMDQsMTQ0LDIwNCwxNTUsCisgICAgMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDE0OCwyMzUsMjI1LDI0NCwyMjUsMjM1LAorICAgIDIyNSwyMzgsIDk3LDEyOCwgNDgsMjQ0LDExOSwxNDMsICAwLDExOSwyMDQsMjAwLDIwNSwxNzcsMjA1LDE4NywKKyAgICAyMDUsMjEwLDIwNSwyNTAsMjA2LCA2MSwyMDYsIDY5LDIwOCwgNDAsMjA4LCA4MSwyMDgsIDkzLDIwOCwxNjgsCisgICAgMjA4LDE3NiwyMDgsMTgzLDIwOCwxOTQsMjA4LDIwMywgOTcsICA4LDIwNCwyMTgsMjA0LDIyNSwyMDQsMjM1LAorICAgIDIwNCwyNDYsMjA1LCAyOCwyMDUsIDYwLDIwNSwgNzIsMjA1LDEwOCwyMjcsMjQ1LDI0NCwxMDEsMTI4LCAzMCwKKyAgICAxMzEsMjI5LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksIDg5LDIzMiwyMzMsMjQyLDIyNSwyMzEsCisgICAgMjI1LDIzOCwgOTcsMTI4LCA0OCwxNDMsMTA3LCAgMiwyMDQsMjUyLDIwNSwgMjAsMjI1LDI0NCwyMjUsMjM1LAorICAgIDIyNSwyMzgsIDk3LDEyOSwgNDgsMjM5LDIwNSwgIDgsMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwKKyAgICAxMDQsMTI4LDI1NSwxNTYsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LCA4OCwyNDMsMjM3LDIyNSwyMzYsCisgICAgMTA4LCAgMiwyMDUsIDM4LDIwNSwgNDksMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LAorICAgIDE0MiwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOCwgNDgsMjM4LDI0NCwyNDQsMjM5LDI0MywKKyAgICAyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgNTEsIDg3LDExOCwgIDIsMjA1LCA3OCwyMDUsIDg2LDIyOSwyMjgsCisgICAgMjI1LDI0MywxMDQsMTI4LCA0OCwgMjgsMjQ5LDI0NSwyMzgsMjI4LDIyOSwyNDIsMjQzLDIyNywyMzksMjQyLAorICAgIDIyOSwyNDYsMjI5LDI0MiwyNDQsMjMzLDIyNywyMjUsMTA4LDEyOCwyNTQsIDUyLDExOSwgIDMsMjA1LDExNiwKKyAgICAyMDUsMTI1LDIwNSwxMzksMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwgNzIsMjMwLDIzMywyMzgsCisgICAgMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDIzOCwyMzIsMjI1LDIzNywyNTAsMjI1LAorICAgIDIyNSwyMjYsMjM5LDI0NiwxMDEsICAyLDIwNSwxNTQsMjA1LDE2MywyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwKKyAgICAxMjgsICA2LCAzNiwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsCisgICAgMTM0LDIyNiwyNDMsMjQxLDI0NSwyMjUsMjQyLDEwMSwxMjgsIDUxLDIyMSwyMjcsMjMzLDI0MiwgOTksICAyLAorICAgIDIwNSwxOTYsMjA1LDIwMSwyMzYsMTAxLDEyOCwgMzYsMjMwLDI0NSwyMzcsMjMwLDIzNiwyMjksMTIwLDEyOCwKKyAgICAgIDEsMTE3LDEwMCwgIDIsMjA1LDIxNiwyMDUsMjI2LDIzMywyMjksMjQyLDIyOSwyNDMsMjMzLDExNSwxMjgsCisgICAgIDMwLDEzMywyMzksMTE2LCAgMiwyMDUsMjMzLDIwNSwyNDIsMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LAorICAgICAzMCwxMzUsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDEzNywxMDEsICA0LDIwNiwgIDQsMjA2LCAxNSwKKyAgICAyMDYsIDI3LDIwNiwgNTEsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LCA5NywxMjgsIDQ4LDE0NSwyMzMsCisgICAgMjI5LDI0MiwyNDMsMjQ0LDI0MiwyMjUsMjQzLDExNSwxMjgsIDMzLCAyNCwxMDcsICAyLDIwNiwgMzMsMjA2LAorICAgICA0MywyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwyNDEsMjM5LDI0MiwyMjksMjI1LDExMCwKKyAgICAxMjgsIDQ5LCA5NCwyMzksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgOTMsMjMxLDI0MiwyMjUsCisgICAgMjQ2LDEwMSwxMjgsIDMwLDEyOSwyMzIsMjMzLDI0NCwxMDEsICA4LDIwNiwgOTAsMjA2LCA5OSwyMDYsMTgzLAorICAgIDIwNywgMTcsMjA3LDEwMSwyMDcsMTQ2LDIwNywxOTgsMjA3LDI1NCwyMjYsMjQ1LDIzNiwyMzYsMjI5LDExNiwKKyAgICAxMjgsIDM3LDIzMCwgOTksICAyLDIwNiwxMDUsMjA2LDEyNSwyMzMsMjQyLDIyNywyMzYsMTAxLDEyOSwgMzcsCisgICAgMjAzLDIwNiwxMTUsMjMzLDIzOCwyNDYsMjI5LDI0MiwyNDMsMTAxLDEyOCwgMzcsMjE3LDIzOSwyNDIsMjM4LAorICAgIDIyOSwyNDIsMjI2LDI0MiwyMjUsMjI3LDIzNSwyMjksMTE2LCAgMiwyMDYsMTQyLDIwNiwxNjIsMjM2LDIyOSwKKyAgICAyMzAsMTE2LDEyOSwgNDgsIDE0LDIwNiwxNTEsMjQ2LDIyOSwyNDIsMjQ0LDIzMywyMjcsMjI1LDEwOCwxMjgsCisgICAgMjU0LCA2NywyNDIsMjMzLDIzMSwyMzIsMTE2LDEyOSwgNDgsIDE1LDIwNiwxNzIsMjQ2LDIyOSwyNDIsMjQ0LAorICAgIDIzMywyMjcsMjI1LDEwOCwxMjgsMjU0LCA2OCwxMDAsICAyLDIwNiwxODksMjA2LDIzMCwyMzMsMjI1LDIzNywKKyAgICAyMzksMjM4LDEwMCwxMjksIDM3LDE5OSwyMDYsMjAwLDIyNywyMzksMjM4LDI0NCwyMjUsMjMzLDIzOCwyMzMsCisgICAgMjM4LDIzMSwyMjYsMjM2LDIyNSwyMjcsMjM1LDI0MywyMzcsMjI1LDIzNiwyMzYsMjI4LDIzMywyMjUsMjM3LAorICAgIDIzOSwyMzgsMTAwLDEyOCwgMzcsMjAwLDIzOSwyNDcsMjM4LDI0MCwyMzksMjMzLDIzOCwyNDQsMjMzLDIzOCwKKyAgICAxMDMsICAyLDIwNiwyNDYsMjA3LCAgNiwyNDMsMjM3LDIyNSwyMzYsMjM2LDI0NCwyNDIsMjMzLDIyNSwyMzgsCisgICAgMjMxLDIzNiwxMDEsMTI4LCAzNywxOTEsMjQ0LDI0MiwyMzMsMjI1LDIzOCwyMzEsMjM2LDEwMSwxMjgsIDM3LAorICAgIDE4OSwyMzYsMTAxLCAgMiwyMDcsIDI0LDIwNywgNjYsMjMwLDI0NCwyNDAsMjM5LDIzMywyMzgsMjQ0LDIzMywKKyAgICAyMzgsMTAzLCAgMiwyMDcsIDM5LDIwNywgNTUsMjQzLDIzNywyMjUsMjM2LDIzNiwyNDQsMjQyLDIzMywyMjUsCisgICAgMjM4LDIzMSwyMzYsMTAxLDEyOCwgMzcsMTk1LDI0NCwyNDIsMjMzLDIyNSwyMzgsMjMxLDIzNiwxMDEsMTI4LAorICAgICAzNywxOTMsMjM4LDI0NCwyMzMsMjI3LDI0NSwyMzYsMjI1LDI0MiwyMjYsMjQyLDIyNSwyMjcsMjM1LDIyOSwKKyAgICAxMTYsICAyLDIwNywgODYsMjA3LCA5MywyMzYsMjI5LDIzMCwxMTYsMTI4LCA0OCwgMjIsMjQyLDIzMywyMzEsCisgICAgMjMyLDExNiwxMjgsIDQ4LCAyMywyNDIsMjMzLDIzMSwyMzIsMjQ0LDI0MCwyMzksMjMzLDIzOCwyNDQsMjMzLAorICAgIDIzOCwxMDMsICAyLDIwNywxMTksMjA3LDEzNSwyNDMsMjM3LDIyNSwyMzYsMjM2LDI0NCwyNDIsMjMzLDIyNSwKKyAgICAyMzgsMjMxLDIzNiwxMDEsMTI4LCAzNywxODUsMjQ0LDI0MiwyMzMsMjI1LDIzOCwyMzEsMjM2LDEwMSwxMjgsCisgICAgIDM3LDE4MywxMTUsICAzLDIwNywxNTQsMjA3LDE4NCwyMDcsMTkyLDEwOSwgIDIsMjA3LDE2MCwyMDcsMTcyLAorICAgIDIyNSwyMzYsMjM2LDI0MywyNDEsMjQ1LDIyNSwyNDIsMTAxLDEyOCwgMzcsMTcxLDIzMywyMzYsMjMzLDIzOCwKKyAgICAyMzEsMjMwLDIyNSwyMjcsMTAxLDEyOCwgMzgsIDU4LDI0MSwyNDUsMjI1LDI0MiwxMDEsMTI4LCAzNywxNjEsCisgICAgMjQ0LDIyNSwxMTQsMTI4LCAzOCwgIDYsMTE2LCAgMiwyMDcsMjA0LDIwNywyMTUsMjI5LDIzNiwyMjksMjQwLAorICAgIDIzMiwyMzksMjM4LDEwMSwxMjgsIDM4LCAxNSwyMzksMjQyLDI0NCwyMzksMjMzLDI0MywyMjksMjQzLDIzMiwKKyAgICAyMjksMjM2LDIzNiwyMjYsMjQyLDIyNSwyMjcsMjM1LDIyOSwxMTYsICAyLDIwNywyMzksMjA3LDI0NiwyMzYsCisgICAgMjI5LDIzMCwxMTYsMTI4LCA0OCwgMjQsMjQyLDIzMywyMzEsMjMyLDExNiwxMjgsIDQ4LCAyNSwyNDUsMjQwLAorICAgIDI0MCwyMzksMjMzLDIzOCwyNDQsMjMzLDIzOCwxMDMsICAyLDIwOCwgMTMsMjA4LCAyOSwyNDMsMjM3LDIyNSwKKyAgICAyMzYsMjM2LDI0NCwyNDIsMjMzLDIyNSwyMzgsMjMxLDIzNiwxMDEsMTI4LCAzNywxODEsMjQ0LDI0MiwyMzMsCisgICAgMjI1LDIzOCwyMzEsMjM2LDEwMSwxMjgsIDM3LDE3OSwxMDUsICAyLDIwOCwgNDYsMjA4LCA1NywyMzIsMjMzLAorICAgIDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTQ0LDEwNywgIDIsMjA4LCA2MywyMDgsIDczLDIyNSwKKyAgICAyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDI0MCwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksCisgICAgIDk1LDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDg3LDExMSwgIDQsMjA4LAorICAgIDEwMywyMDgsMTE0LDIwOCwxMzksMjA4LDE1NywyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwKKyAgICAgNDgsMTQ2LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwyNDIsMjA4LDEyNywyMzIsCisgICAgMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDEwMiwxMTAsMTI5LCAzMiwxNjksMjA4LAorICAgIDE0NSwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LDIzMCwyNDcsMjI1LDIyOSwKKyAgICAyMzgsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDM5LDI0MCwyMjUsMjQyLDIyOSwxMTAsMTI4LCAzNiwxNzgsCisgICAgMjQyLDIzMywyMzgsMTAzLDEyOCwgMzAsMTUyLDI0MywyNDUsMjQwLDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LAorICAgICAgMiwxODMsMjQ0LDI0NSwyNDIsMjM4LDIyOSwxMDAsMTI4LCAgMiwxNDEsMjQ5LDIzOCwxMTAsMTI4LCAgMSwKKyAgICAxOTEsMTIwLDEzNywgIDAsMTIwLDIwOCwyMzEsMjA4LDI0MiwyMDgsMjUzLDIwOSwgIDYsMjA5LCAzMywyMDksCisgICAgIDQ2LDIwOSwgNTAsMjA5LCA2MiwyMDksIDcwLDIyNSwyMjYsMjM5LDI0NiwyMjksMjI3LDIzNywgOTgsMTI4LAorICAgICAgMywgNjEsMjI2LDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAxOCwyMjcsMjMzLDI0MiwKKyAgICAyMjcsMjM2LDEwMSwxMjgsIDM2LDIzMSwxMDAsICAyLDIwOSwgMTIsMjA5LCAyMiwyMzMsMjI5LDI0MiwyMjksCisgICAgMjQzLDIzMywxMTUsMTI4LCAzMCwxNDEsMjM5LDI0NCwyMjUsMjI3LDIyNywyMjksMjM4LDExNiwxMjgsIDMwLAorICAgIDEzOSwyMjksMjMyLDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMDksMTA1LDEyOCwKKyAgICAgIDMsMTkwLDIzNywyMzksMjM4LDIzOSwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwyNTUsIDg4LDI0MCwyMjUsCisgICAgMjQyLDIyOSwxMTAsMTI4LCAzNiwxNzksMjQzLDI0NSwyNDAsMjI5LDI0MiwyMzMsMjM5LDExNCwxMjgsICAyLAorICAgIDIyNywxMjEsMTQzLCAgMCwxMjEsMjA5LDExNSwyMTAsIDc0LDIxMCwgOTcsMjEwLDEzNywyMTIsMTAzLDIxMiwKKyAgICAxMTEsMjEyLDEyOCwyMTIsMTkyLDIxMiwyMDQsMjEzLDIwMSwyMTMsMjQxLDIxMywyNTMsMjE0LCAgOCwyMTQsCisgICAgIDI5LDIxNSwgIDIsIDk3LCAxMSwyMDksMTM5LDIwOSwxNTEsMjA5LDE2MSwyMDksMTY4LDIwOSwxNzUsMjA5LAorICAgIDE4NSwyMDksMjEwLDIwOSwyMjEsMjEwLCAgMywyMTAsIDE2LDIxMCwgNjIsMjI1LDIyOCwyMzksMjQzLDI0MSwKKyAgICAyNDUsMjI1LDI0MiwxMDEsMTI4LCA1MSwgNzgsMjI2LDIyOSwyMzgsMjMxLDIyNSwyMzYsMTA1LDEyOCwgIDksCisgICAgMTc1LDIyNywyNDUsMjQ0LDEwMSwxMjgsICAwLDI1MywyMjgsMjI5LDI0NiwgOTcsMTI4LCAgOSwgNDcsMjI5LAorICAgIDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksIDgyLDIzMSwxMTcsICAyLDIwOSwxOTIsMjA5LDIwMSwKKyAgICAyMzQsMjI1LDI0MiwyMjUsMjQ0LDEwNSwxMjgsIDEwLDE3NSwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsCisgICAgIDEwLCA0NywyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTMyLDEwNywgIDIsMjA5LAorICAgIDIyNywyMDksMjUxLDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIyOCwyMDksMjM5LDIzMiwKKyAgICAyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTQ4LDIzOSwyNDIsMjI5LDIyNSwxMTAsCisgICAgMTI4LCA0OSwgODEsMjM3LDIyNSwyMzUsMjM1LDIyNSwyMzgsMjQ0LDIzMiwyMjUsMTA1LDEyOCwgMTQsIDc4LAorICAgIDI0MywyMzcsMjI1LDIzNiwxMDgsICAyLDIxMCwgMjYsMjEwLCAzNywyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwKKyAgICAyMzgsIDk3LDEyOCwgNDgsMTMxLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwyMjcsCisgICAgMjEwLCA1MCwyMzIsMjI1LDIzNiwyMzAsMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDEwOCwyNDQsMjI3LAorICAgIDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA5OSwyMjcsMjMzLDI0MiwgOTksICAyLDIxMCwKKyAgICAgODMsMjEwLCA4OCwyMzYsMTAxLDEyOCwgMzYsMjMyLDI0NSwyMzcsMjMwLDIzNiwyMjksMTIwLDEyOCwgIDEsCisgICAgMTE5LDEwMCwgIDIsMjEwLDEwMywyMTAsMTEzLDIzMywyMjksMjQyLDIyOSwyNDMsMjMzLDExNSwxMjgsICAwLAorICAgIDI1NSwyMzksMTE2LCAgMiwyMTAsMTIwLDIxMCwxMjksMjI1LDIyNywyMjcsMjI5LDIzOCwxMTYsMTI4LCAzMCwKKyAgICAxNDMsMjI2LDIyOSwyMzYsMjM5LDExOSwxMjgsIDMwLDI0NSwxMDEsICA3LDIxMCwxNTMsMjExLDE2MSwyMTEsCisgICAgMTcwLDIxMSwxODgsMjExLDIyMCwyMTIsIDQwLDIxMiwgOTEsMTA0LCAgOCwyMTAsMTcxLDIxMCwxODAsMjEwLAorICAgIDIxNCwyMTAsMjI4LDIxMSwgNDUsMjExLCA2MSwyMTEsMTIwLDIxMSwxMzgsMjI1LDI0MiwyMjUsMjI2LDIzMywKKyAgICAgOTksMTI4LCAgNiwgNzQsMjI2LDIyNSwyNDIsMjQyLDIyOSwxMDEsICAyLDIxMCwxOTEsMjEwLDIwMCwyMjUsCisgICAgMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LDIxMCwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LAorICAgIDIyNiwyMzMsIDk5LDEyOCwyNTEsMTc1LDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywKKyAgICAgOTksMTI4LDI1NCwyNDIsMjMyLDIyNSwyMzcsMjUwLDIyNSwyMjUsMjI2LDIzOSwyNDYsMTAxLCAgNCwyMTAsCisgICAgMjQ3LDIxMSwgIDAsMjExLCAxNCwyMTEsIDMwLDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwgIDYsIDM4LAorICAgIDIzMCwyMzMsMjM4LDIyNSwyMzYsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1NCwxMzgsMjMzLDIzOCwKKyAgICAyMzMsMjQ0LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTM5LDIzNywyMjksCisgICAgMjI4LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTQwLDIzMywyMzgsMjMzLAorICAgIDI0NCwyMzMsMjI1LDIzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsMjU0LDI0MywyMzcsMTAxLCAgMiwKKyAgICAyMTEsIDY4LDIxMSwgODEsMjI4LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsCisgICAgMjQ0LDIyOSwyMzcsMTA1LCAgMiwyMTEsIDg5LDIxMSwxMDQsMjM4LDIzMywyNDQsMjMzLDIyNSwyMzYsMjI1LAorICAgIDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LDI1MiwyMjEsMjQzLDIzOSwyMzYsMjI1LDI0NCwyMjksMjI4LDIyNSwKKyAgICAyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTIsIDg4LDIzOCwyMzksMjM5LDIzOCwyMzAsMjMzLDIzOCwyMjUsCisgICAgMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTIsMTQ4LDI0NCwyMzIsMjQyLDIyOSwyMjksMjI4LAorICAgIDIzOSwyNDQsMjQzLDIyNiwyMjksMjM2LDIzOSwyNDcsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwKKyAgICAyMDksMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgODYsMTEwLDEyOSwgIDAsMTY1LDIxMSwxNzYsCisgICAgMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywxMDEsMTI4LDI1NSwyMjksMTExLCAgMiwyMTEsMTk0LAorICAgIDIxMSwyMDMsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgODUsMjQyLDIzMywyMzgsMjMyLDIzMywKKyAgICAyMjksMjQ1LDIzMiwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LDEzNCwxMTQsICAzLDIxMSwyMjgsCisgICAgMjEyLCAgOCwyMTIsIDIwLDIyNSwyMzIsMjI2LDIyOSwyMzgsMjQ5LDIzOSwyMzcsMTExLCAgMiwyMTEsMjQyLAorICAgIDIxMSwyNTEsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNzAsMjM2LDIyOSwyMzAsMjQ0LDIzMiwKKyAgICAyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsMTcwLDIzMywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsCisgICAgIDk5LDEyOCwgIDQsIDc1LDI0NSwyMjgsMjMzLDIyOSwyNDIsMjI5LDI0MywyMzMsMjQzLDIyNywyNDksMjQyLAorICAgIDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwyNDksMjQzLDIzMywyMjksMjQ1LDIzOCwxMDMsICAzLDIxMiwKKyAgICAgNTMsMjEyLCA2MiwyMTIsIDc4LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTI5LDI0MCwyMjUsCisgICAgMjM4LDI0MywyMzMsMjM5LDI0MywyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LDEzMSwyNDMsMjMzLAorICAgIDIzOSwyNDMsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxMzAsMjQ0LDIzMywyNDYsMjMyLDIyOSwKKyAgICAyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNTQsMjMxLDI0MiwyMjUsMjQ2LDEwMSwxMjgsIDMwLDI0MywyMzIsCisgICAgMjM5LDIzOSwxMDcsMTI5LCAgMSwxODAsMjEyLDEyMCwyMjUsMjI2LDIzOSwyNDYsMTAxLDEyOCwgMzAsMjQ3LAorICAgIDEwNSwgIDUsMjEyLDE0MCwyMTIsMTUxLDIxMiwxNjIsMjEyLDE3MSwyMTIsMTc5LDIyNSwyNDIsMjM3LDIyOSwKKyAgICAyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMTcsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsCisgICAgICA0LCA4NywyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LCA5OCwyMzgsMjQ5LDIyNSwyMzgsMTAzLAorICAgIDEyOCwgMzgsIDQ3LDI0NywyMzgsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LDEzMCwKKyAgICAyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LCA4OSwxMTEsICA3LDIxMiwyMjAsCisgICAgMjEzLCAzNCwyMTMsIDQ1LDIxMywgNTUsMjEzLCA5MywyMTMsMTM5LDIxMywxNDgsMTAwLDEzMSwgIDUsMjE3LAorICAgIDIxMiwyMzAsMjEyLDI1MCwyMTMsICAzLDIyOCwyMjUsMjMxLDIyOSwyNDMsMTA0LDEyOSwyNTEsIDU3LDIxMiwKKyAgICAyNDEsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LDI1MSwgNTcsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksCisgICAgMTI4LCAgNSwyMTcsMjQ5LDIzOSwxMDAsICAyLDIxMywgMTEsMjEzLCAyMCwyMzIsMjI5LDIyNiwyNDIsMjI5LAorICAgIDExOSwxMjgsICA1LDI0MiwyNDAsMjI1LDI0NCwyMjUsMjMyLDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwKKyAgICAyNTEsIDMxLDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LCA0OCwxMzYsMjMzLDIzNSwyMzksCisgICAgMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTM3LDEwNywgIDIsMjEzLCA2MSwyMTMsIDg1LDIyNSwyNDQsMjI1LAorICAgIDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIzMiwyMTMsIDczLDIzMiwyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwKKyAgICAyNDQsMTA0LDEyOCwyNTUsMTUwLDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwgOTEsMjQzLDIzNywyMjUsCisgICAgMjM2LDEwOCwgIDIsMjEzLDEwMywyMTMsMTE0LDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LAorICAgICA0OCwxMzUsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjksIDQ4LDIzMSwyMTMsMTI3LDIzMiwKKyAgICAyMjUsMjM2LDIzMCwyNDcsMjMzLDIyOCwyNDQsMTA0LDEyOCwyNTUsMTEwLDI0NCwyMzEsMjQyLDIyOSwyMjksCisgICAgMTA3LDEyOCwgIDMsMjQzLDEyMSwgIDIsMjEzLDE1NCwyMTMsMTkxLCA5NywgIDIsMjEzLDE2MCwyMTMsMTcwLAorICAgIDIyOSwyMzUsMjM5LDI0MiwyMjksMjI1LDExMCwxMjgsIDQ5LDEzNiwxMDcsICAyLDIxMywxNzYsMjEzLDE4NCwKKyAgICAyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwgNDksMTM1LDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCAzNCwyMzMsCisgICAgMjM4LDIzMSwyNDQsMjMyLDIyNSwxMDUsMTI4LCAxNCwgMTMsMTEyLCAgMiwyMTMsMjA3LDIxMywyMTQsMjI1LAorICAgIDI0MiwyMjksMTEwLDEyOCwgMzYsMTgwLDIzOSwyMzEsMjI5LDIzMSwyNDIsMjI1LDIzNywyMzcsMjI5LDIzOCwKKyAgICAxMDUsMTI5LCAgMywxMjIsMjEzLDIzMCwyMzEsMjQyLDIyOSwyMjksMjM1LDIyNywyMzcsIDk4LDEyOCwgIDMsCisgICAgIDY5LDExNCwxMjksICAxLDE2NiwyMTMsMjQ3LDIzMywyMzgsMTAzLDEyOCwgMzAsMTUzLDI0MywyNDUsMjQwLAorICAgIDIyOSwyNDIsMjMzLDIzOSwxMTQsMTI4LCAgMiwxODQsMTE2LCAgMiwyMTQsIDE0LDIxNCwgMjEsMjMzLDIzNiwKKyAgICAyMjgsMTAxLDEyOCwgMzAsMjQ5LDI0NSwyNDIsMjM4LDIyOSwxMDAsMTI4LCAgMiwxNDIsMTE3LCAgNSwyMTQsCisgICAgIDQxLDIxNCwgNTIsMjE0LCA2MiwyMTQsMTAwLDIxNCwyMzIsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsMjM4LAorICAgICA5NywxMjgsIDQ4LDEzNCwyMzMsMjM1LDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxNDAsMTA3LCAgMiwKKyAgICAyMTQsIDY4LDIxNCwgOTIsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOSwgNDgsMjMwLDIxNCwgODAsCisgICAgMjMyLDIyNSwyMzYsMjMwLDI0NywyMzMsMjI4LDI0NCwxMDQsMTI4LDI1NSwxNDksMjM5LDI0MiwyMjksMjI1LAorICAgIDExMCwxMjgsIDQ5LCA5NiwxMTUsICAzLDIxNCwxMDgsMjE0LDE0NiwyMTQsMTg3LDIyNiwyMzMsMTAzLCAgMiwKKyAgICAyMTQsMTE2LDIxNCwxMjcsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDEwNywyMzMsCisgICAgMjM5LDI0NCwyMzMsMjMwLDIzMywyMjksMjI4LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LAorICAgICAgNCwxMDksMjM2LDIzMywyNDQsMjQ0LDIzNiwxMDEsICAyLDIxNCwxNTcsMjE0LDE2OCwyMjcsMjQ5LDI0MiwKKyAgICAyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsMTAzLDIzMywyMzksMjQ0LDIzMywyMzAsMjMzLDIyOSwyMjgsCisgICAgMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDEwNSwyMzcsMjI1LDIzNiwxMDgsICAyLAorICAgIDIxNCwxOTYsMjE0LDIwNywyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwgNDgsMTMzLDIzNSwKKyAgICAyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI5LCA0OCwyMjksMjE0LDIyMCwyMzIsMjI1LDIzNiwyMzAsCisgICAgMjQ3LDIzMywyMjgsMjQ0LDEwNCwxMjgsMjU1LDEwOSwyNDksMTAxLCAgMiwyMTQsMjM5LDIxNCwyNDgsMjM1LAorICAgIDIzOSwyNDIsMjI5LDIyNSwxMTAsMTI4LCA0OSwxMzksMjM5LDIzNSwyMzksMjQyLDIyOSwyMjUsMTEwLDEyOCwKKyAgICAgNDksMTM4LDI0OSwgOTcsICAyLDIxNSwgIDksMjE1LCAxOSwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsCisgICAgMTI4LCAgOSwyMjMsMjI4LDIyOSwyNDYsIDk3LDEyOCwgIDksIDk1LDEyMiwxNDIsICAwLDEyMiwyMTUsIDU4LAorICAgIDIxNiwgNjYsMjE2LCA3NywyMTYsMTIwLDIxNiwxNDcsMjE3LDE4MiwyMTgsIDM0LDIxOCwgNzYsMjE4LCA4OCwKKyAgICAyMTgsMTAwLDIxOCwxMjgsMjE4LDEzNiwyMTgsMTUyLDIxOCwxNjEsIDk3LCAxMCwyMTUsIDgwLDIxNSwgOTEsCisgICAgMjE1LCA5OCwyMTUsMTA1LDIxNSwxMTYsMjE1LDE5NCwyMTUsMjI0LDIxNSwyMzUsMjE2LCAxNSwyMTYsIDI3LAorICAgIDIyNSwyNDIsMjM3LDIyOSwyMzgsMjMzLDIyNSwxMTAsMTI4LCAgNSwxMDIsMjI3LDI0NSwyNDQsMTAxLDEyOCwKKyAgICAgIDEsMTIyLDIyOCwyMjksMjQ2LCA5NywxMjgsICA5LCA5MSwyMzEsMjQ1LDI0MiwyMzcsMjQ1LDIzNSwyMzIsCisgICAgMTA1LDEyOCwgMTAsIDkxLDEwNCwgIDQsMjE1LDEyNiwyMTUsMTM1LDIxNSwxNDksMjE1LDE3OSwyMjUsMjQyLAorICAgIDIyNSwyMjYsMjMzLCA5OSwxMjgsICA2LCA1NiwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwKKyAgICAyMzMsIDk5LDEyOCwyNTQsMTk4LDEwNSwgIDIsMjE1LDE1NSwyMTUsMTcwLDIzOCwyMzMsMjQ0LDIzMywyMjUsCisgICAgMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTk5LDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LAorICAgIDEyOCwgNDgsIDg2LDIzNywyMjksMjI4LDIzMywyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwKKyAgICAyNTQsMjAwLDIzMywxMTAsICAyLDIxNSwyMDEsMjE1LDIxMCwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwxMjgsCisgICAgICA2LCA1MCwyMzAsMjMzLDIzOCwyMjUsMjM2LDIyNSwyNDIsMjI1LDIyNiwyMzMsIDk5LDEyOCwyNTQsMTc2LAorICAgIDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwxODIsMjQxLDIyOSwxMDIsICAyLDIxNSwKKyAgICAyNDMsMjE2LCAgMSwyMzEsMjI1LDIyOCwyMzksMjM2LDIzMiwyMjksMjI2LDI0MiwyMjksMTE5LDEyOCwgIDUsCisgICAgMTQ5LDI0MSwyMjUsMjQ0LDIyNSwyMzgsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNDgsMjQyLAorICAgIDI0MSwyMjUsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNTIsMjQ5LDIzMywxMTAsMTMwLCAgNSwKKyAgICAyMTQsMjE2LCAzNywyMTYsIDU3LDIyOCwyMjUsMjMxLDIyOSwyNDMsMTA0LDEyOSwyNTEsIDU0LDIxNiwgNDgsCisgICAgMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LDI1MSwgNTQsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LAorICAgICAgNSwyMTQsMjI2LDIzOSwyNDAsMjM5LDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAyMywgOTksICAzLDIxNiwKKyAgICAgODUsMjE2LCA5MiwyMTYsMTE0LDIyNSwyNDIsMjM5LDExMCwxMjgsICAxLDEyNiwyMzMsMjQyLCA5OSwgIDIsCisgICAgMjE2LDEwMCwyMTYsMTA1LDIzNiwxMDEsMTI4LCAzNiwyMzMsMjQ1LDIzNywyMzAsMjM2LDIyOSwxMjAsMTI4LAorICAgICAzMCwxNDUsMjQ1LDI0MiwxMDgsMTI4LCAgMiwxNDUsMjI4LDIzOSwxMTYsMTMwLCAgMSwxMjQsMjE2LDEzMCwKKyAgICAyMTYsMTM5LDIyNSwyMjcsMjI3LDIyOSwyMzgsMTE2LDEyOCwgIDEsMTI0LDIyNiwyMjksMjM2LDIzOSwxMTksCisgICAgMTI4LCAzMCwxNDcsMTAxLCAgNiwyMTYsMTYxLDIxNiwxNzIsMjE2LDIxNSwyMTYsMjI2LDIxNiwyMzcsMjE3LAorICAgIDE3NywyMjcsMjQ5LDI0MiwyMzMsMjM2LDIzNiwyMzMsIDk5LDEyOCwgIDQsIDU1LDEwMCwgIDIsMjE2LDE3OCwKKyAgICAyMTYsMTk3LDIyOSwyNDMsMjI3LDIyOSwyMzgsMjI4LDIyOSwyNDIsMjI3LDI0OSwyNDIsMjMzLDIzNiwyMzYsCisgICAgMjMzLCA5OSwxMjgsICA0LDE1MywyMzMsMjI5LDI0MiwyMjksMjQzLDIzMywyNDMsMjI3LDI0OSwyNDIsMjMzLAorICAgIDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LDIyMywyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwyMzgsIDk3LDEyOCwKKyAgICAgNDgsIDkyLDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwxODgsMjQyLDExMSwxNDAsCisgICAgICAwLCA0OCwyMTcsIDEwLDIxNywgMTksMjE3LCAyOSwyMTcsIDM2LDIxNywgNjEsMjE3LCA3NCwyMTcsIDg1LAorICAgIDIxNywgOTcsMjE3LDEwOCwyMTcsMTE4LDIxNywxMjksMjE3LDEzNiwyMjUsMjQyLDIyNSwyMjYsMjMzLCA5OSwKKyAgICAxMjgsICA2LCA5NiwyMjYsMjI5LDIzOCwyMzEsMjI1LDIzNiwxMDUsMTI4LCAgOSwyMzAsMjI4LDIyOSwyNDYsCisgICAgIDk3LDEyOCwgIDksMTAyLDIzMSwxMTcsICAyLDIxNywgNDMsMjE3LCA1MiwyMzQsMjI1LDI0MiwyMjUsMjQ0LAorICAgIDEwNSwxMjgsIDEwLDIzMCwyNDIsMjM3LDI0NSwyMzUsMjMyLDEwNSwxMjgsIDEwLDEwMiwyMzIsMjI1LDIyNywKKyAgICAyMzUsMjI1LDI0MiwyMjUsMjI2LDIzMywgOTksMTI4LCAgNiwgOTYsMjMzLDIzOCwyMzAsMjI5LDI0MiwyMzMsCisgICAgMjM5LDExNCwxMjgsIDMyLDEyOCwyMzcsMjM5LDIzOCwyMzksMjQzLDI0MCwyMjUsMjI3LDEwMSwxMjgsMjU1LAorICAgICAxNiwyMzksMjM2LDIyOCwyNDMsMjQ0LDI0OSwyMzYsMTAxLDEyOCwyNDcsIDQ4LDI0MCwyMjksMjQyLDI0MywKKyAgICAyMzMsMjI1LDExMCwxMjgsICA2LDI0MCwyNDMsMjQ1LDI0MCwyMjksMjQyLDIzMywyMzksMTE0LDEyOCwgMzIsCisgICAgMTEyLDI0NCwyMzIsMjI1LDEwNSwxMjgsIDE0LCA4MCwyNDcsMjMzLDIyOCwyNDQsMTA0LCAgMywyMTcsMTQ4LAorICAgIDIxNywxNTcsMjE3LDE2OSwyMzQsMjM5LDIzMywyMzgsMjI5LDExNCwxMjgsMjU0LDI1NSwyMzgsMjM5LDIzOCwKKyAgICAyMzQsMjM5LDIzMywyMzgsMjI5LDExNCwxMjgsIDMyLCAxMiwyNDMsMjQwLDIyNSwyMjcsMTAxLDEyOCwgMzIsCisgICAgIDExLDI0NCwgOTcsMTI4LCAgMywxODIsMTA0LCAgMiwyMTcsMTg4LDIxNywxOTksMjI2LDIzOSwyNDAsMjM5LAorICAgIDIzNywyMzksMjMwLDExMSwxMjgsIDQ5LCAxOSwxMDEsICA0LDIxNywyMDksMjE3LDIyMCwyMTcsMjM2LDIxNywKKyAgICAyNDcsMjI1LDI0MiwyMzcsMjI5LDIzOCwyMzMsMjI1LDExMCwxMjgsICA1LDEwNiwyMjYsMjQyLDIyOSwyNDYsCisgICAgMjI5LDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxOTQsMjI3LDI0OSwyNDIsMjMzLAorICAgIDIzNiwyMzYsMjMzLCA5OSwxMjgsICA0LCA1NCwxMDAsICAyLDIxNywyNTMsMjE4LCAxNiwyMjksMjQzLDIyNywKKyAgICAyMjksMjM4LDIyOCwyMjksMjQyLDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LCAgNCwxNTEsCisgICAgMjMzLDIyOSwyNDIsMjI5LDI0MywyMzMsMjQzLDIyNywyNDksMjQyLDIzMywyMzYsMjM2LDIzMywgOTksMTI4LAorICAgICAgNCwyMjEsMTA1LCAgMywyMTgsIDQyLDIxOCwgNTMsMjE4LCA2NCwyMzIsMjMzLDI0MiwyMjUsMjMxLDIyNSwKKyAgICAyMzgsIDk3LDEyOCwgNDgsIDg4LDIzNSwyMjUsMjQ0LDIyNSwyMzUsMjI1LDIzOCwgOTcsMTI4LCA0OCwxODQsCisgICAgMjM4LDIzOSwyNDIsMjMyLDIyOSwyMjYsMjQyLDIyOSwxMTksMTI4LCAgNSwxNzQsMjM2LDIzMywyMzgsMjI5LAorICAgIDIyNiwyMjksMjM2LDIzOSwxMTksMTI4LCAzMCwxNDksMjM3LDIzOSwyMzgsMjM5LDI0MywyNDAsMjI1LDIyNywKKyAgICAxMDEsMTI4LDI1NSwgOTAsMTExLCAgMiwyMTgsMTA2LDIxOCwxMTcsMjMyLDIzMywyNDIsMjI1LDIzMSwyMjUsCisgICAgMjM4LCA5NywxMjgsIDQ4LCA5NCwyMzUsMjI1LDI0NCwyMjUsMjM1LDIyNSwyMzgsIDk3LDEyOCwgNDgsMTkwLAorICAgIDI0MCwyMjUsMjQyLDIyOSwxMTAsMTI4LCAzNiwxODEsMjQyLDIyOSwyNDQsMjQyLDIzOSwyMzAsMjM2LDIyOSwKKyAgICAyNDgsMjMyLDIzOSwyMzksMTA3LDEyOCwgIDIsMTQ0LDI0MywyNDQsMjQyLDIzOSwyMzUsMTAxLDEyOCwgIDEsCisgICAgMTgyLDExNywgIDIsMjE4LDE2NywyMTgsMTc4LDIzMiwyMzMsMjQyLDIyNSwyMzEsMjI1LDIzOCwgOTcsMTI4LAorICAgICA0OCwgOTAsMjM1LDIyNSwyNDQsMjI1LDIzNSwyMjUsMjM4LCA5NywxMjgsIDQ4LDE4NgorICB9OworCisKKyAgLyoKKyAgICogIFRoaXMgZnVuY3Rpb24gc2VhcmNoZXMgdGhlIGNvbXByZXNzZWQgdGFibGUgZWZmaWNpZW50bHkuCisgICAqLworICBzdGF0aWMgdW5zaWduZWQgbG9uZworICBmdF9nZXRfYWRvYmVfZ2x5cGhfaW5kZXgoIGNvbnN0IGNoYXIqICBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBsaW1pdCApCisgIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgYyA9IDA7CisgICAgaW50ICAgICAgICAgICAgICAgICAgIGNvdW50LCBtaW4sIG1heDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiAgcCA9IGZ0X2Fkb2JlX2dseXBoX2xpc3Q7CisKKworICAgIGlmICggbmFtZSA9PSAwIHx8IG5hbWUgPj0gbGltaXQgKQorICAgICAgZ290byBOb3RGb3VuZDsKKworICAgIGMgICAgID0gKm5hbWUrKzsKKyAgICBjb3VudCA9IHBbMV07CisgICAgcCAgICArPSAyOworCisgICAgbWluID0gMDsKKyAgICBtYXggPSBjb3VudDsKKworICAgIHdoaWxlICggbWluIDwgbWF4ICkKKyAgICB7CisgICAgICBpbnQgICAgICAgICAgICAgICAgICAgbWlkID0gKCBtaW4gKyBtYXggKSA+PiAxOworICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogIHEgICA9IHAgKyBtaWQgKiAyOworICAgICAgaW50ICAgICAgICAgICAgICAgICAgIGMyOworCisKKyAgICAgIHEgPSBmdF9hZG9iZV9nbHlwaF9saXN0ICsgKCAoIChpbnQpcVswXSA8PCA4ICkgfCBxWzFdICk7CisKKyAgICAgIGMyID0gcVswXSAmIDEyNzsKKyAgICAgIGlmICggYzIgPT0gYyApCisgICAgICB7CisgICAgICAgIHAgPSBxOworICAgICAgICBnb3RvIEZvdW5kOworICAgICAgfQorICAgICAgaWYgKCBjMiA8IGMgKQorICAgICAgICBtaW4gPSBtaWQgKyAxOworICAgICAgZWxzZQorICAgICAgICBtYXggPSBtaWQ7CisgICAgfQorICAgIGdvdG8gTm90Rm91bmQ7CisKKyAgRm91bmQ6CisgICAgZm9yICg7OykKKyAgICB7CisgICAgICAvKiBhc3NlcnQgKCpwICYgMTI3KSA9PSBjICovCisKKyAgICAgIGlmICggbmFtZSA+PSBsaW1pdCApCisgICAgICB7CisgICAgICAgIGlmICggKHBbMF0gJiAxMjgpID09IDAgJiYKKyAgICAgICAgICAgICAocFsxXSAmIDEyOCkgIT0gMCApCisgICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSggKCAoaW50KXBbMl0gPDwgOCApIHwgcFszXSApOworCisgICAgICAgIGdvdG8gTm90Rm91bmQ7CisgICAgICB9CisgICAgICBjID0gKm5hbWUrKzsKKyAgICAgIGlmICggcFswXSAmIDEyOCApCisgICAgICB7CisgICAgICAgIHArKzsKKyAgICAgICAgaWYgKCBjICE9IChwWzBdICYgMTI3KSApCisgICAgICAgICAgZ290byBOb3RGb3VuZDsKKworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgcCsrOworICAgICAgY291bnQgPSBwWzBdICYgMTI3OworICAgICAgaWYgKCBwWzBdICYgMTI4ICkKKyAgICAgICAgcCArPSAyOworCisgICAgICBwKys7CisKKyAgICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCBwICs9IDIgKQorICAgICAgeworICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gKCAoaW50KXBbMF0gPDwgOCApIHwgcFsxXTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogIHEgICAgICA9IGZ0X2Fkb2JlX2dseXBoX2xpc3QgKyBvZmZzZXQ7CisKKyAgICAgICAgaWYgKCBjID09ICggcVswXSAmIDEyNyApICkKKyAgICAgICAgeworICAgICAgICAgIHAgPSBxOworICAgICAgICAgIGdvdG8gTmV4dEl0ZXI7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGdvdG8gTm90Rm91bmQ7CisKKyAgICBOZXh0SXRlcjoKKyAgICAgIDsKKyAgICB9CisKKyAgTm90Rm91bmQ6CisgICAgcmV0dXJuIDA7CisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fQURPQkVfR0xZUEhfTElTVCAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc25hbWVzL3J1bGVzLm1rIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9wc25hbWVzL3J1bGVzLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZDM5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3BzbmFtZXMvcnVsZXMubWsKQEAgLTAsMCArMSw3MSBAQAorIworIyBGcmVlVHlwZSAyIFBTTmFtZXMgZHJpdmVyIGNvbmZpZ3VyYXRpb24gcnVsZXMKKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDAsIDIwMDEsIDIwMDMsIDIwMTEgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKKyMgUFNOYW1lcyBkcml2ZXIgZGlyZWN0b3J5CisjCitQU05BTUVTX0RJUiA6PSAkKFNSQ19ESVIpL3BzbmFtZXMKKworCisjIGNvbXBpbGF0aW9uIGZsYWdzIGZvciB0aGUgZHJpdmVyCisjCitQU05BTUVTX0NPTVBJTEUgOj0gJChGVF9DT01QSUxFKSAkSSQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJChQU05BTUVTX0RJUikpCisKKworIyBQU05hbWVzIGRyaXZlciBzb3VyY2VzIChpLmUuLCBDIGZpbGVzKQorIworUFNOQU1FU19EUlZfU1JDIDo9ICQoUFNOQU1FU19ESVIpL3BzbW9kdWxlLmMgXAorICAgICAgICAgICAgICAgICAgICQoUFNOQU1FU19ESVIpL3BzcGljLmMKKworCisjIFBTTmFtZXMgZHJpdmVyIGhlYWRlcnMKKyMKK1BTTkFNRVNfRFJWX0ggOj0gJChQU05BTUVTX0RSVl9TUkM6JS5jPSUuaCkgXAorICAgICAgICAgICAgICAgICAkKFBTTkFNRVNfRElSKS9wc25hbWVyci5oICBcCisgICAgICAgICAgICAgICAgICQoUFNOQU1FU19ESVIpL3BzdGFibGVzLmgKKworCisjIFBTTmFtZXMgZHJpdmVyIG9iamVjdChzKQorIworIyAgIFBTTkFNRVNfRFJWX09CSl9NIGlzIHVzZWQgZHVyaW5nIGBtdWx0aScgYnVpbGRzCisjICAgUFNOQU1FU19EUlZfT0JKX1MgaXMgdXNlZCBkdXJpbmcgYHNpbmdsZScgYnVpbGRzCisjCitQU05BTUVTX0RSVl9PQkpfTSA6PSAkKFBTTkFNRVNfRFJWX1NSQzokKFBTTkFNRVNfRElSKS8lLmM9JChPQkpfRElSKS8lLiRPKQorUFNOQU1FU19EUlZfT0JKX1MgOj0gJChPQkpfRElSKS9wc25hbWVzLiRPCisKKyMgUFNOYW1lcyBkcml2ZXIgc291cmNlIGZpbGUgZm9yIHNpbmdsZSBidWlsZAorIworUFNOQU1FU19EUlZfU1JDX1MgOj0gJChQU05BTUVTX0RJUikvcHNtb2R1bGUuYworCisKKyMgUFNOYW1lcyBkcml2ZXIgLSBzaW5nbGUgb2JqZWN0CisjCiskKFBTTkFNRVNfRFJWX09CSl9TKTogJChQU05BTUVTX0RSVl9TUkNfUykgJChQU05BTUVTX0RSVl9TUkMpIFwKKyAgICAgICAgICAgICAgICAgICAgICAkKEZSRUVUWVBFX0gpICQoUFNOQU1FU19EUlZfSCkKKwkkKFBTTkFNRVNfQ09NUElMRSkgJFQkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCRAICQoUFNOQU1FU19EUlZfU1JDX1MpKQorCisKKyMgUFNOYW1lcyBkcml2ZXIgLSBtdWx0aXBsZSBvYmplY3RzCisjCiskKE9CSl9ESVIpLyUuJE86ICQoUFNOQU1FU19ESVIpLyUuYyAkKEZSRUVUWVBFX0gpICQoUFNOQU1FU19EUlZfSCkKKwkkKFBTTkFNRVNfQ09NUElMRSkgJFQkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCRAICQ8KQorCisKKyMgdXBkYXRlIG1haW4gZHJpdmVyIG9iamVjdCBsaXN0cworIworRFJWX09CSlNfUyArPSAkKFBTTkFNRVNfRFJWX09CSl9TKQorRFJWX09CSlNfTSArPSAkKFBTTkFNRVNfRFJWX09CSl9NKQorCisKKyMgRU9GCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9KYW1maWxlIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvSmFtZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjYwZTg3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvSmFtZmlsZQpAQCAtMCwwICsxLDI5IEBACisjIEZyZWVUeXBlIDIgc3JjL3Jhc3RlciBKYW1maWxlCisjCisjIENvcHlyaWdodCAyMDAxIGJ5CisjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKKyMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQorIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorIyBmdWxseS4KKworU3ViRGlyICBGVDJfVE9QICQoRlQyX1NSQ19ESVIpIHJhc3RlciA7CisKK3sKKyAgbG9jYWwgIF9zb3VyY2VzIDsKKworICBpZiAkKEZUMl9NVUxUSSkKKyAgeworICAgIF9zb3VyY2VzID0gZnRyYXN0ZXIgZnRyZW5kMSByYXN0cGljIDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBfc291cmNlcyA9IHJhc3RlciA7CisgIH0KKworICBMaWJyYXJ5ICAkKEZUMl9MSUIpIDogJChfc291cmNlcykuYyA7Cit9CisKKyMgZW5kIG9mIHNyYy9yYXN0ZXIgSmFtZmlsZQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvZnRtaXNjLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9mdG1pc2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTUxZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvZnRtaXNjLmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0bWlzYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBNaXNjZWxsYW5lb3VzIG1hY3JvcyBmb3Igc3RhbmQtYWxvbmUgcmFzdGVyaXplciAoc3BlY2lmaWNhdGlvbiAgICAgICAqLworLyogICAgb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDUsIDIwMDksIDIwMTAgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkICAgICAgICAqLworLyogIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGlzICpub3QqIHBvcnRhYmxlISAgWW91IGhhdmUgdG8gYWRhcHQgKi8KKyAgLyogaXRzIGRlZmluaXRpb25zIHRvIHlvdXIgcGxhdGZvcm0uICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0ZUTUlTQ19IX18KKyNkZWZpbmUgX19GVE1JU0NfSF9fCisKKworICAvKiBtZW1zZXQgKi8KKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIgorCisjZGVmaW5lIEZUX0JFR0lOX0hFQURFUgorI2RlZmluZSBGVF9FTkRfSEVBREVSCisKKyNkZWZpbmUgRlRfTE9DQUxfREVGKCB4ICkgICBzdGF0aWMgeAorCisKKyAgLyogZnJvbSBpbmNsdWRlL2ZyZWV0eXBlMi9mdHR5cGVzLmggKi8KKworICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgIEZUX0J5dGU7CisgIHR5cGVkZWYgc2lnbmVkIGludCAgICAgRlRfSW50OworICB0eXBlZGVmIHVuc2lnbmVkIGludCAgIEZUX1VJbnQ7CisgIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgRlRfTG9uZzsKKyAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICBGVF9VTG9uZzsKKyAgdHlwZWRlZiBzaWduZWQgbG9uZyAgICBGVF9GMjZEb3Q2OworICB0eXBlZGVmIGludCAgICAgICAgICAgIEZUX0Vycm9yOworCisjZGVmaW5lIEZUX01BS0VfVEFHKCBfeDEsIF94MiwgX3gzLCBfeDQgKSBcCisgICAgICAgICAgKCAoIChGVF9VTG9uZylfeDEgPDwgMjQgKSB8ICAgICBcCisgICAgICAgICAgICAoIChGVF9VTG9uZylfeDIgPDwgMTYgKSB8ICAgICBcCisgICAgICAgICAgICAoIChGVF9VTG9uZylfeDMgPDwgIDggKSB8ICAgICBcCisgICAgICAgICAgICAgIChGVF9VTG9uZylfeDQgICAgICAgICApCisKKworICAvKiBmcm9tIGluY2x1ZGUvZnJlZXR5cGUyL2Z0c3lzdGVtLmggKi8KKworICB0eXBlZGVmIHN0cnVjdCBGVF9NZW1vcnlSZWNfKiAgRlRfTWVtb3J5OworCisgIHR5cGVkZWYgdm9pZCogKCpGVF9BbGxvY19GdW5jKSggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAgICAgICBzaXplICk7CisKKyAgdHlwZWRlZiB2b2lkICgqRlRfRnJlZV9GdW5jKSggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgYmxvY2sgKTsKKworICB0eXBlZGVmIHZvaWQqICgqRlRfUmVhbGxvY19GdW5jKSggRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICAgICAgIGN1cl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAgICAgICBuZXdfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgYmxvY2sgKTsKKworICB0eXBlZGVmIHN0cnVjdCBGVF9NZW1vcnlSZWNfCisgIHsKKyAgICB2b2lkKiAgICAgICAgICAgIHVzZXI7CisKKyAgICBGVF9BbGxvY19GdW5jICAgIGFsbG9jOworICAgIEZUX0ZyZWVfRnVuYyAgICAgZnJlZTsKKyAgICBGVF9SZWFsbG9jX0Z1bmMgIHJlYWxsb2M7CisKKyAgfSBGVF9NZW1vcnlSZWM7CisKKworICAvKiBmcm9tIHNyYy9mdGNhbGMuYyAqLworCisjaWYgKCBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9XSU42NCApCisKKyAgdHlwZWRlZiBfX2ludDY0ICBGVF9JbnQ2NDsKKworI2Vsc2UKKworI2luY2x1ZGUgImludHR5cGVzLmgiCisKKyAgdHlwZWRlZiBpbnQ2NF90ICBGVF9JbnQ2NDsKKworI2VuZGlmCisKKworICBzdGF0aWMgRlRfTG9uZworICBGVF9NdWxEaXYoIEZUX0xvbmcgIGEsCisgICAgICAgICAgICAgRlRfTG9uZyAgYiwKKyAgICAgICAgICAgICBGVF9Mb25nICBjICkKKyAgeworICAgIEZUX0ludCAgIHM7CisgICAgRlRfTG9uZyAgZDsKKworCisgICAgcyA9IDE7CisgICAgaWYgKCBhIDwgMCApIHsgYSA9IC1hOyBzID0gLTE7IH0KKyAgICBpZiAoIGIgPCAwICkgeyBiID0gLWI7IHMgPSAtczsgfQorICAgIGlmICggYyA8IDAgKSB7IGMgPSAtYzsgcyA9IC1zOyB9CisKKyAgICBkID0gKEZUX0xvbmcpKCBjID4gMCA/ICggKEZUX0ludDY0KWEgKiBiICsgKCBjID4+IDEgKSApIC8gYworICAgICAgICAgICAgICAgICAgICAgICAgIDogMHg3RkZGRkZGRkwgKTsKKworICAgIHJldHVybiAoIHMgPiAwICkgPyBkIDogLWQ7CisgIH0KKworCisgIHN0YXRpYyBGVF9Mb25nCisgIEZUX011bERpdl9Ob19Sb3VuZCggRlRfTG9uZyAgYSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICBiLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgIGMgKQorICB7CisgICAgRlRfSW50ICAgczsKKyAgICBGVF9Mb25nICBkOworCisKKyAgICBzID0gMTsKKyAgICBpZiAoIGEgPCAwICkgeyBhID0gLWE7IHMgPSAtMTsgfQorICAgIGlmICggYiA8IDAgKSB7IGIgPSAtYjsgcyA9IC1zOyB9CisgICAgaWYgKCBjIDwgMCApIHsgYyA9IC1jOyBzID0gLXM7IH0KKworICAgIGQgPSAoRlRfTG9uZykoIGMgPiAwID8gKEZUX0ludDY0KWEgKiBiIC8gYworICAgICAgICAgICAgICAgICAgICAgICAgIDogMHg3RkZGRkZGRkwgKTsKKworICAgIHJldHVybiAoIHMgPiAwICkgPyBkIDogLWQ7CisgIH0KKworI2VuZGlmIC8qIF9fRlRNSVNDX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvZnRyYXN0ZXIuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL2Z0cmFzdGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY0ZjZiMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL2Z0cmFzdGVyLmMKQEAgLTAsMCArMSwzNjQwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHJhc3Rlci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIGdseXBoIHJhc3Rlcml6ZXIgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMywgMjAwNSwgMjAwNy0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGNhbiBiZSBjb21waWxlZCB3aXRob3V0IHRoZSByZXN0IG9mIHRoZSBGcmVlVHlwZSBlbmdpbmUsIGJ5ICovCisgIC8qIGRlZmluaW5nIHRoZSBfU1RBTkRBTE9ORV8gbWFjcm8gd2hlbiBjb21waWxpbmcgaXQuICBZb3UgYWxzbyBuZWVkIHRvICAqLworICAvKiBwdXQgdGhlIGZpbGVzIGBmdGltYWdlLmgnIGFuZCBgZnRtaXNjLmgnIGludG8gdGhlICQoaW5jZGlyKSAgICAgICAgICAgKi8KKyAgLyogZGlyZWN0b3J5LiAgVHlwaWNhbGx5LCB5b3Ugc2hvdWxkIGRvIHNvbWV0aGluZyBsaWtlICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtIGNvcHkgYHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYycgKHRoaXMgZmlsZSkgdG8geW91ciBjdXJyZW50IGRpcmVjdG9yeSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gY29weSBgaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgnIGFuZCBgc3JjL3Jhc3Rlci9mdG1pc2MuaCcgICAgICAgICAqLworICAvKiAgIHRvIHlvdXIgY3VycmVudCBkaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gY29tcGlsZSBgZnRyYXN0ZXInIHdpdGggdGhlIF9TVEFOREFMT05FXyBtYWNybyBkZWZpbmVkLCBhcyBpbiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGNjIC1jIC1EX1NUQU5EQUxPTkVfIGZ0cmFzdGVyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgcmVuZGVyZXIgY2FuIGJlIGluaXRpYWxpemVkIHdpdGggYSBjYWxsIHRvICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogYGZ0X3N0YW5kYXJkX3Jhc3Rlci5yYXN0ZXJfbmV3JzsgYSBiaXRtYXAgY2FuIGJlIGdlbmVyYXRlZCAgICAgICAgICAgICovCisgIC8qIHdpdGggYSBjYWxsIHRvIGBmdF9zdGFuZGFyZF9yYXN0ZXIucmFzdGVyX3JlbmRlcicuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU2VlIHRoZSBjb21tZW50cyBhbmQgZG9jdW1lbnRhdGlvbiBpbiB0aGUgZmlsZSBgZnRpbWFnZS5oJyBmb3IgbW9yZSAgICovCisgIC8qIGRldGFpbHMgb24gaG93IHRoZSByYXN0ZXIgd29ya3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgaXMgYSByZXdyaXRlIG9mIHRoZSBGcmVlVHlwZSAxLnggc2Nhbi1saW5lIGNvbnZlcnRlciAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBfU1RBTkRBTE9ORV8KKworI2RlZmluZSBGVF9DT05GSUdfU1RBTkRBUkRfTElCUkFSWV9IICA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxzdHJpbmcuaD4gICAgICAgICAgIC8qIGZvciBtZW1zZXQgKi8KKworI2luY2x1ZGUgImZ0bWlzYy5oIgorI2luY2x1ZGUgImZ0aW1hZ2UuaCIKKworI2Vsc2UgLyogIV9TVEFOREFMT05FXyAqLworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgImZ0cmFzdGVyLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCIgICAvKiBmb3IgRlRfTXVsRGl2IGFuZCBGVF9NdWxEaXZfTm9fUm91bmQgKi8KKworI2luY2x1ZGUgInJhc3RwaWMuaCIKKworI2VuZGlmIC8qICFfU1RBTkRBTE9ORV8gKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQSBzaW1wbGUgdGVjaG5pY2FsIG5vdGUgb24gaG93IHRoZSByYXN0ZXIgd29ya3MgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBDb252ZXJ0aW5nIGFuIG91dGxpbmUgaW50byBhIGJpdG1hcCBpcyBhY2hpZXZlZCBpbiBzZXZlcmFsIHN0ZXBzOiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIDEgLSBEZWNvbXBvc2luZyB0aGUgb3V0bGluZSBpbnRvIHN1Y2Nlc3NpdmUgYHByb2ZpbGVzJy4gIEVhY2ggICAgICAgKi8KKyAgLyogICAgICAgcHJvZmlsZSBpcyBzaW1wbHkgYW4gYXJyYXkgb2Ygc2NhbmxpbmUgaW50ZXJzZWN0aW9ucyBvbiBhIGdpdmVuICovCisgIC8qICAgICAgIGRpbWVuc2lvbi4gIEEgcHJvZmlsZSdzIG1haW4gYXR0cmlidXRlcyBhcmUgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgbyBpdHMgc2NhbmxpbmUgcG9zaXRpb24gYm91bmRhcmllcywgaS5lLiBgWW1pbicgYW5kIGBZbWF4JyAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBvIGFuIGFycmF5IG9mIGludGVyc2VjdGlvbiBjb29yZGluYXRlcyBmb3IgZWFjaCBzY2FubGluZSAgICAgICAgKi8KKyAgLyogICAgICAgICBiZXR3ZWVuIGBZbWluJyBhbmQgYFltYXgnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBvIGEgZGlyZWN0aW9uLCBpbmRpY2F0aW5nIHdoZXRoZXIgaXQgd2FzIGJ1aWx0IGdvaW5nIGB1cCcgb3IgICAgKi8KKyAgLyogICAgICAgICBgZG93bicsIGFzIHRoaXMgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIGZpbGxpbmcgcnVsZXMgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBvIGl0cyBkcm9wLW91dCBtb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgMiAtIFN3ZWVwaW5nIHRoZSB0YXJnZXQgbWFwJ3Mgc2NhbmxpbmVzIGluIG9yZGVyIHRvIGNvbXB1dGUgc2VnbWVudCAqLworICAvKiAgICAgICBgc3BhbnMnIHdoaWNoIGFyZSB0aGVuIGZpbGxlZC4gIEFkZGl0aW9uYWxseSwgdGhpcyBwYXNzICAgICAgICAgKi8KKyAgLyogICAgICAgcGVyZm9ybXMgZHJvcC1vdXQgY29udHJvbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFRoZSBvdXRsaW5lIGRhdGEgaXMgcGFyc2VkIGR1cmluZyBzdGVwIDEgb25seS4gIFRoZSBwcm9maWxlcyBhcmUgICAgKi8KKyAgLyogICBidWlsdCBmcm9tIHRoZSBib3R0b20gb2YgdGhlIHJlbmRlciBwb29sLCB1c2VkIGFzIGEgc3RhY2suICBUaGUgICAgICovCisgIC8qICAgZm9sbG93aW5nIGdyYXBoaWNzIHNob3dzIHRoZSBwcm9maWxlIGxpc3QgdW5kZXIgY29uc3RydWN0aW9uOiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gXyBfICAgICovCisgIC8qICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAqLworICAvKiAgICB8IHByb2ZpbGUgfCBjb29yZGluYXRlcyBmb3IgfCBwcm9maWxlIHwgY29vcmRpbmF0ZXMgZm9yIHwtLT4gICAgICAgKi8KKyAgLyogICAgfCAgICAxICAgIHwgIHByb2ZpbGUgMSAgICAgIHwgICAgMiAgICB8ICBwcm9maWxlIDIgICAgICB8LS0+ICAgICAgICovCisgIC8qICAgIHxfX19fX19fX198X19fX19fX19fX19fX19fX198X19fX19fX19ffF9fX19fX19fX19fX19fX19ffF9fIF8gXyAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICovCisgIC8qICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAqLworICAvKiBzdGFydCBvZiByZW5kZXIgcG9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhlIHRvcCBvZiB0aGUgcHJvZmlsZSBzdGFjayBpcyBrZXB0IGluIHRoZSBgdG9wJyB2YXJpYWJsZS4gICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBBcyB5b3UgY2FuIHNlZSwgYSBwcm9maWxlIHJlY29yZCBpcyBwdXNoZWQgb24gdG9wIG9mIHRoZSByZW5kZXIgICAgICovCisgIC8qICAgcG9vbCwgd2hpY2ggaXMgdGhlbiBmb2xsb3dlZCBieSBpdHMgY29vcmRpbmF0ZXMvaW50ZXJzZWN0aW9ucy4gIElmICAqLworICAvKiAgIGEgY2hhbmdlIG9mIGRpcmVjdGlvbiBpcyBkZXRlY3RlZCBpbiB0aGUgb3V0bGluZSwgYSBuZXcgcHJvZmlsZSBpcyAgKi8KKyAgLyogICBnZW5lcmF0ZWQgdW50aWwgdGhlIGVuZCBvZiB0aGUgb3V0bGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIE5vdGUgdGhhdCB3aGVuIGFsbCBwcm9maWxlcyBoYXZlIGJlZW4gZ2VuZXJhdGVkLCB0aGUgZnVuY3Rpb24gICAgICAgKi8KKyAgLyogICBGaW5hbGl6ZV9Qcm9maWxlX1RhYmxlKCkgaXMgdXNlZCB0byByZWNvcmQsIGZvciBlYWNoIHByb2ZpbGUsIGl0cyAgICovCisgIC8qICAgYm90dG9tLW1vc3Qgc2NhbmxpbmUgYXMgd2VsbCBhcyB0aGUgc2NhbmxpbmUgYWJvdmUgaXRzIHVwbW9zdCAgICAgICAqLworICAvKiAgIGJvdW5kYXJ5LiAgVGhlc2UgcG9zaXRpb25zIGFyZSBjYWxsZWQgYHktdHVybnMnIGJlY2F1c2UgdGhleSAoc29ydCAgKi8KKyAgLyogICBvZikgY29ycmVzcG9uZCB0byBsb2NhbCBleHRyZW1hLiAgVGhleSBhcmUgc3RvcmVkIGluIGEgc29ydGVkIGxpc3QgICovCisgIC8qICAgYnVpbHQgZnJvbSB0aGUgdG9wIG9mIHRoZSByZW5kZXIgcG9vbCBhcyBhIGRvd253YXJkcyBzdGFjazogICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICBfIF8gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICA8LS18IHNvcnRlZCBsaXN0IG9mICAgICB8ICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgPC0tfCAgZXh0cmVtYSBzY2FubGluZXMgfCAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgXyBfIF9fX19fX19fX19fX19fX19fX3xfX19fX19fX19fX19fX19fX19fX3wgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCdWZmICAgICAgICAgICBzaXplQnVmZiA9IGVuZCBvZiBwb29sICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhpcyBsaXN0IGlzIGxhdGVyIHVzZWQgZHVyaW5nIHRoZSBzd2VlcCBwaGFzZSBpbiBvcmRlciB0byAgICAgICAgICAqLworICAvKiAgIG9wdGltaXplIHBlcmZvcm1hbmNlIChzZWUgdGVjaG5pY2FsIG5vdGUgb24gdGhlIHN3ZWVwIGJlbG93KS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgT2YgY291cnNlLCB0aGUgcmFzdGVyIGRldGVjdHMgd2hldGhlciB0aGUgdHdvIHN0YWNrcyBjb2xsaWRlIGFuZCAgICAqLworICAvKiAgIGhhbmRsZXMgdGhlIHNpdHVhdGlvbiBwcm9wZXJseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKi8KKyAgLyoqICBDT05GSUdVUkFUSU9OIE1BQ1JPUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiovCisgIC8qKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyogZGVmaW5lIERFQlVHX1JBU1RFUiBpZiB5b3Ugd2FudCB0byBjb21waWxlIGEgZGVidWdnaW5nIHZlcnNpb24gKi8KKy8qICNkZWZpbmUgREVCVUdfUkFTVEVSICovCisKKyAgLyogZGVmaW5lIEZUX1JBU1RFUl9PUFRJT05fQU5USV9BTElBU0lORyBpZiB5b3Ugd2FudCB0byBzdXBwb3J0ICovCisgIC8qIDUtbGV2ZWxzIGFudGktYWxpYXNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBGVF9SQVNURVJfT1BUSU9OX0FOVElfQUxJQVNJTkcgKi8KKworICAvKiBUaGUgc2l6ZSBvZiB0aGUgdHdvLWxpbmVzIGludGVybWVkaWF0ZSBiaXRtYXAgdXNlZCAqLworICAvKiBmb3IgYW50aS1hbGlhc2luZywgaW4gYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBSQVNURVJfR1JBWV9MSU5FUyAgMjA0OAorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKi8KKyAgLyoqICBPVEhFUiBNQUNST1MgKGRvIG5vdCBjaGFuZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiovCisgIC8qKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfcmFzdGVyCisKKworI2lmZGVmIF9TVEFOREFMT05FXworCisgIC8qIEF1eGlsaWFyeSBtYWNyb3MgZm9yIHRva2VuIGNvbmNhdGVuYXRpb24uICovCisjZGVmaW5lIEZUX0VSUl9YQ0FUKCB4LCB5ICkgIHggIyMgeQorI2RlZmluZSBGVF9FUlJfQ0FUKCB4LCB5ICkgICBGVF9FUlJfWENBVCggeCwgeSApCisKKyAgLyogVGhpcyBtYWNybyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgaXMgdW51c2VkLiAqLworICAvKiBJdHMgcHVycG9zZSBpcyBzaW1wbHkgdG8gcmVkdWNlIGNvbXBpbGVyIHdhcm5pbmdzLiAgTm90ZSBhbHNvIHRoYXQgICovCisgIC8qIHNpbXBseSBkZWZpbmluZyBpdCBhcyBgKHZvaWQpeCcgZG9lc24ndCBhdm9pZCB3YXJuaW5ncyB3aXRoIGNlcnRhaW4gKi8KKyAgLyogQU5TSSBjb21waWxlcnMgKGUuZy4gTENDKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9VTlVTRUQoIHggKSAgKHgpID0gKHgpCisKKyAgLyogRGlzYWJsZSB0aGUgdHJhY2luZyBtZWNoYW5pc20gZm9yIHNpbXBsaWNpdHkgLS0gZGV2ZWxvcGVycyBjYW4gICAgICAqLworICAvKiBhY3RpdmF0ZSBpdCBlYXNpbHkgYnkgcmVkZWZpbmluZyB0aGVzZSBtYWNyb3MuICAgICAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIEZUX0VSUk9SCisjZGVmaW5lIEZUX0VSUk9SKCB4ICkgIGRvIHsgfSB3aGlsZSAoIDAgKSAgICAgLyogbm90aGluZyAqLworI2VuZGlmCisKKyNpZm5kZWYgRlRfVFJBQ0UKKyNkZWZpbmUgRlRfVFJBQ0UoIHggKSAgIGRvIHsgfSB3aGlsZSAoIDAgKSAgICAvKiBub3RoaW5nICovCisjZGVmaW5lIEZUX1RSQUNFMSggeCApICBkbyB7IH0gd2hpbGUgKCAwICkgICAgLyogbm90aGluZyAqLworI2RlZmluZSBGVF9UUkFDRTYoIHggKSAgZG8geyB9IHdoaWxlICggMCApICAgIC8qIG5vdGhpbmcgKi8KKyNlbmRpZgorCisjaWZuZGVmIEZUX1RIUk9XCisjZGVmaW5lIEZUX1RIUk9XKCBlICkgIEZUX0VSUl9DQVQoIFJhc3Rlcl9FcnJfLCBlICkKKyNlbmRpZgorCisjZGVmaW5lIFJhc3Rlcl9FcnJfTm9uZSAgICAgICAgICAwCisjZGVmaW5lIFJhc3Rlcl9FcnJfTm90X0luaSAgICAgIC0xCisjZGVmaW5lIFJhc3Rlcl9FcnJfT3ZlcmZsb3cgICAgIC0yCisjZGVmaW5lIFJhc3Rlcl9FcnJfTmVnX0hlaWdodCAgIC0zCisjZGVmaW5lIFJhc3Rlcl9FcnJfSW52YWxpZCAgICAgIC00CisjZGVmaW5lIFJhc3Rlcl9FcnJfVW5zdXBwb3J0ZWQgIC01CisKKyNkZWZpbmUgZnRfbWVtc2V0ICBtZW1zZXQKKworI2RlZmluZSBGVF9ERUZJTkVfUkFTVEVSX0ZVTkNTKCBjbGFzc18sIGdseXBoX2Zvcm1hdF8sIHJhc3Rlcl9uZXdfLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhc3Rlcl9yZXNldF8sIHJhc3Rlcl9zZXRfbW9kZV8sICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyX3JlbmRlcl8sIHJhc3Rlcl9kb25lXyApICAgICAgXAorICAgICAgICAgIGNvbnN0IEZUX1Jhc3Rlcl9GdW5jcyBjbGFzc18gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGdseXBoX2Zvcm1hdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmFzdGVyX25ld18sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByYXN0ZXJfcmVzZXRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJhc3Rlcl9zZXRfbW9kZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmFzdGVyX3JlbmRlcl8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByYXN0ZXJfZG9uZV8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIH07CisKKyNlbHNlIC8qICFfU1RBTkRBTE9ORV8gKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIgICAgICAgLyogZm9yIEZUX1RSQUNFLCBGVF9FUlJPUiwgYW5kIEZUX1RIUk9XICovCisKKyNpbmNsdWRlICJyYXN0ZXJycy5oIgorCisjZGVmaW5lIFJhc3Rlcl9FcnJfTm9uZSAgICAgICAgIEZUX0Vycl9PaworI2RlZmluZSBSYXN0ZXJfRXJyX05vdF9JbmkgICAgICBSYXN0ZXJfRXJyX1Jhc3Rlcl9VbmluaXRpYWxpemVkCisjZGVmaW5lIFJhc3Rlcl9FcnJfT3ZlcmZsb3cgICAgIFJhc3Rlcl9FcnJfUmFzdGVyX092ZXJmbG93CisjZGVmaW5lIFJhc3Rlcl9FcnJfTmVnX0hlaWdodCAgIFJhc3Rlcl9FcnJfUmFzdGVyX05lZ2F0aXZlX0hlaWdodAorI2RlZmluZSBSYXN0ZXJfRXJyX0ludmFsaWQgICAgICBSYXN0ZXJfRXJyX0ludmFsaWRfT3V0bGluZQorI2RlZmluZSBSYXN0ZXJfRXJyX1Vuc3VwcG9ydGVkICBSYXN0ZXJfRXJyX0Nhbm5vdF9SZW5kZXJfR2x5cGgKKworCisjZW5kaWYgLyogIV9TVEFOREFMT05FXyAqLworCisKKyNpZm5kZWYgRlRfTUVNX1NFVAorI2RlZmluZSBGVF9NRU1fU0VUKCBkLCBzLCBjICkgIGZ0X21lbXNldCggZCwgcywgYyApCisjZW5kaWYKKworI2lmbmRlZiBGVF9NRU1fWkVSTworI2RlZmluZSBGVF9NRU1fWkVSTyggZGVzdCwgY291bnQgKSAgRlRfTUVNX1NFVCggZGVzdCwgMCwgY291bnQgKQorI2VuZGlmCisKKyAgLyogRk11bERpdiBtZWFucyBgRmFzdCBNdWxEaXYnOyBpdCBpcyB1c2VkIGluIGNhc2Ugd2hlcmUgYGInIGlzICAgICAgICovCisgIC8qIHR5cGljYWxseSBhIHNtYWxsIHZhbHVlIGFuZCB0aGUgcmVzdWx0IG9mIGEqYiBpcyBrbm93biB0byBmaXQgaW50byAqLworICAvKiAzMiBiaXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRk11bERpdiggYSwgYiwgYyApICAoIChhKSAqIChiKSAvIChjKSApCisKKyAgLyogT24gdGhlIG90aGVyIGhhbmQsIFNNdWxEaXYgbWVhbnMgYFNsb3cgTXVsRGl2JywgYW5kIGlzIHVzZWQgdHlwaWNhbGx5ICovCisgIC8qIGZvciBjbGlwcGluZyBjb21wdXRhdGlvbnMuICBJdCBzaW1wbHkgdXNlcyB0aGUgRlRfTXVsRGl2KCkgZnVuY3Rpb24gICAqLworICAvKiBkZWZpbmVkIGluIGBmdGNhbGMuaCcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU011bERpdiAgICAgICAgICAgRlRfTXVsRGl2CisjZGVmaW5lIFNNdWxEaXZfTm9fUm91bmQgIEZUX011bERpdl9Ob19Sb3VuZAorCisgIC8qIFRoZSByYXN0ZXJpemVyIGlzIGEgdmVyeSBnZW5lcmFsIHB1cnBvc2UgY29tcG9uZW50OyBwbGVhc2UgbGVhdmUgKi8KKyAgLyogdGhlIGZvbGxvd2luZyByZWRlZmluaXRpb25zIHRoZXJlICh5b3UgbmV2ZXIga25vdyB5b3VyIHRhcmdldCAgICAqLworICAvKiBlbnZpcm9ubWVudCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZm5kZWYgVFJVRQorI2RlZmluZSBUUlVFICAgMQorI2VuZGlmCisKKyNpZm5kZWYgRkFMU0UKKyNkZWZpbmUgRkFMU0UgIDAKKyNlbmRpZgorCisjaWZuZGVmIE5VTEwKKyNkZWZpbmUgTlVMTCAgKHZvaWQqKTAKKyNlbmRpZgorCisjaWZuZGVmIFNVQ0NFU1MKKyNkZWZpbmUgU1VDQ0VTUyAgMAorI2VuZGlmCisKKyNpZm5kZWYgRkFJTFVSRQorI2RlZmluZSBGQUlMVVJFICAxCisjZW5kaWYKKworCisjZGVmaW5lIE1heEJlemllciAgMzIgICAvKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2tlZCBCZXppZXIgY3VydmVzLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0dGluZyB0aGlzIGNvbnN0YW50IHRvIG1vcmUgdGhhbiAzMiBpcyBhICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHB1cmUgd2FzdGUgb2Ygc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgUGl4ZWxfQml0cyAgNiAgIC8qIGZyYWN0aW9uYWwgYml0cyBvZiAqaW5wdXQqIGNvb3JkaW5hdGVzICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqLworICAvKiogIFNJTVBMRSBUWVBFIERFQ0xBUkFUSU9OUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKi8KKyAgLyoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICB0eXBlZGVmIGludCAgICAgICAgICAgICBJbnQ7CisgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgIFVJbnQ7CisgIHR5cGVkZWYgc2hvcnQgICAgICAgICAgIFNob3J0OworICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICBVU2hvcnQsICpQVVNob3J0OworICB0eXBlZGVmIGxvbmcgICAgICAgICAgICBMb25nLCAqUExvbmc7CisgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgIFVMb25nOworCisgIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgIEJ5dGUsICpQQnl0ZTsKKyAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgQm9vbDsKKworCisgIHR5cGVkZWYgdW5pb24gIEFsaWdubWVudF8KKyAgeworICAgIGxvbmcgICAgbDsKKyAgICB2b2lkKiAgIHA7CisgICAgdm9pZCAgKCpmKSh2b2lkKTsKKworICB9IEFsaWdubWVudCwgKlBBbGlnbm1lbnQ7CisKKworICB0eXBlZGVmIHN0cnVjdCAgVFBvaW50XworICB7CisgICAgTG9uZyAgeDsKKyAgICBMb25nICB5OworCisgIH0gVFBvaW50OworCisKKyAgLyogdmFsdWVzIGZvciB0aGUgYGZsYWdzJyBiaXQgZmllbGQgKi8KKyNkZWZpbmUgRmxvd19VcCAgICAgICAgICAgMHg4CisjZGVmaW5lIE92ZXJzaG9vdF9Ub3AgICAgIDB4MTAKKyNkZWZpbmUgT3ZlcnNob290X0JvdHRvbSAgMHgyMAorCisKKyAgLyogU3RhdGVzIG9mIGVhY2ggbGluZSwgYXJjLCBhbmQgcHJvZmlsZSAqLworICB0eXBlZGVmIGVudW0gIFRTdGF0ZXNfCisgIHsKKyAgICBVbmtub3duX1N0YXRlLAorICAgIEFzY2VuZGluZ19TdGF0ZSwKKyAgICBEZXNjZW5kaW5nX1N0YXRlLAorICAgIEZsYXRfU3RhdGUKKworICB9IFRTdGF0ZXM7CisKKworICB0eXBlZGVmIHN0cnVjdCBUUHJvZmlsZV8gIFRQcm9maWxlOworICB0eXBlZGVmIFRQcm9maWxlKiAgICAgICAgIFBQcm9maWxlOworCisgIHN0cnVjdCAgVFByb2ZpbGVfCisgIHsKKyAgICBGVF9GMjZEb3Q2ICBYOyAgICAgICAgICAgLyogY3VycmVudCBjb29yZGluYXRlIGR1cmluZyBzd2VlcCAgICAgICAgICAqLworICAgIFBQcm9maWxlICAgIGxpbms7ICAgICAgICAvKiBsaW5rIHRvIG5leHQgcHJvZmlsZSAodmFyaW91cyBwdXJwb3NlcykgICovCisgICAgUExvbmcgICAgICAgb2Zmc2V0OyAgICAgIC8qIHN0YXJ0IG9mIHByb2ZpbGUncyBkYXRhIGluIHJlbmRlciBwb29sICAgKi8KKyAgICB1bnNpZ25lZCAgICBmbGFnczsgICAgICAgLyogQml0IDAtMjogZHJvcC1vdXQgbW9kZSAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCaXQgMzogcHJvZmlsZSBvcmllbnRhdGlvbiAodXAvZG93bikgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJpdCA0OiBpcyB0b3AgcHJvZmlsZT8gICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQml0IDU6IGlzIGJvdHRvbSBwcm9maWxlPyAgICAgICAgICAgICAgICAqLworICAgIGxvbmcgICAgICAgIGhlaWdodDsgICAgICAvKiBwcm9maWxlJ3MgaGVpZ2h0IGluIHNjYW5saW5lcyAgICAgICAgICAgICovCisgICAgbG9uZyAgICAgICAgc3RhcnQ7ICAgICAgIC8qIHByb2ZpbGUncyBzdGFydGluZyBzY2FubGluZSAgICAgICAgICAgICAgKi8KKworICAgIHVuc2lnbmVkICAgIGNvdW50TDsgICAgICAvKiBudW1iZXIgb2YgbGluZXMgdG8gc3RlcCBiZWZvcmUgdGhpcyAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByb2ZpbGUgYmVjb21lcyBkcmF3YWJsZSAgICAgICAgICAgICAgICAgKi8KKworICAgIFBQcm9maWxlICAgIG5leHQ7ICAgICAgICAvKiBuZXh0IHByb2ZpbGUgaW4gc2FtZSBjb250b3VyLCB1c2VkICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGR1cmluZyBkcm9wLW91dCBjb250cm9sICAgICAgICAgICAgICAgICAgKi8KKyAgfTsKKworICB0eXBlZGVmIFBQcm9maWxlICAgVFByb2ZpbGVMaXN0OworICB0eXBlZGVmIFBQcm9maWxlKiAgUFByb2ZpbGVMaXN0OworCisKKyAgLyogU2ltcGxlIHJlY29yZCB1c2VkIHRvIGltcGxlbWVudCBhIHN0YWNrIG9mIGJhbmRzLCByZXF1aXJlZCAqLworICAvKiBieSB0aGUgc3ViLWJhbmRpbmcgbWVjaGFuaXNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBibGFja19UQmFuZF8KKyAgeworICAgIFNob3J0ICB5X21pbjsgICAvKiBiYW5kJ3MgbWluaW11bSAqLworICAgIFNob3J0ICB5X21heDsgICAvKiBiYW5kJ3MgbWF4aW11bSAqLworCisgIH0gYmxhY2tfVEJhbmQ7CisKKworI2RlZmluZSBBbGlnblByb2ZpbGVTaXplIFwKKyAgKCAoIHNpemVvZiAoIFRQcm9maWxlICkgKyBzaXplb2YgKCBBbGlnbm1lbnQgKSAtIDEgKSAvIHNpemVvZiAoIGxvbmcgKSApCisKKworI3VuZGVmIFJBU19BUkcKKyN1bmRlZiBSQVNfQVJHUworI3VuZGVmIFJBU19WQVIKKyN1bmRlZiBSQVNfVkFSUworCisjaWZkZWYgRlRfU1RBVElDX1JBU1RFUgorCisKKyNkZWZpbmUgUkFTX0FSR1MgICAgICAgLyogdm9pZCAqLworI2RlZmluZSBSQVNfQVJHICAgICAgICAvKiB2b2lkICovCisKKyNkZWZpbmUgUkFTX1ZBUlMgICAgICAgLyogdm9pZCAqLworI2RlZmluZSBSQVNfVkFSICAgICAgICAvKiB2b2lkICovCisKKyNkZWZpbmUgRlRfVU5VU0VEX1JBU1RFUiAgZG8geyB9IHdoaWxlICggMCApCisKKworI2Vsc2UgLyogIUZUX1NUQVRJQ19SQVNURVIgKi8KKworCisjZGVmaW5lIFJBU19BUkdTICAgICAgIGJsYWNrX1BXb3JrZXIgIHdvcmtlciwKKyNkZWZpbmUgUkFTX0FSRyAgICAgICAgYmxhY2tfUFdvcmtlciAgd29ya2VyCisKKyNkZWZpbmUgUkFTX1ZBUlMgICAgICAgd29ya2VyLAorI2RlZmluZSBSQVNfVkFSICAgICAgICB3b3JrZXIKKworI2RlZmluZSBGVF9VTlVTRURfUkFTVEVSICBGVF9VTlVTRUQoIHdvcmtlciApCisKKworI2VuZGlmIC8qICFGVF9TVEFUSUNfUkFTVEVSICovCisKKworICB0eXBlZGVmIHN0cnVjdCBibGFja19UV29ya2VyXyAgYmxhY2tfVFdvcmtlciwgKmJsYWNrX1BXb3JrZXI7CisKKworICAvKiBwcm90b3R5cGVzIHVzZWQgZm9yIHN3ZWVwIGZ1bmN0aW9uIGRpc3BhdGNoICovCisgIHR5cGVkZWYgdm9pZAorICBGdW5jdGlvbl9Td2VlcF9Jbml0KCBSQVNfQVJHUyBTaG9ydCogIG1pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvcnQqICBtYXggKTsKKworICB0eXBlZGVmIHZvaWQKKyAgRnVuY3Rpb25fU3dlZXBfU3BhbiggUkFTX0FSR1MgU2hvcnQgICAgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUHJvZmlsZSAgICBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUHJvZmlsZSAgICByaWdodCApOworCisgIHR5cGVkZWYgdm9pZAorICBGdW5jdGlvbl9Td2VlcF9TdGVwKCBSQVNfQVJHICk7CisKKworICAvKiBOT1RFOiBUaGVzZSBvcGVyYXRpb25zIGFyZSBvbmx5IHZhbGlkIG9uIDIncyBjb21wbGVtZW50IHByb2Nlc3NvcnMgKi8KKyN1bmRlZiBGTE9PUgorI3VuZGVmIENFSUxJTkcKKyN1bmRlZiBUUlVOQworI3VuZGVmIFNDQUxFRAorCisjZGVmaW5lIEZMT09SKCB4ICkgICAgKCAoeCkgJiAtcmFzLnByZWNpc2lvbiApCisjZGVmaW5lIENFSUxJTkcoIHggKSAgKCAoICh4KSArIHJhcy5wcmVjaXNpb24gLSAxICkgJiAtcmFzLnByZWNpc2lvbiApCisjZGVmaW5lIFRSVU5DKCB4ICkgICAgKCAoTG9uZykoeCkgPj4gcmFzLnByZWNpc2lvbl9iaXRzICkKKyNkZWZpbmUgRlJBQyggeCApICAgICAoICh4KSAmICggcmFzLnByZWNpc2lvbiAtIDEgKSApCisjZGVmaW5lIFNDQUxFRCggeCApICAgKCAoIChVTG9uZykoeCkgPDwgcmFzLnNjYWxlX3NoaWZ0ICkgLSByYXMucHJlY2lzaW9uX2hhbGYgKQorCisjZGVmaW5lIElTX0JPVFRPTV9PVkVSU0hPT1QoIHggKSBcCisgICAgICAgICAgKEJvb2wpKCBDRUlMSU5HKCB4ICkgLSB4ID49IHJhcy5wcmVjaXNpb25faGFsZiApCisjZGVmaW5lIElTX1RPUF9PVkVSU0hPT1QoIHggKSAgICBcCisgICAgICAgICAgKEJvb2wpKCB4IC0gRkxPT1IoIHggKSA+PSByYXMucHJlY2lzaW9uX2hhbGYgKQorCisgIC8qIFRoZSBtb3N0IHVzZWQgdmFyaWFibGVzIGFyZSBwb3NpdGlvbmVkIGF0IHRoZSB0b3Agb2YgdGhlIHN0cnVjdHVyZS4gKi8KKyAgLyogVGh1cywgdGhlaXIgb2Zmc2V0IGNhbiBiZSBjb2RlZCB3aXRoIGxlc3Mgb3Bjb2RlcywgcmVzdWx0aW5nIGluIGEgICAqLworICAvKiBzbWFsbGVyIGV4ZWN1dGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgc3RydWN0ICBibGFja19UV29ya2VyXworICB7CisgICAgSW50ICAgICAgICAgcHJlY2lzaW9uX2JpdHM7ICAgICAvKiBwcmVjaXNpb24gcmVsYXRlZCB2YXJpYWJsZXMgICAgICAgICAqLworICAgIEludCAgICAgICAgIHByZWNpc2lvbjsKKyAgICBJbnQgICAgICAgICBwcmVjaXNpb25faGFsZjsKKyAgICBJbnQgICAgICAgICBwcmVjaXNpb25fc2hpZnQ7CisgICAgSW50ICAgICAgICAgcHJlY2lzaW9uX3N0ZXA7CisgICAgSW50ICAgICAgICAgcHJlY2lzaW9uX2ppdHRlcjsKKworICAgIEludCAgICAgICAgIHNjYWxlX3NoaWZ0OyAgICAgICAgLyogPT0gcHJlY2lzaW9uX3NoaWZ0ICAgZm9yIGJpdG1hcHMgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qID09IHByZWNpc2lvbl9zaGlmdCsxIGZvciBwaXhtYXBzICAgICovCisKKyAgICBQTG9uZyAgICAgICBidWZmOyAgICAgICAgICAgICAgIC8qIFRoZSBwcm9maWxlcyBidWZmZXIgICAgICAgICAgICAgICAgICovCisgICAgUExvbmcgICAgICAgc2l6ZUJ1ZmY7ICAgICAgICAgICAvKiBSZW5kZXIgcG9vbCBzaXplICAgICAgICAgICAgICAgICAgICAqLworICAgIFBMb25nICAgICAgIG1heEJ1ZmY7ICAgICAgICAgICAgLyogUHJvZmlsZXMgYnVmZmVyIHNpemUgICAgICAgICAgICAgICAgKi8KKyAgICBQTG9uZyAgICAgICB0b3A7ICAgICAgICAgICAgICAgIC8qIEN1cnJlbnQgY3Vyc29yIGluIGJ1ZmZlciAgICAgICAgICAgICovCisKKyAgICBGVF9FcnJvciAgICBlcnJvcjsKKworICAgIEludCAgICAgICAgIG51bVR1cm5zOyAgICAgICAgICAgLyogbnVtYmVyIG9mIFktdHVybnMgaW4gb3V0bGluZSAgICAgICAgKi8KKworICAgIFRQb2ludCogICAgIGFyYzsgICAgICAgICAgICAgICAgLyogY3VycmVudCBCZXppZXIgYXJjIHBvaW50ZXIgICAgICAgICAgKi8KKworICAgIFVTaG9ydCAgICAgIGJXaWR0aDsgICAgICAgICAgICAgLyogdGFyZ2V0IGJpdG1hcCB3aWR0aCAgICAgICAgICAgICAgICAgKi8KKyAgICBQQnl0ZSAgICAgICBiVGFyZ2V0OyAgICAgICAgICAgIC8qIHRhcmdldCBiaXRtYXAgYnVmZmVyICAgICAgICAgICAgICAgICovCisgICAgUEJ5dGUgICAgICAgZ1RhcmdldDsgICAgICAgICAgICAvKiB0YXJnZXQgcGl4bWFwIGJ1ZmZlciAgICAgICAgICAgICAgICAqLworCisgICAgTG9uZyAgICAgICAgbGFzdFgsIGxhc3RZOworICAgIExvbmcgICAgICAgIG1pblksIG1heFk7CisKKyAgICBVU2hvcnQgICAgICBudW1fUHJvZnM7ICAgICAgICAgIC8qIGN1cnJlbnQgbnVtYmVyIG9mIHByb2ZpbGVzICAgICAgICAgICovCisKKyAgICBCb29sICAgICAgICBmcmVzaDsgICAgICAgICAgICAgIC8qIHNpZ25hbHMgYSBmcmVzaCBuZXcgcHJvZmlsZSB3aGljaCAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBgc3RhcnQnIGZpZWxkIG11c3QgYmUgY29tcGxldGVkICAgICAqLworICAgIEJvb2wgICAgICAgIGpvaW50OyAgICAgICAgICAgICAgLyogc2lnbmFscyB0aGF0IHRoZSBsYXN0IGFyYyBlbmRlZCAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV4YWN0bHkgb24gYSBzY2FubGluZS4gIEFsbG93cyAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZW1vdmFsIG9mIGRvdWJsZXRzICAgICAgICAgICAgICAgICAqLworICAgIFBQcm9maWxlICAgIGNQcm9maWxlOyAgICAgICAgICAgLyogY3VycmVudCBwcm9maWxlICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBQUHJvZmlsZSAgICBmUHJvZmlsZTsgICAgICAgICAgIC8qIGhlYWQgb2YgbGlua2VkIGxpc3Qgb2YgcHJvZmlsZXMgICAgICovCisgICAgUFByb2ZpbGUgICAgZ1Byb2ZpbGU7ICAgICAgICAgICAvKiBjb250b3VyJ3MgZmlyc3QgcHJvZmlsZSBpbiBjYXNlICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb2YgaW1wYWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIFRTdGF0ZXMgICAgIHN0YXRlOyAgICAgICAgICAgICAgLyogcmVuZGVyaW5nIHN0YXRlICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIEZUX0JpdG1hcCAgIHRhcmdldDsgICAgICAgICAgICAgLyogZGVzY3JpcHRpb24gb2YgdGFyZ2V0IGJpdC9waXhtYXAgICAgKi8KKyAgICBGVF9PdXRsaW5lICBvdXRsaW5lOworCisgICAgTG9uZyAgICAgICAgdHJhY2VPZnM7ICAgICAgICAgICAvKiBjdXJyZW50IG9mZnNldCBpbiB0YXJnZXQgYml0bWFwICAgICAqLworICAgIExvbmcgICAgICAgIHRyYWNlRzsgICAgICAgICAgICAgLyogY3VycmVudCBvZmZzZXQgaW4gdGFyZ2V0IHBpeG1hcCAgICAgKi8KKworICAgIFNob3J0ICAgICAgIHRyYWNlSW5jcjsgICAgICAgICAgLyogc3dlZXAncyBpbmNyZW1lbnQgaW4gdGFyZ2V0IGJpdG1hcCAgKi8KKworICAgIFNob3J0ICAgICAgIGdyYXlfbWluX3g7ICAgICAgICAgLyogY3VycmVudCBtaW4geCBkdXJpbmcgZ3JheSByZW5kZXJpbmcgKi8KKyAgICBTaG9ydCAgICAgICBncmF5X21heF94OyAgICAgICAgIC8qIGN1cnJlbnQgbWF4IHggZHVyaW5nIGdyYXkgcmVuZGVyaW5nICovCisKKyAgICAvKiBkaXNwYXRjaCB2YXJpYWJsZXMgKi8KKworICAgIEZ1bmN0aW9uX1N3ZWVwX0luaXQqICBQcm9jX1N3ZWVwX0luaXQ7CisgICAgRnVuY3Rpb25fU3dlZXBfU3BhbiogIFByb2NfU3dlZXBfU3BhbjsKKyAgICBGdW5jdGlvbl9Td2VlcF9TcGFuKiAgUHJvY19Td2VlcF9Ecm9wOworICAgIEZ1bmN0aW9uX1N3ZWVwX1N0ZXAqICBQcm9jX1N3ZWVwX1N0ZXA7CisKKyAgICBCeXRlICAgICAgICBkcm9wT3V0Q29udHJvbDsgICAgIC8qIGN1cnJlbnQgZHJvcF9vdXQgY29udHJvbCBtZXRob2QgICAgICovCisKKyAgICBCb29sICAgICAgICBzZWNvbmRfcGFzczsgICAgICAgIC8qIGluZGljYXRlcyB3aGV0aGVyIGEgaG9yaXpvbnRhbCBwYXNzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzaG91bGQgYmUgcGVyZm9ybWVkIHRvIGNvbnRyb2wgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZHJvcC1vdXQgYWNjdXJhdGVseSB3aGVuIGNhbGxpbmcgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlbmRlcl9HbHlwaC4gIE5vdGUgdGhhdCB0aGVyZSBpcyAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBob3Jpem9udGFsIHBhc3MgZHVyaW5nIGdyYXkgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVuZGVyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIFRQb2ludCAgICAgIGFyY3NbMyAqIE1heEJlemllciArIDFdOyAvKiBUaGUgQmV6aWVyIHN0YWNrICAgICAgICAgICAgICAgKi8KKworICAgIGJsYWNrX1RCYW5kICBiYW5kX3N0YWNrWzE2XTsgICAgLyogYmFuZCBzdGFjayB1c2VkIGZvciBzdWItYmFuZGluZyAgICAgKi8KKyAgICBJbnQgICAgICAgICAgYmFuZF90b3A7ICAgICAgICAgIC8qIGJhbmQgc3RhY2sgdG9wICAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZmRlZiBGVF9SQVNURVJfT1BUSU9OX0FOVElfQUxJQVNJTkcKKworICAgIEJ5dGUqICAgICAgIGdyYXlzOworCisgICAgQnl0ZSAgICAgICAgZ3JheV9saW5lc1tSQVNURVJfR1JBWV9MSU5FU107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludGVybWVkaWF0ZSB0YWJsZSB1c2VkIHRvIHJlbmRlciB0aGUgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBncmF5bGV2ZWxzIHBpeG1hcHMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZ3JheV9saW5lcyBpcyBhIGJ1ZmZlciBob2xkaW5nIHR3byAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1vbm9jaHJvbWUgc2NhbmxpbmVzICAgICAgICAgICAgICAgICAgICAqLworCisgICAgU2hvcnQgICAgICAgZ3JheV93aWR0aDsgICAgIC8qIHdpZHRoIGluIGJ5dGVzIG9mIG9uZSBtb25vY2hyb21lICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnRlcm1lZGlhdGUgc2NhbmxpbmUgb2YgZ3JheV9saW5lcy4gICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRWFjaCBncmF5IHBpeGVsIHRha2VzIDIgYml0cyBsb25nIHRoZXJlICovCisKKyAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIGdyYXlfbGluZXMgbXVzdCBob2xkIDIgbGluZXMsIHRodXMgd2l0aCBzaXplICovCisgICAgICAgICAgICAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIGF0IGxlYXN0IGBncmF5X3dpZHRoKjInLiAgICAgICAgICAgICAqLworCisjZW5kaWYgLyogRlRfUkFTVEVSX0FOVElfQUxJQVNJTkcgKi8KKworICB9OworCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIGJsYWNrX1RSYXN0ZXJfCisgIHsKKyAgICBjaGFyKiAgICAgICAgICBidWZmZXI7CisgICAgbG9uZyAgICAgICAgICAgYnVmZmVyX3NpemU7CisgICAgdm9pZCogICAgICAgICAgbWVtb3J5OworICAgIGJsYWNrX1BXb3JrZXIgIHdvcmtlcjsKKyAgICBCeXRlICAgICAgICAgICBncmF5c1s1XTsKKyAgICBTaG9ydCAgICAgICAgICBncmF5X3dpZHRoOworCisgIH0gYmxhY2tfVFJhc3RlciwgKmJsYWNrX1BSYXN0ZXI7CisKKyNpZmRlZiBGVF9TVEFUSUNfUkFTVEVSCisKKyAgc3RhdGljIGJsYWNrX1RXb3JrZXIgIGN1cl9yYXM7CisjZGVmaW5lIHJhcyAgY3VyX3JhcworCisjZWxzZSAvKiAhRlRfU1RBVElDX1JBU1RFUiAqLworCisjZGVmaW5lIHJhcyAgKCp3b3JrZXIpCisKKyNlbmRpZiAvKiAhRlRfU1RBVElDX1JBU1RFUiAqLworCisKKyNpZmRlZiBGVF9SQVNURVJfT1BUSU9OX0FOVElfQUxJQVNJTkcKKworICAvKiBBIGxvb2t1cCB0YWJsZSB1c2VkIHRvIHF1aWNrbHkgY291bnQgc2V0IGJpdHMgaW4gZm91ciBncmF5IDJ4MiAqLworICAvKiBjZWxscy4gIFRoZSB2YWx1ZXMgb2YgdGhlIHRhYmxlIGhhdmUgYmVlbiBwcm9kdWNlZCB3aXRoIHRoZSAgICAqLworICAvKiBmb2xsb3dpbmcgY29kZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGZvciAoIGkgPSAwOyBpIDwgMjU2OyBpKysgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgbCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgaiA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgZm9yICggYyA9IDA7IGMgPCA0OyBjKysgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBsIDw8PSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBpZiAoIGogJiAweDgwICkgbCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBpZiAoIGogJiAweDQwICkgbCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBqID0gKCBqIDw8IDIgKSAmIDB4RkY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgcHJpbnRmKCAiMHglMDRYIiwgbCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIHN0YXRpYyBjb25zdCBzaG9ydCAgY291bnRfdGFibGVbMjU2XSA9CisgIHsKKyAgICAweDAwMDAsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDIsIDB4MDAxMCwgMHgwMDExLCAweDAwMTEsIDB4MDAxMiwKKyAgICAweDAwMTAsIDB4MDAxMSwgMHgwMDExLCAweDAwMTIsIDB4MDAyMCwgMHgwMDIxLCAweDAwMjEsIDB4MDAyMiwKKyAgICAweDAxMDAsIDB4MDEwMSwgMHgwMTAxLCAweDAxMDIsIDB4MDExMCwgMHgwMTExLCAweDAxMTEsIDB4MDExMiwKKyAgICAweDAxMTAsIDB4MDExMSwgMHgwMTExLCAweDAxMTIsIDB4MDEyMCwgMHgwMTIxLCAweDAxMjEsIDB4MDEyMiwKKyAgICAweDAxMDAsIDB4MDEwMSwgMHgwMTAxLCAweDAxMDIsIDB4MDExMCwgMHgwMTExLCAweDAxMTEsIDB4MDExMiwKKyAgICAweDAxMTAsIDB4MDExMSwgMHgwMTExLCAweDAxMTIsIDB4MDEyMCwgMHgwMTIxLCAweDAxMjEsIDB4MDEyMiwKKyAgICAweDAyMDAsIDB4MDIwMSwgMHgwMjAxLCAweDAyMDIsIDB4MDIxMCwgMHgwMjExLCAweDAyMTEsIDB4MDIxMiwKKyAgICAweDAyMTAsIDB4MDIxMSwgMHgwMjExLCAweDAyMTIsIDB4MDIyMCwgMHgwMjIxLCAweDAyMjEsIDB4MDIyMiwKKyAgICAweDEwMDAsIDB4MTAwMSwgMHgxMDAxLCAweDEwMDIsIDB4MTAxMCwgMHgxMDExLCAweDEwMTEsIDB4MTAxMiwKKyAgICAweDEwMTAsIDB4MTAxMSwgMHgxMDExLCAweDEwMTIsIDB4MTAyMCwgMHgxMDIxLCAweDEwMjEsIDB4MTAyMiwKKyAgICAweDExMDAsIDB4MTEwMSwgMHgxMTAxLCAweDExMDIsIDB4MTExMCwgMHgxMTExLCAweDExMTEsIDB4MTExMiwKKyAgICAweDExMTAsIDB4MTExMSwgMHgxMTExLCAweDExMTIsIDB4MTEyMCwgMHgxMTIxLCAweDExMjEsIDB4MTEyMiwKKyAgICAweDExMDAsIDB4MTEwMSwgMHgxMTAxLCAweDExMDIsIDB4MTExMCwgMHgxMTExLCAweDExMTEsIDB4MTExMiwKKyAgICAweDExMTAsIDB4MTExMSwgMHgxMTExLCAweDExMTIsIDB4MTEyMCwgMHgxMTIxLCAweDExMjEsIDB4MTEyMiwKKyAgICAweDEyMDAsIDB4MTIwMSwgMHgxMjAxLCAweDEyMDIsIDB4MTIxMCwgMHgxMjExLCAweDEyMTEsIDB4MTIxMiwKKyAgICAweDEyMTAsIDB4MTIxMSwgMHgxMjExLCAweDEyMTIsIDB4MTIyMCwgMHgxMjIxLCAweDEyMjEsIDB4MTIyMiwKKyAgICAweDEwMDAsIDB4MTAwMSwgMHgxMDAxLCAweDEwMDIsIDB4MTAxMCwgMHgxMDExLCAweDEwMTEsIDB4MTAxMiwKKyAgICAweDEwMTAsIDB4MTAxMSwgMHgxMDExLCAweDEwMTIsIDB4MTAyMCwgMHgxMDIxLCAweDEwMjEsIDB4MTAyMiwKKyAgICAweDExMDAsIDB4MTEwMSwgMHgxMTAxLCAweDExMDIsIDB4MTExMCwgMHgxMTExLCAweDExMTEsIDB4MTExMiwKKyAgICAweDExMTAsIDB4MTExMSwgMHgxMTExLCAweDExMTIsIDB4MTEyMCwgMHgxMTIxLCAweDExMjEsIDB4MTEyMiwKKyAgICAweDExMDAsIDB4MTEwMSwgMHgxMTAxLCAweDExMDIsIDB4MTExMCwgMHgxMTExLCAweDExMTEsIDB4MTExMiwKKyAgICAweDExMTAsIDB4MTExMSwgMHgxMTExLCAweDExMTIsIDB4MTEyMCwgMHgxMTIxLCAweDExMjEsIDB4MTEyMiwKKyAgICAweDEyMDAsIDB4MTIwMSwgMHgxMjAxLCAweDEyMDIsIDB4MTIxMCwgMHgxMjExLCAweDEyMTEsIDB4MTIxMiwKKyAgICAweDEyMTAsIDB4MTIxMSwgMHgxMjExLCAweDEyMTIsIDB4MTIyMCwgMHgxMjIxLCAweDEyMjEsIDB4MTIyMiwKKyAgICAweDIwMDAsIDB4MjAwMSwgMHgyMDAxLCAweDIwMDIsIDB4MjAxMCwgMHgyMDExLCAweDIwMTEsIDB4MjAxMiwKKyAgICAweDIwMTAsIDB4MjAxMSwgMHgyMDExLCAweDIwMTIsIDB4MjAyMCwgMHgyMDIxLCAweDIwMjEsIDB4MjAyMiwKKyAgICAweDIxMDAsIDB4MjEwMSwgMHgyMTAxLCAweDIxMDIsIDB4MjExMCwgMHgyMTExLCAweDIxMTEsIDB4MjExMiwKKyAgICAweDIxMTAsIDB4MjExMSwgMHgyMTExLCAweDIxMTIsIDB4MjEyMCwgMHgyMTIxLCAweDIxMjEsIDB4MjEyMiwKKyAgICAweDIxMDAsIDB4MjEwMSwgMHgyMTAxLCAweDIxMDIsIDB4MjExMCwgMHgyMTExLCAweDIxMTEsIDB4MjExMiwKKyAgICAweDIxMTAsIDB4MjExMSwgMHgyMTExLCAweDIxMTIsIDB4MjEyMCwgMHgyMTIxLCAweDIxMjEsIDB4MjEyMiwKKyAgICAweDIyMDAsIDB4MjIwMSwgMHgyMjAxLCAweDIyMDIsIDB4MjIxMCwgMHgyMjExLCAweDIyMTEsIDB4MjIxMiwKKyAgICAweDIyMTAsIDB4MjIxMSwgMHgyMjExLCAweDIyMTIsIDB4MjIyMCwgMHgyMjIxLCAweDIyMjEsIDB4MjIyMgorICB9OworCisjZW5kaWYgLyogRlRfUkFTVEVSX09QVElPTl9BTlRJX0FMSUFTSU5HICovCisKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiovCisgIC8qKiAgUFJPRklMRVMgQ09NUFVUQVRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqLworICAvKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2V0X0hpZ2hfUHJlY2lzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2V0IHByZWNpc2lvbiB2YXJpYWJsZXMgYWNjb3JkaW5nIHRvIHBhcmFtIGZsYWcuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSGlnaCA6OiBTZXQgdG8gVHJ1ZSBmb3IgaGlnaCBwcmVjaXNpb24gKHR5cGljYWxseSBmb3IgcHBlbSA8IDI0KSwgICovCisgIC8qICAgICAgICAgICAgZmFsc2Ugb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgU2V0X0hpZ2hfUHJlY2lzaW9uKCBSQVNfQVJHUyBJbnQgIEhpZ2ggKQorICB7CisgICAgLyoKKyAgICAgKiBgcHJlY2lzaW9uX3N0ZXAnIGlzIHVzZWQgaW4gYEJlemllcl9VcCcgdG8gZGVjaWRlIHdoZW4gdG8gc3BsaXQgYQorICAgICAqIGdpdmVuIHktbW9ub3Rvbm91cyBCZXppZXIgYXJjIHRoYXQgY3Jvc3NlcyBhIHNjYW5saW5lIGJlZm9yZQorICAgICAqIGFwcHJveGltYXRpbmcgaXQgYXMgYSBzdHJhaWdodCBzZWdtZW50LiAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgMzIgKGZvcgorICAgICAqIGxvdyBhY2N1cmFjeSkgY29ycmVzcG9uZHMgdG8KKyAgICAgKgorICAgICAqICAgMzIgLyA2NCA9PSAwLjUgcGl4ZWxzICwKKyAgICAgKgorICAgICAqIHdoaWxlIGZvciB0aGUgaGlnaCBhY2N1cmFjeSBjYXNlIHdlIGhhdmUKKyAgICAgKgorICAgICAqICAgMjU2LyAoMSA8PCAxMikgPSAwLjA2MjUgcGl4ZWxzIC4KKyAgICAgKgorICAgICAqIGBwcmVjaXNpb25faml0dGVyJyBpcyBhbiBlcHNpbG9uIHRocmVzaG9sZCB1c2VkIGluCisgICAgICogYFZlcnRpY2FsX1N3ZWVwX1NwYW4nIHRvIGRlYWwgd2l0aCBzbWFsbCBpbXBlcmZlY3Rpb25zIGluIHRoZSBCZXppZXIKKyAgICAgKiBkZWNvbXBvc2l0aW9uIChhZnRlciBhbGwsIHdlIGFyZSB3b3JraW5nIHdpdGggYXBwcm94aW1hdGlvbnMgb25seSk7CisgICAgICogaXQgYXZvaWRzIHN3aXRjaGluZyBvbiBhZGRpdGlvbmFsIHBpeGVscyB3aGljaCB3b3VsZCBjYXVzZSBhcnRpZmFjdHMKKyAgICAgKiBvdGhlcndpc2UuCisgICAgICoKKyAgICAgKiBUaGUgdmFsdWUgb2YgYHByZWNpc2lvbl9qaXR0ZXInIGhhcyBiZWVuIGRldGVybWluZWQgaGV1cmlzdGljYWxseS4KKyAgICAgKgorICAgICAqLworCisgICAgaWYgKCBIaWdoICkKKyAgICB7CisgICAgICByYXMucHJlY2lzaW9uX2JpdHMgICA9IDEyOworICAgICAgcmFzLnByZWNpc2lvbl9zdGVwICAgPSAyNTY7CisgICAgICByYXMucHJlY2lzaW9uX2ppdHRlciA9IDMwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgcmFzLnByZWNpc2lvbl9iaXRzICAgPSA2OworICAgICAgcmFzLnByZWNpc2lvbl9zdGVwICAgPSAzMjsKKyAgICAgIHJhcy5wcmVjaXNpb25faml0dGVyID0gMjsKKyAgICB9CisKKyAgICBGVF9UUkFDRTYoKCAiU2V0X0hpZ2hfUHJlY2lzaW9uKCVzKVxuIiwgSGlnaCA/ICJ0cnVlIiA6ICJmYWxzZSIgKSk7CisKKyAgICByYXMucHJlY2lzaW9uICAgICAgID0gMSA8PCByYXMucHJlY2lzaW9uX2JpdHM7CisgICAgcmFzLnByZWNpc2lvbl9oYWxmICA9IHJhcy5wcmVjaXNpb24gLyAyOworICAgIHJhcy5wcmVjaXNpb25fc2hpZnQgPSByYXMucHJlY2lzaW9uX2JpdHMgLSBQaXhlbF9CaXRzOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOZXdfUHJvZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDcmVhdGUgYSBuZXcgcHJvZmlsZSBpbiB0aGUgcmVuZGVyIHBvb2wuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhU3RhdGUgICAgOjogVGhlIHN0YXRlL29yaWVudGF0aW9uIG9mIHRoZSBuZXcgcHJvZmlsZS4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG92ZXJzaG9vdCA6OiBXaGV0aGVyIHRoZSBwcm9maWxlJ3MgdW5yb3VuZGVkIHN0YXJ0IHBvc2l0aW9uICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgZGlmZmVycyBieSBhdCBsZWFzdCBhIGhhbGYgcGl4ZWwuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFNVQ0NFU1Mgb24gc3VjY2Vzcy4gIEZBSUxVUkUgaW4gY2FzZSBvZiBvdmVyZmxvdyBvciBvZiBpbmNvaGVyZW50ICAgKi8KKyAgLyogICBwcm9maWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgQm9vbAorICBOZXdfUHJvZmlsZSggUkFTX0FSR1MgVFN0YXRlcyAgYVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCAgICAgb3ZlcnNob290ICkKKyAgeworICAgIGlmICggIXJhcy5mUHJvZmlsZSApCisgICAgeworICAgICAgcmFzLmNQcm9maWxlICA9IChQUHJvZmlsZSlyYXMudG9wOworICAgICAgcmFzLmZQcm9maWxlICA9IHJhcy5jUHJvZmlsZTsKKyAgICAgIHJhcy50b3AgICAgICArPSBBbGlnblByb2ZpbGVTaXplOworICAgIH0KKworICAgIGlmICggcmFzLnRvcCA+PSByYXMubWF4QnVmZiApCisgICAgeworICAgICAgcmFzLmVycm9yID0gRlRfVEhST1coIE92ZXJmbG93ICk7CisgICAgICByZXR1cm4gRkFJTFVSRTsKKyAgICB9CisKKyAgICByYXMuY1Byb2ZpbGUtPmZsYWdzICA9IDA7CisgICAgcmFzLmNQcm9maWxlLT5zdGFydCAgPSAwOworICAgIHJhcy5jUHJvZmlsZS0+aGVpZ2h0ID0gMDsKKyAgICByYXMuY1Byb2ZpbGUtPm9mZnNldCA9IHJhcy50b3A7CisgICAgcmFzLmNQcm9maWxlLT5saW5rICAgPSAoUFByb2ZpbGUpMDsKKyAgICByYXMuY1Byb2ZpbGUtPm5leHQgICA9IChQUHJvZmlsZSkwOworICAgIHJhcy5jUHJvZmlsZS0+ZmxhZ3MgID0gcmFzLmRyb3BPdXRDb250cm9sOworCisgICAgc3dpdGNoICggYVN0YXRlICkKKyAgICB7CisgICAgY2FzZSBBc2NlbmRpbmdfU3RhdGU6CisgICAgICByYXMuY1Byb2ZpbGUtPmZsYWdzIHw9IEZsb3dfVXA7CisgICAgICBpZiAoIG92ZXJzaG9vdCApCisgICAgICAgIHJhcy5jUHJvZmlsZS0+ZmxhZ3MgfD0gT3ZlcnNob290X0JvdHRvbTsKKworICAgICAgRlRfVFJBQ0U2KCggIk5ldyBhc2NlbmRpbmcgcHJvZmlsZSA9ICVwXG4iLCByYXMuY1Byb2ZpbGUgKSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgRGVzY2VuZGluZ19TdGF0ZToKKyAgICAgIGlmICggb3ZlcnNob290ICkKKyAgICAgICAgcmFzLmNQcm9maWxlLT5mbGFncyB8PSBPdmVyc2hvb3RfVG9wOworICAgICAgRlRfVFJBQ0U2KCggIk5ldyBkZXNjZW5kaW5nIHByb2ZpbGUgPSAlcFxuIiwgcmFzLmNQcm9maWxlICkpOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgRlRfRVJST1IoKCAiTmV3X1Byb2ZpbGU6IGludmFsaWQgcHJvZmlsZSBkaXJlY3Rpb25cbiIgKSk7CisgICAgICByYXMuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZCApOworICAgICAgcmV0dXJuIEZBSUxVUkU7CisgICAgfQorCisgICAgaWYgKCAhcmFzLmdQcm9maWxlICkKKyAgICAgIHJhcy5nUHJvZmlsZSA9IHJhcy5jUHJvZmlsZTsKKworICAgIHJhcy5zdGF0ZSA9IGFTdGF0ZTsKKyAgICByYXMuZnJlc2ggPSBUUlVFOworICAgIHJhcy5qb2ludCA9IEZBTFNFOworCisgICAgcmV0dXJuIFNVQ0NFU1M7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEVuZF9Qcm9maWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZpbmFsaXplIHRoZSBjdXJyZW50IHByb2ZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG92ZXJzaG9vdCA6OiBXaGV0aGVyIHRoZSBwcm9maWxlJ3MgdW5yb3VuZGVkIGVuZCBwb3NpdGlvbiBkaWZmZXJzICAqLworICAvKiAgICAgICAgICAgICAgICAgYnkgYXQgbGVhc3QgYSBoYWxmIHBpeGVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTVUNDRVNTIG9uIHN1Y2Nlc3MuICBGQUlMVVJFIGluIGNhc2Ugb2Ygb3ZlcmZsb3cgb3IgaW5jb2hlcmVuY3kuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBCb29sCisgIEVuZF9Qcm9maWxlKCBSQVNfQVJHUyBCb29sICBvdmVyc2hvb3QgKQorICB7CisgICAgTG9uZyAgaDsKKworCisgICAgaCA9IChMb25nKSggcmFzLnRvcCAtIHJhcy5jUHJvZmlsZS0+b2Zmc2V0ICk7CisKKyAgICBpZiAoIGggPCAwICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJFbmRfUHJvZmlsZTogbmVnYXRpdmUgaGVpZ2h0IGVuY291bnRlcmVkXG4iICkpOworICAgICAgcmFzLmVycm9yID0gRlRfVEhST1coIE5lZ19IZWlnaHQgKTsKKyAgICAgIHJldHVybiBGQUlMVVJFOworICAgIH0KKworICAgIGlmICggaCA+IDAgKQorICAgIHsKKyAgICAgIFBQcm9maWxlICBvbGRQcm9maWxlOworCisKKyAgICAgIEZUX1RSQUNFNigoICJFbmRpbmcgcHJvZmlsZSAlcCwgc3RhcnQgPSAlbGQsIGhlaWdodCA9ICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgIHJhcy5jUHJvZmlsZSwgcmFzLmNQcm9maWxlLT5zdGFydCwgaCApKTsKKworICAgICAgcmFzLmNQcm9maWxlLT5oZWlnaHQgPSBoOworICAgICAgaWYgKCBvdmVyc2hvb3QgKQorICAgICAgeworICAgICAgICBpZiAoIHJhcy5jUHJvZmlsZS0+ZmxhZ3MgJiBGbG93X1VwICkKKyAgICAgICAgICByYXMuY1Byb2ZpbGUtPmZsYWdzIHw9IE92ZXJzaG9vdF9Ub3A7CisgICAgICAgIGVsc2UKKyAgICAgICAgICByYXMuY1Byb2ZpbGUtPmZsYWdzIHw9IE92ZXJzaG9vdF9Cb3R0b207CisgICAgICB9CisKKyAgICAgIG9sZFByb2ZpbGUgICA9IHJhcy5jUHJvZmlsZTsKKyAgICAgIHJhcy5jUHJvZmlsZSA9IChQUHJvZmlsZSlyYXMudG9wOworCisgICAgICByYXMudG9wICs9IEFsaWduUHJvZmlsZVNpemU7CisKKyAgICAgIHJhcy5jUHJvZmlsZS0+aGVpZ2h0ID0gMDsKKyAgICAgIHJhcy5jUHJvZmlsZS0+b2Zmc2V0ID0gcmFzLnRvcDsKKworICAgICAgb2xkUHJvZmlsZS0+bmV4dCA9IHJhcy5jUHJvZmlsZTsKKyAgICAgIHJhcy5udW1fUHJvZnMrKzsKKyAgICB9CisKKyAgICBpZiAoIHJhcy50b3AgPj0gcmFzLm1heEJ1ZmYgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMSgoICJvdmVyZmxvdyBpbiBFbmRfUHJvZmlsZVxuIiApKTsKKyAgICAgIHJhcy5lcnJvciA9IEZUX1RIUk9XKCBPdmVyZmxvdyApOworICAgICAgcmV0dXJuIEZBSUxVUkU7CisgICAgfQorCisgICAgcmFzLmpvaW50ID0gRkFMU0U7CisKKyAgICByZXR1cm4gU1VDQ0VTUzsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW5zZXJ0X1lfVHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW5zZXJ0IGEgc2FsaWVudCBpbnRvIHRoZSBzb3J0ZWQgbGlzdCBwbGFjZWQgb24gdG9wIG9mIHRoZSByZW5kZXIgICovCisgIC8qICAgIHBvb2wuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE5ldyB5IHNjYW5saW5lIHBvc2l0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNVQ0NFU1Mgb24gc3VjY2Vzcy4gIEZBSUxVUkUgaW4gY2FzZSBvZiBvdmVyZmxvdy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEJvb2wKKyAgSW5zZXJ0X1lfVHVybiggUkFTX0FSR1MgSW50ICB5ICkKKyAgeworICAgIFBMb25nICB5X3R1cm5zOworICAgIEludCAgICBuOworCisKKyAgICBuICAgICAgID0gcmFzLm51bVR1cm5zIC0gMTsKKyAgICB5X3R1cm5zID0gcmFzLnNpemVCdWZmIC0gcmFzLm51bVR1cm5zOworCisgICAgLyogbG9vayBmb3IgZmlyc3QgeSB2YWx1ZSB0aGF0IGlzIDw9ICovCisgICAgd2hpbGUgKCBuID49IDAgJiYgeSA8IHlfdHVybnNbbl0gKQorICAgICAgbi0tOworCisgICAgLyogaWYgaXQgaXMgPCwgc2ltcGx5IGluc2VydCBpdCwgaWdub3JlIGlmID09ICovCisgICAgaWYgKCBuID49IDAgJiYgeSA+IHlfdHVybnNbbl0gKQorICAgICAgd2hpbGUgKCBuID49IDAgKQorICAgICAgeworICAgICAgICBJbnQgIHkyID0gKEludCl5X3R1cm5zW25dOworCisKKyAgICAgICAgeV90dXJuc1tuXSA9IHk7CisgICAgICAgIHkgPSB5MjsKKyAgICAgICAgbi0tOworICAgICAgfQorCisgICAgaWYgKCBuIDwgMCApCisgICAgeworICAgICAgcmFzLm1heEJ1ZmYtLTsKKyAgICAgIGlmICggcmFzLm1heEJ1ZmYgPD0gcmFzLnRvcCApCisgICAgICB7CisgICAgICAgIHJhcy5lcnJvciA9IEZUX1RIUk9XKCBPdmVyZmxvdyApOworICAgICAgICByZXR1cm4gRkFJTFVSRTsKKyAgICAgIH0KKyAgICAgIHJhcy5udW1UdXJucysrOworICAgICAgcmFzLnNpemVCdWZmWy1yYXMubnVtVHVybnNdID0geTsKKyAgICB9CisKKyAgICByZXR1cm4gU1VDQ0VTUzsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRmluYWxpemVfUHJvZmlsZV9UYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQWRqdXN0IGFsbCBsaW5rcyBpbiB0aGUgcHJvZmlsZXMgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU1VDQ0VTUyBvbiBzdWNjZXNzLiAgRkFJTFVSRSBpbiBjYXNlIG9mIG92ZXJmbG93LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgQm9vbAorICBGaW5hbGl6ZV9Qcm9maWxlX1RhYmxlKCBSQVNfQVJHICkKKyAgeworICAgIFVTaG9ydCAgICBuOworICAgIFBQcm9maWxlICBwOworCisKKyAgICBuID0gcmFzLm51bV9Qcm9mczsKKyAgICBwID0gcmFzLmZQcm9maWxlOworCisgICAgaWYgKCBuID4gMSAmJiBwICkKKyAgICB7CisgICAgICB3aGlsZSAoIG4gPiAwICkKKyAgICAgIHsKKyAgICAgICAgSW50ICBib3R0b20sIHRvcDsKKworCisgICAgICAgIGlmICggbiA+IDEgKQorICAgICAgICAgIHAtPmxpbmsgPSAoUFByb2ZpbGUpKCBwLT5vZmZzZXQgKyBwLT5oZWlnaHQgKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHAtPmxpbmsgPSBOVUxMOworCisgICAgICAgIGlmICggcC0+ZmxhZ3MgJiBGbG93X1VwICkKKyAgICAgICAgeworICAgICAgICAgIGJvdHRvbSA9IChJbnQpcC0+c3RhcnQ7CisgICAgICAgICAgdG9wICAgID0gKEludCkoIHAtPnN0YXJ0ICsgcC0+aGVpZ2h0IC0gMSApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGJvdHRvbSAgICAgPSAoSW50KSggcC0+c3RhcnQgLSBwLT5oZWlnaHQgKyAxICk7CisgICAgICAgICAgdG9wICAgICAgICA9IChJbnQpcC0+c3RhcnQ7CisgICAgICAgICAgcC0+c3RhcnQgICA9IGJvdHRvbTsKKyAgICAgICAgICBwLT5vZmZzZXQgKz0gcC0+aGVpZ2h0IC0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggSW5zZXJ0X1lfVHVybiggUkFTX1ZBUlMgYm90dG9tICkgIHx8CisgICAgICAgICAgICAgSW5zZXJ0X1lfVHVybiggUkFTX1ZBUlMgdG9wICsgMSApICkKKyAgICAgICAgICByZXR1cm4gRkFJTFVSRTsKKworICAgICAgICBwID0gcC0+bGluazsKKyAgICAgICAgbi0tOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgICByYXMuZlByb2ZpbGUgPSBOVUxMOworCisgICAgcmV0dXJuIFNVQ0NFU1M7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNwbGl0X0NvbmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFN1YmRpdmlkZSBvbmUgY29uaWMgQmV6aWVyIGludG8gdHdvIGpvaW50IHN1Yi1hcmNzIGluIHRoZSBCZXppZXIgICAqLworICAvKiAgICBzdGFjay4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBOb25lIChzdWJkaXZpZGVkIEJlemllciBpcyB0YWtlbiBmcm9tIHRoZSB0b3Agb2YgdGhlIHN0YWNrKS4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHJvdXRpbmUgaXMgdGhlIGBiZWVmJyBvZiB0aGlzIGNvbXBvbmVudC4gIEl0IGlzICBfdGhlXyBpbm5lciAgKi8KKyAgLyogICAgbG9vcCB0aGF0IHNob3VsZCBiZSBvcHRpbWl6ZWQgdG8gaGVsbCB0byBnZXQgdGhlIGJlc3QgcGVyZm9ybWFuY2UuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBTcGxpdF9Db25pYyggVFBvaW50KiAgYmFzZSApCisgIHsKKyAgICBMb25nICBhLCBiOworCisKKyAgICBiYXNlWzRdLnggPSBiYXNlWzJdLng7CisgICAgYiA9IGJhc2VbMV0ueDsKKyAgICBhID0gYmFzZVszXS54ID0gKCBiYXNlWzJdLnggKyBiICkgLyAyOworICAgIGIgPSBiYXNlWzFdLnggPSAoIGJhc2VbMF0ueCArIGIgKSAvIDI7CisgICAgYmFzZVsyXS54ID0gKCBhICsgYiApIC8gMjsKKworICAgIGJhc2VbNF0ueSA9IGJhc2VbMl0ueTsKKyAgICBiID0gYmFzZVsxXS55OworICAgIGEgPSBiYXNlWzNdLnkgPSAoIGJhc2VbMl0ueSArIGIgKSAvIDI7CisgICAgYiA9IGJhc2VbMV0ueSA9ICggYmFzZVswXS55ICsgYiApIC8gMjsKKyAgICBiYXNlWzJdLnkgPSAoIGEgKyBiICkgLyAyOworCisgICAgLyogaGFuZCBvcHRpbWl6ZWQuICBnY2MgZG9lc24ndCBzZWVtIHRvIGJlIHRvbyBnb29kIGF0IGNvbW1vbiAgICAgICovCisgICAgLyogZXhwcmVzc2lvbiBzdWJzdGl0dXRpb24gYW5kIGluc3RydWN0aW9uIHNjaGVkdWxpbmcgOy0pICAgICAgICAgICovCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNwbGl0X0N1YmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFN1YmRpdmlkZSBhIHRoaXJkLW9yZGVyIEJlemllciBhcmMgaW50byB0d28gam9pbnQgc3ViLWFyY3MgaW4gdGhlICAqLworICAvKiAgICBCZXppZXIgc3RhY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHJvdXRpbmUgaXMgdGhlIGBiZWVmJyBvZiB0aGUgY29tcG9uZW50LiAgSXQgaXMgb25lIG9mIF90aGVfICAgKi8KKyAgLyogICAgaW5uZXIgbG9vcHMgdGhhdCBzaG91bGQgYmUgb3B0aW1pemVkIGxpa2UgaGVsbCB0byBnZXQgdGhlIGJlc3QgICAgICovCisgIC8qICAgIHBlcmZvcm1hbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgU3BsaXRfQ3ViaWMoIFRQb2ludCogIGJhc2UgKQorICB7CisgICAgTG9uZyAgYSwgYiwgYywgZDsKKworCisgICAgYmFzZVs2XS54ID0gYmFzZVszXS54OworICAgIGMgPSBiYXNlWzFdLng7CisgICAgZCA9IGJhc2VbMl0ueDsKKyAgICBiYXNlWzFdLnggPSBhID0gKCBiYXNlWzBdLnggKyBjICsgMSApID4+IDE7CisgICAgYmFzZVs1XS54ID0gYiA9ICggYmFzZVszXS54ICsgZCArIDEgKSA+PiAxOworICAgIGMgPSAoIGMgKyBkICsgMSApID4+IDE7CisgICAgYmFzZVsyXS54ID0gYSA9ICggYSArIGMgKyAxICkgPj4gMTsKKyAgICBiYXNlWzRdLnggPSBiID0gKCBiICsgYyArIDEgKSA+PiAxOworICAgIGJhc2VbM10ueCA9ICggYSArIGIgKyAxICkgPj4gMTsKKworICAgIGJhc2VbNl0ueSA9IGJhc2VbM10ueTsKKyAgICBjID0gYmFzZVsxXS55OworICAgIGQgPSBiYXNlWzJdLnk7CisgICAgYmFzZVsxXS55ID0gYSA9ICggYmFzZVswXS55ICsgYyArIDEgKSA+PiAxOworICAgIGJhc2VbNV0ueSA9IGIgPSAoIGJhc2VbM10ueSArIGQgKyAxICkgPj4gMTsKKyAgICBjID0gKCBjICsgZCArIDEgKSA+PiAxOworICAgIGJhc2VbMl0ueSA9IGEgPSAoIGEgKyBjICsgMSApID4+IDE7CisgICAgYmFzZVs0XS55ID0gYiA9ICggYiArIGMgKyAxICkgPj4gMTsKKyAgICBiYXNlWzNdLnkgPSAoIGEgKyBiICsgMSApID4+IDE7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExpbmVfVXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbXB1dGUgdGhlIHgtY29vcmRpbmF0ZXMgb2YgYW4gYXNjZW5kaW5nIGxpbmUgc2VnbWVudCBhbmQgc3RvcmUgICAqLworICAvKiAgICB0aGVtIGluIHRoZSByZW5kZXIgcG9vbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4MSAgIDo6IFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIHNlZ21lbnQncyBzdGFydCBwb2ludC4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHkxICAgOjogVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgc2VnbWVudCdzIHN0YXJ0IHBvaW50LiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeDIgICA6OiBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBzZWdtZW50J3MgZW5kIHBvaW50LiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB5MiAgIDo6IFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIHNlZ21lbnQncyBlbmQgcG9pbnQuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1pbnkgOjogQSBsb3dlciB2ZXJ0aWNhbCBjbGlwcGluZyBib3VuZCB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWF4eSA6OiBBbiB1cHBlciB2ZXJ0aWNhbCBjbGlwcGluZyBib3VuZCB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU1VDQ0VTUyBvbiBzdWNjZXNzLCBGQUlMVVJFIG9uIHJlbmRlciBwb29sIG92ZXJmbG93LiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgQm9vbAorICBMaW5lX1VwKCBSQVNfQVJHUyBMb25nICB4MSwKKyAgICAgICAgICAgICAgICAgICAgTG9uZyAgeTEsCisgICAgICAgICAgICAgICAgICAgIExvbmcgIHgyLAorICAgICAgICAgICAgICAgICAgICBMb25nICB5MiwKKyAgICAgICAgICAgICAgICAgICAgTG9uZyAgbWlueSwKKyAgICAgICAgICAgICAgICAgICAgTG9uZyAgbWF4eSApCisgIHsKKyAgICBMb25nICAgRHgsIER5OworICAgIEludCAgICBlMSwgZTIsIGYxLCBmMiwgc2l6ZTsgICAgIC8qIFhYWDogaXMgYFNob3J0JyBzdWZmaWNpZW50PyAqLworICAgIExvbmcgICBJeCwgUngsIEF4OworCisgICAgUExvbmcgIHRvcDsKKworCisgICAgRHggPSB4MiAtIHgxOworICAgIER5ID0geTIgLSB5MTsKKworICAgIGlmICggRHkgPD0gMCB8fCB5MiA8IG1pbnkgfHwgeTEgPiBtYXh5ICkKKyAgICAgIHJldHVybiBTVUNDRVNTOworCisgICAgaWYgKCB5MSA8IG1pbnkgKQorICAgIHsKKyAgICAgIC8qIFRha2UgY2FyZTogbWlueS15MSBjYW4gYmUgYSB2ZXJ5IGxhcmdlIHZhbHVlOyB3ZSB1c2UgICAgICovCisgICAgICAvKiAgICAgICAgICAgIGEgc2xvdyBNdWxEaXYgZnVuY3Rpb24gdG8gYXZvaWQgY2xpcHBpbmcgYnVncyAqLworICAgICAgeDEgKz0gU011bERpdiggRHgsIG1pbnkgLSB5MSwgRHkgKTsKKyAgICAgIGUxICA9IChJbnQpVFJVTkMoIG1pbnkgKTsKKyAgICAgIGYxICA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBlMSA9IChJbnQpVFJVTkMoIHkxICk7CisgICAgICBmMSA9IChJbnQpRlJBQyggeTEgKTsKKyAgICB9CisKKyAgICBpZiAoIHkyID4gbWF4eSApCisgICAgeworICAgICAgLyogeDIgKz0gRk11bERpdiggRHgsIG1heHkgLSB5MiwgRHkgKTsgIFVOTkVDRVNTQVJZICovCisgICAgICBlMiAgPSAoSW50KVRSVU5DKCBtYXh5ICk7CisgICAgICBmMiAgPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgZTIgPSAoSW50KVRSVU5DKCB5MiApOworICAgICAgZjIgPSAoSW50KUZSQUMoIHkyICk7CisgICAgfQorCisgICAgaWYgKCBmMSA+IDAgKQorICAgIHsKKyAgICAgIGlmICggZTEgPT0gZTIgKQorICAgICAgICByZXR1cm4gU1VDQ0VTUzsKKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgeDEgKz0gU011bERpdiggRHgsIHJhcy5wcmVjaXNpb24gLSBmMSwgRHkgKTsKKyAgICAgICAgZTEgKz0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgaWYgKCByYXMuam9pbnQgKQorICAgICAgeworICAgICAgICByYXMudG9wLS07CisgICAgICAgIHJhcy5qb2ludCA9IEZBTFNFOworICAgICAgfQorCisgICAgcmFzLmpvaW50ID0gKGNoYXIpKCBmMiA9PSAwICk7CisKKyAgICBpZiAoIHJhcy5mcmVzaCApCisgICAgeworICAgICAgcmFzLmNQcm9maWxlLT5zdGFydCA9IGUxOworICAgICAgcmFzLmZyZXNoICAgICAgICAgICA9IEZBTFNFOworICAgIH0KKworICAgIHNpemUgPSBlMiAtIGUxICsgMTsKKyAgICBpZiAoIHJhcy50b3AgKyBzaXplID49IHJhcy5tYXhCdWZmICkKKyAgICB7CisgICAgICByYXMuZXJyb3IgPSBGVF9USFJPVyggT3ZlcmZsb3cgKTsKKyAgICAgIHJldHVybiBGQUlMVVJFOworICAgIH0KKworICAgIGlmICggRHggPiAwICkKKyAgICB7CisgICAgICBJeCA9IFNNdWxEaXZfTm9fUm91bmQoIHJhcy5wcmVjaXNpb24sIER4LCBEeSApOworICAgICAgUnggPSAoIHJhcy5wcmVjaXNpb24gKiBEeCApICUgRHk7CisgICAgICBEeCA9IDE7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBJeCA9IC1TTXVsRGl2X05vX1JvdW5kKCByYXMucHJlY2lzaW9uLCAtRHgsIER5ICk7CisgICAgICBSeCA9ICggcmFzLnByZWNpc2lvbiAqIC1EeCApICUgRHk7CisgICAgICBEeCA9IC0xOworICAgIH0KKworICAgIEF4ICA9IC1EeTsKKyAgICB0b3AgPSByYXMudG9wOworCisgICAgd2hpbGUgKCBzaXplID4gMCApCisgICAgeworICAgICAgKnRvcCsrID0geDE7CisKKyAgICAgIHgxICs9IEl4OworICAgICAgQXggKz0gUng7CisgICAgICBpZiAoIEF4ID49IDAgKQorICAgICAgeworICAgICAgICBBeCAtPSBEeTsKKyAgICAgICAgeDEgKz0gRHg7CisgICAgICB9CisgICAgICBzaXplLS07CisgICAgfQorCisgICAgcmFzLnRvcCA9IHRvcDsKKyAgICByZXR1cm4gU1VDQ0VTUzsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTGluZV9Eb3duICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29tcHV0ZSB0aGUgeC1jb29yZGluYXRlcyBvZiBhbiBkZXNjZW5kaW5nIGxpbmUgc2VnbWVudCBhbmQgc3RvcmUgICovCisgIC8qICAgIHRoZW0gaW4gdGhlIHJlbmRlciBwb29sLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHgxICAgOjogVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgc2VnbWVudCdzIHN0YXJ0IHBvaW50LiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgeTEgICA6OiBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBzZWdtZW50J3Mgc3RhcnQgcG9pbnQuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB4MiAgIDo6IFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIHNlZ21lbnQncyBlbmQgcG9pbnQuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHkyICAgOjogVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgc2VnbWVudCdzIGVuZCBwb2ludC4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWlueSA6OiBBIGxvd2VyIHZlcnRpY2FsIGNsaXBwaW5nIGJvdW5kIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXh5IDo6IEFuIHVwcGVyIHZlcnRpY2FsIGNsaXBwaW5nIGJvdW5kIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTVUNDRVNTIG9uIHN1Y2Nlc3MsIEZBSUxVUkUgb24gcmVuZGVyIHBvb2wgb3ZlcmZsb3cuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBCb29sCisgIExpbmVfRG93biggUkFTX0FSR1MgTG9uZyAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgTG9uZyAgeTEsCisgICAgICAgICAgICAgICAgICAgICAgTG9uZyAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgTG9uZyAgeTIsCisgICAgICAgICAgICAgICAgICAgICAgTG9uZyAgbWlueSwKKyAgICAgICAgICAgICAgICAgICAgICBMb25nICBtYXh5ICkKKyAgeworICAgIEJvb2wgIHJlc3VsdCwgZnJlc2g7CisKKworICAgIGZyZXNoICA9IHJhcy5mcmVzaDsKKworICAgIHJlc3VsdCA9IExpbmVfVXAoIFJBU19WQVJTIHgxLCAteTEsIHgyLCAteTIsIC1tYXh5LCAtbWlueSApOworCisgICAgaWYgKCBmcmVzaCAmJiAhcmFzLmZyZXNoICkKKyAgICAgIHJhcy5jUHJvZmlsZS0+c3RhcnQgPSAtcmFzLmNQcm9maWxlLT5zdGFydDsKKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIC8qIEEgZnVuY3Rpb24gdHlwZSBkZXNjcmliaW5nIHRoZSBmdW5jdGlvbnMgdXNlZCB0byBzcGxpdCBCZXppZXIgYXJjcyAqLworICB0eXBlZGVmIHZvaWQgICgqVFNwbGl0dGVyKSggVFBvaW50KiAgYmFzZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQmV6aWVyX1VwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29tcHV0ZSB0aGUgeC1jb29yZGluYXRlcyBvZiBhbiBhc2NlbmRpbmcgQmV6aWVyIGFyYyBhbmQgc3RvcmUgICAgICovCisgIC8qICAgIHRoZW0gaW4gdGhlIHJlbmRlciBwb29sLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlZ3JlZSAgIDo6IFRoZSBkZWdyZWUgb2YgdGhlIEJlemllciBhcmMgKGVpdGhlciAyIG9yIDMpLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3BsaXR0ZXIgOjogVGhlIGZ1bmN0aW9uIHRvIHNwbGl0IEJlemllciBhcmNzLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtaW55ICAgICA6OiBBIGxvd2VyIHZlcnRpY2FsIGNsaXBwaW5nIGJvdW5kIHZhbHVlLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heHkgICAgIDo6IEFuIHVwcGVyIHZlcnRpY2FsIGNsaXBwaW5nIGJvdW5kIHZhbHVlLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNVQ0NFU1Mgb24gc3VjY2VzcywgRkFJTFVSRSBvbiByZW5kZXIgcG9vbCBvdmVyZmxvdy4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEJvb2wKKyAgQmV6aWVyX1VwKCBSQVNfQVJHUyBJbnQgICAgICAgIGRlZ3JlZSwKKyAgICAgICAgICAgICAgICAgICAgICBUU3BsaXR0ZXIgIHNwbGl0dGVyLAorICAgICAgICAgICAgICAgICAgICAgIExvbmcgICAgICAgbWlueSwKKyAgICAgICAgICAgICAgICAgICAgICBMb25nICAgICAgIG1heHkgKQorICB7CisgICAgTG9uZyAgIHkxLCB5MiwgZSwgZTIsIGUwOworICAgIFNob3J0ICBmMTsKKworICAgIFRQb2ludCogIGFyYzsKKyAgICBUUG9pbnQqICBzdGFydF9hcmM7CisKKyAgICBQTG9uZyB0b3A7CisKKworICAgIGFyYyA9IHJhcy5hcmM7CisgICAgeTEgID0gYXJjW2RlZ3JlZV0ueTsKKyAgICB5MiAgPSBhcmNbMF0ueTsKKyAgICB0b3AgPSByYXMudG9wOworCisgICAgaWYgKCB5MiA8IG1pbnkgfHwgeTEgPiBtYXh5ICkKKyAgICAgIGdvdG8gRmluOworCisgICAgZTIgPSBGTE9PUiggeTIgKTsKKworICAgIGlmICggZTIgPiBtYXh5ICkKKyAgICAgIGUyID0gbWF4eTsKKworICAgIGUwID0gbWlueTsKKworICAgIGlmICggeTEgPCBtaW55ICkKKyAgICAgIGUgPSBtaW55OworICAgIGVsc2UKKyAgICB7CisgICAgICBlICA9IENFSUxJTkcoIHkxICk7CisgICAgICBmMSA9IChTaG9ydCkoIEZSQUMoIHkxICkgKTsKKyAgICAgIGUwID0gZTsKKworICAgICAgaWYgKCBmMSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCByYXMuam9pbnQgKQorICAgICAgICB7CisgICAgICAgICAgdG9wLS07CisgICAgICAgICAgcmFzLmpvaW50ID0gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICAqdG9wKysgPSBhcmNbZGVncmVlXS54OworCisgICAgICAgIGUgKz0gcmFzLnByZWNpc2lvbjsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIHJhcy5mcmVzaCApCisgICAgeworICAgICAgcmFzLmNQcm9maWxlLT5zdGFydCA9IFRSVU5DKCBlMCApOworICAgICAgcmFzLmZyZXNoID0gRkFMU0U7CisgICAgfQorCisgICAgaWYgKCBlMiA8IGUgKQorICAgICAgZ290byBGaW47CisKKyAgICBpZiAoICggdG9wICsgVFJVTkMoIGUyIC0gZSApICsgMSApID49IHJhcy5tYXhCdWZmICkKKyAgICB7CisgICAgICByYXMudG9wICAgPSB0b3A7CisgICAgICByYXMuZXJyb3IgPSBGVF9USFJPVyggT3ZlcmZsb3cgKTsKKyAgICAgIHJldHVybiBGQUlMVVJFOworICAgIH0KKworICAgIHN0YXJ0X2FyYyA9IGFyYzsKKworICAgIHdoaWxlICggYXJjID49IHN0YXJ0X2FyYyAmJiBlIDw9IGUyICkKKyAgICB7CisgICAgICByYXMuam9pbnQgPSBGQUxTRTsKKworICAgICAgeTIgPSBhcmNbMF0ueTsKKworICAgICAgaWYgKCB5MiA+IGUgKQorICAgICAgeworICAgICAgICB5MSA9IGFyY1tkZWdyZWVdLnk7CisgICAgICAgIGlmICggeTIgLSB5MSA+PSByYXMucHJlY2lzaW9uX3N0ZXAgKQorICAgICAgICB7CisgICAgICAgICAgc3BsaXR0ZXIoIGFyYyApOworICAgICAgICAgIGFyYyArPSBkZWdyZWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgKnRvcCsrID0gYXJjW2RlZ3JlZV0ueCArIEZNdWxEaXYoIGFyY1swXS54IC0gYXJjW2RlZ3JlZV0ueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAtIHkxLCB5MiAtIHkxICk7CisgICAgICAgICAgYXJjIC09IGRlZ3JlZTsKKyAgICAgICAgICBlICAgKz0gcmFzLnByZWNpc2lvbjsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBpZiAoIHkyID09IGUgKQorICAgICAgICB7CisgICAgICAgICAgcmFzLmpvaW50ICA9IFRSVUU7CisgICAgICAgICAgKnRvcCsrICAgICA9IGFyY1swXS54OworCisgICAgICAgICAgZSArPSByYXMucHJlY2lzaW9uOworICAgICAgICB9CisgICAgICAgIGFyYyAtPSBkZWdyZWU7CisgICAgICB9CisgICAgfQorCisgIEZpbjoKKyAgICByYXMudG9wICA9IHRvcDsKKyAgICByYXMuYXJjIC09IGRlZ3JlZTsKKyAgICByZXR1cm4gU1VDQ0VTUzsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQmV6aWVyX0Rvd24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29tcHV0ZSB0aGUgeC1jb29yZGluYXRlcyBvZiBhbiBkZXNjZW5kaW5nIEJlemllciBhcmMgYW5kIHN0b3JlICAgICovCisgIC8qICAgIHRoZW0gaW4gdGhlIHJlbmRlciBwb29sLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlZ3JlZSAgIDo6IFRoZSBkZWdyZWUgb2YgdGhlIEJlemllciBhcmMgKGVpdGhlciAyIG9yIDMpLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3BsaXR0ZXIgOjogVGhlIGZ1bmN0aW9uIHRvIHNwbGl0IEJlemllciBhcmNzLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtaW55ICAgICA6OiBBIGxvd2VyIHZlcnRpY2FsIGNsaXBwaW5nIGJvdW5kIHZhbHVlLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heHkgICAgIDo6IEFuIHVwcGVyIHZlcnRpY2FsIGNsaXBwaW5nIGJvdW5kIHZhbHVlLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNVQ0NFU1Mgb24gc3VjY2VzcywgRkFJTFVSRSBvbiByZW5kZXIgcG9vbCBvdmVyZmxvdy4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEJvb2wKKyAgQmV6aWVyX0Rvd24oIFJBU19BUkdTIEludCAgICAgICAgZGVncmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgVFNwbGl0dGVyICBzcGxpdHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIExvbmcgICAgICAgbWlueSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExvbmcgICAgICAgbWF4eSApCisgIHsKKyAgICBUUG9pbnQqICBhcmMgPSByYXMuYXJjOworICAgIEJvb2wgICAgIHJlc3VsdCwgZnJlc2g7CisKKworICAgIGFyY1swXS55ID0gLWFyY1swXS55OworICAgIGFyY1sxXS55ID0gLWFyY1sxXS55OworICAgIGFyY1syXS55ID0gLWFyY1syXS55OworICAgIGlmICggZGVncmVlID4gMiApCisgICAgICBhcmNbM10ueSA9IC1hcmNbM10ueTsKKworICAgIGZyZXNoID0gcmFzLmZyZXNoOworCisgICAgcmVzdWx0ID0gQmV6aWVyX1VwKCBSQVNfVkFSUyBkZWdyZWUsIHNwbGl0dGVyLCAtbWF4eSwgLW1pbnkgKTsKKworICAgIGlmICggZnJlc2ggJiYgIXJhcy5mcmVzaCApCisgICAgICByYXMuY1Byb2ZpbGUtPnN0YXJ0ID0gLXJhcy5jUHJvZmlsZS0+c3RhcnQ7CisKKyAgICBhcmNbMF0ueSA9IC1hcmNbMF0ueTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMaW5lX1RvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbmplY3QgYSBuZXcgbGluZSBzZWdtZW50IGFuZCBhZGp1c3QgdGhlIFByb2ZpbGVzIGxpc3QuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHggOjogVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgc2VnbWVudCdzIGVuZCBwb2ludCAoaXRzIHN0YXJ0IHBvaW50ICAgKi8KKyAgLyogICAgICAgIGlzIHN0b3JlZCBpbiBgbGFzdFgnKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHkgOjogVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgc2VnbWVudCdzIGVuZCBwb2ludCAoaXRzIHN0YXJ0IHBvaW50ICAgKi8KKyAgLyogICAgICAgIGlzIHN0b3JlZCBpbiBgbGFzdFknKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBTVUNDRVNTIG9uIHN1Y2Nlc3MsIEZBSUxVUkUgb24gcmVuZGVyIHBvb2wgb3ZlcmZsb3cgb3IgaW5jb3JyZWN0ICAgICovCisgIC8qICAgcHJvZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEJvb2wKKyAgTGluZV9UbyggUkFTX0FSR1MgTG9uZyAgeCwKKyAgICAgICAgICAgICAgICAgICAgTG9uZyAgeSApCisgIHsKKyAgICAvKiBGaXJzdCwgZGV0ZWN0IGEgY2hhbmdlIG9mIGRpcmVjdGlvbiAqLworCisgICAgc3dpdGNoICggcmFzLnN0YXRlICkKKyAgICB7CisgICAgY2FzZSBVbmtub3duX1N0YXRlOgorICAgICAgaWYgKCB5ID4gcmFzLmxhc3RZICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBOZXdfUHJvZmlsZSggUkFTX1ZBUlMgQXNjZW5kaW5nX1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU19CT1RUT01fT1ZFUlNIT09UKCByYXMubGFzdFkgKSApICkKKyAgICAgICAgICByZXR1cm4gRkFJTFVSRTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgaWYgKCB5IDwgcmFzLmxhc3RZICkKKyAgICAgICAgICBpZiAoIE5ld19Qcm9maWxlKCBSQVNfVkFSUyBEZXNjZW5kaW5nX1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX1RPUF9PVkVSU0hPT1QoIHJhcy5sYXN0WSApICkgKQorICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkU7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgQXNjZW5kaW5nX1N0YXRlOgorICAgICAgaWYgKCB5IDwgcmFzLmxhc3RZICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBFbmRfUHJvZmlsZSggUkFTX1ZBUlMgSVNfVE9QX09WRVJTSE9PVCggcmFzLmxhc3RZICkgKSB8fAorICAgICAgICAgICAgIE5ld19Qcm9maWxlKCBSQVNfVkFSUyBEZXNjZW5kaW5nX1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU19UT1BfT1ZFUlNIT09UKCByYXMubGFzdFkgKSApICkKKyAgICAgICAgICByZXR1cm4gRkFJTFVSRTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBEZXNjZW5kaW5nX1N0YXRlOgorICAgICAgaWYgKCB5ID4gcmFzLmxhc3RZICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBFbmRfUHJvZmlsZSggUkFTX1ZBUlMgSVNfQk9UVE9NX09WRVJTSE9PVCggcmFzLmxhc3RZICkgKSB8fAorICAgICAgICAgICAgIE5ld19Qcm9maWxlKCBSQVNfVkFSUyBBc2NlbmRpbmdfU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX0JPVFRPTV9PVkVSU0hPT1QoIHJhcy5sYXN0WSApICkgKQorICAgICAgICAgIHJldHVybiBGQUlMVVJFOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgOworICAgIH0KKworICAgIC8qIFRoZW4gY29tcHV0ZSB0aGUgbGluZXMgKi8KKworICAgIHN3aXRjaCAoIHJhcy5zdGF0ZSApCisgICAgeworICAgIGNhc2UgQXNjZW5kaW5nX1N0YXRlOgorICAgICAgaWYgKCBMaW5lX1VwKCBSQVNfVkFSUyByYXMubGFzdFgsIHJhcy5sYXN0WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwgcmFzLm1pblksIHJhcy5tYXhZICkgKQorICAgICAgICByZXR1cm4gRkFJTFVSRTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBEZXNjZW5kaW5nX1N0YXRlOgorICAgICAgaWYgKCBMaW5lX0Rvd24oIFJBU19WQVJTIHJhcy5sYXN0WCwgcmFzLmxhc3RZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsIHksIHJhcy5taW5ZLCByYXMubWF4WSApICkKKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICA7CisgICAgfQorCisgICAgcmFzLmxhc3RYID0geDsKKyAgICByYXMubGFzdFkgPSB5OworCisgICAgcmV0dXJuIFNVQ0NFU1M7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbmljX1RvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluamVjdCBhIG5ldyBjb25pYyBhcmMgYW5kIGFkanVzdCB0aGUgcHJvZmlsZSBsaXN0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgY3ggOjogVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgYXJjJ3MgbmV3IGNvbnRyb2wgcG9pbnQuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBjeSA6OiBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBhcmMncyBuZXcgY29udHJvbCBwb2ludC4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHggIDo6IFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGFyYydzIGVuZCBwb2ludCAoaXRzIHN0YXJ0IHBvaW50IGlzICAgKi8KKyAgLyogICAgICAgICBzdG9yZWQgaW4gYGxhc3RYJykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHkgIDo6IFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIGFyYydzIGVuZCBwb2ludCAoaXRzIHN0YXJ0IHBvaW50IGlzICAgKi8KKyAgLyogICAgICAgICBzdG9yZWQgaW4gYGxhc3RZJykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBTVUNDRVNTIG9uIHN1Y2Nlc3MsIEZBSUxVUkUgb24gcmVuZGVyIHBvb2wgb3ZlcmZsb3cgb3IgaW5jb3JyZWN0ICAgICovCisgIC8qICAgcHJvZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEJvb2wKKyAgQ29uaWNfVG8oIFJBU19BUkdTIExvbmcgIGN4LAorICAgICAgICAgICAgICAgICAgICAgTG9uZyAgY3ksCisgICAgICAgICAgICAgICAgICAgICBMb25nICB4LAorICAgICAgICAgICAgICAgICAgICAgTG9uZyAgeSApCisgIHsKKyAgICBMb25nICAgICB5MSwgeTIsIHkzLCB4MywgeW1pbiwgeW1heDsKKyAgICBUU3RhdGVzICBzdGF0ZV9iZXo7CisKKworICAgIHJhcy5hcmMgICAgICA9IHJhcy5hcmNzOworICAgIHJhcy5hcmNbMl0ueCA9IHJhcy5sYXN0WDsKKyAgICByYXMuYXJjWzJdLnkgPSByYXMubGFzdFk7CisgICAgcmFzLmFyY1sxXS54ID0gY3g7CisgICAgcmFzLmFyY1sxXS55ID0gY3k7CisgICAgcmFzLmFyY1swXS54ID0geDsKKyAgICByYXMuYXJjWzBdLnkgPSB5OworCisgICAgZG8KKyAgICB7CisgICAgICB5MSA9IHJhcy5hcmNbMl0ueTsKKyAgICAgIHkyID0gcmFzLmFyY1sxXS55OworICAgICAgeTMgPSByYXMuYXJjWzBdLnk7CisgICAgICB4MyA9IHJhcy5hcmNbMF0ueDsKKworICAgICAgLyogZmlyc3QsIGNhdGVnb3JpemUgdGhlIEJlemllciBhcmMgKi8KKworICAgICAgaWYgKCB5MSA8PSB5MyApCisgICAgICB7CisgICAgICAgIHltaW4gPSB5MTsKKyAgICAgICAgeW1heCA9IHkzOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICB5bWluID0geTM7CisgICAgICAgIHltYXggPSB5MTsKKyAgICAgIH0KKworICAgICAgaWYgKCB5MiA8IHltaW4gfHwgeTIgPiB5bWF4ICkKKyAgICAgIHsKKyAgICAgICAgLyogdGhpcyBhcmMgaGFzIG5vIGdpdmVuIGRpcmVjdGlvbiwgc3BsaXQgaXQhICovCisgICAgICAgIFNwbGl0X0NvbmljKCByYXMuYXJjICk7CisgICAgICAgIHJhcy5hcmMgKz0gMjsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCB5MSA9PSB5MyApCisgICAgICB7CisgICAgICAgIC8qIHRoaXMgYXJjIGlzIGZsYXQsIGlnbm9yZSBpdCBhbmQgcG9wIGl0IGZyb20gdGhlIEJlemllciBzdGFjayAqLworICAgICAgICByYXMuYXJjIC09IDI7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIHRoZSBhcmMgaXMgeS1tb25vdG9ub3VzLCBlaXRoZXIgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgKi8KKyAgICAgICAgLyogZGV0ZWN0IGEgY2hhbmdlIG9mIGRpcmVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBzdGF0ZV9iZXogPSB5MSA8IHkzID8gQXNjZW5kaW5nX1N0YXRlIDogRGVzY2VuZGluZ19TdGF0ZTsKKyAgICAgICAgaWYgKCByYXMuc3RhdGUgIT0gc3RhdGVfYmV6ICkKKyAgICAgICAgeworICAgICAgICAgIEJvb2wgIG8gPSBzdGF0ZV9iZXogPT0gQXNjZW5kaW5nX1N0YXRlID8gSVNfQk9UVE9NX09WRVJTSE9PVCggeTEgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogSVNfVE9QX09WRVJTSE9PVCggeTEgKTsKKworCisgICAgICAgICAgLyogZmluYWxpemUgY3VycmVudCBwcm9maWxlIGlmIGFueSAqLworICAgICAgICAgIGlmICggcmFzLnN0YXRlICE9IFVua25vd25fU3RhdGUgJiYKKyAgICAgICAgICAgICAgIEVuZF9Qcm9maWxlKCBSQVNfVkFSUyBvICkgICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAgIC8qIGNyZWF0ZSBhIG5ldyBwcm9maWxlICovCisgICAgICAgICAgaWYgKCBOZXdfUHJvZmlsZSggUkFTX1ZBUlMgc3RhdGVfYmV6LCBvICkgKQorICAgICAgICAgICAgZ290byBGYWlsOworICAgICAgICB9CisKKyAgICAgICAgLyogbm93IGNhbGwgdGhlIGFwcHJvcHJpYXRlIHJvdXRpbmUgKi8KKyAgICAgICAgaWYgKCBzdGF0ZV9iZXogPT0gQXNjZW5kaW5nX1N0YXRlICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggQmV6aWVyX1VwKCBSQVNfVkFSUyAyLCBTcGxpdF9Db25pYywgcmFzLm1pblksIHJhcy5tYXhZICkgKQorICAgICAgICAgICAgZ290byBGYWlsOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICBpZiAoIEJlemllcl9Eb3duKCBSQVNfVkFSUyAyLCBTcGxpdF9Db25pYywgcmFzLm1pblksIHJhcy5tYXhZICkgKQorICAgICAgICAgICAgZ290byBGYWlsOworICAgICAgfQorCisgICAgfSB3aGlsZSAoIHJhcy5hcmMgPj0gcmFzLmFyY3MgKTsKKworICAgIHJhcy5sYXN0WCA9IHgzOworICAgIHJhcy5sYXN0WSA9IHkzOworCisgICAgcmV0dXJuIFNVQ0NFU1M7CisKKyAgRmFpbDoKKyAgICByZXR1cm4gRkFJTFVSRTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ3ViaWNfVG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW5qZWN0IGEgbmV3IGN1YmljIGFyYyBhbmQgYWRqdXN0IHRoZSBwcm9maWxlIGxpc3QuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBjeDEgOjogVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgYXJjJ3MgZmlyc3QgbmV3IGNvbnRyb2wgcG9pbnQuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGN5MSA6OiBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBhcmMncyBmaXJzdCBuZXcgY29udHJvbCBwb2ludC4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgY3gyIDo6IFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGFyYydzIHNlY29uZCBuZXcgY29udHJvbCBwb2ludC4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBjeTIgOjogVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgYXJjJ3Mgc2Vjb25kIG5ldyBjb250cm9sIHBvaW50LiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHggICA6OiBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBhcmMncyBlbmQgcG9pbnQgKGl0cyBzdGFydCBwb2ludCBpcyAgKi8KKyAgLyogICAgICAgICAgc3RvcmVkIGluIGBsYXN0WCcpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHkgICA6OiBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBhcmMncyBlbmQgcG9pbnQgKGl0cyBzdGFydCBwb2ludCBpcyAgKi8KKyAgLyogICAgICAgICAgc3RvcmVkIGluIGBsYXN0WScpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBTVUNDRVNTIG9uIHN1Y2Nlc3MsIEZBSUxVUkUgb24gcmVuZGVyIHBvb2wgb3ZlcmZsb3cgb3IgaW5jb3JyZWN0ICAgICovCisgIC8qICAgcHJvZmlsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEJvb2wKKyAgQ3ViaWNfVG8oIFJBU19BUkdTIExvbmcgIGN4MSwKKyAgICAgICAgICAgICAgICAgICAgIExvbmcgIGN5MSwKKyAgICAgICAgICAgICAgICAgICAgIExvbmcgIGN4MiwKKyAgICAgICAgICAgICAgICAgICAgIExvbmcgIGN5MiwKKyAgICAgICAgICAgICAgICAgICAgIExvbmcgIHgsCisgICAgICAgICAgICAgICAgICAgICBMb25nICB5ICkKKyAgeworICAgIExvbmcgICAgIHkxLCB5MiwgeTMsIHk0LCB4NCwgeW1pbjEsIHltYXgxLCB5bWluMiwgeW1heDI7CisgICAgVFN0YXRlcyAgc3RhdGVfYmV6OworCisKKyAgICByYXMuYXJjICAgICAgPSByYXMuYXJjczsKKyAgICByYXMuYXJjWzNdLnggPSByYXMubGFzdFg7CisgICAgcmFzLmFyY1szXS55ID0gcmFzLmxhc3RZOworICAgIHJhcy5hcmNbMl0ueCA9IGN4MTsKKyAgICByYXMuYXJjWzJdLnkgPSBjeTE7CisgICAgcmFzLmFyY1sxXS54ID0gY3gyOworICAgIHJhcy5hcmNbMV0ueSA9IGN5MjsKKyAgICByYXMuYXJjWzBdLnggPSB4OworICAgIHJhcy5hcmNbMF0ueSA9IHk7CisKKyAgICBkbworICAgIHsKKyAgICAgIHkxID0gcmFzLmFyY1szXS55OworICAgICAgeTIgPSByYXMuYXJjWzJdLnk7CisgICAgICB5MyA9IHJhcy5hcmNbMV0ueTsKKyAgICAgIHk0ID0gcmFzLmFyY1swXS55OworICAgICAgeDQgPSByYXMuYXJjWzBdLng7CisKKyAgICAgIC8qIGZpcnN0LCBjYXRlZ29yaXplIHRoZSBCZXppZXIgYXJjICovCisKKyAgICAgIGlmICggeTEgPD0geTQgKQorICAgICAgeworICAgICAgICB5bWluMSA9IHkxOworICAgICAgICB5bWF4MSA9IHk0OworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICB5bWluMSA9IHk0OworICAgICAgICB5bWF4MSA9IHkxOworICAgICAgfQorCisgICAgICBpZiAoIHkyIDw9IHkzICkKKyAgICAgIHsKKyAgICAgICAgeW1pbjIgPSB5MjsKKyAgICAgICAgeW1heDIgPSB5MzsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgeW1pbjIgPSB5MzsKKyAgICAgICAgeW1heDIgPSB5MjsKKyAgICAgIH0KKworICAgICAgaWYgKCB5bWluMiA8IHltaW4xIHx8IHltYXgyID4geW1heDEgKQorICAgICAgeworICAgICAgICAvKiB0aGlzIGFyYyBoYXMgbm8gZ2l2ZW4gZGlyZWN0aW9uLCBzcGxpdCBpdCEgKi8KKyAgICAgICAgU3BsaXRfQ3ViaWMoIHJhcy5hcmMgKTsKKyAgICAgICAgcmFzLmFyYyArPSAzOworICAgICAgfQorICAgICAgZWxzZSBpZiAoIHkxID09IHk0ICkKKyAgICAgIHsKKyAgICAgICAgLyogdGhpcyBhcmMgaXMgZmxhdCwgaWdub3JlIGl0IGFuZCBwb3AgaXQgZnJvbSB0aGUgQmV6aWVyIHN0YWNrICovCisgICAgICAgIHJhcy5hcmMgLT0gMzsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgc3RhdGVfYmV6ID0gKCB5MSA8PSB5NCApID8gQXNjZW5kaW5nX1N0YXRlIDogRGVzY2VuZGluZ19TdGF0ZTsKKworICAgICAgICAvKiBkZXRlY3QgYSBjaGFuZ2Ugb2YgZGlyZWN0aW9uICovCisgICAgICAgIGlmICggcmFzLnN0YXRlICE9IHN0YXRlX2JleiApCisgICAgICAgIHsKKyAgICAgICAgICBCb29sICBvID0gc3RhdGVfYmV6ID09IEFzY2VuZGluZ19TdGF0ZSA/IElTX0JPVFRPTV9PVkVSU0hPT1QoIHkxICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IElTX1RPUF9PVkVSU0hPT1QoIHkxICk7CisKKworICAgICAgICAgIC8qIGZpbmFsaXplIGN1cnJlbnQgcHJvZmlsZSBpZiBhbnkgKi8KKyAgICAgICAgICBpZiAoIHJhcy5zdGF0ZSAhPSBVbmtub3duX1N0YXRlICYmCisgICAgICAgICAgICAgICBFbmRfUHJvZmlsZSggUkFTX1ZBUlMgbyApICApCisgICAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgICBpZiAoIE5ld19Qcm9maWxlKCBSQVNfVkFSUyBzdGF0ZV9iZXosIG8gKSApCisgICAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgIH0KKworICAgICAgICAvKiBjb21wdXRlIGludGVyc2VjdGlvbnMgKi8KKyAgICAgICAgaWYgKCBzdGF0ZV9iZXogPT0gQXNjZW5kaW5nX1N0YXRlICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggQmV6aWVyX1VwKCBSQVNfVkFSUyAzLCBTcGxpdF9DdWJpYywgcmFzLm1pblksIHJhcy5tYXhZICkgKQorICAgICAgICAgICAgZ290byBGYWlsOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICBpZiAoIEJlemllcl9Eb3duKCBSQVNfVkFSUyAzLCBTcGxpdF9DdWJpYywgcmFzLm1pblksIHJhcy5tYXhZICkgKQorICAgICAgICAgICAgZ290byBGYWlsOworICAgICAgfQorCisgICAgfSB3aGlsZSAoIHJhcy5hcmMgPj0gcmFzLmFyY3MgKTsKKworICAgIHJhcy5sYXN0WCA9IHg0OworICAgIHJhcy5sYXN0WSA9IHk0OworCisgICAgcmV0dXJuIFNVQ0NFU1M7CisKKyAgRmFpbDoKKyAgICByZXR1cm4gRkFJTFVSRTsKKyAgfQorCisKKyN1bmRlZiAgU1dBUF8KKyNkZWZpbmUgU1dBUF8oIHgsIHkgKSAgZG8gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgTG9uZyAgc3dhcCA9IHg7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHk7ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gc3dhcDsgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICggMCApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEZWNvbXBvc2VfQ3VydmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTY2FuIHRoZSBvdXRsaW5lIGFycmF5cyBpbiBvcmRlciB0byBlbWl0IGluZGl2aWR1YWwgc2VnbWVudHMgYW5kICAgKi8KKyAgLyogICAgQmV6aWVycyBieSBjYWxsaW5nIExpbmVfVG8oKSBhbmQgQmV6aWVyX1RvKCkuICBJdCBoYW5kbGVzIGFsbCAgICAgICovCisgIC8qICAgIHdlaXJkIGNhc2VzLCBsaWtlIHdoZW4gdGhlIGZpcnN0IHBvaW50IGlzIG9mZiB0aGUgY3VydmUsIG9yIHdoZW4gICAqLworICAvKiAgICB0aGVyZSBhcmUgc2ltcGx5IG5vIGBvbicgcG9pbnRzIGluIHRoZSBjb250b3VyISAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmaXJzdCAgIDo6IFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgcG9pbnQgaW4gdGhlIGNvbnRvdXIuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxhc3QgICAgOjogVGhlIGluZGV4IG9mIHRoZSBsYXN0IHBvaW50IGluIHRoZSBjb250b3VyLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmxpcHBlZCA6OiBJZiBzZXQsIGZsaXAgdGhlIGRpcmVjdGlvbiBvZiB0aGUgY3VydmUuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU1VDQ0VTUyBvbiBzdWNjZXNzLCBGQUlMVVJFIG9uIGVycm9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgQm9vbAorICBEZWNvbXBvc2VfQ3VydmUoIFJBU19BUkdTIFVTaG9ydCAgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNob3J0ICBsYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgZmxpcHBlZCApCisgIHsKKyAgICBGVF9WZWN0b3IgICB2X2xhc3Q7CisgICAgRlRfVmVjdG9yICAgdl9jb250cm9sOworICAgIEZUX1ZlY3RvciAgIHZfc3RhcnQ7CisKKyAgICBGVF9WZWN0b3IqICBwb2ludHM7CisgICAgRlRfVmVjdG9yKiAgcG9pbnQ7CisgICAgRlRfVmVjdG9yKiAgbGltaXQ7CisgICAgY2hhciogICAgICAgdGFnczsKKworICAgIHVuc2lnbmVkICAgIHRhZzsgICAgICAgLyogY3VycmVudCBwb2ludCdzIHN0YXRlICAgICAgICAgICAqLworCisKKyAgICBwb2ludHMgPSByYXMub3V0bGluZS5wb2ludHM7CisgICAgbGltaXQgID0gcG9pbnRzICsgbGFzdDsKKworICAgIHZfc3RhcnQueCA9IFNDQUxFRCggcG9pbnRzW2ZpcnN0XS54ICk7CisgICAgdl9zdGFydC55ID0gU0NBTEVEKCBwb2ludHNbZmlyc3RdLnkgKTsKKyAgICB2X2xhc3QueCAgPSBTQ0FMRUQoIHBvaW50c1tsYXN0XS54ICk7CisgICAgdl9sYXN0LnkgID0gU0NBTEVEKCBwb2ludHNbbGFzdF0ueSApOworCisgICAgaWYgKCBmbGlwcGVkICkKKyAgICB7CisgICAgICBTV0FQXyggdl9zdGFydC54LCB2X3N0YXJ0LnkgKTsKKyAgICAgIFNXQVBfKCB2X2xhc3QueCwgdl9sYXN0LnkgKTsKKyAgICB9CisKKyAgICB2X2NvbnRyb2wgPSB2X3N0YXJ0OworCisgICAgcG9pbnQgPSBwb2ludHMgKyBmaXJzdDsKKyAgICB0YWdzICA9IHJhcy5vdXRsaW5lLnRhZ3MgKyBmaXJzdDsKKworICAgIC8qIHNldCBzY2FuIG1vZGUgaWYgbmVjZXNzYXJ5ICovCisgICAgaWYgKCB0YWdzWzBdICYgRlRfQ1VSVkVfVEFHX0hBU19TQ0FOTU9ERSApCisgICAgICByYXMuZHJvcE91dENvbnRyb2wgPSAoQnl0ZSl0YWdzWzBdID4+IDU7CisKKyAgICB0YWcgPSBGVF9DVVJWRV9UQUcoIHRhZ3NbMF0gKTsKKworICAgIC8qIEEgY29udG91ciBjYW5ub3Qgc3RhcnQgd2l0aCBhIGN1YmljIGNvbnRyb2wgcG9pbnQhICovCisgICAgaWYgKCB0YWcgPT0gRlRfQ1VSVkVfVEFHX0NVQklDICkKKyAgICAgIGdvdG8gSW52YWxpZF9PdXRsaW5lOworCisgICAgLyogY2hlY2sgZmlyc3QgcG9pbnQgdG8gZGV0ZXJtaW5lIG9yaWdpbiAqLworICAgIGlmICggdGFnID09IEZUX0NVUlZFX1RBR19DT05JQyApCisgICAgeworICAgICAgLyogZmlyc3QgcG9pbnQgaXMgY29uaWMgY29udHJvbC4gIFllcywgdGhpcyBoYXBwZW5zLiAqLworICAgICAgaWYgKCBGVF9DVVJWRV9UQUcoIHJhcy5vdXRsaW5lLnRhZ3NbbGFzdF0gKSA9PSBGVF9DVVJWRV9UQUdfT04gKQorICAgICAgeworICAgICAgICAvKiBzdGFydCBhdCBsYXN0IHBvaW50IGlmIGl0IGlzIG9uIHRoZSBjdXJ2ZSAqLworICAgICAgICB2X3N0YXJ0ID0gdl9sYXN0OworICAgICAgICBsaW1pdC0tOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBpZiBib3RoIGZpcnN0IGFuZCBsYXN0IHBvaW50cyBhcmUgY29uaWMsICAgICAgICAgKi8KKyAgICAgICAgLyogc3RhcnQgYXQgdGhlaXIgbWlkZGxlIGFuZCByZWNvcmQgaXRzIHBvc2l0aW9uICAgICovCisgICAgICAgIC8qIGZvciBjbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICB2X3N0YXJ0LnggPSAoIHZfc3RhcnQueCArIHZfbGFzdC54ICkgLyAyOworICAgICAgICB2X3N0YXJ0LnkgPSAoIHZfc3RhcnQueSArIHZfbGFzdC55ICkgLyAyOworCisgICAgICAgIHZfbGFzdCA9IHZfc3RhcnQ7CisgICAgICB9CisgICAgICBwb2ludC0tOworICAgICAgdGFncy0tOworICAgIH0KKworICAgIHJhcy5sYXN0WCA9IHZfc3RhcnQueDsKKyAgICByYXMubGFzdFkgPSB2X3N0YXJ0Lnk7CisKKyAgICB3aGlsZSAoIHBvaW50IDwgbGltaXQgKQorICAgIHsKKyAgICAgIHBvaW50Kys7CisgICAgICB0YWdzKys7CisKKyAgICAgIHRhZyA9IEZUX0NVUlZFX1RBRyggdGFnc1swXSApOworCisgICAgICBzd2l0Y2ggKCB0YWcgKQorICAgICAgeworICAgICAgY2FzZSBGVF9DVVJWRV9UQUdfT046ICAvKiBlbWl0IGEgc2luZ2xlIGxpbmVfdG8gKi8KKyAgICAgICAgeworICAgICAgICAgIExvbmcgIHgsIHk7CisKKworICAgICAgICAgIHggPSBTQ0FMRUQoIHBvaW50LT54ICk7CisgICAgICAgICAgeSA9IFNDQUxFRCggcG9pbnQtPnkgKTsKKyAgICAgICAgICBpZiAoIGZsaXBwZWQgKQorICAgICAgICAgICAgU1dBUF8oIHgsIHkgKTsKKworICAgICAgICAgIGlmICggTGluZV9UbyggUkFTX1ZBUlMgeCwgeSApICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICBjYXNlIEZUX0NVUlZFX1RBR19DT05JQzogIC8qIGNvbnN1bWUgY29uaWMgYXJjcyAqLworICAgICAgICB2X2NvbnRyb2wueCA9IFNDQUxFRCggcG9pbnRbMF0ueCApOworICAgICAgICB2X2NvbnRyb2wueSA9IFNDQUxFRCggcG9pbnRbMF0ueSApOworCisgICAgICAgIGlmICggZmxpcHBlZCApCisgICAgICAgICAgU1dBUF8oIHZfY29udHJvbC54LCB2X2NvbnRyb2wueSApOworCisgICAgICBEb19Db25pYzoKKyAgICAgICAgaWYgKCBwb2ludCA8IGxpbWl0ICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1ZlY3RvciAgdl9taWRkbGU7CisgICAgICAgICAgTG9uZyAgICAgICB4LCB5OworCisKKyAgICAgICAgICBwb2ludCsrOworICAgICAgICAgIHRhZ3MrKzsKKyAgICAgICAgICB0YWcgPSBGVF9DVVJWRV9UQUcoIHRhZ3NbMF0gKTsKKworICAgICAgICAgIHggPSBTQ0FMRUQoIHBvaW50WzBdLnggKTsKKyAgICAgICAgICB5ID0gU0NBTEVEKCBwb2ludFswXS55ICk7CisKKyAgICAgICAgICBpZiAoIGZsaXBwZWQgKQorICAgICAgICAgICAgU1dBUF8oIHgsIHkgKTsKKworICAgICAgICAgIGlmICggdGFnID09IEZUX0NVUlZFX1RBR19PTiApCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKCBDb25pY19UbyggUkFTX1ZBUlMgdl9jb250cm9sLngsIHZfY29udHJvbC55LCB4LCB5ICkgKQorICAgICAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoIHRhZyAhPSBGVF9DVVJWRV9UQUdfQ09OSUMgKQorICAgICAgICAgICAgZ290byBJbnZhbGlkX091dGxpbmU7CisKKyAgICAgICAgICB2X21pZGRsZS54ID0gKCB2X2NvbnRyb2wueCArIHggKSAvIDI7CisgICAgICAgICAgdl9taWRkbGUueSA9ICggdl9jb250cm9sLnkgKyB5ICkgLyAyOworCisgICAgICAgICAgaWYgKCBDb25pY19UbyggUkFTX1ZBUlMgdl9jb250cm9sLngsIHZfY29udHJvbC55LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfbWlkZGxlLngsICB2X21pZGRsZS55ICkgKQorICAgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgICAgdl9jb250cm9sLnggPSB4OworICAgICAgICAgIHZfY29udHJvbC55ID0geTsKKworICAgICAgICAgIGdvdG8gRG9fQ29uaWM7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIENvbmljX1RvKCBSQVNfVkFSUyB2X2NvbnRyb2wueCwgdl9jb250cm9sLnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfc3RhcnQueCwgICB2X3N0YXJ0LnkgKSApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgIGdvdG8gQ2xvc2U7CisKKyAgICAgIGRlZmF1bHQ6ICAvKiBGVF9DVVJWRV9UQUdfQ1VCSUMgKi8KKyAgICAgICAgeworICAgICAgICAgIExvbmcgIHgxLCB5MSwgeDIsIHkyLCB4MywgeTM7CisKKworICAgICAgICAgIGlmICggcG9pbnQgKyAxID4gbGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICBGVF9DVVJWRV9UQUcoIHRhZ3NbMV0gKSAhPSBGVF9DVVJWRV9UQUdfQ1VCSUMgKQorICAgICAgICAgICAgZ290byBJbnZhbGlkX091dGxpbmU7CisKKyAgICAgICAgICBwb2ludCArPSAyOworICAgICAgICAgIHRhZ3MgICs9IDI7CisKKyAgICAgICAgICB4MSA9IFNDQUxFRCggcG9pbnRbLTJdLnggKTsKKyAgICAgICAgICB5MSA9IFNDQUxFRCggcG9pbnRbLTJdLnkgKTsKKyAgICAgICAgICB4MiA9IFNDQUxFRCggcG9pbnRbLTFdLnggKTsKKyAgICAgICAgICB5MiA9IFNDQUxFRCggcG9pbnRbLTFdLnkgKTsKKworICAgICAgICAgIGlmICggZmxpcHBlZCApCisgICAgICAgICAgeworICAgICAgICAgICAgU1dBUF8oIHgxLCB5MSApOworICAgICAgICAgICAgU1dBUF8oIHgyLCB5MiApOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICggcG9pbnQgPD0gbGltaXQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHgzID0gU0NBTEVEKCBwb2ludFswXS54ICk7CisgICAgICAgICAgICB5MyA9IFNDQUxFRCggcG9pbnRbMF0ueSApOworCisgICAgICAgICAgICBpZiAoIGZsaXBwZWQgKQorICAgICAgICAgICAgICBTV0FQXyggeDMsIHkzICk7CisKKyAgICAgICAgICAgIGlmICggQ3ViaWNfVG8oIFJBU19WQVJTIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMgKSApCisgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICggQ3ViaWNfVG8oIFJBU19WQVJTIHgxLCB5MSwgeDIsIHkyLCB2X3N0YXJ0LngsIHZfc3RhcnQueSApICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgICBnb3RvIENsb3NlOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgLyogY2xvc2UgdGhlIGNvbnRvdXIgd2l0aCBhIGxpbmUgc2VnbWVudCAqLworICAgIGlmICggTGluZV9UbyggUkFTX1ZBUlMgdl9zdGFydC54LCB2X3N0YXJ0LnkgKSApCisgICAgICBnb3RvIEZhaWw7CisKKyAgQ2xvc2U6CisgICAgcmV0dXJuIFNVQ0NFU1M7CisKKyAgSW52YWxpZF9PdXRsaW5lOgorICAgIHJhcy5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkICk7CisKKyAgRmFpbDoKKyAgICByZXR1cm4gRkFJTFVSRTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29udmVydF9HbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29udmVydCBhIGdseXBoIGludG8gYSBzZXJpZXMgb2Ygc2VnbWVudHMgYW5kIGFyY3MgYW5kIG1ha2UgYSAgICAgICovCisgIC8qICAgIHByb2ZpbGVzIGxpc3Qgd2l0aCB0aGVtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZsaXBwZWQgOjogSWYgc2V0LCBmbGlwIHRoZSBkaXJlY3Rpb24gb2YgY3VydmUuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNVQ0NFU1Mgb24gc3VjY2VzcywgRkFJTFVSRSBpZiBhbnkgZXJyb3Igd2FzIGVuY291bnRlcmVkIGR1cmluZyAgICAqLworICAvKiAgICByZW5kZXJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBCb29sCisgIENvbnZlcnRfR2x5cGgoIFJBU19BUkdTIGludCAgZmxpcHBlZCApCisgIHsKKyAgICBpbnQgICAgICAgaTsKKyAgICB1bnNpZ25lZCAgc3RhcnQ7CisKKworICAgIHJhcy5mUHJvZmlsZSA9IE5VTEw7CisgICAgcmFzLmpvaW50ICAgID0gRkFMU0U7CisgICAgcmFzLmZyZXNoICAgID0gRkFMU0U7CisKKyAgICByYXMubWF4QnVmZiAgPSByYXMuc2l6ZUJ1ZmYgLSBBbGlnblByb2ZpbGVTaXplOworCisgICAgcmFzLm51bVR1cm5zID0gMDsKKworICAgIHJhcy5jUHJvZmlsZSAgICAgICAgID0gKFBQcm9maWxlKXJhcy50b3A7CisgICAgcmFzLmNQcm9maWxlLT5vZmZzZXQgPSByYXMudG9wOworICAgIHJhcy5udW1fUHJvZnMgICAgICAgID0gMDsKKworICAgIHN0YXJ0ID0gMDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgcmFzLm91dGxpbmUubl9jb250b3VyczsgaSsrICkKKyAgICB7CisgICAgICBQUHJvZmlsZSAgbGFzdFByb2ZpbGU7CisgICAgICBCb29sICAgICAgbzsKKworCisgICAgICByYXMuc3RhdGUgICAgPSBVbmtub3duX1N0YXRlOworICAgICAgcmFzLmdQcm9maWxlID0gTlVMTDsKKworICAgICAgaWYgKCBEZWNvbXBvc2VfQ3VydmUoIFJBU19WQVJTICh1bnNpZ25lZCBzaG9ydClzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXMub3V0bGluZS5jb250b3Vyc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwcGVkICkgKQorICAgICAgICByZXR1cm4gRkFJTFVSRTsKKworICAgICAgc3RhcnQgPSByYXMub3V0bGluZS5jb250b3Vyc1tpXSArIDE7CisKKyAgICAgIC8qIHdlIG11c3Qgbm93IGNoZWNrIHdoZXRoZXIgdGhlIGV4dHJlbWUgYXJjcyBqb2luIG9yIG5vdCAqLworICAgICAgaWYgKCBGUkFDKCByYXMubGFzdFkgKSA9PSAwICYmCisgICAgICAgICAgIHJhcy5sYXN0WSA+PSByYXMubWluWSAgJiYKKyAgICAgICAgICAgcmFzLmxhc3RZIDw9IHJhcy5tYXhZICApCisgICAgICAgIGlmICggcmFzLmdQcm9maWxlICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAoIHJhcy5nUHJvZmlsZS0+ZmxhZ3MgJiBGbG93X1VwICkgPT0KKyAgICAgICAgICAgICAgICggcmFzLmNQcm9maWxlLT5mbGFncyAmIEZsb3dfVXAgKSApCisgICAgICAgICAgcmFzLnRvcC0tOworICAgICAgICAvKiBOb3RlIHRoYXQgcmFzLmdQcm9maWxlIGNhbiBiZSBuaWwgaWYgdGhlIGNvbnRvdXIgd2FzIHRvbyBzbWFsbCAqLworICAgICAgICAvKiB0byBiZSBkcmF3bi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICBsYXN0UHJvZmlsZSA9IHJhcy5jUHJvZmlsZTsKKyAgICAgIGlmICggcmFzLmNQcm9maWxlLT5mbGFncyAmIEZsb3dfVXAgKQorICAgICAgICBvID0gSVNfVE9QX09WRVJTSE9PVCggcmFzLmxhc3RZICk7CisgICAgICBlbHNlCisgICAgICAgIG8gPSBJU19CT1RUT01fT1ZFUlNIT09UKCByYXMubGFzdFkgKTsKKyAgICAgIGlmICggRW5kX1Byb2ZpbGUoIFJBU19WQVJTIG8gKSApCisgICAgICAgIHJldHVybiBGQUlMVVJFOworCisgICAgICAvKiBjbG9zZSB0aGUgYG5leHQgcHJvZmlsZSBpbiBjb250b3VyJyBsaW5rZWQgbGlzdCAqLworICAgICAgaWYgKCByYXMuZ1Byb2ZpbGUgKQorICAgICAgICBsYXN0UHJvZmlsZS0+bmV4dCA9IHJhcy5nUHJvZmlsZTsKKyAgICB9CisKKyAgICBpZiAoIEZpbmFsaXplX1Byb2ZpbGVfVGFibGUoIFJBU19WQVIgKSApCisgICAgICByZXR1cm4gRkFJTFVSRTsKKworICAgIHJldHVybiAoQm9vbCkoIHJhcy50b3AgPCByYXMubWF4QnVmZiA/IFNVQ0NFU1MgOiBGQUlMVVJFICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiovCisgIC8qKiAgU0NBTi1MSU5FIFNXRUVQUyBBTkQgRFJBV0lORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqLworICAvKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgSW5pdF9MaW5rZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRpYWxpemVzIGFuIGVtcHR5IGxpbmtlZCBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5pdF9MaW5rZWQoIFRQcm9maWxlTGlzdCogIGwgKQorICB7CisgICAgKmwgPSBOVUxMOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBJbnNOZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW5zZXJ0cyBhIG5ldyBwcm9maWxlIGluIGEgbGlua2VkIGxpc3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNOZXcoIFBQcm9maWxlTGlzdCAgbGlzdCwKKyAgICAgICAgICBQUHJvZmlsZSAgICAgIHByb2ZpbGUgKQorICB7CisgICAgUFByb2ZpbGUgICpvbGQsIGN1cnJlbnQ7CisgICAgTG9uZyAgICAgICB4OworCisKKyAgICBvbGQgICAgID0gbGlzdDsKKyAgICBjdXJyZW50ID0gKm9sZDsKKyAgICB4ICAgICAgID0gcHJvZmlsZS0+WDsKKworICAgIHdoaWxlICggY3VycmVudCApCisgICAgeworICAgICAgaWYgKCB4IDwgY3VycmVudC0+WCApCisgICAgICAgIGJyZWFrOworICAgICAgb2xkICAgICA9ICZjdXJyZW50LT5saW5rOworICAgICAgY3VycmVudCA9ICpvbGQ7CisgICAgfQorCisgICAgcHJvZmlsZS0+bGluayA9IGN1cnJlbnQ7CisgICAgKm9sZCAgICAgICAgICA9IHByb2ZpbGU7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIERlbE9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZW1vdmVzIGFuIG9sZCBwcm9maWxlIGZyb20gYSBsaW5rZWQgbGlzdC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIERlbE9sZCggUFByb2ZpbGVMaXN0ICBsaXN0LAorICAgICAgICAgIFBQcm9maWxlICAgICAgcHJvZmlsZSApCisgIHsKKyAgICBQUHJvZmlsZSAgKm9sZCwgY3VycmVudDsKKworCisgICAgb2xkICAgICA9IGxpc3Q7CisgICAgY3VycmVudCA9ICpvbGQ7CisKKyAgICB3aGlsZSAoIGN1cnJlbnQgKQorICAgIHsKKyAgICAgIGlmICggY3VycmVudCA9PSBwcm9maWxlICkKKyAgICAgIHsKKyAgICAgICAgKm9sZCA9IGN1cnJlbnQtPmxpbms7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgb2xkICAgICA9ICZjdXJyZW50LT5saW5rOworICAgICAgY3VycmVudCA9ICpvbGQ7CisgICAgfQorCisgICAgLyogd2Ugc2hvdWxkIG5ldmVyIGdldCB0aGVyZSwgdW5sZXNzIHRoZSBwcm9maWxlIHdhcyBub3QgcGFydCBvZiAqLworICAgIC8qIHRoZSBsaXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNvcnRzIGEgdHJhY2UgbGlzdC4gIEluIDk1JSwgdGhlIGxpc3QgaXMgYWxyZWFkeSBzb3J0ZWQuICBXZSBuZWVkICAqLworICAvKiAgICBhbiBhbGdvcml0aG0gd2hpY2ggaXMgZmFzdCBpbiB0aGlzIGNhc2UuICBCdWJibGUgc29ydCBpcyBlbm91Z2ggICAgKi8KKyAgLyogICAgYW5kIHNpbXBsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBTb3J0KCBQUHJvZmlsZUxpc3QgIGxpc3QgKQorICB7CisgICAgUFByb2ZpbGUgICpvbGQsIGN1cnJlbnQsIG5leHQ7CisKKworICAgIC8qIEZpcnN0LCBzZXQgdGhlIG5ldyBYIGNvb3JkaW5hdGUgb2YgZWFjaCBwcm9maWxlICovCisgICAgY3VycmVudCA9ICpsaXN0OworICAgIHdoaWxlICggY3VycmVudCApCisgICAgeworICAgICAgY3VycmVudC0+WCAgICAgICA9ICpjdXJyZW50LT5vZmZzZXQ7CisgICAgICBjdXJyZW50LT5vZmZzZXQgKz0gY3VycmVudC0+ZmxhZ3MgJiBGbG93X1VwID8gMSA6IC0xOworICAgICAgY3VycmVudC0+aGVpZ2h0LS07CisgICAgICBjdXJyZW50ID0gY3VycmVudC0+bGluazsKKyAgICB9CisKKyAgICAvKiBUaGVuIHNvcnQgdGhlbSAqLworICAgIG9sZCAgICAgPSBsaXN0OworICAgIGN1cnJlbnQgPSAqb2xkOworCisgICAgaWYgKCAhY3VycmVudCApCisgICAgICByZXR1cm47CisKKyAgICBuZXh0ID0gY3VycmVudC0+bGluazsKKworICAgIHdoaWxlICggbmV4dCApCisgICAgeworICAgICAgaWYgKCBjdXJyZW50LT5YIDw9IG5leHQtPlggKQorICAgICAgeworICAgICAgICBvbGQgICAgID0gJmN1cnJlbnQtPmxpbms7CisgICAgICAgIGN1cnJlbnQgPSAqb2xkOworCisgICAgICAgIGlmICggIWN1cnJlbnQgKQorICAgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgKm9sZCAgICAgICAgICA9IG5leHQ7CisgICAgICAgIGN1cnJlbnQtPmxpbmsgPSBuZXh0LT5saW5rOworICAgICAgICBuZXh0LT5saW5rICAgID0gY3VycmVudDsKKworICAgICAgICBvbGQgICAgID0gbGlzdDsKKyAgICAgICAgY3VycmVudCA9ICpvbGQ7CisgICAgICB9CisKKyAgICAgIG5leHQgPSBjdXJyZW50LT5saW5rOworICAgIH0KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgVmVydGljYWwgU3dlZXAgUHJvY2VkdXJlIFNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBUaGVzZSBmb3VyIHJvdXRpbmVzIGFyZSB1c2VkIGR1cmluZyB0aGUgdmVydGljYWwgYmxhY2svd2hpdGUgc3dlZXAgICAqLworICAvKiAgcGhhc2UgYnkgdGhlIGdlbmVyaWMgRHJhd19Td2VlcCgpIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyB2b2lkCisgIFZlcnRpY2FsX1N3ZWVwX0luaXQoIFJBU19BUkdTIFNob3J0KiAgbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaG9ydCogIG1heCApCisgIHsKKyAgICBMb25nICBwaXRjaCA9IHJhcy50YXJnZXQucGl0Y2g7CisKKyAgICBGVF9VTlVTRUQoIG1heCApOworCisKKyAgICByYXMudHJhY2VJbmNyID0gKFNob3J0KS1waXRjaDsKKyAgICByYXMudHJhY2VPZnMgID0gLSptaW4gKiBwaXRjaDsKKyAgICBpZiAoIHBpdGNoID4gMCApCisgICAgICByYXMudHJhY2VPZnMgKz0gKCByYXMudGFyZ2V0LnJvd3MgLSAxICkgKiBwaXRjaDsKKworICAgIHJhcy5ncmF5X21pbl94ID0gMDsKKyAgICByYXMuZ3JheV9tYXhfeCA9IDA7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIFZlcnRpY2FsX1N3ZWVwX1NwYW4oIFJBU19BUkdTIFNob3J0ICAgICAgIHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFByb2ZpbGUgICAgbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFByb2ZpbGUgICAgcmlnaHQgKQorICB7CisgICAgTG9uZyAgIGUxLCBlMjsKKyAgICBCeXRlKiAgdGFyZ2V0OworCisgICAgRlRfVU5VU0VEKCB5ICk7CisgICAgRlRfVU5VU0VEKCBsZWZ0ICk7CisgICAgRlRfVU5VU0VEKCByaWdodCApOworCisKKyAgICAvKiBEcm9wLW91dCBjb250cm9sICovCisKKyAgICBlMSA9IFRSVU5DKCBDRUlMSU5HKCB4MSApICk7CisKKyAgICBpZiAoIHgyIC0geDEgLSByYXMucHJlY2lzaW9uIDw9IHJhcy5wcmVjaXNpb25faml0dGVyICkKKyAgICAgIGUyID0gZTE7CisgICAgZWxzZQorICAgICAgZTIgPSBUUlVOQyggRkxPT1IoIHgyICkgKTsKKworICAgIGlmICggZTIgPj0gMCAmJiBlMSA8IHJhcy5iV2lkdGggKQorICAgIHsKKyAgICAgIGludCAgIGMxLCBjMjsKKyAgICAgIEJ5dGUgIGYxLCBmMjsKKworCisgICAgICBpZiAoIGUxIDwgMCApCisgICAgICAgIGUxID0gMDsKKyAgICAgIGlmICggZTIgPj0gcmFzLmJXaWR0aCApCisgICAgICAgIGUyID0gcmFzLmJXaWR0aCAtIDE7CisKKyAgICAgIGMxID0gKFNob3J0KSggZTEgPj4gMyApOworICAgICAgYzIgPSAoU2hvcnQpKCBlMiA+PiAzICk7CisKKyAgICAgIGYxID0gKEJ5dGUpICAoIDB4RkYgPj4gKCBlMSAmIDcgKSApOworICAgICAgZjIgPSAoQnl0ZSkgfiggMHg3RiA+PiAoIGUyICYgNyApICk7CisKKyAgICAgIGlmICggcmFzLmdyYXlfbWluX3ggPiBjMSApCisgICAgICAgIHJhcy5ncmF5X21pbl94ID0gKHNob3J0KWMxOworICAgICAgaWYgKCByYXMuZ3JheV9tYXhfeCA8IGMyICkKKyAgICAgICAgcmFzLmdyYXlfbWF4X3ggPSAoc2hvcnQpYzI7CisKKyAgICAgIHRhcmdldCA9IHJhcy5iVGFyZ2V0ICsgcmFzLnRyYWNlT2ZzICsgYzE7CisgICAgICBjMiAtPSBjMTsKKworICAgICAgaWYgKCBjMiA+IDAgKQorICAgICAgeworICAgICAgICB0YXJnZXRbMF0gfD0gZjE7CisKKyAgICAgICAgLyogbWVtc2V0KCkgaXMgc2xvd2VyIHRoYW4gdGhlIGZvbGxvd2luZyBjb2RlIG9uIG1hbnkgcGxhdGZvcm1zLiAqLworICAgICAgICAvKiBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0LCBpbiB0aGUgdmFzdCBtYWpvcml0eSBvZiBjYXNlcywgICovCisgICAgICAgIC8qIHRoZSBzcGFuIGxlbmd0aCBpbiBieXRlcyBpcyByZWxhdGl2ZWx5IHNtYWxsLiAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgYzItLTsKKyAgICAgICAgd2hpbGUgKCBjMiA+IDAgKQorICAgICAgICB7CisgICAgICAgICAgKigrK3RhcmdldCkgPSAweEZGOworICAgICAgICAgIGMyLS07CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0WzFdIHw9IGYyOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICAqdGFyZ2V0IHw9ICggZjEgJiBmMiApOworICAgIH0KKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgVmVydGljYWxfU3dlZXBfRHJvcCggUkFTX0FSR1MgU2hvcnQgICAgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUHJvZmlsZSAgICBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUHJvZmlsZSAgICByaWdodCApCisgIHsKKyAgICBMb25nICAgZTEsIGUyLCBweGw7CisgICAgU2hvcnQgIGMxLCBmMTsKKworCisgICAgLyogRHJvcC1vdXQgY29udHJvbCAqLworCisgICAgLyogICBlMiAgICAgICAgICAgIHgyICAgICAgICAgICAgICAgICAgICB4MSAgICAgICAgICAgZTEgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBwaXhlbCAgICAgICAgIGNvbnRvdXIgICAgICAgICAgICAgIGNvbnRvdXIgICAgICAgcGl4ZWwgICovCisgICAgLyogY2VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlciAqLworCisgICAgLyogZHJvcC1vdXQgbW9kZSAgICBzY2FuIGNvbnZlcnNpb24gcnVsZXMgKGFzIGRlZmluZWQgaW4gT3BlblR5cGUpICovCisgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgICAgLyogIDAgICAgICAgICAgICAgICAgMSwgMiwgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogIDEgICAgICAgICAgICAgICAgMSwgMiwgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogIDIgICAgICAgICAgICAgICAgMSwgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogIDMgICAgICAgICAgICAgICAgc2FtZSBhcyBtb2RlIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogIDQgICAgICAgICAgICAgICAgMSwgMiwgNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogIDUgICAgICAgICAgICAgICAgMSwgMiwgNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogIDYsIDcgICAgICAgICAgICAgc2FtZSBhcyBtb2RlIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICBlMSAgPSBDRUlMSU5HKCB4MSApOworICAgIGUyICA9IEZMT09SICAoIHgyICk7CisgICAgcHhsID0gZTE7CisKKyAgICBpZiAoIGUxID4gZTIgKQorICAgIHsKKyAgICAgIEludCAgZHJvcE91dENvbnRyb2wgPSBsZWZ0LT5mbGFncyAmIDc7CisKKworICAgICAgaWYgKCBlMSA9PSBlMiArIHJhcy5wcmVjaXNpb24gKQorICAgICAgeworICAgICAgICBzd2l0Y2ggKCBkcm9wT3V0Q29udHJvbCApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSAwOiAvKiBzaW1wbGUgZHJvcC1vdXRzIGluY2x1ZGluZyBzdHVicyAqLworICAgICAgICAgIHB4bCA9IGUyOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgNDogLyogc21hcnQgZHJvcC1vdXRzIGluY2x1ZGluZyBzdHVicyAqLworICAgICAgICAgIHB4bCA9IEZMT09SKCAoIHgxICsgeDIgLSAxICkgLyAyICsgcmFzLnByZWNpc2lvbl9oYWxmICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAxOiAvKiBzaW1wbGUgZHJvcC1vdXRzIGV4Y2x1ZGluZyBzdHVicyAqLworICAgICAgICBjYXNlIDU6IC8qIHNtYXJ0IGRyb3Atb3V0cyBleGNsdWRpbmcgc3R1YnMgICovCisKKyAgICAgICAgICAvKiBEcm9wLW91dCBDb250cm9sIFJ1bGVzICM0IGFuZCAjNiAqLworCisgICAgICAgICAgLyogVGhlIHNwZWNpZmljYXRpb24gbmVpdGhlciBwcm92aWRlcyBhbiBleGFjdCBkZWZpbml0aW9uICovCisgICAgICAgICAgLyogb2YgYSBgc3R1Yicgbm9yIGdpdmVzIGV4YWN0IHJ1bGVzIHRvIGV4Y2x1ZGUgdGhlbS4gICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogSGVyZSB0aGUgY29uc3RyYWludHMgd2UgdXNlIHRvIHJlY29nbml6ZSBhIHN0dWIuICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogIHVwcGVyIHN0dWI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAtIFBfTGVmdCBhbmQgUF9SaWdodCBhcmUgaW4gdGhlIHNhbWUgY29udG91ciAgICAgICAgICovCisgICAgICAgICAgLyogICAtIFBfUmlnaHQgaXMgdGhlIHN1Y2Nlc3NvciBvZiBQX0xlZnQgaW4gdGhhdCBjb250b3VyICovCisgICAgICAgICAgLyogICAtIHkgaXMgdGhlIHRvcCBvZiBQX0xlZnQgYW5kIFBfUmlnaHQgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogIGxvd2VyIHN0dWI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAtIFBfTGVmdCBhbmQgUF9SaWdodCBhcmUgaW4gdGhlIHNhbWUgY29udG91ciAgICAgICAgICovCisgICAgICAgICAgLyogICAtIFBfTGVmdCBpcyB0aGUgc3VjY2Vzc29yIG9mIFBfUmlnaHQgaW4gdGhhdCBjb250b3VyICovCisgICAgICAgICAgLyogICAtIHkgaXMgdGhlIGJvdHRvbSBvZiBQX0xlZnQgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogV2UgZHJhdyBhIHN0dWIgaWYgdGhlIGZvbGxvd2luZyBjb25zdHJhaW50cyBhcmUgbWV0LiAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAtIGZvciBhbiB1cHBlciBvciBsb3dlciBzdHViLCB0aGVyZSBpcyB0b3Agb3IgYm90dG9tICovCisgICAgICAgICAgLyogICAgIG92ZXJzaG9vdCwgcmVzcGVjdGl2ZWx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAtIHRoZSBjb3ZlcmVkIGludGVydmFsIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gYSBoYWxmICovCisgICAgICAgICAgLyogICAgIHBpeGVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICAvKiB1cHBlciBzdHViIHRlc3QgKi8KKyAgICAgICAgICBpZiAoIGxlZnQtPm5leHQgPT0gcmlnaHQgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgIGxlZnQtPmhlaWdodCA8PSAwICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICEoIGxlZnQtPmZsYWdzICYgT3ZlcnNob290X1RvcCAgICYmCisgICAgICAgICAgICAgICAgICB4MiAtIHgxID49IHJhcy5wcmVjaXNpb25faGFsZiApICkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgIC8qIGxvd2VyIHN0dWIgdGVzdCAqLworICAgICAgICAgIGlmICggcmlnaHQtPm5leHQgPT0gbGVmdCAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgIGxlZnQtPnN0YXJ0ID09IHkgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAhKCBsZWZ0LT5mbGFncyAmIE92ZXJzaG9vdF9Cb3R0b20gJiYKKyAgICAgICAgICAgICAgICAgIHgyIC0geDEgPj0gcmFzLnByZWNpc2lvbl9oYWxmICApICkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgIGlmICggZHJvcE91dENvbnRyb2wgPT0gMSApCisgICAgICAgICAgICBweGwgPSBlMjsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBweGwgPSBGTE9PUiggKCB4MSArIHgyIC0gMSApIC8gMiArIHJhcy5wcmVjaXNpb25faGFsZiApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6IC8qIG1vZGVzIDIsIDMsIDYsIDcgKi8KKyAgICAgICAgICByZXR1cm47ICAvKiBubyBkcm9wLW91dCBjb250cm9sICovCisgICAgICAgIH0KKworICAgICAgICAvKiB1bmRvY3VtZW50ZWQgYnV0IGNvbmZpcm1lZDogSWYgdGhlIGRyb3Atb3V0IHdvdWxkIHJlc3VsdCBpbiBhICAqLworICAgICAgICAvKiBwaXhlbCBvdXRzaWRlIG9mIHRoZSBib3VuZGluZyBib3gsIHVzZSB0aGUgcGl4ZWwgaW5zaWRlIG9mIHRoZSAqLworICAgICAgICAvKiBib3VuZGluZyBib3ggaW5zdGVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBpZiAoIHB4bCA8IDAgKQorICAgICAgICAgIHB4bCA9IGUxOworICAgICAgICBlbHNlIGlmICggVFJVTkMoIHB4bCApID49IHJhcy5iV2lkdGggKQorICAgICAgICAgIHB4bCA9IGUyOworCisgICAgICAgIC8qIGNoZWNrIHRoYXQgdGhlIG90aGVyIHBpeGVsIGlzbid0IHNldCAqLworICAgICAgICBlMSA9IHB4bCA9PSBlMSA/IGUyIDogZTE7CisKKyAgICAgICAgZTEgPSBUUlVOQyggZTEgKTsKKworICAgICAgICBjMSA9IChTaG9ydCkoIGUxID4+IDMgKTsKKyAgICAgICAgZjEgPSAoU2hvcnQpKCBlMSAmICA3ICk7CisKKyAgICAgICAgaWYgKCBlMSA+PSAwICYmIGUxIDwgcmFzLmJXaWR0aCAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgIHJhcy5iVGFyZ2V0W3Jhcy50cmFjZU9mcyArIGMxXSAmICggMHg4MCA+PiBmMSApICkKKyAgICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlMSA9IFRSVU5DKCBweGwgKTsKKworICAgIGlmICggZTEgPj0gMCAmJiBlMSA8IHJhcy5iV2lkdGggKQorICAgIHsKKyAgICAgIGMxID0gKFNob3J0KSggZTEgPj4gMyApOworICAgICAgZjEgPSAoU2hvcnQpKCBlMSAmIDcgKTsKKworICAgICAgaWYgKCByYXMuZ3JheV9taW5feCA+IGMxICkKKyAgICAgICAgcmFzLmdyYXlfbWluX3ggPSBjMTsKKyAgICAgIGlmICggcmFzLmdyYXlfbWF4X3ggPCBjMSApCisgICAgICAgIHJhcy5ncmF5X21heF94ID0gYzE7CisKKyAgICAgIHJhcy5iVGFyZ2V0W3Jhcy50cmFjZU9mcyArIGMxXSB8PSAoY2hhcikoIDB4ODAgPj4gZjEgKTsKKyAgICB9CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIFZlcnRpY2FsX1N3ZWVwX1N0ZXAoIFJBU19BUkcgKQorICB7CisgICAgcmFzLnRyYWNlT2ZzICs9IHJhcy50cmFjZUluY3I7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgSG9yaXpvbnRhbCBTd2VlcCBQcm9jZWR1cmUgU2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFRoZXNlIGZvdXIgcm91dGluZXMgYXJlIHVzZWQgZHVyaW5nIHRoZSBob3Jpem9udGFsIGJsYWNrL3doaXRlICAgICAqLworICAvKiAgc3dlZXAgcGhhc2UgYnkgdGhlIGdlbmVyaWMgRHJhd19Td2VlcCgpIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyB2b2lkCisgIEhvcml6b250YWxfU3dlZXBfSW5pdCggUkFTX0FSR1MgU2hvcnQqICBtaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvcnQqICBtYXggKQorICB7CisgICAgLyogbm90aGluZywgcmVhbGx5ICovCisgICAgRlRfVU5VU0VEX1JBU1RFUjsKKyAgICBGVF9VTlVTRUQoIG1pbiApOworICAgIEZUX1VOVVNFRCggbWF4ICk7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIEhvcml6b250YWxfU3dlZXBfU3BhbiggUkFTX0FSR1MgU2hvcnQgICAgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICB4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUHJvZmlsZSAgICBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQcm9maWxlICAgIHJpZ2h0ICkKKyAgeworICAgIEZUX1VOVVNFRCggbGVmdCApOworICAgIEZUX1VOVVNFRCggcmlnaHQgKTsKKworCisgICAgaWYgKCB4MiAtIHgxIDwgcmFzLnByZWNpc2lvbiApCisgICAgeworICAgICAgTG9uZyAgZTEsIGUyOworCisKKyAgICAgIGUxID0gQ0VJTElORyggeDEgKTsKKyAgICAgIGUyID0gRkxPT1IgICggeDIgKTsKKworICAgICAgaWYgKCBlMSA9PSBlMiApCisgICAgICB7CisgICAgICAgIEJ5dGUgICBmMTsKKyAgICAgICAgUEJ5dGUgIGJpdHM7CisKKworICAgICAgICBiaXRzID0gcmFzLmJUYXJnZXQgKyAoIHkgPj4gMyApOworICAgICAgICBmMSAgID0gKEJ5dGUpKCAweDgwID4+ICggeSAmIDcgKSApOworCisgICAgICAgIGUxID0gVFJVTkMoIGUxICk7CisKKyAgICAgICAgaWYgKCBlMSA+PSAwICYmIGUxIDwgcmFzLnRhcmdldC5yb3dzICkKKyAgICAgICAgeworICAgICAgICAgIFBCeXRlICBwOworCisKKyAgICAgICAgICBwID0gYml0cyAtIGUxICogcmFzLnRhcmdldC5waXRjaDsKKyAgICAgICAgICBpZiAoIHJhcy50YXJnZXQucGl0Y2ggPiAwICkKKyAgICAgICAgICAgIHAgKz0gKCByYXMudGFyZ2V0LnJvd3MgLSAxICkgKiByYXMudGFyZ2V0LnBpdGNoOworCisgICAgICAgICAgcFswXSB8PSBmMTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgSG9yaXpvbnRhbF9Td2VlcF9Ecm9wKCBSQVNfQVJHUyBTaG9ydCAgICAgICB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIHgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQcm9maWxlICAgIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFByb2ZpbGUgICAgcmlnaHQgKQorICB7CisgICAgTG9uZyAgIGUxLCBlMiwgcHhsOworICAgIFBCeXRlICBiaXRzOworICAgIEJ5dGUgICBmMTsKKworCisgICAgLyogRHVyaW5nIHRoZSBob3Jpem9udGFsIHN3ZWVwLCB3ZSBvbmx5IHRha2UgY2FyZSBvZiBkcm9wLW91dHMgKi8KKworICAgIC8qIGUxICAgICArICAgICAgIDwtLSBwaXhlbCBjZW50ZXIgKi8KKyAgICAvKiAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogeDEgIC0tLSstLT4gICAgPC0tIGNvbnRvdXIgICAgICAqLworICAgIC8qICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogeDIgIDwtLSstLS0gICAgPC0tIGNvbnRvdXIgICAgICAqLworICAgIC8qICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogZTIgICAgICsgICAgICAgPC0tIHBpeGVsIGNlbnRlciAqLworCisgICAgZTEgID0gQ0VJTElORyggeDEgKTsKKyAgICBlMiAgPSBGTE9PUiAgKCB4MiApOworICAgIHB4bCA9IGUxOworCisgICAgaWYgKCBlMSA+IGUyICkKKyAgICB7CisgICAgICBJbnQgIGRyb3BPdXRDb250cm9sID0gbGVmdC0+ZmxhZ3MgJiA3OworCisKKyAgICAgIGlmICggZTEgPT0gZTIgKyByYXMucHJlY2lzaW9uICkKKyAgICAgIHsKKyAgICAgICAgc3dpdGNoICggZHJvcE91dENvbnRyb2wgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMDogLyogc2ltcGxlIGRyb3Atb3V0cyBpbmNsdWRpbmcgc3R1YnMgKi8KKyAgICAgICAgICBweGwgPSBlMjsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDQ6IC8qIHNtYXJ0IGRyb3Atb3V0cyBpbmNsdWRpbmcgc3R1YnMgKi8KKyAgICAgICAgICBweGwgPSBGTE9PUiggKCB4MSArIHgyIC0gMSApIC8gMiArIHJhcy5wcmVjaXNpb25faGFsZiApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMTogLyogc2ltcGxlIGRyb3Atb3V0cyBleGNsdWRpbmcgc3R1YnMgKi8KKyAgICAgICAgY2FzZSA1OiAvKiBzbWFydCBkcm9wLW91dHMgZXhjbHVkaW5nIHN0dWJzICAqLworICAgICAgICAgIC8qIHNlZSBWZXJ0aWNhbF9Td2VlcF9Ecm9wIGZvciBkZXRhaWxzICovCisKKyAgICAgICAgICAvKiByaWdodG1vc3Qgc3R1YiB0ZXN0ICovCisgICAgICAgICAgaWYgKCBsZWZ0LT5uZXh0ID09IHJpZ2h0ICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICBsZWZ0LT5oZWlnaHQgPD0gMCAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAhKCBsZWZ0LT5mbGFncyAmIE92ZXJzaG9vdF9Ub3AgICAmJgorICAgICAgICAgICAgICAgICAgeDIgLSB4MSA+PSByYXMucHJlY2lzaW9uX2hhbGYgKSApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAvKiBsZWZ0bW9zdCBzdHViIHRlc3QgKi8KKyAgICAgICAgICBpZiAoIHJpZ2h0LT5uZXh0ID09IGxlZnQgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICBsZWZ0LT5zdGFydCA9PSB5ICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgISggbGVmdC0+ZmxhZ3MgJiBPdmVyc2hvb3RfQm90dG9tICYmCisgICAgICAgICAgICAgICAgICB4MiAtIHgxID49IHJhcy5wcmVjaXNpb25faGFsZiAgKSApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICBpZiAoIGRyb3BPdXRDb250cm9sID09IDEgKQorICAgICAgICAgICAgcHhsID0gZTI7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgcHhsID0gRkxPT1IoICggeDEgKyB4MiAtIDEgKSAvIDIgKyByYXMucHJlY2lzaW9uX2hhbGYgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OiAvKiBtb2RlcyAyLCAzLCA2LCA3ICovCisgICAgICAgICAgcmV0dXJuOyAgLyogbm8gZHJvcC1vdXQgY29udHJvbCAqLworICAgICAgICB9CisKKyAgICAgICAgLyogdW5kb2N1bWVudGVkIGJ1dCBjb25maXJtZWQ6IElmIHRoZSBkcm9wLW91dCB3b3VsZCByZXN1bHQgaW4gYSAgKi8KKyAgICAgICAgLyogcGl4ZWwgb3V0c2lkZSBvZiB0aGUgYm91bmRpbmcgYm94LCB1c2UgdGhlIHBpeGVsIGluc2lkZSBvZiB0aGUgKi8KKyAgICAgICAgLyogYm91bmRpbmcgYm94IGluc3RlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBweGwgPCAwICkKKyAgICAgICAgICBweGwgPSBlMTsKKyAgICAgICAgZWxzZSBpZiAoIFRSVU5DKCBweGwgKSA+PSByYXMudGFyZ2V0LnJvd3MgKQorICAgICAgICAgIHB4bCA9IGUyOworCisgICAgICAgIC8qIGNoZWNrIHRoYXQgdGhlIG90aGVyIHBpeGVsIGlzbid0IHNldCAqLworICAgICAgICBlMSA9IHB4bCA9PSBlMSA/IGUyIDogZTE7CisKKyAgICAgICAgZTEgPSBUUlVOQyggZTEgKTsKKworICAgICAgICBiaXRzID0gcmFzLmJUYXJnZXQgKyAoIHkgPj4gMyApOworICAgICAgICBmMSAgID0gKEJ5dGUpKCAweDgwID4+ICggeSAmIDcgKSApOworCisgICAgICAgIGJpdHMgLT0gZTEgKiByYXMudGFyZ2V0LnBpdGNoOworICAgICAgICBpZiAoIHJhcy50YXJnZXQucGl0Y2ggPiAwICkKKyAgICAgICAgICBiaXRzICs9ICggcmFzLnRhcmdldC5yb3dzIC0gMSApICogcmFzLnRhcmdldC5waXRjaDsKKworICAgICAgICBpZiAoIGUxID49IDAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgZTEgPCByYXMudGFyZ2V0LnJvd3MgJiYKKyAgICAgICAgICAgICAqYml0cyAmIGYxICAgICAgICAgICApCisgICAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYml0cyA9IHJhcy5iVGFyZ2V0ICsgKCB5ID4+IDMgKTsKKyAgICBmMSAgID0gKEJ5dGUpKCAweDgwID4+ICggeSAmIDcgKSApOworCisgICAgZTEgPSBUUlVOQyggcHhsICk7CisKKyAgICBpZiAoIGUxID49IDAgJiYgZTEgPCByYXMudGFyZ2V0LnJvd3MgKQorICAgIHsKKyAgICAgIGJpdHMgLT0gZTEgKiByYXMudGFyZ2V0LnBpdGNoOworICAgICAgaWYgKCByYXMudGFyZ2V0LnBpdGNoID4gMCApCisgICAgICAgIGJpdHMgKz0gKCByYXMudGFyZ2V0LnJvd3MgLSAxICkgKiByYXMudGFyZ2V0LnBpdGNoOworCisgICAgICBiaXRzWzBdIHw9IGYxOworICAgIH0KKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgSG9yaXpvbnRhbF9Td2VlcF9TdGVwKCBSQVNfQVJHICkKKyAgeworICAgIC8qIE5vdGhpbmcsIHJlYWxseSAqLworICAgIEZUX1VOVVNFRF9SQVNURVI7CisgIH0KKworCisjaWZkZWYgRlRfUkFTVEVSX09QVElPTl9BTlRJX0FMSUFTSU5HCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBWZXJ0aWNhbCBHcmF5IFN3ZWVwIFByb2NlZHVyZSBTZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFRoZXNlIHR3byByb3V0aW5lcyBhcmUgdXNlZCBkdXJpbmcgdGhlIHZlcnRpY2FsIGdyYXktbGV2ZWxzIHN3ZWVwICAgICovCisgIC8qICBwaGFzZSBieSB0aGUgZ2VuZXJpYyBEcmF3X1N3ZWVwKCkgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIE5PVEVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgLSBUaGUgdGFyZ2V0IHBpeG1hcCdzIHdpZHRoICptdXN0KiBiZSBhIG11bHRpcGxlIG9mIDQuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAtIFlvdSBoYXZlIHRvIHVzZSB0aGUgZnVuY3Rpb24gVmVydGljYWxfU3dlZXBfU3BhbigpIGZvciB0aGUgZ3JheSAgICAqLworICAvKiAgICBzcGFuIGNhbGwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyB2b2lkCisgIFZlcnRpY2FsX0dyYXlfU3dlZXBfSW5pdCggUkFTX0FSR1MgU2hvcnQqICBtaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvcnQqICBtYXggKQorICB7CisgICAgTG9uZyAgcGl0Y2gsIGJ5dGVfbGVuOworCisKKyAgICAqbWluID0gKm1pbiAmIC0yOworICAgICptYXggPSAoICptYXggKyAzICkgJiAtMjsKKworICAgIHJhcy50cmFjZU9mcyAgPSAwOworICAgIHBpdGNoICAgICAgICAgPSByYXMudGFyZ2V0LnBpdGNoOworICAgIGJ5dGVfbGVuICAgICAgPSAtcGl0Y2g7CisgICAgcmFzLnRyYWNlSW5jciA9IChTaG9ydClieXRlX2xlbjsKKyAgICByYXMudHJhY2VHICAgID0gKCAqbWluIC8gMiApICogYnl0ZV9sZW47CisKKyAgICBpZiAoIHBpdGNoID4gMCApCisgICAgeworICAgICAgcmFzLnRyYWNlRyArPSAoIHJhcy50YXJnZXQucm93cyAtIDEgKSAqIHBpdGNoOworICAgICAgYnl0ZV9sZW4gICAgPSAtYnl0ZV9sZW47CisgICAgfQorCisgICAgcmFzLmdyYXlfbWluX3ggPSAgKFNob3J0KWJ5dGVfbGVuOworICAgIHJhcy5ncmF5X21heF94ID0gLShTaG9ydClieXRlX2xlbjsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgVmVydGljYWxfR3JheV9Td2VlcF9TdGVwKCBSQVNfQVJHICkKKyAgeworICAgIHNob3J0KiAgY291bnQgPSAoc2hvcnQqKWNvdW50X3RhYmxlOworICAgIEJ5dGUqICAgZ3JheXM7CisKKworICAgIHJhcy50cmFjZU9mcyArPSByYXMuZ3JheV93aWR0aDsKKworICAgIGlmICggcmFzLnRyYWNlT2ZzID4gcmFzLmdyYXlfd2lkdGggKQorICAgIHsKKyAgICAgIFBCeXRlICBwaXg7CisKKworICAgICAgcGl4ICAgPSByYXMuZ1RhcmdldCArIHJhcy50cmFjZUcgKyByYXMuZ3JheV9taW5feCAqIDQ7CisgICAgICBncmF5cyA9IHJhcy5ncmF5czsKKworICAgICAgaWYgKCByYXMuZ3JheV9tYXhfeCA+PSAwICkKKyAgICAgIHsKKyAgICAgICAgTG9uZyAgbGFzdF9waXhlbCA9IHJhcy50YXJnZXQud2lkdGggLSAxOworICAgICAgICBJbnQgICBsYXN0X2NlbGwgID0gbGFzdF9waXhlbCA+PiAyOworICAgICAgICBJbnQgICBsYXN0X2JpdCAgID0gbGFzdF9waXhlbCAmIDM7CisgICAgICAgIEJvb2wgIG92ZXIgICAgICAgPSAwOworCisgICAgICAgIEludCAgICBjMSwgYzI7CisgICAgICAgIFBCeXRlICBiaXQsIGJpdDI7CisKKworICAgICAgICBpZiAoIHJhcy5ncmF5X21heF94ID49IGxhc3RfY2VsbCAmJiBsYXN0X2JpdCAhPSAzICkKKyAgICAgICAgeworICAgICAgICAgIHJhcy5ncmF5X21heF94ID0gbGFzdF9jZWxsIC0gMTsKKyAgICAgICAgICBvdmVyID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggcmFzLmdyYXlfbWluX3ggPCAwICkKKyAgICAgICAgICByYXMuZ3JheV9taW5feCA9IDA7CisKKyAgICAgICAgYml0ICA9IHJhcy5iVGFyZ2V0ICsgcmFzLmdyYXlfbWluX3g7CisgICAgICAgIGJpdDIgPSBiaXQgKyByYXMuZ3JheV93aWR0aDsKKworICAgICAgICBjMSA9IHJhcy5ncmF5X21heF94IC0gcmFzLmdyYXlfbWluX3g7CisKKyAgICAgICAgd2hpbGUgKCBjMSA+PSAwICkKKyAgICAgICAgeworICAgICAgICAgIGMyID0gY291bnRbKmJpdF0gKyBjb3VudFsqYml0Ml07CisKKyAgICAgICAgICBpZiAoIGMyICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBwaXhbMF0gPSBncmF5c1soYzIgPj4gMTIpICYgMHgwMDBGXTsKKyAgICAgICAgICAgIHBpeFsxXSA9IGdyYXlzWyhjMiA+PiA4ICkgJiAweDAwMEZdOworICAgICAgICAgICAgcGl4WzJdID0gZ3JheXNbKGMyID4+IDQgKSAmIDB4MDAwRl07CisgICAgICAgICAgICBwaXhbM10gPSBncmF5c1sgYzIgICAgICAgICYgMHgwMDBGXTsKKworICAgICAgICAgICAgKmJpdCAgPSAwOworICAgICAgICAgICAgKmJpdDIgPSAwOworICAgICAgICAgIH0KKworICAgICAgICAgIGJpdCsrOworICAgICAgICAgIGJpdDIrKzsKKyAgICAgICAgICBwaXggKz0gNDsKKyAgICAgICAgICBjMS0tOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBvdmVyICkKKyAgICAgICAgeworICAgICAgICAgIGMyID0gY291bnRbKmJpdF0gKyBjb3VudFsqYml0Ml07CisgICAgICAgICAgaWYgKCBjMiApCisgICAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoICggbGFzdF9iaXQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICBwaXhbMl0gPSBncmF5c1soYzIgPj4gNCApICYgMHgwMDBGXTsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgcGl4WzFdID0gZ3JheXNbKGMyID4+IDggKSAmIDB4MDAwRl07CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICBwaXhbMF0gPSBncmF5c1soYzIgPj4gMTIpICYgMHgwMDBGXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKmJpdCAgPSAwOworICAgICAgICAgICAgKmJpdDIgPSAwOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorCisgICAgICByYXMudHJhY2VPZnMgPSAwOworICAgICAgcmFzLnRyYWNlRyAgKz0gcmFzLnRyYWNlSW5jcjsKKworICAgICAgcmFzLmdyYXlfbWluX3ggPSAgMzIwMDA7CisgICAgICByYXMuZ3JheV9tYXhfeCA9IC0zMjAwMDsKKyAgICB9CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIEhvcml6b250YWxfR3JheV9Td2VlcF9TcGFuKCBSQVNfQVJHUyBTaG9ydCAgICAgICB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgeDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQcm9maWxlICAgIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUHJvZmlsZSAgICByaWdodCApCisgIHsKKyAgICAvKiBub3RoaW5nLCByZWFsbHkgKi8KKyAgICBGVF9VTlVTRURfUkFTVEVSOworICAgIEZUX1VOVVNFRCggeSApOworICAgIEZUX1VOVVNFRCggeDEgKTsKKyAgICBGVF9VTlVTRUQoIHgyICk7CisgICAgRlRfVU5VU0VEKCBsZWZ0ICk7CisgICAgRlRfVU5VU0VEKCByaWdodCApOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBIb3Jpem9udGFsX0dyYXlfU3dlZXBfRHJvcCggUkFTX0FSR1MgU2hvcnQgICAgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUHJvZmlsZSAgICBsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFByb2ZpbGUgICAgcmlnaHQgKQorICB7CisgICAgTG9uZyAgIGUxLCBlMjsKKyAgICBQQnl0ZSAgcGl4ZWw7CisKKworICAgIC8qIER1cmluZyB0aGUgaG9yaXpvbnRhbCBzd2VlcCwgd2Ugb25seSB0YWtlIGNhcmUgb2YgZHJvcC1vdXRzICovCisKKyAgICBlMSA9IENFSUxJTkcoIHgxICk7CisgICAgZTIgPSBGTE9PUiAgKCB4MiApOworCisgICAgaWYgKCBlMSA+IGUyICkKKyAgICB7CisgICAgICBJbnQgIGRyb3BPdXRDb250cm9sID0gbGVmdC0+ZmxhZ3MgJiA3OworCisKKyAgICAgIGlmICggZTEgPT0gZTIgKyByYXMucHJlY2lzaW9uICkKKyAgICAgIHsKKyAgICAgICAgc3dpdGNoICggZHJvcE91dENvbnRyb2wgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMDogLyogc2ltcGxlIGRyb3Atb3V0cyBpbmNsdWRpbmcgc3R1YnMgKi8KKyAgICAgICAgICBlMSA9IGUyOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgNDogLyogc21hcnQgZHJvcC1vdXRzIGluY2x1ZGluZyBzdHVicyAqLworICAgICAgICAgIGUxID0gRkxPT1IoICggeDEgKyB4MiAtIDEgKSAvIDIgKyByYXMucHJlY2lzaW9uX2hhbGYgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDE6IC8qIHNpbXBsZSBkcm9wLW91dHMgZXhjbHVkaW5nIHN0dWJzICovCisgICAgICAgIGNhc2UgNTogLyogc21hcnQgZHJvcC1vdXRzIGV4Y2x1ZGluZyBzdHVicyAgKi8KKyAgICAgICAgICAvKiBzZWUgVmVydGljYWxfU3dlZXBfRHJvcCBmb3IgZGV0YWlscyAqLworCisgICAgICAgICAgLyogcmlnaHRtb3N0IHN0dWIgdGVzdCAqLworICAgICAgICAgIGlmICggbGVmdC0+bmV4dCA9PSByaWdodCAmJiBsZWZ0LT5oZWlnaHQgPD0gMCApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAvKiBsZWZ0bW9zdCBzdHViIHRlc3QgKi8KKyAgICAgICAgICBpZiAoIHJpZ2h0LT5uZXh0ID09IGxlZnQgJiYgbGVmdC0+c3RhcnQgPT0geSApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICBpZiAoIGRyb3BPdXRDb250cm9sID09IDEgKQorICAgICAgICAgICAgZTEgPSBlMjsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlMSA9IEZMT09SKCAoIHgxICsgeDIgLSAxICkgLyAyICsgcmFzLnByZWNpc2lvbl9oYWxmICk7CisKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OiAvKiBtb2RlcyAyLCAzLCA2LCA3ICovCisgICAgICAgICAgcmV0dXJuOyAgLyogbm8gZHJvcC1vdXQgY29udHJvbCAqLworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIGUxID49IDAgKQorICAgIHsKKyAgICAgIEJ5dGUgIGNvbG9yOworCisKKyAgICAgIGlmICggeDIgLSB4MSA+PSByYXMucHJlY2lzaW9uX2hhbGYgKQorICAgICAgICBjb2xvciA9IHJhcy5ncmF5c1syXTsKKyAgICAgIGVsc2UKKyAgICAgICAgY29sb3IgPSByYXMuZ3JheXNbMV07CisKKyAgICAgIGUxID0gVFJVTkMoIGUxICkgLyAyOworICAgICAgaWYgKCBlMSA8IHJhcy50YXJnZXQucm93cyApCisgICAgICB7CisgICAgICAgIHBpeGVsID0gcmFzLmdUYXJnZXQgLSBlMSAqIHJhcy50YXJnZXQucGl0Y2ggKyB5IC8gMjsKKyAgICAgICAgaWYgKCByYXMudGFyZ2V0LnBpdGNoID4gMCApCisgICAgICAgICAgcGl4ZWwgKz0gKCByYXMudGFyZ2V0LnJvd3MgLSAxICkgKiByYXMudGFyZ2V0LnBpdGNoOworCisgICAgICAgIGlmICggcGl4ZWxbMF0gPT0gcmFzLmdyYXlzWzBdICkKKyAgICAgICAgICBwaXhlbFswXSA9IGNvbG9yOworICAgICAgfQorICAgIH0KKyAgfQorCisKKyNlbmRpZiAvKiBGVF9SQVNURVJfT1BUSU9OX0FOVElfQUxJQVNJTkcgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIEdlbmVyaWMgU3dlZXAgRHJhd2luZyByb3V0aW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBzdGF0aWMgQm9vbAorICBEcmF3X1N3ZWVwKCBSQVNfQVJHICkKKyAgeworICAgIFNob3J0ICAgICAgICAgeSwgeV9jaGFuZ2UsIHlfaGVpZ2h0OworCisgICAgUFByb2ZpbGUgICAgICBQLCBRLCBQX0xlZnQsIFBfUmlnaHQ7CisKKyAgICBTaG9ydCAgICAgICAgIG1pbl9ZLCBtYXhfWSwgdG9wLCBib3R0b20sIGRyb3BvdXRzOworCisgICAgTG9uZyAgICAgICAgICB4MSwgeDIsIHhzLCBlMSwgZTI7CisKKyAgICBUUHJvZmlsZUxpc3QgIHdhaXRpbmc7CisgICAgVFByb2ZpbGVMaXN0ICBkcmF3X2xlZnQsIGRyYXdfcmlnaHQ7CisKKworICAgIC8qIGluaXRpYWxpemUgZW1wdHkgbGlua2VkIGxpc3RzICovCisKKyAgICBJbml0X0xpbmtlZCggJndhaXRpbmcgKTsKKworICAgIEluaXRfTGlua2VkKCAmZHJhd19sZWZ0ICApOworICAgIEluaXRfTGlua2VkKCAmZHJhd19yaWdodCApOworCisgICAgLyogZmlyc3QsIGNvbXB1dGUgbWluIGFuZCBtYXggWSAqLworCisgICAgUCAgICAgPSByYXMuZlByb2ZpbGU7CisgICAgbWF4X1kgPSAoU2hvcnQpVFJVTkMoIHJhcy5taW5ZICk7CisgICAgbWluX1kgPSAoU2hvcnQpVFJVTkMoIHJhcy5tYXhZICk7CisKKyAgICB3aGlsZSAoIFAgKQorICAgIHsKKyAgICAgIFEgPSBQLT5saW5rOworCisgICAgICBib3R0b20gPSAoU2hvcnQpUC0+c3RhcnQ7CisgICAgICB0b3AgICAgPSAoU2hvcnQpKCBQLT5zdGFydCArIFAtPmhlaWdodCAtIDEgKTsKKworICAgICAgaWYgKCBtaW5fWSA+IGJvdHRvbSApCisgICAgICAgIG1pbl9ZID0gYm90dG9tOworICAgICAgaWYgKCBtYXhfWSA8IHRvcCApCisgICAgICAgIG1heF9ZID0gdG9wOworCisgICAgICBQLT5YID0gMDsKKyAgICAgIEluc05ldyggJndhaXRpbmcsIFAgKTsKKworICAgICAgUCA9IFE7CisgICAgfQorCisgICAgLyogY2hlY2sgdGhlIFktdHVybnMgKi8KKyAgICBpZiAoIHJhcy5udW1UdXJucyA9PSAwICkKKyAgICB7CisgICAgICByYXMuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZCApOworICAgICAgcmV0dXJuIEZBSUxVUkU7CisgICAgfQorCisgICAgLyogbm93IGluaXRpYWxpemUgdGhlIHN3ZWVwICovCisKKyAgICByYXMuUHJvY19Td2VlcF9Jbml0KCBSQVNfVkFSUyAmbWluX1ksICZtYXhfWSApOworCisgICAgLyogdGhlbiBjb21wdXRlIHRoZSBkaXN0YW5jZSBvZiBlYWNoIHByb2ZpbGUgZnJvbSBtaW5fWSAqLworCisgICAgUCA9IHdhaXRpbmc7CisKKyAgICB3aGlsZSAoIFAgKQorICAgIHsKKyAgICAgIFAtPmNvdW50TCA9IChVU2hvcnQpKCBQLT5zdGFydCAtIG1pbl9ZICk7CisgICAgICBQID0gUC0+bGluazsKKyAgICB9CisKKyAgICAvKiBsZXQncyBnbyAqLworCisgICAgeSAgICAgICAgPSBtaW5fWTsKKyAgICB5X2hlaWdodCA9IDA7CisKKyAgICBpZiAoIHJhcy5udW1UdXJucyA+IDAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgcmFzLnNpemVCdWZmWy1yYXMubnVtVHVybnNdID09IG1pbl9ZICkKKyAgICAgIHJhcy5udW1UdXJucy0tOworCisgICAgd2hpbGUgKCByYXMubnVtVHVybnMgPiAwICkKKyAgICB7CisgICAgICAvKiBjaGVjayB3YWl0aW5nIGxpc3QgZm9yIG5ldyBhY3RpdmF0aW9ucyAqLworCisgICAgICBQID0gd2FpdGluZzsKKworICAgICAgd2hpbGUgKCBQICkKKyAgICAgIHsKKyAgICAgICAgUSA9IFAtPmxpbms7CisgICAgICAgIFAtPmNvdW50TCAtPSB5X2hlaWdodDsKKyAgICAgICAgaWYgKCBQLT5jb3VudEwgPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICBEZWxPbGQoICZ3YWl0aW5nLCBQICk7CisKKyAgICAgICAgICBpZiAoIFAtPmZsYWdzICYgRmxvd19VcCApCisgICAgICAgICAgICBJbnNOZXcoICZkcmF3X2xlZnQsICBQICk7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5zTmV3KCAmZHJhd19yaWdodCwgUCApOworICAgICAgICB9CisKKyAgICAgICAgUCA9IFE7CisgICAgICB9CisKKyAgICAgIC8qIHNvcnQgdGhlIGRyYXdpbmcgbGlzdHMgKi8KKworICAgICAgU29ydCggJmRyYXdfbGVmdCApOworICAgICAgU29ydCggJmRyYXdfcmlnaHQgKTsKKworICAgICAgeV9jaGFuZ2UgPSAoU2hvcnQpcmFzLnNpemVCdWZmWy1yYXMubnVtVHVybnMtLV07CisgICAgICB5X2hlaWdodCA9IChTaG9ydCkoIHlfY2hhbmdlIC0geSApOworCisgICAgICB3aGlsZSAoIHkgPCB5X2NoYW5nZSApCisgICAgICB7CisgICAgICAgIC8qIGxldCdzIHRyYWNlICovCisKKyAgICAgICAgZHJvcG91dHMgPSAwOworCisgICAgICAgIFBfTGVmdCAgPSBkcmF3X2xlZnQ7CisgICAgICAgIFBfUmlnaHQgPSBkcmF3X3JpZ2h0OworCisgICAgICAgIHdoaWxlICggUF9MZWZ0ICkKKyAgICAgICAgeworICAgICAgICAgIHgxID0gUF9MZWZ0IC0+WDsKKyAgICAgICAgICB4MiA9IFBfUmlnaHQtPlg7CisKKyAgICAgICAgICBpZiAoIHgxID4geDIgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHhzID0geDE7CisgICAgICAgICAgICB4MSA9IHgyOworICAgICAgICAgICAgeDIgPSB4czsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBlMSA9IEZMT09SKCB4MSApOworICAgICAgICAgIGUyID0gQ0VJTElORyggeDIgKTsKKworICAgICAgICAgIGlmICggeDIgLSB4MSA8PSByYXMucHJlY2lzaW9uICYmCisgICAgICAgICAgICAgICBlMSAhPSB4MSAmJiBlMiAhPSB4MiAgICAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggZTEgPiBlMiB8fCBlMiA9PSBlMSArIHJhcy5wcmVjaXNpb24gKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBJbnQgIGRyb3BPdXRDb250cm9sID0gUF9MZWZ0LT5mbGFncyAmIDc7CisKKworICAgICAgICAgICAgICBpZiAoIGRyb3BPdXRDb250cm9sICE9IDIgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogYSBkcm9wLW91dCB3YXMgZGV0ZWN0ZWQgKi8KKworICAgICAgICAgICAgICAgIFBfTGVmdCAtPlggPSB4MTsKKyAgICAgICAgICAgICAgICBQX1JpZ2h0LT5YID0geDI7CisKKyAgICAgICAgICAgICAgICAvKiBtYXJrIHByb2ZpbGUgZm9yIGRyb3Atb3V0IHByb2Nlc3NpbmcgKi8KKyAgICAgICAgICAgICAgICBQX0xlZnQtPmNvdW50TCA9IDE7CisgICAgICAgICAgICAgICAgZHJvcG91dHMrKzsKKyAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgIGdvdG8gU2tpcF9Ub19OZXh0OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIHJhcy5Qcm9jX1N3ZWVwX1NwYW4oIFJBU19WQVJTIHksIHgxLCB4MiwgUF9MZWZ0LCBQX1JpZ2h0ICk7CisKKyAgICAgICAgU2tpcF9Ub19OZXh0OgorCisgICAgICAgICAgUF9MZWZ0ICA9IFBfTGVmdC0+bGluazsKKyAgICAgICAgICBQX1JpZ2h0ID0gUF9SaWdodC0+bGluazsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGhhbmRsZSBkcm9wLW91dHMgX2FmdGVyXyB0aGUgc3BhbiBkcmF3aW5nIC0tICAgICAgICovCisgICAgICAgIC8qIGRyb3Atb3V0IHByb2Nlc3NpbmcgaGFzIGJlZW4gbW92ZWQgb3V0IG9mIHRoZSBsb29wICovCisgICAgICAgIC8qIGZvciBwZXJmb3JtYW5jZSB0dW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggZHJvcG91dHMgPiAwICkKKyAgICAgICAgICBnb3RvIFNjYW5fRHJvcE91dHM7CisKKyAgICAgIE5leHRfTGluZToKKworICAgICAgICByYXMuUHJvY19Td2VlcF9TdGVwKCBSQVNfVkFSICk7CisKKyAgICAgICAgeSsrOworCisgICAgICAgIGlmICggeSA8IHlfY2hhbmdlICkKKyAgICAgICAgeworICAgICAgICAgIFNvcnQoICZkcmF3X2xlZnQgICk7CisgICAgICAgICAgU29ydCggJmRyYXdfcmlnaHQgKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiBub3cgZmluYWxpemUgdGhlIHByb2ZpbGVzIHRoYXQgbmVlZCBpdCAqLworCisgICAgICBQID0gZHJhd19sZWZ0OworICAgICAgd2hpbGUgKCBQICkKKyAgICAgIHsKKyAgICAgICAgUSA9IFAtPmxpbms7CisgICAgICAgIGlmICggUC0+aGVpZ2h0ID09IDAgKQorICAgICAgICAgIERlbE9sZCggJmRyYXdfbGVmdCwgUCApOworICAgICAgICBQID0gUTsKKyAgICAgIH0KKworICAgICAgUCA9IGRyYXdfcmlnaHQ7CisgICAgICB3aGlsZSAoIFAgKQorICAgICAgeworICAgICAgICBRID0gUC0+bGluazsKKyAgICAgICAgaWYgKCBQLT5oZWlnaHQgPT0gMCApCisgICAgICAgICAgRGVsT2xkKCAmZHJhd19yaWdodCwgUCApOworICAgICAgICBQID0gUTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBmb3IgZ3JheS1zY2FsaW5nLCBmbHVzaCB0aGUgYml0bWFwIHNjYW5saW5lIGNhY2hlICovCisgICAgd2hpbGUgKCB5IDw9IG1heF9ZICkKKyAgICB7CisgICAgICByYXMuUHJvY19Td2VlcF9TdGVwKCBSQVNfVkFSICk7CisgICAgICB5Kys7CisgICAgfQorCisgICAgcmV0dXJuIFNVQ0NFU1M7CisKKyAgU2Nhbl9Ecm9wT3V0czoKKworICAgIFBfTGVmdCAgPSBkcmF3X2xlZnQ7CisgICAgUF9SaWdodCA9IGRyYXdfcmlnaHQ7CisKKyAgICB3aGlsZSAoIFBfTGVmdCApCisgICAgeworICAgICAgaWYgKCBQX0xlZnQtPmNvdW50TCApCisgICAgICB7CisgICAgICAgIFBfTGVmdC0+Y291bnRMID0gMDsKKyNpZiAwCisgICAgICAgIGRyb3BvdXRzLS07ICAvKiAtLSB0aGlzIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZyBvbmx5ICovCisjZW5kaWYKKyAgICAgICAgcmFzLlByb2NfU3dlZXBfRHJvcCggUkFTX1ZBUlMgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUF9MZWZ0LT5YLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQX1JpZ2h0LT5YLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQX0xlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBfUmlnaHQgKTsKKyAgICAgIH0KKworICAgICAgUF9MZWZ0ICA9IFBfTGVmdC0+bGluazsKKyAgICAgIFBfUmlnaHQgPSBQX1JpZ2h0LT5saW5rOworICAgIH0KKworICAgIGdvdG8gTmV4dF9MaW5lOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZW5kZXJfU2luZ2xlX1Bhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQZXJmb3JtIG9uZSBzd2VlcCB3aXRoIHN1Yi1iYW5kaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmbGlwcGVkIDo6IElmIHNldCwgZmxpcCB0aGUgZGlyZWN0aW9uIG9mIHRoZSBvdXRsaW5lLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZW5kZXJlciBlcnJvciBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBpbnQKKyAgUmVuZGVyX1NpbmdsZV9QYXNzKCBSQVNfQVJHUyBCb29sICBmbGlwcGVkICkKKyAgeworICAgIFNob3J0ICBpLCBqLCBrOworCisKKyAgICB3aGlsZSAoIHJhcy5iYW5kX3RvcCA+PSAwICkKKyAgICB7CisgICAgICByYXMubWF4WSA9IChMb25nKXJhcy5iYW5kX3N0YWNrW3Jhcy5iYW5kX3RvcF0ueV9tYXggKiByYXMucHJlY2lzaW9uOworICAgICAgcmFzLm1pblkgPSAoTG9uZylyYXMuYmFuZF9zdGFja1tyYXMuYmFuZF90b3BdLnlfbWluICogcmFzLnByZWNpc2lvbjsKKworICAgICAgcmFzLnRvcCA9IHJhcy5idWZmOworCisgICAgICByYXMuZXJyb3IgPSBSYXN0ZXJfRXJyX05vbmU7CisKKyAgICAgIGlmICggQ29udmVydF9HbHlwaCggUkFTX1ZBUlMgZmxpcHBlZCApICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCByYXMuZXJyb3IgIT0gUmFzdGVyX0Vycl9PdmVyZmxvdyApCisgICAgICAgICAgcmV0dXJuIEZBSUxVUkU7CisKKyAgICAgICAgcmFzLmVycm9yID0gUmFzdGVyX0Vycl9Ob25lOworCisgICAgICAgIC8qIHN1Yi1iYW5kaW5nICovCisKKyNpZmRlZiBERUJVR19SQVNURVIKKyAgICAgICAgQ2xlYXJCYW5kKCBSQVNfVkFSUyBUUlVOQyggcmFzLm1pblkgKSwgVFJVTkMoIHJhcy5tYXhZICkgKTsKKyNlbmRpZgorCisgICAgICAgIGkgPSByYXMuYmFuZF9zdGFja1tyYXMuYmFuZF90b3BdLnlfbWluOworICAgICAgICBqID0gcmFzLmJhbmRfc3RhY2tbcmFzLmJhbmRfdG9wXS55X21heDsKKworICAgICAgICBrID0gKFNob3J0KSggKCBpICsgaiApIC8gMiApOworCisgICAgICAgIGlmICggcmFzLmJhbmRfdG9wID49IDcgfHwgayA8IGkgKQorICAgICAgICB7CisgICAgICAgICAgcmFzLmJhbmRfdG9wID0gMDsKKyAgICAgICAgICByYXMuZXJyb3IgICAgPSBGVF9USFJPVyggSW52YWxpZCApOworCisgICAgICAgICAgcmV0dXJuIHJhcy5lcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHJhcy5iYW5kX3N0YWNrW3Jhcy5iYW5kX3RvcCArIDFdLnlfbWluID0gazsKKyAgICAgICAgcmFzLmJhbmRfc3RhY2tbcmFzLmJhbmRfdG9wICsgMV0ueV9tYXggPSBqOworCisgICAgICAgIHJhcy5iYW5kX3N0YWNrW3Jhcy5iYW5kX3RvcF0ueV9tYXggPSAoU2hvcnQpKCBrIC0gMSApOworCisgICAgICAgIHJhcy5iYW5kX3RvcCsrOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBpZiAoIHJhcy5mUHJvZmlsZSApCisgICAgICAgICAgaWYgKCBEcmF3X1N3ZWVwKCBSQVNfVkFSICkgKQorICAgICAgICAgICAgIHJldHVybiByYXMuZXJyb3I7CisgICAgICAgIHJhcy5iYW5kX3RvcC0tOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBTVUNDRVNTOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZW5kZXJfR2x5cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZW5kZXIgYSBnbHlwaCBpbiBhIGJpdG1hcC4gIFN1Yi1iYW5kaW5nIGlmIG5lZWRlZC4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBSZW5kZXJfR2x5cGgoIFJBU19BUkcgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICBTZXRfSGlnaF9QcmVjaXNpb24oIFJBU19WQVJTIHJhcy5vdXRsaW5lLmZsYWdzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX09VVExJTkVfSElHSF9QUkVDSVNJT04gKTsKKyAgICByYXMuc2NhbGVfc2hpZnQgPSByYXMucHJlY2lzaW9uX3NoaWZ0OworCisgICAgaWYgKCByYXMub3V0bGluZS5mbGFncyAmIEZUX09VVExJTkVfSUdOT1JFX0RST1BPVVRTICkKKyAgICAgIHJhcy5kcm9wT3V0Q29udHJvbCA9IDI7CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICggcmFzLm91dGxpbmUuZmxhZ3MgJiBGVF9PVVRMSU5FX1NNQVJUX0RST1BPVVRTICkKKyAgICAgICAgcmFzLmRyb3BPdXRDb250cm9sID0gNDsKKyAgICAgIGVsc2UKKyAgICAgICAgcmFzLmRyb3BPdXRDb250cm9sID0gMDsKKworICAgICAgaWYgKCAhKCByYXMub3V0bGluZS5mbGFncyAmIEZUX09VVExJTkVfSU5DTFVERV9TVFVCUyApICkKKyAgICAgICAgcmFzLmRyb3BPdXRDb250cm9sICs9IDE7CisgICAgfQorCisgICAgcmFzLnNlY29uZF9wYXNzID0gKEZUX0J5dGUpKCAhKCByYXMub3V0bGluZS5mbGFncyAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PVVRMSU5FX1NJTkdMRV9QQVNTICkgKTsKKworICAgIC8qIFZlcnRpY2FsIFN3ZWVwICovCisgICAgcmFzLlByb2NfU3dlZXBfSW5pdCA9IFZlcnRpY2FsX1N3ZWVwX0luaXQ7CisgICAgcmFzLlByb2NfU3dlZXBfU3BhbiA9IFZlcnRpY2FsX1N3ZWVwX1NwYW47CisgICAgcmFzLlByb2NfU3dlZXBfRHJvcCA9IFZlcnRpY2FsX1N3ZWVwX0Ryb3A7CisgICAgcmFzLlByb2NfU3dlZXBfU3RlcCA9IFZlcnRpY2FsX1N3ZWVwX1N0ZXA7CisKKyAgICByYXMuYmFuZF90b3AgICAgICAgICAgICA9IDA7CisgICAgcmFzLmJhbmRfc3RhY2tbMF0ueV9taW4gPSAwOworICAgIHJhcy5iYW5kX3N0YWNrWzBdLnlfbWF4ID0gKHNob3J0KSggcmFzLnRhcmdldC5yb3dzIC0gMSApOworCisgICAgcmFzLmJXaWR0aCAgPSAodW5zaWduZWQgc2hvcnQpcmFzLnRhcmdldC53aWR0aDsKKyAgICByYXMuYlRhcmdldCA9IChCeXRlKilyYXMudGFyZ2V0LmJ1ZmZlcjsKKworICAgIGlmICggKCBlcnJvciA9IFJlbmRlcl9TaW5nbGVfUGFzcyggUkFTX1ZBUlMgMCApICkgIT0gMCApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAvKiBIb3Jpem9udGFsIFN3ZWVwICovCisgICAgaWYgKCByYXMuc2Vjb25kX3Bhc3MgJiYgcmFzLmRyb3BPdXRDb250cm9sICE9IDIgKQorICAgIHsKKyAgICAgIHJhcy5Qcm9jX1N3ZWVwX0luaXQgPSBIb3Jpem9udGFsX1N3ZWVwX0luaXQ7CisgICAgICByYXMuUHJvY19Td2VlcF9TcGFuID0gSG9yaXpvbnRhbF9Td2VlcF9TcGFuOworICAgICAgcmFzLlByb2NfU3dlZXBfRHJvcCA9IEhvcml6b250YWxfU3dlZXBfRHJvcDsKKyAgICAgIHJhcy5Qcm9jX1N3ZWVwX1N0ZXAgPSBIb3Jpem9udGFsX1N3ZWVwX1N0ZXA7CisKKyAgICAgIHJhcy5iYW5kX3RvcCAgICAgICAgICAgID0gMDsKKyAgICAgIHJhcy5iYW5kX3N0YWNrWzBdLnlfbWluID0gMDsKKyAgICAgIHJhcy5iYW5kX3N0YWNrWzBdLnlfbWF4ID0gKHNob3J0KSggcmFzLnRhcmdldC53aWR0aCAtIDEgKTsKKworICAgICAgaWYgKCAoIGVycm9yID0gUmVuZGVyX1NpbmdsZV9QYXNzKCBSQVNfVkFSUyAxICkgKSAhPSAwICkKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIHJldHVybiBSYXN0ZXJfRXJyX05vbmU7CisgIH0KKworCisjaWZkZWYgRlRfUkFTVEVSX09QVElPTl9BTlRJX0FMSUFTSU5HCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmVuZGVyX0dyYXlfR2x5cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmVuZGVyIGEgZ2x5cGggd2l0aCBncmF5c2NhbGluZy4gIFN1Yi1iYW5kaW5nIGlmIG5lZWRlZC4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgUmVuZGVyX0dyYXlfR2x5cGgoIFJBU19BUkcgKQorICB7CisgICAgTG9uZyAgICAgIHBpeGVsX3dpZHRoOworICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgU2V0X0hpZ2hfUHJlY2lzaW9uKCBSQVNfVkFSUyByYXMub3V0bGluZS5mbGFncyAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9PVVRMSU5FX0hJR0hfUFJFQ0lTSU9OICk7CisgICAgcmFzLnNjYWxlX3NoaWZ0ID0gcmFzLnByZWNpc2lvbl9zaGlmdCArIDE7CisKKyAgICBpZiAoIHJhcy5vdXRsaW5lLmZsYWdzICYgRlRfT1VUTElORV9JR05PUkVfRFJPUE9VVFMgKQorICAgICAgcmFzLmRyb3BPdXRDb250cm9sID0gMjsKKyAgICBlbHNlCisgICAgeworICAgICAgaWYgKCByYXMub3V0bGluZS5mbGFncyAmIEZUX09VVExJTkVfU01BUlRfRFJPUE9VVFMgKQorICAgICAgICByYXMuZHJvcE91dENvbnRyb2wgPSA0OworICAgICAgZWxzZQorICAgICAgICByYXMuZHJvcE91dENvbnRyb2wgPSAwOworCisgICAgICBpZiAoICEoIHJhcy5vdXRsaW5lLmZsYWdzICYgRlRfT1VUTElORV9JTkNMVURFX1NUVUJTICkgKQorICAgICAgICByYXMuZHJvcE91dENvbnRyb2wgKz0gMTsKKyAgICB9CisKKyAgICByYXMuc2Vjb25kX3Bhc3MgPSAhKCByYXMub3V0bGluZS5mbGFncyAmIEZUX09VVExJTkVfU0lOR0xFX1BBU1MgKTsKKworICAgIC8qIFZlcnRpY2FsIFN3ZWVwICovCisKKyAgICByYXMuYmFuZF90b3AgICAgICAgICAgICA9IDA7CisgICAgcmFzLmJhbmRfc3RhY2tbMF0ueV9taW4gPSAwOworICAgIHJhcy5iYW5kX3N0YWNrWzBdLnlfbWF4ID0gMiAqIHJhcy50YXJnZXQucm93cyAtIDE7CisKKyAgICByYXMuYldpZHRoICA9IHJhcy5ncmF5X3dpZHRoOworICAgIHBpeGVsX3dpZHRoID0gMiAqICggKCByYXMudGFyZ2V0LndpZHRoICsgMyApID4+IDIgKTsKKworICAgIGlmICggcmFzLmJXaWR0aCA+IHBpeGVsX3dpZHRoICkKKyAgICAgIHJhcy5iV2lkdGggPSBwaXhlbF93aWR0aDsKKworICAgIHJhcy5iV2lkdGggID0gcmFzLmJXaWR0aCAqIDg7CisgICAgcmFzLmJUYXJnZXQgPSAoQnl0ZSopcmFzLmdyYXlfbGluZXM7CisgICAgcmFzLmdUYXJnZXQgPSAoQnl0ZSopcmFzLnRhcmdldC5idWZmZXI7CisKKyAgICByYXMuUHJvY19Td2VlcF9Jbml0ID0gVmVydGljYWxfR3JheV9Td2VlcF9Jbml0OworICAgIHJhcy5Qcm9jX1N3ZWVwX1NwYW4gPSBWZXJ0aWNhbF9Td2VlcF9TcGFuOworICAgIHJhcy5Qcm9jX1N3ZWVwX0Ryb3AgPSBWZXJ0aWNhbF9Td2VlcF9Ecm9wOworICAgIHJhcy5Qcm9jX1N3ZWVwX1N0ZXAgPSBWZXJ0aWNhbF9HcmF5X1N3ZWVwX1N0ZXA7CisKKyAgICBlcnJvciA9IFJlbmRlcl9TaW5nbGVfUGFzcyggUkFTX1ZBUlMgMCApOworICAgIGlmICggZXJyb3IgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgLyogSG9yaXpvbnRhbCBTd2VlcCAqLworICAgIGlmICggcmFzLnNlY29uZF9wYXNzICYmIHJhcy5kcm9wT3V0Q29udHJvbCAhPSAyICkKKyAgICB7CisgICAgICByYXMuUHJvY19Td2VlcF9Jbml0ID0gSG9yaXpvbnRhbF9Td2VlcF9Jbml0OworICAgICAgcmFzLlByb2NfU3dlZXBfU3BhbiA9IEhvcml6b250YWxfR3JheV9Td2VlcF9TcGFuOworICAgICAgcmFzLlByb2NfU3dlZXBfRHJvcCA9IEhvcml6b250YWxfR3JheV9Td2VlcF9Ecm9wOworICAgICAgcmFzLlByb2NfU3dlZXBfU3RlcCA9IEhvcml6b250YWxfU3dlZXBfU3RlcDsKKworICAgICAgcmFzLmJhbmRfdG9wICAgICAgICAgICAgPSAwOworICAgICAgcmFzLmJhbmRfc3RhY2tbMF0ueV9taW4gPSAwOworICAgICAgcmFzLmJhbmRfc3RhY2tbMF0ueV9tYXggPSByYXMudGFyZ2V0LndpZHRoICogMiAtIDE7CisKKyAgICAgIGVycm9yID0gUmVuZGVyX1NpbmdsZV9QYXNzKCBSQVNfVkFSUyAxICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIHJldHVybiBSYXN0ZXJfRXJyX05vbmU7CisgIH0KKworI2Vsc2UgLyogIUZUX1JBU1RFUl9PUFRJT05fQU5USV9BTElBU0lORyAqLworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBSZW5kZXJfR3JheV9HbHlwaCggUkFTX0FSRyApCisgIHsKKyAgICBGVF9VTlVTRURfUkFTVEVSOworCisgICAgcmV0dXJuIEZUX1RIUk9XKCBVbnN1cHBvcnRlZCApOworICB9CisKKyNlbmRpZiAvKiAhRlRfUkFTVEVSX09QVElPTl9BTlRJX0FMSUFTSU5HICovCisKKworICBzdGF0aWMgdm9pZAorICBmdF9ibGFja19pbml0KCBibGFja19QUmFzdGVyICByYXN0ZXIgKQorICB7CisjaWZkZWYgRlRfUkFTVEVSX09QVElPTl9BTlRJX0FMSUFTSU5HCisgICAgRlRfVUludCAgbjsKKworCisgICAgLyogc2V0IGRlZmF1bHQgNS1sZXZlbHMgZ3JheSBwYWxldHRlICovCisgICAgZm9yICggbiA9IDA7IG4gPCA1OyBuKysgKQorICAgICAgcmFzdGVyLT5ncmF5c1tuXSA9IG4gKiAyNTUgLyA0OworCisgICAgcmFzdGVyLT5ncmF5X3dpZHRoID0gUkFTVEVSX0dSQVlfTElORVMgLyAyOworI2Vsc2UKKyAgICBGVF9VTlVTRUQoIHJhc3RlciApOworI2VuZGlmCisgIH0KKworCisgIC8qKioqIFJBU1RFUiBPQkpFQ1QgQ1JFQVRJT046IEluIHN0YW5kYWxvbmUgbW9kZSwgd2Ugc2ltcGx5IHVzZSAqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgYSBzdGF0aWMgb2JqZWN0LiAgICAgICAgICAgICAgICAgICoqKioqLworCisKKyNpZmRlZiBfU1RBTkRBTE9ORV8KKworCisgIHN0YXRpYyBpbnQKKyAgZnRfYmxhY2tfbmV3KCB2b2lkKiAgICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgRlRfUmFzdGVyICAqYXJhc3RlciApCisgIHsKKyAgICAgc3RhdGljIGJsYWNrX1RSYXN0ZXIgIHRoZV9yYXN0ZXI7CisgICAgIEZUX1VOVVNFRCggbWVtb3J5ICk7CisKKworICAgICAqYXJhc3RlciA9IChGVF9SYXN0ZXIpJnRoZV9yYXN0ZXI7CisgICAgIEZUX01FTV9aRVJPKCAmdGhlX3Jhc3Rlciwgc2l6ZW9mICggdGhlX3Jhc3RlciApICk7CisgICAgIGZ0X2JsYWNrX2luaXQoICZ0aGVfcmFzdGVyICk7CisKKyAgICAgcmV0dXJuIDA7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGZ0X2JsYWNrX2RvbmUoIEZUX1Jhc3RlciAgcmFzdGVyICkKKyAgeworICAgIC8qIG5vdGhpbmcgKi8KKyAgICBGVF9VTlVTRUQoIHJhc3RlciApOworICB9CisKKworI2Vsc2UgLyogIV9TVEFOREFMT05FXyAqLworCisKKyAgc3RhdGljIGludAorICBmdF9ibGFja19uZXcoIEZUX01lbW9yeSAgICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgYmxhY2tfUFJhc3RlciAgKmFyYXN0ZXIgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgZXJyb3I7CisgICAgYmxhY2tfUFJhc3RlciAgcmFzdGVyID0gTlVMTDsKKworCisgICAgKmFyYXN0ZXIgPSAwOworICAgIGlmICggIUZUX05FVyggcmFzdGVyICkgKQorICAgIHsKKyAgICAgIHJhc3Rlci0+bWVtb3J5ID0gbWVtb3J5OworICAgICAgZnRfYmxhY2tfaW5pdCggcmFzdGVyICk7CisKKyAgICAgICphcmFzdGVyID0gcmFzdGVyOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgZnRfYmxhY2tfZG9uZSggYmxhY2tfUFJhc3RlciAgcmFzdGVyICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gKEZUX01lbW9yeSlyYXN0ZXItPm1lbW9yeTsKKworCisgICAgRlRfRlJFRSggcmFzdGVyICk7CisgIH0KKworCisjZW5kaWYgLyogIV9TVEFOREFMT05FXyAqLworCisKKyAgc3RhdGljIHZvaWQKKyAgZnRfYmxhY2tfcmVzZXQoIGJsYWNrX1BSYXN0ZXIgIHJhc3RlciwKKyAgICAgICAgICAgICAgICAgIGNoYXIqICAgICAgICAgIHBvb2xfYmFzZSwKKyAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgICAgIHBvb2xfc2l6ZSApCisgIHsKKyAgICBpZiAoIHJhc3RlciApCisgICAgeworICAgICAgaWYgKCBwb29sX2Jhc2UgJiYgcG9vbF9zaXplID49IChsb25nKXNpemVvZiAoIGJsYWNrX1RXb3JrZXIgKSArIDIwNDggKQorICAgICAgeworICAgICAgICBibGFja19QV29ya2VyICB3b3JrZXIgPSAoYmxhY2tfUFdvcmtlcilwb29sX2Jhc2U7CisKKworICAgICAgICByYXN0ZXItPmJ1ZmZlciAgICAgID0gcG9vbF9iYXNlICsgKCAoIHNpemVvZiAoICp3b3JrZXIgKSArIDcgKSAmIH43ICk7CisgICAgICAgIHJhc3Rlci0+YnVmZmVyX3NpemUgPSAobG9uZykoIHBvb2xfYmFzZSArIHBvb2xfc2l6ZSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXJhc3Rlci0+YnVmZmVyICk7CisgICAgICAgIHJhc3Rlci0+d29ya2VyICAgICAgPSB3b3JrZXI7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHJhc3Rlci0+YnVmZmVyICAgICAgPSBOVUxMOworICAgICAgICByYXN0ZXItPmJ1ZmZlcl9zaXplID0gMDsKKyAgICAgICAgcmFzdGVyLT53b3JrZXIgICAgICA9IE5VTEw7CisgICAgICB9CisgICAgfQorICB9CisKKworICBzdGF0aWMgdm9pZAorICBmdF9ibGFja19zZXRfbW9kZSggYmxhY2tfUFJhc3RlciAgcmFzdGVyLAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAgIHBhbGV0dGUgKQorICB7CisjaWZkZWYgRlRfUkFTVEVSX09QVElPTl9BTlRJX0FMSUFTSU5HCisKKyAgICBpZiAoIG1vZGUgPT0gRlRfTUFLRV9UQUcoICdwJywgJ2EnLCAnbCcsICc1JyApICkKKyAgICB7CisgICAgICAvKiBzZXQgNS1sZXZlbHMgZ3JheSBwYWxldHRlICovCisgICAgICByYXN0ZXItPmdyYXlzWzBdID0gcGFsZXR0ZVswXTsKKyAgICAgIHJhc3Rlci0+Z3JheXNbMV0gPSBwYWxldHRlWzFdOworICAgICAgcmFzdGVyLT5ncmF5c1syXSA9IHBhbGV0dGVbMl07CisgICAgICByYXN0ZXItPmdyYXlzWzNdID0gcGFsZXR0ZVszXTsKKyAgICAgIHJhc3Rlci0+Z3JheXNbNF0gPSBwYWxldHRlWzRdOworICAgIH0KKworI2Vsc2UKKworICAgIEZUX1VOVVNFRCggcmFzdGVyICk7CisgICAgRlRfVU5VU0VEKCBtb2RlICk7CisgICAgRlRfVU5VU0VEKCBwYWxldHRlICk7CisKKyNlbmRpZgorICB9CisKKworICBzdGF0aWMgaW50CisgIGZ0X2JsYWNrX3JlbmRlciggYmxhY2tfUFJhc3RlciAgICAgICAgICAgIHJhc3RlciwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9SYXN0ZXJfUGFyYW1zKiAgcGFyYW1zICkKKyAgeworICAgIGNvbnN0IEZUX091dGxpbmUqICBvdXRsaW5lICAgID0gKGNvbnN0IEZUX091dGxpbmUqKXBhcmFtcy0+c291cmNlOworICAgIGNvbnN0IEZUX0JpdG1hcCogICB0YXJnZXRfbWFwID0gcGFyYW1zLT50YXJnZXQ7CisgICAgYmxhY2tfUFdvcmtlciAgICAgIHdvcmtlcjsKKworCisgICAgaWYgKCAhcmFzdGVyIHx8ICFyYXN0ZXItPmJ1ZmZlciB8fCAhcmFzdGVyLT5idWZmZXJfc2l6ZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIE5vdF9JbmkgKTsKKworICAgIGlmICggIW91dGxpbmUgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkICk7CisKKyAgICAvKiByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIG91dGxpbmUgaXMgZW1wdHkgKi8KKyAgICBpZiAoIG91dGxpbmUtPm5fcG9pbnRzID09IDAgfHwgb3V0bGluZS0+bl9jb250b3VycyA8PSAwICkKKyAgICAgIHJldHVybiBSYXN0ZXJfRXJyX05vbmU7CisKKyAgICBpZiAoICFvdXRsaW5lLT5jb250b3VycyB8fCAhb3V0bGluZS0+cG9pbnRzICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZCApOworCisgICAgaWYgKCBvdXRsaW5lLT5uX3BvaW50cyAhPQorICAgICAgICAgICBvdXRsaW5lLT5jb250b3Vyc1tvdXRsaW5lLT5uX2NvbnRvdXJzIC0gMV0gKyAxICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZCApOworCisgICAgd29ya2VyID0gcmFzdGVyLT53b3JrZXI7CisKKyAgICAvKiB0aGlzIHZlcnNpb24gb2YgdGhlIHJhc3RlciBkb2VzIG5vdCBzdXBwb3J0IGRpcmVjdCByZW5kZXJpbmcsIHNvcnJ5ICovCisgICAgaWYgKCBwYXJhbXMtPmZsYWdzICYgRlRfUkFTVEVSX0ZMQUdfRElSRUNUICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggVW5zdXBwb3J0ZWQgKTsKKworICAgIGlmICggIXRhcmdldF9tYXAgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkICk7CisKKyAgICAvKiBub3RoaW5nIHRvIGRvICovCisgICAgaWYgKCAhdGFyZ2V0X21hcC0+d2lkdGggfHwgIXRhcmdldF9tYXAtPnJvd3MgKQorICAgICAgcmV0dXJuIFJhc3Rlcl9FcnJfTm9uZTsKKworICAgIGlmICggIXRhcmdldF9tYXAtPmJ1ZmZlciApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWQgKTsKKworICAgIHJhcy5vdXRsaW5lID0gKm91dGxpbmU7CisgICAgcmFzLnRhcmdldCAgPSAqdGFyZ2V0X21hcDsKKworICAgIHdvcmtlci0+YnVmZiAgICAgICA9IChQTG9uZykgcmFzdGVyLT5idWZmZXI7CisgICAgd29ya2VyLT5zaXplQnVmZiAgID0gd29ya2VyLT5idWZmICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhc3Rlci0+YnVmZmVyX3NpemUgLyBzaXplb2YgKCBMb25nICk7CisjaWZkZWYgRlRfUkFTVEVSX09QVElPTl9BTlRJX0FMSUFTSU5HCisgICAgd29ya2VyLT5ncmF5cyAgICAgID0gcmFzdGVyLT5ncmF5czsKKyAgICB3b3JrZXItPmdyYXlfd2lkdGggPSByYXN0ZXItPmdyYXlfd2lkdGg7CisKKyAgICBGVF9NRU1fWkVSTyggd29ya2VyLT5ncmF5X2xpbmVzLCB3b3JrZXItPmdyYXlfd2lkdGggKiAyICk7CisjZW5kaWYKKworICAgIHJldHVybiAoIHBhcmFtcy0+ZmxhZ3MgJiBGVF9SQVNURVJfRkxBR19BQSApCisgICAgICAgICAgID8gUmVuZGVyX0dyYXlfR2x5cGgoIFJBU19WQVIgKQorICAgICAgICAgICA6IFJlbmRlcl9HbHlwaCggUkFTX1ZBUiApOworICB9CisKKworICBGVF9ERUZJTkVfUkFTVEVSX0ZVTkNTKCBmdF9zdGFuZGFyZF9yYXN0ZXIsCisgICAgRlRfR0xZUEhfRk9STUFUX09VVExJTkUsCisgICAgKEZUX1Jhc3Rlcl9OZXdfRnVuYykgICAgIGZ0X2JsYWNrX25ldywKKyAgICAoRlRfUmFzdGVyX1Jlc2V0X0Z1bmMpICAgZnRfYmxhY2tfcmVzZXQsCisgICAgKEZUX1Jhc3Rlcl9TZXRfTW9kZV9GdW5jKWZ0X2JsYWNrX3NldF9tb2RlLAorICAgIChGVF9SYXN0ZXJfUmVuZGVyX0Z1bmMpICBmdF9ibGFja19yZW5kZXIsCisgICAgKEZUX1Jhc3Rlcl9Eb25lX0Z1bmMpICAgIGZ0X2JsYWNrX2RvbmUKKyAgKQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvZnRyYXN0ZXIuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL2Z0cmFzdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc3MjYwZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL2Z0cmFzdGVyLmgKQEAgLTAsMCArMSw0NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRyYXN0ZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBnbHlwaCByYXN0ZXJpemVyIChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCAgICAgICAgKi8KKy8qICBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRSQVNURVJfSF9fCisjZGVmaW5lIF9fRlRSQVNURVJfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIGlmIHlvdSBhcmUgdXNpbmcgZnRyYXN0ZXIuYyBhcyBhICAgICAgICAgKi8KKyAgLyogc3RhbmRhbG9uZSBtb2R1bGUsIGZ1bGx5IGluZGVwZW5kZW50IG9mIEZyZWVUeXBlLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogI2RlZmluZSBfU1RBTkRBTE9ORV8gKi8KKworICBGVF9FWFBPUlRfVkFSKCBjb25zdCBGVF9SYXN0ZXJfRnVuY3MgKSAgZnRfc3RhbmRhcmRfcmFzdGVyOworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRSQVNURVJfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9mdHJlbmQxLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9mdHJlbmQxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY0ZmZhYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL2Z0cmVuZDEuYwpAQCAtMCwwICsxLDMwNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRyZW5kMS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBnbHlwaCByYXN0ZXJpemVyIGludGVyZmFjZSAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDMsIDIwMDUsIDIwMDYsIDIwMTEsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmgiCisjaW5jbHVkZSAiZnRyZW5kMS5oIgorI2luY2x1ZGUgImZ0cmFzdGVyLmgiCisjaW5jbHVkZSAicmFzdHBpYy5oIgorCisjaW5jbHVkZSAicmFzdGVycnMuaCIKKworCisgIC8qIGluaXRpYWxpemUgcmVuZGVyZXIgLS0gaW5pdCBpdHMgcmFzdGVyICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9yYXN0ZXIxX2luaXQoIEZUX1JlbmRlcmVyICByZW5kZXIgKQorICB7CisgICAgRlRfTGlicmFyeSAgbGlicmFyeSA9IEZUX01PRFVMRV9MSUJSQVJZKCByZW5kZXIgKTsKKworCisgICAgcmVuZGVyLT5jbGF6ei0+cmFzdGVyX2NsYXNzLT5yYXN0ZXJfcmVzZXQoIHJlbmRlci0+cmFzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5LT5yYXN0ZXJfcG9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeS0+cmFzdGVyX3Bvb2xfc2l6ZSApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgLyogc2V0IHJlbmRlci1zcGVjaWZpYyBtb2RlICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9yYXN0ZXIxX3NldF9tb2RlKCBGVF9SZW5kZXJlciAgcmVuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgbW9kZV90YWcsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvaW50ZXIgICBkYXRhICkKKyAgeworICAgIC8qIHdlIHNpbXBseSBwYXNzIGl0IHRvIHRoZSByYXN0ZXIgKi8KKyAgICByZXR1cm4gcmVuZGVyLT5jbGF6ei0+cmFzdGVyX2NsYXNzLT5yYXN0ZXJfc2V0X21vZGUoIHJlbmRlci0+cmFzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZV90YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICk7CisgIH0KKworCisgIC8qIHRyYW5zZm9ybSBhIGdpdmVuIGdseXBoIGltYWdlICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9yYXN0ZXIxX3RyYW5zZm9ybSggRlRfUmVuZGVyZXIgICAgICAgcmVuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICAgICAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX01hdHJpeCogIG1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogIGRlbHRhICkKKyAgeworICAgIEZUX0Vycm9yIGVycm9yID0gRlRfRXJyX09rOworCisKKyAgICBpZiAoIHNsb3QtPmZvcm1hdCAhPSByZW5kZXItPmdseXBoX2Zvcm1hdCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggbWF0cml4ICkKKyAgICAgIEZUX091dGxpbmVfVHJhbnNmb3JtKCAmc2xvdC0+b3V0bGluZSwgbWF0cml4ICk7CisKKyAgICBpZiAoIGRlbHRhICkKKyAgICAgIEZUX091dGxpbmVfVHJhbnNsYXRlKCAmc2xvdC0+b3V0bGluZSwgZGVsdGEtPngsIGRlbHRhLT55ICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIHJldHVybiB0aGUgZ2x5cGgncyBjb250cm9sIGJveCAqLworICBzdGF0aWMgdm9pZAorICBmdF9yYXN0ZXIxX2dldF9jYm94KCBGVF9SZW5kZXJlciAgIHJlbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9CQm94KiAgICAgIGNib3ggKQorICB7CisgICAgRlRfTUVNX1pFUk8oIGNib3gsIHNpemVvZiAoICpjYm94ICkgKTsKKworICAgIGlmICggc2xvdC0+Zm9ybWF0ID09IHJlbmRlci0+Z2x5cGhfZm9ybWF0ICkKKyAgICAgIEZUX091dGxpbmVfR2V0X0NCb3goICZzbG90LT5vdXRsaW5lLCBjYm94ICk7CisgIH0KKworCisgIC8qIGNvbnZlcnQgYSBzbG90J3MgZ2x5cGggaW1hZ2UgaW50byBhIGJpdG1hcCAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgZnRfcmFzdGVyMV9yZW5kZXIoIEZUX1JlbmRlcmVyICAgICAgIHJlbmRlciwKKyAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgICAgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgICBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgb3JpZ2luICkKKyAgeworICAgIEZUX0Vycm9yICAgICBlcnJvcjsKKyAgICBGVF9PdXRsaW5lKiAgb3V0bGluZTsKKyAgICBGVF9CQm94ICAgICAgY2JveDsKKyAgICBGVF9VSW50ICAgICAgd2lkdGgsIGhlaWdodCwgcGl0Y2g7CisgICAgRlRfQml0bWFwKiAgIGJpdG1hcDsKKyAgICBGVF9NZW1vcnkgICAgbWVtb3J5OworCisgICAgRlRfUmFzdGVyX1BhcmFtcyAgcGFyYW1zOworCisKKyAgICAvKiBjaGVjayBnbHlwaCBpbWFnZSBmb3JtYXQgKi8KKyAgICBpZiAoIHNsb3QtPmZvcm1hdCAhPSByZW5kZXItPmdseXBoX2Zvcm1hdCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIGNoZWNrIHJlbmRlcmluZyBtb2RlICovCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisgICAgaWYgKCBtb2RlICE9IEZUX1JFTkRFUl9NT0RFX01PTk8gKQorICAgIHsKKyAgICAgIC8qIHJhc3RlcjEgaXMgb25seSBjYXBhYmxlIG9mIHByb2R1Y2luZyBtb25vY2hyb21lIGJpdG1hcHMgKi8KKyAgICAgIGlmICggcmVuZGVyLT5jbGF6eiA9PSAmZnRfcmFzdGVyMV9yZW5kZXJlcl9jbGFzcyApCisgICAgICAgIHJldHVybiBGVF9USFJPVyggQ2Fubm90X1JlbmRlcl9HbHlwaCApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogcmFzdGVyNSBpcyBvbmx5IGNhcGFibGUgb2YgcHJvZHVjaW5nIDUtZ3JheS1sZXZlbHMgYml0bWFwcyAqLworICAgICAgaWYgKCByZW5kZXItPmNsYXp6ID09ICZmdF9yYXN0ZXI1X3JlbmRlcmVyX2NsYXNzICkKKyAgICAgICAgcmV0dXJuIEZUX1RIUk9XKCBDYW5ub3RfUmVuZGVyX0dseXBoICk7CisgICAgfQorI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKyAgICAvKiBXaGVuIFBJQyBpcyBlbmFibGVkLCB3ZSBjYW5ub3QgZ2V0IHRvIHRoZSBjbGFzcyBvYmplY3QgICAgICAqLworICAgIC8qIHNvIGluc3RlYWQgd2UgY2hlY2sgdGhlIGZpbmFsIGNoYXJhY3RlciBpbiB0aGUgY2xhc3MgbmFtZSAgICovCisgICAgLyogKCJyYXN0ZXI1IiBvciAicmFzdGVyMSIpLiBZZXMgdGhpcyBpcyBhIGhhY2suICAgICAgICAgICAgICAgKi8KKyAgICAvKiBUaGUgImNvcnJlY3QiIHRoaW5nIHRvIGRvIGlzIGhhdmUgZGlmZmVyZW50IHJlbmRlciBmdW5jdGlvbiAqLworICAgIC8qIGZvciBlYWNoIG9mIHRoZSBjbGFzc2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBtb2RlICE9IEZUX1JFTkRFUl9NT0RFX01PTk8gKQorICAgIHsKKyAgICAgIC8qIHJhc3RlcjEgaXMgb25seSBjYXBhYmxlIG9mIHByb2R1Y2luZyBtb25vY2hyb21lIGJpdG1hcHMgKi8KKyAgICAgIGlmICggcmVuZGVyLT5jbGF6ei0+cm9vdC5tb2R1bGVfbmFtZVs2XSA9PSAnMScgKQorICAgICAgICByZXR1cm4gRlRfVEhST1coIENhbm5vdF9SZW5kZXJfR2x5cGggKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIHJhc3RlcjUgaXMgb25seSBjYXBhYmxlIG9mIHByb2R1Y2luZyA1LWdyYXktbGV2ZWxzIGJpdG1hcHMgKi8KKyAgICAgIGlmICggcmVuZGVyLT5jbGF6ei0+cm9vdC5tb2R1bGVfbmFtZVs2XSA9PSAnNScgKQorICAgICAgICByZXR1cm4gRlRfVEhST1coIENhbm5vdF9SZW5kZXJfR2x5cGggKTsKKyAgICB9CisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICAgIG91dGxpbmUgPSAmc2xvdC0+b3V0bGluZTsKKworICAgIC8qIHRyYW5zbGF0ZSB0aGUgb3V0bGluZSB0byB0aGUgbmV3IG9yaWdpbiBpZiBuZWVkZWQgKi8KKyAgICBpZiAoIG9yaWdpbiApCisgICAgICBGVF9PdXRsaW5lX1RyYW5zbGF0ZSggb3V0bGluZSwgb3JpZ2luLT54LCBvcmlnaW4tPnkgKTsKKworICAgIC8qIGNvbXB1dGUgdGhlIGNvbnRyb2wgYm94LCBhbmQgZ3JpZCBmaXQgaXQgKi8KKyAgICBGVF9PdXRsaW5lX0dldF9DQm94KCBvdXRsaW5lLCAmY2JveCApOworCisgICAgLyogdW5kb2N1bWVudGVkIGJ1dCBjb25maXJtZWQ6IGJib3ggdmFsdWVzIGdldCByb3VuZGVkICovCisjaWYgMQorICAgIGNib3gueE1pbiA9IEZUX1BJWF9ST1VORCggY2JveC54TWluICk7CisgICAgY2JveC55TWluID0gRlRfUElYX1JPVU5EKCBjYm94LnlNaW4gKTsKKyAgICBjYm94LnhNYXggPSBGVF9QSVhfUk9VTkQoIGNib3gueE1heCApOworICAgIGNib3gueU1heCA9IEZUX1BJWF9ST1VORCggY2JveC55TWF4ICk7CisjZWxzZQorICAgIGNib3gueE1pbiA9IEZUX1BJWF9GTE9PUiggY2JveC54TWluICk7CisgICAgY2JveC55TWluID0gRlRfUElYX0ZMT09SKCBjYm94LnlNaW4gKTsKKyAgICBjYm94LnhNYXggPSBGVF9QSVhfQ0VJTCggY2JveC54TWF4ICk7CisgICAgY2JveC55TWF4ID0gRlRfUElYX0NFSUwoIGNib3gueU1heCApOworI2VuZGlmCisKKyAgICB3aWR0aCAgPSAoRlRfVUludCkoICggY2JveC54TWF4IC0gY2JveC54TWluICkgPj4gNiApOworICAgIGhlaWdodCA9IChGVF9VSW50KSggKCBjYm94LnlNYXggLSBjYm94LnlNaW4gKSA+PiA2ICk7CisKKyAgICBpZiAoIHdpZHRoID4gRlRfVVNIT1JUX01BWCB8fCBoZWlnaHQgPiBGVF9VU0hPUlRfTUFYICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgYml0bWFwID0gJnNsb3QtPmJpdG1hcDsKKyAgICBtZW1vcnkgPSByZW5kZXItPnJvb3QubWVtb3J5OworCisgICAgLyogcmVsZWFzZSBvbGQgYml0bWFwIGJ1ZmZlciAqLworICAgIGlmICggc2xvdC0+aW50ZXJuYWwtPmZsYWdzICYgRlRfR0xZUEhfT1dOX0JJVE1BUCApCisgICAgeworICAgICAgRlRfRlJFRSggYml0bWFwLT5idWZmZXIgKTsKKyAgICAgIHNsb3QtPmludGVybmFsLT5mbGFncyAmPSB+RlRfR0xZUEhfT1dOX0JJVE1BUDsKKyAgICB9CisKKyAgICAvKiBhbGxvY2F0ZSBuZXcgb25lLCBkZXBlbmRzIG9uIHBpeGVsIGZvcm1hdCAqLworICAgIGlmICggISggbW9kZSAmIEZUX1JFTkRFUl9NT0RFX01PTk8gKSApCisgICAgeworICAgICAgLyogd2UgcGFkIHRvIDMyIGJpdHMsIG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggRlQgMS54ICovCisgICAgICBwaXRjaCAgICAgICAgICAgICAgPSBGVF9QQURfQ0VJTCggd2lkdGgsIDQgKTsKKyAgICAgIGJpdG1hcC0+cGl4ZWxfbW9kZSA9IEZUX1BJWEVMX01PREVfR1JBWTsKKyAgICAgIGJpdG1hcC0+bnVtX2dyYXlzICA9IDI1NjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHBpdGNoICAgICAgICAgICAgICA9ICggKCB3aWR0aCArIDE1ICkgPj4gNCApIDw8IDE7CisgICAgICBiaXRtYXAtPnBpeGVsX21vZGUgPSBGVF9QSVhFTF9NT0RFX01PTk87CisgICAgfQorCisgICAgYml0bWFwLT53aWR0aCA9IHdpZHRoOworICAgIGJpdG1hcC0+cm93cyAgPSBoZWlnaHQ7CisgICAgYml0bWFwLT5waXRjaCA9IHBpdGNoOworCisgICAgaWYgKCBGVF9BTExPQ19NVUxUKCBiaXRtYXAtPmJ1ZmZlciwgcGl0Y2gsIGhlaWdodCApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIHNsb3QtPmludGVybmFsLT5mbGFncyB8PSBGVF9HTFlQSF9PV05fQklUTUFQOworCisgICAgLyogdHJhbnNsYXRlIG91dGxpbmUgdG8gcmVuZGVyIGl0IGludG8gdGhlIGJpdG1hcCAqLworICAgIEZUX091dGxpbmVfVHJhbnNsYXRlKCBvdXRsaW5lLCAtY2JveC54TWluLCAtY2JveC55TWluICk7CisKKyAgICAvKiBzZXQgdXAgcGFyYW1ldGVycyAqLworICAgIHBhcmFtcy50YXJnZXQgPSBiaXRtYXA7CisgICAgcGFyYW1zLnNvdXJjZSA9IG91dGxpbmU7CisgICAgcGFyYW1zLmZsYWdzICA9IDA7CisKKyAgICBpZiAoIGJpdG1hcC0+cGl4ZWxfbW9kZSA9PSBGVF9QSVhFTF9NT0RFX0dSQVkgKQorICAgICAgcGFyYW1zLmZsYWdzIHw9IEZUX1JBU1RFUl9GTEFHX0FBOworCisgICAgLyogcmVuZGVyIG91dGxpbmUgaW50byB0aGUgYml0bWFwICovCisgICAgZXJyb3IgPSByZW5kZXItPnJhc3Rlcl9yZW5kZXIoIHJlbmRlci0+cmFzdGVyLCAmcGFyYW1zICk7CisKKyAgICBGVF9PdXRsaW5lX1RyYW5zbGF0ZSggb3V0bGluZSwgY2JveC54TWluLCBjYm94LnlNaW4gKTsKKworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgc2xvdC0+Zm9ybWF0ICAgICAgPSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQOworICAgIHNsb3QtPmJpdG1hcF9sZWZ0ID0gKEZUX0ludCkoIGNib3gueE1pbiA+PiA2ICk7CisgICAgc2xvdC0+Yml0bWFwX3RvcCAgPSAoRlRfSW50KSggY2JveC55TWF4ID4+IDYgKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfREVGSU5FX1JFTkRFUkVSKCBmdF9yYXN0ZXIxX3JlbmRlcmVyX2NsYXNzLAorCisgICAgICBGVF9NT0RVTEVfUkVOREVSRVIsCisgICAgICBzaXplb2YgKCBGVF9SZW5kZXJlclJlYyApLAorCisgICAgICAicmFzdGVyMSIsCisgICAgICAweDEwMDAwTCwKKyAgICAgIDB4MjAwMDBMLAorCisgICAgICAwLCAgICAvKiBtb2R1bGUgc3BlY2lmaWMgaW50ZXJmYWNlICovCisKKyAgICAgIChGVF9Nb2R1bGVfQ29uc3RydWN0b3IpZnRfcmFzdGVyMV9pbml0LAorICAgICAgKEZUX01vZHVsZV9EZXN0cnVjdG9yKSAwLAorICAgICAgKEZUX01vZHVsZV9SZXF1ZXN0ZXIpICAwCisgICAgLAorCisgICAgRlRfR0xZUEhfRk9STUFUX09VVExJTkUsCisKKyAgICAoRlRfUmVuZGVyZXJfUmVuZGVyRnVuYykgICBmdF9yYXN0ZXIxX3JlbmRlciwKKyAgICAoRlRfUmVuZGVyZXJfVHJhbnNmb3JtRnVuYylmdF9yYXN0ZXIxX3RyYW5zZm9ybSwKKyAgICAoRlRfUmVuZGVyZXJfR2V0Q0JveEZ1bmMpICBmdF9yYXN0ZXIxX2dldF9jYm94LAorICAgIChGVF9SZW5kZXJlcl9TZXRNb2RlRnVuYykgIGZ0X3Jhc3RlcjFfc2V0X21vZGUsCisKKyAgICAoRlRfUmFzdGVyX0Z1bmNzKikgICAgJkZUX1NUQU5EQVJEX1JBU1RFUl9HRVQKKyAgKQorCisKKyAgLyogVGhpcyByZW5kZXJlciBpcyBfTk9UXyBwYXJ0IG9mIHRoZSBkZWZhdWx0IG1vZHVsZXM7IHlvdSB3aWxsIG5lZWQgKi8KKyAgLyogdG8gcmVnaXN0ZXIgaXQgYnkgaGFuZCBpbiB5b3VyIGFwcGxpY2F0aW9uLiAgSXQgc2hvdWxkIG9ubHkgYmUgICAgKi8KKyAgLyogdXNlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgd2l0aCBGVCAxLnggYW55d2F5LiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfREVGSU5FX1JFTkRFUkVSKCBmdF9yYXN0ZXI1X3JlbmRlcmVyX2NsYXNzLAorCisgICAgICBGVF9NT0RVTEVfUkVOREVSRVIsCisgICAgICBzaXplb2YgKCBGVF9SZW5kZXJlclJlYyApLAorCisgICAgICAicmFzdGVyNSIsCisgICAgICAweDEwMDAwTCwKKyAgICAgIDB4MjAwMDBMLAorCisgICAgICAwLCAgICAvKiBtb2R1bGUgc3BlY2lmaWMgaW50ZXJmYWNlICovCisKKyAgICAgIChGVF9Nb2R1bGVfQ29uc3RydWN0b3IpZnRfcmFzdGVyMV9pbml0LAorICAgICAgKEZUX01vZHVsZV9EZXN0cnVjdG9yKSAwLAorICAgICAgKEZUX01vZHVsZV9SZXF1ZXN0ZXIpICAwCisgICAgLAorCisgICAgRlRfR0xZUEhfRk9STUFUX09VVExJTkUsCisKKyAgICAoRlRfUmVuZGVyZXJfUmVuZGVyRnVuYykgICBmdF9yYXN0ZXIxX3JlbmRlciwKKyAgICAoRlRfUmVuZGVyZXJfVHJhbnNmb3JtRnVuYylmdF9yYXN0ZXIxX3RyYW5zZm9ybSwKKyAgICAoRlRfUmVuZGVyZXJfR2V0Q0JveEZ1bmMpICBmdF9yYXN0ZXIxX2dldF9jYm94LAorICAgIChGVF9SZW5kZXJlcl9TZXRNb2RlRnVuYykgIGZ0X3Jhc3RlcjFfc2V0X21vZGUsCisKKyAgICAoRlRfUmFzdGVyX0Z1bmNzKikgICAgJkZUX1NUQU5EQVJEX1JBU1RFUl9HRVQKKyAgKQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvZnRyZW5kMS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvZnRyZW5kMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NjdlMTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9mdHJlbmQxLmgKQEAgLTAsMCArMSw0NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRyZW5kMS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRoZSBGcmVlVHlwZSBnbHlwaCByYXN0ZXJpemVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRSRU5EMV9IX18KKyNkZWZpbmUgX19GVFJFTkQxX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHJlbmRlci5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfREVDTEFSRV9SRU5ERVJFUiggZnRfcmFzdGVyMV9yZW5kZXJlcl9jbGFzcyApCisKKyAgLyogdGhpcyByZW5kZXJlciBpcyBfTk9UXyBwYXJ0IG9mIHRoZSBkZWZhdWx0IG1vZHVsZXMsIHlvdSdsbCBuZWVkICovCisgIC8qIHRvIHJlZ2lzdGVyIGl0IGJ5IGhhbmQgaW4geW91ciBhcHBsaWNhdGlvbi4gIEl0IHNob3VsZCBvbmx5IGJlICAqLworICAvKiB1c2VkIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSB3aXRoIEZUIDEueCBhbnl3YXkuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0RFQ0xBUkVfUkVOREVSRVIoIGZ0X3Jhc3RlcjVfcmVuZGVyZXJfY2xhc3MgKQorCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fRlRSRU5EMV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL2Z4ZnRfcmFzdGVyLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9meGZ0X3Jhc3Rlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMWUxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9meGZ0X3Jhc3Rlci5jCkBAIC0wLDAgKzEsMzUgQEAKKyNpZiAhZGVmaW5lZChfRlhGVF9WRVJTSU9OXykgfHwgX0ZYRlRfVkVSU0lPTl8gPT0gMjUwMQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcmFzdGVyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIG1vbm9jaHJvbWUgcmFzdGVyZXIgbW9kdWxlIGNvbXBvbmVudCAoYm9keSBvbmx5KS4gICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjZGVmaW5lIEZUX01BS0VfT1BUSU9OX1NJTkdMRV9PQkpFQ1QKKyNkZWZpbmUgRlQyX0JVSUxEX0xJQlJBUlkKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJyYXN0cGljLmMiCisjaWZkZWYgX0ZYX01BTkFHRURfQ09ERV8KKyNkZWZpbmUgVFdvcmtlcl8JVFdvcmtlcl9yYXN0ZXIKKyNkZWZpbmUgVFJhc3Rlcl8JVFJhc3Rlcl9yYXN0ZXIKKyNlbmRpZgorI2luY2x1ZGUgImZ0cmFzdGVyLmMiCisjaW5jbHVkZSAiZnRyZW5kMS5jIgorCisKKy8qIEVORCAqLworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL21vZHVsZS5tayBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL21vZHVsZS5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmZmNWRmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvbW9kdWxlLm1rCkBAIC0wLDAgKzEsMjMgQEAKKyMKKyMgRnJlZVR5cGUgMiByZW5kZXJlciBtb2R1bGUgZGVmaW5pdGlvbgorIworCisKKyMgQ29weXJpZ2h0IDE5OTYtMjAwMCwgMjAwNiBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKKworRlRNT0RVTEVfSF9DT01NQU5EUyArPSBSQVNURVJfTU9EVUxFCisKK2RlZmluZSBSQVNURVJfTU9EVUxFCiskKE9QRU5fRFJJVkVSKSBGVF9SZW5kZXJlcl9DbGFzcywgZnRfcmFzdGVyMV9yZW5kZXJlcl9jbGFzcyAkKENMT1NFX0RSSVZFUikKKyQoRUNIT19EUklWRVIpcmFzdGVyICAgICQoRUNIT19EUklWRVJfREVTQyltb25vY2hyb21lIGJpdG1hcCByZW5kZXJlciQoRUNIT19EUklWRVJfRE9ORSkKK2VuZGVmCisKKyMgRU9GCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9yYXN0ZXJycy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvcmFzdGVycnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmQxM2QyNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL3Jhc3RlcnJzLmgKQEAgLTAsMCArMSw0MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcmFzdGVycnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIG1vbm9jaHJvbWUgcmVuZGVyZXIgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAxLCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBtb25vY2hyb21lIHJlbmRlcmVyIGVycm9yIGVudW1lcmF0aW9uICovCisgIC8qIGNvbnN0YW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19SQVNURVJSU19IX18KKyNkZWZpbmUgX19SQVNURVJSU19IX18KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaCIKKworI3VuZGVmIF9fRlRFUlJPUlNfSF9fCisKKyN1bmRlZiAgRlRfRVJSX1BSRUZJWAorI2RlZmluZSBGVF9FUlJfUFJFRklYICBSYXN0ZXJfRXJyXworI2RlZmluZSBGVF9FUlJfQkFTRSAgICBGVF9Nb2RfRXJyX1Jhc3RlcgorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIgorCisjZW5kaWYgLyogX19SQVNURVJSU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL3Jhc3RwaWMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL3Jhc3RwaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzQ5Yjk0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvcmFzdHBpYy5jCkBAIC0wLDAgKzEsMTAzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICByYXN0cGljLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUgc2VydmljZXMgZm9yIHJhc3RlciBtb2R1bGUuICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDksIDIwMTAsIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAicmFzdHBpYy5oIgorI2luY2x1ZGUgInJhc3RlcnJzLmgiCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyAgLyogZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBQSUMgaW5pdCBmdW5jdGlvbnMgZnJvbSBmdHJhc3Rlci5jICovCisgIHZvaWQKKyAgRlRfSW5pdF9DbGFzc19mdF9zdGFuZGFyZF9yYXN0ZXIoIEZUX1Jhc3Rlcl9GdW5jcyogIGZ1bmNzICk7CisKKworICB2b2lkCisgIGZ0X3Jhc3RlcjFfcmVuZGVyZXJfY2xhc3NfcGljX2ZyZWUoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKQorICB7CisgICAgRlRfUElDX0NvbnRhaW5lciogIHBpY19jb250YWluZXIgPSAmbGlicmFyeS0+cGljX2NvbnRhaW5lcjsKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5ICAgICAgICA9IGxpYnJhcnktPm1lbW9yeTsKKworCisgICAgaWYgKCBwaWNfY29udGFpbmVyLT5yYXN0ZXIgKQorICAgIHsKKyAgICAgIFJhc3RlclBJQyogIGNvbnRhaW5lciA9IChSYXN0ZXJQSUMqKXBpY19jb250YWluZXItPnJhc3RlcjsKKworCisgICAgICBpZiAoIC0tY29udGFpbmVyLT5yZWZfY291bnQgKQorICAgICAgICByZXR1cm47CisgICAgICBGVF9GUkVFKCBjb250YWluZXIgKTsKKyAgICAgIHBpY19jb250YWluZXItPnJhc3RlciA9IE5VTEw7CisgICAgfQorICB9CisKKworICBGVF9FcnJvcgorICBmdF9yYXN0ZXIxX3JlbmRlcmVyX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX1BJQ19Db250YWluZXIqICBwaWNfY29udGFpbmVyID0gJmxpYnJhcnktPnBpY19jb250YWluZXI7CisgICAgRlRfRXJyb3IgICAgICAgICAgIGVycm9yICAgICAgICAgPSBGVF9FcnJfT2s7CisgICAgUmFzdGVyUElDKiAgICAgICAgIGNvbnRhaW5lciAgICAgPSBOVUxMOworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnkgICAgICAgID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICAvKiBzaW5jZSB0aGlzIGZ1bmN0aW9uIGFsc28gc2VydmVzIHJhc3RlcjUgcmVuZGVyZXIsICovCisgICAgLyogaXQgaW1wbGVtZW50cyByZWZlcmVuY2UgY291bnRpbmcgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggcGljX2NvbnRhaW5lci0+cmFzdGVyICkKKyAgICB7CisgICAgICAoKFJhc3RlclBJQyopcGljX2NvbnRhaW5lci0+cmFzdGVyKS0+cmVmX2NvdW50Kys7CisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgLyogYWxsb2NhdGUgcG9pbnRlciwgY2xlYXIgYW5kIHNldCBnbG9iYWwgY29udGFpbmVyIHBvaW50ZXIgKi8KKyAgICBpZiAoIEZUX0FMTE9DKCBjb250YWluZXIsIHNpemVvZiAoICpjb250YWluZXIgKSApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICBGVF9NRU1fU0VUKCBjb250YWluZXIsIDAsIHNpemVvZiAoICpjb250YWluZXIgKSApOworICAgIHBpY19jb250YWluZXItPnJhc3RlciA9IGNvbnRhaW5lcjsKKworICAgIGNvbnRhaW5lci0+cmVmX2NvdW50ID0gMTsKKworICAgIC8qIGluaXRpYWxpemUgcG9pbnRlciB0YWJsZSAtICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIHRoaXMgaXMgaG93IHRoZSBtb2R1bGUgdXN1YWxseSBleHBlY3RzIHRoaXMgZGF0YSAqLworICAgIEZUX0luaXRfQ2xhc3NfZnRfc3RhbmRhcmRfcmFzdGVyKCAmY29udGFpbmVyLT5mdF9zdGFuZGFyZF9yYXN0ZXIgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogcmUtcm91dGUgdGhlc2UgaW5pdCBhbmQgZnJlZSBmdW5jdGlvbnMgdG8gdGhlIGFib3ZlIGZ1bmN0aW9ucyAqLworICBGVF9FcnJvcgorICBmdF9yYXN0ZXI1X3JlbmRlcmVyX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIHJldHVybiBmdF9yYXN0ZXIxX3JlbmRlcmVyX2NsYXNzX3BpY19pbml0KCBsaWJyYXJ5ICk7CisgIH0KKworCisgIHZvaWQKKyAgZnRfcmFzdGVyNV9yZW5kZXJlcl9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBmdF9yYXN0ZXIxX3JlbmRlcmVyX2NsYXNzX3BpY19mcmVlKCBsaWJyYXJ5ICk7CisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9yYXN0cGljLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9yYXN0cGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJhMzYyZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvcmFzdGVyL3Jhc3RwaWMuaApAQCAtMCwwICsxLDY5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICByYXN0cGljLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUgc2VydmljZXMgZm9yIHJhc3RlciBtb2R1bGUuICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDkgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19SQVNUUElDX0hfXworI2RlZmluZSBfX1JBU1RQSUNfSF9fCisKKworRlRfQkVHSU5fSEVBREVSCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cGljLmgiCisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX1NUQU5EQVJEX1JBU1RFUl9HRVQgIGZ0X3N0YW5kYXJkX3Jhc3RlcgorCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIHR5cGVkZWYgc3RydWN0ICBSYXN0ZXJQSUNfCisgIHsKKyAgICBpbnQgICAgICAgICAgICAgIHJlZl9jb3VudDsKKyAgICBGVF9SYXN0ZXJfRnVuY3MgIGZ0X3N0YW5kYXJkX3Jhc3RlcjsKKworICB9IFJhc3RlclBJQzsKKworCisjZGVmaW5lIEdFVF9QSUMoIGxpYiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKFJhc3RlclBJQyopKCAobGliKS0+cGljX2NvbnRhaW5lci5yYXN0ZXIgKSApCisjZGVmaW5lIEZUX1NUQU5EQVJEX1JBU1RFUl9HRVQgICggR0VUX1BJQyggbGlicmFyeSApLT5mdF9zdGFuZGFyZF9yYXN0ZXIgKQorCisKKyAgLyogc2VlIHJhc3RwaWMuYyBmb3IgdGhlIGltcGxlbWVudGF0aW9uICovCisgIHZvaWQKKyAgZnRfcmFzdGVyMV9yZW5kZXJlcl9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisgIHZvaWQKKyAgZnRfcmFzdGVyNV9yZW5kZXJlcl9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisgIEZUX0Vycm9yCisgIGZ0X3Jhc3RlcjFfcmVuZGVyZXJfY2xhc3NfcGljX2luaXQoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworICBGVF9FcnJvcgorICBmdF9yYXN0ZXI1X3JlbmRlcmVyX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19SQVNUUElDX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvcnVsZXMubWsgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Jhc3Rlci9ydWxlcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTBiNWU0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvcnVsZXMubWsKQEAgLTAsMCArMSw3MCBAQAorIworIyBGcmVlVHlwZSAyIHJlbmRlcmVyIG1vZHVsZSBidWlsZCBydWxlcworIworCisKKyMgQ29weXJpZ2h0IDE5OTYtMjAwMCwgMjAwMSwgMjAwMywgMjAwOCwgMjAwOSwgMjAxMSBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKKworIyByYXN0ZXIgZHJpdmVyIGRpcmVjdG9yeQorIworUkFTVEVSX0RJUiA6PSAkKFNSQ19ESVIpL3Jhc3RlcgorCisjIGNvbXBpbGF0aW9uIGZsYWdzIGZvciB0aGUgZHJpdmVyCisjCitSQVNURVJfQ09NUElMRSA6PSAkKEZUX0NPTVBJTEUpICRJJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkKFJBU1RFUl9ESVIpKQorCisKKyMgcmFzdGVyIGRyaXZlciBzb3VyY2VzIChpLmUuLCBDIGZpbGVzKQorIworUkFTVEVSX0RSVl9TUkMgOj0gJChSQVNURVJfRElSKS9mdHJhc3Rlci5jIFwKKyAgICAgICAgICAgICAgICAgICQoUkFTVEVSX0RJUikvZnRyZW5kMS5jICBcCisgICAgICAgICAgICAgICAgICAkKFJBU1RFUl9ESVIpL3Jhc3RwaWMuYworCisKKyMgcmFzdGVyIGRyaXZlciBoZWFkZXJzCisjCitSQVNURVJfRFJWX0ggOj0gJChSQVNURVJfRFJWX1NSQzolLmM9JS5oKSBcCisgICAgICAgICAgICAgICAgJChSQVNURVJfRElSKS9yYXN0ZXJycy5oCisKKworIyByYXN0ZXIgZHJpdmVyIG9iamVjdChzKQorIworIyAgIFJBU1RFUl9EUlZfT0JKX00gaXMgdXNlZCBkdXJpbmcgYG11bHRpJyBidWlsZHMuCisjICAgUkFTVEVSX0RSVl9PQkpfUyBpcyB1c2VkIGR1cmluZyBgc2luZ2xlJyBidWlsZHMuCisjCitSQVNURVJfRFJWX09CSl9NIDo9ICQoUkFTVEVSX0RSVl9TUkM6JChSQVNURVJfRElSKS8lLmM9JChPQkpfRElSKS8lLiRPKQorUkFTVEVSX0RSVl9PQkpfUyA6PSAkKE9CSl9ESVIpL3Jhc3Rlci4kTworCisjIHJhc3RlciBkcml2ZXIgc291cmNlIGZpbGUgZm9yIHNpbmdsZSBidWlsZAorIworUkFTVEVSX0RSVl9TUkNfUyA6PSAkKFJBU1RFUl9ESVIpL3Jhc3Rlci5jCisKKworIyByYXN0ZXIgZHJpdmVyIC0gc2luZ2xlIG9iamVjdAorIworJChSQVNURVJfRFJWX09CSl9TKTogJChSQVNURVJfRFJWX1NSQ19TKSAkKFJBU1RFUl9EUlZfU1JDKSBcCisgICAgICAgICAgICAgICAgICAgICAkKEZSRUVUWVBFX0gpICQoUkFTVEVSX0RSVl9IKQorCSQoUkFTVEVSX0NPTVBJTEUpICRUJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkQCAkKFJBU1RFUl9EUlZfU1JDX1MpKQorCisKKyMgcmFzdGVyIGRyaXZlciAtIG11bHRpcGxlIG9iamVjdHMKKyMKKyQoT0JKX0RJUikvJS4kTzogJChSQVNURVJfRElSKS8lLmMgJChGUkVFVFlQRV9IKSAkKFJBU1RFUl9EUlZfSCkKKwkkKFJBU1RFUl9DT01QSUxFKSAkVCQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJEAgJDwpCisKKworIyB1cGRhdGUgbWFpbiBkcml2ZXIgb2JqZWN0IGxpc3RzCisjCitEUlZfT0JKU19TICs9ICQoUkFTVEVSX0RSVl9PQkpfUykKK0RSVl9PQkpTX00gKz0gJChSQVNURVJfRFJWX09CSl9NKQorCisKKyMgRU9GCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvSmFtZmlsZSBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9KYW1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMjBiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvSmFtZmlsZQpAQCAtMCwwICsxLDI5IEBACisjIEZyZWVUeXBlIDIgc3JjL3NmbnQgSmFtZmlsZQorIworIyBDb3B5cmlnaHQgMjAwMSwgMjAwMiwgMjAwNCwgMjAwNSBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKK1N1YkRpciAgRlQyX1RPUCAkKEZUMl9TUkNfRElSKSBzZm50IDsKKworeworICBsb2NhbCAgX3NvdXJjZXMgOworCisgIGlmICQoRlQyX01VTFRJKQorICB7CisgICAgX3NvdXJjZXMgPSBzZm9ianMgc2Zkcml2ZXIgdHRjbWFwIHR0bXR4IHR0cG9zdCB0dGxvYWQgdHRzYml0IHR0a2VybiB0dGJkZiBzZm50cGljIDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBfc291cmNlcyA9IHNmbnQgOworICB9CisKKyAgTGlicmFyeSAgJChGVDJfTElCKSA6ICQoX3NvdXJjZXMpLmMgOworfQorCisjIGVuZCBvZiBzcmMvc2ZudCBKYW1maWxlCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvZnhmdF9zZm50LmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvZnhmdF9zZm50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjNmJhNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9meGZ0X3NmbnQuYwpAQCAtMCwwICsxLDQ3IEBACisjaWYgIWRlZmluZWQoX0ZYRlRfVkVSU0lPTl8pIHx8IF9GWEZUX1ZFUlNJT05fID09IDI1MDEKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHNmbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBTaW5nbGUgb2JqZWN0IGxpYnJhcnkgY29tcG9uZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA2LCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2RlZmluZSBGVF9NQUtFX09QVElPTl9TSU5HTEVfT0JKRUNUCisjZGVmaW5lIEZUMl9CVUlMRF9MSUJSQVJZCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAic2ZudHBpYy5jIgorI2luY2x1ZGUgInR0bG9hZC5jIgorI2luY2x1ZGUgInR0bXR4LmMiCisjaW5jbHVkZSAidHRjbWFwLmMiCisjaW5jbHVkZSAidHRrZXJuLmMiCisjaW5jbHVkZSAic2ZvYmpzLmMiCisjaW5jbHVkZSAic2Zkcml2ZXIuYyIKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworI2luY2x1ZGUgInBuZ3NoaW0uYyIKKyNpbmNsdWRlICJ0dHNiaXQuYyIKKyNlbmRpZgorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTCisjaW5jbHVkZSAidHRwb3N0LmMiCisjZW5kaWYKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fQkRGCisjaW5jbHVkZSAidHRiZGYuYyIKKyNlbmRpZgorCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvbW9kdWxlLm1rIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L21vZHVsZS5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWZkNmEzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L21vZHVsZS5tawpAQCAtMCwwICsxLDIzIEBACisjCisjIEZyZWVUeXBlIDIgU0ZOVCBtb2R1bGUgZGVmaW5pdGlvbgorIworCisKKyMgQ29weXJpZ2h0IDE5OTYtMjAwMCwgMjAwNiBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKKworRlRNT0RVTEVfSF9DT01NQU5EUyArPSBTRk5UX01PRFVMRQorCitkZWZpbmUgU0ZOVF9NT0RVTEUKKyQoT1BFTl9EUklWRVIpIEZUX01vZHVsZV9DbGFzcywgc2ZudF9tb2R1bGVfY2xhc3MgJChDTE9TRV9EUklWRVIpCiskKEVDSE9fRFJJVkVSKXNmbnQgICAgICAkKEVDSE9fRFJJVkVSX0RFU0MpaGVscGVyIG1vZHVsZSBmb3IgVHJ1ZVR5cGUgJiBPcGVuVHlwZSBmb3JtYXRzJChFQ0hPX0RSSVZFUl9ET05FKQorZW5kZWYKKworIyBFT0YKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9wbmdzaGltLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvcG5nc2hpbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNDc4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvcG5nc2hpbS5jCkBAIC0wLDAgKzEsMzM2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBwbmdzaGltLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgUE5HIEJpdG1hcCBnbHlwaCBzdXBwb3J0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMTMgYnkgR29vZ2xlLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFdyaXR0ZW4gYnkgU3R1YXJ0IEdpbGwgYW5kIEJlaGRhZCBFc2ZhaGJvZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCIKKworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9VU0VfUE5HCisKKyAgLyogV2UgYWx3YXlzIGluY2x1ZGUgPHN0am1wLmg+LCBzbyBtYWtlIGxpYnBuZyBzaHV0IHVwISAqLworI2RlZmluZSBQTkdfU0tJUF9TRVRKTVBfQ0hFQ0sgMQorI2luY2x1ZGUgPHBuZy5oPgorI2luY2x1ZGUgInBuZ3NoaW0uaCIKKworI2luY2x1ZGUgInNmZXJyb3JzLmgiCisKKworICAvKiBUaGlzIGNvZGUgaXMgZnJlZWx5IGJhc2VkIG9uIGNhaXJvLXBuZy5jLiAgVGhlcmUncyBzbyBtYW55IHdheXMgKi8KKyAgLyogdG8gY2FsbCBsaWJwbmcsIGFuZCB0aGUgd2F5IGNhaXJvIGRvZXMgaXQgaXMgZGVmYWN0byBzdGFuZGFyZC4gICovCisKKyAgc3RhdGljIGludAorICBtdWx0aXBseV9hbHBoYSggaW50ICBhbHBoYSwKKyAgICAgICAgICAgICAgICAgIGludCAgY29sb3IgKQorICB7CisgICAgaW50ICB0ZW1wID0gKCBhbHBoYSAqIGNvbG9yICkgKyAweDgwOworCisKKyAgICByZXR1cm4gKCB0ZW1wICsgKCB0ZW1wID4+IDggKSApID4+IDg7CisgIH0KKworCisgIC8qIFByZW11bHRpcGxpZXMgZGF0YSBhbmQgY29udmVydHMgUkdCQSBieXRlcyA9PiBuYXRpdmUgZW5kaWFuLiAqLworICBzdGF0aWMgdm9pZAorICBwcmVtdWx0aXBseV9kYXRhKCBwbmdfc3RydWN0cCAgICBwbmcsCisgICAgICAgICAgICAgICAgICAgIHBuZ19yb3dfaW5mb3AgIHJvd19pbmZvLAorICAgICAgICAgICAgICAgICAgICBwbmdfYnl0ZXAgICAgICBkYXRhICkKKyAgeworICAgIHVuc2lnbmVkIGludCAgaTsKKworICAgIEZUX1VOVVNFRCggcG5nICk7CisKKworICAgIGZvciAoIGkgPSAwOyBpIDwgcm93X2luZm8tPnJvd2J5dGVzOyBpICs9IDQgKQorICAgIHsKKyAgICAgIHVuc2lnbmVkIGNoYXIqICBiYXNlICA9ICZkYXRhW2ldOworICAgICAgdW5zaWduZWQgaW50ICAgIGFscGhhID0gYmFzZVszXTsKKworCisgICAgICBpZiAoIGFscGhhID09IDAgKQorICAgICAgICBiYXNlWzBdID0gYmFzZVsxXSA9IGJhc2VbMl0gPSBiYXNlWzNdID0gMDsKKworICAgICAgZWxzZQorICAgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgIHJlZCAgID0gYmFzZVswXTsKKyAgICAgICAgdW5zaWduZWQgaW50ICBncmVlbiA9IGJhc2VbMV07CisgICAgICAgIHVuc2lnbmVkIGludCAgYmx1ZSAgPSBiYXNlWzJdOworCisKKyAgICAgICAgaWYgKCBhbHBoYSAhPSAweEZGICkKKyAgICAgICAgeworICAgICAgICAgIHJlZCAgID0gbXVsdGlwbHlfYWxwaGEoIGFscGhhLCByZWQgICApOworICAgICAgICAgIGdyZWVuID0gbXVsdGlwbHlfYWxwaGEoIGFscGhhLCBncmVlbiApOworICAgICAgICAgIGJsdWUgID0gbXVsdGlwbHlfYWxwaGEoIGFscGhhLCBibHVlICApOworICAgICAgICB9CisKKyAgICAgICAgYmFzZVswXSA9IGJsdWU7CisgICAgICAgIGJhc2VbMV0gPSBncmVlbjsKKyAgICAgICAgYmFzZVsyXSA9IHJlZDsKKyAgICAgICAgYmFzZVszXSA9IGFscGhhOworICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgLyogQ29udmVydHMgUkdCeCBieXRlcyB0byBCR1JBLiAqLworICBzdGF0aWMgdm9pZAorICBjb252ZXJ0X2J5dGVzX3RvX2RhdGEoIHBuZ19zdHJ1Y3RwICAgIHBuZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwbmdfcm93X2luZm9wICByb3dfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwbmdfYnl0ZXAgICAgICBkYXRhICkKKyAgeworICAgIHVuc2lnbmVkIGludCAgaTsKKworICAgIEZUX1VOVVNFRCggcG5nICk7CisKKworICAgIGZvciAoIGkgPSAwOyBpIDwgcm93X2luZm8tPnJvd2J5dGVzOyBpICs9IDQgKQorICAgIHsKKyAgICAgIHVuc2lnbmVkIGNoYXIqICBiYXNlICA9ICZkYXRhW2ldOworICAgICAgdW5zaWduZWQgaW50ICAgIHJlZCAgID0gYmFzZVswXTsKKyAgICAgIHVuc2lnbmVkIGludCAgICBncmVlbiA9IGJhc2VbMV07CisgICAgICB1bnNpZ25lZCBpbnQgICAgYmx1ZSAgPSBiYXNlWzJdOworCisKKyAgICAgIGJhc2VbMF0gPSBibHVlOworICAgICAgYmFzZVsxXSA9IGdyZWVuOworICAgICAgYmFzZVsyXSA9IHJlZDsKKyAgICAgIGJhc2VbM10gPSAweEZGOworICAgIH0KKyAgfQorCisKKyAgLyogVXNlIGVycm9yIGNhbGxiYWNrIHRvIGF2b2lkIHBuZyB3cml0aW5nIHRvIHN0ZGVyci4gKi8KKyAgc3RhdGljIHZvaWQKKyAgZXJyb3JfY2FsbGJhY2soIHBuZ19zdHJ1Y3RwICAgICAgcG5nLAorICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2NoYXJwICBlcnJvcl9tc2cgKQorICB7CisgICAgRlRfRXJyb3IqICBlcnJvciA9IHBuZ19nZXRfZXJyb3JfcHRyKCBwbmcgKTsKKworICAgIEZUX1VOVVNFRCggZXJyb3JfbXNnICk7CisKKworICAgICplcnJvciA9IEZUX1RIUk9XKCBPdXRfT2ZfTWVtb3J5ICk7CisjaWZkZWYgUE5HX1NFVEpNUF9TVVBQT1JURUQKKyAgICBsb25nam1wKCBwbmdfam1wYnVmKCBwbmcgKSwgMSApOworI2VuZGlmCisgICAgLyogaWYgd2UgZ2V0IGhlcmUsIHRoZW4gd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGFib3J0IC4uLiAqLworICB9CisKKworICAvKiBVc2Ugd2FybmluZyBjYWxsYmFjayB0byBhdm9pZCBwbmcgd3JpdGluZyB0byBzdGRlcnIuICovCisgIHN0YXRpYyB2b2lkCisgIHdhcm5pbmdfY2FsbGJhY2soIHBuZ19zdHJ1Y3RwICAgICAgcG5nLAorICAgICAgICAgICAgICAgICAgICBwbmdfY29uc3RfY2hhcnAgIGVycm9yX21zZyApCisgIHsKKyAgICBGVF9VTlVTRUQoIHBuZyApOworICAgIEZUX1VOVVNFRCggZXJyb3JfbXNnICk7CisKKyAgICAvKiBKdXN0IGlnbm9yZSB3YXJuaW5ncy4gKi8KKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgcmVhZF9kYXRhX2Zyb21fRlRfU3RyZWFtKCBwbmdfc3RydWN0cCAgcG5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19ieXRlcCAgICBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19zaXplX3QgICBsZW5ndGggKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBwbmdfdm9pZHAgIHAgICAgICA9IHBuZ19nZXRfaW9fcHRyKCBwbmcgKTsKKyAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IChGVF9TdHJlYW0pcDsKKworCisgICAgaWYgKCBGVF9GUkFNRV9FTlRFUiggbGVuZ3RoICkgKQorICAgIHsKKyAgICAgIEZUX0Vycm9yKiAgZSA9IHBuZ19nZXRfZXJyb3JfcHRyKCBwbmcgKTsKKworCisgICAgICAqZSA9IEZUX1RIUk9XKCBJbnZhbGlkX1N0cmVhbV9SZWFkICk7CisgICAgICBwbmdfZXJyb3IoIHBuZywgTlVMTCApOworCisgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWVtY3B5KCBkYXRhLCBzdHJlYW0tPmN1cnNvciwgbGVuZ3RoICk7CisKKyAgICBGVF9GUkFNRV9FWElUKCk7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBMb2FkX1NCaXRfUG5nKCBGVF9CaXRtYXAqICAgICAgIG1hcCwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgICB4X29mZnNldCwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgICB5X29mZnNldCwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgICBwaXhfYml0cywKKyAgICAgICAgICAgICAgICAgVFRfU0JpdF9NZXRyaWNzICBtZXRyaWNzLAorICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgICBkYXRhLAorICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgIHBuZ19sZW4gKQorICB7CisgICAgRlRfRXJyb3IgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9TdHJlYW1SZWMgIHN0cmVhbTsKKworICAgIHBuZ19zdHJ1Y3RwICBwbmc7CisgICAgcG5nX2luZm9wICAgIGluZm87CisgICAgcG5nX3VpbnRfMzIgIGltZ1dpZHRoLCBpbWdIZWlnaHQ7CisKKyAgICBpbnQgICAgICAgICBiaXRkZXB0aCwgY29sb3JfdHlwZSwgaW50ZXJsYWNlOworICAgIEZUX0ludCAgICAgIGk7CisgICAgcG5nX2J5dGUqICAqcm93czsKKworCisgICAgaWYgKCB4X29mZnNldCA8IDAgfHwgeF9vZmZzZXQgKyBtZXRyaWNzLT53aWR0aCAgPiBtYXAtPndpZHRoIHx8CisgICAgICAgICB5X29mZnNldCA8IDAgfHwgeV9vZmZzZXQgKyBtZXRyaWNzLT5oZWlnaHQgPiBtYXAtPnJvd3MgIHx8CisgICAgICAgICBwaXhfYml0cyAhPSAzMiB8fCBtYXAtPnBpeGVsX21vZGUgIT0gRlRfUElYRUxfTU9ERV9CR1JBICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgRlRfU3RyZWFtX09wZW5NZW1vcnkoICZzdHJlYW0sIGRhdGEsIHBuZ19sZW4gKTsKKworICAgIHBuZyA9IHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3QoIFBOR19MSUJQTkdfVkVSX1NUUklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ19jYWxsYmFjayApOworICAgIGlmICggIXBuZyApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggT3V0X09mX01lbW9yeSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGluZm8gPSBwbmdfY3JlYXRlX2luZm9fc3RydWN0KCBwbmcgKTsKKyAgICBpZiAoICFpbmZvICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBPdXRfT2ZfTWVtb3J5ICk7CisgICAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCggJnBuZywgTlVMTCwgTlVMTCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggZnRfc2V0am1wKCBwbmdfam1wYnVmKCBwbmcgKSApICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICBnb3RvIERlc3Ryb3lFeGl0OworICAgIH0KKworICAgIHBuZ19zZXRfcmVhZF9mbiggcG5nLCAmc3RyZWFtLCByZWFkX2RhdGFfZnJvbV9GVF9TdHJlYW0gKTsKKworICAgIHBuZ19yZWFkX2luZm8oIHBuZywgaW5mbyApOworICAgIHBuZ19nZXRfSUhEUiggcG5nLCBpbmZvLAorICAgICAgICAgICAgICAgICAgJmltZ1dpZHRoLCAmaW1nSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgJmJpdGRlcHRoLCAmY29sb3JfdHlwZSwgJmludGVybGFjZSwKKyAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwgKTsKKworICAgIGlmICggZXJyb3IgIT0gRlRfRXJyX09rICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAoRlRfSW50KWltZ1dpZHRoICAhPSBtZXRyaWNzLT53aWR0aCAgfHwKKyAgICAgICAgIChGVF9JbnQpaW1nSGVpZ2h0ICE9IG1ldHJpY3MtPmhlaWdodCApCisgICAgICBnb3RvIERlc3Ryb3lFeGl0OworCisgICAgLyogY29udmVydCBwYWxldHRlL2dyYXkgaW1hZ2UgdG8gcmdiICovCisgICAgaWYgKCBjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1BBTEVUVEUgKQorICAgICAgcG5nX3NldF9wYWxldHRlX3RvX3JnYiggcG5nICk7CisKKyAgICAvKiBleHBhbmQgZ3JheSBiaXQgZGVwdGggaWYgbmVlZGVkICovCisgICAgaWYgKCBjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVkgKQorICAgIHsKKyNpZiBQTkdfTElCUE5HX1ZFUiA+PSAxMDIwOQorICAgICAgcG5nX3NldF9leHBhbmRfZ3JheV8xXzJfNF90b184KCBwbmcgKTsKKyNlbHNlCisgICAgICBwbmdfc2V0X2dyYXlfMV8yXzRfdG9fOCggcG5nICk7CisjZW5kaWYKKyAgICB9CisKKyAgICAvKiB0cmFuc2Zvcm0gdHJhbnNwYXJlbmN5IHRvIGFscGhhICovCisgICAgaWYgKCBwbmdfZ2V0X3ZhbGlkKHBuZywgaW5mbywgUE5HX0lORk9fdFJOUyApICkKKyAgICAgIHBuZ19zZXRfdFJOU190b19hbHBoYSggcG5nICk7CisKKyAgICBpZiAoIGJpdGRlcHRoID09IDE2ICkKKyAgICAgIHBuZ19zZXRfc3RyaXBfMTYoIHBuZyApOworCisgICAgaWYgKCBiaXRkZXB0aCA8IDggKQorICAgICAgcG5nX3NldF9wYWNraW5nKCBwbmcgKTsKKworICAgIC8qIGNvbnZlcnQgZ3JheXNjYWxlIHRvIFJHQiAqLworICAgIGlmICggY29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9HUkFZICAgICAgIHx8CisgICAgICAgICBjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEEgKQorICAgICAgcG5nX3NldF9ncmF5X3RvX3JnYiggcG5nICk7CisKKyAgICBpZiAoIGludGVybGFjZSAhPSBQTkdfSU5URVJMQUNFX05PTkUgKQorICAgICAgcG5nX3NldF9pbnRlcmxhY2VfaGFuZGxpbmcoIHBuZyApOworCisgICAgcG5nX3NldF9maWxsZXIoIHBuZywgMHhGRiwgUE5HX0ZJTExFUl9BRlRFUiApOworCisgICAgLyogcmVjaGVjayBoZWFkZXIgYWZ0ZXIgc2V0dGluZyBFWFBBTkQgb3B0aW9ucyAqLworICAgIHBuZ19yZWFkX3VwZGF0ZV9pbmZvKHBuZywgaW5mbyApOworICAgIHBuZ19nZXRfSUhEUiggcG5nLCBpbmZvLAorICAgICAgICAgICAgICAgICAgJmltZ1dpZHRoLCAmaW1nSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgJmJpdGRlcHRoLCAmY29sb3JfdHlwZSwgJmludGVybGFjZSwKKyAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwgKTsKKworICAgIGlmICggYml0ZGVwdGggIT0gOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICEoIGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCICAgICAgIHx8CisgICAgICAgICAgIGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBICkgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRGVzdHJveUV4aXQ7CisgICAgfQorCisgICAgc3dpdGNoICggY29sb3JfdHlwZSApCisgICAgeworICAgIGRlZmF1bHQ6CisgICAgICAvKiBTaG91bGRuJ3QgaGFwcGVuLCBidXQgZmFsbCB0aHJvdWdoLiAqLworCisgICAgY2FzZSBQTkdfQ09MT1JfVFlQRV9SR0JfQUxQSEE6CisgICAgICBwbmdfc2V0X3JlYWRfdXNlcl90cmFuc2Zvcm1fZm4oIHBuZywgcHJlbXVsdGlwbHlfZGF0YSApOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBOR19DT0xPUl9UWVBFX1JHQjoKKyAgICAgIC8qIEh1bW0sIHRoaXMgc21lbGxzLiAgQ2Fycnkgb24gdGhvdWdoLiAqLworICAgICAgcG5nX3NldF9yZWFkX3VzZXJfdHJhbnNmb3JtX2ZuKCBwbmcsIGNvbnZlcnRfYnl0ZXNfdG9fZGF0YSApOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCBGVF9ORVdfQVJSQVkoIHJvd3MsIGltZ0hlaWdodCApICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBPdXRfT2ZfTWVtb3J5ICk7CisgICAgICBnb3RvIERlc3Ryb3lFeGl0OworICAgIH0KKworICAgIGZvciAoIGkgPSAwOyBpIDwgKEZUX0ludClpbWdIZWlnaHQ7IGkrKyApCisgICAgICByb3dzW2ldID0gbWFwLT5idWZmZXIgKyAoIHlfb2Zmc2V0ICsgaSApICogbWFwLT5waXRjaCArIHhfb2Zmc2V0ICogNDsKKworICAgIHBuZ19yZWFkX2ltYWdlKCBwbmcsIHJvd3MgKTsKKworICAgIEZUX0ZSRUUoIHJvd3MgKTsKKworICAgIHBuZ19yZWFkX2VuZCggcG5nLCBpbmZvICk7CisKKyAgRGVzdHJveUV4aXQ6CisgICAgcG5nX2Rlc3Ryb3lfcmVhZF9zdHJ1Y3QoICZwbmcsICZpbmZvLCBOVUxMICk7CisgICAgRlRfU3RyZWFtX0Nsb3NlKCAmc3RyZWFtICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fVVNFX1BORyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3BuZ3NoaW0uaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9wbmdzaGltLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI1MDg2YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9wbmdzaGltLmgKQEAgLTAsMCArMSw0OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgcG5nc2hpbS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFBORyBCaXRtYXAgZ2x5cGggc3VwcG9ydC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDEzIGJ5IEdvb2dsZSwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBXcml0dGVuIGJ5IFN0dWFydCBHaWxsIGFuZCBCZWhkYWQgRXNmYWhib2QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fUE5HU0hJTV9IX18KKyNkZWZpbmUgX19QTkdTSElNX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAidHRsb2FkLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1VTRV9QTkcKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBMb2FkX1NCaXRfUG5nKCBGVF9CaXRtYXAqICAgICAgIG1hcCwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgICB4X29mZnNldCwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgICB5X29mZnNldCwKKyAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgICBwaXhfYml0cywKKyAgICAgICAgICAgICAgICAgVFRfU0JpdF9NZXRyaWNzICBtZXRyaWNzLAorICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgICBkYXRhLAorICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgIHBuZ19sZW4gKTsKKworI2VuZGlmCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fUE5HU0hJTV9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9ydWxlcy5tayBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9ydWxlcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmM5NTZhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3J1bGVzLm1rCkBAIC0wLDAgKzEsNzggQEAKKyMKKyMgRnJlZVR5cGUgMiBTRk5UIGRyaXZlciBjb25maWd1cmF0aW9uIHJ1bGVzCisjCisKKworIyBDb3B5cmlnaHQgMTk5Ni0yMDAwLCAyMDAyLTIwMDcsIDIwMDksIDIwMTEsIDIwMTMgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKKyMgU0ZOVCBkcml2ZXIgZGlyZWN0b3J5CisjCitTRk5UX0RJUiA6PSAkKFNSQ19ESVIpL3NmbnQKKworCisjIGNvbXBpbGF0aW9uIGZsYWdzIGZvciB0aGUgZHJpdmVyCisjCitTRk5UX0NPTVBJTEUgOj0gJChGVF9DT01QSUxFKSAkSSQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJChTRk5UX0RJUikpCisKKworIyBTRk5UIGRyaXZlciBzb3VyY2VzIChpLmUuLCBDIGZpbGVzKQorIworU0ZOVF9EUlZfU1JDIDo9ICQoU0ZOVF9ESVIpL3R0bG9hZC5jICAgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3R0bXR4LmMgICAgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3R0Y21hcC5jICAgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3R0c2JpdC5jICAgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3R0cG9zdC5jICAgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3R0a2Vybi5jICAgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3R0YmRmLmMgICAgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3Nmb2Jqcy5jICAgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3NmZHJpdmVyLmMgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3NmbnRwaWMuYyAgXAorICAgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3BuZ3NoaW0uYworCisjIFNGTlQgZHJpdmVyIGhlYWRlcnMKKyMKK1NGTlRfRFJWX0ggOj0gJChTRk5UX0RSVl9TUkM6JWM9JWgpICBcCisgICAgICAgICAgICAgICQoU0ZOVF9ESVIpL3NmZXJyb3JzLmgKKworCisjIFNGTlQgZHJpdmVyIG9iamVjdChzKQorIworIyAgIFNGTlRfRFJWX09CSl9NIGlzIHVzZWQgZHVyaW5nIGBtdWx0aScgYnVpbGRzLgorIyAgIFNGTlRfRFJWX09CSl9TIGlzIHVzZWQgZHVyaW5nIGBzaW5nbGUnIGJ1aWxkcy4KKyMKK1NGTlRfRFJWX09CSl9NIDo9ICQoU0ZOVF9EUlZfU1JDOiQoU0ZOVF9ESVIpLyUuYz0kKE9CSl9ESVIpLyUuJE8pCitTRk5UX0RSVl9PQkpfUyA6PSAkKE9CSl9ESVIpL3NmbnQuJE8KKworIyBTRk5UIGRyaXZlciBzb3VyY2UgZmlsZSBmb3Igc2luZ2xlIGJ1aWxkCisjCitTRk5UX0RSVl9TUkNfUyA6PSAkKFNGTlRfRElSKS9zZm50LmMKKworCisjIFNGTlQgZHJpdmVyIC0gc2luZ2xlIG9iamVjdAorIworJChTRk5UX0RSVl9PQkpfUyk6ICQoU0ZOVF9EUlZfU1JDX1MpICQoU0ZOVF9EUlZfU1JDKSBcCisgICAgICAgICAgICAgICAgICAgJChGUkVFVFlQRV9IKSAkKFNGTlRfRFJWX0gpCisJJChTRk5UX0NPTVBJTEUpICRUJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkQCAkKFNGTlRfRFJWX1NSQ19TKSkKKworCisjIFNGTlQgZHJpdmVyIC0gbXVsdGlwbGUgb2JqZWN0cworIworJChPQkpfRElSKS8lLiRPOiAkKFNGTlRfRElSKS8lLmMgJChGUkVFVFlQRV9IKSAkKFNGTlRfRFJWX0gpCisJJChTRk5UX0NPTVBJTEUpICRUJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkQCAkPCkKKworCisjIHVwZGF0ZSBtYWluIGRyaXZlciBvYmplY3QgbGlzdHMKKyMKK0RSVl9PQkpTX1MgKz0gJChTRk5UX0RSVl9PQkpfUykKK0RSVl9PQkpTX00gKz0gJChTRk5UX0RSVl9PQkpfTSkKKworCisjIEVPRgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3NmZHJpdmVyLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvc2Zkcml2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzU4MzgzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3NmZHJpdmVyLmMKQEAgLTAsMCArMSw1MjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHNmZHJpdmVyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBIaWdoLWxldmVsIFNGTlQgZHJpdmVyIGludGVyZmFjZSAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA3LCAyMDA5LTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorCisjaW5jbHVkZSAic2Zkcml2ZXIuaCIKKyNpbmNsdWRlICJ0dGxvYWQuaCIKKyNpbmNsdWRlICJzZm9ianMuaCIKKyNpbmNsdWRlICJzZm50cGljLmgiCisKKyNpbmNsdWRlICJzZmVycm9ycy5oIgorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTCisjaW5jbHVkZSAidHRzYml0LmgiCisjZW5kaWYKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUworI2luY2x1ZGUgInR0cG9zdC5oIgorI2VuZGlmCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0JERgorI2luY2x1ZGUgInR0YmRmLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmJkZi5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ0dGNtYXAuaCIKKyNpbmNsdWRlICJ0dGtlcm4uaCIKKyNpbmNsdWRlICJ0dG10eC5oIgorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmdsZGljdC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwb3N0bm0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2c2ZudC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGNtYXAuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX3NmZHJpdmVyCisKKworICAvKgorICAgKiAgU0ZOVCBUQUJMRSBTRVJWSUNFCisgICAqCisgICAqLworCisgIHN0YXRpYyB2b2lkKgorICBnZXRfc2ZudF90YWJsZSggVFRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICBGVF9TZm50X1RhZyAgdGFnICkKKyAgeworICAgIHZvaWQqICB0YWJsZTsKKworCisgICAgc3dpdGNoICggdGFnICkKKyAgICB7CisgICAgY2FzZSBmdF9zZm50X2hlYWQ6CisgICAgICB0YWJsZSA9ICZmYWNlLT5oZWFkZXI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgZnRfc2ZudF9oaGVhOgorICAgICAgdGFibGUgPSAmZmFjZS0+aG9yaXpvbnRhbDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBmdF9zZm50X3ZoZWE6CisgICAgICB0YWJsZSA9IGZhY2UtPnZlcnRpY2FsX2luZm8gPyAmZmFjZS0+dmVydGljYWwgOiAwOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGZ0X3NmbnRfb3MyOgorICAgICAgdGFibGUgPSBmYWNlLT5vczIudmVyc2lvbiA9PSAweEZGRkZVID8gMCA6ICZmYWNlLT5vczI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgZnRfc2ZudF9wb3N0OgorICAgICAgdGFibGUgPSAmZmFjZS0+cG9zdHNjcmlwdDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBmdF9zZm50X21heHA6CisgICAgICB0YWJsZSA9ICZmYWNlLT5tYXhfcHJvZmlsZTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBmdF9zZm50X3BjbHQ6CisgICAgICB0YWJsZSA9IGZhY2UtPnBjbHQuVmVyc2lvbiA/ICZmYWNlLT5wY2x0IDogMDsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIHRhYmxlID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gdGFibGU7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBzZm50X3RhYmxlX2luZm8oIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGlkeCwKKyAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgKnRhZywKKyAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgKm9mZnNldCwKKyAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgKmxlbmd0aCApCisgIHsKKyAgICBpZiAoICFvZmZzZXQgfHwgIWxlbmd0aCApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGlmICggIXRhZyApCisgICAgICAqbGVuZ3RoID0gZmFjZS0+bnVtX3RhYmxlczsKKyAgICBlbHNlCisgICAgeworICAgICAgaWYgKCBpZHggPj0gZmFjZS0+bnVtX3RhYmxlcyApCisgICAgICAgIHJldHVybiBGVF9USFJPVyggVGFibGVfTWlzc2luZyApOworCisgICAgICAqdGFnICAgID0gZmFjZS0+ZGlyX3RhYmxlc1tpZHhdLlRhZzsKKyAgICAgICpvZmZzZXQgPSBmYWNlLT5kaXJfdGFibGVzW2lkeF0uT2Zmc2V0OworICAgICAgKmxlbmd0aCA9IGZhY2UtPmRpcl90YWJsZXNbaWR4XS5MZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfREVGSU5FX1NFUlZJQ0VfU0ZOVF9UQUJMRVJFQygKKyAgICBzZm50X3NlcnZpY2Vfc2ZudF90YWJsZSwKKyAgICAoRlRfU0ZOVF9UYWJsZUxvYWRGdW5jKXR0X2ZhY2VfbG9hZF9hbnksCisgICAgKEZUX1NGTlRfVGFibGVHZXRGdW5jKSBnZXRfc2ZudF90YWJsZSwKKyAgICAoRlRfU0ZOVF9UYWJsZUluZm9GdW5jKXNmbnRfdGFibGVfaW5mbyApCisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUworCisgIC8qCisgICAqICBHTFlQSCBESUNUIFNFUlZJQ0UKKyAgICoKKyAgICovCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHNmbnRfZ2V0X2dseXBoX25hbWUoIFRUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGJ1ZmZlcl9tYXggKQorICB7CisgICAgRlRfU3RyaW5nKiAgZ25hbWU7CisgICAgRlRfRXJyb3IgICAgZXJyb3I7CisKKworICAgIGVycm9yID0gdHRfZmFjZV9nZXRfcHNfbmFtZSggZmFjZSwgZ2x5cGhfaW5kZXgsICZnbmFtZSApOworICAgIGlmICggIWVycm9yICkKKyAgICAgIEZUX1NUUkNQWU4oIGJ1ZmZlciwgZ25hbWUsIGJ1ZmZlcl9tYXggKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX1VJbnQKKyAgc2ZudF9nZXRfbmFtZV9pbmRleCggVFRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyaW5nKiAgZ2x5cGhfbmFtZSApCisgIHsKKyAgICBGVF9GYWNlICByb290ID0gJmZhY2UtPnJvb3Q7CisKKyAgICBGVF9VSW50ICBpLCBtYXhfZ2lkID0gRlRfVUlOVF9NQVg7CisKKworICAgIGlmICggcm9vdC0+bnVtX2dseXBocyA8IDAgKQorICAgICAgcmV0dXJuIDA7CisgICAgZWxzZSBpZiAoIChGVF9VTG9uZylyb290LT5udW1fZ2x5cGhzIDwgRlRfVUlOVF9NQVggKQorICAgICAgbWF4X2dpZCA9IChGVF9VSW50KXJvb3QtPm51bV9nbHlwaHM7CisgICAgZWxzZQorICAgICAgRlRfVFJBQ0UwKCggIklnbm9yZSBnbHlwaCBuYW1lcyBmb3IgaW52YWxpZCBHSUQgMHglMDh4IC0gMHglMDh4XG4iLAorICAgICAgICAgICAgICAgICAgRlRfVUlOVF9NQVgsIHJvb3QtPm51bV9nbHlwaHMgKSk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG1heF9naWQ7IGkrKyApCisgICAgeworICAgICAgRlRfU3RyaW5nKiAgZ25hbWU7CisgICAgICBGVF9FcnJvciAgICBlcnJvciA9IHR0X2ZhY2VfZ2V0X3BzX25hbWUoIGZhY2UsIGksICZnbmFtZSApOworCisKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgaWYgKCAhZnRfc3RyY21wKCBnbHlwaF9uYW1lLCBnbmFtZSApICkKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIEZUX0RFRklORV9TRVJWSUNFX0dMWVBIRElDVFJFQygKKyAgICBzZm50X3NlcnZpY2VfZ2x5cGhfZGljdCwKKyAgICAoRlRfR2x5cGhEaWN0X0dldE5hbWVGdW5jKSAgc2ZudF9nZXRfZ2x5cGhfbmFtZSwKKyAgICAoRlRfR2x5cGhEaWN0X05hbWVJbmRleEZ1bmMpc2ZudF9nZXRfbmFtZV9pbmRleCApCisKKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUyAqLworCisKKyAgLyoKKyAgICogIFBPU1RTQ1JJUFQgTkFNRSBTRVJWSUNFCisgICAqCisgICAqLworCisgIHN0YXRpYyBjb25zdCBjaGFyKgorICBzZm50X2dldF9wc19uYW1lKCBUVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX0ludCAgICAgICBuLCBmb3VuZF93aW4sIGZvdW5kX2FwcGxlOworICAgIGNvbnN0IGNoYXIqICByZXN1bHQgPSBOVUxMOworCisKKyAgICAvKiBzaG91bGRuJ3QgaGFwcGVuLCBidXQganVzdCBpbiBjYXNlIHRvIGF2b2lkIG1lbW9yeSBsZWFrcyAqLworICAgIGlmICggZmFjZS0+cG9zdHNjcmlwdF9uYW1lICkKKyAgICAgIHJldHVybiBmYWNlLT5wb3N0c2NyaXB0X25hbWU7CisKKyAgICAvKiBzY2FuIHRoZSBuYW1lIHRhYmxlIHRvIHNlZSB3aGV0aGVyIHdlIGhhdmUgYSBQb3N0c2NyaXB0IG5hbWUgaGVyZSwgKi8KKyAgICAvKiBlaXRoZXIgaW4gTWFjaW50b3NoIG9yIFdpbmRvd3MgcGxhdGZvcm0gZW5jb2RpbmdzICAgICAgICAgICAgICAgICAgKi8KKyAgICBmb3VuZF93aW4gICA9IC0xOworICAgIGZvdW5kX2FwcGxlID0gLTE7CisKKyAgICBmb3IgKCBuID0gMDsgbiA8IGZhY2UtPm51bV9uYW1lczsgbisrICkKKyAgICB7CisgICAgICBUVF9OYW1lRW50cnlSZWMqICBuYW1lID0gZmFjZS0+bmFtZV90YWJsZS5uYW1lcyArIG47CisKKworICAgICAgaWYgKCBuYW1lLT5uYW1lSUQgPT0gNiAmJiBuYW1lLT5zdHJpbmdMZW5ndGggPiAwICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBuYW1lLT5wbGF0Zm9ybUlEID09IDMgICAgICYmCisgICAgICAgICAgICAgbmFtZS0+ZW5jb2RpbmdJRCA9PSAxICAgICAmJgorICAgICAgICAgICAgIG5hbWUtPmxhbmd1YWdlSUQgPT0gMHg0MDkgKQorICAgICAgICAgIGZvdW5kX3dpbiA9IG47CisKKyAgICAgICAgaWYgKCBuYW1lLT5wbGF0Zm9ybUlEID09IDEgJiYKKyAgICAgICAgICAgICBuYW1lLT5lbmNvZGluZ0lEID09IDAgJiYKKyAgICAgICAgICAgICBuYW1lLT5sYW5ndWFnZUlEID09IDAgKQorICAgICAgICAgIGZvdW5kX2FwcGxlID0gbjsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIGZvdW5kX3dpbiAhPSAtMSApCisgICAgeworICAgICAgRlRfTWVtb3J5ICAgICAgICAgbWVtb3J5ID0gZmFjZS0+cm9vdC5tZW1vcnk7CisgICAgICBUVF9OYW1lRW50cnlSZWMqICBuYW1lICAgPSBmYWNlLT5uYW1lX3RhYmxlLm5hbWVzICsgZm91bmRfd2luOworICAgICAgRlRfVUludCAgICAgICAgICAgbGVuICAgID0gbmFtZS0+c3RyaW5nTGVuZ3RoIC8gMjsKKyAgICAgIEZUX0Vycm9yICAgICAgICAgIGVycm9yICA9IEZUX0Vycl9PazsKKworICAgICAgRlRfVU5VU0VEKCBlcnJvciApOworCisKKyAgICAgIGlmICggIUZUX0FMTE9DKCByZXN1bHQsIG5hbWUtPnN0cmluZ0xlbmd0aCArIDEgKSApCisgICAgICB7CisgICAgICAgIEZUX1N0cmVhbSAgIHN0cmVhbSA9IGZhY2UtPm5hbWVfdGFibGUuc3RyZWFtOworICAgICAgICBGVF9TdHJpbmcqICByICAgICAgPSAoRlRfU3RyaW5nKilyZXN1bHQ7CisgICAgICAgIEZUX0J5dGUqICAgIHAgICAgICA9IChGVF9CeXRlKiluYW1lLT5zdHJpbmc7CisKKworICAgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBuYW1lLT5zdHJpbmdPZmZzZXQgKSB8fAorICAgICAgICAgICAgIEZUX0ZSQU1FX0VOVEVSKCBuYW1lLT5zdHJpbmdMZW5ndGggKSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9GUkVFKCByZXN1bHQgKTsKKyAgICAgICAgICBuYW1lLT5zdHJpbmdMZW5ndGggPSAwOworICAgICAgICAgIG5hbWUtPnN0cmluZ09mZnNldCA9IDA7CisgICAgICAgICAgRlRfRlJFRSggbmFtZS0+c3RyaW5nICk7CisKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBwID0gKEZUX0J5dGUqKXN0cmVhbS0+Y3Vyc29yOworCisgICAgICAgIGZvciAoIDsgbGVuID4gMDsgbGVuLS0sIHAgKz0gMiApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIHBbMF0gPT0gMCAmJiBwWzFdID49IDMyICYmIHBbMV0gPCAxMjggKQorICAgICAgICAgICAgKnIrKyA9IHBbMV07CisgICAgICAgIH0KKyAgICAgICAgKnIgPSAnXDAnOworCisgICAgICAgIEZUX0ZSQU1FX0VYSVQoKTsKKyAgICAgIH0KKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoIGZvdW5kX2FwcGxlICE9IC0xICkKKyAgICB7CisgICAgICBGVF9NZW1vcnkgICAgICAgICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKyAgICAgIFRUX05hbWVFbnRyeVJlYyogIG5hbWUgICA9IGZhY2UtPm5hbWVfdGFibGUubmFtZXMgKyBmb3VuZF9hcHBsZTsKKyAgICAgIEZUX1VJbnQgICAgICAgICAgIGxlbiAgICA9IG5hbWUtPnN0cmluZ0xlbmd0aDsKKyAgICAgIEZUX0Vycm9yICAgICAgICAgIGVycm9yICA9IEZUX0Vycl9PazsKKworICAgICAgRlRfVU5VU0VEKCBlcnJvciApOworCisKKyAgICAgIGlmICggIUZUX0FMTE9DKCByZXN1bHQsIGxlbiArIDEgKSApCisgICAgICB7CisgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gZmFjZS0+bmFtZV90YWJsZS5zdHJlYW07CisKKworICAgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBuYW1lLT5zdHJpbmdPZmZzZXQgKSB8fAorICAgICAgICAgICAgIEZUX1NUUkVBTV9SRUFEKCByZXN1bHQsIGxlbiApICAgICAgICApCisgICAgICAgIHsKKyAgICAgICAgICBuYW1lLT5zdHJpbmdPZmZzZXQgPSAwOworICAgICAgICAgIG5hbWUtPnN0cmluZ0xlbmd0aCA9IDA7CisgICAgICAgICAgRlRfRlJFRSggbmFtZS0+c3RyaW5nICk7CisgICAgICAgICAgRlRfRlJFRSggcmVzdWx0ICk7CisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisgICAgICAgICgoY2hhciopcmVzdWx0KVtsZW5dID0gJ1wwJzsKKyAgICAgIH0KKyAgICB9CisKKyAgRXhpdDoKKyAgICBmYWNlLT5wb3N0c2NyaXB0X25hbWUgPSByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgRlRfREVGSU5FX1NFUlZJQ0VfUFNGT05UTkFNRVJFQygKKyAgICBzZm50X3NlcnZpY2VfcHNfbmFtZSwKKyAgICAoRlRfUHNOYW1lX0dldEZ1bmMpc2ZudF9nZXRfcHNfbmFtZSApCisKKworICAvKgorICAgKiAgVFQgQ01BUCBJTkZPCisgICAqLworICBGVF9ERUZJTkVfU0VSVklDRV9UVENNQVBTUkVDKAorICAgIHR0X3NlcnZpY2VfZ2V0X2NtYXBfaW5mbywKKyAgICAoVFRfQ01hcF9JbmZvX0dldEZ1bmMpdHRfZ2V0X2NtYXBfaW5mbyApCisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fQkRGCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHNmbnRfZ2V0X2NoYXJzZXRfaWQoIFRUX0ZhY2UgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICphY2hhcnNldF9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICphY2hhcnNldF9yZWdpc3RyeSApCisgIHsKKyAgICBCREZfUHJvcGVydHlSZWMgIGVuY29kaW5nLCByZWdpc3RyeTsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yOworCisKKyAgICAvKiBYWFg6IEkgZG9uJ3Qga25vdyB3aGV0aGVyIHRoaXMgaXMgY29ycmVjdCwgc2luY2UKKyAgICAgKiAgICAgIHR0X2ZhY2VfZmluZF9iZGZfcHJvcCBvbmx5IHJldHVybnMgc29tZXRoaW5nIGNvcnJlY3QgaWYgd2UgaGF2ZQorICAgICAqICAgICAgcHJldmlvdXNseSBzZWxlY3RlZCBhIHNpemUgdGhhdCBpcyBsaXN0ZWQgaW4gdGhlIEJERiB0YWJsZS4KKyAgICAgKiAgICAgIFNob3VsZCB3ZSBjaGFuZ2UgdGhlIEJERiB0YWJsZSBmb3JtYXQgdG8gaW5jbHVkZSBzaW5nbGUgb2Zmc2V0cworICAgICAqICAgICAgZm9yIGBDSEFSU0VUX1JFR0lTVFJZJyBhbmQgYENIQVJTRVRfRU5DT0RJTkcnPworICAgICAqLworICAgIGVycm9yID0gdHRfZmFjZV9maW5kX2JkZl9wcm9wKCBmYWNlLCAiQ0hBUlNFVF9SRUdJU1RSWSIsICZyZWdpc3RyeSApOworICAgIGlmICggIWVycm9yICkKKyAgICB7CisgICAgICBlcnJvciA9IHR0X2ZhY2VfZmluZF9iZGZfcHJvcCggZmFjZSwgIkNIQVJTRVRfRU5DT0RJTkciLCAmZW5jb2RpbmcgKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCByZWdpc3RyeS50eXBlID09IEJERl9QUk9QRVJUWV9UWVBFX0FUT00gJiYKKyAgICAgICAgICAgICBlbmNvZGluZy50eXBlID09IEJERl9QUk9QRVJUWV9UWVBFX0FUT00gKQorICAgICAgICB7CisgICAgICAgICAgKmFjaGFyc2V0X2VuY29kaW5nID0gZW5jb2RpbmcudS5hdG9tOworICAgICAgICAgICphY2hhcnNldF9yZWdpc3RyeSA9IHJlZ2lzdHJ5LnUuYXRvbTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfREVGSU5FX1NFUlZJQ0VfQkRGUmVjKAorICAgIHNmbnRfc2VydmljZV9iZGYsCisgICAgKEZUX0JERl9HZXRDaGFyc2V0SWRGdW5jKXNmbnRfZ2V0X2NoYXJzZXRfaWQsCisgICAgKEZUX0JERl9HZXRQcm9wZXJ0eUZ1bmMpIHR0X2ZhY2VfZmluZF9iZGZfcHJvcCApCisKKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fQkRGICovCisKKworICAvKgorICAgKiAgU0VSVklDRSBMSVNUCisgICAqLworCisjaWYgZGVmaW5lZCBUVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMgJiYgZGVmaW5lZCBUVF9DT05GSUdfT1BUSU9OX0JERgorICBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM1KAorICAgIHNmbnRfc2VydmljZXMsCisgICAgRlRfU0VSVklDRV9JRF9TRk5UX1RBQkxFLCAgICAgICAgICAgJlNGTlRfU0VSVklDRV9TRk5UX1RBQkxFX0dFVCwKKyAgICBGVF9TRVJWSUNFX0lEX1BPU1RTQ1JJUFRfRk9OVF9OQU1FLCAmU0ZOVF9TRVJWSUNFX1BTX05BTUVfR0VULAorICAgIEZUX1NFUlZJQ0VfSURfR0xZUEhfRElDVCwgICAgICAgICAgICZTRk5UX1NFUlZJQ0VfR0xZUEhfRElDVF9HRVQsCisgICAgRlRfU0VSVklDRV9JRF9CREYsICAgICAgICAgICAgICAgICAgJlNGTlRfU0VSVklDRV9CREZfR0VULAorICAgIEZUX1NFUlZJQ0VfSURfVFRfQ01BUCwgICAgICAgICAgICAgICZUVF9TRVJWSUNFX0NNQVBfSU5GT19HRVQgKQorI2VsaWYgZGVmaW5lZCBUVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMKKyAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNCgKKyAgICBzZm50X3NlcnZpY2VzLAorICAgIEZUX1NFUlZJQ0VfSURfU0ZOVF9UQUJMRSwgICAgICAgICAgICZTRk5UX1NFUlZJQ0VfU0ZOVF9UQUJMRV9HRVQsCisgICAgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0ZPTlRfTkFNRSwgJlNGTlRfU0VSVklDRV9QU19OQU1FX0dFVCwKKyAgICBGVF9TRVJWSUNFX0lEX0dMWVBIX0RJQ1QsICAgICAgICAgICAmU0ZOVF9TRVJWSUNFX0dMWVBIX0RJQ1RfR0VULAorICAgIEZUX1NFUlZJQ0VfSURfVFRfQ01BUCwgICAgICAgICAgICAgICZUVF9TRVJWSUNFX0NNQVBfSU5GT19HRVQgKQorI2VsaWYgZGVmaW5lZCBUVF9DT05GSUdfT1BUSU9OX0JERgorICBGVF9ERUZJTkVfU0VSVklDRURFU0NSRUM0KAorICAgIHNmbnRfc2VydmljZXMsCisgICAgRlRfU0VSVklDRV9JRF9TRk5UX1RBQkxFLCAgICAgICAgICAgJlNGTlRfU0VSVklDRV9TRk5UX1RBQkxFX0dFVCwKKyAgICBGVF9TRVJWSUNFX0lEX1BPU1RTQ1JJUFRfRk9OVF9OQU1FLCAmU0ZOVF9TRVJWSUNFX1BTX05BTUVfR0VULAorICAgIEZUX1NFUlZJQ0VfSURfQkRGLCAgICAgICAgICAgICAgICAgICZTRk5UX1NFUlZJQ0VfQkRGX0dFVCwKKyAgICBGVF9TRVJWSUNFX0lEX1RUX0NNQVAsICAgICAgICAgICAgICAmVFRfU0VSVklDRV9DTUFQX0lORk9fR0VUICkKKyNlbHNlCisgIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzMoCisgICAgc2ZudF9zZXJ2aWNlcywKKyAgICBGVF9TRVJWSUNFX0lEX1NGTlRfVEFCTEUsICAgICAgICAgICAmU0ZOVF9TRVJWSUNFX1NGTlRfVEFCTEVfR0VULAorICAgIEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9GT05UX05BTUUsICZTRk5UX1NFUlZJQ0VfUFNfTkFNRV9HRVQsCisgICAgRlRfU0VSVklDRV9JRF9UVF9DTUFQLCAgICAgICAgICAgICAgJlRUX1NFUlZJQ0VfQ01BUF9JTkZPX0dFVCApCisjZW5kaWYKKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfTW9kdWxlX0ludGVyZmFjZSApCisgIHNmbnRfZ2V0X2ludGVyZmFjZSggRlRfTW9kdWxlICAgIG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgbW9kdWxlX2ludGVyZmFjZSApCisgIHsKKyAgICAvKiBTRk5UX1NFUlZJQ0VTX0dFVCBkZXJlZmVycyBgbGlicmFyeScgaW4gUElDIG1vZGUgKi8KKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworICAgIEZUX0xpYnJhcnkgIGxpYnJhcnk7CisKKworICAgIGlmICggIW1vZHVsZSApCisgICAgICByZXR1cm4gTlVMTDsKKyAgICBsaWJyYXJ5ID0gbW9kdWxlLT5saWJyYXJ5OworICAgIGlmICggIWxpYnJhcnkgKQorICAgICAgcmV0dXJuIE5VTEw7CisjZWxzZQorICAgIEZUX1VOVVNFRCggbW9kdWxlICk7CisjZW5kaWYKKworICAgIHJldHVybiBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwKCBTRk5UX1NFUlZJQ0VTX0dFVCwgbW9kdWxlX2ludGVyZmFjZSApOworICB9CisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworI2RlZmluZSBQVVRfRU1CRURERURfQklUTUFQUyggYSApICBhCisjZWxzZQorI2RlZmluZSBQVVRfRU1CRURERURfQklUTUFQUyggYSApICBOVUxMCisjZW5kaWYKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUworI2RlZmluZSBQVVRfUFNfTkFNRVMoIGEgKSAgYQorI2Vsc2UKKyNkZWZpbmUgUFVUX1BTX05BTUVTKCBhICkgIE5VTEwKKyNlbmRpZgorCisgIEZUX0RFRklORV9TRk5UX0lOVEVSRkFDRSgKKyAgICBzZm50X2ludGVyZmFjZSwKKyAgICB0dF9mYWNlX2dvdG9fdGFibGUsCisKKyAgICBzZm50X2luaXRfZmFjZSwKKyAgICBzZm50X2xvYWRfZmFjZSwKKyAgICBzZm50X2RvbmVfZmFjZSwKKyAgICBzZm50X2dldF9pbnRlcmZhY2UsCisKKyAgICB0dF9mYWNlX2xvYWRfYW55LAorCisgICAgdHRfZmFjZV9sb2FkX2hlYWQsCisgICAgdHRfZmFjZV9sb2FkX2hoZWEsCisgICAgdHRfZmFjZV9sb2FkX2NtYXAsCisgICAgdHRfZmFjZV9sb2FkX21heHAsCisgICAgdHRfZmFjZV9sb2FkX29zMiwKKyAgICB0dF9mYWNlX2xvYWRfcG9zdCwKKworICAgIHR0X2ZhY2VfbG9hZF9uYW1lLAorICAgIHR0X2ZhY2VfZnJlZV9uYW1lLAorCisgICAgdHRfZmFjZV9sb2FkX2tlcm4sCisgICAgdHRfZmFjZV9sb2FkX2dhc3AsCisgICAgdHRfZmFjZV9sb2FkX3BjbHQsCisKKyAgICAvKiBzZWUgYHR0bG9hZC5oJyAqLworICAgIFBVVF9FTUJFRERFRF9CSVRNQVBTKCB0dF9mYWNlX2xvYWRfYmhlZCApLAorCisgICAgUFVUX0VNQkVEREVEX0JJVE1BUFMoIHR0X2ZhY2VfbG9hZF9zYml0X2ltYWdlICksCisKKyAgICAvKiBzZWUgYHR0cG9zdC5oJyAqLworICAgIFBVVF9QU19OQU1FUyggdHRfZmFjZV9nZXRfcHNfbmFtZSAgICksCisgICAgUFVUX1BTX05BTUVTKCB0dF9mYWNlX2ZyZWVfcHNfbmFtZXMgKSwKKworICAgIC8qIHNpbmNlIHZlcnNpb24gMi4xLjggKi8KKyAgICB0dF9mYWNlX2dldF9rZXJuaW5nLAorCisgICAgLyogc2luY2UgdmVyc2lvbiAyLjIgKi8KKyAgICB0dF9mYWNlX2xvYWRfZm9udF9kaXIsCisgICAgdHRfZmFjZV9sb2FkX2htdHgsCisKKyAgICAvKiBzZWUgYHR0c2JpdC5oJyBhbmQgYHNmbnQuaCcgKi8KKyAgICBQVVRfRU1CRURERURfQklUTUFQUyggdHRfZmFjZV9sb2FkX2VibGMgKSwKKyAgICBQVVRfRU1CRURERURfQklUTUFQUyggdHRfZmFjZV9mcmVlX2VibGMgKSwKKworICAgIFBVVF9FTUJFRERFRF9CSVRNQVBTKCB0dF9mYWNlX3NldF9zYml0X3N0cmlrZSAgICAgKSwKKyAgICBQVVRfRU1CRURERURfQklUTUFQUyggdHRfZmFjZV9sb2FkX3N0cmlrZV9tZXRyaWNzICksCisKKyAgICB0dF9mYWNlX2dldF9tZXRyaWNzCisgICkKKworCisgIEZUX0RFRklORV9NT0RVTEUoCisgICAgc2ZudF9tb2R1bGVfY2xhc3MsCisKKyAgICAwLCAgLyogbm90IGEgZm9udCBkcml2ZXIgb3IgcmVuZGVyZXIgKi8KKyAgICBzaXplb2YgKCBGVF9Nb2R1bGVSZWMgKSwKKworICAgICJzZm50IiwgICAgIC8qIGRyaXZlciBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgMHgxMDAwMEwsICAgLyogZHJpdmVyIHZlcnNpb24gMS4wICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAweDIwMDAwTCwgICAvKiBkcml2ZXIgcmVxdWlyZXMgRnJlZVR5cGUgMi4wIG9yIGhpZ2hlciAqLworCisgICAgKGNvbnN0IHZvaWQqKSZTRk5UX0lOVEVSRkFDRV9HRVQsICAvKiBtb2R1bGUgc3BlY2lmaWMgaW50ZXJmYWNlICovCisKKyAgICAoRlRfTW9kdWxlX0NvbnN0cnVjdG9yKTAsCisgICAgKEZUX01vZHVsZV9EZXN0cnVjdG9yKSAwLAorICAgIChGVF9Nb2R1bGVfUmVxdWVzdGVyKSAgc2ZudF9nZXRfaW50ZXJmYWNlICkKKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9zZmRyaXZlci5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3NmZHJpdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M3NDNmOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9zZmRyaXZlci5oCkBAIC0wLDAgKzEsMzggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHNmZHJpdmVyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBIaWdoLWxldmVsIFNGTlQgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NGRFJJVkVSX0hfXworI2RlZmluZSBfX1NGRFJJVkVSX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1vZGFwaS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfREVDTEFSRV9NT0RVTEUoIHNmbnRfbW9kdWxlX2NsYXNzICkKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1NGRFJJVkVSX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3NmZXJyb3JzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvc2ZlcnJvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzEzNzA3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3NmZXJyb3JzLmgKQEAgLTAsMCArMSw0MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc2ZlcnJvcnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFNGTlQgZXJyb3IgY29kZXMgKHNwZWNpZmljYXRpb24gb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAxLCAyMDA0LCAyMDEyLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBTRk5UIGVycm9yIGVudW1lcmF0aW9uIGNvbnN0YW50cy4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX1NGRVJST1JTX0hfXworI2RlZmluZSBfX1NGRVJST1JTX0hfXworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oIgorCisjdW5kZWYgX19GVEVSUk9SU19IX18KKworI3VuZGVmICBGVF9FUlJfUFJFRklYCisjZGVmaW5lIEZUX0VSUl9QUkVGSVggIFNGTlRfRXJyXworI2RlZmluZSBGVF9FUlJfQkFTRSAgICBGVF9Nb2RfRXJyX1NGTlQKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCIKKworI2VuZGlmIC8qIF9fU0ZFUlJPUlNfSF9fICovCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3NmbnRwaWMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9zZm50cGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QzNGVlZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9zZm50cGljLmMKQEAgLTAsMCArMSwxNDMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHNmbnRwaWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSBzZXJ2aWNlcyBmb3Igc2ZudCBtb2R1bGUuICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOSwgMjAxMCwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICJzZm50cGljLmgiCisjaW5jbHVkZSAic2ZlcnJvcnMuaCIKKworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworICAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIFBJQyBpbml0IGZ1bmN0aW9ucyBmcm9tIHNmZHJpdmVyLmMgKi8KKyAgRlRfRXJyb3IKKyAgRlRfQ3JlYXRlX0NsYXNzX3NmbnRfc2VydmljZXMoIEZUX0xpYnJhcnkgICAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyoqICBvdXRwdXRfY2xhc3MgKTsKKyAgdm9pZAorICBGVF9EZXN0cm95X0NsYXNzX3NmbnRfc2VydmljZXMoIEZUX0xpYnJhcnkgICAgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICk7CisgIHZvaWQKKyAgRlRfSW5pdF9DbGFzc19zZm50X3NlcnZpY2VfYmRmKCBGVF9TZXJ2aWNlX0JERlJlYyogIGNsYXp6ICk7CisgIHZvaWQKKyAgRlRfSW5pdF9DbGFzc19zZm50X2ludGVyZmFjZSggRlRfTGlicmFyeSAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRk5UX0ludGVyZmFjZSogIGNsYXp6ICk7CisgIHZvaWQKKyAgRlRfSW5pdF9DbGFzc19zZm50X3NlcnZpY2VfZ2x5cGhfZGljdCgKKyAgICBGVF9MaWJyYXJ5ICAgICAgICAgICAgICAgIGxpYnJhcnksCisgICAgRlRfU2VydmljZV9HbHlwaERpY3RSZWMqICBjbGF6eiApOworICB2b2lkCisgIEZUX0luaXRfQ2xhc3Nfc2ZudF9zZXJ2aWNlX3BzX25hbWUoCisgICAgRlRfTGlicmFyeSAgICAgICAgICAgICAgICAgbGlicmFyeSwKKyAgICBGVF9TZXJ2aWNlX1BzRm9udE5hbWVSZWMqICBjbGF6eiApOworICB2b2lkCisgIEZUX0luaXRfQ2xhc3NfdHRfc2VydmljZV9nZXRfY21hcF9pbmZvKAorICAgIEZUX0xpYnJhcnkgICAgICAgICAgICAgIGxpYnJhcnksCisgICAgRlRfU2VydmljZV9UVENNYXBzUmVjKiAgY2xhenogKTsKKyAgdm9pZAorICBGVF9Jbml0X0NsYXNzX3NmbnRfc2VydmljZV9zZm50X3RhYmxlKAorICAgIEZUX1NlcnZpY2VfU0ZOVF9UYWJsZVJlYyogIGNsYXp6ICk7CisKKworICAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIFBJQyBpbml0IGZ1bmN0aW9ucyBmcm9tIHR0Y21hcC5jICovCisgIEZUX0Vycm9yCisgIEZUX0NyZWF0ZV9DbGFzc190dF9jbWFwX2NsYXNzZXMoIEZUX0xpYnJhcnkgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfQ01hcF9DbGFzcyoqICBvdXRwdXRfY2xhc3MgKTsKKyAgdm9pZAorICBGVF9EZXN0cm95X0NsYXNzX3R0X2NtYXBfY2xhc3NlcyggRlRfTGlicmFyeSAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVF9DTWFwX0NsYXNzKiAgY2xhenogKTsKKworCisgIHZvaWQKKyAgc2ZudF9tb2R1bGVfY2xhc3NfcGljX2ZyZWUoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKQorICB7CisgICAgRlRfUElDX0NvbnRhaW5lciogIHBpY19jb250YWluZXIgPSAmbGlicmFyeS0+cGljX2NvbnRhaW5lcjsKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5ICAgICAgICA9IGxpYnJhcnktPm1lbW9yeTsKKworCisgICAgaWYgKCBwaWNfY29udGFpbmVyLT5zZm50ICkKKyAgICB7CisgICAgICBzZm50TW9kdWxlUElDKiAgY29udGFpbmVyID0gKHNmbnRNb2R1bGVQSUMqKXBpY19jb250YWluZXItPnNmbnQ7CisKKworICAgICAgaWYgKCBjb250YWluZXItPnNmbnRfc2VydmljZXMgKQorICAgICAgICBGVF9EZXN0cm95X0NsYXNzX3NmbnRfc2VydmljZXMoIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLT5zZm50X3NlcnZpY2VzICk7CisgICAgICBjb250YWluZXItPnNmbnRfc2VydmljZXMgPSBOVUxMOworCisgICAgICBpZiAoIGNvbnRhaW5lci0+dHRfY21hcF9jbGFzc2VzICkKKyAgICAgICAgRlRfRGVzdHJveV9DbGFzc190dF9jbWFwX2NsYXNzZXMoIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXItPnR0X2NtYXBfY2xhc3NlcyApOworICAgICAgY29udGFpbmVyLT50dF9jbWFwX2NsYXNzZXMgPSBOVUxMOworCisgICAgICBGVF9GUkVFKCBjb250YWluZXIgKTsKKyAgICAgIHBpY19jb250YWluZXItPnNmbnQgPSBOVUxMOworICAgIH0KKyAgfQorCisKKyAgRlRfRXJyb3IKKyAgc2ZudF9tb2R1bGVfY2xhc3NfcGljX2luaXQoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKQorICB7CisgICAgRlRfUElDX0NvbnRhaW5lciogIHBpY19jb250YWluZXIgPSAmbGlicmFyeS0+cGljX2NvbnRhaW5lcjsKKyAgICBGVF9FcnJvciAgICAgICAgICAgZXJyb3IgICAgICAgICA9IEZUX0Vycl9PazsKKyAgICBzZm50TW9kdWxlUElDKiAgICAgY29udGFpbmVyICAgICA9IE5VTEw7CisgICAgRlRfTWVtb3J5ICAgICAgICAgIG1lbW9yeSAgICAgICAgPSBsaWJyYXJ5LT5tZW1vcnk7CisKKworICAgIC8qIGFsbG9jYXRlIHBvaW50ZXIsIGNsZWFyIGFuZCBzZXQgZ2xvYmFsIGNvbnRhaW5lciBwb2ludGVyICovCisgICAgaWYgKCBGVF9BTExPQyggY29udGFpbmVyLCBzaXplb2YgKCAqY29udGFpbmVyICkgKSApCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgRlRfTUVNX1NFVCggY29udGFpbmVyLCAwLCBzaXplb2YgKCAqY29udGFpbmVyICkgKTsKKyAgICBwaWNfY29udGFpbmVyLT5zZm50ID0gY29udGFpbmVyOworCisgICAgLyogaW5pdGlhbGl6ZSBwb2ludGVyIHRhYmxlIC0gICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogdGhpcyBpcyBob3cgdGhlIG1vZHVsZSB1c3VhbGx5IGV4cGVjdHMgdGhpcyBkYXRhICovCisgICAgZXJyb3IgPSBGVF9DcmVhdGVfQ2xhc3Nfc2ZudF9zZXJ2aWNlcyggbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGFpbmVyLT5zZm50X3NlcnZpY2VzICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBlcnJvciA9IEZUX0NyZWF0ZV9DbGFzc190dF9jbWFwX2NsYXNzZXMoIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGFpbmVyLT50dF9jbWFwX2NsYXNzZXMgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIEZUX0luaXRfQ2xhc3Nfc2ZudF9zZXJ2aWNlX2dseXBoX2RpY3QoCisgICAgICBsaWJyYXJ5LCAmY29udGFpbmVyLT5zZm50X3NlcnZpY2VfZ2x5cGhfZGljdCApOworICAgIEZUX0luaXRfQ2xhc3Nfc2ZudF9zZXJ2aWNlX3BzX25hbWUoCisgICAgICBsaWJyYXJ5LCAmY29udGFpbmVyLT5zZm50X3NlcnZpY2VfcHNfbmFtZSApOworICAgIEZUX0luaXRfQ2xhc3NfdHRfc2VydmljZV9nZXRfY21hcF9pbmZvKAorICAgICAgbGlicmFyeSwgJmNvbnRhaW5lci0+dHRfc2VydmljZV9nZXRfY21hcF9pbmZvICk7CisgICAgRlRfSW5pdF9DbGFzc19zZm50X3NlcnZpY2Vfc2ZudF90YWJsZSgKKyAgICAgICZjb250YWluZXItPnNmbnRfc2VydmljZV9zZm50X3RhYmxlICk7CisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9CREYKKyAgICBGVF9Jbml0X0NsYXNzX3NmbnRfc2VydmljZV9iZGYoICZjb250YWluZXItPnNmbnRfc2VydmljZV9iZGYgKTsKKyNlbmRpZgorICAgIEZUX0luaXRfQ2xhc3Nfc2ZudF9pbnRlcmZhY2UoIGxpYnJhcnksICZjb250YWluZXItPnNmbnRfaW50ZXJmYWNlICk7CisKKyAgRXhpdDoKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHNmbnRfbW9kdWxlX2NsYXNzX3BpY19mcmVlKCBsaWJyYXJ5ICk7CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3NmbnRwaWMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9zZm50cGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcwZjIyOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9zZm50cGljLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHNmbnRwaWMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSBzZXJ2aWNlcyBmb3Igc2ZudCBtb2R1bGUuICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NGTlRQSUNfSF9fCisjZGVmaW5lIF9fU0ZOVFBJQ19IX18KKworCitGVF9CRUdJTl9IRUFERVIKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRwaWMuaCIKKworCisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisKKyNkZWZpbmUgU0ZOVF9TRVJWSUNFU19HRVQgICAgICAgICAgICBzZm50X3NlcnZpY2VzCisjZGVmaW5lIFNGTlRfU0VSVklDRV9HTFlQSF9ESUNUX0dFVCAgc2ZudF9zZXJ2aWNlX2dseXBoX2RpY3QKKyNkZWZpbmUgU0ZOVF9TRVJWSUNFX1BTX05BTUVfR0VUICAgICBzZm50X3NlcnZpY2VfcHNfbmFtZQorI2RlZmluZSBUVF9TRVJWSUNFX0NNQVBfSU5GT19HRVQgICAgIHR0X3NlcnZpY2VfZ2V0X2NtYXBfaW5mbworI2RlZmluZSBTRk5UX1NFUlZJQ0VTX0dFVCAgICAgICAgICAgIHNmbnRfc2VydmljZXMKKyNkZWZpbmUgVFRfQ01BUF9DTEFTU0VTX0dFVCAgICAgICAgICB0dF9jbWFwX2NsYXNzZXMKKyNkZWZpbmUgU0ZOVF9TRVJWSUNFX1NGTlRfVEFCTEVfR0VUICBzZm50X3NlcnZpY2Vfc2ZudF90YWJsZQorI2RlZmluZSBTRk5UX1NFUlZJQ0VfQkRGX0dFVCAgICAgICAgIHNmbnRfc2VydmljZV9iZGYKKyNkZWZpbmUgU0ZOVF9JTlRFUkZBQ0VfR0VUICAgICAgICAgICBzZm50X2ludGVyZmFjZQorCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgIC8qIHNvbWUgaW5jbHVkZSBmaWxlcyByZXF1aXJlZCBmb3IgbWVtYmVycyBvZiBzZm50TW9kdWxlUElDICovCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmdsZGljdC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwb3N0bm0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2c2ZudC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGNtYXAuaCIKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fQkRGCisjaW5jbHVkZSAidHRiZGYuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2YmRmLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCIKKyNpbmNsdWRlICJ0dGNtYXAuaCIKKworCisgIHR5cGVkZWYgc3RydWN0ICBzZm50TW9kdWxlUElDXworICB7CisgICAgRlRfU2VydmljZURlc2NSZWMqICAgICAgICBzZm50X3NlcnZpY2VzOworICAgIEZUX1NlcnZpY2VfR2x5cGhEaWN0UmVjICAgc2ZudF9zZXJ2aWNlX2dseXBoX2RpY3Q7CisgICAgRlRfU2VydmljZV9Qc0ZvbnROYW1lUmVjICBzZm50X3NlcnZpY2VfcHNfbmFtZTsKKyAgICBGVF9TZXJ2aWNlX1RUQ01hcHNSZWMgICAgIHR0X3NlcnZpY2VfZ2V0X2NtYXBfaW5mbzsKKyAgICBUVF9DTWFwX0NsYXNzKiAgICAgICAgICAgIHR0X2NtYXBfY2xhc3NlczsKKyAgICBGVF9TZXJ2aWNlX1NGTlRfVGFibGVSZWMgIHNmbnRfc2VydmljZV9zZm50X3RhYmxlOworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fQkRGCisgICAgRlRfU2VydmljZV9CREZSZWMgICAgICAgICBzZm50X3NlcnZpY2VfYmRmOworI2VuZGlmCisgICAgU0ZOVF9JbnRlcmZhY2UgICAgICAgICAgICBzZm50X2ludGVyZmFjZTsKKworICB9IHNmbnRNb2R1bGVQSUM7CisKKworI2RlZmluZSBHRVRfUElDKCBsaWIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggKHNmbnRNb2R1bGVQSUMqKSggKGxpYiktPnBpY19jb250YWluZXIuc2ZudCApICkKKworI2RlZmluZSBTRk5UX1NFUlZJQ0VTX0dFVCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT5zZm50X3NlcnZpY2VzICkKKyNkZWZpbmUgU0ZOVF9TRVJWSUNFX0dMWVBIX0RJQ1RfR0VUICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBHRVRfUElDKCBsaWJyYXJ5ICktPnNmbnRfc2VydmljZV9nbHlwaF9kaWN0ICkKKyNkZWZpbmUgU0ZOVF9TRVJWSUNFX1BTX05BTUVfR0VUICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBHRVRfUElDKCBsaWJyYXJ5ICktPnNmbnRfc2VydmljZV9wc19uYW1lICkKKyNkZWZpbmUgVFRfU0VSVklDRV9DTUFQX0lORk9fR0VUICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT50dF9zZXJ2aWNlX2dldF9jbWFwX2luZm8gKQorI2RlZmluZSBTRk5UX1NFUlZJQ0VTX0dFVCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT5zZm50X3NlcnZpY2VzICkKKyNkZWZpbmUgVFRfQ01BUF9DTEFTU0VTX0dFVCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT50dF9jbWFwX2NsYXNzZXMgKQorI2RlZmluZSBTRk5UX1NFUlZJQ0VfU0ZOVF9UQUJMRV9HRVQgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEdFVF9QSUMoIGxpYnJhcnkgKS0+c2ZudF9zZXJ2aWNlX3NmbnRfdGFibGUgKQorI2RlZmluZSBTRk5UX1NFUlZJQ0VfQkRGX0dFVCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT5zZm50X3NlcnZpY2VfYmRmICkKKyNkZWZpbmUgU0ZOVF9JTlRFUkZBQ0VfR0VUICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBHRVRfUElDKCBsaWJyYXJ5ICktPnNmbnRfaW50ZXJmYWNlICkKKworCisgIC8qIHNlZSBzZm50cGljLmMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiAqLworICB2b2lkCisgIHNmbnRfbW9kdWxlX2NsYXNzX3BpY19mcmVlKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKyAgRlRfRXJyb3IKKyAgc2ZudF9tb2R1bGVfY2xhc3NfcGljX2luaXQoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAgLyogKi8KKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19TRk5UUElDX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3Nmb2Jqcy5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3Nmb2Jqcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNWEzODgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvc2ZvYmpzLmMKQEAgLTAsMCArMSwxMTY1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBzZm9ianMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgU0ZOVCBvYmplY3QgbWFuYWdlbWVudCAoYmFzZSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwOCwgMjAxMC0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAic2ZvYmpzLmgiCisjaW5jbHVkZSAidHRsb2FkLmgiCisjaW5jbHVkZSAidHRjbWFwLmgiCisjaW5jbHVkZSAidHRrZXJuLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzY21hcC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRzbmFtZXMuaCIKKyNpbmNsdWRlICJzZmVycm9ycy5oIgorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9CREYKKyNpbmNsdWRlICJ0dGJkZi5oIgorI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9zZm9ianMKKworCisKKyAgLyogY29udmVydCBhIFVURi0xNiBuYW1lIGVudHJ5IHRvIEFTQ0lJICovCisgIHN0YXRpYyBGVF9TdHJpbmcqCisgIHR0X25hbWVfZW50cnlfYXNjaWlfZnJvbV91dGYxNiggVFRfTmFtZUVudHJ5ICBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgIG1lbW9yeSApCisgIHsKKyAgICBGVF9TdHJpbmcqICBzdHJpbmcgPSBOVUxMOworICAgIEZUX1VJbnQgICAgIGxlbiwgY29kZSwgbjsKKyAgICBGVF9CeXRlKiAgICByZWFkICAgPSAoRlRfQnl0ZSopZW50cnktPnN0cmluZzsKKyAgICBGVF9FcnJvciAgICBlcnJvcjsKKworCisgICAgbGVuID0gKEZUX1VJbnQpZW50cnktPnN0cmluZ0xlbmd0aCAvIDI7CisKKyAgICBpZiAoIEZUX05FV19BUlJBWSggc3RyaW5nLCBsZW4gKyAxICkgKQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKCBuID0gMDsgbiA8IGxlbjsgbisrICkKKyAgICB7CisgICAgICBjb2RlID0gRlRfTkVYVF9VU0hPUlQoIHJlYWQgKTsKKworICAgICAgaWYgKCBjb2RlID09IDAgKQorICAgICAgICBicmVhazsKKworICAgICAgaWYgKGNvZGUgPiAyNTUpIC8qSm9obnNvbiAyMDEwLTEwLTA5LCAjVEVTVERPQzowMDAwMDQyX1FVVDIwMDA1XzUucGRmLiovCisJCSAgY29kZSA9IGNvZGU+PjgmMHgwMGZmOworCSAgaWYgKCBjb2RlIDwgMzIgfHwgY29kZSA+IDEyNyApCisgICAgICAgIGNvZGUgPSAnPyc7CisKKyAgICAgIHN0cmluZ1tuXSA9IChjaGFyKWNvZGU7CisgICAgfQorCisgICAgc3RyaW5nW25dID0gMDsKKworICAgIHJldHVybiBzdHJpbmc7CisgIH0KKworCisgIC8qIGNvbnZlcnQgYW4gQXBwbGUgUm9tYW4gb3Igc3ltYm9sIG5hbWUgZW50cnkgdG8gQVNDSUkgKi8KKyAgc3RhdGljIEZUX1N0cmluZyoKKyAgdHRfbmFtZV9lbnRyeV9hc2NpaV9mcm9tX290aGVyKCBUVF9OYW1lRW50cnkgIGVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ICkKKyAgeworICAgIEZUX1N0cmluZyogIHN0cmluZyA9IE5VTEw7CisgICAgRlRfVUludCAgICAgbGVuLCBjb2RlLCBuOworICAgIEZUX0J5dGUqICAgIHJlYWQgICA9IChGVF9CeXRlKillbnRyeS0+c3RyaW5nOworICAgIEZUX0Vycm9yICAgIGVycm9yOworCisKKyAgICBsZW4gPSAoRlRfVUludCllbnRyeS0+c3RyaW5nTGVuZ3RoOworCisgICAgaWYgKCBGVF9ORVdfQVJSQVkoIHN0cmluZywgbGVuICsgMSApICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yICggbiA9IDA7IG4gPCBsZW47IG4rKyApCisgICAgeworICAgICAgY29kZSA9ICpyZWFkKys7CisKKyAgICAgIGlmICggY29kZSA9PSAwICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGlmICggY29kZSA8IDMyIHx8IGNvZGUgPiAxMjcgKQorICAgICAgICBjb2RlID0gJz8nOworCisgICAgICBzdHJpbmdbbl0gPSAoY2hhciljb2RlOworICAgIH0KKworICAgIHN0cmluZ1tuXSA9IDA7CisKKyAgICByZXR1cm4gc3RyaW5nOworICB9CisKKworICB0eXBlZGVmIEZUX1N0cmluZyogICgqVFRfTmFtZUVudHJ5X0NvbnZlcnRGdW5jKSggVFRfTmFtZUVudHJ5ICBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX01lbW9yeSAgICAgbWVtb3J5ICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9mYWNlX2dldF9uYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZXR1cm5zIGEgZ2l2ZW4gRU5HTElTSCBuYW1lIHJlY29yZCBpbiBBU0NJSS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWVpZCA6OiBUaGUgbmFtZSBpZCBvZiB0aGUgbmFtZSByZWNvcmQgdG8gcmV0dXJuLiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5hbWUgICA6OiBUaGUgYWRkcmVzcyBvZiBhIHN0cmluZyBwb2ludGVyLiAgTlVMTCBpZiBubyBuYW1lIGlzICAgICAqLworICAvKiAgICAgICAgICAgICAgcHJlc2VudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICB0dF9mYWNlX2dldF9uYW1lKCBUVF9GYWNlICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0ICAgIG5hbWVpZCwKKyAgICAgICAgICAgICAgICAgICAgRlRfU3RyaW5nKiogIG5hbWUgKQorICB7CisgICAgRlRfTWVtb3J5ICAgICAgICAgbWVtb3J5ID0gZmFjZS0+cm9vdC5tZW1vcnk7CisgICAgRlRfRXJyb3IgICAgICAgICAgZXJyb3IgID0gRlRfRXJyX09rOworICAgIEZUX1N0cmluZyogICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgRlRfVVNob3J0ICAgICAgICAgbjsKKyAgICBUVF9OYW1lRW50cnlSZWMqICByZWM7CisgICAgRlRfSW50ICAgICAgICAgICAgZm91bmRfYXBwbGUgICAgICAgICA9IC0xOworICAgIEZUX0ludCAgICAgICAgICAgIGZvdW5kX2FwcGxlX3JvbWFuICAgPSAtMTsKKyAgICBGVF9JbnQgICAgICAgICAgICBmb3VuZF9hcHBsZV9lbmdsaXNoID0gLTE7CisgICAgRlRfSW50ICAgICAgICAgICAgZm91bmRfd2luICAgICAgICAgICA9IC0xOworICAgIEZUX0ludCAgICAgICAgICAgIGZvdW5kX3VuaWNvZGUgICAgICAgPSAtMTsKKworICAgIEZUX0Jvb2wgICAgICAgICAgIGlzX2VuZ2xpc2ggPSAwOworCisgICAgVFRfTmFtZUVudHJ5X0NvbnZlcnRGdW5jICBjb252ZXJ0OworCisKKyAgICBGVF9BU1NFUlQoIG5hbWUgKTsKKworICAgIHJlYyA9IGZhY2UtPm5hbWVfdGFibGUubmFtZXM7CisgICAgZm9yICggbiA9IDA7IG4gPCBmYWNlLT5udW1fbmFtZXM7IG4rKywgcmVjKysgKQorICAgIHsKKyAgICAgIC8qIEFjY29yZGluZyB0byB0aGUgT3BlblR5cGUgMS4zIHNwZWNpZmljYXRpb24sIG9ubHkgTWljcm9zb2Z0IG9yICAqLworICAgICAgLyogQXBwbGUgcGxhdGZvcm0gSURzIG1pZ2h0IGJlIHVzZWQgaW4gdGhlIGBuYW1lJyB0YWJsZS4gIFRoZSAgICAgICovCisgICAgICAvKiBgVW5pY29kZScgcGxhdGZvcm0gaXMgcmVzZXJ2ZWQgZm9yIHRoZSBgY21hcCcgdGFibGUsIGFuZCB0aGUgICAgKi8KKyAgICAgIC8qIGBJU08nIG9uZSBpcyBkZXByZWNhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBIb3dldmVyLCB0aGUgQXBwbGUgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbiBkb2Vzbid0IHNheSB0aGUgc2FtZSAgKi8KKyAgICAgIC8qIHRoaW5nIGFuZCBnb2VzIHRvIHN1Z2dlc3QgdGhhdCBhbGwgVW5pY29kZSBgbmFtZScgdGFibGUgZW50cmllcyAqLworICAgICAgLyogc2hvdWxkIGJlIGNvZGVkIGluIFVURi0xNiAoaW4gYmlnLWVuZGlhbiBmb3JtYXQgSSBzdXBwb3NlKS4gICAgICovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGlmICggcmVjLT5uYW1lSUQgPT0gbmFtZWlkICYmIHJlYy0+c3RyaW5nTGVuZ3RoID4gMCApCisgICAgICB7CisgICAgICAgIHN3aXRjaCAoIHJlYy0+cGxhdGZvcm1JRCApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBUVF9QTEFURk9STV9BUFBMRV9VTklDT0RFOgorICAgICAgICBjYXNlIFRUX1BMQVRGT1JNX0lTTzoKKyAgICAgICAgICAvKiB0aGVyZSBpcyBgbGFuZ3VhZ2VJRCcgdG8gY2hlY2sgdGhlcmUuICBXZSBzaG91bGQgdXNlIHRoaXMgKi8KKyAgICAgICAgICAvKiBmaWVsZCBvbmx5IGFzIGEgbGFzdCBzb2x1dGlvbiB3aGVuIG5vdGhpbmcgZWxzZSBpcyAgICAgICAgKi8KKyAgICAgICAgICAvKiBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICBmb3VuZF91bmljb2RlID0gbjsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRUX1BMQVRGT1JNX01BQ0lOVE9TSDoKKyAgICAgICAgICAvKiBUaGlzIGlzIGEgYml0IHNwZWNpYWwgYmVjYXVzZSBzb21lIGZvbnRzIHdpbGwgdXNlIGVpdGhlciAgICAqLworICAgICAgICAgIC8qIGFuIEVuZ2xpc2ggbGFuZ3VhZ2UgaWQsIG9yIGEgUm9tYW4gZW5jb2RpbmcgaWQsIHRvIGluZGljYXRlICovCisgICAgICAgICAgLyogdGhlIEVuZ2xpc2ggdmVyc2lvbiBvZiBpdHMgZm9udCBuYW1lLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIGlmICggcmVjLT5sYW5ndWFnZUlEID09IFRUX01BQ19MQU5HSURfRU5HTElTSCApCisgICAgICAgICAgICBmb3VuZF9hcHBsZV9lbmdsaXNoID0gbjsKKyAgICAgICAgICBlbHNlIGlmICggcmVjLT5lbmNvZGluZ0lEID09IFRUX01BQ19JRF9ST01BTiApCisgICAgICAgICAgICBmb3VuZF9hcHBsZV9yb21hbiA9IG47CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUVF9QTEFURk9STV9NSUNST1NPRlQ6CisgICAgICAgICAgLyogd2Ugb25seSB0YWtlIGEgbm9uLUVuZ2xpc2ggbmFtZSB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgKi8KKyAgICAgICAgICAvKiBlbHNlIGF2YWlsYWJsZSBpbiB0aGUgZm9udCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgaWYgKCBmb3VuZF93aW4gPT0gLTEgfHwgKCByZWMtPmxhbmd1YWdlSUQgJiAweDNGRiApID09IDB4MDA5ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKCByZWMtPmVuY29kaW5nSUQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBUVF9NU19JRF9TWU1CT0xfQ1M6CisgICAgICAgICAgICBjYXNlIFRUX01TX0lEX1VOSUNPREVfQ1M6CisgICAgICAgICAgICBjYXNlIFRUX01TX0lEX1VDU180OgorICAgICAgICAgICAgICBpc19lbmdsaXNoID0gRlRfQk9PTCggKCByZWMtPmxhbmd1YWdlSUQgJiAweDNGRiApID09IDB4MDA5ICk7CisgICAgICAgICAgICAgIGZvdW5kX3dpbiAgPSBuOworICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGZvdW5kX2FwcGxlID0gZm91bmRfYXBwbGVfcm9tYW47CisgICAgaWYgKCBmb3VuZF9hcHBsZV9lbmdsaXNoID49IDAgKQorICAgICAgZm91bmRfYXBwbGUgPSBmb3VuZF9hcHBsZV9lbmdsaXNoOworCisgICAgLyogc29tZSBmb250cyBjb250YWluIGludmFsaWQgVW5pY29kZSBvciBNYWNpbnRvc2ggZm9ybWF0dGVkIGVudHJpZXM7ICovCisgICAgLyogd2Ugd2lsbCB0aHVzIGZhdm9yIG5hbWVzIGVuY29kZWQgaW4gV2luZG93cyBmb3JtYXRzIGlmIGF2YWlsYWJsZSAgICovCisgICAgLyogKHByb3ZpZGVkIGl0IGlzIGFuIEVuZ2xpc2ggbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgY29udmVydCA9IE5VTEw7CisgICAgaWYgKCBmb3VuZF93aW4gPj0gMCAmJiAhKCBmb3VuZF9hcHBsZSA+PSAwICYmICFpc19lbmdsaXNoICkgKQorICAgIHsKKyAgICAgIHJlYyA9IGZhY2UtPm5hbWVfdGFibGUubmFtZXMgKyBmb3VuZF93aW47CisgICAgICBzd2l0Y2ggKCByZWMtPmVuY29kaW5nSUQgKQorICAgICAgeworICAgICAgICAvKiBhbGwgVW5pY29kZSBzdHJpbmdzIGFyZSBlbmNvZGVkIHVzaW5nIFVURi0xNkJFICovCisgICAgICBjYXNlIFRUX01TX0lEX1VOSUNPREVfQ1M6CisgICAgICBjYXNlIFRUX01TX0lEX1NZTUJPTF9DUzoKKyAgICAgICAgY29udmVydCA9IHR0X25hbWVfZW50cnlfYXNjaWlfZnJvbV91dGYxNjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgVFRfTVNfSURfVUNTXzQ6CisgICAgICAgIC8qIEFwcGFyZW50bHksIGlmIHRoaXMgdmFsdWUgaXMgZm91bmQgaW4gYSBuYW1lIHRhYmxlIGVudHJ5LCBpdCBpcyAqLworICAgICAgICAvKiBkb2N1bWVudGVkIGFzIGBmdWxsIFVuaWNvZGUgcmVwZXJ0b2lyZScuICBFeHBlcmllbmNlIHdpdGggdGhlICAgKi8KKyAgICAgICAgLyogTXNHb3RoaWMgZm9udCBzaGlwcGVkIHdpdGggV2luZG93cyBWaXN0YSBzaG93cyB0aGF0IHRoaXMgcmVhbGx5ICovCisgICAgICAgIC8qIG1lYW5zIFVURi0xNiBlbmNvZGVkIG5hbWVzIChVQ1MtNCB2YWx1ZXMgYXJlIG9ubHkgdXNlZCB3aXRoaW4gICAqLworICAgICAgICAvKiBjaGFybWFwcykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgY29udmVydCA9IHR0X25hbWVfZW50cnlfYXNjaWlfZnJvbV91dGYxNjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIDsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoIGZvdW5kX2FwcGxlID49IDAgKQorICAgIHsKKyAgICAgIHJlYyAgICAgPSBmYWNlLT5uYW1lX3RhYmxlLm5hbWVzICsgZm91bmRfYXBwbGU7CisgICAgICBjb252ZXJ0ID0gdHRfbmFtZV9lbnRyeV9hc2NpaV9mcm9tX290aGVyOworICAgIH0KKyAgICBlbHNlIGlmICggZm91bmRfdW5pY29kZSA+PSAwICkKKyAgICB7CisgICAgICByZWMgICAgID0gZmFjZS0+bmFtZV90YWJsZS5uYW1lcyArIGZvdW5kX3VuaWNvZGU7CisgICAgICBjb252ZXJ0ID0gdHRfbmFtZV9lbnRyeV9hc2NpaV9mcm9tX3V0ZjE2OworICAgIH0KKworICAgIGlmICggcmVjICYmIGNvbnZlcnQgKQorICAgIHsKKyAgICAgIGlmICggcmVjLT5zdHJpbmcgPT0gTlVMTCApCisgICAgICB7CisgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gZmFjZS0+bmFtZV90YWJsZS5zdHJlYW07CisKKworICAgICAgICBpZiAoIEZUX1FORVdfQVJSQVkgKCByZWMtPnN0cmluZywgcmVjLT5zdHJpbmdMZW5ndGggKSB8fAorICAgICAgICAgICAgIEZUX1NUUkVBTV9TRUVLKCByZWMtPnN0cmluZ09mZnNldCApICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgIEZUX1NUUkVBTV9SRUFEKCByZWMtPnN0cmluZywgcmVjLT5zdHJpbmdMZW5ndGggKSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9GUkVFKCByZWMtPnN0cmluZyApOworICAgICAgICAgIHJlYy0+c3RyaW5nTGVuZ3RoID0gMDsKKyAgICAgICAgICByZXN1bHQgICAgICAgICAgICA9IE5VTEw7CisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJlc3VsdCA9IGNvbnZlcnQoIHJlYywgbWVtb3J5ICk7CisgICAgfQorCisgIEV4aXQ6CisgICAgKm5hbWUgPSByZXN1bHQ7CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgRlRfRW5jb2RpbmcKKyAgc2ZudF9maW5kX2VuY29kaW5nKCBpbnQgIHBsYXRmb3JtX2lkLAorICAgICAgICAgICAgICAgICAgICAgIGludCAgZW5jb2RpbmdfaWQgKQorICB7CisgICAgdHlwZWRlZiBzdHJ1Y3QgIFRFbmNvZGluZ18KKyAgICB7CisgICAgICBpbnQgICAgICAgICAgcGxhdGZvcm1faWQ7CisgICAgICBpbnQgICAgICAgICAgZW5jb2RpbmdfaWQ7CisgICAgICBGVF9FbmNvZGluZyAgZW5jb2Rpbmc7CisKKyAgICB9IFRFbmNvZGluZzsKKworICAgIHN0YXRpYworICAgIGNvbnN0IFRFbmNvZGluZyAgdHRfZW5jb2RpbmdzW10gPQorICAgIHsKKyAgICAgIHsgVFRfUExBVEZPUk1fSVNPLCAgICAgICAgICAgLTEsICAgICAgICAgICAgICAgICAgRlRfRU5DT0RJTkdfVU5JQ09ERSB9LAorCisgICAgICB7IFRUX1BMQVRGT1JNX0FQUExFX1VOSUNPREUsIC0xLCAgICAgICAgICAgICAgICAgIEZUX0VOQ09ESU5HX1VOSUNPREUgfSwKKworICAgICAgeyBUVF9QTEFURk9STV9NQUNJTlRPU0gsICAgICBUVF9NQUNfSURfUk9NQU4sICAgICBGVF9FTkNPRElOR19BUFBMRV9ST01BTiB9LAorCisgICAgICB7IFRUX1BMQVRGT1JNX01JQ1JPU09GVCwgICAgIFRUX01TX0lEX1NZTUJPTF9DUywgIEZUX0VOQ09ESU5HX01TX1NZTUJPTCB9LAorICAgICAgeyBUVF9QTEFURk9STV9NSUNST1NPRlQsICAgICBUVF9NU19JRF9VQ1NfNCwgICAgICBGVF9FTkNPRElOR19VTklDT0RFIH0sCisgICAgICB7IFRUX1BMQVRGT1JNX01JQ1JPU09GVCwgICAgIFRUX01TX0lEX1VOSUNPREVfQ1MsIEZUX0VOQ09ESU5HX1VOSUNPREUgfSwKKyAgICAgIHsgVFRfUExBVEZPUk1fTUlDUk9TT0ZULCAgICAgVFRfTVNfSURfU0pJUywgICAgICAgRlRfRU5DT0RJTkdfU0pJUyB9LAorICAgICAgeyBUVF9QTEFURk9STV9NSUNST1NPRlQsICAgICBUVF9NU19JRF9HQjIzMTIsICAgICBGVF9FTkNPRElOR19HQjIzMTIgfSwKKyAgICAgIHsgVFRfUExBVEZPUk1fTUlDUk9TT0ZULCAgICAgVFRfTVNfSURfQklHXzUsICAgICAgRlRfRU5DT0RJTkdfQklHNSB9LAorICAgICAgeyBUVF9QTEFURk9STV9NSUNST1NPRlQsICAgICBUVF9NU19JRF9XQU5TVU5HLCAgICBGVF9FTkNPRElOR19XQU5TVU5HIH0sCisgICAgICB7IFRUX1BMQVRGT1JNX01JQ1JPU09GVCwgICAgIFRUX01TX0lEX0pPSEFCLCAgICAgIEZUX0VOQ09ESU5HX0pPSEFCIH0KKyAgICB9OworCisgICAgY29uc3QgVEVuY29kaW5nICAqY3VyLCAqbGltaXQ7CisKKworICAgIGN1ciAgID0gdHRfZW5jb2RpbmdzOworICAgIGxpbWl0ID0gY3VyICsgc2l6ZW9mICggdHRfZW5jb2RpbmdzICkgLyBzaXplb2YgKCB0dF9lbmNvZGluZ3NbMF0gKTsKKworICAgIGZvciAoIDsgY3VyIDwgbGltaXQ7IGN1cisrICkKKyAgICB7CisgICAgICBpZiAoIGN1ci0+cGxhdGZvcm1faWQgPT0gcGxhdGZvcm1faWQgKQorICAgICAgeworICAgICAgICBpZiAoIGN1ci0+ZW5jb2RpbmdfaWQgPT0gZW5jb2RpbmdfaWQgfHwKKyAgICAgICAgICAgICBjdXItPmVuY29kaW5nX2lkID09IC0xICAgICAgICAgICkKKyAgICAgICAgICByZXR1cm4gY3VyLT5lbmNvZGluZzsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRU5DT0RJTkdfTk9ORTsKKyAgfQorCisKKyAgLyogRmlsbCBpbiBmYWNlLT50dGNfaGVhZGVyLiAgSWYgdGhlIGZvbnQgaXMgbm90IGEgVFRDLCBpdCBpcyAqLworICAvKiBzeW50aGVzaXplZCBpbnRvIGEgVFRDIHdpdGggb25lIG9mZnNldCB0YWJsZS4gICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBzZm50X29wZW5fZm9udCggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBUVF9GYWNlICAgIGZhY2UgKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX1VMb25nICAgdGFnLCBvZmZzZXQ7CisKKyAgICBzdGF0aWMgY29uc3QgRlRfRnJhbWVfRmllbGQgIHR0Y19oZWFkZXJfZmllbGRzW10gPQorICAgIHsKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgVFRDX0hlYWRlclJlYworCisgICAgICBGVF9GUkFNRV9TVEFSVCggOCApLAorICAgICAgICBGVF9GUkFNRV9MT05HKCB2ZXJzaW9uICksCisgICAgICAgIEZUX0ZSQU1FX0xPTkcoIGNvdW50ICAgKSwgIC8qIHRoaXMgaXMgVUxvbmcgaW4gdGhlIHNwZWNzICovCisgICAgICBGVF9GUkFNRV9FTkQKKyAgICB9OworCisKKyAgICBmYWNlLT50dGNfaGVhZGVyLnRhZyAgICAgPSAwOworICAgIGZhY2UtPnR0Y19oZWFkZXIudmVyc2lvbiA9IDA7CisgICAgZmFjZS0+dHRjX2hlYWRlci5jb3VudCAgID0gMDsKKworICAgIG9mZnNldCA9IEZUX1NUUkVBTV9QT1MoKTsKKworICAgIGlmICggRlRfUkVBRF9VTE9ORyggdGFnICkgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgaWYgKCB0YWcgIT0gMHgwMDAxMDAwMFVMICYmCisgICAgICAgICB0YWcgIT0gVFRBR190dGNmICAgICYmCisgICAgICAgICB0YWcgIT0gVFRBR19PVFRPICAgICYmCisgICAgICAgICB0YWcgIT0gVFRBR190cnVlICAgICYmCisgICAgICAgICB0YWcgIT0gVFRBR190eXAxICAgICYmCisgICAgICAgICB0YWcgIT0gMHgwMDAyMDAwMFVMICkKKyAgICB7CisgICAgICBGVF9UUkFDRTIoKCAiICBub3QgYSBmb250IHVzaW5nIHRoZSBTRk5UIGNvbnRhaW5lciBmb3JtYXRcbiIgKSk7CisgICAgICByZXR1cm4gRlRfVEhST1coIFVua25vd25fRmlsZV9Gb3JtYXQgKTsKKyAgICB9CisKKyAgICBmYWNlLT50dGNfaGVhZGVyLnRhZyA9IFRUQUdfdHRjZjsKKworICAgIGlmICggdGFnID09IFRUQUdfdHRjZiApCisgICAgeworICAgICAgRlRfSW50ICBuOworCisKKyAgICAgIEZUX1RSQUNFMygoICJzZm50X29wZW5fZm9udDogZmlsZSBpcyBhIGNvbGxlY3Rpb25cbiIgKSk7CisKKyAgICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCB0dGNfaGVhZGVyX2ZpZWxkcywgJmZhY2UtPnR0Y19oZWFkZXIgKSApCisgICAgICAgIHJldHVybiBlcnJvcjsKKworICAgICAgaWYgKCBmYWNlLT50dGNfaGVhZGVyLmNvdW50ID09IDAgKQorICAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKworICAgICAgLyogYSByb3VnaCBzaXplIGVzdGltYXRlOiBsZXQncyBjb25zZXJ2YXRpdmVseSBhc3N1bWUgdGhhdCB0aGVyZSAgICovCisgICAgICAvKiBpcyBqdXN0IGEgc2luZ2xlIHRhYmxlIGluZm8gaW4gZWFjaCBzdWJmb250IGhlYWRlciAoMTIgKyAxNioxID0gKi8KKyAgICAgIC8qIDI4IGJ5dGVzKSwgdGh1cyB3ZSBoYXZlIChhdCBsZWFzdCkgYDEyICsgNCpjb3VudCcgYnl0ZXMgZm9yIHRoZSAqLworICAgICAgLyogc2l6ZSBvZiB0aGUgVFRDIGhlYWRlciBwbHVzIGAyOCpjb3VudCcgYnl0ZXMgZm9yIGFsbCBzdWJmb250ICAgICovCisgICAgICAvKiBoZWFkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGlmICggKEZUX1VMb25nKWZhY2UtPnR0Y19oZWFkZXIuY291bnQgPiBzdHJlYW0tPnNpemUgLyAoIDI4ICsgNCApICkKKyAgICAgICAgcmV0dXJuIEZUX1RIUk9XKCBBcnJheV9Ub29fTGFyZ2UgKTsKKworICAgICAgLyogbm93IHJlYWQgdGhlIG9mZnNldHMgb2YgZWFjaCBmb250IGluIHRoZSBmaWxlICovCisgICAgICBpZiAoIEZUX05FV19BUlJBWSggZmFjZS0+dHRjX2hlYWRlci5vZmZzZXRzLCBmYWNlLT50dGNfaGVhZGVyLmNvdW50ICkgKQorICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgIGlmICggRlRfRlJBTUVfRU5URVIoIGZhY2UtPnR0Y19oZWFkZXIuY291bnQgKiA0TCApICkKKyAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgICBmb3IgKCBuID0gMDsgbiA8IGZhY2UtPnR0Y19oZWFkZXIuY291bnQ7IG4rKyApCisgICAgICAgIGZhY2UtPnR0Y19oZWFkZXIub2Zmc2V0c1tuXSA9IEZUX0dFVF9VTE9ORygpOworCisgICAgICBGVF9GUkFNRV9FWElUKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBGVF9UUkFDRTMoKCAic2ZudF9vcGVuX2ZvbnQ6IHN5bnRoZXNpemUgVFRDXG4iICkpOworCisgICAgICBmYWNlLT50dGNfaGVhZGVyLnZlcnNpb24gPSAxIDw8IDE2OworICAgICAgZmFjZS0+dHRjX2hlYWRlci5jb3VudCAgID0gMTsKKworICAgICAgaWYgKCBGVF9ORVcoIGZhY2UtPnR0Y19oZWFkZXIub2Zmc2V0cyApICkKKyAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgICBmYWNlLT50dGNfaGVhZGVyLm9mZnNldHNbMF0gPSBvZmZzZXQ7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgc2ZudF9pbml0X2ZhY2UoIEZUX1N0cmVhbSAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIFRUX0ZhY2UgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtcyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3I7CisgICAgRlRfTGlicmFyeSAgICAgIGxpYnJhcnkgPSBmYWNlLT5yb290LmRyaXZlci0+cm9vdC5saWJyYXJ5OworICAgIFNGTlRfU2VydmljZSAgICBzZm50OworCisKKyAgICAvKiBmb3Igbm93LCBwYXJhbWV0ZXJzIGFyZSB1bnVzZWQgKi8KKyAgICBGVF9VTlVTRUQoIG51bV9wYXJhbXMgKTsKKyAgICBGVF9VTlVTRUQoIHBhcmFtcyApOworCisKKyAgICBzZm50ID0gKFNGTlRfU2VydmljZSlmYWNlLT5zZm50OworICAgIGlmICggIXNmbnQgKQorICAgIHsKKyAgICAgIHNmbnQgPSAoU0ZOVF9TZXJ2aWNlKUZUX0dldF9Nb2R1bGVfSW50ZXJmYWNlKCBsaWJyYXJ5LCAic2ZudCIgKTsKKyAgICAgIGlmICggIXNmbnQgKQorICAgICAgeworICAgICAgICBGVF9FUlJPUigoICJzZm50X2luaXRfZmFjZTogY2Fubm90IGFjY2VzcyBgc2ZudCcgbW9kdWxlXG4iICkpOworICAgICAgICByZXR1cm4gRlRfVEhST1coIE1pc3NpbmdfTW9kdWxlICk7CisgICAgICB9CisKKyAgICAgIGZhY2UtPnNmbnQgICAgICAgPSBzZm50OworICAgICAgZmFjZS0+Z290b190YWJsZSA9IHNmbnQtPmdvdG9fdGFibGU7CisgICAgfQorCisgICAgRlRfRkFDRV9GSU5EX0dMT0JBTF9TRVJWSUNFKCBmYWNlLCBmYWNlLT5wc25hbWVzLCBQT1NUU0NSSVBUX0NNQVBTICk7CisKKyAgICBGVF9UUkFDRTIoKCAiU0ZOVCBkcml2ZXJcbiIgKSk7CisKKyAgICBlcnJvciA9IHNmbnRfb3Blbl9mb250KCBzdHJlYW0sIGZhY2UgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIEZUX1RSQUNFMigoICJzZm50X2luaXRfZmFjZTogJTA4cCwgJWxkXG4iLCBmYWNlLCBmYWNlX2luZGV4ICkpOworCisgICAgaWYgKCBmYWNlX2luZGV4IDwgMCApCisgICAgICBmYWNlX2luZGV4ID0gMDsKKworICAgIGlmICggZmFjZV9pbmRleCA+PSBmYWNlLT50dGNfaGVhZGVyLmNvdW50ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggZmFjZS0+dHRjX2hlYWRlci5vZmZzZXRzW2ZhY2VfaW5kZXhdICkgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgVHJ1ZVR5cGUgZmlsZSAqLworICAgIGVycm9yID0gc2ZudC0+bG9hZF9mb250X2RpciggZmFjZSwgc3RyZWFtICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICBmYWNlLT5yb290Lm51bV9mYWNlcyAgPSBmYWNlLT50dGNfaGVhZGVyLmNvdW50OworICAgIGZhY2UtPnJvb3QuZmFjZV9pbmRleCA9IGZhY2VfaW5kZXg7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisjZGVmaW5lIExPQURfKCB4ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfVFJBQ0UyKCggImAiICN4ICInICIgKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfVFJBQ0UzKCggIi0tPlxuIiApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZXJyb3IgPSBzZm50LT5sb2FkXyAjIyB4KCBmYWNlLCBzdHJlYW0gKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfVFJBQ0UyKCggIiVzXG4iLCAoICFlcnJvciApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICA/ICJsb2FkZWQiICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICA6IEZUX0VSUl9FUSggZXJyb3IsIFRhYmxlX01pc3NpbmcgKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgID8gIm1pc3NpbmciICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIDogImZhaWxlZCB0byBsb2FkIiApKTsgICAgICAgICAgICBcCisgICAgRlRfVFJBQ0UzKCggIlxuIiApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKCAwICkKKworI2RlZmluZSBMT0FETV8oIHgsIHZlcnRpY2FsICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1RSQUNFMigoICJgJXMiICN4ICInICIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZlcnRpY2FsID8gInZlcnRpY2FsICIgOiAiIiApKTsgICAgICAgICAgICAgXAorICAgIEZUX1RSQUNFMygoICItLT5cbiIgKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yID0gc2ZudC0+bG9hZF8gIyMgeCggZmFjZSwgc3RyZWFtLCB2ZXJ0aWNhbCApOyAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1RSQUNFMigoICIlc1xuIiwgKCAhZXJyb3IgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgPyAibG9hZGVkIiAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgOiBGVF9FUlJfRVEoIGVycm9yLCBUYWJsZV9NaXNzaW5nICkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJtaXNzaW5nIiAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJmYWlsZWQgdG8gbG9hZCIgKSk7ICAgICAgICAgICAgXAorICAgIEZUX1RSQUNFMygoICJcbiIgKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9IHdoaWxlICggMCApCisKKyNkZWZpbmUgR0VUX05BTUUoIGlkLCBmaWVsZCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yID0gdHRfZmFjZV9nZXRfbmFtZSggZmFjZSwgVFRfTkFNRV9JRF8gIyMgaWQsIGZpZWxkICk7IFwKKyAgICBpZiAoIGVycm9yICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBnb3RvIEV4aXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9IHdoaWxlICggMCApCisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgc2ZudF9sb2FkX2ZhY2UoIEZUX1N0cmVhbSAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIFRUX0ZhY2UgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtcyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgIGVycm9yOworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fUE9TVFNDUklQVF9OQU1FUworICAgIEZUX0Vycm9yICAgICAgcHNuYW1lc19lcnJvcjsKKyNlbmRpZgorICAgIEZUX0Jvb2wgICAgICAgaGFzX291dGxpbmU7CisgICAgRlRfQm9vbCAgICAgICBpc19hcHBsZV9zYml0OworICAgIEZUX0Jvb2wgICAgICAgaWdub3JlX3ByZWZlcnJlZF9mYW1pbHkgICAgPSBGQUxTRTsKKyAgICBGVF9Cb29sICAgICAgIGlnbm9yZV9wcmVmZXJyZWRfc3ViZmFtaWx5ID0gRkFMU0U7CisKKyAgICBTRk5UX1NlcnZpY2UgIHNmbnQgPSAoU0ZOVF9TZXJ2aWNlKWZhY2UtPnNmbnQ7CisKKyAgICBGVF9VTlVTRUQoIGZhY2VfaW5kZXggKTsKKworCisgICAgLyogQ2hlY2sgcGFyYW1ldGVycyAqLworCisgICAgeworICAgICAgRlRfSW50ICBpOworCisKKyAgICAgIGZvciAoIGkgPSAwOyBpIDwgbnVtX3BhcmFtczsgaSsrICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBwYXJhbXNbaV0udGFnID09IEZUX1BBUkFNX1RBR19JR05PUkVfUFJFRkVSUkVEX0ZBTUlMWSApCisgICAgICAgICAgaWdub3JlX3ByZWZlcnJlZF9mYW1pbHkgPSBUUlVFOworICAgICAgICBlbHNlIGlmICggcGFyYW1zW2ldLnRhZyA9PSBGVF9QQVJBTV9UQUdfSUdOT1JFX1BSRUZFUlJFRF9TVUJGQU1JTFkgKQorICAgICAgICAgIGlnbm9yZV9wcmVmZXJyZWRfc3ViZmFtaWx5ID0gVFJVRTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBMb2FkIHRhYmxlcyAqLworCisgICAgLyogV2Ugbm93IHN1cHBvcnQgdHdvIFNGTlQtYmFzZWQgYml0bWFwcGVkIGZvbnQgZm9ybWF0cy4gIFRoZXkgKi8KKyAgICAvKiBhcmUgcmVjb2duaXplZCBlYXNpbHkgYXMgdGhleSBkbyBub3QgaW5jbHVkZSBhIGBnbHlmJyAgICAgICAqLworICAgIC8qIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBUaGUgZmlyc3QgZm9ybWF0IGNvbWVzIGZyb20gQXBwbGUsIGFuZCB1c2VzIGEgdGFibGUgbmFtZWQgICAqLworICAgIC8qIGBiaGVkJyBpbnN0ZWFkIG9mIGBoZWFkJyB0byBzdG9yZSB0aGUgZm9udCBoZWFkZXIgKHVzaW5nICAgICovCisgICAgLyogdGhlIHNhbWUgZm9ybWF0KS4gIEl0IGFsc28gZG9lc24ndCBpbmNsdWRlIGhvcml6b250YWwgYW5kICAgKi8KKyAgICAvKiB2ZXJ0aWNhbCBtZXRyaWNzIHRhYmxlcyAoaS5lLiBgaGhlYScgYW5kIGB2aGVhJyB0YWJsZXMgYXJlICAqLworICAgIC8qIG1pc3NpbmcpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBUaGUgb3RoZXIgZm9ybWF0IGNvbWVzIGZyb20gTWljcm9zb2Z0LCBhbmQgaXMgdXNlZCB3aXRoICAgICAqLworICAgIC8qIFdpbkNFL1BvY2tldFBDLiAgSXQgbG9va3MgbGlrZSBhIHN0YW5kYXJkIFRURiwgZXhjZXB0IHRoYXQgICovCisgICAgLyogaXQgZG9lc24ndCBjb250YWluIG91dGxpbmVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgRlRfVFJBQ0UyKCggInNmbnRfbG9hZF9mYWNlOiAlMDhwXG5cbiIsIGZhY2UgKSk7CisKKyAgICAvKiBkbyB3ZSBoYXZlIG91dGxpbmVzIGluIHRoZXJlPyAqLworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICBoYXNfb3V0bGluZSA9IEZUX0JPT0woIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSAhPSAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICB0dF9mYWNlX2xvb2t1cF90YWJsZSggZmFjZSwgVFRBR19nbHlmICkgICAgIT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRfZmFjZV9sb29rdXBfdGFibGUoIGZhY2UsIFRUQUdfQ0ZGICkgICAgICE9IDAgKTsKKyNlbHNlCisgICAgaGFzX291dGxpbmUgPSBGVF9CT09MKCB0dF9mYWNlX2xvb2t1cF90YWJsZSggZmFjZSwgVFRBR19nbHlmICkgIT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRfZmFjZV9sb29rdXBfdGFibGUoIGZhY2UsIFRUQUdfQ0ZGICkgICE9IDAgKTsKKyNlbmRpZgorCisgICAgaXNfYXBwbGVfc2JpdCA9IDA7CisKKyAgICAvKiBpZiB0aGlzIGZvbnQgZG9lc24ndCBjb250YWluIG91dGxpbmVzLCB3ZSB0cnkgdG8gbG9hZCAqLworICAgIC8qIGEgYGJoZWQnIHRhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCAhaGFzX291dGxpbmUgJiYgc2ZudC0+bG9hZF9iaGVkICkKKyAgICB7CisgICAgICBMT0FEXyggYmhlZCApOworICAgICAgaXNfYXBwbGVfc2JpdCA9IEZUX0JPT0woICFlcnJvciApOworICAgIH0KKworICAgIC8qIGxvYWQgdGhlIGZvbnQgaGVhZGVyIChgaGVhZCcgdGFibGUpIGlmIHRoaXMgaXNuJ3QgYW4gQXBwbGUgKi8KKyAgICAvKiBzYml0IGZvbnQgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCAhaXNfYXBwbGVfc2JpdCApCisgICAgeworICAgICAgTE9BRF8oIGhlYWQgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgaWYgKCBmYWNlLT5oZWFkZXIuVW5pdHNfUGVyX0VNID09IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIHRoZSBmb2xsb3dpbmcgdGFibGVzIGFyZSBvZnRlbiBub3QgcHJlc2VudCBpbiBlbWJlZGRlZCBUcnVlVHlwZSAqLworICAgIC8qIGZvbnRzIHdpdGhpbiBQREYgZG9jdW1lbnRzLCBzbyBkb24ndCBjaGVjayBmb3IgdGhlbS4gICAgICAgICAgICAqLworICAgIExPQURfKCBtYXhwICk7CisgICAgTE9BRF8oIGNtYXAgKTsKKworICAgIC8qIHRoZSBmb2xsb3dpbmcgdGFibGVzIGFyZSBvcHRpb25hbCBpbiBQQ0wgZm9udHMgLS0gKi8KKyAgICAvKiBkb24ndCBjaGVjayBmb3IgZXJyb3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgTE9BRF8oIG5hbWUgKTsKKyAgICBMT0FEXyggcG9zdCApOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTCisgICAgcHNuYW1lc19lcnJvciA9IGVycm9yOworI2VuZGlmCisKKyAgICAvKiBkbyBub3QgbG9hZCB0aGUgbWV0cmljcyBoZWFkZXJzIGFuZCB0YWJsZXMgaWYgdGhpcyBpcyBhbiBBcHBsZSAqLworICAgIC8qIHNiaXQgZm9udCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCAhaXNfYXBwbGVfc2JpdCApCisgICAgeworICAgICAgLyogbG9hZCB0aGUgYGhoZWEnIGFuZCBgaG10eCcgdGFibGVzICovCisgICAgICBMT0FETV8oIGhoZWEsIDAgKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgIHsKKyAgICAgICAgTE9BRE1fKCBobXR4LCAwICk7CisgICAgICAgIGlmICggRlRfRVJSX0VRKCBlcnJvciwgVGFibGVfTWlzc2luZyApICkKKyAgICAgICAgeworICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEhtdHhfVGFibGVfTWlzc2luZyApOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorICAgICAgICAgIC8qIElmIHRoaXMgaXMgYW4gaW5jcmVtZW50YWxseSBsb2FkZWQgZm9udCBhbmQgdGhlcmUgYXJlICovCisgICAgICAgICAgLyogb3ZlcnJpZGluZyBtZXRyaWNzLCB0b2xlcmF0ZSBhIG1pc3NpbmcgYGhtdHgnIHRhYmxlLiAgKi8KKyAgICAgICAgICBpZiAoIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSAgICAgICAgICAmJgorICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5mdW5jcy0+CisgICAgICAgICAgICAgICAgIGdldF9nbHlwaF9tZXRyaWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGZhY2UtPmhvcml6b250YWwubnVtYmVyX09mX0hNZXRyaWNzID0gMDsKKyAgICAgICAgICAgIGVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRlRfRXJyX09rOworICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmICggRlRfRVJSX0VRKCBlcnJvciwgVGFibGVfTWlzc2luZyApICkKKyAgICAgIHsKKyAgICAgICAgLyogTm8gYGhoZWEnIHRhYmxlIG5lY2Vzc2FyeSBmb3IgU0ZOVCBNYWMgZm9udHMuICovCisgICAgICAgIGlmICggZmFjZS0+Zm9ybWF0X3RhZyA9PSBUVEFHX3RydWUgKQorICAgICAgICB7CisgICAgICAgICAgRlRfVFJBQ0UyKCggIlRoaXMgaXMgYW4gU0ZOVCBNYWMgZm9udC5cbiIgKSk7CisKKyAgICAgICAgICBoYXNfb3V0bGluZSA9IDA7CisgICAgICAgICAgZXJyb3IgICAgICAgPSBGVF9FcnJfT2s7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSG9yaXpfSGVhZGVyX01pc3NpbmcgKTsKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICAgICAgICAvKiBJZiB0aGlzIGlzIGFuIGluY3JlbWVudGFsbHkgbG9hZGVkIGZvbnQgYW5kIHRoZXJlIGFyZSAqLworICAgICAgICAgIC8qIG92ZXJyaWRpbmcgbWV0cmljcywgdG9sZXJhdGUgYSBtaXNzaW5nIGBoaGVhJyB0YWJsZS4gICovCisgICAgICAgICAgaWYgKCBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZS0+ZnVuY3MtPgorICAgICAgICAgICAgICAgICBnZXRfZ2x5cGhfbWV0cmljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBmYWNlLT5ob3Jpem9udGFsLm51bWJlcl9PZl9ITWV0cmljcyA9IDA7CisgICAgICAgICAgICBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZUX0Vycl9PazsKKyAgICAgICAgICB9CisjZW5kaWYKKworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogdHJ5IHRvIGxvYWQgdGhlIGB2aGVhJyBhbmQgYHZtdHgnIHRhYmxlcyAqLworICAgICAgTE9BRE1fKCBoaGVhLCAxICk7CisgICAgICBpZiAoICFlcnJvciApCisgICAgICB7CisgICAgICAgIExPQURNXyggaG10eCwgMSApOworICAgICAgICBpZiAoICFlcnJvciApCisgICAgICAgICAgZmFjZS0+dmVydGljYWxfaW5mbyA9IDE7CisgICAgICB9CisKKyAgICAgIGlmICggZXJyb3IgJiYgRlRfRVJSX05FUSggZXJyb3IsIFRhYmxlX01pc3NpbmcgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgTE9BRF8oIG9zMiApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICB7CisgICAgICAgIC8qIHdlIHRyZWF0IHRoZSB0YWJsZSBhcyBtaXNzaW5nIGlmIHRoZXJlIGFyZSBhbnkgZXJyb3JzICovCisgICAgICAgIGZhY2UtPm9zMi52ZXJzaW9uID0gMHhGRkZGVTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiB0aGUgb3B0aW9uYWwgdGFibGVzICovCisKKyAgICAvKiBlbWJlZGRlZCBiaXRtYXAgc3VwcG9ydCAqLworICAgIGlmICggc2ZudC0+bG9hZF9lYmxjICkKKyAgICB7CisgICAgICBMT0FEXyggZWJsYyApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICB7CisgICAgICAgIC8qIGEgZm9udCB3aGljaCBjb250YWlucyBuZWl0aGVyIGJpdG1hcHMgbm9yIG91dGxpbmVzIGlzICovCisgICAgICAgIC8qIHN0aWxsIHZhbGlkIChhbHRob3VnaCByYXRoZXIgdXNlbGVzcyBpbiBtb3N0IGNhc2VzKTsgICovCisgICAgICAgIC8qIGhvd2V2ZXIsIHlvdSBjYW4gZmluZCBzdWNoIHN0cmlwcGVkIGZvbnRzIGluIFBERnMgICAgICovCisgICAgICAgIGlmICggRlRfRVJSX0VRKCBlcnJvciwgVGFibGVfTWlzc2luZyApICkKKyAgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKyAgICB9CisKKyAgICBMT0FEXyggcGNsdCApOworICAgIGlmICggZXJyb3IgKQorICAgIHsKKyAgICAgIGlmICggRlRfRVJSX05FUSggZXJyb3IsIFRhYmxlX01pc3NpbmcgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgZmFjZS0+cGNsdC5WZXJzaW9uID0gMDsKKyAgICB9CisKKyAgICAvKiBjb25zaWRlciB0aGUga2VybmluZyBhbmQgZ2FzcCB0YWJsZXMgYXMgb3B0aW9uYWwgKi8KKyAgICBMT0FEXyggZ2FzcCApOworICAgIExPQURfKCBrZXJuICk7CisKKyAgICBmYWNlLT5yb290Lm51bV9nbHlwaHMgPSBmYWNlLT5tYXhfcHJvZmlsZS5udW1HbHlwaHM7CisKKyAgICAvKiBCaXQgOCBvZiB0aGUgYGZzU2VsZWN0aW9uJyBmaWVsZCBpbiB0aGUgYE9TLzInIHRhYmxlIGRlbm90ZXMgICovCisgICAgLyogYSBXV1Mtb25seSBmb250IGZhY2UuICBgV1dTJyBzdGFuZHMgZm9yIGB3ZWlnaHQnLCB3aWR0aCcsIGFuZCAqLworICAgIC8qIGBzbG9wZScsIGEgdGVybSB1c2VkIGJ5IE1pY3Jvc29mdCdzIFdpbmRvd3MgUHJlc2VudGF0aW9uICAgICAgKi8KKyAgICAvKiBGb3VuZGF0aW9uIChXUEYpLiAgVGhpcyBmbGFnIGhhcyBiZWVuIGludHJvZHVjZWQgaW4gdmVyc2lvbiAgICovCisgICAgLyogMS41IG9mIHRoZSBPcGVuVHlwZSBzcGVjaWZpY2F0aW9uIChNYXkgMjAwOCkuICAgICAgICAgICAgICAgICAqLworCisgICAgZmFjZS0+cm9vdC5mYW1pbHlfbmFtZSA9IE5VTEw7CisgICAgZmFjZS0+cm9vdC5zdHlsZV9uYW1lICA9IE5VTEw7CisgICAgaWYgKCBmYWNlLT5vczIudmVyc2lvbiAhPSAweEZGRkZVICYmIGZhY2UtPm9zMi5mc1NlbGVjdGlvbiAmIDI1NiApCisgICAgeworICAgICAgaWYgKCAhaWdub3JlX3ByZWZlcnJlZF9mYW1pbHkgKQorICAgICAgICBHRVRfTkFNRSggUFJFRkVSUkVEX0ZBTUlMWSwgJmZhY2UtPnJvb3QuZmFtaWx5X25hbWUgKTsKKyAgICAgIGlmICggIWZhY2UtPnJvb3QuZmFtaWx5X25hbWUgKQorICAgICAgICBHRVRfTkFNRSggRk9OVF9GQU1JTFksICZmYWNlLT5yb290LmZhbWlseV9uYW1lICk7CisKKyAgICAgIGlmICggIWlnbm9yZV9wcmVmZXJyZWRfc3ViZmFtaWx5ICkKKyAgICAgICAgR0VUX05BTUUoIFBSRUZFUlJFRF9TVUJGQU1JTFksICZmYWNlLT5yb290LnN0eWxlX25hbWUgKTsKKyAgICAgIGlmICggIWZhY2UtPnJvb3Quc3R5bGVfbmFtZSApCisgICAgICAgIEdFVF9OQU1FKCBGT05UX1NVQkZBTUlMWSwgJmZhY2UtPnJvb3Quc3R5bGVfbmFtZSApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgR0VUX05BTUUoIFdXU19GQU1JTFksICZmYWNlLT5yb290LmZhbWlseV9uYW1lICk7CisgICAgICBpZiAoICFmYWNlLT5yb290LmZhbWlseV9uYW1lICYmICFpZ25vcmVfcHJlZmVycmVkX2ZhbWlseSApCisgICAgICAgIEdFVF9OQU1FKCBQUkVGRVJSRURfRkFNSUxZLCAmZmFjZS0+cm9vdC5mYW1pbHlfbmFtZSApOworICAgICAgaWYgKCAhZmFjZS0+cm9vdC5mYW1pbHlfbmFtZSApCisgICAgICAgIEdFVF9OQU1FKCBGT05UX0ZBTUlMWSwgJmZhY2UtPnJvb3QuZmFtaWx5X25hbWUgKTsKKworICAgICAgR0VUX05BTUUoIFdXU19TVUJGQU1JTFksICZmYWNlLT5yb290LnN0eWxlX25hbWUgKTsKKyAgICAgIGlmICggIWZhY2UtPnJvb3Quc3R5bGVfbmFtZSAmJiAhaWdub3JlX3ByZWZlcnJlZF9zdWJmYW1pbHkgKQorICAgICAgICBHRVRfTkFNRSggUFJFRkVSUkVEX1NVQkZBTUlMWSwgJmZhY2UtPnJvb3Quc3R5bGVfbmFtZSApOworICAgICAgaWYgKCAhZmFjZS0+cm9vdC5zdHlsZV9uYW1lICkKKyAgICAgICAgR0VUX05BTUUoIEZPTlRfU1VCRkFNSUxZLCAmZmFjZS0+cm9vdC5zdHlsZV9uYW1lICk7CisgICAgfQorCisgICAgLyogbm93IHNldCB1cCByb290IGZpZWxkcyAqLworICAgIHsKKyAgICAgIEZUX0ZhY2UgIHJvb3QgID0gJmZhY2UtPnJvb3Q7CisgICAgICBGVF9Mb25nICBmbGFncyA9IHJvb3QtPmZhY2VfZmxhZ3M7CisKKworICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBDb21wdXRlIGZhY2UgZmxhZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGlmICggaGFzX291dGxpbmUgPT0gVFJVRSApCisgICAgICAgIGZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19TQ0FMQUJMRTsgICAvKiBzY2FsYWJsZSBvdXRsaW5lcyAqLworCisgICAgICAvKiBUaGUgc2ZudCBkcml2ZXIgb25seSBzdXBwb3J0cyBiaXRtYXAgZm9udHMgbmF0aXZlbHksIHRodXMgd2UgKi8KKyAgICAgIC8qIGRvbid0IHNldCBGVF9GQUNFX0ZMQUdfSElOVEVSLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX1NGTlQgICAgICAgfCAgLyogU0ZOVCBmaWxlIGZvcm1hdCAgKi8KKyAgICAgICAgICAgICAgIEZUX0ZBQ0VfRkxBR19IT1JJWk9OVEFMOyAgIC8qIGhvcml6b250YWwgZGF0YSAgICovCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMKKyAgICAgIGlmICggIXBzbmFtZXNfZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIGZhY2UtPnBvc3RzY3JpcHQuRm9ybWF0VHlwZSAhPSAweDAwMDMwMDAwTCApCisgICAgICAgIGZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUzsKKyNlbmRpZgorCisgICAgICAvKiBmaXhlZCB3aWR0aCBmb250PyAqLworICAgICAgaWYgKCBmYWNlLT5wb3N0c2NyaXB0LmlzRml4ZWRQaXRjaCApCisgICAgICAgIGZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURUSDsKKworICAgICAgLyogdmVydGljYWwgaW5mb3JtYXRpb24/ICovCisgICAgICBpZiAoIGZhY2UtPnZlcnRpY2FsX2luZm8gKQorICAgICAgICBmbGFncyB8PSBGVF9GQUNFX0ZMQUdfVkVSVElDQUw7CisKKyAgICAgIC8qIGtlcm5pbmcgYXZhaWxhYmxlID8gKi8KKyAgICAgIGlmICggVFRfRkFDRV9IQVNfS0VSTklORyggZmFjZSApICkKKyAgICAgICAgZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX0tFUk5JTkc7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgICAvKiBEb24ndCBib3RoZXIgdG8gbG9hZCB0aGUgdGFibGVzIHVubGVzcyBzb21lYm9keSBhc2tzIGZvciB0aGVtLiAqLworICAgICAgLyogTm8gbmVlZCB0byBkbyB3b3JrIHdoaWNoIHdpbGwgKHByb2JhYmx5KSBub3QgYmUgdXNlZC4gICAgICAgICAgKi8KKyAgICAgIGlmICggdHRfZmFjZV9sb29rdXBfdGFibGUoIGZhY2UsIFRUQUdfZ2x5ZiApICE9IDAgJiYKKyAgICAgICAgICAgdHRfZmFjZV9sb29rdXBfdGFibGUoIGZhY2UsIFRUQUdfZnZhciApICE9IDAgJiYKKyAgICAgICAgICAgdHRfZmFjZV9sb29rdXBfdGFibGUoIGZhY2UsIFRUQUdfZ3ZhciApICE9IDAgKQorICAgICAgICBmbGFncyB8PSBGVF9GQUNFX0ZMQUdfTVVMVElQTEVfTUFTVEVSUzsKKyNlbmRpZgorCisgICAgICByb290LT5mYWNlX2ZsYWdzID0gZmxhZ3M7CisKKyAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogQ29tcHV0ZSBzdHlsZSBmbGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIGZsYWdzID0gMDsKKyAgICAgIGlmICggaGFzX291dGxpbmUgPT0gVFJVRSAmJiBmYWNlLT5vczIudmVyc2lvbiAhPSAweEZGRkZVICkKKyAgICAgIHsKKyAgICAgICAgLyogV2UgaGF2ZSBhbiBPUy8yIHRhYmxlOyB1c2UgdGhlIGBmc1NlbGVjdGlvbicgZmllbGQuICBCaXQgOSAqLworICAgICAgICAvKiBpbmRpY2F0ZXMgYW4gb2JsaXF1ZSBmb250IGZhY2UuICBUaGlzIGZsYWcgaGFzIGJlZW4gICAgICAgICovCisgICAgICAgIC8qIGludHJvZHVjZWQgaW4gdmVyc2lvbiAxLjUgb2YgdGhlIE9wZW5UeXBlIHNwZWNpZmljYXRpb24uICAgKi8KKworICAgICAgICBpZiAoIGZhY2UtPm9zMi5mc1NlbGVjdGlvbiAmIDUxMiApICAgICAgIC8qIGJpdCA5ICovCisgICAgICAgICAgZmxhZ3MgfD0gRlRfU1RZTEVfRkxBR19JVEFMSUM7CisgICAgICAgIGVsc2UgaWYgKCBmYWNlLT5vczIuZnNTZWxlY3Rpb24gJiAxICkgICAgLyogYml0IDAgKi8KKyAgICAgICAgICBmbGFncyB8PSBGVF9TVFlMRV9GTEFHX0lUQUxJQzsKKworICAgICAgICBpZiAoIGZhY2UtPm9zMi5mc1NlbGVjdGlvbiAmIDMyICkgICAgICAgIC8qIGJpdCA1ICovCisgICAgICAgICAgZmxhZ3MgfD0gRlRfU1RZTEVfRkxBR19CT0xEOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiB0aGlzIGlzIGFuIG9sZCBNYWMgZm9udCwgdXNlIHRoZSBoZWFkZXIgZmllbGQgKi8KKworICAgICAgICBpZiAoIGZhY2UtPmhlYWRlci5NYWNfU3R5bGUgJiAxICkKKyAgICAgICAgICBmbGFncyB8PSBGVF9TVFlMRV9GTEFHX0JPTEQ7CisKKyAgICAgICAgaWYgKCBmYWNlLT5oZWFkZXIuTWFjX1N0eWxlICYgMiApCisgICAgICAgICAgZmxhZ3MgfD0gRlRfU1RZTEVfRkxBR19JVEFMSUM7CisgICAgICB9CisKKyAgICAgIHJvb3QtPnN0eWxlX2ZsYWdzID0gZmxhZ3M7CisKKyAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogUG9saXNoIHRoZSBjaGFybWFwcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiAgIFRyeSB0byBzZXQgdGhlIGNoYXJtYXAgZW5jb2RpbmcgYWNjb3JkaW5nIHRvIHRoZSBwbGF0Zm9ybSAmICAgICAqLworICAgICAgLyogICBlbmNvZGluZyBJRCBvZiBlYWNoIGNoYXJtYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIHR0X2ZhY2VfYnVpbGRfY21hcHMoIGZhY2UgKTsgIC8qIGlnbm9yZSBlcnJvcnMgKi8KKworCisgICAgICAvKiBzZXQgdGhlIGVuY29kaW5nIGZpZWxkcyAqLworICAgICAgeworICAgICAgICBGVF9JbnQgIG07CisKKworICAgICAgICBmb3IgKCBtID0gMDsgbSA8IHJvb3QtPm51bV9jaGFybWFwczsgbSsrICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0NoYXJNYXAgIGNoYXJtYXAgPSByb290LT5jaGFybWFwc1ttXTsKKworCisgICAgICAgICAgY2hhcm1hcC0+ZW5jb2RpbmcgPSBzZm50X2ZpbmRfZW5jb2RpbmcoIGNoYXJtYXAtPnBsYXRmb3JtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFybWFwLT5lbmNvZGluZ19pZCApOworCisjaWYgMAorICAgICAgICAgIGlmICggcm9vdC0+Y2hhcm1hcCAgICAgPT0gTlVMTCAmJgorICAgICAgICAgICAgICAgY2hhcm1hcC0+ZW5jb2RpbmcgPT0gRlRfRU5DT0RJTkdfVU5JQ09ERSApCisgICAgICAgICAgeworICAgICAgICAgICAgLyogc2V0ICdyb290LT5jaGFybWFwJyB0byB0aGUgZmlyc3QgVW5pY29kZSBlbmNvZGluZyB3ZSBmaW5kICovCisgICAgICAgICAgICByb290LT5jaGFybWFwID0gY2hhcm1hcDsKKyAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgfQorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTCisKKyAgICAgIC8qCisgICAgICAgKiAgTm93IGFsbG9jYXRlIHRoZSByb290IGFycmF5IG9mIEZUX0JpdG1hcF9TaXplIHJlY29yZHMgYW5kCisgICAgICAgKiAgcG9wdWxhdGUgdGhlbS4gIFVuZm9ydHVuYXRlbHksIGl0IGlzbid0IHBvc3NpYmxlIHRvIGluZGljYXRlIGJpdAorICAgICAgICogIGRlcHRocyBpbiB0aGUgRlRfQml0bWFwX1NpemUgcmVjb3JkLiAgVGhpcyBpcyBhIGRlc2lnbiBlcnJvci4KKyAgICAgICAqLworICAgICAgeworICAgICAgICBGVF9VSW50ICBpLCBjb3VudDsKKworCisgICAgICAgIGNvdW50ID0gZmFjZS0+c2JpdF9udW1fc3RyaWtlczsKKworICAgICAgICBpZiAoIGNvdW50ID4gMCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9NZW1vcnkgICAgICAgIG1lbW9yeSAgID0gZmFjZS0+cm9vdC5zdHJlYW0tPm1lbW9yeTsKKyAgICAgICAgICBGVF9VU2hvcnQgICAgICAgIGVtX3NpemUgID0gZmFjZS0+aGVhZGVyLlVuaXRzX1Blcl9FTTsKKyAgICAgICAgICBGVF9TaG9ydCAgICAgICAgIGF2Z3dpZHRoID0gZmFjZS0+b3MyLnhBdmdDaGFyV2lkdGg7CisgICAgICAgICAgRlRfU2l6ZV9NZXRyaWNzICBtZXRyaWNzOworCisKKyAgICAgICAgICBpZiAoIGVtX3NpemUgPT0gMCB8fCBmYWNlLT5vczIudmVyc2lvbiA9PSAweEZGRkZVICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBhdmd3aWR0aCA9IDA7CisgICAgICAgICAgICBlbV9zaXplID0gMTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoIEZUX05FV19BUlJBWSggcm9vdC0+YXZhaWxhYmxlX3NpemVzLCBjb3VudCApICkKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgY291bnQ7IGkrKyApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfQml0bWFwX1NpemUqICBic2l6ZSA9IHJvb3QtPmF2YWlsYWJsZV9zaXplcyArIGk7CisKKworICAgICAgICAgICAgZXJyb3IgPSBzZm50LT5sb2FkX3N0cmlrZV9tZXRyaWNzKCBmYWNlLCBpLCAmbWV0cmljcyApOworICAgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAgICAgYnNpemUtPmhlaWdodCA9IChGVF9TaG9ydCkoIG1ldHJpY3MuaGVpZ2h0ID4+IDYgKTsKKyAgICAgICAgICAgIGJzaXplLT53aWR0aCA9IChGVF9TaG9ydCkoCisgICAgICAgICAgICAgICAgKCBhdmd3aWR0aCAqIG1ldHJpY3MueF9wcGVtICsgZW1fc2l6ZSAvIDIgKSAvIGVtX3NpemUgKTsKKworICAgICAgICAgICAgYnNpemUtPnhfcHBlbSA9IG1ldHJpY3MueF9wcGVtIDw8IDY7CisgICAgICAgICAgICBic2l6ZS0+eV9wcGVtID0gbWV0cmljcy55X3BwZW0gPDwgNjsKKworICAgICAgICAgICAgLyogYXNzdW1lIDcyZHBpICovCisgICAgICAgICAgICBic2l6ZS0+c2l6ZSAgID0gbWV0cmljcy55X3BwZW0gPDwgNjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICByb290LT5mYWNlX2ZsYWdzICAgICB8PSBGVF9GQUNFX0ZMQUdfRklYRURfU0laRVM7CisgICAgICAgICAgcm9vdC0+bnVtX2ZpeGVkX3NpemVzID0gKEZUX0ludCljb3VudDsKKyAgICAgICAgfQorICAgICAgfQorCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTICovCisKKyAgICAgIC8qIGEgZm9udCB3aXRoIG5vIGJpdG1hcHMgYW5kIG5vIG91dGxpbmVzIGlzIHNjYWxhYmxlOyAqLworICAgICAgLyogaXQgaGFzIG9ubHkgZW1wdHkgZ2x5cGhzIHRoZW4gICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBpZiAoICFGVF9IQVNfRklYRURfU0laRVMoIHJvb3QgKSAmJiAhRlRfSVNfU0NBTEFCTEUoIHJvb3QgKSApCisgICAgICAgIHJvb3QtPmZhY2VfZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX1NDQUxBQkxFOworCisKKyAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogIFNldCB1cCBtZXRyaWNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBpZiAoIEZUX0lTX1NDQUxBQkxFKCByb290ICkgKQorICAgICAgeworICAgICAgICAvKiBYWFggV2hhdCBhYm91dCBpZiBvdXRsaW5lIGhlYWRlciBpcyBtaXNzaW5nICovCisgICAgICAgIC8qICAgICAoZS5nLiBzZm50IHdyYXBwZWQgYml0bWFwKT8gICAgICAgICAgICAgKi8KKyAgICAgICAgcm9vdC0+YmJveC54TWluICAgID0gZmFjZS0+aGVhZGVyLnhNaW47CisgICAgICAgIHJvb3QtPmJib3gueU1pbiAgICA9IGZhY2UtPmhlYWRlci55TWluOworICAgICAgICByb290LT5iYm94LnhNYXggICAgPSBmYWNlLT5oZWFkZXIueE1heDsKKyAgICAgICAgcm9vdC0+YmJveC55TWF4ICAgID0gZmFjZS0+aGVhZGVyLnlNYXg7CisgICAgICAgIHJvb3QtPnVuaXRzX3Blcl9FTSA9IGZhY2UtPmhlYWRlci5Vbml0c19QZXJfRU07CisKKworICAgICAgICAvKiBYWFg6IENvbXB1dGluZyB0aGUgYXNjZW5kZXIvZGVzY2VuZGVyL2hlaWdodCBpcyB2ZXJ5IGRpZmZlcmVudCAqLworICAgICAgICAvKiAgICAgIGZyb20gd2hhdCB0aGUgc3BlY2lmaWNhdGlvbiB0ZWxscyB5b3UuICBBcHBhcmVudGx5LCB3ZSAgICAqLworICAgICAgICAvKiAgICAgIG11c3QgYmUgY2FyZWZ1bCBiZWNhdXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgIC0gbm90IGFsbCBmb250cyBoYXZlIGFuIE9TLzIgdGFibGU7IGluIHRoaXMgY2FzZSwgd2UgdGFrZSAqLworICAgICAgICAvKiAgICAgICAgdGhlIHZhbHVlcyBpbiB0aGUgaG9yaXpvbnRhbCBoZWFkZXIuICBIb3dldmVyLCB0aGVzZSAgICAqLworICAgICAgICAvKiAgICAgICAgdmFsdWVzIHZlcnkgb2Z0ZW4gYXJlIG5vdCByZWxpYWJsZS4gICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgIC0gb3RoZXJ3aXNlLCB0aGUgY29ycmVjdCB0eXBvZ3JhcGhpYyB2YWx1ZXMgYXJlIGluIHRoZSAgICAqLworICAgICAgICAvKiAgICAgICAgc1R5cG9Bc2NlbmRlciwgc1R5cG9EZXNjZW5kZXIgJiBzVHlwb0xpbmVHYXAgZmllbGRzLiAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgSG93ZXZlciwgY2VydGFpbiBmb250cyBoYXZlIHRoZXNlIGZpZWxkcyBzZXQgdG8gMC4gICAgICAqLworICAgICAgICAvKiAgICAgICAgUmF0aGVyLCB0aGV5IGhhdmUgdXNXaW5Bc2NlbnQgJiB1c1dpbkRlc2NlbnQgY29ycmVjdGx5ICAqLworICAgICAgICAvKiAgICAgICAgc2V0IChidXQgd2l0aCBkaWZmZXJlbnQgdmFsdWVzKS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgIEFzIGFuIGV4YW1wbGUsIEFyaWFsIE5hcnJvdyBpcyBpbXBsZW1lbnRlZCB0aHJvdWdoIGZvdXIgICAqLworICAgICAgICAvKiAgICAgIGZpbGVzIEFSSUFMTi5UVEYsIEFSSUFMTkkuVFRGLCBBUklBTE5CLlRURiAmIEFSSUFMTkJJLlRURiAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgIFN0cmFuZ2VseSwgYWxsIGZvbnRzIGhhdmUgdGhlIHNhbWUgdmFsdWVzIGluIHRoZWlyICAgICAgICAqLworICAgICAgICAvKiAgICAgIHNUeXBvWFhYIGZpZWxkcywgZXhjZXB0IEFSSUFMTkIgd2hpY2ggc2V0cyB0aGVtIHRvIDAuICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCB0aGV5IGFsbCBoYXZlIGRpZmZlcmVudCAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgIHVzV2luQXNjZW50L0Rlc2NlbnQgdmFsdWVzIC0tIGFzIGEgY29uY2x1c2lvbiwgdGhlIE9TLzIgICAqLworICAgICAgICAvKiAgICAgIHRhYmxlIGNhbm5vdCBiZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHRleHQgaGVpZ2h0IHJlbGlhYmx5ISAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgIC8qIFRoZSBhc2NlbmRlciBhbmQgZGVzY2VuZGVyIGFyZSB0YWtlbiBmcm9tIHRoZSBgaGhlYScgdGFibGUuICovCisgICAgICAgIC8qIElmIHplcm8sIHRoZXkgYXJlIHRha2VuIGZyb20gdGhlIGBPUy8yJyB0YWJsZS4gICAgICAgICAgICAgICovCisKKyAgICAgICAgcm9vdC0+YXNjZW5kZXIgID0gZmFjZS0+aG9yaXpvbnRhbC5Bc2NlbmRlcjsKKyAgICAgICAgcm9vdC0+ZGVzY2VuZGVyID0gZmFjZS0+aG9yaXpvbnRhbC5EZXNjZW5kZXI7CisKKyAgICAgICAgcm9vdC0+aGVpZ2h0ID0gKEZUX1Nob3J0KSggcm9vdC0+YXNjZW5kZXIgLSByb290LT5kZXNjZW5kZXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5ob3Jpem9udGFsLkxpbmVfR2FwICk7CisKKyAgICAgICAgaWYgKCAhKCByb290LT5hc2NlbmRlciB8fCByb290LT5kZXNjZW5kZXIgKSApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIGZhY2UtPm9zMi52ZXJzaW9uICE9IDB4RkZGRlUgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggZmFjZS0+b3MyLnNUeXBvQXNjZW5kZXIgfHwgZmFjZS0+b3MyLnNUeXBvRGVzY2VuZGVyICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcm9vdC0+YXNjZW5kZXIgID0gZmFjZS0+b3MyLnNUeXBvQXNjZW5kZXI7CisgICAgICAgICAgICAgIHJvb3QtPmRlc2NlbmRlciA9IGZhY2UtPm9zMi5zVHlwb0Rlc2NlbmRlcjsKKworICAgICAgICAgICAgICByb290LT5oZWlnaHQgPSAoRlRfU2hvcnQpKCByb290LT5hc2NlbmRlciAtIHJvb3QtPmRlc2NlbmRlciArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPm9zMi5zVHlwb0xpbmVHYXAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcm9vdC0+YXNjZW5kZXIgID0gIChGVF9TaG9ydClmYWNlLT5vczIudXNXaW5Bc2NlbnQ7CisgICAgICAgICAgICAgIHJvb3QtPmRlc2NlbmRlciA9IC0oRlRfU2hvcnQpZmFjZS0+b3MyLnVzV2luRGVzY2VudDsKKworICAgICAgICAgICAgICByb290LT5oZWlnaHQgPSAoRlRfVVNob3J0KSggcm9vdC0+YXNjZW5kZXIgLSByb290LT5kZXNjZW5kZXIgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByb290LT5tYXhfYWR2YW5jZV93aWR0aCAgPSBmYWNlLT5ob3Jpem9udGFsLmFkdmFuY2VfV2lkdGhfTWF4OworICAgICAgICByb290LT5tYXhfYWR2YW5jZV9oZWlnaHQgPSAoRlRfU2hvcnQpKCBmYWNlLT52ZXJ0aWNhbF9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmYWNlLT52ZXJ0aWNhbC5hZHZhbmNlX0hlaWdodF9NYXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJvb3QtPmhlaWdodCApOworCisgICAgICAgIC8qIFNlZSBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vT3BlblR5cGUvT1RTcGVjL3Bvc3QuaHRtIC0tICovCisgICAgICAgIC8qIEFkanVzdCB1bmRlcmxpbmUgcG9zaXRpb24gZnJvbSB0b3AgZWRnZSB0byBjZW50cmUgb2YgICAgICovCisgICAgICAgIC8qIHN0cm9rZSB0byBjb252ZXJ0IFRydWVUeXBlIG1lYW5pbmcgdG8gRnJlZVR5cGUgbWVhbmluZy4gICovCisgICAgICAgIHJvb3QtPnVuZGVybGluZV9wb3NpdGlvbiAgPSBmYWNlLT5wb3N0c2NyaXB0LnVuZGVybGluZVBvc2l0aW9uIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPnBvc3RzY3JpcHQudW5kZXJsaW5lVGhpY2tuZXNzIC8gMjsKKyAgICAgICAgcm9vdC0+dW5kZXJsaW5lX3RoaWNrbmVzcyA9IGZhY2UtPnBvc3RzY3JpcHQudW5kZXJsaW5lVGhpY2tuZXNzOworICAgICAgfQorCisgICAgfQorCisgIEV4aXQ6CisgICAgRlRfVFJBQ0UyKCggInNmbnRfbG9hZF9mYWNlOiBkb25lXG4iICkpOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworI3VuZGVmIExPQURfCisjdW5kZWYgTE9BRE1fCisjdW5kZWYgR0VUX05BTUUKKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHNmbnRfZG9uZV9mYWNlKCBUVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX01lbW9yeSAgICAgbWVtb3J5OworICAgIFNGTlRfU2VydmljZSAgc2ZudDsKKworCisgICAgaWYgKCAhZmFjZSApCisgICAgICByZXR1cm47CisKKyAgICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKyAgICBzZm50ICAgPSAoU0ZOVF9TZXJ2aWNlKWZhY2UtPnNmbnQ7CisKKyAgICBpZiAoIHNmbnQgKQorICAgIHsKKyAgICAgIC8qIGRlc3Ryb3kgdGhlIHBvc3RzY3JpcHQgbmFtZXMgdGFibGUgaWYgaXQgaXMgbG9hZGVkICovCisgICAgICBpZiAoIHNmbnQtPmZyZWVfcHNuYW1lcyApCisgICAgICAgIHNmbnQtPmZyZWVfcHNuYW1lcyggZmFjZSApOworCisgICAgICAvKiBkZXN0cm95IHRoZSBlbWJlZGRlZCBiaXRtYXBzIHRhYmxlIGlmIGl0IGlzIGxvYWRlZCAqLworICAgICAgaWYgKCBzZm50LT5mcmVlX2VibGMgKQorICAgICAgICBzZm50LT5mcmVlX2VibGMoIGZhY2UgKTsKKyAgICB9CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0JERgorICAgIC8qIGZyZWVpbmcgdGhlIGVtYmVkZGVkIEJERiBwcm9wZXJ0aWVzICovCisgICAgdHRfZmFjZV9mcmVlX2JkZl9wcm9wcyggZmFjZSApOworI2VuZGlmCisKKyAgICAvKiBmcmVlaW5nIHRoZSBrZXJuaW5nIHRhYmxlICovCisgICAgdHRfZmFjZV9kb25lX2tlcm4oIGZhY2UgKTsKKworICAgIC8qIGZyZWVpbmcgdGhlIGNvbGxlY3Rpb24gdGFibGUgKi8KKyAgICBGVF9GUkVFKCBmYWNlLT50dGNfaGVhZGVyLm9mZnNldHMgKTsKKyAgICBmYWNlLT50dGNfaGVhZGVyLmNvdW50ID0gMDsKKworICAgIC8qIGZyZWVpbmcgdGFibGUgZGlyZWN0b3J5ICovCisgICAgRlRfRlJFRSggZmFjZS0+ZGlyX3RhYmxlcyApOworICAgIGZhY2UtPm51bV90YWJsZXMgPSAwOworCisgICAgeworICAgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBGVF9GQUNFX1NUUkVBTSggZmFjZSApOworCisKKyAgICAgIC8qIHNpbXBseSByZWxlYXNlIHRoZSAnY21hcCcgdGFibGUgZnJhbWUgKi8KKyAgICAgIEZUX0ZSQU1FX1JFTEVBU0UoIGZhY2UtPmNtYXBfdGFibGUgKTsKKyAgICAgIGZhY2UtPmNtYXBfc2l6ZSA9IDA7CisgICAgfQorCisgICAgLyogZnJlZWluZyB0aGUgaG9yaXpvbnRhbCBtZXRyaWNzICovCisgICAgeworICAgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBGVF9GQUNFX1NUUkVBTSggZmFjZSApOworCisKKyAgICAgIEZUX0ZSQU1FX1JFTEVBU0UoIGZhY2UtPmhvcnpfbWV0cmljcyApOworICAgICAgRlRfRlJBTUVfUkVMRUFTRSggZmFjZS0+dmVydF9tZXRyaWNzICk7CisgICAgICBmYWNlLT5ob3J6X21ldHJpY3Nfc2l6ZSA9IDA7CisgICAgICBmYWNlLT52ZXJ0X21ldHJpY3Nfc2l6ZSA9IDA7CisgICAgfQorCisgICAgLyogZnJlZWluZyB0aGUgdmVydGljYWwgb25lcywgaWYgYW55ICovCisgICAgaWYgKCBmYWNlLT52ZXJ0aWNhbF9pbmZvICkKKyAgICB7CisgICAgICBGVF9GUkVFKCBmYWNlLT52ZXJ0aWNhbC5sb25nX21ldHJpY3MgICk7CisgICAgICBGVF9GUkVFKCBmYWNlLT52ZXJ0aWNhbC5zaG9ydF9tZXRyaWNzICk7CisgICAgICBmYWNlLT52ZXJ0aWNhbF9pbmZvID0gMDsKKyAgICB9CisKKyAgICAvKiBmcmVlaW5nIHRoZSBnYXNwIHRhYmxlICovCisgICAgRlRfRlJFRSggZmFjZS0+Z2FzcC5nYXNwUmFuZ2VzICk7CisgICAgZmFjZS0+Z2FzcC5udW1SYW5nZXMgPSAwOworCisgICAgLyogZnJlZWluZyB0aGUgbmFtZSB0YWJsZSAqLworICAgIGlmICggc2ZudCApCisgICAgICBzZm50LT5mcmVlX25hbWUoIGZhY2UgKTsKKworICAgIC8qIGZyZWVpbmcgZmFtaWx5IGFuZCBzdHlsZSBuYW1lICovCisgICAgRlRfRlJFRSggZmFjZS0+cm9vdC5mYW1pbHlfbmFtZSApOworICAgIEZUX0ZSRUUoIGZhY2UtPnJvb3Quc3R5bGVfbmFtZSApOworCisgICAgLyogZnJlZWluZyBzYml0IHNpemUgdGFibGUgKi8KKyAgICBGVF9GUkVFKCBmYWNlLT5yb290LmF2YWlsYWJsZV9zaXplcyApOworICAgIGZhY2UtPnJvb3QubnVtX2ZpeGVkX3NpemVzID0gMDsKKworICAgIEZUX0ZSRUUoIGZhY2UtPnBvc3RzY3JpcHRfbmFtZSApOworCisgICAgZmFjZS0+c2ZudCA9IDA7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9zZm9ianMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC9zZm9ianMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGJlNjJjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3Nmb2Jqcy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHNmb2Jqcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBTRk5UIG9iamVjdCBtYW5hZ2VtZW50IChzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1NGT0JKU19IX18KKyNkZWZpbmUgX19TRk9CSlNfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgc2ZudF9pbml0X2ZhY2UoIEZUX1N0cmVhbSAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgIFRUX0ZhY2UgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgIEZUX1BhcmFtZXRlciogIHBhcmFtcyApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHNmbnRfbG9hZF9mYWNlKCBGVF9TdHJlYW0gICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBUVF9GYWNlICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgZmFjZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMsCisgICAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbXMgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIHNmbnRfZG9uZV9mYWNlKCBUVF9GYWNlICBmYWNlICk7CisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19TRkRSSVZFUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGJkZi5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0YmRmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiNjM2NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGJkZi5jCkBAIC0wLDAgKzEsMjUwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dGJkZi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlIGVtYmVkZGVkIEJERiBwcm9wZXJ0aWVzIChib2R5KS4gICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDUsIDIwMDYsIDIwMTAsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmgiCisjaW5jbHVkZSAidHRiZGYuaCIKKworI2luY2x1ZGUgInNmZXJyb3JzLmgiCisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fQkRGCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfdHRiZGYKKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHR0X2ZhY2VfZnJlZV9iZGZfcHJvcHMoIFRUX0ZhY2UgIGZhY2UgKQorICB7CisgICAgVFRfQkRGICBiZGYgPSAmZmFjZS0+YmRmOworCisKKyAgICBpZiAoIGJkZi0+bG9hZGVkICkKKyAgICB7CisgICAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IEZUX0ZBQ0UoZmFjZSktPnN0cmVhbTsKKworCisgICAgICBpZiAoIGJkZi0+dGFibGUgIT0gTlVMTCApCisgICAgICAgIEZUX0ZSQU1FX1JFTEVBU0UoIGJkZi0+dGFibGUgKTsKKworICAgICAgYmRmLT50YWJsZV9lbmQgICAgPSBOVUxMOworICAgICAgYmRmLT5zdHJpbmdzICAgICAgPSBOVUxMOworICAgICAgYmRmLT5zdHJpbmdzX3NpemUgPSAwOworICAgIH0KKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHR0X2ZhY2VfbG9hZF9iZGZfcHJvcHMoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgVFRfQkRGICAgIGJkZiA9ICZmYWNlLT5iZGY7CisgICAgRlRfVUxvbmcgIGxlbmd0aDsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgIEZUX1pFUk8oIGJkZiApOworCisgICAgZXJyb3IgPSB0dF9mYWNlX2dvdG9fdGFibGUoIGZhY2UsIFRUQUdfQkRGLCBzdHJlYW0sICZsZW5ndGggKTsKKyAgICBpZiAoIGVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICBsZW5ndGggPCA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgRlRfRlJBTUVfRVhUUkFDVCggbGVuZ3RoLCBiZGYtPnRhYmxlICkgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBiZGYtPnRhYmxlX2VuZCA9IGJkZi0+dGFibGUgKyBsZW5ndGg7CisKKyAgICB7CisgICAgICBGVF9CeXRlKiAgIHAgICAgICAgICAgID0gYmRmLT50YWJsZTsKKyAgICAgIEZUX1VJbnQgICAgdmVyc2lvbiAgICAgPSBGVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgRlRfVUludCAgICBudW1fc3RyaWtlcyA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisgICAgICBGVF9VTG9uZyAgIHN0cmluZ3MgICAgID0gRlRfTkVYVF9VTE9ORyAoIHAgKTsKKyAgICAgIEZUX1VJbnQgICAgY291bnQ7CisgICAgICBGVF9CeXRlKiAgIHN0cmlrZTsKKworCisgICAgICBpZiAoIHZlcnNpb24gIT0gMHgwMDAxICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICBzdHJpbmdzIDwgOCAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgKCBzdHJpbmdzIC0gOCApIC8gNCA8IG51bV9zdHJpa2VzIHx8CisgICAgICAgICAgIHN0cmluZ3MgKyAxID4gbGVuZ3RoICAgICAgICAgICAgICApCisgICAgICB7CisgICAgICAgIGdvdG8gQmFkVGFibGU7CisgICAgICB9CisKKyAgICAgIGJkZi0+bnVtX3N0cmlrZXMgID0gbnVtX3N0cmlrZXM7CisgICAgICBiZGYtPnN0cmluZ3MgICAgICA9IGJkZi0+dGFibGUgKyBzdHJpbmdzOworICAgICAgYmRmLT5zdHJpbmdzX3NpemUgPSBsZW5ndGggLSBzdHJpbmdzOworCisgICAgICBjb3VudCAgPSBiZGYtPm51bV9zdHJpa2VzOworICAgICAgcCAgICAgID0gYmRmLT50YWJsZSArIDg7CisgICAgICBzdHJpa2UgPSBwICsgY291bnQgKiA0OworCisKKyAgICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tICkKKyAgICAgIHsKKyAgICAgICAgRlRfVUludCAgbnVtX2l0ZW1zID0gRlRfUEVFS19VU0hPUlQoIHAgKyAyICk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgdGhlIHZhbHVlIHNldHMgdGhlbXNlbHZlcywgc2luY2UgdGhpcworICAgICAgICAgKiAgaXMgZG9uZSBsYXRlci4KKyAgICAgICAgICovCisgICAgICAgIHN0cmlrZSArPSAxMCAqIG51bV9pdGVtczsKKworICAgICAgICBwICs9IDQ7CisgICAgICB9CisKKyAgICAgIGlmICggc3RyaWtlID4gYmRmLT5zdHJpbmdzICkKKyAgICAgICAgZ290byBCYWRUYWJsZTsKKyAgICB9CisKKyAgICBiZGYtPmxvYWRlZCA9IDE7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisKKyAgQmFkVGFibGU6CisgICAgRlRfRlJBTUVfUkVMRUFTRSggYmRmLT50YWJsZSApOworICAgIEZUX1pFUk8oIGJkZiApOworICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKyAgICBnb3RvIEV4aXQ7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2ZpbmRfYmRmX3Byb3AoIFRUX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICAgICAgcHJvcGVydHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBCREZfUHJvcGVydHlSZWMgICphcHJvcCApCisgIHsKKyAgICBUVF9CREYgICAgIGJkZiAgID0gJmZhY2UtPmJkZjsKKyAgICBGVF9TaXplICAgIHNpemUgID0gRlRfRkFDRShmYWNlKS0+c2l6ZTsKKyAgICBGVF9FcnJvciAgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX0J5dGUqICAgcDsKKyAgICBGVF9VSW50ICAgIGNvdW50OworICAgIEZUX0J5dGUqICAgc3RyaWtlOworICAgIEZUX09mZnNldCAgcHJvcGVydHlfbGVuOworCisKKyAgICBhcHJvcC0+dHlwZSA9IEJERl9QUk9QRVJUWV9UWVBFX05PTkU7CisKKyAgICBpZiAoIGJkZi0+bG9hZGVkID09IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gdHRfZmFjZV9sb2FkX2JkZl9wcm9wcyggZmFjZSwgRlRfRkFDRSggZmFjZSApLT5zdHJlYW0gKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgY291bnQgID0gYmRmLT5udW1fc3RyaWtlczsKKyAgICBwICAgICAgPSBiZGYtPnRhYmxlICsgODsKKyAgICBzdHJpa2UgPSBwICsgNCAqIGNvdW50OworCisgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGlmICggc2l6ZSA9PSBOVUxMIHx8IHByb3BlcnR5X25hbWUgPT0gTlVMTCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBwcm9wZXJ0eV9sZW4gPSBmdF9zdHJsZW4oIHByb3BlcnR5X25hbWUgKTsKKyAgICBpZiAoIHByb3BlcnR5X2xlbiA9PSAwICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tICkKKyAgICB7CisgICAgICBGVF9VSW50ICBfcHBlbSAgPSBGVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgRlRfVUludCAgX2NvdW50ID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKworICAgICAgaWYgKCBfcHBlbSA9PSBzaXplLT5tZXRyaWNzLnlfcHBlbSApCisgICAgICB7CisgICAgICAgIGNvdW50ID0gX2NvdW50OworICAgICAgICBnb3RvIEZvdW5kU3RyaWtlOworICAgICAgfQorCisgICAgICBzdHJpa2UgKz0gMTAgKiBfY291bnQ7CisgICAgfQorICAgIGdvdG8gRXhpdDsKKworICBGb3VuZFN0cmlrZToKKyAgICBwID0gc3RyaWtlOworICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tICkKKyAgICB7CisgICAgICBGVF9VSW50ICB0eXBlID0gRlRfUEVFS19VU0hPUlQoIHAgKyA0ICk7CisKKyAgICAgIGlmICggKCB0eXBlICYgMHgxMCApICE9IDAgKQorICAgICAgeworICAgICAgICBGVF9VSW50MzIgIG5hbWVfb2Zmc2V0ID0gRlRfUEVFS19VTE9ORyggcCAgICAgKTsKKyAgICAgICAgRlRfVUludDMyICB2YWx1ZSAgICAgICA9IEZUX1BFRUtfVUxPTkcoIHAgKyA2ICk7CisKKyAgICAgICAgLyogYmUgYSBiaXQgcGFyYW5vaWQgZm9yIGludmFsaWQgZW50cmllcyBoZXJlICovCisgICAgICAgIGlmICggbmFtZV9vZmZzZXQgPCBiZGYtPnN0cmluZ3Nfc2l6ZSAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICBwcm9wZXJ0eV9sZW4gPCBiZGYtPnN0cmluZ3Nfc2l6ZSAtIG5hbWVfb2Zmc2V0ICAgICAmJgorICAgICAgICAgICAgIGZ0X3N0cm5jbXAoIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIqKWJkZi0+c3RyaW5ncyArIG5hbWVfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGJkZi0+c3RyaW5nc19zaXplIC0gbmFtZV9vZmZzZXQgKSA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgIHN3aXRjaCAoIHR5cGUgJiAweDBGICkKKyAgICAgICAgICB7CisgICAgICAgICAgY2FzZSAweDAwOiAgLyogc3RyaW5nICovCisgICAgICAgICAgY2FzZSAweDAxOiAgLyogYXRvbXMgKi8KKyAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgdGhlIGNvbnRlbnQgaXMgcmVhbGx5IDAtdGVybWluYXRlZCAqLworICAgICAgICAgICAgaWYgKCB2YWx1ZSA8IGJkZi0+c3RyaW5nc19zaXplICYmCisgICAgICAgICAgICAgICAgIGZ0X21lbWNociggYmRmLT5zdHJpbmdzICsgdmFsdWUsIDAsIGJkZi0+c3RyaW5nc19zaXplICkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBhcHJvcC0+dHlwZSAgID0gQkRGX1BST1BFUlRZX1RZUEVfQVRPTTsKKyAgICAgICAgICAgICAgYXByb3AtPnUuYXRvbSA9IChjb25zdCBjaGFyKiliZGYtPnN0cmluZ3MgKyB2YWx1ZTsKKyAgICAgICAgICAgICAgZXJyb3IgICAgICAgICA9IEZUX0Vycl9PazsKKyAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIDB4MDI6CisgICAgICAgICAgICBhcHJvcC0+dHlwZSAgICAgID0gQkRGX1BST1BFUlRZX1RZUEVfSU5URUdFUjsKKyAgICAgICAgICAgIGFwcm9wLT51LmludGVnZXIgPSAoRlRfSW50MzIpdmFsdWU7CisgICAgICAgICAgICBlcnJvciAgICAgICAgICAgID0gRlRfRXJyX09rOworICAgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgICAgY2FzZSAweDAzOgorICAgICAgICAgICAgYXByb3AtPnR5cGUgICAgICAgPSBCREZfUFJPUEVSVFlfVFlQRV9DQVJESU5BTDsKKyAgICAgICAgICAgIGFwcm9wLT51LmNhcmRpbmFsID0gdmFsdWU7CisgICAgICAgICAgICBlcnJvciAgICAgICAgICAgICA9IEZUX0Vycl9PazsKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICA7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBwICs9IDEwOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9CREYgKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGJkZi5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0YmRmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkMjAyMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGJkZi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0YmRmLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcnVlVHlwZSBhbmQgT3BlblR5cGUgZW1iZWRkZWQgQkRGIHByb3BlcnRpZXMgKHNwZWNpZmljYXRpb24pLiAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwNSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1RUQkRGX0hfXworI2RlZmluZSBfX1RUQkRGX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAidHRsb2FkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGJkZi5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICB0dF9mYWNlX2ZyZWVfYmRmX3Byb3BzKCBUVF9GYWNlICBmYWNlICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2ZpbmRfYmRmX3Byb3AoIFRUX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogICAgICAgcHJvcGVydHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBCREZfUHJvcGVydHlSZWMgICphcHJvcCApOworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fVFRCREZfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRjbWFwLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRjbWFwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY4ZWE3ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGNtYXAuYwpAQCAtMCwwICsxLDM1NjAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0Y21hcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcnVlVHlwZSBjaGFyYWN0ZXIgbWFwcGluZyB0YWJsZSAoY21hcCkgc3VwcG9ydCAoYm9keSkuICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMi0yMDEwLCAyMDEyLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKworI2luY2x1ZGUgInNmZXJyb3JzLmgiICAgICAgICAgICAvKiBtdXN0IGNvbWUgYmVmb3JlIEZUX0lOVEVSTkFMX1ZBTElEQVRFX0ggKi8KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR2YWxpZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICJ0dGxvYWQuaCIKKyNpbmNsdWRlICJ0dGNtYXAuaCIKKyNpbmNsdWRlICJzZm50cGljLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV90dGNtYXAKKworCisjZGVmaW5lIFRUX1BFRUtfU0hPUlQgICBGVF9QRUVLX1NIT1JUCisjZGVmaW5lIFRUX1BFRUtfVVNIT1JUICBGVF9QRUVLX1VTSE9SVAorI2RlZmluZSBUVF9QRUVLX1VJTlQyNCAgRlRfUEVFS19VT0ZGMworI2RlZmluZSBUVF9QRUVLX0xPTkcgICAgRlRfUEVFS19MT05HCisjZGVmaW5lIFRUX1BFRUtfVUxPTkcgICBGVF9QRUVLX1VMT05HCisKKyNkZWZpbmUgVFRfTkVYVF9TSE9SVCAgIEZUX05FWFRfU0hPUlQKKyNkZWZpbmUgVFRfTkVYVF9VU0hPUlQgIEZUX05FWFRfVVNIT1JUCisjZGVmaW5lIFRUX05FWFRfVUlOVDI0ICBGVF9ORVhUX1VPRkYzCisjZGVmaW5lIFRUX05FWFRfTE9ORyAgICBGVF9ORVhUX0xPTkcKKyNkZWZpbmUgVFRfTkVYVF9VTE9ORyAgIEZUX05FWFRfVUxPTkcKKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICB0dF9jbWFwX2luaXQoIFRUX0NNYXAgICBjbWFwLAorICAgICAgICAgICAgICAgIEZUX0J5dGUqICB0YWJsZSApCisgIHsKKyAgICBjbWFwLT5kYXRhID0gdGFibGU7CisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUQUJMRSBPVkVSVklFVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIE5BTUUgICAgICAgIE9GRlNFVCAgICAgICAgIFRZUEUgICAgICAgICAgREVTQ1JJUFRJT04gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZm9ybWF0ICAgICAgMCAgICAgICAgICAgICAgVVNIT1JUICAgICAgICBtdXN0IGJlIDAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGxlbmd0aCAgICAgIDIgICAgICAgICAgICAgIFVTSE9SVCAgICAgICAgdGFibGUgbGVuZ3RoIGluIGJ5dGVzICAgICAgKi8KKyAgLyogICBsYW5ndWFnZSAgICA0ICAgICAgICAgICAgICBVU0hPUlQgICAgICAgIE1hYyBsYW5ndWFnZSBjb2RlICAgICAgICAgICovCisgIC8qICAgZ2x5cGhfaWRzICAgNiAgICAgICAgICAgICAgQllURVsyNTZdICAgICBhcnJheSBvZiBnbHlwaCBpbmRpY2VzICAgICAqLworICAvKiAgICAgICAgICAgICAgIDI2MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZmRlZiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMAorCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICB0dF9jbWFwMF92YWxpZGF0ZSggRlRfQnl0ZSogICAgICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1ZhbGlkYXRvciAgdmFsaWQgKQorICB7CisgICAgRlRfQnl0ZSogIHAgICAgICA9IHRhYmxlICsgMjsKKyAgICBGVF9VSW50ICAgbGVuZ3RoID0gVFRfTkVYVF9VU0hPUlQoIHAgKTsKKworCisgICAgaWYgKCB0YWJsZSArIGxlbmd0aCA+IHZhbGlkLT5saW1pdCB8fCBsZW5ndGggPCAyNjIgKQorICAgICAgRlRfSU5WQUxJRF9UT09fU0hPUlQ7CisKKyAgICAvKiBjaGVjayBnbHlwaCBpbmRpY2VzIHdoZW5ldmVyIG5lY2Vzc2FyeSAqLworICAgIGlmICggdmFsaWQtPmxldmVsID49IEZUX1ZBTElEQVRFX1RJR0hUICkKKyAgICB7CisgICAgICBGVF9VSW50ICBuLCBpZHg7CisKKworICAgICAgcCA9IHRhYmxlICsgNjsKKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgMjU2OyBuKysgKQorICAgICAgeworICAgICAgICBpZHggPSAqcCsrOworICAgICAgICBpZiAoIGlkeCA+PSBUVF9WQUxJRF9HTFlQSF9DT1VOVCggdmFsaWQgKSApCisgICAgICAgICAgRlRfSU5WQUxJRF9HTFlQSF9JRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQgKQorICB0dF9jbWFwMF9jaGFyX2luZGV4KCBUVF9DTWFwICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlICkKKyAgeworICAgIEZUX0J5dGUqICB0YWJsZSA9IGNtYXAtPmRhdGE7CisKKworICAgIHJldHVybiBjaGFyX2NvZGUgPCAyNTYgPyB0YWJsZVs2ICsgY2hhcl9jb2RlXSA6IDA7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludDMyICkKKyAgdHRfY21hcDBfY2hhcl9uZXh0KCBUVF9DTWFwICAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgKnBjaGFyX2NvZGUgKQorICB7CisgICAgRlRfQnl0ZSogICB0YWJsZSAgICA9IGNtYXAtPmRhdGE7CisgICAgRlRfVUludDMyICBjaGFyY29kZSA9ICpwY2hhcl9jb2RlOworICAgIEZUX1VJbnQzMiAgcmVzdWx0ICAgPSAwOworICAgIEZUX1VJbnQgICAgZ2luZGV4ICAgPSAwOworCisKKyAgICB0YWJsZSArPSA2OyAgLyogZ28gdG8gZ2x5cGggSURzICovCisgICAgd2hpbGUgKCArK2NoYXJjb2RlIDwgMjU2ICkKKyAgICB7CisgICAgICBnaW5kZXggPSB0YWJsZVtjaGFyY29kZV07CisgICAgICBpZiAoIGdpbmRleCAhPSAwICkKKyAgICAgIHsKKyAgICAgICAgcmVzdWx0ID0gY2hhcmNvZGU7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgICpwY2hhcl9jb2RlID0gcmVzdWx0OworICAgIHJldHVybiBnaW5kZXg7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICB0dF9jbWFwMF9nZXRfaW5mbyggVFRfQ01hcCAgICAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgVFRfQ01hcEluZm8gICpjbWFwX2luZm8gKQorICB7CisgICAgRlRfQnl0ZSogIHAgPSBjbWFwLT5kYXRhICsgNDsKKworCisgICAgY21hcF9pbmZvLT5mb3JtYXQgICA9IDA7CisgICAgY21hcF9pbmZvLT5sYW5ndWFnZSA9IChGVF9VTG9uZylUVF9QRUVLX1VTSE9SVCggcCApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfREVGSU5FX1RUX0NNQVAoCisgICAgdHRfY21hcDBfY2xhc3NfcmVjLAorICAgIHNpemVvZiAoIFRUX0NNYXBSZWMgKSwKKworICAgIChGVF9DTWFwX0luaXRGdW5jKSAgICAgdHRfY21hcF9pbml0LAorICAgIChGVF9DTWFwX0RvbmVGdW5jKSAgICAgTlVMTCwKKyAgICAoRlRfQ01hcF9DaGFySW5kZXhGdW5jKXR0X2NtYXAwX2NoYXJfaW5kZXgsCisgICAgKEZUX0NNYXBfQ2hhck5leHRGdW5jKSB0dF9jbWFwMF9jaGFyX25leHQsCisKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisKKyAgICAwLAorICAgIChUVF9DTWFwX1ZhbGlkYXRlRnVuYyl0dF9jbWFwMF92YWxpZGF0ZSwKKyAgICAoVFRfQ01hcF9JbmZvX0dldEZ1bmMpdHRfY21hcDBfZ2V0X2luZm8gKQorCisjZW5kaWYgLyogVFRfQ09ORklHX0NNQVBfRk9STUFUXzAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqIFRoaXMgaXMgdXNlZCBmb3IgY2VydGFpbiBDSksgZW5jb2RpbmdzIHRoYXQgZW5jb2RlIHRleHQgaW4gYSAgKioqKiovCisgIC8qKioqKiBtaXhlZCA4LzE2IGJpdHMgZW5jb2RpbmcgYWxvbmcgdGhlIGZvbGxvd2luZyBsaW5lczogICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICogQ2VydGFpbiBieXRlIHZhbHVlcyBjb3JyZXNwb25kIHRvIGFuIDgtYml0IGNoYXJhY3RlciBjb2RlICAgKioqKiovCisgIC8qKioqKiAgICh0eXBpY2FsbHkgaW4gdGhlIHJhbmdlIDAuLjEyNyBmb3IgQVNDSUkgY29tcGF0aWJpbGl0eSkuICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICogQ2VydGFpbiBieXRlIHZhbHVlcyBzaWduYWwgdGhlIGZpcnN0IGJ5dGUgb2YgYSAyLWJ5dGUgICAgICAgKioqKiovCisgIC8qKioqKiAgIGNoYXJhY3RlciBjb2RlIChidXQgdGhlc2UgdmFsdWVzIGFyZSBhbHNvIHZhbGlkIGFzIHRoZSAgICAgICoqKioqLworICAvKioqKiogICBzZWNvbmQgYnl0ZSBvZiBhIDItYnl0ZSBjaGFyYWN0ZXIpLiAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiBUaGUgZm9sbG93aW5nIGNoYXJtYXAgbG9va3VwIGFuZCBpdGVyYXRpb24gZnVuY3Rpb25zIGFsbCAgICAgICoqKioqLworICAvKioqKiogYXNzdW1lIHRoYXQgdGhlIHZhbHVlICJjaGFyY29kZSIgY29ycmVzcG9uZCB0byBmb2xsb3dpbmc6ICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgIC0gRm9yIG9uZSBieXRlIGNoYXJhY3RlcnMsICJjaGFyY29kZSIgaXMgc2ltcGx5IHRoZSAgICAgICAgICoqKioqLworICAvKioqKiogICAgIGNoYXJhY3RlciBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgIC0gRm9yIHR3byBieXRlIGNoYXJhY3RlcnMsICJjaGFyY29kZSIgaXMgdGhlIDItYnl0ZSAgICAgICAgICoqKioqLworICAvKioqKiogICAgIGNoYXJhY3RlciBjb2RlIGluIGJpZyBlbmRpYW4gZm9ybWF0LiAgTW9yZSBleGFjdGx5OiAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAoY2hhcmNvZGUgPj4gOCkgICAgaXMgdGhlIGZpcnN0IGJ5dGUgdmFsdWUgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgKGNoYXJjb2RlICYgMHhGRikgIGlzIHRoZSBzZWNvbmQgYnl0ZSB2YWx1ZSAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiBOb3RlIHRoYXQgbm90IGFsbCB2YWx1ZXMgb2YgImNoYXJjb2RlIiBhcmUgdmFsaWQgYWNjb3JkaW5nICAgICoqKioqLworICAvKioqKiogdG8gdGhlc2UgcnVsZXMsIGFuZCB0aGUgZnVuY3Rpb24gbW9kZXJhdGVseSBjaGVjayB0aGUgICAgICAgICAqKioqKi8KKyAgLyoqKioqIGFyZ3VtZW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUQUJMRSBPVkVSVklFVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIE5BTUUgICAgICAgIE9GRlNFVCAgICAgICAgIFRZUEUgICAgICAgICAgICBERVNDUklQVElPTiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZm9ybWF0ICAgICAgMCAgICAgICAgICAgICAgVVNIT1JUICAgICAgICAgIG11c3QgYmUgMiAgICAgICAgICAgICAgICAqLworICAvKiAgIGxlbmd0aCAgICAgIDIgICAgICAgICAgICAgIFVTSE9SVCAgICAgICAgICB0YWJsZSBsZW5ndGggaW4gYnl0ZXMgICAgKi8KKyAgLyogICBsYW5ndWFnZSAgICA0ICAgICAgICAgICAgICBVU0hPUlQgICAgICAgICAgTWFjIGxhbmd1YWdlIGNvZGUgICAgICAgICovCisgIC8qICAga2V5cyAgICAgICAgNiAgICAgICAgICAgICAgVVNIT1JUWzI1Nl0gICAgIHN1Yi1oZWFkZXIga2V5cyAgICAgICAgICAqLworICAvKiAgIHN1YnMgICAgICAgIDUxOCAgICAgICAgICAgIFNVQkhFQURbTlNVQlNdICBzdWItaGVhZGVycyBhcnJheSAgICAgICAgKi8KKyAgLyogICBnbHlwaF9pZHMgICA1MTgrTlNVQio4ICAgICBVU0hPUlRbXSAgICAgICAgZ2x5cGggSUQgYXJyYXkgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgYGtleXMnIHRhYmxlIGlzIHVzZWQgdG8gbWFwIGNoYXJjb2RlIGhpZ2gtYnl0ZXMgdG8gc3ViLWhlYWRlcnMuICAgKi8KKyAgLyogVGhlIHZhbHVlIG9mIGBOU1VCUycgaXMgdGhlIG51bWJlciBvZiBzdWItaGVhZGVycyBkZWZpbmVkIGluIHRoZSAgICAgICovCisgIC8qIHRhYmxlIGFuZCBpcyBjb21wdXRlZCBieSBmaW5kaW5nIHRoZSBtYXhpbXVtIG9mIHRoZSBga2V5cycgdGFibGUuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTm90ZSB0aGF0IGZvciBhbnkgbiwgYGtleXNbbl0nIGlzIGEgYnl0ZSBvZmZzZXQgd2l0aGluIHRoZSBgc3VicycgICAgICovCisgIC8qIHRhYmxlLCBpLmUuLCBpdCBpcyB0aGUgY29ycmVzcG9uZGluZyBzdWItaGVhZGVyIGluZGV4IG11bHRpcGxpZWQgICAgICAqLworICAvKiBieSA4LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEVhY2ggc3ViLWhlYWRlciBoYXMgdGhlIGZvbGxvd2luZyBmb3JtYXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBOQU1FICAgICAgICBPRkZTRVQgICAgICBUWVBFICAgICAgICAgICAgREVTQ1JJUFRJT04gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGZpcnN0ICAgICAgIDAgICAgICAgICAgIFVTSE9SVCAgICAgICAgICBmaXJzdCB2YWxpZCBsb3ctYnl0ZSAgICAgICAgKi8KKyAgLyogICBjb3VudCAgICAgICAyICAgICAgICAgICBVU0hPUlQgICAgICAgICAgbnVtYmVyIG9mIHZhbGlkIGxvdy1ieXRlcyAgICovCisgIC8qICAgZGVsdGEgICAgICAgNCAgICAgICAgICAgU0hPUlQgICAgICAgICAgIHNlZSBiZWxvdyAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIG9mZnNldCAgICAgIDYgICAgICAgICAgIFVTSE9SVCAgICAgICAgICBzZWUgYmVsb3cgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEEgc3ViLWhlYWRlciBkZWZpbmVzLCBmb3IgZWFjaCBoaWdoLWJ5dGUsIHRoZSByYW5nZSBvZiB2YWxpZCAgICAgICAgICAqLworICAvKiBsb3ctYnl0ZXMgd2l0aGluIHRoZSBjaGFybWFwLiAgTm90ZSB0aGF0IHRoZSByYW5nZSBkZWZpbmVkIGJ5IGBmaXJzdCcgKi8KKyAgLyogYW5kIGBjb3VudCcgbXVzdCBiZSBjb21wbGV0ZWx5IGluY2x1ZGVkIGluIHRoZSBpbnRlcnZhbCBbMC4uMjU1XSAgICAgICovCisgIC8qIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSWYgYSBjaGFyYWN0ZXIgY29kZSBpcyBjb250YWluZWQgd2l0aGluIGEgZ2l2ZW4gc3ViLWhlYWRlciwgdGhlbiAgICAgICovCisgIC8qIG1hcHBpbmcgaXQgdG8gYSBnbHlwaCBpbmRleCBpcyBkb25lIGFzIGZvbGxvd3M6ICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogKiBUaGUgdmFsdWUgb2YgYG9mZnNldCcgaXMgcmVhZC4gIFRoaXMgaXMgYSBfYnl0ZV8gZGlzdGFuY2UgZnJvbSB0aGUgICovCisgIC8qICAgbG9jYXRpb24gb2YgdGhlIGBvZmZzZXQnIGZpZWxkIGl0c2VsZiBpbnRvIGEgc2xpY2Ugb2YgdGhlICAgICAgICAgICAqLworICAvKiAgIGBnbHlwaF9pZHMnIHRhYmxlLiAgTGV0J3MgY2FsbCBpdCBgc2xpY2UnIChpdCBpcyBhIFVTSE9SVFtdIHRvbykuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICogVGhlIHZhbHVlIGBzbGljZVtjaGFyLmxvIC0gZmlyc3RdJyBpcyByZWFkLiAgSWYgaXQgaXMgMCwgdGhlcmUgaXMgICAqLworICAvKiAgIG5vIGdseXBoIGZvciB0aGUgY2hhcmNvZGUuICBPdGhlcndpc2UsIHRoZSB2YWx1ZSBvZiBgZGVsdGEnIGlzICAgICAgKi8KKyAgLyogICBhZGRlZCB0byBpdCAobW9kdWxvIDY1NTM2KSB0byBmb3JtIGEgbmV3IGdseXBoIGluZGV4LiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJdCBpcyB1cCB0byB0aGUgdmFsaWRhdGlvbiByb3V0aW5lIHRvIGNoZWNrIHRoYXQgYWxsIG9mZnNldHMgZmFsbCAgICAgKi8KKyAgLyogd2l0aGluIHRoZSBnbHlwaCBJRHMgdGFibGUgKGFuZCBub3Qgd2l0aGluIHRoZSBgc3VicycgdGFibGUgaXRzZWxmIG9yICovCisgIC8qIG91dHNpZGUgb2YgdGhlIENNYXApLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmZGVmIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF8yCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXAyX3ZhbGlkYXRlKCBGVF9CeXRlKiAgICAgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgRlRfVmFsaWRhdG9yICB2YWxpZCApCisgIHsKKyAgICBGVF9CeXRlKiAgcCAgICAgID0gdGFibGUgKyAyOyAgICAgICAgICAgLyogc2tpcCBmb3JtYXQgKi8KKyAgICBGVF9VSW50ICAgbGVuZ3RoID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKyAgICBGVF9VSW50ICAgbiwgbWF4X3N1YnM7CisgICAgRlRfQnl0ZSogIGtleXM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGtleXMgdGFibGUgKi8KKyAgICBGVF9CeXRlKiAgc3ViczsgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3ViLWhlYWRlcnMgKi8KKyAgICBGVF9CeXRlKiAgZ2x5cGhfaWRzOyAgICAgICAgICAgICAgICAgICAgLyogZ2x5cGggSUQgYXJyYXkgKi8KKworCisgICAgaWYgKCB0YWJsZSArIGxlbmd0aCA+IHZhbGlkLT5saW1pdCB8fCBsZW5ndGggPCA2ICsgNTEyICkKKyAgICAgIEZUX0lOVkFMSURfVE9PX1NIT1JUOworCisgICAga2V5cyA9IHRhYmxlICsgNjsKKworICAgIC8qIHBhcnNlIGtleXMgdG8gY29tcHV0ZSBzdWItaGVhZGVycyBjb3VudCAqLworICAgIHAgICAgICAgID0ga2V5czsKKyAgICBtYXhfc3VicyA9IDA7CisgICAgZm9yICggbiA9IDA7IG4gPCAyNTY7IG4rKyApCisgICAgeworICAgICAgRlRfVUludCAgaWR4ID0gVFRfTkVYVF9VU0hPUlQoIHAgKTsKKworCisgICAgICAvKiB2YWx1ZSBtdXN0IGJlIG11bHRpcGxlIG9mIDggKi8KKyAgICAgIGlmICggdmFsaWQtPmxldmVsID49IEZUX1ZBTElEQVRFX1BBUkFOT0lEICYmICggaWR4ICYgNyApICE9IDAgKQorICAgICAgICBGVF9JTlZBTElEX0RBVEE7CisKKyAgICAgIGlkeCA+Pj0gMzsKKworICAgICAgaWYgKCBpZHggPiBtYXhfc3VicyApCisgICAgICAgIG1heF9zdWJzID0gaWR4OworICAgIH0KKworICAgIEZUX0FTU0VSVCggcCA9PSB0YWJsZSArIDUxOCApOworCisgICAgc3VicyAgICAgID0gcDsKKyAgICBnbHlwaF9pZHMgPSBzdWJzICsgKG1heF9zdWJzICsgMSkgKiA4OworICAgIGlmICggZ2x5cGhfaWRzID4gdmFsaWQtPmxpbWl0ICkKKyAgICAgIEZUX0lOVkFMSURfVE9PX1NIT1JUOworCisgICAgLyogcGFyc2Ugc3ViLWhlYWRlcnMgKi8KKyAgICBmb3IgKCBuID0gMDsgbiA8PSBtYXhfc3ViczsgbisrICkKKyAgICB7CisgICAgICBGVF9VSW50ICAgZmlyc3RfY29kZSwgY29kZV9jb3VudCwgb2Zmc2V0OworICAgICAgRlRfSW50ICAgIGRlbHRhOworICAgICAgRlRfQnl0ZSogIGlkczsKKworCisgICAgICBmaXJzdF9jb2RlID0gVFRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICAgIGNvZGVfY291bnQgPSBUVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgZGVsdGEgICAgICA9IFRUX05FWFRfU0hPUlQoIHAgKTsKKyAgICAgIG9mZnNldCAgICAgPSBUVF9ORVhUX1VTSE9SVCggcCApOworCisgICAgICAvKiBtYW55IER5bmFsYWIgZm9udHMgaGF2ZSBlbXB0eSBzdWItaGVhZGVycyAqLworICAgICAgaWYgKCBjb2RlX2NvdW50ID09IDAgKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgLyogY2hlY2sgcmFuZ2Ugd2l0aGluIDAuLjI1NSAqLworICAgICAgaWYgKCB2YWxpZC0+bGV2ZWwgPj0gRlRfVkFMSURBVEVfUEFSQU5PSUQgKQorICAgICAgeworICAgICAgICBpZiAoIGZpcnN0X2NvZGUgPj0gMjU2IHx8IGZpcnN0X2NvZGUgKyBjb2RlX2NvdW50ID4gMjU2ICkKKyAgICAgICAgICBGVF9JTlZBTElEX0RBVEE7CisgICAgICB9CisKKyAgICAgIC8qIGNoZWNrIG9mZnNldCAqLworICAgICAgaWYgKCBvZmZzZXQgIT0gMCApCisgICAgICB7CisgICAgICAgIGlkcyA9IHAgLSAyICsgb2Zmc2V0OworICAgICAgICBpZiAoIGlkcyA8IGdseXBoX2lkcyB8fCBpZHMgKyBjb2RlX2NvdW50KjIgPiB0YWJsZSArIGxlbmd0aCApCisgICAgICAgICAgRlRfSU5WQUxJRF9PRkZTRVQ7CisKKyAgICAgICAgLyogY2hlY2sgZ2x5cGggSURzICovCisgICAgICAgIGlmICggdmFsaWQtPmxldmVsID49IEZUX1ZBTElEQVRFX1RJR0hUICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0J5dGUqICBsaW1pdCA9IHAgKyBjb2RlX2NvdW50ICogMjsKKyAgICAgICAgICBGVF9VSW50ICAgaWR4OworCisKKyAgICAgICAgICBmb3IgKCA7IHAgPCBsaW1pdDsgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlkeCA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisgICAgICAgICAgICBpZiAoIGlkeCAhPSAwICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWR4ID0gKCBpZHggKyBkZWx0YSApICYgMHhGRkZGVTsKKyAgICAgICAgICAgICAgaWYgKCBpZHggPj0gVFRfVkFMSURfR0xZUEhfQ09VTlQoIHZhbGlkICkgKQorICAgICAgICAgICAgICAgIEZUX0lOVkFMSURfR0xZUEhfSUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgLyogcmV0dXJuIHN1YiBoZWFkZXIgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIGNoYXJhY3RlciBjb2RlICovCisgIC8qIE5VTEwgb24gaW52YWxpZCBjaGFyY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfQnl0ZSoKKyAgdHRfY21hcDJfZ2V0X3N1YmhlYWRlciggRlRfQnl0ZSogICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBjaGFyX2NvZGUgKQorICB7CisgICAgRlRfQnl0ZSogIHJlc3VsdCA9IE5VTEw7CisKKworICAgIGlmICggY2hhcl9jb2RlIDwgMHgxMDAwMFVMICkKKyAgICB7CisgICAgICBGVF9VSW50ICAgY2hhcl9sbyA9IChGVF9VSW50KSggY2hhcl9jb2RlICYgMHhGRiApOworICAgICAgRlRfVUludCAgIGNoYXJfaGkgPSAoRlRfVUludCkoIGNoYXJfY29kZSA+PiA4ICk7CisgICAgICBGVF9CeXRlKiAgcCAgICAgICA9IHRhYmxlICsgNjsgICAgLyoga2V5cyB0YWJsZSAqLworICAgICAgRlRfQnl0ZSogIHN1YnMgICAgPSB0YWJsZSArIDUxODsgIC8qIHN1YmhlYWRlcnMgdGFibGUgKi8KKyAgICAgIEZUX0J5dGUqICBzdWI7CisKKworICAgICAgaWYgKCBjaGFyX2hpID09IDAgKQorICAgICAgeworICAgICAgICAvKiBhbiA4LWJpdCBjaGFyYWN0ZXIgY29kZSAtLSB3ZSB1c2Ugc3ViSGVhZGVyIDAgaW4gdGhpcyBjYXNlICovCisgICAgICAgIC8qIHRvIHRlc3Qgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgaXMgaW4gdGhlIGNoYXJtYXAgICAgICAgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICBzdWIgPSBzdWJzOyAgLyoganVtcCB0byBmaXJzdCBzdWItaGVhZGVyICovCisKKyAgICAgICAgLyogY2hlY2sgdGhhdCB0aGUgc3ViLWhlYWRlciBmb3IgdGhpcyBieXRlIGlzIDAsIHdoaWNoICovCisgICAgICAgIC8qIGluZGljYXRlcyB0aGF0IGl0IGlzIHJlYWxseSBhIHZhbGlkIG9uZS1ieXRlIHZhbHVlICAqLworICAgICAgICAvKiBPdGhlcndpc2UsIHJldHVybiAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIHAgKz0gY2hhcl9sbyAqIDI7CisgICAgICAgIGlmICggVFRfUEVFS19VU0hPUlQoIHAgKSAhPSAwICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIGEgMTYtYml0IGNoYXJhY3RlciBjb2RlICovCisKKyAgICAgICAgLyoganVtcCB0byBrZXkgZW50cnkgICovCisgICAgICAgIHAgICs9IGNoYXJfaGkgKiAyOworICAgICAgICAvKiBqdW1wIHRvIHN1Yi1oZWFkZXIgKi8KKyAgICAgICAgc3ViID0gc3VicyArICggRlRfUEFEX0ZMT09SKCBUVF9QRUVLX1VTSE9SVCggcCApLCA4ICkgKTsKKworICAgICAgICAvKiBjaGVjayB0aGF0IHRoZSBoaWdoIGJ5dGUgaXNuJ3QgYSB2YWxpZCBvbmUtYnl0ZSB2YWx1ZSAqLworICAgICAgICBpZiAoIHN1YiA9PSBzdWJzICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisgICAgICByZXN1bHQgPSBzdWI7CisgICAgfQorICBFeGl0OgorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludCApCisgIHR0X2NtYXAyX2NoYXJfaW5kZXgoIFRUX0NNYXAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBjaGFyX2NvZGUgKQorICB7CisgICAgRlRfQnl0ZSogIHRhYmxlICAgPSBjbWFwLT5kYXRhOworICAgIEZUX1VJbnQgICByZXN1bHQgID0gMDsKKyAgICBGVF9CeXRlKiAgc3ViaGVhZGVyOworCisKKyAgICBzdWJoZWFkZXIgPSB0dF9jbWFwMl9nZXRfc3ViaGVhZGVyKCB0YWJsZSwgY2hhcl9jb2RlICk7CisgICAgaWYgKCBzdWJoZWFkZXIgKQorICAgIHsKKyAgICAgIEZUX0J5dGUqICBwICAgPSBzdWJoZWFkZXI7CisgICAgICBGVF9VSW50ICAgaWR4ID0gKEZUX1VJbnQpKGNoYXJfY29kZSAmIDB4RkYpOworICAgICAgRlRfVUludCAgIHN0YXJ0LCBjb3VudDsKKyAgICAgIEZUX0ludCAgICBkZWx0YTsKKyAgICAgIEZUX1VJbnQgICBvZmZzZXQ7CisKKworICAgICAgc3RhcnQgID0gVFRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICAgIGNvdW50ICA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisgICAgICBkZWx0YSAgPSBUVF9ORVhUX1NIT1JUICggcCApOworICAgICAgb2Zmc2V0ID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKworICAgICAgaWR4IC09IHN0YXJ0OworICAgICAgaWYgKCBpZHggPCBjb3VudCAmJiBvZmZzZXQgIT0gMCApCisgICAgICB7CisgICAgICAgIHAgICs9IG9mZnNldCArIDIgKiBpZHg7CisgICAgICAgIGlkeCA9IFRUX1BFRUtfVVNIT1JUKCBwICk7CisKKyAgICAgICAgaWYgKCBpZHggIT0gMCApCisgICAgICAgICAgcmVzdWx0ID0gKEZUX1VJbnQpKCBpZHggKyBkZWx0YSApICYgMHhGRkZGVTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9VSW50MzIgKQorICB0dF9jbWFwMl9jaGFyX25leHQoIFRUX0NNYXAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAqcGNoYXJjb2RlICkKKyAgeworICAgIEZUX0J5dGUqICAgdGFibGUgICAgPSBjbWFwLT5kYXRhOworICAgIEZUX1VJbnQgICAgZ2luZGV4ICAgPSAwOworICAgIEZUX1VJbnQzMiAgcmVzdWx0ICAgPSAwOworICAgIEZUX1VJbnQzMiAgY2hhcmNvZGUgPSAqcGNoYXJjb2RlICsgMTsKKyAgICBGVF9CeXRlKiAgIHN1YmhlYWRlcjsKKworCisgICAgd2hpbGUgKCBjaGFyY29kZSA8IDB4MTAwMDBVTCApCisgICAgeworICAgICAgc3ViaGVhZGVyID0gdHRfY21hcDJfZ2V0X3N1YmhlYWRlciggdGFibGUsIGNoYXJjb2RlICk7CisgICAgICBpZiAoIHN1YmhlYWRlciApCisgICAgICB7CisgICAgICAgIEZUX0J5dGUqICBwICAgICAgID0gc3ViaGVhZGVyOworICAgICAgICBGVF9VSW50ICAgc3RhcnQgICA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisgICAgICAgIEZUX1VJbnQgICBjb3VudCAgID0gVFRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICAgICAgRlRfSW50ICAgIGRlbHRhICAgPSBUVF9ORVhUX1NIT1JUICggcCApOworICAgICAgICBGVF9VSW50ICAgb2Zmc2V0ICA9IFRUX1BFRUtfVVNIT1JUKCBwICk7CisgICAgICAgIEZUX1VJbnQgICBjaGFyX2xvID0gKEZUX1VJbnQpKCBjaGFyY29kZSAmIDB4RkYgKTsKKyAgICAgICAgRlRfVUludCAgIHBvcywgaWR4OworCisKKyAgICAgICAgaWYgKCBvZmZzZXQgPT0gMCApCisgICAgICAgICAgZ290byBOZXh0X1N1YkhlYWRlcjsKKworICAgICAgICBpZiAoIGNoYXJfbG8gPCBzdGFydCApCisgICAgICAgIHsKKyAgICAgICAgICBjaGFyX2xvID0gc3RhcnQ7CisgICAgICAgICAgcG9zICAgICA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgIHBvcyA9IChGVF9VSW50KSggY2hhcl9sbyAtIHN0YXJ0ICk7CisKKyAgICAgICAgcCAgICAgICArPSBvZmZzZXQgKyBwb3MgKiAyOworICAgICAgICBjaGFyY29kZSA9IEZUX1BBRF9GTE9PUiggY2hhcmNvZGUsIDI1NiApICsgY2hhcl9sbzsKKworICAgICAgICBmb3IgKCA7IHBvcyA8IGNvdW50OyBwb3MrKywgY2hhcmNvZGUrKyApCisgICAgICAgIHsKKyAgICAgICAgICBpZHggPSBUVF9ORVhUX1VTSE9SVCggcCApOworCisgICAgICAgICAgaWYgKCBpZHggIT0gMCApCisgICAgICAgICAgeworICAgICAgICAgICAgZ2luZGV4ID0gKCBpZHggKyBkZWx0YSApICYgMHhGRkZGVTsKKyAgICAgICAgICAgIGlmICggZ2luZGV4ICE9IDAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICByZXN1bHQgPSBjaGFyY29kZTsKKyAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiBqdW1wIHRvIG5leHQgc3ViLWhlYWRlciwgaS5lLiBoaWdoZXIgYnl0ZSB2YWx1ZSAqLworICAgIE5leHRfU3ViSGVhZGVyOgorICAgICAgY2hhcmNvZGUgPSBGVF9QQURfRkxPT1IoIGNoYXJjb2RlLCAyNTYgKSArIDI1NjsKKyAgICB9CisKKyAgRXhpdDoKKyAgICAqcGNoYXJjb2RlID0gcmVzdWx0OworCisgICAgcmV0dXJuIGdpbmRleDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXAyX2dldF9pbmZvKCBUVF9DTWFwICAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICBUVF9DTWFwSW5mbyAgKmNtYXBfaW5mbyApCisgIHsKKyAgICBGVF9CeXRlKiAgcCA9IGNtYXAtPmRhdGEgKyA0OworCisKKyAgICBjbWFwX2luZm8tPmZvcm1hdCAgID0gMjsKKyAgICBjbWFwX2luZm8tPmxhbmd1YWdlID0gKEZUX1VMb25nKVRUX1BFRUtfVVNIT1JUKCBwICk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9ERUZJTkVfVFRfQ01BUCgKKyAgICB0dF9jbWFwMl9jbGFzc19yZWMsCisgICAgc2l6ZW9mICggVFRfQ01hcFJlYyApLAorCisgICAgKEZUX0NNYXBfSW5pdEZ1bmMpICAgICB0dF9jbWFwX2luaXQsCisgICAgKEZUX0NNYXBfRG9uZUZ1bmMpICAgICBOVUxMLAorICAgIChGVF9DTWFwX0NoYXJJbmRleEZ1bmMpdHRfY21hcDJfY2hhcl9pbmRleCwKKyAgICAoRlRfQ01hcF9DaGFyTmV4dEZ1bmMpIHR0X2NtYXAyX2NoYXJfbmV4dCwKKworICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKworICAgIDIsCisgICAgKFRUX0NNYXBfVmFsaWRhdGVGdW5jKXR0X2NtYXAyX3ZhbGlkYXRlLAorICAgIChUVF9DTWFwX0luZm9fR2V0RnVuYyl0dF9jbWFwMl9nZXRfaW5mbyApCisKKyNlbmRpZiAvKiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUQUJMRSBPVkVSVklFVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIE5BTUUgICAgICAgICAgT0ZGU0VUICAgICAgICAgVFlQRSAgICAgICAgICAgICAgREVTQ1JJUFRJT04gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZm9ybWF0ICAgICAgICAwICAgICAgICAgICAgICBVU0hPUlQgICAgICAgICAgICBtdXN0IGJlIDQgICAgICAgICAgICAqLworICAvKiAgIGxlbmd0aCAgICAgICAgMiAgICAgICAgICAgICAgVVNIT1JUICAgICAgICAgICAgdGFibGUgbGVuZ3RoICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJ5dGVzICAgICAgICAgICAgICovCisgIC8qICAgbGFuZ3VhZ2UgICAgICA0ICAgICAgICAgICAgICBVU0hPUlQgICAgICAgICAgICBNYWMgbGFuZ3VhZ2UgY29kZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBzZWdDb3VudFgyICAgIDYgICAgICAgICAgICAgIFVTSE9SVCAgICAgICAgICAgIDIqTlVNX1NFR1MgICAgICAgICAgICovCisgIC8qICAgc2VhcmNoUmFuZ2UgICA4ICAgICAgICAgICAgICBVU0hPUlQgICAgICAgICAgICAyKigxIDw8IExPR19TRUdTKSAgICAqLworICAvKiAgIGVudHJ5U2VsZWN0b3IgMTAgICAgICAgICAgICAgVVNIT1JUICAgICAgICAgICAgTE9HX1NFR1MgICAgICAgICAgICAgKi8KKyAgLyogICByYW5nZVNoaWZ0ICAgIDEyICAgICAgICAgICAgIFVTSE9SVCAgICAgICAgICAgIHNlZ0NvdW50WDIgLSAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFJhbmdlICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBlbmRDb3VudCAgICAgIDE0ICAgICAgICAgICAgIFVTSE9SVFtOVU1fU0VHU10gIGVuZCBjaGFyY29kZSBmb3IgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIHNlZ21lbnQ7IGxhc3QgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgMHhGRkZGICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgcGFkICAgICAgICAgICAxNCtOVU1fU0VHUyoyICBVU0hPUlQgICAgICAgICAgICBwYWRkaW5nICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBzdGFydENvdW50ICAgIDE2K05VTV9TRUdTKjIgIFVTSE9SVFtOVU1fU0VHU10gIGZpcnN0IGNoYXJjb2RlIGZvciAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIHNlZ21lbnQgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBpZERlbHRhICAgICAgIDE2K05VTV9TRUdTKjQgIFNIT1JUW05VTV9TRUdTXSAgIGRlbHRhIGZvciBlYWNoICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50ICAgICAgICAgICAgICAqLworICAvKiAgIGlkT2Zmc2V0ICAgICAgMTYrTlVNX1NFR1MqNiAgU0hPUlRbTlVNX1NFR1NdICAgcmFuZ2Ugb2Zmc2V0IGZvciAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggc2VnbWVudDsgY2FuIGJlICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBnbHlwaElkcyAgICAgIDE2K05VTV9TRUdTKjggIFVTSE9SVFtdICAgICAgICAgIGFycmF5IG9mIGdseXBoIElEICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZXMgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQ2hhcmFjdGVyIGNvZGVzIGFyZSBtb2RlbGxlZCBieSBhIHNlcmllcyBvZiBvcmRlcmVkIChpbmNyZWFzaW5nKSAgICAgICovCisgIC8qIGludGVydmFscyBjYWxsZWQgc2VnbWVudHMuICBFYWNoIHNlZ21lbnQgaGFzIHN0YXJ0IGFuZCBlbmQgY29kZXMsICAgICAqLworICAvKiBwcm92aWRlZCBieSB0aGUgYHN0YXJ0Q291bnQnIGFuZCBgZW5kQ291bnQnIGFycmF5cy4gIFNlZ21lbnRzIG11c3QgICAgKi8KKyAgLyogbm90IG92ZXJsYXAsIGFuZCB0aGUgbGFzdCBzZWdtZW50IHNob3VsZCBhbHdheXMgY29udGFpbiB0aGUgdmFsdWUgICAgICovCisgIC8qIDB4RkZGRiBmb3IgYGVuZENvdW50Jy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGZpZWxkcyBgc2VhcmNoUmFuZ2UnLCBgZW50cnlTZWxlY3RvcicgYW5kIGByYW5nZVNoaWZ0JyBhcmUgYmV0dGVyICovCisgIC8qIGlnbm9yZWQgKHRoZXkgYXJlIHRyYWNlcyBvZiBvdmVyLWVuZ2luZWVyaW5nIGluIHRoZSBUcnVlVHlwZSAgICAgICAgICAqLworICAvKiBzcGVjaWZpY2F0aW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEVhY2ggc2VnbWVudCBhbHNvIGhhcyBhIHNpZ25lZCBgZGVsdGEnLCBhcyB3ZWxsIGFzIGFuIG9wdGlvbmFsIG9mZnNldCAqLworICAvKiB3aXRoaW4gdGhlIGBnbHlwaElkcycgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIElmIGEgc2VnbWVudCdzIGlkT2Zmc2V0IGlzIDAsIHRoZSBnbHlwaCBpbmRleCBjb3JyZXNwb25kaW5nIHRvIGFueSAgICAqLworICAvKiBjaGFyY29kZSB3aXRoaW4gdGhlIHNlZ21lbnQgaXMgb2J0YWluZWQgYnkgYWRkaW5nIHRoZSB2YWx1ZSBvZiAgICAgICAgKi8KKyAgLyogYGlkRGVsdGEnIGRpcmVjdGx5IHRvIHRoZSBjaGFyY29kZSwgbW9kdWxvIDY1NTM2LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPdGhlcndpc2UsIGEgZ2x5cGggaW5kZXggaXMgdGFrZW4gZnJvbSB0aGUgZ2x5cGggSURzIHN1Yi1hcnJheSBmb3IgICAgKi8KKyAgLyogdGhlIHNlZ21lbnQsIGFuZCB0aGUgdmFsdWUgb2YgYGlkRGVsdGEnIGlzIGFkZGVkIHRvIGl0LiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRmluYWxseSwgbm90ZSB0aGF0IGEgbG90IG9mIGZvbnRzIGNvbnRhaW4gYW4gaW52YWxpZCBsYXN0IHNlZ21lbnQsICAgICovCisgIC8qIHdoZXJlIGBzdGFydCcgYW5kIGBlbmQnIGFyZSBjb3JyZWN0bHkgc2V0IHRvIDB4RkZGRiBidXQgYm90aCBgZGVsdGEnICAqLworICAvKiBhbmQgYG9mZnNldCcgYXJlIGluY29ycmVjdCAoZS5nLiwgYG9wZW5zX19fLnR0Zicgd2hpY2ggY29tZXMgd2l0aCAgICAgKi8KKyAgLyogT3Blbk9mZmljZS5vcmcpLiAgV2UgbmVlZCBzcGVjaWFsIGNvZGUgdG8gZGVhbCB3aXRoIHRoZW0gY29ycmVjdGx5LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjaWZkZWYgVFRfQ09ORklHX0NNQVBfRk9STUFUXzQKKworICB0eXBlZGVmIHN0cnVjdCAgVFRfQ01hcDRSZWNfCisgIHsKKyAgICBUVF9DTWFwUmVjICBjbWFwOworICAgIEZUX1VJbnQzMiAgIGN1cl9jaGFyY29kZTsgICAvKiBjdXJyZW50IGNoYXJjb2RlICovCisgICAgRlRfVUludCAgICAgY3VyX2dpbmRleDsgICAgIC8qIGN1cnJlbnQgZ2x5cGggaW5kZXggKi8KKworICAgIEZUX1VJbnQgICAgIG51bV9yYW5nZXM7CisgICAgRlRfVUludCAgICAgY3VyX3JhbmdlOworICAgIEZUX1VJbnQgICAgIGN1cl9zdGFydDsKKyAgICBGVF9VSW50ICAgICBjdXJfZW5kOworICAgIEZUX0ludCAgICAgIGN1cl9kZWx0YTsKKyAgICBGVF9CeXRlKiAgICBjdXJfdmFsdWVzOworCisgIH0gVFRfQ01hcDRSZWMsICpUVF9DTWFwNDsKKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICB0dF9jbWFwNF9pbml0KCBUVF9DTWFwNCAgY21hcCwKKyAgICAgICAgICAgICAgICAgRlRfQnl0ZSogIHRhYmxlICkKKyAgeworICAgIEZUX0J5dGUqICBwOworCisKKyAgICBjbWFwLT5jbWFwLmRhdGEgICAgPSB0YWJsZTsKKworICAgIHAgICAgICAgICAgICAgICAgICA9IHRhYmxlICsgNjsKKyAgICBjbWFwLT5udW1fcmFuZ2VzICAgPSBGVF9QRUVLX1VTSE9SVCggcCApID4+IDE7CisgICAgY21hcC0+Y3VyX2NoYXJjb2RlID0gKEZUX1VJbnQzMikweEZGRkZGRkZGVUw7CisgICAgY21hcC0+Y3VyX2dpbmRleCAgID0gMDsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIHN0YXRpYyBGVF9JbnQKKyAgdHRfY21hcDRfc2V0X3JhbmdlKCBUVF9DTWFwNCAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgcmFuZ2VfaW5kZXggKQorICB7CisgICAgRlRfQnl0ZSogIHRhYmxlID0gY21hcC0+Y21hcC5kYXRhOworICAgIEZUX0J5dGUqICBwOworICAgIEZUX1VJbnQgICBudW1fcmFuZ2VzID0gY21hcC0+bnVtX3JhbmdlczsKKworCisgICAgd2hpbGUgKCByYW5nZV9pbmRleCA8IG51bV9yYW5nZXMgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgIG9mZnNldDsKKworCisgICAgICBwICAgICAgICAgICAgID0gdGFibGUgKyAxNCArIHJhbmdlX2luZGV4ICogMjsKKyAgICAgIGNtYXAtPmN1cl9lbmQgPSBGVF9QRUVLX1VTSE9SVCggcCApOworCisgICAgICBwICAgICAgICAgICAgICArPSAyICsgbnVtX3JhbmdlcyAqIDI7CisgICAgICBjbWFwLT5jdXJfc3RhcnQgPSBGVF9QRUVLX1VTSE9SVCggcCApOworCisgICAgICBwICAgICAgICAgICAgICArPSBudW1fcmFuZ2VzICogMjsKKyAgICAgIGNtYXAtPmN1cl9kZWx0YSA9IEZUX1BFRUtfU0hPUlQoIHAgKTsKKworICAgICAgcCAgICAgKz0gbnVtX3JhbmdlcyAqIDI7CisgICAgICBvZmZzZXQgPSBGVF9QRUVLX1VTSE9SVCggcCApOworCisgICAgICAvKiBzb21lIGZvbnRzIGhhdmUgYW4gaW5jb3JyZWN0IGxhc3Qgc2VnbWVudDsgKi8KKyAgICAgIC8qIHdlIGhhdmUgdG8gY2F0Y2ggaXQgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgaWYgKCByYW5nZV9pbmRleCAgICAgPj0gbnVtX3JhbmdlcyAtIDEgJiYKKyAgICAgICAgICAgY21hcC0+Y3VyX3N0YXJ0ID09IDB4RkZGRlUgICAgICAgICYmCisgICAgICAgICAgIGNtYXAtPmN1cl9lbmQgICA9PSAweEZGRkZVICAgICAgICApCisgICAgICB7CisgICAgICAgIFRUX0ZhY2UgICBmYWNlICA9IChUVF9GYWNlKWNtYXAtPmNtYXAuY21hcC5jaGFybWFwLmZhY2U7CisgICAgICAgIEZUX0J5dGUqICBsaW1pdCA9IGZhY2UtPmNtYXBfdGFibGUgKyBmYWNlLT5jbWFwX3NpemU7CisKKworICAgICAgICBpZiAoIG9mZnNldCAmJiBwICsgb2Zmc2V0ICsgMiA+IGxpbWl0ICkKKyAgICAgICAgeworICAgICAgICAgIGNtYXAtPmN1cl9kZWx0YSA9IDE7CisgICAgICAgICAgb2Zmc2V0ICAgICAgICAgID0gMDsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAoIG9mZnNldCAhPSAweEZGRkZVICkKKyAgICAgIHsKKyAgICAgICAgY21hcC0+Y3VyX3ZhbHVlcyA9IG9mZnNldCA/IHAgKyBvZmZzZXQgOiBOVUxMOworICAgICAgICBjbWFwLT5jdXJfcmFuZ2UgID0gcmFuZ2VfaW5kZXg7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorCisgICAgICAvKiB3ZSBza2lwIGVtcHR5IHNlZ21lbnRzICovCisgICAgICByYW5nZV9pbmRleCsrOworICAgIH0KKworICAgIHJldHVybiAtMTsKKyAgfQorCisKKyAgLyogc2VhcmNoIHRoZSBpbmRleCBvZiB0aGUgY2hhcmNvZGUgbmV4dCB0byBjbWFwLT5jdXJfY2hhcmNvZGU7ICovCisgIC8qIGNhbGxlciBzaG91bGQgY2FsbCB0dF9jbWFwNF9zZXRfcmFuZ2Ugd2l0aCBwcm9wZXIgcmFuZ2UgICAgICAqLworICAvKiBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIHR0X2NtYXA0X25leHQoIFRUX0NNYXA0ICBjbWFwICkKKyAgeworICAgIEZUX1VJbnQgIGNoYXJjb2RlOworCisKKyAgICBpZiAoIGNtYXAtPmN1cl9jaGFyY29kZSA+PSAweEZGRkZVTCApCisgICAgICBnb3RvIEZhaWw7CisKKyAgICBjaGFyY29kZSA9IChGVF9VSW50KWNtYXAtPmN1cl9jaGFyY29kZSArIDE7CisKKyAgICBpZiAoIGNoYXJjb2RlIDwgY21hcC0+Y3VyX3N0YXJ0ICkKKyAgICAgIGNoYXJjb2RlID0gY21hcC0+Y3VyX3N0YXJ0OworCisgICAgZm9yICggOzsgKQorICAgIHsKKyAgICAgIEZUX0J5dGUqICB2YWx1ZXMgPSBjbWFwLT5jdXJfdmFsdWVzOworICAgICAgRlRfVUludCAgIGVuZCAgICA9IGNtYXAtPmN1cl9lbmQ7CisgICAgICBGVF9JbnQgICAgZGVsdGEgID0gY21hcC0+Y3VyX2RlbHRhOworCisKKyAgICAgIGlmICggY2hhcmNvZGUgPD0gZW5kICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCB2YWx1ZXMgKQorICAgICAgICB7CisgICAgICAgICAgRlRfQnl0ZSogIHAgPSB2YWx1ZXMgKyAyICogKCBjaGFyY29kZSAtIGNtYXAtPmN1cl9zdGFydCApOworCisKKyAgICAgICAgICBkbworICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VJbnQgIGdpbmRleCA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisKKworICAgICAgICAgICAgaWYgKCBnaW5kZXggIT0gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGdpbmRleCA9IChGVF9VSW50KSggKCBnaW5kZXggKyBkZWx0YSApICYgMHhGRkZGVSApOworICAgICAgICAgICAgICBpZiAoIGdpbmRleCAhPSAwICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNtYXAtPmN1cl9jaGFyY29kZSA9IGNoYXJjb2RlOworICAgICAgICAgICAgICAgIGNtYXAtPmN1cl9naW5kZXggICA9IGdpbmRleDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IHdoaWxlICggKytjaGFyY29kZSA8PSBlbmQgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBkbworICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VJbnQgIGdpbmRleCA9IChGVF9VSW50KSggKCBjaGFyY29kZSArIGRlbHRhICkgJiAweEZGRkZVICk7CisKKworICAgICAgICAgICAgaWYgKCBnaW5kZXggIT0gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNtYXAtPmN1cl9jaGFyY29kZSA9IGNoYXJjb2RlOworICAgICAgICAgICAgICBjbWFwLT5jdXJfZ2luZGV4ICAgPSBnaW5kZXg7CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IHdoaWxlICggKytjaGFyY29kZSA8PSBlbmQgKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiB3ZSBuZWVkIHRvIGZpbmQgYW5vdGhlciByYW5nZSAqLworICAgICAgaWYgKCB0dF9jbWFwNF9zZXRfcmFuZ2UoIGNtYXAsIGNtYXAtPmN1cl9yYW5nZSArIDEgKSA8IDAgKQorICAgICAgICBicmVhazsKKworICAgICAgaWYgKCBjaGFyY29kZSA8IGNtYXAtPmN1cl9zdGFydCApCisgICAgICAgIGNoYXJjb2RlID0gY21hcC0+Y3VyX3N0YXJ0OworICAgIH0KKworICBGYWlsOgorICAgIGNtYXAtPmN1cl9jaGFyY29kZSA9IChGVF9VSW50MzIpMHhGRkZGRkZGRlVMOworICAgIGNtYXAtPmN1cl9naW5kZXggICA9IDA7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICB0dF9jbWFwNF92YWxpZGF0ZSggRlRfQnl0ZSogICAgICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1ZhbGlkYXRvciAgdmFsaWQgKQorICB7CisgICAgRlRfQnl0ZSogIHAgICAgICA9IHRhYmxlICsgMjsgICAgICAgICAgICAgICAvKiBza2lwIGZvcm1hdCAqLworICAgIEZUX1VJbnQgICBsZW5ndGggPSBUVF9ORVhUX1VTSE9SVCggcCApOworICAgIEZUX0J5dGUgICAqZW5kcywgKnN0YXJ0cywgKm9mZnNldHMsICpkZWx0YXMsICpnbHlwaF9pZHM7CisgICAgRlRfVUludCAgIG51bV9zZWdzOworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKworCisgICAgaWYgKCBsZW5ndGggPCAxNiApCisgICAgICBGVF9JTlZBTElEX1RPT19TSE9SVDsKKworICAgIC8qIGluIGNlcnRhaW4gZm9udHMsIHRoZSBgbGVuZ3RoJyBmaWVsZCBpcyBpbnZhbGlkIGFuZCBnb2VzICovCisgICAgLyogb3V0IG9mIGJvdW5kLiAgV2UgdHJ5IHRvIGNvcnJlY3QgdGhpcyBoZXJlLi4uICAgICAgICAgICAgKi8KKyAgICBpZiAoIHRhYmxlICsgbGVuZ3RoID4gdmFsaWQtPmxpbWl0ICkKKyAgICB7CisgICAgICBpZiAoIHZhbGlkLT5sZXZlbCA+PSBGVF9WQUxJREFURV9USUdIVCApCisgICAgICAgIEZUX0lOVkFMSURfVE9PX1NIT1JUOworCisgICAgICBsZW5ndGggPSAoRlRfVUludCkoIHZhbGlkLT5saW1pdCAtIHRhYmxlICk7CisgICAgfQorCisgICAgcCAgICAgICAgPSB0YWJsZSArIDY7CisgICAgbnVtX3NlZ3MgPSBUVF9ORVhUX1VTSE9SVCggcCApOyAgIC8qIHJlYWQgc2VnQ291bnRYMiAqLworCisgICAgaWYgKCB2YWxpZC0+bGV2ZWwgPj0gRlRfVkFMSURBVEVfUEFSQU5PSUQgKQorICAgIHsKKyAgICAgIC8qIGNoZWNrIHRoYXQgd2UgaGF2ZSBhbiBldmVuIHZhbHVlIGhlcmUgKi8KKyAgICAgIGlmICggbnVtX3NlZ3MgJiAxICkKKyAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworICAgIH0KKworICAgIG51bV9zZWdzIC89IDI7CisKKyAgICBpZiAoIGxlbmd0aCA8IDE2ICsgbnVtX3NlZ3MgKiAyICogNCApCisgICAgICBGVF9JTlZBTElEX1RPT19TSE9SVDsKKworICAgIC8qIGNoZWNrIHRoZSBzZWFyY2ggcGFyYW1ldGVycyAtIGV2ZW4gdGhvdWdoIHdlIG5ldmVyIHVzZSB0aGVtICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIHZhbGlkLT5sZXZlbCA+PSBGVF9WQUxJREFURV9QQVJBTk9JRCApCisgICAgeworICAgICAgLyogY2hlY2sgdGhlIHZhbHVlcyBvZiBgc2VhcmNoUmFuZ2UnLCBgZW50cnlTZWxlY3RvcicsIGByYW5nZVNoaWZ0JyAqLworICAgICAgRlRfVUludCAgc2VhcmNoX3JhbmdlICAgPSBUVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgRlRfVUludCAgZW50cnlfc2VsZWN0b3IgPSBUVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgRlRfVUludCAgcmFuZ2Vfc2hpZnQgICAgPSBUVF9ORVhUX1VTSE9SVCggcCApOworCisKKyAgICAgIGlmICggKCBzZWFyY2hfcmFuZ2UgfCByYW5nZV9zaGlmdCApICYgMSApICAvKiBtdXN0IGJlIGV2ZW4gdmFsdWVzICovCisgICAgICAgIEZUX0lOVkFMSURfREFUQTsKKworICAgICAgc2VhcmNoX3JhbmdlIC89IDI7CisgICAgICByYW5nZV9zaGlmdCAgLz0gMjsKKworICAgICAgLyogYHNlYXJjaCByYW5nZScgaXMgdGhlIGdyZWF0ZXN0IHBvd2VyIG9mIDIgdGhhdCBpcyA8PSBudW1fc2VncyAqLworCisgICAgICBpZiAoIHNlYXJjaF9yYW5nZSAgICAgICAgICAgICAgICA+IG51bV9zZWdzICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICBzZWFyY2hfcmFuZ2UgKiAyICAgICAgICAgICAgPCBudW1fc2VncyAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgc2VhcmNoX3JhbmdlICsgcmFuZ2Vfc2hpZnQgIT0gbnVtX3NlZ3MgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgIHNlYXJjaF9yYW5nZSAgICAgICAgICAgICAgICE9ICggMVUgPDwgZW50cnlfc2VsZWN0b3IgKSApCisgICAgICAgIEZUX0lOVkFMSURfREFUQTsKKyAgICB9CisKKyAgICBlbmRzICAgICAgPSB0YWJsZSAgICsgMTQ7CisgICAgc3RhcnRzICAgID0gdGFibGUgICArIDE2ICsgbnVtX3NlZ3MgKiAyOworICAgIGRlbHRhcyAgICA9IHN0YXJ0cyAgKyBudW1fc2VncyAqIDI7CisgICAgb2Zmc2V0cyAgID0gZGVsdGFzICArIG51bV9zZWdzICogMjsKKyAgICBnbHlwaF9pZHMgPSBvZmZzZXRzICsgbnVtX3NlZ3MgKiAyOworCisgICAgLyogY2hlY2sgbGFzdCBzZWdtZW50OyBpdHMgZW5kIGNvdW50IHZhbHVlIG11c3QgYmUgMHhGRkZGICovCisgICAgaWYgKCB2YWxpZC0+bGV2ZWwgPj0gRlRfVkFMSURBVEVfUEFSQU5PSUQgKQorICAgIHsKKyAgICAgIHAgPSBlbmRzICsgKCBudW1fc2VncyAtIDEgKSAqIDI7CisgICAgICBpZiAoIFRUX1BFRUtfVVNIT1JUKCBwICkgIT0gMHhGRkZGVSApCisgICAgICAgIEZUX0lOVkFMSURfREFUQTsKKyAgICB9CisKKyAgICB7CisgICAgICBGVF9VSW50ICAgc3RhcnQsIGVuZCwgb2Zmc2V0LCBuOworICAgICAgRlRfVUludCAgIGxhc3Rfc3RhcnQgPSAwLCBsYXN0X2VuZCA9IDA7CisgICAgICBGVF9JbnQgICAgZGVsdGE7CisgICAgICBGVF9CeXRlKiAgcF9zdGFydCAgID0gc3RhcnRzOworICAgICAgRlRfQnl0ZSogIHBfZW5kICAgICA9IGVuZHM7CisgICAgICBGVF9CeXRlKiAgcF9kZWx0YSAgID0gZGVsdGFzOworICAgICAgRlRfQnl0ZSogIHBfb2Zmc2V0ICA9IG9mZnNldHM7CisKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBudW1fc2VnczsgbisrICkKKyAgICAgIHsKKyAgICAgICAgcCAgICAgID0gcF9vZmZzZXQ7CisgICAgICAgIHN0YXJ0ICA9IFRUX05FWFRfVVNIT1JUKCBwX3N0YXJ0ICk7CisgICAgICAgIGVuZCAgICA9IFRUX05FWFRfVVNIT1JUKCBwX2VuZCApOworICAgICAgICBkZWx0YSAgPSBUVF9ORVhUX1NIT1JUKCBwX2RlbHRhICk7CisgICAgICAgIG9mZnNldCA9IFRUX05FWFRfVVNIT1JUKCBwX29mZnNldCApOworCisgICAgICAgIGlmICggc3RhcnQgPiBlbmQgKQorICAgICAgICAgIEZUX0lOVkFMSURfREFUQTsKKworICAgICAgICAvKiB0aGlzIHRlc3Qgc2hvdWxkIGJlIHBlcmZvcm1lZCBhdCBkZWZhdWx0IHZhbGlkYXRpb24gbGV2ZWw7ICovCisgICAgICAgIC8qIHVuZm9ydHVuYXRlbHksIHNvbWUgcG9wdWxhciBBc2lhbiBmb250cyBoYXZlIG92ZXJsYXBwaW5nICAgKi8KKyAgICAgICAgLyogcmFuZ2VzIGluIHRoZWlyIGNoYXJtYXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggc3RhcnQgPD0gbGFzdF9lbmQgJiYgbiA+IDAgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCB2YWxpZC0+bGV2ZWwgPj0gRlRfVkFMSURBVEVfVElHSFQgKQorICAgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBhbGxvdyBvdmVybGFwcGluZyBzZWdtZW50cywgcHJvdmlkZWQgdGhlaXIgc3RhcnQgcG9pbnRzICovCisgICAgICAgICAgICAvKiBhbmQgZW5kIHBvaW50cywgcmVzcGVjdGl2ZWx5LCBhcmUgaW4gYXNjZW5kaW5nIG9yZGVyICAgICovCisgICAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIGxhc3Rfc3RhcnQgPiBzdGFydCB8fCBsYXN0X2VuZCA+IGVuZCApCisgICAgICAgICAgICAgIGVycm9yIHw9IFRUX0NNQVBfRkxBR19VTlNPUlRFRDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZXJyb3IgfD0gVFRfQ01BUF9GTEFHX09WRVJMQVBQSU5HOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggb2Zmc2V0ICYmIG9mZnNldCAhPSAweEZGRkZVICkKKyAgICAgICAgeworICAgICAgICAgIHAgKz0gb2Zmc2V0OyAgLyogc3RhcnQgb2YgZ2x5cGggSUQgYXJyYXkgKi8KKworICAgICAgICAgIC8qIGNoZWNrIHRoYXQgd2UgcG9pbnQgd2l0aGluIHRoZSBnbHlwaCBJRHMgdGFibGUgb25seSAqLworICAgICAgICAgIGlmICggdmFsaWQtPmxldmVsID49IEZUX1ZBTElEQVRFX1RJR0hUICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoIHAgPCBnbHlwaF9pZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgIHAgKyAoIGVuZCAtIHN0YXJ0ICsgMSApICogMiA+IHRhYmxlICsgbGVuZ3RoICkKKyAgICAgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworICAgICAgICAgIH0KKyAgICAgICAgICAvKiBTb21lIGZvbnRzIGhhbmRsZSB0aGUgbGFzdCBzZWdtZW50IGluY29ycmVjdGx5LiAgSW4gKi8KKyAgICAgICAgICAvKiB0aGVvcnksIDB4RkZGRiBtaWdodCBwb2ludCB0byBhbiBvcmRpbmFyeSBnbHlwaCAtLSAgKi8KKyAgICAgICAgICAvKiBhIGNtYXAgNCBpcyB2ZXJzYXRpbGUgYW5kIGNvdWxkIGJlIHVzZWQgZm9yIGFueSAgICAgKi8KKyAgICAgICAgICAvKiBlbmNvZGluZywgbm90IG9ubHkgVW5pY29kZS4gIEhvd2V2ZXIsIHJlYWxpdHkgc2hvd3MgKi8KKyAgICAgICAgICAvKiB0aGF0IGZhciB0b28gbWFueSBmb250cyBhcmUgc2xvcHB5IGFuZCBpbmNvcnJlY3RseSAgKi8KKyAgICAgICAgICAvKiBzZXQgYWxsIGZpZWxkcyBidXQgYHN0YXJ0JyBhbmQgYGVuZCcgZm9yIHRoZSBsYXN0ICAgKi8KKyAgICAgICAgICAvKiBzZWdtZW50IGlmIGl0IGNvbnRhaW5zIG9ubHkgYSBzaW5nbGUgY2hhcmFjdGVyLiAgICAgKi8KKyAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiBXZSB0aHVzIG9taXQgdGhlIHRlc3QgaGVyZSwgZGVsYXlpbmcgaXQgdG8gdGhlICAgICAgKi8KKyAgICAgICAgICAvKiByb3V0aW5lcyB3aGljaCBhY3R1YWxseSBhY2Nlc3MgdGhlIGNtYXAuICAgICAgICAgICAgKi8KKyAgICAgICAgICBlbHNlIGlmICggbiAhPSBudW1fc2VncyAtIDEgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgICAgICEoIHN0YXJ0ID09IDB4RkZGRlUgJiYgZW5kID09IDB4RkZGRlUgKSApCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKCBwIDwgZ2x5cGhfaWRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAgcCArICggZW5kIC0gc3RhcnQgKyAxICkgKiAyID4gdmFsaWQtPmxpbWl0ICkKKyAgICAgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworICAgICAgICAgIH0KKworICAgICAgICAgIC8qIGNoZWNrIGdseXBoIGluZGljZXMgd2l0aGluIHRoZSBzZWdtZW50IHJhbmdlICovCisgICAgICAgICAgaWYgKCB2YWxpZC0+bGV2ZWwgPj0gRlRfVkFMSURBVEVfVElHSFQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VJbnQgIGksIGlkeDsKKworCisgICAgICAgICAgICBmb3IgKCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlkeCA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisgICAgICAgICAgICAgIGlmICggaWR4ICE9IDAgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWR4ID0gKEZUX1VJbnQpKCBpZHggKyBkZWx0YSApICYgMHhGRkZGVTsKKworICAgICAgICAgICAgICAgIGlmICggaWR4ID49IFRUX1ZBTElEX0dMWVBIX0NPVU5UKCB2YWxpZCApICkKKyAgICAgICAgICAgICAgICAgIEZUX0lOVkFMSURfR0xZUEhfSUQ7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIG9mZnNldCA9PSAweEZGRkZVICkKKyAgICAgICAgeworICAgICAgICAgIC8qIHNvbWUgZm9udHMgKGVycm9uZW91c2x5PykgdXNlIGEgcmFuZ2Ugb2Zmc2V0IG9mIDB4RkZGRiAqLworICAgICAgICAgIC8qIHRvIG1lYW4gbWlzc2luZyBnbHlwaCBpbiBjbWFwIHRhYmxlICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIGlmICggdmFsaWQtPmxldmVsID49IEZUX1ZBTElEQVRFX1BBUkFOT0lEICAgIHx8CisgICAgICAgICAgICAgICBuICE9IG51bV9zZWdzIC0gMSAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICEoIHN0YXJ0ID09IDB4RkZGRlUgJiYgZW5kID09IDB4RkZGRlUgKSApCisgICAgICAgICAgICBGVF9JTlZBTElEX0RBVEE7CisgICAgICAgIH0KKworICAgICAgICBsYXN0X3N0YXJ0ID0gc3RhcnQ7CisgICAgICAgIGxhc3RfZW5kICAgPSBlbmQ7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgRlRfVUludAorICB0dF9jbWFwNF9jaGFyX21hcF9saW5lYXIoIFRUX0NNYXAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyKiAgcGNoYXJjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgIG5leHQgKQorICB7CisgICAgRlRfVUludCAgICBudW1fc2VnczIsIHN0YXJ0LCBlbmQsIG9mZnNldDsKKyAgICBGVF9JbnQgICAgIGRlbHRhOworICAgIEZUX1VJbnQgICAgaSwgbnVtX3NlZ3M7CisgICAgRlRfVUludDMyICBjaGFyY29kZSA9ICpwY2hhcmNvZGU7CisgICAgRlRfVUludCAgICBnaW5kZXggICA9IDA7CisgICAgRlRfQnl0ZSogICBwOworCisKKyAgICBwID0gY21hcC0+ZGF0YSArIDY7CisgICAgbnVtX3NlZ3MyID0gRlRfUEFEX0ZMT09SKCBUVF9QRUVLX1VTSE9SVCggcCApLCAyICk7CisKKyAgICBudW1fc2VncyA9IG51bV9zZWdzMiA+PiAxOworCisgICAgaWYgKCAhbnVtX3NlZ3MgKQorICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIG5leHQgKQorICAgICAgY2hhcmNvZGUrKzsKKworICAgIC8qIGxpbmVhciBzZWFyY2ggKi8KKyAgICBmb3IgKCA7IGNoYXJjb2RlIDw9IDB4RkZGRlU7IGNoYXJjb2RlKysgKQorICAgIHsKKyAgICAgIEZUX0J5dGUqICBxOworCisKKyAgICAgIHAgPSBjbWFwLT5kYXRhICsgMTQ7ICAgICAgICAgICAgICAgLyogZW5kcyB0YWJsZSAgICovCisgICAgICBxID0gY21hcC0+ZGF0YSArIDE2ICsgbnVtX3NlZ3MyOyAgIC8qIHN0YXJ0cyB0YWJsZSAqLworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IG51bV9zZWdzOyBpKysgKQorICAgICAgeworICAgICAgICBlbmQgICA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisgICAgICAgIHN0YXJ0ID0gVFRfTkVYVF9VU0hPUlQoIHEgKTsKKworICAgICAgICBpZiAoIGNoYXJjb2RlID49IHN0YXJ0ICYmIGNoYXJjb2RlIDw9IGVuZCApCisgICAgICAgIHsKKyAgICAgICAgICBwICAgICAgID0gcSAtIDIgKyBudW1fc2VnczI7CisgICAgICAgICAgZGVsdGEgICA9IFRUX1BFRUtfU0hPUlQoIHAgKTsKKyAgICAgICAgICBwICAgICAgKz0gbnVtX3NlZ3MyOworICAgICAgICAgIG9mZnNldCAgPSBUVF9QRUVLX1VTSE9SVCggcCApOworCisgICAgICAgICAgLyogc29tZSBmb250cyBoYXZlIGFuIGluY29ycmVjdCBsYXN0IHNlZ21lbnQ7ICovCisgICAgICAgICAgLyogd2UgaGF2ZSB0byBjYXRjaCBpdCAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgaWYgKCBpID49IG51bV9zZWdzIC0gMSAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICBzdGFydCA9PSAweEZGRkZVICYmIGVuZCA9PSAweEZGRkZVICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBUVF9GYWNlICAgZmFjZSAgPSAoVFRfRmFjZSljbWFwLT5jbWFwLmNoYXJtYXAuZmFjZTsKKyAgICAgICAgICAgIEZUX0J5dGUqICBsaW1pdCA9IGZhY2UtPmNtYXBfdGFibGUgKyBmYWNlLT5jbWFwX3NpemU7CisKKworICAgICAgICAgICAgaWYgKCBvZmZzZXQgJiYgcCArIG9mZnNldCArIDIgPiBsaW1pdCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGRlbHRhICA9IDE7CisgICAgICAgICAgICAgIG9mZnNldCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKCBvZmZzZXQgPT0gMHhGRkZGVSApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgIGlmICggb2Zmc2V0ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBwICs9IG9mZnNldCArICggY2hhcmNvZGUgLSBzdGFydCApICogMjsKKyAgICAgICAgICAgIGdpbmRleCA9IFRUX1BFRUtfVVNIT1JUKCBwICk7CisgICAgICAgICAgICBpZiAoIGdpbmRleCAhPSAwICkKKyAgICAgICAgICAgICAgZ2luZGV4ID0gKEZUX1VJbnQpKCBnaW5kZXggKyBkZWx0YSApICYgMHhGRkZGVTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2luZGV4ID0gKEZUX1VJbnQpKCBjaGFyY29kZSArIGRlbHRhICkgJiAweEZGRkZVOworCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCAhbmV4dCB8fCBnaW5kZXggKQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIG5leHQgJiYgZ2luZGV4ICkKKyAgICAgICpwY2hhcmNvZGUgPSBjaGFyY29kZTsKKworICAgIHJldHVybiBnaW5kZXg7CisgIH0KKworCisgIHN0YXRpYyBGVF9VSW50CisgIHR0X2NtYXA0X2NoYXJfbWFwX2JpbmFyeSggVFRfQ01hcCAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIqICBwY2hhcmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICAgbmV4dCApCisgIHsKKyAgICBGVF9VSW50ICAgbnVtX3NlZ3MyLCBzdGFydCwgZW5kLCBvZmZzZXQ7CisgICAgRlRfSW50ICAgIGRlbHRhOworICAgIEZUX1VJbnQgICBtYXgsIG1pbiwgbWlkLCBudW1fc2VnczsKKyAgICBGVF9VSW50ICAgY2hhcmNvZGUgPSAoRlRfVUludCkqcGNoYXJjb2RlOworICAgIEZUX1VJbnQgICBnaW5kZXggICA9IDA7CisgICAgRlRfQnl0ZSogIHA7CisKKworICAgIHAgPSBjbWFwLT5kYXRhICsgNjsKKyAgICBudW1fc2VnczIgPSBGVF9QQURfRkxPT1IoIFRUX1BFRUtfVVNIT1JUKCBwICksIDIgKTsKKworICAgIGlmICggIW51bV9zZWdzMiApCisgICAgICByZXR1cm4gMDsKKworICAgIG51bV9zZWdzID0gbnVtX3NlZ3MyID4+IDE7CisKKyAgICAvKiBtYWtlIGNvbXBpbGVyIGhhcHB5ICovCisgICAgbWlkID0gbnVtX3NlZ3M7CisgICAgZW5kID0gMHhGRkZGVTsKKworICAgIGlmICggbmV4dCApCisgICAgICBjaGFyY29kZSsrOworCisgICAgbWluID0gMDsKKyAgICBtYXggPSBudW1fc2VnczsKKworICAgIC8qIGJpbmFyeSBzZWFyY2ggKi8KKyAgICB3aGlsZSAoIG1pbiA8IG1heCApCisgICAgeworICAgICAgbWlkICAgID0gKCBtaW4gKyBtYXggKSA+PiAxOworICAgICAgcCAgICAgID0gY21hcC0+ZGF0YSArIDE0ICsgbWlkICogMjsKKyAgICAgIGVuZCAgICA9IFRUX1BFRUtfVVNIT1JUKCBwICk7CisgICAgICBwICAgICArPSAyICsgbnVtX3NlZ3MyOworICAgICAgc3RhcnQgID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKworICAgICAgaWYgKCBjaGFyY29kZSA8IHN0YXJ0ICkKKyAgICAgICAgbWF4ID0gbWlkOworICAgICAgZWxzZSBpZiAoIGNoYXJjb2RlID4gZW5kICkKKyAgICAgICAgbWluID0gbWlkICsgMTsKKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgcCAgICAgKz0gbnVtX3NlZ3MyOworICAgICAgICBkZWx0YSAgPSBUVF9QRUVLX1NIT1JUKCBwICk7CisgICAgICAgIHAgICAgICs9IG51bV9zZWdzMjsKKyAgICAgICAgb2Zmc2V0ID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKworICAgICAgICAvKiBzb21lIGZvbnRzIGhhdmUgYW4gaW5jb3JyZWN0IGxhc3Qgc2VnbWVudDsgKi8KKyAgICAgICAgLyogd2UgaGF2ZSB0byBjYXRjaCBpdCAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggbWlkID49IG51bV9zZWdzIC0gMSAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgIHN0YXJ0ID09IDB4RkZGRlUgJiYgZW5kID09IDB4RkZGRlUgKQorICAgICAgICB7CisgICAgICAgICAgVFRfRmFjZSAgIGZhY2UgID0gKFRUX0ZhY2UpY21hcC0+Y21hcC5jaGFybWFwLmZhY2U7CisgICAgICAgICAgRlRfQnl0ZSogIGxpbWl0ID0gZmFjZS0+Y21hcF90YWJsZSArIGZhY2UtPmNtYXBfc2l6ZTsKKworCisgICAgICAgICAgaWYgKCBvZmZzZXQgJiYgcCArIG9mZnNldCArIDIgPiBsaW1pdCApCisgICAgICAgICAgeworICAgICAgICAgICAgZGVsdGEgID0gMTsKKyAgICAgICAgICAgIG9mZnNldCA9IDA7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogc2VhcmNoIHRoZSBmaXJzdCBzZWdtZW50IGNvbnRhaW5pbmcgYGNoYXJjb2RlJyAqLworICAgICAgICBpZiAoIGNtYXAtPmZsYWdzICYgVFRfQ01BUF9GTEFHX09WRVJMQVBQSU5HICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1VJbnQgIGk7CisKKworICAgICAgICAgIC8qIGNhbGwgdGhlIGN1cnJlbnQgc2VnbWVudCBgbWF4JyAqLworICAgICAgICAgIG1heCA9IG1pZDsKKworICAgICAgICAgIGlmICggb2Zmc2V0ID09IDB4RkZGRlUgKQorICAgICAgICAgICAgbWlkID0gbWF4ICsgMTsKKworICAgICAgICAgIC8qIHNlYXJjaCBpbiBzZWdtZW50cyBiZWZvcmUgdGhlIGN1cnJlbnQgc2VnbWVudCAqLworICAgICAgICAgIGZvciAoIGkgPSBtYXggOyBpID4gMDsgaS0tICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9VSW50ICAgcHJldl9lbmQ7CisgICAgICAgICAgICBGVF9CeXRlKiAgb2xkX3A7CisKKworICAgICAgICAgICAgb2xkX3AgICAgPSBwOworICAgICAgICAgICAgcCAgICAgICAgPSBjbWFwLT5kYXRhICsgMTQgKyAoIGkgLSAxICkgKiAyOworICAgICAgICAgICAgcHJldl9lbmQgPSBUVF9QRUVLX1VTSE9SVCggcCApOworCisgICAgICAgICAgICBpZiAoIGNoYXJjb2RlID4gcHJldl9lbmQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBwID0gb2xkX3A7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbmQgICAgPSBwcmV2X2VuZDsKKyAgICAgICAgICAgIHAgICAgICs9IDIgKyBudW1fc2VnczI7CisgICAgICAgICAgICBzdGFydCAgPSBUVF9QRUVLX1VTSE9SVCggcCApOworICAgICAgICAgICAgcCAgICAgKz0gbnVtX3NlZ3MyOworICAgICAgICAgICAgZGVsdGEgID0gVFRfUEVFS19TSE9SVCggcCApOworICAgICAgICAgICAgcCAgICAgKz0gbnVtX3NlZ3MyOworICAgICAgICAgICAgb2Zmc2V0ID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKworICAgICAgICAgICAgaWYgKCBvZmZzZXQgIT0gMHhGRkZGVSApCisgICAgICAgICAgICAgIG1pZCA9IGkgLSAxOworICAgICAgICAgIH0KKworICAgICAgICAgIC8qIG5vIGx1Y2sgKi8KKyAgICAgICAgICBpZiAoIG1pZCA9PSBtYXggKyAxICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGkgIT0gbWF4ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcCAgICAgID0gY21hcC0+ZGF0YSArIDE0ICsgbWF4ICogMjsKKyAgICAgICAgICAgICAgZW5kICAgID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKyAgICAgICAgICAgICAgcCAgICAgKz0gMiArIG51bV9zZWdzMjsKKyAgICAgICAgICAgICAgc3RhcnQgID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKyAgICAgICAgICAgICAgcCAgICAgKz0gbnVtX3NlZ3MyOworICAgICAgICAgICAgICBkZWx0YSAgPSBUVF9QRUVLX1NIT1JUKCBwICk7CisgICAgICAgICAgICAgIHAgICAgICs9IG51bV9zZWdzMjsKKyAgICAgICAgICAgICAgb2Zmc2V0ID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWlkID0gbWF4OworCisgICAgICAgICAgICAvKiBzZWFyY2ggaW4gc2VnbWVudHMgYWZ0ZXIgdGhlIGN1cnJlbnQgc2VnbWVudCAqLworICAgICAgICAgICAgZm9yICggaSA9IG1heCArIDE7IGkgPCBudW1fc2VnczsgaSsrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfVUludCAgbmV4dF9lbmQsIG5leHRfc3RhcnQ7CisKKworICAgICAgICAgICAgICBwICAgICAgICAgID0gY21hcC0+ZGF0YSArIDE0ICsgaSAqIDI7CisgICAgICAgICAgICAgIG5leHRfZW5kICAgPSBUVF9QRUVLX1VTSE9SVCggcCApOworICAgICAgICAgICAgICBwICAgICAgICAgKz0gMiArIG51bV9zZWdzMjsKKyAgICAgICAgICAgICAgbmV4dF9zdGFydCA9IFRUX1BFRUtfVVNIT1JUKCBwICk7CisKKyAgICAgICAgICAgICAgaWYgKCBjaGFyY29kZSA8IG5leHRfc3RhcnQgKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGVuZCAgICA9IG5leHRfZW5kOworICAgICAgICAgICAgICBzdGFydCAgPSBuZXh0X3N0YXJ0OworICAgICAgICAgICAgICBwICAgICArPSBudW1fc2VnczI7CisgICAgICAgICAgICAgIGRlbHRhICA9IFRUX1BFRUtfU0hPUlQoIHAgKTsKKyAgICAgICAgICAgICAgcCAgICAgKz0gbnVtX3NlZ3MyOworICAgICAgICAgICAgICBvZmZzZXQgPSBUVF9QRUVLX1VTSE9SVCggcCApOworCisgICAgICAgICAgICAgIGlmICggb2Zmc2V0ICE9IDB4RkZGRlUgKQorICAgICAgICAgICAgICAgIG1pZCA9IGk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgICAgIC8qIHN0aWxsIG5vIGx1Y2sgKi8KKyAgICAgICAgICAgIGlmICggbWlkID09IG1heCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIG1pZCA9IGk7CisKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAgICAgLyogZW5kLCBzdGFydCwgZGVsdGEsIGFuZCBvZmZzZXQgYXJlIGZvciB0aGUgaSd0aCBzZWdtZW50ICovCisgICAgICAgICAgaWYgKCBtaWQgIT0gaSApCisgICAgICAgICAgeworICAgICAgICAgICAgcCAgICAgID0gY21hcC0+ZGF0YSArIDE0ICsgbWlkICogMjsKKyAgICAgICAgICAgIGVuZCAgICA9IFRUX1BFRUtfVVNIT1JUKCBwICk7CisgICAgICAgICAgICBwICAgICArPSAyICsgbnVtX3NlZ3MyOworICAgICAgICAgICAgc3RhcnQgID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKyAgICAgICAgICAgIHAgICAgICs9IG51bV9zZWdzMjsKKyAgICAgICAgICAgIGRlbHRhICA9IFRUX1BFRUtfU0hPUlQoIHAgKTsKKyAgICAgICAgICAgIHAgICAgICs9IG51bV9zZWdzMjsKKyAgICAgICAgICAgIG9mZnNldCA9IFRUX1BFRUtfVVNIT1JUKCBwICk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGlmICggb2Zmc2V0ID09IDB4RkZGRlUgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIG9mZnNldCApCisgICAgICAgIHsKKyAgICAgICAgICBwICs9IG9mZnNldCArICggY2hhcmNvZGUgLSBzdGFydCApICogMjsKKyAgICAgICAgICBnaW5kZXggPSBUVF9QRUVLX1VTSE9SVCggcCApOworICAgICAgICAgIGlmICggZ2luZGV4ICE9IDAgKQorICAgICAgICAgICAgZ2luZGV4ID0gKEZUX1VJbnQpKCBnaW5kZXggKyBkZWx0YSApICYgMHhGRkZGVTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgZ2luZGV4ID0gKEZUX1VJbnQpKCBjaGFyY29kZSArIGRlbHRhICkgJiAweEZGRkZVOworCisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIGlmICggbmV4dCApCisgICAgeworICAgICAgVFRfQ01hcDQgIGNtYXA0ID0gKFRUX0NNYXA0KWNtYXA7CisKKworICAgICAgLyogaWYgYGNoYXJjb2RlJyBpcyBub3QgaW4gYW55IHNlZ21lbnQsIHRoZW4gYG1pZCcgaXMgKi8KKyAgICAgIC8qIHRoZSBzZWdtZW50IG5lYXJlc3QgdG8gYGNoYXJjb2RlJyAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICBpZiAoIGNoYXJjb2RlID4gZW5kICkKKyAgICAgIHsKKyAgICAgICAgbWlkKys7CisgICAgICAgIGlmICggbWlkID09IG51bV9zZWdzICkKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKworICAgICAgaWYgKCB0dF9jbWFwNF9zZXRfcmFuZ2UoIGNtYXA0LCBtaWQgKSApCisgICAgICB7CisgICAgICAgIGlmICggZ2luZGV4ICkKKyAgICAgICAgICAqcGNoYXJjb2RlID0gY2hhcmNvZGU7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGNtYXA0LT5jdXJfY2hhcmNvZGUgPSBjaGFyY29kZTsKKworICAgICAgICBpZiAoIGdpbmRleCApCisgICAgICAgICAgY21hcDQtPmN1cl9naW5kZXggPSBnaW5kZXg7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGNtYXA0LT5jdXJfY2hhcmNvZGUgPSBjaGFyY29kZTsKKyAgICAgICAgICB0dF9jbWFwNF9uZXh0KCBjbWFwNCApOworICAgICAgICAgIGdpbmRleCA9IGNtYXA0LT5jdXJfZ2luZGV4OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBnaW5kZXggKQorICAgICAgICAgICpwY2hhcmNvZGUgPSBjbWFwNC0+Y3VyX2NoYXJjb2RlOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBnaW5kZXg7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludCApCisgIHR0X2NtYXA0X2NoYXJfaW5kZXgoIFRUX0NNYXAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBjaGFyX2NvZGUgKQorICB7CisgICAgaWYgKCBjaGFyX2NvZGUgPj0gMHgxMDAwMFVMICkKKyAgICAgIHJldHVybiAwOworCisgICAgaWYgKCBjbWFwLT5mbGFncyAmIFRUX0NNQVBfRkxBR19VTlNPUlRFRCApCisgICAgICByZXR1cm4gdHRfY21hcDRfY2hhcl9tYXBfbGluZWFyKCBjbWFwLCAmY2hhcl9jb2RlLCAwICk7CisgICAgZWxzZQorICAgICAgcmV0dXJuIHR0X2NtYXA0X2NoYXJfbWFwX2JpbmFyeSggY21hcCwgJmNoYXJfY29kZSwgMCApOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQzMiApCisgIHR0X2NtYXA0X2NoYXJfbmV4dCggVFRfQ01hcCAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICpwY2hhcl9jb2RlICkKKyAgeworICAgIEZUX1VJbnQgIGdpbmRleDsKKworCisgICAgaWYgKCAqcGNoYXJfY29kZSA+PSAweEZGRkZVICkKKyAgICAgIHJldHVybiAwOworCisgICAgaWYgKCBjbWFwLT5mbGFncyAmIFRUX0NNQVBfRkxBR19VTlNPUlRFRCApCisgICAgICBnaW5kZXggPSB0dF9jbWFwNF9jaGFyX21hcF9saW5lYXIoIGNtYXAsIHBjaGFyX2NvZGUsIDEgKTsKKyAgICBlbHNlCisgICAgeworICAgICAgVFRfQ01hcDQgIGNtYXA0ID0gKFRUX0NNYXA0KWNtYXA7CisKKworICAgICAgLyogbm8gbmVlZCB0byBzZWFyY2ggKi8KKyAgICAgIGlmICggKnBjaGFyX2NvZGUgPT0gY21hcDQtPmN1cl9jaGFyY29kZSApCisgICAgICB7CisgICAgICAgIHR0X2NtYXA0X25leHQoIGNtYXA0ICk7CisgICAgICAgIGdpbmRleCA9IGNtYXA0LT5jdXJfZ2luZGV4OworICAgICAgICBpZiAoIGdpbmRleCApCisgICAgICAgICAgKnBjaGFyX2NvZGUgPSBjbWFwNC0+Y3VyX2NoYXJjb2RlOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBnaW5kZXggPSB0dF9jbWFwNF9jaGFyX21hcF9iaW5hcnkoIGNtYXAsIHBjaGFyX2NvZGUsIDEgKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2luZGV4OworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgdHRfY21hcDRfZ2V0X2luZm8oIFRUX0NNYXAgICAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgIFRUX0NNYXBJbmZvICAqY21hcF9pbmZvICkKKyAgeworICAgIEZUX0J5dGUqICBwID0gY21hcC0+ZGF0YSArIDQ7CisKKworICAgIGNtYXBfaW5mby0+Zm9ybWF0ICAgPSA0OworICAgIGNtYXBfaW5mby0+bGFuZ3VhZ2UgPSAoRlRfVUxvbmcpVFRfUEVFS19VU0hPUlQoIHAgKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIEZUX0RFRklORV9UVF9DTUFQKAorICAgIHR0X2NtYXA0X2NsYXNzX3JlYywKKyAgICBzaXplb2YgKCBUVF9DTWFwNFJlYyApLAorICAgIChGVF9DTWFwX0luaXRGdW5jKSAgICAgdHRfY21hcDRfaW5pdCwKKyAgICAoRlRfQ01hcF9Eb25lRnVuYykgICAgIE5VTEwsCisgICAgKEZUX0NNYXBfQ2hhckluZGV4RnVuYyl0dF9jbWFwNF9jaGFyX2luZGV4LAorICAgIChGVF9DTWFwX0NoYXJOZXh0RnVuYykgdHRfY21hcDRfY2hhcl9uZXh0LAorCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorCisgICAgNCwKKyAgICAoVFRfQ01hcF9WYWxpZGF0ZUZ1bmMpdHRfY21hcDRfdmFsaWRhdGUsCisgICAgKFRUX0NNYXBfSW5mb19HZXRGdW5jKXR0X2NtYXA0X2dldF9pbmZvICkKKworI2VuZGlmIC8qIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF80ICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgIEZPUk1BVCA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRBQkxFIE9WRVJWSUVXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtLS0tLS0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgTkFNRSAgICAgICAgT0ZGU0VUICAgICAgICAgIFRZUEUgICAgICAgICAgICAgREVTQ1JJUFRJT04gICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBmb3JtYXQgICAgICAgMCAgICAgICAgICAgICAgVVNIT1JUICAgICAgICAgICBtdXN0IGJlIDQgICAgICAgICAgICAgICovCisgIC8qICAgbGVuZ3RoICAgICAgIDIgICAgICAgICAgICAgIFVTSE9SVCAgICAgICAgICAgdGFibGUgbGVuZ3RoIGluIGJ5dGVzICAqLworICAvKiAgIGxhbmd1YWdlICAgICA0ICAgICAgICAgICAgICBVU0hPUlQgICAgICAgICAgIE1hYyBsYW5ndWFnZSBjb2RlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZmlyc3QgICAgICAgIDYgICAgICAgICAgICAgIFVTSE9SVCAgICAgICAgICAgZmlyc3Qgc2VnbWVudCBjb2RlICAgICAqLworICAvKiAgIGNvdW50ICAgICAgICA4ICAgICAgICAgICAgICBVU0hPUlQgICAgICAgICAgIHNlZ21lbnQgc2l6ZSBpbiBjaGFycyAgKi8KKyAgLyogICBnbHlwaElkcyAgICAgMTAgICAgICAgICAgICAgVVNIT1JUW2NvdW50XSAgICBnbHlwaCBJRHMgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBIHZlcnkgc2ltcGxpZmllZCBzZWdtZW50IG1hcHBpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZmRlZiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfNgorCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICB0dF9jbWFwNl92YWxpZGF0ZSggRlRfQnl0ZSogICAgICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1ZhbGlkYXRvciAgdmFsaWQgKQorICB7CisgICAgRlRfQnl0ZSogIHA7CisgICAgRlRfVUludCAgIGxlbmd0aCwgY291bnQ7CisKKworICAgIGlmICggdGFibGUgKyAxMCA+IHZhbGlkLT5saW1pdCApCisgICAgICBGVF9JTlZBTElEX1RPT19TSE9SVDsKKworICAgIHAgICAgICA9IHRhYmxlICsgMjsKKyAgICBsZW5ndGggPSBUVF9ORVhUX1VTSE9SVCggcCApOworCisgICAgcCAgICAgID0gdGFibGUgKyA4OyAgICAgICAgICAgICAvKiBza2lwIGxhbmd1YWdlIGFuZCBzdGFydCBpbmRleCAqLworICAgIGNvdW50ICA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisKKyAgICBpZiAoIHRhYmxlICsgbGVuZ3RoID4gdmFsaWQtPmxpbWl0IHx8IGxlbmd0aCA8IDEwICsgY291bnQvKiAqIDIgKi8pIC8vIFpoYW5neHVlZmVuZyAyMDEzLjEyLjIzLiByZW1vdmUgY291bnQgbXVsdGlwbHkgMi4KKyAgICAgIEZUX0lOVkFMSURfVE9PX1NIT1JUOworCisgICAgLyogY2hlY2sgZ2x5cGggaW5kaWNlcyAqLworICAgIGlmICggdmFsaWQtPmxldmVsID49IEZUX1ZBTElEQVRFX1RJR0hUICkKKyAgICB7CisgICAgICBGVF9VSW50ICBnaW5kZXg7CisKKworICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0gKQorICAgICAgeworICAgICAgICBnaW5kZXggPSBUVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgICBpZiAoIGdpbmRleCA+PSBUVF9WQUxJRF9HTFlQSF9DT1VOVCggdmFsaWQgKSApCisgICAgICAgICAgRlRfSU5WQUxJRF9HTFlQSF9JRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQgKQorICB0dF9jbWFwNl9jaGFyX2luZGV4KCBUVF9DTWFwICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlICkKKyAgeworICAgIEZUX0J5dGUqICB0YWJsZSAgPSBjbWFwLT5kYXRhOworICAgIEZUX1VJbnQgICByZXN1bHQgPSAwOworICAgIEZUX0J5dGUqICBwICAgICAgPSB0YWJsZSArIDY7CisgICAgRlRfVUludCAgIHN0YXJ0ICA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisgICAgRlRfVUludCAgIGNvdW50ICA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisgICAgRlRfVUludCAgIGlkeCAgICA9IChGVF9VSW50KSggY2hhcl9jb2RlIC0gc3RhcnQgKTsKKworCisgICAgaWYgKCBpZHggPCBjb3VudCApCisgICAgeworICAgICAgcCArPSAyICogaWR4OworICAgICAgcmVzdWx0ID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9VSW50MzIgKQorICB0dF9jbWFwNl9jaGFyX25leHQoIFRUX0NNYXAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAqcGNoYXJfY29kZSApCisgIHsKKyAgICBGVF9CeXRlKiAgIHRhYmxlICAgICA9IGNtYXAtPmRhdGE7CisgICAgRlRfVUludDMyICByZXN1bHQgICAgPSAwOworICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlID0gKnBjaGFyX2NvZGUgKyAxOworICAgIEZUX1VJbnQgICAgZ2luZGV4ICAgID0gMDsKKworICAgIEZUX0J5dGUqICAgcCAgICAgICAgID0gdGFibGUgKyA2OworICAgIEZUX1VJbnQgICAgc3RhcnQgICAgID0gVFRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICBGVF9VSW50ICAgIGNvdW50ICAgICA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisgICAgRlRfVUludCAgICBpZHg7CisKKworICAgIGlmICggY2hhcl9jb2RlID49IDB4MTAwMDBVTCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIGNoYXJfY29kZSA8IHN0YXJ0ICkKKyAgICAgIGNoYXJfY29kZSA9IHN0YXJ0OworCisgICAgaWR4ID0gKEZUX1VJbnQpKCBjaGFyX2NvZGUgLSBzdGFydCApOworICAgIHAgICs9IDIgKiBpZHg7CisKKyAgICBmb3IgKCA7IGlkeCA8IGNvdW50OyBpZHgrKyApCisgICAgeworICAgICAgZ2luZGV4ID0gVFRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICAgIGlmICggZ2luZGV4ICE9IDAgKQorICAgICAgeworICAgICAgICByZXN1bHQgPSBjaGFyX2NvZGU7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgY2hhcl9jb2RlKys7CisgICAgfQorCisgIEV4aXQ6CisgICAgKnBjaGFyX2NvZGUgPSByZXN1bHQ7CisgICAgcmV0dXJuIGdpbmRleDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXA2X2dldF9pbmZvKCBUVF9DTWFwICAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICBUVF9DTWFwSW5mbyAgKmNtYXBfaW5mbyApCisgIHsKKyAgICBGVF9CeXRlKiAgcCA9IGNtYXAtPmRhdGEgKyA0OworCisKKyAgICBjbWFwX2luZm8tPmZvcm1hdCAgID0gNjsKKyAgICBjbWFwX2luZm8tPmxhbmd1YWdlID0gKEZUX1VMb25nKVRUX1BFRUtfVVNIT1JUKCBwICk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9ERUZJTkVfVFRfQ01BUCgKKyAgICB0dF9jbWFwNl9jbGFzc19yZWMsCisgICAgc2l6ZW9mICggVFRfQ01hcFJlYyApLAorCisgICAgKEZUX0NNYXBfSW5pdEZ1bmMpICAgICB0dF9jbWFwX2luaXQsCisgICAgKEZUX0NNYXBfRG9uZUZ1bmMpICAgICBOVUxMLAorICAgIChGVF9DTWFwX0NoYXJJbmRleEZ1bmMpdHRfY21hcDZfY2hhcl9pbmRleCwKKyAgICAoRlRfQ01hcF9DaGFyTmV4dEZ1bmMpIHR0X2NtYXA2X2NoYXJfbmV4dCwKKworICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKworICAgIDYsCisgICAgKFRUX0NNYXBfVmFsaWRhdGVGdW5jKXR0X2NtYXA2X3ZhbGlkYXRlLAorICAgIChUVF9DTWFwX0luZm9fR2V0RnVuYyl0dF9jbWFwNl9nZXRfaW5mbyApCisKKyNlbmRpZiAvKiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfNiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNQVQgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogSXQgaXMgaGFyZCB0byBjb21wbGV0ZWx5IHVuZGVyc3RhbmQgd2hhdCB0aGUgT3BlblR5cGUgc3BlYyAgICAqKioqKi8KKyAgLyoqKioqIHNheXMgYWJvdXQgdGhpcyBmb3JtYXQsIGJ1dCBoZXJlIGlzIG15IGNvbmNsdXNpb24uICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogVGhlIHB1cnBvc2Ugb2YgdGhpcyBmb3JtYXQgaXMgdG8gZWFzaWx5IG1hcCBVVEYtMTYgdGV4dCB0byAgICAqKioqKi8KKyAgLyoqKioqIGdseXBoIGluZGljZXMuICBCYXNpY2FsbHksIHRoZSBgY2hhcl9jb2RlJyBtdXN0IGJlIGluIG9uZSBvZiAgKioqKiovCisgIC8qKioqKiB0aGUgZm9sbG93aW5nIGZvcm1hdHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgLSBBIDE2LWJpdCB2YWx1ZSB0aGF0IGlzbid0IHBhcnQgb2YgdGhlIFVuaWNvZGUgU3Vycm9nYXRlcyAgKioqKiovCisgIC8qKioqKiAgICAgQXJlYSAoaS5lLiBVK0Q4MDAtVStERkZGKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgLSBBIDMyLWJpdCB2YWx1ZSwgbWFkZSBvZiB0d28gc3Vycm9nYXRlIHZhbHVlcywgaS5lLi4gaWYgICAgKioqKiovCisgIC8qKioqKiAgICAgYGNoYXJfY29kZSA9IChjaGFyX2hpIDw8IDE2KSB8IGNoYXJfbG8nLCB0aGVuIGJvdGggICAgICAgICoqKioqLworICAvKioqKiogICAgIGBjaGFyX2hpJyBhbmQgYGNoYXJfbG8nIG11c3QgYmUgaW4gdGhlIFN1cnJvZ2F0ZXMgQXJlYS4gICAqKioqKi8KKyAgLyoqKioqICAgICAgQXJlYS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogVGhlIGBpczMyJyB0YWJsZSBlbWJlZGRlZCBpbiB0aGUgY2hhcm1hcCBpbmRpY2F0ZXMgd2hldGhlciBhICAqKioqKi8KKyAgLyoqKioqIGdpdmVuIDE2LWJpdCB2YWx1ZSBpcyBpbiB0aGUgc3Vycm9nYXRlcyBhcmVhIG9yIG5vdC4gICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogU28sIGZvciBhbnkgZ2l2ZW4gYGNoYXJfY29kZScsIHdlIGNhbiBhc3NlcnQgdGhlIGZvbGxvd2luZzogICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgIElmIGBjaGFyX2hpID09IDAnIHRoZW4gd2UgbXVzdCBoYXZlIGBpczMyW2NoYXJfbG9dID09IDAnLiAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgSWYgYGNoYXJfaGkgIT0gMCcgdGhlbiB3ZSBtdXN0IGhhdmUgYm90aCAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgIGBpczMyW2NoYXJfaGldICE9IDAnIGFuZCBgaXMzMltjaGFyX2xvXSAhPSAwJy4gICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVEFCTEUgT1ZFUlZJRVcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0tLS0tLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBOQU1FICAgICAgICBPRkZTRVQgICAgICAgICBUWVBFICAgICAgICBERVNDUklQVElPTiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGZvcm1hdCAgICAgIDAgICAgICAgICAgICAgIFVTSE9SVCAgICAgIG11c3QgYmUgOCAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICByZXNlcnZlZCAgICAyICAgICAgICAgICAgICBVU0hPUlQgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgbGVuZ3RoICAgICAgNCAgICAgICAgICAgICAgVUxPTkcgICAgICAgbGVuZ3RoIGluIGJ5dGVzICAgICAgICAgICAgICAqLworICAvKiAgIGxhbmd1YWdlICAgIDggICAgICAgICAgICAgIFVMT05HICAgICAgIE1hYyBsYW5ndWFnZSBjb2RlICAgICAgICAgICAgKi8KKyAgLyogICBpczMyICAgICAgICAxMiAgICAgICAgICAgICBCWVRFWzgxOTJdICAzMi1iaXRuZXNzIGJpdG1hcCAgICAgICAgICAgICovCisgIC8qICAgY291bnQgICAgICAgODIwNCAgICAgICAgICAgVUxPTkcgICAgICAgbnVtYmVyIG9mIGdyb3VwcyAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBoZWFkZXIgaXMgZm9sbG93ZWQgYnkgYGNvdW50JyBncm91cHMgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXQ6ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHN0YXJ0ICAgICAgIDAgICAgICAgICAgICAgIFVMT05HICAgICAgIGZpcnN0IGNoYXJjb2RlICAgICAgICAgICAgICAgKi8KKyAgLyogICBlbmQgICAgICAgICA0ICAgICAgICAgICAgICBVTE9ORyAgICAgICBsYXN0IGNoYXJjb2RlICAgICAgICAgICAgICAgICovCisgIC8qICAgc3RhcnRJZCAgICAgOCAgICAgICAgICAgICAgVUxPTkcgICAgICAgc3RhcnQgZ2x5cGggSUQgZm9yIHRoZSBncm91cCAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmZGVmIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF84CisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXA4X3ZhbGlkYXRlKCBGVF9CeXRlKiAgICAgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgRlRfVmFsaWRhdG9yICB2YWxpZCApCisgIHsKKyAgICBGVF9CeXRlKiAgIHAgPSB0YWJsZSArIDQ7CisgICAgRlRfQnl0ZSogICBpczMyOworICAgIEZUX1VJbnQzMiAgbGVuZ3RoOworICAgIEZUX1VJbnQzMiAgbnVtX2dyb3VwczsKKworCisgICAgaWYgKCB0YWJsZSArIDE2ICsgODE5MiA+IHZhbGlkLT5saW1pdCApCisgICAgICBGVF9JTlZBTElEX1RPT19TSE9SVDsKKworICAgIGxlbmd0aCA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKyAgICBpZiAoIGxlbmd0aCA+IChGVF9VSW50MzIpKCB2YWxpZC0+bGltaXQgLSB0YWJsZSApIHx8IGxlbmd0aCA8IDgxOTIgKyAxNiApCisgICAgICBGVF9JTlZBTElEX1RPT19TSE9SVDsKKworICAgIGlzMzIgICAgICAgPSB0YWJsZSArIDEyOworICAgIHAgICAgICAgICAgPSBpczMyICArIDgxOTI7ICAgICAgICAgIC8qIHNraXAgYGlzMzInIGFycmF5ICovCisgICAgbnVtX2dyb3VwcyA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKworICAgIGlmICggcCArIG51bV9ncm91cHMgKiAxMiA+IHZhbGlkLT5saW1pdCApCisgICAgICBGVF9JTlZBTElEX1RPT19TSE9SVDsKKworICAgIC8qIGNoZWNrIGdyb3VwcywgdGhleSBtdXN0IGJlIGluIGluY3JlYXNpbmcgb3JkZXIgKi8KKyAgICB7CisgICAgICBGVF9VSW50MzIgIG4sIHN0YXJ0LCBlbmQsIHN0YXJ0X2lkLCBjb3VudCwgbGFzdCA9IDA7CisKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBudW1fZ3JvdXBzOyBuKysgKQorICAgICAgeworICAgICAgICBGVF9VSW50ICAgaGksIGxvOworCisKKyAgICAgICAgc3RhcnQgICAgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgICAgIGVuZCAgICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgICAgICBzdGFydF9pZCA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgICBpZiAoIHN0YXJ0ID4gZW5kICkKKyAgICAgICAgICBGVF9JTlZBTElEX0RBVEE7CisKKyAgICAgICAgaWYgKCBuID4gMCAmJiBzdGFydCA8PSBsYXN0ICkKKyAgICAgICAgICBGVF9JTlZBTElEX0RBVEE7CisKKyAgICAgICAgaWYgKCB2YWxpZC0+bGV2ZWwgPj0gRlRfVkFMSURBVEVfVElHSFQgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBzdGFydF9pZCArIGVuZCAtIHN0YXJ0ID49IFRUX1ZBTElEX0dMWVBIX0NPVU5UKCB2YWxpZCApICkKKyAgICAgICAgICAgIEZUX0lOVkFMSURfR0xZUEhfSUQ7CisKKyAgICAgICAgICBjb3VudCA9IChGVF9VSW50MzIpKCBlbmQgLSBzdGFydCArIDEgKTsKKworICAgICAgICAgIGlmICggc3RhcnQgJiB+MHhGRkZGVSApCisgICAgICAgICAgeworICAgICAgICAgICAgLyogc3RhcnRfaGkgIT0gMDsgY2hlY2sgdGhhdCBpczMyW2ldIGlzIDEgZm9yIGVhY2ggaSBpbiAqLworICAgICAgICAgICAgLyogdGhlIGBoaScgYW5kIGBsbycgb2YgdGhlIHJhbmdlIFtzdGFydC4uZW5kXSAgICAgICAgICAqLworICAgICAgICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0sIHN0YXJ0KysgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBoaSA9IChGVF9VSW50KSggc3RhcnQgPj4gMTYgKTsKKyAgICAgICAgICAgICAgbG8gPSAoRlRfVUludCkoIHN0YXJ0ICYgMHhGRkZGVSApOworCisgICAgICAgICAgICAgIGlmICggKGlzMzJbaGkgPj4gM10gJiAoIDB4ODAgPj4gKCBoaSAmIDcgKSApICkgPT0gMCApCisgICAgICAgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworCisgICAgICAgICAgICAgIGlmICggKGlzMzJbbG8gPj4gM10gJiAoIDB4ODAgPj4gKCBsbyAmIDcgKSApICkgPT0gMCApCisgICAgICAgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgLyogc3RhcnRfaGkgPT0gMDsgY2hlY2sgdGhhdCBpczMyW2ldIGlzIDAgZm9yIGVhY2ggaSBpbiAqLworICAgICAgICAgICAgLyogdGhlIHJhbmdlIFtzdGFydC4uZW5kXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgICAgICAvKiBlbmRfaGkgY2Fubm90IGJlICE9IDAhICovCisgICAgICAgICAgICBpZiAoIGVuZCAmIH4weEZGRkZVICkKKyAgICAgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworCisgICAgICAgICAgICBmb3IgKCA7IGNvdW50ID4gMDsgY291bnQtLSwgc3RhcnQrKyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGxvID0gKEZUX1VJbnQpKCBzdGFydCAmIDB4RkZGRlUgKTsKKworICAgICAgICAgICAgICBpZiAoIChpczMyW2xvID4+IDNdICYgKCAweDgwID4+ICggbG8gJiA3ICkgKSApICE9IDAgKQorICAgICAgICAgICAgICAgIEZUX0lOVkFMSURfREFUQTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsYXN0ID0gZW5kOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludCApCisgIHR0X2NtYXA4X2NoYXJfaW5kZXgoIFRUX0NNYXAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBjaGFyX2NvZGUgKQorICB7CisgICAgRlRfQnl0ZSogICB0YWJsZSAgICAgID0gY21hcC0+ZGF0YTsKKyAgICBGVF9VSW50ICAgIHJlc3VsdCAgICAgPSAwOworICAgIEZUX0J5dGUqICAgcCAgICAgICAgICA9IHRhYmxlICsgODIwNDsKKyAgICBGVF9VSW50MzIgIG51bV9ncm91cHMgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgRlRfVUludDMyICBzdGFydCwgZW5kLCBzdGFydF9pZDsKKworCisgICAgZm9yICggOyBudW1fZ3JvdXBzID4gMDsgbnVtX2dyb3Vwcy0tICkKKyAgICB7CisgICAgICBzdGFydCAgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKyAgICAgIGVuZCAgICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgICAgc3RhcnRfaWQgPSBUVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICAgIGlmICggY2hhcl9jb2RlIDwgc3RhcnQgKQorICAgICAgICBicmVhazsKKworICAgICAgaWYgKCBjaGFyX2NvZGUgPD0gZW5kICkKKyAgICAgIHsKKyAgICAgICAgcmVzdWx0ID0gKEZUX1VJbnQpKCBzdGFydF9pZCArIGNoYXJfY29kZSAtIHN0YXJ0ICk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQzMiApCisgIHR0X2NtYXA4X2NoYXJfbmV4dCggVFRfQ01hcCAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICpwY2hhcl9jb2RlICkKKyAgeworICAgIEZUX1VJbnQzMiAgcmVzdWx0ICAgICA9IDA7CisgICAgRlRfVUludDMyICBjaGFyX2NvZGUgID0gKnBjaGFyX2NvZGUgKyAxOworICAgIEZUX1VJbnQgICAgZ2luZGV4ICAgICA9IDA7CisgICAgRlRfQnl0ZSogICB0YWJsZSAgICAgID0gY21hcC0+ZGF0YTsKKyAgICBGVF9CeXRlKiAgIHAgICAgICAgICAgPSB0YWJsZSArIDgyMDQ7CisgICAgRlRfVUludDMyICBudW1fZ3JvdXBzID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgIEZUX1VJbnQzMiAgc3RhcnQsIGVuZCwgc3RhcnRfaWQ7CisKKworICAgIHAgPSB0YWJsZSArIDgyMDg7CisKKyAgICBmb3IgKCA7IG51bV9ncm91cHMgPiAwOyBudW1fZ3JvdXBzLS0gKQorICAgIHsKKyAgICAgIHN0YXJ0ICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgICAgZW5kICAgICAgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgICBzdGFydF9pZCA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgaWYgKCBjaGFyX2NvZGUgPCBzdGFydCApCisgICAgICAgIGNoYXJfY29kZSA9IHN0YXJ0OworCisgICAgICBpZiAoIGNoYXJfY29kZSA8PSBlbmQgKQorICAgICAgeworICAgICAgICBnaW5kZXggPSAoRlRfVUludCkoIGNoYXJfY29kZSAtIHN0YXJ0ICsgc3RhcnRfaWQgKTsKKyAgICAgICAgaWYgKCBnaW5kZXggIT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICByZXN1bHQgPSBjaGFyX2NvZGU7CisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgIEV4aXQ6CisgICAgKnBjaGFyX2NvZGUgPSByZXN1bHQ7CisgICAgcmV0dXJuIGdpbmRleDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXA4X2dldF9pbmZvKCBUVF9DTWFwICAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICBUVF9DTWFwSW5mbyAgKmNtYXBfaW5mbyApCisgIHsKKyAgICBGVF9CeXRlKiAgcCA9IGNtYXAtPmRhdGEgKyA4OworCisKKyAgICBjbWFwX2luZm8tPmZvcm1hdCAgID0gODsKKyAgICBjbWFwX2luZm8tPmxhbmd1YWdlID0gKEZUX1VMb25nKVRUX1BFRUtfVUxPTkcoIHAgKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIEZUX0RFRklORV9UVF9DTUFQKAorICAgIHR0X2NtYXA4X2NsYXNzX3JlYywKKyAgICBzaXplb2YgKCBUVF9DTWFwUmVjICksCisKKyAgICAoRlRfQ01hcF9Jbml0RnVuYykgICAgIHR0X2NtYXBfaW5pdCwKKyAgICAoRlRfQ01hcF9Eb25lRnVuYykgICAgIE5VTEwsCisgICAgKEZUX0NNYXBfQ2hhckluZGV4RnVuYyl0dF9jbWFwOF9jaGFyX2luZGV4LAorICAgIChGVF9DTWFwX0NoYXJOZXh0RnVuYykgdHRfY21hcDhfY2hhcl9uZXh0LAorCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorCisgICAgOCwKKyAgICAoVFRfQ01hcF9WYWxpZGF0ZUZ1bmMpdHRfY21hcDhfdmFsaWRhdGUsCisgICAgKFRUX0NNYXBfSW5mb19HZXRGdW5jKXR0X2NtYXA4X2dldF9pbmZvICkKKworI2VuZGlmIC8qIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF84ICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgIEZPUk1BVCAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRBQkxFIE9WRVJWSUVXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtLS0tLS0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgTkFNRSAgICAgIE9GRlNFVCAgVFlQRSAgICAgICAgICAgICAgIERFU0NSSVBUSU9OICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBmb3JtYXQgICAgIDAgICAgICBVU0hPUlQgICAgICAgICAgICAgbXVzdCBiZSAxMCAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgcmVzZXJ2ZWQgICAyICAgICAgVVNIT1JUICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGxlbmd0aCAgICAgNCAgICAgIFVMT05HICAgICAgICAgICAgICBsZW5ndGggaW4gYnl0ZXMgICAgICAgICAgICAgICAgKi8KKyAgLyogICBsYW5ndWFnZSAgIDggICAgICBVTE9ORyAgICAgICAgICAgICAgTWFjIGxhbmd1YWdlIGNvZGUgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHN0YXJ0ICAgICAxMiAgICAgIFVMT05HICAgICAgICAgICAgICBmaXJzdCBjaGFyIGluIHJhbmdlICAgICAgICAgICAgKi8KKyAgLyogICBjb3VudCAgICAgMTYgICAgICBVTE9ORyAgICAgICAgICAgICAgbnVtYmVyIG9mIGNoYXJzIGluIHJhbmdlICAgICAgICovCisgIC8qICAgZ2x5cGhJZHMgIDIwICAgICAgVVNIT1JUW2NvdW50XSAgICAgIGdseXBoIGluZGljZXMgY292ZXJlZCAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmZGVmIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF8xMAorCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICB0dF9jbWFwMTBfdmFsaWRhdGUoIEZUX0J5dGUqICAgICAgdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVmFsaWRhdG9yICB2YWxpZCApCisgIHsKKyAgICBGVF9CeXRlKiAgcCA9IHRhYmxlICsgNDsKKyAgICBGVF9VTG9uZyAgbGVuZ3RoLCBjb3VudDsKKworCisgICAgaWYgKCB0YWJsZSArIDIwID4gdmFsaWQtPmxpbWl0ICkKKyAgICAgIEZUX0lOVkFMSURfVE9PX1NIT1JUOworCisgICAgbGVuZ3RoID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgIHAgICAgICA9IHRhYmxlICsgMTY7CisgICAgY291bnQgID0gVFRfTkVYVF9VTE9ORyggcCApOworCisgICAgaWYgKCBsZW5ndGggPiAoRlRfVUxvbmcpKCB2YWxpZC0+bGltaXQgLSB0YWJsZSApIHx8CisgICAgICAgICBsZW5ndGggPCAyMCArIGNvdW50ICogMiAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgIEZUX0lOVkFMSURfVE9PX1NIT1JUOworCisgICAgLyogY2hlY2sgZ2x5cGggaW5kaWNlcyAqLworICAgIGlmICggdmFsaWQtPmxldmVsID49IEZUX1ZBTElEQVRFX1RJR0hUICkKKyAgICB7CisgICAgICBGVF9VSW50ICBnaW5kZXg7CisKKworICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0gKQorICAgICAgeworICAgICAgICBnaW5kZXggPSBUVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgICBpZiAoIGdpbmRleCA+PSBUVF9WQUxJRF9HTFlQSF9DT1VOVCggdmFsaWQgKSApCisgICAgICAgICAgRlRfSU5WQUxJRF9HTFlQSF9JRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQgKQorICB0dF9jbWFwMTBfY2hhcl9pbmRleCggVFRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBjaGFyX2NvZGUgKQorICB7CisgICAgRlRfQnl0ZSogICB0YWJsZSAgPSBjbWFwLT5kYXRhOworICAgIEZUX1VJbnQgICAgcmVzdWx0ID0gMDsKKyAgICBGVF9CeXRlKiAgIHAgICAgICA9IHRhYmxlICsgMTI7CisgICAgRlRfVUludDMyICBzdGFydCAgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgRlRfVUludDMyICBjb3VudCAgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgRlRfVUludDMyICBpZHggICAgPSAoRlRfVUxvbmcpKCBjaGFyX2NvZGUgLSBzdGFydCApOworCisKKyAgICBpZiAoIGlkeCA8IGNvdW50ICkKKyAgICB7CisgICAgICBwICAgICArPSAyICogaWR4OworICAgICAgcmVzdWx0ID0gVFRfUEVFS19VU0hPUlQoIHAgKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9VSW50MzIgKQorICB0dF9jbWFwMTBfY2hhcl9uZXh0KCBUVF9DTWFwICAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICpwY2hhcl9jb2RlICkKKyAgeworICAgIEZUX0J5dGUqICAgdGFibGUgICAgID0gY21hcC0+ZGF0YTsKKyAgICBGVF9VSW50MzIgIGNoYXJfY29kZSA9ICpwY2hhcl9jb2RlICsgMTsKKyAgICBGVF9VSW50ICAgIGdpbmRleCAgICA9IDA7CisgICAgRlRfQnl0ZSogICBwICAgICAgICAgPSB0YWJsZSArIDEyOworICAgIEZUX1VJbnQzMiAgc3RhcnQgICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgIEZUX1VJbnQzMiAgY291bnQgICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgIEZUX1VJbnQzMiAgaWR4OworCisKKyAgICBpZiAoIGNoYXJfY29kZSA8IHN0YXJ0ICkKKyAgICAgIGNoYXJfY29kZSA9IHN0YXJ0OworCisgICAgaWR4ID0gKEZUX1VJbnQzMikoIGNoYXJfY29kZSAtIHN0YXJ0ICk7CisgICAgcCAgKz0gMiAqIGlkeDsKKworICAgIGZvciAoIDsgaWR4IDwgY291bnQ7IGlkeCsrICkKKyAgICB7CisgICAgICBnaW5kZXggPSBUVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgaWYgKCBnaW5kZXggIT0gMCApCisgICAgICAgIGJyZWFrOworICAgICAgY2hhcl9jb2RlKys7CisgICAgfQorCisgICAgKnBjaGFyX2NvZGUgPSBjaGFyX2NvZGU7CisgICAgcmV0dXJuIGdpbmRleDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXAxMF9nZXRfaW5mbyggVFRfQ01hcCAgICAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgIFRUX0NNYXBJbmZvICAqY21hcF9pbmZvICkKKyAgeworICAgIEZUX0J5dGUqICBwID0gY21hcC0+ZGF0YSArIDg7CisKKworICAgIGNtYXBfaW5mby0+Zm9ybWF0ICAgPSAxMDsKKyAgICBjbWFwX2luZm8tPmxhbmd1YWdlID0gKEZUX1VMb25nKVRUX1BFRUtfVUxPTkcoIHAgKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIEZUX0RFRklORV9UVF9DTUFQKAorICAgIHR0X2NtYXAxMF9jbGFzc19yZWMsCisgICAgc2l6ZW9mICggVFRfQ01hcFJlYyApLAorCisgICAgKEZUX0NNYXBfSW5pdEZ1bmMpICAgICB0dF9jbWFwX2luaXQsCisgICAgKEZUX0NNYXBfRG9uZUZ1bmMpICAgICBOVUxMLAorICAgIChGVF9DTWFwX0NoYXJJbmRleEZ1bmMpdHRfY21hcDEwX2NoYXJfaW5kZXgsCisgICAgKEZUX0NNYXBfQ2hhck5leHRGdW5jKSB0dF9jbWFwMTBfY2hhcl9uZXh0LAorCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorCisgICAgMTAsCisgICAgKFRUX0NNYXBfVmFsaWRhdGVGdW5jKXR0X2NtYXAxMF92YWxpZGF0ZSwKKyAgICAoVFRfQ01hcF9JbmZvX0dldEZ1bmMpdHRfY21hcDEwX2dldF9pbmZvICkKKworI2VuZGlmIC8qIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF8xMCAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNQVQgMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUQUJMRSBPVkVSVklFVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIE5BTUUgICAgICAgIE9GRlNFVCAgICAgVFlQRSAgICAgICBERVNDUklQVElPTiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZm9ybWF0ICAgICAgMCAgICAgICAgICBVU0hPUlQgICAgIG11c3QgYmUgMTIgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHJlc2VydmVkICAgIDIgICAgICAgICAgVVNIT1JUICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBsZW5ndGggICAgICA0ICAgICAgICAgIFVMT05HICAgICAgbGVuZ3RoIGluIGJ5dGVzICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgbGFuZ3VhZ2UgICAgOCAgICAgICAgICBVTE9ORyAgICAgIE1hYyBsYW5ndWFnZSBjb2RlICAgICAgICAgICAgICAgICAqLworICAvKiAgIGNvdW50ICAgICAgIDEyICAgICAgICAgVUxPTkcgICAgICBudW1iZXIgb2YgZ3JvdXBzICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGhlYWRlciBpcyBmb2xsb3dlZCBieSBgY291bnQnIGdyb3VwcyBvZiB0aGUgZm9sbG93aW5nIGZvcm1hdDogICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgc3RhcnQgICAgICAgMCAgICAgICAgICBVTE9ORyAgICAgIGZpcnN0IGNoYXJjb2RlICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGVuZCAgICAgICAgIDQgICAgICAgICAgVUxPTkcgICAgICBsYXN0IGNoYXJjb2RlICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBzdGFydElkICAgICA4ICAgICAgICAgIFVMT05HICAgICAgc3RhcnQgZ2x5cGggSUQgZm9yIHRoZSBncm91cCAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjaWZkZWYgVFRfQ09ORklHX0NNQVBfRk9STUFUXzEyCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX0NNYXAxMlJlY18KKyAgeworICAgIFRUX0NNYXBSZWMgIGNtYXA7CisgICAgRlRfQm9vbCAgICAgdmFsaWQ7CisgICAgRlRfVUxvbmcgICAgY3VyX2NoYXJjb2RlOworICAgIEZUX1VJbnQgICAgIGN1cl9naW5kZXg7CisgICAgRlRfVUxvbmcgICAgY3VyX2dyb3VwOworICAgIEZUX1VMb25nICAgIG51bV9ncm91cHM7CisKKyAgfSBUVF9DTWFwMTJSZWMsICpUVF9DTWFwMTI7CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgdHRfY21hcDEyX2luaXQoIFRUX0NNYXAxMiAgY21hcCwKKyAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgdGFibGUgKQorICB7CisgICAgY21hcC0+Y21hcC5kYXRhICA9IHRhYmxlOworCisgICAgdGFibGUgICAgICAgICAgICs9IDEyOworICAgIGNtYXAtPm51bV9ncm91cHMgPSBGVF9QRUVLX1VMT05HKCB0YWJsZSApOworCisgICAgY21hcC0+dmFsaWQgICAgICA9IDA7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgdHRfY21hcDEyX3ZhbGlkYXRlKCBGVF9CeXRlKiAgICAgIHRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1ZhbGlkYXRvciAgdmFsaWQgKQorICB7CisgICAgRlRfQnl0ZSogICBwOworICAgIEZUX1VMb25nICAgbGVuZ3RoOworICAgIEZUX1VMb25nICAgbnVtX2dyb3VwczsKKworCisgICAgaWYgKCB0YWJsZSArIDE2ID4gdmFsaWQtPmxpbWl0ICkKKyAgICAgIEZUX0lOVkFMSURfVE9PX1NIT1JUOworCisgICAgcCAgICAgID0gdGFibGUgKyA0OworICAgIGxlbmd0aCA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKworICAgIHAgICAgICAgICAgPSB0YWJsZSArIDEyOworICAgIG51bV9ncm91cHMgPSBUVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICBpZiAoIGxlbmd0aCA+IChGVF9VTG9uZykoIHZhbGlkLT5saW1pdCAtIHRhYmxlICkgfHwKKyAgICAgICAgIGxlbmd0aCA8IDE2ICsgMTIgKiBudW1fZ3JvdXBzICAgICAgICAgICAgICAgKQorICAgICAgRlRfSU5WQUxJRF9UT09fU0hPUlQ7CisKKyAgICAvKiBjaGVjayBncm91cHMsIHRoZXkgbXVzdCBiZSBpbiBpbmNyZWFzaW5nIG9yZGVyICovCisgICAgeworICAgICAgRlRfVUxvbmcgIG4sIHN0YXJ0LCBlbmQsIHN0YXJ0X2lkLCBsYXN0ID0gMDsKKworCisgICAgICBmb3IgKCBuID0gMDsgbiA8IG51bV9ncm91cHM7IG4rKyApCisgICAgICB7CisgICAgICAgIHN0YXJ0ICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgICAgICBlbmQgICAgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKyAgICAgICAgc3RhcnRfaWQgPSBUVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICAgICAgaWYgKCBzdGFydCA+IGVuZCApCisgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworCisgICAgICAgIGlmICggbiA+IDAgJiYgc3RhcnQgPD0gbGFzdCApCisgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworCisgICAgICAgIGlmICggdmFsaWQtPmxldmVsID49IEZUX1ZBTElEQVRFX1RJR0hUICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggc3RhcnRfaWQgKyBlbmQgLSBzdGFydCA+PSBUVF9WQUxJRF9HTFlQSF9DT1VOVCggdmFsaWQgKSApCisgICAgICAgICAgICBGVF9JTlZBTElEX0dMWVBIX0lEOworICAgICAgICB9CisKKyAgICAgICAgbGFzdCA9IGVuZDsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKiBzZWFyY2ggdGhlIGluZGV4IG9mIHRoZSBjaGFyY29kZSBuZXh0IHRvIGNtYXAtPmN1cl9jaGFyY29kZSAqLworICAvKiBjbWFwLT5jdXJfZ3JvdXAgc2hvdWxkIGJlIHNldCB1cCBwcm9wZXJseSBieSBjYWxsZXIgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICB0dF9jbWFwMTJfbmV4dCggVFRfQ01hcDEyICBjbWFwICkKKyAgeworICAgIEZUX0J5dGUqICBwOworICAgIEZUX1VMb25nICBzdGFydCwgZW5kLCBzdGFydF9pZCwgY2hhcl9jb2RlOworICAgIEZUX1VMb25nICBuOworICAgIEZUX1VJbnQgICBnaW5kZXg7CisKKworICAgIGlmICggY21hcC0+Y3VyX2NoYXJjb2RlID49IDB4RkZGRkZGRkZVTCApCisgICAgICBnb3RvIEZhaWw7CisKKyAgICBjaGFyX2NvZGUgPSBjbWFwLT5jdXJfY2hhcmNvZGUgKyAxOworCisgICAgbiA9IGNtYXAtPmN1cl9ncm91cDsKKworICAgIGZvciAoIG4gPSBjbWFwLT5jdXJfZ3JvdXA7IG4gPCBjbWFwLT5udW1fZ3JvdXBzOyBuKysgKQorICAgIHsKKyAgICAgIHAgICAgICAgID0gY21hcC0+Y21hcC5kYXRhICsgMTYgKyAxMiAqIG47CisgICAgICBzdGFydCAgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKyAgICAgIGVuZCAgICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgICAgc3RhcnRfaWQgPSBUVF9QRUVLX1VMT05HKCBwICk7CisKKyAgICAgIGlmICggY2hhcl9jb2RlIDwgc3RhcnQgKQorICAgICAgICBjaGFyX2NvZGUgPSBzdGFydDsKKworICAgICAgZm9yICggOyBjaGFyX2NvZGUgPD0gZW5kOyBjaGFyX2NvZGUrKyApCisgICAgICB7CisgICAgICAgIGdpbmRleCA9IChGVF9VSW50KSggc3RhcnRfaWQgKyBjaGFyX2NvZGUgLSBzdGFydCApOworCisgICAgICAgIGlmICggZ2luZGV4ICkKKyAgICAgICAgeworICAgICAgICAgIGNtYXAtPmN1cl9jaGFyY29kZSA9IGNoYXJfY29kZTs7CisgICAgICAgICAgY21hcC0+Y3VyX2dpbmRleCAgID0gZ2luZGV4OworICAgICAgICAgIGNtYXAtPmN1cl9ncm91cCAgICA9IG47CisKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgRmFpbDoKKyAgICBjbWFwLT52YWxpZCA9IDA7CisgIH0KKworCisgIHN0YXRpYyBGVF9VSW50CisgIHR0X2NtYXAxMl9jaGFyX21hcF9iaW5hcnkoIFRUX0NNYXAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiogIHBjaGFyX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgIG5leHQgKQorICB7CisgICAgRlRfVUludCAgICBnaW5kZXggICAgID0gMDsKKyAgICBGVF9CeXRlKiAgIHAgICAgICAgICAgPSBjbWFwLT5kYXRhICsgMTI7CisgICAgRlRfVUludDMyICBudW1fZ3JvdXBzID0gVFRfUEVFS19VTE9ORyggcCApOworICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlICA9ICpwY2hhcl9jb2RlOworICAgIEZUX1VJbnQzMiAgc3RhcnQsIGVuZCwgc3RhcnRfaWQ7CisgICAgRlRfVUludDMyICBtYXgsIG1pbiwgbWlkOworCisKKyAgICBpZiAoICFudW1fZ3JvdXBzICkKKyAgICAgIHJldHVybiAwOworCisgICAgLyogbWFrZSBjb21waWxlciBoYXBweSAqLworICAgIG1pZCA9IG51bV9ncm91cHM7CisgICAgZW5kID0gMHhGRkZGRkZGRlVMOworCisgICAgaWYgKCBuZXh0ICkKKyAgICAgIGNoYXJfY29kZSsrOworCisgICAgbWluID0gMDsKKyAgICBtYXggPSBudW1fZ3JvdXBzOworCisgICAgLyogYmluYXJ5IHNlYXJjaCAqLworICAgIHdoaWxlICggbWluIDwgbWF4ICkKKyAgICB7CisgICAgICBtaWQgPSAoIG1pbiArIG1heCApID4+IDE7CisgICAgICBwICAgPSBjbWFwLT5kYXRhICsgMTYgKyAxMiAqIG1pZDsKKworICAgICAgc3RhcnQgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgICBlbmQgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgaWYgKCBjaGFyX2NvZGUgPCBzdGFydCApCisgICAgICAgIG1heCA9IG1pZDsKKyAgICAgIGVsc2UgaWYgKCBjaGFyX2NvZGUgPiBlbmQgKQorICAgICAgICBtaW4gPSBtaWQgKyAxOworICAgICAgZWxzZQorICAgICAgeworICAgICAgICBzdGFydF9pZCA9IFRUX1BFRUtfVUxPTkcoIHAgKTsKKyAgICAgICAgZ2luZGV4ID0gKEZUX1VJbnQpKCBzdGFydF9pZCArIGNoYXJfY29kZSAtIHN0YXJ0ICk7CisKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCBuZXh0ICkKKyAgICB7CisgICAgICBUVF9DTWFwMTIgIGNtYXAxMiA9IChUVF9DTWFwMTIpY21hcDsKKworCisgICAgICAvKiBpZiBgY2hhcl9jb2RlJyBpcyBub3QgaW4gYW55IGdyb3VwLCB0aGVuIGBtaWQnIGlzICovCisgICAgICAvKiB0aGUgZ3JvdXAgbmVhcmVzdCB0byBgY2hhcl9jb2RlJyAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIGlmICggY2hhcl9jb2RlID4gZW5kICkKKyAgICAgIHsKKyAgICAgICAgbWlkKys7CisgICAgICAgIGlmICggbWlkID09IG51bV9ncm91cHMgKQorICAgICAgICAgIHJldHVybiAwOworICAgICAgfQorCisgICAgICBjbWFwMTItPnZhbGlkICAgICAgICA9IDE7CisgICAgICBjbWFwMTItPmN1cl9jaGFyY29kZSA9IGNoYXJfY29kZTsKKyAgICAgIGNtYXAxMi0+Y3VyX2dyb3VwICAgID0gbWlkOworCisgICAgICBpZiAoICFnaW5kZXggKQorICAgICAgeworICAgICAgICB0dF9jbWFwMTJfbmV4dCggY21hcDEyICk7CisKKyAgICAgICAgaWYgKCBjbWFwMTItPnZhbGlkICkKKyAgICAgICAgICBnaW5kZXggPSBjbWFwMTItPmN1cl9naW5kZXg7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGNtYXAxMi0+Y3VyX2dpbmRleCA9IGdpbmRleDsKKworICAgICAgaWYgKCBnaW5kZXggKQorICAgICAgICAqcGNoYXJfY29kZSA9IGNtYXAxMi0+Y3VyX2NoYXJjb2RlOworICAgIH0KKworICAgIHJldHVybiBnaW5kZXg7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludCApCisgIHR0X2NtYXAxMl9jaGFyX2luZGV4KCBUVF9DTWFwICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIGNoYXJfY29kZSApCisgIHsKKyAgICByZXR1cm4gdHRfY21hcDEyX2NoYXJfbWFwX2JpbmFyeSggY21hcCwgJmNoYXJfY29kZSwgMCApOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQzMiApCisgIHR0X2NtYXAxMl9jaGFyX25leHQoIFRUX0NNYXAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgKnBjaGFyX2NvZGUgKQorICB7CisgICAgVFRfQ01hcDEyICBjbWFwMTIgPSAoVFRfQ01hcDEyKWNtYXA7CisgICAgRlRfVUxvbmcgICBnaW5kZXg7CisKKworICAgIGlmICggY21hcDEyLT5jdXJfY2hhcmNvZGUgPj0gMHhGRkZGRkZGRlVMICkKKyAgICAgIHJldHVybiAwOworCisgICAgLyogbm8gbmVlZCB0byBzZWFyY2ggKi8KKyAgICBpZiAoIGNtYXAxMi0+dmFsaWQgJiYgY21hcDEyLT5jdXJfY2hhcmNvZGUgPT0gKnBjaGFyX2NvZGUgKQorICAgIHsKKyAgICAgIHR0X2NtYXAxMl9uZXh0KCBjbWFwMTIgKTsKKyAgICAgIGlmICggY21hcDEyLT52YWxpZCApCisgICAgICB7CisgICAgICAgIGdpbmRleCA9IGNtYXAxMi0+Y3VyX2dpbmRleDsKKworICAgICAgICAvKiBYWFg6IGNoZWNrIGN1cl9jaGFyY29kZSBvdmVyZmxvdyBpcyBleHBlY3RlZCAqLworICAgICAgICBpZiAoIGdpbmRleCApCisgICAgICAgICAgKnBjaGFyX2NvZGUgPSAoRlRfVUludDMyKWNtYXAxMi0+Y3VyX2NoYXJjb2RlOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBnaW5kZXggPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgICBnaW5kZXggPSB0dF9jbWFwMTJfY2hhcl9tYXBfYmluYXJ5KCBjbWFwLCBwY2hhcl9jb2RlLCAxICk7CisKKyAgICAvKiBYWFg6IGNoZWNrIGdpbmRleCBvdmVyZmxvdyBpcyBleHBlY3RlZCAqLworICAgIHJldHVybiAoRlRfVUludDMyKWdpbmRleDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXAxMl9nZXRfaW5mbyggVFRfQ01hcCAgICAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgIFRUX0NNYXBJbmZvICAqY21hcF9pbmZvICkKKyAgeworICAgIEZUX0J5dGUqICBwID0gY21hcC0+ZGF0YSArIDg7CisKKworICAgIGNtYXBfaW5mby0+Zm9ybWF0ICAgPSAxMjsKKyAgICBjbWFwX2luZm8tPmxhbmd1YWdlID0gKEZUX1VMb25nKVRUX1BFRUtfVUxPTkcoIHAgKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIEZUX0RFRklORV9UVF9DTUFQKAorICAgIHR0X2NtYXAxMl9jbGFzc19yZWMsCisgICAgc2l6ZW9mICggVFRfQ01hcDEyUmVjICksCisKKyAgICAoRlRfQ01hcF9Jbml0RnVuYykgICAgIHR0X2NtYXAxMl9pbml0LAorICAgIChGVF9DTWFwX0RvbmVGdW5jKSAgICAgTlVMTCwKKyAgICAoRlRfQ01hcF9DaGFySW5kZXhGdW5jKXR0X2NtYXAxMl9jaGFyX2luZGV4LAorICAgIChGVF9DTWFwX0NoYXJOZXh0RnVuYykgdHRfY21hcDEyX2NoYXJfbmV4dCwKKworICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKworICAgIDEyLAorICAgIChUVF9DTWFwX1ZhbGlkYXRlRnVuYyl0dF9jbWFwMTJfdmFsaWRhdGUsCisgICAgKFRUX0NNYXBfSW5mb19HZXRGdW5jKXR0X2NtYXAxMl9nZXRfaW5mbyApCisKKyNlbmRpZiAvKiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMTIgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUIDEzICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVEFCTEUgT1ZFUlZJRVcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0tLS0tLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBOQU1FICAgICAgICBPRkZTRVQgICAgIFRZUEUgICAgICAgREVTQ1JJUFRJT04gICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGZvcm1hdCAgICAgIDAgICAgICAgICAgVVNIT1JUICAgICBtdXN0IGJlIDEzICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICByZXNlcnZlZCAgICAyICAgICAgICAgIFVTSE9SVCAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgbGVuZ3RoICAgICAgNCAgICAgICAgICBVTE9ORyAgICAgIGxlbmd0aCBpbiBieXRlcyAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIGxhbmd1YWdlICAgIDggICAgICAgICAgVUxPTkcgICAgICBNYWMgbGFuZ3VhZ2UgY29kZSAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBjb3VudCAgICAgICAxMiAgICAgICAgIFVMT05HICAgICAgbnVtYmVyIG9mIGdyb3VwcyAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBoZWFkZXIgaXMgZm9sbG93ZWQgYnkgYGNvdW50JyBncm91cHMgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXQ6ICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIHN0YXJ0ICAgICAgIDAgICAgICAgICAgVUxPTkcgICAgICBmaXJzdCBjaGFyY29kZSAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBlbmQgICAgICAgICA0ICAgICAgICAgIFVMT05HICAgICAgbGFzdCBjaGFyY29kZSAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgZ2x5cGhJZCAgICAgOCAgICAgICAgICBVTE9ORyAgICAgIGdseXBoIElEIGZvciB0aGUgd2hvbGUgZ3JvdXAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmZGVmIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF8xMworCisgIHR5cGVkZWYgc3RydWN0ICBUVF9DTWFwMTNSZWNfCisgIHsKKyAgICBUVF9DTWFwUmVjICBjbWFwOworICAgIEZUX0Jvb2wgICAgIHZhbGlkOworICAgIEZUX1VMb25nICAgIGN1cl9jaGFyY29kZTsKKyAgICBGVF9VSW50ICAgICBjdXJfZ2luZGV4OworICAgIEZUX1VMb25nICAgIGN1cl9ncm91cDsKKyAgICBGVF9VTG9uZyAgICBudW1fZ3JvdXBzOworCisgIH0gVFRfQ01hcDEzUmVjLCAqVFRfQ01hcDEzOworCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXAxM19pbml0KCBUVF9DTWFwMTMgIGNtYXAsCisgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIHRhYmxlICkKKyAgeworICAgIGNtYXAtPmNtYXAuZGF0YSAgPSB0YWJsZTsKKworICAgIHRhYmxlICAgICAgICAgICArPSAxMjsKKyAgICBjbWFwLT5udW1fZ3JvdXBzID0gRlRfUEVFS19VTE9ORyggdGFibGUgKTsKKworICAgIGNtYXAtPnZhbGlkICAgICAgPSAwOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXAxM192YWxpZGF0ZSggRlRfQnl0ZSogICAgICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WYWxpZGF0b3IgIHZhbGlkICkKKyAgeworICAgIEZUX0J5dGUqICBwOworICAgIEZUX1VMb25nICBsZW5ndGg7CisgICAgRlRfVUxvbmcgIG51bV9ncm91cHM7CisKKworICAgIGlmICggdGFibGUgKyAxNiA+IHZhbGlkLT5saW1pdCApCisgICAgICBGVF9JTlZBTElEX1RPT19TSE9SVDsKKworICAgIHAgICAgICA9IHRhYmxlICsgNDsKKyAgICBsZW5ndGggPSBUVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICBwICAgICAgICAgID0gdGFibGUgKyAxMjsKKyAgICBudW1fZ3JvdXBzID0gVFRfTkVYVF9VTE9ORyggcCApOworCisgICAgaWYgKCBsZW5ndGggPiAoRlRfVUxvbmcpKCB2YWxpZC0+bGltaXQgLSB0YWJsZSApIHx8CisgICAgICAgICBsZW5ndGggPCAxNiArIDEyICogbnVtX2dyb3VwcyAgICAgICAgICAgICAgICkKKyAgICAgIEZUX0lOVkFMSURfVE9PX1NIT1JUOworCisgICAgLyogY2hlY2sgZ3JvdXBzLCB0aGV5IG11c3QgYmUgaW4gaW5jcmVhc2luZyBvcmRlciAqLworICAgIHsKKyAgICAgIEZUX1VMb25nICBuLCBzdGFydCwgZW5kLCBnbHlwaF9pZCwgbGFzdCA9IDA7CisKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBudW1fZ3JvdXBzOyBuKysgKQorICAgICAgeworICAgICAgICBzdGFydCAgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKyAgICAgICAgZW5kICAgICAgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgICAgIGdseXBoX2lkID0gVFRfTkVYVF9VTE9ORyggcCApOworCisgICAgICAgIGlmICggc3RhcnQgPiBlbmQgKQorICAgICAgICAgIEZUX0lOVkFMSURfREFUQTsKKworICAgICAgICBpZiAoIG4gPiAwICYmIHN0YXJ0IDw9IGxhc3QgKQorICAgICAgICAgIEZUX0lOVkFMSURfREFUQTsKKworICAgICAgICBpZiAoIHZhbGlkLT5sZXZlbCA+PSBGVF9WQUxJREFURV9USUdIVCApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIGdseXBoX2lkID49IFRUX1ZBTElEX0dMWVBIX0NPVU5UKCB2YWxpZCApICkKKyAgICAgICAgICAgIEZUX0lOVkFMSURfR0xZUEhfSUQ7CisgICAgICAgIH0KKworICAgICAgICBsYXN0ID0gZW5kOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qIHNlYXJjaCB0aGUgaW5kZXggb2YgdGhlIGNoYXJjb2RlIG5leHQgdG8gY21hcC0+Y3VyX2NoYXJjb2RlICovCisgIC8qIGNtYXAtPmN1cl9ncm91cCBzaG91bGQgYmUgc2V0IHVwIHByb3Blcmx5IGJ5IGNhbGxlciAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIHR0X2NtYXAxM19uZXh0KCBUVF9DTWFwMTMgIGNtYXAgKQorICB7CisgICAgRlRfQnl0ZSogIHA7CisgICAgRlRfVUxvbmcgIHN0YXJ0LCBlbmQsIGdseXBoX2lkLCBjaGFyX2NvZGU7CisgICAgRlRfVUxvbmcgIG47CisgICAgRlRfVUludCAgIGdpbmRleDsKKworCisgICAgaWYgKCBjbWFwLT5jdXJfY2hhcmNvZGUgPj0gMHhGRkZGRkZGRlVMICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIGNoYXJfY29kZSA9IGNtYXAtPmN1cl9jaGFyY29kZSArIDE7CisKKyAgICBuID0gY21hcC0+Y3VyX2dyb3VwOworCisgICAgZm9yICggbiA9IGNtYXAtPmN1cl9ncm91cDsgbiA8IGNtYXAtPm51bV9ncm91cHM7IG4rKyApCisgICAgeworICAgICAgcCAgICAgICAgPSBjbWFwLT5jbWFwLmRhdGEgKyAxNiArIDEyICogbjsKKyAgICAgIHN0YXJ0ICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgICAgZW5kICAgICAgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgICBnbHlwaF9pZCA9IFRUX1BFRUtfVUxPTkcoIHAgKTsKKworICAgICAgaWYgKCBjaGFyX2NvZGUgPCBzdGFydCApCisgICAgICAgIGNoYXJfY29kZSA9IHN0YXJ0OworCisgICAgICBpZiAoIGNoYXJfY29kZSA8PSBlbmQgKQorICAgICAgeworICAgICAgICBnaW5kZXggPSAoRlRfVUludClnbHlwaF9pZDsKKworICAgICAgICBpZiAoIGdpbmRleCApCisgICAgICAgIHsKKyAgICAgICAgICBjbWFwLT5jdXJfY2hhcmNvZGUgPSBjaGFyX2NvZGU7OworICAgICAgICAgIGNtYXAtPmN1cl9naW5kZXggICA9IGdpbmRleDsKKyAgICAgICAgICBjbWFwLT5jdXJfZ3JvdXAgICAgPSBuOworCisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgIEZhaWw6CisgICAgY21hcC0+dmFsaWQgPSAwOworICB9CisKKworICBzdGF0aWMgRlRfVUludAorICB0dF9jbWFwMTNfY2hhcl9tYXBfYmluYXJ5KCBUVF9DTWFwICAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIqICBwY2hhcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICBuZXh0ICkKKyAgeworICAgIEZUX1VJbnQgICAgZ2luZGV4ICAgICA9IDA7CisgICAgRlRfQnl0ZSogICBwICAgICAgICAgID0gY21hcC0+ZGF0YSArIDEyOworICAgIEZUX1VJbnQzMiAgbnVtX2dyb3VwcyA9IFRUX1BFRUtfVUxPTkcoIHAgKTsKKyAgICBGVF9VSW50MzIgIGNoYXJfY29kZSAgPSAqcGNoYXJfY29kZTsKKyAgICBGVF9VSW50MzIgIHN0YXJ0LCBlbmQ7CisgICAgRlRfVUludDMyICBtYXgsIG1pbiwgbWlkOworCisKKyAgICBpZiAoICFudW1fZ3JvdXBzICkKKyAgICAgIHJldHVybiAwOworCisgICAgLyogbWFrZSBjb21waWxlciBoYXBweSAqLworICAgIG1pZCA9IG51bV9ncm91cHM7CisgICAgZW5kID0gMHhGRkZGRkZGRlVMOworCisgICAgaWYgKCBuZXh0ICkKKyAgICAgIGNoYXJfY29kZSsrOworCisgICAgbWluID0gMDsKKyAgICBtYXggPSBudW1fZ3JvdXBzOworCisgICAgLyogYmluYXJ5IHNlYXJjaCAqLworICAgIHdoaWxlICggbWluIDwgbWF4ICkKKyAgICB7CisgICAgICBtaWQgPSAoIG1pbiArIG1heCApID4+IDE7CisgICAgICBwICAgPSBjbWFwLT5kYXRhICsgMTYgKyAxMiAqIG1pZDsKKworICAgICAgc3RhcnQgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgICBlbmQgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgaWYgKCBjaGFyX2NvZGUgPCBzdGFydCApCisgICAgICAgIG1heCA9IG1pZDsKKyAgICAgIGVsc2UgaWYgKCBjaGFyX2NvZGUgPiBlbmQgKQorICAgICAgICBtaW4gPSBtaWQgKyAxOworICAgICAgZWxzZQorICAgICAgeworICAgICAgICBnaW5kZXggPSAoRlRfVUludClUVF9QRUVLX1VMT05HKCBwICk7CisKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCBuZXh0ICkKKyAgICB7CisgICAgICBUVF9DTWFwMTMgIGNtYXAxMyA9IChUVF9DTWFwMTMpY21hcDsKKworCisgICAgICAvKiBpZiBgY2hhcl9jb2RlJyBpcyBub3QgaW4gYW55IGdyb3VwLCB0aGVuIGBtaWQnIGlzICovCisgICAgICAvKiB0aGUgZ3JvdXAgbmVhcmVzdCB0byBgY2hhcl9jb2RlJyAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIGlmICggY2hhcl9jb2RlID4gZW5kICkKKyAgICAgIHsKKyAgICAgICAgbWlkKys7CisgICAgICAgIGlmICggbWlkID09IG51bV9ncm91cHMgKQorICAgICAgICAgIHJldHVybiAwOworICAgICAgfQorCisgICAgICBjbWFwMTMtPnZhbGlkICAgICAgICA9IDE7CisgICAgICBjbWFwMTMtPmN1cl9jaGFyY29kZSA9IGNoYXJfY29kZTsKKyAgICAgIGNtYXAxMy0+Y3VyX2dyb3VwICAgID0gbWlkOworCisgICAgICBpZiAoICFnaW5kZXggKQorICAgICAgeworICAgICAgICB0dF9jbWFwMTNfbmV4dCggY21hcDEzICk7CisKKyAgICAgICAgaWYgKCBjbWFwMTMtPnZhbGlkICkKKyAgICAgICAgICBnaW5kZXggPSBjbWFwMTMtPmN1cl9naW5kZXg7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGNtYXAxMy0+Y3VyX2dpbmRleCA9IGdpbmRleDsKKworICAgICAgaWYgKCBnaW5kZXggKQorICAgICAgICAqcGNoYXJfY29kZSA9IGNtYXAxMy0+Y3VyX2NoYXJjb2RlOworICAgIH0KKworICAgIHJldHVybiBnaW5kZXg7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludCApCisgIHR0X2NtYXAxM19jaGFyX2luZGV4KCBUVF9DTWFwICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIGNoYXJfY29kZSApCisgIHsKKyAgICByZXR1cm4gdHRfY21hcDEzX2NoYXJfbWFwX2JpbmFyeSggY21hcCwgJmNoYXJfY29kZSwgMCApOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQzMiApCisgIHR0X2NtYXAxM19jaGFyX25leHQoIFRUX0NNYXAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgKnBjaGFyX2NvZGUgKQorICB7CisgICAgVFRfQ01hcDEzICBjbWFwMTMgPSAoVFRfQ01hcDEzKWNtYXA7CisgICAgRlRfVUludCAgICBnaW5kZXg7CisKKworICAgIGlmICggY21hcDEzLT5jdXJfY2hhcmNvZGUgPj0gMHhGRkZGRkZGRlVMICkKKyAgICAgIHJldHVybiAwOworCisgICAgLyogbm8gbmVlZCB0byBzZWFyY2ggKi8KKyAgICBpZiAoIGNtYXAxMy0+dmFsaWQgJiYgY21hcDEzLT5jdXJfY2hhcmNvZGUgPT0gKnBjaGFyX2NvZGUgKQorICAgIHsKKyAgICAgIHR0X2NtYXAxM19uZXh0KCBjbWFwMTMgKTsKKyAgICAgIGlmICggY21hcDEzLT52YWxpZCApCisgICAgICB7CisgICAgICAgIGdpbmRleCA9IGNtYXAxMy0+Y3VyX2dpbmRleDsKKyAgICAgICAgaWYgKCBnaW5kZXggKQorICAgICAgICAgICpwY2hhcl9jb2RlID0gY21hcDEzLT5jdXJfY2hhcmNvZGU7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGdpbmRleCA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGdpbmRleCA9IHR0X2NtYXAxM19jaGFyX21hcF9iaW5hcnkoIGNtYXAsIHBjaGFyX2NvZGUsIDEgKTsKKworICAgIHJldHVybiBnaW5kZXg7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfRXJyb3IgKQorICB0dF9jbWFwMTNfZ2V0X2luZm8oIFRUX0NNYXAgICAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICBUVF9DTWFwSW5mbyAgKmNtYXBfaW5mbyApCisgIHsKKyAgICBGVF9CeXRlKiAgcCA9IGNtYXAtPmRhdGEgKyA4OworCisKKyAgICBjbWFwX2luZm8tPmZvcm1hdCAgID0gMTM7CisgICAgY21hcF9pbmZvLT5sYW5ndWFnZSA9IChGVF9VTG9uZylUVF9QRUVLX1VMT05HKCBwICk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9ERUZJTkVfVFRfQ01BUCgKKyAgICB0dF9jbWFwMTNfY2xhc3NfcmVjLAorICAgIHNpemVvZiAoIFRUX0NNYXAxM1JlYyApLAorCisgICAgKEZUX0NNYXBfSW5pdEZ1bmMpICAgICB0dF9jbWFwMTNfaW5pdCwKKyAgICAoRlRfQ01hcF9Eb25lRnVuYykgICAgIE5VTEwsCisgICAgKEZUX0NNYXBfQ2hhckluZGV4RnVuYyl0dF9jbWFwMTNfY2hhcl9pbmRleCwKKyAgICAoRlRfQ01hcF9DaGFyTmV4dEZ1bmMpIHR0X2NtYXAxM19jaGFyX25leHQsCisKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisKKyAgICAxMywKKyAgICAoVFRfQ01hcF9WYWxpZGF0ZUZ1bmMpdHRfY21hcDEzX3ZhbGlkYXRlLAorICAgIChUVF9DTWFwX0luZm9fR2V0RnVuYyl0dF9jbWFwMTNfZ2V0X2luZm8gKQorCisjZW5kaWYgLyogVFRfQ09ORklHX0NNQVBfRk9STUFUXzEzICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNQVQgMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRBQkxFIE9WRVJWSUVXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtLS0tLS0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgTkFNRSAgICAgICAgIE9GRlNFVCAgVFlQRSAgICBERVNDUklQVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBmb3JtYXQgICAgICAgICAwICAgICBVU0hPUlQgIG11c3QgYmUgMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgbGVuZ3RoICAgICAgICAgMiAgICAgVUxPTkcgICB0YWJsZSBsZW5ndGggaW4gYnl0ZXMgICAgICAgICAgICAgICAgICAqLworICAvKiAgIG51bVNlbGVjdG9yICAgIDYgICAgIFVMT05HICAgbnVtYmVyIG9mIHZhcmlhdGlvbiBzZWwuIHJlY29yZHMgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZvbGxvd2VkIGJ5IG51bVNlbGVjdG9yIHJlY29yZHMsIGVhY2ggb2Ygd2hpY2ggbG9va3MgbGlrZSAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICB2YXJTZWxlY3RvciAgICAwICAgICBVSU5UMjQgIFVuaWNvZGUgY29kZXBvaW50IG9mIHNlbC4gICAgICAgICAgICAgICovCisgIC8qICAgZGVmYXVsdE9mZiAgICAgMyAgICAgVUxPTkcgICBvZmZzZXQgdG8gYSBkZWZhdWx0IFVWUyB0YWJsZSAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmluZyBhbnkgdmFyaWFudHMgdG8gYmUgZm91bmQgaW4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBub3JtYWwgVW5pY29kZSBzdWJ0YWJsZS4gICAgICAgICAgICovCisgIC8qICAgbm9uRGVmT2ZmICAgICAgNyAgICAgVUxPTkcgICBvZmZzZXQgdG8gYSBub24tZGVmYXVsdCBVVlMgdGFibGUgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmluZyBhbnkgdmFyaWFudHMgbm90IGluIHRoZSAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkIGNtYXAsIHdpdGggR0lEcyBoZXJlICAgICAgICAgICovCisgIC8qIChlaXRoZXIgb2Zmc2V0IG1heSBiZSAwIE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU2VsZWN0b3JzIGFyZSBzb3J0ZWQgYnkgY29kZSBwb2ludC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBIGRlZmF1bHQgVW5pY29kZSBWYXJpYXRpb24gU2VsZWN0b3IgKFVWUykgc3VidGFibGUgaXMganVzdCBhIGxpc3Qgb2YgKi8KKyAgLyogcmFuZ2VzIG9mIGNvZGUgcG9pbnRzIHdoaWNoIGFyZSB0byBiZSBmb3VuZCBpbiB0aGUgc3RhbmRhcmQgY21hcC4gIE5vICovCisgIC8qIGdseXBoIElEcyAoR0lEcykgaGVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBudW1SYW5nZXMgICAgICAwICAgICBVTE9ORyAgIG51bWJlciBvZiByYW5nZXMgZm9sbG93aW5nICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBIHJhbmdlIGxvb2tzIGxpa2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgdW5pU3RhcnQgICAgICAgMCAgICAgVUlOVDI0ICBjb2RlIHBvaW50IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyByYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBhZGRpdGlvbmFsQ250ICAzICAgICBVQllURSAgIGNvdW50IG9mIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBpbiB0aGlzICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSAoemVybyBtZWFucyBhIHJhbmdlIG9mIGEgc2luZ2xlICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJhbmdlcyBhcmUgc29ydGVkIGJ5IGB1bmlTdGFydCcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQSBub24tZGVmYXVsdCBVbmljb2RlIFZhcmlhdGlvbiBTZWxlY3RvciAoVVZTKSBzdWJ0YWJsZSBpcyBhIGxpc3Qgb2YgICovCisgIC8qIG1hcHBpbmdzIGZyb20gY29kZXBvaW50IHRvIEdJRC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBudW1NYXBwaW5ncyAgICAwICAgICBVTE9ORyAgIG51bWJlciBvZiBtYXBwaW5ncyAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBIHJhbmdlIGxvb2tzIGxpa2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgdW5pU3RhcnQgICAgICAgMCAgICAgVUlOVDI0ICBjb2RlIHBvaW50IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyByYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBHSUQgICAgICAgICAgICAzICAgICBVU0hPUlQgIGFuZCBpdHMgR0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBSYW5nZXMgYXJlIHNvcnRlZCBieSBgdW5pU3RhcnQnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2lmZGVmIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF8xNAorCisgIHR5cGVkZWYgc3RydWN0ICBUVF9DTWFwMTRSZWNfCisgIHsKKyAgICBUVF9DTWFwUmVjICBjbWFwOworICAgIEZUX1VMb25nICAgIG51bV9zZWxlY3RvcnM7CisKKyAgICAvKiBUaGlzIGFycmF5IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHJlc3VsdHMgb2YgdmFyaW91cworICAgICAqIGNtYXAgMTQgcXVlcnkgZnVuY3Rpb25zLiAgVGhlIGRhdGEgaXMgb3ZlcndyaXR0ZW4KKyAgICAgKiBvbiBlYWNoIGNhbGwgdG8gdGhlc2UgZnVuY3Rpb25zLgorICAgICAqLworICAgIEZUX1VJbnQzMiAgIG1heF9yZXN1bHRzOworICAgIEZUX1VJbnQzMiogIHJlc3VsdHM7CisgICAgRlRfTWVtb3J5ICAgbWVtb3J5OworCisgIH0gVFRfQ01hcDE0UmVjLCAqVFRfQ01hcDE0OworCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCB2b2lkICkKKyAgdHRfY21hcDE0X2RvbmUoIFRUX0NNYXAxNCAgY21hcCApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGNtYXAtPm1lbW9yeTsKKworCisgICAgY21hcC0+bWF4X3Jlc3VsdHMgPSAwOworICAgIGlmICggbWVtb3J5ICE9IE5VTEwgJiYgY21hcC0+cmVzdWx0cyAhPSBOVUxMICkKKyAgICAgIEZUX0ZSRUUoIGNtYXAtPnJlc3VsdHMgKTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHR0X2NtYXAxNF9lbnN1cmUoIFRUX0NNYXAxNCAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBudW1fcmVzdWx0cywKKyAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgKQorICB7CisgICAgRlRfVUludDMyICBvbGRfbWF4ID0gY21hcC0+bWF4X3Jlc3VsdHM7CisgICAgRlRfRXJyb3IgICBlcnJvciAgID0gRlRfRXJyX09rOworCisKKyAgICBpZiAoIG51bV9yZXN1bHRzID4gY21hcC0+bWF4X3Jlc3VsdHMgKQorICAgIHsKKyAgICAgICBjbWFwLT5tZW1vcnkgPSBtZW1vcnk7CisKKyAgICAgICBpZiAoIEZUX1FSRU5FV19BUlJBWSggY21hcC0+cmVzdWx0cywgb2xkX21heCwgbnVtX3Jlc3VsdHMgKSApCisgICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgICBjbWFwLT5tYXhfcmVzdWx0cyA9IG51bV9yZXN1bHRzOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXAxNF9pbml0KCBUVF9DTWFwMTQgIGNtYXAsCisgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIHRhYmxlICkKKyAgeworICAgIGNtYXAtPmNtYXAuZGF0YSA9IHRhYmxlOworCisgICAgdGFibGUgICAgICAgICAgICAgICArPSA2OworICAgIGNtYXAtPm51bV9zZWxlY3RvcnMgID0gRlRfUEVFS19VTE9ORyggdGFibGUgKTsKKyAgICBjbWFwLT5tYXhfcmVzdWx0cyAgICA9IDA7CisgICAgY21hcC0+cmVzdWx0cyAgICAgICAgPSBOVUxMOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXAxNF92YWxpZGF0ZSggRlRfQnl0ZSogICAgICB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9WYWxpZGF0b3IgIHZhbGlkICkKKyAgeworICAgIEZUX0J5dGUqICBwICAgICAgICAgICAgID0gdGFibGUgKyAyOworICAgIEZUX1VMb25nICBsZW5ndGggICAgICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgIEZUX1VMb25nICBudW1fc2VsZWN0b3JzID0gVFRfTkVYVF9VTE9ORyggcCApOworCisKKyAgICBpZiAoIGxlbmd0aCA+IChGVF9VTG9uZykoIHZhbGlkLT5saW1pdCAtIHRhYmxlICkgfHwKKyAgICAgICAgIGxlbmd0aCA8IDEwICsgMTEgKiBudW1fc2VsZWN0b3JzICAgICAgICAgICAgKQorICAgICAgRlRfSU5WQUxJRF9UT09fU0hPUlQ7CisKKyAgICAvKiBjaGVjayBzZWxlY3RvcnMsIHRoZXkgbXVzdCBiZSBpbiBpbmNyZWFzaW5nIG9yZGVyICovCisgICAgeworICAgICAgLyogd2Ugc3RhcnQgbGFzdFZhclNlbCBhdCAxIGJlY2F1c2UgYSB2YXJpYW50IHNlbGVjdG9yIHZhbHVlIG9mIDAKKyAgICAgICAqIGlzbid0IHZhbGlkLgorICAgICAgICovCisgICAgICBGVF9VTG9uZyAgbiwgbGFzdFZhclNlbCA9IDE7CisKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBudW1fc2VsZWN0b3JzOyBuKysgKQorICAgICAgeworICAgICAgICBGVF9VTG9uZyAgdmFyU2VsICAgID0gVFRfTkVYVF9VSU5UMjQoIHAgKTsKKyAgICAgICAgRlRfVUxvbmcgIGRlZk9mZiAgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKyAgICAgICAgRlRfVUxvbmcgIG5vbmRlZk9mZiA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKworCisgICAgICAgIGlmICggZGVmT2ZmID49IGxlbmd0aCB8fCBub25kZWZPZmYgPj0gbGVuZ3RoICkKKyAgICAgICAgICBGVF9JTlZBTElEX1RPT19TSE9SVDsKKworICAgICAgICBpZiAoIHZhclNlbCA8IGxhc3RWYXJTZWwgKQorICAgICAgICAgIEZUX0lOVkFMSURfREFUQTsKKworICAgICAgICBsYXN0VmFyU2VsID0gdmFyU2VsICsgMTsKKworICAgICAgICAvKiBjaGVjayB0aGUgZGVmYXVsdCB0YWJsZSAodGhlc2UgZ2x5cGhzIHNob3VsZCBiZSByZWFjaGVkICAgICAqLworICAgICAgICAvKiB0aHJvdWdoIHRoZSBub3JtYWwgVW5pY29kZSBjbWFwLCBubyBHSURzLCBqdXN0IGNoZWNrIG9yZGVyKSAqLworICAgICAgICBpZiAoIGRlZk9mZiAhPSAwICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0J5dGUqICBkZWZwICAgICAgPSB0YWJsZSArIGRlZk9mZjsKKyAgICAgICAgICBGVF9VTG9uZyAgbnVtUmFuZ2VzID0gVFRfTkVYVF9VTE9ORyggZGVmcCApOworICAgICAgICAgIEZUX1VMb25nICBpOworICAgICAgICAgIEZUX1VMb25nICBsYXN0QmFzZSAgPSAwOworCisKKyAgICAgICAgICBpZiAoIGRlZnAgKyBudW1SYW5nZXMgKiA0ID4gdmFsaWQtPmxpbWl0ICkKKyAgICAgICAgICAgIEZUX0lOVkFMSURfVE9PX1NIT1JUOworCisgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBudW1SYW5nZXM7ICsraSApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfVUxvbmcgIGJhc2UgPSBUVF9ORVhUX1VJTlQyNCggZGVmcCApOworICAgICAgICAgICAgRlRfVUxvbmcgIGNudCAgPSBGVF9ORVhUX0JZVEUoIGRlZnAgKTsKKworCisgICAgICAgICAgICBpZiAoIGJhc2UgKyBjbnQgPj0gMHgxMTAwMDBVTCApICAgICAgICAgICAgICAvKiBlbmQgb2YgVW5pY29kZSAqLworICAgICAgICAgICAgICBGVF9JTlZBTElEX0RBVEE7CisKKyAgICAgICAgICAgIGlmICggYmFzZSA8IGxhc3RCYXNlICkKKyAgICAgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworCisgICAgICAgICAgICBsYXN0QmFzZSA9IGJhc2UgKyBjbnQgKyAxVTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBhbmQgdGhlIG5vbi1kZWZhdWx0IHRhYmxlICh0aGVzZSBnbHlwaHMgYXJlIHNwZWNpZmllZCBoZXJlKSAqLworICAgICAgICBpZiAoIG5vbmRlZk9mZiAhPSAwICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0J5dGUqICBuZHAgICAgICAgICA9IHRhYmxlICsgbm9uZGVmT2ZmOworICAgICAgICAgIEZUX1VMb25nICBudW1NYXBwaW5ncyA9IFRUX05FWFRfVUxPTkcoIG5kcCApOworICAgICAgICAgIEZUX1VMb25nICBpLCBsYXN0VW5pICA9IDA7CisKKworICAgICAgICAgIGlmICggbnVtTWFwcGluZ3MgKiA0ID4gKEZUX1VMb25nKSggdmFsaWQtPmxpbWl0IC0gbmRwICkgKQorICAgICAgICAgICAgRlRfSU5WQUxJRF9UT09fU0hPUlQ7CisKKyAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IG51bU1hcHBpbmdzOyArK2kgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VMb25nICB1bmkgPSBUVF9ORVhUX1VJTlQyNCggbmRwICk7CisgICAgICAgICAgICBGVF9VTG9uZyAgZ2lkID0gVFRfTkVYVF9VU0hPUlQoIG5kcCApOworCisKKyAgICAgICAgICAgIGlmICggdW5pID49IDB4MTEwMDAwVUwgKSAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBvZiBVbmljb2RlICovCisgICAgICAgICAgICAgIEZUX0lOVkFMSURfREFUQTsKKworICAgICAgICAgICAgaWYgKCB1bmkgPCBsYXN0VW5pICkKKyAgICAgICAgICAgICAgRlRfSU5WQUxJRF9EQVRBOworCisgICAgICAgICAgICBsYXN0VW5pID0gdW5pICsgMVU7CisKKyAgICAgICAgICAgIGlmICggdmFsaWQtPmxldmVsID49IEZUX1ZBTElEQVRFX1RJR0hUICAgICYmCisgICAgICAgICAgICAgICAgIGdpZCA+PSBUVF9WQUxJRF9HTFlQSF9DT1VOVCggdmFsaWQgKSApCisgICAgICAgICAgICAgIEZUX0lOVkFMSURfR0xZUEhfSUQ7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9VSW50ICkKKyAgdHRfY21hcDE0X2NoYXJfaW5kZXgoIFRUX0NNYXAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgY2hhcl9jb2RlICkKKyAgeworICAgIEZUX1VOVVNFRCggY21hcCApOworICAgIEZUX1VOVVNFRCggY2hhcl9jb2RlICk7CisKKyAgICAvKiBUaGlzIGNhbid0IGhhcHBlbiAqLworICAgIHJldHVybiAwOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQzMiApCisgIHR0X2NtYXAxNF9jaGFyX25leHQoIFRUX0NNYXAgICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQzMiAgKnBjaGFyX2NvZGUgKQorICB7CisgICAgRlRfVU5VU0VEKCBjbWFwICk7CisKKyAgICAvKiBUaGlzIGNhbid0IGhhcHBlbiAqLworICAgICpwY2hhcl9jb2RlID0gMDsKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIHR0X2NtYXAxNF9nZXRfaW5mbyggVFRfQ01hcCAgICAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgIFRUX0NNYXBJbmZvICAqY21hcF9pbmZvICkKKyAgeworICAgIEZUX1VOVVNFRCggY21hcCApOworCisgICAgY21hcF9pbmZvLT5mb3JtYXQgICA9IDE0OworICAgIC8qIHN1YnRhYmxlIDE0IGRvZXMgbm90IGRlZmluZSBhIGxhbmd1YWdlIGZpZWxkICovCisgICAgY21hcF9pbmZvLT5sYW5ndWFnZSA9IDB4RkZGRkZGRkZVTDsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIHN0YXRpYyBGVF9VSW50CisgIHR0X2NtYXAxNF9jaGFyX21hcF9kZWZfYmluYXJ5KCBGVF9CeXRlICAgICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAgY2hhcl9jb2RlICkKKyAgeworICAgIEZUX1VJbnQzMiAgbnVtUmFuZ2VzID0gVFRfUEVFS19VTE9ORyggYmFzZSApOworICAgIEZUX1VJbnQzMiAgbWF4LCBtaW47CisKKworICAgIG1pbiA9IDA7CisgICAgbWF4ID0gbnVtUmFuZ2VzOworCisgICAgYmFzZSArPSA0OworCisgICAgLyogYmluYXJ5IHNlYXJjaCAqLworICAgIHdoaWxlICggbWluIDwgbWF4ICkKKyAgICB7CisgICAgICBGVF9VSW50MzIgIG1pZCAgID0gKCBtaW4gKyBtYXggKSA+PiAxOworICAgICAgRlRfQnl0ZSogICBwICAgICA9IGJhc2UgKyA0ICogbWlkOworICAgICAgRlRfVUxvbmcgICBzdGFydCA9IFRUX05FWFRfVUlOVDI0KCBwICk7CisgICAgICBGVF9VSW50ICAgIGNudCAgID0gRlRfTkVYVF9CWVRFKCBwICk7CisKKworICAgICAgaWYgKCBjaGFyX2NvZGUgPCBzdGFydCApCisgICAgICAgIG1heCA9IG1pZDsKKyAgICAgIGVsc2UgaWYgKCBjaGFyX2NvZGUgPiBzdGFydCtjbnQgKQorICAgICAgICBtaW4gPSBtaWQgKyAxOworICAgICAgZWxzZQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworCisgIHN0YXRpYyBGVF9VSW50CisgIHR0X2NtYXAxNF9jaGFyX21hcF9ub25kZWZfYmluYXJ5KCBGVF9CeXRlICAgICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICAgY2hhcl9jb2RlICkKKyAgeworICAgIEZUX1VJbnQzMiAgbnVtTWFwcGluZ3MgPSBUVF9QRUVLX1VMT05HKCBiYXNlICk7CisgICAgRlRfVUludDMyICBtYXgsIG1pbjsKKworCisgICAgbWluID0gMDsKKyAgICBtYXggPSBudW1NYXBwaW5nczsKKworICAgIGJhc2UgKz0gNDsKKworICAgIC8qIGJpbmFyeSBzZWFyY2ggKi8KKyAgICB3aGlsZSAoIG1pbiA8IG1heCApCisgICAgeworICAgICAgRlRfVUludDMyICBtaWQgPSAoIG1pbiArIG1heCApID4+IDE7CisgICAgICBGVF9CeXRlKiAgIHAgICA9IGJhc2UgKyA1ICogbWlkOworICAgICAgRlRfVUludDMyICB1bmkgPSAoRlRfVUludDMyKVRUX05FWFRfVUlOVDI0KCBwICk7CisKKworICAgICAgaWYgKCBjaGFyX2NvZGUgPCB1bmkgKQorICAgICAgICBtYXggPSBtaWQ7CisgICAgICBlbHNlIGlmICggY2hhcl9jb2RlID4gdW5pICkKKyAgICAgICAgbWluID0gbWlkICsgMTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFRUX1BFRUtfVVNIT1JUKCBwICk7CisgICAgfQorCisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIHN0YXRpYyBGVF9CeXRlKgorICB0dF9jbWFwMTRfZmluZF92YXJpYW50KCBGVF9CeXRlICAgICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgICB2YXJpYW50Q29kZSApCisgIHsKKyAgICBGVF9VSW50MzIgIG51bVZhciA9IFRUX1BFRUtfVUxPTkcoIGJhc2UgKTsKKyAgICBGVF9VSW50MzIgIG1heCwgbWluOworCisKKyAgICBtaW4gPSAwOworICAgIG1heCA9IG51bVZhcjsKKworICAgIGJhc2UgKz0gNDsKKworICAgIC8qIGJpbmFyeSBzZWFyY2ggKi8KKyAgICB3aGlsZSAoIG1pbiA8IG1heCApCisgICAgeworICAgICAgRlRfVUludDMyICBtaWQgICAgPSAoIG1pbiArIG1heCApID4+IDE7CisgICAgICBGVF9CeXRlKiAgIHAgICAgICA9IGJhc2UgKyAxMSAqIG1pZDsKKyAgICAgIEZUX1VMb25nICAgdmFyU2VsID0gVFRfTkVYVF9VSU5UMjQoIHAgKTsKKworCisgICAgICBpZiAoIHZhcmlhbnRDb2RlIDwgdmFyU2VsICkKKyAgICAgICAgbWF4ID0gbWlkOworICAgICAgZWxzZSBpZiAoIHZhcmlhbnRDb2RlID4gdmFyU2VsICkKKyAgICAgICAgbWluID0gbWlkICsgMTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludCApCisgIHR0X2NtYXAxNF9jaGFyX3Zhcl9pbmRleCggVFRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUX0NNYXAgICAgdWNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludDMyICBjaGFyY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIHZhcmlhbnRTZWxlY3RvciApCisgIHsKKyAgICBGVF9CeXRlKiAgcCA9IHR0X2NtYXAxNF9maW5kX3ZhcmlhbnQoIGNtYXAtPmRhdGEgKyA2LCB2YXJpYW50U2VsZWN0b3IgKTsKKyAgICBGVF9VTG9uZyAgZGVmT2ZmOworICAgIEZUX1VMb25nICBub25kZWZPZmY7CisKKworICAgIGlmICggIXAgKQorICAgICAgcmV0dXJuIDA7CisKKyAgICBkZWZPZmYgICAgPSBUVF9ORVhUX1VMT05HKCBwICk7CisgICAgbm9uZGVmT2ZmID0gVFRfUEVFS19VTE9ORyggcCApOworCisgICAgaWYgKCBkZWZPZmYgIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgdHRfY21hcDE0X2NoYXJfbWFwX2RlZl9iaW5hcnkoIGNtYXAtPmRhdGEgKyBkZWZPZmYsIGNoYXJjb2RlICkgKQorICAgIHsKKyAgICAgIC8qIFRoaXMgaXMgdGhlIGRlZmF1bHQgdmFyaWFudCBvZiB0aGlzIGNoYXJjb2RlLiAgR0lEIG5vdCBzdG9yZWQgKi8KKyAgICAgIC8qIGhlcmU7IHN0b3JlZCBpbiB0aGUgbm9ybWFsIFVuaWNvZGUgY2hhcm1hcCBpbnN0ZWFkLiAgICAgICAgICAgKi8KKyAgICAgIHJldHVybiB1Y21hcC0+Y21hcC5jbGF6ei0+Y2hhcl9pbmRleCggJnVjbWFwLT5jbWFwLCBjaGFyY29kZSApOworICAgIH0KKworICAgIGlmICggbm9uZGVmT2ZmICE9IDAgKQorICAgICAgcmV0dXJuIHR0X2NtYXAxNF9jaGFyX21hcF9ub25kZWZfYmluYXJ5KCBjbWFwLT5kYXRhICsgbm9uZGVmT2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyY29kZSApOworCisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfSW50ICkKKyAgdHRfY21hcDE0X2NoYXJfdmFyX2lzZGVmYXVsdCggVFRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIGNoYXJjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIHZhcmlhbnRTZWxlY3RvciApCisgIHsKKyAgICBGVF9CeXRlKiAgcCA9IHR0X2NtYXAxNF9maW5kX3ZhcmlhbnQoIGNtYXAtPmRhdGEgKyA2LCB2YXJpYW50U2VsZWN0b3IgKTsKKyAgICBGVF9VTG9uZyAgZGVmT2ZmOworICAgIEZUX1VMb25nICBub25kZWZPZmY7CisKKworICAgIGlmICggIXAgKQorICAgICAgcmV0dXJuIC0xOworCisgICAgZGVmT2ZmICAgID0gVFRfTkVYVF9VTE9ORyggcCApOworICAgIG5vbmRlZk9mZiA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKworICAgIGlmICggZGVmT2ZmICE9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIHR0X2NtYXAxNF9jaGFyX21hcF9kZWZfYmluYXJ5KCBjbWFwLT5kYXRhICsgZGVmT2ZmLCBjaGFyY29kZSApICkKKyAgICAgIHJldHVybiAxOworCisgICAgaWYgKCBub25kZWZPZmYgIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIHR0X2NtYXAxNF9jaGFyX21hcF9ub25kZWZfYmluYXJ5KCBjbWFwLT5kYXRhICsgbm9uZGVmT2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJjb2RlICkgIT0gMCAgICAgICAgICkKKyAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIC0xOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX1VJbnQzMiogKQorICB0dF9jbWFwMTRfdmFyaWFudHMoIFRUX0NNYXAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApCisgIHsKKyAgICBUVF9DTWFwMTQgICBjbWFwMTQgPSAoVFRfQ01hcDE0KWNtYXA7CisgICAgRlRfVUludDMyICAgY291bnQgID0gY21hcDE0LT5udW1fc2VsZWN0b3JzOworICAgIEZUX0J5dGUqICAgIHAgICAgICA9IGNtYXAtPmRhdGEgKyAxMDsKKyAgICBGVF9VSW50MzIqICByZXN1bHQ7CisgICAgRlRfVUludDMyICAgaTsKKworCisgICAgaWYgKCB0dF9jbWFwMTRfZW5zdXJlKCBjbWFwMTQsICggY291bnQgKyAxICksIG1lbW9yeSApICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gY21hcDE0LT5yZXN1bHRzOworICAgIGZvciAoIGkgPSAwOyBpIDwgY291bnQ7ICsraSApCisgICAgeworICAgICAgcmVzdWx0W2ldID0gKEZUX1VJbnQzMilUVF9ORVhUX1VJTlQyNCggcCApOworICAgICAgcCAgICAgICAgKz0gODsKKyAgICB9CisgICAgcmVzdWx0W2ldID0gMDsKKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludDMyICogKQorICB0dF9jbWFwMTRfY2hhcl92YXJpYW50cyggVFRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIGNoYXJDb2RlICkKKyAgeworICAgIFRUX0NNYXAxNCAgIGNtYXAxNCA9IChUVF9DTWFwMTQpICBjbWFwOworICAgIEZUX1VJbnQzMiAgIGNvdW50ICA9IGNtYXAxNC0+bnVtX3NlbGVjdG9yczsKKyAgICBGVF9CeXRlKiAgICBwICAgICAgPSBjbWFwLT5kYXRhICsgMTA7CisgICAgRlRfVUludDMyKiAgcTsKKworCisgICAgaWYgKCB0dF9jbWFwMTRfZW5zdXJlKCBjbWFwMTQsICggY291bnQgKyAxICksIG1lbW9yeSApICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yICggcSA9IGNtYXAxNC0+cmVzdWx0czsgY291bnQgPiAwOyAtLWNvdW50ICkKKyAgICB7CisgICAgICBGVF9VSW50MzIgIHZhclNlbCAgICA9IFRUX05FWFRfVUlOVDI0KCBwICk7CisgICAgICBGVF9VTG9uZyAgIGRlZk9mZiAgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKyAgICAgIEZUX1VMb25nICAgbm9uZGVmT2ZmID0gVFRfTkVYVF9VTE9ORyggcCApOworCisKKyAgICAgIGlmICggKCBkZWZPZmYgIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICB0dF9jbWFwMTRfY2hhcl9tYXBfZGVmX2JpbmFyeSggY21hcC0+ZGF0YSArIGRlZk9mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhckNvZGUgKSAgICAgICAgICAgICAgICAgKSB8fAorICAgICAgICAgICAoIG5vbmRlZk9mZiAhPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgIHR0X2NtYXAxNF9jaGFyX21hcF9ub25kZWZfYmluYXJ5KCBjbWFwLT5kYXRhICsgbm9uZGVmT2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQ29kZSApICE9IDAgICAgICAgICApICkKKyAgICAgIHsKKyAgICAgICAgcVswXSA9IHZhclNlbDsKKyAgICAgICAgcSsrOworICAgICAgfQorICAgIH0KKyAgICBxWzBdID0gMDsKKworICAgIHJldHVybiBjbWFwMTQtPnJlc3VsdHM7CisgIH0KKworCisgIHN0YXRpYyBGVF9VSW50CisgIHR0X2NtYXAxNF9kZWZfY2hhcl9jb3VudCggRlRfQnl0ZSAgKnAgKQorICB7CisgICAgRlRfVUludDMyICBudW1SYW5nZXMgPSAoRlRfVUludDMyKVRUX05FWFRfVUxPTkcoIHAgKTsKKyAgICBGVF9VSW50ICAgIHRvdCAgICAgICA9IDA7CisKKworICAgIHAgKz0gMzsgIC8qIHBvaW50IHRvIHRoZSBmaXJzdCBgY250JyBmaWVsZCAqLworICAgIGZvciAoIDsgbnVtUmFuZ2VzID4gMDsgbnVtUmFuZ2VzLS0gKQorICAgIHsKKyAgICAgIHRvdCArPSAxICsgcFswXTsKKyAgICAgIHAgICArPSA0OworICAgIH0KKworICAgIHJldHVybiB0b3Q7CisgIH0KKworCisgIHN0YXRpYyBGVF9VSW50MzIqCisgIHR0X2NtYXAxNF9nZXRfZGVmX2NoYXJzKCBUVF9DTWFwICAgIGNtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgIG1lbW9yeSApCisgIHsKKyAgICBUVF9DTWFwMTQgICBjbWFwMTQgPSAoVFRfQ01hcDE0KSBjbWFwOworICAgIEZUX1VJbnQzMiAgIG51bVJhbmdlczsKKyAgICBGVF9VSW50ICAgICBjbnQ7CisgICAgRlRfVUludDMyKiAgcTsKKworCisgICAgY250ICAgICAgID0gdHRfY21hcDE0X2RlZl9jaGFyX2NvdW50KCBwICk7CisgICAgbnVtUmFuZ2VzID0gKEZUX1VJbnQzMilUVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICBpZiAoIHR0X2NtYXAxNF9lbnN1cmUoIGNtYXAxNCwgKCBjbnQgKyAxICksIG1lbW9yeSApICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yICggcSA9IGNtYXAxNC0+cmVzdWx0czsgbnVtUmFuZ2VzID4gMDsgLS1udW1SYW5nZXMgKQorICAgIHsKKyAgICAgIEZUX1VJbnQzMiAgdW5pID0gKEZUX1VJbnQzMilUVF9ORVhUX1VJTlQyNCggcCApOworCisKKyAgICAgIGNudCA9IEZUX05FWFRfQllURSggcCApICsgMTsKKyAgICAgIGRvCisgICAgICB7CisgICAgICAgIHFbMF0gID0gdW5pOworICAgICAgICB1bmkgICs9IDE7CisgICAgICAgIHEgICAgKz0gMTsKKworICAgICAgfSB3aGlsZSAoIC0tY250ICE9IDAgKTsKKyAgICB9CisgICAgcVswXSA9IDA7CisKKyAgICByZXR1cm4gY21hcDE0LT5yZXN1bHRzOworICB9CisKKworICBzdGF0aWMgRlRfVUludDMyKgorICB0dF9jbWFwMTRfZ2V0X25vbmRlZl9jaGFycyggVFRfQ01hcCAgICAgY21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUgICAgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICBtZW1vcnkgKQorICB7CisgICAgVFRfQ01hcDE0ICAgY21hcDE0ID0gKFRUX0NNYXAxNCkgY21hcDsKKyAgICBGVF9VSW50MzIgICBudW1NYXBwaW5nczsKKyAgICBGVF9VSW50ICAgICBpOworICAgIEZUX1VJbnQzMiAgKnJldDsKKworCisgICAgbnVtTWFwcGluZ3MgPSAoRlRfVUludDMyKVRUX05FWFRfVUxPTkcoIHAgKTsKKworICAgIGlmICggdHRfY21hcDE0X2Vuc3VyZSggY21hcDE0LCAoIG51bU1hcHBpbmdzICsgMSApLCBtZW1vcnkgKSApCisgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldCA9IGNtYXAxNC0+cmVzdWx0czsKKyAgICBmb3IgKCBpID0gMDsgaSA8IG51bU1hcHBpbmdzOyArK2kgKQorICAgIHsKKyAgICAgIHJldFtpXSA9IChGVF9VSW50MzIpVFRfTkVYVF9VSU5UMjQoIHAgKTsKKyAgICAgIHAgKz0gMjsKKyAgICB9CisgICAgcmV0W2ldID0gMDsKKworICAgIHJldHVybiByZXQ7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggRlRfVUludDMyICogKQorICB0dF9jbWFwMTRfdmFyaWFudF9jaGFycyggVFRfQ01hcCAgICBjbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50MzIgIHZhcmlhbnRTZWxlY3RvciApCisgIHsKKyAgICBGVF9CeXRlICAgICpwICA9IHR0X2NtYXAxNF9maW5kX3ZhcmlhbnQoIGNtYXAtPmRhdGEgKyA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudFNlbGVjdG9yICk7CisgICAgRlRfVUludDMyICAqcmV0OworICAgIEZUX0ludCAgICAgIGk7CisgICAgRlRfVUxvbmcgICAgZGVmT2ZmOworICAgIEZUX1VMb25nICAgIG5vbmRlZk9mZjsKKworCisgICAgaWYgKCAhcCApCisgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRlZk9mZiAgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKyAgICBub25kZWZPZmYgPSBUVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICBpZiAoIGRlZk9mZiA9PSAwICYmIG5vbmRlZk9mZiA9PSAwICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCBkZWZPZmYgPT0gMCApCisgICAgICByZXR1cm4gdHRfY21hcDE0X2dldF9ub25kZWZfY2hhcnMoIGNtYXAsIGNtYXAtPmRhdGEgKyBub25kZWZPZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSApOworICAgIGVsc2UgaWYgKCBub25kZWZPZmYgPT0gMCApCisgICAgICByZXR1cm4gdHRfY21hcDE0X2dldF9kZWZfY2hhcnMoIGNtYXAsIGNtYXAtPmRhdGEgKyBkZWZPZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSApOworICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBCb3RoIGEgZGVmYXVsdCBhbmQgYSBub24tZGVmYXVsdCBnbHlwaCBzZXQ/ICBUaGF0J3MgcHJvYmFibHkgbm90ICovCisgICAgICAvKiBnb29kIGZvbnQgZGVzaWduLCBidXQgdGhlIHNwZWMgYWxsb3dzIGZvciBpdC4uLiAgICAgICAgICAgICAgICAgICovCisgICAgICBUVF9DTWFwMTQgIGNtYXAxNCA9IChUVF9DTWFwMTQpIGNtYXA7CisgICAgICBGVF9VSW50MzIgIG51bVJhbmdlczsKKyAgICAgIEZUX1VJbnQzMiAgbnVtTWFwcGluZ3M7CisgICAgICBGVF9VSW50MzIgIGR1bmk7CisgICAgICBGVF9VSW50MzIgIGRjbnQ7CisgICAgICBGVF9VSW50MzIgIG51bmk7CisgICAgICBGVF9CeXRlKiAgIGRwOworICAgICAgRlRfVUludCAgICBkaSwgbmksIGs7CisKKworICAgICAgcCAgPSBjbWFwLT5kYXRhICsgbm9uZGVmT2ZmOworICAgICAgZHAgPSBjbWFwLT5kYXRhICsgZGVmT2ZmOworCisgICAgICBudW1NYXBwaW5ncyA9IChGVF9VSW50MzIpVFRfTkVYVF9VTE9ORyggcCApOworICAgICAgZGNudCAgICAgICAgPSB0dF9jbWFwMTRfZGVmX2NoYXJfY291bnQoIGRwICk7CisgICAgICBudW1SYW5nZXMgICA9IChGVF9VSW50MzIpVFRfTkVYVF9VTE9ORyggZHAgKTsKKworICAgICAgaWYgKCBudW1NYXBwaW5ncyA9PSAwICkKKyAgICAgICAgcmV0dXJuIHR0X2NtYXAxNF9nZXRfZGVmX2NoYXJzKCBjbWFwLCBjbWFwLT5kYXRhICsgZGVmT2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSApOworICAgICAgaWYgKCBkY250ID09IDAgKQorICAgICAgICByZXR1cm4gdHRfY21hcDE0X2dldF9ub25kZWZfY2hhcnMoIGNtYXAsIGNtYXAtPmRhdGEgKyBub25kZWZPZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5ICk7CisKKyAgICAgIGlmICggdHRfY21hcDE0X2Vuc3VyZSggY21hcDE0LCAoIGRjbnQgKyBudW1NYXBwaW5ncyArIDEgKSwgbWVtb3J5ICkgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgcmV0ICA9IGNtYXAxNC0+cmVzdWx0czsKKyAgICAgIGR1bmkgPSAoRlRfVUludDMyKVRUX05FWFRfVUlOVDI0KCBkcCApOworICAgICAgZGNudCA9IEZUX05FWFRfQllURSggZHAgKTsKKyAgICAgIGRpICAgPSAxOworICAgICAgbnVuaSA9IChGVF9VSW50MzIpVFRfTkVYVF9VSU5UMjQoIHAgKTsKKyAgICAgIHAgICArPSAyOworICAgICAgbmkgICA9IDE7CisgICAgICBpICAgID0gMDsKKworICAgICAgZm9yICggOzsgKQorICAgICAgeworICAgICAgICBpZiAoIG51bmkgPiBkdW5pICsgZGNudCApCisgICAgICAgIHsKKyAgICAgICAgICBmb3IgKCBrID0gMDsgayA8PSBkY250OyArK2sgKQorICAgICAgICAgICAgcmV0W2krK10gPSBkdW5pICsgazsKKworICAgICAgICAgICsrZGk7CisKKyAgICAgICAgICBpZiAoIGRpID4gbnVtUmFuZ2VzICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgZHVuaSA9IChGVF9VSW50MzIpVFRfTkVYVF9VSU5UMjQoIGRwICk7CisgICAgICAgICAgZGNudCA9IEZUX05FWFRfQllURSggZHAgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIG51bmkgPCBkdW5pICkKKyAgICAgICAgICAgIHJldFtpKytdID0gbnVuaTsKKyAgICAgICAgICAvKiBJZiBpdCBpcyB3aXRoaW4gdGhlIGRlZmF1bHQgcmFuZ2UgdGhlbiBpZ25vcmUgaXQgLS0gKi8KKyAgICAgICAgICAvKiB0aGF0IHNob3VsZCBub3QgaGF2ZSBoYXBwZW5lZCAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICArK25pOworICAgICAgICAgIGlmICggbmkgPiBudW1NYXBwaW5ncyApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIG51bmkgPSAoRlRfVUludDMyKVRUX05FWFRfVUlOVDI0KCBwICk7CisgICAgICAgICAgcCArPSAyOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmICggbmkgPD0gbnVtTWFwcGluZ3MgKQorICAgICAgeworICAgICAgICAvKiBJZiB3ZSBnZXQgaGVyZSB0aGVuIHdlIGhhdmUgcnVuIG91dCBvZiBhbGwgZGVmYXVsdCByYW5nZXMuICAgKi8KKyAgICAgICAgLyogV2UgaGF2ZSByZWFkIG9uZSBub24tZGVmYXVsdCBtYXBwaW5nIHdoaWNoIHdlIGhhdmVuJ3Qgc3RvcmVkICovCisgICAgICAgIC8qIGFuZCB0aGVyZSBtYXkgYmUgb3RoZXJzIHRoYXQgbmVlZCB0byBiZSByZWFkLiAgICAgICAgICAgICAgICAqLworICAgICAgICByZXRbaSsrXSA9IG51bmk7CisgICAgICAgIHdoaWxlICggbmkgPCBudW1NYXBwaW5ncyApCisgICAgICAgIHsKKyAgICAgICAgICByZXRbaSsrXSA9IChGVF9VSW50MzIpVFRfTkVYVF9VSU5UMjQoIHAgKTsKKyAgICAgICAgICBwICs9IDI7CisgICAgICAgICAgKytuaTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAoIGRpIDw9IG51bVJhbmdlcyApCisgICAgICB7CisgICAgICAgIC8qIElmIHdlIGdldCBoZXJlIHRoZW4gd2UgaGF2ZSBydW4gb3V0IG9mIGFsbCBub24tZGVmYXVsdCAgICAgKi8KKyAgICAgICAgLyogbWFwcGluZ3MuICBXZSBoYXZlIHJlYWQgb25lIGRlZmF1bHQgcmFuZ2Ugd2hpY2ggd2UgaGF2ZW4ndCAqLworICAgICAgICAvKiBzdG9yZWQgYW5kIHRoZXJlIG1heSBiZSBvdGhlcnMgdGhhdCBuZWVkIHRvIGJlIHJlYWQuICAgICAgICovCisgICAgICAgIGZvciAoIGsgPSAwOyBrIDw9IGRjbnQ7ICsrayApCisgICAgICAgICAgcmV0W2krK10gPSBkdW5pICsgazsKKworICAgICAgICB3aGlsZSAoIGRpIDwgbnVtUmFuZ2VzICkKKyAgICAgICAgeworICAgICAgICAgIGR1bmkgPSAoRlRfVUludDMyKVRUX05FWFRfVUlOVDI0KCBkcCApOworICAgICAgICAgIGRjbnQgPSBGVF9ORVhUX0JZVEUoIGRwICk7CisKKyAgICAgICAgICBmb3IgKCBrID0gMDsgayA8PSBkY250OyArK2sgKQorICAgICAgICAgICAgcmV0W2krK10gPSBkdW5pICsgazsKKyAgICAgICAgICArK2RpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldFtpXSA9IDA7CisKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQorICB9CisKKworICBGVF9ERUZJTkVfVFRfQ01BUCgKKyAgICB0dF9jbWFwMTRfY2xhc3NfcmVjLAorICAgIHNpemVvZiAoIFRUX0NNYXAxNFJlYyApLAorCisgICAgKEZUX0NNYXBfSW5pdEZ1bmMpICAgICB0dF9jbWFwMTRfaW5pdCwKKyAgICAoRlRfQ01hcF9Eb25lRnVuYykgICAgIHR0X2NtYXAxNF9kb25lLAorICAgIChGVF9DTWFwX0NoYXJJbmRleEZ1bmMpdHRfY21hcDE0X2NoYXJfaW5kZXgsCisgICAgKEZUX0NNYXBfQ2hhck5leHRGdW5jKSB0dF9jbWFwMTRfY2hhcl9uZXh0LAorCisgICAgLyogRm9ybWF0IDE0IGV4dGVuc2lvbiBmdW5jdGlvbnMgKi8KKyAgICAoRlRfQ01hcF9DaGFyVmFySW5kZXhGdW5jKSAgICB0dF9jbWFwMTRfY2hhcl92YXJfaW5kZXgsCisgICAgKEZUX0NNYXBfQ2hhclZhcklzRGVmYXVsdEZ1bmMpdHRfY21hcDE0X2NoYXJfdmFyX2lzZGVmYXVsdCwKKyAgICAoRlRfQ01hcF9WYXJpYW50TGlzdEZ1bmMpICAgICB0dF9jbWFwMTRfdmFyaWFudHMsCisgICAgKEZUX0NNYXBfQ2hhclZhcmlhbnRMaXN0RnVuYykgdHRfY21hcDE0X2NoYXJfdmFyaWFudHMsCisgICAgKEZUX0NNYXBfVmFyaWFudENoYXJMaXN0RnVuYykgdHRfY21hcDE0X3ZhcmlhbnRfY2hhcnMsCisKKyAgICAxNCwKKyAgICAoVFRfQ01hcF9WYWxpZGF0ZUZ1bmMpdHRfY21hcDE0X3ZhbGlkYXRlLAorICAgIChUVF9DTWFwX0luZm9fR2V0RnVuYyl0dF9jbWFwMTRfZ2V0X2luZm8gKQorCisjZW5kaWYgLyogVFRfQ09ORklHX0NNQVBfRk9STUFUXzE0ICovCisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisgIHN0YXRpYyBjb25zdCBUVF9DTWFwX0NsYXNzICB0dF9jbWFwX2NsYXNzZXNbXSA9CisgIHsKKyNkZWZpbmUgVFRDTUFQQ0lURU0oIGEgKSAgJmEsCisjaW5jbHVkZSAidHRjbWFwYy5oIgorICAgIE5VTEwsCisgIH07CisKKyNlbHNlIC8qRlRfQ09ORklHX09QVElPTl9QSUMqLworCisgIHZvaWQKKyAgRlRfRGVzdHJveV9DbGFzc190dF9jbWFwX2NsYXNzZXMoIEZUX0xpYnJhcnkgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfQ01hcF9DbGFzcyogIGNsYXp6ICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICBpZiAoIGNsYXp6ICkKKyAgICAgIEZUX0ZSRUUoIGNsYXp6ICk7CisgIH0KKworCisgIEZUX0Vycm9yCisgIEZUX0NyZWF0ZV9DbGFzc190dF9jbWFwX2NsYXNzZXMoIEZUX0xpYnJhcnkgICAgICAgbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfQ01hcF9DbGFzcyoqICBvdXRwdXRfY2xhc3MgKQorICB7CisgICAgVFRfQ01hcF9DbGFzcyogICAgIGNsYXp6ICA9IE5VTEw7CisgICAgVFRfQ01hcF9DbGFzc1JlYyogIHJlY3M7CisgICAgRlRfRXJyb3IgICAgICAgICAgIGVycm9yOworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnkgPSBsaWJyYXJ5LT5tZW1vcnk7CisKKyAgICBpbnQgIGkgPSAwOworCisKKyNkZWZpbmUgVFRDTUFQQ0lURU0oIGEgKSBpKys7CisjaW5jbHVkZSAidHRjbWFwYy5oIgorCisgICAgLyogYWxsb2NhdGUgZW5vdWdoIHNwYWNlIGZvciBib3RoIHRoZSBwb2ludGVycyAqLworICAgIC8qIHBsdXMgdGVybWluYXRvciBhbmQgdGhlIGNsYXNzIGluc3RhbmNlcyAgICAgKi8KKyAgICBpZiAoIEZUX0FMTE9DKCBjbGF6eiwgc2l6ZW9mICggKmNsYXp6ICkgKiAoIGkgKyAxICkgKworICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKCBUVF9DTWFwX0NsYXNzUmVjICkgKiBpICkgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgLyogdGhlIGxvY2F0aW9uIG9mIHRoZSBjbGFzcyBpbnN0YW5jZXMgZm9sbG93cyB0aGUgYXJyYXkgb2YgcG9pbnRlcnMgKi8KKyAgICByZWNzID0gKFRUX0NNYXBfQ2xhc3NSZWMqKSggKGNoYXIqKWNsYXp6ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggKmNsYXp6ICkgKiAoIGkgKyAxICkgKTsKKyAgICBpICAgID0gMDsKKworI3VuZGVmIFRUQ01BUENJVEVNCisjZGVmaW5lICBUVENNQVBDSVRFTSggYSApICAgICAgICAgICAgIFwKKyAgICBGVF9Jbml0X0NsYXNzXyAjIyBhKCAmcmVjc1tpXSApOyAgXAorICAgIGNsYXp6W2ldID0gJnJlY3NbaV07ICAgICAgICAgICAgICBcCisgICAgaSsrOworI2luY2x1ZGUgInR0Y21hcGMuaCIKKworICAgIGNsYXp6W2ldID0gTlVMTDsKKworICAgICpvdXRwdXRfY2xhc3MgPSBjbGF6ejsKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKyNlbmRpZiAvKkZUX0NPTkZJR19PUFRJT05fUElDKi8KKworCisgIC8qIHBhcnNlIHRoZSBgY21hcCcgdGFibGUgYW5kIGJ1aWxkIHRoZSBjb3JyZXNwb25kaW5nIFRUX0NNYXAgb2JqZWN0cyAqLworICAvKiBpbiB0aGUgY3VycmVudCBmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2J1aWxkX2NtYXBzKCBUVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX0J5dGUqICAgICAgICAgICB0YWJsZSA9IGZhY2UtPmNtYXBfdGFibGU7CisgICAgRlRfQnl0ZSogICAgICAgICAgIGxpbWl0ID0gdGFibGUgKyBmYWNlLT5jbWFwX3NpemU7CisgICAgRlRfVUludCB2b2xhdGlsZSAgIG51bV9jbWFwczsKKyAgICBGVF9CeXRlKiB2b2xhdGlsZSAgcCAgICAgPSB0YWJsZTsKKyAgICBGVF9MaWJyYXJ5ICAgICAgICAgbGlicmFyeSA9IEZUX0ZBQ0VfTElCUkFSWSggZmFjZSApOworCisgICAgRlRfVU5VU0VEKCBsaWJyYXJ5ICk7CisKKworICAgIGlmICggIXAgfHwgcCArIDQgPiBsaW1pdCApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKworICAgIC8qIG9ubHkgcmVjb2duaXplIGZvcm1hdCAwICovCisgICAgaWYgKCBUVF9ORVhUX1VTSE9SVCggcCApICE9IDAgKQorICAgIHsKKyAgICAgIHAgLT0gMjsKKyAgICAgIEZUX0VSUk9SKCggInR0X2ZhY2VfYnVpbGRfY21hcHM6IgorICAgICAgICAgICAgICAgICAiIHVuc3VwcG9ydGVkIGBjbWFwJyB0YWJsZSBmb3JtYXQgPSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgVFRfUEVFS19VU0hPUlQoIHAgKSApKTsKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9UYWJsZSApOworICAgIH0KKworICAgIG51bV9jbWFwcyA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisKKyNpZmRlZiBGVF9NQVhfQ0hBUk1BUF9DQUNIRUFCTEUKKyAgICBpZiAoIG51bV9jbWFwcyA+IEZUX01BWF9DSEFSTUFQX0NBQ0hFQUJMRSApCisgICAgICBGVF9FUlJPUigoICJ0dF9mYWNlX2J1aWxkX2NtYXBzOiB0b28gbWFueSBjbWFwIHN1YnRhYmxlcyAoJWQpXG4iCisgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICBzdWJ0YWJsZSAjJWQgYW5kIGhpZ2hlciBhcmUgbG9hZGVkIgorICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgYnV0IGNhbm5vdCBiZSBzZWFyY2hlZFxuIiwKKyAgICAgICAgICAgICAgICAgbnVtX2NtYXBzLCBGVF9NQVhfQ0hBUk1BUF9DQUNIRUFCTEUgKyAxICkpOworI2VuZGlmCisKKyAgICBmb3IgKCA7IG51bV9jbWFwcyA+IDAgJiYgcCArIDggPD0gbGltaXQ7IG51bV9jbWFwcy0tICkKKyAgICB7CisgICAgICBGVF9DaGFyTWFwUmVjICBjaGFybWFwOworICAgICAgRlRfVUludDMyICAgICAgb2Zmc2V0OworCisKKyAgICAgIGNoYXJtYXAucGxhdGZvcm1faWQgPSBUVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgY2hhcm1hcC5lbmNvZGluZ19pZCA9IFRUX05FWFRfVVNIT1JUKCBwICk7CisgICAgICBjaGFybWFwLmZhY2UgICAgICAgID0gRlRfRkFDRSggZmFjZSApOworICAgICAgY2hhcm1hcC5lbmNvZGluZyAgICA9IEZUX0VOQ09ESU5HX05PTkU7ICAvKiB3aWxsIGJlIGZpbGxlZCBsYXRlciAqLworICAgICAgb2Zmc2V0ICAgICAgICAgICAgICA9IFRUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgaWYgKCBvZmZzZXQgJiYgb2Zmc2V0IDw9IGZhY2UtPmNtYXBfc2l6ZSAtIDIgKQorICAgICAgeworICAgICAgICBGVF9CeXRlKiB2b2xhdGlsZSAgICAgICAgICAgICAgY21hcCAgID0gdGFibGUgKyBvZmZzZXQ7CisgICAgICAgIHZvbGF0aWxlIEZUX1VJbnQgICAgICAgICAgICAgICBmb3JtYXQgPSBUVF9QRUVLX1VTSE9SVCggY21hcCApOworICAgICAgICBjb25zdCBUVF9DTWFwX0NsYXNzKiB2b2xhdGlsZSAgcGNsYXp6ID0gVFRfQ01BUF9DTEFTU0VTX0dFVDsKKyAgICAgICAgVFRfQ01hcF9DbGFzcyB2b2xhdGlsZSAgICAgICAgIGNsYXp6OworCisKKyAgICAgICAgZm9yICggOyAqcGNsYXp6OyBwY2xhenorKyApCisgICAgICAgIHsKKyAgICAgICAgICBjbGF6eiA9ICpwY2xheno7CisgICAgICAgICAgaWYgKCBjbGF6ei0+Zm9ybWF0ID09IGZvcm1hdCApCisgICAgICAgICAgeworICAgICAgICAgICAgdm9sYXRpbGUgVFRfVmFsaWRhdG9yUmVjICB2YWxpZDsKKyAgICAgICAgICAgIHZvbGF0aWxlIEZUX0Vycm9yICAgICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgICAgICAgICAgZnRfdmFsaWRhdG9yX2luaXQoIEZUX1ZBTElEQVRPUiggJnZhbGlkICksIGNtYXAsIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZBTElEQVRFX0RFRkFVTFQgKTsKKworICAgICAgICAgICAgdmFsaWQubnVtX2dseXBocyA9IChGVF9VSW50KWZhY2UtPm1heF9wcm9maWxlLm51bUdseXBoczsKKyNpZm5kZWYgX0ZYX01BTkFHRURfQ09ERV8KKyAgICAgICAgICAgIGlmICggZnRfc2V0am1wKCBGVF9WQUxJREFUT1IoICZ2YWxpZCApLT5qdW1wX2J1ZmZlcikgPT0gMCApCisgICAgICAgICAgICB7CisjZW5kaWYKKyAgICAgICAgICAgICAgLyogdmFsaWRhdGUgdGhpcyBjbWFwIHN1Yi10YWJsZSAqLworICAgICAgICAgICAgICBlcnJvciA9IGNsYXp6LT52YWxpZGF0ZSggY21hcCwgRlRfVkFMSURBVE9SKCAmdmFsaWQgKSApOworI2lmbmRlZiBfRlhfTUFOQUdFRF9DT0RFXyAgICAgICAgICAgIAorCQkJfQorI2VuZGlmCisKKyAgICAgICAgICAgIGlmICggdmFsaWQudmFsaWRhdG9yLmVycm9yID09IDAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBGVF9DTWFwICB0dGNtYXA7CisKKworICAgICAgICAgICAgICAvKiBJdCBtaWdodCBtYWtlIHNlbnNlIHRvIHN0b3JlIHRoZSBzaW5nbGUgdmFyaWF0aW9uICAgICAgICAgKi8KKyAgICAgICAgICAgICAgLyogc2VsZWN0b3IgY21hcCBzb21ld2hlcmUgc3BlY2lhbC4gIEJ1dCBpdCB3b3VsZCBoYXZlIHRvIGJlICovCisgICAgICAgICAgICAgIC8qIGluIHRoZSBwdWJsaWMgRlRfRmFjZVJlYywgYW5kIHdlIGNhbid0IGNoYW5nZSB0aGF0LiAgICAgICAqLworCisgICAgICAgICAgICAgIGlmICggIUZUX0NNYXBfTmV3KCAoRlRfQ01hcF9DbGFzcyljbGF6eiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtYXAsICZjaGFybWFwLCAmdHRjbWFwICkgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogaXQgaXMgc2ltcGxlciB0byBkaXJlY3RseSBzZXQgYGZsYWdzJyB0aGFuIGFkZGluZyAqLworICAgICAgICAgICAgICAgIC8qIGEgcGFyYW1ldGVyIHRvIEZUX0NNYXBfTmV3ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAoKFRUX0NNYXApdHRjbWFwKS0+ZmxhZ3MgPSAoRlRfSW50KWVycm9yOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX1RSQUNFMCgoICJ0dF9mYWNlX2J1aWxkX2NtYXBzOiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBicm9rZW4gY21hcCBzdWItdGFibGUgaWdub3JlZFxuIiApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggKnBjbGF6eiA9PSBOVUxMICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1RSQUNFMCgoICJ0dF9mYWNlX2J1aWxkX2NtYXBzOiIKKyAgICAgICAgICAgICAgICAgICAgICAiIHVuc3VwcG9ydGVkIGNtYXAgc3ViLXRhYmxlIGlnbm9yZWRcbiIgKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9nZXRfY21hcF9pbmZvKCBGVF9DaGFyTWFwICAgIGNoYXJtYXAsCisgICAgICAgICAgICAgICAgICAgIFRUX0NNYXBJbmZvICAqY21hcF9pbmZvICkKKyAgeworICAgIEZUX0NNYXAgICAgICAgIGNtYXAgID0gKEZUX0NNYXApY2hhcm1hcDsKKyAgICBUVF9DTWFwX0NsYXNzICBjbGF6eiA9IChUVF9DTWFwX0NsYXNzKWNtYXAtPmNsYXp6OworCisKKyAgICByZXR1cm4gY2xhenotPmdldF9jbWFwX2luZm8oIGNoYXJtYXAsIGNtYXBfaW5mbyApOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRjbWFwLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRjbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg2MjQ5NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGNtYXAuaApAQCAtMCwwICsxLDE1OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHRjbWFwLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRydWVUeXBlIGNoYXJhY3RlciBtYXBwaW5nIHRhYmxlIChjbWFwKSBzdXBwb3J0IChzcGVjaWZpY2F0aW9uKS4gICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAyLTIwMDUsIDIwMDksIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVFRDTUFQX0hfXworI2RlZmluZSBfX1RUQ01BUF9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR2YWxpZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGNtYXAuaCIKKworRlRfQkVHSU5fSEVBREVSCisKKworI2RlZmluZSBUVF9DTUFQX0ZMQUdfVU5TT1JURUQgICAgIDEKKyNkZWZpbmUgVFRfQ01BUF9GTEFHX09WRVJMQVBQSU5HICAyCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX0NNYXBSZWNfCisgIHsKKyAgICBGVF9DTWFwUmVjICBjbWFwOworICAgIEZUX0J5dGUqICAgIGRhdGE7ICAgICAgICAgICAvKiBwb2ludGVyIHRvIGluLW1lbW9yeSBjbWFwIHRhYmxlICovCisgICAgRlRfSW50ICAgICAgZmxhZ3M7ICAgICAgICAgIC8qIGZvciBmb3JtYXQgNCBvbmx5ICAgICAgICAgICAgICAgKi8KKworICB9IFRUX0NNYXBSZWMsICpUVF9DTWFwOworCisgIHR5cGVkZWYgY29uc3Qgc3RydWN0IFRUX0NNYXBfQ2xhc3NSZWNfKiAgVFRfQ01hcF9DbGFzczsKKworCisgIHR5cGVkZWYgRlRfRXJyb3IKKyAgKCpUVF9DTWFwX1ZhbGlkYXRlRnVuYykoIEZUX0J5dGUqICAgICAgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZhbGlkYXRvciAgdmFsaWQgKTsKKworICB0eXBlZGVmIHN0cnVjdCAgVFRfQ01hcF9DbGFzc1JlY18KKyAgeworICAgIEZUX0NNYXBfQ2xhc3NSZWMgICAgICBjbGF6ejsKKyAgICBGVF9VSW50ICAgICAgICAgICAgICAgZm9ybWF0OworICAgIFRUX0NNYXBfVmFsaWRhdGVGdW5jICB2YWxpZGF0ZTsKKyAgICBUVF9DTWFwX0luZm9fR2V0RnVuYyAgZ2V0X2NtYXBfaW5mbzsKKworICB9IFRUX0NNYXBfQ2xhc3NSZWM7CisKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIEZUX0RFRklORV9UVF9DTUFQKCBjbGFzc18sICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfLCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lXywgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfaW5kZXhfLCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl9uZXh0XywgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3Zhcl9pbmRleF8sICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdmFyX2RlZmF1bHRfLCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudF9saXN0XywgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydmFyaWFudF9saXN0XywgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRjaGFyX2xpc3RfLCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0XywgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV8sICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9jbWFwX2luZm9fICkgICAgXAorICBGVF9DQUxMQkFDS19UQUJMRV9ERUYgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNvbnN0IFRUX0NNYXBfQ2xhc3NSZWMgIGNsYXNzXyA9ICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgc2l6ZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpbml0XywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGRvbmVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgY2hhcl9pbmRleF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBjaGFyX25leHRfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGNoYXJfdmFyX2luZGV4XywgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgY2hhcl92YXJfZGVmYXVsdF8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB2YXJpYW50X2xpc3RfLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGNoYXJ2YXJpYW50X2xpc3RfLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgdmFyaWFudGNoYXJfbGlzdF8gICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZvcm1hdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdmFsaWRhdGVfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZXRfY21hcF9pbmZvXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9OworCisjZWxzZSAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisjZGVmaW5lIEZUX0RFRklORV9UVF9DTUFQKCBjbGFzc18sICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF8sICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lXywgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfaW5kZXhfLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl9uZXh0XywgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3Zhcl9pbmRleF8sICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdmFyX2RlZmF1bHRfLCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudF9saXN0XywgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydmFyaWFudF9saXN0XywgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRjaGFyX2xpc3RfLCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0XywgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV8sICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9jbWFwX2luZm9fICkgICAgICAgICAgICAgXAorICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEZUX0luaXRfQ2xhc3NfICMjIGNsYXNzXyggVFRfQ01hcF9DbGFzc1JlYyogIGNsYXp6ICkgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5jbGF6ei5zaXplICAgICAgICAgICAgID0gc2l6ZV87ICAgICAgICAgICAgICBcCisgICAgY2xhenotPmNsYXp6LmluaXQgICAgICAgICAgICAgPSBpbml0XzsgICAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+Y2xhenouZG9uZSAgICAgICAgICAgICA9IGRvbmVfOyAgICAgICAgICAgICAgXAorICAgIGNsYXp6LT5jbGF6ei5jaGFyX2luZGV4ICAgICAgID0gY2hhcl9pbmRleF87ICAgICAgICBcCisgICAgY2xhenotPmNsYXp6LmNoYXJfbmV4dCAgICAgICAgPSBjaGFyX25leHRfOyAgICAgICAgIFwKKyAgICBjbGF6ei0+Y2xhenouY2hhcl92YXJfaW5kZXggICA9IGNoYXJfdmFyX2luZGV4XzsgICAgXAorICAgIGNsYXp6LT5jbGF6ei5jaGFyX3Zhcl9kZWZhdWx0ID0gY2hhcl92YXJfZGVmYXVsdF87ICBcCisgICAgY2xhenotPmNsYXp6LnZhcmlhbnRfbGlzdCAgICAgPSB2YXJpYW50X2xpc3RfOyAgICAgIFwKKyAgICBjbGF6ei0+Y2xhenouY2hhcnZhcmlhbnRfbGlzdCA9IGNoYXJ2YXJpYW50X2xpc3RfOyAgXAorICAgIGNsYXp6LT5jbGF6ei52YXJpYW50Y2hhcl9saXN0ID0gdmFyaWFudGNoYXJfbGlzdF87ICBcCisgICAgY2xhenotPmZvcm1hdCAgICAgICAgICAgICAgICAgPSBmb3JtYXRfOyAgICAgICAgICAgIFwKKyAgICBjbGF6ei0+dmFsaWRhdGUgICAgICAgICAgICAgICA9IHZhbGlkYXRlXzsgICAgICAgICAgXAorICAgIGNsYXp6LT5nZXRfY21hcF9pbmZvICAgICAgICAgID0gZ2V0X2NtYXBfaW5mb187ICAgICBcCisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworICB0eXBlZGVmIHN0cnVjdCAgVFRfVmFsaWRhdG9yUmVjXworICB7CisgICAgRlRfVmFsaWRhdG9yUmVjICB2YWxpZGF0b3I7CisgICAgRlRfVUludCAgICAgICAgICBudW1fZ2x5cGhzOworCisgIH0gVFRfVmFsaWRhdG9yUmVjLCAqVFRfVmFsaWRhdG9yOworCisKKyNkZWZpbmUgVFRfVkFMSURBVE9SKCB4ICkgICAgICAgICAgKCAoVFRfVmFsaWRhdG9yKSggeCApICkKKyNkZWZpbmUgVFRfVkFMSURfR0xZUEhfQ09VTlQoIHggKSAgVFRfVkFMSURBVE9SKCB4ICktPm51bV9nbHlwaHMKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfYnVpbGRfY21hcHMoIFRUX0ZhY2UgIGZhY2UgKTsKKworICAvKiB1c2VkIGluIHR0LWNtYXBzIHNlcnZpY2UgKi8KKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfZ2V0X2NtYXBfaW5mbyggRlRfQ2hhck1hcCAgICBjaGFybWFwLAorICAgICAgICAgICAgICAgICAgICBUVF9DTWFwSW5mbyAgKmNtYXBfaW5mbyApOworCisKK0ZUX0VORF9IRUFERVIKKworI2VuZGlmIC8qIF9fVFRDTUFQX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0Y21hcGMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGNtYXBjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVhMjA0MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGNtYXBjLmgKQEAgLTAsMCArMSw1NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHRjbWFwYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRUIENNQVAgY2xhc3NlcyBkZWZpbml0aW9ucyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA5IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBPcmFuIEFncmEgYW5kIE1pY2tleSBHYWJlbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZkZWYgVFRfQ09ORklHX0NNQVBfRk9STUFUXzAKKyAgVFRDTUFQQ0lURU0oIHR0X2NtYXAwX2NsYXNzX3JlYyApCisjZW5kaWYKKworI2lmZGVmIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF8yCisgIFRUQ01BUENJVEVNKCB0dF9jbWFwMl9jbGFzc19yZWMgKQorI2VuZGlmCisKKyNpZmRlZiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfNAorICBUVENNQVBDSVRFTSggdHRfY21hcDRfY2xhc3NfcmVjICkKKyNlbmRpZgorCisjaWZkZWYgVFRfQ09ORklHX0NNQVBfRk9STUFUXzYKKyAgVFRDTUFQQ0lURU0oIHR0X2NtYXA2X2NsYXNzX3JlYyApCisjZW5kaWYKKworI2lmZGVmIFRUX0NPTkZJR19DTUFQX0ZPUk1BVF84CisgIFRUQ01BUENJVEVNKCB0dF9jbWFwOF9jbGFzc19yZWMgKQorI2VuZGlmCisKKyNpZmRlZiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMTAKKyAgVFRDTUFQQ0lURU0oIHR0X2NtYXAxMF9jbGFzc19yZWMgKQorI2VuZGlmCisKKyNpZmRlZiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMTIKKyAgVFRDTUFQQ0lURU0oIHR0X2NtYXAxMl9jbGFzc19yZWMgKQorI2VuZGlmCisKKyNpZmRlZiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMTMKKyAgVFRDTUFQQ0lURU0oIHR0X2NtYXAxM19jbGFzc19yZWMgKQorI2VuZGlmCisKKyNpZmRlZiBUVF9DT05GSUdfQ01BUF9GT1JNQVRfMTQKKyAgVFRDTUFQQ0lURU0oIHR0X2NtYXAxNF9jbGFzc19yZWMgKQorI2VuZGlmCisKKworICAvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGtlcm4uYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGtlcm4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTM4Y2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0a2Vybi5jCkBAIC0wLDAgKzEsMzA2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dGtlcm4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgTG9hZCB0aGUgYmFzaWMgVHJ1ZVR5cGUga2VybmluZyB0YWJsZS4gIFRoaXMgZG9lc24ndCBoYW5kbGUgICAgICAgICAgKi8KKy8qICAgIGtlcm5pbmcgZGF0YSB3aXRoaW4gdGhlIEdQT1MgdGFibGUgYXQgdGhlIG1vbWVudC4gICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgYnkgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIgorI2luY2x1ZGUgInR0a2Vybi5oIgorCisjaW5jbHVkZSAic2ZlcnJvcnMuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX3R0a2VybgorCisKKyN1bmRlZiAgVFRfS0VSTl9JTkRFWAorI2RlZmluZSBUVF9LRVJOX0lOREVYKCBnMSwgZzIgKSAgKCAoIChGVF9VTG9uZykoZzEpIDw8IDE2ICkgfCAoZzIpICkKKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfa2VybiggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9VTG9uZyAgIHRhYmxlX3NpemU7CisgICAgRlRfQnl0ZSogICBwOworICAgIEZUX0J5dGUqICAgcF9saW1pdDsKKyAgICBGVF9VSW50ICAgIG5uLCBudW1fdGFibGVzOworICAgIEZUX1VJbnQzMiAgYXZhaWwgPSAwLCBvcmRlcmVkID0gMDsKKworCisgICAgLyogdGhlIGtlcm4gdGFibGUgaXMgb3B0aW9uYWw7IGV4aXQgc2lsZW50bHkgaWYgaXQgaXMgbWlzc2luZyAqLworICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19rZXJuLCBzdHJlYW0sICZ0YWJsZV9zaXplICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIHRhYmxlX3NpemUgPCA0ICkgIC8qIHRoZSBjYXNlIG9mIGEgbWFsZm9ybWVkIHRhYmxlICovCisgICAgeworICAgICAgRlRfRVJST1IoKCAidHRfZmFjZV9sb2FkX2tlcm46IgorICAgICAgICAgICAgICAgICAiIGtlcm5pbmcgdGFibGUgaXMgdG9vIHNtYWxsIC0gaWdub3JlZFxuIiApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIFRhYmxlX01pc3NpbmcgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoIEZUX0ZSQU1FX0VYVFJBQ1QoIHRhYmxlX3NpemUsIGZhY2UtPmtlcm5fdGFibGUgKSApCisgICAgeworICAgICAgRlRfRVJST1IoKCAidHRfZmFjZV9sb2FkX2tlcm46IgorICAgICAgICAgICAgICAgICAiIGNvdWxkIG5vdCBleHRyYWN0IGtlcm5pbmcgdGFibGVcbiIgKSk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgZmFjZS0+a2Vybl90YWJsZV9zaXplID0gdGFibGVfc2l6ZTsKKworICAgIHAgICAgICAgPSBmYWNlLT5rZXJuX3RhYmxlOworICAgIHBfbGltaXQgPSBwICsgdGFibGVfc2l6ZTsKKworICAgIHAgICAgICAgICArPSAyOyAvKiBza2lwIHZlcnNpb24gKi8KKyAgICBudW1fdGFibGVzID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKworICAgIGlmICggbnVtX3RhYmxlcyA+IDMyICkgLyogd2Ugb25seSBzdXBwb3J0IHVwIHRvIDMyIHN1Yi10YWJsZXMgKi8KKyAgICAgIG51bV90YWJsZXMgPSAzMjsKKworICAgIGZvciAoIG5uID0gMDsgbm4gPCBudW1fdGFibGVzOyBubisrICkKKyAgICB7CisgICAgICBGVF9VSW50ICAgIG51bV9wYWlycywgbGVuZ3RoLCBjb3ZlcmFnZTsKKyAgICAgIEZUX0J5dGUqICAgcF9uZXh0OworICAgICAgRlRfVUludDMyICBtYXNrID0gKEZUX1VJbnQzMikxVUwgPDwgbm47CisKKworICAgICAgaWYgKCBwICsgNiA+IHBfbGltaXQgKQorICAgICAgICBicmVhazsKKworICAgICAgcF9uZXh0ID0gcDsKKworICAgICAgcCArPSAyOyAvKiBza2lwIHZlcnNpb24gKi8KKyAgICAgIGxlbmd0aCAgID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICAgIGNvdmVyYWdlID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKworICAgICAgaWYgKCBsZW5ndGggPD0gNiApCisgICAgICAgIGJyZWFrOworCisgICAgICBwX25leHQgKz0gbGVuZ3RoOworCisgICAgICBpZiAoIHBfbmV4dCA+IHBfbGltaXQgKSAgLyogaGFuZGxlIGJyb2tlbiB0YWJsZSAqLworICAgICAgICBwX25leHQgPSBwX2xpbWl0OworCisgICAgICAvKiBvbmx5IHVzZSBob3Jpem9udGFsIGtlcm5pbmcgdGFibGVzICovCisgICAgICBpZiAoICggY292ZXJhZ2UgJiB+OCApICE9IDB4MDAwMSB8fAorICAgICAgICAgICBwICsgOCA+IHBfbGltaXQgICAgICAgICAgICAgKQorICAgICAgICBnb3RvIE5leHRUYWJsZTsKKworICAgICAgbnVtX3BhaXJzID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICAgIHAgICAgICAgICs9IDY7CisKKyAgICAgIGlmICggKCBwX25leHQgLSBwICkgPCA2ICogKGludCludW1fcGFpcnMgKSAvKiBoYW5kbGUgYnJva2VuIGNvdW50ICovCisgICAgICAgIG51bV9wYWlycyA9IChGVF9VSW50KSggKCBwX25leHQgLSBwICkgLyA2ICk7CisKKyAgICAgIGF2YWlsIHw9IG1hc2s7CisKKyAgICAgIC8qCisgICAgICAgKiAgTm93IGNoZWNrIHdoZXRoZXIgdGhlIHBhaXJzIGluIHRoaXMgdGFibGUgYXJlIG9yZGVyZWQuCisgICAgICAgKiAgV2UgdGhlbiBjYW4gdXNlIGJpbmFyeSBzZWFyY2guCisgICAgICAgKi8KKyAgICAgIGlmICggbnVtX3BhaXJzID4gMCApCisgICAgICB7CisgICAgICAgIEZUX1VMb25nICBjb3VudDsKKyAgICAgICAgRlRfVUxvbmcgIG9sZF9wYWlyOworCisKKyAgICAgICAgb2xkX3BhaXIgPSBGVF9ORVhUX1VMT05HKCBwICk7CisgICAgICAgIHAgICAgICAgKz0gMjsKKworICAgICAgICBmb3IgKCBjb3VudCA9IG51bV9wYWlycyAtIDE7IGNvdW50ID4gMDsgY291bnQtLSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9VSW50MzIgIGN1cl9wYWlyOworCisKKyAgICAgICAgICBjdXJfcGFpciA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKyAgICAgICAgICBpZiAoIGN1cl9wYWlyIDw9IG9sZF9wYWlyICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgcCArPSAyOworICAgICAgICAgIG9sZF9wYWlyID0gY3VyX3BhaXI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGNvdW50ID09IDAgKQorICAgICAgICAgIG9yZGVyZWQgfD0gbWFzazsKKyAgICAgIH0KKworICAgIE5leHRUYWJsZToKKyAgICAgIHAgPSBwX25leHQ7CisgICAgfQorCisgICAgZmFjZS0+bnVtX2tlcm5fdGFibGVzID0gbm47CisgICAgZmFjZS0+a2Vybl9hdmFpbF9iaXRzID0gYXZhaWw7CisgICAgZmFjZS0+a2Vybl9vcmRlcl9iaXRzID0gb3JkZXJlZDsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgdHRfZmFjZV9kb25lX2tlcm4oIFRUX0ZhY2UgIGZhY2UgKQorICB7CisgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBmYWNlLT5yb290LnN0cmVhbTsKKworCisgICAgRlRfRlJBTUVfUkVMRUFTRSggZmFjZS0+a2Vybl90YWJsZSApOworICAgIGZhY2UtPmtlcm5fdGFibGVfc2l6ZSA9IDA7CisgICAgZmFjZS0+bnVtX2tlcm5fdGFibGVzID0gMDsKKyAgICBmYWNlLT5rZXJuX2F2YWlsX2JpdHMgPSAwOworICAgIGZhY2UtPmtlcm5fb3JkZXJfYml0cyA9IDA7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfSW50ICkKKyAgdHRfZmFjZV9nZXRfa2VybmluZyggVFRfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgbGVmdF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgcmlnaHRfZ2x5cGggKQorICB7CisgICAgRlRfSW50ICAgIHJlc3VsdCA9IDA7CisgICAgRlRfVUludCAgIGNvdW50LCBtYXNrID0gMTsKKyAgICBGVF9CeXRlKiAgcCAgICAgICA9IGZhY2UtPmtlcm5fdGFibGU7CisgICAgRlRfQnl0ZSogIHBfbGltaXQgPSBwICsgZmFjZS0+a2Vybl90YWJsZV9zaXplOworCisKKyAgICBwICAgKz0gNDsKKyAgICBtYXNrID0gMHgwMDAxOworCisgICAgZm9yICggY291bnQgPSBmYWNlLT5udW1fa2Vybl90YWJsZXM7CisgICAgICAgICAgY291bnQgPiAwICYmIHAgKyA2IDw9IHBfbGltaXQ7CisgICAgICAgICAgY291bnQtLSwgbWFzayA8PD0gMSApCisgICAgeworICAgICAgRlRfQnl0ZSogYmFzZSAgICAgPSBwOworICAgICAgRlRfQnl0ZSogbmV4dCAgICAgPSBiYXNlOworICAgICAgRlRfVUludCAgdmVyc2lvbiAgPSBGVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgRlRfVUludCAgbGVuZ3RoICAgPSBGVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgRlRfVUludCAgY292ZXJhZ2UgPSBGVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgRlRfVUludCAgbnVtX3BhaXJzOworICAgICAgRlRfSW50ICAgdmFsdWUgICAgPSAwOworCisgICAgICBGVF9VTlVTRUQoIHZlcnNpb24gKTsKKworCisgICAgICBuZXh0ID0gYmFzZSArIGxlbmd0aDsKKworICAgICAgaWYgKCBuZXh0ID4gcF9saW1pdCApICAvKiBoYW5kbGUgYnJva2VuIHRhYmxlICovCisgICAgICAgIG5leHQgPSBwX2xpbWl0OworCisgICAgICBpZiAoICggZmFjZS0+a2Vybl9hdmFpbF9iaXRzICYgbWFzayApID09IDAgKQorICAgICAgICBnb3RvIE5leHRUYWJsZTsKKworICAgICAgaWYgKCBwICsgOCA+IG5leHQgKQorICAgICAgICBnb3RvIE5leHRUYWJsZTsKKworICAgICAgbnVtX3BhaXJzID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICAgIHAgICAgICAgICs9IDY7CisKKyAgICAgIGlmICggKCBuZXh0IC0gcCApIDwgNiAqIChpbnQpbnVtX3BhaXJzICkgIC8qIGhhbmRsZSBicm9rZW4gY291bnQgICovCisgICAgICAgIG51bV9wYWlycyA9IChGVF9VSW50KSggKCBuZXh0IC0gcCApIC8gNiApOworCisgICAgICBzd2l0Y2ggKCBjb3ZlcmFnZSA+PiA4ICkKKyAgICAgIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAgeworICAgICAgICAgIEZUX1VMb25nICBrZXkwID0gVFRfS0VSTl9JTkRFWCggbGVmdF9nbHlwaCwgcmlnaHRfZ2x5cGggKTsKKworCisgICAgICAgICAgaWYgKCBmYWNlLT5rZXJuX29yZGVyX2JpdHMgJiBtYXNrICkgICAvKiBiaW5hcnkgc2VhcmNoICovCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfVUludCAgIG1pbiA9IDA7CisgICAgICAgICAgICBGVF9VSW50ICAgbWF4ID0gbnVtX3BhaXJzOworCisKKyAgICAgICAgICAgIHdoaWxlICggbWluIDwgbWF4ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfVUludCAgIG1pZCA9ICggbWluICsgbWF4ICkgPj4gMTsKKyAgICAgICAgICAgICAgRlRfQnl0ZSogIHEgICA9IHAgKyA2ICogbWlkOworICAgICAgICAgICAgICBGVF9VTG9uZyAga2V5OworCisKKyAgICAgICAgICAgICAga2V5ID0gRlRfTkVYVF9VTE9ORyggcSApOworCisgICAgICAgICAgICAgIGlmICgga2V5ID09IGtleTAgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBGVF9QRUVLX1NIT1JUKCBxICk7CisgICAgICAgICAgICAgICAgZ290byBGb3VuZDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBpZiAoIGtleSA8IGtleTAgKQorICAgICAgICAgICAgICAgIG1pbiA9IG1pZCArIDE7CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtYXggPSBtaWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgLyogbGluZWFyIHNlYXJjaCAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1VJbnQgIGNvdW50MjsKKworCisgICAgICAgICAgICBmb3IgKCBjb3VudDIgPSBudW1fcGFpcnM7IGNvdW50MiA+IDA7IGNvdW50Mi0tICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfVUxvbmcgIGtleSA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKworCisgICAgICAgICAgICAgIGlmICgga2V5ID09IGtleTAgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBGVF9QRUVLX1NIT1JUKCBwICk7CisgICAgICAgICAgICAgICAgZ290byBGb3VuZDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBwICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICAgLyoKKyAgICAgICAgKiAgV2UgZG9uJ3Qgc3VwcG9ydCBmb3JtYXQgMiBiZWNhdXNlIHdlIGhhdmVuJ3Qgc2VlbiBhIHNpbmdsZSBmb250CisgICAgICAgICogIHVzaW5nIGl0IGluIHJlYWwgbGlmZS4uLgorICAgICAgICAqLworCisgICAgICBkZWZhdWx0OgorICAgICAgICA7CisgICAgICB9CisKKyAgICAgIGdvdG8gTmV4dFRhYmxlOworCisgICAgRm91bmQ6CisgICAgICBpZiAoIGNvdmVyYWdlICYgOCApIC8qIG92ZXJyaWRlIG9yIGFkZCAqLworICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ICs9IHZhbHVlOworCisgICAgTmV4dFRhYmxlOgorICAgICAgcCA9IG5leHQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisjdW5kZWYgVFRfS0VSTl9JTkRFWAorCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGtlcm4uaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGtlcm4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmYxYTkzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0a2Vybi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0a2Vybi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBMb2FkIHRoZSBiYXNpYyBUcnVlVHlwZSBrZXJuaW5nIHRhYmxlLiAgVGhpcyBkb2Vzbid0IGhhbmRsZSAgICAgICAgICAqLworLyogICAga2VybmluZyBkYXRhIHdpdGhpbiB0aGUgR1BPUyB0YWJsZSBhdCB0aGUgbW9tZW50LiAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwNSwgMjAwNyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVEtFUk5fSF9fCisjZGVmaW5lIF9fVFRLRVJOX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICApCisgIHR0X2ZhY2VfbG9hZF9rZXJuKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgdHRfZmFjZV9kb25lX2tlcm4oIFRUX0ZhY2UgIGZhY2UgKTsKKworICBGVF9MT0NBTCggRlRfSW50ICkKKyAgdHRfZmFjZV9nZXRfa2VybmluZyggVFRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgbGVmdF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgcmlnaHRfZ2x5cGggKTsKKworI2RlZmluZSBUVF9GQUNFX0hBU19LRVJOSU5HKCBmYWNlICkgICggKGZhY2UpLT5rZXJuX2F2YWlsX2JpdHMgIT0gMCApCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UVEtFUk5fSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRsb2FkLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRsb2FkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhiNzU1OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dGxvYWQuYwpAQCAtMCwwICsxLDEyOTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0bG9hZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBMb2FkIHRoZSBiYXNpYyBUcnVlVHlwZSB0YWJsZXMsIGkuZS4sIHRhYmxlcyB0aGF0IGNhbiBiZSBlaXRoZXIgaW4gICAqLworLyogICAgVFRGIG9yIE9URiBmb250cyAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAxMCwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmgiCisjaW5jbHVkZSAidHRsb2FkLmgiCisKKyNpbmNsdWRlICJzZmVycm9ycy5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfdHRsb2FkCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9mYWNlX2xvb2t1cF90YWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb29rcyBmb3IgYSBUcnVlVHlwZSB0YWJsZSBieSBuYW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlIDo6IEEgZmFjZSBvYmplY3QgaGFuZGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHRhZyAgOjogVGhlIHNlYXJjaGVkIHRhZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgcG9pbnRlciB0byB0aGUgdGFibGUgZGlyZWN0b3J5IGVudHJ5LiAgMCBpZiBub3QgZm91bmQuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBUVF9UYWJsZSAgKQorICB0dF9mYWNlX2dldF9uZXh0dGFibGUoVFRfVGFibGUgZmlyc3QsIFRUX1RhYmxlIGxpbWl0LCBUVF9UYWJsZSBlbnRyeSkKKyAgeworCSAgVFRfVGFibGUgdGVtcCA9IE5VTEw7CisJICBpZiAoIWVudHJ5KSByZXR1cm4gTlVMTDsKKworCSAgZm9yIChmaXJzdDsgZmlyc3QgPCBsaW1pdDsgZmlyc3QrKyl7CisJCSAgaWYgKGVudHJ5LT5PZmZzZXQgKyBlbnRyeS0+TGVuZ3RoIDw9IGZpcnN0LT5PZmZzZXQpeworCQkJICBpZiAoIXRlbXAgfHwgZmlyc3QtPk9mZnNldCA8IHRlbXAtPk9mZnNldCl7CisJCQkJICB0ZW1wID0gZmlyc3Q7CisJCQkgIH0KKwkJICB9CisJICB9CisJICByZXR1cm4gdGVtcDsKKyAgfQorCisgIEZUX0xPQ0FMX0RFRiggVFRfVGFibGUgICkKKyAgdHRfZmFjZV9sb29rdXBfdGFibGUoIFRUX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHRhZyAgKQorICB7CisgICAgVFRfVGFibGUgIGVudHJ5OworICAgIFRUX1RhYmxlICBsaW1pdDsKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorICAgIEZUX0Jvb2wgICB6ZXJvX2xlbmd0aCA9IEZBTFNFOworI2VuZGlmCisKKworICAgIEZUX1RSQUNFNCgoICJ0dF9mYWNlX2xvb2t1cF90YWJsZTogJTA4cCwgYCVjJWMlYyVjJyAtLSAiLAorICAgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgKEZUX0NoYXIpKCB0YWcgPj4gMjQgKSwKKyAgICAgICAgICAgICAgICAoRlRfQ2hhcikoIHRhZyA+PiAxNiApLAorICAgICAgICAgICAgICAgIChGVF9DaGFyKSggdGFnID4+IDggICksCisgICAgICAgICAgICAgICAgKEZUX0NoYXIpKCB0YWcgICAgICAgKSApKTsKKworICAgIGVudHJ5ID0gZmFjZS0+ZGlyX3RhYmxlczsKKyAgICBsaW1pdCA9IGVudHJ5ICsgZmFjZS0+bnVtX3RhYmxlczsKKworICAgIGZvciAoIDsgZW50cnkgPCBsaW1pdDsgZW50cnkrKyApCisgICAgeworICAgICAgLyogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5kb3dzLCB3ZSBjb25zaWRlciAgICAqLworICAgICAgLyogemVyby1sZW5ndGggdGFibGVzIHRoZSBzYW1lIGFzIG1pc3NpbmcgdGFibGVzLiAqLworICAgICAgaWYgKCBlbnRyeS0+VGFnID09IHRhZyApCisgICAgICB7CisgICAgICAgIGlmICggZW50cnktPkxlbmd0aCAhPSAwICkKKyAgICAgICAgeworICAgICAgICAgIGlmICh0YWcgPT0gVFRBR19sb2NhKXsKKwkJCSAgVFRfVGFibGUgbmV4dCA9IHR0X2ZhY2VfZ2V0X25leHR0YWJsZShmYWNlLT5kaXJfdGFibGVzLCBsaW1pdCwgZW50cnkpOworCQkJICBpZiAobmV4dCAmJiBlbnRyeS0+T2Zmc2V0ICsgZW50cnktPkxlbmd0aCA8IG5leHQtPk9mZnNldCkKKwkJCQkgIGVudHJ5LT5MZW5ndGggPSBuZXh0LT5PZmZzZXQgLSBlbnRyeS0+T2Zmc2V0OworCQkgIH0KKyAgICAgICAgICBGVF9UUkFDRTQoKCAiZm91bmQgdGFibGUuXG4iICkpOworICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgfQorI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisgICAgICAgIHplcm9fbGVuZ3RoID0gVFJVRTsKKyNlbmRpZgorICAgICAgfQorICAgIH0KKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisgICAgaWYgKCB6ZXJvX2xlbmd0aCApCisgICAgICBGVF9UUkFDRTQoKCAiaWdub3JpbmcgZW1wdHkgdGFibGVcbiIgKSk7CisgICAgZWxzZQorICAgICAgRlRfVFJBQ0U0KCggImNvdWxkIG5vdCBmaW5kIHRhYmxlXG4iICkpOworI2VuZGlmCisKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9nb3RvX3RhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9va3MgZm9yIGEgVHJ1ZVR5cGUgdGFibGUgYnkgbmFtZSwgdGhlbiBzZWVrIGEgc3RyZWFtIHRvIGl0LiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgIDo6IEEgZmFjZSBvYmplY3QgaGFuZGxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0YWcgICAgOjogVGhlIHNlYXJjaGVkIHRhZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiBUaGUgc3RyZWFtIHRvIHNlZWsgd2hlbiB0aGUgdGFibGUgaXMgZm91bmQuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlbmd0aCA6OiBUaGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSBpZiBmb3VuZCwgdW5kZWZpbmVkIG90aGVyd2lzZS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfZ290b190YWJsZSggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgdGFnLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nKiAgbGVuZ3RoICkKKyAgeworICAgIFRUX1RhYmxlICB0YWJsZTsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSAwOworCisKKyAgICB0YWJsZSA9IHR0X2ZhY2VfbG9va3VwX3RhYmxlKCBmYWNlLCB0YWcgKTsKKyAgICBpZiAoIHRhYmxlICkKKyAgICB7CisgICAgICBpZiAoIGxlbmd0aCApCisgICAgICAgICpsZW5ndGggPSB0YWJsZS0+TGVuZ3RoOworCisgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCB0YWJsZS0+T2Zmc2V0ICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGVycm9yID0gRlRfVEhST1coIFRhYmxlX01pc3NpbmcgKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogSGVyZSwgd2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gY2hlY2sgdGhhdCBgbnVtX3RhYmxlcycgaXMgdmFsaWQgKGFuZCBhZGp1c3QgaXQgaWYgbmVjZXNzYXJ5KSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtIGxvb2sgZm9yIGEgYGhlYWQnIHRhYmxlLCBjaGVjayBpdHMgc2l6ZSwgYW5kIHBhcnNlIGl0IHRvIGNoZWNrICovCisgIC8qICAgd2hldGhlciBpdHMgYG1hZ2ljJyBmaWVsZCBpcyBjb3JyZWN0bHkgc2V0ICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtIGVycm9ycyAoZXhjZXB0IGVycm9ycyByZXR1cm5lZCBieSBzdHJlYW0gaGFuZGxpbmcpICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIFNGTlRfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICBubyB0YWJsZSBpcyBkZWZpbmVkIGluIGRpcmVjdG9yeSwgaXQgaXMgbm90IHNmbnQtd3JhcHBlZCAgICovCisgIC8qICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIFNGTlRfRXJyX1RhYmxlX01pc3Npbmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICB0YWJsZSBkaXJlY3RvcnkgaXMgdmFsaWQsIGJ1dCBlc3NlbnRpYWwgdGFibGVzICAgICAgICAgICAgICovCisgIC8qICAgICAgIChoZWFkL2JoZWQvU0lORykgYXJlIG1pc3NpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgY2hlY2tfdGFibGVfZGlyKCBTRk5UX0hlYWRlciAgc2ZudCwKKyAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gICAgc3RyZWFtICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfVVNob3J0ICBubiwgdmFsaWRfZW50cmllcyA9IDA7CisgICAgRlRfVUludCAgICBoYXNfaGVhZCA9IDAsIGhhc19zaW5nID0gMCwgaGFzX21ldGEgPSAwOworICAgIEZUX1VMb25nICAgb2Zmc2V0ID0gc2ZudC0+b2Zmc2V0ICsgMTI7CisKKyAgICBzdGF0aWMgY29uc3QgRlRfRnJhbWVfRmllbGQgIHRhYmxlX2Rpcl9lbnRyeV9maWVsZHNbXSA9CisgICAgeworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBUVF9UYWJsZVJlYworCisgICAgICBGVF9GUkFNRV9TVEFSVCggMTYgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcoIFRhZyApLAorICAgICAgICBGVF9GUkFNRV9VTE9ORyggQ2hlY2tTdW0gKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcoIE9mZnNldCApLAorICAgICAgICBGVF9GUkFNRV9VTE9ORyggTGVuZ3RoICksCisgICAgICBGVF9GUkFNRV9FTkQKKyAgICB9OworCisKKyAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBvZmZzZXQgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBmb3IgKCBubiA9IDA7IG5uIDwgc2ZudC0+bnVtX3RhYmxlczsgbm4rKyApCisgICAgeworICAgICAgVFRfVGFibGVSZWMgIHRhYmxlOworCisKKyAgICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCB0YWJsZV9kaXJfZW50cnlfZmllbGRzLCAmdGFibGUgKSApCisgICAgICB7CisgICAgICAgIG5uLS07CisgICAgICAgIEZUX1RSQUNFMigoICJjaGVja190YWJsZV9kaXI6IgorICAgICAgICAgICAgICAgICAgICAiIGNhbiByZWFkIG9ubHkgJWQgdGFibGUlcyBpbiBmb250IChpbnN0ZWFkIG9mICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgbm4sIG5uID09IDEgPyAiIiA6ICJzIiwgc2ZudC0+bnVtX3RhYmxlcyApKTsKKyAgICAgICAgc2ZudC0+bnVtX3RhYmxlcyA9IG5uOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgLyogd2UgaWdub3JlIGludmFsaWQgdGFibGVzICovCisgICAgICBpZiAoIHRhYmxlLk9mZnNldCArIHRhYmxlLkxlbmd0aCA+IHN0cmVhbS0+c2l6ZSApCisgICAgICB7CisJCS8vQlVHSUQ6IDUzODc2LCB0aGUgY21hcCB0YWJsZSBpcyBpbnZhbGlkLCB0aGUgZm9udCBmaWxlIGNvdWxkbid0IGJlIHVzZWQuCisJCWlmICh0YWJsZS5UYWcgPT0gVFRBR19jbWFwKSBicmVhazsKKyAgICAgICAgRlRfVFJBQ0UyKCggImNoZWNrX3RhYmxlX2RpcjogdGFibGUgZW50cnkgJWQgaW52YWxpZFxuIiwgbm4gKSk7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB2YWxpZF9lbnRyaWVzKys7CisKKyAgICAgIGlmICggdGFibGUuVGFnID09IFRUQUdfaGVhZCB8fCB0YWJsZS5UYWcgPT0gVFRBR19iaGVkICkKKyAgICAgIHsKKyAgICAgICAgRlRfVUludDMyICBtYWdpYzsKKworCisjaWZuZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworICAgICAgICBpZiAoIHRhYmxlLlRhZyA9PSBUVEFHX2hlYWQgKQorI2VuZGlmCisgICAgICAgICAgaGFzX2hlYWQgPSAxOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSB0YWJsZSBsZW5ndGggc2hvdWxkIGJlIDB4MzYsIGJ1dCBjZXJ0YWluIGZvbnQgdG9vbHMgbWFrZSBpdAorICAgICAgICAgKiAweDM4LCBzbyB3ZSB3aWxsIGp1c3QgY2hlY2sgdGhhdCBpdCBpcyBncmVhdGVyLgorICAgICAgICAgKgorICAgICAgICAgKiBOb3RlIHRoYXQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgdGFibGUgbXVzdCBiZQorICAgICAgICAgKiBwYWRkZWQgdG8gMzItYml0IGxlbmd0aHMsIGJ1dCB0aGlzIGRvZXNuJ3QgYXBwbHkgdG8gdGhlIHZhbHVlIG9mCisgICAgICAgICAqIGl0cyBgTGVuZ3RoJyBmaWVsZCEKKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIGlmICggdGFibGUuTGVuZ3RoIDwgMHgzNiApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9UUkFDRTIoKCAiY2hlY2tfdGFibGVfZGlyOiBgaGVhZCcgdGFibGUgdG9vIHNtYWxsXG4iICkpOworICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIFRhYmxlX01pc3NpbmcgKTsKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCB0YWJsZS5PZmZzZXQgKyAxMiApIHx8CisgICAgICAgICAgICAgRlRfUkVBRF9VTE9ORyggbWFnaWMgKSAgICAgICAgICAgICAgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICBpZiAoIG1hZ2ljICE9IDB4NUYwRjNDRjVVTCApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9UUkFDRTIoKCAiY2hlY2tfdGFibGVfZGlyOiIKKyAgICAgICAgICAgICAgICAgICAgICAiIG5vIG1hZ2ljIG51bWJlciBmb3VuZCBpbiBgaGVhZCcgdGFibGVcbiIpKTsKKyAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBUYWJsZV9NaXNzaW5nICk7CisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggb2Zmc2V0ICsgKCBubiArIDEgKSAqIDE2ICkgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCB0YWJsZS5UYWcgPT0gVFRBR19TSU5HICkKKyAgICAgICAgaGFzX3NpbmcgPSAxOworICAgICAgZWxzZSBpZiAoIHRhYmxlLlRhZyA9PSBUVEFHX01FVEEgKQorICAgICAgICBoYXNfbWV0YSA9IDE7CisgICAgfQorCisgICAgc2ZudC0+bnVtX3RhYmxlcyA9IHZhbGlkX2VudHJpZXM7CisKKyAgICBpZiAoIHNmbnQtPm51bV90YWJsZXMgPT0gMCApCisgICAgeworICAgICAgRlRfVFJBQ0UyKCggImNoZWNrX3RhYmxlX2Rpcjogbm8gdGFibGVzIGZvdW5kXG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIGlmIGBzaW5nJyBhbmQgYG1ldGEnIHRhYmxlcyBhcmUgcHJlc2VudCwgdGhlcmUgaXMgbm8gYGhlYWQnIHRhYmxlICovCisgICAgaWYgKCBoYXNfaGVhZCB8fCAoIGhhc19zaW5nICYmIGhhc19tZXRhICkgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgICAgZ290byBFeGl0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgRlRfVFJBQ0UyKCggImNoZWNrX3RhYmxlX2RpcjoiICkpOworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworICAgICAgRlRfVFJBQ0UyKCggIiBuZWl0aGVyIGBoZWFkJywgYGJoZWQnLCBub3IgYHNpbmcnIHRhYmxlIGZvdW5kXG4iICkpOworI2Vsc2UKKyAgICAgIEZUX1RSQUNFMigoICIgbmVpdGhlciBgaGVhZCcgbm9yIGBzaW5nJyB0YWJsZSBmb3VuZFxuIiApKTsKKyNlbmRpZgorICAgICAgZXJyb3IgPSBGVF9USFJPVyggVGFibGVfTWlzc2luZyApOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9sb2FkX2ZvbnRfZGlyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZHMgdGhlIGhlYWRlciBvZiBhIFNGTlQgZm9udCBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gICAgIDo6IFRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxPdXRwdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzZm50ICAgICAgIDo6IFRoZSBTRk5UIGhlYWRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgc3RyZWFtIGN1cnNvciBtdXN0IGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZvbnQgZGlyZWN0b3J5LiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfZm9udF9kaXIoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApCisgIHsKKyAgICBTRk5UX0hlYWRlclJlYyAgc2ZudDsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3I7CisgICAgRlRfTWVtb3J5ICAgICAgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIFRUX1RhYmxlUmVjKiAgICBlbnRyeTsKKyAgICBGVF9JbnQgICAgICAgICAgbm47CisKKyAgICBzdGF0aWMgY29uc3QgRlRfRnJhbWVfRmllbGQgIG9mZnNldF90YWJsZV9maWVsZHNbXSA9CisgICAgeworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBTRk5UX0hlYWRlclJlYworCisgICAgICBGVF9GUkFNRV9TVEFSVCggOCApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIG51bV90YWJsZXMgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBzZWFyY2hfcmFuZ2UgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBlbnRyeV9zZWxlY3RvciApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIHJhbmdlX3NoaWZ0ICksCisgICAgICBGVF9GUkFNRV9FTkQKKyAgICB9OworCisKKyAgICBGVF9UUkFDRTIoKCAidHRfZmFjZV9sb2FkX2ZvbnRfZGlyOiAlMDhwXG4iLCBmYWNlICkpOworCisgICAgLyogcmVhZCB0aGUgb2Zmc2V0IHRhYmxlICovCisKKyAgICBzZm50Lm9mZnNldCA9IEZUX1NUUkVBTV9QT1MoKTsKKworICAgIGlmICggRlRfUkVBRF9VTE9ORyggc2ZudC5mb3JtYXRfdGFnICkgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICBGVF9TVFJFQU1fUkVBRF9GSUVMRFMoIG9mZnNldF90YWJsZV9maWVsZHMsICZzZm50ICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogbWFueSBmb250cyBkb24ndCBoYXZlIHRoZXNlIGZpZWxkcyBzZXQgY29ycmVjdGx5ICovCisjaWYgMAorICAgIGlmICggc2ZudC5zZWFyY2hfcmFuZ2UgIT0gMSA8PCAoIHNmbnQuZW50cnlfc2VsZWN0b3IgKyA0ICkgICAgICAgIHx8CisgICAgICAgICBzZm50LnNlYXJjaF9yYW5nZSArIHNmbnQucmFuZ2Vfc2hpZnQgIT0gc2ZudC5udW1fdGFibGVzIDw8IDQgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisjZW5kaWYKKworICAgIC8qIGxvYWQgdGhlIHRhYmxlIGRpcmVjdG9yeSAqLworCisgICAgRlRfVFJBQ0UyKCggIi0tIE51bWJlciBvZiB0YWJsZXM6ICUxMHVcbiIsICAgIHNmbnQubnVtX3RhYmxlcyApKTsKKyAgICBGVF9UUkFDRTIoKCAiLS0gRm9ybWF0IHZlcnNpb246ICAgMHglMDhseFxuIiwgc2ZudC5mb3JtYXRfdGFnICkpOworCisgICAgaWYgKCBzZm50LmZvcm1hdF90YWcgIT0gVFRBR19PVFRPICkKKyAgICB7CisgICAgICAvKiBjaGVjayBmaXJzdCAqLworICAgICAgZXJyb3IgPSBjaGVja190YWJsZV9kaXIoICZzZm50LCBzdHJlYW0gKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTIoKCAidHRfZmFjZV9sb2FkX2ZvbnRfZGlyOiIKKyAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIHRhYmxlIGRpcmVjdG9yeSBmb3IgVHJ1ZVR5cGVcbiIgKSk7CisKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorICAgIH0KKworICAgIGZhY2UtPm51bV90YWJsZXMgPSBzZm50Lm51bV90YWJsZXM7CisgICAgZmFjZS0+Zm9ybWF0X3RhZyA9IHNmbnQuZm9ybWF0X3RhZzsKKworICAgIGlmICggRlRfUU5FV19BUlJBWSggZmFjZS0+ZGlyX3RhYmxlcywgZmFjZS0+bnVtX3RhYmxlcyApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIHNmbnQub2Zmc2V0ICsgMTIgKSAgICAgICB8fAorICAgICAgICAgRlRfRlJBTUVfRU5URVIoIGZhY2UtPm51bV90YWJsZXMgKiAxNkwgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBlbnRyeSA9IGZhY2UtPmRpcl90YWJsZXM7CisKKyAgICBGVF9UUkFDRTIoKCAiXG4iCisgICAgICAgICAgICAgICAgIiAgdGFnICAgIG9mZnNldCAgICBsZW5ndGggICBjaGVja3N1bVxuIgorICAgICAgICAgICAgICAgICIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIgKSk7CisKKyAgICBmb3IgKCBubiA9IDA7IG5uIDwgc2ZudC5udW1fdGFibGVzOyBubisrICkKKyAgICB7CisgICAgICBlbnRyeS0+VGFnICAgICAgPSBGVF9HRVRfVEFHNCgpOworICAgICAgZW50cnktPkNoZWNrU3VtID0gRlRfR0VUX1VMT05HKCk7CisgICAgICBlbnRyeS0+T2Zmc2V0ICAgPSBGVF9HRVRfTE9ORygpOworICAgICAgZW50cnktPkxlbmd0aCAgID0gRlRfR0VUX0xPTkcoKTsKKworICAgICAgLyogaWdub3JlIGludmFsaWQgdGFibGVzICovCisgICAgICBpZiAoIGVudHJ5LT5PZmZzZXQgKyBlbnRyeS0+TGVuZ3RoID4gc3RyZWFtLT5zaXplICkKKyAgICAgICAgY29udGludWU7CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFMigoICIgICVjJWMlYyVjICAlMDhseCAgJTA4bHggICUwOGx4XG4iLAorICAgICAgICAgICAgICAgICAgICAoRlRfQ2hhcikoIGVudHJ5LT5UYWcgPj4gMjQgKSwKKyAgICAgICAgICAgICAgICAgICAgKEZUX0NoYXIpKCBlbnRyeS0+VGFnID4+IDE2ICksCisgICAgICAgICAgICAgICAgICAgIChGVF9DaGFyKSggZW50cnktPlRhZyA+PiA4ICApLAorICAgICAgICAgICAgICAgICAgICAoRlRfQ2hhcikoIGVudHJ5LT5UYWcgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPkxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPkNoZWNrU3VtICkpOworICAgICAgICBlbnRyeSsrOworICAgICAgfQorICAgIH0KKworICAgIEZUX0ZSQU1FX0VYSVQoKTsKKworICAgIEZUX1RSQUNFMigoICJ0YWJsZSBkaXJlY3RvcnkgbG9hZGVkXG5cbiIgKSk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2ZhY2VfbG9hZF9hbnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvYWRzIGFueSBmb250IHRhYmxlIGludG8gY2xpZW50IG1lbW9yeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICA6OiBUaGUgZmFjZSBvYmplY3QgdG8gbG9vayBmb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdGFnICAgIDo6IFRoZSB0YWcgb2YgdGFibGUgdG8gbG9hZC4gIFVzZSB0aGUgdmFsdWUgMCBpZiB5b3Ugd2FudCAgICovCisgIC8qICAgICAgICAgICAgICB0byBhY2Nlc3MgdGhlIHdob2xlIGZvbnQgZmlsZSwgZWxzZSBzZXQgdGhpcyBwYXJhbWV0ZXIgICAqLworICAvKiAgICAgICAgICAgICAgdG8gYSB2YWxpZCBUcnVlVHlwZSB0YWJsZSB0YWcgdGhhdCB5b3UgY2FuIGZvcmdlIHdpdGggICAgKi8KKyAgLyogICAgICAgICAgICAgIHRoZSBNQUtFX1RUX1RBRyBtYWNyby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvZmZzZXQgOjogVGhlIHN0YXJ0aW5nIG9mZnNldCBpbiB0aGUgdGFibGUgKG9yIHRoZSBmaWxlIGlmICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgIHRhZyA9PSAwKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsZW5ndGggOjogVGhlIGFkZHJlc3Mgb2YgdGhlIGRlY2lzaW9uIHZhcmlhYmxlOiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIElmIGxlbmd0aCA9PSBOVUxMOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIExvYWRzIHRoZSB3aG9sZSB0YWJsZS4gIFJldHVybnMgYW4gZXJyb3IgaWYgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBgb2Zmc2V0JyA9PSAwISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICBJZiAqbGVuZ3RoID09IDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBFeGl0cyBpbW1lZGlhdGVseTsgcmV0dXJuaW5nIHRoZSBsZW5ndGggb2YgdGhlIGdpdmVuICovCisgIC8qICAgICAgICAgICAgICAgICAgdGFibGUgb3Igb2YgdGhlIGZvbnQgZmlsZSwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiAqLworICAvKiAgICAgICAgICAgICAgICAgIGB0YWcnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgIElmICpsZW5ndGggIT0gMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgIExvYWRzIHRoZSBuZXh0IGBsZW5ndGgnIGJ5dGVzIG9mIHRhYmxlIG9yIGZvbnQsICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBzdGFydGluZyBhdCBvZmZzZXQgYG9mZnNldCcgKGluIHRhYmxlIG9yIGZvbnQgdG9vKS4gICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYnVmZmVyIDo6IFRoZSBhZGRyZXNzIG9mIHRhcmdldCBidWZmZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX2FueSggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIHRhZywKKyAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogIGxlbmd0aCApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX1N0cmVhbSAgc3RyZWFtOworICAgIFRUX1RhYmxlICAgdGFibGU7CisgICAgRlRfVUxvbmcgICBzaXplOworCisKKyAgICBpZiAoIHRhZyAhPSAwICkKKyAgICB7CisgICAgICAvKiBsb29rIGZvciB0YWcgaW4gZm9udCBkaXJlY3RvcnkgKi8KKyAgICAgIHRhYmxlID0gdHRfZmFjZV9sb29rdXBfdGFibGUoIGZhY2UsIHRhZyApOworICAgICAgaWYgKCAhdGFibGUgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBUYWJsZV9NaXNzaW5nICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgb2Zmc2V0ICs9IHRhYmxlLT5PZmZzZXQ7CisgICAgICBzaXplICAgID0gdGFibGUtPkxlbmd0aDsKKyAgICB9CisgICAgZWxzZQorICAgICAgLyogdGFnID09IDAgLS0gdGhlIHVzZXIgd2FudHMgdG8gYWNjZXNzIHRoZSBmb250IGZpbGUgZGlyZWN0bHkgKi8KKyAgICAgIHNpemUgPSBmYWNlLT5yb290LnN0cmVhbS0+c2l6ZTsKKworICAgIGlmICggbGVuZ3RoICYmICpsZW5ndGggPT0gMCApCisgICAgeworICAgICAgKmxlbmd0aCA9IHNpemU7CisKKyAgICAgIHJldHVybiBGVF9FcnJfT2s7CisgICAgfQorCisgICAgaWYgKCBsZW5ndGggKQorICAgICAgc2l6ZSA9ICpsZW5ndGg7CisKKyAgICBzdHJlYW0gPSBmYWNlLT5yb290LnN0cmVhbTsKKyAgICAvKiB0aGUgYGlmJyBpcyBzeW50YWN0aWMgc3VnYXIgZm9yIHBpY2t5IGNvbXBpbGVycyAqLworICAgIGlmICggRlRfU1RSRUFNX1JFQURfQVQoIG9mZnNldCwgYnVmZmVyLCBzaXplICkgKQorICAgICAgZ290byBFeGl0OworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9mYWNlX2xvYWRfZ2VuZXJpY19oZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkcyB0aGUgVHJ1ZVR5cGUgdGFibGUgYGhlYWQnIG9yIGBiaGVkJy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiBUaGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIHR0X2ZhY2VfbG9hZF9nZW5lcmljX2hlYWRlciggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgdGFnICkKKyAgeworICAgIEZUX0Vycm9yICAgIGVycm9yOworICAgIFRUX0hlYWRlciogIGhlYWRlcjsKKworICAgIHN0YXRpYyBjb25zdCBGVF9GcmFtZV9GaWVsZCAgaGVhZGVyX2ZpZWxkc1tdID0KKyAgICB7CisjdW5kZWYgIEZUX1NUUlVDVFVSRQorI2RlZmluZSBGVF9TVFJVQ1RVUkUgIFRUX0hlYWRlcgorCisgICAgICBGVF9GUkFNRV9TVEFSVCggNTQgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcgKCBUYWJsZV9WZXJzaW9uICksCisgICAgICAgIEZUX0ZSQU1FX1VMT05HICggRm9udF9SZXZpc2lvbiApLAorICAgICAgICBGVF9GUkFNRV9MT05HICAoIENoZWNrU3VtX0FkanVzdCApLAorICAgICAgICBGVF9GUkFNRV9MT05HICAoIE1hZ2ljX051bWJlciApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIEZsYWdzICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggVW5pdHNfUGVyX0VNICksCisgICAgICAgIEZUX0ZSQU1FX0xPTkcgICggQ3JlYXRlZFswXSApLAorICAgICAgICBGVF9GUkFNRV9MT05HICAoIENyZWF0ZWRbMV0gKSwKKyAgICAgICAgRlRfRlJBTUVfTE9ORyAgKCBNb2RpZmllZFswXSApLAorICAgICAgICBGVF9GUkFNRV9MT05HICAoIE1vZGlmaWVkWzFdICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggeE1pbiApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHlNaW4gKSwKKyAgICAgICAgRlRfRlJBTUVfU0hPUlQgKCB4TWF4ICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggeU1heCApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIE1hY19TdHlsZSApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIExvd2VzdF9SZWNfUFBFTSApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIEZvbnRfRGlyZWN0aW9uICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggSW5kZXhfVG9fTG9jX0Zvcm1hdCApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIEdseXBoX0RhdGFfRm9ybWF0ICksCisgICAgICBGVF9GUkFNRV9FTkQKKyAgICB9OworCisKKyAgICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIHRhZywgc3RyZWFtLCAwICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBoZWFkZXIgPSAmZmFjZS0+aGVhZGVyOworCisgICAgaWYgKCBGVF9TVFJFQU1fUkVBRF9GSUVMRFMoIGhlYWRlcl9maWVsZHMsIGhlYWRlciApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIEZUX1RSQUNFMygoICJVbml0cyBwZXIgRU06ICU0dVxuIiwgaGVhZGVyLT5Vbml0c19QZXJfRU0gKSk7CisgICAgRlRfVFJBQ0UzKCggIkluZGV4VG9Mb2M6ICAgJTRkXG4iLCBoZWFkZXItPkluZGV4X1RvX0xvY19Gb3JtYXQgKSk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfaGVhZCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgcmV0dXJuIHR0X2ZhY2VfbG9hZF9nZW5lcmljX2hlYWRlciggZmFjZSwgc3RyZWFtLCBUVEFHX2hlYWQgKTsKKyAgfQorCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX2JoZWQoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIHJldHVybiB0dF9mYWNlX2xvYWRfZ2VuZXJpY19oZWFkZXIoIGZhY2UsIHN0cmVhbSwgVFRBR19iaGVkICk7CisgIH0KKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9sb2FkX21heF9wcm9maWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZHMgdGhlIG1heGltdW0gcHJvZmlsZSBpbnRvIGEgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogVGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfbWF4cCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgIGVycm9yOworICAgIFRUX01heFByb2ZpbGUqICBtYXhQcm9maWxlID0gJmZhY2UtPm1heF9wcm9maWxlOworCisgICAgc3RhdGljIGNvbnN0IEZUX0ZyYW1lX0ZpZWxkICBtYXhwX2ZpZWxkc1tdID0KKyAgICB7CisjdW5kZWYgIEZUX1NUUlVDVFVSRQorI2RlZmluZSBGVF9TVFJVQ1RVUkUgIFRUX01heFByb2ZpbGUKKworICAgICAgRlRfRlJBTUVfU1RBUlQoIDYgKSwKKyAgICAgICAgRlRfRlJBTUVfTE9ORyAgKCB2ZXJzaW9uICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggbnVtR2x5cGhzICksCisgICAgICBGVF9GUkFNRV9FTkQKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IEZUX0ZyYW1lX0ZpZWxkICBtYXhwX2ZpZWxkc19leHRyYVtdID0KKyAgICB7CisgICAgICBGVF9GUkFNRV9TVEFSVCggMjYgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBtYXhQb2ludHMgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBtYXhDb250b3VycyApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIG1heENvbXBvc2l0ZVBvaW50cyApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIG1heENvbXBvc2l0ZUNvbnRvdXJzICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggbWF4Wm9uZXMgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBtYXhUd2lsaWdodFBvaW50cyApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIG1heFN0b3JhZ2UgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBtYXhGdW5jdGlvbkRlZnMgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBtYXhJbnN0cnVjdGlvbkRlZnMgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBtYXhTdGFja0VsZW1lbnRzICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggbWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggbWF4Q29tcG9uZW50RWxlbWVudHMgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBtYXhDb21wb25lbnREZXB0aCApLAorICAgICAgRlRfRlJBTUVfRU5ECisgICAgfTsKKworCisgICAgZXJyb3IgPSBmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX21heHAsIHN0cmVhbSwgMCApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCBGVF9TVFJFQU1fUkVBRF9GSUVMRFMoIG1heHBfZmllbGRzLCBtYXhQcm9maWxlICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgbWF4UHJvZmlsZS0+bWF4UG9pbnRzICAgICAgICAgICAgID0gMDsKKyAgICBtYXhQcm9maWxlLT5tYXhDb250b3VycyAgICAgICAgICAgPSAwOworICAgIG1heFByb2ZpbGUtPm1heENvbXBvc2l0ZVBvaW50cyAgICA9IDA7CisgICAgbWF4UHJvZmlsZS0+bWF4Q29tcG9zaXRlQ29udG91cnMgID0gMDsKKyAgICBtYXhQcm9maWxlLT5tYXhab25lcyAgICAgICAgICAgICAgPSAwOworICAgIG1heFByb2ZpbGUtPm1heFR3aWxpZ2h0UG9pbnRzICAgICA9IDA7CisgICAgbWF4UHJvZmlsZS0+bWF4U3RvcmFnZSAgICAgICAgICAgID0gMDsKKyAgICBtYXhQcm9maWxlLT5tYXhGdW5jdGlvbkRlZnMgICAgICAgPSAwOworICAgIG1heFByb2ZpbGUtPm1heEluc3RydWN0aW9uRGVmcyAgICA9IDA7CisgICAgbWF4UHJvZmlsZS0+bWF4U3RhY2tFbGVtZW50cyAgICAgID0gMDsKKyAgICBtYXhQcm9maWxlLT5tYXhTaXplT2ZJbnN0cnVjdGlvbnMgPSAwOworICAgIG1heFByb2ZpbGUtPm1heENvbXBvbmVudEVsZW1lbnRzICA9IDA7CisgICAgbWF4UHJvZmlsZS0+bWF4Q29tcG9uZW50RGVwdGggICAgID0gMDsKKworICAgIGlmICggbWF4UHJvZmlsZS0+dmVyc2lvbiA+PSAweDEwMDAwTCApCisgICAgeworICAgICAgaWYgKCBGVF9TVFJFQU1fUkVBRF9GSUVMRFMoIG1heHBfZmllbGRzX2V4dHJhLCBtYXhQcm9maWxlICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIC8qIFhYWDogYW4gYWRqdXN0bWVudCB0aGF0IGlzIG5lY2Vzc2FyeSB0byBsb2FkIGNlcnRhaW4gKi8KKyAgICAgIC8qICAgICAgYnJva2VuIGZvbnRzIGxpa2UgYEtleXN0cm9rZXMgTVQnIDotKCAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgV2UgYWxsb2NhdGUgNjQgZnVuY3Rpb24gZW50cmllcyBieSBkZWZhdWx0IHdoZW4gICAgKi8KKyAgICAgIC8qICAgdGhlIG1heEZ1bmN0aW9uRGVmcyB2YWx1ZSBpcyBzbWFsbGVyLiAgICAgICAgICAgICAgKi8KKworICAgICAgaWYgKCBtYXhQcm9maWxlLT5tYXhGdW5jdGlvbkRlZnMgPCA2NCApCisgICAgICAgIG1heFByb2ZpbGUtPm1heEZ1bmN0aW9uRGVmcyA9IDY0OworCisgICAgICAvKiB3ZSBhZGQgNCBwaGFudG9tIHBvaW50cyBsYXRlciAqLworICAgICAgaWYgKCBtYXhQcm9maWxlLT5tYXhUd2lsaWdodFBvaW50cyA+ICggMHhGRkZGVSAtIDQgKSApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFMCgoICJ0dF9mYWNlX2xvYWRfbWF4cDoiCisgICAgICAgICAgICAgICAgICAgICIgdG9vIG11Y2ggdHdpbGlnaHQgcG9pbnRzIGluIGBtYXhwJyB0YWJsZTtcbiIKKyAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICIKKyAgICAgICAgICAgICAgICAgICAgIiBzb21lIGdseXBocyBtaWdodCBiZSByZW5kZXJlZCBpbmNvcnJlY3RseVxuIiApKTsKKworICAgICAgICBtYXhQcm9maWxlLT5tYXhUd2lsaWdodFBvaW50cyA9IDB4RkZGRlUgLSA0OworICAgICAgfQorCisgICAgICAvKiB3ZSBhcmJpdHJhcmlseSBsaW1pdCByZWN1cnNpb24gdG8gYXZvaWQgc3RhY2sgZXhoYXVzdGlvbiAqLworICAgICAgaWYgKCBtYXhQcm9maWxlLT5tYXhDb21wb25lbnREZXB0aCA+IDEwMCApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFMCgoICJ0dF9mYWNlX2xvYWRfbWF4cDoiCisgICAgICAgICAgICAgICAgICAgICIgYWJub3JtYWxseSBsYXJnZSBjb21wb25lbnQgZGVwdGggKCVkKSBzZXQgdG8gMTAwXG4iLAorICAgICAgICAgICAgICAgICAgICBtYXhQcm9maWxlLT5tYXhDb21wb25lbnREZXB0aCApKTsKKyAgICAgICAgbWF4UHJvZmlsZS0+bWF4Q29tcG9uZW50RGVwdGggPSAxMDA7CisgICAgICB9CisgICAgfQorCisgICAgRlRfVFJBQ0UzKCggIm51bUdseXBoczogJXVcbiIsIG1heFByb2ZpbGUtPm51bUdseXBocyApKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9sb2FkX25hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZHMgdGhlIG5hbWUgcmVjb3Jkcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogVGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfbmFtZSggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfRXJyb3IgICAgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgICAgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIEZUX1VMb25nICAgICAgdGFibGVfcG9zLCB0YWJsZV9sZW47CisgICAgRlRfVUxvbmcgICAgICBzdG9yYWdlX3N0YXJ0LCBzdG9yYWdlX2xpbWl0OworICAgIEZUX1VJbnQgICAgICAgY291bnQ7CisgICAgVFRfTmFtZVRhYmxlICB0YWJsZTsKKworICAgIHN0YXRpYyBjb25zdCBGVF9GcmFtZV9GaWVsZCAgbmFtZV90YWJsZV9maWVsZHNbXSA9CisgICAgeworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBUVF9OYW1lVGFibGVSZWMKKworICAgICAgRlRfRlJBTUVfU1RBUlQoIDYgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBmb3JtYXQgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBudW1OYW1lUmVjb3JkcyApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIHN0b3JhZ2VPZmZzZXQgKSwKKyAgICAgIEZUX0ZSQU1FX0VORAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgRlRfRnJhbWVfRmllbGQgIG5hbWVfcmVjb3JkX2ZpZWxkc1tdID0KKyAgICB7CisjdW5kZWYgIEZUX1NUUlVDVFVSRQorI2RlZmluZSBGVF9TVFJVQ1RVUkUgIFRUX05hbWVFbnRyeVJlYworCisgICAgICAvKiBubyBGVF9GUkFNRV9TVEFSVCAqLworICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIHBsYXRmb3JtSUQgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBlbmNvZGluZ0lEICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggbGFuZ3VhZ2VJRCApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIG5hbWVJRCApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIHN0cmluZ0xlbmd0aCApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIHN0cmluZ09mZnNldCApLAorICAgICAgRlRfRlJBTUVfRU5ECisgICAgfTsKKworCisgICAgdGFibGUgICAgICAgICA9ICZmYWNlLT5uYW1lX3RhYmxlOworICAgIHRhYmxlLT5zdHJlYW0gPSBzdHJlYW07CisKKyAgICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfbmFtZSwgc3RyZWFtLCAmdGFibGVfbGVuICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICB0YWJsZV9wb3MgPSBGVF9TVFJFQU1fUE9TKCk7CisKKworICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCBuYW1lX3RhYmxlX2ZpZWxkcywgdGFibGUgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBTb21lIHBvcHVsYXIgQXNpYW4gZm9udHMgaGF2ZSBhbiBpbnZhbGlkIGBzdG9yYWdlT2Zmc2V0JyB2YWx1ZSAgICovCisgICAgLyogKGl0IHNob3VsZCBiZSBhdCBsZWFzdCAiNiArIDEyKm51bV9uYW1lcyIpLiAgSG93ZXZlciwgdGhlIHN0cmluZyAqLworICAgIC8qIG9mZnNldHMsIGNvbXB1dGVkIGFzICJzdG9yYWdlT2Zmc2V0ICsgZW50cnktPnN0cmluZ09mZnNldCIsIGFyZSAgKi8KKyAgICAvKiB2YWxpZCBwb2ludGVycyB3aXRoaW4gdGhlIG5hbWUgdGFibGUuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIFdlIHRodXMgY2FuJ3QgY2hlY2sgYHN0b3JhZ2VPZmZzZXQnIHJpZ2h0IG5vdy4gICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgc3RvcmFnZV9zdGFydCA9IHRhYmxlX3BvcyArIDYgKyAxMip0YWJsZS0+bnVtTmFtZVJlY29yZHM7CisgICAgc3RvcmFnZV9saW1pdCA9IHRhYmxlX3BvcyArIHRhYmxlX2xlbjsKKworICAgIGlmICggc3RvcmFnZV9zdGFydCA+IHN0b3JhZ2VfbGltaXQgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggInR0X2ZhY2VfbG9hZF9uYW1lOiBpbnZhbGlkIGBuYW1lJyB0YWJsZVxuIiApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIE5hbWVfVGFibGVfTWlzc2luZyApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIEFsbG9jYXRlIHRoZSBhcnJheSBvZiBuYW1lIHJlY29yZHMuICovCisgICAgY291bnQgICAgICAgICAgICAgICAgID0gdGFibGUtPm51bU5hbWVSZWNvcmRzOworICAgIHRhYmxlLT5udW1OYW1lUmVjb3JkcyA9IDA7CisKKyAgICBpZiAoIEZUX05FV19BUlJBWSggdGFibGUtPm5hbWVzLCBjb3VudCApIHx8CisgICAgICAgICBGVF9GUkFNRV9FTlRFUiggY291bnQgKiAxMiApICAgICAgICApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBMb2FkIHRoZSBuYW1lIHJlY29yZHMgYW5kIGRldGVybWluZSBob3cgbXVjaCBzdG9yYWdlIGlzIG5lZWRlZCAqLworICAgIC8qIHRvIGhvbGQgdGhlIHN0cmluZ3MgdGhlbXNlbHZlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgeworICAgICAgVFRfTmFtZUVudHJ5UmVjKiAgZW50cnkgPSB0YWJsZS0+bmFtZXM7CisKKworICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0gKQorICAgICAgeworICAgICAgICBpZiAoIEZUX1NUUkVBTV9SRUFEX0ZJRUxEUyggbmFtZV9yZWNvcmRfZmllbGRzLCBlbnRyeSApICkKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiBjaGVjayB0aGF0IHRoZSBuYW1lIGlzIG5vdCBlbXB0eSAqLworICAgICAgICBpZiAoIGVudHJ5LT5zdHJpbmdMZW5ndGggPT0gMCApCisgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLyogY2hlY2sgdGhhdCB0aGUgbmFtZSBzdHJpbmcgaXMgd2l0aGluIHRoZSB0YWJsZSAqLworICAgICAgICBlbnRyeS0+c3RyaW5nT2Zmc2V0ICs9IHRhYmxlX3BvcyArIHRhYmxlLT5zdG9yYWdlT2Zmc2V0OworICAgICAgICBpZiAoIGVudHJ5LT5zdHJpbmdPZmZzZXQgICAgICAgICAgICAgICAgICAgICAgIDwgc3RvcmFnZV9zdGFydCB8fAorICAgICAgICAgICAgIGVudHJ5LT5zdHJpbmdPZmZzZXQgKyBlbnRyeS0+c3RyaW5nTGVuZ3RoID4gc3RvcmFnZV9saW1pdCApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBpbnZhbGlkIGVudHJ5IC0gaWdub3JlIGl0ICovCisgICAgICAgICAgZW50cnktPnN0cmluZ09mZnNldCA9IDA7CisgICAgICAgICAgZW50cnktPnN0cmluZ0xlbmd0aCA9IDA7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBlbnRyeSsrOworICAgICAgfQorCisgICAgICB0YWJsZS0+bnVtTmFtZVJlY29yZHMgPSAoRlRfVUludCkoIGVudHJ5IC0gdGFibGUtPm5hbWVzICk7CisgICAgfQorCisgICAgRlRfRlJBTUVfRVhJVCgpOworCisgICAgLyogZXZlcnl0aGluZyB3ZW50IHdlbGwsIHVwZGF0ZSBmYWNlLT5udW1fbmFtZXMgKi8KKyAgICBmYWNlLT5udW1fbmFtZXMgPSAoRlRfVVNob3J0KSB0YWJsZS0+bnVtTmFtZVJlY29yZHM7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2ZhY2VfZnJlZV9uYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVzIHRoZSBuYW1lIHJlY29yZHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgdHRfZmFjZV9mcmVlX25hbWUoIFRUX0ZhY2UgIGZhY2UgKQorICB7CisgICAgRlRfTWVtb3J5ICAgICBtZW1vcnkgPSBmYWNlLT5yb290LmRyaXZlci0+cm9vdC5tZW1vcnk7CisgICAgVFRfTmFtZVRhYmxlICB0YWJsZSAgPSAmZmFjZS0+bmFtZV90YWJsZTsKKyAgICBUVF9OYW1lRW50cnkgIGVudHJ5ICA9IHRhYmxlLT5uYW1lczsKKyAgICBGVF9VSW50ICAgICAgIGNvdW50ICA9IHRhYmxlLT5udW1OYW1lUmVjb3JkczsKKworCisgICAgaWYgKCB0YWJsZS0+bmFtZXMgKQorICAgIHsKKyAgICAgIGZvciAoIDsgY291bnQgPiAwOyBjb3VudC0tLCBlbnRyeSsrICkKKyAgICAgIHsKKyAgICAgICAgRlRfRlJFRSggZW50cnktPnN0cmluZyApOworICAgICAgICBlbnRyeS0+c3RyaW5nTGVuZ3RoID0gMDsKKyAgICAgIH0KKworICAgICAgLyogZnJlZSBzdHJpbmdzIHRhYmxlICovCisgICAgICBGVF9GUkVFKCB0YWJsZS0+bmFtZXMgKTsKKyAgICB9CisKKyAgICB0YWJsZS0+bnVtTmFtZVJlY29yZHMgPSAwOworICAgIHRhYmxlLT5mb3JtYXQgICAgICAgICA9IDA7CisgICAgdGFibGUtPnN0b3JhZ2VPZmZzZXQgID0gMDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9sb2FkX2NtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZHMgdGhlIGNtYXAgZGlyZWN0b3J5IGluIGEgZmFjZSBvYmplY3QuICBUaGUgY21hcHMgdGhlbXNlbHZlcyAgICovCisgIC8qICAgIGFyZSBsb2FkZWQgb24gZGVtYW5kIGluIHRoZSBgdHRjbWFwLmMnIG1vZHVsZS4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtIDo6IEEgaGFuZGxlIHRvIHRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfY21hcCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfY21hcCwgc3RyZWFtLCAmZmFjZS0+Y21hcF9zaXplICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIEZUX0ZSQU1FX0VYVFJBQ1QoIGZhY2UtPmNtYXBfc2l6ZSwgZmFjZS0+Y21hcF90YWJsZSApICkKKyAgICAgIGZhY2UtPmNtYXBfc2l6ZSA9IDA7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9sb2FkX29zMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZHMgdGhlIE9TMiB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogQSBoYW5kbGUgdG8gdGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfb3MyKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvcjsKKyAgICBUVF9PUzIqICAgb3MyOworCisgICAgc3RhdGljIGNvbnN0IEZUX0ZyYW1lX0ZpZWxkICBvczJfZmllbGRzW10gPQorICAgIHsKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgVFRfT1MyCisKKyAgICAgIEZUX0ZSQU1FX1NUQVJUKCA3OCApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIHZlcnNpb24gKSwKKyAgICAgICAgRlRfRlJBTUVfU0hPUlQgKCB4QXZnQ2hhcldpZHRoICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggdXNXZWlnaHRDbGFzcyApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIHVzV2lkdGhDbGFzcyApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIGZzVHlwZSApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHlTdWJzY3JpcHRYU2l6ZSApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHlTdWJzY3JpcHRZU2l6ZSApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHlTdWJzY3JpcHRYT2Zmc2V0ICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggeVN1YnNjcmlwdFlPZmZzZXQgKSwKKyAgICAgICAgRlRfRlJBTUVfU0hPUlQgKCB5U3VwZXJzY3JpcHRYU2l6ZSApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHlTdXBlcnNjcmlwdFlTaXplICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggeVN1cGVyc2NyaXB0WE9mZnNldCApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHlTdXBlcnNjcmlwdFlPZmZzZXQgKSwKKyAgICAgICAgRlRfRlJBTUVfU0hPUlQgKCB5U3RyaWtlb3V0U2l6ZSApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHlTdHJpa2VvdXRQb3NpdGlvbiApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHNGYW1pbHlDbGFzcyApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVswXSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVsxXSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVsyXSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVszXSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVs0XSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVs1XSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVs2XSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVs3XSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVs4XSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIHBhbm9zZVs5XSApLAorICAgICAgICBGVF9GUkFNRV9VTE9ORyAoIHVsVW5pY29kZVJhbmdlMSApLAorICAgICAgICBGVF9GUkFNRV9VTE9ORyAoIHVsVW5pY29kZVJhbmdlMiApLAorICAgICAgICBGVF9GUkFNRV9VTE9ORyAoIHVsVW5pY29kZVJhbmdlMyApLAorICAgICAgICBGVF9GUkFNRV9VTE9ORyAoIHVsVW5pY29kZVJhbmdlNCApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIGFjaFZlbmRJRFswXSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIGFjaFZlbmRJRFsxXSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIGFjaFZlbmRJRFsyXSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIGFjaFZlbmRJRFszXSApLAorCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggZnNTZWxlY3Rpb24gKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCB1c0ZpcnN0Q2hhckluZGV4ICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggdXNMYXN0Q2hhckluZGV4ICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggc1R5cG9Bc2NlbmRlciApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHNUeXBvRGVzY2VuZGVyICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggc1R5cG9MaW5lR2FwICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggdXNXaW5Bc2NlbnQgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCB1c1dpbkRlc2NlbnQgKSwKKyAgICAgIEZUX0ZSQU1FX0VORAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgRlRfRnJhbWVfRmllbGQgIG9zMl9maWVsZHNfZXh0cmFbXSA9CisgICAgeworICAgICAgRlRfRlJBTUVfU1RBUlQoIDggKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcoIHVsQ29kZVBhZ2VSYW5nZTEgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcoIHVsQ29kZVBhZ2VSYW5nZTIgKSwKKyAgICAgIEZUX0ZSQU1FX0VORAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgRlRfRnJhbWVfRmllbGQgIG9zMl9maWVsZHNfZXh0cmEyW10gPQorICAgIHsKKyAgICAgIEZUX0ZSQU1FX1NUQVJUKCAxMCApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHN4SGVpZ2h0ICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggc0NhcEhlaWdodCApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIHVzRGVmYXVsdENoYXIgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCB1c0JyZWFrQ2hhciApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIHVzTWF4Q29udGV4dCApLAorICAgICAgRlRfRlJBTUVfRU5ECisgICAgfTsKKworCisgICAgLyogV2Ugbm93IHN1cHBvcnQgb2xkIE1hYyBmb250cyB3aGVyZSB0aGUgT1MvMiB0YWJsZSBkb2Vzbid0ICAqLworICAgIC8qIGV4aXN0LiAgU2ltcGx5IHB1dCwgd2Ugc2V0IHRoZSBgdmVyc2lvbicgZmllbGQgdG8gMHhGRkZGICAgKi8KKyAgICAvKiBhbmQgdGVzdCB0aGlzIHZhbHVlIGVhY2ggdGltZSB3ZSBuZWVkIHRvIGFjY2VzcyB0aGUgdGFibGUuICovCisgICAgZXJyb3IgPSBmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX09TMiwgc3RyZWFtLCAwICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBvczIgPSAmZmFjZS0+b3MyOworCisgICAgaWYgKCBGVF9TVFJFQU1fUkVBRF9GSUVMRFMoIG9zMl9maWVsZHMsIG9zMiApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIG9zMi0+dWxDb2RlUGFnZVJhbmdlMSA9IDA7CisgICAgb3MyLT51bENvZGVQYWdlUmFuZ2UyID0gMDsKKyAgICBvczItPnN4SGVpZ2h0ICAgICAgICAgPSAwOworICAgIG9zMi0+c0NhcEhlaWdodCAgICAgICA9IDA7CisgICAgb3MyLT51c0RlZmF1bHRDaGFyICAgID0gMDsKKyAgICBvczItPnVzQnJlYWtDaGFyICAgICAgPSAwOworICAgIG9zMi0+dXNNYXhDb250ZXh0ICAgICA9IDA7CisKKyAgICBpZiAoIG9zMi0+dmVyc2lvbiA+PSAweDAwMDEgKQorICAgIHsKKyAgICAgIC8qIG9ubHkgdmVyc2lvbiAxIHRhYmxlcyAqLworICAgICAgaWYgKCBGVF9TVFJFQU1fUkVBRF9GSUVMRFMoIG9zMl9maWVsZHNfZXh0cmEsIG9zMiApICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBpZiAoIG9zMi0+dmVyc2lvbiA+PSAweDAwMDIgKQorICAgICAgeworICAgICAgICAvKiBvbmx5IHZlcnNpb24gMiB0YWJsZXMgKi8KKyAgICAgICAgaWYgKCBGVF9TVFJFQU1fUkVBRF9GSUVMRFMoIG9zMl9maWVsZHNfZXh0cmEyLCBvczIgKSApCisgICAgICAgICAgZ290byBFeGl0OworICAgICAgfQorICAgIH0KKworICAgIEZUX1RSQUNFMygoICJzVHlwb0FzY2VuZGVyOiAgJTRkXG4iLCAgIG9zMi0+c1R5cG9Bc2NlbmRlciApKTsKKyAgICBGVF9UUkFDRTMoKCAic1R5cG9EZXNjZW5kZXI6ICU0ZFxuIiwgICBvczItPnNUeXBvRGVzY2VuZGVyICkpOworICAgIEZUX1RSQUNFMygoICJ1c1dpbkFzY2VudDogICAgJTR1XG4iLCAgIG9zMi0+dXNXaW5Bc2NlbnQgKSk7CisgICAgRlRfVFJBQ0UzKCggInVzV2luRGVzY2VudDogICAlNHVcbiIsICAgb3MyLT51c1dpbkRlc2NlbnQgKSk7CisgICAgRlRfVFJBQ0UzKCggImZzU2VsZWN0aW9uOiAgICAweCUyeFxuIiwgb3MyLT5mc1NlbGVjdGlvbiApKTsKKworICBFeGl0OgorICAgICAvKnJldHVybiBlcnJvcjsqLworCXJldHVybiAwOwkvKiBYWVEgMjAwNy0xMS0yMyBXZSBjYW4ndCBqdXN0IHF1aXQgaWYgT1MvMiB0YWJsZSBjYW4ndCBiZSBsb2FkZWQuCisJCQkJVEVTVERPQzogQnVnICMzMTYwIC0gTXlEb2MucGRmICovCisKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9sb2FkX3Bvc3RzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZHMgdGhlIFBvc3RzY3JpcHQgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogQSBoYW5kbGUgdG8gdGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfcG9zdCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgIGVycm9yOworICAgIFRUX1Bvc3RzY3JpcHQqICBwb3N0ID0gJmZhY2UtPnBvc3RzY3JpcHQ7CisKKyAgICBzdGF0aWMgY29uc3QgRlRfRnJhbWVfRmllbGQgIHBvc3RfZmllbGRzW10gPQorICAgIHsKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgVFRfUG9zdHNjcmlwdAorCisgICAgICBGVF9GUkFNRV9TVEFSVCggMzIgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcoIEZvcm1hdFR5cGUgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcoIGl0YWxpY0FuZ2xlICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUKCB1bmRlcmxpbmVQb3NpdGlvbiApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCggdW5kZXJsaW5lVGhpY2tuZXNzICksCisgICAgICAgIEZUX0ZSQU1FX1VMT05HKCBpc0ZpeGVkUGl0Y2ggKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcoIG1pbk1lbVR5cGU0MiApLAorICAgICAgICBGVF9GUkFNRV9VTE9ORyggbWF4TWVtVHlwZTQyICksCisgICAgICAgIEZUX0ZSQU1FX1VMT05HKCBtaW5NZW1UeXBlMSApLAorICAgICAgICBGVF9GUkFNRV9VTE9ORyggbWF4TWVtVHlwZTEgKSwKKyAgICAgIEZUX0ZSQU1FX0VORAorICAgIH07CisKKworICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19wb3N0LCBzdHJlYW0sIDAgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCBwb3N0X2ZpZWxkcywgcG9zdCApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIC8qIHdlIGRvbid0IGxvYWQgdGhlIGdseXBoIG5hbWVzLCB3ZSBkbyB0aGF0IGluIGFub3RoZXIgKi8KKyAgICAvKiBtb2R1bGUgKHR0cG9zdCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICBGVF9UUkFDRTMoKCAiRm9ybWF0VHlwZTogICAweCV4XG4iLCBwb3N0LT5Gb3JtYXRUeXBlICkpOworICAgIEZUX1RSQUNFMygoICJpc0ZpeGVkUGl0Y2g6ICAgJXNcbiIsIHBvc3QtPmlzRml4ZWRQaXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIiAgeWVzIiA6ICIgICBubyIgKSk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9mYWNlX2xvYWRfcGNsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkcyB0aGUgUENMIDUgVGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiBBIGhhbmRsZSB0byB0aGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9wY2x0KCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApCisgIHsKKyAgICBzdGF0aWMgY29uc3QgRlRfRnJhbWVfRmllbGQgIHBjbHRfZmllbGRzW10gPQorICAgIHsKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgVFRfUENMVAorCisgICAgICBGVF9GUkFNRV9TVEFSVCggNTQgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcgKCBWZXJzaW9uICksCisgICAgICAgIEZUX0ZSQU1FX1VMT05HICggRm9udE51bWJlciApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIFBpdGNoICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggeEhlaWdodCApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIFN0eWxlICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggVHlwZUZhbWlseSApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIENhcEhlaWdodCApLAorICAgICAgICBGVF9GUkFNRV9CWVRFUyAoIFR5cGVGYWNlLCAxNiApLAorICAgICAgICBGVF9GUkFNRV9CWVRFUyAoIENoYXJhY3RlckNvbXBsZW1lbnQsIDggKSwKKyAgICAgICAgRlRfRlJBTUVfQllURVMgKCBGaWxlTmFtZSwgNiApLAorICAgICAgICBGVF9GUkFNRV9DSEFSICAoIFN0cm9rZVdlaWdodCApLAorICAgICAgICBGVF9GUkFNRV9DSEFSICAoIFdpZHRoVHlwZSApLAorICAgICAgICBGVF9GUkFNRV9CWVRFICAoIFNlcmlmU3R5bGUgKSwKKyAgICAgICAgRlRfRlJBTUVfQllURSAgKCBSZXNlcnZlZCApLAorICAgICAgRlRfRlJBTUVfRU5ECisgICAgfTsKKworICAgIEZUX0Vycm9yICBlcnJvcjsKKyAgICBUVF9QQ0xUKiAgcGNsdCA9ICZmYWNlLT5wY2x0OworCisKKyAgICAvKiBvcHRpb25hbCB0YWJsZSAqLworICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19QQ0xULCBzdHJlYW0sIDAgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCBwY2x0X2ZpZWxkcywgcGNsdCApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9sb2FkX2dhc3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTG9hZHMgdGhlIGBnYXNwJyB0YWJsZSBpbnRvIGEgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogVGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfZ2FzcCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworCisgICAgRlRfVUludCAgICAgICAgaixudW1fcmFuZ2VzOworICAgIFRUX0dhc3BSYW5nZSAgIGdhc3ByYW5nZXMgPSBOVUxMOworCisKKyAgICAvKiB0aGUgZ2FzcCB0YWJsZSBpcyBvcHRpb25hbCAqLworICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19nYXNwLCBzdHJlYW0sIDAgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGlmICggRlRfRlJBTUVfRU5URVIoIDRMICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgZmFjZS0+Z2FzcC52ZXJzaW9uICAgPSBGVF9HRVRfVVNIT1JUKCk7CisgICAgZmFjZS0+Z2FzcC5udW1SYW5nZXMgPSBGVF9HRVRfVVNIT1JUKCk7CisKKyAgICBGVF9GUkFNRV9FWElUKCk7CisKKyAgICAvKiBvbmx5IHN1cHBvcnQgdmVyc2lvbnMgMCBhbmQgMSBvZiB0aGUgdGFibGUgKi8KKyAgICBpZiAoIGZhY2UtPmdhc3AudmVyc2lvbiA+PSAyICkKKyAgICB7CisgICAgICBmYWNlLT5nYXNwLm51bVJhbmdlcyA9IDA7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgbnVtX3JhbmdlcyA9IGZhY2UtPmdhc3AubnVtUmFuZ2VzOworICAgIEZUX1RSQUNFMygoICJudW1SYW5nZXM6ICV1XG4iLCBudW1fcmFuZ2VzICkpOworCisgICAgaWYgKCBGVF9RTkVXX0FSUkFZKCBmYWNlLT5nYXNwLmdhc3BSYW5nZXMsIG51bV9yYW5nZXMgKSB8fAorICAgICAgICAgRlRfRlJBTUVfRU5URVIoIG51bV9yYW5nZXMgKiA0TCApICAgICAgICAgICAgICAgICAgKQorICAgICAgZ290byBFeGl0OworCisgICAgZ2FzcHJhbmdlcyA9IGZhY2UtPmdhc3AuZ2FzcFJhbmdlczsKKworICAgIGZvciAoIGogPSAwOyBqIDwgbnVtX3JhbmdlczsgaisrICkKKyAgICB7CisgICAgICBnYXNwcmFuZ2VzW2pdLm1heFBQRU0gID0gRlRfR0VUX1VTSE9SVCgpOworICAgICAgZ2FzcHJhbmdlc1tqXS5nYXNwRmxhZyA9IEZUX0dFVF9VU0hPUlQoKTsKKworICAgICAgRlRfVFJBQ0UzKCggImdhc3BSYW5nZSAlZDogcmFuZ2VNYXhQUEVNICU1ZCwgcmFuZ2VHYXNwQmVoYXZpb3IgMHgleFxuIiwKKyAgICAgICAgICAgICAgICAgIGosCisgICAgICAgICAgICAgICAgICBnYXNwcmFuZ2VzW2pdLm1heFBQRU0sCisgICAgICAgICAgICAgICAgICBnYXNwcmFuZ2VzW2pdLmdhc3BGbGFnICkpOworICAgIH0KKworICAgIEZUX0ZSQU1FX0VYSVQoKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0bG9hZC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0bG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwN2JmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRsb2FkLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0bG9hZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBMb2FkIHRoZSBiYXNpYyBUcnVlVHlwZSB0YWJsZXMsIGkuZS4sIHRhYmxlcyB0aGF0IGNhbiBiZSBlaXRoZXIgaW4gICAqLworLyogICAgVFRGIG9yIE9URiBmb250cyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwNSwgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVExPQURfSF9fCisjZGVmaW5lIF9fVFRMT0FEX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfTE9DQUwoIFRUX1RhYmxlICApCisgIHR0X2ZhY2VfbG9va3VwX3RhYmxlKCBUVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICB0YWcgKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2dvdG9fdGFibGUoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgIHRhZywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogIGxlbmd0aCApOworCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX2ZvbnRfZGlyKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKTsKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9hbnkoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICB0YWcsCisgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICBsZW5ndGggKTsKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9oZWFkKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX2NtYXAoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfbWF4cCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKTsKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9uYW1lKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX29zMiggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX3Bvc3QoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfcGNsdCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIHR0X2ZhY2VfZnJlZV9uYW1lKCBUVF9GYWNlICBmYWNlICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfZ2FzcCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKTsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9iaGVkKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UVExPQURfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRtdHguYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dG10eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZTYxZmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRtdHguYwpAQCAtMCwwICsxLDI4NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHRtdHguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIExvYWQgdGhlIG1ldHJpY3MgdGFibGVzIGNvbW1vbiB0byBUVEYgYW5kIE9URiBmb250cyAoYm9keSkuICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA2LTIwMDksIDIwMTEtMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIgorI2luY2x1ZGUgInR0bXR4LmgiCisKKyNpbmNsdWRlICJzZmVycm9ycy5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfdHRtdHgKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2ZhY2VfbG9hZF9obXR4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvYWQgdGhlIGBobXR4JyBvciBgdm10eCcgdGFibGUgaW50byBhIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgOjogVGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2ZXJ0aWNhbCA6OiBBIGJvb2xlYW4gZmxhZy4gIElmIHNldCwgbG9hZCBgdm10eCcuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfaG10eCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgIHZlcnRpY2FsICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfVUxvbmcgICB0YWcsIHRhYmxlX3NpemU7CisgICAgRlRfVUxvbmcqICBwdGFibGVfb2Zmc2V0OworICAgIEZUX1VMb25nKiAgcHRhYmxlX3NpemU7CisKKworICAgIGlmICggdmVydGljYWwgKQorICAgIHsKKyAgICAgIHRhZyAgICAgICAgICAgPSBUVEFHX3ZtdHg7CisgICAgICBwdGFibGVfb2Zmc2V0ID0gJmZhY2UtPnZlcnRfbWV0cmljc19vZmZzZXQ7CisgICAgICBwdGFibGVfc2l6ZSAgID0gJmZhY2UtPnZlcnRfbWV0cmljc19zaXplOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgdGFnICAgICAgICAgICA9IFRUQUdfaG10eDsKKyAgICAgIHB0YWJsZV9vZmZzZXQgPSAmZmFjZS0+aG9yel9tZXRyaWNzX29mZnNldDsKKyAgICAgIHB0YWJsZV9zaXplICAgPSAmZmFjZS0+aG9yel9tZXRyaWNzX3NpemU7CisgICAgfQorCisgICAgZXJyb3IgPSBmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCB0YWcsIHN0cmVhbSwgJnRhYmxlX3NpemUgKTsKKyNpZiAwCisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEZhaWw7CisKKyAgICAqcHRhYmxlX3NpemUgICA9IHRhYmxlX3NpemU7CisgICAgKnB0YWJsZV9vZmZzZXQgPSBGVF9TVFJFQU1fUE9TKCk7CisKKyAgRmFpbDoKKyAgICByZXR1cm4gZXJyb3I7CisjZWxzZQorCSpwdGFibGVfc2l6ZSAgID0gIGVycm9yID8gMCA6IHRhYmxlX3NpemU7CisJKnB0YWJsZV9vZmZzZXQgPSBGVF9TVFJFQU1fUE9TKCk7CisKKwlyZXR1cm4gMDsKKyNlbmRpZgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9mYWNlX2xvYWRfaGhlYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkIHRoZSBgaGhlYScgb3IgJ3ZoZWEnIHRhYmxlIGludG8gYSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSAgIDo6IFRoZSBpbnB1dCBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdmVydGljYWwgOjogQSBib29sZWFuIGZsYWcuICBJZiBzZXQsIGxvYWQgYHZoZWEnLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX2hoZWEoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICB2ZXJ0aWNhbCApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3I7CisgICAgVFRfSG9yaUhlYWRlciogIGhlYWRlcjsKKworICAgIHN0YXRpYyBjb25zdCBGVF9GcmFtZV9GaWVsZCAgbWV0cmljc19oZWFkZXJfZmllbGRzW10gPQorICAgIHsKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgVFRfSG9yaUhlYWRlcgorCisgICAgICBGVF9GUkFNRV9TVEFSVCggMzYgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcgKCBWZXJzaW9uICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggQXNjZW5kZXIgKSwKKyAgICAgICAgRlRfRlJBTUVfU0hPUlQgKCBEZXNjZW5kZXIgKSwKKyAgICAgICAgRlRfRlJBTUVfU0hPUlQgKCBMaW5lX0dhcCApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIGFkdmFuY2VfV2lkdGhfTWF4ICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggbWluX0xlZnRfU2lkZV9CZWFyaW5nICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggbWluX1JpZ2h0X1NpZGVfQmVhcmluZyApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIHhNYXhfRXh0ZW50ICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggY2FyZXRfU2xvcGVfUmlzZSApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIGNhcmV0X1Nsb3BlX1J1biApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIGNhcmV0X09mZnNldCApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIFJlc2VydmVkWzBdICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggUmVzZXJ2ZWRbMV0gKSwKKyAgICAgICAgRlRfRlJBTUVfU0hPUlQgKCBSZXNlcnZlZFsyXSApLAorICAgICAgICBGVF9GUkFNRV9TSE9SVCAoIFJlc2VydmVkWzNdICksCisgICAgICAgIEZUX0ZSQU1FX1NIT1JUICggbWV0cmljX0RhdGFfRm9ybWF0ICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggbnVtYmVyX09mX0hNZXRyaWNzICksCisgICAgICBGVF9GUkFNRV9FTkQKKyAgICB9OworCisKKyAgICBpZiAoIHZlcnRpY2FsICkKKyAgICB7CisgICAgICB2b2lkICAqdiA9ICZmYWNlLT52ZXJ0aWNhbDsKKworCisgICAgICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfdmhlYSwgc3RyZWFtLCAwICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBoZWFkZXIgPSAoVFRfSG9yaUhlYWRlciopdjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19oaGVhLCBzdHJlYW0sIDAgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgIGhlYWRlciA9ICZmYWNlLT5ob3Jpem9udGFsOworICAgIH0KKworICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCBtZXRyaWNzX2hlYWRlcl9maWVsZHMsIGhlYWRlciApICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIEZUX1RSQUNFMygoICJBc2NlbmRlcjogICAgICAgICAgJTVkXG4iLCBoZWFkZXItPkFzY2VuZGVyICkpOworICAgIEZUX1RSQUNFMygoICJEZXNjZW5kZXI6ICAgICAgICAgJTVkXG4iLCBoZWFkZXItPkRlc2NlbmRlciApKTsKKyAgICBGVF9UUkFDRTMoKCAibnVtYmVyX09mX01ldHJpY3M6ICU1dVxuIiwgaGVhZGVyLT5udW1iZXJfT2ZfSE1ldHJpY3MgKSk7CisKKyAgICBoZWFkZXItPmxvbmdfbWV0cmljcyAgPSBOVUxMOworICAgIGhlYWRlci0+c2hvcnRfbWV0cmljcyA9IE5VTEw7CisKKyAgRmFpbDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2ZhY2VfZ2V0X21ldHJpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybnMgdGhlIGhvcml6b250YWwgb3IgdmVydGljYWwgbWV0cmljcyBpbiBmb250IHVuaXRzIGZvciBhICAgICAqLworICAvKiAgICBnaXZlbiBnbHlwaC4gIFRoZSBtZXRyaWNzIGFyZSB0aGUgbGVmdCBzaWRlIGJlYXJpbmcgKHJlc3AuIHRvcCAgICAgKi8KKyAgLyogICAgc2lkZSBiZWFyaW5nKSBhbmQgYWR2YW5jZSB3aWR0aCAocmVzcC4gYWR2YW5jZSBoZWlnaHQpLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaGVhZGVyICA6OiBBIHBvaW50ZXIgdG8gZWl0aGVyIHRoZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsIG1ldHJpY3MgICovCisgIC8qICAgICAgICAgICAgICAgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaWR4ICAgICA6OiBUaGUgZ2x5cGggaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmVhcmluZyA6OiBUaGUgYmVhcmluZywgZWl0aGVyIGxlZnQgc2lkZSBvciB0b3Agc2lkZS4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhZHZhbmNlIDo6IFRoZSBhZHZhbmNlIHdpZHRoIHJlc3AuIGFkdmFuY2UgaGVpZ2h0LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2dldF9tZXRyaWNzKCBUVF9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICB2ZXJ0aWNhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9TaG9ydCAgICphYmVhcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0ICAqYWFkdmFuY2UgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgIGVycm9yOworICAgIEZUX1N0cmVhbSAgICAgICBzdHJlYW0gPSBmYWNlLT5yb290LnN0cmVhbTsKKyAgICBUVF9Ib3JpSGVhZGVyKiAgaGVhZGVyOworICAgIEZUX1VMb25nICAgICAgICB0YWJsZV9wb3MsIHRhYmxlX3NpemUsIHRhYmxlX2VuZDsKKyAgICBGVF9VU2hvcnQgICAgICAgazsKKworCisgICAgaWYgKCB2ZXJ0aWNhbCApCisgICAgeworICAgICAgdm9pZCogIHYgPSAmZmFjZS0+dmVydGljYWw7CisKKworICAgICAgaGVhZGVyICAgICA9IChUVF9Ib3JpSGVhZGVyKil2OworICAgICAgdGFibGVfcG9zICA9IGZhY2UtPnZlcnRfbWV0cmljc19vZmZzZXQ7CisgICAgICB0YWJsZV9zaXplID0gZmFjZS0+dmVydF9tZXRyaWNzX3NpemU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBoZWFkZXIgICAgID0gJmZhY2UtPmhvcml6b250YWw7CisgICAgICB0YWJsZV9wb3MgID0gZmFjZS0+aG9yel9tZXRyaWNzX29mZnNldDsKKyAgICAgIHRhYmxlX3NpemUgPSBmYWNlLT5ob3J6X21ldHJpY3Nfc2l6ZTsKKyAgICB9CisKKyAgICB0YWJsZV9lbmQgPSB0YWJsZV9wb3MgKyB0YWJsZV9zaXplOworCisgICAgayA9IGhlYWRlci0+bnVtYmVyX09mX0hNZXRyaWNzOworCisgICAgaWYgKCBrID4gMCApCisgICAgeworICAgICAgaWYgKCBnaW5kZXggPCAoRlRfVUludClrICkKKyAgICAgIHsKKyAgICAgICAgdGFibGVfcG9zICs9IDQgKiBnaW5kZXg7CisgICAgICAgIGlmICggdGFibGVfcG9zICsgNCA+IHRhYmxlX2VuZCApCisgICAgICAgICAgZ290byBOb0RhdGE7CisKKyAgICAgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggdGFibGVfcG9zICkgfHwKKyAgICAgICAgICAgICBGVF9SRUFEX1VTSE9SVCggKmFhZHZhbmNlICkgfHwKKyAgICAgICAgICAgICBGVF9SRUFEX1NIT1JUKCAqYWJlYXJpbmcgKSAgKQorICAgICAgICAgIGdvdG8gTm9EYXRhOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICB0YWJsZV9wb3MgKz0gNCAqICggayAtIDEgKTsKKyAgICAgICAgaWYgKCB0YWJsZV9wb3MgKyA0ID4gdGFibGVfZW5kICkKKyAgICAgICAgICBnb3RvIE5vRGF0YTsKKworICAgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCB0YWJsZV9wb3MgKSB8fAorICAgICAgICAgICAgIEZUX1JFQURfVVNIT1JUKCAqYWFkdmFuY2UgKSApCisgICAgICAgICAgZ290byBOb0RhdGE7CisKKyAgICAgICAgdGFibGVfcG9zICs9IDQgKyAyICogKCBnaW5kZXggLSBrICk7CisgICAgICAgIGlmICggdGFibGVfcG9zICsgMiA+IHRhYmxlX2VuZCApCisgICAgICAgICAgKmFiZWFyaW5nID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgaWYgKCAhRlRfU1RSRUFNX1NFRUsoIHRhYmxlX3BvcyApICkKKyAgICAgICAgICAgICh2b2lkKUZUX1JFQURfU0hPUlQoICphYmVhcmluZyApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgTm9EYXRhOgorICAgICAgKmFiZWFyaW5nID0gMDsKKyAgICAgICphYWR2YW5jZSA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0bXR4LmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRtdHguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGMwZjA2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0bXR4LmgKQEAgLTAsMCArMSw1NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHRtdHguaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIExvYWQgdGhlIG1ldHJpY3MgdGFibGVzIGNvbW1vbiB0byBUVEYgYW5kIE9URiBmb250cyAoc3BlY2lmaWNhdGlvbikuICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA2IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVFRNVFhfSF9fCisjZGVmaW5lIF9fVFRNVFhfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfaGhlYSggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgIHZlcnRpY2FsICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfaG10eCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgIHZlcnRpY2FsICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2dldF9tZXRyaWNzKCBUVF9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICB2ZXJ0aWNhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9TaG9ydCogICBhYmVhcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0KiAgYWFkdmFuY2UgKTsKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UVE1UWF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dHBvc3QuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dHBvc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzY4OGYyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0cG9zdC5jCkBAIC0wLDAgKzEsNTYzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dHBvc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgUG9zdGNyaXB0IG5hbWUgdGFibGUgcHJvY2Vzc2luZyBmb3IgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlIGZvbnRzICAgICAgKi8KKy8qICAgIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDMsIDIwMDYtMjAxMCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBwb3N0IHRhYmxlIGlzIG5vdCBjb21wbGV0ZWx5IGxvYWRlZCBieSB0aGUgY29yZSBlbmdpbmUuICBUaGlzICAgICAqLworICAvKiBmaWxlIGxvYWRzIHRoZSBtaXNzaW5nIFBTIGdseXBoIG5hbWVzIGFuZCBpbXBsZW1lbnRzIGFuIEFQSSB0byBhY2Nlc3MgKi8KKyAgLyogdGhlbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIgorI2luY2x1ZGUgInR0cG9zdC5oIgorCisjaW5jbHVkZSAic2ZlcnJvcnMuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX3R0cG9zdAorCisKKyAgLyogSWYgdGhpcyBjb25maWd1cmF0aW9uIG1hY3JvIGlzIGRlZmluZWQsIHdlIHJlbHkgb24gdGhlIGBQU05hbWVzJyAqLworICAvKiBtb2R1bGUgdG8gZ3JhYiB0aGUgZ2x5cGggbmFtZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMKKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzY21hcC5oIgorCisjZGVmaW5lIE1BQ19OQU1FKCB4ICkgICggKEZUX1N0cmluZyopcHNuYW1lcy0+bWFjaW50b3NoX25hbWUoIHggKSApCisKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTICovCisKKworICAgLyogT3RoZXJ3aXNlLCB3ZSBpZ25vcmUgdGhlIGBQU05hbWVzJyBtb2R1bGUsIGFuZCBwcm92aWRlIG91ciBvd24gICovCisgICAvKiB0YWJsZSBvZiBNYWMgbmFtZXMuICBUaHVzLCBpdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIHZlcnNpb24gb2YgKi8KKyAgIC8qIEZyZWVUeXBlIHdpdGhvdXQgdGhlIFR5cGUgMSBkcml2ZXIgJiBQU05hbWVzIG1vZHVsZS4gICAgICAgICAgICAqLworCisjZGVmaW5lIE1BQ19OQU1FKCB4ICkgICggKEZUX1N0cmluZyopdHRfcG9zdF9kZWZhdWx0X25hbWVzW3hdICkKKworICAvKiB0aGUgMjU4IGRlZmF1bHQgTWFjIFBTIGdseXBoIG5hbWVzICovCisKKyAgc3RhdGljIGNvbnN0IEZUX1N0cmluZyogY29uc3QgIHR0X3Bvc3RfZGVmYXVsdF9uYW1lc1syNThdID0KKyAgeworICAgIC8qICAgMCAqLworICAgICIubm90ZGVmIiwgIi5udWxsIiwgIkNSIiwgInNwYWNlIiwgImV4Y2xhbSIsCisgICAgInF1b3RlZGJsIiwgIm51bWJlcnNpZ24iLCAiZG9sbGFyIiwgInBlcmNlbnQiLCAiYW1wZXJzYW5kIiwKKyAgICAvKiAgMTAgKi8KKyAgICAicXVvdGVzaW5nbGUiLCAicGFyZW5sZWZ0IiwgInBhcmVucmlnaHQiLCAiYXN0ZXJpc2siLCAicGx1cyIsCisgICAgImNvbW1hIiwgImh5cGhlbiIsICJwZXJpb2QiLCAic2xhc2giLCAiemVybyIsCisgICAgLyogIDIwICovCisgICAgIm9uZSIsICJ0d28iLCAidGhyZWUiLCAiZm91ciIsICJmaXZlIiwKKyAgICAic2l4IiwgInNldmVuIiwgImVpZ2h0IiwgIm5pbmUiLCAiY29sb24iLAorICAgIC8qICAzMCAqLworICAgICJzZW1pY29sb24iLCAibGVzcyIsICJlcXVhbCIsICJncmVhdGVyIiwgInF1ZXN0aW9uIiwKKyAgICAiYXQiLCAiQSIsICJCIiwgIkMiLCAiRCIsCisgICAgLyogIDQwICovCisgICAgIkUiLCAiRiIsICJHIiwgIkgiLCAiSSIsCisgICAgIkoiLCAiSyIsICJMIiwgIk0iLCAiTiIsCisgICAgLyogIDUwICovCisgICAgIk8iLCAiUCIsICJRIiwgIlIiLCAiUyIsCisgICAgIlQiLCAiVSIsICJWIiwgIlciLCAiWCIsCisgICAgLyogIDYwICovCisgICAgIlkiLCAiWiIsICJicmFja2V0bGVmdCIsICJiYWNrc2xhc2giLCAiYnJhY2tldHJpZ2h0IiwKKyAgICAiYXNjaWljaXJjdW0iLCAidW5kZXJzY29yZSIsICJncmF2ZSIsICJhIiwgImIiLAorICAgIC8qICA3MCAqLworICAgICJjIiwgImQiLCAiZSIsICJmIiwgImciLAorICAgICJoIiwgImkiLCAiaiIsICJrIiwgImwiLAorICAgIC8qICA4MCAqLworICAgICJtIiwgIm4iLCAibyIsICJwIiwgInEiLAorICAgICJyIiwgInMiLCAidCIsICJ1IiwgInYiLAorICAgIC8qICA5MCAqLworICAgICJ3IiwgIngiLCAieSIsICJ6IiwgImJyYWNlbGVmdCIsCisgICAgImJhciIsICJicmFjZXJpZ2h0IiwgImFzY2lpdGlsZGUiLCAiQWRpZXJlc2lzIiwgIkFyaW5nIiwKKyAgICAvKiAxMDAgKi8KKyAgICAiQ2NlZGlsbGEiLCAiRWFjdXRlIiwgIk50aWxkZSIsICJPZGllcmVzaXMiLCAiVWRpZXJlc2lzIiwKKyAgICAiYWFjdXRlIiwgImFncmF2ZSIsICJhY2lyY3VtZmxleCIsICJhZGllcmVzaXMiLCAiYXRpbGRlIiwKKyAgICAvKiAxMTAgKi8KKyAgICAiYXJpbmciLCAiY2NlZGlsbGEiLCAiZWFjdXRlIiwgImVncmF2ZSIsICJlY2lyY3VtZmxleCIsCisgICAgImVkaWVyZXNpcyIsICJpYWN1dGUiLCAiaWdyYXZlIiwgImljaXJjdW1mbGV4IiwgImlkaWVyZXNpcyIsCisgICAgLyogMTIwICovCisgICAgIm50aWxkZSIsICJvYWN1dGUiLCAib2dyYXZlIiwgIm9jaXJjdW1mbGV4IiwgIm9kaWVyZXNpcyIsCisgICAgIm90aWxkZSIsICJ1YWN1dGUiLCAidWdyYXZlIiwgInVjaXJjdW1mbGV4IiwgInVkaWVyZXNpcyIsCisgICAgLyogMTMwICovCisgICAgImRhZ2dlciIsICJkZWdyZWUiLCAiY2VudCIsICJzdGVybGluZyIsICJzZWN0aW9uIiwKKyAgICAiYnVsbGV0IiwgInBhcmFncmFwaCIsICJnZXJtYW5kYmxzIiwgInJlZ2lzdGVyZWQiLCAiY29weXJpZ2h0IiwKKyAgICAvKiAxNDAgKi8KKyAgICAidHJhZGVtYXJrIiwgImFjdXRlIiwgImRpZXJlc2lzIiwgIm5vdGVxdWFsIiwgIkFFIiwKKyAgICAiT3NsYXNoIiwgImluZmluaXR5IiwgInBsdXNtaW51cyIsICJsZXNzZXF1YWwiLCAiZ3JlYXRlcmVxdWFsIiwKKyAgICAvKiAxNTAgKi8KKyAgICAieWVuIiwgIm11IiwgInBhcnRpYWxkaWZmIiwgInN1bW1hdGlvbiIsICJwcm9kdWN0IiwKKyAgICAicGkiLCAiaW50ZWdyYWwiLCAib3JkZmVtaW5pbmUiLCAib3JkbWFzY3VsaW5lIiwgIk9tZWdhIiwKKyAgICAvKiAxNjAgKi8KKyAgICAiYWUiLCAib3NsYXNoIiwgInF1ZXN0aW9uZG93biIsICJleGNsYW1kb3duIiwgImxvZ2ljYWxub3QiLAorICAgICJyYWRpY2FsIiwgImZsb3JpbiIsICJhcHByb3hlcXVhbCIsICJEZWx0YSIsICJndWlsbGVtb3RsZWZ0IiwKKyAgICAvKiAxNzAgKi8KKyAgICAiZ3VpbGxlbW90cmlnaHQiLCAiZWxsaXBzaXMiLCAibmJzcGFjZSIsICJBZ3JhdmUiLCAiQXRpbGRlIiwKKyAgICAiT3RpbGRlIiwgIk9FIiwgIm9lIiwgImVuZGFzaCIsICJlbWRhc2giLAorICAgIC8qIDE4MCAqLworICAgICJxdW90ZWRibGxlZnQiLCAicXVvdGVkYmxyaWdodCIsICJxdW90ZWxlZnQiLCAicXVvdGVyaWdodCIsICJkaXZpZGUiLAorICAgICJsb3plbmdlIiwgInlkaWVyZXNpcyIsICJZZGllcmVzaXMiLCAiZnJhY3Rpb24iLCAiY3VycmVuY3kiLAorICAgIC8qIDE5MCAqLworICAgICJndWlsc2luZ2xsZWZ0IiwgImd1aWxzaW5nbHJpZ2h0IiwgImZpIiwgImZsIiwgImRhZ2dlcmRibCIsCisgICAgInBlcmlvZGNlbnRlcmVkIiwgInF1b3Rlc2luZ2xiYXNlIiwgInF1b3RlZGJsYmFzZSIsICJwZXJ0aG91c2FuZCIsICJBY2lyY3VtZmxleCIsCisgICAgLyogMjAwICovCisgICAgIkVjaXJjdW1mbGV4IiwgIkFhY3V0ZSIsICJFZGllcmVzaXMiLCAiRWdyYXZlIiwgIklhY3V0ZSIsCisgICAgIkljaXJjdW1mbGV4IiwgIklkaWVyZXNpcyIsICJJZ3JhdmUiLCAiT2FjdXRlIiwgIk9jaXJjdW1mbGV4IiwKKyAgICAvKiAyMTAgKi8KKyAgICAiYXBwbGUiLCAiT2dyYXZlIiwgIlVhY3V0ZSIsICJVY2lyY3VtZmxleCIsICJVZ3JhdmUiLAorICAgICJkb3RsZXNzaSIsICJjaXJjdW1mbGV4IiwgInRpbGRlIiwgIm1hY3JvbiIsICJicmV2ZSIsCisgICAgLyogMjIwICovCisgICAgImRvdGFjY2VudCIsICJyaW5nIiwgImNlZGlsbGEiLCAiaHVuZ2FydW1sYXV0IiwgIm9nb25layIsCisgICAgImNhcm9uIiwgIkxzbGFzaCIsICJsc2xhc2giLCAiU2Nhcm9uIiwgInNjYXJvbiIsCisgICAgLyogMjMwICovCisgICAgIlpjYXJvbiIsICJ6Y2Fyb24iLCAiYnJva2VuYmFyIiwgIkV0aCIsICJldGgiLAorICAgICJZYWN1dGUiLCAieWFjdXRlIiwgIlRob3JuIiwgInRob3JuIiwgIm1pbnVzIiwKKyAgICAvKiAyNDAgKi8KKyAgICAibXVsdGlwbHkiLCAib25lc3VwZXJpb3IiLCAidHdvc3VwZXJpb3IiLCAidGhyZWVzdXBlcmlvciIsICJvbmVoYWxmIiwKKyAgICAib25lcXVhcnRlciIsICJ0aHJlZXF1YXJ0ZXJzIiwgImZyYW5jIiwgIkdicmV2ZSIsICJnYnJldmUiLAorICAgIC8qIDI1MCAqLworICAgICJJZG90IiwgIlNjZWRpbGxhIiwgInNjZWRpbGxhIiwgIkNhY3V0ZSIsICJjYWN1dGUiLAorICAgICJDY2Fyb24iLCAiY2Nhcm9uIiwgImRtYWNyb24iLAorICB9OworCisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMgKi8KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBsb2FkX2Zvcm1hdF8yMCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIHBvc3RfbGltaXQgKQorICB7CisgICAgRlRfTWVtb3J5ICAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisgICAgRlRfRXJyb3IgICAgZXJyb3I7CisKKyAgICBGVF9JbnQgICAgICBudW1fZ2x5cGhzOworICAgIEZUX1VTaG9ydCAgIG51bV9uYW1lczsKKworICAgIEZUX1VTaG9ydCogIGdseXBoX2luZGljZXMgPSAwOworICAgIEZUX0NoYXIqKiAgIG5hbWVfc3RyaW5ncyAgPSAwOworCisKKyAgICBpZiAoIEZUX1JFQURfVVNIT1JUKCBudW1fZ2x5cGhzICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogVU5ET0NVTUVOVEVEISAgVGhlIG51bWJlciBvZiBnbHlwaHMgaW4gdGhpcyB0YWJsZSBjYW4gYmUgc21hbGxlciAqLworICAgIC8qIHRoYW4gdGhlIHZhbHVlIGluIHRoZSBtYXhwIHRhYmxlIChjZi4gY3liZXJiaXQudHRmKS4gICAgICAgICAgICAgKi8KKworICAgIC8qIFRoZXJlIGFscmVhZHkgZXhpc3QgZm9udHMgd2hpY2ggaGF2ZSBtb3JlIHRoYW4gMzI3NjggZ2x5cGggbmFtZXMgKi8KKyAgICAvKiBpbiB0aGlzIHRhYmxlLCBzbyB0aGUgdGVzdCBmb3IgdGhpcyB0aHJlc2hvbGQgaGFzIGJlZW4gZHJvcHBlZC4gICovCisKKyAgICBpZiAoIG51bV9nbHlwaHMgPiBmYWNlLT5tYXhfcHJvZmlsZS5udW1HbHlwaHMgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICAvKiBsb2FkIHRoZSBpbmRpY2VzICovCisgICAgeworICAgICAgRlRfSW50ICBuOworCisKKyAgICAgIGlmICggRlRfTkVXX0FSUkFZICggZ2x5cGhfaW5kaWNlcywgbnVtX2dseXBocyApIHx8CisgICAgICAgICAgIEZUX0ZSQU1FX0VOVEVSKCBudW1fZ2x5cGhzICogMkwgKSAgICAgICAgICApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBudW1fZ2x5cGhzOyBuKysgKQorICAgICAgICBnbHlwaF9pbmRpY2VzW25dID0gRlRfR0VUX1VTSE9SVCgpOworCisgICAgICBGVF9GUkFNRV9FWElUKCk7CisgICAgfQorCisgICAgLyogY29tcHV0ZSBudW1iZXIgb2YgbmFtZXMgc3RvcmVkIGluIHRhYmxlICovCisgICAgeworICAgICAgRlRfSW50ICBuOworCisKKyAgICAgIG51bV9uYW1lcyA9IDA7CisKKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgbnVtX2dseXBoczsgbisrICkKKyAgICAgIHsKKyAgICAgICAgRlRfSW50ICBpZHg7CisKKworICAgICAgICBpZHggPSBnbHlwaF9pbmRpY2VzW25dOworICAgICAgICBpZiAoIGlkeCA+PSAyNTggKQorICAgICAgICB7CisgICAgICAgICAgaWR4IC09IDI1NzsKKyAgICAgICAgICBpZiAoIGlkeCA+IG51bV9uYW1lcyApCisgICAgICAgICAgICBudW1fbmFtZXMgPSAoRlRfVVNob3J0KWlkeDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8qIG5vdyBsb2FkIHRoZSBuYW1lIHN0cmluZ3MgKi8KKyAgICB7CisgICAgICBGVF9VU2hvcnQgIG47CisKKworICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIG5hbWVfc3RyaW5ncywgbnVtX25hbWVzICkgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgbnVtX25hbWVzOyBuKysgKQorICAgICAgeworICAgICAgICBGVF9VSW50ICBsZW47CisKKworICAgICAgICBpZiAoIEZUX1NUUkVBTV9QT1MoKSA+PSBwb3N0X2xpbWl0ICkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgRlRfVFJBQ0U2KCggImxvYWRfZm9ybWF0XzIwOiAlZCBieXRlIGxlZnQgaW4gcG9zdCB0YWJsZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICBwb3N0X2xpbWl0IC0gRlRfU1RSRUFNX1BPUygpICkpOworCisgICAgICAgICAgaWYgKCBGVF9SRUFEX0JZVEUoIGxlbiApICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIChGVF9JbnQpbGVuID4gcG9zdF9saW1pdCAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgIEZUX1NUUkVBTV9QT1MoKSA+IHBvc3RfbGltaXQgLSAoRlRfSW50KWxlbiApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9FUlJPUigoICJsb2FkX2Zvcm1hdF8yMDoiCisgICAgICAgICAgICAgICAgICAgICAiIGV4Y2VlZGluZyBzdHJpbmcgbGVuZ3RoICglZCksIgorICAgICAgICAgICAgICAgICAgICAgIiB0cnVuY2F0aW5nIGF0IGVuZCBvZiBwb3N0IHRhYmxlICglZCBieXRlIGxlZnQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgbGVuLCBwb3N0X2xpbWl0IC0gRlRfU1RSRUFNX1BPUygpICkpOworICAgICAgICAgIGxlbiA9IEZUX01BWCggMCwgcG9zdF9saW1pdCAtIEZUX1NUUkVBTV9QT1MoKSApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIG5hbWVfc3RyaW5nc1tuXSwgbGVuICsgMSApIHx8CisgICAgICAgICAgICAgRlRfU1RSRUFNX1JFQUQoIG5hbWVfc3RyaW5nc1tuXSwgbGVuICAgKSApCisgICAgICAgICAgZ290byBGYWlsMTsKKworICAgICAgICBuYW1lX3N0cmluZ3Nbbl1bbGVuXSA9ICdcMCc7CisgICAgICB9CisKKyAgICAgIGlmICggbiA8IG51bV9uYW1lcyApCisgICAgICB7CisgICAgICAgIEZUX0VSUk9SKCggImxvYWRfZm9ybWF0XzIwOiIKKyAgICAgICAgICAgICAgICAgICAiIGFsbCBlbnRyaWVzIGluIHBvc3QgdGFibGUgYXJlIGFscmVhZHkgcGFyc2VkLCIKKyAgICAgICAgICAgICAgICAgICAiIHVzaW5nIE5VTEwgbmFtZXMgZm9yIGdpZCAlZCAtICVkXG4iLAorICAgICAgICAgICAgICAgICAgICBuLCBudW1fbmFtZXMgLSAxICkpOworICAgICAgICBmb3IgKCA7IG4gPCBudW1fbmFtZXM7IG4rKyApCisgICAgICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIG5hbWVfc3RyaW5nc1tuXSwgMSApICkKKyAgICAgICAgICAgIGdvdG8gRmFpbDE7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbmFtZV9zdHJpbmdzW25dWzBdID0gJ1wwJzsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBhbGwgcmlnaHQsIHNldCB0YWJsZSBmaWVsZHMgYW5kIGV4aXQgc3VjY2Vzc2Z1bGx5ICovCisgICAgeworICAgICAgVFRfUG9zdF8yMCAgdGFibGUgPSAmZmFjZS0+cG9zdHNjcmlwdF9uYW1lcy5uYW1lcy5mb3JtYXRfMjA7CisKKworICAgICAgdGFibGUtPm51bV9nbHlwaHMgICAgPSAoRlRfVVNob3J0KW51bV9nbHlwaHM7CisgICAgICB0YWJsZS0+bnVtX25hbWVzICAgICA9IChGVF9VU2hvcnQpbnVtX25hbWVzOworICAgICAgdGFibGUtPmdseXBoX2luZGljZXMgPSBnbHlwaF9pbmRpY2VzOworICAgICAgdGFibGUtPmdseXBoX25hbWVzICAgPSBuYW1lX3N0cmluZ3M7CisgICAgfQorICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgRmFpbDE6CisgICAgeworICAgICAgRlRfVVNob3J0ICBuOworCisKKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgbnVtX25hbWVzOyBuKysgKQorICAgICAgICBGVF9GUkVFKCBuYW1lX3N0cmluZ3Nbbl0gKTsKKyAgICB9CisKKyAgRmFpbDoKKyAgICBGVF9GUkVFKCBuYW1lX3N0cmluZ3MgKTsKKyAgICBGVF9GUkVFKCBnbHlwaF9pbmRpY2VzICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICBsb2FkX2Zvcm1hdF8yNSggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgIHBvc3RfbGltaXQgKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKyAgICBGVF9FcnJvciAgIGVycm9yOworCisgICAgRlRfSW50ICAgICBudW1fZ2x5cGhzOworICAgIEZUX0NoYXIqICAgb2Zmc2V0X3RhYmxlID0gMDsKKworICAgIEZUX1VOVVNFRCggcG9zdF9saW1pdCApOworCisKKyAgICAvKiBVTkRPQ1VNRU5URUQhICBUaGlzIHZhbHVlIGFwcGVhcnMgb25seSBpbiB0aGUgQXBwbGUgVFQgc3BlY3MuICovCisgICAgaWYgKCBGVF9SRUFEX1VTSE9SVCggbnVtX2dseXBocyApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIGNoZWNrIHRoZSBudW1iZXIgb2YgZ2x5cGhzICovCisgICAgaWYgKCBudW1fZ2x5cGhzID4gZmFjZS0+bWF4X3Byb2ZpbGUubnVtR2x5cGhzIHx8IG51bV9nbHlwaHMgPiAyNTggKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoIEZUX05FV19BUlJBWSggb2Zmc2V0X3RhYmxlLCBudW1fZ2x5cGhzICkgICB8fAorICAgICAgICAgRlRfU1RSRUFNX1JFQUQoIG9mZnNldF90YWJsZSwgbnVtX2dseXBocyApICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIC8qIG5vdyBjaGVjayB0aGUgb2Zmc2V0IHRhYmxlICovCisgICAgeworICAgICAgRlRfSW50ICBuOworCisKKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgbnVtX2dseXBoczsgbisrICkKKyAgICAgIHsKKyAgICAgICAgRlRfTG9uZyAgaWR4ID0gKEZUX0xvbmcpbiArIG9mZnNldF90YWJsZVtuXTsKKworCisgICAgICAgIGlmICggaWR4IDwgMCB8fCBpZHggPiBudW1fZ2x5cGhzICkKKyAgICAgICAgeworICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBPSywgc2V0IHRhYmxlIGZpZWxkcyBhbmQgZXhpdCBzdWNjZXNzZnVsbHkgKi8KKyAgICB7CisgICAgICBUVF9Qb3N0XzI1ICB0YWJsZSA9ICZmYWNlLT5wb3N0c2NyaXB0X25hbWVzLm5hbWVzLmZvcm1hdF8yNTsKKworCisgICAgICB0YWJsZS0+bnVtX2dseXBocyA9IChGVF9VU2hvcnQpbnVtX2dseXBoczsKKyAgICAgIHRhYmxlLT5vZmZzZXRzICAgID0gb2Zmc2V0X3RhYmxlOworICAgIH0KKworICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgRmFpbDoKKyAgICBGVF9GUkVFKCBvZmZzZXRfdGFibGUgKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGxvYWRfcG9zdF9uYW1lcyggVFRfRmFjZSAgZmFjZSApCisgIHsKKyAgICBGVF9TdHJlYW0gIHN0cmVhbTsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX0ZpeGVkICAgZm9ybWF0OworICAgIEZUX1VMb25nICAgcG9zdF9sZW47CisgICAgRlRfTG9uZyAgICBwb3N0X2xpbWl0OworCisKKyAgICAvKiBnZXQgYSBzdHJlYW0gZm9yIHRoZSBmYWNlJ3MgcmVzb3VyY2UgKi8KKyAgICBzdHJlYW0gPSBmYWNlLT5yb290LnN0cmVhbTsKKworICAgIC8qIHNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgUFMgbmFtZXMgdGFibGUgKi8KKyAgICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfcG9zdCwgc3RyZWFtLCAmcG9zdF9sZW4gKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIHBvc3RfbGltaXQgPSBGVF9TVFJFQU1fUE9TKCkgKyBwb3N0X2xlbjsKKworICAgIGZvcm1hdCA9IGZhY2UtPnBvc3RzY3JpcHQuRm9ybWF0VHlwZTsKKworICAgIC8qIGdvIHRvIGJlZ2lubmluZyBvZiBzdWJ0YWJsZSAqLworICAgIGlmICggRlRfU1RSRUFNX1NLSVAoIDMyICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogbm93IHJlYWQgcG9zdHNjcmlwdCB0YWJsZSAqLworICAgIGlmICggZm9ybWF0ID09IDB4MDAwMjAwMDBMICkKKyAgICAgIGVycm9yID0gbG9hZF9mb3JtYXRfMjAoIGZhY2UsIHN0cmVhbSwgcG9zdF9saW1pdCApOworICAgIGVsc2UgaWYgKCBmb3JtYXQgPT0gMHgwMDAyODAwMEwgKQorICAgICAgZXJyb3IgPSBsb2FkX2Zvcm1hdF8yNSggZmFjZSwgc3RyZWFtLCBwb3N0X2xpbWl0ICk7CisgICAgZWxzZQorICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworCisgICAgZmFjZS0+cG9zdHNjcmlwdF9uYW1lcy5sb2FkZWQgPSAxOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICB0dF9mYWNlX2ZyZWVfcHNfbmFtZXMoIFRUX0ZhY2UgIGZhY2UgKQorICB7CisgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5ID0gZmFjZS0+cm9vdC5tZW1vcnk7CisgICAgVFRfUG9zdF9OYW1lcyAgbmFtZXMgID0gJmZhY2UtPnBvc3RzY3JpcHRfbmFtZXM7CisgICAgRlRfRml4ZWQgICAgICAgZm9ybWF0OworCisKKyAgICBpZiAoIG5hbWVzLT5sb2FkZWQgKQorICAgIHsKKyAgICAgIGZvcm1hdCA9IGZhY2UtPnBvc3RzY3JpcHQuRm9ybWF0VHlwZTsKKworICAgICAgaWYgKCBmb3JtYXQgPT0gMHgwMDAyMDAwMEwgKQorICAgICAgeworICAgICAgICBUVF9Qb3N0XzIwICB0YWJsZSA9ICZuYW1lcy0+bmFtZXMuZm9ybWF0XzIwOworICAgICAgICBGVF9VU2hvcnQgICBuOworCisKKyAgICAgICAgRlRfRlJFRSggdGFibGUtPmdseXBoX2luZGljZXMgKTsKKyAgICAgICAgdGFibGUtPm51bV9nbHlwaHMgPSAwOworCisgICAgICAgIGZvciAoIG4gPSAwOyBuIDwgdGFibGUtPm51bV9uYW1lczsgbisrICkKKyAgICAgICAgICBGVF9GUkVFKCB0YWJsZS0+Z2x5cGhfbmFtZXNbbl0gKTsKKworICAgICAgICBGVF9GUkVFKCB0YWJsZS0+Z2x5cGhfbmFtZXMgKTsKKyAgICAgICAgdGFibGUtPm51bV9uYW1lcyA9IDA7CisgICAgICB9CisgICAgICBlbHNlIGlmICggZm9ybWF0ID09IDB4MDAwMjgwMDBMICkKKyAgICAgIHsKKyAgICAgICAgVFRfUG9zdF8yNSAgdGFibGUgPSAmbmFtZXMtPm5hbWVzLmZvcm1hdF8yNTsKKworCisgICAgICAgIEZUX0ZSRUUoIHRhYmxlLT5vZmZzZXRzICk7CisgICAgICAgIHRhYmxlLT5udW1fZ2x5cGhzID0gMDsKKyAgICAgIH0KKyAgICB9CisgICAgbmFtZXMtPmxvYWRlZCA9IDA7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2ZhY2VfZ2V0X3BzX25hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEdldCB0aGUgUG9zdFNjcmlwdCBnbHlwaCBuYW1lIG9mIGEgZ2x5cGguICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgcGFyZW50IGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaWR4ICAgIDo6IFRoZSBnbHlwaCBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUFNuYW1lIDo6IFRoZSBhZGRyZXNzIG9mIGEgc3RyaW5nIHBvaW50ZXIuICBXaWxsIGJlIE5VTEwgaW4gY2FzZSAgICovCisgIC8qICAgICAgICAgICAgICBvZiBlcnJvciwgb3RoZXJ3aXNlIGl0IGlzIGEgcG9pbnRlciB0byB0aGUgZ2x5cGggbmFtZS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgdGhlIHJldHVybmVkIHN0cmluZyEgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9nZXRfcHNfbmFtZSggVFRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmluZyoqICBQU25hbWUgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgZXJyb3I7CisgICAgVFRfUG9zdF9OYW1lcyAgbmFtZXM7CisgICAgRlRfRml4ZWQgICAgICAgZm9ybWF0OworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9QT1NUU0NSSVBUX05BTUVTCisgICAgRlRfU2VydmljZV9Qc0NNYXBzICBwc25hbWVzOworI2VuZGlmCisKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0ZhY2VfSGFuZGxlICk7CisKKyAgICBpZiAoIGlkeCA+PSAoRlRfVUludClmYWNlLT5tYXhfcHJvZmlsZS5udW1HbHlwaHMgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0dseXBoX0luZGV4ICk7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BPU1RTQ1JJUFRfTkFNRVMKKyAgICBwc25hbWVzID0gKEZUX1NlcnZpY2VfUHNDTWFwcylmYWNlLT5wc25hbWVzOworICAgIGlmICggIXBzbmFtZXMgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBVbmltcGxlbWVudGVkX0ZlYXR1cmUgKTsKKyNlbmRpZgorCisgICAgbmFtZXMgPSAmZmFjZS0+cG9zdHNjcmlwdF9uYW1lczsKKworICAgIC8qIGAubm90ZGVmJyBieSBkZWZhdWx0ICovCisgICAgKlBTbmFtZSA9IE1BQ19OQU1FKCAwICk7CisKKyAgICBmb3JtYXQgPSBmYWNlLT5wb3N0c2NyaXB0LkZvcm1hdFR5cGU7CisKKyAgICBpZiAoIGZvcm1hdCA9PSAweDAwMDEwMDAwTCApCisgICAgeworICAgICAgaWYgKCBpZHggPCAyNTggKSAgICAgICAgICAgICAgICAgICAgLyogcGFyYW5vaWQgY2hlY2tpbmcgKi8KKyAgICAgICAgKlBTbmFtZSA9IE1BQ19OQU1FKCBpZHggKTsKKyAgICB9CisgICAgZWxzZSBpZiAoIGZvcm1hdCA9PSAweDAwMDIwMDAwTCApCisgICAgeworICAgICAgVFRfUG9zdF8yMCAgdGFibGUgPSAmbmFtZXMtPm5hbWVzLmZvcm1hdF8yMDsKKworCisgICAgICBpZiAoICFuYW1lcy0+bG9hZGVkICkKKyAgICAgIHsKKyAgICAgICAgZXJyb3IgPSBsb2FkX3Bvc3RfbmFtZXMoIGZhY2UgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBFbmQ7CisgICAgICB9CisKKyAgICAgIGlmICggaWR4IDwgKEZUX1VJbnQpdGFibGUtPm51bV9nbHlwaHMgKQorICAgICAgeworICAgICAgICBGVF9VU2hvcnQgIG5hbWVfaW5kZXggPSB0YWJsZS0+Z2x5cGhfaW5kaWNlc1tpZHhdOworCisKKyAgICAgICAgaWYgKCBuYW1lX2luZGV4IDwgMjU4ICkKKyAgICAgICAgICAqUFNuYW1lID0gTUFDX05BTUUoIG5hbWVfaW5kZXggKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICpQU25hbWUgPSAoRlRfU3RyaW5nKil0YWJsZS0+Z2x5cGhfbmFtZXNbbmFtZV9pbmRleCAtIDI1OF07CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKCBmb3JtYXQgPT0gMHgwMDAyODAwMEwgKQorICAgIHsKKyAgICAgIFRUX1Bvc3RfMjUgIHRhYmxlID0gJm5hbWVzLT5uYW1lcy5mb3JtYXRfMjU7CisKKworICAgICAgaWYgKCAhbmFtZXMtPmxvYWRlZCApCisgICAgICB7CisgICAgICAgIGVycm9yID0gbG9hZF9wb3N0X25hbWVzKCBmYWNlICk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgIGdvdG8gRW5kOworICAgICAgfQorCisgICAgICBpZiAoIGlkeCA8IChGVF9VSW50KXRhYmxlLT5udW1fZ2x5cGhzICkgICAgLyogcGFyYW5vaWQgY2hlY2tpbmcgKi8KKyAgICAgIHsKKyAgICAgICAgaWR4ICAgICs9IHRhYmxlLT5vZmZzZXRzW2lkeF07CisgICAgICAgICpQU25hbWUgPSBNQUNfTkFNRSggaWR4ICk7CisgICAgICB9CisgICAgfQorCisgICAgLyogbm90aGluZyB0byBkbyBmb3IgZm9ybWF0ID09IDB4MDAwMzAwMDBMICovCisKKyAgRW5kOgorICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dHBvc3QuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dHBvc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDE2YzA5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0cG9zdC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0cG9zdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBQb3N0Y3JpcHQgbmFtZSB0YWJsZSBwcm9jZXNzaW5nIGZvciBUcnVlVHlwZSBhbmQgT3BlblR5cGUgZm9udHMgICAgICAqLworLyogICAgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVFBPU1RfSF9fCisjZGVmaW5lIF9fVFRQT1NUX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfZ2V0X3BzX25hbWUoIFRUX0ZhY2UgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICBGVF9TdHJpbmcqKiAgUFNuYW1lICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICB0dF9mYWNlX2ZyZWVfcHNfbmFtZXMoIFRUX0ZhY2UgIGZhY2UgKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUUE9TVF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dHNiaXQuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dHNiaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjU0ZTJjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zZm50L3R0c2JpdC5jCkBAIC0wLDAgKzEsMTE3NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHRzYml0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRydWVUeXBlIGFuZCBPcGVuVHlwZSBlbWJlZGRlZCBiaXRtYXAgc3VwcG9ydCAoYm9keSkuICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA1LTIwMDksIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDEzIGJ5IEdvb2dsZSwgSW5jLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBHb29nbGUgQXV0aG9yKHMpOiBCZWhkYWQgRXNmYWhib2QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRiaXRtYXAuaCIKKyNpbmNsdWRlICJ0dHNiaXQuaCIKKworI2luY2x1ZGUgInNmZXJyb3JzLmgiCisKKyNpbmNsdWRlICJwbmdzaGltLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV90dHNiaXQKKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfZWJsYyggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX0ZpeGVkICB2ZXJzaW9uOworICAgIEZUX1VMb25nICBudW1fc3RyaWtlcywgdGFibGVfc2l6ZTsKKyAgICBGVF9CeXRlKiAgcDsKKyAgICBGVF9CeXRlKiAgcF9saW1pdDsKKyAgICBGVF9VSW50ICAgY291bnQ7CisKKworICAgIGZhY2UtPnNiaXRfbnVtX3N0cmlrZXMgPSAwOworCisgICAgLyogdGhpcyB0YWJsZSBpcyBvcHRpb25hbCAqLworICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19DQkxDLCBzdHJlYW0sICZ0YWJsZV9zaXplICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfRUJMQywgc3RyZWFtLCAmdGFibGVfc2l6ZSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZXJyb3IgPSBmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX2Jsb2MsIHN0cmVhbSwgJnRhYmxlX3NpemUgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGlmICggdGFibGVfc2l6ZSA8IDggKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggInR0X2ZhY2VfbG9hZF9zYml0X3N0cmlrZXM6IHRhYmxlIHRvbyBzaG9ydFxuIiApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoIEZUX0ZSQU1FX0VYVFJBQ1QoIHRhYmxlX3NpemUsIGZhY2UtPnNiaXRfdGFibGUgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBmYWNlLT5zYml0X3RhYmxlX3NpemUgPSB0YWJsZV9zaXplOworCisgICAgcCAgICAgICA9IGZhY2UtPnNiaXRfdGFibGU7CisgICAgcF9saW1pdCA9IHAgKyB0YWJsZV9zaXplOworCisgICAgdmVyc2lvbiAgICAgPSBGVF9ORVhUX1VMT05HKCBwICk7CisgICAgbnVtX3N0cmlrZXMgPSBGVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICBpZiAoIHZlcnNpb24gIT0gMHgwMDAyMDAwMFVMIHx8IG51bV9zdHJpa2VzID49IDB4MTAwMDBVTCApCisgICAgeworICAgICAgRlRfRVJST1IoKCAidHRfZmFjZV9sb2FkX3NiaXRfc3RyaWtlczogaW52YWxpZCB0YWJsZSB2ZXJzaW9uXG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBGYWlsOworICAgIH0KKworICAgIC8qCisgICAgICogIENvdW50IHRoZSBudW1iZXIgb2Ygc3RyaWtlcyBhdmFpbGFibGUgaW4gdGhlIHRhYmxlLiAgV2UgYXJlIGEgYml0CisgICAgICogIHBhcmFub2lkIHRoZXJlIGFuZCBkb24ndCB0cnVzdCB0aGUgZGF0YS4KKyAgICAgKi8KKyAgICBjb3VudCA9IChGVF9VSW50KW51bV9zdHJpa2VzOworICAgIGlmICggOCArIDQ4VUwgKiBjb3VudCA+IHRhYmxlX3NpemUgKQorICAgICAgY291bnQgPSAoRlRfVUludCkoICggcF9saW1pdCAtIHAgKSAvIDQ4ICk7CisKKyAgICBmYWNlLT5zYml0X251bV9zdHJpa2VzID0gY291bnQ7CisKKyAgICBGVF9UUkFDRTMoKCAic2JpdF9udW1fc3RyaWtlczogJXVcbiIsIGNvdW50ICkpOworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKworICBGYWlsOgorICAgIEZUX0ZSQU1FX1JFTEVBU0UoIGZhY2UtPnNiaXRfdGFibGUgKTsKKyAgICBmYWNlLT5zYml0X3RhYmxlX3NpemUgPSAwOworICAgIGdvdG8gRXhpdDsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgdHRfZmFjZV9mcmVlX2VibGMoIFRUX0ZhY2UgIGZhY2UgKQorICB7CisgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBmYWNlLT5yb290LnN0cmVhbTsKKworCisgICAgRlRfRlJBTUVfUkVMRUFTRSggZmFjZS0+c2JpdF90YWJsZSApOworICAgIGZhY2UtPnNiaXRfdGFibGVfc2l6ZSAgPSAwOworICAgIGZhY2UtPnNiaXRfbnVtX3N0cmlrZXMgPSAwOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9zZXRfc2JpdF9zdHJpa2UoIFRUX0ZhY2UgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NpemVfUmVxdWVzdCAgcmVxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcqICAgICAgICBhc3RyaWtlX2luZGV4ICkKKyAgeworICAgIHJldHVybiBGVF9NYXRjaF9TaXplKCAoRlRfRmFjZSlmYWNlLCByZXEsIDAsIGFzdHJpa2VfaW5kZXggKTsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9zdHJpa2VfbWV0cmljcyggVFRfRmFjZSAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyAgICAgICAgICBzdHJpa2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9NZXRyaWNzKiAgbWV0cmljcyApCisgIHsKKyAgICBGVF9CeXRlKiAgc3RyaWtlOworCisKKyAgICBpZiAoIHN0cmlrZV9pbmRleCA+PSAoRlRfVUxvbmcpZmFjZS0+c2JpdF9udW1fc3RyaWtlcyApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIHN0cmlrZSA9IGZhY2UtPnNiaXRfdGFibGUgKyA4ICsgc3RyaWtlX2luZGV4ICogNDg7CisKKyAgICBtZXRyaWNzLT54X3BwZW0gPSAoRlRfVVNob3J0KXN0cmlrZVs0NF07CisgICAgbWV0cmljcy0+eV9wcGVtID0gKEZUX1VTaG9ydClzdHJpa2VbNDVdOworCisgICAgbWV0cmljcy0+YXNjZW5kZXIgID0gKEZUX0NoYXIpc3RyaWtlWzE2XSA8PCA2OyAgLyogaG9yaS5hc2NlbmRlciAgKi8KKyAgICBtZXRyaWNzLT5kZXNjZW5kZXIgPSAoRlRfQ2hhcilzdHJpa2VbMTddIDw8IDY7ICAvKiBob3JpLmRlc2NlbmRlciAqLworICAgIG1ldHJpY3MtPmhlaWdodCAgICA9IG1ldHJpY3MtPmFzY2VuZGVyIC0gbWV0cmljcy0+ZGVzY2VuZGVyOworCisgICAgLyogWFhYOiBJcyB0aGlzIGNvcnJlY3Q/ICovCisgICAgbWV0cmljcy0+bWF4X2FkdmFuY2UgPSAoIChGVF9DaGFyKXN0cmlrZVsyMl0gKyAvKiBtaW5fb3JpZ2luX1NCICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpa2VbMThdICsgLyogbWF4X3dpZHRoICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0NoYXIpc3RyaWtlWzIzXSAgIC8qIG1pbl9hZHZhbmNlX1NCICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA8PCA2OworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX1NCaXREZWNvZGVyUmVjXworICB7CisgICAgVFRfRmFjZSAgICAgICAgICBmYWNlOworICAgIEZUX1N0cmVhbSAgICAgICAgc3RyZWFtOworICAgIEZUX0JpdG1hcCogICAgICAgYml0bWFwOworICAgIFRUX1NCaXRfTWV0cmljcyAgbWV0cmljczsKKyAgICBGVF9Cb29sICAgICAgICAgIG1ldHJpY3NfbG9hZGVkOworICAgIEZUX0Jvb2wgICAgICAgICAgYml0bWFwX2FsbG9jYXRlZDsKKyAgICBGVF9CeXRlICAgICAgICAgIGJpdF9kZXB0aDsKKworICAgIEZUX1VMb25nICAgICAgICAgZWJkdF9zdGFydDsKKyAgICBGVF9VTG9uZyAgICAgICAgIGViZHRfc2l6ZTsKKworICAgIEZUX1VMb25nICAgICAgICAgc3RyaWtlX2luZGV4X2FycmF5OworICAgIEZUX1VMb25nICAgICAgICAgc3RyaWtlX2luZGV4X2NvdW50OworICAgIEZUX0J5dGUqICAgICAgICAgZWJsY19iYXNlOworICAgIEZUX0J5dGUqICAgICAgICAgZWJsY19saW1pdDsKKworICB9IFRUX1NCaXREZWNvZGVyUmVjLCAqVFRfU0JpdERlY29kZXI7CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgdHRfc2JpdF9kZWNvZGVyX2luaXQoIFRUX1NCaXREZWNvZGVyICAgICAgIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBUVF9GYWNlICAgICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICAgICAgc3RyaWtlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgVFRfU0JpdF9NZXRyaWNzUmVjKiAgbWV0cmljcyApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gZmFjZS0+cm9vdC5zdHJlYW07CisgICAgRlRfVUxvbmcgICBlYmR0X3NpemU7CisKKworICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19DQkRULCBzdHJlYW0sICZlYmR0X3NpemUgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19FQkRULCBzdHJlYW0sICZlYmR0X3NpemUgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19iZGF0LCBzdHJlYW0sICZlYmR0X3NpemUgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGRlY29kZXItPmZhY2UgICAgPSBmYWNlOworICAgIGRlY29kZXItPnN0cmVhbSAgPSBzdHJlYW07CisgICAgZGVjb2Rlci0+Yml0bWFwICA9ICZmYWNlLT5yb290LmdseXBoLT5iaXRtYXA7CisgICAgZGVjb2Rlci0+bWV0cmljcyA9IG1ldHJpY3M7CisKKyAgICBkZWNvZGVyLT5tZXRyaWNzX2xvYWRlZCAgID0gMDsKKyAgICBkZWNvZGVyLT5iaXRtYXBfYWxsb2NhdGVkID0gMDsKKworICAgIGRlY29kZXItPmViZHRfc3RhcnQgPSBGVF9TVFJFQU1fUE9TKCk7CisgICAgZGVjb2Rlci0+ZWJkdF9zaXplICA9IGViZHRfc2l6ZTsKKworICAgIGRlY29kZXItPmVibGNfYmFzZSAgPSBmYWNlLT5zYml0X3RhYmxlOworICAgIGRlY29kZXItPmVibGNfbGltaXQgPSBmYWNlLT5zYml0X3RhYmxlICsgZmFjZS0+c2JpdF90YWJsZV9zaXplOworCisgICAgLyogbm93IGZpbmQgdGhlIHN0cmlrZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbmRleCAqLworICAgIHsKKyAgICAgIEZUX0J5dGUqICBwOworCisKKyAgICAgIGlmICggOCArIDQ4ICogc3RyaWtlX2luZGV4ICsgMyAqIDQgKyAzNCArIDEgPiBmYWNlLT5zYml0X3RhYmxlX3NpemUgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgcCA9IGRlY29kZXItPmVibGNfYmFzZSArIDggKyA0OCAqIHN0cmlrZV9pbmRleDsKKworICAgICAgZGVjb2Rlci0+c3RyaWtlX2luZGV4X2FycmF5ID0gRlRfTkVYVF9VTE9ORyggcCApOworICAgICAgcCAgICAgICAgICAgICAgICAgICAgICAgICAgKz0gNDsKKyAgICAgIGRlY29kZXItPnN0cmlrZV9pbmRleF9jb3VudCA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKyAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgICAgICs9IDM0OworICAgICAgZGVjb2Rlci0+Yml0X2RlcHRoICAgICAgICAgID0gKnA7CisKKyAgICAgIGlmICggZGVjb2Rlci0+c3RyaWtlX2luZGV4X2FycmF5ID4gZmFjZS0+c2JpdF90YWJsZV9zaXplICAgICAgICAgICAgIHx8CisgICAgICAgICAgIGRlY29kZXItPnN0cmlrZV9pbmRleF9hcnJheSArIDggKiBkZWNvZGVyLT5zdHJpa2VfaW5kZXhfY291bnQgPgorICAgICAgICAgICAgIGZhY2UtPnNiaXRfdGFibGVfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgdm9pZAorICB0dF9zYml0X2RlY29kZXJfZG9uZSggVFRfU0JpdERlY29kZXIgIGRlY29kZXIgKQorICB7CisgICAgRlRfVU5VU0VEKCBkZWNvZGVyICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICB0dF9zYml0X2RlY29kZXJfYWxsb2NfYml0bWFwKCBUVF9TQml0RGVjb2RlciAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGxvYWRfZmxhZ3MgKQorICB7CisgICAgRlRfRXJyb3IgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfVUludCAgICAgd2lkdGgsIGhlaWdodDsKKyAgICBGVF9CaXRtYXAqICBtYXAgPSBkZWNvZGVyLT5iaXRtYXA7CisgICAgRlRfTG9uZyAgICAgc2l6ZTsKKworCisgICAgaWYgKCAhZGVjb2Rlci0+bWV0cmljc19sb2FkZWQgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICB3aWR0aCAgPSBkZWNvZGVyLT5tZXRyaWNzLT53aWR0aDsKKyAgICBoZWlnaHQgPSBkZWNvZGVyLT5tZXRyaWNzLT5oZWlnaHQ7CisKKyAgICBtYXAtPndpZHRoID0gKGludCl3aWR0aDsKKyAgICBtYXAtPnJvd3MgID0gKGludCloZWlnaHQ7CisKKyAgICBzd2l0Y2ggKCBkZWNvZGVyLT5iaXRfZGVwdGggKQorICAgIHsKKyAgICBjYXNlIDE6CisgICAgICBtYXAtPnBpeGVsX21vZGUgPSBGVF9QSVhFTF9NT0RFX01PTk87CisgICAgICBtYXAtPnBpdGNoICAgICAgPSAoIG1hcC0+d2lkdGggKyA3ICkgPj4gMzsKKyAgICAgIG1hcC0+bnVtX2dyYXlzICA9IDI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgMjoKKyAgICAgIG1hcC0+cGl4ZWxfbW9kZSA9IEZUX1BJWEVMX01PREVfR1JBWTI7CisgICAgICBtYXAtPnBpdGNoICAgICAgPSAoIG1hcC0+d2lkdGggKyAzICkgPj4gMjsKKyAgICAgIG1hcC0+bnVtX2dyYXlzICA9IDQ7CisgICAgICBicmVhazsKKworICAgIGNhc2UgNDoKKyAgICAgIG1hcC0+cGl4ZWxfbW9kZSA9IEZUX1BJWEVMX01PREVfR1JBWTQ7CisgICAgICBtYXAtPnBpdGNoICAgICAgPSAoIG1hcC0+d2lkdGggKyAxICkgPj4gMTsKKyAgICAgIG1hcC0+bnVtX2dyYXlzICA9IDE2OworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDg6CisgICAgICBtYXAtPnBpeGVsX21vZGUgPSBGVF9QSVhFTF9NT0RFX0dSQVk7CisgICAgICBtYXAtPnBpdGNoICAgICAgPSBtYXAtPndpZHRoOworICAgICAgbWFwLT5udW1fZ3JheXMgID0gMjU2OworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDMyOgorICAgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9DT0xPUiApCisgICAgICB7CisgICAgICAgIG1hcC0+cGl4ZWxfbW9kZSA9IEZUX1BJWEVMX01PREVfQkdSQTsKKyAgICAgICAgbWFwLT5waXRjaCAgICAgID0gbWFwLT53aWR0aCAqIDQ7CisgICAgICAgIG1hcC0+bnVtX2dyYXlzICA9IDI1NjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgbWFwLT5waXhlbF9tb2RlID0gRlRfUElYRUxfTU9ERV9HUkFZOworICAgICAgICBtYXAtPnBpdGNoICAgICAgPSBtYXAtPndpZHRoOworICAgICAgICBtYXAtPm51bV9ncmF5cyAgPSAyNTY7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgc2l6ZSA9IG1hcC0+cm93cyAqIG1hcC0+cGl0Y2g7CisKKyAgICAvKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGVtcHR5IGltYWdlICovCisgICAgaWYgKCBzaXplID09IDAgKQorICAgICAgZ290byBFeGl0OyAgICAgLyogZXhpdCBzdWNjZXNzZnVsbHkhICovCisKKyAgICBlcnJvciA9IGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAoIGRlY29kZXItPmZhY2UtPnJvb3QuZ2x5cGgsIHNpemUgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGRlY29kZXItPmJpdG1hcF9hbGxvY2F0ZWQgPSAxOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgdHRfc2JpdF9kZWNvZGVyX2xvYWRfbWV0cmljcyggVFRfU0JpdERlY29kZXIgIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICAgICpwcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgYmlnICkKKyAgeworICAgIEZUX0J5dGUqICAgICAgICAgcCAgICAgICA9ICpwcDsKKyAgICBUVF9TQml0X01ldHJpY3MgIG1ldHJpY3MgPSBkZWNvZGVyLT5tZXRyaWNzOworCisKKyAgICBpZiAoIHAgKyA1ID4gbGltaXQgKQorICAgICAgZ290byBGYWlsOworCisgICAgbWV0cmljcy0+aGVpZ2h0ICAgICAgID0gcFswXTsKKyAgICBtZXRyaWNzLT53aWR0aCAgICAgICAgPSBwWzFdOworICAgIG1ldHJpY3MtPmhvcmlCZWFyaW5nWCA9IChGVF9DaGFyKXBbMl07CisgICAgbWV0cmljcy0+aG9yaUJlYXJpbmdZID0gKEZUX0NoYXIpcFszXTsKKyAgICBtZXRyaWNzLT5ob3JpQWR2YW5jZSAgPSBwWzRdOworCisgICAgcCArPSA1OworICAgIGlmICggYmlnICkKKyAgICB7CisgICAgICBpZiAoIHAgKyAzID4gbGltaXQgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgIG1ldHJpY3MtPnZlcnRCZWFyaW5nWCA9IChGVF9DaGFyKXBbMF07CisgICAgICBtZXRyaWNzLT52ZXJ0QmVhcmluZ1kgPSAoRlRfQ2hhcilwWzFdOworICAgICAgbWV0cmljcy0+dmVydEFkdmFuY2UgID0gcFsyXTsKKworICAgICAgcCArPSAzOworICAgIH0KKworICAgIGRlY29kZXItPm1ldHJpY3NfbG9hZGVkID0gMTsKKyAgICAqcHAgPSBwOworICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgRmFpbDoKKyAgICBGVF9UUkFDRTEoKCAidHRfc2JpdF9kZWNvZGVyX2xvYWRfbWV0cmljczogYnJva2VuIHRhYmxlIiApKTsKKyAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgfQorCisKKyAgLyogZm9yd2FyZCBkZWNsYXJhdGlvbiAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgdHRfc2JpdF9kZWNvZGVyX2xvYWRfaW1hZ2UoIFRUX1NCaXREZWNvZGVyICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgeF9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgeV9wb3MgKTsKKworICB0eXBlZGVmIEZUX0Vycm9yICAoKlRUX1NCaXREZWNvZGVyX0xvYWRGdW5jKSggVFRfU0JpdERlY29kZXIgIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICAgICBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgIHBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICB4X3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICB5X3BvcyApOworCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHR0X3NiaXRfZGVjb2Rlcl9sb2FkX2J5dGVfYWxpZ25lZCggVFRfU0JpdERlY29kZXIgIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICB4X3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgeV9wb3MgKQorICB7CisgICAgRlRfRXJyb3IgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfQnl0ZSogICAgbGluZTsKKyAgICBGVF9JbnQgICAgICBiaXRfaGVpZ2h0LCBiaXRfd2lkdGgsIHBpdGNoLCB3aWR0aCwgaGVpZ2h0LCBsaW5lX2JpdHMsIGg7CisgICAgRlRfQml0bWFwKiAgYml0bWFwOworCisgICAgRlRfVU5VU0VEKCBsb2FkX2ZsYWdzICk7CisKKworICAgIC8qIGNoZWNrIHRoYXQgd2UgY2FuIHdyaXRlIHRoZSBnbHlwaCBpbnRvIHRoZSBiaXRtYXAgKi8KKyAgICBiaXRtYXAgICAgID0gZGVjb2Rlci0+Yml0bWFwOworICAgIGJpdF93aWR0aCAgPSBiaXRtYXAtPndpZHRoOworICAgIGJpdF9oZWlnaHQgPSBiaXRtYXAtPnJvd3M7CisgICAgcGl0Y2ggICAgICA9IGJpdG1hcC0+cGl0Y2g7CisgICAgbGluZSAgICAgICA9IGJpdG1hcC0+YnVmZmVyOworCisgICAgd2lkdGggID0gZGVjb2Rlci0+bWV0cmljcy0+d2lkdGg7CisgICAgaGVpZ2h0ID0gZGVjb2Rlci0+bWV0cmljcy0+aGVpZ2h0OworCisgICAgbGluZV9iaXRzID0gd2lkdGggKiBkZWNvZGVyLT5iaXRfZGVwdGg7CisKKyAgICBpZiAoIHhfcG9zIDwgMCB8fCB4X3BvcyArIHdpZHRoID4gYml0X3dpZHRoICAgfHwKKyAgICAgICAgIHlfcG9zIDwgMCB8fCB5X3BvcyArIGhlaWdodCA+IGJpdF9oZWlnaHQgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMSgoICJ0dF9zYml0X2RlY29kZXJfbG9hZF9ieXRlX2FsaWduZWQ6IgorICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGJpdG1hcCBkaW1lbnNpb25zXG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggcCArICggKCBsaW5lX2JpdHMgKyA3ICkgPj4gMyApICogaGVpZ2h0ID4gbGltaXQgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMSgoICJ0dF9zYml0X2RlY29kZXJfbG9hZF9ieXRlX2FsaWduZWQ6IGJyb2tlbiBiaXRtYXBcbiIgKSk7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLyogbm93IGRvIHRoZSBibGl0ICovCisgICAgbGluZSAgKz0geV9wb3MgKiBwaXRjaCArICggeF9wb3MgPj4gMyApOworICAgIHhfcG9zICY9IDc7CisKKyAgICBpZiAoIHhfcG9zID09IDAgKSAgLyogdGhlIGVhc3kgb25lICovCisgICAgeworICAgICAgZm9yICggaCA9IGhlaWdodDsgaCA+IDA7IGgtLSwgbGluZSArPSBwaXRjaCApCisgICAgICB7CisgICAgICAgIEZUX0J5dGUqICBwd3JpdGUgPSBsaW5lOworICAgICAgICBGVF9JbnQgICAgdzsKKworCisgICAgICAgIGZvciAoIHcgPSBsaW5lX2JpdHM7IHcgPj0gODsgdyAtPSA4ICkKKyAgICAgICAgeworICAgICAgICAgIHB3cml0ZVswXSA9IChGVF9CeXRlKSggcHdyaXRlWzBdIHwgKnArKyApOworICAgICAgICAgIHB3cml0ZSAgICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHcgPiAwICkKKyAgICAgICAgICBwd3JpdGVbMF0gPSAoRlRfQnl0ZSkoIHB3cml0ZVswXSB8ICggKnArKyAmICggMHhGRjAwVSA+PiB3ICkgKSApOworICAgICAgfQorICAgIH0KKyAgICBlbHNlICAvKiB4X3BvcyA+IDAgKi8KKyAgICB7CisgICAgICBmb3IgKCBoID0gaGVpZ2h0OyBoID4gMDsgaC0tLCBsaW5lICs9IHBpdGNoICkKKyAgICAgIHsKKyAgICAgICAgRlRfQnl0ZSogIHB3cml0ZSA9IGxpbmU7CisgICAgICAgIEZUX0ludCAgICB3OworICAgICAgICBGVF9VSW50ICAgd3ZhbCA9IDA7CisKKworICAgICAgICBmb3IgKCB3ID0gbGluZV9iaXRzOyB3ID49IDg7IHcgLT0gOCApCisgICAgICAgIHsKKyAgICAgICAgICB3dmFsICAgICAgID0gKEZUX1VJbnQpKCB3dmFsIHwgKnArKyApOworICAgICAgICAgIHB3cml0ZVswXSAgPSAoRlRfQnl0ZSkoIHB3cml0ZVswXSB8ICggd3ZhbCA+PiB4X3BvcyApICk7CisgICAgICAgICAgcHdyaXRlICAgICs9IDE7CisgICAgICAgICAgd3ZhbCAgICAgPDw9IDg7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHcgPiAwICkKKyAgICAgICAgICB3dmFsID0gKEZUX1VJbnQpKCB3dmFsIHwgKCAqcCsrICYgKCAweEZGMDBVID4+IHcgKSApICk7CisKKyAgICAgICAgLyogYWxsIGJpdHMgcmVhZCBhbmQgdGhlcmUgYXJlIGB4X3BvcyArIHcnIGJpdHMgdG8gYmUgd3JpdHRlbiAqLworCisgICAgICAgIHB3cml0ZVswXSA9IChGVF9CeXRlKSggcHdyaXRlWzBdIHwgKCB3dmFsID4+IHhfcG9zICkgKTsKKworICAgICAgICBpZiAoIHhfcG9zICsgdyA+IDggKQorICAgICAgICB7CisgICAgICAgICAgcHdyaXRlKys7CisgICAgICAgICAgd3ZhbCAgICAgPDw9IDg7CisgICAgICAgICAgcHdyaXRlWzBdICA9IChGVF9CeXRlKSggcHdyaXRlWzBdIHwgKCB3dmFsID4+IHhfcG9zICkgKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICBFeGl0OgorICAgIGlmICggIWVycm9yICkKKyAgICAgIEZUX1RSQUNFMygoICJ0dF9zYml0X2RlY29kZXJfbG9hZF9ieXRlX2FsaWduZWQ6IGxvYWRlZFxuIiApKTsKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qCisgICAqIExvYWQgYSBiaXQtYWxpZ25lZCBiaXRtYXAgKHdpdGggcG9pbnRlciBgcCcpIGludG8gYSBsaW5lLWFsaWduZWQgYml0bWFwCisgICAqICh3aXRoIHBvaW50ZXIgYHB3cml0ZScpLiAgSW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSB3aWR0aCBpcyAzIHBpeGVsLAorICAgKiBhbmQgYHhfcG9zJyBpcyAxIHBpeGVsLgorICAgKgorICAgKiAgICAgICBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHArMQorICAgKiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICogICAgIHwgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAgfCA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMCB8Li4uCisgICAqICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKiAgICAgICArLS0tLS0tLSsgICArLS0tLS0tLSsgICArLS0tLS0tLSsgLi4uCisgICAqICAgICAgICAgICAuICAgICAgICAgICAuICAgICAgICAgICAuCisgICAqICAgICAgICAgICAuICAgICAgICAgICAuICAgICAgICAgICAuCisgICAqICAgICAgICAgICB2ICAgICAgICAgICAuICAgICAgICAgICAuCisgICAqICAgICAgICstLS0tLS0tKyAgICAgICAuICAgICAgICAgICAuCisgICAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuCisgICAqIHwgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAgfCAuCisgICAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuCisgICAqICAgcHdyaXRlICAgICAgICAgICAgICAuICAgICAgICAgICAuCisgICAqICAgICAgICAgICAgICAgICAgICAgICAuICAgICAgICAgICAuCisgICAqICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAuCisgICAqICAgICAgICAgICAgICAgICAgICstLS0tLS0tKyAgICAgICAuCisgICAqICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKiAgICAgICAgICAgICB8IDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwIHwKKyAgICogICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAqICAgICAgICAgICAgICAgcHdyaXRlKzEgICAgICAgICAgICAuCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuCisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tKworICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICogICAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMCB8CisgICAqICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3cml0ZSsyCisgICAqCisgICAqLworCisgIHN0YXRpYyBGVF9FcnJvcgorICB0dF9zYml0X2RlY29kZXJfbG9hZF9iaXRfYWxpZ25lZCggVFRfU0JpdERlY29kZXIgIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0J5dGUqICAgICAgICBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgIHhfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgIHlfcG9zICkKKyAgeworICAgIEZUX0Vycm9yICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX0J5dGUqICAgIGxpbmU7CisgICAgRlRfSW50ICAgICAgYml0X2hlaWdodCwgYml0X3dpZHRoLCBwaXRjaCwgd2lkdGgsIGhlaWdodCwgbGluZV9iaXRzLCBoLCBuYml0czsKKyAgICBGVF9CaXRtYXAqICBiaXRtYXA7CisgICAgRlRfVVNob3J0ICAgcnZhbDsKKworICAgIEZUX1VOVVNFRCggbG9hZF9mbGFncyApOworCisKKyAgICAvKiBjaGVjayB0aGF0IHdlIGNhbiB3cml0ZSB0aGUgZ2x5cGggaW50byB0aGUgYml0bWFwICovCisgICAgYml0bWFwICAgICA9IGRlY29kZXItPmJpdG1hcDsKKyAgICBiaXRfd2lkdGggID0gYml0bWFwLT53aWR0aDsKKyAgICBiaXRfaGVpZ2h0ID0gYml0bWFwLT5yb3dzOworICAgIHBpdGNoICAgICAgPSBiaXRtYXAtPnBpdGNoOworICAgIGxpbmUgICAgICAgPSBiaXRtYXAtPmJ1ZmZlcjsKKworICAgIHdpZHRoICA9IGRlY29kZXItPm1ldHJpY3MtPndpZHRoOworICAgIGhlaWdodCA9IGRlY29kZXItPm1ldHJpY3MtPmhlaWdodDsKKworICAgIGxpbmVfYml0cyA9IHdpZHRoICogZGVjb2Rlci0+Yml0X2RlcHRoOworCisgICAgaWYgKCB4X3BvcyA8IDAgfHwgeF9wb3MgKyB3aWR0aCAgPiBiaXRfd2lkdGggIHx8CisgICAgICAgICB5X3BvcyA8IDAgfHwgeV9wb3MgKyBoZWlnaHQgPiBiaXRfaGVpZ2h0ICkKKyAgICB7CisgICAgICBGVF9UUkFDRTEoKCAidHRfc2JpdF9kZWNvZGVyX2xvYWRfYml0X2FsaWduZWQ6IgorICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIGJpdG1hcCBkaW1lbnNpb25zXG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggcCArICggKCBsaW5lX2JpdHMgKiBoZWlnaHQgKyA3ICkgPj4gMyApID4gbGltaXQgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMSgoICJ0dF9zYml0X2RlY29kZXJfbG9hZF9iaXRfYWxpZ25lZDogYnJva2VuIGJpdG1hcFxuIiApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICAvKiBub3cgZG8gdGhlIGJsaXQgKi8KKworICAgIC8qIGFkanVzdCBgbGluZScgdG8gcG9pbnQgdG8gdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGJpdG1hcCAqLworICAgIGxpbmUgICs9IHlfcG9zICogcGl0Y2ggKyAoIHhfcG9zID4+IDMgKTsKKyAgICB4X3BvcyAmPSA3OworCisgICAgLyogdGhlIGhpZ2hlciBieXRlIG9mIGBydmFsJyBpcyB1c2VkIGFzIGEgYnVmZmVyICovCisgICAgcnZhbCAgPSAwOworICAgIG5iaXRzID0gMDsKKworICAgIGZvciAoIGggPSBoZWlnaHQ7IGggPiAwOyBoLS0sIGxpbmUgKz0gcGl0Y2ggKQorICAgIHsKKyAgICAgIEZUX0J5dGUqICBwd3JpdGUgPSBsaW5lOworICAgICAgRlRfSW50ICAgIHcgICAgICA9IGxpbmVfYml0czsKKworCisgICAgICAvKiBoYW5kbGUgaW5pdGlhbCBieXRlIChpbiB0YXJnZXQgYml0bWFwKSBzcGVjaWFsbHkgaWYgbmVjZXNzYXJ5ICovCisgICAgICBpZiAoIHhfcG9zICkKKyAgICAgIHsKKyAgICAgICAgdyA9ICggbGluZV9iaXRzIDwgOCAtIHhfcG9zICkgPyBsaW5lX2JpdHMgOiA4IC0geF9wb3M7CisKKyAgICAgICAgaWYgKCBoID09IGhlaWdodCApCisgICAgICAgIHsKKyAgICAgICAgICBydmFsICA9ICpwKys7CisgICAgICAgICAgbmJpdHMgPSB4X3BvczsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggbmJpdHMgPCB3ICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggcCA8IGxpbWl0ICkKKyAgICAgICAgICAgIHJ2YWwgfD0gKnArKzsKKyAgICAgICAgICBuYml0cyArPSA4IC0gdzsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBydmFsICA+Pj0gODsKKyAgICAgICAgICBuYml0cyAgLT0gdzsKKyAgICAgICAgfQorCisgICAgICAgICpwd3JpdGUrKyB8PSAoICggcnZhbCA+PiBuYml0cyApICYgMHhGRiApICYKKyAgICAgICAgICAgICAgICAgICAgICggfiggMHhGRiA8PCB3ICkgPDwgKCA4IC0gdyAtIHhfcG9zICkgKTsKKyAgICAgICAgcnZhbCAgICAgPDw9IDg7CisKKyAgICAgICAgdyA9IGxpbmVfYml0cyAtIHc7CisgICAgICB9CisKKyAgICAgIC8qIGhhbmRsZSBtZWRpYWwgYnl0ZXMgKi8KKyAgICAgIGZvciAoIDsgdyA+PSA4OyB3IC09IDggKQorICAgICAgeworICAgICAgICBydmFsICAgICAgfD0gKnArKzsKKyAgICAgICAgKnB3cml0ZSsrIHw9ICggcnZhbCA+PiBuYml0cyApICYgMHhGRjsKKworICAgICAgICBydmFsIDw8PSA4OworICAgICAgfQorCisgICAgICAvKiBoYW5kbGUgZmluYWwgYnl0ZSBpZiBuZWNlc3NhcnkgKi8KKyAgICAgIGlmICggdyA+IDAgKQorICAgICAgeworICAgICAgICBpZiAoIG5iaXRzIDwgdyApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIHAgPCBsaW1pdCApCisgICAgICAgICAgICBydmFsIHw9ICpwKys7CisgICAgICAgICAgKnB3cml0ZSB8PSAoICggcnZhbCA+PiBuYml0cyApICYgMHhGRiApICYgKCAweEZGMDBVID4+IHcgKTsKKyAgICAgICAgICBuYml0cyAgICs9IDggLSB3OworCisgICAgICAgICAgcnZhbCA8PD0gODsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAqcHdyaXRlIHw9ICggKCBydmFsID4+IG5iaXRzICkgJiAweEZGICkgJiAoIDB4RkYwMFUgPj4gdyApOworICAgICAgICAgIG5iaXRzICAgLT0gdzsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICBFeGl0OgorICAgIGlmICggIWVycm9yICkKKyAgICAgIEZUX1RSQUNFMygoICJ0dF9zYml0X2RlY29kZXJfbG9hZF9iaXRfYWxpZ25lZDogbG9hZGVkXG4iICkpOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHR0X3NiaXRfZGVjb2Rlcl9sb2FkX2NvbXBvdW5kKCBUVF9TQml0RGVjb2RlciAgZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBsb2FkX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiAgICAgICAgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgeF9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgeV9wb3MgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX1VJbnQgICBudW1fY29tcG9uZW50cywgbm47CisKKyAgICBGVF9DaGFyICBob3JpQmVhcmluZ1ggPSBkZWNvZGVyLT5tZXRyaWNzLT5ob3JpQmVhcmluZ1g7CisgICAgRlRfQ2hhciAgaG9yaUJlYXJpbmdZID0gZGVjb2Rlci0+bWV0cmljcy0+aG9yaUJlYXJpbmdZOworICAgIEZUX0J5dGUgIGhvcmlBZHZhbmNlICA9IGRlY29kZXItPm1ldHJpY3MtPmhvcmlBZHZhbmNlOworICAgIEZUX0NoYXIgIHZlcnRCZWFyaW5nWCA9IGRlY29kZXItPm1ldHJpY3MtPnZlcnRCZWFyaW5nWDsKKyAgICBGVF9DaGFyICB2ZXJ0QmVhcmluZ1kgPSBkZWNvZGVyLT5tZXRyaWNzLT52ZXJ0QmVhcmluZ1k7CisgICAgRlRfQnl0ZSAgdmVydEFkdmFuY2UgID0gZGVjb2Rlci0+bWV0cmljcy0+dmVydEFkdmFuY2U7CisKKworICAgIGlmICggcCArIDIgPiBsaW1pdCApCisgICAgICBnb3RvIEZhaWw7CisKKyAgICBudW1fY29tcG9uZW50cyA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisgICAgaWYgKCBwICsgNCAqIG51bV9jb21wb25lbnRzID4gbGltaXQgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMSgoICJ0dF9zYml0X2RlY29kZXJfbG9hZF9jb21wb3VuZDogYnJva2VuIHRhYmxlXG4iICkpOworICAgICAgZ290byBGYWlsOworICAgIH0KKworICAgIEZUX1RSQUNFMygoICJ0dF9zYml0X2RlY29kZXJfbG9hZF9jb21wb3VuZDogbG9hZGluZyAlZCBjb21wb25lbnRzXG4iLAorICAgICAgICAgICAgICAgIG51bV9jb21wb25lbnRzICkpOworCisgICAgZm9yICggbm4gPSAwOyBubiA8IG51bV9jb21wb25lbnRzOyBubisrICkKKyAgICB7CisgICAgICBGVF9VSW50ICBnaW5kZXggPSBGVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgRlRfQnl0ZSAgZHggICAgID0gRlRfTkVYVF9CWVRFKCBwICk7CisgICAgICBGVF9CeXRlICBkeSAgICAgPSBGVF9ORVhUX0JZVEUoIHAgKTsKKworCisgICAgICAvKiBOQjogYSByZWN1cnNpdmUgY2FsbCAqLworICAgICAgZXJyb3IgPSB0dF9zYml0X2RlY29kZXJfbG9hZF9pbWFnZSggZGVjb2RlciwgbG9hZF9mbGFncywgZ2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeF9wb3MgKyBkeCwgeV9wb3MgKyBkeSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEZUX1RSQUNFMygoICJ0dF9zYml0X2RlY29kZXJfbG9hZF9jb21wb3VuZDogZG9uZVxuIiApKTsKKworICAgIGRlY29kZXItPm1ldHJpY3MtPmhvcmlCZWFyaW5nWCA9IGhvcmlCZWFyaW5nWDsKKyAgICBkZWNvZGVyLT5tZXRyaWNzLT5ob3JpQmVhcmluZ1kgPSBob3JpQmVhcmluZ1k7CisgICAgZGVjb2Rlci0+bWV0cmljcy0+aG9yaUFkdmFuY2UgID0gaG9yaUFkdmFuY2U7CisgICAgZGVjb2Rlci0+bWV0cmljcy0+dmVydEJlYXJpbmdYID0gdmVydEJlYXJpbmdYOworICAgIGRlY29kZXItPm1ldHJpY3MtPnZlcnRCZWFyaW5nWSA9IHZlcnRCZWFyaW5nWTsKKyAgICBkZWNvZGVyLT5tZXRyaWNzLT52ZXJ0QWR2YW5jZSAgPSB2ZXJ0QWR2YW5jZTsKKyAgICBkZWNvZGVyLT5tZXRyaWNzLT53aWR0aCAgICAgICAgPSAoRlRfQnl0ZSlkZWNvZGVyLT5iaXRtYXAtPndpZHRoOworICAgIGRlY29kZXItPm1ldHJpY3MtPmhlaWdodCAgICAgICA9IChGVF9CeXRlKWRlY29kZXItPmJpdG1hcC0+cm93czsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKworICBGYWlsOgorICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICBnb3RvIEV4aXQ7CisgIH0KKworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9VU0VfUE5HCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHR0X3NiaXRfZGVjb2Rlcl9sb2FkX3BuZyggVFRfU0JpdERlY29kZXIgIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgIGxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQnl0ZSogICAgICAgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICB4X3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgeV9wb3MgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworICAgIEZUX1VMb25nICBwbmdfbGVuOworCisgICAgRlRfVU5VU0VEKCBsb2FkX2ZsYWdzICk7CisKKworICAgIGlmICggbGltaXQgLSBwIDwgNCApCisgICAgeworICAgICAgRlRfVFJBQ0UxKCggInR0X3NiaXRfZGVjb2Rlcl9sb2FkX3BuZzogYnJva2VuIGJpdG1hcFxuIiApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBwbmdfbGVuID0gRlRfTkVYVF9VTE9ORyggcCApOworICAgIGlmICggKEZUX1VMb25nKSggbGltaXQgLSBwICkgPCBwbmdfbGVuICkKKyAgICB7CisgICAgICBGVF9UUkFDRTEoKCAidHRfc2JpdF9kZWNvZGVyX2xvYWRfcG5nOiBicm9rZW4gYml0bWFwXG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGVycm9yID0gTG9hZF9TQml0X1BuZyggZGVjb2Rlci0+Yml0bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeF9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB5X3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXItPmJpdF9kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXItPm1ldHJpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLT5zdHJlYW0tPm1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwbmdfbGVuICk7CisKKyAgRXhpdDoKKyAgICBpZiAoICFlcnJvciApCisgICAgICBGVF9UUkFDRTMoKCAidHRfc2JpdF9kZWNvZGVyX2xvYWRfcG5nOiBsb2FkZWRcbiIgKSk7CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1VTRV9QTkcgKi8KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICB0dF9zYml0X2RlY29kZXJfbG9hZF9iaXRtYXAoIFRUX1NCaXREZWNvZGVyICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBsb2FkX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBnbHlwaF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgIGdseXBoX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICBnbHlwaF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICB4X3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgeV9wb3MgKQorICB7CisgICAgRlRfRXJyb3IgICBlcnJvcjsKKyAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IGRlY29kZXItPnN0cmVhbTsKKyAgICBGVF9CeXRlKiAgIHA7CisgICAgRlRfQnl0ZSogICBwX2xpbWl0OworICAgIEZUX0J5dGUqICAgZGF0YTsKKworCisgICAgLyogc2VlayBpbnRvIHRoZSBFQkRUIHRhYmxlIG5vdyAqLworICAgIGlmICggZ2x5cGhfc3RhcnQgKyBnbHlwaF9zaXplID4gZGVjb2Rlci0+ZWJkdF9zaXplICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggZGVjb2Rlci0+ZWJkdF9zdGFydCArIGdseXBoX3N0YXJ0ICkgfHwKKyAgICAgICAgIEZUX0ZSQU1FX0VYVFJBQ1QoIGdseXBoX3NpemUsIGRhdGEgKSAgICAgICAgICAgICAgICApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBwICAgICAgID0gZGF0YTsKKyAgICBwX2xpbWl0ID0gcCArIGdseXBoX3NpemU7CisKKyAgICAvKiByZWFkIHRoZSBkYXRhLCBkZXBlbmRpbmcgb24gdGhlIGdseXBoIGZvcm1hdCAqLworICAgIHN3aXRjaCAoIGdseXBoX2Zvcm1hdCApCisgICAgeworICAgIGNhc2UgMToKKyAgICBjYXNlIDI6CisgICAgY2FzZSA4OgorICAgIGNhc2UgMTc6CisgICAgICBlcnJvciA9IHR0X3NiaXRfZGVjb2Rlcl9sb2FkX21ldHJpY3MoIGRlY29kZXIsICZwLCBwX2xpbWl0LCAwICk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgNjoKKyAgICBjYXNlIDc6CisgICAgY2FzZSA5OgorICAgIGNhc2UgMTg6CisgICAgICBlcnJvciA9IHR0X3NiaXRfZGVjb2Rlcl9sb2FkX21ldHJpY3MoIGRlY29kZXIsICZwLCBwX2xpbWl0LCAxICk7CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICB9CisKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIHsKKyAgICAgIFRUX1NCaXREZWNvZGVyX0xvYWRGdW5jICBsb2FkZXI7CisKKworICAgICAgc3dpdGNoICggZ2x5cGhfZm9ybWF0ICkKKyAgICAgIHsKKyAgICAgIGNhc2UgMToKKyAgICAgIGNhc2UgNjoKKyAgICAgICAgbG9hZGVyID0gdHRfc2JpdF9kZWNvZGVyX2xvYWRfYnl0ZV9hbGlnbmVkOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAyOgorICAgICAgY2FzZSA1OgorICAgICAgY2FzZSA3OgorICAgICAgICBsb2FkZXIgPSB0dF9zYml0X2RlY29kZXJfbG9hZF9iaXRfYWxpZ25lZDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgODoKKyAgICAgICAgaWYgKCBwICsgMSA+IHBfbGltaXQgKQorICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICBwICs9IDE7ICAvKiBza2lwIHBhZGRpbmcgKi8KKyAgICAgICAgLyogZmFsbC10aHJvdWdoICovCisKKyAgICAgIGNhc2UgOToKKyAgICAgICAgbG9hZGVyID0gdHRfc2JpdF9kZWNvZGVyX2xvYWRfY29tcG91bmQ7CisgICAgICAgIGJyZWFrOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9VU0VfUE5HCisgICAgICBjYXNlIDE3OiAvKiBzbWFsbCBtZXRyaWNzLCBQTkcgaW1hZ2UgZGF0YSAgICovCisgICAgICBjYXNlIDE4OiAvKiBiaWcgbWV0cmljcywgUE5HIGltYWdlIGRhdGEgICAgICovCisgICAgICBjYXNlIDE5OiAvKiBtZXRyaWNzIGluIEVCTEMsIFBORyBpbWFnZSBkYXRhICovCisgICAgICAgIGxvYWRlciA9IHR0X3NiaXRfZGVjb2Rlcl9sb2FkX3BuZzsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9VU0VfUE5HICovCisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKyAgICAgICAgZ290byBGYWlsOworICAgICAgfQorCisgICAgICBpZiAoICFkZWNvZGVyLT5iaXRtYXBfYWxsb2NhdGVkICkKKyAgICAgIHsKKyAgICAgICAgZXJyb3IgPSB0dF9zYml0X2RlY29kZXJfYWxsb2NfYml0bWFwKCBkZWNvZGVyLCBsb2FkX2ZsYWdzICk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgIH0KKworICAgICAgaWYgKCBkZWNvZGVyLT5iaXRfZGVwdGggPT0gMzIgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIGRlY29kZXItPmJpdG1hcC0+cGl4ZWxfbW9kZSAhPSBGVF9QSVhFTF9NT0RFX0JHUkEgKQorICAgICAgeworICAgICAgICAvKiBGbGF0dGVuIGNvbG9yIGJpdG1hcHMgaWYgY29sb3Igd2FzIG5vdCByZXF1ZXN0ZWQuICovCisKKyAgICAgICAgRlRfTGlicmFyeSBsaWJyYXJ5ID0gZGVjb2Rlci0+ZmFjZS0+cm9vdC5nbHlwaC0+bGlicmFyeTsKKyAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgID0gZGVjb2Rlci0+c3RyZWFtLT5tZW1vcnk7CisKKyAgICAgICAgRlRfQml0bWFwIGNvbG9yLCAqb3JpZzsKKworCisgICAgICAgIGlmICggZGVjb2Rlci0+Yml0bWFwLT5waXhlbF9tb2RlICE9IEZUX1BJWEVMX01PREVfR1JBWSB8fAorICAgICAgICAgICAgIHhfcG9zICE9IDAgfHwgeV9wb3MgIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICB7CisgICAgICAgICAgLyogU2hvdWxkbid0IGhhcHBlbi4gKi8KKyAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICAgICAgZ290byBGYWlsOworICAgICAgICB9CisKKyAgICAgICAgRlRfQml0bWFwX05ldyggJmNvbG9yICk7CisKKyAgICAgICAgY29sb3Iucm93cyAgICAgICA9IGRlY29kZXItPmJpdG1hcC0+cm93czsKKyAgICAgICAgY29sb3Iud2lkdGggICAgICA9IGRlY29kZXItPmJpdG1hcC0+d2lkdGg7CisgICAgICAgIGNvbG9yLnBpdGNoICAgICAgPSBjb2xvci53aWR0aCAqIDQ7CisgICAgICAgIGNvbG9yLnBpeGVsX21vZGUgPSBGVF9QSVhFTF9NT0RFX0JHUkE7CisKKyAgICAgICAgaWYgKCBGVF9BTExPQyggY29sb3IuYnVmZmVyLCBjb2xvci5yb3dzICogY29sb3IucGl0Y2ggKSApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgIG9yaWcgICAgICAgICAgICA9IGRlY29kZXItPmJpdG1hcDsKKyAgICAgICAgZGVjb2Rlci0+Yml0bWFwID0gJmNvbG9yOworCisgICAgICAgIGVycm9yID0gbG9hZGVyKCBkZWNvZGVyLCBsb2FkX2ZsYWdzLCBwLCBwX2xpbWl0LCB4X3BvcywgeV9wb3MgKTsKKworICAgICAgICBkZWNvZGVyLT5iaXRtYXAgPSBvcmlnOworCisgICAgICAgIC8qIGV4cGxpY2l0bHkgdGVzdCBhZ2FpbnN0IEZUX0Vycl9PayB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncyAqLworICAgICAgICAvKiAod2UgZG8gYW4gYXNzaWdubWVudCB3aXRoaW4gYSBjb25kaXRpb25hbCkgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICggZXJyb3IgPSBGVF9CaXRtYXBfQ29udmVydCggbGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXItPmJpdG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgKSApICE9IEZUX0Vycl9PayApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9CaXRtYXBfRG9uZSggbGlicmFyeSwgJmNvbG9yICk7CisgICAgICAgICAgZ290byBGYWlsOworICAgICAgICB9CisKKyAgICAgICAgRlRfQml0bWFwX0RvbmUoIGxpYnJhcnksICZjb2xvciApOworICAgICAgfQorCisgICAgICBlbHNlCisgICAgICAgIGVycm9yID0gbG9hZGVyKCBkZWNvZGVyLCBsb2FkX2ZsYWdzLCBwLCBwX2xpbWl0LCB4X3BvcywgeV9wb3MgKTsKKyAgICB9CisKKyAgRmFpbDoKKyAgICBGVF9GUkFNRV9SRUxFQVNFKCBkYXRhICk7CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICB0dF9zYml0X2RlY29kZXJfbG9hZF9pbWFnZSggVFRfU0JpdERlY29kZXIgIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICB4X3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICB5X3BvcyApCisgIHsKKyAgICAvKgorICAgICAqICBGaXJzdCwgd2UgZmluZCB0aGUgY29ycmVjdCBzdHJpa2UgcmFuZ2UgdGhhdCBhcHBsaWVzIHRvIHRoaXMKKyAgICAgKiAgZ2x5cGggaW5kZXguCisgICAgICovCisKKyAgICBGVF9CeXRlKiAgcCAgICAgICAgICA9IGRlY29kZXItPmVibGNfYmFzZSArIGRlY29kZXItPnN0cmlrZV9pbmRleF9hcnJheTsKKyAgICBGVF9CeXRlKiAgcF9saW1pdCAgICA9IGRlY29kZXItPmVibGNfbGltaXQ7CisgICAgRlRfVUxvbmcgIG51bV9yYW5nZXMgPSBkZWNvZGVyLT5zdHJpa2VfaW5kZXhfY291bnQ7CisgICAgRlRfVUludCAgIHN0YXJ0LCBlbmQsIGluZGV4X2Zvcm1hdCwgaW1hZ2VfZm9ybWF0OworICAgIEZUX1VMb25nICBpbWFnZV9zdGFydCA9IDAsIGltYWdlX2VuZCA9IDAsIGltYWdlX29mZnNldDsKKworCisgICAgZm9yICggOyBudW1fcmFuZ2VzID4gMDsgbnVtX3Jhbmdlcy0tICkKKyAgICB7CisgICAgICBzdGFydCA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisgICAgICBlbmQgICA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisKKyAgICAgIGlmICggZ2x5cGhfaW5kZXggPj0gc3RhcnQgJiYgZ2x5cGhfaW5kZXggPD0gZW5kICkKKyAgICAgICAgZ290byBGb3VuZFJhbmdlOworCisgICAgICBwICs9IDQ7ICAvKiBpZ25vcmUgaW5kZXggb2Zmc2V0ICovCisgICAgfQorICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgRm91bmRSYW5nZToKKyAgICBpbWFnZV9vZmZzZXQgPSBGVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICAvKiBvdmVyZmxvdyBjaGVjayAqLworICAgIHAgPSBkZWNvZGVyLT5lYmxjX2Jhc2UgKyBkZWNvZGVyLT5zdHJpa2VfaW5kZXhfYXJyYXk7CisgICAgaWYgKCBpbWFnZV9vZmZzZXQgPiAoRlRfVUxvbmcpKCBwX2xpbWl0IC0gcCApICkKKyAgICAgIGdvdG8gRmFpbHVyZTsKKworICAgIHAgKz0gaW1hZ2Vfb2Zmc2V0OworICAgIGlmICggcCArIDggPiBwX2xpbWl0ICkKKyAgICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgICAvKiBub3cgZmluZCB0aGUgZ2x5cGgncyBsb2NhdGlvbiBhbmQgZXh0ZW5kIHdpdGhpbiB0aGUgZWJkdCB0YWJsZSAqLworICAgIGluZGV4X2Zvcm1hdCA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisgICAgaW1hZ2VfZm9ybWF0ID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICBpbWFnZV9vZmZzZXQgPSBGVF9ORVhUX1VMT05HICggcCApOworCisgICAgc3dpdGNoICggaW5kZXhfZm9ybWF0ICkKKyAgICB7CisgICAgY2FzZSAxOiAvKiA0LWJ5dGUgb2Zmc2V0cyByZWxhdGl2ZSB0byBgaW1hZ2Vfb2Zmc2V0JyAqLworICAgICAgeworICAgICAgICBwICs9IDQgKiAoIGdseXBoX2luZGV4IC0gc3RhcnQgKTsKKyAgICAgICAgaWYgKCBwICsgOCA+IHBfbGltaXQgKQorICAgICAgICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgICAgICAgaW1hZ2Vfc3RhcnQgPSBGVF9ORVhUX1VMT05HKCBwICk7CisgICAgICAgIGltYWdlX2VuZCAgID0gRlRfTkVYVF9VTE9ORyggcCApOworCisgICAgICAgIGlmICggaW1hZ2Vfc3RhcnQgPT0gaW1hZ2VfZW5kICkgIC8qIG1pc3NpbmcgZ2x5cGggKi8KKyAgICAgICAgICBnb3RvIE5vQml0bWFwOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDI6IC8qIGJpZyBtZXRyaWNzLCBjb25zdGFudCBpbWFnZSBzaXplICovCisgICAgICB7CisgICAgICAgIEZUX1VMb25nICBpbWFnZV9zaXplOworCisKKyAgICAgICAgaWYgKCBwICsgMTIgPiBwX2xpbWl0ICkKKyAgICAgICAgICBnb3RvIE5vQml0bWFwOworCisgICAgICAgIGltYWdlX3NpemUgPSBGVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICAgICAgaWYgKCB0dF9zYml0X2RlY29kZXJfbG9hZF9tZXRyaWNzKCBkZWNvZGVyLCAmcCwgcF9saW1pdCwgMSApICkKKyAgICAgICAgICBnb3RvIE5vQml0bWFwOworCisgICAgICAgIGltYWdlX3N0YXJ0ID0gaW1hZ2Vfc2l6ZSAqICggZ2x5cGhfaW5kZXggLSBzdGFydCApOworICAgICAgICBpbWFnZV9lbmQgICA9IGltYWdlX3N0YXJ0ICsgaW1hZ2Vfc2l6ZTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAzOiAvKiAyLWJ5dGUgb2Zmc2V0cyByZWxhdGl2ZSB0byAnaW1hZ2Vfb2Zmc2V0JyAqLworICAgICAgeworICAgICAgICBwICs9IDIgKiAoIGdseXBoX2luZGV4IC0gc3RhcnQgKTsKKyAgICAgICAgaWYgKCBwICsgNCA+IHBfbGltaXQgKQorICAgICAgICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgICAgICAgaW1hZ2Vfc3RhcnQgPSBGVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgICBpbWFnZV9lbmQgICA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisKKyAgICAgICAgaWYgKCBpbWFnZV9zdGFydCA9PSBpbWFnZV9lbmQgKSAgLyogbWlzc2luZyBnbHlwaCAqLworICAgICAgICAgIGdvdG8gTm9CaXRtYXA7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgNDogLyogc3BhcnNlIGdseXBoIGFycmF5IHdpdGggKGdseXBoLG9mZnNldCkgcGFpcnMgKi8KKyAgICAgIHsKKyAgICAgICAgRlRfVUxvbmcgIG1tLCBudW1fZ2x5cGhzOworCisKKyAgICAgICAgaWYgKCBwICsgNCA+IHBfbGltaXQgKQorICAgICAgICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgICAgICAgbnVtX2dseXBocyA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgICAvKiBvdmVyZmxvdyBjaGVjayBmb3IgcCArICggbnVtX2dseXBocyArIDEgKSAqIDQgKi8KKyAgICAgICAgaWYgKCBudW1fZ2x5cGhzID4gKEZUX1VMb25nKSggKCAoIHBfbGltaXQgLSBwICkgPj4gMiApIC0gMSApICkKKyAgICAgICAgICBnb3RvIE5vQml0bWFwOworCisgICAgICAgIGZvciAoIG1tID0gMDsgbW0gPCBudW1fZ2x5cGhzOyBtbSsrICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1VJbnQgIGdpbmRleCA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisKKworICAgICAgICAgIGlmICggZ2luZGV4ID09IGdseXBoX2luZGV4ICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpbWFnZV9zdGFydCA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisgICAgICAgICAgICBwICAgICAgICAgICs9IDI7CisgICAgICAgICAgICBpbWFnZV9lbmQgICA9IEZUX1BFRUtfVVNIT1JUKCBwICk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgcCArPSAyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBtbSA+PSBudW1fZ2x5cGhzICkKKyAgICAgICAgICBnb3RvIE5vQml0bWFwOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDU6IC8qIGNvbnN0YW50IG1ldHJpY3Mgd2l0aCBzcGFyc2UgZ2x5cGggY29kZXMgKi8KKyAgICBjYXNlIDE5OgorICAgICAgeworICAgICAgICBGVF9VTG9uZyAgaW1hZ2Vfc2l6ZSwgbW0sIG51bV9nbHlwaHM7CisKKworICAgICAgICBpZiAoIHAgKyAxNiA+IHBfbGltaXQgKQorICAgICAgICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgICAgICAgaW1hZ2Vfc2l6ZSA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgICBpZiAoIHR0X3NiaXRfZGVjb2Rlcl9sb2FkX21ldHJpY3MoIGRlY29kZXIsICZwLCBwX2xpbWl0LCAxICkgKQorICAgICAgICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgICAgICAgbnVtX2dseXBocyA9IEZUX05FWFRfVUxPTkcoIHAgKTsKKworICAgICAgICAvKiBvdmVyZmxvdyBjaGVjayBmb3IgcCArIDIgKiBudW1fZ2x5cGhzICovCisgICAgICAgIGlmICggbnVtX2dseXBocyA+IChGVF9VTG9uZykoICggcF9saW1pdCAtIHAgKSA+PiAxICkgKQorICAgICAgICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgICAgICAgZm9yICggbW0gPSAwOyBtbSA8IG51bV9nbHlwaHM7IG1tKysgKQorICAgICAgICB7CisgICAgICAgICAgRlRfVUludCAgZ2luZGV4ID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKworCisgICAgICAgICAgaWYgKCBnaW5kZXggPT0gZ2x5cGhfaW5kZXggKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIG1tID49IG51bV9nbHlwaHMgKQorICAgICAgICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgICAgICAgaW1hZ2Vfc3RhcnQgPSBpbWFnZV9zaXplICogbW07CisgICAgICAgIGltYWdlX2VuZCAgID0gaW1hZ2Vfc3RhcnQgKyBpbWFnZV9zaXplOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgZ290byBOb0JpdG1hcDsKKyAgICB9CisKKyAgICBpZiAoIGltYWdlX3N0YXJ0ID4gaW1hZ2VfZW5kICkKKyAgICAgIGdvdG8gTm9CaXRtYXA7CisKKyAgICBpbWFnZV9lbmQgIC09IGltYWdlX3N0YXJ0OworICAgIGltYWdlX3N0YXJ0ID0gaW1hZ2Vfb2Zmc2V0ICsgaW1hZ2Vfc3RhcnQ7CisKKyAgICBGVF9UUkFDRTMoKCAidHRfc2JpdF9kZWNvZGVyX2xvYWRfaW1hZ2U6IgorICAgICAgICAgICAgICAgICIgZm91bmQgc2JpdCAoZm9ybWF0ICVkKSBmb3IgZ2x5cGggaW5kZXggJWRcbiIsCisgICAgICAgICAgICAgICAgaW1hZ2VfZm9ybWF0LCBnbHlwaF9pbmRleCApKTsKKworICAgIHJldHVybiB0dF9zYml0X2RlY29kZXJfbG9hZF9iaXRtYXAoIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZV9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Vfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VfZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlfcG9zICk7CisKKyAgRmFpbHVyZToKKyAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKworICBOb0JpdG1hcDoKKyAgICBGVF9UUkFDRTQoKCAidHRfc2JpdF9kZWNvZGVyX2xvYWRfaW1hZ2U6IgorICAgICAgICAgICAgICAgICIgbm8gc2JpdCBmb3VuZCBmb3IgZ2x5cGggaW5kZXggJWRcbiIsIGdseXBoX2luZGV4ICkpOworCisgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgIH0KKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9zYml0X2ltYWdlKCBUVF9GYWNlICAgICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICAgICAgc3RyaWtlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgICBsb2FkX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgICAgICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQml0bWFwICAgICAgICAgICAqbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfU0JpdF9NZXRyaWNzUmVjICAqbWV0cmljcyApCisgIHsKKyAgICBUVF9TQml0RGVjb2RlclJlYyAgZGVjb2RlclsxXTsKKyAgICBGVF9FcnJvciAgICAgICAgICAgZXJyb3I7CisKKyAgICBGVF9VTlVTRUQoIGxvYWRfZmxhZ3MgKTsKKyAgICBGVF9VTlVTRUQoIHN0cmVhbSApOworICAgIEZUX1VOVVNFRCggbWFwICk7CisKKworICAgIGVycm9yID0gdHRfc2JpdF9kZWNvZGVyX2luaXQoIGRlY29kZXIsIGZhY2UsIHN0cmlrZV9pbmRleCwgbWV0cmljcyApOworICAgIGlmICggIWVycm9yICkKKyAgICB7CisgICAgICBlcnJvciA9IHR0X3NiaXRfZGVjb2Rlcl9sb2FkX2ltYWdlKCBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgKTsKKyAgICAgIHR0X3NiaXRfZGVjb2Rlcl9kb25lKCBkZWNvZGVyICk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworLyogRU9GICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRzYml0LmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvdHRzYml0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMwOTZkOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc2ZudC90dHNiaXQuaApAQCAtMCwwICsxLDYzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dHNiaXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHJ1ZVR5cGUgYW5kIE9wZW5UeXBlIGVtYmVkZGVkIGJpdG1hcCBzdXBwb3J0IChzcGVjaWZpY2F0aW9uKS4gICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwOCwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVFNCSVRfSF9fCisjZGVmaW5lIF9fVFRTQklUX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAidHRsb2FkLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfZWJsYyggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIHR0X2ZhY2VfZnJlZV9lYmxjKCBUVF9GYWNlICBmYWNlICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX3NldF9zYml0X3N0cmlrZSggVFRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VTG9uZyogICAgICAgIGFzdHJpa2VfaW5kZXggKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfc3RyaWtlX21ldHJpY3MoIFRUX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgICAgICAgICAgc3RyaWtlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1NpemVfTWV0cmljcyogIG1ldHJpY3MgKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfc2JpdF9pbWFnZSggVFRfRmFjZSAgICAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICAgICAgICAgIHN0cmlrZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgICAgICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JpdG1hcCAgICAgICAgICAgKm1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUX1NCaXRfTWV0cmljc1JlYyAgKm1ldHJpY3MgKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUU0JJVF9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL0phbWZpbGUgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9KYW1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NDk2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9KYW1maWxlCkBAIC0wLDAgKzEsMjkgQEAKKyMgRnJlZVR5cGUgMiBzcmMvc21vb3RoIEphbWZpbGUKKyMKKyMgQ29weXJpZ2h0IDIwMDEgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCitTdWJEaXIgIEZUMl9UT1AgJChGVDJfU1JDX0RJUikgc21vb3RoIDsKKworeworICBsb2NhbCAgX3NvdXJjZXMgOworCisgIGlmICQoRlQyX01VTFRJKQorICB7CisgICAgX3NvdXJjZXMgPSBmdGdyYXlzIGZ0c21vb3RoIGZ0c3BpYyA7CisgIH0KKyAgZWxzZQorICB7CisgICAgX3NvdXJjZXMgPSBzbW9vdGggOworICB9CisKKyAgTGlicmFyeSAgJChGVDJfTElCKSA6ICQoX3NvdXJjZXMpLmMgOworfQorCisjIGVuZCBvZiBzcmMvc21vb3RoIEphbWZpbGUKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL2Z0Z3JheXMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL2Z0Z3JheXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWFmZWVkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnRncmF5cy5jCkBAIC0wLDAgKzEsMjEzNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRncmF5cy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEEgbmV3IGBwZXJmZWN0JyBhbnRpLWFsaWFzaW5nIHJlbmRlcmVyIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAwLTIwMDMsIDIwMDUtMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgZmlsZSBjYW4gYmUgY29tcGlsZWQgd2l0aG91dCB0aGUgcmVzdCBvZiB0aGUgRnJlZVR5cGUgZW5naW5lLCBieSAqLworICAvKiBkZWZpbmluZyB0aGUgX1NUQU5EQUxPTkVfIG1hY3JvIHdoZW4gY29tcGlsaW5nIGl0LiAgWW91IGFsc28gbmVlZCB0byAgKi8KKyAgLyogcHV0IHRoZSBmaWxlcyBgZnRncmF5cy5oJyBhbmQgYGZ0aW1hZ2UuaCcgaW50byB0aGUgY3VycmVudCAgICAgICAgICAgICovCisgIC8qIGNvbXBpbGF0aW9uIGRpcmVjdG9yeS4gIFR5cGljYWxseSwgeW91IGNvdWxkIGRvIHNvbWV0aGluZyBsaWtlICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSBjb3B5IGBzcmMvc21vb3RoL2Z0Z3JheXMuYycgKHRoaXMgZmlsZSkgdG8geW91ciBjdXJyZW50IGRpcmVjdG9yeSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtIGNvcHkgYGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oJyBhbmQgYHNyYy9zbW9vdGgvZnRncmF5cy5oJyB0byB0aGUgKi8KKyAgLyogICBzYW1lIGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAtIGNvbXBpbGUgYGZ0Z3JheXMnIHdpdGggdGhlIF9TVEFOREFMT05FXyBtYWNybyBkZWZpbmVkLCBhcyBpbiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICBjYyAtYyAtRF9TVEFOREFMT05FXyBmdGdyYXlzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIHJlbmRlcmVyIGNhbiBiZSBpbml0aWFsaXplZCB3aXRoIGEgY2FsbCB0byAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIGBmdF9ncmF5X3Jhc3Rlci5yYXN0ZXJfbmV3JzsgYW4gYW50aS1hbGlhc2VkIGJpdG1hcCBjYW4gYmUgZ2VuZXJhdGVkICAqLworICAvKiB3aXRoIGEgY2FsbCB0byBgZnRfZ3JheV9yYXN0ZXIucmFzdGVyX3JlbmRlcicuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNlZSB0aGUgY29tbWVudHMgYW5kIGRvY3VtZW50YXRpb24gaW4gdGhlIGZpbGUgYGZ0aW1hZ2UuaCcgZm9yIG1vcmUgICAqLworICAvKiBkZXRhaWxzIG9uIGhvdyB0aGUgcmFzdGVyIHdvcmtzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBpcyBhIG5ldyBhbnRpLWFsaWFzaW5nIHNjYW4tY29udmVydGVyIGZvciBGcmVlVHlwZSAyLiAgVGhlICAgICAgICovCisgIC8qIGFsZ29yaXRobSB1c2VkIGhlcmUgaXMgX3ZlcnlfIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgaW4gdGhlIHN0YW5kYXJkICAqLworICAvKiBgZnRyYXN0ZXInIG1vZHVsZS4gIEFjdHVhbGx5LCBgZnRncmF5cycgY29tcHV0ZXMgdGhlIF9leGFjdF8gICAgICAgICAgKi8KKyAgLyogY292ZXJhZ2Ugb2YgdGhlIG91dGxpbmUgb24gZWFjaCBwaXhlbCBjZWxsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJdCBpcyBiYXNlZCBvbiBpZGVhcyB0aGF0IEkgaW5pdGlhbGx5IGZvdW5kIGluIFJhcGggTGV2aWVuJ3MgICAgICAgICAgKi8KKyAgLyogZXhjZWxsZW50IExpYkFydCBncmFwaGljcyBsaWJyYXJ5IChzZWUgaHR0cDovL3d3dy5sZXZpZW4uY29tL2xpYmFydCAgICovCisgIC8qIGZvciBtb3JlIGluZm9ybWF0aW9uLCB0aG91Z2ggdGhlIHdlYiBwYWdlcyBkbyBub3QgdGVsbCBhbnl0aGluZyAgICAgICAqLworICAvKiBhYm91dCB0aGUgcmVuZGVyZXI7IHlvdSdsbCBoYXZlIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgdG8gICAgICAgKi8KKyAgLyogdW5kZXJzdGFuZCBob3cgaXQgd29ya3MpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOb3RlLCBob3dldmVyLCB0aGF0IHRoaXMgaXMgYSBfdmVyeV8gZGlmZmVyZW50IGltcGxlbWVudGF0aW9uICAgICAgICAgKi8KKyAgLyogY29tcGFyZWQgdG8gUmFwaCdzLiAgQ292ZXJhZ2UgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIGEgdmVyeSAgICAgICAgICovCisgIC8qIGRpZmZlcmVudCB3YXksIGFuZCBJIGRvbid0IHVzZSBzb3J0ZWQgdmVjdG9yIHBhdGhzLiAgQWxzbywgaXQgZG9lc24ndCAqLworICAvKiB1c2UgZmxvYXRpbmcgcG9pbnQgdmFsdWVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgcmVuZGVyZXIgaGFzIHRoZSBmb2xsb3dpbmcgYWR2YW50YWdlczogICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSBJdCBkb2Vzbid0IG5lZWQgYW4gaW50ZXJtZWRpYXRlIGJpdG1hcC4gIEluc3RlYWQsIG9uZSBjYW4gc3VwcGx5IGEgICovCisgIC8qICAgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBieSB0aGUgcmVuZGVyZXIgdG8gZHJhdyBncmF5ICAqLworICAvKiAgIHNwYW5zIG9uIGFueSB0YXJnZXQgc3VyZmFjZS4gIFlvdSBjYW4gdGh1cyBkbyBkaXJlY3QgY29tcG9zaXRpb24gb24gKi8KKyAgLyogICBhbnkga2luZCBvZiBiaXRtYXAsIHByb3ZpZGVkIHRoYXQgeW91IGdpdmUgdGhlIHJlbmRlcmVyIHRoZSByaWdodCAgICovCisgIC8qICAgY2FsbGJhY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSBBIHBlcmZlY3QgYW50aS1hbGlhc2VyLCBpLmUuLCBpdCBjb21wdXRlcyB0aGUgX2V4YWN0XyBjb3ZlcmFnZSBvbiAgICovCisgIC8qICAgZWFjaCBwaXhlbCBjZWxsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSBJdCBwZXJmb3JtcyBhIHNpbmdsZSBwYXNzIG9uIHRoZSBvdXRsaW5lICh0aGUgYHN0YW5kYXJkJyBGVDIgICAgICAgICovCisgIC8qICAgcmVuZGVyZXIgbWFrZXMgdHdvIHBhc3NlcykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSBJdCBjYW4gZWFzaWx5IGJlIG1vZGlmaWVkIHRvIHJlbmRlciB0byBfYW55XyBudW1iZXIgb2YgZ3JheSBsZXZlbHMgICovCisgIC8qICAgY2hlYXBseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSBGb3Igc21hbGwgKDwgMjApIHBpeGVsIHNpemVzLCBpdCBpcyBmYXN0ZXIgdGhhbiB0aGUgc3RhbmRhcmQgICAgICAgICovCisgIC8qICAgcmVuZGVyZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV9zbW9vdGgKKworCisjaWZkZWYgX1NUQU5EQUxPTkVfCisKKworICAvKiBBdXhpbGlhcnkgbWFjcm9zIGZvciB0b2tlbiBjb25jYXRlbmF0aW9uLiAqLworI2RlZmluZSBGVF9FUlJfWENBVCggeCwgeSApICB4ICMjIHkKKyNkZWZpbmUgRlRfRVJSX0NBVCggeCwgeSApICAgRlRfRVJSX1hDQVQoIHgsIHkgKQorCisKKyAgLyogZGVmaW5lIHRoaXMgdG8gZHVtcCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gKi8KKy8qICNkZWZpbmUgRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzZXRqbXAuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNkZWZpbmUgRlRfVUlOVF9NQVggIFVJTlRfTUFYCisjZGVmaW5lIEZUX0lOVF9NQVggICBJTlRfTUFYCisKKyNkZWZpbmUgZnRfbWVtc2V0ICAgbWVtc2V0CisKKyNkZWZpbmUgZnRfc2V0am1wICAgc2V0am1wCisjZGVmaW5lIGZ0X2xvbmdqbXAgIGxvbmdqbXAKKyNkZWZpbmUgZnRfam1wX2J1ZiAgam1wX2J1ZgorCit0eXBlZGVmIHB0cmRpZmZfdCAgRlRfUHRyRGlzdDsKKworCisjZGVmaW5lIEVyclJhc3Rlcl9JbnZhbGlkX01vZGUgICAgICAtMgorI2RlZmluZSBFcnJSYXN0ZXJfSW52YWxpZF9PdXRsaW5lICAgLTEKKyNkZWZpbmUgRXJyUmFzdGVyX0ludmFsaWRfQXJndW1lbnQgIC0zCisjZGVmaW5lIEVyclJhc3Rlcl9NZW1vcnlfT3ZlcmZsb3cgICAtNAorCisjZGVmaW5lIEZUX0JFR0lOX0hFQURFUgorI2RlZmluZSBGVF9FTkRfSEVBREVSCisKKyNpbmNsdWRlICJmdGltYWdlLmgiCisjaW5jbHVkZSAiZnRncmF5cy5oIgorCisKKyAgLyogVGhpcyBtYWNybyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgaXMgdW51c2VkLiAqLworICAvKiBJdHMgcHVycG9zZSBpcyBzaW1wbHkgdG8gcmVkdWNlIGNvbXBpbGVyIHdhcm5pbmdzLiAgTm90ZSBhbHNvIHRoYXQgICovCisgIC8qIHNpbXBseSBkZWZpbmluZyBpdCBhcyBgKHZvaWQpeCcgZG9lc24ndCBhdm9pZCB3YXJuaW5ncyB3aXRoIGNlcnRhaW4gKi8KKyAgLyogQU5TSSBjb21waWxlcnMgKGUuZy4gTENDKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBGVF9VTlVTRUQoIHggKSAgKHgpID0gKHgpCisKKworICAvKiB3ZSBvbmx5IHVzZSBsZXZlbCA1ICYgNyB0cmFjaW5nIG1lc3NhZ2VzOyBjZi4gZnRkZWJ1Zy5oICovCisKKyNpZmRlZiBGVF9ERUJVR19MRVZFTF9UUkFDRQorCisgIHZvaWQKKyAgRlRfTWVzc2FnZSggY29uc3QgY2hhciogIGZtdCwKKyAgICAgICAgICAgICAgLi4uICkKKyAgeworICAgIHZhX2xpc3QgIGFwOworCisKKyAgICB2YV9zdGFydCggYXAsIGZtdCApOworICAgIHZmcHJpbnRmKCBzdGRlcnIsIGZtdCwgYXAgKTsKKyAgICB2YV9lbmQoIGFwICk7CisgIH0KKworCisgIC8qIGVtcHR5IGZ1bmN0aW9uIHVzZWZ1bCBmb3Igc2V0dGluZyBhIGJyZWFrcG9pbnQgdG8gY2F0Y2ggZXJyb3JzICovCisgIGludAorICBGVF9UaHJvdyggaW50ICAgICAgICAgIGVycm9yLAorICAgICAgICAgICAgaW50ICAgICAgICAgIGxpbmUsCisgICAgICAgICAgICBjb25zdCBjaGFyKiAgZmlsZSApCisgIHsKKyAgICBGVF9VTlVTRUQoIGVycm9yICk7CisgICAgRlRfVU5VU0VEKCBsaW5lICk7CisgICAgRlRfVU5VU0VEKCBmaWxlICk7CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgLyogd2UgZG9uJ3QgaGFuZGxlIHRyYWNpbmcgbGV2ZWxzIGluIHN0YW5kLWFsb25lIG1vZGU7ICovCisjaWZuZGVmIEZUX1RSQUNFNQorI2RlZmluZSBGVF9UUkFDRTUoIHZhcmZvcm1hdCApICBGVF9NZXNzYWdlIHZhcmZvcm1hdAorI2VuZGlmCisjaWZuZGVmIEZUX1RSQUNFNworI2RlZmluZSBGVF9UUkFDRTcoIHZhcmZvcm1hdCApICBGVF9NZXNzYWdlIHZhcmZvcm1hdAorI2VuZGlmCisjaWZuZGVmIEZUX0VSUk9SCisjZGVmaW5lIEZUX0VSUk9SKCB2YXJmb3JtYXQgKSAgIEZUX01lc3NhZ2UgdmFyZm9ybWF0CisjZW5kaWYKKworI2RlZmluZSBGVF9USFJPVyggZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEZUX1Rocm93KCBGVF9FUlJfQ0FUKCBFcnJSYXN0ZXIsIGUgKSwgICBcCisgICAgICAgICAgICAgICAgICAgICAgX19MSU5FX18sICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fICkgICAgICAgICAgICAgICAgICB8IFwKKyAgICAgICAgICAgIEZUX0VSUl9DQVQoIEVyclJhc3RlciwgZSApICAgICAgICAgICAgKQorCisjZWxzZSAvKiAhRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworI2RlZmluZSBGVF9UUkFDRTUoIHggKSAgZG8geyB9IHdoaWxlICggMCApICAgICAvKiBub3RoaW5nICovCisjZGVmaW5lIEZUX1RSQUNFNyggeCApICBkbyB7IH0gd2hpbGUgKCAwICkgICAgIC8qIG5vdGhpbmcgKi8KKyNkZWZpbmUgRlRfRVJST1IoIHggKSAgIGRvIHsgfSB3aGlsZSAoIDAgKSAgICAgLyogbm90aGluZyAqLworI2RlZmluZSBGVF9USFJPVyggZSApICAgRlRfRVJSX0NBVCggRXJyUmFzdGVyXywgZSApCisKKworI2VuZGlmIC8qICFGVF9ERUJVR19MRVZFTF9UUkFDRSAqLworCisKKyNkZWZpbmUgRlRfREVGSU5FX09VVExJTkVfRlVOQ1MoIGNsYXNzXywgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlX3RvXywgbGluZV90b18sICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uaWNfdG9fLCBjdWJpY190b18sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0XywgZGVsdGFfICkgICAgICBcCisgICAgICAgICAgc3RhdGljIGNvbnN0IEZUX091dGxpbmVfRnVuY3MgY2xhc3NfID0gICAgICAgXAorICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIG1vdmVfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBsaW5lX3RvXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY29uaWNfdG9fLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGN1YmljX3RvXywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzaGlmdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZGVsdGFfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIH07CisKKyNkZWZpbmUgRlRfREVGSU5FX1JBU1RFUl9GVU5DUyggY2xhc3NfLCBnbHlwaF9mb3JtYXRfLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyX25ld18sIHJhc3Rlcl9yZXNldF8sICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyX3NldF9tb2RlXywgcmFzdGVyX3JlbmRlcl8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyX2RvbmVfICkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBjb25zdCBGVF9SYXN0ZXJfRnVuY3MgY2xhc3NfID0gICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGdseXBoX2Zvcm1hdF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJhc3Rlcl9uZXdfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJhc3Rlcl9yZXNldF8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJhc3Rlcl9zZXRfbW9kZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJhc3Rlcl9yZW5kZXJfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJhc3Rlcl9kb25lXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIH07CisKKworI2Vsc2UgLyogIV9TVEFOREFMT05FXyAqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiZnRncmF5cy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmgiCisKKyNpbmNsdWRlICJmdHNtZXJycy5oIgorCisjaW5jbHVkZSAiZnRzcGljLmgiCisKKyNkZWZpbmUgU21vb3RoX0Vycl9JbnZhbGlkX01vZGUgICAgIFNtb290aF9FcnJfQ2Fubm90X1JlbmRlcl9HbHlwaAorI2RlZmluZSBTbW9vdGhfRXJyX01lbW9yeV9PdmVyZmxvdyAgU21vb3RoX0Vycl9PdXRfT2ZfTWVtb3J5CisjZGVmaW5lIEVyclJhc3Rlcl9NZW1vcnlfT3ZlcmZsb3cgICBTbW9vdGhfRXJyX091dF9PZl9NZW1vcnkKKworCisjZW5kaWYgLyogIV9TVEFOREFMT05FXyAqLworCisKKyNpZm5kZWYgRlRfTUVNX1NFVAorI2RlZmluZSBGVF9NRU1fU0VUKCBkLCBzLCBjICkgIGZ0X21lbXNldCggZCwgcywgYyApCisjZW5kaWYKKworI2lmbmRlZiBGVF9NRU1fWkVSTworI2RlZmluZSBGVF9NRU1fWkVSTyggZGVzdCwgY291bnQgKSAgRlRfTUVNX1NFVCggZGVzdCwgMCwgY291bnQgKQorI2VuZGlmCisKKyAgLyogYXMgdXN1YWwsIGZvciB0aGUgc3BlZWQgaHVuZ3J5IDotKSAqLworCisjdW5kZWYgUkFTX0FSRworI3VuZGVmIFJBU19BUkdfCisjdW5kZWYgUkFTX1ZBUgorI3VuZGVmIFJBU19WQVJfCisKKyNpZm5kZWYgRlRfU1RBVElDX1JBU1RFUgorCisjZGVmaW5lIFJBU19BUkcgICBncmF5X1BXb3JrZXIgIHdvcmtlcgorI2RlZmluZSBSQVNfQVJHXyAgZ3JheV9QV29ya2VyICB3b3JrZXIsCisKKyNkZWZpbmUgUkFTX1ZBUiAgIHdvcmtlcgorI2RlZmluZSBSQVNfVkFSXyAgd29ya2VyLAorCisjZWxzZSAvKiBGVF9TVEFUSUNfUkFTVEVSICovCisKKyNkZWZpbmUgUkFTX0FSRyAgIC8qIGVtcHR5ICovCisjZGVmaW5lIFJBU19BUkdfICAvKiBlbXB0eSAqLworI2RlZmluZSBSQVNfVkFSICAgLyogZW1wdHkgKi8KKyNkZWZpbmUgUkFTX1ZBUl8gIC8qIGVtcHR5ICovCisKKyNlbmRpZiAvKiBGVF9TVEFUSUNfUkFTVEVSICovCisKKworICAvKiBtdXN0IGJlIGF0IGxlYXN0IDYgYml0cyEgKi8KKyNkZWZpbmUgUElYRUxfQklUUyAgOAorCisjdW5kZWYgRkxPT1IKKyN1bmRlZiBDRUlMSU5HCisjdW5kZWYgVFJVTkMKKyN1bmRlZiBTQ0FMRUQKKworI2RlZmluZSBPTkVfUElYRUwgICAgICAgKCAxTCA8PCBQSVhFTF9CSVRTICkKKyNkZWZpbmUgUElYRUxfTUFTSyAgICAgICggLTFMIDw8IFBJWEVMX0JJVFMgKQorI2RlZmluZSBUUlVOQyggeCApICAgICAgKCAoVENvb3JkKSggKHgpID4+IFBJWEVMX0JJVFMgKSApCisjZGVmaW5lIFNVQlBJWEVMUyggeCApICAoIChUUG9zKSh4KSA8PCBQSVhFTF9CSVRTICkKKyNkZWZpbmUgRkxPT1IoIHggKSAgICAgICggKHgpICYgLU9ORV9QSVhFTCApCisjZGVmaW5lIENFSUxJTkcoIHggKSAgICAoICggKHgpICsgT05FX1BJWEVMIC0gMSApICYgLU9ORV9QSVhFTCApCisjZGVmaW5lIFJPVU5EKCB4ICkgICAgICAoICggKHgpICsgT05FX1BJWEVMIC8gMiApICYgLU9ORV9QSVhFTCApCisKKyNpZiBQSVhFTF9CSVRTID49IDYKKyNkZWZpbmUgVVBTQ0FMRSggeCApICAgICggKHgpIDw8ICggUElYRUxfQklUUyAtIDYgKSApCisjZGVmaW5lIERPV05TQ0FMRSggeCApICAoICh4KSA+PiAoIFBJWEVMX0JJVFMgLSA2ICkgKQorI2Vsc2UKKyNkZWZpbmUgVVBTQ0FMRSggeCApICAgICggKHgpID4+ICggNiAtIFBJWEVMX0JJVFMgKSApCisjZGVmaW5lIERPV05TQ0FMRSggeCApICAoICh4KSA8PCAoIDYgLSBQSVhFTF9CSVRTICkgKQorI2VuZGlmCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVFlQRSBERUZJTklUSU9OUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAvKiBkb24ndCBjaGFuZ2UgdGhlIGZvbGxvd2luZyB0eXBlcyB0byBGVF9JbnQgb3IgRlRfUG9zLCBzaW5jZSB3ZSBtaWdodCAqLworICAvKiBuZWVkIHRvIGRlZmluZSB0aGVtIHRvICJmbG9hdCIgb3IgImRvdWJsZSIgd2hlbiBleHBlcmltZW50aW5nIHdpdGggICAqLworICAvKiBuZXcgYWxnb3JpdGhtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIHR5cGVkZWYgbG9uZyAgVENvb3JkOyAgIC8qIGludGVnZXIgc2NhbmxpbmUvcGl4ZWwgY29vcmRpbmF0ZSAqLworICB0eXBlZGVmIGxvbmcgIFRQb3M7ICAgICAvKiBzdWItcGl4ZWwgY29vcmRpbmF0ZSAgICAgICAgICAgICAgKi8KKworICAvKiBkZXRlcm1pbmUgdGhlIHR5cGUgdXNlZCB0byBzdG9yZSBjZWxsIGFyZWFzLiAgVGhpcyBub3JtYWxseSB0YWtlcyBhdCAqLworICAvKiBsZWFzdCBQSVhFTF9CSVRTKjIgKyAxIGJpdHMuICBPbiAxNi1iaXQgc3lzdGVtcywgd2UgbmVlZCB0byB1c2UgICAgICAqLworICAvKiBgbG9uZycgaW5zdGVhZCBvZiBgaW50Jywgb3RoZXJ3aXNlIGJhZCB0aGluZ3MgaGFwcGVuICAgICAgICAgICAgICAgICAqLworCisjaWYgUElYRUxfQklUUyA8PSA3CisKKyAgdHlwZWRlZiBpbnQgIFRBcmVhOworCisjZWxzZSAvKiBQSVhFTF9CSVRTID49IDggKi8KKworICAvKiBhcHByb3hpbWF0ZWx5IGRldGVybWluZSB0aGUgc2l6ZSBvZiBpbnRlZ2VycyB1c2luZyBhbiBBTlNJLUMgaGVhZGVyICovCisjaWYgRlRfVUlOVF9NQVggPT0gMHhGRkZGVQorICB0eXBlZGVmIGxvbmcgIFRBcmVhOworI2Vsc2UKKyAgdHlwZWRlZiBpbnQgICBUQXJlYTsKKyNlbmRpZgorCisjZW5kaWYgLyogUElYRUxfQklUUyA+PSA4ICovCisKKworICAvKiBtYXhpbXVtIG51bWJlciBvZiBncmF5IHNwYW5zIGluIGEgY2FsbCB0byB0aGUgc3BhbiBjYWxsYmFjayAqLworI2RlZmluZSBGVF9NQVhfR1JBWV9TUEFOUyAgMzIKKworCisgIHR5cGVkZWYgc3RydWN0IFRDZWxsXyogIFBDZWxsOworCisgIHR5cGVkZWYgc3RydWN0ICBUQ2VsbF8KKyAgeworICAgIFRQb3MgICAgeDsgICAgIC8qIHNhbWUgd2l0aCBncmF5X1RXb3JrZXIuZXggICAgKi8KKyAgICBUQ29vcmQgIGNvdmVyOyAvKiBzYW1lIHdpdGggZ3JheV9UV29ya2VyLmNvdmVyICovCisgICAgVEFyZWEgICBhcmVhOworICAgIFBDZWxsICAgbmV4dDsKKworICB9IFRDZWxsOworCisKKyNpZiBkZWZpbmVkKCBfTVNDX1ZFUiApICAgICAgLyogVmlzdWFsIEMrKyAoYW5kIEludGVsIEMrKykgKi8KKyAgLyogV2UgZGlzYWJsZSB0aGUgd2FybmluZyBgc3RydWN0dXJlIHdhcyBwYWRkZWQgZHVlIHRvICAgKi8KKyAgLyogX19kZWNsc3BlYyhhbGlnbigpKScgaW4gb3JkZXIgdG8gY29tcGlsZSBjbGVhbmx5IHdpdGggKi8KKyAgLyogdGhlIG1heGltdW0gbGV2ZWwgb2Ygd2FybmluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNwcmFnbWEgd2FybmluZyggcHVzaCApCisjcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0MzI0ICkKKyNlbmRpZiAvKiBfTVNDX1ZFUiAqLworCisgIHR5cGVkZWYgc3RydWN0ICBncmF5X1RXb3JrZXJfCisgIHsKKyAgICBUQ29vcmQgIGV4LCBleTsKKyAgICBUUG9zICAgIG1pbl9leCwgbWF4X2V4OworICAgIFRQb3MgICAgbWluX2V5LCBtYXhfZXk7CisgICAgVFBvcyAgICBjb3VudF9leCwgY291bnRfZXk7CisKKyAgICBUQXJlYSAgIGFyZWE7CisgICAgVENvb3JkICBjb3ZlcjsKKyAgICBpbnQgICAgIGludmFsaWQ7CisKKyAgICBQQ2VsbCAgICAgICBjZWxsczsKKyAgICBGVF9QdHJEaXN0ICBtYXhfY2VsbHM7CisgICAgRlRfUHRyRGlzdCAgbnVtX2NlbGxzOworCisgICAgVENvb3JkICBjeCwgY3k7CisgICAgVFBvcyAgICB4LCAgeTsKKworICAgIFRQb3MgICAgbGFzdF9leTsKKworICAgIEZUX1ZlY3RvciAgIGJlel9zdGFja1szMiAqIDMgKyAxXTsKKyAgICBpbnQgICAgICAgICBsZXZfc3RhY2tbMzJdOworCisgICAgRlRfT3V0bGluZSAgb3V0bGluZTsKKyAgICBGVF9CaXRtYXAgICB0YXJnZXQ7CisgICAgRlRfQkJveCAgICAgY2xpcF9ib3g7CisKKyAgICBGVF9TcGFuICAgICBncmF5X3NwYW5zW0ZUX01BWF9HUkFZX1NQQU5TXTsKKyAgICBpbnQgICAgICAgICBudW1fZ3JheV9zcGFuczsKKworICAgIEZUX1Jhc3Rlcl9TcGFuX0Z1bmMgIHJlbmRlcl9zcGFuOworICAgIHZvaWQqICAgICAgICAgICAgICAgIHJlbmRlcl9zcGFuX2RhdGE7CisgICAgaW50ICAgICAgICAgICAgICAgICAgc3Bhbl95OworCisgICAgaW50ICBiYW5kX3NpemU7CisgICAgaW50ICBiYW5kX3Nob290OworCisgICAgZnRfam1wX2J1ZiAganVtcF9idWZmZXI7CisKKyAgICB2b2lkKiAgICAgICBidWZmZXI7CisgICAgbG9uZyAgICAgICAgYnVmZmVyX3NpemU7CisKKyAgICBQQ2VsbCogICAgIHljZWxsczsKKyAgICBUUG9zICAgICAgIHljb3VudDsKKworICB9IGdyYXlfVFdvcmtlciwgKmdyYXlfUFdvcmtlcjsKKworI2lmIGRlZmluZWQoIF9NU0NfVkVSICkKKyNwcmFnbWEgd2FybmluZyggcG9wICkKKyNlbmRpZgorCisKKyNpZm5kZWYgRlRfU1RBVElDX1JBU1RFUgorI2RlZmluZSByYXMgICgqd29ya2VyKQorI2Vsc2UKKyAgc3RhdGljIGdyYXlfVFdvcmtlciAgcmFzOworI2VuZGlmCisKKworICB0eXBlZGVmIHN0cnVjdCBncmF5X1RSYXN0ZXJfCisgIHsKKyAgICB2b2lkKiAgICAgICAgIGJ1ZmZlcjsKKyAgICBsb25nICAgICAgICAgIGJ1ZmZlcl9zaXplOworICAgIGludCAgICAgICAgICAgYmFuZF9zaXplOworICAgIHZvaWQqICAgICAgICAgbWVtb3J5OworICAgIGdyYXlfUFdvcmtlciAgd29ya2VyOworCisgIH0gZ3JheV9UUmFzdGVyLCAqZ3JheV9QUmFzdGVyOworCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEluaXRpYWxpemUgdGhlIGNlbGxzIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgZ3JheV9pbml0X2NlbGxzKCBSQVNfQVJHXyB2b2lkKiAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgICAgICBieXRlX3NpemUgKQorICB7CisgICAgcmFzLmJ1ZmZlciAgICAgID0gYnVmZmVyOworICAgIHJhcy5idWZmZXJfc2l6ZSA9IGJ5dGVfc2l6ZTsKKworICAgIHJhcy55Y2VsbHMgICAgICA9IChQQ2VsbCopIGJ1ZmZlcjsKKyAgICByYXMuY2VsbHMgICAgICAgPSBOVUxMOworICAgIHJhcy5tYXhfY2VsbHMgICA9IDA7CisgICAgcmFzLm51bV9jZWxscyAgID0gMDsKKyAgICByYXMuYXJlYSAgICAgICAgPSAwOworICAgIHJhcy5jb3ZlciAgICAgICA9IDA7CisgICAgcmFzLmludmFsaWQgICAgID0gMTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBDb21wdXRlIHRoZSBvdXRsaW5lIGJvdW5kaW5nIGJveC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIGdyYXlfY29tcHV0ZV9jYm94KCBSQVNfQVJHICkKKyAgeworICAgIEZUX091dGxpbmUqICBvdXRsaW5lID0gJnJhcy5vdXRsaW5lOworICAgIEZUX1ZlY3RvciogICB2ZWMgICAgID0gb3V0bGluZS0+cG9pbnRzOworICAgIEZUX1ZlY3RvciogICBsaW1pdCAgID0gdmVjICsgb3V0bGluZS0+bl9wb2ludHM7CisKKworICAgIGlmICggb3V0bGluZS0+bl9wb2ludHMgPD0gMCApCisgICAgeworICAgICAgcmFzLm1pbl9leCA9IHJhcy5tYXhfZXggPSAwOworICAgICAgcmFzLm1pbl9leSA9IHJhcy5tYXhfZXkgPSAwOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJhcy5taW5fZXggPSByYXMubWF4X2V4ID0gdmVjLT54OworICAgIHJhcy5taW5fZXkgPSByYXMubWF4X2V5ID0gdmVjLT55OworCisgICAgdmVjKys7CisKKyAgICBmb3IgKCA7IHZlYyA8IGxpbWl0OyB2ZWMrKyApCisgICAgeworICAgICAgVFBvcyAgeCA9IHZlYy0+eDsKKyAgICAgIFRQb3MgIHkgPSB2ZWMtPnk7CisKKworICAgICAgaWYgKCB4IDwgcmFzLm1pbl9leCApIHJhcy5taW5fZXggPSB4OworICAgICAgaWYgKCB4ID4gcmFzLm1heF9leCApIHJhcy5tYXhfZXggPSB4OworICAgICAgaWYgKCB5IDwgcmFzLm1pbl9leSApIHJhcy5taW5fZXkgPSB5OworICAgICAgaWYgKCB5ID4gcmFzLm1heF9leSApIHJhcy5tYXhfZXkgPSB5OworICAgIH0KKworICAgIC8qIHRydW5jYXRlIHRoZSBib3VuZGluZyBib3ggdG8gaW50ZWdlciBwaXhlbHMgKi8KKyAgICByYXMubWluX2V4ID0gcmFzLm1pbl9leCA+PiA2OworICAgIHJhcy5taW5fZXkgPSByYXMubWluX2V5ID4+IDY7CisgICAgcmFzLm1heF9leCA9ICggcmFzLm1heF9leCArIDYzICkgPj4gNjsKKyAgICByYXMubWF4X2V5ID0gKCByYXMubWF4X2V5ICsgNjMgKSA+PiA2OworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJlY29yZCB0aGUgY3VycmVudCBjZWxsIGluIHRoZSB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIFBDZWxsCisgIGdyYXlfZmluZF9jZWxsKCBSQVNfQVJHICkKKyAgeworICAgIFBDZWxsICAqcGNlbGwsIGNlbGw7CisgICAgVFBvcyAgICB4ID0gcmFzLmV4OworCisKKyAgICBpZiAoIHggPiByYXMuY291bnRfZXggKQorICAgICAgeCA9IHJhcy5jb3VudF9leDsKKworICAgIHBjZWxsID0gJnJhcy55Y2VsbHNbcmFzLmV5XTsKKyAgICBmb3IgKDs7KQorICAgIHsKKyAgICAgIGNlbGwgPSAqcGNlbGw7CisgICAgICBpZiAoIGNlbGwgPT0gTlVMTCB8fCBjZWxsLT54ID4geCApCisgICAgICAgIGJyZWFrOworCisgICAgICBpZiAoIGNlbGwtPnggPT0geCApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgcGNlbGwgPSAmY2VsbC0+bmV4dDsKKyAgICB9CisKKyAgICBpZiAoIHJhcy5udW1fY2VsbHMgPj0gcmFzLm1heF9jZWxscyApCisgICAgICBmdF9sb25nam1wKCByYXMuanVtcF9idWZmZXIsIDEgKTsKKworICAgIGNlbGwgICAgICAgID0gcmFzLmNlbGxzICsgcmFzLm51bV9jZWxscysrOworICAgIGNlbGwtPnggICAgID0geDsKKyAgICBjZWxsLT5hcmVhICA9IDA7CisgICAgY2VsbC0+Y292ZXIgPSAwOworCisgICAgY2VsbC0+bmV4dCAgPSAqcGNlbGw7CisgICAgKnBjZWxsICAgICAgPSBjZWxsOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGNlbGw7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGdyYXlfcmVjb3JkX2NlbGwoIFJBU19BUkcgKQorICB7CisgICAgaWYgKCAhcmFzLmludmFsaWQgJiYgKCByYXMuYXJlYSB8IHJhcy5jb3ZlciApICkKKyAgICB7CisgICAgICBQQ2VsbCAgY2VsbCA9IGdyYXlfZmluZF9jZWxsKCBSQVNfVkFSICk7CisKKworICAgICAgY2VsbC0+YXJlYSAgKz0gcmFzLmFyZWE7CisgICAgICBjZWxsLT5jb3ZlciArPSByYXMuY292ZXI7CisgICAgfQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNldCB0aGUgY3VycmVudCBjZWxsIHRvIGEgbmV3IHBvc2l0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgZ3JheV9zZXRfY2VsbCggUkFTX0FSR18gVENvb3JkICBleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVENvb3JkICBleSApCisgIHsKKyAgICAvKiBNb3ZlIHRoZSBjZWxsIHBvaW50ZXIgdG8gYSBuZXcgcG9zaXRpb24uICBXZSBzZXQgdGhlIGBpbnZhbGlkJyAgICAgICovCisgICAgLyogZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBjZWxsIGlzbid0IHBhcnQgb2YgdGhvc2Ugd2UncmUgaW50ZXJlc3RlZCAqLworICAgIC8qIGluIGR1cmluZyB0aGUgcmVuZGVyIHBoYXNlLiAgVGhpcyBtZWFucyB0aGF0OiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogLiB0aGUgbmV3IHZlcnRpY2FsIHBvc2l0aW9uIG11c3QgYmUgd2l0aGluIG1pbl9leS4ubWF4X2V5LTEuICAgICAgICAqLworICAgIC8qIC4gdGhlIG5ldyBob3Jpem9udGFsIHBvc2l0aW9uIG11c3QgYmUgc3RyaWN0bHkgbGVzcyB0aGFuIG1heF9leCAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogTm90ZSB0aGF0IGlmIGEgY2VsbCBpcyB0byB0aGUgbGVmdCBvZiB0aGUgY2xpcHBpbmcgcmVnaW9uLCBpdCBpcyAgICAqLworICAgIC8qIGFjdHVhbGx5IHNldCB0byB0aGUgKG1pbl9leC0xKSBob3Jpem9udGFsIHBvc2l0aW9uLiAgICAgICAgICAgICAgICAgKi8KKworICAgIC8qIEFsbCBjZWxscyB0aGF0IGFyZSBvbiB0aGUgbGVmdCBvZiB0aGUgY2xpcHBpbmcgcmVnaW9uIGdvIHRvIHRoZSAqLworICAgIC8qIG1pbl9leCAtIDEgaG9yaXpvbnRhbCBwb3NpdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGV5IC09IHJhcy5taW5fZXk7CisKKyAgICBpZiAoIGV4ID4gcmFzLm1heF9leCApCisgICAgICBleCA9IHJhcy5tYXhfZXg7CisKKyAgICBleCAtPSByYXMubWluX2V4OworICAgIGlmICggZXggPCAwICkKKyAgICAgIGV4ID0gLTE7CisKKyAgICAvKiBhcmUgd2UgbW92aW5nIHRvIGEgZGlmZmVyZW50IGNlbGwgPyAqLworICAgIGlmICggZXggIT0gcmFzLmV4IHx8IGV5ICE9IHJhcy5leSApCisgICAgeworICAgICAgLyogcmVjb3JkIHRoZSBjdXJyZW50IG9uZSBpZiBpdCBpcyB2YWxpZCAqLworICAgICAgaWYgKCAhcmFzLmludmFsaWQgKQorICAgICAgICBncmF5X3JlY29yZF9jZWxsKCBSQVNfVkFSICk7CisKKyAgICAgIHJhcy5hcmVhICA9IDA7CisgICAgICByYXMuY292ZXIgPSAwOworICAgIH0KKworICAgIHJhcy5leCAgICAgID0gZXg7CisgICAgcmFzLmV5ICAgICAgPSBleTsKKyAgICByYXMuaW52YWxpZCA9ICggKHVuc2lnbmVkKWV5ID49ICh1bnNpZ25lZClyYXMuY291bnRfZXkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ID49IHJhcy5jb3VudF9leCAgICAgICAgICAgKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFydCBhIG5ldyBjb250b3VyIGF0IGEgZ2l2ZW4gY2VsbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIGdyYXlfc3RhcnRfY2VsbCggUkFTX0FSR18gVENvb3JkICBleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ29vcmQgIGV5ICkKKyAgeworICAgIGlmICggZXggPiByYXMubWF4X2V4ICkKKyAgICAgIGV4ID0gKFRDb29yZCkoIHJhcy5tYXhfZXggKTsKKworICAgIGlmICggZXggPCByYXMubWluX2V4ICkKKyAgICAgIGV4ID0gKFRDb29yZCkoIHJhcy5taW5fZXggLSAxICk7CisKKyAgICByYXMuYXJlYSAgICA9IDA7CisgICAgcmFzLmNvdmVyICAgPSAwOworICAgIHJhcy5leCAgICAgID0gZXggLSByYXMubWluX2V4OworICAgIHJhcy5leSAgICAgID0gZXkgLSByYXMubWluX2V5OworICAgIHJhcy5sYXN0X2V5ID0gU1VCUElYRUxTKCBleSApOworICAgIHJhcy5pbnZhbGlkID0gMDsKKworICAgIGdyYXlfc2V0X2NlbGwoIFJBU19WQVJfIGV4LCBleSApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJlbmRlciBhIHNjYW5saW5lIGFzIG9uZSBvciBtb3JlIGNlbGxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgZ3JheV9yZW5kZXJfc2NhbmxpbmUoIFJBU19BUkdfIFRDb29yZCAgZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUG9zICAgIHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENvb3JkICB5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQb3MgICAgeDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ29vcmQgIHkyICkKKyAgeworICAgIFRDb29yZCAgZXgxLCBleDIsIGZ4MSwgZngyLCBkZWx0YSwgbW9kOworICAgIGxvbmcgICAgcCwgZmlyc3QsIGR4OworICAgIGludCAgICAgaW5jcjsKKworCisgICAgZHggPSB4MiAtIHgxOworCisgICAgZXgxID0gVFJVTkMoIHgxICk7CisgICAgZXgyID0gVFJVTkMoIHgyICk7CisgICAgZngxID0gKFRDb29yZCkoIHgxIC0gU1VCUElYRUxTKCBleDEgKSApOworICAgIGZ4MiA9IChUQ29vcmQpKCB4MiAtIFNVQlBJWEVMUyggZXgyICkgKTsKKworICAgIC8qIHRyaXZpYWwgY2FzZS4gIEhhcHBlbnMgb2Z0ZW4gKi8KKyAgICBpZiAoIHkxID09IHkyICkKKyAgICB7CisgICAgICBncmF5X3NldF9jZWxsKCBSQVNfVkFSXyBleDIsIGV5ICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogZXZlcnl0aGluZyBpcyBsb2NhdGVkIGluIGEgc2luZ2xlIGNlbGwuICBUaGF0IGlzIGVhc3khICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBleDEgPT0gZXgyICkKKyAgICB7CisgICAgICBkZWx0YSAgICAgID0geTIgLSB5MTsKKyAgICAgIHJhcy5hcmVhICArPSAoVEFyZWEpKCggZngxICsgZngyICkgKiBkZWx0YSk7CisgICAgICByYXMuY292ZXIgKz0gZGVsdGE7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogb2ssIHdlJ2xsIGhhdmUgdG8gcmVuZGVyIGEgcnVuIG9mIGFkamFjZW50IGNlbGxzIG9uIHRoZSBzYW1lICovCisgICAgLyogc2NhbmxpbmUuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgcCAgICAgPSAoIE9ORV9QSVhFTCAtIGZ4MSApICogKCB5MiAtIHkxICk7CisgICAgZmlyc3QgPSBPTkVfUElYRUw7CisgICAgaW5jciAgPSAxOworCisgICAgaWYgKCBkeCA8IDAgKQorICAgIHsKKyAgICAgIHAgICAgID0gZngxICogKCB5MiAtIHkxICk7CisgICAgICBmaXJzdCA9IDA7CisgICAgICBpbmNyICA9IC0xOworICAgICAgZHggICAgPSAtZHg7CisgICAgfQorCisgICAgZGVsdGEgPSAoVENvb3JkKSggcCAvIGR4ICk7CisgICAgbW9kICAgPSAoVENvb3JkKSggcCAlIGR4ICk7CisgICAgaWYgKCBtb2QgPCAwICkKKyAgICB7CisgICAgICBkZWx0YS0tOworICAgICAgbW9kICs9IChUQ29vcmQpZHg7CisgICAgfQorCisgICAgcmFzLmFyZWEgICs9IChUQXJlYSkoKCBmeDEgKyBmaXJzdCApICogZGVsdGEpOworICAgIHJhcy5jb3ZlciArPSBkZWx0YTsKKworICAgIGV4MSArPSBpbmNyOworICAgIGdyYXlfc2V0X2NlbGwoIFJBU19WQVJfIGV4MSwgZXkgKTsKKyAgICB5MSAgKz0gZGVsdGE7CisKKyAgICBpZiAoIGV4MSAhPSBleDIgKQorICAgIHsKKyAgICAgIFRDb29yZCAgbGlmdCwgcmVtOworCisKKyAgICAgIHAgICAgPSBPTkVfUElYRUwgKiAoIHkyIC0geTEgKyBkZWx0YSApOworICAgICAgbGlmdCA9IChUQ29vcmQpKCBwIC8gZHggKTsKKyAgICAgIHJlbSAgPSAoVENvb3JkKSggcCAlIGR4ICk7CisgICAgICBpZiAoIHJlbSA8IDAgKQorICAgICAgeworICAgICAgICBsaWZ0LS07CisgICAgICAgIHJlbSArPSAoVENvb3JkKWR4OworICAgICAgfQorCisgICAgICBtb2QgLT0gKGludClkeDsKKworICAgICAgd2hpbGUgKCBleDEgIT0gZXgyICkKKyAgICAgIHsKKyAgICAgICAgZGVsdGEgPSBsaWZ0OworICAgICAgICBtb2QgICs9IHJlbTsKKyAgICAgICAgaWYgKCBtb2QgPj0gMCApCisgICAgICAgIHsKKyAgICAgICAgICBtb2QgLT0gKFRDb29yZClkeDsKKyAgICAgICAgICBkZWx0YSsrOworICAgICAgICB9CisKKyAgICAgICAgcmFzLmFyZWEgICs9IChUQXJlYSkoT05FX1BJWEVMICogZGVsdGEpOworICAgICAgICByYXMuY292ZXIgKz0gZGVsdGE7CisgICAgICAgIHkxICAgICAgICArPSBkZWx0YTsKKyAgICAgICAgZXgxICAgICAgICs9IGluY3I7CisgICAgICAgIGdyYXlfc2V0X2NlbGwoIFJBU19WQVJfIGV4MSwgZXkgKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBkZWx0YSAgICAgID0geTIgLSB5MTsKKyAgICByYXMuYXJlYSAgKz0gKFRBcmVhKSgoIGZ4MiArIE9ORV9QSVhFTCAtIGZpcnN0ICkgKiBkZWx0YSk7CisgICAgcmFzLmNvdmVyICs9IGRlbHRhOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJlbmRlciBhIGdpdmVuIGxpbmUgYXMgYSBzZXJpZXMgb2Ygc2NhbmxpbmVzLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgZ3JheV9yZW5kZXJfbGluZSggUkFTX0FSR18gVFBvcyAgdG9feCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBvcyAgdG9feSApCisgIHsKKyAgICBUQ29vcmQgIGV5MSwgZXkyLCBmeTEsIGZ5MiwgbW9kOworICAgIFRQb3MgICAgZHgsIGR5LCB4LCB4MjsKKyAgICBsb25nICAgIHAsIGZpcnN0OworICAgIGludCAgICAgZGVsdGEsIHJlbSwgbGlmdCwgaW5jcjsKKworCisgICAgZXkxID0gVFJVTkMoIHJhcy5sYXN0X2V5ICk7CisgICAgZXkyID0gVFJVTkMoIHRvX3kgKTsgICAgIC8qIGlmIChleTIgPj0gcmFzLm1heF9leSkgZXkyID0gcmFzLm1heF9leS0xOyAqLworICAgIGZ5MSA9IChUQ29vcmQpKCByYXMueSAtIHJhcy5sYXN0X2V5ICk7CisgICAgZnkyID0gKFRDb29yZCkoIHRvX3kgLSBTVUJQSVhFTFMoIGV5MiApICk7CisKKyAgICBkeCA9IHRvX3ggLSByYXMueDsKKyAgICBkeSA9IHRvX3kgLSByYXMueTsKKworICAgIC8qIFhYWDogd2Ugc2hvdWxkIGRvIHNvbWV0aGluZyBhYm91dCB0aGUgdHJpdmlhbCBjYXNlIHdoZXJlIGR4ID09IDAsICovCisgICAgLyogICAgICBhcyBpdCBoYXBwZW5zIHZlcnkgb2Z0ZW4hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIC8qIHBlcmZvcm0gdmVydGljYWwgY2xpcHBpbmcgKi8KKyAgICB7CisgICAgICBUQ29vcmQgIG1pbiwgbWF4OworCisKKyAgICAgIG1pbiA9IGV5MTsKKyAgICAgIG1heCA9IGV5MjsKKyAgICAgIGlmICggZXkxID4gZXkyICkKKyAgICAgIHsKKyAgICAgICAgbWluID0gZXkyOworICAgICAgICBtYXggPSBleTE7CisgICAgICB9CisgICAgICBpZiAoIG1pbiA+PSByYXMubWF4X2V5IHx8IG1heCA8IHJhcy5taW5fZXkgKQorICAgICAgICBnb3RvIEVuZDsKKyAgICB9CisKKyAgICAvKiBldmVyeXRoaW5nIGlzIG9uIGEgc2luZ2xlIHNjYW5saW5lICovCisgICAgaWYgKCBleTEgPT0gZXkyICkKKyAgICB7CisgICAgICBncmF5X3JlbmRlcl9zY2FubGluZSggUkFTX1ZBUl8gZXkxLCByYXMueCwgZnkxLCB0b194LCBmeTIgKTsKKyAgICAgIGdvdG8gRW5kOworICAgIH0KKworICAgIC8qIHZlcnRpY2FsIGxpbmUgLSBhdm9pZCBjYWxsaW5nIGdyYXlfcmVuZGVyX3NjYW5saW5lICovCisgICAgaW5jciA9IDE7CisKKyAgICBpZiAoIGR4ID09IDAgKQorICAgIHsKKyAgICAgIFRDb29yZCAgZXggICAgID0gVFJVTkMoIHJhcy54ICk7CisgICAgICBUQ29vcmQgIHR3b19meCA9IChUQ29vcmQpKCAoIHJhcy54IC0gU1VCUElYRUxTKCBleCApICkgPDwgMSApOworICAgICAgVEFyZWEgICBhcmVhOworCisKKyAgICAgIGZpcnN0ID0gT05FX1BJWEVMOworICAgICAgaWYgKCBkeSA8IDAgKQorICAgICAgeworICAgICAgICBmaXJzdCA9IDA7CisgICAgICAgIGluY3IgID0gLTE7CisgICAgICB9CisKKyAgICAgIGRlbHRhICAgICAgPSAoaW50KSggZmlyc3QgLSBmeTEgKTsKKyAgICAgIHJhcy5hcmVhICArPSAoVEFyZWEpdHdvX2Z4ICogZGVsdGE7CisgICAgICByYXMuY292ZXIgKz0gZGVsdGE7CisgICAgICBleTEgICAgICAgKz0gaW5jcjsKKworICAgICAgZ3JheV9zZXRfY2VsbCggUkFTX1ZBUl8gZXgsIGV5MSApOworCisgICAgICBkZWx0YSA9IChpbnQpKCBmaXJzdCArIGZpcnN0IC0gT05FX1BJWEVMICk7CisgICAgICBhcmVhICA9IChUQXJlYSl0d29fZnggKiBkZWx0YTsKKyAgICAgIHdoaWxlICggZXkxICE9IGV5MiApCisgICAgICB7CisgICAgICAgIHJhcy5hcmVhICArPSBhcmVhOworICAgICAgICByYXMuY292ZXIgKz0gZGVsdGE7CisgICAgICAgIGV5MSAgICAgICArPSBpbmNyOworCisgICAgICAgIGdyYXlfc2V0X2NlbGwoIFJBU19WQVJfIGV4LCBleTEgKTsKKyAgICAgIH0KKworICAgICAgZGVsdGEgICAgICA9IChpbnQpKCBmeTIgLSBPTkVfUElYRUwgKyBmaXJzdCApOworICAgICAgcmFzLmFyZWEgICs9IChUQXJlYSl0d29fZnggKiBkZWx0YTsKKyAgICAgIHJhcy5jb3ZlciArPSBkZWx0YTsKKworICAgICAgZ290byBFbmQ7CisgICAgfQorCisgICAgLyogb2ssIHdlIGhhdmUgdG8gcmVuZGVyIHNldmVyYWwgc2NhbmxpbmVzICovCisgICAgcCAgICAgPSAoIE9ORV9QSVhFTCAtIGZ5MSApICogZHg7CisgICAgZmlyc3QgPSBPTkVfUElYRUw7CisgICAgaW5jciAgPSAxOworCisgICAgaWYgKCBkeSA8IDAgKQorICAgIHsKKyAgICAgIHAgICAgID0gZnkxICogZHg7CisgICAgICBmaXJzdCA9IDA7CisgICAgICBpbmNyICA9IC0xOworICAgICAgZHkgICAgPSAtZHk7CisgICAgfQorCisgICAgZGVsdGEgPSAoaW50KSggcCAvIGR5ICk7CisgICAgbW9kICAgPSAoaW50KSggcCAlIGR5ICk7CisgICAgaWYgKCBtb2QgPCAwICkKKyAgICB7CisgICAgICBkZWx0YS0tOworICAgICAgbW9kICs9IChUQ29vcmQpZHk7CisgICAgfQorCisgICAgeCA9IHJhcy54ICsgZGVsdGE7CisgICAgZ3JheV9yZW5kZXJfc2NhbmxpbmUoIFJBU19WQVJfIGV5MSwgcmFzLngsIGZ5MSwgeCwgKFRDb29yZClmaXJzdCApOworCisgICAgZXkxICs9IGluY3I7CisgICAgZ3JheV9zZXRfY2VsbCggUkFTX1ZBUl8gVFJVTkMoIHggKSwgZXkxICk7CisKKyAgICBpZiAoIGV5MSAhPSBleTIgKQorICAgIHsKKyAgICAgIHAgICAgID0gT05FX1BJWEVMICogZHg7CisgICAgICBsaWZ0ICA9IChpbnQpKCBwIC8gZHkgKTsKKyAgICAgIHJlbSAgID0gKGludCkoIHAgJSBkeSApOworICAgICAgaWYgKCByZW0gPCAwICkKKyAgICAgIHsKKyAgICAgICAgbGlmdC0tOworICAgICAgICByZW0gKz0gKGludClkeTsKKyAgICAgIH0KKyAgICAgIG1vZCAtPSAoaW50KWR5OworCisgICAgICB3aGlsZSAoIGV5MSAhPSBleTIgKQorICAgICAgeworICAgICAgICBkZWx0YSA9IGxpZnQ7CisgICAgICAgIG1vZCAgKz0gcmVtOworICAgICAgICBpZiAoIG1vZCA+PSAwICkKKyAgICAgICAgeworICAgICAgICAgIG1vZCAtPSAoaW50KWR5OworICAgICAgICAgIGRlbHRhKys7CisgICAgICAgIH0KKworICAgICAgICB4MiA9IHggKyBkZWx0YTsKKyAgICAgICAgZ3JheV9yZW5kZXJfc2NhbmxpbmUoIFJBU19WQVJfIGV5MSwgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ29vcmQpKCBPTkVfUElYRUwgLSBmaXJzdCApLCB4MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ29vcmQpZmlyc3QgKTsKKyAgICAgICAgeCA9IHgyOworCisgICAgICAgIGV5MSArPSBpbmNyOworICAgICAgICBncmF5X3NldF9jZWxsKCBSQVNfVkFSXyBUUlVOQyggeCApLCBleTEgKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBncmF5X3JlbmRlcl9zY2FubGluZSggUkFTX1ZBUl8gZXkxLCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENvb3JkKSggT05FX1BJWEVMIC0gZmlyc3QgKSwgdG9feCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnkyICk7CisKKyAgRW5kOgorICAgIHJhcy54ICAgICAgID0gdG9feDsKKyAgICByYXMueSAgICAgICA9IHRvX3k7CisgICAgcmFzLmxhc3RfZXkgPSBTVUJQSVhFTFMoIGV5MiApOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBncmF5X3NwbGl0X2NvbmljKCBGVF9WZWN0b3IqICBiYXNlICkKKyAgeworICAgIFRQb3MgIGEsIGI7CisKKworICAgIGJhc2VbNF0ueCA9IGJhc2VbMl0ueDsKKyAgICBiID0gYmFzZVsxXS54OworICAgIGEgPSBiYXNlWzNdLnggPSAoIGJhc2VbMl0ueCArIGIgKSAvIDI7CisgICAgYiA9IGJhc2VbMV0ueCA9ICggYmFzZVswXS54ICsgYiApIC8gMjsKKyAgICBiYXNlWzJdLnggPSAoIGEgKyBiICkgLyAyOworCisgICAgYmFzZVs0XS55ID0gYmFzZVsyXS55OworICAgIGIgPSBiYXNlWzFdLnk7CisgICAgYSA9IGJhc2VbM10ueSA9ICggYmFzZVsyXS55ICsgYiApIC8gMjsKKyAgICBiID0gYmFzZVsxXS55ID0gKCBiYXNlWzBdLnkgKyBiICkgLyAyOworICAgIGJhc2VbMl0ueSA9ICggYSArIGIgKSAvIDI7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGdyYXlfcmVuZGVyX2NvbmljKCBSQVNfQVJHXyBjb25zdCBGVF9WZWN0b3IqICBjb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgdG8gKQorICB7CisgICAgVFBvcyAgICAgICAgZHgsIGR5OworICAgIFRQb3MgICAgICAgIG1pbiwgbWF4LCB5OworICAgIGludCAgICAgICAgIHRvcCwgbGV2ZWw7CisgICAgaW50KiAgICAgICAgbGV2ZWxzOworICAgIEZUX1ZlY3RvciogIGFyYzsKKworCisgICAgbGV2ZWxzID0gcmFzLmxldl9zdGFjazsKKworICAgIGFyYyAgICAgID0gcmFzLmJlel9zdGFjazsKKyAgICBhcmNbMF0ueCA9IFVQU0NBTEUoIHRvLT54ICk7CisgICAgYXJjWzBdLnkgPSBVUFNDQUxFKCB0by0+eSApOworICAgIGFyY1sxXS54ID0gVVBTQ0FMRSggY29udHJvbC0+eCApOworICAgIGFyY1sxXS55ID0gVVBTQ0FMRSggY29udHJvbC0+eSApOworICAgIGFyY1syXS54ID0gcmFzLng7CisgICAgYXJjWzJdLnkgPSByYXMueTsKKyAgICB0b3AgICAgICA9IDA7CisKKyAgICBkeCA9IEZUX0FCUyggYXJjWzJdLnggKyBhcmNbMF0ueCAtIDIgKiBhcmNbMV0ueCApOworICAgIGR5ID0gRlRfQUJTKCBhcmNbMl0ueSArIGFyY1swXS55IC0gMiAqIGFyY1sxXS55ICk7CisgICAgaWYgKCBkeCA8IGR5ICkKKyAgICAgIGR4ID0gZHk7CisKKyAgICBpZiAoIGR4IDwgT05FX1BJWEVMIC8gNCApCisgICAgICBnb3RvIERyYXc7CisKKyAgICAvKiBzaG9ydC1jdXQgdGhlIGFyYyB0aGF0IGNyb3NzZXMgdGhlIGN1cnJlbnQgYmFuZCAqLworICAgIG1pbiA9IG1heCA9IGFyY1swXS55OworCisgICAgeSA9IGFyY1sxXS55OworICAgIGlmICggeSA8IG1pbiApIG1pbiA9IHk7CisgICAgaWYgKCB5ID4gbWF4ICkgbWF4ID0geTsKKworICAgIHkgPSBhcmNbMl0ueTsKKyAgICBpZiAoIHkgPCBtaW4gKSBtaW4gPSB5OworICAgIGlmICggeSA+IG1heCApIG1heCA9IHk7CisKKyAgICBpZiAoIFRSVU5DKCBtaW4gKSA+PSByYXMubWF4X2V5IHx8IFRSVU5DKCBtYXggKSA8IHJhcy5taW5fZXkgKQorICAgICAgZ290byBEcmF3OworCisgICAgbGV2ZWwgPSAwOworICAgIGRvCisgICAgeworICAgICAgZHggPj49IDI7CisgICAgICBsZXZlbCsrOworICAgIH0gd2hpbGUgKCBkeCA+IE9ORV9QSVhFTCAvIDQgKTsKKworICAgIGxldmVsc1swXSA9IGxldmVsOworCisgICAgZG8KKyAgICB7CisgICAgICBsZXZlbCA9IGxldmVsc1t0b3BdOworICAgICAgaWYgKCBsZXZlbCA+IDAgKQorICAgICAgeworICAgICAgICBncmF5X3NwbGl0X2NvbmljKCBhcmMgKTsKKyAgICAgICAgYXJjICs9IDI7CisgICAgICAgIHRvcCsrOworICAgICAgICBsZXZlbHNbdG9wXSA9IGxldmVsc1t0b3AgLSAxXSA9IGxldmVsIC0gMTsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICBEcmF3OgorICAgICAgZ3JheV9yZW5kZXJfbGluZSggUkFTX1ZBUl8gYXJjWzBdLngsIGFyY1swXS55ICk7CisgICAgICB0b3AtLTsKKyAgICAgIGFyYyAtPSAyOworCisgICAgfSB3aGlsZSAoIHRvcCA+PSAwICk7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGdyYXlfc3BsaXRfY3ViaWMoIEZUX1ZlY3RvciogIGJhc2UgKQorICB7CisgICAgVFBvcyAgYSwgYiwgYywgZDsKKworCisgICAgYmFzZVs2XS54ID0gYmFzZVszXS54OworICAgIGMgPSBiYXNlWzFdLng7CisgICAgZCA9IGJhc2VbMl0ueDsKKyAgICBiYXNlWzFdLnggPSBhID0gKCBiYXNlWzBdLnggKyBjICkgLyAyOworICAgIGJhc2VbNV0ueCA9IGIgPSAoIGJhc2VbM10ueCArIGQgKSAvIDI7CisgICAgYyA9ICggYyArIGQgKSAvIDI7CisgICAgYmFzZVsyXS54ID0gYSA9ICggYSArIGMgKSAvIDI7CisgICAgYmFzZVs0XS54ID0gYiA9ICggYiArIGMgKSAvIDI7CisgICAgYmFzZVszXS54ID0gKCBhICsgYiApIC8gMjsKKworICAgIGJhc2VbNl0ueSA9IGJhc2VbM10ueTsKKyAgICBjID0gYmFzZVsxXS55OworICAgIGQgPSBiYXNlWzJdLnk7CisgICAgYmFzZVsxXS55ID0gYSA9ICggYmFzZVswXS55ICsgYyApIC8gMjsKKyAgICBiYXNlWzVdLnkgPSBiID0gKCBiYXNlWzNdLnkgKyBkICkgLyAyOworICAgIGMgPSAoIGMgKyBkICkgLyAyOworICAgIGJhc2VbMl0ueSA9IGEgPSAoIGEgKyBjICkgLyAyOworICAgIGJhc2VbNF0ueSA9IGIgPSAoIGIgKyBjICkgLyAyOworICAgIGJhc2VbM10ueSA9ICggYSArIGIgKSAvIDI7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGdyYXlfcmVuZGVyX2N1YmljKCBSQVNfQVJHXyBjb25zdCBGVF9WZWN0b3IqICBjb250cm9sMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogIGNvbnRyb2wyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgdG8gKQorICB7CisgICAgRlRfVmVjdG9yKiAgYXJjOworICAgIFRQb3MgICAgICAgIG1pbiwgbWF4LCB5OworCisKKyAgICBhcmMgICAgICA9IHJhcy5iZXpfc3RhY2s7CisgICAgYXJjWzBdLnggPSBVUFNDQUxFKCB0by0+eCApOworICAgIGFyY1swXS55ID0gVVBTQ0FMRSggdG8tPnkgKTsKKyAgICBhcmNbMV0ueCA9IFVQU0NBTEUoIGNvbnRyb2wyLT54ICk7CisgICAgYXJjWzFdLnkgPSBVUFNDQUxFKCBjb250cm9sMi0+eSApOworICAgIGFyY1syXS54ID0gVVBTQ0FMRSggY29udHJvbDEtPnggKTsKKyAgICBhcmNbMl0ueSA9IFVQU0NBTEUoIGNvbnRyb2wxLT55ICk7CisgICAgYXJjWzNdLnggPSByYXMueDsKKyAgICBhcmNbM10ueSA9IHJhcy55OworCisgICAgLyogU2hvcnQtY3V0IHRoZSBhcmMgdGhhdCBjcm9zc2VzIHRoZSBjdXJyZW50IGJhbmQuICovCisgICAgbWluID0gbWF4ID0gYXJjWzBdLnk7CisKKyAgICB5ID0gYXJjWzFdLnk7CisgICAgaWYgKCB5IDwgbWluICkKKyAgICAgIG1pbiA9IHk7CisgICAgaWYgKCB5ID4gbWF4ICkKKyAgICAgIG1heCA9IHk7CisKKyAgICB5ID0gYXJjWzJdLnk7CisgICAgaWYgKCB5IDwgbWluICkKKyAgICAgIG1pbiA9IHk7CisgICAgaWYgKCB5ID4gbWF4ICkKKyAgICAgIG1heCA9IHk7CisKKyAgICB5ID0gYXJjWzNdLnk7CisgICAgaWYgKCB5IDwgbWluICkKKyAgICAgIG1pbiA9IHk7CisgICAgaWYgKCB5ID4gbWF4ICkKKyAgICAgIG1heCA9IHk7CisKKyAgICBpZiAoIFRSVU5DKCBtaW4gKSA+PSByYXMubWF4X2V5IHx8IFRSVU5DKCBtYXggKSA8IHJhcy5taW5fZXkgKQorICAgICAgZ290byBEcmF3OworCisgICAgZm9yICg7OykKKyAgICB7CisgICAgICAvKiBEZWNpZGUgd2hldGhlciB0byBzcGxpdCBvciBkcmF3LiBTZWUgYFJhcGlkIFRlcm1pbmF0aW9uICAgICAgICAgICovCisgICAgICAvKiBFdmFsdWF0aW9uIGZvciBSZWN1cnNpdmUgU3ViZGl2aXNpb24gb2YgQmV6aWVyIEN1cnZlcycgYnkgVGhvbWFzICovCisgICAgICAvKiBGLiBIYWluLCBhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBodHRwOi8vd3d3LmNpcy5zb3V0aGFsYWJhbWEuZWR1L35oYWluL2dlbmVyYWwvUHVibGljYXRpb25zL0Jlemllci9DYW1lcmEtcmVhZHklMjBDSVNTVDAyJTIwMi5wZGYgKi8KKworICAgICAgeworICAgICAgICBUUG9zICBkeCwgZHksIGR4XywgZHlfOworICAgICAgICBUUG9zICBkeDEsIGR5MSwgZHgyLCBkeTI7CisgICAgICAgIFRQb3MgIEwsIHMsIHNfbGltaXQ7CisKKworICAgICAgICAvKiBkeCBhbmQgZHkgYXJlIHggYW5kIHkgY29tcG9uZW50cyBvZiB0aGUgUDAtUDMgY2hvcmQgdmVjdG9yLiAqLworICAgICAgICBkeCA9IGFyY1szXS54IC0gYXJjWzBdLng7CisgICAgICAgIGR5ID0gYXJjWzNdLnkgLSBhcmNbMF0ueTsKKworICAgICAgICAvKiBMIGlzIGFuICh1bmRlcillc3RpbWF0ZSBvZiB0aGUgRXVjbGlkZWFuIGRpc3RhbmNlIFAwLVAzLiAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiBJZiBkeCA+PSBkeSwgdGhlbiByID0gc3FydChkeF4yICsgZHleMikgY2FuIGJlIG92ZXJlc3RpbWF0ZWQgICAqLworICAgICAgICAvKiB3aXRoIGxlYXN0IG1heGltdW0gZXJyb3IgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgIHJfdXBwZXJib3VuZCA9IGR4ICsgKHNxcnQoMikgLSAxKSAqIGR5ICAsICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiB3aGVyZSBzcXJ0KDIpIC0gMSBjYW4gYmUgKG92ZXIpZXN0aW1hdGVkIGJ5IDEwNy8yNTYsIGdpdmluZyBhbiAqLworICAgICAgICAvKiBlcnJvciBvZiBubyBtb3JlIHRoYW4gOC40JS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiBTaW1pbGFybHksIHNvbWUgZWxlbWVudGFyeSBjYWxjdWx1cyBzaG93cyB0aGF0IHIgY2FuIGJlICAgICAgICAqLworICAgICAgICAvKiB1bmRlcmVzdGltYXRlZCB3aXRoIGxlYXN0IG1heGltdW0gZXJyb3IgYnkgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgIHJfbG93ZXJib3VuZCA9IHNxcnQoMiArIHNxcnQoMikpIC8gMiAqIGR4ICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICsgc3FydCgyIC0gc3FydCgyKSkgLyAyICogZHkgIC4gICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAyMzYvMjU2IGFuZCA5Ny8yNTYgYXJlICh1bmRlcillc3RpbWF0ZXMgb2YgdGhlIHR3byBhbGdlYnJhaWMgICAqLworICAgICAgICAvKiBudW1iZXJzLCBnaXZpbmcgYW4gZXJyb3Igb2Ygbm8gbW9yZSB0aGFuIDguMSUuICAgICAgICAgICAgICAgICAqLworCisgICAgICAgIGR4XyA9IEZUX0FCUyggZHggKTsKKyAgICAgICAgZHlfID0gRlRfQUJTKCBkeSApOworCisgICAgICAgIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogICBMID0gKCAyMzYgKiBGVF9NQVgoIGR4XywgZHlfICkgICAgICAgICovCisgICAgICAgIC8qICAgICAgICsgOTcgKiBGVF9NSU4oIGR4XywgZHlfICkgKSA+PiA4OyAqLworICAgICAgICBMID0gKCBkeF8gPiBkeV8gPyAyMzYgKiBkeF8gKyAgOTcgKiBkeV8KKyAgICAgICAgICAgICAgICAgICAgICAgIDogIDk3ICogZHhfICsgMjM2ICogZHlfICkgPj4gODsKKworICAgICAgICAvKiBBdm9pZCBwb3NzaWJsZSBhcml0aG1ldGljIG92ZXJmbG93IGJlbG93IGJ5IHNwbGl0dGluZy4gKi8KKyAgICAgICAgaWYgKCBMID4gMzI3NjcgKQorICAgICAgICAgIGdvdG8gU3BsaXQ7CisKKyAgICAgICAgLyogTWF4IGRldmlhdGlvbiBtYXkgYmUgYXMgbXVjaCBhcyAocy9MKSAqIDMvNCAoaWYgSGFpbidzIHYgPSAxKS4gKi8KKyAgICAgICAgc19saW1pdCA9IEwgKiAoVFBvcykoIE9ORV9QSVhFTCAvIDYgKTsKKworICAgICAgICAvKiBzIGlzIEwgKiB0aGUgcGVycGVuZGljdWxhciBkaXN0YW5jZSBmcm9tIFAxIHRvIHRoZSBsaW5lIFAwLVAzLiAqLworICAgICAgICBkeDEgPSBhcmNbMV0ueCAtIGFyY1swXS54OworICAgICAgICBkeTEgPSBhcmNbMV0ueSAtIGFyY1swXS55OworICAgICAgICBzID0gRlRfQUJTKCBkeSAqIGR4MSAtIGR4ICogZHkxICk7CisKKyAgICAgICAgaWYgKCBzID4gc19saW1pdCApCisgICAgICAgICAgZ290byBTcGxpdDsKKworICAgICAgICAvKiBzIGlzIEwgKiB0aGUgcGVycGVuZGljdWxhciBkaXN0YW5jZSBmcm9tIFAyIHRvIHRoZSBsaW5lIFAwLVAzLiAqLworICAgICAgICBkeDIgPSBhcmNbMl0ueCAtIGFyY1swXS54OworICAgICAgICBkeTIgPSBhcmNbMl0ueSAtIGFyY1swXS55OworICAgICAgICBzID0gRlRfQUJTKCBkeSAqIGR4MiAtIGR4ICogZHkyICk7CisKKyAgICAgICAgaWYgKCBzID4gc19saW1pdCApCisgICAgICAgICAgZ290byBTcGxpdDsKKworICAgICAgICAvKiBTcGxpdCBzdXBlciBjdXJ2eSBzZWdtZW50cyB3aGVyZSB0aGUgb2ZmIHBvaW50cyBhcmUgc28gZmFyCisgICAgICAgICAgIGZyb20gdGhlIGNob3JkIHRoYXQgdGhlIGFuZ2xlcyBQMC1QMS1QMyBvciBQMC1QMi1QMyBiZWNvbWUKKyAgICAgICAgICAgYWN1dGUgYXMgZGV0ZWN0ZWQgYnkgYXBwcm9wcmlhdGUgZG90IHByb2R1Y3RzLiAqLworICAgICAgICBpZiAoIGR4MSAqICggZHgxIC0gZHggKSArIGR5MSAqICggZHkxIC0gZHkgKSA+IDAgfHwKKyAgICAgICAgICAgICBkeDIgKiAoIGR4MiAtIGR4ICkgKyBkeTIgKiAoIGR5MiAtIGR5ICkgPiAwICkKKyAgICAgICAgICBnb3RvIFNwbGl0OworCisgICAgICAgIC8qIE5vIHJlYXNvbiB0byBzcGxpdC4gKi8KKyAgICAgICAgZ290byBEcmF3OworICAgICAgfQorCisgICAgU3BsaXQ6CisgICAgICBncmF5X3NwbGl0X2N1YmljKCBhcmMgKTsKKyAgICAgIGFyYyArPSAzOworICAgICAgY29udGludWU7CisKKyAgICBEcmF3OgorICAgICAgZ3JheV9yZW5kZXJfbGluZSggUkFTX1ZBUl8gYXJjWzBdLngsIGFyY1swXS55ICk7CisKKyAgICAgIGlmICggYXJjID09IHJhcy5iZXpfc3RhY2sgKQorICAgICAgICByZXR1cm47CisKKyAgICAgIGFyYyAtPSAzOworICAgIH0KKyAgfQorCisKKyAgc3RhdGljIGludAorICBncmF5X21vdmVfdG8oIGNvbnN0IEZUX1ZlY3RvciogIHRvLAorICAgICAgICAgICAgICAgIGdyYXlfUFdvcmtlciAgICAgIHdvcmtlciApCisgIHsKKyAgICBUUG9zICB4LCB5OworCisKKyAgICAvKiByZWNvcmQgY3VycmVudCBjZWxsLCBpZiBhbnkgKi8KKyAgICBncmF5X3JlY29yZF9jZWxsKCBSQVNfVkFSICk7CisKKyAgICAvKiBzdGFydCB0byBhIG5ldyBwb3NpdGlvbiAqLworICAgIHggPSBVUFNDQUxFKCB0by0+eCApOworICAgIHkgPSBVUFNDQUxFKCB0by0+eSApOworCisgICAgZ3JheV9zdGFydF9jZWxsKCBSQVNfVkFSXyBUUlVOQyggeCApLCBUUlVOQyggeSApICk7CisKKyAgICB3b3JrZXItPnggPSB4OworICAgIHdvcmtlci0+eSA9IHk7CisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIHN0YXRpYyBpbnQKKyAgZ3JheV9saW5lX3RvKCBjb25zdCBGVF9WZWN0b3IqICB0bywKKyAgICAgICAgICAgICAgICBncmF5X1BXb3JrZXIgICAgICB3b3JrZXIgKQorICB7CisgICAgZ3JheV9yZW5kZXJfbGluZSggUkFTX1ZBUl8gVVBTQ0FMRSggdG8tPnggKSwgVVBTQ0FMRSggdG8tPnkgKSApOworICAgIHJldHVybiAwOworICB9CisKKworICBzdGF0aWMgaW50CisgIGdyYXlfY29uaWNfdG8oIGNvbnN0IEZUX1ZlY3RvciogIGNvbnRyb2wsCisgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogIHRvLAorICAgICAgICAgICAgICAgICBncmF5X1BXb3JrZXIgICAgICB3b3JrZXIgKQorICB7CisgICAgZ3JheV9yZW5kZXJfY29uaWMoIFJBU19WQVJfIGNvbnRyb2wsIHRvICk7CisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIHN0YXRpYyBpbnQKKyAgZ3JheV9jdWJpY190byggY29uc3QgRlRfVmVjdG9yKiAgY29udHJvbDEsCisgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogIGNvbnRyb2wyLAorICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICB0bywKKyAgICAgICAgICAgICAgICAgZ3JheV9QV29ya2VyICAgICAgd29ya2VyICkKKyAgeworICAgIGdyYXlfcmVuZGVyX2N1YmljKCBSQVNfVkFSXyBjb250cm9sMSwgY29udHJvbDIsIHRvICk7CisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGdyYXlfcmVuZGVyX3NwYW4oIGludCAgICAgICAgICAgICB5LAorICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1NwYW4qICBzcGFucywKKyAgICAgICAgICAgICAgICAgICAgZ3JheV9QV29ya2VyICAgIHdvcmtlciApCisgIHsKKyAgICB1bnNpZ25lZCBjaGFyKiAgcDsKKyAgICBGVF9CaXRtYXAqICAgICAgbWFwID0gJndvcmtlci0+dGFyZ2V0OworCisKKyAgICAvKiBmaXJzdCBvZiBhbGwsIGNvbXB1dGUgdGhlIHNjYW5saW5lIG9mZnNldCAqLworICAgIHAgPSAodW5zaWduZWQgY2hhciopbWFwLT5idWZmZXIgLSB5ICogbWFwLT5waXRjaDsKKyAgICBpZiAoIG1hcC0+cGl0Y2ggPj0gMCApCisgICAgICBwICs9ICh1bnNpZ25lZCkoICggbWFwLT5yb3dzIC0gMSApICogbWFwLT5waXRjaCApOworCisgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0sIHNwYW5zKysgKQorICAgIHsKKyAgICAgIHVuc2lnbmVkIGNoYXIgIGNvdmVyYWdlID0gc3BhbnMtPmNvdmVyYWdlOworCisKKyAgICAgIGlmICggY292ZXJhZ2UgKQorICAgICAgeworICAgICAgICAvKiBGb3Igc21hbGwtc3BhbnMgaXQgaXMgZmFzdGVyIHRvIGRvIGl0IGJ5IG91cnNlbHZlcyB0aGFuCisgICAgICAgICAqIGNhbGxpbmcgYG1lbXNldCcuICBUaGlzIGlzIG1haW5seSBkdWUgdG8gdGhlIGNvc3Qgb2YgdGhlCisgICAgICAgICAqIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgICAqLworICAgICAgICBpZiAoIHNwYW5zLT5sZW4gPj0gOCApCisgICAgICAgICAgRlRfTUVNX1NFVCggcCArIHNwYW5zLT54LCAodW5zaWduZWQgY2hhciljb3ZlcmFnZSwgc3BhbnMtPmxlbiApOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB1bnNpZ25lZCBjaGFyKiAgcSA9IHAgKyBzcGFucy0+eDsKKworCisgICAgICAgICAgc3dpdGNoICggc3BhbnMtPmxlbiApCisgICAgICAgICAgeworICAgICAgICAgIGNhc2UgNzogKnErKyA9ICh1bnNpZ25lZCBjaGFyKWNvdmVyYWdlOworICAgICAgICAgIGNhc2UgNjogKnErKyA9ICh1bnNpZ25lZCBjaGFyKWNvdmVyYWdlOworICAgICAgICAgIGNhc2UgNTogKnErKyA9ICh1bnNpZ25lZCBjaGFyKWNvdmVyYWdlOworICAgICAgICAgIGNhc2UgNDogKnErKyA9ICh1bnNpZ25lZCBjaGFyKWNvdmVyYWdlOworICAgICAgICAgIGNhc2UgMzogKnErKyA9ICh1bnNpZ25lZCBjaGFyKWNvdmVyYWdlOworICAgICAgICAgIGNhc2UgMjogKnErKyA9ICh1bnNpZ25lZCBjaGFyKWNvdmVyYWdlOworICAgICAgICAgIGNhc2UgMTogKnEgICA9ICh1bnNpZ25lZCBjaGFyKWNvdmVyYWdlOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICA7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKworICBzdGF0aWMgdm9pZAorICBncmF5X2hsaW5lKCBSQVNfQVJHXyBUQ29vcmQgIHgsCisgICAgICAgICAgICAgICAgICAgICAgIFRDb29yZCAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgVFBvcyAgICBhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICBUQ29vcmQgIGFjb3VudCApCisgIHsKKyAgICBpbnQgIGNvdmVyYWdlOworCisKKyAgICAvKiBjb21wdXRlIHRoZSBjb3ZlcmFnZSBsaW5lJ3MgY292ZXJhZ2UsIGRlcGVuZGluZyBvbiB0aGUgICAgKi8KKyAgICAvKiBvdXRsaW5lIGZpbGwgcnVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiB0aGUgY292ZXJhZ2UgcGVyY2VudGFnZSBpcyBhcmVhLyhQSVhFTF9CSVRTKlBJWEVMX0JJVFMqMikgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBjb3ZlcmFnZSA9IChpbnQpKCBhcmVhID4+ICggUElYRUxfQklUUyAqIDIgKyAxIC0gOCApICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdXNlIHJhbmdlIDAuLjI1NiAqLworICAgIGlmICggY292ZXJhZ2UgPCAwICkKKyAgICAgIGNvdmVyYWdlID0gLWNvdmVyYWdlOworCisgICAgaWYgKCByYXMub3V0bGluZS5mbGFncyAmIEZUX09VVExJTkVfRVZFTl9PRERfRklMTCApCisgICAgeworICAgICAgY292ZXJhZ2UgJj0gNTExOworCisgICAgICBpZiAoIGNvdmVyYWdlID4gMjU2ICkKKyAgICAgICAgY292ZXJhZ2UgPSA1MTIgLSBjb3ZlcmFnZTsKKyAgICAgIGVsc2UgaWYgKCBjb3ZlcmFnZSA9PSAyNTYgKQorICAgICAgICBjb3ZlcmFnZSA9IDI1NTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIG5vcm1hbCBub24temVybyB3aW5kaW5nIHJ1bGUgKi8KKyAgICAgIGlmICggY292ZXJhZ2UgPj0gMjU2ICkKKyAgICAgICAgY292ZXJhZ2UgPSAyNTU7CisgICAgfQorCisgICAgeSArPSAoVENvb3JkKXJhcy5taW5fZXk7CisgICAgeCArPSAoVENvb3JkKXJhcy5taW5fZXg7CisKKyAgICAvKiBGVF9TcGFuLnggaXMgYSAxNi1iaXQgc2hvcnQsIHNvIGxpbWl0IG91ciBjb29yZGluYXRlcyBhcHByb3ByaWF0ZWx5ICovCisgICAgaWYgKCB4ID49IDMyNzY3ICkKKyAgICAgIHggPSAzMjc2NzsKKworICAgIC8qIEZUX1NwYW4ueSBpcyBhbiBpbnRlZ2VyLCBzbyBsaW1pdCBvdXIgY29vcmRpbmF0ZXMgYXBwcm9wcmlhdGVseSAqLworICAgIGlmICggeSA+PSBGVF9JTlRfTUFYICkKKyAgICAgIHkgPSBGVF9JTlRfTUFYOworCisgICAgaWYgKCBjb3ZlcmFnZSApCisgICAgeworICAgICAgRlRfU3BhbiogIHNwYW47CisgICAgICBpbnQgICAgICAgY291bnQ7CisKKworICAgICAgLyogc2VlIHdoZXRoZXIgd2UgY2FuIGFkZCB0aGlzIHNwYW4gdG8gdGhlIGN1cnJlbnQgbGlzdCAqLworICAgICAgY291bnQgPSByYXMubnVtX2dyYXlfc3BhbnM7CisgICAgICBzcGFuICA9IHJhcy5ncmF5X3NwYW5zICsgY291bnQgLSAxOworICAgICAgaWYgKCBjb3VudCA+IDAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIHJhcy5zcGFuX3kgPT0geSAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgKGludClzcGFuLT54ICsgc3Bhbi0+bGVuID09IChpbnQpeCAmJgorICAgICAgICAgICBzcGFuLT5jb3ZlcmFnZSA9PSBjb3ZlcmFnZSAgICAgICAgICkKKyAgICAgIHsKKyAgICAgICAgc3Bhbi0+bGVuID0gKHVuc2lnbmVkIHNob3J0KSggc3Bhbi0+bGVuICsgYWNvdW50ICk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgaWYgKCByYXMuc3Bhbl95ICE9IHkgfHwgY291bnQgPj0gRlRfTUFYX0dSQVlfU1BBTlMgKQorICAgICAgeworICAgICAgICBpZiAoIHJhcy5yZW5kZXJfc3BhbiAmJiBjb3VudCA+IDAgKQorICAgICAgICAgIHJhcy5yZW5kZXJfc3BhbiggcmFzLnNwYW5feSwgY291bnQsIHJhcy5ncmF5X3NwYW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzLnJlbmRlcl9zcGFuX2RhdGEgKTsKKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisKKyAgICAgICAgaWYgKCBjb3VudCA+IDAgKQorICAgICAgICB7CisgICAgICAgICAgaW50ICBuOworCisKKyAgICAgICAgICBGVF9UUkFDRTcoKCAieSA9ICUzZCAiLCByYXMuc3Bhbl95ICkpOworICAgICAgICAgIHNwYW4gPSByYXMuZ3JheV9zcGFuczsKKyAgICAgICAgICBmb3IgKCBuID0gMDsgbiA8IGNvdW50OyBuKyssIHNwYW4rKyApCisgICAgICAgICAgICBGVF9UUkFDRTcoKCAiWyVkLi4lZF06JTAyeCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi0+eCwgc3Bhbi0+eCArIHNwYW4tPmxlbiAtIDEsIHNwYW4tPmNvdmVyYWdlICkpOworICAgICAgICAgIEZUX1RSQUNFNygoICJcbiIgKSk7CisgICAgICAgIH0KKworI2VuZGlmIC8qIEZUX0RFQlVHX0xFVkVMX1RSQUNFICovCisKKyAgICAgICAgcmFzLm51bV9ncmF5X3NwYW5zID0gMDsKKyAgICAgICAgcmFzLnNwYW5feSAgICAgICAgID0gKGludCl5OworCisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgc3BhbiAgPSByYXMuZ3JheV9zcGFuczsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgc3BhbisrOworCSAgLy8gRml4IHRoZSBWdWxuZXJhYmlsaXR5IFJlcG9ydCBGb3hJVCBSZWFkZXIgLSBNU1ZSLTEwLTAwNzcuCisJICAvLyBMaW1pdGVkIHRvIHRoZSB2YWx1ZSByYW5nZSBvZiAneCcsIHdlIGhhdmUgdG8gY3JvcCBpdCBmb3IgYXZvaWQgdGhlIG92ZXJmbG93LgorCSAgaWYgKHggPCAzMjc2OCkgeworICAgICAgLyogYWRkIGEgZ3JheSBzcGFuIHRvIHRoZSBjdXJyZW50IGxpc3QgKi8KKyAgICAgIHNwYW4tPnggICAgICAgID0gKHNob3J0KXg7CisgICAgICBzcGFuLT5sZW4gICAgICA9ICh1bnNpZ25lZCBzaG9ydClhY291bnQ7CisgICAgICBzcGFuLT5jb3ZlcmFnZSA9ICh1bnNpZ25lZCBjaGFyKWNvdmVyYWdlOworCisgICAgICByYXMubnVtX2dyYXlfc3BhbnMrKzsKKwkgIH0KKyAgICB9CisgIH0KKworCisjaWZkZWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UKKworICAvKiB0byBiZSBjYWxsZWQgd2hpbGUgaW4gdGhlIGRlYnVnZ2VyIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiB0aGlzIGZ1bmN0aW9uIGNhdXNlcyBhIGNvbXBpbGVyIHdhcm5pbmcgc2luY2UgaXQgaXMgdW51c2VkIG90aGVyd2lzZSAqLworICBzdGF0aWMgdm9pZAorICBncmF5X2R1bXBfY2VsbHMoIFJBU19BUkcgKQorICB7CisgICAgaW50ICB5aW5kZXg7CisKKworICAgIGZvciAoIHlpbmRleCA9IDA7IHlpbmRleCA8IHJhcy55Y291bnQ7IHlpbmRleCsrICkKKyAgICB7CisgICAgICBQQ2VsbCAgY2VsbDsKKworCisgICAgICBwcmludGYoICIlM2Q6IiwgeWluZGV4ICk7CisKKyAgICAgIGZvciAoIGNlbGwgPSByYXMueWNlbGxzW3lpbmRleF07IGNlbGwgIT0gTlVMTDsgY2VsbCA9IGNlbGwtPm5leHQgKQorICAgICAgICBwcmludGYoICIgKCUzbGQsIGM6JTRsZCwgYTolNmQpIiwgY2VsbC0+eCwgY2VsbC0+Y292ZXIsIGNlbGwtPmFyZWEgKTsKKyAgICAgIHByaW50ZiggIlxuIiApOworICAgIH0KKyAgfQorCisjZW5kaWYgLyogRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworCisgIHN0YXRpYyB2b2lkCisgIGdyYXlfc3dlZXAoIFJBU19BUkdfIGNvbnN0IEZUX0JpdG1hcCogIHRhcmdldCApCisgIHsKKyAgICBpbnQgIHlpbmRleDsKKworICAgIEZUX1VOVVNFRCggdGFyZ2V0ICk7CisKKworICAgIGlmICggcmFzLm51bV9jZWxscyA9PSAwICkKKyAgICAgIHJldHVybjsKKworICAgIHJhcy5udW1fZ3JheV9zcGFucyA9IDA7CisKKyAgICBGVF9UUkFDRTcoKCAiZ3JheV9zd2VlcDogc3RhcnRcbiIgKSk7CisKKyAgICBmb3IgKCB5aW5kZXggPSAwOyB5aW5kZXggPCByYXMueWNvdW50OyB5aW5kZXgrKyApCisgICAgeworICAgICAgUENlbGwgICBjZWxsICA9IHJhcy55Y2VsbHNbeWluZGV4XTsKKyAgICAgIFRDb29yZCAgY292ZXIgPSAwOworICAgICAgVENvb3JkICB4ICAgICA9IDA7CisKKworICAgICAgZm9yICggOyBjZWxsICE9IE5VTEw7IGNlbGwgPSBjZWxsLT5uZXh0ICkKKyAgICAgIHsKKyAgICAgICAgVFBvcyAgYXJlYTsKKworCisgICAgICAgIGlmICggY2VsbC0+eCA+IHggJiYgY292ZXIgIT0gMCApCisgICAgICAgICAgZ3JheV9obGluZSggUkFTX1ZBUl8geCwgeWluZGV4LCBjb3ZlciAqICggT05FX1BJWEVMICogMiApLAorICAgICAgICAgICAgICAgICAgICAgIGNlbGwtPnggLSB4ICk7CisKKyAgICAgICAgY292ZXIgKz0gY2VsbC0+Y292ZXI7CisgICAgICAgIGFyZWEgICA9IGNvdmVyICogKCBPTkVfUElYRUwgKiAyICkgLSBjZWxsLT5hcmVhOworCisgICAgICAgIGlmICggYXJlYSAhPSAwICYmIGNlbGwtPnggPj0gMCApCisgICAgICAgICAgZ3JheV9obGluZSggUkFTX1ZBUl8gY2VsbC0+eCwgeWluZGV4LCBhcmVhLCAxICk7CisKKyAgICAgICAgeCA9IGNlbGwtPnggKyAxOworICAgICAgfQorCisgICAgICBpZiAoIGNvdmVyICE9IDAgKQorICAgICAgICBncmF5X2hsaW5lKCBSQVNfVkFSXyB4LCB5aW5kZXgsIGNvdmVyICogKCBPTkVfUElYRUwgKiAyICksCisgICAgICAgICAgICAgICAgICAgIHJhcy5jb3VudF9leCAtIHggKTsKKyAgICB9CisKKyAgICBpZiAoIHJhcy5yZW5kZXJfc3BhbiAmJiByYXMubnVtX2dyYXlfc3BhbnMgPiAwICkKKyAgICAgIHJhcy5yZW5kZXJfc3BhbiggcmFzLnNwYW5feSwgcmFzLm51bV9ncmF5X3NwYW5zLAorICAgICAgICAgICAgICAgICAgICAgICByYXMuZ3JheV9zcGFucywgcmFzLnJlbmRlcl9zcGFuX2RhdGEgKTsKKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisKKyAgICBpZiAoIHJhcy5udW1fZ3JheV9zcGFucyA+IDAgKQorICAgIHsKKyAgICAgIEZUX1NwYW4qICBzcGFuOworICAgICAgaW50ICAgICAgIG47CisKKworICAgICAgRlRfVFJBQ0U3KCggInkgPSAlM2QgIiwgcmFzLnNwYW5feSApKTsKKyAgICAgIHNwYW4gPSByYXMuZ3JheV9zcGFuczsKKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgcmFzLm51bV9ncmF5X3NwYW5zOyBuKyssIHNwYW4rKyApCisgICAgICAgIEZUX1RSQUNFNygoICJbJWQuLiVkXTolMDJ4ICIsCisgICAgICAgICAgICAgICAgICAgIHNwYW4tPngsIHNwYW4tPnggKyBzcGFuLT5sZW4gLSAxLCBzcGFuLT5jb3ZlcmFnZSApKTsKKyAgICAgIEZUX1RSQUNFNygoICJcbiIgKSk7CisgICAgfQorCisgICAgRlRfVFJBQ0U3KCggImdyYXlfc3dlZXA6IGVuZFxuIiApKTsKKworI2VuZGlmIC8qIEZUX0RFQlVHX0xFVkVMX1RSQUNFICovCisKKyAgfQorCisKKyNpZmRlZiBfU1RBTkRBTE9ORV8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGNvbXBpbGUgaW4gc3RhbmQtYWxvbmUgbW9kZSwgICAgICAqLworICAvKiAgaS5lLiwgd2hlbiBidWlsZGluZyB0aGlzIGNvbXBvbmVudCB3aXRob3V0IHRoZSByZXN0IG9mIEZyZWVUeXBlLiAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZUX091dGxpbmVfRGVjb21wb3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFdhbGsgb3ZlciBhbiBvdXRsaW5lJ3Mgc3RydWN0dXJlIHRvIGRlY29tcG9zZSBpdCBpbnRvIGluZGl2aWR1YWwgICAqLworICAvKiAgICBzZWdtZW50cyBhbmQgQsOpemllciBhcmNzLiAgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGFibGUgdG8gZW1pdCAgICAgICovCisgIC8qICAgIGBtb3ZlIHRvJyBhbmQgYGNsb3NlIHRvJyBvcGVyYXRpb25zIHRvIGluZGljYXRlIHRoZSBzdGFydCBhbmQgZW5kICAqLworICAvKiAgICBvZiBuZXcgY29udG91cnMgaW4gdGhlIG91dGxpbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBvdXRsaW5lICAgICAgICA6OiBBIHBvaW50ZXIgdG8gdGhlIHNvdXJjZSB0YXJnZXQuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ1bmNfaW50ZXJmYWNlIDo6IEEgdGFibGUgb2YgYGVtaXR0ZXJzJywgaS5lLiwgZnVuY3Rpb24gcG9pbnRlcnMgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgZHVyaW5nIGRlY29tcG9zaXRpb24gdG8gaW5kaWNhdGUgcGF0aCAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdXNlciAgICAgICAgICAgOjogQSB0eXBlbGVzcyBwb2ludGVyIHdoaWNoIGlzIHBhc3NlZCB0byBlYWNoICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZXIgZHVyaW5nIHRoZSBkZWNvbXBvc2l0aW9uLiAgSXQgY2FuIGJlICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIHN0b3JlIHRoZSBzdGF0ZSBkdXJpbmcgdGhlICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgZGVjb21wb3NpdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgaW50CisgIEZUX091dGxpbmVfRGVjb21wb3NlKCBjb25zdCBGVF9PdXRsaW5lKiAgICAgICAgb3V0bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX091dGxpbmVfRnVuY3MqICBmdW5jX2ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICB1c2VyICkKKyAgeworI3VuZGVmIFNDQUxFRAorI2RlZmluZSBTQ0FMRUQoIHggKSAgKCAoICh4KSA8PCBzaGlmdCApIC0gZGVsdGEgKQorCisgICAgRlRfVmVjdG9yICAgdl9sYXN0OworICAgIEZUX1ZlY3RvciAgIHZfY29udHJvbDsKKyAgICBGVF9WZWN0b3IgICB2X3N0YXJ0OworCisgICAgRlRfVmVjdG9yKiAgcG9pbnQ7CisgICAgRlRfVmVjdG9yKiAgbGltaXQ7CisgICAgY2hhciogICAgICAgdGFnczsKKworICAgIGludCAgICAgICAgIGVycm9yOworCisgICAgaW50ICAgbjsgICAgICAgICAvKiBpbmRleCBvZiBjb250b3VyIGluIG91dGxpbmUgICAgICovCisgICAgaW50ICAgZmlyc3Q7ICAgICAvKiBpbmRleCBvZiBmaXJzdCBwb2ludCBpbiBjb250b3VyICovCisgICAgY2hhciAgdGFnOyAgICAgICAvKiBjdXJyZW50IHBvaW50J3Mgc3RhdGUgICAgICAgICAgICovCisKKyAgICBpbnQgICBzaGlmdDsKKyAgICBUUG9zICBkZWx0YTsKKworCisgICAgaWYgKCAhb3V0bGluZSB8fCAhZnVuY19pbnRlcmZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBzaGlmdCA9IGZ1bmNfaW50ZXJmYWNlLT5zaGlmdDsKKyAgICBkZWx0YSA9IGZ1bmNfaW50ZXJmYWNlLT5kZWx0YTsKKyAgICBmaXJzdCA9IDA7CisKKyAgICBmb3IgKCBuID0gMDsgbiA8IG91dGxpbmUtPm5fY29udG91cnM7IG4rKyApCisgICAgeworICAgICAgaW50ICBsYXN0OyAgLyogaW5kZXggb2YgbGFzdCBwb2ludCBpbiBjb250b3VyICovCisKKworICAgICAgRlRfVFJBQ0U1KCggIkZUX091dGxpbmVfRGVjb21wb3NlOiBPdXRsaW5lICVkXG4iLCBuICkpOworCisgICAgICBsYXN0ICA9IG91dGxpbmUtPmNvbnRvdXJzW25dOworICAgICAgaWYgKCBsYXN0IDwgMCApCisgICAgICAgIGdvdG8gSW52YWxpZF9PdXRsaW5lOworICAgICAgbGltaXQgPSBvdXRsaW5lLT5wb2ludHMgKyBsYXN0OworCisgICAgICB2X3N0YXJ0ICAgPSBvdXRsaW5lLT5wb2ludHNbZmlyc3RdOworICAgICAgdl9zdGFydC54ID0gU0NBTEVEKCB2X3N0YXJ0LnggKTsKKyAgICAgIHZfc3RhcnQueSA9IFNDQUxFRCggdl9zdGFydC55ICk7CisKKyAgICAgIHZfbGFzdCAgID0gb3V0bGluZS0+cG9pbnRzW2xhc3RdOworICAgICAgdl9sYXN0LnggPSBTQ0FMRUQoIHZfbGFzdC54ICk7CisgICAgICB2X2xhc3QueSA9IFNDQUxFRCggdl9sYXN0LnkgKTsKKworICAgICAgdl9jb250cm9sID0gdl9zdGFydDsKKworICAgICAgcG9pbnQgPSBvdXRsaW5lLT5wb2ludHMgKyBmaXJzdDsKKyAgICAgIHRhZ3MgID0gb3V0bGluZS0+dGFncyAgICsgZmlyc3Q7CisgICAgICB0YWcgICA9IEZUX0NVUlZFX1RBRyggdGFnc1swXSApOworCisgICAgICAvKiBBIGNvbnRvdXIgY2Fubm90IHN0YXJ0IHdpdGggYSBjdWJpYyBjb250cm9sIHBvaW50ISAqLworICAgICAgaWYgKCB0YWcgPT0gRlRfQ1VSVkVfVEFHX0NVQklDICkKKyAgICAgICAgZ290byBJbnZhbGlkX091dGxpbmU7CisKKyAgICAgIC8qIGNoZWNrIGZpcnN0IHBvaW50IHRvIGRldGVybWluZSBvcmlnaW4gKi8KKyAgICAgIGlmICggdGFnID09IEZUX0NVUlZFX1RBR19DT05JQyApCisgICAgICB7CisgICAgICAgIC8qIGZpcnN0IHBvaW50IGlzIGNvbmljIGNvbnRyb2wuICBZZXMsIHRoaXMgaGFwcGVucy4gKi8KKyAgICAgICAgaWYgKCBGVF9DVVJWRV9UQUcoIG91dGxpbmUtPnRhZ3NbbGFzdF0gKSA9PSBGVF9DVVJWRV9UQUdfT04gKQorICAgICAgICB7CisgICAgICAgICAgLyogc3RhcnQgYXQgbGFzdCBwb2ludCBpZiBpdCBpcyBvbiB0aGUgY3VydmUgKi8KKyAgICAgICAgICB2X3N0YXJ0ID0gdl9sYXN0OworICAgICAgICAgIGxpbWl0LS07CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogaWYgYm90aCBmaXJzdCBhbmQgbGFzdCBwb2ludHMgYXJlIGNvbmljLCAgICAgICAgICovCisgICAgICAgICAgLyogc3RhcnQgYXQgdGhlaXIgbWlkZGxlIGFuZCByZWNvcmQgaXRzIHBvc2l0aW9uICAgICovCisgICAgICAgICAgLyogZm9yIGNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgdl9zdGFydC54ID0gKCB2X3N0YXJ0LnggKyB2X2xhc3QueCApIC8gMjsKKyAgICAgICAgICB2X3N0YXJ0LnkgPSAoIHZfc3RhcnQueSArIHZfbGFzdC55ICkgLyAyOworCisgICAgICAgICAgdl9sYXN0ID0gdl9zdGFydDsKKyAgICAgICAgfQorICAgICAgICBwb2ludC0tOworICAgICAgICB0YWdzLS07CisgICAgICB9CisKKyAgICAgIEZUX1RSQUNFNSgoICIgIG1vdmUgdG8gKCUuMmYsICUuMmYpXG4iLAorICAgICAgICAgICAgICAgICAgdl9zdGFydC54IC8gNjQuMCwgdl9zdGFydC55IC8gNjQuMCApKTsKKyAgICAgIGVycm9yID0gZnVuY19pbnRlcmZhY2UtPm1vdmVfdG8oICZ2X3N0YXJ0LCB1c2VyICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICB3aGlsZSAoIHBvaW50IDwgbGltaXQgKQorICAgICAgeworICAgICAgICBwb2ludCsrOworICAgICAgICB0YWdzKys7CisKKyAgICAgICAgdGFnID0gRlRfQ1VSVkVfVEFHKCB0YWdzWzBdICk7CisgICAgICAgIHN3aXRjaCAoIHRhZyApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBGVF9DVVJWRV9UQUdfT046ICAvKiBlbWl0IGEgc2luZ2xlIGxpbmVfdG8gKi8KKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9WZWN0b3IgIHZlYzsKKworCisgICAgICAgICAgICB2ZWMueCA9IFNDQUxFRCggcG9pbnQtPnggKTsKKyAgICAgICAgICAgIHZlYy55ID0gU0NBTEVEKCBwb2ludC0+eSApOworCisgICAgICAgICAgICBGVF9UUkFDRTUoKCAiICBsaW5lIHRvICglLjJmLCAlLjJmKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlYy54IC8gNjQuMCwgdmVjLnkgLyA2NC4wICkpOworICAgICAgICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+bGluZV90byggJnZlYywgdXNlciApOworICAgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIH0KKworICAgICAgICBjYXNlIEZUX0NVUlZFX1RBR19DT05JQzogIC8qIGNvbnN1bWUgY29uaWMgYXJjcyAqLworICAgICAgICAgIHZfY29udHJvbC54ID0gU0NBTEVEKCBwb2ludC0+eCApOworICAgICAgICAgIHZfY29udHJvbC55ID0gU0NBTEVEKCBwb2ludC0+eSApOworCisgICAgICAgIERvX0NvbmljOgorICAgICAgICAgIGlmICggcG9pbnQgPCBsaW1pdCApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfVmVjdG9yICB2ZWM7CisgICAgICAgICAgICBGVF9WZWN0b3IgIHZfbWlkZGxlOworCisKKyAgICAgICAgICAgIHBvaW50Kys7CisgICAgICAgICAgICB0YWdzKys7CisgICAgICAgICAgICB0YWcgPSBGVF9DVVJWRV9UQUcoIHRhZ3NbMF0gKTsKKworICAgICAgICAgICAgdmVjLnggPSBTQ0FMRUQoIHBvaW50LT54ICk7CisgICAgICAgICAgICB2ZWMueSA9IFNDQUxFRCggcG9pbnQtPnkgKTsKKworICAgICAgICAgICAgaWYgKCB0YWcgPT0gRlRfQ1VSVkVfVEFHX09OICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgY29uaWMgdG8gKCUuMmYsICUuMmYpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggY29udHJvbCAoJS4yZiwgJS4yZilcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYy54IC8gNjQuMCwgdmVjLnkgLyA2NC4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2X2NvbnRyb2wueCAvIDY0LjAsIHZfY29udHJvbC55IC8gNjQuMCApKTsKKyAgICAgICAgICAgICAgZXJyb3IgPSBmdW5jX2ludGVyZmFjZS0+Y29uaWNfdG8oICZ2X2NvbnRyb2wsICZ2ZWMsIHVzZXIgKTsKKyAgICAgICAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCB0YWcgIT0gRlRfQ1VSVkVfVEFHX0NPTklDICkKKyAgICAgICAgICAgICAgZ290byBJbnZhbGlkX091dGxpbmU7CisKKyAgICAgICAgICAgIHZfbWlkZGxlLnggPSAoIHZfY29udHJvbC54ICsgdmVjLnggKSAvIDI7CisgICAgICAgICAgICB2X21pZGRsZS55ID0gKCB2X2NvbnRyb2wueSArIHZlYy55ICkgLyAyOworCisgICAgICAgICAgICBGVF9UUkFDRTUoKCAiICBjb25pYyB0byAoJS4yZiwgJS4yZikiCisgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggY29udHJvbCAoJS4yZiwgJS4yZilcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICB2X21pZGRsZS54IC8gNjQuMCwgdl9taWRkbGUueSAvIDY0LjAsCisgICAgICAgICAgICAgICAgICAgICAgICB2X2NvbnRyb2wueCAvIDY0LjAsIHZfY29udHJvbC55IC8gNjQuMCApKTsKKyAgICAgICAgICAgIGVycm9yID0gZnVuY19pbnRlcmZhY2UtPmNvbmljX3RvKCAmdl9jb250cm9sLCAmdl9taWRkbGUsIHVzZXIgKTsKKyAgICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgICAgIHZfY29udHJvbCA9IHZlYzsKKyAgICAgICAgICAgIGdvdG8gRG9fQ29uaWM7CisgICAgICAgICAgfQorCisgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgY29uaWMgdG8gKCUuMmYsICUuMmYpIgorICAgICAgICAgICAgICAgICAgICAgICIgd2l0aCBjb250cm9sICglLjJmLCAlLjJmKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICB2X3N0YXJ0LnggLyA2NC4wLCB2X3N0YXJ0LnkgLyA2NC4wLAorICAgICAgICAgICAgICAgICAgICAgIHZfY29udHJvbC54IC8gNjQuMCwgdl9jb250cm9sLnkgLyA2NC4wICkpOworICAgICAgICAgIGVycm9yID0gZnVuY19pbnRlcmZhY2UtPmNvbmljX3RvKCAmdl9jb250cm9sLCAmdl9zdGFydCwgdXNlciApOworICAgICAgICAgIGdvdG8gQ2xvc2U7CisKKyAgICAgICAgZGVmYXVsdDogIC8qIEZUX0NVUlZFX1RBR19DVUJJQyAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1ZlY3RvciAgdmVjMSwgdmVjMjsKKworCisgICAgICAgICAgICBpZiAoIHBvaW50ICsgMSA+IGxpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgICBGVF9DVVJWRV9UQUcoIHRhZ3NbMV0gKSAhPSBGVF9DVVJWRV9UQUdfQ1VCSUMgKQorICAgICAgICAgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKworICAgICAgICAgICAgcG9pbnQgKz0gMjsKKyAgICAgICAgICAgIHRhZ3MgICs9IDI7CisKKyAgICAgICAgICAgIHZlYzEueCA9IFNDQUxFRCggcG9pbnRbLTJdLnggKTsKKyAgICAgICAgICAgIHZlYzEueSA9IFNDQUxFRCggcG9pbnRbLTJdLnkgKTsKKworICAgICAgICAgICAgdmVjMi54ID0gU0NBTEVEKCBwb2ludFstMV0ueCApOworICAgICAgICAgICAgdmVjMi55ID0gU0NBTEVEKCBwb2ludFstMV0ueSApOworCisgICAgICAgICAgICBpZiAoIHBvaW50IDw9IGxpbWl0ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfVmVjdG9yICB2ZWM7CisKKworICAgICAgICAgICAgICB2ZWMueCA9IFNDQUxFRCggcG9pbnQtPnggKTsKKyAgICAgICAgICAgICAgdmVjLnkgPSBTQ0FMRUQoIHBvaW50LT55ICk7CisKKyAgICAgICAgICAgICAgRlRfVFJBQ0U1KCggIiAgY3ViaWMgdG8gKCUuMmYsICUuMmYpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggY29udHJvbHMgKCUuMmYsICUuMmYpIGFuZCAoJS4yZiwgJS4yZilcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYy54IC8gNjQuMCwgdmVjLnkgLyA2NC4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWMxLnggLyA2NC4wLCB2ZWMxLnkgLyA2NC4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWMyLnggLyA2NC4wLCB2ZWMyLnkgLyA2NC4wICkpOworICAgICAgICAgICAgICBlcnJvciA9IGZ1bmNfaW50ZXJmYWNlLT5jdWJpY190byggJnZlYzEsICZ2ZWMyLCAmdmVjLCB1c2VyICk7CisgICAgICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEZUX1RSQUNFNSgoICIgIGN1YmljIHRvICglLjJmLCAlLjJmKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgd2l0aCBjb250cm9scyAoJS4yZiwgJS4yZikgYW5kICglLjJmLCAlLjJmKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZfc3RhcnQueCAvIDY0LjAsIHZfc3RhcnQueSAvIDY0LjAsCisgICAgICAgICAgICAgICAgICAgICAgICB2ZWMxLnggLyA2NC4wLCB2ZWMxLnkgLyA2NC4wLAorICAgICAgICAgICAgICAgICAgICAgICAgdmVjMi54IC8gNjQuMCwgdmVjMi55IC8gNjQuMCApKTsKKyAgICAgICAgICAgIGVycm9yID0gZnVuY19pbnRlcmZhY2UtPmN1YmljX3RvKCAmdmVjMSwgJnZlYzIsICZ2X3N0YXJ0LCB1c2VyICk7CisgICAgICAgICAgICBnb3RvIENsb3NlOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiBjbG9zZSB0aGUgY29udG91ciB3aXRoIGEgbGluZSBzZWdtZW50ICovCisgICAgICBGVF9UUkFDRTUoKCAiICBsaW5lIHRvICglLjJmLCAlLjJmKVxuIiwKKyAgICAgICAgICAgICAgICAgIHZfc3RhcnQueCAvIDY0LjAsIHZfc3RhcnQueSAvIDY0LjAgKSk7CisgICAgICBlcnJvciA9IGZ1bmNfaW50ZXJmYWNlLT5saW5lX3RvKCAmdl9zdGFydCwgdXNlciApOworCisgICBDbG9zZToKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGZpcnN0ID0gbGFzdCArIDE7CisgICAgfQorCisgICAgRlRfVFJBQ0U1KCggIkZUX091dGxpbmVfRGVjb21wb3NlOiBEb25lXG4iLCBuICkpOworICAgIHJldHVybiAwOworCisgIEV4aXQ6CisgICAgRlRfVFJBQ0U1KCggIkZUX091dGxpbmVfRGVjb21wb3NlOiBFcnJvciAlZFxuIiwgZXJyb3IgKSk7CisgICAgcmV0dXJuIGVycm9yOworCisgIEludmFsaWRfT3V0bGluZToKKyAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfT3V0bGluZSApOworICB9CisKKyNlbmRpZiAvKiBfU1RBTkRBTE9ORV8gKi8KKworCisgIHR5cGVkZWYgc3RydWN0ICBncmF5X1RCYW5kXworICB7CisgICAgVFBvcyAgbWluLCBtYXg7CisKKyAgfSBncmF5X1RCYW5kOworCisgICAgRlRfREVGSU5FX09VVExJTkVfRlVOQ1MoZnVuY19pbnRlcmZhY2UsCisgICAgICAoRlRfT3V0bGluZV9Nb3ZlVG9fRnVuYykgZ3JheV9tb3ZlX3RvLAorICAgICAgKEZUX091dGxpbmVfTGluZVRvX0Z1bmMpIGdyYXlfbGluZV90bywKKyAgICAgIChGVF9PdXRsaW5lX0NvbmljVG9fRnVuYylncmF5X2NvbmljX3RvLAorICAgICAgKEZUX091dGxpbmVfQ3ViaWNUb19GdW5jKWdyYXlfY3ViaWNfdG8sCisgICAgICAwLAorICAgICAgMAorICAgICkKKworICBzdGF0aWMgaW50CisgIGdyYXlfY29udmVydF9nbHlwaF9pbm5lciggUkFTX0FSRyApCisgIHsKKworICAgIHZvbGF0aWxlIGludCAgZXJyb3IgPSAwOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKyAgICAgIEZUX091dGxpbmVfRnVuY3MgZnVuY19pbnRlcmZhY2U7CisgICAgICBJbml0X0NsYXNzX2Z1bmNfaW50ZXJmYWNlKCZmdW5jX2ludGVyZmFjZSk7CisjZW5kaWYKKyNpZm5kZWYgX0ZYX01BTkFHRURfQ09ERV8gICAgCisgICAgaWYgKCBmdF9zZXRqbXAoIHJhcy5qdW1wX2J1ZmZlciApID09IDAgKQorICAgIHsKKyNlbmRpZgorICAgICAgZXJyb3IgPSBGVF9PdXRsaW5lX0RlY29tcG9zZSggJnJhcy5vdXRsaW5lLCAmZnVuY19pbnRlcmZhY2UsICZyYXMgKTsKKyAgICAgIGdyYXlfcmVjb3JkX2NlbGwoIFJBU19WQVIgKTsKKyNpZm5kZWYgX0ZYX01BTkFHRURfQ09ERV8gCisJfQorICAgIGVsc2UKKyAgICAgIGVycm9yID0gRlRfVEhST1coIE1lbW9yeV9PdmVyZmxvdyApOworI2VuZGlmCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgaW50CisgIGdyYXlfY29udmVydF9nbHlwaCggUkFTX0FSRyApCisgIHsKKyAgICBncmF5X1RCYW5kICAgICAgICAgICAgYmFuZHNbNDBdOworICAgIGdyYXlfVEJhbmQqIHZvbGF0aWxlICBiYW5kOworICAgIGludCB2b2xhdGlsZSAgICAgICAgICBuLCBudW1fYmFuZHM7CisgICAgVFBvcyB2b2xhdGlsZSAgICAgICAgIG1pbiwgbWF4LCBtYXhfeTsKKyAgICBGVF9CQm94KiAgICAgICAgICAgICAgY2xpcDsKKworCisgICAgLyogU2V0IHVwIHN0YXRlIGluIHRoZSByYXN0ZXIgb2JqZWN0ICovCisgICAgZ3JheV9jb21wdXRlX2Nib3goIFJBU19WQVIgKTsKKworICAgIC8qIGNsaXAgdG8gdGFyZ2V0IGJpdG1hcCwgZXhpdCBpZiBub3RoaW5nIHRvIGRvICovCisgICAgY2xpcCA9ICZyYXMuY2xpcF9ib3g7CisKKyAgICBpZiAoIHJhcy5tYXhfZXggPD0gY2xpcC0+eE1pbiB8fCByYXMubWluX2V4ID49IGNsaXAtPnhNYXggfHwKKyAgICAgICAgIHJhcy5tYXhfZXkgPD0gY2xpcC0+eU1pbiB8fCByYXMubWluX2V5ID49IGNsaXAtPnlNYXggKQorICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIHJhcy5taW5fZXggPCBjbGlwLT54TWluICkgcmFzLm1pbl9leCA9IGNsaXAtPnhNaW47CisgICAgaWYgKCByYXMubWluX2V5IDwgY2xpcC0+eU1pbiApIHJhcy5taW5fZXkgPSBjbGlwLT55TWluOworCisgICAgaWYgKCByYXMubWF4X2V4ID4gY2xpcC0+eE1heCApIHJhcy5tYXhfZXggPSBjbGlwLT54TWF4OworICAgIGlmICggcmFzLm1heF9leSA+IGNsaXAtPnlNYXggKSByYXMubWF4X2V5ID0gY2xpcC0+eU1heDsKKworICAgIHJhcy5jb3VudF9leCA9IHJhcy5tYXhfZXggLSByYXMubWluX2V4OworICAgIHJhcy5jb3VudF9leSA9IHJhcy5tYXhfZXkgLSByYXMubWluX2V5OworCisgICAgLyogc2V0IHVwIHZlcnRpY2FsIGJhbmRzICovCisgICAgbnVtX2JhbmRzID0gKGludCkoICggcmFzLm1heF9leSAtIHJhcy5taW5fZXkgKSAvIHJhcy5iYW5kX3NpemUgKTsKKyAgICBpZiAoIG51bV9iYW5kcyA9PSAwICkKKyAgICAgIG51bV9iYW5kcyA9IDE7CisgICAgaWYgKCBudW1fYmFuZHMgPj0gMzkgKQorICAgICAgbnVtX2JhbmRzID0gMzk7CisKKyAgICByYXMuYmFuZF9zaG9vdCA9IDA7CisKKyAgICBtaW4gICA9IHJhcy5taW5fZXk7CisgICAgbWF4X3kgPSByYXMubWF4X2V5OworCisgICAgZm9yICggbiA9IDA7IG4gPCBudW1fYmFuZHM7IG4rKywgbWluID0gbWF4ICkKKyAgICB7CisgICAgICBtYXggPSBtaW4gKyByYXMuYmFuZF9zaXplOworICAgICAgaWYgKCBuID09IG51bV9iYW5kcyAtIDEgfHwgbWF4ID4gbWF4X3kgKQorICAgICAgICBtYXggPSBtYXhfeTsKKworICAgICAgYmFuZHNbMF0ubWluID0gbWluOworICAgICAgYmFuZHNbMF0ubWF4ID0gbWF4OworICAgICAgYmFuZCAgICAgICAgID0gYmFuZHM7CisKKyAgICAgIHdoaWxlICggYmFuZCA+PSBiYW5kcyApCisgICAgICB7CisgICAgICAgIFRQb3MgIGJvdHRvbSwgdG9wLCBtaWRkbGU7CisgICAgICAgIGludCAgIGVycm9yOworCisgICAgICAgIHsKKyAgICAgICAgICBQQ2VsbCAgY2VsbHNfbWF4OworICAgICAgICAgIGludCAgICB5aW5kZXg7CisgICAgICAgICAgbG9uZyAgIGNlbGxfc3RhcnQsIGNlbGxfZW5kLCBjZWxsX21vZDsKKworCisgICAgICAgICAgcmFzLnljZWxscyA9IChQQ2VsbCopcmFzLmJ1ZmZlcjsKKyAgICAgICAgICByYXMueWNvdW50ID0gYmFuZC0+bWF4IC0gYmFuZC0+bWluOworCisgICAgICAgICAgY2VsbF9zdGFydCA9IHNpemVvZiAoIFBDZWxsICkgKiByYXMueWNvdW50OworICAgICAgICAgIGNlbGxfbW9kICAgPSBjZWxsX3N0YXJ0ICUgc2l6ZW9mICggVENlbGwgKTsKKyAgICAgICAgICBpZiAoIGNlbGxfbW9kID4gMCApCisgICAgICAgICAgICBjZWxsX3N0YXJ0ICs9IHNpemVvZiAoIFRDZWxsICkgLSBjZWxsX21vZDsKKworICAgICAgICAgIGNlbGxfZW5kICA9IHJhcy5idWZmZXJfc2l6ZTsKKyAgICAgICAgICBjZWxsX2VuZCAtPSBjZWxsX2VuZCAlIHNpemVvZiAoIFRDZWxsICk7CisKKyAgICAgICAgICBjZWxsc19tYXggPSAoUENlbGwpKCAoY2hhciopcmFzLmJ1ZmZlciArIGNlbGxfZW5kICk7CisgICAgICAgICAgcmFzLmNlbGxzID0gKFBDZWxsKSggKGNoYXIqKXJhcy5idWZmZXIgKyBjZWxsX3N0YXJ0ICk7CisgICAgICAgICAgaWYgKCByYXMuY2VsbHMgPj0gY2VsbHNfbWF4ICkKKyAgICAgICAgICAgIGdvdG8gUmVkdWNlQmFuZHM7CisKKyAgICAgICAgICByYXMubWF4X2NlbGxzID0gY2VsbHNfbWF4IC0gcmFzLmNlbGxzOworICAgICAgICAgIGlmICggcmFzLm1heF9jZWxscyA8IDIgKQorICAgICAgICAgICAgZ290byBSZWR1Y2VCYW5kczsKKworICAgICAgICAgIGZvciAoIHlpbmRleCA9IDA7IHlpbmRleCA8IHJhcy55Y291bnQ7IHlpbmRleCsrICkKKyAgICAgICAgICAgIHJhcy55Y2VsbHNbeWluZGV4XSA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByYXMubnVtX2NlbGxzID0gMDsKKyAgICAgICAgcmFzLmludmFsaWQgICA9IDE7CisgICAgICAgIHJhcy5taW5fZXkgICAgPSBiYW5kLT5taW47CisgICAgICAgIHJhcy5tYXhfZXkgICAgPSBiYW5kLT5tYXg7CisgICAgICAgIHJhcy5jb3VudF9leSAgPSBiYW5kLT5tYXggLSBiYW5kLT5taW47CisKKyAgICAgICAgZXJyb3IgPSBncmF5X2NvbnZlcnRfZ2x5cGhfaW5uZXIoIFJBU19WQVIgKTsKKworICAgICAgICBpZiAoICFlcnJvciApCisgICAgICAgIHsKKyAgICAgICAgICBncmF5X3N3ZWVwKCBSQVNfVkFSXyAmcmFzLnRhcmdldCApOworICAgICAgICAgIGJhbmQtLTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggZXJyb3IgIT0gRXJyUmFzdGVyX01lbW9yeV9PdmVyZmxvdyApCisgICAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgIFJlZHVjZUJhbmRzOgorICAgICAgICAvKiByZW5kZXIgcG9vbCBvdmVyZmxvdzsgd2Ugd2lsbCByZWR1Y2UgdGhlIHJlbmRlciBiYW5kIGJ5IGhhbGYgKi8KKyAgICAgICAgYm90dG9tID0gYmFuZC0+bWluOworICAgICAgICB0b3AgICAgPSBiYW5kLT5tYXg7CisgICAgICAgIG1pZGRsZSA9IGJvdHRvbSArICggKCB0b3AgLSBib3R0b20gKSA+PiAxICk7CisKKyAgICAgICAgLyogVGhpcyBpcyB0b28gY29tcGxleCBmb3IgYSBzaW5nbGUgc2NhbmxpbmU7IHRoZXJlIG11c3QgKi8KKyAgICAgICAgLyogYmUgc29tZSBwcm9ibGVtcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBtaWRkbGUgPT0gYm90dG9tICkKKyAgICAgICAgeworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisgICAgICAgICAgRlRfVFJBQ0U3KCggImdyYXlfY29udmVydF9nbHlwaDogcm90dGVuIGdseXBoXG4iICkpOworI2VuZGlmCisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGJvdHRvbS10b3AgPj0gcmFzLmJhbmRfc2l6ZSApCisgICAgICAgICAgcmFzLmJhbmRfc2hvb3QrKzsKKworICAgICAgICBiYW5kWzFdLm1pbiA9IGJvdHRvbTsKKyAgICAgICAgYmFuZFsxXS5tYXggPSBtaWRkbGU7CisgICAgICAgIGJhbmRbMF0ubWluID0gbWlkZGxlOworICAgICAgICBiYW5kWzBdLm1heCA9IHRvcDsKKyAgICAgICAgYmFuZCsrOworICAgICAgfQorICAgIH0KKworICAgIGlmICggcmFzLmJhbmRfc2hvb3QgPiA4ICYmIHJhcy5iYW5kX3NpemUgPiAxNiApCisgICAgICByYXMuYmFuZF9zaXplID0gcmFzLmJhbmRfc2l6ZSAvIDI7CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgc3RhdGljIGludAorICBncmF5X3Jhc3Rlcl9yZW5kZXIoIGdyYXlfUFJhc3RlciAgICAgICAgICAgICByYXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfUmFzdGVyX1BhcmFtcyogIHBhcmFtcyApCisgIHsKKyAgICBjb25zdCBGVF9PdXRsaW5lKiAgb3V0bGluZSAgICA9IChjb25zdCBGVF9PdXRsaW5lKilwYXJhbXMtPnNvdXJjZTsKKyAgICBjb25zdCBGVF9CaXRtYXAqICAgdGFyZ2V0X21hcCA9IHBhcmFtcy0+dGFyZ2V0OworICAgIGdyYXlfUFdvcmtlciAgICAgICB3b3JrZXI7CisKKworICAgIGlmICggIXJhc3RlciB8fCAhcmFzdGVyLT5idWZmZXIgfHwgIXJhc3Rlci0+YnVmZmVyX3NpemUgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBpZiAoICFvdXRsaW5lICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9PdXRsaW5lICk7CisKKyAgICAvKiByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIG91dGxpbmUgaXMgZW1wdHkgKi8KKyAgICBpZiAoIG91dGxpbmUtPm5fcG9pbnRzID09IDAgfHwgb3V0bGluZS0+bl9jb250b3VycyA8PSAwICkKKyAgICAgIHJldHVybiAwOworCisgICAgaWYgKCAhb3V0bGluZS0+Y29udG91cnMgfHwgIW91dGxpbmUtPnBvaW50cyApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfT3V0bGluZSApOworCisgICAgaWYgKCBvdXRsaW5lLT5uX3BvaW50cyAhPQorICAgICAgICAgICBvdXRsaW5lLT5jb250b3Vyc1tvdXRsaW5lLT5uX2NvbnRvdXJzIC0gMV0gKyAxICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9PdXRsaW5lICk7CisKKyAgICB3b3JrZXIgPSByYXN0ZXItPndvcmtlcjsKKworICAgIC8qIGlmIGRpcmVjdCBtb2RlIGlzIG5vdCBzZXQsIHdlIG11c3QgaGF2ZSBhIHRhcmdldCBiaXRtYXAgKi8KKyAgICBpZiAoICEoIHBhcmFtcy0+ZmxhZ3MgJiBGVF9SQVNURVJfRkxBR19ESVJFQ1QgKSApCisgICAgeworICAgICAgaWYgKCAhdGFyZ2V0X21hcCApCisgICAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgICAvKiBub3RoaW5nIHRvIGRvICovCisgICAgICBpZiAoICF0YXJnZXRfbWFwLT53aWR0aCB8fCAhdGFyZ2V0X21hcC0+cm93cyApCisgICAgICAgIHJldHVybiAwOworCisgICAgICBpZiAoICF0YXJnZXRfbWFwLT5idWZmZXIgKQorICAgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICB9CisKKyAgICAvKiB0aGlzIHZlcnNpb24gZG9lcyBub3Qgc3VwcG9ydCBtb25vY2hyb21lIHJlbmRlcmluZyAqLworICAgIGlmICggISggcGFyYW1zLT5mbGFncyAmIEZUX1JBU1RFUl9GTEFHX0FBICkgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX01vZGUgKTsKKworICAgIC8qIGNvbXB1dGUgY2xpcHBpbmcgYm94ICovCisgICAgaWYgKCAhKCBwYXJhbXMtPmZsYWdzICYgRlRfUkFTVEVSX0ZMQUdfRElSRUNUICkgKQorICAgIHsKKyAgICAgIC8qIGNvbXB1dGUgY2xpcCBib3ggZnJvbSB0YXJnZXQgcGl4bWFwICovCisgICAgICByYXMuY2xpcF9ib3gueE1pbiA9IDA7CisgICAgICByYXMuY2xpcF9ib3gueU1pbiA9IDA7CisgICAgICByYXMuY2xpcF9ib3gueE1heCA9IHRhcmdldF9tYXAtPndpZHRoOworICAgICAgcmFzLmNsaXBfYm94LnlNYXggPSB0YXJnZXRfbWFwLT5yb3dzOworICAgIH0KKyAgICBlbHNlIGlmICggcGFyYW1zLT5mbGFncyAmIEZUX1JBU1RFUl9GTEFHX0NMSVAgKQorICAgICAgcmFzLmNsaXBfYm94ID0gcGFyYW1zLT5jbGlwX2JveDsKKyAgICBlbHNlCisgICAgeworICAgICAgcmFzLmNsaXBfYm94LnhNaW4gPSAtMzI3NjhMOworICAgICAgcmFzLmNsaXBfYm94LnlNaW4gPSAtMzI3NjhMOworICAgICAgcmFzLmNsaXBfYm94LnhNYXggPSAgMzI3NjdMOworICAgICAgcmFzLmNsaXBfYm94LnlNYXggPSAgMzI3NjdMOworICAgIH0KKworICAgIGdyYXlfaW5pdF9jZWxscyggUkFTX1ZBUl8gcmFzdGVyLT5idWZmZXIsIHJhc3Rlci0+YnVmZmVyX3NpemUgKTsKKworICAgIHJhcy5vdXRsaW5lICAgICAgICA9ICpvdXRsaW5lOworICAgIHJhcy5udW1fY2VsbHMgICAgICA9IDA7CisgICAgcmFzLmludmFsaWQgICAgICAgID0gMTsKKyAgICByYXMuYmFuZF9zaXplICAgICAgPSByYXN0ZXItPmJhbmRfc2l6ZTsKKyAgICByYXMubnVtX2dyYXlfc3BhbnMgPSAwOworCisgICAgaWYgKCBwYXJhbXMtPmZsYWdzICYgRlRfUkFTVEVSX0ZMQUdfRElSRUNUICkKKyAgICB7CisgICAgICByYXMucmVuZGVyX3NwYW4gICAgICA9IChGVF9SYXN0ZXJfU3Bhbl9GdW5jKXBhcmFtcy0+Z3JheV9zcGFuczsKKyAgICAgIHJhcy5yZW5kZXJfc3Bhbl9kYXRhID0gcGFyYW1zLT51c2VyOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgcmFzLnRhcmdldCAgICAgICAgICAgPSAqdGFyZ2V0X21hcDsKKyAgICAgIHJhcy5yZW5kZXJfc3BhbiAgICAgID0gKEZUX1Jhc3Rlcl9TcGFuX0Z1bmMpZ3JheV9yZW5kZXJfc3BhbjsKKyAgICAgIHJhcy5yZW5kZXJfc3Bhbl9kYXRhID0gJnJhczsKKyAgICB9CisKKyAgICByZXR1cm4gZ3JheV9jb252ZXJ0X2dseXBoKCBSQVNfVkFSICk7CisgIH0KKworCisgIC8qKioqIFJBU1RFUiBPQkpFQ1QgQ1JFQVRJT046IEluIHN0YW5kLWFsb25lIG1vZGUsIHdlIHNpbXBseSB1c2UgKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgIGEgc3RhdGljIG9iamVjdC4gICAgICAgICAgICAgICAgICAgKioqKiovCisKKyNpZmRlZiBfU1RBTkRBTE9ORV8KKworICBzdGF0aWMgaW50CisgIGdyYXlfcmFzdGVyX25ldyggdm9pZCogICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgIEZUX1Jhc3RlciogIGFyYXN0ZXIgKQorICB7CisgICAgc3RhdGljIGdyYXlfVFJhc3RlciAgdGhlX3Jhc3RlcjsKKworICAgIEZUX1VOVVNFRCggbWVtb3J5ICk7CisKKworICAgICphcmFzdGVyID0gKEZUX1Jhc3RlcikmdGhlX3Jhc3RlcjsKKyAgICBGVF9NRU1fWkVSTyggJnRoZV9yYXN0ZXIsIHNpemVvZiAoIHRoZV9yYXN0ZXIgKSApOworCisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIGdyYXlfcmFzdGVyX2RvbmUoIEZUX1Jhc3RlciAgcmFzdGVyICkKKyAgeworICAgIC8qIG5vdGhpbmcgKi8KKyAgICBGVF9VTlVTRUQoIHJhc3RlciApOworICB9CisKKyNlbHNlIC8qICFfU1RBTkRBTE9ORV8gKi8KKworICBzdGF0aWMgaW50CisgIGdyYXlfcmFzdGVyX25ldyggRlRfTWVtb3J5ICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgIEZUX1Jhc3RlciogIGFyYXN0ZXIgKQorICB7CisgICAgRlRfRXJyb3IgICAgICBlcnJvcjsKKyAgICBncmF5X1BSYXN0ZXIgIHJhc3RlciA9IE5VTEw7CisKKworICAgICphcmFzdGVyID0gMDsKKyAgICBpZiAoICFGVF9BTExPQyggcmFzdGVyLCBzaXplb2YgKCBncmF5X1RSYXN0ZXIgKSApICkKKyAgICB7CisgICAgICByYXN0ZXItPm1lbW9yeSA9IG1lbW9yeTsKKyAgICAgICphcmFzdGVyICAgICAgID0gKEZUX1Jhc3RlcilyYXN0ZXI7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBncmF5X3Jhc3Rlcl9kb25lKCBGVF9SYXN0ZXIgIHJhc3RlciApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IChGVF9NZW1vcnkpKChncmF5X1BSYXN0ZXIpcmFzdGVyKS0+bWVtb3J5OworCisKKyAgICBGVF9GUkVFKCByYXN0ZXIgKTsKKyAgfQorCisjZW5kaWYgLyogIV9TVEFOREFMT05FXyAqLworCisKKyAgc3RhdGljIHZvaWQKKyAgZ3JheV9yYXN0ZXJfcmVzZXQoIEZUX1Jhc3RlciAgcmFzdGVyLAorICAgICAgICAgICAgICAgICAgICAgY2hhciogICAgICBwb29sX2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICBsb25nICAgICAgIHBvb2xfc2l6ZSApCisgIHsKKyAgICBncmF5X1BSYXN0ZXIgIHJhc3QgPSAoZ3JheV9QUmFzdGVyKXJhc3RlcjsKKworCisgICAgaWYgKCByYXN0ZXIgKQorICAgIHsKKyAgICAgIGlmICggcG9vbF9iYXNlICYmIHBvb2xfc2l6ZSA+PSAobG9uZylzaXplb2YgKCBncmF5X1RXb3JrZXIgKSArIDIwNDggKQorICAgICAgeworICAgICAgICBncmF5X1BXb3JrZXIgIHdvcmtlciA9IChncmF5X1BXb3JrZXIpcG9vbF9iYXNlOworCisKKyAgICAgICAgcmFzdC0+d29ya2VyICAgICAgPSB3b3JrZXI7CisgICAgICAgIHJhc3QtPmJ1ZmZlciAgICAgID0gcG9vbF9iYXNlICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCBzaXplb2YgKCBncmF5X1RXb3JrZXIgKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggVENlbGwgKSAtIDEgKSAgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+KCBzaXplb2YgKCBUQ2VsbCApIC0gMSApICk7CisgICAgICAgIHJhc3QtPmJ1ZmZlcl9zaXplID0gKGxvbmcpKCAoIHBvb2xfYmFzZSArIHBvb2xfc2l6ZSApIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKilyYXN0LT5idWZmZXIgKSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4oIHNpemVvZiAoIFRDZWxsICkgLSAxICk7CisgICAgICAgIHJhc3QtPmJhbmRfc2l6ZSAgID0gKGludCkoIHJhc3QtPmJ1ZmZlcl9zaXplIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHNpemVvZiAoIFRDZWxsICkgKiA4ICkgKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgcmFzdC0+YnVmZmVyICAgICAgPSBOVUxMOworICAgICAgICByYXN0LT5idWZmZXJfc2l6ZSA9IDA7CisgICAgICAgIHJhc3QtPndvcmtlciAgICAgID0gTlVMTDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworCisgIEZUX0RFRklORV9SQVNURVJfRlVOQ1MoZnRfZ3JheXNfcmFzdGVyLAorICAgIEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FLAorCisgICAgKEZUX1Jhc3Rlcl9OZXdfRnVuYykgICAgIGdyYXlfcmFzdGVyX25ldywKKyAgICAoRlRfUmFzdGVyX1Jlc2V0X0Z1bmMpICAgZ3JheV9yYXN0ZXJfcmVzZXQsCisgICAgKEZUX1Jhc3Rlcl9TZXRfTW9kZV9GdW5jKTAsCisgICAgKEZUX1Jhc3Rlcl9SZW5kZXJfRnVuYykgIGdyYXlfcmFzdGVyX3JlbmRlciwKKyAgICAoRlRfUmFzdGVyX0RvbmVfRnVuYykgICAgZ3JheV9yYXN0ZXJfZG9uZQorICApCisKKworLyogRU5EICovCisKKworLyogTG9jYWwgVmFyaWFibGVzOiAqLworLyogY29kaW5nOiB1dGYtOCAgICAqLworLyogRW5kOiAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnRncmF5cy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnRncmF5cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4OWRiODkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9mdGdyYXlzLmgKQEAgLTAsMCArMSw1OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgZnRncmF5cy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIHNtb290aCByZW5kZXJlciBkZWNsYXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fRlRHUkFZU19IX18KKyNkZWZpbmUgX19GVEdSQVlTX0hfXworCisjaWZkZWYgX19jcGx1c3BsdXMKKyAgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworCisjaWZkZWYgX1NUQU5EQUxPTkVfCisjaW5jbHVkZSAiZnRpbWFnZS5oIgorI2Vsc2UKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaCIgLyogZm9yIEZUX0NPTkZJR19PUFRJT05fUElDICovCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgiCisjZW5kaWYKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVG8gbWFrZSBmdGdyYXlzLmggaW5kZXBlbmRlbnQgZnJvbSBjb25maWd1cmF0aW9uIGZpbGVzIHdlIGNoZWNrICAgICAgICovCisgIC8qIHdoZXRoZXIgRlRfRVhQT1JUX1ZBUiBoYXMgYmVlbiBkZWZpbmVkIGFscmVhZHkuICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT24gc29tZSBzeXN0ZW1zIGFuZCBjb21waWxlcnMgKFdpbjMyIG1vc3RseSksIGFuIGV4dHJhIGtleXdvcmQgaXMgICAgICovCisgIC8qIG5lY2Vzc2FyeSB0byBjb21waWxlIHRoZSBsaWJyYXJ5IGFzIGEgRExMLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgRlRfRVhQT1JUX1ZBUgorI2RlZmluZSBGVF9FWFBPUlRfVkFSKCB4ICkgIGV4dGVybiAgeAorI2VuZGlmCisKKyAgRlRfRVhQT1JUX1ZBUiggY29uc3QgRlRfUmFzdGVyX0Z1bmNzICkgIGZ0X2dyYXlzX3Jhc3RlcjsKKworCisjaWZkZWYgX19jcGx1c3BsdXMKKyAgfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX0ZUR1JBWVNfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9mdHNtZXJycy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnRzbWVycnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRmODI0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnRzbWVycnMuaApAQCAtMCwwICsxLDQyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBmdHNtZXJycy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgc21vb3RoIHJlbmRlcmVyIGVycm9yIGNvZGVzIChzcGVjaWZpY2F0aW9uIG9ubHkpLiAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDEsIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIHNtb290aCByZW5kZXJlciBlcnJvciBlbnVtZXJhdGlvbiAgICAgKi8KKyAgLyogY29uc3RhbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0ZUU01FUlJTX0hfXworI2RlZmluZSBfX0ZUU01FUlJTX0hfXworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oIgorCisjdW5kZWYgX19GVEVSUk9SU19IX18KKworI3VuZGVmICBGVF9FUlJfUFJFRklYCisjZGVmaW5lIEZUX0VSUl9QUkVGSVggIFNtb290aF9FcnJfCisjZGVmaW5lIEZUX0VSUl9CQVNFICAgIEZUX01vZF9FcnJfU21vb3RoCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmgiCisKKyNlbmRpZiAvKiBfX0ZUU01FUlJTX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnRzbW9vdGguYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL2Z0c21vb3RoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc1YjI3YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL2Z0c21vb3RoLmMKQEAgLTAsMCArMSw1MzQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c21vb3RoLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBbnRpLWFsaWFzaW5nIHJlbmRlcmVyIGludGVyZmFjZSAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMC0yMDA2LCAyMDA5LTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIgorI2luY2x1ZGUgImZ0c21vb3RoLmgiCisjaW5jbHVkZSAiZnRncmF5cy5oIgorI2luY2x1ZGUgImZ0c3BpYy5oIgorCisjaW5jbHVkZSAiZnRzbWVycnMuaCIKKworCisgIC8qIGluaXRpYWxpemUgcmVuZGVyZXIgLS0gaW5pdCBpdHMgcmFzdGVyICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9zbW9vdGhfaW5pdCggRlRfUmVuZGVyZXIgIHJlbmRlciApCisgIHsKKyAgICBGVF9MaWJyYXJ5ICBsaWJyYXJ5ID0gRlRfTU9EVUxFX0xJQlJBUlkoIHJlbmRlciApOworCisKKyAgICByZW5kZXItPmNsYXp6LT5yYXN0ZXJfY2xhc3MtPnJhc3Rlcl9yZXNldCggcmVuZGVyLT5yYXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnktPnJhc3Rlcl9wb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5LT5yYXN0ZXJfcG9vbF9zaXplICk7CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgLyogc2V0cyByZW5kZXItc3BlY2lmaWMgbW9kZSAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgZnRfc21vb3RoX3NldF9tb2RlKCBGVF9SZW5kZXJlciAgcmVuZGVyLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgICBtb2RlX3RhZywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Qb2ludGVyICAgZGF0YSApCisgIHsKKyAgICAvKiB3ZSBzaW1wbHkgcGFzcyBpdCB0byB0aGUgcmFzdGVyICovCisgICAgcmV0dXJuIHJlbmRlci0+Y2xhenotPnJhc3Rlcl9jbGFzcy0+cmFzdGVyX3NldF9tb2RlKCByZW5kZXItPnJhc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVfdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSApOworICB9CisKKyAgLyogdHJhbnNmb3JtIGEgZ2l2ZW4gZ2x5cGggaW1hZ2UgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIGZ0X3Ntb290aF90cmFuc2Zvcm0oIEZUX1JlbmRlcmVyICAgICAgIHJlbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICAgICAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfTWF0cml4KiAgbWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICBkZWx0YSApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIGlmICggc2xvdC0+Zm9ybWF0ICE9IHJlbmRlci0+Z2x5cGhfZm9ybWF0ICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgaWYgKCBtYXRyaXggKQorICAgICAgRlRfT3V0bGluZV9UcmFuc2Zvcm0oICZzbG90LT5vdXRsaW5lLCBtYXRyaXggKTsKKworICAgIGlmICggZGVsdGEgKQorICAgICAgRlRfT3V0bGluZV9UcmFuc2xhdGUoICZzbG90LT5vdXRsaW5lLCBkZWx0YS0+eCwgZGVsdGEtPnkgKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogcmV0dXJuIHRoZSBnbHlwaCdzIGNvbnRyb2wgYm94ICovCisgIHN0YXRpYyB2b2lkCisgIGZ0X3Ntb290aF9nZXRfY2JveCggRlRfUmVuZGVyZXIgICByZW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0JCb3gqICAgICAgY2JveCApCisgIHsKKyAgICBGVF9NRU1fWkVSTyggY2JveCwgc2l6ZW9mICggKmNib3ggKSApOworCisgICAgaWYgKCBzbG90LT5mb3JtYXQgPT0gcmVuZGVyLT5nbHlwaF9mb3JtYXQgKQorICAgICAgRlRfT3V0bGluZV9HZXRfQ0JveCggJnNsb3QtPm91dGxpbmUsIGNib3ggKTsKKyAgfQorCisKKyAgLyogY29udmVydCBhIHNsb3QncyBnbHlwaCBpbWFnZSBpbnRvIGEgYml0bWFwICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMoIEZUX1JlbmRlcmVyICAgICAgIHJlbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgICBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcl9Nb2RlICAgIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfVmVjdG9yKiAgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcl9Nb2RlICAgIHJlcXVpcmVkX21vZGUgKQorICB7CisgICAgRlRfRXJyb3IgICAgIGVycm9yOworICAgIEZUX091dGxpbmUqICBvdXRsaW5lID0gTlVMTDsKKyAgICBGVF9CQm94ICAgICAgY2JveDsKKyAgICBGVF9Qb3MgICAgICAgd2lkdGgsIGhlaWdodCwgcGl0Y2g7CisjaWZuZGVmIEZUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfUkVOREVSSU5HCisgICAgRlRfUG9zICAgICAgIGhlaWdodF9vcmcsIHdpZHRoX29yZzsKKyNlbmRpZgorICAgIEZUX0JpdG1hcCogICBiaXRtYXAgID0gJnNsb3QtPmJpdG1hcDsKKyAgICBGVF9NZW1vcnkgICAgbWVtb3J5ICA9IHJlbmRlci0+cm9vdC5tZW1vcnk7CisgICAgRlRfSW50ICAgICAgIGhtdWwgICAgPSBtb2RlID09IEZUX1JFTkRFUl9NT0RFX0xDRDsKKyAgICBGVF9JbnQgICAgICAgdm11bCAgICA9IG1vZGUgPT0gRlRfUkVOREVSX01PREVfTENEX1Y7CisgICAgRlRfUG9zICAgICAgIHhfc2hpZnQgPSAwOworICAgIEZUX1BvcyAgICAgICB5X3NoaWZ0ID0gMDsKKyAgICBGVF9Qb3MgICAgICAgeF9sZWZ0LCB5X3RvcDsKKworICAgIEZUX1Jhc3Rlcl9QYXJhbXMgIHBhcmFtczsKKworICAgIEZUX0Jvb2wgIGhhdmVfdHJhbnNsYXRlZF9vcmlnaW4gPSBGQUxTRTsKKyAgICBGVF9Cb29sICBoYXZlX291dGxpbmVfc2hpZnRlZCAgID0gRkFMU0U7CisgICAgRlRfQm9vbCAgaGF2ZV9idWZmZXIgICAgICAgICAgICA9IEZBTFNFOworCisKKyAgICAvKiBjaGVjayBnbHlwaCBpbWFnZSBmb3JtYXQgKi8KKyAgICBpZiAoIHNsb3QtPmZvcm1hdCAhPSByZW5kZXItPmdseXBoX2Zvcm1hdCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIGNoZWNrIG1vZGUgKi8KKyAgICBpZiAoIG1vZGUgIT0gcmVxdWlyZWRfbW9kZSApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggQ2Fubm90X1JlbmRlcl9HbHlwaCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIG91dGxpbmUgPSAmc2xvdC0+b3V0bGluZTsKKworICAgIC8qIHRyYW5zbGF0ZSB0aGUgb3V0bGluZSB0byB0aGUgbmV3IG9yaWdpbiBpZiBuZWVkZWQgKi8KKyAgICBpZiAoIG9yaWdpbiApCisgICAgeworICAgICAgRlRfT3V0bGluZV9UcmFuc2xhdGUoIG91dGxpbmUsIG9yaWdpbi0+eCwgb3JpZ2luLT55ICk7CisgICAgICBoYXZlX3RyYW5zbGF0ZWRfb3JpZ2luID0gVFJVRTsKKyAgICB9CisKKyAgICAvKiBjb21wdXRlIHRoZSBjb250cm9sIGJveCwgYW5kIGdyaWQgZml0IGl0ICovCisgICAgRlRfT3V0bGluZV9HZXRfQ0JveCggb3V0bGluZSwgJmNib3ggKTsKKworICAgIGNib3gueE1pbiA9IEZUX1BJWF9GTE9PUiggY2JveC54TWluICk7CisgICAgY2JveC55TWluID0gRlRfUElYX0ZMT09SKCBjYm94LnlNaW4gKTsKKyAgICBjYm94LnhNYXggPSBGVF9QSVhfQ0VJTCggY2JveC54TWF4ICk7CisgICAgY2JveC55TWF4ID0gRlRfUElYX0NFSUwoIGNib3gueU1heCApOworCisgICAgaWYgKCBjYm94LnhNaW4gPCAwICYmIGNib3gueE1heCA+IEZUX0lOVF9NQVggKyBjYm94LnhNaW4gKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggImZ0X3Ntb290aF9yZW5kZXJfZ2VuZXJpYzogZ2x5cGggdG9vIGxhcmdlOiIKKyAgICAgICAgICAgICAgICAgIiB4TWluID0gJWQsIHhNYXggPSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgY2JveC54TWluID4+IDYsIGNib3gueE1heCA+PiA2ICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggUmFzdGVyX092ZXJmbG93ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorICAgIGVsc2UKKyAgICAgIHdpZHRoID0gKCBjYm94LnhNYXggLSBjYm94LnhNaW4gKSA+PiA2OworCisgICAgaWYgKCBjYm94LnlNaW4gPCAwICYmIGNib3gueU1heCA+IEZUX0lOVF9NQVggKyBjYm94LnlNaW4gKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggImZ0X3Ntb290aF9yZW5kZXJfZ2VuZXJpYzogZ2x5cGggdG9vIGxhcmdlOiIKKyAgICAgICAgICAgICAgICAgIiB5TWluID0gJWQsIHlNYXggPSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgY2JveC55TWluID4+IDYsIGNib3gueU1heCA+PiA2ICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggUmFzdGVyX092ZXJmbG93ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGhlaWdodCA9ICggY2JveC55TWF4IC0gY2JveC55TWluICkgPj4gNjsKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX1JFTkRFUklORworICAgIHdpZHRoX29yZyAgPSB3aWR0aDsKKyAgICBoZWlnaHRfb3JnID0gaGVpZ2h0OworI2VuZGlmCisKKyAgICAvKiByZWxlYXNlIG9sZCBiaXRtYXAgYnVmZmVyICovCisgICAgaWYgKCBzbG90LT5pbnRlcm5hbC0+ZmxhZ3MgJiBGVF9HTFlQSF9PV05fQklUTUFQICkKKyAgICB7CisgICAgICBGVF9GUkVFKCBiaXRtYXAtPmJ1ZmZlciApOworICAgICAgc2xvdC0+aW50ZXJuYWwtPmZsYWdzICY9IH5GVF9HTFlQSF9PV05fQklUTUFQOworICAgIH0KKworICAgIC8qIGFsbG9jYXRlIG5ldyBvbmUgKi8KKyAgICBwaXRjaCA9IHdpZHRoOworICAgIGlmICggaG11bCApCisgICAgeworICAgICAgd2lkdGggPSB3aWR0aCAqIDM7CisgICAgICBwaXRjaCA9IEZUX1BBRF9DRUlMKCB3aWR0aCwgNCApOworICAgIH0KKworICAgIGlmICggdm11bCApCisgICAgICBoZWlnaHQgKj0gMzsKKworICAgIHhfc2hpZnQgPSAoRlRfSW50KSBjYm94LnhNaW47CisgICAgeV9zaGlmdCA9IChGVF9JbnQpIGNib3gueU1pbjsKKyAgICB4X2xlZnQgID0gKEZUX0ludCkoIGNib3gueE1pbiA+PiA2ICk7CisgICAgeV90b3AgICA9IChGVF9JbnQpKCBjYm94LnlNYXggPj4gNiApOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9SRU5ERVJJTkcKKworICAgIGlmICggc2xvdC0+bGlicmFyeS0+bGNkX2ZpbHRlcl9mdW5jICkKKyAgICB7CisgICAgICBGVF9JbnQgIGV4dHJhID0gc2xvdC0+bGlicmFyeS0+bGNkX2V4dHJhOworCisKKyAgICAgIGlmICggaG11bCApCisgICAgICB7CisgICAgICAgIHhfc2hpZnQgLT0gNjQgKiAoIGV4dHJhID4+IDEgKTsKKyAgICAgICAgd2lkdGggICArPSAzICogZXh0cmE7CisgICAgICAgIHBpdGNoICAgID0gRlRfUEFEX0NFSUwoIHdpZHRoLCA0ICk7CisgICAgICAgIHhfbGVmdCAgLT0gZXh0cmEgPj4gMTsKKyAgICAgIH0KKworICAgICAgaWYgKCB2bXVsICkKKyAgICAgIHsKKyAgICAgICAgeV9zaGlmdCAtPSA2NCAqICggZXh0cmEgPj4gMSApOworICAgICAgICBoZWlnaHQgICs9IDMgKiBleHRyYTsKKyAgICAgICAgeV90b3AgICArPSBleHRyYSA+PiAxOworICAgICAgfQorICAgIH0KKworI2VuZGlmCisKKyNpZiBGVF9VSU5UX01BWCA+IDB4RkZGRlUKKworICAgIC8qIFJlcXVpcmVkIGNoZWNrIGlzIChwaXRjaCAqIGhlaWdodCA8IEZUX1VMT05HX01BWCksICAgICAgICAqLworICAgIC8qIGJ1dCB3ZSBjYXJlIHJlYWxpc3RpYyBjYXNlcyBvbmx5LiAgQWx3YXlzIHBpdGNoIDw9IHdpZHRoLiAqLworICAgIGlmICggd2lkdGggPiAweDdGRkYgfHwgaGVpZ2h0ID4gMHg3RkZGICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWM6IGdseXBoIHRvbyBsYXJnZTogJXUgeCAldVxuIiwKKyAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIFJhc3Rlcl9PdmVyZmxvdyApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworI2VuZGlmCisKKyAgICBiaXRtYXAtPnBpeGVsX21vZGUgPSBGVF9QSVhFTF9NT0RFX0dSQVk7CisgICAgYml0bWFwLT5udW1fZ3JheXMgID0gMjU2OworICAgIGJpdG1hcC0+d2lkdGggICAgICA9IHdpZHRoOworICAgIGJpdG1hcC0+cm93cyAgICAgICA9IGhlaWdodDsKKyAgICBiaXRtYXAtPnBpdGNoICAgICAgPSBwaXRjaDsKKworICAgIC8qIHRyYW5zbGF0ZSBvdXRsaW5lIHRvIHJlbmRlciBpdCBpbnRvIHRoZSBiaXRtYXAgKi8KKyAgICBGVF9PdXRsaW5lX1RyYW5zbGF0ZSggb3V0bGluZSwgLXhfc2hpZnQsIC15X3NoaWZ0ICk7CisgICAgaGF2ZV9vdXRsaW5lX3NoaWZ0ZWQgPSBUUlVFOworCisgICAgaWYgKCBGVF9BTExPQyggYml0bWFwLT5idWZmZXIsIChGVF9VTG9uZylwaXRjaCAqIGhlaWdodCApICkKKyAgICAgIGdvdG8gRXhpdDsKKyAgICBlbHNlCisgICAgICBoYXZlX2J1ZmZlciA9IFRSVUU7CisKKyAgICBzbG90LT5pbnRlcm5hbC0+ZmxhZ3MgfD0gRlRfR0xZUEhfT1dOX0JJVE1BUDsKKworICAgIC8qIHNldCB1cCBwYXJhbWV0ZXJzICovCisgICAgcGFyYW1zLnRhcmdldCA9IGJpdG1hcDsKKyAgICBwYXJhbXMuc291cmNlID0gb3V0bGluZTsKKyAgICBwYXJhbXMuZmxhZ3MgID0gRlRfUkFTVEVSX0ZMQUdfQUE7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX1JFTkRFUklORworCisgICAgLyogaW1wbG9kZSBvdXRsaW5lIGlmIG5lZWRlZCAqLworICAgIHsKKyAgICAgIEZUX1ZlY3RvciogIHBvaW50cyAgICAgPSBvdXRsaW5lLT5wb2ludHM7CisgICAgICBGVF9WZWN0b3IqICBwb2ludHNfZW5kID0gcG9pbnRzICsgb3V0bGluZS0+bl9wb2ludHM7CisgICAgICBGVF9WZWN0b3IqICB2ZWM7CisKKworICAgICAgaWYgKCBobXVsICkKKyAgICAgICAgZm9yICggdmVjID0gcG9pbnRzOyB2ZWMgPCBwb2ludHNfZW5kOyB2ZWMrKyApCisgICAgICAgICAgdmVjLT54ICo9IDM7CisKKyAgICAgIGlmICggdm11bCApCisgICAgICAgIGZvciAoIHZlYyA9IHBvaW50czsgdmVjIDwgcG9pbnRzX2VuZDsgdmVjKysgKQorICAgICAgICAgIHZlYy0+eSAqPSAzOworICAgIH0KKworICAgIC8qIHJlbmRlciBvdXRsaW5lIGludG8gdGhlIGJpdG1hcCAqLworICAgIGVycm9yID0gcmVuZGVyLT5yYXN0ZXJfcmVuZGVyKCByZW5kZXItPnJhc3RlciwgJnBhcmFtcyApOworCisgICAgLyogZGVmbGF0ZSBvdXRsaW5lIGlmIG5lZWRlZCAqLworICAgIHsKKyAgICAgIEZUX1ZlY3RvciogIHBvaW50cyAgICAgPSBvdXRsaW5lLT5wb2ludHM7CisgICAgICBGVF9WZWN0b3IqICBwb2ludHNfZW5kID0gcG9pbnRzICsgb3V0bGluZS0+bl9wb2ludHM7CisgICAgICBGVF9WZWN0b3IqICB2ZWM7CisKKworICAgICAgaWYgKCBobXVsICkKKyAgICAgICAgZm9yICggdmVjID0gcG9pbnRzOyB2ZWMgPCBwb2ludHNfZW5kOyB2ZWMrKyApCisgICAgICAgICAgdmVjLT54IC89IDM7CisKKyAgICAgIGlmICggdm11bCApCisgICAgICAgIGZvciAoIHZlYyA9IHBvaW50czsgdmVjIDwgcG9pbnRzX2VuZDsgdmVjKysgKQorICAgICAgICAgIHZlYy0+eSAvPSAzOworICAgIH0KKworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCBzbG90LT5saWJyYXJ5LT5sY2RfZmlsdGVyX2Z1bmMgKQorICAgICAgc2xvdC0+bGlicmFyeS0+bGNkX2ZpbHRlcl9mdW5jKCBiaXRtYXAsIG1vZGUsIHNsb3QtPmxpYnJhcnkgKTsKKworI2Vsc2UgLyogIUZUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfUkVOREVSSU5HICovCisKKyAgICAvKiByZW5kZXIgb3V0bGluZSBpbnRvIGJpdG1hcCAqLworICAgIGVycm9yID0gcmVuZGVyLT5yYXN0ZXJfcmVuZGVyKCByZW5kZXItPnJhc3RlciwgJnBhcmFtcyApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgLyogZXhwYW5kIGl0IGhvcml6b250YWxseSAqLworICAgIGlmICggaG11bCApCisgICAgeworICAgICAgRlRfQnl0ZSogIGxpbmUgPSBiaXRtYXAtPmJ1ZmZlcjsKKyAgICAgIEZUX1VJbnQgICBoaDsKKworCisgICAgICBmb3IgKCBoaCA9IGhlaWdodF9vcmc7IGhoID4gMDsgaGgtLSwgbGluZSArPSBwaXRjaCApCisgICAgICB7CisgICAgICAgIEZUX1VJbnQgICB4eDsKKyAgICAgICAgRlRfQnl0ZSogIGVuZCA9IGxpbmUgKyB3aWR0aDsKKworCisgICAgICAgIGZvciAoIHh4ID0gd2lkdGhfb3JnOyB4eCA+IDA7IHh4LS0gKQorICAgICAgICB7CisgICAgICAgICAgRlRfVUludCAgcGl4ZWwgPSBsaW5lW3h4LTFdOworCisKKyAgICAgICAgICBlbmRbLTNdID0gKEZUX0J5dGUpcGl4ZWw7CisgICAgICAgICAgZW5kWy0yXSA9IChGVF9CeXRlKXBpeGVsOworICAgICAgICAgIGVuZFstMV0gPSAoRlRfQnl0ZSlwaXhlbDsKKyAgICAgICAgICBlbmQgICAgLT0gMzsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8qIGV4cGFuZCBpdCB2ZXJ0aWNhbGx5ICovCisgICAgaWYgKCB2bXVsICkKKyAgICB7CisgICAgICBGVF9CeXRlKiAgcmVhZCAgPSBiaXRtYXAtPmJ1ZmZlciArICggaGVpZ2h0IC0gaGVpZ2h0X29yZyApICogcGl0Y2g7CisgICAgICBGVF9CeXRlKiAgd3JpdGUgPSBiaXRtYXAtPmJ1ZmZlcjsKKyAgICAgIEZUX1VJbnQgICBoaDsKKworCisgICAgICBmb3IgKCBoaCA9IGhlaWdodF9vcmc7IGhoID4gMDsgaGgtLSApCisgICAgICB7CisgICAgICAgIGZ0X21lbWNweSggd3JpdGUsIHJlYWQsIHBpdGNoICk7CisgICAgICAgIHdyaXRlICs9IHBpdGNoOworCisgICAgICAgIGZ0X21lbWNweSggd3JpdGUsIHJlYWQsIHBpdGNoICk7CisgICAgICAgIHdyaXRlICs9IHBpdGNoOworCisgICAgICAgIGZ0X21lbWNweSggd3JpdGUsIHJlYWQsIHBpdGNoICk7CisgICAgICAgIHdyaXRlICs9IHBpdGNoOworICAgICAgICByZWFkICArPSBwaXRjaDsKKyAgICAgIH0KKyAgICB9CisKKyNlbmRpZiAvKiAhRlRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9SRU5ERVJJTkcgKi8KKworICAgIC8qCisgICAgICogWFhYOiBvbiAxNmJpdCBzeXN0ZW0sIHdlIHJldHVybiBhbiBlcnJvciBmb3IgaHVnZSBiaXRtYXAKKyAgICAgKiB0byBwcmV2ZW50IGFuIG92ZXJmbG93LgorICAgICAqLworICAgIGlmICggeF9sZWZ0ID4gRlRfSU5UX01BWCB8fCB5X3RvcCA+IEZUX0lOVF9NQVggKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfUGl4ZWxfU2l6ZSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIHNsb3QtPmZvcm1hdCAgICAgID0gRlRfR0xZUEhfRk9STUFUX0JJVE1BUDsKKyAgICBzbG90LT5iaXRtYXBfbGVmdCA9IChGVF9JbnQpeF9sZWZ0OworICAgIHNsb3QtPmJpdG1hcF90b3AgID0gKEZUX0ludCl5X3RvcDsKKworICAgIC8qIGV2ZXJ5dGhpbmcgaXMgZmluZTsgZG9uJ3QgZGVhbGxvY2F0ZSBidWZmZXIgKi8KKyAgICBoYXZlX2J1ZmZlciA9IEZBTFNFOworCisgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgRXhpdDoKKyAgICBpZiAoIGhhdmVfb3V0bGluZV9zaGlmdGVkICkKKyAgICAgIEZUX091dGxpbmVfVHJhbnNsYXRlKCBvdXRsaW5lLCB4X3NoaWZ0LCB5X3NoaWZ0ICk7CisgICAgaWYgKCBoYXZlX3RyYW5zbGF0ZWRfb3JpZ2luICkKKyAgICAgIEZUX091dGxpbmVfVHJhbnNsYXRlKCBvdXRsaW5lLCAtb3JpZ2luLT54LCAtb3JpZ2luLT55ICk7CisgICAgaWYgKCBoYXZlX2J1ZmZlciApCisgICAgeworICAgICAgRlRfRlJFRSggYml0bWFwLT5idWZmZXIgKTsKKyAgICAgIHNsb3QtPmludGVybmFsLT5mbGFncyAmPSB+RlRfR0xZUEhfT1dOX0JJVE1BUDsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qIGNvbnZlcnQgYSBzbG90J3MgZ2x5cGggaW1hZ2UgaW50byBhIGJpdG1hcCAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgZnRfc21vb3RoX3JlbmRlciggRlRfUmVuZGVyZXIgICAgICAgcmVuZGVyLAorICAgICAgICAgICAgICAgICAgICBGVF9HbHlwaFNsb3QgICAgICBzbG90LAorICAgICAgICAgICAgICAgICAgICBGVF9SZW5kZXJfTW9kZSAgICBtb2RlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICBvcmlnaW4gKQorICB7CisgICAgaWYgKCBtb2RlID09IEZUX1JFTkRFUl9NT0RFX0xJR0hUICkKKyAgICAgIG1vZGUgPSBGVF9SRU5ERVJfTU9ERV9OT1JNQUw7CisKKyAgICByZXR1cm4gZnRfc21vb3RoX3JlbmRlcl9nZW5lcmljKCByZW5kZXIsIHNsb3QsIG1vZGUsIG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SRU5ERVJfTU9ERV9OT1JNQUwgKTsKKyAgfQorCisKKyAgLyogY29udmVydCBhIHNsb3QncyBnbHlwaCBpbWFnZSBpbnRvIGEgaG9yaXpvbnRhbCBMQ0QgYml0bWFwICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9zbW9vdGhfcmVuZGVyX2xjZCggRlRfUmVuZGVyZXIgICAgICAgcmVuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfR2x5cGhTbG90ICAgICAgc2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcl9Nb2RlICAgIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9WZWN0b3IqICBvcmlnaW4gKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworCisgICAgZXJyb3IgPSBmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMoIHJlbmRlciwgc2xvdCwgbW9kZSwgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SRU5ERVJfTU9ERV9MQ0QgKTsKKyAgICBpZiAoICFlcnJvciApCisgICAgICBzbG90LT5iaXRtYXAucGl4ZWxfbW9kZSA9IEZUX1BJWEVMX01PREVfTENEOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBjb252ZXJ0IGEgc2xvdCdzIGdseXBoIGltYWdlIGludG8gYSB2ZXJ0aWNhbCBMQ0QgYml0bWFwICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF9zbW9vdGhfcmVuZGVyX2xjZF92KCBGVF9SZW5kZXJlciAgICAgICByZW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0dseXBoU2xvdCAgICAgIHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1JlbmRlcl9Nb2RlICAgIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1ZlY3RvciogIG9yaWdpbiApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKyAgICBlcnJvciA9IGZ0X3Ntb290aF9yZW5kZXJfZ2VuZXJpYyggcmVuZGVyLCBzbG90LCBtb2RlLCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1JFTkRFUl9NT0RFX0xDRF9WICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgICAgc2xvdC0+Yml0bWFwLnBpeGVsX21vZGUgPSBGVF9QSVhFTF9NT0RFX0xDRF9WOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9ERUZJTkVfUkVOREVSRVIoIGZ0X3Ntb290aF9yZW5kZXJlcl9jbGFzcywKKworICAgICAgRlRfTU9EVUxFX1JFTkRFUkVSLAorICAgICAgc2l6ZW9mICggRlRfUmVuZGVyZXJSZWMgKSwKKworICAgICAgInNtb290aCIsCisgICAgICAweDEwMDAwTCwKKyAgICAgIDB4MjAwMDBMLAorCisgICAgICAwLCAgICAvKiBtb2R1bGUgc3BlY2lmaWMgaW50ZXJmYWNlICovCisKKyAgICAgIChGVF9Nb2R1bGVfQ29uc3RydWN0b3IpZnRfc21vb3RoX2luaXQsCisgICAgICAoRlRfTW9kdWxlX0Rlc3RydWN0b3IpIDAsCisgICAgICAoRlRfTW9kdWxlX1JlcXVlc3RlcikgIDAKKyAgICAsCisKKyAgICBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSwKKworICAgIChGVF9SZW5kZXJlcl9SZW5kZXJGdW5jKSAgIGZ0X3Ntb290aF9yZW5kZXIsCisgICAgKEZUX1JlbmRlcmVyX1RyYW5zZm9ybUZ1bmMpZnRfc21vb3RoX3RyYW5zZm9ybSwKKyAgICAoRlRfUmVuZGVyZXJfR2V0Q0JveEZ1bmMpICBmdF9zbW9vdGhfZ2V0X2Nib3gsCisgICAgKEZUX1JlbmRlcmVyX1NldE1vZGVGdW5jKSAgZnRfc21vb3RoX3NldF9tb2RlLAorCisgICAgKEZUX1Jhc3Rlcl9GdW5jcyopICAgICZGVF9HUkFZU19SQVNURVJfR0VUCisgICkKKworCisgIEZUX0RFRklORV9SRU5ERVJFUiggZnRfc21vb3RoX2xjZF9yZW5kZXJlcl9jbGFzcywKKworICAgICAgRlRfTU9EVUxFX1JFTkRFUkVSLAorICAgICAgc2l6ZW9mICggRlRfUmVuZGVyZXJSZWMgKSwKKworICAgICAgInNtb290aC1sY2QiLAorICAgICAgMHgxMDAwMEwsCisgICAgICAweDIwMDAwTCwKKworICAgICAgMCwgICAgLyogbW9kdWxlIHNwZWNpZmljIGludGVyZmFjZSAqLworCisgICAgICAoRlRfTW9kdWxlX0NvbnN0cnVjdG9yKWZ0X3Ntb290aF9pbml0LAorICAgICAgKEZUX01vZHVsZV9EZXN0cnVjdG9yKSAwLAorICAgICAgKEZUX01vZHVsZV9SZXF1ZXN0ZXIpICAwCisgICAgLAorCisgICAgRlRfR0xZUEhfRk9STUFUX09VVExJTkUsCisKKyAgICAoRlRfUmVuZGVyZXJfUmVuZGVyRnVuYykgICBmdF9zbW9vdGhfcmVuZGVyX2xjZCwKKyAgICAoRlRfUmVuZGVyZXJfVHJhbnNmb3JtRnVuYylmdF9zbW9vdGhfdHJhbnNmb3JtLAorICAgIChGVF9SZW5kZXJlcl9HZXRDQm94RnVuYykgIGZ0X3Ntb290aF9nZXRfY2JveCwKKyAgICAoRlRfUmVuZGVyZXJfU2V0TW9kZUZ1bmMpICBmdF9zbW9vdGhfc2V0X21vZGUsCisKKyAgICAoRlRfUmFzdGVyX0Z1bmNzKikgICAgJkZUX0dSQVlTX1JBU1RFUl9HRVQKKyAgKQorCisgIEZUX0RFRklORV9SRU5ERVJFUiggZnRfc21vb3RoX2xjZHZfcmVuZGVyZXJfY2xhc3MsCisKKyAgICAgIEZUX01PRFVMRV9SRU5ERVJFUiwKKyAgICAgIHNpemVvZiAoIEZUX1JlbmRlcmVyUmVjICksCisKKyAgICAgICJzbW9vdGgtbGNkdiIsCisgICAgICAweDEwMDAwTCwKKyAgICAgIDB4MjAwMDBMLAorCisgICAgICAwLCAgICAvKiBtb2R1bGUgc3BlY2lmaWMgaW50ZXJmYWNlICovCisKKyAgICAgIChGVF9Nb2R1bGVfQ29uc3RydWN0b3IpZnRfc21vb3RoX2luaXQsCisgICAgICAoRlRfTW9kdWxlX0Rlc3RydWN0b3IpIDAsCisgICAgICAoRlRfTW9kdWxlX1JlcXVlc3RlcikgIDAKKyAgICAsCisKKyAgICBGVF9HTFlQSF9GT1JNQVRfT1VUTElORSwKKworICAgIChGVF9SZW5kZXJlcl9SZW5kZXJGdW5jKSAgIGZ0X3Ntb290aF9yZW5kZXJfbGNkX3YsCisgICAgKEZUX1JlbmRlcmVyX1RyYW5zZm9ybUZ1bmMpZnRfc21vb3RoX3RyYW5zZm9ybSwKKyAgICAoRlRfUmVuZGVyZXJfR2V0Q0JveEZ1bmMpICBmdF9zbW9vdGhfZ2V0X2Nib3gsCisgICAgKEZUX1JlbmRlcmVyX1NldE1vZGVGdW5jKSAgZnRfc21vb3RoX3NldF9tb2RlLAorCisgICAgKEZUX1Jhc3Rlcl9GdW5jcyopICAgICZGVF9HUkFZU19SQVNURVJfR0VUCisgICkKKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL2Z0c21vb3RoLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9mdHNtb290aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NWI4MmQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9mdHNtb290aC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c21vb3RoLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBBbnRpLWFsaWFzaW5nIHJlbmRlcmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUU01PT1RIX0hfXworI2RlZmluZSBfX0ZUU01PT1RIX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHJlbmRlci5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9OT19TVERfUkFTVEVSCisgIEZUX0RFQ0xBUkVfUkVOREVSRVIoIGZ0X3N0ZF9yZW5kZXJlcl9jbGFzcyApCisjZW5kaWYKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX05PX1NNT09USF9SQVNURVIKKyAgRlRfREVDTEFSRV9SRU5ERVJFUiggZnRfc21vb3RoX3JlbmRlcmVyX2NsYXNzICkKKworICBGVF9ERUNMQVJFX1JFTkRFUkVSKCBmdF9zbW9vdGhfbGNkX3JlbmRlcmVyX2NsYXNzICkKKworICBGVF9ERUNMQVJFX1JFTkRFUkVSKCBmdF9zbW9vdGhfbGNkX3ZfcmVuZGVyZXJfY2xhc3MgKQorI2VuZGlmCisKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUU01PT1RIX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnRzcGljLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9mdHNwaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmI5MzczCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnRzcGljLmMKQEAgLTAsMCArMSwxMTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c3BpYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSBzZXJ2aWNlcyBmb3Igc21vb3RoIG1vZHVsZS4gICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOSwgMjAxMCwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICJmdHNwaWMuaCIKKyNpbmNsdWRlICJmdHNtZXJycy5oIgorCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisgIC8qIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgUElDIGluaXQgZnVuY3Rpb25zIGZyb20gZnRncmF5cy5jICovCisgIHZvaWQKKyAgRlRfSW5pdF9DbGFzc19mdF9ncmF5c19yYXN0ZXIoIEZUX1Jhc3Rlcl9GdW5jcyogIGZ1bmNzICk7CisKKworICB2b2lkCisgIGZ0X3Ntb290aF9yZW5kZXJlcl9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9QSUNfQ29udGFpbmVyKiAgcGljX2NvbnRhaW5lciA9ICZsaWJyYXJ5LT5waWNfY29udGFpbmVyOworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnkgICAgICAgID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICBpZiAoIHBpY19jb250YWluZXItPnNtb290aCApCisgICAgeworICAgICAgU21vb3RoUElDKiAgY29udGFpbmVyID0gKFNtb290aFBJQyopcGljX2NvbnRhaW5lci0+c21vb3RoOworCisKKyAgICAgIGlmICggLS1jb250YWluZXItPnJlZl9jb3VudCApCisgICAgICAgIHJldHVybjsKKworICAgICAgRlRfRlJFRSggY29udGFpbmVyICk7CisgICAgICBwaWNfY29udGFpbmVyLT5zbW9vdGggPSBOVUxMOworICAgIH0KKyAgfQorCisKKyAgRlRfRXJyb3IKKyAgZnRfc21vb3RoX3JlbmRlcmVyX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIEZUX1BJQ19Db250YWluZXIqICBwaWNfY29udGFpbmVyID0gJmxpYnJhcnktPnBpY19jb250YWluZXI7CisgICAgRlRfRXJyb3IgICAgICAgICAgIGVycm9yICAgICAgICAgPSBGVF9FcnJfT2s7CisgICAgU21vb3RoUElDKiAgICAgICAgIGNvbnRhaW5lciAgICAgPSBOVUxMOworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnkgICAgICAgID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICAvKiBzaW5jZSB0aGlzIGZ1bmN0aW9uIGFsc28gc2VydmUgc21vb3RoX2xjZCBhbmQgc21vb3RoX2xjZHYgcmVuZGVyZXJzLAorICAgICAgIGl0IGltcGxlbWVudHMgcmVmZXJlbmNlIGNvdW50aW5nICovCisgICAgaWYgKCBwaWNfY29udGFpbmVyLT5zbW9vdGggKQorICAgIHsKKyAgICAgICgoU21vb3RoUElDKilwaWNfY29udGFpbmVyLT5zbW9vdGgpLT5yZWZfY291bnQrKzsKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBhbGxvY2F0ZSBwb2ludGVyLCBjbGVhciBhbmQgc2V0IGdsb2JhbCBjb250YWluZXIgcG9pbnRlciAqLworICAgIGlmICggRlRfQUxMT0MoIGNvbnRhaW5lciwgc2l6ZW9mICggKmNvbnRhaW5lciApICkgKQorICAgICAgcmV0dXJuIGVycm9yOworICAgIEZUX01FTV9TRVQoIGNvbnRhaW5lciwgMCwgc2l6ZW9mICggKmNvbnRhaW5lciApICk7CisgICAgcGljX2NvbnRhaW5lci0+c21vb3RoID0gY29udGFpbmVyOworCisgICAgY29udGFpbmVyLT5yZWZfY291bnQgPSAxOworCisgICAgLyogaW5pdGlhbGl6ZSBwb2ludGVyIHRhYmxlIC0gICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogdGhpcyBpcyBob3cgdGhlIG1vZHVsZSB1c3VhbGx5IGV4cGVjdHMgdGhpcyBkYXRhICovCisgICAgRlRfSW5pdF9DbGFzc19mdF9ncmF5c19yYXN0ZXIoICZjb250YWluZXItPmZ0X2dyYXlzX3Jhc3RlciApOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiByZS1yb3V0ZSB0aGVzZSBpbml0IGFuZCBmcmVlIGZ1bmN0aW9ucyB0byB0aGUgYWJvdmUgZnVuY3Rpb25zICovCisgIEZUX0Vycm9yCisgIGZ0X3Ntb290aF9sY2RfcmVuZGVyZXJfY2xhc3NfcGljX2luaXQoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKQorICB7CisgICAgcmV0dXJuIGZ0X3Ntb290aF9yZW5kZXJlcl9jbGFzc19waWNfaW5pdCggbGlicmFyeSApOworICB9CisKKworICB2b2lkCisgIGZ0X3Ntb290aF9sY2RfcmVuZGVyZXJfY2xhc3NfcGljX2ZyZWUoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKQorICB7CisgICAgZnRfc21vb3RoX3JlbmRlcmVyX2NsYXNzX3BpY19mcmVlKCBsaWJyYXJ5ICk7CisgIH0KKworCisgIEZUX0Vycm9yCisgIGZ0X3Ntb290aF9sY2R2X3JlbmRlcmVyX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICkKKyAgeworICAgIHJldHVybiBmdF9zbW9vdGhfcmVuZGVyZXJfY2xhc3NfcGljX2luaXQoIGxpYnJhcnkgKTsKKyAgfQorCisKKyAgdm9pZAorICBmdF9zbW9vdGhfbGNkdl9yZW5kZXJlcl9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBmdF9zbW9vdGhfcmVuZGVyZXJfY2xhc3NfcGljX2ZyZWUoIGxpYnJhcnkgKTsKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL2Z0c3BpYy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnRzcGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUzMzk2NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL2Z0c3BpYy5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIGZ0c3BpYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUaGUgRnJlZVR5cGUgcG9zaXRpb24gaW5kZXBlbmRlbnQgY29kZSBzZXJ2aWNlcyBmb3Igc21vb3RoIG1vZHVsZS4gICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwOSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgT3JhbiBBZ3JhIGFuZCBNaWNrZXkgR2FiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX0ZUU1BJQ19IX18KKyNkZWZpbmUgX19GVFNQSUNfSF9fCisKKworRlRfQkVHSU5fSEVBREVSCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0cGljLmgiCisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKworI2RlZmluZSBGVF9HUkFZU19SQVNURVJfR0VUICBmdF9ncmF5c19yYXN0ZXIKKworI2Vsc2UgLyogRlRfQ09ORklHX09QVElPTl9QSUMgKi8KKworICB0eXBlZGVmIHN0cnVjdCAgU21vb3RoUElDXworICB7CisgICAgaW50ICAgICAgICAgICAgICByZWZfY291bnQ7CisgICAgRlRfUmFzdGVyX0Z1bmNzICBmdF9ncmF5c19yYXN0ZXI7CisKKyAgfSBTbW9vdGhQSUM7CisKKworI2RlZmluZSBHRVRfUElDKCBsaWIgKSBcCisgICAgICAgICAgKCAoU21vb3RoUElDKikoIChsaWIpLT5waWNfY29udGFpbmVyLnNtb290aCApICkKKyNkZWZpbmUgRlRfR1JBWVNfUkFTVEVSX0dFVCAgKCBHRVRfUElDKCBsaWJyYXJ5ICktPmZ0X2dyYXlzX3Jhc3RlciApCisKKworICAvKiBzZWUgZnRzcGljLmMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiAqLworICB2b2lkCisgIGZ0X3Ntb290aF9yZW5kZXJlcl9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisgIHZvaWQKKyAgZnRfc21vb3RoX2xjZF9yZW5kZXJlcl9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApOworCisgIHZvaWQKKyAgZnRfc21vb3RoX2xjZHZfcmVuZGVyZXJfY2xhc3NfcGljX2ZyZWUoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworICBGVF9FcnJvcgorICBmdF9zbW9vdGhfcmVuZGVyZXJfY2xhc3NfcGljX2luaXQoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworICBGVF9FcnJvcgorICBmdF9zbW9vdGhfbGNkX3JlbmRlcmVyX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKyAgRlRfRXJyb3IKKyAgZnRfc21vb3RoX2xjZHZfcmVuZGVyZXJfY2xhc3NfcGljX2luaXQoIEZUX0xpYnJhcnkgIGxpYnJhcnkgKTsKKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyAvKiAqLworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX0ZUU1BJQ19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL2Z4ZnRfc21vb3RoLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9meGZ0X3Ntb290aC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMDQ3ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9meGZ0X3Ntb290aC5jCkBAIC0wLDAgKzEsMzEgQEAKKyNpZiAhZGVmaW5lZChfRlhGVF9WRVJTSU9OXykgfHwgX0ZYRlRfVkVSU0lPTl8gPT0gMjUwMQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgc21vb3RoLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIGFudGktYWxpYXNpbmcgcmFzdGVyZXIgbW9kdWxlIGNvbXBvbmVudCAoYm9keSBvbmx5KS4gICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjZGVmaW5lIEZUX01BS0VfT1BUSU9OX1NJTkdMRV9PQkpFQ1QKKyNkZWZpbmUgRlQyX0JVSUxEX0xJQlJBUlkKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJmdHNwaWMuYyIKKyNpbmNsdWRlICJmdGdyYXlzLmMiCisjaW5jbHVkZSAiZnRzbW9vdGguYyIKKworCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9tb2R1bGUubWsgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9tb2R1bGUubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdmNmMwNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvc21vb3RoL21vZHVsZS5tawpAQCAtMCwwICsxLDI3IEBACisjCisjIEZyZWVUeXBlIDIgc21vb3RoIHJlbmRlcmVyIG1vZHVsZSBkZWZpbml0aW9uCisjCisKKworIyBDb3B5cmlnaHQgMTk5Ni0yMDAwLCAyMDA2IGJ5CisjIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKKyMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAorIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQorIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAorIyBmdWxseS4KKworCitGVE1PRFVMRV9IX0NPTU1BTkRTICs9IFNNT09USF9SRU5ERVJFUgorCitkZWZpbmUgU01PT1RIX1JFTkRFUkVSCiskKE9QRU5fRFJJVkVSKSBGVF9SZW5kZXJlcl9DbGFzcywgZnRfc21vb3RoX3JlbmRlcmVyX2NsYXNzICQoQ0xPU0VfRFJJVkVSKQorJChFQ0hPX0RSSVZFUilzbW9vdGggICAgJChFQ0hPX0RSSVZFUl9ERVNDKWFudGktYWxpYXNlZCBiaXRtYXAgcmVuZGVyZXIkKEVDSE9fRFJJVkVSX0RPTkUpCiskKE9QRU5fRFJJVkVSKSBGVF9SZW5kZXJlcl9DbGFzcywgZnRfc21vb3RoX2xjZF9yZW5kZXJlcl9jbGFzcyAkKENMT1NFX0RSSVZFUikKKyQoRUNIT19EUklWRVIpc21vb3RoICAgICQoRUNIT19EUklWRVJfREVTQylhbnRpLWFsaWFzZWQgYml0bWFwIHJlbmRlcmVyIGZvciBMQ0RzJChFQ0hPX0RSSVZFUl9ET05FKQorJChPUEVOX0RSSVZFUikgRlRfUmVuZGVyZXJfQ2xhc3MsIGZ0X3Ntb290aF9sY2R2X3JlbmRlcmVyX2NsYXNzICQoQ0xPU0VfRFJJVkVSKQorJChFQ0hPX0RSSVZFUilzbW9vdGggICAgJChFQ0hPX0RSSVZFUl9ERVNDKWFudGktYWxpYXNlZCBiaXRtYXAgcmVuZGVyZXIgZm9yIHZlcnRpY2FsIExDRHMkKEVDSE9fRFJJVkVSX0RPTkUpCitlbmRlZgorCisjIEVPRgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvcnVsZXMubWsgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3Ntb290aC9ydWxlcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGQwYWE1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvcnVsZXMubWsKQEAgLTAsMCArMSw3MCBAQAorIworIyBGcmVlVHlwZSAyIHNtb290aCByZW5kZXJlciBtb2R1bGUgYnVpbGQgcnVsZXMKKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDAsIDIwMDEsIDIwMDMsIDIwMTEgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKKyMgc21vb3RoIGRyaXZlciBkaXJlY3RvcnkKKyMKK1NNT09USF9ESVIgOj0gJChTUkNfRElSKS9zbW9vdGgKKworIyBjb21waWxhdGlvbiBmbGFncyBmb3IgdGhlIGRyaXZlcgorIworU01PT1RIX0NPTVBJTEUgOj0gJChGVF9DT01QSUxFKSAkSSQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJChTTU9PVEhfRElSKSkKKworCisjIHNtb290aCBkcml2ZXIgc291cmNlcyAoaS5lLiwgQyBmaWxlcykKKyMKK1NNT09USF9EUlZfU1JDIDo9ICQoU01PT1RIX0RJUikvZnRncmF5cy5jICBcCisgICAgICAgICAgICAgICAgICAkKFNNT09USF9ESVIpL2Z0c21vb3RoLmMgXAorICAgICAgICAgICAgICAgICAgJChTTU9PVEhfRElSKS9mdHNwaWMuYworCisKKyMgc21vb3RoIGRyaXZlciBoZWFkZXJzCisjCitTTU9PVEhfRFJWX0ggOj0gJChTTU9PVEhfRFJWX1NSQzolYz0laCkgIFwKKyAgICAgICAgICAgICAgICAkKFNNT09USF9ESVIpL2Z0c21lcnJzLmgKKworCisjIHNtb290aCBkcml2ZXIgb2JqZWN0KHMpCisjCisjICAgU01PT1RIX0RSVl9PQkpfTSBpcyB1c2VkIGR1cmluZyBgbXVsdGknIGJ1aWxkcy4KKyMgICBTTU9PVEhfRFJWX09CSl9TIGlzIHVzZWQgZHVyaW5nIGBzaW5nbGUnIGJ1aWxkcy4KKyMKK1NNT09USF9EUlZfT0JKX00gOj0gJChTTU9PVEhfRFJWX1NSQzokKFNNT09USF9ESVIpLyUuYz0kKE9CSl9ESVIpLyUuJE8pCitTTU9PVEhfRFJWX09CSl9TIDo9ICQoT0JKX0RJUikvc21vb3RoLiRPCisKKyMgc21vb3RoIGRyaXZlciBzb3VyY2UgZmlsZSBmb3Igc2luZ2xlIGJ1aWxkCisjCitTTU9PVEhfRFJWX1NSQ19TIDo9ICQoU01PT1RIX0RJUikvc21vb3RoLmMKKworCisjIHNtb290aCBkcml2ZXIgLSBzaW5nbGUgb2JqZWN0CisjCiskKFNNT09USF9EUlZfT0JKX1MpOiAkKFNNT09USF9EUlZfU1JDX1MpICQoU01PT1RIX0RSVl9TUkMpIFwKKyAgICAgICAgICAgICAgICAgICAgICQoRlJFRVRZUEVfSCkgJChTTU9PVEhfRFJWX0gpCisJJChTTU9PVEhfQ09NUElMRSkgJFQkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCRAICQoU01PT1RIX0RSVl9TUkNfUykpCisKKworIyBzbW9vdGggZHJpdmVyIC0gbXVsdGlwbGUgb2JqZWN0cworIworJChPQkpfRElSKS8lLiRPOiAkKFNNT09USF9ESVIpLyUuYyAkKEZSRUVUWVBFX0gpICQoU01PT1RIX0RSVl9IKQorCSQoU01PT1RIX0NPTVBJTEUpICRUJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkQCAkPCkKKworCisjIHVwZGF0ZSBtYWluIGRyaXZlciBvYmplY3QgbGlzdHMKKyMKK0RSVl9PQkpTX1MgKz0gJChTTU9PVEhfRFJWX09CSl9TKQorRFJWX09CSlNfTSArPSAkKFNNT09USF9EUlZfT0JKX00pCisKKworIyBFT0YKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvSmFtZmlsZSBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvSmFtZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGNjY2ZlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS9KYW1maWxlCkBAIC0wLDAgKzEsMjkgQEAKKyMgRnJlZVR5cGUgMiBzcmMvdHJ1ZXR5cGUgSmFtZmlsZQorIworIyBDb3B5cmlnaHQgMjAwMSwgMjAwNCBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKK1N1YkRpciAgRlQyX1RPUCAkKEZUMl9TUkNfRElSKSB0cnVldHlwZSA7CisKK3sKKyAgbG9jYWwgIF9zb3VyY2VzIDsKKworICBpZiAkKEZUMl9NVUxUSSkKKyAgeworICAgIF9zb3VyY2VzID0gdHRkcml2ZXIgdHRvYmpzIHR0cGxvYWQgdHRnbG9hZCB0dGludGVycCB0dGd4dmFyIHR0cGljIDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBfc291cmNlcyA9IHRydWV0eXBlIDsKKyAgfQorCisgIExpYnJhcnkgICQoRlQyX0xJQikgOiAkKF9zb3VyY2VzKS5jIDsKK30KKworIyBlbmQgb2Ygc3JjL3RydWV0eXBlIEphbWZpbGUKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvZnhmdF90cnVldHlwZS5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS9meGZ0X3RydWV0eXBlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM3OTNhNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvZnhmdF90cnVldHlwZS5jCkBAIC0wLDAgKzEsNDIgQEAKKyNpZiAhZGVmaW5lZChfRlhGVF9WRVJTSU9OXykgfHwgX0ZYRlRfVkVSU0lPTl8gPT0gMjUwMQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHJ1ZXR5cGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIEZyZWVUeXBlIFRydWVUeXBlIGRyaXZlciBjb21wb25lbnQgKGJvZHkgb25seSkuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDQsIDIwMDYsIDIwMTIgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjZGVmaW5lIEZUX01BS0VfT1BUSU9OX1NJTkdMRV9PQkpFQ1QKKyNkZWZpbmUgRlQyX0JVSUxEX0xJQlJBUlkKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJ0dHBpYy5jIgorI2luY2x1ZGUgInR0ZHJpdmVyLmMiICAgLyogZHJpdmVyIGludGVyZmFjZSAgICAqLworI2luY2x1ZGUgInR0cGxvYWQuYyIgICAgLyogdGFibGVzIGxvYWRlciAgICAgICAqLworI2luY2x1ZGUgInR0Z2xvYWQuYyIgICAgLyogZ2x5cGggbG9hZGVyICAgICAgICAqLworI2luY2x1ZGUgInR0b2Jqcy5jIiAgICAgLyogb2JqZWN0IG1hbmFnZXIgICAgICAqLworCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisjaW5jbHVkZSAidHRpbnRlcnAuYyIKKyNpbmNsdWRlICJ0dHN1YnBpeC5jIgorI2VuZGlmCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisjaW5jbHVkZSAidHRneHZhci5jIiAgICAvKiBneCBkaXN0b3J0YWJsZSBmb250ICovCisjZW5kaWYKKworCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL21vZHVsZS5tayBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvbW9kdWxlLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZWU4MWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL21vZHVsZS5tawpAQCAtMCwwICsxLDIzIEBACisjCisjIEZyZWVUeXBlIDIgVHJ1ZVR5cGUgbW9kdWxlIGRlZmluaXRpb24KKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDAsIDIwMDYgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKK0ZUTU9EVUxFX0hfQ09NTUFORFMgKz0gVFJVRVRZUEVfRFJJVkVSCisKK2RlZmluZSBUUlVFVFlQRV9EUklWRVIKKyQoT1BFTl9EUklWRVIpIEZUX0RyaXZlcl9DbGFzc1JlYywgdHRfZHJpdmVyX2NsYXNzICQoQ0xPU0VfRFJJVkVSKQorJChFQ0hPX0RSSVZFUil0cnVldHlwZSAgJChFQ0hPX0RSSVZFUl9ERVNDKVdpbmRvd3MvTWFjIGZvbnQgZmlsZXMgd2l0aCBleHRlbnNpb24gKi50dGYgb3IgKi50dGMkKEVDSE9fRFJJVkVSX0RPTkUpCitlbmRlZgorCisjIEVPRgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS9ydWxlcy5tayBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvcnVsZXMubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRiNjlmNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvcnVsZXMubWsKQEAgLTAsMCArMSw3NCBAQAorIworIyBGcmVlVHlwZSAyIFRydWVUeXBlIGRyaXZlciBjb25maWd1cmF0aW9uIHJ1bGVzCisjCisKKworIyBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAzLTIwMDQsIDIwMTEtMjAxMiBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKKworIyBUcnVlVHlwZSBkcml2ZXIgZGlyZWN0b3J5CisjCitUVF9ESVIgOj0gJChTUkNfRElSKS90cnVldHlwZQorCisKKyMgY29tcGlsYXRpb24gZmxhZ3MgZm9yIHRoZSBkcml2ZXIKKyMKK1RUX0NPTVBJTEUgOj0gJChGVF9DT01QSUxFKSAkSSQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJChUVF9ESVIpKQorCisKKyMgVHJ1ZVR5cGUgZHJpdmVyIHNvdXJjZXMgKGkuZS4sIEMgZmlsZXMpCisjCitUVF9EUlZfU1JDIDo9ICQoVFRfRElSKS90dGRyaXZlci5jIFwKKyAgICAgICAgICAgICAgJChUVF9ESVIpL3R0Z2xvYWQuYyAgXAorICAgICAgICAgICAgICAkKFRUX0RJUikvdHRneHZhci5jICBcCisgICAgICAgICAgICAgICQoVFRfRElSKS90dGludGVycC5jIFwKKyAgICAgICAgICAgICAgJChUVF9ESVIpL3R0b2Jqcy5jICAgXAorICAgICAgICAgICAgICAkKFRUX0RJUikvdHRwaWMuYyAgICBcCisgICAgICAgICAgICAgICQoVFRfRElSKS90dHBsb2FkLmMgIFwKKyAgICAgICAgICAgICAgJChUVF9ESVIpL3R0c3VicGl4LmMKKworIyBUcnVlVHlwZSBkcml2ZXIgaGVhZGVycworIworVFRfRFJWX0ggOj0gJChUVF9EUlZfU1JDOiUuYz0lLmgpIFwKKyAgICAgICAgICAgICQoVFRfRElSKS90dGVycm9ycy5oCisKKworIyBUcnVlVHlwZSBkcml2ZXIgb2JqZWN0KHMpCisjCisjICAgVFRfRFJWX09CSl9NIGlzIHVzZWQgZHVyaW5nIGBtdWx0aScgYnVpbGRzCisjICAgVFRfRFJWX09CSl9TIGlzIHVzZWQgZHVyaW5nIGBzaW5nbGUnIGJ1aWxkcworIworVFRfRFJWX09CSl9NIDo9ICQoVFRfRFJWX1NSQzokKFRUX0RJUikvJS5jPSQoT0JKX0RJUikvJS4kTykKK1RUX0RSVl9PQkpfUyA6PSAkKE9CSl9ESVIpL3RydWV0eXBlLiRPCisKKyMgVHJ1ZVR5cGUgZHJpdmVyIHNvdXJjZSBmaWxlIGZvciBzaW5nbGUgYnVpbGQKKyMKK1RUX0RSVl9TUkNfUyA6PSAkKFRUX0RJUikvdHJ1ZXR5cGUuYworCisKKyMgVHJ1ZVR5cGUgZHJpdmVyIC0gc2luZ2xlIG9iamVjdAorIworJChUVF9EUlZfT0JKX1MpOiAkKFRUX0RSVl9TUkNfUykgJChUVF9EUlZfU1JDKSAkKEZSRUVUWVBFX0gpICQoVFRfRFJWX0gpCisJJChUVF9DT01QSUxFKSAkVCQoc3Vic3QgLywkKENPTVBJTEVSX1NFUCksJEAgJChUVF9EUlZfU1JDX1MpKQorCisKKyMgZHJpdmVyIC0gbXVsdGlwbGUgb2JqZWN0cworIworJChPQkpfRElSKS8lLiRPOiAkKFRUX0RJUikvJS5jICQoRlJFRVRZUEVfSCkgJChUVF9EUlZfSCkKKwkkKFRUX0NPTVBJTEUpICRUJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkQCAkPCkKKworCisjIHVwZGF0ZSBtYWluIGRyaXZlciBvYmplY3QgbGlzdHMKKyMKK0RSVl9PQkpTX1MgKz0gJChUVF9EUlZfT0JKX1MpCitEUlZfT0JKU19NICs9ICQoVFRfRFJWX09CSl9NKQorCisKKyMgRU9GCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3NmFkOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYwpAQCAtMCwwICsxLDU3MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHRkcml2ZXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRydWVUeXBlIGZvbnQgZHJpdmVyIGltcGxlbWVudGF0aW9uIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2eGY4Nm5tLmgiCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1tLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGVuZy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Z0dGdseWYuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHJvcC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnR0dGRydi5oIgorCisjaW5jbHVkZSAidHRkcml2ZXIuaCIKKyNpbmNsdWRlICJ0dGdsb2FkLmgiCisjaW5jbHVkZSAidHRwbG9hZC5oIgorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorI2luY2x1ZGUgInR0Z3h2YXIuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAidHRlcnJvcnMuaCIKKworI2luY2x1ZGUgInR0cGljLmgiCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfdHRkcml2ZXIKKworCisgIC8qCisgICAqICBQUk9QRVJUWSBTRVJWSUNFCisgICAqCisgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgdHRfcHJvcGVydHlfc2V0KCBGVF9Nb2R1bGUgICAgbW9kdWxlLCAgICAgICAgIC8qIFRUX0RyaXZlciAqLworICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICBwcm9wZXJ0eV9uYW1lLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQqICB2YWx1ZSApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yICA9IEZUX0Vycl9PazsKKyAgICBUVF9Ecml2ZXIgIGRyaXZlciA9IChUVF9Ecml2ZXIpbW9kdWxlOworCisKKyAgICBpZiAoICFmdF9zdHJjbXAoIHByb3BlcnR5X25hbWUsICJpbnRlcnByZXRlci12ZXJzaW9uIiApICkKKyAgICB7CisgICAgICBGVF9VSW50KiAgaW50ZXJwcmV0ZXJfdmVyc2lvbiA9IChGVF9VSW50Kil2YWx1ZTsKKworCisjaWZuZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgICAgaWYgKCAqaW50ZXJwcmV0ZXJfdmVyc2lvbiAhPSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM1ICkKKyAgICAgICAgZXJyb3IgPSBGVF9FUlIoIFVuaW1wbGVtZW50ZWRfRmVhdHVyZSApOworICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGRyaXZlci0+aW50ZXJwcmV0ZXJfdmVyc2lvbiA9ICppbnRlcnByZXRlcl92ZXJzaW9uOworCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgRlRfVFJBQ0UwKCggInR0X3Byb3BlcnR5X3NldDogbWlzc2luZyBwcm9wZXJ0eSBgJXMnXG4iLAorICAgICAgICAgICAgICAgIHByb3BlcnR5X25hbWUgKSk7CisgICAgcmV0dXJuIEZUX1RIUk9XKCBNaXNzaW5nX1Byb3BlcnR5ICk7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICB0dF9wcm9wZXJ0eV9nZXQoIEZUX01vZHVsZSAgICBtb2R1bGUsICAgICAgICAgLyogVFRfRHJpdmVyICovCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogIHZhbHVlICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3IgID0gRlRfRXJyX09rOworICAgIFRUX0RyaXZlciAgZHJpdmVyID0gKFRUX0RyaXZlciltb2R1bGU7CisKKyAgICBGVF9VSW50ICBpbnRlcnByZXRlcl92ZXJzaW9uID0gZHJpdmVyLT5pbnRlcnByZXRlcl92ZXJzaW9uOworCisKKyAgICBpZiAoICFmdF9zdHJjbXAoIHByb3BlcnR5X25hbWUsICJpbnRlcnByZXRlci12ZXJzaW9uIiApICkKKyAgICB7CisgICAgICBGVF9VSW50KiAgdmFsID0gKEZUX1VJbnQqKXZhbHVlOworCisKKyAgICAgICp2YWwgPSBpbnRlcnByZXRlcl92ZXJzaW9uOworCisgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgRlRfVFJBQ0UwKCggInR0X3Byb3BlcnR5X2dldDogbWlzc2luZyBwcm9wZXJ0eSBgJXMnXG4iLAorICAgICAgICAgICAgICAgIHByb3BlcnR5X25hbWUgKSk7CisgICAgcmV0dXJuIEZUX1RIUk9XKCBNaXNzaW5nX1Byb3BlcnR5ICk7CisgIH0KKworCisgIEZUX0RFRklORV9TRVJWSUNFX1BST1BFUlRJRVNSRUMoCisgICAgdHRfc2VydmljZV9wcm9wZXJ0aWVzLAorICAgIChGVF9Qcm9wZXJ0aWVzX1NldEZ1bmMpdHRfcHJvcGVydHlfc2V0LAorICAgIChGVF9Qcm9wZXJ0aWVzX0dldEZ1bmMpdHRfcHJvcGVydHlfZ2V0ICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgIEYgQSBDIEUgUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjdW5kZWYgIFBBSVJfVEFHCisjZGVmaW5lIFBBSVJfVEFHKCBsZWZ0LCByaWdodCApICAoICggKEZUX1VMb25nKWxlZnQgPDwgMTYgKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUxvbmcpcmlnaHQgICAgICAgICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2dldF9rZXJuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZHJpdmVyIG1ldGhvZCB1c2VkIHRvIHJldHVybiB0aGUga2VybmluZyB2ZWN0b3IgYmV0d2VlbiB0d28gICAgICAqLworICAvKiAgICBnbHlwaHMgb2YgdGhlIHNhbWUgZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxlZnRfZ2x5cGggIDo6IFRoZSBpbmRleCBvZiB0aGUgbGVmdCBnbHlwaCBpbiB0aGUga2VybiBwYWlyLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmlnaHRfZ2x5cGggOjogVGhlIGluZGV4IG9mIHRoZSByaWdodCBnbHlwaCBpbiB0aGUga2VybiBwYWlyLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAga2VybmluZyAgICAgOjogVGhlIGtlcm5pbmcgdmVjdG9yLiAgVGhpcyBpcyBpbiBmb250IHVuaXRzIGZvciAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHNjYWxhYmxlIGZvcm1hdHMsIGFuZCBpbiBwaXhlbHMgZm9yIGZpeGVkLXNpemVzICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBmb3JtYXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBPbmx5IGhvcml6b250YWwgbGF5b3V0cyAobGVmdC10by1yaWdodCAmIHJpZ2h0LXRvLWxlZnQpIGFyZSAgICAgICAgKi8KKyAgLyogICAgc3VwcG9ydGVkIGJ5IHRoaXMgZnVuY3Rpb24uICBPdGhlciBsYXlvdXRzLCBvciBtb3JlIHNvcGhpc3RpY2F0ZWQgICovCisgIC8qICAgIGtlcm5pbmdzLCBhcmUgb3V0IG9mIHNjb3BlIG9mIHRoaXMgbWV0aG9kICh0aGUgYmFzaWMgZHJpdmVyICAgICAgICAqLworICAvKiAgICBpbnRlcmZhY2UgaXMgbWVhbnQgdG8gYmUgc2ltcGxlKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZXkgY2FuIGJlIGltcGxlbWVudGVkIGJ5IGZvcm1hdC1zcGVjaWZpYyBpbnRlcmZhY2VzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIHR0X2dldF9rZXJuaW5nKCBGVF9GYWNlICAgICB0dGZhY2UsICAgICAgICAgIC8qIFRUX0ZhY2UgKi8KKyAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGxlZnRfZ2x5cGgsCisgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICByaWdodF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogIGtlcm5pbmcgKQorICB7CisgICAgVFRfRmFjZSAgICAgICBmYWNlID0gKFRUX0ZhY2UpdHRmYWNlOworICAgIFNGTlRfU2VydmljZSAgc2ZudCA9IChTRk5UX1NlcnZpY2UpZmFjZS0+c2ZudDsKKworCisgICAga2VybmluZy0+eCA9IDA7CisgICAga2VybmluZy0+eSA9IDA7CisKKyAgICBpZiAoIHNmbnQgKQorICAgICAga2VybmluZy0+eCA9IHNmbnQtPmdldF9rZXJuaW5nKCBmYWNlLCBsZWZ0X2dseXBoLCByaWdodF9nbHlwaCApOworCisgICAgcmV0dXJuIDA7CisgIH0KKworCisjdW5kZWYgUEFJUl9UQUcKKworCisgIHN0YXRpYyBGVF9FcnJvcgorICB0dF9nZXRfYWR2YW5jZXMoIEZUX0ZhY2UgICAgdHRmYWNlLAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgIGZsYWdzLAorICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkICAqYWR2YW5jZXMgKQorICB7CisgICAgRlRfVUludCAgbm47CisgICAgVFRfRmFjZSAgZmFjZSAgPSAoVFRfRmFjZSkgdHRmYWNlOworCisKKyAgICAvKiBYWFg6IFRPRE86IGNoZWNrIGZvciBzYml0cyAqLworCisgICAgaWYgKCBmbGFncyAmIEZUX0xPQURfVkVSVElDQUxfTEFZT1VUICkKKyAgICB7CisgICAgICBmb3IgKCBubiA9IDA7IG5uIDwgY291bnQ7IG5uKysgKQorICAgICAgeworICAgICAgICBGVF9TaG9ydCAgIHRzYjsKKyAgICAgICAgRlRfVVNob3J0ICBhaDsKKworCisgICAgICAgIFRUX0dldF9WTWV0cmljcyggZmFjZSwgc3RhcnQgKyBubiwgJnRzYiwgJmFoICk7CisgICAgICAgIGFkdmFuY2VzW25uXSA9IGFoOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgZm9yICggbm4gPSAwOyBubiA8IGNvdW50OyBubisrICkKKyAgICAgIHsKKyAgICAgICAgRlRfU2hvcnQgICBsc2I7CisgICAgICAgIEZUX1VTaG9ydCAgYXc7CisKKworICAgICAgICBUVF9HZXRfSE1ldHJpY3MoIGZhY2UsIHN0YXJ0ICsgbm4sICZsc2IsICZhdyApOworICAgICAgICBhZHZhbmNlc1tubl0gPSBhdzsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgSSBaIEUgUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgdHRfc2l6ZV9zZWxlY3QoIEZUX1NpemUgICBzaXplLAorICAgICAgICAgICAgICAgICAgRlRfVUxvbmcgIHN0cmlrZV9pbmRleCApCisgIHsKKyAgICBUVF9GYWNlICAgdHRmYWNlID0gKFRUX0ZhY2Upc2l6ZS0+ZmFjZTsKKyAgICBUVF9TaXplICAgdHRzaXplID0gKFRUX1NpemUpc2l6ZTsKKyAgICBGVF9FcnJvciAgZXJyb3IgID0gRlRfRXJyX09rOworCisKKyAgICB0dHNpemUtPnN0cmlrZV9pbmRleCA9IHN0cmlrZV9pbmRleDsKKworICAgIGlmICggRlRfSVNfU0NBTEFCTEUoIHNpemUtPmZhY2UgKSApCisgICAgeworICAgICAgLyogdXNlIHRoZSBzY2FsZWQgbWV0cmljcywgZXZlbiB3aGVuIHR0X3NpemVfcmVzZXQgZmFpbHMgKi8KKyAgICAgIEZUX1NlbGVjdF9NZXRyaWNzKCBzaXplLT5mYWNlLCBzdHJpa2VfaW5kZXggKTsKKworICAgICAgdHRfc2l6ZV9yZXNldCggdHRzaXplICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBTRk5UX1NlcnZpY2UgICAgICBzZm50ICAgID0gKFNGTlRfU2VydmljZSkgdHRmYWNlLT5zZm50OworICAgICAgRlRfU2l6ZV9NZXRyaWNzKiAgbWV0cmljcyA9ICZzaXplLT5tZXRyaWNzOworCisKKyAgICAgIGVycm9yID0gc2ZudC0+bG9hZF9zdHJpa2VfbWV0cmljcyggdHRmYWNlLCBzdHJpa2VfaW5kZXgsIG1ldHJpY3MgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICB0dHNpemUtPnN0cmlrZV9pbmRleCA9IDB4RkZGRkZGRkZVTDsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUyAqLworCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHR0X3NpemVfcmVxdWVzdCggRlRfU2l6ZSAgICAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgIEZUX1NpemVfUmVxdWVzdCAgcmVxICkKKyAgeworICAgIFRUX1NpemUgICB0dHNpemUgPSAoVFRfU2l6ZSlzaXplOworICAgIEZUX0Vycm9yICBlcnJvciAgPSBGVF9FcnJfT2s7CisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworCisgICAgaWYgKCBGVF9IQVNfRklYRURfU0laRVMoIHNpemUtPmZhY2UgKSApCisgICAgeworICAgICAgVFRfRmFjZSAgICAgICB0dGZhY2UgPSAoVFRfRmFjZSlzaXplLT5mYWNlOworICAgICAgU0ZOVF9TZXJ2aWNlICBzZm50ICAgPSAoU0ZOVF9TZXJ2aWNlKSB0dGZhY2UtPnNmbnQ7CisgICAgICBGVF9VTG9uZyAgICAgIHN0cmlrZV9pbmRleDsKKworCisgICAgICBlcnJvciA9IHNmbnQtPnNldF9zYml0X3N0cmlrZSggdHRmYWNlLCByZXEsICZzdHJpa2VfaW5kZXggKTsKKworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIHR0c2l6ZS0+c3RyaWtlX2luZGV4ID0gMHhGRkZGRkZGRlVMOworICAgICAgZWxzZQorICAgICAgICByZXR1cm4gdHRfc2l6ZV9zZWxlY3QoIHNpemUsIHN0cmlrZV9pbmRleCApOworICAgIH0KKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUyAqLworCisgICAgRlRfUmVxdWVzdF9NZXRyaWNzKCBzaXplLT5mYWNlLCByZXEgKTsKKworICAgIGlmICggRlRfSVNfU0NBTEFCTEUoIHNpemUtPmZhY2UgKSApCisgICAgeworICAgICAgZXJyb3IgPSB0dF9zaXplX3Jlc2V0KCB0dHNpemUgKTsKKyAgICAgIHR0c2l6ZS0+cm9vdC5tZXRyaWNzID0gdHRzaXplLT5tZXRyaWNzOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZ2x5cGhfbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBkcml2ZXIgbWV0aG9kIHVzZWQgdG8gbG9hZCBhIGdseXBoIHdpdGhpbiBhIGdpdmVuIGdseXBoIHNsb3QuICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2xvdCAgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBzbG90IG9iamVjdCB3aGVyZSB0aGUgZ2x5cGggICovCisgIC8qICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgbG9hZGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2l6ZSAgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIHNpemUgYXQgd2hpY2ggdGhlIGdseXBoICovCisgIC8qICAgICAgICAgICAgICAgICAgIG11c3QgYmUgc2NhbGVkLCBsb2FkZWQsIGV0Yy4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZ2x5cGhfaW5kZXggOjogVGhlIGluZGV4IG9mIHRoZSBnbHlwaCBpbiB0aGUgZm9udCBmaWxlLiAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkX2ZsYWdzICA6OiBBIGZsYWcgaW5kaWNhdGluZyB3aGF0IHRvIGxvYWQgZm9yIHRoaXMgZ2x5cGguICBUaGUgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgRlRfTE9BRF9YWFggY29uc3RhbnRzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIGdseXBoIGxvYWRpbmcgcHJvY2VzcyAoZS5nLiwgd2hldGhlciB0aGUgb3V0bGluZSAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgc2NhbGVkLCB3aGV0aGVyIHRvIGxvYWQgYml0bWFwcyBvciBub3QsICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgd2hldGhlciB0byBoaW50IHRoZSBvdXRsaW5lLCBldGMpLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgdHRfZ2x5cGhfbG9hZCggRlRfR2x5cGhTbG90ICB0dHNsb3QsICAgICAgLyogVFRfR2x5cGhTbG90ICovCisgICAgICAgICAgICAgICAgIEZUX1NpemUgICAgICAgdHRzaXplLCAgICAgIC8qIFRUX1NpemUgICAgICAqLworICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgICAgIGxvYWRfZmxhZ3MgKQorICB7CisgICAgVFRfR2x5cGhTbG90ICBzbG90ID0gKFRUX0dseXBoU2xvdCl0dHNsb3Q7CisgICAgVFRfU2l6ZSAgICAgICBzaXplID0gKFRUX1NpemUpdHRzaXplOworICAgIEZUX0ZhY2UgICAgICAgZmFjZSA9IHR0c2xvdC0+ZmFjZTsKKyAgICBGVF9FcnJvciAgICAgIGVycm9yOworCisKKyAgICBpZiAoICFzbG90ICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9TbG90X0hhbmRsZSApOworCisgICAgaWYgKCAhc2l6ZSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfU2l6ZV9IYW5kbGUgKTsKKworICAgIGlmICggIWZhY2UgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisgICAgaWYgKCBnbHlwaF9pbmRleCA+PSAoRlRfVUludClmYWNlLT5udW1fZ2x5cGhzICYmCisgICAgICAgICAhZmFjZS0+aW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSAgICkKKyNlbHNlCisgICAgaWYgKCBnbHlwaF9pbmRleCA+PSAoRlRfVUludClmYWNlLT5udW1fZ2x5cGhzICkKKyNlbmRpZgorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX0hJTlRJTkcgKQorICAgIHsKKyAgICAgIC8qIGJvdGggRlRfTE9BRF9OT19ISU5USU5HIGFuZCBGVF9MT0FEX05PX0FVVE9ISU5UICAgKi8KKyAgICAgIC8qIGFyZSBuZWNlc3NhcnkgdG8gZGlzYWJsZSBoaW50aW5nIGZvciB0cmlja3kgZm9udHMgKi8KKworICAgICAgaWYgKCBGVF9JU19UUklDS1koIGZhY2UgKSApCisgICAgICAgIGxvYWRfZmxhZ3MgJj0gfkZUX0xPQURfTk9fSElOVElORzsKKworICAgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19BVVRPSElOVCApCisgICAgICAgIGxvYWRfZmxhZ3MgfD0gRlRfTE9BRF9OT19ISU5USU5HOworICAgIH0KKworICAgIGlmICggbG9hZF9mbGFncyAmICggRlRfTE9BRF9OT19SRUNVUlNFIHwgRlRfTE9BRF9OT19TQ0FMRSApICkKKyAgICB7CisgICAgICBsb2FkX2ZsYWdzIHw9IEZUX0xPQURfTk9fQklUTUFQIHwgRlRfTE9BRF9OT19TQ0FMRTsKKworICAgICAgaWYgKCAhRlRfSVNfVFJJQ0tZKCBmYWNlICkgKQorICAgICAgICBsb2FkX2ZsYWdzIHw9IEZUX0xPQURfTk9fSElOVElORzsKKyAgICB9CisKKyAgICAvKiBub3cgbG9hZCB0aGUgZ2x5cGggb3V0bGluZSBpZiBuZWNlc3NhcnkgKi8KKyAgICBlcnJvciA9IFRUX0xvYWRfR2x5cGgoIHNpemUsIHNsb3QsIGdseXBoX2luZGV4LCBsb2FkX2ZsYWdzICk7CisKKyAgICAvKiBmb3JjZSBkcm9wLW91dCBtb2RlIHRvIDIgLSBpcnJlbGV2YW50IG5vdyAqLworICAgIC8qIHNsb3QtPm91dGxpbmUuZHJvcG91dF9tb2RlID0gMjsgKi8KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKiAgICAgICAgICAgICAgICBEIFIgSSBWIEUgUiAgSSBOIFQgRSBSIEYgQSBDIEUgICAgICAgICAgICAgICAgICAgKioqKi8KKyAgLyoqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKiovCisgIC8qKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICBGVF9ERUZJTkVfU0VSVklDRV9NVUxUSU1BU1RFUlNSRUMoCisgICAgdHRfc2VydmljZV9neF9tdWx0aV9tYXN0ZXJzLAorICAgIChGVF9HZXRfTU1fRnVuYykgICAgICAgIE5VTEwsCisgICAgKEZUX1NldF9NTV9EZXNpZ25fRnVuYykgTlVMTCwKKyAgICAoRlRfU2V0X01NX0JsZW5kX0Z1bmMpICBUVF9TZXRfTU1fQmxlbmQsCisgICAgKEZUX0dldF9NTV9WYXJfRnVuYykgICAgVFRfR2V0X01NX1ZhciwKKyAgICAoRlRfU2V0X1Zhcl9EZXNpZ25fRnVuYylUVF9TZXRfVmFyX0Rlc2lnbiApCisjZW5kaWYKKworICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9UcnVlVHlwZUVuZ2luZVJlYyAgdHRfc2VydmljZV90cnVldHlwZV9lbmdpbmUgPQorICB7CisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORworICAgIEZUX1RSVUVUWVBFX0VOR0lORV9UWVBFX1VOUEFURU5URUQKKyNlbHNlCisgICAgRlRfVFJVRVRZUEVfRU5HSU5FX1RZUEVfUEFURU5URUQKKyNlbmRpZgorCisjZWxzZSAvKiAhVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSICovCisKKyAgICBGVF9UUlVFVFlQRV9FTkdJTkVfVFlQRV9OT05FCisKKyNlbmRpZiAvKiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgKi8KKyAgfTsKKworICBGVF9ERUZJTkVfU0VSVklDRV9UVEdMWUZSRUMoCisgICAgdHRfc2VydmljZV90cnVldHlwZV9nbHlmLAorICAgIChUVF9HbHlmX0dldExvY2F0aW9uRnVuYyl0dF9mYWNlX2dldF9sb2NhdGlvbiApCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgIEZUX0RFRklORV9TRVJWSUNFREVTQ1JFQzUoCisgICAgdHRfc2VydmljZXMsCisgICAgRlRfU0VSVklDRV9JRF9YRjg2X05BTUUsICAgICAgIEZUX1hGODZfRk9STUFUX1RSVUVUWVBFLAorICAgIEZUX1NFUlZJQ0VfSURfTVVMVElfTUFTVEVSUywgICAmVFRfU0VSVklDRV9HWF9NVUxUSV9NQVNURVJTX0dFVCwKKyAgICBGVF9TRVJWSUNFX0lEX1RSVUVUWVBFX0VOR0lORSwgJnR0X3NlcnZpY2VfdHJ1ZXR5cGVfZW5naW5lLAorICAgIEZUX1NFUlZJQ0VfSURfVFRfR0xZRiwgICAgICAgICAmVFRfU0VSVklDRV9UUlVFVFlQRV9HTFlGX0dFVCwKKyAgICBGVF9TRVJWSUNFX0lEX1BST1BFUlRJRVMsICAgICAgJlRUX1NFUlZJQ0VfUFJPUEVSVElFU19HRVQgKQorI2Vsc2UKKyAgRlRfREVGSU5FX1NFUlZJQ0VERVNDUkVDNCgKKyAgICB0dF9zZXJ2aWNlcywKKyAgICBGVF9TRVJWSUNFX0lEX1hGODZfTkFNRSwgICAgICAgRlRfWEY4Nl9GT1JNQVRfVFJVRVRZUEUsCisgICAgRlRfU0VSVklDRV9JRF9UUlVFVFlQRV9FTkdJTkUsICZ0dF9zZXJ2aWNlX3RydWV0eXBlX2VuZ2luZSwKKyAgICBGVF9TRVJWSUNFX0lEX1RUX0dMWUYsICAgICAgICAgJlRUX1NFUlZJQ0VfVFJVRVRZUEVfR0xZRl9HRVQsCisgICAgRlRfU0VSVklDRV9JRF9QUk9QRVJUSUVTLCAgICAgICZUVF9TRVJWSUNFX1BST1BFUlRJRVNfR0VUICkKKyNlbmRpZgorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9Nb2R1bGVfSW50ZXJmYWNlICkKKyAgdHRfZ2V0X2ludGVyZmFjZSggRlRfTW9kdWxlICAgIGRyaXZlciwgICAgLyogVFRfRHJpdmVyICovCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICB0dF9pbnRlcmZhY2UgKQorICB7CisgICAgRlRfTGlicmFyeSAgICAgICAgICAgbGlicmFyeTsKKyAgICBGVF9Nb2R1bGVfSW50ZXJmYWNlICByZXN1bHQ7CisgICAgRlRfTW9kdWxlICAgICAgICAgICAgc2ZudGQ7CisgICAgU0ZOVF9TZXJ2aWNlICAgICAgICAgc2ZudDsKKworCisgICAgLyogVFRfU0VSVklDRVNfR0VUIGRlcmVmZXJzIGBsaWJyYXJ5JyBpbiBQSUMgbW9kZSAqLworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisgICAgaWYgKCAhZHJpdmVyICkKKyAgICAgIHJldHVybiBOVUxMOworICAgIGxpYnJhcnkgPSBkcml2ZXItPmxpYnJhcnk7CisgICAgaWYgKCAhbGlicmFyeSApCisgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCisgICAgcmVzdWx0ID0gZnRfc2VydmljZV9saXN0X2xvb2t1cCggVFRfU0VSVklDRVNfR0VULCB0dF9pbnRlcmZhY2UgKTsKKyAgICBpZiAoIHJlc3VsdCAhPSBOVUxMICkKKyAgICAgIHJldHVybiByZXN1bHQ7CisKKyNpZm5kZWYgRlRfQ09ORklHX09QVElPTl9QSUMKKyAgICBpZiAoICFkcml2ZXIgKQorICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGlicmFyeSA9IGRyaXZlci0+bGlicmFyeTsKKyAgICBpZiAoICFsaWJyYXJ5ICkKKyAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKKyAgICAvKiBvbmx5IHJldHVybiB0aGUgZGVmYXVsdCBpbnRlcmZhY2UgZnJvbSB0aGUgU0ZOVCBtb2R1bGUgKi8KKyAgICBzZm50ZCA9IEZUX0dldF9Nb2R1bGUoIGxpYnJhcnksICJzZm50IiApOworICAgIGlmICggc2ZudGQgKQorICAgIHsKKyAgICAgIHNmbnQgPSAoU0ZOVF9TZXJ2aWNlKSggc2ZudGQtPmNsYXp6LT5tb2R1bGVfaW50ZXJmYWNlICk7CisgICAgICBpZiAoIHNmbnQgKQorICAgICAgICByZXR1cm4gc2ZudC0+Z2V0X2ludGVyZmFjZSggZHJpdmVyLCB0dF9pbnRlcmZhY2UgKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgLyogVGhlIEZUX0RyaXZlckludGVyZmFjZSBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbiBmdGRyaXZlci5oLiAqLworCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisjZGVmaW5lIFRUX0hJTlRFUl9GTEFHICBGVF9NT0RVTEVfRFJJVkVSX0hBU19ISU5URVIKKyNlbHNlCisjZGVmaW5lIFRUX0hJTlRFUl9GTEFHICAwCisjZW5kaWYKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworI2RlZmluZSBUVF9TSVpFX1NFTEVDVCAgdHRfc2l6ZV9zZWxlY3QKKyNlbHNlCisjZGVmaW5lIFRUX1NJWkVfU0VMRUNUICAwCisjZW5kaWYKKworICBGVF9ERUZJTkVfRFJJVkVSKAorICAgIHR0X2RyaXZlcl9jbGFzcywKKworICAgICAgRlRfTU9EVUxFX0ZPTlRfRFJJVkVSICAgICB8CisgICAgICBGVF9NT0RVTEVfRFJJVkVSX1NDQUxBQkxFIHwKKyAgICAgIFRUX0hJTlRFUl9GTEFHLAorCisgICAgICBzaXplb2YgKCBUVF9Ecml2ZXJSZWMgKSwKKworICAgICAgInRydWV0eXBlX3h5cSIsICAgICAgLyogZHJpdmVyIG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgMHgxMDAwMEwsICAgICAgICAvKiBkcml2ZXIgdmVyc2lvbiA9PSAxLjAgICAgICAgICAgICAgICAgICovCisgICAgICAweDIwMDAwTCwgICAgICAgIC8qIGRyaXZlciByZXF1aXJlcyBGcmVlVHlwZSAyLjAgb3IgYWJvdmUgKi8KKworICAgICAgKHZvaWQqKTAsICAgICAgICAvKiBkcml2ZXIgc3BlY2lmaWMgaW50ZXJmYWNlICovCisKKyAgICAgIHR0X2RyaXZlcl9pbml0LAorICAgICAgdHRfZHJpdmVyX2RvbmUsCisgICAgICB0dF9nZXRfaW50ZXJmYWNlLAorCisgICAgc2l6ZW9mICggVFRfRmFjZVJlYyApLAorICAgIHNpemVvZiAoIFRUX1NpemVSZWMgKSwKKyAgICBzaXplb2YgKCBGVF9HbHlwaFNsb3RSZWMgKSwKKworICAgIHR0X2ZhY2VfaW5pdCwKKyAgICB0dF9mYWNlX2RvbmUsCisgICAgdHRfc2l6ZV9pbml0LAorICAgIHR0X3NpemVfZG9uZSwKKyAgICB0dF9zbG90X2luaXQsCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIEZUX1Nsb3RfRG9uZUZ1bmMgKi8KKworICAgIHR0X2dseXBoX2xvYWQsCisKKyAgICB0dF9nZXRfa2VybmluZywKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogRlRfRmFjZV9BdHRhY2hGdW5jICovCisgICAgdHRfZ2V0X2FkdmFuY2VzLAorCisgICAgdHRfc2l6ZV9yZXF1ZXN0LAorICAgIFRUX1NJWkVfU0VMRUNUCisgICkKKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDgwMmMxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dGRyaXZlci5oCkBAIC0wLDAgKzEsMzggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0ZHJpdmVyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBIaWdoLWxldmVsIFRydWVUeXBlIGRyaXZlciBpbnRlcmZhY2UgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1RURFJJVkVSX0hfXworI2RlZmluZSBfX1RURFJJVkVSX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfREVDTEFSRV9EUklWRVIoIHR0X2RyaXZlcl9jbGFzcyApCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UVERSSVZFUl9IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRlcnJvcnMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRlcnJvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmFhYTlmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dGVycm9ycy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0ZXJyb3JzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcnVlVHlwZSBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAwMSwgMjAxMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgZmlsZSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgVHJ1ZVR5cGUgZXJyb3IgZW51bWVyYXRpb24gICAgICAgICAgICAqLworICAvKiBjb25zdGFudHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fVFRFUlJPUlNfSF9fCisjZGVmaW5lIF9fVFRFUlJPUlNfSF9fCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmgiCisKKyN1bmRlZiBfX0ZURVJST1JTX0hfXworCisjdW5kZWYgIEZUX0VSUl9QUkVGSVgKKyNkZWZpbmUgRlRfRVJSX1BSRUZJWCAgVFRfRXJyXworI2RlZmluZSBGVF9FUlJfQkFTRSAgICBGVF9Nb2RfRXJyX1RydWVUeXBlCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmgiCisKKyNlbmRpZiAvKiBfX1RURVJST1JTX0hfXyAqLworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dGdsb2FkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMyNDE5YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jCkBAIC0wLDAgKzEsMjMzNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHRnbG9hZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRydWVUeXBlIEdseXBoIExvYWRlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHR0ZHJ2LmgiCisKKworI2luY2x1ZGUgInR0Z2xvYWQuaCIKKyNpbmNsdWRlICJ0dHBsb2FkLmgiCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisjaW5jbHVkZSAidHRneHZhci5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ0dGVycm9ycy5oIgorI2luY2x1ZGUgInR0c3VicGl4LmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV90dGdsb2FkCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIENvbXBvc2l0ZSBnbHlwaCBmbGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQVJHU19BUkVfV09SRFMgICAgICAgICAgICAgMHgwMDAxCisjZGVmaW5lIEFSR1NfQVJFX1hZX1ZBTFVFUyAgICAgICAgIDB4MDAwMgorI2RlZmluZSBST1VORF9YWV9UT19HUklEICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgV0VfSEFWRV9BX1NDQUxFICAgICAgICAgICAgMHgwMDA4CisvKiByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxMCAqLworI2RlZmluZSBNT1JFX0NPTVBPTkVOVFMgICAgICAgICAgICAweDAwMjAKKyNkZWZpbmUgV0VfSEFWRV9BTl9YWV9TQ0FMRSAgICAgICAgMHgwMDQwCisjZGVmaW5lIFdFX0hBVkVfQV8yWDIgICAgICAgICAgICAgIDB4MDA4MAorI2RlZmluZSBXRV9IQVZFX0lOU1RSICAgICAgICAgICAgICAweDAxMDAKKyNkZWZpbmUgVVNFX01ZX01FVFJJQ1MgICAgICAgICAgICAgMHgwMjAwCisjZGVmaW5lIE9WRVJMQVBfQ09NUE9VTkQgICAgICAgICAgIDB4MDQwMAorI2RlZmluZSBTQ0FMRURfQ09NUE9ORU5UX09GRlNFVCAgICAweDA4MDAKKyNkZWZpbmUgVU5TQ0FMRURfQ09NUE9ORU5UX09GRlNFVCAgMHgxMDAwCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJldHVybiB0aGUgaG9yaXpvbnRhbCBtZXRyaWNzIGluIGZvbnQgdW5pdHMgZm9yIGEgZ2l2ZW4gZ2x5cGguICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgVFRfR2V0X0hNZXRyaWNzKCBUVF9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGlkeCwKKyAgICAgICAgICAgICAgICAgICBGVF9TaG9ydCogICBsc2IsCisgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0KiAgYXcgKQorICB7CisgICAgKCAoU0ZOVF9TZXJ2aWNlKWZhY2UtPnNmbnQgKS0+Z2V0X21ldHJpY3MoIGZhY2UsIDAsIGlkeCwgbHNiLCBhdyApOworCisgICAgRlRfVFJBQ0U1KCggIiAgYWR2YW5jZSB3aWR0aCAoZm9udCB1bml0cyk6ICVkXG4iLCAqYXcgKSk7CisgICAgRlRfVFJBQ0U1KCggIiAgbGVmdCBzaWRlIGJlYXJpbmcgKGZvbnQgdW5pdHMpOiAlZFxuIiwgKmxzYiApKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBSZXR1cm4gdGhlIHZlcnRpY2FsIG1ldHJpY3MgaW4gZm9udCB1bml0cyBmb3IgYSBnaXZlbiBnbHlwaC4gICAgICAgICAgKi8KKyAgLyogR3JlZyBIaXRjaGNvY2sgZnJvbSBNaWNyb3NvZnQgdG9sZCB1cyB0aGF0IGlmIHRoZXJlIHdlcmUgbm8gYHZtdHgnICAgICovCisgIC8qIHRhYmxlLCB0eXBvQXNjZW5kZXIvRGVzY2VuZGVyIGZyb20gdGhlIGBPUy8yJyB0YWJsZSB3b3VsZCBiZSB1c2VkICAgICAqLworICAvKiBpbnN0ZWFkLCBhbmQgaWYgdGhlcmUgd2VyZSBubyBgT1MvMicgdGFibGUsIHVzZSBhc2NlbmRlci9kZXNjZW5kZXIgICAgKi8KKyAgLyogZnJvbSB0aGUgYGhoZWEnIHRhYmxlLiAgQnV0IHRoYXQgaXMgbm90IHdoYXQgTWljcm9zb2Z0J3MgcmFzdGVyaXplciAgICovCisgIC8qIGFwcGFyZW50bHkgZG9lczogSXQgdXNlcyB0aGUgcHBlbSB2YWx1ZSBhcyB0aGUgYWR2YW5jZSBoZWlnaHQsIGFuZCAgICAqLworICAvKiBzZXRzIHRoZSB0b3Agc2lkZSBiZWFyaW5nIHRvIGJlIHplcm8uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIFRUX0dldF9WTWV0cmljcyggVFRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgRlRfU2hvcnQqICAgdHNiLAorICAgICAgICAgICAgICAgICAgIEZUX1VTaG9ydCogIGFoICkKKyAgeworICAgIGlmICggZmFjZS0+dmVydGljYWxfaW5mbyApCisgICAgICAoIChTRk5UX1NlcnZpY2UpZmFjZS0+c2ZudCApLT5nZXRfbWV0cmljcyggZmFjZSwgMSwgaWR4LCB0c2IsIGFoICk7CisKKyNpZiAxICAgICAgICAgICAgIC8qIEVtcGlyaWNhbGx5IGRldGVybWluZWQsIGF0IHZhcmlhbmNlIHdpdGggd2hhdCBNUyBzYWlkICovCisKKyAgICBlbHNlCisgICAgeworICAgICAgKnRzYiA9IDA7CisgICAgICAqYWggID0gZmFjZS0+cm9vdC51bml0c19wZXJfRU07CisgICAgfQorCisjZWxzZSAgICAgIC8qIFRoaXMgaXMgd2hhdCBNUyBzYWlkIHRvIGRvLiAgSXQgaXNuJ3Qgd2hhdCB0aGV5IGRvLCBob3dldmVyLiAqLworCisgICAgZWxzZSBpZiAoIGZhY2UtPm9zMi52ZXJzaW9uICE9IDB4RkZGRlUgKQorICAgIHsKKyAgICAgICp0c2IgPSBmYWNlLT5vczIuc1R5cG9Bc2NlbmRlcjsKKyAgICAgICphaCAgPSBmYWNlLT5vczIuc1R5cG9Bc2NlbmRlciAtIGZhY2UtPm9zMi5zVHlwb0Rlc2NlbmRlcjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICp0c2IgPSBmYWNlLT5ob3Jpem9udGFsLkFzY2VuZGVyOworICAgICAgKmFoICA9IGZhY2UtPmhvcml6b250YWwuQXNjZW5kZXIgLSBmYWNlLT5ob3Jpem9udGFsLkRlc2NlbmRlcjsKKyAgICB9CisKKyNlbmRpZgorCisgICAgRlRfVFJBQ0U1KCggIiAgYWR2YW5jZSBoZWlnaHQgKGZvbnQgdW5pdHMpOiAlZFxuIiwgKmFoICkpOworICAgIEZUX1RSQUNFNSgoICIgIHRvcCBzaWRlIGJlYXJpbmcgKGZvbnQgdW5pdHMpOiAlZFxuIiwgKnRzYiApKTsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgdHRfZ2V0X21ldHJpY3MoIFRUX0xvYWRlciAgbG9hZGVyLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBnbHlwaF9pbmRleCApCisgIHsKKyAgICBUVF9GYWNlICAgIGZhY2UgICA9IChUVF9GYWNlKWxvYWRlci0+ZmFjZTsKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBUVF9Ecml2ZXIgIGRyaXZlciA9IChUVF9Ecml2ZXIpRlRfRkFDRV9EUklWRVIoIGZhY2UgKTsKKyNlbmRpZgorCisgICAgRlRfU2hvcnQgICBsZWZ0X2JlYXJpbmcgPSAwLCB0b3BfYmVhcmluZyA9IDA7CisgICAgRlRfVVNob3J0ICBhZHZhbmNlX3dpZHRoID0gMCwgYWR2YW5jZV9oZWlnaHQgPSAwOworCisKKyAgICBUVF9HZXRfSE1ldHJpY3MoIGZhY2UsIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgJmxlZnRfYmVhcmluZywKKyAgICAgICAgICAgICAgICAgICAgICZhZHZhbmNlX3dpZHRoICk7CisgICAgVFRfR2V0X1ZNZXRyaWNzKCBmYWNlLCBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICZ0b3BfYmVhcmluZywKKyAgICAgICAgICAgICAgICAgICAgICZhZHZhbmNlX2hlaWdodCApOworCisgICAgbG9hZGVyLT5sZWZ0X2JlYXJpbmcgPSBsZWZ0X2JlYXJpbmc7CisgICAgbG9hZGVyLT5hZHZhbmNlICAgICAgPSBhZHZhbmNlX3dpZHRoOworICAgIGxvYWRlci0+dG9wX2JlYXJpbmcgID0gdG9wX2JlYXJpbmc7CisgICAgbG9hZGVyLT52YWR2YW5jZSAgICAgPSBhZHZhbmNlX2hlaWdodDsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgIGlmICggZHJpdmVyLT5pbnRlcnByZXRlcl92ZXJzaW9uID09IFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzggKQorICAgIHsKKyAgICAgIGlmICggbG9hZGVyLT5leGVjICkKKyAgICAgICAgbG9hZGVyLT5leGVjLT5zcGhfdHdlYWtfZmxhZ3MgPSAwOworCisgICAgICAvKiB0aGlzIG1heSBub3QgYmUgdGhlIHJpZ2h0IHBsYWNlIGZvciB0aGlzLCBidXQgaXQgd29ya3MgKi8KKyAgICAgIGlmICggbG9hZGVyLT5leGVjICYmIGxvYWRlci0+ZXhlYy0+aWdub3JlX3hfbW9kZSApCisgICAgICAgIHNwaF9zZXRfdHdlYWtzKCBsb2FkZXIsIGdseXBoX2luZGV4ICk7CisgICAgfQorI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisgICAgaWYgKCAhbG9hZGVyLT5saW5lYXJfZGVmICkKKyAgICB7CisgICAgICBsb2FkZXItPmxpbmVhcl9kZWYgPSAxOworICAgICAgbG9hZGVyLT5saW5lYXIgICAgID0gYWR2YW5jZV93aWR0aDsKKyAgICB9CisgIH0KKworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorCisgIHN0YXRpYyB2b2lkCisgIHR0X2dldF9tZXRyaWNzX2luY3Jfb3ZlcnJpZGVzKCBUVF9Mb2FkZXIgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZ2x5cGhfaW5kZXggKQorICB7CisgICAgVFRfRmFjZSAgZmFjZSA9IChUVF9GYWNlKWxvYWRlci0+ZmFjZTsKKworICAgIEZUX1Nob3J0ICAgbGVmdF9iZWFyaW5nID0gMCwgdG9wX2JlYXJpbmcgPSAwOworICAgIEZUX1VTaG9ydCAgYWR2YW5jZV93aWR0aCA9IDAsIGFkdmFuY2VfaGVpZ2h0ID0gMDsKKworCisgICAgLyogSWYgdGhpcyBpcyBhbiBpbmNyZW1lbnRhbGx5IGxvYWRlZCBmb250IGNoZWNrIHdoZXRoZXIgdGhlcmUgYXJlICovCisgICAgLyogb3ZlcnJpZGluZyBtZXRyaWNzIGZvciB0aGlzIGdseXBoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5mdW5jcy0+Z2V0X2dseXBoX21ldHJpY3MgKQorICAgIHsKKyAgICAgIEZUX0luY3JlbWVudGFsX01ldHJpY3NSZWMgIG1ldHJpY3M7CisgICAgICBGVF9FcnJvciAgICAgICAgICAgICAgICAgICBlcnJvcjsKKworCisgICAgICBtZXRyaWNzLmJlYXJpbmdfeCA9IGxvYWRlci0+bGVmdF9iZWFyaW5nOworICAgICAgbWV0cmljcy5iZWFyaW5nX3kgPSAwOworICAgICAgbWV0cmljcy5hZHZhbmNlICAgPSBsb2FkZXItPmFkdmFuY2U7CisgICAgICBtZXRyaWNzLmFkdmFuY2VfdiA9IDA7CisKKyAgICAgIGVycm9yID0gZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5mdW5jcy0+Z2V0X2dseXBoX21ldHJpY3MoCisgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5vYmplY3QsCisgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsIEZBTFNFLCAmbWV0cmljcyApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgbGVmdF9iZWFyaW5nICA9IChGVF9TaG9ydCltZXRyaWNzLmJlYXJpbmdfeDsKKyAgICAgIGFkdmFuY2Vfd2lkdGggPSAoRlRfVVNob3J0KW1ldHJpY3MuYWR2YW5jZTsKKworI2lmIDAKKworICAgICAgLyogR1dXOiBEbyBJIGRvIHRoZSBzYW1lIGZvciB2ZXJ0aWNhbCBtZXRyaWNzPyAqLworICAgICAgbWV0cmljcy5iZWFyaW5nX3ggPSAwOworICAgICAgbWV0cmljcy5iZWFyaW5nX3kgPSBsb2FkZXItPnRvcF9iZWFyaW5nOworICAgICAgbWV0cmljcy5hZHZhbmNlICAgPSBsb2FkZXItPnZhZHZhbmNlOworCisgICAgICBlcnJvciA9IGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZS0+ZnVuY3MtPmdldF9nbHlwaF9tZXRyaWNzKAorICAgICAgICAgICAgICAgIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZS0+b2JqZWN0LAorICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LCBUUlVFLCAmbWV0cmljcyApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgdG9wX2JlYXJpbmcgICAgPSAoRlRfU2hvcnQpbWV0cmljcy5iZWFyaW5nX3k7CisgICAgICBhZHZhbmNlX2hlaWdodCA9IChGVF9VU2hvcnQpbWV0cmljcy5hZHZhbmNlOworCisjZW5kaWYgLyogMCAqLworCisgICAgICBsb2FkZXItPmxlZnRfYmVhcmluZyA9IGxlZnRfYmVhcmluZzsKKyAgICAgIGxvYWRlci0+YWR2YW5jZSAgICAgID0gYWR2YW5jZV93aWR0aDsKKyAgICAgIGxvYWRlci0+dG9wX2JlYXJpbmcgID0gdG9wX2JlYXJpbmc7CisgICAgICBsb2FkZXItPnZhZHZhbmNlICAgICA9IGFkdmFuY2VfaGVpZ2h0OworCisgICAgICBpZiAoICFsb2FkZXItPmxpbmVhcl9kZWYgKQorICAgICAgeworICAgICAgICBsb2FkZXItPmxpbmVhcl9kZWYgPSAxOworICAgICAgICBsb2FkZXItPmxpbmVhciAgICAgPSBhZHZhbmNlX3dpZHRoOworICAgICAgfQorICAgIH0KKworICBFeGl0OgorICAgIHJldHVybjsKKyAgfQorCisjZW5kaWYgLyogRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUcmFuc2xhdGVzIGFuIGFycmF5IG9mIGNvb3JkaW5hdGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIHRyYW5zbGF0ZV9hcnJheSggRlRfVUludCAgICAgbiwKKyAgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICBjb29yZHMsCisgICAgICAgICAgICAgICAgICAgRlRfUG9zICAgICAgZGVsdGFfeCwKKyAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICAgICBkZWx0YV95ICkKKyAgeworICAgIEZUX1VJbnQgIGs7CisKKworICAgIGlmICggZGVsdGFfeCApCisgICAgICBmb3IgKCBrID0gMDsgayA8IG47IGsrKyApCisgICAgICAgIGNvb3Jkc1trXS54ICs9IGRlbHRhX3g7CisKKyAgICBpZiAoIGRlbHRhX3kgKQorICAgICAgZm9yICggayA9IDA7IGsgPCBuOyBrKysgKQorICAgICAgICBjb29yZHNba10ueSArPSBkZWx0YV95OworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IGRlZmF1bHQgd2l0aCBUcnVlVHlwZSBmb250cy4gICAgICAqLworICAvKiBIb3dldmVyLCB0aGV5IGNhbiBiZSByZXBsYWNlZCBieSBhbHRlcm5hdGl2ZXMgaWYgd2UgbmVlZCB0byBzdXBwb3J0ICAgKi8KKyAgLyogVHJ1ZVR5cGUtY29tcHJlc3NlZCBmb3JtYXRzIChsaWtlIE1pY3JvVHlwZSkgaW4gdGhlIGZ1dHVyZS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgVFRfQWNjZXNzX0dseXBoX0ZyYW1lKCBUVF9Mb2FkZXIgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgYnl0ZV9jb3VudCApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gbG9hZGVyLT5zdHJlYW07CisKKyAgICAvKiBmb3Igbm9uLWRlYnVnIG1vZGUgKi8KKyAgICBGVF9VTlVTRUQoIGdseXBoX2luZGV4ICk7CisKKworICAgIEZUX1RSQUNFNCgoICJHbHlwaCAlbGRcbiIsIGdseXBoX2luZGV4ICkpOworCisgICAgLyogdGhlIGZvbGxvd2luZyBsaW5lIHNldHMgdGhlIGBlcnJvcicgdmFyaWFibGUgdGhyb3VnaCBtYWNyb3MhICovCisgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggb2Zmc2V0ICkgfHwgRlRfRlJBTUVfRU5URVIoIGJ5dGVfY291bnQgKSApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICBsb2FkZXItPmN1cnNvciA9IHN0cmVhbS0+Y3Vyc29yOworICAgIGxvYWRlci0+bGltaXQgID0gc3RyZWFtLT5saW1pdDsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggdm9pZCApCisgIFRUX0ZvcmdldF9HbHlwaF9GcmFtZSggVFRfTG9hZGVyICBsb2FkZXIgKQorICB7CisgICAgRlRfU3RyZWFtICBzdHJlYW0gPSBsb2FkZXItPnN0cmVhbTsKKworCisgICAgRlRfRlJBTUVfRVhJVCgpOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0Vycm9yICkKKyAgVFRfTG9hZF9HbHlwaF9IZWFkZXIoIFRUX0xvYWRlciAgbG9hZGVyICkKKyAgeworICAgIEZUX0J5dGUqICBwICAgICA9IGxvYWRlci0+Y3Vyc29yOworICAgIEZUX0J5dGUqICBsaW1pdCA9IGxvYWRlci0+bGltaXQ7CisKKworICAgIGlmICggcCArIDEwID4gbGltaXQgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX091dGxpbmUgKTsKKworICAgIGxvYWRlci0+bl9jb250b3VycyA9IEZUX05FWFRfU0hPUlQoIHAgKTsKKworICAgIGxvYWRlci0+YmJveC54TWluID0gRlRfTkVYVF9TSE9SVCggcCApOworICAgIGxvYWRlci0+YmJveC55TWluID0gRlRfTkVYVF9TSE9SVCggcCApOworICAgIGxvYWRlci0+YmJveC54TWF4ID0gRlRfTkVYVF9TSE9SVCggcCApOworICAgIGxvYWRlci0+YmJveC55TWF4ID0gRlRfTkVYVF9TSE9SVCggcCApOworCisgICAgRlRfVFJBQ0U1KCggIiAgIyBvZiBjb250b3VyczogJWRcbiIsIGxvYWRlci0+bl9jb250b3VycyApKTsKKyAgICBGVF9UUkFDRTUoKCAiICB4TWluOiAlNGQgIHhNYXg6ICU0ZFxuIiwgbG9hZGVyLT5iYm94LnhNaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci0+YmJveC54TWF4ICkpOworICAgIEZUX1RSQUNFNSgoICIgIHlNaW46ICU0ZCAgeU1heDogJTRkXG4iLCBsb2FkZXItPmJib3gueU1pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLT5iYm94LnlNYXggKSk7CisgICAgbG9hZGVyLT5jdXJzb3IgPSBwOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIFRUX0xvYWRfU2ltcGxlX0dseXBoKCBUVF9Mb2FkZXIgIGxvYWQgKQorICB7CisgICAgRlRfRXJyb3IgICAgICAgIGVycm9yOworICAgIEZUX0J5dGUqICAgICAgICBwICAgICAgICAgID0gbG9hZC0+Y3Vyc29yOworICAgIEZUX0J5dGUqICAgICAgICBsaW1pdCAgICAgID0gbG9hZC0+bGltaXQ7CisgICAgRlRfR2x5cGhMb2FkZXIgIGdsb2FkZXIgICAgPSBsb2FkLT5nbG9hZGVyOworICAgIEZUX0ludCAgICAgICAgICBuX2NvbnRvdXJzID0gbG9hZC0+bl9jb250b3VyczsKKyAgICBGVF9PdXRsaW5lKiAgICAgb3V0bGluZTsKKyAgICBUVF9GYWNlICAgICAgICAgZmFjZSAgICAgICA9IChUVF9GYWNlKWxvYWQtPmZhY2U7CisgICAgRlRfVVNob3J0ICAgICAgIG5faW5zOworICAgIEZUX0ludCAgICAgICAgICBuX3BvaW50czsKKworICAgIEZUX0J5dGUgICAgICAgICAqZmxhZywgKmZsYWdfbGltaXQ7CisgICAgRlRfQnl0ZSAgICAgICAgIGMsIGNvdW50OworICAgIEZUX1ZlY3RvciAgICAgICAqdmVjLCAqdmVjX2xpbWl0OworICAgIEZUX1BvcyAgICAgICAgICB4OworICAgIEZUX1Nob3J0ICAgICAgICAqY29udCwgKmNvbnRfbGltaXQsIHByZXZfY29udDsKKyAgICBGVF9JbnQgICAgICAgICAgeHlfc2l6ZSA9IDA7CisKKworICAgIC8qIGNoZWNrIHRoYXQgd2UgY2FuIGFkZCB0aGUgY29udG91cnMgdG8gdGhlIGdseXBoICovCisgICAgZXJyb3IgPSBGVF9HTFlQSExPQURFUl9DSEVDS19QT0lOVFMoIGdsb2FkZXIsIDAsIG5fY29udG91cnMgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIC8qIHJlYWRpbmcgdGhlIGNvbnRvdXJzJyBlbmRwb2ludHMgJiBudW1iZXIgb2YgcG9pbnRzICovCisgICAgY29udCAgICAgICA9IGdsb2FkZXItPmN1cnJlbnQub3V0bGluZS5jb250b3VyczsKKyAgICBjb250X2xpbWl0ID0gY29udCArIG5fY29udG91cnM7CisKKyAgICAvKiBjaGVjayBzcGFjZSBmb3IgY29udG91cnMgYXJyYXkgKyBpbnN0cnVjdGlvbnMgY291bnQgKi8KKyAgICBpZiAoIG5fY29udG91cnMgPj0gMHhGRkYgfHwgcCArICggbl9jb250b3VycyArIDEgKSAqIDIgPiBsaW1pdCApCisgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKworICAgIHByZXZfY29udCA9IEZUX05FWFRfU0hPUlQoIHAgKTsKKworICAgIGlmICggbl9jb250b3VycyA+IDAgKQorICAgICAgY29udFswXSA9IHByZXZfY29udDsKKworICAgIGlmICggcHJldl9jb250IDwgMCApCisgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKworICAgIGZvciAoIGNvbnQrKzsgY29udCA8IGNvbnRfbGltaXQ7IGNvbnQrKyApCisgICAgeworICAgICAgY29udFswXSA9IEZUX05FWFRfU0hPUlQoIHAgKTsKKyAgICAgIGlmICggY29udFswXSA8PSBwcmV2X2NvbnQgKQorICAgICAgeworICAgICAgICAvKiB1bm9yZGVyZWQgY29udG91cnM6IHRoaXMgaXMgaW52YWxpZCAqLworICAgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKyAgICAgIH0KKyAgICAgIHByZXZfY29udCA9IGNvbnRbMF07CisgICAgfQorCisgICAgbl9wb2ludHMgPSAwOworICAgIGlmICggbl9jb250b3VycyA+IDAgKQorICAgIHsKKyAgICAgIG5fcG9pbnRzID0gY29udFstMV0gKyAxOworICAgICAgaWYgKCBuX3BvaW50cyA8IDAgKQorICAgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKyAgICB9CisKKyAgICAvKiBub3RlIHRoYXQgd2Ugd2lsbCBhZGQgZm91ciBwaGFudG9tIHBvaW50cyBsYXRlciAqLworICAgIGVycm9yID0gRlRfR0xZUEhMT0FERVJfQ0hFQ0tfUE9JTlRTKCBnbG9hZGVyLCBuX3BvaW50cyArIDQsIDAgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIC8qIHJlYWRpbmcgdGhlIGJ5dGVjb2RlIGluc3RydWN0aW9ucyAqLworICAgIGxvYWQtPmdseXBoLT5jb250cm9sX2xlbiAgPSAwOworICAgIGxvYWQtPmdseXBoLT5jb250cm9sX2RhdGEgPSAwOworCisgICAgaWYgKCBwICsgMiA+IGxpbWl0ICkKKyAgICAgIGdvdG8gSW52YWxpZF9PdXRsaW5lOworCisgICAgbl9pbnMgPSBGVF9ORVhUX1VTSE9SVCggcCApOworCisgICAgRlRfVFJBQ0U1KCggIiAgSW5zdHJ1Y3Rpb25zIHNpemU6ICV1XG4iLCBuX2lucyApKTsKKworICAgIGlmICggbl9pbnMgPiBmYWNlLT5tYXhfcHJvZmlsZS5tYXhTaXplT2ZJbnN0cnVjdGlvbnMgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMCgoICJUVF9Mb2FkX1NpbXBsZV9HbHlwaDogdG9vIG1hbnkgaW5zdHJ1Y3Rpb25zICglZClcbiIsCisgICAgICAgICAgICAgICAgICBuX2lucyApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIFRvb19NYW55X0hpbnRzICk7CisgICAgICBnb3RvIEZhaWw7CisgICAgfQorCisgICAgaWYgKCAoIGxpbWl0IC0gcCApIDwgbl9pbnMgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMCgoICJUVF9Mb2FkX1NpbXBsZV9HbHlwaDogaW5zdHJ1Y3Rpb24gY291bnQgbWlzbWF0Y2hcbiIgKSk7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBUb29fTWFueV9IaW50cyApOworICAgICAgZ290byBGYWlsOworICAgIH0KKworI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorCisgICAgaWYgKCBJU19ISU5URUQoIGxvYWQtPmxvYWRfZmxhZ3MgKSApCisgICAgeworICAgICAgbG9hZC0+Z2x5cGgtPmNvbnRyb2xfbGVuICA9IG5faW5zOworICAgICAgbG9hZC0+Z2x5cGgtPmNvbnRyb2xfZGF0YSA9IGxvYWQtPmV4ZWMtPmdseXBoSW5zOworCisgICAgICBGVF9NRU1fQ09QWSggbG9hZC0+ZXhlYy0+Z2x5cGhJbnMsIHAsIChGVF9Mb25nKW5faW5zICk7CisgICAgfQorCisjZW5kaWYgLyogVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSICovCisKKyAgICBwICs9IG5faW5zOworCisgICAgb3V0bGluZSA9ICZnbG9hZGVyLT5jdXJyZW50Lm91dGxpbmU7CisJaWYgKG91dGxpbmUtPnRhZ3MgPT0gTlVMTCkgeworCQlGVF9UUkFDRTAoKCAiVFRfTG9hZF9TaW1wbGVfR2x5cGg6IE91dGxpbmUtPnRhZ3MgPSBOVUxMIVxuIiApKTsKKwkJZ290byBJbnZhbGlkX091dGxpbmU7CisJfQorCisgICAgLyogcmVhZGluZyB0aGUgcG9pbnQgdGFncyAqLworICAgIGZsYWcgICAgICAgPSAoRlRfQnl0ZSopb3V0bGluZS0+dGFnczsKKyAgICBmbGFnX2xpbWl0ID0gZmxhZyArIG5fcG9pbnRzOworCisgICAgLy9GVF9BU1NFUlQoIGZsYWcgIT0gTlVMTCApOworCisgICAgd2hpbGUgKCBmbGFnIDwgZmxhZ19saW1pdCApCisgICAgeworICAgICAgaWYgKCBwICsgMSA+IGxpbWl0ICkKKyAgICAgICAgZ290byBJbnZhbGlkX091dGxpbmU7CisKKyAgICAgICpmbGFnKysgPSBjID0gRlRfTkVYVF9CWVRFKCBwICk7CisgICAgICBpZiAoIGMgJiA4ICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBwICsgMSA+IGxpbWl0ICkKKyAgICAgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKworICAgICAgICBjb3VudCA9IEZUX05FWFRfQllURSggcCApOworICAgICAgICBpZiAoIGZsYWcgKyAoRlRfSW50KWNvdW50ID4gZmxhZ19saW1pdCApCisgICAgICAgICAgZ290byBJbnZhbGlkX091dGxpbmU7CisKKyAgICAgICAgZm9yICggOyBjb3VudCA+IDA7IGNvdW50LS0gKQorICAgICAgICAgICpmbGFnKysgPSBjOworICAgICAgfQorICAgIH0KKworICAgIC8qIHJlYWRpbmcgdGhlIFggY29vcmRpbmF0ZXMgKi8KKworICAgIHZlYyAgICAgICA9IG91dGxpbmUtPnBvaW50czsKKyAgICB2ZWNfbGltaXQgPSB2ZWMgKyBuX3BvaW50czsKKyAgICBmbGFnICAgICAgPSAoRlRfQnl0ZSopb3V0bGluZS0+dGFnczsKKyAgICB4ICAgICAgICAgPSAwOworCisgICAgaWYgKCBwICsgeHlfc2l6ZSA+IGxpbWl0ICkKKyAgICAgIGdvdG8gSW52YWxpZF9PdXRsaW5lOworCisgICAgZm9yICggOyB2ZWMgPCB2ZWNfbGltaXQ7IHZlYysrLCBmbGFnKysgKQorICAgIHsKKyAgICAgIEZUX1BvcyAgIHkgPSAwOworICAgICAgRlRfQnl0ZSAgZiA9ICpmbGFnOworCisKKyAgICAgIGlmICggZiAmIDIgKQorICAgICAgeworICAgICAgICBpZiAoIHAgKyAxID4gbGltaXQgKQorICAgICAgICAgIGdvdG8gSW52YWxpZF9PdXRsaW5lOworCisgICAgICAgIHkgPSAoRlRfUG9zKUZUX05FWFRfQllURSggcCApOworICAgICAgICBpZiAoICggZiAmIDE2ICkgPT0gMCApCisgICAgICAgICAgeSA9IC15OworICAgICAgfQorICAgICAgZWxzZSBpZiAoICggZiAmIDE2ICkgPT0gMCApCisgICAgICB7CisgICAgICAgIGlmICggcCArIDIgPiBsaW1pdCApCisgICAgICAgICAgZ290byBJbnZhbGlkX091dGxpbmU7CisKKyAgICAgICAgeSA9IChGVF9Qb3MpRlRfTkVYVF9TSE9SVCggcCApOworICAgICAgfQorCisgICAgICB4ICAgICArPSB5OworICAgICAgdmVjLT54ID0geDsKKyAgICAgIC8qIHRoZSBjYXN0IGlzIGZvciBzdHVwaWQgY29tcGlsZXJzICovCisgICAgICAqZmxhZyAgPSAoRlRfQnl0ZSkoIGYgJiB+KCAyIHwgMTYgKSApOworICAgIH0KKworICAgIC8qIHJlYWRpbmcgdGhlIFkgY29vcmRpbmF0ZXMgKi8KKworICAgIHZlYyAgICAgICA9IGdsb2FkZXItPmN1cnJlbnQub3V0bGluZS5wb2ludHM7CisgICAgdmVjX2xpbWl0ID0gdmVjICsgbl9wb2ludHM7CisgICAgZmxhZyAgICAgID0gKEZUX0J5dGUqKW91dGxpbmUtPnRhZ3M7CisgICAgeCAgICAgICAgID0gMDsKKworICAgIGZvciAoIDsgdmVjIDwgdmVjX2xpbWl0OyB2ZWMrKywgZmxhZysrICkKKyAgICB7CisgICAgICBGVF9Qb3MgICB5ID0gMDsKKyAgICAgIEZUX0J5dGUgIGYgPSAqZmxhZzsKKworCisgICAgICBpZiAoIGYgJiA0ICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBwICsgMSA+IGxpbWl0ICkKKyAgICAgICAgICBnb3RvIEludmFsaWRfT3V0bGluZTsKKworICAgICAgICB5ID0gKEZUX1BvcylGVF9ORVhUX0JZVEUoIHAgKTsKKyAgICAgICAgaWYgKCAoIGYgJiAzMiApID09IDAgKQorICAgICAgICAgIHkgPSAteTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCAoIGYgJiAzMiApID09IDAgKQorICAgICAgeworICAgICAgICBpZiAoIHAgKyAyID4gbGltaXQgKQorICAgICAgICAgIGdvdG8gSW52YWxpZF9PdXRsaW5lOworCisgICAgICAgIHkgPSAoRlRfUG9zKUZUX05FWFRfU0hPUlQoIHAgKTsKKyAgICAgIH0KKworICAgICAgeCAgICAgKz0geTsKKyAgICAgIHZlYy0+eSA9IHg7CisgICAgICAvKiB0aGUgY2FzdCBpcyBmb3Igc3R1cGlkIGNvbXBpbGVycyAqLworICAgICAgKmZsYWcgID0gKEZUX0J5dGUpKCBmICYgRlRfQ1VSVkVfVEFHX09OICk7CisgICAgfQorCisgICAgb3V0bGluZS0+bl9wb2ludHMgICA9IChGVF9VU2hvcnQpbl9wb2ludHM7CisgICAgb3V0bGluZS0+bl9jb250b3VycyA9IChGVF9TaG9ydCkgbl9jb250b3VyczsKKworICAgIGxvYWQtPmN1cnNvciA9IHA7CisKKyAgRmFpbDoKKyAgICByZXR1cm4gZXJyb3I7CisKKyAgSW52YWxpZF9PdXRsaW5lOgorICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfT3V0bGluZSApOworICAgIGdvdG8gRmFpbDsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIFRUX0xvYWRfQ29tcG9zaXRlX0dseXBoKCBUVF9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3I7CisgICAgRlRfQnl0ZSogICAgICAgIHAgICAgICAgPSBsb2FkZXItPmN1cnNvcjsKKyAgICBGVF9CeXRlKiAgICAgICAgbGltaXQgICA9IGxvYWRlci0+bGltaXQ7CisgICAgRlRfR2x5cGhMb2FkZXIgIGdsb2FkZXIgPSBsb2FkZXItPmdsb2FkZXI7CisgICAgRlRfU3ViR2x5cGggICAgIHN1YmdseXBoOworICAgIEZUX1VJbnQgICAgICAgICBudW1fc3ViZ2x5cGhzOworCisKKyAgICBudW1fc3ViZ2x5cGhzID0gMDsKKworICAgIGRvCisgICAgeworICAgICAgRlRfRml4ZWQgIHh4LCB4eSwgeXksIHl4OworICAgICAgRlRfVUludCAgIGNvdW50OworCisKKyAgICAgIC8qIGNoZWNrIHRoYXQgd2UgY2FuIGxvYWQgYSBuZXcgc3ViZ2x5cGggKi8KKyAgICAgIGVycm9yID0gRlRfR2x5cGhMb2FkZXJfQ2hlY2tTdWJHbHlwaHMoIGdsb2FkZXIsIG51bV9zdWJnbHlwaHMgKyAxICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICAvKiBjaGVjayBzcGFjZSAqLworICAgICAgaWYgKCBwICsgNCA+IGxpbWl0ICkKKyAgICAgICAgZ290byBJbnZhbGlkX0NvbXBvc2l0ZTsKKworICAgICAgc3ViZ2x5cGggPSBnbG9hZGVyLT5jdXJyZW50LnN1YmdseXBocyArIG51bV9zdWJnbHlwaHM7CisKKyAgICAgIHN1YmdseXBoLT5hcmcxID0gc3ViZ2x5cGgtPmFyZzIgPSAwOworCisgICAgICBzdWJnbHlwaC0+ZmxhZ3MgPSBGVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgc3ViZ2x5cGgtPmluZGV4ID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKworICAgICAgLyogY2hlY2sgc3BhY2UgKi8KKyAgICAgIGNvdW50ID0gMjsKKyAgICAgIGlmICggc3ViZ2x5cGgtPmZsYWdzICYgQVJHU19BUkVfV09SRFMgKQorICAgICAgICBjb3VudCArPSAyOworICAgICAgaWYgKCBzdWJnbHlwaC0+ZmxhZ3MgJiBXRV9IQVZFX0FfU0NBTEUgKQorICAgICAgICBjb3VudCArPSAyOworICAgICAgZWxzZSBpZiAoIHN1YmdseXBoLT5mbGFncyAmIFdFX0hBVkVfQU5fWFlfU0NBTEUgKQorICAgICAgICBjb3VudCArPSA0OworICAgICAgZWxzZSBpZiAoIHN1YmdseXBoLT5mbGFncyAmIFdFX0hBVkVfQV8yWDIgKQorICAgICAgICBjb3VudCArPSA4OworCisgICAgICBpZiAoIHAgKyBjb3VudCA+IGxpbWl0ICkKKyAgICAgICAgZ290byBJbnZhbGlkX0NvbXBvc2l0ZTsKKworICAgICAgLyogcmVhZCBhcmd1bWVudHMgKi8KKyAgICAgIGlmICggc3ViZ2x5cGgtPmZsYWdzICYgQVJHU19BUkVfV09SRFMgKQorICAgICAgeworICAgICAgICBzdWJnbHlwaC0+YXJnMSA9IEZUX05FWFRfU0hPUlQoIHAgKTsKKyAgICAgICAgc3ViZ2x5cGgtPmFyZzIgPSBGVF9ORVhUX1NIT1JUKCBwICk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHN1YmdseXBoLT5hcmcxID0gRlRfTkVYVF9DSEFSKCBwICk7CisgICAgICAgIHN1YmdseXBoLT5hcmcyID0gRlRfTkVYVF9DSEFSKCBwICk7CisgICAgICB9CisKKyAgICAgIC8qIHJlYWQgdHJhbnNmb3JtICovCisgICAgICB4eCA9IHl5ID0gMHgxMDAwMEw7CisgICAgICB4eSA9IHl4ID0gMDsKKworICAgICAgaWYgKCBzdWJnbHlwaC0+ZmxhZ3MgJiBXRV9IQVZFX0FfU0NBTEUgKQorICAgICAgeworICAgICAgICB4eCA9IChGVF9GaXhlZClGVF9ORVhUX1NIT1JUKCBwICkgPDwgMjsKKyAgICAgICAgeXkgPSB4eDsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKCBzdWJnbHlwaC0+ZmxhZ3MgJiBXRV9IQVZFX0FOX1hZX1NDQUxFICkKKyAgICAgIHsKKyAgICAgICAgeHggPSAoRlRfRml4ZWQpRlRfTkVYVF9TSE9SVCggcCApIDw8IDI7CisgICAgICAgIHl5ID0gKEZUX0ZpeGVkKUZUX05FWFRfU0hPUlQoIHAgKSA8PCAyOworICAgICAgfQorICAgICAgZWxzZSBpZiAoIHN1YmdseXBoLT5mbGFncyAmIFdFX0hBVkVfQV8yWDIgKQorICAgICAgeworICAgICAgICB4eCA9IChGVF9GaXhlZClGVF9ORVhUX1NIT1JUKCBwICkgPDwgMjsKKyAgICAgICAgeXggPSAoRlRfRml4ZWQpRlRfTkVYVF9TSE9SVCggcCApIDw8IDI7CisgICAgICAgIHh5ID0gKEZUX0ZpeGVkKUZUX05FWFRfU0hPUlQoIHAgKSA8PCAyOworICAgICAgICB5eSA9IChGVF9GaXhlZClGVF9ORVhUX1NIT1JUKCBwICkgPDwgMjsKKyAgICAgIH0KKworICAgICAgc3ViZ2x5cGgtPnRyYW5zZm9ybS54eCA9IHh4OworICAgICAgc3ViZ2x5cGgtPnRyYW5zZm9ybS54eSA9IHh5OworICAgICAgc3ViZ2x5cGgtPnRyYW5zZm9ybS55eCA9IHl4OworICAgICAgc3ViZ2x5cGgtPnRyYW5zZm9ybS55eSA9IHl5OworCisgICAgICBudW1fc3ViZ2x5cGhzKys7CisKKyAgICB9IHdoaWxlICggc3ViZ2x5cGgtPmZsYWdzICYgTU9SRV9DT01QT05FTlRTICk7CisKKyAgICBnbG9hZGVyLT5jdXJyZW50Lm51bV9zdWJnbHlwaHMgPSBudW1fc3ViZ2x5cGhzOworCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyAgICB7CisgICAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IGxvYWRlci0+c3RyZWFtOworCisKKyAgICAgIC8qIHdlIG11c3QgdW5kbyB0aGUgRlRfRlJBTUVfRU5URVIgaW4gb3JkZXIgdG8gcG9pbnQgKi8KKyAgICAgIC8qIHRvIHRoZSBjb21wb3NpdGUgaW5zdHJ1Y3Rpb25zLCBpZiB3ZSBmaW5kIHNvbWUuICAgKi8KKyAgICAgIC8qIFdlIHdpbGwgcHJvY2VzcyB0aGVtIGxhdGVyLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGxvYWRlci0+aW5zX3BvcyA9IChGVF9VTG9uZykoIEZUX1NUUkVBTV9QT1MoKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwIC0gbGltaXQgKTsKKyAgICB9CisKKyNlbmRpZgorCisgICAgbG9hZGVyLT5jdXJzb3IgPSBwOworCisgIEZhaWw6CisgICAgcmV0dXJuIGVycm9yOworCisgIEludmFsaWRfQ29tcG9zaXRlOgorICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQ29tcG9zaXRlICk7CisgICAgZ290byBGYWlsOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBUVF9Jbml0X0dseXBoX0xvYWRpbmcoIFRUX0ZhY2UgIGZhY2UgKQorICB7CisgICAgZmFjZS0+YWNjZXNzX2dseXBoX2ZyYW1lICAgPSBUVF9BY2Nlc3NfR2x5cGhfRnJhbWU7CisgICAgZmFjZS0+cmVhZF9nbHlwaF9oZWFkZXIgICAgPSBUVF9Mb2FkX0dseXBoX0hlYWRlcjsKKyAgICBmYWNlLT5yZWFkX3NpbXBsZV9nbHlwaCAgICA9IFRUX0xvYWRfU2ltcGxlX0dseXBoOworICAgIGZhY2UtPnJlYWRfY29tcG9zaXRlX2dseXBoID0gVFRfTG9hZF9Db21wb3NpdGVfR2x5cGg7CisgICAgZmFjZS0+Zm9yZ2V0X2dseXBoX2ZyYW1lICAgPSBUVF9Gb3JnZXRfR2x5cGhfRnJhbWU7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIHR0X3ByZXBhcmVfem9uZSggVFRfR2x5cGhab25lICB6b25lLAorICAgICAgICAgICAgICAgICAgIEZUX0dseXBoTG9hZCAgbG9hZCwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIHN0YXJ0X3BvaW50LAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgc3RhcnRfY29udG91ciApCisgIHsKKyAgICB6b25lLT5uX3BvaW50cyAgICA9IChGVF9VU2hvcnQpKCBsb2FkLT5vdXRsaW5lLm5fcG9pbnRzIC0gc3RhcnRfcG9pbnQgKTsKKyAgICB6b25lLT5uX2NvbnRvdXJzICA9IChGVF9TaG9ydCkgKCBsb2FkLT5vdXRsaW5lLm5fY29udG91cnMgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29udG91ciApOworICAgIHpvbmUtPm9yZyAgICAgICAgID0gbG9hZC0+ZXh0cmFfcG9pbnRzICsgc3RhcnRfcG9pbnQ7CisgICAgem9uZS0+Y3VyICAgICAgICAgPSBsb2FkLT5vdXRsaW5lLnBvaW50cyArIHN0YXJ0X3BvaW50OworICAgIHpvbmUtPm9ydXMgICAgICAgID0gbG9hZC0+ZXh0cmFfcG9pbnRzMiArIHN0YXJ0X3BvaW50OworICAgIHpvbmUtPnRhZ3MgICAgICAgID0gKEZUX0J5dGUqKWxvYWQtPm91dGxpbmUudGFncyArIHN0YXJ0X3BvaW50OworICAgIHpvbmUtPmNvbnRvdXJzICAgID0gKEZUX1VTaG9ydCopbG9hZC0+b3V0bGluZS5jb250b3VycyArIHN0YXJ0X2NvbnRvdXI7CisgICAgem9uZS0+Zmlyc3RfcG9pbnQgPSAoRlRfVVNob3J0KXN0YXJ0X3BvaW50OworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9IaW50X0dseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBIaW50IHRoZSBnbHlwaCB1c2luZyB0aGUgem9uZSBwcmVwYXJlZCBieSB0aGUgY2FsbGVyLiAgTm90ZSB0aGF0ICAgKi8KKyAgLyogICAgdGhlIHpvbmUgaXMgc3VwcG9zZWQgdG8gaW5jbHVkZSBmb3VyIHBoYW50b20gcG9pbnRzLiAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgVFRfSGludF9HbHlwaCggVFRfTG9hZGVyICBsb2FkZXIsCisgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgaXNfY29tcG9zaXRlICkKKyAgeworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgIFRUX0ZhY2UgICAgZmFjZSAgID0gKFRUX0ZhY2UpbG9hZGVyLT5mYWNlOworICAgIFRUX0RyaXZlciAgZHJpdmVyID0gKFRUX0RyaXZlcilGVF9GQUNFX0RSSVZFUiggZmFjZSApOworI2VuZGlmCisKKyAgICBUVF9HbHlwaFpvbmUgIHpvbmUgPSAmbG9hZGVyLT56b25lOworICAgIEZUX1BvcyAgICAgICAgb3JpZ2luOworCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisgICAgRlRfVUludCAgICAgICBuX2luczsKKyNlbHNlCisgICAgRlRfVU5VU0VEKCBpc19jb21wb3NpdGUgKTsKKyNlbmRpZgorCisKKyNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKKyAgICBpZiAoIGxvYWRlci0+Z2x5cGgtPmNvbnRyb2xfbGVuID4gMHhGRkZGTCApCisgICAgeworICAgICAgRlRfVFJBQ0UxKCggIlRUX0hpbnRfR2x5cGg6IHRvbyBsb25nIGluc3RydWN0aW9ucyAiICkpOworICAgICAgRlRfVFJBQ0UxKCggIigweCVseCBieXRlKSBpcyB0cnVuY2F0ZWRcbiIsCisgICAgICAgICAgICAgICAgIGxvYWRlci0+Z2x5cGgtPmNvbnRyb2xfbGVuICkpOworICAgIH0KKyAgICBuX2lucyA9IChGVF9VSW50KSggbG9hZGVyLT5nbHlwaC0+Y29udHJvbF9sZW4gKTsKKyNlbmRpZgorCisgICAgb3JpZ2luID0gem9uZS0+Y3VyW3pvbmUtPm5fcG9pbnRzIC0gNF0ueDsKKyAgICBvcmlnaW4gPSBGVF9QSVhfUk9VTkQoIG9yaWdpbiApIC0gb3JpZ2luOworICAgIGlmICggb3JpZ2luICkKKyAgICAgIHRyYW5zbGF0ZV9hcnJheSggem9uZS0+bl9wb2ludHMsIHpvbmUtPmN1ciwgb3JpZ2luLCAwICk7CisKKyNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKKyAgICAvKiBzYXZlIG9yaWdpbmFsIHBvaW50IHBvc2l0aW9uIGluIG9yZyAqLworICAgIGlmICggbl9pbnMgPiAwICkKKyAgICAgIEZUX0FSUkFZX0NPUFkoIHpvbmUtPm9yZywgem9uZS0+Y3VyLCB6b25lLT5uX3BvaW50cyApOworCisgICAgLyogUmVzZXQgZ3JhcGhpY3Mgc3RhdGUuICovCisgICAgbG9hZGVyLT5leGVjLT5HUyA9ICgoVFRfU2l6ZSlsb2FkZXItPnNpemUpLT5HUzsKKworICAgIC8qIFhYWDogVU5ET0NVTUVOVEVEISBIaW50aW5nIGluc3RydWN0aW9ucyBvZiBhIGNvbXBvc2l0ZSBnbHlwaCAqLworICAgIC8qICAgICAgY29tcGxldGVseSByZWZlciB0byB0aGUgKGFscmVhZHkpIGhpbnRlZCBzdWJnbHlwaHMuICAgICAqLworICAgIGlmICggaXNfY29tcG9zaXRlICkKKyAgICB7CisgICAgICBsb2FkZXItPmV4ZWMtPm1ldHJpY3MueF9zY2FsZSA9IDEgPDwgMTY7CisgICAgICBsb2FkZXItPmV4ZWMtPm1ldHJpY3MueV9zY2FsZSA9IDEgPDwgMTY7CisKKyAgICAgIEZUX0FSUkFZX0NPUFkoIHpvbmUtPm9ydXMsIHpvbmUtPmN1ciwgem9uZS0+bl9wb2ludHMgKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGxvYWRlci0+ZXhlYy0+bWV0cmljcy54X3NjYWxlID0KKyAgICAgICAgKChUVF9TaXplKWxvYWRlci0+c2l6ZSktPm1ldHJpY3MueF9zY2FsZTsKKyAgICAgIGxvYWRlci0+ZXhlYy0+bWV0cmljcy55X3NjYWxlID0KKyAgICAgICAgKChUVF9TaXplKWxvYWRlci0+c2l6ZSktPm1ldHJpY3MueV9zY2FsZTsKKyAgICB9CisjZW5kaWYKKworICAgIC8qIHJvdW5kIHBwMiBhbmQgcHA0ICovCisgICAgem9uZS0+Y3VyW3pvbmUtPm5fcG9pbnRzIC0gM10ueCA9CisgICAgICBGVF9QSVhfUk9VTkQoIHpvbmUtPmN1clt6b25lLT5uX3BvaW50cyAtIDNdLnggKTsKKyAgICB6b25lLT5jdXJbem9uZS0+bl9wb2ludHMgLSAxXS55ID0KKyAgICAgIEZUX1BJWF9ST1VORCggem9uZS0+Y3VyW3pvbmUtPm5fcG9pbnRzIC0gMV0ueSApOworCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyAgICBpZiAoIG5faW5zID4gMCApCisgICAgeworICAgICAgRlRfQm9vbCAgIGRlYnVnOworICAgICAgRlRfRXJyb3IgIGVycm9yOworCisgICAgICBGVF9HbHlwaExvYWRlciAgZ2xvYWRlciAgICAgICAgID0gbG9hZGVyLT5nbG9hZGVyOworICAgICAgRlRfT3V0bGluZSAgICAgIGN1cnJlbnRfb3V0bGluZSA9IGdsb2FkZXItPmN1cnJlbnQub3V0bGluZTsKKworCisgICAgICBlcnJvciA9IFRUX1NldF9Db2RlUmFuZ2UoIGxvYWRlci0+ZXhlYywgdHRfY29kZXJhbmdlX2dseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXItPmV4ZWMtPmdseXBoSW5zLCBuX2lucyApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIHJldHVybiBlcnJvcjsKKworICAgICAgbG9hZGVyLT5leGVjLT5pc19jb21wb3NpdGUgPSBpc19jb21wb3NpdGU7CisgICAgICBsb2FkZXItPmV4ZWMtPnB0cyAgICAgICAgICA9ICp6b25lOworCisgICAgICBkZWJ1ZyA9IEZUX0JPT0woICEoIGxvYWRlci0+bG9hZF9mbGFncyAmIEZUX0xPQURfTk9fU0NBTEUgKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAoKFRUX1NpemUpbG9hZGVyLT5zaXplKS0+ZGVidWcgICAgICAgICAgICAgKTsKKworICAgICAgZXJyb3IgPSBUVF9SdW5fQ29udGV4dCggbG9hZGVyLT5leGVjLCBkZWJ1ZyApOworICAgICAgaWYgKCBlcnJvciAmJiBsb2FkZXItPmV4ZWMtPnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgIC8qIHN0b3JlIGRyb3Atb3V0IG1vZGUgaW4gYml0cyA1LTc7IHNldCBiaXQgMiBhbHNvIGFzIGEgbWFya2VyICovCisgICAgICBjdXJyZW50X291dGxpbmUudGFnc1swXSB8PQorICAgICAgICAoIGxvYWRlci0+ZXhlYy0+R1Muc2Nhbl90eXBlIDw8IDUgKSB8IEZUX0NVUlZFX1RBR19IQVNfU0NBTk1PREU7CisgICAgfQorCisjZW5kaWYKKworICAgIC8qIHNhdmUgZ2x5cGggcGhhbnRvbSBwb2ludHMgKi8KKyAgICBpZiAoICFsb2FkZXItPnByZXNlcnZlX3BwcyApCisgICAgeworICAgICAgbG9hZGVyLT5wcDEgPSB6b25lLT5jdXJbem9uZS0+bl9wb2ludHMgLSA0XTsKKyAgICAgIGxvYWRlci0+cHAyID0gem9uZS0+Y3VyW3pvbmUtPm5fcG9pbnRzIC0gM107CisgICAgICBsb2FkZXItPnBwMyA9IHpvbmUtPmN1clt6b25lLT5uX3BvaW50cyAtIDJdOworICAgICAgbG9hZGVyLT5wcDQgPSB6b25lLT5jdXJbem9uZS0+bl9wb2ludHMgLSAxXTsKKyAgICB9CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBpZiAoIGRyaXZlci0+aW50ZXJwcmV0ZXJfdmVyc2lvbiA9PSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM4ICkKKyAgICB7CisgICAgICBpZiAoIGxvYWRlci0+ZXhlYy0+c3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX0RFRU1CT0xERU4gKQorICAgICAgICBGVF9PdXRsaW5lX0VtYm9sZGVuWFkoICZsb2FkZXItPmdsb2FkZXItPmN1cnJlbnQub3V0bGluZSwgLTI0LCAwICk7CisKKyAgICAgIGVsc2UgaWYgKCBsb2FkZXItPmV4ZWMtPnNwaF90d2Vha19mbGFncyAmIFNQSF9UV0VBS19FTUJPTERFTiApCisgICAgICAgIEZUX091dGxpbmVfRW1ib2xkZW5YWSggJmxvYWRlci0+Z2xvYWRlci0+Y3VycmVudC5vdXRsaW5lLCAyNCwgMCApOworICAgIH0KKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1Byb2Nlc3NfU2ltcGxlX0dseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE9uY2UgYSBzaW1wbGUgZ2x5cGggaGFzIGJlZW4gbG9hZGVkLCBpdCBuZWVkcyB0byBiZSBwcm9jZXNzZWQuICAgICAqLworICAvKiAgICBVc3VhbGx5LCB0aGlzIG1lYW5zIHNjYWxpbmcgYW5kIGhpbnRpbmcgdGhyb3VnaCBieXRlY29kZSAgICAgICAgICAgKi8KKyAgLyogICAgaW50ZXJwcmV0YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGgoIFRUX0xvYWRlciAgbG9hZGVyICkKKyAgeworICAgIEZUX0dseXBoTG9hZGVyICBnbG9hZGVyID0gbG9hZGVyLT5nbG9hZGVyOworICAgIEZUX0Vycm9yICAgICAgICBlcnJvciAgID0gRlRfRXJyX09rOworICAgIEZUX091dGxpbmUqICAgICBvdXRsaW5lOworICAgIEZUX0ludCAgICAgICAgICBuX3BvaW50czsKKworCisgICAgb3V0bGluZSAgPSAmZ2xvYWRlci0+Y3VycmVudC5vdXRsaW5lOworICAgIG5fcG9pbnRzID0gb3V0bGluZS0+bl9wb2ludHM7CisKKyAgICAvKiBzZXQgcGhhbnRvbSBwb2ludHMgKi8KKworICAgIG91dGxpbmUtPnBvaW50c1tuX3BvaW50cyAgICBdID0gbG9hZGVyLT5wcDE7CisgICAgb3V0bGluZS0+cG9pbnRzW25fcG9pbnRzICsgMV0gPSBsb2FkZXItPnBwMjsKKyAgICBvdXRsaW5lLT5wb2ludHNbbl9wb2ludHMgKyAyXSA9IGxvYWRlci0+cHAzOworICAgIG91dGxpbmUtPnBvaW50c1tuX3BvaW50cyArIDNdID0gbG9hZGVyLT5wcDQ7CisKKyAgICBvdXRsaW5lLT50YWdzW25fcG9pbnRzICAgIF0gPSAwOworICAgIG91dGxpbmUtPnRhZ3Nbbl9wb2ludHMgKyAxXSA9IDA7CisgICAgb3V0bGluZS0+dGFnc1tuX3BvaW50cyArIDJdID0gMDsKKyAgICBvdXRsaW5lLT50YWdzW25fcG9pbnRzICsgM10gPSAwOworCisgICAgbl9wb2ludHMgKz0gNDsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKworICAgIGlmICggKChUVF9GYWNlKWxvYWRlci0+ZmFjZSktPmRvYmxlbmQgKQorICAgIHsKKyAgICAgIC8qIERlbHRhcyBhcHBseSB0byB0aGUgdW5zY2FsZWQgZGF0YS4gKi8KKyAgICAgIEZUX1ZlY3RvciogIGRlbHRhczsKKyAgICAgIEZUX01lbW9yeSAgIG1lbW9yeSA9IGxvYWRlci0+ZmFjZS0+bWVtb3J5OworICAgICAgRlRfSW50ICAgICAgaTsKKworCisgICAgICBlcnJvciA9IFRUX1ZhcnlfR2V0X0dseXBoX0RlbHRhcyggKFRUX0ZhY2UpKGxvYWRlci0+ZmFjZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLT5nbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVsdGFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fcG9pbnRzICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IG5fcG9pbnRzOyArK2kgKQorICAgICAgeworICAgICAgICBvdXRsaW5lLT5wb2ludHNbaV0ueCArPSBkZWx0YXNbaV0ueDsKKyAgICAgICAgb3V0bGluZS0+cG9pbnRzW2ldLnkgKz0gZGVsdGFzW2ldLnk7CisgICAgICB9CisKKyAgICAgIEZUX0ZSRUUoIGRlbHRhcyApOworICAgIH0KKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQgKi8KKworICAgIGlmICggSVNfSElOVEVEKCBsb2FkZXItPmxvYWRfZmxhZ3MgKSApCisgICAgeworICAgICAgdHRfcHJlcGFyZV96b25lKCAmbG9hZGVyLT56b25lLCAmZ2xvYWRlci0+Y3VycmVudCwgMCwgMCApOworCisgICAgICBGVF9BUlJBWV9DT1BZKCBsb2FkZXItPnpvbmUub3J1cywgbG9hZGVyLT56b25lLmN1ciwKKyAgICAgICAgICAgICAgICAgICAgIGxvYWRlci0+em9uZS5uX3BvaW50cyArIDQgKTsKKyAgICB9CisKKyAgICB7CisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgICBUVF9GYWNlICAgIGZhY2UgICA9IChUVF9GYWNlKWxvYWRlci0+ZmFjZTsKKyAgICAgIFRUX0RyaXZlciAgZHJpdmVyID0gKFRUX0RyaXZlcilGVF9GQUNFX0RSSVZFUiggZmFjZSApOworCisgICAgICBGVF9TdHJpbmcqICBmYW1pbHkgICAgICAgICA9IGZhY2UtPnJvb3QuZmFtaWx5X25hbWU7CisgICAgICBGVF9JbnQgICAgICBwcGVtICAgICAgICAgICA9IGxvYWRlci0+c2l6ZS0+bWV0cmljcy54X3BwZW07CisgICAgICBGVF9TdHJpbmcqICBzdHlsZSAgICAgICAgICA9IGZhY2UtPnJvb3Quc3R5bGVfbmFtZTsKKyAgICAgIEZUX0ludCAgICAgIHhfc2NhbGVfZmFjdG9yID0gMTAwMDsKKyNlbmRpZgorCisgICAgICBGVF9WZWN0b3IqICB2ZWMgICA9IG91dGxpbmUtPnBvaW50czsKKyAgICAgIEZUX1ZlY3RvciogIGxpbWl0ID0gb3V0bGluZS0+cG9pbnRzICsgbl9wb2ludHM7CisKKyAgICAgIEZUX0ZpeGVkICB4X3NjYWxlID0gMDsgLyogcGFjaWZ5IGNvbXBpbGVyICovCisgICAgICBGVF9GaXhlZCAgeV9zY2FsZSA9IDA7CisKKyAgICAgIEZUX0Jvb2wgIGRvX3NjYWxlID0gRkFMU0U7CisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworCisgICAgICBpZiAoIGRyaXZlci0+aW50ZXJwcmV0ZXJfdmVyc2lvbiA9PSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM4ICkKKyAgICAgIHsKKyAgICAgICAgLyogc2NhbGUsIGJ1dCBvbmx5IGlmIGVuYWJsZWQgYW5kIG9ubHkgaWYgVFQgaGludGluZyBpcyBiZWluZyB1c2VkICovCisgICAgICAgIGlmICggSVNfSElOVEVEKCBsb2FkZXItPmxvYWRfZmxhZ3MgKSApCisgICAgICAgICAgeF9zY2FsZV9mYWN0b3IgPSBzcGhfdGVzdF90d2Vha194X3NjYWxpbmcoIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHBlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci0+Z2x5cGhfaW5kZXggKTsKKyAgICAgICAgLyogc2NhbGUgdGhlIGdseXBoICovCisgICAgICAgIGlmICggKCBsb2FkZXItPmxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX1NDQUxFICkgPT0gMCB8fAorICAgICAgICAgICAgIHhfc2NhbGVfZmFjdG9yICE9IDEwMDAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICB7CisgICAgICAgICAgeF9zY2FsZSA9IEZUX011bERpdiggKChUVF9TaXplKWxvYWRlci0+c2l6ZSktPm1ldHJpY3MueF9zY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4X3NjYWxlX2ZhY3RvciwgMTAwMCApOworICAgICAgICAgIHlfc2NhbGUgPSAoKFRUX1NpemUpbG9hZGVyLT5zaXplKS0+bWV0cmljcy55X3NjYWxlOworCisgICAgICAgICAgLyogY29tcGVuc2F0ZSBmb3IgYW55IHNjYWxpbmcgYnkgZGUvZW1ib2xkZW5pbmc7ICovCisgICAgICAgICAgLyogdGhlIGFtb3VudCB3YXMgZGV0ZXJtaW5lZCB2aWEgZXhwZXJpbWVudGF0aW9uICovCisgICAgICAgICAgaWYgKCB4X3NjYWxlX2ZhY3RvciAhPSAxMDAwICYmIHBwZW0gPiAxMSApCisgICAgICAgICAgICBGVF9PdXRsaW5lX0VtYm9sZGVuWFkoIG91dGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX011bEZpeCggMTI4MCAqIHBwZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCAtIHhfc2NhbGVfZmFjdG9yICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgKTsKKyAgICAgICAgICBkb19zY2FsZSA9IFRSVUU7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisgICAgICB7CisgICAgICAgIC8qIHNjYWxlIHRoZSBnbHlwaCAqLworICAgICAgICBpZiAoICggbG9hZGVyLT5sb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19TQ0FMRSApID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgeF9zY2FsZSA9ICgoVFRfU2l6ZSlsb2FkZXItPnNpemUpLT5tZXRyaWNzLnhfc2NhbGU7CisgICAgICAgICAgeV9zY2FsZSA9ICgoVFRfU2l6ZSlsb2FkZXItPnNpemUpLT5tZXRyaWNzLnlfc2NhbGU7CisKKyAgICAgICAgICBkb19zY2FsZSA9IFRSVUU7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCBkb19zY2FsZSApCisgICAgICB7CisgICAgICAgIGZvciAoIDsgdmVjIDwgbGltaXQ7IHZlYysrICkKKyAgICAgICAgeworICAgICAgICAgIHZlYy0+eCA9IEZUX011bEZpeCggdmVjLT54LCB4X3NjYWxlICk7CisgICAgICAgICAgdmVjLT55ID0gRlRfTXVsRml4KCB2ZWMtPnksIHlfc2NhbGUgKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvYWRlci0+cHAxID0gb3V0bGluZS0+cG9pbnRzW25fcG9pbnRzIC0gNF07CisgICAgICAgIGxvYWRlci0+cHAyID0gb3V0bGluZS0+cG9pbnRzW25fcG9pbnRzIC0gM107CisgICAgICAgIGxvYWRlci0+cHAzID0gb3V0bGluZS0+cG9pbnRzW25fcG9pbnRzIC0gMl07CisgICAgICAgIGxvYWRlci0+cHA0ID0gb3V0bGluZS0+cG9pbnRzW25fcG9pbnRzIC0gMV07CisgICAgICB9CisgICAgfQorCisgICAgLyoqV2UgRGlzYWJsZSBISU5UIGV4Y2VwdCB0cmlja3kgZm9udCwgc2VlbSBpdCBsb29rcyBiZXR0ZXIsICNUZXN0ZG9jOjAwMDA1ODRfT3Blbl9DQUM1VTdXSC5wZGYsCisJMDAwMDg3OV9JbWFnZV9NU0ZOVW5hdHRlbmRlZFBERi5wZGYsMDAwNTQ4MF9zYW1wbGUtYmFyY29kZXMgcHJpbnQucGRmLgorCSovCisJCisgICAgaWYgKCBJU19ISU5URUQoIGxvYWRlci0+bG9hZF9mbGFncyApICYmIChsb2FkZXItPmZhY2UtPmZhY2VfZmxhZ3MmRlRfRkFDRV9GTEFHX1RSSUNLWSkpCisgICAgeworICAgICAgbG9hZGVyLT56b25lLm5fcG9pbnRzICs9IDQ7CisKKyAgICAgIGVycm9yID0gVFRfSGludF9HbHlwaCggbG9hZGVyLCAwICk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Qcm9jZXNzX0NvbXBvc2l0ZV9Db21wb25lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBPbmNlIGEgY29tcG9zaXRlIGNvbXBvbmVudCBoYXMgYmVlbiBsb2FkZWQsIGl0IG5lZWRzIHRvIGJlICAgICAgICAgKi8KKyAgLyogICAgcHJvY2Vzc2VkLiAgVXN1YWxseSwgdGhpcyBtZWFucyB0cmFuc2Zvcm1pbmcgYW5kIHRyYW5zbGF0aW5nLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgVFRfUHJvY2Vzc19Db21wb3NpdGVfQ29tcG9uZW50KCBUVF9Mb2FkZXIgICAgbG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1N1YkdseXBoICBzdWJnbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgc3RhcnRfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIG51bV9iYXNlX3BvaW50cyApCisgIHsKKyAgICBGVF9HbHlwaExvYWRlciAgZ2xvYWRlciAgICA9IGxvYWRlci0+Z2xvYWRlcjsKKyAgICBGVF9WZWN0b3IqICAgICAgYmFzZV92ZWMgICA9IGdsb2FkZXItPmJhc2Uub3V0bGluZS5wb2ludHM7CisgICAgRlRfVUludCAgICAgICAgIG51bV9wb2ludHMgPSBnbG9hZGVyLT5iYXNlLm91dGxpbmUubl9wb2ludHM7CisgICAgRlRfQm9vbCAgICAgICAgIGhhdmVfc2NhbGU7CisgICAgRlRfUG9zICAgICAgICAgIHgsIHk7CisKKworICAgIGhhdmVfc2NhbGUgPSBGVF9CT09MKCBzdWJnbHlwaC0+ZmxhZ3MgJiAoIFdFX0hBVkVfQV9TQ0FMRSAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFX0hBVkVfQU5fWFlfU0NBTEUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFX0hBVkVfQV8yWDIgICAgICAgKSApOworCisgICAgLyogcGVyZm9ybSB0aGUgdHJhbnNmb3JtIHJlcXVpcmVkIGZvciB0aGlzIHN1YmdseXBoICovCisgICAgaWYgKCBoYXZlX3NjYWxlICkKKyAgICB7CisgICAgICBGVF9VSW50ICBpOworCisKKyAgICAgIGZvciAoIGkgPSBudW1fYmFzZV9wb2ludHM7IGkgPCBudW1fcG9pbnRzOyBpKysgKQorICAgICAgICBGVF9WZWN0b3JfVHJhbnNmb3JtKCBiYXNlX3ZlYyArIGksICZzdWJnbHlwaC0+dHJhbnNmb3JtICk7CisgICAgfQorCisgICAgLyogZ2V0IG9mZnNldCAqLworICAgIGlmICggISggc3ViZ2x5cGgtPmZsYWdzICYgQVJHU19BUkVfWFlfVkFMVUVTICkgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgICAgIGsgPSBzdWJnbHlwaC0+YXJnMTsKKyAgICAgIEZUX1VJbnQgICAgIGwgPSBzdWJnbHlwaC0+YXJnMjsKKyAgICAgIEZUX1ZlY3RvciogIHAxOworICAgICAgRlRfVmVjdG9yKiAgcDI7CisKKworICAgICAgLyogbWF0Y2ggbC10aCBwb2ludCBvZiB0aGUgbmV3bHkgbG9hZGVkIGNvbXBvbmVudCB0byB0aGUgay10aCBwb2ludCAqLworICAgICAgLyogb2YgdGhlIHByZXZpb3VzbHkgbG9hZGVkIGNvbXBvbmVudHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAvKiBjaGFuZ2UgdG8gdGhlIHBvaW50IG51bWJlcnMgdXNlZCBieSBvdXIgb3V0bGluZSAqLworICAgICAgayArPSBzdGFydF9wb2ludDsKKyAgICAgIGwgKz0gbnVtX2Jhc2VfcG9pbnRzOworICAgICAgaWYgKCBrID49IG51bV9iYXNlX3BvaW50cyB8fAorICAgICAgICAgICBsID49IG51bV9wb2ludHMgICAgICApCisgICAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Db21wb3NpdGUgKTsKKworICAgICAgcDEgPSBnbG9hZGVyLT5iYXNlLm91dGxpbmUucG9pbnRzICsgazsKKyAgICAgIHAyID0gZ2xvYWRlci0+YmFzZS5vdXRsaW5lLnBvaW50cyArIGw7CisKKyAgICAgIHggPSBwMS0+eCAtIHAyLT54OworICAgICAgeSA9IHAxLT55IC0gcDItPnk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB4ID0gc3ViZ2x5cGgtPmFyZzE7CisgICAgICB5ID0gc3ViZ2x5cGgtPmFyZzI7CisKKyAgICAgIGlmICggIXggJiYgIXkgKQorICAgICAgICByZXR1cm4gRlRfRXJyX09rOworCisgIC8qIFVzZSBhIGRlZmF1bHQgdmFsdWUgZGVwZW5kZW50IG9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRUX0NPTkZJR19PUFRJT05fQ09NUE9ORU5UX09GRlNFVF9TQ0FMRUQuICBUaGlzIGlzIHVzZWZ1bCBmb3Igb2xkIFRUICovCisgIC8qIGZvbnRzIHdoaWNoIGRvbid0IHNldCB0aGUgeHh4X0NPTVBPTkVOVF9PRkZTRVQgYml0LiAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIGlmICggaGF2ZV9zY2FsZSAmJgorI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fQ09NUE9ORU5UX09GRlNFVF9TQ0FMRUQKKyAgICAgICAgICAgISggc3ViZ2x5cGgtPmZsYWdzICYgVU5TQ0FMRURfQ09NUE9ORU5UX09GRlNFVCApICkKKyNlbHNlCisgICAgICAgICAgICAoIHN1YmdseXBoLT5mbGFncyAmIFNDQUxFRF9DT01QT05FTlRfT0ZGU0VUICkgKQorI2VuZGlmCisgICAgICB7CisKKyNpZiAwCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGFsZ29yaXRobSBpcyB3aGF0IEFwcGxlIGRvY3VtZW50cy4gIEJ1dCBpdCBkb2Vzbid0IHdvcmsuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGludCAgYSA9IHN1YmdseXBoLT50cmFuc2Zvcm0ueHggPiAwID8gIHN1YmdseXBoLT50cmFuc2Zvcm0ueHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAtc3ViZ2x5cGgtPnRyYW5zZm9ybS54eDsKKyAgICAgICAgaW50ICBiID0gc3ViZ2x5cGgtPnRyYW5zZm9ybS55eCA+IDAgPyAgc3ViZ2x5cGgtPnRyYW5zZm9ybS55eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC1zdWJnbHlwaC0+dHJhbnNmb3JtLnl4OworICAgICAgICBpbnQgIGMgPSBzdWJnbHlwaC0+dHJhbnNmb3JtLnh5ID4gMCA/ICBzdWJnbHlwaC0+dHJhbnNmb3JtLnh5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLXN1YmdseXBoLT50cmFuc2Zvcm0ueHk7CisgICAgICAgIGludCAgZCA9IHN1YmdseXBoLT50cmFuc2Zvcm0ueXkgPiAwID8gc3ViZ2x5cGgtPnRyYW5zZm9ybS55eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC1zdWJnbHlwaC0+dHJhbnNmb3JtLnl5OworICAgICAgICBpbnQgIG0gPSBhID4gYiA/IGEgOiBiOworICAgICAgICBpbnQgIG4gPSBjID4gZCA/IGMgOiBkOworCisKKyAgICAgICAgaWYgKCBhIC0gYiA8PSAzMyAmJiBhIC0gYiA+PSAtMzMgKQorICAgICAgICAgIG0gKj0gMjsKKyAgICAgICAgaWYgKCBjIC0gZCA8PSAzMyAmJiBjIC0gZCA+PSAtMzMgKQorICAgICAgICAgIG4gKj0gMjsKKyAgICAgICAgeCA9IEZUX011bEZpeCggeCwgbSApOworICAgICAgICB5ID0gRlRfTXVsRml4KCB5LCBuICk7CisKKyNlbHNlIC8qIDAgKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgYWxnb3JpdGhtIGlzIGEgZ3Vlc3MgYW5kIHdvcmtzIG11Y2ggYmV0dGVyIHRoYW4gdGhlIGFib3ZlLiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgRlRfRml4ZWQgIG1hY194c2NhbGUgPSBGVF9IeXBvdCggc3ViZ2x5cGgtPnRyYW5zZm9ybS54eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZ2x5cGgtPnRyYW5zZm9ybS54eSApOworICAgICAgICBGVF9GaXhlZCAgbWFjX3lzY2FsZSA9IEZUX0h5cG90KCBzdWJnbHlwaC0+dHJhbnNmb3JtLnl5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJnbHlwaC0+dHJhbnNmb3JtLnl4ICk7CisKKworICAgICAgICB4ID0gRlRfTXVsRml4KCB4LCBtYWNfeHNjYWxlICk7CisgICAgICAgIHkgPSBGVF9NdWxGaXgoIHksIG1hY195c2NhbGUgKTsKKworI2VuZGlmIC8qIDAgKi8KKworICAgICAgfQorCisgICAgICBpZiAoICEoIGxvYWRlci0+bG9hZF9mbGFncyAmIEZUX0xPQURfTk9fU0NBTEUgKSApCisgICAgICB7CisgICAgICAgIEZUX0ZpeGVkICB4X3NjYWxlID0gKChUVF9TaXplKWxvYWRlci0+c2l6ZSktPm1ldHJpY3MueF9zY2FsZTsKKyAgICAgICAgRlRfRml4ZWQgIHlfc2NhbGUgPSAoKFRUX1NpemUpbG9hZGVyLT5zaXplKS0+bWV0cmljcy55X3NjYWxlOworCisKKyAgICAgICAgeCA9IEZUX011bEZpeCggeCwgeF9zY2FsZSApOworICAgICAgICB5ID0gRlRfTXVsRml4KCB5LCB5X3NjYWxlICk7CisKKyAgICAgICAgaWYgKCBzdWJnbHlwaC0+ZmxhZ3MgJiBST1VORF9YWV9UT19HUklEICkKKyAgICAgICAgeworICAgICAgICAgIHggPSBGVF9QSVhfUk9VTkQoIHggKTsKKyAgICAgICAgICB5ID0gRlRfUElYX1JPVU5EKCB5ICk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIHggfHwgeSApCisgICAgICB0cmFuc2xhdGVfYXJyYXkoIG51bV9wb2ludHMgLSBudW1fYmFzZV9wb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdmVjICsgbnVtX2Jhc2VfcG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICB4LCB5ICk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Qcm9jZXNzX0NvbXBvc2l0ZV9HbHlwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIFRUX1Byb2Nlc3NfU2ltcGxlX0dseXBoLCBpbiB0aGF0ICAgKi8KKyAgLyogICAgaXRzIHNvbGUgcHVycG9zZSBpcyB0byBoaW50IHRoZSBnbHlwaC4gIFRodXMgdGhpcyBmdW5jdGlvbiBpcyAgICAgICovCisgIC8qICAgIG9ubHkgYXZhaWxhYmxlIHdoZW4gYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgaXMgZW5hYmxlZC4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIFRUX1Byb2Nlc3NfQ29tcG9zaXRlX0dseXBoKCBUVF9Mb2FkZXIgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgc3RhcnRfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIHN0YXJ0X2NvbnRvdXIgKQorICB7CisgICAgRlRfRXJyb3IgICAgIGVycm9yOworICAgIEZUX091dGxpbmUqICBvdXRsaW5lOworICAgIEZUX1VJbnQgICAgICBpOworCisKKyAgICBvdXRsaW5lID0gJmxvYWRlci0+Z2xvYWRlci0+YmFzZS5vdXRsaW5lOworCisgICAgLyogbWFrZSByb29tIGZvciBwaGFudG9tIHBvaW50cyAqLworICAgIGVycm9yID0gRlRfR0xZUEhMT0FERVJfQ0hFQ0tfUE9JTlRTKCBsb2FkZXItPmdsb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmUtPm5fcG9pbnRzICsgNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCApOworICAgIGlmICggZXJyb3IgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgb3V0bGluZS0+cG9pbnRzW291dGxpbmUtPm5fcG9pbnRzICAgIF0gPSBsb2FkZXItPnBwMTsKKyAgICBvdXRsaW5lLT5wb2ludHNbb3V0bGluZS0+bl9wb2ludHMgKyAxXSA9IGxvYWRlci0+cHAyOworICAgIG91dGxpbmUtPnBvaW50c1tvdXRsaW5lLT5uX3BvaW50cyArIDJdID0gbG9hZGVyLT5wcDM7CisgICAgb3V0bGluZS0+cG9pbnRzW291dGxpbmUtPm5fcG9pbnRzICsgM10gPSBsb2FkZXItPnBwNDsKKworICAgIG91dGxpbmUtPnRhZ3Nbb3V0bGluZS0+bl9wb2ludHMgICAgXSA9IDA7CisgICAgb3V0bGluZS0+dGFnc1tvdXRsaW5lLT5uX3BvaW50cyArIDFdID0gMDsKKyAgICBvdXRsaW5lLT50YWdzW291dGxpbmUtPm5fcG9pbnRzICsgMl0gPSAwOworICAgIG91dGxpbmUtPnRhZ3Nbb3V0bGluZS0+bl9wb2ludHMgKyAzXSA9IDA7CisKKyNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKKworICAgIHsKKyAgICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gbG9hZGVyLT5zdHJlYW07CisgICAgICBGVF9VU2hvcnQgIG5faW5zLCBtYXhfaW5zOworICAgICAgRlRfVUxvbmcgICB0bXA7CisKKworICAgICAgLyogVFRfTG9hZF9Db21wb3NpdGVfR2x5cGggb25seSBnaXZlcyB1cyB0aGUgb2Zmc2V0IG9mIGluc3RydWN0aW9ucyAqLworICAgICAgLyogc28gd2UgcmVhZCB0aGVtIGhlcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggbG9hZGVyLT5pbnNfcG9zICkgfHwKKyAgICAgICAgICAgRlRfUkVBRF9VU0hPUlQoIG5faW5zICkgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgICBGVF9UUkFDRTUoKCAiICBJbnN0cnVjdGlvbnMgc2l6ZSA9ICVkXG4iLCBuX2lucyApKTsKKworICAgICAgLyogY2hlY2sgaXQgKi8KKyAgICAgIG1heF9pbnMgPSAoKFRUX0ZhY2UpbG9hZGVyLT5mYWNlKS0+bWF4X3Byb2ZpbGUubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zOworICAgICAgaWYgKCBuX2lucyA+IG1heF9pbnMgKQorICAgICAgeworICAgICAgICAvKiBhY3JvcmVhZCBpZ25vcmVzIHRoaXMgZmllbGQsIHNvIHdlIG9ubHkgZG8gYSByb3VnaCBzYWZldHkgY2hlY2sgKi8KKyAgICAgICAgaWYgKCAoRlRfSW50KW5faW5zID4gbG9hZGVyLT5ieXRlX2xlbiApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9UUkFDRTEoKCAiVFRfUHJvY2Vzc19Db21wb3NpdGVfR2x5cGg6ICIKKyAgICAgICAgICAgICAgICAgICAgICAidG9vIG1hbnkgaW5zdHJ1Y3Rpb25zICglZCkgZm9yIGdseXBoIHdpdGggbGVuZ3RoICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgIG5faW5zLCBsb2FkZXItPmJ5dGVfbGVuICkpOworICAgICAgICAgIHJldHVybiBGVF9USFJPVyggVG9vX01hbnlfSGludHMgKTsKKyAgICAgICAgfQorCisgICAgICAgIHRtcCA9IGxvYWRlci0+ZXhlYy0+Z2x5cGhTaXplOworICAgICAgICBlcnJvciA9IFVwZGF0ZV9NYXgoIGxvYWRlci0+ZXhlYy0+bWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0bXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggRlRfQnl0ZSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKikmbG9hZGVyLT5leGVjLT5nbHlwaElucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2lucyApOworICAgICAgICBsb2FkZXItPmV4ZWMtPmdseXBoU2l6ZSA9IChGVF9VU2hvcnQpdG1wOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9CisgICAgICBlbHNlIGlmICggbl9pbnMgPT0gMCApCisgICAgICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgICAgIGlmICggRlRfU1RSRUFNX1JFQUQoIGxvYWRlci0+ZXhlYy0+Z2x5cGhJbnMsIG5faW5zICkgKQorICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICAgIGxvYWRlci0+Z2x5cGgtPmNvbnRyb2xfZGF0YSA9IGxvYWRlci0+ZXhlYy0+Z2x5cGhJbnM7CisgICAgICBsb2FkZXItPmdseXBoLT5jb250cm9sX2xlbiAgPSBuX2luczsKKyAgICB9CisKKyNlbmRpZgorCisgICAgdHRfcHJlcGFyZV96b25lKCAmbG9hZGVyLT56b25lLCAmbG9hZGVyLT5nbG9hZGVyLT5iYXNlLAorICAgICAgICAgICAgICAgICAgICAgc3RhcnRfcG9pbnQsIHN0YXJ0X2NvbnRvdXIgKTsKKworICAgIC8qIFNvbWUgcG9pbnRzIGFyZSBsaWtlbHkgdG91Y2hlZCBkdXJpbmcgZXhlY3V0aW9uIG9mICAqLworICAgIC8qIGluc3RydWN0aW9ucyBvbiBjb21wb25lbnRzLiAgU28gbGV0J3MgdW50b3VjaCB0aGVtLiAqLworICAgIGZvciAoIGkgPSBzdGFydF9wb2ludDsgaSA8IGxvYWRlci0+em9uZS5uX3BvaW50czsgaSsrICkKKyAgICAgIGxvYWRlci0+em9uZS50YWdzW2ldICY9IH5GVF9DVVJWRV9UQUdfVE9VQ0hfQk9USDsKKworICAgIGxvYWRlci0+em9uZS5uX3BvaW50cyArPSA0OworCisgICAgcmV0dXJuIFRUX0hpbnRfR2x5cGgoIGxvYWRlciwgMSApOworICB9CisKKworICAvKiBDYWxjdWxhdGUgdGhlIGZvdXIgcGhhbnRvbSBwb2ludHMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGZpcnN0IHR3byBzdGFuZCBmb3IgaG9yaXpvbnRhbCBvcmlnaW4gYW5kIGFkdmFuY2UuICovCisgIC8qIFRoZSBsYXN0IHR3byBzdGFuZCBmb3IgdmVydGljYWwgb3JpZ2luIGFuZCBhZHZhbmNlLiAgICAqLworI2RlZmluZSBUVF9MT0FERVJfU0VUX1BQKCBsb2FkZXIgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAobG9hZGVyKS0+cHAxLnggPSAobG9hZGVyKS0+YmJveC54TWluIC0gKGxvYWRlciktPmxlZnRfYmVhcmluZzsgXAorICAgICAgICAgICAgKGxvYWRlciktPnBwMS55ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIChsb2FkZXIpLT5wcDIueCA9IChsb2FkZXIpLT5wcDEueCArIChsb2FkZXIpLT5hZHZhbmNlOyAgICAgICAgICBcCisgICAgICAgICAgICAobG9hZGVyKS0+cHAyLnkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKGxvYWRlciktPnBwMy54ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIChsb2FkZXIpLT5wcDMueSA9IChsb2FkZXIpLT50b3BfYmVhcmluZyArIChsb2FkZXIpLT5iYm94LnlNYXg7ICBcCisgICAgICAgICAgICAobG9hZGVyKS0+cHA0LnggPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKGxvYWRlciktPnBwNC55ID0gKGxvYWRlciktPnBwMy55IC0gKGxvYWRlciktPnZhZHZhbmNlOyAgICAgICAgIFwKKyAgICAgICAgICB9IHdoaWxlICggMCApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsb2FkX3RydWV0eXBlX2dseXBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkcyBhIGdpdmVuIHRydWV0eXBlIGdseXBoLiAgSGFuZGxlcyBjb21wb3NpdGVzIGFuZCB1c2VzIGEgICAgICAgKi8KKyAgLyogICAgVFRfTG9hZGVyIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgbG9hZF90cnVldHlwZV9nbHlwaCggVFRfTG9hZGVyICBsb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgcmVjdXJzZV9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgICBoZWFkZXJfb25seSApCisgIHsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3IgICAgICAgID0gRlRfRXJyX09rOworICAgIEZUX0ZpeGVkICAgICAgICB4X3NjYWxlLCB5X3NjYWxlOworICAgIEZUX1VMb25nICAgICAgICBvZmZzZXQ7CisgICAgVFRfRmFjZSAgICAgICAgIGZhY2UgICAgICAgICA9IChUVF9GYWNlKWxvYWRlci0+ZmFjZTsKKyAgICBGVF9HbHlwaExvYWRlciAgZ2xvYWRlciAgICAgID0gbG9hZGVyLT5nbG9hZGVyOworICAgIEZUX0Jvb2wgICAgICAgICBvcGVuZWRfZnJhbWUgPSAwOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICAgIEZUX1ZlY3RvciogICAgICBkZWx0YXMgICAgICAgPSBOVUxMOworI2VuZGlmCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisgICAgRlRfU3RyZWFtUmVjICAgIGluY19zdHJlYW07CisgICAgRlRfRGF0YSAgICAgICAgIGdseXBoX2RhdGE7CisgICAgRlRfQm9vbCAgICAgICAgIGdseXBoX2RhdGFfbG9hZGVkID0gMDsKKyNlbmRpZgorCisKKyAgICAvKiBzb21lIGZvbnRzIGhhdmUgYW4gaW5jb3JyZWN0IHZhbHVlIG9mIGBtYXhDb21wb25lbnREZXB0aCcsICovCisgICAgLyogdGh1cyB3ZSBhbGxvdyBkZXB0aCAxIHRvIGNhdGNoIHRoZSBtYWpvcml0eSBvZiB0aGVtICAgICAgICAqLworICAgIGlmICggcmVjdXJzZV9jb3VudCA+IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICByZWN1cnNlX2NvdW50ID4gZmFjZS0+bWF4X3Byb2ZpbGUubWF4Q29tcG9uZW50RGVwdGggKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQ29tcG9zaXRlICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLyogY2hlY2sgZ2x5cGggaW5kZXggKi8KKyAgICBpZiAoIGdseXBoX2luZGV4ID49IChGVF9VSW50KWZhY2UtPnJvb3QubnVtX2dseXBocyApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9HbHlwaF9JbmRleCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGxvYWRlci0+Z2x5cGhfaW5kZXggPSBnbHlwaF9pbmRleDsKKworICAgIGlmICggKCBsb2FkZXItPmxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX1NDQUxFICkgPT0gMCApCisgICAgeworICAgICAgeF9zY2FsZSA9ICgoVFRfU2l6ZSlsb2FkZXItPnNpemUpLT5tZXRyaWNzLnhfc2NhbGU7CisgICAgICB5X3NjYWxlID0gKChUVF9TaXplKWxvYWRlci0+c2l6ZSktPm1ldHJpY3MueV9zY2FsZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHhfc2NhbGUgPSAweDEwMDAwTDsKKyAgICAgIHlfc2NhbGUgPSAweDEwMDAwTDsKKyAgICB9CisKKyAgICB0dF9nZXRfbWV0cmljcyggbG9hZGVyLCBnbHlwaF9pbmRleCApOworCisgICAgLyogU2V0IGBvZmZzZXQnIHRvIHRoZSBzdGFydCBvZiB0aGUgZ2x5cGggcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mICovCisgICAgLyogdGhlIGBnbHlmJyB0YWJsZSwgYW5kIGBieXRlX2xlbicgdG8gdGhlIGxlbmd0aCBvZiB0aGUgZ2x5cGggaW4gICovCisgICAgLyogYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisKKyAgICAvKiBJZiB3ZSBhcmUgbG9hZGluZyBnbHlwaCBkYXRhIHZpYSB0aGUgaW5jcmVtZW50YWwgaW50ZXJmYWNlLCBzZXQgKi8KKyAgICAvKiB0aGUgbG9hZGVyIHN0cmVhbSB0byBhIG1lbW9yeSBzdHJlYW0gcmVhZGluZyB0aGUgZGF0YSByZXR1cm5lZCAgKi8KKyAgICAvKiBieSB0aGUgaW50ZXJmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSApCisgICAgeworICAgICAgZXJyb3IgPSBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UtPmZ1bmNzLT5nZXRfZ2x5cGhfZGF0YSgKKyAgICAgICAgICAgICAgICBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UtPm9iamVjdCwKKyAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwgJmdseXBoX2RhdGEgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGdseXBoX2RhdGFfbG9hZGVkID0gMTsKKyAgICAgIG9mZnNldCAgICAgICAgICAgID0gMDsKKyAgICAgIGxvYWRlci0+Ynl0ZV9sZW4gID0gZ2x5cGhfZGF0YS5sZW5ndGg7CisKKyAgICAgIEZUX01FTV9aRVJPKCAmaW5jX3N0cmVhbSwgc2l6ZW9mICggaW5jX3N0cmVhbSApICk7CisgICAgICBGVF9TdHJlYW1fT3Blbk1lbW9yeSggJmluY19zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfZGF0YS5wb2ludGVyLCBnbHlwaF9kYXRhLmxlbmd0aCApOworCisgICAgICBsb2FkZXItPnN0cmVhbSA9ICZpbmNfc3RyZWFtOworICAgIH0KKyAgICBlbHNlCisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMICovCisKKyAgICAgIG9mZnNldCA9IHR0X2ZhY2VfZ2V0X2xvY2F0aW9uKCBmYWNlLCBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVUludCopJmxvYWRlci0+Ynl0ZV9sZW4gKTsKKworICAgIGlmICggbG9hZGVyLT5ieXRlX2xlbiA+IDAgKQorICAgIHsKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisgICAgICAvKiBmb3IgdGhlIGluY3JlbWVudGFsIGludGVyZmFjZSwgYGdseWZfb2Zmc2V0JyBpcyBhbHdheXMgemVybyAqLworICAgICAgaWYgKCAhbG9hZGVyLT5nbHlmX29mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICFmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UgKQorI2Vsc2UKKyAgICAgIGlmICggIWxvYWRlci0+Z2x5Zl9vZmZzZXQgKQorI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KKyAgICAgIHsKKyAgICAgICAgRlRfVFJBQ0UyKCggIm5vIGBnbHlmJyB0YWJsZSBidXQgbm9uLXplcm8gYGxvY2EnIGVudHJ5XG4iICkpOworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgZXJyb3IgPSBmYWNlLT5hY2Nlc3NfZ2x5cGhfZnJhbWUoIGxvYWRlciwgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLT5nbHlmX29mZnNldCArIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXItPmJ5dGVfbGVuICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBvcGVuZWRfZnJhbWUgPSAxOworCisgICAgICAvKiByZWFkIGdseXBoIGhlYWRlciBmaXJzdCAqLworICAgICAgZXJyb3IgPSBmYWNlLT5yZWFkX2dseXBoX2hlYWRlciggbG9hZGVyICk7CisgICAgICBpZiAoIGVycm9yIHx8IGhlYWRlcl9vbmx5ICkKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggbG9hZGVyLT5ieXRlX2xlbiA9PSAwIHx8IGxvYWRlci0+bl9jb250b3VycyA9PSAwICkKKyAgICB7CisgICAgICBsb2FkZXItPmJib3gueE1pbiA9IDA7CisgICAgICBsb2FkZXItPmJib3gueE1heCA9IDA7CisgICAgICBsb2FkZXItPmJib3gueU1pbiA9IDA7CisgICAgICBsb2FkZXItPmJib3gueU1heCA9IDA7CisKKyAgICAgIGlmICggaGVhZGVyX29ubHkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIC8qIG11c3QgaW5pdGlhbGl6ZSBwb2ludHMgYmVmb3JlIChwb3NzaWJseSkgb3ZlcnJpZGluZyAqLworICAgICAgLyogZ2x5cGggbWV0cmljcyBmcm9tIHRoZSBpbmNyZW1lbnRhbCBpbnRlcmZhY2UgICAgICAgICovCisgICAgICBUVF9MT0FERVJfU0VUX1BQKCBsb2FkZXIgKTsKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICAgIHR0X2dldF9tZXRyaWNzX2luY3Jfb3ZlcnJpZGVzKCBsb2FkZXIsIGdseXBoX2luZGV4ICk7CisjZW5kaWYKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKworICAgICAgaWYgKCAoKFRUX0ZhY2UpKGxvYWRlci0+ZmFjZSkpLT5kb2JsZW5kICkKKyAgICAgIHsKKyAgICAgICAgLyogdGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHNjYWxpbmcgKi8KKyAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBsb2FkZXItPmZhY2UtPm1lbW9yeTsKKworCisgICAgICAgIGVycm9yID0gVFRfVmFyeV9HZXRfR2x5cGhfRGVsdGFzKCAoVFRfRmFjZSkobG9hZGVyLT5mYWNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LCAmZGVsdGFzLCA0ICk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICBsb2FkZXItPnBwMS54ICs9IGRlbHRhc1swXS54OyBsb2FkZXItPnBwMS55ICs9IGRlbHRhc1swXS55OworICAgICAgICBsb2FkZXItPnBwMi54ICs9IGRlbHRhc1sxXS54OyBsb2FkZXItPnBwMi55ICs9IGRlbHRhc1sxXS55OworICAgICAgICBsb2FkZXItPnBwMy54ICs9IGRlbHRhc1syXS54OyBsb2FkZXItPnBwMy55ICs9IGRlbHRhc1syXS55OworICAgICAgICBsb2FkZXItPnBwNC54ICs9IGRlbHRhc1szXS54OyBsb2FkZXItPnBwNC55ICs9IGRlbHRhc1szXS55OworCisgICAgICAgIEZUX0ZSRUUoIGRlbHRhcyApOworICAgICAgfQorCisjZW5kaWYKKworICAgICAgaWYgKCAoIGxvYWRlci0+bG9hZF9mbGFncyAmIEZUX0xPQURfTk9fU0NBTEUgKSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgbG9hZGVyLT5wcDEueCA9IEZUX011bEZpeCggbG9hZGVyLT5wcDEueCwgeF9zY2FsZSApOworICAgICAgICBsb2FkZXItPnBwMi54ID0gRlRfTXVsRml4KCBsb2FkZXItPnBwMi54LCB4X3NjYWxlICk7CisgICAgICAgIGxvYWRlci0+cHAzLnkgPSBGVF9NdWxGaXgoIGxvYWRlci0+cHAzLnksIHlfc2NhbGUgKTsKKyAgICAgICAgbG9hZGVyLT5wcDQueSA9IEZUX011bEZpeCggbG9hZGVyLT5wcDQueSwgeV9zY2FsZSApOworICAgICAgfQorCisgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICAvKiBtdXN0IGluaXRpYWxpemUgcG9pbnRzIGJlZm9yZSAocG9zc2libHkpIG92ZXJyaWRpbmcgKi8KKyAgICAvKiBnbHlwaCBtZXRyaWNzIGZyb20gdGhlIGluY3JlbWVudGFsIGludGVyZmFjZSAgICAgICAgKi8KKyAgICBUVF9MT0FERVJfU0VUX1BQKCBsb2FkZXIgKTsKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICB0dF9nZXRfbWV0cmljc19pbmNyX292ZXJyaWRlcyggbG9hZGVyLCBnbHlwaF9pbmRleCApOworI2VuZGlmCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAgIC8qIGlmIGl0IGlzIGEgc2ltcGxlIGdseXBoLCBsb2FkIGl0ICovCisKKyAgICBpZiAoIGxvYWRlci0+bl9jb250b3VycyA+IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gZmFjZS0+cmVhZF9zaW1wbGVfZ2x5cGgoIGxvYWRlciApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogYWxsIGRhdGEgaGF2ZSBiZWVuIHJlYWQgKi8KKyAgICAgIGZhY2UtPmZvcmdldF9nbHlwaF9mcmFtZSggbG9hZGVyICk7CisgICAgICBvcGVuZWRfZnJhbWUgPSAwOworCisgICAgICBlcnJvciA9IFRUX1Byb2Nlc3NfU2ltcGxlX0dseXBoKCBsb2FkZXIgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIEZUX0dseXBoTG9hZGVyX0FkZCggZ2xvYWRlciApOworICAgIH0KKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgICAgLyogb3RoZXJ3aXNlLCBsb2FkIGEgY29tcG9zaXRlISAqLworICAgIGVsc2UgaWYgKCBsb2FkZXItPm5fY29udG91cnMgPT0gLTEgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgICBzdGFydF9wb2ludDsKKyAgICAgIEZUX1VJbnQgICBzdGFydF9jb250b3VyOworICAgICAgRlRfVUxvbmcgIGluc19wb3M7ICAvKiBwb3NpdGlvbiBvZiBjb21wb3NpdGUgaW5zdHJ1Y3Rpb25zLCBpZiBhbnkgKi8KKworCisgICAgICBzdGFydF9wb2ludCAgID0gZ2xvYWRlci0+YmFzZS5vdXRsaW5lLm5fcG9pbnRzOworICAgICAgc3RhcnRfY29udG91ciA9IGdsb2FkZXItPmJhc2Uub3V0bGluZS5uX2NvbnRvdXJzOworCisgICAgICAvKiBmb3IgZWFjaCBzdWJnbHlwaCwgcmVhZCBjb21wb3NpdGUgaGVhZGVyICovCisgICAgICBlcnJvciA9IGZhY2UtPnJlYWRfY29tcG9zaXRlX2dseXBoKCBsb2FkZXIgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIC8qIHN0b3JlIHRoZSBvZmZzZXQgb2YgaW5zdHJ1Y3Rpb25zICovCisgICAgICBpbnNfcG9zID0gbG9hZGVyLT5pbnNfcG9zOworCisgICAgICAvKiBhbGwgZGF0YSB3ZSBuZWVkIGFyZSByZWFkICovCisgICAgICBmYWNlLT5mb3JnZXRfZ2x5cGhfZnJhbWUoIGxvYWRlciApOworICAgICAgb3BlbmVkX2ZyYW1lID0gMDsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKworICAgICAgaWYgKCBmYWNlLT5kb2JsZW5kICkKKyAgICAgIHsKKyAgICAgICAgRlRfSW50ICAgICAgIGksIGxpbWl0OworICAgICAgICBGVF9TdWJHbHlwaCAgc3ViZ2x5cGg7CisgICAgICAgIEZUX01lbW9yeSAgICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKworCisgICAgICAgIC8qIHRoaXMgcHJvdmlkZXMgYWRkaXRpb25hbCBvZmZzZXRzICovCisgICAgICAgIC8qIGZvciBlYWNoIGNvbXBvbmVudCdzIHRyYW5zbGF0aW9uICovCisKKyAgICAgICAgaWYgKCAoIGVycm9yID0gVFRfVmFyeV9HZXRfR2x5cGhfRGVsdGFzKAorICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmRlbHRhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9hZGVyLT5jdXJyZW50Lm51bV9zdWJnbHlwaHMgKyA0ICkpICE9IDAgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgICBzdWJnbHlwaCA9IGdsb2FkZXItPmN1cnJlbnQuc3ViZ2x5cGhzICsgZ2xvYWRlci0+YmFzZS5udW1fc3ViZ2x5cGhzOworICAgICAgICBsaW1pdCAgICA9IGdsb2FkZXItPmN1cnJlbnQubnVtX3N1YmdseXBoczsKKworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxpbWl0OyArK2ksICsrc3ViZ2x5cGggKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBzdWJnbHlwaC0+ZmxhZ3MgJiBBUkdTX0FSRV9YWV9WQUxVRVMgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIFhYWDogb3ZlcmZsb3cgY2hlY2sgZm9yIHN1YmdseXBoLT57YXJnMSxhcmcyfS4gICAqLworICAgICAgICAgICAgLyogZGVsdGFzW2ldLnt4LHl9IG11c3QgYmUgd2l0aGluIHNpZ25lZCAxNi1iaXQsICAgICovCisgICAgICAgICAgICAvKiBidXQgdGhlIHJlc3RyaWN0aW9uIG9mIHN1bW1lZCBkZWx0YSBpcyBub3QgY2xlYXIgKi8KKyAgICAgICAgICAgIHN1YmdseXBoLT5hcmcxICs9IChGVF9JbnQxNilkZWx0YXNbaV0ueDsKKyAgICAgICAgICAgIHN1YmdseXBoLT5hcmcyICs9IChGVF9JbnQxNilkZWx0YXNbaV0ueTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsb2FkZXItPnBwMS54ICs9IGRlbHRhc1tpICsgMF0ueDsgbG9hZGVyLT5wcDEueSArPSBkZWx0YXNbaSArIDBdLnk7CisgICAgICAgIGxvYWRlci0+cHAyLnggKz0gZGVsdGFzW2kgKyAxXS54OyBsb2FkZXItPnBwMi55ICs9IGRlbHRhc1tpICsgMV0ueTsKKyAgICAgICAgbG9hZGVyLT5wcDMueCArPSBkZWx0YXNbaSArIDJdLng7IGxvYWRlci0+cHAzLnkgKz0gZGVsdGFzW2kgKyAyXS55OworICAgICAgICBsb2FkZXItPnBwNC54ICs9IGRlbHRhc1tpICsgM10ueDsgbG9hZGVyLT5wcDQueSArPSBkZWx0YXNbaSArIDNdLnk7CisKKyAgICAgICAgRlRfRlJFRSggZGVsdGFzICk7CisgICAgICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUICovCisKKyAgICAgIGlmICggKCBsb2FkZXItPmxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX1NDQUxFICkgPT0gMCApCisgICAgICB7CisgICAgICAgIGxvYWRlci0+cHAxLnggPSBGVF9NdWxGaXgoIGxvYWRlci0+cHAxLngsIHhfc2NhbGUgKTsKKyAgICAgICAgbG9hZGVyLT5wcDIueCA9IEZUX011bEZpeCggbG9hZGVyLT5wcDIueCwgeF9zY2FsZSApOworICAgICAgICBsb2FkZXItPnBwMy55ID0gRlRfTXVsRml4KCBsb2FkZXItPnBwMy55LCB5X3NjYWxlICk7CisgICAgICAgIGxvYWRlci0+cHA0LnkgPSBGVF9NdWxGaXgoIGxvYWRlci0+cHA0LnksIHlfc2NhbGUgKTsKKyAgICAgIH0KKworICAgICAgLyogaWYgdGhlIGZsYWcgRlRfTE9BRF9OT19SRUNVUlNFIGlzIHNldCwgd2UgcmV0dXJuIHRoZSBzdWJnbHlwaCAqLworICAgICAgLyogYGFzIGlzJyBpbiB0aGUgZ2x5cGggc2xvdCAodGhlIGNsaWVudCBhcHBsaWNhdGlvbiB3aWxsIGJlICAgICAqLworICAgICAgLyogcmVzcG9uc2libGUgZm9yIGludGVycHJldGluZyB0aGVzZSBkYXRhKS4uLiAgICAgICAgICAgICAgICAgICAqLworICAgICAgaWYgKCBsb2FkZXItPmxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX1JFQ1VSU0UgKQorICAgICAgeworICAgICAgICBGVF9HbHlwaExvYWRlcl9BZGQoIGdsb2FkZXIgKTsKKyAgICAgICAgbG9hZGVyLT5nbHlwaC0+Zm9ybWF0ID0gRlRfR0xZUEhfRk9STUFUX0NPTVBPU0lURTsKKworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAgICAgeworICAgICAgICBGVF9VSW50ICAgICAgbiwgbnVtX2Jhc2VfcG9pbnRzOworICAgICAgICBGVF9TdWJHbHlwaCAgc3ViZ2x5cGggICAgICAgPSAwOworCisgICAgICAgIEZUX1VJbnQgICAgICBudW1fcG9pbnRzICAgICA9IHN0YXJ0X3BvaW50OworICAgICAgICBGVF9VSW50ICAgICAgbnVtX3N1YmdseXBocyAgPSBnbG9hZGVyLT5jdXJyZW50Lm51bV9zdWJnbHlwaHM7CisgICAgICAgIEZUX1VJbnQgICAgICBudW1fYmFzZV9zdWJncyA9IGdsb2FkZXItPmJhc2UubnVtX3N1YmdseXBoczsKKworICAgICAgICBGVF9TdHJlYW0gICAgb2xkX3N0cmVhbSAgICAgPSBsb2FkZXItPnN0cmVhbTsKKyAgICAgICAgRlRfSW50ICAgICAgIG9sZF9ieXRlX2xlbiAgID0gbG9hZGVyLT5ieXRlX2xlbjsKKworCisgICAgICAgIEZUX0dseXBoTG9hZGVyX0FkZCggZ2xvYWRlciApOworCisgICAgICAgIC8qIHJlYWQgZWFjaCBzdWJnbHlwaCBpbmRlcGVuZGVudGx5ICovCisgICAgICAgIGZvciAoIG4gPSAwOyBuIDwgbnVtX3N1YmdseXBoczsgbisrICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1ZlY3RvciAgcHBbNF07CisKKworICAgICAgICAgIC8qIEVhY2ggdGltZSB3ZSBjYWxsIGxvYWRfdHJ1ZXR5cGVfZ2x5cGggaW4gdGhpcyBsb29wLCB0aGUgICAqLworICAgICAgICAgIC8qIHZhbHVlIG9mIGBnbG9hZGVyLmJhc2Uuc3ViZ2x5cGhzJyBjYW4gY2hhbmdlIGR1ZSB0byB0YWJsZSAqLworICAgICAgICAgIC8qIHJlYWxsb2NhdGlvbnMuICBXZSB0aHVzIG5lZWQgdG8gcmVjb21wdXRlIHRoZSBzdWJnbHlwaCAgICAqLworICAgICAgICAgIC8qIHBvaW50ZXIgb24gZWFjaCBpdGVyYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIHN1YmdseXBoID0gZ2xvYWRlci0+YmFzZS5zdWJnbHlwaHMgKyBudW1fYmFzZV9zdWJncyArIG47CisKKyAgICAgICAgICBwcFswXSA9IGxvYWRlci0+cHAxOworICAgICAgICAgIHBwWzFdID0gbG9hZGVyLT5wcDI7CisgICAgICAgICAgcHBbMl0gPSBsb2FkZXItPnBwMzsKKyAgICAgICAgICBwcFszXSA9IGxvYWRlci0+cHA0OworCisgICAgICAgICAgbnVtX2Jhc2VfcG9pbnRzID0gZ2xvYWRlci0+YmFzZS5vdXRsaW5lLm5fcG9pbnRzOworCisgICAgICAgICAgZXJyb3IgPSBsb2FkX3RydWV0eXBlX2dseXBoKCBsb2FkZXIsIHN1YmdseXBoLT5pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2VfY291bnQgKyAxLCBGQUxTRSApOworICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgICAgLyogcmVzdG9yZSBzdWJnbHlwaCBwb2ludGVyICovCisgICAgICAgICAgc3ViZ2x5cGggPSBnbG9hZGVyLT5iYXNlLnN1YmdseXBocyArIG51bV9iYXNlX3N1YmdzICsgbjsKKworICAgICAgICAgIGlmICggISggc3ViZ2x5cGgtPmZsYWdzICYgVVNFX01ZX01FVFJJQ1MgKSApCisgICAgICAgICAgeworICAgICAgICAgICAgbG9hZGVyLT5wcDEgPSBwcFswXTsKKyAgICAgICAgICAgIGxvYWRlci0+cHAyID0gcHBbMV07CisgICAgICAgICAgICBsb2FkZXItPnBwMyA9IHBwWzJdOworICAgICAgICAgICAgbG9hZGVyLT5wcDQgPSBwcFszXTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBudW1fcG9pbnRzID0gZ2xvYWRlci0+YmFzZS5vdXRsaW5lLm5fcG9pbnRzOworCisgICAgICAgICAgaWYgKCBudW1fcG9pbnRzID09IG51bV9iYXNlX3BvaW50cyApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgIC8qIGdsb2FkZXItPmJhc2Uub3V0bGluZSBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0czogICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qIDAgLSgxKS0+IHN0YXJ0X3BvaW50IC0oMiktPiBudW1fYmFzZV9wb2ludHMgLSgzKS0+IG5fcG9pbnRzLiAqLworICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qICgxKTogZXhpc3RzIGZyb20gdGhlIGJlZ2lubmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qICgyKTogY29tcG9uZW50cyB0aGF0IGhhdmUgYmVlbiBsb2FkZWQgc28gZmFyICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qICgzKTogdGhlIG5ld2x5IGxvYWRlZCBjb21wb25lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIFRUX1Byb2Nlc3NfQ29tcG9zaXRlX0NvbXBvbmVudCggbG9hZGVyLCBzdWJnbHlwaCwgc3RhcnRfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fYmFzZV9wb2ludHMgKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvYWRlci0+c3RyZWFtICAgPSBvbGRfc3RyZWFtOworICAgICAgICBsb2FkZXItPmJ5dGVfbGVuID0gb2xkX2J5dGVfbGVuOworCisgICAgICAgIC8qIHByb2Nlc3MgdGhlIGdseXBoICovCisgICAgICAgIGxvYWRlci0+aW5zX3BvcyA9IGluc19wb3M7CisgICAgICAgIGlmICggSVNfSElOVEVEKCBsb2FkZXItPmxvYWRfZmxhZ3MgKSAmJgorCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyAgICAgICAgICAgICBzdWJnbHlwaC0+ZmxhZ3MgJiBXRV9IQVZFX0lOU1RSICYmCisKKyNlbmRpZgorCisgICAgICAgICAgICAgbnVtX3BvaW50cyA+IHN0YXJ0X3BvaW50ICkKKyAgICAgICAgICBUVF9Qcm9jZXNzX0NvbXBvc2l0ZV9HbHlwaCggbG9hZGVyLCBzdGFydF9wb2ludCwgc3RhcnRfY29udG91ciApOworCisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBpbnZhbGlkIGNvbXBvc2l0ZSBjb3VudCAobmVnYXRpdmUgYnV0IG5vdCAtMSkgKi8KKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfT3V0bGluZSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIEV4aXQ6CisKKyAgICBpZiAoIG9wZW5lZF9mcmFtZSApCisgICAgICBmYWNlLT5mb3JnZXRfZ2x5cGhfZnJhbWUoIGxvYWRlciApOworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorCisgICAgaWYgKCBnbHlwaF9kYXRhX2xvYWRlZCApCisgICAgICBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UtPmZ1bmNzLT5mcmVlX2dseXBoX2RhdGEoCisgICAgICAgIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZS0+b2JqZWN0LAorICAgICAgICAmZ2x5cGhfZGF0YSApOworCisjZW5kaWYKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNvbXB1dGVfZ2x5cGhfbWV0cmljcyggVFRfTG9hZGVyICBsb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBnbHlwaF9pbmRleCApCisgIHsKKyAgICBUVF9GYWNlICAgIGZhY2UgICA9IChUVF9GYWNlKWxvYWRlci0+ZmFjZTsKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBUVF9Ecml2ZXIgIGRyaXZlciA9IChUVF9Ecml2ZXIpRlRfRkFDRV9EUklWRVIoIGZhY2UgKTsKKyNlbmRpZgorCisgICAgRlRfQkJveCAgICAgICBiYm94OworICAgIEZUX0ZpeGVkICAgICAgeV9zY2FsZTsKKyAgICBUVF9HbHlwaFNsb3QgIGdseXBoID0gbG9hZGVyLT5nbHlwaDsKKyAgICBUVF9TaXplICAgICAgIHNpemUgID0gKFRUX1NpemUpbG9hZGVyLT5zaXplOworCisKKyAgICB5X3NjYWxlID0gMHgxMDAwMEw7CisgICAgaWYgKCAoIGxvYWRlci0+bG9hZF9mbGFncyAmIEZUX0xPQURfTk9fU0NBTEUgKSA9PSAwICkKKyAgICAgIHlfc2NhbGUgPSBzaXplLT5yb290Lm1ldHJpY3MueV9zY2FsZTsKKworICAgIGlmICggZ2x5cGgtPmZvcm1hdCAhPSBGVF9HTFlQSF9GT1JNQVRfQ09NUE9TSVRFICkKKyAgICAgIEZUX091dGxpbmVfR2V0X0NCb3goICZnbHlwaC0+b3V0bGluZSwgJmJib3ggKTsKKyAgICBlbHNlCisgICAgICBiYm94ID0gbG9hZGVyLT5iYm94OworCisgICAgLyogZ2V0IHRoZSBkZXZpY2UtaW5kZXBlbmRlbnQgaG9yaXpvbnRhbCBhZHZhbmNlOyBpdCBpcyBzY2FsZWQgbGF0ZXIgKi8KKyAgICAvKiBieSB0aGUgYmFzZSBsYXllci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGdseXBoLT5saW5lYXJIb3JpQWR2YW5jZSA9IGxvYWRlci0+bGluZWFyOworCisgICAgZ2x5cGgtPm1ldHJpY3MuaG9yaUJlYXJpbmdYID0gYmJveC54TWluOworICAgIGdseXBoLT5tZXRyaWNzLmhvcmlCZWFyaW5nWSA9IGJib3gueU1heDsKKyAgICBnbHlwaC0+bWV0cmljcy5ob3JpQWR2YW5jZSAgPSBsb2FkZXItPnBwMi54IC0gbG9hZGVyLT5wcDEueDsKKworICAgIC8qIGFkanVzdCBhZHZhbmNlIHdpZHRoIHRvIHRoZSB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGhkbXggdGFibGUgKi8KKyAgICBpZiAoICFmYWNlLT5wb3N0c2NyaXB0LmlzRml4ZWRQaXRjaCAgJiYKKyAgICAgICAgIElTX0hJTlRFRCggbG9hZGVyLT5sb2FkX2ZsYWdzICkgKQorICAgIHsKKyAgICAgIEZUX0J5dGUqICB3aWR0aHA7CisKKworICAgICAgd2lkdGhwID0gdHRfZmFjZV9nZXRfZGV2aWNlX21ldHJpY3MoIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0+cm9vdC5tZXRyaWNzLnhfcHBlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCApOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisKKyAgICAgIGlmICggZHJpdmVyLT5pbnRlcnByZXRlcl92ZXJzaW9uID09IFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzggKQorICAgICAgeworICAgICAgICBGVF9Cb29sICBpZ25vcmVfeF9tb2RlOworCisKKyAgICAgICAgaWdub3JlX3hfbW9kZSA9IEZUX0JPT0woIEZUX0xPQURfVEFSR0VUX01PREUoIGxvYWRlci0+bG9hZF9mbGFncyApICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SRU5ERVJfTU9ERV9NT05PICk7CisKKyAgICAgICAgaWYgKCB3aWR0aHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICggKCBpZ25vcmVfeF9tb2RlICYmIGxvYWRlci0+ZXhlYy0+Y29tcGF0aWJsZV93aWR0aHMgKSB8fAorICAgICAgICAgICAgICAgICFpZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgIFNQSF9PUFRJT05fQklUTUFQX1dJRFRIUyAgICAgICAgICAgICAgICAgICAgICAgICAgICApICkKKyAgICAgICAgICBnbHlwaC0+bWV0cmljcy5ob3JpQWR2YW5jZSA9ICp3aWR0aHAgPDwgNjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisgICAgICB7CisgICAgICAgIGlmICggd2lkdGhwICkKKyAgICAgICAgICBnbHlwaC0+bWV0cmljcy5ob3JpQWR2YW5jZSA9ICp3aWR0aHAgPDwgNjsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBzZXQgZ2x5cGggZGltZW5zaW9ucyAqLworICAgIGdseXBoLT5tZXRyaWNzLndpZHRoICA9IGJib3gueE1heCAtIGJib3gueE1pbjsKKyAgICBnbHlwaC0+bWV0cmljcy5oZWlnaHQgPSBiYm94LnlNYXggLSBiYm94LnlNaW47CisKKyAgICAvKiBOb3cgdGFrZSBjYXJlIG9mIHZlcnRpY2FsIG1ldHJpY3MuICBJbiB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyAqLworICAgIC8qIG5vIHZlcnRpY2FsIGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgZm9udCAocmVsYXRpdmVseSBjb21tb24pLCAgICovCisgICAgLyogY3JlYXRlIHNvbWUgbWV0cmljcyBtYW51YWxseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB7CisgICAgICBGVF9Qb3MgIHRvcDsgICAgICAvKiBzY2FsZWQgdmVydGljYWwgdG9wIHNpZGUgYmVhcmluZyAgKi8KKyAgICAgIEZUX1BvcyAgYWR2YW5jZTsgIC8qIHNjYWxlZCB2ZXJ0aWNhbCBhZHZhbmNlIGhlaWdodCAgICAqLworCisKKyAgICAgIC8qIEdldCB0aGUgdW5zY2FsZWQgdG9wIGJlYXJpbmcgYW5kIGFkdmFuY2UgaGVpZ2h0LiAqLworICAgICAgaWYgKCBmYWNlLT52ZXJ0aWNhbF9pbmZvICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIGZhY2UtPnZlcnRpY2FsLm51bWJlcl9PZl9WTWV0cmljcyA+IDAgKQorICAgICAgeworICAgICAgICB0b3AgPSAoRlRfU2hvcnQpRlRfRGl2Rml4KCBsb2FkZXItPnBwMy55IC0gYmJveC55TWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5X3NjYWxlICk7CisKKyAgICAgICAgaWYgKCBsb2FkZXItPnBwMy55IDw9IGxvYWRlci0+cHA0LnkgKQorICAgICAgICAgIGFkdmFuY2UgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgYWR2YW5jZSA9IChGVF9VU2hvcnQpRlRfRGl2Rml4KCBsb2FkZXItPnBwMy55IC0gbG9hZGVyLT5wcDQueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlfc2NhbGUgKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgRlRfUG9zICBoZWlnaHQ7CisKKworICAgICAgICAvKiBYWFggQ29tcHV0ZSB0b3Agc2lkZSBiZWFyaW5nIGFuZCBhZHZhbmNlIGhlaWdodCBpbiAgKi8KKyAgICAgICAgLyogICAgIEdldF9WTWV0cmljcyBpbnN0ZWFkIG9mIGhlcmUuICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgLyogTk9URTogVGhlIE9TLzIgdmFsdWVzIGFyZSB0aGUgb25seSBgcG9ydGFibGUnIG9uZXMsICovCisgICAgICAgIC8qICAgICAgIHdoaWNoIGlzIHdoeSB3ZSB1c2UgdGhlbSwgaWYgdGhlcmUgaXMgYW4gT1MvMiAqLworICAgICAgICAvKiAgICAgICB0YWJsZSBpbiB0aGUgZm9udC4gIE90aGVyd2lzZSwgd2UgdXNlIHRoZSAgICAgKi8KKyAgICAgICAgLyogICAgICAgdmFsdWVzIGRlZmluZWQgaW4gdGhlIGhvcml6b250YWwgaGVhZGVyLiAgICAgICovCisKKyAgICAgICAgaGVpZ2h0ID0gKEZUX1Nob3J0KUZUX0RpdkZpeCggYmJveC55TWF4IC0gYmJveC55TWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5X3NjYWxlICk7CisgICAgICAgIGlmICggZmFjZS0+b3MyLnZlcnNpb24gIT0gMHhGRkZGVSApCisgICAgICAgICAgYWR2YW5jZSA9IChGVF9Qb3MpKCBmYWNlLT5vczIuc1R5cG9Bc2NlbmRlciAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5vczIuc1R5cG9EZXNjZW5kZXIgKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGFkdmFuY2UgPSAoRlRfUG9zKSggZmFjZS0+aG9yaXpvbnRhbC5Bc2NlbmRlciAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5ob3Jpem9udGFsLkRlc2NlbmRlciApOworCisgICAgICAgIHRvcCA9ICggYWR2YW5jZSAtIGhlaWdodCApIC8gMjsKKyAgICAgIH0KKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICAgIHsKKyAgICAgICAgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlUmVjKiAgaW5jcjsKKyAgICAgICAgRlRfSW5jcmVtZW50YWxfTWV0cmljc1JlYyAgICAgbWV0cmljczsKKyAgICAgICAgRlRfRXJyb3IgICAgICAgICAgICAgICAgICAgICAgZXJyb3I7CisKKworICAgICAgICBpbmNyID0gZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlOworCisgICAgICAgIC8qIElmIHRoaXMgaXMgYW4gaW5jcmVtZW50YWxseSBsb2FkZWQgZm9udCBzZWUgaWYgdGhlcmUgYXJlICovCisgICAgICAgIC8qIG92ZXJyaWRpbmcgbWV0cmljcyBmb3IgdGhpcyBnbHlwaC4gICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggaW5jciAmJiBpbmNyLT5mdW5jcy0+Z2V0X2dseXBoX21ldHJpY3MgKQorICAgICAgICB7CisgICAgICAgICAgbWV0cmljcy5iZWFyaW5nX3ggPSAwOworICAgICAgICAgIG1ldHJpY3MuYmVhcmluZ195ID0gdG9wOworICAgICAgICAgIG1ldHJpY3MuYWR2YW5jZSAgID0gYWR2YW5jZTsKKworICAgICAgICAgIGVycm9yID0gaW5jci0+ZnVuY3MtPmdldF9nbHlwaF9tZXRyaWNzKCBpbmNyLT5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWV0cmljcyApOworICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgICAgICAgdG9wICAgICA9IG1ldHJpY3MuYmVhcmluZ195OworICAgICAgICAgIGFkdmFuY2UgPSBtZXRyaWNzLmFkdmFuY2U7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyogR1dXOiBEbyB2ZXJ0aWNhbCBtZXRyaWNzIGdldCBsb2FkZWQgaW5jcmVtZW50YWxseSB0b28/ICovCisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMICovCisKKyAgICAgIGdseXBoLT5saW5lYXJWZXJ0QWR2YW5jZSA9IGFkdmFuY2U7CisKKyAgICAgIC8qIHNjYWxlIHRoZSBtZXRyaWNzICovCisgICAgICBpZiAoICEoIGxvYWRlci0+bG9hZF9mbGFncyAmIEZUX0xPQURfTk9fU0NBTEUgKSApCisgICAgICB7CisgICAgICAgIHRvcCAgICAgPSBGVF9NdWxGaXgoIHRvcCwgICAgIHlfc2NhbGUgKTsKKyAgICAgICAgYWR2YW5jZSA9IEZUX011bEZpeCggYWR2YW5jZSwgeV9zY2FsZSApOworICAgICAgfQorCisgICAgICAvKiBYWFg6IGZvciBub3csIHdlIGhhdmUgbm8gYmV0dGVyIGFsZ29yaXRobSBmb3IgdGhlIGxzYiwgYnV0IGl0ICovCisgICAgICAvKiAgICAgIHNob3VsZCB3b3JrIGZpbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBnbHlwaC0+bWV0cmljcy52ZXJ0QmVhcmluZ1ggPSBnbHlwaC0+bWV0cmljcy5ob3JpQmVhcmluZ1ggLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaC0+bWV0cmljcy5ob3JpQWR2YW5jZSAvIDI7CisgICAgICBnbHlwaC0+bWV0cmljcy52ZXJ0QmVhcmluZ1kgPSB0b3A7CisgICAgICBnbHlwaC0+bWV0cmljcy52ZXJ0QWR2YW5jZSAgPSBhZHZhbmNlOworICAgIH0KKworICAgIHJldHVybiAwOworICB9CisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworCisgIHN0YXRpYyBGVF9FcnJvcgorICBsb2FkX3NiaXRfaW1hZ2UoIFRUX1NpemUgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICBUVF9HbHlwaFNsb3QgIGdseXBoLAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgRlRfSW50MzIgICAgICBsb2FkX2ZsYWdzICkKKyAgeworICAgIFRUX0ZhY2UgICAgICAgICAgICAgZmFjZTsKKyAgICBTRk5UX1NlcnZpY2UgICAgICAgIHNmbnQ7CisgICAgRlRfU3RyZWFtICAgICAgICAgICBzdHJlYW07CisgICAgRlRfRXJyb3IgICAgICAgICAgICBlcnJvcjsKKyAgICBUVF9TQml0X01ldHJpY3NSZWMgIG1ldHJpY3M7CisKKworICAgIGZhY2UgICA9IChUVF9GYWNlKWdseXBoLT5mYWNlOworICAgIHNmbnQgICA9IChTRk5UX1NlcnZpY2UpZmFjZS0+c2ZudDsKKyAgICBzdHJlYW0gPSBmYWNlLT5yb290LnN0cmVhbTsKKworICAgIGVycm9yID0gc2ZudC0+bG9hZF9zYml0X2ltYWdlKCBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLT5zdHJpa2VfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfSW50KWxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBoLT5iaXRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZXRyaWNzICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgIHsKKyAgICAgIGdseXBoLT5vdXRsaW5lLm5fcG9pbnRzICAgPSAwOworICAgICAgZ2x5cGgtPm91dGxpbmUubl9jb250b3VycyA9IDA7CisKKyAgICAgIGdseXBoLT5tZXRyaWNzLndpZHRoICA9IChGVF9Qb3MpbWV0cmljcy53aWR0aCAgPDwgNjsKKyAgICAgIGdseXBoLT5tZXRyaWNzLmhlaWdodCA9IChGVF9Qb3MpbWV0cmljcy5oZWlnaHQgPDwgNjsKKworICAgICAgZ2x5cGgtPm1ldHJpY3MuaG9yaUJlYXJpbmdYID0gKEZUX1BvcyltZXRyaWNzLmhvcmlCZWFyaW5nWCA8PCA2OworICAgICAgZ2x5cGgtPm1ldHJpY3MuaG9yaUJlYXJpbmdZID0gKEZUX1BvcyltZXRyaWNzLmhvcmlCZWFyaW5nWSA8PCA2OworICAgICAgZ2x5cGgtPm1ldHJpY3MuaG9yaUFkdmFuY2UgID0gKEZUX1BvcyltZXRyaWNzLmhvcmlBZHZhbmNlICA8PCA2OworCisgICAgICBnbHlwaC0+bWV0cmljcy52ZXJ0QmVhcmluZ1ggPSAoRlRfUG9zKW1ldHJpY3MudmVydEJlYXJpbmdYIDw8IDY7CisgICAgICBnbHlwaC0+bWV0cmljcy52ZXJ0QmVhcmluZ1kgPSAoRlRfUG9zKW1ldHJpY3MudmVydEJlYXJpbmdZIDw8IDY7CisgICAgICBnbHlwaC0+bWV0cmljcy52ZXJ0QWR2YW5jZSAgPSAoRlRfUG9zKW1ldHJpY3MudmVydEFkdmFuY2UgIDw8IDY7CisKKyAgICAgIGdseXBoLT5mb3JtYXQgPSBGVF9HTFlQSF9GT1JNQVRfQklUTUFQOworCisgICAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX1ZFUlRJQ0FMX0xBWU9VVCApCisgICAgICB7CisgICAgICAgIGdseXBoLT5iaXRtYXBfbGVmdCA9IG1ldHJpY3MudmVydEJlYXJpbmdYOworICAgICAgICBnbHlwaC0+Yml0bWFwX3RvcCAgPSBtZXRyaWNzLnZlcnRCZWFyaW5nWTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZ2x5cGgtPmJpdG1hcF9sZWZ0ID0gbWV0cmljcy5ob3JpQmVhcmluZ1g7CisgICAgICAgIGdseXBoLT5iaXRtYXBfdG9wICA9IG1ldHJpY3MuaG9yaUJlYXJpbmdZOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTICovCisKKworICBzdGF0aWMgRlRfRXJyb3IKKyAgdHRfbG9hZGVyX2luaXQoIFRUX0xvYWRlciAgICAgbG9hZGVyLAorICAgICAgICAgICAgICAgICAgVFRfU2l6ZSAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgVFRfR2x5cGhTbG90ICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgIEZUX0ludDMyICAgICAgbG9hZF9mbGFncywKKyAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgZ2x5Zl90YWJsZV9vbmx5ICkKKyAgeworICAgIFRUX0ZhY2UgICAgZmFjZTsKKyAgICBGVF9TdHJlYW0gIHN0cmVhbTsKKyNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKKyAgICBGVF9Cb29sICAgIHBlZGFudGljID0gRlRfQk9PTCggbG9hZF9mbGFncyAmIEZUX0xPQURfUEVEQU5USUMgKTsKKyNlbmRpZgorCisKKyAgICBmYWNlICAgPSAoVFRfRmFjZSlnbHlwaC0+ZmFjZTsKKyAgICBzdHJlYW0gPSBmYWNlLT5yb290LnN0cmVhbTsKKworICAgIEZUX01FTV9aRVJPKCBsb2FkZXIsIHNpemVvZiAoIFRUX0xvYWRlclJlYyApICk7CisKKyNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKKworICAgIC8qIGxvYWQgZXhlY3V0aW9uIGNvbnRleHQgKi8KKyAgICBpZiAoIElTX0hJTlRFRCggbG9hZF9mbGFncyApICYmICFnbHlmX3RhYmxlX29ubHkgKQorICAgIHsKKyAgICAgIFRUX0V4ZWNDb250ZXh0ICBleGVjOworICAgICAgRlRfQm9vbCAgICAgICAgIGdyYXlzY2FsZTsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgICAgVFRfRHJpdmVyICBkcml2ZXIgPSAoVFRfRHJpdmVyKUZUX0ZBQ0VfRFJJVkVSKCBmYWNlICk7CisKKyAgICAgIEZUX0Jvb2wgIHN1YnBpeGVsX2hpbnRpbmcgID0gRkFMU0U7CisgICAgICBGVF9Cb29sICBncmF5c2NhbGVfaGludGluZyA9IFRSVUU7CisKKyNpZiAwCisgICAgICAvKiBub3QgdXNlZCB5ZXQgKi8KKyAgICAgIEZUX0Jvb2wgIGNvbXBhdGlibGVfd2lkdGhzOworICAgICAgRlRfQm9vbCAgc3ltbWV0cmljYWxfc21vb3RoaW5nOworICAgICAgRlRfQm9vbCAgYmdyOworICAgICAgRlRfQm9vbCAgc3VicGl4ZWxfcG9zaXRpb25lZDsKKyNlbmRpZgorI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisgICAgICBGVF9Cb29sICByZWV4ZWN1dGUgPSBGQUxTRTsKKworCisgICAgICBpZiAoICFzaXplLT5jdnRfcmVhZHkgKQorICAgICAgeworICAgICAgICBGVF9FcnJvciAgZXJyb3IgPSB0dF9zaXplX3JlYWR5X2J5dGVjb2RlKCBzaXplLCBwZWRhbnRpYyApOworCisKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgfQorCisgICAgICAvKiBxdWVyeSBuZXcgZXhlY3V0aW9uIGNvbnRleHQgKi8KKyAgICAgIGV4ZWMgPSBzaXplLT5kZWJ1ZyA/IHNpemUtPmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICA6ICggKFRUX0RyaXZlcilGVF9GQUNFX0RSSVZFUiggZmFjZSApICktPmNvbnRleHQ7CisgICAgICBpZiAoICFleGVjICkKKyAgICAgICAgcmV0dXJuIEZUX1RIUk9XKCBDb3VsZF9Ob3RfRmluZF9Db250ZXh0ICk7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKworICAgICAgaWYgKCBkcml2ZXItPmludGVycHJldGVyX3ZlcnNpb24gPT0gVFRfSU5URVJQUkVURVJfVkVSU0lPTl8zOCApCisgICAgICB7CisgICAgICAgIHN1YnBpeGVsX2hpbnRpbmcgPSBGVF9CT09MKCAoIEZUX0xPQURfVEFSR0VUX01PREUoIGxvYWRfZmxhZ3MgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBGVF9SRU5ERVJfTU9ERV9NT05PICkgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQSF9PUFRJT05fU0VUX1NVQlBJWEVMICAgICAgICAgICAgICk7CisKKyAgICAgICAgaWYgKCBzdWJwaXhlbF9oaW50aW5nICkKKyAgICAgICAgICBncmF5c2NhbGUgPSBncmF5c2NhbGVfaGludGluZyA9IEZBTFNFOworICAgICAgICBlbHNlIGlmICggU1BIX09QVElPTl9TRVRfR1JBWVNDQUxFICkKKyAgICAgICAgeworICAgICAgICAgIGdyYXlzY2FsZSA9IGdyYXlzY2FsZV9oaW50aW5nID0gVFJVRTsKKyAgICAgICAgICBzdWJwaXhlbF9oaW50aW5nICAgICAgICAgICAgICA9IEZBTFNFOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICBncmF5c2NhbGUgPSBncmF5c2NhbGVfaGludGluZyA9IEZBTFNFOworCisgICAgICAgIGlmICggRlRfSVNfVFJJQ0tZKCBnbHlwaC0+ZmFjZSApICkKKyAgICAgICAgICBzdWJwaXhlbF9oaW50aW5nID0gZ3JheXNjYWxlX2hpbnRpbmcgPSBGQUxTRTsKKworICAgICAgICBleGVjLT5pZ25vcmVfeF9tb2RlICAgICAgPSBzdWJwaXhlbF9oaW50aW5nIHx8IGdyYXlzY2FsZV9oaW50aW5nOworICAgICAgICBleGVjLT5yYXN0ZXJpemVyX3ZlcnNpb24gPSBTUEhfT1BUSU9OX1NFVF9SQVNURVJJWkVSX1ZFUlNJT047CisgICAgICAgIGlmICggZXhlYy0+c3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX1JBU1RFUklaRVJfMzUgKQorICAgICAgICAgIGV4ZWMtPnJhc3Rlcml6ZXJfdmVyc2lvbiA9IFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzU7CisKKyNpZiAxCisgICAgICAgIGV4ZWMtPmNvbXBhdGlibGVfd2lkdGhzICAgICA9IFNQSF9PUFRJT05fU0VUX0NPTVBBVElCTEVfV0lEVEhTOworICAgICAgICBleGVjLT5zeW1tZXRyaWNhbF9zbW9vdGhpbmcgPSBGQUxTRTsKKyAgICAgICAgZXhlYy0+YmdyICAgICAgICAgICAgICAgICAgID0gRkFMU0U7CisgICAgICAgIGV4ZWMtPnN1YnBpeGVsX3Bvc2l0aW9uZWQgICA9IFRSVUU7CisjZWxzZSAvKiAwICovCisgICAgICAgIGV4ZWMtPmNvbXBhdGlibGVfd2lkdGhzID0KKyAgICAgICAgICBGVF9CT09MKCBGVF9MT0FEX1RBUkdFVF9NT0RFKCBsb2FkX2ZsYWdzICkgIT0KKyAgICAgICAgICAgICAgICAgICBUVF9MT0FEX0NPTVBBVElCTEVfV0lEVEhTICk7CisgICAgICAgIGV4ZWMtPnN5bW1ldHJpY2FsX3Ntb290aGluZyA9CisgICAgICAgICAgRlRfQk9PTCggRlRfTE9BRF9UQVJHRVRfTU9ERSggbG9hZF9mbGFncyApICE9CisgICAgICAgICAgICAgICAgICAgVFRfTE9BRF9TWU1NRVRSSUNBTF9TTU9PVEhJTkcgKTsKKyAgICAgICAgZXhlYy0+YmdyID0KKyAgICAgICAgICBGVF9CT09MKCBGVF9MT0FEX1RBUkdFVF9NT0RFKCBsb2FkX2ZsYWdzICkgIT0KKyAgICAgICAgICAgICAgICAgICBUVF9MT0FEX0JHUiApOworICAgICAgICBleGVjLT5zdWJwaXhlbF9wb3NpdGlvbmVkID0KKyAgICAgICAgICBGVF9CT09MKCBGVF9MT0FEX1RBUkdFVF9NT0RFKCBsb2FkX2ZsYWdzICkgIT0KKyAgICAgICAgICAgICAgICAgICBUVF9MT0FEX1NVQlBJWEVMX1BPU0lUSU9ORUQgKTsKKyNlbmRpZiAvKiAwICovCisKKyAgICAgIH0KKyAgICAgIGVsc2UKKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisgICAgICB7CisgICAgICAgIGdyYXlzY2FsZSA9IEZUX0JPT0woIEZUX0xPQURfVEFSR0VUX01PREUoIGxvYWRfZmxhZ3MgKSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SRU5ERVJfTU9ERV9NT05PICk7CisgICAgICB9CisKKyAgICAgIFRUX0xvYWRfQ29udGV4dCggZXhlYywgZmFjZSwgc2l6ZSApOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisKKyAgICAgIGlmICggZHJpdmVyLT5pbnRlcnByZXRlcl92ZXJzaW9uID09IFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzggKQorICAgICAgeworICAgICAgICAvKiBhIGNoYW5nZSBmcm9tIG1vbm8gdG8gc3VicGl4ZWwgcmVuZGVyaW5nIChhbmQgdmljZSB2ZXJzYSkgKi8KKyAgICAgICAgLyogcmVxdWlyZXMgYSByZS1leGVjdXRpb24gb2YgdGhlIENWVCBwcm9ncmFtICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggc3VicGl4ZWxfaGludGluZyAhPSBleGVjLT5zdWJwaXhlbF9oaW50aW5nICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1RSQUNFNCgoICJ0dF9sb2FkZXJfaW5pdDogc3VicGl4ZWwgaGludGluZyBjaGFuZ2UsIgorICAgICAgICAgICAgICAgICAgICAgICIgcmUtZXhlY3V0aW5nIGBwcmVwJyB0YWJsZVxuIiApKTsKKworICAgICAgICAgIGV4ZWMtPnN1YnBpeGVsX2hpbnRpbmcgPSBzdWJwaXhlbF9oaW50aW5nOworICAgICAgICAgIHJlZXhlY3V0ZSAgICAgICAgICAgICAgPSBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgLyogYSBjaGFuZ2UgZnJvbSBtb25vIHRvIGdyYXlzY2FsZSByZW5kZXJpbmcgKGFuZCB2aWNlIHZlcnNhKSAqLworICAgICAgICAvKiByZXF1aXJlcyBhIHJlLWV4ZWN1dGlvbiBvZiB0aGUgQ1ZUIHByb2dyYW0gICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggZ3JheXNjYWxlICE9IGV4ZWMtPmdyYXlzY2FsZV9oaW50aW5nICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1RSQUNFNCgoICJ0dF9sb2FkZXJfaW5pdDogZ3JheXNjYWxlIGhpbnRpbmcgY2hhbmdlLCIKKyAgICAgICAgICAgICAgICAgICAgICAiIHJlLWV4ZWN1dGluZyBgcHJlcCcgdGFibGVcbiIgKSk7CisKKyAgICAgICAgICBleGVjLT5ncmF5c2NhbGVfaGludGluZyA9IGdyYXlzY2FsZV9oaW50aW5nOworICAgICAgICAgIHJlZXhlY3V0ZSAgICAgICAgICAgICAgID0gVFJVRTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICAgIHsKKyAgICAgICAgLyogYSBjaGFuZ2UgZnJvbSBtb25vIHRvIGdyYXlzY2FsZSByZW5kZXJpbmcgKGFuZCB2aWNlIHZlcnNhKSAqLworICAgICAgICAvKiByZXF1aXJlcyBhIHJlLWV4ZWN1dGlvbiBvZiB0aGUgQ1ZUIHByb2dyYW0gICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggZ3JheXNjYWxlICE9IGV4ZWMtPmdyYXlzY2FsZSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9UUkFDRTQoKCAidHRfbG9hZGVyX2luaXQ6IGdyYXlzY2FsZSBjaGFuZ2UsIgorICAgICAgICAgICAgICAgICAgICAgICIgcmUtZXhlY3V0aW5nIGBwcmVwJyB0YWJsZVxuIiApKTsKKworICAgICAgICAgIGV4ZWMtPmdyYXlzY2FsZSA9IGdyYXlzY2FsZTsKKyAgICAgICAgICByZWV4ZWN1dGUgICAgICAgPSBUUlVFOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmICggcmVleGVjdXRlICkKKyAgICAgIHsKKyAgICAgICAgRlRfVUludCAgaTsKKworCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgc2l6ZS0+Y3Z0X3NpemU7IGkrKyApCisgICAgICAgICAgc2l6ZS0+Y3Z0W2ldID0gRlRfTXVsRml4KCBmYWNlLT5jdnRbaV0sIHNpemUtPnR0bWV0cmljcy5zY2FsZSApOworICAgICAgICB0dF9zaXplX3J1bl9wcmVwKCBzaXplLCBwZWRhbnRpYyApOworICAgICAgfQorCisgICAgICAvKiBzZWUgd2hldGhlciB0aGUgY3Z0IHByb2dyYW0gaGFzIGRpc2FibGVkIGhpbnRpbmcgKi8KKyAgICAgIGlmICggZXhlYy0+R1MuaW5zdHJ1Y3RfY29udHJvbCAmIDEgKQorICAgICAgICBsb2FkX2ZsYWdzIHw9IEZUX0xPQURfTk9fSElOVElORzsKKworICAgICAgLyogbG9hZCBkZWZhdWx0IGdyYXBoaWNzIHN0YXRlIC0tIGlmIG5lZWRlZCAqLworICAgICAgaWYgKCBleGVjLT5HUy5pbnN0cnVjdF9jb250cm9sICYgMiApCisgICAgICAgIGV4ZWMtPkdTID0gdHRfZGVmYXVsdF9ncmFwaGljc19zdGF0ZTsKKworICAgICAgZXhlYy0+cGVkYW50aWNfaGludGluZyA9IEZUX0JPT0woIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX1BFREFOVElDICk7CisgICAgICBsb2FkZXItPmV4ZWMgPSBleGVjOworICAgICAgbG9hZGVyLT5pbnN0cnVjdGlvbnMgPSBleGVjLT5nbHlwaEluczsKKyAgICB9CisKKyNlbmRpZiAvKiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgKi8KKworICAgIC8qIHNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZ2x5cGggdGFibGUgLS0gZm9yIFR5cGUgNDIgZm9udHMgICAgICovCisgICAgLyogdGhlIHRhYmxlIG1pZ2h0IGJlIGFjY2Vzc2VkIGZyb20gYSBQb3N0c2NyaXB0IHN0cmVhbSBvciBzb21ldGhpbmcgKi8KKyAgICAvKiBlbHNlLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorCisgICAgaWYgKCBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UgKQorICAgICAgbG9hZGVyLT5nbHlmX29mZnNldCA9IDA7CisgICAgZWxzZQorCisjZW5kaWYKKworICAgIHsKKyAgICAgIEZUX0Vycm9yICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfZ2x5Ziwgc3RyZWFtLCAwICk7CisKKworICAgICAgaWYgKCBGVF9FUlJfRVEoIGVycm9yLCBUYWJsZV9NaXNzaW5nICkgKQorICAgICAgICBsb2FkZXItPmdseWZfb2Zmc2V0ID0gMDsKKyAgICAgIGVsc2UgaWYgKCBlcnJvciApCisgICAgICB7CisgICAgICAgIEZUX0VSUk9SKCggInR0X2xvYWRlcl9pbml0OiBjb3VsZCBub3QgYWNjZXNzIGdseXBoIHRhYmxlXG4iICkpOworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGxvYWRlci0+Z2x5Zl9vZmZzZXQgPSBGVF9TVFJFQU1fUE9TKCk7CisgICAgfQorCisgICAgLyogZ2V0IGZhY2UncyBnbHlwaCBsb2FkZXIgKi8KKyAgICBpZiAoICFnbHlmX3RhYmxlX29ubHkgKQorICAgIHsKKyAgICAgIEZUX0dseXBoTG9hZGVyICBnbG9hZGVyID0gZ2x5cGgtPmludGVybmFsLT5sb2FkZXI7CisKKworICAgICAgRlRfR2x5cGhMb2FkZXJfUmV3aW5kKCBnbG9hZGVyICk7CisgICAgICBsb2FkZXItPmdsb2FkZXIgPSBnbG9hZGVyOworICAgIH0KKworICAgIGxvYWRlci0+bG9hZF9mbGFncyA9IGxvYWRfZmxhZ3M7CisKKyAgICBsb2FkZXItPmZhY2UgICA9IChGVF9GYWNlKWZhY2U7CisgICAgbG9hZGVyLT5zaXplICAgPSAoRlRfU2l6ZSlzaXplOworICAgIGxvYWRlci0+Z2x5cGggID0gKEZUX0dseXBoU2xvdClnbHlwaDsKKyAgICBsb2FkZXItPnN0cmVhbSA9IHN0cmVhbTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0xvYWRfR2x5cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgZnVuY3Rpb24gdXNlZCB0byBsb2FkIGEgc2luZ2xlIGdseXBoIHdpdGhpbiBhIGdpdmVuIGdseXBoIHNsb3QsICAqLworICAvKiAgICBmb3IgYSBnaXZlbiBzaXplLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaCAgICAgICA6OiBBIGhhbmRsZSB0byBhIHRhcmdldCBzbG90IG9iamVjdCB3aGVyZSB0aGUgZ2x5cGggICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgd2lsbCBiZSBsb2FkZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaXplICAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugc2l6ZSBhdCB3aGljaCB0aGUgZ2x5cGggKi8KKyAgLyogICAgICAgICAgICAgICAgICAgbXVzdCBiZSBzY2FsZWQvbG9hZGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBnbHlwaF9pbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIGdseXBoIGluIHRoZSBmb250IGZpbGUuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGxvYWRfZmxhZ3MgIDo6IEEgZmxhZyBpbmRpY2F0aW5nIHdoYXQgdG8gbG9hZCBmb3IgdGhpcyBnbHlwaC4gIFRoZSAqLworICAvKiAgICAgICAgICAgICAgICAgICBGVF9MT0FEX1hYWCBjb25zdGFudHMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgZ2x5cGggbG9hZGluZyBwcm9jZXNzIChlLmcuLCB3aGV0aGVyIHRoZSBvdXRsaW5lICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSBzY2FsZWQsIHdoZXRoZXIgdG8gbG9hZCBiaXRtYXBzIG9yIG5vdCwgICAqLworICAvKiAgICAgICAgICAgICAgICAgICB3aGV0aGVyIHRvIGhpbnQgdGhlIG91dGxpbmUsIGV0YykuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBUVF9Mb2FkX0dseXBoKCBUVF9TaXplICAgICAgIHNpemUsCisgICAgICAgICAgICAgICAgIFRUX0dseXBoU2xvdCAgZ2x5cGgsCisgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgIEZUX0ludDMyICAgICAgbG9hZF9mbGFncyApCisgIHsKKyAgICBGVF9FcnJvciAgICAgIGVycm9yOworICAgIFRUX0xvYWRlclJlYyAgbG9hZGVyOworCisKKyAgICBlcnJvciA9IEZUX0Vycl9PazsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fRU1CRURERURfQklUTUFQUworCisgICAgLyogdHJ5IHRvIGxvYWQgZW1iZWRkZWQgYml0bWFwIGlmIGFueSAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIFhYWDogVGhlIGNvbnZlbnRpb24gc2hvdWxkIGJlIGVtcGhhc2l6ZWQgaW4gICAgICovCisgICAgLyogICAgICB0aGUgZG9jdW1lbnRzIGJlY2F1c2UgaXQgY2FuIGJlIGNvbmZ1c2luZy4gKi8KKyAgICBpZiAoIHNpemUtPnN0cmlrZV9pbmRleCAhPSAweEZGRkZGRkZGVUwgICAgICAmJgorICAgICAgICAgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19CSVRNQVAgKSA9PSAwICkKKyAgICB7CisgICAgICBlcnJvciA9IGxvYWRfc2JpdF9pbWFnZSggc2l6ZSwgZ2x5cGgsIGdseXBoX2luZGV4LCBsb2FkX2ZsYWdzICk7CisgICAgICBpZiAoICFlcnJvciApCisgICAgICB7CisgICAgICAgIGlmICggRlRfSVNfU0NBTEFCTEUoIGdseXBoLT5mYWNlICkgKQorICAgICAgICB7CisgICAgICAgICAgLyogZm9yIHRoZSBiYm94IHdlIG5lZWQgdGhlIGhlYWRlciBvbmx5ICovCisgICAgICAgICAgKHZvaWQpdHRfbG9hZGVyX2luaXQoICZsb2FkZXIsIHNpemUsIGdseXBoLCBsb2FkX2ZsYWdzLCBUUlVFICk7CisgICAgICAgICAgKHZvaWQpbG9hZF90cnVldHlwZV9nbHlwaCggJmxvYWRlciwgZ2x5cGhfaW5kZXgsIDAsIFRSVUUgKTsKKyAgICAgICAgICBnbHlwaC0+bGluZWFySG9yaUFkdmFuY2UgPSBsb2FkZXIubGluZWFyOworICAgICAgICAgIGdseXBoLT5saW5lYXJWZXJ0QWR2YW5jZSA9IGxvYWRlci50b3BfYmVhcmluZyArIGxvYWRlci5iYm94LnlNYXggLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhZHZhbmNlOworCisgICAgICAgICAgLyogc2FuaXR5IGNoZWNrOiBpZiBgaG9yaUFkdmFuY2UnIGluIHRoZSBzYml0IG1ldHJpYyAqLworICAgICAgICAgIC8qIHN0cnVjdHVyZSBpc24ndCBzZXQsIHVzZSBgbGluZWFySG9yaUFkdmFuY2UnICAgICAgKi8KKyAgICAgICAgICBpZiAoICFnbHlwaC0+bWV0cmljcy5ob3JpQWR2YW5jZSAmJiBnbHlwaC0+bGluZWFySG9yaUFkdmFuY2UgKQorICAgICAgICAgICAgZ2x5cGgtPm1ldHJpY3MuaG9yaUFkdmFuY2UgPQorICAgICAgICAgICAgICBGVF9NdWxGaXgoIGdseXBoLT5saW5lYXJIb3JpQWR2YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLT5yb290Lm1ldHJpY3MueF9zY2FsZSApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgICAgIH0KKyAgICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX0VNQkVEREVEX0JJVE1BUFMgKi8KKworICAgIC8qIGlmIEZUX0xPQURfTk9fU0NBTEUgaXMgbm90IHNldCwgYHR0bWV0cmljcycgbXVzdCBiZSB2YWxpZCAqLworICAgIGlmICggISggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fU0NBTEUgKSAmJiAhc2l6ZS0+dHRtZXRyaWNzLnZhbGlkICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9TaXplX0hhbmRsZSApOworCisgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9TQklUU19PTkxZICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9Bcmd1bWVudCApOworCisgICAgZXJyb3IgPSB0dF9sb2FkZXJfaW5pdCggJmxvYWRlciwgc2l6ZSwgZ2x5cGgsIGxvYWRfZmxhZ3MsIEZBTFNFICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICBnbHlwaC0+Zm9ybWF0ICAgICAgICA9IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FOworICAgIGdseXBoLT5udW1fc3ViZ2x5cGhzID0gMDsKKyAgICBnbHlwaC0+b3V0bGluZS5mbGFncyA9IDA7CisKKyAgICAvKiBtYWluIGxvYWRpbmcgbG9vcCAqLworICAgIGVycm9yID0gbG9hZF90cnVldHlwZV9nbHlwaCggJmxvYWRlciwgZ2x5cGhfaW5kZXgsIDAsIEZBTFNFICk7CisgICAgaWYgKCAhZXJyb3IgKQorICAgIHsKKyAgICAgIGlmICggZ2x5cGgtPmZvcm1hdCA9PSBGVF9HTFlQSF9GT1JNQVRfQ09NUE9TSVRFICkKKyAgICAgIHsKKyAgICAgICAgZ2x5cGgtPm51bV9zdWJnbHlwaHMgPSBsb2FkZXIuZ2xvYWRlci0+YmFzZS5udW1fc3ViZ2x5cGhzOworICAgICAgICBnbHlwaC0+c3ViZ2x5cGhzICAgICA9IGxvYWRlci5nbG9hZGVyLT5iYXNlLnN1YmdseXBoczsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZ2x5cGgtPm91dGxpbmUgICAgICAgID0gbG9hZGVyLmdsb2FkZXItPmJhc2Uub3V0bGluZTsKKyAgICAgICAgZ2x5cGgtPm91dGxpbmUuZmxhZ3MgJj0gfkZUX09VVExJTkVfU0lOR0xFX1BBU1M7CisKKyAgICAgICAgLyogVHJhbnNsYXRlIGFycmF5IHNvIHRoYXQgKDAsMCkgaXMgdGhlIGdseXBoJ3Mgb3JpZ2luLiAgTm90ZSAgKi8KKyAgICAgICAgLyogdGhhdCB0aGlzIGJlaGF2aW91ciBpcyBpbmRlcGVuZGVudCBvbiB0aGUgdmFsdWUgb2YgYml0IDEgb2YgKi8KKyAgICAgICAgLyogdGhlIGBmbGFncycgZmllbGQgaW4gdGhlIGBoZWFkJyB0YWJsZSAtLSBhdCBsZWFzdCBtYWpvciAgICAgKi8KKyAgICAgICAgLyogYXBwbGljYXRpb25zIGxpa2UgQWNyb3JlYWQgaW5kaWNhdGUgdGhhdC4gICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBsb2FkZXIucHAxLnggKQorICAgICAgICAgIEZUX091dGxpbmVfVHJhbnNsYXRlKCAmZ2x5cGgtPm91dGxpbmUsIC1sb2FkZXIucHAxLngsIDAgKTsKKyAgICAgIH0KKworI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorCisgICAgICBpZiAoIElTX0hJTlRFRCggbG9hZF9mbGFncyApICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBsb2FkZXIuZXhlYy0+R1Muc2Nhbl9jb250cm9sICkKKyAgICAgICAgeworICAgICAgICAgIC8qIGNvbnZlcnQgc2NhbiBjb252ZXJzaW9uIG1vZGUgdG8gRlRfT1VUTElORV9YWFggZmxhZ3MgKi8KKyAgICAgICAgICBzd2l0Y2ggKCBsb2FkZXIuZXhlYy0+R1Muc2Nhbl90eXBlICkKKyAgICAgICAgICB7CisgICAgICAgICAgY2FzZSAwOiAvKiBzaW1wbGUgZHJvcC1vdXRzIGluY2x1ZGluZyBzdHVicyAqLworICAgICAgICAgICAgZ2x5cGgtPm91dGxpbmUuZmxhZ3MgfD0gRlRfT1VUTElORV9JTkNMVURFX1NUVUJTOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAxOiAvKiBzaW1wbGUgZHJvcC1vdXRzIGV4Y2x1ZGluZyBzdHVicyAqLworICAgICAgICAgICAgLyogbm90aGluZzsgaXQncyB0aGUgZGVmYXVsdCByZW5kZXJpbmcgbW9kZSAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSA0OiAvKiBzbWFydCBkcm9wLW91dHMgaW5jbHVkaW5nIHN0dWJzICovCisgICAgICAgICAgICBnbHlwaC0+b3V0bGluZS5mbGFncyB8PSBGVF9PVVRMSU5FX1NNQVJUX0RST1BPVVRTIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX09VVExJTkVfSU5DTFVERV9TVFVCUzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgNTogLyogc21hcnQgZHJvcC1vdXRzIGV4Y2x1ZGluZyBzdHVicyAgKi8KKyAgICAgICAgICAgIGdseXBoLT5vdXRsaW5lLmZsYWdzIHw9IEZUX09VVExJTkVfU01BUlRfRFJPUE9VVFM7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGRlZmF1bHQ6IC8qIG5vIGRyb3Atb3V0IGNvbnRyb2wgKi8KKyAgICAgICAgICAgIGdseXBoLT5vdXRsaW5lLmZsYWdzIHw9IEZUX09VVExJTkVfSUdOT1JFX0RST1BPVVRTOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICBnbHlwaC0+b3V0bGluZS5mbGFncyB8PSBGVF9PVVRMSU5FX0lHTk9SRV9EUk9QT1VUUzsKKyAgICAgIH0KKworI2VuZGlmIC8qIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUiAqLworCisgICAgICBjb21wdXRlX2dseXBoX21ldHJpY3MoICZsb2FkZXIsIGdseXBoX2luZGV4ICk7CisgICAgfQorCisgICAgLyogU2V0IHRoZSBgaGlnaCBwcmVjaXNpb24nIGJpdCBmbGFnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogVGhpcyBpcyBfY3JpdGljYWxfIHRvIGdldCBjb3JyZWN0IG91dHB1dCBmb3IgbW9ub2Nocm9tZSAgICAgICovCisgICAgLyogVHJ1ZVR5cGUgZ2x5cGhzIGF0IGFsbCBzaXplcyB1c2luZyB0aGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIuICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCAhKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19TQ0FMRSApICYmCisgICAgICAgICBzaXplLT5yb290Lm1ldHJpY3MueV9wcGVtIDwgMjQgICAgICkKKyAgICAgIGdseXBoLT5vdXRsaW5lLmZsYWdzIHw9IEZUX09VVExJTkVfSElHSF9QUkVDSVNJT047CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRnbG9hZC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dGdsb2FkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVhNjhmOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRnbG9hZC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0Z2xvYWQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcnVlVHlwZSBHbHlwaCBMb2FkZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA2LCAyMDA4LCAyMDExIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1RUR0xPQURfSF9fCisjZGVmaW5lIF9fVFRHTE9BRF9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgInR0b2Jqcy5oIgorCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisjaW5jbHVkZSAidHRpbnRlcnAuaCIKKyNlbmRpZgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBUVF9Jbml0X0dseXBoX0xvYWRpbmcoIFRUX0ZhY2UgIGZhY2UgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIFRUX0dldF9ITWV0cmljcyggVFRfRmFjZSAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgRlRfU2hvcnQqICAgbHNiLAorICAgICAgICAgICAgICAgICAgIEZUX1VTaG9ydCogIGF3ICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBUVF9HZXRfVk1ldHJpY3MoIFRUX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgaWR4LAorICAgICAgICAgICAgICAgICAgIEZUX1Nob3J0KiAgIHRzYiwKKyAgICAgICAgICAgICAgICAgICBGVF9VU2hvcnQqICBhaCApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIFRUX0xvYWRfR2x5cGgoIFRUX1NpemUgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgVFRfR2x5cGhTbG90ICBnbHlwaCwKKyAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgRlRfSW50MzIgICAgICBsb2FkX2ZsYWdzICk7CisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UVEdMT0FEX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dGd4dmFyLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0Z3h2YXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTllNjMyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dGd4dmFyLmMKQEAgLTAsMCArMSwxNTMyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dGd4dmFyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHJ1ZVR5cGUgR1ggRm9udCBWYXJpYXRpb24gbG9hZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDQtMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIFdlcm5lciBMZW1iZXJnLCBhbmQgR2VvcmdlIFdpbGxpYW1zLiAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBcHBsZSBkb2N1bWVudHMgdGhlIGBmdmFyJywgYGd2YXInLCBgY3ZhcicsIGFuZCBgYXZhcicgdGFibGVzIGF0ICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vZm9udHMvVFRSZWZNYW4vUk0wNi9DaGFwNltmZ2NhXXZhci5odG1sICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGRvY3VtZW50YXRpb24gZm9yIGBmdmFyJyBpcyBpbmNvbnNpc3RlbnQuICBBdCBvbmUgcG9pbnQgaXQgc2F5cyAgICovCisgIC8qIHRoYXQgYGNvdW50U2l6ZVBhaXJzJyBzaG91bGQgYmUgMywgYXQgYW5vdGhlciBwb2ludCAyLiAgSXQgc2hvdWxkICAgICAqLworICAvKiBiZSAyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBkb2N1bWVudGF0aW9uIGZvciBgZ3ZhcicgaXMgbm90IGludGVsbGlnaWJsZTsgYGN2YXInIHJlZmVycyB5b3UgICAqLworICAvKiB0byBgZ3ZhcicgYW5kIGlzIHRodXMgYWxzbyBpbmNvbXByZWhlbnNpYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBkb2N1bWVudGF0aW9uIGZvciBgYXZhcicgYXBwZWFycyBjb3JyZWN0LCBidXQgQXBwbGUgaGFzIG5vIGZvbnRzICAqLworICAvKiB3aXRoIGFuIGBhdmFyJyB0YWJsZSwgc28gaXQgaXMgaGFyZCB0byB0ZXN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE1hbnkgdGhhbmtzIHRvIEpvaG4gSmVua2lucyAoYXQgQXBwbGUpIGluIGZpZ3VyaW5nIHRoaXMgb3V0LiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEFwcGxlJ3MgYGtlcm4nIHRhYmxlIGhhcyBzb21lIHJlZmVyZW5jZXMgdG8gdHVwbGUgaW5kaWNlcywgYnV0IGFzICAgICAqLworICAvKiB0aGVyZSBpcyBubyBpbmRpY2F0aW9uIHdoZXJlIHRoZXNlIGluZGljZXMgYXJlIGRlZmluZWQsIG5vciBob3cgdG8gICAgKi8KKyAgLyogaW50ZXJwb2xhdGUgdGhlIGtlcm5pbmcgdmFsdWVzIChkaWZmZXJlbnQgdHVwbGVzIGhhdmUgZGlmZmVyZW50ICAgICAgICovCisgIC8qIGNsYXNzZXMpIHRoaXMgaXNzdWUgaXMgaWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRtbS5oIgorCisjaW5jbHVkZSAidHRwbG9hZC5oIgorI2luY2x1ZGUgInR0Z3h2YXIuaCIKKworI2luY2x1ZGUgInR0ZXJyb3JzLmgiCisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKworCisjZGVmaW5lIEZUX1N0cmVhbV9GVGVsbCggc3RyZWFtICkgIFwKKyAgICAgICAgICAoRlRfVUxvbmcpKCAoc3RyZWFtKS0+Y3Vyc29yIC0gKHN0cmVhbSktPmJhc2UgKQorI2RlZmluZSBGVF9TdHJlYW1fU2Vla1NldCggc3RyZWFtLCBvZmYgKSBcCisgICAgICAgICAgKCAoc3RyZWFtKS0+Y3Vyc29yID0gKHN0cmVhbSktPmJhc2UgKyAob2ZmKSApCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV90dGd4dmFyCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsIFJvdXRpbmVzICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEFMTF9QT0lOVFMgaXMgdXNlZCBpbiBgZnRfdmFyX3JlYWRwYWNrZWRwb2ludHMnLiAgSXQgICAgICAgICovCisgIC8qIGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIGEgZGVsdGEgZm9yIGV2ZXJ5IHBvaW50IHdpdGhvdXQgbmVlZGluZyB0byAgICAqLworICAvKiBlbnVtZXJhdGUgYWxsIG9mIHRoZW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgLyogZW5zdXJlIHRoYXQgdmFsdWUgYDAnIGhhcyB0aGUgc2FtZSB3aWR0aCBhcyBhIHBvaW50ZXIgKi8KKyNkZWZpbmUgQUxMX1BPSU5UUyAgKEZUX1VTaG9ydCopfihGVF9QdHJEaXN0KTAKKworCisjZGVmaW5lIEdYX1BUX1BPSU5UU19BUkVfV09SRFMgICAgICAweDgwCisjZGVmaW5lIEdYX1BUX1BPSU5UX1JVTl9DT1VOVF9NQVNLICAweDdGCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF92YXJfcmVhZHBhY2tlZHBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSZWFkIGEgc2V0IG9mIHBvaW50cyB0byB3aGljaCB0aGUgZm9sbG93aW5nIGRlbHRhcyB3aWxsIGFwcGx5LiAgICAgKi8KKyAgLyogICAgUG9pbnRzIGFyZSBwYWNrZWQgd2l0aCBhIHJ1biBsZW5ndGggZW5jb2RpbmcuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgIDo6IFRoZSBkYXRhIHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8T3V0cHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcG9pbnRfY250IDo6IFRoZSBudW1iZXIgb2YgcG9pbnRzIHJlYWQuICBBIHplcm8gdmFsdWUgbWVhbnMgdGhhdCAgICovCisgIC8qICAgICAgICAgICAgICAgICBhbGwgcG9pbnRzIGluIHRoZSBnbHlwaCB3aWxsIGJlIGFmZmVjdGVkLCB3aXRob3V0ICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgZW51bWVyYXRpbmcgdGhlbSBpbmRpdmlkdWFsbHkuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBbiBhcnJheSBvZiBGVF9VU2hvcnQgY29udGFpbmluZyB0aGUgYWZmZWN0ZWQgcG9pbnRzIG9yIHRoZSAgICAgICAgKi8KKyAgLyogICAgc3BlY2lhbCB2YWx1ZSBBTExfUE9JTlRTLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfVVNob3J0KgorICBmdF92YXJfcmVhZHBhY2tlZHBvaW50cyggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgKnBvaW50X2NudCApCisgIHsKKyAgICBGVF9VU2hvcnQgKnBvaW50cyA9IE5VTEw7CisgICAgRlRfSW50ICAgICBuOworICAgIEZUX0ludCAgICAgcnVuY250OworICAgIEZUX0ludCAgICAgaTsKKyAgICBGVF9JbnQgICAgIGo7CisgICAgRlRfSW50ICAgICBmaXJzdDsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIEZUX0Vycm9yICAgZXJyb3IgID0gRlRfRXJyX09rOworCisgICAgRlRfVU5VU0VEKCBlcnJvciApOworCisKKyAgICAqcG9pbnRfY250ID0gbiA9IEZUX0dFVF9CWVRFKCk7CisgICAgaWYgKCBuID09IDAgKQorICAgICAgcmV0dXJuIEFMTF9QT0lOVFM7CisKKyAgICBpZiAoIG4gJiBHWF9QVF9QT0lOVFNfQVJFX1dPUkRTICkKKyAgICAgIG4gPSBGVF9HRVRfQllURSgpIHwgKCAoIG4gJiBHWF9QVF9QT0lOVF9SVU5fQ09VTlRfTUFTSyApIDw8IDggKTsKKworICAgIGlmICggRlRfTkVXX0FSUkFZKCBwb2ludHMsIG4gKSApCisgICAgICByZXR1cm4gTlVMTDsKKworICAgIGkgPSAwOworICAgIHdoaWxlICggaSA8IG4gKQorICAgIHsKKyAgICAgIHJ1bmNudCA9IEZUX0dFVF9CWVRFKCk7CisgICAgICBpZiAoIHJ1bmNudCAmIEdYX1BUX1BPSU5UU19BUkVfV09SRFMgKQorICAgICAgeworICAgICAgICBydW5jbnQgPSBydW5jbnQgJiBHWF9QVF9QT0lOVF9SVU5fQ09VTlRfTUFTSzsKKyAgICAgICAgZmlyc3QgID0gcG9pbnRzW2krK10gPSBGVF9HRVRfVVNIT1JUKCk7CisKKyAgICAgICAgaWYgKCBydW5jbnQgPCAxIHx8IGkgKyBydW5jbnQgPj0gbiApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIC8qIGZpcnN0IHBvaW50IG5vdCBpbmNsdWRlZCBpbiBydW5jb3VudCAqLworICAgICAgICBmb3IgKCBqID0gMDsgaiA8IHJ1bmNudDsgKytqICkKKyAgICAgICAgICBwb2ludHNbaSsrXSA9IChGVF9VU2hvcnQpKCBmaXJzdCArPSBGVF9HRVRfVVNIT1JUKCkgKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZmlyc3QgPSBwb2ludHNbaSsrXSA9IEZUX0dFVF9CWVRFKCk7CisKKyAgICAgICAgaWYgKCBydW5jbnQgPCAxIHx8IGkgKyBydW5jbnQgPj0gbiApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgcnVuY250OyArK2ogKQorICAgICAgICAgIHBvaW50c1tpKytdID0gKEZUX1VTaG9ydCkoIGZpcnN0ICs9IEZUX0dFVF9CWVRFKCkgKTsKKyAgICAgIH0KKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gcG9pbnRzOworICB9CisKKworICBlbnVtCisgIHsKKyAgICBHWF9EVF9ERUxUQVNfQVJFX1pFUk8gICAgICA9IDB4ODAsCisgICAgR1hfRFRfREVMVEFTX0FSRV9XT1JEUyAgICAgPSAweDQwLAorICAgIEdYX0RUX0RFTFRBX1JVTl9DT1VOVF9NQVNLID0gMHgzRgorICB9OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfdmFyX3JlYWRwYWNrZWRkZWx0YXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmVhZCBhIHNldCBvZiBkZWx0YXMuICBUaGVzZSBhcmUgcGFja2VkIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gICovCisgIC8qICAgIHBvaW50cy4gIEluIHBhcnRpY3VsYXIgdGhlcmUgaXMgbm8gb3ZlcmFsbCBjb3VudC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSAgICA6OiBUaGUgZGF0YSBzdHJlYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGVsdGFfY250IDo6IFRoZSBudW1iZXIgb2YgdG8gYmUgcmVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQW4gYXJyYXkgb2YgRlRfU2hvcnQgY29udGFpbmluZyB0aGUgZGVsdGFzIGZvciB0aGUgYWZmZWN0ZWQgICAgICAgICovCisgIC8qICAgIHBvaW50cy4gIChUaGlzIG9ubHkgZ2V0cyB0aGUgZGVsdGFzIGZvciBvbmUgZGltZW5zaW9uLiAgSXQgd2lsbCAgICAqLworICAvKiAgICBnZW5lcmFsbHkgYmUgY2FsbGVkIHR3aWNlLCBvbmNlIGZvciB4LCBvbmNlIGZvciB5LiAgV2hlbiB1c2VkIGluICAgKi8KKyAgLyogICAgY3Z0IHRhYmxlLCBpdCB3aWxsIG9ubHkgYmUgY2FsbGVkIG9uY2UuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfU2hvcnQqCisgIGZ0X3Zhcl9yZWFkcGFja2VkZGVsdGFzKCBGVF9TdHJlYW0gIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX09mZnNldCAgZGVsdGFfY250ICkKKyAgeworICAgIEZUX1Nob3J0ICAqZGVsdGFzID0gTlVMTDsKKyAgICBGVF9VSW50ICAgIHJ1bmNudDsKKyAgICBGVF9PZmZzZXQgIGk7CisgICAgRlRfVUludCAgICBqOworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisgICAgRlRfRXJyb3IgICBlcnJvciAgPSBGVF9FcnJfT2s7CisKKyAgICBGVF9VTlVTRUQoIGVycm9yICk7CisKKworICAgIGlmICggRlRfTkVXX0FSUkFZKCBkZWx0YXMsIGRlbHRhX2NudCApICkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgaSA9IDA7CisgICAgd2hpbGUgKCBpIDwgZGVsdGFfY250ICkKKyAgICB7CisgICAgICBydW5jbnQgPSBGVF9HRVRfQllURSgpOworICAgICAgaWYgKCBydW5jbnQgJiBHWF9EVF9ERUxUQVNfQVJFX1pFUk8gKQorICAgICAgeworICAgICAgICAvKiBydW5jbnQgemVyb2VzIGdldCBhZGRlZCAqLworICAgICAgICBmb3IgKCBqID0gMDsKKyAgICAgICAgICAgICAgaiA8PSAoIHJ1bmNudCAmIEdYX0RUX0RFTFRBX1JVTl9DT1VOVF9NQVNLICkgJiYgaSA8IGRlbHRhX2NudDsKKyAgICAgICAgICAgICAgKytqICkKKyAgICAgICAgICBkZWx0YXNbaSsrXSA9IDA7CisgICAgICB9CisgICAgICBlbHNlIGlmICggcnVuY250ICYgR1hfRFRfREVMVEFTX0FSRV9XT1JEUyApCisgICAgICB7CisgICAgICAgIC8qIHJ1bmNudCBzaG9ydHMgZnJvbSB0aGUgc3RhY2sgKi8KKyAgICAgICAgZm9yICggaiA9IDA7CisgICAgICAgICAgICAgIGogPD0gKCBydW5jbnQgJiBHWF9EVF9ERUxUQV9SVU5fQ09VTlRfTUFTSyApICYmIGkgPCBkZWx0YV9jbnQ7CisgICAgICAgICAgICAgICsraiApCisgICAgICAgICAgZGVsdGFzW2krK10gPSBGVF9HRVRfU0hPUlQoKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgLyogcnVuY250IHNpZ25lZCBieXRlcyBmcm9tIHRoZSBzdGFjayAqLworICAgICAgICBmb3IgKCBqID0gMDsKKyAgICAgICAgICAgICAgaiA8PSAoIHJ1bmNudCAmIEdYX0RUX0RFTFRBX1JVTl9DT1VOVF9NQVNLICkgJiYgaSA8IGRlbHRhX2NudDsKKyAgICAgICAgICAgICAgKytqICkKKyAgICAgICAgICBkZWx0YXNbaSsrXSA9IEZUX0dFVF9DSEFSKCk7CisgICAgICB9CisKKyAgICAgIGlmICggaiA8PSAoIHJ1bmNudCAmIEdYX0RUX0RFTFRBX1JVTl9DT1VOVF9NQVNLICkgKQorICAgICAgeworICAgICAgICAvKiBCYWQgZm9ybWF0ICovCisgICAgICAgIEZUX0ZSRUUoIGRlbHRhcyApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZGVsdGFzOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmdF92YXJfbG9hZF9hdmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQYXJzZSB0aGUgYGF2YXInIHRhYmxlIGlmIHByZXNlbnQuICBJdCBuZWVkIG5vdCBiZSwgc28gd2UgcmV0dXJuICAgKi8KKyAgLyogICAgbm90aGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiBUaGUgZm9udCBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBmdF92YXJfbG9hZF9hdmFyKCBUVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX1N0cmVhbSAgICAgICBzdHJlYW0gPSBGVF9GQUNFX1NUUkVBTShmYWNlKTsKKyAgICBGVF9NZW1vcnkgICAgICAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisgICAgR1hfQmxlbmQgICAgICAgIGJsZW5kICA9IGZhY2UtPmJsZW5kOworICAgIEdYX0FWYXJTZWdtZW50ICBzZWdtZW50OworICAgIEZUX0Vycm9yICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBGVF9VTG9uZyAgICAgICAgdmVyc2lvbjsKKyAgICBGVF9Mb25nICAgICAgICAgYXhpc0NvdW50OworICAgIEZUX0ludCAgICAgICAgICBpLCBqOworICAgIEZUX1VMb25nICAgICAgICB0YWJsZV9sZW47CisKKyAgICBGVF9VTlVTRUQoIGVycm9yICk7CisKKworICAgIGJsZW5kLT5hdmFyX2NoZWNrZWQgPSBUUlVFOworICAgIGlmICggKGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19hdmFyLCBzdHJlYW0sICZ0YWJsZV9sZW4gKSkgIT0gMCApCisgICAgICByZXR1cm47CisKKyAgICBpZiAoIEZUX0ZSQU1FX0VOVEVSKCB0YWJsZV9sZW4gKSApCisgICAgICByZXR1cm47CisKKyAgICB2ZXJzaW9uICAgPSBGVF9HRVRfTE9ORygpOworICAgIGF4aXNDb3VudCA9IEZUX0dFVF9MT05HKCk7CisKKyAgICBpZiAoIHZlcnNpb24gIT0gMHgwMDAxMDAwMEwgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICBheGlzQ291bnQgIT0gKEZUX0xvbmcpYmxlbmQtPm1tdmFyLT5udW1fYXhpcyApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoIEZUX05FV19BUlJBWSggYmxlbmQtPmF2YXJfc2VnbWVudCwgYXhpc0NvdW50ICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgc2VnbWVudCA9ICZibGVuZC0+YXZhcl9zZWdtZW50WzBdOworICAgIGZvciAoIGkgPSAwOyBpIDwgYXhpc0NvdW50OyArK2ksICsrc2VnbWVudCApCisgICAgeworICAgICAgc2VnbWVudC0+cGFpckNvdW50ID0gRlRfR0VUX1VTSE9SVCgpOworICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIHNlZ21lbnQtPmNvcnJlc3BvbmRlbmNlLCBzZWdtZW50LT5wYWlyQ291bnQgKSApCisgICAgICB7CisgICAgICAgIC8qIEZhaWx1cmUuICBGcmVlIGV2ZXJ5dGhpbmcgd2UgaGF2ZSBkb25lIHNvIGZhci4gIFdlIG11c3QgZG8gKi8KKyAgICAgICAgLyogaXQgcmlnaHQgbm93IHNpbmNlIGxvYWRpbmcgdGhlIGBhdmFyJyB0YWJsZSBpcyBvcHRpb25hbC4gICAqLworCisgICAgICAgIGZvciAoIGogPSBpIC0gMTsgaiA+PSAwOyAtLWogKQorICAgICAgICAgIEZUX0ZSRUUoIGJsZW5kLT5hdmFyX3NlZ21lbnRbal0uY29ycmVzcG9uZGVuY2UgKTsKKworICAgICAgICBGVF9GUkVFKCBibGVuZC0+YXZhcl9zZWdtZW50ICk7CisgICAgICAgIGJsZW5kLT5hdmFyX3NlZ21lbnQgPSBOVUxMOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIGZvciAoIGogPSAwOyBqIDwgc2VnbWVudC0+cGFpckNvdW50OyArK2ogKQorICAgICAgeworICAgICAgICBzZWdtZW50LT5jb3JyZXNwb25kZW5jZVtqXS5mcm9tQ29vcmQgPQorICAgICAgICAgIEZUX0dFVF9TSE9SVCgpIDw8IDI7ICAgIC8qIGNvbnZlcnQgdG8gRml4ZWQgKi8KKyAgICAgICAgc2VnbWVudC0+Y29ycmVzcG9uZGVuY2Vbal0udG9Db29yZCA9CisgICAgICAgICAgRlRfR0VUX1NIT1JUKCk8PDI7ICAgIC8qIGNvbnZlcnQgdG8gRml4ZWQgKi8KKyAgICAgIH0KKyAgICB9CisKKyAgRXhpdDoKKyAgICBGVF9GUkFNRV9FWElUKCk7CisgIH0KKworCisgIHR5cGVkZWYgc3RydWN0ICBHWF9HVmFyX0hlYWRfCisgIHsKKyAgICBGVF9Mb25nICAgIHZlcnNpb247CisgICAgRlRfVVNob3J0ICBheGlzQ291bnQ7CisgICAgRlRfVVNob3J0ICBnbG9iYWxDb29yZENvdW50OworICAgIEZUX1VMb25nICAgb2Zmc2V0VG9Db29yZDsKKyAgICBGVF9VU2hvcnQgIGdseXBoQ291bnQ7CisgICAgRlRfVVNob3J0ICBmbGFnczsKKyAgICBGVF9VTG9uZyAgIG9mZnNldFRvRGF0YTsKKworICB9IEdYX0dWYXJfSGVhZDsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZ0X3Zhcl9sb2FkX2d2YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFBhcnNlcyB0aGUgYGd2YXInIHRhYmxlIGlmIHByZXNlbnQuICBJZiBgZnZhcicgaXMgdGhlcmUsIGBndmFyJyAgICAqLworICAvKiAgICBoYWQgYmV0dGVyIGJlIHRoZXJlIHRvby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlIDo6IFRoZSBmb250IGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBmdF92YXJfbG9hZF9ndmFyKCBUVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX1N0cmVhbSAgICAgc3RyZWFtID0gRlRfRkFDRV9TVFJFQU0oZmFjZSk7CisgICAgRlRfTWVtb3J5ICAgICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKyAgICBHWF9CbGVuZCAgICAgIGJsZW5kICA9IGZhY2UtPmJsZW5kOworICAgIEZUX0Vycm9yICAgICAgZXJyb3I7CisgICAgRlRfVUludCAgICAgICBpLCBqOworICAgIEZUX1VMb25nICAgICAgdGFibGVfbGVuOworICAgIEZUX1VMb25nICAgICAgZ3Zhcl9zdGFydDsKKyAgICBGVF9VTG9uZyAgICAgIG9mZnNldFRvRGF0YTsKKyAgICBHWF9HVmFyX0hlYWQgIGd2YXJfaGVhZDsKKworICAgIHN0YXRpYyBjb25zdCBGVF9GcmFtZV9GaWVsZCAgZ3Zhcl9maWVsZHNbXSA9CisgICAgeworCisjdW5kZWYgIEZUX1NUUlVDVFVSRQorI2RlZmluZSBGVF9TVFJVQ1RVUkUgIEdYX0dWYXJfSGVhZAorCisgICAgICBGVF9GUkFNRV9TVEFSVCggMjAgKSwKKyAgICAgICAgRlRfRlJBTUVfTE9ORyAgKCB2ZXJzaW9uICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggYXhpc0NvdW50ICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggZ2xvYmFsQ29vcmRDb3VudCApLAorICAgICAgICBGVF9GUkFNRV9VTE9ORyAoIG9mZnNldFRvQ29vcmQgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBnbHlwaENvdW50ICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggZmxhZ3MgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcgKCBvZmZzZXRUb0RhdGEgKSwKKyAgICAgIEZUX0ZSQU1FX0VORAorICAgIH07CisKKyAgICBpZiAoIChlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfZ3Zhciwgc3RyZWFtLCAmdGFibGVfbGVuICkpICE9IDAgKQorICAgICAgZ290byBFeGl0OworCisgICAgZ3Zhcl9zdGFydCA9IEZUX1NUUkVBTV9QT1MoICk7CisgICAgaWYgKCBGVF9TVFJFQU1fUkVBRF9GSUVMRFMoIGd2YXJfZmllbGRzLCAmZ3Zhcl9oZWFkICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgYmxlbmQtPnR1cGxlY291bnQgID0gZ3Zhcl9oZWFkLmdsb2JhbENvb3JkQ291bnQ7CisgICAgYmxlbmQtPmd2X2dseXBoY250ID0gZ3Zhcl9oZWFkLmdseXBoQ291bnQ7CisgICAgb2Zmc2V0VG9EYXRhICAgICAgID0gZ3Zhcl9zdGFydCArIGd2YXJfaGVhZC5vZmZzZXRUb0RhdGE7CisKKyAgICBpZiAoIGd2YXJfaGVhZC52ZXJzaW9uICAgIT0gKEZUX0xvbmcpMHgwMDAxMDAwMEwgICAgICAgICAgICAgIHx8CisgICAgICAgICBndmFyX2hlYWQuYXhpc0NvdW50ICE9IChGVF9VU2hvcnQpYmxlbmQtPm1tdmFyLT5udW1fYXhpcyApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9UYWJsZSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggRlRfTkVXX0FSUkFZKCBibGVuZC0+Z2x5cGhvZmZzZXRzLCBibGVuZC0+Z3ZfZ2x5cGhjbnQgKyAxICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCBndmFyX2hlYWQuZmxhZ3MgJiAxICkKKyAgICB7CisgICAgICAvKiBsb25nIG9mZnNldHMgKG9uZSBtb3JlIG9mZnNldCB0aGFuIGdseXBocywgdG8gbWFyayBzaXplIG9mIGxhc3QpICovCisgICAgICBpZiAoIEZUX0ZSQU1FX0VOVEVSKCAoIGJsZW5kLT5ndl9nbHlwaGNudCArIDEgKSAqIDRMICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGZvciAoIGkgPSAwOyBpIDw9IGJsZW5kLT5ndl9nbHlwaGNudDsgKytpICkKKyAgICAgICAgYmxlbmQtPmdseXBob2Zmc2V0c1tpXSA9IG9mZnNldFRvRGF0YSArIEZUX0dFVF9MT05HKCk7CisKKyAgICAgIEZUX0ZSQU1FX0VYSVQoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIHNob3J0IG9mZnNldHMgKG9uZSBtb3JlIG9mZnNldCB0aGFuIGdseXBocywgdG8gbWFyayBzaXplIG9mIGxhc3QpICovCisgICAgICBpZiAoIEZUX0ZSQU1FX0VOVEVSKCAoIGJsZW5kLT5ndl9nbHlwaGNudCArIDEgKSAqIDJMICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGZvciAoIGkgPSAwOyBpIDw9IGJsZW5kLT5ndl9nbHlwaGNudDsgKytpICkKKyAgICAgICAgYmxlbmQtPmdseXBob2Zmc2V0c1tpXSA9IG9mZnNldFRvRGF0YSArIEZUX0dFVF9VU0hPUlQoKSAqIDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWFhYOiBVbmRvY3VtZW50ZWQ6IGAqMichICovCisKKyAgICAgIEZUX0ZSQU1FX0VYSVQoKTsKKyAgICB9CisKKyAgICBpZiAoIGJsZW5kLT50dXBsZWNvdW50ICE9IDAgKQorICAgIHsKKyAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBibGVuZC0+dHVwbGVjb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3Zhcl9oZWFkLmF4aXNDb3VudCAqIGJsZW5kLT50dXBsZWNvdW50ICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIGd2YXJfc3RhcnQgKyBndmFyX2hlYWQub2Zmc2V0VG9Db29yZCApICAgICAgIHx8CisgICAgICAgICAgIEZUX0ZSQU1FX0VOVEVSKCBibGVuZC0+dHVwbGVjb3VudCAqIGd2YXJfaGVhZC5heGlzQ291bnQgKiAyTCApICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IGJsZW5kLT50dXBsZWNvdW50OyArK2kgKQorICAgICAgICBmb3IgKCBqID0gMCA7IGogPCAoRlRfVUludClndmFyX2hlYWQuYXhpc0NvdW50OyArK2ogKQorICAgICAgICAgIGJsZW5kLT50dXBsZWNvb3Jkc1tpICogZ3Zhcl9oZWFkLmF4aXNDb3VudCArIGpdID0KKyAgICAgICAgICAgIEZUX0dFVF9TSE9SVCgpIDw8IDI7ICAgICAgICAgICAgICAgIC8qIGNvbnZlcnQgdG8gRlRfRml4ZWQgKi8KKworICAgICAgRlRfRlJBTUVfRVhJVCgpOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZnRfdmFyX2FwcGx5X3R1cGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRmlndXJlIG91dCB3aGV0aGVyIGEgZ2l2ZW4gdHVwbGUgKGRlc2lnbikgYXBwbGllcyB0byB0aGUgY3VycmVudCAgICovCisgIC8qICAgIGJsZW5kLCBhbmQgaWYgc28sIHdoYXQgaXMgdGhlIHNjYWxpbmcgZmFjdG9yLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJsZW5kICAgICAgICAgICA6OiBUaGUgY3VycmVudCBibGVuZCBvZiB0aGUgZm9udC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHVwbGVJbmRleCAgICAgIDo6IEEgZmxhZyBzYXlpbmcgd2hldGhlciB0aGlzIGlzIGFuIGludGVybWVkaWF0ZSAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICB0dXBsZSBvciBub3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHVwbGVfY29vcmRzICAgIDo6IFRoZSBjb29yZGluYXRlcyBvZiB0aGUgdHVwbGUgaW4gbm9ybWFsaXplZCBheGlzICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICB1bml0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW1fc3RhcnRfY29vcmRzIDo6IFRoZSBpbml0aWFsIGNvb3JkaW5hdGVzIHdoZXJlIHRoaXMgdHVwbGUgc3RhcnRzICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICB0byBhcHBseSAoZm9yIGludGVybWVkaWF0ZSBjb29yZGluYXRlcykuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW1fZW5kX2Nvb3JkcyAgIDo6IFRoZSBmaW5hbCBjb29yZGluYXRlcyBhZnRlciB3aGljaCB0aGlzIHR1cGxlIG5vICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICBsb25nZXIgYXBwbGllcyAoZm9yIGludGVybWVkaWF0ZSBjb29yZGluYXRlcykuICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEFuIEZUX0ZpeGVkIHZhbHVlIGNvbnRhaW5pbmcgdGhlIHNjYWxpbmcgZmFjdG9yLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0ZpeGVkCisgIGZ0X3Zhcl9hcHBseV90dXBsZSggR1hfQmxlbmQgICBibGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9VU2hvcnQgIHR1cGxlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICB0dXBsZV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBpbV9zdGFydF9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBpbV9lbmRfY29vcmRzICkKKyAgeworICAgIEZUX1VJbnQgICBpOworICAgIEZUX0ZpeGVkICBhcHBseSA9IDB4MTAwMDBMOworCisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGJsZW5kLT5udW1fYXhpczsgKytpICkKKyAgICB7CisgICAgICBpZiAoIHR1cGxlX2Nvb3Jkc1tpXSA9PSAwICkKKyAgICAgICAgLyogSXQncyBub3QgY2xlYXIgd2h5IChmb3IgaW50ZXJtZWRpYXRlIHR1cGxlcykgd2UgZG9uJ3QgbmVlZCAgICAgKi8KKyAgICAgICAgLyogdG8gY2hlY2sgYWdhaW5zdCBzdGFydC9lbmQgLS0gdGhlIGRvY3VtZW50YXRpb24gc2F5cyB3ZSBkb24ndC4gKi8KKyAgICAgICAgLyogU2ltaWxhcmx5LCBpdCdzIHVuY2xlYXIgd2h5IHdlIGRvbid0IG5lZWQgdG8gc2NhbGUgYWxvbmcgdGhlICAgKi8KKyAgICAgICAgLyogYXhpcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGVsc2UgaWYgKCBibGVuZC0+bm9ybWFsaXplZGNvb3Jkc1tpXSA9PSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAoIGJsZW5kLT5ub3JtYWxpemVkY29vcmRzW2ldIDwgMCAmJiB0dXBsZV9jb29yZHNbaV0gPiAwICkgfHwKKyAgICAgICAgICAgICAgICAoIGJsZW5kLT5ub3JtYWxpemVkY29vcmRzW2ldID4gMCAmJiB0dXBsZV9jb29yZHNbaV0gPCAwICkgKQorICAgICAgeworICAgICAgICBhcHBseSA9IDA7CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBlbHNlIGlmICggISggdHVwbGVJbmRleCAmIEdYX1RJX0lOVEVSTUVESUFURV9UVVBMRSApICkKKyAgICAgICAgLyogbm90IGFuIGludGVybWVkaWF0ZSB0dXBsZSAqLworICAgICAgICBhcHBseSA9IEZUX011bEZpeCggYXBwbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZC0+bm9ybWFsaXplZGNvb3Jkc1tpXSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBibGVuZC0+bm9ybWFsaXplZGNvb3Jkc1tpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC1ibGVuZC0+bm9ybWFsaXplZGNvb3Jkc1tpXSApOworCisgICAgICBlbHNlIGlmICggYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHNbaV0gPD0gaW1fc3RhcnRfY29vcmRzW2ldIHx8CisgICAgICAgICAgICAgICAgYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHNbaV0gPj0gaW1fZW5kX2Nvb3Jkc1tpXSAgICkKKyAgICAgIHsKKyAgICAgICAgYXBwbHkgPSAwOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgZWxzZSBpZiAoIGJsZW5kLT5ub3JtYWxpemVkY29vcmRzW2ldIDwgdHVwbGVfY29vcmRzW2ldICkKKyAgICAgICAgYXBwbHkgPSBGVF9NdWxEaXYoIGFwcGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHNbaV0gLSBpbV9zdGFydF9jb29yZHNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0dXBsZV9jb29yZHNbaV0gLSBpbV9zdGFydF9jb29yZHNbaV0gKTsKKworICAgICAgZWxzZQorICAgICAgICBhcHBseSA9IEZUX011bERpdiggYXBwbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbV9lbmRfY29vcmRzW2ldIC0gYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbV9lbmRfY29vcmRzW2ldIC0gdHVwbGVfY29vcmRzW2ldICk7CisgICAgfQorCisgICAgcmV0dXJuIGFwcGx5OworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICBNVUxUSVBMRSBNQVNURVJTIFNFUlZJQ0UgRlVOQ1RJT05TICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIHR5cGVkZWYgc3RydWN0ICBHWF9GVmFyX0hlYWRfCisgIHsKKyAgICBGVF9Mb25nICAgIHZlcnNpb247CisgICAgRlRfVVNob3J0ICBvZmZzZXRUb0RhdGE7CisgICAgRlRfVVNob3J0ICBjb3VudFNpemVQYWlyczsKKyAgICBGVF9VU2hvcnQgIGF4aXNDb3VudDsKKyAgICBGVF9VU2hvcnQgIGF4aXNTaXplOworICAgIEZUX1VTaG9ydCAgaW5zdGFuY2VDb3VudDsKKyAgICBGVF9VU2hvcnQgIGluc3RhbmNlU2l6ZTsKKworICB9IEdYX0ZWYXJfSGVhZDsKKworCisgIHR5cGVkZWYgc3RydWN0ICBmdmFyX2F4aXNfCisgIHsKKyAgICBGVF9VTG9uZyAgIGF4aXNUYWc7CisgICAgRlRfVUxvbmcgICBtaW5WYWx1ZTsKKyAgICBGVF9VTG9uZyAgIGRlZmF1bHRWYWx1ZTsKKyAgICBGVF9VTG9uZyAgIG1heFZhbHVlOworICAgIEZUX1VTaG9ydCAgZmxhZ3M7CisgICAgRlRfVVNob3J0ICBuYW1lSUQ7CisKKyAgfSBHWF9GVmFyX0F4aXM7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9HZXRfTU1fVmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDaGVjayB0aGF0IHRoZSBmb250J3MgYGZ2YXInIHRhYmxlIGlzIHZhbGlkLCBwYXJzZSBpdCwgYW5kIHJldHVybiAgKi8KKyAgLyogICAgdGhvc2UgZGF0YS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgIDo6IFRoZSBmb250IGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICBUVF9HZXRfTU1fVmFyIGluaXRpYWxpemVzIHRoZSBibGVuZCBzdHJ1Y3R1cmUuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1hc3RlciA6OiBUaGUgYGZ2YXInIGRhdGEgKG11c3QgYmUgZnJlZWQgYnkgY2FsbGVyKS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFRUX0dldF9NTV9WYXIoIFRUX0ZhY2UgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICBGVF9NTV9WYXIqICAqbWFzdGVyICkKKyAgeworICAgIEZUX1N0cmVhbSAgICAgICAgICAgIHN0cmVhbSA9IGZhY2UtPnJvb3Quc3RyZWFtOworICAgIEZUX01lbW9yeSAgICAgICAgICAgIG1lbW9yeSA9IGZhY2UtPnJvb3QubWVtb3J5OworICAgIEZUX1VMb25nICAgICAgICAgICAgIHRhYmxlX2xlbjsKKyAgICBGVF9FcnJvciAgICAgICAgICAgICBlcnJvciAgPSBGVF9FcnJfT2s7CisgICAgRlRfVUxvbmcgICAgICAgICAgICAgZnZhcl9zdGFydDsKKyAgICBGVF9JbnQgICAgICAgICAgICAgICBpLCBqOworICAgIEZUX01NX1ZhciogICAgICAgICAgIG1tdmFyID0gTlVMTDsKKyAgICBGVF9GaXhlZCogICAgICAgICAgICBuZXh0X2Nvb3JkczsKKyAgICBGVF9TdHJpbmcqICAgICAgICAgICBuZXh0X25hbWU7CisgICAgRlRfVmFyX0F4aXMqICAgICAgICAgYTsKKyAgICBGVF9WYXJfTmFtZWRfU3R5bGUqICBuczsKKyAgICBHWF9GVmFyX0hlYWQgICAgICAgICBmdmFyX2hlYWQ7CisKKyAgICBzdGF0aWMgY29uc3QgRlRfRnJhbWVfRmllbGQgIGZ2YXJfZmllbGRzW10gPQorICAgIHsKKworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBHWF9GVmFyX0hlYWQKKworICAgICAgRlRfRlJBTUVfU1RBUlQoIDE2ICksCisgICAgICAgIEZUX0ZSQU1FX0xPTkcgICggdmVyc2lvbiApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIG9mZnNldFRvRGF0YSApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIGNvdW50U2l6ZVBhaXJzICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggYXhpc0NvdW50ICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggYXhpc1NpemUgKSwKKyAgICAgICAgRlRfRlJBTUVfVVNIT1JUKCBpbnN0YW5jZUNvdW50ICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggaW5zdGFuY2VTaXplICksCisgICAgICBGVF9GUkFNRV9FTkQKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IEZUX0ZyYW1lX0ZpZWxkICBmdmFyYXhpc19maWVsZHNbXSA9CisgICAgeworCisjdW5kZWYgIEZUX1NUUlVDVFVSRQorI2RlZmluZSBGVF9TVFJVQ1RVUkUgIEdYX0ZWYXJfQXhpcworCisgICAgICBGVF9GUkFNRV9TVEFSVCggMjAgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcgKCBheGlzVGFnICksCisgICAgICAgIEZUX0ZSQU1FX1VMT05HICggbWluVmFsdWUgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcgKCBkZWZhdWx0VmFsdWUgKSwKKyAgICAgICAgRlRfRlJBTUVfVUxPTkcgKCBtYXhWYWx1ZSApLAorICAgICAgICBGVF9GUkFNRV9VU0hPUlQoIGZsYWdzICksCisgICAgICAgIEZUX0ZSQU1FX1VTSE9SVCggbmFtZUlEICksCisgICAgICBGVF9GUkFNRV9FTkQKKyAgICB9OworCisKKyAgICBpZiAoIGZhY2UtPmJsZW5kID09IE5VTEwgKQorICAgIHsKKyAgICAgIC8qIGJvdGggYGZ2YXInIGFuZCBgZ3ZhcicgbXVzdCBiZSBwcmVzZW50ICovCisgICAgICBpZiAoIChlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfZ3ZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLCAmdGFibGVfbGVuICkpICE9IDAgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGlmICggKGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19mdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sICZ0YWJsZV9sZW4gKSkgIT0gMCApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgZnZhcl9zdGFydCA9IEZUX1NUUkVBTV9QT1MoICk7CisKKyAgICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCBmdmFyX2ZpZWxkcywgJmZ2YXJfaGVhZCApICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBpZiAoIGZ2YXJfaGVhZC52ZXJzaW9uICE9IChGVF9Mb25nKTB4MDAwMTAwMDBMICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgIGZ2YXJfaGVhZC5jb3VudFNpemVQYWlycyAhPSAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgIGZ2YXJfaGVhZC5heGlzU2l6ZSAhPSAyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgIC8qIGF4aXNDb3VudCBsaW1pdCBpbXBsaWVkIGJ5IDE2LWJpdCBpbnN0YW5jZVNpemUgKi8KKyAgICAgICAgICAgZnZhcl9oZWFkLmF4aXNDb3VudCA+IDB4M0ZGRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgZnZhcl9oZWFkLmluc3RhbmNlU2l6ZSAhPSA0ICsgNCAqIGZ2YXJfaGVhZC5heGlzQ291bnQgICAgICAgICAgfHwKKyAgICAgICAgICAgLyogaW5zdGFuY2VDb3VudCBsaW1pdCBpbXBsaWVkIGJ5IGxpbWl0ZWQgcmFuZ2Ugb2YgbmFtZSBJRHMgKi8KKyAgICAgICAgICAgZnZhcl9oZWFkLmluc3RhbmNlQ291bnQgPiAweDdFRkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgZnZhcl9oZWFkLm9mZnNldFRvRGF0YSArIGZ2YXJfaGVhZC5heGlzQ291bnQgKiAyMFUgKworICAgICAgICAgICAgIGZ2YXJfaGVhZC5pbnN0YW5jZUNvdW50ICogZnZhcl9oZWFkLmluc3RhbmNlU2l6ZSA+IHRhYmxlX2xlbiApCisgICAgICB7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICBpZiAoIEZUX05FVyggZmFjZS0+YmxlbmQgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgLyogY2Fubm90IG92ZXJmbG93IDMyLWJpdCBhcml0aG1ldGljIGJlY2F1c2Ugb2YgbGltaXRzIGFib3ZlICovCisgICAgICBmYWNlLT5ibGVuZC0+bW12YXJfbGVuID0KKyAgICAgICAgc2l6ZW9mICggRlRfTU1fVmFyICkgKworICAgICAgICBmdmFyX2hlYWQuYXhpc0NvdW50ICogc2l6ZW9mICggRlRfVmFyX0F4aXMgKSArCisgICAgICAgIGZ2YXJfaGVhZC5pbnN0YW5jZUNvdW50ICogc2l6ZW9mICggRlRfVmFyX05hbWVkX1N0eWxlICkgKworICAgICAgICBmdmFyX2hlYWQuaW5zdGFuY2VDb3VudCAqIGZ2YXJfaGVhZC5heGlzQ291bnQgKiBzaXplb2YgKCBGVF9GaXhlZCApICsKKyAgICAgICAgNSAqIGZ2YXJfaGVhZC5heGlzQ291bnQ7CisKKyAgICAgIGlmICggRlRfQUxMT0MoIG1tdmFyLCBmYWNlLT5ibGVuZC0+bW12YXJfbGVuICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgICBmYWNlLT5ibGVuZC0+bW12YXIgPSBtbXZhcjsKKworICAgICAgbW12YXItPm51bV9heGlzID0KKyAgICAgICAgZnZhcl9oZWFkLmF4aXNDb3VudDsKKyAgICAgIG1tdmFyLT5udW1fZGVzaWducyA9CisgICAgICAgIH4wVTsgICAgICAgICAgICAgICAgICAgLyogbWVhbmluZ2xlc3MgaW4gdGhpcyBjb250ZXh0OyBlYWNoIGdseXBoICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF5IGhhdmUgYSBkaWZmZXJlbnQgbnVtYmVyIG9mIGRlc2lnbnMgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG9yIHR1cGxlcywgYXMgY2FsbGVkIGJ5IEFwcGxlKSAgICAgICAgICovCisgICAgICBtbXZhci0+bnVtX25hbWVkc3R5bGVzID0KKyAgICAgICAgZnZhcl9oZWFkLmluc3RhbmNlQ291bnQ7CisgICAgICBtbXZhci0+YXhpcyA9CisgICAgICAgIChGVF9WYXJfQXhpcyopJihtbXZhclsxXSk7CisgICAgICBtbXZhci0+bmFtZWRzdHlsZSA9CisgICAgICAgIChGVF9WYXJfTmFtZWRfU3R5bGUqKSYobW12YXItPmF4aXNbZnZhcl9oZWFkLmF4aXNDb3VudF0pOworCisgICAgICBuZXh0X2Nvb3JkcyA9CisgICAgICAgIChGVF9GaXhlZCopJihtbXZhci0+bmFtZWRzdHlsZVtmdmFyX2hlYWQuaW5zdGFuY2VDb3VudF0pOworICAgICAgZm9yICggaSA9IDA7IGkgPCBmdmFyX2hlYWQuaW5zdGFuY2VDb3VudDsgKytpICkKKyAgICAgIHsKKyAgICAgICAgbW12YXItPm5hbWVkc3R5bGVbaV0uY29vcmRzICA9IG5leHRfY29vcmRzOworICAgICAgICBuZXh0X2Nvb3JkcyAgICAgICAgICAgICAgICAgKz0gZnZhcl9oZWFkLmF4aXNDb3VudDsKKyAgICAgIH0KKworICAgICAgbmV4dF9uYW1lID0gKEZUX1N0cmluZyopbmV4dF9jb29yZHM7CisgICAgICBmb3IgKCBpID0gMDsgaSA8IGZ2YXJfaGVhZC5heGlzQ291bnQ7ICsraSApCisgICAgICB7CisgICAgICAgIG1tdmFyLT5heGlzW2ldLm5hbWUgID0gbmV4dF9uYW1lOworICAgICAgICBuZXh0X25hbWUgICAgICAgICAgICs9IDU7CisgICAgICB9CisKKyAgICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIGZ2YXJfc3RhcnQgKyBmdmFyX2hlYWQub2Zmc2V0VG9EYXRhICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGEgPSBtbXZhci0+YXhpczsKKyAgICAgIGZvciAoIGkgPSAwOyBpIDwgZnZhcl9oZWFkLmF4aXNDb3VudDsgKytpICkKKyAgICAgIHsKKyAgICAgICAgR1hfRlZhcl9BeGlzICBheGlzX3JlYzsKKworCisgICAgICAgIGlmICggRlRfU1RSRUFNX1JFQURfRklFTERTKCBmdmFyYXhpc19maWVsZHMsICZheGlzX3JlYyApICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIGEtPnRhZyAgICAgPSBheGlzX3JlYy5heGlzVGFnOworICAgICAgICBhLT5taW5pbXVtID0gYXhpc19yZWMubWluVmFsdWU7ICAgICAvKiBBIEZpeGVkICovCisgICAgICAgIGEtPmRlZiAgICAgPSBheGlzX3JlYy5kZWZhdWx0VmFsdWU7IC8qIEEgRml4ZWQgKi8KKyAgICAgICAgYS0+bWF4aW11bSA9IGF4aXNfcmVjLm1heFZhbHVlOyAgICAgLyogQSBGaXhlZCAqLworICAgICAgICBhLT5zdHJpZCAgID0gYXhpc19yZWMubmFtZUlEOworCisgICAgICAgIGEtPm5hbWVbMF0gPSAoRlRfU3RyaW5nKSggICBhLT50YWcgPj4gMjQgKTsKKyAgICAgICAgYS0+bmFtZVsxXSA9IChGVF9TdHJpbmcpKCAoIGEtPnRhZyA+PiAxNiApICYgMHhGRiApOworICAgICAgICBhLT5uYW1lWzJdID0gKEZUX1N0cmluZykoICggYS0+dGFnID4+ICA4ICkgJiAweEZGICk7CisgICAgICAgIGEtPm5hbWVbM10gPSAoRlRfU3RyaW5nKSggKCBhLT50YWcgICAgICAgKSAmIDB4RkYgKTsKKyAgICAgICAgYS0+bmFtZVs0XSA9IDA7CisKKyAgICAgICAgKythOworICAgICAgfQorCisgICAgICBucyA9IG1tdmFyLT5uYW1lZHN0eWxlOworICAgICAgZm9yICggaSA9IDA7IGkgPCBmdmFyX2hlYWQuaW5zdGFuY2VDb3VudDsgKytpLCArK25zICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBGVF9GUkFNRV9FTlRFUiggNEwgKyA0TCAqIGZ2YXJfaGVhZC5heGlzQ291bnQgKSApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIG5zLT5zdHJpZCAgICAgICA9ICAgIEZUX0dFVF9VU0hPUlQoKTsKKyAgICAgICAgKHZvaWQpIC8qIGZsYWdzID0gKi8gRlRfR0VUX1VTSE9SVCgpOworCisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgZnZhcl9oZWFkLmF4aXNDb3VudDsgKytqICkKKyAgICAgICAgICBucy0+Y29vcmRzW2pdID0gRlRfR0VUX1VMT05HKCk7ICAgICAvKiBBIEZpeGVkICovCisKKyAgICAgICAgRlRfRlJBTUVfRVhJVCgpOworICAgICAgfQorICAgIH0KKworICAgIGlmICggbWFzdGVyICE9IE5VTEwgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgIG47CisKKworICAgICAgaWYgKCBGVF9BTExPQyggbW12YXIsIGZhY2UtPmJsZW5kLT5tbXZhcl9sZW4gKSApCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIEZUX01FTV9DT1BZKCBtbXZhciwgZmFjZS0+YmxlbmQtPm1tdmFyLCBmYWNlLT5ibGVuZC0+bW12YXJfbGVuICk7CisKKyAgICAgIG1tdmFyLT5heGlzID0KKyAgICAgICAgKEZUX1Zhcl9BeGlzKikmKG1tdmFyWzFdKTsKKyAgICAgIG1tdmFyLT5uYW1lZHN0eWxlID0KKyAgICAgICAgKEZUX1Zhcl9OYW1lZF9TdHlsZSopJihtbXZhci0+YXhpc1ttbXZhci0+bnVtX2F4aXNdKTsKKyAgICAgIG5leHRfY29vcmRzID0KKyAgICAgICAgKEZUX0ZpeGVkKikmKG1tdmFyLT5uYW1lZHN0eWxlW21tdmFyLT5udW1fbmFtZWRzdHlsZXNdKTsKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBtbXZhci0+bnVtX25hbWVkc3R5bGVzOyArK24gKQorICAgICAgeworICAgICAgICBtbXZhci0+bmFtZWRzdHlsZVtuXS5jb29yZHMgID0gbmV4dF9jb29yZHM7CisgICAgICAgIG5leHRfY29vcmRzICAgICAgICAgICAgICAgICArPSBtbXZhci0+bnVtX2F4aXM7CisgICAgICB9CisKKyAgICAgIGEgPSBtbXZhci0+YXhpczsKKyAgICAgIG5leHRfbmFtZSA9IChGVF9TdHJpbmcqKW5leHRfY29vcmRzOworICAgICAgZm9yICggbiA9IDA7IG4gPCBtbXZhci0+bnVtX2F4aXM7ICsrbiApCisgICAgICB7CisgICAgICAgIGEtPm5hbWUgPSBuZXh0X25hbWU7CisKKyAgICAgICAgLyogc3RhbmRhcmQgUG9zdFNjcmlwdCBuYW1lcyBmb3Igc29tZSBzdGFuZGFyZCBhcHBsZSB0YWdzICovCisgICAgICAgIGlmICggYS0+dGFnID09IFRUQUdfd2dodCApCisgICAgICAgICAgYS0+bmFtZSA9IChjaGFyICopIldlaWdodCI7CisgICAgICAgIGVsc2UgaWYgKCBhLT50YWcgPT0gVFRBR193ZHRoICkKKyAgICAgICAgICBhLT5uYW1lID0gKGNoYXIgKikiV2lkdGgiOworICAgICAgICBlbHNlIGlmICggYS0+dGFnID09IFRUQUdfb3BzeiApCisgICAgICAgICAgYS0+bmFtZSA9IChjaGFyICopIk9wdGljYWxTaXplIjsKKyAgICAgICAgZWxzZSBpZiAoIGEtPnRhZyA9PSBUVEFHX3NsbnQgKQorICAgICAgICAgIGEtPm5hbWUgPSAoY2hhciAqKSJTbGFudCI7CisKKyAgICAgICAgbmV4dF9uYW1lICs9IDU7CisgICAgICAgICsrYTsKKyAgICAgIH0KKworICAgICAgKm1hc3RlciA9IG1tdmFyOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfU2V0X01NX0JsZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2V0IHRoZSBibGVuZCAobm9ybWFsaXplZCkgY29vcmRpbmF0ZXMgZm9yIHRoaXMgaW5zdGFuY2Ugb2YgdGhlICAgICovCisgIC8qICAgIGZvbnQuICBDaGVjayB0aGF0IHRoZSBgZ3ZhcicgdGFibGUgaXMgcmVhc29uYWJsZSBhbmQgZG9lcyBzb21lICAgICAqLworICAvKiAgICBpbml0aWFsIHByZXBhcmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgIDo6IFRoZSBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBJbml0aWFsaXplIHRoZSBibGVuZCBzdHJ1Y3R1cmUgd2l0aCBgZ3ZhcicgZGF0YS4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbnVtX2Nvb3JkcyA6OiBNdXN0IGJlIHRoZSBheGlzIGNvdW50IG9mIHRoZSBmb250LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb29yZHMgICAgIDo6IEFuIGFycmF5IG9mIG51bV9jb29yZHMsIGVhY2ggYmV0d2VlbiBbLTEsMV0uICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBUVF9TZXRfTU1fQmxlbmQoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIG51bV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZHMgKQorICB7CisgICAgRlRfRXJyb3IgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgR1hfQmxlbmQgICAgYmxlbmQ7CisgICAgRlRfTU1fVmFyKiAgbW12YXI7CisgICAgRlRfVUludCAgICAgaTsKKyAgICBGVF9NZW1vcnkgICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKworICAgIGVudW0KKyAgICB7CisgICAgICBtY3Z0X3JldGFpbiwKKyAgICAgIG1jdnRfbW9kaWZ5LAorICAgICAgbWN2dF9sb2FkCisKKyAgICB9IG1hbmFnZUN2dDsKKworCisgICAgZmFjZS0+ZG9ibGVuZCA9IEZBTFNFOworCisgICAgaWYgKCBmYWNlLT5ibGVuZCA9PSBOVUxMICkKKyAgICB7CisgICAgICBpZiAoIChlcnJvciA9IFRUX0dldF9NTV9WYXIoIGZhY2UsIE5VTEwpKSAhPSAwICkKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGJsZW5kID0gZmFjZS0+YmxlbmQ7CisgICAgbW12YXIgPSBibGVuZC0+bW12YXI7CisKKyAgICBpZiAoIG51bV9jb29yZHMgIT0gbW12YXItPm51bV9heGlzICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgZm9yICggaSA9IDA7IGkgPCBudW1fY29vcmRzOyArK2kgKQorICAgICAgaWYgKCBjb29yZHNbaV0gPCAtMHgwMDAxMDAwMEwgfHwgY29vcmRzW2ldID4gMHgwMDAxMDAwMEwgKQorICAgICAgeworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgIGlmICggYmxlbmQtPmdseXBob2Zmc2V0cyA9PSBOVUxMICkKKyAgICAgIGlmICggKGVycm9yID0gZnRfdmFyX2xvYWRfZ3ZhciggZmFjZSApKSAhPSAwICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCBibGVuZC0+bm9ybWFsaXplZGNvb3JkcyA9PSBOVUxMICkKKyAgICB7CisgICAgICBpZiAoIEZUX05FV19BUlJBWSggYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHMsIG51bV9jb29yZHMgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgbWFuYWdlQ3Z0ID0gbWN2dF9tb2RpZnk7CisKKyAgICAgIC8qIElmIHdlIGhhdmUgbm90IHNldCB0aGUgYmxlbmQgY29vcmRpbmF0ZXMgYmVmb3JlIHRoaXMsIHRoZW4gdGhlICAqLworICAgICAgLyogY3Z0IHRhYmxlIHdpbGwgc3RpbGwgYmUgd2hhdCB3ZSByZWFkIGZyb20gdGhlIGBjdnQgJyB0YWJsZSBhbmQgICovCisgICAgICAvKiB3ZSBkb24ndCBuZWVkIHRvIHJlbG9hZCBpdC4gIFdlIG1heSBuZWVkIHRvIGNoYW5nZSBpdCB0aG91Z2guLi4gKi8KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIG1hbmFnZUN2dCA9IG1jdnRfcmV0YWluOworICAgICAgZm9yICggaSA9IDA7IGkgPCBudW1fY29vcmRzOyArK2kgKQorICAgICAgeworICAgICAgICBpZiAoIGJsZW5kLT5ub3JtYWxpemVkY29vcmRzW2ldICE9IGNvb3Jkc1tpXSApCisgICAgICAgIHsKKyAgICAgICAgICBtYW5hZ2VDdnQgPSBtY3Z0X2xvYWQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyogSWYgd2UgZG9uJ3QgY2hhbmdlIHRoZSBibGVuZCBjb29yZHMgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRvICAqLworICAgICAgLyogYW55dGhpbmcgdG8gdGhlIGN2dCB0YWJsZS4gIEl0IHdpbGwgYmUgY29ycmVjdC4gIE90aGVyd2lzZSB3ZSAqLworICAgICAgLyogbm8gbG9uZ2VyIGhhdmUgdGhlIG9yaWdpbmFsIGN2dCAoaXQgd2FzIG1vZGlmaWVkIHdoZW4gd2Ugc2V0ICAqLworICAgICAgLyogdGhlIGJsZW5kIGxhc3QgdGltZSksIHNvIHdlIG11c3QgcmVsb2FkIGFuZCB0aGVuIG1vZGlmeSBpdC4gICAqLworICAgIH0KKworICAgIGJsZW5kLT5udW1fYXhpcyA9IG51bV9jb29yZHM7CisgICAgRlRfTUVNX0NPUFkoIGJsZW5kLT5ub3JtYWxpemVkY29vcmRzLAorICAgICAgICAgICAgICAgICBjb29yZHMsCisgICAgICAgICAgICAgICAgIG51bV9jb29yZHMgKiBzaXplb2YgKCBGVF9GaXhlZCApICk7CisKKyAgICBmYWNlLT5kb2JsZW5kID0gVFJVRTsKKworICAgIGlmICggZmFjZS0+Y3Z0ICE9IE5VTEwgKQorICAgIHsKKyAgICAgIHN3aXRjaCAoIG1hbmFnZUN2dCApCisgICAgICB7CisgICAgICBjYXNlIG1jdnRfbG9hZDoKKyAgICAgICAgLyogVGhlIGN2dCB0YWJsZSBoYXMgYmVlbiBsb2FkZWQgYWxyZWFkeTsgZXZlcnkgdGltZSB3ZSBjaGFuZ2UgdGhlICovCisgICAgICAgIC8qIGJsZW5kIHdlIG1heSBuZWVkIHRvIHJlbG9hZCBhbmQgcmVtb2RpZnkgdGhlIGN2dCB0YWJsZS4gICAgICAgICAqLworICAgICAgICBGVF9GUkVFKCBmYWNlLT5jdnQgKTsKKyAgICAgICAgZmFjZS0+Y3Z0ID0gTlVMTDsKKworICAgICAgICB0dF9mYWNlX2xvYWRfY3Z0KCBmYWNlLCBmYWNlLT5yb290LnN0cmVhbSApOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBtY3Z0X21vZGlmeToKKyAgICAgICAgLyogVGhlIG9yaWdpbmFsIGN2dCB0YWJsZSBpcyBpbiBtZW1vcnkuICBBbGwgd2UgbmVlZCB0byBkbyBpcyAqLworICAgICAgICAvKiBhcHBseSB0aGUgYGN2YXInIHRhYmxlIChpZiBhbnkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIHR0X2ZhY2VfdmFyeV9jdnQoIGZhY2UsIGZhY2UtPnJvb3Quc3RyZWFtICk7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIG1jdnRfcmV0YWluOgorICAgICAgICAvKiBUaGUgY3Z0IHRhYmxlIGlzIGNvcnJlY3QgZm9yIHRoaXMgc2V0IG9mIGNvb3JkaW5hdGVzLiAqLworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1NldF9WYXJfRGVzaWduICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNldCB0aGUgY29vcmRpbmF0ZXMgZm9yIHRoZSBpbnN0YW5jZSwgbWVhc3VyZWQgaW4gdGhlIHVzZXIgICAgICAgICAqLworICAvKiAgICBjb29yZGluYXRlIHN5c3RlbS4gIFBhcnNlIHRoZSBgYXZhcicgdGFibGUgKGlmIHByZXNlbnQpIHRvIGNvbnZlcnQgKi8KKyAgLyogICAgZnJvbSB1c2VyIHRvIG5vcm1hbGl6ZWQgY29vcmRpbmF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICA6OiBUaGUgZm9udCBmYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgYmxlbmQgc3RydWN0IHdpdGggYGd2YXInIGRhdGEuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9jb29yZHMgOjogVGhpcyBtdXN0IGJlIHRoZSBheGlzIGNvdW50IG9mIHRoZSBmb250LiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29vcmRzICAgICA6OiBBIGNvb3JkaW5hdGUgYXJyYXkgd2l0aCBgbnVtX2Nvb3JkcycgZWxlbWVudHMuICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVFRfU2V0X1Zhcl9EZXNpZ24oIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRzICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgICBlcnJvciAgICAgID0gRlRfRXJyX09rOworICAgIEZUX0ZpeGVkKiAgICAgICBub3JtYWxpemVkID0gTlVMTDsKKyAgICBHWF9CbGVuZCAgICAgICAgYmxlbmQ7CisgICAgRlRfTU1fVmFyKiAgICAgIG1tdmFyOworICAgIEZUX1VJbnQgICAgICAgICBpLCBqOworICAgIEZUX1Zhcl9BeGlzKiAgICBhOworICAgIEdYX0FWYXJTZWdtZW50ICBhdjsKKyAgICBGVF9NZW1vcnkgICAgICAgbWVtb3J5ID0gZmFjZS0+cm9vdC5tZW1vcnk7CisKKworICAgIGlmICggZmFjZS0+YmxlbmQgPT0gTlVMTCApCisgICAgeworICAgICAgaWYgKCAoZXJyb3IgPSBUVF9HZXRfTU1fVmFyKCBmYWNlLCBOVUxMICkpICE9IDAgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgYmxlbmQgPSBmYWNlLT5ibGVuZDsKKyAgICBtbXZhciA9IGJsZW5kLT5tbXZhcjsKKworICAgIGlmICggbnVtX2Nvb3JkcyAhPSBtbXZhci0+bnVtX2F4aXMgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICAvKiBBeGlzIG5vcm1hbGl6YXRpb24gaXMgYSB0d28gc3RhZ2UgcHJvY2Vzcy4gIEZpcnN0IHdlIG5vcm1hbGl6ZSAqLworICAgIC8qIGJhc2VkIG9uIHRoZSBbbWluLGRlZixtYXhdIHZhbHVlcyBmb3IgdGhlIGF4aXMgdG8gYmUgWy0xLDAsMV0uICovCisgICAgLyogVGhlbiwgaWYgdGhlcmUncyBhbiBgYXZhcicgdGFibGUsIHdlIHJlbm9ybWFsaXplIHRoaXMgcmFuZ2UuICAgKi8KKworICAgIGlmICggRlRfTkVXX0FSUkFZKCBub3JtYWxpemVkLCBtbXZhci0+bnVtX2F4aXMgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBhID0gbW12YXItPmF4aXM7CisgICAgZm9yICggaSA9IDA7IGkgPCBtbXZhci0+bnVtX2F4aXM7ICsraSwgKythICkKKyAgICB7CisgICAgICBpZiAoIGNvb3Jkc1tpXSA+IGEtPm1heGltdW0gfHwgY29vcmRzW2ldIDwgYS0+bWluaW11bSApCisgICAgICB7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorCisgICAgICBpZiAoIGNvb3Jkc1tpXSA8IGEtPmRlZiApCisgICAgICAgIG5vcm1hbGl6ZWRbaV0gPSAtRlRfRGl2Rml4KCBjb29yZHNbaV0gLSBhLT5kZWYsIGEtPm1pbmltdW0gLSBhLT5kZWYgKTsKKyAgICAgIGVsc2UgaWYgKCBhLT5tYXhpbXVtID09IGEtPmRlZiApCisgICAgICAgIG5vcm1hbGl6ZWRbaV0gPSAwOworICAgICAgZWxzZQorICAgICAgICBub3JtYWxpemVkW2ldID0gRlRfRGl2Rml4KCBjb29yZHNbaV0gLSBhLT5kZWYsIGEtPm1heGltdW0gLSBhLT5kZWYgKTsKKyAgICB9CisKKyAgICBpZiAoICFibGVuZC0+YXZhcl9jaGVja2VkICkKKyAgICAgIGZ0X3Zhcl9sb2FkX2F2YXIoIGZhY2UgKTsKKworICAgIGlmICggYmxlbmQtPmF2YXJfc2VnbWVudCAhPSBOVUxMICkKKyAgICB7CisgICAgICBhdiA9IGJsZW5kLT5hdmFyX3NlZ21lbnQ7CisgICAgICBmb3IgKCBpID0gMDsgaSA8IG1tdmFyLT5udW1fYXhpczsgKytpLCArK2F2ICkKKyAgICAgIHsKKyAgICAgICAgZm9yICggaiA9IDE7IGogPCAoRlRfVUludClhdi0+cGFpckNvdW50OyArK2ogKQorICAgICAgICAgIGlmICggbm9ybWFsaXplZFtpXSA8IGF2LT5jb3JyZXNwb25kZW5jZVtqXS5mcm9tQ29vcmQgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIG5vcm1hbGl6ZWRbaV0gPQorICAgICAgICAgICAgICBGVF9NdWxEaXYoIG5vcm1hbGl6ZWRbaV0gLSBhdi0+Y29ycmVzcG9uZGVuY2VbaiAtIDFdLmZyb21Db29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhdi0+Y29ycmVzcG9uZGVuY2Vbal0udG9Db29yZCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhdi0+Y29ycmVzcG9uZGVuY2VbaiAtIDFdLnRvQ29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYXYtPmNvcnJlc3BvbmRlbmNlW2pdLmZyb21Db29yZCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhdi0+Y29ycmVzcG9uZGVuY2VbaiAtIDFdLmZyb21Db29yZCApICsKKyAgICAgICAgICAgICAgYXYtPmNvcnJlc3BvbmRlbmNlW2ogLSAxXS50b0Nvb3JkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGVycm9yID0gVFRfU2V0X01NX0JsZW5kKCBmYWNlLCBudW1fY29vcmRzLCBub3JtYWxpemVkICk7CisKKyAgRXhpdDoKKyAgICBGVF9GUkVFKCBub3JtYWxpemVkICk7CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICBHWCBWQVIgUEFSU0lORyBST1VUSU5FUyAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2ZhY2VfdmFyeV9jdnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE1vZGlmeSB0aGUgbG9hZGVkIGN2dCB0YWJsZSBhY2NvcmRpbmcgdG8gdGhlIGBjdmFyJyB0YWJsZSBhbmQgdGhlICAqLworICAvKiAgICBmb250J3MgYmxlbmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogQSBoYW5kbGUgdG8gdGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE1vc3QgZXJyb3JzIGFyZSBpZ25vcmVkLiAgSXQgaXMgcGVyZmVjdGx5IHZhbGlkIG5vdCB0byBoYXZlIGEgICAgICAqLworICAvKiAgICBgY3ZhcicgdGFibGUgZXZlbiBpZiB0aGVyZSBpcyBhIGBndmFyJyBhbmQgYGZ2YXInIHRhYmxlLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX3ZhcnlfY3Z0KCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIEZUX0Vycm9yICAgIGVycm9yOworICAgIEZUX01lbW9yeSAgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIEZUX1VMb25nICAgIHRhYmxlX3N0YXJ0OworICAgIEZUX1VMb25nICAgIHRhYmxlX2xlbjsKKyAgICBGVF9VSW50ICAgICB0dXBsZUNvdW50OworICAgIEZUX1VMb25nICAgIG9mZnNldFRvRGF0YTsKKyAgICBGVF9VTG9uZyAgICBoZXJlOworICAgIEZUX1VJbnQgICAgIGksIGo7CisgICAgRlRfRml4ZWQqICAgdHVwbGVfY29vcmRzICAgID0gTlVMTDsKKyAgICBGVF9GaXhlZCogICBpbV9zdGFydF9jb29yZHMgPSBOVUxMOworICAgIEZUX0ZpeGVkKiAgIGltX2VuZF9jb29yZHMgICA9IE5VTEw7CisgICAgR1hfQmxlbmQgICAgYmxlbmQgICAgICAgICAgID0gZmFjZS0+YmxlbmQ7CisgICAgRlRfVUludCAgICAgcG9pbnRfY291bnQ7CisgICAgRlRfVVNob3J0KiAgbG9jYWxwb2ludHM7CisgICAgRlRfU2hvcnQqICAgZGVsdGFzOworCisKKyAgICBGVF9UUkFDRTIoKCAiQ1ZBUiAiICkpOworCisgICAgaWYgKCBibGVuZCA9PSBOVUxMICkKKyAgICB7CisgICAgICBGVF9UUkFDRTIoKCAidHRfZmFjZV92YXJ5X2N2dDogbm8gYmxlbmQgc3BlY2lmaWVkXG4iICkpOworCisgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoIGZhY2UtPmN2dCA9PSBOVUxMICkKKyAgICB7CisgICAgICBGVF9UUkFDRTIoKCAidHRfZmFjZV92YXJ5X2N2dDogbm8gYGN2dCAnIHRhYmxlXG4iICkpOworCisgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfY3Zhciwgc3RyZWFtLCAmdGFibGVfbGVuICk7CisgICAgaWYgKCBlcnJvciApCisgICAgeworICAgICAgRlRfVFJBQ0UyKCggImlzIG1pc3NpbmdcbiIgKSk7CisKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGlmICggRlRfRlJBTUVfRU5URVIoIHRhYmxlX2xlbiApICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICB0YWJsZV9zdGFydCA9IEZUX1N0cmVhbV9GVGVsbCggc3RyZWFtICk7CisgICAgaWYgKCBGVF9HRVRfTE9ORygpICE9IDB4MDAwMTAwMDBMICkKKyAgICB7CisgICAgICBGVF9UUkFDRTIoKCAiYmFkIHRhYmxlIHZlcnNpb25cbiIgKSk7CisKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgICAgZ290byBGRXhpdDsKKyAgICB9CisKKyAgICBpZiAoIEZUX05FV19BUlJBWSggdHVwbGVfY29vcmRzLCBibGVuZC0+bnVtX2F4aXMgKSAgICB8fAorICAgICAgICAgRlRfTkVXX0FSUkFZKCBpbV9zdGFydF9jb29yZHMsIGJsZW5kLT5udW1fYXhpcyApIHx8CisgICAgICAgICBGVF9ORVdfQVJSQVkoIGltX2VuZF9jb29yZHMsIGJsZW5kLT5udW1fYXhpcyApICAgKQorICAgICAgZ290byBGRXhpdDsKKworICAgIHR1cGxlQ291bnQgICA9IEZUX0dFVF9VU0hPUlQoKTsKKyAgICBvZmZzZXRUb0RhdGEgPSB0YWJsZV9zdGFydCArIEZUX0dFVF9VU0hPUlQoKTsKKworICAgIC8qIFRoZSBkb2N1bWVudGF0aW9uIGltcGxpZXMgdGhlcmUgYXJlIGZsYWdzIHBhY2tlZCBpbnRvIHRoZSAgICAgICAgKi8KKyAgICAvKiB0dXBsZWNvdW50LCBidXQgSm9obiBKZW5raW5zIHNheXMgdGhhdCBzaGFyZWQgcG9pbnRzIGRvbid0IGFwcGx5ICovCisgICAgLyogdG8gYGN2YXInLCBhbmQgbm8gb3RoZXIgZmxhZ3MgYXJlIGRlZmluZWQuICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgZm9yICggaSA9IDA7IGkgPCAoIHR1cGxlQ291bnQgJiAweEZGRiApOyArK2kgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgICB0dXBsZURhdGFTaXplOworICAgICAgRlRfVUludCAgIHR1cGxlSW5kZXg7CisgICAgICBGVF9GaXhlZCAgYXBwbHk7CisKKworICAgICAgdHVwbGVEYXRhU2l6ZSA9IEZUX0dFVF9VU0hPUlQoKTsKKyAgICAgIHR1cGxlSW5kZXggICAgPSBGVF9HRVRfVVNIT1JUKCk7CisKKyAgICAgIC8qIFRoZXJlIGlzIG5vIHByb3Zpc2lvbiBoZXJlIGZvciBhIGdsb2JhbCB0dXBsZSBjb29yZGluYXRlIHNlY3Rpb24sICovCisgICAgICAvKiBzbyBKb2huIHNheXMuICBUaGVyZSBhcmUgbm8gdHVwbGUgaW5kaWNlcywganVzdCBlbWJlZGRlZCB0dXBsZXMuICAqLworCisgICAgICBpZiAoIHR1cGxlSW5kZXggJiBHWF9USV9FTUJFRERFRF9UVVBMRV9DT09SRCApCisgICAgICB7CisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgYmxlbmQtPm51bV9heGlzOyArK2ogKQorICAgICAgICAgIHR1cGxlX2Nvb3Jkc1tqXSA9IEZUX0dFVF9TSE9SVCgpIDw8IDI7IC8qIGNvbnZlcnQgZnJvbSAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzaG9ydCBmcmFjIHRvIGZpeGVkICovCisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIHNraXAgdGhpcyB0dXBsZTsgaXQgbWFrZXMgbm8gc2Vuc2UgKi8KKworICAgICAgICBpZiAoIHR1cGxlSW5kZXggJiBHWF9USV9JTlRFUk1FRElBVEVfVFVQTEUgKQorICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgMiAqIGJsZW5kLT5udW1fYXhpczsgKytqICkKKyAgICAgICAgICAgICh2b2lkKUZUX0dFVF9TSE9SVCgpOworCisgICAgICAgIG9mZnNldFRvRGF0YSArPSB0dXBsZURhdGFTaXplOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgaWYgKCB0dXBsZUluZGV4ICYgR1hfVElfSU5URVJNRURJQVRFX1RVUExFICkKKyAgICAgIHsKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBibGVuZC0+bnVtX2F4aXM7ICsraiApCisgICAgICAgICAgaW1fc3RhcnRfY29vcmRzW2pdID0gRlRfR0VUX1NIT1JUKCkgPDwgMjsKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBibGVuZC0+bnVtX2F4aXM7ICsraiApCisgICAgICAgICAgaW1fZW5kX2Nvb3Jkc1tqXSA9IEZUX0dFVF9TSE9SVCgpIDw8IDI7CisgICAgICB9CisKKyAgICAgIGFwcGx5ID0gZnRfdmFyX2FwcGx5X3R1cGxlKCBibGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVVNob3J0KXR1cGxlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVwbGVfY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltX3N0YXJ0X2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbV9lbmRfY29vcmRzICk7CisgICAgICBpZiAoIC8qIHR1cGxlIGlzbid0IGFjdGl2ZSBmb3Igb3VyIGJsZW5kICovCisgICAgICAgICAgIGFwcGx5ID09IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAvKiBnbG9iYWwgcG9pbnRzIG5vdCBhbGxvd2VkLCAgICAgICAgICAgKi8KKyAgICAgICAgICAgLyogaWYgdGhleSBhcmVuJ3QgbG9jYWwsIG1ha2VzIG5vIHNlbnNlICovCisgICAgICAgICAgICEoIHR1cGxlSW5kZXggJiBHWF9USV9QUklWQVRFX1BPSU5UX05VTUJFUlMgKSApCisgICAgICB7CisgICAgICAgIG9mZnNldFRvRGF0YSArPSB0dXBsZURhdGFTaXplOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKworICAgICAgaGVyZSA9IEZUX1N0cmVhbV9GVGVsbCggc3RyZWFtICk7CisKKyAgICAgIEZUX1N0cmVhbV9TZWVrU2V0KCBzdHJlYW0sIG9mZnNldFRvRGF0YSApOworCisgICAgICBsb2NhbHBvaW50cyA9IGZ0X3Zhcl9yZWFkcGFja2VkcG9pbnRzKCBzdHJlYW0sICZwb2ludF9jb3VudCApOworICAgICAgZGVsdGFzICAgICAgPSBmdF92YXJfcmVhZHBhY2tlZGRlbHRhcyggc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRfY291bnQgPT0gMCA/IGZhY2UtPmN2dF9zaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcG9pbnRfY291bnQgKTsKKyAgICAgIGlmICggbG9jYWxwb2ludHMgPT0gTlVMTCB8fCBkZWx0YXMgPT0gTlVMTCApCisgICAgICAgIC8qIGZhaWx1cmUsIGlnbm9yZSBpdCAqLzsKKworICAgICAgZWxzZSBpZiAoIGxvY2FscG9pbnRzID09IEFMTF9QT0lOVFMgKQorICAgICAgeworICAgICAgICAvKiB0aGlzIG1lYW5zIHRoYXQgdGhlcmUgYXJlIGRlbHRhcyBmb3IgZXZlcnkgZW50cnkgaW4gY3Z0ICovCisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgZmFjZS0+Y3Z0X3NpemU7ICsraiApCisgICAgICAgICAgZmFjZS0+Y3Z0W2pdID0gKEZUX1Nob3J0KSggZmFjZS0+Y3Z0W2pdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxGaXgoIGRlbHRhc1tqXSwgYXBwbHkgKSApOworICAgICAgfQorCisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgcG9pbnRfY291bnQ7ICsraiApCisgICAgICAgIHsKKyAgICAgICAgICBpbnQgIHBpbmRleCA9IGxvY2FscG9pbnRzW2pdOworCisgICAgICAgICAgZmFjZS0+Y3Z0W3BpbmRleF0gPSAoRlRfU2hvcnQpKCBmYWNlLT5jdnRbcGluZGV4XSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWxGaXgoIGRlbHRhc1tqXSwgYXBwbHkgKSApOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmICggbG9jYWxwb2ludHMgIT0gQUxMX1BPSU5UUyApCisgICAgICAgIEZUX0ZSRUUoIGxvY2FscG9pbnRzICk7CisgICAgICBGVF9GUkVFKCBkZWx0YXMgKTsKKworICAgICAgb2Zmc2V0VG9EYXRhICs9IHR1cGxlRGF0YVNpemU7CisKKyAgICAgIEZUX1N0cmVhbV9TZWVrU2V0KCBzdHJlYW0sIGhlcmUgKTsKKyAgICB9CisKKyAgRkV4aXQ6CisgICAgRlRfRlJBTUVfRVhJVCgpOworCisgIEV4aXQ6CisgICAgRlRfRlJFRSggdHVwbGVfY29vcmRzICk7CisgICAgRlRfRlJFRSggaW1fc3RhcnRfY29vcmRzICk7CisgICAgRlRfRlJFRSggaW1fZW5kX2Nvb3JkcyApOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9WYXJ5X0dldF9HbHlwaF9EZWx0YXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkIHRoZSBhcHByb3ByaWF0ZSBkZWx0YXMgZm9yIHRoZSBjdXJyZW50IGdseXBoLiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgICAgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGdseXBoX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgZ2x5cGggYmVpbmcgbW9kaWZpZWQuICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbl9wb2ludHMgICAgOjogVGhlIG51bWJlciBvZiB0aGUgcG9pbnRzIGluIHRoZSBnbHlwaCwgaW5jbHVkaW5nICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgIHBoYW50b20gcG9pbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlbHRhcyAgICAgIDo6IFRoZSBhcnJheSBvZiBwb2ludHMgdG8gY2hhbmdlLiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFRUX1ZhcnlfR2V0X0dseXBoX0RlbHRhcyggVFRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogICpkZWx0YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIG5fcG9pbnRzICkKKyAgeworICAgIEZUX1N0cmVhbSAgIHN0cmVhbSA9IGZhY2UtPnJvb3Quc3RyZWFtOworICAgIEZUX01lbW9yeSAgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIEdYX0JsZW5kICAgIGJsZW5kICA9IGZhY2UtPmJsZW5kOworICAgIEZUX1ZlY3RvciogIGRlbHRhX3h5ID0gTlVMTDsKKworICAgIEZUX0Vycm9yICAgIGVycm9yOworICAgIEZUX1VMb25nICAgIGdseXBoX3N0YXJ0OworICAgIEZUX1VJbnQgICAgIHR1cGxlQ291bnQ7CisgICAgRlRfVUxvbmcgICAgb2Zmc2V0VG9EYXRhOworICAgIEZUX1VMb25nICAgIGhlcmU7CisgICAgRlRfVUludCAgICAgaSwgajsKKyAgICBGVF9GaXhlZCogICB0dXBsZV9jb29yZHMgICAgPSBOVUxMOworICAgIEZUX0ZpeGVkKiAgIGltX3N0YXJ0X2Nvb3JkcyA9IE5VTEw7CisgICAgRlRfRml4ZWQqICAgaW1fZW5kX2Nvb3JkcyAgID0gTlVMTDsKKyAgICBGVF9VSW50ICAgICBwb2ludF9jb3VudCwgc3BvaW50X2NvdW50ID0gMDsKKyAgICBGVF9VU2hvcnQqICBzaGFyZWRwb2ludHMgPSBOVUxMOworICAgIEZUX1VTaG9ydCogIGxvY2FscG9pbnRzICA9IE5VTEw7CisgICAgRlRfVVNob3J0KiAgcG9pbnRzOworICAgIEZUX1Nob3J0ICAgICpkZWx0YXNfeCwgKmRlbHRhc195OworCisKKyAgICBpZiAoICFmYWNlLT5kb2JsZW5kIHx8IGJsZW5kID09IE5VTEwgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICAvKiB0byBiZSBmcmVlZCBieSB0aGUgY2FsbGVyICovCisgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGRlbHRhX3h5LCBuX3BvaW50cyApICkKKyAgICAgIGdvdG8gRXhpdDsKKyAgICAqZGVsdGFzID0gZGVsdGFfeHk7CisKKyAgICBpZiAoIGdseXBoX2luZGV4ID49IGJsZW5kLT5ndl9nbHlwaGNudCAgICAgIHx8CisgICAgICAgICBibGVuZC0+Z2x5cGhvZmZzZXRzW2dseXBoX2luZGV4XSA9PQorICAgICAgICAgICBibGVuZC0+Z2x5cGhvZmZzZXRzW2dseXBoX2luZGV4ICsgMV0gKQorICAgICAgcmV0dXJuIEZUX0Vycl9PazsgICAgICAgICAgICAgICAvKiBubyB2YXJpYXRpb24gZGF0YSBmb3IgdGhpcyBnbHlwaCAqLworCisgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggYmxlbmQtPmdseXBob2Zmc2V0c1tnbHlwaF9pbmRleF0gKSAgIHx8CisgICAgICAgICBGVF9GUkFNRV9FTlRFUiggYmxlbmQtPmdseXBob2Zmc2V0c1tnbHlwaF9pbmRleCArIDFdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kLT5nbHlwaG9mZnNldHNbZ2x5cGhfaW5kZXhdICkgKQorICAgICAgZ290byBGYWlsMTsKKworICAgIGdseXBoX3N0YXJ0ID0gRlRfU3RyZWFtX0ZUZWxsKCBzdHJlYW0gKTsKKworICAgIC8qIGVhY2ggc2V0IG9mIGdseXBoIHZhcmlhdGlvbiBkYXRhIGlzIGZvcm1hdHRlZCBzaW1pbGFybHkgdG8gYGN2YXInICovCisgICAgLyogKGV4Y2VwdCB3ZSBnZXQgc2hhcmVkIHBvaW50cyBhbmQgZ2xvYmFsIHR1cGxlcykgICAgICAgICAgICAgICAgICAgKi8KKworICAgIGlmICggRlRfTkVXX0FSUkFZKCB0dXBsZV9jb29yZHMsIGJsZW5kLT5udW1fYXhpcyApICAgIHx8CisgICAgICAgICBGVF9ORVdfQVJSQVkoIGltX3N0YXJ0X2Nvb3JkcywgYmxlbmQtPm51bV9heGlzICkgfHwKKyAgICAgICAgIEZUX05FV19BUlJBWSggaW1fZW5kX2Nvb3JkcywgYmxlbmQtPm51bV9heGlzICkgICApCisgICAgICBnb3RvIEZhaWwyOworCisgICAgdHVwbGVDb3VudCAgID0gRlRfR0VUX1VTSE9SVCgpOworICAgIG9mZnNldFRvRGF0YSA9IGdseXBoX3N0YXJ0ICsgRlRfR0VUX1VTSE9SVCgpOworCisgICAgaWYgKCB0dXBsZUNvdW50ICYgR1hfVENfVFVQTEVTX1NIQVJFX1BPSU5UX05VTUJFUlMgKQorICAgIHsKKyAgICAgIGhlcmUgPSBGVF9TdHJlYW1fRlRlbGwoIHN0cmVhbSApOworCisgICAgICBGVF9TdHJlYW1fU2Vla1NldCggc3RyZWFtLCBvZmZzZXRUb0RhdGEgKTsKKworICAgICAgc2hhcmVkcG9pbnRzID0gZnRfdmFyX3JlYWRwYWNrZWRwb2ludHMoIHN0cmVhbSwgJnNwb2ludF9jb3VudCApOworICAgICAgb2Zmc2V0VG9EYXRhID0gRlRfU3RyZWFtX0ZUZWxsKCBzdHJlYW0gKTsKKworICAgICAgRlRfU3RyZWFtX1NlZWtTZXQoIHN0cmVhbSwgaGVyZSApOworICAgIH0KKworICAgIGZvciAoIGkgPSAwOyBpIDwgKCB0dXBsZUNvdW50ICYgR1hfVENfVFVQTEVfQ09VTlRfTUFTSyApOyArK2kgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgICB0dXBsZURhdGFTaXplOworICAgICAgRlRfVUludCAgIHR1cGxlSW5kZXg7CisgICAgICBGVF9GaXhlZCAgYXBwbHk7CisKKworICAgICAgdHVwbGVEYXRhU2l6ZSA9IEZUX0dFVF9VU0hPUlQoKTsKKyAgICAgIHR1cGxlSW5kZXggICAgPSBGVF9HRVRfVVNIT1JUKCk7CisKKyAgICAgIGlmICggdHVwbGVJbmRleCAmIEdYX1RJX0VNQkVEREVEX1RVUExFX0NPT1JEICkKKyAgICAgIHsKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBibGVuZC0+bnVtX2F4aXM7ICsraiApCisgICAgICAgICAgdHVwbGVfY29vcmRzW2pdID0gRlRfR0VUX1NIT1JUKCkgPDwgMjsgIC8qIGNvbnZlcnQgZnJvbSAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2hvcnQgZnJhYyB0byBmaXhlZCAqLworICAgICAgfQorICAgICAgZWxzZSBpZiAoICggdHVwbGVJbmRleCAmIEdYX1RJX1RVUExFX0lOREVYX01BU0sgKSA+PSBibGVuZC0+dHVwbGVjb3VudCApCisgICAgICB7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfVGFibGUgKTsKKyAgICAgICAgZ290byBGYWlsMzsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgRlRfTUVNX0NPUFkoCisgICAgICAgICAgdHVwbGVfY29vcmRzLAorICAgICAgICAgICZibGVuZC0+dHVwbGVjb29yZHNbKHR1cGxlSW5kZXggJiAweEZGRikgKiBibGVuZC0+bnVtX2F4aXNdLAorICAgICAgICAgIGJsZW5kLT5udW1fYXhpcyAqIHNpemVvZiAoIEZUX0ZpeGVkICkgKTsKKyAgICAgIH0KKworICAgICAgaWYgKCB0dXBsZUluZGV4ICYgR1hfVElfSU5URVJNRURJQVRFX1RVUExFICkKKyAgICAgIHsKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBibGVuZC0+bnVtX2F4aXM7ICsraiApCisgICAgICAgICAgaW1fc3RhcnRfY29vcmRzW2pdID0gRlRfR0VUX1NIT1JUKCkgPDwgMjsKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBibGVuZC0+bnVtX2F4aXM7ICsraiApCisgICAgICAgICAgaW1fZW5kX2Nvb3Jkc1tqXSA9IEZUX0dFVF9TSE9SVCgpIDw8IDI7CisgICAgICB9CisKKyAgICAgIGFwcGx5ID0gZnRfdmFyX2FwcGx5X3R1cGxlKCBibGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfVVNob3J0KXR1cGxlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVwbGVfY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltX3N0YXJ0X2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbV9lbmRfY29vcmRzICk7CisKKyAgICAgIGlmICggYXBwbHkgPT0gMCApICAgICAgICAgICAgICAvKiB0dXBsZSBpc24ndCBhY3RpdmUgZm9yIG91ciBibGVuZCAqLworICAgICAgeworICAgICAgICBvZmZzZXRUb0RhdGEgKz0gdHVwbGVEYXRhU2l6ZTsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAgIGhlcmUgPSBGVF9TdHJlYW1fRlRlbGwoIHN0cmVhbSApOworCisgICAgICBpZiAoIHR1cGxlSW5kZXggJiBHWF9USV9QUklWQVRFX1BPSU5UX05VTUJFUlMgKQorICAgICAgeworICAgICAgICBGVF9TdHJlYW1fU2Vla1NldCggc3RyZWFtLCBvZmZzZXRUb0RhdGEgKTsKKworICAgICAgICBsb2NhbHBvaW50cyA9IGZ0X3Zhcl9yZWFkcGFja2VkcG9pbnRzKCBzdHJlYW0sICZwb2ludF9jb3VudCApOworICAgICAgICBwb2ludHMgICAgICA9IGxvY2FscG9pbnRzOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBwb2ludHMgICAgICA9IHNoYXJlZHBvaW50czsKKyAgICAgICAgcG9pbnRfY291bnQgPSBzcG9pbnRfY291bnQ7CisgICAgICB9CisKKyAgICAgIGRlbHRhc194ID0gZnRfdmFyX3JlYWRwYWNrZWRkZWx0YXMoIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50X2NvdW50ID09IDAgPyBuX3BvaW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBvaW50X2NvdW50ICk7CisgICAgICBkZWx0YXNfeSA9IGZ0X3Zhcl9yZWFkcGFja2VkZGVsdGFzKCBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludF9jb3VudCA9PSAwID8gbl9wb2ludHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwb2ludF9jb3VudCApOworCisgICAgICBpZiAoIHBvaW50cyA9PSBOVUxMIHx8IGRlbHRhc195ID09IE5VTEwgfHwgZGVsdGFzX3ggPT0gTlVMTCApCisgICAgICAgIDsgLyogZmFpbHVyZSwgaWdub3JlIGl0ICovCisKKyAgICAgIGVsc2UgaWYgKCBwb2ludHMgPT0gQUxMX1BPSU5UUyApCisgICAgICB7CisgICAgICAgIC8qIHRoaXMgbWVhbnMgdGhhdCB0aGVyZSBhcmUgZGVsdGFzIGZvciBldmVyeSBwb2ludCBpbiB0aGUgZ2x5cGggKi8KKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBuX3BvaW50czsgKytqICkKKyAgICAgICAgeworICAgICAgICAgIGRlbHRhX3h5W2pdLnggKz0gRlRfTXVsRml4KCBkZWx0YXNfeFtqXSwgYXBwbHkgKTsKKyAgICAgICAgICBkZWx0YV94eVtqXS55ICs9IEZUX011bEZpeCggZGVsdGFzX3lbal0sIGFwcGx5ICk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZWxzZQorICAgICAgeworICAgICAgICBmb3IgKCBqID0gMDsgaiA8IHBvaW50X2NvdW50OyArK2ogKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCBsb2NhbHBvaW50c1tqXSA+PSBuX3BvaW50cyApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgIGRlbHRhX3h5W2xvY2FscG9pbnRzW2pdXS54ICs9IEZUX011bEZpeCggZGVsdGFzX3hbal0sIGFwcGx5ICk7CisgICAgICAgICAgZGVsdGFfeHlbbG9jYWxwb2ludHNbal1dLnkgKz0gRlRfTXVsRml4KCBkZWx0YXNfeVtqXSwgYXBwbHkgKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAoIGxvY2FscG9pbnRzICE9IEFMTF9QT0lOVFMgKQorICAgICAgICBGVF9GUkVFKCBsb2NhbHBvaW50cyApOworICAgICAgRlRfRlJFRSggZGVsdGFzX3ggKTsKKyAgICAgIEZUX0ZSRUUoIGRlbHRhc195ICk7CisKKyAgICAgIG9mZnNldFRvRGF0YSArPSB0dXBsZURhdGFTaXplOworCisgICAgICBGVF9TdHJlYW1fU2Vla1NldCggc3RyZWFtLCBoZXJlICk7CisgICAgfQorCisgIEZhaWwzOgorICAgIEZUX0ZSRUUoIHR1cGxlX2Nvb3JkcyApOworICAgIEZUX0ZSRUUoIGltX3N0YXJ0X2Nvb3JkcyApOworICAgIEZUX0ZSRUUoIGltX2VuZF9jb29yZHMgKTsKKworICBGYWlsMjoKKyAgICBGVF9GUkFNRV9FWElUKCk7CisKKyAgRmFpbDE6CisgICAgaWYgKCBlcnJvciApCisgICAgeworICAgICAgRlRfRlJFRSggZGVsdGFfeHkgKTsKKyAgICAgICpkZWx0YXMgPSBOVUxMOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZG9uZV9ibGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZXMgdGhlIGJsZW5kIGludGVybmFsIGRhdGEgc3RydWN0dXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICB0dF9kb25lX2JsZW5kKCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgR1hfQmxlbmQgICBibGVuZCApCisgIHsKKyAgICBpZiAoIGJsZW5kICE9IE5VTEwgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgIGk7CisKKworICAgICAgRlRfRlJFRSggYmxlbmQtPm5vcm1hbGl6ZWRjb29yZHMgKTsKKyAgICAgIEZUX0ZSRUUoIGJsZW5kLT5tbXZhciApOworCisgICAgICBpZiAoIGJsZW5kLT5hdmFyX3NlZ21lbnQgIT0gTlVMTCApCisgICAgICB7CisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgYmxlbmQtPm51bV9heGlzOyArK2kgKQorICAgICAgICAgIEZUX0ZSRUUoIGJsZW5kLT5hdmFyX3NlZ21lbnRbaV0uY29ycmVzcG9uZGVuY2UgKTsKKyAgICAgICAgRlRfRlJFRSggYmxlbmQtPmF2YXJfc2VnbWVudCApOworICAgICAgfQorCisgICAgICBGVF9GUkVFKCBibGVuZC0+dHVwbGVjb29yZHMgKTsKKyAgICAgIEZUX0ZSRUUoIGJsZW5kLT5nbHlwaG9mZnNldHMgKTsKKyAgICAgIEZUX0ZSRUUoIGJsZW5kICk7CisgICAgfQorICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0Z3h2YXIuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRneHZhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZmU5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0Z3h2YXIuaApAQCAtMCwwICsxLDE4MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHRneHZhci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFRydWVUeXBlIEdYIEZvbnQgVmFyaWF0aW9uIGxvYWRlciAoc3BlY2lmaWNhdGlvbikgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDA0IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBXZXJuZXIgTGVtYmVyZyBhbmQgR2VvcmdlIFdpbGxpYW1zLiAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVFRHWFZBUl9IX18KKyNkZWZpbmUgX19UVEdYVkFSX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAidHRvYmpzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHWF9BVmFyQ29ycmVzcG9uZGVuY2VSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGRhdGEgc3RydWN0dXJlIHJlcHJlc2VudGluZyBgc2hvcnRGcmFjQ29ycmVzcG9uZGVuY2UnIGluIGBhdmFyJyAgKi8KKyAgLyogICAgdGFibGUgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9ucyBmcm9tIEFwcGxlLiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgR1hfQVZhckNvcnJlc3BvbmRlbmNlUmVjXworICB7CisgICAgRlRfRml4ZWQgIGZyb21Db29yZDsKKyAgICBGVF9GaXhlZCAgdG9Db29yZDsKKworICB9IEdYX0FWYXJDb3JyZXNwb25kZW5jZVJlY18sICpHWF9BVmFyQ29ycmVzcG9uZGVuY2U7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHWF9BVmFyUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEYXRhIGZyb20gdGhlIHNlZ21lbnQgZmllbGQgb2YgYGF2YXInIHRhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlcmUgaXMgb25lIG9mIHRoZXNlIGZvciBlYWNoIGF4aXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgR1hfQVZhclNlZ21lbnRSZWNfCisgIHsKKyAgICBGVF9VU2hvcnQgICAgICAgICAgICAgIHBhaXJDb3VudDsKKyAgICBHWF9BVmFyQ29ycmVzcG9uZGVuY2UgIGNvcnJlc3BvbmRlbmNlOyAvKiBhcnJheSB3aXRoIHBhaXJDb3VudCBlbnRyaWVzICovCisKKyAgfSBHWF9BVmFyU2VnbWVudFJlYywgKkdYX0FWYXJTZWdtZW50OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8U3RydWN0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR1hfQmxlbmRSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGF0YSBmb3IgaW50ZXJwb2xhdGluZyBhIGZvbnQgZnJvbSBhIGRpc3RvcnRhYmxlIGZvbnQgc3BlY2lmaWVkICAgICovCisgIC8qICAgIGJ5IHRoZSBHWCAqdmFyIHRhYmxlcyAoW2ZnY2FddmFyKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZpZWxkcz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9heGlzICAgICAgICAgOjogVGhlIG51bWJlciBvZiBheGVzIGFsb25nIHdoaWNoIGludGVycG9sYXRpb24gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICBtYXkgaGFwcGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG5vcm1hbGl6ZWRjb29yZHMgOjogQSBub3JtYWxpemVkIHZhbHVlIChiZXR3ZWVuIFstMSwxXSkgaW5kaWNhdGluZyAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb250cmlidXRpb24gYWxvbmcgZWFjaCBheGlzIHRvIHRoZSBmaW5hbCAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnBvbGF0ZWQgZm9udC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgR1hfQmxlbmRSZWNfCisgIHsKKyAgICBGVF9VSW50ICAgICAgICAgbnVtX2F4aXM7CisgICAgRlRfRml4ZWQqICAgICAgIG5vcm1hbGl6ZWRjb29yZHM7CisKKyAgICBGVF9NTV9WYXIqICAgICAgbW12YXI7CisgICAgRlRfT2Zmc2V0ICAgICAgIG1tdmFyX2xlbjsKKworICAgIEZUX0Jvb2wgICAgICAgICBhdmFyX2NoZWNrZWQ7CisgICAgR1hfQVZhclNlZ21lbnQgIGF2YXJfc2VnbWVudDsKKworICAgIEZUX1VJbnQgICAgICAgICB0dXBsZWNvdW50OyAgICAgIC8qIHNoYXJlZCB0dXBsZXMgaW4gYGd2YXInICAgICAgICAgICAqLworICAgIEZUX0ZpeGVkKiAgICAgICB0dXBsZWNvb3JkczsgICAgIC8qIHR1cGxlY29vcmRzW3R1cGxlY291bnRdW251bV9heGlzXSAqLworCisgICAgRlRfVUludCAgICAgICAgIGd2X2dseXBoY250OworICAgIEZUX1VMb25nKiAgICAgICBnbHlwaG9mZnNldHM7CisKKyAgfSBHWF9CbGVuZFJlYzsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPGVudW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEdYX1R1cGxlQ291bnRGbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZsYWdzIHVzZWQgd2l0aGluIHRoZSBgVHVwbGVDb3VudCcgZmllbGQgb2YgdGhlIGBndmFyJyB0YWJsZS4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBlbnVtICBHWF9UdXBsZUNvdW50RmxhZ3NfCisgIHsKKyAgICBHWF9UQ19UVVBMRVNfU0hBUkVfUE9JTlRfTlVNQkVSUyA9IDB4ODAwMCwKKyAgICBHWF9UQ19SRVNFUlZFRF9UVVBMRV9GTEFHUyAgICAgICA9IDB4NzAwMCwKKyAgICBHWF9UQ19UVVBMRV9DT1VOVF9NQVNLICAgICAgICAgICA9IDB4MEZGRgorCisgIH0gR1hfVHVwbGVDb3VudEZsYWdzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8ZW51bT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR1hfVHVwbGVJbmRleEZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRmxhZ3MgdXNlZCB3aXRoaW4gdGhlIGBUdXBsZUluZGV4JyBmaWVsZCBvZiB0aGUgYGd2YXInIGFuZCBgY3ZhcicgICovCisgIC8qICAgIHRhYmxlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBlbnVtICBHWF9UdXBsZUluZGV4RmxhZ3NfCisgIHsKKyAgICBHWF9USV9FTUJFRERFRF9UVVBMRV9DT09SRCAgPSAweDgwMDAsCisgICAgR1hfVElfSU5URVJNRURJQVRFX1RVUExFICAgID0gMHg0MDAwLAorICAgIEdYX1RJX1BSSVZBVEVfUE9JTlRfTlVNQkVSUyA9IDB4MjAwMCwKKyAgICBHWF9USV9SRVNFUlZFRF9UVVBMRV9GTEFHICAgPSAweDEwMDAsCisgICAgR1hfVElfVFVQTEVfSU5ERVhfTUFTSyAgICAgID0gMHgwRkZGCisKKyAgfSBHWF9UdXBsZUluZGV4RmxhZ3M7CisKKworI2RlZmluZSBUVEFHX3dnaHQgIEZUX01BS0VfVEFHKCAndycsICdnJywgJ2gnLCAndCcgKQorI2RlZmluZSBUVEFHX3dkdGggIEZUX01BS0VfVEFHKCAndycsICdkJywgJ3QnLCAnaCcgKQorI2RlZmluZSBUVEFHX29wc3ogIEZUX01BS0VfVEFHKCAnbycsICdwJywgJ3MnLCAneicgKQorI2RlZmluZSBUVEFHX3NsbnQgIEZUX01BS0VfVEFHKCAncycsICdsJywgJ24nLCAndCcgKQorCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgVFRfU2V0X01NX0JsZW5kKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBudW1fY29vcmRzLAorICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRzICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgVFRfU2V0X1Zhcl9EZXNpZ24oIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRzICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgVFRfR2V0X01NX1ZhciggVFRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgIEZUX01NX1ZhciogICptYXN0ZXIgKTsKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfdmFyeV9jdnQoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKTsKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIFRUX1ZhcnlfR2V0X0dseXBoX0RlbHRhcyggVFRfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogICpkZWx0YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgIG5fcG9pbnRzICk7CisKKworICBGVF9MT0NBTCggdm9pZCApCisgIHR0X2RvbmVfYmxlbmQoIEZUX01lbW9yeSAgbWVtb3J5LAorICAgICAgICAgICAgICAgICBHWF9CbGVuZCAgIGJsZW5kICk7CisKKworRlRfRU5EX0hFQURFUgorCisKKyNlbmRpZiAvKiBfX1RUR1hWQVJfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdkMmI2MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYwpAQCAtMCwwICsxLDg5NTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0aW50ZXJwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcnVlVHlwZSBieXRlY29kZSBpbnRlcnByZXRlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDEzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgYnkgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyogR3JlZyBIaXRjaGNvY2sgZnJvbSBNaWNyb3NvZnQgaGFzIGhlbHBlZCBhIGxvdCBpbiByZXNvbHZpbmcgdW5jbGVhciAqLworLyogaXNzdWVzOyBtYW55IHRoYW5rcyEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHN5c3RlbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnR0dGRydi5oIgorCisjaW5jbHVkZSAidHRpbnRlcnAuaCIKKyNpbmNsdWRlICJ0dGVycm9ycy5oIgorI2luY2x1ZGUgInR0c3VicGl4LmgiCisKKworI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfdHRpbnRlcnAKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEluIG9yZGVyIHRvIGRldGVjdCBpbmZpbml0ZSBsb29wcyBpbiB0aGUgY29kZSwgd2Ugc2V0IHVwIGEgY291bnRlciAgICAqLworICAvKiB3aXRoaW4gdGhlIHJ1biBsb29wLiAgQSBzaW5nbGUgc3Ryb2tlIG9mIGludGVycHJldGF0aW9uIGlzIG5vdyAgICAgICAgKi8KKyAgLyogbGltaXRlZCB0byBhIG1heGltdW0gbnVtYmVyIG9mIG9wY29kZXMgZGVmaW5lZCBiZWxvdy4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBNQVhfUlVOTkFCTEVfT1BDT0RFUyAgMTAwMDAwMEwKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlcmUgYXJlIHR3byBraW5kcyBvZiBpbXBsZW1lbnRhdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBhLiBzdGF0aWMgaW1wbGVtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBjdXJyZW50IGV4ZWN1dGlvbiBjb250ZXh0IGlzIGEgc3RhdGljIHZhcmlhYmxlLCB3aGljaCBmaWVsZHMgICAqLworICAvKiAgICBhcmUgYWNjZXNzZWQgZGlyZWN0bHkgYnkgdGhlIGludGVycHJldGVyIGR1cmluZyBleGVjdXRpb24uICBUaGUgICAgKi8KKyAgLyogICAgY29udGV4dCBpcyBuYW1lZCBgY3VyJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGlzIHZlcnNpb24gaXMgbm9uLXJlZW50cmFudCwgb2YgY291cnNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIGIuIGluZGlyZWN0IGltcGxlbWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGN1cnJlbnQgZXhlY3V0aW9uIGNvbnRleHQgaXMgcGFzc2VkIHRvIF9lYWNoXyBmdW5jdGlvbiBhcyBpdHMgICovCisgIC8qICAgIGZpcnN0IGFyZ3VtZW50LCBhbmQgZWFjaCBmaWVsZCBpcyB0aHVzIGFjY2Vzc2VkIGluZGlyZWN0bHkuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyB2ZXJzaW9uIGlzIGZ1bGx5IHJlLWVudHJhbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgaWRlYSBpcyB0aGF0IGFuIGluZGlyZWN0IGltcGxlbWVudGF0aW9uIG1heSBiZSBzbG93ZXIgdG8gZXhlY3V0ZSAgKi8KKyAgLyogb24gbG93LWVuZCBwcm9jZXNzb3JzIHRoYXQgYXJlIHVzZWQgaW4gc29tZSBzeXN0ZW1zIChsaWtlIDM4NnMgb3IgICAgICovCisgIC8qIGV2ZW4gNDg2cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGluZGlyZWN0IGltcGxlbWVudGF0aW9uIGlzIG5vdyB0aGUgZGVmYXVsdCwgYXMgICovCisgIC8qIGl0cyBwZXJmb3JtYW5jZSBjb3N0cyBjYW4gYmUgY29uc2lkZXJlZCBuZWdsaWdpYmxlIGluIG91ciBjb250ZXh0LiAgICAqLworICAvKiBOb3RlLCBob3dldmVyLCB0aGF0IHdlIGtlcHQgdGhlIHNhbWUgc291cmNlIHdpdGggbWFjcm9zIGJlY2F1c2U6ICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gVGhlIGNvZGUgaXMga2VwdCB2ZXJ5IGNsb3NlIGluIGRlc2lnbiB0byB0aGUgUGFzY2FsIGNvZGUgdXNlZCBmb3IgICAqLworICAvKiAgIGRldmVsb3BtZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gSXQncyBtdWNoIG1vcmUgcmVhZGFibGUgdGhhdCB3YXkhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSBJdCdzIHN0aWxsIG9wZW4gdG8gZXhwZXJpbWVudGF0aW9uIGFuZCB0dW5pbmcuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIFRUX0NPTkZJR19PUFRJT05fU1RBVElDX0lOVEVSUFJFVEVSICAgICAvKiBpbmRpcmVjdCBpbXBsZW1lbnRhdGlvbiAqLworCisjZGVmaW5lIENVUiAgKCpleGMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWUgdHRvYmpzLmggKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgbWFjcm8gaXMgdXNlZCB3aGVuZXZlciBgZXhlYycgaXMgdW51c2VkIGluIGEgZnVuY3Rpb24sIHRvIGF2b2lkICAqLworICAvKiBzdHVwaWQgd2FybmluZ3MgZnJvbSBwZWRhbnRpYyBjb21waWxlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEZUX1VOVVNFRF9FWEVDICBGVF9VTlVTRUQoIGV4YyApCisKKyNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXRpYyBpbXBsZW1lbnRhdGlvbiAqLworCisjZGVmaW5lIENVUiAgY3VyCisKKyNkZWZpbmUgRlRfVU5VU0VEX0VYRUMgIGludCAgX19kdW1teSA9IF9fZHVtbXkKKworICBzdGF0aWMKKyAgVFRfRXhlY0NvbnRleHRSZWMgIGN1cjsgICAvKiBzdGF0aWMgZXhlYy4gY29udGV4dCB2YXJpYWJsZSAqLworCisgIC8qIGFwcGFyZW50bHksIHdlIGhhdmUgYSBfbG90XyBvZiBkaXJlY3QgaW5kZXhpbmcgd2hlbiBhY2Nlc3NpbmcgICovCisgIC8qIHRoZSBzdGF0aWMgYGN1cicsIHdoaWNoIG1ha2VzIHRoZSBjb2RlIGJpZ2dlciAoZHVlIHRvIGFsbCB0aGUgICovCisgIC8qIGZvdXIgYnl0ZXMgYWRkcmVzc2VzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NUQVRJQ19JTlRFUlBSRVRFUiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgaW5zdHJ1Y3Rpb24gYXJndW1lbnQgc3RhY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIElOU19BUkcgIEVYRUNfT1BfIEZUX0xvbmcqICBhcmdzICAgIC8qIHNlZSB0dG9ianMuaCBmb3IgRVhFQ19PUF8gKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBtYWNybyBpcyB1c2VkIHdoZW5ldmVyIGBhcmdzJyBpcyB1bnVzZWQgaW4gYSBmdW5jdGlvbiwgdG8gYXZvaWQgICovCisgIC8qIHN0dXBpZCB3YXJuaW5ncyBmcm9tIHBlZGFudGljIGNvbXBpbGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRlRfVU5VU0VEX0FSRyAgRlRfVU5VU0VEX0VYRUM7IEZUX1VOVVNFRCggYXJncyApCisKKworI2RlZmluZSBTVUJQSVhFTF9ISU5USU5HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoICgoVFRfRHJpdmVyKUZUX0ZBQ0VfRFJJVkVSKCBDVVIuZmFjZSApKS0+aW50ZXJwcmV0ZXJfdmVyc2lvbiA9PSBcCisgICAgICAgICAgICBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM4ICkKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGZvbGxvd2luZyBtYWNyb3MgaGlkZSB0aGUgdXNlIG9mIEVYRUNfQVJHIGFuZCBFWEVDX0FSR18gdG8gICAgICAgICovCisgIC8qIGluY3JlYXNlIHJlYWRhYmlsaXR5IG9mIHRoZSBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2RlZmluZSBTS0lQX0NvZGUoKSBcCisgICAgICAgICAgU2tpcENvZGUoIEVYRUNfQVJHICkKKworI2RlZmluZSBHRVRfU2hvcnRJbnMoKSBcCisgICAgICAgICAgR2V0U2hvcnRJbnMoIEVYRUNfQVJHICkKKworI2RlZmluZSBOT1JNYWxpemUoIHgsIHksIHYgKSBcCisgICAgICAgICAgTm9ybWFsaXplKCBFWEVDX0FSR18geCwgeSwgdiApCisKKyNkZWZpbmUgU0VUX1N1cGVyUm91bmQoIHNjYWxlLCBmbGFncyApIFwKKyAgICAgICAgICBTZXRTdXBlclJvdW5kKCBFWEVDX0FSR18gc2NhbGUsIGZsYWdzICkKKworI2RlZmluZSBST1VORF9Ob25lKCBkLCBjICkgXAorICAgICAgICAgIFJvdW5kX05vbmUoIEVYRUNfQVJHXyBkLCBjICkKKworI2RlZmluZSBJTlNfR290b19Db2RlUmFuZ2UoIHJhbmdlLCBpcCApIFwKKyAgICAgICAgICBJbnNfR290b19Db2RlUmFuZ2UoIEVYRUNfQVJHXyByYW5nZSwgaXAgKQorCisjZGVmaW5lIENVUl9GdW5jX21vdmUoIHosIHAsIGQgKSBcCisgICAgICAgICAgQ1VSLmZ1bmNfbW92ZSggRVhFQ19BUkdfIHosIHAsIGQgKQorCisjZGVmaW5lIENVUl9GdW5jX21vdmVfb3JpZyggeiwgcCwgZCApIFwKKyAgICAgICAgICBDVVIuZnVuY19tb3ZlX29yaWcoIEVYRUNfQVJHXyB6LCBwLCBkICkKKworI2RlZmluZSBDVVJfRnVuY19yb3VuZCggZCwgYyApIFwKKyAgICAgICAgICBDVVIuZnVuY19yb3VuZCggRVhFQ19BUkdfIGQsIGMgKQorCisjZGVmaW5lIENVUl9GdW5jX3JlYWRfY3Z0KCBpbmRleCApIFwKKyAgICAgICAgICBDVVIuZnVuY19yZWFkX2N2dCggRVhFQ19BUkdfIGluZGV4ICkKKworI2RlZmluZSBDVVJfRnVuY193cml0ZV9jdnQoIGluZGV4LCB2YWwgKSBcCisgICAgICAgICAgQ1VSLmZ1bmNfd3JpdGVfY3Z0KCBFWEVDX0FSR18gaW5kZXgsIHZhbCApCisKKyNkZWZpbmUgQ1VSX0Z1bmNfbW92ZV9jdnQoIGluZGV4LCB2YWwgKSBcCisgICAgICAgICAgQ1VSLmZ1bmNfbW92ZV9jdnQoIEVYRUNfQVJHXyBpbmRleCwgdmFsICkKKworI2RlZmluZSBDVVJSRU5UX1JhdGlvKCkgXAorICAgICAgICAgIEN1cnJlbnRfUmF0aW8oIEVYRUNfQVJHICkKKworI2RlZmluZSBDVVJSRU5UX1BwZW0oKSBcCisgICAgICAgICAgQ3VycmVudF9QcGVtKCBFWEVDX0FSRyApCisKKyNkZWZpbmUgQ1VSX1BwZW0oKSBcCisgICAgICAgICAgQ3VyX1BQRU0oIEVYRUNfQVJHICkKKworI2RlZmluZSBJTlNfU3hWVEwoIGEsIGIsIGMsIGQgKSBcCisgICAgICAgICAgSW5zX1N4VlRMKCBFWEVDX0FSR18gYSwgYiwgYywgZCApCisKKyNkZWZpbmUgQ09NUFVURV9GdW5jcygpIFwKKyAgICAgICAgICBDb21wdXRlX0Z1bmNzKCBFWEVDX0FSRyApCisKKyNkZWZpbmUgQ09NUFVURV9Sb3VuZCggYSApIFwKKyAgICAgICAgICBDb21wdXRlX1JvdW5kKCBFWEVDX0FSR18gYSApCisKKyNkZWZpbmUgQ09NUFVURV9Qb2ludF9EaXNwbGFjZW1lbnQoIGEsIGIsIGMsIGQgKSBcCisgICAgICAgICAgQ29tcHV0ZV9Qb2ludF9EaXNwbGFjZW1lbnQoIEVYRUNfQVJHXyBhLCBiLCBjLCBkICkKKworI2RlZmluZSBNT1ZFX1pwMl9Qb2ludCggYSwgYiwgYywgdCApIFwKKyAgICAgICAgICBNb3ZlX1pwMl9Qb2ludCggRVhFQ19BUkdfIGEsIGIsIGMsIHQgKQorCisKKyNkZWZpbmUgQ1VSX0Z1bmNfcHJvamVjdCggdjEsIHYyICkgIFwKKyAgICAgICAgICBDVVIuZnVuY19wcm9qZWN0KCBFWEVDX0FSR18gKHYxKS0+eCAtICh2MiktPngsICh2MSktPnkgLSAodjIpLT55ICkKKworI2RlZmluZSBDVVJfRnVuY19kdWFscHJvaiggdjEsIHYyICkgIFwKKyAgICAgICAgICBDVVIuZnVuY19kdWFscHJvaiggRVhFQ19BUkdfICh2MSktPnggLSAodjIpLT54LCAodjEpLT55IC0gKHYyKS0+eSApCisKKyNkZWZpbmUgQ1VSX2Zhc3RfcHJvamVjdCggdiApIFwKKyAgICAgICAgICBDVVIuZnVuY19wcm9qZWN0KCBFWEVDX0FSR18gKHYpLT54LCAodiktPnkgKQorCisjZGVmaW5lIENVUl9mYXN0X2R1YWxwcm9qKCB2ICkgXAorICAgICAgICAgIENVUi5mdW5jX2R1YWxwcm9qKCBFWEVDX0FSR18gKHYpLT54LCAodiktPnkgKQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJbnN0cnVjdGlvbiBkaXNwYXRjaCBmdW5jdGlvbiwgYXMgdXNlZCBieSB0aGUgaW50ZXJwcmV0ZXIuICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZCAgKCpUSW5zdHJ1Y3Rpb25fRnVuY3Rpb24pKCBJTlNfQVJHICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFR3byBzaW1wbGUgYm91bmRzLWNoZWNraW5nIG1hY3Jvcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQk9VTkRTKCB4LCBuICkgICAoIChGVF9VSW50KSh4KSAgPj0gKEZUX1VJbnQpKG4pICApCisjZGVmaW5lIEJPVU5EU0woIHgsIG4gKSAgKCAoRlRfVUxvbmcpKHgpID49IChGVF9VTG9uZykobikgKQorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBtYWNybyBjb21wdXRlcyAoYSoyXjE0KS9iIGFuZCBjb21wbGVtZW50cyBUVF9NdWxGaXgxNC4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUVF9EaXZGaXgxNCggYSwgYiApIFwKKyAgICAgICAgICBGVF9EaXZGaXgoIGEsIChiKSA8PCAyICkKKworCisjdW5kZWYgIFNVQ0NFU1MKKyNkZWZpbmUgU1VDQ0VTUyAgMAorCisjdW5kZWYgIEZBSUxVUkUKKyNkZWZpbmUgRkFJTFVSRSAgMQorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcKKyNkZWZpbmUgR1VFU1NfVkVDVE9SKCBWICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKCBDVVIuZmFjZS0+dW5wYXRlbnRlZF9oaW50aW5nICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVIuR1MuVi54ID0gKEZUX0YyRG90MTQpKCBDVVIuR1MuYm90aF94X2F4aXMgPyAweDQwMDAgOiAwICk7IFwKKyAgICBDVVIuR1MuVi55ID0gKEZUX0YyRG90MTQpKCBDVVIuR1MuYm90aF94X2F4aXMgPyAwIDogMHg0MDAwICk7IFwKKyAgfQorI2Vsc2UKKyNkZWZpbmUgR1VFU1NfVkVDVE9SKCBWICkKKyNlbmRpZgorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICBDT0RFUkFOR0UgRlVOQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0dvdG9fQ29kZVJhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFN3aXRjaGVzIHRvIGEgbmV3IGNvZGUgcmFuZ2UgKHVwZGF0ZXMgdGhlIGNvZGUgcmVsYXRlZCBlbGVtZW50cyBpbiAqLworICAvKiAgICBgZXhlYycsIGFuZCBgSVAnKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICByYW5nZSA6OiBUaGUgbmV3IGV4ZWN1dGlvbiBjb2RlIHJhbmdlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIElQICAgIDo6IFRoZSBuZXcgSVAgaW4gdGhlIG5ldyBjb2RlIHJhbmdlLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGV4ZWMgIDo6IFRoZSB0YXJnZXQgZXhlY3V0aW9uIGNvbnRleHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFRUX0dvdG9fQ29kZVJhbmdlKCBUVF9FeGVjQ29udGV4dCAgZXhlYywKKyAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICByYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgICBJUCApCisgIHsKKyAgICBUVF9Db2RlUmFuZ2UqICBjb2RlcmFuZ2U7CisKKworICAgIEZUX0FTU0VSVCggcmFuZ2UgPj0gMSAmJiByYW5nZSA8PSAzICk7CisKKyAgICBjb2RlcmFuZ2UgPSAmZXhlYy0+Y29kZVJhbmdlVGFibGVbcmFuZ2UgLSAxXTsKKworICAgIEZUX0FTU0VSVCggY29kZXJhbmdlLT5iYXNlICE9IE5VTEwgKTsKKworICAgIC8qIE5PVEU6IEJlY2F1c2UgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gb2YgYSBwcm9ncmFtIG1heSBiZSBhIENBTEwgKi8KKyAgICAvKiAgICAgICB3aGljaCB3aWxsIHJldHVybiB0byB0aGUgZmlyc3QgYnl0ZSAqYWZ0ZXIqIHRoZSBjb2RlICAgICovCisgICAgLyogICAgICAgcmFuZ2UsIHdlIHRlc3QgZm9yIElQIDw9IFNpemUgaW5zdGVhZCBvZiBJUCA8IFNpemUuICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBGVF9BU1NFUlQoIChGVF9VTG9uZylJUCA8PSBjb2RlcmFuZ2UtPnNpemUgKTsKKworICAgIGV4ZWMtPmNvZGUgICAgID0gY29kZXJhbmdlLT5iYXNlOworICAgIGV4ZWMtPmNvZGVTaXplID0gY29kZXJhbmdlLT5zaXplOworICAgIGV4ZWMtPklQICAgICAgID0gSVA7CisgICAgZXhlYy0+Y3VyUmFuZ2UgPSByYW5nZTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1NldF9Db2RlUmFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNldHMgYSBjb2RlIHJhbmdlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJhbmdlICA6OiBUaGUgY29kZSByYW5nZSBpbmRleC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmFzZSAgIDo6IFRoZSBuZXcgY29kZSBiYXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsZW5ndGggOjogVGhlIHJhbmdlIHNpemUgaW4gYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBleGVjICAgOjogVGhlIHRhcmdldCBleGVjdXRpb24gY29udGV4dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBUVF9TZXRfQ29kZVJhbmdlKCBUVF9FeGVjQ29udGV4dCAgZXhlYywKKyAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgIHJhbmdlLAorICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgIGxlbmd0aCApCisgIHsKKyAgICBGVF9BU1NFUlQoIHJhbmdlID49IDEgJiYgcmFuZ2UgPD0gMyApOworCisgICAgZXhlYy0+Y29kZVJhbmdlVGFibGVbcmFuZ2UgLSAxXS5iYXNlID0gKEZUX0J5dGUqKWJhc2U7CisgICAgZXhlYy0+Y29kZVJhbmdlVGFibGVbcmFuZ2UgLSAxXS5zaXplID0gbGVuZ3RoOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfQ2xlYXJfQ29kZVJhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ2xlYXJzIGEgY29kZSByYW5nZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcmFuZ2UgOjogVGhlIGNvZGUgcmFuZ2UgaW5kZXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZXhlYyAgOjogVGhlIHRhcmdldCBleGVjdXRpb24gY29udGV4dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRG9lcyBub3Qgc2V0IHRoZSBFcnJvciB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVFRfQ2xlYXJfQ29kZVJhbmdlKCBUVF9FeGVjQ29udGV4dCAgZXhlYywKKyAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgcmFuZ2UgKQorICB7CisgICAgRlRfQVNTRVJUKCByYW5nZSA+PSAxICYmIHJhbmdlIDw9IDMgKTsKKworICAgIGV4ZWMtPmNvZGVSYW5nZVRhYmxlW3JhbmdlIC0gMV0uYmFzZSA9IE5VTEw7CisgICAgZXhlYy0+Y29kZVJhbmdlVGFibGVbcmFuZ2UgLSAxXS5zaXplID0gMDsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgRVhFQ1VUSU9OIENPTlRFWFQgUk9VVElORVMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0RvbmVfQ29udGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERlc3Ryb3lzIGEgZ2l2ZW4gY29udGV4dC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGV4ZWMgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGV4ZWN1dGlvbiBjb250ZXh0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5IDo6IEEgaGFuZGxlIHRvIHRoZSBwYXJlbnQgbWVtb3J5IG9iamVjdC4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT25seSB0aGUgZ2x5cGggbG9hZGVyIGFuZCBkZWJ1Z2dlciBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVFRfRG9uZV9Db250ZXh0KCBUVF9FeGVjQ29udGV4dCAgZXhlYyApCisgIHsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGV4ZWMtPm1lbW9yeTsKKworCisgICAgLyogcG9pbnRzIHpvbmUgKi8KKyAgICBleGVjLT5tYXhQb2ludHMgICA9IDA7CisgICAgZXhlYy0+bWF4Q29udG91cnMgPSAwOworCisgICAgLyogZnJlZSBzdGFjayAqLworICAgIEZUX0ZSRUUoIGV4ZWMtPnN0YWNrICk7CisgICAgZXhlYy0+c3RhY2tTaXplID0gMDsKKworICAgIC8qIGZyZWUgY2FsbCBzdGFjayAqLworICAgIEZUX0ZSRUUoIGV4ZWMtPmNhbGxTdGFjayApOworICAgIGV4ZWMtPmNhbGxTaXplID0gMDsKKyAgICBleGVjLT5jYWxsVG9wICA9IDA7CisKKyAgICAvKiBmcmVlIGdseXBoIGNvZGUgcmFuZ2UgKi8KKyAgICBGVF9GUkVFKCBleGVjLT5nbHlwaElucyApOworICAgIGV4ZWMtPmdseXBoU2l6ZSA9IDA7CisKKyAgICBleGVjLT5zaXplID0gTlVMTDsKKyAgICBleGVjLT5mYWNlID0gTlVMTDsKKworICAgIEZUX0ZSRUUoIGV4ZWMgKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRfQ29udGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRpYWxpemVzIGEgY29udGV4dCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSA6OiBBIGhhbmRsZSB0byB0aGUgcGFyZW50IG1lbW9yeSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGV4ZWMgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGV4ZWN1dGlvbiBjb250ZXh0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Vycm9yCisgIEluaXRfQ29udGV4dCggVFRfRXhlY0NvbnRleHQgIGV4ZWMsCisgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICAgIG1lbW9yeSApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgIEZUX1RSQUNFMSgoICJJbml0X0NvbnRleHQ6IG5ldyBvYmplY3QgYXQgMHglMDhwXG4iLCBleGVjICkpOworCisgICAgZXhlYy0+bWVtb3J5ICAgPSBtZW1vcnk7CisgICAgZXhlYy0+Y2FsbFNpemUgPSAzMjsKKworICAgIGlmICggRlRfTkVXX0FSUkFZKCBleGVjLT5jYWxsU3RhY2ssIGV4ZWMtPmNhbGxTaXplICkgKQorICAgICAgZ290byBGYWlsX01lbW9yeTsKKworICAgIC8qIGFsbCB2YWx1ZXMgaW4gdGhlIGNvbnRleHQgYXJlIHNldCB0byAwIGFscmVhZHksIGJ1dCB0aGlzIGlzICovCisgICAgLyogaGVyZSBhcyBhIHJlbWFpbmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBleGVjLT5tYXhQb2ludHMgICA9IDA7CisgICAgZXhlYy0+bWF4Q29udG91cnMgPSAwOworCisgICAgZXhlYy0+c3RhY2tTaXplID0gMDsKKyAgICBleGVjLT5nbHlwaFNpemUgPSAwOworCisgICAgZXhlYy0+c3RhY2sgICAgID0gTlVMTDsKKyAgICBleGVjLT5nbHlwaElucyAgPSBOVUxMOworCisgICAgZXhlYy0+ZmFjZSA9IE5VTEw7CisgICAgZXhlYy0+c2l6ZSA9IE5VTEw7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworCisgIEZhaWxfTWVtb3J5OgorICAgIEZUX0VSUk9SKCggIkluaXRfQ29udGV4dDogbm90IGVub3VnaCBtZW1vcnkgZm9yICVwXG4iLCBleGVjICkpOworICAgIFRUX0RvbmVfQ29udGV4dCggZXhlYyApOworCisgICAgcmV0dXJuIGVycm9yOworIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFVwZGF0ZV9NYXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENoZWNrcyB0aGUgc2l6ZSBvZiBhIGJ1ZmZlciBhbmQgcmVhbGxvY2F0ZXMgaXQgaWYgbmVjZXNzYXJ5LiAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1lbW9yeSAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHBhcmVudCBtZW1vcnkgb2JqZWN0LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbXVsdGlwbGllciA6OiBUaGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIGVsZW1lbnQgaW4gdGhlIGJ1ZmZlci4gICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBuZXdfbWF4ICAgIDo6IFRoZSBuZXcgY2FwYWNpdHkgKHNpemUpIG9mIHRoZSBidWZmZXIuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaXplICAgICAgIDo6IFRoZSBhZGRyZXNzIG9mIHRoZSBidWZmZXIncyBjdXJyZW50IHNpemUgZXhwcmVzc2VkICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICBpbiBlbGVtZW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBidWZmICAgICAgIDo6IFRoZSBhZGRyZXNzIG9mIHRoZSBidWZmZXIgYmFzZSBwb2ludGVyLiAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBVcGRhdGVfTWF4KCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgRlRfVUxvbmcqICBzaXplLAorICAgICAgICAgICAgICBGVF9Mb25nICAgIG11bHRpcGxpZXIsCisgICAgICAgICAgICAgIHZvaWQqICAgICAgX3BidWZmLAorICAgICAgICAgICAgICBGVF9VTG9uZyAgIG5ld19tYXggKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworICAgIHZvaWQqKiAgICBwYnVmZiA9ICh2b2lkKiopX3BidWZmOworCisKKyAgICBpZiAoICpzaXplIDwgbmV3X21heCApCisgICAgeworICAgICAgaWYgKCBGVF9SRUFMTE9DKCAqcGJ1ZmYsICpzaXplICogbXVsdGlwbGllciwgbmV3X21heCAqIG11bHRpcGxpZXIgKSApCisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICpzaXplID0gbmV3X21heDsKKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Mb2FkX0NvbnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQcmVwYXJlIGFuIGV4ZWN1dGlvbiBjb250ZXh0IGZvciBnbHlwaCBoaW50aW5nLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlIDo6IEEgaGFuZGxlIHRvIHRoZSBzb3VyY2UgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNpemUgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBzaXplIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGV4ZWMgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBleGVjdXRpb24gY29udGV4dC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE9ubHkgdGhlIGdseXBoIGxvYWRlciBhbmQgZGVidWdnZXIgc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbi4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFRUX0xvYWRfQ29udGV4dCggVFRfRXhlY0NvbnRleHQgIGV4ZWMsCisgICAgICAgICAgICAgICAgICAgVFRfRmFjZSAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgVFRfU2l6ZSAgICAgICAgIHNpemUgKQorICB7CisgICAgRlRfSW50ICAgICAgICAgIGk7CisgICAgRlRfVUxvbmcgICAgICAgIHRtcDsKKyAgICBUVF9NYXhQcm9maWxlKiAgbWF4cDsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3I7CisKKworICAgIGV4ZWMtPmZhY2UgPSBmYWNlOworICAgIG1heHAgICAgICAgPSAmZmFjZS0+bWF4X3Byb2ZpbGU7CisgICAgZXhlYy0+c2l6ZSA9IHNpemU7CisKKyAgICBpZiAoIHNpemUgKQorICAgIHsKKyAgICAgIGV4ZWMtPm51bUZEZWZzICAgPSBzaXplLT5udW1fZnVuY3Rpb25fZGVmczsKKyAgICAgIGV4ZWMtPm1heEZEZWZzICAgPSBzaXplLT5tYXhfZnVuY3Rpb25fZGVmczsKKyAgICAgIGV4ZWMtPm51bUlEZWZzICAgPSBzaXplLT5udW1faW5zdHJ1Y3Rpb25fZGVmczsKKyAgICAgIGV4ZWMtPm1heElEZWZzICAgPSBzaXplLT5tYXhfaW5zdHJ1Y3Rpb25fZGVmczsKKyAgICAgIGV4ZWMtPkZEZWZzICAgICAgPSBzaXplLT5mdW5jdGlvbl9kZWZzOworICAgICAgZXhlYy0+SURlZnMgICAgICA9IHNpemUtPmluc3RydWN0aW9uX2RlZnM7CisgICAgICBleGVjLT50dF9tZXRyaWNzID0gc2l6ZS0+dHRtZXRyaWNzOworICAgICAgZXhlYy0+bWV0cmljcyAgICA9IHNpemUtPm1ldHJpY3M7CisKKyAgICAgIGV4ZWMtPm1heEZ1bmMgICAgPSBzaXplLT5tYXhfZnVuYzsKKyAgICAgIGV4ZWMtPm1heElucyAgICAgPSBzaXplLT5tYXhfaW5zOworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IFRUX01BWF9DT0RFX1JBTkdFUzsgaSsrICkKKyAgICAgICAgZXhlYy0+Y29kZVJhbmdlVGFibGVbaV0gPSBzaXplLT5jb2RlUmFuZ2VUYWJsZVtpXTsKKworICAgICAgLyogc2V0IGdyYXBoaWNzIHN0YXRlICovCisgICAgICBleGVjLT5HUyA9IHNpemUtPkdTOworCisgICAgICBleGVjLT5jdnRTaXplID0gc2l6ZS0+Y3Z0X3NpemU7CisgICAgICBleGVjLT5jdnQgICAgID0gc2l6ZS0+Y3Z0OworCisgICAgICBleGVjLT5zdG9yZVNpemUgPSBzaXplLT5zdG9yYWdlX3NpemU7CisgICAgICBleGVjLT5zdG9yYWdlICAgPSBzaXplLT5zdG9yYWdlOworCisgICAgICBleGVjLT50d2lsaWdodCAgPSBzaXplLT50d2lsaWdodDsKKworICAgICAgLyogSW4gY2FzZSBvZiBtdWx0aS10aHJlYWRpbmcgaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSBvbGQgc2l6ZSBvYmplY3QgKi8KKyAgICAgIC8qIG5vIGxvbmdlciBleGlzdHMsIHRodXMgd2UgbXVzdCBjbGVhciBhbGwgZ2x5cGggem9uZSByZWZlcmVuY2VzLiAgICovCisgICAgICBmdF9tZW1zZXQoICZleGVjLT56cDAsIDAsIHNpemVvZiAoIGV4ZWMtPnpwMCApICk7CisgICAgICBleGVjLT56cDEgPSBleGVjLT56cDA7CisgICAgICBleGVjLT56cDIgPSBleGVjLT56cDA7CisgICAgfQorCisgICAgLyogWFhYOiBXZSByZXNlcnZlIGEgbGl0dGxlIG1vcmUgZWxlbWVudHMgb24gdGhlIHN0YWNrIHRvIGRlYWwgc2FmZWx5ICovCisgICAgLyogICAgICB3aXRoIGJyb2tlbiBmb250cyBsaWtlIGFyaWFsYnMsIGNvdXJicywgdGltZXNicywgZXRjLiAgICAgICAgICovCisgICAgdG1wID0gZXhlYy0+c3RhY2tTaXplOworICAgIGVycm9yID0gVXBkYXRlX01heCggZXhlYy0+bWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgJnRtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoIEZUX0YyNkRvdDYgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKikmZXhlYy0+c3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhwLT5tYXhTdGFja0VsZW1lbnRzICsgMzIgKTsKKyAgICBleGVjLT5zdGFja1NpemUgPSAoRlRfVUludCl0bXA7CisgICAgaWYgKCBlcnJvciApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICB0bXAgPSBleGVjLT5nbHlwaFNpemU7CisgICAgZXJyb3IgPSBVcGRhdGVfTWF4KCBleGVjLT5tZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAmdG1wLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggRlRfQnl0ZSApLAorICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKSZleGVjLT5nbHlwaElucywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heHAtPm1heFNpemVPZkluc3RydWN0aW9ucyApOworICAgIGV4ZWMtPmdseXBoU2l6ZSA9IChGVF9VU2hvcnQpdG1wOworICAgIGlmICggZXJyb3IgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgZXhlYy0+cHRzLm5fcG9pbnRzICAgPSAwOworICAgIGV4ZWMtPnB0cy5uX2NvbnRvdXJzID0gMDsKKworICAgIGV4ZWMtPnpwMSA9IGV4ZWMtPnB0czsKKyAgICBleGVjLT56cDIgPSBleGVjLT5wdHM7CisgICAgZXhlYy0+enAwID0gZXhlYy0+cHRzOworCisgICAgZXhlYy0+aW5zdHJ1Y3Rpb25fdHJhcCA9IEZBTFNFOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfU2F2ZV9Db250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU2F2ZXMgdGhlIGNvZGUgcmFuZ2VzIGluIGEgYHNpemUnIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZXhlYyA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGV4ZWN1dGlvbiBjb250ZXh0LiAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2l6ZSA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IHNpemUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT25seSB0aGUgZ2x5cGggbG9hZGVyIGFuZCBkZWJ1Z2dlciBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVFRfU2F2ZV9Db250ZXh0KCBUVF9FeGVjQ29udGV4dCAgZXhlYywKKyAgICAgICAgICAgICAgICAgICBUVF9TaXplICAgICAgICAgc2l6ZSApCisgIHsKKyAgICBGVF9JbnQgIGk7CisKKworICAgIC8qIFhYWDogV2lsbCBwcm9iYWJseSBkaXNhcHBlYXIgc29vbiB3aXRoIGFsbCB0aGUgY29kZSByYW5nZSAqLworICAgIC8qICAgICAgbWFuYWdlbWVudCwgd2hpY2ggaXMgbm93IHJhdGhlciBvYnNvbGV0ZS4gICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHNpemUtPm51bV9mdW5jdGlvbl9kZWZzICAgID0gZXhlYy0+bnVtRkRlZnM7CisgICAgc2l6ZS0+bnVtX2luc3RydWN0aW9uX2RlZnMgPSBleGVjLT5udW1JRGVmczsKKworICAgIHNpemUtPm1heF9mdW5jID0gZXhlYy0+bWF4RnVuYzsKKyAgICBzaXplLT5tYXhfaW5zICA9IGV4ZWMtPm1heEluczsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgVFRfTUFYX0NPREVfUkFOR0VTOyBpKysgKQorICAgICAgc2l6ZS0+Y29kZVJhbmdlVGFibGVbaV0gPSBleGVjLT5jb2RlUmFuZ2VUYWJsZVtpXTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX1J1bl9Db250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEV4ZWN1dGVzIG9uZSBvciBtb3JlIGluc3RydWN0aW9ucyBpbiB0aGUgZXhlY3V0aW9uIGNvbnRleHQuICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRlYnVnIDo6IEEgQm9vbGVhbiBmbGFnLiAgSWYgc2V0LCB0aGUgZnVuY3Rpb24gc2V0cyBzb21lIGludGVybmFsICAqLworICAvKiAgICAgICAgICAgICB2YXJpYWJsZXMgYW5kIHJldHVybnMgaW1tZWRpYXRlbHksIG90aGVyd2lzZSBUVF9SdW5JbnMoKSAgKi8KKyAgLyogICAgICAgICAgICAgaXMgY2FsbGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICBUaGlzIGlzIGNvbW1lbnRlZCBvdXQgY3VycmVudGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBleGVjICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGV4ZWN1dGlvbiBjb250ZXh0LiAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUcnVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBPbmx5IHRoZSBnbHlwaCBsb2FkZXIgYW5kIGRlYnVnZ2VyIHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24uICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBUVF9SdW5fQ29udGV4dCggVFRfRXhlY0NvbnRleHQgIGV4ZWMsCisgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICAgICAgZGVidWcgKQorICB7CisgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICBpZiAoICggZXJyb3IgPSBUVF9Hb3RvX0NvZGVSYW5nZSggZXhlYywgdHRfY29kZXJhbmdlX2dseXBoLCAwICkgKQorICAgICAgICAgICAhPSBGVF9FcnJfT2sgKQorICAgICAgcmV0dXJuIGVycm9yOworCisgICAgZXhlYy0+enAwID0gZXhlYy0+cHRzOworICAgIGV4ZWMtPnpwMSA9IGV4ZWMtPnB0czsKKyAgICBleGVjLT56cDIgPSBleGVjLT5wdHM7CisKKyAgICBleGVjLT5HUy5nZXAwID0gMTsKKyAgICBleGVjLT5HUy5nZXAxID0gMTsKKyAgICBleGVjLT5HUy5nZXAyID0gMTsKKworICAgIGV4ZWMtPkdTLnByb2pWZWN0b3IueCA9IDB4NDAwMDsKKyAgICBleGVjLT5HUy5wcm9qVmVjdG9yLnkgPSAweDAwMDA7CisKKyAgICBleGVjLT5HUy5mcmVlVmVjdG9yID0gZXhlYy0+R1MucHJvalZlY3RvcjsKKyAgICBleGVjLT5HUy5kdWFsVmVjdG9yID0gZXhlYy0+R1MucHJvalZlY3RvcjsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCisgICAgZXhlYy0+R1MuYm90aF94X2F4aXMgPSBUUlVFOworI2VuZGlmCisKKyAgICBleGVjLT5HUy5yb3VuZF9zdGF0ZSA9IDE7CisgICAgZXhlYy0+R1MubG9vcCAgICAgICAgPSAxOworCisgICAgLyogc29tZSBnbHlwaHMgbGVhdmUgc29tZXRoaW5nIG9uIHRoZSBzdGFjay4gc28gd2UgY2xlYW4gaXQgKi8KKyAgICAvKiBiZWZvcmUgYSBuZXcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGV4ZWMtPnRvcCAgICAgPSAwOworICAgIGV4ZWMtPmNhbGxUb3AgPSAwOworCisjaWYgMQorICAgIEZUX1VOVVNFRCggZGVidWcgKTsKKworICAgIHJldHVybiBleGVjLT5mYWNlLT5pbnRlcnByZXRlciggZXhlYyApOworI2Vsc2UKKyAgICBpZiAoICFkZWJ1ZyApCisgICAgICByZXR1cm4gVFRfUnVuSW5zKCBleGVjICk7CisgICAgZWxzZQorICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKyNlbmRpZgorICB9CisKKworICAvKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYHNjYW5fY29udHJvbCcgaXMgZG9jdW1lbnRlZCBhcyBGQUxTRSBpbiB0aGUgKi8KKyAgLyogVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbi4gIFRoaXMgaXMgY29uZnVzaW5nIHNpbmNlIGl0IGltcGxpZXMgYSAgICAgICovCisgIC8qIEJvb2xlYW4gdmFsdWUuICBIb3dldmVyLCB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgdGh1cyBib3RoIHRoZSAgICAgICAqLworICAvKiBkZWZhdWx0IHZhbHVlcyBvZiBvdXIgYHNjYW5fdHlwZScgYW5kIGBzY2FuX2NvbnRyb2wnIGZpZWxkcyAod2hpY2ggKi8KKyAgLyogdGhlIGRvY3VtZW50YXRpb24ncyBgc2Nhbl9jb250cm9sJyB2YXJpYWJsZSBpcyBzcGxpdCBpbnRvKSBhcmUgICAgICovCisgIC8qIHplcm8uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIGNvbnN0IFRUX0dyYXBoaWNzU3RhdGUgIHR0X2RlZmF1bHRfZ3JhcGhpY3Nfc3RhdGUgPQorICB7CisgICAgMCwgMCwgMCwKKyAgICB7IDB4NDAwMCwgMCB9LAorICAgIHsgMHg0MDAwLCAwIH0sCisgICAgeyAweDQwMDAsIDAgfSwKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCisgICAgVFJVRSwKKyNlbmRpZgorCisgICAgMSwgNjQsIDEsCisgICAgVFJVRSwgNjgsIDAsIDAsIDksIDMsCisgICAgMCwgRkFMU0UsIDAsIDEsIDEsIDEKKyAgfTsKKworCisgIC8qIGRvY3VtZW50YXRpb24gaXMgaW4gdHRpbnRlcnAuaCAqLworCisgIEZUX0VYUE9SVF9ERUYoIFRUX0V4ZWNDb250ZXh0ICkKKyAgVFRfTmV3X0NvbnRleHQoIFRUX0RyaXZlciAgZHJpdmVyICkKKyAgeworICAgIFRUX0V4ZWNDb250ZXh0ICBleGVjOworICAgIEZUX01lbW9yeSAgICAgICBtZW1vcnk7CisKKworICAgIG1lbW9yeSA9IGRyaXZlci0+cm9vdC5yb290Lm1lbW9yeTsKKyAgICBleGVjICAgPSBkcml2ZXItPmNvbnRleHQ7CisKKyAgICBpZiAoICFkcml2ZXItPmNvbnRleHQgKQorICAgIHsKKyAgICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgICAvKiBhbGxvY2F0ZSBvYmplY3QgKi8KKyAgICAgIGlmICggRlRfTkVXKCBleGVjICkgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgIC8qIGluaXRpYWxpemUgaXQ7IGluIGNhc2Ugb2YgZXJyb3IgdGhpcyBkZWFsbG9jYXRlcyBgZXhlYycgdG9vICovCisgICAgICBlcnJvciA9IEluaXRfQ29udGV4dCggZXhlYywgbWVtb3J5ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICAvKiBzdG9yZSBpdCBpbnRvIHRoZSBkcml2ZXIgKi8KKyAgICAgIGRyaXZlci0+Y29udGV4dCA9IGV4ZWM7CisgICAgfQorCisgICAgcmV0dXJuIGRyaXZlci0+Y29udGV4dDsKKworICBGYWlsOgorICAgIHJldHVybiBOVUxMOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEJlZm9yZSBhbiBvcGNvZGUgaXMgZXhlY3V0ZWQsIHRoZSBpbnRlcnByZXRlciB2ZXJpZmllcyB0aGF0IHRoZXJlIGFyZSAqLworICAvKiBlbm91Z2ggYXJndW1lbnRzIG9uIHRoZSBzdGFjaywgd2l0aCB0aGUgaGVscCBvZiB0aGUgYFBvcF9QdXNoX0NvdW50JyAgKi8KKyAgLyogdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGb3IgZWFjaCBvcGNvZGUsIHRoZSBmaXJzdCBjb2x1bW4gZ2l2ZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdGhhdCAgKi8KKyAgLyogYXJlIHBvcHBlZCBmcm9tIHRoZSBzdGFjazsgdGhlIHNlY29uZCBvbmUgZ2l2ZXMgdGhlIG51bWJlciBvZiB0aG9zZSAgICovCisgIC8qIHRoYXQgYXJlIHB1c2hlZCBpbiByZXN1bHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlcyB3aGljaCBoYXZlIGEgdmFyeWluZyBudW1iZXIgb2YgcGFyYW1ldGVycyBpbiB0aGUgZGF0YSBzdHJlYW0gICovCisgIC8qIChOUFVTSEIsIE5QVVNIVykgYXJlIGhhbmRsZWQgc3BlY2lhbGx5OyB0aGV5IGhhdmUgYSBuZWdhdGl2ZSB2YWx1ZSBpbiAqLworICAvKiB0aGUgYG9wY29kZV9sZW5ndGgnIHRhYmxlLCBhbmQgdGhlIHZhbHVlIGluIGBQb3BfUHVzaF9Db3VudCcgaXMgc2V0ICAgKi8KKyAgLyogdG8gemVyby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjdW5kZWYgIFBBQ0sKKyNkZWZpbmUgUEFDSyggeCwgeSApICAoICggeCA8PCA0ICkgfCB5ICkKKworCisgIHN0YXRpYworICBjb25zdCBGVF9CeXRlICBQb3BfUHVzaF9Db3VudFsyNTZdID0KKyAgeworICAgIC8qIG9wY29kZXMgYXJlIGdhdGhlcmVkIGluIGdyb3VwcyBvZiAxNiAqLworICAgIC8qIHBsZWFzZSBrZWVwIHRoZSBzcGFjZXMgYXMgdGhleSBhcmUgICAqLworCisgICAgLyogIFNWVENBICB5ICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBTVlRDQSAgeCAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgU1B2VENBIHkgICovICBQQUNLKCAwLCAwICksCisgICAgLyogIFNQdlRDQSB4ICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBTRnZUQ0EgeSAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgU0Z2VENBIHggICovICBQQUNLKCAwLCAwICksCisgICAgLyogIFNQdlRMIC8vICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBTUHZUTCArICAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgU0Z2VEwgLy8gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIFNGdlRMICsgICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBTUHZGUyAgICAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgU0Z2RlMgICAgICovICBQQUNLKCAyLCAwICksCisgICAgLyogIEdQViAgICAgICAqLyAgUEFDSyggMCwgMiApLAorICAgIC8qICBHRlYgICAgICAgKi8gIFBBQ0soIDAsIDIgKSwKKyAgICAvKiAgU0Z2VFB2ICAgICovICBQQUNLKCAwLCAwICksCisgICAgLyogIElTRUNUICAgICAqLyAgUEFDSyggNSwgMCApLAorCisgICAgLyogIFNSUDAgICAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBTUlAxICAgICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgU1JQMiAgICAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIFNaUDAgICAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBTWlAxICAgICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgU1pQMiAgICAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIFNaUFMgICAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBTTE9PUCAgICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgUlRHICAgICAgICovICBQQUNLKCAwLCAwICksCisgICAgLyogIFJUSEcgICAgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBTTUQgICAgICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgRUxTRSAgICAgICovICBQQUNLKCAwLCAwICksCisgICAgLyogIEpNUFIgICAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBTQ3ZUQ2kgICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgU1N3Q2kgICAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIFNTVyAgICAgICAqLyAgUEFDSyggMSwgMCApLAorCisgICAgLyogIERVUCAgICAgICAqLyAgUEFDSyggMSwgMiApLAorICAgIC8qICBQT1AgICAgICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgQ0xFQVIgICAgICovICBQQUNLKCAwLCAwICksCisgICAgLyogIFNXQVAgICAgICAqLyAgUEFDSyggMiwgMiApLAorICAgIC8qICBERVBUSCAgICAgKi8gIFBBQ0soIDAsIDEgKSwKKyAgICAvKiAgQ0lOREVYICAgICovICBQQUNLKCAxLCAxICksCisgICAgLyogIE1JTkRFWCAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBBbGlnblBUUyAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgSU5TXyQyOCAgICovICBQQUNLKCAwLCAwICksCisgICAgLyogIFVUUCAgICAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBMT09QQ0FMTCAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgQ0FMTCAgICAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIEZERUYgICAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBFTkRGICAgICAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgTURBUFswXSAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EQVBbMV0gICAqLyAgUEFDSyggMSwgMCApLAorCisgICAgLyogIElVUFswXSAgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBJVVBbMV0gICAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgU0hQWzBdICAgICovICBQQUNLKCAwLCAwICksCisgICAgLyogIFNIUFsxXSAgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBTSENbMF0gICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgU0hDWzFdICAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIFNIWlswXSAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBTSFpbMV0gICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgU0hQSVggICAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIElQICAgICAgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBNU0lSUFswXSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTVNJUlBbMV0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIEFsaWduUlAgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBSVERHICAgICAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgTUlBUFswXSAgICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JQVBbMV0gICAqLyAgUEFDSyggMiwgMCApLAorCisgICAgLyogIE5QdXNoQiAgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBOUHVzaFcgICAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgV1MgICAgICAgICovICBQQUNLKCAyLCAwICksCisgICAgLyogIFJTICAgICAgICAqLyAgUEFDSyggMSwgMSApLAorICAgIC8qICBXQ3Z0UCAgICAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgUkN2dCAgICAgICovICBQQUNLKCAxLCAxICksCisgICAgLyogIEdDWzBdICAgICAqLyAgUEFDSyggMSwgMSApLAorICAgIC8qICBHQ1sxXSAgICAgKi8gIFBBQ0soIDEsIDEgKSwKKyAgICAvKiAgU0NGUyAgICAgICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1EWzBdICAgICAqLyAgUEFDSyggMiwgMSApLAorICAgIC8qICBNRFsxXSAgICAgKi8gIFBBQ0soIDIsIDEgKSwKKyAgICAvKiAgTVBQRU0gICAgICovICBQQUNLKCAwLCAxICksCisgICAgLyogIE1QUyAgICAgICAqLyAgUEFDSyggMCwgMSApLAorICAgIC8qICBGbGlwT04gICAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgRmxpcE9GRiAgICovICBQQUNLKCAwLCAwICksCisgICAgLyogIERFQlVHICAgICAqLyAgUEFDSyggMSwgMCApLAorCisgICAgLyogIExUICAgICAgICAqLyAgUEFDSyggMiwgMSApLAorICAgIC8qICBMVEVRICAgICAgKi8gIFBBQ0soIDIsIDEgKSwKKyAgICAvKiAgR1QgICAgICAgICovICBQQUNLKCAyLCAxICksCisgICAgLyogIEdURVEgICAgICAqLyAgUEFDSyggMiwgMSApLAorICAgIC8qICBFUSAgICAgICAgKi8gIFBBQ0soIDIsIDEgKSwKKyAgICAvKiAgTkVRICAgICAgICovICBQQUNLKCAyLCAxICksCisgICAgLyogIE9ERCAgICAgICAqLyAgUEFDSyggMSwgMSApLAorICAgIC8qICBFVkVOICAgICAgKi8gIFBBQ0soIDEsIDEgKSwKKyAgICAvKiAgSUYgICAgICAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIEVJRiAgICAgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBBTkQgICAgICAgKi8gIFBBQ0soIDIsIDEgKSwKKyAgICAvKiAgT1IgICAgICAgICovICBQQUNLKCAyLCAxICksCisgICAgLyogIE5PVCAgICAgICAqLyAgUEFDSyggMSwgMSApLAorICAgIC8qICBEZWx0YVAxICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgU0RCICAgICAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIFNEUyAgICAgICAqLyAgUEFDSyggMSwgMCApLAorCisgICAgLyogIEFERCAgICAgICAqLyAgUEFDSyggMiwgMSApLAorICAgIC8qICBTVUIgICAgICAgKi8gIFBBQ0soIDIsIDEgKSwKKyAgICAvKiAgRElWICAgICAgICovICBQQUNLKCAyLCAxICksCisgICAgLyogIE1VTCAgICAgICAqLyAgUEFDSyggMiwgMSApLAorICAgIC8qICBBQlMgICAgICAgKi8gIFBBQ0soIDEsIDEgKSwKKyAgICAvKiAgTkVHICAgICAgICovICBQQUNLKCAxLCAxICksCisgICAgLyogIEZMT09SICAgICAqLyAgUEFDSyggMSwgMSApLAorICAgIC8qICBDRUlMSU5HICAgKi8gIFBBQ0soIDEsIDEgKSwKKyAgICAvKiAgUk9VTkRbMF0gICovICBQQUNLKCAxLCAxICksCisgICAgLyogIFJPVU5EWzFdICAqLyAgUEFDSyggMSwgMSApLAorICAgIC8qICBST1VORFsyXSAgKi8gIFBBQ0soIDEsIDEgKSwKKyAgICAvKiAgUk9VTkRbM10gICovICBQQUNLKCAxLCAxICksCisgICAgLyogIE5ST1VORFswXSAqLyAgUEFDSyggMSwgMSApLAorICAgIC8qICBOUk9VTkRbMV0gKi8gIFBBQ0soIDEsIDEgKSwKKyAgICAvKiAgTlJPVU5EWzJdICovICBQQUNLKCAxLCAxICksCisgICAgLyogIE5ST1VORFszXSAqLyAgUEFDSyggMSwgMSApLAorCisgICAgLyogIFdDdnRGICAgICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBEZWx0YVAyICAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgRGVsdGFQMyAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIERlbHRhQ25bMF0gKi8gUEFDSyggMSwgMCApLAorICAgIC8qICBEZWx0YUNuWzFdICovIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgRGVsdGFDblsyXSAqLyBQQUNLKCAxLCAwICksCisgICAgLyogIFNST1VORCAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBTNDVSb3VuZCAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgSlJPVCAgICAgICovICBQQUNLKCAyLCAwICksCisgICAgLyogIEpST0YgICAgICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBST0ZGICAgICAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyQ3QiAgICovICBQQUNLKCAwLCAwICksCisgICAgLyogIFJVVEcgICAgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBSRFRHICAgICAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgU0FOR1cgICAgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIEFBICAgICAgICAqLyAgUEFDSyggMSwgMCApLAorCisgICAgLyogIEZsaXBQVCAgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBGbGlwUmdPTiAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgRmxpcFJnT0ZGICovICBQQUNLKCAyLCAwICksCisgICAgLyogIElOU18kODMgICAqLyAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJDg0ICAgKi8gIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgU2NhbkNUUkwgICovICBQQUNLKCAxLCAwICksCisgICAgLyogIFNEUFZUTFswXSAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBTRFBWVExbMV0gKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgR2V0SU5GTyAgICovICBQQUNLKCAxLCAxICksCisgICAgLyogIElERUYgICAgICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBST0xMICAgICAgKi8gIFBBQ0soIDMsIDMgKSwKKyAgICAvKiAgTUFYICAgICAgICovICBQQUNLKCAyLCAxICksCisgICAgLyogIE1JTiAgICAgICAqLyAgUEFDSyggMiwgMSApLAorICAgIC8qICBTY2FuVFlQRSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgSW5zdENUUkwgICovICBQQUNLKCAyLCAwICksCisgICAgLyogIElOU18kOEYgICAqLyAgUEFDSyggMCwgMCApLAorCisgICAgLyogIElOU18kOTAgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJDkxICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyQ5MiAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kOTMgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJDk0ICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyQ5NSAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kOTYgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJDk3ICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyQ5OCAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kOTkgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJDlBICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyQ5QiAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kOUMgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJDlEICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyQ5RSAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kOUYgICovICAgUEFDSyggMCwgMCApLAorCisgICAgLyogIElOU18kQTAgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJEExICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyRBMiAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kQTMgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJEE0ICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyRBNSAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kQTYgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJEE3ICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyRBOCAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kQTkgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJEFBICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyRBQiAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kQUMgICovICAgUEFDSyggMCwgMCApLAorICAgIC8qICBJTlNfJEFEICAqLyAgIFBBQ0soIDAsIDAgKSwKKyAgICAvKiAgSU5TXyRBRSAgKi8gICBQQUNLKCAwLCAwICksCisgICAgLyogIElOU18kQUYgICovICAgUEFDSyggMCwgMCApLAorCisgICAgLyogIFB1c2hCWzBdICAqLyAgUEFDSyggMCwgMSApLAorICAgIC8qICBQdXNoQlsxXSAgKi8gIFBBQ0soIDAsIDIgKSwKKyAgICAvKiAgUHVzaEJbMl0gICovICBQQUNLKCAwLCAzICksCisgICAgLyogIFB1c2hCWzNdICAqLyAgUEFDSyggMCwgNCApLAorICAgIC8qICBQdXNoQls0XSAgKi8gIFBBQ0soIDAsIDUgKSwKKyAgICAvKiAgUHVzaEJbNV0gICovICBQQUNLKCAwLCA2ICksCisgICAgLyogIFB1c2hCWzZdICAqLyAgUEFDSyggMCwgNyApLAorICAgIC8qICBQdXNoQls3XSAgKi8gIFBBQ0soIDAsIDggKSwKKyAgICAvKiAgUHVzaFdbMF0gICovICBQQUNLKCAwLCAxICksCisgICAgLyogIFB1c2hXWzFdICAqLyAgUEFDSyggMCwgMiApLAorICAgIC8qICBQdXNoV1syXSAgKi8gIFBBQ0soIDAsIDMgKSwKKyAgICAvKiAgUHVzaFdbM10gICovICBQQUNLKCAwLCA0ICksCisgICAgLyogIFB1c2hXWzRdICAqLyAgUEFDSyggMCwgNSApLAorICAgIC8qICBQdXNoV1s1XSAgKi8gIFBBQ0soIDAsIDYgKSwKKyAgICAvKiAgUHVzaFdbNl0gICovICBQQUNLKCAwLCA3ICksCisgICAgLyogIFB1c2hXWzddICAqLyAgUEFDSyggMCwgOCApLAorCisgICAgLyogIE1EUlBbMDBdICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzAxXSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFswMl0gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMDNdICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzA0XSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFswNV0gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMDZdICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzA3XSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFswOF0gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMDldICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzEwXSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFsxMV0gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMTJdICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzEzXSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFsxNF0gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMTVdICAqLyAgUEFDSyggMSwgMCApLAorCisgICAgLyogIE1EUlBbMTZdICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzE3XSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFsxOF0gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMTldICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzIwXSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFsyMV0gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMjJdICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzIzXSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFsyNF0gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMjVdICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzI2XSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFsyN10gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMjhdICAqLyAgUEFDSyggMSwgMCApLAorICAgIC8qICBNRFJQWzI5XSAgKi8gIFBBQ0soIDEsIDAgKSwKKyAgICAvKiAgTURSUFszMF0gICovICBQQUNLKCAxLCAwICksCisgICAgLyogIE1EUlBbMzFdICAqLyAgUEFDSyggMSwgMCApLAorCisgICAgLyogIE1JUlBbMDBdICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzAxXSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFswMl0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMDNdICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzA0XSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFswNV0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMDZdICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzA3XSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFswOF0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMDldICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzEwXSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFsxMV0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMTJdICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzEzXSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFsxNF0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMTVdICAqLyAgUEFDSyggMiwgMCApLAorCisgICAgLyogIE1JUlBbMTZdICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzE3XSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFsxOF0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMTldICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzIwXSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFsyMV0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMjJdICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzIzXSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFsyNF0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMjVdICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzI2XSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFsyN10gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMjhdICAqLyAgUEFDSyggMiwgMCApLAorICAgIC8qICBNSVJQWzI5XSAgKi8gIFBBQ0soIDIsIDAgKSwKKyAgICAvKiAgTUlSUFszMF0gICovICBQQUNLKCAyLCAwICksCisgICAgLyogIE1JUlBbMzFdICAqLyAgUEFDSyggMiwgMCApCisgIH07CisKKworI2lmZGVmIEZUX0RFQlVHX0xFVkVMX1RSQUNFCisKKyAgc3RhdGljCisgIGNvbnN0IGNoYXIqICBjb25zdCBvcGNvZGVfbmFtZVsyNTZdID0KKyAgeworICAgICJTVlRDQSB5IiwKKyAgICAiU1ZUQ0EgeCIsCisgICAgIlNQdlRDQSB5IiwKKyAgICAiU1B2VENBIHgiLAorICAgICJTRnZUQ0EgeSIsCisgICAgIlNGdlRDQSB4IiwKKyAgICAiU1B2VEwgfHwiLAorICAgICJTUHZUTCArIiwKKyAgICAiU0Z2VEwgfHwiLAorICAgICJTRnZUTCArIiwKKyAgICAiU1B2RlMiLAorICAgICJTRnZGUyIsCisgICAgIkdQViIsCisgICAgIkdGViIsCisgICAgIlNGdlRQdiIsCisgICAgIklTRUNUIiwKKworICAgICJTUlAwIiwKKyAgICAiU1JQMSIsCisgICAgIlNSUDIiLAorICAgICJTWlAwIiwKKyAgICAiU1pQMSIsCisgICAgIlNaUDIiLAorICAgICJTWlBTIiwKKyAgICAiU0xPT1AiLAorICAgICJSVEciLAorICAgICJSVEhHIiwKKyAgICAiU01EIiwKKyAgICAiRUxTRSIsCisgICAgIkpNUFIiLAorICAgICJTQ3ZUQ2kiLAorICAgICJTU3dDaSIsCisgICAgIlNTVyIsCisKKyAgICAiRFVQIiwKKyAgICAiUE9QIiwKKyAgICAiQ0xFQVIiLAorICAgICJTV0FQIiwKKyAgICAiREVQVEgiLAorICAgICJDSU5ERVgiLAorICAgICJNSU5ERVgiLAorICAgICJBbGlnblBUUyIsCisgICAgIklOU18kMjgiLAorICAgICJVVFAiLAorICAgICJMT09QQ0FMTCIsCisgICAgIkNBTEwiLAorICAgICJGREVGIiwKKyAgICAiRU5ERiIsCisgICAgIk1EQVBbMF0iLAorICAgICJNREFQWzFdIiwKKworICAgICJJVVBbMF0iLAorICAgICJJVVBbMV0iLAorICAgICJTSFBbMF0iLAorICAgICJTSFBbMV0iLAorICAgICJTSENbMF0iLAorICAgICJTSENbMV0iLAorICAgICJTSFpbMF0iLAorICAgICJTSFpbMV0iLAorICAgICJTSFBJWCIsCisgICAgIklQIiwKKyAgICAiTVNJUlBbMF0iLAorICAgICJNU0lSUFsxXSIsCisgICAgIkFsaWduUlAiLAorICAgICJSVERHIiwKKyAgICAiTUlBUFswXSIsCisgICAgIk1JQVBbMV0iLAorCisgICAgIk5QdXNoQiIsCisgICAgIk5QdXNoVyIsCisgICAgIldTIiwKKyAgICAiUlMiLAorICAgICJXQ3Z0UCIsCisgICAgIlJDdnQiLAorICAgICJHQ1swXSIsCisgICAgIkdDWzFdIiwKKyAgICAiU0NGUyIsCisgICAgIk1EWzBdIiwKKyAgICAiTURbMV0iLAorICAgICJNUFBFTSIsCisgICAgIk1QUyIsCisgICAgIkZsaXBPTiIsCisgICAgIkZsaXBPRkYiLAorICAgICJERUJVRyIsCisKKyAgICAiTFQiLAorICAgICJMVEVRIiwKKyAgICAiR1QiLAorICAgICJHVEVRIiwKKyAgICAiRVEiLAorICAgICJORVEiLAorICAgICJPREQiLAorICAgICJFVkVOIiwKKyAgICAiSUYiLAorICAgICJFSUYiLAorICAgICJBTkQiLAorICAgICJPUiIsCisgICAgIk5PVCIsCisgICAgIkRlbHRhUDEiLAorICAgICJTREIiLAorICAgICJTRFMiLAorCisgICAgIkFERCIsCisgICAgIlNVQiIsCisgICAgIkRJViIsCisgICAgIk1VTCIsCisgICAgIkFCUyIsCisgICAgIk5FRyIsCisgICAgIkZMT09SIiwKKyAgICAiQ0VJTElORyIsCisgICAgIlJPVU5EWzBdIiwKKyAgICAiUk9VTkRbMV0iLAorICAgICJST1VORFsyXSIsCisgICAgIlJPVU5EWzNdIiwKKyAgICAiTlJPVU5EWzBdIiwKKyAgICAiTlJPVU5EWzFdIiwKKyAgICAiTlJPVU5EWzJdIiwKKyAgICAiTlJPVU5EWzNdIiwKKworICAgICJXQ3Z0RiIsCisgICAgIkRlbHRhUDIiLAorICAgICJEZWx0YVAzIiwKKyAgICAiRGVsdGFDblswXSIsCisgICAgIkRlbHRhQ25bMV0iLAorICAgICJEZWx0YUNuWzJdIiwKKyAgICAiU1JPVU5EIiwKKyAgICAiUzQ1Um91bmQiLAorICAgICJKUk9UIiwKKyAgICAiSlJPRiIsCisgICAgIlJPRkYiLAorICAgICJJTlNfJDdCIiwKKyAgICAiUlVURyIsCisgICAgIlJEVEciLAorICAgICJTQU5HVyIsCisgICAgIkFBIiwKKworICAgICJGbGlwUFQiLAorICAgICJGbGlwUmdPTiIsCisgICAgIkZsaXBSZ09GRiIsCisgICAgIklOU18kODMiLAorICAgICJJTlNfJDg0IiwKKyAgICAiU2NhbkNUUkwiLAorICAgICJTRFZQVExbMF0iLAorICAgICJTRFZQVExbMV0iLAorICAgICJHZXRJTkZPIiwKKyAgICAiSURFRiIsCisgICAgIlJPTEwiLAorICAgICJNQVgiLAorICAgICJNSU4iLAorICAgICJTY2FuVFlQRSIsCisgICAgIkluc3RDVFJMIiwKKyAgICAiSU5TXyQ4RiIsCisKKyAgICAiSU5TXyQ5MCIsCisgICAgIklOU18kOTEiLAorICAgICJJTlNfJDkyIiwKKyAgICAiSU5TXyQ5MyIsCisgICAgIklOU18kOTQiLAorICAgICJJTlNfJDk1IiwKKyAgICAiSU5TXyQ5NiIsCisgICAgIklOU18kOTciLAorICAgICJJTlNfJDk4IiwKKyAgICAiSU5TXyQ5OSIsCisgICAgIklOU18kOUEiLAorICAgICJJTlNfJDlCIiwKKyAgICAiSU5TXyQ5QyIsCisgICAgIklOU18kOUQiLAorICAgICJJTlNfJDlFIiwKKyAgICAiSU5TXyQ5RiIsCisKKyAgICAiSU5TXyRBMCIsCisgICAgIklOU18kQTEiLAorICAgICJJTlNfJEEyIiwKKyAgICAiSU5TXyRBMyIsCisgICAgIklOU18kQTQiLAorICAgICJJTlNfJEE1IiwKKyAgICAiSU5TXyRBNiIsCisgICAgIklOU18kQTciLAorICAgICJJTlNfJEE4IiwKKyAgICAiSU5TXyRBOSIsCisgICAgIklOU18kQUEiLAorICAgICJJTlNfJEFCIiwKKyAgICAiSU5TXyRBQyIsCisgICAgIklOU18kQUQiLAorICAgICJJTlNfJEFFIiwKKyAgICAiSU5TXyRBRiIsCisKKyAgICAiUHVzaEJbMF0iLAorICAgICJQdXNoQlsxXSIsCisgICAgIlB1c2hCWzJdIiwKKyAgICAiUHVzaEJbM10iLAorICAgICJQdXNoQls0XSIsCisgICAgIlB1c2hCWzVdIiwKKyAgICAiUHVzaEJbNl0iLAorICAgICJQdXNoQls3XSIsCisgICAgIlB1c2hXWzBdIiwKKyAgICAiUHVzaFdbMV0iLAorICAgICJQdXNoV1syXSIsCisgICAgIlB1c2hXWzNdIiwKKyAgICAiUHVzaFdbNF0iLAorICAgICJQdXNoV1s1XSIsCisgICAgIlB1c2hXWzZdIiwKKyAgICAiUHVzaFdbN10iLAorCisgICAgIk1EUlBbMDBdIiwKKyAgICAiTURSUFswMV0iLAorICAgICJNRFJQWzAyXSIsCisgICAgIk1EUlBbMDNdIiwKKyAgICAiTURSUFswNF0iLAorICAgICJNRFJQWzA1XSIsCisgICAgIk1EUlBbMDZdIiwKKyAgICAiTURSUFswN10iLAorICAgICJNRFJQWzA4XSIsCisgICAgIk1EUlBbMDldIiwKKyAgICAiTURSUFsxMF0iLAorICAgICJNRFJQWzExXSIsCisgICAgIk1EUlBbMTJdIiwKKyAgICAiTURSUFsxM10iLAorICAgICJNRFJQWzE0XSIsCisgICAgIk1EUlBbMTVdIiwKKworICAgICJNRFJQWzE2XSIsCisgICAgIk1EUlBbMTddIiwKKyAgICAiTURSUFsxOF0iLAorICAgICJNRFJQWzE5XSIsCisgICAgIk1EUlBbMjBdIiwKKyAgICAiTURSUFsyMV0iLAorICAgICJNRFJQWzIyXSIsCisgICAgIk1EUlBbMjNdIiwKKyAgICAiTURSUFsyNF0iLAorICAgICJNRFJQWzI1XSIsCisgICAgIk1EUlBbMjZdIiwKKyAgICAiTURSUFsyN10iLAorICAgICJNRFJQWzI4XSIsCisgICAgIk1EUlBbMjldIiwKKyAgICAiTURSUFszMF0iLAorICAgICJNRFJQWzMxXSIsCisKKyAgICAiTUlSUFswMF0iLAorICAgICJNSVJQWzAxXSIsCisgICAgIk1JUlBbMDJdIiwKKyAgICAiTUlSUFswM10iLAorICAgICJNSVJQWzA0XSIsCisgICAgIk1JUlBbMDVdIiwKKyAgICAiTUlSUFswNl0iLAorICAgICJNSVJQWzA3XSIsCisgICAgIk1JUlBbMDhdIiwKKyAgICAiTUlSUFswOV0iLAorICAgICJNSVJQWzEwXSIsCisgICAgIk1JUlBbMTFdIiwKKyAgICAiTUlSUFsxMl0iLAorICAgICJNSVJQWzEzXSIsCisgICAgIk1JUlBbMTRdIiwKKyAgICAiTUlSUFsxNV0iLAorCisgICAgIk1JUlBbMTZdIiwKKyAgICAiTUlSUFsxN10iLAorICAgICJNSVJQWzE4XSIsCisgICAgIk1JUlBbMTldIiwKKyAgICAiTUlSUFsyMF0iLAorICAgICJNSVJQWzIxXSIsCisgICAgIk1JUlBbMjJdIiwKKyAgICAiTUlSUFsyM10iLAorICAgICJNSVJQWzI0XSIsCisgICAgIk1JUlBbMjVdIiwKKyAgICAiTUlSUFsyNl0iLAorICAgICJNSVJQWzI3XSIsCisgICAgIk1JUlBbMjhdIiwKKyAgICAiTUlSUFsyOV0iLAorICAgICJNSVJQWzMwXSIsCisgICAgIk1JUlBbMzFdIgorICB9OworCisjZW5kaWYgLyogRlRfREVCVUdfTEVWRUxfVFJBQ0UgKi8KKworCisgIHN0YXRpYworICBjb25zdCBGVF9DaGFyICBvcGNvZGVfbGVuZ3RoWzI1Nl0gPQorICB7CisgICAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwKKyAgICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLAorICAgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsCisgICAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwKKworICAgLTEsLTIsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsCisgICAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwKKyAgICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLAorICAgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsCisKKyAgICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLAorICAgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsCisgICAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwKKyAgICAyLCAzLCA0LCA1LCAgNiwgNywgOCwgOSwgIDMsIDUsIDcsIDksIDExLDEzLDE1LDE3LAorCisgICAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwKKyAgICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLAorICAgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsCisgICAgMSwgMSwgMSwgMSwgIDEsIDEsIDEsIDEsICAxLCAxLCAxLCAxLCAgMSwgMSwgMSwgMQorICB9OworCisjdW5kZWYgUEFDSworCisjaWYgMQorCisgIHN0YXRpYyBGVF9JbnQzMgorICBUVF9NdWxGaXgxNCggRlRfSW50MzIgIGEsCisgICAgICAgICAgICAgICBGVF9JbnQgICAgYiApCisgIHsKKyAgICBGVF9JbnQzMiAgIHNpZ247CisgICAgRlRfVUludDMyICBhaCwgYWwsIG1pZCwgbG8sIGhpOworCisKKyAgICBzaWduID0gYSBeIGI7CisKKyAgICBpZiAoIGEgPCAwICkKKyAgICAgIGEgPSAtYTsKKyAgICBpZiAoIGIgPCAwICkKKyAgICAgIGIgPSAtYjsKKworICAgIGFoID0gKEZUX1VJbnQzMikoICggYSA+PiAxNiApICYgMHhGRkZGVSApOworICAgIGFsID0gKEZUX1VJbnQzMikoIGEgJiAweEZGRkZVICk7CisKKyAgICBsbyAgICA9IGFsICogYjsKKyAgICBtaWQgICA9IGFoICogYjsKKyAgICBoaSAgICA9IG1pZCA+PiAxNjsKKyAgICBtaWQgICA9ICggbWlkIDw8IDE2ICkgKyAoIDEgPDwgMTMgKTsgLyogcm91bmRpbmcgKi8KKyAgICBsbyAgICs9IG1pZDsKKyAgICBpZiAoIGxvIDwgbWlkICkKKyAgICAgIGhpICs9IDE7CisKKyAgICBtaWQgPSAoIGxvID4+IDE0ICkgfCAoIGhpIDw8IDE4ICk7CisKKyAgICByZXR1cm4gc2lnbiA+PSAwID8gKEZUX0ludDMyKW1pZCA6IC0oRlRfSW50MzIpbWlkOworICB9CisKKyNlbHNlCisKKyAgLyogY29tcHV0ZSAoYSpiKS8yXjE0IHdpdGggbWF4aW11bSBhY2N1cmFjeSBhbmQgcm91bmRpbmcgKi8KKyAgc3RhdGljIEZUX0ludDMyCisgIFRUX011bEZpeDE0KCBGVF9JbnQzMiAgYSwKKyAgICAgICAgICAgICAgIEZUX0ludCAgICBiICkKKyAgeworICAgIEZUX0ludDMyICAgbSwgcywgaGk7CisgICAgRlRfVUludDMyICBsLCBsbzsKKworCisgICAgLyogY29tcHV0ZSBheCpieCBhcyA2NC1iaXQgdmFsdWUgKi8KKyAgICBsICA9IChGVF9VSW50MzIpKCAoIGEgJiAweEZGRkZVICkgKiBiICk7CisgICAgbSAgPSAoIGEgPj4gMTYgKSAqIGI7CisKKyAgICBsbyA9IGwgKyAoIChGVF9VSW50MzIpbSA8PCAxNiApOworICAgIGhpID0gKCBtID4+IDE2ICkgKyAoIChGVF9JbnQzMilsID4+IDMxICkgKyAoIGxvIDwgbCApOworCisgICAgLyogZGl2aWRlIHRoZSByZXN1bHQgYnkgMl4xNCB3aXRoIHJvdW5kaW5nICovCisgICAgcyAgID0gaGkgPj4gMzE7CisgICAgbCAgID0gbG8gKyAoRlRfVUludDMyKXM7CisgICAgaGkgKz0gcyArICggbCA8IGxvICk7CisgICAgbG8gID0gbDsKKworICAgIGwgICA9IGxvICsgMHgyMDAwVTsKKyAgICBoaSArPSBsIDwgbG87CisKKyAgICByZXR1cm4gKEZUX0ludDMyKSggKCAoRlRfVUludDMyKWhpIDw8IDE4ICkgfCAoIGwgPj4gMTQgKSApOworICB9CisjZW5kaWYKKworCisgIC8qIGNvbXB1dGUgKGF4KmJ4K2F5KmJ5KS8yXjE0IHdpdGggbWF4aW11bSBhY2N1cmFjeSBhbmQgcm91bmRpbmcgKi8KKyAgc3RhdGljIEZUX0ludDMyCisgIFRUX0RvdEZpeDE0KCBGVF9JbnQzMiAgYXgsCisgICAgICAgICAgICAgICBGVF9JbnQzMiAgYXksCisgICAgICAgICAgICAgICBGVF9JbnQgICAgYngsCisgICAgICAgICAgICAgICBGVF9JbnQgICAgYnkgKQorICB7CisgICAgRlRfSW50MzIgICBtLCBzLCBoaTEsIGhpMiwgaGk7CisgICAgRlRfVUludDMyICBsLCBsbzEsIGxvMiwgbG87CisKKworICAgIC8qIGNvbXB1dGUgYXgqYnggYXMgNjQtYml0IHZhbHVlICovCisgICAgbCA9IChGVF9VSW50MzIpKCAoIGF4ICYgMHhGRkZGVSApICogYnggKTsKKyAgICBtID0gKCBheCA+PiAxNiApICogYng7CisKKyAgICBsbzEgPSBsICsgKCAoRlRfVUludDMyKW0gPDwgMTYgKTsKKyAgICBoaTEgPSAoIG0gPj4gMTYgKSArICggKEZUX0ludDMyKWwgPj4gMzEgKSArICggbG8xIDwgbCApOworCisgICAgLyogY29tcHV0ZSBheSpieSBhcyA2NC1iaXQgdmFsdWUgKi8KKyAgICBsID0gKEZUX1VJbnQzMikoICggYXkgJiAweEZGRkZVICkgKiBieSApOworICAgIG0gPSAoIGF5ID4+IDE2ICkgKiBieTsKKworICAgIGxvMiA9IGwgKyAoIChGVF9VSW50MzIpbSA8PCAxNiApOworICAgIGhpMiA9ICggbSA+PiAxNiApICsgKCAoRlRfSW50MzIpbCA+PiAzMSApICsgKCBsbzIgPCBsICk7CisKKyAgICAvKiBhZGQgdGhlbSAqLworICAgIGxvID0gbG8xICsgbG8yOworICAgIGhpID0gaGkxICsgaGkyICsgKCBsbyA8IGxvMSApOworCisgICAgLyogZGl2aWRlIHRoZSByZXN1bHQgYnkgMl4xNCB3aXRoIHJvdW5kaW5nICovCisgICAgcyAgID0gaGkgPj4gMzE7CisgICAgbCAgID0gbG8gKyAoRlRfVUludDMyKXM7CisgICAgaGkgKz0gcyArICggbCA8IGxvICk7CisgICAgbG8gID0gbDsKKworICAgIGwgICA9IGxvICsgMHgyMDAwVTsKKyAgICBoaSArPSAoIGwgPCBsbyApOworCisgICAgcmV0dXJuIChGVF9JbnQzMikoICggKEZUX1VJbnQzMiloaSA8PCAxOCApIHwgKCBsID4+IDE0ICkgKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ3VycmVudF9SYXRpbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0dXJucyB0aGUgY3VycmVudCBhc3BlY3QgcmF0aW8gc2NhbGluZyBmYWN0b3IgZGVwZW5kaW5nIG9uIHRoZSAgICovCisgIC8qICAgIHByb2plY3Rpb24gdmVjdG9yJ3Mgc3RhdGUgYW5kIGRldmljZSByZXNvbHV0aW9ucy4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBhc3BlY3QgcmF0aW8gaW4gMTYuMTYgZm9ybWF0LCBhbHdheXMgPD0gMS4wIC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0xvbmcKKyAgQ3VycmVudF9SYXRpbyggRVhFQ19PUCApCisgIHsKKyAgICBpZiAoICFDVVIudHRfbWV0cmljcy5yYXRpbyApCisgICAgeworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCisgICAgICBpZiAoIENVUi5mYWNlLT51bnBhdGVudGVkX2hpbnRpbmcgKQorICAgICAgeworICAgICAgICBpZiAoIENVUi5HUy5ib3RoX3hfYXhpcyApCisgICAgICAgICAgQ1VSLnR0X21ldHJpY3MucmF0aW8gPSBDVVIudHRfbWV0cmljcy54X3JhdGlvOworICAgICAgICBlbHNlCisgICAgICAgICAgQ1VSLnR0X21ldHJpY3MucmF0aW8gPSBDVVIudHRfbWV0cmljcy55X3JhdGlvOworICAgICAgfQorICAgICAgZWxzZQorI2VuZGlmCisgICAgICB7CisgICAgICAgIGlmICggQ1VSLkdTLnByb2pWZWN0b3IueSA9PSAwICkKKyAgICAgICAgICBDVVIudHRfbWV0cmljcy5yYXRpbyA9IENVUi50dF9tZXRyaWNzLnhfcmF0aW87CisKKyAgICAgICAgZWxzZSBpZiAoIENVUi5HUy5wcm9qVmVjdG9yLnggPT0gMCApCisgICAgICAgICAgQ1VSLnR0X21ldHJpY3MucmF0aW8gPSBDVVIudHRfbWV0cmljcy55X3JhdGlvOworCisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIEZUX0YyNkRvdDYgIHgsIHk7CisKKworICAgICAgICAgIHggPSBUVF9NdWxGaXgxNCggQ1VSLnR0X21ldHJpY3MueF9yYXRpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi5HUy5wcm9qVmVjdG9yLnggKTsKKyAgICAgICAgICB5ID0gVFRfTXVsRml4MTQoIENVUi50dF9tZXRyaWNzLnlfcmF0aW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIuR1MucHJvalZlY3Rvci55ICk7CisgICAgICAgICAgQ1VSLnR0X21ldHJpY3MucmF0aW8gPSBGVF9IeXBvdCggeCwgeSApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBDVVIudHRfbWV0cmljcy5yYXRpbzsKKyAgfQorCisKKyAgc3RhdGljIEZUX0xvbmcKKyAgQ3VycmVudF9QcGVtKCBFWEVDX09QICkKKyAgeworICAgIHJldHVybiBGVF9NdWxGaXgoIENVUi50dF9tZXRyaWNzLnBwZW0sIENVUlJFTlRfUmF0aW8oKSApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBjb250cm9sIHZhbHVlIHRhYmxlIChDVlQpLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0YyNkRvdDYgKQorICBSZWFkX0NWVCggRVhFQ19PUF8gRlRfVUxvbmcgIGlkeCApCisgIHsKKyAgICByZXR1cm4gQ1VSLmN2dFtpZHhdOworICB9CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX0YyNkRvdDYgKQorICBSZWFkX0NWVF9TdHJldGNoZWQoIEVYRUNfT1BfIEZUX1VMb25nICBpZHggKQorICB7CisgICAgcmV0dXJuIEZUX011bEZpeCggQ1VSLmN2dFtpZHhdLCBDVVJSRU5UX1JhdGlvKCkgKTsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCB2b2lkICkKKyAgV3JpdGVfQ1ZUKCBFWEVDX09QXyBGVF9VTG9uZyAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgdmFsdWUgKQorICB7CisgICAgQ1VSLmN2dFtpZHhdID0gdmFsdWU7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggdm9pZCApCisgIFdyaXRlX0NWVF9TdHJldGNoZWQoIEVYRUNfT1BfIEZUX1VMb25nICAgIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgdmFsdWUgKQorICB7CisgICAgQ1VSLmN2dFtpZHhdID0gRlRfRGl2Rml4KCB2YWx1ZSwgQ1VSUkVOVF9SYXRpbygpICk7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggdm9pZCApCisgIE1vdmVfQ1ZUKCBFWEVDX09QXyBGVF9VTG9uZyAgICBpZHgsCisgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICB2YWx1ZSApCisgIHsKKyAgICBDVVIuY3Z0W2lkeF0gKz0gdmFsdWU7CisgIH0KKworCisgIEZUX0NBTExCQUNLX0RFRiggdm9pZCApCisgIE1vdmVfQ1ZUX1N0cmV0Y2hlZCggRVhFQ19PUF8gRlRfVUxvbmcgICAgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIHZhbHVlICkKKyAgeworICAgIENVUi5jdnRbaWR4XSArPSBGVF9EaXZGaXgoIHZhbHVlLCBDVVJSRU5UX1JhdGlvKCkgKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgR2V0U2hvcnRJbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUmV0dXJucyBhIHNob3J0IGludGVnZXIgdGFrZW4gZnJvbSB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIGF0ICAgICAgICovCisgIC8qICAgIGFkZHJlc3MgSVAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNob3J0IHJlYWQgYXQgY29kZVtJUF0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgb25lIGNvdWxkIGJlY29tZSBhIG1hY3JvLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX1Nob3J0CisgIEdldFNob3J0SW5zKCBFWEVDX09QICkKKyAgeworICAgIC8qIFJlYWRpbmcgYSBieXRlIHN0cmVhbSBzbyB0aGVyZSBpcyBubyBlbmRpYW5lc3MgKERhdmVQKSAqLworICAgIENVUi5JUCArPSAyOworICAgIHJldHVybiAoRlRfU2hvcnQpKCAoIENVUi5jb2RlW0NVUi5JUCAtIDJdIDw8IDggKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLmNvZGVbQ1VSLklQIC0gMV0gICAgICApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbnNfR290b19Db2RlUmFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHb2VzIHRvIGEgY2VydGFpbiBjb2RlIHJhbmdlIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBhUmFuZ2UgOjogVGhlIGluZGV4IG9mIHRoZSBjb2RlIHJhbmdlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGFJUCAgICA6OiBUaGUgbmV3IElQIGFkZHJlc3MgaW4gdGhlIGNvZGUgcmFuZ2UuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNVQ0NFU1Mgb3IgRkFJTFVSRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0Jvb2wKKyAgSW5zX0dvdG9fQ29kZVJhbmdlKCBFWEVDX09QXyBGVF9JbnQgICAgYVJhbmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICBhSVAgKQorICB7CisgICAgVFRfQ29kZVJhbmdlKiAgcmFuZ2U7CisKKworICAgIGlmICggYVJhbmdlIDwgMSB8fCBhUmFuZ2UgPiAzICkKKyAgICB7CisgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggQmFkX0FyZ3VtZW50ICk7CisgICAgICByZXR1cm4gRkFJTFVSRTsKKyAgICB9CisKKyAgICByYW5nZSA9ICZDVVIuY29kZVJhbmdlVGFibGVbYVJhbmdlIC0gMV07CisKKyAgICBpZiAoIHJhbmdlLT5iYXNlID09IE5VTEwgKSAgICAgLyogaW52YWxpZCBjb2RlcmFuZ2UgKi8KKyAgICB7CisgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9Db2RlUmFuZ2UgKTsKKyAgICAgIHJldHVybiBGQUlMVVJFOworICAgIH0KKworICAgIC8qIE5PVEU6IEJlY2F1c2UgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gb2YgYSBwcm9ncmFtIG1heSBiZSBhIENBTEwgKi8KKyAgICAvKiAgICAgICB3aGljaCB3aWxsIHJldHVybiB0byB0aGUgZmlyc3QgYnl0ZSAqYWZ0ZXIqIHRoZSBjb2RlICAgICovCisgICAgLyogICAgICAgcmFuZ2UsIHdlIHRlc3QgZm9yIGFJUCA8PSBTaXplLCBpbnN0ZWFkIG9mIGFJUCA8IFNpemUuICAqLworCisgICAgaWYgKCBhSVAgPiByYW5nZS0+c2l6ZSApCisgICAgeworICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIENvZGVfT3ZlcmZsb3cgKTsKKyAgICAgIHJldHVybiBGQUlMVVJFOworICAgIH0KKworICAgIENVUi5jb2RlICAgICA9IHJhbmdlLT5iYXNlOworICAgIENVUi5jb2RlU2l6ZSA9IHJhbmdlLT5zaXplOworICAgIENVUi5JUCAgICAgICA9IGFJUDsKKyAgICBDVVIuY3VyUmFuZ2UgPSBhUmFuZ2U7CisKKyAgICByZXR1cm4gU1VDQ0VTUzsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGlyZWN0X01vdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTW92ZXMgYSBwb2ludCBieSBhIGdpdmVuIGRpc3RhbmNlIGFsb25nIHRoZSBmcmVlZG9tIHZlY3Rvci4gIFRoZSAgICovCisgIC8qICAgIHBvaW50IHdpbGwgYmUgYHRvdWNoZWQnLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBvaW50ICAgIDo6IFRoZSBpbmRleCBvZiB0aGUgcG9pbnQgdG8gbW92ZS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGlzdGFuY2UgOjogVGhlIGRpc3RhbmNlIHRvIGFwcGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgem9uZSAgICAgOjogVGhlIGFmZmVjdGVkIGdseXBoIHpvbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBEaXJlY3RfTW92ZSggRVhFQ19PUF8gVFRfR2x5cGhab25lICB6b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0ICAgICBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgICAgZGlzdGFuY2UgKQorICB7CisgICAgRlRfRjI2RG90NiAgdjsKKworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcKKyAgICBGVF9BU1NFUlQoICFDVVIuZmFjZS0+dW5wYXRlbnRlZF9oaW50aW5nICk7CisjZW5kaWYKKworICAgIHYgPSBDVVIuR1MuZnJlZVZlY3Rvci54OworCisgICAgaWYgKCB2ICE9IDAgKQorICAgIHsKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICAgIGlmICggIVNVQlBJWEVMX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgKCAhQ1VSLmlnbm9yZV94X21vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgKCBDVVIuc3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX0FMTE9XX1hfRE1PVkUgKSApICkKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKyAgICAgICAgem9uZS0+Y3VyW3BvaW50XS54ICs9IEZUX011bERpdiggZGlzdGFuY2UsIHYsIENVUi5GX2RvdF9QICk7CisKKyAgICAgIHpvbmUtPnRhZ3NbcG9pbnRdIHw9IEZUX0NVUlZFX1RBR19UT1VDSF9YOworICAgIH0KKworICAgIHYgPSBDVVIuR1MuZnJlZVZlY3Rvci55OworCisgICAgaWYgKCB2ICE9IDAgKQorICAgIHsKKyAgICAgIHpvbmUtPmN1cltwb2ludF0ueSArPSBGVF9NdWxEaXYoIGRpc3RhbmNlLCB2LCBDVVIuRl9kb3RfUCApOworCisgICAgICB6b25lLT50YWdzW3BvaW50XSB8PSBGVF9DVVJWRV9UQUdfVE9VQ0hfWTsKKyAgICB9CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIERpcmVjdF9Nb3ZlX09yaWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE1vdmVzIHRoZSAqb3JpZ2luYWwqIHBvc2l0aW9uIG9mIGEgcG9pbnQgYnkgYSBnaXZlbiBkaXN0YW5jZSBhbG9uZyAqLworICAvKiAgICB0aGUgZnJlZWRvbSB2ZWN0b3IuICBPYnZpb3VzbHksIHRoZSBwb2ludCB3aWxsIG5vdCBiZSBgdG91Y2hlZCcuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwb2ludCAgICA6OiBUaGUgaW5kZXggb2YgdGhlIHBvaW50IHRvIG1vdmUuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRpc3RhbmNlIDo6IFRoZSBkaXN0YW5jZSB0byBhcHBseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHpvbmUgICAgIDo6IFRoZSBhZmZlY3RlZCBnbHlwaCB6b25lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgRGlyZWN0X01vdmVfT3JpZyggRVhFQ19PUF8gVFRfR2x5cGhab25lICB6b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VU2hvcnQgICAgIHBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICAgIGRpc3RhbmNlICkKKyAgeworICAgIEZUX0YyNkRvdDYgIHY7CisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCisgICAgRlRfQVNTRVJUKCAhQ1VSLmZhY2UtPnVucGF0ZW50ZWRfaGludGluZyApOworI2VuZGlmCisKKyAgICB2ID0gQ1VSLkdTLmZyZWVWZWN0b3IueDsKKworICAgIGlmICggdiAhPSAwICkKKyAgICAgIHpvbmUtPm9yZ1twb2ludF0ueCArPSBGVF9NdWxEaXYoIGRpc3RhbmNlLCB2LCBDVVIuRl9kb3RfUCApOworCisgICAgdiA9IENVUi5HUy5mcmVlVmVjdG9yLnk7CisKKyAgICBpZiAoIHYgIT0gMCApCisgICAgICB6b25lLT5vcmdbcG9pbnRdLnkgKz0gRlRfTXVsRGl2KCBkaXN0YW5jZSwgdiwgQ1VSLkZfZG90X1AgKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTcGVjaWFsIHZlcnNpb25zIG9mIERpcmVjdF9Nb3ZlKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgVGhlIGZvbGxvd2luZyB2ZXJzaW9ucyBhcmUgdXNlZCB3aGVuZXZlciBib3RoIHZlY3RvcnMgYXJlIGJvdGggICAgICAqLworICAvKiAgIGFsb25nIG9uZSBvZiB0aGUgY29vcmRpbmF0ZSB1bml0IHZlY3RvcnMsIGkuZS4gaW4gOTAlIG9mIHRoZSBjYXNlcy4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgc3RhdGljIHZvaWQKKyAgRGlyZWN0X01vdmVfWCggRVhFQ19PUF8gVFRfR2x5cGhab25lICB6b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VU2hvcnQgICAgIHBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICAgIGRpc3RhbmNlICkKKyAgeworICAgIEZUX1VOVVNFRF9FWEVDOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgaWYgKCAhU1VCUElYRUxfSElOVElORyAgfHwKKyAgICAgICAgICFDVVIuaWdub3JlX3hfbW9kZSApCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisgICAgICB6b25lLT5jdXJbcG9pbnRdLnggKz0gZGlzdGFuY2U7CisKKyAgICB6b25lLT50YWdzW3BvaW50XSAgfD0gRlRfQ1VSVkVfVEFHX1RPVUNIX1g7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIERpcmVjdF9Nb3ZlX1koIEVYRUNfT1BfIFRUX0dseXBoWm9uZSAgem9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0ICAgICBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgICBkaXN0YW5jZSApCisgIHsKKyAgICBGVF9VTlVTRURfRVhFQzsKKworICAgIHpvbmUtPmN1cltwb2ludF0ueSArPSBkaXN0YW5jZTsKKyAgICB6b25lLT50YWdzW3BvaW50XSAgfD0gRlRfQ1VSVkVfVEFHX1RPVUNIX1k7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3BlY2lhbCB2ZXJzaW9ucyBvZiBEaXJlY3RfTW92ZV9PcmlnKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFRoZSBmb2xsb3dpbmcgdmVyc2lvbnMgYXJlIHVzZWQgd2hlbmV2ZXIgYm90aCB2ZWN0b3JzIGFyZSBib3RoICAgICAgKi8KKyAgLyogICBhbG9uZyBvbmUgb2YgdGhlIGNvb3JkaW5hdGUgdW5pdCB2ZWN0b3JzLCBpLmUuIGluIDkwJSBvZiB0aGUgY2FzZXMuICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIHN0YXRpYyB2b2lkCisgIERpcmVjdF9Nb3ZlX09yaWdfWCggRVhFQ19PUF8gVFRfR2x5cGhab25lICB6b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VTaG9ydCAgICAgcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgICBkaXN0YW5jZSApCisgIHsKKyAgICBGVF9VTlVTRURfRVhFQzsKKworICAgIHpvbmUtPm9yZ1twb2ludF0ueCArPSBkaXN0YW5jZTsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgRGlyZWN0X01vdmVfT3JpZ19ZKCBFWEVDX09QXyBUVF9HbHlwaFpvbmUgIHpvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0ICAgICBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICAgIGRpc3RhbmNlICkKKyAgeworICAgIEZUX1VOVVNFRF9FWEVDOworCisgICAgem9uZS0+b3JnW3BvaW50XS55ICs9IGRpc3RhbmNlOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSb3VuZF9Ob25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBEb2VzIG5vdCByb3VuZCwgYnV0IGFkZHMgZW5naW5lIGNvbXBlbnNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkaXN0YW5jZSAgICAgOjogVGhlIGRpc3RhbmNlIChub3QpIHRvIHJvdW5kLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbXBlbnNhdGlvbiA6OiBUaGUgZW5naW5lIGNvbXBlbnNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBjb21wZW5zYXRlZCBkaXN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBUcnVlVHlwZSBzcGVjaWZpY2F0aW9uIHNheXMgdmVyeSBmZXcgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcCAgICAqLworICAvKiAgICBiZXR3ZWVuIHJvdW5kaW5nIGFuZCBlbmdpbmUgY29tcGVuc2F0aW9uLiAgSG93ZXZlciwgaXQgc2VlbXMgZnJvbSAgKi8KKyAgLyogICAgdGhlIGRlc2NyaXB0aW9uIG9mIHN1cGVyIHJvdW5kIHRoYXQgd2Ugc2hvdWxkIGFkZCB0aGUgY29tcGVuc2F0aW9uICovCisgIC8qICAgIGJlZm9yZSByb3VuZGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0YyNkRvdDYKKyAgUm91bmRfTm9uZSggRVhFQ19PUF8gRlRfRjI2RG90NiAgZGlzdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIGNvbXBlbnNhdGlvbiApCisgIHsKKyAgICBGVF9GMjZEb3Q2ICB2YWw7CisKKyAgICBGVF9VTlVTRURfRVhFQzsKKworCisgICAgaWYgKCBkaXN0YW5jZSA+PSAwICkKKyAgICB7CisgICAgICB2YWwgPSBkaXN0YW5jZSArIGNvbXBlbnNhdGlvbjsKKyAgICAgIGlmICggZGlzdGFuY2UgJiYgdmFsIDwgMCApCisgICAgICAgIHZhbCA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB2YWwgPSBkaXN0YW5jZSAtIGNvbXBlbnNhdGlvbjsKKyAgICAgIGlmICggdmFsID4gMCApCisgICAgICAgIHZhbCA9IDA7CisgICAgfQorICAgIHJldHVybiB2YWw7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJvdW5kX1RvX0dyaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJvdW5kcyB2YWx1ZSB0byBncmlkIGFmdGVyIGFkZGluZyBlbmdpbmUgY29tcGVuc2F0aW9uLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRpc3RhbmNlICAgICA6OiBUaGUgZGlzdGFuY2UgdG8gcm91bmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29tcGVuc2F0aW9uIDo6IFRoZSBlbmdpbmUgY29tcGVuc2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUm91bmRlZCBkaXN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRjI2RG90NgorICBSb3VuZF9Ub19HcmlkKCBFWEVDX09QXyBGVF9GMjZEb3Q2ICBkaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgY29tcGVuc2F0aW9uICkKKyAgeworICAgIEZUX0YyNkRvdDYgIHZhbDsKKworICAgIEZUX1VOVVNFRF9FWEVDOworCisKKyAgICBpZiAoIGRpc3RhbmNlID49IDAgKQorICAgIHsKKyAgICAgIHZhbCA9IGRpc3RhbmNlICsgY29tcGVuc2F0aW9uICsgMzI7CisgICAgICBpZiAoIGRpc3RhbmNlICYmIHZhbCA+IDAgKQorICAgICAgICB2YWwgJj0gfjYzOworICAgICAgZWxzZQorICAgICAgICB2YWwgPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgdmFsID0gLUZUX1BJWF9ST1VORCggY29tcGVuc2F0aW9uIC0gZGlzdGFuY2UgKTsKKyAgICAgIGlmICggdmFsID4gMCApCisgICAgICAgIHZhbCA9IDA7CisgICAgfQorCisgICAgcmV0dXJuICB2YWw7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJvdW5kX1RvX0hhbGZfR3JpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJvdW5kcyB2YWx1ZSB0byBoYWxmIGdyaWQgYWZ0ZXIgYWRkaW5nIGVuZ2luZSBjb21wZW5zYXRpb24uICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRpc3RhbmNlICAgICA6OiBUaGUgZGlzdGFuY2UgdG8gcm91bmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29tcGVuc2F0aW9uIDo6IFRoZSBlbmdpbmUgY29tcGVuc2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUm91bmRlZCBkaXN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRjI2RG90NgorICBSb3VuZF9Ub19IYWxmX0dyaWQoIEVYRUNfT1BfIEZUX0YyNkRvdDYgIGRpc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIGNvbXBlbnNhdGlvbiApCisgIHsKKyAgICBGVF9GMjZEb3Q2ICB2YWw7CisKKyAgICBGVF9VTlVTRURfRVhFQzsKKworCisgICAgaWYgKCBkaXN0YW5jZSA+PSAwICkKKyAgICB7CisgICAgICB2YWwgPSBGVF9QSVhfRkxPT1IoIGRpc3RhbmNlICsgY29tcGVuc2F0aW9uICkgKyAzMjsKKyAgICAgIGlmICggZGlzdGFuY2UgJiYgdmFsIDwgMCApCisgICAgICAgIHZhbCA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB2YWwgPSAtKCBGVF9QSVhfRkxPT1IoIGNvbXBlbnNhdGlvbiAtIGRpc3RhbmNlICkgKyAzMiApOworICAgICAgaWYgKCB2YWwgPiAwICkKKyAgICAgICAgdmFsID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gdmFsOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSb3VuZF9Eb3duX1RvX0dyaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSb3VuZHMgdmFsdWUgZG93biB0byBncmlkIGFmdGVyIGFkZGluZyBlbmdpbmUgY29tcGVuc2F0aW9uLiAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkaXN0YW5jZSAgICAgOjogVGhlIGRpc3RhbmNlIHRvIHJvdW5kLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbXBlbnNhdGlvbiA6OiBUaGUgZW5naW5lIGNvbXBlbnNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJvdW5kZWQgZGlzdGFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0YyNkRvdDYKKyAgUm91bmRfRG93bl9Ub19HcmlkKCBFWEVDX09QXyBGVF9GMjZEb3Q2ICBkaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICBjb21wZW5zYXRpb24gKQorICB7CisgICAgRlRfRjI2RG90NiAgdmFsOworCisgICAgRlRfVU5VU0VEX0VYRUM7CisKKworICAgIGlmICggZGlzdGFuY2UgPj0gMCApCisgICAgeworICAgICAgdmFsID0gZGlzdGFuY2UgKyBjb21wZW5zYXRpb247CisgICAgICBpZiAoIGRpc3RhbmNlICYmIHZhbCA+IDAgKQorICAgICAgICB2YWwgJj0gfjYzOworICAgICAgZWxzZQorICAgICAgICB2YWwgPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgdmFsID0gLSggKCBjb21wZW5zYXRpb24gLSBkaXN0YW5jZSApICYgLTY0ICk7CisgICAgICBpZiAoIHZhbCA+IDAgKQorICAgICAgICB2YWwgPSAwOworICAgIH0KKworICAgIHJldHVybiB2YWw7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJvdW5kX1VwX1RvX0dyaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJvdW5kcyB2YWx1ZSB1cCB0byBncmlkIGFmdGVyIGFkZGluZyBlbmdpbmUgY29tcGVuc2F0aW9uLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRpc3RhbmNlICAgICA6OiBUaGUgZGlzdGFuY2UgdG8gcm91bmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgY29tcGVuc2F0aW9uIDo6IFRoZSBlbmdpbmUgY29tcGVuc2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUm91bmRlZCBkaXN0YW5jZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRjI2RG90NgorICBSb3VuZF9VcF9Ub19HcmlkKCBFWEVDX09QXyBGVF9GMjZEb3Q2ICBkaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgY29tcGVuc2F0aW9uICkKKyAgeworICAgIEZUX0YyNkRvdDYgIHZhbDsKKworICAgIEZUX1VOVVNFRF9FWEVDOworCisKKyAgICBpZiAoIGRpc3RhbmNlID49IDAgKQorICAgIHsKKyAgICAgIHZhbCA9IGRpc3RhbmNlICsgY29tcGVuc2F0aW9uICsgNjM7CisgICAgICBpZiAoIGRpc3RhbmNlICYmIHZhbCA+IDAgKQorICAgICAgICB2YWwgJj0gfjYzOworICAgICAgZWxzZQorICAgICAgICB2YWwgPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgdmFsID0gLUZUX1BJWF9DRUlMKCBjb21wZW5zYXRpb24gLSBkaXN0YW5jZSApOworICAgICAgaWYgKCB2YWwgPiAwICkKKyAgICAgICAgdmFsID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gdmFsOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSb3VuZF9Ub19Eb3VibGVfR3JpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSb3VuZHMgdmFsdWUgdG8gZG91YmxlIGdyaWQgYWZ0ZXIgYWRkaW5nIGVuZ2luZSBjb21wZW5zYXRpb24uICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkaXN0YW5jZSAgICAgOjogVGhlIGRpc3RhbmNlIHRvIHJvdW5kLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbXBlbnNhdGlvbiA6OiBUaGUgZW5naW5lIGNvbXBlbnNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJvdW5kZWQgZGlzdGFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0YyNkRvdDYKKyAgUm91bmRfVG9fRG91YmxlX0dyaWQoIEVYRUNfT1BfIEZUX0YyNkRvdDYgIGRpc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgY29tcGVuc2F0aW9uICkKKyAgeworICAgIEZUX0YyNkRvdDYgdmFsOworCisgICAgRlRfVU5VU0VEX0VYRUM7CisKKworICAgIGlmICggZGlzdGFuY2UgPj0gMCApCisgICAgeworICAgICAgdmFsID0gZGlzdGFuY2UgKyBjb21wZW5zYXRpb24gKyAxNjsKKyAgICAgIGlmICggZGlzdGFuY2UgJiYgdmFsID4gMCApCisgICAgICAgIHZhbCAmPSB+MzE7CisgICAgICBlbHNlCisgICAgICAgIHZhbCA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB2YWwgPSAtRlRfUEFEX1JPVU5EKCBjb21wZW5zYXRpb24gLSBkaXN0YW5jZSwgMzIgKTsKKyAgICAgIGlmICggdmFsID4gMCApCisgICAgICAgIHZhbCA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIHZhbDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUm91bmRfU3VwZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgU3VwZXItcm91bmRzIHZhbHVlIHRvIGdyaWQgYWZ0ZXIgYWRkaW5nIGVuZ2luZSBjb21wZW5zYXRpb24uICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZGlzdGFuY2UgICAgIDo6IFRoZSBkaXN0YW5jZSB0byByb3VuZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBjb21wZW5zYXRpb24gOjogVGhlIGVuZ2luZSBjb21wZW5zYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSb3VuZGVkIGRpc3RhbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxOb3RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbiBzYXlzIHZlcnkgZmV3IGFib3V0IHRoZSByZWxhdGlvbnNoaXAgICAgKi8KKyAgLyogICAgYmV0d2VlbiByb3VuZGluZyBhbmQgZW5naW5lIGNvbXBlbnNhdGlvbi4gIEhvd2V2ZXIsIGl0IHNlZW1zIGZyb20gICovCisgIC8qICAgIHRoZSBkZXNjcmlwdGlvbiBvZiBzdXBlciByb3VuZCB0aGF0IHdlIHNob3VsZCBhZGQgdGhlIGNvbXBlbnNhdGlvbiAqLworICAvKiAgICBiZWZvcmUgcm91bmRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9GMjZEb3Q2CisgIFJvdW5kX1N1cGVyKCBFWEVDX09QXyBGVF9GMjZEb3Q2ICBkaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIGNvbXBlbnNhdGlvbiApCisgIHsKKyAgICBGVF9GMjZEb3Q2ICB2YWw7CisKKworICAgIGlmICggZGlzdGFuY2UgPj0gMCApCisgICAgeworICAgICAgdmFsID0gKCBkaXN0YW5jZSAtIENVUi5waGFzZSArIENVUi50aHJlc2hvbGQgKyBjb21wZW5zYXRpb24gKSAmCisgICAgICAgICAgICAgIC1DVVIucGVyaW9kOworICAgICAgaWYgKCBkaXN0YW5jZSAmJiB2YWwgPCAwICkKKyAgICAgICAgdmFsID0gMDsKKyAgICAgIHZhbCArPSBDVVIucGhhc2U7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB2YWwgPSAtKCAoIENVUi50aHJlc2hvbGQgLSBDVVIucGhhc2UgLSBkaXN0YW5jZSArIGNvbXBlbnNhdGlvbiApICYKKyAgICAgICAgICAgICAgIC1DVVIucGVyaW9kICk7CisgICAgICBpZiAoIHZhbCA+IDAgKQorICAgICAgICB2YWwgPSAwOworICAgICAgdmFsIC09IENVUi5waGFzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdmFsOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSb3VuZF9TdXBlcl80NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTdXBlci1yb3VuZHMgdmFsdWUgdG8gZ3JpZCBhZnRlciBhZGRpbmcgZW5naW5lIGNvbXBlbnNhdGlvbi4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkaXN0YW5jZSAgICAgOjogVGhlIGRpc3RhbmNlIHRvIHJvdW5kLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGNvbXBlbnNhdGlvbiA6OiBUaGUgZW5naW5lIGNvbXBlbnNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJvdW5kZWQgZGlzdGFuY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZXJlIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gZm9yIFJvdW5kX1N1cGVyXzQ1KCkgYXMgd2UgbWF5IG5lZWQgICAqLworICAvKiAgICBncmVhdGVyIHByZWNpc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9GMjZEb3Q2CisgIFJvdW5kX1N1cGVyXzQ1KCBFWEVDX09QXyBGVF9GMjZEb3Q2ICBkaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIGNvbXBlbnNhdGlvbiApCisgIHsKKyAgICBGVF9GMjZEb3Q2ICB2YWw7CisKKworICAgIGlmICggZGlzdGFuY2UgPj0gMCApCisgICAgeworICAgICAgdmFsID0gKCAoIGRpc3RhbmNlIC0gQ1VSLnBoYXNlICsgQ1VSLnRocmVzaG9sZCArIGNvbXBlbnNhdGlvbiApIC8KKyAgICAgICAgICAgICAgICBDVVIucGVyaW9kICkgKiBDVVIucGVyaW9kOworICAgICAgaWYgKCBkaXN0YW5jZSAmJiB2YWwgPCAwICkKKyAgICAgICAgdmFsID0gMDsKKyAgICAgIHZhbCArPSBDVVIucGhhc2U7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB2YWwgPSAtKCAoICggQ1VSLnRocmVzaG9sZCAtIENVUi5waGFzZSAtIGRpc3RhbmNlICsgY29tcGVuc2F0aW9uICkgLworICAgICAgICAgICAgICAgICAgIENVUi5wZXJpb2QgKSAqIENVUi5wZXJpb2QgKTsKKyAgICAgIGlmICggdmFsID4gMCApCisgICAgICAgIHZhbCA9IDA7CisgICAgICB2YWwgLT0gQ1VSLnBoYXNlOworICAgIH0KKworICAgIHJldHVybiB2YWw7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbXB1dGVfUm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFNldHMgdGhlIHJvdW5kaW5nIG1vZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJvdW5kX21vZGUgOjogVGhlIHJvdW5kaW5nIG1vZGUgdG8gYmUgdXNlZC4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgQ29tcHV0ZV9Sb3VuZCggRVhFQ19PUF8gRlRfQnl0ZSAgcm91bmRfbW9kZSApCisgIHsKKyAgICBzd2l0Y2ggKCByb3VuZF9tb2RlICkKKyAgICB7CisgICAgY2FzZSBUVF9Sb3VuZF9PZmY6CisgICAgICBDVVIuZnVuY19yb3VuZCA9IChUVF9Sb3VuZF9GdW5jKVJvdW5kX05vbmU7CisgICAgICBicmVhazsKKworICAgIGNhc2UgVFRfUm91bmRfVG9fR3JpZDoKKyAgICAgIENVUi5mdW5jX3JvdW5kID0gKFRUX1JvdW5kX0Z1bmMpUm91bmRfVG9fR3JpZDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBUVF9Sb3VuZF9VcF9Ub19HcmlkOgorICAgICAgQ1VSLmZ1bmNfcm91bmQgPSAoVFRfUm91bmRfRnVuYylSb3VuZF9VcF9Ub19HcmlkOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFRUX1JvdW5kX0Rvd25fVG9fR3JpZDoKKyAgICAgIENVUi5mdW5jX3JvdW5kID0gKFRUX1JvdW5kX0Z1bmMpUm91bmRfRG93bl9Ub19HcmlkOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFRUX1JvdW5kX1RvX0hhbGZfR3JpZDoKKyAgICAgIENVUi5mdW5jX3JvdW5kID0gKFRUX1JvdW5kX0Z1bmMpUm91bmRfVG9fSGFsZl9HcmlkOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFRUX1JvdW5kX1RvX0RvdWJsZV9HcmlkOgorICAgICAgQ1VSLmZ1bmNfcm91bmQgPSAoVFRfUm91bmRfRnVuYylSb3VuZF9Ub19Eb3VibGVfR3JpZDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBUVF9Sb3VuZF9TdXBlcjoKKyAgICAgIENVUi5mdW5jX3JvdW5kID0gKFRUX1JvdW5kX0Z1bmMpUm91bmRfU3VwZXI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgVFRfUm91bmRfU3VwZXJfNDU6CisgICAgICBDVVIuZnVuY19yb3VuZCA9IChUVF9Sb3VuZF9GdW5jKVJvdW5kX1N1cGVyXzQ1OworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTZXRTdXBlclJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBTZXRzIFN1cGVyIFJvdW5kIHBhcmFtZXRlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHcmlkUGVyaW9kIDo6IFRoZSBncmlkIHBlcmlvZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNlbGVjdG9yICAgOjogVGhlIFNST1VORCBvcGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgU2V0U3VwZXJSb3VuZCggRVhFQ19PUF8gRlRfRjI2RG90NiAgR3JpZFBlcmlvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgc2VsZWN0b3IgKQorICB7CisgICAgc3dpdGNoICggKEZUX0ludCkoIHNlbGVjdG9yICYgMHhDMCApICkKKyAgICB7CisgICAgICBjYXNlIDA6CisgICAgICAgIENVUi5wZXJpb2QgPSBHcmlkUGVyaW9kIC8gMjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgMHg0MDoKKyAgICAgICAgQ1VSLnBlcmlvZCA9IEdyaWRQZXJpb2Q7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDB4ODA6CisgICAgICAgIENVUi5wZXJpb2QgPSBHcmlkUGVyaW9kICogMjsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIC8qIFRoaXMgb3Bjb2RlIGlzIHJlc2VydmVkLCBidXQuLi4gKi8KKworICAgICAgY2FzZSAweEMwOgorICAgICAgICBDVVIucGVyaW9kID0gR3JpZFBlcmlvZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoICggKEZUX0ludCkoIHNlbGVjdG9yICYgMHgzMCApICkKKyAgICB7CisgICAgY2FzZSAwOgorICAgICAgQ1VSLnBoYXNlID0gMDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAweDEwOgorICAgICAgQ1VSLnBoYXNlID0gQ1VSLnBlcmlvZCAvIDQ7CisgICAgICBicmVhazsKKworICAgIGNhc2UgMHgyMDoKKyAgICAgIENVUi5waGFzZSA9IENVUi5wZXJpb2QgLyAyOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDB4MzA6CisgICAgICBDVVIucGhhc2UgPSBDVVIucGVyaW9kICogMyAvIDQ7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoICggc2VsZWN0b3IgJiAweDBGICkgPT0gMCApCisgICAgICBDVVIudGhyZXNob2xkID0gQ1VSLnBlcmlvZCAtIDE7CisgICAgZWxzZQorICAgICAgQ1VSLnRocmVzaG9sZCA9ICggKEZUX0ludCkoIHNlbGVjdG9yICYgMHgwRiApIC0gNCApICogQ1VSLnBlcmlvZCAvIDg7CisKKyAgICBDVVIucGVyaW9kICAgIC89IDI1NjsKKyAgICBDVVIucGhhc2UgICAgIC89IDI1NjsKKyAgICBDVVIudGhyZXNob2xkIC89IDI1NjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQ29tcHV0ZXMgdGhlIHByb2plY3Rpb24gb2YgdmVjdG9yIGdpdmVuIGJ5ICh2Mi12MSkgYWxvbmcgdGhlICAgICAgICovCisgIC8qICAgIGN1cnJlbnQgcHJvamVjdGlvbiB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHYxIDo6IEZpcnN0IGlucHV0IHZlY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2MiA6OiBTZWNvbmQgaW5wdXQgdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgZGlzdGFuY2UgaW4gRjI2ZG90NiBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9GMjZEb3Q2CisgIFByb2plY3QoIEVYRUNfT1BfIEZUX1BvcyAgZHgsCisgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgZHkgKQorICB7CisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcKKyAgICBGVF9BU1NFUlQoICFDVVIuZmFjZS0+dW5wYXRlbnRlZF9oaW50aW5nICk7CisjZW5kaWYKKworICAgIHJldHVybiBUVF9Eb3RGaXgxNCggKEZUX1VJbnQzMilkeCwgKEZUX1VJbnQzMilkeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENVUi5HUy5wcm9qVmVjdG9yLngsCisgICAgICAgICAgICAgICAgICAgICAgICBDVVIuR1MucHJvalZlY3Rvci55ICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIER1YWxfUHJvamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIENvbXB1dGVzIHRoZSBwcm9qZWN0aW9uIG9mIHRoZSB2ZWN0b3IgZ2l2ZW4gYnkgKHYyLXYxKSBhbG9uZyB0aGUgICAqLworICAvKiAgICBjdXJyZW50IGR1YWwgdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB2MSA6OiBGaXJzdCBpbnB1dCB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdjIgOjogU2Vjb25kIGlucHV0IHZlY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIGRpc3RhbmNlIGluIEYyNmRvdDYgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgRlRfRjI2RG90NgorICBEdWFsX1Byb2plY3QoIEVYRUNfT1BfIEZUX1BvcyAgZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUG9zICBkeSApCisgIHsKKyAgICByZXR1cm4gVFRfRG90Rml4MTQoIChGVF9VSW50MzIpZHgsIChGVF9VSW50MzIpZHksCisgICAgICAgICAgICAgICAgICAgICAgICBDVVIuR1MuZHVhbFZlY3Rvci54LAorICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLkdTLmR1YWxWZWN0b3IueSApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQcm9qZWN0X3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDb21wdXRlcyB0aGUgcHJvamVjdGlvbiBvZiB0aGUgdmVjdG9yIGdpdmVuIGJ5ICh2Mi12MSkgYWxvbmcgdGhlICAgKi8KKyAgLyogICAgaG9yaXpvbnRhbCBheGlzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdjEgOjogRmlyc3QgaW5wdXQgdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHYyIDo6IFNlY29uZCBpbnB1dCB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBkaXN0YW5jZSBpbiBGMjZkb3Q2IGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0YyNkRvdDYKKyAgUHJvamVjdF94KCBFWEVDX09QXyBGVF9Qb3MgIGR4LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgZHkgKQorICB7CisgICAgRlRfVU5VU0VEX0VYRUM7CisgICAgRlRfVU5VU0VEKCBkeSApOworCisgICAgcmV0dXJuIGR4OworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBQcm9qZWN0X3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDb21wdXRlcyB0aGUgcHJvamVjdGlvbiBvZiB0aGUgdmVjdG9yIGdpdmVuIGJ5ICh2Mi12MSkgYWxvbmcgdGhlICAgKi8KKyAgLyogICAgdmVydGljYWwgYXhpcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdjEgOjogRmlyc3QgaW5wdXQgdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHYyIDo6IFNlY29uZCBpbnB1dCB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBkaXN0YW5jZSBpbiBGMjZkb3Q2IGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIEZUX0YyNkRvdDYKKyAgUHJvamVjdF95KCBFWEVDX09QXyBGVF9Qb3MgIGR4LAorICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyAgZHkgKQorICB7CisgICAgRlRfVU5VU0VEX0VYRUM7CisgICAgRlRfVU5VU0VEKCBkeCApOworCisgICAgcmV0dXJuIGR5OworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDb21wdXRlX0Z1bmNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBDb21wdXRlcyB0aGUgcHJvamVjdGlvbiBhbmQgbW92ZW1lbnQgZnVuY3Rpb24gcG9pbnRlcnMgYWNjb3JkaW5nICAgKi8KKyAgLyogICAgdG8gdGhlIGN1cnJlbnQgZ3JhcGhpY3Mgc3RhdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBDb21wdXRlX0Z1bmNzKCBFWEVDX09QICkKKyAgeworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCisgICAgaWYgKCBDVVIuZmFjZS0+dW5wYXRlbnRlZF9oaW50aW5nICkKKyAgICB7CisgICAgICAvKiBJZiBib3RoIHZlY3RvcnMgcG9pbnQgcmlnaHR3YXJkcyBhbG9uZyB0aGUgeCBheGlzLCBzZXQgICAgICAgICAgICAgKi8KKyAgICAgIC8qIGBib3RoLXgtYXhpcycgdHJ1ZSwgb3RoZXJ3aXNlIHNldCBpdCBmYWxzZS4gIFRoZSB4IHZhbHVlcyBvbmx5ICAgICAqLworICAgICAgLyogbmVlZCBiZSB0ZXN0ZWQgYmVjYXVzZSB0aGUgdmVjdG9yIGhhcyBiZWVuIG5vcm1hbGlzZWQgdG8gYSB1bml0ICAgICovCisgICAgICAvKiB2ZWN0b3Igb2YgbGVuZ3RoIDB4NDAwMCA9IHVuaXR5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIENVUi5HUy5ib3RoX3hfYXhpcyA9IChGVF9Cb29sKSggQ1VSLkdTLnByb2pWZWN0b3IueCA9PSAweDQwMDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueCA9PSAweDQwMDAgKTsKKworICAgICAgLyogVGhyb3cgYXdheSBwcm9qZWN0aW9uIGFuZCBmcmVlZG9tIHZlY3RvciBpbmZvcm1hdGlvbiAqLworICAgICAgLyogYmVjYXVzZSB0aGUgcGF0ZW50cyBkb24ndCBhbGxvdyB0aGVtIHRvIGJlIHN0b3JlZC4gICAqLworICAgICAgLyogVGhlIHJlbGV2YW50IFVTIFBhdGVudHMgYXJlIDUxNTU4MDUgYW5kIDUzMjU0NzkuICAgICAqLworICAgICAgQ1VSLkdTLnByb2pWZWN0b3IueCA9IDA7CisgICAgICBDVVIuR1MucHJvalZlY3Rvci55ID0gMDsKKyAgICAgIENVUi5HUy5mcmVlVmVjdG9yLnggPSAwOworICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueSA9IDA7CisKKyAgICAgIGlmICggQ1VSLkdTLmJvdGhfeF9heGlzICkKKyAgICAgIHsKKyAgICAgICAgQ1VSLmZ1bmNfcHJvamVjdCAgID0gUHJvamVjdF94OworICAgICAgICBDVVIuZnVuY19tb3ZlICAgICAgPSBEaXJlY3RfTW92ZV9YOworICAgICAgICBDVVIuZnVuY19tb3ZlX29yaWcgPSBEaXJlY3RfTW92ZV9PcmlnX1g7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIENVUi5mdW5jX3Byb2plY3QgICA9IFByb2plY3RfeTsKKyAgICAgICAgQ1VSLmZ1bmNfbW92ZSAgICAgID0gRGlyZWN0X01vdmVfWTsKKyAgICAgICAgQ1VSLmZ1bmNfbW92ZV9vcmlnID0gRGlyZWN0X01vdmVfT3JpZ19ZOworICAgICAgfQorCisgICAgICBpZiAoIENVUi5HUy5kdWFsVmVjdG9yLnggPT0gMHg0MDAwICkKKyAgICAgICAgQ1VSLmZ1bmNfZHVhbHByb2ogPSBQcm9qZWN0X3g7CisgICAgICBlbHNlIGlmICggQ1VSLkdTLmR1YWxWZWN0b3IueSA9PSAweDQwMDAgKQorICAgICAgICBDVVIuZnVuY19kdWFscHJvaiA9IFByb2plY3RfeTsKKyAgICAgIGVsc2UKKyAgICAgICAgQ1VSLmZ1bmNfZHVhbHByb2ogPSBEdWFsX1Byb2plY3Q7CisKKyAgICAgIC8qIEZvcmNlIHJlY2FsY3VsYXRpb24gb2YgY2FjaGVkIGFzcGVjdCByYXRpbyAqLworICAgICAgQ1VSLnR0X21ldHJpY3MucmF0aW8gPSAwOworCisgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HICovCisKKyAgICBpZiAoIENVUi5HUy5mcmVlVmVjdG9yLnggPT0gMHg0MDAwICkKKyAgICAgIENVUi5GX2RvdF9QID0gQ1VSLkdTLnByb2pWZWN0b3IueDsKKyAgICBlbHNlIGlmICggQ1VSLkdTLmZyZWVWZWN0b3IueSA9PSAweDQwMDAgKQorICAgICAgQ1VSLkZfZG90X1AgPSBDVVIuR1MucHJvalZlY3Rvci55OworICAgIGVsc2UKKyAgICAgIENVUi5GX2RvdF9QID0gKCAoRlRfTG9uZylDVVIuR1MucHJvalZlY3Rvci54ICogQ1VSLkdTLmZyZWVWZWN0b3IueCArCisgICAgICAgICAgICAgICAgICAgICAgKEZUX0xvbmcpQ1VSLkdTLnByb2pWZWN0b3IueSAqIENVUi5HUy5mcmVlVmVjdG9yLnkgKSA+PgorICAgICAgICAgICAgICAgICAgICAxNDsKKworICAgIGlmICggQ1VSLkdTLnByb2pWZWN0b3IueCA9PSAweDQwMDAgKQorICAgICAgQ1VSLmZ1bmNfcHJvamVjdCA9IChUVF9Qcm9qZWN0X0Z1bmMpUHJvamVjdF94OworICAgIGVsc2UgaWYgKCBDVVIuR1MucHJvalZlY3Rvci55ID09IDB4NDAwMCApCisgICAgICBDVVIuZnVuY19wcm9qZWN0ID0gKFRUX1Byb2plY3RfRnVuYylQcm9qZWN0X3k7CisgICAgZWxzZQorICAgICAgQ1VSLmZ1bmNfcHJvamVjdCA9IChUVF9Qcm9qZWN0X0Z1bmMpUHJvamVjdDsKKworICAgIGlmICggQ1VSLkdTLmR1YWxWZWN0b3IueCA9PSAweDQwMDAgKQorICAgICAgQ1VSLmZ1bmNfZHVhbHByb2ogPSAoVFRfUHJvamVjdF9GdW5jKVByb2plY3RfeDsKKyAgICBlbHNlIGlmICggQ1VSLkdTLmR1YWxWZWN0b3IueSA9PSAweDQwMDAgKQorICAgICAgQ1VSLmZ1bmNfZHVhbHByb2ogPSAoVFRfUHJvamVjdF9GdW5jKVByb2plY3RfeTsKKyAgICBlbHNlCisgICAgICBDVVIuZnVuY19kdWFscHJvaiA9IChUVF9Qcm9qZWN0X0Z1bmMpRHVhbF9Qcm9qZWN0OworCisgICAgQ1VSLmZ1bmNfbW92ZSAgICAgID0gKFRUX01vdmVfRnVuYylEaXJlY3RfTW92ZTsKKyAgICBDVVIuZnVuY19tb3ZlX29yaWcgPSAoVFRfTW92ZV9GdW5jKURpcmVjdF9Nb3ZlX09yaWc7CisKKyAgICBpZiAoIENVUi5GX2RvdF9QID09IDB4NDAwMEwgKQorICAgIHsKKyAgICAgIGlmICggQ1VSLkdTLmZyZWVWZWN0b3IueCA9PSAweDQwMDAgKQorICAgICAgeworICAgICAgICBDVVIuZnVuY19tb3ZlICAgICAgPSAoVFRfTW92ZV9GdW5jKURpcmVjdF9Nb3ZlX1g7CisgICAgICAgIENVUi5mdW5jX21vdmVfb3JpZyA9IChUVF9Nb3ZlX0Z1bmMpRGlyZWN0X01vdmVfT3JpZ19YOworICAgICAgfQorICAgICAgZWxzZSBpZiAoIENVUi5HUy5mcmVlVmVjdG9yLnkgPT0gMHg0MDAwICkKKyAgICAgIHsKKyAgICAgICAgQ1VSLmZ1bmNfbW92ZSAgICAgID0gKFRUX01vdmVfRnVuYylEaXJlY3RfTW92ZV9ZOworICAgICAgICBDVVIuZnVuY19tb3ZlX29yaWcgPSAoVFRfTW92ZV9GdW5jKURpcmVjdF9Nb3ZlX09yaWdfWTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBhdCBzbWFsbCBzaXplcywgRl9kb3RfUCBjYW4gYmVjb21lIHRvbyBzbWFsbCwgcmVzdWx0aW5nICAgKi8KKyAgICAvKiBpbiBvdmVyZmxvd3MgYW5kIGBzcGlrZXMnIGluIGEgbnVtYmVyIG9mIGdseXBocyBsaWtlIGB3Jy4gKi8KKworICAgIGlmICggRlRfQUJTKCBDVVIuRl9kb3RfUCApIDwgMHg0MDBMICkKKyAgICAgIENVUi5GX2RvdF9QID0gMHg0MDAwTDsKKworICAgIC8qIERpc2FibGUgY2FjaGVkIGFzcGVjdCByYXRpbyAqLworICAgIENVUi50dF9tZXRyaWNzLnJhdGlvID0gMDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm9ybWFsaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgTm9ybXMgYSB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVnggOjogVGhlIGhvcml6b250YWwgaW5wdXQgdmVjdG9yIGNvb3JkaW5hdGUuICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFZ5IDo6IFRoZSB2ZXJ0aWNhbCBpbnB1dCB2ZWN0b3IgY29vcmRpbmF0ZS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFIgIDo6IFRoZSBub3JtZWQgdW5pdCB2ZWN0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJldHVybnMgRkFJTFVSRSBpZiBhIHZlY3RvciBwYXJhbWV0ZXIgaXMgemVyby4gICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluIGNhc2UgVnggYW5kIFZ5IGFyZSBib3RoIHplcm8sIE5vcm1hbGl6ZSgpIHJldHVybnMgU1VDQ0VTUywgYW5kICAqLworICAvKiAgICBSIGlzIHVuZGVmaW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9Cb29sCisgIE5vcm1hbGl6ZSggRVhFQ19PUF8gRlRfRjI2RG90NiAgICAgIFZ4LAorICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgICAgICBWeSwKKyAgICAgICAgICAgICAgICAgICAgICBGVF9Vbml0VmVjdG9yKiAgUiApCisgIHsKKyAgICBGVF9GMjZEb3Q2ICBXOworCisgICAgRlRfVU5VU0VEX0VYRUM7CisKKworICAgIGlmICggRlRfQUJTKCBWeCApIDwgMHg0MDAwTCAmJiBGVF9BQlMoIFZ5ICkgPCAweDQwMDBMICkKKyAgICB7CisgICAgICBpZiAoIFZ4ID09IDAgJiYgVnkgPT0gMCApCisgICAgICB7CisgICAgICAgIC8qIFhYWDogVU5ET0NVTUVOVEVEISBJdCBzZWVtcyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHRyeSAgICovCisgICAgICAgIC8qICAgICAgdG8gbm9ybWFsaXplIHRoZSB2ZWN0b3IgKDAsMCkuICBSZXR1cm4gaW1tZWRpYXRlbHkuICovCisgICAgICAgIHJldHVybiBTVUNDRVNTOworICAgICAgfQorCisgICAgICBWeCAqPSAweDQwMDA7CisgICAgICBWeSAqPSAweDQwMDA7CisgICAgfQorCisgICAgVyA9IEZUX0h5cG90KCBWeCwgVnkgKTsKKworICAgIFItPnggPSAoRlRfRjJEb3QxNClUVF9EaXZGaXgxNCggVngsIFcgKTsKKyAgICBSLT55ID0gKEZUX0YyRG90MTQpVFRfRGl2Rml4MTQoIFZ5LCBXICk7CisKKyAgICByZXR1cm4gU1VDQ0VTUzsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBIZXJlIHdlIHN0YXJ0IHdpdGggdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSB2YXJpb3VzIG9wY29kZXMuICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgc3RhdGljIEZUX0Jvb2wKKyAgSW5zX1N4VlRMKCBFWEVDX09QXyBGVF9VU2hvcnQgICAgICAgYUlkeDEsCisgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0ICAgICAgIGFJZHgyLAorICAgICAgICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgICBhT3BjLAorICAgICAgICAgICAgICAgICAgICAgIEZUX1VuaXRWZWN0b3IqICBWZWMgKQorICB7CisgICAgRlRfTG9uZyAgICAgQSwgQiwgQzsKKyAgICBGVF9WZWN0b3IqICBwMTsKKyAgICBGVF9WZWN0b3IqICBwMjsKKworCisgICAgaWYgKCBCT1VORFMoIGFJZHgxLCBDVVIuenAyLm5fcG9pbnRzICkgfHwKKyAgICAgICAgIEJPVU5EUyggYUlkeDIsIENVUi56cDEubl9wb2ludHMgKSApCisgICAgeworICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgICAgcmV0dXJuIEZBSUxVUkU7CisgICAgfQorCisgICAgcDEgPSBDVVIuenAxLmN1ciArIGFJZHgyOworICAgIHAyID0gQ1VSLnpwMi5jdXIgKyBhSWR4MTsKKworICAgIEEgPSBwMS0+eCAtIHAyLT54OworICAgIEIgPSBwMS0+eSAtIHAyLT55OworCisgICAgLyogSWYgcDEgPT0gcDIsIFNQVlRMIGFuZCBTRlZUTCBiZWhhdmUgdGhlIHNhbWUgYXMgKi8KKyAgICAvKiBTUFZUQ0FbWF0gYW5kIFNGVlRDQVtYXSwgcmVzcGVjdGl2ZWx5LiAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogQ29uZmlybWVkIGJ5IEdyZWcgSGl0Y2hjb2NrLiAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIGlmICggQSA9PSAwICYmIEIgPT0gMCApCisgICAgeworICAgICAgQSAgICA9IDB4NDAwMDsKKyAgICAgIGFPcGMgPSAwOworICAgIH0KKworICAgIGlmICggKCBhT3BjICYgMSApICE9IDAgKQorICAgIHsKKyAgICAgIEMgPSAgQjsgICAvKiBjb3VudGVyIGNsb2Nrd2lzZSByb3RhdGlvbiAqLworICAgICAgQiA9ICBBOworICAgICAgQSA9IC1DOworICAgIH0KKworICAgIE5PUk1hbGl6ZSggQSwgQiwgVmVjICk7CisKKyAgICByZXR1cm4gU1VDQ0VTUzsKKyAgfQorCisKKyAgLyogV2hlbiBub3QgdXNpbmcgdGhlIGJpZyBzd2l0Y2ggc3RhdGVtZW50cywgdGhlIGludGVycHJldGVyIHVzZXMgYSAqLworICAvKiBjYWxsIHRhYmxlIGRlZmluZWQgbGF0ZXIgYmVsb3cgaW4gdGhpcyBzb3VyY2UuICBFYWNoIG9wY29kZSBtdXN0ICovCisgIC8qIHRodXMgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24sIGV2ZW4gdHJpdmlhbCBvbmVzLiAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGV5IGFyZSBhbGwgZGVmaW5lZCB0aGVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyNkZWZpbmUgRE9fU1ZUQ0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRlRfU2hvcnQgIEEsIEI7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQSA9IChGVF9TaG9ydCkoIENVUi5vcGNvZGUgJiAxICkgPDwgMTQ7IFwKKyAgICBCID0gQSBeIChGVF9TaG9ydCkweDQwMDA7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLmZyZWVWZWN0b3IueCA9IEE7ICAgICAgICAgICAgICAgIFwKKyAgICBDVVIuR1MucHJvalZlY3Rvci54ID0gQTsgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5kdWFsVmVjdG9yLnggPSBBOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVIuR1MuZnJlZVZlY3Rvci55ID0gQjsgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5wcm9qVmVjdG9yLnkgPSBCOyAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLmR1YWxWZWN0b3IueSA9IEI7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTVBVVEVfRnVuY3MoKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworCisjZGVmaW5lIERPX1NQVlRDQSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEZUX1Nob3J0ICBBLCBCOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEEgPSAoRlRfU2hvcnQpKCBDVVIub3Bjb2RlICYgMSApIDw8IDE0OyBcCisgICAgQiA9IEEgXiAoRlRfU2hvcnQpMHg0MDAwOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5wcm9qVmVjdG9yLnggPSBBOyAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLmR1YWxWZWN0b3IueCA9IEE7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5wcm9qVmVjdG9yLnkgPSBCOyAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLmR1YWxWZWN0b3IueSA9IEI7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdVRVNTX1ZFQ1RPUiggZnJlZVZlY3RvciApOyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT01QVVRFX0Z1bmNzKCk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKworI2RlZmluZSBET19TRlZUQ0EgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9TaG9ydCAgQSwgQjsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBID0gKEZUX1Nob3J0KSggQ1VSLm9wY29kZSAmIDEgKSA8PCAxNDsgXAorICAgIEIgPSBBIF4gKEZUX1Nob3J0KTB4NDAwMDsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVIuR1MuZnJlZVZlY3Rvci54ID0gQTsgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5mcmVlVmVjdG9yLnkgPSBCOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHVUVTU19WRUNUT1IoIHByb2pWZWN0b3IgKTsgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09NUFVURV9GdW5jcygpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisKKyNkZWZpbmUgRE9fU1BWVEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIElOU19TeFZUTCggKEZUX1VTaG9ydClhcmdzWzFdLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgKEZUX1VTaG9ydClhcmdzWzBdLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgQ1VSLm9wY29kZSwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgJkNVUi5HUy5wcm9qVmVjdG9yICkgPT0gU1VDQ0VTUyApIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIENVUi5HUy5kdWFsVmVjdG9yID0gQ1VSLkdTLnByb2pWZWN0b3I7ICAgICAgICAgIFwKKyAgICAgIEdVRVNTX1ZFQ1RPUiggZnJlZVZlY3RvciApOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIENPTVBVVEVfRnVuY3MoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKworI2RlZmluZSBET19TRlZUTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggSU5TX1N4VlRMKCAoRlRfVVNob3J0KWFyZ3NbMV0sICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAoRlRfVVNob3J0KWFyZ3NbMF0sICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBDVVIub3Bjb2RlLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAmQ1VSLkdTLmZyZWVWZWN0b3IgKSA9PSBTVUNDRVNTICkgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgR1VFU1NfVkVDVE9SKCBwcm9qVmVjdG9yICk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgQ09NUFVURV9GdW5jcygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworCisjZGVmaW5lIERPX1NGVlRQViAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdVRVNTX1ZFQ1RPUiggcHJvalZlY3RvciApOyAgICAgICAgICAgIFwKKyAgICBDVVIuR1MuZnJlZVZlY3RvciA9IENVUi5HUy5wcm9qVmVjdG9yOyBcCisgICAgQ09NUFVURV9GdW5jcygpOworCisKKyNkZWZpbmUgRE9fU1BWRlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9TaG9ydCAgUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Mb25nICAgWCwgWTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBPbmx5IHVzZSBsb3cgMTZiaXRzLCB0aGVuIHNpZ24gZXh0ZW5kICovIFwKKyAgICBTID0gKEZUX1Nob3J0KWFyZ3NbMV07ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBZID0gKEZUX0xvbmcpUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBTID0gKEZUX1Nob3J0KWFyZ3NbMF07ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBYID0gKEZUX0xvbmcpUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBOT1JNYWxpemUoIFgsIFksICZDVVIuR1MucHJvalZlY3RvciApOyAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVIuR1MuZHVhbFZlY3RvciA9IENVUi5HUy5wcm9qVmVjdG9yOyAgICAgIFwKKyAgICBHVUVTU19WRUNUT1IoIGZyZWVWZWN0b3IgKTsgICAgICAgICAgICAgICAgIFwKKyAgICBDT01QVVRFX0Z1bmNzKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisKKyNkZWZpbmUgRE9fU0ZWRlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9TaG9ydCAgUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Mb25nICAgWCwgWTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBPbmx5IHVzZSBsb3cgMTZiaXRzLCB0aGVuIHNpZ24gZXh0ZW5kICovIFwKKyAgICBTID0gKEZUX1Nob3J0KWFyZ3NbMV07ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBZID0gKEZUX0xvbmcpUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBTID0gKEZUX1Nob3J0KWFyZ3NbMF07ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBYID0gUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBOT1JNYWxpemUoIFgsIFksICZDVVIuR1MuZnJlZVZlY3RvciApOyAgICAgIFwKKyAgICBHVUVTU19WRUNUT1IoIHByb2pWZWN0b3IgKTsgICAgICAgICAgICAgICAgIFwKKyAgICBDT01QVVRFX0Z1bmNzKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORworI2RlZmluZSBET19HUFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIENVUi5mYWNlLT51bnBhdGVudGVkX2hpbnRpbmcgKSAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgYXJnc1swXSA9IENVUi5HUy5ib3RoX3hfYXhpcyA/IDB4NDAwMCA6IDA7IFwKKyAgICAgIGFyZ3NbMV0gPSBDVVIuR1MuYm90aF94X2F4aXMgPyAwIDogMHg0MDAwOyBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBhcmdzWzBdID0gQ1VSLkdTLnByb2pWZWN0b3IueDsgICAgICAgICAgICAgXAorICAgICAgYXJnc1sxXSA9IENVUi5HUy5wcm9qVmVjdG9yLnk7ICAgICAgICAgICAgIFwKKyAgICB9CisjZWxzZQorI2RlZmluZSBET19HUFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhcmdzWzBdID0gQ1VSLkdTLnByb2pWZWN0b3IueDsgICAgICAgICAgICAgICBcCisgICAgYXJnc1sxXSA9IENVUi5HUy5wcm9qVmVjdG9yLnk7CisjZW5kaWYKKworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcKKyNkZWZpbmUgRE9fR0ZWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBDVVIuZmFjZS0+dW5wYXRlbnRlZF9oaW50aW5nICkgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGFyZ3NbMF0gPSBDVVIuR1MuYm90aF94X2F4aXMgPyAweDQwMDAgOiAwOyBcCisgICAgICBhcmdzWzFdID0gQ1VSLkdTLmJvdGhfeF9heGlzID8gMCA6IDB4NDAwMDsgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgYXJnc1swXSA9IENVUi5HUy5mcmVlVmVjdG9yLng7ICAgICAgICAgICAgIFwKKyAgICAgIGFyZ3NbMV0gPSBDVVIuR1MuZnJlZVZlY3Rvci55OyAgICAgICAgICAgICBcCisgICAgfQorI2Vsc2UKKyNkZWZpbmUgRE9fR0ZWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXJnc1swXSA9IENVUi5HUy5mcmVlVmVjdG9yLng7ICAgICAgICAgICAgICAgXAorICAgIGFyZ3NbMV0gPSBDVVIuR1MuZnJlZVZlY3Rvci55OworI2VuZGlmCisKKworI2RlZmluZSBET19TUlAwICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVIuR1MucnAwID0gKEZUX1VTaG9ydClhcmdzWzBdOworCisKKyNkZWZpbmUgRE9fU1JQMSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLnJwMSA9IChGVF9VU2hvcnQpYXJnc1swXTsKKworCisjZGVmaW5lIERPX1NSUDIgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5ycDIgPSAoRlRfVVNob3J0KWFyZ3NbMF07CisKKworI2RlZmluZSBET19SVEhHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLnJvdW5kX3N0YXRlID0gVFRfUm91bmRfVG9fSGFsZl9HcmlkOyAgICAgICAgIFwKKyAgICBDVVIuZnVuY19yb3VuZCA9IChUVF9Sb3VuZF9GdW5jKVJvdW5kX1RvX0hhbGZfR3JpZDsKKworCisjZGVmaW5lIERPX1JURyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLnJvdW5kX3N0YXRlID0gVFRfUm91bmRfVG9fR3JpZDsgICAgICAgICBcCisgICAgQ1VSLmZ1bmNfcm91bmQgPSAoVFRfUm91bmRfRnVuYylSb3VuZF9Ub19HcmlkOworCisKKyNkZWZpbmUgRE9fUlRERyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLnJvdW5kX3N0YXRlID0gVFRfUm91bmRfVG9fRG91YmxlX0dyaWQ7ICAgICAgICAgXAorICAgIENVUi5mdW5jX3JvdW5kID0gKFRUX1JvdW5kX0Z1bmMpUm91bmRfVG9fRG91YmxlX0dyaWQ7CisKKworI2RlZmluZSBET19SVVRHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5yb3VuZF9zdGF0ZSA9IFRUX1JvdW5kX1VwX1RvX0dyaWQ7ICAgICAgICAgXAorICAgIENVUi5mdW5jX3JvdW5kID0gKFRUX1JvdW5kX0Z1bmMpUm91bmRfVXBfVG9fR3JpZDsKKworCisjZGVmaW5lIERPX1JEVEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVIuR1Mucm91bmRfc3RhdGUgPSBUVF9Sb3VuZF9Eb3duX1RvX0dyaWQ7ICAgICAgICAgXAorICAgIENVUi5mdW5jX3JvdW5kID0gKFRUX1JvdW5kX0Z1bmMpUm91bmRfRG93bl9Ub19HcmlkOworCisKKyNkZWZpbmUgRE9fUk9GRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVIuR1Mucm91bmRfc3RhdGUgPSBUVF9Sb3VuZF9PZmY7ICAgICAgICAgIFwKKyAgICBDVVIuZnVuY19yb3VuZCA9IChUVF9Sb3VuZF9GdW5jKVJvdW5kX05vbmU7CisKKworI2RlZmluZSBET19TUk9VTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBTRVRfU3VwZXJSb3VuZCggMHg0MDAwLCBhcmdzWzBdICk7ICAgICAgICAgICBcCisgICAgQ1VSLkdTLnJvdW5kX3N0YXRlID0gVFRfUm91bmRfU3VwZXI7ICAgICAgICAgXAorICAgIENVUi5mdW5jX3JvdW5kID0gKFRUX1JvdW5kX0Z1bmMpUm91bmRfU3VwZXI7CisKKworI2RlZmluZSBET19TNDVST1VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBTRVRfU3VwZXJSb3VuZCggMHgyRDQxLCBhcmdzWzBdICk7ICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLnJvdW5kX3N0YXRlID0gVFRfUm91bmRfU3VwZXJfNDU7ICAgICAgICAgXAorICAgIENVUi5mdW5jX3JvdW5kID0gKFRUX1JvdW5kX0Z1bmMpUm91bmRfU3VwZXJfNDU7CisKKworI2RlZmluZSBET19TTE9PUCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBhcmdzWzBdIDwgMCApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBCYWRfQXJndW1lbnQgKTsgXAorICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBDVVIuR1MubG9vcCA9IGFyZ3NbMF07CisKKworI2RlZmluZSBET19TTUQgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5taW5pbXVtX2Rpc3RhbmNlID0gYXJnc1swXTsKKworCisjZGVmaW5lIERPX1NDVlRDSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLmNvbnRyb2xfdmFsdWVfY3V0aW4gPSAoRlRfRjI2RG90NilhcmdzWzBdOworCisKKyNkZWZpbmUgRE9fU1NXQ0kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5zaW5nbGVfd2lkdGhfY3V0aW4gPSAoRlRfRjI2RG90NilhcmdzWzBdOworCisKKyNkZWZpbmUgRE9fU1NXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLnNpbmdsZV93aWR0aF92YWx1ZSA9IEZUX011bEZpeCggYXJnc1swXSwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi50dF9tZXRyaWNzLnNjYWxlICk7CisKKworI2RlZmluZSBET19GTElQT04gICAgICAgICAgICBcCisgICAgQ1VSLkdTLmF1dG9fZmxpcCA9IFRSVUU7CisKKworI2RlZmluZSBET19GTElQT0ZGICAgICAgICAgICAgXAorICAgIENVUi5HUy5hdXRvX2ZsaXAgPSBGQUxTRTsKKworCisjZGVmaW5lIERPX1NEQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUi5HUy5kZWx0YV9iYXNlID0gKEZUX1Nob3J0KWFyZ3NbMF07CisKKworI2RlZmluZSBET19TRFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSLkdTLmRlbHRhX3NoaWZ0ID0gKEZUX1Nob3J0KWFyZ3NbMF07CisKKworI2RlZmluZSBET19NRCAgLyogbm90aGluZyAqLworCisKKyNkZWZpbmUgRE9fTVBQRU0gICAgICAgICAgICAgIFwKKyAgICBhcmdzWzBdID0gQ1VSUkVOVF9QcGVtKCk7CisKKworICAvKiBOb3RlOiBUaGUgcG9pbnRTaXplIHNob3VsZCBiZSBpcnJlbGV2YW50IGluIGEgZ2l2ZW4gZm9udCBwcm9ncmFtOyAqLworICAvKiAgICAgICB3ZSB0aHVzIGRlY2lkZSB0byByZXR1cm4gb25seSB0aGUgcHBlbS4gICAgICAgICAgICAgICAgICAgICAqLworI2lmIDAKKworI2RlZmluZSBET19NUFMgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhcmdzWzBdID0gQ1VSLm1ldHJpY3MucG9pbnRTaXplOworCisjZWxzZQorCisjZGVmaW5lIERPX01QUyAgICAgICAgICAgICAgICBcCisgICAgYXJnc1swXSA9IENVUlJFTlRfUHBlbSgpOworCisjZW5kaWYgLyogMCAqLworCisKKyNkZWZpbmUgRE9fRFVQICAgICAgICAgXAorICAgIGFyZ3NbMV0gPSBhcmdzWzBdOworCisKKyNkZWZpbmUgRE9fQ0xFQVIgICAgIFwKKyAgICBDVVIubmV3X3RvcCA9IDA7CisKKworI2RlZmluZSBET19TV0FQICAgICAgICBcCisgIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Mb25nICBMOyAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBMICAgICAgID0gYXJnc1swXTsgXAorICAgIGFyZ3NbMF0gPSBhcmdzWzFdOyBcCisgICAgYXJnc1sxXSA9IEw7ICAgICAgIFwKKyAgfQorCisKKyNkZWZpbmUgRE9fREVQVEggICAgICAgXAorICAgIGFyZ3NbMF0gPSBDVVIudG9wOworCisKKyNkZWZpbmUgRE9fQ0lOREVYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBGVF9Mb25nICBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBMID0gYXJnc1swXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIEwgPD0gMCB8fCBMID4gQ1VSLmFyZ3MgKSAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7IFwKKyAgICAgIGFyZ3NbMF0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGFyZ3NbMF0gPSBDVVIuc3RhY2tbQ1VSLmFyZ3MgLSBMXTsgICAgICAgICAgIFwKKyAgfQorCisKKyNkZWZpbmUgRE9fSlJPVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGFyZ3NbMV0gIT0gMCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmICggYXJnc1swXSA9PSAwICYmIENVUi5hcmdzID09IDAgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEJhZF9Bcmd1bWVudCApOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIENVUi5JUCArPSBhcmdzWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmICggQ1VSLklQIDwgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgKCBDVVIuY2FsbFRvcCA+IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAgIFwKKyAgICAgICAgICAgICBDVVIuSVAgPiBDVVIuY2FsbFN0YWNrW0NVUi5jYWxsVG9wIC0gMV0uQ3VyX0VuZCApICkgIFwKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEJhZF9Bcmd1bWVudCApOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIENVUi5zdGVwX2lucyA9IEZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKworI2RlZmluZSBET19KTVBSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGFyZ3NbMF0gPT0gMCAmJiBDVVIuYXJncyA9PSAwICkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggQmFkX0FyZ3VtZW50ICk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUi5JUCArPSBhcmdzWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIENVUi5JUCA8IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBcCisgICAgICAgICAoIENVUi5jYWxsVG9wID4gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICAgXAorICAgICAgICAgICBDVVIuSVAgPiBDVVIuY2FsbFN0YWNrW0NVUi5jYWxsVG9wIC0gMV0uQ3VyX0VuZCApICkgIFwKKyAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBCYWRfQXJndW1lbnQgKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSLnN0ZXBfaW5zID0gRkFMU0U7CisKKworI2RlZmluZSBET19KUk9GICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggYXJnc1sxXSA9PSAwICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKCBhcmdzWzBdID09IDAgJiYgQ1VSLmFyZ3MgPT0gMCApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggQmFkX0FyZ3VtZW50ICk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgQ1VSLklQICs9IGFyZ3NbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKCBDVVIuSVAgPCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAorICAgICAgICAgICAoIENVUi5jYWxsVG9wID4gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICAgXAorICAgICAgICAgICAgIENVUi5JUCA+IENVUi5jYWxsU3RhY2tbQ1VSLmNhbGxUb3AgLSAxXS5DdXJfRW5kICkgKSAgXAorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggQmFkX0FyZ3VtZW50ICk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgQ1VSLnN0ZXBfaW5zID0gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworCisjZGVmaW5lIERPX0xUICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFyZ3NbMF0gPSAoIGFyZ3NbMF0gPCBhcmdzWzFdICk7CisKKworI2RlZmluZSBET19MVEVRICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXJnc1swXSA9ICggYXJnc1swXSA8PSBhcmdzWzFdICk7CisKKworI2RlZmluZSBET19HVCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhcmdzWzBdID0gKCBhcmdzWzBdID4gYXJnc1sxXSApOworCisKKyNkZWZpbmUgRE9fR1RFUSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFyZ3NbMF0gPSAoIGFyZ3NbMF0gPj0gYXJnc1sxXSApOworCisKKyNkZWZpbmUgRE9fRVEgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFyZ3NbMF0gPSAoIGFyZ3NbMF0gPT0gYXJnc1sxXSApOworCisKKyNkZWZpbmUgRE9fTkVRICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFyZ3NbMF0gPSAoIGFyZ3NbMF0gIT0gYXJnc1sxXSApOworCisKKyNkZWZpbmUgRE9fT0REICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXJnc1swXSA9ICggKCBDVVJfRnVuY19yb3VuZCggYXJnc1swXSwgMCApICYgMTI3ICkgPT0gNjQgKTsKKworCisjZGVmaW5lIERPX0VWRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXJnc1swXSA9ICggKCBDVVJfRnVuY19yb3VuZCggYXJnc1swXSwgMCApICYgMTI3ICkgPT0gMCApOworCisKKyNkZWZpbmUgRE9fQU5EICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFyZ3NbMF0gPSAoIGFyZ3NbMF0gJiYgYXJnc1sxXSApOworCisKKyNkZWZpbmUgRE9fT1IgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFyZ3NbMF0gPSAoIGFyZ3NbMF0gfHwgYXJnc1sxXSApOworCisKKyNkZWZpbmUgRE9fTk9UICAgICAgICAgIFwKKyAgICBhcmdzWzBdID0gIWFyZ3NbMF07CisKKworI2RlZmluZSBET19BREQgICAgICAgICAgXAorICAgIGFyZ3NbMF0gKz0gYXJnc1sxXTsKKworCisjZGVmaW5lIERPX1NVQiAgICAgICAgICBcCisgICAgYXJnc1swXSAtPSBhcmdzWzFdOworCisKKyNkZWZpbmUgRE9fRElWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCBhcmdzWzFdID09IDAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIERpdmlkZV9CeV9aZXJvICk7ICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBhcmdzWzBdID0gRlRfTXVsRGl2X05vX1JvdW5kKCBhcmdzWzBdLCA2NEwsIGFyZ3NbMV0gKTsKKworCisjZGVmaW5lIERPX01VTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhcmdzWzBdID0gRlRfTXVsRGl2KCBhcmdzWzBdLCBhcmdzWzFdLCA2NEwgKTsKKworCisjZGVmaW5lIERPX0FCUyAgICAgICAgICAgICAgICAgICBcCisgICAgYXJnc1swXSA9IEZUX0FCUyggYXJnc1swXSApOworCisKKyNkZWZpbmUgRE9fTkVHICAgICAgICAgIFwKKyAgICBhcmdzWzBdID0gLWFyZ3NbMF07CisKKworI2RlZmluZSBET19GTE9PUiAgICBcCisgICAgYXJnc1swXSA9IEZUX1BJWF9GTE9PUiggYXJnc1swXSApOworCisKKyNkZWZpbmUgRE9fQ0VJTElORyAgICAgICAgICAgICAgICAgICAgXAorICAgIGFyZ3NbMF0gPSBGVF9QSVhfQ0VJTCggYXJnc1swXSApOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisKKyNkZWZpbmUgRE9fUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBGVF9VTG9uZyAgSSA9IChGVF9VTG9uZylhcmdzWzBdOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBpZiAoIEJPVU5EU0woIEksIENVUi5zdG9yZVNpemUgKSApICAgICAgICAgICAgICAgICAgIFwKKyAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgQVJSQVlfQk9VTkRfRVJST1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBhcmdzWzBdID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIC8qIHN1YnBpeGVsIGhpbnRpbmcgLSBhdm9pZCBUeXBlbWFuIERzdHJva2UgYW5kICovIFwKKyAgICAgICAvKiBJU3Ryb2tlIGFuZCBWYWN1Zm9ybSByb3VuZHMgICAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFwKKyAgICAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBcCisgICAgICAgICAgICAoICggSSA9PSAyNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAgICAgXAorICAgICAgICAgICAgICAgICggQ1VSLmZhY2UtPnNwaF9mb3VuZF9mdW5jX2ZsYWdzICYgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICggU1BIX0ZERUZfU1BBQ0lOR18xIHwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIFNQSF9GREVGX1NQQUNJTkdfMiApICAgICAgICAgKSApIHx8ICAgXAorICAgICAgICAgICAgICAoIEkgPT0gMjIgICAgICAgICAgICAgICAgICAgICAgJiYgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoIENVUi5zcGhfaW5fZnVuY19mbGFncyAgICAmICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICBTUEhfRkRFRl9UWVBFTUFOX1NUUk9LRVMgKSApICAgICAgIHx8ICAgXAorICAgICAgICAgICAgICAoIEkgPT0gOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgICAgIFwKKyAgICAgICAgICAgICAgICAoIENVUi5mYWNlLT5zcGhfZm91bmRfZnVuY19mbGFncyAmICAgICAgICBcCisgICAgICAgICAgICAgICAgICBTUEhfRkRFRl9WQUNVRk9STV9ST1VORF8xICAgICAgKSAmJiAgICAgXAorICAgICAgICAgICAgICAgICAgQ1VSLml1cF9jYWxsZWQgICAgICAgICAgICAgICAgICAgKSApICkgIFwKKyAgICAgICAgIGFyZ3NbMF0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgYXJnc1swXSA9IENVUi5zdG9yYWdlW0ldOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICB9CisKKyNlbHNlIC8qICFUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworI2RlZmluZSBET19SUyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIEZUX1VMb25nICBJID0gKEZUX1VMb25nKWFyZ3NbMF07ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGlmICggQk9VTkRTTCggSSwgQ1VSLnN0b3JlU2l6ZSApICkgXAorICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkgICAgICBcCisgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgQVJSQVlfQk9VTkRfRVJST1I7ICAgICAgICAgICAgIFwKKyAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgYXJnc1swXSA9IDA7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIGFyZ3NbMF0gPSBDVVIuc3RvcmFnZVtJXTsgICAgICAgIFwKKyAgIH0KKworI2VuZGlmIC8qICFUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworCisjZGVmaW5lIERPX1dTICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgRlRfVUxvbmcgIEkgPSAoRlRfVUxvbmcpYXJnc1swXTsgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgaWYgKCBCT1VORFNMKCBJLCBDVVIuc3RvcmVTaXplICkgKSBcCisgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKSAgICAgIFwKKyAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBBUlJBWV9CT1VORF9FUlJPUjsgICAgICAgICAgICAgXAorICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIENVUi5zdG9yYWdlW0ldID0gYXJnc1sxXTsgICAgICAgIFwKKyAgIH0KKworCisjZGVmaW5lIERPX1JDVlQgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBGVF9VTG9uZyAgSSA9IChGVF9VTG9uZylhcmdzWzBdOyAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBpZiAoIEJPVU5EU0woIEksIENVUi5jdnRTaXplICkgKSAgICBcCisgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkgICAgICAgXAorICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBBUlJBWV9CT1VORF9FUlJPUjsgICAgICAgICAgICAgIFwKKyAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBhcmdzWzBdID0gMDsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgYXJnc1swXSA9IENVUl9GdW5jX3JlYWRfY3Z0KCBJICk7IFwKKyAgIH0KKworCisjZGVmaW5lIERPX1dDVlRQICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBGVF9VTG9uZyAgSSA9IChGVF9VTG9uZylhcmdzWzBdOyAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBpZiAoIEJPVU5EU0woIEksIENVUi5jdnRTaXplICkgKSAgICBcCisgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkgICAgICAgXAorICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBBUlJBWV9CT1VORF9FUlJPUjsgICAgICAgICAgICAgIFwKKyAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBDVVJfRnVuY193cml0ZV9jdnQoIEksIGFyZ3NbMV0gKTsgXAorICAgfQorCisKKyNkZWZpbmUgRE9fV0NWVEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBGVF9VTG9uZyAgSSA9IChGVF9VTG9uZylhcmdzWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBpZiAoIEJPVU5EU0woIEksIENVUi5jdnRTaXplICkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIEFSUkFZX0JPVU5EX0VSUk9SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgQ1VSLmN2dFtJXSA9IEZUX011bEZpeCggYXJnc1sxXSwgQ1VSLnR0X21ldHJpY3Muc2NhbGUgKTsgXAorICAgfQorCisKKyNkZWZpbmUgRE9fREVCVUcgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggRGVidWdfT3BDb2RlICk7CisKKworI2RlZmluZSBET19ST1VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhcmdzWzBdID0gQ1VSX0Z1bmNfcm91bmQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYXJnc1swXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIENVUi50dF9tZXRyaWNzLmNvbXBlbnNhdGlvbnNbQ1VSLm9wY29kZSAtIDB4NjhdICk7CisKKworI2RlZmluZSBET19OUk9VTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXJnc1swXSA9IFJPVU5EX05vbmUoIGFyZ3NbMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLnR0X21ldHJpY3MuY29tcGVuc2F0aW9uc1tDVVIub3Bjb2RlIC0gMHg2Q10gKTsKKworCisjZGVmaW5lIERPX01BWCAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGFyZ3NbMV0gPiBhcmdzWzBdICkgXAorICAgICAgYXJnc1swXSA9IGFyZ3NbMV07CisKKworI2RlZmluZSBET19NSU4gICAgICAgICAgICAgICBcCisgICAgaWYgKCBhcmdzWzFdIDwgYXJnc1swXSApIFwKKyAgICAgIGFyZ3NbMF0gPSBhcmdzWzFdOworCisKKyNpZm5kZWYgVFRfQ09ORklHX09QVElPTl9JTlRFUlBSRVRFUl9TV0lUQ0gKKworCisjdW5kZWYgIEFSUkFZX0JPVU5EX0VSUk9SCisjZGVmaW5lIEFSUkFZX0JPVU5EX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOyBcCisgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU1ZUQ0FbYV06ICAgICBTZXQgKEYgYW5kIFApIFZlY3RvcnMgdG8gQ29vcmRpbmF0ZSBBeGlzICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgwMC0weDAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TVlRDQSggSU5TX0FSRyApCisgIHsKKyAgICBET19TVlRDQQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNQVlRDQVthXTogICAgU2V0IFBWZWN0b3IgdG8gQ29vcmRpbmF0ZSBBeGlzICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MDItMHgwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU1BWVENBKCBJTlNfQVJHICkKKyAgeworICAgIERPX1NQVlRDQQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNGVlRDQVthXTogICAgU2V0IEZWZWN0b3IgdG8gQ29vcmRpbmF0ZSBBeGlzICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MDQtMHgwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU0ZWVENBKCBJTlNfQVJHICkKKyAgeworICAgIERPX1NGVlRDQQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNQVlRMW2FdOiAgICAgU2V0IFBWZWN0b3IgVG8gTGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MDYtMHgwNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU1BWVEwoIElOU19BUkcgKQorICB7CisgICAgRE9fU1BWVEwKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTRlZUTFthXTogICAgIFNldCBGVmVjdG9yIFRvIExpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDA4LTB4MDkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NGVlRMKCBJTlNfQVJHICkKKyAgeworICAgIERPX1NGVlRMCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU0ZWVFBWW106ICAgICBTZXQgRlZlY3RvciBUbyBQVmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgwRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TRlZUUFYoIElOU19BUkcgKQorICB7CisgICAgRE9fU0ZWVFBWCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU1BWRlNbXTogICAgICBTZXQgUFZlY3RvciBGcm9tIFN0YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgwQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyLjE0IGYyLjE0IC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TUFZGUyggSU5TX0FSRyApCisgIHsKKyAgICBET19TUFZGUworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNGVkZTW106ICAgICAgU2V0IEZWZWN0b3IgRnJvbSBTdGFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICBmMi4xNCBmMi4xNCAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU0ZWRlMoIElOU19BUkcgKQorICB7CisgICAgRE9fU0ZWRlMKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBHUFZbXTogICAgICAgIEdldCBQcm9qZWN0aW9uIFZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgZWYyLjE0IC0tPiBlZjIuMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0dQViggSU5TX0FSRyApCisgIHsKKyAgICBET19HUFYKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qIEdGVltdOiAgICAgICAgR2V0IEZyZWVkb20gVmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MEQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICBlZjIuMTQgLS0+IGVmMi4xNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfR0ZWKCBJTlNfQVJHICkKKyAgeworICAgIERPX0dGVgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNSUDBbXTogICAgICAgU2V0IFJlZmVyZW5jZSBQb2ludCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU1JQMCggSU5TX0FSRyApCisgIHsKKyAgICBET19TUlAwCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU1JQMVtdOiAgICAgICBTZXQgUmVmZXJlbmNlIFBvaW50IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgxMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TUlAxKCBJTlNfQVJHICkKKyAgeworICAgIERPX1NSUDEKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTUlAyW106ICAgICAgIFNldCBSZWZlcmVuY2UgUG9pbnQgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NSUDIoIElOU19BUkcgKQorICB7CisgICAgRE9fU1JQMgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJUSEdbXTogICAgICAgUm91bmQgVG8gSGFsZiBHcmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfUlRIRyggSU5TX0FSRyApCisgIHsKKyAgICBET19SVEhHCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogUlRHW106ICAgICAgICBSb3VuZCBUbyBHcmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgxOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19SVEcoIElOU19BUkcgKQorICB7CisgICAgRE9fUlRHCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiBSVERHW106ICAgICAgIFJvdW5kIFRvIERvdWJsZSBHcmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDNEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1JUREcoIElOU19BUkcgKQorICB7CisgICAgRE9fUlRERworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogUlVUR1tdOiAgICAgICBSb3VuZCBVcCBUbyBHcmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg3QyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19SVVRHKCBJTlNfQVJHICkKKyAgeworICAgIERPX1JVVEcKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBSRFRHW106ICAgICAgIFJvdW5kIERvd24gVG8gR3JpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDdEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1JEVEcoIElOU19BUkcgKQorICB7CisgICAgRE9fUkRURworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJPRkZbXTogICAgICAgUm91bmQgT0ZGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4N0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfUk9GRiggSU5TX0FSRyApCisgIHsKKyAgICBET19ST0ZGCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU1JPVU5EW106ICAgICBTdXBlciBST1VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg3NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIEVpbnQ4IC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TUk9VTkQoIElOU19BUkcgKQorICB7CisgICAgRE9fU1JPVU5ECisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogUzQ1Uk9VTkRbXTogICBTdXBlciBST1VORCA0NSBkZWdyZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg3NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TNDVST1VORCggSU5TX0FSRyApCisgIHsKKyAgICBET19TNDVST1VORAorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNMT09QW106ICAgICAgU2V0IExPT1AgdmFyaWFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICBpbnQzMj8gLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU0xPT1AoIElOU19BUkcgKQorICB7CisgICAgRE9fU0xPT1AKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTTURbXTogICAgICAgIFNldCBNaW5pbXVtIERpc3RhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDFBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgZjI2LjYgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NNRCggSU5TX0FSRyApCisgIHsKKyAgICBET19TTUQKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTQ1ZUQ0lbXTogICAgIFNldCBDb250cm9sIFZhbHVlIFRhYmxlIEN1dCBJbiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDFEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgZjI2LjYgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NDVlRDSSggSU5TX0FSRyApCisgIHsKKyAgICBET19TQ1ZUQ0kKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTU1dDSVtdOiAgICAgIFNldCBTaW5nbGUgV2lkdGggQ3V0IEluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDFFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgZjI2LjYgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NTV0NJKCBJTlNfQVJHICkKKyAgeworICAgIERPX1NTV0NJCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU1NXW106ICAgICAgICBTZXQgU2luZ2xlIFdpZHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgxRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGludDMyPyAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TU1coIElOU19BUkcgKQorICB7CisgICAgRE9fU1NXCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRkxJUE9OW106ICAgICBTZXQgYXV0by1GTElQIHRvIE9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg0RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19GTElQT04oIElOU19BUkcgKQorICB7CisgICAgRE9fRkxJUE9OCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRkxJUE9GRltdOiAgICBTZXQgYXV0by1GTElQIHRvIE9GRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg0RSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19GTElQT0ZGKCBJTlNfQVJHICkKKyAgeworICAgIERPX0ZMSVBPRkYKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTQU5HV1tdOiAgICAgIFNldCBBTkdsZSBXZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NBTkdXKCBJTlNfQVJHICkKKyAgeworICAgIC8qIGluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgYW55bW9yZSAqLworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNEQltdOiAgICAgICAgU2V0IERlbHRhIEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4NUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU0RCKCBJTlNfQVJHICkKKyAgeworICAgIERPX1NEQgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNEU1tdOiAgICAgICAgU2V0IERlbHRhIFNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4NUYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU0RTKCBJTlNfQVJHICkKKyAgeworICAgIERPX1NEUworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE1QUEVNW106ICAgICAgTWVhc3VyZSBQaXhlbCBQZXIgRU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4NEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAtLT4gRXVpbnQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfTVBQRU0oIElOU19BUkcgKQorICB7CisgICAgRE9fTVBQRU0KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBNUFNbXTogICAgICAgIE1lYXN1cmUgUG9pbnQgU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDRDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgLS0+IEV1aW50MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX01QUyggSU5TX0FSRyApCisgIHsKKyAgICBET19NUFMKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBEVVBbXTogICAgICAgIERVUGxpY2F0ZSB0aGUgdG9wIHN0YWNrJ3MgZWxlbWVudCAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDIwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgU3RrRWx0IC0tPiBTdGtFbHQgU3RrRWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0RVUCggSU5TX0FSRyApCisgIHsKKyAgICBET19EVVAKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBQT1BbXTogICAgICAgIFBPUCB0aGUgc3RhY2sncyB0b3AgZWxlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgU3RrRWx0IC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1BPUCggSU5TX0FSRyApCisgIHsKKyAgICAvKiBub3RoaW5nIHRvIGRvICovCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQ0xFQVJbXTogICAgICBDTEVBUiB0aGUgZW50aXJlIHN0YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIFN0a0VsdC4uLiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19DTEVBUiggSU5TX0FSRyApCisgIHsKKyAgICBET19DTEVBUgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNXQVBbXTogICAgICAgU1dBUCB0aGUgc3RhY2sncyB0b3AgdHdvIGVsZW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAyICogU3RrRWx0IC0tPiAyICogU3RrRWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU1dBUCggSU5TX0FSRyApCisgIHsKKyAgICBET19TV0FQCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogREVQVEhbXTogICAgICByZXR1cm4gdGhlIHN0YWNrIERFUFRIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgyNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIC0tPiB1aW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19ERVBUSCggSU5TX0FSRyApCisgIHsKKyAgICBET19ERVBUSAorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIENJTkRFWFtdOiAgICAgQ29weSBJTkRFWGVkIGVsZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICBpbnQzMiAtLT4gU3RrRWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfQ0lOREVYKCBJTlNfQVJHICkKKyAgeworICAgIERPX0NJTkRFWAorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEVJRltdOiAgICAgICAgRW5kIElGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4NTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfRUlGKCBJTlNfQVJHICkKKyAgeworICAgIC8qIG5vdGhpbmcgdG8gZG8gKi8KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBKUk9UW106ICAgICAgIEp1bXAgUmVsYXRpdmUgT24gVHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDc4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgU3RrRWx0IGludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0pST1QoIElOU19BUkcgKQorICB7CisgICAgRE9fSlJPVAorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEpNUFJbXTogICAgICAgSnVNUCBSZWxhdGl2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICBpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfSk1QUiggSU5TX0FSRyApCisgIHsKKyAgICBET19KTVBSCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSlJPRltdOiAgICAgICBKdW1wIFJlbGF0aXZlIE9uIEZhbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg3OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIFN0a0VsdCBpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19KUk9GKCBJTlNfQVJHICkKKyAgeworICAgIERPX0pST0YKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBMVFtdOiAgICAgICAgIExlc3MgVGhhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgaW50MzI/IGludDMyPyAtLT4gYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0xUKCBJTlNfQVJHICkKKyAgeworICAgIERPX0xUCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTFRFUVtdOiAgICAgICBMZXNzIFRoYW4gb3IgRVF1YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg1MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGludDMyPyBpbnQzMj8gLS0+IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19MVEVRKCBJTlNfQVJHICkKKyAgeworICAgIERPX0xURVEKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBHVFtdOiAgICAgICAgIEdyZWF0ZXIgVGhhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgaW50MzI/IGludDMyPyAtLT4gYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0dUKCBJTlNfQVJHICkKKyAgeworICAgIERPX0dUCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogR1RFUVtdOiAgICAgICBHcmVhdGVyIFRoYW4gb3IgRVF1YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg1MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGludDMyPyBpbnQzMj8gLS0+IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19HVEVRKCBJTlNfQVJHICkKKyAgeworICAgIERPX0dURVEKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBFUVtdOiAgICAgICAgIEVRdWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDU0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgU3RrRWx0IFN0a0VsdCAtLT4gYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0VRKCBJTlNfQVJHICkKKyAgeworICAgIERPX0VRCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTkVRW106ICAgICAgICBOb3QgRVF1YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg1NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIFN0a0VsdCBTdGtFbHQgLS0+IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19ORVEoIElOU19BUkcgKQorICB7CisgICAgRE9fTkVRCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT0REW106ICAgICAgICBJcyBPREQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg1NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IC0tPiBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19PREQoIElOU19BUkcgKQorICB7CisgICAgRE9fT0RECisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRVZFTltdOiAgICAgICBJcyBFVkVOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg1NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IC0tPiBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19FVkVOKCBJTlNfQVJHICkKKyAgeworICAgIERPX0VWRU4KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBTkRbXTogICAgICAgIGxvZ2ljYWwgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDVBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIHVpbnQzMiAtLT4gdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0FORCggSU5TX0FSRyApCisgIHsKKyAgICBET19BTkQKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPUltdOiAgICAgICAgIGxvZ2ljYWwgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDVCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIHVpbnQzMiAtLT4gdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX09SKCBJTlNfQVJHICkKKyAgeworICAgIERPX09SCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTk9UW106ICAgICAgICBsb2dpY2FsIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg1QyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIFN0a0VsdCAtLT4gdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19OT1QoIElOU19BUkcgKQorICB7CisgICAgRE9fTk9UCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQUREW106ICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IGYyNi42IC0tPiBmMjYuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19BREQoIElOU19BUkcgKQorICB7CisgICAgRE9fQURECisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU1VCW106ICAgICAgICBTVUJ0cmFjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IGYyNi42IC0tPiBmMjYuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TVUIoIElOU19BUkcgKQorICB7CisgICAgRE9fU1VCCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRElWW106ICAgICAgICBESVZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IGYyNi42IC0tPiBmMjYuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19ESVYoIElOU19BUkcgKQorICB7CisgICAgRE9fRElWCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTVVMW106ICAgICAgICBNVUx0aXBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IGYyNi42IC0tPiBmMjYuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19NVUwoIElOU19BUkcgKQorICB7CisgICAgRE9fTVVMCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQUJTW106ICAgICAgICBBQlNvbHV0ZSB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IC0tPiBmMjYuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19BQlMoIElOU19BUkcgKQorICB7CisgICAgRE9fQUJTCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTkVHW106ICAgICAgICBORUdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogZjI2LjYgLS0+IGYyNi42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19ORUcoIElOU19BUkcgKQorICB7CisgICAgRE9fTkVHCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRkxPT1JbXTogICAgICBGTE9PUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IC0tPiBmMjYuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19GTE9PUiggSU5TX0FSRyApCisgIHsKKyAgICBET19GTE9PUgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIENFSUxJTkdbXTogICAgQ0VJTElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4NjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICBmMjYuNiAtLT4gZjI2LjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfQ0VJTElORyggSU5TX0FSRyApCisgIHsKKyAgICBET19DRUlMSU5HCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogUlNbXTogICAgICAgICBSZWFkIFN0b3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg0MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMiAtLT4gdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19SUyggSU5TX0FSRyApCisgIHsKKyAgICBET19SUworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFdTW106ICAgICAgICAgV3JpdGUgU3RvcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4NDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfV1MoIElOU19BUkcgKQorICB7CisgICAgRE9fV1MKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBXQ1ZUUFtdOiAgICAgIFdyaXRlIENWVCBpbiBQaXhlbCB1bml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDQ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgZjI2LjYgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1dDVlRQKCBJTlNfQVJHICkKKyAgeworICAgIERPX1dDVlRQCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogV0NWVEZbXTogICAgICBXcml0ZSBDVlQgaW4gRnVuaXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg3MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMiB1aW50MzIgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19XQ1ZURiggSU5TX0FSRyApCisgIHsKKyAgICBET19XQ1ZURgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJDVlRbXTogICAgICAgUmVhZCBDVlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4NDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgLS0+IGYyNi42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfUkNWVCggSU5TX0FSRyApCisgIHsKKyAgICBET19SQ1ZUCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogQUFbXTogICAgICAgICBBZGp1c3QgQW5nbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg3RiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19BQSggSU5TX0FSRyApCisgIHsKKyAgICAvKiBpbnRlbnRpb25hbGx5IG5vIGxvbmdlciBzdXBwb3J0ZWQgKi8KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBERUJVR1tdOiAgICAgIERFQlVHLiAgVW5zdXBwb3J0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDRGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTm90ZTogVGhlIG9yaWdpbmFsIGluc3RydWN0aW9uIHBvcHMgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjay4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfREVCVUcoIElOU19BUkcgKQorICB7CisgICAgRE9fREVCVUcKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBST1VORFthYl06ICAgIFJPVU5EIHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDY4LTB4NkIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgZjI2LjYgLS0+IGYyNi42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1JPVU5EKCBJTlNfQVJHICkKKyAgeworICAgIERPX1JPVU5ECisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTlJPVU5EW2FiXTogICBObyBST1VORGluZyBvZiB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2Qy0weDZGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IC0tPiBmMjYuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19OUk9VTkQoIElOU19BUkcgKQorICB7CisgICAgRE9fTlJPVU5ECisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTUFYW106ICAgICAgICBNQVhpbXVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGludDMyPyBpbnQzMj8gLS0+IGludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19NQVgoIElOU19BUkcgKQorICB7CisgICAgRE9fTUFYCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTUlOW106ICAgICAgICBNSU5pbXVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg2OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGludDMyPyBpbnQzMj8gLS0+IGludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19NSU4oIElOU19BUkcgKQorICB7CisgICAgRE9fTUlOCisgIH0KKworCisjZW5kaWYgIC8qICFUVF9DT05GSUdfT1BUSU9OX0lOVEVSUFJFVEVSX1NXSVRDSCAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGFzIGlzIHdpdGhpbiB0aGUgc3dpdGNoIHN0YXRlbWVudC4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBNSU5ERVhbXTogICAgIE1vdmUgSU5ERVhlZCBlbGVtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgaW50MzI/IC0tPiBTdGtFbHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX01JTkRFWCggSU5TX0FSRyApCisgIHsKKyAgICBGVF9Mb25nICBMLCBLOworCisKKyAgICBMID0gYXJnc1swXTsKKworICAgIGlmICggTCA8PSAwIHx8IEwgPiBDVVIuYXJncyApCisgICAgeworICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgSyA9IENVUi5zdGFja1tDVVIuYXJncyAtIExdOworCisgICAgICBGVF9BUlJBWV9NT1ZFKCAmQ1VSLnN0YWNrW0NVUi5hcmdzIC0gTCAgICBdLAorICAgICAgICAgICAgICAgICAgICAgJkNVUi5zdGFja1tDVVIuYXJncyAtIEwgKyAxXSwKKyAgICAgICAgICAgICAgICAgICAgICggTCAtIDEgKSApOworCisgICAgICBDVVIuc3RhY2tbQ1VSLmFyZ3MgLSAxXSA9IEs7CisgICAgfQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJPTExbXTogICAgICAgUk9MTCB0b3AgdGhyZWUgZWxlbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4OEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAzICogU3RrRWx0IC0tPiAzICogU3RrRWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfUk9MTCggSU5TX0FSRyApCisgIHsKKyAgICBGVF9Mb25nICBBLCBCLCBDOworCisgICAgRlRfVU5VU0VEX0VYRUM7CisKKworICAgIEEgPSBhcmdzWzJdOworICAgIEIgPSBhcmdzWzFdOworICAgIEMgPSBhcmdzWzBdOworCisgICAgYXJnc1syXSA9IEM7CisgICAgYXJnc1sxXSA9IEE7CisgICAgYXJnc1swXSA9IEI7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTUFOQUdJTkcgVEhFIEZMT1cgT0YgQ09OVFJPTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEluc3RydWN0aW9ucyBhcHBlYXIgaW4gdGhlIHNwZWNpZmljYXRpb24ncyBvcmRlci4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgc3RhdGljIEZUX0Jvb2wKKyAgU2tpcENvZGUoIEVYRUNfT1AgKQorICB7CisgICAgQ1VSLklQICs9IENVUi5sZW5ndGg7CisKKyAgICBpZiAoIENVUi5JUCA8IENVUi5jb2RlU2l6ZSApCisgICAgeworICAgICAgQ1VSLm9wY29kZSA9IENVUi5jb2RlW0NVUi5JUF07CisKKyAgICAgIENVUi5sZW5ndGggPSBvcGNvZGVfbGVuZ3RoW0NVUi5vcGNvZGVdOworICAgICAgaWYgKCBDVVIubGVuZ3RoIDwgMCApCisgICAgICB7CisgICAgICAgIGlmICggQ1VSLklQICsgMSA+PSBDVVIuY29kZVNpemUgKQorICAgICAgICAgIGdvdG8gRmFpbF9PdmVyZmxvdzsKKyAgICAgICAgQ1VSLmxlbmd0aCA9IDIgLSBDVVIubGVuZ3RoICogQ1VSLmNvZGVbQ1VSLklQICsgMV07CisgICAgICB9CisKKyAgICAgIGlmICggQ1VSLklQICsgQ1VSLmxlbmd0aCA8PSBDVVIuY29kZVNpemUgKQorICAgICAgICByZXR1cm4gU1VDQ0VTUzsKKyAgICB9CisKKyAgRmFpbF9PdmVyZmxvdzoKKyAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggQ29kZV9PdmVyZmxvdyApOworICAgIHJldHVybiBGQUlMVVJFOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIElGW106ICAgICAgICAgSUYgdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4NTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICBTdGtFbHQgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfSUYoIElOU19BUkcgKQorICB7CisgICAgRlRfSW50ICAgbklmczsKKyAgICBGVF9Cb29sICBPdXQ7CisKKworICAgIGlmICggYXJnc1swXSAhPSAwICkKKyAgICAgIHJldHVybjsKKworICAgIG5JZnMgPSAxOworICAgIE91dCA9IDA7CisKKyAgICBkbworICAgIHsKKyAgICAgIGlmICggU0tJUF9Db2RlKCkgPT0gRkFJTFVSRSApCisgICAgICAgIHJldHVybjsKKworICAgICAgc3dpdGNoICggQ1VSLm9wY29kZSApCisgICAgICB7CisgICAgICBjYXNlIDB4NTg6ICAgICAgLyogSUYgKi8KKyAgICAgICAgbklmcysrOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAweDFCOiAgICAgIC8qIEVMU0UgKi8KKyAgICAgICAgT3V0ID0gRlRfQk9PTCggbklmcyA9PSAxICk7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDB4NTk6ICAgICAgLyogRUlGICovCisgICAgICAgIG5JZnMtLTsKKyAgICAgICAgT3V0ID0gRlRfQk9PTCggbklmcyA9PSAwICk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0gd2hpbGUgKCBPdXQgPT0gMCApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEVMU0VbXTogICAgICAgRUxTRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MUIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfRUxTRSggSU5TX0FSRyApCisgIHsKKyAgICBGVF9JbnQgIG5JZnM7CisKKyAgICBGVF9VTlVTRURfQVJHOworCisKKyAgICBuSWZzID0gMTsKKworICAgIGRvCisgICAgeworICAgICAgaWYgKCBTS0lQX0NvZGUoKSA9PSBGQUlMVVJFICkKKyAgICAgICAgcmV0dXJuOworCisgICAgICBzd2l0Y2ggKCBDVVIub3Bjb2RlICkKKyAgICAgIHsKKyAgICAgIGNhc2UgMHg1ODogICAgLyogSUYgKi8KKyAgICAgICAgbklmcysrOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSAweDU5OiAgICAvKiBFSUYgKi8KKyAgICAgICAgbklmcy0tOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9IHdoaWxlICggbklmcyAhPSAwICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogREVGSU5JTkcgQU5EIFVTSU5HIEZVTkNUSU9OUyBBTkQgSU5TVFJVQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIEluc3RydWN0aW9ucyBhcHBlYXIgaW4gdGhlIHNwZWNpZmljYXRpb24ncyBvcmRlci4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGREVGW106ICAgICAgIEZ1bmN0aW9uIERFRmluaXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDJDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0ZERUYoIElOU19BUkcgKQorICB7CisgICAgRlRfVUxvbmcgICAgICAgbjsKKyAgICBUVF9EZWZSZWNvcmQqICByZWM7CisgICAgVFRfRGVmUmVjb3JkKiAgbGltaXQ7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICAvKiBhcmd1bWVudHMgdG8gb3Bjb2RlcyBhcmUgc2tpcHBlZCBieSBgU0tJUF9Db2RlJyAqLworICAgIEZUX0J5dGUgICAgb3Bjb2RlX3BhdHRlcm5bOV1bMTJdID0geworICAgICAgICAgICAgICAgICAvKiAjMCBpbmxpbmUgZGVsdGEgZnVuY3Rpb24gMSAqLworICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgMHg0QiwgLyogUFBFTSAgICAqLworICAgICAgICAgICAgICAgICAgIDB4NTMsIC8qIEdURVEgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDIzLCAvKiBTV0FQICAgICovCisgICAgICAgICAgICAgICAgICAgMHg0QiwgLyogUFBFTSAgICAqLworICAgICAgICAgICAgICAgICAgIDB4NTEsIC8qIExURVEgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDVBLCAvKiBBTkQgICAgICovCisgICAgICAgICAgICAgICAgICAgMHg1OCwgLyogSUYgICAgICAqLworICAgICAgICAgICAgICAgICAgIDB4MzgsIC8qICAgU0hQSVggKi8KKyAgICAgICAgICAgICAgICAgICAweDFCLCAvKiBFTFNFICAgICovCisgICAgICAgICAgICAgICAgICAgMHgyMSwgLyogICBQT1AgICAqLworICAgICAgICAgICAgICAgICAgIDB4MjEsIC8qICAgUE9QICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDU5ICAvKiBFSUYgICAgICovCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIC8qICMxIGlubGluZSBkZWx0YSBmdW5jdGlvbiAyICovCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAweDRCLCAvKiBQUEVNICAgICovCisgICAgICAgICAgICAgICAgICAgMHg1NCwgLyogRVEgICAgICAqLworICAgICAgICAgICAgICAgICAgIDB4NTgsIC8qIElGICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDM4LCAvKiAgIFNIUElYICovCisgICAgICAgICAgICAgICAgICAgMHgxQiwgLyogRUxTRSAgICAqLworICAgICAgICAgICAgICAgICAgIDB4MjEsIC8qICAgUE9QICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDIxLCAvKiAgIFBPUCAgICovCisgICAgICAgICAgICAgICAgICAgMHg1OSAgLyogRUlGICAgICAqLworICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAvKiAjMiBkaWFnb25hbCBzdHJva2UgZnVuY3Rpb24gKi8KKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgIDB4MjAsIC8qIERVUCAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDIwLCAvKiBEVVAgICAgICovCisgICAgICAgICAgICAgICAgICAgMHhCMCwgLyogUFVTSEJfMSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgMSAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDYwLCAvKiBBREQgICAgICovCisgICAgICAgICAgICAgICAgICAgMHg0NiwgLyogR0NfY3VyICAqLworICAgICAgICAgICAgICAgICAgIDB4QjAsIC8qIFBVU0hCXzEgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIDY0ICAgICovCisgICAgICAgICAgICAgICAgICAgMHgyMywgLyogU1dBUCAgICAqLworICAgICAgICAgICAgICAgICAgIDB4NDIgIC8qIFdTICAgICAgKi8KKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgLyogIzMgVmFjdUZvcm1Sb3VuZCBmdW5jdGlvbiAqLworICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgMHg0NSwgLyogUkNWVCAgICAqLworICAgICAgICAgICAgICAgICAgIDB4MjMsIC8qIFNXQVAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDQ2LCAvKiBHQ19jdXIgICovCisgICAgICAgICAgICAgICAgICAgMHg2MCwgLyogQUREICAgICAqLworICAgICAgICAgICAgICAgICAgIDB4MjAsIC8qIERVUCAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweEIwICAvKiBQVVNIQl8xICovCisgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAzOCAgICAqLworICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAvKiAjNCBUVEZhdXRvaGludCBieXRlY29kZSAob2xkKSAqLworICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgMHgyMCwgLyogRFVQICAgICAqLworICAgICAgICAgICAgICAgICAgIDB4NjQsIC8qIEFCUyAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweEIwLCAvKiBQVVNIQl8xICovCisgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAzMiAgICAqLworICAgICAgICAgICAgICAgICAgIDB4NjAsIC8qIEFERCAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDY2LCAvKiBGTE9PUiAgICovCisgICAgICAgICAgICAgICAgICAgMHgyMywgLyogU1dBUCAgICAqLworICAgICAgICAgICAgICAgICAgIDB4QjAgIC8qIFBVU0hCXzEgKi8KKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgLyogIzUgc3BhY2luZyBmdW5jdGlvbiAxICovCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAweDAxLCAvKiBTVlRDQV94ICovCisgICAgICAgICAgICAgICAgICAgMHhCMCwgLyogUFVTSEJfMSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgMjQgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDQzLCAvKiBSUyAgICAgICovCisgICAgICAgICAgICAgICAgICAgMHg1OCAgLyogSUYgICAgICAqLworICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAvKiAjNiBzcGFjaW5nIGZ1bmN0aW9uIDIgKi8KKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgIDB4MDEsIC8qIFNWVENBX3ggKi8KKyAgICAgICAgICAgICAgICAgICAweDE4LCAvKiBSVEcgICAgICovCisgICAgICAgICAgICAgICAgICAgMHhCMCwgLyogUFVTSEJfMSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgMjQgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDQzLCAvKiBSUyAgICAgICovCisgICAgICAgICAgICAgICAgICAgMHg1OCAgLyogSUYgICAgICAqLworICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAvKiAjNyBUeXBlTWFuIFRhbGsgRGlhZ0VuZEN0cmwgZnVuY3Rpb24gKi8KKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgIDB4MDEsIC8qIFNWVENBX3ggKi8KKyAgICAgICAgICAgICAgICAgICAweDIwLCAvKiBEVVAgICAgICovCisgICAgICAgICAgICAgICAgICAgMHhCMCwgLyogUFVTSEJfMSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgMyAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAweDI1LCAvKiBDSU5ERVggICovCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIC8qICM4IFR5cGVNYW4gVGFsayBBbGlnbiAqLworICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgMHgwNiwgLyogU1BWVEwgICAqLworICAgICAgICAgICAgICAgICAgIDB4N0QsIC8qIFJEVEcgICAgKi8KKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgIH07CisgICAgRlRfVVNob3J0ICBvcGNvZGVfcGF0dGVybnMgICA9IDk7CisgICAgRlRfVVNob3J0ICBvcGNvZGVfcG9pbnRlcls5XSA9IHsgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKKyAgICBGVF9VU2hvcnQgIG9wY29kZV9zaXplWzldICAgID0geyAxMiwgOCwgOCwgNiwgNywgNCwgNSwgNCwgMiB9OworICAgIEZUX1VTaG9ydCAgaTsKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworCisgICAgLyogc29tZSBmb250IHByb2dyYW1zIGFyZSBicm9rZW4gZW5vdWdoIHRvIHJlZGVmaW5lIGZ1bmN0aW9ucyEgKi8KKyAgICAvKiBXZSB3aWxsIHRoZW4gcGFyc2UgdGhlIGN1cnJlbnQgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgcmVjICAgPSBDVVIuRkRlZnM7CisgICAgbGltaXQgPSByZWMgKyBDVVIubnVtRkRlZnM7CisgICAgbiAgICAgPSBhcmdzWzBdOworCisgICAgZm9yICggOyByZWMgPCBsaW1pdDsgcmVjKysgKQorICAgIHsKKyAgICAgIGlmICggcmVjLT5vcGMgPT0gbiApCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICggcmVjID09IGxpbWl0ICkKKyAgICB7CisgICAgICAvKiBjaGVjayB0aGF0IHRoZXJlIGlzIGVub3VnaCByb29tIGZvciBuZXcgZnVuY3Rpb25zICovCisgICAgICBpZiAoIENVUi5udW1GRGVmcyA+PSBDVVIubWF4RkRlZnMgKQorICAgICAgeworICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggVG9vX01hbnlfRnVuY3Rpb25fRGVmcyApOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBDVVIubnVtRkRlZnMrKzsKKyAgICB9CisKKyAgICAvKiBBbHRob3VnaCBGREVGIHRha2VzIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyLCAgKi8KKyAgICAvKiBmdW5jICMgbXVzdCBiZSB3aXRoaW4gdW5zaWduZWQgMTYtYml0IGludGVnZXIgKi8KKyAgICBpZiAoIG4gPiAweEZGRkZVICkKKyAgICB7CisgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggVG9vX01hbnlfRnVuY3Rpb25fRGVmcyApOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlYy0+cmFuZ2UgICAgICAgICAgPSBDVVIuY3VyUmFuZ2U7CisgICAgcmVjLT5vcGMgICAgICAgICAgICA9IChGVF9VSW50MTYpbjsKKyAgICByZWMtPnN0YXJ0ICAgICAgICAgID0gQ1VSLklQICsgMTsKKyAgICByZWMtPmFjdGl2ZSAgICAgICAgID0gVFJVRTsKKyAgICByZWMtPmlubGluZV9kZWx0YSAgID0gRkFMU0U7CisgICAgcmVjLT5zcGhfZmRlZl9mbGFncyA9IDB4MDAwMDsKKworICAgIGlmICggbiA+IENVUi5tYXhGdW5jICkKKyAgICAgIENVUi5tYXhGdW5jID0gKEZUX1VJbnQxNiluOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgLyogV2UgZG9uJ3Qga25vdyBmb3Igc3VyZSB0aGVzZSBhcmUgdHlwZW1hbiBmdW5jdGlvbnMsICovCisgICAgLyogaG93ZXZlciB0aGV5IGFyZSBvbmx5IGFjdGl2ZSB3aGVuIFJTIDIyIGlzIGNhbGxlZCAgICovCisgICAgaWYgKCBuID49IDY0ICYmIG4gPD0gNjYgKQorICAgICAgcmVjLT5zcGhfZmRlZl9mbGFncyB8PSBTUEhfRkRFRl9UWVBFTUFOX1NUUk9LRVM7CisjZW5kaWYKKworICAgIC8qIE5vdyBza2lwIHRoZSB3aG9sZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAqLworICAgIC8qIFdlIGRvbid0IGFsbG93IG5lc3RlZCBJREVGUyAmIEZERUZzLiAgICAqLworCisgICAgd2hpbGUgKCBTS0lQX0NvZGUoKSA9PSBTVUNDRVNTICkKKyAgICB7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKworICAgICAgaWYgKCBTVUJQSVhFTF9ISU5USU5HICkKKyAgICAgIHsKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBvcGNvZGVfcGF0dGVybnM7IGkrKyApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIG9wY29kZV9wb2ludGVyW2ldIDwgb3Bjb2RlX3NpemVbaV0gICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICBDVVIub3Bjb2RlID09IG9wY29kZV9wYXR0ZXJuW2ldW29wY29kZV9wb2ludGVyW2ldXSApCisgICAgICAgICAgeworICAgICAgICAgICAgb3Bjb2RlX3BvaW50ZXJbaV0gKz0gMTsKKworICAgICAgICAgICAgaWYgKCBvcGNvZGVfcG9pbnRlcltpXSA9PSBvcGNvZGVfc2l6ZVtpXSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEZUX1RSQUNFNygoICJzcGg6IEZ1bmN0aW9uICVkLCBvcGNvZGUgcHRybjogJWQsICVzICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIuZmFjZS0+cm9vdC5mYW1pbHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLmZhY2UtPnJvb3Quc3R5bGVfbmFtZSApKTsKKworICAgICAgICAgICAgICBzd2l0Y2ggKCBpICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgcmVjLT5zcGhfZmRlZl9mbGFncyAgICAgICAgICAgIHw9IFNQSF9GREVGX0lOTElORV9ERUxUQV8xOworICAgICAgICAgICAgICAgIENVUi5mYWNlLT5zcGhfZm91bmRfZnVuY19mbGFncyB8PSBTUEhfRkRFRl9JTkxJTkVfREVMVEFfMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgcmVjLT5zcGhfZmRlZl9mbGFncyAgICAgICAgICAgIHw9IFNQSF9GREVGX0lOTElORV9ERUxUQV8yOworICAgICAgICAgICAgICAgIENVUi5mYWNlLT5zcGhfZm91bmRfZnVuY19mbGFncyB8PSBTUEhfRkRFRl9JTkxJTkVfREVMVEFfMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgc3dpdGNoICggbiApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgLyogbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQgc3RpbGwgKi8KKyAgICAgICAgICAgICAgICBjYXNlIDU4OgorICAgICAgICAgICAgICAgICAgcmVjLT5zcGhfZmRlZl9mbGFncyAgICAgICAgICAgIHw9IFNQSF9GREVGX0RJQUdPTkFMX1NUUk9LRTsKKyAgICAgICAgICAgICAgICAgIENVUi5mYWNlLT5zcGhfZm91bmRfZnVuY19mbGFncyB8PSBTUEhfRkRFRl9ESUFHT05BTF9TVFJPS0U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCBuICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgcmVjLT5zcGhfZmRlZl9mbGFncyAgICAgICAgICAgIHw9IFNQSF9GREVGX1ZBQ1VGT1JNX1JPVU5EXzE7CisgICAgICAgICAgICAgICAgICBDVVIuZmFjZS0+c3BoX2ZvdW5kX2Z1bmNfZmxhZ3MgfD0gU1BIX0ZERUZfVkFDVUZPUk1fUk9VTkRfMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgIC8qIHByb2JhYmx5IG5vdCBuZWNlc3NhcnkgdG8gZGV0ZWN0IGFueW1vcmUgKi8KKyAgICAgICAgICAgICAgICByZWMtPnNwaF9mZGVmX2ZsYWdzICAgICAgICAgICAgfD0gU1BIX0ZERUZfVFRGQVVUT0hJTlRfMTsKKyAgICAgICAgICAgICAgICBDVVIuZmFjZS0+c3BoX2ZvdW5kX2Z1bmNfZmxhZ3MgfD0gU1BIX0ZERUZfVFRGQVVUT0hJTlRfMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgICAgc3dpdGNoICggbiApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgICAgICAgcmVjLT5zcGhfZmRlZl9mbGFncyAgICAgICAgICAgIHw9IFNQSF9GREVGX1NQQUNJTkdfMTsKKyAgICAgICAgICAgICAgICAgIENVUi5mYWNlLT5zcGhfZm91bmRfZnVuY19mbGFncyB8PSBTUEhfRkRFRl9TUEFDSU5HXzE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCBuICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICAgICAgICByZWMtPnNwaF9mZGVmX2ZsYWdzICAgICAgICAgICAgfD0gU1BIX0ZERUZfU1BBQ0lOR18yOworICAgICAgICAgICAgICAgICAgQ1VSLmZhY2UtPnNwaF9mb3VuZF9mdW5jX2ZsYWdzIHw9IFNQSF9GREVGX1NQQUNJTkdfMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgICAgICAgcmVjLT5zcGhfZmRlZl9mbGFncyAgICAgICAgICAgIHw9IFNQSF9GREVGX1RZUEVNQU5fRElBR0VORENUUkw7CisgICAgICAgICAgICAgICAgIENVUi5mYWNlLT5zcGhfZm91bmRfZnVuY19mbGFncyB8PSBTUEhfRkRFRl9UWVBFTUFOX0RJQUdFTkRDVFJMOworICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgY2FzZSA4OgorI2lmIDAKKyAgICAgICAgICAgICAgICAgcmVjLT5zcGhfZmRlZl9mbGFncyAgICAgICAgICAgIHw9IFNQSF9GREVGX1RZUEVNQU5fRElBR0VORENUUkw7CisgICAgICAgICAgICAgICAgIENVUi5mYWNlLT5zcGhfZm91bmRfZnVuY19mbGFncyB8PSBTUEhfRkRFRl9UWVBFTUFOX0RJQUdFTkRDVFJMOworI2VuZGlmCisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIG9wY29kZV9wb2ludGVyW2ldID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBvcGNvZGVfcG9pbnRlcltpXSA9IDA7CisgICAgICAgIH0KKworICAgICAgICAvKiBTZXQgc3BoX2NvbXBhdGliaWxpdHlfbW9kZSBvbmx5IHdoZW4gZGVsdGFzIGFyZSBkZXRlY3RlZCAqLworICAgICAgICBDVVIuZmFjZS0+c3BoX2NvbXBhdGliaWxpdHlfbW9kZSA9CisgICAgICAgICAgKCAoIENVUi5mYWNlLT5zcGhfZm91bmRfZnVuY19mbGFncyAmIFNQSF9GREVGX0lOTElORV9ERUxUQV8xICkgfAorICAgICAgICAgICAgKCBDVVIuZmFjZS0+c3BoX2ZvdW5kX2Z1bmNfZmxhZ3MgJiBTUEhfRkRFRl9JTkxJTkVfREVMVEFfMiApICk7CisgICAgICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICAgICAgc3dpdGNoICggQ1VSLm9wY29kZSApCisgICAgICB7CisgICAgICBjYXNlIDB4ODk6ICAgIC8qIElERUYgKi8KKyAgICAgIGNhc2UgMHgyQzogICAgLyogRkRFRiAqLworICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggTmVzdGVkX0RFRlMgKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgICBjYXNlIDB4MkQ6ICAgLyogRU5ERiAqLworICAgICAgICByZWMtPmVuZCA9IENVUi5JUDsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBFTkRGW106ICAgICAgIEVORCBGdW5jdGlvbiBkZWZpbml0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDJEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0VOREYoIElOU19BUkcgKQorICB7CisgICAgVFRfQ2FsbFJlYyogIHBSZWM7CisKKyAgICBGVF9VTlVTRURfQVJHOworCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBDVVIuc3BoX2luX2Z1bmNfZmxhZ3MgPSAweDAwMDA7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICBpZiAoIENVUi5jYWxsVG9wIDw9IDAgKSAgICAgLyogV2UgZW5jb3VudGVyZWQgYW4gRU5ERiB3aXRob3V0IGEgY2FsbCAqLworICAgIHsKKyAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBFTkRGX0luX0V4ZWNfU3RyZWFtICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ1VSLmNhbGxUb3AtLTsKKworICAgIHBSZWMgPSAmQ1VSLmNhbGxTdGFja1tDVVIuY2FsbFRvcF07CisKKyAgICBwUmVjLT5DdXJfQ291bnQtLTsKKworICAgIENVUi5zdGVwX2lucyA9IEZBTFNFOworCisgICAgaWYgKCBwUmVjLT5DdXJfQ291bnQgPiAwICkKKyAgICB7CisgICAgICBDVVIuY2FsbFRvcCsrOworICAgICAgQ1VSLklQID0gcFJlYy0+Q3VyX1Jlc3RhcnQ7CisgICAgfQorICAgIGVsc2UKKyAgICAgIC8qIExvb3AgdGhyb3VnaCB0aGUgY3VycmVudCBmdW5jdGlvbiAqLworICAgICAgSU5TX0dvdG9fQ29kZVJhbmdlKCBwUmVjLT5DYWxsZXJfUmFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBSZWMtPkNhbGxlcl9JUCApOworCisgICAgLyogRXhpdCB0aGUgY3VycmVudCBjYWxsIGZyYW1lLiAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgLyogTk9URTogSWYgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gb2YgYSBwcm9ncmFtIGlzIGEgICAqLworICAgIC8qICAgICAgIENBTEwgb3IgTE9PUENBTEwsIHRoZSByZXR1cm4gYWRkcmVzcyBpcyAgICAgKi8KKyAgICAvKiAgICAgICBhbHdheXMgb3V0IG9mIHRoZSBjb2RlIHJhbmdlLiAgVGhpcyBpcyBhICAgICovCisgICAgLyogICAgICAgdmFsaWQgYWRkcmVzcywgYW5kIGl0IGlzIHdoeSB3ZSBkbyBub3QgdGVzdCAqLworICAgIC8qICAgICAgIHRoZSByZXN1bHQgb2YgSW5zX0dvdG9fQ29kZVJhbmdlKCkgaGVyZSEgICAgKi8KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBDQUxMW106ICAgICAgIENBTEwgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDJCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyPyAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0NBTEwoIElOU19BUkcgKQorICB7CisgICAgRlRfVUxvbmcgICAgICAgRjsKKyAgICBUVF9DYWxsUmVjKiAgICBwQ3JlYzsKKyAgICBUVF9EZWZSZWNvcmQqICBkZWY7CisKKworICAgIC8qIGZpcnN0IG9mIGFsbCwgY2hlY2sgdGhlIGluZGV4ICovCisKKyAgICBGID0gYXJnc1swXTsKKyAgICBpZiAoIEJPVU5EU0woIEYsIENVUi5tYXhGdW5jICsgMSApICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIC8qIEV4Y2VwdCBmb3Igc29tZSBvbGQgQXBwbGUgZm9udHMsIGFsbCBmdW5jdGlvbnMgaW4gYSBUcnVlVHlwZSAqLworICAgIC8qIGZvbnQgYXJlIGRlZmluZWQgaW4gaW5jcmVhc2luZyBvcmRlciwgc3RhcnRpbmcgZnJvbSAwLiAgVGhpcyAqLworICAgIC8qIG1lYW5zIHRoYXQgd2Ugbm9ybWFsbHkgaGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgIENVUi5tYXhGdW5jKzEgPT0gQ1VSLm51bUZEZWZzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgIENVUi5GRGVmc1tuXS5vcGMgPT0gbiBmb3IgbiBpbiAwLi5DVVIubWF4RnVuYyAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIElmIHRoaXMgaXNuJ3QgdHJ1ZSwgd2UgbmVlZCB0byBsb29rIHVwIHRoZSBmdW5jdGlvbiB0YWJsZS4gICAqLworCisgICAgZGVmID0gQ1VSLkZEZWZzICsgRjsKKyAgICBpZiAoIENVUi5tYXhGdW5jICsgMSAhPSBDVVIubnVtRkRlZnMgfHwgZGVmLT5vcGMgIT0gRiApCisgICAgeworICAgICAgLyogbG9vayB1cCB0aGUgRkRlZnMgdGFibGUgKi8KKyAgICAgIFRUX0RlZlJlY29yZCogIGxpbWl0OworCisKKyAgICAgIGRlZiAgID0gQ1VSLkZEZWZzOworICAgICAgbGltaXQgPSBkZWYgKyBDVVIubnVtRkRlZnM7CisKKyAgICAgIHdoaWxlICggZGVmIDwgbGltaXQgJiYgZGVmLT5vcGMgIT0gRiApCisgICAgICAgIGRlZisrOworCisgICAgICBpZiAoIGRlZiA9PSBsaW1pdCApCisgICAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICAvKiBjaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBhY3RpdmUgKi8KKyAgICBpZiAoICFkZWYtPmFjdGl2ZSApCisgICAgICBnb3RvIEZhaWw7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICggKCBDVVIuaXVwX2NhbGxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICggQ1VSLnNwaF90d2Vha19mbGFncyAmIFNQSF9UV0VBS19OT19DQUxMX0FGVEVSX0lVUCApICkgfHwKKyAgICAgICAgICAgKCBkZWYtPnNwaF9mZGVmX2ZsYWdzICYgU1BIX0ZERUZfVkFDVUZPUk1fUk9VTkRfMSApICAgICAgICkgKQorICAgICAgZ290byBGYWlsOworICAgIGVsc2UKKyAgICAgIENVUi5zcGhfaW5fZnVuY19mbGFncyA9IGRlZi0+c3BoX2ZkZWZfZmxhZ3M7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICAvKiBjaGVjayB0aGUgY2FsbCBzdGFjayAqLworICAgIGlmICggQ1VSLmNhbGxUb3AgPj0gQ1VSLmNhbGxTaXplICkKKyAgICB7CisgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggU3RhY2tfT3ZlcmZsb3cgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwQ3JlYyA9IENVUi5jYWxsU3RhY2sgKyBDVVIuY2FsbFRvcDsKKworICAgIHBDcmVjLT5DYWxsZXJfUmFuZ2UgPSBDVVIuY3VyUmFuZ2U7CisgICAgcENyZWMtPkNhbGxlcl9JUCAgICA9IENVUi5JUCArIDE7CisgICAgcENyZWMtPkN1cl9Db3VudCAgICA9IDE7CisgICAgcENyZWMtPkN1cl9SZXN0YXJ0ICA9IGRlZi0+c3RhcnQ7CisgICAgcENyZWMtPkN1cl9FbmQgICAgICA9IGRlZi0+ZW5kOworCisgICAgQ1VSLmNhbGxUb3ArKzsKKworICAgIElOU19Hb3RvX0NvZGVSYW5nZSggZGVmLT5yYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZi0+c3RhcnQgKTsKKworICAgIENVUi5zdGVwX2lucyA9IEZBTFNFOworCisgICAgcmV0dXJuOworCisgIEZhaWw6CisgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTE9PUENBTExbXTogICBMT09QIGFuZCBDQUxMIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgyQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMj8gRWludDE2PyAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19MT09QQ0FMTCggSU5TX0FSRyApCisgIHsKKyAgICBGVF9VTG9uZyAgICAgICBGOworICAgIFRUX0NhbGxSZWMqICAgIHBDcmVjOworICAgIFRUX0RlZlJlY29yZCogIGRlZjsKKworCisgICAgLyogZmlyc3Qgb2YgYWxsLCBjaGVjayB0aGUgaW5kZXggKi8KKyAgICBGID0gYXJnc1sxXTsKKyAgICBpZiAoIEJPVU5EU0woIEYsIENVUi5tYXhGdW5jICsgMSApICkKKyAgICAgIGdvdG8gRmFpbDsKKworICAgIC8qIEV4Y2VwdCBmb3Igc29tZSBvbGQgQXBwbGUgZm9udHMsIGFsbCBmdW5jdGlvbnMgaW4gYSBUcnVlVHlwZSAqLworICAgIC8qIGZvbnQgYXJlIGRlZmluZWQgaW4gaW5jcmVhc2luZyBvcmRlciwgc3RhcnRpbmcgZnJvbSAwLiAgVGhpcyAqLworICAgIC8qIG1lYW5zIHRoYXQgd2Ugbm9ybWFsbHkgaGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgIENVUi5tYXhGdW5jKzEgPT0gQ1VSLm51bUZEZWZzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgIENVUi5GRGVmc1tuXS5vcGMgPT0gbiBmb3IgbiBpbiAwLi5DVVIubWF4RnVuYyAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIElmIHRoaXMgaXNuJ3QgdHJ1ZSwgd2UgbmVlZCB0byBsb29rIHVwIHRoZSBmdW5jdGlvbiB0YWJsZS4gICAqLworCisgICAgZGVmID0gQ1VSLkZEZWZzICsgRjsKKyAgICBpZiAoIENVUi5tYXhGdW5jICsgMSAhPSBDVVIubnVtRkRlZnMgfHwgZGVmLT5vcGMgIT0gRiApCisgICAgeworICAgICAgLyogbG9vayB1cCB0aGUgRkRlZnMgdGFibGUgKi8KKyAgICAgIFRUX0RlZlJlY29yZCogIGxpbWl0OworCisKKyAgICAgIGRlZiAgID0gQ1VSLkZEZWZzOworICAgICAgbGltaXQgPSBkZWYgKyBDVVIubnVtRkRlZnM7CisKKyAgICAgIHdoaWxlICggZGVmIDwgbGltaXQgJiYgZGVmLT5vcGMgIT0gRiApCisgICAgICAgIGRlZisrOworCisgICAgICBpZiAoIGRlZiA9PSBsaW1pdCApCisgICAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICAvKiBjaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBhY3RpdmUgKi8KKyAgICBpZiAoICFkZWYtPmFjdGl2ZSApCisgICAgICBnb3RvIEZhaWw7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgQ1VSLmlnbm9yZV94X21vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAoIGRlZi0+c3BoX2ZkZWZfZmxhZ3MgJiBTUEhfRkRFRl9WQUNVRk9STV9ST1VORF8xICkgKQorICAgICAgZ290byBGYWlsOworICAgIGVsc2UKKyAgICAgIENVUi5zcGhfaW5fZnVuY19mbGFncyA9IGRlZi0+c3BoX2ZkZWZfZmxhZ3M7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICAvKiBjaGVjayBzdGFjayAqLworICAgIGlmICggQ1VSLmNhbGxUb3AgPj0gQ1VSLmNhbGxTaXplICkKKyAgICB7CisgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggU3RhY2tfT3ZlcmZsb3cgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIGFyZ3NbMF0gPiAwICkKKyAgICB7CisgICAgICBwQ3JlYyA9IENVUi5jYWxsU3RhY2sgKyBDVVIuY2FsbFRvcDsKKworICAgICAgcENyZWMtPkNhbGxlcl9SYW5nZSA9IENVUi5jdXJSYW5nZTsKKyAgICAgIHBDcmVjLT5DYWxsZXJfSVAgICAgPSBDVVIuSVAgKyAxOworICAgICAgcENyZWMtPkN1cl9Db3VudCAgICA9IChGVF9JbnQpYXJnc1swXTsKKyAgICAgIHBDcmVjLT5DdXJfUmVzdGFydCAgPSBkZWYtPnN0YXJ0OworICAgICAgcENyZWMtPkN1cl9FbmQgICAgICA9IGRlZi0+ZW5kOworCisgICAgICBDVVIuY2FsbFRvcCsrOworCisgICAgICBJTlNfR290b19Db2RlUmFuZ2UoIGRlZi0+cmFuZ2UsIGRlZi0+c3RhcnQgKTsKKworICAgICAgQ1VSLnN0ZXBfaW5zID0gRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuOworCisgIEZhaWw6CisgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSURFRltdOiAgICAgICBJbnN0cnVjdGlvbiBERUZpbml0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg4OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIEVpbnQ4IC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19JREVGKCBJTlNfQVJHICkKKyAgeworICAgIFRUX0RlZlJlY29yZCogIGRlZjsKKyAgICBUVF9EZWZSZWNvcmQqICBsaW1pdDsKKworCisgICAgLyogIEZpcnN0IG9mIGFsbCwgbG9vayBmb3IgdGhlIHNhbWUgZnVuY3Rpb24gaW4gb3VyIHRhYmxlICovCisKKyAgICBkZWYgICA9IENVUi5JRGVmczsKKyAgICBsaW1pdCA9IGRlZiArIENVUi5udW1JRGVmczsKKworICAgIGZvciAoIDsgZGVmIDwgbGltaXQ7IGRlZisrICkKKyAgICAgIGlmICggZGVmLT5vcGMgPT0gKEZUX1VMb25nKWFyZ3NbMF0gKQorICAgICAgICBicmVhazsKKworICAgIGlmICggZGVmID09IGxpbWl0ICkKKyAgICB7CisgICAgICAvKiBjaGVjayB0aGF0IHRoZXJlIGlzIGVub3VnaCByb29tIGZvciBhIG5ldyBpbnN0cnVjdGlvbiAqLworICAgICAgaWYgKCBDVVIubnVtSURlZnMgPj0gQ1VSLm1heElEZWZzICkKKyAgICAgIHsKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIFRvb19NYW55X0luc3RydWN0aW9uX0RlZnMgKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgQ1VSLm51bUlEZWZzKys7CisgICAgfQorCisgICAgLyogb3Bjb2RlIG11c3QgYmUgdW5zaWduZWQgOC1iaXQgaW50ZWdlciAqLworICAgIGlmICggMCA+IGFyZ3NbMF0gfHwgYXJnc1swXSA+IDB4MDBGRiApCisgICAgeworICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIFRvb19NYW55X0luc3RydWN0aW9uX0RlZnMgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWYtPm9wYyAgICA9IChGVF9CeXRlKWFyZ3NbMF07CisgICAgZGVmLT5zdGFydCAgPSBDVVIuSVAgKyAxOworICAgIGRlZi0+cmFuZ2UgID0gQ1VSLmN1clJhbmdlOworICAgIGRlZi0+YWN0aXZlID0gVFJVRTsKKworICAgIGlmICggKEZUX1VMb25nKWFyZ3NbMF0gPiBDVVIubWF4SW5zICkKKyAgICAgIENVUi5tYXhJbnMgPSAoRlRfQnl0ZSlhcmdzWzBdOworCisgICAgLyogTm93IHNraXAgdGhlIHdob2xlIGZ1bmN0aW9uIGRlZmluaXRpb24uICovCisgICAgLyogV2UgZG9uJ3QgYWxsb3cgbmVzdGVkIElERUZzICYgRkRFRnMuICAgICovCisKKyAgICB3aGlsZSAoIFNLSVBfQ29kZSgpID09IFNVQ0NFU1MgKQorICAgIHsKKyAgICAgIHN3aXRjaCAoIENVUi5vcGNvZGUgKQorICAgICAgeworICAgICAgY2FzZSAweDg5OiAgIC8qIElERUYgKi8KKyAgICAgIGNhc2UgMHgyQzogICAvKiBGREVGICovCisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBOZXN0ZWRfREVGUyApOworICAgICAgICByZXR1cm47CisgICAgICBjYXNlIDB4MkQ6ICAgLyogRU5ERiAqLworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFBVU0hJTkcgREFUQSBPTlRPIFRIRSBJTlRFUlBSRVRFUiBTVEFDSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBJbnN0cnVjdGlvbnMgYXBwZWFyIGluIHRoZSBzcGVjaWZpY2F0aW9uJ3Mgb3JkZXIuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTlBVU0hCW106ICAgICBQVVNIIE4gQnl0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIC0tPiB1aW50MzIuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19OUFVTSEIoIElOU19BUkcgKQorICB7CisgICAgRlRfVVNob3J0ICBMLCBLOworCisKKyAgICBMID0gKEZUX1VTaG9ydClDVVIuY29kZVtDVVIuSVAgKyAxXTsKKworICAgIGlmICggQk9VTkRTKCBMLCBDVVIuc3RhY2tTaXplICsgMSAtIENVUi50b3AgKSApCisgICAgeworICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIFN0YWNrX092ZXJmbG93ICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yICggSyA9IDE7IEsgPD0gTDsgSysrICkKKyAgICAgIGFyZ3NbSyAtIDFdID0gQ1VSLmNvZGVbQ1VSLklQICsgSyArIDFdOworCisgICAgQ1VSLm5ld190b3AgKz0gTDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBOUFVTSFdbXTogICAgIFBVU0ggTiBXb3JkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgLS0+IGludDMyLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX05QVVNIVyggSU5TX0FSRyApCisgIHsKKyAgICBGVF9VU2hvcnQgIEwsIEs7CisKKworICAgIEwgPSAoRlRfVVNob3J0KUNVUi5jb2RlW0NVUi5JUCArIDFdOworCisgICAgaWYgKCBCT1VORFMoIEwsIENVUi5zdGFja1NpemUgKyAxIC0gQ1VSLnRvcCApICkKKyAgICB7CisgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggU3RhY2tfT3ZlcmZsb3cgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDVVIuSVAgKz0gMjsKKworICAgIGZvciAoIEsgPSAwOyBLIDwgTDsgSysrICkKKyAgICAgIGFyZ3NbS10gPSBHRVRfU2hvcnRJbnMoKTsKKworICAgIENVUi5zdGVwX2lucyA9IEZBTFNFOworICAgIENVUi5uZXdfdG9wICs9IEw7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogUFVTSEJbYWJjXTogICBQVVNIIEJ5dGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHhCMC0weEI3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIC0tPiB1aW50MzIuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19QVVNIQiggSU5TX0FSRyApCisgIHsKKyAgICBGVF9VU2hvcnQgIEwsIEs7CisKKworICAgIEwgPSAoRlRfVVNob3J0KSggQ1VSLm9wY29kZSAtIDB4QjAgKyAxICk7CisKKyAgICBpZiAoIEJPVU5EUyggTCwgQ1VSLnN0YWNrU2l6ZSArIDEgLSBDVVIudG9wICkgKQorICAgIHsKKyAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBTdGFja19PdmVyZmxvdyApOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoIEsgPSAxOyBLIDw9IEw7IEsrKyApCisgICAgICBhcmdzW0sgLSAxXSA9IENVUi5jb2RlW0NVUi5JUCArIEtdOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFBVU0hXW2FiY106ICAgUFVTSCBXb3JkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4QjgtMHhCRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICAtLT4gaW50MzIuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfUFVTSFcoIElOU19BUkcgKQorICB7CisgICAgRlRfVVNob3J0ICBMLCBLOworCisKKyAgICBMID0gKEZUX1VTaG9ydCkoIENVUi5vcGNvZGUgLSAweEI4ICsgMSApOworCisgICAgaWYgKCBCT1VORFMoIEwsIENVUi5zdGFja1NpemUgKyAxIC0gQ1VSLnRvcCApICkKKyAgICB7CisgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggU3RhY2tfT3ZlcmZsb3cgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDVVIuSVArKzsKKworICAgIGZvciAoIEsgPSAwOyBLIDwgTDsgSysrICkKKyAgICAgIGFyZ3NbS10gPSBHRVRfU2hvcnRJbnMoKTsKKworICAgIENVUi5zdGVwX2lucyA9IEZBTFNFOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE1BTkFHSU5HIFRIRSBHUkFQSElDUyBTVEFURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIEluc3RydWN0aW9ucyBhcHBlYXIgaW4gdGhlIHNwZWNzJyBvcmRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogR0NbYV06ICAgICAgICBHZXQgQ29vcmRpbmF0ZSBwcm9qZWN0ZWQgb250byAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg0Ni0weDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMiAtLT4gZjI2LjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFhYWDogVU5ET0NVTUVOVEVEOiBNZWFzdXJlcyBmcm9tIHRoZSBvcmlnaW5hbCBnbHlwaCBtdXN0IGJlIHRha2VuICAgICAqLworICAvKiAgICAgIGFsb25nIHRoZSBkdWFsIHByb2plY3Rpb24gdmVjdG9yISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19HQyggSU5TX0FSRyApCisgIHsKKyAgICBGVF9VTG9uZyAgICBMOworICAgIEZUX0YyNkRvdDYgIFI7CisKKworICAgIEwgPSAoRlRfVUxvbmcpYXJnc1swXTsKKworICAgIGlmICggQk9VTkRTTCggTCwgQ1VSLnpwMi5uX3BvaW50cyApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICBSID0gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICggQ1VSLm9wY29kZSAmIDEgKQorICAgICAgICBSID0gQ1VSX2Zhc3RfZHVhbHByb2ooICZDVVIuenAyLm9yZ1tMXSApOworICAgICAgZWxzZQorICAgICAgICBSID0gQ1VSX2Zhc3RfcHJvamVjdCggJkNVUi56cDIuY3VyW0xdICk7CisgICAgfQorCisgICAgYXJnc1swXSA9IFI7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU0NGU1tdOiAgICAgICBTZXQgQ29vcmRpbmF0ZSBGcm9tIFN0YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHg0OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGYyNi42IHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZvcm11bGE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBPQSA6PSBPQSArICggdmFsdWUgLSBPQS5wICkvKCBmLnAgKSAqIGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU0NGUyggSU5TX0FSRyApCisgIHsKKyAgICBGVF9Mb25nICAgIEs7CisgICAgRlRfVVNob3J0ICBMOworCisKKyAgICBMID0gKEZUX1VTaG9ydClhcmdzWzBdOworCisgICAgaWYgKCBCT1VORFMoIEwsIENVUi56cDIubl9wb2ludHMgKSApCisgICAgeworICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEsgPSBDVVJfZmFzdF9wcm9qZWN0KCAmQ1VSLnpwMi5jdXJbTF0gKTsKKworICAgIENVUl9GdW5jX21vdmUoICZDVVIuenAyLCBMLCBhcmdzWzFdIC0gSyApOworCisgICAgLyogVU5ET0NVTUVOVEVEISAgVGhlIE1TIHJhc3Rlcml6ZXIgZG9lcyB0aGF0IHdpdGggKi8KKyAgICAvKiB0d2lsaWdodCBwb2ludHMgKGNvbmZpcm1lZCBieSBHcmVnIEhpdGNoY29jaykgICAqLworICAgIGlmICggQ1VSLkdTLmdlcDIgPT0gMCApCisgICAgICBDVVIuenAyLm9yZ1tMXSA9IENVUi56cDIuY3VyW0xdOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE1EW2FdOiAgICAgICAgTWVhc3VyZSBEaXN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4NDktMHg0QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgdWludDMyIC0tPiBmMjYuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBYWFg6IFVORE9DVU1FTlRFRDogTWVhc3VyZSB0YWtlbiBpbiB0aGUgb3JpZ2luYWwgZ2x5cGggbXVzdCBiZSBhbG9uZyAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIHRoZSBkdWFsIHByb2plY3Rpb24gdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBYWFg6IFVORE9DVU1FTlRFRDogRmxhZyBhdHRyaWJ1dGVzIGFyZSBpbnZlcnRlZCEgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgMCA9PiBtZWFzdXJlIGRpc3RhbmNlIGluIG9yaWdpbmFsIG91dGxpbmUgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgIDEgPT4gbWVhc3VyZSBkaXN0YW5jZSBpbiBncmlkLWZpdHRlZCBvdXRsaW5lICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogWFhYOiBVTkRPQ1VNRU5URUQ6IGB6cDAgLSB6cDEnLCBhbmQgbm90IGB6cDIgLSB6cDEhICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfTUQoIElOU19BUkcgKQorICB7CisgICAgRlRfVVNob3J0ICAgSywgTDsKKyAgICBGVF9GMjZEb3Q2ICBEOworCisKKyAgICBLID0gKEZUX1VTaG9ydClhcmdzWzFdOworICAgIEwgPSAoRlRfVVNob3J0KWFyZ3NbMF07CisKKyAgICBpZiAoIEJPVU5EUyggTCwgQ1VSLnpwMC5uX3BvaW50cyApIHx8CisgICAgICAgICBCT1VORFMoIEssIENVUi56cDEubl9wb2ludHMgKSApCisgICAgeworICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgICAgRCA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBpZiAoIENVUi5vcGNvZGUgJiAxICkKKyAgICAgICAgRCA9IENVUl9GdW5jX3Byb2plY3QoIENVUi56cDAuY3VyICsgTCwgQ1VSLnpwMS5jdXIgKyBLICk7CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIFhYWDogVU5ET0NVTUVOVEVEOiB0d2lsaWdodCB6b25lIHNwZWNpYWwgY2FzZSAqLworCisgICAgICAgIGlmICggQ1VSLkdTLmdlcDAgPT0gMCB8fCBDVVIuR1MuZ2VwMSA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1ZlY3RvciogIHZlYzEgPSBDVVIuenAwLm9yZyArIEw7CisgICAgICAgICAgRlRfVmVjdG9yKiAgdmVjMiA9IENVUi56cDEub3JnICsgSzsKKworCisgICAgICAgICAgRCA9IENVUl9GdW5jX2R1YWxwcm9qKCB2ZWMxLCB2ZWMyICk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgRlRfVmVjdG9yKiAgdmVjMSA9IENVUi56cDAub3J1cyArIEw7CisgICAgICAgICAgRlRfVmVjdG9yKiAgdmVjMiA9IENVUi56cDEub3J1cyArIEs7CisKKworICAgICAgICAgIGlmICggQ1VSLm1ldHJpY3MueF9zY2FsZSA9PSBDVVIubWV0cmljcy55X3NjYWxlICkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiB0aGlzIHNob3VsZCBiZSBmYXN0ZXIgKi8KKyAgICAgICAgICAgIEQgPSBDVVJfRnVuY19kdWFscHJvaiggdmVjMSwgdmVjMiApOworICAgICAgICAgICAgRCA9IEZUX011bEZpeCggRCwgQ1VSLm1ldHJpY3MueF9zY2FsZSApOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfVmVjdG9yICB2ZWM7CisKKworICAgICAgICAgICAgdmVjLnggPSBGVF9NdWxGaXgoIHZlYzEtPnggLSB2ZWMyLT54LCBDVVIubWV0cmljcy54X3NjYWxlICk7CisgICAgICAgICAgICB2ZWMueSA9IEZUX011bEZpeCggdmVjMS0+eSAtIHZlYzItPnksIENVUi5tZXRyaWNzLnlfc2NhbGUgKTsKKworICAgICAgICAgICAgRCA9IENVUl9mYXN0X2R1YWxwcm9qKCAmdmVjICk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgLyogRGlzYWJsZSBUeXBlIDIgVmFjdWZvcm0gUm91bmRzIC0gZS5nLiBBcmlhbCBOYXJyb3cgKi8KKyAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICBDVVIuaWdub3JlX3hfbW9kZSAmJiBGVF9BQlMoIEQgKSA9PSA2NCApCisgICAgICBEICs9IDE7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICBhcmdzWzBdID0gRDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTRFBWVExbYV06ICAgIFNldCBEdWFsIFBWZWN0b3IgdG8gTGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDg2LTB4ODcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NEUFZUTCggSU5TX0FSRyApCisgIHsKKyAgICBGVF9Mb25nICAgIEEsIEIsIEM7CisgICAgRlRfVVNob3J0ICBwMSwgcDI7ICAgICAgICAgICAgLyogd2FzIEZUX0ludCBpbiBwYXMgdHlwZSBFUlJPUiAqLworICAgIEZUX0ludCAgICAgYU9wYyA9IENVUi5vcGNvZGU7CisKKworICAgIHAxID0gKEZUX1VTaG9ydClhcmdzWzFdOworICAgIHAyID0gKEZUX1VTaG9ydClhcmdzWzBdOworCisgICAgaWYgKCBCT1VORFMoIHAyLCBDVVIuenAxLm5fcG9pbnRzICkgfHwKKyAgICAgICAgIEJPVU5EUyggcDEsIENVUi56cDIubl9wb2ludHMgKSApCisgICAgeworICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHsKKyAgICAgIEZUX1ZlY3RvciogdjEgPSBDVVIuenAxLm9yZyArIHAyOworICAgICAgRlRfVmVjdG9yKiB2MiA9IENVUi56cDIub3JnICsgcDE7CisKKworICAgICAgQSA9IHYxLT54IC0gdjItPng7CisgICAgICBCID0gdjEtPnkgLSB2Mi0+eTsKKworICAgICAgLyogSWYgdjEgPT0gdjIsIFNEUFZUTCBiZWhhdmVzIHRoZSBzYW1lIGFzICovCisgICAgICAvKiBTVlRDQVtYXSwgcmVzcGVjdGl2ZWx5LiAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogQ29uZmlybWVkIGJ5IEdyZWcgSGl0Y2hjb2NrLiAgICAgICAgICAgICovCisKKyAgICAgIGlmICggQSA9PSAwICYmIEIgPT0gMCApCisgICAgICB7CisgICAgICAgIEEgICAgPSAweDQwMDA7CisgICAgICAgIGFPcGMgPSAwOworICAgICAgfQorICAgIH0KKworICAgIGlmICggKCBhT3BjICYgMSApICE9IDAgKQorICAgIHsKKyAgICAgIEMgPSAgQjsgICAvKiBjb3VudGVyIGNsb2Nrd2lzZSByb3RhdGlvbiAqLworICAgICAgQiA9ICBBOworICAgICAgQSA9IC1DOworICAgIH0KKworICAgIE5PUk1hbGl6ZSggQSwgQiwgJkNVUi5HUy5kdWFsVmVjdG9yICk7CisKKyAgICB7CisgICAgICBGVF9WZWN0b3IqICB2MSA9IENVUi56cDEuY3VyICsgcDI7CisgICAgICBGVF9WZWN0b3IqICB2MiA9IENVUi56cDIuY3VyICsgcDE7CisKKworICAgICAgQSA9IHYxLT54IC0gdjItPng7CisgICAgICBCID0gdjEtPnkgLSB2Mi0+eTsKKworICAgICAgaWYgKCBBID09IDAgJiYgQiA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgQSAgICA9IDB4NDAwMDsKKyAgICAgICAgYU9wYyA9IDA7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKCAoIGFPcGMgJiAxICkgIT0gMCApCisgICAgeworICAgICAgQyA9ICBCOyAgIC8qIGNvdW50ZXIgY2xvY2t3aXNlIHJvdGF0aW9uICovCisgICAgICBCID0gIEE7CisgICAgICBBID0gLUM7CisgICAgfQorCisgICAgTk9STWFsaXplKCBBLCBCLCAmQ1VSLkdTLnByb2pWZWN0b3IgKTsKKworICAgIEdVRVNTX1ZFQ1RPUiggZnJlZVZlY3RvciApOworCisgICAgQ09NUFVURV9GdW5jcygpOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNaUDBbXTogICAgICAgU2V0IFpvbmUgUG9pbnRlciAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU1pQMCggSU5TX0FSRyApCisgIHsKKyAgICBzd2l0Y2ggKCAoRlRfSW50KWFyZ3NbMF0gKQorICAgIHsKKyAgICBjYXNlIDA6CisgICAgICBDVVIuenAwID0gQ1VSLnR3aWxpZ2h0OworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDE6CisgICAgICBDVVIuenAwID0gQ1VSLnB0czsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDVVIuR1MuZ2VwMCA9IChGVF9VU2hvcnQpYXJnc1swXTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTWlAxW106ICAgICAgIFNldCBab25lIFBvaW50ZXIgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NaUDEoIElOU19BUkcgKQorICB7CisgICAgc3dpdGNoICggKEZUX0ludClhcmdzWzBdICkKKyAgICB7CisgICAgY2FzZSAwOgorICAgICAgQ1VSLnpwMSA9IENVUi50d2lsaWdodDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAxOgorICAgICAgQ1VSLnpwMSA9IENVUi5wdHM7CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ1VSLkdTLmdlcDEgPSAoRlRfVVNob3J0KWFyZ3NbMF07CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU1pQMltdOiAgICAgICBTZXQgWm9uZSBQb2ludGVyIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TWlAyKCBJTlNfQVJHICkKKyAgeworICAgIHN3aXRjaCAoIChGVF9JbnQpYXJnc1swXSApCisgICAgeworICAgIGNhc2UgMDoKKyAgICAgIENVUi56cDIgPSBDVVIudHdpbGlnaHQ7CisgICAgICBicmVhazsKKworICAgIGNhc2UgMToKKyAgICAgIENVUi56cDIgPSBDVVIucHRzOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENVUi5HUy5nZXAyID0gKEZUX1VTaG9ydClhcmdzWzBdOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNaUFNbXTogICAgICAgU2V0IFpvbmUgUG9pbnRlclMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU1pQUyggSU5TX0FSRyApCisgIHsKKyAgICBzd2l0Y2ggKCAoRlRfSW50KWFyZ3NbMF0gKQorICAgIHsKKyAgICBjYXNlIDA6CisgICAgICBDVVIuenAwID0gQ1VSLnR3aWxpZ2h0OworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDE6CisgICAgICBDVVIuenAwID0gQ1VSLnB0czsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDVVIuenAxID0gQ1VSLnpwMDsKKyAgICBDVVIuenAyID0gQ1VSLnpwMDsKKworICAgIENVUi5HUy5nZXAwID0gKEZUX1VTaG9ydClhcmdzWzBdOworICAgIENVUi5HUy5nZXAxID0gKEZUX1VTaG9ydClhcmdzWzBdOworICAgIENVUi5HUy5nZXAyID0gKEZUX1VTaG9ydClhcmdzWzBdOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIElOU1RDVFJMW106ICAgSU5TVHJ1Y3Rpb24gQ29uVFJvTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4OGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICBpbnQzMiBpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfSU5TVENUUkwoIElOU19BUkcgKQorICB7CisgICAgRlRfTG9uZyAgSywgTDsKKworCisgICAgSyA9IGFyZ3NbMV07CisgICAgTCA9IGFyZ3NbMF07CisKKyAgICBpZiAoIEsgPCAxIHx8IEsgPiAyICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCBMICE9IDAgKQorICAgICAgICBMID0gSzsKKworICAgIENVUi5HUy5pbnN0cnVjdF9jb250cm9sID0gRlRfQk9PTCgKKyAgICAgICggKEZUX0J5dGUpQ1VSLkdTLmluc3RydWN0X2NvbnRyb2wgJiB+KEZUX0J5dGUpSyApIHwgKEZUX0J5dGUpTCApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNDQU5DVFJMW106ICAgU0NBTiBDb25UUm9MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4ODUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzI/IC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU0NBTkNUUkwoIElOU19BUkcgKQorICB7CisgICAgRlRfSW50ICBBOworCisKKyAgICAvKiBHZXQgVGhyZXNob2xkICovCisgICAgQSA9IChGVF9JbnQpKCBhcmdzWzBdICYgMHhGRiApOworCisgICAgaWYgKCBBID09IDB4RkYgKQorICAgIHsKKyAgICAgIENVUi5HUy5zY2FuX2NvbnRyb2wgPSBUUlVFOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIGlmICggQSA9PSAwICkKKyAgICB7CisgICAgICBDVVIuR1Muc2Nhbl9jb250cm9sID0gRkFMU0U7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCAoIGFyZ3NbMF0gJiAweDEwMCApICE9IDAgJiYgQ1VSLnR0X21ldHJpY3MucHBlbSA8PSBBICkKKyAgICAgIENVUi5HUy5zY2FuX2NvbnRyb2wgPSBUUlVFOworCisgICAgaWYgKCAoIGFyZ3NbMF0gJiAweDIwMCApICE9IDAgJiYgQ1VSLnR0X21ldHJpY3Mucm90YXRlZCApCisgICAgICBDVVIuR1Muc2Nhbl9jb250cm9sID0gVFJVRTsKKworICAgIGlmICggKCBhcmdzWzBdICYgMHg0MDAgKSAhPSAwICYmIENVUi50dF9tZXRyaWNzLnN0cmV0Y2hlZCApCisgICAgICBDVVIuR1Muc2Nhbl9jb250cm9sID0gVFJVRTsKKworICAgIGlmICggKCBhcmdzWzBdICYgMHg4MDAgKSAhPSAwICYmIENVUi50dF9tZXRyaWNzLnBwZW0gPiBBICkKKyAgICAgIENVUi5HUy5zY2FuX2NvbnRyb2wgPSBGQUxTRTsKKworICAgIGlmICggKCBhcmdzWzBdICYgMHgxMDAwICkgIT0gMCAmJiBDVVIudHRfbWV0cmljcy5yb3RhdGVkICkKKyAgICAgIENVUi5HUy5zY2FuX2NvbnRyb2wgPSBGQUxTRTsKKworICAgIGlmICggKCBhcmdzWzBdICYgMHgyMDAwICkgIT0gMCAmJiBDVVIudHRfbWV0cmljcy5zdHJldGNoZWQgKQorICAgICAgQ1VSLkdTLnNjYW5fY29udHJvbCA9IEZBTFNFOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNDQU5UWVBFW106ICAgU0NBTiBUWVBFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4OEQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzI/IC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfU0NBTlRZUEUoIElOU19BUkcgKQorICB7CisgICAgaWYgKCBhcmdzWzBdID49IDAgKQorICAgICAgQ1VSLkdTLnNjYW5fdHlwZSA9IChGVF9JbnQpYXJnc1swXTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBNQU5BR0lORyBPVVRMSU5FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgSW5zdHJ1Y3Rpb25zIGFwcGVhciBpbiB0aGUgc3BlY2lmaWNhdGlvbidzIG9yZGVyLiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZMSVBQVFtdOiAgICAgRkxJUCBQb2luVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4ODAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIuLi4gLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfRkxJUFBUKCBJTlNfQVJHICkKKyAgeworICAgIEZUX1VTaG9ydCAgcG9pbnQ7CisKKyAgICBGVF9VTlVTRURfQVJHOworCisKKyAgICBpZiAoIENVUi50b3AgPCBDVVIuR1MubG9vcCApCisgICAgeworICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBUb29fRmV3X0FyZ3VtZW50cyApOworICAgICAgZ290byBGYWlsOworICAgIH0KKworICAgIHdoaWxlICggQ1VSLkdTLmxvb3AgPiAwICkKKyAgICB7CisgICAgICBDVVIuYXJncy0tOworCisgICAgICBwb2ludCA9IChGVF9VU2hvcnQpQ1VSLnN0YWNrW0NVUi5hcmdzXTsKKworICAgICAgaWYgKCBCT1VORFMoIHBvaW50LCBDVVIucHRzLm5fcG9pbnRzICkgKQorICAgICAgeworICAgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgeworICAgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBDVVIucHRzLnRhZ3NbcG9pbnRdIF49IEZUX0NVUlZFX1RBR19PTjsKKworICAgICAgQ1VSLkdTLmxvb3AtLTsKKyAgICB9CisKKyAgRmFpbDoKKyAgICBDVVIuR1MubG9vcCA9IDE7CisgICAgQ1VSLm5ld190b3AgPSBDVVIuYXJnczsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGTElQUkdPTltdOiAgIEZMSVAgUmFuR2UgT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0ZMSVBSR09OKCBJTlNfQVJHICkKKyAgeworICAgIEZUX1VTaG9ydCAgSSwgSywgTDsKKworCisgICAgSyA9IChGVF9VU2hvcnQpYXJnc1sxXTsKKyAgICBMID0gKEZUX1VTaG9ydClhcmdzWzBdOworCisgICAgaWYgKCBCT1VORFMoIEssIENVUi5wdHMubl9wb2ludHMgKSB8fAorICAgICAgICAgQk9VTkRTKCBMLCBDVVIucHRzLm5fcG9pbnRzICkgKQorICAgIHsKKyAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKCBJID0gTDsgSSA8PSBLOyBJKysgKQorICAgICAgQ1VSLnB0cy50YWdzW0ldIHw9IEZUX0NVUlZFX1RBR19PTjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBGTElQUkdPRkY6ICAgIEZMSVAgUmFuR2UgT0ZGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDgyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0ZMSVBSR09GRiggSU5TX0FSRyApCisgIHsKKyAgICBGVF9VU2hvcnQgIEksIEssIEw7CisKKworICAgIEsgPSAoRlRfVVNob3J0KWFyZ3NbMV07CisgICAgTCA9IChGVF9VU2hvcnQpYXJnc1swXTsKKworICAgIGlmICggQk9VTkRTKCBLLCBDVVIucHRzLm5fcG9pbnRzICkgfHwKKyAgICAgICAgIEJPVU5EUyggTCwgQ1VSLnB0cy5uX3BvaW50cyApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yICggSSA9IEw7IEkgPD0gSzsgSSsrICkKKyAgICAgIENVUi5wdHMudGFnc1tJXSAmPSB+RlRfQ1VSVkVfVEFHX09OOworICB9CisKKworICBzdGF0aWMgRlRfQm9vbAorICBDb21wdXRlX1BvaW50X0Rpc3BsYWNlbWVudCggRVhFQ19PUF8gRlRfRjI2RG90NiogICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiogICB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfR2x5cGhab25lICB6b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0KiAgICByZWZwICkKKyAgeworICAgIFRUX0dseXBoWm9uZVJlYyAgenA7CisgICAgRlRfVVNob3J0ICAgICAgICBwOworICAgIEZUX0YyNkRvdDYgICAgICAgZDsKKworCisgICAgaWYgKCBDVVIub3Bjb2RlICYgMSApCisgICAgeworICAgICAgenAgPSBDVVIuenAwOworICAgICAgcCAgPSBDVVIuR1MucnAxOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgenAgPSBDVVIuenAxOworICAgICAgcCAgPSBDVVIuR1MucnAyOworICAgIH0KKworICAgIGlmICggQk9VTkRTKCBwLCB6cC5uX3BvaW50cyApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICAqcmVmcCA9IDA7CisgICAgICByZXR1cm4gRkFJTFVSRTsKKyAgICB9CisKKyAgICAqem9uZSA9IHpwOworICAgICpyZWZwID0gcDsKKworICAgIGQgPSBDVVJfRnVuY19wcm9qZWN0KCB6cC5jdXIgKyBwLCB6cC5vcmcgKyBwICk7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORworICAgIGlmICggQ1VSLmZhY2UtPnVucGF0ZW50ZWRfaGludGluZyApCisgICAgeworICAgICAgaWYgKCBDVVIuR1MuYm90aF94X2F4aXMgKQorICAgICAgeworICAgICAgICAqeCA9IGQ7CisgICAgICAgICp5ID0gMDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgKnggPSAwOworICAgICAgICAqeSA9IGQ7CisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgICp4ID0gRlRfTXVsRGl2KCBkLCAoRlRfTG9uZylDVVIuR1MuZnJlZVZlY3Rvci54LCBDVVIuRl9kb3RfUCApOworICAgICAgKnkgPSBGVF9NdWxEaXYoIGQsIChGVF9Mb25nKUNVUi5HUy5mcmVlVmVjdG9yLnksIENVUi5GX2RvdF9QICk7CisgICAgfQorCisgICAgcmV0dXJuIFNVQ0NFU1M7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIE1vdmVfWnAyX1BvaW50KCBFWEVDX09QXyBGVF9VU2hvcnQgICBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIGR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRjI2RG90NiAgZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICAgICB0b3VjaCApCisgIHsKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORworICAgIGlmICggQ1VSLmZhY2UtPnVucGF0ZW50ZWRfaGludGluZyApCisgICAgeworICAgICAgaWYgKCBDVVIuR1MuYm90aF94X2F4aXMgKQorICAgICAgeworICAgICAgICBDVVIuenAyLmN1cltwb2ludF0ueCArPSBkeDsKKyAgICAgICAgaWYgKCB0b3VjaCApCisgICAgICAgICAgQ1VSLnpwMi50YWdzW3BvaW50XSB8PSBGVF9DVVJWRV9UQUdfVE9VQ0hfWDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgQ1VSLnpwMi5jdXJbcG9pbnRdLnkgKz0gZHk7CisgICAgICAgIGlmICggdG91Y2ggKQorICAgICAgICAgIENVUi56cDIudGFnc1twb2ludF0gfD0gRlRfQ1VSVkVfVEFHX1RPVUNIX1k7CisgICAgICB9CisgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKwlpZiAoQ1VSLnpwMi5jdXIgPT0gTlVMTCkgcmV0dXJuOyAvKiBTZWN1cml0eSBmaXg6IEdvb2dsZSBDaHJpczYgdWZ1enoxMDkucGRmIHBhZ2UgIzEgKi8KKyAgICBpZiAoIENVUi5HUy5mcmVlVmVjdG9yLnggIT0gMCApCisgICAgeworICAgICAgQ1VSLnpwMi5jdXJbcG9pbnRdLnggKz0gZHg7CisgICAgICBpZiAoIHRvdWNoICkKKyAgICAgICAgQ1VSLnpwMi50YWdzW3BvaW50XSB8PSBGVF9DVVJWRV9UQUdfVE9VQ0hfWDsKKyAgICB9CisKKyAgICBpZiAoIENVUi5HUy5mcmVlVmVjdG9yLnkgIT0gMCApCisgICAgeworICAgICAgQ1VSLnpwMi5jdXJbcG9pbnRdLnkgKz0gZHk7CisgICAgICBpZiAoIHRvdWNoICkKKyAgICAgICAgQ1VSLnpwMi50YWdzW3BvaW50XSB8PSBGVF9DVVJWRV9UQUdfVE9VQ0hfWTsKKyAgICB9CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU0hQW2FdOiAgICAgICBTSGlmdCBQb2ludCBieSB0aGUgbGFzdCBwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgzMi0weDMzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMi4uLiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TSFAoIElOU19BUkcgKQorICB7CisgICAgVFRfR2x5cGhab25lUmVjICB6cDsKKyAgICBGVF9VU2hvcnQgICAgICAgIHJlZnA7CisKKyAgICBGVF9GMjZEb3Q2ICAgICAgIGR4LAorICAgICAgICAgICAgICAgICAgICAgZHk7CisgICAgRlRfVVNob3J0ICAgICAgICBwb2ludDsKKworICAgIEZUX1VOVVNFRF9BUkc7CisKKworICAgIGlmICggQ1VSLnRvcCA8IENVUi5HUy5sb29wICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICBnb3RvIEZhaWw7CisgICAgfQorCisgICAgaWYgKCBDT01QVVRFX1BvaW50X0Rpc3BsYWNlbWVudCggJmR4LCAmZHksICZ6cCwgJnJlZnAgKSApCisgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoIENVUi5HUy5sb29wID4gMCApCisgICAgeworICAgICAgQ1VSLmFyZ3MtLTsKKyAgICAgIHBvaW50ID0gKEZUX1VTaG9ydClDVVIuc3RhY2tbQ1VSLmFyZ3NdOworCisgICAgICBpZiAoIEJPVU5EUyggcG9pbnQsIENVUi56cDIubl9wb2ludHMgKSApCisgICAgICB7CisgICAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICB7CisgICAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgICAvKiBkb2Vzbid0IGZvbGxvdyBDbGVhcnR5cGUgc3BlYyBidXQgcHJvZHVjZXMgYmV0dGVyIHJlc3VsdCAqLworICAgICAgaWYgKCBTVUJQSVhFTF9ISU5USU5HICAmJgorICAgICAgICAgICBDVVIuaWdub3JlX3hfbW9kZSApCisgICAgICAgIE1PVkVfWnAyX1BvaW50KCBwb2ludCwgMCwgZHksIFRSVUUgKTsKKyAgICAgIGVsc2UKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKyAgICAgICAgTU9WRV9acDJfUG9pbnQoIHBvaW50LCBkeCwgZHksIFRSVUUgKTsKKworICAgICAgQ1VSLkdTLmxvb3AtLTsKKyAgICB9CisKKyAgRmFpbDoKKyAgICBDVVIuR1MubG9vcCA9IDE7CisgICAgQ1VSLm5ld190b3AgPSBDVVIuYXJnczsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTSENbYV06ICAgICAgIFNIaWZ0IENvbnRvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDM0LTM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVU5ET0NVTUVOVEVEOiBBY2NvcmRpbmcgdG8gR3JlZyBIaXRjaGNvY2ssIHRoZXJlIGlzIG9uZSAodmlydHVhbCkgICAgICovCisgIC8qICAgICAgICAgICAgICAgY29udG91ciBpbiB0aGUgdHdpbGlnaHQgem9uZSwgbmFtZWx5IGNvbnRvdXIgbnVtYmVyICAgICAqLworICAvKiAgICAgICAgICAgICAgIHplcm8gd2hpY2ggaW5jbHVkZXMgYWxsIHBvaW50cyBvZiBpdC4gICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19TSEMoIElOU19BUkcgKQorICB7CisgICAgVFRfR2x5cGhab25lUmVjICB6cDsKKyAgICBGVF9VU2hvcnQgICAgICAgIHJlZnA7CisgICAgRlRfRjI2RG90NiAgICAgICBkeCwgZHk7CisKKyAgICBGVF9TaG9ydCAgICAgICAgIGNvbnRvdXIsIGJvdW5kczsKKyAgICBGVF9VU2hvcnQgICAgICAgIHN0YXJ0LCBsaW1pdCwgaTsKKworCisgICAgY29udG91ciA9IChGVF9VU2hvcnQpYXJnc1swXTsKKyAgICBib3VuZHMgID0gKCBDVVIuR1MuZ2VwMiA9PSAwICkgPyAxIDogQ1VSLnpwMi5uX2NvbnRvdXJzOworCisgICAgaWYgKCBCT1VORFMoIGNvbnRvdXIsIGJvdW5kcyApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCBDT01QVVRFX1BvaW50X0Rpc3BsYWNlbWVudCggJmR4LCAmZHksICZ6cCwgJnJlZnAgKSApCisgICAgICByZXR1cm47CisKKyAgICBpZiAoIGNvbnRvdXIgPT0gMCApCisgICAgICBzdGFydCA9IDA7CisgICAgZWxzZQorICAgICAgc3RhcnQgPSAoRlRfVVNob3J0KSggQ1VSLnpwMi5jb250b3Vyc1tjb250b3VyIC0gMV0gKyAxIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi56cDIuZmlyc3RfcG9pbnQgKTsKKworICAgIC8qIHdlIHVzZSB0aGUgbnVtYmVyIG9mIHBvaW50cyBpZiBpbiB0aGUgdHdpbGlnaHQgem9uZSAqLworICAgIGlmICggQ1VSLkdTLmdlcDIgPT0gMCApCisgICAgICBsaW1pdCA9IENVUi56cDIubl9wb2ludHM7CisgICAgZWxzZQorICAgICAgbGltaXQgPSAoRlRfVVNob3J0KSggQ1VSLnpwMi5jb250b3Vyc1tjb250b3VyXSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIuenAyLmZpcnN0X3BvaW50ICsgMSApOworCisgICAgZm9yICggaSA9IHN0YXJ0OyBpIDwgbGltaXQ7IGkrKyApCisgICAgeworICAgICAgaWYgKCB6cC5jdXIgIT0gQ1VSLnpwMi5jdXIgfHwgcmVmcCAhPSBpICkKKyAgICAgICAgTU9WRV9acDJfUG9pbnQoIGksIGR4LCBkeSwgVFJVRSApOworICAgIH0KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTSFpbYV06ICAgICAgIFNIaWZ0IFpvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDM2LTM3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NIWiggSU5TX0FSRyApCisgIHsKKyAgICBUVF9HbHlwaFpvbmVSZWMgIHpwOworICAgIEZUX1VTaG9ydCAgICAgICAgcmVmcDsKKyAgICBGVF9GMjZEb3Q2ICAgICAgIGR4LAorICAgICAgICAgICAgICAgICAgICAgZHk7CisKKyAgICBGVF9VU2hvcnQgICAgICAgIGxpbWl0LCBpOworCisKKyAgICBpZiAoIEJPVU5EUyggYXJnc1swXSwgMiApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCBDT01QVVRFX1BvaW50X0Rpc3BsYWNlbWVudCggJmR4LCAmZHksICZ6cCwgJnJlZnAgKSApCisgICAgICByZXR1cm47CisKKyAgICAvKiBYWFg6IFVORE9DVU1FTlRFRCEgU0haIGRvZXNuJ3QgbW92ZSB0aGUgcGhhbnRvbSBwb2ludHMuICAgICAqLworICAgIC8qICAgICAgVHdpbGlnaHQgem9uZSBoYXMgbm8gcmVhbCBjb250b3Vycywgc28gdXNlIGBuX3BvaW50cycuICovCisgICAgLyogICAgICBOb3JtYWwgem9uZSdzIGBuX3BvaW50cycgaW5jbHVkZXMgcGhhbnRvbXMsIHNvIG11c3QgICAgKi8KKyAgICAvKiAgICAgIHVzZSBlbmQgb2YgbGFzdCBjb250b3VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggQ1VSLkdTLmdlcDIgPT0gMCApCisgICAgICBsaW1pdCA9IChGVF9VU2hvcnQpQ1VSLnpwMi5uX3BvaW50czsKKyAgICBlbHNlIGlmICggQ1VSLkdTLmdlcDIgPT0gMSAmJiBDVVIuenAyLm5fY29udG91cnMgPiAwICkgeworICAgICAgbGltaXQgPSAoRlRfVVNob3J0KSggQ1VSLnpwMi5jb250b3Vyc1tDVVIuenAyLm5fY29udG91cnMgLSAxXSArIDEgKTsKKwkgIGlmIChsaW1pdCA+PSBDVVIuenAyLm5fcG9pbnRzKQkJLyogWFlRIDIwMTAtMTAtMDE6IHNlY3VyaXR5IGZpeDogdmFsaWRhdGUgbGFzdCBwb2ludCBpbmRleCAqLworCQkgIGxpbWl0ID0gQ1VSLnpwMi5uX3BvaW50cyAtIDE7CisJfQorICAgIGVsc2UKKyAgICAgIGxpbWl0ID0gMDsKKworICAgIC8qIFhYWDogVU5ET0NVTUVOVEVEISBTSFogZG9lc24ndCB0b3VjaCB0aGUgcG9pbnRzICovCisgICAgZm9yICggaSA9IDA7IGkgPCBsaW1pdDsgaSsrICkKKyAgICB7CisgICAgICBpZiAoIHpwLmN1ciAhPSBDVVIuenAyLmN1ciB8fCByZWZwICE9IGkgKQorICAgICAgICBNT1ZFX1pwMl9Qb2ludCggaSwgZHgsIGR5LCBGQUxTRSApOworICAgIH0KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTSFBJWFtdOiAgICAgIFNIaWZ0IHBvaW50cyBieSBhIFBJWGVsIGFtb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDM4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgZjI2LjYgdWludDMyLi4uIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX1NIUElYKCBJTlNfQVJHICkKKyAgeworICAgIEZUX0YyNkRvdDYgIGR4LCBkeTsKKyAgICBGVF9VU2hvcnQgICBwb2ludDsKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBGVF9JbnQgICAgICBCMSwgQjI7CisjZW5kaWYKKworCisgICAgaWYgKCBDVVIudG9wIDwgQ1VSLkdTLmxvb3AgKyAxICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICBnb3RvIEZhaWw7CisgICAgfQorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcKKyAgICBpZiAoIENVUi5mYWNlLT51bnBhdGVudGVkX2hpbnRpbmcgKQorICAgIHsKKyAgICAgIGlmICggQ1VSLkdTLmJvdGhfeF9heGlzICkKKyAgICAgIHsKKyAgICAgICAgZHggPSAoRlRfVUludDMyKWFyZ3NbMF07CisgICAgICAgIGR5ID0gMDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZHggPSAwOworICAgICAgICBkeSA9IChGVF9VSW50MzIpYXJnc1swXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgZHggPSBUVF9NdWxGaXgxNCggKEZUX1VJbnQzMilhcmdzWzBdLCBDVVIuR1MuZnJlZVZlY3Rvci54ICk7CisgICAgICBkeSA9IFRUX011bEZpeDE0KCAoRlRfVUludDMyKWFyZ3NbMF0sIENVUi5HUy5mcmVlVmVjdG9yLnkgKTsKKyAgICB9CisKKyAgICB3aGlsZSAoIENVUi5HUy5sb29wID4gMCApCisgICAgeworICAgICAgQ1VSLmFyZ3MtLTsKKworICAgICAgcG9pbnQgPSAoRlRfVVNob3J0KUNVUi5zdGFja1tDVVIuYXJnc107CisKKyAgICAgIGlmICggQk9VTkRTKCBwb2ludCwgQ1VSLnpwMi5uX3BvaW50cyApICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIHsKKyAgICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICAgIHsKKyAgICAgICAgLyogIElmIG5vdCB1c2luZyBpZ25vcmVfeF9tb2RlIHJlbmRlcmluZywgYWxsb3cgWlAyIG1vdmUuICAgICAgICAgICovCisgICAgICAgIC8qICBJZiBpbmxpbmUgZGVsdGFzIGFyZW4ndCBhbGxvd2VkLCBza2lwIFpQMiBtb3ZlLiAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgSWYgdXNpbmcgaWdub3JlX3hfbW9kZSByZW5kZXJpbmcsIGFsbG93IFpQMiBwb2ludCBtb3ZlIGlmOiAgICAgKi8KKyAgICAgICAgLyogICAtIGZyZWVkb20gdmVjdG9yIGlzIHkgYW5kIHNwaF9jb21wYXRpYmlsaXR5X21vZGUgaXMgb2ZmICAgICAgICovCisgICAgICAgIC8qICAgLSB0aGUgZ2x5cGggaXMgY29tcG9zaXRlIGFuZCB0aGUgbW92ZSBpcyBpbiB0aGUgWSBkaXJlY3Rpb24gICAqLworICAgICAgICAvKiAgIC0gdGhlIGdseXBoIGlzIHNwZWNpZmljYWxseSBzZXQgdG8gYWxsb3cgU0hQSVggbW92ZXMgICAgICAgICAgKi8KKyAgICAgICAgLyogICAtIHRoZSBtb3ZlIGlzIG9uIGEgcHJldmlvdXNseSBZLXRvdWNoZWQgcG9pbnQgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgaWYgKCBTVUJQSVhFTF9ISU5USU5HICAmJgorICAgICAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICkKKyAgICAgICAgeworICAgICAgICAgIC8qIHNhdmUgcG9pbnQgZm9yIGxhdGVyIGNvbXBhcmlzb24gKi8KKyAgICAgICAgICBpZiAoIENVUi5HUy5mcmVlVmVjdG9yLnkgIT0gMCApCisgICAgICAgICAgICBCMSA9IENVUi56cDIuY3VyW3BvaW50XS55OworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEIxID0gQ1VSLnpwMi5jdXJbcG9pbnRdLng7CisKKyAgICAgICAgICBpZiAoICFDVVIuZmFjZS0+c3BoX2NvbXBhdGliaWxpdHlfbW9kZSAmJgorICAgICAgICAgICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueSAhPSAwICAgICAgICAgICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBNT1ZFX1pwMl9Qb2ludCggcG9pbnQsIGR4LCBkeSwgVFJVRSApOworCisgICAgICAgICAgICAvKiBzYXZlIG5ldyBwb2ludCAqLworICAgICAgICAgICAgaWYgKCBDVVIuR1MuZnJlZVZlY3Rvci55ICE9IDAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBCMiA9IENVUi56cDIuY3VyW3BvaW50XS55OworCisgICAgICAgICAgICAgIC8qIHJldmVyc2UgYW55IGRpc2FsbG93ZWQgbW92ZXMgKi8KKyAgICAgICAgICAgICAgaWYgKCAoIENVUi5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfU0tJUF9OT05QSVhFTF9ZX01PVkVTICkgJiYKKyAgICAgICAgICAgICAgICAgICAoIEIxICYgNjMgKSAhPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICAgICAoIEIyICYgNjMgKSAhPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICAgICAgQjEgIT0gQjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIE1PVkVfWnAyX1BvaW50KCBwb2ludCwgLWR4LCAtZHksIFRSVUUgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoIENVUi5mYWNlLT5zcGhfY29tcGF0aWJpbGl0eV9tb2RlICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoIENVUi5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfUk9VTkRfTk9OUElYRUxfWV9NT1ZFUyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGR4ID0gRlRfUElYX1JPVU5EKCBCMSArIGR4ICkgLSBCMTsKKyAgICAgICAgICAgICAgZHkgPSBGVF9QSVhfUk9VTkQoIEIxICsgZHkgKSAtIEIxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBza2lwIHBvc3QtaXVwIGRlbHRhcyAqLworICAgICAgICAgICAgaWYgKCBDVVIuaXVwX2NhbGxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAgICggKCBDVVIuc3BoX2luX2Z1bmNfZmxhZ3MgJiBTUEhfRkRFRl9JTkxJTkVfREVMVEFfMSApIHx8CisgICAgICAgICAgICAgICAgICAgKCBDVVIuc3BoX2luX2Z1bmNfZmxhZ3MgJiBTUEhfRkRFRl9JTkxJTkVfREVMVEFfMiApICkgKQorICAgICAgICAgICAgICBnb3RvIFNraXA7CisKKyAgICAgICAgICAgIGlmICggISggQ1VSLnNwaF90d2Vha19mbGFncyAmIFNQSF9UV0VBS19BTFdBWVNfU0tJUF9ERUxUQVAgKSAmJgorICAgICAgICAgICAgICAgICAgKCAoIENVUi5pc19jb21wb3NpdGUgJiYgQ1VSLkdTLmZyZWVWZWN0b3IueSAhPSAwICkgfHwKKyAgICAgICAgICAgICAgICAgICAgKCBDVVIuenAyLnRhZ3NbcG9pbnRdICYgRlRfQ1VSVkVfVEFHX1RPVUNIX1kgKSAgIHx8CisgICAgICAgICAgICAgICAgICAgICggQ1VSLnNwaF90d2Vha19mbGFncyAmIFNQSF9UV0VBS19ET19TSFBJWCApICAgICApICAgKQorICAgICAgICAgICAgICBNT1ZFX1pwMl9Qb2ludCggcG9pbnQsIDAsIGR5LCBUUlVFICk7CisKKyAgICAgICAgICAgIC8qIHNhdmUgbmV3IHBvaW50ICovCisgICAgICAgICAgICBpZiAoIENVUi5HUy5mcmVlVmVjdG9yLnkgIT0gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEIyID0gQ1VSLnpwMi5jdXJbcG9pbnRdLnk7CisKKyAgICAgICAgICAgICAgLyogcmV2ZXJzZSBhbnkgZGlzYWxsb3dlZCBtb3ZlcyAqLworICAgICAgICAgICAgICBpZiAoICggQjEgJiA2MyApID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAoIEIyICYgNjMgKSAhPSAwICYmCisgICAgICAgICAgICAgICAgICAgQjEgIT0gQjIgICAgICAgICApCisgICAgICAgICAgICAgICAgTU9WRV9acDJfUG9pbnQoIHBvaW50LCAwLCAtZHksIFRSVUUgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoIENVUi5zcGhfaW5fZnVuY19mbGFncyAmIFNQSF9GREVGX1RZUEVNQU5fRElBR0VORENUUkwgKQorICAgICAgICAgICAgTU9WRV9acDJfUG9pbnQoIHBvaW50LCBkeCwgZHksIFRSVUUgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgTU9WRV9acDJfUG9pbnQoIHBvaW50LCBkeCwgZHksIFRSVUUgKTsKKyAgICAgIH0KKworICAgIFNraXA6CisKKyNlbHNlIC8qICFUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICAgICAgICBNT1ZFX1pwMl9Qb2ludCggcG9pbnQsIGR4LCBkeSwgVFJVRSApOworCisjZW5kaWYgLyogIVRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisgICAgICBDVVIuR1MubG9vcC0tOworICAgIH0KKworICBGYWlsOgorICAgIENVUi5HUy5sb29wID0gMTsKKyAgICBDVVIubmV3X3RvcCA9IENVUi5hcmdzOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE1TSVJQW2FdOiAgICAgTW92ZSBTdGFjayBJbmRpcmVjdCBSZWxhdGl2ZSBQb3NpdGlvbiAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4M0EtMHgzQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICBmMjYuNiB1aW50MzIgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfTVNJUlAoIElOU19BUkcgKQorICB7CisgICAgRlRfVVNob3J0ICAgcG9pbnQ7CisgICAgRlRfRjI2RG90NiAgZGlzdGFuY2U7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBGVF9GMjZEb3Q2ICBjb250cm9sX3ZhbHVlX2N1dGluID0gMDsgLyogcGFjaWZ5IGNvbXBpbGVyICovCisKKworICAgIGlmICggU1VCUElYRUxfSElOVElORyApCisgICAgeworICAgICAgY29udHJvbF92YWx1ZV9jdXRpbiA9IENVUi5HUy5jb250cm9sX3ZhbHVlX2N1dGluOworCisgICAgICBpZiAoIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueCAhPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAhKCBDVVIuc3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX05PUk1BTF9ST1VORCApICkKKyAgICAgICAgY29udHJvbF92YWx1ZV9jdXRpbiA9IDA7CisgICAgfQorCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICBwb2ludCA9IChGVF9VU2hvcnQpYXJnc1swXTsKKworICAgIGlmICggQk9VTkRTKCBwb2ludCwgICAgICBDVVIuenAxLm5fcG9pbnRzICkgfHwKKyAgICAgICAgIEJPVU5EUyggQ1VSLkdTLnJwMCwgQ1VSLnpwMC5uX3BvaW50cyApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogVU5ET0NVTUVOVEVEISAgVGhlIE1TIHJhc3Rlcml6ZXIgZG9lcyB0aGF0IHdpdGggKi8KKyAgICAvKiB0d2lsaWdodCBwb2ludHMgKGNvbmZpcm1lZCBieSBHcmVnIEhpdGNoY29jaykgICAqLworICAgIGlmICggQ1VSLkdTLmdlcDEgPT0gMCApCisgICAgeworICAgICAgQ1VSLnpwMS5vcmdbcG9pbnRdID0gQ1VSLnpwMC5vcmdbQ1VSLkdTLnJwMF07CisgICAgICBDVVJfRnVuY19tb3ZlX29yaWcoICZDVVIuenAxLCBwb2ludCwgYXJnc1sxXSApOworICAgICAgQ1VSLnpwMS5jdXJbcG9pbnRdID0gQ1VSLnpwMS5vcmdbcG9pbnRdOworICAgIH0KKworICAgIGRpc3RhbmNlID0gQ1VSX0Z1bmNfcHJvamVjdCggQ1VSLnpwMS5jdXIgKyBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi56cDAuY3VyICsgQ1VSLkdTLnJwMCApOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgLyogc3VicGl4ZWwgaGludGluZyAtIG1ha2UgTVNJUlAgcmVzcGVjdCBDVlQgY3V0LWluOyAqLworICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICBDVVIuaWdub3JlX3hfbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5HUy5mcmVlVmVjdG9yLnggIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgRlRfQUJTKCBkaXN0YW5jZSAtIGFyZ3NbMV0gKSA+PSBjb250cm9sX3ZhbHVlX2N1dGluICkKKyAgICAgIGRpc3RhbmNlID0gYXJnc1sxXTsKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICAgIENVUl9GdW5jX21vdmUoICZDVVIuenAxLCBwb2ludCwgYXJnc1sxXSAtIGRpc3RhbmNlICk7CisKKyAgICBDVVIuR1MucnAxID0gQ1VSLkdTLnJwMDsKKyAgICBDVVIuR1MucnAyID0gcG9pbnQ7CisKKyAgICBpZiAoICggQ1VSLm9wY29kZSAmIDEgKSAhPSAwICkKKyAgICAgIENVUi5HUy5ycDAgPSBwb2ludDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBNREFQW2FdOiAgICAgIE1vdmUgRGlyZWN0IEFic29sdXRlIFBvaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDJFLTB4MkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX01EQVAoIElOU19BUkcgKQorICB7CisgICAgRlRfVVNob3J0ICAgcG9pbnQ7CisgICAgRlRfRjI2RG90NiAgY3VyX2Rpc3Q7CisgICAgRlRfRjI2RG90NiAgZGlzdGFuY2U7CisKKworICAgIHBvaW50ID0gKEZUX1VTaG9ydClhcmdzWzBdOworCisgICAgaWYgKCBCT1VORFMoIHBvaW50LCBDVVIuenAwLm5fcG9pbnRzICkgKQorICAgIHsKKyAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoICggQ1VSLm9wY29kZSAmIDEgKSAhPSAwICkKKyAgICB7CisgICAgICBjdXJfZGlzdCA9IENVUl9mYXN0X3Byb2plY3QoICZDVVIuenAwLmN1cltwb2ludF0gKTsKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgICAgICYmCisgICAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAmJgorICAgICAgICAgICBDVVIuR1MuZnJlZVZlY3Rvci54ICE9IDAgKQorICAgICAgICBkaXN0YW5jZSA9IFJPVU5EX05vbmUoCisgICAgICAgICAgICAgICAgICAgICBjdXJfZGlzdCwKKyAgICAgICAgICAgICAgICAgICAgIENVUi50dF9tZXRyaWNzLmNvbXBlbnNhdGlvbnNbMF0gKSAtIGN1cl9kaXN0OworICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGRpc3RhbmNlID0gQ1VSX0Z1bmNfcm91bmQoCisgICAgICAgICAgICAgICAgICAgICBjdXJfZGlzdCwKKyAgICAgICAgICAgICAgICAgICAgIENVUi50dF9tZXRyaWNzLmNvbXBlbnNhdGlvbnNbMF0gKSAtIGN1cl9kaXN0OworICAgIH0KKyAgICBlbHNlCisgICAgICBkaXN0YW5jZSA9IDA7CisKKyAgICBDVVJfRnVuY19tb3ZlKCAmQ1VSLnpwMCwgcG9pbnQsIGRpc3RhbmNlICk7CisKKyAgICBDVVIuR1MucnAwID0gcG9pbnQ7CisgICAgQ1VSLkdTLnJwMSA9IHBvaW50OworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE1JQVBbYV06ICAgICAgTW92ZSBJbmRpcmVjdCBBYnNvbHV0ZSBQb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4M0UtMHgzRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfTUlBUCggSU5TX0FSRyApCisgIHsKKyAgICBGVF9VTG9uZyAgICBjdnRFbnRyeTsKKyAgICBGVF9VU2hvcnQgICBwb2ludDsKKyAgICBGVF9GMjZEb3Q2ICBkaXN0YW5jZTsKKyAgICBGVF9GMjZEb3Q2ICBvcmdfZGlzdDsKKyAgICBGVF9GMjZEb3Q2ICBjb250cm9sX3ZhbHVlX2N1dGluOworCisKKyAgICBjb250cm9sX3ZhbHVlX2N1dGluID0gQ1VSLkdTLmNvbnRyb2xfdmFsdWVfY3V0aW47CisgICAgY3Z0RW50cnkgICAgICAgICAgICA9IChGVF9VTG9uZylhcmdzWzFdOworICAgIHBvaW50ICAgICAgICAgICAgICAgPSAoRlRfVVNob3J0KWFyZ3NbMF07CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5HUy5mcmVlVmVjdG9yLnggIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5HUy5mcmVlVmVjdG9yLnkgPT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICEoIENVUi5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfTk9STUFMX1JPVU5EICkgKQorICAgICAgY29udHJvbF92YWx1ZV9jdXRpbiA9IDA7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICBpZiAoIEJPVU5EUyggcG9pbnQsICAgICBDVVIuenAwLm5fcG9pbnRzICkgfHwKKyAgICAgICAgIEJPVU5EU0woIGN2dEVudHJ5LCBDVVIuY3Z0U2l6ZSApICAgICAgKQorICAgIHsKKyAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICAvKiBVTkRPQ1VNRU5URUQhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBUaGUgYmVoYXZpb3VyIG9mIGFuIE1JQVAgaW5zdHJ1Y3Rpb24gaXMgcXVpdGUgZGlmZmVyZW50IHdoZW4gdXNlZCAgKi8KKyAgICAvKiBpbiB0aGUgdHdpbGlnaHQgem9uZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBGaXJzdCwgbm8gY29udHJvbCB2YWx1ZSBjdXQtaW4gdGVzdCBpcyBwZXJmb3JtZWQgYXMgaXQgd291bGQgZmFpbCAgKi8KKyAgICAvKiBhbnl3YXkuICBTZWNvbmQsIHRoZSBvcmlnaW5hbCBwb2ludCwgaS5lLiAob3JnX3gsb3JnX3kpIG9mICAgICAgICAgKi8KKyAgICAvKiB6cDAucG9pbnQsIGlzIHNldCB0byB0aGUgYWJzb2x1dGUsIHVucm91bmRlZCBkaXN0YW5jZSBmb3VuZCBpbiB0aGUgKi8KKyAgICAvKiBDVlQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBUaGlzIGlzIHVzZWQgaW4gdGhlIENWVCBwcm9ncmFtcyBvZiB0aGUgTWljcm9zb2Z0IGZvbnRzIEFyaWFsLCAgICAgKi8KKyAgICAvKiBUaW1lcywgZXRjLiwgaW4gb3JkZXIgdG8gcmUtYWRqdXN0IHNvbWUga2V5IGZvbnQgaGVpZ2h0cy4gIEl0ICAgICAgKi8KKyAgICAvKiBhbGxvd3MgdGhlIHVzZSBvZiB0aGUgSVAgaW5zdHJ1Y3Rpb24gaW4gdGhlIHR3aWxpZ2h0IHpvbmUsIHdoaWNoICAgKi8KKyAgICAvKiBvdGhlcndpc2Ugd291bGQgYmUgaW52YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24uICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBXZSBpbXBsZW1lbnQgaXQgd2l0aCBhIHNwZWNpYWwgc2VxdWVuY2UgZm9yIHRoZSB0d2lsaWdodCB6b25lLiAgICAgKi8KKyAgICAvKiBUaGlzIGlzIGEgYmFkIGhhY2ssIGJ1dCBpdCBzZWVtcyB0byB3b3JrLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBDb25maXJtZWQgYnkgR3JlZyBIaXRjaGNvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIGRpc3RhbmNlID0gQ1VSX0Z1bmNfcmVhZF9jdnQoIGN2dEVudHJ5ICk7CisKKyAgICBpZiAoIENVUi5HUy5nZXAwID09IDAgKSAgIC8qIElmIGluIHR3aWxpZ2h0IHpvbmUgKi8KKyAgICB7CisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgICAvKiBPbmx5IGFkanVzdCBpZiBub3QgaW4gc3BoX2NvbXBhdGliaWxpdHlfbW9kZSBvciBpZ25vcmVfeF9tb2RlLiAqLworICAgICAgLyogRGV0ZXJtaW5lZCB2aWEgZXhwZXJpbWVudGF0aW9uIGFuZCBtYXkgYmUgaW5jb3JyZWN0Li4uICAgICAgICAgKi8KKyAgICAgIGlmICggIVNVQlBJWEVMX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAoICFDVVIuaWdub3JlX3hfbW9kZSAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICFDVVIuZmFjZS0+c3BoX2NvbXBhdGliaWxpdHlfbW9kZSApICkKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKyAgICAgICAgQ1VSLnpwMC5vcmdbcG9pbnRdLnggPSBUVF9NdWxGaXgxNCggKEZUX1VJbnQzMilkaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueCApOworICAgICAgQ1VSLnpwMC5vcmdbcG9pbnRdLnkgPSBUVF9NdWxGaXgxNCggKEZUX1VJbnQzMilkaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi5HUy5mcmVlVmVjdG9yLnkgKSwKKyAgICAgIENVUi56cDAuY3VyW3BvaW50XSAgID0gQ1VSLnpwMC5vcmdbcG9pbnRdOworICAgIH0KKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgQ1VSLmlnbm9yZV94X21vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAoIENVUi5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfTUlBUF9IQUNLICkgJiYKKyAgICAgICAgIGRpc3RhbmNlID4gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueSAhPSAwICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgIGRpc3RhbmNlID0gMDsKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICAgIG9yZ19kaXN0ID0gQ1VSX2Zhc3RfcHJvamVjdCggJkNVUi56cDAuY3VyW3BvaW50XSApOworCisgICAgaWYgKCAoIENVUi5vcGNvZGUgJiAxICkgIT0gMCApICAgLyogcm91bmRpbmcgYW5kIGNvbnRyb2wgY3V0LWluIGZsYWcgKi8KKyAgICB7CisgICAgICBpZiAoIEZUX0FCUyggZGlzdGFuY2UgLSBvcmdfZGlzdCApID4gY29udHJvbF92YWx1ZV9jdXRpbiApCisgICAgICAgIGRpc3RhbmNlID0gb3JnX2Rpc3Q7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgICAgICYmCisgICAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAmJgorICAgICAgICAgICBDVVIuR1MuZnJlZVZlY3Rvci54ICE9IDAgKQorICAgICAgICBkaXN0YW5jZSA9IFJPVU5EX05vbmUoIGRpc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi50dF9tZXRyaWNzLmNvbXBlbnNhdGlvbnNbMF0gKTsKKyAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBkaXN0YW5jZSA9IENVUl9GdW5jX3JvdW5kKCBkaXN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLnR0X21ldHJpY3MuY29tcGVuc2F0aW9uc1swXSApOworICAgIH0KKworICAgIENVUl9GdW5jX21vdmUoICZDVVIuenAwLCBwb2ludCwgZGlzdGFuY2UgLSBvcmdfZGlzdCApOworCisgIEZhaWw6CisgICAgQ1VSLkdTLnJwMCA9IHBvaW50OworICAgIENVUi5HUy5ycDEgPSBwb2ludDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBNRFJQW2FiY2RlXTogIE1vdmUgRGlyZWN0IFJlbGF0aXZlIFBvaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweEMwLTB4REYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX01EUlAoIElOU19BUkcgKQorICB7CisgICAgRlRfVVNob3J0ICAgcG9pbnQ7CisgICAgRlRfRjI2RG90NiAgb3JnX2Rpc3QsIGRpc3RhbmNlLCBtaW5pbXVtX2Rpc3RhbmNlOworCisKKyAgICBtaW5pbXVtX2Rpc3RhbmNlID0gQ1VSLkdTLm1pbmltdW1fZGlzdGFuY2U7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5HUy5mcmVlVmVjdG9yLnggIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICEoIENVUi5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfTk9STUFMX1JPVU5EICkgKQorICAgICAgbWluaW11bV9kaXN0YW5jZSA9IDA7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICBwb2ludCA9IChGVF9VU2hvcnQpYXJnc1swXTsKKworICAgIGlmICggQk9VTkRTKCBwb2ludCwgICAgICBDVVIuenAxLm5fcG9pbnRzICkgfHwKKyAgICAgICAgIEJPVU5EUyggQ1VSLkdTLnJwMCwgQ1VSLnpwMC5uX3BvaW50cyApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICBnb3RvIEZhaWw7CisgICAgfQorCisgICAgLyogWFhYOiBJcyB0aGVyZSBzb21lIHVuZG9jdW1lbnRlZCBmZWF0dXJlIHdoaWxlIGluIHRoZSAqLworICAgIC8qICAgICAgdHdpbGlnaHQgem9uZT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIC8qIFhYWDogVU5ET0NVTUVOVEVEOiB0d2lsaWdodCB6b25lIHNwZWNpYWwgY2FzZSAqLworCisgICAgaWYgKCBDVVIuR1MuZ2VwMCA9PSAwIHx8IENVUi5HUy5nZXAxID09IDAgKQorICAgIHsKKyAgICAgIEZUX1ZlY3RvciogIHZlYzEgPSAmQ1VSLnpwMS5vcmdbcG9pbnRdOworICAgICAgRlRfVmVjdG9yKiAgdmVjMiA9ICZDVVIuenAwLm9yZ1tDVVIuR1MucnAwXTsKKworCisgICAgICBvcmdfZGlzdCA9IENVUl9GdW5jX2R1YWxwcm9qKCB2ZWMxLCB2ZWMyICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBGVF9WZWN0b3IqICB2ZWMxID0gJkNVUi56cDEub3J1c1twb2ludF07CisgICAgICBGVF9WZWN0b3IqICB2ZWMyID0gJkNVUi56cDAub3J1c1tDVVIuR1MucnAwXTsKKworCisgICAgICBpZiAoIENVUi5tZXRyaWNzLnhfc2NhbGUgPT0gQ1VSLm1ldHJpY3MueV9zY2FsZSApCisgICAgICB7CisgICAgICAgIC8qIHRoaXMgc2hvdWxkIGJlIGZhc3RlciAqLworICAgICAgICBvcmdfZGlzdCA9IENVUl9GdW5jX2R1YWxwcm9qKCB2ZWMxLCB2ZWMyICk7CisgICAgICAgIG9yZ19kaXN0ID0gRlRfTXVsRml4KCBvcmdfZGlzdCwgQ1VSLm1ldHJpY3MueF9zY2FsZSApOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBGVF9WZWN0b3IgIHZlYzsKKworCisgICAgICAgIHZlYy54ID0gRlRfTXVsRml4KCB2ZWMxLT54IC0gdmVjMi0+eCwgQ1VSLm1ldHJpY3MueF9zY2FsZSApOworICAgICAgICB2ZWMueSA9IEZUX011bEZpeCggdmVjMS0+eSAtIHZlYzItPnksIENVUi5tZXRyaWNzLnlfc2NhbGUgKTsKKworICAgICAgICBvcmdfZGlzdCA9IENVUl9mYXN0X2R1YWxwcm9qKCAmdmVjICk7CisgICAgICB9CisgICAgfQorCisgICAgLyogc2luZ2xlIHdpZHRoIGN1dC1pbiB0ZXN0ICovCisKKyAgICBpZiAoIEZUX0FCUyggb3JnX2Rpc3QgLSBDVVIuR1Muc2luZ2xlX3dpZHRoX3ZhbHVlICkgPAorICAgICAgICAgQ1VSLkdTLnNpbmdsZV93aWR0aF9jdXRpbiApCisgICAgeworICAgICAgaWYgKCBvcmdfZGlzdCA+PSAwICkKKyAgICAgICAgb3JnX2Rpc3QgPSBDVVIuR1Muc2luZ2xlX3dpZHRoX3ZhbHVlOworICAgICAgZWxzZQorICAgICAgICBvcmdfZGlzdCA9IC1DVVIuR1Muc2luZ2xlX3dpZHRoX3ZhbHVlOworICAgIH0KKworICAgIC8qIHJvdW5kIGZsYWcgKi8KKworICAgIGlmICggKCBDVVIub3Bjb2RlICYgNCApICE9IDAgKQorICAgIHsKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgICAgICYmCisgICAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAmJgorICAgICAgICAgICBDVVIuR1MuZnJlZVZlY3Rvci54ICE9IDAgKQorICAgICAgICBkaXN0YW5jZSA9IFJPVU5EX05vbmUoCisgICAgICAgICAgICAgICAgICAgICBvcmdfZGlzdCwKKyAgICAgICAgICAgICAgICAgICAgIENVUi50dF9tZXRyaWNzLmNvbXBlbnNhdGlvbnNbQ1VSLm9wY29kZSAmIDNdICk7CisgICAgICBlbHNlCisjZW5kaWYKKyAgICAgIGRpc3RhbmNlID0gQ1VSX0Z1bmNfcm91bmQoCisgICAgICAgICAgICAgICAgICAgb3JnX2Rpc3QsCisgICAgICAgICAgICAgICAgICAgQ1VSLnR0X21ldHJpY3MuY29tcGVuc2F0aW9uc1tDVVIub3Bjb2RlICYgM10gKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgZGlzdGFuY2UgPSBST1VORF9Ob25lKAorICAgICAgICAgICAgICAgICAgIG9yZ19kaXN0LAorICAgICAgICAgICAgICAgICAgIENVUi50dF9tZXRyaWNzLmNvbXBlbnNhdGlvbnNbQ1VSLm9wY29kZSAmIDNdICk7CisKKyAgICAvKiBtaW5pbXVtIGRpc3RhbmNlIGZsYWcgKi8KKworICAgIGlmICggKCBDVVIub3Bjb2RlICYgOCApICE9IDAgKQorICAgIHsKKyAgICAgIGlmICggb3JnX2Rpc3QgPj0gMCApCisgICAgICB7CisgICAgICAgIGlmICggZGlzdGFuY2UgPCBtaW5pbXVtX2Rpc3RhbmNlICkKKyAgICAgICAgICBkaXN0YW5jZSA9IG1pbmltdW1fZGlzdGFuY2U7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGlmICggZGlzdGFuY2UgPiAtbWluaW11bV9kaXN0YW5jZSApCisgICAgICAgICAgZGlzdGFuY2UgPSAtbWluaW11bV9kaXN0YW5jZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBub3cgbW92ZSB0aGUgcG9pbnQgKi8KKworICAgIG9yZ19kaXN0ID0gQ1VSX0Z1bmNfcHJvamVjdCggQ1VSLnpwMS5jdXIgKyBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi56cDAuY3VyICsgQ1VSLkdTLnJwMCApOworCisgICAgQ1VSX0Z1bmNfbW92ZSggJkNVUi56cDEsIHBvaW50LCBkaXN0YW5jZSAtIG9yZ19kaXN0ICk7CisKKyAgRmFpbDoKKyAgICBDVVIuR1MucnAxID0gQ1VSLkdTLnJwMDsKKyAgICBDVVIuR1MucnAyID0gcG9pbnQ7CisKKyAgICBpZiAoICggQ1VSLm9wY29kZSAmIDE2ICkgIT0gMCApCisgICAgICBDVVIuR1MucnAwID0gcG9pbnQ7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTUlSUFthYmNkZV06ICBNb3ZlIEluZGlyZWN0IFJlbGF0aXZlIFBvaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHhFMC0weEZGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIGludDMyPyB1aW50MzIgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19NSVJQKCBJTlNfQVJHICkKKyAgeworICAgIEZUX1VTaG9ydCAgIHBvaW50OworICAgIEZUX1VMb25nICAgIGN2dEVudHJ5OworCisgICAgRlRfRjI2RG90NiAgY3Z0X2Rpc3QsCisgICAgICAgICAgICAgICAgZGlzdGFuY2UsCisgICAgICAgICAgICAgICAgY3VyX2Rpc3QsCisgICAgICAgICAgICAgICAgb3JnX2Rpc3QsCisgICAgICAgICAgICAgICAgY29udHJvbF92YWx1ZV9jdXRpbiwKKyAgICAgICAgICAgICAgICBtaW5pbXVtX2Rpc3RhbmNlOworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgIEZUX0ludCAgICAgIEIxICAgICAgICAgICA9IDA7IC8qIHBhY2lmeSBjb21waWxlciAqLworICAgIEZUX0ludCAgICAgIEIyICAgICAgICAgICA9IDA7CisgICAgRlRfQm9vbCAgICAgcmV2ZXJzZV9tb3ZlID0gRkFMU0U7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKworICAgIG1pbmltdW1fZGlzdGFuY2UgICAgPSBDVVIuR1MubWluaW11bV9kaXN0YW5jZTsKKyAgICBjb250cm9sX3ZhbHVlX2N1dGluID0gQ1VSLkdTLmNvbnRyb2xfdmFsdWVfY3V0aW47CisgICAgcG9pbnQgICAgICAgICAgICAgICA9IChGVF9VU2hvcnQpYXJnc1swXTsKKyAgICBjdnRFbnRyeSAgICAgICAgICAgID0gKEZUX1VMb25nKSggYXJnc1sxXSArIDEgKTsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgQ1VSLmlnbm9yZV94X21vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueCAhPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgISggQ1VSLnNwaF90d2Vha19mbGFncyAmIFNQSF9UV0VBS19OT1JNQUxfUk9VTkQgKSApCisgICAgICBjb250cm9sX3ZhbHVlX2N1dGluID0gbWluaW11bV9kaXN0YW5jZSA9IDA7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICAvKiBYWFg6IFVORE9DVU1FTlRFRCEgY3Z0Wy0xXSA9IDAgYWx3YXlzICovCisJLyogU2VjdXJpdHkgZml4OiBHb29nbGUgMDdfb29icmVhZDQucGRmIHBhZ2UgIzEsIGN2dEVudHJ5ID4gQ1VSLmN2dFNpemUgKyAxIHdpbGwgY2F1c2UgYXJyYXkgaW5kZXggb29iLiAqLworICAgIGlmICggQk9VTkRTKCBwb2ludCwgICAgICBDVVIuenAxLm5fcG9pbnRzICkgfHwKKyAgICAgICAgIEJPVU5EUyggY3Z0RW50cnksICBDVVIuY3Z0U2l6ZSArIDEgKSAgfHwKKyAgICAgICAgIEJPVU5EUyggQ1VSLkdTLnJwMCwgQ1VSLnpwMC5uX3BvaW50cyApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICBnb3RvIEZhaWw7CisgICAgfQorCisgICAgaWYgKCAhY3Z0RW50cnkgKQorICAgICAgY3Z0X2Rpc3QgPSAwOworICAgIGVsc2UKKyAgICAgIGN2dF9kaXN0ID0gQ1VSX0Z1bmNfcmVhZF9jdnQoIGN2dEVudHJ5IC0gMSApOworCisgICAgLyogc2luZ2xlIHdpZHRoIHRlc3QgKi8KKworICAgIGlmICggRlRfQUJTKCBjdnRfZGlzdCAtIENVUi5HUy5zaW5nbGVfd2lkdGhfdmFsdWUgKSA8CisgICAgICAgICBDVVIuR1Muc2luZ2xlX3dpZHRoX2N1dGluICkKKyAgICB7CisgICAgICBpZiAoIGN2dF9kaXN0ID49IDAgKQorICAgICAgICBjdnRfZGlzdCA9ICBDVVIuR1Muc2luZ2xlX3dpZHRoX3ZhbHVlOworICAgICAgZWxzZQorICAgICAgICBjdnRfZGlzdCA9IC1DVVIuR1Muc2luZ2xlX3dpZHRoX3ZhbHVlOworICAgIH0KKworICAgIC8qIFVORE9DVU1FTlRFRCEgIFRoZSBNUyByYXN0ZXJpemVyIGRvZXMgdGhhdCB3aXRoICovCisgICAgLyogdHdpbGlnaHQgcG9pbnRzIChjb25maXJtZWQgYnkgR3JlZyBIaXRjaGNvY2spICAgKi8KKyAgICBpZiAoIENVUi5HUy5nZXAxID09IDAgKQorICAgIHsKKyAgICAgIENVUi56cDEub3JnW3BvaW50XS54ID0gQ1VSLnpwMC5vcmdbQ1VSLkdTLnJwMF0ueCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUX011bEZpeDE0KCAoRlRfVUludDMyKWN2dF9kaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueCApOworICAgICAgQ1VSLnpwMS5vcmdbcG9pbnRdLnkgPSBDVVIuenAwLm9yZ1tDVVIuR1MucnAwXS55ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRfTXVsRml4MTQoIChGVF9VSW50MzIpY3Z0X2Rpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIuR1MuZnJlZVZlY3Rvci55ICk7CisgICAgICBDVVIuenAxLmN1cltwb2ludF0gICA9IENVUi56cDEub3JnW3BvaW50XTsKKyAgICB9CisKKyAgICBvcmdfZGlzdCA9IENVUl9GdW5jX2R1YWxwcm9qKCAmQ1VSLnpwMS5vcmdbcG9pbnRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDVVIuenAwLm9yZ1tDVVIuR1MucnAwXSApOworICAgIGN1cl9kaXN0ID0gQ1VSX0Z1bmNfcHJvamVjdCAoICZDVVIuenAxLmN1cltwb2ludF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNVUi56cDAuY3VyW0NVUi5HUy5ycDBdICk7CisKKyAgICAvKiBhdXRvLWZsaXAgdGVzdCAqLworCisgICAgaWYgKCBDVVIuR1MuYXV0b19mbGlwICkKKyAgICB7CisgICAgICBpZiAoICggb3JnX2Rpc3QgXiBjdnRfZGlzdCApIDwgMCApCisgICAgICAgIGN2dF9kaXN0ID0gLWN2dF9kaXN0OworICAgIH0KKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICBDVVIuR1MuZnJlZVZlY3Rvci55ICE9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgKCBDVVIuc3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX1RJTUVTX05FV19ST01BTl9IQUNLICkgKQorICAgIHsKKyAgICAgIGlmICggY3VyX2Rpc3QgPCAtNjQgKQorICAgICAgICBjdnRfZGlzdCAtPSAxNjsKKyAgICAgIGVsc2UgaWYgKCBjdXJfZGlzdCA+IDY0ICYmIGN1cl9kaXN0IDwgODQgKQorICAgICAgICBjdnRfZGlzdCArPSAzMjsKKyAgICB9CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICAvKiBjb250cm9sIHZhbHVlIGN1dC1pbiBhbmQgcm91bmQgKi8KKworICAgIGlmICggKCBDVVIub3Bjb2RlICYgNCApICE9IDAgKQorICAgIHsKKyAgICAgIC8qIFhYWDogVU5ET0NVTUVOVEVEISAgT25seSBwZXJmb3JtIGN1dC1pbiB0ZXN0IHdoZW4gYm90aCBwb2ludHMgKi8KKyAgICAgIC8qICAgICAgcmVmZXIgdG8gdGhlIHNhbWUgem9uZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgaWYgKCBDVVIuR1MuZ2VwMCA9PSBDVVIuR1MuZ2VwMSApCisgICAgICB7CisgICAgICAgIC8qIFhYWDogQWNjb3JkaW5nIHRvIEdyZWcgSGl0Y2hjb2NrLCB0aGUgZm9sbG93aW5nIHdvcmRpbmcgaXMgKi8KKyAgICAgICAgLyogICAgICB0aGUgcmlnaHQgb25lOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qICAgICAgICBXaGVuIHRoZSBhYnNvbHV0ZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHZhbHVlIGluICAgKi8KKyAgICAgICAgLyogICAgICAgIHRoZSB0YWJsZSBbQ1ZUXSBhbmQgdGhlIG1lYXN1cmVtZW50IGRpcmVjdGx5IGZyb20gICAqLworICAgICAgICAvKiAgICAgICAgdGhlIG91dGxpbmUgaXMgX2dyZWF0ZXJfIHRoYW4gdGhlIGN1dF9pbiB2YWx1ZSwgdGhlICovCisgICAgICAgIC8qICAgICAgICBvdXRsaW5lIG1lYXN1cmVtZW50IGlzIHVzZWQuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgIFRoaXMgaXMgZnJvbSBgaW5zdGdseS5kb2MnLiAgVGhlIGRlc2NyaXB0aW9uIGluICAgICAgICovCisgICAgICAgIC8qICAgICAgYHR0aW5zdDIuZG9jJywgdmVyc2lvbiAxLjY2LCBpcyB0aHVzIGluY29ycmVjdCBzaW5jZSAgKi8KKyAgICAgICAgLyogICAgICBpdCBpbXBsaWVzIGA+PScgaW5zdGVhZCBvZiBgPicuICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgIGlmICggRlRfQUJTKCBjdnRfZGlzdCAtIG9yZ19kaXN0ICkgPiBjb250cm9sX3ZhbHVlX2N1dGluICkKKyAgICAgICAgICBjdnRfZGlzdCA9IG9yZ19kaXN0OworICAgICAgfQorCisgICAgICBkaXN0YW5jZSA9IENVUl9GdW5jX3JvdW5kKAorICAgICAgICAgICAgICAgICAgIGN2dF9kaXN0LAorICAgICAgICAgICAgICAgICAgIENVUi50dF9tZXRyaWNzLmNvbXBlbnNhdGlvbnNbQ1VSLm9wY29kZSAmIDNdICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICAgIC8qIGRvIGN2dCBjdXQtaW4gYWx3YXlzIGluIE1JUlAgZm9yIHNwaCAqLworICAgICAgaWYgKCBTVUJQSVhFTF9ISU5USU5HICAgICAgICAgICAmJgorICAgICAgICAgICBDVVIuaWdub3JlX3hfbW9kZSAgICAgICAgICAmJgorICAgICAgICAgICBDVVIuR1MuZ2VwMCA9PSBDVVIuR1MuZ2VwMSApCisgICAgICB7CisgICAgICAgIGlmICggRlRfQUJTKCBjdnRfZGlzdCAtIG9yZ19kaXN0ICkgPiBjb250cm9sX3ZhbHVlX2N1dGluICkKKyAgICAgICAgICBjdnRfZGlzdCA9IG9yZ19kaXN0OworICAgICAgfQorI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisgICAgICBkaXN0YW5jZSA9IFJPVU5EX05vbmUoCisgICAgICAgICAgICAgICAgICAgY3Z0X2Rpc3QsCisgICAgICAgICAgICAgICAgICAgQ1VSLnR0X21ldHJpY3MuY29tcGVuc2F0aW9uc1tDVVIub3Bjb2RlICYgM10gKTsKKyAgICB9CisKKyAgICAvKiBtaW5pbXVtIGRpc3RhbmNlIHRlc3QgKi8KKworICAgIGlmICggKCBDVVIub3Bjb2RlICYgOCApICE9IDAgKQorICAgIHsKKyAgICAgIGlmICggb3JnX2Rpc3QgPj0gMCApCisgICAgICB7CisgICAgICAgIGlmICggZGlzdGFuY2UgPCBtaW5pbXVtX2Rpc3RhbmNlICkKKyAgICAgICAgICBkaXN0YW5jZSA9IG1pbmltdW1fZGlzdGFuY2U7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGlmICggZGlzdGFuY2UgPiAtbWluaW11bV9kaXN0YW5jZSApCisgICAgICAgICAgZGlzdGFuY2UgPSAtbWluaW11bV9kaXN0YW5jZTsKKyAgICAgIH0KKyAgICB9CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkcgKQorICAgIHsKKyAgICAgIEIxID0gQ1VSLnpwMS5jdXJbcG9pbnRdLnk7CisKKyAgICAgIC8qIFJvdW5kIG1vdmVzIGlmIG5lY2Vzc2FyeSAqLworICAgICAgaWYgKCBDVVIuaWdub3JlX3hfbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIENVUi5HUy5mcmVlVmVjdG9yLnkgIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgKCBDVVIuc3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX1JPVU5EX05PTlBJWEVMX1lfTU9WRVMgKSApCisgICAgICAgIGRpc3RhbmNlID0gRlRfUElYX1JPVU5EKCBCMSArIGRpc3RhbmNlIC0gY3VyX2Rpc3QgKSAtIEIxICsgY3VyX2Rpc3Q7CisKKyAgICAgIGlmICggQ1VSLmlnbm9yZV94X21vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIENVUi5HUy5mcmVlVmVjdG9yLnkgIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAoIENVUi5vcGNvZGUgJiAxNiApID09IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgKCBDVVIub3Bjb2RlICYgOCApID09IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICggQ1VSLnNwaF90d2Vha19mbGFncyAmIFNQSF9UV0VBS19DT1VSSUVSX05FV18yX0hBQ0sgKSApCisgICAgICAgIGRpc3RhbmNlICs9IDY0OworICAgIH0KKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICAgIENVUl9GdW5jX21vdmUoICZDVVIuenAxLCBwb2ludCwgZGlzdGFuY2UgLSBjdXJfZGlzdCApOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgaWYgKCBTVUJQSVhFTF9ISU5USU5HICkKKyAgICB7CisgICAgICBCMiA9IENVUi56cDEuY3VyW3BvaW50XS55OworCisgICAgICAvKiBSZXZlcnNlIG1vdmUgaWYgbmVjZXNzYXJ5ICovCisgICAgICBpZiAoIENVUi5pZ25vcmVfeF9tb2RlICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBDVVIuZmFjZS0+c3BoX2NvbXBhdGliaWxpdHlfbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICBDVVIuR1MuZnJlZVZlY3Rvci55ICE9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAoIEIxICYgNjMgKSA9PSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAoIEIyICYgNjMgKSAhPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgIHJldmVyc2VfbW92ZSA9IFRSVUU7CisKKyAgICAgICAgaWYgKCAoIENVUi5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfU0tJUF9OT05QSVhFTF9ZX01PVkVTICkgJiYKKyAgICAgICAgICAgICBDVVIuR1MuZnJlZVZlY3Rvci55ICE9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAoIEIyICYgNjMgKSAhPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAoIEIxICYgNjMgKSAhPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgIHJldmVyc2VfbW92ZSA9IFRSVUU7CisgICAgICB9CisKKyAgICAgIGlmICggcmV2ZXJzZV9tb3ZlICkKKyAgICAgICAgQ1VSX0Z1bmNfbW92ZSggJkNVUi56cDEsIHBvaW50LCAtKCBkaXN0YW5jZSAtIGN1cl9kaXN0ICkgKTsKKyAgICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICBGYWlsOgorICAgIENVUi5HUy5ycDEgPSBDVVIuR1MucnAwOworCisgICAgaWYgKCAoIENVUi5vcGNvZGUgJiAxNiApICE9IDAgKQorICAgICAgQ1VSLkdTLnJwMCA9IHBvaW50OworCisgICAgQ1VSLkdTLnJwMiA9IHBvaW50OworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEFMSUdOUlBbXTogICAgQUxJR04gUmVsYXRpdmUgUG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4M0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIgdWludDMyLi4uIC0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBzdGF0aWMgdm9pZAorICBJbnNfQUxJR05SUCggSU5TX0FSRyApCisgIHsKKyAgICBGVF9VU2hvcnQgICBwb2ludDsKKyAgICBGVF9GMjZEb3Q2ICBkaXN0YW5jZTsKKworICAgIEZUX1VOVVNFRF9BUkc7CisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICBDVVIuaXVwX2NhbGxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgKCBDVVIuc3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX05PX0FMSUdOUlBfQUZURVJfSVVQICkgKQorICAgIHsKKyAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgICAgZ290byBGYWlsOworICAgIH0KKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICAgIGlmICggQ1VSLnRvcCA8IENVUi5HUy5sb29wIHx8CisgICAgICAgICBCT1VORFMoIENVUi5HUy5ycDAsIENVUi56cDAubl9wb2ludHMgKSApCisgICAgeworICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgICAgZ290byBGYWlsOworICAgIH0KKworICAgIHdoaWxlICggQ1VSLkdTLmxvb3AgPiAwICkKKyAgICB7CisgICAgICBDVVIuYXJncy0tOworCisgICAgICBwb2ludCA9IChGVF9VU2hvcnQpQ1VSLnN0YWNrW0NVUi5hcmdzXTsKKworICAgICAgaWYgKCBCT1VORFMoIHBvaW50LCBDVVIuenAxLm5fcG9pbnRzICkgKQorICAgICAgeworICAgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgeworICAgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1JlZmVyZW5jZSApOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBkaXN0YW5jZSA9IENVUl9GdW5jX3Byb2plY3QoIENVUi56cDEuY3VyICsgcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLnpwMC5jdXIgKyBDVVIuR1MucnAwICk7CisKKyAgICAgICAgQ1VSX0Z1bmNfbW92ZSggJkNVUi56cDEsIHBvaW50LCAtZGlzdGFuY2UgKTsKKyAgICAgIH0KKworICAgICAgQ1VSLkdTLmxvb3AtLTsKKyAgICB9CisKKyAgRmFpbDoKKyAgICBDVVIuR1MubG9vcCA9IDE7CisgICAgQ1VSLm5ld190b3AgPSBDVVIuYXJnczsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJU0VDVFtdOiAgICAgIG1vdmVzIHBvaW50IHRvIEludGVyU0VDVGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDBGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgNSAqIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0lTRUNUKCBJTlNfQVJHICkKKyAgeworICAgIEZUX1VTaG9ydCAgIHBvaW50LAorICAgICAgICAgICAgICAgIGEwLCBhMSwKKyAgICAgICAgICAgICAgICBiMCwgYjE7CisKKyAgICBGVF9GMjZEb3Q2ICBkaXNjcmltaW5hbnQsIGRvdHByb2R1Y3Q7CisKKyAgICBGVF9GMjZEb3Q2ICBkeCwgIGR5LAorICAgICAgICAgICAgICAgIGRheCwgZGF5LAorICAgICAgICAgICAgICAgIGRieCwgZGJ5OworCisgICAgRlRfRjI2RG90NiAgdmFsOworCisgICAgRlRfVmVjdG9yICAgUjsKKworCisgICAgcG9pbnQgPSAoRlRfVVNob3J0KWFyZ3NbMF07CisKKyAgICBhMCA9IChGVF9VU2hvcnQpYXJnc1sxXTsKKyAgICBhMSA9IChGVF9VU2hvcnQpYXJnc1syXTsKKyAgICBiMCA9IChGVF9VU2hvcnQpYXJnc1szXTsKKyAgICBiMSA9IChGVF9VU2hvcnQpYXJnc1s0XTsKKworICAgIGlmICggQk9VTkRTKCBiMCwgQ1VSLnpwMC5uX3BvaW50cyApICB8fAorICAgICAgICAgQk9VTkRTKCBiMSwgQ1VSLnpwMC5uX3BvaW50cyApICB8fAorICAgICAgICAgQk9VTkRTKCBhMCwgQ1VSLnpwMS5uX3BvaW50cyApICB8fAorICAgICAgICAgQk9VTkRTKCBhMSwgQ1VSLnpwMS5uX3BvaW50cyApICB8fAorICAgICAgICAgQk9VTkRTKCBwb2ludCwgQ1VSLnpwMi5uX3BvaW50cyApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogQ3JhbWVyJ3MgcnVsZSAqLworCisgICAgZGJ4ID0gQ1VSLnpwMC5jdXJbYjFdLnggLSBDVVIuenAwLmN1cltiMF0ueDsKKyAgICBkYnkgPSBDVVIuenAwLmN1cltiMV0ueSAtIENVUi56cDAuY3VyW2IwXS55OworCisgICAgZGF4ID0gQ1VSLnpwMS5jdXJbYTFdLnggLSBDVVIuenAxLmN1clthMF0ueDsKKyAgICBkYXkgPSBDVVIuenAxLmN1clthMV0ueSAtIENVUi56cDEuY3VyW2EwXS55OworCisgICAgZHggPSBDVVIuenAwLmN1cltiMF0ueCAtIENVUi56cDEuY3VyW2EwXS54OworICAgIGR5ID0gQ1VSLnpwMC5jdXJbYjBdLnkgLSBDVVIuenAxLmN1clthMF0ueTsKKworICAgIENVUi56cDIudGFnc1twb2ludF0gfD0gRlRfQ1VSVkVfVEFHX1RPVUNIX0JPVEg7CisKKyAgICBkaXNjcmltaW5hbnQgPSBGVF9NdWxEaXYoIGRheCwgLWRieSwgMHg0MCApICsKKyAgICAgICAgICAgICAgICAgICBGVF9NdWxEaXYoIGRheSwgZGJ4LCAweDQwICk7CisgICAgZG90cHJvZHVjdCAgID0gRlRfTXVsRGl2KCBkYXgsIGRieCwgMHg0MCApICsKKyAgICAgICAgICAgICAgICAgICBGVF9NdWxEaXYoIGRheSwgZGJ5LCAweDQwICk7CisKKyAgICAvKiBUaGUgZGlzY3JpbWluYW50IGFib3ZlIGlzIGFjdHVhbGx5IGEgY3Jvc3MgcHJvZHVjdCBvZiB2ZWN0b3JzICAgICAqLworICAgIC8qIGRhIGFuZCBkYi4gVG9nZXRoZXIgd2l0aCB0aGUgZG90IHByb2R1Y3QsIHRoZXkgY2FuIGJlIHVzZWQgYXMgICAgICovCisgICAgLyogc3Vycm9nYXRlcyBmb3Igc2luZSBhbmQgY29zaW5lIG9mIHRoZSBhbmdsZSBiZXR3ZWVuIHRoZSB2ZWN0b3JzLiAgKi8KKyAgICAvKiBJbmRlZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgIGRvdHByb2R1Y3QgICA9IHxkYXx8ZGJ8Y29zKGFuZ2xlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgZGlzY3JpbWluYW50ID0gfGRhfHxkYnxzaW4oYW5nbGUpICAgICAuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBXZSB1c2UgdGhlc2UgZXF1YXRpb25zIHRvIHJlamVjdCBncmF6aW5nIGludGVyc2VjdGlvbnMgYnkgICAgICAgICAqLworICAgIC8qIHRocmVzaG9sZGluZyBhYnModGFuKGFuZ2xlKSkgYXQgMS8xOSwgY29ycmVzcG9uZGluZyB0byAzIGRlZ3JlZXMuICovCisgICAgaWYgKCAxOSAqIEZUX0FCUyggZGlzY3JpbWluYW50ICkgPiBGVF9BQlMoIGRvdHByb2R1Y3QgKSApCisgICAgeworICAgICAgdmFsID0gRlRfTXVsRGl2KCBkeCwgLWRieSwgMHg0MCApICsgRlRfTXVsRGl2KCBkeSwgZGJ4LCAweDQwICk7CisKKyAgICAgIFIueCA9IEZUX011bERpdiggdmFsLCBkYXgsIGRpc2NyaW1pbmFudCApOworICAgICAgUi55ID0gRlRfTXVsRGl2KCB2YWwsIGRheSwgZGlzY3JpbWluYW50ICk7CisKKyAgICAgIENVUi56cDIuY3VyW3BvaW50XS54ID0gQ1VSLnpwMS5jdXJbYTBdLnggKyBSLng7CisgICAgICBDVVIuenAyLmN1cltwb2ludF0ueSA9IENVUi56cDEuY3VyW2EwXS55ICsgUi55OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogZWxzZSwgdGFrZSB0aGUgbWlkZGxlIG9mIHRoZSBtaWRkbGVzIG9mIEEgYW5kIEIgKi8KKworICAgICAgQ1VSLnpwMi5jdXJbcG9pbnRdLnggPSAoIENVUi56cDEuY3VyW2EwXS54ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIuenAxLmN1clthMV0ueCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLnpwMC5jdXJbYjBdLnggKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi56cDAuY3VyW2IxXS54ICkgLyA0OworICAgICAgQ1VSLnpwMi5jdXJbcG9pbnRdLnkgPSAoIENVUi56cDEuY3VyW2EwXS55ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIuenAxLmN1clthMV0ueSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLnpwMC5jdXJbYjBdLnkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi56cDAuY3VyW2IxXS55ICkgLyA0OworICAgIH0KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBTElHTlBUU1tdOiAgIEFMSUdOIFBvaW5UUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDI3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0FMSUdOUFRTKCBJTlNfQVJHICkKKyAgeworICAgIEZUX1VTaG9ydCAgIHAxLCBwMjsKKyAgICBGVF9GMjZEb3Q2ICBkaXN0YW5jZTsKKworCisgICAgcDEgPSAoRlRfVVNob3J0KWFyZ3NbMF07CisgICAgcDIgPSAoRlRfVVNob3J0KWFyZ3NbMV07CisKKyAgICBpZiAoIEJPVU5EUyggcDEsIENVUi56cDEubl9wb2ludHMgKSB8fAorICAgICAgICAgQk9VTkRTKCBwMiwgQ1VSLnpwMC5uX3BvaW50cyApICkKKyAgICB7CisgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGlzdGFuY2UgPSBDVVJfRnVuY19wcm9qZWN0KCBDVVIuenAwLmN1ciArIHAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLnpwMS5jdXIgKyBwMSApIC8gMjsKKworICAgIENVUl9GdW5jX21vdmUoICZDVVIuenAxLCBwMSwgZGlzdGFuY2UgKTsKKyAgICBDVVJfRnVuY19tb3ZlKCAmQ1VSLnpwMCwgcDIsIC1kaXN0YW5jZSApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIElQW106ICAgICAgICAgSW50ZXJwb2xhdGUgUG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBPcGNvZGUgcmFuZ2U6IDB4MzkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU3RhY2s6ICAgICAgICB1aW50MzIuLi4gLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIC8qIFNPTUVUSU1FUywgRFVNQkVSIENPREUgSVMgQkVUVEVSIENPREUgKi8KKworICBzdGF0aWMgdm9pZAorICBJbnNfSVAoIElOU19BUkcgKQorICB7CisgICAgRlRfRjI2RG90NiAgb2xkX3JhbmdlLCBjdXJfcmFuZ2U7CisgICAgRlRfVmVjdG9yKiAgb3J1c19iYXNlOworICAgIEZUX1ZlY3RvciogIGN1cl9iYXNlOworICAgIEZUX0ludCAgICAgIHR3aWxpZ2h0OworCisgICAgRlRfVU5VU0VEX0FSRzsKKworCisgICAgaWYgKCBDVVIudG9wIDwgQ1VSLkdTLmxvb3AgKQorICAgIHsKKyAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFdlIG5lZWQgdG8gZGVhbCBpbiBhIHNwZWNpYWwgd2F5IHdpdGggdGhlIHR3aWxpZ2h0IHpvbmUuCisgICAgICogT3RoZXJ3aXNlLCBieSBkZWZpbml0aW9uLCB0aGUgdmFsdWUgb2YgQ1VSLnR3aWxpZ2h0Lm9ydXNbbl0gaXMgKDAsMCksCisgICAgICogZm9yIGV2ZXJ5IG4uCisgICAgICovCisgICAgdHdpbGlnaHQgPSBDVVIuR1MuZ2VwMCA9PSAwIHx8IENVUi5HUy5nZXAxID09IDAgfHwgQ1VSLkdTLmdlcDIgPT0gMDsKKworICAgIGlmICggQk9VTkRTKCBDVVIuR1MucnAxLCBDVVIuenAwLm5fcG9pbnRzICkgKQorICAgIHsKKyAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICBpZiAoIHR3aWxpZ2h0ICkKKyAgICAgIG9ydXNfYmFzZSA9ICZDVVIuenAwLm9yZ1tDVVIuR1MucnAxXTsKKyAgICBlbHNlCisgICAgICBvcnVzX2Jhc2UgPSAmQ1VSLnpwMC5vcnVzW0NVUi5HUy5ycDFdOworCisgICAgY3VyX2Jhc2UgPSAmQ1VSLnpwMC5jdXJbQ1VSLkdTLnJwMV07CisKKyAgICAvKiBYWFg6IFRoZXJlIGFyZSBzb21lIGdseXBocyBpbiBzb21lIGJyYWluZGVhZCBidXQgcG9wdWxhciAqLworICAgIC8qICAgICAgZm9udHMgb3V0IHRoZXJlIChlLmcuIFthZXVdZ3JhdmUgaW4gbW9ub3R5cGUudHRmKSAgICovCisgICAgLyogICAgICBjYWxsaW5nIElQW10gd2l0aCBiYWQgdmFsdWVzIG9mIHJwWzEyXS4gICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgIERvIHNvbWV0aGluZyBzYW5lIHdoZW4gdGhpcyBvZGQgdGhpbmcgaGFwcGVucy4gICAgICAqLworICAgIGlmICggQk9VTkRTKCBDVVIuR1MucnAxLCBDVVIuenAwLm5fcG9pbnRzICkgfHwKKyAgICAgICAgIEJPVU5EUyggQ1VSLkdTLnJwMiwgQ1VSLnpwMS5uX3BvaW50cyApICkKKyAgICB7CisgICAgICBvbGRfcmFuZ2UgPSAwOworICAgICAgY3VyX3JhbmdlID0gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICggdHdpbGlnaHQgKQorICAgICAgICBvbGRfcmFuZ2UgPSBDVVJfRnVuY19kdWFscHJvaiggJkNVUi56cDEub3JnW0NVUi5HUy5ycDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J1c19iYXNlICk7CisgICAgICBlbHNlIGlmICggQ1VSLm1ldHJpY3MueF9zY2FsZSA9PSBDVVIubWV0cmljcy55X3NjYWxlICkKKyAgICAgICAgb2xkX3JhbmdlID0gQ1VSX0Z1bmNfZHVhbHByb2ooICZDVVIuenAxLm9ydXNbQ1VSLkdTLnJwMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnVzX2Jhc2UgKTsKKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgRlRfVmVjdG9yICB2ZWM7CisKKworICAgICAgICB2ZWMueCA9IEZUX011bEZpeCggQ1VSLnpwMS5vcnVzW0NVUi5HUy5ycDJdLnggLSBvcnVzX2Jhc2UtPngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIubWV0cmljcy54X3NjYWxlICk7CisgICAgICAgIHZlYy55ID0gRlRfTXVsRml4KCBDVVIuenAxLm9ydXNbQ1VSLkdTLnJwMl0ueSAtIG9ydXNfYmFzZS0+eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi5tZXRyaWNzLnlfc2NhbGUgKTsKKworICAgICAgICBvbGRfcmFuZ2UgPSBDVVJfZmFzdF9kdWFscHJvaiggJnZlYyApOworICAgICAgfQorCisgICAgICBjdXJfcmFuZ2UgPSBDVVJfRnVuY19wcm9qZWN0ICggJkNVUi56cDEuY3VyW0NVUi5HUy5ycDJdLCBjdXJfYmFzZSApOworICAgIH0KKworICAgIGZvciAoIDsgQ1VSLkdTLmxvb3AgPiAwOyAtLUNVUi5HUy5sb29wICkKKyAgICB7CisgICAgICBGVF9VSW50ICAgICBwb2ludCA9IChGVF9VSW50KUNVUi5zdGFja1stLUNVUi5hcmdzXTsKKyAgICAgIEZUX0YyNkRvdDYgIG9yZ19kaXN0LCBjdXJfZGlzdCwgbmV3X2Rpc3Q7CisKKworICAgICAgLyogY2hlY2sgcG9pbnQgYm91bmRzICovCisgICAgICBpZiAoIEJPVU5EUyggcG9pbnQsIENVUi56cDIubl9wb2ludHMgKSApCisgICAgICB7CisgICAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICB7CisgICAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICBpZiAoIHR3aWxpZ2h0ICkKKyAgICAgICAgb3JnX2Rpc3QgPSBDVVJfRnVuY19kdWFscHJvaiggJkNVUi56cDIub3JnW3BvaW50XSwgb3J1c19iYXNlICk7CisgICAgICBlbHNlIGlmICggQ1VSLm1ldHJpY3MueF9zY2FsZSA9PSBDVVIubWV0cmljcy55X3NjYWxlICkKKyAgICAgICAgb3JnX2Rpc3QgPSBDVVJfRnVuY19kdWFscHJvaiggJkNVUi56cDIub3J1c1twb2ludF0sIG9ydXNfYmFzZSApOworICAgICAgZWxzZQorICAgICAgeworICAgICAgICBGVF9WZWN0b3IgIHZlYzsKKworCisgICAgICAgIHZlYy54ID0gRlRfTXVsRml4KCBDVVIuenAyLm9ydXNbcG9pbnRdLnggLSBvcnVzX2Jhc2UtPngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIubWV0cmljcy54X3NjYWxlICk7CisgICAgICAgIHZlYy55ID0gRlRfTXVsRml4KCBDVVIuenAyLm9ydXNbcG9pbnRdLnkgLSBvcnVzX2Jhc2UtPnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVIubWV0cmljcy55X3NjYWxlICk7CisKKyAgICAgICAgb3JnX2Rpc3QgPSBDVVJfZmFzdF9kdWFscHJvaiggJnZlYyApOworICAgICAgfQorCisgICAgICBjdXJfZGlzdCA9IENVUl9GdW5jX3Byb2plY3QgKCAmQ1VSLnpwMi5jdXJbcG9pbnRdLCBjdXJfYmFzZSApOworCisgICAgICBpZiAoIG9yZ19kaXN0ICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBvbGRfcmFuZ2UgKQorICAgICAgICAgIG5ld19kaXN0ID0gRlRfTXVsRGl2KCBvcmdfZGlzdCwgY3VyX3JhbmdlLCBvbGRfcmFuZ2UgKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogVGhpcyBpcyB0aGUgc2FtZSBhcyB3aGF0IE1TIGRvZXMgZm9yIHRoZSBpbnZhbGlkIGNhc2U6ICAqLworICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiAgIGRlbHRhID0gKE9yaWdpbmFsX1B0IC0gT3JpZ2luYWxfUlAxKSAtICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgIChDdXJyZW50X1B0IC0gQ3VycmVudF9SUDEpICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiBJbiBGcmVlVHlwZSBzcGVhazogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qICAgbmV3X2Rpc3QgPSBjdXJfZGlzdCAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiAgICAgICAgICAgICAgb3JnX2Rpc3QgLSBjdXJfZGlzdDsgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICBuZXdfZGlzdCA9IC1vcmdfZGlzdDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBuZXdfZGlzdCA9IDA7CisKKyAgICAgIENVUl9GdW5jX21vdmUoICZDVVIuenAyLCAoRlRfVVNob3J0KXBvaW50LCBuZXdfZGlzdCAtIGN1cl9kaXN0ICk7CisgICAgfQorCisgIEZhaWw6CisgICAgQ1VSLkdTLmxvb3AgPSAxOworICAgIENVUi5uZXdfdG9wID0gQ1VSLmFyZ3M7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVVRQW2FdOiAgICAgICBVblRvdWNoIFBvaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIE9wY29kZSByYW5nZTogMHgyOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTdGFjazogICAgICAgIHVpbnQzMiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyB2b2lkCisgIEluc19VVFAoIElOU19BUkcgKQorICB7CisgICAgRlRfVVNob3J0ICBwb2ludDsKKyAgICBGVF9CeXRlICAgIG1hc2s7CisKKworICAgIHBvaW50ID0gKEZUX1VTaG9ydClhcmdzWzBdOworCisgICAgaWYgKCBCT1VORFMoIHBvaW50LCBDVVIuenAwLm5fcG9pbnRzICkgKQorICAgIHsKKyAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYXNrID0gMHhGRjsKKworICAgIGlmICggQ1VSLkdTLmZyZWVWZWN0b3IueCAhPSAwICkKKyAgICAgIG1hc2sgJj0gfkZUX0NVUlZFX1RBR19UT1VDSF9YOworCisgICAgaWYgKCBDVVIuR1MuZnJlZVZlY3Rvci55ICE9IDAgKQorICAgICAgbWFzayAmPSB+RlRfQ1VSVkVfVEFHX1RPVUNIX1k7CisKKyAgICBDVVIuenAwLnRhZ3NbcG9pbnRdICY9IG1hc2s7CisgIH0KKworCisgIC8qIExvY2FsIHZhcmlhYmxlcyBmb3IgSW5zX0lVUDogKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIElVUF9Xb3JrZXJSZWNfCisgIHsKKyAgICBGVF9WZWN0b3IqICBvcmdzOyAgIC8qIG9yaWdpbmFsIGFuZCBjdXJyZW50IGNvb3JkaW5hdGUgKi8KKyAgICBGVF9WZWN0b3IqICBjdXJzOyAgIC8qIGFycmF5cyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBGVF9WZWN0b3IqICBvcnVzOworICAgIEZUX1VJbnQgICAgIG1heF9wb2ludHM7CisKKyAgfSBJVVBfV29ya2VyUmVjLCAqSVVQX1dvcmtlcjsKKworCisgIHN0YXRpYyB2b2lkCisgIF9pdXBfd29ya2VyX3NoaWZ0KCBJVVBfV29ya2VyICB3b3JrZXIsCisgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBwMSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHAyLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgcCApCisgIHsKKyAgICBGVF9VSW50ICAgICBpOworICAgIEZUX0YyNkRvdDYgIGR4OworCisKKyAgICBkeCA9IHdvcmtlci0+Y3Vyc1twXS54IC0gd29ya2VyLT5vcmdzW3BdLng7CisgICAgaWYgKCBkeCAhPSAwICkKKyAgICB7CisgICAgICBmb3IgKCBpID0gcDE7IGkgPCBwOyBpKysgKQorICAgICAgICB3b3JrZXItPmN1cnNbaV0ueCArPSBkeDsKKworICAgICAgZm9yICggaSA9IHAgKyAxOyBpIDw9IHAyOyBpKysgKQorICAgICAgICB3b3JrZXItPmN1cnNbaV0ueCArPSBkeDsKKyAgICB9CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIF9pdXBfd29ya2VyX2ludGVycG9sYXRlKCBJVVBfV29ya2VyICB3b3JrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBwMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgcmVmMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHJlZjIgKQorICB7CisgICAgRlRfVUludCAgICAgaTsKKyAgICBGVF9GMjZEb3Q2ICBvcnVzMSwgb3J1czIsIG9yZzEsIG9yZzIsIGRlbHRhMSwgZGVsdGEyOworCisKKyAgICBpZiAoIHAxID4gcDIgKQorICAgICAgcmV0dXJuOworCisgICAgaWYgKCBCT1VORFMoIHJlZjEsIHdvcmtlci0+bWF4X3BvaW50cyApIHx8CisgICAgICAgICBCT1VORFMoIHJlZjIsIHdvcmtlci0+bWF4X3BvaW50cyApICkKKyAgICAgIHJldHVybjsKKworICAgIG9ydXMxID0gd29ya2VyLT5vcnVzW3JlZjFdLng7CisgICAgb3J1czIgPSB3b3JrZXItPm9ydXNbcmVmMl0ueDsKKworICAgIGlmICggb3J1czEgPiBvcnVzMiApCisgICAgeworICAgICAgRlRfRjI2RG90NiAgdG1wX287CisgICAgICBGVF9VSW50ICAgICB0bXBfcjsKKworCisgICAgICB0bXBfbyA9IG9ydXMxOworICAgICAgb3J1czEgPSBvcnVzMjsKKyAgICAgIG9ydXMyID0gdG1wX287CisKKyAgICAgIHRtcF9yID0gcmVmMTsKKyAgICAgIHJlZjEgID0gcmVmMjsKKyAgICAgIHJlZjIgID0gdG1wX3I7CisgICAgfQorCisgICAgb3JnMSAgID0gd29ya2VyLT5vcmdzW3JlZjFdLng7CisgICAgb3JnMiAgID0gd29ya2VyLT5vcmdzW3JlZjJdLng7CisgICAgZGVsdGExID0gd29ya2VyLT5jdXJzW3JlZjFdLnggLSBvcmcxOworICAgIGRlbHRhMiA9IHdvcmtlci0+Y3Vyc1tyZWYyXS54IC0gb3JnMjsKKworICAgIGlmICggb3J1czEgPT0gb3J1czIgKQorICAgIHsKKyAgICAgIC8qIHNpbXBsZSBzaGlmdCBvZiB1bnRvdWNoZWQgcG9pbnRzICovCisgICAgICBmb3IgKCBpID0gcDE7IGkgPD0gcDI7IGkrKyApCisgICAgICB7CisgICAgICAgIEZUX0YyNkRvdDYgIHggPSB3b3JrZXItPm9yZ3NbaV0ueDsKKworCisgICAgICAgIGlmICggeCA8PSBvcmcxICkKKyAgICAgICAgICB4ICs9IGRlbHRhMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHggKz0gZGVsdGEyOworCisgICAgICAgIHdvcmtlci0+Y3Vyc1tpXS54ID0geDsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIEZUX0ZpeGVkICBzY2FsZSAgICAgICA9IDA7CisgICAgICBGVF9Cb29sICAgc2NhbGVfdmFsaWQgPSAwOworCisKKyAgICAgIC8qIGludGVycG9sYXRpb24gKi8KKyAgICAgIGZvciAoIGkgPSBwMTsgaSA8PSBwMjsgaSsrICkKKyAgICAgIHsKKyAgICAgICAgRlRfRjI2RG90NiAgeCA9IHdvcmtlci0+b3Jnc1tpXS54OworCisKKyAgICAgICAgaWYgKCB4IDw9IG9yZzEgKQorICAgICAgICAgIHggKz0gZGVsdGExOworCisgICAgICAgIGVsc2UgaWYgKCB4ID49IG9yZzIgKQorICAgICAgICAgIHggKz0gZGVsdGEyOworCisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGlmICggIXNjYWxlX3ZhbGlkICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBzY2FsZV92YWxpZCA9IDE7CisgICAgICAgICAgICBzY2FsZSAgICAgICA9IEZUX0RpdkZpeCggb3JnMiArIGRlbHRhMiAtICggb3JnMSArIGRlbHRhMSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydXMyIC0gb3J1czEgKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICB4ID0gKCBvcmcxICsgZGVsdGExICkgKworICAgICAgICAgICAgICBGVF9NdWxGaXgoIHdvcmtlci0+b3J1c1tpXS54IC0gb3J1czEsIHNjYWxlICk7CisgICAgICAgIH0KKyAgICAgICAgd29ya2VyLT5jdXJzW2ldLnggPSB4OworICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJVVBbYV06ICAgICAgIEludGVycG9sYXRlIFVudG91Y2hlZCBQb2ludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDMwLTB4MzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0lVUCggSU5TX0FSRyApCisgIHsKKyAgICBJVVBfV29ya2VyUmVjICBWOworICAgIEZUX0J5dGUgICAgICAgIG1hc2s7CisKKyAgICBGVF9VSW50ICAgZmlyc3RfcG9pbnQ7ICAgLyogZmlyc3QgcG9pbnQgb2YgY29udG91ciAgICAgICAgKi8KKyAgICBGVF9VSW50ICAgZW5kX3BvaW50OyAgICAgLyogZW5kIHBvaW50IChsYXN0KzEpIG9mIGNvbnRvdXIgKi8KKworICAgIEZUX1VJbnQgICBmaXJzdF90b3VjaGVkOyAvKiBmaXJzdCB0b3VjaGVkIHBvaW50IGluIGNvbnRvdXIgICAqLworICAgIEZUX1VJbnQgICBjdXJfdG91Y2hlZDsgICAvKiBjdXJyZW50IHRvdWNoZWQgcG9pbnQgaW4gY29udG91ciAqLworCisgICAgRlRfVUludCAgIHBvaW50OyAgICAgICAgIC8qIGN1cnJlbnQgcG9pbnQgICAqLworICAgIEZUX1Nob3J0ICBjb250b3VyOyAgICAgICAvKiBjdXJyZW50IGNvbnRvdXIgKi8KKworICAgIEZUX1VOVVNFRF9BUkc7CisKKworICAgIC8qIGlnbm9yZSBlbXB0eSBvdXRsaW5lcyAqLworICAgIGlmICggQ1VSLnB0cy5uX2NvbnRvdXJzID09IDAgKQorICAgICAgcmV0dXJuOworCisgICAgaWYgKCBDVVIub3Bjb2RlICYgMSApCisgICAgeworICAgICAgbWFzayAgID0gRlRfQ1VSVkVfVEFHX1RPVUNIX1g7CisgICAgICBWLm9yZ3MgPSBDVVIucHRzLm9yZzsKKyAgICAgIFYuY3VycyA9IENVUi5wdHMuY3VyOworICAgICAgVi5vcnVzID0gQ1VSLnB0cy5vcnVzOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgbWFzayAgID0gRlRfQ1VSVkVfVEFHX1RPVUNIX1k7CisgICAgICBWLm9yZ3MgPSAoRlRfVmVjdG9yKikoIChGVF9Qb3MqKUNVUi5wdHMub3JnICsgMSApOworICAgICAgVi5jdXJzID0gKEZUX1ZlY3RvciopKCAoRlRfUG9zKilDVVIucHRzLmN1ciArIDEgKTsKKyAgICAgIFYub3J1cyA9IChGVF9WZWN0b3IqKSggKEZUX1BvcyopQ1VSLnB0cy5vcnVzICsgMSApOworICAgIH0KKyAgICBWLm1heF9wb2ludHMgPSBDVVIucHRzLm5fcG9pbnRzOworCisgICAgY29udG91ciA9IDA7CisgICAgcG9pbnQgICA9IDA7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkcgICYmCisgICAgICAgICBDVVIuaWdub3JlX3hfbW9kZSApCisgICAgeworICAgICAgQ1VSLml1cF9jYWxsZWQgPSBUUlVFOworICAgICAgaWYgKCBDVVIuc3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX1NLSVBfSVVQICkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICAgIGRvCisgICAgeworICAgICAgZW5kX3BvaW50ICAgPSBDVVIucHRzLmNvbnRvdXJzW2NvbnRvdXJdIC0gQ1VSLnB0cy5maXJzdF9wb2ludDsKKyAgICAgIGZpcnN0X3BvaW50ID0gcG9pbnQ7CisKKyAgICAgIGlmICggQk9VTkRTICggZW5kX3BvaW50LCBDVVIucHRzLm5fcG9pbnRzICkgKQorICAgICAgICBlbmRfcG9pbnQgPSBDVVIucHRzLm5fcG9pbnRzIC0gMTsKKworICAgICAgd2hpbGUgKCBwb2ludCA8PSBlbmRfcG9pbnQgJiYgKCBDVVIucHRzLnRhZ3NbcG9pbnRdICYgbWFzayApID09IDAgKQorICAgICAgICBwb2ludCsrOworCisgICAgICBpZiAoIHBvaW50IDw9IGVuZF9wb2ludCApCisgICAgICB7CisgICAgICAgIGZpcnN0X3RvdWNoZWQgPSBwb2ludDsKKyAgICAgICAgY3VyX3RvdWNoZWQgICA9IHBvaW50OworCisgICAgICAgIHBvaW50Kys7CisKKyAgICAgICAgd2hpbGUgKCBwb2ludCA8PSBlbmRfcG9pbnQgKQorICAgICAgICB7CisgICAgICAgICAgaWYgKCAoIENVUi5wdHMudGFnc1twb2ludF0gJiBtYXNrICkgIT0gMCApCisgICAgICAgICAgeworICAgICAgICAgICAgX2l1cF93b3JrZXJfaW50ZXJwb2xhdGUoICZWLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl90b3VjaGVkICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludCAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX3RvdWNoZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQgKTsKKyAgICAgICAgICAgIGN1cl90b3VjaGVkID0gcG9pbnQ7CisgICAgICAgICAgfQorCisgICAgICAgICAgcG9pbnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggY3VyX3RvdWNoZWQgPT0gZmlyc3RfdG91Y2hlZCApCisgICAgICAgICAgX2l1cF93b3JrZXJfc2hpZnQoICZWLCBmaXJzdF9wb2ludCwgZW5kX3BvaW50LCBjdXJfdG91Y2hlZCApOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBfaXVwX3dvcmtlcl9pbnRlcnBvbGF0ZSggJlYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9VU2hvcnQpKCBjdXJfdG91Y2hlZCArIDEgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3BvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfdG91Y2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfdG91Y2hlZCApOworCisgICAgICAgICAgaWYgKCBmaXJzdF90b3VjaGVkID4gMCApCisgICAgICAgICAgICBfaXVwX3dvcmtlcl9pbnRlcnBvbGF0ZSggJlYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfdG91Y2hlZCAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX3RvdWNoZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfdG91Y2hlZCApOworICAgICAgICB9CisgICAgICB9CisgICAgICBjb250b3VyKys7CisgICAgfSB3aGlsZSAoIGNvbnRvdXIgPCBDVVIucHRzLm5fY29udG91cnMgKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBERUxUQVBuW106ICAgIERFTFRBIGV4Y2VwdGlvbnMgUDEsIFAyLCBQMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDVELDB4NzEsMHg3MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyICgyICogdWludDMyKS4uLiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0RFTFRBUCggSU5TX0FSRyApCisgIHsKKyAgICBGVF9VTG9uZyAgIGssIG51bXA7CisgICAgRlRfVVNob3J0ICBBOworICAgIEZUX1VMb25nICAgQzsKKyAgICBGVF9Mb25nICAgIEI7CisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgRlRfVVNob3J0ICBCMSwgQjI7CisKKworICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgQ1VSLmlnbm9yZV94X21vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgQ1VSLml1cF9jYWxsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgKCBDVVIuc3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX05PX0RFTFRBUF9BRlRFUl9JVVAgKSApCisgICAgICBnb3RvIEZhaWw7CisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCisgICAgLyogRGVsdGEgaGludGluZyBpcyBjb3ZlcmVkIGJ5IFVTIFBhdGVudCA1MTU5NjY4LiAqLworICAgIGlmICggQ1VSLmZhY2UtPnVucGF0ZW50ZWRfaGludGluZyApCisgICAgeworICAgICAgRlRfTG9uZyAgbiA9IGFyZ3NbMF0gKiAyOworCisKKyAgICAgIGlmICggQ1VSLmFyZ3MgPCBuICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIFRvb19GZXdfQXJndW1lbnRzICk7CisgICAgICAgIG4gPSBDVVIuYXJnczsKKyAgICAgIH0KKworICAgICAgQ1VSLmFyZ3MgLT0gbjsKKyAgICAgIENVUi5uZXdfdG9wID0gQ1VSLmFyZ3M7CisgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBudW1wID0gKEZUX1VMb25nKWFyZ3NbMF07ICAgLyogc29tZSBwb2ludHMgdGhlb3JldGljYWxseSBtYXkgb2NjdXIgbW9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGFuIG9uY2UsIHRodXMgVVNob3J0IGlzbid0IGVub3VnaCAqLworCisgICAgZm9yICggayA9IDE7IGsgPD0gbnVtcDsgaysrICkKKyAgICB7CisgICAgICBpZiAoIENVUi5hcmdzIDwgMiApCisgICAgICB7CisgICAgICAgIGlmICggQ1VSLnBlZGFudGljX2hpbnRpbmcgKQorICAgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBUb29fRmV3X0FyZ3VtZW50cyApOworICAgICAgICBDVVIuYXJncyA9IDA7CisgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgIH0KKworICAgICAgQ1VSLmFyZ3MgLT0gMjsKKworICAgICAgQSA9IChGVF9VU2hvcnQpQ1VSLnN0YWNrW0NVUi5hcmdzICsgMV07CisgICAgICBCID0gQ1VSLnN0YWNrW0NVUi5hcmdzXTsKKworICAgICAgLyogWFhYOiBCZWNhdXNlIHNvbWUgcG9wdWxhciBmb250cyBjb250YWluIHNvbWUgaW52YWxpZCBEZWx0YVAgKi8KKyAgICAgIC8qICAgICAgaW5zdHJ1Y3Rpb25zLCB3ZSBzaW1wbHkgaWdub3JlIHRoZW0gd2hlbiB0aGUgc3RhY2tlZCAgICovCisgICAgICAvKiAgICAgIHBvaW50IHJlZmVyZW5jZSBpcyBvZmYgbGltaXQsIHJhdGhlciB0aGFuIHJldHVybmluZyBhbiAqLworICAgICAgLyogICAgICBlcnJvci4gIEFzIGEgZGVsdGEgaW5zdHJ1Y3Rpb24gZG9lc24ndCBjaGFuZ2UgYSBnbHlwaCAgKi8KKyAgICAgIC8qICAgICAgaW4gZ3JlYXQgd2F5cywgdGhpcyBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLiAgICAgICAgICAgICovCisKKyAgICAgIGlmICggIUJPVU5EUyggQSwgQ1VSLnpwMC5uX3BvaW50cyApICkKKyAgICAgIHsKKyAgICAgICAgQyA9ICggKEZUX1VMb25nKUIgJiAweEYwICkgPj4gNDsKKworICAgICAgICBzd2l0Y2ggKCBDVVIub3Bjb2RlICkKKyAgICAgICAgeworICAgICAgICBjYXNlIDB4NUQ6CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDcxOgorICAgICAgICAgIEMgKz0gMTY7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDcyOgorICAgICAgICAgIEMgKz0gMzI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBDICs9IENVUi5HUy5kZWx0YV9iYXNlOworCisgICAgICAgIGlmICggQ1VSUkVOVF9QcGVtKCkgPT0gKEZUX0xvbmcpQyApCisgICAgICAgIHsKKyAgICAgICAgICBCID0gKCAoRlRfVUxvbmcpQiAmIDB4RiApIC0gODsKKyAgICAgICAgICBpZiAoIEIgPj0gMCApCisgICAgICAgICAgICBCKys7CisgICAgICAgICAgQiA9IEIgKiA2NCAvICggMUwgPDwgQ1VSLkdTLmRlbHRhX3NoaWZ0ICk7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKworICAgICAgICAgIGlmICggU1VCUElYRUxfSElOVElORyApCisgICAgICAgICAgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqICBBbGxvdyBkZWx0YSBtb3ZlIGlmCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogIC0gbm90IHVzaW5nIGlnbm9yZV94X21vZGUgcmVuZGVyaW5nCisgICAgICAgICAgICAgKiAgLSBnbHlwaCBpcyBzcGVjaWZpY2FsbHkgc2V0IHRvIGFsbG93IGl0CisgICAgICAgICAgICAgKiAgLSBnbHlwaCBpcyBjb21wb3NpdGUgYW5kIGZyZWVkb20gdmVjdG9yIGlzIG5vdCBzdWJwaXhlbAorICAgICAgICAgICAgICogICAgdmVjdG9yCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICggIUNVUi5pZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgICAoIENVUi5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfQUxXQVlTX0RPX0RFTFRBUCApIHx8CisgICAgICAgICAgICAgICAgICggQ1VSLmlzX2NvbXBvc2l0ZSAmJiBDVVIuR1MuZnJlZVZlY3Rvci55ICE9IDAgKSAgICAgKQorICAgICAgICAgICAgICBDVVJfRnVuY19tb3ZlKCAmQ1VSLnpwMCwgQSwgQiApOworCisgICAgICAgICAgICAvKiBPdGhlcndpc2UgYXBwbHkgc3VicGl4ZWwgaGludGluZyBhbmQgKi8KKyAgICAgICAgICAgIC8qIGNvbXBhdGliaWxpdHkgbW9kZSBydWxlcyAgICAgICAgICAgICAqLworICAgICAgICAgICAgZWxzZSBpZiAoIENVUi5pZ25vcmVfeF9tb2RlICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKCBDVVIuR1MuZnJlZVZlY3Rvci55ICE9IDAgKQorICAgICAgICAgICAgICAgIEIxID0gQ1VSLnpwMC5jdXJbQV0ueTsKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEIxID0gQ1VSLnpwMC5jdXJbQV0ueDsKKworI2lmIDAKKyAgICAgICAgICAgICAgLyogU3RhbmRhcmQgU3VicGl4ZWwgSGludGluZzogQWxsb3cgeSBtb3ZlLiAgICAgICAqLworICAgICAgICAgICAgICAvKiBUaGlzIG1lc3NlcyB1cCBkZWphdnUgYW5kIG1heSBub3QgYmUgbmVlZGVkLi4uICovCisgICAgICAgICAgICAgIGlmICggIUNVUi5mYWNlLT5zcGhfY29tcGF0aWJpbGl0eV9tb2RlICYmCisgICAgICAgICAgICAgICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueSAhPSAwICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBDVVJfRnVuY19tb3ZlKCAmQ1VSLnpwMCwgQSwgQiApOworICAgICAgICAgICAgICBlbHNlCisjZW5kaWYgLyogMCAqLworCisgICAgICAgICAgICAgIC8qIENvbXBhdGliaWxpdHkgTW9kZTogQWxsb3cgeCBvciB5IG1vdmUgaWYgcG9pbnQgdG91Y2hlZCBpbiAqLworICAgICAgICAgICAgICAvKiBZIGRpcmVjdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgaWYgKCBDVVIuZmFjZS0+c3BoX2NvbXBhdGliaWxpdHlfbW9kZSAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgICAgICEoIENVUi5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfQUxXQVlTX1NLSVBfREVMVEFQICkgKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogc2F2ZSB0aGUgeSB2YWx1ZSBvZiB0aGUgcG9pbnQgbm93OyBjb21wYXJlIGFmdGVyIG1vdmUgKi8KKyAgICAgICAgICAgICAgICBCMSA9IENVUi56cDAuY3VyW0FdLnk7CisKKyAgICAgICAgICAgICAgICBpZiAoIENVUi5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfUk9VTkRfTk9OUElYRUxfWV9NT1ZFUyApCisgICAgICAgICAgICAgICAgICBCID0gRlRfUElYX1JPVU5EKCBCMSArIEIgKSAtIEIxOworCisgICAgICAgICAgICAgICAgLyogQWxsb3cgZGVsdGEgbW92ZSBpZiB1c2luZyBzcGhfY29tcGF0aWJpbGl0eV9tb2RlLCAgICovCisgICAgICAgICAgICAgICAgLyogSVVQIGhhcyBub3QgYmVlbiBjYWxsZWQsIGFuZCBwb2ludCBpcyB0b3VjaGVkIG9uIFkuICovCisgICAgICAgICAgICAgICAgaWYgKCAhQ1VSLml1cF9jYWxsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICAgICAgICggQ1VSLnpwMC50YWdzW0FdICYgRlRfQ1VSVkVfVEFHX1RPVUNIX1kgKSApCisgICAgICAgICAgICAgICAgICBDVVJfRnVuY19tb3ZlKCAmQ1VSLnpwMCwgQSwgQiApOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgQjIgPSBDVVIuenAwLmN1cltBXS55OworCisgICAgICAgICAgICAgIC8qIFJldmVyc2UgdGhpcyBtb3ZlIGlmIGl0IHJlc3VsdHMgaW4gYSBkaXNhbGxvd2VkIG1vdmUgKi8KKyAgICAgICAgICAgICAgaWYgKCBDVVIuR1MuZnJlZVZlY3Rvci55ICE9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgICAgICggKCBDVVIuZmFjZS0+c3BoX2NvbXBhdGliaWxpdHlfbW9kZSAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgKCBCMSAmIDYzICkgPT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAgICAgICAgICggQjIgJiA2MyApICE9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8CisgICAgICAgICAgICAgICAgICAgICAoICggQ1VSLnNwaF90d2Vha19mbGFncyAgICAgICAgICAgICAgICAgICAgJgorICAgICAgICAgICAgICAgICAgICAgICAgIFNQSF9UV0VBS19TS0lQX05PTlBJWEVMX1lfTU9WRVNfREVMVEFQICkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgKCBCMSAmIDYzICkgIT0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAgICAgICAgICggQjIgJiA2MyApICE9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICApICkgKQorICAgICAgICAgICAgICAgIENVUl9GdW5jX21vdmUoICZDVVIuenAwLCBBLCAtQiApOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisKKyAgICAgICAgICAgIENVUl9GdW5jX21vdmUoICZDVVIuenAwLCBBLCBCICk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgfQorCisgIEZhaWw6CisgICAgQ1VSLm5ld190b3AgPSBDVVIuYXJnczsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBERUxUQUNuW106ICAgIERFTFRBIGV4Y2VwdGlvbnMgQzEsIEMyLCBDMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDczLDB4NzQsMHg3NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyICgyICogdWludDMyKS4uLiAtLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0RFTFRBQyggSU5TX0FSRyApCisgIHsKKyAgICBGVF9VTG9uZyAgbnVtcCwgazsKKyAgICBGVF9VTG9uZyAgQSwgQzsKKyAgICBGVF9Mb25nICAgQjsKKworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcKKyAgICAvKiBEZWx0YSBoaW50aW5nIGlzIGNvdmVyZWQgYnkgVVMgUGF0ZW50IDUxNTk2NjguICovCisgICAgaWYgKCBDVVIuZmFjZS0+dW5wYXRlbnRlZF9oaW50aW5nICkKKyAgICB7CisgICAgICBGVF9Mb25nICBuID0gYXJnc1swXSAqIDI7CisKKworICAgICAgaWYgKCBDVVIuYXJncyA8IG4gKQorICAgICAgeworICAgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggVG9vX0Zld19Bcmd1bWVudHMgKTsKKyAgICAgICAgbiA9IENVUi5hcmdzOworICAgICAgfQorCisgICAgICBDVVIuYXJncyAtPSBuOworICAgICAgQ1VSLm5ld190b3AgPSBDVVIuYXJnczsKKyAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIG51bXAgPSAoRlRfVUxvbmcpYXJnc1swXTsKKworICAgIGZvciAoIGsgPSAxOyBrIDw9IG51bXA7IGsrKyApCisgICAgeworICAgICAgaWYgKCBDVVIuYXJncyA8IDIgKQorICAgICAgeworICAgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggVG9vX0Zld19Bcmd1bWVudHMgKTsKKyAgICAgICAgQ1VSLmFyZ3MgPSAwOworICAgICAgICBnb3RvIEZhaWw7CisgICAgICB9CisKKyAgICAgIENVUi5hcmdzIC09IDI7CisKKyAgICAgIEEgPSAoRlRfVUxvbmcpQ1VSLnN0YWNrW0NVUi5hcmdzICsgMV07CisgICAgICBCID0gQ1VSLnN0YWNrW0NVUi5hcmdzXTsKKworICAgICAgaWYgKCBCT1VORFNMKCBBLCBDVVIuY3Z0U2l6ZSApICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBDVVIucGVkYW50aWNfaGludGluZyApCisgICAgICAgIHsKKyAgICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgQyA9ICggKEZUX1VMb25nKUIgJiAweEYwICkgPj4gNDsKKworICAgICAgICBzd2l0Y2ggKCBDVVIub3Bjb2RlICkKKyAgICAgICAgeworICAgICAgICBjYXNlIDB4NzM6CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDc0OgorICAgICAgICAgIEMgKz0gMTY7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDc1OgorICAgICAgICAgIEMgKz0gMzI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBDICs9IENVUi5HUy5kZWx0YV9iYXNlOworCisgICAgICAgIGlmICggQ1VSUkVOVF9QcGVtKCkgPT0gKEZUX0xvbmcpQyApCisgICAgICAgIHsKKyAgICAgICAgICBCID0gKCAoRlRfVUxvbmcpQiAmIDB4RiApIC0gODsKKyAgICAgICAgICBpZiAoIEIgPj0gMCApCisgICAgICAgICAgICBCKys7CisgICAgICAgICAgQiA9IEIgKiA2NCAvICggMUwgPDwgQ1VSLkdTLmRlbHRhX3NoaWZ0ICk7CisKKyAgICAgICAgICBDVVJfRnVuY19tb3ZlX2N2dCggQSwgQiApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgIEZhaWw6CisgICAgQ1VSLm5ld190b3AgPSBDVVIuYXJnczsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBNSVNDLiBJTlNUUlVDVElPTlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBHRVRJTkZPW106ICAgIEdFVCBJTkZPcm1hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogT3Bjb2RlIHJhbmdlOiAweDg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN0YWNrOiAgICAgICAgdWludDMyIC0tPiB1aW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgc3RhdGljIHZvaWQKKyAgSW5zX0dFVElORk8oIElOU19BUkcgKQorICB7CisgICAgRlRfTG9uZyAgSzsKKworCisgICAgSyA9IDA7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyogUkFTVEVSSVpFUiBWRVJTSU9OICAgICAgICAgICAqLworICAgIC8qIFNlbGVjdG9yIEJpdDogIDAgICAgICAgICAgICAgKi8KKyAgICAvKiBSZXR1cm4gQml0KHMpOiAwLTcgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggU1VCUElYRUxfSElOVElORyAgICAgJiYKKyAgICAgICAgICggYXJnc1swXSAmIDEgKSAhPSAwICYmCisgICAgICAgICBDVVIuaWdub3JlX3hfbW9kZSAgICApCisgICAgeworICAgICAgSyA9IENVUi5yYXN0ZXJpemVyX3ZlcnNpb247CisgICAgICBGVF9UUkFDRTcoKCAiU2V0dGluZyByYXN0ZXJpemVyIHZlcnNpb24gJWRcbiIsCisgICAgICAgICAgICAgICAgICBDVVIucmFzdGVyaXplcl92ZXJzaW9uICkpOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HICovCisgICAgICBpZiAoICggYXJnc1swXSAmIDEgKSAhPSAwICkKKyAgICAgICAgSyA9IFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzU7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyogR0xZUEggUk9UQVRFRCAgICAgICAgICAgICAgICAqLworICAgIC8qIFNlbGVjdG9yIEJpdDogIDEgICAgICAgICAgICAgKi8KKyAgICAvKiBSZXR1cm4gQml0KHMpOiA4ICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggKCBhcmdzWzBdICYgMiApICE9IDAgJiYgQ1VSLnR0X21ldHJpY3Mucm90YXRlZCApCisgICAgICBLIHw9IDB4ODA7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyogR0xZUEggU1RSRVRDSEVEICAgICAgICAgICAgICAqLworICAgIC8qIFNlbGVjdG9yIEJpdDogIDIgICAgICAgICAgICAgKi8KKyAgICAvKiBSZXR1cm4gQml0KHMpOiA5ICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggKCBhcmdzWzBdICYgNCApICE9IDAgJiYgQ1VSLnR0X21ldHJpY3Muc3RyZXRjaGVkICkKKyAgICAgIEsgfD0gMSA8PCA4OworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qIEhJTlRJTkcgRk9SIEdSQVlTQ0FMRSAgICAgICAgKi8KKyAgICAvKiBTZWxlY3RvciBCaXQ6ICA1ICAgICAgICAgICAgICovCisgICAgLyogUmV0dXJuIEJpdChzKTogMTIgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoICggYXJnc1swXSAmIDMyICkgIT0gMCAmJiBDVVIuZ3JheXNjYWxlICkKKyAgICAgIEsgfD0gMSA8PCAxMjsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworCisgICAgaWYgKCBTVUJQSVhFTF9ISU5USU5HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIENVUi5pZ25vcmVfeF9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgQ1VSLnJhc3Rlcml6ZXJfdmVyc2lvbiA+PSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM1ICkKKyAgICB7CisgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgICAvKiBISU5USU5HIEZPUiBHUkFZU0NBTEUgICAgICAgICovCisgICAgICAvKiBTZWxlY3RvciBCaXQ6ICA1ICAgICAgICAgICAgICovCisgICAgICAvKiBSZXR1cm4gQml0KHMpOiAxMiAgICAgICAgICAgICovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBpZiAoICggYXJnc1swXSAmIDMyICkgIT0gMCAmJiBDVVIuZ3JheXNjYWxlX2hpbnRpbmcgKQorICAgICAgICBLIHw9IDEgPDwgMTI7CisKKyAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAgIC8qIEhJTlRJTkcgRk9SIFNVQlBJWEVMICAgICAgICAgKi8KKyAgICAgIC8qIFNlbGVjdG9yIEJpdDogIDYgICAgICAgICAgICAgKi8KKyAgICAgIC8qIFJldHVybiBCaXQocyk6IDEzICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIGlmICggKCBhcmdzWzBdICYgNjQgKSAhPSAwICAgICAgICAmJgorICAgICAgICAgICBDVVIuc3VicGl4ZWxfaGludGluZyAgICAgICAgICYmCisgICAgICAgICAgIENVUi5yYXN0ZXJpemVyX3ZlcnNpb24gPj0gMzcgKQorICAgICAgeworICAgICAgICBLIHw9IDEgPDwgMTM7CisKKyAgICAgICAgLyogdGhlIHN0dWZmIGJlbG93IGlzIGlycmVsZXZhbnQgaWYgc3VicGl4ZWxfaGludGluZyBpcyBub3Qgc2V0ICovCisKKyAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgICAgICAvKiBDT01QQVRJQkxFIFdJRFRIUyBFTkFCTEVEICAgICovCisgICAgICAgIC8qIFNlbGVjdG9yIEJpdDogIDcgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogUmV0dXJuIEJpdChzKTogMTQgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIEZ1bmN0aW9uYWxpdHkgc3RpbGwgbmVlZHMgdG8gYmUgYWRkZWQgKi8KKyAgICAgICAgaWYgKCAoIGFyZ3NbMF0gJiAxMjggKSAhPSAwICYmIENVUi5jb21wYXRpYmxlX3dpZHRocyApCisgICAgICAgICAgSyB8PSAxIDw8IDE0OworCisgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAgICAgLyogU1lNTUVUUklDQUwgU01PT1RISU5HICAgICAgICAqLworICAgICAgICAvKiBTZWxlY3RvciBCaXQ6ICA4ICAgICAgICAgICAgICovCisgICAgICAgIC8qIFJldHVybiBCaXQocyk6IDE1ICAgICAgICAgICAgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAvKiBGdW5jdGlvbmFsaXR5IHN0aWxsIG5lZWRzIHRvIGJlIGFkZGVkICovCisgICAgICAgIGlmICggKCBhcmdzWzBdICYgMjU2ICkgIT0gMCAmJiBDVVIuc3ltbWV0cmljYWxfc21vb3RoaW5nICkKKyAgICAgICAgICBLIHw9IDEgPDwgMTU7CisKKyAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgICAgICAvKiBISU5USU5HIEZPUiBCR1I/ICAgICAgICAgICAgICovCisgICAgICAgIC8qIFNlbGVjdG9yIEJpdDogIDkgICAgICAgICAgICAgKi8KKyAgICAgICAgLyogUmV0dXJuIEJpdChzKTogMTYgICAgICAgICAgICAqLworICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIC8qIEZ1bmN0aW9uYWxpdHkgc3RpbGwgbmVlZHMgdG8gYmUgYWRkZWQgKi8KKyAgICAgICAgaWYgKCAoIGFyZ3NbMF0gJiA1MTIgKSAhPSAwICYmIENVUi5iZ3IgKQorICAgICAgICAgIEsgfD0gMSA8PCAxNjsKKworICAgICAgICBpZiAoIENVUi5yYXN0ZXJpemVyX3ZlcnNpb24gPj0gMzggKQorICAgICAgICB7CisgICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgICAgICAgIC8qIFNVQlBJWEVMIFBPU0lUSU9ORUQ/ICAgICAgICAgKi8KKyAgICAgICAgICAvKiBTZWxlY3RvciBCaXQ6ICAxMCAgICAgICAgICAgICovCisgICAgICAgICAgLyogUmV0dXJuIEJpdChzKTogMTcgICAgICAgICAgICAqLworICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiBGdW5jdGlvbmFsaXR5IHN0aWxsIG5lZWRzIHRvIGJlIGFkZGVkICovCisgICAgICAgICAgaWYgKCAoIGFyZ3NbMF0gJiAxMDI0ICkgIT0gMCAmJiBDVVIuc3VicGl4ZWxfcG9zaXRpb25lZCApCisgICAgICAgICAgICBLIHw9IDEgPDwgMTc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICAgIGFyZ3NbMF0gPSBLOworICB9CisKKworICBzdGF0aWMgdm9pZAorICBJbnNfVU5LTk9XTiggSU5TX0FSRyApCisgIHsKKyAgICBUVF9EZWZSZWNvcmQqICBkZWYgICA9IENVUi5JRGVmczsKKyAgICBUVF9EZWZSZWNvcmQqICBsaW1pdCA9IGRlZiArIENVUi5udW1JRGVmczsKKworICAgIEZUX1VOVVNFRF9BUkc7CisKKworICAgIGZvciAoIDsgZGVmIDwgbGltaXQ7IGRlZisrICkKKyAgICB7CisgICAgICBpZiAoIChGVF9CeXRlKWRlZi0+b3BjID09IENVUi5vcGNvZGUgJiYgZGVmLT5hY3RpdmUgKQorICAgICAgeworICAgICAgICBUVF9DYWxsUmVjKiAgY2FsbDsKKworCisgICAgICAgIGlmICggQ1VSLmNhbGxUb3AgPj0gQ1VSLmNhbGxTaXplICkKKyAgICAgICAgeworICAgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBTdGFja19PdmVyZmxvdyApOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGwgPSBDVVIuY2FsbFN0YWNrICsgQ1VSLmNhbGxUb3ArKzsKKworICAgICAgICBjYWxsLT5DYWxsZXJfUmFuZ2UgPSBDVVIuY3VyUmFuZ2U7CisgICAgICAgIGNhbGwtPkNhbGxlcl9JUCAgICA9IENVUi5JUCArIDE7CisgICAgICAgIGNhbGwtPkN1cl9Db3VudCAgICA9IDE7CisgICAgICAgIGNhbGwtPkN1cl9SZXN0YXJ0ICA9IGRlZi0+c3RhcnQ7CisgICAgICAgIGNhbGwtPkN1cl9FbmQgICAgICA9IGRlZi0+ZW5kOworCisgICAgICAgIElOU19Hb3RvX0NvZGVSYW5nZSggZGVmLT5yYW5nZSwgZGVmLT5zdGFydCApOworCisgICAgICAgIENVUi5zdGVwX2lucyA9IEZBTFNFOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorCisgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfT3Bjb2RlICk7CisgIH0KKworCisjaWZuZGVmIFRUX0NPTkZJR19PUFRJT05fSU5URVJQUkVURVJfU1dJVENICisKKworICBzdGF0aWMKKyAgVEluc3RydWN0aW9uX0Z1bmN0aW9uICBJbnN0cnVjdF9EaXNwYXRjaFsyNTZdID0KKyAgeworICAgIC8qIE9wY29kZXMgYXJlIGdhdGhlcmVkIGluIGdyb3VwcyBvZiAxNi4gKi8KKyAgICAvKiBQbGVhc2Uga2VlcCB0aGUgc3BhY2VzIGFzIHRoZXkgYXJlLiAgICovCisKKyAgICAvKiAgU1ZUQ0EgIHkgICovICBJbnNfU1ZUQ0EsCisgICAgLyogIFNWVENBICB4ICAqLyAgSW5zX1NWVENBLAorICAgIC8qICBTUHZUQ0EgeSAgKi8gIEluc19TUFZUQ0EsCisgICAgLyogIFNQdlRDQSB4ICAqLyAgSW5zX1NQVlRDQSwKKyAgICAvKiAgU0Z2VENBIHkgICovICBJbnNfU0ZWVENBLAorICAgIC8qICBTRnZUQ0EgeCAgKi8gIEluc19TRlZUQ0EsCisgICAgLyogIFNQdlRMIC8vICAqLyAgSW5zX1NQVlRMLAorICAgIC8qICBTUHZUTCArICAgKi8gIEluc19TUFZUTCwKKyAgICAvKiAgU0Z2VEwgLy8gICovICBJbnNfU0ZWVEwsCisgICAgLyogIFNGdlRMICsgICAqLyAgSW5zX1NGVlRMLAorICAgIC8qICBTUHZGUyAgICAgKi8gIEluc19TUFZGUywKKyAgICAvKiAgU0Z2RlMgICAgICovICBJbnNfU0ZWRlMsCisgICAgLyogIEdQViAgICAgICAqLyAgSW5zX0dQViwKKyAgICAvKiAgR0ZWICAgICAgICovICBJbnNfR0ZWLAorICAgIC8qICBTRnZUUHYgICAgKi8gIEluc19TRlZUUFYsCisgICAgLyogIElTRUNUICAgICAqLyAgSW5zX0lTRUNULAorCisgICAgLyogIFNSUDAgICAgICAqLyAgSW5zX1NSUDAsCisgICAgLyogIFNSUDEgICAgICAqLyAgSW5zX1NSUDEsCisgICAgLyogIFNSUDIgICAgICAqLyAgSW5zX1NSUDIsCisgICAgLyogIFNaUDAgICAgICAqLyAgSW5zX1NaUDAsCisgICAgLyogIFNaUDEgICAgICAqLyAgSW5zX1NaUDEsCisgICAgLyogIFNaUDIgICAgICAqLyAgSW5zX1NaUDIsCisgICAgLyogIFNaUFMgICAgICAqLyAgSW5zX1NaUFMsCisgICAgLyogIFNMT09QICAgICAqLyAgSW5zX1NMT09QLAorICAgIC8qICBSVEcgICAgICAgKi8gIEluc19SVEcsCisgICAgLyogIFJUSEcgICAgICAqLyAgSW5zX1JUSEcsCisgICAgLyogIFNNRCAgICAgICAqLyAgSW5zX1NNRCwKKyAgICAvKiAgRUxTRSAgICAgICovICBJbnNfRUxTRSwKKyAgICAvKiAgSk1QUiAgICAgICovICBJbnNfSk1QUiwKKyAgICAvKiAgU0N2VENpICAgICovICBJbnNfU0NWVENJLAorICAgIC8qICBTU3dDaSAgICAgKi8gIEluc19TU1dDSSwKKyAgICAvKiAgU1NXICAgICAgICovICBJbnNfU1NXLAorCisgICAgLyogIERVUCAgICAgICAqLyAgSW5zX0RVUCwKKyAgICAvKiAgUE9QICAgICAgICovICBJbnNfUE9QLAorICAgIC8qICBDTEVBUiAgICAgKi8gIEluc19DTEVBUiwKKyAgICAvKiAgU1dBUCAgICAgICovICBJbnNfU1dBUCwKKyAgICAvKiAgREVQVEggICAgICovICBJbnNfREVQVEgsCisgICAgLyogIENJTkRFWCAgICAqLyAgSW5zX0NJTkRFWCwKKyAgICAvKiAgTUlOREVYICAgICovICBJbnNfTUlOREVYLAorICAgIC8qICBBbGlnblBUUyAgKi8gIEluc19BTElHTlBUUywKKyAgICAvKiAgSU5TXzB4MjggICovICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgVVRQICAgICAgICovICBJbnNfVVRQLAorICAgIC8qICBMT09QQ0FMTCAgKi8gIEluc19MT09QQ0FMTCwKKyAgICAvKiAgQ0FMTCAgICAgICovICBJbnNfQ0FMTCwKKyAgICAvKiAgRkRFRiAgICAgICovICBJbnNfRkRFRiwKKyAgICAvKiAgRU5ERiAgICAgICovICBJbnNfRU5ERiwKKyAgICAvKiAgTURBUFswXSAgICovICBJbnNfTURBUCwKKyAgICAvKiAgTURBUFsxXSAgICovICBJbnNfTURBUCwKKworICAgIC8qICBJVVBbMF0gICAgKi8gIEluc19JVVAsCisgICAgLyogIElVUFsxXSAgICAqLyAgSW5zX0lVUCwKKyAgICAvKiAgU0hQWzBdICAgICovICBJbnNfU0hQLAorICAgIC8qICBTSFBbMV0gICAgKi8gIEluc19TSFAsCisgICAgLyogIFNIQ1swXSAgICAqLyAgSW5zX1NIQywKKyAgICAvKiAgU0hDWzFdICAgICovICBJbnNfU0hDLAorICAgIC8qICBTSFpbMF0gICAgKi8gIEluc19TSFosCisgICAgLyogIFNIWlsxXSAgICAqLyAgSW5zX1NIWiwKKyAgICAvKiAgU0hQSVggICAgICovICBJbnNfU0hQSVgsCisgICAgLyogIElQICAgICAgICAqLyAgSW5zX0lQLAorICAgIC8qICBNU0lSUFswXSAgKi8gIEluc19NU0lSUCwKKyAgICAvKiAgTVNJUlBbMV0gICovICBJbnNfTVNJUlAsCisgICAgLyogIEFsaWduUlAgICAqLyAgSW5zX0FMSUdOUlAsCisgICAgLyogIFJUREcgICAgICAqLyAgSW5zX1JUREcsCisgICAgLyogIE1JQVBbMF0gICAqLyAgSW5zX01JQVAsCisgICAgLyogIE1JQVBbMV0gICAqLyAgSW5zX01JQVAsCisKKyAgICAvKiAgTlB1c2hCICAgICovICBJbnNfTlBVU0hCLAorICAgIC8qICBOUHVzaFcgICAgKi8gIEluc19OUFVTSFcsCisgICAgLyogIFdTICAgICAgICAqLyAgSW5zX1dTLAorICAgIC8qICBSUyAgICAgICAgKi8gIEluc19SUywKKyAgICAvKiAgV0N2dFAgICAgICovICBJbnNfV0NWVFAsCisgICAgLyogIFJDdnQgICAgICAqLyAgSW5zX1JDVlQsCisgICAgLyogIEdDWzBdICAgICAqLyAgSW5zX0dDLAorICAgIC8qICBHQ1sxXSAgICAgKi8gIEluc19HQywKKyAgICAvKiAgU0NGUyAgICAgICovICBJbnNfU0NGUywKKyAgICAvKiAgTURbMF0gICAgICovICBJbnNfTUQsCisgICAgLyogIE1EWzFdICAgICAqLyAgSW5zX01ELAorICAgIC8qICBNUFBFTSAgICAgKi8gIEluc19NUFBFTSwKKyAgICAvKiAgTVBTICAgICAgICovICBJbnNfTVBTLAorICAgIC8qICBGbGlwT04gICAgKi8gIEluc19GTElQT04sCisgICAgLyogIEZsaXBPRkYgICAqLyAgSW5zX0ZMSVBPRkYsCisgICAgLyogIERFQlVHICAgICAqLyAgSW5zX0RFQlVHLAorCisgICAgLyogIExUICAgICAgICAqLyAgSW5zX0xULAorICAgIC8qICBMVEVRICAgICAgKi8gIEluc19MVEVRLAorICAgIC8qICBHVCAgICAgICAgKi8gIEluc19HVCwKKyAgICAvKiAgR1RFUSAgICAgICovICBJbnNfR1RFUSwKKyAgICAvKiAgRVEgICAgICAgICovICBJbnNfRVEsCisgICAgLyogIE5FUSAgICAgICAqLyAgSW5zX05FUSwKKyAgICAvKiAgT0REICAgICAgICovICBJbnNfT0RELAorICAgIC8qICBFVkVOICAgICAgKi8gIEluc19FVkVOLAorICAgIC8qICBJRiAgICAgICAgKi8gIEluc19JRiwKKyAgICAvKiAgRUlGICAgICAgICovICBJbnNfRUlGLAorICAgIC8qICBBTkQgICAgICAgKi8gIEluc19BTkQsCisgICAgLyogIE9SICAgICAgICAqLyAgSW5zX09SLAorICAgIC8qICBOT1QgICAgICAgKi8gIEluc19OT1QsCisgICAgLyogIERlbHRhUDEgICAqLyAgSW5zX0RFTFRBUCwKKyAgICAvKiAgU0RCICAgICAgICovICBJbnNfU0RCLAorICAgIC8qICBTRFMgICAgICAgKi8gIEluc19TRFMsCisKKyAgICAvKiAgQUREICAgICAgICovICBJbnNfQURELAorICAgIC8qICBTVUIgICAgICAgKi8gIEluc19TVUIsCisgICAgLyogIERJViAgICAgICAqLyAgSW5zX0RJViwKKyAgICAvKiAgTVVMICAgICAgICovICBJbnNfTVVMLAorICAgIC8qICBBQlMgICAgICAgKi8gIEluc19BQlMsCisgICAgLyogIE5FRyAgICAgICAqLyAgSW5zX05FRywKKyAgICAvKiAgRkxPT1IgICAgICovICBJbnNfRkxPT1IsCisgICAgLyogIENFSUxJTkcgICAqLyAgSW5zX0NFSUxJTkcsCisgICAgLyogIFJPVU5EWzBdICAqLyAgSW5zX1JPVU5ELAorICAgIC8qICBST1VORFsxXSAgKi8gIEluc19ST1VORCwKKyAgICAvKiAgUk9VTkRbMl0gICovICBJbnNfUk9VTkQsCisgICAgLyogIFJPVU5EWzNdICAqLyAgSW5zX1JPVU5ELAorICAgIC8qICBOUk9VTkRbMF0gKi8gIEluc19OUk9VTkQsCisgICAgLyogIE5ST1VORFsxXSAqLyAgSW5zX05ST1VORCwKKyAgICAvKiAgTlJPVU5EWzJdICovICBJbnNfTlJPVU5ELAorICAgIC8qICBOUk9VTkRbM10gKi8gIEluc19OUk9VTkQsCisKKyAgICAvKiAgV0N2dEYgICAgICovICBJbnNfV0NWVEYsCisgICAgLyogIERlbHRhUDIgICAqLyAgSW5zX0RFTFRBUCwKKyAgICAvKiAgRGVsdGFQMyAgICovICBJbnNfREVMVEFQLAorICAgIC8qICBEZWx0YUNuWzBdICovIEluc19ERUxUQUMsCisgICAgLyogIERlbHRhQ25bMV0gKi8gSW5zX0RFTFRBQywKKyAgICAvKiAgRGVsdGFDblsyXSAqLyBJbnNfREVMVEFDLAorICAgIC8qICBTUk9VTkQgICAgKi8gIEluc19TUk9VTkQsCisgICAgLyogIFM0NVJvdW5kICAqLyAgSW5zX1M0NVJPVU5ELAorICAgIC8qICBKUk9UICAgICAgKi8gIEluc19KUk9ULAorICAgIC8qICBKUk9GICAgICAgKi8gIEluc19KUk9GLAorICAgIC8qICBST0ZGICAgICAgKi8gIEluc19ST0ZGLAorICAgIC8qICBJTlNfMHg3QiAgKi8gIEluc19VTktOT1dOLAorICAgIC8qICBSVVRHICAgICAgKi8gIEluc19SVVRHLAorICAgIC8qICBSRFRHICAgICAgKi8gIEluc19SRFRHLAorICAgIC8qICBTQU5HVyAgICAgKi8gIEluc19TQU5HVywKKyAgICAvKiAgQUEgICAgICAgICovICBJbnNfQUEsCisKKyAgICAvKiAgRmxpcFBUICAgICovICBJbnNfRkxJUFBULAorICAgIC8qICBGbGlwUmdPTiAgKi8gIEluc19GTElQUkdPTiwKKyAgICAvKiAgRmxpcFJnT0ZGICovICBJbnNfRkxJUFJHT0ZGLAorICAgIC8qICBJTlNfMHg4MyAgKi8gIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHg4NCAgKi8gIEluc19VTktOT1dOLAorICAgIC8qICBTY2FuQ1RSTCAgKi8gIEluc19TQ0FOQ1RSTCwKKyAgICAvKiAgU0RQVlRMWzBdICovICBJbnNfU0RQVlRMLAorICAgIC8qICBTRFBWVExbMV0gKi8gIEluc19TRFBWVEwsCisgICAgLyogIEdldElORk8gICAqLyAgSW5zX0dFVElORk8sCisgICAgLyogIElERUYgICAgICAqLyAgSW5zX0lERUYsCisgICAgLyogIFJPTEwgICAgICAqLyAgSW5zX1JPTEwsCisgICAgLyogIE1BWCAgICAgICAqLyAgSW5zX01BWCwKKyAgICAvKiAgTUlOICAgICAgICovICBJbnNfTUlOLAorICAgIC8qICBTY2FuVFlQRSAgKi8gIEluc19TQ0FOVFlQRSwKKyAgICAvKiAgSW5zdENUUkwgICovICBJbnNfSU5TVENUUkwsCisgICAgLyogIElOU18weDhGICAqLyAgSW5zX1VOS05PV04sCisKKyAgICAvKiAgSU5TXzB4OTAgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weDkxICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHg5MiAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4OTMgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weDk0ICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHg5NSAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4OTYgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weDk3ICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHg5OCAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4OTkgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weDlBICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHg5QiAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4OUMgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weDlEICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHg5RSAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4OUYgICovICAgSW5zX1VOS05PV04sCisKKyAgICAvKiAgSU5TXzB4QTAgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weEExICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHhBMiAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4QTMgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weEE0ICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHhBNSAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4QTYgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weEE3ICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHhBOCAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4QTkgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weEFBICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHhBQiAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4QUMgICovICAgSW5zX1VOS05PV04sCisgICAgLyogIElOU18weEFEICAqLyAgIEluc19VTktOT1dOLAorICAgIC8qICBJTlNfMHhBRSAgKi8gICBJbnNfVU5LTk9XTiwKKyAgICAvKiAgSU5TXzB4QUYgICovICAgSW5zX1VOS05PV04sCisKKyAgICAvKiAgUHVzaEJbMF0gICovICBJbnNfUFVTSEIsCisgICAgLyogIFB1c2hCWzFdICAqLyAgSW5zX1BVU0hCLAorICAgIC8qICBQdXNoQlsyXSAgKi8gIEluc19QVVNIQiwKKyAgICAvKiAgUHVzaEJbM10gICovICBJbnNfUFVTSEIsCisgICAgLyogIFB1c2hCWzRdICAqLyAgSW5zX1BVU0hCLAorICAgIC8qICBQdXNoQls1XSAgKi8gIEluc19QVVNIQiwKKyAgICAvKiAgUHVzaEJbNl0gICovICBJbnNfUFVTSEIsCisgICAgLyogIFB1c2hCWzddICAqLyAgSW5zX1BVU0hCLAorICAgIC8qICBQdXNoV1swXSAgKi8gIEluc19QVVNIVywKKyAgICAvKiAgUHVzaFdbMV0gICovICBJbnNfUFVTSFcsCisgICAgLyogIFB1c2hXWzJdICAqLyAgSW5zX1BVU0hXLAorICAgIC8qICBQdXNoV1szXSAgKi8gIEluc19QVVNIVywKKyAgICAvKiAgUHVzaFdbNF0gICovICBJbnNfUFVTSFcsCisgICAgLyogIFB1c2hXWzVdICAqLyAgSW5zX1BVU0hXLAorICAgIC8qICBQdXNoV1s2XSAgKi8gIEluc19QVVNIVywKKyAgICAvKiAgUHVzaFdbN10gICovICBJbnNfUFVTSFcsCisKKyAgICAvKiAgTURSUFswMF0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFswMV0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFswMl0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFswM10gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFswNF0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFswNV0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFswNl0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFswN10gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFswOF0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFswOV0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFsxMF0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFsxMV0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFsxMl0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFsxM10gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFsxNF0gICovICBJbnNfTURSUCwKKyAgICAvKiAgTURSUFsxNV0gICovICBJbnNfTURSUCwKKworICAgIC8qICBNRFJQWzE2XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzE3XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzE4XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzE5XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzIwXSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzIxXSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzIyXSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzIzXSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzI0XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzI1XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzI2XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzI3XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzI4XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzI5XSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzMwXSAgKi8gIEluc19NRFJQLAorICAgIC8qICBNRFJQWzMxXSAgKi8gIEluc19NRFJQLAorCisgICAgLyogIE1JUlBbMDBdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMDFdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMDJdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMDNdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMDRdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMDVdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMDZdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMDddICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMDhdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMDldICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMTBdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMTFdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMTJdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMTNdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMTRdICAqLyAgSW5zX01JUlAsCisgICAgLyogIE1JUlBbMTVdICAqLyAgSW5zX01JUlAsCisKKyAgICAvKiAgTUlSUFsxNl0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsxN10gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsxOF0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsxOV0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyMF0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyMV0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyMl0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyM10gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyNF0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyNV0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyNl0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyN10gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyOF0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFsyOV0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFszMF0gICovICBJbnNfTUlSUCwKKyAgICAvKiAgTUlSUFszMV0gICovICBJbnNfTUlSUAorICB9OworCisKKyNlbmRpZiAvKiAhVFRfQ09ORklHX09QVElPTl9JTlRFUlBSRVRFUl9TV0lUQ0ggKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogUlVOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgVGhpcyBmdW5jdGlvbiBleGVjdXRlcyBhIHJ1biBvZiBvcGNvZGVzLiAgSXQgd2lsbCBleGl0IGluIHRoZSAgICAgICAgKi8KKyAgLyogIGZvbGxvd2luZyBjYXNlczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgLSBFcnJvcnMgKGluIHdoaWNoIGNhc2UgaXQgcmV0dXJucyBGQUxTRSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAtIFJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIG1haW4gY29kZSByYW5nZSAocmV0dXJucyBUUlVFKS4gICAgICAgICAgICAqLworICAvKiAgICBSZWFjaGluZyB0aGUgZW5kIG9mIGEgY29kZSByYW5nZSB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsIGlzIGFuICAgICAgKi8KKyAgLyogICAgZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgLSBBZnRlciBleGVjdXRpbmcgb25lIHNpbmdsZSBvcGNvZGUsIGlmIHRoZSBmbGFnIGBJbnN0cnVjdGlvbl9UcmFwJyAgKi8KKyAgLyogICAgaXMgc2V0IHRvIFRSVUUgKHJldHVybnMgVFJVRSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgT24gZXhpdCB3aXRoIFRSVUUsIHRlc3QgSVAgPCBDb2RlU2l6ZSB0byBrbm93IHdoZXRoZXIgaXQgY29tZXMgZnJvbSAgKi8KKyAgLyogIGFuIGluc3RydWN0aW9uIHRyYXAgb3IgYSBub3JtYWwgdGVybWluYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIE5vdGU6IFRoZSBkb2N1bWVudGVkIERFQlVHIG9wY29kZSBwb3BzIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2suICBUaGlzICovCisgIC8qICAgICAgICBiZWhhdmlvdXIgaXMgdW5zdXBwb3J0ZWQ7IGhlcmUgYSBERUJVRyBvcGNvZGUgaXMgYWx3YXlzIGFuICAgICAqLworICAvKiAgICAgICAgZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUSElTIElTIFRIRSBJTlRFUlBSRVRFUidTIE1BSU4gTE9PUC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBJbnN0cnVjdGlvbnMgYXBwZWFyIGluIHRoZSBzcGVjaWZpY2F0aW9uJ3Mgb3JkZXIuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKiBkb2N1bWVudGF0aW9uIGlzIGluIHR0aW50ZXJwLmggKi8KKworICBGVF9FWFBPUlRfREVGKCBGVF9FcnJvciApCisgIFRUX1J1bklucyggVFRfRXhlY0NvbnRleHQgIGV4YyApCisgIHsKKyAgICBGVF9Mb25nICAgIGluc19jb3VudGVyID0gMDsgIC8qIGV4ZWN1dGVkIGluc3RydWN0aW9ucyBjb3VudGVyICovCisgICAgRlRfVVNob3J0ICBpOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgRlRfQnl0ZSAgICBvcGNvZGVfcGF0dGVyblsxXVsyXSA9IHsKKyAgICAgICAgICAgICAgICAgIC8qICM4IFR5cGVNYW4gVGFsayBBbGlnbiAqLworICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAweDA2LCAvKiBTUFZUTCAgICovCisgICAgICAgICAgICAgICAgICAgIDB4N0QsIC8qIFJEVEcgICAgKi8KKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfTsKKyAgICBGVF9VU2hvcnQgIG9wY29kZV9wYXR0ZXJucyAgID0gMTsKKyAgICBGVF9VU2hvcnQgIG9wY29kZV9wb2ludGVyWzFdID0geyAwIH07CisgICAgRlRfVVNob3J0ICBvcGNvZGVfc2l6ZVsxXSAgICA9IHsgMSB9OworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NUQVRJQ19SQVNURVIKKyAgICBjdXIgPSAqZXhjOworI2VuZGlmCisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcKKyAgICBDVVIuaXVwX2NhbGxlZCA9IEZBTFNFOworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisgICAgLyogc2V0IENWVCBmdW5jdGlvbnMgKi8KKyAgICBDVVIudHRfbWV0cmljcy5yYXRpbyA9IDA7CisgICAgaWYgKCBDVVIubWV0cmljcy54X3BwZW0gIT0gQ1VSLm1ldHJpY3MueV9wcGVtICkKKyAgICB7CisgICAgICAvKiBub24tc3F1YXJlIHBpeGVscywgdXNlIHRoZSBzdHJldGNoZWQgcm91dGluZXMgKi8KKyAgICAgIENVUi5mdW5jX3JlYWRfY3Z0ICA9IFJlYWRfQ1ZUX1N0cmV0Y2hlZDsKKyAgICAgIENVUi5mdW5jX3dyaXRlX2N2dCA9IFdyaXRlX0NWVF9TdHJldGNoZWQ7CisgICAgICBDVVIuZnVuY19tb3ZlX2N2dCAgPSBNb3ZlX0NWVF9TdHJldGNoZWQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBzcXVhcmUgcGl4ZWxzLCB1c2Ugbm9ybWFsIHJvdXRpbmVzICovCisgICAgICBDVVIuZnVuY19yZWFkX2N2dCAgPSBSZWFkX0NWVDsKKyAgICAgIENVUi5mdW5jX3dyaXRlX2N2dCA9IFdyaXRlX0NWVDsKKyAgICAgIENVUi5mdW5jX21vdmVfY3Z0ICA9IE1vdmVfQ1ZUOworICAgIH0KKworICAgIENPTVBVVEVfRnVuY3MoKTsKKyAgICBDT01QVVRFX1JvdW5kKCAoRlRfQnl0ZSlleGMtPkdTLnJvdW5kX3N0YXRlICk7CisKKyAgICBkbworICAgIHsKKyAgICAgIENVUi5vcGNvZGUgPSBDVVIuY29kZVtDVVIuSVBdOworCisgICAgICBGVF9UUkFDRTcoKCAiICAiICkpOworICAgICAgRlRfVFJBQ0U3KCggb3Bjb2RlX25hbWVbQ1VSLm9wY29kZV0gKSk7CisgICAgICBGVF9UUkFDRTcoKCAiXG4iICkpOworCisgICAgICBpZiAoICggQ1VSLmxlbmd0aCA9IG9wY29kZV9sZW5ndGhbQ1VSLm9wY29kZV0gKSA8IDAgKQorICAgICAgeworICAgICAgICBpZiAoIENVUi5JUCArIDEgPj0gQ1VSLmNvZGVTaXplICkKKyAgICAgICAgICBnb3RvIExFcnJvckNvZGVPdmVyZmxvd187CisKKyAgICAgICAgQ1VSLmxlbmd0aCA9IDIgLSBDVVIubGVuZ3RoICogQ1VSLmNvZGVbQ1VSLklQICsgMV07CisgICAgICB9CisKKyAgICAgIGlmICggQ1VSLklQICsgQ1VSLmxlbmd0aCA+IENVUi5jb2RlU2l6ZSApCisgICAgICAgIGdvdG8gTEVycm9yQ29kZU92ZXJmbG93XzsKKworICAgICAgLyogRmlyc3QsIGxldCdzIGNoZWNrIGZvciBlbXB0eSBzdGFjayBhbmQgb3ZlcmZsb3cgKi8KKyAgICAgIENVUi5hcmdzID0gQ1VSLnRvcCAtICggUG9wX1B1c2hfQ291bnRbQ1VSLm9wY29kZV0gPj4gNCApOworCisgICAgICAvKiBgYXJncycgaXMgdGhlIHRvcCBvZiB0aGUgc3RhY2sgb25jZSBhcmd1bWVudHMgaGF2ZSBiZWVuIHBvcHBlZC4gKi8KKyAgICAgIC8qIE9uZSBjYW4gYWxzbyBpbnRlcnByZXQgaXQgYXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IGFyZ3VtZW50LiAgICAqLworICAgICAgaWYgKCBDVVIuYXJncyA8IDAgKQorICAgICAgeworICAgICAgICBpZiAoIENVUi5wZWRhbnRpY19oaW50aW5nICkKKyAgICAgICAgeworICAgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBUb29fRmV3X0FyZ3VtZW50cyApOworICAgICAgICAgIGdvdG8gTEVycm9yTGFiZWxfOworICAgICAgICB9CisKKyAgICAgICAgLyogcHVzaCB6ZXJvZXMgb250byB0aGUgc3RhY2sgKi8KKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBQb3BfUHVzaF9Db3VudFtDVVIub3Bjb2RlXSA+PiA0OyBpKysgKQorICAgICAgICAgIENVUi5zdGFja1tpXSA9IDA7CisgICAgICAgIENVUi5hcmdzID0gMDsKKyAgICAgIH0KKworICAgICAgQ1VSLm5ld190b3AgPSBDVVIuYXJncyArICggUG9wX1B1c2hfQ291bnRbQ1VSLm9wY29kZV0gJiAxNSApOworCisgICAgICAvKiBgbmV3X3RvcCcgaXMgdGhlIG5ldyB0b3Agb2YgdGhlIHN0YWNrLCBhZnRlciB0aGUgaW5zdHJ1Y3Rpb24ncyAqLworICAgICAgLyogZXhlY3V0aW9uLiAgYHRvcCcgd2lsbCBiZSBzZXQgdG8gYG5ld190b3AnIGFmdGVyIHRoZSBgc3dpdGNoJyAgKi8KKyAgICAgIC8qIHN0YXRlbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBpZiAoIENVUi5uZXdfdG9wID4gQ1VSLnN0YWNrU2l6ZSApCisgICAgICB7CisgICAgICAgIENVUi5lcnJvciA9IEZUX1RIUk9XKCBTdGFja19PdmVyZmxvdyApOworICAgICAgICBnb3RvIExFcnJvckxhYmVsXzsKKyAgICAgIH0KKworICAgICAgQ1VSLnN0ZXBfaW5zID0gVFJVRTsKKyAgICAgIENVUi5lcnJvciAgICA9IEZUX0Vycl9PazsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworCisgICAgICBpZiAoIFNVQlBJWEVMX0hJTlRJTkcgKQorICAgICAgeworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IG9wY29kZV9wYXR0ZXJuczsgaSsrICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggb3Bjb2RlX3BvaW50ZXJbaV0gPCBvcGNvZGVfc2l6ZVtpXSAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgIENVUi5vcGNvZGUgPT0gb3Bjb2RlX3BhdHRlcm5baV1bb3Bjb2RlX3BvaW50ZXJbaV1dICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBvcGNvZGVfcG9pbnRlcltpXSArPSAxOworCisgICAgICAgICAgICBpZiAoIG9wY29kZV9wb2ludGVyW2ldID09IG9wY29kZV9zaXplW2ldICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgRlRfVFJBQ0U3KCggInNwaDogb3Bjb2RlIHB0cm46ICVkLCAlcyAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSLmZhY2UtPnJvb3QuZmFtaWx5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUi5mYWNlLT5yb290LnN0eWxlX25hbWUgKSk7CisKKyAgICAgICAgICAgICAgc3dpdGNoICggaSApCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIG9wY29kZV9wb2ludGVyW2ldID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgb3Bjb2RlX3BvaW50ZXJbaV0gPSAwOworICAgICAgICB9CisgICAgICB9CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fSU5URVJQUkVURVJfU1dJVENICisKKyAgICAgIHsKKyAgICAgICAgRlRfTG9uZyogIGFyZ3MgICA9IENVUi5zdGFjayArIENVUi5hcmdzOworICAgICAgICBGVF9CeXRlICAgb3Bjb2RlID0gQ1VSLm9wY29kZTsKKworCisjdW5kZWYgIEFSUkFZX0JPVU5EX0VSUk9SCisjZGVmaW5lIEFSUkFZX0JPVU5EX0VSUk9SICBnb3RvIFNldF9JbnZhbGlkX1JlZgorCisKKyAgICAgICAgc3dpdGNoICggb3Bjb2RlICkKKyAgICAgICAgeworICAgICAgICBjYXNlIDB4MDA6ICAvKiBTVlRDQSB5ICAqLworICAgICAgICBjYXNlIDB4MDE6ICAvKiBTVlRDQSB4ICAqLworICAgICAgICBjYXNlIDB4MDI6ICAvKiBTUHZUQ0EgeSAqLworICAgICAgICBjYXNlIDB4MDM6ICAvKiBTUHZUQ0EgeCAqLworICAgICAgICBjYXNlIDB4MDQ6ICAvKiBTRnZUQ0EgeSAqLworICAgICAgICBjYXNlIDB4MDU6ICAvKiBTRnZUQ0EgeCAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1Nob3J0ICBBQSwgQkI7CisKKworICAgICAgICAgICAgQUEgPSAoRlRfU2hvcnQpKCAoIG9wY29kZSAmIDEgKSA8PCAxNCApOworICAgICAgICAgICAgQkIgPSAoRlRfU2hvcnQpKCBBQSBeIDB4NDAwMCApOworCisgICAgICAgICAgICBpZiAoIG9wY29kZSA8IDQgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBDVVIuR1MucHJvalZlY3Rvci54ID0gQUE7CisgICAgICAgICAgICAgIENVUi5HUy5wcm9qVmVjdG9yLnkgPSBCQjsKKworICAgICAgICAgICAgICBDVVIuR1MuZHVhbFZlY3Rvci54ID0gQUE7CisgICAgICAgICAgICAgIENVUi5HUy5kdWFsVmVjdG9yLnkgPSBCQjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgR1VFU1NfVkVDVE9SKCBwcm9qVmVjdG9yICk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggKCBvcGNvZGUgJiAyICkgPT0gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIENVUi5HUy5mcmVlVmVjdG9yLnggPSBBQTsKKyAgICAgICAgICAgICAgQ1VSLkdTLmZyZWVWZWN0b3IueSA9IEJCOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBHVUVTU19WRUNUT1IoIGZyZWVWZWN0b3IgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ09NUFVURV9GdW5jcygpOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MDY6ICAvKiBTUHZUTCAvLyAqLworICAgICAgICBjYXNlIDB4MDc6ICAvKiBTUHZUTCArICAqLworICAgICAgICAgIERPX1NQVlRMCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDA4OiAgLyogU0Z2VEwgLy8gKi8KKyAgICAgICAgY2FzZSAweDA5OiAgLyogU0Z2VEwgKyAgKi8KKyAgICAgICAgICBET19TRlZUTAorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHgwQTogIC8qIFNQdkZTICovCisgICAgICAgICAgRE9fU1BWRlMKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MEI6ICAvKiBTRnZGUyAqLworICAgICAgICAgIERPX1NGVkZTCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDBDOiAgLyogR1BWICovCisgICAgICAgICAgRE9fR1BWCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDBEOiAgLyogR0ZWICovCisgICAgICAgICAgRE9fR0ZWCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDBFOiAgLyogU0Z2VFB2ICovCisgICAgICAgICAgRE9fU0ZWVFBWCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDBGOiAgLyogSVNFQ1QgICovCisgICAgICAgICAgSW5zX0lTRUNUKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHgxMDogIC8qIFNSUDAgKi8KKyAgICAgICAgICBET19TUlAwCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDExOiAgLyogU1JQMSAqLworICAgICAgICAgIERPX1NSUDEKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MTI6ICAvKiBTUlAyICovCisgICAgICAgICAgRE9fU1JQMgorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHgxMzogIC8qIFNaUDAgKi8KKyAgICAgICAgICBJbnNfU1pQMCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MTQ6ICAvKiBTWlAxICovCisgICAgICAgICAgSW5zX1NaUDEoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDE1OiAgLyogU1pQMiAqLworICAgICAgICAgIEluc19TWlAyKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHgxNjogIC8qIFNaUFMgKi8KKyAgICAgICAgICBJbnNfU1pQUyggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MTc6ICAvKiBTTE9PUCAqLworICAgICAgICAgIERPX1NMT09QCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDE4OiAgLyogUlRHICovCisgICAgICAgICAgRE9fUlRHCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDE5OiAgLyogUlRIRyAqLworICAgICAgICAgIERPX1JUSEcKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MUE6ICAvKiBTTUQgKi8KKyAgICAgICAgICBET19TTUQKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MUI6ICAvKiBFTFNFICovCisgICAgICAgICAgSW5zX0VMU0UoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDFDOiAgLyogSk1QUiAqLworICAgICAgICAgIERPX0pNUFIKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MUQ6ICAvKiBTQ1ZUQ0kgKi8KKyAgICAgICAgICBET19TQ1ZUQ0kKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MUU6ICAvKiBTU1dDSSAqLworICAgICAgICAgIERPX1NTV0NJCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDFGOiAgLyogU1NXICovCisgICAgICAgICAgRE9fU1NXCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDIwOiAgLyogRFVQICovCisgICAgICAgICAgRE9fRFVQCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDIxOiAgLyogUE9QICovCisgICAgICAgICAgLyogbm90aGluZyA6LSkgKi8KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MjI6ICAvKiBDTEVBUiAqLworICAgICAgICAgIERPX0NMRUFSCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDIzOiAgLyogU1dBUCAqLworICAgICAgICAgIERPX1NXQVAKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MjQ6ICAvKiBERVBUSCAqLworICAgICAgICAgIERPX0RFUFRICisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDI1OiAgLyogQ0lOREVYICovCisgICAgICAgICAgRE9fQ0lOREVYCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDI2OiAgLyogTUlOREVYICovCisgICAgICAgICAgSW5zX01JTkRFWCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4Mjc6ICAvKiBBTElHTlBUUyAqLworICAgICAgICAgIEluc19BTElHTlBUUyggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4Mjg6ICAvKiA/Pz8/ICovCisgICAgICAgICAgSW5zX1VOS05PV04oIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDI5OiAgLyogVVRQICovCisgICAgICAgICAgSW5zX1VUUCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MkE6ICAvKiBMT09QQ0FMTCAqLworICAgICAgICAgIEluc19MT09QQ0FMTCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MkI6ICAvKiBDQUxMICovCisgICAgICAgICAgSW5zX0NBTEwoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDJDOiAgLyogRkRFRiAqLworICAgICAgICAgIEluc19GREVGKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHgyRDogIC8qIEVOREYgKi8KKyAgICAgICAgICBJbnNfRU5ERiggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MkU6ICAvKiBNREFQICovCisgICAgICAgIGNhc2UgMHgyRjogIC8qIE1EQVAgKi8KKyAgICAgICAgICBJbnNfTURBUCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MzA6ICAvKiBJVVAgKi8KKyAgICAgICAgY2FzZSAweDMxOiAgLyogSVVQICovCisgICAgICAgICAgSW5zX0lVUCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MzI6ICAvKiBTSFAgKi8KKyAgICAgICAgY2FzZSAweDMzOiAgLyogU0hQICovCisgICAgICAgICAgSW5zX1NIUCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MzQ6ICAvKiBTSEMgKi8KKyAgICAgICAgY2FzZSAweDM1OiAgLyogU0hDICovCisgICAgICAgICAgSW5zX1NIQyggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4MzY6ICAvKiBTSFogKi8KKyAgICAgICAgY2FzZSAweDM3OiAgLyogU0haICovCisgICAgICAgICAgSW5zX1NIWiggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4Mzg6ICAvKiBTSFBJWCAqLworICAgICAgICAgIEluc19TSFBJWCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4Mzk6ICAvKiBJUCAgICAqLworICAgICAgICAgIEluc19JUCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4M0E6ICAvKiBNU0lSUCAqLworICAgICAgICBjYXNlIDB4M0I6ICAvKiBNU0lSUCAqLworICAgICAgICAgIEluc19NU0lSUCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4M0M6ICAvKiBBbGlnblJQICovCisgICAgICAgICAgSW5zX0FMSUdOUlAoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDNEOiAgLyogUlRERyAqLworICAgICAgICAgIERPX1JUREcKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4M0U6ICAvKiBNSUFQICovCisgICAgICAgIGNhc2UgMHgzRjogIC8qIE1JQVAgKi8KKyAgICAgICAgICBJbnNfTUlBUCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NDA6ICAvKiBOUFVTSEIgKi8KKyAgICAgICAgICBJbnNfTlBVU0hCKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg0MTogIC8qIE5QVVNIVyAqLworICAgICAgICAgIEluc19OUFVTSFcoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDQyOiAgLyogV1MgKi8KKyAgICAgICAgICBET19XUworICAgICAgICAgIGJyZWFrOworCisgICAgICBTZXRfSW52YWxpZF9SZWY6CisgICAgICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9SZWZlcmVuY2UgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NDM6ICAvKiBSUyAqLworICAgICAgICAgIERPX1JTCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDQ0OiAgLyogV0NWVFAgKi8KKyAgICAgICAgICBET19XQ1ZUUAorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg0NTogIC8qIFJDVlQgKi8KKyAgICAgICAgICBET19SQ1ZUCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDQ2OiAgLyogR0MgKi8KKyAgICAgICAgY2FzZSAweDQ3OiAgLyogR0MgKi8KKyAgICAgICAgICBJbnNfR0MoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDQ4OiAgLyogU0NGUyAqLworICAgICAgICAgIEluc19TQ0ZTKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg0OTogIC8qIE1EICovCisgICAgICAgIGNhc2UgMHg0QTogIC8qIE1EICovCisgICAgICAgICAgSW5zX01EKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg0QjogIC8qIE1QUEVNICovCisgICAgICAgICAgRE9fTVBQRU0KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NEM6ICAvKiBNUFMgKi8KKyAgICAgICAgICBET19NUFMKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NEQ6ICAvKiBGTElQT04gKi8KKyAgICAgICAgICBET19GTElQT04KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NEU6ICAvKiBGTElQT0ZGICovCisgICAgICAgICAgRE9fRkxJUE9GRgorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg0RjogIC8qIERFQlVHICovCisgICAgICAgICAgRE9fREVCVUcKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NTA6ICAvKiBMVCAqLworICAgICAgICAgIERPX0xUCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDUxOiAgLyogTFRFUSAqLworICAgICAgICAgIERPX0xURVEKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NTI6ICAvKiBHVCAqLworICAgICAgICAgIERPX0dUCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDUzOiAgLyogR1RFUSAqLworICAgICAgICAgIERPX0dURVEKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NTQ6ICAvKiBFUSAqLworICAgICAgICAgIERPX0VRCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDU1OiAgLyogTkVRICovCisgICAgICAgICAgRE9fTkVRCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDU2OiAgLyogT0REICovCisgICAgICAgICAgRE9fT0RECisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDU3OiAgLyogRVZFTiAqLworICAgICAgICAgIERPX0VWRU4KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NTg6ICAvKiBJRiAqLworICAgICAgICAgIEluc19JRiggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NTk6ICAvKiBFSUYgKi8KKyAgICAgICAgICAvKiBkbyBub3RoaW5nICovCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDVBOiAgLyogQU5EICovCisgICAgICAgICAgRE9fQU5ECisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDVCOiAgLyogT1IgKi8KKyAgICAgICAgICBET19PUgorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg1QzogIC8qIE5PVCAqLworICAgICAgICAgIERPX05PVAorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg1RDogIC8qIERFTFRBUDEgKi8KKyAgICAgICAgICBJbnNfREVMVEFQKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg1RTogIC8qIFNEQiAqLworICAgICAgICAgIERPX1NEQgorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg1RjogIC8qIFNEUyAqLworICAgICAgICAgIERPX1NEUworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg2MDogIC8qIEFERCAqLworICAgICAgICAgIERPX0FERAorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg2MTogIC8qIFNVQiAqLworICAgICAgICAgIERPX1NVQgorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg2MjogIC8qIERJViAqLworICAgICAgICAgIERPX0RJVgorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg2MzogIC8qIE1VTCAqLworICAgICAgICAgIERPX01VTAorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg2NDogIC8qIEFCUyAqLworICAgICAgICAgIERPX0FCUworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg2NTogIC8qIE5FRyAqLworICAgICAgICAgIERPX05FRworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg2NjogIC8qIEZMT09SICovCisgICAgICAgICAgRE9fRkxPT1IKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4Njc6ICAvKiBDRUlMSU5HICovCisgICAgICAgICAgRE9fQ0VJTElORworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg2ODogIC8qIFJPVU5EICovCisgICAgICAgIGNhc2UgMHg2OTogIC8qIFJPVU5EICovCisgICAgICAgIGNhc2UgMHg2QTogIC8qIFJPVU5EICovCisgICAgICAgIGNhc2UgMHg2QjogIC8qIFJPVU5EICovCisgICAgICAgICAgRE9fUk9VTkQKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NkM6ICAvKiBOUk9VTkQgKi8KKyAgICAgICAgY2FzZSAweDZEOiAgLyogTlJPVU5EICovCisgICAgICAgIGNhc2UgMHg2RTogIC8qIE5SUlVORCAqLworICAgICAgICBjYXNlIDB4NkY6ICAvKiBOUk9VTkQgKi8KKyAgICAgICAgICBET19OUk9VTkQKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NzA6ICAvKiBXQ1ZURiAqLworICAgICAgICAgIERPX1dDVlRGCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDcxOiAgLyogREVMVEFQMiAqLworICAgICAgICBjYXNlIDB4NzI6ICAvKiBERUxUQVAzICovCisgICAgICAgICAgSW5zX0RFTFRBUCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4NzM6ICAvKiBERUxUQUMwICovCisgICAgICAgIGNhc2UgMHg3NDogIC8qIERFTFRBQzEgKi8KKyAgICAgICAgY2FzZSAweDc1OiAgLyogREVMVEFDMiAqLworICAgICAgICAgIEluc19ERUxUQUMoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDc2OiAgLyogU1JPVU5EICovCisgICAgICAgICAgRE9fU1JPVU5ECisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDc3OiAgLyogUzQ1Um91bmQgKi8KKyAgICAgICAgICBET19TNDVST1VORAorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg3ODogIC8qIEpST1QgKi8KKyAgICAgICAgICBET19KUk9UCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDc5OiAgLyogSlJPRiAqLworICAgICAgICAgIERPX0pST0YKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4N0E6ICAvKiBST0ZGICovCisgICAgICAgICAgRE9fUk9GRgorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg3QjogIC8qID8/Pz8gKi8KKyAgICAgICAgICBJbnNfVU5LTk9XTiggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4N0M6ICAvKiBSVVRHICovCisgICAgICAgICAgRE9fUlVURworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg3RDogIC8qIFJEVEcgKi8KKyAgICAgICAgICBET19SRFRHCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDdFOiAgLyogU0FOR1cgKi8KKyAgICAgICAgY2FzZSAweDdGOiAgLyogQUEgICAgKi8KKyAgICAgICAgICAvKiBub3RoaW5nIC0gb2Jzb2xldGUgKi8KKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4ODA6ICAvKiBGTElQUFQgKi8KKyAgICAgICAgICBJbnNfRkxJUFBUKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg4MTogIC8qIEZMSVBSR09OICovCisgICAgICAgICAgSW5zX0ZMSVBSR09OKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg4MjogIC8qIEZMSVBSR09GRiAqLworICAgICAgICAgIEluc19GTElQUkdPRkYoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDgzOiAgLyogVU5LTk9XTiAqLworICAgICAgICBjYXNlIDB4ODQ6ICAvKiBVTktOT1dOICovCisgICAgICAgICAgSW5zX1VOS05PV04oIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDg1OiAgLyogU0NBTkNUUkwgKi8KKyAgICAgICAgICBJbnNfU0NBTkNUUkwoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDg2OiAgLyogU0RQVlRMICovCisgICAgICAgIGNhc2UgMHg4NzogIC8qIFNEUFZUTCAqLworICAgICAgICAgIEluc19TRFBWVEwoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDg4OiAgLyogR0VUSU5GTyAqLworICAgICAgICAgIEluc19HRVRJTkZPKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMHg4OTogIC8qIElERUYgKi8KKyAgICAgICAgICBJbnNfSURFRiggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDB4OEE6ICAvKiBST0xMICovCisgICAgICAgICAgSW5zX1JPTEwoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDhCOiAgLyogTUFYICovCisgICAgICAgICAgRE9fTUFYCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDhDOiAgLyogTUlOICovCisgICAgICAgICAgRE9fTUlOCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDhEOiAgLyogU0NBTlRZUEUgKi8KKyAgICAgICAgICBJbnNfU0NBTlRZUEUoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDhFOiAgLyogSU5TVENUUkwgKi8KKyAgICAgICAgICBJbnNfSU5TVENUUkwoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAweDhGOgorICAgICAgICAgIEluc19VTktOT1dOKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgaWYgKCBvcGNvZGUgPj0gMHhFMCApCisgICAgICAgICAgICBJbnNfTUlSUCggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBlbHNlIGlmICggb3Bjb2RlID49IDB4QzAgKQorICAgICAgICAgICAgSW5zX01EUlAoIEVYRUNfQVJHXyBhcmdzICk7CisgICAgICAgICAgZWxzZSBpZiAoIG9wY29kZSA+PSAweEI4ICkKKyAgICAgICAgICAgIEluc19QVVNIVyggRVhFQ19BUkdfIGFyZ3MgKTsKKyAgICAgICAgICBlbHNlIGlmICggb3Bjb2RlID49IDB4QjAgKQorICAgICAgICAgICAgSW5zX1BVU0hCKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc19VTktOT1dOKCBFWEVDX0FSR18gYXJncyApOworICAgICAgICB9CisKKyAgICAgIH0KKworI2Vsc2UKKworICAgICAgSW5zdHJ1Y3RfRGlzcGF0Y2hbQ1VSLm9wY29kZV0oIEVYRUNfQVJHXyAmQ1VSLnN0YWNrW0NVUi5hcmdzXSApOworCisjZW5kaWYgLyogVFRfQ09ORklHX09QVElPTl9JTlRFUlBSRVRFUl9TV0lUQ0ggKi8KKworICAgICAgaWYgKCBDVVIuZXJyb3IgKQorICAgICAgeworICAgICAgICBzd2l0Y2ggKCBDVVIuZXJyb3IgKQorICAgICAgICB7CisgICAgICAgICAgLyogbG9va2luZyBmb3IgcmVkZWZpbmVkIGluc3RydWN0aW9ucyAqLworICAgICAgICBjYXNlIEZUX0VSUiggSW52YWxpZF9PcGNvZGUgKToKKyAgICAgICAgICB7CisgICAgICAgICAgICBUVF9EZWZSZWNvcmQqICBkZWYgICA9IENVUi5JRGVmczsKKyAgICAgICAgICAgIFRUX0RlZlJlY29yZCogIGxpbWl0ID0gZGVmICsgQ1VSLm51bUlEZWZzOworCisKKyAgICAgICAgICAgIGZvciAoIDsgZGVmIDwgbGltaXQ7IGRlZisrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKCBkZWYtPmFjdGl2ZSAmJiBDVVIub3Bjb2RlID09IChGVF9CeXRlKWRlZi0+b3BjICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRUX0NhbGxSZWMqICBjYWxscmVjOworCisKKyAgICAgICAgICAgICAgICBpZiAoIENVUi5jYWxsVG9wID49IENVUi5jYWxsU2l6ZSApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIEludmFsaWRfUmVmZXJlbmNlICk7CisgICAgICAgICAgICAgICAgICBnb3RvIExFcnJvckxhYmVsXzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYWxscmVjID0gJkNVUi5jYWxsU3RhY2tbQ1VSLmNhbGxUb3BdOworCisgICAgICAgICAgICAgICAgY2FsbHJlYy0+Q2FsbGVyX1JhbmdlID0gQ1VSLmN1clJhbmdlOworICAgICAgICAgICAgICAgIGNhbGxyZWMtPkNhbGxlcl9JUCAgICA9IENVUi5JUCArIDE7CisgICAgICAgICAgICAgICAgY2FsbHJlYy0+Q3VyX0NvdW50ICAgID0gMTsKKyAgICAgICAgICAgICAgICBjYWxscmVjLT5DdXJfUmVzdGFydCAgPSBkZWYtPnN0YXJ0OworICAgICAgICAgICAgICAgIGNhbGxyZWMtPkN1cl9FbmQgICAgICA9IGRlZi0+ZW5kOworCisgICAgICAgICAgICAgICAgaWYgKCBJTlNfR290b19Db2RlUmFuZ2UoIGRlZi0+cmFuZ2UsIGRlZi0+c3RhcnQgKSA9PSBGQUlMVVJFICkKKyAgICAgICAgICAgICAgICAgIGdvdG8gTEVycm9yTGFiZWxfOworCisgICAgICAgICAgICAgICAgZ290byBMU3VpdGVMYWJlbF87CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9PcGNvZGUgKTsKKyAgICAgICAgICBnb3RvIExFcnJvckxhYmVsXzsKKworI2lmIDAKKyAgICAgICAgICBicmVhazsgICAvKiBVbnJlYWNoYWJsZSBjb2RlIHdhcm5pbmcgc3VwcHJlc3Npb24uICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgLyogTGVhdmUgdG8gcmVtaW5kIGluIGNhc2UgYSBsYXRlciBjaGFuZ2UgdGhlIGVkaXRvciAqLworICAgICAgICAgICAgICAgICAgIC8qIHRvIGNvbnNpZGVyIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNlbmRpZgorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZ290byBMRXJyb3JMYWJlbF87CisKKyNpZiAwCisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgQ1VSLnRvcCA9IENVUi5uZXdfdG9wOworCisgICAgICBpZiAoIENVUi5zdGVwX2lucyApCisgICAgICAgIENVUi5JUCArPSBDVVIubGVuZ3RoOworCisgICAgICAvKiBpbmNyZW1lbnQgaW5zdHJ1Y3Rpb24gY291bnRlciBhbmQgY2hlY2sgaWYgd2UgZGlkbid0ICovCisgICAgICAvKiBydW4gdGhpcyBwcm9ncmFtIGZvciB0b28gbG9uZyAoZS5nLiBpbmZpbml0ZSBsb29wcykuICovCisgICAgICBpZiAoICsraW5zX2NvdW50ZXIgPiBNQVhfUlVOTkFCTEVfT1BDT0RFUyApCisgICAgICAgIHJldHVybiBGVF9USFJPVyggRXhlY3V0aW9uX1Rvb19Mb25nICk7CisKKyAgICBMU3VpdGVMYWJlbF86CisgICAgICBpZiAoIENVUi5JUCA+PSBDVVIuY29kZVNpemUgKQorICAgICAgeworICAgICAgICBpZiAoIENVUi5jYWxsVG9wID4gMCApCisgICAgICAgIHsKKyAgICAgICAgICBDVVIuZXJyb3IgPSBGVF9USFJPVyggQ29kZV9PdmVyZmxvdyApOworICAgICAgICAgIGdvdG8gTEVycm9yTGFiZWxfOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICBnb3RvIExOb19FcnJvcl87CisgICAgICB9CisgICAgfSB3aGlsZSAoICFDVVIuaW5zdHJ1Y3Rpb25fdHJhcCApOworCisgIExOb19FcnJvcl86CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NUQVRJQ19SQVNURVIKKyAgICAqZXhjID0gY3VyOworI2VuZGlmCisKKyAgICByZXR1cm4gRlRfRXJyX09rOworCisgIExFcnJvckNvZGVPdmVyZmxvd186CisgICAgQ1VSLmVycm9yID0gRlRfVEhST1coIENvZGVfT3ZlcmZsb3cgKTsKKworICBMRXJyb3JMYWJlbF86CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX1NUQVRJQ19SQVNURVIKKyAgICAqZXhjID0gY3VyOworI2VuZGlmCisKKyAgICAvKiBJZiBhbnkgZXJyb3JzIGhhdmUgb2NjdXJyZWQsIGZ1bmN0aW9uIHRhYmxlcyBtYXkgYmUgYnJva2VuLiAqLworICAgIC8qIEZvcmNlIGEgcmUtZXhlY3V0aW9uIG9mIGBwcmVwJyBhbmQgYGZwZ20nIHRhYmxlcyBpZiBubyAgICAgICovCisgICAgLyogYnl0ZWNvZGUgZGVidWdnZXIgaXMgcnVuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIENVUi5lcnJvciAmJiAhQ1VSLmluc3RydWN0aW9uX3RyYXAgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMSgoICIgIFRoZSBpbnRlcnByZXRlciByZXR1cm5lZCBlcnJvciAweCV4XG4iLCBDVVIuZXJyb3IgKSk7CisgICAgICBleGMtPnNpemUtPmN2dF9yZWFkeSAgICAgID0gRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIENVUi5lcnJvcjsKKyAgfQorCisKKyNlbmRpZiAvKiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWNmYWRlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dGludGVycC5oCkBAIC0wLDAgKzEsMzk3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dGludGVycC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHJ1ZVR5cGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNywgMjAxMCwgMjAxMi0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVElOVEVSUF9IX18KKyNkZWZpbmUgX19UVElOVEVSUF9IX18KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJ0dG9ianMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisjaWZuZGVmIFRUX0NPTkZJR19PUFRJT05fU1RBVElDX0lOVEVSUFJFVEVSIC8qIGluZGlyZWN0IGltcGxlbWVudGF0aW9uICovCisKKyNkZWZpbmUgRVhFQ19PUF8gICBUVF9FeGVjQ29udGV4dCAgZXhjLAorI2RlZmluZSBFWEVDX09QICAgIFRUX0V4ZWNDb250ZXh0ICBleGMKKyNkZWZpbmUgRVhFQ19BUkdfICBleGMsCisjZGVmaW5lIEVYRUNfQVJHICAgZXhjCisKKyNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RhdGljIGltcGxlbWVudGF0aW9uICovCisKKyNkZWZpbmUgRVhFQ19PUF8gICAvKiB2b2lkICovCisjZGVmaW5lIEVYRUNfT1AgICAgLyogdm9pZCAqLworI2RlZmluZSBFWEVDX0FSR18gIC8qIHZvaWQgKi8KKyNkZWZpbmUgRVhFQ19BUkcgICAvKiB2b2lkICovCisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NUQVRJQ19JTlRFUlBSRVRFUiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBSb3VuZGluZyBtb2RlIGNvbnN0YW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFRUX1JvdW5kX09mZiAgICAgICAgICAgICA1CisjZGVmaW5lIFRUX1JvdW5kX1RvX0hhbGZfR3JpZCAgICAwCisjZGVmaW5lIFRUX1JvdW5kX1RvX0dyaWQgICAgICAgICAxCisjZGVmaW5lIFRUX1JvdW5kX1RvX0RvdWJsZV9HcmlkICAyCisjZGVmaW5lIFRUX1JvdW5kX1VwX1RvX0dyaWQgICAgICA0CisjZGVmaW5lIFRUX1JvdW5kX0Rvd25fVG9fR3JpZCAgICAzCisjZGVmaW5lIFRUX1JvdW5kX1N1cGVyICAgICAgICAgICA2CisjZGVmaW5lIFRUX1JvdW5kX1N1cGVyXzQ1ICAgICAgICA3CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEZ1bmN0aW9uIHR5cGVzIHVzZWQgYnkgdGhlIGludGVycHJldGVyLCBkZXBlbmRpbmcgb24gdmFyaW91cyBtb2RlcyAgICAqLworICAvKiAoZS5nLiB0aGUgcm91bmRpbmcgbW9kZSwgd2hldGhlciB0byByZW5kZXIgYSB2ZXJ0aWNhbCBvciBob3Jpem9udGFsICAgKi8KKyAgLyogbGluZSBldGMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAvKiBSb3VuZGluZyBmdW5jdGlvbiAqLworICB0eXBlZGVmIEZUX0YyNkRvdDYKKyAgKCpUVF9Sb3VuZF9GdW5jKSggRVhFQ19PUF8gRlRfRjI2RG90NiAgZGlzdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0YyNkRvdDYgIGNvbXBlbnNhdGlvbiApOworCisgIC8qIFBvaW50IGRpc3BsYWNlbWVudCBhbG9uZyB0aGUgZnJlZWRvbSB2ZWN0b3Igcm91dGluZSAqLworICB0eXBlZGVmIHZvaWQKKyAgKCpUVF9Nb3ZlX0Z1bmMpKCBFWEVDX09QXyBUVF9HbHlwaFpvbmUgIHpvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVVNob3J0ICAgICBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICAgIGRpc3RhbmNlICk7CisKKyAgLyogRGlzdGFuY2UgcHJvamVjdGlvbiBhbG9uZyBvbmUgb2YgdGhlIHByb2plY3Rpb24gdmVjdG9ycyAqLworICB0eXBlZGVmIEZUX0YyNkRvdDYKKyAgKCpUVF9Qcm9qZWN0X0Z1bmMpKCBFWEVDX09QXyBGVF9Qb3MgICBkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MgICBkeSApOworCisgIC8qIHJlYWRpbmcgYSBjdnQgdmFsdWUuICBUYWtlIGNhcmUgb2Ygbm9uLXNxdWFyZSBwaXhlbHMgaWYgbmVjZXNzYXJ5ICovCisgIHR5cGVkZWYgRlRfRjI2RG90NgorICAoKlRUX0dldF9DVlRfRnVuYykoIEVYRUNfT1BfIEZUX1VMb25nICBpZHggKTsKKworICAvKiBzZXR0aW5nIG9yIG1vdmluZyBhIGN2dCB2YWx1ZS4gIFRha2UgY2FyZSBvZiBub24tc3F1YXJlIHBpeGVscyAgKi8KKyAgLyogaWYgbmVjZXNzYXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgdm9pZAorICAoKlRUX1NldF9DVlRfRnVuYykoIEVYRUNfT1BfIEZUX1VMb25nICAgIGlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GMjZEb3Q2ICB2YWx1ZSApOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIHN0cnVjdHVyZSBkZWZpbmVzIGEgY2FsbCByZWNvcmQsIHVzZWQgdG8gbWFuYWdlIGZ1bmN0aW9uIGNhbGxzLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9DYWxsUmVjXworICB7CisgICAgRlRfSW50ICAgQ2FsbGVyX1JhbmdlOworICAgIEZUX0xvbmcgIENhbGxlcl9JUDsKKyAgICBGVF9Mb25nICBDdXJfQ291bnQ7CisgICAgRlRfTG9uZyAgQ3VyX1Jlc3RhcnQ7CisgICAgRlRfTG9uZyAgQ3VyX0VuZDsKKworICB9IFRUX0NhbGxSZWMsICpUVF9DYWxsU3RhY2s7CisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlc2Ugc3RydWN0dXJlcyBkZWZpbmUgcnVsZXMgdXNlZCB0byB0d2VhayBzdWJwaXhlbCBoaW50aW5nIGZvciAgICAgICovCisgIC8qIHZhcmlvdXMgZm9udHMuICAiIiwgMCwgIiIsIE5VTEwgdmFsdWUgaW5kaWNhdGVzIHRvIG1hdGNoIGFueSB2YWx1ZS4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2RlZmluZSBTUEhfTUFYX05BTUVfU0laRSAgICAgIDMyCisjZGVmaW5lIFNQSF9NQVhfQ0xBU1NfTUVNQkVSUyAgMTAwCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFNQSF9Ud2Vha1J1bGVfCisgIHsKKyAgICBjb25zdCBjaGFyICAgICAgZmFtaWx5W1NQSF9NQVhfTkFNRV9TSVpFXTsKKyAgICBjb25zdCBGVF9VSW50ICAgcHBlbTsKKyAgICBjb25zdCBjaGFyICAgICAgc3R5bGVbU1BIX01BWF9OQU1FX1NJWkVdOworICAgIGNvbnN0IEZUX1VMb25nICBnbHlwaDsKKworICB9IFNQSF9Ud2Vha1J1bGU7CisKKworICB0eXBlZGVmIHN0cnVjdCAgU1BIX1NjYWxlUnVsZV8KKyAgeworICAgIGNvbnN0IGNoYXIgICAgICBmYW1pbHlbU1BIX01BWF9OQU1FX1NJWkVdOworICAgIGNvbnN0IEZUX1VJbnQgICBwcGVtOworICAgIGNvbnN0IGNoYXIgICAgICBzdHlsZVtTUEhfTUFYX05BTUVfU0laRV07CisgICAgY29uc3QgRlRfVUxvbmcgIGdseXBoOworICAgIGNvbnN0IEZUX1VMb25nICBzY2FsZTsKKworICB9IFNQSF9TY2FsZVJ1bGU7CisKKworICB0eXBlZGVmIHN0cnVjdCAgU1BIX0ZvbnRfQ2xhc3NfCisgIHsKKyAgICBjb25zdCBjaGFyICBuYW1lW1NQSF9NQVhfTkFNRV9TSVpFXTsKKyAgICBjb25zdCBjaGFyICBtZW1iZXJbU1BIX01BWF9DTEFTU19NRU1CRVJTXVtTUEhfTUFYX05BTUVfU0laRV07CisKKyAgfSBTUEhfRm9udF9DbGFzczsKKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFpbiBzdHJ1Y3R1cmUgZm9yIHRoZSBpbnRlcnByZXRlciB3aGljaCBjb2xsZWN0cyBhbGwgbmVjZXNzYXJ5ICAgKi8KKyAgLyogdmFyaWFibGVzIGFuZCBzdGF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfRXhlY0NvbnRleHRSZWNfCisgIHsKKyAgICBUVF9GYWNlICAgICAgICAgICAgZmFjZTsKKyAgICBUVF9TaXplICAgICAgICAgICAgc2l6ZTsKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5OworCisgICAgLyogaW5zdHJ1Y3Rpb25zIHN0YXRlICovCisKKyAgICBGVF9FcnJvciAgICAgICAgICAgZXJyb3I7ICAgICAgLyogbGFzdCBleGVjdXRpb24gZXJyb3IgKi8KKworICAgIEZUX0xvbmcgICAgICAgICAgICB0b3A7ICAgICAgICAvKiB0b3Agb2YgZXhlYy4gc3RhY2sgICAqLworCisgICAgRlRfVUludCAgICAgICAgICAgIHN0YWNrU2l6ZTsgIC8qIHNpemUgb2YgZXhlYy4gc3RhY2sgICovCisgICAgRlRfTG9uZyogICAgICAgICAgIHN0YWNrOyAgICAgIC8qIGN1cnJlbnQgZXhlYy4gc3RhY2sgICovCisKKyAgICBGVF9Mb25nICAgICAgICAgICAgYXJnczsKKyAgICBGVF9VSW50ICAgICAgICAgICAgbmV3X3RvcDsgICAgLyogbmV3IHRvcCBhZnRlciBleGVjLiAgKi8KKworICAgIFRUX0dseXBoWm9uZVJlYyAgICB6cDAsICAgICAgICAvKiB6b25lIHJlY29yZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgenAxLAorICAgICAgICAgICAgICAgICAgICAgICB6cDIsCisgICAgICAgICAgICAgICAgICAgICAgIHB0cywKKyAgICAgICAgICAgICAgICAgICAgICAgdHdpbGlnaHQ7CisKKyAgICBGVF9TaXplX01ldHJpY3MgICAgbWV0cmljczsKKyAgICBUVF9TaXplX01ldHJpY3MgICAgdHRfbWV0cmljczsgLyogc2l6ZSBtZXRyaWNzICovCisKKyAgICBUVF9HcmFwaGljc1N0YXRlICAgR1M7ICAgICAgICAgLyogY3VycmVudCBncmFwaGljcyBzdGF0ZSAqLworCisgICAgRlRfSW50ICAgICAgICAgICAgIGN1clJhbmdlOyAgLyogY3VycmVudCBjb2RlIHJhbmdlIG51bWJlciAgICovCisgICAgRlRfQnl0ZSogICAgICAgICAgIGNvZGU7ICAgICAgLyogY3VycmVudCBjb2RlIHJhbmdlICAgICAgICAgICovCisgICAgRlRfTG9uZyAgICAgICAgICAgIElQOyAgICAgICAgLyogY3VycmVudCBpbnN0cnVjdGlvbiBwb2ludGVyICovCisgICAgRlRfTG9uZyAgICAgICAgICAgIGNvZGVTaXplOyAgLyogc2l6ZSBvZiBjdXJyZW50IHJhbmdlICAgICAgICovCisKKyAgICBGVF9CeXRlICAgICAgICAgICAgb3Bjb2RlOyAgICAvKiBjdXJyZW50IG9wY29kZSAgICAgICAgICAgICAgKi8KKyAgICBGVF9JbnQgICAgICAgICAgICAgbGVuZ3RoOyAgICAvKiBsZW5ndGggb2YgY3VycmVudCBvcGNvZGUgICAgKi8KKworICAgIEZUX0Jvb2wgICAgICAgICAgICBzdGVwX2luczsgIC8qIHRydWUgaWYgdGhlIGludGVycHJldGVyIG11c3QgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmNyZW1lbnQgSVAgYWZ0ZXIgaW5zLiBleGVjICovCisgICAgRlRfVUxvbmcgICAgICAgICAgIGN2dFNpemU7CisgICAgRlRfTG9uZyogICAgICAgICAgIGN2dDsKKworICAgIEZUX1VJbnQgICAgICAgICAgICBnbHlwaFNpemU7IC8qIGdseXBoIGluc3RydWN0aW9ucyBidWZmZXIgc2l6ZSAqLworICAgIEZUX0J5dGUqICAgICAgICAgICBnbHlwaEluczsgIC8qIGdseXBoIGluc3RydWN0aW9ucyBidWZmZXIgKi8KKworICAgIEZUX1VJbnQgICAgICAgICAgICBudW1GRGVmczsgIC8qIG51bWJlciBvZiBmdW5jdGlvbiBkZWZzICAgICAgICAgKi8KKyAgICBGVF9VSW50ICAgICAgICAgICAgbWF4RkRlZnM7ICAvKiBtYXhpbXVtIG51bWJlciBvZiBmdW5jdGlvbiBkZWZzICovCisgICAgVFRfRGVmQXJyYXkgICAgICAgIEZEZWZzOyAgICAgLyogdGFibGUgb2YgRkRlZnMgZW50cmllcyAgICAgICAgICAqLworCisgICAgRlRfVUludCAgICAgICAgICAgIG51bUlEZWZzOyAgLyogbnVtYmVyIG9mIGluc3RydWN0aW9uIGRlZnMgKi8KKyAgICBGVF9VSW50ICAgICAgICAgICAgbWF4SURlZnM7ICAvKiBtYXhpbXVtIG51bWJlciBvZiBpbnMgZGVmcyAqLworICAgIFRUX0RlZkFycmF5ICAgICAgICBJRGVmczsgICAgIC8qIHRhYmxlIG9mIElEZWZzIGVudHJpZXMgICAgICovCisKKyAgICBGVF9VSW50ICAgICAgICAgICAgbWF4RnVuYzsgICAvKiBtYXhpbXVtIGZ1bmN0aW9uIGluZGV4ICAgICAqLworICAgIEZUX1VJbnQgICAgICAgICAgICBtYXhJbnM7ICAgIC8qIG1heGltdW0gaW5zdHJ1Y3Rpb24gaW5kZXggICovCisKKyAgICBGVF9JbnQgICAgICAgICAgICAgY2FsbFRvcCwgICAgLyogdG9wIG9mIGNhbGwgc3RhY2sgZHVyaW5nIGV4ZWN1dGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICBjYWxsU2l6ZTsgICAvKiBzaXplIG9mIGNhbGwgc3RhY2sgKi8KKyAgICBUVF9DYWxsU3RhY2sgICAgICAgY2FsbFN0YWNrOyAgLyogY2FsbCBzdGFjayAqLworCisgICAgRlRfVVNob3J0ICAgICAgICAgIG1heFBvaW50czsgICAgLyogY2FwYWNpdHkgb2YgdGhpcyBjb250ZXh0J3MgYHB0cycgKi8KKyAgICBGVF9TaG9ydCAgICAgICAgICAgbWF4Q29udG91cnM7ICAvKiByZWNvcmQsIGV4cHJlc3NlZCBpbiBwb2ludHMgYW5kICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbnRvdXJzLiAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICBUVF9Db2RlUmFuZ2VUYWJsZSAgY29kZVJhbmdlVGFibGU7ICAvKiB0YWJsZSBvZiB2YWxpZCBjb2RlIHJhbmdlcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVzZWZ1bCBmb3IgdGhlIGRlYnVnZ2VyICAgKi8KKworICAgIEZUX1VTaG9ydCAgICAgICAgICBzdG9yZVNpemU7ICAvKiBzaXplIG9mIGN1cnJlbnQgc3RvcmFnZSAqLworICAgIEZUX0xvbmcqICAgICAgICAgICBzdG9yYWdlOyAgICAvKiBzdG9yYWdlIGFyZWEgICAgICAgICAgICAqLworCisgICAgRlRfRjI2RG90NiAgICAgICAgIHBlcmlvZDsgICAgIC8qIHZhbHVlcyB1c2VkIGZvciB0aGUgKi8KKyAgICBGVF9GMjZEb3Q2ICAgICAgICAgcGhhc2U7ICAgICAgLyogYFN1cGVyUm91bmRpbmcnICAgICAqLworICAgIEZUX0YyNkRvdDYgICAgICAgICB0aHJlc2hvbGQ7CisKKyNpZiAwCisgICAgLyogdGhpcyBzZWVtcyB0byBiZSB1bnVzZWQgKi8KKyAgICBGVF9JbnQgICAgICAgICAgICAgY3VyX3BwZW07ICAgLyogcHBlbSBhbG9uZyB0aGUgY3VycmVudCBwcm9qIHZlY3RvciAqLworI2VuZGlmCisKKyAgICBGVF9Cb29sICAgICAgICAgICAgaW5zdHJ1Y3Rpb25fdHJhcDsgLyogSWYgYFRydWUnLCB0aGUgaW50ZXJwcmV0ZXIgd2lsbCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBleGl0IGFmdGVyIGVhY2ggaW5zdHJ1Y3Rpb24gICAgICovCisKKyAgICBUVF9HcmFwaGljc1N0YXRlICAgZGVmYXVsdF9HUzsgICAgICAgLyogZ3JhcGhpY3Mgc3RhdGUgcmVzdWx0aW5nIGZyb20gICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0aGUgcHJlcCBwcm9ncmFtICAgICAgICAgICAgICAgICovCisgICAgRlRfQm9vbCAgICAgICAgICAgIGlzX2NvbXBvc2l0ZTsgICAgIC8qIHRydWUgaWYgdGhlIGdseXBoIGlzIGNvbXBvc2l0ZSAgKi8KKyAgICBGVF9Cb29sICAgICAgICAgICAgcGVkYW50aWNfaGludGluZzsgLyogdHJ1ZSBpZiBwZWRhbnRpYyBpbnRlcnByZXRhdGlvbiAqLworCisgICAgLyogbGF0ZXN0IGludGVycHJldGVyIGFkZGl0aW9ucyAqLworCisgICAgRlRfTG9uZyAgICAgICAgICAgIEZfZG90X1A7ICAgIC8qIGRvdCBwcm9kdWN0IG9mIGZyZWVkb20gYW5kIHByb2plY3Rpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmVjdG9ycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIFRUX1JvdW5kX0Z1bmMgICAgICBmdW5jX3JvdW5kOyAvKiBjdXJyZW50IHJvdW5kaW5nIGZ1bmN0aW9uICAgICAgICAgICAgICovCisKKyAgICBUVF9Qcm9qZWN0X0Z1bmMgICAgZnVuY19wcm9qZWN0LCAgIC8qIGN1cnJlbnQgcHJvamVjdGlvbiBmdW5jdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICBmdW5jX2R1YWxwcm9qLCAgLyogY3VycmVudCBkdWFsIHByb2ouIGZ1bmN0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNfZnJlZVByb2o7ICAvKiBjdXJyZW50IGZyZWVkb20gcHJvai4gZnVuYyAgKi8KKworICAgIFRUX01vdmVfRnVuYyAgICAgICBmdW5jX21vdmU7ICAgICAgLyogY3VycmVudCBwb2ludCBtb3ZlIGZ1bmN0aW9uICovCisgICAgVFRfTW92ZV9GdW5jICAgICAgIGZ1bmNfbW92ZV9vcmlnOyAvKiBtb3ZlIG9yaWdpbmFsIHBvc2l0aW9uIGZ1bmN0aW9uICovCisKKyAgICBUVF9HZXRfQ1ZUX0Z1bmMgICAgZnVuY19yZWFkX2N2dDsgIC8qIHJlYWQgYSBjdnQgZW50cnkgICAgICAgICAgICAgICovCisgICAgVFRfU2V0X0NWVF9GdW5jICAgIGZ1bmNfd3JpdGVfY3Z0OyAvKiB3cml0ZSBhIGN2dCBlbnRyeSAoaW4gcGl4ZWxzKSAqLworICAgIFRUX1NldF9DVlRfRnVuYyAgICBmdW5jX21vdmVfY3Z0OyAgLyogaW5jciBhIGN2dCBlbnRyeSAoaW4gcGl4ZWxzKSAgKi8KKworICAgIEZUX0Jvb2wgICAgICAgICAgICBncmF5c2NhbGU7ICAgICAgLyogYXJlIHdlIGhpbnRpbmcgZm9yIGdyYXlzY2FsZT8gKi8KKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworICAgIFRUX1JvdW5kX0Z1bmMgICAgICBmdW5jX3JvdW5kX3NwaG47ICAgLyogc3VicGl4ZWwgcm91bmRpbmcgZnVuY3Rpb24gKi8KKworICAgIEZUX0Jvb2wgICAgICAgICAgICBncmF5c2NhbGVfaGludGluZzsgLyogVXNpbmcgZ3JheXNjYWxlIGhpbnRpbmc/ICAgICAgKi8KKyAgICBGVF9Cb29sICAgICAgICAgICAgc3VicGl4ZWxfaGludGluZzsgIC8qIFVzaW5nIHN1YnBpeGVsIGhpbnRpbmc/ICAgICAgICovCisgICAgRlRfQm9vbCAgICAgICAgICAgIG5hdGl2ZV9oaW50aW5nOyAgICAvKiBVc2luZyBuYXRpdmUgaGludGluZz8gICAgICAgICAqLworICAgIEZUX0Jvb2wgICAgICAgICAgICBpZ25vcmVfeF9tb2RlOyAgICAgLyogU3RhbmRhcmQgcmVuZGVyaW5nIG1vZGUgZm9yICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN1YnBpeGVsIGhpbnRpbmcuICBPbiBpZiBncmF5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvciBzdWJwaXhlbCBoaW50aW5nIGlzIG9uICkgICAqLworCisgICAgLyogVGhlIGZvbGxvd2luZyA0IGFyZW4ndCBmdWxseSBpbXBsZW1lbnRlZCBidXQgaGVyZSBmb3IgTVMgcmFzdGVyaXplciAqLworICAgIC8qIGNvbXBhdGliaWxpdHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBGVF9Cb29sICAgICAgICAgICAgY29tcGF0aWJsZV93aWR0aHM7ICAgICAvKiBjb21wYXRpYmxlIHdpZHRocz8gICAgICAgICovCisgICAgRlRfQm9vbCAgICAgICAgICAgIHN5bW1ldHJpY2FsX3Ntb290aGluZzsgLyogc3ltbWV0cmljYWxfc21vb3RoaW5nPyAgICAqLworICAgIEZUX0Jvb2wgICAgICAgICAgICBiZ3I7ICAgICAgICAgICAgICAgICAgIC8qIGJnciBpbnN0ZWFkIG9mIHJnYj8gICAgICAgKi8KKyAgICBGVF9Cb29sICAgICAgICAgICAgc3VicGl4ZWxfcG9zaXRpb25lZDsgICAvKiBzdWJwaXhlbCBwb3NpdGlvbmVkICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKERpcmVjdFdyaXRlIENsZWFyVHlwZSk/ICAqLworCisgICAgRlRfSW50ICAgICAgICAgICAgIHJhc3Rlcml6ZXJfdmVyc2lvbjsgICAgLyogTVMgcmFzdGVyaXplciB2ZXJzaW9uICAgICAqLworCisgICAgRlRfQm9vbCAgICAgICAgICAgIGl1cF9jYWxsZWQ7ICAgICAgICAgICAgLyogSVVQIGNhbGxlZCBmb3IgZ2x5cGg/ICAgICAqLworCisgICAgRlRfVUxvbmcgICAgICAgICAgIHNwaF90d2Vha19mbGFnczsgICAgICAgLyogZmxhZ3MgdG8gY29udHJvbCAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGhpbnQgdHdlYWtzICAgICAgICAgICAgICAgKi8KKworICAgIEZUX1VMb25nICAgICAgICAgICBzcGhfaW5fZnVuY19mbGFnczsgICAgIC8qIGZsYWdzIHRvIGluZGljYXRlIGlmIGluICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcGVjaWFsIGZ1bmN0aW9ucyAgICAgICAgICovCisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworICB9IFRUX0V4ZWNDb250ZXh0UmVjOworCisKKyAgZXh0ZXJuIGNvbnN0IFRUX0dyYXBoaWNzU3RhdGUgIHR0X2RlZmF1bHRfZ3JhcGhpY3Nfc3RhdGU7CisKKworI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUVF9Hb3RvX0NvZGVSYW5nZSggVFRfRXhlY0NvbnRleHQgIGV4ZWMsCisgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICAgcmFuZ2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9Mb25nICAgICAgICAgSVAgKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUVF9TZXRfQ29kZVJhbmdlKCBUVF9FeGVjQ29udGV4dCAgZXhlYywKKyAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgIHJhbmdlLAorICAgICAgICAgICAgICAgICAgICB2b2lkKiAgICAgICAgICAgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyAgICAgICAgIGxlbmd0aCApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIFRUX0NsZWFyX0NvZGVSYW5nZSggVFRfRXhlY0NvbnRleHQgIGV4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgIHJhbmdlICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBVcGRhdGVfTWF4KCBGVF9NZW1vcnkgIG1lbW9yeSwKKyAgICAgICAgICAgICAgRlRfVUxvbmcqICBzaXplLAorICAgICAgICAgICAgICBGVF9Mb25nICAgIG11bHRpcGxpZXIsCisgICAgICAgICAgICAgIHZvaWQqICAgICAgX3BidWZmLAorICAgICAgICAgICAgICBGVF9VTG9uZyAgIG5ld19tYXggKTsKKyNlbmRpZiAvKiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX05ld19Db250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFF1ZXJpZXMgdGhlIGZhY2UgY29udGV4dCBmb3IgYSBnaXZlbiBmb250LiAgTm90ZSB0aGF0IHRoZXJlIGlzICAgICAqLworICAvKiAgICBub3cgYSBfc2luZ2xlXyBleGVjdXRpb24gY29udGV4dCBpbiB0aGUgVHJ1ZVR5cGUgZHJpdmVyIHdoaWNoIGlzICAgKi8KKyAgLyogICAgc2hhcmVkIGFtb25nIGZhY2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiBBIGhhbmRsZSB0byB0aGUgc291cmNlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LiAgSW5pdGlhbGl6ZWQgZm9yIGBmYWNlJy4gICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT25seSB0aGUgZ2x5cGggbG9hZGVyIGFuZCBkZWJ1Z2dlciBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uLiAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9FWFBPUlQoIFRUX0V4ZWNDb250ZXh0ICkKKyAgVFRfTmV3X0NvbnRleHQoIFRUX0RyaXZlciAgZHJpdmVyICk7CisKKworI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUVF9Eb25lX0NvbnRleHQoIFRUX0V4ZWNDb250ZXh0ICBleGVjICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgVFRfTG9hZF9Db250ZXh0KCBUVF9FeGVjQ29udGV4dCAgZXhlYywKKyAgICAgICAgICAgICAgICAgICBUVF9GYWNlICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBUVF9TaXplICAgICAgICAgc2l6ZSApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIFRUX1NhdmVfQ29udGV4dCggVFRfRXhlY0NvbnRleHQgIGV4ZWMsCisgICAgICAgICAgICAgICAgICAgVFRfU2l6ZSAgICAgICAgIGlucyApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIFRUX1J1bl9Db250ZXh0KCBUVF9FeGVjQ29udGV4dCAgZXhlYywKKyAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgICAgICBkZWJ1ZyApOworI2VuZGlmIC8qIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUiAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVFRfUnVuSW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRXhlY3V0ZXMgb25lIG9yIG1vcmUgaW5zdHJ1Y3Rpb24gaW4gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LiAgVGhpcyAgICovCisgIC8qICAgIGlzIHRoZSBtYWluIGZ1bmN0aW9uIG9mIHRoZSBUcnVlVHlwZSBvcGNvZGUgaW50ZXJwcmV0ZXIuICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGV4ZWMgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBleGVjdXRpb24gY29udGV4dC4gICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIE9ubHkgdGhlIG9iamVjdCBtYW5hZ2VyIGFuZCBkZWJ1Z2dlciBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uLiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhpcyBmdW5jdGlvbiBpcyBwdWJsaWNseSBleHBvcnRlZCBiZWNhdXNlIGl0IGlzIGRpcmVjdGx5ICAgICAgICAgICovCisgIC8qICAgIGludm9rZWQgYnkgdGhlIFRydWVUeXBlIGRlYnVnZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfRVhQT1JUKCBGVF9FcnJvciApCisgIFRUX1J1bklucyggVFRfRXhlY0NvbnRleHQgIGV4ZWMgKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUSU5URVJQX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dG9ianMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRvYmpzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE2YTdjMQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRvYmpzLmMKQEAgLTAsMCArMSwxMzQ2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dG9ianMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgT2JqZWN0cyBtYW5hZ2VyIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWdzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdHR0ZHJ2LmgiCisKKyNpbmNsdWRlICJ0dGdsb2FkLmgiCisjaW5jbHVkZSAidHRwbG9hZC5oIgorCisjaW5jbHVkZSAidHRlcnJvcnMuaCIKKworI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorI2luY2x1ZGUgInR0aW50ZXJwLmgiCisjZW5kaWYKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS90dHVucGF0LmgiCisjZW5kaWYKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fR1hfVkFSX1NVUFBPUlQKKyNpbmNsdWRlICJ0dGd4dmFyLmgiCisjZW5kaWYKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV90dG9ianMKKworCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgR0xZUEggWk9ORSBGVU5DVElPTlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZ2x5cGh6b25lX2RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRGVhbGxvY2F0ZSBhIGdseXBoIHpvbmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgem9uZSA6OiBBIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBnbHlwaCB6b25lLiAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICB0dF9nbHlwaHpvbmVfZG9uZSggVFRfR2x5cGhab25lICB6b25lICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gem9uZS0+bWVtb3J5OworCisKKyAgICBpZiAoIG1lbW9yeSApCisgICAgeworICAgICAgRlRfRlJFRSggem9uZS0+Y29udG91cnMgKTsKKyAgICAgIEZUX0ZSRUUoIHpvbmUtPnRhZ3MgKTsKKyAgICAgIEZUX0ZSRUUoIHpvbmUtPmN1ciApOworICAgICAgRlRfRlJFRSggem9uZS0+b3JnICk7CisgICAgICBGVF9GUkVFKCB6b25lLT5vcnVzICk7CisKKyAgICAgIHpvbmUtPm1heF9wb2ludHMgICA9IHpvbmUtPm5fcG9pbnRzICAgPSAwOworICAgICAgem9uZS0+bWF4X2NvbnRvdXJzID0gem9uZS0+bl9jb250b3VycyA9IDA7CisgICAgICB6b25lLT5tZW1vcnkgICAgICAgPSBOVUxMOworICAgIH0KKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZ2x5cGh6b25lX25ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQWxsb2NhdGUgYSBuZXcgZ2x5cGggem9uZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgbWVtb3J5ICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIGN1cnJlbnQgbWVtb3J5IG9iamVjdC4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBtYXhQb2ludHMgICA6OiBUaGUgY2FwYWNpdHkgb2YgZ2x5cGggem9uZSBpbiBwb2ludHMuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG1heENvbnRvdXJzIDo6IFRoZSBjYXBhY2l0eSBvZiBnbHlwaCB6b25lIGluIGNvbnRvdXJzLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHpvbmUgICAgICAgIDo6IEEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IGdseXBoIHpvbmUgcmVjb3JkLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X2dseXBoem9uZV9uZXcoIEZUX01lbW9yeSAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICBGVF9VU2hvcnQgICAgIG1heFBvaW50cywKKyAgICAgICAgICAgICAgICAgICAgRlRfU2hvcnQgICAgICBtYXhDb250b3VycywKKyAgICAgICAgICAgICAgICAgICAgVFRfR2x5cGhab25lICB6b25lICkKKyAgeworICAgIEZUX0Vycm9yICBlcnJvcjsKKworCisgICAgRlRfTUVNX1pFUk8oIHpvbmUsIHNpemVvZiAoICp6b25lICkgKTsKKyAgICB6b25lLT5tZW1vcnkgPSBtZW1vcnk7CisKKyAgICBpZiAoIEZUX05FV19BUlJBWSggem9uZS0+b3JnLCAgICAgIG1heFBvaW50cyAgICkgfHwKKyAgICAgICAgIEZUX05FV19BUlJBWSggem9uZS0+Y3VyLCAgICAgIG1heFBvaW50cyAgICkgfHwKKyAgICAgICAgIEZUX05FV19BUlJBWSggem9uZS0+b3J1cywgICAgIG1heFBvaW50cyAgICkgfHwKKyAgICAgICAgIEZUX05FV19BUlJBWSggem9uZS0+dGFncywgICAgIG1heFBvaW50cyAgICkgfHwKKyAgICAgICAgIEZUX05FV19BUlJBWSggem9uZS0+Y29udG91cnMsIG1heENvbnRvdXJzICkgKQorICAgIHsKKyAgICAgIHR0X2dseXBoem9uZV9kb25lKCB6b25lICk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB6b25lLT5tYXhfcG9pbnRzICAgPSBtYXhQb2ludHM7CisgICAgICB6b25lLT5tYXhfY29udG91cnMgPSBtYXhDb250b3VyczsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKyNlbmRpZiAvKiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgKi8KKworCisgIC8qIENvbXBhcmUgdGhlIGZhY2Ugd2l0aCBhIGxpc3Qgb2Ygd2VsbC1rbm93biBgdHJpY2t5JyBmb250cy4gKi8KKyAgLyogVGhpcyBsaXN0IHNoYWxsIGJlIGV4cGFuZGVkIGFzIHdlIGZpbmQgbW9yZSBvZiB0aGVtLiAgICAgICAqLworCisgIHN0YXRpYyBGVF9Cb29sCisgIHR0X2NoZWNrX3RyaWNreW5lc3NfZmFtaWx5KCBGVF9TdHJpbmcqICBuYW1lICkKKyAgeworCisjZGVmaW5lIFRSSUNLX05BTUVTX01BWF9DSEFSQUNURVJTICAxNgorI2RlZmluZSBUUklDS19OQU1FU19DT1VOVCAgICAgICAgICAgIDgKKworICAgIHN0YXRpYyBjb25zdCBjaGFyIHRyaWNrX25hbWVzW1RSSUNLX05BTUVTX0NPVU5UXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RSSUNLX05BTUVTX01BWF9DSEFSQUNURVJTICsgMV0gPQorICAgIHsKKyAgICAgICJERkthaVNoby1TQiIsICAgICAvKiBkZmthaXNiLnR0ZiAqLworICAgICAgIkRGS2FpU2h1IiwKKyAgICAgICJERkthaS1TQiIsICAgICAgICAvKiBrYWl1LnR0ZiAqLworICAgICAgIkh1YVRpYW5LYWlUaT8iLCAgIC8qIGh0a3QyLnR0ZiAqLworICAgICAgIkh1YVRpYW5Tb25nVGk/IiwgIC8qIGh0c3QzLnR0ZiAqLworICAgICAgIk1pbmdMaVUiLCAgICAgICAgIC8qIG1pbmdsaXUudHRmICYgbWluZ2xpdS50dGMgKi8KKyAgICAgICJQTWluZ0xpVSIsICAgICAgICAvKiBtaW5nbGl1LnR0YyAqLworICAgICAgIk1pbmdMaTQzIiwgICAgICAgIC8qIG1pbmdsaS50dGYgKi8KKyAgICB9OworCisgICAgaW50ICBubjsKKworCisgICAgZm9yICggbm4gPSAwOyBubiA8IFRSSUNLX05BTUVTX0NPVU5UOyBubisrICkKKyAgICAgIGlmICggZnRfc3Ryc3RyKCBuYW1lLCB0cmlja19uYW1lc1tubl0gKSApCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKworICAvKiBYWFg6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGluIHRoZSBgc2ZudCcgbW9kdWxlLiAqLworCisgIC8qIFNvbWUgUERGIGdlbmVyYXRvcnMgY2xlYXIgdGhlIGNoZWNrc3VtcyBpbiB0aGUgVHJ1ZVR5cGUgaGVhZGVyIHRhYmxlLiAqLworICAvKiBGb3IgZXhhbXBsZSwgUXVhcnR6IENvbnRleHRQREYgY2xlYXJzIGFsbCBlbnRyaWVzLCBvciBCdWxsemlwIFBERiAgICAgKi8KKyAgLyogUHJpbnRlciBjbGVhcnMgdGhlIGVudHJpZXMgZm9yIHN1YnNldHRlZCBzdWJ0YWJsZXMuICBXZSB0aHVzIGhhdmUgdG8gICovCisgIC8qIHJlY2FsY3VsYXRlIHRoZSBjaGVja3N1bXMgIHdoZXJlIG5lY2Vzc2FyeS4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIHN0YXRpYyBGVF9VSW50MzIKKyAgdHRfc3ludGhfc2ZudF9jaGVja3N1bSggRlRfU3RyZWFtICBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VMb25nICAgbGVuZ3RoICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfVUludDMyICBjaGVja3N1bSA9IDA7CisgICAgaW50ICAgICAgICBpOworCisKKyAgICBpZiAoIEZUX0ZSQU1FX0VOVEVSKCBsZW5ndGggKSApCisgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoIDsgbGVuZ3RoID4gMzsgbGVuZ3RoIC09IDQgKQorICAgICAgY2hlY2tzdW0gKz0gKEZUX1VJbnQzMilGVF9HRVRfVUxPTkcoKTsKKworICAgIGZvciAoIGkgPSAzOyBsZW5ndGggPiAwOyBsZW5ndGggLS0sIGktLSApCisgICAgICBjaGVja3N1bSArPSAoRlRfVUludDMyKSggRlRfR0VUX0JZVEUoKSA8PCAoIGkgKiA4ICkgKTsKKworICAgIEZUX0ZSQU1FX0VYSVQoKTsKKworICAgIHJldHVybiBjaGVja3N1bTsKKyAgfQorCisKKyAgLyogWFhYOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBpbiB0aGUgYHNmbnQnIG1vZHVsZS4gKi8KKworICBzdGF0aWMgRlRfVUxvbmcKKyAgdHRfZ2V0X3NmbnRfY2hlY2tzdW0oIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VTaG9ydCAgaSApCisgIHsKKyNpZiAwIC8qIGlmIHdlIGJlbGlldmUgdGhlIHdyaXR0ZW4gdmFsdWUsIHVzZSBmb2xsb3dpbmcgcGFydC4gKi8KKyAgICBpZiAoIGZhY2UtPmRpcl90YWJsZXNbaV0uQ2hlY2tTdW0gKQorICAgICAgcmV0dXJuIGZhY2UtPmRpcl90YWJsZXNbaV0uQ2hlY2tTdW07CisjZW5kaWYKKworICAgIGlmICggIWZhY2UtPmdvdG9fdGFibGUgKQorICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5kaXJfdGFibGVzW2ldLlRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPnJvb3Quc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCApICkKKyAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIChGVF9VTG9uZyl0dF9zeW50aF9zZm50X2NoZWNrc3VtKCBmYWNlLT5yb290LnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPmRpcl90YWJsZXNbaV0uTGVuZ3RoICk7CisgIH0KKworCisgIHR5cGVkZWYgc3RydWN0IHR0X3NmbnRfaWRfcmVjXworICB7CisgICAgRlRfVUxvbmcgIENoZWNrU3VtOworICAgIEZUX1VMb25nICBMZW5ndGg7CisKKyAgfSB0dF9zZm50X2lkX3JlYzsKKworCisgIHN0YXRpYyBGVF9Cb29sCisgIHR0X2NoZWNrX3RyaWNreW5lc3Nfc2ZudF9pZHMoIFRUX0ZhY2UgIGZhY2UgKQorICB7CisjZGVmaW5lIFRSSUNLX1NGTlRfSURTX1BFUl9GQUNFICAgMworI2RlZmluZSBUUklDS19TRk5UX0lEU19OVU1fRkFDRVMgIDE3CisKKyAgICBzdGF0aWMgY29uc3QgdHRfc2ZudF9pZF9yZWMgc2ZudF9pZFtUUklDS19TRk5UX0lEU19OVU1fRkFDRVNdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVFJJQ0tfU0ZOVF9JRFNfUEVSX0ZBQ0VdID0geworCisjZGVmaW5lIFRSSUNLX1NGTlRfSURfY3Z0ICAgMAorI2RlZmluZSBUUklDS19TRk5UX0lEX2ZwZ20gIDEKKyNkZWZpbmUgVFJJQ0tfU0ZOVF9JRF9wcmVwICAyCisKKyAgICAgIHsgLyogTWluZ0xpVSAxOTk1ICovCisgICAgICAgIHsgMHgwNWJjZjA1OCwgMHgwMDAwMDJlNCB9LCAvKiBjdnQgICovCisgICAgICAgIHsgMHgyODIzM2JmMSwgMHgwMDAwODdjNCB9LCAvKiBmcGdtICovCisgICAgICAgIHsgMHhhMzQ0YTFlYSwgMHgwMDAwMDFlMSB9ICAvKiBwcmVwICovCisgICAgICB9LAorICAgICAgeyAvKiBNaW5nTGlVIDE5OTYtICovCisgICAgICAgIHsgMHgwNWJjZjA1OCwgMHgwMDAwMDJlNCB9LCAvKiBjdnQgICovCisgICAgICAgIHsgMHgyODIzM2JmMSwgMHgwMDAwODdjNCB9LCAvKiBmcGdtICovCisgICAgICAgIHsgMHhhMzQ0YTFlYiwgMHgwMDAwMDFlMSB9ICAvKiBwcmVwICovCisgICAgICB9LAorICAgICAgeyAvKiBERkthaVNodSAqLworICAgICAgICB7IDB4MTFlNWVhZDQsIDB4MDAwMDAzNTAgfSwgLyogY3Z0ICAqLworICAgICAgICB7IDB4NWEzMGNhM2IsIDB4MDAwMDkwNjMgfSwgLyogZnBnbSAqLworICAgICAgICB7IDB4MTNhNDI2MDIsIDB4MDAwMDAwN2UgfSAgLyogcHJlcCAqLworICAgICAgfSwKKyAgICAgIHsgLyogSHVhVGlhbkthaVRpICovCisgICAgICAgIHsgMHhmZmZiZmZmYywgMHgwMDAwMDAwOCB9LCAvKiBjdnQgICovCisgICAgICAgIHsgMHg5YzllNDhiOCwgMHgwMDAwYmVhMiB9LCAvKiBmcGdtICovCisgICAgICAgIHsgMHg3MDAyMDExMiwgMHgwMDAwMDAwOCB9ICAvKiBwcmVwICovCisgICAgICB9LAorICAgICAgeyAvKiBIdWFUaWFuU29uZ1RpICovCisgICAgICAgIHsgMHhmZmZiZmZmYywgMHgwMDAwMDAwOCB9LCAvKiBjdnQgICovCisgICAgICAgIHsgMHgwYTVhMDQ4MywgMHgwMDAxN2MzOSB9LCAvKiBmcGdtICovCisgICAgICAgIHsgMHg3MDAyMDExMiwgMHgwMDAwMDAwOCB9ICAvKiBwcmVwICovCisgICAgICB9LAorICAgICAgeyAvKiBORUMgZmFkcG9wNy50dGYgKi8KKyAgICAgICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwIH0sIC8qIGN2dCAgKi8KKyAgICAgICAgeyAweDQwYzkyNTU1LCAweDAwMDAwMGU1IH0sIC8qIGZwZ20gKi8KKyAgICAgICAgeyAweGEzOWI1OGUzLCAweDAwMDAxMTdjIH0gIC8qIHByZXAgKi8KKyAgICAgIH0sCisgICAgICB7IC8qIE5FQyBmYWRyZWk1LnR0ZiAqLworICAgICAgICB7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAgfSwgLyogY3Z0ICAqLworICAgICAgICB7IDB4MzNjNDE2NTIsIDB4MDAwMDAwZTUgfSwgLyogZnBnbSAqLworICAgICAgICB7IDB4MjZkNmM1MmEsIDB4MDAwMDBmNmEgfSAgLyogcHJlcCAqLworICAgICAgfSwKKyAgICAgIHsgLyogTkVDIGZhbmdvdDcudHRmICovCisgICAgICAgIHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCB9LCAvKiBjdnQgICovCisgICAgICAgIHsgMHg2ZGIxNjUxZCwgMHgwMDAwMDE5ZCB9LCAvKiBmcGdtICovCisgICAgICAgIHsgMHg2YzZlNGIwMywgMHgwMDAwMjQ5MiB9ICAvKiBwcmVwICovCisgICAgICB9LAorICAgICAgeyAvKiBORUMgZmFuZ3lvNS50dGYgKi8KKyAgICAgICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwIH0sIC8qIGN2dCAgKi8KKyAgICAgICAgeyAweDQwYzkyNTU1LCAweDAwMDAwMGU1IH0sIC8qIGZwZ20gKi8KKyAgICAgICAgeyAweGRlNTFmYWQwLCAweDAwMDAxMTdjIH0gIC8qIHByZXAgKi8KKyAgICAgIH0sCisgICAgICB7IC8qIE5FQyBmYW5reW81LnR0ZiAqLworICAgICAgICB7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAgfSwgLyogY3Z0ICAqLworICAgICAgICB7IDB4ODVlNDc2NjQsIDB4MDAwMDAwZTUgfSwgLyogZnBnbSAqLworICAgICAgICB7IDB4YTZjNjI4MzEsIDB4MDAwMDFjYWEgfSAgLyogcHJlcCAqLworICAgICAgfSwKKyAgICAgIHsgLyogTkVDIGZhbnJnbzUudHRmICovCisgICAgICAgIHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCB9LCAvKiBjdnQgICovCisgICAgICAgIHsgMHgyZDg5MWNmZCwgMHgwMDAwMDE5ZCB9LCAvKiBmcGdtICovCisgICAgICAgIHsgMHhhMDYwNDYzMywgMHgwMDAwMWRlOCB9ICAvKiBwcmVwICovCisgICAgICB9LAorICAgICAgeyAvKiBORUMgZmFuZ290NS50dGMgKi8KKyAgICAgICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwIH0sIC8qIGN2dCAgKi8KKyAgICAgICAgeyAweDQwYWE3NzRjLCAweDAwMDAwMWNiIH0sIC8qIGZwZ20gKi8KKyAgICAgICAgeyAweDliNWNhYTk2LCAweDAwMDAxZjlhIH0gIC8qIHByZXAgKi8KKyAgICAgIH0sCisgICAgICB7IC8qIE5FQyBmYW5taW4zLnR0YyAqLworICAgICAgICB7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAgfSwgLyogY3Z0ICAqLworICAgICAgICB7IDB4MGQzZGU5Y2IsIDB4MDAwMDAxNDEgfSwgLyogZnBnbSAqLworICAgICAgICB7IDB4ZDQxMjc3NjYsIDB4MDAwMDIyODAgfSAgLyogcHJlcCAqLworICAgICAgfSwKKyAgICAgIHsgLyogTkVDIEZBLUdvdGhpYywgMTk5NiAqLworICAgICAgICB7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAgfSwgLyogY3Z0ICAqLworICAgICAgICB7IDB4NGE2OTI2OTgsIDB4MDAwMDAxZjAgfSwgLyogZnBnbSAqLworICAgICAgICB7IDB4MzQwZDQzNDYsIDB4MDAwMDFmY2EgfSAgLyogcHJlcCAqLworICAgICAgfSwKKyAgICAgIHsgLyogTkVDIEZBLU1pbmNob3UsIDE5OTYgKi8KKyAgICAgICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwIH0sIC8qIGN2dCAgKi8KKyAgICAgICAgeyAweGNkMzRjNjA0LCAweDAwMDAwMTY2IH0sIC8qIGZwZ20gKi8KKyAgICAgICAgeyAweDZjZjMxMDQ2LCAweDAwMDAyMmIwIH0gIC8qIHByZXAgKi8KKyAgICAgIH0sCisgICAgICB7IC8qIE5FQyBGQS1Sb3VuZEdvdGhpY0IsIDE5OTYgKi8KKyAgICAgICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwIH0sIC8qIGN2dCAgKi8KKyAgICAgICAgeyAweDVkYTc1MzE1LCAweDAwMDAwMTlkIH0sIC8qIGZwZ20gKi8KKyAgICAgICAgeyAweDQwNzQ1YTVmLCAweDAwMDAyMmUwIH0gIC8qIHByZXAgKi8KKyAgICAgIH0sCisgICAgICB7IC8qIE5FQyBGQS1Sb3VuZEdvdGhpY00sIDE5OTYgKi8KKyAgICAgICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwIH0sIC8qIGN2dCAgKi8KKyAgICAgICAgeyAweGYwNTVmYzQ4LCAweDAwMDAwMWMyIH0sIC8qIGZwZ20gKi8KKyAgICAgICAgeyAweDM5MDBkZWQzLCAweDAwMDAxZTE4IH0gIC8qIHByZXAgKi8KKyAgICAgIH0KKyAgICB9OworCisgICAgRlRfVUxvbmcgICBjaGVja3N1bTsKKyAgICBpbnQgICAgICAgIG51bV9tYXRjaGVkX2lkc1tUUklDS19TRk5UX0lEU19OVU1fRkFDRVNdOworICAgIEZUX0Jvb2wgICAgaGFzX2N2dCwgaGFzX2ZwZ20sIGhhc19wcmVwOworICAgIEZUX1VTaG9ydCAgaTsKKyAgICBpbnQgICAgICAgIGosIGs7CisKKworICAgIEZUX01FTV9TRVQoIG51bV9tYXRjaGVkX2lkcywgMCwKKyAgICAgICAgICAgICAgICBzaXplb2YgKCBpbnQgKSAqIFRSSUNLX1NGTlRfSURTX05VTV9GQUNFUyApOworICAgIGhhc19jdnQgID0gRkFMU0U7CisgICAgaGFzX2ZwZ20gPSBGQUxTRTsKKyAgICBoYXNfcHJlcCA9IEZBTFNFOworCisgICAgZm9yICggaSA9IDA7IGkgPCBmYWNlLT5udW1fdGFibGVzOyBpKysgKQorICAgIHsKKyAgICAgIGNoZWNrc3VtID0gMDsKKworICAgICAgc3dpdGNoKCBmYWNlLT5kaXJfdGFibGVzW2ldLlRhZyApCisgICAgICB7CisgICAgICBjYXNlIFRUQUdfY3Z0OgorICAgICAgICBrID0gVFJJQ0tfU0ZOVF9JRF9jdnQ7CisgICAgICAgIGhhc19jdnQgID0gVFJVRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgVFRBR19mcGdtOgorICAgICAgICBrID0gVFJJQ0tfU0ZOVF9JRF9mcGdtOworICAgICAgICBoYXNfZnBnbSA9IFRSVUU7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIFRUQUdfcHJlcDoKKyAgICAgICAgayA9IFRSSUNLX1NGTlRfSURfcHJlcDsKKyAgICAgICAgaGFzX3ByZXAgPSBUUlVFOworICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAgIGZvciAoIGogPSAwOyBqIDwgVFJJQ0tfU0ZOVF9JRFNfTlVNX0ZBQ0VTOyBqKysgKQorICAgICAgICBpZiAoIGZhY2UtPmRpcl90YWJsZXNbaV0uTGVuZ3RoID09IHNmbnRfaWRbal1ba10uTGVuZ3RoICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggIWNoZWNrc3VtICkKKyAgICAgICAgICAgIGNoZWNrc3VtID0gdHRfZ2V0X3NmbnRfY2hlY2tzdW0oIGZhY2UsIGkgKTsKKworICAgICAgICAgIGlmICggc2ZudF9pZFtqXVtrXS5DaGVja1N1bSA9PSBjaGVja3N1bSApCisgICAgICAgICAgICBudW1fbWF0Y2hlZF9pZHNbal0rKzsKKworICAgICAgICAgIGlmICggbnVtX21hdGNoZWRfaWRzW2pdID09IFRSSUNLX1NGTlRfSURTX1BFUl9GQUNFICkKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yICggaiA9IDA7IGogPCBUUklDS19TRk5UX0lEU19OVU1fRkFDRVM7IGorKyApCisgICAgeworICAgICAgaWYgKCAhaGFzX2N2dCAgJiYgIXNmbnRfaWRbal1bVFJJQ0tfU0ZOVF9JRF9jdnRdLkxlbmd0aCApCisgICAgICAgIG51bV9tYXRjaGVkX2lkc1tqXSArKzsKKyAgICAgIGlmICggIWhhc19mcGdtICYmICFzZm50X2lkW2pdW1RSSUNLX1NGTlRfSURfZnBnbV0uTGVuZ3RoICkKKyAgICAgICAgbnVtX21hdGNoZWRfaWRzW2pdICsrOworICAgICAgaWYgKCAhaGFzX3ByZXAgJiYgIXNmbnRfaWRbal1bVFJJQ0tfU0ZOVF9JRF9wcmVwXS5MZW5ndGggKQorICAgICAgICBudW1fbWF0Y2hlZF9pZHNbal0gKys7CisgICAgICBpZiAoIG51bV9tYXRjaGVkX2lkc1tqXSA9PSBUUklDS19TRk5UX0lEU19QRVJfRkFDRSApCisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Jvb2wKKyAgdHRfY2hlY2tfdHJpY2t5bmVzcyggRlRfRmFjZSAgZmFjZSApCisgIHsKKyAgICBpZiAoICFmYWNlICkKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAgIC8qIEZvciBmaXJzdCwgY2hlY2sgdGhlIGZhY2UgbmFtZSBmb3IgcXVpY2sgY2hlY2suICovCisgICAgaWYgKCBmYWNlLT5mYW1pbHlfbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgdHRfY2hlY2tfdHJpY2t5bmVzc19mYW1pbHkoIGZhY2UtPmZhbWlseV9uYW1lICkgKQorICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICAvKiBUeXBlNDIgZm9udHMgbWF5IGxhY2sgYG5hbWUnIHRhYmxlcywgd2UgdGh1cyB0cnkgdG8gaWRlbnRpZnkgKi8KKyAgICAvKiB0cmlja3kgZm9udHMgYnkgY2hlY2tpbmcgdGhlIGNoZWNrc3VtcyBvZiBUeXBlNDItcGVyc2lzdGVudCAgKi8KKyAgICAvKiBzZm50IHRhYmxlcyAoYGN2dCcsIGBmcGdtJywgYW5kIGBwcmVwJykuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIHR0X2NoZWNrX3RyaWNreW5lc3Nfc2ZudF9pZHMoIChUVF9GYWNlKWZhY2UgKSApCisgICAgICByZXR1cm4gVFJVRTsKKworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisKKyAgLyogQ2hlY2sgd2hldGhlciBgLm5vdGRlZicgaXMgdGhlIG9ubHkgZ2x5cGggaW4gdGhlIGBsb2NhJyB0YWJsZS4gKi8KKyAgc3RhdGljIEZUX0Jvb2wKKyAgdHRfY2hlY2tfc2luZ2xlX25vdGRlZiggRlRfRmFjZSAgdHRmYWNlICkKKyAgeworICAgIEZUX0Jvb2wgICByZXN1bHQgPSBGQUxTRTsKKworICAgIFRUX0ZhY2UgICBmYWNlID0gKFRUX0ZhY2UpdHRmYWNlOworICAgIEZUX1VJbnQgICBhc2l6ZTsKKyAgICBGVF9VTG9uZyAgaTsKKyAgICBGVF9VTG9uZyAgZ2x5cGhfaW5kZXggPSAwOworICAgIEZUX1VJbnQgICBjb3VudCAgICAgICA9IDA7CisKKworICAgIGZvciggaSA9IDA7IGkgPCBmYWNlLT5udW1fbG9jYXRpb25zOyBpKysgKQorICAgIHsKKyAgICAgIHR0X2ZhY2VfZ2V0X2xvY2F0aW9uKCBmYWNlLCBpLCAmYXNpemUgKTsKKyAgICAgIGlmICggYXNpemUgPiAwICkKKyAgICAgIHsKKyAgICAgICAgY291bnQgKz0gMTsKKyAgICAgICAgaWYgKCBjb3VudCA+IDEgKQorICAgICAgICAgIGJyZWFrOworICAgICAgICBnbHlwaF9pbmRleCA9IGk7CisgICAgICB9CisgICAgfQorCisgICAgLyogT25seSBoYXZlIGEgc2luZ2xlIG91dGxpbmUuICovCisgICAgaWYgKCBjb3VudCA9PSAxICkKKyAgICB7CisgICAgICBpZiAoIGdseXBoX2luZGV4ID09IDAgKQorICAgICAgICByZXN1bHQgPSBUUlVFOworICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBGSVhNRTogTmVlZCB0byB0ZXN0IGdseXBobmFtZSA9PSAubm90ZGVmID8gKi8KKyAgICAgICAgRlRfRXJyb3IgZXJyb3I7CisgICAgICAgIGNoYXIgYnVmWzhdOworCisKKyAgICAgICAgZXJyb3IgPSBGVF9HZXRfR2x5cGhfTmFtZSggdHRmYWNlLCBnbHlwaF9pbmRleCwgYnVmLCA4ICk7CisgICAgICAgIGlmICggIWVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgIGJ1ZlswXSA9PSAnLicgJiYgIWZ0X3N0cm5jbXAoIGJ1ZiwgIi5ub3RkZWYiLCA4ICkgKQorICAgICAgICAgIHJlc3VsdCA9IFRSVUU7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9pbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgSW5pdGlhbGl6ZSBhIGdpdmVuIFRydWVUeXBlIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc3RyZWFtICAgICA6OiBUaGUgc291cmNlIGZvbnQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlX2luZGV4IDo6IFRoZSBpbmRleCBvZiB0aGUgZm9udCBmYWNlIGluIHRoZSByZXNvdXJjZS4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIG51bV9wYXJhbXMgOjogTnVtYmVyIG9mIGFkZGl0aW9uYWwgZ2VuZXJpYyBwYXJhbWV0ZXJzLiAgSWdub3JlZC4gICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcGFyYW1zICAgICA6OiBBZGRpdGlvbmFsIGdlbmVyaWMgcGFyYW1ldGVycy4gIElnbm9yZWQuICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5PdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICA6OiBUaGUgbmV3bHkgYnVpbHQgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9pbml0KCBGVF9TdHJlYW0gICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgdHRmYWNlLCAgICAgIC8qIFRUX0ZhY2UgKi8KKyAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMsCisgICAgICAgICAgICAgICAgRlRfUGFyYW1ldGVyKiAgcGFyYW1zICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgZXJyb3I7CisgICAgRlRfTGlicmFyeSAgICBsaWJyYXJ5OworICAgIFNGTlRfU2VydmljZSAgc2ZudDsKKyAgICBUVF9GYWNlICAgICAgIGZhY2UgPSAoVFRfRmFjZSl0dGZhY2U7CisKKworICAgIEZUX1RSQUNFMigoICJUVEYgZHJpdmVyXG4iICkpOworCisgICAgbGlicmFyeSA9IHR0ZmFjZS0+ZHJpdmVyLT5yb290LmxpYnJhcnk7CisKKyAgICBzZm50ID0gKFNGTlRfU2VydmljZSlGVF9HZXRfTW9kdWxlX0ludGVyZmFjZSggbGlicmFyeSwgInNmbnQiICk7CisgICAgaWYgKCAhc2ZudCApCisgICAgeworICAgICAgRlRfRVJST1IoKCAidHRfZmFjZV9pbml0OiBjYW5ub3QgYWNjZXNzIGBzZm50JyBtb2R1bGVcbiIgKSk7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBNaXNzaW5nX01vZHVsZSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIGNyZWF0ZSBpbnB1dCBzdHJlYW0gZnJvbSByZXNvdXJjZSAqLworICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIDAgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBjaGVjayB0aGF0IHdlIGhhdmUgYSB2YWxpZCBUcnVlVHlwZSBmaWxlICovCisgICAgZXJyb3IgPSBzZm50LT5pbml0X2ZhY2UoIHN0cmVhbSwgZmFjZSwgZmFjZV9pbmRleCwgbnVtX3BhcmFtcywgcGFyYW1zICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBXZSBtdXN0IGFsc28gYmUgYWJsZSB0byBhY2NlcHQgTWFjL0dYIGZvbnRzLCBhcyB3ZWxsIGFzIE9UIG9uZXMuICovCisgICAgLyogVGhlIDB4MDAwMjAwMDAgdGFnIGlzIGNvbXBsZXRlbHkgdW5kb2N1bWVudGVkOyBzb21lIGZvbnRzIGZyb20gICAqLworICAgIC8qIEFycGhpYyBtYWRlIGZvciBDaGluZXNlIFdpbmRvd3MgMy4xIGhhdmUgdGhpcy4gICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIGZhY2UtPmZvcm1hdF90YWcgIT0gMHgwMDAxMDAwMEwgJiYgICAgLyogTVMgZm9udHMgICovCisgICAgICAgICBmYWNlLT5mb3JtYXRfdGFnICE9IDB4MDAwMjAwMDBMICYmICAgIC8qIENKSyBmb250cyBmb3IgV2luIDMuMSAqLworICAgICAgICAgZmFjZS0+Zm9ybWF0X3RhZyAhPSBUVEFHX3RydWUgICApICAgICAvKiBNYWMgZm9udHMgKi8KKyAgICB7CisgICAgICBGVF9UUkFDRTIoKCAiICBub3QgYSBUVEYgZm9udFxuIiApKTsKKyAgICAgIGdvdG8gQmFkX0Zvcm1hdDsKKyAgICB9IAorCWVsc2UKKwl7CisJCUZUX1VMb25nICB0YWJsZV9sZW47CisJCWlmIChmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX0NGRiwgc3RyZWFtLCAmdGFibGVfbGVuKSAhPSBUVF9FcnJfVGFibGVfTWlzc2luZyAmJiAKKwkJCWZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfbG9jYSwgc3RyZWFtLCAmdGFibGVfbGVuKSA9PSBUVF9FcnJfVGFibGVfTWlzc2luZykgCisJCXsKKwkJCUZUX1RSQUNFMigoICJbbm90IGEgdmFsaWQgVFRGIGZvbnRdXG4iICkpOworCQkJZ290byBCYWRfRm9ybWF0OworCQl9CisJfQorCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisgICAgdHRmYWNlLT5mYWNlX2ZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19ISU5URVI7CisjZW5kaWYKKworICAgIC8qIElmIHdlIGFyZSBwZXJmb3JtaW5nIGEgc2ltcGxlIGZvbnQgZm9ybWF0IGNoZWNrLCBleGl0IGltbWVkaWF0ZWx5LiAqLworICAgIGlmICggZmFjZV9pbmRleCA8IDAgKQorICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKworICAgIC8qIExvYWQgZm9udCBkaXJlY3RvcnkgKi8KKyAgICBlcnJvciA9IHNmbnQtPmxvYWRfZmFjZSggc3RyZWFtLCBmYWNlLCBmYWNlX2luZGV4LCBudW1fcGFyYW1zLCBwYXJhbXMgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGlmICggdHRfY2hlY2tfdHJpY2t5bmVzcyggdHRmYWNlICkgKQorICAgICAgdHRmYWNlLT5mYWNlX2ZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19UUklDS1k7CisKKyAgICBlcnJvciA9IHR0X2ZhY2VfbG9hZF9oZG14KCBmYWNlLCBzdHJlYW0gKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGlmICggRlRfSVNfU0NBTEFCTEUoIHR0ZmFjZSApICkKKyAgICB7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisKKyAgICAgIGlmICggIXR0ZmFjZS0+aW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSApCisgICAgICAgIGVycm9yID0gdHRfZmFjZV9sb2FkX2xvY2EoIGZhY2UsIHN0cmVhbSApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICBlcnJvciA9IHR0X2ZhY2VfbG9hZF9jdnQoIGZhY2UsIHN0cmVhbSApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICBlcnJvciA9IHR0X2ZhY2VfbG9hZF9mcGdtKCBmYWNlLCBzdHJlYW0gKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgZXJyb3IgPSB0dF9mYWNlX2xvYWRfcHJlcCggZmFjZSwgc3RyZWFtICk7CisKKyAgICAgIC8qIENoZWNrIHRoZSBzY2FsYWJsZSBmbGFnIGJhc2VkIG9uIGBsb2NhJy4gKi8KKyAgICAgIGlmICggIXR0ZmFjZS0+aW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSAmJgorICAgICAgICAgICB0dGZhY2UtPm51bV9maXhlZF9zaXplcyAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIGZhY2UtPmdseXBoX2xvY2F0aW9ucyAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgdHRfY2hlY2tfc2luZ2xlX25vdGRlZiggdHRmYWNlICkgICAgICAgICApCisgICAgICB7CisgICAgICAgIEZUX1RSQUNFNSgoICJ0dF9mYWNlX2luaXQ6IgorICAgICAgICAgICAgICAgICAgICAiIE9ubHkgdGhlIGAubm90ZGVmJyBnbHlwaCBoYXMgYW4gb3V0bGluZS5cbiIKKyAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAiCisgICAgICAgICAgICAgICAgICAgICIgUmVzZXR0aW5nIHNjYWxhYmxlIGZsYWcgdG8gRkFMU0UuXG4iICkpOworCisgICAgICAgIHR0ZmFjZS0+ZmFjZV9mbGFncyAmPSB+RlRfRkFDRV9GTEFHX1NDQUxBQkxFOworICAgICAgfQorCisjZWxzZQorCisgICAgICBpZiAoICFlcnJvciApCisgICAgICAgIGVycm9yID0gdHRfZmFjZV9sb2FkX2xvY2EoIGZhY2UsIHN0cmVhbSApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICBlcnJvciA9IHR0X2ZhY2VfbG9hZF9jdnQoIGZhY2UsIHN0cmVhbSApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICBlcnJvciA9IHR0X2ZhY2VfbG9hZF9mcGdtKCBmYWNlLCBzdHJlYW0gKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgZXJyb3IgPSB0dF9mYWNlX2xvYWRfcHJlcCggZmFjZSwgc3RyZWFtICk7CisKKyAgICAgIC8qIENoZWNrIHRoZSBzY2FsYWJsZSBmbGFnIGJhc2VkIG9uIGBsb2NhJy4gKi8KKyAgICAgIGlmICggdHRmYWNlLT5udW1fZml4ZWRfc2l6ZXMgICAgICAgICAgJiYKKyAgICAgICAgICAgZmFjZS0+Z2x5cGhfbG9jYXRpb25zICAgICAgICAgICAgJiYKKyAgICAgICAgICAgdHRfY2hlY2tfc2luZ2xlX25vdGRlZiggdHRmYWNlICkgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTUoKCAidHRfZmFjZV9pbml0OiIKKyAgICAgICAgICAgICAgICAgICAgIiBPbmx5IHRoZSBgLm5vdGRlZicgZ2x5cGggaGFzIGFuIG91dGxpbmUuXG4iCisgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgIgorICAgICAgICAgICAgICAgICAgICAiIFJlc2V0dGluZyBzY2FsYWJsZSBmbGFnIHRvIEZBTFNFLlxuIiApKTsKKworICAgICAgICB0dGZhY2UtPmZhY2VfZmxhZ3MgJj0gfkZUX0ZBQ0VfRkxBR19TQ0FMQUJMRTsKKyAgICAgIH0KKworI2VuZGlmCisKKyAgICB9CisKKyNpZiBkZWZpbmVkKCBUVF9DT05GSUdfT1BUSU9OX1VOUEFURU5URURfSElOVElORyAgICApICYmIFwKKyAgICAhZGVmaW5lZCggVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUiApCisKKyAgICB7CisgICAgICBGVF9Cb29sICB1bnBhdGVudGVkX2hpbnRpbmc7CisgICAgICBpbnQgICAgICBpOworCisKKyAgICAgIC8qIERldGVybWluZSB3aGV0aGVyIHVucGF0ZW50ZWQgaGludGluZyBpcyB0byBiZSB1c2VkIGZvciB0aGlzIGZhY2UuICovCisgICAgICB1bnBhdGVudGVkX2hpbnRpbmcgPSBGVF9CT09MCisgICAgICAgICggbGlicmFyeS0+ZGVidWdfaG9va3NbRlRfREVCVUdfSE9PS19VTlBBVEVOVEVEX0hJTlRJTkddICE9IE5VTEwgKTsKKworICAgICAgZm9yICggaSA9IDA7IGkgPCBudW1fcGFyYW1zICYmICFmYWNlLT51bnBhdGVudGVkX2hpbnRpbmc7IGkrKyApCisgICAgICAgIGlmICggcGFyYW1zW2ldLnRhZyA9PSBGVF9QQVJBTV9UQUdfVU5QQVRFTlRFRF9ISU5USU5HICkKKyAgICAgICAgICB1bnBhdGVudGVkX2hpbnRpbmcgPSBUUlVFOworCisgICAgICBpZiAoICF1bnBhdGVudGVkX2hpbnRpbmcgKQorICAgICAgICB0dGZhY2UtPmludGVybmFsLT5pZ25vcmVfdW5wYXRlbnRlZF9oaW50ZXIgPSBUUlVFOworICAgIH0KKworI2VuZGlmIC8qIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HICYmCisgICAgICAgICAgIVRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIgKi8KKworICAgIC8qIGluaXRpYWxpemUgc3RhbmRhcmQgZ2x5cGggbG9hZGluZyByb3V0aW5lcyAqLworICAgIFRUX0luaXRfR2x5cGhfTG9hZGluZyggZmFjZSApOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworCisgIEJhZF9Gb3JtYXQ6CisgICAgZXJyb3IgPSBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworICAgIGdvdG8gRXhpdDsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfZmFjZV9kb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRmluYWxpemUgYSBnaXZlbiBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSA6OiBBIHBvaW50ZXIgdG8gdGhlIGZhY2Ugb2JqZWN0IHRvIGRlc3Ryb3kuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICB0dF9mYWNlX2RvbmUoIEZUX0ZhY2UgIHR0ZmFjZSApICAgICAgICAgICAvKiBUVF9GYWNlICovCisgIHsKKyAgICBUVF9GYWNlICAgICAgIGZhY2UgPSAoVFRfRmFjZSl0dGZhY2U7CisgICAgRlRfTWVtb3J5ICAgICBtZW1vcnk7CisgICAgRlRfU3RyZWFtICAgICBzdHJlYW07CisgICAgU0ZOVF9TZXJ2aWNlICBzZm50OworCisKKyAgICBpZiAoICFmYWNlICkKKyAgICAgIHJldHVybjsKKworICAgIG1lbW9yeSA9IHR0ZmFjZS0+bWVtb3J5OworICAgIHN0cmVhbSA9IHR0ZmFjZS0+c3RyZWFtOworICAgIHNmbnQgICA9IChTRk5UX1NlcnZpY2UpZmFjZS0+c2ZudDsKKworICAgIC8qIGZvciBgZXh0ZW5kZWQgVHJ1ZVR5cGUgZm9ybWF0cycgKGkuZS4gY29tcHJlc3NlZCB2ZXJzaW9ucykgKi8KKyAgICBpZiAoIGZhY2UtPmV4dHJhLmZpbmFsaXplciApCisgICAgICBmYWNlLT5leHRyYS5maW5hbGl6ZXIoIGZhY2UtPmV4dHJhLmRhdGEgKTsKKworICAgIGlmICggc2ZudCApCisgICAgICBzZm50LT5kb25lX2ZhY2UoIGZhY2UgKTsKKworICAgIC8qIGZyZWVpbmcgdGhlIGxvY2F0aW9ucyB0YWJsZSAqLworICAgIHR0X2ZhY2VfZG9uZV9sb2NhKCBmYWNlICk7CisKKyAgICB0dF9mYWNlX2ZyZWVfaGRteCggZmFjZSApOworCisgICAgLyogZnJlZWluZyB0aGUgQ1ZUICovCisgICAgRlRfRlJFRSggZmFjZS0+Y3Z0ICk7CisgICAgZmFjZS0+Y3Z0X3NpemUgPSAwOworCisgICAgLyogZnJlZWluZyB0aGUgcHJvZ3JhbXMgKi8KKyAgICBGVF9GUkFNRV9SRUxFQVNFKCBmYWNlLT5mb250X3Byb2dyYW0gKTsKKyAgICBGVF9GUkFNRV9SRUxFQVNFKCBmYWNlLT5jdnRfcHJvZ3JhbSApOworICAgIGZhY2UtPmZvbnRfcHJvZ3JhbV9zaXplID0gMDsKKyAgICBmYWNlLT5jdnRfcHJvZ3JhbV9zaXplICA9IDA7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgdHRfZG9uZV9ibGVuZCggbWVtb3J5LCBmYWNlLT5ibGVuZCApOworICAgIGZhY2UtPmJsZW5kID0gTlVMTDsKKyNlbmRpZgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRSAgRlVOQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9zaXplX3J1bl9mcGdtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBSdW4gdGhlIGZvbnQgcHJvZ3JhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaXplICAgICA6OiBBIGhhbmRsZSB0byB0aGUgc2l6ZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBlZGFudGljIDo6IFNldCBpZiBieXRlY29kZSBleGVjdXRpb24gc2hvdWxkIGJlIHBlZGFudGljLiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X3NpemVfcnVuX2ZwZ20oIFRUX1NpemUgIHNpemUsCisgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgIHBlZGFudGljICkKKyAgeworICAgIFRUX0ZhY2UgICAgICAgICBmYWNlID0gKFRUX0ZhY2Upc2l6ZS0+cm9vdC5mYWNlOworICAgIFRUX0V4ZWNDb250ZXh0ICBleGVjOworICAgIEZUX0Vycm9yICAgICAgICBlcnJvcjsKKworCisgICAgLyogZGVidWdnaW5nIGluc3RhbmNlcyBoYXZlIHRoZWlyIG93biBjb250ZXh0ICovCisgICAgaWYgKCBzaXplLT5kZWJ1ZyApCisgICAgICBleGVjID0gc2l6ZS0+Y29udGV4dDsKKyAgICBlbHNlCisgICAgICBleGVjID0gKCAoVFRfRHJpdmVyKUZUX0ZBQ0VfRFJJVkVSKCBmYWNlICkgKS0+Y29udGV4dDsKKworICAgIGlmICggIWV4ZWMgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBDb3VsZF9Ob3RfRmluZF9Db250ZXh0ICk7CisKKyAgICBUVF9Mb2FkX0NvbnRleHQoIGV4ZWMsIGZhY2UsIHNpemUgKTsKKworICAgIGV4ZWMtPmNhbGxUb3AgPSAwOworICAgIGV4ZWMtPnRvcCAgICAgPSAwOworCisgICAgZXhlYy0+cGVyaW9kICAgID0gNjQ7CisgICAgZXhlYy0+cGhhc2UgICAgID0gMDsKKyAgICBleGVjLT50aHJlc2hvbGQgPSAwOworCisgICAgZXhlYy0+aW5zdHJ1Y3Rpb25fdHJhcCA9IEZBTFNFOworICAgIGV4ZWMtPkZfZG90X1AgICAgICAgICAgPSAweDQwMDBMOworCisgICAgZXhlYy0+cGVkYW50aWNfaGludGluZyA9IHBlZGFudGljOworCisgICAgeworICAgICAgRlRfU2l6ZV9NZXRyaWNzKiAgbWV0cmljcyAgICA9ICZleGVjLT5tZXRyaWNzOworICAgICAgVFRfU2l6ZV9NZXRyaWNzKiAgdHRfbWV0cmljcyA9ICZleGVjLT50dF9tZXRyaWNzOworCisKKyAgICAgIG1ldHJpY3MtPnhfcHBlbSAgID0gMDsKKyAgICAgIG1ldHJpY3MtPnlfcHBlbSAgID0gMDsKKyAgICAgIG1ldHJpY3MtPnhfc2NhbGUgID0gMDsKKyAgICAgIG1ldHJpY3MtPnlfc2NhbGUgID0gMDsKKworICAgICAgdHRfbWV0cmljcy0+cHBlbSAgPSAwOworICAgICAgdHRfbWV0cmljcy0+c2NhbGUgPSAwOworICAgICAgdHRfbWV0cmljcy0+cmF0aW8gPSAweDEwMDAwTDsKKyAgICB9CisKKyAgICAvKiBhbGxvdyBmb250IHByb2dyYW0gZXhlY3V0aW9uICovCisgICAgVFRfU2V0X0NvZGVSYW5nZSggZXhlYywKKyAgICAgICAgICAgICAgICAgICAgICB0dF9jb2RlcmFuZ2VfZm9udCwKKyAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5mb250X3Byb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+Zm9udF9wcm9ncmFtX3NpemUgKTsKKworICAgIC8qIGRpc2FibGUgQ1ZUIGFuZCBnbHlwaCBwcm9ncmFtcyBjb2RlcmFuZ2UgKi8KKyAgICBUVF9DbGVhcl9Db2RlUmFuZ2UoIGV4ZWMsIHR0X2NvZGVyYW5nZV9jdnQgKTsKKyAgICBUVF9DbGVhcl9Db2RlUmFuZ2UoIGV4ZWMsIHR0X2NvZGVyYW5nZV9nbHlwaCApOworCisgICAgaWYgKCBmYWNlLT5mb250X3Byb2dyYW1fc2l6ZSA+IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gVFRfR290b19Db2RlUmFuZ2UoIGV4ZWMsIHR0X2NvZGVyYW5nZV9mb250LCAwICk7CisKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgIHsKKyAgICAgICAgRlRfVFJBQ0U0KCggIkV4ZWN1dGluZyBgZnBnbScgdGFibGUuXG4iICkpOworCisgICAgICAgIGVycm9yID0gZmFjZS0+aW50ZXJwcmV0ZXIoIGV4ZWMgKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKyAgICBpZiAoICFlcnJvciApCisgICAgICBUVF9TYXZlX0NvbnRleHQoIGV4ZWMsIHNpemUgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RnVuY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgdHRfc2l6ZV9ydW5fcHJlcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgUnVuIHRoZSBjb250cm9sIHZhbHVlIHByb2dyYW0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgc2l6ZSAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNpemUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwZWRhbnRpYyA6OiBTZXQgaWYgYnl0ZWNvZGUgZXhlY3V0aW9uIHNob3VsZCBiZSBwZWRhbnRpYy4gICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9zaXplX3J1bl9wcmVwKCBUVF9TaXplICBzaXplLAorICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICBwZWRhbnRpYyApCisgIHsKKyAgICBUVF9GYWNlICAgICAgICAgZmFjZSA9IChUVF9GYWNlKXNpemUtPnJvb3QuZmFjZTsKKyAgICBUVF9FeGVjQ29udGV4dCAgZXhlYzsKKyAgICBGVF9FcnJvciAgICAgICAgZXJyb3I7CisKKworICAgIC8qIGRlYnVnZ2luZyBpbnN0YW5jZXMgaGF2ZSB0aGVpciBvd24gY29udGV4dCAqLworICAgIGlmICggc2l6ZS0+ZGVidWcgKQorICAgICAgZXhlYyA9IHNpemUtPmNvbnRleHQ7CisgICAgZWxzZQorICAgICAgZXhlYyA9ICggKFRUX0RyaXZlcilGVF9GQUNFX0RSSVZFUiggZmFjZSApICktPmNvbnRleHQ7CisKKyAgICBpZiAoICFleGVjICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggQ291bGRfTm90X0ZpbmRfQ29udGV4dCApOworCisgICAgVFRfTG9hZF9Db250ZXh0KCBleGVjLCBmYWNlLCBzaXplICk7CisKKyAgICBleGVjLT5jYWxsVG9wID0gMDsKKyAgICBleGVjLT50b3AgICAgID0gMDsKKworICAgIGV4ZWMtPmluc3RydWN0aW9uX3RyYXAgPSBGQUxTRTsKKworICAgIGV4ZWMtPnBlZGFudGljX2hpbnRpbmcgPSBwZWRhbnRpYzsKKworICAgIFRUX1NldF9Db2RlUmFuZ2UoIGV4ZWMsCisgICAgICAgICAgICAgICAgICAgICAgdHRfY29kZXJhbmdlX2N2dCwKKyAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5jdnRfcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5jdnRfcHJvZ3JhbV9zaXplICk7CisKKyAgICBUVF9DbGVhcl9Db2RlUmFuZ2UoIGV4ZWMsIHR0X2NvZGVyYW5nZV9nbHlwaCApOworCisgICAgaWYgKCBmYWNlLT5jdnRfcHJvZ3JhbV9zaXplID4gMCApCisgICAgeworICAgICAgZXJyb3IgPSBUVF9Hb3RvX0NvZGVSYW5nZSggZXhlYywgdHRfY29kZXJhbmdlX2N2dCwgMCApOworCisgICAgICBpZiAoICFlcnJvciAmJiAhc2l6ZS0+ZGVidWcgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTQoKCAiRXhlY3V0aW5nIGBwcmVwJyB0YWJsZS5cbiIgKSk7CisKKyAgICAgICAgZXJyb3IgPSBmYWNlLT5pbnRlcnByZXRlciggZXhlYyApOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKworICAgIC8qIFVORE9DVU1FTlRFRCEgIFRoZSBNUyByYXN0ZXJpemVyIGRvZXNuJ3QgYWxsb3cgdGhlIGZvbGxvd2luZyAqLworICAgIC8qIGdyYXBoaWNzIHN0YXRlIHZhcmlhYmxlcyB0byBiZSBtb2RpZmllZCBieSB0aGUgQ1ZUIHByb2dyYW0uICAqLworCisgICAgZXhlYy0+R1MuZHVhbFZlY3Rvci54ID0gMHg0MDAwOworICAgIGV4ZWMtPkdTLmR1YWxWZWN0b3IueSA9IDA7CisgICAgZXhlYy0+R1MucHJvalZlY3Rvci54ID0gMHg0MDAwOworICAgIGV4ZWMtPkdTLnByb2pWZWN0b3IueSA9IDB4MDsKKyAgICBleGVjLT5HUy5mcmVlVmVjdG9yLnggPSAweDQwMDA7CisgICAgZXhlYy0+R1MuZnJlZVZlY3Rvci55ID0gMHgwOworCisgICAgZXhlYy0+R1MucnAwID0gMDsKKyAgICBleGVjLT5HUy5ycDEgPSAwOworICAgIGV4ZWMtPkdTLnJwMiA9IDA7CisKKyAgICBleGVjLT5HUy5nZXAwID0gMTsKKyAgICBleGVjLT5HUy5nZXAxID0gMTsKKyAgICBleGVjLT5HUy5nZXAyID0gMTsKKworICAgIGV4ZWMtPkdTLmxvb3AgPSAxOworCisgICAgLyogc2F2ZSBhcyBkZWZhdWx0IGdyYXBoaWNzIHN0YXRlICovCisgICAgc2l6ZS0+R1MgPSBleGVjLT5HUzsKKworICAgIFRUX1NhdmVfQ29udGV4dCggZXhlYywgc2l6ZSApOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKyNlbmRpZiAvKiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgKi8KKworCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyAgc3RhdGljIHZvaWQKKyAgdHRfc2l6ZV9kb25lX2J5dGVjb2RlKCBGVF9TaXplICBmdHNpemUgKQorICB7CisgICAgVFRfU2l6ZSAgICBzaXplICAgPSAoVFRfU2l6ZSlmdHNpemU7CisgICAgVFRfRmFjZSAgICBmYWNlICAgPSAoVFRfRmFjZSlmdHNpemUtPmZhY2U7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKworCisgICAgaWYgKCBzaXplLT5kZWJ1ZyApCisgICAgeworICAgICAgLyogdGhlIGRlYnVnIGNvbnRleHQgbXVzdCBiZSBkZWxldGVkIGJ5IHRoZSBkZWJ1Z2dlciBpdHNlbGYgKi8KKyAgICAgIHNpemUtPmNvbnRleHQgPSBOVUxMOworICAgICAgc2l6ZS0+ZGVidWcgICA9IEZBTFNFOworICAgIH0KKworICAgIEZUX0ZSRUUoIHNpemUtPmN2dCApOworICAgIHNpemUtPmN2dF9zaXplID0gMDsKKworICAgIC8qIGZyZWUgc3RvcmFnZSBhcmVhICovCisgICAgRlRfRlJFRSggc2l6ZS0+c3RvcmFnZSApOworICAgIHNpemUtPnN0b3JhZ2Vfc2l6ZSA9IDA7CisKKyAgICAvKiB0d2lsaWdodCB6b25lICovCisgICAgdHRfZ2x5cGh6b25lX2RvbmUoICZzaXplLT50d2lsaWdodCApOworCisgICAgRlRfRlJFRSggc2l6ZS0+ZnVuY3Rpb25fZGVmcyApOworICAgIEZUX0ZSRUUoIHNpemUtPmluc3RydWN0aW9uX2RlZnMgKTsKKworICAgIHNpemUtPm51bV9mdW5jdGlvbl9kZWZzICAgID0gMDsKKyAgICBzaXplLT5tYXhfZnVuY3Rpb25fZGVmcyAgICA9IDA7CisgICAgc2l6ZS0+bnVtX2luc3RydWN0aW9uX2RlZnMgPSAwOworICAgIHNpemUtPm1heF9pbnN0cnVjdGlvbl9kZWZzID0gMDsKKworICAgIHNpemUtPm1heF9mdW5jID0gMDsKKyAgICBzaXplLT5tYXhfaW5zICA9IDA7CisKKyAgICBzaXplLT5ieXRlY29kZV9yZWFkeSA9IDA7CisgICAgc2l6ZS0+Y3Z0X3JlYWR5ICAgICAgPSAwOworICB9CisKKworICAvKiBJbml0aWFsaXplIGJ5dGVjb2RlLXJlbGF0ZWQgZmllbGRzIGluIHRoZSBzaXplIG9iamVjdC4gICAgICAgKi8KKyAgLyogV2UgZG8gdGhpcyBvbmx5IGlmIGJ5dGVjb2RlIGludGVycHJldGF0aW9uIGlzIHJlYWxseSBuZWVkZWQuICovCisgIHN0YXRpYyBGVF9FcnJvcgorICB0dF9zaXplX2luaXRfYnl0ZWNvZGUoIEZUX1NpemUgIGZ0c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICBwZWRhbnRpYyApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIFRUX1NpemUgICAgc2l6ZSA9IChUVF9TaXplKWZ0c2l6ZTsKKyAgICBUVF9GYWNlICAgIGZhY2UgPSAoVFRfRmFjZSlmdHNpemUtPmZhY2U7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKyAgICBGVF9JbnQgICAgIGk7CisKKyAgICBGVF9VU2hvcnQgICAgICAgbl90d2lsaWdodDsKKyAgICBUVF9NYXhQcm9maWxlKiAgbWF4cCA9ICZmYWNlLT5tYXhfcHJvZmlsZTsKKworCisgICAgc2l6ZS0+Ynl0ZWNvZGVfcmVhZHkgPSAxOworICAgIHNpemUtPmN2dF9yZWFkeSAgICAgID0gMDsKKworICAgIHNpemUtPm1heF9mdW5jdGlvbl9kZWZzICAgID0gbWF4cC0+bWF4RnVuY3Rpb25EZWZzOworICAgIHNpemUtPm1heF9pbnN0cnVjdGlvbl9kZWZzID0gbWF4cC0+bWF4SW5zdHJ1Y3Rpb25EZWZzOworCisgICAgc2l6ZS0+bnVtX2Z1bmN0aW9uX2RlZnMgICAgPSAwOworICAgIHNpemUtPm51bV9pbnN0cnVjdGlvbl9kZWZzID0gMDsKKworICAgIHNpemUtPm1heF9mdW5jID0gMDsKKyAgICBzaXplLT5tYXhfaW5zICA9IDA7CisKKyAgICBzaXplLT5jdnRfc2l6ZSAgICAgPSBmYWNlLT5jdnRfc2l6ZTsKKyAgICBzaXplLT5zdG9yYWdlX3NpemUgPSBtYXhwLT5tYXhTdG9yYWdlOworCisgICAgLyogU2V0IGRlZmF1bHQgbWV0cmljcyAqLworICAgIHsKKyAgICAgIFRUX1NpemVfTWV0cmljcyogIG1ldHJpY3MgPSAmc2l6ZS0+dHRtZXRyaWNzOworCisKKyAgICAgIG1ldHJpY3MtPnJvdGF0ZWQgICA9IEZBTFNFOworICAgICAgbWV0cmljcy0+c3RyZXRjaGVkID0gRkFMU0U7CisKKyAgICAgIC8qIHNldCBkZWZhdWx0IGNvbXBlbnNhdGlvbiAoYWxsIDApICovCisgICAgICBmb3IgKCBpID0gMDsgaSA8IDQ7IGkrKyApCisgICAgICAgIG1ldHJpY3MtPmNvbXBlbnNhdGlvbnNbaV0gPSAwOworICAgIH0KKworICAgIC8qIGFsbG9jYXRlIGZ1bmN0aW9uIGRlZnMsIGluc3RydWN0aW9uIGRlZnMsIGN2dCwgYW5kIHN0b3JhZ2UgYXJlYSAqLworICAgIGlmICggRlRfTkVXX0FSUkFZKCBzaXplLT5mdW5jdGlvbl9kZWZzLCAgICBzaXplLT5tYXhfZnVuY3Rpb25fZGVmcyAgICApIHx8CisgICAgICAgICBGVF9ORVdfQVJSQVkoIHNpemUtPmluc3RydWN0aW9uX2RlZnMsIHNpemUtPm1heF9pbnN0cnVjdGlvbl9kZWZzICkgfHwKKyAgICAgICAgIEZUX05FV19BUlJBWSggc2l6ZS0+Y3Z0LCAgICAgICAgICAgICAgc2l6ZS0+Y3Z0X3NpemUgICAgICAgICAgICAgKSB8fAorICAgICAgICAgRlRfTkVXX0FSUkFZKCBzaXplLT5zdG9yYWdlLCAgICAgICAgICBzaXplLT5zdG9yYWdlX3NpemUgICAgICAgICApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIHJlc2VydmUgdHdpbGlnaHQgem9uZSAqLworICAgIG5fdHdpbGlnaHQgPSBtYXhwLT5tYXhUd2lsaWdodFBvaW50czsKKworICAgIC8qIHRoZXJlIGFyZSA0IHBoYW50b20gcG9pbnRzIChkbyB3ZSBuZWVkIHRoaXM/KSAqLworICAgIG5fdHdpbGlnaHQgKz0gNDsKKworICAgIGVycm9yID0gdHRfZ2x5cGh6b25lX25ldyggbWVtb3J5LCBuX3R3aWxpZ2h0LCAwLCAmc2l6ZS0+dHdpbGlnaHQgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIHNpemUtPnR3aWxpZ2h0Lm5fcG9pbnRzID0gbl90d2lsaWdodDsKKworICAgIHNpemUtPkdTID0gdHRfZGVmYXVsdF9ncmFwaGljc19zdGF0ZTsKKworICAgIC8qIHNldCBgZmFjZS0+aW50ZXJwcmV0ZXInIGFjY29yZGluZyB0byB0aGUgZGVidWcgaG9vayBwcmVzZW50ICovCisgICAgeworICAgICAgRlRfTGlicmFyeSAgbGlicmFyeSA9IGZhY2UtPnJvb3QuZHJpdmVyLT5yb290LmxpYnJhcnk7CisKKworICAgICAgZmFjZS0+aW50ZXJwcmV0ZXIgPSAoVFRfSW50ZXJwcmV0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeS0+ZGVidWdfaG9va3NbRlRfREVCVUdfSE9PS19UUlVFVFlQRV07CisgICAgICBpZiAoICFmYWNlLT5pbnRlcnByZXRlciApCisgICAgICAgIGZhY2UtPmludGVycHJldGVyID0gKFRUX0ludGVycHJldGVyKVRUX1J1bkluczsKKyAgICB9CisKKyAgICAvKiBGaW5lLCBub3cgcnVuIHRoZSBmb250IHByb2dyYW0hICovCisgICAgZXJyb3IgPSB0dF9zaXplX3J1bl9mcGdtKCBzaXplLCBwZWRhbnRpYyApOworCS8qIEl0IHNlZW1zIGZwZ20gcHJvYyBpcyBjYXVzaW5nIHNvbWUgcHJvYmxlbSBmb3Igc29tZSBmb250LCBzbyB3ZSBpZ25vcmUgdGhlIGVycm9yLiBURVNURE9DOiBCdWcgIzEyNjkwIC0gUmVzdGF1cmFudGthcnRlX09rdG9iZXIwOStXaWxkLnBkZiovCisJaWYgKCBlcnJvciApCisgICAgICB0dF9zaXplX2RvbmVfYnl0ZWNvZGUoIGZ0c2l6ZSApOworCXJldHVybiBUVF9FcnJfT2s7CisKKyAgRXhpdDoKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHR0X3NpemVfZG9uZV9ieXRlY29kZSggZnRzaXplICk7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9zaXplX3JlYWR5X2J5dGVjb2RlKCBUVF9TaXplICBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICBwZWRhbnRpYyApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3IgPSBGVF9FcnJfT2s7CisKKworICAgIGlmICggIXNpemUtPmJ5dGVjb2RlX3JlYWR5ICkKKyAgICB7CisgICAgICBlcnJvciA9IHR0X3NpemVfaW5pdF9ieXRlY29kZSggKEZUX1NpemUpc2l6ZSwgcGVkYW50aWMgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLyogcmVzY2FsZSBDVlQgd2hlbiBuZWVkZWQgKi8KKyAgICBpZiAoICFzaXplLT5jdnRfcmVhZHkgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgIGk7CisgICAgICBUVF9GYWNlICBmYWNlID0gKFRUX0ZhY2Upc2l6ZS0+cm9vdC5mYWNlOworCisKKyAgICAgIC8qIFNjYWxlIHRoZSBjdnQgdmFsdWVzIHRvIHRoZSBuZXcgcHBlbS4gICAgICAgICAgKi8KKyAgICAgIC8qIFdlIHVzZSBieSBkZWZhdWx0IHRoZSB5IHBwZW0gdG8gc2NhbGUgdGhlIENWVC4gKi8KKyAgICAgIGZvciAoIGkgPSAwOyBpIDwgc2l6ZS0+Y3Z0X3NpemU7IGkrKyApCisgICAgICAgIHNpemUtPmN2dFtpXSA9IEZUX011bEZpeCggZmFjZS0+Y3Z0W2ldLCBzaXplLT50dG1ldHJpY3Muc2NhbGUgKTsKKworICAgICAgLyogYWxsIHR3aWxpZ2h0IHBvaW50cyBhcmUgb3JpZ2luYWxseSB6ZXJvICovCisgICAgICBmb3IgKCBpID0gMDsgaSA8IChGVF9VSW50KXNpemUtPnR3aWxpZ2h0Lm5fcG9pbnRzOyBpKysgKQorICAgICAgeworICAgICAgICBzaXplLT50d2lsaWdodC5vcmdbaV0ueCA9IDA7CisgICAgICAgIHNpemUtPnR3aWxpZ2h0Lm9yZ1tpXS55ID0gMDsKKyAgICAgICAgc2l6ZS0+dHdpbGlnaHQuY3VyW2ldLnggPSAwOworICAgICAgICBzaXplLT50d2lsaWdodC5jdXJbaV0ueSA9IDA7CisgICAgICB9CisKKyAgICAgIC8qIGNsZWFyIHN0b3JhZ2UgYXJlYSAqLworICAgICAgZm9yICggaSA9IDA7IGkgPCAoRlRfVUludClzaXplLT5zdG9yYWdlX3NpemU7IGkrKyApCisgICAgICAgIHNpemUtPnN0b3JhZ2VbaV0gPSAwOworCisgICAgICBzaXplLT5HUyA9IHR0X2RlZmF1bHRfZ3JhcGhpY3Nfc3RhdGU7CisKKyAgICAgIHR0X3NpemVfcnVuX3ByZXAoIHNpemUsIHBlZGFudGljICk7LyogSXQgc2VlbXMgcHJlcCBwcm9jIGlzIGNhdXNpbmcgc29tZSBwcm9ibGVtIGZvciBzb21lIGZvbnQsIHNvIHdlIGlnbm9yZSB0aGUgZXJyb3IuIFRFU1RET0M6IEJ1ZyAjNTAyNSAtIG5hcmVkYmEtcmQtMTYtMjk2LnBkZiAqLworCSAgLyogSG93ZXZlciB3ZSBjYW4ndCBkaXNhYmxlIHRoZSBwcmVwLiBURVNURE9DOiBCdWcgIzAwNjMgLSAwNTA4MjZfZGlmZmVyX3RhYmxlLnBkZiwgcGFnZSAjNCAqLworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICBzaXplLT5jdnRfcmVhZHkgPSAxOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisjZW5kaWYgLyogVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSICovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9zaXplX2luaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbml0aWFsaXplIGEgbmV3IFRydWVUeXBlIHNpemUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaXplIDo6IEEgaGFuZGxlIHRvIHRoZSBzaXplIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9zaXplX2luaXQoIEZUX1NpemUgIHR0c2l6ZSApICAgICAgICAgICAvKiBUVF9TaXplICovCisgIHsKKyAgICBUVF9TaXplICAgc2l6ZSAgPSAoVFRfU2l6ZSl0dHNpemU7CisgICAgRlRfRXJyb3IgIGVycm9yID0gRlRfRXJyX09rOworCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisgICAgc2l6ZS0+Ynl0ZWNvZGVfcmVhZHkgPSAwOworICAgIHNpemUtPmN2dF9yZWFkeSAgICAgID0gMDsKKyNlbmRpZgorCisgICAgc2l6ZS0+dHRtZXRyaWNzLnZhbGlkID0gRkFMU0U7CisgICAgc2l6ZS0+c3RyaWtlX2luZGV4ICAgID0gMHhGRkZGRkZGRlVMOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9zaXplX2RvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgVHJ1ZVR5cGUgc2l6ZSBvYmplY3QgZmluYWxpemVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaXplIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgc2l6ZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHR0X3NpemVfZG9uZSggRlRfU2l6ZSAgdHRzaXplICkgICAgICAgICAgIC8qIFRUX1NpemUgKi8KKyAgeworICAgIFRUX1NpemUgIHNpemUgPSAoVFRfU2l6ZSl0dHNpemU7CisKKworI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorICAgIGlmICggc2l6ZS0+Ynl0ZWNvZGVfcmVhZHkgKQorICAgICAgdHRfc2l6ZV9kb25lX2J5dGVjb2RlKCB0dHNpemUgKTsKKyNlbmRpZgorCisgICAgc2l6ZS0+dHRtZXRyaWNzLnZhbGlkID0gRkFMU0U7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X3NpemVfcmVzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFJlc2V0IGEgVHJ1ZVR5cGUgc2l6ZSB3aGVuIHJlc29sdXRpb25zIGFuZCBjaGFyYWN0ZXIgZGltZW5zaW9ucyAgICAqLworICAvKiAgICBoYXZlIGJlZW4gY2hhbmdlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaXplIDo6IEEgaGFuZGxlIHRvIHRoZSB0YXJnZXQgc2l6ZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9zaXplX3Jlc2V0KCBUVF9TaXplICBzaXplICkKKyAgeworICAgIFRUX0ZhY2UgICAgICAgICAgIGZhY2U7CisgICAgRlRfRXJyb3IgICAgICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgRlRfU2l6ZV9NZXRyaWNzKiAgbWV0cmljczsKKworCisgICAgc2l6ZS0+dHRtZXRyaWNzLnZhbGlkID0gRkFMU0U7CisKKyAgICBmYWNlID0gKFRUX0ZhY2Upc2l6ZS0+cm9vdC5mYWNlOworCisgICAgbWV0cmljcyA9ICZzaXplLT5tZXRyaWNzOworCisgICAgLyogY29weSB0aGUgcmVzdWx0IGZyb20gYmFzZSBsYXllciAqLworICAgICptZXRyaWNzID0gc2l6ZS0+cm9vdC5tZXRyaWNzOworCisgICAgaWYgKCBtZXRyaWNzLT54X3BwZW0gPCAxIHx8IG1ldHJpY3MtPnlfcHBlbSA8IDEgKQorICAgICAgcmV0dXJuIEZUX1RIUk9XKCBJbnZhbGlkX1BQZW0gKTsKKworICAgIC8qIFRoaXMgYml0IGZsYWcsIGlmIHNldCwgaW5kaWNhdGVzIHRoYXQgdGhlIHBwZW1zIG11c3QgYmUgICAgICAgKi8KKyAgICAvKiByb3VuZGVkIHRvIGludGVnZXJzLiAgTmVhcmx5IGFsbCBUcnVlVHlwZSBmb250cyBoYXZlIHRoaXMgYml0ICovCisgICAgLyogc2V0LCBhcyBoaW50aW5nIHdvbid0IHdvcmsgcmVhbGx5IHdlbGwgb3RoZXJ3aXNlLiAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIGZhY2UtPmhlYWRlci5GbGFncyAmIDggKQorICAgIHsKKyAgICAgIG1ldHJpY3MtPnhfc2NhbGUgPSBGVF9EaXZGaXgoIG1ldHJpY3MtPnhfcHBlbSA8PCA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC51bml0c19wZXJfRU0gKTsKKyAgICAgIG1ldHJpY3MtPnlfc2NhbGUgPSBGVF9EaXZGaXgoIG1ldHJpY3MtPnlfcHBlbSA8PCA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC51bml0c19wZXJfRU0gKTsKKworICAgICAgbWV0cmljcy0+YXNjZW5kZXIgPQorICAgICAgICBGVF9QSVhfUk9VTkQoIEZUX011bEZpeCggZmFjZS0+cm9vdC5hc2NlbmRlciwgbWV0cmljcy0+eV9zY2FsZSApICk7CisgICAgICBtZXRyaWNzLT5kZXNjZW5kZXIgPQorICAgICAgICBGVF9QSVhfUk9VTkQoIEZUX011bEZpeCggZmFjZS0+cm9vdC5kZXNjZW5kZXIsIG1ldHJpY3MtPnlfc2NhbGUgKSApOworICAgICAgbWV0cmljcy0+aGVpZ2h0ID0KKyAgICAgICAgRlRfUElYX1JPVU5EKCBGVF9NdWxGaXgoIGZhY2UtPnJvb3QuaGVpZ2h0LCBtZXRyaWNzLT55X3NjYWxlICkgKTsKKyAgICAgIG1ldHJpY3MtPm1heF9hZHZhbmNlID0KKyAgICAgICAgRlRfUElYX1JPVU5EKCBGVF9NdWxGaXgoIGZhY2UtPnJvb3QubWF4X2FkdmFuY2Vfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLT54X3NjYWxlICkgKTsKKyAgICB9CisKKyAgICAvKiBjb21wdXRlIG5ldyB0cmFuc2Zvcm1hdGlvbiAqLworICAgIGlmICggbWV0cmljcy0+eF9wcGVtID49IG1ldHJpY3MtPnlfcHBlbSApCisgICAgeworICAgICAgc2l6ZS0+dHRtZXRyaWNzLnNjYWxlICAgPSBtZXRyaWNzLT54X3NjYWxlOworICAgICAgc2l6ZS0+dHRtZXRyaWNzLnBwZW0gICAgPSBtZXRyaWNzLT54X3BwZW07CisgICAgICBzaXplLT50dG1ldHJpY3MueF9yYXRpbyA9IDB4MTAwMDBMOworICAgICAgc2l6ZS0+dHRtZXRyaWNzLnlfcmF0aW8gPSBGVF9EaXZGaXgoIG1ldHJpY3MtPnlfcHBlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLT54X3BwZW0gKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHNpemUtPnR0bWV0cmljcy5zY2FsZSAgID0gbWV0cmljcy0+eV9zY2FsZTsKKyAgICAgIHNpemUtPnR0bWV0cmljcy5wcGVtICAgID0gbWV0cmljcy0+eV9wcGVtOworICAgICAgc2l6ZS0+dHRtZXRyaWNzLnhfcmF0aW8gPSBGVF9EaXZGaXgoIG1ldHJpY3MtPnhfcHBlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLT55X3BwZW0gKTsKKyAgICAgIHNpemUtPnR0bWV0cmljcy55X3JhdGlvID0gMHgxMDAwMEw7CisgICAgfQorCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisgICAgc2l6ZS0+Y3Z0X3JlYWR5ID0gMDsKKyNlbmRpZiAvKiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgKi8KKworICAgIGlmICggIWVycm9yICkKKyAgICAgIHNpemUtPnR0bWV0cmljcy52YWxpZCA9IFRSVUU7CisKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2RyaXZlcl9pbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRpYWxpemUgYSBnaXZlbiBUcnVlVHlwZSBkcml2ZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRyaXZlciA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGRyaXZlciBvYmplY3QuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X2RyaXZlcl9pbml0KCBGVF9Nb2R1bGUgIHR0ZHJpdmVyICkgICAgIC8qIFRUX0RyaXZlciAqLworICB7CisKKyNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKKworICAgIFRUX0RyaXZlciAgZHJpdmVyID0gKFRUX0RyaXZlcil0dGRyaXZlcjsKKworCisgICAgaWYgKCAhVFRfTmV3X0NvbnRleHQoIGRyaXZlciApICkKKyAgICAgIHJldHVybiBGVF9USFJPVyggQ291bGRfTm90X0ZpbmRfQ29udGV4dCApOworCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9TVUJQSVhFTF9ISU5USU5HCisgICAgZHJpdmVyLT5pbnRlcnByZXRlcl92ZXJzaW9uID0gVFRfSU5URVJQUkVURVJfVkVSU0lPTl8zODsKKyNlbHNlCisgICAgZHJpdmVyLT5pbnRlcnByZXRlcl92ZXJzaW9uID0gVFRfSU5URVJQUkVURVJfVkVSU0lPTl8zNTsKKyNlbmRpZgorCisjZWxzZSAvKiAhVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSICovCisKKyAgICBGVF9VTlVTRUQoIHR0ZHJpdmVyICk7CisKKyNlbmRpZiAvKiAhVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSICovCisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9kcml2ZXJfZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGaW5hbGl6ZSBhIGdpdmVuIFRydWVUeXBlIGRyaXZlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkcml2ZXIgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBUcnVlVHlwZSBkcml2ZXIuICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHR0X2RyaXZlcl9kb25lKCBGVF9Nb2R1bGUgIHR0ZHJpdmVyICkgICAgIC8qIFRUX0RyaXZlciAqLworICB7CisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisgICAgVFRfRHJpdmVyICBkcml2ZXIgPSAoVFRfRHJpdmVyKXR0ZHJpdmVyOworCisKKyAgICAvKiBkZXN0cm95IHRoZSBleGVjdXRpb24gY29udGV4dCAqLworICAgIGlmICggZHJpdmVyLT5jb250ZXh0ICkKKyAgICB7CisgICAgICBUVF9Eb25lX0NvbnRleHQoIGRyaXZlci0+Y29udGV4dCApOworICAgICAgZHJpdmVyLT5jb250ZXh0ID0gTlVMTDsKKyAgICB9CisjZWxzZQorICAgIEZUX1VOVVNFRCggdHRkcml2ZXIgKTsKKyNlbmRpZgorCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X3Nsb3RfaW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEluaXRpYWxpemUgYSBuZXcgc2xvdCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHNsb3QgOjogQSBoYW5kbGUgdG8gdGhlIHNsb3Qgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X3Nsb3RfaW5pdCggRlRfR2x5cGhTbG90ICBzbG90ICkKKyAgeworICAgIHJldHVybiBGVF9HbHlwaExvYWRlcl9DcmVhdGVFeHRyYSggc2xvdC0+aW50ZXJuYWwtPmxvYWRlciApOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0b2Jqcy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dG9ianMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWRmYjdhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dG9ianMuaApAQCAtMCwwICsxLDQ0MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdHRvYmpzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIE9iamVjdHMgbWFuYWdlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDksIDIwMTEtMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVFRPQkpTX0hfXworI2RlZmluZSBfX1RUT0JKU19IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9Ecml2ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIFRydWVUeXBlIGRyaXZlciBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IFRUX0RyaXZlclJlY18qICBUVF9Ecml2ZXI7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9JbnN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGhhbmRsZSB0byBhIFRydWVUeXBlIHNpemUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IFRUX1NpemVSZWNfKiAgVFRfU2l6ZTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRUX0dseXBoU2xvdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgVHJ1ZVR5cGUgZ2x5cGggc2xvdCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE5vdGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoaXMgaXMgYSBkaXJlY3QgdHlwZWRlZiBvZiBGVF9HbHlwaFNsb3QsIGFzIHRoZXJlIGlzIG5vdGhpbmcgICAgICAqLworICAvKiAgICBzcGVjaWZpYyBhYm91dCB0aGUgVHJ1ZVR5cGUgZ2x5cGggc2xvdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgRlRfR2x5cGhTbG90ICBUVF9HbHlwaFNsb3Q7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUVF9HcmFwaGljc1N0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGUgVHJ1ZVR5cGUgZ3JhcGhpY3Mgc3RhdGUgdXNlZCBkdXJpbmcgYnl0ZWNvZGUgaW50ZXJwcmV0YXRpb24uICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9HcmFwaGljc1N0YXRlXworICB7CisgICAgRlRfVVNob3J0ICAgICAgcnAwOworICAgIEZUX1VTaG9ydCAgICAgIHJwMTsKKyAgICBGVF9VU2hvcnQgICAgICBycDI7CisKKyAgICBGVF9Vbml0VmVjdG9yICBkdWFsVmVjdG9yOworICAgIEZUX1VuaXRWZWN0b3IgIHByb2pWZWN0b3I7CisgICAgRlRfVW5pdFZlY3RvciAgZnJlZVZlY3RvcjsKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fVU5QQVRFTlRFRF9ISU5USU5HCisgICAgRlRfQm9vbCAgICAgICAgYm90aF94X2F4aXM7CisjZW5kaWYKKworICAgIEZUX0xvbmcgICAgICAgIGxvb3A7CisgICAgRlRfRjI2RG90NiAgICAgbWluaW11bV9kaXN0YW5jZTsKKyAgICBGVF9JbnQgICAgICAgICByb3VuZF9zdGF0ZTsKKworICAgIEZUX0Jvb2wgICAgICAgIGF1dG9fZmxpcDsKKyAgICBGVF9GMjZEb3Q2ICAgICBjb250cm9sX3ZhbHVlX2N1dGluOworICAgIEZUX0YyNkRvdDYgICAgIHNpbmdsZV93aWR0aF9jdXRpbjsKKyAgICBGVF9GMjZEb3Q2ICAgICBzaW5nbGVfd2lkdGhfdmFsdWU7CisgICAgRlRfU2hvcnQgICAgICAgZGVsdGFfYmFzZTsKKyAgICBGVF9TaG9ydCAgICAgICBkZWx0YV9zaGlmdDsKKworICAgIEZUX0J5dGUgICAgICAgIGluc3RydWN0X2NvbnRyb2w7CisgICAgLyogQWNjb3JkaW5nIHRvIEdyZWcgSGl0Y2hjb2NrIGZyb20gTWljcm9zb2Z0LCB0aGUgYHNjYW5fY29udHJvbCcgICAgICovCisgICAgLyogdmFyaWFibGUgYXMgZG9jdW1lbnRlZCBpbiB0aGUgVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbiBpcyBhIDMyLWJpdCAgICovCisgICAgLyogaW50ZWdlcjsgdGhlIGhpZ2gtd29yZCBwYXJ0IGhvbGRzIHRoZSBTQ0FOVFlQRSB2YWx1ZSwgdGhlIGxvdy13b3JkICovCisgICAgLyogcGFydCB0aGUgU0NBTkNUUkwgdmFsdWUuICBXZSBzZXBhcmF0ZSBpdCBpbnRvIHR3byBmaWVsZHMuICAgICAgICAgICovCisgICAgRlRfQm9vbCAgICAgICAgc2Nhbl9jb250cm9sOworICAgIEZUX0ludCAgICAgICAgIHNjYW5fdHlwZTsKKworICAgIEZUX1VTaG9ydCAgICAgIGdlcDA7CisgICAgRlRfVVNob3J0ICAgICAgZ2VwMTsKKyAgICBGVF9VU2hvcnQgICAgICBnZXAyOworCisgIH0gVFRfR3JhcGhpY3NTdGF0ZTsKKworCisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICB0dF9nbHlwaHpvbmVfZG9uZSggVFRfR2x5cGhab25lICB6b25lICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfZ2x5cGh6b25lX25ldyggRlRfTWVtb3J5ICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgIEZUX1VTaG9ydCAgICAgbWF4UG9pbnRzLAorICAgICAgICAgICAgICAgICAgICBGVF9TaG9ydCAgICAgIG1heENvbnRvdXJzLAorICAgICAgICAgICAgICAgICAgICBUVF9HbHlwaFpvbmUgIHpvbmUgKTsKKworI2VuZGlmIC8qIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUiAqLworCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICBFWEVDVVRJT04gU1VCVEFCTEVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIFRoZXNlIHN1Yi10YWJsZXMgcmVsYXRlIHRvIGluc3RydWN0aW9uIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjZGVmaW5lIFRUX01BWF9DT0RFX1JBTkdFUyAgMworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGVyZSBjYW4gb25seSBiZSAzIGFjdGl2ZSBjb2RlIHJhbmdlcyBhdCBvbmNlOiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAtIHRoZSBGb250IFByb2dyYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgLSB0aGUgQ1ZUIFByb2dyYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIC0gYSBnbHlwaCdzIGluc3RydWN0aW9ucyBzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgZW51bSAgVFRfQ29kZVJhbmdlX1RhZ18KKyAgeworICAgIHR0X2NvZGVyYW5nZV9ub25lID0gMCwKKyAgICB0dF9jb2RlcmFuZ2VfZm9udCwKKyAgICB0dF9jb2RlcmFuZ2VfY3Z0LAorICAgIHR0X2NvZGVyYW5nZV9nbHlwaAorCisgIH0gVFRfQ29kZVJhbmdlX1RhZzsKKworCisgIHR5cGVkZWYgc3RydWN0ICBUVF9Db2RlUmFuZ2VfCisgIHsKKyAgICBGVF9CeXRlKiAgYmFzZTsKKyAgICBGVF9VTG9uZyAgc2l6ZTsKKworICB9IFRUX0NvZGVSYW5nZTsKKworICB0eXBlZGVmIFRUX0NvZGVSYW5nZSAgVFRfQ29kZVJhbmdlVGFibGVbVFRfTUFYX0NPREVfUkFOR0VTXTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRGVmaW5lcyBhIGZ1bmN0aW9uL2luc3RydWN0aW9uIGRlZmluaXRpb24gcmVjb3JkLiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfRGVmUmVjb3JkXworICB7CisgICAgRlRfSW50ICAgIHJhbmdlOyAgICAgICAgICAvKiBpbiB3aGljaCBjb2RlIHJhbmdlIGlzIGl0IGxvY2F0ZWQ/ICAgICAqLworICAgIEZUX0xvbmcgICBzdGFydDsgICAgICAgICAgLyogd2hlcmUgZG9lcyBpdCBzdGFydD8gICAgICAgICAgICAgICAgICAgKi8KKyAgICBGVF9Mb25nICAgZW5kOyAgICAgICAgICAgIC8qIHdoZXJlIGRvZXMgaXQgZW5kPyAgICAgICAgICAgICAgICAgICAgICovCisgICAgRlRfVUludCAgIG9wYzsgICAgICAgICAgICAvKiBmdW5jdGlvbiAjLCBvciBpbnN0cnVjdGlvbiBjb2RlICAgICAgICAqLworICAgIEZUX0Jvb2wgICBhY3RpdmU7ICAgICAgICAgLyogaXMgaXQgYWN0aXZlPyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBGVF9Cb29sICAgaW5saW5lX2RlbHRhOyAgIC8qIGlzIGZ1bmN0aW9uIHRoYXQgZGVmaW5lcyBpbmxpbmUgZGVsdGE/ICovCisgICAgRlRfVUxvbmcgIHNwaF9mZGVmX2ZsYWdzOyAvKiBmbGFncyB0byBpZGVudGlmeSBzcGVjaWFsIGZ1bmN0aW9ucyAgICAqLworCisgIH0gVFRfRGVmUmVjb3JkLCAqVFRfRGVmQXJyYXk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFN1YmdseXBoIHRyYW5zZm9ybWF0aW9uIHJlY29yZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgIFRUX1RyYW5zZm9ybV8KKyAgeworICAgIEZUX0ZpeGVkICAgIHh4LCB4eTsgICAgIC8qIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBjb2VmZmljaWVudHMgKi8KKyAgICBGVF9GaXhlZCAgICB5eCwgeXk7CisgICAgRlRfRjI2RG90NiAgb3gsIG95OyAgICAgLyogb2Zmc2V0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIH0gVFRfVHJhbnNmb3JtOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBIG5vdGUgcmVnYXJkaW5nIG5vbi1zcXVhcmVkIHBpeGVsczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIChUaGlzIHRleHQgd2lsbCBwcm9iYWJseSBnbyBpbnRvIHNvbWUgZG9jcyBhdCBzb21lIHRpbWU7IGZvciBub3csIGl0ICAqLworICAvKiBpcyBrZXB0IGhlcmUgdG8gZXhwbGFpbiBzb21lIGRlZmluaXRpb25zIGluIHRoZSBUVF9TaXplX01ldHJpY3MgICAgICAgKi8KKyAgLyogcmVjb3JkKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgQ1ZUIGlzIGEgb25lLWRpbWVuc2lvbmFsIGFycmF5IGNvbnRhaW5pbmcgdmFsdWVzIHRoYXQgY29udHJvbCAgICAgKi8KKyAgLyogY2VydGFpbiBpbXBvcnRhbnQgY2hhcmFjdGVyaXN0aWNzIGluIGEgZm9udCwgbGlrZSB0aGUgaGVpZ2h0IG9mIGFsbCAgICovCisgIC8qIGNhcGl0YWxzLCBhbGwgbG93ZXJjYXNlIGxldHRlciwgZGVmYXVsdCBzcGFjaW5nIG9yIHN0ZW0gd2lkdGgvaGVpZ2h0LiAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlc2UgdmFsdWVzIGFyZSBmb3VuZCBpbiBGVW5pdHMgaW4gdGhlIGZvbnQgZmlsZSwgYW5kIG11c3QgYmUgc2NhbGVkICovCisgIC8qIHRvIHBpeGVsIGNvb3JkaW5hdGVzIGJlZm9yZSBiZWluZyB1c2VkIGJ5IHRoZSBDVlQgYW5kIGdseXBoIHByb2dyYW1zLiAqLworICAvKiBVbmZvcnR1bmF0ZWx5LCB3aGVuIHVzaW5nIGRpc3RpbmN0IHggYW5kIHkgcmVzb2x1dGlvbnMgKG9yIGRpc3RpbmN0IHggKi8KKyAgLyogYW5kIHkgcG9pbnRzaXplcyksIHRoZXJlIGFyZSB0d28gcG9zc2libGUgc2NhbGluZ3MuICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBIGZpcnN0IHRyeSB3YXMgdG8gaW1wbGVtZW50IGEgYGxhenknIHNjaGVtZSB3aGVyZSBhbGwgdmFsdWVzIHdlcmUgICAgKi8KKyAgLyogc2NhbGVkIHdoZW4gZmlyc3QgdXNlZC4gIEhvd2V2ZXIsIHdoaWxlIHNvbWUgdmFsdWVzIGFyZSBhbHdheXMgdXNlZCAgICovCisgIC8qIGluIHRoZSBzYW1lIGRpcmVjdGlvbiwgc29tZSBvdGhlcnMgYXJlIHVzZWQgdW5kZXIgbWFueSBkaWZmZXJlbnQgICAgICAqLworICAvKiBjaXJjdW1zdGFuY2VzIGFuZCBvcmllbnRhdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEkgaGF2ZSBmb3VuZCBhIHNpbXBsZXIgd2F5IHRvIGRvIHRoZSBzYW1lLCBhbmQgaXQgZXZlbiBzZWVtcyB0byB3b3JrICAqLworICAvKiBpbiBtb3N0IG9mIHRoZSBjYXNlczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIC0gQWxsIENWVCB2YWx1ZXMgYXJlIHNjYWxlZCB0byB0aGUgbWF4aW11bSBwcGVtIHNpemUuICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogLSBXaGVuIHBlcmZvcm1pbmcgYSByZWFkIG9yIHdyaXRlIGluIHRoZSBDVlQsIGEgcmF0aW8gZmFjdG9yIGlzIHVzZWQgICovCisgIC8qICAgdG8gcGVyZm9ybSBhZGVxdWF0ZSBzY2FsaW5nLiAgRXhhbXBsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIHhfcHBlbSA9IDE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICB5X3BwZW0gPSAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBXZSBjaG9vc2UgcHBlbSA9IHhfcHBlbSA9IDE0IGFzIHRoZSBDVlQgc2NhbGluZyBzaXplLiAgQWxsIGN2dCAgICAgICovCisgIC8qICAgZW50cmllcyBhcmUgc2NhbGVkIHRvIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIHhfcmF0aW8gPSAxLjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICB5X3JhdGlvID0geV9wcGVtL3BwZW0gKDwgMS4wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICBXZSBjb21wdXRlIHRoZSBjdXJyZW50IHJhdGlvIGxpa2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIC0gSWYgcHJvalZlY3RvciBpcyBob3Jpem9udGFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgcmF0aW8gPSB4X3JhdGlvID0gMS4wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIC0gaWYgcHJvalZlY3RvciBpcyB2ZXJ0aWNhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgcmF0aW8gPSB5X3JhdGlvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIC0gZWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgcmF0aW8gPSBzcXJ0KCAocHJvai54ICogeF9yYXRpbykgXiAyICsgKHByb2oueSAqIHlfcmF0aW8pIF4gMiApICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFJlYWRpbmcgYSBjdnQgdmFsdWUgcmV0dXJucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIHJhdGlvICogY3Z0W2luZGV4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFdyaXRpbmcgYSBjdnQgdmFsdWUgaW4gcGl4ZWxzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIGN2dFtpbmRleF0gLyByYXRpbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgIFRoZSBjdXJyZW50IHBwZW0gaXMgc2ltcGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgIHJhdGlvICogcHBlbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogTWV0cmljcyB1c2VkIGJ5IHRoZSBUcnVlVHlwZSBzaXplIGFuZCBjb250ZXh0IG9iamVjdHMuICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVFRfU2l6ZV9NZXRyaWNzXworICB7CisgICAgLyogZm9yIG5vbi1zcXVhcmUgcGl4ZWxzICovCisgICAgRlRfTG9uZyAgICAgeF9yYXRpbzsKKyAgICBGVF9Mb25nICAgICB5X3JhdGlvOworCisgICAgRlRfVVNob3J0ICAgcHBlbTsgICAgICAgICAgICAgICAvKiBtYXhpbXVtIHBwZW0gc2l6ZSAgICAgICAgICAgICAgKi8KKyAgICBGVF9Mb25nICAgICByYXRpbzsgICAgICAgICAgICAgIC8qIGN1cnJlbnQgcmF0aW8gICAgICAgICAgICAgICAgICAqLworICAgIEZUX0ZpeGVkICAgIHNjYWxlOworCisgICAgRlRfRjI2RG90NiAgY29tcGVuc2F0aW9uc1s0XTsgICAvKiBkZXZpY2Utc3BlY2lmaWMgY29tcGVuc2F0aW9ucyAgKi8KKworICAgIEZUX0Jvb2wgICAgIHZhbGlkOworCisgICAgRlRfQm9vbCAgICAgcm90YXRlZDsgICAgICAgICAgICAvKiBgaXMgdGhlIGdseXBoIHJvdGF0ZWQ/Jy1mbGFnICAgKi8KKyAgICBGVF9Cb29sICAgICBzdHJldGNoZWQ7ICAgICAgICAgIC8qIGBpcyB0aGUgZ2x5cGggc3RyZXRjaGVkPyctZmxhZyAqLworCisgIH0gVFRfU2l6ZV9NZXRyaWNzOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUcnVlVHlwZSBzaXplIGNsYXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9TaXplUmVjXworICB7CisgICAgRlRfU2l6ZVJlYyAgICAgICAgIHJvb3Q7CisKKyAgICAvKiB3ZSBoYXZlIG91ciBvd24gY29weSBvZiBtZXRyaWNzIHNvIHRoYXQgd2UgY2FuIG1vZGlmeSAqLworICAgIC8qIGl0IHdpdGhvdXQgYWZmZWN0aW5nIGF1dG8taGludGluZyAod2hlbiB1c2VkKSAgICAgICAgICovCisgICAgRlRfU2l6ZV9NZXRyaWNzICAgIG1ldHJpY3M7CisKKyAgICBUVF9TaXplX01ldHJpY3MgICAgdHRtZXRyaWNzOworCisgICAgRlRfVUxvbmcgICAgICAgICAgIHN0cmlrZV9pbmRleDsgICAgICAvKiAweEZGRkZGRkZGIHRvIGluZGljYXRlIGludmFsaWQgKi8KKworI2lmZGVmIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUgorCisgICAgRlRfVUludCAgICAgICAgICAgIG51bV9mdW5jdGlvbl9kZWZzOyAvKiBudW1iZXIgb2YgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKi8KKyAgICBGVF9VSW50ICAgICAgICAgICAgbWF4X2Z1bmN0aW9uX2RlZnM7CisgICAgVFRfRGVmQXJyYXkgICAgICAgIGZ1bmN0aW9uX2RlZnM7ICAgICAvKiB0YWJsZSBvZiBmdW5jdGlvbiBkZWZpbml0aW9ucyAgKi8KKworICAgIEZUX1VJbnQgICAgICAgICAgICBudW1faW5zdHJ1Y3Rpb25fZGVmczsgIC8qIG51bWJlciBvZiBpbnMuIGRlZmluaXRpb25zICovCisgICAgRlRfVUludCAgICAgICAgICAgIG1heF9pbnN0cnVjdGlvbl9kZWZzOworICAgIFRUX0RlZkFycmF5ICAgICAgICBpbnN0cnVjdGlvbl9kZWZzOyAgICAgIC8qIHRhYmxlIG9mIGlucy4gZGVmaW5pdGlvbnMgICovCisKKyAgICBGVF9VSW50ICAgICAgICAgICAgbWF4X2Z1bmM7CisgICAgRlRfVUludCAgICAgICAgICAgIG1heF9pbnM7CisKKyAgICBUVF9Db2RlUmFuZ2VUYWJsZSAgY29kZVJhbmdlVGFibGU7CisKKyAgICBUVF9HcmFwaGljc1N0YXRlICAgR1M7CisKKyAgICBGVF9VTG9uZyAgICAgICAgICAgY3Z0X3NpemU7ICAgICAgLyogdGhlIHNjYWxlZCBjb250cm9sIHZhbHVlIHRhYmxlICovCisgICAgRlRfTG9uZyogICAgICAgICAgIGN2dDsKKworICAgIEZUX1VTaG9ydCAgICAgICAgICBzdG9yYWdlX3NpemU7IC8qIFRoZSBzdG9yYWdlIGFyZWEgaXMgbm93IHBhcnQgb2YgKi8KKyAgICBGVF9Mb25nKiAgICAgICAgICAgc3RvcmFnZTsgICAgICAvKiB0aGUgaW5zdGFuY2UgICAgICAgICAgICAgICAgICAgICovCisKKyAgICBUVF9HbHlwaFpvbmVSZWMgICAgdHdpbGlnaHQ7ICAgICAvKiBUaGUgaW5zdGFuY2UncyB0d2lsaWdodCB6b25lICAgICovCisKKyAgICAvKiBkZWJ1Z2dpbmcgdmFyaWFibGVzICovCisKKyAgICAvKiBXaGVuIHVzaW5nIHRoZSBkZWJ1Z2dlciwgd2UgbXVzdCBrZWVwIHRoZSAqLworICAgIC8qIGV4ZWN1dGlvbiBjb250ZXh0IHRpZWQgdG8gdGhlIGluc3RhbmNlICAgICovCisgICAgLyogb2JqZWN0IHJhdGhlciB0aGFuIGFza2luZyBpdCBvbiBkZW1hbmQuICAgKi8KKworICAgIEZUX0Jvb2wgICAgICAgICAgICBkZWJ1ZzsKKyAgICBUVF9FeGVjQ29udGV4dCAgICAgY29udGV4dDsKKworICAgIEZUX0Jvb2wgICAgICAgICAgICBieXRlY29kZV9yZWFkeTsKKyAgICBGVF9Cb29sICAgICAgICAgICAgY3Z0X3JlYWR5OworCisjZW5kaWYgLyogVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSICovCisKKyAgfSBUVF9TaXplUmVjOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUcnVlVHlwZSBkcml2ZXIgY2xhc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUVF9Ecml2ZXJSZWNfCisgIHsKKyAgICBGVF9Ecml2ZXJSZWMgIHJvb3Q7CisKKyAgICBUVF9FeGVjQ29udGV4dCAgIGNvbnRleHQ7ICAvKiBleGVjdXRpb24gY29udGV4dCAgICAgICAgKi8KKyAgICBUVF9HbHlwaFpvbmVSZWMgIHpvbmU7ICAgICAvKiBnbHlwaCBsb2FkZXIgcG9pbnRzIHpvbmUgKi8KKworICAgIEZUX1VJbnQgIGludGVycHJldGVyX3ZlcnNpb247CisKKyAgfSBUVF9Ecml2ZXJSZWM7CisKKworICAvKiBOb3RlOiBBbGwgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyAoZXhjZXB0IHR0X3NpemVfcmVzZXQoKSkgYXJlIHVzZWQgICAgKi8KKyAgLyogYXMgZnVuY3Rpb24gcG9pbnRlcnMgaW4gYSBGVF9Ecml2ZXJfQ2xhc3NSZWMuICBUaGVyZWZvcmUgdGhlaXIgICAgICAgICovCisgIC8qIHBhcmFtZXRlcnMgYXJlIG9mIHR5cGVzIEZUX0ZhY2UsIEZUX1NpemUsIGV0Yy4sIHJhdGhlciB0aGFuIFRUX0ZhY2UsICAqLworICAvKiBUVF9TaXplLCBldGMuLCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gY29uZmlybSB0aGF0IHRoZSB0eXBlcyBhbmQgICAgKi8KKyAgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgYXJlIGNvcnJlY3QuICBJbiBhbGwgY2FzZXMgdGhlIEZUX3h4eCB0eXBlcyBhcmUgICovCisgIC8qIGNhc3QgdG8gdGhlaXIgVFRfeHh4IGNvdW50ZXJwYXJ0cyBpbnNpZGUgdGhlIGZ1bmN0aW9ucyBzaW5jZSBGcmVlVHlwZSAqLworICAvKiB3aWxsIGFsd2F5cyB1c2UgdGhlIFRUIGRyaXZlciB0byBjcmVhdGUgdGhlbS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRmFjZSBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2luaXQoIEZUX1N0cmVhbSAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICBGVF9GYWNlICAgICAgICB0dGZhY2UsICAgICAgLyogVFRfRmFjZSAqLworICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbXMgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIHR0X2ZhY2VfZG9uZSggRlRfRmFjZSAgdHRmYWNlICk7ICAgICAgICAgIC8qIFRUX0ZhY2UgKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU2l6ZSBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9zaXplX2luaXQoIEZUX1NpemUgIHR0c2l6ZSApOyAgICAgICAgICAvKiBUVF9TaXplICovCisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICB0dF9zaXplX2RvbmUoIEZUX1NpemUgIHR0c2l6ZSApOyAgICAgICAgICAvKiBUVF9TaXplICovCisKKyNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9zaXplX3J1bl9mcGdtKCBUVF9TaXplICBzaXplLAorICAgICAgICAgICAgICAgICAgICBGVF9Cb29sICBwZWRhbnRpYyApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X3NpemVfcnVuX3ByZXAoIFRUX1NpemUgIHNpemUsCisgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgIHBlZGFudGljICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfc2l6ZV9yZWFkeV9ieXRlY29kZSggVFRfU2l6ZSAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfQm9vbCAgcGVkYW50aWMgKTsKKworI2VuZGlmIC8qIFRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUiAqLworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X3NpemVfcmVzZXQoIFRUX1NpemUgIHNpemUgKTsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogRHJpdmVyIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9kcml2ZXJfaW5pdCggRlRfTW9kdWxlICB0dGRyaXZlciApOyAgICAvKiBUVF9Ecml2ZXIgKi8KKworICBGVF9MT0NBTCggdm9pZCApCisgIHR0X2RyaXZlcl9kb25lKCBGVF9Nb2R1bGUgIHR0ZHJpdmVyICk7ICAgIC8qIFRUX0RyaXZlciAqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBTbG90IGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X3Nsb3RfaW5pdCggRlRfR2x5cGhTbG90ICBzbG90ICk7CisKKworICAvKiBhdXhpbGlhcnkgKi8KKyNkZWZpbmUgSVNfSElOVEVEKCBmbGFncyApICAoICggZmxhZ3MgJiBGVF9MT0FEX05PX0hJTlRJTkcgKSA9PSAwICkKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUT0JKU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRwaWMuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRwaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTM4ZmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dHBpYy5jCkBAIC0wLDAgKzEsMTAxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dHBpYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUgc2VydmljZXMgZm9yIHRydWV0eXBlIG1vZHVsZS4gKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDksIDIwMTAsIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjaW5jbHVkZSAidHRwaWMuaCIKKyNpbmNsdWRlICJ0dGVycm9ycy5oIgorCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisgIC8qIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgUElDIGluaXQgZnVuY3Rpb25zIGZyb20gdHRkcml2ZXIuYyAqLworICBGVF9FcnJvcgorICBGVF9DcmVhdGVfQ2xhc3NfdHRfc2VydmljZXMoIEZUX0xpYnJhcnkgICAgICAgICAgIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfU2VydmljZURlc2NSZWMqKiAgb3V0cHV0X2NsYXNzICk7CisgIHZvaWQKKyAgRlRfRGVzdHJveV9DbGFzc190dF9zZXJ2aWNlcyggRlRfTGlicmFyeSAgICAgICAgICBsaWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9TZXJ2aWNlRGVzY1JlYyogIGNsYXp6ICk7CisgIHZvaWQKKyAgRlRfSW5pdF9DbGFzc190dF9zZXJ2aWNlX2d4X211bHRpX21hc3RlcnMoCisgICAgRlRfU2VydmljZV9NdWx0aU1hc3RlcnNSZWMqICBzdl9tbSApOworICB2b2lkCisgIEZUX0luaXRfQ2xhc3NfdHRfc2VydmljZV90cnVldHlwZV9nbHlmKAorICAgIEZUX1NlcnZpY2VfVFRHbHlmUmVjKiAgc3ZfdHRnbHlmICk7CisKKworICB2b2lkCisgIHR0X2RyaXZlcl9jbGFzc19waWNfZnJlZSggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9QSUNfQ29udGFpbmVyKiAgcGljX2NvbnRhaW5lciA9ICZsaWJyYXJ5LT5waWNfY29udGFpbmVyOworICAgIEZUX01lbW9yeSAgICAgICAgICBtZW1vcnkgICAgICAgID0gbGlicmFyeS0+bWVtb3J5OworCisKKyAgICBpZiAoIHBpY19jb250YWluZXItPnRydWV0eXBlICkKKyAgICB7CisgICAgICBUVE1vZHVsZVBJQyogIGNvbnRhaW5lciA9IChUVE1vZHVsZVBJQyopcGljX2NvbnRhaW5lci0+dHJ1ZXR5cGU7CisKKworICAgICAgaWYgKCBjb250YWluZXItPnR0X3NlcnZpY2VzICkKKyAgICAgICAgRlRfRGVzdHJveV9DbGFzc190dF9zZXJ2aWNlcyggbGlicmFyeSwgY29udGFpbmVyLT50dF9zZXJ2aWNlcyApOworICAgICAgY29udGFpbmVyLT50dF9zZXJ2aWNlcyA9IE5VTEw7CisgICAgICBGVF9GUkVFKCBjb250YWluZXIgKTsKKyAgICAgIHBpY19jb250YWluZXItPnRydWV0eXBlID0gTlVMTDsKKyAgICB9CisgIH0KKworCisgIEZUX0Vycm9yCisgIHR0X2RyaXZlcl9jbGFzc19waWNfaW5pdCggRlRfTGlicmFyeSAgbGlicmFyeSApCisgIHsKKyAgICBGVF9QSUNfQ29udGFpbmVyKiAgcGljX2NvbnRhaW5lciA9ICZsaWJyYXJ5LT5waWNfY29udGFpbmVyOworICAgIEZUX0Vycm9yICAgICAgICAgICBlcnJvciAgICAgICAgID0gRlRfRXJyX09rOworICAgIFRUTW9kdWxlUElDKiAgICAgICBjb250YWluZXIgICAgID0gTlVMTDsKKyAgICBGVF9NZW1vcnkgICAgICAgICAgbWVtb3J5ICAgICAgICA9IGxpYnJhcnktPm1lbW9yeTsKKworCisgICAgLyogYWxsb2NhdGUgcG9pbnRlciwgY2xlYXIgYW5kIHNldCBnbG9iYWwgY29udGFpbmVyIHBvaW50ZXIgKi8KKyAgICBpZiAoIEZUX0FMTE9DKCBjb250YWluZXIsIHNpemVvZiAoICpjb250YWluZXIgKSApICkKKyAgICAgIHJldHVybiBlcnJvcjsKKyAgICBGVF9NRU1fU0VUKCBjb250YWluZXIsIDAsIHNpemVvZiAoICpjb250YWluZXIgKSApOworICAgIHBpY19jb250YWluZXItPnRydWV0eXBlID0gY29udGFpbmVyOworCisgICAgLyogaW5pdGlhbGl6ZSBwb2ludGVyIHRhYmxlIC0gdGhpcyBpcyBob3cgdGhlIG1vZHVsZSB1c3VhbGx5ICovCisgICAgLyogZXhwZWN0cyB0aGlzIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgZXJyb3IgPSBGVF9DcmVhdGVfQ2xhc3NfdHRfc2VydmljZXMoIGxpYnJhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250YWluZXItPnR0X3NlcnZpY2VzICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorICAgIEZUX0luaXRfQ2xhc3NfdHRfc2VydmljZV9neF9tdWx0aV9tYXN0ZXJzKAorICAgICAgJmNvbnRhaW5lci0+dHRfc2VydmljZV9neF9tdWx0aV9tYXN0ZXJzICk7CisjZW5kaWYKKyAgICBGVF9Jbml0X0NsYXNzX3R0X3NlcnZpY2VfdHJ1ZXR5cGVfZ2x5ZigKKyAgICAgICZjb250YWluZXItPnR0X3NlcnZpY2VfdHJ1ZXR5cGVfZ2x5ZiApOworCisgIEV4aXQ6CisgICAgaWYgKCBlcnJvciApCisgICAgICB0dF9kcml2ZXJfY2xhc3NfcGljX2ZyZWUoIGxpYnJhcnkgKTsKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0cGljLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0cGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZjYjM1NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRwaWMuaApAQCAtMCwwICsxLDgxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dHBpYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVGhlIEZyZWVUeXBlIHBvc2l0aW9uIGluZGVwZW5kZW50IGNvZGUgc2VydmljZXMgZm9yIHRydWV0eXBlIG1vZHVsZS4gKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDIwMDksIDIwMTIsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIE9yYW4gQWdyYSBhbmQgTWlja2V5IEdhYmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVFBJQ19IX18KKyNkZWZpbmUgX19UVFBJQ19IX18KKworCitGVF9CRUdJTl9IRUFERVIKKworI2lmbmRlZiBGVF9DT05GSUdfT1BUSU9OX1BJQworCisjZGVmaW5lIFRUX1NFUlZJQ0VTX0dFVCAgICAgICAgICAgICAgICAgIHR0X3NlcnZpY2VzCisjZGVmaW5lIFRUX1NFUlZJQ0VfR1hfTVVMVElfTUFTVEVSU19HRVQgIHR0X3NlcnZpY2VfZ3hfbXVsdGlfbWFzdGVycworI2RlZmluZSBUVF9TRVJWSUNFX1RSVUVUWVBFX0dMWUZfR0VUICAgICB0dF9zZXJ2aWNlX3RydWV0eXBlX2dseWYKKyNkZWZpbmUgVFRfU0VSVklDRV9QUk9QRVJUSUVTX0dFVCAgICAgICAgdHRfc2VydmljZV9wcm9wZXJ0aWVzCisKKyNlbHNlIC8qIEZUX0NPTkZJR19PUFRJT05fUElDICovCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0bW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2bW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRnbHlmLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnByb3AuaCIKKworCisgIHR5cGVkZWYgc3RydWN0ICBUVE1vZHVsZVBJQ18KKyAgeworICAgIEZUX1NlcnZpY2VEZXNjUmVjKiAgICAgICAgICB0dF9zZXJ2aWNlczsKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgRlRfU2VydmljZV9NdWx0aU1hc3RlcnNSZWMgIHR0X3NlcnZpY2VfZ3hfbXVsdGlfbWFzdGVyczsKKyNlbmRpZgorICAgIEZUX1NlcnZpY2VfVFRHbHlmUmVjICAgICAgICB0dF9zZXJ2aWNlX3RydWV0eXBlX2dseWY7CisgICAgRlRfU2VydmljZV9Qcm9wZXJ0aWVzUmVjICAgIHR0X3NlcnZpY2VfcHJvcGVydGllczsKKworICB9IFRUTW9kdWxlUElDOworCisKKyNkZWZpbmUgR0VUX1BJQyggbGliICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIChUVE1vZHVsZVBJQyopKChsaWIpLT5waWNfY29udGFpbmVyLnRydWV0eXBlKSApCisjZGVmaW5lIFRUX1NFUlZJQ0VTX0dFVCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT50dF9zZXJ2aWNlcyApCisjZGVmaW5lIFRUX1NFUlZJQ0VfR1hfTVVMVElfTUFTVEVSU19HRVQgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoIEdFVF9QSUMoIGxpYnJhcnkgKS0+dHRfc2VydmljZV9neF9tdWx0aV9tYXN0ZXJzICkKKyNkZWZpbmUgVFRfU0VSVklDRV9UUlVFVFlQRV9HTFlGX0dFVCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggR0VUX1BJQyggbGlicmFyeSApLT50dF9zZXJ2aWNlX3RydWV0eXBlX2dseWYgKQorI2RlZmluZSBUVF9TRVJWSUNFX1BST1BFUlRJRVNfR0VUICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKCBHRVRfUElDKCBsaWJyYXJ5ICktPnR0X3NlcnZpY2VfcHJvcGVydGllcyApCisKKworICAvKiBzZWUgdHRwaWMuYyBmb3IgdGhlIGltcGxlbWVudGF0aW9uICovCisgIHZvaWQKKyAgdHRfZHJpdmVyX2NsYXNzX3BpY19mcmVlKCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKyAgRlRfRXJyb3IKKyAgdHRfZHJpdmVyX2NsYXNzX3BpY19pbml0KCBGVF9MaWJyYXJ5ICBsaWJyYXJ5ICk7CisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX1BJQyAqLworCisgLyogKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUUElDX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dHBsb2FkLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0cGxvYWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODNkMDdkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dHBsb2FkLmMKQEAgLTAsMCArMSw2MDEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0cGxvYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcnVlVHlwZS1zcGVjaWZpYyB0YWJsZXMgbG9hZGVyIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAyLCAyMDA0LTIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oIgorCisjaW5jbHVkZSAidHRwbG9hZC5oIgorCisjaWZkZWYgVFRfQ09ORklHX09QVElPTl9HWF9WQVJfU1VQUE9SVAorI2luY2x1ZGUgInR0Z3h2YXIuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAidHRlcnJvcnMuaCIKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIG1hY3JvIEZUX0NPTVBPTkVOVCBpcyB1c2VkIGluIHRyYWNlIG1vZGUuICBJdCBpcyBhbiBpbXBsaWNpdCAgICAgICovCisgIC8qIHBhcmFtZXRlciBvZiB0aGUgRlRfVFJBQ0UoKSBhbmQgRlRfRVJST1IoKSBtYWNyb3MsIHVzZWQgdG8gcHJpbnQvbG9nICAqLworICAvKiBtZXNzYWdlcyBkdXJpbmcgZXhlY3V0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjdW5kZWYgIEZUX0NPTVBPTkVOVAorI2RlZmluZSBGVF9DT01QT05FTlQgIHRyYWNlX3R0cGxvYWQKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2ZhY2VfbG9hZF9sb2NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvYWQgdGhlIGxvY2F0aW9ucyB0YWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiBUaGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9sb2NhKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisgICAgRlRfVUxvbmcgIHRhYmxlX2xlbjsKKyAgICBGVF9JbnQgICAgc2hpZnQ7CisKKworICAgIC8qIHdlIG5lZWQgdGhlIHNpemUgb2YgdGhlIGBnbHlmJyB0YWJsZSBmb3IgbWFsZm9ybWVkIGBsb2NhJyB0YWJsZXMgKi8KKyAgICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfZ2x5Ziwgc3RyZWFtLCAmZmFjZS0+Z2x5Zl9sZW4gKTsKKworICAgIC8qIGl0IGlzIHBvc3NpYmxlIHRoYXQgYSBmb250IGRvZXNuJ3QgaGF2ZSBhIGdseWYgdGFibGUgYXQgYWxsICovCisgICAgLyogb3IgaXRzIHNpemUgaXMgemVybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoIEZUX0VSUl9FUSggZXJyb3IsIFRhYmxlX01pc3NpbmcgKSApCisgICAgICBmYWNlLT5nbHlmX2xlbiA9IDA7CisgICAgZWxzZSBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIEZUX1RSQUNFMigoICJMb2NhdGlvbnMgIiApKTsKKyAgICBlcnJvciA9IGZhY2UtPmdvdG9fdGFibGUoIGZhY2UsIFRUQUdfbG9jYSwgc3RyZWFtLCAmdGFibGVfbGVuICk7CisgICAgaWYgKCBlcnJvciApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggTG9jYXRpb25zX01pc3NpbmcgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoIGZhY2UtPmhlYWRlci5JbmRleF9Ub19Mb2NfRm9ybWF0ICE9IDAgKQorICAgIHsKKyAgICAgIHNoaWZ0ID0gMjsKKworICAgICAgaWYgKCB0YWJsZV9sZW4gPj0gMHg0MDAwMEwgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTIoKCAidGFibGUgdG9vIGxhcmdlXG4iICkpOworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX1RhYmxlICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKyAgICAgIGZhY2UtPm51bV9sb2NhdGlvbnMgPSB0YWJsZV9sZW4gPj4gc2hpZnQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBzaGlmdCA9IDE7CisKKyAgICAgIGlmICggdGFibGVfbGVuID49IDB4MjAwMDBMICkKKyAgICAgIHsKKyAgICAgICAgRlRfVFJBQ0UyKCggInRhYmxlIHRvbyBsYXJnZVxuIiApKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9UYWJsZSApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisgICAgICBmYWNlLT5udW1fbG9jYXRpb25zID0gdGFibGVfbGVuID4+IHNoaWZ0OworICAgIH0KKwkvKiBTdW5saWFuZy5MaXUgMjAxMDEwMTMsIFdlIGlnbm9yZSB0aGUgMjQyIG5ldyBhZGRlZCBjb2RlIHdoaWNoIGNhdXNlIHNvbWUgZm9udCBsb2FkIGZhaWxlZC4gCisJICAgVEVTVERPQzogQnVnICM0NTAyIC0gUE0yLWJlaGVlcmRlcnNoYW5kbGVpZGluZy5wZGYqLworICAgIC8qaWYgKCBmYWNlLT5udW1fbG9jYXRpb25zICE9IChGVF9VTG9uZylmYWNlLT5yb290Lm51bV9nbHlwaHMgKyAxICkKKyAgICB7CisgICAgICBGVF9UUkFDRTIoKCAiZ2x5cGggY291bnQgbWlzbWF0Y2ghICBsb2NhOiAlZCwgbWF4cDogJWRcbiIsCisgICAgICAgICAgICAgICAgICBmYWNlLT5udW1fbG9jYXRpb25zIC0gMSwgZmFjZS0+cm9vdC5udW1fZ2x5cGhzICkpOworCisgICAgICAvLyB3ZSBvbmx5IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBgbWF4cCcgZ2l2ZXMgYSBsYXJnZXIgdmFsdWUgCisgICAgICBpZiAoIGZhY2UtPm51bV9sb2NhdGlvbnMgPD0gKEZUX1VMb25nKWZhY2UtPnJvb3QubnVtX2dseXBocyApCisgICAgICB7CisgICAgICAgIEZUX0xvbmcgICBuZXdfbG9jYV9sZW4gPQorICAgICAgICAgICAgICAgICAgICAoIChGVF9Mb25nKSggZmFjZS0+cm9vdC5udW1fZ2x5cGhzICkgKyAxICkgPDwgc2hpZnQ7CisKKyAgICAgICAgVFRfVGFibGUgIGVudHJ5ID0gZmFjZS0+ZGlyX3RhYmxlczsKKyAgICAgICAgVFRfVGFibGUgIGxpbWl0ID0gZW50cnkgKyBmYWNlLT5udW1fdGFibGVzOworCisgICAgICAgIEZUX0xvbmcgICBwb3MgID0gRlRfU3RyZWFtX1Bvcyggc3RyZWFtICk7CisgICAgICAgIEZUX0xvbmcgICBkaXN0ID0gMHg3RkZGRkZGRkw7CisKKworICAgICAgICAvLyBjb21wdXRlIHRoZSBkaXN0YW5jZSB0byBuZXh0IHRhYmxlIGluIGZvbnQgZmlsZSAKKyAgICAgICAgZm9yICggOyBlbnRyeSA8IGxpbWl0OyBlbnRyeSsrICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0xvbmcgIGRpZmYgPSBlbnRyeS0+T2Zmc2V0IC0gcG9zOworCisKKyAgICAgICAgICBpZiAoIGRpZmYgPiAwICYmIGRpZmYgPCBkaXN0ICkKKyAgICAgICAgICAgIGRpc3QgPSBkaWZmOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBlbnRyeSA9PSBsaW1pdCApCisgICAgICAgIHsKKyAgICAgICAgICAvLyBgbG9jYScgaXMgdGhlIGxhc3QgdGFibGUKKyAgICAgICAgICBkaXN0ID0gc3RyZWFtLT5zaXplIC0gcG9zOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBuZXdfbG9jYV9sZW4gPD0gZGlzdCApCisgICAgICAgIHsKKyAgICAgICAgICBmYWNlLT5udW1fbG9jYXRpb25zID0gZmFjZS0+cm9vdC5udW1fZ2x5cGhzICsgMTsKKyAgICAgICAgICB0YWJsZV9sZW4gICAgICAgICAgID0gbmV3X2xvY2FfbGVuOworCisgICAgICAgICAgRlRfVFJBQ0UyKCggImFkanVzdGluZyBudW1fbG9jYXRpb25zIHRvICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPm51bV9sb2NhdGlvbnMgKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Ki8KKworICAgIC8qCisgICAgICogRXh0cmFjdCB0aGUgZnJhbWUuICBXZSBkb24ndCBuZWVkIHRvIGRlY29tcHJlc3MgaXQgc2luY2UKKyAgICAgKiB3ZSBhcmUgYWJsZSB0byBwYXJzZSBpdCBkaXJlY3RseS4KKyAgICAgKi8KKyAgICBpZiAoIEZUX0ZSQU1FX0VYVFJBQ1QoIHRhYmxlX2xlbiwgZmFjZS0+Z2x5cGhfbG9jYXRpb25zICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgRlRfVFJBQ0UyKCggImxvYWRlZFxuIiApKTsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9VTG9uZyApCisgIHR0X2ZhY2VfZ2V0X2xvY2F0aW9uKCBUVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBnaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAqYXNpemUgKQorICB7CisgICAgRlRfVUxvbmcgIHBvczEsIHBvczI7CisgICAgRlRfQnl0ZSogIHA7CisgICAgRlRfQnl0ZSogIHBfbGltaXQ7CisKKworICAgIHBvczEgPSBwb3MyID0gMDsKKworCisgICAgaWYgKGdpbmRleCA8IGZhY2UtPm51bV9sb2NhdGlvbnMpLyogZ2luZGV4IDwgZmFjZS0+bnVtX2xvY2F0aW9ucyAqLyAvKiBYWVEgMjAwOC0xMS0wMyBTb21lIGlsbCBUVCBoYXMgd3JvbmcgZ2x5ZiB0YWJsZSBzaXplLiBJdCBzZWVtcyBBZG9iZSBpZ25vcmUgdGhlIGxpbWl0LiBURVNURE9DOiBCdWcgIzYyNDggLSBGLTIwMDgtMTgucGRmICovCisgICAgeworICAgICAgaWYgKCBmYWNlLT5oZWFkZXIuSW5kZXhfVG9fTG9jX0Zvcm1hdCAhPSAwICkKKyAgICAgIHsKKyAgICAgICAgcCAgICAgICA9IGZhY2UtPmdseXBoX2xvY2F0aW9ucyArIGdpbmRleCAqIDQ7CisgICAgICAgIHBfbGltaXQgPSBmYWNlLT5nbHlwaF9sb2NhdGlvbnMgKyBmYWNlLT5udW1fbG9jYXRpb25zICogNDsKKworICAgICAgICBwb3MxID0gRlRfTkVYVF9VTE9ORyggcCApOworICAgICAgICBwb3MyID0gcG9zMTsKKworICAgICAgICBpZiAoMSkvKiBwICsgNCA8PSBwX2xpbWl0ICkgKi8KKyAgICAgICAgICBwb3MyID0gRlRfTkVYVF9VTE9ORyggcCApOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBwICAgICAgID0gZmFjZS0+Z2x5cGhfbG9jYXRpb25zICsgZ2luZGV4ICogMjsKKyAgICAgICAgcF9saW1pdCA9IGZhY2UtPmdseXBoX2xvY2F0aW9ucyArIGZhY2UtPm51bV9sb2NhdGlvbnMgKiAyOworCisgICAgICAgIHBvczEgPSBGVF9ORVhUX1VTSE9SVCggcCApOworICAgICAgICBwb3MyID0gcG9zMTsKKworICAgICAgICBpZiAoMSkgLyogcCArIDIgPD0gcF9saW1pdCApICovCisgICAgICAgICAgcG9zMiA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisKKyAgICAgICAgcG9zMSA8PD0gMTsKKyAgICAgICAgcG9zMiA8PD0gMTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDaGVjayBicm9rZW4gbG9jYXRpb24gZGF0YSAqLworICAgIGlmICggcG9zMSA+IGZhY2UtPmdseWZfbGVuICkKKyAgICB7CisgICAgICBGVF9UUkFDRTEoKCAidHRfZmFjZV9nZXRfbG9jYXRpb246IgorICAgICAgICAgICAgICAgICAgIiB0b28gbGFyZ2Ugb2Zmc2V0PTB4JTA4bHggZm91bmQgZm9yIGdpZD0weCUwNGx4LCIKKyAgICAgICAgICAgICAgICAgICIgZXhjZWVkaW5nIHRoZSBlbmQgb2YgZ2x5ZiB0YWJsZSAoMHglMDhseClcbiIsCisgICAgICAgICAgICAgICAgICBwb3MxLCBnaW5kZXgsIGZhY2UtPmdseWZfbGVuICkpOworICAgICAgKmFzaXplID0gMDsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICggcG9zMiA+IGZhY2UtPmdseWZfbGVuICkKKyAgICB7CisgICAgICBGVF9UUkFDRTEoKCAidHRfZmFjZV9nZXRfbG9jYXRpb246IgorICAgICAgICAgICAgICAgICAgIiB0b28gbGFyZ2Ugb2Zmc2V0PTB4JTA4bHggZm91bmQgZm9yIGdpZD0weCUwNGx4LCIKKyAgICAgICAgICAgICAgICAgICIgdHJ1bmNhdGUgYXQgdGhlIGVuZCBvZiBnbHlmIHRhYmxlICgweCUwOGx4KVxuIiwKKyAgICAgICAgICAgICAgICAgIHBvczIsIGdpbmRleCArIDEsIGZhY2UtPmdseWZfbGVuICkpOworICAgICAgcG9zMiA9IGZhY2UtPmdseWZfbGVuOworICAgIH0KKworICAgIC8qIFRoZSBgbG9jYScgdGFibGUgbXVzdCBiZSBvcmRlcmVkOyBpdCByZWZlcnMgdG8gdGhlIGxlbmd0aCBvZiAqLworICAgIC8qIGFuIGVudHJ5IGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGN1cnJlbnQgYW5kIHRoZSBuZXh0ICAqLworICAgIC8qIHBvc2l0aW9uLiAgSG93ZXZlciwgdGhlcmUgZG8gZXhpc3QgKG1hbGZvcm1lZCkgZm9udHMgd2hpY2ggICAqLworICAgIC8qIGRvbid0IG9iZXkgdGhpcyBydWxlLCBzbyB3ZSBhcmUgb25seSBhYmxlIHRvIHByb3ZpZGUgYW4gICAgICAqLworICAgIC8qIHVwcGVyIGJvdW5kIGZvciB0aGUgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qIFdlIGdldCAoaW50ZW50aW9uYWxseSkgYSB3cm9uZywgbm9uLXplcm8gcmVzdWx0IGluIGNhc2UgdGhlICAqLworICAgIC8qIGBnbHlmJyB0YWJsZSBpcyBtaXNzaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggcG9zMiA+PSBwb3MxICkKKyAgICAgICphc2l6ZSA9IChGVF9VSW50KSggcG9zMiAtIHBvczEgKTsKKyAgICBlbHNlCisgICAgICAqYXNpemUgPSAoRlRfVUludCkoIGZhY2UtPmdseWZfbGVuIC0gcG9zMSApOworCisgICAgcmV0dXJuIHBvczE7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIHR0X2ZhY2VfZG9uZV9sb2NhKCBUVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX1N0cmVhbSAgc3RyZWFtID0gZmFjZS0+cm9vdC5zdHJlYW07CisKKworICAgIEZUX0ZSQU1FX1JFTEVBU0UoIGZhY2UtPmdseXBoX2xvY2F0aW9ucyApOworICAgIGZhY2UtPm51bV9sb2NhdGlvbnMgPSAwOworICB9CisKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2ZhY2VfbG9hZF9jdnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvYWQgdGhlIGNvbnRyb2wgdmFsdWUgdGFibGUgaW50byBhIGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiBBIGhhbmRsZSB0byB0aGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9jdnQoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisgICAgRlRfVUxvbmcgICB0YWJsZV9sZW47CisKKworICAgIEZUX1RSQUNFMigoICJDVlQgIiApKTsKKworICAgIGVycm9yID0gZmFjZS0+Z290b190YWJsZSggZmFjZSwgVFRBR19jdnQsIHN0cmVhbSwgJnRhYmxlX2xlbiApOworICAgIGlmICggZXJyb3IgKQorICAgIHsKKyAgICAgIEZUX1RSQUNFMigoICJpcyBtaXNzaW5nXG4iICkpOworCisgICAgICBmYWNlLT5jdnRfc2l6ZSA9IDA7CisgICAgICBmYWNlLT5jdnQgICAgICA9IE5VTEw7CisgICAgICBlcnJvciAgICAgICAgICA9IEZUX0Vycl9PazsKKworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGZhY2UtPmN2dF9zaXplID0gdGFibGVfbGVuIC8gMjsKKworICAgIGlmICggRlRfTkVXX0FSUkFZKCBmYWNlLT5jdnQsIGZhY2UtPmN2dF9zaXplICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCBGVF9GUkFNRV9FTlRFUiggZmFjZS0+Y3Z0X3NpemUgKiAyTCApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIHsKKyAgICAgIEZUX1Nob3J0KiAgY3VyICAgPSBmYWNlLT5jdnQ7CisgICAgICBGVF9TaG9ydCogIGxpbWl0ID0gY3VyICsgZmFjZS0+Y3Z0X3NpemU7CisKKworICAgICAgZm9yICggOyBjdXIgPCBsaW1pdDsgY3VyKysgKQorICAgICAgICAqY3VyID0gRlRfR0VUX1NIT1JUKCk7CisgICAgfQorCisgICAgRlRfRlJBTUVfRVhJVCgpOworICAgIEZUX1RSQUNFMigoICJsb2FkZWRcbiIgKSk7CisKKyNpZmRlZiBUVF9DT05GSUdfT1BUSU9OX0dYX1ZBUl9TVVBQT1JUCisgICAgaWYgKCBmYWNlLT5kb2JsZW5kICkKKyAgICAgIGVycm9yID0gdHRfZmFjZV92YXJ5X2N2dCggZmFjZSwgc3RyZWFtICk7CisjZW5kaWYKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKworI2Vsc2UgLyogIVRUX1VTRV9CWVRFQ09ERV9JTlRFUlBSRVRFUiAqLworCisgICAgRlRfVU5VU0VEKCBmYWNlICAgKTsKKyAgICBGVF9VTlVTRUQoIHN0cmVhbSApOworCisgICAgcmV0dXJuIEZUX0Vycl9PazsKKworI2VuZGlmCisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHR0X2ZhY2VfbG9hZF9mcGdtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIExvYWQgdGhlIGZvbnQgcHJvZ3JhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IGZhY2Ugb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiBBIGhhbmRsZSB0byB0aGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9mcGdtKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApCisgIHsKKyNpZmRlZiBUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIKKworICAgIEZUX0Vycm9yICBlcnJvcjsKKyAgICBGVF9VTG9uZyAgdGFibGVfbGVuOworCisKKyAgICBGVF9UUkFDRTIoKCAiRm9udCBwcm9ncmFtICIgKSk7CisKKyAgICAvKiBUaGUgZm9udCBwcm9ncmFtIGlzIG9wdGlvbmFsICovCisgICAgZXJyb3IgPSBmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX2ZwZ20sIHN0cmVhbSwgJnRhYmxlX2xlbiApOworICAgIGlmICggZXJyb3IgKQorICAgIHsKKyAgICAgIGZhY2UtPmZvbnRfcHJvZ3JhbSAgICAgID0gTlVMTDsKKyAgICAgIGZhY2UtPmZvbnRfcHJvZ3JhbV9zaXplID0gMDsKKyAgICAgIGVycm9yICAgICAgICAgICAgICAgICAgID0gRlRfRXJyX09rOworCisgICAgICBGVF9UUkFDRTIoKCAiaXMgbWlzc2luZ1xuIiApKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGZhY2UtPmZvbnRfcHJvZ3JhbV9zaXplID0gdGFibGVfbGVuOworICAgICAgaWYgKCBGVF9GUkFNRV9FWFRSQUNUKCB0YWJsZV9sZW4sIGZhY2UtPmZvbnRfcHJvZ3JhbSApICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBGVF9UUkFDRTIoKCAibG9hZGVkLCAlMTJkIGJ5dGVzXG4iLCBmYWNlLT5mb250X3Byb2dyYW1fc2l6ZSApKTsKKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisKKyNlbHNlIC8qICFUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgKi8KKworICAgIEZUX1VOVVNFRCggZmFjZSAgICk7CisgICAgRlRfVU5VU0VEKCBzdHJlYW0gKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyNlbmRpZgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9mYWNlX2xvYWRfcHJlcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkIHRoZSBjdnQgcHJvZ3JhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbk91dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gOjogQSBoYW5kbGUgdG8gdGhlIGlucHV0IHN0cmVhbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfcHJlcCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisjaWZkZWYgVFRfVVNFX0JZVEVDT0RFX0lOVEVSUFJFVEVSCisKKyAgICBGVF9FcnJvciAgZXJyb3I7CisgICAgRlRfVUxvbmcgIHRhYmxlX2xlbjsKKworCisgICAgRlRfVFJBQ0UyKCggIlByZXAgcHJvZ3JhbSAiICkpOworCisgICAgZXJyb3IgPSBmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX3ByZXAsIHN0cmVhbSwgJnRhYmxlX2xlbiApOworICAgIGlmICggZXJyb3IgKQorICAgIHsKKyAgICAgIGZhY2UtPmN2dF9wcm9ncmFtICAgICAgPSBOVUxMOworICAgICAgZmFjZS0+Y3Z0X3Byb2dyYW1fc2l6ZSA9IDA7CisgICAgICBlcnJvciAgICAgICAgICAgICAgICAgID0gRlRfRXJyX09rOworCisgICAgICBGVF9UUkFDRTIoKCAiaXMgbWlzc2luZ1xuIiApKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGZhY2UtPmN2dF9wcm9ncmFtX3NpemUgPSB0YWJsZV9sZW47CisgICAgICBpZiAoIEZUX0ZSQU1FX0VYVFJBQ1QoIHRhYmxlX2xlbiwgZmFjZS0+Y3Z0X3Byb2dyYW0gKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgRlRfVFJBQ0UyKCggImxvYWRlZCwgJTEyZCBieXRlc1xuIiwgZmFjZS0+Y3Z0X3Byb2dyYW1fc2l6ZSApKTsKKyAgICB9CisKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisKKyNlbHNlIC8qICFUVF9VU0VfQllURUNPREVfSU5URVJQUkVURVIgKi8KKworICAgIEZUX1VOVVNFRCggZmFjZSAgICk7CisgICAgRlRfVU5VU0VEKCBzdHJlYW0gKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyNlbmRpZgorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICB0dF9mYWNlX2xvYWRfaGRteCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBMb2FkIHRoZSBgaGRteCcgdGFibGUgaW50byB0aGUgZmFjZSBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBmYWNlICAgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSA6OiBBIGhhbmRsZSB0byB0aGUgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX2hkbXgoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBzdHJlYW0tPm1lbW9yeTsKKyAgICBGVF9VSW50ICAgIHZlcnNpb24sIG5uLCBudW1fcmVjb3JkczsKKyAgICBGVF9VTG9uZyAgIHRhYmxlX3NpemUsIHJlY29yZF9zaXplOworICAgIEZUX0J5dGUqICAgcDsKKyAgICBGVF9CeXRlKiAgIGxpbWl0OworCisKKyAgICAvKiB0aGlzIHRhYmxlIGlzIG9wdGlvbmFsICovCisgICAgZXJyb3IgPSBmYWNlLT5nb3RvX3RhYmxlKCBmYWNlLCBUVEFHX2hkbXgsIHN0cmVhbSwgJnRhYmxlX3NpemUgKTsKKyAgICBpZiAoIGVycm9yIHx8IHRhYmxlX3NpemUgPCA4ICkKKyAgICAgIHJldHVybiBGVF9FcnJfT2s7CisKKyAgICBpZiAoIEZUX0ZSQU1FX0VYVFJBQ1QoIHRhYmxlX3NpemUsIGZhY2UtPmhkbXhfdGFibGUgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBwICAgICA9IGZhY2UtPmhkbXhfdGFibGU7CisgICAgbGltaXQgPSBwICsgdGFibGVfc2l6ZTsKKworICAgIHZlcnNpb24gICAgID0gRlRfTkVYVF9VU0hPUlQoIHAgKTsKKyAgICBudW1fcmVjb3JkcyA9IEZUX05FWFRfVVNIT1JUKCBwICk7CisgICAgcmVjb3JkX3NpemUgPSBGVF9ORVhUX1VMT05HKCBwICk7CisKKyAgICAvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgaW4gYW4gaGRteCBkZXZpY2UgcmVjb3JkIGlzIHRoZSAqLworICAgIC8qIG1heGltdW0gbnVtYmVyIG9mIGdseXBocyArIDI7IHRoaXMgaXMgMHhGRkZGICsgMjsgdGhpcyBpcyAgICovCisgICAgLyogdGhlIHJlYXNvbiB3aHkgYHJlY29yZF9zaXplJyBpcyBhIGxvbmcgKHdoaWNoIHdlIHJlYWQgYXMgICAgKi8KKyAgICAvKiB1bnNpZ25lZCBsb25nIGZvciBjb252ZW5pZW5jZSkuICBJbiBwcmFjdGljZSwgdHdvIGJ5dGVzICAgICAqLworICAgIC8qIHN1ZmZpY2llbnQgdG8gaG9sZCB0aGUgc2l6ZSB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvIGZvbnRzLCBIQU5OT00tQSBhbmQgSEFOTk9NLUIgdmVyc2lvbiAqLworICAgIC8qIDIuMCAoMjAwNSksIHdoaWNoIGdldCB0aGlzIHdyb25nOiBUaGUgdXBwZXIgdHdvIGJ5dGVzIG9mICAgICovCisgICAgLyogdGhlIHNpemUgdmFsdWUgYXJlIHNldCB0byAweEZGIGluc3RlYWQgb2YgMHgwMC4gIFdlIGNhdGNoICAgKi8KKyAgICAvKiBhbmQgZml4IHRoaXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgaWYgKCByZWNvcmRfc2l6ZSA+PSAweEZGRkYwMDAwVUwgKQorICAgICAgcmVjb3JkX3NpemUgJj0gMHhGRkZGVTsKKworICAgIC8qIFRoZSBsaW1pdCBmb3IgYG51bV9yZWNvcmRzJyBpcyBhIGhldXJpc3RpYyB2YWx1ZS4gKi8KKworICAgIGlmICggdmVyc2lvbiAhPSAwIHx8IG51bV9yZWNvcmRzID4gMjU1IHx8IHJlY29yZF9zaXplID4gMHgxMDAwMUwgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICBpZiAoIEZUX05FV19BUlJBWSggZmFjZS0+aGRteF9yZWNvcmRfc2l6ZXMsIG51bV9yZWNvcmRzICkgKQorICAgICAgZ290byBGYWlsOworCisgICAgZm9yICggbm4gPSAwOyBubiA8IG51bV9yZWNvcmRzOyBubisrICkKKyAgICB7CisgICAgICBpZiAoIHAgKyByZWNvcmRfc2l6ZSA+IGxpbWl0ICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGZhY2UtPmhkbXhfcmVjb3JkX3NpemVzW25uXSA9IHBbMF07CisgICAgICBwICAgICAgICAgICAgICAgICAgICAgICAgICArPSByZWNvcmRfc2l6ZTsKKyAgICB9CisKKyAgICBmYWNlLT5oZG14X3JlY29yZF9jb3VudCA9IG5uOworICAgIGZhY2UtPmhkbXhfdGFibGVfc2l6ZSAgID0gdGFibGVfc2l6ZTsKKyAgICBmYWNlLT5oZG14X3JlY29yZF9zaXplICA9IHJlY29yZF9zaXplOworCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworCisgIEZhaWw6CisgICAgRlRfRlJBTUVfUkVMRUFTRSggZmFjZS0+aGRteF90YWJsZSApOworICAgIGZhY2UtPmhkbXhfdGFibGVfc2l6ZSA9IDA7CisgICAgZ290byBFeGl0OworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICB0dF9mYWNlX2ZyZWVfaGRteCggVFRfRmFjZSAgZmFjZSApCisgIHsKKyAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IGZhY2UtPnJvb3Quc3RyZWFtOworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gc3RyZWFtLT5tZW1vcnk7CisKKworICAgIEZUX0ZSRUUoIGZhY2UtPmhkbXhfcmVjb3JkX3NpemVzICk7CisgICAgRlRfRlJBTUVfUkVMRUFTRSggZmFjZS0+aGRteF90YWJsZSApOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFJldHVybiB0aGUgYWR2YW5jZSB3aWR0aCB0YWJsZSBmb3IgYSBnaXZlbiBwaXhlbCBzaXplIGlmIGl0IGlzIGZvdW5kICAqLworICAvKiBpbiB0aGUgZm9udCdzIGBoZG14JyB0YWJsZSAoaWYgYW55KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfQnl0ZSogKQorICB0dF9mYWNlX2dldF9kZXZpY2VfbWV0cmljcyggVFRfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgIHBwZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICBnaW5kZXggKQorICB7CisgICAgRlRfVUludCAgIG5uOworICAgIEZUX0J5dGUqICByZXN1bHQgICAgICA9IE5VTEw7CisgICAgRlRfVUxvbmcgIHJlY29yZF9zaXplID0gZmFjZS0+aGRteF9yZWNvcmRfc2l6ZTsKKyAgICBGVF9CeXRlKiAgcmVjb3JkICAgICAgPSBmYWNlLT5oZG14X3RhYmxlICsgODsKKworCisgICAgZm9yICggbm4gPSAwOyBubiA8IGZhY2UtPmhkbXhfcmVjb3JkX2NvdW50OyBubisrICkKKyAgICAgIGlmICggZmFjZS0+aGRteF9yZWNvcmRfc2l6ZXNbbm5dID09IHBwZW0gKQorICAgICAgeworICAgICAgICBnaW5kZXggKz0gMjsKKyAgICAgICAgaWYgKCBnaW5kZXggPCByZWNvcmRfc2l6ZSApCisgICAgICAgICAgcmVzdWx0ID0gcmVjb3JkICsgbm4gKiByZWNvcmRfc2l6ZSArIGdpbmRleDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0cGxvYWQuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRwbG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MzU4ODAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0cGxvYWQuaApAQCAtMCwwICsxLDc1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0dHBsb2FkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHJ1ZVR5cGUtc3BlY2lmaWMgdGFibGVzIGxvYWRlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwNSwgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UVFBMT0FEX0hfXworI2RlZmluZSBfX1RUUExPQURfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9sb2NhKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIEZUX0xPQ0FMKCBGVF9VTG9uZyApCisgIHR0X2ZhY2VfZ2V0X2xvY2F0aW9uKCBUVF9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICBnaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAqYXNpemUgKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIHR0X2ZhY2VfZG9uZV9sb2NhKCBUVF9GYWNlICBmYWNlICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX2N2dCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIHR0X2ZhY2VfbG9hZF9mcGdtKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgdHRfZmFjZV9sb2FkX3ByZXAoIFRUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgc3RyZWFtICk7CisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICB0dF9mYWNlX2xvYWRfaGRteCggVFRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKTsKKworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgdHRfZmFjZV9mcmVlX2hkbXgoIFRUX0ZhY2UgIGZhY2UgKTsKKworCisgIEZUX0xPQ0FMKCBGVF9CeXRlKiApCisgIHR0X2ZhY2VfZ2V0X2RldmljZV9tZXRyaWNzKCBUVF9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIHBwZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGdpbmRleCApOworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUUExPQURfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0c3VicGl4LmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0c3VicGl4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJmZjZmOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHJ1ZXR5cGUvdHRzdWJwaXguYwpAQCAtMCwwICsxLDEwMTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0c3VicGl4LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcnVlVHlwZSBTdWJwaXhlbCBIaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAxMC0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS90dHRhZ3MuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2Z0dHRkcnYuaCIKKworI2luY2x1ZGUgInR0c3VicGl4LmgiCisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlc2UgcnVsZXMgYWZmZWN0IGhvdyB0aGUgVFQgSW50ZXJwcmV0ZXIgZG9lcyBoaW50aW5nLCB3aXRoIHRoZSAgICAgICovCisgIC8qIGdvYWwgb2YgZG9pbmcgc3VicGl4ZWwgaGludGluZyBieSAoaW4gZ2VuZXJhbCkgaWdub3JpbmcgeCBtb3Zlcy4gICAgICAqLworICAvKiBTb21lIG9mIHRoZXNlIHJ1bGVzIGFyZSBmaXhlcyB0aGF0IGdvIGFib3ZlIGFuZCBiZXlvbmQgdGhlICAgICAgICAgICAgKi8KKyAgLyogc3RhdGVkIHRlY2huaXF1ZXMgaW4gdGhlIE1TIHdoaXRlcGFwZXIgb24gQ2xlYXJ0eXBlLCBkdWUgdG8gICAgICAgICAgICovCisgIC8qIGFydGlmYWN0cyBpbiBtYW55IGdseXBocy4gIFNvLCB0aGVzZSBydWxlcyBtYWtlIHNvbWUgZ2x5cGhzIHJlbmRlciAgICAqLworICAvKiBiZXR0ZXIgdGhhbiB0aGV5IGRvIGluIHRoZSBNUyByYXN0ZXJpemVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICIiIHN0cmluZyBvciAwIGludC9jaGFyIGluZGljYXRlcyB0byBhcHBseSB0byBhbGwgZ2x5cGhzLiAgICAgICAgICAgICAqLworICAvKiAiLSIgdXNlZCBhcyBkdW1teSBwbGFjZWhvbGRlcnMsIGJ1dCBhbnkgbm9uLW1hdGNoaW5nIHN0cmluZyB3b3Jrcy4gICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFNvbWUgb2YgdGhpcyBjb3VsZCBhcmd1YWJseSBiZSBpbXBsZW1lbnRlZCBpbiBmb250Y29uZmlnLCBob3dldmVyOiAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIC0gRm9udGNvbmZpZyBjYW4ndCBzZXQgdGhpbmdzIG9uIGEgZ2x5cGgtYnktZ2x5cGggYmFzaXMuICAgICAgICAgICAgICovCisgIC8qICAtIFRoZSB0d2Vha3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdmVyeSBsb3ctbGV2ZWwsIGZyb20gYW4gYXZlcmFnZSAgICAqLworICAvKiAgICB1c2VyJ3MgcG9pbnQgb2YgdmlldyBhbmQgYXJlIGJlc3QgaW1wbGVtZW50ZWQgaW4gdGhlIGhpbnRlci4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBnb2FsIGlzIHRvIG1ha2UgdGhlIHN1YnBpeGVsIGhpbnRpbmcgdGVjaG5pcXVlcyBhcyBnZW5lcmFsaXplZCAgICAqLworICAvKiBhcyBwb3NzaWJsZSBhY3Jvc3MgYWxsIGZvbnRzIHRvIHByZXZlbnQgdGhlIG5lZWQgZm9yIGV4dHJhIHJ1bGVzIHN1Y2ggKi8KKyAgLyogYXMgdGhlc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgcnVsZSBzdHJ1Y3R1cmUgaXMgZGVzaWduZWQgc28gdGhhdCBlbnRpcmVseSBuZXcgcnVsZXMgY2FuIGVhc2lseSAgKi8KKyAgLyogYmUgYWRkZWQgd2hlbiBhIG5ldyBjb21wYXRpYmlsaXR5IGZlYXR1cmUgaXMgZGlzY292ZXJlZC4gICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgcnVsZSBzdHJ1Y3R1cmVzIGNvdWxkIGFsc28gdXNlIHNvbWUgZW5oYW5jZW1lbnQgdG8gaGFuZGxlIHJhbmdlcy4gKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAqKioqKioqKioqKioqKioqKiogV09SSyBJTiBQUk9HUkVTUyAqKioqKioqKioqKioqKioqKioqICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAvKiBUaGVzZSBhcmUgYGNsYXNzZXMnIG9mIGZvbnRzIHRoYXQgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIgYW5kIHVzZWQgaW4gKi8KKyAgLyogcnVsZXMgYmVsb3cuICBBIGJsYW5rIGVudHJ5ICIiIGlzIHJlcXVpcmVkIGF0IHRoZSBlbmQgb2YgdGhlc2UhICAgICAgICovCisjZGVmaW5lIEZBTUlMWV9DTEFTU19SVUxFU19TSVpFICA3CisKKyAgc3RhdGljIGNvbnN0IFNQSF9Gb250X0NsYXNzIEZBTUlMWV9DTEFTU19SdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ZBTUlMWV9DTEFTU19SVUxFU19TSVpFXSA9CisgIHsKKyAgICB7ICJNUyBMZWdhY3kgRm9udHMiLAorICAgICAgeyAiQWhhcm9uaSIsCisgICAgICAgICJBbmRhbGUgTW9ubyIsCisgICAgICAgICJBbmRhbHVzIiwKKyAgICAgICAgIkFuZ3NhbmEgTmV3IiwKKyAgICAgICAgIkFuZ3NhbmFVUEMiLAorICAgICAgICAiQXJhYmljIFRyYW5zcGFyZW50IiwKKyAgICAgICAgIkFyaWFsIEJsYWNrIiwKKyAgICAgICAgIkFyaWFsIE5hcnJvdyIsCisgICAgICAgICJBcmlhbCBVbmljb2RlIE1TIiwKKyAgICAgICAgIkFyaWFsIiwKKyAgICAgICAgIkJhdGFuZyIsCisgICAgICAgICJCcm93YWxsaWEgTmV3IiwKKyAgICAgICAgIkJyb3dhbGxpYVVQQyIsCisgICAgICAgICJDb21pYyBTYW5zIE1TIiwKKyAgICAgICAgIkNvcmRpYSBOZXciLAorICAgICAgICAiQ29yZGlhVVBDIiwKKyAgICAgICAgIkNvdXJpZXIgTmV3IiwKKyAgICAgICAgIkRGS2FpLVNCIiwKKyAgICAgICAgIkRhdmlkIFRyYW5zcGFyZW50IiwKKyAgICAgICAgIkRhdmlkIiwKKyAgICAgICAgIkRpbGxlbmlhVVBDIiwKKyAgICAgICAgIkVzdHJhbmdlbG8gRWRlc3NhIiwKKyAgICAgICAgIkV1Y3Jvc2lhVVBDIiwKKyAgICAgICAgIkZhbmdTb25nX0dCMjMxMiIsCisgICAgICAgICJGaXhlZCBNaXJpYW0gVHJhbnNwYXJlbnQiLAorICAgICAgICAiRnJhbmtSdWVobCIsCisgICAgICAgICJGcmFua2xpbiBHb3RoaWMgTWVkaXVtIiwKKyAgICAgICAgIkZyZWVzaWFVUEMiLAorICAgICAgICAiR2FyYW1vbmQiLAorICAgICAgICAiR2F1dGFtaSIsCisgICAgICAgICJHZW9yZ2lhIiwKKyAgICAgICAgIkd1bGltIiwKKyAgICAgICAgIkltcGFjdCIsCisgICAgICAgICJJcmlzVVBDIiwKKyAgICAgICAgIkphc21pbmVVUEMiLAorICAgICAgICAiS2FpVGlfR0IyMzEyIiwKKyAgICAgICAgIktvZGNoaWFuZ1VQQyIsCisgICAgICAgICJMYXRoYSIsCisgICAgICAgICJMZXZlbmltIE1UIiwKKyAgICAgICAgIkxpbHlVUEMiLAorICAgICAgICAiTHVjaWRhIENvbnNvbGUiLAorICAgICAgICAiTHVjaWRhIFNhbnMgVW5pY29kZSIsCisgICAgICAgICJNUyBHb3RoaWMiLAorICAgICAgICAiTVMgTWluY2hvIiwKKyAgICAgICAgIk1WIEJvbGkiLAorICAgICAgICAiTWFuZ2FsIiwKKyAgICAgICAgIk1hcmxldHQiLAorICAgICAgICAiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLAorICAgICAgICAiTWluZ2xpdSIsCisgICAgICAgICJNaXJpYW0gRml4ZWQiLAorICAgICAgICAiTWlyaWFtIFRyYW5zcGFyZW50IiwKKyAgICAgICAgIk1pcmlhbSIsCisgICAgICAgICJOYXJraXNpbSIsCisgICAgICAgICJQYWxhdGlubyBMaW5vdHlwZSIsCisgICAgICAgICJSYWF2aSIsCisgICAgICAgICJSb2QgVHJhbnNwYXJlbnQiLAorICAgICAgICAiUm9kIiwKKyAgICAgICAgIlNocnV0aSIsCisgICAgICAgICJTaW1IZWkiLAorICAgICAgICAiU2ltcGxpZmllZCBBcmFiaWMgRml4ZWQiLAorICAgICAgICAiU2ltcGxpZmllZCBBcmFiaWMiLAorICAgICAgICAiU2ltc3VuIiwKKyAgICAgICAgIlN5bGZhZW4iLAorICAgICAgICAiU3ltYm9sIiwKKyAgICAgICAgIlRhaG9tYSIsCisgICAgICAgICJUaW1lcyBOZXcgUm9tYW4iLAorICAgICAgICAiVHJhZGl0aW9uYWwgQXJhYmljIiwKKyAgICAgICAgIlRyZWJ1Y2hldCBNUyIsCisgICAgICAgICJUdW5nYSIsCisgICAgICAgICJWZXJkYW5hIiwKKyAgICAgICAgIldlYmRpbmdzIiwKKyAgICAgICAgIldpbmdkaW5ncyIsCisgICAgICAgICIiLAorICAgICAgfSwKKyAgICB9LAorICAgIHsgIkNvcmUgTVMgTGVnYWN5IEZvbnRzIiwKKyAgICAgIHsgIkFyaWFsIEJsYWNrIiwKKyAgICAgICAgIkFyaWFsIE5hcnJvdyIsCisgICAgICAgICJBcmlhbCBVbmljb2RlIE1TIiwKKyAgICAgICAgIkFyaWFsIiwKKyAgICAgICAgIkNvbWljIFNhbnMgTVMiLAorICAgICAgICAiQ291cmllciBOZXciLAorICAgICAgICAiR2FyYW1vbmQiLAorICAgICAgICAiR2VvcmdpYSIsCisgICAgICAgICJJbXBhY3QiLAorICAgICAgICAiTHVjaWRhIENvbnNvbGUiLAorICAgICAgICAiTHVjaWRhIFNhbnMgVW5pY29kZSIsCisgICAgICAgICJNaWNyb3NvZnQgU2FucyBTZXJpZiIsCisgICAgICAgICJQYWxhdGlubyBMaW5vdHlwZSIsCisgICAgICAgICJUYWhvbWEiLAorICAgICAgICAiVGltZXMgTmV3IFJvbWFuIiwKKyAgICAgICAgIlRyZWJ1Y2hldCBNUyIsCisgICAgICAgICJWZXJkYW5hIiwKKyAgICAgICAgIiIsCisgICAgICB9LAorICAgIH0sCisgICAgeyAiQXBwbGUgTGVnYWN5IEZvbnRzIiwKKyAgICAgIHsgIkdlbmV2YSIsCisgICAgICAgICJUaW1lcyIsCisgICAgICAgICJNb25hY28iLAorICAgICAgICAiQ2VudHVyeSIsCisgICAgICAgICJDaGFsa2JvYXJkIiwKKyAgICAgICAgIkxvYnN0ZXIiLAorICAgICAgICAiQ2VudHVyeSBHb3RoaWMiLAorICAgICAgICAiT3B0aW1hIiwKKyAgICAgICAgIkx1Y2lkYSBHcmFuZGUiLAorICAgICAgICAiR2lsbCBTYW5zIiwKKyAgICAgICAgIkJhc2tlcnZpbGxlIiwKKyAgICAgICAgIkhlbHZldGljYSIsCisgICAgICAgICJIZWx2ZXRpY2EgTmV1ZSIsCisgICAgICAgICIiLAorICAgICAgfSwKKyAgICB9LAorICAgIHsgIkxlZ2FjeSBTYW5zIEZvbnRzIiwKKyAgICAgIHsgIkFuZGFsZSBNb25vIiwKKyAgICAgICAgIkFyaWFsIFVuaWNvZGUgTVMiLAorICAgICAgICAiQXJpYWwiLAorICAgICAgICAiQ2VudHVyeSBHb3RoaWMiLAorICAgICAgICAiQ29taWMgU2FucyBNUyIsCisgICAgICAgICJGcmFua2xpbiBHb3RoaWMgTWVkaXVtIiwKKyAgICAgICAgIkdlbmV2YSIsCisgICAgICAgICJMdWNpZGEgQ29uc29sZSIsCisgICAgICAgICJMdWNpZGEgR3JhbmRlIiwKKyAgICAgICAgIkx1Y2lkYSBTYW5zIFVuaWNvZGUiLAorICAgICAgICAiTHVjaWRhIFNhbnMgVHlwZXdyaXRlciIsCisgICAgICAgICJNaWNyb3NvZnQgU2FucyBTZXJpZiIsCisgICAgICAgICJNb25hY28iLAorICAgICAgICAiVGFob21hIiwKKyAgICAgICAgIlRyZWJ1Y2hldCBNUyIsCisgICAgICAgICJWZXJkYW5hIiwKKyAgICAgICAgIiIsCisgICAgICB9LAorICAgIH0sCisKKyAgICB7ICJNaXNjIExlZ2FjeSBGb250cyIsCisgICAgICB7ICJEYXJrIENvdXJpZXIiLCAiIiwgfSwgfSwKKyAgICB7ICJWZXJkYW5hIENsb25lcyIsCisgICAgICB7ICJEZWphVnUgU2FucyIsCisgICAgICAgICJCaXRzdHJlYW0gVmVyYSBTYW5zIiwgIiIsIH0sIH0sCisgICAgeyAiVmVyZGFuYSBhbmQgQ2xvbmVzIiwKKyAgICAgIHsgIkRlamFWdSBTYW5zIiwKKyAgICAgICAgIkJpdHN0cmVhbSBWZXJhIFNhbnMiLAorICAgICAgICAiVmVyZGFuYSIsICIiLCB9LCB9LAorICB9OworCisKKyAgLyogRGVmaW5lIHRoaXMgdG8gZm9yY2UgbmF0dXJhbCAoaS5lLiBub3QgYml0bWFwLWNvbXBhdGlibGUpIHdpZHRocy4gICAgICovCisgIC8qIFRoZSBkZWZhdWx0IGxlYW5zIHN0cm9uZ2x5IHRvd2FyZHMgbmF0dXJhbCB3aWR0aHMgZXhjZXB0IGZvciBhIGZldyAgICAqLworICAvKiBsZWdhY3kgZm9udHMgd2hlcmUgYSBzZWxlY3RpdmUgY29tYmluYXRpb24gcHJvZHVjZXMgbmljZXIgcmVzdWx0cy4gICAgKi8KKy8qICNkZWZpbmUgRk9SQ0VfTkFUVVJBTF9XSURUSFMgICAqLworCisKKyAgLyogRGVmaW5lIGBjbGFzc2VzJyBvZiBzdHlsZXMgdGhhdCBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlciBhbmQgdXNlZCBpbiAgICovCisgIC8qIHJ1bGVzIGJlbG93LiAgQSBibGFuayBlbnRyeSAiIiBpcyByZXF1aXJlZCBhdCB0aGUgZW5kIG9mIHRoZXNlISAgICAgICAqLworI2RlZmluZSBTVFlMRV9DTEFTU19SVUxFU19TSVpFICA1CisKKyAgY29uc3QgU1BIX0ZvbnRfQ2xhc3MgU1RZTEVfQ0xBU1NfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgW1NUWUxFX0NMQVNTX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIlJlZ3VsYXIgQ2xhc3MiLAorICAgICAgeyAiUmVndWxhciIsCisgICAgICAgICJCb29rIiwKKyAgICAgICAgIk1lZGl1bSIsCisgICAgICAgICJSb21hbiIsCisgICAgICAgICJOb3JtYWwiLAorICAgICAgICAiIiwKKyAgICAgIH0sCisgICAgfSwKKyAgICB7ICJSZWd1bGFyL0l0YWxpYyBDbGFzcyIsCisgICAgICB7ICJSZWd1bGFyIiwKKyAgICAgICAgIkJvb2siLAorICAgICAgICAiTWVkaXVtIiwKKyAgICAgICAgIkl0YWxpYyIsCisgICAgICAgICJPYmxpcXVlIiwKKyAgICAgICAgIlJvbWFuIiwKKyAgICAgICAgIk5vcm1hbCIsCisgICAgICAgICIiLAorICAgICAgfSwKKyAgICB9LAorICAgIHsgIkJvbGQvQm9sZEl0YWxpYyBDbGFzcyIsCisgICAgICB7ICJCb2xkIiwKKyAgICAgICAgIkJvbGQgSXRhbGljIiwKKyAgICAgICAgIkJsYWNrIiwKKyAgICAgICAgIiIsCisgICAgICB9LAorICAgIH0sCisgICAgeyAiQm9sZC9JdGFsaWMvQm9sZEl0YWxpYyBDbGFzcyIsCisgICAgICB7ICJCb2xkIiwKKyAgICAgICAgIkJvbGQgSXRhbGljIiwKKyAgICAgICAgIkJsYWNrIiwKKyAgICAgICAgIkl0YWxpYyIsCisgICAgICAgICJPYmxpcXVlIiwKKyAgICAgICAgIiIsCisgICAgICB9LAorICAgIH0sCisgICAgeyAiUmVndWxhci9Cb2xkIENsYXNzIiwKKyAgICAgIHsgIlJlZ3VsYXIiLAorICAgICAgICAiQm9vayIsCisgICAgICAgICJNZWRpdW0iLAorICAgICAgICAiTm9ybWFsIiwKKyAgICAgICAgIlJvbWFuIiwKKyAgICAgICAgIkJvbGQiLAorICAgICAgICAiQmxhY2siLAorICAgICAgICAiIiwKKyAgICAgIH0sCisgICAgfSwKKyAgfTsKKworCisgIC8qIEZvcmNlIHNwZWNpYWwgbGVnYWN5IGZpeGVzIGZvciBmb250cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDT01QQVRJQklMSVRZX01PREVfUlVMRVNfU0laRSAgMQorCisgIGNvbnN0IFNQSF9Ud2Vha1J1bGUgIENPTVBBVElCSUxJVFlfTU9ERV9SdWxlcworICAgICAgICAgICAgICAgICAgICAgICBbQ09NUEFUSUJJTElUWV9NT0RFX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIi0iLCAwLCAiIiwgMCB9LAorICB9OworCisKKyAgLyogRG9uJ3QgZG8gc3VicGl4ZWwgKGlnbm9yZV94X21vZGUpIGhpbnRpbmc7IGRvIG5vcm1hbCBoaW50aW5nLiAgICAgICAgICovCisjZGVmaW5lIFBJWEVMX0hJTlRJTkdfUlVMRVNfU0laRSAgMgorCisgIGNvbnN0IFNQSF9Ud2Vha1J1bGUgIFBJWEVMX0hJTlRJTkdfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgW1BJWEVMX0hJTlRJTkdfUlVMRVNfU0laRV0gPQorICB7CisgICAgLyogdGhlc2UgY2hhcmFjdGVycyBhcmUgYWxtb3N0IGFsd2F5cyBzYWZlICovCisgICAgeyAiQ291cmllciBOZXciLCAxMiwgIkl0YWxpYyIsICd6JyB9LAorICAgIHsgIkNvdXJpZXIgTmV3IiwgMTEsICJJdGFsaWMiLCAneicgfSwKKyAgfTsKKworCisgIC8qIFN1YnBpeGVsIGhpbnRpbmcgaWdub3JlcyBTSFBJWCBydWxlcyBvbiBYLiAgRm9yY2UgU0hQSVggZm9yIHRoZXNlLiAgICAqLworI2RlZmluZSBET19TSFBJWF9SVUxFU19TSVpFICAxCisKKyAgY29uc3QgU1BIX1R3ZWFrUnVsZSAgRE9fU0hQSVhfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgW0RPX1NIUElYX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIi0iLCAwLCAiIiwgMCB9LAorICB9OworCisKKyAgLyogU2tpcCBZIG1vdmVzIHRoYXQgc3RhcnQgd2l0aCBhIHBvaW50IHRoYXQgaXMgbm90IG9uIGEgWSBwaXhlbCAgICAgICAgICovCisgIC8qIGJvdW5kYXJ5IGFuZCBkb24ndCBtb3ZlIHRoYXQgcG9pbnQgdG8gYSBZIHBpeGVsIGJvdW5kYXJ5LiAgICAgICAgICAgICAqLworI2RlZmluZSBTS0lQX05PTlBJWEVMX1lfTU9WRVNfUlVMRVNfU0laRSAgNAorCisgIGNvbnN0IFNQSF9Ud2Vha1J1bGUgIFNLSVBfTk9OUElYRUxfWV9NT1ZFU19SdWxlcworICAgICAgICAgICAgICAgICAgICAgICBbU0tJUF9OT05QSVhFTF9ZX01PVkVTX1JVTEVTX1NJWkVdID0KKyAgeworICAgIC8qIGZpeCB2d3h5eiB0aGlubmVzcyovCisgICAgeyAiQ29uc29sYXMiLCAwLCAiIiwgMCB9LAorICAgIC8qIEZpeCB0aGluIG1pZGRsZSBzdGVtcyAqLworICAgIHsgIkNvcmUgTVMgTGVnYWN5IEZvbnRzIiwgMCwgIlJlZ3VsYXIiLCAwIH0sCisgICAgLyogQ3lyaWxsaWMgc21hbGwgbGV0dGVyIEkgKi8KKyAgICB7ICJMZWdhY3kgU2FucyBGb250cyIsIDAsICIiLCAwIH0sCisgICAgLyogRml4IGFydGlmYWN0cyB3aXRoIHNvbWUgUmVndWxhciAmIEJvbGQgKi8KKyAgICB7ICJWZXJkYW5hIENsb25lcyIsIDAsICIiLCAwIH0sCisgIH07CisKKworI2RlZmluZSBTS0lQX05PTlBJWEVMX1lfTU9WRVNfUlVMRVNfRVhDRVBUSU9OU19TSVpFICAxCisKKyAgY29uc3QgU1BIX1R3ZWFrUnVsZSAgU0tJUF9OT05QSVhFTF9ZX01PVkVTX1J1bGVzX0V4Y2VwdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgW1NLSVBfTk9OUElYRUxfWV9NT1ZFU19SVUxFU19FWENFUFRJT05TX1NJWkVdID0KKyAgeworICAgIC8qIEZpeGVzIDwgYW5kID4gKi8KKyAgICB7ICJDb3VyaWVyIE5ldyIsIDAsICJSZWd1bGFyIiwgMCB9LAorICB9OworCisKKyAgLyogU2tpcCBZIG1vdmVzIHRoYXQgc3RhcnQgd2l0aCBhIHBvaW50IHRoYXQgaXMgbm90IG9uIGEgWSBwaXhlbCAgICAgICAgICovCisgIC8qIGJvdW5kYXJ5IGFuZCBkb24ndCBtb3ZlIHRoYXQgcG9pbnQgdG8gYSBZIHBpeGVsIGJvdW5kYXJ5LiAgICAgICAgICAgICAqLworI2RlZmluZSBTS0lQX05PTlBJWEVMX1lfTU9WRVNfREVMVEFQX1JVTEVTX1NJWkUgIDIKKworICBjb25zdCBTUEhfVHdlYWtSdWxlICBTS0lQX05PTlBJWEVMX1lfTU9WRVNfREVMVEFQX1J1bGVzCisgICAgICAgICAgICAgICAgICAgICAgIFtTS0lQX05PTlBJWEVMX1lfTU9WRVNfREVMVEFQX1JVTEVTX1NJWkVdID0KKyAgeworICAgIC8qIE1haW50YWluIHRoaWNrbmVzcyBvZiBkaWFnb25hbCBpbiAnTicgKi8KKyAgICB7ICJUaW1lcyBOZXcgUm9tYW4iLCAwLCAiUmVndWxhci9Cb2xkIENsYXNzIiwgJ04nIH0sCisgICAgeyAiR2VvcmdpYSIsIDAsICJSZWd1bGFyL0JvbGQgQ2xhc3MiLCAnTicgfSwKKyAgfTsKKworCisgIC8qIFNraXAgWSBtb3ZlcyB0aGF0IG1vdmUgYSBwb2ludCBvZmYgYSBZIHBpeGVsIGJvdW5kYXJ5LiAgICAgICAgICAgICAgICAqLworI2RlZmluZSBTS0lQX09GRlBJWEVMX1lfTU9WRVNfUlVMRVNfU0laRSAgMQorCisgIGNvbnN0IFNQSF9Ud2Vha1J1bGUgIFNLSVBfT0ZGUElYRUxfWV9NT1ZFU19SdWxlcworICAgICAgICAgICAgICAgICAgICAgICBbU0tJUF9PRkZQSVhFTF9ZX01PVkVTX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIi0iLCAwLCAiIiwgMCB9LAorICB9OworCisKKyNkZWZpbmUgU0tJUF9PRkZQSVhFTF9ZX01PVkVTX1JVTEVTX0VYQ0VQVElPTlNfU0laRSAgMQorCisgIGNvbnN0IFNQSF9Ud2Vha1J1bGUgIFNLSVBfT0ZGUElYRUxfWV9NT1ZFU19SdWxlc19FeGNlcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgIFtTS0lQX09GRlBJWEVMX1lfTU9WRVNfUlVMRVNfRVhDRVBUSU9OU19TSVpFXSA9CisgIHsKKyAgICB7ICItIiwgMCwgIiIsIDAgfSwKKyAgfTsKKworCisgIC8qIFJvdW5kIG1vdmVzIHRoYXQgZG9uJ3QgbW92ZSBhIHBvaW50IHRvIGEgWSBwaXhlbCBib3VuZGFyeS4gICAgICAgICAgICAqLworI2RlZmluZSBST1VORF9OT05QSVhFTF9ZX01PVkVTX1JVTEVTX1NJWkUgIDIKKworICBjb25zdCBTUEhfVHdlYWtSdWxlICBST1VORF9OT05QSVhFTF9ZX01PVkVTX1J1bGVzCisgICAgICAgICAgICAgICAgICAgICAgIFtST1VORF9OT05QSVhFTF9ZX01PVkVTX1JVTEVTX1NJWkVdID0KKyAgeworICAgIC8qIERyb2lkIGZvbnQgaW5zdHJ1Y3Rpb25zIGRvbid0IHNuYXAgWSB0byBwaXhlbHMgKi8KKyAgICB7ICJEcm9pZCBTYW5zIiwgMCwgIlJlZ3VsYXIvSXRhbGljIENsYXNzIiwgMCB9LAorICAgIHsgIkRyb2lkIFNhbnMgTW9ubyIsIDAsICIiLCAwIH0sCisgIH07CisKKworI2RlZmluZSBST1VORF9OT05QSVhFTF9ZX01PVkVTX1JVTEVTX0VYQ0VQVElPTlNfU0laRSAgMQorCisgIGNvbnN0IFNQSF9Ud2Vha1J1bGUgIFJPVU5EX05PTlBJWEVMX1lfTU9WRVNfUnVsZXNfRXhjZXB0aW9ucworICAgICAgICAgICAgICAgICAgICAgICBbUk9VTkRfTk9OUElYRUxfWV9NT1ZFU19SVUxFU19FWENFUFRJT05TX1NJWkVdID0KKyAgeworICAgIHsgIi0iLCAwLCAiIiwgMCB9LAorICB9OworCisKKyAgLyogQWxsb3cgYSBEaXJlY3RfTW92ZSBhbG9uZyBYIGZyZWVkb20gdmVjdG9yIGlmIG1hdGNoZWQuICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEFMTE9XX1hfRE1PVkVfUlVMRVNfU0laRSAgMQorCisgIGNvbnN0IFNQSF9Ud2Vha1J1bGUgIEFMTE9XX1hfRE1PVkVfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgW0FMTE9XX1hfRE1PVkVfUlVMRVNfU0laRV0gPQorICB7CisgICAgLyogRml4ZXMgdmFuaXNoaW5nIGRpYWdvbmFsIGluIDQgKi8KKyAgICB7ICJWZXJkYW5hIiwgMCwgIlJlZ3VsYXIiLCAnNCcgfSwKKyAgfTsKKworCisgIC8qIFJldHVybiBNUyByYXN0ZXJpemVyIHZlcnNpb24gMzUgaWYgbWF0Y2hlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBSQVNURVJJWkVSXzM1X1JVTEVTX1NJWkUgIDgKKworICBjb25zdCBTUEhfVHdlYWtSdWxlICBSQVNURVJJWkVSXzM1X1J1bGVzCisgICAgICAgICAgICAgICAgICAgICAgIFtSQVNURVJJWkVSXzM1X1JVTEVTX1NJWkVdID0KKyAgeworICAgIC8qIFRoaXMgc2VlbXMgdG8gYmUgdGhlIG9ubHkgd2F5IHRvIG1ha2UgdGhlc2UgbG9vayBnb29kICovCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMCwgIlJlZ3VsYXIiLCAnaScgfSwKKyAgICB7ICJUaW1lcyBOZXcgUm9tYW4iLCAwLCAiUmVndWxhciIsICdqJyB9LAorICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDAsICJSZWd1bGFyIiwgJ20nIH0sCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMCwgIlJlZ3VsYXIiLCAncicgfSwKKyAgICB7ICJUaW1lcyBOZXcgUm9tYW4iLCAwLCAiUmVndWxhciIsICdhJyB9LAorICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDAsICJSZWd1bGFyIiwgJ24nIH0sCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMCwgIlJlZ3VsYXIiLCAncCcgfSwKKyAgICB7ICJUaW1lcyIsIDAsICIiLCAwIH0sCisgIH07CisKKworICAvKiBEb24ndCByb3VuZCB0byB0aGUgc3VicGl4ZWwgZ3JpZC4gIFJvdW5kIHRvIHBpeGVsIGdyaWQuICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTk9STUFMX1JPVU5EX1JVTEVTX1NJWkUgIDEKKworICBjb25zdCBTUEhfVHdlYWtSdWxlICBOT1JNQUxfUk9VTkRfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgW05PUk1BTF9ST1VORF9SVUxFU19TSVpFXSA9CisgIHsKKyAgICAvKiBGaXggc2VyaWYgdGhpY2tuZXNzIGZvciBjZXJ0YWluIHBwZW1zICovCisgICAgLyogQ2FuIHByb2JhYmx5IGJlIGdlbmVyYWxpemVkIHNvbWVob3cgICAqLworICAgIHsgIkNvdXJpZXIgTmV3IiwgMCwgIiIsIDAgfSwKKyAgfTsKKworCisgIC8qIFNraXAgSVVQIGluc3RydWN0aW9ucyBpZiBtYXRjaGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBTS0lQX0lVUF9SVUxFU19TSVpFICAxCisKKyAgY29uc3QgU1BIX1R3ZWFrUnVsZSAgU0tJUF9JVVBfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgW1NLSVBfSVVQX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIkFyaWFsIiwgMTMsICJSZWd1bGFyIiwgJ2EnIH0sCisgIH07CisKKworICAvKiBTa2lwIE1JQVAgVHdpbGlnaHQgaGFjayBpZiBtYXRjaGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTUlBUF9IQUNLX1JVTEVTX1NJWkUgIDEKKworICBjb25zdCBTUEhfVHdlYWtSdWxlICBNSUFQX0hBQ0tfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgW01JQVBfSEFDS19SVUxFU19TSVpFXSA9CisgIHsKKyAgICB7ICJHZW5ldmEiLCAxMiwgIiIsIDAgfSwKKyAgfTsKKworCisgIC8qIFNraXAgREVMVEFQIGluc3RydWN0aW9ucyBpZiBtYXRjaGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBBTFdBWVNfU0tJUF9ERUxUQVBfUlVMRVNfU0laRSAgMjMKKworICBjb25zdCBTUEhfVHdlYWtSdWxlICBBTFdBWVNfU0tJUF9ERUxUQVBfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgW0FMV0FZU19TS0lQX0RFTFRBUF9SVUxFU19TSVpFXSA9CisgIHsKKyAgICB7ICJHZW9yZ2lhIiwgMCwgIlJlZ3VsYXIiLCAnaycgfSwKKyAgICAvKiBmaXggdmFyaW91cyBwcm9ibGVtcyB3aXRoIGUgaW4gZGlmZmVyZW50IHZlcnNpb25zICovCisgICAgeyAiVHJlYnVjaGV0IE1TIiwgMTQsICJSZWd1bGFyIiwgJ2UnIH0sCisgICAgeyAiVHJlYnVjaGV0IE1TIiwgMTMsICJSZWd1bGFyIiwgJ2UnIH0sCisgICAgeyAiVHJlYnVjaGV0IE1TIiwgMTUsICJSZWd1bGFyIiwgJ2UnIH0sCisgICAgeyAiVHJlYnVjaGV0IE1TIiwgMCwgIkl0YWxpYyIsICd2JyB9LAorICAgIHsgIlRyZWJ1Y2hldCBNUyIsIDAsICJJdGFsaWMiLCAndycgfSwKKyAgICB7ICJUcmVidWNoZXQgTVMiLCAwLCAiUmVndWxhciIsICdZJyB9LAorICAgIHsgIkFyaWFsIiwgMTEsICJSZWd1bGFyIiwgJ3MnIH0sCisgICAgLyogcHJldmVudCBwcm9ibGVtcyB3aXRoICczJyBhbmQgb3RoZXJzICovCisgICAgeyAiVmVyZGFuYSIsIDEwLCAiUmVndWxhciIsIDAgfSwKKyAgICB7ICJWZXJkYW5hIiwgOSwgIlJlZ3VsYXIiLCAwIH0sCisgICAgLyogQ3lyaWxsaWMgc21hbGwgbGV0dGVyIHNob3J0IEkgKi8KKyAgICB7ICJMZWdhY3kgU2FucyBGb250cyIsIDAsICIiLCAweDQzOCB9LAorICAgIHsgIkxlZ2FjeSBTYW5zIEZvbnRzIiwgMCwgIiIsIDB4NDM5IH0sCisgICAgeyAiQXJpYWwiLCAxMCwgIlJlZ3VsYXIiLCAnNicgfSwKKyAgICB7ICJBcmlhbCIsIDAsICJCb2xkL0JvbGRJdGFsaWMgQ2xhc3MiLCAnYScgfSwKKyAgICAvKiBNYWtlIGhvcml6b250YWwgc3RlbXMgY29uc2lzdGVudCB3aXRoIHRoZSByZXN0ICovCisgICAgeyAiQXJpYWwiLCAyNCwgIkJvbGQiLCAnYScgfSwKKyAgICB7ICJBcmlhbCIsIDI1LCAiQm9sZCIsICdhJyB9LAorICAgIHsgIkFyaWFsIiwgMjQsICJCb2xkIiwgJ3MnIH0sCisgICAgeyAiQXJpYWwiLCAyNSwgIkJvbGQiLCAncycgfSwKKyAgICB7ICJBcmlhbCIsIDM0LCAiQm9sZCIsICdzJyB9LAorICAgIHsgIkFyaWFsIiwgMzUsICJCb2xkIiwgJ3MnIH0sCisgICAgeyAiQXJpYWwiLCAzNiwgIkJvbGQiLCAncycgfSwKKyAgICB7ICJBcmlhbCIsIDI1LCAiUmVndWxhciIsICdzJyB9LAorICAgIHsgIkFyaWFsIiwgMjYsICJSZWd1bGFyIiwgJ3MnIH0sCisgIH07CisKKworICAvKiBBbHdheXMgZG8gREVMVEFQIGluc3RydWN0aW9ucyBpZiBtYXRjaGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQUxXQVlTX0RPX0RFTFRBUF9SVUxFU19TSVpFICAxCisKKyAgY29uc3QgU1BIX1R3ZWFrUnVsZSAgQUxXQVlTX0RPX0RFTFRBUF9SdWxlcworICAgICAgICAgICAgICAgICAgICAgICBbQUxXQVlTX0RPX0RFTFRBUF9SVUxFU19TSVpFXSA9CisgIHsKKyAgICB7ICItIiwgMCwgIiIsIDAgfSwKKyAgfTsKKworCisgIC8qIERvbid0IGFsbG93IEFMSUdOUlAgYWZ0ZXIgSVVQLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBOT19BTElHTlJQX0FGVEVSX0lVUF9SVUxFU19TSVpFICAxCisKKyAgc3RhdGljIGNvbnN0IFNQSF9Ud2Vha1J1bGUgIE5PX0FMSUdOUlBfQUZURVJfSVVQX1J1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTk9fQUxJR05SUF9BRlRFUl9JVVBfUlVMRVNfU0laRV0gPQorICB7CisgICAgLyogUHJldmVudCBjcmVhdGlvbiBvZiBkZW50cyBpbiBvdXRsaW5lICovCisgICAgeyAiLSIsIDAsICIiLCAwIH0sCisgIH07CisKKworICAvKiBEb24ndCBhbGxvdyBERUxUQVAgYWZ0ZXIgSVVQLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTk9fREVMVEFQX0FGVEVSX0lVUF9SVUxFU19TSVpFICAxCisKKyAgc3RhdGljIGNvbnN0IFNQSF9Ud2Vha1J1bGUgIE5PX0RFTFRBUF9BRlRFUl9JVVBfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOT19ERUxUQVBfQUZURVJfSVVQX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIi0iLCAwLCAiIiwgMCB9LAorICB9OworCisKKyAgLyogRG9uJ3QgYWxsb3cgQ0FMTCBhZnRlciBJVVAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIE5PX0NBTExfQUZURVJfSVVQX1JVTEVTX1NJWkUgIDEKKworICBzdGF0aWMgY29uc3QgU1BIX1R3ZWFrUnVsZSAgTk9fQ0FMTF9BRlRFUl9JVVBfUnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOT19DQUxMX0FGVEVSX0lVUF9SVUxFU19TSVpFXSA9CisgIHsKKyAgICAvKiBQcmV2ZW50IGNyZWF0aW9uIG9mIGRlbnRzIGluIG91dGxpbmUgKi8KKyAgICB7ICItIiwgMCwgIiIsIDAgfSwKKyAgfTsKKworCisgIC8qIERlLWVtYm9sZGVuIHRoZXNlIGdseXBocyBzbGlnaHRseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBERUVNQk9MREVOX1JVTEVTX1NJWkUgIDkKKworICBzdGF0aWMgY29uc3QgU1BIX1R3ZWFrUnVsZSAgREVFTUJPTERFTl9SdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RFRU1CT0xERU5fUlVMRVNfU0laRV0gPQorICB7CisgICAgeyAiQ291cmllciBOZXciLCAwLCAiQm9sZCIsICdBJyB9LAorICAgIHsgIkNvdXJpZXIgTmV3IiwgMCwgIkJvbGQiLCAnVycgfSwKKyAgICB7ICJDb3VyaWVyIE5ldyIsIDAsICJCb2xkIiwgJ3cnIH0sCisgICAgeyAiQ291cmllciBOZXciLCAwLCAiQm9sZCIsICdNJyB9LAorICAgIHsgIkNvdXJpZXIgTmV3IiwgMCwgIkJvbGQiLCAnWCcgfSwKKyAgICB7ICJDb3VyaWVyIE5ldyIsIDAsICJCb2xkIiwgJ0snIH0sCisgICAgeyAiQ291cmllciBOZXciLCAwLCAiQm9sZCIsICd4JyB9LAorICAgIHsgIkNvdXJpZXIgTmV3IiwgMCwgIkJvbGQiLCAneicgfSwKKyAgICB7ICJDb3VyaWVyIE5ldyIsIDAsICJCb2xkIiwgJ3YnIH0sCisgIH07CisKKworICAvKiBFbWJvbGRlbiB0aGVzZSBnbHlwaHMgc2xpZ2h0bHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgRU1CT0xERU5fUlVMRVNfU0laRSAgMgorCisgIHN0YXRpYyBjb25zdCBTUEhfVHdlYWtSdWxlICBFTUJPTERFTl9SdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0VNQk9MREVOX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIkNvdXJpZXIgTmV3IiwgMCwgIlJlZ3VsYXIiLCAwIH0sCisgICAgeyAiQ291cmllciBOZXciLCAwLCAiSXRhbGljIiwgMCB9LAorICB9OworCisKKyAgLyogVGhpcyBpcyBhIENWVCBoYWNrIHRoYXQgbWFrZXMgdGhpY2sgaG9yaXpvbnRhbCBzdGVtcyBvbiAyLCA1LCA3ICAgICAgICovCisgIC8qIHNpbWlsYXIgdG8gV2luZG93cyBYUC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBUSU1FU19ORVdfUk9NQU5fSEFDS19SVUxFU19TSVpFICAxMgorCisgIHN0YXRpYyBjb25zdCBTUEhfVHdlYWtSdWxlICBUSU1FU19ORVdfUk9NQU5fSEFDS19SdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RJTUVTX05FV19ST01BTl9IQUNLX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDE2LCAiSXRhbGljIiwgJzInIH0sCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMTYsICJJdGFsaWMiLCAnNScgfSwKKyAgICB7ICJUaW1lcyBOZXcgUm9tYW4iLCAxNiwgIkl0YWxpYyIsICc3JyB9LAorICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDE2LCAiUmVndWxhciIsICcyJyB9LAorICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDE2LCAiUmVndWxhciIsICc1JyB9LAorICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDE2LCAiUmVndWxhciIsICc3JyB9LAorICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDE3LCAiSXRhbGljIiwgJzInIH0sCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMTcsICJJdGFsaWMiLCAnNScgfSwKKyAgICB7ICJUaW1lcyBOZXcgUm9tYW4iLCAxNywgIkl0YWxpYyIsICc3JyB9LAorICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDE3LCAiUmVndWxhciIsICcyJyB9LAorICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDE3LCAiUmVndWxhciIsICc1JyB9LAorICAgIHsgIlRpbWVzIE5ldyBSb21hbiIsIDE3LCAiUmVndWxhciIsICc3JyB9LAorICB9OworCisKKyAgLyogVGhpcyBmdWRnZXMgZGlzdGFuY2Ugb24gMiB0byBnZXQgcmlkIG9mIHRoZSB2YW5pc2hpbmcgc3RlbSBpc3N1ZS4gICAgICovCisgIC8qIEEgcmVhbCBzb2x1dGlvbiB0byB0aGlzIGlzIGNlcnRhaW5seSB3ZWxjb21lLiAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDT1VSSUVSX05FV18yX0hBQ0tfUlVMRVNfU0laRSAgMTUKKworICBzdGF0aWMgY29uc3QgU1BIX1R3ZWFrUnVsZSAgQ09VUklFUl9ORVdfMl9IQUNLX1J1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQ09VUklFUl9ORVdfMl9IQUNLX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIkNvdXJpZXIgTmV3IiwgMTAsICJSZWd1bGFyIiwgJzInIH0sCisgICAgeyAiQ291cmllciBOZXciLCAxMSwgIlJlZ3VsYXIiLCAnMicgfSwKKyAgICB7ICJDb3VyaWVyIE5ldyIsIDEyLCAiUmVndWxhciIsICcyJyB9LAorICAgIHsgIkNvdXJpZXIgTmV3IiwgMTMsICJSZWd1bGFyIiwgJzInIH0sCisgICAgeyAiQ291cmllciBOZXciLCAxNCwgIlJlZ3VsYXIiLCAnMicgfSwKKyAgICB7ICJDb3VyaWVyIE5ldyIsIDE1LCAiUmVndWxhciIsICcyJyB9LAorICAgIHsgIkNvdXJpZXIgTmV3IiwgMTYsICJSZWd1bGFyIiwgJzInIH0sCisgICAgeyAiQ291cmllciBOZXciLCAxNywgIlJlZ3VsYXIiLCAnMicgfSwKKyAgICB7ICJDb3VyaWVyIE5ldyIsIDE4LCAiUmVndWxhciIsICcyJyB9LAorICAgIHsgIkNvdXJpZXIgTmV3IiwgMTksICJSZWd1bGFyIiwgJzInIH0sCisgICAgeyAiQ291cmllciBOZXciLCAyMCwgIlJlZ3VsYXIiLCAnMicgfSwKKyAgICB7ICJDb3VyaWVyIE5ldyIsIDIxLCAiUmVndWxhciIsICcyJyB9LAorICAgIHsgIkNvdXJpZXIgTmV3IiwgMjIsICJSZWd1bGFyIiwgJzInIH0sCisgICAgeyAiQ291cmllciBOZXciLCAyMywgIlJlZ3VsYXIiLCAnMicgfSwKKyAgICB7ICJDb3VyaWVyIE5ldyIsIDI0LCAiUmVndWxhciIsICcyJyB9LAorICB9OworCisKKyNpZm5kZWYgRk9SQ0VfTkFUVVJBTF9XSURUSFMKKworICAvKiBVc2UgY29tcGF0aWJsZSB3aWR0aHMgd2l0aCB0aGVzZSBnbHlwaHMuICBDb21wYXRpYmxlIHdpZHRocyBpcyBhbHdheXMgKi8KKyAgLyogb24gd2hlbiBkb2luZyBCL1cgVHJ1ZVR5cGUgaW5zdHJ1Y3RpbmcsIGJ1dCBpcyB1c2VkIHNlbGVjdGl2ZWx5IGhlcmUsICovCisgIC8qIHR5cGljYWxseSBvbiBnbHlwaHMgd2l0aCAzIG9yIG1vcmUgdmVydGljYWwgc3RlbXMuICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDT01QQVRJQkxFX1dJRFRIU19SVUxFU19TSVpFICAzOAorCisgIHN0YXRpYyBjb25zdCBTUEhfVHdlYWtSdWxlICBDT01QQVRJQkxFX1dJRFRIU19SdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0NPTVBBVElCTEVfV0lEVEhTX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIkFyaWFsIFVuaWNvZGUgTVMiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnbScgfSwKKyAgICB7ICJBcmlhbCBVbmljb2RlIE1TIiwgMTQsICJSZWd1bGFyIENsYXNzIiwgJ20nIH0sCisgICAgLyogQ3lyaWxsaWMgc21hbGwgbGV0dGVyIHNoYSAqLworICAgIHsgIkFyaWFsIiwgMTAsICJSZWd1bGFyIENsYXNzIiwgMHg0NDggfSwKKyAgICB7ICJBcmlhbCIsIDExLCAiUmVndWxhciBDbGFzcyIsICdtJyB9LAorICAgIHsgIkFyaWFsIiwgMTIsICJSZWd1bGFyIENsYXNzIiwgJ20nIH0sCisgICAgLyogQ3lyaWxsaWMgc21hbGwgbGV0dGVyIHNoYSAqLworICAgIHsgIkFyaWFsIiwgMTIsICJSZWd1bGFyIENsYXNzIiwgMHg0NDggfSwKKyAgICB7ICJBcmlhbCIsIDEzLCAiUmVndWxhciBDbGFzcyIsIDB4NDQ4IH0sCisgICAgeyAiQXJpYWwiLCAxNCwgIlJlZ3VsYXIgQ2xhc3MiLCAnbScgfSwKKyAgICAvKiBDeXJpbGxpYyBzbWFsbCBsZXR0ZXIgc2hhICovCisgICAgeyAiQXJpYWwiLCAxNCwgIlJlZ3VsYXIgQ2xhc3MiLCAweDQ0OCB9LAorICAgIHsgIkFyaWFsIiwgMTUsICJSZWd1bGFyIENsYXNzIiwgMHg0NDggfSwKKyAgICB7ICJBcmlhbCIsIDE3LCAiUmVndWxhciBDbGFzcyIsICdtJyB9LAorICAgIHsgIkRlamFWdSBTYW5zIiwgMTUsICJSZWd1bGFyIENsYXNzIiwgMCB9LAorICAgIHsgIk1pY3Jvc29mdCBTYW5zIFNlcmlmIiwgMTEsICJSZWd1bGFyIENsYXNzIiwgMCB9LAorICAgIHsgIk1pY3Jvc29mdCBTYW5zIFNlcmlmIiwgMTIsICJSZWd1bGFyIENsYXNzIiwgMCB9LAorICAgIHsgIlNlZ29lIFVJIiwgMTEsICJSZWd1bGFyIENsYXNzIiwgMCB9LAorICAgIHsgIk1vbmFjbyIsIDAsICJSZWd1bGFyIENsYXNzIiwgMCB9LAorICAgIHsgIlNlZ29lIFVJIiwgMTIsICJSZWd1bGFyIENsYXNzIiwgJ20nIH0sCisgICAgeyAiU2Vnb2UgVUkiLCAxNCwgIlJlZ3VsYXIgQ2xhc3MiLCAnbScgfSwKKyAgICB7ICJUYWhvbWEiLCAxMSwgIlJlZ3VsYXIgQ2xhc3MiLCAwIH0sCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMTYsICJSZWd1bGFyIENsYXNzIiwgJ2MnIH0sCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMTYsICJSZWd1bGFyIENsYXNzIiwgJ20nIH0sCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMTYsICJSZWd1bGFyIENsYXNzIiwgJ28nIH0sCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMTYsICJSZWd1bGFyIENsYXNzIiwgJ3cnIH0sCisgICAgeyAiVHJlYnVjaGV0IE1TIiwgMTEsICJSZWd1bGFyIENsYXNzIiwgMCB9LAorICAgIHsgIlRyZWJ1Y2hldCBNUyIsIDEyLCAiUmVndWxhciBDbGFzcyIsIDAgfSwKKyAgICB7ICJUcmVidWNoZXQgTVMiLCAxNCwgIlJlZ3VsYXIgQ2xhc3MiLCAwIH0sCisgICAgeyAiVHJlYnVjaGV0IE1TIiwgMTUsICJSZWd1bGFyIENsYXNzIiwgMCB9LAorICAgIHsgIlVidW50dSIsIDEyLCAiUmVndWxhciBDbGFzcyIsICdtJyB9LAorICAgIC8qIEN5cmlsbGljIHNtYWxsIGxldHRlciBzaGEgKi8KKyAgICB7ICJWZXJkYW5hIiwgMTAsICJSZWd1bGFyIENsYXNzIiwgMHg0NDggfSwKKyAgICB7ICJWZXJkYW5hIiwgMTEsICJSZWd1bGFyIENsYXNzIiwgMHg0NDggfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnaScgfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnaicgfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnbCcgfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnbScgfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxMywgIlJlZ3VsYXIgQ2xhc3MiLCAnaScgfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxMywgIlJlZ3VsYXIgQ2xhc3MiLCAnaicgfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxMywgIlJlZ3VsYXIgQ2xhc3MiLCAnbCcgfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxNCwgIlJlZ3VsYXIgQ2xhc3MiLCAnbScgfSwKKyAgfTsKKworCisgIC8qIFNjYWxpbmcgc2xpZ2h0bHkgaW4gdGhlIHgtZGlyZWN0aW9uIHByaW9yIHRvIGhpbnRpbmcgcmVzdWx0cyBpbiAgICAgICAqLworICAvKiBtb3JlIHZpc3VhbGx5IHBsZWFzaW5nIGdseXBocyBpbiBjZXJ0YWluIGNhc2VzLiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBzb21ldGltZXMgbmVlZHMgdG8gYmUgY29vcmRpbmF0ZWQgd2l0aCBjb21wYXRpYmxlIHdpZHRoIHJ1bGVzLiAgICovCisgIC8qIEEgdmFsdWUgb2YgMTAwMCBjb3JyZXNwb25kcyB0byBhIHNjYWxlZCB2YWx1ZSBvZiAxLjAuICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIFhfU0NBTElOR19SVUxFU19TSVpFICA1MAorCisgIHN0YXRpYyBjb25zdCBTUEhfU2NhbGVSdWxlICBYX1NDQUxJTkdfUnVsZXNbWF9TQ0FMSU5HX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIkRlamFWdSBTYW5zIiwgMTIsICJSZWd1bGFyIENsYXNzIiwgJ20nLCA5NTAgfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnYScsIDExMDAgfSwKKyAgICB7ICJWZXJkYW5hIGFuZCBDbG9uZXMiLCAxMywgIlJlZ3VsYXIgQ2xhc3MiLCAnYScsIDEwNTAgfSwKKyAgICB7ICJBcmlhbCIsIDExLCAiUmVndWxhciBDbGFzcyIsICdtJywgOTc1IH0sCisgICAgeyAiQXJpYWwiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnbScsIDEwNTAgfSwKKyAgICAvKiBDeXJpbGxpYyBzbWFsbCBsZXR0ZXIgZWwgKi8KKyAgICB7ICJBcmlhbCIsIDEzLCAiUmVndWxhciBDbGFzcyIsIDB4NDNCLCA5NTAgfSwKKyAgICB7ICJBcmlhbCIsIDEzLCAiUmVndWxhciBDbGFzcyIsICdvJywgOTUwIH0sCisgICAgeyAiQXJpYWwiLCAxMywgIlJlZ3VsYXIgQ2xhc3MiLCAnZScsIDk1MCB9LAorICAgIHsgIkFyaWFsIiwgMTQsICJSZWd1bGFyIENsYXNzIiwgJ20nLCA5NTAgfSwKKyAgICAvKiBDeXJpbGxpYyBzbWFsbCBsZXR0ZXIgZWwgKi8KKyAgICB7ICJBcmlhbCIsIDE1LCAiUmVndWxhciBDbGFzcyIsIDB4NDNCLCA5MjUgfSwKKyAgICB7ICJCaXRzdHJlYW0gVmVyYSBTYW5zIiwgMTAsICJSZWd1bGFyL0l0YWxpYyBDbGFzcyIsIDAsIDExMDAgfSwKKyAgICB7ICJCaXRzdHJlYW0gVmVyYSBTYW5zIiwgMTIsICJSZWd1bGFyL0l0YWxpYyBDbGFzcyIsIDAsIDEwNTAgfSwKKyAgICB7ICJCaXRzdHJlYW0gVmVyYSBTYW5zIiwgMTYsICJSZWd1bGFyIENsYXNzIiwgMCwgMTA1MCB9LAorICAgIHsgIkJpdHN0cmVhbSBWZXJhIFNhbnMiLCA5LCAiUmVndWxhci9JdGFsaWMgQ2xhc3MiLCAwLCAxMDUwIH0sCisgICAgeyAiRGVqYVZ1IFNhbnMiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnbCcsIDk3NSB9LAorICAgIHsgIkRlamFWdSBTYW5zIiwgMTIsICJSZWd1bGFyIENsYXNzIiwgJ2knLCA5NzUgfSwKKyAgICB7ICJEZWphVnUgU2FucyIsIDEyLCAiUmVndWxhciBDbGFzcyIsICdqJywgOTc1IH0sCisgICAgeyAiRGVqYVZ1IFNhbnMiLCAxMywgIlJlZ3VsYXIgQ2xhc3MiLCAnbCcsIDk1MCB9LAorICAgIHsgIkRlamFWdSBTYW5zIiwgMTMsICJSZWd1bGFyIENsYXNzIiwgJ2knLCA5NTAgfSwKKyAgICB7ICJEZWphVnUgU2FucyIsIDEzLCAiUmVndWxhciBDbGFzcyIsICdqJywgOTUwIH0sCisgICAgeyAiRGVqYVZ1IFNhbnMiLCAxMCwgIlJlZ3VsYXIvSXRhbGljIENsYXNzIiwgMCwgMTEwMCB9LAorICAgIHsgIkRlamFWdSBTYW5zIiwgMTIsICJSZWd1bGFyL0l0YWxpYyBDbGFzcyIsIDAsIDEwNTAgfSwKKyAgICB7ICJHZW9yZ2lhIiwgMTAsICIiLCAwLCAxMDUwIH0sCisgICAgeyAiR2VvcmdpYSIsIDExLCAiIiwgMCwgMTEwMCB9LAorICAgIHsgIkdlb3JnaWEiLCAxMiwgIiIsIDAsIDEwMjUgfSwKKyAgICB7ICJHZW9yZ2lhIiwgMTMsICIiLCAwLCAxMDUwIH0sCisgICAgeyAiR2VvcmdpYSIsIDE2LCAiIiwgMCwgMTA1MCB9LAorICAgIHsgIkdlb3JnaWEiLCAxNywgIiIsIDAsIDEwMzAgfSwKKyAgICB7ICJMaWJlcmF0aW9uIFNhbnMiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnbScsIDExMDAgfSwKKyAgICB7ICJMdWNpZGEgR3JhbmRlIiwgMTEsICJSZWd1bGFyIENsYXNzIiwgJ20nLCAxMTAwIH0sCisgICAgeyAiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCAxMSwgIlJlZ3VsYXIgQ2xhc3MiLCAnbScsIDk1MCB9LAorICAgIHsgIk1pY3Jvc29mdCBTYW5zIFNlcmlmIiwgMTIsICJSZWd1bGFyIENsYXNzIiwgJ20nLCAxMDUwIH0sCisgICAgeyAiU2Vnb2UgVUkiLCAxMiwgIlJlZ3VsYXIgQ2xhc3MiLCAnSCcsIDEwNTAgfSwKKyAgICB7ICJTZWdvZSBVSSIsIDEyLCAiUmVndWxhciBDbGFzcyIsICdtJywgMTA1MCB9LAorICAgIHsgIlNlZ29lIFVJIiwgMTQsICJSZWd1bGFyIENsYXNzIiwgJ20nLCAxMDUwIH0sCisgICAgeyAiVGFob21hIiwgMTEsICJSZWd1bGFyIENsYXNzIiwgJ2knLCA5NzUgfSwKKyAgICB7ICJUYWhvbWEiLCAxMSwgIlJlZ3VsYXIgQ2xhc3MiLCAnbCcsIDk3NSB9LAorICAgIHsgIlRhaG9tYSIsIDExLCAiUmVndWxhciBDbGFzcyIsICdqJywgOTAwIH0sCisgICAgeyAiVGFob21hIiwgMTEsICJSZWd1bGFyIENsYXNzIiwgJ20nLCA5MTggfSwKKyAgICB7ICJWZXJkYW5hIiwgMTAsICJSZWd1bGFyL0l0YWxpYyBDbGFzcyIsIDAsIDExMDAgfSwKKyAgICB7ICJWZXJkYW5hIiwgMTIsICJSZWd1bGFyIENsYXNzIiwgJ20nLCA5NzUgfSwKKyAgICB7ICJWZXJkYW5hIiwgMTIsICJSZWd1bGFyL0l0YWxpYyBDbGFzcyIsIDAsIDEwNTAgfSwKKyAgICB7ICJWZXJkYW5hIiwgMTMsICJSZWd1bGFyL0l0YWxpYyBDbGFzcyIsICdpJywgOTUwIH0sCisgICAgeyAiVmVyZGFuYSIsIDEzLCAiUmVndWxhci9JdGFsaWMgQ2xhc3MiLCAnaicsIDk1MCB9LAorICAgIHsgIlZlcmRhbmEiLCAxMywgIlJlZ3VsYXIvSXRhbGljIENsYXNzIiwgJ2wnLCA5NTAgfSwKKyAgICB7ICJWZXJkYW5hIiwgMTYsICJSZWd1bGFyIENsYXNzIiwgMCwgMTA1MCB9LAorICAgIHsgIlZlcmRhbmEiLCA5LCAiUmVndWxhci9JdGFsaWMgQ2xhc3MiLCAwLCAxMDUwIH0sCisgICAgeyAiVGltZXMgTmV3IFJvbWFuIiwgMTYsICJSZWd1bGFyIENsYXNzIiwgJ20nLCA5MTggfSwKKyAgICB7ICJUcmVidWNoZXQgTVMiLCAxMSwgIlJlZ3VsYXIgQ2xhc3MiLCAnbScsIDgwMCB9LAorICAgIHsgIlRyZWJ1Y2hldCBNUyIsIDEyLCAiUmVndWxhciBDbGFzcyIsICdtJywgODAwIH0sCisgIH07CisKKyNlbHNlCisKKyNkZWZpbmUgQ09NUEFUSUJMRV9XSURUSFNfUlVMRVNfU0laRSAgMQorCisgIHN0YXRpYyBjb25zdCBTUEhfVHdlYWtSdWxlICBDT01QQVRJQkxFX1dJRFRIU19SdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0NPTVBBVElCTEVfV0lEVEhTX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIi0iLCAwLCAiIiwgMCB9LAorICB9OworCisKKyNkZWZpbmUgWF9TQ0FMSU5HX1JVTEVTX1NJWkUgIDEKKworICBzdGF0aWMgY29uc3QgU1BIX1NjYWxlUnVsZSAgWF9TQ0FMSU5HX1J1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWF9TQ0FMSU5HX1JVTEVTX1NJWkVdID0KKyAgeworICAgIHsgIi0iLCAwLCAiIiwgMCwgMTAwMCB9LAorICB9OworCisjZW5kaWYgLyogRk9SQ0VfTkFUVVJBTF9XSURUSFMgKi8KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfQm9vbCApCisgIGlzX21lbWJlcl9vZl9mYW1pbHlfY2xhc3MoIGNvbnN0IEZUX1N0cmluZyogIGRldGVjdGVkX2ZvbnRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgcnVsZV9mb250X25hbWUgKQorICB7CisgICAgRlRfVUludCAgaSwgajsKKworCisgICAgLyogRG9lcyBmb250IG5hbWUgbWF0Y2ggcnVsZSBmYW1pbHk/ICovCisgICAgaWYgKCBzdHJjbXAoIGRldGVjdGVkX2ZvbnRfbmFtZSwgcnVsZV9mb250X25hbWUgKSA9PSAwICkKKyAgICAgIHJldHVybiBUUlVFOworCisgICAgLyogSXMgZm9udCBuYW1lIGEgd2lsZGNhcmQgIiI/ICovCisgICAgaWYgKCBzdHJjbXAoIHJ1bGVfZm9udF9uYW1lLCAiIiApID09IDAgKQorICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICAvKiBJcyBmb250IG5hbWUgY29udGFpbmVkIGluIGEgY2xhc3MgbGlzdD8gKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IEZBTUlMWV9DTEFTU19SVUxFU19TSVpFOyBpKysgKQorICAgIHsKKyAgICAgIGlmICggc3RyY21wKCBGQU1JTFlfQ0xBU1NfUnVsZXNbaV0ubmFtZSwgcnVsZV9mb250X25hbWUgKSA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBTUEhfTUFYX0NMQVNTX01FTUJFUlM7IGorKyApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIHN0cmNtcCggRkFNSUxZX0NMQVNTX1J1bGVzW2ldLm1lbWJlcltqXSwgIiIgKSA9PSAwICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIGlmICggc3RyY21wKCBGQU1JTFlfQ0xBU1NfUnVsZXNbaV0ubWVtYmVyW2pdLAorICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3RlZF9mb250X25hbWUgKSA9PSAwICkKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Jvb2wgKQorICBpc19tZW1iZXJfb2Zfc3R5bGVfY2xhc3MoIGNvbnN0IEZUX1N0cmluZyogIGRldGVjdGVkX2ZvbnRfc3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgcnVsZV9mb250X3N0eWxlICkKKyAgeworICAgIEZUX1VJbnQgIGksIGo7CisKKworICAgIC8qIERvZXMgZm9udCBzdHlsZSBtYXRjaCBydWxlIHN0eWxlPyAqLworICAgIGlmICggc3RyY21wKCBkZXRlY3RlZF9mb250X3N0eWxlLCBydWxlX2ZvbnRfc3R5bGUgKSA9PSAwICkKKyAgICAgIHJldHVybiBUUlVFOworCisgICAgLyogSXMgZm9udCBzdHlsZSBhIHdpbGRjYXJkICIiPyAqLworICAgIGlmICggc3RyY21wKCBydWxlX2ZvbnRfc3R5bGUsICIiICkgPT0gMCApCisgICAgICByZXR1cm4gVFJVRTsKKworICAgIC8qIElzIGZvbnQgc3R5bGUgY29udGFpbmVkIGluIGEgY2xhc3MgbGlzdD8gKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IFNUWUxFX0NMQVNTX1JVTEVTX1NJWkU7IGkrKyApCisgICAgeworICAgICAgaWYgKCBzdHJjbXAoIFNUWUxFX0NMQVNTX1J1bGVzW2ldLm5hbWUsIHJ1bGVfZm9udF9zdHlsZSApID09IDAgKQorICAgICAgeworICAgICAgICBmb3IgKCBqID0gMDsgaiA8IFNQSF9NQVhfQ0xBU1NfTUVNQkVSUzsgaisrICkKKyAgICAgICAgeworICAgICAgICAgIGlmICggc3RyY21wKCBTVFlMRV9DTEFTU19SdWxlc1tpXS5tZW1iZXJbal0sICIiICkgPT0gMCApCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICBpZiAoIHN0cmNtcCggU1RZTEVfQ0xBU1NfUnVsZXNbaV0ubWVtYmVyW2pdLAorICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3RlZF9mb250X3N0eWxlICkgPT0gMCApCisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9Cb29sICkKKyAgc3BoX3Rlc3RfdHdlYWsoIFRUX0ZhY2UgICAgICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgICAgIGZhbWlseSwKKyAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgICAgICBwcGVtLAorICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgICAgIHN0eWxlLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgY29uc3QgU1BIX1R3ZWFrUnVsZSogIHJ1bGUsCisgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgICAgbnVtX3J1bGVzICkKKyAgeworICAgIEZUX1VJbnQgIGk7CisKKworICAgIC8qIHJ1bGUgY2hlY2tzIG1heSBiZSBhYmxlIHRvIGJlIG9wdGltaXplZCBmdXJ0aGVyICovCisgICAgZm9yICggaSA9IDA7IGkgPCBudW1fcnVsZXM7IGkrKyApCisgICAgeworICAgICAgaWYgKCBmYW1pbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAoIGlzX21lbWJlcl9vZl9mYW1pbHlfY2xhc3MgKCBmYW1pbHksIHJ1bGVbaV0uZmFtaWx5ICkgKSApCisgICAgICAgIGlmICggcnVsZVtpXS5wcGVtID09IDAgICAgfHwKKyAgICAgICAgICAgICBydWxlW2ldLnBwZW0gPT0gcHBlbSApCisgICAgICAgICAgaWYgKCBzdHlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICBpc19tZW1iZXJfb2Zfc3R5bGVfY2xhc3MgKCBzdHlsZSwgcnVsZVtpXS5zdHlsZSApICkKKyAgICAgICAgICAgIGlmICggcnVsZVtpXS5nbHlwaCA9PSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgICBGVF9HZXRfQ2hhcl9JbmRleCggKEZUX0ZhY2UpZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVbaV0uZ2x5cGggKSA9PSBnbHlwaF9pbmRleCApCisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisKKyAgc3RhdGljIEZUX1VJbnQKKyAgc2NhbGVfdGVzdF90d2VhayggVFRfRmFjZSAgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1N0cmluZyogICAgICBmYW1pbHksCisgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgICAgICBwcGVtLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICAgICAgc3R5bGUsCisgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgU1BIX1NjYWxlUnVsZSogIHJ1bGUsCisgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgICAgICBudW1fcnVsZXMgKQorICB7CisgICAgRlRfVUludCAgaTsKKworCisgICAgLyogcnVsZSBjaGVja3MgbWF5IGJlIGFibGUgdG8gYmUgb3B0aW1pemVkIGZ1cnRoZXIgKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IG51bV9ydWxlczsgaSsrICkKKyAgICB7CisgICAgICBpZiAoIGZhbWlseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICggaXNfbWVtYmVyX29mX2ZhbWlseV9jbGFzcyAoIGZhbWlseSwgcnVsZVtpXS5mYW1pbHkgKSApICkKKyAgICAgICAgaWYgKCBydWxlW2ldLnBwZW0gPT0gMCAgICB8fAorICAgICAgICAgICAgIHJ1bGVbaV0ucHBlbSA9PSBwcGVtICkKKyAgICAgICAgICBpZiAoIHN0eWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgaXNfbWVtYmVyX29mX3N0eWxlX2NsYXNzKCBzdHlsZSwgcnVsZVtpXS5zdHlsZSApICkKKyAgICAgICAgICAgIGlmICggcnVsZVtpXS5nbHlwaCA9PSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgICBGVF9HZXRfQ2hhcl9JbmRleCggKEZUX0ZhY2UpZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVbaV0uZ2x5cGggKSA9PSBnbHlwaF9pbmRleCApCisgICAgICAgIHJldHVybiBydWxlW2ldLnNjYWxlOworICAgIH0KKworICAgIHJldHVybiAxMDAwOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX1VJbnQgKQorICBzcGhfdGVzdF90d2Vha194X3NjYWxpbmcoIFRUX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgZmFtaWx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgIHBwZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRlRfU3RyaW5nKiAgc3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgZ2x5cGhfaW5kZXggKQorICB7CisgICAgcmV0dXJuIHNjYWxlX3Rlc3RfdHdlYWsoIGZhY2UsIGZhbWlseSwgcHBlbSwgc3R5bGUsIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYX1NDQUxJTkdfUnVsZXMsIFhfU0NBTElOR19SVUxFU19TSVpFICk7CisgIH0KKworCisjZGVmaW5lIFRXRUFLX1JVTEVTKCB4ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICggc3BoX3Rlc3RfdHdlYWsoIGZhY2UsIGZhbWlseSwgcHBlbSwgc3R5bGUsIGdseXBoX2luZGV4LCBcCisgICAgICAgICAgICAgICAgICAgICAgIHgjI19SdWxlcywgeCMjX1JVTEVTX1NJWkUgKSApICAgICAgICAgICBcCisgICAgbG9hZGVyLT5leGVjLT5zcGhfdHdlYWtfZmxhZ3MgfD0gU1BIX1RXRUFLXyMjeDsKKworI2RlZmluZSBUV0VBS19SVUxFU19FWENFUFRJT05TKCB4ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZiAoIHNwaF90ZXN0X3R3ZWFrKCBmYWNlLCBmYW1pbHksIHBwZW0sIHN0eWxlLCBnbHlwaF9pbmRleCwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICB4IyNfUnVsZXNfRXhjZXB0aW9ucywgeCMjX1JVTEVTX0VYQ0VQVElPTlNfU0laRSApICkgXAorICAgIGxvYWRlci0+ZXhlYy0+c3BoX3R3ZWFrX2ZsYWdzICY9IH5TUEhfVFdFQUtfIyN4OworCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgc3BoX3NldF90d2Vha3MoIFRUX0xvYWRlciAgbG9hZGVyLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBnbHlwaF9pbmRleCApCisgIHsKKyAgICBUVF9GYWNlICAgICBmYWNlICAgPSAoVFRfRmFjZSlsb2FkZXItPmZhY2U7CisgICAgRlRfU3RyaW5nKiAgZmFtaWx5ID0gZmFjZS0+cm9vdC5mYW1pbHlfbmFtZTsKKyAgICBpbnQgICAgICAgICBwcGVtICAgPSBsb2FkZXItPnNpemUtPm1ldHJpY3MueF9wcGVtOworICAgIEZUX1N0cmluZyogIHN0eWxlICA9IGZhY2UtPnJvb3Quc3R5bGVfbmFtZTsKKworCisgICAgLyogZG9uJ3QgYXBwbHkgcnVsZXMgaWYgc3R5bGUgaXNuJ3Qgc2V0ICovCisgICAgaWYgKCAhZmFjZS0+cm9vdC5zdHlsZV9uYW1lICkKKyAgICAgIHJldHVybjsKKworI2lmZGVmIFNQSF9ERUJVR19NT1JFX1ZFUkJPU0UKKyAgICBwcmludGYoICIlcywlZCwlcywlYz0lZCAiLAorICAgICAgICAgICAgZmFtaWx5LCBwcGVtLCBzdHlsZSwgZ2x5cGhfaW5kZXgsIGdseXBoX2luZGV4ICk7CisjZW5kaWYKKworICAgIFRXRUFLX1JVTEVTKCBQSVhFTF9ISU5USU5HICk7CisKKyAgICBpZiAoIGxvYWRlci0+ZXhlYy0+c3BoX3R3ZWFrX2ZsYWdzICYgU1BIX1RXRUFLX1BJWEVMX0hJTlRJTkcgKQorICAgIHsKKyAgICAgIGxvYWRlci0+ZXhlYy0+aWdub3JlX3hfbW9kZSA9IEZBTFNFOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRXRUFLX1JVTEVTKCBBTExPV19YX0RNT1ZFICk7CisgICAgVFdFQUtfUlVMRVMoIEFMV0FZU19ET19ERUxUQVAgKTsKKyAgICBUV0VBS19SVUxFUyggQUxXQVlTX1NLSVBfREVMVEFQICk7CisgICAgVFdFQUtfUlVMRVMoIERFRU1CT0xERU4gKTsKKyAgICBUV0VBS19SVUxFUyggRE9fU0hQSVggKTsKKyAgICBUV0VBS19SVUxFUyggRU1CT0xERU4gKTsKKyAgICBUV0VBS19SVUxFUyggTUlBUF9IQUNLICk7CisgICAgVFdFQUtfUlVMRVMoIE5PUk1BTF9ST1VORCApOworICAgIFRXRUFLX1JVTEVTKCBOT19BTElHTlJQX0FGVEVSX0lVUCApOworICAgIFRXRUFLX1JVTEVTKCBOT19DQUxMX0FGVEVSX0lVUCApOworICAgIFRXRUFLX1JVTEVTKCBOT19ERUxUQVBfQUZURVJfSVVQICk7CisgICAgVFdFQUtfUlVMRVMoIFJBU1RFUklaRVJfMzUgKTsKKyAgICBUV0VBS19SVUxFUyggU0tJUF9JVVAgKTsKKworICAgIFRXRUFLX1JVTEVTKCBTS0lQX09GRlBJWEVMX1lfTU9WRVMgKTsKKyAgICBUV0VBS19SVUxFU19FWENFUFRJT05TKCBTS0lQX09GRlBJWEVMX1lfTU9WRVMgKTsKKworICAgIFRXRUFLX1JVTEVTKCBTS0lQX05PTlBJWEVMX1lfTU9WRVNfREVMVEFQICk7CisKKyAgICBUV0VBS19SVUxFUyggU0tJUF9OT05QSVhFTF9ZX01PVkVTICk7CisgICAgVFdFQUtfUlVMRVNfRVhDRVBUSU9OUyggU0tJUF9OT05QSVhFTF9ZX01PVkVTICk7CisKKyAgICBUV0VBS19SVUxFUyggUk9VTkRfTk9OUElYRUxfWV9NT1ZFUyApOworICAgIFRXRUFLX1JVTEVTX0VYQ0VQVElPTlMoIFJPVU5EX05PTlBJWEVMX1lfTU9WRVMgKTsKKworICAgIGlmICggbG9hZGVyLT5leGVjLT5zcGhfdHdlYWtfZmxhZ3MgJiBTUEhfVFdFQUtfUkFTVEVSSVpFUl8zNSApCisgICAgeworICAgICAgaWYgKCBsb2FkZXItPmV4ZWMtPnJhc3Rlcml6ZXJfdmVyc2lvbiAhPSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM1ICkKKyAgICAgIHsKKyAgICAgICAgbG9hZGVyLT5leGVjLT5yYXN0ZXJpemVyX3ZlcnNpb24gPSBUVF9JTlRFUlBSRVRFUl9WRVJTSU9OXzM1OworICAgICAgICBsb2FkZXItPmV4ZWMtPnNpemUtPmN2dF9yZWFkeSAgICA9IEZBTFNFOworCisgICAgICAgIHR0X3NpemVfcmVhZHlfYnl0ZWNvZGUoCisgICAgICAgICAgbG9hZGVyLT5leGVjLT5zaXplLAorICAgICAgICAgIEZUX0JPT0woIGxvYWRlci0+bG9hZF9mbGFncyAmIEZUX0xPQURfUEVEQU5USUMgKSApOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBsb2FkZXItPmV4ZWMtPnJhc3Rlcml6ZXJfdmVyc2lvbiA9IFRUX0lOVEVSUFJFVEVSX1ZFUlNJT05fMzU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBpZiAoIGxvYWRlci0+ZXhlYy0+cmFzdGVyaXplcl92ZXJzaW9uICAhPQorICAgICAgICAgICBTUEhfT1BUSU9OX1NFVF9SQVNURVJJWkVSX1ZFUlNJT04gKQorICAgICAgeworICAgICAgICBsb2FkZXItPmV4ZWMtPnJhc3Rlcml6ZXJfdmVyc2lvbiA9IFNQSF9PUFRJT05fU0VUX1JBU1RFUklaRVJfVkVSU0lPTjsKKyAgICAgICAgbG9hZGVyLT5leGVjLT5zaXplLT5jdnRfcmVhZHkgICAgPSBGQUxTRTsKKworICAgICAgICB0dF9zaXplX3JlYWR5X2J5dGVjb2RlKAorICAgICAgICAgIGxvYWRlci0+ZXhlYy0+c2l6ZSwKKyAgICAgICAgICBGVF9CT09MKCBsb2FkZXItPmxvYWRfZmxhZ3MgJiBGVF9MT0FEX1BFREFOVElDICkgKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgbG9hZGVyLT5leGVjLT5yYXN0ZXJpemVyX3ZlcnNpb24gPSBTUEhfT1BUSU9OX1NFVF9SQVNURVJJWkVSX1ZFUlNJT047CisgICAgfQorCisgICAgaWYgKCBJU19ISU5URUQoIGxvYWRlci0+bG9hZF9mbGFncyApICkKKyAgICB7CisgICAgICBUV0VBS19SVUxFUyggVElNRVNfTkVXX1JPTUFOX0hBQ0sgKTsKKyAgICAgIFRXRUFLX1JVTEVTKCBDT1VSSUVSX05FV18yX0hBQ0sgKTsKKyAgICB9CisKKyAgICBpZiAoIHNwaF90ZXN0X3R3ZWFrKCBmYWNlLCBmYW1pbHksIHBwZW0sIHN0eWxlLCBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgQ09NUEFUSUJJTElUWV9NT0RFX1J1bGVzLCBDT01QQVRJQklMSVRZX01PREVfUlVMRVNfU0laRSApICkKKyAgICAgIGxvYWRlci0+ZXhlYy0+ZmFjZS0+c3BoX2NvbXBhdGliaWxpdHlfbW9kZSA9IFRSVUU7CisKKworICAgIGlmICggSVNfSElOVEVEKCBsb2FkZXItPmxvYWRfZmxhZ3MgKSApCisgICAgeworICAgICAgaWYgKCBzcGhfdGVzdF90d2VhayggZmFjZSwgZmFtaWx5LCBwcGVtLCBzdHlsZSwgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgQ09NUEFUSUJMRV9XSURUSFNfUnVsZXMsIENPTVBBVElCTEVfV0lEVEhTX1JVTEVTX1NJWkUgKSApCisgICAgICAgIGxvYWRlci0+ZXhlYy0+Y29tcGF0aWJsZV93aWR0aHMgfD0gVFJVRTsKKyAgICB9CisgIH0KKworI2Vsc2UgLyogIVRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisgIC8qIEFOU0kgQyBkb2Vzbid0IGxpa2UgZW1wdHkgc291cmNlIGZpbGVzICovCisgIHR5cGVkZWYgaW50ICBfdHRfc3VicGl4X2R1bW15OworCisjZW5kaWYgLyogIVRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dHN1YnBpeC5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90cnVldHlwZS90dHN1YnBpeC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MzZjOTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL3R0c3VicGl4LmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHR0c3VicGl4LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUcnVlVHlwZSBTdWJwaXhlbCBIaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMjAxMC0yMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1RUU1VCUElYX0hfXworI2RlZmluZSBfX1RUU1VCUElYX0hfXworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgInR0b2Jqcy5oIgorI2luY2x1ZGUgInR0aW50ZXJwLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworI2lmZGVmIFRUX0NPTkZJR19PUFRJT05fU1VCUElYRUxfSElOVElORworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogSUQgZmxhZ3MgdG8gaWRlbnRpZnkgc3BlY2lhbCBmdW5jdGlvbnMgYXQgRkRFRiBhbmQgcnVudGltZS4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU1BIX0ZERUZfSU5MSU5FX0RFTFRBXzEgICAgICAgMHgwMDAwMDAxCisjZGVmaW5lIFNQSF9GREVGX0lOTElORV9ERUxUQV8yICAgICAgIDB4MDAwMDAwMgorI2RlZmluZSBTUEhfRkRFRl9ESUFHT05BTF9TVFJPS0UgICAgICAweDAwMDAwMDQKKyNkZWZpbmUgU1BIX0ZERUZfVkFDVUZPUk1fUk9VTkRfMSAgICAgMHgwMDAwMDA4CisjZGVmaW5lIFNQSF9GREVGX1RURkFVVE9ISU5UXzEgICAgICAgIDB4MDAwMDAxMAorI2RlZmluZSBTUEhfRkRFRl9TUEFDSU5HXzEgICAgICAgICAgICAweDAwMDAwMjAKKyNkZWZpbmUgU1BIX0ZERUZfU1BBQ0lOR18yICAgICAgICAgICAgMHgwMDAwMDQwCisjZGVmaW5lIFNQSF9GREVGX1RZUEVNQU5fU1RST0tFUyAgICAgIDB4MDAwMDA4MAorI2RlZmluZSBTUEhfRkRFRl9UWVBFTUFOX0RJQUdFTkRDVFJMICAweDAwMDAxMDAKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVHdlYWsgZmxhZ3MgdGhhdCBhcmUgc2V0IGZvciBlYWNoIGdseXBoIGJ5IHRoZSBiZWxvdyBydWxlcy4gICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU1BIX1RXRUFLX0FMTE9XX1hfRE1PVkUgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxCisjZGVmaW5lIFNQSF9UV0VBS19BTFdBWVNfRE9fREVMVEFQICAgICAgICAgICAgICAgIDB4MDAwMDAwMgorI2RlZmluZSBTUEhfVFdFQUtfQUxXQVlTX1NLSVBfREVMVEFQICAgICAgICAgICAgICAweDAwMDAwMDQKKyNkZWZpbmUgU1BIX1RXRUFLX0NPVVJJRVJfTkVXXzJfSEFDSyAgICAgICAgICAgICAgMHgwMDAwMDA4CisjZGVmaW5lIFNQSF9UV0VBS19ERUVNQk9MREVOICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMAorI2RlZmluZSBTUEhfVFdFQUtfRE9fU0hQSVggICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAKKyNkZWZpbmUgU1BIX1RXRUFLX0VNQk9MREVOICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwCisjZGVmaW5lIFNQSF9UV0VBS19NSUFQX0hBQ0sgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MAorI2RlZmluZSBTUEhfVFdFQUtfTk9STUFMX1JPVU5EICAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAKKyNkZWZpbmUgU1BIX1RXRUFLX05PX0FMSUdOUlBfQUZURVJfSVVQICAgICAgICAgICAgMHgwMDAwMjAwCisjZGVmaW5lIFNQSF9UV0VBS19OT19DQUxMX0FGVEVSX0lVUCAgICAgICAgICAgICAgIDB4MDAwMDQwMAorI2RlZmluZSBTUEhfVFdFQUtfTk9fREVMVEFQX0FGVEVSX0lVUCAgICAgICAgICAgICAweDAwMDA4MDAKKyNkZWZpbmUgU1BIX1RXRUFLX1BJWEVMX0hJTlRJTkcgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwCisjZGVmaW5lIFNQSF9UV0VBS19SQVNURVJJWkVSXzM1ICAgICAgICAgICAgICAgICAgIDB4MDAwMjAwMAorI2RlZmluZSBTUEhfVFdFQUtfUk9VTkRfTk9OUElYRUxfWV9NT1ZFUyAgICAgICAgICAweDAwMDQwMDAKKyNkZWZpbmUgU1BIX1RXRUFLX1NLSVBfSVVQICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA4MDAwCisjZGVmaW5lIFNQSF9UV0VBS19TS0lQX05PTlBJWEVMX1lfTU9WRVMgICAgICAgICAgIDB4MDAxMDAwMAorI2RlZmluZSBTUEhfVFdFQUtfU0tJUF9PRkZQSVhFTF9ZX01PVkVTICAgICAgICAgICAweDAwMjAwMDAKKyNkZWZpbmUgU1BIX1RXRUFLX1RJTUVTX05FV19ST01BTl9IQUNLICAgICAgICAgICAgMHgwMDQwMDAwCisjZGVmaW5lIFNQSF9UV0VBS19TS0lQX05PTlBJWEVMX1lfTU9WRVNfREVMVEFQICAgIDB4MDA4MDAwMAorCisKKyAgRlRfTE9DQUwoIEZUX0Jvb2wgKQorICBzcGhfdGVzdF90d2VhayggVFRfRmFjZSAgICAgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICAgICAgZmFtaWx5LAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgICAgIHBwZW0sCisgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICAgICAgc3R5bGUsCisgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsCisgICAgICAgICAgICAgICAgICBjb25zdCBTUEhfVHdlYWtSdWxlKiAgcnVsZSwKKyAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgICAgICAgICBudW1fcnVsZXMgKTsKKworICBGVF9MT0NBTCggRlRfVUludCApCisgIHNwaF90ZXN0X3R3ZWFrX3hfc2NhbGluZyggVFRfRmFjZSAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICBmYW1pbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICAgICAgcHBlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGVF9TdHJpbmcqICBzdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgICAgICBnbHlwaF9pbmRleCApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgc3BoX3NldF90d2Vha3MoIFRUX0xvYWRlciAgbG9hZGVyLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBnbHlwaF9pbmRleCApOworCisKKyAgLyogVGhlc2UgbWFjcm9zIGFyZSBkZWZpbmVkIGFic2VudCBhIG1ldGhvZCBmb3Igc2V0dGluZyB0aGVtICovCisjZGVmaW5lIFNQSF9PUFRJT05fQklUTUFQX1dJRFRIUyAgICAgICAgICAgRkFMU0UKKyNkZWZpbmUgU1BIX09QVElPTl9TRVRfU1VCUElYRUwgICAgICAgICAgICBUUlVFCisjZGVmaW5lIFNQSF9PUFRJT05fU0VUX0dSQVlTQ0FMRSAgICAgICAgICAgRkFMU0UKKyNkZWZpbmUgU1BIX09QVElPTl9TRVRfQ09NUEFUSUJMRV9XSURUSFMgICBGQUxTRQorI2RlZmluZSBTUEhfT1BUSU9OX1NFVF9SQVNURVJJWkVSX1ZFUlNJT04gIDM4CisKKyNlbmRpZiAvKiBUVF9DT05GSUdfT1BUSU9OX1NVQlBJWEVMX0hJTlRJTkcgKi8KKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1RUU1VCUElYX0hfXyAqLworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvSmFtZmlsZSBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvSmFtZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTM2NmJhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS9KYW1maWxlCkBAIC0wLDAgKzEsMjkgQEAKKyMgRnJlZVR5cGUgMiBzcmMvdHlwZTEgSmFtZmlsZQorIworIyBDb3B5cmlnaHQgMjAwMSBieQorIyBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCisjIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKKyMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKKyMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKKyMgZnVsbHkuCisKK1N1YkRpciAgRlQyX1RPUCAkKEZUMl9TUkNfRElSKSB0eXBlMSA7CisKK3sKKyAgbG9jYWwgIF9zb3VyY2VzIDsKKworICBpZiAkKEZUMl9NVUxUSSkKKyAgeworICAgIF9zb3VyY2VzID0gdDFhZm0gdDFkcml2ZXIgdDFvYmpzIHQxbG9hZCB0MWdsb2FkIHQxcGFyc2UgOworICB9CisgIGVsc2UKKyAgeworICAgIF9zb3VyY2VzID0gdHlwZTEgOworICB9CisKKyAgTGlicmFyeSAgJChGVDJfTElCKSA6ICQoX3NvdXJjZXMpLmMgOworfQorCisjIGVuZCBvZiBzcmMvdHlwZTEgSmFtZmlsZQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS9meGZ0X3R5cGUxLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL2Z4ZnRfdHlwZTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGM4NWUxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS9meGZ0X3R5cGUxLmMKQEAgLTAsMCArMSwzNyBAQAorI2lmICFkZWZpbmVkKF9GWEZUX1ZFUlNJT05fKSB8fCBfRlhGVF9WRVJTSU9OXyA9PSAyNTAxCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0eXBlMS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJlZVR5cGUgVHlwZSAxIGRyaXZlciBjb21wb25lbnQgKGJvZHkgb25seSkuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNkZWZpbmUgRlRfTUFLRV9PUFRJT05fU0lOR0xFX09CSkVDVAorI2RlZmluZSBGVDJfQlVJTERfTElCUkFSWQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgInQxcGFyc2UuYyIKKyNpbmNsdWRlICJ0MWxvYWQuYyIKKyNpbmNsdWRlICJ0MW9ianMuYyIKKyNpbmNsdWRlICJ0MWRyaXZlci5jIgorI2luY2x1ZGUgInQxZ2xvYWQuYyIKKworI2lmbmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX0FGTQorI2luY2x1ZGUgInQxYWZtLmMiCisjZW5kaWYKKworCisvKiBFTkQgKi8KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL21vZHVsZS5tayBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvbW9kdWxlLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZTAyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL21vZHVsZS5tawpAQCAtMCwwICsxLDIzIEBACisjCisjIEZyZWVUeXBlIDIgVHlwZTEgbW9kdWxlIGRlZmluaXRpb24KKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDAsIDIwMDYgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKK0ZUTU9EVUxFX0hfQ09NTUFORFMgKz0gVFlQRTFfRFJJVkVSCisKK2RlZmluZSBUWVBFMV9EUklWRVIKKyQoT1BFTl9EUklWRVIpIEZUX0RyaXZlcl9DbGFzc1JlYywgdDFfZHJpdmVyX2NsYXNzICQoQ0xPU0VfRFJJVkVSKQorJChFQ0hPX0RSSVZFUil0eXBlMSAgICAgJChFQ0hPX0RSSVZFUl9ERVNDKVBvc3RzY3JpcHQgZm9udCBmaWxlcyB3aXRoIGV4dGVuc2lvbiAqLnBmYSBvciAqLnBmYiQoRUNIT19EUklWRVJfRE9ORSkKK2VuZGVmCisKKyMgRU9GCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3J1bGVzLm1rIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS9ydWxlcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTA4N2IwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS9ydWxlcy5tawpAQCAtMCwwICsxLDczIEBACisjCisjIEZyZWVUeXBlIDIgVHlwZTEgZHJpdmVyIGNvbmZpZ3VyYXRpb24gcnVsZXMKKyMKKworCisjIENvcHlyaWdodCAxOTk2LTIwMDAsIDIwMDEsIDIwMDMgYnkKKyMgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAorIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCisjIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CisjIGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CisjIGZ1bGx5LgorCisKKyMgVHlwZTEgZHJpdmVyIGRpcmVjdG9yeQorIworVDFfRElSIDo9ICQoU1JDX0RJUikvdHlwZTEKKworCisjIGNvbXBpbGF0aW9uIGZsYWdzIGZvciB0aGUgZHJpdmVyCisjCitUMV9DT01QSUxFIDo9ICQoRlRfQ09NUElMRSkgJEkkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCQoVDFfRElSKSkKKworCisjIFR5cGUxIGRyaXZlciBzb3VyY2VzIChpLmUuLCBDIGZpbGVzKQorIworVDFfRFJWX1NSQyA6PSAkKFQxX0RJUikvdDFwYXJzZS5jICBcCisgICAgICAgICAgICAgICQoVDFfRElSKS90MWxvYWQuYyAgIFwKKyAgICAgICAgICAgICAgJChUMV9ESVIpL3QxZHJpdmVyLmMgXAorICAgICAgICAgICAgICAkKFQxX0RJUikvdDFhZm0uYyAgICBcCisgICAgICAgICAgICAgICQoVDFfRElSKS90MWdsb2FkLmMgIFwKKyAgICAgICAgICAgICAgJChUMV9ESVIpL3Qxb2Jqcy5jCisKKyMgVHlwZTEgZHJpdmVyIGhlYWRlcnMKKyMKK1QxX0RSVl9IIDo9ICQoVDFfRFJWX1NSQzolLmM9JS5oKSBcCisgICAgICAgICAgICAkKFQxX0RJUikvdDF0b2tlbnMuaCAgXAorICAgICAgICAgICAgJChUMV9ESVIpL3QxZXJyb3JzLmgKKworCisjIFR5cGUxIGRyaXZlciBvYmplY3QocykKKyMKKyMgICBUMV9EUlZfT0JKX00gaXMgdXNlZCBkdXJpbmcgYG11bHRpJyBidWlsZHMKKyMgICBUMV9EUlZfT0JKX1MgaXMgdXNlZCBkdXJpbmcgYHNpbmdsZScgYnVpbGRzCisjCitUMV9EUlZfT0JKX00gOj0gJChUMV9EUlZfU1JDOiQoVDFfRElSKS8lLmM9JChPQkpfRElSKS8lLiRPKQorVDFfRFJWX09CSl9TIDo9ICQoT0JKX0RJUikvdHlwZTEuJE8KKworIyBUeXBlMSBkcml2ZXIgc291cmNlIGZpbGUgZm9yIHNpbmdsZSBidWlsZAorIworVDFfRFJWX1NSQ19TIDo9ICQoVDFfRElSKS90eXBlMS5jCisKKworIyBUeXBlMSBkcml2ZXIgLSBzaW5nbGUgb2JqZWN0CisjCiskKFQxX0RSVl9PQkpfUyk6ICQoVDFfRFJWX1NSQ19TKSAkKFQxX0RSVl9TUkMpICQoRlJFRVRZUEVfSCkgJChUMV9EUlZfSCkKKwkkKFQxX0NPTVBJTEUpICRUJChzdWJzdCAvLCQoQ09NUElMRVJfU0VQKSwkQCAkKFQxX0RSVl9TUkNfUykpCisKKworIyBUeXBlMSBkcml2ZXIgLSBtdWx0aXBsZSBvYmplY3RzCisjCiskKE9CSl9ESVIpLyUuJE86ICQoVDFfRElSKS8lLmMgJChGUkVFVFlQRV9IKSAkKFQxX0RSVl9IKQorCSQoVDFfQ09NUElMRSkgJFQkKHN1YnN0IC8sJChDT01QSUxFUl9TRVApLCRAICQ8KQorCisKKyMgdXBkYXRlIG1haW4gZHJpdmVyIG9iamVjdCBsaXN0cworIworRFJWX09CSlNfUyArPSAkKFQxX0RSVl9PQkpfUykKK0RSVl9PQkpTX00gKz0gJChUMV9EUlZfT0JKX00pCisKKworIyBFT0YKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFhZm0uYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFhZm0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTkyMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWFmbS5jCkBAIC0wLDAgKzEsMzk2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MWFmbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQUZNIHN1cHBvcnQgZm9yIFR5cGUgMSBmb250cyAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAxMSwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAidDFhZm0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIgorI2luY2x1ZGUgInQxZXJyb3JzLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV90MWFmbQorCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgVDFfRG9uZV9NZXRyaWNzKCBGVF9NZW1vcnkgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICBBRk1fRm9udEluZm8gIGZpICkKKyAgeworICAgIEZUX0ZSRUUoIGZpLT5LZXJuUGFpcnMgKTsKKyAgICBmaS0+TnVtS2VyblBhaXIgPSAwOworCisgICAgRlRfRlJFRSggZmktPlRyYWNrS2VybnMgKTsKKyAgICBmaS0+TnVtVHJhY2tLZXJuID0gMDsKKworICAgIEZUX0ZSRUUoIGZpICk7CisgIH0KKworCisgIC8qIHJlYWQgYSBnbHlwaCBuYW1lIGFuZCByZXR1cm4gdGhlIGVxdWl2YWxlbnQgZ2x5cGggaW5kZXggKi8KKyAgc3RhdGljIEZUX0ludAorICB0MV9nZXRfaW5kZXgoIGNvbnN0IGNoYXIqICBuYW1lLAorICAgICAgICAgICAgICAgIEZUX09mZnNldCAgICBsZW4sCisgICAgICAgICAgICAgICAgdm9pZCogICAgICAgIHVzZXJfZGF0YSApCisgIHsKKyAgICBUMV9Gb250ICB0eXBlMSA9IChUMV9Gb250KXVzZXJfZGF0YTsKKyAgICBGVF9JbnQgICBuOworCisKKyAgICAvKiBQUyBzdHJpbmcvbmFtZSBsZW5ndGggbXVzdCBiZSA8IDE2LWJpdCAqLworICAgIGlmICggbGVuID4gMHhGRkZGVSApCisgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoIG4gPSAwOyBuIDwgdHlwZTEtPm51bV9nbHlwaHM7IG4rKyApCisgICAgeworICAgICAgY2hhciogIGduYW1lID0gKGNoYXIqKXR5cGUxLT5nbHlwaF9uYW1lc1tuXTsKKworCisgICAgICBpZiAoIGduYW1lICYmIGduYW1lWzBdID09IG5hbWVbMF0gICAgICAgICYmCisgICAgICAgICAgIGZ0X3N0cmxlbiggZ25hbWUgKSA9PSBsZW4gICAgICAgICAgICYmCisgICAgICAgICAgIGZ0X3N0cm5jbXAoIGduYW1lLCBuYW1lLCBsZW4gKSA9PSAwICkKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorCisgICAgcmV0dXJuIDA7CisgIH0KKworCisjdW5kZWYgIEtFUk5fSU5ERVgKKyNkZWZpbmUgS0VSTl9JTkRFWCggZzEsIGcyICkgICggKCAoRlRfVUxvbmcpKGcxKSA8PCAxNiApIHwgKGcyKSApCisKKworICAvKiBjb21wYXJlIHR3byBrZXJuaW5nIHBhaXJzICovCisgIEZUX0NBTExCQUNLX0RFRiggaW50ICkKKyAgY29tcGFyZV9rZXJuX3BhaXJzKCBjb25zdCB2b2lkKiAgYSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiAgYiApCisgIHsKKyAgICBBRk1fS2VyblBhaXIgIHBhaXIxID0gKEFGTV9LZXJuUGFpcilhOworICAgIEFGTV9LZXJuUGFpciAgcGFpcjIgPSAoQUZNX0tlcm5QYWlyKWI7CisKKyAgICBGVF9VTG9uZyAgaW5kZXgxID0gS0VSTl9JTkRFWCggcGFpcjEtPmluZGV4MSwgcGFpcjEtPmluZGV4MiApOworICAgIEZUX1VMb25nICBpbmRleDIgPSBLRVJOX0lOREVYKCBwYWlyMi0+aW5kZXgxLCBwYWlyMi0+aW5kZXgyICk7CisKKworICAgIGlmICggaW5kZXgxID4gaW5kZXgyICkKKyAgICAgIHJldHVybiAxOworICAgIGVsc2UgaWYgKCBpbmRleDEgPCBpbmRleDIgKQorICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgIHJldHVybiAwOworICB9CisKKworICAvKiBwYXJzZSBhIFBGTSBmaWxlIC0tIGZvciBub3csIG9ubHkgcmVhZCB0aGUga2VybmluZyBwYWlycyAqLworICBzdGF0aWMgRlRfRXJyb3IKKyAgVDFfUmVhZF9QRk0oIEZUX0ZhY2UgICAgICAgdDFfZmFjZSwKKyAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgQUZNX0ZvbnRJbmZvICBmaSApCisgIHsKKyAgICBGVF9FcnJvciAgICAgIGVycm9yICA9IEZUX0Vycl9PazsKKyAgICBGVF9NZW1vcnkgICAgIG1lbW9yeSA9IHN0cmVhbS0+bWVtb3J5OworICAgIEZUX0J5dGUqICAgICAgc3RhcnQ7CisgICAgRlRfQnl0ZSogICAgICBsaW1pdDsKKyAgICBGVF9CeXRlKiAgICAgIHA7CisgICAgQUZNX0tlcm5QYWlyICBrcDsKKyAgICBGVF9JbnQgICAgICAgIHdpZHRoX3RhYmxlX2xlbmd0aDsKKyAgICBGVF9DaGFyTWFwICAgIG9sZGNoYXJtYXA7CisgICAgRlRfQ2hhck1hcCAgICBjaGFybWFwOworICAgIEZUX0ludCAgICAgICAgbjsKKworCisgICAgc3RhcnQgPSAoRlRfQnl0ZSopc3RyZWFtLT5jdXJzb3I7CisgICAgbGltaXQgPSAoRlRfQnl0ZSopc3RyZWFtLT5saW1pdDsKKworICAgIC8qIEZpZ3VyZSBvdXQgaG93IGxvbmcgdGhlIHdpZHRoIHRhYmxlIGlzLiAgICAgICAgICAqLworICAgIC8qIFRoaXMgaW5mbyBpcyBhIGxpdHRsZS1lbmRpYW4gc2hvcnQgYXQgb2Zmc2V0IDk5LiAqLworICAgIHAgPSBzdGFydCArIDk5OworICAgIGlmICggcCArIDIgPiBsaW1pdCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKyAgICB3aWR0aF90YWJsZV9sZW5ndGggPSBGVF9QRUVLX1VTSE9SVF9MRSggcCApOworCisgICAgcCArPSAxOCArIHdpZHRoX3RhYmxlX2xlbmd0aDsKKyAgICBpZiAoIHAgKyAweDEyID4gbGltaXQgfHwgRlRfUEVFS19VU0hPUlRfTEUoIHAgKSA8IDB4MTIgKQorICAgICAgLyogZXh0ZW5zaW9uIHRhYmxlIGlzIHByb2JhYmx5IG9wdGlvbmFsICovCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBLZXJuaW5nIG9mZnNldCBpcyAxNCBieXRlcyBmcm9tIHN0YXJ0IG9mIGV4dGVuc2lvbnMgdGFibGUuICovCisgICAgcCArPSAxNDsKKyAgICBwID0gc3RhcnQgKyBGVF9QRUVLX1VMT05HX0xFKCBwICk7CisKKyAgICBpZiAoIHAgPT0gc3RhcnQgKQorICAgICAgLyogemVybyBvZmZzZXQgbWVhbnMgbm8gdGFibGUgKi8KKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGlmICggcCArIDIgPiBsaW1pdCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIGZpLT5OdW1LZXJuUGFpciA9IEZUX1BFRUtfVVNIT1JUX0xFKCBwICk7CisgICAgcCArPSAyOworICAgIGlmICggcCArIDQgKiBmaS0+TnVtS2VyblBhaXIgPiBsaW1pdCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIEFjdHVhbGx5LCBrZXJuaW5nIHBhaXJzIGFyZSBzaW1wbHkgb3B0aW9uYWwhICovCisgICAgaWYgKCBmaS0+TnVtS2VyblBhaXIgPT0gMCApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBhbGxvY2F0ZSB0aGUgcGFpcnMgKi8KKyAgICBpZiAoIEZUX1FORVdfQVJSQVkoIGZpLT5LZXJuUGFpcnMsIGZpLT5OdW1LZXJuUGFpciApICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIG5vdywgcmVhZCBlYWNoIGtlcm4gcGFpciAqLworICAgIGtwICAgICAgICAgICAgID0gZmktPktlcm5QYWlyczsKKyAgICBsaW1pdCAgICAgICAgICA9IHAgKyA0ICogZmktPk51bUtlcm5QYWlyOworCisgICAgLyogUEZNIGtlcm5pbmcgZGF0YSBhcmUgc3RvcmVkIGJ5IGVuY29kaW5nIHJhdGhlciB0aGFuIGdseXBoIGluZGV4LCAqLworICAgIC8qIHNvIGZpbmQgdGhlIFBvc3RTY3JpcHQgY2hhcm1hcCBvZiB0aGlzIGZvbnQgYW5kIGluc3RhbGwgaXQgICAgICAgKi8KKyAgICAvKiB0ZW1wb3JhcmlseS4gIElmIHdlIGZpbmQgbm8gUG9zdFNjcmlwdCBjaGFybWFwLCB0aGVuIGp1c3QgdXNlICAgICovCisgICAgLyogdGhlIGRlZmF1bHQgYW5kIGhvcGUgaXQgaXMgdGhlIHJpZ2h0IG9uZS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIG9sZGNoYXJtYXAgPSB0MV9mYWNlLT5jaGFybWFwOworICAgIGNoYXJtYXAgICAgPSBOVUxMOworCisgICAgZm9yICggbiA9IDA7IG4gPCB0MV9mYWNlLT5udW1fY2hhcm1hcHM7IG4rKyApCisgICAgeworICAgICAgY2hhcm1hcCA9IHQxX2ZhY2UtPmNoYXJtYXBzW25dOworICAgICAgLyogY2hlY2sgYWdhaW5zdCBQb3N0U2NyaXB0IHBzZXVkbyBwbGF0Zm9ybSAqLworICAgICAgaWYgKCBjaGFybWFwLT5wbGF0Zm9ybV9pZCA9PSA3ICkKKyAgICAgIHsKKyAgICAgICAgZXJyb3IgPSBGVF9TZXRfQ2hhcm1hcCggdDFfZmFjZSwgY2hhcm1hcCApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIC8qIEtlcm5pbmcgaW5mbyBpcyBzdG9yZWQgYXM6ICAgICAgICAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgIGVuY29kaW5nIG9mIGZpcnN0IGdseXBoICgxIGJ5dGUpICAgICAqLworICAgIC8qICAgZW5jb2Rpbmcgb2Ygc2Vjb25kIGdseXBoICgxIGJ5dGUpICAgICovCisgICAgLyogICBvZmZzZXQgKGxpdHRsZS1lbmRpYW4gc2hvcnQpICAgICAgICAgKi8KKyAgICBmb3IgKCA7IHAgPCBsaW1pdCA7IHAgKz0gNCApCisgICAgeworICAgICAga3AtPmluZGV4MSA9IEZUX0dldF9DaGFyX0luZGV4KCB0MV9mYWNlLCBwWzBdICk7CisgICAgICBrcC0+aW5kZXgyID0gRlRfR2V0X0NoYXJfSW5kZXgoIHQxX2ZhY2UsIHBbMV0gKTsKKworICAgICAga3AtPnggPSAoRlRfSW50KUZUX1BFRUtfU0hPUlRfTEUocCArIDIpOworICAgICAga3AtPnkgPSAwOworCisgICAgICBrcCsrOworICAgIH0KKworICAgIGlmICggb2xkY2hhcm1hcCAhPSBOVUxMICkKKyAgICAgIGVycm9yID0gRlRfU2V0X0NoYXJtYXAoIHQxX2ZhY2UsIG9sZGNoYXJtYXAgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIG5vdywgc29ydCB0aGUga2VybiBwYWlycyBhY2NvcmRpbmcgdG8gdGhlaXIgZ2x5cGggaW5kaWNlcyAqLworICAgIGZ0X3Fzb3J0KCBmaS0+S2VyblBhaXJzLCBmaS0+TnVtS2VyblBhaXIsIHNpemVvZiAoIEFGTV9LZXJuUGFpclJlYyApLAorICAgICAgICAgICAgICBjb21wYXJlX2tlcm5fcGFpcnMgKTsKKworICBFeGl0OgorICAgIGlmICggZXJyb3IgKQorICAgIHsKKyAgICAgIEZUX0ZSRUUoIGZpLT5LZXJuUGFpcnMgKTsKKyAgICAgIGZpLT5OdW1LZXJuUGFpciA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKiBwYXJzZSBhIG1ldHJpY3MgZmlsZSAtLSBlaXRoZXIgQUZNIG9yIFBGTSBkZXBlbmRpbmcgb24gd2hhdCAqLworICAvKiBpdCB0dXJucyBvdXQgdG8gYmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVDFfUmVhZF9NZXRyaWNzKCBGVF9GYWNlICAgIHQxX2ZhY2UsCisgICAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICBzdHJlYW0gKQorICB7CisgICAgUFNBdXhfU2VydmljZSAgcHNhdXg7CisgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5ICA9IHN0cmVhbS0+bWVtb3J5OworICAgIEFGTV9QYXJzZXJSZWMgIHBhcnNlcjsKKyAgICBBRk1fRm9udEluZm8gICBmaSAgICAgID0gTlVMTDsKKyAgICBGVF9FcnJvciAgICAgICBlcnJvciAgID0gRlRfRVJSKCBVbmtub3duX0ZpbGVfRm9ybWF0ICk7CisgICAgVDFfRm9udCAgICAgICAgdDFfZm9udCA9ICYoIChUMV9GYWNlKXQxX2ZhY2UgKS0+dHlwZTE7CisKKworICAgIGlmICggRlRfTkVXKCBmaSApICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICBGVF9GUkFNRV9FTlRFUiggc3RyZWFtLT5zaXplICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgZmktPkZvbnRCQm94ICA9IHQxX2ZvbnQtPmZvbnRfYmJveDsKKyAgICBmaS0+QXNjZW5kZXIgID0gdDFfZm9udC0+Zm9udF9iYm94LnlNYXg7CisgICAgZmktPkRlc2NlbmRlciA9IHQxX2ZvbnQtPmZvbnRfYmJveC55TWluOworCisgICAgcHNhdXggPSAoUFNBdXhfU2VydmljZSkoIChUMV9GYWNlKXQxX2ZhY2UgKS0+cHNhdXg7CisgICAgaWYgKCBwc2F1eC0+YWZtX3BhcnNlcl9mdW5jcyApCisgICAgeworICAgICAgZXJyb3IgPSBwc2F1eC0+YWZtX3BhcnNlcl9mdW5jcy0+aW5pdCggJnBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+bWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5jdXJzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPmxpbWl0ICk7CisKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgIHsKKyAgICAgICAgcGFyc2VyLkZvbnRJbmZvICA9IGZpOworICAgICAgICBwYXJzZXIuZ2V0X2luZGV4ID0gdDFfZ2V0X2luZGV4OworICAgICAgICBwYXJzZXIudXNlcl9kYXRhID0gdDFfZm9udDsKKworICAgICAgICBlcnJvciA9IHBzYXV4LT5hZm1fcGFyc2VyX2Z1bmNzLT5wYXJzZSggJnBhcnNlciApOworICAgICAgICBwc2F1eC0+YWZtX3BhcnNlcl9mdW5jcy0+ZG9uZSggJnBhcnNlciApOworICAgICAgfQorICAgIH0KKworICAgIGlmICggRlRfRVJSX0VRKCBlcnJvciwgVW5rbm93bl9GaWxlX0Zvcm1hdCApICkKKyAgICB7CisgICAgICBGVF9CeXRlKiAgc3RhcnQgPSBzdHJlYW0tPmN1cnNvcjsKKworCisgICAgICAvKiBNUyBXaW5kb3dzIGFsbG93cyB2ZXJzaW9ucyB1cCB0byAweDNGRiB3aXRob3V0IGNvbXBsYWluaW5nICovCisgICAgICBpZiAoIHN0cmVhbS0+c2l6ZSA+IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICBzdGFydFsxXSA8IDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgRlRfUEVFS19VTE9OR19MRSggc3RhcnQgKyAyICkgPT0gc3RyZWFtLT5zaXplICkKKyAgICAgICAgZXJyb3IgPSBUMV9SZWFkX1BGTSggdDFfZmFjZSwgc3RyZWFtLCBmaSApOworICAgIH0KKworICAgIGlmICggIWVycm9yICkKKyAgICB7CisgICAgICB0MV9mb250LT5mb250X2Jib3ggPSBmaS0+Rm9udEJCb3g7CisKKyAgICAgIHQxX2ZhY2UtPmJib3gueE1pbiA9ICAgZmktPkZvbnRCQm94LnhNaW4gICAgICAgICAgICA+PiAxNjsKKyAgICAgIHQxX2ZhY2UtPmJib3gueU1pbiA9ICAgZmktPkZvbnRCQm94LnlNaW4gICAgICAgICAgICA+PiAxNjsKKyAgICAgIC8qIG5vIGBVJyBzdWZmaXggaGVyZSB0byAweEZGRkYhICovCisgICAgICB0MV9mYWNlLT5iYm94LnhNYXggPSAoIGZpLT5Gb250QkJveC54TWF4ICsgMHhGRkZGICkgPj4gMTY7CisgICAgICB0MV9mYWNlLT5iYm94LnlNYXggPSAoIGZpLT5Gb250QkJveC55TWF4ICsgMHhGRkZGICkgPj4gMTY7CisKKyAgICAgIC8qIG5vIGBVJyBzdWZmaXggaGVyZSB0byAweDgwMDAhICovCisgICAgICB0MV9mYWNlLT5hc2NlbmRlciAgPSAoRlRfU2hvcnQpKCAoIGZpLT5Bc2NlbmRlciAgKyAweDgwMDAgKSA+PiAxNiApOworICAgICAgdDFfZmFjZS0+ZGVzY2VuZGVyID0gKEZUX1Nob3J0KSggKCBmaS0+RGVzY2VuZGVyICsgMHg4MDAwICkgPj4gMTYgKTsKKworICAgICAgaWYgKCBmaS0+TnVtS2VyblBhaXIgKQorICAgICAgeworICAgICAgICB0MV9mYWNlLT5mYWNlX2ZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19LRVJOSU5HOworICAgICAgICAoIChUMV9GYWNlKXQxX2ZhY2UgKS0+YWZtX2RhdGEgPSBmaTsKKyAgICAgICAgZmkgPSBOVUxMOworICAgICAgfQorICAgIH0KKworICAgIEZUX0ZSQU1FX0VYSVQoKTsKKworICBFeGl0OgorICAgIGlmICggZmkgIT0gTlVMTCApCisgICAgICBUMV9Eb25lX01ldHJpY3MoIG1lbW9yeSwgZmkgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyogZmluZCB0aGUga2VybmluZyBmb3IgYSBnaXZlbiBnbHlwaCBwYWlyICovCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIFQxX0dldF9LZXJuaW5nKCBBRk1fRm9udEluZm8gIGZpLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaDEsCisgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICAgIGdseXBoMiwKKyAgICAgICAgICAgICAgICAgIEZUX1ZlY3RvciogICAga2VybmluZyApCisgIHsKKyAgICBBRk1fS2VyblBhaXIgIG1pbiwgbWlkLCBtYXg7CisgICAgRlRfVUxvbmcgICAgICBpZHggPSBLRVJOX0lOREVYKCBnbHlwaDEsIGdseXBoMiApOworCisKKyAgICAvKiBzaW1wbGUgYmluYXJ5IHNlYXJjaCAqLworICAgIG1pbiA9IGZpLT5LZXJuUGFpcnM7CisgICAgbWF4ID0gbWluICsgZmktPk51bUtlcm5QYWlyIC0gMTsKKworICAgIHdoaWxlICggbWluIDw9IG1heCApCisgICAgeworICAgICAgRlRfVUxvbmcgIG1pZGk7CisKKworICAgICAgbWlkICA9IG1pbiArICggbWF4IC0gbWluICkgLyAyOworICAgICAgbWlkaSA9IEtFUk5fSU5ERVgoIG1pZC0+aW5kZXgxLCBtaWQtPmluZGV4MiApOworCisgICAgICBpZiAoIG1pZGkgPT0gaWR4ICkKKyAgICAgIHsKKyAgICAgICAga2VybmluZy0+eCA9IG1pZC0+eDsKKyAgICAgICAga2VybmluZy0+eSA9IG1pZC0+eTsKKworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIGlmICggbWlkaSA8IGlkeCApCisgICAgICAgIG1pbiA9IG1pZCArIDE7CisgICAgICBlbHNlCisgICAgICAgIG1heCA9IG1pZCAtIDE7CisgICAgfQorCisgICAga2VybmluZy0+eCA9IDA7CisgICAga2VybmluZy0+eSA9IDA7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBUMV9HZXRfVHJhY2tfS2VybmluZyggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICBwdHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGRlZ3JlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAga2VybmluZyApCisgIHsKKyAgICBBRk1fRm9udEluZm8gIGZpID0gKEFGTV9Gb250SW5mbykoIChUMV9GYWNlKWZhY2UgKS0+YWZtX2RhdGE7CisgICAgRlRfSW50ICAgICAgICBpOworCisKKyAgICBpZiAoICFmaSApCisgICAgICByZXR1cm4gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgZmktPk51bVRyYWNrS2VybjsgaSsrICkKKyAgICB7CisgICAgICBBRk1fVHJhY2tLZXJuICB0ayA9IGZpLT5UcmFja0tlcm5zICsgaTsKKworCisgICAgICBpZiAoIHRrLT5kZWdyZWUgIT0gZGVncmVlICkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGlmICggcHRzaXplIDwgdGstPm1pbl9wdHNpemUgKQorICAgICAgICAqa2VybmluZyA9IHRrLT5taW5fa2VybjsKKyAgICAgIGVsc2UgaWYgKCBwdHNpemUgPiB0ay0+bWF4X3B0c2l6ZSApCisgICAgICAgICprZXJuaW5nID0gdGstPm1heF9rZXJuOworICAgICAgZWxzZQorICAgICAgeworICAgICAgICAqa2VybmluZyA9IEZUX011bERpdiggcHRzaXplIC0gdGstPm1pbl9wdHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ay0+bWF4X2tlcm4gLSB0ay0+bWluX2tlcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ay0+bWF4X3B0c2l6ZSAtIHRrLT5taW5fcHRzaXplICkgKworICAgICAgICAgICAgICAgICAgIHRrLT5taW5fa2VybjsKKyAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3QxYWZtLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3QxYWZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBjM2FhNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFhZm0uaApAQCAtMCwwICsxLDU0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MWFmbS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgQUZNIHN1cHBvcnQgZm9yIFR5cGUgMSBmb250cyAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UMUFGTV9IX18KKyNkZWZpbmUgX19UMUFGTV9IX18KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJ0MW9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCIKKworRlRfQkVHSU5fSEVBREVSCisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUMV9SZWFkX01ldHJpY3MoIEZUX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9TdHJlYW0gIHN0cmVhbSApOworCisgIEZUX0xPQ0FMKCB2b2lkICkKKyAgVDFfRG9uZV9NZXRyaWNzKCBGVF9NZW1vcnkgICAgIG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICBBRk1fRm9udEluZm8gIGZpICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBUMV9HZXRfS2VybmluZyggQUZNX0ZvbnRJbmZvICBmaSwKKyAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgZ2x5cGgxLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaDIsCisgICAgICAgICAgICAgICAgICBGVF9WZWN0b3IqICAgIGtlcm5pbmcgKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUMV9HZXRfVHJhY2tfS2VybmluZyggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQgICBwdHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBGVF9JbnQgICAgIGRlZ3JlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAga2VybmluZyApOworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1QxQUZNX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWRyaXZlci5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWRyaXZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODU4NjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3QxZHJpdmVyLmMKQEAgLTAsMCArMSw3MjYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHQxZHJpdmVyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUeXBlIDEgZHJpdmVyIGludGVyZmFjZSAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDA0LCAyMDA2LCAyMDA3LCAyMDA5LCAyMDExLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICJ0MWRyaXZlci5oIgorI2luY2x1ZGUgInQxZ2xvYWQuaCIKKyNpbmNsdWRlICJ0MWxvYWQuaCIKKworI2luY2x1ZGUgInQxZXJyb3JzLmgiCisKKyNpZm5kZWYgVDFfQ09ORklHX09QVElPTl9OT19BRk0KKyNpbmNsdWRlICJ0MWFmbS5oIgorI2VuZGlmCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2bW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z2xkaWN0LmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnhmODZubS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwb3N0bm0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNjbWFwLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzaW5mby5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZrZXJuLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV90MWRyaXZlcgorCisgLyoKKyAgKiAgR0xZUEggRElDVCBTRVJWSUNFCisgICoKKyAgKi8KKworICBzdGF0aWMgRlRfRXJyb3IKKyAgdDFfZ2V0X2dseXBoX25hbWUoIFQxX0ZhY2UgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1BvaW50ZXIgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGJ1ZmZlcl9tYXggKQorICB7CisgICAgRlRfU1RSQ1BZTiggYnVmZmVyLCBmYWNlLT50eXBlMS5nbHlwaF9uYW1lc1tnbHlwaF9pbmRleF0sIGJ1ZmZlcl9tYXggKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIHN0YXRpYyBGVF9VSW50CisgIHQxX2dldF9uYW1lX2luZGV4KCBUMV9GYWNlICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfU3RyaW5nKiAgZ2x5cGhfbmFtZSApCisgIHsKKyAgICBGVF9JbnQgIGk7CisKKworICAgIGZvciAoIGkgPSAwOyBpIDwgZmFjZS0+dHlwZTEubnVtX2dseXBoczsgaSsrICkKKyAgICB7CisgICAgICBGVF9TdHJpbmcqICBnbmFtZSA9IGZhY2UtPnR5cGUxLmdseXBoX25hbWVzW2ldOworCisKKyAgICAgIGlmICggIWZ0X3N0cmNtcCggZ2x5cGhfbmFtZSwgZ25hbWUgKSApCisgICAgICAgIHJldHVybiAoRlRfVUludClpOworICAgIH0KKworICAgIHJldHVybiAwOworICB9CisKKworICBzdGF0aWMgY29uc3QgRlRfU2VydmljZV9HbHlwaERpY3RSZWMgIHQxX3NlcnZpY2VfZ2x5cGhfZGljdCA9CisgIHsKKyAgICAoRlRfR2x5cGhEaWN0X0dldE5hbWVGdW5jKSAgdDFfZ2V0X2dseXBoX25hbWUsCisgICAgKEZUX0dseXBoRGljdF9OYW1lSW5kZXhGdW5jKXQxX2dldF9uYW1lX2luZGV4CisgIH07CisKKworICAvKgorICAgKiAgUE9TVFNDUklQVCBOQU1FIFNFUlZJQ0UKKyAgICoKKyAgICovCisKKyAgc3RhdGljIGNvbnN0IGNoYXIqCisgIHQxX2dldF9wc19uYW1lKCBUMV9GYWNlICBmYWNlICkKKyAgeworICAgIHJldHVybiAoY29uc3QgY2hhciopIGZhY2UtPnR5cGUxLmZvbnRfbmFtZTsKKyAgfQorCisKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfUHNGb250TmFtZVJlYyAgdDFfc2VydmljZV9wc19uYW1lID0KKyAgeworICAgIChGVF9Qc05hbWVfR2V0RnVuYyl0MV9nZXRfcHNfbmFtZQorICB9OworCisKKyAgLyoKKyAgICogIE1VTFRJUExFIE1BU1RFUlMgU0VSVklDRQorICAgKgorICAgKi8KKworI2lmbmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlQKKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfTXVsdGlNYXN0ZXJzUmVjICB0MV9zZXJ2aWNlX211bHRpX21hc3RlcnMgPQorICB7CisgICAgKEZUX0dldF9NTV9GdW5jKSAgICAgICAgVDFfR2V0X011bHRpX01hc3RlciwKKyAgICAoRlRfU2V0X01NX0Rlc2lnbl9GdW5jKSBUMV9TZXRfTU1fRGVzaWduLAorICAgIChGVF9TZXRfTU1fQmxlbmRfRnVuYykgIFQxX1NldF9NTV9CbGVuZCwKKyAgICAoRlRfR2V0X01NX1Zhcl9GdW5jKSAgICBUMV9HZXRfTU1fVmFyLAorICAgIChGVF9TZXRfVmFyX0Rlc2lnbl9GdW5jKVQxX1NldF9WYXJfRGVzaWduCisgIH07CisjZW5kaWYKKworCisgIC8qCisgICAqICBQT1NUU0NSSVBUIElORk8gU0VSVklDRQorICAgKgorICAgKi8KKworICBzdGF0aWMgRlRfRXJyb3IKKyAgdDFfcHNfZ2V0X2ZvbnRfaW5mbyggRlRfRmFjZSAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBQU19Gb250SW5mb1JlYyogIGFmb250X2luZm8gKQorICB7CisgICAgKmFmb250X2luZm8gPSAoKFQxX0ZhY2UpZmFjZSktPnR5cGUxLmZvbnRfaW5mbzsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICB0MV9wc19nZXRfZm9udF9leHRyYSggRlRfRmFjZSAgICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBTX0ZvbnRFeHRyYVJlYyogIGFmb250X2V4dHJhICkKKyAgeworICAgICphZm9udF9leHRyYSA9ICgoVDFfRmFjZSlmYWNlKS0+dHlwZTEuZm9udF9leHRyYTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIHN0YXRpYyBGVF9JbnQKKyAgdDFfcHNfaGFzX2dseXBoX25hbWVzKCBGVF9GYWNlICBmYWNlICkKKyAgeworICAgIEZUX1VOVVNFRCggZmFjZSApOworCisgICAgcmV0dXJuIDE7CisgIH0KKworCisgIHN0YXRpYyBGVF9FcnJvcgorICB0MV9wc19nZXRfZm9udF9wcml2YXRlKCBGVF9GYWNlICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUFNfUHJpdmF0ZVJlYyogIGFmb250X3ByaXZhdGUgKQorICB7CisgICAgKmFmb250X3ByaXZhdGUgPSAoKFQxX0ZhY2UpZmFjZSktPnR5cGUxLnByaXZhdGVfZGljdDsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIHN0YXRpYyBGVF9Mb25nCisgIHQxX3BzX2dldF9mb250X3ZhbHVlKCBGVF9GYWNlICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBQU19EaWN0X0tleXMgIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgICAgaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcgICAgICAgdmFsdWVfbGVuICkKKyAgeworICAgIEZUX0xvbmcgIHJldHZhbCA9IC0xOworICAgIFQxX0ZhY2UgIHQxZmFjZSA9IChUMV9GYWNlKWZhY2U7CisgICAgVDFfRm9udCAgdHlwZTEgID0gJnQxZmFjZS0+dHlwZTE7CisKKworICAgIHN3aXRjaCAoIGtleSApCisgICAgeworICAgIGNhc2UgUFNfRElDVF9GT05UX1RZUEU6CisgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+Zm9udF90eXBlICk7CisgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICAqKChGVF9CeXRlICopdmFsdWUpID0gdHlwZTEtPmZvbnRfdHlwZTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX0ZPTlRfTUFUUklYOgorICAgICAgaWYgKCBpZHggPCBzaXplb2YgKCB0eXBlMS0+Zm9udF9tYXRyaXggKSAvCisgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggdHlwZTEtPmZvbnRfbWF0cml4Lnh4ICkgKQorICAgICAgeworICAgICAgICBGVF9GaXhlZCAgdmFsID0gMDsKKworCisgICAgICAgIHJldHZhbCA9IHNpemVvZiAoIHZhbCApOworICAgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICB7CisgICAgICAgICAgc3dpdGNoICggaWR4ICkKKyAgICAgICAgICB7CisgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgdmFsID0gdHlwZTEtPmZvbnRfbWF0cml4Lnh4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgdmFsID0gdHlwZTEtPmZvbnRfbWF0cml4Lnh5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgdmFsID0gdHlwZTEtPmZvbnRfbWF0cml4Lnl4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgdmFsID0gdHlwZTEtPmZvbnRfbWF0cml4Lnl5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgICooKEZUX0ZpeGVkICopdmFsdWUpID0gdmFsOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9GT05UX0JCT1g6CisgICAgICBpZiAoIGlkeCA8IHNpemVvZiAoIHR5cGUxLT5mb250X2Jib3ggKSAvCisgICAgICAgICAgICAgICAgICAgc2l6ZW9mICggdHlwZTEtPmZvbnRfYmJveC54TWluICkgKQorICAgICAgeworICAgICAgICBGVF9GaXhlZCB2YWwgPSAwOworCisKKyAgICAgICAgcmV0dmFsID0gc2l6ZW9mICggdmFsICk7CisgICAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgIHsKKyAgICAgICAgICBzd2l0Y2ggKCBpZHggKQorICAgICAgICAgIHsKKyAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICB2YWwgPSB0eXBlMS0+Zm9udF9iYm94LnhNaW47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB2YWwgPSB0eXBlMS0+Zm9udF9iYm94LnlNaW47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICB2YWwgPSB0eXBlMS0+Zm9udF9iYm94LnhNYXg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICB2YWwgPSB0eXBlMS0+Zm9udF9iYm94LnlNYXg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgKigoRlRfRml4ZWQgKil2YWx1ZSkgPSB2YWw7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX1BBSU5UX1RZUEU6CisgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+cGFpbnRfdHlwZSApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoRlRfQnl0ZSAqKXZhbHVlKSA9IHR5cGUxLT5wYWludF90eXBlOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfRk9OVF9OQU1FOgorICAgICAgcmV0dmFsID0gKEZUX0xvbmcpKCBmdF9zdHJsZW4oIHR5cGUxLT5mb250X25hbWUgKSArIDEgKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgIGZ0X21lbWNweSggdmFsdWUsICh2b2lkICopKCB0eXBlMS0+Zm9udF9uYW1lICksIHJldHZhbCApOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfVU5JUVVFX0lEOgorICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC51bmlxdWVfaWQgKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX0ludCAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3QudW5pcXVlX2lkOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfTlVNX0NIQVJfU1RSSU5HUzoKKyAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5udW1fZ2x5cGhzICk7CisgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICAqKChGVF9JbnQgKil2YWx1ZSkgPSB0eXBlMS0+bnVtX2dseXBoczsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX0NIQVJfU1RSSU5HX0tFWToKKyAgICAgIGlmICggaWR4IDwgKEZUX1VJbnQpdHlwZTEtPm51bV9nbHlwaHMgKQorICAgICAgeworICAgICAgICByZXR2YWwgPSAoRlRfTG9uZykoIGZ0X3N0cmxlbiggdHlwZTEtPmdseXBoX25hbWVzW2lkeF0gKSArIDEgKTsKKyAgICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgeworICAgICAgICAgIGZ0X21lbWNweSggdmFsdWUsICh2b2lkICopKCB0eXBlMS0+Z2x5cGhfbmFtZXNbaWR4XSApLCByZXR2YWwgKTsKKyAgICAgICAgICAoKEZUX0NoYXIgKil2YWx1ZSlbcmV0dmFsIC0gMV0gPSAoRlRfQ2hhciknXDAnOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9DSEFSX1NUUklORzoKKyAgICAgIGlmICggaWR4IDwgKEZUX1VJbnQpdHlwZTEtPm51bV9nbHlwaHMgKQorICAgICAgeworICAgICAgICByZXR2YWwgPSAoRlRfTG9uZykoIHR5cGUxLT5jaGFyc3RyaW5nc19sZW5baWR4XSArIDEgKTsKKyAgICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgeworICAgICAgICAgIGZ0X21lbWNweSggdmFsdWUsICh2b2lkICopKCB0eXBlMS0+Y2hhcnN0cmluZ3NbaWR4XSApLAorICAgICAgICAgICAgICAgICAgICAgcmV0dmFsIC0gMSApOworICAgICAgICAgICgoRlRfQ2hhciAqKXZhbHVlKVtyZXR2YWwgLSAxXSA9IChGVF9DaGFyKSdcMCc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX0VOQ09ESU5HX1RZUEU6CisgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+ZW5jb2RpbmdfdHlwZSApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoVDFfRW5jb2RpbmdUeXBlICopdmFsdWUpID0gdHlwZTEtPmVuY29kaW5nX3R5cGU7CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9FTkNPRElOR19FTlRSWToKKyAgICAgIGlmICggdHlwZTEtPmVuY29kaW5nX3R5cGUgPT0gVDFfRU5DT0RJTkdfVFlQRV9BUlJBWSAmJgorICAgICAgICAgICBpZHggPCAoRlRfVUludCl0eXBlMS0+ZW5jb2RpbmcubnVtX2NoYXJzICAgICAgICkKKyAgICAgIHsKKyAgICAgICAgcmV0dmFsID0gKEZUX0xvbmcpKCBmdF9zdHJsZW4oIHR5cGUxLT5lbmNvZGluZy5jaGFyX25hbWVbaWR4XSApICsgMSApOworICAgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICB7CisgICAgICAgICAgZnRfbWVtY3B5KCB2YWx1ZSwgKHZvaWQgKikoIHR5cGUxLT5lbmNvZGluZy5jaGFyX25hbWVbaWR4XSApLAorICAgICAgICAgICAgICAgICAgICAgcmV0dmFsIC0gMSApOworICAgICAgICAgICgoRlRfQ2hhciAqKXZhbHVlKVtyZXR2YWwgLSAxXSA9IChGVF9DaGFyKSdcMCc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX05VTV9TVUJSUzoKKyAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5udW1fc3VicnMgKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX0ludCAqKXZhbHVlKSA9IHR5cGUxLT5udW1fc3VicnM7CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9TVUJSOgorICAgICAgaWYgKCBpZHggPCAoRlRfVUludCl0eXBlMS0+bnVtX3N1YnJzICkKKyAgICAgIHsKKyAgICAgICAgcmV0dmFsID0gKEZUX0xvbmcpKCB0eXBlMS0+c3VicnNfbGVuW2lkeF0gKyAxICk7CisgICAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgIHsKKyAgICAgICAgICBmdF9tZW1jcHkoIHZhbHVlLCAodm9pZCAqKSggdHlwZTEtPnN1YnJzW2lkeF0gKSwgcmV0dmFsIC0gMSApOworICAgICAgICAgICgoRlRfQ2hhciAqKXZhbHVlKVtyZXR2YWwgLSAxXSA9IChGVF9DaGFyKSdcMCc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX1NURF9IVzoKKyAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5wcml2YXRlX2RpY3Quc3RhbmRhcmRfd2lkdGhbMF0gKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX1VTaG9ydCAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3Quc3RhbmRhcmRfd2lkdGhbMF07CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9TVERfVlc6CisgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+cHJpdmF0ZV9kaWN0LnN0YW5kYXJkX2hlaWdodFswXSApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoRlRfVVNob3J0ICopdmFsdWUpID0gdHlwZTEtPnByaXZhdGVfZGljdC5zdGFuZGFyZF9oZWlnaHRbMF07CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9OVU1fQkxVRV9WQUxVRVM6CisgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+cHJpdmF0ZV9kaWN0Lm51bV9ibHVlX3ZhbHVlcyApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoRlRfQnl0ZSAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3QubnVtX2JsdWVfdmFsdWVzOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfQkxVRV9WQUxVRToKKyAgICAgIGlmICggaWR4IDwgdHlwZTEtPnByaXZhdGVfZGljdC5udW1fYmx1ZV92YWx1ZXMgKQorICAgICAgeworICAgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+cHJpdmF0ZV9kaWN0LmJsdWVfdmFsdWVzW2lkeF0gKTsKKyAgICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgICAqKChGVF9TaG9ydCAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3QuYmx1ZV92YWx1ZXNbaWR4XTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX0JMVUVfU0NBTEU6CisgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+cHJpdmF0ZV9kaWN0LmJsdWVfc2NhbGUgKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX0ZpeGVkICopdmFsdWUpID0gdHlwZTEtPnByaXZhdGVfZGljdC5ibHVlX3NjYWxlOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfQkxVRV9GVVpaOgorICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5ibHVlX2Z1enogKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX0ludCAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3QuYmx1ZV9mdXp6OworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfQkxVRV9TSElGVDoKKyAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5wcml2YXRlX2RpY3QuYmx1ZV9zaGlmdCApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoRlRfSW50ICopdmFsdWUpID0gdHlwZTEtPnByaXZhdGVfZGljdC5ibHVlX3NoaWZ0OworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfTlVNX09USEVSX0JMVUVTOgorICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5udW1fb3RoZXJfYmx1ZXMgKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX0J5dGUgKil2YWx1ZSkgPSB0eXBlMS0+cHJpdmF0ZV9kaWN0Lm51bV9vdGhlcl9ibHVlczsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX09USEVSX0JMVUU6CisgICAgICBpZiAoIGlkeCA8IHR5cGUxLT5wcml2YXRlX2RpY3QubnVtX290aGVyX2JsdWVzICkKKyAgICAgIHsKKyAgICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5vdGhlcl9ibHVlc1tpZHhdICk7CisgICAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICAgKigoRlRfU2hvcnQgKil2YWx1ZSkgPSB0eXBlMS0+cHJpdmF0ZV9kaWN0Lm90aGVyX2JsdWVzW2lkeF07CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9OVU1fRkFNSUxZX0JMVUVTOgorICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5udW1fZmFtaWx5X2JsdWVzICk7CisgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICAqKChGVF9CeXRlICopdmFsdWUpID0gdHlwZTEtPnByaXZhdGVfZGljdC5udW1fZmFtaWx5X2JsdWVzOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfRkFNSUxZX0JMVUU6CisgICAgICBpZiAoIGlkeCA8IHR5cGUxLT5wcml2YXRlX2RpY3QubnVtX2ZhbWlseV9ibHVlcyApCisgICAgICB7CisgICAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5wcml2YXRlX2RpY3QuZmFtaWx5X2JsdWVzW2lkeF0gKTsKKyAgICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgICAqKChGVF9TaG9ydCAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3QuZmFtaWx5X2JsdWVzW2lkeF07CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9OVU1fRkFNSUxZX09USEVSX0JMVUVTOgorICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5udW1fZmFtaWx5X290aGVyX2JsdWVzICk7CisgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICAqKChGVF9CeXRlICopdmFsdWUpID0gdHlwZTEtPnByaXZhdGVfZGljdC5udW1fZmFtaWx5X290aGVyX2JsdWVzOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfRkFNSUxZX09USEVSX0JMVUU6CisgICAgICBpZiAoIGlkeCA8IHR5cGUxLT5wcml2YXRlX2RpY3QubnVtX2ZhbWlseV9vdGhlcl9ibHVlcyApCisgICAgICB7CisgICAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5wcml2YXRlX2RpY3QuZmFtaWx5X290aGVyX2JsdWVzW2lkeF0gKTsKKyAgICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgICAqKChGVF9TaG9ydCAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3QuZmFtaWx5X290aGVyX2JsdWVzW2lkeF07CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9OVU1fU1RFTV9TTkFQX0g6CisgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+cHJpdmF0ZV9kaWN0Lm51bV9zbmFwX3dpZHRocyApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoRlRfQnl0ZSAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3QubnVtX3NuYXBfd2lkdGhzOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfU1RFTV9TTkFQX0g6CisgICAgICBpZiAoIGlkeCA8IHR5cGUxLT5wcml2YXRlX2RpY3QubnVtX3NuYXBfd2lkdGhzICkKKyAgICAgIHsKKyAgICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5zbmFwX3dpZHRoc1tpZHhdICk7CisgICAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICAgKigoRlRfU2hvcnQgKil2YWx1ZSkgPSB0eXBlMS0+cHJpdmF0ZV9kaWN0LnNuYXBfd2lkdGhzW2lkeF07CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9OVU1fU1RFTV9TTkFQX1Y6CisgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+cHJpdmF0ZV9kaWN0Lm51bV9zbmFwX2hlaWdodHMgKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX0J5dGUgKil2YWx1ZSkgPSB0eXBlMS0+cHJpdmF0ZV9kaWN0Lm51bV9zbmFwX2hlaWdodHM7CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9TVEVNX1NOQVBfVjoKKyAgICAgIGlmICggaWR4IDwgdHlwZTEtPnByaXZhdGVfZGljdC5udW1fc25hcF9oZWlnaHRzICkKKyAgICAgIHsKKyAgICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5zbmFwX2hlaWdodHNbaWR4XSApOworICAgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICAgICooKEZUX1Nob3J0ICopdmFsdWUpID0gdHlwZTEtPnByaXZhdGVfZGljdC5zbmFwX2hlaWdodHNbaWR4XTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX1JORF9TVEVNX1VQOgorICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5yb3VuZF9zdGVtX3VwICk7CisgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICAqKChGVF9Cb29sICopdmFsdWUpID0gdHlwZTEtPnByaXZhdGVfZGljdC5yb3VuZF9zdGVtX3VwOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfRk9SQ0VfQk9MRDoKKyAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5wcml2YXRlX2RpY3QuZm9yY2VfYm9sZCApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoRlRfQm9vbCAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3QuZm9yY2VfYm9sZDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX01JTl9GRUFUVVJFOgorICAgICAgaWYgKCBpZHggPCBzaXplb2YgKCB0eXBlMS0+cHJpdmF0ZV9kaWN0Lm1pbl9mZWF0dXJlICkgLworICAgICAgICAgICAgICAgICAgIHNpemVvZiAoIHR5cGUxLT5wcml2YXRlX2RpY3QubWluX2ZlYXR1cmVbMF0gKSApCisgICAgICB7CisgICAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5wcml2YXRlX2RpY3QubWluX2ZlYXR1cmVbaWR4XSApOworICAgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICAgICooKEZUX1Nob3J0ICopdmFsdWUpID0gdHlwZTEtPnByaXZhdGVfZGljdC5taW5fZmVhdHVyZVtpZHhdOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfTEVOX0lWOgorICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5sZW5JViApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoRlRfSW50ICopdmFsdWUpID0gdHlwZTEtPnByaXZhdGVfZGljdC5sZW5JVjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX1BBU1NXT1JEOgorICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPnByaXZhdGVfZGljdC5wYXNzd29yZCApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoRlRfTG9uZyAqKXZhbHVlKSA9IHR5cGUxLT5wcml2YXRlX2RpY3QucGFzc3dvcmQ7CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9MQU5HVUFHRV9HUk9VUDoKKyAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5wcml2YXRlX2RpY3QubGFuZ3VhZ2VfZ3JvdXAgKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX0xvbmcgKil2YWx1ZSkgPSB0eXBlMS0+cHJpdmF0ZV9kaWN0Lmxhbmd1YWdlX2dyb3VwOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfSVNfRklYRURfUElUQ0g6CisgICAgICByZXR2YWwgPSBzaXplb2YgKCB0eXBlMS0+Zm9udF9pbmZvLmlzX2ZpeGVkX3BpdGNoICk7CisgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICAqKChGVF9Cb29sICopdmFsdWUpID0gdHlwZTEtPmZvbnRfaW5mby5pc19maXhlZF9waXRjaDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX1VOREVSTElORV9QT1NJVElPTjoKKyAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5mb250X2luZm8udW5kZXJsaW5lX3Bvc2l0aW9uICk7CisgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICAqKChGVF9TaG9ydCAqKXZhbHVlKSA9IHR5cGUxLT5mb250X2luZm8udW5kZXJsaW5lX3Bvc2l0aW9uOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfVU5ERVJMSU5FX1RISUNLTkVTUzoKKyAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5mb250X2luZm8udW5kZXJsaW5lX3RoaWNrbmVzcyApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgKigoRlRfVVNob3J0ICopdmFsdWUpID0gdHlwZTEtPmZvbnRfaW5mby51bmRlcmxpbmVfdGhpY2tuZXNzOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfRlNfVFlQRToKKyAgICAgIHJldHZhbCA9IHNpemVvZiAoIHR5cGUxLT5mb250X2V4dHJhLmZzX3R5cGUgKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX1VTaG9ydCAqKXZhbHVlKSA9IHR5cGUxLT5mb250X2V4dHJhLmZzX3R5cGU7CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9WRVJTSU9OOgorICAgICAgcmV0dmFsID0gKEZUX0xvbmcpKCBmdF9zdHJsZW4oIHR5cGUxLT5mb250X2luZm8udmVyc2lvbiApICsgMSApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgZnRfbWVtY3B5KCB2YWx1ZSwgKHZvaWQgKikoIHR5cGUxLT5mb250X2luZm8udmVyc2lvbiApLCByZXR2YWwgKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX05PVElDRToKKyAgICAgIHJldHZhbCA9IChGVF9Mb25nKSggZnRfc3RybGVuKCB0eXBlMS0+Zm9udF9pbmZvLm5vdGljZSApICsgMSApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgZnRfbWVtY3B5KCB2YWx1ZSwgKHZvaWQgKikoIHR5cGUxLT5mb250X2luZm8ubm90aWNlICksIHJldHZhbCApOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfRlVMTF9OQU1FOgorICAgICAgcmV0dmFsID0gKEZUX0xvbmcpKCBmdF9zdHJsZW4oIHR5cGUxLT5mb250X2luZm8uZnVsbF9uYW1lICkgKyAxICk7CisgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICBmdF9tZW1jcHkoIHZhbHVlLCAodm9pZCAqKSggdHlwZTEtPmZvbnRfaW5mby5mdWxsX25hbWUgKSwgcmV0dmFsICk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFNfRElDVF9GQU1JTFlfTkFNRToKKyAgICAgIHJldHZhbCA9IChGVF9Mb25nKSggZnRfc3RybGVuKCB0eXBlMS0+Zm9udF9pbmZvLmZhbWlseV9uYW1lICkgKyAxICk7CisgICAgICBpZiAoIHZhbHVlICYmIHZhbHVlX2xlbiA+PSByZXR2YWwgKQorICAgICAgICBmdF9tZW1jcHkoIHZhbHVlLCAodm9pZCAqKSggdHlwZTEtPmZvbnRfaW5mby5mYW1pbHlfbmFtZSApLCByZXR2YWwgKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQU19ESUNUX1dFSUdIVDoKKyAgICAgIHJldHZhbCA9IChGVF9Mb25nKSggZnRfc3RybGVuKCB0eXBlMS0+Zm9udF9pbmZvLndlaWdodCApICsgMSApOworICAgICAgaWYgKCB2YWx1ZSAmJiB2YWx1ZV9sZW4gPj0gcmV0dmFsICkKKyAgICAgICAgZnRfbWVtY3B5KCB2YWx1ZSwgKHZvaWQgKikoIHR5cGUxLT5mb250X2luZm8ud2VpZ2h0ICksIHJldHZhbCApOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBTX0RJQ1RfSVRBTElDX0FOR0xFOgorICAgICAgcmV0dmFsID0gc2l6ZW9mICggdHlwZTEtPmZvbnRfaW5mby5pdGFsaWNfYW5nbGUgKTsKKyAgICAgIGlmICggdmFsdWUgJiYgdmFsdWVfbGVuID49IHJldHZhbCApCisgICAgICAgICooKEZUX0xvbmcgKil2YWx1ZSkgPSB0eXBlMS0+Zm9udF9pbmZvLml0YWxpY19hbmdsZTsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByZXR2YWw7CisgIH0KKworCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlX1BzSW5mb1JlYyAgdDFfc2VydmljZV9wc19pbmZvID0KKyAgeworICAgIChQU19HZXRGb250SW5mb0Z1bmMpICAgdDFfcHNfZ2V0X2ZvbnRfaW5mbywKKyAgICAoUFNfR2V0Rm9udEV4dHJhRnVuYykgIHQxX3BzX2dldF9mb250X2V4dHJhLAorICAgIChQU19IYXNHbHlwaE5hbWVzRnVuYykgdDFfcHNfaGFzX2dseXBoX25hbWVzLAorICAgIChQU19HZXRGb250UHJpdmF0ZUZ1bmMpdDFfcHNfZ2V0X2ZvbnRfcHJpdmF0ZSwKKyAgICAoUFNfR2V0Rm9udFZhbHVlRnVuYykgIHQxX3BzX2dldF9mb250X3ZhbHVlLAorICB9OworCisKKyNpZm5kZWYgVDFfQ09ORklHX09QVElPTl9OT19BRk0KKyAgc3RhdGljIGNvbnN0IEZUX1NlcnZpY2VfS2VybmluZ1JlYyAgdDFfc2VydmljZV9rZXJuaW5nID0KKyAgeworICAgIFQxX0dldF9UcmFja19LZXJuaW5nLAorICB9OworI2VuZGlmCisKKworICAvKgorICAgKiAgU0VSVklDRSBMSVNUCisgICAqCisgICAqLworCisgIHN0YXRpYyBjb25zdCBGVF9TZXJ2aWNlRGVzY1JlYyAgdDFfc2VydmljZXNbXSA9CisgIHsKKyAgICB7IEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9GT05UX05BTUUsICZ0MV9zZXJ2aWNlX3BzX25hbWUgfSwKKyAgICB7IEZUX1NFUlZJQ0VfSURfR0xZUEhfRElDVCwgICAgICAgICAgICZ0MV9zZXJ2aWNlX2dseXBoX2RpY3QgfSwKKyAgICB7IEZUX1NFUlZJQ0VfSURfWEY4Nl9OQU1FLCAgICAgICAgICAgIEZUX1hGODZfRk9STUFUX1RZUEVfMSB9LAorICAgIHsgRlRfU0VSVklDRV9JRF9QT1NUU0NSSVBUX0lORk8sICAgICAgJnQxX3NlcnZpY2VfcHNfaW5mbyB9LAorCisjaWZuZGVmIFQxX0NPTkZJR19PUFRJT05fTk9fQUZNCisgICAgeyBGVF9TRVJWSUNFX0lEX0tFUk5JTkcsICAgICAgICAgICAgICAmdDFfc2VydmljZV9rZXJuaW5nIH0sCisjZW5kaWYKKworI2lmbmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlQKKyAgICB7IEZUX1NFUlZJQ0VfSURfTVVMVElfTUFTVEVSUywgICAgICAgICZ0MV9zZXJ2aWNlX211bHRpX21hc3RlcnMgfSwKKyNlbmRpZgorICAgIHsgTlVMTCwgTlVMTCB9CisgIH07CisKKworICBGVF9DQUxMQkFDS19ERUYoIEZUX01vZHVsZV9JbnRlcmZhY2UgKQorICBHZXRfSW50ZXJmYWNlKCBGVF9Nb2R1bGUgICAgICAgICBtb2R1bGUsCisgICAgICAgICAgICAgICAgIGNvbnN0IEZUX1N0cmluZyogIHQxX2ludGVyZmFjZSApCisgIHsKKyAgICBGVF9VTlVTRUQoIG1vZHVsZSApOworCisgICAgcmV0dXJuIGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAoIHQxX3NlcnZpY2VzLCB0MV9pbnRlcmZhY2UgKTsKKyAgfQorCisKKyNpZm5kZWYgVDFfQ09ORklHX09QVElPTl9OT19BRk0KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBHZXRfS2VybmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIGRyaXZlciBtZXRob2QgdXNlZCB0byByZXR1cm4gdGhlIGtlcm5pbmcgdmVjdG9yIGJldHdlZW4gdHdvICAgICAgKi8KKyAgLyogICAgZ2x5cGhzIG9mIHRoZSBzYW1lIGZhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8SW5wdXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZSAgICAgICAgOjogQSBoYW5kbGUgdG8gdGhlIHNvdXJjZSBmYWNlIG9iamVjdC4gICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBsZWZ0X2dseXBoICA6OiBUaGUgaW5kZXggb2YgdGhlIGxlZnQgZ2x5cGggaW4gdGhlIGtlcm4gcGFpci4gICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHJpZ2h0X2dseXBoIDo6IFRoZSBpbmRleCBvZiB0aGUgcmlnaHQgZ2x5cGggaW4gdGhlIGtlcm4gcGFpci4gICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPE91dHB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGtlcm5pbmcgICAgIDo6IFRoZSBrZXJuaW5nIHZlY3Rvci4gIFRoaXMgaXMgaW4gZm9udCB1bml0cyBmb3IgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICBzY2FsYWJsZSBmb3JtYXRzLCBhbmQgaW4gcGl4ZWxzIGZvciBmaXhlZC1zaXplcyAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgZm9ybWF0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8UmV0dXJuPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgRnJlZVR5cGUgZXJyb3IgY29kZS4gIDAgbWVhbnMgc3VjY2Vzcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgT25seSBob3Jpem9udGFsIGxheW91dHMgKGxlZnQtdG8tcmlnaHQgJiByaWdodC10by1sZWZ0KSBhcmUgICAgICAgICovCisgIC8qICAgIHN1cHBvcnRlZCBieSB0aGlzIGZ1bmN0aW9uLiAgT3RoZXIgbGF5b3V0cywgb3IgbW9yZSBzb3BoaXN0aWNhdGVkICAqLworICAvKiAgICBrZXJuaW5ncyBhcmUgb3V0IG9mIHNjb3BlIG9mIHRoaXMgbWV0aG9kICh0aGUgYmFzaWMgZHJpdmVyICAgICAgICAgKi8KKyAgLyogICAgaW50ZXJmYWNlIGlzIG1lYW50IHRvIGJlIHNpbXBsZSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUaGV5IGNhbiBiZSBpbXBsZW1lbnRlZCBieSBmb3JtYXQtc3BlY2lmaWMgaW50ZXJmYWNlcy4gICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHN0YXRpYyBGVF9FcnJvcgorICBHZXRfS2VybmluZyggRlRfRmFjZSAgICAgdDFmYWNlLCAgICAgICAgLyogVDFfRmFjZSAqLworICAgICAgICAgICAgICAgRlRfVUludCAgICAgbGVmdF9nbHlwaCwKKyAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIHJpZ2h0X2dseXBoLAorICAgICAgICAgICAgICAgRlRfVmVjdG9yKiAga2VybmluZyApCisgIHsKKyAgICBUMV9GYWNlICBmYWNlID0gKFQxX0ZhY2UpdDFmYWNlOworCisKKyAgICBrZXJuaW5nLT54ID0gMDsKKyAgICBrZXJuaW5nLT55ID0gMDsKKworICAgIGlmICggZmFjZS0+YWZtX2RhdGEgKQorICAgICAgVDFfR2V0X0tlcm5pbmcoIChBRk1fRm9udEluZm8pZmFjZS0+YWZtX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgbGVmdF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICByaWdodF9nbHlwaCwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuaW5nICk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworI2VuZGlmIC8qIFQxX0NPTkZJR19PUFRJT05fTk9fQUZNICovCisKKworICBGVF9DQUxMQkFDS19UQUJMRV9ERUYKKyAgY29uc3QgRlRfRHJpdmVyX0NsYXNzUmVjICB0MV9kcml2ZXJfY2xhc3MgPQorICB7CisgICAgeworICAgICAgRlRfTU9EVUxFX0ZPTlRfRFJJVkVSICAgICAgIHwKKyAgICAgIEZUX01PRFVMRV9EUklWRVJfU0NBTEFCTEUgICB8CisgICAgICBGVF9NT0RVTEVfRFJJVkVSX0hBU19ISU5URVIsCisKKyAgICAgIHNpemVvZiAoIEZUX0RyaXZlclJlYyApLAorCisgICAgICAidHlwZTEiLAorICAgICAgMHgxMDAwMEwsCisgICAgICAweDIwMDAwTCwKKworICAgICAgMCwgICAvKiBmb3JtYXQgaW50ZXJmYWNlICovCisKKyAgICAgIFQxX0RyaXZlcl9Jbml0LAorICAgICAgVDFfRHJpdmVyX0RvbmUsCisgICAgICBHZXRfSW50ZXJmYWNlLAorICAgIH0sCisKKyAgICBzaXplb2YgKCBUMV9GYWNlUmVjICksCisgICAgc2l6ZW9mICggVDFfU2l6ZVJlYyApLAorICAgIHNpemVvZiAoIFQxX0dseXBoU2xvdFJlYyApLAorCisgICAgVDFfRmFjZV9Jbml0LAorICAgIFQxX0ZhY2VfRG9uZSwKKyAgICBUMV9TaXplX0luaXQsCisgICAgVDFfU2l6ZV9Eb25lLAorICAgIFQxX0dseXBoU2xvdF9Jbml0LAorICAgIFQxX0dseXBoU2xvdF9Eb25lLAorCisgICAgVDFfTG9hZF9HbHlwaCwKKworI2lmZGVmIFQxX0NPTkZJR19PUFRJT05fTk9fQUZNCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAvKiBGVF9GYWNlX0dldEtlcm5pbmdGdW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAvKiBGVF9GYWNlX0F0dGFjaEZ1bmMgICAgICovCisjZWxzZQorICAgIEdldF9LZXJuaW5nLAorICAgIFQxX1JlYWRfTWV0cmljcywKKyNlbmRpZgorICAgIFQxX0dldF9BZHZhbmNlcywKKyAgICBUMV9TaXplX1JlcXVlc3QsCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAvKiBGVF9TaXplX1NlbGVjdEZ1bmMgICAgICovCisgIH07CisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3QxZHJpdmVyLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3QxZHJpdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVmZjYwZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFkcml2ZXIuaApAQCAtMCwwICsxLDQyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MWRyaXZlci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgSGlnaC1sZXZlbCBUeXBlIDEgZHJpdmVyIGludGVyZmFjZSAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UMURSSVZFUl9IX18KKyNkZWZpbmUgX19UMURSSVZFUl9IX18KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCIKKworCitGVF9CRUdJTl9IRUFERVIKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fUElDCisjZXJyb3IgInRoaXMgbW9kdWxlIGRvZXMgbm90IHN1cHBvcnQgUElDIHlldCIKKyNlbmRpZgorCisKKyAgRlRfRVhQT1JUX1ZBUiggY29uc3QgRlRfRHJpdmVyX0NsYXNzUmVjICkgIHQxX2RyaXZlcl9jbGFzczsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1QxRFJJVkVSX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWVycm9ycy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWVycm9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NTg0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3QxZXJyb3JzLmgKQEAgLTAsMCArMSw0MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdDFlcnJvcnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFR5cGUgMSBlcnJvciBjb2RlcyAoc3BlY2lmaWNhdGlvbiBvbmx5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAyMDAxLCAyMDEyIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhpcyBmaWxlIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBUeXBlIDEgZXJyb3IgZW51bWVyYXRpb24gY29uc3RhbnRzLiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX1QxRVJST1JTX0hfXworI2RlZmluZSBfX1QxRVJST1JTX0hfXworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oIgorCisjdW5kZWYgX19GVEVSUk9SU19IX18KKworI3VuZGVmICBGVF9FUlJfUFJFRklYCisjZGVmaW5lIEZUX0VSUl9QUkVGSVggIFQxX0Vycl8KKyNkZWZpbmUgRlRfRVJSX0JBU0UgICAgRlRfTW9kX0Vycl9UeXBlMQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIgorCisjZW5kaWYgLyogX19UMUVSUk9SU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFnbG9hZC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWdsb2FkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZjOTA4YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFnbG9hZC5jCkBAIC0wLDAgKzEsNTE3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MWdsb2FkLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHlwZSAxIEdseXBoIExvYWRlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNiwgMjAwOC0yMDEwLCAyMDEzIGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAidDFnbG9hZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCIKKworI2luY2x1ZGUgInQxZXJyb3JzLmgiCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoZSBtYWNybyBGVF9DT01QT05FTlQgaXMgdXNlZCBpbiB0cmFjZSBtb2RlLiAgSXQgaXMgYW4gaW1wbGljaXQgICAgICAqLworICAvKiBwYXJhbWV0ZXIgb2YgdGhlIEZUX1RSQUNFKCkgYW5kIEZUX0VSUk9SKCkgbWFjcm9zLCB1c2VkIHRvIHByaW50L2xvZyAgKi8KKyAgLyogbWVzc2FnZXMgZHVyaW5nIGV4ZWN1dGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI3VuZGVmICBGVF9DT01QT05FTlQKKyNkZWZpbmUgRlRfQ09NUE9ORU5UICB0cmFjZV90MWdsb2FkCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgICAgICAgICBDT01QVVRFIFRIRSBNQVhJTVVNIEFEVkFOQ0UgV0lEVEggICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICBUaGUgZm9sbG93aW5nIGNvZGUgaXMgaW4gY2hhcmdlIG9mIGNvbXB1dGluZyAgICAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgdGhlIG1heGltdW0gYWR2YW5jZSB3aWR0aCBvZiB0aGUgZm9udC4gIEl0ICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgIHF1aWNrbHkgcHJvY2Vzc2VzIGVhY2ggZ2x5cGggY2hhcnN0cmluZyB0byAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKiAgICBleHRyYWN0IHRoZSB2YWx1ZSBmcm9tIGVpdGhlciBhIGBzYncnIG9yIGBzZWFjJyAgICoqKioqKioqKi8KKyAgLyoqKioqKioqKiogICAgb3BlcmF0b3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKiovCisgIC8qKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcoIFQxX0RlY29kZXIgIGRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgIGdseXBoX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9EYXRhKiAgICBjaGFyX3N0cmluZyApCisgIHsKKyAgICBUMV9GYWNlICAgZmFjZSAgPSAoVDFfRmFjZSlkZWNvZGVyLT5idWlsZGVyLmZhY2U7CisgICAgVDFfRm9udCAgIHR5cGUxID0gJmZhY2UtPnR5cGUxOworICAgIEZUX0Vycm9yICBlcnJvciA9IEZUX0Vycl9PazsKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VSZWMgKmluYyA9CisgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlOworI2VuZGlmCisKKworICAgIGRlY29kZXItPmZvbnRfbWF0cml4ID0gdHlwZTEtPmZvbnRfbWF0cml4OworICAgIGRlY29kZXItPmZvbnRfb2Zmc2V0ID0gdHlwZTEtPmZvbnRfb2Zmc2V0OworCisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorCisgICAgLyogRm9yIGluY3JlbWVudGFsIGZvbnRzIGdldCB0aGUgY2hhcmFjdGVyIGRhdGEgdXNpbmcgdGhlICovCisgICAgLyogY2FsbGJhY2sgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBpbmMgKQorICAgICAgZXJyb3IgPSBpbmMtPmZ1bmNzLT5nZXRfZ2x5cGhfZGF0YSggaW5jLT5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwgY2hhcl9zdHJpbmcgKTsKKyAgICBlbHNlCisKKyNlbmRpZiAvKiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMICovCisKKyAgICAvKiBGb3Igb3JkaW5hcnkgZm9udHMgZ2V0IHRoZSBjaGFyYWN0ZXIgZGF0YSBzdG9yZWQgaW4gdGhlIGZhY2UgcmVjb3JkLiAqLworICAgIHsKKyAgICAgIGNoYXJfc3RyaW5nLT5wb2ludGVyID0gdHlwZTEtPmNoYXJzdHJpbmdzW2dseXBoX2luZGV4XTsKKyAgICAgIGNoYXJfc3RyaW5nLT5sZW5ndGggID0gKEZUX0ludCl0eXBlMS0+Y2hhcnN0cmluZ3NfbGVuW2dseXBoX2luZGV4XTsKKyAgICB9CisKKyAgICBpZiAoICFlcnJvciApCisgICAgICBlcnJvciA9IGRlY29kZXItPmZ1bmNzLnBhcnNlX2NoYXJzdHJpbmdzKAorICAgICAgICAgICAgICAgIGRlY29kZXIsIChGVF9CeXRlKiljaGFyX3N0cmluZy0+cG9pbnRlciwKKyAgICAgICAgICAgICAgICBjaGFyX3N0cmluZy0+bGVuZ3RoICk7CisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisKKyAgICAvKiBJbmNyZW1lbnRhbCBmb250cyBjYW4gb3B0aW9uYWxseSBvdmVycmlkZSB0aGUgbWV0cmljcy4gKi8KKyAgICBpZiAoICFlcnJvciAmJiBpbmMgJiYgaW5jLT5mdW5jcy0+Z2V0X2dseXBoX21ldHJpY3MgKQorICAgIHsKKyAgICAgIEZUX0luY3JlbWVudGFsX01ldHJpY3NSZWMgIG1ldHJpY3M7CisKKworICAgICAgbWV0cmljcy5iZWFyaW5nX3ggPSBGSVhFRF9UT19JTlQoIGRlY29kZXItPmJ1aWxkZXIubGVmdF9iZWFyaW5nLnggKTsKKyAgICAgIG1ldHJpY3MuYmVhcmluZ195ID0gMDsKKyAgICAgIG1ldHJpY3MuYWR2YW5jZSAgID0gRklYRURfVE9fSU5UKCBkZWNvZGVyLT5idWlsZGVyLmFkdmFuY2UueCApOworICAgICAgbWV0cmljcy5hZHZhbmNlX3YgPSBGSVhFRF9UT19JTlQoIGRlY29kZXItPmJ1aWxkZXIuYWR2YW5jZS55ICk7CisKKyAgICAgIGVycm9yID0gaW5jLT5mdW5jcy0+Z2V0X2dseXBoX21ldHJpY3MoIGluYy0+b2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhfaW5kZXgsIEZBTFNFLCAmbWV0cmljcyApOworCisgICAgICBkZWNvZGVyLT5idWlsZGVyLmxlZnRfYmVhcmluZy54ID0gSU5UX1RPX0ZJWEVEKCBtZXRyaWNzLmJlYXJpbmdfeCApOworICAgICAgZGVjb2Rlci0+YnVpbGRlci5hZHZhbmNlLnggICAgICA9IElOVF9UT19GSVhFRCggbWV0cmljcy5hZHZhbmNlICk7CisgICAgICBkZWNvZGVyLT5idWlsZGVyLmFkdmFuY2UueSAgICAgID0gSU5UX1RPX0ZJWEVEKCBtZXRyaWNzLmFkdmFuY2VfdiApOworICAgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfQ0FMTEJBQ0tfREVGKCBGVF9FcnJvciApCisgIFQxX1BhcnNlX0dseXBoKCBUMV9EZWNvZGVyICBkZWNvZGVyLAorICAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgZ2x5cGhfaW5kZXggKQorICB7CisgICAgRlRfRGF0YSAgIGdseXBoX2RhdGE7CisgICAgRlRfRXJyb3IgIGVycm9yID0gVDFfUGFyc2VfR2x5cGhfQW5kX0dldF9DaGFyX1N0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXIsIGdseXBoX2luZGV4LCAmZ2x5cGhfZGF0YSApOworCisKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisKKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgVDFfRmFjZSAgZmFjZSA9IChUMV9GYWNlKWRlY29kZXItPmJ1aWxkZXIuZmFjZTsKKworCisgICAgICBpZiAoIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSApCisgICAgICAgIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZS0+ZnVuY3MtPmZyZWVfZ2x5cGhfZGF0YSgKKyAgICAgICAgICBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UtPm9iamVjdCwKKyAgICAgICAgICAmZ2x5cGhfZGF0YSApOworICAgIH0KKworI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFQxX0NvbXB1dGVfTWF4X0FkdmFuY2UoIFQxX0ZhY2UgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX1BvcyogIG1heF9hZHZhbmNlICkKKyAgeworICAgIEZUX0Vycm9yICAgICAgIGVycm9yOworICAgIFQxX0RlY29kZXJSZWMgIGRlY29kZXI7CisgICAgRlRfSW50ICAgICAgICAgZ2x5cGhfaW5kZXg7CisgICAgVDFfRm9udCAgICAgICAgdHlwZTEgPSAmZmFjZS0+dHlwZTE7CisgICAgUFNBdXhfU2VydmljZSAgcHNhdXggPSAoUFNBdXhfU2VydmljZSlmYWNlLT5wc2F1eDsKKworCisgICAgRlRfQVNTRVJUKCAoIGZhY2UtPmxlbl9idWlsZGNoYXIgPT0gMCApID09ICggZmFjZS0+YnVpbGRjaGFyID09IE5VTEwgKSApOworCisgICAgKm1heF9hZHZhbmNlID0gMDsKKworICAgIC8qIGluaXRpYWxpemUgbG9hZCBkZWNvZGVyICovCisgICAgZXJyb3IgPSBwc2F1eC0+dDFfZGVjb2Rlcl9mdW5jcy0+aW5pdCggJmRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0ZhY2UpZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiBzaXplICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogZ2x5cGggc2xvdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGVF9CeXRlKiopdHlwZTEtPmdseXBoX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtPmJsZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRfUkVOREVSX01PREVfTk9STUFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQxX1BhcnNlX0dseXBoICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICBkZWNvZGVyLmJ1aWxkZXIubWV0cmljc19vbmx5ID0gMTsKKyAgICBkZWNvZGVyLmJ1aWxkZXIubG9hZF9wb2ludHMgID0gMDsKKworICAgIGRlY29kZXIubnVtX3N1YnJzICAgICA9IHR5cGUxLT5udW1fc3VicnM7CisgICAgZGVjb2Rlci5zdWJycyAgICAgICAgID0gdHlwZTEtPnN1YnJzOworICAgIGRlY29kZXIuc3VicnNfbGVuICAgICA9IHR5cGUxLT5zdWJyc19sZW47CisKKyAgICBkZWNvZGVyLmJ1aWxkY2hhciAgICAgPSBmYWNlLT5idWlsZGNoYXI7CisgICAgZGVjb2Rlci5sZW5fYnVpbGRjaGFyID0gZmFjZS0+bGVuX2J1aWxkY2hhcjsKKworICAgICptYXhfYWR2YW5jZSA9IDA7CisKKyAgICAvKiBmb3IgZWFjaCBnbHlwaCwgcGFyc2UgdGhlIGdseXBoIGNoYXJzdHJpbmcgYW5kIGV4dHJhY3QgKi8KKyAgICAvKiB0aGUgYWR2YW5jZSB3aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBmb3IgKCBnbHlwaF9pbmRleCA9IDA7IGdseXBoX2luZGV4IDwgdHlwZTEtPm51bV9nbHlwaHM7IGdseXBoX2luZGV4KysgKQorICAgIHsKKyAgICAgIC8qIG5vdyBnZXQgbG9hZCB0aGUgdW5zY2FsZWQgb3V0bGluZSAqLworICAgICAgZXJyb3IgPSBUMV9QYXJzZV9HbHlwaCggJmRlY29kZXIsIGdseXBoX2luZGV4ICk7CisgICAgICBpZiAoIGdseXBoX2luZGV4ID09IDAgfHwgZGVjb2Rlci5idWlsZGVyLmFkdmFuY2UueCA+ICptYXhfYWR2YW5jZSApCisgICAgICAgICptYXhfYWR2YW5jZSA9IGRlY29kZXIuYnVpbGRlci5hZHZhbmNlLng7CisKKyAgICAgIC8qIGlnbm9yZSB0aGUgZXJyb3IgaWYgb25lIG9jY3VycmVkIC0gc2tpcCB0byBuZXh0IGdseXBoICovCisgICAgfQorCisgICAgcHNhdXgtPnQxX2RlY29kZXJfZnVuY3MtPmRvbmUoICZkZWNvZGVyICk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVDFfR2V0X0FkdmFuY2VzKCBGVF9GYWNlICAgIHQxZmFjZSwgICAgICAgIC8qIFQxX0ZhY2UgKi8KKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIGZpcnN0LAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgRlRfSW50MzIgICBsb2FkX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgYWR2YW5jZXMgKQorICB7CisgICAgVDFfRmFjZSAgICAgICAgZmFjZSAgPSAoVDFfRmFjZSl0MWZhY2U7CisgICAgVDFfRGVjb2RlclJlYyAgZGVjb2RlcjsKKyAgICBUMV9Gb250ICAgICAgICB0eXBlMSA9ICZmYWNlLT50eXBlMTsKKyAgICBQU0F1eF9TZXJ2aWNlICBwc2F1eCA9IChQU0F1eF9TZXJ2aWNlKWZhY2UtPnBzYXV4OworICAgIEZUX1VJbnQgICAgICAgIG5uOworICAgIEZUX0Vycm9yICAgICAgIGVycm9yOworCisKKyAgICBpZiAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX1ZFUlRJQ0FMX0xBWU9VVCApCisgICAgeworICAgICAgZm9yICggbm4gPSAwOyBubiA8IGNvdW50OyBubisrICkKKyAgICAgICAgYWR2YW5jZXNbbm5dID0gMDsKKworICAgICAgcmV0dXJuIEZUX0Vycl9PazsKKyAgICB9CisKKyAgICBlcnJvciA9IHBzYXV4LT50MV9kZWNvZGVyX2Z1bmNzLT5pbml0KCAmZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlRfRmFjZSlmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIHNpemUgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiBnbHlwaCBzbG90ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0J5dGUqKil0eXBlMS0+Z2x5cGhfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+YmxlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9SRU5ERVJfTU9ERV9OT1JNQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVDFfUGFyc2VfR2x5cGggKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIHJldHVybiBlcnJvcjsKKworICAgIGRlY29kZXIuYnVpbGRlci5tZXRyaWNzX29ubHkgPSAxOworICAgIGRlY29kZXIuYnVpbGRlci5sb2FkX3BvaW50cyAgPSAwOworCisgICAgZGVjb2Rlci5udW1fc3VicnMgPSB0eXBlMS0+bnVtX3N1YnJzOworICAgIGRlY29kZXIuc3VicnMgICAgID0gdHlwZTEtPnN1YnJzOworICAgIGRlY29kZXIuc3VicnNfbGVuID0gdHlwZTEtPnN1YnJzX2xlbjsKKworICAgIGRlY29kZXIuYnVpbGRjaGFyICAgICA9IGZhY2UtPmJ1aWxkY2hhcjsKKyAgICBkZWNvZGVyLmxlbl9idWlsZGNoYXIgPSBmYWNlLT5sZW5fYnVpbGRjaGFyOworCisgICAgZm9yICggbm4gPSAwOyBubiA8IGNvdW50OyBubisrICkKKyAgICB7CisgICAgICBlcnJvciA9IFQxX1BhcnNlX0dseXBoKCAmZGVjb2RlciwgZmlyc3QgKyBubiApOworICAgICAgaWYgKCAhZXJyb3IgKQorICAgICAgICBhZHZhbmNlc1tubl0gPSBGSVhFRF9UT19JTlQoIGRlY29kZXIuYnVpbGRlci5hZHZhbmNlLnggKTsKKyAgICAgIGVsc2UKKyAgICAgICAgYWR2YW5jZXNbbm5dID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVDFfTG9hZF9HbHlwaCggRlRfR2x5cGhTbG90ICB0MWdseXBoLCAgICAgICAgICAvKiBUMV9HbHlwaFNsb3QgKi8KKyAgICAgICAgICAgICAgICAgRlRfU2l6ZSAgICAgICB0MXNpemUsICAgICAgICAgICAvKiBUMV9TaXplICAgICAgKi8KKyAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgRlRfSW50MzIgICAgICBsb2FkX2ZsYWdzICkKKyAgeworICAgIFQxX0dseXBoU2xvdCAgICAgICAgICAgIGdseXBoID0gKFQxX0dseXBoU2xvdCl0MWdseXBoOworICAgIEZUX0Vycm9yICAgICAgICAgICAgICAgIGVycm9yOworICAgIFQxX0RlY29kZXJSZWMgICAgICAgICAgIGRlY29kZXI7CisgICAgVDFfRmFjZSAgICAgICAgICAgICAgICAgZmFjZSA9IChUMV9GYWNlKXQxZ2x5cGgtPmZhY2U7CisgICAgRlRfQm9vbCAgICAgICAgICAgICAgICAgaGludGluZzsKKyAgICBUMV9Gb250ICAgICAgICAgICAgICAgICB0eXBlMSAgICAgICAgID0gJmZhY2UtPnR5cGUxOworICAgIFBTQXV4X1NlcnZpY2UgICAgICAgICAgIHBzYXV4ICAgICAgICAgPSAoUFNBdXhfU2VydmljZSlmYWNlLT5wc2F1eDsKKyAgICBjb25zdCBUMV9EZWNvZGVyX0Z1bmNzICBkZWNvZGVyX2Z1bmNzID0gcHNhdXgtPnQxX2RlY29kZXJfZnVuY3M7CisKKyAgICBGVF9NYXRyaXggICAgICAgICAgICAgICBmb250X21hdHJpeDsKKyAgICBGVF9WZWN0b3IgICAgICAgICAgICAgICBmb250X29mZnNldDsKKyAgICBGVF9EYXRhICAgICAgICAgICAgICAgICBnbHlwaF9kYXRhOworICAgIEZUX0Jvb2wgICAgICAgICAgICAgICAgIG11c3RfZmluaXNoX2RlY29kZXIgPSBGQUxTRTsKKyNpZmRlZiBGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMCisgICAgRlRfQm9vbCAgICAgICAgICAgICAgICAgZ2x5cGhfZGF0YV9sb2FkZWQgPSAwOworI2VuZGlmCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICBpZiAoIGdseXBoX2luZGV4ID49IChGVF9VSW50KWZhY2UtPnJvb3QubnVtX2dseXBocyAmJgorICAgICAgICAgIWZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSAgICkKKyNlbHNlCisgICAgaWYgKCBnbHlwaF9pbmRleCA+PSAoRlRfVUludClmYWNlLT5yb290Lm51bV9nbHlwaHMgKQorI2VuZGlmIC8qIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgKi8KKyAgICB7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgRlRfQVNTRVJUKCAoIGZhY2UtPmxlbl9idWlsZGNoYXIgPT0gMCApID09ICggZmFjZS0+YnVpbGRjaGFyID09IE5VTEwgKSApOworCisgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19SRUNVUlNFICkKKyAgICAgIGxvYWRfZmxhZ3MgfD0gRlRfTE9BRF9OT19TQ0FMRSB8IEZUX0xPQURfTk9fSElOVElORzsKKworICAgIGlmICggdDFzaXplICkKKyAgICB7CisgICAgICBnbHlwaC0+eF9zY2FsZSA9IHQxc2l6ZS0+bWV0cmljcy54X3NjYWxlOworICAgICAgZ2x5cGgtPnlfc2NhbGUgPSB0MXNpemUtPm1ldHJpY3MueV9zY2FsZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGdseXBoLT54X3NjYWxlID0gMHgxMDAwMEw7CisgICAgICBnbHlwaC0+eV9zY2FsZSA9IDB4MTAwMDBMOworICAgIH0KKworICAgIHQxZ2x5cGgtPm91dGxpbmUubl9wb2ludHMgICA9IDA7CisgICAgdDFnbHlwaC0+b3V0bGluZS5uX2NvbnRvdXJzID0gMDsKKworICAgIGhpbnRpbmcgPSBGVF9CT09MKCAoIGxvYWRfZmxhZ3MgJiBGVF9MT0FEX05PX1NDQUxFICAgKSA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fSElOVElORyApID09IDAgKTsKKworICAgIHQxZ2x5cGgtPmZvcm1hdCA9IEZUX0dMWVBIX0ZPUk1BVF9PVVRMSU5FOworCisgICAgZXJyb3IgPSBkZWNvZGVyX2Z1bmNzLT5pbml0KCAmZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQxZ2x5cGgtPmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MWdseXBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZUX0J5dGUqKil0eXBlMS0+Z2x5cGhfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlLT5ibGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0JPT0woIGhpbnRpbmcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0xPQURfVEFSR0VUX01PREUoIGxvYWRfZmxhZ3MgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQxX1BhcnNlX0dseXBoICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBtdXN0X2ZpbmlzaF9kZWNvZGVyID0gVFJVRTsKKworICAgIGRlY29kZXIuYnVpbGRlci5ub19yZWN1cnNlID0gRlRfQk9PTCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19SRUNVUlNFICkgIT0gMCApOworCisgICAgZGVjb2Rlci5udW1fc3VicnMgICAgID0gdHlwZTEtPm51bV9zdWJyczsKKyAgICBkZWNvZGVyLnN1YnJzICAgICAgICAgPSB0eXBlMS0+c3VicnM7CisgICAgZGVjb2Rlci5zdWJyc19sZW4gICAgID0gdHlwZTEtPnN1YnJzX2xlbjsKKworICAgIGRlY29kZXIuYnVpbGRjaGFyICAgICA9IGZhY2UtPmJ1aWxkY2hhcjsKKyAgICBkZWNvZGVyLmxlbl9idWlsZGNoYXIgPSBmYWNlLT5sZW5fYnVpbGRjaGFyOworCisgICAgLyogbm93IGxvYWQgdGhlIHVuc2NhbGVkIG91dGxpbmUgKi8KKyAgICBlcnJvciA9IFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcoICZkZWNvZGVyLCBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnbHlwaF9kYXRhICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisjaWZkZWYgRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTAorICAgIGdseXBoX2RhdGFfbG9hZGVkID0gMTsKKyNlbmRpZgorCisgICAgZm9udF9tYXRyaXggPSBkZWNvZGVyLmZvbnRfbWF0cml4OworICAgIGZvbnRfb2Zmc2V0ID0gZGVjb2Rlci5mb250X29mZnNldDsKKworICAgIC8qIHNhdmUgbmV3IGdseXBoIHRhYmxlcyAqLworICAgIGRlY29kZXJfZnVuY3MtPmRvbmUoICZkZWNvZGVyICk7CisKKyAgICBtdXN0X2ZpbmlzaF9kZWNvZGVyID0gRkFMU0U7CisKKyAgICAvKiBub3csIHNldCB0aGUgbWV0cmljcyAtLSB0aGlzIGlzIHJhdGhlciBzaW1wbGUsIGFzICAgKi8KKyAgICAvKiB0aGUgbGVmdCBzaWRlIGJlYXJpbmcgaXMgdGhlIHhNaW4sIGFuZCB0aGUgdG9wIHNpZGUgKi8KKyAgICAvKiBiZWFyaW5nIHRoZSB5TWF4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoICFlcnJvciApCisgICAgeworICAgICAgdDFnbHlwaC0+b3V0bGluZS5mbGFncyAmPSBGVF9PVVRMSU5FX09XTkVSOworICAgICAgdDFnbHlwaC0+b3V0bGluZS5mbGFncyB8PSBGVF9PVVRMSU5FX1JFVkVSU0VfRklMTDsKKworICAgICAgLyogZm9yIGNvbXBvc2l0ZSBnbHlwaHMsIHJldHVybiBvbmx5IGxlZnQgc2lkZSBiZWFyaW5nIGFuZCAqLworICAgICAgLyogYWR2YW5jZSB3aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9OT19SRUNVUlNFICkKKyAgICAgIHsKKyAgICAgICAgRlRfU2xvdF9JbnRlcm5hbCAgaW50ZXJuYWwgPSB0MWdseXBoLT5pbnRlcm5hbDsKKworCisgICAgICAgIHQxZ2x5cGgtPm1ldHJpY3MuaG9yaUJlYXJpbmdYID0KKyAgICAgICAgICBGSVhFRF9UT19JTlQoIGRlY29kZXIuYnVpbGRlci5sZWZ0X2JlYXJpbmcueCApOworICAgICAgICB0MWdseXBoLT5tZXRyaWNzLmhvcmlBZHZhbmNlICA9CisgICAgICAgICAgRklYRURfVE9fSU5UKCBkZWNvZGVyLmJ1aWxkZXIuYWR2YW5jZS54ICk7CisKKyAgICAgICAgaW50ZXJuYWwtPmdseXBoX21hdHJpeCAgICAgID0gZm9udF9tYXRyaXg7CisgICAgICAgIGludGVybmFsLT5nbHlwaF9kZWx0YSAgICAgICA9IGZvbnRfb2Zmc2V0OworICAgICAgICBpbnRlcm5hbC0+Z2x5cGhfdHJhbnNmb3JtZWQgPSAxOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBGVF9CQm94ICAgICAgICAgICAgY2JveDsKKyAgICAgICAgRlRfR2x5cGhfTWV0cmljcyogIG1ldHJpY3MgPSAmdDFnbHlwaC0+bWV0cmljczsKKyAgICAgICAgRlRfVmVjdG9yICAgICAgICAgIGFkdmFuY2U7CisKKworICAgICAgICAvKiBjb3B5IHRoZSBfdW5zY2FsZWRfIGFkdmFuY2Ugd2lkdGggKi8KKyAgICAgICAgbWV0cmljcy0+aG9yaUFkdmFuY2UgPQorICAgICAgICAgIEZJWEVEX1RPX0lOVCggZGVjb2Rlci5idWlsZGVyLmFkdmFuY2UueCApOworICAgICAgICB0MWdseXBoLT5saW5lYXJIb3JpQWR2YW5jZSA9CisgICAgICAgICAgRklYRURfVE9fSU5UKCBkZWNvZGVyLmJ1aWxkZXIuYWR2YW5jZS54ICk7CisgICAgICAgIHQxZ2x5cGgtPmludGVybmFsLT5nbHlwaF90cmFuc2Zvcm1lZCA9IDA7CisKKyAgICAgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgKQorICAgICAgICB7CisgICAgICAgICAgLyogbWFrZSB1cCB2ZXJ0aWNhbCBvbmVzICovCisgICAgICAgICAgbWV0cmljcy0+dmVydEFkdmFuY2UgPSAoIGZhY2UtPnR5cGUxLmZvbnRfYmJveC55TWF4IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+dHlwZTEuZm9udF9iYm94LnlNaW4gKSA+PiAxNjsKKyAgICAgICAgICB0MWdseXBoLT5saW5lYXJWZXJ0QWR2YW5jZSA9IG1ldHJpY3MtPnZlcnRBZHZhbmNlOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIG1ldHJpY3MtPnZlcnRBZHZhbmNlID0KKyAgICAgICAgICAgIEZJWEVEX1RPX0lOVCggZGVjb2Rlci5idWlsZGVyLmFkdmFuY2UueSApOworICAgICAgICAgIHQxZ2x5cGgtPmxpbmVhclZlcnRBZHZhbmNlID0KKyAgICAgICAgICAgIEZJWEVEX1RPX0lOVCggZGVjb2Rlci5idWlsZGVyLmFkdmFuY2UueSApOworICAgICAgICB9CisKKyAgICAgICAgdDFnbHlwaC0+Zm9ybWF0ID0gRlRfR0xZUEhfRk9STUFUX09VVExJTkU7CisKKyAgICAgICAgaWYgKCB0MXNpemUgJiYgdDFzaXplLT5tZXRyaWNzLnlfcHBlbSA8IDI0ICkKKyAgICAgICAgICB0MWdseXBoLT5vdXRsaW5lLmZsYWdzIHw9IEZUX09VVExJTkVfSElHSF9QUkVDSVNJT047CisKKyNpZiAxCisgICAgICAgIC8qIGFwcGx5IHRoZSBmb250IG1hdHJpeCwgaWYgYW55ICovCisgICAgICAgIGlmICggZm9udF9tYXRyaXgueHggIT0gMHgxMDAwMEwgfHwgZm9udF9tYXRyaXgueXkgIT0gZm9udF9tYXRyaXgueHggfHwKKyAgICAgICAgICAgICBmb250X21hdHJpeC54eSAhPSAwICAgICAgICB8fCBmb250X21hdHJpeC55eCAhPSAwICAgICAgICAgICAgICApCisgICAgICAgICAgRlRfT3V0bGluZV9UcmFuc2Zvcm0oICZ0MWdseXBoLT5vdXRsaW5lLCAmZm9udF9tYXRyaXggKTsKKworICAgICAgICBpZiAoIGZvbnRfb2Zmc2V0LnggfHwgZm9udF9vZmZzZXQueSApCisgICAgICAgICAgRlRfT3V0bGluZV9UcmFuc2xhdGUoICZ0MWdseXBoLT5vdXRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250X29mZnNldC54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250X29mZnNldC55ICk7CisKKyAgICAgICAgYWR2YW5jZS54ID0gbWV0cmljcy0+aG9yaUFkdmFuY2U7CisgICAgICAgIGFkdmFuY2UueSA9IDA7CisgICAgICAgIEZUX1ZlY3Rvcl9UcmFuc2Zvcm0oICZhZHZhbmNlLCAmZm9udF9tYXRyaXggKTsKKyAgICAgICAgbWV0cmljcy0+aG9yaUFkdmFuY2UgPSBhZHZhbmNlLnggKyBmb250X29mZnNldC54OworICAgICAgICBhZHZhbmNlLnggPSAwOworICAgICAgICBhZHZhbmNlLnkgPSBtZXRyaWNzLT52ZXJ0QWR2YW5jZTsKKyAgICAgICAgRlRfVmVjdG9yX1RyYW5zZm9ybSggJmFkdmFuY2UsICZmb250X21hdHJpeCApOworICAgICAgICBtZXRyaWNzLT52ZXJ0QWR2YW5jZSA9IGFkdmFuY2UueSArIGZvbnRfb2Zmc2V0Lnk7CisjZW5kaWYKKworICAgICAgICBpZiAoICggbG9hZF9mbGFncyAmIEZUX0xPQURfTk9fU0NBTEUgKSA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgIC8qIHNjYWxlIHRoZSBvdXRsaW5lIGFuZCB0aGUgbWV0cmljcyAqLworICAgICAgICAgIEZUX0ludCAgICAgICBuOworICAgICAgICAgIEZUX091dGxpbmUqICBjdXIgPSBkZWNvZGVyLmJ1aWxkZXIuYmFzZTsKKyAgICAgICAgICBGVF9WZWN0b3IqICAgdmVjID0gY3VyLT5wb2ludHM7CisgICAgICAgICAgRlRfRml4ZWQgICAgIHhfc2NhbGUgPSBnbHlwaC0+eF9zY2FsZTsKKyAgICAgICAgICBGVF9GaXhlZCAgICAgeV9zY2FsZSA9IGdseXBoLT55X3NjYWxlOworCisKKyAgICAgICAgICAvKiBGaXJzdCBvZiBhbGwsIHNjYWxlIHRoZSBwb2ludHMsIGlmIHdlIGFyZSBub3QgaGludGluZyAqLworICAgICAgICAgIGlmICggIWhpbnRpbmcgfHwgISBkZWNvZGVyLmJ1aWxkZXIuaGludHNfZnVuY3MgKQorICAgICAgICAgICAgZm9yICggbiA9IGN1ci0+bl9wb2ludHM7IG4gPiAwOyBuLS0sIHZlYysrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgdmVjLT54ID0gRlRfTXVsRml4KCB2ZWMtPngsIHhfc2NhbGUgKTsKKyAgICAgICAgICAgICAgdmVjLT55ID0gRlRfTXVsRml4KCB2ZWMtPnksIHlfc2NhbGUgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIC8qIFRoZW4gc2NhbGUgdGhlIG1ldHJpY3MgKi8KKyAgICAgICAgICBtZXRyaWNzLT5ob3JpQWR2YW5jZSA9IEZUX011bEZpeCggbWV0cmljcy0+aG9yaUFkdmFuY2UsIHhfc2NhbGUgKTsKKyAgICAgICAgICBtZXRyaWNzLT52ZXJ0QWR2YW5jZSA9IEZUX011bEZpeCggbWV0cmljcy0+dmVydEFkdmFuY2UsIHlfc2NhbGUgKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGNvbXB1dGUgdGhlIG90aGVyIG1ldHJpY3MgKi8KKyAgICAgICAgRlRfT3V0bGluZV9HZXRfQ0JveCggJnQxZ2x5cGgtPm91dGxpbmUsICZjYm94ICk7CisKKyAgICAgICAgbWV0cmljcy0+d2lkdGggID0gY2JveC54TWF4IC0gY2JveC54TWluOworICAgICAgICBtZXRyaWNzLT5oZWlnaHQgPSBjYm94LnlNYXggLSBjYm94LnlNaW47CisKKyAgICAgICAgbWV0cmljcy0+aG9yaUJlYXJpbmdYID0gY2JveC54TWluOworICAgICAgICBtZXRyaWNzLT5ob3JpQmVhcmluZ1kgPSBjYm94LnlNYXg7CisKKyAgICAgICAgaWYgKCBsb2FkX2ZsYWdzICYgRlRfTE9BRF9WRVJUSUNBTF9MQVlPVVQgKQorICAgICAgICB7CisgICAgICAgICAgLyogbWFrZSB1cCB2ZXJ0aWNhbCBvbmVzICovCisgICAgICAgICAgZnRfc3ludGhlc2l6ZV92ZXJ0aWNhbF9tZXRyaWNzKCBtZXRyaWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljcy0+dmVydEFkdmFuY2UgKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvKiBTZXQgY29udHJvbCBkYXRhIHRvIHRoZSBnbHlwaCBjaGFyc3RyaW5ncy4gIE5vdGUgdGhhdCB0aGlzIGlzICovCisgICAgICAvKiBfbm90XyB6ZXJvLXRlcm1pbmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICB0MWdseXBoLT5jb250cm9sX2RhdGEgPSAoRlRfQnl0ZSopZ2x5cGhfZGF0YS5wb2ludGVyOworICAgICAgdDFnbHlwaC0+Y29udHJvbF9sZW4gID0gZ2x5cGhfZGF0YS5sZW5ndGg7CisgICAgfQorCisKKyAgRXhpdDoKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyAgICBpZiAoIGdseXBoX2RhdGFfbG9hZGVkICYmIGZhY2UtPnJvb3QuaW50ZXJuYWwtPmluY3JlbWVudGFsX2ludGVyZmFjZSApCisgICAgeworICAgICAgZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlLT5mdW5jcy0+ZnJlZV9nbHlwaF9kYXRhKAorICAgICAgICBmYWNlLT5yb290LmludGVybmFsLT5pbmNyZW1lbnRhbF9pbnRlcmZhY2UtPm9iamVjdCwKKyAgICAgICAgJmdseXBoX2RhdGEgKTsKKworICAgICAgLyogU2V0IHRoZSBjb250cm9sIGRhdGEgdG8gbnVsbCAtIGl0IGlzIG5vIGxvbmdlciBhdmFpbGFibGUgaWYgICAqLworICAgICAgLyogbG9hZGVkIGluY3JlbWVudGFsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgdDFnbHlwaC0+Y29udHJvbF9kYXRhID0gMDsKKyAgICAgIHQxZ2x5cGgtPmNvbnRyb2xfbGVuICA9IDA7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIG11c3RfZmluaXNoX2RlY29kZXIgKQorICAgICAgZGVjb2Rlcl9mdW5jcy0+ZG9uZSggJmRlY29kZXIgKTsKKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWdsb2FkLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3QxZ2xvYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGY0Y2ZhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWdsb2FkLmgKQEAgLTAsMCArMSw1MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdDFnbG9hZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFR5cGUgMSBHbHlwaCBMb2FkZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIsIDIwMDMsIDIwMDgsIDIwMTEgYnkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmIF9fVDFHTE9BRF9IX18KKyNkZWZpbmUgX19UMUdMT0FEX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAidDFvYmpzLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUMV9Db21wdXRlX01heF9BZHZhbmNlKCBUMV9GYWNlICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGVF9Qb3MqICBtYXhfYWR2YW5jZSApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIFQxX0dldF9BZHZhbmNlcyggRlRfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICBGVF9JbnQzMiAgIGxvYWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBhZHZhbmNlcyApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIFQxX0xvYWRfR2x5cGgoIEZUX0dseXBoU2xvdCAgZ2x5cGgsCisgICAgICAgICAgICAgICAgIEZUX1NpemUgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAgRlRfVUludCAgICAgICBnbHlwaF9pbmRleCwKKyAgICAgICAgICAgICAgICAgRlRfSW50MzIgICAgICBsb2FkX2ZsYWdzICk7CisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UMUdMT0FEX0hfXyAqLworCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWxvYWQuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFsb2FkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZlMzZmOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFsb2FkLmMKQEAgLTAsMCArMSwyMjcyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MWxvYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHlwZSAxIGZvbnQgbG9hZGVyIChib2R5KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIGlzIHRoZSBuZXcgYW5kIGltcHJvdmVkIFR5cGUgMSBkYXRhIGxvYWRlciBmb3IgRnJlZVR5cGUgMi4gIFRoZSAgKi8KKyAgLyogb2xkIGxvYWRlciBoYXMgc2V2ZXJhbCBwcm9ibGVtczogaXQgaXMgc2xvdywgY29tcGxleCwgZGlmZmljdWx0IHRvICAgICovCisgIC8qIG1haW50YWluLCBhbmQgY29udGFpbnMgaW5jcmVkaWJsZSBoYWNrcyB0byBtYWtlIGl0IGFjY2VwdCBzb21lICAgICAgICAqLworICAvKiBpbGwtZm9ybWVkIFR5cGUgMSBmb250cyB3aXRob3V0IGhpY2N1cC1pbmcuICBNb3Jlb3ZlciwgYWJvdXQgNSUgb2YgICAgKi8KKyAgLyogdGhlIFR5cGUgMSBmb250cyBvbiBteSBtYWNoaW5lIHN0aWxsIGFyZW4ndCBsb2FkZWQgY29ycmVjdGx5IGJ5IGl0LiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGlzIHZlcnNpb24gaXMgbXVjaCBzaW1wbGVyLCBtdWNoIGZhc3RlciBhbmQgYWxzbyBlYXNpZXIgdG8gcmVhZCBhbmQgKi8KKyAgLyogbWFpbnRhaW4gYnkgYSBncmVhdCBvcmRlciBvZiBtYWduaXR1ZGUuICBUaGUgaWRlYSBiZWhpbmQgaXQgaXMgdG8gICAgICovCisgIC8qIF9ub3RfIHRyeSB0byByZWFkIHRoZSBUeXBlIDEgdG9rZW4gc3RyZWFtIHdpdGggYSBzdGF0ZSBtYWNoaW5lIChpLmUuICAqLworICAvKiBhIFBvc3RzY3JpcHQtbGlrZSBpbnRlcnByZXRlcikgYnV0IHJhdGhlciB0byBwZXJmb3JtIHNpbXBsZSBwYXR0ZXJuICAgKi8KKyAgLyogbWF0Y2hpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBJbmRlZWQsIG5lYXJseSBhbGwgZGF0YSBkZWZpbml0aW9ucyBmb2xsb3cgYSBzaW1wbGUgcGF0dGVybiBsaWtlICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAuLi4gL0ZpZWxkIDxkYXRhPiAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogd2hlcmUgPGRhdGE+IGNhbiBiZSBhIG51bWJlciwgYSBib29sZWFuLCBhIHN0cmluZywgb3IgYW4gYXJyYXkgb2YgICAgICovCisgIC8qIG51bWJlcnMuICBUaGVyZSBhcmUgYSBmZXcgZXhjZXB0aW9ucywgbmFtZWx5IHRoZSBlbmNvZGluZywgZm9udCBuYW1lLCAqLworICAvKiBjaGFyc3RyaW5ncywgYW5kIHN1YnJzOyB0aGV5IGFyZSBoYW5kbGVkIHdpdGggYSBzcGVjaWFsIHBhdHRlcm4gICAgICAgKi8KKyAgLyogbWF0Y2hpbmcgcm91dGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBBbGwgb3RoZXIgY29tbW9uIGNhc2VzIGFyZSBoYW5kbGVkIHZlcnkgc2ltcGx5LiAgVGhlIG1hdGNoaW5nIHJ1bGVzICAgKi8KKyAgLyogYXJlIGRlZmluZWQgaW4gdGhlIGZpbGUgYHQxdG9rZW5zLmgnIHRocm91Z2ggdGhlIHVzZSBvZiBzZXZlcmFsICAgICAgICovCisgIC8qIG1hY3JvcyBjYWxscyBQQVJTRV9YWFguICBUaGlzIGZpbGUgaXMgaW5jbHVkZWQgdHdpY2UgaGVyZTsgdGhlIGZpcnN0ICAqLworICAvKiB0aW1lIHRvIGdlbmVyYXRlIHBhcnNpbmcgY2FsbGJhY2sgZnVuY3Rpb25zLCB0aGUgc2Vjb25kIHRpbWUgdG8gICAgICAgKi8KKyAgLyogZ2VuZXJhdGUgYSB0YWJsZSBvZiBrZXl3b3JkcyAod2l0aCBwb2ludGVycyB0byB0aGUgYXNzb2NpYXRlZCAgICAgICAgICovCisgIC8qIGNhbGxiYWNrIGZ1bmN0aW9ucykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogVGhlIGZ1bmN0aW9uIGBwYXJzZV9kaWN0JyBzaW1wbHkgc2NhbnMgKmxpbmVhcmx5KiBhIGdpdmVuIGRpY3Rpb25hcnkgICovCisgIC8qIChlaXRoZXIgdGhlIHRvcC1sZXZlbCBvciBwcml2YXRlIG9uZSkgYW5kIGNhbGxzIHRoZSBhcHByb3ByaWF0ZSAgICAgICAqLworICAvKiBjYWxsYmFjayB3aGVuIGl0IGVuY291bnRlcnMgYW4gaW1tZWRpYXRlIGtleXdvcmQuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgaXMgYnkgZmFyIHRoZSBmYXN0ZXN0IHdheSBvbmUgY2FuIGZpbmQgdG8gcGFyc2UgYW5kIHJlYWQgYWxsICAgICAqLworICAvKiBkYXRhLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIFRoaXMgbGVkIHRvIHRyZW1lbmRvdXMgY29kZSBzaXplIHJlZHVjdGlvbi4gIE5vdGUgdGhhdCBsYXRlciwgdGhlICAgICAqLworICAvKiBnbHlwaCBsb2FkZXIgd2lsbCBhbHNvIGJlIF9ncmVhdGx5XyBzaW1wbGlmaWVkLCBhbmQgdGhlIGF1dG9tYXRpYyAgICAgKi8KKyAgLyogaGludGVyIHdpbGwgcmVwbGFjZSB0aGUgY2x1bXN5IGB0MWhpbnRlcicuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9mdG1tLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCIKKworI2luY2x1ZGUgInQxbG9hZC5oIgorI2luY2x1ZGUgInQxZXJyb3JzLmgiCisKKworI2lmZGVmIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwKKyNkZWZpbmUgSVNfSU5DUkVNRU5UQUwgIChGVF9Cb29sKSggZmFjZS0+cm9vdC5pbnRlcm5hbC0+aW5jcmVtZW50YWxfaW50ZXJmYWNlICE9IDAgKQorI2Vsc2UKKyNkZWZpbmUgSVNfSU5DUkVNRU5UQUwgIDAKKyNlbmRpZgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfdDFsb2FkCisKKworI2lmbmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlQKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgTVVMVElQTEUgTUFTVEVSUyBTVVBQT1JUICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgIHN0YXRpYyBGVF9FcnJvcgorICB0MV9hbGxvY2F0ZV9ibGVuZCggVDFfRmFjZSAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgIG51bV9kZXNpZ25zLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgbnVtX2F4aXMgKQorICB7CisgICAgUFNfQmxlbmQgICBibGVuZDsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeSA9IGZhY2UtPnJvb3QubWVtb3J5OworICAgIEZUX0Vycm9yICAgZXJyb3IgID0gRlRfRXJyX09rOworCisKKyAgICBibGVuZCA9IGZhY2UtPmJsZW5kOworICAgIGlmICggIWJsZW5kICkKKyAgICB7CisgICAgICBpZiAoIEZUX05FVyggYmxlbmQgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKworICAgICAgYmxlbmQtPm51bV9kZWZhdWx0X2Rlc2lnbl92ZWN0b3IgPSAwOworCisgICAgICBmYWNlLT5ibGVuZCA9IGJsZW5kOworICAgIH0KKworICAgIC8qIGFsbG9jYXRlIGRlc2lnbiBkYXRhIGlmIG5lZWRlZCAqLworICAgIGlmICggbnVtX2Rlc2lnbnMgPiAwICkKKyAgICB7CisgICAgICBpZiAoIGJsZW5kLT5udW1fZGVzaWducyA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgRlRfVUludCAgbm47CisKKworICAgICAgICAvKiBhbGxvY2F0ZSB0aGUgYmxlbmQgYHByaXZhdGUnIGFuZCBgZm9udF9pbmZvJyBkaWN0aW9uYXJpZXMgKi8KKyAgICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGJsZW5kLT5mb250X2luZm9zWzFdLCBudW1fZGVzaWducyAgICAgKSB8fAorICAgICAgICAgICAgIEZUX05FV19BUlJBWSggYmxlbmQtPnByaXZhdGVzICBbMV0sIG51bV9kZXNpZ25zICAgICApIHx8CisgICAgICAgICAgICAgRlRfTkVXX0FSUkFZKCBibGVuZC0+YmJveGVzICAgIFsxXSwgbnVtX2Rlc2lnbnMgICAgICkgfHwKKyAgICAgICAgICAgICBGVF9ORVdfQVJSQVkoIGJsZW5kLT53ZWlnaHRfdmVjdG9yLCBudW1fZGVzaWducyAqIDIgKSApCisgICAgICAgICAgZ290byBFeGl0OworCisgICAgICAgIGJsZW5kLT5kZWZhdWx0X3dlaWdodF92ZWN0b3IgPSBibGVuZC0+d2VpZ2h0X3ZlY3RvciArIG51bV9kZXNpZ25zOworCisgICAgICAgIGJsZW5kLT5mb250X2luZm9zWzBdID0gJmZhY2UtPnR5cGUxLmZvbnRfaW5mbzsKKyAgICAgICAgYmxlbmQtPnByaXZhdGVzICBbMF0gPSAmZmFjZS0+dHlwZTEucHJpdmF0ZV9kaWN0OworICAgICAgICBibGVuZC0+YmJveGVzICAgIFswXSA9ICZmYWNlLT50eXBlMS5mb250X2Jib3g7CisKKyAgICAgICAgZm9yICggbm4gPSAyOyBubiA8PSBudW1fZGVzaWduczsgbm4rKyApCisgICAgICAgIHsKKyAgICAgICAgICBibGVuZC0+Zm9udF9pbmZvc1tubl0gPSBibGVuZC0+Zm9udF9pbmZvc1tubiAtIDFdICsgMTsKKyAgICAgICAgICBibGVuZC0+cHJpdmF0ZXMgIFtubl0gPSBibGVuZC0+cHJpdmF0ZXMgIFtubiAtIDFdICsgMTsKKyAgICAgICAgICBibGVuZC0+YmJveGVzICAgIFtubl0gPSBibGVuZC0+YmJveGVzICAgIFtubiAtIDFdICsgMTsKKyAgICAgICAgfQorCisgICAgICAgIGJsZW5kLT5udW1fZGVzaWducyA9IG51bV9kZXNpZ25zOworICAgICAgfQorICAgICAgZWxzZSBpZiAoIGJsZW5kLT5udW1fZGVzaWducyAhPSBudW1fZGVzaWducyApCisgICAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICAvKiBhbGxvY2F0ZSBheGlzIGRhdGEgaWYgbmVlZGVkICovCisgICAgaWYgKCBudW1fYXhpcyA+IDAgKQorICAgIHsKKyAgICAgIGlmICggYmxlbmQtPm51bV9heGlzICE9IDAgJiYgYmxlbmQtPm51bV9heGlzICE9IG51bV9heGlzICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBibGVuZC0+bnVtX2F4aXMgPSBudW1fYXhpczsKKyAgICB9CisKKyAgICAvKiBhbGxvY2F0ZSB0aGUgYmxlbmQgZGVzaWduIHBvcyB0YWJsZSBpZiBuZWVkZWQgKi8KKyAgICBudW1fZGVzaWducyA9IGJsZW5kLT5udW1fZGVzaWduczsKKyAgICBudW1fYXhpcyAgICA9IGJsZW5kLT5udW1fYXhpczsKKyAgICBpZiAoIG51bV9kZXNpZ25zICYmIG51bV9heGlzICYmIGJsZW5kLT5kZXNpZ25fcG9zWzBdID09IDAgKQorICAgIHsKKyAgICAgIEZUX1VJbnQgIG47CisKKworICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIGJsZW5kLT5kZXNpZ25fcG9zWzBdLCBudW1fZGVzaWducyAqIG51bV9heGlzICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGZvciAoIG4gPSAxOyBuIDwgbnVtX2Rlc2lnbnM7IG4rKyApCisgICAgICAgIGJsZW5kLT5kZXNpZ25fcG9zW25dID0gYmxlbmQtPmRlc2lnbl9wb3NbMF0gKyBudW1fYXhpcyAqIG47CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworCisgIEZhaWw6CisgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgIGdvdG8gRXhpdDsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFQxX0dldF9NdWx0aV9NYXN0ZXIoIFQxX0ZhY2UgICAgICAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZUX011bHRpX01hc3RlciogIG1hc3RlciApCisgIHsKKyAgICBQU19CbGVuZCAgYmxlbmQgPSBmYWNlLT5ibGVuZDsKKyAgICBGVF9VSW50ICAgbjsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisKKworICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfQXJndW1lbnQgKTsKKworICAgIGlmICggYmxlbmQgKQorICAgIHsKKyAgICAgIG1hc3Rlci0+bnVtX2F4aXMgICAgPSBibGVuZC0+bnVtX2F4aXM7CisgICAgICBtYXN0ZXItPm51bV9kZXNpZ25zID0gYmxlbmQtPm51bV9kZXNpZ25zOworCisgICAgICBmb3IgKCBuID0gMDsgbiA8IGJsZW5kLT5udW1fYXhpczsgbisrICkKKyAgICAgIHsKKyAgICAgICAgRlRfTU1fQXhpcyogICBheGlzID0gbWFzdGVyLT5heGlzICsgbjsKKyAgICAgICAgUFNfRGVzaWduTWFwICBtYXAgPSBibGVuZC0+ZGVzaWduX21hcCArIG47CisKKworICAgICAgICBheGlzLT5uYW1lICAgID0gYmxlbmQtPmF4aXNfbmFtZXNbbl07CisgICAgICAgIGF4aXMtPm1pbmltdW0gPSBtYXAtPmRlc2lnbl9wb2ludHNbMF07CisgICAgICAgIGF4aXMtPm1heGltdW0gPSBtYXAtPmRlc2lnbl9wb2ludHNbbWFwLT5udW1fcG9pbnRzIC0gMV07CisgICAgICB9CisKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBHaXZlbiBhIG5vcm1hbGl6ZWQgKGJsZW5kKSBjb29yZGluYXRlLCBmaWd1cmUgb3V0IHRoZSBkZXNpZ24gICAgICAgICAgKi8KKyAgLyogY29vcmRpbmF0ZSBhcHByb3ByaWF0ZSBmb3IgdGhhdCB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIEZUX0ZpeGVkICkKKyAgbW1fYXhpc191bm1hcCggUFNfRGVzaWduTWFwICBheGlzbWFwLAorICAgICAgICAgICAgICAgICBGVF9GaXhlZCAgICAgIG5jdiApCisgIHsKKyAgICBpbnQgIGo7CisKKworICAgIGlmICggbmN2IDw9IGF4aXNtYXAtPmJsZW5kX3BvaW50c1swXSApCisgICAgICByZXR1cm4gSU5UX1RPX0ZJWEVEKCBheGlzbWFwLT5kZXNpZ25fcG9pbnRzWzBdICk7CisKKyAgICBmb3IgKCBqID0gMTsgaiA8IGF4aXNtYXAtPm51bV9wb2ludHM7ICsraiApCisgICAgeworICAgICAgaWYgKCBuY3YgPD0gYXhpc21hcC0+YmxlbmRfcG9pbnRzW2pdICkKKyAgICAgICAgcmV0dXJuIElOVF9UT19GSVhFRCggYXhpc21hcC0+ZGVzaWduX3BvaW50c1tqIC0gMV0gKSArCisgICAgICAgICAgICAgICAoIGF4aXNtYXAtPmRlc2lnbl9wb2ludHNbal0gLSBheGlzbWFwLT5kZXNpZ25fcG9pbnRzW2ogLSAxXSApICoKKyAgICAgICAgICAgICAgIEZUX0RpdkZpeCggbmN2IC0gYXhpc21hcC0+YmxlbmRfcG9pbnRzW2ogLSAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXhpc21hcC0+YmxlbmRfcG9pbnRzW2pdIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGlzbWFwLT5ibGVuZF9wb2ludHNbaiAtIDFdICk7CisgICAgfQorCisgICAgcmV0dXJuIElOVF9UT19GSVhFRCggYXhpc21hcC0+ZGVzaWduX3BvaW50c1theGlzbWFwLT5udW1fcG9pbnRzIC0gMV0gKTsKKyAgfQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBHaXZlbiBhIHZlY3RvciBvZiB3ZWlnaHRzLCBvbmUgZm9yIGVhY2ggZGVzaWduLCBmaWd1cmUgb3V0IHRoZSAgICAgICAgKi8KKyAgLyogbm9ybWFsaXplZCBheGlzIGNvb3JkaW5hdGVzIHdoaWNoIGdhdmUgcmlzZSB0byB0aG9zZSB3ZWlnaHRzLiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBtbV93ZWlnaHRzX3VubWFwKCBGVF9GaXhlZCogIHdlaWdodHMsCisgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgYXhpc2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBheGlzX2NvdW50ICkKKyAgeworICAgIEZUX0FTU0VSVCggYXhpc19jb3VudCA8PSBUMV9NQVhfTU1fQVhJUyApOworCisgICAgaWYgKCBheGlzX2NvdW50ID09IDEgKQorICAgICAgYXhpc2Nvb3Jkc1swXSA9IHdlaWdodHNbMV07CisKKyAgICBlbHNlIGlmICggYXhpc19jb3VudCA9PSAyICkKKyAgICB7CisgICAgICBheGlzY29vcmRzWzBdID0gd2VpZ2h0c1szXSArIHdlaWdodHNbMV07CisgICAgICBheGlzY29vcmRzWzFdID0gd2VpZ2h0c1szXSArIHdlaWdodHNbMl07CisgICAgfQorCisgICAgZWxzZSBpZiAoIGF4aXNfY291bnQgPT0gMyApCisgICAgeworICAgICAgYXhpc2Nvb3Jkc1swXSA9IHdlaWdodHNbN10gKyB3ZWlnaHRzWzVdICsgd2VpZ2h0c1szXSArIHdlaWdodHNbMV07CisgICAgICBheGlzY29vcmRzWzFdID0gd2VpZ2h0c1s3XSArIHdlaWdodHNbNl0gKyB3ZWlnaHRzWzNdICsgd2VpZ2h0c1syXTsKKyAgICAgIGF4aXNjb29yZHNbMl0gPSB3ZWlnaHRzWzddICsgd2VpZ2h0c1s2XSArIHdlaWdodHNbNV0gKyB3ZWlnaHRzWzRdOworICAgIH0KKworICAgIGVsc2UKKyAgICB7CisgICAgICBheGlzY29vcmRzWzBdID0gd2VpZ2h0c1sxNV0gKyB3ZWlnaHRzWzEzXSArIHdlaWdodHNbMTFdICsgd2VpZ2h0c1s5XSArCisgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHRzWzddICsgd2VpZ2h0c1s1XSArIHdlaWdodHNbM10gKyB3ZWlnaHRzWzFdOworICAgICAgYXhpc2Nvb3Jkc1sxXSA9IHdlaWdodHNbMTVdICsgd2VpZ2h0c1sxNF0gKyB3ZWlnaHRzWzExXSArIHdlaWdodHNbMTBdICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodHNbN10gKyB3ZWlnaHRzWzZdICsgd2VpZ2h0c1szXSArIHdlaWdodHNbMl07CisgICAgICBheGlzY29vcmRzWzJdID0gd2VpZ2h0c1sxNV0gKyB3ZWlnaHRzWzE0XSArIHdlaWdodHNbMTNdICsgd2VpZ2h0c1sxMl0gKworICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0c1s3XSArIHdlaWdodHNbNl0gKyB3ZWlnaHRzWzVdICsgd2VpZ2h0c1s0XTsKKyAgICAgIGF4aXNjb29yZHNbM10gPSB3ZWlnaHRzWzE1XSArIHdlaWdodHNbMTRdICsgd2VpZ2h0c1sxM10gKyB3ZWlnaHRzWzEyXSArCisgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHRzWzExXSArIHdlaWdodHNbMTBdICsgd2VpZ2h0c1s5XSArIHdlaWdodHNbOF07CisgICAgfQorICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEp1c3QgYSB3cmFwcGVyIGFyb3VuZCBUMV9HZXRfTXVsdGlfTWFzdGVyIHRvIHN1cHBvcnQgdGhlIGRpZmZlcmVudCAgICAqLworICAvKiAgYXJndW1lbnRzIG5lZWRlZCBieSB0aGUgR1ggdmFyIGRpc3RvcnRhYmxlIGZvbnRzLiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBUMV9HZXRfTU1fVmFyKCBUMV9GYWNlICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgRlRfTU1fVmFyKiAgKm1hc3RlciApCisgIHsKKyAgICBGVF9NZW1vcnkgICAgICAgIG1lbW9yeSA9IGZhY2UtPnJvb3QubWVtb3J5OworICAgIEZUX01NX1ZhciAgICAgICAqbW12YXIgPSBOVUxMOworICAgIEZUX011bHRpX01hc3RlciAgbW1hc3RlcjsKKyAgICBGVF9FcnJvciAgICAgICAgIGVycm9yOworICAgIEZUX1VJbnQgICAgICAgICAgaTsKKyAgICBGVF9GaXhlZCAgICAgICAgIGF4aXNjb29yZHNbVDFfTUFYX01NX0FYSVNdOworICAgIFBTX0JsZW5kICAgICAgICAgYmxlbmQgPSBmYWNlLT5ibGVuZDsKKworCisgICAgZXJyb3IgPSBUMV9HZXRfTXVsdGlfTWFzdGVyKCBmYWNlLCAmbW1hc3RlciApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworICAgIGlmICggRlRfQUxMT0MoIG1tdmFyLAorICAgICAgICAgICAgICAgICAgIHNpemVvZiAoIEZUX01NX1ZhciApICsKKyAgICAgICAgICAgICAgICAgICAgIG1tYXN0ZXIubnVtX2F4aXMgKiBzaXplb2YgKCBGVF9WYXJfQXhpcyApICkgKQorICAgICAgZ290byBFeGl0OworCisgICAgbW12YXItPm51bV9heGlzICAgICAgICA9IG1tYXN0ZXIubnVtX2F4aXM7CisgICAgbW12YXItPm51bV9kZXNpZ25zICAgICA9IG1tYXN0ZXIubnVtX2Rlc2lnbnM7CisgICAgbW12YXItPm51bV9uYW1lZHN0eWxlcyA9IH4wVTsgICAgICAgICAgICAgICAgICAgICAgICAvKiBEb2VzIG5vdCBhcHBseSAqLworICAgIG1tdmFyLT5heGlzICAgICAgICAgICAgPSAoRlRfVmFyX0F4aXMqKSZtbXZhclsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUG9pbnQgdG8gYXhlcyBhZnRlciBNTV9WYXIgc3RydWN0ICovCisgICAgbW12YXItPm5hbWVkc3R5bGUgICAgICA9IE5VTEw7CisKKyAgICBmb3IgKCBpID0gMCA7IGkgPCBtbWFzdGVyLm51bV9heGlzOyArK2kgKQorICAgIHsKKyAgICAgIG1tdmFyLT5heGlzW2ldLm5hbWUgICAgPSBtbWFzdGVyLmF4aXNbaV0ubmFtZTsKKyAgICAgIG1tdmFyLT5heGlzW2ldLm1pbmltdW0gPSBJTlRfVE9fRklYRUQoIG1tYXN0ZXIuYXhpc1tpXS5taW5pbXVtKTsKKyAgICAgIG1tdmFyLT5heGlzW2ldLm1heGltdW0gPSBJTlRfVE9fRklYRUQoIG1tYXN0ZXIuYXhpc1tpXS5tYXhpbXVtKTsKKyAgICAgIG1tdmFyLT5heGlzW2ldLmRlZiAgICAgPSAoIG1tdmFyLT5heGlzW2ldLm1pbmltdW0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbXZhci0+YXhpc1tpXS5tYXhpbXVtICkgLyAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERvZXMgbm90IGFwcGx5LiAgQnV0IHRoaXMgdmFsdWUgaXMgaW4gcmFuZ2UgKi8KKyAgICAgIG1tdmFyLT5heGlzW2ldLnN0cmlkICAgPSB+MFU7ICAgICAgICAgICAgICAgICAgICAgIC8qIERvZXMgbm90IGFwcGx5ICovCisgICAgICBtbXZhci0+YXhpc1tpXS50YWcgICAgID0gfjBVOyAgICAgICAgICAgICAgICAgICAgICAvKiBEb2VzIG5vdCBhcHBseSAqLworCisgICAgICBpZiAoIGZ0X3N0cmNtcCggbW12YXItPmF4aXNbaV0ubmFtZSwgIldlaWdodCIgKSA9PSAwICkKKyAgICAgICAgbW12YXItPmF4aXNbaV0udGFnID0gRlRfTUFLRV9UQUcoICd3JywgJ2cnLCAnaCcsICd0JyApOworICAgICAgZWxzZSBpZiAoIGZ0X3N0cmNtcCggbW12YXItPmF4aXNbaV0ubmFtZSwgIldpZHRoIiApID09IDAgKQorICAgICAgICBtbXZhci0+YXhpc1tpXS50YWcgPSBGVF9NQUtFX1RBRyggJ3cnLCAnZCcsICd0JywgJ2gnICk7CisgICAgICBlbHNlIGlmICggZnRfc3RyY21wKCBtbXZhci0+YXhpc1tpXS5uYW1lLCAiT3B0aWNhbFNpemUiICkgPT0gMCApCisgICAgICAgIG1tdmFyLT5heGlzW2ldLnRhZyA9IEZUX01BS0VfVEFHKCAnbycsICdwJywgJ3MnLCAneicgKTsKKyAgICB9CisKKyAgICBpZiAoIGJsZW5kLT5udW1fZGVzaWducyA9PSAoIDFVIDw8IGJsZW5kLT5udW1fYXhpcyApICkKKyAgICB7CisgICAgICBtbV93ZWlnaHRzX3VubWFwKCBibGVuZC0+ZGVmYXVsdF93ZWlnaHRfdmVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgYXhpc2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kLT5udW1fYXhpcyApOworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IG1tYXN0ZXIubnVtX2F4aXM7ICsraSApCisgICAgICAgIG1tdmFyLT5heGlzW2ldLmRlZiA9IG1tX2F4aXNfdW5tYXAoICZibGVuZC0+ZGVzaWduX21hcFtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhpc2Nvb3Jkc1tpXSApOworICAgIH0KKworICAgICptYXN0ZXIgPSBtbXZhcjsKKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFQxX1NldF9NTV9CbGVuZCggVDFfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICBGVF9GaXhlZCogIGNvb3JkcyApCisgIHsKKyAgICBQU19CbGVuZCAgYmxlbmQgPSBmYWNlLT5ibGVuZDsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisgICAgRlRfVUludCAgIG4sIG07CisKKworICAgIGVycm9yID0gRlRfRVJSKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisKKyAgICBpZiAoIGJsZW5kICYmIGJsZW5kLT5udW1fYXhpcyA9PSBudW1fY29vcmRzICkKKyAgICB7CisgICAgICAvKiByZWNvbXB1dGUgdGhlIHdlaWdodCB2ZWN0b3IgZnJvbSB0aGUgYmxlbmQgY29vcmRpbmF0ZXMgKi8KKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworCisgICAgICBmb3IgKCBuID0gMDsgbiA8IGJsZW5kLT5udW1fZGVzaWduczsgbisrICkKKyAgICAgIHsKKyAgICAgICAgRlRfRml4ZWQgIHJlc3VsdCA9IDB4MTAwMDBMOyAgLyogMS4wIGZpeGVkICovCisKKworICAgICAgICBmb3IgKCBtID0gMDsgbSA8IGJsZW5kLT5udW1fYXhpczsgbSsrICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0ZpeGVkICBmYWN0b3I7CisKKworICAgICAgICAgIC8qIGdldCBjdXJyZW50IGJsZW5kIGF4aXMgcG9zaXRpb24gKi8KKyAgICAgICAgICBmYWN0b3IgPSBjb29yZHNbbV07CisgICAgICAgICAgaWYgKCBmYWN0b3IgPCAwICkKKyAgICAgICAgICAgIGZhY3RvciA9IDA7CisgICAgICAgICAgaWYgKCBmYWN0b3IgPiAweDEwMDAwTCApCisgICAgICAgICAgICBmYWN0b3IgPSAweDEwMDAwTDsKKworICAgICAgICAgIGlmICggKCBuICYgKCAxIDw8IG0gKSApID09IDAgKQorICAgICAgICAgICAgZmFjdG9yID0gMHgxMDAwMEwgLSBmYWN0b3I7CisKKyAgICAgICAgICByZXN1bHQgPSBGVF9NdWxGaXgoIHJlc3VsdCwgZmFjdG9yICk7CisgICAgICAgIH0KKyAgICAgICAgYmxlbmQtPndlaWdodF92ZWN0b3Jbbl0gPSByZXN1bHQ7CisgICAgICB9CisKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFQxX1NldF9NTV9EZXNpZ24oIFQxX0ZhY2UgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyogIGNvb3JkcyApCisgIHsKKyAgICBQU19CbGVuZCAgYmxlbmQgPSBmYWNlLT5ibGVuZDsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisgICAgRlRfVUludCAgIG4sIHA7CisKKworICAgIGVycm9yID0gRlRfRVJSKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgaWYgKCBibGVuZCAmJiBibGVuZC0+bnVtX2F4aXMgPT0gbnVtX2Nvb3JkcyApCisgICAgeworICAgICAgLyogY29tcHV0ZSB0aGUgYmxlbmQgY29vcmRpbmF0ZXMgdGhyb3VnaCB0aGUgYmxlbmQgZGVzaWduIG1hcCAqLworICAgICAgRlRfRml4ZWQgIGZpbmFsX2JsZW5kc1tUMV9NQVhfTU1fREVTSUdOU107CisKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBibGVuZC0+bnVtX2F4aXM7IG4rKyApCisgICAgICB7CisgICAgICAgIEZUX0xvbmcgICAgICAgZGVzaWduICA9IGNvb3Jkc1tuXTsKKyAgICAgICAgRlRfRml4ZWQgICAgICB0aGVfYmxlbmQ7CisgICAgICAgIFBTX0Rlc2lnbk1hcCAgbWFwICAgICA9IGJsZW5kLT5kZXNpZ25fbWFwICsgbjsKKyAgICAgICAgRlRfTG9uZyogICAgICBkZXNpZ25zID0gbWFwLT5kZXNpZ25fcG9pbnRzOworICAgICAgICBGVF9GaXhlZCogICAgIGJsZW5kcyAgPSBtYXAtPmJsZW5kX3BvaW50czsKKyAgICAgICAgRlRfSW50ICAgICAgICBiZWZvcmUgID0gLTEsIGFmdGVyID0gLTE7CisKKworICAgICAgICBmb3IgKCBwID0gMDsgcCA8IChGVF9VSW50KW1hcC0+bnVtX3BvaW50czsgcCsrICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0xvbmcgIHBfZGVzaWduID0gZGVzaWduc1twXTsKKworCisgICAgICAgICAgLyogZXhhY3QgbWF0Y2g/ICovCisgICAgICAgICAgaWYgKCBkZXNpZ24gPT0gcF9kZXNpZ24gKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHRoZV9ibGVuZCA9IGJsZW5kc1twXTsKKyAgICAgICAgICAgIGdvdG8gRm91bmQ7CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKCBkZXNpZ24gPCBwX2Rlc2lnbiApCisgICAgICAgICAgeworICAgICAgICAgICAgYWZ0ZXIgPSBwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorCisgICAgICAgICAgYmVmb3JlID0gcDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIG5vdyBpbnRlcnBvbGF0ZSBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgaWYgKCBiZWZvcmUgPCAwICkKKyAgICAgICAgICB0aGVfYmxlbmQgPSBibGVuZHNbMF07CisKKyAgICAgICAgZWxzZSBpZiAoIGFmdGVyIDwgMCApCisgICAgICAgICAgdGhlX2JsZW5kID0gYmxlbmRzW21hcC0+bnVtX3BvaW50cyAtIDFdOworCisgICAgICAgIGVsc2UKKyAgICAgICAgICB0aGVfYmxlbmQgPSBGVF9NdWxEaXYoIGRlc2lnbiAgICAgICAgIC0gZGVzaWduc1tiZWZvcmVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRzIFthZnRlcl0gLSBibGVuZHMgW2JlZm9yZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ25zW2FmdGVyXSAtIGRlc2lnbnNbYmVmb3JlXSApOworCisgICAgICBGb3VuZDoKKyAgICAgICAgZmluYWxfYmxlbmRzW25dID0gdGhlX2JsZW5kOworICAgICAgfQorCisgICAgICBlcnJvciA9IFQxX1NldF9NTV9CbGVuZCggZmFjZSwgbnVtX2Nvb3JkcywgZmluYWxfYmxlbmRzICk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIEp1c3QgYSB3cmFwcGVyIGFyb3VuZCBUMV9TZXRfTU1fRGVzaWduIHRvIHN1cHBvcnQgdGhlIGRpZmZlcmVudCAgICAgICAqLworICAvKiBhcmd1bWVudHMgbmVlZGVkIGJ5IHRoZSBHWCB2YXIgZGlzdG9ydGFibGUgZm9udHMuICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBUMV9TZXRfVmFyX0Rlc2lnbiggVDFfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgICBudW1fY29vcmRzLAorICAgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZHMgKQorICB7CisgICAgIEZUX0xvbmcgICBsY29vcmRzWzRdOyAgICAgICAgICAvKiBtYXhpbXVtIGF4aXMgY291bnQgaXMgNCAqLworICAgICBGVF9VSW50ICAgaTsKKyAgICAgRlRfRXJyb3IgIGVycm9yOworCisKKyAgICAgZXJyb3IgPSBGVF9FUlIoIEludmFsaWRfQXJndW1lbnQgKTsKKyAgICAgaWYgKCBudW1fY29vcmRzIDw9IDQgJiYgbnVtX2Nvb3JkcyA+IDAgKQorICAgICB7CisgICAgICAgZm9yICggaSA9IDA7IGkgPCBudW1fY29vcmRzOyArK2kgKQorICAgICAgICAgbGNvb3Jkc1tpXSA9IEZJWEVEX1RPX0lOVCggY29vcmRzW2ldICk7CisgICAgICAgZXJyb3IgPSBUMV9TZXRfTU1fRGVzaWduKCBmYWNlLCBudW1fY29vcmRzLCBsY29vcmRzICk7CisgICAgIH0KKworICAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggdm9pZCApCisgIFQxX0RvbmVfQmxlbmQoIFQxX0ZhY2UgIGZhY2UgKQorICB7CisgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKyAgICBQU19CbGVuZCAgIGJsZW5kICA9IGZhY2UtPmJsZW5kOworCisKKyAgICBpZiAoIGJsZW5kICkKKyAgICB7CisgICAgICBGVF9VSW50ICBudW1fZGVzaWducyA9IGJsZW5kLT5udW1fZGVzaWduczsKKyAgICAgIEZUX1VJbnQgIG51bV9heGlzICAgID0gYmxlbmQtPm51bV9heGlzOworICAgICAgRlRfVUludCAgbjsKKworCisgICAgICAvKiByZWxlYXNlIGRlc2lnbiBwb3MgdGFibGUgKi8KKyAgICAgIEZUX0ZSRUUoIGJsZW5kLT5kZXNpZ25fcG9zWzBdICk7CisgICAgICBmb3IgKCBuID0gMTsgbiA8IG51bV9kZXNpZ25zOyBuKysgKQorICAgICAgICBibGVuZC0+ZGVzaWduX3Bvc1tuXSA9IE5VTEw7CisKKyAgICAgIC8qIHJlbGVhc2UgYmxlbmQgYHByaXZhdGUnIGFuZCBgZm9udCBpbmZvJyBkaWN0aW9uYXJpZXMgKi8KKyAgICAgIEZUX0ZSRUUoIGJsZW5kLT5wcml2YXRlc1sxXSApOworICAgICAgRlRfRlJFRSggYmxlbmQtPmZvbnRfaW5mb3NbMV0gKTsKKyAgICAgIEZUX0ZSRUUoIGJsZW5kLT5iYm94ZXNbMV0gKTsKKworICAgICAgZm9yICggbiA9IDA7IG4gPCBudW1fZGVzaWduczsgbisrICkKKyAgICAgIHsKKyAgICAgICAgYmxlbmQtPnByaXZhdGVzICBbbl0gPSBOVUxMOworICAgICAgICBibGVuZC0+Zm9udF9pbmZvc1tuXSA9IE5VTEw7CisgICAgICAgIGJsZW5kLT5iYm94ZXMgICAgW25dID0gTlVMTDsKKyAgICAgIH0KKworICAgICAgLyogcmVsZWFzZSB3ZWlnaHQgdmVjdG9ycyAqLworICAgICAgRlRfRlJFRSggYmxlbmQtPndlaWdodF92ZWN0b3IgKTsKKyAgICAgIGJsZW5kLT5kZWZhdWx0X3dlaWdodF92ZWN0b3IgPSBOVUxMOworCisgICAgICAvKiByZWxlYXNlIGF4aXMgbmFtZXMgKi8KKyAgICAgIGZvciAoIG4gPSAwOyBuIDwgbnVtX2F4aXM7IG4rKyApCisgICAgICAgIEZUX0ZSRUUoIGJsZW5kLT5heGlzX25hbWVzW25dICk7CisKKyAgICAgIC8qIHJlbGVhc2UgZGVzaWduIG1hcCAqLworICAgICAgZm9yICggbiA9IDA7IG4gPCBudW1fYXhpczsgbisrICkKKyAgICAgIHsKKyAgICAgICAgUFNfRGVzaWduTWFwICBkbWFwID0gYmxlbmQtPmRlc2lnbl9tYXAgKyBuOworCisKKyAgICAgICAgRlRfRlJFRSggZG1hcC0+ZGVzaWduX3BvaW50cyApOworICAgICAgICBkbWFwLT5udW1fcG9pbnRzID0gMDsKKyAgICAgIH0KKworICAgICAgRlRfRlJFRSggZmFjZS0+YmxlbmQgKTsKKyAgICB9CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIHBhcnNlX2JsZW5kX2F4aXNfdHlwZXMoIFQxX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVDFfTG9hZGVyICBsb2FkZXIgKQorICB7CisgICAgVDFfVG9rZW5SZWMgIGF4aXNfdG9rZW5zW1QxX01BWF9NTV9BWElTXTsKKyAgICBGVF9JbnQgICAgICAgbiwgbnVtX2F4aXM7CisgICAgRlRfRXJyb3IgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIFBTX0JsZW5kICAgICBibGVuZDsKKyAgICBGVF9NZW1vcnkgICAgbWVtb3J5OworCisKKyAgICAvKiB0YWtlIGFuIGFycmF5IG9mIG9iamVjdHMgKi8KKyAgICBUMV9Ub1Rva2VuQXJyYXkoICZsb2FkZXItPnBhcnNlciwgYXhpc190b2tlbnMsCisgICAgICAgICAgICAgICAgICAgICBUMV9NQVhfTU1fQVhJUywgJm51bV9heGlzICk7CisgICAgaWYgKCBudW1fYXhpcyA8IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfRVJSKCBJZ25vcmUgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisgICAgaWYgKCBudW1fYXhpcyA9PSAwIHx8IG51bV9heGlzID4gVDFfTUFYX01NX0FYSVMgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggInBhcnNlX2JsZW5kX2F4aXNfdHlwZXM6IGluY29ycmVjdCBudW1iZXIgb2YgYXhlczogJWRcbiIsCisgICAgICAgICAgICAgICAgIG51bV9heGlzICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIC8qIGFsbG9jYXRlIGJsZW5kIGlmIG5lY2Vzc2FyeSAqLworICAgIGVycm9yID0gdDFfYWxsb2NhdGVfYmxlbmQoIGZhY2UsIDAsIChGVF9VSW50KW51bV9heGlzICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBibGVuZCAgPSBmYWNlLT5ibGVuZDsKKyAgICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKworICAgIC8qIGVhY2ggdG9rZW4gaXMgYW4gaW1tZWRpYXRlIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGF4aXMgKi8KKyAgICBmb3IgKCBuID0gMDsgbiA8IG51bV9heGlzOyBuKysgKQorICAgIHsKKyAgICAgIFQxX1Rva2VuICAgIHRva2VuID0gYXhpc190b2tlbnMgKyBuOworICAgICAgRlRfQnl0ZSogICAgbmFtZTsKKyAgICAgIEZUX1B0ckRpc3QgIGxlbjsKKworCisgICAgICAvKiBza2lwIGZpcnN0IHNsYXNoLCBpZiBhbnkgKi8KKyAgICAgIGlmICggdG9rZW4tPnN0YXJ0WzBdID09ICcvJyApCisgICAgICAgIHRva2VuLT5zdGFydCsrOworCisgICAgICBsZW4gPSB0b2tlbi0+bGltaXQgLSB0b2tlbi0+c3RhcnQ7CisgICAgICBpZiAoIGxlbiA9PSAwICkKKyAgICAgIHsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIGlmICggRlRfQUxMT0MoIGJsZW5kLT5heGlzX25hbWVzW25dLCAoRlRfTG9uZykoIGxlbiArIDEgKSApICkKKyAgICAgICAgZ290byBFeGl0OworCisgICAgICBuYW1lID0gKEZUX0J5dGUqKWJsZW5kLT5heGlzX25hbWVzW25dOworICAgICAgRlRfTUVNX0NPUFkoIG5hbWUsIHRva2VuLT5zdGFydCwgbGVuICk7CisgICAgICBuYW1lW2xlbl0gPSAnXDAnOworICAgIH0KKworICBFeGl0OgorICAgIGxvYWRlci0+cGFyc2VyLnJvb3QuZXJyb3IgPSBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgcGFyc2VfYmxlbmRfZGVzaWduX3Bvc2l0aW9ucyggVDFfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMV9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBUMV9Ub2tlblJlYyAgZGVzaWduX3Rva2Vuc1tUMV9NQVhfTU1fREVTSUdOU107CisgICAgRlRfSW50ICAgICAgIG51bV9kZXNpZ25zOworICAgIEZUX0ludCAgICAgICBudW1fYXhpczsKKyAgICBUMV9QYXJzZXIgICAgcGFyc2VyID0gJmxvYWRlci0+cGFyc2VyOworCisgICAgRlRfRXJyb3IgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIFBTX0JsZW5kICAgICBibGVuZDsKKworCisgICAgLyogZ2V0IHRoZSBhcnJheSBvZiBkZXNpZ24gdG9rZW5zIC0tIGNvbXB1dGUgbnVtYmVyIG9mIGRlc2lnbnMgKi8KKyAgICBUMV9Ub1Rva2VuQXJyYXkoIHBhcnNlciwgZGVzaWduX3Rva2VucywKKyAgICAgICAgICAgICAgICAgICAgIFQxX01BWF9NTV9ERVNJR05TLCAmbnVtX2Rlc2lnbnMgKTsKKyAgICBpZiAoIG51bV9kZXNpZ25zIDwgMCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9FUlIoIElnbm9yZSApOworICAgICAgZ290byBFeGl0OworICAgIH0KKyAgICBpZiAoIG51bV9kZXNpZ25zID09IDAgfHwgbnVtX2Rlc2lnbnMgPiBUMV9NQVhfTU1fREVTSUdOUyApCisgICAgeworICAgICAgRlRfRVJST1IoKCAicGFyc2VfYmxlbmRfZGVzaWduX3Bvc2l0aW9uczoiCisgICAgICAgICAgICAgICAgICIgaW5jb3JyZWN0IG51bWJlciBvZiBkZXNpZ25zOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgbnVtX2Rlc2lnbnMgKSk7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgeworICAgICAgRlRfQnl0ZSogIG9sZF9jdXJzb3IgPSBwYXJzZXItPnJvb3QuY3Vyc29yOworICAgICAgRlRfQnl0ZSogIG9sZF9saW1pdCAgPSBwYXJzZXItPnJvb3QubGltaXQ7CisgICAgICBGVF9JbnQgICAgbjsKKworCisgICAgICBibGVuZCAgICA9IGZhY2UtPmJsZW5kOworICAgICAgbnVtX2F4aXMgPSAwOyAgLyogbWFrZSBjb21waWxlciBoYXBweSAqLworCisgICAgICBmb3IgKCBuID0gMDsgbiA8IG51bV9kZXNpZ25zOyBuKysgKQorICAgICAgeworICAgICAgICBUMV9Ub2tlblJlYyAgYXhpc190b2tlbnNbVDFfTUFYX01NX0FYSVNdOworICAgICAgICBUMV9Ub2tlbiAgICAgdG9rZW47CisgICAgICAgIEZUX0ludCAgICAgICBheGlzLCBuX2F4aXM7CisKKworICAgICAgICAvKiByZWFkIGF4aXMvY29vcmRpbmF0ZXMgdG9rZW5zICovCisgICAgICAgIHRva2VuID0gZGVzaWduX3Rva2VucyArIG47CisgICAgICAgIHBhcnNlci0+cm9vdC5jdXJzb3IgPSB0b2tlbi0+c3RhcnQ7CisgICAgICAgIHBhcnNlci0+cm9vdC5saW1pdCAgPSB0b2tlbi0+bGltaXQ7CisgICAgICAgIFQxX1RvVG9rZW5BcnJheSggcGFyc2VyLCBheGlzX3Rva2VucywgVDFfTUFYX01NX0FYSVMsICZuX2F4aXMgKTsKKworICAgICAgICBpZiAoIG4gPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIG5fYXhpcyA8PSAwIHx8IG5fYXhpcyA+IFQxX01BWF9NTV9BWElTICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBGVF9FUlJPUigoICJwYXJzZV9ibGVuZF9kZXNpZ25fcG9zaXRpb25zOiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiBpbnZhbGlkIG51bWJlciBvZiBheGVzOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgbl9heGlzICkpOworICAgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgIH0KKworICAgICAgICAgIG51bV9heGlzID0gbl9heGlzOworICAgICAgICAgIGVycm9yID0gdDFfYWxsb2NhdGVfYmxlbmQoIGZhY2UsIG51bV9kZXNpZ25zLCBudW1fYXhpcyApOworICAgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgIGJsZW5kID0gZmFjZS0+YmxlbmQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIG5fYXhpcyAhPSBudW1fYXhpcyApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9FUlJPUigoICJwYXJzZV9ibGVuZF9kZXNpZ25fcG9zaXRpb25zOiBpbmNvcnJlY3QgdGFibGVcbiIgKSk7CisgICAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIG5vdyByZWFkIGVhY2ggYXhpcyB0b2tlbiBpbnRvIHRoZSBkZXNpZ24gcG9zaXRpb24gKi8KKyAgICAgICAgZm9yICggYXhpcyA9IDA7IGF4aXMgPCBuX2F4aXM7IGF4aXMrKyApCisgICAgICAgIHsKKyAgICAgICAgICBUMV9Ub2tlbiAgdG9rZW4yID0gYXhpc190b2tlbnMgKyBheGlzOworCisKKyAgICAgICAgICBwYXJzZXItPnJvb3QuY3Vyc29yID0gdG9rZW4yLT5zdGFydDsKKyAgICAgICAgICBwYXJzZXItPnJvb3QubGltaXQgID0gdG9rZW4yLT5saW1pdDsKKyAgICAgICAgICBibGVuZC0+ZGVzaWduX3Bvc1tuXVtheGlzXSA9IFQxX1RvRml4ZWQoIHBhcnNlciwgMCApOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGxvYWRlci0+cGFyc2VyLnJvb3QuY3Vyc29yID0gb2xkX2N1cnNvcjsKKyAgICAgIGxvYWRlci0+cGFyc2VyLnJvb3QubGltaXQgID0gb2xkX2xpbWl0OworICAgIH0KKworICBFeGl0OgorICAgIGxvYWRlci0+cGFyc2VyLnJvb3QuZXJyb3IgPSBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgcGFyc2VfYmxlbmRfZGVzaWduX21hcCggVDFfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBUMV9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBGVF9FcnJvciAgICAgZXJyb3IgID0gRlRfRXJyX09rOworICAgIFQxX1BhcnNlciAgICBwYXJzZXIgPSAmbG9hZGVyLT5wYXJzZXI7CisgICAgUFNfQmxlbmQgICAgIGJsZW5kOworICAgIFQxX1Rva2VuUmVjICBheGlzX3Rva2Vuc1tUMV9NQVhfTU1fQVhJU107CisgICAgRlRfSW50ICAgICAgIG4sIG51bV9heGlzOworICAgIEZUX0J5dGUqICAgICBvbGRfY3Vyc29yOworICAgIEZUX0J5dGUqICAgICBvbGRfbGltaXQ7CisgICAgRlRfTWVtb3J5ICAgIG1lbW9yeSA9IGZhY2UtPnJvb3QubWVtb3J5OworCisKKyAgICBUMV9Ub1Rva2VuQXJyYXkoIHBhcnNlciwgYXhpc190b2tlbnMsCisgICAgICAgICAgICAgICAgICAgICBUMV9NQVhfTU1fQVhJUywgJm51bV9heGlzICk7CisgICAgaWYgKCBudW1fYXhpcyA8IDAgKQorICAgIHsKKyAgICAgIGVycm9yID0gRlRfRVJSKCBJZ25vcmUgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisgICAgaWYgKCBudW1fYXhpcyA9PSAwIHx8IG51bV9heGlzID4gVDFfTUFYX01NX0FYSVMgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggInBhcnNlX2JsZW5kX2Rlc2lnbl9tYXA6IGluY29ycmVjdCBudW1iZXIgb2YgYXhlczogJWRcbiIsCisgICAgICAgICAgICAgICAgIG51bV9heGlzICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIG9sZF9jdXJzb3IgPSBwYXJzZXItPnJvb3QuY3Vyc29yOworICAgIG9sZF9saW1pdCAgPSBwYXJzZXItPnJvb3QubGltaXQ7CisKKyAgICBlcnJvciA9IHQxX2FsbG9jYXRlX2JsZW5kKCBmYWNlLCAwLCBudW1fYXhpcyApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworICAgIGJsZW5kID0gZmFjZS0+YmxlbmQ7CisKKyAgICAvKiBub3cgcmVhZCBlYWNoIGF4aXMgZGVzaWduIG1hcCAqLworICAgIGZvciAoIG4gPSAwOyBuIDwgbnVtX2F4aXM7IG4rKyApCisgICAgeworICAgICAgUFNfRGVzaWduTWFwICBtYXAgPSBibGVuZC0+ZGVzaWduX21hcCArIG47CisgICAgICBUMV9Ub2tlbiAgICAgIGF4aXNfdG9rZW47CisgICAgICBUMV9Ub2tlblJlYyAgIHBvaW50X3Rva2Vuc1tUMV9NQVhfTU1fTUFQX1BPSU5UU107CisgICAgICBGVF9JbnQgICAgICAgIHAsIG51bV9wb2ludHM7CisKKworICAgICAgYXhpc190b2tlbiA9IGF4aXNfdG9rZW5zICsgbjsKKworICAgICAgcGFyc2VyLT5yb290LmN1cnNvciA9IGF4aXNfdG9rZW4tPnN0YXJ0OworICAgICAgcGFyc2VyLT5yb290LmxpbWl0ICA9IGF4aXNfdG9rZW4tPmxpbWl0OworICAgICAgVDFfVG9Ub2tlbkFycmF5KCBwYXJzZXIsIHBvaW50X3Rva2VucywKKyAgICAgICAgICAgICAgICAgICAgICAgVDFfTUFYX01NX01BUF9QT0lOVFMsICZudW1fcG9pbnRzICk7CisKKyAgICAgIGlmICggbnVtX3BvaW50cyA8PSAwIHx8IG51bV9wb2ludHMgPiBUMV9NQVhfTU1fTUFQX1BPSU5UUyApCisgICAgICB7CisgICAgICAgIEZUX0VSUk9SKCggInBhcnNlX2JsZW5kX2Rlc2lnbl9tYXA6IGluY29ycmVjdCB0YWJsZVxuIiApKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgICB9CisKKyAgICAgIC8qIGFsbG9jYXRlIGRlc2lnbiBtYXAgZGF0YSAqLworICAgICAgaWYgKCBGVF9ORVdfQVJSQVkoIG1hcC0+ZGVzaWduX3BvaW50cywgbnVtX3BvaW50cyAqIDIgKSApCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIG1hcC0+YmxlbmRfcG9pbnRzID0gbWFwLT5kZXNpZ25fcG9pbnRzICsgbnVtX3BvaW50czsKKyAgICAgIG1hcC0+bnVtX3BvaW50cyAgID0gKEZUX0J5dGUpbnVtX3BvaW50czsKKworICAgICAgZm9yICggcCA9IDA7IHAgPCBudW1fcG9pbnRzOyBwKysgKQorICAgICAgeworICAgICAgICBUMV9Ub2tlbiAgcG9pbnRfdG9rZW47CisKKworICAgICAgICBwb2ludF90b2tlbiA9IHBvaW50X3Rva2VucyArIHA7CisKKyAgICAgICAgLyogZG9uJ3QgaW5jbHVkZSBkZWxpbWl0aW5nIGJyYWNrZXRzICovCisgICAgICAgIHBhcnNlci0+cm9vdC5jdXJzb3IgPSBwb2ludF90b2tlbi0+c3RhcnQgKyAxOworICAgICAgICBwYXJzZXItPnJvb3QubGltaXQgID0gcG9pbnRfdG9rZW4tPmxpbWl0IC0gMTsKKworICAgICAgICBtYXAtPmRlc2lnbl9wb2ludHNbcF0gPSBUMV9Ub0ludCggcGFyc2VyICk7CisgICAgICAgIG1hcC0+YmxlbmRfcG9pbnRzIFtwXSA9IFQxX1RvRml4ZWQoIHBhcnNlciwgMCApOworICAgICAgfQorICAgIH0KKworICAgIHBhcnNlci0+cm9vdC5jdXJzb3IgPSBvbGRfY3Vyc29yOworICAgIHBhcnNlci0+cm9vdC5saW1pdCAgPSBvbGRfbGltaXQ7CisKKyAgRXhpdDoKKyAgICBwYXJzZXItPnJvb3QuZXJyb3IgPSBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgcGFyc2Vfd2VpZ2h0X3ZlY3RvciggVDFfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBUMV9Ub2tlblJlYyAgZGVzaWduX3Rva2Vuc1tUMV9NQVhfTU1fREVTSUdOU107CisgICAgRlRfSW50ICAgICAgIG51bV9kZXNpZ25zOworICAgIEZUX0Vycm9yICAgICBlcnJvciAgPSBGVF9FcnJfT2s7CisgICAgVDFfUGFyc2VyICAgIHBhcnNlciA9ICZsb2FkZXItPnBhcnNlcjsKKyAgICBQU19CbGVuZCAgICAgYmxlbmQgID0gZmFjZS0+YmxlbmQ7CisgICAgVDFfVG9rZW4gICAgIHRva2VuOworICAgIEZUX0ludCAgICAgICBuOworICAgIEZUX0J5dGUqICAgICBvbGRfY3Vyc29yOworICAgIEZUX0J5dGUqICAgICBvbGRfbGltaXQ7CisKKworICAgIFQxX1RvVG9rZW5BcnJheSggcGFyc2VyLCBkZXNpZ25fdG9rZW5zLAorICAgICAgICAgICAgICAgICAgICAgVDFfTUFYX01NX0RFU0lHTlMsICZudW1fZGVzaWducyApOworICAgIGlmICggbnVtX2Rlc2lnbnMgPCAwICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX0VSUiggSWdub3JlICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorICAgIGlmICggbnVtX2Rlc2lnbnMgPT0gMCB8fCBudW1fZGVzaWducyA+IFQxX01BWF9NTV9ERVNJR05TICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJwYXJzZV93ZWlnaHRfdmVjdG9yOiIKKyAgICAgICAgICAgICAgICAgIiBpbmNvcnJlY3QgbnVtYmVyIG9mIGRlc2lnbnM6ICVkXG4iLAorICAgICAgICAgICAgICAgICBudW1fZGVzaWducyApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBpZiAoICFibGVuZCB8fCAhYmxlbmQtPm51bV9kZXNpZ25zICkKKyAgICB7CisgICAgICBlcnJvciA9IHQxX2FsbG9jYXRlX2JsZW5kKCBmYWNlLCBudW1fZGVzaWducywgMCApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIGJsZW5kID0gZmFjZS0+YmxlbmQ7CisgICAgfQorICAgIGVsc2UgaWYgKCBibGVuZC0+bnVtX2Rlc2lnbnMgIT0gKEZUX1VJbnQpbnVtX2Rlc2lnbnMgKQorICAgIHsKKyAgICAgIEZUX0VSUk9SKCggInBhcnNlX3dlaWdodF92ZWN0b3I6IgorICAgICAgICAgICAgICAgICAiIC9CbGVuZERlc2lnblBvc2l0aW9uIGFuZCAvV2VpZ2h0VmVjdG9yIGhhdmVcbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgIgorICAgICAgICAgICAgICAgICAiIGRpZmZlcmVudCBudW1iZXIgb2YgZWxlbWVudHNcbiIgKSk7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgb2xkX2N1cnNvciA9IHBhcnNlci0+cm9vdC5jdXJzb3I7CisgICAgb2xkX2xpbWl0ICA9IHBhcnNlci0+cm9vdC5saW1pdDsKKworICAgIGZvciAoIG4gPSAwOyBuIDwgbnVtX2Rlc2lnbnM7IG4rKyApCisgICAgeworICAgICAgdG9rZW4gPSBkZXNpZ25fdG9rZW5zICsgbjsKKyAgICAgIHBhcnNlci0+cm9vdC5jdXJzb3IgPSB0b2tlbi0+c3RhcnQ7CisgICAgICBwYXJzZXItPnJvb3QubGltaXQgID0gdG9rZW4tPmxpbWl0OworCisgICAgICBibGVuZC0+ZGVmYXVsdF93ZWlnaHRfdmVjdG9yW25dID0KKyAgICAgIGJsZW5kLT53ZWlnaHRfdmVjdG9yW25dICAgICAgICAgPSBUMV9Ub0ZpeGVkKCBwYXJzZXIsIDAgKTsKKyAgICB9CisKKyAgICBwYXJzZXItPnJvb3QuY3Vyc29yID0gb2xkX2N1cnNvcjsKKyAgICBwYXJzZXItPnJvb3QubGltaXQgID0gb2xkX2xpbWl0OworCisgIEV4aXQ6CisgICAgcGFyc2VyLT5yb290LmVycm9yID0gZXJyb3I7CisgIH0KKworCisgIC8qIGUuZy4sIC9CdWlsZENoYXJBcnJheSBbMCAwIDAgMCAwIDAgMCAwXSBkZWYgICAgICAgICAgICovCisgIC8qIHdlJ3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbnVtYmVyIG9mIGFycmF5IGVsZW1lbnRzICovCisgIHN0YXRpYyB2b2lkCisgIHBhcnNlX2J1aWxkY2hhciggVDFfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgIFQxX0xvYWRlciAgbG9hZGVyICkKKyAgeworICAgIGZhY2UtPmxlbl9idWlsZGNoYXIgPSBUMV9Ub0ZpeGVkQXJyYXkoICZsb2FkZXItPnBhcnNlciwgMCwgTlVMTCwgMCApOworCisgICAgcmV0dXJuOworICB9CisKKworI2VuZGlmIC8qICFUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlQgKi8KKworCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgVFlQRSAxIFNZTUJPTCBQQVJTSU5HICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworICBzdGF0aWMgRlRfRXJyb3IKKyAgdDFfbG9hZF9rZXl3b3JkKCBUMV9GYWNlICAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBUMV9Mb2FkZXIgICAgICAgbG9hZGVyLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxX0ZpZWxkICBmaWVsZCApCisgIHsKKyAgICBGVF9FcnJvciAgZXJyb3I7CisgICAgdm9pZCogICAgIGR1bW15X29iamVjdDsKKyAgICB2b2lkKiogICAgb2JqZWN0czsKKyAgICBGVF9VSW50ICAgbWF4X29iamVjdHM7CisgICAgUFNfQmxlbmQgIGJsZW5kID0gZmFjZS0+YmxlbmQ7CisKKworICAgIGlmICggYmxlbmQgJiYgYmxlbmQtPm51bV9kZXNpZ25zID09IDAgKQorICAgICAgYmxlbmQgPSBOVUxMOworCisgICAgLyogaWYgdGhlIGtleXdvcmQgaGFzIGEgZGVkaWNhdGVkIGNhbGxiYWNrLCBjYWxsIGl0ICovCisgICAgaWYgKCBmaWVsZC0+dHlwZSA9PSBUMV9GSUVMRF9UWVBFX0NBTExCQUNLICkKKyAgICB7CisgICAgICBmaWVsZC0+cmVhZGVyKCAoRlRfRmFjZSlmYWNlLCBsb2FkZXIgKTsKKyAgICAgIGVycm9yID0gbG9hZGVyLT5wYXJzZXIucm9vdC5lcnJvcjsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICAvKiBub3csIHRoZSBrZXl3b3JkIGlzIGVpdGhlciBhIHNpbXBsZSBmaWVsZCwgb3IgYSB0YWJsZSBvZiBmaWVsZHM7ICovCisgICAgLyogd2UgYXJlIG5vdyBnb2luZyB0byB0YWtlIGNhcmUgb2YgaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHN3aXRjaCAoIGZpZWxkLT5sb2NhdGlvbiApCisgICAgeworICAgIGNhc2UgVDFfRklFTERfTE9DQVRJT05fRk9OVF9JTkZPOgorICAgICAgZHVtbXlfb2JqZWN0ID0gJmZhY2UtPnR5cGUxLmZvbnRfaW5mbzsKKyAgICAgIG9iamVjdHMgICAgICA9ICZkdW1teV9vYmplY3Q7CisgICAgICBtYXhfb2JqZWN0cyAgPSAwOworCisgICAgICBpZiAoIGJsZW5kICkKKyAgICAgIHsKKyAgICAgICAgb2JqZWN0cyAgICAgPSAodm9pZCoqKWJsZW5kLT5mb250X2luZm9zOworICAgICAgICBtYXhfb2JqZWN0cyA9IGJsZW5kLT5udW1fZGVzaWduczsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBUMV9GSUVMRF9MT0NBVElPTl9GT05UX0VYVFJBOgorICAgICAgZHVtbXlfb2JqZWN0ID0gJmZhY2UtPnR5cGUxLmZvbnRfZXh0cmE7CisgICAgICBvYmplY3RzICAgICAgPSAmZHVtbXlfb2JqZWN0OworICAgICAgbWF4X29iamVjdHMgID0gMDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBUMV9GSUVMRF9MT0NBVElPTl9QUklWQVRFOgorICAgICAgZHVtbXlfb2JqZWN0ID0gJmZhY2UtPnR5cGUxLnByaXZhdGVfZGljdDsKKyAgICAgIG9iamVjdHMgICAgICA9ICZkdW1teV9vYmplY3Q7CisgICAgICBtYXhfb2JqZWN0cyAgPSAwOworCisgICAgICBpZiAoIGJsZW5kICkKKyAgICAgIHsKKyAgICAgICAgb2JqZWN0cyAgICAgPSAodm9pZCoqKWJsZW5kLT5wcml2YXRlczsKKyAgICAgICAgbWF4X29iamVjdHMgPSBibGVuZC0+bnVtX2Rlc2lnbnM7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgVDFfRklFTERfTE9DQVRJT05fQkJPWDoKKyAgICAgIGR1bW15X29iamVjdCA9ICZmYWNlLT50eXBlMS5mb250X2Jib3g7CisgICAgICBvYmplY3RzICAgICAgPSAmZHVtbXlfb2JqZWN0OworICAgICAgbWF4X29iamVjdHMgID0gMDsKKworICAgICAgaWYgKCBibGVuZCApCisgICAgICB7CisgICAgICAgIG9iamVjdHMgICAgID0gKHZvaWQqKilibGVuZC0+YmJveGVzOworICAgICAgICBtYXhfb2JqZWN0cyA9IGJsZW5kLT5udW1fZGVzaWduczsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBUMV9GSUVMRF9MT0NBVElPTl9MT0FERVI6CisgICAgICBkdW1teV9vYmplY3QgPSBsb2FkZXI7CisgICAgICBvYmplY3RzICAgICAgPSAmZHVtbXlfb2JqZWN0OworICAgICAgbWF4X29iamVjdHMgID0gMDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBUMV9GSUVMRF9MT0NBVElPTl9GQUNFOgorICAgICAgZHVtbXlfb2JqZWN0ID0gZmFjZTsKKyAgICAgIG9iamVjdHMgICAgICA9ICZkdW1teV9vYmplY3Q7CisgICAgICBtYXhfb2JqZWN0cyAgPSAwOworICAgICAgYnJlYWs7CisKKyNpZm5kZWYgVDFfQ09ORklHX09QVElPTl9OT19NTV9TVVBQT1JUCisgICAgY2FzZSBUMV9GSUVMRF9MT0NBVElPTl9CTEVORDoKKyAgICAgIGR1bW15X29iamVjdCA9IGZhY2UtPmJsZW5kOworICAgICAgb2JqZWN0cyAgICAgID0gJmR1bW15X29iamVjdDsKKyAgICAgIG1heF9vYmplY3RzICA9IDA7CisgICAgICBicmVhazsKKyNlbmRpZgorCisgICAgZGVmYXVsdDoKKyAgICAgIGR1bW15X29iamVjdCA9ICZmYWNlLT50eXBlMTsKKyAgICAgIG9iamVjdHMgICAgICA9ICZkdW1teV9vYmplY3Q7CisgICAgICBtYXhfb2JqZWN0cyAgPSAwOworICAgIH0KKworICAgIGlmICggKm9iamVjdHMgKQorICAgIHsKKyAgICAgIGlmICggZmllbGQtPnR5cGUgPT0gVDFfRklFTERfVFlQRV9JTlRFR0VSX0FSUkFZIHx8CisgICAgICAgICAgIGZpZWxkLT50eXBlID09IFQxX0ZJRUxEX1RZUEVfRklYRURfQVJSQVkgICApCisgICAgICAgIGVycm9yID0gVDFfTG9hZF9GaWVsZF9UYWJsZSggJmxvYWRlci0+cGFyc2VyLCBmaWVsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzLCBtYXhfb2JqZWN0cywgMCApOworICAgICAgZWxzZQorICAgICAgICBlcnJvciA9IFQxX0xvYWRfRmllbGQoICZsb2FkZXItPnBhcnNlciwgZmllbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cywgbWF4X29iamVjdHMsIDAgKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIEZUX1RSQUNFMSgoICJ0MV9sb2FkX2tleXdvcmQ6IGlnbm9yaW5nIGtleXdvcmQgYCVzJyIKKyAgICAgICAgICAgICAgICAgICIgd2hpY2ggaXMgbm90IHZhbGlkIGF0IHRoaXMgcG9pbnRcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgIChwcm9iYWJseSBkdWUgdG8gbWlzc2luZyBrZXl3b3JkcylcbiIsCisgICAgICAgICAgICAgICAgIGZpZWxkLT5pZGVudCApKTsKKyAgICAgIGVycm9yID0gRlRfRXJyX09rOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIHZvaWQKKyAgcGFyc2VfcHJpdmF0ZSggVDFfRmFjZSAgICBmYWNlLAorICAgICAgICAgICAgICAgICBUMV9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBGVF9VTlVTRUQoIGZhY2UgKTsKKworICAgIGxvYWRlci0+a2V5d29yZHNfZW5jb3VudGVyZWQgfD0gVDFfUFJJVkFURTsKKyAgfQorCisKKyAgc3RhdGljIGludAorICByZWFkX2JpbmFyeV9kYXRhKCBUMV9QYXJzZXIgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgRlRfTG9uZyogICBzaXplLAorICAgICAgICAgICAgICAgICAgICBGVF9CeXRlKiogIGJhc2UsCisgICAgICAgICAgICAgICAgICAgIEZUX0Jvb2wgICAgaW5jcmVtZW50YWwgKQorICB7CisgICAgRlRfQnl0ZSogIGN1cjsKKyAgICBGVF9CeXRlKiAgbGltaXQgPSBwYXJzZXItPnJvb3QubGltaXQ7CisKKworICAgIC8qIHRoZSBiaW5hcnkgZGF0YSBoYXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybWF0cyAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgYHNpemUnIFt3aGl0ZSpdIFJEIHdoaXRlIC4uLi4uLi4gTkQgICAgICAgICAgICAqLworICAgIC8qICAgYHNpemUnIFt3aGl0ZSpdIC18IHdoaXRlIC4uLi4uLi4gfC0gICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgVDFfU2tpcF9TcGFjZXMoIHBhcnNlciApOworCisgICAgY3VyID0gcGFyc2VyLT5yb290LmN1cnNvcjsKKworICAgIGlmICggY3VyIDwgbGltaXQgJiYgZnRfaXNkaWdpdCggKmN1ciApICkKKyAgICB7CisgICAgICBGVF9Mb25nICBzID0gVDFfVG9JbnQoIHBhcnNlciApOworCisKKyAgICAgIFQxX1NraXBfUFNfVG9rZW4oIHBhcnNlciApOyAgIC8qIGBSRCcgb3IgYC18JyBvciBzb21ldGhpbmcgZWxzZSAqLworCisgICAgICAvKiB0aGVyZSBpcyBvbmx5IG9uZSB3aGl0ZXNwYWNlIGNoYXIgYWZ0ZXIgdGhlICovCisgICAgICAvKiBgUkQnIG9yIGAtfCcgdG9rZW4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAqYmFzZSA9IHBhcnNlci0+cm9vdC5jdXJzb3IgKyAxOworCisgICAgICBpZiAoIHMgPj0gMCAmJiBzIDwgbGltaXQgLSAqYmFzZSApCisgICAgICB7CisgICAgICAgIHBhcnNlci0+cm9vdC5jdXJzb3IgKz0gcyArIDE7CisgICAgICAgICpzaXplID0gczsKKyAgICAgICAgcmV0dXJuICFwYXJzZXItPnJvb3QuZXJyb3I7CisgICAgICB9CisgICAgfQorCisgICAgaWYoICFpbmNyZW1lbnRhbCApCisgICAgeworICAgICAgRlRfRVJST1IoKCAicmVhZF9iaW5hcnlfZGF0YTogaW52YWxpZCBzaXplIGZpZWxkXG4iICkpOworICAgICAgcGFyc2VyLT5yb290LmVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgLyogV2Ugbm93IGRlZmluZSB0aGUgcm91dGluZXMgdG8gaGFuZGxlIHRoZSBgL0VuY29kaW5nJywgYC9TdWJycycsICovCisgIC8qIGFuZCBgL0NoYXJTdHJpbmdzJyBkaWN0aW9uYXJpZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIHN0YXRpYyB2b2lkCisgIHQxX3BhcnNlX2ZvbnRfbWF0cml4KCBUMV9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBUMV9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBUMV9QYXJzZXIgICBwYXJzZXIgPSAmbG9hZGVyLT5wYXJzZXI7CisgICAgRlRfTWF0cml4KiAgbWF0cml4ID0gJmZhY2UtPnR5cGUxLmZvbnRfbWF0cml4OworICAgIEZUX1ZlY3RvciogIG9mZnNldCA9ICZmYWNlLT50eXBlMS5mb250X29mZnNldDsKKyAgICBGVF9GYWNlICAgICByb290ICAgPSAoRlRfRmFjZSkmZmFjZS0+cm9vdDsKKyAgICBGVF9GaXhlZCAgICB0ZW1wWzZdOworICAgIEZUX0ZpeGVkICAgIHRlbXBfc2NhbGU7CisgICAgRlRfSW50ICAgICAgcmVzdWx0OworCisKKyAgICByZXN1bHQgPSBUMV9Ub0ZpeGVkQXJyYXkoIHBhcnNlciwgNiwgdGVtcCwgMyApOworCisgICAgaWYgKCByZXN1bHQgPCAwICkKKyAgICB7CisgICAgICBwYXJzZXItPnJvb3QuZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlbXBfc2NhbGUgPSBGVF9BQlMoIHRlbXBbM10gKTsKKworICAgIGlmICggdGVtcF9zY2FsZSA9PSAwICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJ0MV9wYXJzZV9mb250X21hdHJpeDogaW52YWxpZCBmb250IG1hdHJpeFxuIiApKTsKKyAgICAgIHBhcnNlci0+cm9vdC5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogU2V0IFVuaXRzIHBlciBFTSBiYXNlZCBvbiBGb250TWF0cml4IHZhbHVlcy4gIFdlIHNldCB0aGUgdmFsdWUgdG8gKi8KKyAgICAvKiAxMDAwIC8gdGVtcF9zY2FsZSwgYmVjYXVzZSB0ZW1wX3NjYWxlIHdhcyBhbHJlYWR5IG11bHRpcGxpZWQgYnkgICAqLworICAgIC8qIDEwMDAgKGluIHQxX3RvZml4ZWQsIGZyb20gcHNvYmpzLmMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICByb290LT51bml0c19wZXJfRU0gPSAoRlRfVVNob3J0KUZUX0RpdkZpeCggMTAwMCwgdGVtcF9zY2FsZSApOworCisgICAgLyogd2UgbmVlZCB0byBzY2FsZSB0aGUgdmFsdWVzIGJ5IDEuMC90ZW1wX3NjYWxlICovCisgICAgaWYgKCB0ZW1wX3NjYWxlICE9IDB4MTAwMDBMICkKKyAgICB7CisgICAgICB0ZW1wWzBdID0gRlRfRGl2Rml4KCB0ZW1wWzBdLCB0ZW1wX3NjYWxlICk7CisgICAgICB0ZW1wWzFdID0gRlRfRGl2Rml4KCB0ZW1wWzFdLCB0ZW1wX3NjYWxlICk7CisgICAgICB0ZW1wWzJdID0gRlRfRGl2Rml4KCB0ZW1wWzJdLCB0ZW1wX3NjYWxlICk7CisgICAgICB0ZW1wWzRdID0gRlRfRGl2Rml4KCB0ZW1wWzRdLCB0ZW1wX3NjYWxlICk7CisgICAgICB0ZW1wWzVdID0gRlRfRGl2Rml4KCB0ZW1wWzVdLCB0ZW1wX3NjYWxlICk7CisgICAgICB0ZW1wWzNdID0gdGVtcFszXSA8IDAgPyAtMHgxMDAwMEwgOiAweDEwMDAwTDsKKyAgICB9CisKKyAgICBtYXRyaXgtPnh4ID0gdGVtcFswXTsKKyAgICBtYXRyaXgtPnl4ID0gdGVtcFsxXTsKKyAgICBtYXRyaXgtPnh5ID0gdGVtcFsyXTsKKyAgICBtYXRyaXgtPnl5ID0gdGVtcFszXTsKKworICAgIC8qIG5vdGUgdGhhdCB0aGUgb2Zmc2V0cyBtdXN0IGJlIGV4cHJlc3NlZCBpbiBpbnRlZ2VyIGZvbnQgdW5pdHMgKi8KKyAgICBvZmZzZXQtPnggPSB0ZW1wWzRdID4+IDE2OworICAgIG9mZnNldC0+eSA9IHRlbXBbNV0gPj4gMTY7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIHBhcnNlX2VuY29kaW5nKCBUMV9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICBUMV9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBUMV9QYXJzZXIgIHBhcnNlciA9ICZsb2FkZXItPnBhcnNlcjsKKyAgICBGVF9CeXRlKiAgIGN1cjsKKyAgICBGVF9CeXRlKiAgIGxpbWl0ICA9IHBhcnNlci0+cm9vdC5saW1pdDsKKworICAgIFBTQXV4X1NlcnZpY2UgIHBzYXV4ID0gKFBTQXV4X1NlcnZpY2UpZmFjZS0+cHNhdXg7CisKKworICAgIFQxX1NraXBfU3BhY2VzKCBwYXJzZXIgKTsKKyAgICBjdXIgPSBwYXJzZXItPnJvb3QuY3Vyc29yOworICAgIGlmICggY3VyID49IGxpbWl0ICkKKyAgICB7CisgICAgICBGVF9FUlJPUigoICJwYXJzZV9lbmNvZGluZzogb3V0IG9mIGJvdW5kc1xuIiApKTsKKyAgICAgIHBhcnNlci0+cm9vdC5lcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogaWYgd2UgaGF2ZSBhIG51bWJlciBvciBgWycsIHRoZSBlbmNvZGluZyBpcyBhbiBhcnJheSwgKi8KKyAgICAvKiBhbmQgd2UgbXVzdCBsb2FkIGl0IG5vdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggZnRfaXNkaWdpdCggKmN1ciApIHx8ICpjdXIgPT0gJ1snICkKKyAgICB7CisgICAgICBUMV9FbmNvZGluZyAgZW5jb2RlICAgICAgICAgID0gJmZhY2UtPnR5cGUxLmVuY29kaW5nOworICAgICAgRlRfSW50ICAgICAgIGNvdW50LCBuOworICAgICAgUFNfVGFibGUgICAgIGNoYXJfdGFibGUgICAgICA9ICZsb2FkZXItPmVuY29kaW5nX3RhYmxlOworICAgICAgRlRfTWVtb3J5ICAgIG1lbW9yeSAgICAgICAgICA9IHBhcnNlci0+cm9vdC5tZW1vcnk7CisgICAgICBGVF9FcnJvciAgICAgZXJyb3I7CisgICAgICBGVF9Cb29sICAgICAgb25seV9pbW1lZGlhdGVzID0gMDsKKworCisgICAgICAvKiByZWFkIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZW5jb2Rpbmc7IHNob3VsZCBiZSAyNTYgKi8KKyAgICAgIGlmICggKmN1ciA9PSAnWycgKQorICAgICAgeworICAgICAgICBjb3VudCAgICAgICAgICAgPSAyNTY7CisgICAgICAgIG9ubHlfaW1tZWRpYXRlcyA9IDE7CisgICAgICAgIHBhcnNlci0+cm9vdC5jdXJzb3IrKzsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgY291bnQgPSAoRlRfSW50KVQxX1RvSW50KCBwYXJzZXIgKTsKKworICAgICAgVDFfU2tpcF9TcGFjZXMoIHBhcnNlciApOworICAgICAgaWYgKCBwYXJzZXItPnJvb3QuY3Vyc29yID49IGxpbWl0ICkKKyAgICAgICAgcmV0dXJuOworCisgICAgICAvKiB3ZSB1c2UgYSBUMV9UYWJsZSB0byBzdG9yZSBvdXIgY2hhcm5hbWVzICovCisgICAgICBsb2FkZXItPm51bV9jaGFycyA9IGVuY29kZS0+bnVtX2NoYXJzID0gY291bnQ7CisgICAgICBpZiAoIEZUX05FV19BUlJBWSggZW5jb2RlLT5jaGFyX2luZGV4LCBjb3VudCApICAgICB8fAorICAgICAgICAgICBGVF9ORVdfQVJSQVkoIGVuY29kZS0+Y2hhcl9uYW1lLCAgY291bnQgKSAgICAgfHwKKyAgICAgICAgICAgRlRfU0VUX0VSUk9SKCBwc2F1eC0+cHNfdGFibGVfZnVuY3MtPmluaXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3RhYmxlLCBjb3VudCwgbWVtb3J5ICkgKSApCisgICAgICB7CisgICAgICAgIHBhcnNlci0+cm9vdC5lcnJvciA9IGVycm9yOworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIC8qIFdlIG5lZWQgdG8gYHplcm8nIG91dCBlbmNvZGluZ190YWJsZS5lbGVtZW50cyAqLworICAgICAgZm9yICggbiA9IDA7IG4gPCBjb3VudDsgbisrICkKKyAgICAgIHsKKyAgICAgICAgY2hhciogIG5vdGRlZiA9IChjaGFyICopIi5ub3RkZWYiOworCisKKyAgICAgICAgVDFfQWRkX1RhYmxlKCBjaGFyX3RhYmxlLCBuLCBub3RkZWYsIDggKTsKKyAgICAgIH0KKworICAgICAgLyogTm93IHdlIG5lZWQgdG8gcmVhZCByZWNvcmRzIG9mIHRoZSBmb3JtICAgICAgICAgICAgICAgICovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgLi4uIGNoYXJjb2RlIC9jaGFybmFtZSAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiBmb3IgZWFjaCBlbnRyeSBpbiBvdXIgdGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogV2Ugc2ltcGx5IGxvb2sgZm9yIGEgbnVtYmVyIGZvbGxvd2VkIGJ5IGFuIGltbWVkaWF0ZSAgICovCisgICAgICAvKiBuYW1lLiAgTm90ZSB0aGF0IHRoaXMgaWdub3JlcyBjb3JyZWN0bHkgdGhlIHNlcXVlbmNlICAgKi8KKyAgICAgIC8qIHRoYXQgaXMgb2Z0ZW4gc2VlbiBpbiB0eXBlMSBmb250czogICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiAgIDAgMSAyNTUgeyAxIGluZGV4IGV4Y2ggLy5ub3RkZWYgcHV0IH0gZm9yIGR1cCAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogdXNlZCB0byBjbGVhbiB0aGUgZW5jb2RpbmcgYXJyYXkgYmVmb3JlIGFueXRoaW5nIGVsc2UuICovCisgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qIEFsdGVybmF0aXZlbHksIGlmIHRoZSBhcnJheSBpcyBkaXJlY3RseSBnaXZlbiBhcyAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAvKiAgIC9FbmNvZGluZyBbIC4uLiBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogd2Ugb25seSByZWFkIGltbWVkaWF0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgIG4gPSAwOworICAgICAgVDFfU2tpcF9TcGFjZXMoIHBhcnNlciApOworCisgICAgICB3aGlsZSAoIHBhcnNlci0+cm9vdC5jdXJzb3IgPCBsaW1pdCApCisgICAgICB7CisgICAgICAgIGN1ciA9IHBhcnNlci0+cm9vdC5jdXJzb3I7CisKKyAgICAgICAgLyogd2Ugc3RvcCB3aGVuIHdlIGVuY291bnRlciBhIGBkZWYnIG9yIGBdJyAqLworICAgICAgICBpZiAoICpjdXIgPT0gJ2QnICYmIGN1ciArIDMgPCBsaW1pdCApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoIGN1clsxXSA9PSAnZScgICAgICAgICAmJgorICAgICAgICAgICAgICAgY3VyWzJdID09ICdmJyAgICAgICAgICYmCisgICAgICAgICAgICAgICBJU19QU19ERUxJTSggY3VyWzNdICkgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX1RSQUNFNigoICJlbmNvZGluZyBlbmRcbiIgKSk7CisgICAgICAgICAgICBjdXIgKz0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoICpjdXIgPT0gJ10nICkKKyAgICAgICAgeworICAgICAgICAgIEZUX1RSQUNFNigoICJlbmNvZGluZyBlbmRcbiIgKSk7CisgICAgICAgICAgY3VyKys7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKiBjaGVjayB3aGV0aGVyIHdlJ3ZlIGZvdW5kIGFuIGVudHJ5ICovCisgICAgICAgIGlmICggZnRfaXNkaWdpdCggKmN1ciApIHx8IG9ubHlfaW1tZWRpYXRlcyApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9JbnQgIGNoYXJjb2RlOworCisKKyAgICAgICAgICBpZiAoIG9ubHlfaW1tZWRpYXRlcyApCisgICAgICAgICAgICBjaGFyY29kZSA9IG47CisgICAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGNoYXJjb2RlID0gKEZUX0ludClUMV9Ub0ludCggcGFyc2VyICk7CisgICAgICAgICAgICBUMV9Ta2lwX1NwYWNlcyggcGFyc2VyICk7CisgICAgICAgICAgfQorCisgICAgICAgICAgY3VyID0gcGFyc2VyLT5yb290LmN1cnNvcjsKKworICAgICAgICAgIGlmICggY3VyICsgMiA8IGxpbWl0ICYmICpjdXIgPT0gJy8nICYmIG4gPCBjb3VudCApCisgICAgICAgICAgeworICAgICAgICAgICAgRlRfUHRyRGlzdCAgbGVuOworCisKKyAgICAgICAgICAgIGN1cisrOworCisgICAgICAgICAgICBwYXJzZXItPnJvb3QuY3Vyc29yID0gY3VyOworICAgICAgICAgICAgVDFfU2tpcF9QU19Ub2tlbiggcGFyc2VyICk7CisgICAgICAgICAgICBpZiAoIHBhcnNlci0+cm9vdC5jdXJzb3IgPj0gbGltaXQgKQorICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoIHBhcnNlci0+cm9vdC5lcnJvciApCisgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbGVuID0gcGFyc2VyLT5yb290LmN1cnNvciAtIGN1cjsKKworICAgICAgICAgICAgcGFyc2VyLT5yb290LmVycm9yID0gVDFfQWRkX1RhYmxlKCBjaGFyX3RhYmxlLCBjaGFyY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyLCBsZW4gKyAxICk7CisgICAgICAgICAgICBpZiAoIHBhcnNlci0+cm9vdC5lcnJvciApCisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoYXJfdGFibGUtPmVsZW1lbnRzW2NoYXJjb2RlXVtsZW5dID0gJ1wwJzsKKworICAgICAgICAgICAgbisrOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICggb25seV9pbW1lZGlhdGVzICkKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBTaW5jZSB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBub3QgdXBkYXRlZCBmb3IgICAgICAgICAgICovCisgICAgICAgICAgICAvKiBpbW1lZGlhdGVzLW9ubHkgbW9kZSB3ZSB3b3VsZCBnZXQgYW4gaW5maW5pdGUgbG9vcCBpZiAgICovCisgICAgICAgICAgICAvKiB3ZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAvKiBUaGlzIGVuY29kaW5nIGFycmF5IGlzIG5vdCB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHR5cGUxICovCisgICAgICAgICAgICAvKiBzcGVjaWZpY2F0aW9uIChpdCBtaWdodCBiZSBhbiBlbmNvZGluZyBmb3IgYSBDSUQgdHlwZTEgICovCisgICAgICAgICAgICAvKiBmb250LCBob3dldmVyKSwgc28gd2UgY29uY2x1ZGUgdGhhdCB0aGlzIGZvbnQgaXMgTk9UIGEgICovCisgICAgICAgICAgICAvKiB0eXBlMSBmb250LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICBwYXJzZXItPnJvb3QuZXJyb3IgPSBGVF9USFJPVyggVW5rbm93bl9GaWxlX0Zvcm1hdCApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBUMV9Ta2lwX1BTX1Rva2VuKCBwYXJzZXIgKTsKKyAgICAgICAgICBpZiAoIHBhcnNlci0+cm9vdC5lcnJvciApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBUMV9Ta2lwX1NwYWNlcyggcGFyc2VyICk7CisgICAgICB9CisKKyAgICAgIGZhY2UtPnR5cGUxLmVuY29kaW5nX3R5cGUgPSBUMV9FTkNPRElOR19UWVBFX0FSUkFZOworICAgICAgcGFyc2VyLT5yb290LmN1cnNvciAgICAgICA9IGN1cjsKKyAgICB9CisKKyAgICAvKiBPdGhlcndpc2UsIHdlIHNob3VsZCBoYXZlIGVpdGhlciBgU3RhbmRhcmRFbmNvZGluZycsICovCisgICAgLyogYEV4cGVydEVuY29kaW5nJywgb3IgYElTT0xhdGluMUVuY29kaW5nJyAgICAgICAgICAgICAqLworICAgIGVsc2UKKyAgICB7CisgICAgICBpZiAoIGN1ciArIDE3IDwgbGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgIGZ0X3N0cm5jbXAoIChjb25zdCBjaGFyKiljdXIsICJTdGFuZGFyZEVuY29kaW5nIiwgMTYgKSA9PSAwICkKKyAgICAgICAgZmFjZS0+dHlwZTEuZW5jb2RpbmdfdHlwZSA9IFQxX0VOQ09ESU5HX1RZUEVfU1RBTkRBUkQ7CisKKyAgICAgIGVsc2UgaWYgKCBjdXIgKyAxNSA8IGxpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICBmdF9zdHJuY21wKCAoY29uc3QgY2hhciopY3VyLCAiRXhwZXJ0RW5jb2RpbmciLCAxNCApID09IDAgKQorICAgICAgICBmYWNlLT50eXBlMS5lbmNvZGluZ190eXBlID0gVDFfRU5DT0RJTkdfVFlQRV9FWFBFUlQ7CisKKyAgICAgIGVsc2UgaWYgKCBjdXIgKyAxOCA8IGxpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICBmdF9zdHJuY21wKCAoY29uc3QgY2hhciopY3VyLCAiSVNPTGF0aW4xRW5jb2RpbmciLCAxNyApID09IDAgKQorICAgICAgICBmYWNlLT50eXBlMS5lbmNvZGluZ190eXBlID0gVDFfRU5DT0RJTkdfVFlQRV9JU09MQVRJTjE7CisKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VyLT5yb290LmVycm9yID0gRlRfRVJSKCBJZ25vcmUgKTsKKyAgICB9CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIHBhcnNlX3N1YnJzKCBUMV9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICBUMV9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBUMV9QYXJzZXIgIHBhcnNlciA9ICZsb2FkZXItPnBhcnNlcjsKKyAgICBQU19UYWJsZSAgIHRhYmxlICA9ICZsb2FkZXItPnN1YnJzOworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gcGFyc2VyLT5yb290Lm1lbW9yeTsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX0ludCAgICAgbnVtX3N1YnJzOworCisgICAgUFNBdXhfU2VydmljZSAgcHNhdXggPSAoUFNBdXhfU2VydmljZSlmYWNlLT5wc2F1eDsKKworCisgICAgVDFfU2tpcF9TcGFjZXMoIHBhcnNlciApOworCisgICAgLyogdGVzdCBmb3IgZW1wdHkgYXJyYXkgKi8KKyAgICBpZiAoIHBhcnNlci0+cm9vdC5jdXJzb3IgPCBwYXJzZXItPnJvb3QubGltaXQgJiYKKyAgICAgICAgICpwYXJzZXItPnJvb3QuY3Vyc29yID09ICdbJyAgICAgICAgICAgICAgKQorICAgIHsKKyAgICAgIFQxX1NraXBfUFNfVG9rZW4oIHBhcnNlciApOworICAgICAgVDFfU2tpcF9TcGFjZXMgICggcGFyc2VyICk7CisgICAgICBpZiAoIHBhcnNlci0+cm9vdC5jdXJzb3IgPj0gcGFyc2VyLT5yb290LmxpbWl0IHx8CisgICAgICAgICAgICpwYXJzZXItPnJvb3QuY3Vyc29yICE9ICddJyAgICAgICAgICAgICAgICkKKyAgICAgICAgcGFyc2VyLT5yb290LmVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBudW1fc3VicnMgPSAoRlRfSW50KVQxX1RvSW50KCBwYXJzZXIgKTsKKworICAgIC8qIHBvc2l0aW9uIHRoZSBwYXJzZXIgcmlnaHQgYmVmb3JlIHRoZSBgZHVwJyBvZiB0aGUgZmlyc3Qgc3ViciAqLworICAgIFQxX1NraXBfUFNfVG9rZW4oIHBhcnNlciApOyAgICAgICAgIC8qIGBhcnJheScgKi8KKyAgICBpZiAoIHBhcnNlci0+cm9vdC5lcnJvciApCisgICAgICByZXR1cm47CisgICAgVDFfU2tpcF9TcGFjZXMoIHBhcnNlciApOworCisgICAgLyogaW5pdGlhbGl6ZSBzdWJycyBhcnJheSAtLSB3aXRoIHN5bnRoZXRpYyBmb250cyBpdCBpcyBwb3NzaWJsZSAqLworICAgIC8qIHdlIGdldCBoZXJlIHR3aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBpZiAoICFsb2FkZXItPm51bV9zdWJycyApCisgICAgeworICAgICAgZXJyb3IgPSBwc2F1eC0+cHNfdGFibGVfZnVuY3MtPmluaXQoIHRhYmxlLCBudW1fc3VicnMsIG1lbW9yeSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICAvKiB0aGUgZm9ybWF0IGlzIHNpbXBsZTogICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICBgaW5kZXgnICsgYmluYXJ5IGRhdGEgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGZvciAoOzspCisgICAgeworICAgICAgRlRfTG9uZyAgIGlkeCwgc2l6ZTsKKyAgICAgIEZUX0J5dGUqICBiYXNlOworCisKKyAgICAgIC8qIElmIHdlIGFyZSBvdXQgb2YgZGF0YSwgb3IgaWYgdGhlIG5leHQgdG9rZW4gaXNuJ3QgYGR1cCcsICovCisgICAgICAvKiB3ZSBhcmUgZG9uZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgaWYgKCBwYXJzZXItPnJvb3QuY3Vyc29yICsgNCA+PSBwYXJzZXItPnJvb3QubGltaXQgICAgICAgICAgfHwKKyAgICAgICAgICBmdF9zdHJuY21wKCAoY2hhciopcGFyc2VyLT5yb290LmN1cnNvciwgImR1cCIsIDMgKSAhPSAwICkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIFQxX1NraXBfUFNfVG9rZW4oIHBhcnNlciApOyAgICAgICAvKiBgZHVwJyAqLworCisgICAgICBpZHggPSBUMV9Ub0ludCggcGFyc2VyICk7CisKKyAgICAgIGlmICggIXJlYWRfYmluYXJ5X2RhdGEoIHBhcnNlciwgJnNpemUsICZiYXNlLCBJU19JTkNSRU1FTlRBTCApICkKKyAgICAgICAgcmV0dXJuOworCisgICAgICAvKiBUaGUgYmluYXJ5IHN0cmluZyBpcyBmb2xsb3dlZCBieSBvbmUgdG9rZW4sIGUuZy4gYE5QJyAqLworICAgICAgLyogKGJvdW5kIHRvIGBub2FjY2VzcyBwdXQnKSBvciBieSB0d28gc2VwYXJhdGUgdG9rZW5zOiAgKi8KKyAgICAgIC8qIGBub2FjY2VzcycgJiBgcHV0Jy4gIFdlIHBvc2l0aW9uIHRoZSBwYXJzZXIgcmlnaHQgICAgICovCisgICAgICAvKiBiZWZvcmUgdGhlIG5leHQgYGR1cCcsIGlmIGFueS4gICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgVDFfU2tpcF9QU19Ub2tlbiggcGFyc2VyICk7ICAgLyogYE5QJyBvciBgfCcgb3IgYG5vYWNjZXNzJyAqLworICAgICAgaWYgKCBwYXJzZXItPnJvb3QuZXJyb3IgKQorICAgICAgICByZXR1cm47CisgICAgICBUMV9Ta2lwX1NwYWNlcyAgKCBwYXJzZXIgKTsKKworICAgICAgaWYgKCBwYXJzZXItPnJvb3QuY3Vyc29yICsgNCA8IHBhcnNlci0+cm9vdC5saW1pdCAgICAgICAgICAgICYmCisgICAgICAgICAgIGZ0X3N0cm5jbXAoIChjaGFyKilwYXJzZXItPnJvb3QuY3Vyc29yLCAicHV0IiwgMyApID09IDAgKQorICAgICAgeworICAgICAgICBUMV9Ta2lwX1BTX1Rva2VuKCBwYXJzZXIgKTsgLyogc2tpcCBgcHV0JyAqLworICAgICAgICBUMV9Ta2lwX1NwYWNlcyAgKCBwYXJzZXIgKTsKKyAgICAgIH0KKworICAgICAgLyogd2l0aCBzeW50aGV0aWMgZm9udHMgaXQgaXMgcG9zc2libGUgd2UgZ2V0IGhlcmUgdHdpY2UgKi8KKyAgICAgIGlmICggbG9hZGVyLT5udW1fc3VicnMgKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgLyogc29tZSBmb250cyB1c2UgYSB2YWx1ZSBvZiAtMSBmb3IgbGVuSVYgdG8gaW5kaWNhdGUgdGhhdCAqLworICAgICAgLyogdGhlIGNoYXJzdHJpbmdzIGFyZSB1bmVuY29kZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgLyogdGhhbmtzIHRvIFRvbSBLYWN2aW5za3kgZm9yIHBvaW50aW5nIHRoaXMgb3V0ICAgICAgICAgICAqLworICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgaWYgKCBmYWNlLT50eXBlMS5wcml2YXRlX2RpY3QubGVuSVYgPj0gMCApCisgICAgICB7CisgICAgICAgIEZUX0J5dGUqICB0ZW1wOworCisKKyAgICAgICAgLyogc29tZSBmb250cyBkZWZpbmUgZW1wdHkgc3ViciByZWNvcmRzIC0tIHRoaXMgaXMgbm90IHRvdGFsbHkgKi8KKyAgICAgICAgLyogY29tcGxpYW50IHRvIHRoZSBzcGVjaWZpY2F0aW9uICh3aGljaCBzYXlzIHRoZXkgc2hvdWxkIGF0ICAgKi8KKyAgICAgICAgLyogbGVhc3QgY29udGFpbiBhIGByZXR1cm4nKSwgYnV0IHdlIHN1cHBvcnQgdGhlbSBhbnl3YXkgICAgICAgKi8KKyAgICAgICAgaWYgKCBzaXplIDwgZmFjZS0+dHlwZTEucHJpdmF0ZV9kaWN0LmxlbklWICkKKyAgICAgICAgeworICAgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgIH0KKworICAgICAgICAvKiB0MV9kZWNyeXB0KCkgc2hvdWxkbid0IHdyaXRlIHRvIGJhc2UgLS0gbWFrZSB0ZW1wb3JhcnkgY29weSAqLworICAgICAgICBpZiAoIEZUX0FMTE9DKCB0ZW1wLCBzaXplICkgKQorICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgRlRfTUVNX0NPUFkoIHRlbXAsIGJhc2UsIHNpemUgKTsKKyAgICAgICAgcHNhdXgtPnQxX2RlY3J5cHQoIHRlbXAsIHNpemUsIDQzMzAgKTsKKyAgICAgICAgc2l6ZSAtPSBmYWNlLT50eXBlMS5wcml2YXRlX2RpY3QubGVuSVY7CisgICAgICAgIGVycm9yID0gVDFfQWRkX1RhYmxlKCB0YWJsZSwgKEZUX0ludClpZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wICsgZmFjZS0+dHlwZTEucHJpdmF0ZV9kaWN0LmxlbklWLCBzaXplICk7CisgICAgICAgIEZUX0ZSRUUoIHRlbXAgKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgZXJyb3IgPSBUMV9BZGRfVGFibGUoIHRhYmxlLCAoRlRfSW50KWlkeCwgYmFzZSwgc2l6ZSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICBpZiAoICFsb2FkZXItPm51bV9zdWJycyApCisgICAgICBsb2FkZXItPm51bV9zdWJycyA9IG51bV9zdWJyczsKKworICAgIHJldHVybjsKKworICBGYWlsOgorICAgIHBhcnNlci0+cm9vdC5lcnJvciA9IGVycm9yOworICB9CisKKworI2RlZmluZSBUQUJMRV9FWFRFTkQgIDUKKworCisgIHN0YXRpYyB2b2lkCisgIHBhcnNlX2NoYXJzdHJpbmdzKCBUMV9GYWNlICAgIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICBUMV9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBUMV9QYXJzZXIgICAgICBwYXJzZXIgICAgICAgPSAmbG9hZGVyLT5wYXJzZXI7CisgICAgUFNfVGFibGUgICAgICAgY29kZV90YWJsZSAgID0gJmxvYWRlci0+Y2hhcnN0cmluZ3M7CisgICAgUFNfVGFibGUgICAgICAgbmFtZV90YWJsZSAgID0gJmxvYWRlci0+Z2x5cGhfbmFtZXM7CisgICAgUFNfVGFibGUgICAgICAgc3dhcF90YWJsZSAgID0gJmxvYWRlci0+c3dhcF90YWJsZTsKKyAgICBGVF9NZW1vcnkgICAgICBtZW1vcnkgICAgICAgPSBwYXJzZXItPnJvb3QubWVtb3J5OworICAgIEZUX0Vycm9yICAgICAgIGVycm9yOworCisgICAgUFNBdXhfU2VydmljZSAgcHNhdXggICAgICAgID0gKFBTQXV4X1NlcnZpY2UpZmFjZS0+cHNhdXg7CisKKyAgICBGVF9CeXRlKiAgICAgICBjdXI7CisgICAgRlRfQnl0ZSogICAgICAgbGltaXQgICAgICAgID0gcGFyc2VyLT5yb290LmxpbWl0OworICAgIEZUX0ludCAgICAgICAgIG4sIG51bV9nbHlwaHM7CisgICAgRlRfVUludCAgICAgICAgbm90ZGVmX2luZGV4ID0gMDsKKyAgICBGVF9CeXRlICAgICAgICBub3RkZWZfZm91bmQgPSAwOworCisKKyAgICBudW1fZ2x5cGhzID0gKEZUX0ludClUMV9Ub0ludCggcGFyc2VyICk7CisgICAgaWYgKCBudW1fZ2x5cGhzIDwgMCApCisgICAgeworICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgZ290byBGYWlsOworICAgIH0KKworICAgIC8qIHNvbWUgZm9udHMgbGlrZSBPcHRpbWEtT2JsaXF1ZSBub3Qgb25seSBkZWZpbmUgdGhlIC9DaGFyU3RyaW5ncyAqLworICAgIC8qIGFycmF5IGJ1dCBhY2Nlc3MgaXQgYWxzbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggbnVtX2dseXBocyA9PSAwIHx8IHBhcnNlci0+cm9vdC5lcnJvciApCisgICAgICByZXR1cm47CisKKyAgICAvKiBpbml0aWFsaXplIHRhYmxlcywgbGVhdmluZyBzcGFjZSBmb3IgYWRkaXRpb24gb2YgLm5vdGRlZiwgKi8KKyAgICAvKiBpZiBuZWNlc3NhcnksIGFuZCBhIGZldyBvdGhlciBnbHlwaHMgdG8gaGFuZGxlIGJ1Z2d5ICAgICAgKi8KKyAgICAvKiBmb250cyB3aGljaCBoYXZlIG1vcmUgZ2x5cGhzIHRoYW4gc3BlY2lmaWVkLiAgICAgICAgICAgICAgKi8KKworICAgIC8qIGZvciBzb21lIG5vbi1zdGFuZGFyZCBmb250cyBsaWtlIGBPcHRpbWEnIHdoaWNoIHByb3ZpZGVzICAqLworICAgIC8qIGRpZmZlcmVudCBvdXRsaW5lcyBkZXBlbmRpbmcgb24gdGhlIHJlc29sdXRpb24gaXQgaXMgICAgICAqLworICAgIC8qIHBvc3NpYmxlIHRvIGdldCBoZXJlIHR3aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIGlmICggIWxvYWRlci0+bnVtX2dseXBocyApCisgICAgeworICAgICAgZXJyb3IgPSBwc2F1eC0+cHNfdGFibGVfZnVuY3MtPmluaXQoCisgICAgICAgICAgICAgICAgY29kZV90YWJsZSwgbnVtX2dseXBocyArIDEgKyBUQUJMRV9FWFRFTkQsIG1lbW9yeSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgZXJyb3IgPSBwc2F1eC0+cHNfdGFibGVfZnVuY3MtPmluaXQoCisgICAgICAgICAgICAgICAgbmFtZV90YWJsZSwgbnVtX2dseXBocyArIDEgKyBUQUJMRV9FWFRFTkQsIG1lbW9yeSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgLyogSW5pdGlhbGl6ZSB0YWJsZSBmb3Igc3dhcHBpbmcgaW5kZXggbm90ZGVmX2luZGV4IGFuZCAqLworICAgICAgLyogaW5kZXggMCBuYW1lcyBhbmQgY29kZXMgKGlmIG5lY2Vzc2FyeSkuICAgICAgICAgICAgICAqLworCisgICAgICBlcnJvciA9IHBzYXV4LT5wc190YWJsZV9mdW5jcy0+aW5pdCggc3dhcF90YWJsZSwgNCwgbWVtb3J5ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworICAgIH0KKworICAgIG4gPSAwOworCisgICAgZm9yICg7OykKKyAgICB7CisgICAgICBGVF9Mb25nICAgc2l6ZTsKKyAgICAgIEZUX0J5dGUqICBiYXNlOworCisKKyAgICAgIC8qIHRoZSBmb3JtYXQgaXMgc2ltcGxlOiAgICAgICAgKi8KKyAgICAgIC8qICAgYC9nbHlwaG5hbWUnICsgYmluYXJ5IGRhdGEgKi8KKworICAgICAgVDFfU2tpcF9TcGFjZXMoIHBhcnNlciApOworCisgICAgICBjdXIgPSBwYXJzZXItPnJvb3QuY3Vyc29yOworICAgICAgaWYgKCBjdXIgPj0gbGltaXQgKQorICAgICAgICBicmVhazsKKworICAgICAgLyogd2Ugc3RvcCB3aGVuIHdlIGZpbmQgYSBgZGVmJyBvciBgZW5kJyBrZXl3b3JkICovCisgICAgICBpZiAoIGN1ciArIDMgPCBsaW1pdCAmJiBJU19QU19ERUxJTSggY3VyWzNdICkgKQorICAgICAgeworICAgICAgICBpZiAoIGN1clswXSA9PSAnZCcgJiYKKyAgICAgICAgICAgICBjdXJbMV0gPT0gJ2UnICYmCisgICAgICAgICAgICAgY3VyWzJdID09ICdmJyApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBUaGVyZSBhcmUgZm9udHMgd2hpY2ggaGF2ZSB0aGlzOiAqLworICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAvQ2hhclN0cmluZ3MgMTE4IGRpY3QgZGVmICAgICAgKi8KKyAgICAgICAgICAvKiAgIFByaXZhdGUgYmVnaW4gICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qICAgQ2hhclN0cmluZ3MgYmVnaW4gICAgICAgICAgICAgICovCisgICAgICAgICAgLyogICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIC8qIFRvIGNhdGNoIHRoaXMgd2UgaWdub3JlIGBkZWYnIGlmICovCisgICAgICAgICAgLyogbm8gY2hhcnN0cmluZyBoYXMgYWN0dWFsbHkgYmVlbiAgKi8KKyAgICAgICAgICAvKiBzZWVuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgIGlmICggbiApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggY3VyWzBdID09ICdlJyAmJgorICAgICAgICAgICAgIGN1clsxXSA9PSAnbicgJiYKKyAgICAgICAgICAgICBjdXJbMl0gPT0gJ2QnICkKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgVDFfU2tpcF9QU19Ub2tlbiggcGFyc2VyICk7CisgICAgICBpZiAoIHBhcnNlci0+cm9vdC5lcnJvciApCisgICAgICAgIHJldHVybjsKKworICAgICAgaWYgKCAqY3VyID09ICcvJyApCisgICAgICB7CisgICAgICAgIEZUX1B0ckRpc3QgIGxlbjsKKworCisgICAgICAgIGlmICggY3VyICsgMSA+PSBsaW1pdCApCisgICAgICAgIHsKKyAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgICAgZ290byBGYWlsOworICAgICAgICB9CisKKyAgICAgICAgY3VyKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2tpcCBgLycgKi8KKyAgICAgICAgbGVuID0gcGFyc2VyLT5yb290LmN1cnNvciAtIGN1cjsKKworICAgICAgICBpZiAoICFyZWFkX2JpbmFyeV9kYXRhKCBwYXJzZXIsICZzaXplLCAmYmFzZSwgSVNfSU5DUkVNRU5UQUwgKSApCisgICAgICAgICAgcmV0dXJuOworCQkvKiB4aGw6IEFkZCBib3VuZGFyeSBjaGVjayBoZXJlLiBGaXggdGhlIGJ1ZyByZXBvcnRlZCBieSBpZmlsdGVyLiAqLworCQkvKiBURVNURE9DOiBidWcjIDAwMTg1MDksIDQ1LnBkZi4gKi8KKwkJaWYgKGJhc2UgKyBzaXplID49IGxpbWl0KSB7CisJCQllcnJvciA9IFQxX0Vycl9JbnZhbGlkX0ZpbGVfRm9ybWF0OworCQkJZ290byBGYWlsOworCQl9CisgICAgICAgIC8qIGZvciBzb21lIG5vbi1zdGFuZGFyZCBmb250cyBsaWtlIGBPcHRpbWEnIHdoaWNoIHByb3ZpZGVzICovCisgICAgICAgIC8qIGRpZmZlcmVudCBvdXRsaW5lcyBkZXBlbmRpbmcgb24gdGhlIHJlc29sdXRpb24gaXQgaXMgICAgICovCisgICAgICAgIC8qIHBvc3NpYmxlIHRvIGdldCBoZXJlIHR3aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGlmICggbG9hZGVyLT5udW1fZ2x5cGhzICkKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlcnJvciA9IFQxX0FkZF9UYWJsZSggbmFtZV90YWJsZSwgbiwgY3VyLCBsZW4gKyAxICk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgICAvKiBhZGQgYSB0cmFpbGluZyB6ZXJvIHRvIHRoZSBuYW1lIHRhYmxlICovCisgICAgICAgIG5hbWVfdGFibGUtPmVsZW1lbnRzW25dW2xlbl0gPSAnXDAnOworCisgICAgICAgIC8qIHJlY29yZCBpbmRleCBvZiAvLm5vdGRlZiAqLworICAgICAgICBpZiAoICpjdXIgPT0gJy4nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgZnRfc3RyY21wKCAiLm5vdGRlZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciopKG5hbWVfdGFibGUtPmVsZW1lbnRzW25dKSApID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgbm90ZGVmX2luZGV4ID0gbjsKKyAgICAgICAgICBub3RkZWZfZm91bmQgPSAxOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBmYWNlLT50eXBlMS5wcml2YXRlX2RpY3QubGVuSVYgPj0gMCAmJgorICAgICAgICAgICAgIG4gPCBudW1fZ2x5cGhzICsgVEFCTEVfRVhURU5EICAgICAgICkKKyAgICAgICAgeworICAgICAgICAgIEZUX0J5dGUqICB0ZW1wOworCisKKyAgICAgICAgICBpZiAoIHNpemUgPD0gZmFjZS0+dHlwZTEucHJpdmF0ZV9kaWN0LmxlbklWICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgICAgfQorCisgICAgICAgICAgLyogdDFfZGVjcnlwdCgpIHNob3VsZG4ndCB3cml0ZSB0byBiYXNlIC0tIG1ha2UgdGVtcG9yYXJ5IGNvcHkgKi8KKyAgICAgICAgICBpZiAoIEZUX0FMTE9DKCB0ZW1wLCBzaXplICkgKQorICAgICAgICAgICAgZ290byBGYWlsOworICAgICAgICAgIEZUX01FTV9DT1BZKCB0ZW1wLCBiYXNlLCBzaXplICk7CisgICAgICAgICAgcHNhdXgtPnQxX2RlY3J5cHQoIHRlbXAsIHNpemUsIDQzMzAgKTsKKyAgICAgICAgICBzaXplIC09IGZhY2UtPnR5cGUxLnByaXZhdGVfZGljdC5sZW5JVjsKKyAgICAgICAgICBlcnJvciA9IFQxX0FkZF9UYWJsZSggY29kZV90YWJsZSwgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCArIGZhY2UtPnR5cGUxLnByaXZhdGVfZGljdC5sZW5JViwgc2l6ZSApOworICAgICAgICAgIEZUX0ZSRUUoIHRlbXAgKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgZXJyb3IgPSBUMV9BZGRfVGFibGUoIGNvZGVfdGFibGUsIG4sIGJhc2UsIHNpemUgKTsKKyAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgIG4rKzsKKyAgICAgIH0KKyAgICB9CisKKyAgICBsb2FkZXItPm51bV9nbHlwaHMgPSBuOworCisgICAgLyogaWYgLy5ub3RkZWYgaXMgZm91bmQgYnV0IGRvZXMgbm90IG9jY3VweSBpbmRleCAwLCBkbyBvdXIgbWFnaWMuICovCisgICAgaWYgKCBub3RkZWZfZm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIGZ0X3N0cmNtcCggIi5ub3RkZWYiLCAoY29uc3QgY2hhciopbmFtZV90YWJsZS0+ZWxlbWVudHNbMF0gKSApCisgICAgeworICAgICAgLyogU3dhcCBnbHlwaCBpbiBpbmRleCAwIHdpdGggLy5ub3RkZWYgZ2x5cGguICBGaXJzdCwgYWRkIGluZGV4IDAgICovCisgICAgICAvKiBuYW1lIGFuZCBjb2RlIGVudHJpZXMgdG8gc3dhcF90YWJsZS4gIFRoZW4gcGxhY2Ugbm90ZGVmX2luZGV4ICAgKi8KKyAgICAgIC8qIG5hbWUgYW5kIGNvZGUgZW50cmllcyBpbnRvIHN3YXBfdGFibGUuICBUaGVuIHN3YXAgbmFtZSBhbmQgY29kZSAqLworICAgICAgLyogZW50cmllcyBhdCBpbmRpY2VzIG5vdGRlZl9pbmRleCBhbmQgMCB1c2luZyB2YWx1ZXMgc3RvcmVkIGluICAgICovCisgICAgICAvKiBzd2FwX3RhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgLyogSW5kZXggMCBuYW1lICovCisgICAgICBlcnJvciA9IFQxX0FkZF9UYWJsZSggc3dhcF90YWJsZSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX3RhYmxlLT5lbGVtZW50c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX3RhYmxlLT5sZW5ndGhzIFswXSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgLyogSW5kZXggMCBjb2RlICovCisgICAgICBlcnJvciA9IFQxX0FkZF9UYWJsZSggc3dhcF90YWJsZSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX3RhYmxlLT5lbGVtZW50c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX3RhYmxlLT5sZW5ndGhzIFswXSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgLyogSW5kZXggbm90ZGVmX2luZGV4IG5hbWUgKi8KKyAgICAgIGVycm9yID0gVDFfQWRkX1RhYmxlKCBzd2FwX3RhYmxlLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfdGFibGUtPmVsZW1lbnRzW25vdGRlZl9pbmRleF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV90YWJsZS0+bGVuZ3RocyBbbm90ZGVmX2luZGV4XSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgLyogSW5kZXggbm90ZGVmX2luZGV4IGNvZGUgKi8KKyAgICAgIGVycm9yID0gVDFfQWRkX1RhYmxlKCBzd2FwX3RhYmxlLCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVfdGFibGUtPmVsZW1lbnRzW25vdGRlZl9pbmRleF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZV90YWJsZS0+bGVuZ3RocyBbbm90ZGVmX2luZGV4XSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgZXJyb3IgPSBUMV9BZGRfVGFibGUoIG5hbWVfdGFibGUsIG5vdGRlZl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwX3RhYmxlLT5lbGVtZW50c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwX3RhYmxlLT5sZW5ndGhzIFswXSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgZXJyb3IgPSBUMV9BZGRfVGFibGUoIGNvZGVfdGFibGUsIG5vdGRlZl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwX3RhYmxlLT5lbGVtZW50c1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwX3RhYmxlLT5sZW5ndGhzIFsxXSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgZXJyb3IgPSBUMV9BZGRfVGFibGUoIG5hbWVfdGFibGUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcF90YWJsZS0+ZWxlbWVudHNbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcF90YWJsZS0+bGVuZ3RocyBbMl0gKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgIGVycm9yID0gVDFfQWRkX1RhYmxlKCBjb2RlX3RhYmxlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBfdGFibGUtPmVsZW1lbnRzWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBfdGFibGUtPmxlbmd0aHMgWzNdICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgfQorICAgIGVsc2UgaWYgKCAhbm90ZGVmX2ZvdW5kICkKKyAgICB7CisgICAgICAvKiBub3RkZWZfaW5kZXggaXMgYWxyZWFkeSAwLCBvciAvLm5vdGRlZiBpcyB1bmRlZmluZWQgaW4gICAqLworICAgICAgLyogY2hhcnN0cmluZ3MgZGljdGlvbmFyeS4gIFdvcnJ5IGFib3V0IC8ubm90ZGVmIHVuZGVmaW5lZC4gKi8KKyAgICAgIC8qIFdlIHRha2UgaW5kZXggMCBhbmQgYWRkIGl0IHRvIHRoZSBlbmQgb2YgdGhlIHRhYmxlKHMpICAgICovCisgICAgICAvKiBhbmQgYWRkIG91ciBvd24gLy5ub3RkZWYgZ2x5cGggdG8gaW5kZXggMC4gICAgICAgICAgICAgICAqLworCisgICAgICAvKiAwIDMzMyBoc2J3IGVuZGNoYXIgKi8KKyAgICAgIEZUX0J5dGUgIG5vdGRlZl9nbHlwaFtdID0geyAweDhCLCAweEY3LCAweEUxLCAweDBELCAweDBFIH07CisgICAgICBjaGFyKiAgICBub3RkZWZfbmFtZSAgICA9IChjaGFyICopIi5ub3RkZWYiOworCisKKyAgICAgIGVycm9yID0gVDFfQWRkX1RhYmxlKCBzd2FwX3RhYmxlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfdGFibGUtPmVsZW1lbnRzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfdGFibGUtPmxlbmd0aHMgWzBdICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBlcnJvciA9IFQxX0FkZF9UYWJsZSggc3dhcF90YWJsZSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX3RhYmxlLT5lbGVtZW50c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlX3RhYmxlLT5sZW5ndGhzIFswXSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgZXJyb3IgPSBUMV9BZGRfVGFibGUoIG5hbWVfdGFibGUsIDAsIG5vdGRlZl9uYW1lLCA4ICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBlcnJvciA9IFQxX0FkZF9UYWJsZSggY29kZV90YWJsZSwgMCwgbm90ZGVmX2dseXBoLCA1ICk7CisKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgIGVycm9yID0gVDFfQWRkX1RhYmxlKCBuYW1lX3RhYmxlLCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBfdGFibGUtPmVsZW1lbnRzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBfdGFibGUtPmxlbmd0aHMgWzBdICk7CisgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBlcnJvciA9IFQxX0FkZF9UYWJsZSggY29kZV90YWJsZSwgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwX3RhYmxlLT5lbGVtZW50c1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwX3RhYmxlLT5sZW5ndGhzIFsxXSApOworICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGdvdG8gRmFpbDsKKworICAgICAgLyogd2UgYWRkZWQgYSBnbHlwaC4gKi8KKyAgICAgIGxvYWRlci0+bnVtX2dseXBocyArPSAxOworICAgIH0KKworICAgIHJldHVybjsKKworICBGYWlsOgorICAgIHBhcnNlci0+cm9vdC5lcnJvciA9IGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIERlZmluZSB0aGUgdG9rZW4gZmllbGQgc3RhdGljIHZhcmlhYmxlcy4gIFRoaXMgaXMgYSBzZXQgb2YgICAgICAgICAgICAqLworICAvKiBUMV9GaWVsZFJlYyB2YXJpYWJsZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgc3RhdGljCisgIGNvbnN0IFQxX0ZpZWxkUmVjICB0MV9rZXl3b3Jkc1tdID0KKyAgeworCisjaW5jbHVkZSAidDF0b2tlbnMuaCIKKworICAgIC8qIG5vdyBhZGQgdGhlIHNwZWNpYWwgZnVuY3Rpb25zLi4uICovCisgICAgVDFfRklFTERfQ0FMTEJBQ0soICJGb250TWF0cml4IiwgICAgICAgICAgIHQxX3BhcnNlX2ZvbnRfbWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX0ZPTlRESUNUICkKKyAgICBUMV9GSUVMRF9DQUxMQkFDSyggIkVuY29kaW5nIiwgICAgICAgICAgICAgcGFyc2VfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorICAgIFQxX0ZJRUxEX0NBTExCQUNLKCAiU3VicnMiLCAgICAgICAgICAgICAgICBwYXJzZV9zdWJycywKKyAgICAgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9QUklWQVRFICkKKyAgICBUMV9GSUVMRF9DQUxMQkFDSyggIkNoYXJTdHJpbmdzIiwgICAgICAgICAgcGFyc2VfY2hhcnN0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfUFJJVkFURSApCisgICAgVDFfRklFTERfQ0FMTEJBQ0soICJQcml2YXRlIiwgICAgICAgICAgICAgIHBhcnNlX3ByaXZhdGUsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorCisjaWZuZGVmIFQxX0NPTkZJR19PUFRJT05fTk9fTU1fU1VQUE9SVAorICAgIFQxX0ZJRUxEX0NBTExCQUNLKCAiQmxlbmREZXNpZ25Qb3NpdGlvbnMiLCBwYXJzZV9ibGVuZF9kZXNpZ25fcG9zaXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX0ZPTlRESUNUICkKKyAgICBUMV9GSUVMRF9DQUxMQkFDSyggIkJsZW5kRGVzaWduTWFwIiwgICAgICAgcGFyc2VfYmxlbmRfZGVzaWduX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9GT05URElDVCApCisgICAgVDFfRklFTERfQ0FMTEJBQ0soICJCbGVuZEF4aXNUeXBlcyIsICAgICAgIHBhcnNlX2JsZW5kX2F4aXNfdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorICAgIFQxX0ZJRUxEX0NBTExCQUNLKCAiV2VpZ2h0VmVjdG9yIiwgICAgICAgICBwYXJzZV93ZWlnaHRfdmVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX0ZPTlRESUNUICkKKyAgICBUMV9GSUVMRF9DQUxMQkFDSyggIkJ1aWxkQ2hhckFycmF5IiwgICAgICAgcGFyc2VfYnVpbGRjaGFyLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX1BSSVZBVEUgKQorI2VuZGlmCisKKyAgICB7IDAsIFQxX0ZJRUxEX0xPQ0FUSU9OX0NJRF9JTkZPLCBUMV9GSUVMRF9UWVBFX05PTkUsIDAsIDAsIDAsIDAsIDAsIDAgfQorICB9OworCisKKyNkZWZpbmUgVDFfRklFTERfQ09VTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICggc2l6ZW9mICggdDFfa2V5d29yZHMgKSAvIHNpemVvZiAoIHQxX2tleXdvcmRzWzBdICkgKQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIHBhcnNlX2RpY3QoIFQxX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgVDFfTG9hZGVyICBsb2FkZXIsCisgICAgICAgICAgICAgIEZUX0J5dGUqICAgYmFzZSwKKyAgICAgICAgICAgICAgRlRfTG9uZyAgICBzaXplICkKKyAgeworICAgIFQxX1BhcnNlciAgcGFyc2VyID0gJmxvYWRlci0+cGFyc2VyOworICAgIEZUX0J5dGUgICAqbGltaXQsICpzdGFydF9iaW5hcnkgPSBOVUxMOworICAgIEZUX0Jvb2wgICAgaGF2ZV9pbnRlZ2VyID0gMDsKKworCisgICAgcGFyc2VyLT5yb290LmN1cnNvciA9IGJhc2U7CisgICAgcGFyc2VyLT5yb290LmxpbWl0ICA9IGJhc2UgKyBzaXplOworICAgIHBhcnNlci0+cm9vdC5lcnJvciAgPSBGVF9FcnJfT2s7CisKKyAgICBsaW1pdCA9IHBhcnNlci0+cm9vdC5saW1pdDsKKworICAgIFQxX1NraXBfU3BhY2VzKCBwYXJzZXIgKTsKKworICAgIHdoaWxlICggcGFyc2VyLT5yb290LmN1cnNvciA8IGxpbWl0ICkKKyAgICB7CisgICAgICBGVF9CeXRlKiAgY3VyOworCisKKyAgICAgIGN1ciA9IHBhcnNlci0+cm9vdC5jdXJzb3I7CisKKyAgICAgIC8qIGxvb2sgZm9yIGBlZXhlYycgKi8KKyAgICAgIGlmICggSVNfUFNfVE9LRU4oIGN1ciwgbGltaXQsICJlZXhlYyIgKSApCisgICAgICAgIGJyZWFrOworCisgICAgICAvKiBsb29rIGZvciBgY2xvc2VmaWxlJyB3aGljaCBlbmRzIHRoZSBlZXhlYyBzZWN0aW9uICovCisgICAgICBlbHNlIGlmICggSVNfUFNfVE9LRU4oIGN1ciwgbGltaXQsICJjbG9zZWZpbGUiICkgKQorICAgICAgICBicmVhazsKKworICAgICAgLyogaW4gYSBzeW50aGV0aWMgZm9udCB0aGUgYmFzZSBmb250IHN0YXJ0cyBhZnRlciBhICAgICAgICAgICAqLworICAgICAgLyogYEZvbnREaWN0aW9uYXJ5JyB0b2tlbiB0aGF0IGlzIHBsYWNlZCBhZnRlciBhIFByaXZhdGUgZGljdCAqLworICAgICAgZWxzZSBpZiAoIElTX1BTX1RPS0VOKCBjdXIsIGxpbWl0LCAiRm9udERpcmVjdG9yeSIgKSApCisgICAgICB7CisgICAgICAgIGlmICggbG9hZGVyLT5rZXl3b3Jkc19lbmNvdW50ZXJlZCAmIFQxX1BSSVZBVEUgKQorICAgICAgICAgIGxvYWRlci0+a2V5d29yZHNfZW5jb3VudGVyZWQgfD0KKyAgICAgICAgICAgIFQxX0ZPTlRESVJfQUZURVJfUFJJVkFURTsKKyAgICAgICAgcGFyc2VyLT5yb290LmN1cnNvciArPSAxMzsKKyAgICAgIH0KKworICAgICAgLyogY2hlY2sgd2hldGhlciB3ZSBoYXZlIGFuIGludGVnZXIgKi8KKyAgICAgIGVsc2UgaWYgKCBmdF9pc2RpZ2l0KCAqY3VyICkgKQorICAgICAgeworICAgICAgICBzdGFydF9iaW5hcnkgPSBjdXI7CisgICAgICAgIFQxX1NraXBfUFNfVG9rZW4oIHBhcnNlciApOworICAgICAgICBpZiAoIHBhcnNlci0+cm9vdC5lcnJvciApCisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICBoYXZlX2ludGVnZXIgPSAxOworICAgICAgfQorCisgICAgICAvKiBpbiB2YWxpZCBUeXBlIDEgZm9udHMgd2UgZG9uJ3Qgc2VlIGBSRCcgb3IgYC18JyBkaXJlY3RseSAqLworICAgICAgLyogc2luY2UgdGhvc2UgdG9rZW5zIGFyZSBoYW5kbGVkIGJ5IHBhcnNlX3N1YnJzIGFuZCAgICAgICAgKi8KKyAgICAgIC8qIHBhcnNlX2NoYXJzdHJpbmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICBlbHNlIGlmICggKmN1ciA9PSAnUicgJiYgY3VyICsgNiA8IGxpbWl0ICYmICooY3VyICsgMSkgPT0gJ0QnICYmCisgICAgICAgICAgICAgICAgaGF2ZV9pbnRlZ2VyICkKKyAgICAgIHsKKyAgICAgICAgRlRfTG9uZyAgIHM7CisgICAgICAgIEZUX0J5dGUqICBiOworCisKKyAgICAgICAgcGFyc2VyLT5yb290LmN1cnNvciA9IHN0YXJ0X2JpbmFyeTsKKyAgICAgICAgaWYgKCAhcmVhZF9iaW5hcnlfZGF0YSggcGFyc2VyLCAmcywgJmIsIElTX0lOQ1JFTUVOVEFMICkgKQorICAgICAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICBoYXZlX2ludGVnZXIgPSAwOworICAgICAgfQorCisgICAgICBlbHNlIGlmICggKmN1ciA9PSAnLScgJiYgY3VyICsgNiA8IGxpbWl0ICYmICooY3VyICsgMSkgPT0gJ3wnICYmCisgICAgICAgICAgICAgICAgaGF2ZV9pbnRlZ2VyICkKKyAgICAgIHsKKyAgICAgICAgRlRfTG9uZyAgIHM7CisgICAgICAgIEZUX0J5dGUqICBiOworCisKKyAgICAgICAgcGFyc2VyLT5yb290LmN1cnNvciA9IHN0YXJ0X2JpbmFyeTsKKyAgICAgICAgaWYgKCAhcmVhZF9iaW5hcnlfZGF0YSggcGFyc2VyLCAmcywgJmIsIElTX0lOQ1JFTUVOVEFMICkgKQorICAgICAgICAgIHJldHVybiBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgICBoYXZlX2ludGVnZXIgPSAwOworICAgICAgfQorCisgICAgICAvKiBsb29rIGZvciBpbW1lZGlhdGVzICovCisgICAgICBlbHNlIGlmICggKmN1ciA9PSAnLycgJiYgY3VyICsgMiA8IGxpbWl0ICkKKyAgICAgIHsKKyAgICAgICAgRlRfUHRyRGlzdCAgbGVuOworCisKKyAgICAgICAgY3VyKys7CisKKyAgICAgICAgcGFyc2VyLT5yb290LmN1cnNvciA9IGN1cjsKKyAgICAgICAgVDFfU2tpcF9QU19Ub2tlbiggcGFyc2VyICk7CisgICAgICAgIGlmICggcGFyc2VyLT5yb290LmVycm9yICkKKyAgICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgICAgbGVuID0gcGFyc2VyLT5yb290LmN1cnNvciAtIGN1cjsKKworICAgICAgICBpZiAoIGxlbiA+IDAgJiYgbGVuIDwgMjIgJiYgcGFyc2VyLT5yb290LmN1cnNvciA8IGxpbWl0ICkKKyAgICAgICAgeworICAgICAgICAgIC8qIG5vdyBjb21wYXJlIHRoZSBpbW1lZGlhdGUgbmFtZSB0byB0aGUga2V5d29yZCB0YWJsZSAqLworICAgICAgICAgIFQxX0ZpZWxkICBrZXl3b3JkID0gKFQxX0ZpZWxkKXQxX2tleXdvcmRzOworCisKKyAgICAgICAgICBmb3IgKDs7KQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEZUX0J5dGUqICBuYW1lOworCisKKyAgICAgICAgICAgIG5hbWUgPSAoRlRfQnl0ZSopa2V5d29yZC0+aWRlbnQ7CisgICAgICAgICAgICBpZiAoICFuYW1lICkKKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmICggY3VyWzBdID09IG5hbWVbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICAgbGVuID09IChGVF9QdHJEaXN0KWZ0X3N0cmxlbiggKGNvbnN0IGNoYXIgKiluYW1lICkgJiYKKyAgICAgICAgICAgICAgICAgZnRfbWVtY21wKCBjdXIsIG5hbWUsIGxlbiApID09IDAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBXZSBmb3VuZCBpdCAtLSBydW4gdGhlIHBhcnNpbmcgY2FsbGJhY2shICAgICAqLworICAgICAgICAgICAgICAvKiBXZSByZWNvcmQgZXZlcnkgaW5zdGFuY2Ugb2YgZXZlcnkgZmllbGQgICAgICAqLworICAgICAgICAgICAgICAvKiAodW50aWwgd2UgcmVhY2ggdGhlIGJhc2UgZm9udCBvZiBhICAgICAgICAgICAqLworICAgICAgICAgICAgICAvKiBzeW50aGV0aWMgZm9udCkgdG8gZGVhbCBhZGVxdWF0ZWx5IHdpdGggICAgICAqLworICAgICAgICAgICAgICAvKiBtdWx0aXBsZSBtYXN0ZXIgZm9udHM7IHRoaXMgaXMgYWxzbyAgICAgICAgICAqLworICAgICAgICAgICAgICAvKiBuZWNlc3NhcnkgYmVjYXVzZSBsYXRlciBQb3N0U2NyaXB0ICAgICAgICAgICAqLworICAgICAgICAgICAgICAvKiBkZWZpbml0aW9ucyBvdmVycmlkZSBlYXJsaWVyIG9uZXMuICAgICAgICAgICAqLworCisgICAgICAgICAgICAgIC8qIE9uY2Ugd2UgZW5jb3VudGVyIGBGb250RGlyZWN0b3J5JyBhZnRlciAgICAgICovCisgICAgICAgICAgICAgIC8qIGAvUHJpdmF0ZScsIHdlIGtub3cgdGhhdCB0aGlzIGlzIGEgc3ludGhldGljICovCisgICAgICAgICAgICAgIC8qIGZvbnQ7IGV4Y2VwdCBmb3IgYC9DaGFyU3RyaW5ncycgd2UgYXJlIG5vdCAgICovCisgICAgICAgICAgICAgIC8qIGludGVyZXN0ZWQgaW4gYW55dGhpbmcgdGhhdCBmb2xsb3dzIHRoaXMgICAgICovCisgICAgICAgICAgICAgIC8qIGBGb250RGlyZWN0b3J5Jy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICAgICAgLyogTU0gZm9udHMgaGF2ZSBtb3JlIHRoYW4gb25lIC9Qcml2YXRlIHRva2VuIGF0ICovCisgICAgICAgICAgICAgIC8qIHRoZSB0b3AgbGV2ZWw7IGxldCdzIGhvcGUgdGhhdCBhbGwgdGhlIGp1bmsgICAqLworICAgICAgICAgICAgICAvKiB0aGF0IGZvbGxvd3MgdGhlIGZpcnN0IC9Qcml2YXRlIHRva2VuIGlzIG5vdCAgKi8KKyAgICAgICAgICAgICAgLyogaW50ZXJlc3RpbmcgdG8gdXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgICAgICAgLyogQWNjb3JkaW5nIHRvIEFkb2JlIFRlY2ggTm90ZSAjNTE3NSAoQ0lELUtleWVkICovCisgICAgICAgICAgICAgIC8qIEZvbnQgSW5zdGFsbGF0aW9uIGZvciBBVE0gU29mdHdhcmUpIGEgYGJlZ2luJyAqLworICAgICAgICAgICAgICAvKiBtdXN0IGJlIGZvbGxvd2VkIGJ5IGV4YWN0bHkgb25lIGBlbmQnLCBhbmQgICAgKi8KKyAgICAgICAgICAgICAgLyogYGJlZ2luJyAtLSBgZW5kJyBwYWlycyBtdXN0IGJlIGFjY3VyYXRlbHkgICAgICovCisgICAgICAgICAgICAgIC8qIHBhaXJlZC4gIFdlIGNvdWxkIHVzZSB0aGlzIHRvIGRpc3Rpbmd1aXNoICAgICAqLworICAgICAgICAgICAgICAvKiBiZXR3ZWVuIHRoZSBnbG9iYWwgUHJpdmF0ZSBhbmQgdGhlIFByaXZhdGUgICAgKi8KKyAgICAgICAgICAgICAgLyogZGljdCB0aGF0IGlzIGEgbWVtYmVyIG9mIHRoZSBCbGVuZCBkaWN0LiAgICAgICovCisKKyAgICAgICAgICAgICAgY29uc3QgRlRfVUludCBkaWN0ID0KKyAgICAgICAgICAgICAgICAoIGxvYWRlci0+a2V5d29yZHNfZW5jb3VudGVyZWQgJiBUMV9QUklWQVRFICkKKyAgICAgICAgICAgICAgICAgICAgPyBUMV9GSUVMRF9ESUNUX1BSSVZBVEUKKyAgICAgICAgICAgICAgICAgICAgOiBUMV9GSUVMRF9ESUNUX0ZPTlRESUNUOworCisgICAgICAgICAgICAgIGlmICggISggZGljdCAmIGtleXdvcmQtPmRpY3QgKSApCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBGVF9UUkFDRTEoKCAicGFyc2VfZGljdDogZm91bmQgYCVzJyBidXQgaWdub3JpbmcgaXQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzaW5jZSBpdCBpcyBpbiB0aGUgd3JvbmcgZGljdGlvbmFyeVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLT5pZGVudCApKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgIGlmICggISggbG9hZGVyLT5rZXl3b3Jkc19lbmNvdW50ZXJlZCAmCisgICAgICAgICAgICAgICAgICAgICAgVDFfRk9OVERJUl9BRlRFUl9QUklWQVRFICAgICApICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAgICBmdF9zdHJjbXAoIChjb25zdCBjaGFyKiluYW1lLCAiQ2hhclN0cmluZ3MiICkgPT0gMCApCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwYXJzZXItPnJvb3QuZXJyb3IgPSB0MV9sb2FkX2tleXdvcmQoIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkICk7CisgICAgICAgICAgICAgICAgaWYgKCBwYXJzZXItPnJvb3QuZXJyb3IgIT0gRlRfRXJyX09rICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBpZiAoIEZUX0VSUl9FUSggcGFyc2VyLT5yb290LmVycm9yLCBJZ25vcmUgKSApCisgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+cm9vdC5lcnJvciA9IEZUX0Vycl9PazsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+cm9vdC5lcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGtleXdvcmQrKzsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBoYXZlX2ludGVnZXIgPSAwOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBUMV9Ta2lwX1BTX1Rva2VuKCBwYXJzZXIgKTsKKyAgICAgICAgaWYgKCBwYXJzZXItPnJvb3QuZXJyb3IgKQorICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgaGF2ZV9pbnRlZ2VyID0gMDsKKyAgICAgIH0KKworICAgICAgVDFfU2tpcF9TcGFjZXMoIHBhcnNlciApOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBwYXJzZXItPnJvb3QuZXJyb3I7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIHQxX2luaXRfbG9hZGVyKCBUMV9Mb2FkZXIgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgIFQxX0ZhY2UgICAgZmFjZSApCisgIHsKKyAgICBGVF9VTlVTRUQoIGZhY2UgKTsKKworICAgIEZUX01FTV9aRVJPKCBsb2FkZXIsIHNpemVvZiAoICpsb2FkZXIgKSApOworICAgIGxvYWRlci0+bnVtX2dseXBocyA9IDA7CisgICAgbG9hZGVyLT5udW1fY2hhcnMgID0gMDsKKworICAgIC8qIGluaXRpYWxpemUgdGhlIHRhYmxlcyAtLSBzaW1wbHkgc2V0IHRoZWlyIGBpbml0JyBmaWVsZCB0byAwICovCisgICAgbG9hZGVyLT5lbmNvZGluZ190YWJsZS5pbml0ICA9IDA7CisgICAgbG9hZGVyLT5jaGFyc3RyaW5ncy5pbml0ICAgICA9IDA7CisgICAgbG9hZGVyLT5nbHlwaF9uYW1lcy5pbml0ICAgICA9IDA7CisgICAgbG9hZGVyLT5zdWJycy5pbml0ICAgICAgICAgICA9IDA7CisgICAgbG9hZGVyLT5zd2FwX3RhYmxlLmluaXQgICAgICA9IDA7CisgICAgbG9hZGVyLT5mb250ZGF0YSAgICAgICAgICAgICA9IDA7CisgICAgbG9hZGVyLT5rZXl3b3Jkc19lbmNvdW50ZXJlZCA9IDA7CisgIH0KKworCisgIHN0YXRpYyB2b2lkCisgIHQxX2RvbmVfbG9hZGVyKCBUMV9Mb2FkZXIgIGxvYWRlciApCisgIHsKKyAgICBUMV9QYXJzZXIgIHBhcnNlciA9ICZsb2FkZXItPnBhcnNlcjsKKworCisgICAgLyogZmluYWxpemUgdGFibGVzICovCisgICAgVDFfUmVsZWFzZV9UYWJsZSggJmxvYWRlci0+ZW5jb2RpbmdfdGFibGUgKTsKKyAgICBUMV9SZWxlYXNlX1RhYmxlKCAmbG9hZGVyLT5jaGFyc3RyaW5ncyApOworICAgIFQxX1JlbGVhc2VfVGFibGUoICZsb2FkZXItPmdseXBoX25hbWVzICk7CisgICAgVDFfUmVsZWFzZV9UYWJsZSggJmxvYWRlci0+c3dhcF90YWJsZSApOworICAgIFQxX1JlbGVhc2VfVGFibGUoICZsb2FkZXItPnN1YnJzICk7CisKKyAgICAvKiBmaW5hbGl6ZSBwYXJzZXIgKi8KKyAgICBUMV9GaW5hbGl6ZV9QYXJzZXIoIHBhcnNlciApOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVDFfT3Blbl9GYWNlKCBUMV9GYWNlICBmYWNlICkKKyAgeworICAgIFQxX0xvYWRlclJlYyAgIGxvYWRlcjsKKyAgICBUMV9QYXJzZXIgICAgICBwYXJzZXI7CisgICAgVDFfRm9udCAgICAgICAgdHlwZTEgPSAmZmFjZS0+dHlwZTE7CisgICAgUFNfUHJpdmF0ZSAgICAgcHJpdiAgPSAmdHlwZTEtPnByaXZhdGVfZGljdDsKKyAgICBGVF9FcnJvciAgICAgICBlcnJvcjsKKworICAgIFBTQXV4X1NlcnZpY2UgIHBzYXV4ID0gKFBTQXV4X1NlcnZpY2UpZmFjZS0+cHNhdXg7CisKKworICAgIHQxX2luaXRfbG9hZGVyKCAmbG9hZGVyLCBmYWNlICk7CisKKyAgICAvKiBkZWZhdWx0IHZhbHVlcyAqLworICAgIGZhY2UtPm5kdl9pZHggICAgICAgICAgPSAtMTsKKyAgICBmYWNlLT5jZHZfaWR4ICAgICAgICAgID0gLTE7CisgICAgZmFjZS0+bGVuX2J1aWxkY2hhciAgICA9IDA7CisKKyAgICBwcml2LT5ibHVlX3NoaWZ0ICAgICAgID0gNzsKKyAgICBwcml2LT5ibHVlX2Z1enogICAgICAgID0gMTsKKyAgICBwcml2LT5sZW5JViAgICAgICAgICAgID0gNDsKKyAgICBwcml2LT5leHBhbnNpb25fZmFjdG9yID0gKEZUX0ZpeGVkKSggMC4wNiAqIDB4MTAwMDBMICk7CisgICAgcHJpdi0+Ymx1ZV9zY2FsZSAgICAgICA9IChGVF9GaXhlZCkoIDAuMDM5NjI1ICogMHgxMDAwMEwgKiAxMDAwICk7CisKKyAgICBwYXJzZXIgPSAmbG9hZGVyLnBhcnNlcjsKKyAgICBlcnJvciAgPSBUMV9OZXdfUGFyc2VyKCBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS0+cm9vdC5tZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNhdXggKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGVycm9yID0gcGFyc2VfZGljdCggZmFjZSwgJmxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YmFzZV9kaWN0LCBwYXJzZXItPmJhc2VfbGVuICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBlcnJvciA9IFQxX0dldF9Qcml2YXRlX0RpY3QoIHBhcnNlciwgcHNhdXggKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIGVycm9yID0gcGFyc2VfZGljdCggZmFjZSwgJmxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+cHJpdmF0ZV9kaWN0LCBwYXJzZXItPnByaXZhdGVfbGVuICk7CisgICAgaWYgKCBlcnJvciApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICAvKiBlbnN1cmUgZXZlbi1uZXNzIG9mIGBudW1fYmx1ZV92YWx1ZXMnICovCisgICAgcHJpdi0+bnVtX2JsdWVfdmFsdWVzICY9IH4xOworCisjaWZuZGVmIFQxX0NPTkZJR19PUFRJT05fTk9fTU1fU1VQUE9SVAorCisgICAgaWYgKCBmYWNlLT5ibGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgIGZhY2UtPmJsZW5kLT5udW1fZGVmYXVsdF9kZXNpZ25fdmVjdG9yICE9IDAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgZmFjZS0+YmxlbmQtPm51bV9kZWZhdWx0X2Rlc2lnbl92ZWN0b3IgIT0gZmFjZS0+YmxlbmQtPm51bV9heGlzICkKKyAgICB7CisgICAgICAvKiB3ZSBkb24ndCB1c2UgaXQgY3VycmVudGx5IHNvIGp1c3Qgd2FybiwgcmVzZXQsIGFuZCBpZ25vcmUgKi8KKyAgICAgIEZUX0VSUk9SKCggIlQxX09wZW5fRmFjZSgpOiAvRGVzaWduVmVjdG9yIGNvbnRhaW5zICV1IGVudHJpZXMgIgorICAgICAgICAgICAgICAgICAid2hpbGUgdGhlcmUgYXJlICV1IGF4ZXMuXG4iLAorICAgICAgICAgICAgICAgICBmYWNlLT5ibGVuZC0+bnVtX2RlZmF1bHRfZGVzaWduX3ZlY3RvciwKKyAgICAgICAgICAgICAgICAgZmFjZS0+YmxlbmQtPm51bV9heGlzICkpOworCisgICAgICBmYWNlLT5ibGVuZC0+bnVtX2RlZmF1bHRfZGVzaWduX3ZlY3RvciA9IDA7CisgICAgfQorCisgICAgLyogdGhlIGZvbGxvd2luZyBjYW4gaGFwcGVuIGZvciBNTSBpbnN0YW5jZXM7IHdlIHRoZW4gdHJlYXQgdGhlICovCisgICAgLyogZm9udCBhcyBhIG5vcm1hbCBQUyBmb250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgaWYgKCBmYWNlLT5ibGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAoICFmYWNlLT5ibGVuZC0+bnVtX2Rlc2lnbnMgfHwgIWZhY2UtPmJsZW5kLT5udW1fYXhpcyApICkKKyAgICAgIFQxX0RvbmVfQmxlbmQoIGZhY2UgKTsKKworICAgIC8qIGFub3RoZXIgc2FmZXR5IGNoZWNrICovCisgICAgaWYgKCBmYWNlLT5ibGVuZCApCisgICAgeworICAgICAgRlRfVUludCAgaTsKKworCisgICAgICBmb3IgKCBpID0gMDsgaSA8IGZhY2UtPmJsZW5kLT5udW1fYXhpczsgaSsrICkKKyAgICAgICAgaWYgKCAhZmFjZS0+YmxlbmQtPmRlc2lnbl9tYXBbaV0ubnVtX3BvaW50cyApCisgICAgICAgIHsKKyAgICAgICAgICBUMV9Eb25lX0JsZW5kKCBmYWNlICk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIGZhY2UtPmJsZW5kICkKKyAgICB7CisgICAgICBpZiAoIGZhY2UtPmxlbl9idWlsZGNoYXIgPiAwICkKKyAgICAgIHsKKyAgICAgICAgRlRfTWVtb3J5ICBtZW1vcnkgPSBmYWNlLT5yb290Lm1lbW9yeTsKKworCisgICAgICAgIGlmICggRlRfTkVXX0FSUkFZKCBmYWNlLT5idWlsZGNoYXIsIGZhY2UtPmxlbl9idWlsZGNoYXIgKSApCisgICAgICAgIHsKKyAgICAgICAgICBGVF9FUlJPUigoICJUMV9PcGVuX0ZhY2U6IGNhbm5vdCBhbGxvY2F0ZSBCdWlsZENoYXJBcnJheVxuIiApKTsKKyAgICAgICAgICBmYWNlLT5sZW5fYnVpbGRjaGFyID0gMDsKKyAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgZmFjZS0+bGVuX2J1aWxkY2hhciA9IDA7CisKKyNlbmRpZiAvKiAhVDFfQ09ORklHX09QVElPTl9OT19NTV9TVVBQT1JUICovCisKKyAgICAvKiBub3csIHByb3BhZ2F0ZSB0aGUgc3VicnMsIGNoYXJzdHJpbmdzLCBhbmQgZ2x5cGhuYW1lcyB0YWJsZXMgKi8KKyAgICAvKiB0byB0aGUgVHlwZTEgZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB0eXBlMS0+bnVtX2dseXBocyA9IGxvYWRlci5udW1fZ2x5cGhzOworCisgICAgaWYgKCBsb2FkZXIuc3VicnMuaW5pdCApCisgICAgeworICAgICAgbG9hZGVyLnN1YnJzLmluaXQgID0gMDsKKyAgICAgIHR5cGUxLT5udW1fc3VicnMgICA9IGxvYWRlci5udW1fc3VicnM7CisgICAgICB0eXBlMS0+c3VicnNfYmxvY2sgPSBsb2FkZXIuc3VicnMuYmxvY2s7CisgICAgICB0eXBlMS0+c3VicnMgICAgICAgPSBsb2FkZXIuc3VicnMuZWxlbWVudHM7CisgICAgICB0eXBlMS0+c3VicnNfbGVuICAgPSBsb2FkZXIuc3VicnMubGVuZ3RoczsKKyAgICB9CisKKyAgICBpZiAoICFJU19JTkNSRU1FTlRBTCApCisgICAgICBpZiAoICFsb2FkZXIuY2hhcnN0cmluZ3MuaW5pdCApCisgICAgICB7CisgICAgICAgIEZUX0VSUk9SKCggIlQxX09wZW5fRmFjZTogbm8gYC9DaGFyU3RyaW5ncycgYXJyYXkgaW4gZmFjZVxuIiApKTsKKyAgICAgICAgZXJyb3IgPSBGVF9USFJPVyggSW52YWxpZF9GaWxlX0Zvcm1hdCApOworICAgICAgfQorCisgICAgbG9hZGVyLmNoYXJzdHJpbmdzLmluaXQgID0gMDsKKyAgICB0eXBlMS0+Y2hhcnN0cmluZ3NfYmxvY2sgPSBsb2FkZXIuY2hhcnN0cmluZ3MuYmxvY2s7CisgICAgdHlwZTEtPmNoYXJzdHJpbmdzICAgICAgID0gbG9hZGVyLmNoYXJzdHJpbmdzLmVsZW1lbnRzOworICAgIHR5cGUxLT5jaGFyc3RyaW5nc19sZW4gICA9IGxvYWRlci5jaGFyc3RyaW5ncy5sZW5ndGhzOworCisgICAgLyogd2UgY29weSB0aGUgZ2x5cGggbmFtZXMgYGJsb2NrJyBhbmQgYGVsZW1lbnRzJyBmaWVsZHM7ICovCisgICAgLyogdGhlIGBsZW5ndGhzJyBmaWVsZCBtdXN0IGJlIHJlbGVhc2VkIGxhdGVyICAgICAgICAgICAgICovCisgICAgdHlwZTEtPmdseXBoX25hbWVzX2Jsb2NrICAgID0gbG9hZGVyLmdseXBoX25hbWVzLmJsb2NrOworICAgIHR5cGUxLT5nbHlwaF9uYW1lcyAgICAgICAgICA9IChGVF9TdHJpbmcqKilsb2FkZXIuZ2x5cGhfbmFtZXMuZWxlbWVudHM7CisgICAgbG9hZGVyLmdseXBoX25hbWVzLmJsb2NrICAgID0gMDsKKyAgICBsb2FkZXIuZ2x5cGhfbmFtZXMuZWxlbWVudHMgPSAwOworCisgICAgLyogd2UgbXVzdCBub3cgYnVpbGQgdHlwZTEuZW5jb2Rpbmcgd2hlbiB3ZSBoYXZlIGEgY3VzdG9tIGFycmF5ICovCisgICAgaWYgKCB0eXBlMS0+ZW5jb2RpbmdfdHlwZSA9PSBUMV9FTkNPRElOR19UWVBFX0FSUkFZICkKKyAgICB7CisgICAgICBGVF9JbnQgICAgY2hhcmNvZGUsIGlkeCwgbWluX2NoYXIsIG1heF9jaGFyOworICAgICAgRlRfQnl0ZSogIGNoYXJfbmFtZTsKKyAgICAgIEZUX0J5dGUqICBnbHlwaF9uYW1lOworCisKKyAgICAgIC8qIE9LLCB3ZSBkbyB0aGUgZm9sbG93aW5nOiBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSBlbmNvZGluZyAgKi8KKyAgICAgIC8qIHRhYmxlLCBsb29rIHVwIHRoZSBpbmRleCBvZiB0aGUgZ2x5cGggaGF2aW5nIHRoZSBzYW1lIG5hbWUgKi8KKyAgICAgIC8qIHRoZSBpbmRleCBpcyB0aGVuIHN0b3JlZCBpbiB0eXBlMS5lbmNvZGluZy5jaGFyX2luZGV4LCBhbmQgKi8KKyAgICAgIC8qIHRoZSBuYW1lIHRvIHR5cGUxLmVuY29kaW5nLmNoYXJfbmFtZSAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgbWluX2NoYXIgPSAwOworICAgICAgbWF4X2NoYXIgPSAwOworCisgICAgICBjaGFyY29kZSA9IDA7CisgICAgICBmb3IgKCA7IGNoYXJjb2RlIDwgbG9hZGVyLmVuY29kaW5nX3RhYmxlLm1heF9lbGVtczsgY2hhcmNvZGUrKyApCisgICAgICB7CisgICAgICAgIHR5cGUxLT5lbmNvZGluZy5jaGFyX2luZGV4W2NoYXJjb2RlXSA9IDA7CisgICAgICAgIHR5cGUxLT5lbmNvZGluZy5jaGFyX25hbWUgW2NoYXJjb2RlXSA9IChjaGFyICopIi5ub3RkZWYiOworCisgICAgICAgIGNoYXJfbmFtZSA9IGxvYWRlci5lbmNvZGluZ190YWJsZS5lbGVtZW50c1tjaGFyY29kZV07CisgICAgICAgIGlmICggY2hhcl9uYW1lICkKKyAgICAgICAgICBmb3IgKCBpZHggPSAwOyBpZHggPCB0eXBlMS0+bnVtX2dseXBoczsgaWR4KysgKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGdseXBoX25hbWUgPSAoRlRfQnl0ZSopdHlwZTEtPmdseXBoX25hbWVzW2lkeF07CisgICAgICAgICAgICBpZiAoIGZ0X3N0cmNtcCggKGNvbnN0IGNoYXIqKWNoYXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciopZ2x5cGhfbmFtZSApID09IDAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB0eXBlMS0+ZW5jb2RpbmcuY2hhcl9pbmRleFtjaGFyY29kZV0gPSAoRlRfVVNob3J0KWlkeDsKKyAgICAgICAgICAgICAgdHlwZTEtPmVuY29kaW5nLmNoYXJfbmFtZSBbY2hhcmNvZGVdID0gKGNoYXIqKWdseXBoX25hbWU7CisKKyAgICAgICAgICAgICAgLyogQ2hhbmdlIG1pbi9tYXggZW5jb2RlZCBjaGFyIG9ubHkgaWYgZ2x5cGggbmFtZSBpcyAqLworICAgICAgICAgICAgICAvKiBub3QgLy5ub3RkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgIGlmICggZnRfc3RyY21wKCAoY29uc3QgY2hhciopIi5ub3RkZWYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIqKWdseXBoX25hbWUgKSAhPSAwICkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICggY2hhcmNvZGUgPCBtaW5fY2hhciApCisgICAgICAgICAgICAgICAgICBtaW5fY2hhciA9IGNoYXJjb2RlOworICAgICAgICAgICAgICAgIGlmICggY2hhcmNvZGUgPj0gbWF4X2NoYXIgKQorICAgICAgICAgICAgICAgICAgbWF4X2NoYXIgPSBjaGFyY29kZSArIDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgfQorCisgICAgICB0eXBlMS0+ZW5jb2RpbmcuY29kZV9maXJzdCA9IG1pbl9jaGFyOworICAgICAgdHlwZTEtPmVuY29kaW5nLmNvZGVfbGFzdCAgPSBtYXhfY2hhcjsKKyAgICAgIHR5cGUxLT5lbmNvZGluZy5udW1fY2hhcnMgID0gbG9hZGVyLm51bV9jaGFyczsKKyAgICB9CisKKyAgRXhpdDoKKyAgICB0MV9kb25lX2xvYWRlciggJmxvYWRlciApOworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKy8qIEVORCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MWxvYWQuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFsb2FkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAxNzQ0YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFsb2FkLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIHQxbG9hZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBUeXBlIDEgZm9udCBsb2FkZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBDb3B5cmlnaHQgMTk5Ni0yMDAxLCAyMDAyLCAyMDA0LCAyMDA2LCAyMDA3IGJ5ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsICAgICAgICovCisvKiAgbW9kaWZpZWQsIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgICAgICAqLworLyogIGxpY2Vuc2UsIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSAgICAgKi8KKy8qICB0aGlzIGZpbGUgeW91IGluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgICAgICAgICAgICAgICovCisvKiAgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0IGZ1bGx5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfX1QxTE9BRF9IX18KKyNkZWZpbmUgX19UMUxPQURfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvZnRtbS5oIgorCisjaW5jbHVkZSAidDFwYXJzZS5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgdHlwZWRlZiBzdHJ1Y3QgIFQxX0xvYWRlcl8KKyAgeworICAgIFQxX1BhcnNlclJlYyAgcGFyc2VyOyAgICAgICAgICAvKiBwYXJzZXIgdXNlZCB0byByZWFkIHRoZSBzdHJlYW0gKi8KKworICAgIEZUX0ludCAgICAgICAgbnVtX2NoYXJzOyAgICAgICAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBlbmNvZGluZyAqLworICAgIFBTX1RhYmxlUmVjICAgZW5jb2RpbmdfdGFibGU7ICAvKiBQU19UYWJsZSB1c2VkIHRvIHN0b3JlIHRoZSAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmNvZGluZyBjaGFyYWN0ZXIgbmFtZXMgICAgICAgICAqLworCisgICAgRlRfSW50ICAgICAgICBudW1fZ2x5cGhzOworICAgIFBTX1RhYmxlUmVjICAgZ2x5cGhfbmFtZXM7CisgICAgUFNfVGFibGVSZWMgICBjaGFyc3RyaW5nczsKKyAgICBQU19UYWJsZVJlYyAgIHN3YXBfdGFibGU7ICAgICAgLyogRm9yIG1vdmluZyAubm90ZGVmIGdseXBoIHRvIGluZGV4IDAuICovCisKKyAgICBGVF9JbnQgICAgICAgIG51bV9zdWJyczsKKyAgICBQU19UYWJsZVJlYyAgIHN1YnJzOworICAgIEZUX0Jvb2wgICAgICAgZm9udGRhdGE7CisKKyAgICBGVF9VSW50ICAgICAgIGtleXdvcmRzX2VuY291bnRlcmVkOyAvKiBUMV9MT0FERVJfRU5DT1VOVEVSRURfWFhYICovCisKKyAgfSBUMV9Mb2FkZXJSZWMsICpUMV9Mb2FkZXI7CisKKworICAvKiB0cmVhdG1lbnQgb2Ygc29tZSBrZXl3b3JkcyBkaWZmZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyICovCisgIC8qIHRoZXkgcHJlY2VkZSBvciBmb2xsb3cgY2VydGFpbiBvdGhlciBrZXl3b3JkcyAgICAgICAgICAgKi8KKworI2RlZmluZSBUMV9QUklWQVRFICAgICAgICAgICAgICAgICggMSA8PCAwICkKKyNkZWZpbmUgVDFfRk9OVERJUl9BRlRFUl9QUklWQVRFICAoIDEgPDwgMSApCisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUMV9PcGVuX0ZhY2UoIFQxX0ZhY2UgIGZhY2UgKTsKKworI2lmbmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlQKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUMV9HZXRfTXVsdGlfTWFzdGVyKCBUMV9GYWNlICAgICAgICAgICBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBGVF9NdWx0aV9NYXN0ZXIqICBtYXN0ZXIgKTsKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVDFfR2V0X01NX1ZhciggVDFfRmFjZSAgICAgIGZhY2UsCisgICAgICAgICAgICAgICAgIEZUX01NX1ZhciogICptYXN0ZXIgKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUMV9TZXRfTU1fQmxlbmQoIFQxX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGVF9VSW50ICAgIG51bV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgRlRfRml4ZWQqICBjb29yZHMgKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUMV9TZXRfTU1fRGVzaWduKCBUMV9GYWNlICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgRlRfVUludCAgIG51bV9jb29yZHMsCisgICAgICAgICAgICAgICAgICAgIEZUX0xvbmcqICBjb29yZHMgKTsKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVDFfU2V0X1Zhcl9EZXNpZ24oIFQxX0ZhY2UgICAgZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIEZUX1VJbnQgICAgbnVtX2Nvb3JkcywKKyAgICAgICAgICAgICAgICAgICAgIEZUX0ZpeGVkKiAgY29vcmRzICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBUMV9Eb25lX0JsZW5kKCBUMV9GYWNlICBmYWNlICk7CisKKyNlbmRpZiAvKiAhVDFfQ09ORklHX09QVElPTl9OT19NTV9TVVBQT1JUICovCisKKworRlRfRU5EX0hFQURFUgorCisjZW5kaWYgLyogX19UMUxPQURfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3Qxb2Jqcy5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MW9ianMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWIyMzAzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MW9ianMuYwpAQCAtMCwwICsxLDYxNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdDFvYmpzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFR5cGUgMSBvYmplY3RzIG1hbmFnZXIgKGJvZHkpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDksIDIwMTEsIDIwMTMgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCIKKworI2luY2x1ZGUgInQxZ2xvYWQuaCIKKyNpbmNsdWRlICJ0MWxvYWQuaCIKKworI2luY2x1ZGUgInQxZXJyb3JzLmgiCisKKyNpZm5kZWYgVDFfQ09ORklHX09QVElPTl9OT19BRk0KKyNpbmNsdWRlICJ0MWFmbS5oIgorI2VuZGlmCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNjbWFwLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfdDFvYmpzCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJWkUgRlVOQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogIG5vdGUgdGhhdCB3ZSBzdG9yZSB0aGUgZ2xvYmFsIGhpbnRzIGluIHRoZSBzaXplJ3MgImludGVybmFsIiByb290ICAgICovCisgIC8qICBmaWVsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICBzdGF0aWMgUFNIX0dsb2JhbHNfRnVuY3MKKyAgVDFfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcyggVDFfU2l6ZSAgc2l6ZSApCisgIHsKKyAgICBUMV9GYWNlICAgICAgICAgICBmYWNlICAgICA9IChUMV9GYWNlKXNpemUtPnJvb3QuZmFjZTsKKyAgICBQU0hpbnRlcl9TZXJ2aWNlICBwc2hpbnRlciA9IChQU0hpbnRlcl9TZXJ2aWNlKWZhY2UtPnBzaGludGVyOworICAgIEZUX01vZHVsZSAgICAgICAgIG1vZHVsZTsKKworCisgICAgbW9kdWxlID0gRlRfR2V0X01vZHVsZSggc2l6ZS0+cm9vdC5mYWNlLT5kcml2ZXItPnJvb3QubGlicmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNoaW50ZXIiICk7CisgICAgcmV0dXJuICggbW9kdWxlICYmIHBzaGludGVyICYmIHBzaGludGVyLT5nZXRfZ2xvYmFsc19mdW5jcyApCisgICAgICAgICAgID8gcHNoaW50ZXItPmdldF9nbG9iYWxzX2Z1bmNzKCBtb2R1bGUgKQorICAgICAgICAgICA6IDAgOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBUMV9TaXplX0RvbmUoIEZUX1NpemUgIHQxc2l6ZSApICAgICAgICAgIC8qIFQxX1NpemUgKi8KKyAgeworICAgIFQxX1NpemUgIHNpemUgPSAoVDFfU2l6ZSl0MXNpemU7CisKKworICAgIGlmICggc2l6ZS0+cm9vdC5pbnRlcm5hbCApCisgICAgeworICAgICAgUFNIX0dsb2JhbHNfRnVuY3MgIGZ1bmNzOworCisKKyAgICAgIGZ1bmNzID0gVDFfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcyggc2l6ZSApOworICAgICAgaWYgKCBmdW5jcyApCisgICAgICAgIGZ1bmNzLT5kZXN0cm95KCAoUFNIX0dsb2JhbHMpc2l6ZS0+cm9vdC5pbnRlcm5hbCApOworCisgICAgICBzaXplLT5yb290LmludGVybmFsID0gMDsKKyAgICB9CisgIH0KKworCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBUMV9TaXplX0luaXQoIEZUX1NpemUgIHQxc2l6ZSApICAgICAgLyogVDFfU2l6ZSAqLworICB7CisgICAgVDFfU2l6ZSAgICAgICAgICAgIHNpemUgID0gKFQxX1NpemUpdDFzaXplOworICAgIEZUX0Vycm9yICAgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKyAgICBQU0hfR2xvYmFsc19GdW5jcyAgZnVuY3MgPSBUMV9TaXplX0dldF9HbG9iYWxzX0Z1bmNzKCBzaXplICk7CisKKworICAgIGlmICggZnVuY3MgKQorICAgIHsKKyAgICAgIFBTSF9HbG9iYWxzICBnbG9iYWxzOworICAgICAgVDFfRmFjZSAgICAgIGZhY2UgPSAoVDFfRmFjZSlzaXplLT5yb290LmZhY2U7CisKKworICAgICAgZXJyb3IgPSBmdW5jcy0+Y3JlYXRlKCBzaXplLT5yb290LmZhY2UtPm1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZhY2UtPnR5cGUxLnByaXZhdGVfZGljdCwgJmdsb2JhbHMgKTsKKyAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgc2l6ZS0+cm9vdC5pbnRlcm5hbCA9IChGVF9TaXplX0ludGVybmFsKSh2b2lkKilnbG9iYWxzOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFQxX1NpemVfUmVxdWVzdCggRlRfU2l6ZSAgICAgICAgICB0MXNpemUsICAgICAvKiBUMV9TaXplICovCisgICAgICAgICAgICAgICAgICAgRlRfU2l6ZV9SZXF1ZXN0ICByZXEgKQorICB7CisgICAgVDFfU2l6ZSAgICAgICAgICAgIHNpemUgID0gKFQxX1NpemUpdDFzaXplOworICAgIFBTSF9HbG9iYWxzX0Z1bmNzICBmdW5jcyA9IFQxX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MoIHNpemUgKTsKKworCisgICAgRlRfUmVxdWVzdF9NZXRyaWNzKCBzaXplLT5yb290LmZhY2UsIHJlcSApOworCisgICAgaWYgKCBmdW5jcyApCisgICAgICBmdW5jcy0+c2V0X3NjYWxlKCAoUFNIX0dsb2JhbHMpc2l6ZS0+cm9vdC5pbnRlcm5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtPnJvb3QubWV0cmljcy54X3NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0+cm9vdC5tZXRyaWNzLnlfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAwLCAwICk7CisKKyAgICByZXR1cm4gRlRfRXJyX09rOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QgIEZVTkNUSU9OUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgVDFfR2x5cGhTbG90X0RvbmUoIEZUX0dseXBoU2xvdCAgc2xvdCApCisgIHsKKyAgICBzbG90LT5pbnRlcm5hbC0+Z2x5cGhfaGludHMgPSAwOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVDFfR2x5cGhTbG90X0luaXQoIEZUX0dseXBoU2xvdCAgc2xvdCApCisgIHsKKyAgICBUMV9GYWNlICAgICAgICAgICBmYWNlOworICAgIFBTSGludGVyX1NlcnZpY2UgIHBzaGludGVyOworCisKKyAgICBmYWNlICAgICA9IChUMV9GYWNlKXNsb3QtPmZhY2U7CisgICAgcHNoaW50ZXIgPSAoUFNIaW50ZXJfU2VydmljZSlmYWNlLT5wc2hpbnRlcjsKKworICAgIGlmICggcHNoaW50ZXIgKQorICAgIHsKKyAgICAgIEZUX01vZHVsZSAgbW9kdWxlOworCisKKyAgICAgIG1vZHVsZSA9IEZUX0dldF9Nb2R1bGUoIHNsb3QtPmZhY2UtPmRyaXZlci0+cm9vdC5saWJyYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBzaGludGVyIiApOworICAgICAgaWYgKCBtb2R1bGUgKQorICAgICAgeworICAgICAgICBUMV9IaW50c19GdW5jcyAgZnVuY3M7CisKKworICAgICAgICBmdW5jcyA9IHBzaGludGVyLT5nZXRfdDFfZnVuY3MoIG1vZHVsZSApOworICAgICAgICBzbG90LT5pbnRlcm5hbC0+Z2x5cGhfaGludHMgPSAodm9pZCopZnVuY3M7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFDRSAgRlVOQ1RJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFQxX0ZhY2VfRG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBmYWNlIG9iamVjdCBkZXN0cnVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgOjogQSB0eXBlbGVzcyBwb2ludGVyIHRvIHRoZSBmYWNlIG9iamVjdCB0byBkZXN0cm95LiAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgVDFfRmFjZV9Eb25lKCBGVF9GYWNlICB0MWZhY2UgKSAgICAgICAgIC8qIFQxX0ZhY2UgKi8KKyAgeworICAgIFQxX0ZhY2UgICAgZmFjZSA9IChUMV9GYWNlKXQxZmFjZTsKKyAgICBGVF9NZW1vcnkgIG1lbW9yeTsKKyAgICBUMV9Gb250ICAgIHR5cGUxOworCisKKyAgICBpZiAoICFmYWNlICkKKyAgICAgIHJldHVybjsKKworICAgIG1lbW9yeSA9IGZhY2UtPnJvb3QubWVtb3J5OworICAgIHR5cGUxICA9ICZmYWNlLT50eXBlMTsKKworI2lmbmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlQKKyAgICAvKiByZWxlYXNlIG11bHRpcGxlIG1hc3RlcnMgaW5mb3JtYXRpb24gKi8KKyAgICBGVF9BU1NFUlQoICggZmFjZS0+bGVuX2J1aWxkY2hhciA9PSAwICkgPT0gKCBmYWNlLT5idWlsZGNoYXIgPT0gTlVMTCApICk7CisKKyAgICBpZiAoIGZhY2UtPmJ1aWxkY2hhciApCisgICAgeworICAgICAgRlRfRlJFRSggZmFjZS0+YnVpbGRjaGFyICk7CisKKyAgICAgIGZhY2UtPmJ1aWxkY2hhciAgICAgPSBOVUxMOworICAgICAgZmFjZS0+bGVuX2J1aWxkY2hhciA9IDA7CisgICAgfQorCisgICAgVDFfRG9uZV9CbGVuZCggZmFjZSApOworICAgIGZhY2UtPmJsZW5kID0gMDsKKyNlbmRpZgorCisgICAgLyogcmVsZWFzZSBmb250IGluZm8gc3RyaW5ncyAqLworICAgIHsKKyAgICAgIFBTX0ZvbnRJbmZvICBpbmZvID0gJnR5cGUxLT5mb250X2luZm87CisKKworICAgICAgRlRfRlJFRSggaW5mby0+dmVyc2lvbiApOworICAgICAgRlRfRlJFRSggaW5mby0+bm90aWNlICk7CisgICAgICBGVF9GUkVFKCBpbmZvLT5mdWxsX25hbWUgKTsKKyAgICAgIEZUX0ZSRUUoIGluZm8tPmZhbWlseV9uYW1lICk7CisgICAgICBGVF9GUkVFKCBpbmZvLT53ZWlnaHQgKTsKKyAgICB9CisKKyAgICAvKiByZWxlYXNlIHRvcCBkaWN0aW9uYXJ5ICovCisgICAgRlRfRlJFRSggdHlwZTEtPmNoYXJzdHJpbmdzX2xlbiApOworICAgIEZUX0ZSRUUoIHR5cGUxLT5jaGFyc3RyaW5ncyApOworICAgIEZUX0ZSRUUoIHR5cGUxLT5nbHlwaF9uYW1lcyApOworCisgICAgRlRfRlJFRSggdHlwZTEtPnN1YnJzICk7CisgICAgRlRfRlJFRSggdHlwZTEtPnN1YnJzX2xlbiApOworCisgICAgRlRfRlJFRSggdHlwZTEtPnN1YnJzX2Jsb2NrICk7CisgICAgRlRfRlJFRSggdHlwZTEtPmNoYXJzdHJpbmdzX2Jsb2NrICk7CisgICAgRlRfRlJFRSggdHlwZTEtPmdseXBoX25hbWVzX2Jsb2NrICk7CisKKyAgICBGVF9GUkVFKCB0eXBlMS0+ZW5jb2RpbmcuY2hhcl9pbmRleCApOworICAgIEZUX0ZSRUUoIHR5cGUxLT5lbmNvZGluZy5jaGFyX25hbWUgKTsKKyAgICBGVF9GUkVFKCB0eXBlMS0+Zm9udF9uYW1lICk7CisKKyNpZm5kZWYgVDFfQ09ORklHX09QVElPTl9OT19BRk0KKyAgICAvKiByZWxlYXNlIGFmbSBkYXRhIGlmIHByZXNlbnQgKi8KKyAgICBpZiAoIGZhY2UtPmFmbV9kYXRhICkKKyAgICAgIFQxX0RvbmVfTWV0cmljcyggbWVtb3J5LCAoQUZNX0ZvbnRJbmZvKWZhY2UtPmFmbV9kYXRhICk7CisjZW5kaWYKKworICAgIC8qIHJlbGVhc2UgdW5pY29kZSBtYXAsIGlmIGFueSAqLworI2lmIDAKKyAgICBGVF9GUkVFKCBmYWNlLT51bmljb2RlX21hcF9yZWMubWFwcyApOworICAgIGZhY2UtPnVuaWNvZGVfbWFwX3JlYy5udW1fbWFwcyA9IDA7CisgICAgZmFjZS0+dW5pY29kZV9tYXAgICAgICAgICAgICAgID0gTlVMTDsKKyNlbmRpZgorCisgICAgZmFjZS0+cm9vdC5mYW1pbHlfbmFtZSA9IE5VTEw7CisgICAgZmFjZS0+cm9vdC5zdHlsZV9uYW1lICA9IE5VTEw7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFQxX0ZhY2VfSW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFRoZSBmYWNlIG9iamVjdCBjb25zdHJ1Y3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHN0cmVhbSAgICAgOjogIGlucHV0IHN0cmVhbSB3aGVyZSB0byBsb2FkIGZvbnQgZGF0YS4gICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgZmFjZV9pbmRleCA6OiBUaGUgaW5kZXggb2YgdGhlIGZvbnQgZmFjZSBpbiB0aGUgcmVzb3VyY2UuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBudW1fcGFyYW1zIDo6IE51bWJlciBvZiBhZGRpdGlvbmFsIGdlbmVyaWMgcGFyYW1ldGVycy4gIElnbm9yZWQuICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHBhcmFtcyAgICAgOjogQWRkaXRpb25hbCBnZW5lcmljIHBhcmFtZXRlcnMuICBJZ25vcmVkLiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEluT3V0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGZhY2UgICAgICAgOjogVGhlIGZhY2UgcmVjb3JkIHRvIGJ1aWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFJldHVybj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZyZWVUeXBlIGVycm9yIGNvZGUuICAwIG1lYW5zIHN1Y2Nlc3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFQxX0ZhY2VfSW5pdCggRlRfU3RyZWFtICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgIEZUX0ZhY2UgICAgICAgIHQxZmFjZSwgICAgICAgICAgLyogVDFfRmFjZSAqLworICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIGZhY2VfaW5kZXgsCisgICAgICAgICAgICAgICAgRlRfSW50ICAgICAgICAgbnVtX3BhcmFtcywKKyAgICAgICAgICAgICAgICBGVF9QYXJhbWV0ZXIqICBwYXJhbXMgKQorICB7CisgICAgVDFfRmFjZSAgICAgICAgICAgICBmYWNlID0gKFQxX0ZhY2UpdDFmYWNlOworICAgIEZUX0Vycm9yICAgICAgICAgICAgZXJyb3I7CisgICAgRlRfU2VydmljZV9Qc0NNYXBzICBwc25hbWVzOworICAgIFBTQXV4X1NlcnZpY2UgICAgICAgcHNhdXg7CisgICAgVDFfRm9udCAgICAgICAgICAgICB0eXBlMSA9ICZmYWNlLT50eXBlMTsKKyAgICBQU19Gb250SW5mbyAgICAgICAgIGluZm8gPSAmdHlwZTEtPmZvbnRfaW5mbzsKKworICAgIEZUX1VOVVNFRCggbnVtX3BhcmFtcyApOworICAgIEZUX1VOVVNFRCggcGFyYW1zICk7CisgICAgRlRfVU5VU0VEKCBzdHJlYW0gKTsKKworCisgICAgZmFjZS0+cm9vdC5udW1fZmFjZXMgPSAxOworCisgICAgRlRfRkFDRV9GSU5EX0dMT0JBTF9TRVJWSUNFKCBmYWNlLCBwc25hbWVzLCBQT1NUU0NSSVBUX0NNQVBTICk7CisgICAgZmFjZS0+cHNuYW1lcyA9IHBzbmFtZXM7CisKKyAgICBmYWNlLT5wc2F1eCA9IEZUX0dldF9Nb2R1bGVfSW50ZXJmYWNlKCBGVF9GQUNFX0xJQlJBUlkoIGZhY2UgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNhdXgiICk7CisgICAgcHNhdXggPSAoUFNBdXhfU2VydmljZSlmYWNlLT5wc2F1eDsKKyAgICBpZiAoICFwc2F1eCApCisgICAgeworICAgICAgRlRfRVJST1IoKCAiVDFfRmFjZV9Jbml0OiBjYW5ub3QgYWNjZXNzIGBwc2F1eCcgbW9kdWxlXG4iICkpOworICAgICAgZXJyb3IgPSBGVF9USFJPVyggTWlzc2luZ19Nb2R1bGUgKTsKKyAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICBmYWNlLT5wc2hpbnRlciA9IEZUX0dldF9Nb2R1bGVfSW50ZXJmYWNlKCBGVF9GQUNFX0xJQlJBUlkoIGZhY2UgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNoaW50ZXIiICk7CisKKyAgICBGVF9UUkFDRTIoKCAiVHlwZSAxIGRyaXZlclxuIiApKTsKKworICAgIC8qIG9wZW4gdGhlIHRva2VuaXplcjsgdGhpcyB3aWxsIGFsc28gY2hlY2sgdGhlIGZvbnQgZm9ybWF0ICovCisgICAgZXJyb3IgPSBUMV9PcGVuX0ZhY2UoIGZhY2UgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIGlmIHdlIGp1c3Qgd2FudGVkIHRvIGNoZWNrIHRoZSBmb3JtYXQsIGxlYXZlIHN1Y2Nlc3NmdWxseSBub3cgKi8KKyAgICBpZiAoIGZhY2VfaW5kZXggPCAwICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIGNoZWNrIHRoZSBmYWNlIGluZGV4ICovCisgICAgaWYgKCBmYWNlX2luZGV4ID4gMCApCisgICAgeworICAgICAgRlRfRVJST1IoKCAiVDFfRmFjZV9Jbml0OiBpbnZhbGlkIGZhY2UgaW5kZXhcbiIgKSk7CisgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0FyZ3VtZW50ICk7CisgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLyogbm93IGxvYWQgdGhlIGZvbnQgcHJvZ3JhbSBpbnRvIHRoZSBmYWNlIG9iamVjdCAqLworCisgICAgLyogaW5pdGlhbGl6ZSB0aGUgZmFjZSBvYmplY3QgZmllbGRzICovCisKKyAgICAvKiBzZXQgdXAgcm9vdCBmYWNlIGZpZWxkcyAqLworICAgIHsKKyAgICAgIEZUX0ZhY2UgIHJvb3QgPSAoRlRfRmFjZSkmZmFjZS0+cm9vdDsKKworCisgICAgICByb290LT5udW1fZ2x5cGhzID0gdHlwZTEtPm51bV9nbHlwaHM7CisgICAgICByb290LT5mYWNlX2luZGV4ID0gMDsKKworICAgICAgcm9vdC0+ZmFjZV9mbGFncyA9IEZUX0ZBQ0VfRkxBR19TQ0FMQUJMRSAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgRlRfRkFDRV9GTEFHX0hPUklaT05UQUwgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVMgfAorICAgICAgICAgICAgICAgICAgICAgICAgIEZUX0ZBQ0VfRkxBR19ISU5URVI7CisKKyAgICAgIGlmICggaW5mby0+aXNfZml4ZWRfcGl0Y2ggKQorICAgICAgICByb290LT5mYWNlX2ZsYWdzIHw9IEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURUSDsKKworICAgICAgaWYgKCBmYWNlLT5ibGVuZCApCisgICAgICAgIHJvb3QtPmZhY2VfZmxhZ3MgfD0gRlRfRkFDRV9GTEFHX01VTFRJUExFX01BU1RFUlM7CisKKyAgICAgIC8qIFhYWDogVE9ETyAtLSBhZGQga2VybmluZyB3aXRoIC5hZm0gc3VwcG9ydCAqLworCisKKyAgICAgIC8qIFRoZSBmb2xsb3dpbmcgY29kZSB0byBleHRyYWN0IHRoZSBmYW1pbHkgYW5kIHRoZSBzdHlsZSBpcyB2ZXJ5ICAgKi8KKyAgICAgIC8qIHNpbXBsaXN0aWMgYW5kIG1pZ2h0IGdldCBzb21lIHRoaW5ncyB3cm9uZy4gIEZvciBhIGZ1bGwtZmVhdHVyZWQgKi8KKyAgICAgIC8qIGFsZ29yaXRobSB5b3UgbWlnaHQgaGF2ZSBhIGxvb2sgYXQgdGhlIHdoaXRlcGFwZXIgZ2l2ZW4gYXQgICAgICAgKi8KKyAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIC8qICAgaHR0cDovL2Jsb2dzLm1zZG4uY29tL3RleHQvYXJjaGl2ZS8yMDA3LzA0LzIzL3dwZi1mb250LXNlbGVjdGlvbi1tb2RlbC5hc3B4ICovCisKKyAgICAgIC8qIGdldCBzdHlsZSBuYW1lIC0tIGJlIGNhcmVmdWwsIHNvbWUgYnJva2VuIGZvbnRzIG9ubHkgKi8KKyAgICAgIC8qIGhhdmUgYSBgL0ZvbnROYW1lJyBkaWN0aW9uYXJ5IGVudHJ5ISAgICAgICAgICAgICAgICAgKi8KKyAgICAgIHJvb3QtPmZhbWlseV9uYW1lID0gaW5mby0+ZmFtaWx5X25hbWU7CisgICAgICByb290LT5zdHlsZV9uYW1lICA9IE5VTEw7CisKKyAgICAgIGlmICggcm9vdC0+ZmFtaWx5X25hbWUgKQorICAgICAgeworICAgICAgICBjaGFyKiAgZnVsbCAgID0gaW5mby0+ZnVsbF9uYW1lOworICAgICAgICBjaGFyKiAgZmFtaWx5ID0gcm9vdC0+ZmFtaWx5X25hbWU7CisKKworICAgICAgICBpZiAoIGZ1bGwgKQorICAgICAgICB7CisgICAgICAgICAgRlRfQm9vbCAgdGhlX3NhbWUgPSBUUlVFOworCisKKyAgICAgICAgICB3aGlsZSAoICpmdWxsICkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoICpmdWxsID09ICpmYW1pbHkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBmYW1pbHkrKzsKKyAgICAgICAgICAgICAgZnVsbCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZiAoICpmdWxsID09ICcgJyB8fCAqZnVsbCA9PSAnLScgKQorICAgICAgICAgICAgICAgIGZ1bGwrKzsKKyAgICAgICAgICAgICAgZWxzZSBpZiAoICpmYW1pbHkgPT0gJyAnIHx8ICpmYW1pbHkgPT0gJy0nICkKKyAgICAgICAgICAgICAgICBmYW1pbHkrKzsKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhlX3NhbWUgPSBGQUxTRTsKKworICAgICAgICAgICAgICAgIGlmICggISpmYW1pbHkgKQorICAgICAgICAgICAgICAgICAgcm9vdC0+c3R5bGVfbmFtZSA9IGZ1bGw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoIHRoZV9zYW1lICkKKyAgICAgICAgICAgIHJvb3QtPnN0eWxlX25hbWUgPSAoY2hhciAqKSJSZWd1bGFyIjsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBkbyB3ZSBoYXZlIGEgYC9Gb250TmFtZSc/ICovCisgICAgICAgIGlmICggdHlwZTEtPmZvbnRfbmFtZSApCisgICAgICAgICAgcm9vdC0+ZmFtaWx5X25hbWUgPSB0eXBlMS0+Zm9udF9uYW1lOworICAgICAgfQorCisgICAgICBpZiAoICFyb290LT5zdHlsZV9uYW1lICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCBpbmZvLT53ZWlnaHQgKQorICAgICAgICAgIHJvb3QtPnN0eWxlX25hbWUgPSBpbmZvLT53ZWlnaHQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAvKiBhc3N1bWUgYFJlZ3VsYXInIHN0eWxlIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBiZXR0ZXIgKi8KKyAgICAgICAgICByb290LT5zdHlsZV9uYW1lID0gKGNoYXIgKikiUmVndWxhciI7CisgICAgICB9CisKKyAgICAgIC8qIGNvbXB1dGUgc3R5bGUgZmxhZ3MgKi8KKyAgICAgIHJvb3QtPnN0eWxlX2ZsYWdzID0gMDsKKyAgICAgIGlmICggaW5mby0+aXRhbGljX2FuZ2xlICkKKyAgICAgICAgcm9vdC0+c3R5bGVfZmxhZ3MgfD0gRlRfU1RZTEVfRkxBR19JVEFMSUM7CisgICAgICBpZiAoIGluZm8tPndlaWdodCApCisgICAgICB7CisgICAgICAgIGlmICggIWZ0X3N0cmNtcCggaW5mby0+d2VpZ2h0LCAiQm9sZCIgICkgfHwKKyAgICAgICAgICAgICAhZnRfc3RyY21wKCBpbmZvLT53ZWlnaHQsICJCbGFjayIgKSApCisgICAgICAgICAgcm9vdC0+c3R5bGVfZmxhZ3MgfD0gRlRfU1RZTEVfRkxBR19CT0xEOworICAgICAgfQorCisgICAgICAvKiBubyBlbWJlZGRlZCBiaXRtYXAgc3VwcG9ydCAqLworICAgICAgcm9vdC0+bnVtX2ZpeGVkX3NpemVzID0gMDsKKyAgICAgIHJvb3QtPmF2YWlsYWJsZV9zaXplcyA9IDA7CisKKyAgICAgIHJvb3QtPmJib3gueE1pbiA9ICAgdHlwZTEtPmZvbnRfYmJveC54TWluICAgICAgICAgICAgPj4gMTY7CisgICAgICByb290LT5iYm94LnlNaW4gPSAgIHR5cGUxLT5mb250X2Jib3gueU1pbiAgICAgICAgICAgID4+IDE2OworICAgICAgLyogbm8gYFUnIHN1ZmZpeCBoZXJlIHRvIDB4RkZGRiEgKi8KKyAgICAgIHJvb3QtPmJib3gueE1heCA9ICggdHlwZTEtPmZvbnRfYmJveC54TWF4ICsgMHhGRkZGICkgPj4gMTY7CisgICAgICByb290LT5iYm94LnlNYXggPSAoIHR5cGUxLT5mb250X2Jib3gueU1heCArIDB4RkZGRiApID4+IDE2OworCisgICAgICAvKiBTZXQgdW5pdHNfcGVyX0VNIGlmIHdlIGRpZG4ndCBzZXQgaXQgaW4gdDFfcGFyc2VfZm9udF9tYXRyaXguICovCisgICAgICBpZiAoICFyb290LT51bml0c19wZXJfRU0gKQorICAgICAgICByb290LT51bml0c19wZXJfRU0gPSAxMDAwOworCisgICAgICByb290LT5hc2NlbmRlciAgPSAoRlRfU2hvcnQpKCByb290LT5iYm94LnlNYXggKTsKKyAgICAgIHJvb3QtPmRlc2NlbmRlciA9IChGVF9TaG9ydCkoIHJvb3QtPmJib3gueU1pbiApOworCisgICAgICByb290LT5oZWlnaHQgPSAoRlRfU2hvcnQpKCAoIHJvb3QtPnVuaXRzX3Blcl9FTSAqIDEyICkgLyAxMCApOworICAgICAgaWYgKCByb290LT5oZWlnaHQgPCByb290LT5hc2NlbmRlciAtIHJvb3QtPmRlc2NlbmRlciApCisgICAgICAgIHJvb3QtPmhlaWdodCA9IChGVF9TaG9ydCkoIHJvb3QtPmFzY2VuZGVyIC0gcm9vdC0+ZGVzY2VuZGVyICk7CisKKyAgICAgIC8qIG5vdyBjb21wdXRlIHRoZSBtYXhpbXVtIGFkdmFuY2Ugd2lkdGggKi8KKyAgICAgIHJvb3QtPm1heF9hZHZhbmNlX3dpZHRoID0KKyAgICAgICAgKEZUX1Nob3J0KSggcm9vdC0+YmJveC54TWF4ICk7CisgICAgICB7CisgICAgICAgIEZUX1BvcyAgbWF4X2FkdmFuY2U7CisKKworICAgICAgICBlcnJvciA9IFQxX0NvbXB1dGVfTWF4X0FkdmFuY2UoIGZhY2UsICZtYXhfYWR2YW5jZSApOworCisgICAgICAgIC8qIGluIGNhc2Ugb2YgZXJyb3IsIGtlZXAgdGhlIHN0YW5kYXJkIHdpZHRoICovCisgICAgICAgIGlmICggIWVycm9yICkKKyAgICAgICAgICByb290LT5tYXhfYWR2YW5jZV93aWR0aCA9IChGVF9TaG9ydClGSVhFRF9UT19JTlQoIG1heF9hZHZhbmNlICk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsgICAvKiBjbGVhciBlcnJvciAqLworICAgICAgfQorCisgICAgICByb290LT5tYXhfYWR2YW5jZV9oZWlnaHQgPSByb290LT5oZWlnaHQ7CisKKyAgICAgIHJvb3QtPnVuZGVybGluZV9wb3NpdGlvbiAgPSAoRlRfU2hvcnQpaW5mby0+dW5kZXJsaW5lX3Bvc2l0aW9uOworICAgICAgcm9vdC0+dW5kZXJsaW5lX3RoaWNrbmVzcyA9IChGVF9TaG9ydClpbmZvLT51bmRlcmxpbmVfdGhpY2tuZXNzOworICAgIH0KKworICAgIHsKKyAgICAgIEZUX0ZhY2UgIHJvb3QgPSAmZmFjZS0+cm9vdDsKKworCisgICAgICBpZiAoIHBzbmFtZXMgKQorICAgICAgeworICAgICAgICBGVF9DaGFyTWFwUmVjICAgIGNoYXJtYXA7CisgICAgICAgIFQxX0NNYXBfQ2xhc3NlcyAgY21hcF9jbGFzc2VzID0gcHNhdXgtPnQxX2NtYXBfY2xhc3NlczsKKyAgICAgICAgRlRfQ01hcF9DbGFzcyAgICBjbGF6ejsKKworCisgICAgICAgIGNoYXJtYXAuZmFjZSA9IHJvb3Q7CisKKyAgICAgICAgLyogZmlyc3Qgb2YgYWxsLCB0cnkgdG8gc3ludGhlc2l6ZSBhIFVuaWNvZGUgY2hhcm1hcCAqLworICAgICAgICBjaGFybWFwLnBsYXRmb3JtX2lkID0gVFRfUExBVEZPUk1fTUlDUk9TT0ZUOworICAgICAgICBjaGFybWFwLmVuY29kaW5nX2lkID0gVFRfTVNfSURfVU5JQ09ERV9DUzsKKyAgICAgICAgY2hhcm1hcC5lbmNvZGluZyAgICA9IEZUX0VOQ09ESU5HX1VOSUNPREU7CisKKyAgICAgICAgZXJyb3IgPSBGVF9DTWFwX05ldyggY21hcF9jbGFzc2VzLT51bmljb2RlLCBOVUxMLCAmY2hhcm1hcCwgTlVMTCApOworICAgICAgICBpZiAoIGVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgIEZUX0VSUl9ORVEoIGVycm9yLCBOb19Vbmljb2RlX0dseXBoX05hbWUgKSApCisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKworICAgICAgICAvKiBub3csIGdlbmVyYXRlIGFuIEFkb2JlIFN0YW5kYXJkIGVuY29kaW5nIHdoZW4gYXBwcm9wcmlhdGUgKi8KKyAgICAgICAgY2hhcm1hcC5wbGF0Zm9ybV9pZCA9IFRUX1BMQVRGT1JNX0FET0JFOworICAgICAgICBjbGF6eiAgICAgICAgICAgICAgID0gTlVMTDsKKworICAgICAgICBzd2l0Y2ggKCB0eXBlMS0+ZW5jb2RpbmdfdHlwZSApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBUMV9FTkNPRElOR19UWVBFX1NUQU5EQVJEOgorICAgICAgICAgIGNoYXJtYXAuZW5jb2RpbmcgICAgPSBGVF9FTkNPRElOR19BRE9CRV9TVEFOREFSRDsKKyAgICAgICAgICBjaGFybWFwLmVuY29kaW5nX2lkID0gVFRfQURPQkVfSURfU1RBTkRBUkQ7CisgICAgICAgICAgY2xhenogICAgICAgICAgICAgICA9IGNtYXBfY2xhc3Nlcy0+c3RhbmRhcmQ7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUMV9FTkNPRElOR19UWVBFX0VYUEVSVDoKKyAgICAgICAgICBjaGFybWFwLmVuY29kaW5nICAgID0gRlRfRU5DT0RJTkdfQURPQkVfRVhQRVJUOworICAgICAgICAgIGNoYXJtYXAuZW5jb2RpbmdfaWQgPSBUVF9BRE9CRV9JRF9FWFBFUlQ7CisgICAgICAgICAgY2xhenogICAgICAgICAgICAgICA9IGNtYXBfY2xhc3Nlcy0+ZXhwZXJ0OworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVDFfRU5DT0RJTkdfVFlQRV9BUlJBWToKKyAgICAgICAgICBjaGFybWFwLmVuY29kaW5nICAgID0gRlRfRU5DT0RJTkdfQURPQkVfQ1VTVE9NOworICAgICAgICAgIGNoYXJtYXAuZW5jb2RpbmdfaWQgPSBUVF9BRE9CRV9JRF9DVVNUT007CisgICAgICAgICAgY2xhenogICAgICAgICAgICAgICA9IGNtYXBfY2xhc3Nlcy0+Y3VzdG9tOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVDFfRU5DT0RJTkdfVFlQRV9JU09MQVRJTjE6CisgICAgICAgICAgY2hhcm1hcC5lbmNvZGluZyAgICA9IEZUX0VOQ09ESU5HX0FET0JFX0xBVElOXzE7CisgICAgICAgICAgY2hhcm1hcC5lbmNvZGluZ19pZCA9IFRUX0FET0JFX0lEX0xBVElOXzE7CisgICAgICAgICAgY2xhenogICAgICAgICAgICAgICA9IGNtYXBfY2xhc3Nlcy0+dW5pY29kZTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggY2xhenogKQorICAgICAgICAgIGVycm9yID0gRlRfQ01hcF9OZXcoIGNsYXp6LCBOVUxMLCAmY2hhcm1hcCwgTlVMTCApOworCisjaWYgMAorICAgICAgICAvKiBTZWxlY3QgZGVmYXVsdCBjaGFybWFwICovCisgICAgICAgIGlmIChyb290LT5udW1fY2hhcm1hcHMpCisgICAgICAgICAgcm9vdC0+Y2hhcm1hcCA9IHJvb3QtPmNoYXJtYXBzWzBdOworI2VuZGlmCisgICAgICB9CisgICAgfQorCisgIEV4aXQ6CisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxGdW5jdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUMV9Ecml2ZXJfSW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBJbml0aWFsaXplcyBhIGdpdmVuIFR5cGUgMSBkcml2ZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxJbnB1dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBkcml2ZXIgOjogQSBoYW5kbGUgdG8gdGhlIHRhcmdldCBkcml2ZXIgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxSZXR1cm4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBGcmVlVHlwZSBlcnJvciBjb2RlLiAgMCBtZWFucyBzdWNjZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZUX0xPQ0FMX0RFRiggRlRfRXJyb3IgKQorICBUMV9Ecml2ZXJfSW5pdCggRlRfTW9kdWxlICBkcml2ZXIgKQorICB7CisgICAgRlRfVU5VU0VEKCBkcml2ZXIgKTsKKworICAgIHJldHVybiBGVF9FcnJfT2s7CisgIH0KKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPEZ1bmN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFQxX0RyaXZlcl9Eb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEZpbmFsaXplcyBhIGdpdmVuIFR5cGUgMSBkcml2ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPElucHV0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGRyaXZlciA6OiBBIGhhbmRsZSB0byB0aGUgdGFyZ2V0IFR5cGUgMSBkcml2ZXIuICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRlRfTE9DQUxfREVGKCB2b2lkICkKKyAgVDFfRHJpdmVyX0RvbmUoIEZUX01vZHVsZSAgZHJpdmVyICkKKyAgeworICAgIEZUX1VOVVNFRCggZHJpdmVyICk7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFvYmpzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3Qxb2Jqcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzOGNmYzIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3Qxb2Jqcy5oCkBAIC0wLDAgKzEsMTYwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MW9ianMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHlwZSAxIG9iamVjdHMgbWFuYWdlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwNiwgMjAxMSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UMU9CSlNfSF9fCisjZGVmaW5lIF9fVDFPQkpTX0hfXworCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2Z0MmJ1aWxkLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIgorCisKK0ZUX0JFR0lOX0hFQURFUgorCisKKyAgLyogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmVzIG11c3QgYmUgZGVmaW5lZCBieSB0aGUgaGludGVyICovCisgIHR5cGVkZWYgc3RydWN0IFQxX1NpemVfSGludHNfICAgVDFfU2l6ZV9IaW50czsKKyAgdHlwZWRlZiBzdHJ1Y3QgVDFfR2x5cGhfSGludHNfICBUMV9HbHlwaF9IaW50czsKKworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIFQxX1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogPERlc2NyaXB0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIEEgaGFuZGxlIHRvIGEgVHlwZSAxIHNpemUgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgdHlwZWRlZiBzdHJ1Y3QgVDFfU2l6ZVJlY18qICBUMV9TaXplOworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVDFfR2x5cGhTbG90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBUeXBlIDEgZ2x5cGggc2xvdCBvYmplY3QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCBUMV9HbHlwaFNsb3RSZWNfKiAgVDFfR2x5cGhTbG90OworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVDFfQ2hhck1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RGVzY3JpcHRpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgQSBoYW5kbGUgdG8gYSBUeXBlIDEgY2hhcmFjdGVyIG1hcHBpbmcgb2JqZWN0LiAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8Tm90ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgVGhlIFR5cGUgMSBmb3JtYXQgZG9lc24ndCB1c2UgYSBjaGFybWFwIGJ1dCBhbiBlbmNvZGluZyB0YWJsZS4gICAgICovCisgIC8qICAgIFRoZSBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yIG1ha2luZyB1cCBjaGFybWFwIG9iamVjdHMgICAgICAgICAgICAqLworICAvKiAgICBjb3JyZXNwb25kaW5nIHRvIHRoZXNlIHRhYmxlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0IFQxX0NoYXJNYXBSZWNfKiAgIFQxX0NoYXJNYXA7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgSEVSRSBCRUdJTlMgVEhFIFRZUEUxIFNQRUNJRklDIFNUVUZGICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUMV9TaXplUmVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUeXBlIDEgc2l6ZSByZWNvcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUMV9TaXplUmVjXworICB7CisgICAgRlRfU2l6ZVJlYyAgcm9vdDsKKworICB9IFQxX1NpemVSZWM7CisKKworICBGVF9MT0NBTCggdm9pZCApCisgIFQxX1NpemVfRG9uZSggRlRfU2l6ZSAgc2l6ZSApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIFQxX1NpemVfUmVxdWVzdCggRlRfU2l6ZSAgICAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgIEZUX1NpemVfUmVxdWVzdCAgcmVxICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgVDFfU2l6ZV9Jbml0KCBGVF9TaXplICBzaXplICk7CisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUMV9HbHlwaFNsb3RSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUeXBlIDEgZ2x5cGggc2xvdCByZWNvcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIHR5cGVkZWYgc3RydWN0ICBUMV9HbHlwaFNsb3RSZWNfCisgIHsKKyAgICBGVF9HbHlwaFNsb3RSZWMgIHJvb3Q7CisKKyAgICBGVF9Cb29sICAgICAgICAgIGhpbnQ7CisgICAgRlRfQm9vbCAgICAgICAgICBzY2FsZWQ7CisKKyAgICBGVF9JbnQgICAgICAgICAgIG1heF9wb2ludHM7CisgICAgRlRfSW50ICAgICAgICAgICBtYXhfY29udG91cnM7CisKKyAgICBGVF9GaXhlZCAgICAgICAgIHhfc2NhbGU7CisgICAgRlRfRml4ZWQgICAgICAgICB5X3NjYWxlOworCisgIH0gVDFfR2x5cGhTbG90UmVjOworCisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgVDFfRmFjZV9Jbml0KCBGVF9TdHJlYW0gICAgICBzdHJlYW0sCisgICAgICAgICAgICAgICAgRlRfRmFjZSAgICAgICAgZmFjZSwKKyAgICAgICAgICAgICAgICBGVF9JbnQgICAgICAgICBmYWNlX2luZGV4LAorICAgICAgICAgICAgICAgIEZUX0ludCAgICAgICAgIG51bV9wYXJhbXMsCisgICAgICAgICAgICAgICAgRlRfUGFyYW1ldGVyKiAgcGFyYW1zICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBUMV9GYWNlX0RvbmUoIEZUX0ZhY2UgIGZhY2UgKTsKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUMV9HbHlwaFNsb3RfSW5pdCggRlRfR2x5cGhTbG90ICBzbG90ICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBUMV9HbHlwaFNsb3RfRG9uZSggRlRfR2x5cGhTbG90ICBzbG90ICk7CisKKyAgRlRfTE9DQUwoIEZUX0Vycm9yICkKKyAgVDFfRHJpdmVyX0luaXQoIEZUX01vZHVsZSAgZHJpdmVyICk7CisKKyAgRlRfTE9DQUwoIHZvaWQgKQorICBUMV9Ecml2ZXJfRG9uZSggRlRfTW9kdWxlICBkcml2ZXIgKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1QxT0JKU19IX18gKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFwYXJzZS5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MXBhcnNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkzZDY5YQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFwYXJzZS5jCkBAIC0wLDAgKzEsNDk3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MXBhcnNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHlwZSAxIHBhcnNlciAoYm9keSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwNSwgMjAwOCwgMjAwOSwgMjAxMiwgMjAxMyBieSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgVHlwZSAxIHBhcnNlciBpcyBpbiBjaGFyZ2Ugb2YgdGhlIGZvbGxvd2luZzogICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAtIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBncm93aW5nIHNlcXVlbmNlIG9mIG9iamVjdHMgY2FsbGVkICAqLworICAvKiAgICBhIGBUMV9UYWJsZScgKHVzZWQgdG8gYnVpbGQgdmFyaW91cyB0YWJsZXMgbmVlZGVkIGJ5IHRoZSBsb2FkZXIpLiAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAtIG9wZW5pbmcgLnBmYiBhbmQgLnBmYSBmaWxlcyB0byBleHRyYWN0IHRoZWlyIHRvcC1sZXZlbCBhbmQgcHJpdmF0ZSAqLworICAvKiAgICBkaWN0aW9uYXJpZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAtIHJlYWQgbnVtYmVycywgYXJyYXlzICYgc3RyaW5ncyBmcm9tIGFueSBkaWN0aW9uYXJ5LiAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogU2VlIGB0MWxvYWQuYycgdG8gc2VlIGhvdyBkYXRhIGlzIGxvYWRlZCBmcm9tIHRoZSBmb250IGZpbGUuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9mdDJidWlsZC5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIgorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgiCisKKyNpbmNsdWRlICJ0MXBhcnNlLmgiCisKKyNpbmNsdWRlICJ0MWVycm9ycy5oIgorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiBUaGUgbWFjcm8gRlRfQ09NUE9ORU5UIGlzIHVzZWQgaW4gdHJhY2UgbW9kZS4gIEl0IGlzIGFuIGltcGxpY2l0ICAgICAgKi8KKyAgLyogcGFyYW1ldGVyIG9mIHRoZSBGVF9UUkFDRSgpIGFuZCBGVF9FUlJPUigpIG1hY3JvcywgdXNlZCB0byBwcmludC9sb2cgICovCisgIC8qIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyN1bmRlZiAgRlRfQ09NUE9ORU5UCisjZGVmaW5lIEZUX0NPTVBPTkVOVCAgdHJhY2VfdDFwYXJzZQorCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiovCisgIC8qKioqKiAgICAgICAgICAgICAgICAgICBJTlBVVCBTVFJFQU0gUEFSU0VSICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqLworICAvKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKi8KKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisgIC8qIHNlZSBBZG9iZSBUZWNobmljYWwgTm90ZSA1MDQwLkRvd25sb2FkX0ZvbnRzLnBkZiAqLworCisgIHN0YXRpYyBGVF9FcnJvcgorICByZWFkX3BmYl90YWcoIEZUX1N0cmVhbSAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICBGVF9VU2hvcnQgICphdGFnLAorICAgICAgICAgICAgICAgIEZUX1VMb25nICAgKmFzaXplICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfVVNob3J0ICB0YWc7CisgICAgRlRfVUxvbmcgICBzaXplOworCisKKyAgICAqYXRhZyAgPSAwOworICAgICphc2l6ZSA9IDA7CisKKyAgICBpZiAoICFGVF9SRUFEX1VTSE9SVCggdGFnICkgKQorICAgIHsKKyAgICAgIGlmICggdGFnID09IDB4ODAwMVUgfHwgdGFnID09IDB4ODAwMlUgKQorICAgICAgeworICAgICAgICBpZiAoICFGVF9SRUFEX1VMT05HX0xFKCBzaXplICkgKQorICAgICAgICAgICphc2l6ZSA9IHNpemU7CisgICAgICB9CisKKyAgICAgICphdGFnID0gdGFnOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgc3RhdGljIEZUX0Vycm9yCisgIGNoZWNrX3R5cGUxX2Zvcm1hdCggRlRfU3RyZWFtICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgaGVhZGVyX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgaGVhZGVyX2xlbmd0aCApCisgIHsKKyAgICBGVF9FcnJvciAgIGVycm9yOworICAgIEZUX1VTaG9ydCAgdGFnOworICAgIEZUX1VMb25nICAgZHVtbXk7CisKKworICAgIGlmICggRlRfU1RSRUFNX1NFRUsoIDAgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBlcnJvciA9IHJlYWRfcGZiX3RhZyggc3RyZWFtLCAmdGFnLCAmZHVtbXkgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICAgIGdvdG8gRXhpdDsKKworICAgIC8qIFdlIGFzc3VtZSB0aGF0IHRoZSBmaXJzdCBzZWdtZW50IGluIGEgUEZCIGlzIGFsd2F5cyBlbmNvZGVkIGFzICAgKi8KKyAgICAvKiB0ZXh0LiAgVGhpcyBtaWdodCBiZSB3cm9uZyAoYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGRvZXNuJ3QgaW5zaXN0ICovCisgICAgLyogb24gdGhhdCksIGJ1dCB3ZSBoYXZlIG5ldmVyIHNlZW4gYSBjb3VudGVyZXhhbXBsZS4gICAgICAgICAgICAgICAqLworICAgIGlmICggdGFnICE9IDB4ODAwMVUgJiYgRlRfU1RSRUFNX1NFRUsoIDAgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBpZiAoICFGVF9GUkFNRV9FTlRFUiggaGVhZGVyX2xlbmd0aCApICkKKyAgICB7CisgICAgICBlcnJvciA9IEZUX0Vycl9PazsKKworICAgICAgaWYgKCBmdF9tZW1jbXAoIHN0cmVhbS0+Y3Vyc29yLCBoZWFkZXJfc3RyaW5nLCBoZWFkZXJfbGVuZ3RoICkgIT0gMCApCisgICAgICAgIGVycm9yID0gRlRfVEhST1coIFVua25vd25fRmlsZV9Gb3JtYXQgKTsKKworICAgICAgRlRfRlJBTUVfRVhJVCgpOworICAgIH0KKworICBFeGl0OgorICAgIHJldHVybiBlcnJvcjsKKyAgfQorCisKKyAgRlRfTE9DQUxfREVGKCBGVF9FcnJvciApCisgIFQxX05ld19QYXJzZXIoIFQxX1BhcnNlciAgICAgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgRlRfU3RyZWFtICAgICAgc3RyZWFtLAorICAgICAgICAgICAgICAgICBGVF9NZW1vcnkgICAgICBtZW1vcnksCisgICAgICAgICAgICAgICAgIFBTQXV4X1NlcnZpY2UgIHBzYXV4ICkKKyAgeworICAgIEZUX0Vycm9yICAgZXJyb3I7CisgICAgRlRfVVNob3J0ICB0YWc7CisgICAgRlRfVUxvbmcgICBzaXplOworCisKKyAgICBwc2F1eC0+cHNfcGFyc2VyX2Z1bmNzLT5pbml0KCAmcGFyc2VyLT5yb290LCAwLCAwLCBtZW1vcnkgKTsKKworICAgIHBhcnNlci0+c3RyZWFtICAgICAgID0gc3RyZWFtOworICAgIHBhcnNlci0+YmFzZV9sZW4gICAgID0gMDsKKyAgICBwYXJzZXItPmJhc2VfZGljdCAgICA9IDA7CisgICAgcGFyc2VyLT5wcml2YXRlX2xlbiAgPSAwOworICAgIHBhcnNlci0+cHJpdmF0ZV9kaWN0ID0gMDsKKyAgICBwYXJzZXItPmluX3BmYiAgICAgICA9IDA7CisgICAgcGFyc2VyLT5pbl9tZW1vcnkgICAgPSAwOworICAgIHBhcnNlci0+c2luZ2xlX2Jsb2NrID0gMDsKKworICAgIC8qIGNoZWNrIHRoZSBoZWFkZXIgZm9ybWF0ICovCisgICAgZXJyb3IgPSBjaGVja190eXBlMV9mb3JtYXQoIHN0cmVhbSwgIiUhUFMtQWRvYmVGb250IiwgMTQgKTsKKyAgICBpZiAoIGVycm9yICkKKyAgICB7CisgICAgICBpZiAoIEZUX0VSUl9ORVEoIGVycm9yLCBVbmtub3duX0ZpbGVfRm9ybWF0ICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisKKyAgICAgIGVycm9yID0gY2hlY2tfdHlwZTFfZm9ybWF0KCBzdHJlYW0sICIlIUZvbnRUeXBlIiwgMTAgKTsKKyAgICAgIGlmICggZXJyb3IgKQorICAgICAgeworICAgICAgICBGVF9UUkFDRTIoKCAiICBub3QgYSBUeXBlIDEgZm9udFxuIiApKTsKKyAgICAgICAgZ290byBFeGl0OworICAgICAgfQorICAgIH0KKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBIZXJlIGEgc2hvcnQgc3VtbWFyeSBvZiB3aGF0IGlzIGdvaW5nIG9uOiAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogICBXaGVuIGNyZWF0aW5nIGEgbmV3IFR5cGUgMSBwYXJzZXIsIHdlIHRyeSB0byBsb2NhdGUgYW5kIGxvYWQgKi8KKyAgICAvKiAgIHRoZSBiYXNlIGRpY3Rpb25hcnkgaWYgdGhpcyBpcyBwb3NzaWJsZSAoaS5lLiwgZm9yIFBGQiAgICAgICAqLworICAgIC8qICAgZmlsZXMpLiAgT3RoZXJ3aXNlLCB3ZSBsb2FkIHRoZSB3aG9sZSBmb250IGludG8gbWVtb3J5LiAgICAgICovCisgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgIFdoZW4gYGxvYWRpbmcnIHRoZSBiYXNlIGRpY3Rpb25hcnksIHdlIG9ubHkgc2V0dXAgcG9pbnRlcnMgICAqLworICAgIC8qICAgaW4gdGhlIGNhc2Ugb2YgYSBtZW1vcnktYmFzZWQgc3RyZWFtLiAgT3RoZXJ3aXNlLCB3ZSAgICAgICAgICovCisgICAgLyogICBhbGxvY2F0ZSBhbmQgbG9hZCB0aGUgYmFzZSBkaWN0aW9uYXJ5IGluIGl0LiAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIC8qICAgcGFyc2VyLT5pbl9wZmIgaXMgc2V0IGlmIHdlIGFyZSBpbiBhIGJpbmFyeSAoYC5wZmInKSBmb250LiAgICovCisgICAgLyogICBwYXJzZXItPmluX21lbW9yeSBpcyBzZXQgaWYgd2UgaGF2ZSBhIG1lbW9yeSBzdHJlYW0uICAgICAgICAgKi8KKyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgLyogdHJ5IHRvIGNvbXB1dGUgdGhlIHNpemUgb2YgdGhlIGJhc2UgZGljdGlvbmFyeTsgICAgICovCisgICAgLyogbG9vayBmb3IgYSBQb3N0c2NyaXB0IGJpbmFyeSBmaWxlIHRhZywgaS5lLiwgMHg4MDAxICovCisgICAgaWYgKCBGVF9TVFJFQU1fU0VFSyggMEwgKSApCisgICAgICBnb3RvIEV4aXQ7CisKKyAgICBlcnJvciA9IHJlYWRfcGZiX3RhZyggc3RyZWFtLCAmdGFnLCAmc2l6ZSApOworICAgIGlmICggZXJyb3IgKQorICAgICAgZ290byBFeGl0OworCisgICAgaWYgKCB0YWcgIT0gMHg4MDAxVSApCisgICAgeworICAgICAgLyogYXNzdW1lIHRoYXQgdGhpcyBpcyBhIFBGQSBmaWxlIGZvciBub3c7IGFuIGVycm9yIHdpbGwgKi8KKyAgICAgIC8qIGJlIHByb2R1Y2VkIGxhdGVyIHdoZW4gbW9yZSB0aGluZ3MgYXJlIGNoZWNrZWQgICAgICAgICovCisgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCAwTCApICkKKyAgICAgICAgZ290byBFeGl0OworICAgICAgc2l6ZSA9IHN0cmVhbS0+c2l6ZTsKKyAgICB9CisgICAgZWxzZQorICAgICAgcGFyc2VyLT5pbl9wZmIgPSAxOworCisgICAgLyogbm93LCB0cnkgdG8gbG9hZCBgc2l6ZScgYnl0ZXMgb2YgdGhlIGBiYXNlJyBkaWN0aW9uYXJ5IHdlICovCisgICAgLyogZm91bmQgcHJldmlvdXNseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAvKiBpZiBpdCBpcyBhIG1lbW9yeS1iYXNlZCByZXNvdXJjZSwgc2V0IHVwIHBvaW50ZXJzICovCisgICAgaWYgKCAhc3RyZWFtLT5yZWFkICkKKyAgICB7CisgICAgICBwYXJzZXItPmJhc2VfZGljdCA9IChGVF9CeXRlKilzdHJlYW0tPmJhc2UgKyBzdHJlYW0tPnBvczsKKyAgICAgIHBhcnNlci0+YmFzZV9sZW4gID0gc2l6ZTsKKyAgICAgIHBhcnNlci0+aW5fbWVtb3J5ID0gMTsKKworICAgICAgLyogY2hlY2sgdGhhdCB0aGUgYHNpemUnIGZpZWxkIGlzIHZhbGlkICovCisgICAgICBpZiAoIEZUX1NUUkVBTV9TS0lQKCBzaXplICkgKQorICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiByZWFkIHNlZ21lbnQgaW4gbWVtb3J5IC0tIHRoaXMgaXMgY2x1bXN5LCBidXQgc28gZG9lcyB0aGUgZm9ybWF0ICovCisgICAgICBpZiAoIEZUX0FMTE9DKCBwYXJzZXItPmJhc2VfZGljdCwgc2l6ZSApICAgICAgIHx8CisgICAgICAgICAgIEZUX1NUUkVBTV9SRUFEKCBwYXJzZXItPmJhc2VfZGljdCwgc2l6ZSApICkKKyAgICAgICAgZ290byBFeGl0OworICAgICAgcGFyc2VyLT5iYXNlX2xlbiA9IHNpemU7CisgICAgfQorCisgICAgcGFyc2VyLT5yb290LmJhc2UgICA9IHBhcnNlci0+YmFzZV9kaWN0OworICAgIHBhcnNlci0+cm9vdC5jdXJzb3IgPSBwYXJzZXItPmJhc2VfZGljdDsKKyAgICBwYXJzZXItPnJvb3QubGltaXQgID0gcGFyc2VyLT5yb290LmN1cnNvciArIHBhcnNlci0+YmFzZV9sZW47CisKKyAgRXhpdDoKKyAgICBpZiAoIGVycm9yICYmICFwYXJzZXItPmluX21lbW9yeSApCisgICAgICBGVF9GUkVFKCBwYXJzZXItPmJhc2VfZGljdCApOworCisgICAgcmV0dXJuIGVycm9yOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIHZvaWQgKQorICBUMV9GaW5hbGl6ZV9QYXJzZXIoIFQxX1BhcnNlciAgcGFyc2VyICkKKyAgeworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gcGFyc2VyLT5yb290Lm1lbW9yeTsKKworCisgICAgLyogYWx3YXlzIGZyZWUgdGhlIHByaXZhdGUgZGljdGlvbmFyeSAqLworICAgIEZUX0ZSRUUoIHBhcnNlci0+cHJpdmF0ZV9kaWN0ICk7CisKKyAgICAvKiBmcmVlIHRoZSBiYXNlIGRpY3Rpb25hcnkgb25seSB3aGVuIHdlIGhhdmUgYSBkaXNrIHN0cmVhbSAqLworICAgIGlmICggIXBhcnNlci0+aW5fbWVtb3J5ICkKKyAgICAgIEZUX0ZSRUUoIHBhcnNlci0+YmFzZV9kaWN0ICk7CisKKyAgICBwYXJzZXItPnJvb3QuZnVuY3MuZG9uZSggJnBhcnNlci0+cm9vdCApOworICB9CisKKworICBGVF9MT0NBTF9ERUYoIEZUX0Vycm9yICkKKyAgVDFfR2V0X1ByaXZhdGVfRGljdCggVDFfUGFyc2VyICAgICAgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICBQU0F1eF9TZXJ2aWNlICBwc2F1eCApCisgIHsKKyAgICBGVF9TdHJlYW0gIHN0cmVhbSA9IHBhcnNlci0+c3RyZWFtOworICAgIEZUX01lbW9yeSAgbWVtb3J5ID0gcGFyc2VyLT5yb290Lm1lbW9yeTsKKyAgICBGVF9FcnJvciAgIGVycm9yICA9IEZUX0Vycl9PazsKKyAgICBGVF9VTG9uZyAgIHNpemU7CisKKworICAgIGlmICggcGFyc2VyLT5pbl9wZmIgKQorICAgIHsKKyAgICAgIC8qIGluIHRoZSBjYXNlIG9mIHRoZSBQRkIgZm9ybWF0LCB0aGUgcHJpdmF0ZSBkaWN0aW9uYXJ5IGNhbiBiZSAgKi8KKyAgICAgIC8qIG1hZGUgb2Ygc2V2ZXJhbCBzZWdtZW50cy4gIFdlIHRodXMgZmlyc3QgcmVhZCB0aGUgbnVtYmVyIG9mICAgKi8KKyAgICAgIC8qIHNlZ21lbnRzIHRvIGNvbXB1dGUgdGhlIHRvdGFsIHNpemUgb2YgdGhlIHByaXZhdGUgZGljdGlvbmFyeSAgKi8KKyAgICAgIC8qIHRoZW4gcmUtcmVhZCB0aGVtIGludG8gbWVtb3J5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgIEZUX0xvbmcgICAgc3RhcnRfcG9zID0gRlRfU1RSRUFNX1BPUygpOworICAgICAgRlRfVVNob3J0ICB0YWc7CisKKworICAgICAgcGFyc2VyLT5wcml2YXRlX2xlbiA9IDA7CisgICAgICBmb3IgKDs7KQorICAgICAgeworICAgICAgICBlcnJvciA9IHJlYWRfcGZiX3RhZyggc3RyZWFtLCAmdGFnLCAmc2l6ZSApOworICAgICAgICBpZiAoIGVycm9yICkKKyAgICAgICAgICBnb3RvIEZhaWw7CisKKyAgICAgICAgaWYgKCB0YWcgIT0gMHg4MDAyVSApCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcGFyc2VyLT5wcml2YXRlX2xlbiArPSBzaXplOworCisgICAgICAgIGlmICggRlRfU1RSRUFNX1NLSVAoIHNpemUgKSApCisgICAgICAgICAgZ290byBGYWlsOworICAgICAgfQorCisgICAgICAvKiBDaGVjayB0aGF0IHdlIGhhdmUgYSBwcml2YXRlIGRpY3Rpb25hcnkgdGhlcmUgKi8KKyAgICAgIC8qIGFuZCBhbGxvY2F0ZSBwcml2YXRlIGRpY3Rpb25hcnkgYnVmZmVyICAgICAgICAqLworICAgICAgaWYgKCBwYXJzZXItPnByaXZhdGVfbGVuID09IDAgKQorICAgICAgeworICAgICAgICBGVF9FUlJPUigoICJUMV9HZXRfUHJpdmF0ZV9EaWN0OiIKKyAgICAgICAgICAgICAgICAgICAiIGludmFsaWQgcHJpdmF0ZSBkaWN0aW9uYXJ5IHNlY3Rpb25cbiIgKSk7CisgICAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgICAgZ290byBGYWlsOworICAgICAgfQorCisgICAgICBpZiAoIEZUX1NUUkVBTV9TRUVLKCBzdGFydF9wb3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgIEZUX0FMTE9DKCBwYXJzZXItPnByaXZhdGVfZGljdCwgcGFyc2VyLT5wcml2YXRlX2xlbiApICkKKyAgICAgICAgZ290byBGYWlsOworCisgICAgICBwYXJzZXItPnByaXZhdGVfbGVuID0gMDsKKyAgICAgIGZvciAoOzspCisgICAgICB7CisgICAgICAgIGVycm9yID0gcmVhZF9wZmJfdGFnKCBzdHJlYW0sICZ0YWcsICZzaXplICk7CisgICAgICAgIGlmICggZXJyb3IgfHwgdGFnICE9IDB4ODAwMlUgKQorICAgICAgICB7CisgICAgICAgICAgZXJyb3IgPSBGVF9FcnJfT2s7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIEZUX1NUUkVBTV9SRUFEKCBwYXJzZXItPnByaXZhdGVfZGljdCArIHBhcnNlci0+cHJpdmF0ZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgKSApCisgICAgICAgICAgZ290byBGYWlsOworCisgICAgICAgIHBhcnNlci0+cHJpdmF0ZV9sZW4gKz0gc2l6ZTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIFdlIGhhdmUgYWxyZWFkeSBgbG9hZGVkJyB0aGUgd2hvbGUgUEZBIGZvbnQgZmlsZSBpbnRvIG1lbW9yeTsgKi8KKyAgICAgIC8qIGlmIHRoaXMgaXMgYSBtZW1vcnkgcmVzb3VyY2UsIGFsbG9jYXRlIGEgbmV3IGJsb2NrIHRvIGhvbGQgICAgKi8KKyAgICAgIC8qIHRoZSBwcml2YXRlIGRpY3QuICBPdGhlcndpc2UsIHNpbXBseSBvdmVyd3JpdGUgaW50byB0aGUgYmFzZSAgKi8KKyAgICAgIC8qIGRpY3Rpb25hcnkgYmxvY2sgaW4gdGhlIGhlYXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgLyogZmlyc3Qgb2YgYWxsLCBsb29rIGF0IHRoZSBgZWV4ZWMnIGtleXdvcmQgKi8KKyAgICAgIEZUX0J5dGUqICBjdXIgICA9IHBhcnNlci0+YmFzZV9kaWN0OworICAgICAgRlRfQnl0ZSogIGxpbWl0ID0gY3VyICsgcGFyc2VyLT5iYXNlX2xlbjsKKyAgICAgIEZUX0J5dGUgICBjOworCisKKyAgICBBZ2FpbjoKKyAgICAgIGZvciAoOzspCisgICAgICB7CisgICAgICAgIGMgPSBjdXJbMF07CisgICAgICAgIGlmICggYyA9PSAnZScgJiYgY3VyICsgOSA8IGxpbWl0ICkgIC8qIDkgPSA1IGxldHRlcnMgZm9yIGBlZXhlYycgKyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB3aGl0ZXNwYWNlICsgNCBjaGFycyAgICAgICAgKi8KKyAgICAgICAgeworICAgICAgICAgIGlmICggY3VyWzFdID09ICdlJyAmJgorICAgICAgICAgICAgICAgY3VyWzJdID09ICd4JyAmJgorICAgICAgICAgICAgICAgY3VyWzNdID09ICdlJyAmJgorICAgICAgICAgICAgICAgY3VyWzRdID09ICdjJyApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjdXIrKzsKKyAgICAgICAgaWYgKCBjdXIgPj0gbGltaXQgKQorICAgICAgICB7CisgICAgICAgICAgRlRfRVJST1IoKCAiVDFfR2V0X1ByaXZhdGVfRGljdDoiCisgICAgICAgICAgICAgICAgICAgICAiIGNvdWxkIG5vdCBmaW5kIGBlZXhlYycga2V5d29yZFxuIiApKTsKKyAgICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIGNoZWNrIHdoZXRoZXIgYGVleGVjJyB3YXMgcmVhbCAtLSBpdCBjb3VsZCBiZSBpbiBhIGNvbW1lbnQgKi8KKyAgICAgIC8qIG9yIHN0cmluZyAoYXMgZS5nLiBpbiB1MDAzMDQzdC5nc2YgZnJvbSBnaG9zdHNjcmlwdCkgICAgICAgKi8KKworICAgICAgcGFyc2VyLT5yb290LmN1cnNvciA9IHBhcnNlci0+YmFzZV9kaWN0OworICAgICAgLyogc2V0IGxpbWl0IHRvIGBlZXhlYycgKyB3aGl0ZXNwYWNlICsgNCBjaGFyYWN0ZXJzICovCisgICAgICBwYXJzZXItPnJvb3QubGltaXQgID0gY3VyICsgMTA7CisKKyAgICAgIGN1ciAgID0gcGFyc2VyLT5yb290LmN1cnNvcjsKKyAgICAgIGxpbWl0ID0gcGFyc2VyLT5yb290LmxpbWl0OworCisgICAgICB3aGlsZSAoIGN1ciA8IGxpbWl0ICkKKyAgICAgIHsKKyAgICAgICAgaWYgKCAqY3VyID09ICdlJyAmJiBmdF9zdHJuY21wKCAoY2hhciopY3VyLCAiZWV4ZWMiLCA1ICkgPT0gMCApCisgICAgICAgICAgZ290byBGb3VuZDsKKworICAgICAgICBUMV9Ta2lwX1BTX1Rva2VuKCBwYXJzZXIgKTsKKyAgICAgICAgaWYgKCBwYXJzZXItPnJvb3QuZXJyb3IgKQorICAgICAgICAgIGJyZWFrOworICAgICAgICBUMV9Ta2lwX1NwYWNlcyAgKCBwYXJzZXIgKTsKKyAgICAgICAgY3VyID0gcGFyc2VyLT5yb290LmN1cnNvcjsKKyAgICAgIH0KKworICAgICAgLyogd2UgaGF2ZW4ndCBmb3VuZCB0aGUgY29ycmVjdCBgZWV4ZWMnOyBnbyBiYWNrIGFuZCBjb250aW51ZSAqLworICAgICAgLyogc2VhcmNoaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICBjdXIgICA9IGxpbWl0OworICAgICAgbGltaXQgPSBwYXJzZXItPmJhc2VfZGljdCArIHBhcnNlci0+YmFzZV9sZW47CisgICAgICBnb3RvIEFnYWluOworCisgICAgICAvKiBub3cgZGV0ZXJtaW5lIHdoZXJlIHRvIHdyaXRlIHRoZSBfZW5jcnlwdGVkXyBiaW5hcnkgcHJpdmF0ZSAgKi8KKyAgICAgIC8qIGRpY3Rpb25hcnkuICBXZSBvdmVyd3JpdGUgdGhlIGJhc2UgZGljdGlvbmFyeSBmb3IgZGlzay1iYXNlZCAqLworICAgICAgLyogcmVzb3VyY2VzIGFuZCBhbGxvY2F0ZSBhIG5ldyBibG9jayBvdGhlcndpc2UgICAgICAgICAgICAgICAgICovCisKKyAgICBGb3VuZDoKKyAgICAgIHBhcnNlci0+cm9vdC5saW1pdCA9IHBhcnNlci0+YmFzZV9kaWN0ICsgcGFyc2VyLT5iYXNlX2xlbjsKKworICAgICAgVDFfU2tpcF9QU19Ub2tlbiggcGFyc2VyICk7CisgICAgICBjdXIgICA9IHBhcnNlci0+cm9vdC5jdXJzb3I7CisgICAgICBsaW1pdCA9IHBhcnNlci0+cm9vdC5saW1pdDsKKworICAgICAgLyogYWNjb3JkaW5nIHRvIHRoZSBUeXBlMSBzcGVjLCB0aGUgZmlyc3QgY2lwaGVyIGJ5dGUgbXVzdCBub3QgYmUgICovCisgICAgICAvKiBhbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBjb2RlIChibGFuaywgdGFiLCBjYXJyaWFnZSByZXR1cm4gKi8KKyAgICAgIC8qIG9yIGxpbmUgZmVlZCkuICBXZSBoYXZlIHNlZW4gVHlwZSAxIGZvbnRzIHdpdGggdHdvIGxpbmUgZmVlZCAgICAqLworICAgICAgLyogY2hhcmFjdGVycy4uLiAgU28gc2tpcCBub3cgYWxsIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGNvZGVzLiAgICAgICovCisgICAgICB3aGlsZSAoIGN1ciA8IGxpbWl0ICAgICAgICYmCisgICAgICAgICAgICAgICggKmN1ciA9PSAnICcgIHx8CisgICAgICAgICAgICAgICAgKmN1ciA9PSAnXHQnIHx8CisgICAgICAgICAgICAgICAgKmN1ciA9PSAnXHInIHx8CisgICAgICAgICAgICAgICAgKmN1ciA9PSAnXG4nICkgKQorICAgICAgICArK2N1cjsKKyAgICAgIGlmICggY3VyID49IGxpbWl0ICkKKyAgICAgIHsKKyAgICAgICAgRlRfRVJST1IoKCAiVDFfR2V0X1ByaXZhdGVfRGljdDoiCisgICAgICAgICAgICAgICAgICAgIiBgZWV4ZWMnIG5vdCBwcm9wZXJseSB0ZXJtaW5hdGVkXG4iICkpOworICAgICAgICBlcnJvciA9IEZUX1RIUk9XKCBJbnZhbGlkX0ZpbGVfRm9ybWF0ICk7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgIH0KKworICAgICAgc2l6ZSA9IChGVF9VTG9uZykoIHBhcnNlci0+YmFzZV9sZW4gLSAoIGN1ciAtIHBhcnNlci0+YmFzZV9kaWN0ICkgKTsKKworICAgICAgaWYgKCBwYXJzZXItPmluX21lbW9yeSApCisgICAgICB7CisgICAgICAgIC8qIG5vdGUgdGhhdCB3ZSBhbGxvY2F0ZSBvbmUgbW9yZSBieXRlIHRvIHB1dCBhIHRlcm1pbmF0aW5nIGAwJyAqLworICAgICAgICBpZiAoIEZUX0FMTE9DKCBwYXJzZXItPnByaXZhdGVfZGljdCwgc2l6ZSArIDEgKSApCisgICAgICAgICAgZ290byBGYWlsOworICAgICAgICBwYXJzZXItPnByaXZhdGVfbGVuID0gc2l6ZTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgcGFyc2VyLT5zaW5nbGVfYmxvY2sgPSAxOworICAgICAgICBwYXJzZXItPnByaXZhdGVfZGljdCA9IHBhcnNlci0+YmFzZV9kaWN0OworICAgICAgICBwYXJzZXItPnByaXZhdGVfbGVuICA9IHNpemU7CisgICAgICAgIHBhcnNlci0+YmFzZV9kaWN0ICAgID0gMDsKKyAgICAgICAgcGFyc2VyLT5iYXNlX2xlbiAgICAgPSAwOworICAgICAgfQorCisgICAgICAvKiBub3cgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHByaXZhdGUgZGljdGlvbmFyeSBpcyBlbmNvZGVkIGluIGJpbmFyeSAqLworICAgICAgLyogb3IgaGV4YWRlY2ltYWwgQVNDSUkgZm9ybWF0IC0tIGRlY29kZSBpdCBhY2NvcmRpbmdseSAgICAgICAgICAgICAgKi8KKworICAgICAgLyogd2UgbmVlZCB0byBhY2Nlc3MgdGhlIG5leHQgNCBieXRlcyAoYWZ0ZXIgdGhlIGZpbmFsIHdoaXRlc3BhY2UgKi8KKyAgICAgIC8qIGZvbGxvd2luZyB0aGUgYGVleGVjJyBrZXl3b3JkKTsgaWYgdGhleSBhbGwgYXJlIGhleGFkZWNpbWFsICAgICovCisgICAgICAvKiBkaWdpdHMsIHRoZW4gd2UgaGF2ZSBhIGNhc2Ugb2YgQVNDSUkgc3RvcmFnZSAgICAgICAgICAgICAgICAgICAqLworCisgICAgICBpZiAoIGN1ciArIDMgPCBsaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgZnRfaXN4ZGlnaXQoIGN1clswXSApICYmIGZ0X2lzeGRpZ2l0KCBjdXJbMV0gKSAmJgorICAgICAgICAgICBmdF9pc3hkaWdpdCggY3VyWzJdICkgJiYgZnRfaXN4ZGlnaXQoIGN1clszXSApICkKKyAgICAgIHsKKyAgICAgICAgLyogQVNDSUkgaGV4YWRlY2ltYWwgZW5jb2RpbmcgKi8KKyAgICAgICAgRlRfTG9uZyAgbGVuOworCisKKyAgICAgICAgcGFyc2VyLT5yb290LmN1cnNvciA9IGN1cjsKKyAgICAgICAgKHZvaWQpcHNhdXgtPnBzX3BhcnNlcl9mdW5jcy0+dG9fYnl0ZXMoICZwYXJzZXItPnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPnByaXZhdGVfZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+cHJpdmF0ZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCApOworICAgICAgICBwYXJzZXItPnByaXZhdGVfbGVuID0gbGVuOworCisgICAgICAgIC8qIHB1dCBhIHNhZmVndWFyZCAqLworICAgICAgICBwYXJzZXItPnByaXZhdGVfZGljdFtsZW5dID0gJ1wwJzsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgLyogYmluYXJ5IGVuY29kaW5nIC0tIGNvcHkgdGhlIHByaXZhdGUgZGljdCAqLworICAgICAgICBGVF9NRU1fTU9WRSggcGFyc2VyLT5wcml2YXRlX2RpY3QsIGN1ciwgc2l6ZSApOworICAgIH0KKworICAgIC8qIHdlIG5vdyBkZWNyeXB0IHRoZSBlbmNvZGVkIGJpbmFyeSBwcml2YXRlIGRpY3Rpb25hcnkgKi8KKyAgICBwc2F1eC0+dDFfZGVjcnlwdCggcGFyc2VyLT5wcml2YXRlX2RpY3QsIHBhcnNlci0+cHJpdmF0ZV9sZW4sIDU1NjY1VSApOworCisgICAgaWYgKCBwYXJzZXItPnByaXZhdGVfbGVuIDwgNCApCisgICAgeworICAgICAgRlRfRVJST1IoKCAiVDFfR2V0X1ByaXZhdGVfRGljdDoiCisgICAgICAgICAgICAgICAgICIgaW52YWxpZCBwcml2YXRlIGRpY3Rpb25hcnkgc2VjdGlvblxuIiApKTsKKyAgICAgIGVycm9yID0gRlRfVEhST1coIEludmFsaWRfRmlsZV9Gb3JtYXQgKTsKKyAgICAgIGdvdG8gRmFpbDsKKyAgICB9CisKKyAgICAvKiByZXBsYWNlIHRoZSBmb3VyIHJhbmRvbSBieXRlcyBhdCB0aGUgYmVnaW5uaW5nIHdpdGggd2hpdGVzcGFjZSAqLworICAgIHBhcnNlci0+cHJpdmF0ZV9kaWN0WzBdID0gJyAnOworICAgIHBhcnNlci0+cHJpdmF0ZV9kaWN0WzFdID0gJyAnOworICAgIHBhcnNlci0+cHJpdmF0ZV9kaWN0WzJdID0gJyAnOworICAgIHBhcnNlci0+cHJpdmF0ZV9kaWN0WzNdID0gJyAnOworCisgICAgcGFyc2VyLT5yb290LmJhc2UgICA9IHBhcnNlci0+cHJpdmF0ZV9kaWN0OworICAgIHBhcnNlci0+cm9vdC5jdXJzb3IgPSBwYXJzZXItPnByaXZhdGVfZGljdDsKKyAgICBwYXJzZXItPnJvb3QubGltaXQgID0gcGFyc2VyLT5yb290LmN1cnNvciArIHBhcnNlci0+cHJpdmF0ZV9sZW47CisKKyAgRmFpbDoKKyAgRXhpdDoKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFwYXJzZS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9meGZ0Mi41LjAxL3NyYy90eXBlMS90MXBhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiNmM0MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDFwYXJzZS5oCkBAIC0wLDAgKzEsMTM1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICB0MXBhcnNlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgVHlwZSAxIHBhcnNlciAoc3BlY2lmaWNhdGlvbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgQ29weXJpZ2h0IDE5OTYtMjAwMSwgMjAwMiwgMjAwMywgMjAwOCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCAgICAgICAqLworLyogIG1vZGlmaWVkLCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0ICAgICAgKi8KKy8qICBsaWNlbnNlLCBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgICAgICovCisvKiAgdGhpcyBmaWxlIHlvdSBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kICAgICAgICAgICAgICAqLworLyogIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdCBmdWxseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKyNpZm5kZWYgX19UMVBBUlNFX0hfXworI2RlZmluZSBfX1QxUEFSU0VfSF9fCisKKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCIKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisKKworRlRfQkVHSU5fSEVBREVSCisKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxTdHJ1Y3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBUMV9QYXJzZXJSZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qIDxEZXNjcmlwdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBBIFBTX1BhcnNlclJlYyBpcyBhbiBvYmplY3QgdXNlZCB0byBwYXJzZSBhIFR5cGUgMSBmb250cyB2ZXJ5ICAgICAgKi8KKyAgLyogICAgcXVpY2tseS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiA8RmllbGRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgcm9vdCAgICAgICAgIDo6IFRoZSByb290IHBhcnNlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzdHJlYW0gICAgICAgOjogVGhlIGN1cnJlbnQgaW5wdXQgc3RyZWFtLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIGJhc2VfZGljdCAgICA6OiBBIHBvaW50ZXIgdG8gdGhlIHRvcC1sZXZlbCBkaWN0aW9uYXJ5LiAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgYmFzZV9sZW4gICAgIDo6IFRoZSBsZW5ndGggaW4gYnl0ZXMgb2YgdGhlIHRvcCBkaWN0aW9uYXJ5LiAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBwcml2YXRlX2RpY3QgOjogQSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRpY3Rpb25hcnkuICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIC8qICAgIHByaXZhdGVfbGVuICA6OiBUaGUgbGVuZ3RoIGluIGJ5dGVzIG9mIHRoZSBwcml2YXRlIGRpY3Rpb25hcnkuICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW5fcGZiICAgICAgIDo6IEEgYm9vbGVhbi4gIEluZGljYXRlcyB0aGF0IHdlIGFyZSBoYW5kbGluZyBhIFBGQiAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgaW5fbWVtb3J5ICAgIDo6IEEgYm9vbGVhbi4gIEluZGljYXRlcyBhIG1lbW9yeS1iYXNlZCBzdHJlYW0uICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAvKiAgICBzaW5nbGVfYmxvY2sgOjogQSBib29sZWFuLiAgSW5kaWNhdGVzIHRoYXQgdGhlIHByaXZhdGUgZGljdGlvbmFyeSAgKi8KKyAgLyogICAgICAgICAgICAgICAgICAgIGlzIHN0b3JlZCBpbiBsaWV1IG9mIHRoZSBiYXNlIGRpY3Rpb25hcnkuICAgICAgICAgICovCisgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICB0eXBlZGVmIHN0cnVjdCAgVDFfUGFyc2VyUmVjXworICB7CisgICAgUFNfUGFyc2VyUmVjICByb290OworICAgIEZUX1N0cmVhbSAgICAgc3RyZWFtOworCisgICAgRlRfQnl0ZSogICAgICBiYXNlX2RpY3Q7CisgICAgRlRfVUxvbmcgICAgICBiYXNlX2xlbjsKKworICAgIEZUX0J5dGUqICAgICAgcHJpdmF0ZV9kaWN0OworICAgIEZUX1VMb25nICAgICAgcHJpdmF0ZV9sZW47CisKKyAgICBGVF9Cb29sICAgICAgIGluX3BmYjsKKyAgICBGVF9Cb29sICAgICAgIGluX21lbW9yeTsKKyAgICBGVF9Cb29sICAgICAgIHNpbmdsZV9ibG9jazsKKworICB9IFQxX1BhcnNlclJlYywgKlQxX1BhcnNlcjsKKworCisjZGVmaW5lIFQxX0FkZF9UYWJsZSggcCwgaSwgbywgbCApICAocCktPmZ1bmNzLmFkZCggKHApLCBpLCBvLCBsICkKKyNkZWZpbmUgVDFfRG9uZV9UYWJsZSggcCApICAgICAgICAgIFwKKyAgICAgICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGlmICggKHApLT5mdW5jcy5kb25lICkgIFwKKyAgICAgICAgICAgICAgKHApLT5mdW5jcy5kb25lKCBwICk7IFwKKyAgICAgICAgICB9IHdoaWxlICggMCApCisjZGVmaW5lIFQxX1JlbGVhc2VfVGFibGUoIHAgKSAgICAgICAgICBcCisgICAgICAgICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAoIChwKS0+ZnVuY3MucmVsZWFzZSApICBcCisgICAgICAgICAgICAgIChwKS0+ZnVuY3MucmVsZWFzZSggcCApOyBcCisgICAgICAgICAgfSB3aGlsZSAoIDAgKQorCisKKyNkZWZpbmUgVDFfU2tpcF9TcGFjZXMoIHAgKSAgICAocCktPnJvb3QuZnVuY3Muc2tpcF9zcGFjZXMoICYocCktPnJvb3QgKQorI2RlZmluZSBUMV9Ta2lwX1BTX1Rva2VuKCBwICkgIChwKS0+cm9vdC5mdW5jcy5za2lwX1BTX3Rva2VuKCAmKHApLT5yb290ICkKKworI2RlZmluZSBUMV9Ub0ludCggcCApICAgICAgIChwKS0+cm9vdC5mdW5jcy50b19pbnQoICYocCktPnJvb3QgKQorI2RlZmluZSBUMV9Ub0ZpeGVkKCBwLCB0ICkgIChwKS0+cm9vdC5mdW5jcy50b19maXhlZCggJihwKS0+cm9vdCwgdCApCisKKyNkZWZpbmUgVDFfVG9Db29yZEFycmF5KCBwLCBtLCBjICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKHApLT5yb290LmZ1bmNzLnRvX2Nvb3JkX2FycmF5KCAmKHApLT5yb290LCBtLCBjICkKKyNkZWZpbmUgVDFfVG9GaXhlZEFycmF5KCBwLCBtLCBmLCB0ICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKHApLT5yb290LmZ1bmNzLnRvX2ZpeGVkX2FycmF5KCAmKHApLT5yb290LCBtLCBmLCB0ICkKKyNkZWZpbmUgVDFfVG9Ub2tlbiggcCwgdCApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKHApLT5yb290LmZ1bmNzLnRvX3Rva2VuKCAmKHApLT5yb290LCB0ICkKKyNkZWZpbmUgVDFfVG9Ub2tlbkFycmF5KCBwLCB0LCBtLCBjICkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKHApLT5yb290LmZ1bmNzLnRvX3Rva2VuX2FycmF5KCAmKHApLT5yb290LCB0LCBtLCBjICkKKworI2RlZmluZSBUMV9Mb2FkX0ZpZWxkKCBwLCBmLCBvLCBtLCBwZiApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAocCktPnJvb3QuZnVuY3MubG9hZF9maWVsZCggJihwKS0+cm9vdCwgZiwgbywgbSwgcGYgKQorCisjZGVmaW5lIFQxX0xvYWRfRmllbGRfVGFibGUoIHAsIGYsIG8sIG0sIHBmICkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIChwKS0+cm9vdC5mdW5jcy5sb2FkX2ZpZWxkX3RhYmxlKCAmKHApLT5yb290LCBmLCBvLCBtLCBwZiApCisKKworICBGVF9MT0NBTCggRlRfRXJyb3IgKQorICBUMV9OZXdfUGFyc2VyKCBUMV9QYXJzZXIgICAgICBwYXJzZXIsCisgICAgICAgICAgICAgICAgIEZUX1N0cmVhbSAgICAgIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgRlRfTWVtb3J5ICAgICAgbWVtb3J5LAorICAgICAgICAgICAgICAgICBQU0F1eF9TZXJ2aWNlICBwc2F1eCApOworCisgIEZUX0xPQ0FMKCBGVF9FcnJvciApCisgIFQxX0dldF9Qcml2YXRlX0RpY3QoIFQxX1BhcnNlciAgICAgIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgUFNBdXhfU2VydmljZSAgcHNhdXggKTsKKworICBGVF9MT0NBTCggdm9pZCApCisgIFQxX0ZpbmFsaXplX1BhcnNlciggVDFfUGFyc2VyICBwYXJzZXIgKTsKKworCitGVF9FTkRfSEVBREVSCisKKyNlbmRpZiAvKiBfX1QxUEFSU0VfSF9fICovCisKKworLyogRU5EICovCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3QxdG9rZW5zLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL3QxdG9rZW5zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM3Mjc2YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvZnhmdDIuNS4wMS9zcmMvdHlwZTEvdDF0b2tlbnMuaApAQCAtMCwwICsxLDE0MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgdDF0b2tlbnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgIFR5cGUgMSB0b2tlbml6ZXIgKHNwZWNpZmljYXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIENvcHlyaWdodCAxOTk2LTIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDgsIDIwMDkgYnkgICAgICAgICAgICAgKi8KKy8qICBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgICAgICAgKi8KKy8qICBtb2RpZmllZCwgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCAgICAgICovCisvKiAgbGljZW5zZSwgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlICAgICAqLworLyogIHRoaXMgZmlsZSB5b3UgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCAgICAgICAgICAgICAgKi8KKy8qICB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQgZnVsbHkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjdW5kZWYgIEZUX1NUUlVDVFVSRQorI2RlZmluZSBGVF9TVFJVQ1RVUkUgIFBTX0ZvbnRJbmZvUmVjCisjdW5kZWYgIFQxQ09ERQorI2RlZmluZSBUMUNPREUgICAgICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX0ZPTlRfSU5GTworCisgIFQxX0ZJRUxEX1NUUklORyggInZlcnNpb24iLCAgICAgICAgICAgIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9GT05URElDVCApCisgIFQxX0ZJRUxEX1NUUklORyggIk5vdGljZSIsICAgICAgICAgICAgIG5vdGljZSwKKyAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX0ZPTlRESUNUICkKKyAgVDFfRklFTERfU1RSSU5HKCAiRnVsbE5hbWUiLCAgICAgICAgICAgZnVsbF9uYW1lLAorICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorICBUMV9GSUVMRF9TVFJJTkcoICJGYW1pbHlOYW1lIiwgICAgICAgICBmYW1pbHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX0ZPTlRESUNUICkKKyAgVDFfRklFTERfU1RSSU5HKCAiV2VpZ2h0IiwgICAgICAgICAgICAgd2VpZ2h0LAorICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorCisgIC8qIHdlIHVzZSBwb2ludGVycyB0byBkZXRlY3QgbW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHN5bnRoZXRpYyBmb250cyAqLworICBUMV9GSUVMRF9OVU0gICAoICJJdGFsaWNBbmdsZSIsICAgICAgICBpdGFsaWNfYW5nbGUsCisgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9GT05URElDVCApCisgIFQxX0ZJRUxEX0JPT0wgICggImlzRml4ZWRQaXRjaCIsICAgICAgIGlzX2ZpeGVkX3BpdGNoLAorICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorICBUMV9GSUVMRF9OVU0gICAoICJVbmRlcmxpbmVQb3NpdGlvbiIsICB1bmRlcmxpbmVfcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9GT05URElDVCApCisgIFQxX0ZJRUxEX05VTSAgICggIlVuZGVybGluZVRoaWNrbmVzcyIsIHVuZGVybGluZV90aGlja25lc3MsCisgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9GT05URElDVCApCisKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgUFNfRm9udEV4dHJhUmVjCisjdW5kZWYgIFQxQ09ERQorI2RlZmluZSBUMUNPREUgICAgICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX0ZPTlRfRVhUUkEKKworICBUMV9GSUVMRF9OVU0gICAoICJGU1R5cGUiLCBmc190eXBlLAorICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorCisjdW5kZWYgIEZUX1NUUlVDVFVSRQorI2RlZmluZSBGVF9TVFJVQ1RVUkUgIFBTX1ByaXZhdGVSZWMKKyN1bmRlZiAgVDFDT0RFCisjZGVmaW5lIFQxQ09ERSAgICAgICAgVDFfRklFTERfTE9DQVRJT05fUFJJVkFURQorCisgIFQxX0ZJRUxEX05VTSAgICAgICAoICJVbmlxdWVJRCIsICAgICAgICAgdW5pcXVlX2lkLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX0ZPTlRESUNUIHwgVDFfRklFTERfRElDVF9QUklWQVRFICkKKyAgVDFfRklFTERfTlVNICAgICAgICggImxlbklWIiwgICAgICAgICAgICBsZW5JViwKKyAgICAgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9QUklWQVRFICkKKyAgVDFfRklFTERfTlVNICAgICAgICggIkxhbmd1YWdlR3JvdXAiLCAgICBsYW5ndWFnZV9ncm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9QUklWQVRFICkKKyAgVDFfRklFTERfTlVNICAgICAgICggInBhc3N3b3JkIiwgICAgICAgICBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9QUklWQVRFICkKKworICBUMV9GSUVMRF9GSVhFRF8xMDAwKCAiQmx1ZVNjYWxlIiwgICAgICAgIGJsdWVfc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfUFJJVkFURSApCisgIFQxX0ZJRUxEX05VTSAgICAgICAoICJCbHVlU2hpZnQiLCAgICAgICAgYmx1ZV9zaGlmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9QUklWQVRFICkKKyAgVDFfRklFTERfTlVNICAgICAgICggIkJsdWVGdXp6IiwgICAgICAgICBibHVlX2Z1enosCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfUFJJVkFURSApCisKKyAgVDFfRklFTERfTlVNX1RBQkxFICggIkJsdWVWYWx1ZXMiLCAgICAgICBibHVlX3ZhbHVlcywgICAgICAgIDE0LAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX1BSSVZBVEUgKQorICBUMV9GSUVMRF9OVU1fVEFCTEUgKCAiT3RoZXJCbHVlcyIsICAgICAgIG90aGVyX2JsdWVzLCAgICAgICAgMTAsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfUFJJVkFURSApCisgIFQxX0ZJRUxEX05VTV9UQUJMRSAoICJGYW1pbHlCbHVlcyIsICAgICAgZmFtaWx5X2JsdWVzLCAgICAgICAxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9QUklWQVRFICkKKyAgVDFfRklFTERfTlVNX1RBQkxFICggIkZhbWlseU90aGVyQmx1ZXMiLCBmYW1pbHlfb3RoZXJfYmx1ZXMsIDEwLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX1BSSVZBVEUgKQorCisgIFQxX0ZJRUxEX05VTV9UQUJMRTIoICJTdGRIVyIsICAgICAgICAgICAgc3RhbmRhcmRfd2lkdGgsICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgVDFfRklFTERfRElDVF9QUklWQVRFICkKKyAgVDFfRklFTERfTlVNX1RBQkxFMiggIlN0ZFZXIiwgICAgICAgICAgICBzdGFuZGFyZF9oZWlnaHQsICAgICAxLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX1BSSVZBVEUgKQorICBUMV9GSUVMRF9OVU1fVEFCTEUyKCAiTWluRmVhdHVyZSIsICAgICAgIG1pbl9mZWF0dXJlLCAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfUFJJVkFURSApCisKKyAgVDFfRklFTERfTlVNX1RBQkxFICggIlN0ZW1TbmFwSCIsICAgICAgICBzbmFwX3dpZHRocywgICAgICAgIDEyLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX1BSSVZBVEUgKQorICBUMV9GSUVMRF9OVU1fVEFCTEUgKCAiU3RlbVNuYXBWIiwgICAgICAgIHNuYXBfaGVpZ2h0cywgICAgICAgMTIsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfUFJJVkFURSApCisKKyAgVDFfRklFTERfRklYRUQgICAgICggIkV4cGFuc2lvbkZhY3RvciIsICBleHBhbnNpb25fZmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICBUMV9GSUVMRF9ESUNUX1BSSVZBVEUgKQorICBUMV9GSUVMRF9CT09MICAgICAgKCAiRm9yY2VCb2xkIiwgICAgICAgIGZvcmNlX2JvbGQsCisgICAgICAgICAgICAgICAgICAgICAgIFQxX0ZJRUxEX0RJQ1RfUFJJVkFURSApCisKKworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBUMV9Gb250UmVjCisjdW5kZWYgIFQxQ09ERQorI2RlZmluZSBUMUNPREUgICAgICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX0ZPTlRfRElDVAorCisgIFQxX0ZJRUxEX0tFWSAgKCAiRm9udE5hbWUiLCAgICBmb250X25hbWUsICAgIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorICBUMV9GSUVMRF9OVU0gICggIlBhaW50VHlwZSIsICAgcGFpbnRfdHlwZSwgICBUMV9GSUVMRF9ESUNUX0ZPTlRESUNUICkKKyAgVDFfRklFTERfTlVNICAoICJGb250VHlwZSIsICAgIGZvbnRfdHlwZSwgICAgVDFfRklFTERfRElDVF9GT05URElDVCApCisgIFQxX0ZJRUxEX0ZJWEVEKCAiU3Ryb2tlV2lkdGgiLCBzdHJva2Vfd2lkdGgsIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorCisKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgRlRfQkJveAorI3VuZGVmICBUMUNPREUKKyNkZWZpbmUgVDFDT0RFICAgICAgICBUMV9GSUVMRF9MT0NBVElPTl9CQk9YCisKKyAgVDFfRklFTERfQkJPWCggIkZvbnRCQm94IiwgeE1pbiwgVDFfRklFTERfRElDVF9GT05URElDVCApCisKKworI2lmbmRlZiBUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlQKKworI3VuZGVmICBGVF9TVFJVQ1RVUkUKKyNkZWZpbmUgRlRfU1RSVUNUVVJFICBUMV9GYWNlUmVjCisjdW5kZWYgIFQxQ09ERQorI2RlZmluZSBUMUNPREUgICAgICAgIFQxX0ZJRUxEX0xPQ0FUSU9OX0ZBQ0UKKworICBUMV9GSUVMRF9OVU0oICJORFYiLCBuZHZfaWR4LCBUMV9GSUVMRF9ESUNUX1BSSVZBVEUgKQorICBUMV9GSUVMRF9OVU0oICJDRFYiLCBjZHZfaWR4LCBUMV9GSUVMRF9ESUNUX1BSSVZBVEUgKQorCisKKyN1bmRlZiAgRlRfU1RSVUNUVVJFCisjZGVmaW5lIEZUX1NUUlVDVFVSRSAgUFNfQmxlbmRSZWMKKyN1bmRlZiAgVDFDT0RFCisjZGVmaW5lIFQxQ09ERSAgICAgICAgVDFfRklFTERfTE9DQVRJT05fQkxFTkQKKworICBUMV9GSUVMRF9OVU1fVEFCTEUoICJEZXNpZ25WZWN0b3IiLCBkZWZhdWx0X2Rlc2lnbl92ZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgVDFfTUFYX01NX0RFU0lHTlMsIFQxX0ZJRUxEX0RJQ1RfRk9OVERJQ1QgKQorCisKKyNlbmRpZiAvKiBUMV9DT05GSUdfT1BUSU9OX05PX01NX1NVUFBPUlQgKi8KKworCisvKiBFTkQgKi8KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvaW5jbHVkZS9meGZ0X2NmZm9ianMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvaW5jbHVkZS9meGZ0X2NmZm9ianMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTVlMDc1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfY2Zmb2Jqcy5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZYRlRfQ0ZGT0JKU19IXworI2RlZmluZSBfRlhGVF9DRkZPQkpTX0hfCisjaW5jbHVkZSAiLi4vZnhmdDIuNS4wMS9zcmMvY2ZmL2NmZm9ianMuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfY2ZmdHlwZXMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvaW5jbHVkZS9meGZ0X2NmZnR5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiYjdhMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvaW5jbHVkZS9meGZ0X2NmZnR5cGVzLmgKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhGVF9GUkVFVFlQRV9IXworI2RlZmluZSBfRlhGVF9GUkVFVFlQRV9IXworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL2NmZi9jZmZ0eXBlcy5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF9mcmVldHlwZS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfZnJlZXR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmZmZGUwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfZnJlZXR5cGUuaApAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWEZUX0ZSRUVUWVBFX0hfCisjZGVmaW5lIF9GWEZUX0ZSRUVUWVBFX0hfCisjaW5jbHVkZSAiLi4vZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvaW5jbHVkZS9meGZ0X2Z0MmJ1aWxkLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF9mdDJidWlsZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNDM4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF9mdDJidWlsZC5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZYRlRfRlQyQlVJTERfSF8KKyNkZWZpbmUgX0ZYRlRfRlQyQlVJTERfSF8KKyNpbmNsdWRlICIuLi9meGZ0Mi41LjAxL2luY2x1ZGUvZnQyYnVpbGQuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfZnRtbS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfZnRtbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMzZlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF9mdG1tLmgKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhGVF9GVE1NX0hfCisjZGVmaW5lIF9GWEZUX0ZUTU1fSF8KKyNpbmNsdWRlICIuLi9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRtbS5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF9mdG9ianMuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvaW5jbHVkZS9meGZ0X2Z0b2Jqcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZDdlYWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF9mdG9ianMuaApAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWEZUX0ZUT0JKU19IXworI2RlZmluZSBfRlhGVF9GVE9CSlNfSF8KKyNpbmNsdWRlICIuLi9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvaW5jbHVkZS9meGZ0X2Z0b3R2YWwuaCBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvaW5jbHVkZS9meGZ0X2Z0b3R2YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjEzYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfZnRvdHZhbC5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZYRlRfRlRPVFZBTF9IXworI2RlZmluZSBfRlhGVF9GVE9UVkFMX0hfCisjaW5jbHVkZSAiLi4vZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2Z0b3R2YWwuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfZnRvdXRsbi5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfZnRvdXRsbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Mzk2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF9mdG91dGxuLmgKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhGVF9GVE9VVExOX0hfCisjZGVmaW5lIF9GWEZUX0ZUT1VUTE5fSF8KKyNpbmNsdWRlICIuLi9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF9mdHN0cmVhbS5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfZnRzdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjZhNDIyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfZnRzdHJlYW0uaApAQCAtMCwwICsxLDEwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9GWEZUX0ZUU1RSRUFNX0hfCisjZGVmaW5lIF9GWEZUX0ZUU1RSRUFNX0hfCisjaW5jbHVkZSAiLi4vZnhmdDIuNS4wMS9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvaW5jbHVkZS9meGZ0X3R0dGFibGVzLmggYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF90dHRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNDRmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF90dHRhYmxlcy5oCkBAIC0wLDAgKzEsMTAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0ZYRlRfVFRUQUJMRVNfSF8KKyNkZWZpbmUgX0ZYRlRfVFRUQUJMRVNfSF8KKyNpbmNsdWRlICIuLi9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfdHR0eXBlcy5oIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9pbmNsdWRlL2Z4ZnRfdHR0eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTI4ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL2luY2x1ZGUvZnhmdF90dHR5cGVzLmgKQEAgLTAsMCArMSwxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBfRlhGVF9UVFRZUEVTX0hfCisjZGVmaW5lIF9GWEZUX1RUVFlQRVNfSF8KKyNpbmNsdWRlICIuLi9meGZ0Mi41LjAxL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIgorI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X2NmZi5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9jZmYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc3YjdkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9jZmYuYwpAQCAtMCwwICsxLDcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICIuLi9meGZ0Mi41LjAxL3NyYy9jZmYvZnhmdF9jZmYuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfZnRiYXNlLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X2Z0YmFzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NjlhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X2Z0YmFzZS5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGJhc2UuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfZnRiaXRtYXAuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfZnRiaXRtYXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWRiYzgzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9mdGJpdG1hcC5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGJpdG1hcC5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9mdGdseXBoLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X2Z0Z2x5cGguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTg1NWFjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9mdGdseXBoLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vZnhmdDIuNS4wMS9zcmMvYmFzZS9meGZ0X2Z0Z2x5cGguYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfZnRpbml0LmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X2Z0aW5pdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZTRiN2YKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X2Z0aW5pdC5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGluaXQuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfZnRsY2RmaWwuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfZnRsY2RmaWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjI1ZWEwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9mdGxjZGZpbC5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdGxjZGZpbC5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9mdG1tLmMgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X2Z0bW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTA2NDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9mdG1tLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vZnhmdDIuNS4wMS9zcmMvYmFzZS9meGZ0X2Z0bW0uYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfZnRzeXN0ZW0uYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfZnRzeXN0ZW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjE4MmEzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9mdHN5c3RlbS5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL2Jhc2UvZnhmdF9mdHN5c3RlbS5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9wc2F1eC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9wc2F1eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNmQwY2IKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X3BzYXV4LmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vZnhmdDIuNS4wMS9zcmMvcHNhdXgvZnhmdF9wc2F1eC5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9wc2hpbnRlci5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9wc2hpbnRlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYzVkNDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X3BzaGludGVyLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vZnhmdDIuNS4wMS9zcmMvcHNoaW50ZXIvZnhmdF9wc2hpbnRlci5jIgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9wc21vZHVsZS5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9wc21vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OTU4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X3BzbW9kdWxlLmMKQEAgLTAsMCArMSw3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vZnhmdDIuNS4wMS9zcmMvcHNuYW1lcy9meGZ0X3BzbW9kdWxlLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X3Jhc3Rlci5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9yYXN0ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjE2MDE2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9yYXN0ZXIuYwpAQCAtMCwwICsxLDcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICIuLi9meGZ0Mi41LjAxL3NyYy9yYXN0ZXIvZnhmdF9yYXN0ZXIuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfc2ZudC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9zZm50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZhMmI1NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfc2ZudC5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL3NmbnQvZnhmdF9zZm50LmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2Z4X2ZyZWV0eXBlL3NyYy9meGZ0X3Ntb290aC5jIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9zbW9vdGguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2JmYTAxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF9zbW9vdGguYwpAQCAtMCwwICsxLDcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICIuLi9meGZ0Mi41LjAxL3NyYy9zbW9vdGgvZnhmdF9zbW9vdGguYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfdHJ1ZXR5cGUuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfdHJ1ZXR5cGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWQ1NDk2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF90cnVldHlwZS5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL3RydWV0eXBlL2Z4ZnRfdHJ1ZXR5cGUuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfdHlwZTEuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfdHlwZTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzg0ZTBhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF90eXBlMS5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL3R5cGUxL2Z4ZnRfdHlwZTEuYyIKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfdHlwZTFjaWQuYyBiL2NvcmUvc3JjL2Z4Z2UvZnhfZnJlZXR5cGUvc3JjL2Z4ZnRfdHlwZTFjaWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjMxOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9meF9mcmVldHlwZS9zcmMvZnhmdF90eXBlMWNpZC5jCkBAIC0wLDAgKzEsNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uL2Z4ZnQyLjUuMDEvc3JjL2NpZC9meGZ0X3R5cGUxY2lkLmMiCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlLmNwcCBiL2NvcmUvc3JjL2Z4Z2UvZ2UvZnhfZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMjAwZDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlLmNwcApAQCAtMCwwICsxLDc5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2dlLmgiDQorI2luY2x1ZGUgInRleHRfaW50LmgiDQorc3RhdGljIENGWF9HRU1vZHVsZSogZ19wR0VNb2R1bGUgPSBOVUxMOw0KK0NGWF9HRU1vZHVsZTo6Q0ZYX0dFTW9kdWxlKCkNCit7DQorICAgIG1fcEZvbnRDYWNoZSA9IE5VTEw7DQorICAgIG1fcEZvbnRNZ3IgPSBOVUxMOw0KKyAgICBtX0ZUTGlicmFyeSA9IE5VTEw7DQorICAgIG1fcENvZGVjTW9kdWxlID0gTlVMTDsNCisgICAgbV9wUGxhdGZvcm1EYXRhID0gTlVMTDsNCit9DQorQ0ZYX0dFTW9kdWxlOjp+Q0ZYX0dFTW9kdWxlKCkNCit7DQorICAgIGlmIChtX3BGb250Q2FjaGUpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BGb250Q2FjaGU7DQorICAgIH0NCisgICAgbV9wRm9udENhY2hlID0gTlVMTDsNCisgICAgaWYgKG1fcEZvbnRNZ3IpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BGb250TWdyOw0KKyAgICB9DQorICAgIG1fcEZvbnRNZ3IgPSBOVUxMOw0KKyAgICBEZXN0cm95UGxhdGZvcm0oKTsNCit9DQorQ0ZYX0dFTW9kdWxlKiBDRlhfR0VNb2R1bGU6OkdldCgpDQorew0KKyAgICByZXR1cm4gZ19wR0VNb2R1bGU7DQorfQ0KK3ZvaWQgQ0ZYX0dFTW9kdWxlOjpDcmVhdGUoKQ0KK3sNCisgICAgZ19wR0VNb2R1bGUgPSBGWF9ORVcgQ0ZYX0dFTW9kdWxlOw0KKyAgICBpZiAoIWdfcEdFTW9kdWxlKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgZ19wR0VNb2R1bGUtPm1fcEZvbnRNZ3IgPSBGWF9ORVcgQ0ZYX0ZvbnRNZ3I7DQorICAgIGdfcEdFTW9kdWxlLT5Jbml0UGxhdGZvcm0oKTsNCisgICAgZ19wR0VNb2R1bGUtPlNldFRleHRHYW1tYSgyLjJmKTsNCit9DQordm9pZCBDRlhfR0VNb2R1bGU6OlVzZShDRlhfR0VNb2R1bGUqIHBNb2R1bGUpDQorew0KKyAgICBnX3BHRU1vZHVsZSA9IHBNb2R1bGU7DQorfQ0KK3ZvaWQgQ0ZYX0dFTW9kdWxlOjpEZXN0cm95KCkNCit7DQorICAgIGlmIChnX3BHRU1vZHVsZSkgew0KKyAgICAgICAgZGVsZXRlIGdfcEdFTW9kdWxlOw0KKyAgICB9DQorICAgIGdfcEdFTW9kdWxlID0gTlVMTDsNCit9DQorQ0ZYX0ZvbnRDYWNoZSogQ0ZYX0dFTW9kdWxlOjpHZXRGb250Q2FjaGUoKQ0KK3sNCisgICAgaWYgKG1fcEZvbnRDYWNoZSA9PSBOVUxMKSB7DQorICAgICAgICBtX3BGb250Q2FjaGUgPSBGWF9ORVcgQ0ZYX0ZvbnRDYWNoZSgpOw0KKyAgICB9DQorICAgIHJldHVybiBtX3BGb250Q2FjaGU7DQorfQ0KK3ZvaWQgQ0ZYX0dFTW9kdWxlOjpTZXRUZXh0R2FtbWEoRlhfRkxPQVQgZ2FtbWFWYWx1ZSkNCit7DQorICAgIGdhbW1hVmFsdWUgLz0gMi4yZjsNCisgICAgaW50IGkgPSAwOw0KKyAgICB3aGlsZSAoaSA8IDI1Nikgew0KKyAgICAgICAgbV9HYW1tYVZhbHVlW2ldID0gKEZYX0JZVEUpKEZYU1lTX3BvdygoRlhfRkxPQVQpaSAvIDI1NSwgZ2FtbWFWYWx1ZSkgKiAyNTUuMGYgKyAwLjVmKTsNCisgICAgICAgIGkrKzsNCisgICAgfQ0KK30NCitGWF9MUENCWVRFIENGWF9HRU1vZHVsZTo6R2V0VGV4dEdhbW1hVGFibGUoKQ0KK3sNCisgICAgcmV0dXJuIG1fR2FtbWFWYWx1ZTsNCit9DQordm9pZCBDRlhfR0VNb2R1bGU6OlNldEV4dEZvbnRNYXBwZXIoSUZYX0ZvbnRNYXBwZXIqIHBGb250TWFwcGVyKQ0KK3sNCisgICAgR2V0Rm9udE1ncigpLT5tX3BFeHRNYXBwZXIgPSBwRm9udE1hcHBlcjsNCisgICAgcEZvbnRNYXBwZXItPm1fcEZvbnRNZ3IgPSBtX3BGb250TWdyOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlX2RldmljZS5jcHAgYi9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlX2RldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY3Y2NkYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZ2UvZnhfZ2VfZGV2aWNlLmNwcApAQCAtMCwwICsxLDQwNSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KK0NGWF9SZW5kZXJEZXZpY2U6OkNGWF9SZW5kZXJEZXZpY2UoKQ0KK3sNCisgICAgbV9wRGV2aWNlRHJpdmVyID0gTlVMTDsNCisgICAgbV9wQml0bWFwID0gTlVMTDsNCit9DQorQ0ZYX1JlbmRlckRldmljZTo6fkNGWF9SZW5kZXJEZXZpY2UoKQ0KK3sNCisgICAgaWYgKG1fcERldmljZURyaXZlcikgew0KKyAgICAgICAgZGVsZXRlIG1fcERldmljZURyaXZlcjsNCisgICAgfQ0KK30NCit2b2lkIENGWF9SZW5kZXJEZXZpY2U6OlNldERldmljZURyaXZlcihJRlhfUmVuZGVyRGV2aWNlRHJpdmVyKiBwRHJpdmVyKQ0KK3sNCisgICAgaWYgKG1fcERldmljZURyaXZlcikgew0KKyAgICAgICAgZGVsZXRlIG1fcERldmljZURyaXZlcjsNCisgICAgfQ0KKyAgICBtX3BEZXZpY2VEcml2ZXIgPSBwRHJpdmVyOw0KKyAgICBJbml0RGV2aWNlSW5mbygpOw0KK30NCit2b2lkIENGWF9SZW5kZXJEZXZpY2U6OkluaXREZXZpY2VJbmZvKCkNCit7DQorICAgIEFTU0VSVChtX3BEZXZpY2VEcml2ZXIgIT0gTlVMTCk7DQorICAgIG1fV2lkdGggPSBtX3BEZXZpY2VEcml2ZXItPkdldERldmljZUNhcHMoRlhEQ19QSVhFTF9XSURUSCk7DQorICAgIG1fSGVpZ2h0ID0gbV9wRGV2aWNlRHJpdmVyLT5HZXREZXZpY2VDYXBzKEZYRENfUElYRUxfSEVJR0hUKTsNCisgICAgbV9icHAgPSBtX3BEZXZpY2VEcml2ZXItPkdldERldmljZUNhcHMoRlhEQ19CSVRTX1BJWEVMKTsNCisgICAgbV9SZW5kZXJDYXBzID0gbV9wRGV2aWNlRHJpdmVyLT5HZXREZXZpY2VDYXBzKEZYRENfUkVOREVSX0NBUFMpOw0KKyAgICBtX0RldmljZUNsYXNzID0gbV9wRGV2aWNlRHJpdmVyLT5HZXREZXZpY2VDYXBzKEZYRENfREVWSUNFX0NMQVNTKTsNCisgICAgaWYgKCFtX3BEZXZpY2VEcml2ZXItPkdldENsaXBCb3goJm1fQ2xpcEJveCkpIHsNCisgICAgICAgIG1fQ2xpcEJveC5sZWZ0ID0gMDsNCisgICAgICAgIG1fQ2xpcEJveC50b3AgPSAwOw0KKyAgICAgICAgbV9DbGlwQm94LnJpZ2h0ID0gbV9XaWR0aDsNCisgICAgICAgIG1fQ2xpcEJveC5ib3R0b20gPSBtX0hlaWdodDsNCisgICAgfQ0KK30NCitGWF9CT09MIENGWF9SZW5kZXJEZXZpY2U6OlN0YXJ0UmVuZGVyaW5nKCkNCit7DQorICAgIHJldHVybiBtX3BEZXZpY2VEcml2ZXItPlN0YXJ0UmVuZGVyaW5nKCk7DQorfQ0KK3ZvaWQgQ0ZYX1JlbmRlckRldmljZTo6RW5kUmVuZGVyaW5nKCkNCit7DQorICAgIG1fcERldmljZURyaXZlci0+RW5kUmVuZGVyaW5nKCk7DQorfQ0KK3ZvaWQgQ0ZYX1JlbmRlckRldmljZTo6U2F2ZVN0YXRlKCkNCit7DQorICAgIG1fcERldmljZURyaXZlci0+U2F2ZVN0YXRlKCk7DQorfQ0KK3ZvaWQgQ0ZYX1JlbmRlckRldmljZTo6UmVzdG9yZVN0YXRlKEZYX0JPT0wgYktlZXBTYXZlZCkNCit7DQorICAgIG1fcERldmljZURyaXZlci0+UmVzdG9yZVN0YXRlKGJLZWVwU2F2ZWQpOw0KKyAgICBVcGRhdGVDbGlwQm94KCk7DQorfQ0KK2ludCBDRlhfUmVuZGVyRGV2aWNlOjpHZXREZXZpY2VDYXBzKGludCBjYXBzX2lkKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIG1fcERldmljZURyaXZlci0+R2V0RGV2aWNlQ2FwcyhjYXBzX2lkKTsNCit9DQorQ0ZYX01hdHJpeCBDRlhfUmVuZGVyRGV2aWNlOjpHZXRDVE0oKSBjb25zdA0KK3sNCisgICAgcmV0dXJuIG1fcERldmljZURyaXZlci0+R2V0Q1RNKCk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1JlbmRlckRldmljZTo6Q3JlYXRlQ29tcGF0aWJsZUJpdG1hcChDRlhfRElCaXRtYXAqIHBESUIsIGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3QNCit7DQorICAgIGlmIChtX1JlbmRlckNhcHMgJiBGWFJDX0NNWUtfT1VUUFVUKSB7DQorICAgICAgICByZXR1cm4gcERJQi0+Q3JlYXRlKHdpZHRoLCBoZWlnaHQsIG1fUmVuZGVyQ2FwcyAmIEZYUkNfQUxQSEFfT1VUUFVUID8gRlhESUJfQ215a2EgOiBGWERJQl9DbXlrKTsNCisgICAgfSBlbHNlIGlmIChtX1JlbmRlckNhcHMgJiBGWFJDX0JZVEVNQVNLX09VVFBVVCkgew0KKyAgICAgICAgcmV0dXJuIHBESUItPkNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBGWERJQl84YnBwTWFzayk7DQorICAgIH0gZWxzZQ0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgICAgIHJldHVybiBwRElCLT5DcmVhdGUod2lkdGgsIGhlaWdodCwgbV9SZW5kZXJDYXBzICYgRlhSQ19BTFBIQV9PVVRQVVQgPyBGWERJQl9BcmdiIDogRlhESUJfUmdiMzIpOw0KKyNlbHNlDQorICAgICAgICByZXR1cm4gcERJQi0+Q3JlYXRlKHdpZHRoLCBoZWlnaHQsIG1fUmVuZGVyQ2FwcyAmIEZYUkNfQUxQSEFfT1VUUFVUID8gRlhESUJfQXJnYiA6IEZYRElCX1JnYik7DQorI2VuZGlmDQorfQ0KK0ZYX0JPT0wgQ0ZYX1JlbmRlckRldmljZTo6U2V0Q2xpcF9QYXRoRmlsbChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLA0KKyAgICAgICAgaW50IGZpbGxfbW9kZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCit7DQorICAgIGlmICghbV9wRGV2aWNlRHJpdmVyLT5TZXRDbGlwX1BhdGhGaWxsKHBQYXRoRGF0YSwgcE9iamVjdDJEZXZpY2UsIGZpbGxfbW9kZSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBVcGRhdGVDbGlwQm94KCk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9SZW5kZXJEZXZpY2U6OlNldENsaXBfUGF0aFN0cm9rZShjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLA0KKyAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KK3sNCisgICAgaWYgKCFtX3BEZXZpY2VEcml2ZXItPlNldENsaXBfUGF0aFN0cm9rZShwUGF0aERhdGEsIHBPYmplY3QyRGV2aWNlLCBwR3JhcGhTdGF0ZSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBVcGRhdGVDbGlwQm94KCk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9SZW5kZXJEZXZpY2U6OlNldENsaXBfUmVjdChjb25zdCBGWF9SRUNUKiBwUmVjdCkNCit7DQorICAgIENGWF9QYXRoRGF0YSBwYXRoOw0KKyAgICBwYXRoLkFwcGVuZFJlY3QoKEZYX0ZMT0FUKShwUmVjdC0+bGVmdCksIChGWF9GTE9BVCkocFJlY3QtPmJvdHRvbSksIChGWF9GTE9BVCkocFJlY3QtPnJpZ2h0KSwgKEZYX0ZMT0FUKShwUmVjdC0+dG9wKSk7DQorICAgIGlmICghU2V0Q2xpcF9QYXRoRmlsbCgmcGF0aCwgTlVMTCwgRlhGSUxMX1dJTkRJTkcpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgVXBkYXRlQ2xpcEJveCgpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDRlhfUmVuZGVyRGV2aWNlOjpVcGRhdGVDbGlwQm94KCkNCit7DQorICAgIGlmIChtX3BEZXZpY2VEcml2ZXItPkdldENsaXBCb3goJm1fQ2xpcEJveCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX0NsaXBCb3gubGVmdCA9IDA7DQorICAgIG1fQ2xpcEJveC50b3AgPSAwOw0KKyAgICBtX0NsaXBCb3gucmlnaHQgPSBtX1dpZHRoOw0KKyAgICBtX0NsaXBCb3guYm90dG9tID0gbV9IZWlnaHQ7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1JlbmRlckRldmljZTo6RHJhd1BhdGgoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBmaWxsX2NvbG9yLCBGWF9EV09SRCBzdHJva2VfY29sb3IsIGludCBmaWxsX21vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpDQorew0KKyAgICBGWF9CWVRFIGZpbGxfYWxwaGEsIHN0cm9rZV9hbHBoYTsNCisgICAgaWYgKEZYR0VURkxBR19DT0xPUlRZUEUoYWxwaGFfZmxhZykpIHsNCisgICAgICAgIGZpbGxfYWxwaGEgPSBGWEdFVEZMQUdfQUxQSEFfRklMTChhbHBoYV9mbGFnKTsNCisgICAgICAgIHN0cm9rZV9hbHBoYSA9IEZYR0VURkxBR19BTFBIQV9TVFJPS0UoYWxwaGFfZmxhZyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmaWxsX2FscGhhID0gRlhBUkdCX0EoZmlsbF9jb2xvcik7DQorICAgICAgICBzdHJva2VfYWxwaGEgPSBGWEFSR0JfQShzdHJva2VfY29sb3IpOw0KKyAgICB9DQorICAgIGlmICgoZmlsbF9tb2RlICYgMykgPT0gMCkgew0KKyAgICAgICAgZmlsbF9hbHBoYSA9IDA7DQorICAgIH0NCisgICAgaWYgKHBHcmFwaFN0YXRlID09IE5VTEwpIHsNCisgICAgICAgIHN0cm9rZV9hbHBoYSA9IDA7DQorICAgIH0NCisgICAgaWYgKHN0cm9rZV9hbHBoYSA9PSAwICYmIHBQYXRoRGF0YS0+R2V0UG9pbnRDb3VudCgpID09IDIpIHsNCisgICAgICAgIEZYX1BBVEhQT0lOVCogcFBvaW50cyA9IHBQYXRoRGF0YS0+R2V0UG9pbnRzKCk7DQorICAgICAgICBGWF9GTE9BVCB4MSwgeDIsIHkxLCB5MjsNCisgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgICAgIHBPYmplY3QyRGV2aWNlLT5UcmFuc2Zvcm0ocFBvaW50c1swXS5tX1BvaW50WCwgcFBvaW50c1swXS5tX1BvaW50WSwgeDEsIHkxKTsNCisgICAgICAgICAgICBwT2JqZWN0MkRldmljZS0+VHJhbnNmb3JtKHBQb2ludHNbMV0ubV9Qb2ludFgsIHBQb2ludHNbMV0ubV9Qb2ludFksIHgyLCB5Mik7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHgxID0gcFBvaW50c1swXS5tX1BvaW50WDsNCisgICAgICAgICAgICB5MSA9IHBQb2ludHNbMF0ubV9Qb2ludFk7DQorICAgICAgICAgICAgeDIgPSBwUG9pbnRzWzFdLm1fUG9pbnRYOw0KKyAgICAgICAgICAgIHkyID0gcFBvaW50c1sxXS5tX1BvaW50WTsNCisgICAgICAgIH0NCisgICAgICAgIERyYXdDb3NtZXRpY0xpbmUoeDEsIHkxLCB4MiwgeTIsIGZpbGxfY29sb3IsIGZpbGxfbW9kZSwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSwgYmxlbmRfdHlwZSk7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBpZiAoKHBQYXRoRGF0YS0+R2V0UG9pbnRDb3VudCgpID09IDUgfHwgcFBhdGhEYXRhLT5HZXRQb2ludENvdW50KCkgPT0gNCkgJiYgc3Ryb2tlX2FscGhhID09IDApIHsNCisgICAgICAgIENGWF9GbG9hdFJlY3QgcmVjdF9mOw0KKyAgICAgICAgaWYgKCEoZmlsbF9tb2RlICYgRlhGSUxMX1JFQ1RfQUEpICYmIHBQYXRoRGF0YS0+SXNSZWN0KHBPYmplY3QyRGV2aWNlLCAmcmVjdF9mKSkgew0KKyAgICAgICAgICAgIEZYX1JFQ1QgcmVjdF9pID0gcmVjdF9mLkdldE91dHRlclJlY3QoKTsNCisgICAgICAgICAgICBpbnQgd2lkdGggPSAoaW50KUZYU1lTX2NlaWwocmVjdF9mLnJpZ2h0IC0gcmVjdF9mLmxlZnQpOw0KKyAgICAgICAgICAgIGlmICh3aWR0aCA8IDEpIHsNCisgICAgICAgICAgICAgICAgd2lkdGggPSAxOw0KKyAgICAgICAgICAgICAgICBpZiAocmVjdF9pLmxlZnQgPT0gcmVjdF9pLnJpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICByZWN0X2kucmlnaHQgKys7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaW50IGhlaWdodCA9IChpbnQpRlhTWVNfY2VpbChyZWN0X2YudG9wIC0gcmVjdF9mLmJvdHRvbSk7DQorICAgICAgICAgICAgaWYgKGhlaWdodCA8IDEpIHsNCisgICAgICAgICAgICAgICAgaGVpZ2h0ID0gMTsNCisgICAgICAgICAgICAgICAgaWYgKHJlY3RfaS5ib3R0b20gPT0gcmVjdF9pLnRvcCkgew0KKyAgICAgICAgICAgICAgICAgICAgcmVjdF9pLmJvdHRvbSArKzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAocmVjdF9pLldpZHRoKCkgPj0gd2lkdGggKyAxKSB7DQorICAgICAgICAgICAgICAgIGlmIChyZWN0X2YubGVmdCAtIChGWF9GTE9BVCkocmVjdF9pLmxlZnQpID4gKEZYX0ZMT0FUKShyZWN0X2kucmlnaHQpIC0gcmVjdF9mLnJpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICByZWN0X2kubGVmdCArKzsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHJlY3RfaS5yaWdodCAtLTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAocmVjdF9pLkhlaWdodCgpID49IGhlaWdodCArIDEpIHsNCisgICAgICAgICAgICAgICAgaWYgKHJlY3RfZi50b3AgLSAoRlhfRkxPQVQpKHJlY3RfaS50b3ApID4gKEZYX0ZMT0FUKShyZWN0X2kuYm90dG9tKSAtIHJlY3RfZi5ib3R0b20pIHsNCisgICAgICAgICAgICAgICAgICAgIHJlY3RfaS50b3AgKys7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICByZWN0X2kuYm90dG9tIC0tOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChGaWxsUmVjdCgmcmVjdF9pLCBmaWxsX2NvbG9yLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtLCBibGVuZF90eXBlKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYoKGZpbGxfbW9kZSAmIDMpICYmIHN0cm9rZV9hbHBoYSA9PSAwICYmICEoZmlsbF9tb2RlICYgRlhfRklMTF9TVFJPS0UpICYmICEoZmlsbF9tb2RlICYgRlhfRklMTF9URVhUX01PREUpKSB7DQorICAgICAgICBDRlhfUGF0aERhdGEgbmV3UGF0aDsNCisgICAgICAgIEZYX0JPT0wgYlRoaW4gPSBGQUxTRTsNCisgICAgICAgIGlmIChwUGF0aERhdGEtPkdldFplcm9BcmVhUGF0aChuZXdQYXRoLCAoQ0ZYX01hdHJpeCopcE9iamVjdDJEZXZpY2UsIGJUaGluLCBtX3BEZXZpY2VEcml2ZXItPkdldERyaXZlclR5cGUoKSkpIHsNCisgICAgICAgICAgICBDRlhfR3JhcGhTdGF0ZURhdGEgZ3JhcGhTdGF0ZTsNCisgICAgICAgICAgICBncmFwaFN0YXRlLm1fTGluZVdpZHRoID0gMC4wZjsNCisgICAgICAgICAgICBGWF9EV09SRCBzdHJva2Vjb2xvciA9IGZpbGxfY29sb3I7DQorICAgICAgICAgICAgaWYgKGJUaGluKSB7DQorICAgICAgICAgICAgICAgIGlmIChGWEdFVEZMQUdfQ09MT1JUWVBFKGFscGhhX2ZsYWcpKSB7DQorICAgICAgICAgICAgICAgICAgICBGWFNFVEZMQUdfQUxQSEFfU1RST0tFKGFscGhhX2ZsYWcsIGZpbGxfYWxwaGEgPj4gMik7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBzdHJva2Vjb2xvciA9ICgoKGZpbGxfYWxwaGEgPj4gMikgPDwgMjQpIHwgKHN0cm9rZWNvbG9yICYgMHgwMGZmZmZmZikpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXggPSBOVUxMOw0KKyAgICAgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSAmJiAhcE9iamVjdDJEZXZpY2UtPklzSWRlbnRpdHkoKSkgew0KKyAgICAgICAgICAgICAgICBwTWF0cml4ID0gKENGWF9BZmZpbmVNYXRyaXgqKXBPYmplY3QyRGV2aWNlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpbnQgc21vb3RoX3BhdGggPSBGWF9aRVJPQVJFQV9GSUxMOw0KKyAgICAgICAgICAgIGlmIChmaWxsX21vZGUgJiBGWEZJTExfTk9QQVRIU01PT1RIKSB7DQorICAgICAgICAgICAgICAgIHNtb290aF9wYXRoIHw9IEZYRklMTF9OT1BBVEhTTU9PVEg7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fcERldmljZURyaXZlci0+RHJhd1BhdGgoJm5ld1BhdGgsIHBNYXRyaXgsICZncmFwaFN0YXRlLCAwLCBzdHJva2Vjb2xvciwgc21vb3RoX3BhdGgsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0sIGJsZW5kX3R5cGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICgoZmlsbF9tb2RlICYgMykgJiYgZmlsbF9hbHBoYSAmJiBzdHJva2VfYWxwaGEgPCAweGZmICYmIChmaWxsX21vZGUgJiBGWF9GSUxMX1NUUk9LRSkpIHsNCisgICAgICAgIGlmICghKG1fUmVuZGVyQ2FwcyAmIEZYUkNfR0VUX0JJVFMpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0Zsb2F0UmVjdCBiYm94Ow0KKyAgICAgICAgaWYgKHBHcmFwaFN0YXRlKSB7DQorICAgICAgICAgICAgYmJveCA9IHBQYXRoRGF0YS0+R2V0Qm91bmRpbmdCb3gocEdyYXBoU3RhdGUtPm1fTGluZVdpZHRoLCBwR3JhcGhTdGF0ZS0+bV9NaXRlckxpbWl0KTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYmJveCA9IHBQYXRoRGF0YS0+R2V0Qm91bmRpbmdCb3goKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgICAgIGJib3guVHJhbnNmb3JtKHBPYmplY3QyRGV2aWNlKTsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9NYXRyaXggY3RtID0gR2V0Q1RNKCk7DQorICAgICAgICBGWF9GTE9BVCBmU2NhbGVYID0gRlhTWVNfZmFicyhjdG0uYSk7DQorICAgICAgICBGWF9GTE9BVCBmU2NhbGVZID0gRlhTWVNfZmFicyhjdG0uZCk7DQorICAgICAgICBGWF9SRUNUIHJlY3QgPSBiYm94LkdldE91dHRlclJlY3QoKTsNCisgICAgICAgIENGWF9ESUJpdG1hcCBiaXRtYXAsIEJhY2tkcm9wOw0KKyAgICAgICAgaWYgKCFDcmVhdGVDb21wYXRpYmxlQml0bWFwKCZiaXRtYXAsIEZYU1lTX3JvdW5kKHJlY3QuV2lkdGgoKSAqIGZTY2FsZVgpLCBGWFNZU19yb3VuZChyZWN0LkhlaWdodCgpICogZlNjYWxlWSkpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGJpdG1hcC5IYXNBbHBoYSgpKSB7DQorICAgICAgICAgICAgYml0bWFwLkNsZWFyKDApOw0KKyAgICAgICAgICAgIEJhY2tkcm9wLkNvcHkoJmJpdG1hcCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmICghbV9wRGV2aWNlRHJpdmVyLT5HZXRESUJpdHMoJmJpdG1hcCwgcmVjdC5sZWZ0LCByZWN0LnRvcCwgTlVMTCkpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBCYWNrZHJvcC5Db3B5KCZiaXRtYXApOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0Z4Z2VEZXZpY2UgYml0bWFwX2RldmljZTsNCisgICAgICAgIGJpdG1hcF9kZXZpY2UuQXR0YWNoKCZiaXRtYXAsIDAsIEZBTFNFLCAmQmFja2Ryb3AsIFRSVUUpOw0KKyAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7DQorICAgICAgICBpZiAocE9iamVjdDJEZXZpY2UpIHsNCisgICAgICAgICAgICBtYXRyaXggPSAqcE9iamVjdDJEZXZpY2U7DQorICAgICAgICB9DQorICAgICAgICBtYXRyaXguVHJhbnNsYXRlSSgtcmVjdC5sZWZ0LCAtcmVjdC50b3ApOw0KKyAgICAgICAgbWF0cml4LkNvbmNhdChmU2NhbGVYLCAwLCAwLCBmU2NhbGVZLCAwLCAwKTsNCisgICAgICAgIGlmICghYml0bWFwX2RldmljZS5HZXREZXZpY2VEcml2ZXIoKS0+RHJhd1BhdGgocFBhdGhEYXRhLCAmbWF0cml4LCBwR3JhcGhTdGF0ZSwgZmlsbF9jb2xvciwgc3Ryb2tlX2NvbG9yLCBmaWxsX21vZGUsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0sIGJsZW5kX3R5cGUpKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfUkVDVCBzcmNfcmVjdCgwLCAwLCBGWFNZU19yb3VuZChyZWN0LldpZHRoKCkgKiBmU2NhbGVYKSwgRlhTWVNfcm91bmQocmVjdC5IZWlnaHQoKSAqIGZTY2FsZVkpKTsNCisgICAgICAgIHJldHVybiBtX3BEZXZpY2VEcml2ZXItPlNldERJQml0cygmYml0bWFwLCAwLCAmc3JjX3JlY3QsIHJlY3QubGVmdCwgcmVjdC50b3AsIEZYRElCX0JMRU5EX05PUk1BTCk7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcERldmljZURyaXZlci0+RHJhd1BhdGgocFBhdGhEYXRhLCBwT2JqZWN0MkRldmljZSwgcEdyYXBoU3RhdGUsIGZpbGxfY29sb3IsIHN0cm9rZV9jb2xvciwgZmlsbF9tb2RlLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtLCBibGVuZF90eXBlKTsNCit9DQorRlhfQk9PTCBDRlhfUmVuZGVyRGV2aWNlOjpTZXRQaXhlbChpbnQgeCwgaW50IHksIEZYX0RXT1JEIGNvbG9yLCBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIGlmIChtX3BEZXZpY2VEcml2ZXItPlNldFBpeGVsKHgsIHksIGNvbG9yLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgRlhfUkVDVCByZWN0KHgsIHksIHggKyAxLCB5ICsgMSk7DQorICAgIHJldHVybiBGaWxsUmVjdCgmcmVjdCwgY29sb3IsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pOw0KK30NCitGWF9CT09MIENGWF9SZW5kZXJEZXZpY2U6OkZpbGxSZWN0KGNvbnN0IEZYX1JFQ1QqIHBSZWN0LCBGWF9EV09SRCBmaWxsX2NvbG9yLCBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpDQorew0KKyAgICBpZiAobV9wRGV2aWNlRHJpdmVyLT5GaWxsUmVjdChwUmVjdCwgZmlsbF9jb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSwgYmxlbmRfdHlwZSkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmICghKG1fUmVuZGVyQ2FwcyAmIEZYUkNfR0VUX0JJVFMpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQ0ZYX0RJQml0bWFwIGJpdG1hcDsNCisgICAgaWYgKCFDcmVhdGVDb21wYXRpYmxlQml0bWFwKCZiaXRtYXAsIHBSZWN0LT5XaWR0aCgpLCBwUmVjdC0+SGVpZ2h0KCkpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKCFtX3BEZXZpY2VEcml2ZXItPkdldERJQml0cygmYml0bWFwLCBwUmVjdC0+bGVmdCwgcFJlY3QtPnRvcCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAoIWJpdG1hcC5Db21wb3NpdGVSZWN0KDAsIDAsIHBSZWN0LT5XaWR0aCgpLCBwUmVjdC0+SGVpZ2h0KCksIGZpbGxfY29sb3IsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfUkVDVCBzcmNfcmVjdCgwLCAwLCBwUmVjdC0+V2lkdGgoKSwgcFJlY3QtPkhlaWdodCgpKTsNCisgICAgbV9wRGV2aWNlRHJpdmVyLT5TZXRESUJpdHMoJmJpdG1hcCwgMCwgJnNyY19yZWN0LCBwUmVjdC0+bGVmdCwgcFJlY3QtPnRvcCwgRlhESUJfQkxFTkRfTk9STUFMKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1JlbmRlckRldmljZTo6RHJhd0Nvc21ldGljTGluZShGWF9GTE9BVCB4MSwgRlhfRkxPQVQgeTEsIEZYX0ZMT0FUIHgyLCBGWF9GTE9BVCB5MiwgRlhfRFdPUkQgY29sb3IsDQorICAgICAgICBpbnQgZmlsbF9tb2RlLCBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpDQorew0KKyAgICBpZiAoKChtX1JlbmRlckNhcHMgJiBGWFJDX0FMUEhBX1BBVEgpICYmDQorICAgICAgICAgICAgKEZYR0VURkxBR19DT0xPUlRZUEUoYWxwaGFfZmxhZykgJiYgRlhHRVRGTEFHX0FMUEhBX0ZJTEwoYWxwaGFfZmxhZykgPT0gMHhmZikpIHx8DQorICAgICAgICAgICAgY29sb3IgPj0gMHhmZjAwMDAwMCkNCisgICAgICAgIGlmIChtX3BEZXZpY2VEcml2ZXItPkRyYXdDb3NtZXRpY0xpbmUoeDEsIHkxLCB4MiwgeTIsIGNvbG9yLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtLCBibGVuZF90eXBlKSkgew0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICBDRlhfR3JhcGhTdGF0ZURhdGEgZ3JhcGhfc3RhdGU7DQorICAgIENGWF9QYXRoRGF0YSBwYXRoOw0KKyAgICBwYXRoLlNldFBvaW50Q291bnQoMik7DQorICAgIHBhdGguU2V0UG9pbnQoMCwgeDEsIHkxLCBGWFBUX01PVkVUTyk7DQorICAgIHBhdGguU2V0UG9pbnQoMSwgeDIsIHkyLCBGWFBUX0xJTkVUTyk7DQorICAgIHJldHVybiBtX3BEZXZpY2VEcml2ZXItPkRyYXdQYXRoKCZwYXRoLCBOVUxMLCAmZ3JhcGhfc3RhdGUsIDAsIGNvbG9yLCBmaWxsX21vZGUsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0sIGJsZW5kX3R5cGUpOw0KK30NCitGWF9CT09MIENGWF9SZW5kZXJEZXZpY2U6OkdldERJQml0cyhDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBsZWZ0LCBpbnQgdG9wLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgaWYgKCEobV9SZW5kZXJDYXBzICYgRlhSQ19HRVRfQklUUykpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGV2aWNlRHJpdmVyLT5HZXRESUJpdHMocEJpdG1hcCwgbGVmdCwgdG9wLCBwSWNjVHJhbnNmb3JtKTsNCit9DQorQ0ZYX0RJQml0bWFwKiBDRlhfUmVuZGVyRGV2aWNlOjpHZXRCYWNrRHJvcCgpDQorew0KKyAgICByZXR1cm4gbV9wRGV2aWNlRHJpdmVyLT5HZXRCYWNrRHJvcCgpOw0KK30NCitGWF9CT09MIENGWF9SZW5kZXJEZXZpY2U6OlNldERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IGJsZW5kX21vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIEFTU0VSVCghcEJpdG1hcC0+SXNBbHBoYU1hc2soKSk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggY3RtID0gR2V0Q1RNKCk7DQorICAgIEZYX0ZMT0FUIGZTY2FsZVggPSBGWFNZU19mYWJzKGN0bS5hKTsNCisgICAgRlhfRkxPQVQgZlNjYWxlWSA9IEZYU1lTX2ZhYnMoY3RtLmQpOw0KKyAgICBGWF9SRUNUIGRlc3RfcmVjdChsZWZ0LCB0b3AsIEZYU1lTX3JvdW5kKGxlZnQgKyBwQml0bWFwLT5HZXRXaWR0aCgpIC8gZlNjYWxlWCksIEZYU1lTX3JvdW5kKHRvcCArIHBCaXRtYXAtPkdldEhlaWdodCgpIC8gZlNjYWxlWSkpOw0KKyAgICBkZXN0X3JlY3QuSW50ZXJzZWN0KG1fQ2xpcEJveCk7DQorICAgIGlmIChkZXN0X3JlY3QuSXNFbXB0eSgpKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBGWF9SRUNUIHNyY19yZWN0KGRlc3RfcmVjdC5sZWZ0IC0gbGVmdCwgZGVzdF9yZWN0LnRvcCAtIHRvcCwNCisgICAgICAgICAgICAgICAgICAgICBkZXN0X3JlY3QubGVmdCAtIGxlZnQgKyBkZXN0X3JlY3QuV2lkdGgoKSwgZGVzdF9yZWN0LnRvcCAtIHRvcCArIGRlc3RfcmVjdC5IZWlnaHQoKSk7DQorICAgIHNyY19yZWN0LmxlZnQgPSBGWFNZU19yb3VuZChzcmNfcmVjdC5sZWZ0ICogZlNjYWxlWCk7DQorICAgIHNyY19yZWN0LnRvcCA9IEZYU1lTX3JvdW5kKHNyY19yZWN0LnRvcCAqIGZTY2FsZVkpOw0KKyAgICBzcmNfcmVjdC5yaWdodCA9IEZYU1lTX3JvdW5kKHNyY19yZWN0LnJpZ2h0ICogZlNjYWxlWCk7DQorICAgIHNyY19yZWN0LmJvdHRvbSA9IEZYU1lTX3JvdW5kKHNyY19yZWN0LmJvdHRvbSAqIGZTY2FsZVkpOw0KKyAgICBpZiAoKGJsZW5kX21vZGUgIT0gRlhESUJfQkxFTkRfTk9STUFMICYmICEobV9SZW5kZXJDYXBzICYgRlhSQ19CTEVORF9NT0RFKSkgfHwNCisgICAgICAgICAgICAocEJpdG1hcC0+SGFzQWxwaGEoKSAmJiAhKG1fUmVuZGVyQ2FwcyAmIEZYUkNfQUxQSEFfSU1BR0UpKSkgew0KKyAgICAgICAgaWYgKCEobV9SZW5kZXJDYXBzICYgRlhSQ19HRVRfQklUUykpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpbnQgYmdfcGl4ZWxfd2lkdGggPSBGWFNZU19yb3VuZChkZXN0X3JlY3QuV2lkdGgoKSAqIGZTY2FsZVgpOw0KKyAgICAgICAgaW50IGJnX3BpeGVsX2hlaWdodCA9IEZYU1lTX3JvdW5kKGRlc3RfcmVjdC5IZWlnaHQoKSAqIGZTY2FsZVkpOw0KKyAgICAgICAgQ0ZYX0RJQml0bWFwIGJhY2tncm91bmQ7DQorICAgICAgICBpZiAoIWJhY2tncm91bmQuQ3JlYXRlKGJnX3BpeGVsX3dpZHRoLCBiZ19waXhlbF9oZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtX1JlbmRlckNhcHMgJiBGWFJDX0NNWUtfT1VUUFVUKSA/IEZYRElCX0NteWsgOiBGWERJQl9SZ2IzMikpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIW1fcERldmljZURyaXZlci0+R2V0RElCaXRzKCZiYWNrZ3JvdW5kLCBkZXN0X3JlY3QubGVmdCwgZGVzdF9yZWN0LnRvcCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIWJhY2tncm91bmQuQ29tcG9zaXRlQml0bWFwKDAsIDAsIGJnX3BpeGVsX3dpZHRoLCBiZ19waXhlbF9oZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCaXRtYXAsIHNyY19yZWN0LmxlZnQsIHNyY19yZWN0LnRvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRfbW9kZSwgTlVMTCwgRkFMU0UsIHBJY2NUcmFuc2Zvcm0pKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfUkVDVCBzcmNfcmVjdCgwLCAwLCBiZ19waXhlbF93aWR0aCwgYmdfcGl4ZWxfaGVpZ2h0KTsNCisgICAgICAgIHJldHVybiBtX3BEZXZpY2VEcml2ZXItPlNldERJQml0cygmYmFja2dyb3VuZCwgMCwgJnNyY19yZWN0LCBkZXN0X3JlY3QubGVmdCwgZGVzdF9yZWN0LnRvcCwgRlhESUJfQkxFTkRfTk9STUFMKTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9wRGV2aWNlRHJpdmVyLT5TZXRESUJpdHMocEJpdG1hcCwgMCwgJnNyY19yZWN0LCBkZXN0X3JlY3QubGVmdCwgZGVzdF9yZWN0LnRvcCwgYmxlbmRfbW9kZSwgMCwgcEljY1RyYW5zZm9ybSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1JlbmRlckRldmljZTo6U3RyZXRjaERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBpbnQgbGVmdCwgaW50IHRvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF9tb2RlKQ0KK3sNCisgICAgRlhfUkVDVCBkZXN0X3JlY3QobGVmdCwgdG9wLCBsZWZ0ICsgZGVzdF93aWR0aCwgdG9wICsgZGVzdF9oZWlnaHQpOw0KKyAgICBGWF9SRUNUIGNsaXBfYm94ID0gbV9DbGlwQm94Ow0KKyAgICBjbGlwX2JveC5JbnRlcnNlY3QoZGVzdF9yZWN0KTsNCisgICAgaWYgKGNsaXBfYm94LklzRW1wdHkoKSkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIG1fcERldmljZURyaXZlci0+U3RyZXRjaERJQml0cyhwQml0bWFwLCAwLCBsZWZ0LCB0b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCAmY2xpcF9ib3gsIGZsYWdzLCAwLCBwSWNjVHJhbnNmb3JtLCBibGVuZF9tb2RlKTsNCit9DQorRlhfQk9PTCBDRlhfUmVuZGVyRGV2aWNlOjpTZXRCaXRNYXNrKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIGludCBsZWZ0LCBpbnQgdG9wLCBGWF9EV09SRCBhcmdiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIEZYX1JFQ1Qgc3JjX3JlY3QoMCwgMCwgcEJpdG1hcC0+R2V0V2lkdGgoKSwgcEJpdG1hcC0+R2V0SGVpZ2h0KCkpOw0KKyAgICByZXR1cm4gbV9wRGV2aWNlRHJpdmVyLT5TZXRESUJpdHMocEJpdG1hcCwgYXJnYiwgJnNyY19yZWN0LCBsZWZ0LCB0b3AsIEZYRElCX0JMRU5EX05PUk1BTCwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1JlbmRlckRldmljZTo6U3RyZXRjaEJpdE1hc2soY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgaW50IGxlZnQsIGludCB0b3AsDQorICAgICAgICBpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0LCBGWF9EV09SRCBhcmdiLCBGWF9EV09SRCBmbGFncywNCisgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgRlhfUkVDVCBkZXN0X3JlY3QobGVmdCwgdG9wLCBsZWZ0ICsgZGVzdF93aWR0aCwgdG9wICsgZGVzdF9oZWlnaHQpOw0KKyAgICBGWF9SRUNUIGNsaXBfYm94ID0gbV9DbGlwQm94Ow0KKyAgICBjbGlwX2JveC5JbnRlcnNlY3QoZGVzdF9yZWN0KTsNCisgICAgcmV0dXJuIG1fcERldmljZURyaXZlci0+U3RyZXRjaERJQml0cyhwQml0bWFwLCBhcmdiLCBsZWZ0LCB0b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCAmY2xpcF9ib3gsIGZsYWdzLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKTsNCit9DQorRlhfQk9PTCBDRlhfUmVuZGVyRGV2aWNlOjpTdGFydERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBpbnQgYml0bWFwX2FscGhhLCBGWF9EV09SRCBhcmdiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgZmxhZ3MsIEZYX0xQVk9JRCYgaGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF9tb2RlKQ0KK3sNCisgICAgcmV0dXJuIG1fcERldmljZURyaXZlci0+U3RhcnRESUJpdHMocEJpdG1hcCwgYml0bWFwX2FscGhhLCBhcmdiLCBwTWF0cml4LCBmbGFncywgaGFuZGxlLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtLCBibGVuZF9tb2RlKTsNCit9DQorRlhfQk9PTCBDRlhfUmVuZGVyRGV2aWNlOjpDb250aW51ZURJQml0cyhGWF9MUFZPSUQgaGFuZGxlLCBJRlhfUGF1c2UqIHBQYXVzZSkNCit7DQorICAgIHJldHVybiBtX3BEZXZpY2VEcml2ZXItPkNvbnRpbnVlRElCaXRzKGhhbmRsZSwgcFBhdXNlKTsNCit9DQordm9pZCBDRlhfUmVuZGVyRGV2aWNlOjpDYW5jZWxESUJpdHMoRlhfTFBWT0lEIGhhbmRsZSkNCit7DQorICAgIG1fcERldmljZURyaXZlci0+Q2FuY2VsRElCaXRzKGhhbmRsZSk7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZ2UvZnhfZ2VfZm9udC5jcHAgYi9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlX2ZvbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNDdkMmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlX2ZvbnQuY3BwCkBAIC0wLDAgKzEsNDU4IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2dlLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9mcmVldHlwZS5oIg0KKyNpbmNsdWRlICJ0ZXh0X2ludC5oIg0KKyNkZWZpbmUgRU1fQURKVVNUKGVtLCBhKSAoZW0gPT0gMD8oYSk6IChhKSoxMDAwL2VtKQ0KK2V4dGVybiB2b2lkIF9GUERGQVBJX0dldEludGVybmFsRm9udERhdGEoaW50IGlkMSwgRlhfTFBDQllURSYgZGF0YSwgRlhfRFdPUkQmIHNpemUpOw0KK0NGWF9Gb250OjpDRlhfRm9udCgpDQorew0KKyAgICBtX3BTdWJzdEZvbnQgPSBOVUxMOw0KKyAgICBtX0ZhY2UgPSBOVUxMOw0KKyAgICBtX2JFbWJlZGRlZCA9IEZBTFNFOw0KKyAgICBtX2JWZXJ0aWNhbCA9IEZBTFNFOw0KKyAgICBtX3BGb250RGF0YSA9IE5VTEw7DQorICAgIG1fcEZvbnREYXRhQWxsb2NhdGlvbiA9IE5VTEw7DQorICAgIG1fZHdTaXplID0gMDsNCisgICAgbV9wT3duZWRTdHJlYW0gPSBOVUxMOw0KKyAgICBtX3BHc3ViRGF0YSA9IE5VTEw7DQorICAgIG1fcFBsYXRmb3JtRm9udCA9IE5VTEw7DQorICAgIG1fcFBsYXRmb3JtRm9udENvbGxlY3Rpb24gPSBOVUxMOw0KKyAgICBtX3BEd0ZvbnQgPSBOVUxMOw0KKyAgICBtX2hIYW5kbGUgPSBOVUxMOw0KKyAgICBtX2JEd0xvYWRlZCA9IEZBTFNFOw0KK30NCitDRlhfRm9udDo6fkNGWF9Gb250KCkNCit7DQorICAgIGlmIChtX3BTdWJzdEZvbnQpIHsNCisgICAgICAgIGRlbGV0ZSBtX3BTdWJzdEZvbnQ7DQorICAgICAgICBtX3BTdWJzdEZvbnQgPSBOVUxMOw0KKyAgICB9DQorI2lmZGVmIEZPWElUX0NIUk9NRV9CVUlMRA0KKyAgICBpZiAobV9wRm9udERhdGFBbGxvY2F0aW9uKSB7DQorICAgICAgICBGWF9GcmVlKG1fcEZvbnREYXRhQWxsb2NhdGlvbik7DQorICAgICAgICBtX3BGb250RGF0YUFsbG9jYXRpb24gPSBOVUxMOw0KKyAgICB9DQorI2VuZGlmDQorICAgIGlmIChtX0ZhY2UpIHsNCisjaWZkZWYgRk9YSVRfQ0hST01FX0JVSUxEDQorICAgICAgICBGWEZUX0xpYnJhcnkgbGlicmFyeSA9IEZYRlRfR2V0X0ZhY2VfRnJlZVR5cGUobV9GYWNlKTsNCisgICAgICAgIGlmIChGWEZUX0dldF9GYWNlX0V4dGVybmFsX1N0cmVhbShtX0ZhY2UpKSB7DQorICAgICAgICAgICAgRlhGVF9DbGVhcl9GYWNlX0V4dGVybmFsX1N0cmVhbShtX0ZhY2UpOw0KKyAgICAgICAgfQ0KKyNlbmRpZg0KKyAgICAgICAgaWYobV9iRW1iZWRkZWQpIHsNCisgICAgICAgICAgICBEZWxldGVGYWNlKCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIENGWF9HRU1vZHVsZTo6R2V0KCktPkdldEZvbnRNZ3IoKS0+UmVsZWFzZUZhY2UobV9GYWNlKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wT3duZWRTdHJlYW0pIHsNCisgICAgICAgIEZYX0ZyZWUobV9wT3duZWRTdHJlYW0pOw0KKyAgICAgICAgbV9wT3duZWRTdHJlYW0gPSBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BHc3ViRGF0YSkgew0KKyAgICAgICAgRlhfRnJlZShtX3BHc3ViRGF0YSk7DQorICAgICAgICBtX3BHc3ViRGF0YSA9IE5VTEw7DQorICAgIH0NCisjaWYgKF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXyAmJiAoIWRlZmluZWQoX0ZQREZBUElfTUlOSV8pKSkNCisgICAgUmVsZWFzZVBsYXRmb3JtUmVzb3VyY2UoKTsNCisjZW5kaWYNCit9DQordm9pZCBDRlhfRm9udDo6RGVsZXRlRmFjZSgpDQorew0KKyAgICBGWEZUX0RvbmVfRmFjZShtX0ZhY2UpOw0KKyAgICBtX0ZhY2UgPSBOVUxMOw0KK30NCitGWF9CT09MIENGWF9Gb250OjpMb2FkU3Vic3QoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIGZhY2VfbmFtZSwgRlhfQk9PTCBiVHJ1ZVR5cGUsIEZYX0RXT1JEIGZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2VpZ2h0LCBpbnQgaXRhbGljX2FuZ2xlLCBpbnQgQ2hhcnNldENQLCBGWF9CT09MIGJWZXJ0aWNhbCkNCit7DQorICAgIG1fYkVtYmVkZGVkID0gRkFMU0U7DQorICAgIG1fYlZlcnRpY2FsID0gYlZlcnRpY2FsOw0KKyAgICBtX3BTdWJzdEZvbnQgPSBGWF9ORVcgQ0ZYX1N1YnN0Rm9udDsNCisgICAgaWYgKCFtX3BTdWJzdEZvbnQpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX0ZhY2UgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRGb250TWdyKCktPkZpbmRTdWJzdEZvbnQoZmFjZV9uYW1lLCBiVHJ1ZVR5cGUsIGZsYWdzLCB3ZWlnaHQsIGl0YWxpY19hbmdsZSwNCisgICAgICAgICAgICAgQ2hhcnNldENQLCBtX3BTdWJzdEZvbnQpOw0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgaWYobV9wU3Vic3RGb250LT5tX0V4dEhhbmRsZSkgew0KKyAgICAgICAgbV9wUGxhdGZvcm1Gb250ID0gbV9wU3Vic3RGb250LT5tX0V4dEhhbmRsZTsNCisgICAgICAgIG1fcFN1YnN0Rm9udC0+bV9FeHRIYW5kbGUgPSBOVUxMOw0KKyAgICB9DQorI2VuZGlmDQorICAgIGlmIChtX0ZhY2UpIHsNCisgICAgICAgIG1fcEZvbnREYXRhID0gRlhGVF9HZXRfRmFjZV9TdHJlYW1fQmFzZShtX0ZhY2UpOw0KKyAgICAgICAgbV9kd1NpemUgPSBGWEZUX0dldF9GYWNlX1N0cmVhbV9TaXplKG1fRmFjZSk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK2V4dGVybiAiQyIgew0KKyAgICB1bnNpZ25lZCBsb25nIF9GVFN0cmVhbVJlYWQoRlhGVF9TdHJlYW0gc3RyZWFtLCB1bnNpZ25lZCBsb25nIG9mZnNldCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbG9uZyBjb3VudCkNCisgICAgew0KKyAgICAgICAgaWYgKGNvdW50ID09IDApIHsNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgICAgIElGWF9GaWxlUmVhZCogcEZpbGUgPSAoSUZYX0ZpbGVSZWFkKilzdHJlYW0tPmRlc2NyaXB0b3IucG9pbnRlcjsNCisgICAgICAgIGludCByZXMgPSBwRmlsZS0+UmVhZEJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBjb3VudCk7DQorICAgICAgICBpZiAocmVzKSB7DQorICAgICAgICAgICAgcmV0dXJuIGNvdW50Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgdm9pZCBfRlRTdHJlYW1DbG9zZShGWEZUX1N0cmVhbSBzdHJlYW0pDQorICAgIHsNCisgICAgfQ0KK307DQorRlhfQk9PTCBfTG9hZEZpbGUoRlhGVF9MaWJyYXJ5IGxpYnJhcnksIEZYRlRfRmFjZSogRmFjZSwgSUZYX0ZpbGVSZWFkKiBwRmlsZSwgRlhGVF9TdHJlYW0qIHN0cmVhbSkNCit7DQorICAgIEZYRlRfU3RyZWFtIHN0cmVhbTEgPSAoRlhGVF9TdHJlYW0pRlhfQWxsb2MoRlhfQllURSwgc2l6ZW9mIChGWEZUX1N0cmVhbVJlYykpOw0KKyAgICBpZiAoIXN0cmVhbTEpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBzdHJlYW0xLT5iYXNlID0gTlVMTDsNCisgICAgc3RyZWFtMS0+c2l6ZSA9ICh1bnNpZ25lZCBsb25nKXBGaWxlLT5HZXRTaXplKCk7DQorICAgIHN0cmVhbTEtPnBvcyA9IDA7DQorICAgIHN0cmVhbTEtPmRlc2NyaXB0b3IucG9pbnRlciA9IHBGaWxlOw0KKyAgICBzdHJlYW0xLT5jbG9zZSA9IF9GVFN0cmVhbUNsb3NlOw0KKyAgICBzdHJlYW0xLT5yZWFkID0gX0ZUU3RyZWFtUmVhZDsNCisgICAgRlhGVF9PcGVuX0FyZ3MgYXJnczsNCisgICAgYXJncy5mbGFncyA9IEZUX09QRU5fU1RSRUFNOw0KKyAgICBhcmdzLnN0cmVhbSA9IHN0cmVhbTE7DQorICAgIGlmIChGWEZUX09wZW5fRmFjZShsaWJyYXJ5LCAmYXJncywgMCwgRmFjZSkpIHsNCisgICAgICAgIEZYX0ZyZWUoc3RyZWFtMSk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKHN0cmVhbSkgew0KKyAgICAgICAgKnN0cmVhbSA9IHN0cmVhbTE7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ZvbnQ6OkxvYWRGaWxlKElGWF9GaWxlUmVhZCogcEZpbGUpDQorew0KKyAgICBtX2JFbWJlZGRlZCA9IEZBTFNFOw0KKyAgICBGWEZUX0xpYnJhcnkgbGlicmFyeTsNCisgICAgaWYgKENGWF9HRU1vZHVsZTo6R2V0KCktPkdldEZvbnRNZ3IoKS0+bV9GVExpYnJhcnkgPT0gTlVMTCkgew0KKyAgICAgICAgRlhGVF9Jbml0X0ZyZWVUeXBlKCZDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRGb250TWdyKCktPm1fRlRMaWJyYXJ5KTsNCisgICAgfQ0KKyAgICBsaWJyYXJ5ID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Rm9udE1ncigpLT5tX0ZUTGlicmFyeTsNCisgICAgRlhGVF9TdHJlYW0gc3RyZWFtID0gTlVMTDsNCisgICAgaWYgKCFfTG9hZEZpbGUobGlicmFyeSwgJm1fRmFjZSwgcEZpbGUsICZzdHJlYW0pKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgbV9wT3duZWRTdHJlYW0gPSBzdHJlYW07DQorICAgIEZYRlRfU2V0X1BpeGVsX1NpemVzKG1fRmFjZSwgMCwgNjQpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQoraW50IENGWF9Gb250OjpHZXRHbHlwaFdpZHRoKEZYX0RXT1JEIGdseXBoX2luZGV4KQ0KK3sNCisgICAgaWYgKCFtX0ZhY2UpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGlmIChtX3BTdWJzdEZvbnQgJiYgKG1fcFN1YnN0Rm9udC0+bV9TdWJzdEZsYWdzICYgRlhGT05UX1NVQlNUX01NKSkgew0KKyAgICAgICAgQWRqdXN0TU1QYXJhbXMoZ2x5cGhfaW5kZXgsIDAsIDApOw0KKyAgICB9DQorICAgIGludCBlcnIgPSBGWEZUX0xvYWRfR2x5cGgobV9GYWNlLCBnbHlwaF9pbmRleCwgRlhGVF9MT0FEX05PX1NDQUxFIHwgRlhGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCk7DQorICAgIGlmIChlcnIpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGludCB3aWR0aCA9IEVNX0FESlVTVChGWEZUX0dldF9GYWNlX1VuaXRzUGVyRU0obV9GYWNlKSwgRlhGVF9HZXRfR2x5cGhfSG9yaUFkdmFuY2UobV9GYWNlKSk7DQorICAgIHJldHVybiB3aWR0aDsNCit9DQorc3RhdGljIEZYRlRfRmFjZSBGVF9Mb2FkRm9udChGWF9MUEJZVEUgcERhdGEsIGludCBzaXplKQ0KK3sNCisgICAgRlhGVF9MaWJyYXJ5IGxpYnJhcnk7DQorICAgIGlmIChDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRGb250TWdyKCktPm1fRlRMaWJyYXJ5ID09IE5VTEwpIHsNCisgICAgICAgIEZYRlRfSW5pdF9GcmVlVHlwZSgmQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Rm9udE1ncigpLT5tX0ZUTGlicmFyeSk7DQorICAgIH0NCisgICAgbGlicmFyeSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldEZvbnRNZ3IoKS0+bV9GVExpYnJhcnk7DQorICAgIEZYRlRfRmFjZSBmYWNlOw0KKyAgICBpbnQgZXJyb3IgPSBGWEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCBwRGF0YSwgc2l6ZSwgMCwgJmZhY2UpOw0KKyAgICBpZiAoZXJyb3IpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGVycm9yID0gRlhGVF9TZXRfUGl4ZWxfU2l6ZXMoZmFjZSwgNjQsIDY0KTsNCisgICAgaWYgKGVycm9yKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gZmFjZTsNCit9DQorRlhfQk9PTCBDRlhfRm9udDo6TG9hZEVtYmVkZGVkKEZYX0xQQ0JZVEUgZGF0YSwgRlhfRFdPUkQgc2l6ZSkNCit7DQorI2lmZGVmIEZPWElUX0NIUk9NRV9CVUlMRA0KKyAgICBtX3BGb250RGF0YUFsbG9jYXRpb24gPSBGWF9BbGxvYyhGWF9CWVRFLCBzaXplKTsNCisgICAgaWYgKCFtX3BGb250RGF0YUFsbG9jYXRpb24pIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1jcHkzMihtX3BGb250RGF0YUFsbG9jYXRpb24sIGRhdGEsIHNpemUpOw0KKyAgICBtX0ZhY2UgPSBGVF9Mb2FkRm9udCgoRlhfTFBCWVRFKW1fcEZvbnREYXRhQWxsb2NhdGlvbiwgc2l6ZSk7DQorICAgIG1fcEZvbnREYXRhID0gKEZYX0xQQllURSltX3BGb250RGF0YUFsbG9jYXRpb247DQorI2Vsc2UNCisgICAgbV9GYWNlID0gRlRfTG9hZEZvbnQoKEZYX0xQQllURSlkYXRhLCBzaXplKTsNCisgICAgbV9wRm9udERhdGEgPSAoRlhfTFBCWVRFKWRhdGE7DQorI2VuZGlmDQorICAgIG1fYkVtYmVkZGVkID0gVFJVRTsNCisgICAgbV9kd1NpemUgPSBzaXplOw0KKyAgICByZXR1cm4gbV9GYWNlICE9IE5VTEw7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ZvbnQ6OklzVFRGb250KCkNCit7DQorICAgIGlmIChtX0ZhY2UgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBGWEZUX0lzX0ZhY2VfVFRfT1QobV9GYWNlKSA9PSBGWEZUX0ZBQ0VfRkxBR19TRk5UOw0KK30NCitpbnQgQ0ZYX0ZvbnQ6OkdldEFzY2VudCgpIGNvbnN0DQorew0KKyAgICBpZiAobV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGludCBhc2NlbnQgPSBFTV9BREpVU1QoRlhGVF9HZXRfRmFjZV9Vbml0c1BlckVNKG1fRmFjZSksIEZYRlRfR2V0X0ZhY2VfQXNjZW5kZXIobV9GYWNlKSk7DQorICAgIHJldHVybiBhc2NlbnQ7DQorfQ0KK2ludCBDRlhfRm9udDo6R2V0RGVzY2VudCgpIGNvbnN0DQorew0KKyAgICBpZiAobV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGludCBkZXNjZW50ID0gRU1fQURKVVNUKEZYRlRfR2V0X0ZhY2VfVW5pdHNQZXJFTShtX0ZhY2UpLCBGWEZUX0dldF9GYWNlX0Rlc2NlbmRlcihtX0ZhY2UpKTsNCisgICAgcmV0dXJuIGRlc2NlbnQ7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ZvbnQ6OkdldEdseXBoQkJveChGWF9EV09SRCBnbHlwaF9pbmRleCwgRlhfUkVDVCAmYmJveCkNCit7DQorICAgIGlmIChtX0ZhY2UgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChGWEZUX0lzX0ZhY2VfVHJpY2t5KG1fRmFjZSkpIHsNCisgICAgICAgIGludCBlcnJvciA9IEZYRlRfU2V0X0NoYXJfU2l6ZShtX0ZhY2UsIDAsIDEwMDAgKiA2NCwgNzIsIDcyKTsNCisgICAgICAgIGlmIChlcnJvcikgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGVycm9yID0gRlhGVF9Mb2FkX0dseXBoKG1fRmFjZSwgZ2x5cGhfaW5kZXgsIEZYRlRfTE9BRF9JR05PUkVfR0xPQkFMX0FEVkFOQ0VfV0lEVEgpOw0KKyAgICAgICAgaWYgKGVycm9yKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhGVF9CQm94IGNib3g7DQorICAgICAgICBGVF9HbHlwaCBnbHlwaDsNCisgICAgICAgIGVycm9yID0gRlhGVF9HZXRfR2x5cGgoKChGWEZUX0ZhY2UpbV9GYWNlKS0+Z2x5cGgsICZnbHlwaCk7DQorICAgICAgICBpZiAoZXJyb3IpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBGWEZUX0dseXBoX0dldF9DQm94KGdseXBoLCBGWEZUX0dMWVBIX0JCT1hfUElYRUxTLCAmY2JveCk7DQorICAgICAgICBpbnQgcGl4ZWxfc2l6ZV94ID0gKChGWEZUX0ZhY2UpbV9GYWNlKS0+c2l6ZS0+bWV0cmljcy54X3BwZW0sDQorICAgICAgICAgICAgcGl4ZWxfc2l6ZV95ID0gKChGWEZUX0ZhY2UpbV9GYWNlKS0+c2l6ZS0+bWV0cmljcy55X3BwZW07DQorICAgICAgICBpZiAocGl4ZWxfc2l6ZV94ID09IDAgfHwgcGl4ZWxfc2l6ZV95ID09IDApIHsNCisgICAgICAgICAgICBiYm94LmxlZnQgPSBjYm94LnhNaW47DQorICAgICAgICAgICAgYmJveC5yaWdodCA9IGNib3gueE1heDsNCisgICAgICAgICAgICBiYm94LnRvcCA9IGNib3gueU1heDsNCisgICAgICAgICAgICBiYm94LmJvdHRvbSA9IGNib3gueU1pbjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYmJveC5sZWZ0ID0gY2JveC54TWluICogMTAwMCAvIHBpeGVsX3NpemVfeDsNCisgICAgICAgICAgICBiYm94LnJpZ2h0ID0gY2JveC54TWF4ICogMTAwMCAvIHBpeGVsX3NpemVfeDsNCisgICAgICAgICAgICBiYm94LnRvcCA9IGNib3gueU1heCAqIDEwMDAgLyBwaXhlbF9zaXplX3k7DQorICAgICAgICAgICAgYmJveC5ib3R0b20gPSBjYm94LnlNaW4gKiAxMDAwIC8gcGl4ZWxfc2l6ZV95Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGJib3gudG9wID4gRlhGVF9HZXRfRmFjZV9Bc2NlbmRlcihtX0ZhY2UpKSB7DQorICAgICAgICAgICAgYmJveC50b3AgPSBGWEZUX0dldF9GYWNlX0FzY2VuZGVyKG1fRmFjZSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYmJveC5ib3R0b20gPCBGWEZUX0dldF9GYWNlX0Rlc2NlbmRlcihtX0ZhY2UpKSB7DQorICAgICAgICAgICAgYmJveC5ib3R0b20gPSBGWEZUX0dldF9GYWNlX0Rlc2NlbmRlcihtX0ZhY2UpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlRfRG9uZV9HbHlwaChnbHlwaCk7DQorICAgICAgICByZXR1cm4gRlhGVF9TZXRfUGl4ZWxfU2l6ZXMobV9GYWNlLCAwLCA2NCkgPT0gMDsNCisgICAgfQ0KKyAgICBpZiAoRlhGVF9Mb2FkX0dseXBoKG1fRmFjZSwgZ2x5cGhfaW5kZXgsIEZYRlRfTE9BRF9OT19TQ0FMRSB8IEZYRlRfTE9BRF9JR05PUkVfR0xPQkFMX0FEVkFOQ0VfV0lEVEgpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IGVtID0gRlhGVF9HZXRfRmFjZV9Vbml0c1BlckVNKG1fRmFjZSk7DQorICAgIGlmIChlbSA9PSAwKSB7DQorICAgICAgICBiYm94LmxlZnQgPSBGWEZUX0dldF9HbHlwaF9Ib3JpQmVhcmluZ1gobV9GYWNlKTsNCisgICAgICAgIGJib3guYm90dG9tID0gRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdZKG1fRmFjZSk7DQorICAgICAgICBiYm94LnRvcCA9IGJib3guYm90dG9tIC0gRlhGVF9HZXRfR2x5cGhfSGVpZ2h0KG1fRmFjZSk7DQorICAgICAgICBiYm94LnJpZ2h0ID0gYmJveC5sZWZ0ICsgRlhGVF9HZXRfR2x5cGhfV2lkdGgobV9GYWNlKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGJib3gubGVmdCA9IEZYRlRfR2V0X0dseXBoX0hvcmlCZWFyaW5nWChtX0ZhY2UpICogMTAwMCAvIGVtOw0KKyAgICAgICAgYmJveC50b3AgPSAoRlhGVF9HZXRfR2x5cGhfSG9yaUJlYXJpbmdZKG1fRmFjZSkgLSBGWEZUX0dldF9HbHlwaF9IZWlnaHQobV9GYWNlKSkgKiAxMDAwIC8gZW07DQorICAgICAgICBiYm94LnJpZ2h0ID0gKEZYRlRfR2V0X0dseXBoX0hvcmlCZWFyaW5nWChtX0ZhY2UpICsgRlhGVF9HZXRfR2x5cGhfV2lkdGgobV9GYWNlKSkgKiAxMDAwIC8gZW07DQorICAgICAgICBiYm94LmJvdHRvbSA9IChGWEZUX0dldF9HbHlwaF9Ib3JpQmVhcmluZ1kobV9GYWNlKSkgKiAxMDAwIC8gZW07DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ZvbnQ6OklzSXRhbGljKCkNCit7DQorICAgIGlmIChtX0ZhY2UgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX0JPT0wgcmV0ID0gRlhGVF9Jc19GYWNlX0l0YWxpYyhtX0ZhY2UpID09IEZYRlRfU1RZTEVfRkxBR19JVEFMSUM7DQorICAgIGlmICghcmV0KSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBzdHIoRlhGVF9HZXRfRmFjZV9TdHlsZV9OYW1lKG1fRmFjZSkpOw0KKyAgICAgICAgc3RyLk1ha2VMb3dlcigpOw0KKyAgICAgICAgaWYgKHN0ci5GaW5kKCJpdGFsaWMiKSAhPSAtMSkgew0KKyAgICAgICAgICAgIHJldCA9IFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHJldDsNCit9DQorRlhfQk9PTCBDRlhfRm9udDo6SXNCb2xkKCkNCit7DQorICAgIGlmIChtX0ZhY2UgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBGWEZUX0lzX0ZhY2VfQm9sZChtX0ZhY2UpID09IEZYRlRfU1RZTEVfRkxBR19CT0xEOw0KK30NCitGWF9CT09MIENGWF9Gb250OjpJc0ZpeGVkV2lkdGgoKQ0KK3sNCisgICAgaWYgKG1fRmFjZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIEZYRlRfSXNfRmFjZV9maXhlZHdpZHRoKG1fRmFjZSk7DQorfQ0KK0NGWF9XaWRlU3RyaW5nIENGWF9Gb250OjpHZXRQc05hbWUoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fRmFjZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICBDRlhfV2lkZVN0cmluZyBwc05hbWUgPSBDRlhfV2lkZVN0cmluZzo6RnJvbUxvY2FsKEZYRlRfR2V0X1Bvc3RzY3JpcHRfTmFtZShtX0ZhY2UpKTsNCisgICAgaWYgKHBzTmFtZS5Jc0VtcHR5KCkpIHsNCisgICAgICAgIHBzTmFtZSA9ICBDRlhfV2lkZVN0cmluZzo6RnJvbUxvY2FsKCJVbnRpdGxlZCIpOw0KKyAgICB9DQorICAgIHJldHVybiBwc05hbWU7DQorfQ0KK0NGWF9CeXRlU3RyaW5nIENGWF9Gb250OjpHZXRGYW1pbHlOYW1lKCkgY29uc3QNCit7DQorICAgIGlmIChtX0ZhY2UgPT0gTlVMTCAmJiBtX3BTdWJzdEZvbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgaWYgKG1fRmFjZSkgew0KKyAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKEZYRlRfR2V0X0ZhY2VfRmFtaWx5X05hbWUobV9GYWNlKSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gbV9wU3Vic3RGb250LT5tX0ZhbWlseTsNCisgICAgfQ0KK30NCitDRlhfQnl0ZVN0cmluZyBDRlhfRm9udDo6R2V0RmFjZU5hbWUoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fRmFjZSA9PSBOVUxMICYmIG1fcFN1YnN0Rm9udCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCisgICAgfQ0KKyAgICBpZiAobV9GYWNlKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBmYWNlbmFtZTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIHN0eWxlID0gQ0ZYX0J5dGVTdHJpbmcoRlhGVF9HZXRfRmFjZV9TdHlsZV9OYW1lKG1fRmFjZSkpOw0KKyAgICAgICAgZmFjZW5hbWUgPSBHZXRGYW1pbHlOYW1lKCk7DQorICAgICAgICBpZiAoZmFjZW5hbWUuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgZmFjZW5hbWUgPSAiVW50aXRsZWQiOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFzdHlsZS5Jc0VtcHR5KCkgJiYgc3R5bGUgIT0gIlJlZ3VsYXIiKSB7DQorICAgICAgICAgICAgZmFjZW5hbWUgKz0gIiAiICsgc3R5bGU7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gZmFjZW5hbWU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICByZXR1cm4gbV9wU3Vic3RGb250LT5tX0ZhbWlseTsNCisgICAgfQ0KK30NCitGWF9CT09MIENGWF9Gb250OjpHZXRCQm94KEZYX1JFQ1QgJmJib3gpDQorew0KKyAgICBpZiAobV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpbnQgZW0gPSBGWEZUX0dldF9GYWNlX1VuaXRzUGVyRU0obV9GYWNlKTsNCisgICAgaWYgKGVtID09IDApIHsNCisgICAgICAgIGJib3gubGVmdCA9IEZYRlRfR2V0X0ZhY2VfeE1pbihtX0ZhY2UpOw0KKyAgICAgICAgYmJveC5ib3R0b20gPSBGWEZUX0dldF9GYWNlX3lNYXgobV9GYWNlKTsNCisgICAgICAgIGJib3gudG9wID0gRlhGVF9HZXRfRmFjZV95TWluKG1fRmFjZSk7DQorICAgICAgICBiYm94LnJpZ2h0ID0gRlhGVF9HZXRfRmFjZV94TWF4KG1fRmFjZSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBiYm94LmxlZnQgPSBGWEZUX0dldF9GYWNlX3hNaW4obV9GYWNlKSAqIDEwMDAgLyBlbTsNCisgICAgICAgIGJib3gudG9wID0gRlhGVF9HZXRfRmFjZV95TWluKG1fRmFjZSkgKiAxMDAwIC8gZW07DQorICAgICAgICBiYm94LnJpZ2h0ID0gRlhGVF9HZXRfRmFjZV94TWF4KG1fRmFjZSkgKiAxMDAwIC8gZW07DQorICAgICAgICBiYm94LmJvdHRvbSA9IEZYRlRfR2V0X0ZhY2VfeU1heChtX0ZhY2UpICogMTAwMCAvIGVtOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitpbnQgQ0ZYX0ZvbnQ6OkdldEhlaWdodCgpDQorew0KKyAgICBpZiAobV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGludCBoZWlnaHQgPSBFTV9BREpVU1QoRlhGVF9HZXRfRmFjZV9Vbml0c1BlckVNKG1fRmFjZSksIEZYRlRfR2V0X0ZhY2VfSGVpZ2h0KG1fRmFjZSkpOw0KKyAgICByZXR1cm4gaGVpZ2h0Ow0KK30NCitpbnQgQ0ZYX0ZvbnQ6OkdldE1heEFkdmFuY2VXaWR0aCgpDQorew0KKyAgICBpZiAobV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGludCB3aWR0aCA9IEVNX0FESlVTVChGWEZUX0dldF9GYWNlX1VuaXRzUGVyRU0obV9GYWNlKSwgRlhGVF9HZXRfRmFjZV9NYXhBZHZhbmNlV2lkdGgobV9GYWNlKSk7DQorICAgIHJldHVybiB3aWR0aDsNCit9DQoraW50IENGWF9Gb250OjpHZXRVTFBvcygpDQorew0KKyAgICBpZiAobV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIGludCBwb3MgPSBFTV9BREpVU1QoRlhGVF9HZXRfRmFjZV9Vbml0c1BlckVNKG1fRmFjZSksIEZYRlRfR2V0X0ZhY2VfVW5kZXJMaW5lUG9zaXRpb24obV9GYWNlKSk7DQorICAgIHJldHVybiBwb3M7DQorfQ0KK2ludCBDRlhfRm9udDo6R2V0VUx0aGlja25lc3MoKQ0KK3sNCisgICAgaWYgKG1fRmFjZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBpbnQgdGhpY2tuZXNzID0gRU1fQURKVVNUKEZYRlRfR2V0X0ZhY2VfVW5pdHNQZXJFTShtX0ZhY2UpLCBGWEZUX0dldF9GYWNlX1VuZGVyTGluZVRoaWNrbmVzcyhtX0ZhY2UpKTsNCisgICAgcmV0dXJuIHRoaWNrbmVzczsNCit9DQorQ0ZYX1VuaWNvZGVFbmNvZGluZzo6Q0ZYX1VuaWNvZGVFbmNvZGluZyhDRlhfRm9udCogcEZvbnQpDQorew0KKyAgICBtX3BGb250ID0gcEZvbnQ7DQorfQ0KK0ZYX0RXT1JEIENGWF9Vbmljb2RlRW5jb2Rpbmc6OkdseXBoRnJvbUNoYXJDb2RlKEZYX0RXT1JEIGNoYXJjb2RlKQ0KK3sNCisgICAgRlhGVF9GYWNlIGZhY2UgPSAgbV9wRm9udC0+R2V0RmFjZSgpOw0KKyAgICBpZiAoIWZhY2UpIHsNCisgICAgICAgIHJldHVybiBjaGFyY29kZTsNCisgICAgfQ0KKyAgICBpZiAoRlhGVF9TZWxlY3RfQ2hhcm1hcChmYWNlLCBGWEZUX0VOQ09ESU5HX1VOSUNPREUpID09IDApIHsNCisgICAgICAgIHJldHVybiBGWEZUX0dldF9DaGFyX0luZGV4KGZhY2UsIGNoYXJjb2RlKTsNCisgICAgfQ0KKyAgICBpZiAobV9wRm9udC0+bV9wU3Vic3RGb250ICYmIG1fcEZvbnQtPm1fcFN1YnN0Rm9udC0+bV9DaGFyc2V0ID09IDIpIHsNCisgICAgICAgIEZYX0RXT1JEIGluZGV4ID0gMDsNCisgICAgICAgIGlmIChGWEZUX1NlbGVjdF9DaGFybWFwKGZhY2UsIEZYRlRfRU5DT0RJTkdfTVNfU1lNQk9MKSA9PSAwKSB7DQorICAgICAgICAgICAgaW5kZXggPSBGWEZUX0dldF9DaGFyX0luZGV4KGZhY2UsIGNoYXJjb2RlKTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghaW5kZXggJiYgIUZYRlRfU2VsZWN0X0NoYXJtYXAoZmFjZSwgRlhGVF9FTkNPRElOR19BUFBMRV9ST01BTikpIHsNCisgICAgICAgICAgICByZXR1cm4gRlhGVF9HZXRfQ2hhcl9JbmRleChmYWNlLCBjaGFyY29kZSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIGNoYXJjb2RlOw0KK30NCitGWF9EV09SRCBDRlhfVW5pY29kZUVuY29kaW5nOjpHbHlwaEZyb21DaGFyQ29kZUV4KEZYX0RXT1JEIGNoYXJjb2RlLCBpbnQgZW5jb2RpbmcpDQorew0KKyAgICBGWEZUX0ZhY2UgZmFjZSA9ICBtX3BGb250LT5HZXRGYWNlKCk7DQorICAgIGlmICghZmFjZSkgew0KKyAgICAgICAgcmV0dXJuIGNoYXJjb2RlOw0KKyAgICB9DQorICAgIGlmIChlbmNvZGluZyA9PSBFTkNPRElOR19VTklDT0RFKSB7DQorICAgICAgICByZXR1cm4JR2x5cGhGcm9tQ2hhckNvZGUoY2hhcmNvZGUpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaW50IG5tYXBzID0gRlhGVF9HZXRfRmFjZV9DaGFybWFwQ291bnQobV9wRm9udC0+bV9GYWNlKTsNCisgICAgICAgIGludCBpID0gMDsNCisgICAgICAgIHdoaWxlIChpIDwgbm1hcHMpIHsNCisgICAgICAgICAgICBpbnQgZW5jb2RpbmcgPSBGWEZUX0dldF9DaGFybWFwX0VuY29kaW5nKEZYRlRfR2V0X0ZhY2VfQ2hhcm1hcHMoZmFjZSlbaSsrXSk7DQorICAgICAgICAgICAgaWYgKGVuY29kaW5nICE9IEZYRlRfRU5DT0RJTkdfVU5JQ09ERSkgew0KKyAgICAgICAgICAgICAgICBGWEZUX1NlbGVjdF9DaGFybWFwKGZhY2UsIGVuY29kaW5nKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGWEZUX0dldF9DaGFyX0luZGV4KGZhY2UsIGNoYXJjb2RlKTsNCit9DQorSUZYX0ZvbnRFbmNvZGluZyogRlhHRV9DcmVhdGVVbmljb2RlRW5jb2RpbmcoQ0ZYX0ZvbnQqIHBGb250KQ0KK3sNCisgICAgQ0ZYX1VuaWNvZGVFbmNvZGluZyogcEVuY29kaW5nID0gTlVMTDsNCisgICAgcEVuY29kaW5nID0gRlhfTkVXIENGWF9Vbmljb2RlRW5jb2RpbmcocEZvbnQpOw0KKyAgICByZXR1cm4gcEVuY29kaW5nOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlX2ZvbnRtYXAuY3BwIGIvY29yZS9zcmMvZnhnZS9nZS9meF9nZV9mb250bWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTQ5ZThlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9nZS9meF9nZV9mb250bWFwLmNwcApAQCAtMCwwICsxLDE1NTggQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2ZyZWV0eXBlLmgiDQorI2luY2x1ZGUgInRleHRfaW50LmgiDQorI2RlZmluZSBHRVRfVFRfU0hPUlQodykgIChGWF9XT1JEKSgoKHcpWzBdIDw8IDgpIHwgKHcpWzFdKQ0KKyNkZWZpbmUgR0VUX1RUX0xPTkcodykgKEZYX0RXT1JEKSgoKHcpWzBdIDw8IDI0KSB8ICgodylbMV0gPDwgMTYpIHwgKCh3KVsyXSA8PCA4KSB8ICh3KVszXSkNCitDRlhfU3Vic3RGb250OjpDRlhfU3Vic3RGb250KCkNCit7DQorICAgIG1fRXh0SGFuZGxlID0gTlVMTDsNCisgICAgbV9DaGFyc2V0ID0gMDsNCisgICAgbV9TdWJzdEZsYWdzID0gMDsNCisgICAgbV9XZWlnaHQgPSAwOw0KKyAgICBtX0l0YWxpY0FuZ2xlID0gMDsNCisgICAgbV9iU3Vic3RPZkNKSyA9IEZBTFNFOw0KKyAgICBtX1dlaWdodENKSyA9IDA7DQorICAgIG1fYkl0bGljQ0pLID0gRkFMU0U7DQorfQ0KK0NUVEZvbnREZXNjOjp+Q1RURm9udERlc2MoKQ0KK3sNCisgICAgaWYgKG1fVHlwZSA9PSAxKSB7DQorICAgICAgICBpZiAobV9TaW5nbGVGYWNlLm1fcEZhY2UpIHsNCisgICAgICAgICAgICBGWEZUX0RvbmVfRmFjZShtX1NpbmdsZUZhY2UubV9wRmFjZSk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAobV9UeXBlID09IDIpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7IGkgKyspDQorICAgICAgICAgICAgaWYgKG1fVFRDRmFjZS5tX3BGYWNlc1tpXSkgew0KKyAgICAgICAgICAgICAgICBGWEZUX0RvbmVfRmFjZShtX1RUQ0ZhY2UubV9wRmFjZXNbaV0pOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9wRm9udERhdGEpIHsNCisgICAgICAgIEZYX0ZyZWUobV9wRm9udERhdGEpOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ1RURm9udERlc2M6OlJlbGVhc2VGYWNlKEZYRlRfRmFjZSBmYWNlKQ0KK3sNCisgICAgaWYgKG1fVHlwZSA9PSAxKSB7DQorICAgICAgICBpZiAobV9TaW5nbGVGYWNlLm1fcEZhY2UgIT0gZmFjZSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIGlmIChtX1R5cGUgPT0gMikgew0KKyAgICAgICAgaW50IGk7DQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkgKyspDQorICAgICAgICAgICAgaWYgKG1fVFRDRmFjZS5tX3BGYWNlc1tpXSA9PSBmYWNlKSB7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGlmIChpID09IDE2KSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fUmVmQ291bnQgLS07DQorICAgIGlmIChtX1JlZkNvdW50KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgZGVsZXRlIHRoaXM7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDRlhfRm9udE1ncjo6Q0ZYX0ZvbnRNZ3IoKQ0KK3sNCisgICAgbV9wQnVpbHRpbk1hcHBlciA9IEZYX05FVyBDRlhfRm9udE1hcHBlcjsNCisgICAgaWYgKCFtX3BCdWlsdGluTWFwcGVyKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbV9wQnVpbHRpbk1hcHBlci0+bV9wRm9udE1nciA9IHRoaXM7DQorICAgIG1fcEV4dE1hcHBlciA9IE5VTEw7DQorICAgIG1fRlRMaWJyYXJ5ID0gTlVMTDsNCisgICAgRlhTWVNfbWVtc2V0MzIobV9FeHRlcm5hbEZvbnRzLCAwLCBzaXplb2YgbV9FeHRlcm5hbEZvbnRzKTsNCit9DQorQ0ZYX0ZvbnRNZ3I6On5DRlhfRm9udE1ncigpDQorew0KKyAgICBpZiAobV9wQnVpbHRpbk1hcHBlcikgew0KKyAgICAgICAgZGVsZXRlIG1fcEJ1aWx0aW5NYXBwZXI7DQorICAgIH0NCisgICAgRnJlZUNhY2hlKCk7DQorICAgIGlmIChtX0ZUTGlicmFyeSkgew0KKyAgICAgICAgRlhGVF9Eb25lX0ZyZWVUeXBlKG1fRlRMaWJyYXJ5KTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9Gb250TWdyOjpJbml0RlRMaWJyYXJ5KCkNCit7DQorICAgIGlmIChtX0ZUTGlicmFyeSA9PSBOVUxMKSB7DQorICAgICAgICBGWEZUX0luaXRfRnJlZVR5cGUoJm1fRlRMaWJyYXJ5KTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9Gb250TWdyOjpGcmVlQ2FjaGUoKQ0KK3sNCisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9GYWNlTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUocG9zKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBLZXk7DQorICAgICAgICBDVFRGb250RGVzYyogZmFjZTsNCisgICAgICAgIG1fRmFjZU1hcC5HZXROZXh0QXNzb2MocG9zLCBLZXksICh2b2lkKiYpZmFjZSk7DQorICAgICAgICBkZWxldGUgZmFjZTsNCisgICAgfQ0KKyAgICBtX0ZhY2VNYXAuUmVtb3ZlQWxsKCk7DQorfQ0KK3ZvaWQgQ0ZYX0ZvbnRNZ3I6OlNldFN5c3RlbUZvbnRJbmZvKElGWF9TeXN0ZW1Gb250SW5mbyogcEZvbnRJbmZvKQ0KK3sNCisgICAgbV9wQnVpbHRpbk1hcHBlci0+U2V0U3lzdGVtRm9udEluZm8ocEZvbnRJbmZvKTsNCit9DQorRlhGVF9GYWNlIENGWF9Gb250TWdyOjpGaW5kU3Vic3RGb250KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBmYWNlX25hbWUsIEZYX0JPT0wgYlRydWVUeXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBmbGFncywgaW50IHdlaWdodCwgaW50IGl0YWxpY19hbmdsZSwgaW50IENoYXJzZXRDUCwgQ0ZYX1N1YnN0Rm9udCogcFN1YnN0Rm9udCkNCit7DQorICAgIGlmIChtX0ZUTGlicmFyeSA9PSBOVUxMKSB7DQorICAgICAgICBGWEZUX0luaXRfRnJlZVR5cGUoJm1fRlRMaWJyYXJ5KTsNCisgICAgfQ0KKyAgICBpZiAobV9wRXh0TWFwcGVyKSB7DQorICAgICAgICBGWEZUX0ZhY2UgZmFjZSA9IG1fcEV4dE1hcHBlci0+RmluZFN1YnN0Rm9udChmYWNlX25hbWUsIGJUcnVlVHlwZSwgZmxhZ3MsIHdlaWdodCwgaXRhbGljX2FuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc2V0Q1AsIHBTdWJzdEZvbnQpOw0KKyAgICAgICAgaWYgKGZhY2UpIHsNCisgICAgICAgICAgICByZXR1cm4gZmFjZTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gbV9wQnVpbHRpbk1hcHBlci0+RmluZFN1YnN0Rm9udChmYWNlX25hbWUsIGJUcnVlVHlwZSwgZmxhZ3MsIHdlaWdodCwgaXRhbGljX2FuZ2xlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc2V0Q1AsIHBTdWJzdEZvbnQpOw0KK30NCitGWEZUX0ZhY2UgQ0ZYX0ZvbnRNZ3I6OkdldENhY2hlZEZhY2UoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIGZhY2VfbmFtZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdlaWdodCwgRlhfQk9PTCBiSXRhbGljLCBGWF9MUEJZVEUmIHBGb250RGF0YSkNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIGtleShmYWNlX25hbWUpOw0KKyAgICBrZXkgKz0gJywnOw0KKyAgICBrZXkgKz0gQ0ZYX0J5dGVTdHJpbmc6OkZvcm1hdEludGVnZXIod2VpZ2h0KTsNCisgICAga2V5ICs9IGJJdGFsaWMgPyAnSScgOiAnTic7DQorICAgIENUVEZvbnREZXNjKiBwRm9udERlc2MgPSBOVUxMOw0KKyAgICBtX0ZhY2VNYXAuTG9va3VwKGtleSwgKHZvaWQqJilwRm9udERlc2MpOw0KKyAgICBpZihwRm9udERlc2MpIHsNCisgICAgICAgIHBGb250RGF0YSA9IHBGb250RGVzYy0+bV9wRm9udERhdGE7DQorICAgICAgICBwRm9udERlc2MtPm1fUmVmQ291bnQgKys7DQorICAgICAgICByZXR1cm4gcEZvbnREZXNjLT5tX1NpbmdsZUZhY2UubV9wRmFjZTsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorRlhGVF9GYWNlIENGWF9Gb250TWdyOjpBZGRDYWNoZWRGYWNlKGNvbnN0IENGWF9CeXRlU3RyaW5nJiBmYWNlX25hbWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3ZWlnaHQsIEZYX0JPT0wgYkl0YWxpYywgRlhfTFBCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplLCBpbnQgZmFjZV9pbmRleCkNCit7DQorICAgIENUVEZvbnREZXNjKiBwRm9udERlc2MgPSBGWF9ORVcgQ1RURm9udERlc2M7DQorICAgIGlmICghcEZvbnREZXNjKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwRm9udERlc2MtPm1fVHlwZSA9IDE7DQorICAgIHBGb250RGVzYy0+bV9TaW5nbGVGYWNlLm1fcEZhY2UgPSBOVUxMOw0KKyAgICBwRm9udERlc2MtPm1fU2luZ2xlRmFjZS5tX2JCb2xkID0gd2VpZ2h0Ow0KKyAgICBwRm9udERlc2MtPm1fU2luZ2xlRmFjZS5tX2JJdGFsaWMgPSBiSXRhbGljOw0KKyAgICBwRm9udERlc2MtPm1fcEZvbnREYXRhID0gcERhdGE7DQorICAgIHBGb250RGVzYy0+bV9SZWZDb3VudCA9IDE7DQorICAgIEZYRlRfTGlicmFyeSBsaWJyYXJ5Ow0KKyAgICBpZiAobV9GVExpYnJhcnkgPT0gTlVMTCkgew0KKyAgICAgICAgRlhGVF9Jbml0X0ZyZWVUeXBlKCZtX0ZUTGlicmFyeSk7DQorICAgIH0NCisgICAgbGlicmFyeSA9IG1fRlRMaWJyYXJ5Ow0KKyAgICBpbnQgcmV0ID0gRlhGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwgcERhdGEsIHNpemUsIGZhY2VfaW5kZXgsICZwRm9udERlc2MtPm1fU2luZ2xlRmFjZS5tX3BGYWNlKTsNCisgICAgaWYgKHJldCkgew0KKyAgICAgICAgZGVsZXRlIHBGb250RGVzYzsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldCA9IEZYRlRfU2V0X1BpeGVsX1NpemVzKHBGb250RGVzYy0+bV9TaW5nbGVGYWNlLm1fcEZhY2UsIDY0LCA2NCk7DQorICAgIGlmIChyZXQpIHsNCisgICAgICAgIGRlbGV0ZSBwRm9udERlc2M7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBrZXkoZmFjZV9uYW1lKTsNCisgICAga2V5ICs9ICcsJzsNCisgICAga2V5ICs9IENGWF9CeXRlU3RyaW5nOjpGb3JtYXRJbnRlZ2VyKHdlaWdodCk7DQorICAgIGtleSArPSBiSXRhbGljID8gJ0knIDogJ04nOw0KKyAgICBtX0ZhY2VNYXAuU2V0QXQoa2V5LCBwRm9udERlc2MpOw0KKyAgICByZXR1cm4gcEZvbnREZXNjLT5tX1NpbmdsZUZhY2UubV9wRmFjZTsNCit9DQorY29uc3QgRlhfTFBDU1RSIGdfQmFzZTE0Rm9udE5hbWVzWzE0XSA9IHsNCisgICAgIkNvdXJpZXIiLA0KKyAgICAiQ291cmllci1Cb2xkIiwNCisgICAgIkNvdXJpZXItQm9sZE9ibGlxdWUiLA0KKyAgICAiQ291cmllci1PYmxpcXVlIiwNCisgICAgIkhlbHZldGljYSIsDQorICAgICJIZWx2ZXRpY2EtQm9sZCIsDQorICAgICJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLA0KKyAgICAiSGVsdmV0aWNhLU9ibGlxdWUiLA0KKyAgICAiVGltZXMtUm9tYW4iLA0KKyAgICAiVGltZXMtQm9sZCIsDQorICAgICJUaW1lcy1Cb2xkSXRhbGljIiwNCisgICAgIlRpbWVzLUl0YWxpYyIsDQorICAgICJTeW1ib2wiLA0KKyAgICAiWmFwZkRpbmdiYXRzIiwNCit9Ow0KK2NvbnN0IHN0cnVjdCBfQWx0Rm9udE5hbWUgew0KKyAgICBjb25zdCBGWF9DSEFSKgltX3BOYW1lOw0KKyAgICBpbnQJCW1fSW5kZXg7DQorfQ0KK2dfQWx0Rm9udE5hbWVzW10gPSB7DQorICAgIHsiQXJpYWwiLCA0fSwNCisgICAgeyJBcmlhbCxCb2xkIiwgNX0sDQorICAgIHsiQXJpYWwsQm9sZEl0YWxpYyIsIDZ9LA0KKyAgICB7IkFyaWFsLEl0YWxpYyIsIDd9LA0KKyAgICB7IkFyaWFsLUJvbGQiLCA1fSwNCisgICAgeyJBcmlhbC1Cb2xkSXRhbGljIiwgNn0sDQorICAgIHsiQXJpYWwtQm9sZEl0YWxpY01UIiwgNn0sDQorICAgIHsiQXJpYWwtQm9sZE1UIiwgNX0sDQorICAgIHsiQXJpYWwtSXRhbGljIiwgN30sDQorICAgIHsiQXJpYWwtSXRhbGljTVQiLCA3fSwNCisgICAgeyJBcmlhbEJvbGQiLCA1fSwNCisgICAgeyJBcmlhbEJvbGRJdGFsaWMiLCA2fSwNCisgICAgeyJBcmlhbEl0YWxpYyIsIDd9LA0KKyAgICB7IkFyaWFsTVQiLCA0fSwNCisgICAgeyJBcmlhbE1ULEJvbGQiLCA1fSwNCisgICAgeyJBcmlhbE1ULEJvbGRJdGFsaWMiLCA2fSwNCisgICAgeyJBcmlhbE1ULEl0YWxpYyIsIDd9LA0KKyAgICB7IkFyaWFsUm91bmRlZE1UQm9sZCIsIDV9LA0KKyAgICB7IkNvdXJpZXIiLCAwfSwNCisgICAgeyJDb3VyaWVyLEJvbGQiLCAxfSwNCisgICAgeyJDb3VyaWVyLEJvbGRJdGFsaWMiLCAyfSwNCisgICAgeyJDb3VyaWVyLEl0YWxpYyIsIDN9LA0KKyAgICB7IkNvdXJpZXItQm9sZCIsIDF9LA0KKyAgICB7IkNvdXJpZXItQm9sZE9ibGlxdWUiLCAyfSwNCisgICAgeyJDb3VyaWVyLU9ibGlxdWUiLCAzfSwNCisgICAgeyJDb3VyaWVyQm9sZCIsIDF9LA0KKyAgICB7IkNvdXJpZXJCb2xkSXRhbGljIiwgMn0sDQorICAgIHsiQ291cmllckl0YWxpYyIsIDN9LA0KKyAgICB7IkNvdXJpZXJOZXciLCAwfSwNCisgICAgeyJDb3VyaWVyTmV3LEJvbGQiLCAxfSwNCisgICAgeyJDb3VyaWVyTmV3LEJvbGRJdGFsaWMiLCAyfSwNCisgICAgeyJDb3VyaWVyTmV3LEl0YWxpYyIsIDN9LA0KKyAgICB7IkNvdXJpZXJOZXctQm9sZCIsIDF9LA0KKyAgICB7IkNvdXJpZXJOZXctQm9sZEl0YWxpYyIsIDJ9LA0KKyAgICB7IkNvdXJpZXJOZXctSXRhbGljIiwgM30sDQorICAgIHsiQ291cmllck5ld0JvbGQiLCAxfSwNCisgICAgeyJDb3VyaWVyTmV3Qm9sZEl0YWxpYyIsIDJ9LA0KKyAgICB7IkNvdXJpZXJOZXdJdGFsaWMiLCAzfSwNCisgICAgeyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIiwgMn0sDQorICAgIHsiQ291cmllck5ld1BTLUJvbGRNVCIsIDF9LA0KKyAgICB7IkNvdXJpZXJOZXdQUy1JdGFsaWNNVCIsIDN9LA0KKyAgICB7IkNvdXJpZXJOZXdQU01UIiwgMH0sDQorICAgIHsiQ291cmllclN0ZCIsIDB9LA0KKyAgICB7IkNvdXJpZXJTdGQtQm9sZCIsIDF9LA0KKyAgICB7IkNvdXJpZXJTdGQtQm9sZE9ibGlxdWUiLCAyfSwNCisgICAgeyJDb3VyaWVyU3RkLU9ibGlxdWUiLCAzfSwNCisgICAgeyJIZWx2ZXRpY2EiLCA0fSwNCisgICAgeyJIZWx2ZXRpY2EsQm9sZCIsIDV9LA0KKyAgICB7IkhlbHZldGljYSxCb2xkSXRhbGljIiwgNn0sDQorICAgIHsiSGVsdmV0aWNhLEl0YWxpYyIsIDd9LA0KKyAgICB7IkhlbHZldGljYS1Cb2xkIiwgNX0sDQorICAgIHsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiLCA2fSwNCisgICAgeyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLCA2fSwNCisgICAgeyJIZWx2ZXRpY2EtSXRhbGljIiwgN30sDQorICAgIHsiSGVsdmV0aWNhLU9ibGlxdWUiLCA3fSwNCisgICAgeyJIZWx2ZXRpY2FCb2xkIiwgNX0sDQorICAgIHsiSGVsdmV0aWNhQm9sZEl0YWxpYyIsIDZ9LA0KKyAgICB7IkhlbHZldGljYUl0YWxpYyIsIDd9LA0KKyAgICB7IlN5bWJvbCIsIDEyfSwNCisgICAgeyJTeW1ib2xNVCIsIDEyfSwNCisgICAgeyJUaW1lcy1Cb2xkIiwgOX0sDQorICAgIHsiVGltZXMtQm9sZEl0YWxpYyIsIDEwfSwNCisgICAgeyJUaW1lcy1JdGFsaWMiLCAxMX0sDQorICAgIHsiVGltZXMtUm9tYW4iLCA4fSwNCisgICAgeyJUaW1lc0JvbGQiLCA5fSwNCisgICAgeyJUaW1lc0JvbGRJdGFsaWMiLCAxMH0sDQorICAgIHsiVGltZXNJdGFsaWMiLCAxMX0sDQorICAgIHsiVGltZXNOZXdSb21hbiIsIDh9LA0KKyAgICB7IlRpbWVzTmV3Um9tYW4sQm9sZCIsIDl9LA0KKyAgICB7IlRpbWVzTmV3Um9tYW4sQm9sZEl0YWxpYyIsIDEwfSwNCisgICAgeyJUaW1lc05ld1JvbWFuLEl0YWxpYyIsIDExfSwNCisgICAgeyJUaW1lc05ld1JvbWFuLUJvbGQiLCA5fSwNCisgICAgeyJUaW1lc05ld1JvbWFuLUJvbGRJdGFsaWMiLCAxMH0sDQorICAgIHsiVGltZXNOZXdSb21hbi1JdGFsaWMiLCAxMX0sDQorICAgIHsiVGltZXNOZXdSb21hbkJvbGQiLCA5fSwNCisgICAgeyJUaW1lc05ld1JvbWFuQm9sZEl0YWxpYyIsIDEwfSwNCisgICAgeyJUaW1lc05ld1JvbWFuSXRhbGljIiwgMTF9LA0KKyAgICB7IlRpbWVzTmV3Um9tYW5QUyIsIDh9LA0KKyAgICB7IlRpbWVzTmV3Um9tYW5QUy1Cb2xkIiwgOX0sDQorICAgIHsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiLCAxMH0sDQorICAgIHsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCIsIDEwfSwNCisgICAgeyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIiwgOX0sDQorICAgIHsiVGltZXNOZXdSb21hblBTLUl0YWxpYyIsIDExfSwNCisgICAgeyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiLCAxMX0sDQorICAgIHsiVGltZXNOZXdSb21hblBTTVQiLCA4fSwNCisgICAgeyJUaW1lc05ld1JvbWFuUFNNVCxCb2xkIiwgOX0sDQorICAgIHsiVGltZXNOZXdSb21hblBTTVQsQm9sZEl0YWxpYyIsIDEwfSwNCisgICAgeyJUaW1lc05ld1JvbWFuUFNNVCxJdGFsaWMiLCAxMX0sDQorICAgIHsiWmFwZkRpbmdiYXRzIiwgMTN9LA0KK307DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyBpbnQgY29tcGFyZVN0cmluZyhjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIGVsZW1lbnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGWFNZU19zdHJpY21wKChGWF9MUENTVFIpa2V5LCAoKF9BbHRGb250TmFtZSopZWxlbWVudCktPm1fcE5hbWUpOw0KKyAgICB9DQorfQ0KK2ludCBfUERGX0dldFN0YW5kYXJkRm9udE5hbWUoQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpDQorew0KKyAgICBfQWx0Rm9udE5hbWUqIGZvdW5kID0gKF9BbHRGb250TmFtZSopRlhTWVNfYnNlYXJjaCgoRlhfTFBDU1RSKW5hbWUsIGdfQWx0Rm9udE5hbWVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIGdfQWx0Rm9udE5hbWVzIC8gc2l6ZW9mIChfQWx0Rm9udE5hbWUpLCBzaXplb2YgKF9BbHRGb250TmFtZSksIGNvbXBhcmVTdHJpbmcpOw0KKyAgICBpZiAoZm91bmQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQorICAgIG5hbWUgPSBnX0Jhc2UxNEZvbnROYW1lc1tmb3VuZC0+bV9JbmRleF07DQorICAgIHJldHVybiBmb3VuZC0+bV9JbmRleDsNCit9DQoraW50IEdldFRUQ0luZGV4KEZYX0xQQ0JZVEUgcEZvbnREYXRhLCBGWF9EV09SRCB0dGNfc2l6ZSwgRlhfRFdPUkQgZm9udF9vZmZzZXQpDQorew0KKyAgICBpbnQgZmFjZV9pbmRleCA9IDA7DQorICAgIEZYX0xQQ0JZVEUgcCA9IHBGb250RGF0YSArIDg7DQorICAgIEZYX0RXT1JEIG5mb250ID0gR0VUX1RUX0xPTkcocCk7DQorICAgIEZYX0RXT1JEIGluZGV4Ow0KKyAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBuZm9udDsgaW5kZXggKyspIHsNCisgICAgICAgIHAgPSBwRm9udERhdGEgKyAxMiArIGluZGV4ICogNDsNCisgICAgICAgIGlmIChHRVRfVFRfTE9ORyhwKSA9PSBmb250X29mZnNldCkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmKGluZGV4ID49IG5mb250KSB7DQorICAgICAgICBmYWNlX2luZGV4ID0gMDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZhY2VfaW5kZXggPSBpbmRleDsNCisgICAgfQ0KKyAgICByZXR1cm4gZmFjZV9pbmRleDsNCit9DQorRlhGVF9GYWNlIENGWF9Gb250TWdyOjpHZXRDYWNoZWRUVENGYWNlKGludCB0dGNfc2l6ZSwgRlhfRFdPUkQgY2hlY2tzdW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb250X29mZnNldCwgRlhfTFBCWVRFJiBwRm9udERhdGEpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBrZXk7DQorICAgIGtleS5Gb3JtYXQoIiVkOiVkIiwgdHRjX3NpemUsIGNoZWNrc3VtKTsNCisgICAgQ1RURm9udERlc2MqIHBGb250RGVzYyA9IE5VTEw7DQorICAgIG1fRmFjZU1hcC5Mb29rdXAoa2V5LCAodm9pZComKXBGb250RGVzYyk7DQorICAgIGlmIChwRm9udERlc2MgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcEZvbnREYXRhID0gcEZvbnREZXNjLT5tX3BGb250RGF0YTsNCisgICAgcEZvbnREZXNjLT5tX1JlZkNvdW50ICsrOw0KKyAgICBpbnQgZmFjZV9pbmRleCA9IEdldFRUQ0luZGV4KHBGb250RGVzYy0+bV9wRm9udERhdGEsIHR0Y19zaXplLCBmb250X29mZnNldCk7DQorICAgIGlmIChwRm9udERlc2MtPm1fVFRDRmFjZS5tX3BGYWNlc1tmYWNlX2luZGV4XSA9PSBOVUxMKSB7DQorICAgICAgICBwRm9udERlc2MtPm1fVFRDRmFjZS5tX3BGYWNlc1tmYWNlX2luZGV4XSA9IEdldEZpeGVkRmFjZShwRm9udERlc2MtPm1fcEZvbnREYXRhLCB0dGNfc2l6ZSwgZmFjZV9pbmRleCk7DQorICAgIH0NCisgICAgcmV0dXJuIHBGb250RGVzYy0+bV9UVENGYWNlLm1fcEZhY2VzW2ZhY2VfaW5kZXhdOw0KK30NCitGWEZUX0ZhY2UgQ0ZYX0ZvbnRNZ3I6OkFkZENhY2hlZFRUQ0ZhY2UoaW50IHR0Y19zaXplLCBGWF9EV09SRCBjaGVja3N1bSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplLCBpbnQgZm9udF9vZmZzZXQpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBrZXk7DQorICAgIGtleS5Gb3JtYXQoIiVkOiVkIiwgdHRjX3NpemUsIGNoZWNrc3VtKTsNCisgICAgQ1RURm9udERlc2MqIHBGb250RGVzYyA9IEZYX05FVyBDVFRGb250RGVzYzsNCisgICAgaWYgKCFwRm9udERlc2MpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBGb250RGVzYy0+bV9UeXBlID0gMjsNCisgICAgcEZvbnREZXNjLT5tX3BGb250RGF0YSA9IHBEYXRhOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyBpICsrKSB7DQorICAgICAgICBwRm9udERlc2MtPm1fVFRDRmFjZS5tX3BGYWNlc1tpXSA9IE5VTEw7DQorICAgIH0NCisgICAgcEZvbnREZXNjLT5tX1JlZkNvdW50ICsrOw0KKyAgICBrZXkuRm9ybWF0KCIlZDolZCIsIHR0Y19zaXplLCBjaGVja3N1bSk7DQorICAgIG1fRmFjZU1hcC5TZXRBdChrZXksIHBGb250RGVzYyk7DQorICAgIGludCBmYWNlX2luZGV4ID0gR2V0VFRDSW5kZXgocEZvbnREZXNjLT5tX3BGb250RGF0YSwgdHRjX3NpemUsIGZvbnRfb2Zmc2V0KTsNCisgICAgcEZvbnREZXNjLT5tX1RUQ0ZhY2UubV9wRmFjZXNbZmFjZV9pbmRleF0gPSBHZXRGaXhlZEZhY2UocEZvbnREZXNjLT5tX3BGb250RGF0YSwgdHRjX3NpemUsIGZhY2VfaW5kZXgpOw0KKyAgICByZXR1cm4gcEZvbnREZXNjLT5tX1RUQ0ZhY2UubV9wRmFjZXNbZmFjZV9pbmRleF07DQorfQ0KK0ZYRlRfRmFjZSBDRlhfRm9udE1ncjo6R2V0Rml4ZWRGYWNlKEZYX0xQQ0JZVEUgcERhdGEsIEZYX0RXT1JEIHNpemUsIGludCBmYWNlX2luZGV4KQ0KK3sNCisgICAgRlhGVF9MaWJyYXJ5IGxpYnJhcnk7DQorICAgIGlmIChtX0ZUTGlicmFyeSA9PSBOVUxMKSB7DQorICAgICAgICBGWEZUX0luaXRfRnJlZVR5cGUoJm1fRlRMaWJyYXJ5KTsNCisgICAgfQ0KKyAgICBsaWJyYXJ5ID0gbV9GVExpYnJhcnk7DQorICAgIEZYRlRfRmFjZSBmYWNlID0gTlVMTDsNCisgICAgaW50IHJldCA9IEZYRlRfTmV3X01lbW9yeV9GYWNlKGxpYnJhcnksIHBEYXRhLCBzaXplLCBmYWNlX2luZGV4LCAmZmFjZSk7DQorICAgIGlmIChyZXQpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldCA9IEZYRlRfU2V0X1BpeGVsX1NpemVzKGZhY2UsIDY0LCA2NCk7DQorICAgIGlmIChyZXQpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHJldHVybiBmYWNlOw0KK30NCitGWEZUX0ZhY2UgQ0ZYX0ZvbnRNZ3I6OkdldEZpbGVGYWNlKEZYX0xQQ1NUUiBmaWxlbmFtZSwgaW50IGZhY2VfaW5kZXgpDQorew0KKyAgICBGWEZUX0xpYnJhcnkgbGlicmFyeTsNCisgICAgaWYgKG1fRlRMaWJyYXJ5ID09IE5VTEwpIHsNCisgICAgICAgIEZYRlRfSW5pdF9GcmVlVHlwZSgmbV9GVExpYnJhcnkpOw0KKyAgICB9DQorICAgIGxpYnJhcnkgPSBtX0ZUTGlicmFyeTsNCisgICAgRlhGVF9GYWNlIGZhY2UgPSBOVUxMOw0KKyAgICBpbnQgcmV0ID0gRlhGVF9OZXdfRmFjZShsaWJyYXJ5LCBmaWxlbmFtZSwgZmFjZV9pbmRleCwgJmZhY2UpOw0KKyAgICBpZiAocmV0KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXQgPSBGWEZUX1NldF9QaXhlbF9TaXplcyhmYWNlLCA2NCwgNjQpOw0KKyAgICBpZiAocmV0KSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gZmFjZTsNCit9DQordm9pZCBDRlhfRm9udE1ncjo6UmVsZWFzZUZhY2UoRlhGVF9GYWNlIGZhY2UpDQorew0KKyAgICBpZiAoZmFjZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9GYWNlTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUocG9zKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBLZXk7DQorICAgICAgICBDVFRGb250RGVzYyogdHRmYWNlOw0KKyAgICAgICAgbV9GYWNlTWFwLkdldE5leHRBc3NvYyhwb3MsIEtleSwgKHZvaWQqJil0dGZhY2UpOw0KKyAgICAgICAgaWYgKHR0ZmFjZS0+UmVsZWFzZUZhY2UoZmFjZSkpIHsNCisgICAgICAgICAgICBtX0ZhY2VNYXAuUmVtb3ZlS2V5KEtleSk7DQorICAgICAgICB9DQorICAgIH0NCit9DQorZXh0ZXJuICJDIiB7DQorICAgIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRGaXhlZEl0YWxpY0ZvbnREYXRhIFsxODc0Nl07DQorICAgIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRGaXhlZEZvbnREYXRhIFsxNzU5N107DQorICAgIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTYW5zSXRhbGljRm9udERhdGEgWzE2MzM5XTsNCisgICAgZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ19Gb3hpdFNhbnNGb250RGF0YSBbMTUwMjVdOw0KKyAgICBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBnX0ZveGl0U2VyaWZJdGFsaWNGb250RGF0YSBbMjEyMjddOw0KKyAgICBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBnX0ZveGl0U2VyaWZGb250RGF0YSBbMTk0NjldOw0KKyAgICBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBnX0ZveGl0Rml4ZWRCb2xkSXRhbGljRm9udERhdGEgWzE5MTUxXTsNCisgICAgZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ19Gb3hpdEZpeGVkQm9sZEZvbnREYXRhIFsxODA1NV07DQorICAgIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTYW5zQm9sZEl0YWxpY0ZvbnREYXRhIFsxNjQxOF07DQorICAgIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTYW5zQm9sZEZvbnREYXRhIFsxNjM0NF07DQorICAgIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTZXJpZkJvbGRJdGFsaWNGb250RGF0YSBbMjA3MzNdOw0KKyAgICBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBnX0ZveGl0U2VyaWZCb2xkRm9udERhdGEgWzE5Mzk1XTsNCisgICAgZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ19Gb3hpdFN5bWJvbEZvbnREYXRhWzE2NzI5XTsNCisgICAgZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ19Gb3hpdERpbmdiYXRzRm9udERhdGFbMjk1MTNdOw0KKyAgICBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBnX0ZveGl0U2VyaWZNTUZvbnREYXRhWzExMzQxN107DQorICAgIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGdfRm94aXRTYW5zTU1Gb250RGF0YVs2NjkxOV07DQorfTsNCitjb25zdCBGb3hpdEZvbnRzIGdfRm94aXRGb250c1sxNF0gPSB7DQorICAgIHtnX0ZveGl0Rml4ZWRGb250RGF0YSwgMTc1OTd9LA0KKyAgICB7Z19Gb3hpdEZpeGVkQm9sZEZvbnREYXRhLCAxODA1NX0sDQorICAgIHtnX0ZveGl0Rml4ZWRCb2xkSXRhbGljRm9udERhdGEsIDE5MTUxfSwNCisgICAge2dfRm94aXRGaXhlZEl0YWxpY0ZvbnREYXRhLCAxODc0Nn0sDQorICAgIHtnX0ZveGl0U2Fuc0ZvbnREYXRhLCAxNTAyNX0sDQorICAgIHtnX0ZveGl0U2Fuc0JvbGRGb250RGF0YSwgMTYzNDR9LA0KKyAgICB7Z19Gb3hpdFNhbnNCb2xkSXRhbGljRm9udERhdGEsIDE2NDE4fSwNCisgICAge2dfRm94aXRTYW5zSXRhbGljRm9udERhdGEsIDE2MzM5fSwNCisgICAge2dfRm94aXRTZXJpZkZvbnREYXRhLCAxOTQ2OX0sDQorICAgIHtnX0ZveGl0U2VyaWZCb2xkRm9udERhdGEsIDE5Mzk1fSwNCisgICAge2dfRm94aXRTZXJpZkJvbGRJdGFsaWNGb250RGF0YSwgMjA3MzN9LA0KKyAgICB7Z19Gb3hpdFNlcmlmSXRhbGljRm9udERhdGEsIDIxMjI3fSwNCisgICAge2dfRm94aXRTeW1ib2xGb250RGF0YSwgMTY3Mjl9LA0KKyAgICB7Z19Gb3hpdERpbmdiYXRzRm9udERhdGEsIDI5NTEzfSwNCit9Ow0KK3ZvaWQgX0ZQREZBUElfR2V0SW50ZXJuYWxGb250RGF0YShpbnQgaWQsIEZYX0xQQ0JZVEUmIGRhdGEsIEZYX0RXT1JEJiBzaXplKQ0KK3sNCisgICAgQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Rm9udE1ncigpLT5HZXRTdGFuZGFyZEZvbnQoZGF0YSwgc2l6ZSwgaWQpOw0KK30NCitGWF9CT09MIENGWF9Gb250TWdyOjpHZXRTdGFuZGFyZEZvbnQoRlhfTFBDQllURSYgcEZvbnREYXRhLCBGWF9EV09SRCYgc2l6ZSwgaW50IGluZGV4KQ0KK3sNCisgICAgaWYgKGluZGV4ID4gMTUgfHwgaW5kZXggPCAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgew0KKyAgICAgICAgaWYgKGluZGV4ID49IDE0KSB7DQorICAgICAgICAgICAgaWYgKGluZGV4ID09IDE0KSB7DQorICAgICAgICAgICAgICAgIHBGb250RGF0YSA9IGdfRm94aXRTZXJpZk1NRm9udERhdGE7DQorICAgICAgICAgICAgICAgIHNpemUgPSAxMTM0MTc7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcEZvbnREYXRhID0gZ19Gb3hpdFNhbnNNTUZvbnREYXRhOw0KKyAgICAgICAgICAgICAgICBzaXplID0gNjY5MTk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwRm9udERhdGEgPSBnX0ZveGl0Rm9udHNbaW5kZXhdLm1fcEZvbnREYXRhOw0KKyAgICAgICAgICAgIHNpemUgPSBnX0ZveGl0Rm9udHNbaW5kZXhdLm1fZHdTaXplOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDRlhfRm9udE1hcHBlcjo6Q0ZYX0ZvbnRNYXBwZXIoKQ0KK3sNCisgICAgRlhTWVNfbWVtc2V0MzIobV9Gb3hpdEZhY2VzLCAwLCBzaXplb2YgbV9Gb3hpdEZhY2VzKTsNCisgICAgbV9NTUZhY2VzWzBdID0gbV9NTUZhY2VzWzFdID0gTlVMTDsNCisgICAgbV9wRm9udEluZm8gPSBOVUxMOw0KKyAgICBtX2JMaXN0TG9hZGVkID0gRkFMU0U7DQorICAgIG1fcEZvbnRFbnVtZXJhdG9yID0gTlVMTDsNCit9DQorQ0ZYX0ZvbnRNYXBwZXI6On5DRlhfRm9udE1hcHBlcigpDQorew0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDE0OyBpICsrKQ0KKyAgICAgICAgaWYgKG1fRm94aXRGYWNlc1tpXSkgew0KKyAgICAgICAgICAgIEZYRlRfRG9uZV9GYWNlKG1fRm94aXRGYWNlc1tpXSk7DQorICAgICAgICB9DQorICAgIGlmIChtX01NRmFjZXNbMF0pIHsNCisgICAgICAgIEZYRlRfRG9uZV9GYWNlKG1fTU1GYWNlc1swXSk7DQorICAgIH0NCisgICAgaWYgKG1fTU1GYWNlc1sxXSkgew0KKyAgICAgICAgRlhGVF9Eb25lX0ZhY2UobV9NTUZhY2VzWzFdKTsNCisgICAgfQ0KKyAgICBpZiAobV9wRm9udEluZm8pIHsNCisgICAgICAgIG1fcEZvbnRJbmZvLT5SZWxlYXNlKCk7DQorICAgIH0NCit9DQordm9pZCBDRlhfRm9udE1hcHBlcjo6U2V0U3lzdGVtRm9udEluZm8oSUZYX1N5c3RlbUZvbnRJbmZvKiBwRm9udEluZm8pDQorew0KKyAgICBpZiAocEZvbnRJbmZvID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobV9wRm9udEluZm8pIHsNCisgICAgICAgIG1fcEZvbnRJbmZvLT5SZWxlYXNlKCk7DQorICAgIH0NCisgICAgbV9wRm9udEluZm8gPSBwRm9udEluZm87DQorfQ0KK3N0YXRpYyBDRlhfQnl0ZVN0cmluZyBfVFRfTm9ybWFsaXplTmFtZShGWF9MUENTVFIgZmFtaWx5KQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgbm9ybShmYW1pbHksIC0xKTsNCisgICAgbm9ybS5SZW1vdmUoJyAnKTsNCisgICAgbm9ybS5SZW1vdmUoJy0nKTsNCisgICAgbm9ybS5SZW1vdmUoJywnKTsNCisgICAgaW50IHBvcyA9IG5vcm0uRmluZCgnKycpOw0KKyAgICBpZiAocG9zID4gMCkgew0KKyAgICAgICAgbm9ybSA9IG5vcm0uTGVmdChwb3MpOw0KKyAgICB9DQorICAgIG5vcm0uTWFrZUxvd2VyKCk7DQorICAgIHJldHVybiBub3JtOw0KK30NCitDRlhfQnl0ZVN0cmluZyBfRlBERl9HZXROYW1lRnJvbVRUKEZYX0xQQ0JZVEUgbmFtZV90YWJsZSwgRlhfRFdPUkQgbmFtZV9pZCkNCit7DQorICAgIEZYX0xQQ0JZVEUgcHRyID0gbmFtZV90YWJsZSArIDI7DQorICAgIGludCBuYW1lX2NvdW50ID0gR0VUX1RUX1NIT1JUKHB0cik7DQorICAgIGludCBzdHJpbmdfb2Zmc2V0ID0gR0VUX1RUX1NIT1JUKHB0ciArIDIpOw0KKyAgICBGWF9MUENCWVRFIHN0cmluZ19wdHIgPSBuYW1lX3RhYmxlICsgc3RyaW5nX29mZnNldDsNCisgICAgcHRyICs9IDQ7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmFtZV9jb3VudDsgaSArKykgew0KKyAgICAgICAgaWYgKEdFVF9UVF9TSE9SVChwdHIgKyA2KSA9PSBuYW1lX2lkICYmIEdFVF9UVF9TSE9SVChwdHIpID09IDEgJiYgR0VUX1RUX1NIT1JUKHB0ciArIDIpID09IDApIHsNCisgICAgICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmdDKHN0cmluZ19wdHIgKyBHRVRfVFRfU0hPUlQocHRyICsgMTApLCBHRVRfVFRfU0hPUlQocHRyICsgOCkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcHRyICs9IDEyOw0KKyAgICB9DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KK30NCitzdGF0aWMgQ0ZYX0J5dGVTdHJpbmcgX0ZQREZfUmVhZFN0cmluZ0Zyb21GaWxlKEZYU1lTX0ZJTEUqIHBGaWxlLCBGWF9EV09SRCBzaXplKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgYnVmZmVyOw0KKyAgICBpZiAoIUZYU1lTX2ZyZWFkKGJ1ZmZlci5HZXRCdWZmZXIoc2l6ZSksIHNpemUsIDEsIHBGaWxlKSkgew0KKyAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgYnVmZmVyLlJlbGVhc2VCdWZmZXIoc2l6ZSk7DQorICAgIHJldHVybiBidWZmZXI7DQorfQ0KK3N0YXRpYyBDRlhfQnl0ZVN0cmluZyBfRlBERl9SZWFkU3RyaW5nRnJvbVN0cmVhbUZpbGUoSUZYX0ZpbGVTdHJlYW0qIHBGaWxlLCBGWF9EV09SRCBzaXplKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgYnVmZmVyOw0KKyAgICBpZiAoIXBGaWxlLT5SZWFkQmxvY2soYnVmZmVyLkdldEJ1ZmZlcihzaXplKSwgc2l6ZSkpIHsNCisgICAgICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIGJ1ZmZlci5SZWxlYXNlQnVmZmVyKHNpemUpOw0KKyAgICByZXR1cm4gYnVmZmVyOw0KK30NCitDRlhfQnl0ZVN0cmluZyBfRlBERl9Mb2FkVGFibGVGcm9tVFQoRlhTWVNfRklMRSogcEZpbGUsIEZYX0xQQ0JZVEUgcFRhYmxlcywgRlhfRFdPUkQgblRhYmxlcywgRlhfRFdPUkQgdGFnKQ0KK3sNCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IG5UYWJsZXM7IGkgKyspIHsNCisgICAgICAgIEZYX0xQQ0JZVEUgcCA9IHBUYWJsZXMgKyBpICogMTY7DQorICAgICAgICBpZiAoR0VUX1RUX0xPTkcocCkgPT0gdGFnKSB7DQorICAgICAgICAgICAgRlhfRFdPUkQgb2Zmc2V0ID0gR0VUX1RUX0xPTkcocCArIDgpOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIHNpemUgPSBHRVRfVFRfTE9ORyhwICsgMTIpOw0KKyAgICAgICAgICAgIEZYU1lTX2ZzZWVrKHBGaWxlLCBvZmZzZXQsIEZYU1lTX1NFRUtfU0VUKTsNCisgICAgICAgICAgICByZXR1cm4gX0ZQREZfUmVhZFN0cmluZ0Zyb21GaWxlKHBGaWxlLCBzaXplKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgX0ZQREZfTG9hZFRhYmxlRnJvbVRUU3RyZWFtRmlsZShJRlhfRmlsZVN0cmVhbSogcEZpbGUsIEZYX0xQQ0JZVEUgcFRhYmxlcywgRlhfRFdPUkQgblRhYmxlcywgRlhfRFdPUkQgdGFnKQ0KK3sNCisgICAgZm9yIChGWF9EV09SRCBpID0gMDsgaSA8IG5UYWJsZXM7IGkgKyspIHsNCisgICAgICAgIEZYX0xQQ0JZVEUgcCA9IHBUYWJsZXMgKyBpICogMTY7DQorICAgICAgICBpZiAoR0VUX1RUX0xPTkcocCkgPT0gdGFnKSB7DQorICAgICAgICAgICAgRlhfRFdPUkQgb2Zmc2V0ID0gR0VUX1RUX0xPTkcocCArIDgpOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIHNpemUgPSBHRVRfVFRfTE9ORyhwICsgMTIpOw0KKyAgICAgICAgICAgIENGWF9CeXRlU3RyaW5nIGJ1ZmZlcjsNCisgICAgICAgICAgICBpZiAoIXBGaWxlLT5SZWFkQmxvY2soYnVmZmVyLkdldEJ1ZmZlcihzaXplKSwgb2Zmc2V0LCBzaXplKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnVmZmVyLlJlbGVhc2VCdWZmZXIoc2l6ZSk7DQorICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gQ0ZYX0J5dGVTdHJpbmcoKTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ0ZYX0ZvbnRNYXBwZXI6OkdldFBTTmFtZUZyb21UVCh2b2lkKiBoRm9udCkNCit7DQorICAgIGlmIChtX3BGb250SW5mbyA9PSBOVUxMKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIHJlc3VsdDsNCisgICAgRlhfRFdPUkQgc2l6ZSA9IG1fcEZvbnRJbmZvLT5HZXRGb250RGF0YShoRm9udCwgMHg2ZTYxNmQ2NSwgTlVMTCwgMCk7DQorICAgIGlmIChzaXplKSB7DQorICAgICAgICBGWF9MUEJZVEUgYnVmZmVyID0gRlhfQWxsb2MoRlhfQllURSwgc2l6ZSk7DQorICAgICAgICBpZiAoIWJ1ZmZlcikgew0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQorICAgICAgICB9DQorICAgICAgICBtX3BGb250SW5mby0+R2V0Rm9udERhdGEoaEZvbnQsIDB4NmU2MTZkNjUsIGJ1ZmZlciwgc2l6ZSk7DQorICAgICAgICByZXN1bHQgPSBfRlBERl9HZXROYW1lRnJvbVRUKGJ1ZmZlciwgNik7DQorICAgICAgICBGWF9GcmVlKGJ1ZmZlcik7DQorICAgIH0NCisgICAgcmV0dXJuIHJlc3VsdDsNCit9DQordm9pZCBDRlhfRm9udE1hcHBlcjo6QWRkSW5zdGFsbGVkRm9udChjb25zdCBDRlhfQnl0ZVN0cmluZyYgbmFtZSwgaW50IGNoYXJzZXQpDQorew0KKyAgICBpZiAobV9wRm9udEluZm8gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX0NoYXJzZXRBcnJheS5GaW5kKChGWF9EV09SRCljaGFyc2V0KSA9PSAtMSkgew0KKyAgICAgICAgbV9DaGFyc2V0QXJyYXkuQWRkKChGWF9EV09SRCljaGFyc2V0KTsNCisgICAgICAgIG1fRmFjZUFycmF5LkFkZChuYW1lKTsNCisgICAgfQ0KKyAgICBpZiAobmFtZSA9PSBtX0xhc3RGYW1pbHkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBGWF9MUENCWVRFIHB0ciA9IG5hbWU7DQorICAgIEZYX0JPT0wgYkxvY2FsaXplZCA9IEZBTFNFOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5hbWUuR2V0TGVuZ3RoKCk7IGkgKyspDQorICAgICAgICBpZiAocHRyW2ldID4gMHg4MCkgew0KKyAgICAgICAgICAgIGJMb2NhbGl6ZWQgPSBUUlVFOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICBpZiAoYkxvY2FsaXplZCkgew0KKyAgICAgICAgdm9pZCogaEZvbnQgPSBtX3BGb250SW5mby0+R2V0Rm9udChuYW1lKTsNCisgICAgICAgIGlmIChoRm9udCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgRlhfQk9PTCBiRXhhY3Q7DQorICAgICAgICAgICAgaEZvbnQgPSBtX3BGb250SW5mby0+TWFwRm9udCgwLCAwLCBGWEZPTlRfREVGQVVMVF9DSEFSU0VULCAwLCBuYW1lLCBiRXhhY3QpOw0KKyAgICAgICAgICAgIGlmIChoRm9udCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyBuZXdfbmFtZSA9IEdldFBTTmFtZUZyb21UVChoRm9udCk7DQorICAgICAgICBpZiAoIW5ld19uYW1lLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIG5ld19uYW1lLkluc2VydCgwLCAnICcpOw0KKyAgICAgICAgICAgIG1fSW5zdGFsbGVkVFRGb250cy5BZGQobmV3X25hbWUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wRm9udEluZm8tPkRlbGV0ZUZvbnQoaEZvbnQpOw0KKyAgICB9DQorICAgIG1fSW5zdGFsbGVkVFRGb250cy5BZGQobmFtZSk7DQorICAgIG1fTGFzdEZhbWlseSA9IG5hbWU7DQorfQ0KK3ZvaWQgQ0ZYX0ZvbnRNYXBwZXI6OkxvYWRJbnN0YWxsZWRGb250cygpDQorew0KKyAgICBpZiAobV9wRm9udEluZm8gPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX2JMaXN0TG9hZGVkKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fYkxpc3RMb2FkZWQpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBtX3BGb250SW5mby0+RW51bUZvbnRMaXN0KHRoaXMpOw0KKyAgICBtX2JMaXN0TG9hZGVkID0gVFJVRTsNCit9DQorQ0ZYX0J5dGVTdHJpbmcgQ0ZYX0ZvbnRNYXBwZXI6Ok1hdGNoSW5zdGFsbGVkRm9udHMoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5vcm1fbmFtZSkNCit7DQorICAgIExvYWRJbnN0YWxsZWRGb250cygpOw0KKyAgICBpbnQgaTsNCisgICAgZm9yIChpID0gbV9JbnN0YWxsZWRUVEZvbnRzLkdldFNpemUoKSAtIDE7IGkgPj0gMDsgaSAtLSkgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgbm9ybTEgPSBfVFRfTm9ybWFsaXplTmFtZShtX0luc3RhbGxlZFRURm9udHNbaV0pOw0KKyAgICAgICAgaWYgKG5vcm0xID09IG5vcm1fbmFtZSkgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChpIDwgMCkgew0KKyAgICAgICAgcmV0dXJuIENGWF9CeXRlU3RyaW5nKCk7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgbWF0Y2ggPSBtX0luc3RhbGxlZFRURm9udHNbaV07DQorICAgIGlmIChtYXRjaFswXSA9PSAnICcpIHsNCisgICAgICAgIG1hdGNoID0gbV9JbnN0YWxsZWRUVEZvbnRzW2kgKyAxXTsNCisgICAgfQ0KKyAgICByZXR1cm4gbWF0Y2g7DQorfQ0KK3R5cGVkZWYgc3RydWN0IF9DSEFSU0VUX01BUF8gew0KKyAgICBGWF9CWVRFIGNoYXJzZXQ7DQorICAgIEZYX1dPUkQgY29kZXBhZ2U7DQorfSBDSEFSU0VUX01BUDsNCitzdGF0aWMgY29uc3QgQ0hBUlNFVF9NQVAgZ19Db2RlcGFnZTJDaGFyc2V0VGFibGVbXSA9IHsNCisgICAgeyAxCSAsIDAJfSwNCisgICAgeyAyCSAsIDQyCX0sDQorICAgIHsgMjU0LCA0MzcJfSwNCisgICAgeyAyNTUsIDg1MAl9LA0KKyAgICB7IDIyMiwgODc0CX0sDQorICAgIHsgMTI4LCA5MzIJfSwNCisgICAgeyAxMzQsIDkzNgl9LA0KKyAgICB7IDEyOSwgOTQ5CX0sDQorICAgIHsgMTM2LCA5NTAJfSwNCisgICAgeyAyMzgsIDEyNTAJfSwNCisgICAgeyAyMDQsIDEyNTEJfSwNCisgICAgeyAwLCAgIDEyNTIJfSwNCisgICAgeyAxNjEsIDEyNTMJfSwNCisgICAgeyAxNjIsIDEyNTQJfSwNCisgICAgeyAxNzcsIDEyNTUJfSwNCisgICAgeyAxNzgsIDEyNTYJfSwNCisgICAgeyAxODYsIDEyNTcJfSwNCisgICAgeyAxNjMsIDEyNTggfSwNCisgICAgeyAxMzAsIDEzNjEgfSwNCisgICAgeyA3NywgMTAwMDAgfSwNCisgICAgeyA3OCwgMTAwMDEgfSwNCisgICAgeyA3OSwgMTAwMDMgfSwNCisgICAgeyA4MCwgMTAwMDggfSwNCisgICAgeyA4MSwgMTAwMDIgfSwNCisgICAgeyA4MywgMTAwMDUgfSwNCisgICAgeyA4NCwgMTAwMDQgfSwNCisgICAgeyA4NSwgMTAwMDYgfSwNCisgICAgeyA4NiwgMTAwODEgfSwNCisgICAgeyA4NywgMTAwMjEgfSwNCisgICAgeyA4OCwgMTAwMjkgfSwNCisgICAgeyA4OSwgMTAwMDcgfSwNCit9Ow0KK0ZYX0JZVEUgX0dldENoYXJzZXRGcm9tQ29kZVBhZ2UoRlhfV09SRCBjb2RlcGFnZSkNCit7DQorICAgIEZYX0lOVDMyIGlFbmQgPSBzaXplb2YoZ19Db2RlcGFnZTJDaGFyc2V0VGFibGUpIC8gc2l6ZW9mKENIQVJTRVRfTUFQKSAtIDE7DQorICAgIEZYU1lTX2Fzc2VydChpRW5kID49IDApOw0KKyAgICBGWF9JTlQzMiBpU3RhcnQgPSAwLCBpTWlkOw0KKyAgICBkbyB7DQorICAgICAgICBpTWlkID0gKGlTdGFydCArIGlFbmQpIC8gMjsNCisgICAgICAgIGNvbnN0IENIQVJTRVRfTUFQICYgY3AgPSBnX0NvZGVwYWdlMkNoYXJzZXRUYWJsZVtpTWlkXTsNCisgICAgICAgIGlmIChjb2RlcGFnZSA9PSBjcC5jb2RlcGFnZSkgew0KKyAgICAgICAgICAgIHJldHVybiBjcC5jaGFyc2V0Ow0KKyAgICAgICAgfSBlbHNlIGlmIChjb2RlcGFnZSA8IGNwLmNvZGVwYWdlKSB7DQorICAgICAgICAgICAgaUVuZCA9IGlNaWQgLSAxOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpU3RhcnQgPSBpTWlkICsgMTsNCisgICAgICAgIH0NCisgICAgfSB3aGlsZSAoaVN0YXJ0IDw9IGlFbmQpOw0KKyAgICByZXR1cm4gMTsNCit9DQorRlhfRFdPUkQgX0dldENvZGVQYWdlUmFuZ2VGcm9tQ2hhcnNldChpbnQgY2hhcnNldCkNCit7DQorICAgIGlmIChjaGFyc2V0ID09IEZYRk9OVF9FQVNURVVST1BFX0NIQVJTRVQpIHsNCisgICAgICAgIHJldHVybiAxIDw8IDE7DQorICAgIH0NCisgICAgaWYgKGNoYXJzZXQgPT0gRlhGT05UX0dSRUVLX0NIQVJTRVQpIHsNCisgICAgICAgIHJldHVybiAxIDw8IDM7DQorICAgIH0NCisgICAgaWYgKGNoYXJzZXQgPT0gRlhGT05UX1RVUktJU0hfQ0hBUlNFVCkgew0KKyAgICAgICAgcmV0dXJuIDEgPDwgNDsNCisgICAgfQ0KKyAgICBpZiAoY2hhcnNldCA9PSBGWEZPTlRfSEVCUkVXX0NIQVJTRVQpIHsNCisgICAgICAgIHJldHVybiAxIDw8IDU7DQorICAgIH0NCisgICAgaWYgKGNoYXJzZXQgPT0gRlhGT05UX0FSQUJJQ19DSEFSU0VUKSB7DQorICAgICAgICByZXR1cm4gMSA8PCA2Ow0KKyAgICB9DQorICAgIGlmIChjaGFyc2V0ID09IEZYRk9OVF9CQUxUSUNfQ0hBUlNFVCkgew0KKyAgICAgICAgcmV0dXJuIDEgPDwgNzsNCisgICAgfQ0KKyAgICBpZiAoY2hhcnNldCA9PSBGWEZPTlRfVEhBSV9DSEFSU0VUKSB7DQorICAgICAgICByZXR1cm4gMSA8PCAxNjsNCisgICAgfQ0KKyAgICBpZiAoY2hhcnNldCA9PSBGWEZPTlRfU0hJRlRKSVNfQ0hBUlNFVCkgew0KKyAgICAgICAgcmV0dXJuIDEgPDwgMTc7DQorICAgIH0NCisgICAgaWYgKGNoYXJzZXQgPT0gRlhGT05UX0dCMjMxMl9DSEFSU0VUKSB7DQorICAgICAgICByZXR1cm4gMSA8PCAxODsNCisgICAgfQ0KKyAgICBpZiAoY2hhcnNldCA9PSBGWEZPTlRfQ0hJTkVTRUJJRzVfQ0hBUlNFVCkgew0KKyAgICAgICAgcmV0dXJuIDEgPDwgMjA7DQorICAgIH0NCisgICAgaWYgKGNoYXJzZXQgPT0gRlhGT05UX0hBTkdFVUxfQ0hBUlNFVCkgew0KKyAgICAgICAgcmV0dXJuIDEgPDwgMTk7DQorICAgIH0NCisgICAgaWYgKGNoYXJzZXQgPT0gRlhGT05UX1NZTUJPTF9DSEFSU0VUKSB7DQorICAgICAgICByZXR1cm4gMSA8PCAzMTsNCisgICAgfQ0KKyAgICByZXR1cm4gMSA8PCAyMTsNCit9DQorc3RhdGljIGludCBDUDJDaGFyU2V0KGludCBjcCkNCit7DQorICAgIGlmKGNwID09IDkzMikgew0KKyAgICAgICAgcmV0dXJuIEZYRk9OVF9TSElGVEpJU19DSEFSU0VUOw0KKyAgICB9IGVsc2UgaWYoY3AgPT0gOTM2KSB7DQorICAgICAgICByZXR1cm4gRlhGT05UX0dCMjMxMl9DSEFSU0VUOw0KKyAgICB9IGVsc2UgaWYoY3AgPT0gOTQ5KSB7DQorICAgICAgICByZXR1cm4gRlhGT05UX0hBTkdFVUxfQ0hBUlNFVDsNCisgICAgfSBlbHNlIGlmKGNwID09IDk1MCkgew0KKyAgICAgICAgcmV0dXJuIEZYRk9OVF9DSElORVNFQklHNV9DSEFSU0VUOw0KKyAgICB9DQorICAgIHJldHVybiBGWEZPTlRfREVGQVVMVF9DSEFSU0VUOw0KK30NCitGWEZUX0ZhY2UgQ0ZYX0ZvbnRNYXBwZXI6OlVzZUludGVybmFsU3Vic3QoQ0ZYX1N1YnN0Rm9udCogcFN1YnN0Rm9udCwgaW50IGlCYXNlRm9udCwgaW50IGl0YWxpY19hbmdsZSwgaW50IHdlaWdodCwgaW50IHBpY3RoZmFtaWx5KQ0KK3sNCisgICAgaWYgKGlCYXNlRm9udCA8IDEyKSB7DQorICAgICAgICBpZiAobV9Gb3hpdEZhY2VzW2lCYXNlRm9udF0pIHsNCisgICAgICAgICAgICByZXR1cm4gbV9Gb3hpdEZhY2VzW2lCYXNlRm9udF07DQorICAgICAgICB9DQorICAgICAgICBGWF9MUENCWVRFIHBGb250RGF0YSA9IE5VTEw7DQorICAgICAgICBGWF9EV09SRCBzaXplID0gMDsNCisgICAgICAgIGlmIChtX3BGb250TWdyLT5HZXRTdGFuZGFyZEZvbnQocEZvbnREYXRhLCBzaXplLCBpQmFzZUZvbnQpKSB7DQorICAgICAgICAgICAgbV9Gb3hpdEZhY2VzW2lCYXNlRm9udF0gPSBtX3BGb250TWdyLT5HZXRGaXhlZEZhY2UocEZvbnREYXRhLCBzaXplLCAwKTsNCisgICAgICAgICAgICByZXR1cm4gbV9Gb3hpdEZhY2VzW2lCYXNlRm9udF07DQorICAgICAgICB9DQorICAgIH0NCisgICAgcFN1YnN0Rm9udC0+bV9TdWJzdEZsYWdzIHw9IEZYRk9OVF9TVUJTVF9NTTsNCisgICAgcFN1YnN0Rm9udC0+bV9JdGFsaWNBbmdsZSA9IGl0YWxpY19hbmdsZTsNCisgICAgaWYgKHdlaWdodCkgew0KKyAgICAgICAgcFN1YnN0Rm9udC0+bV9XZWlnaHQgPSB3ZWlnaHQ7DQorICAgIH0NCisgICAgaWYgKHBpY3RoZmFtaWx5ICYgRlhGT05UX0ZGX1JPTUFOKSB7DQorICAgICAgICBwU3Vic3RGb250LT5tX1dlaWdodCA9IHBTdWJzdEZvbnQtPm1fV2VpZ2h0ICogNCAvIDU7DQorICAgICAgICBwU3Vic3RGb250LT5tX0ZhbWlseSA9ICJDaHJvbWUgU2VyaWYiOw0KKyAgICAgICAgaWYgKG1fTU1GYWNlc1sxXSkgew0KKyAgICAgICAgICAgIHJldHVybiBtX01NRmFjZXNbMV07DQorICAgICAgICB9DQorICAgICAgICBGWF9MUENCWVRFIHBGb250RGF0YSA9IE5VTEw7DQorICAgICAgICBGWF9EV09SRCBzaXplOw0KKyAgICAgICAgbV9wRm9udE1nci0+R2V0U3RhbmRhcmRGb250KHBGb250RGF0YSwgc2l6ZSwgMTQpOw0KKyAgICAgICAgbV9NTUZhY2VzWzFdID0gbV9wRm9udE1nci0+R2V0Rml4ZWRGYWNlKHBGb250RGF0YSwgc2l6ZSwgMCk7DQorICAgICAgICByZXR1cm4gbV9NTUZhY2VzWzFdOw0KKyAgICB9DQorICAgIHBTdWJzdEZvbnQtPm1fRmFtaWx5ID0gIkNocm9tZSBTYW5zIjsNCisgICAgaWYgKG1fTU1GYWNlc1swXSkgew0KKyAgICAgICAgcmV0dXJuIG1fTU1GYWNlc1swXTsNCisgICAgfQ0KKyAgICBGWF9MUENCWVRFIHBGb250RGF0YSA9IE5VTEw7DQorICAgIEZYX0RXT1JEIHNpemUgPSAwOw0KKyAgICBtX3BGb250TWdyLT5HZXRTdGFuZGFyZEZvbnQocEZvbnREYXRhLCBzaXplLCAxNSk7DQorICAgIG1fTU1GYWNlc1swXSA9IG1fcEZvbnRNZ3ItPkdldEZpeGVkRmFjZShwRm9udERhdGEsIHNpemUsIDApOw0KKyAgICByZXR1cm4gbV9NTUZhY2VzWzBdOw0KK30NCitjb25zdCBzdHJ1Y3QgX0FsdEZvbnRGYW1pbHkgew0KKyAgICBGWF9MUENTVFIgbV9wRm9udE5hbWU7DQorICAgIEZYX0xQQ1NUUiBtX3BGb250RmFtaWx5Ow0KK30NCitnX0FsdEZvbnRGYW1pbGllc1tdID0gew0KKyAgICB7IkFHYXJhbW9uZFBybyIsICJBZG9iZSBHYXJhbW9uZCBQcm8ifSwNCisgICAgeyJCYW5rR290aGljQlQtTWVkaXVtIiwgIkJhbmtHb3RoaWMgTWQgQlQifSwNCisgICAgeyJGb3J0ZU1UIiwgIkZvcnRlIn0sDQorfTsNCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIGludCBjb21wYXJlRm9udEZhbWlseVN0cmluZyhjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIGVsZW1lbnQpDQorICAgIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIHN0cl9rZXkoKEZYX0xQQ1NUUilrZXkpOw0KKyAgICAgICAgaWYgKHN0cl9rZXkuRmluZCgoKF9BbHRGb250RmFtaWx5KillbGVtZW50KS0+bV9wRm9udE5hbWUpICE9IC0xKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gRlhTWVNfc3RyaWNtcCgoRlhfTFBDU1RSKWtleSwgKChfQWx0Rm9udEZhbWlseSopZWxlbWVudCktPm1fcEZvbnROYW1lKTsNCisgICAgfQ0KK30NCisjZGVmaW5lIEZYX0ZPTlRfU1RZTEVfTm9uZQkJMHgwMA0KKyNkZWZpbmUgRlhfRk9OVF9TVFlMRV9Cb2xkCQkweDAxDQorI2RlZmluZSBGWF9GT05UX1NUWUxFX0l0YWxpYwkweDAyDQorI2RlZmluZSBGWF9GT05UX1NUWUxFX0JvbGRCb2xkCTB4MDQNCitzdGF0aWMgQ0ZYX0J5dGVTdHJpbmcgX0dldEZvbnRGYW1pbHkoQ0ZYX0J5dGVTdHJpbmcgZm9udE5hbWUsIGludCBuU3R5bGUpDQorew0KKyAgICBpZiAoZm9udE5hbWUuRmluZCgiU2NyaXB0IikgPj0gMCkgew0KKyAgICAgICAgaWYgKChuU3R5bGUgJiBGWF9GT05UX1NUWUxFX0JvbGQpID09IEZYX0ZPTlRfU1RZTEVfQm9sZCkgew0KKyAgICAgICAgICAgIGZvbnROYW1lID0gIlNjcmlwdE1UQm9sZCI7DQorICAgICAgICB9IGVsc2UgaWYgKGZvbnROYW1lLkZpbmQoIlBhbGFjZSIpID49IDApIHsNCisgICAgICAgICAgICBmb250TmFtZSA9ICJQYWxhY2VTY3JpcHRNVCI7DQorICAgICAgICB9IGVsc2UgaWYgKGZvbnROYW1lLkZpbmQoIkZyZW5jaCIpID49IDApIHsNCisgICAgICAgICAgICBmb250TmFtZSA9ICJGcmVuY2hTY3JpcHRNVCI7DQorICAgICAgICB9IGVsc2UgaWYgKGZvbnROYW1lLkZpbmQoIkZyZWVTdHlsZSIpID49IDApIHsNCisgICAgICAgICAgICBmb250TmFtZSA9ICJGcmVlU3R5bGVTY3JpcHQiOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGZvbnROYW1lOw0KKyAgICB9DQorICAgIF9BbHRGb250RmFtaWx5KiBmb3VuZCA9IChfQWx0Rm9udEZhbWlseSopRlhTWVNfYnNlYXJjaCgoRlhfTFBDU1RSKWZvbnROYW1lLCBnX0FsdEZvbnRGYW1pbGllcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIGdfQWx0Rm9udEZhbWlsaWVzIC8gc2l6ZW9mIChfQWx0Rm9udEZhbWlseSksIHNpemVvZiAoX0FsdEZvbnRGYW1pbHkpLCBjb21wYXJlRm9udEZhbWlseVN0cmluZyk7DQorICAgIGlmIChmb3VuZCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gZm9udE5hbWU7DQorICAgIH0NCisgICAgcmV0dXJuIGZvdW5kLT5tX3BGb250RmFtaWx5Ow0KK307DQordHlwZWRlZiBzdHJ1Y3QgX0ZYX0ZvbnRTdHlsZSB7DQorICAgIEZYX0xQQ1NUUiBzdHlsZTsNCisgICAgRlhfSU5UMzIgbGVuOw0KK30gRlhfRm9udFN0eWxlOw0KK2NvbnN0IEZYX0ZvbnRTdHlsZSBnX0ZvbnRTdHlsZXNbXSA9IHsNCisgICAgIkJvbGQiLCA0LA0KKyAgICAiSXRhbGljIiwgNiwNCisgICAgIkJvbGRJdGFsaWMiLCAxMCwNCisgICAgIlJlZyIsIDMsDQorICAgICJSZWd1bGFyIiwgNywNCit9Ow0KK0NGWF9CeXRlU3RyaW5nIFBhcnNlU3R5bGUoRlhfTFBDU1RSIHBTdHlsZSwgaW50IGlMZW4sIGludCBpSW5kZXgpDQorew0KKyAgICBDRlhfQnl0ZVRleHRCdWYgYnVmOw0KKyAgICBpZiAoIWlMZW4gfHwgaUxlbiA8PSBpSW5kZXgpIHsNCisgICAgICAgIHJldHVybiBidWYuR2V0Qnl0ZVN0cmluZygpOw0KKyAgICB9DQorICAgIHdoaWxlIChpSW5kZXggPCBpTGVuKSB7DQorICAgICAgICBpZiAocFN0eWxlW2lJbmRleF0gPT0gJywnKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgICAgICBidWYuQXBwZW5kQ2hhcihwU3R5bGVbaUluZGV4XSk7DQorICAgICAgICArK2lJbmRleDsNCisgICAgfQ0KKyAgICByZXR1cm4gYnVmLkdldEJ5dGVTdHJpbmcoKTsNCit9DQorRlhfSU5UMzIgR2V0U3R5bGVUeXBlKGNvbnN0IENGWF9CeXRlU3RyaW5nICZic1N0eWxlLCBGWF9CT09MIGJSZXZlcnQpDQorew0KKyAgICBGWF9JTlQzMiBpTGVuID0gYnNTdHlsZS5HZXRMZW5ndGgoKTsNCisgICAgaWYgKCFpTGVuKSB7DQorICAgICAgICByZXR1cm4gLTE7DQorICAgIH0NCisgICAgaW50IGlTaXplID0gc2l6ZW9mKGdfRm9udFN0eWxlcykgLyBzaXplb2YoRlhfRm9udFN0eWxlKTsNCisgICAgY29uc3QgRlhfRm9udFN0eWxlICpwU3R5bGUgPSBOVUxMOw0KKyAgICBmb3IgKGludCBpID0gaVNpemUgLSAxOyBpID49IDA7IC0taSkgew0KKyAgICAgICAgcFN0eWxlID0gZ19Gb250U3R5bGVzICsgaTsNCisgICAgICAgIGlmICghcFN0eWxlIHx8IHBTdHlsZS0+bGVuID4gaUxlbikgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFiUmV2ZXJ0KSB7DQorICAgICAgICAgICAgaWYgKGJzU3R5bGUuTGVmdChwU3R5bGUtPmxlbikuQ29tcGFyZShwU3R5bGUtPnN0eWxlKSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKGJzU3R5bGUuUmlnaHQocFN0eWxlLT5sZW4pLkNvbXBhcmUocFN0eWxlLT5zdHlsZSkgPT0gMCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gaTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIC0xOw0KK30NCitGWF9CT09MIENoZWNrU3VwcG9ydFRoaXJkUGFydEZvbnQoQ0ZYX0J5dGVTdHJpbmcgbmFtZSwgaW50ICZQaXRjaEZhbWlseSkNCit7DQorICAgIGlmIChuYW1lID09IEZYX0JTVFJDKCJNeXJpYWRQcm8iKSkgew0KKyAgICAgICAgUGl0Y2hGYW1pbHkgJj0gfkZYRk9OVF9GRl9ST01BTjsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhGVF9GYWNlIENGWF9Gb250TWFwcGVyOjpGaW5kU3Vic3RGb250KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lLCBGWF9CT09MIGJUcnVlVHlwZSwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3ZWlnaHQsIGludCBpdGFsaWNfYW5nbGUsIGludCBXaW5kb3dDUCwgQ0ZYX1N1YnN0Rm9udCogcFN1YnN0Rm9udCkNCit7DQorICAgIGlmICghKGZsYWdzICYgRlhGT05UX1VTRUVYVEVSTkFUVFIpKSB7DQorICAgICAgICB3ZWlnaHQgPSBGWEZPTlRfRldfTk9STUFMOw0KKyAgICAgICAgaXRhbGljX2FuZ2xlID0gMDsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBTdWJzdE5hbWUgPSBuYW1lOw0KKyAgICBTdWJzdE5hbWUuUmVtb3ZlKDB4MjApOw0KKyAgICBpZiAoYlRydWVUeXBlKSB7DQorICAgICAgICBpZiAobmFtZVswXSA9PSAnQCcpIHsNCisgICAgICAgICAgICBTdWJzdE5hbWUgPSBuYW1lLk1pZCgxKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBfUERGX0dldFN0YW5kYXJkRm9udE5hbWUoU3Vic3ROYW1lKTsNCisgICAgaWYgKFN1YnN0TmFtZSA9PSBGWF9CU1RSQygiU3ltYm9sIikgJiYgIWJUcnVlVHlwZSkgew0KKyAgICAgICAgcFN1YnN0Rm9udC0+bV9GYW1pbHkgPSAiQ2hyb21lIFN5bWJvbCI7DQorICAgICAgICBwU3Vic3RGb250LT5tX0NoYXJzZXQgPSBGWEZPTlRfU1lNQk9MX0NIQVJTRVQ7DQorICAgICAgICBwU3Vic3RGb250LT5tX1N1YnN0RmxhZ3MgfD0gRlhGT05UX1NVQlNUX1NUQU5EQVJEOw0KKyAgICAgICAgaWYgKG1fRm94aXRGYWNlc1sxMl0pIHsNCisgICAgICAgICAgICByZXR1cm4gbV9Gb3hpdEZhY2VzWzEyXTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQQ0JZVEUgcEZvbnREYXRhID0gTlVMTDsNCisgICAgICAgIEZYX0RXT1JEIHNpemUgPSAwOw0KKyAgICAgICAgbV9wRm9udE1nci0+R2V0U3RhbmRhcmRGb250KHBGb250RGF0YSwgc2l6ZSwgMTIpOw0KKyAgICAgICAgbV9Gb3hpdEZhY2VzWzEyXSA9IG1fcEZvbnRNZ3ItPkdldEZpeGVkRmFjZShwRm9udERhdGEsIHNpemUsIDApOw0KKyAgICAgICAgcmV0dXJuIG1fRm94aXRGYWNlc1sxMl07DQorICAgIH0NCisgICAgaWYgKFN1YnN0TmFtZSA9PSBGWF9CU1RSQygiWmFwZkRpbmdiYXRzIikpIHsNCisgICAgICAgIHBTdWJzdEZvbnQtPm1fRmFtaWx5ID0gIkNocm9tZSBEaW5nYmF0cyI7DQorICAgICAgICBwU3Vic3RGb250LT5tX0NoYXJzZXQgPSBGWEZPTlRfU1lNQk9MX0NIQVJTRVQ7DQorICAgICAgICBwU3Vic3RGb250LT5tX1N1YnN0RmxhZ3MgfD0gRlhGT05UX1NVQlNUX1NUQU5EQVJEOw0KKyAgICAgICAgaWYgKG1fRm94aXRGYWNlc1sxM10pIHsNCisgICAgICAgICAgICByZXR1cm4gbV9Gb3hpdEZhY2VzWzEzXTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQQ0JZVEUgcEZvbnREYXRhID0gTlVMTDsNCisgICAgICAgIEZYX0RXT1JEIHNpemUgPSAwOw0KKyAgICAgICAgbV9wRm9udE1nci0+R2V0U3RhbmRhcmRGb250KHBGb250RGF0YSwgc2l6ZSwgMTMpOw0KKyAgICAgICAgbV9Gb3hpdEZhY2VzWzEzXSA9IG1fcEZvbnRNZ3ItPkdldEZpeGVkRmFjZShwRm9udERhdGEsIHNpemUsIDApOw0KKyAgICAgICAgcmV0dXJuIG1fRm94aXRGYWNlc1sxM107DQorICAgIH0NCisgICAgaW50IGlCYXNlRm9udCA9IDA7DQorICAgIENGWF9CeXRlU3RyaW5nIGZhbWlseSwgc3R5bGU7DQorICAgIEZYX0JPT0wJYkhhc0NvbW1hID0gRkFMU0U7DQorICAgIEZYX0JPT0wgYkhhc0h5cGVuID0gRkFMU0U7DQorICAgIGludCBmaW5kID0gU3Vic3ROYW1lLkZpbmQoRlhfQlNUUkMoIiwiKSwgMCk7DQorICAgIGlmIChmaW5kID49IDApIHsNCisgICAgICAgIGZhbWlseSA9IFN1YnN0TmFtZS5MZWZ0KGZpbmQpOw0KKyAgICAgICAgX1BERl9HZXRTdGFuZGFyZEZvbnROYW1lKGZhbWlseSk7DQorICAgICAgICBzdHlsZSA9IFN1YnN0TmFtZS5NaWQoZmluZCArIDEpOw0KKyAgICAgICAgYkhhc0NvbW1hID0gVFJVRTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZhbWlseSA9IFN1YnN0TmFtZTsNCisgICAgfQ0KKyAgICBmb3IgKDsgaUJhc2VGb250IDwgMTI7IGlCYXNlRm9udCArKykNCisgICAgICAgIGlmIChmYW1pbHkgPT0gQ0ZYX0J5dGVTdHJpbmdDKGdfQmFzZTE0Rm9udE5hbWVzW2lCYXNlRm9udF0pKSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIGludCBQaXRjaEZhbWlseSA9IDA7DQorICAgIEZYX0JPT0wgYkl0YWxpYyA9IEZBTFNFOw0KKyAgICBGWF9EV09SRCBuU3R5bGUgPSAwOw0KKyAgICBGWF9CT09MIGJTdHlsZUF2YWlsID0gRkFMU0U7DQorICAgIEZYX0JPT0wgYkZhbWlseVN0eWxlSXNXaG9sZSA9IEZBTFNFOw0KKyAgICBGWF9CT09MIGJOZXh0RiA9IEZBTFNFOw0KKyAgICBpZiAoaUJhc2VGb250IDwgMTIpIHsNCisgICAgICAgIGZhbWlseSA9IGdfQmFzZTE0Rm9udE5hbWVzW2lCYXNlRm9udF07DQorICAgICAgICBpZiAoKGlCYXNlRm9udCAlIDQpID09IDEgfHwgKGlCYXNlRm9udCAlIDQpID09IDIpIHsNCisgICAgICAgICAgICBuU3R5bGUgfD0gRlhfRk9OVF9TVFlMRV9Cb2xkOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKChpQmFzZUZvbnQgJSA0KSAvIDIpIHsNCisgICAgICAgICAgICBuU3R5bGUgfD0gRlhfRk9OVF9TVFlMRV9JdGFsaWM7DQorICAgICAgICB9DQorICAgICAgICBpZiAoaUJhc2VGb250IDwgNCkgew0KKyAgICAgICAgICAgIFBpdGNoRmFtaWx5IHw9IEZYRk9OVF9GRl9GSVhFRFBJVENIOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGlCYXNlRm9udCA+PSA4KSB7DQorICAgICAgICAgICAgUGl0Y2hGYW1pbHkgfD0gRlhGT05UX0ZGX1JPTUFOOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKCFiSGFzQ29tbWEpIHsNCisgICAgICAgICAgICBmaW5kID0gZmFtaWx5LlJldmVyc2VGaW5kKCctJyk7DQorICAgICAgICAgICAgaWYgKGZpbmQgPj0gMCkgew0KKyAgICAgICAgICAgICAgICBzdHlsZSA9IGZhbWlseS5NaWQoZmluZCArIDEpOw0KKyAgICAgICAgICAgICAgICBmYW1pbHkgPSBmYW1pbHkuTGVmdChmaW5kKTsNCisgICAgICAgICAgICAgICAgYkhhc0h5cGVuID0gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoIWJIYXNIeXBlbikgew0KKyAgICAgICAgICAgIGludCBuTGVuID0gZmFtaWx5LkdldExlbmd0aCgpOw0KKyAgICAgICAgICAgIEZYX0lOVDMyIG5SZXQgPSBHZXRTdHlsZVR5cGUoZmFtaWx5LCBUUlVFKTsNCisgICAgICAgICAgICBpZiAoblJldCA+IC0xKSB7DQorICAgICAgICAgICAgICAgIGZhbWlseSA9IGZhbWlseS5MZWZ0KG5MZW4gLSBnX0ZvbnRTdHlsZXNbblJldF0ubGVuKTsNCisgICAgICAgICAgICAgICAgaWYgKG5SZXQgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgblN0eWxlIHw9IEZYX0ZPTlRfU1RZTEVfQm9sZDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoblJldCA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICBuU3R5bGUgfD0gRlhfRk9OVF9TVFlMRV9JdGFsaWM7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKG5SZXQgPT0gMikgew0KKyAgICAgICAgICAgICAgICAgICAgblN0eWxlIHw9IChGWF9GT05UX1NUWUxFX0JvbGQgfCBGWF9GT05UX1NUWUxFX0l0YWxpYyk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAoZmxhZ3MgJiBGWEZPTlRfU0VSSUYpIHsNCisgICAgICAgICAgICBQaXRjaEZhbWlseSB8PSBGWEZPTlRfRkZfUk9NQU47DQorICAgICAgICB9DQorICAgICAgICBpZiAoZmxhZ3MgJiBGWEZPTlRfU0NSSVBUKSB7DQorICAgICAgICAgICAgUGl0Y2hGYW1pbHkgfD0gRlhGT05UX0ZGX1NDUklQVDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChmbGFncyAmIEZYRk9OVF9GSVhFRF9QSVRDSCkgew0KKyAgICAgICAgICAgIFBpdGNoRmFtaWx5IHw9IEZYRk9OVF9GRl9GSVhFRFBJVENIOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICghc3R5bGUuSXNFbXB0eSgpKSB7DQorICAgICAgICBpbnQgbkxlbiA9IHN0eWxlLkdldExlbmd0aCgpOw0KKyAgICAgICAgRlhfTFBDU1RSIHBTdHlsZSA9IHN0eWxlOw0KKyAgICAgICAgaW50IGkgPSAwOw0KKyAgICAgICAgRlhfQk9PTCBiRmlyc3RJdGVtID0gVFJVRTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGJ1ZjsNCisgICAgICAgIHdoaWxlIChpIDwgbkxlbikgew0KKyAgICAgICAgICAgIGJ1ZiA9IFBhcnNlU3R5bGUocFN0eWxlLCBuTGVuLCBpKTsNCisgICAgICAgICAgICBGWF9JTlQzMiBuUmV0ID0gR2V0U3R5bGVUeXBlKGJ1ZiwgRkFMU0UpOw0KKyAgICAgICAgICAgIGlmICgoaSAmJiAhYlN0eWxlQXZhaWwpIHx8ICghaSAmJiBuUmV0IDwgMCkpIHsNCisgICAgICAgICAgICAgICAgZmFtaWx5ID0gU3Vic3ROYW1lOw0KKyAgICAgICAgICAgICAgICBpQmFzZUZvbnQgPSAxMjsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChuUmV0ID49IDApIHsNCisgICAgICAgICAgICAgICAgYlN0eWxlQXZhaWwgPSBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoblJldCA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGlmIChuU3R5bGUgJiBGWF9GT05UX1NUWUxFX0JvbGQpIHsNCisgICAgICAgICAgICAgICAgICAgIG5TdHlsZSB8PSBGWF9GT05UX1NUWUxFX0JvbGRCb2xkOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgblN0eWxlIHw9IEZYX0ZPTlRfU1RZTEVfQm9sZDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBiRmlyc3RJdGVtID0gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChuUmV0ID09IDEpIHsNCisgICAgICAgICAgICAgICAgaWYgKGJGaXJzdEl0ZW0pIHsNCisgICAgICAgICAgICAgICAgICAgIG5TdHlsZSB8PSBGWF9GT05UX1NUWUxFX0l0YWxpYzsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IFN1YnN0TmFtZTsNCisgICAgICAgICAgICAgICAgICAgIGlCYXNlRm9udCA9IDEyOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoblJldCA9PSAyKSB7DQorICAgICAgICAgICAgICAgIG5TdHlsZSB8PSBGWF9GT05UX1NUWUxFX0l0YWxpYzsNCisgICAgICAgICAgICAgICAgaWYgKG5TdHlsZSAmIEZYX0ZPTlRfU1RZTEVfQm9sZCkgew0KKyAgICAgICAgICAgICAgICAgICAgblN0eWxlIHw9IEZYX0ZPTlRfU1RZTEVfQm9sZEJvbGQ7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBuU3R5bGUgfD0gRlhfRk9OVF9TVFlMRV9Cb2xkOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGJGaXJzdEl0ZW0gPSBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaSArPSBidWYuR2V0TGVuZ3RoKCkgKyAxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHdlaWdodCA9IHdlaWdodCA/IHdlaWdodCA6IEZYRk9OVF9GV19OT1JNQUw7DQorICAgIGludCBvbGRfd2VpZ2h0ID0gd2VpZ2h0Ow0KKyAgICBpZiAoblN0eWxlKSB7DQorICAgICAgICB3ZWlnaHQgPSBuU3R5bGUgJiBGWF9GT05UX1NUWUxFX0JvbGRCb2xkID8gOTAwIDogKG5TdHlsZSAmIEZYX0ZPTlRfU1RZTEVfQm9sZCA/IEZYRk9OVF9GV19CT0xEIDogRlhGT05UX0ZXX05PUk1BTCk7DQorICAgIH0NCisgICAgaWYgKG5TdHlsZSAmIEZYX0ZPTlRfU1RZTEVfSXRhbGljKSB7DQorICAgICAgICBiSXRhbGljID0gVFJVRTsNCisgICAgfQ0KKyAgICBGWF9CT09MIGJDSksgPSBGQUxTRTsNCisgICAgRlhfQk9PTCBiRXhhY3QgPSBGQUxTRTsNCisgICAgaW50IENoYXJzZXQgPSBGWEZPTlRfQU5TSV9DSEFSU0VUOw0KKyAgICBpZiAoV2luZG93Q1ApIHsNCisgICAgICAgIENoYXJzZXQgPSBfR2V0Q2hhcnNldEZyb21Db2RlUGFnZShXaW5kb3dDUCk7DQorICAgIH0gZWxzZSBpZiAoaUJhc2VGb250ID09IDEyICYmIChmbGFncyAmIEZYRk9OVF9TWU1CT0xJQykpIHsNCisgICAgICAgIENoYXJzZXQgPSBGWEZPTlRfU1lNQk9MX0NIQVJTRVQ7DQorICAgIH0NCisgICAgaWYgKENoYXJzZXQgPT0gRlhGT05UX1NISUZUSklTX0NIQVJTRVQgfHwgQ2hhcnNldCA9PSBGWEZPTlRfR0IyMzEyX0NIQVJTRVQgfHwNCisgICAgICAgICAgICBDaGFyc2V0ID09IEZYRk9OVF9IQU5HRVVMX0NIQVJTRVQgfHwgQ2hhcnNldCA9PSBGWEZPTlRfQ0hJTkVTRUJJRzVfQ0hBUlNFVCkgew0KKyAgICAgICAgYkNKSyA9IFRSVUU7DQorICAgIH0NCisgICAgaWYgKG1fcEZvbnRJbmZvID09IE5VTEwpIHsNCisgICAgICAgIHBTdWJzdEZvbnQtPm1fU3Vic3RGbGFncyB8PSBGWEZPTlRfU1VCU1RfU1RBTkRBUkQ7DQorICAgICAgICByZXR1cm4gVXNlSW50ZXJuYWxTdWJzdChwU3Vic3RGb250LCBpQmFzZUZvbnQsIGl0YWxpY19hbmdsZSwgb2xkX3dlaWdodCwgUGl0Y2hGYW1pbHkpOw0KKyAgICB9DQorICAgIGZhbWlseSA9IF9HZXRGb250RmFtaWx5KGZhbWlseSwgblN0eWxlKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgbWF0Y2ggPSBNYXRjaEluc3RhbGxlZEZvbnRzKF9UVF9Ob3JtYWxpemVOYW1lKGZhbWlseSkpOw0KKyAgICBpZiAobWF0Y2guSXNFbXB0eSgpICYmIGZhbWlseSAhPSBTdWJzdE5hbWUgJiYgKCFiSGFzQ29tbWEgJiYgKCFiSGFzSHlwZW4gfHwgKGJIYXNIeXBlbiAmJiAhYlN0eWxlQXZhaWwpKSkpIHsNCisgICAgICAgIG1hdGNoID0gTWF0Y2hJbnN0YWxsZWRGb250cyhfVFRfTm9ybWFsaXplTmFtZShTdWJzdE5hbWUpKTsNCisgICAgfQ0KKyAgICBpZiAobWF0Y2guSXNFbXB0eSgpICYmIGlCYXNlRm9udCA+PSAxMikgew0KKyAgICAgICAgaWYgKCFiQ0pLKSB7DQorICAgICAgICAgICAgaWYgKCFDaGVja1N1cHBvcnRUaGlyZFBhcnRGb250KGZhbWlseSwgUGl0Y2hGYW1pbHkpKSB7DQorICAgICAgICAgICAgICAgIGlmIChpdGFsaWNfYW5nbGUgIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgYkl0YWxpYyA9IFRSVUU7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBiSXRhbGljID0gRkFMU0U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgd2VpZ2h0ID0gb2xkX3dlaWdodDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBTdWJzdEZvbnQtPm1fYlN1YnN0T2ZDSksgPSBUUlVFOw0KKyAgICAgICAgICAgIGlmIChuU3R5bGUpIHsNCisgICAgICAgICAgICAgICAgcFN1YnN0Rm9udC0+bV9XZWlnaHRDSksgPSB3ZWlnaHQ7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcFN1YnN0Rm9udC0+bV9XZWlnaHRDSksgPSBGWEZPTlRfRldfTk9STUFMOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoblN0eWxlICYgRlhfRk9OVF9TVFlMRV9JdGFsaWMpIHsNCisgICAgICAgICAgICAgICAgcFN1YnN0Rm9udC0+bV9iSXRsaWNDSksgPSBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGl0YWxpY19hbmdsZSA9IDA7DQorICAgICAgICB3ZWlnaHQgPSBuU3R5bGUgJiBGWF9GT05UX1NUWUxFX0JvbGRCb2xkID8gOTAwIDogKG5TdHlsZSAmIEZYX0ZPTlRfU1RZTEVfQm9sZCA/IEZYRk9OVF9GV19CT0xEIDogRlhGT05UX0ZXX05PUk1BTCk7DQorICAgIH0NCisgICAgaWYgKCFtYXRjaC5Jc0VtcHR5KCkgfHwgaUJhc2VGb250IDwgMTIpIHsNCisgICAgICAgIHBTdWJzdEZvbnQtPm1fU3Vic3RGbGFncyB8PSBGWEZPTlRfU1VCU1RfRVhBQ1Q7DQorICAgICAgICBpZiAoIW1hdGNoLklzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIGZhbWlseSA9IG1hdGNoOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGlCYXNlRm9udCA8IDEyKSB7DQorICAgICAgICAgICAgaWYgKG5TdHlsZSAmJiAhKGlCYXNlRm9udCAlIDQpKSB7DQorICAgICAgICAgICAgICAgIGlmICgoblN0eWxlICYgMHgzKSA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICBpQmFzZUZvbnQgKz0gMTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoKG5TdHlsZSAmIDB4MykgPT0gMikgew0KKyAgICAgICAgICAgICAgICAgICAgaUJhc2VGb250ICs9IDM7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKChuU3R5bGUgJiAweDMpID09IDMpIHsNCisgICAgICAgICAgICAgICAgICAgIGlCYXNlRm9udCArPSAyOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChtX3BGb250TWdyLT5tX0V4dGVybmFsRm9udHNbaUJhc2VGb250XS5tX3BGb250RGF0YSkgew0KKyAgICAgICAgICAgICAgICBpZiAobV9Gb3hpdEZhY2VzW2lCYXNlRm9udF0pIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX0ZveGl0RmFjZXNbaUJhc2VGb250XTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBtX0ZveGl0RmFjZXNbaUJhc2VGb250XSA9IG1fcEZvbnRNZ3ItPkdldEZpeGVkRmFjZShtX3BGb250TWdyLT5tX0V4dGVybmFsRm9udHNbaUJhc2VGb250XS5tX3BGb250RGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BGb250TWdyLT5tX0V4dGVybmFsRm9udHNbaUJhc2VGb250XS5tX2R3U2l6ZSwgMCk7DQorICAgICAgICAgICAgICAgIGlmIChtX0ZveGl0RmFjZXNbaUJhc2VGb250XSkgew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fRm94aXRGYWNlc1tpQmFzZUZvbnRdOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgZmFtaWx5ID0gZ19CYXNlMTRGb250TmFtZXNbaUJhc2VGb250XTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcFN1YnN0Rm9udC0+bV9TdWJzdEZsYWdzIHw9IEZYRk9OVF9TVUJTVF9TVEFOREFSRDsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChmbGFncyAmIEZYRk9OVF9JVEFMSUMpIHsNCisgICAgICAgICAgICBiSXRhbGljID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBiRXhhY3QgPSAhbWF0Y2guSXNFbXB0eSgpOw0KKyAgICB2b2lkKiBoRm9udCA9IG1fcEZvbnRJbmZvLT5NYXBGb250KHdlaWdodCwgYkl0YWxpYywgQ2hhcnNldCwgUGl0Y2hGYW1pbHksIGZhbWlseSwgYkV4YWN0KTsNCisgICAgaWYgKGJFeGFjdCkgew0KKyAgICAgICAgcFN1YnN0Rm9udC0+bV9TdWJzdEZsYWdzIHw9IEZYRk9OVF9TVUJTVF9FWEFDVDsNCisgICAgfQ0KKyAgICBpZiAoaEZvbnQgPT0gTlVMTCkgew0KKyAgICAgICAgaWYgKGJDSkspIHsNCisgICAgICAgICAgICBpZiAoaXRhbGljX2FuZ2xlICE9IDApIHsNCisgICAgICAgICAgICAgICAgYkl0YWxpYyA9IFRSVUU7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgYkl0YWxpYyA9IEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB3ZWlnaHQgPSBvbGRfd2VpZ2h0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFtYXRjaC5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICBoRm9udCA9IG1fcEZvbnRJbmZvLT5HZXRGb250KG1hdGNoKTsNCisgICAgICAgICAgICBpZiAoaEZvbnQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gVXNlSW50ZXJuYWxTdWJzdChwU3Vic3RGb250LCBpQmFzZUZvbnQsIGl0YWxpY19hbmdsZSwgb2xkX3dlaWdodCwgUGl0Y2hGYW1pbHkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKENoYXJzZXQgPT0gRlhGT05UX1NZTUJPTF9DSEFSU0VUKSB7DQorI2lmIF9GWE1fUExBVEZPUk1fICA9PSBfRlhNX1BMQVRGT1JNX0FQUExFXyB8fCBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BTkRST0lEXw0KKyAgICAgICAgICAgICAgICBpZiAoU3Vic3ROYW1lID09IEZYX0JTVFJDKCJTeW1ib2wiKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcFN1YnN0Rm9udC0+bV9GYW1pbHkgPSAiQ2hyb21lIFN5bWJvbCI7DQorICAgICAgICAgICAgICAgICAgICBwU3Vic3RGb250LT5tX1N1YnN0RmxhZ3MgfD0gRlhGT05UX1NVQlNUX1NUQU5EQVJEOw0KKyAgICAgICAgICAgICAgICAgICAgcFN1YnN0Rm9udC0+bV9DaGFyc2V0ID0gRlhGT05UX1NZTUJPTF9DSEFSU0VUOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fRm94aXRGYWNlc1sxMl0pIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9Gb3hpdEZhY2VzWzEyXTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIEZYX0xQQ0JZVEUgcEZvbnREYXRhID0gTlVMTDsNCisgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIHNpemUgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAgbV9wRm9udE1nci0+R2V0U3RhbmRhcmRGb250KHBGb250RGF0YSwgc2l6ZSwgMTIpOw0KKyAgICAgICAgICAgICAgICAgICAgbV9Gb3hpdEZhY2VzWzEyXSA9IG1fcEZvbnRNZ3ItPkdldEZpeGVkRmFjZShwRm9udERhdGEsIHNpemUsIDApOw0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fRm94aXRGYWNlc1sxMl07DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBwU3Vic3RGb250LT5tX1N1YnN0RmxhZ3MgfD0gRlhGT05UX1NVQlNUX05PTlNZTUJPTDsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGaW5kU3Vic3RGb250KGZhbWlseSwgYlRydWVUeXBlLCBmbGFncyAmIH5GWEZPTlRfU1lNQk9MSUMsIHdlaWdodCwgaXRhbGljX2FuZ2xlLCAwLCBwU3Vic3RGb250KTsNCisgICAgICAgICAgICAgICAgfQ0KKyNlbHNlDQorICAgICAgICAgICAgICAgIHBTdWJzdEZvbnQtPm1fU3Vic3RGbGFncyB8PSBGWEZPTlRfU1VCU1RfTk9OU1lNQk9MOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gRmluZFN1YnN0Rm9udChmYW1pbHksIGJUcnVlVHlwZSwgZmxhZ3MgJiB+RlhGT05UX1NZTUJPTElDLCB3ZWlnaHQsIGl0YWxpY19hbmdsZSwgMCwgcFN1YnN0Rm9udCk7DQorI2VuZGlmDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChDaGFyc2V0ID09IEZYRk9OVF9BTlNJX0NIQVJTRVQpIHsNCisgICAgICAgICAgICAgICAgcFN1YnN0Rm9udC0+bV9TdWJzdEZsYWdzIHw9IEZYRk9OVF9TVUJTVF9TVEFOREFSRDsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFVzZUludGVybmFsU3Vic3QocFN1YnN0Rm9udCwgaUJhc2VGb250LCBpdGFsaWNfYW5nbGUsIG9sZF93ZWlnaHQsIFBpdGNoRmFtaWx5KTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaW50IGluZGV4ID0gbV9DaGFyc2V0QXJyYXkuRmluZChDaGFyc2V0KTsNCisgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBVc2VJbnRlcm5hbFN1YnN0KHBTdWJzdEZvbnQsIGlCYXNlRm9udCwgaXRhbGljX2FuZ2xlLCBvbGRfd2VpZ2h0LCBQaXRjaEZhbWlseSk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaEZvbnQgPSBtX3BGb250SW5mby0+R2V0Rm9udChtX0ZhY2VBcnJheVtpbmRleF0pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBwU3Vic3RGb250LT5tX0V4dEhhbmRsZSA9IG1fcEZvbnRJbmZvLT5SZXRhaW5Gb250KGhGb250KTsNCisgICAgaWYgKGhGb250ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIG1fcEZvbnRJbmZvLT5HZXRGYWNlTmFtZShoRm9udCwgU3Vic3ROYW1lKTsNCisgICAgaWYgKENoYXJzZXQgPT0gRlhGT05UX0RFRkFVTFRfQ0hBUlNFVCkgew0KKyAgICAgICAgbV9wRm9udEluZm8tPkdldEZvbnRDaGFyc2V0KGhGb250LCBDaGFyc2V0KTsNCisgICAgfQ0KKyAgICBGWF9EV09SRCB0dGNfc2l6ZSA9IG1fcEZvbnRJbmZvLT5HZXRGb250RGF0YShoRm9udCwgMHg3NDc0NjM2NiwgTlVMTCwgMCk7DQorICAgIEZYX0RXT1JEIGZvbnRfc2l6ZSA9IG1fcEZvbnRJbmZvLT5HZXRGb250RGF0YShoRm9udCwgMCwgTlVMTCwgMCk7DQorICAgIGlmKGZvbnRfc2l6ZSA9PSAwICYmIHR0Y19zaXplID09IDApIHsNCisgICAgICAgIG1fcEZvbnRJbmZvLT5EZWxldGVGb250KGhGb250KTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYRlRfRmFjZSBmYWNlID0gTlVMTDsNCisgICAgaWYgKHR0Y19zaXplKSB7DQorICAgICAgICBGWF9CWVRFIHRlbXBbMTAyNF07DQorICAgICAgICBtX3BGb250SW5mby0+R2V0Rm9udERhdGEoaEZvbnQsIDB4NzQ3NDYzNjYsIHRlbXAsIDEwMjQpOw0KKyAgICAgICAgRlhfRFdPUkQgY2hlY2tzdW0gPSAwOw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICBjaGVja3N1bSArPSAoKEZYX0RXT1JEKil0ZW1wKVtpXTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQQllURSBwRm9udERhdGE7DQorICAgICAgICBmYWNlID0gbV9wRm9udE1nci0+R2V0Q2FjaGVkVFRDRmFjZSh0dGNfc2l6ZSwgY2hlY2tzdW0sIHR0Y19zaXplIC0gZm9udF9zaXplLCBwRm9udERhdGEpOw0KKyAgICAgICAgaWYgKGZhY2UgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHBGb250RGF0YSA9IEZYX0FsbG9jKEZYX0JZVEUsIHR0Y19zaXplKTsNCisgICAgICAgICAgICBpZiAocEZvbnREYXRhKSB7DQorICAgICAgICAgICAgICAgIG1fcEZvbnRJbmZvLT5HZXRGb250RGF0YShoRm9udCwgMHg3NDc0NjM2NiwgcEZvbnREYXRhLCB0dGNfc2l6ZSk7DQorICAgICAgICAgICAgICAgIGZhY2UgPSBtX3BGb250TWdyLT5BZGRDYWNoZWRUVENGYWNlKHR0Y19zaXplLCBjaGVja3N1bSwgcEZvbnREYXRhLCB0dGNfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRjX3NpemUgLSBmb250X3NpemUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYX0xQQllURSBwRm9udERhdGE7DQorICAgICAgICBmYWNlID0gbV9wRm9udE1nci0+R2V0Q2FjaGVkRmFjZShTdWJzdE5hbWUsIHdlaWdodCwgYkl0YWxpYywgcEZvbnREYXRhKTsNCisgICAgICAgIGlmIChmYWNlID09IE5VTEwpIHsNCisgICAgICAgICAgICBwRm9udERhdGEgPSBGWF9BbGxvYyhGWF9CWVRFLCBmb250X3NpemUpOw0KKyAgICAgICAgICAgIGlmICghcEZvbnREYXRhKSB7DQorICAgICAgICAgICAgICAgIG1fcEZvbnRJbmZvLT5EZWxldGVGb250KGhGb250KTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG1fcEZvbnRJbmZvLT5HZXRGb250RGF0YShoRm9udCwgMCwgcEZvbnREYXRhLCBmb250X3NpemUpOw0KKyAgICAgICAgICAgIGZhY2UgPSBtX3BGb250TWdyLT5BZGRDYWNoZWRGYWNlKFN1YnN0TmFtZSwgd2VpZ2h0LCBiSXRhbGljLCBwRm9udERhdGEsIGZvbnRfc2l6ZSwgbV9wRm9udEluZm8tPkdldEZhY2VJbmRleChoRm9udCkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChmYWNlID09IE5VTEwpIHsNCisgICAgICAgIG1fcEZvbnRJbmZvLT5EZWxldGVGb250KGhGb250KTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBTdWJzdEZvbnQtPm1fRmFtaWx5ID0gU3Vic3ROYW1lOw0KKyAgICBwU3Vic3RGb250LT5tX0NoYXJzZXQgPSBDaGFyc2V0Ow0KKyAgICBGWF9CT09MIGJOZWVkVXBkYXRlV2VpZ2h0ID0gRkFMU0U7DQorICAgIGlmIChGWEZUX0lzX0ZhY2VfQm9sZChmYWNlKSkgew0KKyAgICAgICAgaWYgKHdlaWdodCA9PSBGWEZPTlRfRldfQk9MRCkgew0KKyAgICAgICAgICAgIGJOZWVkVXBkYXRlV2VpZ2h0ID0gRkFMU0U7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGJOZWVkVXBkYXRlV2VpZ2h0ID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmICh3ZWlnaHQgPT0gRlhGT05UX0ZXX05PUk1BTCkgew0KKyAgICAgICAgICAgIGJOZWVkVXBkYXRlV2VpZ2h0ID0gRkFMU0U7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGJOZWVkVXBkYXRlV2VpZ2h0ID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoYk5lZWRVcGRhdGVXZWlnaHQpIHsNCisgICAgICAgIHBTdWJzdEZvbnQtPm1fV2VpZ2h0ID0gd2VpZ2h0Ow0KKyAgICB9DQorICAgIGlmIChiSXRhbGljICYmICFGWEZUX0lzX0ZhY2VfSXRhbGljKGZhY2UpKSB7DQorICAgICAgICBpZiAoaXRhbGljX2FuZ2xlID09IDApIHsNCisgICAgICAgICAgICBpdGFsaWNfYW5nbGUgPSAtMTI7DQorICAgICAgICB9IGVsc2UgaWYgKEZYU1lTX2FicyhpdGFsaWNfYW5nbGUpIDwgNSkgew0KKyAgICAgICAgICAgIGl0YWxpY19hbmdsZSA9IDA7DQorICAgICAgICB9DQorICAgICAgICBwU3Vic3RGb250LT5tX0l0YWxpY0FuZ2xlID0gaXRhbGljX2FuZ2xlOw0KKyAgICB9DQorICAgIG1fcEZvbnRJbmZvLT5EZWxldGVGb250KGhGb250KTsNCisgICAgcmV0dXJuIGZhY2U7DQorfQ0KK2V4dGVybiAiQyIgew0KKyAgICB1bnNpZ25lZCBsb25nIF9GVFN0cmVhbVJlYWQoRlhGVF9TdHJlYW0gc3RyZWFtLCB1bnNpZ25lZCBsb25nIG9mZnNldCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbG9uZyBjb3VudCk7DQorICAgIHZvaWQgX0ZUU3RyZWFtQ2xvc2UoRlhGVF9TdHJlYW0gc3RyZWFtKTsNCit9Ow0KK0NGb250RmlsZUZhY2VJbmZvOjpDRm9udEZpbGVGYWNlSW5mbygpDQorew0KKyAgICBtX3BGaWxlID0gTlVMTDsNCisgICAgbV9GYWNlID0gTlVMTDsNCisgICAgbV9DaGFyc2V0cyA9IDA7DQorICAgIG1fRmlsZVNpemUgPSAwOw0KKyAgICBtX0ZvbnRPZmZzZXQgPSAwOw0KKyAgICBtX1dlaWdodCA9IDA7DQorICAgIG1fYkl0YWxpYyA9IEZBTFNFOw0KKyAgICBtX1BpdGNoRmFtaWx5ID0gMDsNCit9DQorQ0ZvbnRGaWxlRmFjZUluZm86On5DRm9udEZpbGVGYWNlSW5mbygpDQorew0KKyAgICBpZiAobV9GYWNlKSB7DQorICAgICAgICBGWEZUX0RvbmVfRmFjZShtX0ZhY2UpOw0KKyAgICB9DQorICAgIG1fRmFjZSA9IE5VTEw7DQorfQ0KK2V4dGVybiBGWF9CT09MIF9Mb2FkRmlsZShGWEZUX0xpYnJhcnkgbGlicmFyeSwgRlhGVF9GYWNlKiBGYWNlLCBJRlhfRmlsZVJlYWQqIHBGaWxlLCBGWEZUX1N0cmVhbSogc3RyZWFtKTsNCisjaWYgZGVmaW5lZChfRlBERkFQSV9NSU5JXykgfHwgX0ZYX09TXyA9PSBfRlhfQU5EUk9JRF8NCitJRlhfU3lzdGVtRm9udEluZm8qIElGWF9TeXN0ZW1Gb250SW5mbzo6Q3JlYXRlRGVmYXVsdCgpDQorew0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorI2VuZGlmDQorI2lmICFkZWZpbmVkKF9GUERGQVBJX01JTklfKQ0KK0NGWF9Gb2xkZXJGb250SW5mbzo6Q0ZYX0ZvbGRlckZvbnRJbmZvKCkNCit7DQorfQ0KK0NGWF9Gb2xkZXJGb250SW5mbzo6fkNGWF9Gb2xkZXJGb250SW5mbygpDQorew0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX0ZvbnRMaXN0LkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcga2V5Ow0KKyAgICAgICAgRlhfTFBWT0lEIHZhbHVlOw0KKyAgICAgICAgbV9Gb250TGlzdC5HZXROZXh0QXNzb2MocG9zLCBrZXksIHZhbHVlKTsNCisgICAgICAgIGRlbGV0ZSAoQ0ZvbnRGYWNlSW5mbyopdmFsdWU7DQorICAgIH0NCit9DQordm9pZCBDRlhfRm9sZGVyRm9udEluZm86OkFkZFBhdGgoRlhfQlNUUiBwYXRoKQ0KK3sNCisgICAgbV9QYXRoTGlzdC5BZGQocGF0aCk7DQorfQ0KK3ZvaWQgQ0ZYX0ZvbGRlckZvbnRJbmZvOjpSZWxlYXNlKCkNCit7DQorICAgIGRlbGV0ZSB0aGlzOw0KK30NCitGWF9CT09MIENGWF9Gb2xkZXJGb250SW5mbzo6RW51bUZvbnRMaXN0KENGWF9Gb250TWFwcGVyKiBwTWFwcGVyKQ0KK3sNCisgICAgbV9wTWFwcGVyID0gcE1hcHBlcjsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX1BhdGhMaXN0LkdldFNpemUoKTsgaSArKykgew0KKyAgICAgICAgU2NhblBhdGgobV9QYXRoTGlzdFtpXSk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ0ZYX0ZvbGRlckZvbnRJbmZvOjpTY2FuUGF0aChDRlhfQnl0ZVN0cmluZyYgcGF0aCkNCit7DQorICAgIHZvaWQqIGhhbmRsZSA9IEZYX09wZW5Gb2xkZXIocGF0aCk7DQorICAgIGlmIChoYW5kbGUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9CeXRlU3RyaW5nIGZpbGVuYW1lOw0KKyAgICBGWF9CT09MIGJGb2xkZXI7DQorICAgIHdoaWxlIChGWF9HZXROZXh0RmlsZShoYW5kbGUsIGZpbGVuYW1lLCBiRm9sZGVyKSkgew0KKyAgICAgICAgaWYgKGJGb2xkZXIpIHsNCisgICAgICAgICAgICBpZiAoZmlsZW5hbWUgPT0gIi4iIHx8IGZpbGVuYW1lID09ICIuLiIpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBDRlhfQnl0ZVN0cmluZyBleHQgPSBmaWxlbmFtZS5SaWdodCg0KTsNCisgICAgICAgICAgICBleHQuTWFrZVVwcGVyKCk7DQorICAgICAgICAgICAgaWYgKGV4dCAhPSAiLlRURiIgJiYgZXh0ICE9ICIuT1RGIiAmJiBleHQgIT0gIi5UVEMiKSB7DQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGZ1bGxwYXRoID0gcGF0aDsNCisjaWYgX0ZYTV9QTEFURk9STV8gID09IF9GWE1fUExBVEZPUk1fV0lORE9XU18NCisgICAgICAgIGZ1bGxwYXRoICs9ICJcXCI7DQorI2Vsc2UNCisgICAgICAgIGZ1bGxwYXRoICs9ICIvIjsNCisjZW5kaWYNCisgICAgICAgIGZ1bGxwYXRoICs9IGZpbGVuYW1lOw0KKyAgICAgICAgaWYgKGJGb2xkZXIpIHsNCisgICAgICAgICAgICBTY2FuUGF0aChmdWxscGF0aCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIFNjYW5GaWxlKGZ1bGxwYXRoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9DbG9zZUZvbGRlcihoYW5kbGUpOw0KK30NCit2b2lkIENGWF9Gb2xkZXJGb250SW5mbzo6U2NhbkZpbGUoQ0ZYX0J5dGVTdHJpbmcmIHBhdGgpDQorew0KKyAgICBGWFNZU19GSUxFKiBwRmlsZSA9IEZYU1lTX2ZvcGVuKHBhdGgsICJyYiIpOw0KKyAgICBpZiAocEZpbGUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEZYU1lTX2ZzZWVrKHBGaWxlLCAwLCBGWFNZU19TRUVLX0VORCk7DQorICAgIEZYX0RXT1JEIGZpbGVzaXplID0gRlhTWVNfZnRlbGwocEZpbGUpOw0KKyAgICBGWF9CWVRFIGJ1ZmZlclsxNl07DQorICAgIEZYU1lTX2ZzZWVrKHBGaWxlLCAwLCBGWFNZU19TRUVLX1NFVCk7DQorICAgIHNpemVfdCByZWFkQ250ID0gRlhTWVNfZnJlYWQoYnVmZmVyLCAxMiwgMSwgcEZpbGUpOw0KKyAgICBpZiAoR0VUX1RUX0xPTkcoYnVmZmVyKSA9PSAweDc0NzQ2MzY2KSB7DQorICAgICAgICBGWF9EV09SRCBuRmFjZXMgPSBHRVRfVFRfTE9ORyhidWZmZXIgKyA4KTsNCisgICAgICAgIEZYX0xQQllURSBvZmZzZXRzID0gRlhfQWxsb2MoRlhfQllURSwgbkZhY2VzICogNCk7DQorICAgICAgICBpZiAoIW9mZnNldHMpIHsNCisgICAgICAgICAgICBGWFNZU19mY2xvc2UocEZpbGUpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHJlYWRDbnQgPSBGWFNZU19mcmVhZChvZmZzZXRzLCBuRmFjZXMgKiA0LCAxLCBwRmlsZSk7DQorICAgICAgICBmb3IgKEZYX0RXT1JEIGkgPSAwOyBpIDwgbkZhY2VzOyBpICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIHAgPSBvZmZzZXRzICsgaSAqIDQ7DQorICAgICAgICAgICAgUmVwb3J0RmFjZShwYXRoLCBwRmlsZSwgZmlsZXNpemUsIEdFVF9UVF9MT05HKHApKTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0ZyZWUob2Zmc2V0cyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBSZXBvcnRGYWNlKHBhdGgsIHBGaWxlLCBmaWxlc2l6ZSwgMCk7DQorICAgIH0NCisgICAgRlhTWVNfZmNsb3NlKHBGaWxlKTsNCit9DQordm9pZCBDRlhfRm9sZGVyRm9udEluZm86OlJlcG9ydEZhY2UoQ0ZYX0J5dGVTdHJpbmcmIHBhdGgsIEZYU1lTX0ZJTEUqIHBGaWxlLCBGWF9EV09SRCBmaWxlc2l6ZSwgRlhfRFdPUkQgb2Zmc2V0KQ0KK3sNCisgICAgRlhTWVNfZnNlZWsocEZpbGUsIG9mZnNldCwgRlhTWVNfU0VFS19TRVQpOw0KKyAgICBjaGFyIGJ1ZmZlclsxNl07DQorICAgIGlmICghRlhTWVNfZnJlYWQoYnVmZmVyLCAxMiwgMSwgcEZpbGUpKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfRFdPUkQgblRhYmxlcyA9IEdFVF9UVF9TSE9SVChidWZmZXIgKyA0KTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgdGFibGVzID0gX0ZQREZfUmVhZFN0cmluZ0Zyb21GaWxlKHBGaWxlLCBuVGFibGVzICogMTYpOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBuYW1lcyA9IF9GUERGX0xvYWRUYWJsZUZyb21UVChwRmlsZSwgdGFibGVzLCBuVGFibGVzLCAweDZlNjE2ZDY1KTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgZmFjZW5hbWUgPSBfRlBERl9HZXROYW1lRnJvbVRUKG5hbWVzLCAxKTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcgc3R5bGUgPSBfRlBERl9HZXROYW1lRnJvbVRUKG5hbWVzLCAyKTsNCisgICAgaWYgKHN0eWxlICE9ICJSZWd1bGFyIikgew0KKyAgICAgICAgZmFjZW5hbWUgKz0gIiAiICsgc3R5bGU7DQorICAgIH0NCisgICAgRlhfTFBWT0lEIHA7DQorICAgIGlmIChtX0ZvbnRMaXN0Lkxvb2t1cChmYWNlbmFtZSwgcCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRm9udEZhY2VJbmZvKiBwSW5mbyA9IEZYX05FVyBDRm9udEZhY2VJbmZvOw0KKyAgICBpZiAoIXBJbmZvKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcEluZm8tPm1fRmlsZVBhdGggPSBwYXRoOw0KKyAgICBwSW5mby0+bV9GYWNlTmFtZSA9IGZhY2VuYW1lOw0KKyAgICBwSW5mby0+bV9Gb250VGFibGVzID0gdGFibGVzOw0KKyAgICBwSW5mby0+bV9Gb250T2Zmc2V0ID0gb2Zmc2V0Ow0KKyAgICBwSW5mby0+bV9GaWxlU2l6ZSA9IGZpbGVzaXplOw0KKyAgICBwSW5mby0+bV9DaGFyc2V0cyA9IDA7DQorICAgIENGWF9CeXRlU3RyaW5nIG9zMiA9IF9GUERGX0xvYWRUYWJsZUZyb21UVChwRmlsZSwgdGFibGVzLCBuVGFibGVzLCAweDRmNTMyZjMyKTsNCisgICAgaWYgKG9zMi5HZXRMZW5ndGgoKSA+PSA4Nikgew0KKyAgICAgICAgRlhfTFBDQllURSBwID0gKEZYX0xQQ0JZVEUpb3MyICsgNzg7DQorICAgICAgICBGWF9EV09SRCBjb2RlcGFnZXMgPSBHRVRfVFRfTE9ORyhwKTsNCisgICAgICAgIGlmIChjb2RlcGFnZXMgJiAoMSA8PCAxNykpIHsNCisgICAgICAgICAgICBtX3BNYXBwZXItPkFkZEluc3RhbGxlZEZvbnQoZmFjZW5hbWUsIEZYRk9OVF9TSElGVEpJU19DSEFSU0VUKTsNCisgICAgICAgICAgICBwSW5mby0+bV9DaGFyc2V0cyB8PSBDSEFSU0VUX0ZMQUdfU0hJRlRKSVM7DQorICAgICAgICB9DQorICAgICAgICBpZiAoY29kZXBhZ2VzICYgKDEgPDwgMTgpKSB7DQorICAgICAgICAgICAgbV9wTWFwcGVyLT5BZGRJbnN0YWxsZWRGb250KGZhY2VuYW1lLCBGWEZPTlRfR0IyMzEyX0NIQVJTRVQpOw0KKyAgICAgICAgICAgIHBJbmZvLT5tX0NoYXJzZXRzIHw9IENIQVJTRVRfRkxBR19HQjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjb2RlcGFnZXMgJiAoMSA8PCAyMCkpIHsNCisgICAgICAgICAgICBtX3BNYXBwZXItPkFkZEluc3RhbGxlZEZvbnQoZmFjZW5hbWUsIEZYRk9OVF9DSElORVNFQklHNV9DSEFSU0VUKTsNCisgICAgICAgICAgICBwSW5mby0+bV9DaGFyc2V0cyB8PSBDSEFSU0VUX0ZMQUdfQklHNTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICgoY29kZXBhZ2VzICYgKDEgPDwgMTkpKSB8fCAoY29kZXBhZ2VzICYgKDEgPDwgMjEpKSkgew0KKyAgICAgICAgICAgIG1fcE1hcHBlci0+QWRkSW5zdGFsbGVkRm9udChmYWNlbmFtZSwgRlhGT05UX0hBTkdFVUxfQ0hBUlNFVCk7DQorICAgICAgICAgICAgcEluZm8tPm1fQ2hhcnNldHMgfD0gQ0hBUlNFVF9GTEFHX0tPUkVBTjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChjb2RlcGFnZXMgJiAoMSA8PCAzMSkpIHsNCisgICAgICAgICAgICBtX3BNYXBwZXItPkFkZEluc3RhbGxlZEZvbnQoZmFjZW5hbWUsIEZYRk9OVF9TWU1CT0xfQ0hBUlNFVCk7DQorICAgICAgICAgICAgcEluZm8tPm1fQ2hhcnNldHMgfD0gQ0hBUlNFVF9GTEFHX1NZTUJPTDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX3BNYXBwZXItPkFkZEluc3RhbGxlZEZvbnQoZmFjZW5hbWUsIEZYRk9OVF9BTlNJX0NIQVJTRVQpOw0KKyAgICBwSW5mby0+bV9DaGFyc2V0cyB8PSBDSEFSU0VUX0ZMQUdfQU5TSTsNCisgICAgcEluZm8tPm1fU3R5bGVzID0gMDsNCisgICAgaWYgKHN0eWxlLkZpbmQoRlhfQlNUUkMoIkJvbGQiKSkgPiAtMSkgew0KKyAgICAgICAgcEluZm8tPm1fU3R5bGVzIHw9IEZYRk9OVF9CT0xEOw0KKyAgICB9DQorICAgIGlmIChzdHlsZS5GaW5kKEZYX0JTVFJDKCJJdGFsaWMiKSkgPiAtMSB8fCBzdHlsZS5GaW5kKEZYX0JTVFJDKCJPYmxpcXVlIikpID4gLTEpIHsNCisgICAgICAgIHBJbmZvLT5tX1N0eWxlcyB8PSBGWEZPTlRfSVRBTElDOw0KKyAgICB9DQorICAgIGlmIChmYWNlbmFtZS5GaW5kKEZYX0JTVFJDKCJTZXJpZiIpKSA+IC0xKSB7DQorICAgICAgICBwSW5mby0+bV9TdHlsZXMgfD0gRlhGT05UX1NFUklGOw0KKyAgICB9DQorICAgIG1fRm9udExpc3QuU2V0QXQoZmFjZW5hbWUsIHBJbmZvKTsNCit9DQordm9pZCogQ0ZYX0ZvbGRlckZvbnRJbmZvOjpNYXBGb250KGludCB3ZWlnaHQsIEZYX0JPT0wgYkl0YWxpYywgaW50IGNoYXJzZXQsIGludCBwaXRjaF9mYW1pbHksIEZYX0xQQ1NUUiBmYW1pbHksIEZYX0JPT0wmIGJFeGFjdCkNCit7DQorICAgIHJldHVybiBOVUxMOw0KK30NCit2b2lkKiBDRlhfRm9sZGVyRm9udEluZm86OkdldEZvbnQoRlhfTFBDU1RSIGZhY2UpDQorew0KKyAgICBGWF9MUFZPSUQgcDsNCisgICAgaWYgKCFtX0ZvbnRMaXN0Lkxvb2t1cChmYWNlLCBwKSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHA7DQorfQ0KK0ZYX0RXT1JEIENGWF9Gb2xkZXJGb250SW5mbzo6R2V0Rm9udERhdGEodm9pZCogaEZvbnQsIEZYX0RXT1JEIHRhYmxlLCBGWF9MUEJZVEUgYnVmZmVyLCBGWF9EV09SRCBzaXplKQ0KK3sNCisgICAgaWYgKGhGb250ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIENGb250RmFjZUluZm8qIHBGb250ID0gKENGb250RmFjZUluZm8qKWhGb250Ow0KKyAgICBGWFNZU19GSUxFKiBwRmlsZSA9IE5VTEw7DQorICAgIGlmIChzaXplID4gMCkgew0KKyAgICAgICAgcEZpbGUgPSBGWFNZU19mb3BlbihwRm9udC0+bV9GaWxlUGF0aCwgInJiIik7DQorICAgICAgICBpZiAocEZpbGUgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYX0RXT1JEIGRhdGFzaXplID0gMDsNCisgICAgRlhfRFdPUkQgb2Zmc2V0Ow0KKyAgICBpZiAodGFibGUgPT0gMCkJew0KKyAgICAgICAgZGF0YXNpemUgPSBwRm9udC0+bV9Gb250T2Zmc2V0ID8gMCA6IHBGb250LT5tX0ZpbGVTaXplOw0KKyAgICAgICAgb2Zmc2V0ID0gMDsNCisgICAgfSBlbHNlIGlmICh0YWJsZSA9PSAweDc0NzQ2MzY2KQl7DQorICAgICAgICBkYXRhc2l6ZSA9IHBGb250LT5tX0ZvbnRPZmZzZXQgPyBwRm9udC0+bV9GaWxlU2l6ZSA6IDA7DQorICAgICAgICBvZmZzZXQgPSAwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgRlhfRFdPUkQgblRhYmxlcyA9IHBGb250LT5tX0ZvbnRUYWJsZXMuR2V0TGVuZ3RoKCkgLyAxNjsNCisgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBuVGFibGVzOyBpICsrKSB7DQorICAgICAgICAgICAgRlhfTFBDQllURSBwID0gKEZYX0xQQ0JZVEUpcEZvbnQtPm1fRm9udFRhYmxlcyArIGkgKiAxNjsNCisgICAgICAgICAgICBpZiAoR0VUX1RUX0xPTkcocCkgPT0gdGFibGUpIHsNCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gR0VUX1RUX0xPTkcocCArIDgpOw0KKyAgICAgICAgICAgICAgICBkYXRhc2l6ZSA9IEdFVF9UVF9MT05HKHAgKyAxMik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChkYXRhc2l6ZSAmJiBzaXplID49IGRhdGFzaXplICYmIHBGaWxlKSB7DQorICAgICAgICBGWFNZU19mc2VlayhwRmlsZSwgb2Zmc2V0LCBGWFNZU19TRUVLX1NFVCk7DQorICAgICAgICBzaXplX3QgcmVhZENudCA9IEZYU1lTX2ZyZWFkKGJ1ZmZlciwgZGF0YXNpemUsIDEsIHBGaWxlKTsNCisgICAgfQ0KKyAgICBpZiAocEZpbGUpIHsNCisgICAgICAgIEZYU1lTX2ZjbG9zZShwRmlsZSk7DQorICAgIH0NCisgICAgcmV0dXJuIGRhdGFzaXplOw0KK30NCit2b2lkIENGWF9Gb2xkZXJGb250SW5mbzo6RGVsZXRlRm9udCh2b2lkKiBoRm9udCkNCit7DQorfQ0KK0ZYX0JPT0wgQ0ZYX0ZvbGRlckZvbnRJbmZvOjpHZXRGYWNlTmFtZSh2b2lkKiBoRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpDQorew0KKyAgICBpZiAoaEZvbnQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGb250RmFjZUluZm8qIHBGb250ID0gKENGb250RmFjZUluZm8qKWhGb250Ow0KKyAgICBuYW1lID0gcEZvbnQtPm1fRmFjZU5hbWU7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9Gb2xkZXJGb250SW5mbzo6R2V0Rm9udENoYXJzZXQodm9pZCogaEZvbnQsIGludCYgY2hhcnNldCkNCit7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9nZS9meF9nZV9saW51eC5jcHAgYi9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlX2xpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2NmY2ZlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9nZS9meF9nZV9saW51eC5jcHAKQEAgLTAsMCArMSwyNTkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaW5jbHVkZSAiLi4vYWdnL2luY2x1ZGUvZnhfYWdnX2RyaXZlci5oIg0KKyNpbmNsdWRlICJ0ZXh0X2ludC5oIg0KKyNpZiAhZGVmaW5lZChfRlBERkFQSV9NSU5JXykgJiYgIF9GWE1fUExBVEZPUk1fID09IF9GWE1fUExBVEZPUk1fTElOVVhfDQorI2lmIChfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8gJiYgKCFkZWZpbmVkKF9GUERGQVBJX01JTklfKSkpDQordm9pZCBDRlhfQWdnRGV2aWNlRHJpdmVyOjpJbml0UGxhdGZvcm0oKQ0KK3sNCit9DQordm9pZCBDRlhfQWdnRGV2aWNlRHJpdmVyOjpEZXN0cm95UGxhdGZvcm0oKQ0KK3sNCit9DQordm9pZCBDRlhfRmFjZUNhY2hlOjpJbml0UGxhdGZvcm0oKQ0KK3sNCit9DQorRlhfQk9PTCBDRlhfQWdnRGV2aWNlRHJpdmVyOjpEcmF3RGV2aWNlVGV4dChpbnQgbkNoYXJzLCBjb25zdCBGWFRFWFRfQ0hBUlBPUyogcENoYXJQb3MsIENGWF9Gb250KiBwRm9udCwNCisgICAgICAgIENGWF9Gb250Q2FjaGUqIHBDYWNoZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICBGWF9GTE9BVCBmb250X3NpemUsIEZYX0RXT1JEIGFyZ2IpDQorew0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0NGWF9HbHlwaEJpdG1hcCogQ0ZYX0ZhY2VDYWNoZTo6UmVuZGVyR2x5cGhfTmF0aXZldGV4dChDRlhfRm9udCogcEZvbnQsIEZYX0RXT1JEIGdseXBoX2luZGV4LCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LA0KKyAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBhbnRpX2FsaWFzKQ0KK3sNCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK3ZvaWQgQ0ZYX0ZvbnQ6OlJlbGVhc2VQbGF0Zm9ybVJlc291cmNlKCkNCit7DQorfQ0KKyNlbmRpZg0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgew0KKyAgICBGWF9MUENTVFIJbV9wTmFtZTsNCisgICAgRlhfTFBDU1RSCW1fcFN1YnN0TmFtZTsNCit9DQorQmFzZTE0U3Vic3RzW10gPSB7DQorICAgIHsiQ291cmllciIsICJDb3VyaWVyIE5ldyJ9LA0KKyAgICB7IkNvdXJpZXItQm9sZCIsICJDb3VyaWVyIE5ldyBCb2xkIn0sDQorICAgIHsiQ291cmllci1Cb2xkT2JsaXF1ZSIsICJDb3VyaWVyIE5ldyBCb2xkIEl0YWxpYyJ9LA0KKyAgICB7IkNvdXJpZXItT2JsaXF1ZSIsICJDb3VyaWVyIE5ldyBJdGFsaWMifSwNCisgICAgeyJIZWx2ZXRpY2EiLCAiQXJpYWwifSwNCisgICAgeyJIZWx2ZXRpY2EtQm9sZCIsICJBcmlhbCBCb2xkIn0sDQorICAgIHsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIiwgIkFyaWFsIEJvbGQgSXRhbGljIn0sDQorICAgIHsiSGVsdmV0aWNhLU9ibGlxdWUiLCAiQXJpYWwgSXRhbGljIn0sDQorICAgIHsiVGltZXMtUm9tYW4iLCAiVGltZXMgTmV3IFJvbWFuIn0sDQorICAgIHsiVGltZXMtQm9sZCIsICJUaW1lcyBOZXcgUm9tYW4gQm9sZCJ9LA0KKyAgICB7IlRpbWVzLUJvbGRJdGFsaWMiLCAiVGltZXMgTmV3IFJvbWFuIEJvbGQgSXRhbGljIn0sDQorICAgIHsiVGltZXMtSXRhbGljIiwgIlRpbWVzIE5ldyBSb21hbiBJdGFsaWMifSwNCit9Ow0KK2NsYXNzIENGWF9MaW51eEZvbnRJbmZvIDogcHVibGljIENGWF9Gb2xkZXJGb250SW5mbw0KK3sNCitwdWJsaWM6DQorICAgIHZpcnR1YWwgdm9pZCoJCU1hcEZvbnQoaW50IHdlaWdodCwgRlhfQk9PTCBiSXRhbGljLCBpbnQgY2hhcnNldCwgaW50IHBpdGNoX2ZhbWlseSwgRlhfTFBDU1RSIGZhbWlseSwgRlhfQk9PTCYgYkV4YWN0KTsNCisgICAgRlhfQk9PTAkJCQlQYXJzZUZvbnRDZmcoKTsNCisgICAgdm9pZCoJCQkJRmluZEZvbnQoaW50IHdlaWdodCwgRlhfQk9PTCBiSXRhbGljLCBpbnQgY2hhcnNldCwgaW50IHBpdGNoX2ZhbWlseSwgRlhfTFBDU1RSIGZhbWlseSwgRlhfQk9PTCBiTWF0Y2hOYW1lKTsNCit9Ow0KKyNkZWZpbmUgTElOVVhfR1BOQU1FU0laRQk2DQorc3RhdGljIGNvbnN0IHN0cnVjdCB7DQorICAgIEZYX0xQQ1NUUiBOYW1lQXJyW0xJTlVYX0dQTkFNRVNJWkVdOw0KK30NCitMaW51eEdwRm9udExpc3RbXSA9IHsNCisgICAge3siVGFrYW9QR290aGljIiwgIlZMIFBHb3RoaWMiLCAiSVBBUEdvdGhpYyIsICJWTCBHb3RoaWMiLCAiS29jaGkgR290aGljIiwgIlZMIEdvdGhpYyByZWd1bGFyIn19LA0KKyAgICB7eyJUYWthb0dvdGhpYyIsICJWTCBHb3RoaWMiLCAiSVBBR290aGljIiwgIktvY2hpIEdvdGhpYyIsIE5VTEwsICJWTCBHb3RoaWMgcmVndWxhciJ9fSwNCisgICAge3siVGFrYW9QTWluY2hvIiwgIklQQVBNaW5jaG8iLCAiVkwgR290aGljIiwgIktvY2hpIE1pbmNobyIsIE5VTEwsICJWTCBHb3RoaWMgcmVndWxhciJ9fSwNCisgICAge3siVGFrYW9NaW5jaG8iLCAiSVBBTWluY2hvIiwgIlZMIEdvdGhpYyIsICJLb2NoaSBNaW5jaG8iLCBOVUxMLCAiVkwgR290aGljIHJlZ3VsYXIifX0sDQorfTsNCitzdGF0aWMgY29uc3QgRlhfTFBDU1RSIGdfTGludXhHYkZvbnRMaXN0W10gPSB7DQorICAgICJBUiBQTCBVTWluZyBDTiBMaWdodCIsDQorICAgICJXZW5RdWFuWWkgTWljcm8gSGVpIiwNCisgICAgIkFSIFBMIFVLYWkgQ04iLA0KK307DQorc3RhdGljIGNvbnN0IEZYX0xQQ1NUUiBnX0xpbnV4QjVGb250TGlzdFtdID0gew0KKyAgICAiQVIgUEwgVU1pbmcgVFcgTGlnaHQiLA0KKyAgICAiV2VuUXVhbllpIE1pY3JvIEhlaSIsDQorICAgICJBUiBQTCBVS2FpIFRXIiwNCit9Ow0KK3N0YXRpYyBjb25zdCBGWF9MUENTVFIgZ19MaW51eEhHRm9udExpc3RbXSA9IHsNCisgICAgIlVuRG90dW0iLA0KK307DQorc3RhdGljIEZYX0lOVDMyIEdldEphcGFuZXNlUHJlZmVyZW5jZShGWF9MUENTVFIgZmFjZWFyciwgaW50IHdlaWdodCwgaW50IHBpY3RoX2ZhbWlseSkNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIGZhY2UgPSBmYWNlYXJyOw0KKyAgICBpZiAoZmFjZS5GaW5kKCJHb3RoaWMiKSA+PSAwIHx8IGZhY2UuRmluZCgiXHg4M1x4NTNceDgzXHg1Nlx4ODNceDYyXHg4M1x4NGUiKSA+PSAwKSB7DQorICAgICAgICBpZiAoZmFjZS5GaW5kKCJQR290aGljIikgPj0gMCB8fCBmYWNlLkZpbmQoIlx4ODJceDZmXHg4M1x4NTNceDgzXHg1Nlx4ODNceDYyXHg4M1x4NGUiKSA+PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKGZhY2UuRmluZCgiTWluY2hvIikgPj0gMCB8fCBmYWNlLkZpbmQoIlx4OTZceGJlXHg5Mlx4YTkiKSA+PSAwKSB7DQorICAgICAgICBpZiAoZmFjZS5GaW5kKCJQTWluY2hvIikgPj0gMCB8fCBmYWNlLkZpbmQoIlx4ODJceDZmXHg5Nlx4YmVceDkyXHhhOSIpID49IDApIHsNCisgICAgICAgICAgICByZXR1cm4gMjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIDM7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCEocGljdGhfZmFtaWx5ICYgRlhGT05UX0ZGX1JPTUFOKSAmJiB3ZWlnaHQgPiA0MDApIHsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAgIHJldHVybiAyOw0KK30NCit2b2lkKiBDRlhfTGludXhGb250SW5mbzo6TWFwRm9udChpbnQgd2VpZ2h0LCBGWF9CT09MIGJJdGFsaWMsIGludCBjaGFyc2V0LCBpbnQgcGl0Y2hfZmFtaWx5LCBGWF9MUENTVFIgY3N0cl9mYWNlLCBGWF9CT09MJiBiRXhhY3QpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBmYWNlID0gY3N0cl9mYWNlOw0KKyAgICBpbnQgaUJhc2VGb250Ow0KKyAgICBmb3IgKGlCYXNlRm9udCA9IDA7IGlCYXNlRm9udCA8IDEyOyBpQmFzZUZvbnQgKyspDQorICAgICAgICBpZiAoZmFjZSA9PSBDRlhfQnl0ZVN0cmluZ0MoQmFzZTE0U3Vic3RzW2lCYXNlRm9udF0ubV9wTmFtZSkpIHsNCisgICAgICAgICAgICBmYWNlID0gQmFzZTE0U3Vic3RzW2lCYXNlRm9udF0ubV9wU3Vic3ROYW1lOw0KKyAgICAgICAgICAgIGJFeGFjdCA9IFRSVUU7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIGlmIChpQmFzZUZvbnQgPCAxMikgew0KKyAgICAgICAgcmV0dXJuIEdldEZvbnQoZmFjZSk7DQorICAgIH0NCisgICAgRlhfTFBWT0lEIHAgPSBOVUxMOw0KKyAgICBGWF9CT09MIGJDSksgPSBUUlVFOw0KKyAgICBzd2l0Y2ggKGNoYXJzZXQpIHsNCisgICAgICAgIGNhc2UgRlhGT05UX1NISUZUSklTX0NIQVJTRVQ6IHsNCisgICAgICAgICAgICAgICAgRlhfSU5UMzIgaW5kZXggPSBHZXRKYXBhbmVzZVByZWZlcmVuY2UoY3N0cl9mYWNlLCB3ZWlnaHQsIHBpdGNoX2ZhbWlseSk7DQorICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgaSA9IDA7IGkgPCBMSU5VWF9HUE5BTUVTSVpFOyBpKyspDQorICAgICAgICAgICAgICAgICAgICBpZiAobV9Gb250TGlzdC5Mb29rdXAoTGludXhHcEZvbnRMaXN0W2luZGV4XS5OYW1lQXJyW2ldLCBwKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhGT05UX0dCMjMxMl9DSEFSU0VUOiB7DQorICAgICAgICAgICAgICAgIHN0YXRpYyBGWF9JTlQzMiBzX2diQ291bnQgPSBzaXplb2YoZ19MaW51eEdiRm9udExpc3QpIC8gc2l6ZW9mKEZYX0xQQ1NUUik7DQorICAgICAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgaSA9IDA7IGkgPCBzX2diQ291bnQ7IGkrKykNCisgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZvbnRMaXN0Lkxvb2t1cChnX0xpbnV4R2JGb250TGlzdFtpXSwgcCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRk9OVF9DSElORVNFQklHNV9DSEFSU0VUOiB7DQorICAgICAgICAgICAgICAgIHN0YXRpYyBGWF9JTlQzMiBzX2I1Q291bnQgPSBzaXplb2YoZ19MaW51eEI1Rm9udExpc3QpIC8gc2l6ZW9mKEZYX0xQQ1NUUik7DQorICAgICAgICAgICAgICAgIGZvciAoRlhfSU5UMzIgaSA9IDA7IGkgPCBzX2I1Q291bnQ7IGkrKykNCisgICAgICAgICAgICAgICAgICAgIGlmIChtX0ZvbnRMaXN0Lkxvb2t1cChnX0xpbnV4QjVGb250TGlzdFtpXSwgcCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRk9OVF9IQU5HRVVMX0NIQVJTRVQ6IHsNCisgICAgICAgICAgICAgICAgc3RhdGljIEZYX0lOVDMyIHNfaGdDb3VudCA9IHNpemVvZihnX0xpbnV4SEdGb250TGlzdCkgLyBzaXplb2YoRlhfTFBDU1RSKTsNCisgICAgICAgICAgICAgICAgZm9yIChGWF9JTlQzMiBpID0gMDsgaSA8IHNfaGdDb3VudDsgaSsrKQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fRm9udExpc3QuTG9va3VwKGdfTGludXhIR0ZvbnRMaXN0W2ldLCBwKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgYkNKSyA9IEZBTFNFOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIGlmIChjaGFyc2V0ID09IEZYRk9OVF9BTlNJX0NIQVJTRVQgJiYgKHBpdGNoX2ZhbWlseSAmIEZYRk9OVF9GRl9GSVhFRFBJVENIKSkgew0KKyAgICAgICAgcmV0dXJuIEdldEZvbnQoIkNvdXJpZXIgTmV3Iik7DQorICAgIH0NCisgICAgcmV0dXJuIEZpbmRGb250KHdlaWdodCwgYkl0YWxpYywgY2hhcnNldCwgcGl0Y2hfZmFtaWx5LCBjc3RyX2ZhY2UsICFiQ0pLKTsNCit9DQorc3RhdGljIEZYX0RXT1JEIF9MaW51eEdldENoYXJzZXQoaW50IGNoYXJzZXQpDQorew0KKyAgICBzd2l0Y2goY2hhcnNldCkgew0KKyAgICAgICAgY2FzZSBGWEZPTlRfU0hJRlRKSVNfQ0hBUlNFVDoNCisgICAgICAgICAgICByZXR1cm4gQ0hBUlNFVF9GTEFHX1NISUZUSklTOw0KKyAgICAgICAgY2FzZSBGWEZPTlRfR0IyMzEyX0NIQVJTRVQ6DQorICAgICAgICAgICAgcmV0dXJuIENIQVJTRVRfRkxBR19HQjsNCisgICAgICAgIGNhc2UgRlhGT05UX0NISU5FU0VCSUc1X0NIQVJTRVQ6DQorICAgICAgICAgICAgcmV0dXJuIENIQVJTRVRfRkxBR19CSUc1Ow0KKyAgICAgICAgY2FzZSBGWEZPTlRfSEFOR0VVTF9DSEFSU0VUOg0KKyAgICAgICAgICAgIHJldHVybiBDSEFSU0VUX0ZMQUdfS09SRUFOOw0KKyAgICAgICAgY2FzZSBGWEZPTlRfU1lNQk9MX0NIQVJTRVQ6DQorICAgICAgICAgICAgcmV0dXJuIENIQVJTRVRfRkxBR19TWU1CT0w7DQorICAgICAgICBjYXNlIEZYRk9OVF9BTlNJX0NIQVJTRVQ6DQorICAgICAgICAgICAgcmV0dXJuIENIQVJTRVRfRkxBR19BTlNJOw0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorc3RhdGljIEZYX0lOVDMyIF9MaW51eEdldFNpbWlsYXJWYWx1ZShpbnQgd2VpZ2h0LCBGWF9CT09MIGJJdGFsaWMsIGludCBwaXRjaF9mYW1pbHksIEZYX0RXT1JEIHN0eWxlKQ0KK3sNCisgICAgRlhfSU5UMzIgaVNpbWlsYXJWYWx1ZSA9IDA7DQorICAgIGlmICgoc3R5bGUgJiBGWEZPTlRfQk9MRCkgPT0gKHdlaWdodCA+IDQwMCkpIHsNCisgICAgICAgIGlTaW1pbGFyVmFsdWUgKz0gMTY7DQorICAgIH0NCisgICAgaWYgKChzdHlsZSAmIEZYRk9OVF9JVEFMSUMpID09IGJJdGFsaWMpIHsNCisgICAgICAgIGlTaW1pbGFyVmFsdWUgKz0gMTY7DQorICAgIH0NCisgICAgaWYgKChzdHlsZSAmIEZYRk9OVF9TRVJJRikgPT0gKHBpdGNoX2ZhbWlseSAmIEZYRk9OVF9GRl9ST01BTikpIHsNCisgICAgICAgIGlTaW1pbGFyVmFsdWUgKz0gMTY7DQorICAgIH0NCisgICAgaWYgKChzdHlsZSAmIEZYRk9OVF9TQ1JJUFQpID09IChwaXRjaF9mYW1pbHkgJiBGWEZPTlRfRkZfU0NSSVBUKSkgew0KKyAgICAgICAgaVNpbWlsYXJWYWx1ZSArPSA4Ow0KKyAgICB9DQorICAgIGlmICgoc3R5bGUgJiBGWEZPTlRfRklYRURfUElUQ0gpID09IChwaXRjaF9mYW1pbHkgJiBGWEZPTlRfRkZfRklYRURQSVRDSCkpIHsNCisgICAgICAgIGlTaW1pbGFyVmFsdWUgKz0gODsNCisgICAgfQ0KKyAgICByZXR1cm4gaVNpbWlsYXJWYWx1ZTsNCit9DQordm9pZCogQ0ZYX0xpbnV4Rm9udEluZm86OkZpbmRGb250KGludCB3ZWlnaHQsIEZYX0JPT0wgYkl0YWxpYywgaW50IGNoYXJzZXQsIGludCBwaXRjaF9mYW1pbHksIEZYX0xQQ1NUUiBmYW1pbHksIEZYX0JPT0wgYk1hdGNoTmFtZSkNCit7DQorICAgIENGb250RmFjZUluZm8qIHBGaW5kID0gTlVMTDsNCisgICAgRlhfRFdPUkQgY2hhcnNldF9mbGFnID0gX0xpbnV4R2V0Q2hhcnNldChjaGFyc2V0KTsNCisgICAgRlhfSU5UMzIgaUJlc3RTaW1pbGFyID0gMDsNCisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9Gb250TGlzdC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGJzTmFtZTsNCisgICAgICAgIENGb250RmFjZUluZm8qIHBGb250ID0gTlVMTDsNCisgICAgICAgIG1fRm9udExpc3QuR2V0TmV4dEFzc29jKHBvcywgYnNOYW1lLCAoRlhfTFBWT0lEJilwRm9udCk7DQorICAgICAgICBpZiAoIShwRm9udC0+bV9DaGFyc2V0cyAmIGNoYXJzZXRfZmxhZykgJiYgY2hhcnNldCAhPSBGWEZPTlRfREVGQVVMVF9DSEFSU0VUKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9JTlQzMiBpU2ltaWxhclZhbHVlID0gMDsNCisgICAgICAgIEZYX0lOVDMyIGluZGV4ID0gYnNOYW1lLkZpbmQoZmFtaWx5KTsNCisgICAgICAgIGlmIChiTWF0Y2hOYW1lICYmIGluZGV4IDwgMCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFiTWF0Y2hOYW1lICYmIGluZGV4ID4gMCkgew0KKyAgICAgICAgICAgIGlTaW1pbGFyVmFsdWUgKz0gNjQ7DQorICAgICAgICB9DQorICAgICAgICBpU2ltaWxhclZhbHVlID0gX0xpbnV4R2V0U2ltaWxhclZhbHVlKHdlaWdodCwgYkl0YWxpYywgcGl0Y2hfZmFtaWx5LCBwRm9udC0+bV9TdHlsZXMpOw0KKyAgICAgICAgaWYgKGlTaW1pbGFyVmFsdWUgPiBpQmVzdFNpbWlsYXIpIHsNCisgICAgICAgICAgICBpQmVzdFNpbWlsYXIgPSBpU2ltaWxhclZhbHVlOw0KKyAgICAgICAgICAgIHBGaW5kID0gcEZvbnQ7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHBGaW5kOw0KK30NCitJRlhfU3lzdGVtRm9udEluZm8qIElGWF9TeXN0ZW1Gb250SW5mbzo6Q3JlYXRlRGVmYXVsdCgpDQorew0KKyAgICBDRlhfTGludXhGb250SW5mbyogcEluZm8gPSBGWF9ORVcgQ0ZYX0xpbnV4Rm9udEluZm87DQorICAgIGlmICghcEluZm8pIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmICghcEluZm8tPlBhcnNlRm9udENmZygpKSB7DQorICAgICAgICBwSW5mby0+QWRkUGF0aCgiL3Vzci9zaGFyZS9mb250cyIpOw0KKyAgICAgICAgcEluZm8tPkFkZFBhdGgoIi91c3Ivc2hhcmUvWDExL2ZvbnRzL1R5cGUxIik7DQorICAgICAgICBwSW5mby0+QWRkUGF0aCgiL3Vzci9zaGFyZS9YMTEvZm9udHMvVFRGIik7DQorICAgICAgICBwSW5mby0+QWRkUGF0aCgiL3Vzci9sb2NhbC9zaGFyZS9mb250cyIpOw0KKyAgICB9DQorICAgIHJldHVybiBwSW5mbzsNCit9DQorRlhfQk9PTCBDRlhfTGludXhGb250SW5mbzo6UGFyc2VGb250Q2ZnKCkNCit7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQordm9pZCBDRlhfR0VNb2R1bGU6OkluaXRQbGF0Zm9ybSgpDQorew0KKyAgICBtX3BGb250TWdyLT5TZXRTeXN0ZW1Gb250SW5mbyhJRlhfU3lzdGVtRm9udEluZm86OkNyZWF0ZURlZmF1bHQoKSk7DQorfQ0KK3ZvaWQgQ0ZYX0dFTW9kdWxlOjpEZXN0cm95UGxhdGZvcm0oKQ0KK3sNCit9DQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9nZS9meF9nZV9wYXRoLmNwcCBiL2NvcmUvc3JjL2Z4Z2UvZ2UvZnhfZ2VfcGF0aC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM2ZWU1MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2UvZ2UvZnhfZ2VfcGF0aC5jcHAKQEAgLTAsMCArMSw2NTQgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Y3J0L2Z4X2Jhc2ljLmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KK0NGWF9DbGlwUmduOjpDRlhfQ2xpcFJnbihpbnQgd2lkdGgsIGludCBoZWlnaHQpDQorew0KKyAgICBtX1R5cGUgPSBSZWN0STsNCisgICAgbV9Cb3gubGVmdCA9IG1fQm94LnRvcCA9IDA7DQorICAgIG1fQm94LnJpZ2h0ID0gd2lkdGg7DQorICAgIG1fQm94LmJvdHRvbSA9IGhlaWdodDsNCit9DQorQ0ZYX0NsaXBSZ246OkNGWF9DbGlwUmduKGNvbnN0IEZYX1JFQ1QmIHJlY3QpDQorew0KKyAgICBtX1R5cGUgPSBSZWN0STsNCisgICAgbV9Cb3ggPSByZWN0Ow0KK30NCitDRlhfQ2xpcFJnbjo6Q0ZYX0NsaXBSZ24oY29uc3QgQ0ZYX0NsaXBSZ24mIHNyYykNCit7DQorICAgIG1fVHlwZSA9IHNyYy5tX1R5cGU7DQorICAgIG1fQm94ID0gc3JjLm1fQm94Ow0KKyAgICBtX01hc2sgPSBzcmMubV9NYXNrOw0KK30NCitDRlhfQ2xpcFJnbjo6fkNGWF9DbGlwUmduKCkNCit7DQorfQ0KK3ZvaWQgQ0ZYX0NsaXBSZ246OlJlc2V0KGNvbnN0IEZYX1JFQ1QmIHJlY3QpDQorew0KKyAgICBtX1R5cGUgPSBSZWN0STsNCisgICAgbV9Cb3ggPSByZWN0Ow0KKyAgICBtX01hc2suU2V0TnVsbCgpOw0KK30NCit2b2lkIENGWF9DbGlwUmduOjpJbnRlcnNlY3RSZWN0KGNvbnN0IEZYX1JFQ1QmIHJlY3QpDQorew0KKyAgICBpZiAobV9UeXBlID09IFJlY3RJKSB7DQorICAgICAgICBtX0JveC5JbnRlcnNlY3QocmVjdCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKG1fVHlwZSA9PSBNYXNrRikgew0KKyAgICAgICAgSW50ZXJzZWN0TWFza1JlY3QocmVjdCwgbV9Cb3gsIG1fTWFzayk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCit9DQordm9pZCBDRlhfQ2xpcFJnbjo6SW50ZXJzZWN0TWFza1JlY3QoRlhfUkVDVCByZWN0LCBGWF9SRUNUIG1hc2tfcmVjdCwgQ0ZYX0RJQml0bWFwUmVmIE1hc2spDQorew0KKyAgICBjb25zdCBDRlhfRElCaXRtYXAqIG1hc2tfZGliID0gTWFzazsNCisgICAgbV9UeXBlID0gTWFza0Y7DQorICAgIG1fQm94ID0gcmVjdDsNCisgICAgbV9Cb3guSW50ZXJzZWN0KG1hc2tfcmVjdCk7DQorICAgIGlmIChtX0JveC5Jc0VtcHR5KCkpIHsNCisgICAgICAgIG1fVHlwZSA9IFJlY3RJOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9IGVsc2UgaWYgKG1fQm94ID09IG1hc2tfcmVjdCkgew0KKyAgICAgICAgbV9NYXNrID0gTWFzazsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhfRElCaXRtYXAqIG5ld19kaWIgPSBtX01hc2suTmV3KCk7DQorICAgIGlmICghbmV3X2RpYikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG5ld19kaWItPkNyZWF0ZShtX0JveC5XaWR0aCgpLCBtX0JveC5IZWlnaHQoKSwgRlhESUJfOGJwcE1hc2spOw0KKyAgICBmb3IgKGludCByb3cgPSBtX0JveC50b3A7IHJvdyA8IG1fQm94LmJvdHRvbTsgcm93ICsrKSB7DQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gbmV3X2RpYi0+R2V0QnVmZmVyKCkgKyBuZXdfZGliLT5HZXRQaXRjaCgpICogKHJvdyAtIG1fQm94LnRvcCk7DQorICAgICAgICBGWF9MUEJZVEUgc3JjX3NjYW4gPSBtYXNrX2RpYi0+R2V0QnVmZmVyKCkgKyBtYXNrX2RpYi0+R2V0UGl0Y2goKSAqIChyb3cgLSBtYXNrX3JlY3QudG9wKTsNCisgICAgICAgIGZvciAoaW50IGNvbCA9IG1fQm94LmxlZnQ7IGNvbCA8IG1fQm94LnJpZ2h0OyBjb2wgKyspIHsNCisgICAgICAgICAgICBkZXN0X3NjYW5bY29sIC0gbV9Cb3gubGVmdF0gPSBzcmNfc2Nhbltjb2wgLSBtYXNrX3JlY3QubGVmdF07DQorICAgICAgICB9DQorICAgIH0NCit9DQordm9pZCBDRlhfQ2xpcFJnbjo6SW50ZXJzZWN0TWFza0YoaW50IGxlZnQsIGludCB0b3AsIENGWF9ESUJpdG1hcFJlZiBNYXNrKQ0KK3sNCisgICAgY29uc3QgQ0ZYX0RJQml0bWFwKiBtYXNrX2RpYiA9IE1hc2s7DQorICAgIEFTU0VSVChtYXNrX2RpYi0+R2V0Rm9ybWF0KCkgPT0gRlhESUJfOGJwcE1hc2spOw0KKyAgICBGWF9SRUNUIG1hc2tfYm94KGxlZnQsIHRvcCwgbGVmdCArIG1hc2tfZGliLT5HZXRXaWR0aCgpLCB0b3AgKyBtYXNrX2RpYi0+R2V0SGVpZ2h0KCkpOw0KKyAgICBpZiAobV9UeXBlID09IFJlY3RJKSB7DQorICAgICAgICBJbnRlcnNlY3RNYXNrUmVjdChtX0JveCwgbWFza19ib3gsIE1hc2spOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChtX1R5cGUgPT0gTWFza0YpIHsNCisgICAgICAgIEZYX1JFQ1QgbmV3X2JveCA9IG1fQm94Ow0KKyAgICAgICAgbmV3X2JveC5JbnRlcnNlY3QobWFza19ib3gpOw0KKyAgICAgICAgaWYgKG5ld19ib3guSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgbV9UeXBlID0gUmVjdEk7DQorICAgICAgICAgICAgbV9NYXNrLlNldE51bGwoKTsNCisgICAgICAgICAgICBtX0JveCA9IG5ld19ib3g7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0RJQml0bWFwUmVmIG5ld19tYXNrOw0KKyAgICAgICAgQ0ZYX0RJQml0bWFwKiBuZXdfZGliID0gbmV3X21hc2suTmV3KCk7DQorICAgICAgICBpZiAoIW5ld19kaWIpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBuZXdfZGliLT5DcmVhdGUobmV3X2JveC5XaWR0aCgpLCBuZXdfYm94LkhlaWdodCgpLCBGWERJQl84YnBwTWFzayk7DQorICAgICAgICBjb25zdCBDRlhfRElCaXRtYXAqIG9sZF9kaWIgPSBtX01hc2s7DQorICAgICAgICBmb3IgKGludCByb3cgPSBuZXdfYm94LnRvcDsgcm93IDwgbmV3X2JveC5ib3R0b207IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQllURSBvbGRfc2NhbiA9IG9sZF9kaWItPkdldEJ1ZmZlcigpICsgKHJvdyAtIG1fQm94LnRvcCkgKiBvbGRfZGliLT5HZXRQaXRjaCgpOw0KKyAgICAgICAgICAgIEZYX0xQQllURSBtYXNrX3NjYW4gPSBtYXNrX2RpYi0+R2V0QnVmZmVyKCkgKyAocm93IC0gdG9wKSAqIG1hc2tfZGliLT5HZXRQaXRjaCgpOw0KKyAgICAgICAgICAgIEZYX0xQQllURSBuZXdfc2NhbiA9IG5ld19kaWItPkdldEJ1ZmZlcigpICsgKHJvdyAtIG5ld19ib3gudG9wKSAqIG5ld19kaWItPkdldFBpdGNoKCk7DQorICAgICAgICAgICAgZm9yIChpbnQgY29sID0gbmV3X2JveC5sZWZ0OyBjb2wgPCBuZXdfYm94LnJpZ2h0OyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgbmV3X3NjYW5bY29sIC0gbmV3X2JveC5sZWZ0XSA9IG9sZF9zY2FuW2NvbCAtIG1fQm94LmxlZnRdICogbWFza19zY2FuW2NvbCAtIGxlZnRdIC8gMjU1Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG1fQm94ID0gbmV3X2JveDsNCisgICAgICAgIG1fTWFzayA9IG5ld19tYXNrOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIEFTU0VSVChGQUxTRSk7DQorfQ0KK0NGWF9QYXRoRGF0YTo6Q0ZYX1BhdGhEYXRhKCkNCit7DQorICAgIG1fUG9pbnRDb3VudCA9IG1fQWxsb2NDb3VudCA9IDA7DQorICAgIG1fcFBvaW50cyA9IE5VTEw7DQorfQ0KK0NGWF9QYXRoRGF0YTo6fkNGWF9QYXRoRGF0YSgpDQorew0KKyAgICBpZiAobV9wUG9pbnRzKSB7DQorICAgICAgICBGWF9GcmVlKG1fcFBvaW50cyk7DQorICAgIH0NCit9DQorRlhfQk9PTCBDRlhfUGF0aERhdGE6OlNldFBvaW50Q291bnQoaW50IG5Qb2ludHMpDQorew0KKyAgICBtX1BvaW50Q291bnQgPSBuUG9pbnRzOw0KKyAgICBpZiAobV9BbGxvY0NvdW50IDwgblBvaW50cykgew0KKyAgICAgICAgaWYgKG1fcFBvaW50cykgew0KKyAgICAgICAgICAgIEZYX0ZyZWUobV9wUG9pbnRzKTsNCisgICAgICAgICAgICBtX3BQb2ludHMgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wUG9pbnRzID0gRlhfQWxsb2MoRlhfUEFUSFBPSU5ULCBuUG9pbnRzKTsNCisgICAgICAgIGlmICghbV9wUG9pbnRzKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9BbGxvY0NvdW50ID0gblBvaW50czsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDRlhfUGF0aERhdGE6OkFsbG9jUG9pbnRDb3VudChpbnQgblBvaW50cykNCit7DQorICAgIGlmIChtX0FsbG9jQ291bnQgPCBuUG9pbnRzKSB7DQorICAgICAgICBGWF9QQVRIUE9JTlQqIHBOZXdCdWYgPSBGWF9BbGxvYyhGWF9QQVRIUE9JTlQsIG5Qb2ludHMpOw0KKyAgICAgICAgaWYgKCFwTmV3QnVmKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fUG9pbnRDb3VudCkgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKHBOZXdCdWYsIG1fcFBvaW50cywgbV9Qb2ludENvdW50ICogc2l6ZW9mKEZYX1BBVEhQT0lOVCkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fcFBvaW50cykgew0KKyAgICAgICAgICAgIEZYX0ZyZWUobV9wUG9pbnRzKTsNCisgICAgICAgIH0NCisgICAgICAgIG1fcFBvaW50cyA9IHBOZXdCdWY7DQorICAgICAgICBtX0FsbG9jQ291bnQgPSBuUG9pbnRzOw0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDRlhfUGF0aERhdGE6OkNGWF9QYXRoRGF0YShjb25zdCBDRlhfUGF0aERhdGEmIHNyYykNCit7DQorICAgIG1fcFBvaW50cyA9IE5VTEw7DQorICAgIG1fUG9pbnRDb3VudCA9IG1fQWxsb2NDb3VudCA9IHNyYy5tX1BvaW50Q291bnQ7DQorICAgIG1fcFBvaW50cyA9IEZYX0FsbG9jKEZYX1BBVEhQT0lOVCwgc3JjLm1fUG9pbnRDb3VudCk7DQorICAgIGlmICghbV9wUG9pbnRzKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIobV9wUG9pbnRzLCBzcmMubV9wUG9pbnRzLCBzaXplb2YoRlhfUEFUSFBPSU5UKSAqIG1fUG9pbnRDb3VudCk7DQorfQ0KK3ZvaWQgQ0ZYX1BhdGhEYXRhOjpUcmltUG9pbnRzKGludCBuUG9pbnRzKQ0KK3sNCisgICAgaWYgKG1fUG9pbnRDb3VudCA8PSBuUG9pbnRzKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgU2V0UG9pbnRDb3VudChuUG9pbnRzKTsNCit9DQorRlhfQk9PTCBDRlhfUGF0aERhdGE6OkFkZFBvaW50Q291bnQoaW50IGFkZFBvaW50cykNCit7DQorICAgIGludCBuZXdfY291bnQgPSBtX1BvaW50Q291bnQgKyBhZGRQb2ludHM7DQorICAgIGlmICghQWxsb2NQb2ludENvdW50KG5ld19jb3VudCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBtX1BvaW50Q291bnQgPSBuZXdfY291bnQ7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9QYXRoRGF0YTo6QXBwZW5kKGNvbnN0IENGWF9QYXRoRGF0YSogcFNyYywgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCkNCit7DQorICAgIGludCBvbGRfY291bnQgPSBtX1BvaW50Q291bnQ7DQorICAgIGlmICghQWRkUG9pbnRDb3VudChwU3JjLT5tX1BvaW50Q291bnQpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhTWVNfbWVtY3B5MzIobV9wUG9pbnRzICsgb2xkX2NvdW50LCBwU3JjLT5tX3BQb2ludHMsIHBTcmMtPm1fUG9pbnRDb3VudCAqIHNpemVvZihGWF9QQVRIUE9JTlQpKTsNCisgICAgaWYgKHBNYXRyaXggPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwU3JjLT5tX1BvaW50Q291bnQ7IGkgKyspIHsNCisgICAgICAgIHBNYXRyaXgtPlRyYW5zZm9ybShtX3BQb2ludHNbb2xkX2NvdW50ICsgaV0ubV9Qb2ludFgsIG1fcFBvaW50c1tvbGRfY291bnQgKyBpXS5tX1BvaW50WSk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3ZvaWQgQ0ZYX1BhdGhEYXRhOjpTZXRQb2ludChpbnQgaW5kZXgsIEZYX0ZMT0FUIHgsIEZYX0ZMT0FUIHksIGludCBmbGFnKQ0KK3sNCisgICAgQVNTRVJUKGluZGV4IDwgbV9Qb2ludENvdW50KTsNCisgICAgbV9wUG9pbnRzW2luZGV4XS5tX1BvaW50WCA9IHg7DQorICAgIG1fcFBvaW50c1tpbmRleF0ubV9Qb2ludFkgPSB5Ow0KKyAgICBtX3BQb2ludHNbaW5kZXhdLm1fRmxhZyA9IGZsYWc7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1BhdGhEYXRhOjpBcHBlbmRSZWN0KEZYX0ZMT0FUIGxlZnQsIEZYX0ZMT0FUIGJvdHRvbSwgRlhfRkxPQVQgcmlnaHQsIEZYX0ZMT0FUIHRvcCkNCit7DQorICAgIGludCBvbGRfY291bnQgPSBtX1BvaW50Q291bnQ7DQorICAgIGlmICghQWRkUG9pbnRDb3VudCg1KSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIEZYX1BBVEhQT0lOVCogcFBvaW50cyA9IG1fcFBvaW50cyArIG9sZF9jb3VudDsNCisgICAgcFBvaW50c1swXS5tX1BvaW50WCA9IHBQb2ludHNbMV0ubV9Qb2ludFggPSBwUG9pbnRzWzRdLm1fUG9pbnRYID0gbGVmdDsNCisgICAgcFBvaW50c1syXS5tX1BvaW50WCA9IHBQb2ludHNbM10ubV9Qb2ludFggPSByaWdodDsNCisgICAgcFBvaW50c1swXS5tX1BvaW50WSA9IHBQb2ludHNbM10ubV9Qb2ludFkgPSBwUG9pbnRzWzRdLm1fUG9pbnRZID0gYm90dG9tOw0KKyAgICBwUG9pbnRzWzFdLm1fUG9pbnRZID0gcFBvaW50c1syXS5tX1BvaW50WSA9IHRvcDsNCisgICAgcFBvaW50c1swXS5tX0ZsYWcgPSBGWFBUX01PVkVUTzsNCisgICAgcFBvaW50c1sxXS5tX0ZsYWcgPSBwUG9pbnRzWzJdLm1fRmxhZyA9IHBQb2ludHNbM10ubV9GbGFnID0gRlhQVF9MSU5FVE87DQorICAgIHBQb2ludHNbNF0ubV9GbGFnID0gRlhQVF9MSU5FVE8gfCBGWFBUX0NMT1NFRklHVVJFOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorQ0ZYX0Zsb2F0UmVjdCBDRlhfUGF0aERhdGE6OkdldEJvdW5kaW5nQm94KCkgY29uc3QNCit7DQorICAgIENGWF9GbG9hdFJlY3QgcmVjdDsNCisgICAgaWYgKG1fUG9pbnRDb3VudCkgew0KKyAgICAgICAgcmVjdC5Jbml0UmVjdChtX3BQb2ludHNbMF0ubV9Qb2ludFgsIG1fcFBvaW50c1swXS5tX1BvaW50WSk7DQorICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IG1fUG9pbnRDb3VudDsgaSArKykgew0KKyAgICAgICAgICAgIHJlY3QuVXBkYXRlUmVjdChtX3BQb2ludHNbaV0ubV9Qb2ludFgsIG1fcFBvaW50c1tpXS5tX1BvaW50WSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIHJlY3Q7DQorfQ0KK3N0YXRpYyB2b2lkIF9VcGRhdGVMaW5lRW5kUG9pbnRzKENGWF9GbG9hdFJlY3QmIHJlY3QsIEZYX0ZMT0FUIHN0YXJ0X3gsIEZYX0ZMT0FUIHN0YXJ0X3ksIEZYX0ZMT0FUIGVuZF94LCBGWF9GTE9BVCBlbmRfeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBodykNCit7DQorICAgIGlmIChzdGFydF94ID09IGVuZF94KSB7DQorICAgICAgICBpZiAoc3RhcnRfeSA9PSBlbmRfeSkgew0KKyAgICAgICAgICAgIHJlY3QuVXBkYXRlUmVjdChlbmRfeCArIGh3LCBlbmRfeSArIGh3KTsNCisgICAgICAgICAgICByZWN0LlVwZGF0ZVJlY3QoZW5kX3ggLSBodywgZW5kX3kgLSBodyk7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRkxPQVQgcG9pbnRfeTsNCisgICAgICAgIGlmIChlbmRfeSA8IHN0YXJ0X3kpIHsNCisgICAgICAgICAgICBwb2ludF95ID0gZW5kX3kgLSBodzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcG9pbnRfeSA9IGVuZF95ICsgaHc7DQorICAgICAgICB9DQorICAgICAgICByZWN0LlVwZGF0ZVJlY3QoZW5kX3ggKyBodywgcG9pbnRfeSk7DQorICAgICAgICByZWN0LlVwZGF0ZVJlY3QoZW5kX3ggLSBodywgcG9pbnRfeSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0gZWxzZSBpZiAoc3RhcnRfeSA9PSBlbmRfeSkgew0KKyAgICAgICAgRlhfRkxPQVQgcG9pbnRfeDsNCisgICAgICAgIGlmIChlbmRfeCA8IHN0YXJ0X3gpIHsNCisgICAgICAgICAgICBwb2ludF94ID0gZW5kX3ggLSBodzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcG9pbnRfeCA9IGVuZF94ICsgaHc7DQorICAgICAgICB9DQorICAgICAgICByZWN0LlVwZGF0ZVJlY3QocG9pbnRfeCwgZW5kX3kgKyBodyk7DQorICAgICAgICByZWN0LlVwZGF0ZVJlY3QocG9pbnRfeCwgZW5kX3kgLSBodyk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfRkxPQVQgZHggPSBlbmRfeCAtIHN0YXJ0X3g7DQorICAgIEZYX0ZMT0FUIGR5ID0gZW5kX3kgLSBzdGFydF95Ow0KKyAgICBGWF9GTE9BVCBsbCA9IEZYU1lTX3NxcnQyKGR4LCBkeSk7DQorICAgIEZYX0ZMT0FUIG14ID0gZW5kX3ggKyBodyAqIGR4IC8gbGw7DQorICAgIEZYX0ZMT0FUIG15ID0gZW5kX3kgKyBodyAqIGR5IC8gbGw7DQorICAgIEZYX0ZMT0FUIGR4MSA9IGh3ICogZHkgLyBsbDsNCisgICAgRlhfRkxPQVQgZHkxID0gaHcgKiBkeCAvIGxsOw0KKyAgICByZWN0LlVwZGF0ZVJlY3QobXggLSBkeDEsIG15ICsgZHkxKTsNCisgICAgcmVjdC5VcGRhdGVSZWN0KG14ICsgZHgxLCBteSAtIGR5MSk7DQorfQ0KK3N0YXRpYyB2b2lkIF9VcGRhdGVMaW5lSm9pblBvaW50cyhDRlhfRmxvYXRSZWN0JiByZWN0LCBGWF9GTE9BVCBzdGFydF94LCBGWF9GTE9BVCBzdGFydF95LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBtaWRkbGVfeCwgRlhfRkxPQVQgbWlkZGxlX3ksIEZYX0ZMT0FUIGVuZF94LCBGWF9GTE9BVCBlbmRfeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgaGFsZl93aWR0aCwgRlhfRkxPQVQgbWl0ZXJfbGltaXQpDQorew0KKyAgICBGWF9GTE9BVCBzdGFydF9rID0gMCwgc3RhcnRfYyA9IDAsIGVuZF9rID0gMCwgZW5kX2MgPSAwLCBzdGFydF9sZW4gPSAwLCBzdGFydF9kYyA9IDAsIGVuZF9sZW4gPSAwLCBlbmRfZGMgPSAwOw0KKyAgICBGWF9CT09MIGJTdGFydFZlcnQgPSBGWFNZU19mYWJzKHN0YXJ0X3ggLSBtaWRkbGVfeCkgPCAxLjBmIC8gMjA7DQorICAgIEZYX0JPT0wgYkVuZFZlcnQgPSBGWFNZU19mYWJzKG1pZGRsZV94IC0gZW5kX3gpIDwgMS4wZiAvIDIwOw0KKyAgICBpZiAoYlN0YXJ0VmVydCAmJiBiRW5kVmVydCkgew0KKyAgICAgICAgaW50IHN0YXJ0X2RpciA9IG1pZGRsZV95ID4gc3RhcnRfeSA/IDEgOiAtMTsNCisgICAgICAgIEZYX0ZMT0FUIHBvaW50X3kgPSBtaWRkbGVfeSArIGhhbGZfd2lkdGggKiBzdGFydF9kaXI7DQorICAgICAgICByZWN0LlVwZGF0ZVJlY3QobWlkZGxlX3ggKyBoYWxmX3dpZHRoLCBwb2ludF95KTsNCisgICAgICAgIHJlY3QuVXBkYXRlUmVjdChtaWRkbGVfeCAtIGhhbGZfd2lkdGgsIHBvaW50X3kpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmICghYlN0YXJ0VmVydCkgew0KKyAgICAgICAgc3RhcnRfayA9IEZYU1lTX0RpdihtaWRkbGVfeSAtIHN0YXJ0X3ksIG1pZGRsZV94IC0gc3RhcnRfeCk7DQorICAgICAgICBzdGFydF9jID0gbWlkZGxlX3kgLSBGWFNZU19NdWwoc3RhcnRfaywgbWlkZGxlX3gpOw0KKyAgICAgICAgc3RhcnRfbGVuID0gRlhTWVNfc3FydDIoc3RhcnRfeCAtIG1pZGRsZV94LCBzdGFydF95IC0gbWlkZGxlX3kpOw0KKyAgICAgICAgc3RhcnRfZGMgPSAoRlhfRkxPQVQpRlhTWVNfZmFicyhGWFNZU19NdWxEaXYoaGFsZl93aWR0aCwgc3RhcnRfbGVuLCBzdGFydF94IC0gbWlkZGxlX3gpKTsNCisgICAgfQ0KKyAgICBpZiAoIWJFbmRWZXJ0KSB7DQorICAgICAgICBlbmRfayA9IEZYU1lTX0RpdihlbmRfeSAtIG1pZGRsZV95LCBlbmRfeCAtIG1pZGRsZV94KTsNCisgICAgICAgIGVuZF9jID0gbWlkZGxlX3kgLSBGWFNZU19NdWwoZW5kX2ssIG1pZGRsZV94KTsNCisgICAgICAgIGVuZF9sZW4gPSBGWFNZU19zcXJ0MihlbmRfeCAtIG1pZGRsZV94LCBlbmRfeSAtIG1pZGRsZV95KTsNCisgICAgICAgIGVuZF9kYyA9IChGWF9GTE9BVClGWFNZU19mYWJzKEZYU1lTX011bERpdihoYWxmX3dpZHRoLCBlbmRfbGVuLCBlbmRfeCAtIG1pZGRsZV94KSk7DQorICAgIH0NCisgICAgaWYgKGJTdGFydFZlcnQpIHsNCisgICAgICAgIEZYX0ZMT0FUIG91dHNpZGVfeCA9IHN0YXJ0X3g7DQorICAgICAgICBpZiAoZW5kX3ggPCBzdGFydF94KSB7DQorICAgICAgICAgICAgb3V0c2lkZV94ICs9IGhhbGZfd2lkdGg7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG91dHNpZGVfeCAtPSBoYWxmX3dpZHRoOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRkxPQVQgb3V0c2lkZV95Ow0KKyAgICAgICAgaWYgKHN0YXJ0X3kgPCBGWFNZU19NdWwoZW5kX2ssIHN0YXJ0X3gpICsgZW5kX2MpIHsNCisgICAgICAgICAgICBvdXRzaWRlX3kgPSBGWFNZU19NdWwoZW5kX2ssIG91dHNpZGVfeCkgKyBlbmRfYyArIGVuZF9kYzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgb3V0c2lkZV95ID0gRlhTWVNfTXVsKGVuZF9rLCBvdXRzaWRlX3gpICsgZW5kX2MgLSBlbmRfZGM7DQorICAgICAgICB9DQorICAgICAgICByZWN0LlVwZGF0ZVJlY3Qob3V0c2lkZV94LCBvdXRzaWRlX3kpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChiRW5kVmVydCkgew0KKyAgICAgICAgRlhfRkxPQVQgb3V0c2lkZV94ID0gZW5kX3g7DQorICAgICAgICBpZiAoc3RhcnRfeCA8IGVuZF94KSB7DQorICAgICAgICAgICAgb3V0c2lkZV94ICs9IGhhbGZfd2lkdGg7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG91dHNpZGVfeCAtPSBoYWxmX3dpZHRoOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRkxPQVQgb3V0c2lkZV95Ow0KKyAgICAgICAgaWYgKGVuZF95IDwgRlhTWVNfTXVsKHN0YXJ0X2ssIGVuZF94KSArIHN0YXJ0X2MpIHsNCisgICAgICAgICAgICBvdXRzaWRlX3kgPSBGWFNZU19NdWwoc3RhcnRfaywgb3V0c2lkZV94KSArIHN0YXJ0X2MgKyBzdGFydF9kYzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgb3V0c2lkZV95ID0gRlhTWVNfTXVsKHN0YXJ0X2ssIG91dHNpZGVfeCkgKyBzdGFydF9jIC0gc3RhcnRfZGM7DQorICAgICAgICB9DQorICAgICAgICByZWN0LlVwZGF0ZVJlY3Qob3V0c2lkZV94LCBvdXRzaWRlX3kpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChGWFNZU19mYWJzKHN0YXJ0X2sgLSBlbmRfaykgPCAxLjBmIC8gMjApIHsNCisgICAgICAgIGludCBzdGFydF9kaXIgPSBtaWRkbGVfeCA+IHN0YXJ0X3ggPyAxIDogLTE7DQorICAgICAgICBpbnQgZW5kX2RpciA9IGVuZF94ID4gbWlkZGxlX3ggPyAxIDogLTE7DQorICAgICAgICBpZiAoc3RhcnRfZGlyID09IGVuZF9kaXIpIHsNCisgICAgICAgICAgICBfVXBkYXRlTGluZUVuZFBvaW50cyhyZWN0LCBtaWRkbGVfeCwgbWlkZGxlX3ksIGVuZF94LCBlbmRfeSwgaGFsZl93aWR0aCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIF9VcGRhdGVMaW5lRW5kUG9pbnRzKHJlY3QsIHN0YXJ0X3gsIHN0YXJ0X3ksIG1pZGRsZV94LCBtaWRkbGVfeSwgaGFsZl93aWR0aCk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgRlhfRkxPQVQgc3RhcnRfb3V0c2lkZV9jID0gc3RhcnRfYzsNCisgICAgaWYgKGVuZF95IDwgRlhTWVNfTXVsKHN0YXJ0X2ssIGVuZF94KSArIHN0YXJ0X2MpIHsNCisgICAgICAgIHN0YXJ0X291dHNpZGVfYyArPSBzdGFydF9kYzsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHN0YXJ0X291dHNpZGVfYyAtPSBzdGFydF9kYzsNCisgICAgfQ0KKyAgICBGWF9GTE9BVCBlbmRfb3V0c2lkZV9jID0gZW5kX2M7DQorICAgIGlmIChzdGFydF95IDwgRlhTWVNfTXVsKGVuZF9rLCBzdGFydF94KSArIGVuZF9jKSB7DQorICAgICAgICBlbmRfb3V0c2lkZV9jICs9IGVuZF9kYzsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGVuZF9vdXRzaWRlX2MgLT0gZW5kX2RjOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIGpvaW5feCA9IEZYU1lTX0RpdihlbmRfb3V0c2lkZV9jIC0gc3RhcnRfb3V0c2lkZV9jLCBzdGFydF9rIC0gZW5kX2spOw0KKyAgICBGWF9GTE9BVCBqb2luX3kgPSBGWFNZU19NdWwoc3RhcnRfaywgam9pbl94KSArIHN0YXJ0X291dHNpZGVfYzsNCisgICAgcmVjdC5VcGRhdGVSZWN0KGpvaW5feCwgam9pbl95KTsNCit9DQorQ0ZYX0Zsb2F0UmVjdCBDRlhfUGF0aERhdGE6OkdldEJvdW5kaW5nQm94KEZYX0ZMT0FUIGxpbmVfd2lkdGgsIEZYX0ZMT0FUIG1pdGVyX2xpbWl0KSBjb25zdA0KK3sNCisgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0KDEwMDAwMCAqIDEuMGYsIDEwMDAwMCAqIDEuMGYsIC0xMDAwMDAgKiAxLjBmLCAtMTAwMDAwICogMS4wZik7DQorICAgIGludCBpUG9pbnQgPSAwOw0KKyAgICBGWF9GTE9BVCBoYWxmX3dpZHRoID0gbGluZV93aWR0aDsNCisgICAgaW50IGlTdGFydFBvaW50LCBpRW5kUG9pbnQsIGlNaWRkbGVQb2ludDsNCisgICAgRlhfQk9PTCBiSm9pbjsNCisgICAgd2hpbGUgKGlQb2ludCA8IG1fUG9pbnRDb3VudCkgew0KKyAgICAgICAgaWYgKG1fcFBvaW50c1tpUG9pbnRdLm1fRmxhZyA9PSBGWFBUX01PVkVUTykgew0KKyAgICAgICAgICAgIGlTdGFydFBvaW50ID0gaVBvaW50ICsgMTsNCisgICAgICAgICAgICBpRW5kUG9pbnQgPSBpUG9pbnQ7DQorICAgICAgICAgICAgYkpvaW4gPSBGQUxTRTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKG1fcFBvaW50c1tpUG9pbnRdLm1fRmxhZyA9PSBGWFBUX0JFWklFUlRPKSB7DQorICAgICAgICAgICAgICAgIHJlY3QuVXBkYXRlUmVjdChtX3BQb2ludHNbaVBvaW50XS5tX1BvaW50WCwgbV9wUG9pbnRzW2lQb2ludF0ubV9Qb2ludFkpOw0KKyAgICAgICAgICAgICAgICByZWN0LlVwZGF0ZVJlY3QobV9wUG9pbnRzW2lQb2ludCArIDFdLm1fUG9pbnRYLCBtX3BQb2ludHNbaVBvaW50ICsgMV0ubV9Qb2ludFkpOw0KKyAgICAgICAgICAgICAgICBpUG9pbnQgKz0gMjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGlQb2ludCA9PSBtX1BvaW50Q291bnQgLSAxIHx8IG1fcFBvaW50c1tpUG9pbnQgKyAxXS5tX0ZsYWcgPT0gRlhQVF9NT1ZFVE8pIHsNCisgICAgICAgICAgICAgICAgaVN0YXJ0UG9pbnQgPSBpUG9pbnQgLSAxOw0KKyAgICAgICAgICAgICAgICBpRW5kUG9pbnQgPSBpUG9pbnQ7DQorICAgICAgICAgICAgICAgIGJKb2luID0gRkFMU0U7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaVN0YXJ0UG9pbnQgPSBpUG9pbnQgLSAxOw0KKyAgICAgICAgICAgICAgICBpTWlkZGxlUG9pbnQgPSBpUG9pbnQ7DQorICAgICAgICAgICAgICAgIGlFbmRQb2ludCA9IGlQb2ludCArIDE7DQorICAgICAgICAgICAgICAgIGJKb2luID0gVFJVRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBGWF9GTE9BVCBzdGFydF94ID0gbV9wUG9pbnRzW2lTdGFydFBvaW50XS5tX1BvaW50WDsNCisgICAgICAgIEZYX0ZMT0FUIHN0YXJ0X3kgPSBtX3BQb2ludHNbaVN0YXJ0UG9pbnRdLm1fUG9pbnRZOw0KKyAgICAgICAgRlhfRkxPQVQgZW5kX3ggPSBtX3BQb2ludHNbaUVuZFBvaW50XS5tX1BvaW50WDsNCisgICAgICAgIEZYX0ZMT0FUIGVuZF95ID0gbV9wUG9pbnRzW2lFbmRQb2ludF0ubV9Qb2ludFk7DQorICAgICAgICBpZiAoYkpvaW4pIHsNCisgICAgICAgICAgICBGWF9GTE9BVCBtaWRkbGVfeCA9IG1fcFBvaW50c1tpTWlkZGxlUG9pbnRdLm1fUG9pbnRYOw0KKyAgICAgICAgICAgIEZYX0ZMT0FUIG1pZGRsZV95ID0gbV9wUG9pbnRzW2lNaWRkbGVQb2ludF0ubV9Qb2ludFk7DQorICAgICAgICAgICAgX1VwZGF0ZUxpbmVKb2luUG9pbnRzKHJlY3QsIHN0YXJ0X3gsIHN0YXJ0X3ksIG1pZGRsZV94LCBtaWRkbGVfeSwgZW5kX3gsIGVuZF95LCBoYWxmX3dpZHRoLCBtaXRlcl9saW1pdCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIF9VcGRhdGVMaW5lRW5kUG9pbnRzKHJlY3QsIHN0YXJ0X3gsIHN0YXJ0X3ksIGVuZF94LCBlbmRfeSwgaGFsZl93aWR0aCk7DQorICAgICAgICB9DQorICAgICAgICBpUG9pbnQgKys7DQorICAgIH0NCisgICAgcmV0dXJuIHJlY3Q7DQorfQ0KK3ZvaWQgQ0ZYX1BhdGhEYXRhOjpUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCkNCit7DQorICAgIGlmIChwTWF0cml4ID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fUG9pbnRDb3VudDsgaSArKykgew0KKyAgICAgICAgcE1hdHJpeC0+VHJhbnNmb3JtKG1fcFBvaW50c1tpXS5tX1BvaW50WCwgbV9wUG9pbnRzW2ldLm1fUG9pbnRZKTsNCisgICAgfQ0KK30NCitjb25zdCBpbnQgZ19EaXN0YW50WzEwXSA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMH07DQorRlhfQk9PTCBDRlhfUGF0aERhdGE6OkdldFplcm9BcmVhUGF0aChDRlhfUGF0aERhdGEmIE5ld1BhdGgsIENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIEZYX0JPT0wmYlRoaW4sIEZYX0JPT0wgYkFkanVzdCkgY29uc3QNCit7DQorICAgIGlmIChtX1BvaW50Q291bnQgPCAzKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fUG9pbnRDb3VudCA9PSAzICYmIChtX3BQb2ludHNbMF0ubV9GbGFnICYgRlhQVF9UWVBFKSA9PSBGWFBUX01PVkVUTyAmJg0KKyAgICAgICAgICAgIChtX3BQb2ludHNbMV0ubV9GbGFnICYgRlhQVF9UWVBFKSA9PSBGWFBUX0xJTkVUTyAmJiAobV9wUG9pbnRzWzJdLm1fRmxhZyAmIEZYUFRfVFlQRSkgPT0gRlhQVF9MSU5FVE8NCisgICAgICAgICAgICAmJiBtX3BQb2ludHNbMF0ubV9Qb2ludFggPT0gbV9wUG9pbnRzWzJdLm1fUG9pbnRYICYmIG1fcFBvaW50c1swXS5tX1BvaW50WSA9PSBtX3BQb2ludHNbMl0ubV9Qb2ludFkpIHsNCisgICAgICAgIE5ld1BhdGguQWRkUG9pbnRDb3VudCgyKTsNCisgICAgICAgIGlmIChiQWRqdXN0KSB7DQorICAgICAgICAgICAgaWYgKHBNYXRyaXgpIHsNCisgICAgICAgICAgICAgICAgRlhfRkxPQVQgeCA9IG1fcFBvaW50c1swXS5tX1BvaW50WCwgeSA9IG1fcFBvaW50c1swXS5tX1BvaW50WTsNCisgICAgICAgICAgICAgICAgcE1hdHJpeC0+VHJhbnNmb3JtUG9pbnQoeCwgeSk7DQorICAgICAgICAgICAgICAgIHggPSAoaW50KXggKyAwLjVmOw0KKyAgICAgICAgICAgICAgICB5ID0gKGludCl5ICsgMC41ZjsNCisgICAgICAgICAgICAgICAgTmV3UGF0aC5TZXRQb2ludCgwLCB4LCB5LCBGWFBUX01PVkVUTyk7DQorICAgICAgICAgICAgICAgIHggPSBtX3BQb2ludHNbMV0ubV9Qb2ludFgsIHkgPSBtX3BQb2ludHNbMV0ubV9Qb2ludFk7DQorICAgICAgICAgICAgICAgIHBNYXRyaXgtPlRyYW5zZm9ybVBvaW50KHgsIHkpOw0KKyAgICAgICAgICAgICAgICB4ID0gKGludCl4ICsgMC41ZjsNCisgICAgICAgICAgICAgICAgeSA9IChpbnQpeSArIDAuNWY7DQorICAgICAgICAgICAgICAgIE5ld1BhdGguU2V0UG9pbnQoMSwgeCwgeSwgRlhQVF9MSU5FVE8pOw0KKyAgICAgICAgICAgICAgICBwTWF0cml4LT5TZXRJZGVudGl0eSgpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHggPSAoaW50KW1fcFBvaW50c1swXS5tX1BvaW50WCArIDAuNWYsIHkgPSAoaW50KW1fcFBvaW50c1swXS5tX1BvaW50WSArIDAuNWY7DQorICAgICAgICAgICAgICAgIE5ld1BhdGguU2V0UG9pbnQoMCwgeCwgeSwgRlhQVF9NT1ZFVE8pOw0KKyAgICAgICAgICAgICAgICB4ID0gKGludCltX3BQb2ludHNbMV0ubV9Qb2ludFggKyAwLjVmLCB5ID0gKGludCltX3BQb2ludHNbMV0ubV9Qb2ludFkgKyAwLjVmOw0KKyAgICAgICAgICAgICAgICBOZXdQYXRoLlNldFBvaW50KDEsIHgsIHksIEZYUFRfTElORVRPKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIE5ld1BhdGguU2V0UG9pbnQoMCwgbV9wUG9pbnRzWzBdLm1fUG9pbnRYLCBtX3BQb2ludHNbMF0ubV9Qb2ludFksIEZYUFRfTU9WRVRPKTsNCisgICAgICAgICAgICBOZXdQYXRoLlNldFBvaW50KDEsIG1fcFBvaW50c1sxXS5tX1BvaW50WCwgbV9wUG9pbnRzWzFdLm1fUG9pbnRZLCBGWFBUX0xJTkVUTyk7DQorICAgICAgICB9DQorICAgICAgICBpZiAobV9wUG9pbnRzWzBdLm1fUG9pbnRYICE9IG1fcFBvaW50c1sxXS5tX1BvaW50WCAmJiBtX3BQb2ludHNbMF0ubV9Qb2ludFkgIT0gbV9wUG9pbnRzWzFdLm1fUG9pbnRZKSB7DQorICAgICAgICAgICAgYlRoaW4gPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKCgobV9Qb2ludENvdW50ID4gMykgJiYgKG1fUG9pbnRDb3VudCAlIDIpKSkgew0KKyAgICAgICAgaW50IG1pZCA9IG1fUG9pbnRDb3VudCAvIDI7DQorICAgICAgICBGWF9CT09MIGJaZXJvQXJlYSA9IEZBTFNFOw0KKyAgICAgICAgQ0ZYX1BhdGhEYXRhIHRfcGF0aDsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWlkOyBpKyspIHsNCisgICAgICAgICAgICBpZiAoIShtX3BQb2ludHNbbWlkIC0gaSAtIDFdLm1fUG9pbnRYID09IG1fcFBvaW50c1ttaWQgKyBpICsgMV0ubV9Qb2ludFgNCisgICAgICAgICAgICAgICAgICAgICYmIG1fcFBvaW50c1ttaWQgLSBpIC0gMV0ubV9Qb2ludFkgPT0gbV9wUG9pbnRzW21pZCArIGkgKyAxXS5tX1BvaW50WSAmJg0KKyAgICAgICAgICAgICAgICAgICAgKChtX3BQb2ludHNbbWlkIC0gaSAtIDFdLm1fRmxhZyAmIEZYUFRfVFlQRSkgIT0gRlhQVF9CRVpJRVJUTyAmJiAobV9wUG9pbnRzW21pZCArIGkgKyAxXS5tX0ZsYWcgJiBGWFBUX1RZUEUpICE9IEZYUFRfQkVaSUVSVE8pKSkgew0KKyAgICAgICAgICAgICAgICBiWmVyb0FyZWEgPSBUUlVFOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaW50IG5ld19jb3VudCA9IHRfcGF0aC5HZXRQb2ludENvdW50KCk7DQorICAgICAgICAgICAgdF9wYXRoLkFkZFBvaW50Q291bnQoMik7DQorICAgICAgICAgICAgdF9wYXRoLlNldFBvaW50KG5ld19jb3VudCwgbV9wUG9pbnRzW21pZCAtIGldLm1fUG9pbnRYLCBtX3BQb2ludHNbbWlkIC0gaV0ubV9Qb2ludFksIEZYUFRfTU9WRVRPKTsNCisgICAgICAgICAgICB0X3BhdGguU2V0UG9pbnQobmV3X2NvdW50ICsgMSwgbV9wUG9pbnRzW21pZCAtIGkgLSAxXS5tX1BvaW50WCwgbV9wUG9pbnRzW21pZCAtIGkgLSAxXS5tX1BvaW50WSwgRlhQVF9MSU5FVE8pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCFiWmVyb0FyZWEpIHsNCisgICAgICAgICAgICBOZXdQYXRoLkFwcGVuZCgmdF9wYXRoLCBOVUxMKTsNCisgICAgICAgICAgICBiVGhpbiA9IFRSVUU7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IHN0cmF0UG9pbnQgPSAwOw0KKyAgICBpbnQgbmV4dCA9IDAsIGk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBtX1BvaW50Q291bnQ7IGkrKykgew0KKyAgICAgICAgaW50IHBvaW50X3R5cGUgPSBtX3BQb2ludHNbaV0ubV9GbGFnICYgRlhQVF9UWVBFOw0KKyAgICAgICAgaWYgKHBvaW50X3R5cGUgPT0gRlhQVF9NT1ZFVE8pIHsNCisgICAgICAgICAgICBzdHJhdFBvaW50ID0gaTsNCisgICAgICAgIH0gZWxzZSBpZiAocG9pbnRfdHlwZSA9PSBGWFBUX0xJTkVUTykgew0KKyAgICAgICAgICAgIG5leHQgPSAoaSArIDEgLSBzdHJhdFBvaW50KSAlIChtX1BvaW50Q291bnQgLSBzdHJhdFBvaW50KSArIHN0cmF0UG9pbnQ7DQorICAgICAgICAgICAgaWYgKChtX3BQb2ludHNbbmV4dF0ubV9GbGFnICYgRlhQVF9UWVBFKSAhPSBGWFBUX0JFWklFUlRPICYmIChtX3BQb2ludHNbbmV4dF0ubV9GbGFnICYgRlhQVF9UWVBFKSAhPSBGWFBUX01PVkVUTykgew0KKyAgICAgICAgICAgICAgICBpZigobV9wUG9pbnRzW2kgLSAxXS5tX1BvaW50WCA9PSBtX3BQb2ludHNbaV0ubV9Qb2ludFggJiYgbV9wUG9pbnRzW2ldLm1fUG9pbnRYID09IG1fcFBvaW50c1tuZXh0XS5tX1BvaW50WCkNCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoKG1fcFBvaW50c1tpXS5tX1BvaW50WSAtIG1fcFBvaW50c1tpIC0gMV0ubV9Qb2ludFkpICogKG1fcFBvaW50c1tpXS5tX1BvaW50WSAtIG1fcFBvaW50c1tuZXh0XS5tX1BvaW50WSkgPiAwKSkgew0KKyAgICAgICAgICAgICAgICAgICAgaW50IHByZSA9IGk7DQorICAgICAgICAgICAgICAgICAgICBpZiAoRlhTWVNfZmFicyhtX3BQb2ludHNbaV0ubV9Qb2ludFkgLSBtX3BQb2ludHNbaSAtIDFdLm1fUG9pbnRZKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IEZYU1lTX2ZhYnMobV9wUG9pbnRzW2ldLm1fUG9pbnRZIC0gbV9wUG9pbnRzW25leHRdLm1fUG9pbnRZKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHByZSAtLTsNCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LS07DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBpbnQgbmV3X2NvdW50ID0gTmV3UGF0aC5HZXRQb2ludENvdW50KCk7DQorICAgICAgICAgICAgICAgICAgICBOZXdQYXRoLkFkZFBvaW50Q291bnQoMik7DQorICAgICAgICAgICAgICAgICAgICBOZXdQYXRoLlNldFBvaW50KG5ld19jb3VudCwgbV9wUG9pbnRzW3ByZV0ubV9Qb2ludFgsIG1fcFBvaW50c1twcmVdLm1fUG9pbnRZLCBGWFBUX01PVkVUTyk7DQorICAgICAgICAgICAgICAgICAgICBOZXdQYXRoLlNldFBvaW50KG5ld19jb3VudCArIDEsIG1fcFBvaW50c1tuZXh0XS5tX1BvaW50WCwgbV9wUG9pbnRzW25leHRdLm1fUG9pbnRZLCBGWFBUX0xJTkVUTyk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZigobV9wUG9pbnRzW2kgLSAxXS5tX1BvaW50WSA9PSBtX3BQb2ludHNbaV0ubV9Qb2ludFkgJiYgbV9wUG9pbnRzW2ldLm1fUG9pbnRZID09IG1fcFBvaW50c1tuZXh0XS5tX1BvaW50WSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICYmICgobV9wUG9pbnRzW2ldLm1fUG9pbnRYIC0gbV9wUG9pbnRzW2kgLSAxXS5tX1BvaW50WCkgKiAobV9wUG9pbnRzW2ldLm1fUG9pbnRYIC0gbV9wUG9pbnRzW25leHRdLm1fUG9pbnRYKSA+IDApKSB7DQorICAgICAgICAgICAgICAgICAgICBpbnQgcHJlID0gaTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChGWFNZU19mYWJzKG1fcFBvaW50c1tpXS5tX1BvaW50WCAtIG1fcFBvaW50c1tpIC0gMV0ubV9Qb2ludFgpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwgRlhTWVNfZmFicyhtX3BQb2ludHNbaV0ubV9Qb2ludFggLSBtX3BQb2ludHNbbmV4dF0ubV9Qb2ludFgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlIC0tOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQtLTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGludCBuZXdfY291bnQgPSBOZXdQYXRoLkdldFBvaW50Q291bnQoKTsNCisgICAgICAgICAgICAgICAgICAgIE5ld1BhdGguQWRkUG9pbnRDb3VudCgyKTsNCisgICAgICAgICAgICAgICAgICAgIE5ld1BhdGguU2V0UG9pbnQobmV3X2NvdW50LCBtX3BQb2ludHNbcHJlXS5tX1BvaW50WCwgbV9wUG9pbnRzW3ByZV0ubV9Qb2ludFksIEZYUFRfTU9WRVRPKTsNCisgICAgICAgICAgICAgICAgICAgIE5ld1BhdGguU2V0UG9pbnQobmV3X2NvdW50ICsgMSwgbV9wUG9pbnRzW25leHRdLm1fUG9pbnRYLCBtX3BQb2ludHNbbmV4dF0ubV9Qb2ludFksIEZYUFRfTElORVRPKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobV9wUG9pbnRzW2kgLSAxXS5tX0ZsYWcgJiBGWFBUX1RZUEUpID09IEZYUFRfTU9WRVRPICYmIChtX3BQb2ludHNbbmV4dF0ubV9GbGFnICYgRlhQVF9UWVBFKSA9PSBGWFBUX0xJTkVUTyAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcFBvaW50c1tpIC0gMV0ubV9Qb2ludFggPT0gbV9wUG9pbnRzW25leHRdLm1fUG9pbnRYICYmIG1fcFBvaW50c1tpIC0gMV0ubV9Qb2ludFkgPT0gbV9wUG9pbnRzW25leHRdLm1fUG9pbnRZDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgbV9wUG9pbnRzW25leHRdLm1fRmxhZyAmIEZYUFRfQ0xPU0VGSUdVUkUpIHsNCisgICAgICAgICAgICAgICAgICAgIGludCBuZXdfY291bnQgPSBOZXdQYXRoLkdldFBvaW50Q291bnQoKTsNCisgICAgICAgICAgICAgICAgICAgIE5ld1BhdGguQWRkUG9pbnRDb3VudCgyKTsNCisgICAgICAgICAgICAgICAgICAgIE5ld1BhdGguU2V0UG9pbnQobmV3X2NvdW50LCBtX3BQb2ludHNbaSAtIDFdLm1fUG9pbnRYLCBtX3BQb2ludHNbaSAtIDFdLm1fUG9pbnRZLCBGWFBUX01PVkVUTyk7DQorICAgICAgICAgICAgICAgICAgICBOZXdQYXRoLlNldFBvaW50KG5ld19jb3VudCArIDEsIG1fcFBvaW50c1tpXS5tX1BvaW50WCwgbV9wUG9pbnRzW2ldLm1fUG9pbnRZLCBGWFBUX0xJTkVUTyk7DQorICAgICAgICAgICAgICAgICAgICBiVGhpbiA9IFRSVUU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2UgaWYgKHBvaW50X3R5cGUgPT0gRlhQVF9CRVpJRVJUTykgew0KKyAgICAgICAgICAgIGkgKz0gMjsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9Qb2ludENvdW50ID4gMyAmJiBOZXdQYXRoLkdldFBvaW50Q291bnQoKSkgew0KKyAgICAgICAgYlRoaW4gPSBUUlVFOw0KKyAgICB9DQorICAgIGlmIChOZXdQYXRoLkdldFBvaW50Q291bnQoKSA9PSAwKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1BhdGhEYXRhOjpJc1JlY3QoKSBjb25zdA0KK3sNCisgICAgaWYgKG1fUG9pbnRDb3VudCAhPSA1ICYmIG1fUG9pbnRDb3VudCAhPSA0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKChtX1BvaW50Q291bnQgPT0gNSAmJiAobV9wUG9pbnRzWzBdLm1fUG9pbnRYICE9IG1fcFBvaW50c1s0XS5tX1BvaW50WCB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BQb2ludHNbMF0ubV9Qb2ludFkgIT0gbV9wUG9pbnRzWzRdLm1fUG9pbnRZKSkgfHwNCisgICAgICAgICAgICAobV9wUG9pbnRzWzBdLm1fUG9pbnRYID09IG1fcFBvaW50c1syXS5tX1BvaW50WCAmJiBtX3BQb2ludHNbMF0ubV9Qb2ludFkgPT0gbV9wUG9pbnRzWzJdLm1fUG9pbnRZKSB8fA0KKyAgICAgICAgICAgIChtX3BQb2ludHNbMV0ubV9Qb2ludFggPT0gbV9wUG9pbnRzWzNdLm1fUG9pbnRYICYmIG1fcFBvaW50c1sxXS5tX1BvaW50WSA9PSBtX3BQb2ludHNbM10ubV9Qb2ludFkpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKG1fcFBvaW50c1swXS5tX1BvaW50WCAhPSBtX3BQb2ludHNbM10ubV9Qb2ludFggJiYgbV9wUG9pbnRzWzBdLm1fUG9pbnRZICE9IG1fcFBvaW50c1szXS5tX1BvaW50WSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGZvciAoaW50IGkgPSAxOyBpIDwgNDsgaSArKykgew0KKyAgICAgICAgaWYgKChtX3BQb2ludHNbaV0ubV9GbGFnICYgRlhQVF9UWVBFKSAhPSBGWFBUX0xJTkVUTykgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX3BQb2ludHNbaV0ubV9Qb2ludFggIT0gbV9wUG9pbnRzW2kgLSAxXS5tX1BvaW50WCAmJiBtX3BQb2ludHNbaV0ubV9Qb2ludFkgIT0gbV9wUG9pbnRzW2kgLSAxXS5tX1BvaW50WSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gbV9Qb2ludENvdW50ID09IDUgfHwgKG1fcFBvaW50c1szXS5tX0ZsYWcgJiBGWFBUX0NMT1NFRklHVVJFKTsNCit9DQorRlhfQk9PTCBDRlhfUGF0aERhdGE6OklzUmVjdChjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBDRlhfRmxvYXRSZWN0KiBwUmVjdCkgY29uc3QNCit7DQorICAgIGlmIChwTWF0cml4ID09IE5VTEwpIHsNCisgICAgICAgIGlmICghSXNSZWN0KCkpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpZiAocFJlY3QpIHsNCisgICAgICAgICAgICBwUmVjdC0+bGVmdCA9IG1fcFBvaW50c1swXS5tX1BvaW50WDsNCisgICAgICAgICAgICBwUmVjdC0+cmlnaHQgPSBtX3BQb2ludHNbMl0ubV9Qb2ludFg7DQorICAgICAgICAgICAgcFJlY3QtPmJvdHRvbSA9IG1fcFBvaW50c1swXS5tX1BvaW50WTsNCisgICAgICAgICAgICBwUmVjdC0+dG9wID0gbV9wUG9pbnRzWzJdLm1fUG9pbnRZOw0KKyAgICAgICAgICAgIHBSZWN0LT5Ob3JtYWxpemUoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmIChtX1BvaW50Q291bnQgIT0gNSAmJiBtX1BvaW50Q291bnQgIT0gNCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICgobV9Qb2ludENvdW50ID09IDUgJiYgKG1fcFBvaW50c1swXS5tX1BvaW50WCAhPSBtX3BQb2ludHNbNF0ubV9Qb2ludFggfHwgbV9wUG9pbnRzWzBdLm1fUG9pbnRZICE9IG1fcFBvaW50c1s0XS5tX1BvaW50WSkpIHx8DQorICAgICAgICAgICAgKG1fcFBvaW50c1sxXS5tX1BvaW50WCA9PSBtX3BQb2ludHNbM10ubV9Qb2ludFggJiYgbV9wUG9pbnRzWzFdLm1fUG9pbnRZID09IG1fcFBvaW50c1szXS5tX1BvaW50WSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBpZiAobV9Qb2ludENvdW50ID09IDQgJiYgbV9wUG9pbnRzWzBdLm1fUG9pbnRYICE9IG1fcFBvaW50c1szXS5tX1BvaW50WCAmJiBtX3BQb2ludHNbMF0ubV9Qb2ludFkgIT0gbV9wUG9pbnRzWzNdLm1fUG9pbnRZKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhfRkxPQVQgeFs1XSwgeVs1XTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX1BvaW50Q291bnQ7IGkgKyspIHsNCisgICAgICAgIHBNYXRyaXgtPlRyYW5zZm9ybShtX3BQb2ludHNbaV0ubV9Qb2ludFgsIG1fcFBvaW50c1tpXS5tX1BvaW50WSwgeFtpXSwgeVtpXSk7DQorICAgICAgICBpZiAoaSkgew0KKyAgICAgICAgICAgIGlmICgobV9wUG9pbnRzW2ldLm1fRmxhZyAmIEZYUFRfVFlQRSkgIT0gRlhQVF9MSU5FVE8pIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoeFtpXSAhPSB4W2kgLSAxXSAmJiB5W2ldICE9IHlbaSAtIDFdKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBSZWN0KSB7DQorICAgICAgICBwUmVjdC0+bGVmdCA9IHhbMF07DQorICAgICAgICBwUmVjdC0+cmlnaHQgPSB4WzJdOw0KKyAgICAgICAgcFJlY3QtPmJvdHRvbSA9IHlbMF07DQorICAgICAgICBwUmVjdC0+dG9wID0geVsyXTsNCisgICAgICAgIHBSZWN0LT5Ob3JtYWxpemUoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDRlhfUGF0aERhdGE6OkNvcHkoY29uc3QgQ0ZYX1BhdGhEYXRhICZzcmMpDQorew0KKyAgICBpZiAoIVNldFBvaW50Q291bnQoc3JjLm1fUG9pbnRDb3VudCkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWFNZU19tZW1jcHkzMihtX3BQb2ludHMsIHNyYy5tX3BQb2ludHMsIHNpemVvZihGWF9QQVRIUE9JTlQpICogbV9Qb2ludENvdW50KTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0NGWF9HcmFwaFN0YXRlRGF0YTo6Q0ZYX0dyYXBoU3RhdGVEYXRhKCkNCit7DQorICAgIG1fTGluZUNhcCA9IExpbmVDYXBCdXR0Ow0KKyAgICBtX0Rhc2hDb3VudCA9IDA7DQorICAgIG1fRGFzaEFycmF5ID0gTlVMTDsNCisgICAgbV9EYXNoUGhhc2UgPSAwOw0KKyAgICBtX0xpbmVKb2luID0gTGluZUpvaW5NaXRlcjsNCisgICAgbV9NaXRlckxpbWl0ID0gMTAgKiAxLjBmOw0KKyAgICBtX0xpbmVXaWR0aCA9IDEuMGY7DQorfQ0KK0NGWF9HcmFwaFN0YXRlRGF0YTo6Q0ZYX0dyYXBoU3RhdGVEYXRhKGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSYgc3JjKQ0KK3sNCisgICAgbV9EYXNoQXJyYXkgPSBOVUxMOw0KKyAgICBDb3B5KHNyYyk7DQorfQ0KK3ZvaWQgQ0ZYX0dyYXBoU3RhdGVEYXRhOjpDb3B5KGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSYgc3JjKQ0KK3sNCisgICAgbV9MaW5lQ2FwID0gc3JjLm1fTGluZUNhcDsNCisgICAgbV9EYXNoQ291bnQgPSBzcmMubV9EYXNoQ291bnQ7DQorICAgIGlmIChtX0Rhc2hBcnJheSkgew0KKyAgICAgICAgRlhfRnJlZShtX0Rhc2hBcnJheSk7DQorICAgIH0NCisgICAgbV9EYXNoQXJyYXkgPSBOVUxMOw0KKyAgICBtX0Rhc2hQaGFzZSA9IHNyYy5tX0Rhc2hQaGFzZTsNCisgICAgbV9MaW5lSm9pbiA9IHNyYy5tX0xpbmVKb2luOw0KKyAgICBtX01pdGVyTGltaXQgPSBzcmMubV9NaXRlckxpbWl0Ow0KKyAgICBtX0xpbmVXaWR0aCA9IHNyYy5tX0xpbmVXaWR0aDsNCisgICAgaWYgKG1fRGFzaENvdW50KSB7DQorICAgICAgICBtX0Rhc2hBcnJheSA9IEZYX0FsbG9jKEZYX0ZMT0FULCBtX0Rhc2hDb3VudCk7DQorICAgICAgICBpZiAoIW1fRGFzaEFycmF5KSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIobV9EYXNoQXJyYXksIHNyYy5tX0Rhc2hBcnJheSwgbV9EYXNoQ291bnQgKiBzaXplb2YoRlhfRkxPQVQpKTsNCisgICAgfQ0KK30NCitDRlhfR3JhcGhTdGF0ZURhdGE6On5DRlhfR3JhcGhTdGF0ZURhdGEoKQ0KK3sNCisgICAgaWYgKG1fRGFzaEFycmF5KSB7DQorICAgICAgICBGWF9GcmVlKG1fRGFzaEFycmF5KTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9HcmFwaFN0YXRlRGF0YTo6U2V0RGFzaENvdW50KGludCBjb3VudCkNCit7DQorICAgIGlmIChtX0Rhc2hBcnJheSkgew0KKyAgICAgICAgRlhfRnJlZShtX0Rhc2hBcnJheSk7DQorICAgIH0NCisgICAgbV9EYXNoQXJyYXkgPSBOVUxMOw0KKyAgICBtX0Rhc2hDb3VudCA9IGNvdW50Ow0KKyAgICBpZiAoY291bnQgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fRGFzaEFycmF5ID0gRlhfQWxsb2MoRlhfRkxPQVQsIGNvdW50KTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9nZS9meF9nZV9wcy5jcHAgYi9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlX3BzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzlhYjJkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS9nZS9meF9nZV9wcy5jcHAKQEAgLTAsMCArMSw2NTcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorI2luY2x1ZGUgInRleHRfaW50LmgiDQorc3RydWN0IFBTR2x5cGggew0KKyAgICBDRlhfRm9udCoJCW1fcEZvbnQ7DQorICAgIEZYX0RXT1JECQltX0dseXBoSW5kZXg7DQorICAgIEZYX0JPT0wJCQltX2JHbHlwaEFkanVzdDsNCisgICAgRlhfRkxPQVQJCW1fQWRqdXN0TWF0cml4WzRdOw0KK307DQorY2xhc3MgQ1BTRm9udCA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgUFNHbHlwaAkJCW1fR2x5cGhzWzI1Nl07DQorICAgIGludAkJCQltX25HbHlwaHM7DQorfTsNCitDRlhfUFNSZW5kZXJlcjo6Q0ZYX1BTUmVuZGVyZXIoKQ0KK3sNCisgICAgbV9wT3V0cHV0ID0gTlVMTDsNCisgICAgbV9iQ29sb3JTZXQgPSBtX2JHcmFwaFN0YXRlU2V0ID0gRkFMU0U7DQorICAgIG1fYkluaXRlZCA9IEZBTFNFOw0KK30NCitDRlhfUFNSZW5kZXJlcjo6fkNGWF9QU1JlbmRlcmVyKCkNCit7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludCltX1BTRm9udExpc3QuR2V0U2l6ZSgpOyBpICsrKSB7DQorICAgICAgICBDUFNGb250KiBwRm9udCA9IG1fUFNGb250TGlzdFtpXTsNCisgICAgICAgIGRlbGV0ZSBwRm9udDsNCisgICAgfQ0KK30NCisjZGVmaW5lIE9VVFBVVF9QUyhzdHIpIG1fcE91dHB1dC0+T3V0cHV0UFMoc3RyLCBzaXplb2Ygc3RyLTEpDQordm9pZCBDRlhfUFNSZW5kZXJlcjo6SW5pdChJRlhfUFNPdXRwdXQqIHBPdXRwdXQsIGludCBwc2xldmVsLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIEZYX0JPT0wgYkNteWtPdXRwdXQpDQorew0KKyAgICBtX1BTTGV2ZWwgPSBwc2xldmVsOw0KKyAgICBtX3BPdXRwdXQgPSBwT3V0cHV0Ow0KKyAgICBtX0NsaXBCb3gubGVmdCA9IG1fQ2xpcEJveC50b3AgPSAwOw0KKyAgICBtX0NsaXBCb3gucmlnaHQgPSB3aWR0aDsNCisgICAgbV9DbGlwQm94LmJvdHRvbSA9IGhlaWdodDsNCisgICAgbV9iQ215a091dHB1dCA9IGJDbXlrT3V0cHV0Ow0KK30NCitGWF9CT09MIENGWF9QU1JlbmRlcmVyOjpTdGFydFJlbmRlcmluZygpDQorew0KKyAgICBpZiAobV9iSW5pdGVkKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBzdGF0aWMgY29uc3QgY2hhciBpbml0X3N0cltdID0gIlxuc2F2ZVxuL2ltL2luaXRtYXRyaXggbG9hZCBkZWZcbiINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvbi9uZXdwYXRoIGxvYWQgZGVmL20vbW92ZXRvIGxvYWQgZGVmL2wvbGluZXRvIGxvYWQgZGVmL2MvY3VydmV0byBsb2FkIGRlZi9oL2Nsb3NlcGF0aCBsb2FkIGRlZlxuIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9mL2ZpbGwgbG9hZCBkZWYvRi9lb2ZpbGwgbG9hZCBkZWYvcy9zdHJva2UgbG9hZCBkZWYvVy9jbGlwIGxvYWQgZGVmL1cqL2VvY2xpcCBsb2FkIGRlZlxuIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9yZy9zZXRyZ2Jjb2xvciBsb2FkIGRlZi9rL3NldGNteWtjb2xvciBsb2FkIGRlZlxuIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9KL3NldGxpbmVjYXAgbG9hZCBkZWYvai9zZXRsaW5lam9pbiBsb2FkIGRlZi93L3NldGxpbmV3aWR0aCBsb2FkIGRlZi9NL3NldG1pdGVybGltaXQgbG9hZCBkZWYvZC9zZXRkYXNoIGxvYWQgZGVmXG4iDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3EvZ3NhdmUgbG9hZCBkZWYvUS9ncmVzdG9yZSBsb2FkIGRlZi9pTS9pbWFnZW1hc2sgbG9hZCBkZWZcbiINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvVGovc2hvdyBsb2FkIGRlZi9GZi9maW5kZm9udCBsb2FkIGRlZi9Gcy9zY2FsZWZvbnQgbG9hZCBkZWYvU2Yvc2V0Zm9udCBsb2FkIGRlZlxuIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9jbS9jb25jYXQgbG9hZCBkZWYvQ20vY3VycmVudG1hdHJpeCBsb2FkIGRlZi9teC9tYXRyaXggbG9hZCBkZWYvc20vc2V0bWF0cml4IGxvYWQgZGVmXG4iDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7DQorICAgIE9VVFBVVF9QUyhpbml0X3N0cik7DQorICAgIG1fYkluaXRlZCA9IFRSVUU7DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENGWF9QU1JlbmRlcmVyOjpFbmRSZW5kZXJpbmcoKQ0KK3sNCisgICAgaWYgKG1fYkluaXRlZCkgew0KKyAgICAgICAgT1VUUFVUX1BTKCJcbnJlc3RvcmVcbiIpOw0KKyAgICB9DQorICAgIG1fYkluaXRlZCA9IEZBTFNFOw0KK30NCit2b2lkIENGWF9QU1JlbmRlcmVyOjpTYXZlU3RhdGUoKQ0KK3sNCisgICAgU3RhcnRSZW5kZXJpbmcoKTsNCisgICAgT1VUUFVUX1BTKCJxXG4iKTsNCisgICAgbV9DbGlwQm94U3RhY2suQWRkKG1fQ2xpcEJveCk7DQorfQ0KK3ZvaWQgQ0ZYX1BTUmVuZGVyZXI6OlJlc3RvcmVTdGF0ZShGWF9CT09MIGJLZWVwU2F2ZWQpDQorew0KKyAgICBTdGFydFJlbmRlcmluZygpOw0KKyAgICBpZiAoYktlZXBTYXZlZCkgew0KKyAgICAgICAgT1VUUFVUX1BTKCJRXG5xXG4iKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIE9VVFBVVF9QUygiUVxuIik7DQorICAgIH0NCisgICAgbV9iQ29sb3JTZXQgPSBtX2JHcmFwaFN0YXRlU2V0ID0gRkFMU0U7DQorICAgIG1fQ2xpcEJveCA9IG1fQ2xpcEJveFN0YWNrLkdldEF0KG1fQ2xpcEJveFN0YWNrLkdldFNpemUoKSAtIDEpOw0KKyAgICBpZiAoIWJLZWVwU2F2ZWQpIHsNCisgICAgICAgIG1fQ2xpcEJveFN0YWNrLlJlbW92ZUF0KG1fQ2xpcEJveFN0YWNrLkdldFNpemUoKSAtIDEpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX1BTUmVuZGVyZXI6Ok91dHB1dFBhdGgoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlKQ0KK3sNCisgICAgaW50IG5Qb2ludHMgPSBwUGF0aERhdGEtPkdldFBvaW50Q291bnQoKTsNCisgICAgQ0ZYX0J5dGVUZXh0QnVmIGJ1ZjsNCisgICAgYnVmLkVzdGltYXRlU2l6ZShuUG9pbnRzICogMTApOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5Qb2ludHM7IGkgKyspIHsNCisgICAgICAgIEZYX0JZVEUgZmxhZyA9IHBQYXRoRGF0YS0+R2V0RmxhZyhpKTsNCisgICAgICAgIEZYX0ZMT0FUIHggPSBwUGF0aERhdGEtPkdldFBvaW50WChpKTsNCisgICAgICAgIEZYX0ZMT0FUIHkgPSBwUGF0aERhdGEtPkdldFBvaW50WShpKTsNCisgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgICAgIHBPYmplY3QyRGV2aWNlLT5UcmFuc2Zvcm0oeCwgeSk7DQorICAgICAgICB9DQorICAgICAgICBidWYgPDwgeCA8PCBGWF9CU1RSQygiICIpIDw8IHk7DQorICAgICAgICBzd2l0Y2ggKGZsYWcgJiBGWFBUX1RZUEUpIHsNCisgICAgICAgICAgICBjYXNlIEZYUFRfTU9WRVRPOg0KKyAgICAgICAgICAgICAgICBidWYgPDwgRlhfQlNUUkMoIiBtICIpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIEZYUFRfTElORVRPOg0KKyAgICAgICAgICAgICAgICBpZiAoZmxhZyAmIEZYUFRfQ0xPU0VGSUdVUkUpIHsNCisgICAgICAgICAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiIGwgaCAiKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiIGwgIik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBGWFBUX0JFWklFUlRPOiB7DQorICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCB4MSA9IHBQYXRoRGF0YS0+R2V0UG9pbnRYKGkgKyAxKTsNCisgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHgyID0gcFBhdGhEYXRhLT5HZXRQb2ludFgoaSArIDIpOw0KKyAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgeTEgPSBwUGF0aERhdGEtPkdldFBvaW50WShpICsgMSk7DQorICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCB5MiA9IHBQYXRoRGF0YS0+R2V0UG9pbnRZKGkgKyAyKTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBPYmplY3QyRGV2aWNlLT5UcmFuc2Zvcm0oeDEsIHkxKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBwT2JqZWN0MkRldmljZS0+VHJhbnNmb3JtKHgyLCB5Mik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBidWYgPDwgRlhfQlNUUkMoIiAiKSA8PCB4MSA8PCBGWF9CU1RSQygiICIpIDw8IHkxIDw8IEZYX0JTVFJDKCIgIikgPDwgeDIgPDwgRlhfQlNUUkMoIiAiKSA8PCB5MjsNCisgICAgICAgICAgICAgICAgICAgIGlmIChmbGFnICYgRlhQVF9DTE9TRUZJR1VSRSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiIGMgaFxuIik7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiIGNcbiIpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaSArPSAyOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBtX3BPdXRwdXQtPk91dHB1dFBTKChGWF9MUENTVFIpYnVmLkdldEJ1ZmZlcigpLCBidWYuR2V0U2l6ZSgpKTsNCit9DQordm9pZCBDRlhfUFNSZW5kZXJlcjo6U2V0Q2xpcF9QYXRoRmlsbChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbGxfbW9kZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQorew0KKyAgICBTdGFydFJlbmRlcmluZygpOw0KKyAgICBPdXRwdXRQYXRoKHBQYXRoRGF0YSwgcE9iamVjdDJEZXZpY2UpOw0KKyAgICBDRlhfRmxvYXRSZWN0IHJlY3QgPSBwUGF0aERhdGEtPkdldEJvdW5kaW5nQm94KCk7DQorICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgcmVjdC5UcmFuc2Zvcm0ocE9iamVjdDJEZXZpY2UpOw0KKyAgICB9DQorICAgIG1fQ2xpcEJveC5JbnRlcnNlY3QocmVjdC5HZXRPdXR0ZXJSZWN0KCkpOw0KKyAgICBpZiAoKGZpbGxfbW9kZSAmIDMpID09IEZYRklMTF9XSU5ESU5HKSB7DQorICAgICAgICBPVVRQVVRfUFMoIlcgblxuIik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBPVVRQVVRfUFMoIlcqIG5cbiIpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX1BTUmVuZGVyZXI6OlNldENsaXBfUGF0aFN0cm9rZShjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQorew0KKyAgICBTdGFydFJlbmRlcmluZygpOw0KKyAgICBTZXRHcmFwaFN0YXRlKHBHcmFwaFN0YXRlKTsNCisgICAgaWYgKHBPYmplY3QyRGV2aWNlKSB7DQorICAgICAgICBDRlhfQnl0ZVRleHRCdWYgYnVmOw0KKyAgICAgICAgYnVmIDw8IEZYX0JTVFJDKCJteCBDbSBbIikgPDwgcE9iamVjdDJEZXZpY2UtPmEgPDwgRlhfQlNUUkMoIiAiKSA8PCBwT2JqZWN0MkRldmljZS0+YiA8PCBGWF9CU1RSQygiICIpIDw8DQorICAgICAgICAgICAgcE9iamVjdDJEZXZpY2UtPmMgPDwgRlhfQlNUUkMoIiAiKSA8PCBwT2JqZWN0MkRldmljZS0+ZCA8PCBGWF9CU1RSQygiICIpIDw8IHBPYmplY3QyRGV2aWNlLT5lIDw8DQorICAgICAgICAgICAgRlhfQlNUUkMoIiAiKSA8PCBwT2JqZWN0MkRldmljZS0+ZiA8PCBGWF9CU1RSQygiXWNtICIpOw0KKyAgICAgICAgbV9wT3V0cHV0LT5PdXRwdXRQUygoRlhfTFBDU1RSKWJ1Zi5HZXRCdWZmZXIoKSwgYnVmLkdldFNpemUoKSk7DQorICAgIH0NCisgICAgT3V0cHV0UGF0aChwUGF0aERhdGEsIE5VTEwpOw0KKyAgICBDRlhfRmxvYXRSZWN0IHJlY3QgPSBwUGF0aERhdGEtPkdldEJvdW5kaW5nQm94KHBHcmFwaFN0YXRlLT5tX0xpbmVXaWR0aCwgcEdyYXBoU3RhdGUtPm1fTWl0ZXJMaW1pdCk7DQorICAgIHJlY3QuVHJhbnNmb3JtKHBPYmplY3QyRGV2aWNlKTsNCisgICAgbV9DbGlwQm94LkludGVyc2VjdChyZWN0LkdldE91dHRlclJlY3QoKSk7DQorICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgT1VUUFVUX1BTKCJzdHJva2VwYXRoIFcgbiBzbVxuIik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBPVVRQVVRfUFMoInN0cm9rZXBhdGggVyBuXG4iKTsNCisgICAgfQ0KK30NCitGWF9CT09MIENGWF9QU1JlbmRlcmVyOjpEcmF3UGF0aChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGZpbGxfY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgc3Ryb2tlX2NvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogcEljY1RyYW5zZm9ybQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KK3sNCisgICAgU3RhcnRSZW5kZXJpbmcoKTsNCisgICAgaW50IGZpbGxfYWxwaGEgPSBGWEdFVEZMQUdfQ09MT1JUWVBFKGFscGhhX2ZsYWcpID8gRlhHRVRGTEFHX0FMUEhBX0ZJTEwoYWxwaGFfZmxhZykgOiBGWEFSR0JfQShmaWxsX2NvbG9yKTsNCisgICAgaW50IHN0cm9rZV9hbHBoYSA9IEZYR0VURkxBR19DT0xPUlRZUEUoYWxwaGFfZmxhZykgPyBGWEdFVEZMQUdfQUxQSEFfU1RST0tFKGFscGhhX2ZsYWcpIDogRlhBUkdCX0Eoc3Ryb2tlX2NvbG9yKTsNCisgICAgaWYgKGZpbGxfYWxwaGEgJiYgZmlsbF9hbHBoYSA8IDI1NSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChzdHJva2VfYWxwaGEgJiYgc3Ryb2tlX2FscGhhIDwgMjU1KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKGZpbGxfYWxwaGEgPT0gMCAmJiBzdHJva2VfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChzdHJva2VfYWxwaGEpIHsNCisgICAgICAgIFNldEdyYXBoU3RhdGUocEdyYXBoU3RhdGUpOw0KKyAgICAgICAgaWYgKHBPYmplY3QyRGV2aWNlKSB7DQorICAgICAgICAgICAgQ0ZYX0J5dGVUZXh0QnVmIGJ1ZjsNCisgICAgICAgICAgICBidWYgPDwgRlhfQlNUUkMoIm14IENtIFsiKSA8PCBwT2JqZWN0MkRldmljZS0+YSA8PCBGWF9CU1RSQygiICIpIDw8IHBPYmplY3QyRGV2aWNlLT5iIDw8IEZYX0JTVFJDKCIgIikgPDwNCisgICAgICAgICAgICAgICAgcE9iamVjdDJEZXZpY2UtPmMgPDwgRlhfQlNUUkMoIiAiKSA8PCBwT2JqZWN0MkRldmljZS0+ZCA8PCBGWF9CU1RSQygiICIpIDw8IHBPYmplY3QyRGV2aWNlLT5lIDw8DQorICAgICAgICAgICAgICAgIEZYX0JTVFJDKCIgIikgPDwgcE9iamVjdDJEZXZpY2UtPmYgPDwgRlhfQlNUUkMoIl1jbSAiKTsNCisgICAgICAgICAgICBtX3BPdXRwdXQtPk91dHB1dFBTKChGWF9MUENTVFIpYnVmLkdldEJ1ZmZlcigpLCBidWYuR2V0U2l6ZSgpKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBPdXRwdXRQYXRoKHBQYXRoRGF0YSwgc3Ryb2tlX2FscGhhID8gTlVMTCA6IHBPYmplY3QyRGV2aWNlKTsNCisgICAgaWYgKGZpbGxfbW9kZSAmJiBmaWxsX2FscGhhKSB7DQorICAgICAgICBTZXRDb2xvcihmaWxsX2NvbG9yLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgIGlmICgoZmlsbF9tb2RlICYgMykgPT0gRlhGSUxMX1dJTkRJTkcpIHsNCisgICAgICAgICAgICBpZiAoc3Ryb2tlX2FscGhhKSB7DQorICAgICAgICAgICAgICAgIE9VVFBVVF9QUygicSBmIFEgIik7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgT1VUUFVUX1BTKCJmIik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmICgoZmlsbF9tb2RlICYgMykgPT0gRlhGSUxMX0FMVEVSTkFURSkgew0KKyAgICAgICAgICAgIGlmIChzdHJva2VfYWxwaGEpIHsNCisgICAgICAgICAgICAgICAgT1VUUFVUX1BTKCJxIEYgUSAiKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBPVVRQVVRfUFMoIkYiKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHN0cm9rZV9hbHBoYSkgew0KKyAgICAgICAgU2V0Q29sb3Ioc3Ryb2tlX2NvbG9yLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgICAgIE9VVFBVVF9QUygicyBzbSIpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBPVVRQVVRfUFMoInMiKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBPVVRQVVRfUFMoIlxuIik7DQorICAgIHJldHVybiBUUlVFOw0KK30NCit2b2lkIENGWF9QU1JlbmRlcmVyOjpTZXRHcmFwaFN0YXRlKGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUpDQorew0KKyAgICBDRlhfQnl0ZVRleHRCdWYgYnVmOw0KKyAgICBpZiAoIW1fYkdyYXBoU3RhdGVTZXQgfHwgbV9DdXJHcmFwaFN0YXRlLm1fTGluZUNhcCAhPSBwR3JhcGhTdGF0ZS0+bV9MaW5lQ2FwKSB7DQorICAgICAgICBidWYgPDwgcEdyYXBoU3RhdGUtPm1fTGluZUNhcCA8PCBGWF9CU1RSQygiIEpcbiIpOw0KKyAgICB9DQorICAgIGlmICghbV9iR3JhcGhTdGF0ZVNldCB8fCBtX0N1ckdyYXBoU3RhdGUubV9EYXNoQ291bnQgIT0gcEdyYXBoU3RhdGUtPm1fRGFzaENvdW50IHx8DQorICAgICAgICAgICAgRlhTWVNfbWVtY21wMzIobV9DdXJHcmFwaFN0YXRlLm1fRGFzaEFycmF5LCBwR3JhcGhTdGF0ZS0+bV9EYXNoQXJyYXksIHNpemVvZihGWF9GTE9BVCkqbV9DdXJHcmFwaFN0YXRlLm1fRGFzaENvdW50KSkgew0KKyAgICAgICAgYnVmIDw8IEZYX0JTVFJDKCJbIik7DQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBHcmFwaFN0YXRlLT5tX0Rhc2hDb3VudDsgaSArKykgew0KKyAgICAgICAgICAgIGJ1ZiA8PCBwR3JhcGhTdGF0ZS0+bV9EYXNoQXJyYXlbaV0gPDwgRlhfQlNUUkMoIiAiKTsNCisgICAgICAgIH0NCisgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiXSIpIDw8IHBHcmFwaFN0YXRlLT5tX0Rhc2hQaGFzZSA8PCBGWF9CU1RSQygiIGRcbiIpOw0KKyAgICB9DQorICAgIGlmICghbV9iR3JhcGhTdGF0ZVNldCB8fCBtX0N1ckdyYXBoU3RhdGUubV9MaW5lSm9pbiAhPSBwR3JhcGhTdGF0ZS0+bV9MaW5lSm9pbikgew0KKyAgICAgICAgYnVmIDw8IHBHcmFwaFN0YXRlLT5tX0xpbmVKb2luIDw8IEZYX0JTVFJDKCIgalxuIik7DQorICAgIH0NCisgICAgaWYgKCFtX2JHcmFwaFN0YXRlU2V0IHx8IG1fQ3VyR3JhcGhTdGF0ZS5tX0xpbmVXaWR0aCAhPSBwR3JhcGhTdGF0ZS0+bV9MaW5lV2lkdGgpIHsNCisgICAgICAgIGJ1ZiA8PCBwR3JhcGhTdGF0ZS0+bV9MaW5lV2lkdGggPDwgRlhfQlNUUkMoIiB3XG4iKTsNCisgICAgfQ0KKyAgICBpZiAoIW1fYkdyYXBoU3RhdGVTZXQgfHwgbV9DdXJHcmFwaFN0YXRlLm1fTWl0ZXJMaW1pdCAhPSBwR3JhcGhTdGF0ZS0+bV9NaXRlckxpbWl0KSB7DQorICAgICAgICBidWYgPDwgcEdyYXBoU3RhdGUtPm1fTWl0ZXJMaW1pdCA8PCBGWF9CU1RSQygiIE1cbiIpOw0KKyAgICB9DQorICAgIG1fQ3VyR3JhcGhTdGF0ZS5Db3B5KCpwR3JhcGhTdGF0ZSk7DQorICAgIG1fYkdyYXBoU3RhdGVTZXQgPSBUUlVFOw0KKyAgICBpZiAoYnVmLkdldFNpemUoKSkgew0KKyAgICAgICAgbV9wT3V0cHV0LT5PdXRwdXRQUygoRlhfTFBDU1RSKWJ1Zi5HZXRCdWZmZXIoKSwgYnVmLkdldFNpemUoKSk7DQorICAgIH0NCit9DQorc3RhdGljIHZvaWQgRmF4Q29tcHJlc3NEYXRhKEZYX0xQQllURSBzcmNfYnVmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIEZYX0xQQllURSYgZGVzdF9idWYsIEZYX0RXT1JEJiBkZXN0X3NpemUpDQorew0KKyAgICBDQ29kZWNfTW9kdWxlTWdyKiBwRW5jb2RlcnMgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpOw0KKyAgICBpZiAod2lkdGggKiBoZWlnaHQgPiAxMjggJiYgcEVuY29kZXJzICYmIHBFbmNvZGVycy0+R2V0RmF4TW9kdWxlKCktPkVuY29kZShzcmNfYnVmLCB3aWR0aCwgaGVpZ2h0LCAod2lkdGggKyA3KSAvIDgsIGRlc3RfYnVmLCBkZXN0X3NpemUpKSB7DQorICAgICAgICBGWF9GcmVlKHNyY19idWYpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZGVzdF9idWYgPSBzcmNfYnVmOw0KKyAgICAgICAgZGVzdF9zaXplID0gKHdpZHRoICsgNykgLyA4ICogaGVpZ2h0Ow0KKyAgICB9DQorfQ0KK3N0YXRpYyB2b2lkIFBTQ29tcHJlc3NEYXRhKGludCBQU0xldmVsLCBGWF9MUEJZVEUgc3JjX2J1ZiwgRlhfRFdPUkQgc3JjX3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfTFBCWVRFJiBvdXRwdXRfYnVmLCBGWF9EV09SRCYgb3V0cHV0X3NpemUsIEZYX0xQQ1NUUiYgZmlsdGVyKQ0KK3sNCisgICAgb3V0cHV0X2J1ZiA9IHNyY19idWY7DQorICAgIG91dHB1dF9zaXplID0gc3JjX3NpemU7DQorICAgIGZpbHRlciA9ICIiOw0KKyAgICBpZiAoc3JjX3NpemUgPCAxMDI0KSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgQ0NvZGVjX01vZHVsZU1nciogcEVuY29kZXJzID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKTsNCisgICAgRlhfTFBCWVRFIGRlc3RfYnVmID0gTlVMTDsNCisgICAgRlhfRFdPUkQgZGVzdF9zaXplID0gc3JjX3NpemU7DQorICAgIGlmIChQU0xldmVsID49IDMpIHsNCisgICAgICAgIGlmIChwRW5jb2RlcnMgJiYgcEVuY29kZXJzLT5HZXRGbGF0ZU1vZHVsZSgpLT5FbmNvZGUoc3JjX2J1Ziwgc3JjX3NpemUsIGRlc3RfYnVmLCBkZXN0X3NpemUpKSB7DQorICAgICAgICAgICAgZmlsdGVyID0gIi9GbGF0ZURlY29kZSBmaWx0ZXIgIjsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChwRW5jb2RlcnMgJiYgcEVuY29kZXJzLT5HZXRCYXNpY01vZHVsZSgpLT5SdW5MZW5ndGhFbmNvZGUoc3JjX2J1Ziwgc3JjX3NpemUsIGRlc3RfYnVmLCBkZXN0X3NpemUpKSB7DQorICAgICAgICAgICAgZmlsdGVyID0gIi9SdW5MZW5ndGhEZWNvZGUgZmlsdGVyICI7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGRlc3Rfc2l6ZSA8IHNyY19zaXplKSB7DQorICAgICAgICBvdXRwdXRfYnVmID0gZGVzdF9idWY7DQorICAgICAgICBvdXRwdXRfc2l6ZSA9IGRlc3Rfc2l6ZTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZpbHRlciA9IE5VTEw7DQorICAgICAgICBpZiAoZGVzdF9idWYpIHsNCisgICAgICAgICAgICBGWF9GcmVlKGRlc3RfYnVmKTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NCitGWF9CT09MIENGWF9QU1JlbmRlcmVyOjpTZXRESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNvdXJjZSwgRlhfRFdPUkQgY29sb3IsIGludCBsZWZ0LCBpbnQgdG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIFN0YXJ0UmVuZGVyaW5nKCk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4KChGWF9GTE9BVCkocFNvdXJjZS0+R2V0V2lkdGgoKSksIDAuMGYsIDAuMGYsIC0oRlhfRkxPQVQpKHBTb3VyY2UtPkdldEhlaWdodCgpKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZYX0ZMT0FUKShsZWZ0KSwgKEZYX0ZMT0FUKSh0b3AgKyBwU291cmNlLT5HZXRIZWlnaHQoKSkpOw0KKyAgICByZXR1cm4gRHJhd0RJQml0cyhwU291cmNlLCBjb2xvciwgJm1hdHJpeCwgMCwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1BTUmVuZGVyZXI6OlN0cmV0Y2hESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNvdXJjZSwgRlhfRFdPUkQgY29sb3IsIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsIEZYX0RXT1JEIGZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBTdGFydFJlbmRlcmluZygpOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeCgoRlhfRkxPQVQpKGRlc3Rfd2lkdGgpLCAwLjBmLCAwLjBmLCAoRlhfRkxPQVQpKC1kZXN0X2hlaWdodCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGWF9GTE9BVCkoZGVzdF9sZWZ0KSwgKEZYX0ZMT0FUKShkZXN0X3RvcCArIGRlc3RfaGVpZ2h0KSk7DQorICAgIHJldHVybiBEcmF3RElCaXRzKHBTb3VyY2UsIGNvbG9yLCAmbWF0cml4LCBmbGFncywgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1BTUmVuZGVyZXI6OkRyYXdESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNvdXJjZSwgRlhfRFdPUkQgY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBGWF9EV09SRCBmbGFncywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgU3RhcnRSZW5kZXJpbmcoKTsNCisgICAgaWYgKChwTWF0cml4LT5hID09IDAgJiYgcE1hdHJpeC0+YiA9PSAwKSB8fCAocE1hdHJpeC0+YyA9PSAwICYmIHBNYXRyaXgtPmQgPT0gMCkpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIGlmIChwU291cmNlLT5IYXNBbHBoYSgpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IGFscGhhID0gRlhHRVRGTEFHX0NPTE9SVFlQRShhbHBoYV9mbGFnKSA/IEZYR0VURkxBR19BTFBIQV9GSUxMKGNvbG9yKSA6IEZYQVJHQl9BKGNvbG9yKTsNCisgICAgaWYgKHBTb3VyY2UtPklzQWxwaGFNYXNrKCkgJiYgKGFscGhhIDwgMjU1IHx8IHBTb3VyY2UtPkdldEJQUCgpICE9IDEpKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgT1VUUFVUX1BTKCJxXG4iKTsNCisgICAgQ0ZYX0J5dGVUZXh0QnVmIGJ1ZjsNCisgICAgYnVmIDw8IEZYX0JTVFJDKCJbIikgPDwgcE1hdHJpeC0+YSA8PCBGWF9CU1RSQygiICIpIDw8IHBNYXRyaXgtPmIgPDwgRlhfQlNUUkMoIiAiKSA8PA0KKyAgICAgICAgcE1hdHJpeC0+YyA8PCBGWF9CU1RSQygiICIpIDw8IHBNYXRyaXgtPmQgPDwgRlhfQlNUUkMoIiAiKSA8PCBwTWF0cml4LT5lIDw8DQorICAgICAgICBGWF9CU1RSQygiICIpIDw8IHBNYXRyaXgtPmYgPDwgRlhfQlNUUkMoIl1jbSAiKTsNCisgICAgaW50IHdpZHRoID0gcFNvdXJjZS0+R2V0V2lkdGgoKTsNCisgICAgaW50IGhlaWdodCA9IHBTb3VyY2UtPkdldEhlaWdodCgpOw0KKyAgICBidWYgPDwgd2lkdGggPDwgRlhfQlNUUkMoIiAiKSA8PCBoZWlnaHQ7DQorICAgIGlmIChwU291cmNlLT5HZXRCUFAoKSA9PSAxICYmIHBTb3VyY2UtPkdldFBhbGV0dGUoKSA9PSBOVUxMKSB7DQorICAgICAgICBpbnQgcGl0Y2ggPSAod2lkdGggKyA3KSAvIDg7DQorICAgICAgICBGWF9EV09SRCBzcmNfc2l6ZSA9IGhlaWdodCAqIHBpdGNoOw0KKyAgICAgICAgRlhfTFBCWVRFIHNyY19idWYgPSBGWF9BbGxvYyhGWF9CWVRFLCBzcmNfc2l6ZSk7DQorICAgICAgICBpZiAoIXNyY19idWYpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYX0xQQ0JZVEUgc3JjX3NjYW4gPSBwU291cmNlLT5HZXRTY2FubGluZShyb3cpOw0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKHNyY19idWYgKyByb3cgKiBwaXRjaCwgc3JjX3NjYW4sIHBpdGNoKTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0xQQllURSBvdXRwdXRfYnVmOw0KKyAgICAgICAgRlhfRFdPUkQgb3V0cHV0X3NpemU7DQorICAgICAgICBGYXhDb21wcmVzc0RhdGEoc3JjX2J1Ziwgd2lkdGgsIGhlaWdodCwgb3V0cHV0X2J1Ziwgb3V0cHV0X3NpemUpOw0KKyAgICAgICAgaWYgKHBTb3VyY2UtPklzQWxwaGFNYXNrKCkpIHsNCisgICAgICAgICAgICBTZXRDb2xvcihjb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorICAgICAgICAgICAgbV9iQ29sb3JTZXQgPSBGQUxTRTsNCisgICAgICAgICAgICBidWYgPDwgRlhfQlNUUkMoIiB0cnVlWyIpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBidWYgPDwgRlhfQlNUUkMoIiAxWyIpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgYnVmIDw8IHdpZHRoIDw8IEZYX0JTVFJDKCIgMCAwIC0iKSA8PCBoZWlnaHQgPDwgRlhfQlNUUkMoIiAwICIpIDw8IGhlaWdodCA8PA0KKyAgICAgICAgICAgIEZYX0JTVFJDKCJdY3VycmVudGZpbGUvQVNDSUk4NURlY29kZSBmaWx0ZXIgIik7DQorICAgICAgICBpZiAob3V0cHV0X2J1ZiAhPSBzcmNfYnVmKQ0KKyAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiPDwvSyAtMS9FbmRPZkJsb2NrIGZhbHNlL0NvbHVtbnMgIikgPDwgd2lkdGggPDwgRlhfQlNUUkMoIi9Sb3dzICIpIDw8IGhlaWdodCA8PA0KKyAgICAgICAgICAgICAgICBGWF9CU1RSQygiPj4vQ0NJVFRGYXhEZWNvZGUgZmlsdGVyICIpOw0KKyAgICAgICAgaWYgKHBTb3VyY2UtPklzQWxwaGFNYXNrKCkpIHsNCisgICAgICAgICAgICBidWYgPDwgRlhfQlNUUkMoImlNXG4iKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYnVmIDw8IEZYX0JTVFJDKCJmYWxzZSAxIGNvbG9yaW1hZ2VcbiIpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wT3V0cHV0LT5PdXRwdXRQUygoRlhfTFBDU1RSKWJ1Zi5HZXRCdWZmZXIoKSwgYnVmLkdldFNpemUoKSk7DQorICAgICAgICBXcml0ZVBTQmluYXJ5KG91dHB1dF9idWYsIG91dHB1dF9zaXplKTsNCisgICAgICAgIEZYX0ZyZWUob3V0cHV0X2J1Zik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDRlhfRElCU291cmNlKiBwQ29udmVydGVkID0gKENGWF9ESUJTb3VyY2UqKXBTb3VyY2U7DQorICAgICAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgICAgIEZYRElCX0Zvcm1hdCBmb3JtYXQgPSBtX2JDbXlrT3V0cHV0ID8gRlhESUJfQ215ayA6IEZYRElCX1JnYjsNCisgICAgICAgICAgICBwQ29udmVydGVkID0gcFNvdXJjZS0+Q2xvbmVDb252ZXJ0KGZvcm1hdCwgTlVMTCwgcEljY1RyYW5zZm9ybSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHN3aXRjaCAocFNvdXJjZS0+R2V0Rm9ybWF0KCkpIHsNCisgICAgICAgICAgICAgICAgY2FzZSBGWERJQl8xYnBwUmdiOg0KKyAgICAgICAgICAgICAgICBjYXNlIEZYRElCX1JnYjMyOg0KKyAgICAgICAgICAgICAgICAgICAgcENvbnZlcnRlZCA9IHBTb3VyY2UtPkNsb25lQ29udmVydChGWERJQl9SZ2IpOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIGNhc2UgRlhESUJfOGJwcFJnYjoNCisgICAgICAgICAgICAgICAgICAgIGlmIChwU291cmNlLT5HZXRQYWxldHRlKCkgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBDb252ZXJ0ZWQgPSBwU291cmNlLT5DbG9uZUNvbnZlcnQoRlhESUJfUmdiKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIEZYRElCXzFicHBDbXlrOg0KKyAgICAgICAgICAgICAgICAgICAgcENvbnZlcnRlZCA9IHBTb3VyY2UtPkNsb25lQ29udmVydChGWERJQl9DbXlrKTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBjYXNlIEZYRElCXzhicHBDbXlrOg0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHBTb3VyY2UtPkdldFBhbGV0dGUoKSAhPSBOVUxMKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcENvbnZlcnRlZCA9IHBTb3VyY2UtPkNsb25lQ29udmVydChGWERJQl9DbXlrKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBDb252ZXJ0ZWQgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIE9VVFBVVF9QUygiXG5RXG4iKTsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBpbnQgQnBwID0gcENvbnZlcnRlZC0+R2V0QlBQKCkgLyA4Ow0KKyAgICAgICAgRlhfTFBCWVRFIG91dHB1dF9idWYgPSBOVUxMOw0KKyAgICAgICAgRlhfU1RSU0laRSBvdXRwdXRfc2l6ZSA9IDA7DQorICAgICAgICBGWF9MUENTVFIgZmlsdGVyID0gTlVMTDsNCisgICAgICAgIGlmIChmbGFncyAmIEZYUkVOREVSX0lNQUdFX0xPU1NZKSB7DQorICAgICAgICAgICAgQ0NvZGVjX01vZHVsZU1nciogcEVuY29kZXJzID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKTsNCisgICAgICAgICAgICBpZiAocEVuY29kZXJzICYmIHBFbmNvZGVycy0+R2V0SnBlZ01vZHVsZSgpLT5FbmNvZGUocENvbnZlcnRlZCwgb3V0cHV0X2J1Ziwgb3V0cHV0X3NpemUpKSB7DQorICAgICAgICAgICAgICAgIGZpbHRlciA9ICIvRENURGVjb2RlIGZpbHRlciAiOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChmaWx0ZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGludCBzcmNfcGl0Y2ggPSB3aWR0aCAqIEJwcDsNCisgICAgICAgICAgICBvdXRwdXRfc2l6ZSA9IGhlaWdodCAqIHNyY19waXRjaDsNCisgICAgICAgICAgICBvdXRwdXRfYnVmID0gRlhfQWxsb2MoRlhfQllURSwgb3V0cHV0X3NpemUpOw0KKyAgICAgICAgICAgIGlmICghb3V0cHV0X2J1Zikgew0KKyAgICAgICAgICAgICAgICBpZiAocENvbnZlcnRlZCAhPSBwU291cmNlKSB7DQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgcENvbnZlcnRlZDsNCisgICAgICAgICAgICAgICAgICAgIHBDb252ZXJ0ZWQgPSBOVUxMOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHBDb252ZXJ0ZWQtPkdldFNjYW5saW5lKHJvdyk7DQorICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBvdXRwdXRfYnVmICsgcm93ICogc3JjX3BpdGNoOw0KKyAgICAgICAgICAgICAgICBpZiAoQnBwID09IDMpIHsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IHdpZHRoOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBzcmNfc2NhblsyXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSBzcmNfc2NhblsxXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdF9zY2FuKysgPSAqc3JjX3NjYW47DQorICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKGRlc3Rfc2Nhbiwgc3JjX3NjYW4sIHNyY19waXRjaCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfTFBCWVRFIGNvbXByZXNzZWRfYnVmOw0KKyAgICAgICAgICAgIEZYX0RXT1JEIGNvbXByZXNzZWRfc2l6ZTsNCisgICAgICAgICAgICBQU0NvbXByZXNzRGF0YShtX1BTTGV2ZWwsIG91dHB1dF9idWYsIG91dHB1dF9zaXplLCBjb21wcmVzc2VkX2J1ZiwgY29tcHJlc3NlZF9zaXplLCBmaWx0ZXIpOw0KKyAgICAgICAgICAgIGlmIChvdXRwdXRfYnVmICE9IGNvbXByZXNzZWRfYnVmKSB7DQorICAgICAgICAgICAgICAgIEZYX0ZyZWUob3V0cHV0X2J1Zik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIG91dHB1dF9idWYgPSBjb21wcmVzc2VkX2J1ZjsNCisgICAgICAgICAgICBvdXRwdXRfc2l6ZSA9IGNvbXByZXNzZWRfc2l6ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwQ29udmVydGVkICE9IHBTb3VyY2UpIHsNCisgICAgICAgICAgICBkZWxldGUgcENvbnZlcnRlZDsNCisgICAgICAgICAgICBwQ29udmVydGVkID0gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiIDhbIik7DQorICAgICAgICBidWYgPDwgd2lkdGggPDwgRlhfQlNUUkMoIiAwIDAgLSIpIDw8IGhlaWdodCA8PCBGWF9CU1RSQygiIDAgIikgPDwgaGVpZ2h0IDw8IEZYX0JTVFJDKCJdIik7DQorICAgICAgICBidWYgPDwgRlhfQlNUUkMoImN1cnJlbnRmaWxlL0FTQ0lJODVEZWNvZGUgZmlsdGVyICIpOw0KKyAgICAgICAgaWYgKGZpbHRlcikgew0KKyAgICAgICAgICAgIGJ1ZiA8PCBmaWx0ZXI7DQorICAgICAgICB9DQorICAgICAgICBidWYgPDwgRlhfQlNUUkMoImZhbHNlICIpIDw8IEJwcDsNCisgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiIGNvbG9yaW1hZ2VcbiIpOw0KKyAgICAgICAgbV9wT3V0cHV0LT5PdXRwdXRQUygoRlhfTFBDU1RSKWJ1Zi5HZXRCdWZmZXIoKSwgYnVmLkdldFNpemUoKSk7DQorICAgICAgICBXcml0ZVBTQmluYXJ5KG91dHB1dF9idWYsIG91dHB1dF9zaXplKTsNCisgICAgICAgIEZYX0ZyZWUob3V0cHV0X2J1Zik7DQorICAgIH0NCisgICAgT1VUUFVUX1BTKCJcblFcbiIpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDRlhfUFNSZW5kZXJlcjo6U2V0Q29sb3IoRlhfRFdPUkQgY29sb3IsIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgaWYgKCFDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpIHx8ICFDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKSkgew0KKyAgICAgICAgcEljY1RyYW5zZm9ybSA9IE5VTEw7DQorICAgIH0NCisgICAgRlhfQk9PTCBiQ01ZSyA9IEZBTFNFOw0KKyAgICBpZiAocEljY1RyYW5zZm9ybSkgew0KKyAgICAgICAgSUNvZGVjX0ljY01vZHVsZSogcEljY01vZHVsZSA9IENGWF9HRU1vZHVsZTo6R2V0KCktPkdldENvZGVjTW9kdWxlKCktPkdldEljY01vZHVsZSgpOw0KKyAgICAgICAgY29sb3IgPSBGWEdFVEZMQUdfQ09MT1JUWVBFKGFscGhhX2ZsYWcpID8gRlhDTVlLX1RPRElCKGNvbG9yKSA6IEZYQVJHQl9UT0RJQihjb2xvcik7DQorICAgICAgICBGWF9MUEJZVEUgcENvbG9yID0gKEZYX0xQQllURSkmY29sb3I7DQorICAgICAgICBwSWNjTW9kdWxlLT5UcmFuc2xhdGVTY2FubGluZShwSWNjVHJhbnNmb3JtLCBwQ29sb3IsIHBDb2xvciwgMSk7DQorICAgICAgICBjb2xvciA9IG1fYkNteWtPdXRwdXQgPyBGWENNWUtfVE9ESUIoY29sb3IpIDogRlhBUkdCX1RPRElCKGNvbG9yKTsNCisgICAgICAgIGJDTVlLID0gbV9iQ215a091dHB1dDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGJDTVlLID0gRlhHRVRGTEFHX0NPTE9SVFlQRShhbHBoYV9mbGFnKTsNCisgICAgfQ0KKyAgICBpZiAoYkNNWUsgIT0gbV9iQ215a091dHB1dCB8fCAhbV9iQ29sb3JTZXQgfHwgbV9MYXN0Q29sb3IgIT0gY29sb3IpIHsNCisgICAgICAgIENGWF9CeXRlVGV4dEJ1ZiBidWY7DQorICAgICAgICBpZiAoYkNNWUspIHsNCisgICAgICAgICAgICBidWYgPDwgRlhTWVNfR2V0Q1ZhbHVlKGNvbG9yKSAvIDI1NS4wIDw8IEZYX0JTVFJDKCIgIikgPDwgRlhTWVNfR2V0TVZhbHVlKGNvbG9yKSAvIDI1NS4wIDw8IEZYX0JTVFJDKCIgIikNCisgICAgICAgICAgICAgICAgPDwgRlhTWVNfR2V0WVZhbHVlKGNvbG9yKSAvIDI1NS4wIDw8IEZYX0JTVFJDKCIgIikgPDwgRlhTWVNfR2V0S1ZhbHVlKGNvbG9yKSAvIDI1NS4wIDw8IEZYX0JTVFJDKCIga1xuIik7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGJ1ZiA8PCBGWEFSR0JfUihjb2xvcikgLyAyNTUuMCA8PCBGWF9CU1RSQygiICIpIDw8IEZYQVJHQl9HKGNvbG9yKSAvIDI1NS4wIDw8IEZYX0JTVFJDKCIgIikNCisgICAgICAgICAgICAgICAgPDwgRlhBUkdCX0IoY29sb3IpIC8gMjU1LjAgPDwgRlhfQlNUUkMoIiByZ1xuIik7DQorICAgICAgICB9DQorICAgICAgICBpZiAoYkNNWUsgPT0gbV9iQ215a091dHB1dCkgew0KKyAgICAgICAgICAgIG1fYkNvbG9yU2V0ID0gVFJVRTsNCisgICAgICAgICAgICBtX0xhc3RDb2xvciA9IGNvbG9yOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9wT3V0cHV0LT5PdXRwdXRQUygoRlhfTFBDU1RSKWJ1Zi5HZXRCdWZmZXIoKSwgYnVmLkdldFNpemUoKSk7DQorICAgIH0NCit9DQordm9pZCBDRlhfUFNSZW5kZXJlcjo6RmluZFBTRm9udEdseXBoKENGWF9GYWNlQ2FjaGUqIHBGYWNlQ2FjaGUsIENGWF9Gb250KiBwRm9udCwgY29uc3QgRlhURVhUX0NIQVJQT1MmIGNoYXJwb3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgcHNfZm9udG51bSwgaW50ICZwc19nbHlwaGluZGV4KQ0KK3sNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KW1fUFNGb250TGlzdC5HZXRTaXplKCk7IGkgKyspIHsNCisgICAgICAgIENQU0ZvbnQqIHBQU0ZvbnQgPSBtX1BTRm9udExpc3RbaV07DQorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHBQU0ZvbnQtPm1fbkdseXBoczsgaiArKykNCisgICAgICAgICAgICBpZiAocFBTRm9udC0+bV9HbHlwaHNbal0ubV9wRm9udCA9PSBwRm9udCAmJiBwUFNGb250LT5tX0dseXBoc1tqXS5tX0dseXBoSW5kZXggPT0gY2hhcnBvcy5tX0dseXBoSW5kZXgpIHsNCisgICAgICAgICAgICAgICAgaWYgKCghcFBTRm9udC0+bV9HbHlwaHNbal0ubV9iR2x5cGhBZGp1c3QgJiYgIWNoYXJwb3MubV9iR2x5cGhBZGp1c3QpIHx8DQorICAgICAgICAgICAgICAgICAgICAgICAgKHBQU0ZvbnQtPm1fR2x5cGhzW2pdLm1fYkdseXBoQWRqdXN0ICYmIGNoYXJwb3MubV9iR2x5cGhBZGp1c3QgJiYNCisgICAgICAgICAgICAgICAgICAgICAgICAgKEZYU1lTX2ZhYnMocFBTRm9udC0+bV9HbHlwaHNbal0ubV9BZGp1c3RNYXRyaXhbMF0gLSBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzBdKSA8IDAuMDEgJiYNCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX2ZhYnMocFBTRm9udC0+bV9HbHlwaHNbal0ubV9BZGp1c3RNYXRyaXhbMV0gLSBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzFdKSA8IDAuMDEgJiYNCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX2ZhYnMocFBTRm9udC0+bV9HbHlwaHNbal0ubV9BZGp1c3RNYXRyaXhbMl0gLSBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzJdKSA8IDAuMDEgJiYNCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX2ZhYnMocFBTRm9udC0+bV9HbHlwaHNbal0ubV9BZGp1c3RNYXRyaXhbM10gLSBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzNdKSA8IDAuMDEpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgcHNfZm9udG51bSA9IGk7DQorICAgICAgICAgICAgICAgICAgICBwc19nbHlwaGluZGV4ID0gajsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAobV9QU0ZvbnRMaXN0LkdldFNpemUoKSA9PSAwIHx8IG1fUFNGb250TGlzdFttX1BTRm9udExpc3QuR2V0U2l6ZSgpIC0gMV0tPm1fbkdseXBocyA9PSAyNTYpIHsNCisgICAgICAgIENQU0ZvbnQqIHBQU0ZvbnQgPSBGWF9ORVcgQ1BTRm9udDsNCisgICAgICAgIGlmICghcFBTRm9udCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHBQU0ZvbnQtPm1fbkdseXBocyA9IDA7DQorICAgICAgICBtX1BTRm9udExpc3QuQWRkKHBQU0ZvbnQpOw0KKyAgICAgICAgQ0ZYX0J5dGVUZXh0QnVmIGJ1ZjsNCisgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiOCBkaWN0IGJlZ2luL0ZvbnRUeXBlIDMgZGVmL0ZvbnRNYXRyaXhbMSAwIDAgMSAwIDBdZGVmXG4iDQorICAgICAgICAgICAgICAgICAgICAgICAgIi9Gb250QkJveFswIDAgMCAwXWRlZi9FbmNvZGluZyAyNTYgYXJyYXkgZGVmIDAgMSAyNTV7RW5jb2RpbmcgZXhjaC8ubm90ZGVmIHB1dH1mb3JcbiINCisgICAgICAgICAgICAgICAgICAgICAgICAiL0NoYXJQcm9jcyAxIGRpY3QgZGVmIENoYXJQcm9jcyBiZWdpbi8ubm90ZGVmIHt9IGRlZiBlbmRcbiINCisgICAgICAgICAgICAgICAgICAgICAgICAiL0J1aWxkR2x5cGh7MSAwIC0xMCAtMTAgMTAgMTAgc2V0Y2FjaGVkZXZpY2UgZXhjaC9DaGFyUHJvY3MgZ2V0IGV4Y2ggMiBjb3B5IGtub3duIG5vdHtwb3AvLm5vdGRlZn1pZiBnZXQgZXhlY31iaW5kIGRlZlxuIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICIvQnVpbGRDaGFyezEgaW5kZXgvRW5jb2RpbmcgZ2V0IGV4Y2ggZ2V0IDEgaW5kZXgvQnVpbGRHbHlwaCBnZXQgZXhlY31iaW5kIGRlZlxuIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICJjdXJyZW50ZGljdCBlbmRcbiIpOw0KKyAgICAgICAgYnVmIDw8IEZYX0JTVFJDKCIvWCIpIDw8IG1fUFNGb250TGlzdC5HZXRTaXplKCkgLSAxIDw8IEZYX0JTVFJDKCIgZXhjaCBkZWZpbmVmb250IHBvcFxuIik7DQorICAgICAgICBtX3BPdXRwdXQtPk91dHB1dFBTKChGWF9MUENTVFIpYnVmLkdldEJ1ZmZlcigpLCBidWYuR2V0U2l6ZSgpKTsNCisgICAgICAgIGJ1Zi5DbGVhcigpOw0KKyAgICB9DQorICAgIHBzX2ZvbnRudW0gPSBtX1BTRm9udExpc3QuR2V0U2l6ZSgpIC0gMTsNCisgICAgQ1BTRm9udCogcFBTRm9udCA9IG1fUFNGb250TGlzdFtwc19mb250bnVtXTsNCisgICAgcHNfZ2x5cGhpbmRleCA9IHBQU0ZvbnQtPm1fbkdseXBoczsNCisgICAgcFBTRm9udC0+bV9HbHlwaHNbcHNfZ2x5cGhpbmRleF0ubV9HbHlwaEluZGV4ID0gY2hhcnBvcy5tX0dseXBoSW5kZXg7DQorICAgIHBQU0ZvbnQtPm1fR2x5cGhzW3BzX2dseXBoaW5kZXhdLm1fcEZvbnQgPSBwRm9udDsNCisgICAgcFBTRm9udC0+bV9HbHlwaHNbcHNfZ2x5cGhpbmRleF0ubV9iR2x5cGhBZGp1c3QgPSBjaGFycG9zLm1fYkdseXBoQWRqdXN0Ow0KKyAgICBpZiAoY2hhcnBvcy5tX2JHbHlwaEFkanVzdCkgew0KKyAgICAgICAgcFBTRm9udC0+bV9HbHlwaHNbcHNfZ2x5cGhpbmRleF0ubV9BZGp1c3RNYXRyaXhbMF0gPSBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzBdOw0KKyAgICAgICAgcFBTRm9udC0+bV9HbHlwaHNbcHNfZ2x5cGhpbmRleF0ubV9BZGp1c3RNYXRyaXhbMV0gPSBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzFdOw0KKyAgICAgICAgcFBTRm9udC0+bV9HbHlwaHNbcHNfZ2x5cGhpbmRleF0ubV9BZGp1c3RNYXRyaXhbMl0gPSBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzJdOw0KKyAgICAgICAgcFBTRm9udC0+bV9HbHlwaHNbcHNfZ2x5cGhpbmRleF0ubV9BZGp1c3RNYXRyaXhbM10gPSBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzNdOw0KKyAgICB9DQorICAgIHBQU0ZvbnQtPm1fbkdseXBocyArKzsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7DQorICAgIGlmIChjaGFycG9zLm1fYkdseXBoQWRqdXN0KQ0KKyAgICAgICAgbWF0cml4LlNldChjaGFycG9zLm1fQWRqdXN0TWF0cml4WzBdLCBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzFdLA0KKyAgICAgICAgICAgICAgICAgICBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzJdLCBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzNdLCAwLCAwKTsNCisgICAgbWF0cml4LkNvbmNhdCgxLjBmLCAwLCAwLCAxLjBmLCAwLCAwKTsNCisgICAgY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEgPSBwRmFjZUNhY2hlLT5Mb2FkR2x5cGhQYXRoKHBGb250LCBjaGFycG9zLm1fR2x5cGhJbmRleCwgY2hhcnBvcy5tX0ZvbnRDaGFyV2lkdGgpOw0KKyAgICBpZiAocFBhdGhEYXRhID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBDRlhfUGF0aERhdGEgVHJhbnNmb3JtZWRQYXRoKCpwUGF0aERhdGEpOw0KKyAgICBpZiAoY2hhcnBvcy5tX2JHbHlwaEFkanVzdCkgew0KKyAgICAgICAgVHJhbnNmb3JtZWRQYXRoLlRyYW5zZm9ybSgmbWF0cml4KTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVRleHRCdWYgYnVmOw0KKyAgICBidWYgPDwgRlhfQlNUUkMoIi9YIikgPDwgcHNfZm9udG51bSA8PCBGWF9CU1RSQygiIEZmL0NoYXJQcm9jcyBnZXQgYmVnaW4vIikNCisgICAgICAgIDw8IHBzX2dseXBoaW5kZXggPDwgRlhfQlNUUkMoInsiKTsNCisgICAgYnVmIDw8IEZYX0JTVFJDKCJuICIpOw0KKyAgICBmb3IgKGludCBwID0gMDsgcCA8IFRyYW5zZm9ybWVkUGF0aC5HZXRQb2ludENvdW50KCk7IHAgKyspIHsNCisgICAgICAgIEZYX0ZMT0FUIHggPSBUcmFuc2Zvcm1lZFBhdGguR2V0UG9pbnRYKHApLCB5ID0gVHJhbnNmb3JtZWRQYXRoLkdldFBvaW50WShwKTsNCisgICAgICAgIHN3aXRjaCAoVHJhbnNmb3JtZWRQYXRoLkdldEZsYWcocCkgJiBGWFBUX1RZUEUpIHsNCisgICAgICAgICAgICBjYXNlIEZYUFRfTU9WRVRPOiB7DQorICAgICAgICAgICAgICAgICAgICBidWYgPDwgeCA8PCBGWF9CU1RSQygiICIpIDw8IHkgPDwgRlhfQlNUUkMoIiBtXG4iKTsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgY2FzZSBGWFBUX0xJTkVUTzogew0KKyAgICAgICAgICAgICAgICAgICAgYnVmIDw8IHggPDwgRlhfQlNUUkMoIiAiKSA8PCB5IDw8IEZYX0JTVFJDKCIgbFxuIik7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNhc2UgRlhQVF9CRVpJRVJUTzogew0KKyAgICAgICAgICAgICAgICAgICAgYnVmIDw8IHggPDwgRlhfQlNUUkMoIiAiKSA8PCB5IDw8IEZYX0JTVFJDKCIgIikNCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBUcmFuc2Zvcm1lZFBhdGguR2V0UG9pbnRYKHAgKyAxKSA8PCBGWF9CU1RSQygiICIpDQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgVHJhbnNmb3JtZWRQYXRoLkdldFBvaW50WShwICsgMSkgPDwgRlhfQlNUUkMoIiAiKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IFRyYW5zZm9ybWVkUGF0aC5HZXRQb2ludFgocCArIDIpIDw8IEZYX0JTVFJDKCIgIikNCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBUcmFuc2Zvcm1lZFBhdGguR2V0UG9pbnRZKHAgKyAyKSA8PCBGWF9CU1RSQygiIGNcbiIpOw0KKyAgICAgICAgICAgICAgICAgICAgcCArPSAyOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBidWYgPDwgRlhfQlNUUkMoImYiKTsNCisgICAgYnVmIDw8IEZYX0JTVFJDKCJ9YmluZCBkZWYgZW5kXG4iKTsNCisgICAgYnVmIDw8IEZYX0JTVFJDKCIvWCIpIDw8IHBzX2ZvbnRudW0gPDwgRlhfQlNUUkMoIiBGZi9FbmNvZGluZyBnZXQgIikgPDwgcHNfZ2x5cGhpbmRleA0KKyAgICAgICAgPDwgRlhfQlNUUkMoIi8iKSA8PCBwc19nbHlwaGluZGV4IDw8IEZYX0JTVFJDKCIgcHV0XG4iKTsNCisgICAgbV9wT3V0cHV0LT5PdXRwdXRQUygoRlhfTFBDU1RSKWJ1Zi5HZXRCdWZmZXIoKSwgYnVmLkdldFNpemUoKSk7DQorfQ0KK0ZYX0JPT0wgQ0ZYX1BTUmVuZGVyZXI6OkRyYXdUZXh0KGludCBuQ2hhcnMsIGNvbnN0IEZYVEVYVF9DSEFSUE9TKiBwQ2hhclBvcywgQ0ZYX0ZvbnQqIHBGb250LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9Gb250Q2FjaGUqIHBDYWNoZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgZm9udF9zaXplLCBGWF9EV09SRCBjb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIFN0YXJ0UmVuZGVyaW5nKCk7DQorICAgIGludCBhbHBoYSA9IEZYR0VURkxBR19DT0xPUlRZUEUoYWxwaGFfZmxhZykgPyBGWEdFVEZMQUdfQUxQSEFfRklMTChhbHBoYV9mbGFnKSA6IEZYQVJHQl9BKGNvbG9yKTsNCisgICAgaWYgKGFscGhhIDwgMjU1KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKChwT2JqZWN0MkRldmljZS0+YSA9PSAwICYmIHBPYmplY3QyRGV2aWNlLT5iID09IDApIHx8IChwT2JqZWN0MkRldmljZS0+YyA9PSAwICYmIHBPYmplY3QyRGV2aWNlLT5kID09IDApKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICBTZXRDb2xvcihjb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorICAgIENGWF9CeXRlVGV4dEJ1ZiBidWY7DQorICAgIGJ1ZiA8PCBGWF9CU1RSQygicVsiKSA8PCBwT2JqZWN0MkRldmljZS0+YSA8PCBGWF9CU1RSQygiICIpIDw8IHBPYmplY3QyRGV2aWNlLT5iIDw8IEZYX0JTVFJDKCIgIikNCisgICAgICAgIDw8IHBPYmplY3QyRGV2aWNlLT5jIDw8IEZYX0JTVFJDKCIgIikgPDwgcE9iamVjdDJEZXZpY2UtPmQ7DQorICAgIGJ1ZiA8PCBGWF9CU1RSQygiICIpIDw8IHBPYmplY3QyRGV2aWNlLT5lIDw8IEZYX0JTVFJDKCIgIikgPDwgcE9iamVjdDJEZXZpY2UtPmYgPDwgIl1jbVxuIjsNCisgICAgaWYgKHBDYWNoZSA9PSBOVUxMKSB7DQorICAgICAgICBwQ2FjaGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRGb250Q2FjaGUoKTsNCisgICAgfQ0KKyAgICBDRlhfRmFjZUNhY2hlKiBwRmFjZUNhY2hlID0gcENhY2hlLT5HZXRDYWNoZWRGYWNlKHBGb250KTsNCisgICAgRlhfRk9OVENBQ0hFX0RFRklORShwQ2FjaGUsIHBGb250KTsNCisgICAgaW50IGxhc3RfZm9udG51bSA9IC0xOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5DaGFyczsgaSArKykgew0KKyAgICAgICAgaW50IHBzX2ZvbnRudW0sIHBzX2dseXBoaW5kZXg7DQorICAgICAgICBGaW5kUFNGb250R2x5cGgocEZhY2VDYWNoZSwgcEZvbnQsIHBDaGFyUG9zW2ldLCBwc19mb250bnVtLCBwc19nbHlwaGluZGV4KTsNCisgICAgICAgIGlmIChsYXN0X2ZvbnRudW0gIT0gcHNfZm9udG51bSkgew0KKyAgICAgICAgICAgIGJ1ZiA8PCBGWF9CU1RSQygiL1giKSA8PCBwc19mb250bnVtIDw8IEZYX0JTVFJDKCIgRmYgIikgPDwgZm9udF9zaXplDQorICAgICAgICAgICAgICAgIDw8IEZYX0JTVFJDKCIgRnMgU2YgIik7DQorICAgICAgICAgICAgbGFzdF9mb250bnVtID0gcHNfZm9udG51bTsNCisgICAgICAgIH0NCisgICAgICAgIGJ1ZiA8PCBwQ2hhclBvc1tpXS5tX09yaWdpblggPDwgRlhfQlNUUkMoIiAiKQ0KKyAgICAgICAgICAgIDw8IHBDaGFyUG9zW2ldLm1fT3JpZ2luWSA8PCBGWF9CU1RSQygiIG0iKTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGhleDsNCisgICAgICAgIGhleC5Gb3JtYXQoIjwlMDJYPiIsIHBzX2dseXBoaW5kZXgpOw0KKyAgICAgICAgYnVmIDw8IGhleCA8PCBGWF9CU1RSQygiVGpcbiIpOw0KKyAgICB9DQorICAgIGJ1ZiA8PCBGWF9CU1RSQygiUVxuIik7DQorICAgIG1fcE91dHB1dC0+T3V0cHV0UFMoKEZYX0xQQ1NUUilidWYuR2V0QnVmZmVyKCksIGJ1Zi5HZXRTaXplKCkpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDRlhfUFNSZW5kZXJlcjo6V3JpdGVQU0JpbmFyeShGWF9MUENCWVRFIGRhdGEsIGludCBsZW4pDQorew0KKyAgICBGWF9MUEJZVEUgZGVzdF9idWY7DQorICAgIEZYX0RXT1JEIGRlc3Rfc2l6ZTsNCisgICAgQ0NvZGVjX01vZHVsZU1nciogcEVuY29kZXJzID0gQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKTsNCisgICAgaWYgKHBFbmNvZGVycyAmJiBwRW5jb2RlcnMtPkdldEJhc2ljTW9kdWxlKCktPkE4NUVuY29kZShkYXRhLCBsZW4sIGRlc3RfYnVmLCBkZXN0X3NpemUpKSB7DQorICAgICAgICBtX3BPdXRwdXQtPk91dHB1dFBTKChGWF9MUENTVFIpZGVzdF9idWYsIGRlc3Rfc2l6ZSk7DQorICAgICAgICBGWF9GcmVlKGRlc3RfYnVmKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIG1fcE91dHB1dC0+T3V0cHV0UFMoKEZYX0xQQ1NUUilkYXRhLCBsZW4pOw0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2UvZ2UvZnhfZ2VfdGV4dC5jcHAgYi9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlX3RleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMDhjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2dlL2Z4X2dlX3RleHQuY3BwCkBAIC0wLDAgKzEsMTc3NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZnJlZXR5cGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorI2luY2x1ZGUgInRleHRfaW50LmgiDQorI3VuZGVmIEZYX0dBTU1BDQorI3VuZGVmIEZYX0dBTU1BX0lOVkVSU0UNCisjZGVmaW5lIEZYX0dBTU1BKHZhbHVlKQkJCSh2YWx1ZSkNCisjZGVmaW5lIEZYX0dBTU1BX0lOVkVSU0UodmFsdWUpCSh2YWx1ZSkNCitGWF9SRUNUIEZYR0VfR2V0R2x5cGhzQkJveChGWFRFWFRfR0xZUEhQT1MqIHBHbHlwaEFuZFBvcywgaW50IG5DaGFycywgaW50IGFudGlfYWxpYXMsIEZYX0ZMT0FUIHJldGluYVNjYWxlWCwgRlhfRkxPQVQgcmV0aW5hU2NhbGVZKQ0KK3sNCisgICAgRlhfUkVDVCByZWN0KDAsIDAsIDAsIDApOw0KKyAgICBGWF9CT09MIGJTdGFydGVkID0gRkFMU0U7DQorICAgIGZvciAoaW50IGlDaGFyID0gMDsgaUNoYXIgPCBuQ2hhcnM7IGlDaGFyICsrKSB7DQorICAgICAgICBGWFRFWFRfR0xZUEhQT1MmIGdseXBoID0gcEdseXBoQW5kUG9zW2lDaGFyXTsNCisgICAgICAgIGNvbnN0IENGWF9HbHlwaEJpdG1hcCogcEdseXBoID0gZ2x5cGgubV9wR2x5cGg7DQorICAgICAgICBpZiAocEdseXBoID09IE5VTEwpIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBjaGFyX2xlZnQgPSBnbHlwaC5tX09yaWdpblggKyBwR2x5cGgtPm1fTGVmdDsNCisgICAgICAgIGludCBjaGFyX3dpZHRoID0gKGludCkocEdseXBoLT5tX0JpdG1hcC5HZXRXaWR0aCgpIC8gcmV0aW5hU2NhbGVYKTsNCisgICAgICAgIGlmIChhbnRpX2FsaWFzID09IEZYRlRfUkVOREVSX01PREVfTENEKSB7DQorICAgICAgICAgICAgY2hhcl93aWR0aCAvPSAzOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IGNoYXJfcmlnaHQgPSBjaGFyX2xlZnQgKyBjaGFyX3dpZHRoOw0KKyAgICAgICAgaW50IGNoYXJfdG9wID0gZ2x5cGgubV9PcmlnaW5ZIC0gcEdseXBoLT5tX1RvcDsNCisgICAgICAgIGludCBjaGFyX2JvdHRvbSA9IGNoYXJfdG9wICsgKGludCkocEdseXBoLT5tX0JpdG1hcC5HZXRIZWlnaHQoKSAvIHJldGluYVNjYWxlWSk7DQorICAgICAgICBpZiAoIWJTdGFydGVkKSB7DQorICAgICAgICAgICAgcmVjdC5sZWZ0ID0gY2hhcl9sZWZ0Ow0KKyAgICAgICAgICAgIHJlY3QucmlnaHQgPSBjaGFyX3JpZ2h0Ow0KKyAgICAgICAgICAgIHJlY3QudG9wID0gY2hhcl90b3A7DQorICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBjaGFyX2JvdHRvbTsNCisgICAgICAgICAgICBiU3RhcnRlZCA9IFRSVUU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChyZWN0LmxlZnQgPiBjaGFyX2xlZnQpIHsNCisgICAgICAgICAgICAgICAgcmVjdC5sZWZ0ID0gY2hhcl9sZWZ0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAocmVjdC5yaWdodCA8IGNoYXJfcmlnaHQpIHsNCisgICAgICAgICAgICAgICAgcmVjdC5yaWdodCA9IGNoYXJfcmlnaHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChyZWN0LnRvcCA+IGNoYXJfdG9wKSB7DQorICAgICAgICAgICAgICAgIHJlY3QudG9wID0gY2hhcl90b3A7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChyZWN0LmJvdHRvbSA8IGNoYXJfYm90dG9tKSB7DQorICAgICAgICAgICAgICAgIHJlY3QuYm90dG9tID0gY2hhcl9ib3R0b207DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiByZWN0Ow0KK30NCitzdGF0aWMgdm9pZCBfQWRqdXN0R2x5cGhTcGFjZShGWFRFWFRfR0xZUEhQT1MqIHBHbHlwaEFuZFBvcywgaW50IG5DaGFycykNCit7DQorICAgIEFTU0VSVChuQ2hhcnMgPiAxKTsNCisgICAgRlhfQk9PTCBiVmVydGljYWwgPSBGQUxTRTsNCisgICAgaWYgKHBHbHlwaEFuZFBvc1tuQ2hhcnMgLSAxXS5tX09yaWdpblggPT0gcEdseXBoQW5kUG9zWzBdLm1fT3JpZ2luWCkgew0KKyAgICAgICAgYlZlcnRpY2FsID0gVFJVRTsNCisgICAgfSBlbHNlIGlmIChwR2x5cGhBbmRQb3NbbkNoYXJzIC0gMV0ubV9PcmlnaW5ZICE9IHBHbHlwaEFuZFBvc1swXS5tX09yaWdpblkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpbnQgaSA9IG5DaGFycyAtIDE7DQorICAgIGludCogbmV4dF9vcmlnaW4gPSBiVmVydGljYWwgPyAmcEdseXBoQW5kUG9zW2ldLm1fT3JpZ2luWSA6ICZwR2x5cGhBbmRQb3NbaV0ubV9PcmlnaW5YOw0KKyAgICBGWF9GTE9BVCBuZXh0X29yaWdpbl9mID0gYlZlcnRpY2FsID8gcEdseXBoQW5kUG9zW2ldLm1fZk9yaWdpblkgOiBwR2x5cGhBbmRQb3NbaV0ubV9mT3JpZ2luWDsNCisgICAgZm9yIChpIC0tOyBpID4gMDsgaSAtLSkgew0KKyAgICAgICAgaW50KiB0aGlzX29yaWdpbiA9IGJWZXJ0aWNhbCA/ICZwR2x5cGhBbmRQb3NbaV0ubV9PcmlnaW5ZIDogJnBHbHlwaEFuZFBvc1tpXS5tX09yaWdpblg7DQorICAgICAgICBGWF9GTE9BVCB0aGlzX29yaWdpbl9mID0gYlZlcnRpY2FsID8gcEdseXBoQW5kUG9zW2ldLm1fZk9yaWdpblkgOiBwR2x5cGhBbmRQb3NbaV0ubV9mT3JpZ2luWDsNCisgICAgICAgIGludCBzcGFjZSA9ICgqbmV4dF9vcmlnaW4pIC0gKCp0aGlzX29yaWdpbik7DQorICAgICAgICBGWF9GTE9BVCBzcGFjZV9mID0gbmV4dF9vcmlnaW5fZiAtIHRoaXNfb3JpZ2luX2Y7DQorICAgICAgICBGWF9GTE9BVCBlcnJvciA9IChGWF9GTE9BVCkoRlhTWVNfZmFicyhzcGFjZV9mKSAtIEZYU1lTX2ZhYnMoKEZYX0ZMT0FUKShzcGFjZSkpKTsNCisgICAgICAgIGlmIChlcnJvciA+IDAuNWYpIHsNCisgICAgICAgICAgICAqdGhpc19vcmlnaW4gKz0gc3BhY2UgPiAwID8gLTEgOiAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbmV4dF9vcmlnaW4gPSB0aGlzX29yaWdpbjsNCisgICAgICAgIG5leHRfb3JpZ2luX2YgPSB0aGlzX29yaWdpbl9mOw0KKyAgICB9DQorfQ0KK3N0YXRpYyBjb25zdCBGWF9CWVRFIGdfR2RpcEdhbW1hX2Jnd1s5XSA9IHswLCAwLCA2MywgMTIwLCAwLCAxNjgsIDIxMCwgMjM5LCAyNTV9Ow0KK3N0YXRpYyBjb25zdCBGWF9CWVRFIGdfR2RpcEdhbW1hX2Znd1s5XSA9IHswLCAwLCAxNiwgNDUsIDAsIDg3LCAxMzUsIDE5MiwgMjU1fTsNCitzdGF0aWMgY29uc3QgRlhfQllURSBnX0dkaXBHYW1tYUFkanVzdF80N1s0OF0gPSB7DQorICAgIDAsIDMwLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOCwgMzksIDM5LCA0MCwgNDAsIDQwLCA0MSwgNDEsIDQxLCA0MiwgNDIsIDQyLCA0MiwgNDMsDQorICAgIDQzLCA0MywgNDMsIDQzLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NSwgNDUsIDQ1LCA0NSwgNDUsIDQ1LCA0NSwgNDYsDQorICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0Nw0KK307DQorc3RhdGljIGNvbnN0IEZYX0JZVEUgZ19HZGlwR2FtbWFBZGp1c3RfNzVbNzZdID0gew0KKyAgICAwLCA0NiwgNTAsIDUyLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjAsIDYxLCA2MSwgNjIsIDYyLCA2MywgNjMsIDY0LCA2NCwgNjQsIDY1LA0KKyAgICA2NSwgNjUsIDY2LCA2NiwgNjYsIDY3LCA2NywgNjcsIDY3LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY5LCA2OSwgNjksIDY5LCA2OSwgNzAsIDcwLCA3MCwNCisgICAgNzAsIDcwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MiwgNzIsIDcyLCA3MiwgNzIsIDcyLCA3MiwgNzMsIDczLCA3MywgNzMsIDczLCA3MywgNzMsDQorICAgIDczLCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc1DQorfTsNCitzdGF0aWMgY29uc3QgRlhfQllURSBnX0dkaXBHYW1tYUFkanVzdF84MVs4Ml0gPSB7DQorICAgIDAsIDQ5LCA1MywgNTYsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjUsIDY2LCA2NiwgNjcsIDY3LCA2OCwgNjgsIDY5LCA2OSwgNjksIDcwLCA3MCwgNzAsDQorICAgIDcxLCA3MSwgNzEsIDcyLCA3MiwgNzIsIDcyLCA3MywgNzMsIDczLCA3MywgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NSwgNzUsIDc1LCA3NSwgNzUsIDc2LCA3NiwgNzYsIDc2LA0KKyAgICA3NiwgNzYsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDgwLA0KKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODENCit9Ow0KK3N0YXRpYyB2b2lkIF9BZGp1c3RfYWxwaGEoaW50IGJhY2tncm91bmQsIGludCBmb3JlZ3JvdW5kLCBpbnQmIHNyY19hbHBoYSwgaW50IHRleHRfZmxhZ3MsIGludCBhKQ0KK3sNCit9DQorc3RhdGljIGNvbnN0IEZYX0JZVEUgZ19UZXh0R2FtbWFBZGp1c3RbMjU2XSA9IHsNCisgICAgMCwgMiwgMywgNCwgNiwgNywgOCwgMTAsIDExLCAxMiwgMTMsIDE1LCAxNiwgMTcsIDE4LCAxOSwNCisgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzgsDQorICAgIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTEsIDUyLCA1MywgNTQsIDU1LA0KKyAgICA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcxLCA3MiwNCisgICAgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsDQorICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCAxMDQsDQorICAgIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwNCisgICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LA0KKyAgICAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsDQorICAgIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwNCisgICAgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLA0KKyAgICAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsDQorICAgIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDIxMSwNCisgICAgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE3LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDIyNSwgMjI2LA0KKyAgICAyMjcsIDIyOCwgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywgMjM0LCAyMzUsIDIzNiwgMjM3LCAyMzgsIDIzOSwgMjM5LCAyNDAsDQorICAgIDI0MSwgMjQyLCAyNDMsIDI0NCwgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NSwNCit9Ow0KKyNkZWZpbmUgQURKVVNUX0FMUEhBKGJhY2tncm91bmQsIGZvcmVncm91bmQsIHNyY19hbHBoYSwgdGV4dF9mbGFncywgYSkgXA0KKyAgICBzcmNfYWxwaGEgPSBnX1RleHRHYW1tYUFkanVzdFsoRlhfQllURSlzcmNfYWxwaGFdOw0KK3ZvaWQgX0NvbG9yMkFyZ2IoRlhfQVJHQiYgYXJnYiwgRlhfRFdPUkQgY29sb3IsIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgaWYgKHBJY2NUcmFuc2Zvcm0gPT0gTlVMTCAmJiAhRlhHRVRGTEFHX0NPTE9SVFlQRShhbHBoYV9mbGFnKSkgew0KKyAgICAgICAgYXJnYiA9IGNvbG9yOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmICghQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKSB8fCAhQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Q29kZWNNb2R1bGUoKS0+R2V0SWNjTW9kdWxlKCkpIHsNCisgICAgICAgIHBJY2NUcmFuc2Zvcm0gPSBOVUxMOw0KKyAgICB9DQorICAgIEZYX0JZVEUgYmdyYVs0XTsNCisgICAgaWYgKHBJY2NUcmFuc2Zvcm0pIHsNCisgICAgICAgIElDb2RlY19JY2NNb2R1bGUqIHBJY2NNb2R1bGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKTsNCisgICAgICAgIGNvbG9yID0gRlhHRVRGTEFHX0NPTE9SVFlQRShhbHBoYV9mbGFnKSA/IEZYQ01ZS19UT0RJQihjb2xvcikgOiBGWEFSR0JfVE9ESUIoY29sb3IpOw0KKyAgICAgICAgcEljY01vZHVsZS0+VHJhbnNsYXRlU2NhbmxpbmUocEljY1RyYW5zZm9ybSwgYmdyYSwgKEZYX0xQQ0JZVEUpJmNvbG9yLCAxKTsNCisgICAgICAgIGJncmFbM10gPSBGWEdFVEZMQUdfQ09MT1JUWVBFKGFscGhhX2ZsYWcpID8NCisgICAgICAgICAgICAgICAgICAoYWxwaGFfZmxhZyA+PiAyNCkgPyBGWEdFVEZMQUdfQUxQSEFfRklMTChhbHBoYV9mbGFnKSA6IEZYR0VURkxBR19BTFBIQV9TVFJPS0UoYWxwaGFfZmxhZykgOg0KKyAgICAgICAgICAgICAgICAgIEZYQVJHQl9BKGNvbG9yKTsNCisgICAgICAgIGFyZ2IgPSBGWEFSR0JfTUFLRShiZ3JhWzNdLCBiZ3JhWzJdLCBiZ3JhWzFdLCBiZ3JhWzBdKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBBZG9iZUNNWUtfdG9fc1JHQjEoRlhTWVNfR2V0Q1ZhbHVlKGNvbG9yKSwgRlhTWVNfR2V0TVZhbHVlKGNvbG9yKSwNCisgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX0dldFlWYWx1ZShjb2xvciksIEZYU1lTX0dldEtWYWx1ZShjb2xvciksDQorICAgICAgICAgICAgICAgICAgICAgICBiZ3JhWzJdLCBiZ3JhWzFdLCBiZ3JhWzBdKTsNCisgICAgYmdyYVszXSA9IChhbHBoYV9mbGFnID4+IDI0KSA/IEZYR0VURkxBR19BTFBIQV9GSUxMKGFscGhhX2ZsYWcpIDogRlhHRVRGTEFHX0FMUEhBX1NUUk9LRShhbHBoYV9mbGFnKTsNCisgICAgYXJnYiA9IEZYQVJHQl9NQUtFKGJncmFbM10sIGJncmFbMl0sIGJncmFbMV0sIGJncmFbMF0pOw0KK30NCitGWF9CT09MIENGWF9SZW5kZXJEZXZpY2U6OkRyYXdOb3JtYWxUZXh0KGludCBuQ2hhcnMsIGNvbnN0IEZYVEVYVF9DSEFSUE9TKiBwQ2hhclBvcywNCisgICAgICAgIENGWF9Gb250KiBwRm9udCwgQ0ZYX0ZvbnRDYWNoZSogcENhY2hlLA0KKyAgICAgICAgRlhfRkxPQVQgZm9udF9zaXplLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVGV4dDJEZXZpY2UsDQorICAgICAgICBGWF9EV09SRCBmaWxsX2NvbG9yLCBGWF9EV09SRCB0ZXh0X2ZsYWdzLA0KKyAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBpbnQgbmF0aXZldGV4dF9mbGFncyA9IHRleHRfZmxhZ3M7DQorICAgIGlmIChtX0RldmljZUNsYXNzICE9IEZYRENfRElTUExBWSkgew0KKyAgICAgICAgaWYgKCEodGV4dF9mbGFncyAmIEZYVEVYVF9QUklOVEdSQVBISUNURVhUKSkgew0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgICAgICAgICBpZiAoISh0ZXh0X2ZsYWdzICYgRlhGT05UX0NJREZPTlQpICYmIHBGb250LT5HZXRQc05hbWUoKS5GaW5kKENGWF9XaWRlU3RyaW5nOjpGcm9tTG9jYWwoIitaSkhMIikpID09IC0xKQ0KKyNpZmRlZiBGT1hJVF9DSFJPTUVfQlVJTEQNCisgICAgICAgICAgICAgICAgaWYgKHBGb250LT5HZXRQc05hbWUoKSAhPSBDRlhfV2lkZVN0cmluZzo6RnJvbUxvY2FsKCJDTkFBSkkrY21leDEwIikpDQorI2VuZGlmDQorI2VuZGlmDQorICAgICAgICAgICAgICAgICAgICBpZiAobV9wRGV2aWNlRHJpdmVyLT5EcmF3RGV2aWNlVGV4dChuQ2hhcnMsIHBDaGFyUG9zLCBwRm9udCwgcENhY2hlLCBwVGV4dDJEZXZpY2UsIGZvbnRfc2l6ZSwgZmlsbF9jb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGludCBhbHBoYSA9IEZYR0VURkxBR19DT0xPUlRZUEUoYWxwaGFfZmxhZykgPyBGWEdFVEZMQUdfQUxQSEFfRklMTChhbHBoYV9mbGFnKSA6IEZYQVJHQl9BKGZpbGxfY29sb3IpOw0KKyAgICAgICAgaWYgKGFscGhhIDwgMjU1KSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2UgaWYgKCEodGV4dF9mbGFncyAmIEZYVEVYVF9OT19OQVRJVkVURVhUKSkgew0KKyNpZiBfRlhNX1BMQVRGT1JNXyAgPT0gX0ZYTV9QTEFURk9STV9BUFBMRV8NCisgICAgICAgIGlmICghKHRleHRfZmxhZ3MgJiBGWEZPTlRfQ0lERk9OVCkpDQorI2lmZGVmIEZPWElUX0NIUk9NRV9CVUlMRA0KKyAgICAgICAgICAgIGlmIChwRm9udC0+R2V0UHNOYW1lKCkgIT0gQ0ZYX1dpZGVTdHJpbmc6OkZyb21Mb2NhbCgiQ05BQUpJK2NtZXgxMCIpKQ0KKyNlbmRpZg0KKyNlbmRpZg0KKyAgICAgICAgICAgICAgICBpZiAobV9wRGV2aWNlRHJpdmVyLT5EcmF3RGV2aWNlVGV4dChuQ2hhcnMsIHBDaGFyUG9zLCBwRm9udCwgcENhY2hlLCBwVGV4dDJEZXZpY2UsIGZvbnRfc2l6ZSwgZmlsbF9jb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSkpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgICAgICAgICB9DQorICAgIH0NCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBjaGFyMmRldmljZSwgZGV2aWNlQ3RtLCB0ZXh0MkRldmljZTsNCisgICAgaWYgKHBUZXh0MkRldmljZSkgew0KKyAgICAgICAgY2hhcjJkZXZpY2UgPSAqcFRleHQyRGV2aWNlOw0KKyAgICAgICAgdGV4dDJEZXZpY2UgPSAqcFRleHQyRGV2aWNlOw0KKyAgICB9DQorICAgIGNoYXIyZGV2aWNlLlNjYWxlKGZvbnRfc2l6ZSwgLWZvbnRfc2l6ZSk7DQorICAgIGlmIChGWFNZU19mYWJzKGNoYXIyZGV2aWNlLmEpICsgRlhTWVNfZmFicyhjaGFyMmRldmljZS5iKSA+IDUwICogMS4wZiB8fA0KKyAgICAgICAgICAgICgobV9EZXZpY2VDbGFzcyA9PSBGWERDX1BSSU5URVIgJiYgIW1fcERldmljZURyaXZlci0+SXNQU1ByaW50RHJpdmVyKCkpDQorICAgICAgICAgICAgICYmICEodGV4dF9mbGFncyAmIEZYVEVYVF9QUklOVElNQUdFVEVYVCkpKSB7DQorICAgICAgICBpZiAocEZvbnQtPkdldEZhY2UoKSAhPSBOVUxMIHx8IChwRm9udC0+R2V0U3Vic3RGb250KCktPm1fU3Vic3RGbGFncyAmIEZYRk9OVF9TVUJTVF9HTFlQSFBBVEgpKSB7DQorICAgICAgICAgICAgaW50IG5QYXRoRmxhZ3MgPSAodGV4dF9mbGFncyAmIEZYVEVYVF9OT1NNT09USCkgPT0gMCA/IDAgOiBGWEZJTExfTk9QQVRIU01PT1RIOw0KKyAgICAgICAgICAgIHJldHVybiBEcmF3VGV4dFBhdGgobkNoYXJzLCBwQ2hhclBvcywgcEZvbnQsIHBDYWNoZSwgZm9udF9zaXplLCBwVGV4dDJEZXZpY2UsIE5VTEwsIE5VTEwsIGZpbGxfY29sb3IsIDAsIE5VTEwsIG5QYXRoRmxhZ3MsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGludCBhbnRpX2FsaWFzID0gRlhGVF9SRU5ERVJfTU9ERV9NT05POw0KKyAgICBGWF9CT09MIGJOb3JtYWwgPSBGQUxTRTsNCisgICAgaWYgKCh0ZXh0X2ZsYWdzICYgRlhURVhUX05PU01PT1RIKSA9PSAwKSB7DQorICAgICAgICBpZiAobV9EZXZpY2VDbGFzcyA9PSBGWERDX0RJU1BMQVkgJiYgbV9icHAgPiAxKSB7DQorICAgICAgICAgICAgRlhfQk9PTCBiQ2xlYXJUeXBlOw0KKyAgICAgICAgICAgIGlmIChwRm9udC0+R2V0RmFjZSgpID09IE5VTEwgJiYgIShwRm9udC0+R2V0U3Vic3RGb250KCktPm1fU3Vic3RGbGFncyAmIEZYRk9OVF9TVUJTVF9DTEVBUlRZUEUpKSB7DQorICAgICAgICAgICAgICAgIGJDbGVhclR5cGUgPSBGQUxTRTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBiQ2xlYXJUeXBlID0gdGV4dF9mbGFncyAmIEZYVEVYVF9DTEVBUlRZUEU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICgobV9SZW5kZXJDYXBzICYgKEZYUkNfQUxQSEFfT1VUUFVUIHwgRlhSQ19DTVlLX09VVFBVVCkpKSB7DQorICAgICAgICAgICAgICAgIGFudGlfYWxpYXMgPSBGWEZUX1JFTkRFUl9NT0RFX0xDRDsNCisgICAgICAgICAgICAgICAgYk5vcm1hbCA9IFRSVUU7DQorICAgICAgICAgICAgfSBlbHNlIGlmIChtX2JwcCA8IDE2KSB7DQorICAgICAgICAgICAgICAgIGFudGlfYWxpYXMgPSBGWEZUX1JFTkRFUl9NT0RFX05PUk1BTDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBpZiAoYkNsZWFyVHlwZSA9PSBGQUxTRSkgew0KKyAgICAgICAgICAgICAgICAgICAgYW50aV9hbGlhcyA9IEZYRlRfUkVOREVSX01PREVfTENEOw0KKyAgICAgICAgICAgICAgICAgICAgYk5vcm1hbCA9IFRSVUU7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBhbnRpX2FsaWFzID0gRlhGVF9SRU5ERVJfTU9ERV9MQ0Q7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKHBDYWNoZSA9PSBOVUxMKSB7DQorICAgICAgICBwQ2FjaGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRGb250Q2FjaGUoKTsNCisgICAgfQ0KKyAgICBDRlhfRmFjZUNhY2hlKiBwRmFjZUNhY2hlID0gcENhY2hlLT5HZXRDYWNoZWRGYWNlKHBGb250KTsNCisgICAgRlhfRk9OVENBQ0hFX0RFRklORShwQ2FjaGUsIHBGb250KTsNCisgICAgRlhURVhUX0dMWVBIUE9TKiBwR2x5cGhBbmRQb3MgPSBGWF9BbGxvYyhGWFRFWFRfR0xZUEhQT1MsIG5DaGFycyk7DQorICAgIGlmICghcEdseXBoQW5kUG9zKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IGlDaGFyOw0KKyAgICBkZXZpY2VDdG0gPSBjaGFyMmRldmljZTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXhDVE0gPSBHZXRDVE0oKTsNCisgICAgRlhfRkxPQVQgc2NhbGVfeCA9IEZYU1lTX2ZhYnMobWF0cml4Q1RNLmEpOw0KKyAgICBGWF9GTE9BVCBzY2FsZV95ID0gRlhTWVNfZmFicyhtYXRyaXhDVE0uZCk7DQorICAgIGRldmljZUN0bS5Db25jYXQoc2NhbGVfeCwgMCwgMCwgc2NhbGVfeSwgMCwgMCk7DQorICAgIHRleHQyRGV2aWNlLkNvbmNhdChzY2FsZV94LCAwLCAwLCBzY2FsZV95LCAwLCAwKTsNCisgICAgZm9yIChpQ2hhciA9IDA7IGlDaGFyIDwgbkNoYXJzOyBpQ2hhciArKykgew0KKyAgICAgICAgRlhURVhUX0dMWVBIUE9TJiBnbHlwaCA9IHBHbHlwaEFuZFBvc1tpQ2hhcl07DQorICAgICAgICBjb25zdCBGWFRFWFRfQ0hBUlBPUyYgY2hhcnBvcyA9IHBDaGFyUG9zW2lDaGFyXTsNCisgICAgICAgIGdseXBoLm1fZk9yaWdpblggPSBjaGFycG9zLm1fT3JpZ2luWDsNCisgICAgICAgIGdseXBoLm1fZk9yaWdpblkgPSBjaGFycG9zLm1fT3JpZ2luWTsNCisgICAgICAgIHRleHQyRGV2aWNlLlRyYW5zZm9ybShnbHlwaC5tX2ZPcmlnaW5YLCBnbHlwaC5tX2ZPcmlnaW5ZKTsNCisgICAgICAgIGlmIChhbnRpX2FsaWFzIDwgRlhGVF9SRU5ERVJfTU9ERV9MQ0QpIHsNCisgICAgICAgICAgICBnbHlwaC5tX09yaWdpblggPSBGWFNZU19yb3VuZChnbHlwaC5tX2ZPcmlnaW5YKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZ2x5cGgubV9PcmlnaW5YID0gKGludClGWFNZU19mbG9vcihnbHlwaC5tX2ZPcmlnaW5YKTsNCisgICAgICAgIH0NCisgICAgICAgIGdseXBoLm1fT3JpZ2luWSA9IEZYU1lTX3JvdW5kKGdseXBoLm1fZk9yaWdpblkpOw0KKyAgICAgICAgaWYgKGNoYXJwb3MubV9iR2x5cGhBZGp1c3QpIHsNCisgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG5ld19tYXRyaXgoY2hhcnBvcy5tX0FkanVzdE1hdHJpeFswXSwgY2hhcnBvcy5tX0FkanVzdE1hdHJpeFsxXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnBvcy5tX0FkanVzdE1hdHJpeFsyXSwgY2hhcnBvcy5tX0FkanVzdE1hdHJpeFszXSwgMCwgMCk7DQorICAgICAgICAgICAgbmV3X21hdHJpeC5Db25jYXQoZGV2aWNlQ3RtKTsNCisgICAgICAgICAgICBnbHlwaC5tX3BHbHlwaCA9IHBGYWNlQ2FjaGUtPkxvYWRHbHlwaEJpdG1hcChwRm9udCwgY2hhcnBvcy5tX0dseXBoSW5kZXgsIGNoYXJwb3MubV9iRm9udFN0eWxlLCAmbmV3X21hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJwb3MubV9Gb250Q2hhcldpZHRoLCBhbnRpX2FsaWFzLCBuYXRpdmV0ZXh0X2ZsYWdzKTsNCisgICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgIGdseXBoLm1fcEdseXBoID0gcEZhY2VDYWNoZS0+TG9hZEdseXBoQml0bWFwKHBGb250LCBjaGFycG9zLm1fR2x5cGhJbmRleCwgY2hhcnBvcy5tX2JGb250U3R5bGUsICZkZXZpY2VDdG0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFycG9zLm1fRm9udENoYXJXaWR0aCwgYW50aV9hbGlhcywgbmF0aXZldGV4dF9mbGFncyk7DQorICAgIH0NCisgICAgaWYgKGFudGlfYWxpYXMgPCBGWEZUX1JFTkRFUl9NT0RFX0xDRCAmJiBuQ2hhcnMgPiAxKSB7DQorICAgICAgICBfQWRqdXN0R2x5cGhTcGFjZShwR2x5cGhBbmRQb3MsIG5DaGFycyk7DQorICAgIH0NCisgICAgRlhfUkVDVCBibXBfcmVjdDEgPSBGWEdFX0dldEdseXBoc0JCb3gocEdseXBoQW5kUG9zLCBuQ2hhcnMsIGFudGlfYWxpYXMpOw0KKyAgICBpZiAoc2NhbGVfeCA+IDEgJiYgc2NhbGVfeSA+IDEpIHsNCisgICAgICAgIGJtcF9yZWN0MS5sZWZ0LS07DQorICAgICAgICBibXBfcmVjdDEudG9wIC0tOw0KKyAgICAgICAgYm1wX3JlY3QxLnJpZ2h0ICsrOw0KKyAgICAgICAgYm1wX3JlY3QxLmJvdHRvbSArKzsNCisgICAgfQ0KKyAgICBGWF9SRUNUIGJtcF9yZWN0KEZYU1lTX3JvdW5kKChGWF9GTE9BVCkoYm1wX3JlY3QxLmxlZnQpIC8gc2NhbGVfeCksIEZYU1lTX3JvdW5kKChGWF9GTE9BVCkoYm1wX3JlY3QxLnRvcCkgLyBzY2FsZV95KSwNCisgICAgICAgICAgICAgICAgICAgICBGWFNZU19yb3VuZCgoRlhfRkxPQVQpYm1wX3JlY3QxLnJpZ2h0IC8gc2NhbGVfeCksIEZYU1lTX3JvdW5kKChGWF9GTE9BVClibXBfcmVjdDEuYm90dG9tIC8gc2NhbGVfeSkpOw0KKyAgICBibXBfcmVjdC5JbnRlcnNlY3QobV9DbGlwQm94KTsNCisgICAgaWYgKGJtcF9yZWN0LklzRW1wdHkoKSkgew0KKyAgICAgICAgRlhfRnJlZShwR2x5cGhBbmRQb3MpOw0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaW50IHBpeGVsX3dpZHRoID0gRlhTWVNfcm91bmQoYm1wX3JlY3QuV2lkdGgoKSAqIHNjYWxlX3gpOw0KKyAgICBpbnQgcGl4ZWxfaGVpZ2h0ID0gRlhTWVNfcm91bmQoYm1wX3JlY3QuSGVpZ2h0KCkgKiBzY2FsZV95KTsNCisgICAgaW50IHBpeGVsX2xlZnQgPSBGWFNZU19yb3VuZChibXBfcmVjdC5sZWZ0ICogc2NhbGVfeCk7DQorICAgIGludCBwaXhlbF90b3AgPSBGWFNZU19yb3VuZChibXBfcmVjdC50b3AgKiBzY2FsZV95KTsNCisgICAgaWYgKGFudGlfYWxpYXMgPT0gRlhGVF9SRU5ERVJfTU9ERV9NT05PKSB7DQorICAgICAgICBDRlhfRElCaXRtYXAgYml0bWFwOw0KKyAgICAgICAgaWYgKCFiaXRtYXAuQ3JlYXRlKHBpeGVsX3dpZHRoLCBwaXhlbF9oZWlnaHQsIEZYRElCXzFicHBNYXNrKSkgew0KKyAgICAgICAgICAgIEZYX0ZyZWUocEdseXBoQW5kUG9zKTsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBiaXRtYXAuQ2xlYXIoMCk7DQorICAgICAgICBmb3IgKGlDaGFyID0gMDsgaUNoYXIgPCBuQ2hhcnM7IGlDaGFyICsrKSB7DQorICAgICAgICAgICAgRlhURVhUX0dMWVBIUE9TJiBnbHlwaCA9IHBHbHlwaEFuZFBvc1tpQ2hhcl07DQorICAgICAgICAgICAgaWYgKGdseXBoLm1fcEdseXBoID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGNvbnN0IENGWF9ESUJpdG1hcCogcEdseXBoID0gJmdseXBoLm1fcEdseXBoLT5tX0JpdG1hcDsNCisgICAgICAgICAgICBiaXRtYXAuVHJhbnNmZXJCaXRtYXAoZ2x5cGgubV9PcmlnaW5YICsgZ2x5cGgubV9wR2x5cGgtPm1fTGVmdCAtIHBpeGVsX2xlZnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoLm1fT3JpZ2luWSAtIGdseXBoLm1fcEdseXBoLT5tX1RvcCAtIHBpeGVsX3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEdseXBoLT5HZXRXaWR0aCgpLCBwR2x5cGgtPkdldEhlaWdodCgpLCBwR2x5cGgsIDAsIDApOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRnJlZShwR2x5cGhBbmRQb3MpOw0KKyAgICAgICAgcmV0dXJuIFNldEJpdE1hc2soJmJpdG1hcCwgYm1wX3JlY3QubGVmdCwgYm1wX3JlY3QudG9wLCBmaWxsX2NvbG9yKTsNCisgICAgfQ0KKyAgICBDRlhfRElCaXRtYXAgYml0bWFwOw0KKyAgICBpZiAobV9icHAgPT0gOCkgew0KKyAgICAgICAgaWYgKCFiaXRtYXAuQ3JlYXRlKHBpeGVsX3dpZHRoLCBwaXhlbF9oZWlnaHQsIEZYRElCXzhicHBNYXNrKSkgew0KKyAgICAgICAgICAgIEZYX0ZyZWUocEdseXBoQW5kUG9zKTsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAoIUNyZWF0ZUNvbXBhdGlibGVCaXRtYXAoJmJpdG1hcCwgcGl4ZWxfd2lkdGgsIHBpeGVsX2hlaWdodCkpIHsNCisgICAgICAgICAgICBGWF9GcmVlKHBHbHlwaEFuZFBvcyk7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmICghYml0bWFwLkhhc0FscGhhKCkgJiYgIWJpdG1hcC5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICBiaXRtYXAuQ2xlYXIoMHhGRkZGRkZGRik7DQorICAgICAgICBpZiAoIUdldERJQml0cygmYml0bWFwLCBibXBfcmVjdC5sZWZ0LCBibXBfcmVjdC50b3ApKSB7DQorICAgICAgICAgICAgRlhfRnJlZShwR2x5cGhBbmRQb3MpOw0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIGJpdG1hcC5DbGVhcigwKTsNCisgICAgICAgIGlmIChiaXRtYXAubV9wQWxwaGFNYXNrKSB7DQorICAgICAgICAgICAgYml0bWFwLm1fcEFscGhhTWFzay0+Q2xlYXIoMCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IGRlc3Rfd2lkdGggPSBwaXhlbF93aWR0aDsNCisgICAgRlhfTFBCWVRFIGRlc3RfYnVmID0gYml0bWFwLkdldEJ1ZmZlcigpOw0KKyAgICBpbnQgZGVzdF9waXRjaCA9IGJpdG1hcC5HZXRQaXRjaCgpOw0KKyAgICBpbnQgQnBwID0gYml0bWFwLkdldEJQUCgpIC8gODsNCisgICAgaW50IGEsIHIsIGcsIGI7DQorICAgIGlmIChhbnRpX2FsaWFzID09IEZYRlRfUkVOREVSX01PREVfTENEKSB7DQorICAgICAgICBfQ29sb3IyQXJnYihmaWxsX2NvbG9yLCBmaWxsX2NvbG9yLCBhbHBoYV9mbGFnIHwgKDEgPDwgMjQpLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgIEFyZ2JEZWNvZGUoZmlsbF9jb2xvciwgYSwgciwgZywgYik7DQorICAgICAgICByID0gRlhfR0FNTUEocik7DQorICAgICAgICBnID0gRlhfR0FNTUEoZyk7DQorICAgICAgICBiID0gRlhfR0FNTUEoYik7DQorICAgIH0NCisgICAgZm9yIChpQ2hhciA9IDA7IGlDaGFyIDwgbkNoYXJzOyBpQ2hhciArKykgew0KKyAgICAgICAgRlhURVhUX0dMWVBIUE9TJiBnbHlwaCA9IHBHbHlwaEFuZFBvc1tpQ2hhcl07DQorICAgICAgICBpZiAoZ2x5cGgubV9wR2x5cGggPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY29uc3QgQ0ZYX0RJQml0bWFwKiBwR2x5cGggPSAmZ2x5cGgubV9wR2x5cGgtPm1fQml0bWFwOw0KKyAgICAgICAgaW50IGxlZnQgPSBnbHlwaC5tX09yaWdpblggKyBnbHlwaC5tX3BHbHlwaC0+bV9MZWZ0IC0gcGl4ZWxfbGVmdDsNCisgICAgICAgIGludCB0b3AgPSBnbHlwaC5tX09yaWdpblkgLSBnbHlwaC5tX3BHbHlwaC0+bV9Ub3AgLSBwaXhlbF90b3A7DQorICAgICAgICBpbnQgbmNvbHMgPSBwR2x5cGgtPkdldFdpZHRoKCk7DQorICAgICAgICBpbnQgbnJvd3MgPSBwR2x5cGgtPkdldEhlaWdodCgpOw0KKyAgICAgICAgaWYgKGFudGlfYWxpYXMgPT0gRlhGVF9SRU5ERVJfTU9ERV9OT1JNQUwpIHsNCisgICAgICAgICAgICBpZiAoIWJpdG1hcC5Db21wb3NpdGVNYXNrKGxlZnQsIHRvcCwgbmNvbHMsIG5yb3dzLCBwR2x5cGgsIGZpbGxfY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBGWERJQl9CTEVORF9OT1JNQUwsIE5VTEwsIEZBTFNFLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKSkgew0KKyAgICAgICAgICAgICAgICBGWF9GcmVlKHBHbHlwaEFuZFBvcyk7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBGWF9CT09MIGJCR1JTdHJpcGUgPSB0ZXh0X2ZsYWdzICYgRlhURVhUX0JHUl9TVFJJUEU7DQorICAgICAgICBuY29scyAvPSAzOw0KKyAgICAgICAgaW50IHhfc3VicGl4ZWwgPSAoaW50KShnbHlwaC5tX2ZPcmlnaW5YICogMykgJSAzOw0KKyAgICAgICAgRlhfTFBCWVRFIHNyY19idWYgPSBwR2x5cGgtPkdldEJ1ZmZlcigpOw0KKyAgICAgICAgaW50IHNyY19waXRjaCA9IHBHbHlwaC0+R2V0UGl0Y2goKTsNCisgICAgICAgIGludCBzdGFydF9jb2wgPSBsZWZ0Ow0KKyAgICAgICAgaWYgKHN0YXJ0X2NvbCA8IDApIHsNCisgICAgICAgICAgICBzdGFydF9jb2wgPSAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IGVuZF9jb2wgPSBsZWZ0ICsgbmNvbHM7DQorICAgICAgICBpZiAoZW5kX2NvbCA+IGRlc3Rfd2lkdGgpIHsNCisgICAgICAgICAgICBlbmRfY29sID0gZGVzdF93aWR0aDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChzdGFydF9jb2wgPj0gZW5kX2NvbCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKGJpdG1hcC5HZXRGb3JtYXQoKSA9PSBGWERJQl9BcmdiKSB7DQorICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbnJvd3M7IHJvdyArKykgew0KKyAgICAgICAgICAgICAgICBpbnQgZGVzdF9yb3cgPSByb3cgKyB0b3A7DQorICAgICAgICAgICAgICAgIGlmIChkZXN0X3JvdyA8IDAgfHwgZGVzdF9yb3cgPj0gYml0bWFwLkdldEhlaWdodCgpKSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBGWF9MUEJZVEUgc3JjX3NjYW4gPSBzcmNfYnVmICsgcm93ICogc3JjX3BpdGNoICsgKHN0YXJ0X2NvbCAtIGxlZnQpICogMzsNCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgZGVzdF9yb3cgKiBkZXN0X3BpdGNoICsgKHN0YXJ0X2NvbCA8PCAyKTsNCisgICAgICAgICAgICAgICAgaWYgKGJCR1JTdHJpcGUpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmICh4X3N1YnBpeGVsID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBzdGFydF9jb2w7IGNvbCA8IGVuZF9jb2w7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gc3JjX3NjYW5bMl07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzJdKSwgciwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHhfc3VicGl4ZWwgPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblsxXTsNCisgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzFdLCBnLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRfY29sID4gbGVmdCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblstMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMF0sIGIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IHN0YXJ0X2NvbCArIDE7IGNvbCA8IGVuZF9jb2wgLSAxOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IHNyY19zY2FuWzFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsxXSwgZywgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bLTFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzBdLCBiLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblswXSksIGIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IHNyY19zY2FuWzBdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMl0sIHIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydF9jb2wgPiBsZWZ0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWy0xXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsxXSwgZywgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bLTJdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzBdLCBiLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblswXSksIGIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBzdGFydF9jb2wgKyAxOyBjb2wgPCBlbmRfY29sIC0gMTsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bLTFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzFdLCBnLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblstMl07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMF0sIGIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHhfc3VicGl4ZWwgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IHN0YXJ0X2NvbDsgY29sIDwgZW5kX2NvbDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiTm9ybWFsKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhMSA9IChzcmNfc2NhblswXSArIHNyY19zY2FuWzFdICsgc3JjX3NjYW5bMl0pIC8gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMl0sIHIsIHNyY19hbHBoYTEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhMSA9IHNyY19hbHBoYTEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gZGVzdF9zY2FuWzNdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYQVJHQl9TRVRESUIoZGVzdF9zY2FuLCBGWEFSR0JfTUFLRShzcmNfYWxwaGExLCByLCBnLCBiKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmNfYWxwaGExID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYTEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhMSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGExICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzJdKSwgciwgYWxwaGFfcmF0aW8pKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzFdKSwgZywgYWxwaGFfcmF0aW8pKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgYWxwaGFfcmF0aW8pKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMV0sIGcsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzFdKSwgZywgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzJdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzBdLCBiLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblswXSksIGIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeF9zdWJwaXhlbCA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJOb3JtYWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYTEgPSBzdGFydF9jb2wgPiBsZWZ0ID8gKChzcmNfc2NhblstMV0gKyBzcmNfc2NhblswXSArIHNyY19zY2FuWzFdKSAvIDMpIDogKChzcmNfc2NhblswXSArIHNyY19zY2FuWzFdKSAvIDMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGExLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhMSA9IHNyY19hbHBoYTEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhMSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGJhY2tfYWxwaGEgPSBkZXN0X3NjYW5bM107DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFja19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKHNyY19hbHBoYTEsIHIsIGcsIGIpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSBkZXN0X2FscGhhID0gYmFja19hbHBoYSArIHNyY19hbHBoYTEgLSBiYWNrX2FscGhhICogc3JjX2FscGhhMSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYTEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzJdKSwgciwgYWxwaGFfcmF0aW8pKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIGFscGhhX3JhdGlvKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBhbHBoYV9yYXRpbykpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0X2NvbCA+IGxlZnQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblstMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzJdKSwgciwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IHNyY19zY2FuWzBdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzFdLCBnLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblsxXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblswXSwgYiwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gc3RhcnRfY29sICsgMTsgY29sIDwgZW5kX2NvbDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiTm9ybWFsKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhMSA9IChzcmNfc2NhblstMV0gKyBzcmNfc2NhblswXSArIHNyY19zY2FuWzFdKSAvIDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGExLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYTEgPSBzcmNfYWxwaGExICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgYmFja19hbHBoYSA9IGRlc3Rfc2NhblszXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYWNrX2FscGhhID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWEFSR0JfU0VURElCKGRlc3Rfc2NhbiwgRlhBUkdCX01BS0Uoc3JjX2FscGhhMSwgciwgZywgYikpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhMSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGExIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYTEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bM10gPSBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX3JhdGlvID0gc3JjX2FscGhhMSAqIDI1NSAvIGRlc3RfYWxwaGE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIGFscGhhX3JhdGlvKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIGFscGhhX3JhdGlvKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblswXSksIGIsIGFscGhhX3JhdGlvKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gc3JjX3NjYW5bLTFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsxXSwgZywgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMF0sIGIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYk5vcm1hbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhMSA9IHN0YXJ0X2NvbCA+IGxlZnQgPyAoKHNyY19zY2FuWy0yXSArIHNyY19zY2FuWy0xXSArIHNyY19zY2FuWzBdKSAvIDMpIDogKChzcmNfc2NhblswXSkgLyAzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhMSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYTEgPSBzcmNfYWxwaGExICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYTEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfQllURSBiYWNrX2FscGhhID0gZGVzdF9zY2FuWzNdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2tfYWxwaGEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYQVJHQl9TRVRESUIoZGVzdF9zY2FuLCBGWEFSR0JfTUFLRShzcmNfYWxwaGExLCByLCBnLCBiKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0JZVEUgZGVzdF9hbHBoYSA9IGJhY2tfYWxwaGEgKyBzcmNfYWxwaGExIC0gYmFja19hbHBoYSAqIHNyY19hbHBoYTEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfcmF0aW8gPSBzcmNfYWxwaGExICogMjU1IC8gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIGFscGhhX3JhdGlvKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBhbHBoYV9yYXRpbykpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgYWxwaGFfcmF0aW8pKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydF9jb2wgPiBsZWZ0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gc3JjX3NjYW5bLTJdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bLTFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsxXSwgZywgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblswXSwgYiwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gc3RhcnRfY29sICsgMTsgY29sIDwgZW5kX2NvbDsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiTm9ybWFsKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhMSA9IChzcmNfc2NhblstMl0gKyBzcmNfc2NhblstMV0gKyBzcmNfc2NhblswXSkgLyAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhMSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGExID0gc3JjX2FscGhhMSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGJhY2tfYWxwaGEgPSBkZXN0X3NjYW5bM107DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFja19hbHBoYSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhBUkdCX1NFVERJQihkZXN0X3NjYW4sIEZYQVJHQl9NQUtFKHNyY19hbHBoYTEsIHIsIGcsIGIpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYTEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9CWVRFIGRlc3RfYWxwaGEgPSBiYWNrX2FscGhhICsgc3JjX2FscGhhMSAtIGJhY2tfYWxwaGEgKiBzcmNfYWxwaGExIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gZGVzdF9hbHBoYTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9yYXRpbyA9IHNyY19hbHBoYTEgKiAyNTUgLyBkZXN0X2FscGhhOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBhbHBoYV9yYXRpbykpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBhbHBoYV9yYXRpbykpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBhbHBoYV9yYXRpbykpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IDQ7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IHNyY19zY2FuWy0yXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bLTFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzFdLCBnLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblswXSwgYiwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzNdID0gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gNDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG5yb3dzOyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgaW50IGRlc3Rfcm93ID0gcm93ICsgdG9wOw0KKyAgICAgICAgICAgICAgICBpZiAoZGVzdF9yb3cgPCAwIHx8IGRlc3Rfcm93ID49IGJpdG1hcC5HZXRIZWlnaHQoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgRlhfTFBCWVRFIHNyY19zY2FuID0gc3JjX2J1ZiArIHJvdyAqIHNyY19waXRjaCArIChzdGFydF9jb2wgLSBsZWZ0KSAqIDM7DQorICAgICAgICAgICAgICAgIEZYX0xQQllURSBkZXN0X3NjYW4gPSBkZXN0X2J1ZiArIGRlc3Rfcm93ICogZGVzdF9waXRjaCArIHN0YXJ0X2NvbCAqIEJwcDsNCisgICAgICAgICAgICAgICAgaWYgKGJCR1JTdHJpcGUpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmICh4X3N1YnBpeGVsID09IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBzdGFydF9jb2w7IGNvbCA8IGVuZF9jb2w7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gc3JjX3NjYW5bMl07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMl0sIHIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzJdKSwgciwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzFdLCBnLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblswXSwgYiwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHhfc3VicGl4ZWwgPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblsxXTsNCisgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzFdLCBnLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRfY29sID4gbGVmdCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblstMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMF0sIGIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHA7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSBzdGFydF9jb2wgKyAxOyBjb2wgPCBlbmRfY29sIC0gMTsgY29sICsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblsxXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bMF07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMV0sIGcsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzFdKSwgZywgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWy0xXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblswXSwgYiwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRfY29sID4gbGVmdCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblstMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMV0sIGcsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzFdKSwgZywgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWy0yXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblswXSwgYiwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IHN0YXJ0X2NvbCArIDE7IGNvbCA8IGVuZF9jb2wgLSAxOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IHNyY19zY2FuWzBdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblstMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMV0sIGcsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzFdKSwgZywgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWy0yXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblswXSwgYiwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoeF9zdWJwaXhlbCA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gc3RhcnRfY29sOyBjb2wgPCBlbmRfY29sOyBjb2wgKyspIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJOb3JtYWwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGExID0gKHNyY19zY2FuWzBdICsgc3JjX3NjYW5bMV0gKyBzcmNfc2NhblsyXSkgLyAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhMSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGExID0gc3JjX2FscGhhMSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhMSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGExKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYTEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhMSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gc3JjX3NjYW5bMF07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMl0sIHIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzJdKSwgciwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWzFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzFdLCBnLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblsyXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblswXSwgYiwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHhfc3VicGl4ZWwgPT0gMSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiTm9ybWFsKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGExID0gc3RhcnRfY29sID4gbGVmdCA/IChzcmNfc2NhblswXSArIHNyY19zY2FuWzFdICsgc3JjX3NjYW5bLTFdKSAvIDMgOiAoc3JjX3NjYW5bMF0gKyBzcmNfc2NhblsxXSkgLyAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGExLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhMSA9IHNyY19hbHBoYTEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIHNyY19hbHBoYTEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGExKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhMSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW4gKz0gQnBwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydF9jb2wgPiBsZWZ0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gc3JjX3NjYW5bLTFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsxXSwgZywgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMF0sIGIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IHN0YXJ0X2NvbCArIDE7IGNvbCA8IGVuZF9jb2w7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYk5vcm1hbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYTEgPSAoc3JjX3NjYW5bMF0gKyBzcmNfc2NhblsxXSArIHNyY19zY2FuWy0xXSkgLyAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhMSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGExID0gc3JjX2FscGhhMSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3JjX2FscGhhMSA9PSAwKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGExKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYTEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhMSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gc3JjX3NjYW5bLTFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzJdLCByLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMl0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsyXSksIHIsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsxXSwgZywgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bMV07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMF0sIGIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYk5vcm1hbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhMSA9IHN0YXJ0X2NvbCA+IGxlZnQgPyAoc3JjX3NjYW5bMF0gKyBzcmNfc2NhblstMl0gKyBzcmNfc2NhblstMV0pIC8gMyA6IHNyY19zY2FuWzBdIC8gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhMSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYTEgPSBzcmNfYWxwaGExICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGExKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsxXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzFdKSwgZywgc3JjX2FscGhhMSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblswXSksIGIsIHNyY19hbHBoYTEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRfY29sID4gbGVmdCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IHNyY19zY2FuWy0yXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMl0sIHIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19zY2FuWy0xXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMV0sIGcsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2FscGhhID0gc3JjX3NjYW5bMF07DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMF0sIGIsIHNyY19hbHBoYSwgbmF0aXZldGV4dF9mbGFncywgYSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19hbHBoYSA9IHNyY19hbHBoYSAqIGEgLyAyNTU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblswXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzBdKSwgYiwgc3JjX2FscGhhKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19zY2FuICs9IDM7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IHN0YXJ0X2NvbCArIDE7IGNvbCA8IGVuZF9jb2w7IGNvbCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYk5vcm1hbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYTEgPSAoKGludCkoc3JjX3NjYW5bMF0pICsgKGludCkoc3JjX3NjYW5bLTJdKSArIChpbnQpKHNyY19zY2FuWy0xXSkpIC8gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESlVTVF9BTFBIQShkZXN0X3NjYW5bMl0sIHIsIHNyY19hbHBoYTEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhMSA9IHNyY19hbHBoYTEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19hbHBoYTEgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblsyXSA9IEZYX0dBTU1BX0lOVkVSU0UoRlhESUJfQUxQSEFfTUVSR0UoRlhfR0FNTUEoZGVzdF9zY2FuWzJdKSwgciwgc3JjX2FscGhhMSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzFdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMV0pLCBnLCBzcmNfYWxwaGExKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMF0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblswXSksIGIsIHNyY19hbHBoYTEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSBCcHA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc2NhbiArPSAzOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19hbHBoYSA9IHNyY19zY2FuWy0yXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblsyXSwgciwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzJdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMl0pLCByLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX3NjYW5bLTFdOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBREpVU1RfQUxQSEEoZGVzdF9zY2FuWzFdLCBnLCBzcmNfYWxwaGEsIG5hdGl2ZXRleHRfZmxhZ3MsIGEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfYWxwaGEgKiBhIC8gMjU1Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3NjYW5bMV0gPSBGWF9HQU1NQV9JTlZFUlNFKEZYRElCX0FMUEhBX01FUkdFKEZYX0dBTU1BKGRlc3Rfc2NhblsxXSksIGcsIHNyY19hbHBoYSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWxwaGEgPSBzcmNfc2NhblswXTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURKVVNUX0FMUEhBKGRlc3Rfc2NhblswXSwgYiwgc3JjX2FscGhhLCBuYXRpdmV0ZXh0X2ZsYWdzLCBhKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FscGhhID0gc3JjX2FscGhhICogYSAvIDI1NTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuWzBdID0gRlhfR0FNTUFfSU5WRVJTRShGWERJQl9BTFBIQV9NRVJHRShGWF9HQU1NQShkZXN0X3NjYW5bMF0pLCBiLCBzcmNfYWxwaGEpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9zY2FuICs9IEJwcDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3NjYW4gKz0gMzsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKGJpdG1hcC5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICBTZXRCaXRNYXNrKCZiaXRtYXAsIGJtcF9yZWN0LmxlZnQsIGJtcF9yZWN0LnRvcCwgZmlsbF9jb2xvciwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBTZXRESUJpdHMoJmJpdG1hcCwgYm1wX3JlY3QubGVmdCwgYm1wX3JlY3QudG9wKTsNCisgICAgfQ0KKyAgICBGWF9GcmVlKHBHbHlwaEFuZFBvcyk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENGWF9SZW5kZXJEZXZpY2U6OkRyYXdUZXh0UGF0aChpbnQgbkNoYXJzLCBjb25zdCBGWFRFWFRfQ0hBUlBPUyogcENoYXJQb3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0ZvbnQqIHBGb250LCBDRlhfRm9udENhY2hlKiBwQ2FjaGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgZm9udF9zaXplLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwVGV4dDJVc2VyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBVc2VyMkRldmljZSwgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBmaWxsX2NvbG9yLCBGWF9BUkdCIHN0cm9rZV9jb2xvciwgQ0ZYX1BhdGhEYXRhKiBwQ2xpcHBpbmdQYXRoLCBpbnQgbkZsYWcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKQ0KK3sNCisgICAgaWYgKHBDYWNoZSA9PSBOVUxMKSB7DQorICAgICAgICBwQ2FjaGUgPSBDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRGb250Q2FjaGUoKTsNCisgICAgfQ0KKyAgICBDRlhfRmFjZUNhY2hlKiBwRmFjZUNhY2hlID0gcENhY2hlLT5HZXRDYWNoZWRGYWNlKHBGb250KTsNCisgICAgRlhfRk9OVENBQ0hFX0RFRklORShwQ2FjaGUsIHBGb250KTsNCisgICAgZm9yIChpbnQgaUNoYXIgPSAwOyBpQ2hhciA8IG5DaGFyczsgaUNoYXIgKyspIHsNCisgICAgICAgIGNvbnN0IEZYVEVYVF9DSEFSUE9TJiBjaGFycG9zID0gcENoYXJQb3NbaUNoYXJdOw0KKyAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7DQorICAgICAgICBpZiAoY2hhcnBvcy5tX2JHbHlwaEFkanVzdCkNCisgICAgICAgICAgICBtYXRyaXguU2V0KGNoYXJwb3MubV9BZGp1c3RNYXRyaXhbMF0sIGNoYXJwb3MubV9BZGp1c3RNYXRyaXhbMV0sDQorICAgICAgICAgICAgICAgICAgICAgICBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzJdLCBjaGFycG9zLm1fQWRqdXN0TWF0cml4WzNdLCAwLCAwKTsNCisgICAgICAgIG1hdHJpeC5Db25jYXQoZm9udF9zaXplLCAwLCAwLCBmb250X3NpemUsIGNoYXJwb3MubV9PcmlnaW5YLCBjaGFycG9zLm1fT3JpZ2luWSk7DQorICAgICAgICBjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoID0gcEZhY2VDYWNoZS0+TG9hZEdseXBoUGF0aChwRm9udCwgY2hhcnBvcy5tX0dseXBoSW5kZXgsIGNoYXJwb3MubV9Gb250Q2hhcldpZHRoKTsNCisgICAgICAgIGlmIChwUGF0aCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBtYXRyaXguQ29uY2F0KCpwVGV4dDJVc2VyKTsNCisgICAgICAgIENGWF9QYXRoRGF0YSBUcmFuc2Zvcm1lZFBhdGgoKnBQYXRoKTsNCisgICAgICAgIFRyYW5zZm9ybWVkUGF0aC5UcmFuc2Zvcm0oJm1hdHJpeCk7DQorICAgICAgICBGWF9CT09MIGJIYXNBbHBoYSA9IEZYR0VURkxBR19DT0xPUlRZUEUoYWxwaGFfZmxhZykgPw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRlhHRVRGTEFHX0FMUEhBX0ZJTEwoYWxwaGFfZmxhZykgfHwgRlhHRVRGTEFHX0FMUEhBX1NUUk9LRShhbHBoYV9mbGFnKSkgOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsbF9jb2xvciB8fCBzdHJva2VfY29sb3IpOw0KKyAgICAgICAgaWYgKGJIYXNBbHBoYSkgew0KKyAgICAgICAgICAgIGludCBmaWxsX21vZGUgPSBuRmxhZzsNCisgICAgICAgICAgICBpZiAoRlhHRVRGTEFHX0NPTE9SVFlQRShhbHBoYV9mbGFnKSkgew0KKyAgICAgICAgICAgICAgICBpZiAoRlhHRVRGTEFHX0FMUEhBX0ZJTEwoYWxwaGFfZmxhZykpIHsNCisgICAgICAgICAgICAgICAgICAgIGZpbGxfbW9kZSB8PSBGWEZJTExfV0lORElORzsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmIChmaWxsX2NvbG9yKSB7DQorICAgICAgICAgICAgICAgICAgICBmaWxsX21vZGUgfD0gRlhGSUxMX1dJTkRJTkc7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZmlsbF9tb2RlIHw9IEZYX0ZJTExfVEVYVF9NT0RFOw0KKyAgICAgICAgICAgIGlmICghRHJhd1BhdGgoJlRyYW5zZm9ybWVkUGF0aCwgcFVzZXIyRGV2aWNlLCBwR3JhcGhTdGF0ZSwgZmlsbF9jb2xvciwgc3Ryb2tlX2NvbG9yLCBmaWxsX21vZGUsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0sIGJsZW5kX3R5cGUpKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAocENsaXBwaW5nUGF0aCkgew0KKyAgICAgICAgICAgIHBDbGlwcGluZ1BhdGgtPkFwcGVuZCgmVHJhbnNmb3JtZWRQYXRoLCBwVXNlcjJEZXZpY2UpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBUUlVFOw0KK30NCitDRlhfRm9udENhY2hlOjp+Q0ZYX0ZvbnRDYWNoZSgpDQorew0KKyAgICBGcmVlQ2FjaGUoVFJVRSk7DQorfQ0KK0NGWF9GYWNlQ2FjaGUqIENGWF9Gb250Q2FjaGU6OkdldENhY2hlZEZhY2UoQ0ZYX0ZvbnQqIHBGb250KQ0KK3sNCisgICAgRlhfQk9PTCBiRXh0ZXJuYWwgPSBwRm9udC0+R2V0RmFjZSgpID09IE5VTEw7DQorICAgIHZvaWQqIGZhY2UgPSBiRXh0ZXJuYWwgPyBwRm9udC0+R2V0U3Vic3RGb250KCktPm1fRXh0SGFuZGxlIDogcEZvbnQtPkdldEZhY2UoKTsNCisgICAgQ0ZYX0ZUQ2FjaGVNYXAmIG1hcCA9ICBiRXh0ZXJuYWwgPyBtX0V4dEZhY2VNYXAgOiBtX0ZURmFjZU1hcDsNCisgICAgQ0ZYX0NvdW50ZWRGYWNlQ2FjaGUqIGNvdW50ZWRfZmFjZV9jYWNoZSA9IE5VTEw7DQorICAgIGlmIChtYXAuTG9va3VwKChGWEZUX0ZhY2UpZmFjZSwgY291bnRlZF9mYWNlX2NhY2hlKSkgew0KKyAgICAgICAgY291bnRlZF9mYWNlX2NhY2hlLT5tX25Db3VudCsrOw0KKyAgICAgICAgcmV0dXJuIGNvdW50ZWRfZmFjZV9jYWNoZS0+bV9PYmo7DQorICAgIH0NCisgICAgQ0ZYX0ZhY2VDYWNoZSogZmFjZV9jYWNoZSA9IE5VTEw7DQorICAgIGZhY2VfY2FjaGUgPSBGWF9ORVcgQ0ZYX0ZhY2VDYWNoZShiRXh0ZXJuYWwgPyBOVUxMIDogKEZYRlRfRmFjZSlmYWNlKTsNCisgICAgaWYgKGZhY2VfY2FjaGUgPT0gTlVMTCkJew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgY291bnRlZF9mYWNlX2NhY2hlID0gRlhfTkVXIENGWF9Db3VudGVkRmFjZUNhY2hlOw0KKyAgICBpZiAoIWNvdW50ZWRfZmFjZV9jYWNoZSkgew0KKyAgICAgICAgaWYgKGZhY2VfY2FjaGUpIHsNCisgICAgICAgICAgICBkZWxldGUgZmFjZV9jYWNoZTsNCisgICAgICAgICAgICBmYWNlX2NhY2hlID0gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGNvdW50ZWRfZmFjZV9jYWNoZS0+bV9uQ291bnQgPSAyOw0KKyAgICBjb3VudGVkX2ZhY2VfY2FjaGUtPm1fT2JqID0gZmFjZV9jYWNoZTsNCisgICAgbWFwLlNldEF0KChGWEZUX0ZhY2UpZmFjZSwgY291bnRlZF9mYWNlX2NhY2hlKTsNCisgICAgcmV0dXJuIGZhY2VfY2FjaGU7DQorfQ0KK3ZvaWQgQ0ZYX0ZvbnRDYWNoZTo6UmVsZWFzZUNhY2hlZEZhY2UoQ0ZYX0ZvbnQqIHBGb250KQ0KK3sNCisgICAgRlhfQk9PTCBiRXh0ZXJuYWwgPSBwRm9udC0+R2V0RmFjZSgpID09IE5VTEw7DQorICAgIHZvaWQqIGZhY2UgPSBiRXh0ZXJuYWwgPyBwRm9udC0+R2V0U3Vic3RGb250KCktPm1fRXh0SGFuZGxlIDogcEZvbnQtPkdldEZhY2UoKTsNCisgICAgQ0ZYX0ZUQ2FjaGVNYXAmIG1hcCA9ICBiRXh0ZXJuYWwgPyBtX0V4dEZhY2VNYXAgOiBtX0ZURmFjZU1hcDsNCisgICAgQ0ZYX0NvdW50ZWRGYWNlQ2FjaGUqIGNvdW50ZWRfZmFjZV9jYWNoZSA9IE5VTEw7DQorICAgIGlmICghbWFwLkxvb2t1cCgoRlhGVF9GYWNlKWZhY2UsIGNvdW50ZWRfZmFjZV9jYWNoZSkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoY291bnRlZF9mYWNlX2NhY2hlLT5tX25Db3VudCA+IDEpIHsNCisgICAgICAgIGNvdW50ZWRfZmFjZV9jYWNoZS0+bV9uQ291bnQtLTsNCisgICAgfQ0KK30NCit2b2lkIENGWF9Gb250Q2FjaGU6OkZyZWVDYWNoZShGWF9CT09MIGJSZWxlYXNlKQ0KK3sNCisgICAgew0KKyAgICAgICAgRlhfUE9TSVRJT04gcG9zOw0KKyAgICAgICAgcG9zID0gbV9GVEZhY2VNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICAgICAgd2hpbGUgKHBvcykgew0KKyAgICAgICAgICAgIEZYRlRfRmFjZSBmYWNlOw0KKyAgICAgICAgICAgIENGWF9Db3VudGVkRmFjZUNhY2hlKiBjYWNoZTsNCisgICAgICAgICAgICBtX0ZURmFjZU1hcC5HZXROZXh0QXNzb2MocG9zLCBmYWNlLCBjYWNoZSk7DQorICAgICAgICAgICAgaWYgKGJSZWxlYXNlIHx8IGNhY2hlLT5tX25Db3VudCA8IDIpIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIGNhY2hlLT5tX09iajsNCisgICAgICAgICAgICAgICAgZGVsZXRlIGNhY2hlOw0KKyAgICAgICAgICAgICAgICBtX0ZURmFjZU1hcC5SZW1vdmVLZXkoZmFjZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcG9zID0gbV9FeHRGYWNlTWFwLkdldFN0YXJ0UG9zaXRpb24oKTsNCisgICAgICAgIHdoaWxlIChwb3MpIHsNCisgICAgICAgICAgICBGWEZUX0ZhY2UgZmFjZTsNCisgICAgICAgICAgICBDRlhfQ291bnRlZEZhY2VDYWNoZSogY2FjaGU7DQorICAgICAgICAgICAgbV9FeHRGYWNlTWFwLkdldE5leHRBc3NvYyhwb3MsIGZhY2UsIGNhY2hlKTsNCisgICAgICAgICAgICBpZiAoYlJlbGVhc2UgfHwgY2FjaGUtPm1fbkNvdW50IDwgMikgew0KKyAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGUtPm1fT2JqOw0KKyAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGU7DQorICAgICAgICAgICAgICAgIG1fRXh0RmFjZU1hcC5SZW1vdmVLZXkoZmFjZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NGWF9GYWNlQ2FjaGU6OkNGWF9GYWNlQ2FjaGUoRlhGVF9GYWNlIGZhY2UpDQorew0KKyAgICBtX0ZhY2UgPSBmYWNlOw0KKyAgICBtX3BCaXRtYXAgPSBOVUxMOw0KK30NCitDRlhfRmFjZUNhY2hlOjp+Q0ZYX0ZhY2VDYWNoZSgpDQorew0KKyAgICBGWF9QT1NJVElPTiBwb3MgPSBtX1NpemVNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICBDRlhfQnl0ZVN0cmluZyBLZXk7DQorICAgIENGWF9TaXplR2x5cGhDYWNoZSogcFNpemVDYWNoZSA9IE5VTEw7DQorICAgIHdoaWxlKHBvcykgew0KKyAgICAgICAgbV9TaXplTWFwLkdldE5leHRBc3NvYyggcG9zLCBLZXksICh2b2lkKiYpcFNpemVDYWNoZSk7DQorICAgICAgICBkZWxldGUgcFNpemVDYWNoZTsNCisgICAgfQ0KKyAgICBtX1NpemVNYXAuUmVtb3ZlQWxsKCk7DQorICAgIHBvcyA9IG1fUGF0aE1hcC5HZXRTdGFydFBvc2l0aW9uKCk7DQorICAgIEZYX0xQVk9JRCBrZXkxOw0KKyAgICBDRlhfUGF0aERhdGEqIHBQYXRoOw0KKyAgICB3aGlsZSAocG9zKSB7DQorICAgICAgICBtX1BhdGhNYXAuR2V0TmV4dEFzc29jKHBvcywga2V5MSwgKEZYX0xQVk9JRCYpcFBhdGgpOw0KKyAgICAgICAgZGVsZXRlIHBQYXRoOw0KKyAgICB9DQorICAgIGlmIChtX3BCaXRtYXApIHsNCisgICAgICAgIGRlbGV0ZSBtX3BCaXRtYXA7DQorICAgIH0NCisgICAgbV9QYXRoTWFwLlJlbW92ZUFsbCgpOw0KK30NCisjaWYgKChfRlhNX1BMQVRGT1JNXyAgIT0gX0ZYTV9QTEFURk9STV9BUFBMRV8pfHwgZGVmaW5lZChfRlBERkFQSV9NSU5JXykpDQordm9pZCBDRlhfRmFjZUNhY2hlOjpJbml0UGxhdGZvcm0oKQ0KK3sNCit9DQorI2VuZGlmDQorQ0ZYX0dseXBoQml0bWFwKiBDRlhfRmFjZUNhY2hlOjpMb29rVXBHbHlwaEJpdG1hcChDRlhfRm9udCogcEZvbnQsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsDQorICAgICAgICBDRlhfQnl0ZVN0cmluZ0MmIEZhY2VHbHlwaHNLZXksIEZYX0RXT1JEIGdseXBoX2luZGV4LCBGWF9CT09MIGJGb250U3R5bGUsDQorICAgICAgICBpbnQgZGVzdF93aWR0aCwgaW50IGFudGlfYWxpYXMpDQorew0KKyAgICBDRlhfU2l6ZUdseXBoQ2FjaGUqIHBTaXplQ2FjaGUgPSBOVUxMOw0KKyAgICBpZiAoIW1fU2l6ZU1hcC5Mb29rdXAoRmFjZUdseXBoc0tleSwgKHZvaWQqJilwU2l6ZUNhY2hlKSkgew0KKyAgICAgICAgcFNpemVDYWNoZSA9IEZYX05FVyBDRlhfU2l6ZUdseXBoQ2FjaGU7DQorICAgICAgICBpZiAocFNpemVDYWNoZSA9PSBOVUxMKQl7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBtX1NpemVNYXAuU2V0QXQoRmFjZUdseXBoc0tleSwgcFNpemVDYWNoZSk7DQorICAgIH0NCisgICAgQ0ZYX0dseXBoQml0bWFwKiBwR2x5cGhCaXRtYXAgPSBOVUxMOw0KKyAgICBpZiAocFNpemVDYWNoZS0+bV9HbHlwaE1hcC5Mb29rdXAoKEZYX0xQVk9JRCkoRlhfVUlOVFBUUilnbHlwaF9pbmRleCwgKHZvaWQqJilwR2x5cGhCaXRtYXApKSB7DQorICAgICAgICByZXR1cm4gcEdseXBoQml0bWFwOw0KKyAgICB9DQorICAgIHBHbHlwaEJpdG1hcCA9IFJlbmRlckdseXBoKHBGb250LCBnbHlwaF9pbmRleCwgYkZvbnRTdHlsZSwgcE1hdHJpeCwgZGVzdF93aWR0aCwgYW50aV9hbGlhcyk7DQorICAgIGlmIChwR2x5cGhCaXRtYXAgPT0gTlVMTCkJew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcFNpemVDYWNoZS0+bV9HbHlwaE1hcC5TZXRBdCgoRlhfTFBWT0lEKShGWF9VSU5UUFRSKWdseXBoX2luZGV4LCBwR2x5cGhCaXRtYXApOw0KKyAgICByZXR1cm4gcEdseXBoQml0bWFwOw0KK30NCitjb25zdCBDRlhfR2x5cGhCaXRtYXAqIENGWF9GYWNlQ2FjaGU6OkxvYWRHbHlwaEJpdG1hcChDRlhfRm9udCogcEZvbnQsIEZYX0RXT1JEIGdseXBoX2luZGV4LCBGWF9CT09MIGJGb250U3R5bGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsDQorICAgICAgICBpbnQgZGVzdF93aWR0aCwgaW50IGFudGlfYWxpYXMsIGludCYgdGV4dF9mbGFncykNCit7DQorICAgIGlmIChnbHlwaF9pbmRleCA9PSAoRlhfRFdPUkQpIC0gMSkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgX0NGWF9VbmlxdWVLZXlHZW4ga2V5Z2VuOw0KKyNpZiAoKF9GWE1fUExBVEZPUk1fICAhPSBfRlhNX1BMQVRGT1JNX0FQUExFXyl8fCBkZWZpbmVkKF9GUERGQVBJX01JTklfKSkNCisgICAgaWYgKHBGb250LT5HZXRTdWJzdEZvbnQoKSkNCisgICAgICAgIGtleWdlbi5HZW5lcmF0ZSg5LCAoaW50KShwTWF0cml4LT5hICogMTAwMDApLCAoaW50KShwTWF0cml4LT5iICogMTAwMDApLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHBNYXRyaXgtPmMgKiAxMDAwMCksIChpbnQpKHBNYXRyaXgtPmQgKiAxMDAwMCksIGRlc3Rfd2lkdGgsIGFudGlfYWxpYXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX1dlaWdodCwgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX0l0YWxpY0FuZ2xlLCBwRm9udC0+SXNWZXJ0aWNhbCgpKTsNCisgICAgZWxzZQ0KKyAgICAgICAga2V5Z2VuLkdlbmVyYXRlKDYsIChpbnQpKHBNYXRyaXgtPmEgKiAxMDAwMCksIChpbnQpKHBNYXRyaXgtPmIgKiAxMDAwMCksDQorICAgICAgICAgICAgICAgICAgICAgICAgKGludCkocE1hdHJpeC0+YyAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+ZCAqIDEwMDAwKSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcyk7DQorI2Vsc2UNCisgICAgaWYgKHRleHRfZmxhZ3MgJiBGWFRFWFRfTk9fTkFUSVZFVEVYVCkgew0KKyAgICAgICAgaWYgKHBGb250LT5HZXRTdWJzdEZvbnQoKSkNCisgICAgICAgICAgICBrZXlnZW4uR2VuZXJhdGUoOSwgKGludCkocE1hdHJpeC0+YSAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+YiAqIDEwMDAwKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkocE1hdHJpeC0+YyAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+ZCAqIDEwMDAwKSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX1dlaWdodCwgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX0l0YWxpY0FuZ2xlLCBwRm9udC0+SXNWZXJ0aWNhbCgpKTsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICBrZXlnZW4uR2VuZXJhdGUoNiwgKGludCkocE1hdHJpeC0+YSAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+YiAqIDEwMDAwKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkocE1hdHJpeC0+YyAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+ZCAqIDEwMDAwKSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAocEZvbnQtPkdldFN1YnN0Rm9udCgpKQ0KKyAgICAgICAgICAgIGtleWdlbi5HZW5lcmF0ZSgxMCwgKGludCkocE1hdHJpeC0+YSAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+YiAqIDEwMDAwKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkocE1hdHJpeC0+YyAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+ZCAqIDEwMDAwKSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX1dlaWdodCwgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX0l0YWxpY0FuZ2xlLCBwRm9udC0+SXNWZXJ0aWNhbCgpLCAzKTsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICBrZXlnZW4uR2VuZXJhdGUoNywgKGludCkocE1hdHJpeC0+YSAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+YiAqIDEwMDAwKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkocE1hdHJpeC0+YyAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+ZCAqIDEwMDAwKSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcywgMyk7DQorICAgIH0NCisjZW5kaWYNCisgICAgQ0ZYX0J5dGVTdHJpbmdDIEZhY2VHbHlwaHNLZXkoa2V5Z2VuLm1fS2V5LCBrZXlnZW4ubV9LZXlMZW4pOw0KKyNpZiAoKF9GWE1fUExBVEZPUk1fICAhPSBfRlhNX1BMQVRGT1JNX0FQUExFXyl8fCBkZWZpbmVkKF9GUERGQVBJX01JTklfKSkNCisgICAgcmV0dXJuIExvb2tVcEdseXBoQml0bWFwKHBGb250LCBwTWF0cml4LCBGYWNlR2x5cGhzS2V5LCBnbHlwaF9pbmRleCwgYkZvbnRTdHlsZSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcyk7DQorI2Vsc2UNCisgICAgaWYgKHRleHRfZmxhZ3MgJiBGWFRFWFRfTk9fTkFUSVZFVEVYVCkgew0KKyAgICAgICAgcmV0dXJuIExvb2tVcEdseXBoQml0bWFwKHBGb250LCBwTWF0cml4LCBGYWNlR2x5cGhzS2V5LCBnbHlwaF9pbmRleCwgYkZvbnRTdHlsZSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcyk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDRlhfR2x5cGhCaXRtYXAqIHBHbHlwaEJpdG1hcDsNCisgICAgICAgIENGWF9TaXplR2x5cGhDYWNoZSogcFNpemVDYWNoZSA9IE5VTEw7DQorICAgICAgICBpZiAobV9TaXplTWFwLkxvb2t1cChGYWNlR2x5cGhzS2V5LCAodm9pZComKXBTaXplQ2FjaGUpKSB7DQorICAgICAgICAgICAgaWYgKHBTaXplQ2FjaGUtPm1fR2x5cGhNYXAuTG9va3VwKChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpZ2x5cGhfaW5kZXgsICh2b2lkKiYpcEdseXBoQml0bWFwKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gcEdseXBoQml0bWFwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwR2x5cGhCaXRtYXAgPSBSZW5kZXJHbHlwaF9OYXRpdmV0ZXh0KHBGb250LCBnbHlwaF9pbmRleCwgcE1hdHJpeCwgZGVzdF93aWR0aCwgYW50aV9hbGlhcyk7DQorICAgICAgICAgICAgaWYgKHBHbHlwaEJpdG1hcCkgew0KKyAgICAgICAgICAgICAgICBwU2l6ZUNhY2hlLT5tX0dseXBoTWFwLlNldEF0KChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpZ2x5cGhfaW5kZXgsIHBHbHlwaEJpdG1hcCk7DQorICAgICAgICAgICAgICAgIHJldHVybiBwR2x5cGhCaXRtYXA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwR2x5cGhCaXRtYXAgPSBSZW5kZXJHbHlwaF9OYXRpdmV0ZXh0KHBGb250LCBnbHlwaF9pbmRleCwgcE1hdHJpeCwgZGVzdF93aWR0aCwgYW50aV9hbGlhcyk7DQorICAgICAgICAgICAgaWYgKHBHbHlwaEJpdG1hcCkgew0KKyAgICAgICAgICAgICAgICBwU2l6ZUNhY2hlID0gRlhfTkVXIENGWF9TaXplR2x5cGhDYWNoZTsNCisgICAgICAgICAgICAgICAgaWYgKHBTaXplQ2FjaGUgPT0gTlVMTCkJew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgbV9TaXplTWFwLlNldEF0KEZhY2VHbHlwaHNLZXksIHBTaXplQ2FjaGUpOw0KKyAgICAgICAgICAgICAgICBwU2l6ZUNhY2hlLT5tX0dseXBoTWFwLlNldEF0KChGWF9MUFZPSUQpKEZYX1VJTlRQVFIpZ2x5cGhfaW5kZXgsIHBHbHlwaEJpdG1hcCk7DQorICAgICAgICAgICAgICAgIHJldHVybiBwR2x5cGhCaXRtYXA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBGb250LT5HZXRTdWJzdEZvbnQoKSkNCisgICAgICAgICAgICBrZXlnZW4uR2VuZXJhdGUoOSwgKGludCkocE1hdHJpeC0+YSAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+YiAqIDEwMDAwKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkocE1hdHJpeC0+YyAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+ZCAqIDEwMDAwKSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX1dlaWdodCwgcEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX0l0YWxpY0FuZ2xlLCBwRm9udC0+SXNWZXJ0aWNhbCgpKTsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICBrZXlnZW4uR2VuZXJhdGUoNiwgKGludCkocE1hdHJpeC0+YSAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+YiAqIDEwMDAwKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkocE1hdHJpeC0+YyAqIDEwMDAwKSwgKGludCkocE1hdHJpeC0+ZCAqIDEwMDAwKSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcyk7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZ0MgRmFjZUdseXBoc0tleShrZXlnZW4ubV9LZXksIGtleWdlbi5tX0tleUxlbik7DQorICAgICAgICB0ZXh0X2ZsYWdzIHw9IEZYVEVYVF9OT19OQVRJVkVURVhUOw0KKyAgICAgICAgcmV0dXJuIExvb2tVcEdseXBoQml0bWFwKHBGb250LCBwTWF0cml4LCBGYWNlR2x5cGhzS2V5LCBnbHlwaF9pbmRleCwgYkZvbnRTdHlsZSwgZGVzdF93aWR0aCwgYW50aV9hbGlhcyk7DQorICAgIH0NCisjZW5kaWYNCit9DQorQ0ZYX1NpemVHbHlwaENhY2hlOjp+Q0ZYX1NpemVHbHlwaENhY2hlKCkNCit7DQorICAgIEZYX1BPU0lUSU9OIHBvcyA9IG1fR2x5cGhNYXAuR2V0U3RhcnRQb3NpdGlvbigpOw0KKyAgICBGWF9MUFZPSUQgS2V5Ow0KKyAgICBDRlhfR2x5cGhCaXRtYXAqIHBHbHlwaEJpdG1hcCA9IE5VTEw7DQorICAgIHdoaWxlKHBvcykgew0KKyAgICAgICAgbV9HbHlwaE1hcC5HZXROZXh0QXNzb2MocG9zLCBLZXksICh2b2lkKiYpcEdseXBoQml0bWFwKTsNCisgICAgICAgIGRlbGV0ZSBwR2x5cGhCaXRtYXA7DQorICAgIH0NCisgICAgbV9HbHlwaE1hcC5SZW1vdmVBbGwoKTsNCit9DQorI2lmIGRlZmluZWQoX0ZQREZBUElfTUlOSV8pDQorI2RlZmluZSBDT05UUkFTVF9SQU1QX1NURVAJMTYNCisjZWxzZQ0KKyNkZWZpbmUgQ09OVFJBU1RfUkFNUF9TVEVQCTENCisjZW5kaWYNCitzdGF0aWMgY29uc3QgRlhfQllURSBnX2FkanVzdF9jb250cmFzdDExWzI1Nl0gPSB7DQorICAgIDAsIDAsIDIsIDMsIDQsIDUsIDYsIDgsIDksIDEwLCAxMSwgMTMsIDE0LCAxNSwgMTcsIDE4LCAxOSwgMjEsIDIyLCAyNCwgMjUsIDI2LCAyOCwgMjksIDMxLA0KKyAgICAzMiwgMzMsIDM1LCAzNiwgMzgsIDM5LCA0MCwgNDIsIDQzLCA0NSwgNDYsIDQ4LCA0OSwgNTEsIDUyLCA1NCwgNTUsIDU2LCA1OCwgNTksIDYxLCA2MiwgNjQsIDY1LA0KKyAgICA2NywgNjgsIDcwLCA3MSwgNzIsIDc0LCA3NSwgNzcsIDc4LCA4MCwgODEsIDgzLCA4NCwgODYsIDg3LCA4OSwgOTAsIDkxLCA5MywgOTQsIDk2LCA5NywgOTksIDEwMCwNCisgICAgMTAxLCAxMDMsIDEwNCwgMTA2LCAxMDcsIDEwOSwgMTEwLCAxMTEsIDExMywgMTE0LCAxMTYsIDExNywgMTE4LCAxMjAsIDEyMSwgMTIzLCAxMjQsIDEyNSwgMTI3LA0KKyAgICAxMjgsIDEzMCwgMTMxLCAxMzIsIDEzNCwgMTM1LCAxMzYsIDEzOCwgMTM5LCAxNDAsIDE0MiwgMTQzLCAxNDQsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUxLCAxNTIsDQorICAgIDE1MywgMTU1LCAxNTYsIDE1NywgMTU4LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwNCisgICAgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LA0KKyAgICAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsDQorICAgIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIxLCAyMjIsIDIyMywgMjI0LCAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyNywgMjI4LCAyMjksIDIzMCwNCisgICAgMjMwLCAyMzEsIDIzMiwgMjMyLCAyMzMsIDIzNCwgMjM0LCAyMzUsIDIzNiwgMjM2LCAyMzcsIDIzNywgMjM4LCAyMzksIDIzOSwgMjQwLCAyNDAsIDI0MSwgMjQxLA0KKyAgICAyNDIsIDI0MiwgMjQzLCAyNDMsIDI0NCwgMjQ0LCAyNDUsIDI0NSwgMjQ2LCAyNDYsIDI0NiwgMjQ3LCAyNDcsIDI0OCwgMjQ4LCAyNDgsIDI0OSwgMjQ5LCAyNDksDQorICAgIDI1MCwgMjUwLCAyNTAsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTMsIDI1MywgMjUzLCAyNTMsIDI1MywgMjUzLCAyNTQsIDI1NCwNCisgICAgMjU0LCAyNTQsIDI1NCwgMjU0LCAyNTQsIDI1NCwgMjU0LCAyNTQsIDI1NCwgMjU0LCAyNTQsIDI1NSwNCit9Ow0KK3N0YXRpYyBjb25zdCBGWF9CWVRFIGdfYWRqdXN0X2NvbnRyYXN0MTVbMjU2XSA9IHsNCisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMiwgMiwgMywgMywgNCwgNSwgNSwgNiwgNywgNywgOCwgOSwgMTAsIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsDQorICAgIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzQsIDM1LCAzNiwgMzcsIDM4LCA0MCwgNDEsIDQyLCA0MywgNDUsIDQ2LCA0NywgNDgsIDUwLCA1MSwNCisgICAgNTIsIDU0LCA1NSwgNTYsIDU4LCA1OSwgNjAsIDYyLCA2MywgNjQsIDY2LCA2NywgNjgsIDcwLCA3MSwgNzMsIDc0LCA3NSwgNzcsIDc4LCA4MCwgODEsIDgyLCA4NCwgODUsIDg3LA0KKyAgICA4OCwgOTAsIDkxLCA5MywgOTQsIDk1LCA5NywgOTgsIDEwMCwgMTAxLCAxMDMsIDEwNCwgMTA2LCAxMDcsIDEwOSwgMTEwLCAxMTEsIDExMywgMTE0LCAxMTYsIDExNywgMTE5LA0KKyAgICAxMjAsIDEyMiwgMTIzLCAxMjUsIDEyNiwgMTI4LCAxMjksIDEzMCwgMTMyLCAxMzMsIDEzNSwgMTM2LCAxMzgsIDEzOSwgMTQxLCAxNDIsIDE0MywgMTQ1LCAxNDYsIDE0OCwNCisgICAgMTQ5LCAxNTAsIDE1MiwgMTUzLCAxNTUsIDE1NiwgMTU3LCAxNTksIDE2MCwgMTYxLCAxNjMsIDE2NCwgMTY2LCAxNjcsIDE2OCwgMTcwLCAxNzEsIDE3MiwgMTc0LCAxNzUsDQorICAgIDE3NiwgMTc3LCAxNzksIDE4MCwgMTgxLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LA0KKyAgICAyMDEsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIyMCwNCisgICAgMjIxLCAyMjIsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjcsIDIyOCwgMjI5LCAyMzAsIDIzMSwgMjMyLCAyMzIsIDIzMywgMjM0LCAyMzUsIDIzNSwgMjM2LCAyMzcsDQorICAgIDIzNywgMjM4LCAyMzksIDIzOSwgMjQwLCAyNDEsIDI0MSwgMjQyLCAyNDIsIDI0MywgMjQ0LCAyNDQsIDI0NSwgMjQ1LCAyNDYsIDI0NiwgMjQ3LCAyNDcsIDI0OCwgMjQ4LA0KKyAgICAyNDgsIDI0OSwgMjQ5LCAyNTAsIDI1MCwgMjUwLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MywgMjUzLCAyNTMsIDI1MywgMjUzLCAyNTQsIDI1NCwNCisgICAgMjU0LCAyNTQsIDI1NCwgMjU0LCAyNTQsIDI1NCwgMjU0LCAyNTQsIDI1NCwgMjU1LA0KK307DQorc3RhdGljIHZvaWQgX0NhbGNDb250cmFzdFJhbXAoRlhfTFBCWVRFIHJhbXAsIGludCBsZXZlbCkNCit7DQorICAgIGludCBjb250cmFzdF9taW4gPSAwLCBjb250cmFzdF9tYXggPSAyNTUgLSBsZXZlbCwgaTsNCisgICAgZm9yIChpID0gMDsgaSA8IGNvbnRyYXN0X21pbjsgaSArKykgew0KKyAgICAgICAgcmFtcFtpXSA9IDA7DQorICAgIH0NCisgICAgZm9yIChpID0gY29udHJhc3RfbWluOyBpIDwgY29udHJhc3RfbWF4OyBpICsrKSB7DQorICAgICAgICByYW1wW2ldID0gMjU1ICogKGkgLSBjb250cmFzdF9taW4pIC8gKGNvbnRyYXN0X21heCAtIGNvbnRyYXN0X21pbik7DQorICAgIH0NCisgICAgZm9yIChpID0gY29udHJhc3RfbWF4OyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICByYW1wW2ldID0gMjU1Ow0KKyAgICB9DQorfQ0KK3ZvaWQgQ0ZYX0ZvbnQ6OkFkanVzdE1NUGFyYW1zKGludCBnbHlwaF9pbmRleCwgaW50IGRlc3Rfd2lkdGgsIGludCB3ZWlnaHQpDQorew0KKyAgICBGWEZUX01NX1ZhciBwTWFzdGVycyA9IE5VTEw7DQorICAgIEZYRlRfR2V0X01NX1ZhcihtX0ZhY2UsICZwTWFzdGVycyk7DQorICAgIGlmIChwTWFzdGVycyA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgbG9uZyBjb29yZHNbMl07DQorICAgIGlmICh3ZWlnaHQgPT0gMCkgew0KKyAgICAgICAgY29vcmRzWzBdID0gRlhGVF9HZXRfTU1fQXhpc19EZWYoRlhGVF9HZXRfTU1fQXhpcyhwTWFzdGVycywgMCkpIC8gNjU1MzY7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBjb29yZHNbMF0gPSB3ZWlnaHQ7DQorICAgIH0NCisgICAgaWYgKGRlc3Rfd2lkdGggPT0gMCkgew0KKyAgICAgICAgY29vcmRzWzFdID0gRlhGVF9HZXRfTU1fQXhpc19EZWYoRlhGVF9HZXRfTU1fQXhpcyhwTWFzdGVycywgMSkpIC8gNjU1MzY7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpbnQgbWluX3BhcmFtID0gRlhGVF9HZXRfTU1fQXhpc19NaW4oRlhGVF9HZXRfTU1fQXhpcyhwTWFzdGVycywgMSkpIC8gNjU1MzY7DQorICAgICAgICBpbnQgbWF4X3BhcmFtID0gRlhGVF9HZXRfTU1fQXhpc19NYXgoRlhGVF9HZXRfTU1fQXhpcyhwTWFzdGVycywgMSkpIC8gNjU1MzY7DQorICAgICAgICBjb29yZHNbMV0gPSBtaW5fcGFyYW07DQorICAgICAgICBpbnQgZXJyb3IgPSBGWEZUX1NldF9NTV9EZXNpZ25fQ29vcmRpbmF0ZXMobV9GYWNlLCAyLCBjb29yZHMpOw0KKyAgICAgICAgZXJyb3IgPSBGWEZUX0xvYWRfR2x5cGgobV9GYWNlLCBnbHlwaF9pbmRleCwgRlhGVF9MT0FEX05PX1NDQUxFIHwgRlhGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCk7DQorICAgICAgICBpbnQgbWluX3dpZHRoID0gRlhGVF9HZXRfR2x5cGhfSG9yaUFkdmFuY2UobV9GYWNlKSAqIDEwMDAgLyBGWEZUX0dldF9GYWNlX1VuaXRzUGVyRU0obV9GYWNlKTsNCisgICAgICAgIGNvb3Jkc1sxXSA9IG1heF9wYXJhbTsNCisgICAgICAgIGVycm9yID0gRlhGVF9TZXRfTU1fRGVzaWduX0Nvb3JkaW5hdGVzKG1fRmFjZSwgMiwgY29vcmRzKTsNCisgICAgICAgIGVycm9yID0gRlhGVF9Mb2FkX0dseXBoKG1fRmFjZSwgZ2x5cGhfaW5kZXgsIEZYRlRfTE9BRF9OT19TQ0FMRSB8IEZYRlRfTE9BRF9JR05PUkVfR0xPQkFMX0FEVkFOQ0VfV0lEVEgpOw0KKyAgICAgICAgaW50IG1heF93aWR0aCA9IEZYRlRfR2V0X0dseXBoX0hvcmlBZHZhbmNlKG1fRmFjZSkgKiAxMDAwIC8gRlhGVF9HZXRfRmFjZV9Vbml0c1BlckVNKG1fRmFjZSk7DQorICAgICAgICBpZiAobWF4X3dpZHRoID09IG1pbl93aWR0aCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGludCBwYXJhbSA9IG1pbl9wYXJhbSArIChtYXhfcGFyYW0gLSBtaW5fcGFyYW0pICogKGRlc3Rfd2lkdGggLSBtaW5fd2lkdGgpIC8gKG1heF93aWR0aCAtIG1pbl93aWR0aCk7DQorICAgICAgICBjb29yZHNbMV0gPSBwYXJhbTsNCisgICAgfQ0KKyAgICBGWEZUX0ZyZWUobV9GYWNlLCBwTWFzdGVycyk7DQorICAgIEZYRlRfU2V0X01NX0Rlc2lnbl9Db29yZGluYXRlcyhtX0ZhY2UsIDIsIGNvb3Jkcyk7DQorfQ0KK2V4dGVybiBjb25zdCBjaGFyIGdfQW5nbGVTa2V3WzMwXSA9IHsNCisgICAgMCwgMiwgMywgNSwgNywgOSwgMTEsIDEyLCAxNCwgMTYsDQorICAgIDE4LCAxOSwgMjEsIDIzLCAyNSwgMjcsIDI5LCAzMSwgMzIsIDM0LA0KKyAgICAzNiwgMzgsIDQwLCA0MiwgNDUsIDQ3LCA0OSwgNTEsIDUzLCA1NSwNCit9Ow0KK3N0YXRpYyBjb25zdCBGWF9CWVRFIGdfV2VpZ2h0UG93WzEwMF0gPSB7DQorICAgIDAsIDMsIDYsIDcsIDgsIDksIDExLCAxMiwgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsDQorICAgIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM1LCAzNiwgMzYsDQorICAgIDM3LCAzNywgMzcsIDM4LCAzOCwgMzgsIDM5LCAzOSwgMzksIDQwLCA0MCwgNDAsIDQxLCA0MSwgNDEsIDQyLCA0MiwgNDIsDQorICAgIDQyLCA0MywgNDMsIDQzLCA0NCwgNDQsIDQ0LCA0NCwgNDUsIDQ1LCA0NSwgNDUsIDQ2LCA0NiwgNDYsIDQ2LCA0NywgNDcsDQorICAgIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OSwgNDksIDQ5LCA0OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MSwgNTEsDQorICAgIDUxLCA1MSwgNTEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTMsIDUzLCA1MywgNTMsIDUzLA0KK307DQorZXh0ZXJuIGNvbnN0IEZYX0JZVEUgZ19XZWlnaHRQb3dfMTFbMTAwXSA9IHsNCisgICAgMCwgNCwgNywgOCwgOSwgMTAsIDEyLCAxMywgMTUsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsDQorICAgIDIzLCAyNCwgMjUsIDI2LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzksIDM5LCA0MCwgNDAsDQorICAgIDQxLCA0MSwgNDEsIDQyLCA0MiwgNDIsIDQzLCA0MywgNDMsIDQ0LCA0NCwgNDQsIDQ1LCA0NSwgNDUsIDQ2LCA0NiwgNDYsDQorICAgIDQ2LCA0MywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDUsIDUwLCA1MCwgNTAsIDQ2LCA1MSwgNTEsIDUxLCA1MiwgNTIsDQorICAgIDUyLCA1MiwgNTMsIDUzLCA1MywgNTMsIDUzLCA1NCwgNTQsIDU0LCA1NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NiwgNTYsDQorICAgIDU2LCA1NiwgNTYsIDU3LCA1NywgNTcsIDU3LCA1NywgNTgsIDU4LCA1OCwgNTgsIDU4LA0KK307DQorZXh0ZXJuIGNvbnN0IEZYX0JZVEUgZ19XZWlnaHRQb3dfU0hJRlRKSVNbMTAwXSA9IHsNCisgICAgMCwgMCwgMSwgMiwgMywgNCwgNSwgNywgOCwgMTAsIDExLCAxMywgMTQsIDE2LCAxNywgMTksIDIxLCAyMiwgMjQsIDI2LCAyOCwNCisgICAgMzAsIDMyLCAzMywgMzUsIDM3LCAzOSwgNDEsIDQzLCA0NSwgNDgsIDQ4LCA0OCwgNDgsIDQ5LCA0OSwgNDksIDUwLCA1MCwgNTAsIDUwLA0KKyAgICA1MSwgNTEsIDUxLCA1MSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MywgNTMsIDUzLCA1MywgNTMsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTUsIDU1LA0KKyAgICA1NSwgNTUsIDU1LCA1NiwgNTYsIDU2LCA1NiwgNTYgLCA1NiwgNTcsIDU3LCA1NyAsIDU3ICwgNTcsIDU3LCA1NywgNTgsIDU4LCA1OCwgNTgsIDU4LA0KKyAgICA1OCwgNTgsIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsDQorfTsNCitzdGF0aWMgdm9pZCBfR2FtbWFBZGp1c3QoRlhfTFBCWVRFIHBEYXRhLCBpbnQgbldpZCwgaW50IG5IZWksIGludCBzcmNfcGl0Y2gsIEZYX0xQQ0JZVEUgZ2FtbWFUYWJsZSkNCit7DQorICAgIGludCBjb3VudCA9IG5IZWkgKiBzcmNfcGl0Y2g7DQorICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7DQorICAgICAgICBwRGF0YVtpXSA9IGdhbW1hVGFibGVbcERhdGFbaV1dOw0KKyAgICB9DQorfQ0KK3N0YXRpYyB2b2lkIF9Db250cmFzdEFkanVzdChGWF9MUEJZVEUgcERhdGFJbiwgRlhfTFBCWVRFIHBEYXRhT3V0LCBpbnQgbldpZCwgaW50IG5IZWksIGludCBuU3JjUm93Qnl0ZXMsIGludCBuRHN0Um93Qnl0ZXMpDQorew0KKyAgICBpbnQgY29sLCByb3csIHRlbXA7DQorICAgIGludCBtYXggPSAwLCBtaW4gPSAyNTU7DQorICAgIEZYX0ZMT0FUIHJhdGU7DQorICAgIGZvciAocm93ID0gMDsgcm93IDwgbkhlaTsgcm93ICsrKSB7DQorICAgICAgICBGWF9MUEJZVEUgcFJvdyA9IHBEYXRhSW4gKyByb3cgKiBuU3JjUm93Qnl0ZXM7DQorICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IG5XaWQ7IGNvbCsrKSB7DQorICAgICAgICAgICAgdGVtcCA9ICpwUm93ICsrOw0KKyAgICAgICAgICAgIGlmICh0ZW1wID4gbWF4KSB7DQorICAgICAgICAgICAgICAgIG1heCA9IHRlbXA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICh0ZW1wIDwgbWluKSB7DQorICAgICAgICAgICAgICAgIG1pbiA9IHRlbXA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHRlbXAgPSBtYXggLSBtaW47DQorICAgIGlmICgwID09IHRlbXAgfHwgMjU1ID09IHRlbXApIHsNCisgICAgICAgIGludCByb3dieXRlcyA9IEZYU1lTX2FicyhuU3JjUm93Qnl0ZXMpID4gbkRzdFJvd0J5dGVzID8gbkRzdFJvd0J5dGVzIDogRlhTWVNfYWJzKG5TcmNSb3dCeXRlcyk7DQorICAgICAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IG5IZWk7IHJvdyArKykgew0KKyAgICAgICAgICAgIEZYU1lTX21lbWNweTMyKHBEYXRhT3V0ICsgcm93ICogbkRzdFJvd0J5dGVzLCBwRGF0YUluICsgcm93ICogblNyY1Jvd0J5dGVzLCByb3dieXRlcyk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgcmF0ZSA9IDI1NS5mIC8gdGVtcDsNCisgICAgZm9yIChyb3cgPSAwOyByb3cgPCBuSGVpOyByb3cgKyspIHsNCisgICAgICAgIEZYX0xQQllURSBwU3JjUm93ID0gcERhdGFJbiArIHJvdyAqIG5TcmNSb3dCeXRlczsNCisgICAgICAgIEZYX0xQQllURSBwRHN0Um93ID0gcERhdGFPdXQgKyByb3cgKiBuRHN0Um93Qnl0ZXM7DQorICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IG5XaWQ7IGNvbCArKykgew0KKyAgICAgICAgICAgIHRlbXAgPSAoaW50KSgoKihwU3JjUm93KyspIC0gbWluKSAqIHJhdGUgKyAwLjUpOw0KKyAgICAgICAgICAgIGlmICh0ZW1wID4gMjU1KQl7DQorICAgICAgICAgICAgICAgIHRlbXAgPSAyNTU7DQorICAgICAgICAgICAgfSBlbHNlIGlmICh0ZW1wIDwgMCkgew0KKyAgICAgICAgICAgICAgICB0ZW1wID0gMDsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgKnBEc3RSb3cgKysgPSAoRlhfQllURSl0ZW1wOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KK0NGWF9HbHlwaEJpdG1hcCogQ0ZYX0ZhY2VDYWNoZTo6UmVuZGVyR2x5cGgoQ0ZYX0ZvbnQqIHBGb250LCBGWF9EV09SRCBnbHlwaF9pbmRleCwgRlhfQk9PTCBiRm9udFN0eWxlLA0KKyAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgaW50IGRlc3Rfd2lkdGgsIGludCBhbnRpX2FsaWFzKQ0KK3sNCisgICAgaWYgKG1fRmFjZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBGWEZUX01hdHJpeCAgZnRfbWF0cml4Ow0KKyAgICBmdF9tYXRyaXgueHggPSAoc2lnbmVkIGxvbmcpKHBNYXRyaXgtPkdldEEoKSAvIDY0ICogNjU1MzYpOw0KKyAgICBmdF9tYXRyaXgueHkgPSAoc2lnbmVkIGxvbmcpKHBNYXRyaXgtPkdldEMoKSAvIDY0ICogNjU1MzYpOw0KKyAgICBmdF9tYXRyaXgueXggPSAoc2lnbmVkIGxvbmcpKHBNYXRyaXgtPkdldEIoKSAvIDY0ICogNjU1MzYpOw0KKyAgICBmdF9tYXRyaXgueXkgPSAoc2lnbmVkIGxvbmcpKHBNYXRyaXgtPkdldEQoKSAvIDY0ICogNjU1MzYpOw0KKyAgICBGWF9CT09MIGJVc2VDSktTdWJGb250ID0gRkFMU0U7DQorICAgIGNvbnN0IENGWF9TdWJzdEZvbnQqIHBTdWJzdEZvbnQgPSBwRm9udC0+R2V0U3Vic3RGb250KCk7DQorICAgIGlmIChwU3Vic3RGb250KSB7DQorICAgICAgICBiVXNlQ0pLU3ViRm9udCA9IHBTdWJzdEZvbnQtPm1fYlN1YnN0T2ZDSksgJiYgYkZvbnRTdHlsZTsNCisgICAgICAgIGludCBza2V3ID0gMDsNCisgICAgICAgIGlmIChiVXNlQ0pLU3ViRm9udCkgew0KKyAgICAgICAgICAgIHNrZXcgPSBwU3Vic3RGb250LT5tX2JJdGxpY0NKSyA/IC0xNSA6IDA7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHNrZXcgPSBwU3Vic3RGb250LT5tX0l0YWxpY0FuZ2xlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHNrZXcpIHsNCisgICAgICAgICAgICBza2V3ID0gc2tldyA8PSAtMzAgPyAtNTggOiAtZ19BbmdsZVNrZXdbLXNrZXddOw0KKyAgICAgICAgICAgIGlmIChwRm9udC0+SXNWZXJ0aWNhbCgpKSB7DQorICAgICAgICAgICAgICAgIGZ0X21hdHJpeC55eCArPSBmdF9tYXRyaXgueXkgKiBza2V3IC8gMTAwOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGZ0X21hdHJpeC54eSArPSAtZnRfbWF0cml4Lnh4ICogc2tldyAvIDEwMDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAocFN1YnN0Rm9udC0+bV9TdWJzdEZsYWdzICYgRlhGT05UX1NVQlNUX01NKSB7DQorICAgICAgICAgICAgcEZvbnQtPkFkanVzdE1NUGFyYW1zKGdseXBoX2luZGV4LCBkZXN0X3dpZHRoLCBwRm9udC0+R2V0U3Vic3RGb250KCktPm1fV2VpZ2h0KTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpbnQgdHJhbnNmbGFnID0gRlhGVF9HZXRfRmFjZV9JbnRlcm5hbF9GbGFnKG1fRmFjZSk7DQorICAgIEZYRlRfU2V0X1RyYW5zZm9ybShtX0ZhY2UsICZmdF9tYXRyaXgsIDApOw0KKyAgICBpbnQgbG9hZF9mbGFncyA9IChtX0ZhY2UtPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfU0ZOVCkgPyBGWEZUX0xPQURfTk9fQklUTUFQIDogKEZYRlRfTE9BRF9OT19CSVRNQVAgfCBGVF9MT0FEX05PX0hJTlRJTkcpOw0KKyAgICBpbnQgZXJyb3IgPSBGWEZUX0xvYWRfR2x5cGgobV9GYWNlLCBnbHlwaF9pbmRleCwgbG9hZF9mbGFncyk7DQorICAgIGlmIChlcnJvcikgew0KKyAgICAgICAgRlhGVF9TZXRfRmFjZV9JbnRlcm5hbF9GbGFnKG1fRmFjZSwgdHJhbnNmbGFnKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGludCB3ZWlnaHQgPSAwOw0KKyAgICBpZiAoYlVzZUNKS1N1YkZvbnQpIHsNCisgICAgICAgIHdlaWdodCA9IHBTdWJzdEZvbnQtPm1fV2VpZ2h0Q0pLOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgd2VpZ2h0ID0gcFN1YnN0Rm9udCA/IHBTdWJzdEZvbnQtPm1fV2VpZ2h0IDogMDsNCisgICAgfQ0KKyAgICBpZiAocFN1YnN0Rm9udCAmJiAhKHBTdWJzdEZvbnQtPm1fU3Vic3RGbGFncyAmIEZYRk9OVF9TVUJTVF9NTSkgJiYgd2VpZ2h0ID4gNDAwKSB7DQorICAgICAgICBpbnQgaW5kZXggPSAod2VpZ2h0IC0gNDAwKSAvIDEwOw0KKyAgICAgICAgaWYgKGluZGV4ID49IDEwMCkgew0KKyAgICAgICAgICAgIEZYRlRfU2V0X0ZhY2VfSW50ZXJuYWxfRmxhZyhtX0ZhY2UsIHRyYW5zZmxhZyk7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBpbnQgbGV2ZWwgPSAwOw0KKyAgICAgICAgaWYgKHBTdWJzdEZvbnQtPm1fQ2hhcnNldCA9PSBGWEZPTlRfU0hJRlRKSVNfQ0hBUlNFVCkgew0KKyAgICAgICAgICAgIGxldmVsID0gZ19XZWlnaHRQb3dfU0hJRlRKSVNbaW5kZXhdICogMiAqIChGWFNZU19hYnMoZnRfbWF0cml4Lnh4KSArIEZYU1lTX2FicyhmdF9tYXRyaXgueHkpKSAvIDM2NjU1Ow0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBsZXZlbCA9IGdfV2VpZ2h0UG93XzExW2luZGV4XSAqIChGWFNZU19hYnMoZnRfbWF0cml4Lnh4KSArIEZYU1lTX2FicyhmdF9tYXRyaXgueHkpKSAvIDM2NjU1Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhGVF9PdXRsaW5lX0VtYm9sZGVuKEZYRlRfR2V0X0dseXBoX091dGxpbmUobV9GYWNlKSwgbGV2ZWwpOw0KKyAgICB9DQorICAgIEZYRlRfTGlicmFyeV9TZXRMY2RGaWx0ZXIoQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0Rm9udE1ncigpLT5tX0ZUTGlicmFyeSwgRlRfTENEX0ZJTFRFUl9ERUZBVUxUKTsNCisgICAgZXJyb3IgPSBGWEZUX1JlbmRlcl9HbHlwaChtX0ZhY2UsIGFudGlfYWxpYXMpOw0KKyAgICBpZiAoZXJyb3IpIHsNCisgICAgICAgIEZYRlRfU2V0X0ZhY2VfSW50ZXJuYWxfRmxhZyhtX0ZhY2UsIHRyYW5zZmxhZyk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpbnQgYm13aWR0aCA9IEZYRlRfR2V0X0JpdG1hcF9XaWR0aChGWEZUX0dldF9HbHlwaF9CaXRtYXAobV9GYWNlKSk7DQorICAgIGludCBibWhlaWdodCA9IEZYRlRfR2V0X0JpdG1hcF9Sb3dzKEZYRlRfR2V0X0dseXBoX0JpdG1hcChtX0ZhY2UpKTsNCisgICAgaWYgKGJtd2lkdGggPiAyMDQ4IHx8IGJtaGVpZ2h0ID4gMjA0OCkgew0KKyAgICAgICAgRlhGVF9TZXRfRmFjZV9JbnRlcm5hbF9GbGFnKG1fRmFjZSwgdHJhbnNmbGFnKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGludCBkaWJfd2lkdGggPSBibXdpZHRoOw0KKyAgICBDRlhfR2x5cGhCaXRtYXAqIHBHbHlwaEJpdG1hcCA9IEZYX05FVyBDRlhfR2x5cGhCaXRtYXA7DQorICAgIGlmICghcEdseXBoQml0bWFwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBwR2x5cGhCaXRtYXAtPm1fQml0bWFwLkNyZWF0ZShkaWJfd2lkdGgsIGJtaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnRpX2FsaWFzID09IEZYRlRfUkVOREVSX01PREVfTU9OTyA/IEZYRElCXzFicHBNYXNrIDogRlhESUJfOGJwcE1hc2spOw0KKyAgICBwR2x5cGhCaXRtYXAtPm1fTGVmdCA9IEZYRlRfR2V0X0dseXBoX0JpdG1hcExlZnQobV9GYWNlKTsNCisgICAgcEdseXBoQml0bWFwLT5tX1RvcCA9IEZYRlRfR2V0X0dseXBoX0JpdG1hcFRvcChtX0ZhY2UpOw0KKyAgICBpbnQgZGVzdF9waXRjaCA9IHBHbHlwaEJpdG1hcC0+bV9CaXRtYXAuR2V0UGl0Y2goKTsNCisgICAgaW50IHNyY19waXRjaCA9IEZYRlRfR2V0X0JpdG1hcF9QaXRjaChGWEZUX0dldF9HbHlwaF9CaXRtYXAobV9GYWNlKSk7DQorICAgIEZYX0JZVEUqIHBEZXN0QnVmID0gcEdseXBoQml0bWFwLT5tX0JpdG1hcC5HZXRCdWZmZXIoKTsNCisgICAgRlhfQllURSogcFNyY0J1ZiA9IChGWF9CWVRFKilGWEZUX0dldF9CaXRtYXBfQnVmZmVyKEZYRlRfR2V0X0dseXBoX0JpdG1hcChtX0ZhY2UpKTsNCisgICAgaWYgKGFudGlfYWxpYXMgIT0gRlhGVF9SRU5ERVJfTU9ERV9NT05PICYmIEZYRlRfR2V0X0JpdG1hcF9QaXhlbE1vZGUoRlhGVF9HZXRfR2x5cGhfQml0bWFwKG1fRmFjZSkpID09IEZYRlRfUElYRUxfTU9ERV9NT05PKSB7DQorICAgICAgICBpbnQgYnl0ZXMgPSBhbnRpX2FsaWFzID09IEZYRlRfUkVOREVSX01PREVfTENEID8gMyA6IDE7DQorICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgYm1oZWlnaHQ7IGkrKykNCisgICAgICAgICAgICBmb3IoaW50IG4gPSAwOyBuIDwgYm13aWR0aDsgbisrKSB7DQorICAgICAgICAgICAgICAgIEZYX0JZVEUgZGF0YSA9IChwU3JjQnVmW2kgKiBzcmNfcGl0Y2ggKyBuIC8gOF0gJiAoMHg4MCA+PiAobiAlIDgpKSkgPyAyNTUgOiAwOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBiID0gMDsgYiA8IGJ5dGVzOyBiICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBwRGVzdEJ1ZltpICogZGVzdF9waXRjaCArIG4gKiBieXRlcyArIGJdID0gZGF0YTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgIEZYU1lTX21lbXNldDMyKHBEZXN0QnVmLCAwLCBkZXN0X3BpdGNoICogYm1oZWlnaHQpOw0KKyAgICAgICAgaWYgKGFudGlfYWxpYXMgPT0gRlhGVF9SRU5ERVJfTU9ERV9NT05PICYmIEZYRlRfR2V0X0JpdG1hcF9QaXhlbE1vZGUoRlhGVF9HZXRfR2x5cGhfQml0bWFwKG1fRmFjZSkpID09IEZYRlRfUElYRUxfTU9ERV9NT05PKSB7DQorICAgICAgICAgICAgaW50IHJvd2J5dGVzID0gRlhTWVNfYWJzKHNyY19waXRjaCkgPiBkZXN0X3BpdGNoID8gZGVzdF9waXRjaCA6IEZYU1lTX2FicyhzcmNfcGl0Y2gpOw0KKyAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGJtaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIocERlc3RCdWYgKyByb3cgKiBkZXN0X3BpdGNoLCBwU3JjQnVmICsgcm93ICogc3JjX3BpdGNoLCByb3dieXRlcyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBfQ29udHJhc3RBZGp1c3QocFNyY0J1ZiwgcERlc3RCdWYsIGJtd2lkdGgsIGJtaGVpZ2h0LCBzcmNfcGl0Y2gsIGRlc3RfcGl0Y2gpOw0KKyAgICAgICAgICAgIF9HYW1tYUFkanVzdChwRGVzdEJ1ZiwgYm13aWR0aCwgYm1oZWlnaHQsIGRlc3RfcGl0Y2gsIENGWF9HRU1vZHVsZTo6R2V0KCktPkdldFRleHRHYW1tYVRhYmxlKCkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEZYRlRfU2V0X0ZhY2VfSW50ZXJuYWxfRmxhZyhtX0ZhY2UsIHRyYW5zZmxhZyk7DQorICAgIHJldHVybiBwR2x5cGhCaXRtYXA7DQorfQ0KK0ZYX0JPT0wgX091dHB1dEdseXBoKHZvaWQqIGRpYiwgaW50IHgsIGludCB5LCBDRlhfRm9udCogcEZvbnQsDQorICAgICAgICAgICAgICAgICAgICAgaW50IGdseXBoX2luZGV4LCBGWF9BUkdCIGFyZ2IpDQorew0KKyAgICBDRlhfRElCaXRtYXAqIHBEaWIgPSAoQ0ZYX0RJQml0bWFwKilkaWI7DQorICAgIEZYRlRfRmFjZSBmYWNlID0gcEZvbnQtPkdldEZhY2UoKTsNCisgICAgaW50IGVycm9yID0gRlhGVF9Mb2FkX0dseXBoKGZhY2UsIGdseXBoX2luZGV4LCBGWEZUX0xPQURfTk9fQklUTUFQKTsNCisgICAgaWYgKGVycm9yKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgZXJyb3IgPSBGWEZUX1JlbmRlcl9HbHlwaChmYWNlLCBGWEZUX1JFTkRFUl9NT0RFX05PUk1BTCk7DQorICAgIGlmIChlcnJvcikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGludCBibXdpZHRoID0gRlhGVF9HZXRfQml0bWFwX1dpZHRoKEZYRlRfR2V0X0dseXBoX0JpdG1hcChmYWNlKSk7DQorICAgIGludCBibWhlaWdodCA9IEZYRlRfR2V0X0JpdG1hcF9Sb3dzKEZYRlRfR2V0X0dseXBoX0JpdG1hcChmYWNlKSk7DQorICAgIGludCBsZWZ0ID0gRlhGVF9HZXRfR2x5cGhfQml0bWFwTGVmdChmYWNlKTsNCisgICAgaW50IHRvcCA9IEZYRlRfR2V0X0dseXBoX0JpdG1hcFRvcChmYWNlKTsNCisgICAgRlhfTFBDQllURSBzcmNfYnVmID0gKEZYX0xQQ0JZVEUpRlhGVF9HZXRfQml0bWFwX0J1ZmZlcihGWEZUX0dldF9HbHlwaF9CaXRtYXAoZmFjZSkpOw0KKyAgICBpbnQgc3JjX3BpdGNoID0gRlhGVF9HZXRfQml0bWFwX1BpdGNoKEZYRlRfR2V0X0dseXBoX0JpdG1hcChmYWNlKSk7DQorICAgIENGWF9ESUJpdG1hcCBtYXNrOw0KKyAgICBtYXNrLkNyZWF0ZShibXdpZHRoLCBibWhlaWdodCwgRlhESUJfOGJwcE1hc2spOw0KKyAgICBGWF9MUEJZVEUgZGVzdF9idWYgPSBtYXNrLkdldEJ1ZmZlcigpOw0KKyAgICBpbnQgZGVzdF9waXRjaCA9IG1hc2suR2V0UGl0Y2goKTsNCisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgYm1oZWlnaHQ7IHJvdyArKykgew0KKyAgICAgICAgRlhfTFBDQllURSBzcmNfc2NhbiA9IHNyY19idWYgKyByb3cgKiBzcmNfcGl0Y2g7DQorICAgICAgICBGWF9MUEJZVEUgZGVzdF9zY2FuID0gZGVzdF9idWYgKyByb3cgKiBkZXN0X3BpdGNoOw0KKyAgICAgICAgRlhTWVNfbWVtY3B5MzIoZGVzdF9zY2FuLCBzcmNfc2NhbiwgZGVzdF9waXRjaCk7DQorICAgIH0NCisgICAgcERpYi0+Q29tcG9zaXRlTWFzayh4ICsgbGVmdCwgeSAtIHRvcCwgYm13aWR0aCwgYm1oZWlnaHQsICZtYXNrLCBhcmdiLCAwLCAwKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgT3V0cHV0VGV4dCh2b2lkKiBkaWIsIGludCB4LCBpbnQgeSwgQ0ZYX0ZvbnQqIHBGb250LCBkb3VibGUgZm9udF9zaXplLA0KKyAgICAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4KiBwVGV4dF9tYXRyaXgsIHVuc2lnbmVkIHNob3J0IGNvbnN0KiB0ZXh0LCB1bnNpZ25lZCBsb25nIGFyZ2IpDQorew0KKyAgICBpZiAoIXBGb250KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgRlhGVF9GYWNlIGZhY2UgPSBwRm9udC0+R2V0RmFjZSgpOw0KKyAgICBGWEZUX1NlbGVjdF9DaGFybWFwKHBGb250LT5tX0ZhY2UsIEZYRlRfRU5DT0RJTkdfVU5JQ09ERSk7DQorICAgIGludCB0cmFuc2ZsYWcgPSBGWEZUX0dldF9GYWNlX0ludGVybmFsX0ZsYWcocEZvbnQtPm1fRmFjZSk7DQorICAgIGlmIChwVGV4dF9tYXRyaXgpIHsNCisgICAgICAgIEZYRlRfTWF0cml4ICBmdF9tYXRyaXg7DQorICAgICAgICBmdF9tYXRyaXgueHggPSAoc2lnbmVkIGxvbmcpKHBUZXh0X21hdHJpeC0+YSAvIDY0ICogNjU1MzYpOw0KKyAgICAgICAgZnRfbWF0cml4Lnh5ID0gKHNpZ25lZCBsb25nKShwVGV4dF9tYXRyaXgtPmMgLyA2NCAqIDY1NTM2KTsNCisgICAgICAgIGZ0X21hdHJpeC55eCA9IChzaWduZWQgbG9uZykocFRleHRfbWF0cml4LT5iIC8gNjQgKiA2NTUzNik7DQorICAgICAgICBmdF9tYXRyaXgueXkgPSAoc2lnbmVkIGxvbmcpKHBUZXh0X21hdHJpeC0+ZCAvIDY0ICogNjU1MzYpOw0KKyAgICAgICAgRlhGVF9TZXRfVHJhbnNmb3JtKGZhY2UsICZmdF9tYXRyaXgsIDApOw0KKyAgICB9DQorICAgIEZYX0ZMT0FUIHhfcG9zID0gMDsNCisgICAgZm9yICg7ICp0ZXh0ICE9IDA7IHRleHQgKyspIHsNCisgICAgICAgIEZYX1dDSEFSIHVuaWNvZGUgPSAqdGV4dDsNCisgICAgICAgIGludCBnbHlwaF9pbmRleCA9IEZYRlRfR2V0X0NoYXJfSW5kZXgocEZvbnQtPm1fRmFjZSwgdW5pY29kZSk7DQorICAgICAgICBpZiAoZ2x5cGhfaW5kZXggPD0gMCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IGVyciA9IEZYRlRfTG9hZF9HbHlwaChwRm9udC0+bV9GYWNlLCBnbHlwaF9pbmRleCwgRlhGVF9MT0FEX05PX1NDQUxFIHwgRlhGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCk7DQorICAgICAgICBpZiAoZXJyKSB7DQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBpbnQgdyA9IEZYRlRfR2V0X0dseXBoX0hvcmlBZHZhbmNlKHBGb250LT5tX0ZhY2UpOw0KKyAgICAgICAgaW50IGVtID0gRlhGVF9HZXRfRmFjZV9Vbml0c1BlckVNKHBGb250LT5tX0ZhY2UpOw0KKyAgICAgICAgRlhfRkxPQVQgeDEsIHkxOw0KKyAgICAgICAgcFRleHRfbWF0cml4LT5UcmFuc2Zvcm0oeF9wb3MsIDAsIHgxLCB5MSk7DQorICAgICAgICBfT3V0cHV0R2x5cGgoZGliLCAoaW50KXgxICsgeCwgKGludCkgLSB5MSArIHksIHBGb250LA0KKyAgICAgICAgICAgICAgICAgICAgIGdseXBoX2luZGV4LCBhcmdiKTsNCisgICAgICAgIHhfcG9zICs9IChGWF9GTE9BVCl3IC8gZW07DQorICAgIH0NCisgICAgRlhGVF9TZXRfRmFjZV9JbnRlcm5hbF9GbGFnKHBGb250LT5tX0ZhY2UsIHRyYW5zZmxhZyk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIE91dHB1dEdseXBoKHZvaWQqIGRpYiwgaW50IHgsIGludCB5LCBDRlhfRm9udCogcEZvbnQsIGRvdWJsZSBmb250X3NpemUsDQorICAgICAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCB1bnNpZ25lZCBsb25nIGdseXBoX2luZGV4LCB1bnNpZ25lZCBsb25nIGFyZ2IpDQorew0KKyAgICBGWEZUX01hdHJpeCAgZnRfbWF0cml4Ow0KKyAgICBpZiAocE1hdHJpeCkgew0KKyAgICAgICAgZnRfbWF0cml4Lnh4ID0gKHNpZ25lZCBsb25nKShwTWF0cml4LT5hICogZm9udF9zaXplIC8gNjQgKiA2NTUzNik7DQorICAgICAgICBmdF9tYXRyaXgueHkgPSAoc2lnbmVkIGxvbmcpKHBNYXRyaXgtPmMgKiBmb250X3NpemUgLyA2NCAqIDY1NTM2KTsNCisgICAgICAgIGZ0X21hdHJpeC55eCA9IChzaWduZWQgbG9uZykocE1hdHJpeC0+YiAqIGZvbnRfc2l6ZSAvIDY0ICogNjU1MzYpOw0KKyAgICAgICAgZnRfbWF0cml4Lnl5ID0gKHNpZ25lZCBsb25nKShwTWF0cml4LT5kICogZm9udF9zaXplIC8gNjQgKiA2NTUzNik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBmdF9tYXRyaXgueHggPSAoc2lnbmVkIGxvbmcpKGZvbnRfc2l6ZSAvIDY0ICogNjU1MzYpOw0KKyAgICAgICAgZnRfbWF0cml4Lnh5ID0gZnRfbWF0cml4Lnl4ID0gMDsNCisgICAgICAgIGZ0X21hdHJpeC55eSA9IChzaWduZWQgbG9uZykoZm9udF9zaXplIC8gNjQgKiA2NTUzNik7DQorICAgIH0NCisgICAgaW50IHRyYW5zZmxhZyA9IEZYRlRfR2V0X0ZhY2VfSW50ZXJuYWxfRmxhZyhwRm9udC0+bV9GYWNlKTsNCisgICAgRlhGVF9TZXRfVHJhbnNmb3JtKHBGb250LT5tX0ZhY2UsICZmdF9tYXRyaXgsIDApOw0KKyAgICBGWF9CT09MIHJldCA9IF9PdXRwdXRHbHlwaChkaWIsIHgsIHksIHBGb250LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaF9pbmRleCwgYXJnYik7DQorICAgIEZYRlRfU2V0X0ZhY2VfSW50ZXJuYWxfRmxhZyhwRm9udC0+bV9GYWNlLCB0cmFuc2ZsYWcpOw0KKyAgICByZXR1cm4gcmV0Ow0KK30NCitjb25zdCBDRlhfUGF0aERhdGEqIENGWF9GYWNlQ2FjaGU6OkxvYWRHbHlwaFBhdGgoQ0ZYX0ZvbnQqIHBGb250LCBGWF9EV09SRCBnbHlwaF9pbmRleCwgaW50IGRlc3Rfd2lkdGgpDQorew0KKyAgICBpZiAobV9GYWNlID09IE5VTEwgfHwgZ2x5cGhfaW5kZXggPT0gKEZYX0RXT1JEKSAtIDEpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENGWF9QYXRoRGF0YSogcEdseXBoUGF0aCA9IE5VTEw7DQorICAgIEZYX0xQVk9JRCBrZXk7DQorICAgIGlmIChwRm9udC0+R2V0U3Vic3RGb250KCkpDQorICAgICAgICBrZXkgPSAoRlhfTFBWT0lEKShGWF9VSU5UUFRSKShnbHlwaF9pbmRleCArICgocEZvbnQtPkdldFN1YnN0Rm9udCgpLT5tX1dlaWdodCAvIDE2KSA8PCAxNSkgKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwRm9udC0+R2V0U3Vic3RGb250KCktPm1fSXRhbGljQW5nbGUgLyAyKSA8PCAyMSkgKyAoKGRlc3Rfd2lkdGggLyAxNikgPDwgMjUpICsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwRm9udC0+SXNWZXJ0aWNhbCgpIDw8IDMxKSk7DQorICAgIGVsc2Ugew0KKyAgICAgICAga2V5ID0gKEZYX0xQVk9JRCkoRlhfVUlOVFBUUilnbHlwaF9pbmRleDsNCisgICAgfQ0KKyAgICBpZiAobV9QYXRoTWFwLkxvb2t1cChrZXksIChGWF9MUFZPSUQmKXBHbHlwaFBhdGgpKSB7DQorICAgICAgICByZXR1cm4gcEdseXBoUGF0aDsNCisgICAgfQ0KKyAgICBwR2x5cGhQYXRoID0gcEZvbnQtPkxvYWRHbHlwaFBhdGgoZ2x5cGhfaW5kZXgsIGRlc3Rfd2lkdGgpOw0KKyAgICBtX1BhdGhNYXAuU2V0QXQoa2V5LCBwR2x5cGhQYXRoKTsNCisgICAgcmV0dXJuIHBHbHlwaFBhdGg7DQorfQ0KK3R5cGVkZWYgc3RydWN0IHsNCisgICAgRlhfQk9PTAkJCW1fYkNvdW50Ow0KKyAgICBpbnQJCQkJbV9Qb2ludENvdW50Ow0KKyAgICBGWF9QQVRIUE9JTlQqCW1fcFBvaW50czsNCisgICAgaW50CQkJCW1fQ3VyWDsNCisgICAgaW50CQkJCW1fQ3VyWTsNCisgICAgRlhfRkxPQVQJCW1fQ29vcmRVbml0Ow0KK30gT1VUTElORV9QQVJBTVM7DQordm9pZCBfT3V0bGluZV9DaGVja0VtcHR5Q29udG91cihPVVRMSU5FX1BBUkFNUyogcGFyYW0pDQorew0KKyAgICBpZiAocGFyYW0tPm1fUG9pbnRDb3VudCA+PSAyICYmIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCAtIDJdLm1fRmxhZyA9PSBGWFBUX01PVkVUTyAmJg0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCAtIDJdLm1fUG9pbnRYID09IHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCAtIDFdLm1fUG9pbnRYICYmDQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50IC0gMl0ubV9Qb2ludFkgPT0gcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50IC0gMV0ubV9Qb2ludFkpIHsNCisgICAgICAgIHBhcmFtLT5tX1BvaW50Q291bnQgLT0gMjsNCisgICAgfQ0KKyAgICBpZiAocGFyYW0tPm1fUG9pbnRDb3VudCA+PSA0ICYmIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCAtIDRdLm1fRmxhZyA9PSBGWFBUX01PVkVUTyAmJg0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCAtIDNdLm1fRmxhZyA9PSBGWFBUX0JFWklFUlRPICYmDQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50IC0gM10ubV9Qb2ludFggPT0gcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50IC0gNF0ubV9Qb2ludFggJiYNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgLSAzXS5tX1BvaW50WSA9PSBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgLSA0XS5tX1BvaW50WSAmJg0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCAtIDJdLm1fUG9pbnRYID09IHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCAtIDRdLm1fUG9pbnRYICYmDQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50IC0gMl0ubV9Qb2ludFkgPT0gcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50IC0gNF0ubV9Qb2ludFkgJiYNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgLSAxXS5tX1BvaW50WCA9PSBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgLSA0XS5tX1BvaW50WCAmJg0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCAtIDFdLm1fUG9pbnRZID09IHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCAtIDRdLm1fUG9pbnRZKSB7DQorICAgICAgICBwYXJhbS0+bV9Qb2ludENvdW50IC09IDQ7DQorICAgIH0NCit9DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyBpbnQgX091dGxpbmVfTW92ZVRvKGNvbnN0IEZYRlRfVmVjdG9yKiB0bywgdm9pZCogdXNlcikNCisgICAgew0KKyAgICAgICAgT1VUTElORV9QQVJBTVMqIHBhcmFtID0gKE9VVExJTkVfUEFSQU1TKil1c2VyOw0KKyAgICAgICAgaWYgKCFwYXJhbS0+bV9iQ291bnQpIHsNCisgICAgICAgICAgICBfT3V0bGluZV9DaGVja0VtcHR5Q29udG91cihwYXJhbSk7DQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50XS5tX1BvaW50WCA9IHRvLT54IC8gcGFyYW0tPm1fQ29vcmRVbml0Ow0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudF0ubV9Qb2ludFkgPSB0by0+eSAvIHBhcmFtLT5tX0Nvb3JkVW5pdDsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnRdLm1fRmxhZyA9IEZYUFRfTU9WRVRPOw0KKyAgICAgICAgICAgIHBhcmFtLT5tX0N1clggPSB0by0+eDsNCisgICAgICAgICAgICBwYXJhbS0+bV9DdXJZID0gdG8tPnk7DQorICAgICAgICAgICAgaWYgKHBhcmFtLT5tX1BvaW50Q291bnQpIHsNCisgICAgICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50IC0gMV0ubV9GbGFnIHw9IEZYUFRfQ0xPU0VGSUdVUkU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcGFyYW0tPm1fUG9pbnRDb3VudCArKzsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorfTsNCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIGludCBfT3V0bGluZV9MaW5lVG8oY29uc3QgRlhGVF9WZWN0b3IqIHRvLCB2b2lkKiB1c2VyKQ0KKyAgICB7DQorICAgICAgICBPVVRMSU5FX1BBUkFNUyogcGFyYW0gPSAoT1VUTElORV9QQVJBTVMqKXVzZXI7DQorICAgICAgICBpZiAoIXBhcmFtLT5tX2JDb3VudCkgew0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudF0ubV9Qb2ludFggPSB0by0+eCAvIHBhcmFtLT5tX0Nvb3JkVW5pdDsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnRdLm1fUG9pbnRZID0gdG8tPnkgLyBwYXJhbS0+bV9Db29yZFVuaXQ7DQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50XS5tX0ZsYWcgPSBGWFBUX0xJTkVUTzsNCisgICAgICAgICAgICBwYXJhbS0+bV9DdXJYID0gdG8tPng7DQorICAgICAgICAgICAgcGFyYW0tPm1fQ3VyWSA9IHRvLT55Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgcGFyYW0tPm1fUG9pbnRDb3VudCArKzsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorfTsNCitleHRlcm4gIkMiIHsNCisgICAgc3RhdGljIGludCBfT3V0bGluZV9Db25pY1RvKGNvbnN0IEZYRlRfVmVjdG9yKiBjb250cm9sLCBjb25zdCBGWEZUX1ZlY3RvciogdG8sIHZvaWQqIHVzZXIpDQorICAgIHsNCisgICAgICAgIE9VVExJTkVfUEFSQU1TKiBwYXJhbSA9IChPVVRMSU5FX1BBUkFNUyopdXNlcjsNCisgICAgICAgIGlmICghcGFyYW0tPm1fYkNvdW50KSB7DQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50XS5tX1BvaW50WCA9IChwYXJhbS0+bV9DdXJYICsgKGNvbnRyb2wtPnggLSBwYXJhbS0+bV9DdXJYKSAqIDIgLyAzKSAvIHBhcmFtLT5tX0Nvb3JkVW5pdDsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnRdLm1fUG9pbnRZID0gKHBhcmFtLT5tX0N1clkgKyAoY29udHJvbC0+eSAtIHBhcmFtLT5tX0N1clkpICogMiAvIDMpIC8gcGFyYW0tPm1fQ29vcmRVbml0Ow0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudF0ubV9GbGFnID0gRlhQVF9CRVpJRVJUTzsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgKyAxXS5tX1BvaW50WCA9IChjb250cm9sLT54ICsgKHRvLT54IC0gY29udHJvbC0+eCkgLyAzKSAvIHBhcmFtLT5tX0Nvb3JkVW5pdDsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgKyAxXS5tX1BvaW50WSA9IChjb250cm9sLT55ICsgKHRvLT55IC0gY29udHJvbC0+eSkgLyAzKSAvIHBhcmFtLT5tX0Nvb3JkVW5pdDsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgKyAxXS5tX0ZsYWcgPSBGWFBUX0JFWklFUlRPOw0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCArIDJdLm1fUG9pbnRYID0gdG8tPnggLyBwYXJhbS0+bV9Db29yZFVuaXQ7DQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50ICsgMl0ubV9Qb2ludFkgPSB0by0+eSAvIHBhcmFtLT5tX0Nvb3JkVW5pdDsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgKyAyXS5tX0ZsYWcgPSBGWFBUX0JFWklFUlRPOw0KKyAgICAgICAgICAgIHBhcmFtLT5tX0N1clggPSB0by0+eDsNCisgICAgICAgICAgICBwYXJhbS0+bV9DdXJZID0gdG8tPnk7DQorICAgICAgICB9DQorICAgICAgICBwYXJhbS0+bV9Qb2ludENvdW50ICs9IDM7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KK307DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyBpbnQgX091dGxpbmVfQ3ViaWNUbyhjb25zdCBGWEZUX1ZlY3RvciogY29udHJvbDEsIGNvbnN0IEZYRlRfVmVjdG9yKiBjb250cm9sMiwgY29uc3QgRlhGVF9WZWN0b3IqIHRvLCB2b2lkKiB1c2VyKQ0KKyAgICB7DQorICAgICAgICBPVVRMSU5FX1BBUkFNUyogcGFyYW0gPSAoT1VUTElORV9QQVJBTVMqKXVzZXI7DQorICAgICAgICBpZiAoIXBhcmFtLT5tX2JDb3VudCkgew0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudF0ubV9Qb2ludFggPSBjb250cm9sMS0+eCAvIHBhcmFtLT5tX0Nvb3JkVW5pdDsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnRdLm1fUG9pbnRZID0gY29udHJvbDEtPnkgLyBwYXJhbS0+bV9Db29yZFVuaXQ7DQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50XS5tX0ZsYWcgPSBGWFBUX0JFWklFUlRPOw0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCArIDFdLm1fUG9pbnRYID0gY29udHJvbDItPnggLyBwYXJhbS0+bV9Db29yZFVuaXQ7DQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50ICsgMV0ubV9Qb2ludFkgPSBjb250cm9sMi0+eSAvIHBhcmFtLT5tX0Nvb3JkVW5pdDsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgKyAxXS5tX0ZsYWcgPSBGWFBUX0JFWklFUlRPOw0KKyAgICAgICAgICAgIHBhcmFtLT5tX3BQb2ludHNbcGFyYW0tPm1fUG9pbnRDb3VudCArIDJdLm1fUG9pbnRYID0gdG8tPnggLyBwYXJhbS0+bV9Db29yZFVuaXQ7DQorICAgICAgICAgICAgcGFyYW0tPm1fcFBvaW50c1twYXJhbS0+bV9Qb2ludENvdW50ICsgMl0ubV9Qb2ludFkgPSB0by0+eSAvIHBhcmFtLT5tX0Nvb3JkVW5pdDsNCisgICAgICAgICAgICBwYXJhbS0+bV9wUG9pbnRzW3BhcmFtLT5tX1BvaW50Q291bnQgKyAyXS5tX0ZsYWcgPSBGWFBUX0JFWklFUlRPOw0KKyAgICAgICAgICAgIHBhcmFtLT5tX0N1clggPSB0by0+eDsNCisgICAgICAgICAgICBwYXJhbS0+bV9DdXJZID0gdG8tPnk7DQorICAgICAgICB9DQorICAgICAgICBwYXJhbS0+bV9Qb2ludENvdW50ICs9IDM7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KK307DQorQ0ZYX1BhdGhEYXRhKiBDRlhfRm9udDo6TG9hZEdseXBoUGF0aChGWF9EV09SRCBnbHlwaF9pbmRleCwgaW50IGRlc3Rfd2lkdGgpDQorew0KKyAgICBpZiAobV9GYWNlID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYRlRfU2V0X1BpeGVsX1NpemVzKG1fRmFjZSwgMCwgNjQpOw0KKyAgICBGWEZUX01hdHJpeCAgZnRfbWF0cml4ID0gezY1NTM2LCAwLCAwLCA2NTUzNn07DQorICAgIGlmIChtX3BTdWJzdEZvbnQpIHsNCisgICAgICAgIGlmIChtX3BTdWJzdEZvbnQtPm1fSXRhbGljQW5nbGUpIHsNCisgICAgICAgICAgICBpbnQgc2tldyA9IG1fcFN1YnN0Rm9udC0+bV9JdGFsaWNBbmdsZTsNCisgICAgICAgICAgICBza2V3ID0gc2tldyA8PSAtMzAgPyAtNTggOiAtZ19BbmdsZVNrZXdbLXNrZXddOw0KKyAgICAgICAgICAgIGlmIChtX2JWZXJ0aWNhbCkgew0KKyAgICAgICAgICAgICAgICBmdF9tYXRyaXgueXggKz0gZnRfbWF0cml4Lnl5ICogc2tldyAvIDEwMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBmdF9tYXRyaXgueHkgKz0gLWZ0X21hdHJpeC54eCAqIHNrZXcgLyAxMDA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKG1fcFN1YnN0Rm9udC0+bV9TdWJzdEZsYWdzICYgRlhGT05UX1NVQlNUX01NKSB7DQorICAgICAgICAgICAgQWRqdXN0TU1QYXJhbXMoZ2x5cGhfaW5kZXgsIGRlc3Rfd2lkdGgsIG1fcFN1YnN0Rm9udC0+bV9XZWlnaHQpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGludCB0cmFuc2ZsYWcgPSBGWEZUX0dldF9GYWNlX0ludGVybmFsX0ZsYWcobV9GYWNlKTsNCisgICAgRlhGVF9TZXRfVHJhbnNmb3JtKG1fRmFjZSwgJmZ0X21hdHJpeCwgMCk7DQorICAgIGludCBsb2FkX2ZsYWdzID0gKG1fRmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19TRk5UKSA/IEZYRlRfTE9BRF9OT19CSVRNQVAgOiBGWEZUX0xPQURfTk9fQklUTUFQIHwgRlRfTE9BRF9OT19ISU5USU5HOw0KKyAgICBpbnQgZXJyb3IgPSBGWEZUX0xvYWRfR2x5cGgobV9GYWNlLCBnbHlwaF9pbmRleCwgbG9hZF9mbGFncyk7DQorICAgIGlmIChlcnJvcikgew0KKyAgICAgICAgRlhGVF9TZXRfRmFjZV9JbnRlcm5hbF9GbGFnKG1fRmFjZSwgdHJhbnNmbGFnKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChtX3BTdWJzdEZvbnQgJiYgIShtX3BTdWJzdEZvbnQtPm1fU3Vic3RGbGFncyAmIEZYRk9OVF9TVUJTVF9NTSkgJiYgbV9wU3Vic3RGb250LT5tX1dlaWdodCA+IDQwMCkgew0KKyAgICAgICAgaW50IGxldmVsID0gMDsNCisgICAgICAgIGlmIChtX3BTdWJzdEZvbnQtPm1fQ2hhcnNldCA9PSBGWEZPTlRfU0hJRlRKSVNfQ0hBUlNFVCkgew0KKyAgICAgICAgICAgIGxldmVsID0gZ19XZWlnaHRQb3dfU0hJRlRKSVNbKG1fcFN1YnN0Rm9udC0+bV9XZWlnaHQgLSA0MDApIC8gMTBdICogMiAqIDY1NTM2IC8gMzY2NTU7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGxldmVsID0gZ19XZWlnaHRQb3dbKG1fcFN1YnN0Rm9udC0+bV9XZWlnaHQgLSA0MDApIC8gMTBdICogMjsNCisgICAgICAgIH0NCisgICAgICAgIEZYRlRfT3V0bGluZV9FbWJvbGRlbihGWEZUX0dldF9HbHlwaF9PdXRsaW5lKG1fRmFjZSksIGxldmVsKTsNCisgICAgfQ0KKyAgICBGWEZUX091dGxpbmVfRnVuY3MgZnVuY3M7DQorICAgIGZ1bmNzLm1vdmVfdG8gPSBfT3V0bGluZV9Nb3ZlVG87DQorICAgIGZ1bmNzLmxpbmVfdG8gPSBfT3V0bGluZV9MaW5lVG87DQorICAgIGZ1bmNzLmNvbmljX3RvID0gX091dGxpbmVfQ29uaWNUbzsNCisgICAgZnVuY3MuY3ViaWNfdG8gPSBfT3V0bGluZV9DdWJpY1RvOw0KKyAgICBmdW5jcy5zaGlmdCA9IDA7DQorICAgIGZ1bmNzLmRlbHRhID0gMDsNCisgICAgT1VUTElORV9QQVJBTVMgcGFyYW1zOw0KKyAgICBwYXJhbXMubV9iQ291bnQgPSBUUlVFOw0KKyAgICBwYXJhbXMubV9Qb2ludENvdW50ID0gMDsNCisgICAgRlhGVF9PdXRsaW5lX0RlY29tcG9zZShGWEZUX0dldF9HbHlwaF9PdXRsaW5lKG1fRmFjZSksICZmdW5jcywgJnBhcmFtcyk7DQorICAgIGlmIChwYXJhbXMubV9Qb2ludENvdW50ID09IDApIHsNCisgICAgICAgIEZYRlRfU2V0X0ZhY2VfSW50ZXJuYWxfRmxhZyhtX0ZhY2UsIHRyYW5zZmxhZyk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfUGF0aERhdGEqIHBQYXRoID0gRlhfTkVXIENGWF9QYXRoRGF0YTsNCisgICAgaWYgKCFwUGF0aCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcFBhdGgtPlNldFBvaW50Q291bnQocGFyYW1zLm1fUG9pbnRDb3VudCk7DQorICAgIHBhcmFtcy5tX2JDb3VudCA9IEZBTFNFOw0KKyAgICBwYXJhbXMubV9Qb2ludENvdW50ID0gMDsNCisgICAgcGFyYW1zLm1fcFBvaW50cyA9IHBQYXRoLT5HZXRQb2ludHMoKTsNCisgICAgcGFyYW1zLm1fQ3VyWCA9IHBhcmFtcy5tX0N1clkgPSAwOw0KKyAgICBwYXJhbXMubV9Db29yZFVuaXQgPSA2NCAqIDY0LjA7DQorICAgIEZYRlRfT3V0bGluZV9EZWNvbXBvc2UoRlhGVF9HZXRfR2x5cGhfT3V0bGluZShtX0ZhY2UpLCAmZnVuY3MsICZwYXJhbXMpOw0KKyAgICBfT3V0bGluZV9DaGVja0VtcHR5Q29udG91cigmcGFyYW1zKTsNCisgICAgcFBhdGgtPlRyaW1Qb2ludHMocGFyYW1zLm1fUG9pbnRDb3VudCk7DQorICAgIGlmIChwYXJhbXMubV9Qb2ludENvdW50KSB7DQorICAgICAgICBwUGF0aC0+R2V0UG9pbnRzKClbcGFyYW1zLm1fUG9pbnRDb3VudCAtIDFdLm1fRmxhZyB8PSBGWFBUX0NMT1NFRklHVVJFOw0KKyAgICB9DQorICAgIEZYRlRfU2V0X0ZhY2VfSW50ZXJuYWxfRmxhZyhtX0ZhY2UsIHRyYW5zZmxhZyk7DQorICAgIHJldHVybiBwUGF0aDsNCit9DQordm9pZCBfQ0ZYX1VuaXF1ZUtleUdlbjo6R2VuZXJhdGUoaW50IGNvdW50LCAuLi4pDQorew0KKyAgICB2YV9saXN0IGFyZ0xpc3Q7DQorICAgIHZhX3N0YXJ0KGFyZ0xpc3QsIGNvdW50KTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSArKykgew0KKyAgICAgICAgaW50IHAgPSB2YV9hcmcoYXJnTGlzdCwgaW50KTsNCisgICAgICAgICgoRlhfRFdPUkQqKW1fS2V5KVtpXSA9IHA7DQorICAgIH0NCisgICAgdmFfZW5kKGFyZ0xpc3QpOw0KKyAgICBtX0tleUxlbiA9IGNvdW50ICogc2l6ZW9mKEZYX0RXT1JEKTsNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnhnZS9nZS90ZXh0X2ludC5oIGIvY29yZS9zcmMvZnhnZS9nZS90ZXh0X2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MDhmOGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL2dlL3RleHRfaW50LmgKQEAgLTAsMCArMSwxMDAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KK3N0cnVjdCBfQ0ZYX1VuaXF1ZUtleUdlbiB7DQorICAgIHZvaWQJCUdlbmVyYXRlKGludCBjb3VudCwgLi4uKTsNCisgICAgRlhfQ0hBUgkJbV9LZXlbMTI4XTsNCisgICAgaW50CQkJbV9LZXlMZW47DQorfTsNCitjbGFzcyBDRlhfU2l6ZUdseXBoQ2FjaGUgOiBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENGWF9TaXplR2x5cGhDYWNoZSgpDQorICAgIHsNCisgICAgICAgIG1fR2x5cGhNYXAuSW5pdEhhc2hUYWJsZSgyNTMpOw0KKyAgICB9DQorICAgIH5DRlhfU2l6ZUdseXBoQ2FjaGUoKTsNCisgICAgQ0ZYX01hcFB0clRvUHRyCQkJbV9HbHlwaE1hcDsNCit9Ow0KK2NsYXNzIENUVEZvbnREZXNjIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDVFRGb250RGVzYygpDQorICAgIHsNCisgICAgICAgIG1fVHlwZSA9IDA7DQorICAgICAgICBtX3BGb250RGF0YSA9IE5VTEw7DQorICAgICAgICBtX1JlZkNvdW50ID0gMDsNCisgICAgfQ0KKyAgICB+Q1RURm9udERlc2MoKTsNCisgICAgRlhfQk9PTAkJCVJlbGVhc2VGYWNlKEZYRlRfRmFjZSBmYWNlKTsNCisgICAgaW50CQkJCW1fVHlwZTsNCisgICAgdW5pb24gew0KKyAgICAgICAgc3RydWN0IHsNCisgICAgICAgICAgICBGWF9CT09MCQltX2JJdGFsaWM7DQorICAgICAgICAgICAgRlhfQk9PTAkJbV9iQm9sZDsNCisgICAgICAgICAgICBGWEZUX0ZhY2UJbV9wRmFjZTsNCisgICAgICAgIH0gbV9TaW5nbGVGYWNlOw0KKyAgICAgICAgc3RydWN0IHsNCisgICAgICAgICAgICBGWEZUX0ZhY2UJbV9wRmFjZXNbMTZdOw0KKyAgICAgICAgfSBtX1RUQ0ZhY2U7DQorICAgIH07DQorICAgIEZYX0JZVEUqCQltX3BGb250RGF0YTsNCisgICAgaW50CQkJCW1fUmVmQ291bnQ7DQorfTsNCitjbGFzcyBDRlhfVW5pY29kZUVuY29kaW5nIDogcHVibGljIElGWF9Gb250RW5jb2RpbmcNCit7DQorcHVibGljOg0KKyAgICBDRlhfVW5pY29kZUVuY29kaW5nKENGWF9Gb250KiBwRm9udCk7DQorICAgIHZpcnR1YWwgRlhfRFdPUkQJCUdseXBoRnJvbUNoYXJDb2RlRXgoRlhfRFdPUkQgY2hhcmNvZGUsIGludCBlbmNvZGluZyA9IEVOQ09ESU5HX1VOSUNPREUpOw0KK3ByaXZhdGU6DQorICAgIENGWF9Gb250KgkJCW1fcEZvbnQ7DQorICAgIHZpcnR1YWwgRlhfRFdPUkQJCUdseXBoRnJvbUNoYXJDb2RlKEZYX0RXT1JEIGNoYXJjb2RlKTsNCisgICAgdmlydHVhbCBDRlhfV2lkZVN0cmluZwlVbmljb2RlRnJvbUNoYXJDb2RlKEZYX0RXT1JEIGNoYXJjb2RlKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gQ0ZYX1dpZGVTdHJpbmcoKEZYX1dDSEFSKWNoYXJjb2RlKTsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEZYX0RXT1JECQlDaGFyQ29kZUZyb21Vbmljb2RlKEZYX1dDSEFSIFVuaWNvZGUpIGNvbnN0DQorICAgIHsNCisgICAgICAgIHJldHVybiBVbmljb2RlOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAkJCUlzVW5pY29kZUNvbXBhdGlibGUoKSBjb25zdA0KKyAgICB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KK307DQorI2RlZmluZSBDSEFSU0VUX0ZMQUdfQU5TSQkJMQ0KKyNkZWZpbmUgQ0hBUlNFVF9GTEFHX1NZTUJPTAkJMg0KKyNkZWZpbmUgQ0hBUlNFVF9GTEFHX1NISUZUSklTCTQNCisjZGVmaW5lIENIQVJTRVRfRkxBR19CSUc1CQk4DQorI2RlZmluZSBDSEFSU0VUX0ZMQUdfR0IJCQkxNg0KKyNkZWZpbmUgQ0hBUlNFVF9GTEFHX0tPUkVBTgkJMzINCitjbGFzcyBDRm9udEZhY2VJbmZvIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRlhfQnl0ZVN0cmluZwkJbV9GaWxlUGF0aDsNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCW1fRmFjZU5hbWU7DQorICAgIEZYX0RXT1JECQkJbV9TdHlsZXM7DQorICAgIEZYX0RXT1JECQkJbV9DaGFyc2V0czsNCisgICAgRlhfRFdPUkQJCQltX0ZvbnRPZmZzZXQ7DQorICAgIEZYX0RXT1JECQkJbV9GaWxlU2l6ZTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCW1fRm9udFRhYmxlczsNCit9Ow0KK2NsYXNzIENGb250RmlsZUZhY2VJbmZvIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRm9udEZpbGVGYWNlSW5mbygpOw0KKyAgICB+Q0ZvbnRGaWxlRmFjZUluZm8oKTsNCisgICAgSUZYX0ZpbGVTdHJlYW0qCQltX3BGaWxlOw0KKyAgICBGWEZUX0ZhY2UJCQltX0ZhY2U7DQorICAgIENGWF9CeXRlU3RyaW5nCQltX0ZhY2VOYW1lOw0KKyAgICBGWF9EV09SRAkJCW1fQ2hhcnNldHM7DQorICAgIEZYX0RXT1JECQkJbV9GaWxlU2l6ZTsNCisgICAgRlhfRFdPUkQJCQltX0ZvbnRPZmZzZXQ7DQorICAgIGludAkJCQkJbV9XZWlnaHQ7DQorICAgIEZYX0JPT0wJCQkJbV9iSXRhbGljOw0KKyAgICBpbnQJCQkJCW1fUGl0Y2hGYW1pbHk7DQorICAgIENGWF9CeXRlU3RyaW5nCQltX0ZvbnRUYWJsZXM7DQorfTsNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL3dpbjMyL2R3cml0ZV9pbnQuaCBiL2NvcmUvc3JjL2Z4Z2Uvd2luMzIvZHdyaXRlX2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMDc3MGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL3dpbjMyL2R3cml0ZV9pbnQuaApAQCAtMCwwICsxLDU5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaWZuZGVmIF9GWF9ESVJFQ1RfV1JJVEVfDQorI2RlZmluZSBfRlhfRElSRUNUX1dSSVRFXw0KKyNpZm5kZWYgREVDTFNQRUNfVVVJRA0KKyNpZiAoX01TQ19WRVIgPj0gMTEwMCkgJiYgZGVmaW5lZCAoX19jcGx1c3BsdXMpDQorI2RlZmluZSBERUNMU1BFQ19VVUlEKHgpICAgIF9fZGVjbHNwZWModXVpZCh4KSkNCisjZWxzZQ0KKyNkZWZpbmUgREVDTFNQRUNfVVVJRCh4KQ0KKyNlbmRpZg0KKyNlbmRpZg0KKyNpZm5kZWYgREVDTFNQRUNfTk9WVEFCTEUNCisjaWYgKF9NU0NfVkVSID49IDExMDApICYmIGRlZmluZWQoX19jcGx1c3BsdXMpDQorI2RlZmluZSBERUNMU1BFQ19OT1ZUQUJMRSAgIF9fZGVjbHNwZWMobm92dGFibGUpDQorI2Vsc2UNCisjZGVmaW5lIERFQ0xTUEVDX05PVlRBQkxFDQorI2VuZGlmDQorI2VuZGlmDQorI2lmKFdJTlZFUiA8IDB4MDUwMCkNCisjaWZuZGVmIF9NQUMNCitERUNMQVJFX0hBTkRMRShITU9OSVRPUik7DQorI2VuZGlmDQorI2VuZGlmDQorY2xhc3MgQ0RXcml0ZUV4dA0KK3sNCitwdWJsaWM6DQorICAgIENEV3JpdGVFeHQoKTsNCisgICAgfkNEV3JpdGVFeHQoKTsNCisNCisgICAgdm9pZAkJCUxvYWQoKTsNCisgICAgdm9pZCAgICAgICAgICAgIFVubG9hZCgpOw0KKw0KKyAgICBGWF9CT09MCQkJSXNBdmFpbGFibGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9wRFdyaXRlRmFjdG9yeSAhPSBOVUxMOw0KKyAgICB9DQorDQorICAgIHZvaWQqCQkJRHdDcmVhdGVGb250RmFjZUZyb21TdHJlYW0oRlhfTFBCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplLCBpbnQgc2ltdWxhdGlvbl9zdHlsZSk7DQorICAgIEZYX0JPT0wgICAgICAgICBEd0NyZWF0ZVJlbmRlcmluZ1RhcmdldChDRlhfRElCaXRtYXAqIHBTcmMsIHZvaWQqKiByZW5kZXJUYXJnZXQpOw0KKyAgICB2b2lkICAgICAgICAgICAgRHdEZWxldGVSZW5kZXJpbmdUYXJnZXQodm9pZCogcmVuZGVyVGFyZ2V0KTsNCisgICAgRlhfQk9PTAkJCUR3UmVuZGluZ1N0cmluZyh2b2lkKiByZW5kZXJUYXJnZXQsIENGWF9DbGlwUmduKiBwQ2xpcFJnbiwgRlhfUkVDVCYgc3RyaW5nUmVjdCwgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpmb250LCBGWF9GTE9BVCBmb250X3NpemUsIEZYX0FSR0IgdGV4dF9jb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2x5cGhfY291bnQsIHVuc2lnbmVkIHNob3J0KiBnbHlwaF9pbmRpY2VzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGJhc2VsaW5lT3JpZ2luWCwgRlhfRkxPQVQgYmFzZWxpbmVPcmlnaW5ZLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGdseXBoX29mZnNldHMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQqIGdseXBoX2FkdmFuY2VzKTsNCisgICAgdm9pZAkJCUR3RGVsZXRlRm9udCh2b2lkKiBwRm9udCk7DQorDQorcHJvdGVjdGVkOg0KKyAgICB2b2lkKgkJCW1faE1vZHVsZTsNCisgICAgdm9pZCoJCQltX3BEV3JpdGVGYWN0b3J5Ow0KKyAgICB2b2lkKgkJICAgIG1fcER3Rm9udENvbnRleHQ7DQorICAgIHZvaWQqCSAgICAgICAgbV9wRHdUZXh0UmVuZGVyZXI7DQorfTsNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL3dpbjMyL2Z4X3dpbjMyX2RldmljZS5jcHAgYi9jb3JlL3NyYy9meGdlL3dpbjMyL2Z4X3dpbjMyX2RldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNmNWFlMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2Uvd2luMzIvZnhfd2luMzJfZGV2aWNlLmNwcApAQCAtMCwwICsxLDEyMDAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaWYgX0ZYX09TXyA9PSBfRlhfV0lOMzJfREVTS1RPUF8gfHwgX0ZYX09TXyA9PSBfRlhfV0lONjRfDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZV93aW4zMi5oIg0KKyNpbmNsdWRlIDxjcnRkYmcuaD4NCisjaW5jbHVkZSAiLi4vYWdnL2luY2x1ZGUvZnhmeF9hZ2dfY2xpcF9saWFuZ19iYXJza3kuaCINCisjaW5jbHVkZSAiZHdyaXRlX2ludC5oIg0KKyNpbmNsdWRlICJ3aW4zMl9pbnQuaCINCisjaW5jbHVkZSAiLi4vZ2UvdGV4dF9pbnQuaCINCisjaW5jbHVkZSAiLi4vZGliL2RpYl9pbnQuaCINCisjaW5jbHVkZSAiLi4vYWdnL2luY2x1ZGUvZnhfYWdnX2RyaXZlci5oIg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZnJlZXR5cGUuaCINCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGNvZGVjL2Z4X2NvZGVjLmgiDQorY2xhc3MgQ1dpbjMyRm9udEluZm8gOiBwdWJsaWMgSUZYX1N5c3RlbUZvbnRJbmZvDQorew0KK3B1YmxpYzoNCisgICAgQ1dpbjMyRm9udEluZm8oKTsNCisgICAgfkNXaW4zMkZvbnRJbmZvKCk7DQorICAgIHZpcnR1YWwgdm9pZAkJUmVsZWFzZSgpOw0KKyAgICB2aXJ0dWFsCUZYX0JPT0wJCUVudW1Gb250TGlzdChDRlhfRm9udE1hcHBlciogcE1hcHBlcik7DQorICAgIHZpcnR1YWwgdm9pZCoJCU1hcEZvbnQoaW50IHdlaWdodCwgRlhfQk9PTCBiSXRhbGljLCBpbnQgY2hhcnNldCwgaW50IHBpdGNoX2ZhbWlseSwgRlhfTFBDU1RSIGZhY2UsIEZYX0JPT0wmIGJFeGFjdCk7DQorICAgIHZpcnR1YWwgdm9pZCoJCUdldEZvbnQoRlhfTFBDU1RSIGZhY2UpDQorICAgIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfRFdPUkQJR2V0Rm9udERhdGEodm9pZCogaEZvbnQsIEZYX0RXT1JEIHRhYmxlLCBGWF9MUEJZVEUgYnVmZmVyLCBGWF9EV09SRCBzaXplKTsNCisgICAgdmlydHVhbCB2b2lkCQlEZWxldGVGb250KHZvaWQqIGhGb250KTsNCisgICAgdmlydHVhbAlGWF9CT09MCQlHZXRGYWNlTmFtZSh2b2lkKiBoRm9udCwgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJCUdldEZvbnRDaGFyc2V0KHZvaWQqIGhGb250LCBpbnQmIGNoYXJzZXQpOw0KKyAgICBGWF9CT09MCQkJCUlzT3BlblR5cGVGcm9tRGl2KGNvbnN0IExPR0ZPTlRBICpwbGYpOw0KKyAgICBGWF9CT09MCQkJCUlzU3VwcG9ydEZvbnRGb3JtRGl2KGNvbnN0IExPR0ZPTlRBKiBwbGYpOw0KKyAgICB2b2lkCQkJCUFkZEluc3RhbGxlZEZvbnQoY29uc3QgTE9HRk9OVEEgKnBsZiwgRlhfRFdPUkQgRm9udFR5cGUpOw0KKyAgICB2b2lkCQkJCUdldEdCUHJlZmVyZW5jZShDRlhfQnl0ZVN0cmluZyYgZmFjZSwgaW50IHdlaWdodCwgaW50IHBpY3RoX2ZhbWlseSk7DQorICAgIHZvaWQJCQkJR2V0SmFwYW5lc2VQcmVmZXJlbmNlKENGWF9CeXRlU3RyaW5nJiBmYWNlLCBpbnQgd2VpZ2h0LCBpbnQgcGljdGhfZmFtaWx5KTsNCisgICAgQ0ZYX0J5dGVTdHJpbmcJCUZpbmRGb250KGNvbnN0IENGWF9CeXRlU3RyaW5nJiBuYW1lKTsNCisgICAgSERDCQkJCQltX2hEQzsNCisgICAgQ0ZYX0ZvbnRNYXBwZXIqCQltX3BNYXBwZXI7DQorICAgIENGWF9CeXRlU3RyaW5nCQltX0xhc3RGYW1pbHk7DQorICAgIENGWF9CeXRlU3RyaW5nCQltX0thaVRpLCBtX0ZhbmdTb25nOw0KK307DQorQ1dpbjMyRm9udEluZm86OkNXaW4zMkZvbnRJbmZvKCkNCit7DQorICAgIG1faERDID0gQ3JlYXRlQ29tcGF0aWJsZURDKE5VTEwpOw0KK30NCitDV2luMzJGb250SW5mbzo6fkNXaW4zMkZvbnRJbmZvKCkNCit7DQorICAgIG1fcE1hcHBlciA9IE5VTEw7DQorfQ0KK3ZvaWQgQ1dpbjMyRm9udEluZm86OlJlbGVhc2UoKQ0KK3sNCisgICAgRGVsZXRlREMobV9oREMpOw0KKyAgICBkZWxldGUgdGhpczsNCit9DQorI2RlZmluZSBUVF9NQUtFX1RBRyh4MSwgeDIsIHgzLCB4NCkgKCgoRlhfRFdPUkQpeDE8PDI0KXwoKEZYX0RXT1JEKXgyPDwxNil8KChGWF9EV09SRCl4Mzw8OCl8KEZYX0RXT1JEKXg0KQ0KK0ZYX0JPT0wgQ1dpbjMyRm9udEluZm86OklzT3BlblR5cGVGcm9tRGl2KGNvbnN0IExPR0ZPTlRBICpwbGYpDQorew0KKyAgICBIRk9OVCBoRm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdEEocGxmKTsNCisgICAgRlhfQk9PTCByZXQgPSBGQUxTRTsNCisgICAgRlhfRFdPUkQgZm9udF9zaXplICA9IEdldEZvbnREYXRhKGhGb250LCAwLCBOVUxMLCAwKTsNCisgICAgaWYgKGZvbnRfc2l6ZSAhPSBHRElfRVJST1IgJiYgZm9udF9zaXplID49IHNpemVvZihGWF9EV09SRCkpIHsNCisgICAgICAgIEZYX0RXT1JEIGxWZXJzaW9uID0gMDsNCisgICAgICAgIEdldEZvbnREYXRhKGhGb250LCAwLCAoRlhfQllURSopKCZsVmVyc2lvbiksIHNpemVvZihGWF9EV09SRCkpOw0KKyAgICAgICAgbFZlcnNpb24gPSAoKChGWF9EV09SRCkoRlhfQllURSkobFZlcnNpb24pKSA8PCAyNCkgfCAoKEZYX0RXT1JEKSgoRlhfQllURSkobFZlcnNpb24gPj4gOCkpKSA8PCAxNiB8DQorICAgICAgICAgICAgICAgICAgICgoRlhfRFdPUkQpKChGWF9CWVRFKShsVmVyc2lvbiA+PiAxNikpKSA8PCA4IHwgKChGWF9CWVRFKShsVmVyc2lvbiA+PiAyNCkpOw0KKyAgICAgICAgaWYgKGxWZXJzaW9uID09IFRUX01BS0VfVEFHKCdPJywgJ1QnLCAnVCcsICdPJykgfHwNCisgICAgICAgICAgICAgICAgbFZlcnNpb24gPT0gMHgwMDAxMDAwMCB8fA0KKyAgICAgICAgICAgICAgICBsVmVyc2lvbiA9PSBUVF9NQUtFX1RBRygndCcsICd0JywgJ2MnLCAnZicpIHx8DQorICAgICAgICAgICAgICAgIGxWZXJzaW9uID09IFRUX01BS0VfVEFHKCd0JywgJ3InLCAndScsICdlJykgfHwNCisgICAgICAgICAgICAgICAgbFZlcnNpb24gPT0gMHgwMDAyMDAwMCkgew0KKyAgICAgICAgICAgIHJldCA9IFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRGVsZXRlRm9udChoRm9udCk7DQorICAgIHJldHVybiByZXQ7DQorfQ0KK0ZYX0JPT0wgQ1dpbjMyRm9udEluZm86OklzU3VwcG9ydEZvbnRGb3JtRGl2KGNvbnN0IExPR0ZPTlRBKiBwbGYpDQorew0KKyAgICBIRk9OVCBoRm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdEEocGxmKTsNCisgICAgRlhfQk9PTCByZXQgPSBGQUxTRTsNCisgICAgRlhfRFdPUkQgZm9udF9zaXplICA9IEdldEZvbnREYXRhKGhGb250LCAwLCBOVUxMLCAwKTsNCisgICAgaWYgKGZvbnRfc2l6ZSAhPSBHRElfRVJST1IgJiYgZm9udF9zaXplID49IHNpemVvZihGWF9EV09SRCkpIHsNCisgICAgICAgIEZYX0RXT1JEIGxWZXJzaW9uID0gMDsNCisgICAgICAgIEdldEZvbnREYXRhKGhGb250LCAwLCAoRlhfQllURSopKCZsVmVyc2lvbiksIHNpemVvZihGWF9EV09SRCkpOw0KKyAgICAgICAgbFZlcnNpb24gPSAoKChGWF9EV09SRCkoRlhfQllURSkobFZlcnNpb24pKSA8PCAyNCkgfCAoKEZYX0RXT1JEKSgoRlhfQllURSkobFZlcnNpb24gPj4gOCkpKSA8PCAxNiB8DQorICAgICAgICAgICAgICAgICAgICgoRlhfRFdPUkQpKChGWF9CWVRFKShsVmVyc2lvbiA+PiAxNikpKSA8PCA4IHwgKChGWF9CWVRFKShsVmVyc2lvbiA+PiAyNCkpOw0KKyAgICAgICAgaWYgKGxWZXJzaW9uID09IFRUX01BS0VfVEFHKCdPJywgJ1QnLCAnVCcsICdPJykgfHwNCisgICAgICAgICAgICAgICAgbFZlcnNpb24gPT0gMHgwMDAxMDAwMCB8fA0KKyAgICAgICAgICAgICAgICBsVmVyc2lvbiA9PSBUVF9NQUtFX1RBRygndCcsICd0JywgJ2MnLCAnZicpIHx8DQorICAgICAgICAgICAgICAgIGxWZXJzaW9uID09IFRUX01BS0VfVEFHKCd0JywgJ3InLCAndScsICdlJykgfHwNCisgICAgICAgICAgICAgICAgbFZlcnNpb24gPT0gMHgwMDAyMDAwMCkgew0KKyAgICAgICAgICAgIHJldCA9IFRSVUU7DQorICAgICAgICB9IGVsc2UgaWYgKChsVmVyc2lvbiAmIDB4RkZGRjAwMDApID09IFRUX01BS0VfVEFHKDB4ODAsIDB4MDEsIDB4MDAsIDB4MDApIHx8DQorICAgICAgICAgICAgICAgICAgIChsVmVyc2lvbiAmIDB4RkZGRjAwMDApID09IFRUX01BS0VfVEFHKCclJywgJyEnLCAwLCAwKSkgew0KKyAgICAgICAgICAgIHJldCA9IFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgRGVsZXRlRm9udChoRm9udCk7DQorICAgIHJldHVybiByZXQ7DQorfQ0KK3ZvaWQgQ1dpbjMyRm9udEluZm86OkFkZEluc3RhbGxlZEZvbnQoY29uc3QgTE9HRk9OVEEgKnBsZiwgRlhfRFdPUkQgRm9udFR5cGUpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBuYW1lKHBsZi0+bGZGYWNlTmFtZSwgLTEpOw0KKyAgICBpZiAobmFtZVswXSA9PSAnQCcpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAobmFtZSA9PSBtX0xhc3RGYW1pbHkpIHsNCisgICAgICAgIG1fcE1hcHBlci0+QWRkSW5zdGFsbGVkRm9udChuYW1lLCBwbGYtPmxmQ2hhclNldCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKCEoRm9udFR5cGUgJiBUUlVFVFlQRV9GT05UVFlQRSkgJiYgIShGb250VHlwZSAmIERFVklDRV9GT05UVFlQRSkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoIShGb250VHlwZSAmIFRSVUVUWVBFX0ZPTlRUWVBFKSkgew0KKyAgICAgICAgaWYgKCFJc1N1cHBvcnRGb250Rm9ybURpdihwbGYpKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIG1fcE1hcHBlci0+QWRkSW5zdGFsbGVkRm9udChuYW1lLCBwbGYtPmxmQ2hhclNldCk7DQorICAgIG1fTGFzdEZhbWlseSA9IG5hbWU7DQorfQ0KK3N0YXRpYyBpbnQgQ0FMTEJBQ0sgRm9udEVudW1Qcm9jKA0KKyAgICBjb25zdCBMT0dGT05UQSAqcGxmLA0KKyAgICBjb25zdCBURVhUTUVUUklDQSAqbHBudG1lLA0KKyAgICBGWF9EV09SRCBGb250VHlwZSwNCisgICAgTFBBUkFNIGxQYXJhbQ0KKykNCit7DQorICAgIENXaW4zMkZvbnRJbmZvKiBwRm9udEluZm8gPSAoQ1dpbjMyRm9udEluZm8qKWxQYXJhbTsNCisgICAgaWYgKHBGb250SW5mby0+bV9wTWFwcGVyLT5HZXRGb250RW51bWVyYXRvcigpKSB7DQorICAgICAgICBwRm9udEluZm8tPm1fcE1hcHBlci0+R2V0Rm9udEVudW1lcmF0b3IoKS0+SGl0Rm9udCgpOw0KKyAgICB9DQorICAgIHBGb250SW5mby0+QWRkSW5zdGFsbGVkRm9udChwbGYsIEZvbnRUeXBlKTsNCisgICAgcmV0dXJuIDE7DQorfQ0KK0ZYX0JPT0wgQ1dpbjMyRm9udEluZm86OkVudW1Gb250TGlzdChDRlhfRm9udE1hcHBlciogcE1hcHBlcikNCit7DQorICAgIG1fcE1hcHBlciA9IHBNYXBwZXI7DQorICAgIExPR0ZPTlRBIGxmOw0KKyAgICBGWFNZU19tZW1zZXQzMigmbGYsIDAsIHNpemVvZihMT0dGT05UQSkpOw0KKyAgICBsZi5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7DQorICAgIGxmLmxmRmFjZU5hbWVbMF0gPSAwOw0KKyAgICBsZi5sZlBpdGNoQW5kRmFtaWx5ID0gMDsNCisgICAgRW51bUZvbnRGYW1pbGllc0V4QShtX2hEQywgJmxmLCAoRk9OVEVOVU1QUk9DQSlGb250RW51bVByb2MsIChGWF9VSU5UUFRSKXRoaXMsIDApOw0KKyAgICBpZiAocE1hcHBlci0+R2V0Rm9udEVudW1lcmF0b3IoKSkgew0KKyAgICAgICAgcE1hcHBlci0+R2V0Rm9udEVudW1lcmF0b3IoKS0+RmluaXNoKCk7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgew0KKyAgICBGWF9MUENTVFIJbV9wRmFjZU5hbWU7DQorICAgIEZYX0xQQ1NUUgltX3BWYXJpYW50TmFtZTsNCit9DQorVmFyaWFudE5hbWVzW10gPSB7DQorICAgIHsiREZLYWktU0IiLCAiXHgxOVx4NkFceDc3XHg2OVx4RDRceDlBIn0sDQorfTsNCitzdGF0aWMgY29uc3Qgc3RydWN0IHsNCisgICAgRlhfTFBDU1RSCW1fcE5hbWU7DQorICAgIEZYX0xQQ1NUUgltX3BXaW5OYW1lOw0KKyAgICBGWF9CT09MCQltX2JCb2xkOw0KKyAgICBGWF9CT09MCQltX2JJdGFsaWM7DQorfQ0KK0Jhc2UxNFN1YnN0c1tdID0gew0KKyAgICB7IkNvdXJpZXIiLCAiQ291cmllciBOZXciLCBGQUxTRSwgRkFMU0V9LA0KKyAgICB7IkNvdXJpZXItQm9sZCIsICJDb3VyaWVyIE5ldyIsIFRSVUUsIEZBTFNFfSwNCisgICAgeyJDb3VyaWVyLUJvbGRPYmxpcXVlIiwgIkNvdXJpZXIgTmV3IiwgVFJVRSwgVFJVRX0sDQorICAgIHsiQ291cmllci1PYmxpcXVlIiwgIkNvdXJpZXIgTmV3IiwgRkFMU0UsIFRSVUV9LA0KKyAgICB7IkhlbHZldGljYSIsICJBcmlhbCIsIEZBTFNFLCBGQUxTRX0sDQorICAgIHsiSGVsdmV0aWNhLUJvbGQiLCAiQXJpYWwiLCBUUlVFLCBGQUxTRX0sDQorICAgIHsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIiwgIkFyaWFsIiwgVFJVRSwgVFJVRX0sDQorICAgIHsiSGVsdmV0aWNhLU9ibGlxdWUiLCAiQXJpYWwiLCBGQUxTRSwgVFJVRX0sDQorICAgIHsiVGltZXMtUm9tYW4iLCAiVGltZXMgTmV3IFJvbWFuIiwgRkFMU0UsIEZBTFNFfSwNCisgICAgeyJUaW1lcy1Cb2xkIiwgIlRpbWVzIE5ldyBSb21hbiIsIFRSVUUsIEZBTFNFfSwNCisgICAgeyJUaW1lcy1Cb2xkSXRhbGljIiwgIlRpbWVzIE5ldyBSb21hbiIsIFRSVUUsIFRSVUV9LA0KKyAgICB7IlRpbWVzLUl0YWxpYyIsICJUaW1lcyBOZXcgUm9tYW4iLCBGQUxTRSwgVFJVRX0sDQorfTsNCitDRlhfQnl0ZVN0cmluZyBDV2luMzJGb250SW5mbzo6RmluZEZvbnQoY29uc3QgQ0ZYX0J5dGVTdHJpbmcmIG5hbWUpDQorew0KKyAgICBpZiAobV9wTWFwcGVyID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBuYW1lOw0KKyAgICB9DQorICAgIGludCBuRm9udHMgPSBtX3BNYXBwZXItPm1fSW5zdGFsbGVkVFRGb250cy5HZXRTaXplKCk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkZvbnRzOyBpICsrKSB7DQorICAgICAgICBDRlhfQnl0ZVN0cmluZyB0aGlzbmFtZSA9IG1fcE1hcHBlci0+bV9JbnN0YWxsZWRUVEZvbnRzW2ldOw0KKyAgICAgICAgaWYgKHRoaXNuYW1lWzBdID09ICcgJykgew0KKyAgICAgICAgICAgIGlmICh0aGlzbmFtZS5NaWQoMSwgbmFtZS5HZXRMZW5ndGgoKSkgPT0gbmFtZSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gbV9wTWFwcGVyLT5tX0luc3RhbGxlZFRURm9udHNbaSArIDFdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAodGhpc25hbWUuTGVmdChuYW1lLkdldExlbmd0aCgpKSA9PSBuYW1lKSB7DQorICAgICAgICAgICAgcmV0dXJuIG1fcE1hcHBlci0+bV9JbnN0YWxsZWRUVEZvbnRzW2ldOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBDRlhfQnl0ZVN0cmluZygpOw0KK30NCitzdHJ1Y3QgX0ZvbnROYW1lTWFwIHsNCisgICAgRlhfTFBDU1RSCW1fcFN1YkZvbnROYW1lOw0KKyAgICBGWF9MUENTVFIJbV9wU3JjRm9udE5hbWU7DQorfTsNCitjb25zdCBfRm9udE5hbWVNYXAgZ19KcEZvbnROYW1lTWFwW10gPSB7DQorICAgIHsiTVMgTWluY2hvIiwgIkhlaXNlaW1pbi1XMyJ9LA0KKyAgICB7Ik1TIEdvdGhpYyIsICJKdW4xMDEtTGlnaHQifSwNCit9Ow0KK2NvbnN0IF9Gb250TmFtZU1hcCBnX0diRm9udE5hbWVNYXBbMV07DQorZXh0ZXJuICJDIiB7DQorICAgIHN0YXRpYyBpbnQgY29tcGFyZVN0cmluZyhjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIGVsZW1lbnQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGWFNZU19zdHJpY21wKChGWF9MUENTVFIpa2V5LCAoKF9Gb250TmFtZU1hcCopZWxlbWVudCktPm1fcFNyY0ZvbnROYW1lKTsNCisgICAgfQ0KK30NCitGWF9CT09MIF9HZXRTdWJGb250TmFtZShDRlhfQnl0ZVN0cmluZyYgbmFtZSwgaW50IGxhbmcpDQorew0KKyAgICBpbnQgc2l6ZSA9IHNpemVvZiBnX0pwRm9udE5hbWVNYXA7DQorICAgIHZvaWQqIHBGb250bmFtZU1hcCA9ICh2b2lkKilnX0pwRm9udE5hbWVNYXA7DQorICAgIGlmIChsYW5nID09IDEpIHsNCisgICAgICAgIHNpemUgPSBzaXplb2YgZ19HYkZvbnROYW1lTWFwOw0KKyAgICAgICAgcEZvbnRuYW1lTWFwID0gKHZvaWQqKWdfR2JGb250TmFtZU1hcDsNCisgICAgfSBlbHNlIGlmIChsYW5nID09IDIpIHsNCisgICAgICAgIHNpemUgPSAwOw0KKyAgICB9DQorICAgIF9Gb250TmFtZU1hcCogZm91bmQgPSAoX0ZvbnROYW1lTWFwKilGWFNZU19ic2VhcmNoKChGWF9MUENTVFIpbmFtZSwgcEZvbnRuYW1lTWFwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSAvIHNpemVvZiAoX0ZvbnROYW1lTWFwKSwgc2l6ZW9mIChfRm9udE5hbWVNYXApLCBjb21wYXJlU3RyaW5nKTsNCisgICAgaWYgKGZvdW5kID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBuYW1lID0gZm91bmQtPm1fcFN1YkZvbnROYW1lOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQordm9pZCBDV2luMzJGb250SW5mbzo6R2V0R0JQcmVmZXJlbmNlKENGWF9CeXRlU3RyaW5nJiBmYWNlLCBpbnQgd2VpZ2h0LCBpbnQgcGljdGhfZmFtaWx5KQ0KK3sNCisgICAgaWYgKGZhY2UuRmluZCgiS2FpVGkiKSA+PSAwIHx8IGZhY2UuRmluZCgiXHhiZlx4YWMiKSA+PSAwKSB7DQorICAgICAgICBpZiAobV9LYWlUaS5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICBtX0thaVRpID0gRmluZEZvbnQoIkthaVRpIik7DQorICAgICAgICAgICAgaWYgKG1fS2FpVGkuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIG1fS2FpVGkgPSAiU2ltU3VuIjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBmYWNlID0gbV9LYWlUaTsNCisgICAgfSBlbHNlIGlmIChmYWNlLkZpbmQoIkZhbmdTb25nIikgPj0gMCB8fCBmYWNlLkZpbmQoIlx4YjdceGMyXHhjYlx4Y2UiKSA+PSAwKSB7DQorICAgICAgICBpZiAobV9GYW5nU29uZy5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICBtX0ZhbmdTb25nID0gRmluZEZvbnQoIkZhbmdTb25nIik7DQorICAgICAgICAgICAgaWYgKG1fRmFuZ1NvbmcuSXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIG1fRmFuZ1NvbmcgPSAiU2ltU3VuIjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBmYWNlID0gbV9GYW5nU29uZzsNCisgICAgfSBlbHNlIGlmIChmYWNlLkZpbmQoIlNpbVN1biIpID49IDAgfHwgZmFjZS5GaW5kKCJceGNiXHhjZSIpID49IDApIHsNCisgICAgICAgIGZhY2UgPSAiU2ltU3VuIjsNCisgICAgfSBlbHNlIGlmIChmYWNlLkZpbmQoIlNpbUhlaSIpID49IDAgfHwgZmFjZS5GaW5kKCJceGJhXHhkYSIpID49IDApIHsNCisgICAgICAgIGZhY2UgPSAiU2ltSGVpIjsNCisgICAgfSBlbHNlIGlmICghKHBpY3RoX2ZhbWlseSAmIEZGX1JPTUFOKSAmJiB3ZWlnaHQgPiA1NTApIHsNCisgICAgICAgIGZhY2UgPSAiU2ltSGVpIjsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGZhY2UgPSAiU2ltU3VuIjsNCisgICAgfQ0KK30NCit2b2lkIENXaW4zMkZvbnRJbmZvOjpHZXRKYXBhbmVzZVByZWZlcmVuY2UoQ0ZYX0J5dGVTdHJpbmcmIGZhY2UsIGludCB3ZWlnaHQsIGludCBwaWN0aF9mYW1pbHkpDQorew0KKyAgICBpZiAoZmFjZS5GaW5kKCJHb3RoaWMiKSA+PSAwIHx8IGZhY2UuRmluZCgiXHg4M1x4NTNceDgzXHg1Nlx4ODNceDYyXHg4M1x4NGUiKSA+PSAwKSB7DQorICAgICAgICBpZiAoZmFjZS5GaW5kKCJQR290aGljIikgPj0gMCB8fCBmYWNlLkZpbmQoIlx4ODJceDZmXHg4M1x4NTNceDgzXHg1Nlx4ODNceDYyXHg4M1x4NGUiKSA+PSAwKSB7DQorICAgICAgICAgICAgZmFjZSA9ICJNUyBQR290aGljIjsNCisgICAgICAgIH0gZWxzZSBpZiAoZmFjZS5GaW5kKCJVSSBHb3RoaWMiKSA+PSAwKSB7DQorICAgICAgICAgICAgZmFjZSA9ICJNUyBVSSBHb3RoaWMiOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAoZmFjZS5GaW5kKCJIR1NHb3RoaWNNIikgPj0gMCB8fCBmYWNlLkZpbmQoIkhHTWFydUdvdGhpY01QUk8iKSA+PSAwKSB7DQorICAgICAgICAgICAgICAgIGZhY2UgPSAiTVMgUEdvdGhpYyI7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgZmFjZSA9ICJNUyBHb3RoaWMiOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgfSBlbHNlIGlmIChmYWNlLkZpbmQoIk1pbmNobyIpID49IDAgfHwgZmFjZS5GaW5kKCJceDk2XHhiZVx4OTJceGE5IikgPj0gMCkgew0KKyAgICAgICAgaWYgKGZhY2UuRmluZCgiUE1pbmNobyIpID49IDAgfHwgZmFjZS5GaW5kKCJceDgyXHg2Zlx4OTZceGJlXHg5Mlx4YTkiKSA+PSAwKSB7DQorICAgICAgICAgICAgZmFjZSA9ICJNUyBQTWluY2hvIjsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgZmFjZSA9ICJNUyBNaW5jaG8iOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIGlmIChfR2V0U3ViRm9udE5hbWUoZmFjZSwgMCkpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoIShwaWN0aF9mYW1pbHkgJiBGRl9ST01BTikgJiYgd2VpZ2h0ID4gNDAwKSB7DQorICAgICAgICBmYWNlID0gIk1TIFBHb3RoaWMiOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZmFjZSA9ICJNUyBQTWluY2hvIjsNCisgICAgfQ0KK30NCit2b2lkKiBDV2luMzJGb250SW5mbzo6TWFwRm9udChpbnQgd2VpZ2h0LCBGWF9CT09MIGJJdGFsaWMsIGludCBjaGFyc2V0LCBpbnQgcGl0Y2hfZmFtaWx5LCBGWF9MUENTVFIgY3N0cl9mYWNlLCBGWF9CT09MJiBiRXhhY3QpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBmYWNlID0gY3N0cl9mYWNlOw0KKyAgICBpbnQgaUJhc2VGb250Ow0KKyAgICBmb3IgKGlCYXNlRm9udCA9IDA7IGlCYXNlRm9udCA8IDEyOyBpQmFzZUZvbnQgKyspDQorICAgICAgICBpZiAoZmFjZSA9PSBDRlhfQnl0ZVN0cmluZ0MoQmFzZTE0U3Vic3RzW2lCYXNlRm9udF0ubV9wTmFtZSkpIHsNCisgICAgICAgICAgICBmYWNlID0gQmFzZTE0U3Vic3RzW2lCYXNlRm9udF0ubV9wV2luTmFtZTsNCisgICAgICAgICAgICB3ZWlnaHQgPSBCYXNlMTRTdWJzdHNbaUJhc2VGb250XS5tX2JCb2xkID8gRldfQk9MRCA6IEZXX05PUk1BTDsNCisgICAgICAgICAgICBiSXRhbGljID0gQmFzZTE0U3Vic3RzW2lCYXNlRm9udF0ubV9iSXRhbGljOw0KKyAgICAgICAgICAgIGJFeGFjdCA9IFRSVUU7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIGlmIChjaGFyc2V0ID09IEFOU0lfQ0hBUlNFVCB8fCBjaGFyc2V0ID09IFNZTUJPTF9DSEFSU0VUKSB7DQorICAgICAgICBjaGFyc2V0ID0gREVGQVVMVF9DSEFSU0VUOw0KKyAgICB9DQorICAgIGludCBzdWJzdF9waXRjaF9mYW1pbHkgPSBwaXRjaF9mYW1pbHk7DQorICAgIHN3aXRjaCAoY2hhcnNldCkgew0KKyAgICAgICAgY2FzZSBTSElGVEpJU19DSEFSU0VUOg0KKyAgICAgICAgICAgIHN1YnN0X3BpdGNoX2ZhbWlseSA9IEZGX1JPTUFOOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBDSElORVNFQklHNV9DSEFSU0VUOg0KKyAgICAgICAgY2FzZSBIQU5HVUxfQ0hBUlNFVDoNCisgICAgICAgIGNhc2UgR0IyMzEyX0NIQVJTRVQ6DQorICAgICAgICAgICAgc3Vic3RfcGl0Y2hfZmFtaWx5ID0gMDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICBIRk9OVCBoRm9udCA9IDo6Q3JlYXRlRm9udEEoLTEwLCAwLCAwLCAwLCB3ZWlnaHQsIGJJdGFsaWMsIDAsIDAsIGNoYXJzZXQsIE9VVF9UVF9PTkxZX1BSRUNJUywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHN1YnN0X3BpdGNoX2ZhbWlseSwgZmFjZSk7DQorICAgIGNoYXIgZmFjZWJ1ZlsxMDBdOw0KKyAgICBIRk9OVCBoT2xkRm9udCA9IChIRk9OVCk6OlNlbGVjdE9iamVjdChtX2hEQywgaEZvbnQpOw0KKyAgICBpbnQgcmV0ID0gOjpHZXRUZXh0RmFjZUEobV9oREMsIDEwMCwgZmFjZWJ1Zik7DQorICAgIDo6U2VsZWN0T2JqZWN0KG1faERDLCBoT2xkRm9udCk7DQorICAgIGlmIChmYWNlLkVxdWFsTm9DYXNlKGZhY2VidWYpKSB7DQorICAgICAgICByZXR1cm4gaEZvbnQ7DQorICAgIH0NCisgICAgaW50IGlDb3VudCA9IHNpemVvZihWYXJpYW50TmFtZXMpIC8gc2l6ZW9mKFZhcmlhbnROYW1lc1swXSk7DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaUNvdW50OyArK2kpIHsNCisgICAgICAgIGlmIChmYWNlID09IFZhcmlhbnROYW1lc1tpXS5tX3BGYWNlTmFtZSkgew0KKyAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHdzRmFjZSA9IENGWF9XaWRlU3RyaW5nOjpGcm9tTG9jYWwoZmFjZWJ1Zik7DQorICAgICAgICAgICAgQ0ZYX1dpZGVTdHJpbmcgd3NOYW1lID0gQ0ZYX1dpZGVTdHJpbmc6OkZyb21VVEYxNkxFKChjb25zdCB1bnNpZ25lZCBzaG9ydCopVmFyaWFudE5hbWVzW2ldLm1fcFZhcmlhbnROYW1lKTsNCisgICAgICAgICAgICBpZiAod3NGYWNlID09IHdzTmFtZSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gaEZvbnQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIDo6RGVsZXRlT2JqZWN0KGhGb250KTsNCisgICAgaWYgKGNoYXJzZXQgPT0gREVGQVVMVF9DSEFSU0VUKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBzd2l0Y2ggKGNoYXJzZXQpIHsNCisgICAgICAgIGNhc2UgU0hJRlRKSVNfQ0hBUlNFVDoNCisgICAgICAgICAgICBHZXRKYXBhbmVzZVByZWZlcmVuY2UoZmFjZSwgd2VpZ2h0LCBwaXRjaF9mYW1pbHkpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBHQjIzMTJfQ0hBUlNFVDoNCisgICAgICAgICAgICBHZXRHQlByZWZlcmVuY2UoZmFjZSwgd2VpZ2h0LCBwaXRjaF9mYW1pbHkpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBIQU5HVUxfQ0hBUlNFVDoNCisgICAgICAgICAgICBmYWNlID0gIkd1bGltIjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgQ0hJTkVTRUJJRzVfQ0hBUlNFVDoNCisgICAgICAgICAgICBpZiAoZmFjZS5GaW5kKCJNU3VuZyIpID49IDApIHsNCisgICAgICAgICAgICAgICAgZmFjZSA9ICJNaW5nTGlVIjsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBmYWNlID0gIlBNaW5nTGlVIjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgaEZvbnQgPSA6OkNyZWF0ZUZvbnRBKC0xMCwgMCwgMCwgMCwgd2VpZ2h0LCBiSXRhbGljLCAwLCAwLCBjaGFyc2V0LCBPVVRfVFRfT05MWV9QUkVDSVMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBzdWJzdF9waXRjaF9mYW1pbHksIGZhY2UpOw0KKyAgICByZXR1cm4gaEZvbnQ7DQorfQ0KK3ZvaWQgQ1dpbjMyRm9udEluZm86OkRlbGV0ZUZvbnQodm9pZCogaEZvbnQpDQorew0KKyAgICA6OkRlbGV0ZU9iamVjdChoRm9udCk7DQorfQ0KK0ZYX0RXT1JEIENXaW4zMkZvbnRJbmZvOjpHZXRGb250RGF0YSh2b2lkKiBoRm9udCwgRlhfRFdPUkQgdGFibGUsIEZYX0xQQllURSBidWZmZXIsIEZYX0RXT1JEIHNpemUpDQorew0KKyAgICBIRk9OVCBoT2xkRm9udCA9IChIRk9OVCk6OlNlbGVjdE9iamVjdChtX2hEQywgKEhGT05UKWhGb250KTsNCisgICAgdGFibGUgPSBGWERXT1JEX0ZST01fTVNCRklSU1QodGFibGUpOw0KKyAgICBzaXplID0gOjpHZXRGb250RGF0YShtX2hEQywgdGFibGUsIDAsIGJ1ZmZlciwgc2l6ZSk7DQorICAgIDo6U2VsZWN0T2JqZWN0KG1faERDLCBoT2xkRm9udCk7DQorICAgIGlmIChzaXplID09IEdESV9FUlJPUikgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgcmV0dXJuIHNpemU7DQorfQ0KK0ZYX0JPT0wgQ1dpbjMyRm9udEluZm86OkdldEZhY2VOYW1lKHZvaWQqIGhGb250LCBDRlhfQnl0ZVN0cmluZyYgbmFtZSkNCit7DQorICAgIGNoYXIgZmFjZWJ1ZlsxMDBdOw0KKyAgICBIRk9OVCBoT2xkRm9udCA9IChIRk9OVCk6OlNlbGVjdE9iamVjdChtX2hEQywgKEhGT05UKWhGb250KTsNCisgICAgaW50IHJldCA9IDo6R2V0VGV4dEZhY2VBKG1faERDLCAxMDAsIGZhY2VidWYpOw0KKyAgICA6OlNlbGVjdE9iamVjdChtX2hEQywgaE9sZEZvbnQpOw0KKyAgICBpZiAocmV0ID09IDApIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBuYW1lID0gZmFjZWJ1ZjsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1dpbjMyRm9udEluZm86OkdldEZvbnRDaGFyc2V0KHZvaWQqIGhGb250LCBpbnQmIGNoYXJzZXQpDQorew0KKyAgICBURVhUTUVUUklDIHRtOw0KKyAgICBIRk9OVCBoT2xkRm9udCA9IChIRk9OVCk6OlNlbGVjdE9iamVjdChtX2hEQywgKEhGT05UKWhGb250KTsNCisgICAgOjpHZXRUZXh0TWV0cmljcyhtX2hEQywgJnRtKTsNCisgICAgOjpTZWxlY3RPYmplY3QobV9oREMsIGhPbGRGb250KTsNCisgICAgY2hhcnNldCA9IHRtLnRtQ2hhclNldDsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCitJRlhfU3lzdGVtRm9udEluZm8qIElGWF9TeXN0ZW1Gb250SW5mbzo6Q3JlYXRlRGVmYXVsdCgpDQorew0KKyAgICByZXR1cm4gRlhfTkVXIENXaW4zMkZvbnRJbmZvOw0KK30NCisjZW5kaWYNCit2b2lkIENGWF9HRU1vZHVsZTo6SW5pdFBsYXRmb3JtKCkNCit7DQorICAgIENXaW4zMlBsYXRmb3JtKiBwUGxhdGZvcm1EYXRhID0gRlhfTkVXIENXaW4zMlBsYXRmb3JtOw0KKyAgICBpZiAoIXBQbGF0Zm9ybURhdGEpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBPU1ZFUlNJT05JTkZPIHZlcjsNCisgICAgdmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2YodmVyKTsNCisgICAgR2V0VmVyc2lvbkV4KCZ2ZXIpOw0KKyAgICBwUGxhdGZvcm1EYXRhLT5tX2JIYWxmVG9uZSA9IHZlci5kd01ham9yVmVyc2lvbiA+PSA1Ow0KKyAgICBwUGxhdGZvcm1EYXRhLT5tX0dkaXBsdXNFeHQuTG9hZCgpOw0KKyAgICBtX3BQbGF0Zm9ybURhdGEgPSBwUGxhdGZvcm1EYXRhOw0KKyAgICBtX3BGb250TWdyLT5TZXRTeXN0ZW1Gb250SW5mbyhJRlhfU3lzdGVtRm9udEluZm86OkNyZWF0ZURlZmF1bHQoKSk7DQorfQ0KK3ZvaWQgQ0ZYX0dFTW9kdWxlOjpEZXN0cm95UGxhdGZvcm0oKQ0KK3sNCisgICAgaWYgKG1fcFBsYXRmb3JtRGF0YSkgew0KKyAgICAgICAgZGVsZXRlIChDV2luMzJQbGF0Zm9ybSopbV9wUGxhdGZvcm1EYXRhOw0KKyAgICB9DQorICAgIG1fcFBsYXRmb3JtRGF0YSA9IE5VTEw7DQorfQ0KK0NHZGlEZXZpY2VEcml2ZXI6OkNHZGlEZXZpY2VEcml2ZXIoSERDIGhEQywgaW50IGRldmljZV9jbGFzcykNCit7DQorICAgIG1faERDID0gaERDOw0KKyAgICBtX0RldmljZUNsYXNzID0gZGV2aWNlX2NsYXNzOw0KKyAgICBDV2luMzJQbGF0Zm9ybSogcFBsYXRmb3JtID0gKENXaW4zMlBsYXRmb3JtKilDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKTsNCisgICAgU2V0U3RyZXRjaEJsdE1vZGUoaERDLCBwUGxhdGZvcm0tPm1fYkhhbGZUb25lID8gSEFMRlRPTkUgOiBDT0xPUk9OQ09MT1IpOw0KKyAgICBpZiAoR2V0T2JqZWN0VHlwZShtX2hEQykgPT0gT0JKX01FTURDKSB7DQorICAgICAgICBIQklUTUFQIGhCaXRtYXAgPSBDcmVhdGVCaXRtYXAoMSwgMSwgMSwgMSwgTlVMTCk7DQorICAgICAgICBoQml0bWFwID0gKEhCSVRNQVApU2VsZWN0T2JqZWN0KG1faERDLCBoQml0bWFwKTsNCisgICAgICAgIEJJVE1BUCBiaXRtYXA7DQorICAgICAgICBHZXRPYmplY3QoaEJpdG1hcCwgc2l6ZW9mIGJpdG1hcCwgJmJpdG1hcCk7DQorICAgICAgICBtX25CaXRzUGVyUGl4ZWwgPSBiaXRtYXAuYm1CaXRzUGl4ZWw7DQorICAgICAgICBtX1dpZHRoID0gYml0bWFwLmJtV2lkdGg7DQorICAgICAgICBtX0hlaWdodCA9IGFicyhiaXRtYXAuYm1IZWlnaHQpOw0KKyAgICAgICAgaEJpdG1hcCA9IChIQklUTUFQKVNlbGVjdE9iamVjdChtX2hEQywgaEJpdG1hcCk7DQorICAgICAgICBEZWxldGVPYmplY3QoaEJpdG1hcCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX25CaXRzUGVyUGl4ZWwgPSA6OkdldERldmljZUNhcHMobV9oREMsIEJJVFNQSVhFTCk7DQorICAgICAgICBtX1dpZHRoID0gOjpHZXREZXZpY2VDYXBzKG1faERDLCBIT1JaUkVTKTsNCisgICAgICAgIG1fSGVpZ2h0ID0gOjpHZXREZXZpY2VDYXBzKG1faERDLCBWRVJUUkVTKTsNCisgICAgfQ0KKyAgICBpZiAobV9EZXZpY2VDbGFzcyAhPSBGWERDX0RJU1BMQVkpIHsNCisgICAgICAgIG1fUmVuZGVyQ2FwcyA9IEZYUkNfQklUX01BU0s7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBtX1JlbmRlckNhcHMgPSBGWFJDX0dFVF9CSVRTIHwgRlhSQ19CSVRfTUFTSzsNCisgICAgfQ0KK30NCitpbnQgQ0dkaURldmljZURyaXZlcjo6R2V0RGV2aWNlQ2FwcyhpbnQgY2Fwc19pZCkNCit7DQorICAgIHN3aXRjaCAoY2Fwc19pZCkgew0KKyAgICAgICAgY2FzZSBGWERDX0RFVklDRV9DTEFTUzoNCisgICAgICAgICAgICByZXR1cm4gbV9EZXZpY2VDbGFzczsNCisgICAgICAgIGNhc2UgRlhEQ19QSVhFTF9XSURUSDoNCisgICAgICAgICAgICByZXR1cm4gbV9XaWR0aDsNCisgICAgICAgIGNhc2UgRlhEQ19QSVhFTF9IRUlHSFQ6DQorICAgICAgICAgICAgcmV0dXJuIG1fSGVpZ2h0Ow0KKyAgICAgICAgY2FzZSBGWERDX0JJVFNfUElYRUw6DQorICAgICAgICAgICAgcmV0dXJuIG1fbkJpdHNQZXJQaXhlbDsNCisgICAgICAgIGNhc2UgRlhEQ19SRU5ERVJfQ0FQUzoNCisgICAgICAgICAgICByZXR1cm4gbV9SZW5kZXJDYXBzOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitGWF9MUFZPSUQgQ0dkaURldmljZURyaXZlcjo6R2V0Q2xpcFJnbigpDQorew0KKyAgICBIUkdOIGhDbGlwUmduID0gQ3JlYXRlUmVjdFJnbigwLCAwLCAxLCAxKTsNCisgICAgaWYgKDo6R2V0Q2xpcFJnbihtX2hEQywgaENsaXBSZ24pID09IDApIHsNCisgICAgICAgIERlbGV0ZU9iamVjdChoQ2xpcFJnbik7DQorICAgICAgICBoQ2xpcFJnbiA9IE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIChGWF9MUFZPSUQpaENsaXBSZ247DQorfQ0KK0ZYX0JPT0wgQ0dkaURldmljZURyaXZlcjo6R0RJX1NldERJQml0cyhjb25zdCBDRlhfRElCaXRtYXAqIHBCaXRtYXAxLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCwgaW50IGxlZnQsIGludCB0b3AsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBpZiAobV9EZXZpY2VDbGFzcyA9PSBGWERDX1BSSU5URVIpIHsNCisgICAgICAgIENGWF9ESUJpdG1hcCogcEJpdG1hcCA9IHBCaXRtYXAxLT5GbGlwSW1hZ2UoRkFMU0UsIFRSVUUpOw0KKyAgICAgICAgaWYgKHBCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICgocEJpdG1hcC0+SXNDbXlrSW1hZ2UoKSB8fCBwSWNjVHJhbnNmb3JtKSAmJg0KKyAgICAgICAgICAgICAgICAhcEJpdG1hcC0+Q29udmVydEZvcm1hdChGWERJQl9SZ2IsIHBJY2NUcmFuc2Zvcm0pKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IHdpZHRoID0gcFNyY1JlY3QtPldpZHRoKCksIGhlaWdodCA9IHBTcmNSZWN0LT5IZWlnaHQoKTsNCisgICAgICAgIGludCBwaXRjaCA9IHBCaXRtYXAtPkdldFBpdGNoKCk7DQorICAgICAgICBMUEJZVEUgcEJ1ZmZlciA9IHBCaXRtYXAtPkdldEJ1ZmZlcigpOw0KKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgaW5mbyA9IENGWF9XaW5kb3dzRElCOjpHZXRCaXRtYXBJbmZvKHBCaXRtYXApOw0KKyAgICAgICAgKChCSVRNQVBJTkZPSEVBREVSKikoRlhfTFBDU1RSKWluZm8pLT5iaUhlaWdodCAqPSAtMTsNCisgICAgICAgIEZYX1JFQ1QgZHN0X3JlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7DQorICAgICAgICBkc3RfcmVjdC5JbnRlcnNlY3QoMCwgMCwgcEJpdG1hcC0+R2V0V2lkdGgoKSwgcEJpdG1hcC0+R2V0SGVpZ2h0KCkpOw0KKyAgICAgICAgaW50IGRzdF93aWR0aCA9IGRzdF9yZWN0LldpZHRoKCk7DQorICAgICAgICBpbnQgZHN0X2hlaWdodCA9IGRzdF9yZWN0LkhlaWdodCgpOw0KKyAgICAgICAgOjpTdHJldGNoRElCaXRzKG1faERDLCBsZWZ0LCB0b3AsIGRzdF93aWR0aCwgZHN0X2hlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBkc3Rfd2lkdGgsIGRzdF9oZWlnaHQsIHBCdWZmZXIsIChCSVRNQVBJTkZPKikoRlhfTFBDU1RSKWluZm8sIERJQl9SR0JfQ09MT1JTLCBTUkNDT1BZKTsNCisgICAgICAgIGRlbGV0ZSBwQml0bWFwOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ0ZYX0RJQml0bWFwKiBwQml0bWFwID0gKENGWF9ESUJpdG1hcCopcEJpdG1hcDE7DQorICAgICAgICBpZiAoKHBCaXRtYXAtPklzQ215a0ltYWdlKCkgfHwgcEljY1RyYW5zZm9ybSkgJiYNCisgICAgICAgICAgICAgICAgKHBCaXRtYXAgPSBwQml0bWFwLT5DbG9uZUNvbnZlcnQoRlhESUJfUmdiLCBOVUxMLCBwSWNjVHJhbnNmb3JtKSkgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGludCB3aWR0aCA9IHBTcmNSZWN0LT5XaWR0aCgpLCBoZWlnaHQgPSBwU3JjUmVjdC0+SGVpZ2h0KCk7DQorICAgICAgICBpbnQgcGl0Y2ggPSBwQml0bWFwLT5HZXRQaXRjaCgpOw0KKyAgICAgICAgTFBCWVRFIHBCdWZmZXIgPSBwQml0bWFwLT5HZXRCdWZmZXIoKTsNCisgICAgICAgIENGWF9CeXRlU3RyaW5nIGluZm8gPSBDRlhfV2luZG93c0RJQjo6R2V0Qml0bWFwSW5mbyhwQml0bWFwKTsNCisgICAgICAgIDo6U2V0RElCaXRzVG9EZXZpY2UobV9oREMsIGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCwgcFNyY1JlY3QtPmxlZnQsIHBCaXRtYXAtPkdldEhlaWdodCgpIC0gcFNyY1JlY3QtPmJvdHRvbSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcEJpdG1hcC0+R2V0SGVpZ2h0KCksIHBCdWZmZXIsIChCSVRNQVBJTkZPKikoRlhfTFBDU1RSKWluZm8sIERJQl9SR0JfQ09MT1JTKTsNCisgICAgICAgIGlmIChwQml0bWFwICE9IHBCaXRtYXAxKSB7DQorICAgICAgICAgICAgZGVsZXRlIHBCaXRtYXA7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0dkaURldmljZURyaXZlcjo6R0RJX1N0cmV0Y2hESUJpdHMoY29uc3QgQ0ZYX0RJQml0bWFwKiBwQml0bWFwMSwgaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLA0KKyAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgRlhfRFdPUkQgZmxhZ3MsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pDQorew0KKyAgICBDRlhfRElCaXRtYXAqIHBCaXRtYXAgPSAoQ0ZYX0RJQml0bWFwKilwQml0bWFwMTsNCisgICAgaWYgKHBCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmICgocEJpdG1hcC0+SXNDbXlrSW1hZ2UoKSB8fCBwSWNjVHJhbnNmb3JtKSAmJg0KKyAgICAgICAgICAgICFwQml0bWFwLT5Db252ZXJ0Rm9ybWF0KEZYRElCX1JnYiwgcEljY1RyYW5zZm9ybSkpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBpbmZvID0gQ0ZYX1dpbmRvd3NESUI6OkdldEJpdG1hcEluZm8ocEJpdG1hcCk7DQorICAgIGlmIChhYnMoZGVzdF93aWR0aCkgKiBhYnMoZGVzdF9oZWlnaHQpIDwgcEJpdG1hcDEtPkdldFdpZHRoKCkgKiBwQml0bWFwMS0+R2V0SGVpZ2h0KCkgKiA0IHx8DQorICAgICAgICAgICAgKGZsYWdzICYgRlhESUJfSU5URVJQT0wpIHx8IChmbGFncyAmIEZYRElCX0JJQ1VCSUNfSU5URVJQT0wpKSB7DQorICAgICAgICBTZXRTdHJldGNoQmx0TW9kZShtX2hEQywgSEFMRlRPTkUpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgU2V0U3RyZXRjaEJsdE1vZGUobV9oREMsIENPTE9ST05DT0xPUik7DQorICAgIH0NCisgICAgQ0ZYX0RJQml0bWFwKiBwVG9TdHJlY2hCaXRtYXAgPSBwQml0bWFwOw0KKyAgICBib29sIGRlbCA9IGZhbHNlOw0KKyAgICBpZiAobV9EZXZpY2VDbGFzcyA9PSBGWERDX1BSSU5URVIgJiYgKHBCaXRtYXAtPkdldFdpZHRoKCkgKiBwQml0bWFwLT5HZXRIZWlnaHQoKSA+IGFicyhkZXN0X3dpZHRoKSAqIGFicyhkZXN0X2hlaWdodCkpKSB7DQorICAgICAgICBwVG9TdHJlY2hCaXRtYXAgPSBwQml0bWFwLT5TdHJldGNoVG8oZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQpOw0KKyAgICAgICAgZGVsID0gdHJ1ZTsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyB0b1N0cmVjaEJpdG1hcEluZm8gPSBDRlhfV2luZG93c0RJQjo6R2V0Qml0bWFwSW5mbyhwVG9TdHJlY2hCaXRtYXApOw0KKyAgICA6OlN0cmV0Y2hESUJpdHMobV9oREMsIGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgMCwgMCwgcFRvU3RyZWNoQml0bWFwLT5HZXRXaWR0aCgpLCBwVG9TdHJlY2hCaXRtYXAtPkdldEhlaWdodCgpLCBwVG9TdHJlY2hCaXRtYXAtPkdldEJ1ZmZlcigpLA0KKyAgICAgICAgICAgICAgICAgICAgKEJJVE1BUElORk8qKShGWF9MUENTVFIpdG9TdHJlY2hCaXRtYXBJbmZvLCBESUJfUkdCX0NPTE9SUywgU1JDQ09QWSk7DQorICAgIGlmIChkZWwpIHsNCisgICAgICAgIGRlbGV0ZSBwVG9TdHJlY2hCaXRtYXA7DQorICAgIH0NCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0dkaURldmljZURyaXZlcjo6R0RJX1N0cmV0Y2hCaXRNYXNrKGNvbnN0IENGWF9ESUJpdG1hcCogcEJpdG1hcDEsIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwNCisgICAgICAgIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsIEZYX0RXT1JEIGJpdG1hcF9jb2xvciwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIENGWF9ESUJpdG1hcCogcEJpdG1hcCA9IChDRlhfRElCaXRtYXAqKXBCaXRtYXAxOw0KKyAgICBpZiAocEJpdG1hcCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgX0NvbG9yMkFyZ2IoYml0bWFwX2NvbG9yLCBiaXRtYXBfY29sb3IsIGFscGhhX2ZsYWcgfCAoMSA8PCAyNCksIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICBpbnQgd2lkdGggPSBwQml0bWFwLT5HZXRXaWR0aCgpLCBoZWlnaHQgPSBwQml0bWFwLT5HZXRIZWlnaHQoKTsNCisgICAgc3RydWN0IHsNCisgICAgICAgIEJJVE1BUElORk9IRUFERVIJYm1pSGVhZGVyOw0KKyAgICAgICAgRlhfRFdPUkQJCQlibWlDb2xvcnNbMl07DQorICAgIH0gYm1pOw0KKyAgICBGWFNZU19tZW1zZXQzMigmYm1pLmJtaUhlYWRlciwgMCwgc2l6ZW9mIChCSVRNQVBJTkZPSEVBREVSKSk7DQorICAgIGJtaS5ibWlIZWFkZXIuYmlTaXplID0gc2l6ZW9mKEJJVE1BUElORk9IRUFERVIpOw0KKyAgICBibWkuYm1pSGVhZGVyLmJpQml0Q291bnQgPSAxOw0KKyAgICBibWkuYm1pSGVhZGVyLmJpQ29tcHJlc3Npb24gPSBCSV9SR0I7DQorICAgIGJtaS5ibWlIZWFkZXIuYmlIZWlnaHQgPSAtaGVpZ2h0Ow0KKyAgICBibWkuYm1pSGVhZGVyLmJpUGxhbmVzID0gMTsNCisgICAgYm1pLmJtaUhlYWRlci5iaVdpZHRoID0gd2lkdGg7DQorICAgIGlmIChtX25CaXRzUGVyUGl4ZWwgIT0gMSkgew0KKyAgICAgICAgU2V0U3RyZXRjaEJsdE1vZGUobV9oREMsIEhBTEZUT05FKTsNCisgICAgfQ0KKyAgICBibWkuYm1pQ29sb3JzWzBdID0gMHhmZmZmZmY7DQorICAgIGJtaS5ibWlDb2xvcnNbMV0gPSAwOw0KKyAgICA6OlN0cmV0Y2hESUJpdHMobV9oREMsIGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgMCwgMCwgd2lkdGgsIGhlaWdodCwgcEJpdG1hcC0+R2V0QnVmZmVyKCksIChCSVRNQVBJTkZPKikmYm1pLCBESUJfUkdCX0NPTE9SUywgU1JDQU5EKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0JPT0wgQ0dkaURldmljZURyaXZlcjo6R2V0Q2xpcEJveChGWF9SRUNUKiBwUmVjdCkNCit7DQorICAgIHJldHVybiA6OkdldENsaXBCb3gobV9oREMsIChSRUNUKilwUmVjdCk7DQorfQ0KK0ZYX0JPT0wgQ0dkaURldmljZURyaXZlcjo6U2V0Q2xpcFJnbihGWF9MUFZPSUQgaFJnbikNCit7DQorICAgIDo6U2VsZWN0Q2xpcFJnbihtX2hEQywgKEhSR04paFJnbik7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitzdGF0aWMgSFBFTiBfQ3JlYXRlUGVuKGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIEZYX0RXT1JEIGFyZ2IpDQorew0KKyAgICBGWF9GTE9BVCB3aWR0aDsNCisgICAgRlhfRkxPQVQgc2NhbGUgPSAxLmY7DQorICAgIGlmIChwTWF0cml4KQ0KKyAgICAgICAgc2NhbGUgPSBGWFNZU19mYWJzKHBNYXRyaXgtPmEpID4gRlhTWVNfZmFicyhwTWF0cml4LT5iKSA/DQorICAgICAgICAgICAgICAgIEZYU1lTX2ZhYnMocE1hdHJpeC0+YSkgOiBGWFNZU19mYWJzKHBNYXRyaXgtPmIpOw0KKyAgICBpZiAocEdyYXBoU3RhdGUpIHsNCisgICAgICAgIHdpZHRoID0gc2NhbGUgKiBwR3JhcGhTdGF0ZS0+bV9MaW5lV2lkdGg7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB3aWR0aCA9IDEuMGY7DQorICAgIH0NCisgICAgRlhfRFdPUkQgUGVuU3R5bGUgPSBQU19HRU9NRVRSSUM7DQorICAgIGlmICh3aWR0aCA8IDEpIHsNCisgICAgICAgIHdpZHRoID0gMTsNCisgICAgfQ0KKyAgICBpZihwR3JhcGhTdGF0ZS0+bV9EYXNoQ291bnQpIHsNCisgICAgICAgIFBlblN0eWxlIHw9IFBTX1VTRVJTVFlMRTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIFBlblN0eWxlIHw9IFBTX1NPTElEOw0KKyAgICB9DQorICAgIHN3aXRjaChwR3JhcGhTdGF0ZS0+bV9MaW5lQ2FwKSB7DQorICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgUGVuU3R5bGUgfD0gUFNfRU5EQ0FQX0ZMQVQ7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgUGVuU3R5bGUgfD0gUFNfRU5EQ0FQX1JPVU5EOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIFBlblN0eWxlIHw9IFBTX0VORENBUF9TUVVBUkU7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgc3dpdGNoKHBHcmFwaFN0YXRlLT5tX0xpbmVKb2luKSB7DQorICAgICAgICBjYXNlIDA6DQorICAgICAgICAgICAgUGVuU3R5bGUgfD0gUFNfSk9JTl9NSVRFUjsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgMToNCisgICAgICAgICAgICBQZW5TdHlsZSB8PSBQU19KT0lOX1JPVU5EOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIFBlblN0eWxlIHw9IFBTX0pPSU5fQkVWRUw7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgaW50IGE7DQorICAgIEZYX0NPTE9SUkVGIHJnYjsNCisgICAgQXJnYkRlY29kZShhcmdiLCBhLCByZ2IpOw0KKyAgICBMT0dCUlVTSCBsYjsNCisgICAgbGIubGJDb2xvciA9IHJnYjsNCisgICAgbGIubGJTdHlsZSA9IEJTX1NPTElEOw0KKyAgICBsYi5sYkhhdGNoID0gMDsNCisgICAgRlhfRFdPUkQqIHBEYXNoID0gTlVMTDsNCisgICAgaWYgKHBHcmFwaFN0YXRlLT5tX0Rhc2hDb3VudCkgew0KKyAgICAgICAgcERhc2ggPSBGWF9BbGxvYyhGWF9EV09SRCwgcEdyYXBoU3RhdGUtPm1fRGFzaENvdW50KTsNCisgICAgICAgIGlmICghcERhc2gpIHsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgIH0NCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcEdyYXBoU3RhdGUtPm1fRGFzaENvdW50OyBpICsrKSB7DQorICAgICAgICAgICAgcERhc2hbaV0gPSBGWFNZU19yb3VuZChwTWF0cml4ID8gcE1hdHJpeC0+VHJhbnNmb3JtRGlzdGFuY2UocEdyYXBoU3RhdGUtPm1fRGFzaEFycmF5W2ldKSA6IHBHcmFwaFN0YXRlLT5tX0Rhc2hBcnJheVtpXSk7DQorICAgICAgICAgICAgaWYgKHBEYXNoW2ldIDwgMSkgew0KKyAgICAgICAgICAgICAgICBwRGFzaFtpXSA9IDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEhQRU4gaFBlbiA9IEV4dENyZWF0ZVBlbihQZW5TdHlsZSwgKERXT1JEKUZYU1lTX2NlaWwod2lkdGgpLCAmbGIsIHBHcmFwaFN0YXRlLT5tX0Rhc2hDb3VudCwgKGNvbnN0IERXT1JEKilwRGFzaCk7DQorICAgIGlmIChwRGFzaCkgew0KKyAgICAgICAgRlhfRnJlZShwRGFzaCk7DQorICAgIH0NCisgICAgcmV0dXJuIGhQZW47DQorfQ0KK3N0YXRpYyBIQlJVU0ggX0NyZWF0ZUJydXNoKEZYX0RXT1JEIGFyZ2IpDQorew0KKyAgICBpbnQgYTsNCisgICAgRlhfQ09MT1JSRUYgcmdiOw0KKyAgICBBcmdiRGVjb2RlKGFyZ2IsIGEsIHJnYik7DQorICAgIHJldHVybiBDcmVhdGVTb2xpZEJydXNoKHJnYik7DQorfQ0KK3N0YXRpYyB2b2lkIF9TZXRQYXRoVG9EQyhIREMgaERDLCBjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCkNCit7DQorICAgIEJlZ2luUGF0aChoREMpOw0KKyAgICBpbnQgblBvaW50cyA9IHBQYXRoRGF0YS0+R2V0UG9pbnRDb3VudCgpOw0KKyAgICBGWF9QQVRIUE9JTlQqIHBQb2ludHMgPSBwUGF0aERhdGEtPkdldFBvaW50cygpOw0KKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgblBvaW50czsgaSsrKSB7DQorICAgICAgICBGWF9GTE9BVCBwb3N4ID0gcFBvaW50c1tpXS5tX1BvaW50WCwgcG9zeSA9IHBQb2ludHNbaV0ubV9Qb2ludFk7DQorICAgICAgICBpZiAocE1hdHJpeCkgew0KKyAgICAgICAgICAgIHBNYXRyaXgtPlRyYW5zZm9ybShwb3N4LCBwb3N5KTsNCisgICAgICAgIH0NCisgICAgICAgIGludCBzY3JlZW5feCA9IEZYU1lTX3JvdW5kKHBvc3gpLCBzY3JlZW5feSA9IEZYU1lTX3JvdW5kKHBvc3kpOw0KKyAgICAgICAgaW50IHBvaW50X3R5cGUgPSBwUG9pbnRzW2ldLm1fRmxhZyAmIEZYUFRfVFlQRTsNCisgICAgICAgIGlmKHBvaW50X3R5cGUgPT0gUFRfTU9WRVRPKSB7DQorICAgICAgICAgICAgTW92ZVRvRXgoaERDLCBzY3JlZW5feCwgc2NyZWVuX3ksIE5VTEwpOw0KKyAgICAgICAgfSBlbHNlIGlmKHBvaW50X3R5cGUgPT0gUFRfTElORVRPKSB7DQorICAgICAgICAgICAgaWYgKHBQb2ludHNbaV0ubV9Qb2ludFkgPT0gcFBvaW50c1tpIC0gMV0ubV9Qb2ludFkgJiYgcFBvaW50c1tpXS5tX1BvaW50WCA9PSBwUG9pbnRzW2kgLSAxXS5tX1BvaW50WCkgew0KKyAgICAgICAgICAgICAgICBzY3JlZW5feCArKzsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgTGluZVRvKGhEQywgc2NyZWVuX3gsIHNjcmVlbl95KTsNCisgICAgICAgIH0gZWxzZSBpZihwb2ludF90eXBlID09IFBUX0JFWklFUlRPKSB7DQorICAgICAgICAgICAgUE9JTlQgbHBwdFszXTsNCisgICAgICAgICAgICBscHB0WzBdLnggPSBzY3JlZW5feDsNCisgICAgICAgICAgICBscHB0WzBdLnkgPSBzY3JlZW5feTsNCisgICAgICAgICAgICBwb3N4ID0gcFBvaW50c1tpICsgMV0ubV9Qb2ludFg7DQorICAgICAgICAgICAgcG9zeSA9IHBQb2ludHNbaSArIDFdLm1fUG9pbnRZOw0KKyAgICAgICAgICAgIGlmIChwTWF0cml4KSB7DQorICAgICAgICAgICAgICAgIHBNYXRyaXgtPlRyYW5zZm9ybShwb3N4LCBwb3N5KTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgbHBwdFsxXS54ID0gRlhTWVNfcm91bmQocG9zeCk7DQorICAgICAgICAgICAgbHBwdFsxXS55ID0gRlhTWVNfcm91bmQocG9zeSk7DQorICAgICAgICAgICAgcG9zeCA9IHBQb2ludHNbaSArIDJdLm1fUG9pbnRYOw0KKyAgICAgICAgICAgIHBvc3kgPSBwUG9pbnRzW2kgKyAyXS5tX1BvaW50WTsNCisgICAgICAgICAgICBpZiAocE1hdHJpeCkgew0KKyAgICAgICAgICAgICAgICBwTWF0cml4LT5UcmFuc2Zvcm0ocG9zeCwgcG9zeSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGxwcHRbMl0ueCA9IEZYU1lTX3JvdW5kKHBvc3gpOw0KKyAgICAgICAgICAgIGxwcHRbMl0ueSA9IEZYU1lTX3JvdW5kKHBvc3kpOw0KKyAgICAgICAgICAgIFBvbHlCZXppZXJUbyhoREMsIGxwcHQsIDMpOw0KKyAgICAgICAgICAgIGkgKz0gMjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChwUG9pbnRzW2ldLm1fRmxhZyAmIFBUX0NMT1NFRklHVVJFKSB7DQorICAgICAgICAgICAgQ2xvc2VGaWd1cmUoaERDKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBFbmRQYXRoKGhEQyk7DQorfQ0KK3ZvaWQgQ0dkaURldmljZURyaXZlcjo6RHJhd0xpbmUoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLCBGWF9GTE9BVCB4MiwgRlhfRkxPQVQgeTIpDQorew0KKyAgICBpbnQgZmxhZzEgPSAoeDEgPCAwKSB8ICgoeDEgPiBtX1dpZHRoKSA8PCAxKSB8ICgoeTEgPCAwKSA8PCAyKSB8ICgoeTEgPiBtX0hlaWdodCkgPDwgMyk7DQorICAgIGludCBmbGFnMiA9ICh4MiA8IDApIHwgKCh4MiA+IG1fV2lkdGgpIDw8IDEpIHwgKCh5MiA8IDApIDw8IDIpIHwgKCh5MiA+IG1fSGVpZ2h0KSA8PCAzKTsNCisgICAgaWYgKGZsYWcxICYgZmxhZzIpIHsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBpZiAoZmxhZzEgfHwgZmxhZzIpIHsNCisgICAgICAgIGFnZzo6cmVjdF9iYXNlPEZYX0ZMT0FUPiByZWN0KDAuMGYsIDAuMGYsIChGWF9GTE9BVCkobV9XaWR0aCksIChGWF9GTE9BVCkobV9IZWlnaHQpKTsNCisgICAgICAgIEZYX0ZMT0FUIHhbMl0sIHlbMl07DQorICAgICAgICBpbnQgbnAgPSBhZ2c6OmNsaXBfbGlhbmdfYmFyc2t5PEZYX0ZMT0FUPih4MSwgeTEsIHgyLCB5MiwgcmVjdCwgeCwgeSk7DQorICAgICAgICBpZiAobnAgPT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChucCA9PSAxKSB7DQorICAgICAgICAgICAgeDIgPSB4WzBdOw0KKyAgICAgICAgICAgIHkyID0geVswXTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgeDEgPSB4WzBdOw0KKyAgICAgICAgICAgIHkxID0geVswXTsNCisgICAgICAgICAgICB4MiA9IHhbbnAgLSAxXTsNCisgICAgICAgICAgICB5MiA9IHlbbnAgLSAxXTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBNb3ZlVG9FeChtX2hEQywgRlhTWVNfcm91bmQoeDEpLCBGWFNZU19yb3VuZCh5MSksIE5VTEwpOw0KKyAgICBMaW5lVG8obV9oREMsIEZYU1lTX3JvdW5kKHgyKSwgRlhTWVNfcm91bmQoeTIpKTsNCit9DQorc3RhdGljIEZYX0JPT0wgX01hdHJpeE5vU2NhbGVkKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgpDQorew0KKyAgICByZXR1cm4gcE1hdHJpeC0+R2V0QSgpID09IDEuMGYgJiYgcE1hdHJpeC0+R2V0QigpID09IDAgJiYgcE1hdHJpeC0+R2V0QygpID09IDAgJiYgcE1hdHJpeC0+R2V0RCgpID09IDEuMGY7DQorfQ0KK0ZYX0JPT0wgQ0dkaURldmljZURyaXZlcjo6RHJhd1BhdGgoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGZpbGxfY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBzdHJva2VfY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmlsbF9tb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBwSWNjVHJhbnNmb3JtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50CWJsZW5kX3R5cGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KK3sNCisgICAgaWYgKGJsZW5kX3R5cGUgIT0gRlhESUJfQkxFTkRfTk9STUFMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgX0NvbG9yMkFyZ2IoZmlsbF9jb2xvciwgZmlsbF9jb2xvciwgYWxwaGFfZmxhZyB8ICgxIDw8IDI0KSwgcEljY1RyYW5zZm9ybSk7DQorICAgIF9Db2xvcjJBcmdiKHN0cm9rZV9jb2xvciwgc3Ryb2tlX2NvbG9yLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgQ1dpbjMyUGxhdGZvcm0qIHBQbGF0Zm9ybSA9IChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCk7DQorICAgIGlmICgocEdyYXBoU3RhdGUgPT0gTlVMTCB8fCBzdHJva2VfY29sb3IgPT0gMCkgJiYgIXBQbGF0Zm9ybS0+bV9HZGlwbHVzRXh0LklzQXZhaWxhYmxlKCkpIHsNCisgICAgICAgIENGWF9GbG9hdFJlY3QgYmJveF9mID0gcFBhdGhEYXRhLT5HZXRCb3VuZGluZ0JveCgpOw0KKyAgICAgICAgaWYgKHBNYXRyaXgpIHsNCisgICAgICAgICAgICBiYm94X2YuVHJhbnNmb3JtKHBNYXRyaXgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfUkVDVCBiYm94ID0gYmJveF9mLkdldElubmVyUmVjdCgpOw0KKyAgICAgICAgaWYgKGJib3guV2lkdGgoKSA8PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIERyYXdDb3NtZXRpY0xpbmUoKEZYX0ZMT0FUKShiYm94LmxlZnQpLCAoRlhfRkxPQVQpKGJib3gudG9wKSwgKEZYX0ZMT0FUKShiYm94LmxlZnQpLCAoRlhfRkxPQVQpKGJib3guYm90dG9tICsgMSksIGZpbGxfY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSwgRlhESUJfQkxFTkRfTk9STUFMKTsNCisgICAgICAgIH0gZWxzZSBpZiAoYmJveC5IZWlnaHQoKSA8PSAwKSB7DQorICAgICAgICAgICAgcmV0dXJuIERyYXdDb3NtZXRpY0xpbmUoKEZYX0ZMT0FUKShiYm94LmxlZnQpLCAoRlhfRkxPQVQpKGJib3gudG9wKSwgKEZYX0ZMT0FUKShiYm94LnJpZ2h0ICsgMSksIChGWF9GTE9BVCkoYmJveC50b3ApLCBmaWxsX2NvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0sIEZYRElCX0JMRU5EX05PUk1BTCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgaW50IGZpbGxfYWxwaGEgPSBGWEFSR0JfQShmaWxsX2NvbG9yKTsNCisgICAgaW50IHN0cm9rZV9hbHBoYSA9IEZYQVJHQl9BKHN0cm9rZV9jb2xvcik7DQorICAgIEZYX0JPT0wgYkRyYXdBbHBoYSA9IChmaWxsX2FscGhhID4gMCAmJiBmaWxsX2FscGhhIDwgMjU1KSB8fCAoc3Ryb2tlX2FscGhhID4gMCAmJiBzdHJva2VfYWxwaGEgPCAyNTUgJiYgcEdyYXBoU3RhdGUpOw0KKyAgICBpZiAoIXBQbGF0Zm9ybS0+bV9HZGlwbHVzRXh0LklzQXZhaWxhYmxlKCkgJiYgYkRyYXdBbHBoYSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChwUGxhdGZvcm0tPm1fR2RpcGx1c0V4dC5Jc0F2YWlsYWJsZSgpKSB7DQorICAgICAgICBpZiAoYkRyYXdBbHBoYSB8fCAoKG1fRGV2aWNlQ2xhc3MgIT0gRlhEQ19QUklOVEVSICYmICEoZmlsbF9tb2RlICYgRlhGSUxMX0ZVTExDT1ZFUikpIHx8IHBHcmFwaFN0YXRlICYmIHBHcmFwaFN0YXRlLT5tX0Rhc2hDb3VudCkpIHsNCisgICAgICAgICAgICBpZiAoICEoKE5VTEwgPT0gcE1hdHJpeCB8fCBfTWF0cml4Tm9TY2FsZWQocE1hdHJpeCkpICYmDQorICAgICAgICAgICAgICAgICAgICBwR3JhcGhTdGF0ZSAmJiBwR3JhcGhTdGF0ZS0+bV9MaW5lV2lkdGggPT0gMS5mICYmDQorICAgICAgICAgICAgICAgICAgICAocFBhdGhEYXRhLT5HZXRQb2ludENvdW50KCkgPT0gNSB8fCBwUGF0aERhdGEtPkdldFBvaW50Q291bnQoKSA9PSA0KSAmJg0KKyAgICAgICAgICAgICAgICAgICAgcFBhdGhEYXRhLT5Jc1JlY3QoKSkgKSB7DQorICAgICAgICAgICAgICAgIGlmIChwUGxhdGZvcm0tPm1fR2RpcGx1c0V4dC5EcmF3UGF0aChtX2hEQywgcFBhdGhEYXRhLCBwTWF0cml4LCBwR3JhcGhTdGF0ZSwgZmlsbF9jb2xvciwgc3Ryb2tlX2NvbG9yLCBmaWxsX21vZGUpKSB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpbnQgb2xkX2ZpbGxfbW9kZSA9IGZpbGxfbW9kZTsNCisgICAgZmlsbF9tb2RlICY9IDM7DQorICAgIEhQRU4gaFBlbiA9IE5VTEw7DQorICAgIEhCUlVTSCBoQnJ1c2ggPSBOVUxMOw0KKyAgICBpZiAocEdyYXBoU3RhdGUgJiYgc3Ryb2tlX2FscGhhKSB7DQorICAgICAgICBTZXRNaXRlckxpbWl0KG1faERDLCBwR3JhcGhTdGF0ZS0+bV9NaXRlckxpbWl0LCBOVUxMKTsNCisgICAgICAgIGhQZW4gPSBfQ3JlYXRlUGVuKHBHcmFwaFN0YXRlLCBwTWF0cml4LCBzdHJva2VfY29sb3IpOw0KKyAgICAgICAgaFBlbiA9IChIUEVOKVNlbGVjdE9iamVjdChtX2hEQywgaFBlbik7DQorICAgIH0NCisgICAgaWYgKGZpbGxfbW9kZSAmJiBmaWxsX2FscGhhKSB7DQorICAgICAgICBTZXRQb2x5RmlsbE1vZGUobV9oREMsIGZpbGxfbW9kZSk7DQorICAgICAgICBoQnJ1c2ggPSBfQ3JlYXRlQnJ1c2goZmlsbF9jb2xvcik7DQorICAgICAgICBoQnJ1c2ggPSAoSEJSVVNIKVNlbGVjdE9iamVjdChtX2hEQywgaEJydXNoKTsNCisgICAgfQ0KKyAgICBpZiAocFBhdGhEYXRhLT5HZXRQb2ludENvdW50KCkgPT0gMiAmJiBwR3JhcGhTdGF0ZSAmJiBwR3JhcGhTdGF0ZS0+bV9EYXNoQ291bnQpIHsNCisgICAgICAgIEZYX0ZMT0FUIHgxID0gcFBhdGhEYXRhLT5HZXRQb2ludFgoMCksIHkxID0gcFBhdGhEYXRhLT5HZXRQb2ludFkoMCk7DQorICAgICAgICBpZiAocE1hdHJpeCkgew0KKyAgICAgICAgICAgIHBNYXRyaXgtPlRyYW5zZm9ybSh4MSwgeTEpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRkxPQVQgeDIgPSBwUGF0aERhdGEtPkdldFBvaW50WCgxKSwgeTIgPSBwUGF0aERhdGEtPkdldFBvaW50WSgxKTsNCisgICAgICAgIGlmIChwTWF0cml4KSB7DQorICAgICAgICAgICAgcE1hdHJpeC0+VHJhbnNmb3JtKHgyLCB5Mik7DQorICAgICAgICB9DQorICAgICAgICBEcmF3TGluZSh4MSwgeTEsIHgyLCB5Mik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBfU2V0UGF0aFRvREMobV9oREMsIHBQYXRoRGF0YSwgcE1hdHJpeCk7DQorICAgICAgICBpZiAocEdyYXBoU3RhdGUgJiYgc3Ryb2tlX2FscGhhKSB7DQorICAgICAgICAgICAgaWYgKGZpbGxfbW9kZSAmJiBmaWxsX2FscGhhKSB7DQorICAgICAgICAgICAgICAgIGlmIChvbGRfZmlsbF9tb2RlICYgRlhfRklMTF9URVhUX01PREUpIHsNCisgICAgICAgICAgICAgICAgICAgIFN0cm9rZUFuZEZpbGxQYXRoKG1faERDKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIEZpbGxQYXRoKG1faERDKTsNCisgICAgICAgICAgICAgICAgICAgIF9TZXRQYXRoVG9EQyhtX2hEQywgcFBhdGhEYXRhLCBwTWF0cml4KTsNCisgICAgICAgICAgICAgICAgICAgIFN0cm9rZVBhdGgobV9oREMpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgU3Ryb2tlUGF0aChtX2hEQyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChmaWxsX21vZGUgJiYgZmlsbF9hbHBoYSkgew0KKyAgICAgICAgICAgIEZpbGxQYXRoKG1faERDKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoaFBlbikgew0KKyAgICAgICAgaFBlbiA9IChIUEVOKVNlbGVjdE9iamVjdChtX2hEQywgaFBlbik7DQorICAgICAgICBEZWxldGVPYmplY3QoaFBlbik7DQorICAgIH0NCisgICAgaWYgKGhCcnVzaCkgew0KKyAgICAgICAgaEJydXNoID0gKEhCUlVTSClTZWxlY3RPYmplY3QobV9oREMsIGhCcnVzaCk7DQorICAgICAgICBEZWxldGVPYmplY3QoaEJydXNoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDR2RpRGV2aWNlRHJpdmVyOjpGaWxsUmVjdChjb25zdCBGWF9SRUNUKiBwUmVjdCwgRlhfRFdPUkQgZmlsbF9jb2xvciwgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKQ0KK3sNCisgICAgaWYgKGJsZW5kX3R5cGUgIT0gRlhESUJfQkxFTkRfTk9STUFMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgX0NvbG9yMkFyZ2IoZmlsbF9jb2xvciwgZmlsbF9jb2xvciwgYWxwaGFfZmxhZyB8ICgxIDw8IDI0KSwgcEljY1RyYW5zZm9ybSk7DQorICAgIGludCBhbHBoYTsNCisgICAgRlhfQ09MT1JSRUYgcmdiOw0KKyAgICBBcmdiRGVjb2RlKGZpbGxfY29sb3IsIGFscGhhLCByZ2IpOw0KKyAgICBpZiAoYWxwaGEgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgaWYgKGFscGhhIDwgMjU1KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgSEJSVVNIIGhCcnVzaCA9IENyZWF0ZVNvbGlkQnJ1c2gocmdiKTsNCisgICAgOjpGaWxsUmVjdChtX2hEQywgKFJFQ1QqKXBSZWN0LCBoQnJ1c2gpOw0KKyAgICBEZWxldGVPYmplY3QoaEJydXNoKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ0dkaURldmljZURyaXZlcjo6U2V0Q2xpcF9QYXRoRmlsbChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsDQorICAgICAgICBpbnQgZmlsbF9tb2RlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KK3sNCisgICAgaWYgKHBQYXRoRGF0YS0+R2V0UG9pbnRDb3VudCgpID09IDUpIHsNCisgICAgICAgIENGWF9GbG9hdFJlY3QgcmVjdGY7DQorICAgICAgICBpZiAocFBhdGhEYXRhLT5Jc1JlY3QocE1hdHJpeCwgJnJlY3RmKSkgew0KKyAgICAgICAgICAgIEZYX1JFQ1QgcmVjdCA9IHJlY3RmLkdldE91dHRlclJlY3QoKTsNCisgICAgICAgICAgICBJbnRlcnNlY3RDbGlwUmVjdChtX2hEQywgcmVjdC5sZWZ0LCByZWN0LnRvcCwgcmVjdC5yaWdodCwgcmVjdC5ib3R0b20pOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIF9TZXRQYXRoVG9EQyhtX2hEQywgcFBhdGhEYXRhLCBwTWF0cml4KTsNCisgICAgU2V0UG9seUZpbGxNb2RlKG1faERDLCBmaWxsX21vZGUgJiAzKTsNCisgICAgU2VsZWN0Q2xpcFBhdGgobV9oREMsIFJHTl9BTkQpOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQorRlhfQk9PTCBDR2RpRGV2aWNlRHJpdmVyOjpTZXRDbGlwX1BhdGhTdHJva2UoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LA0KKyAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KK3sNCisgICAgSFBFTiBoUGVuID0gX0NyZWF0ZVBlbihwR3JhcGhTdGF0ZSwgcE1hdHJpeCwgMHhmZjAwMDAwMCk7DQorICAgIGhQZW4gPSAoSFBFTilTZWxlY3RPYmplY3QobV9oREMsIGhQZW4pOw0KKyAgICBfU2V0UGF0aFRvREMobV9oREMsIHBQYXRoRGF0YSwgcE1hdHJpeCk7DQorICAgIFdpZGVuUGF0aChtX2hEQyk7DQorICAgIFNldFBvbHlGaWxsTW9kZShtX2hEQywgV0lORElORyk7DQorICAgIEZYX0JPT0wgcmV0ID0gU2VsZWN0Q2xpcFBhdGgobV9oREMsIFJHTl9BTkQpOw0KKyAgICBoUGVuID0gKEhQRU4pU2VsZWN0T2JqZWN0KG1faERDLCBoUGVuKTsNCisgICAgRGVsZXRlT2JqZWN0KGhQZW4pOw0KKyAgICByZXR1cm4gcmV0Ow0KK30NCitGWF9CT09MIENHZGlEZXZpY2VEcml2ZXI6OkRyYXdDb3NtZXRpY0xpbmUoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLCBGWF9GTE9BVCB4MiwgRlhfRkxPQVQgeTIsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludAlibGVuZF90eXBlKQ0KK3sNCisgICAgaWYgKGJsZW5kX3R5cGUgIT0gRlhESUJfQkxFTkRfTk9STUFMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgX0NvbG9yMkFyZ2IoY29sb3IsIGNvbG9yLCBhbHBoYV9mbGFnIHwgKDEgPDwgMjQpLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgaW50IGE7DQorICAgIEZYX0NPTE9SUkVGIHJnYjsNCisgICAgQXJnYkRlY29kZShjb2xvciwgYSwgcmdiKTsNCisgICAgaWYgKGEgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgSFBFTiBoUGVuID0gQ3JlYXRlUGVuKFBTX1NPTElELCAxLCByZ2IpOw0KKyAgICBoUGVuID0gKEhQRU4pU2VsZWN0T2JqZWN0KG1faERDLCBoUGVuKTsNCisgICAgTW92ZVRvRXgobV9oREMsIEZYU1lTX3JvdW5kKHgxKSwgRlhTWVNfcm91bmQoeTEpLCBOVUxMKTsNCisgICAgTGluZVRvKG1faERDLCBGWFNZU19yb3VuZCh4MiksIEZYU1lTX3JvdW5kKHkyKSk7DQorICAgIGhQZW4gPSAoSFBFTilTZWxlY3RPYmplY3QobV9oREMsIGhQZW4pOw0KKyAgICBEZWxldGVPYmplY3QoaFBlbik7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENHZGlEZXZpY2VEcml2ZXI6OkRlbGV0ZURldmljZVJnbihGWF9MUFZPSUQgcFJnbikNCit7DQorICAgIERlbGV0ZU9iamVjdCgoSEdESU9CSilwUmduKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0NHZGlEaXNwbGF5RHJpdmVyOjpDR2RpRGlzcGxheURyaXZlcihIREMgaERDKSA6IENHZGlEZXZpY2VEcml2ZXIoaERDLCBGWERDX0RJU1BMQVkpDQorew0KKyAgICBDV2luMzJQbGF0Zm9ybSogcFBsYXRmb3JtID0gKENXaW4zMlBsYXRmb3JtKilDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKTsNCisgICAgaWYgKHBQbGF0Zm9ybS0+bV9HZGlwbHVzRXh0LklzQXZhaWxhYmxlKCkpIHsNCisgICAgICAgIG1fUmVuZGVyQ2FwcyB8PSBGWFJDX0FMUEhBX1BBVEggfCBGWFJDX0FMUEhBX0lNQUdFOw0KKyAgICB9DQorfQ0KK0ZYX0JPT0wgQ0dkaURpc3BsYXlEcml2ZXI6OkdldERJQml0cyhDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBsZWZ0LCBpbnQgdG9wLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBGWF9CT09MIGJERWRnZSkNCit7DQorICAgIEZYX0JPT0wgcmV0ID0gRkFMU0U7DQorICAgIGludCB3aWR0aCA9IHBCaXRtYXAtPkdldFdpZHRoKCk7DQorICAgIGludCBoZWlnaHQgPSBwQml0bWFwLT5HZXRIZWlnaHQoKTsNCisgICAgSEJJVE1BUCBoYm1wID0gQ3JlYXRlQ29tcGF0aWJsZUJpdG1hcChtX2hEQywgd2lkdGgsIGhlaWdodCk7DQorICAgIEhEQyBoRENNZW1vcnkgPSBDcmVhdGVDb21wYXRpYmxlREMobV9oREMpOw0KKyAgICBIQklUTUFQIGhvbGRibXAgID0gKEhCSVRNQVApU2VsZWN0T2JqZWN0KGhEQ01lbW9yeSwgaGJtcCk7DQorICAgIEJpdEJsdChoRENNZW1vcnksIDAsIDAsIHdpZHRoLCBoZWlnaHQsIG1faERDLCBsZWZ0LCB0b3AsIFNSQ0NPUFkpOw0KKyAgICBTZWxlY3RPYmplY3QoaERDTWVtb3J5LCBob2xkYm1wKTsNCisgICAgQklUTUFQSU5GTyBibWk7DQorICAgIEZYU1lTX21lbXNldDMyKCZibWksIDAsIHNpemVvZiBibWkpOw0KKyAgICBibWkuYm1pSGVhZGVyLmJpU2l6ZSA9IHNpemVvZiBibWkuYm1pSGVhZGVyOw0KKyAgICBibWkuYm1pSGVhZGVyLmJpQml0Q291bnQgPSBwQml0bWFwLT5HZXRCUFAoKTsNCisgICAgYm1pLmJtaUhlYWRlci5iaUhlaWdodCA9IC1oZWlnaHQ7DQorICAgIGJtaS5ibWlIZWFkZXIuYmlQbGFuZXMgPSAxOw0KKyAgICBibWkuYm1pSGVhZGVyLmJpV2lkdGggPSB3aWR0aDsNCisgICAgaWYgKCFDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpIHx8ICFDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRDb2RlY01vZHVsZSgpLT5HZXRJY2NNb2R1bGUoKSkgew0KKyAgICAgICAgcEljY1RyYW5zZm9ybSA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBCaXRtYXAtPkdldEJQUCgpID4gOCAmJiAhcEJpdG1hcC0+SXNDbXlrSW1hZ2UoKSAmJiBwSWNjVHJhbnNmb3JtID09IE5VTEwpIHsNCisgICAgICAgIHJldCA9IDo6R2V0RElCaXRzKGhEQ01lbW9yeSwgaGJtcCwgMCwgaGVpZ2h0LCBwQml0bWFwLT5HZXRCdWZmZXIoKSwgJmJtaSwgRElCX1JHQl9DT0xPUlMpID09IGhlaWdodDsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIENGWF9ESUJpdG1hcCBiaXRtYXA7DQorICAgICAgICBpZiAoYml0bWFwLkNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBGWERJQl9SZ2IpKSB7DQorICAgICAgICAgICAgYm1pLmJtaUhlYWRlci5iaUJpdENvdW50ID0gMjQ7DQorICAgICAgICAgICAgOjpHZXRESUJpdHMoaERDTWVtb3J5LCBoYm1wLCAwLCBoZWlnaHQsIGJpdG1hcC5HZXRCdWZmZXIoKSwgJmJtaSwgRElCX1JHQl9DT0xPUlMpOw0KKyAgICAgICAgICAgIHJldCA9IHBCaXRtYXAtPlRyYW5zZmVyQml0bWFwKDAsIDAsIHdpZHRoLCBoZWlnaHQsICZiaXRtYXAsIDAsIDAsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICByZXQgPSBGQUxTRTsNCisgICAgICAgIH0NCisgICAgfQ0KKyNpZm5kZWYgX0ZQREZBUElfTUlOSV8NCisgICAgaWYgKHBCaXRtYXAtPkhhc0FscGhhKCkgJiYgcmV0KSB7DQorICAgICAgICBwQml0bWFwLT5Mb2FkQ2hhbm5lbChGWERJQl9BbHBoYSwgMHhmZik7DQorICAgIH0NCisjZW5kaWYNCisgICAgRGVsZXRlT2JqZWN0KGhibXApOw0KKyAgICBEZWxldGVPYmplY3QoaERDTWVtb3J5KTsNCisgICAgcmV0dXJuIHJldDsNCit9DQorRlhfQk9PTCBDR2RpRGlzcGxheURyaXZlcjo6U2V0RElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIEZYX0RXT1JEIGNvbG9yLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCwgaW50IGxlZnQsIGludCB0b3AsIGludCBibGVuZF90eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIEFTU0VSVChibGVuZF90eXBlID09IEZYRElCX0JMRU5EX05PUk1BTCk7DQorICAgIGlmIChwU291cmNlLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICBpbnQgd2lkdGggPSBwU291cmNlLT5HZXRXaWR0aCgpLCBoZWlnaHQgPSBwU291cmNlLT5HZXRIZWlnaHQoKTsNCisgICAgICAgIGludCBhbHBoYSA9IEZYR0VURkxBR19DT0xPUlRZUEUoYWxwaGFfZmxhZykgPyBGWEdFVEZMQUdfQUxQSEFfRklMTChhbHBoYV9mbGFnKSA6IEZYQVJHQl9BKGNvbG9yKTsNCisgICAgICAgIEZYX0JPT0wgYkdESSA9IHBTb3VyY2UtPkdldEJQUCgpID09IDEgJiYgYWxwaGEgPT0gMjU1Ow0KKyAgICAgICAgaWYgKCFiR0RJKSB7DQorICAgICAgICAgICAgQ0ZYX0RJQml0bWFwIGJhY2tncm91bmQ7DQorICAgICAgICAgICAgaWYgKCFiYWNrZ3JvdW5kLkNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBGWERJQl9SZ2IzMikgfHwNCisgICAgICAgICAgICAgICAgICAgICFHZXRESUJpdHMoJmJhY2tncm91bmQsIGxlZnQsIHRvcCwgTlVMTCkgfHwNCisgICAgICAgICAgICAgICAgICAgICFiYWNrZ3JvdW5kLkNvbXBvc2l0ZU1hc2soMCwgMCwgd2lkdGgsIGhlaWdodCwgcFNvdXJjZSwgY29sb3IsIDAsIDAsIEZYRElCX0JMRU5EX05PUk1BTCwgTlVMTCwgRkFMU0UsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgRlhfUkVDVCBzcmNfcmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsNCisgICAgICAgICAgICByZXR1cm4gU2V0RElCaXRzKCZiYWNrZ3JvdW5kLCAwLCAmc3JjX3JlY3QsIGxlZnQsIHRvcCwgRlhESUJfQkxFTkRfTk9STUFMLCAwLCBOVUxMKTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX1JFQ1QgY2xpcF9yZWN0KGxlZnQsIHRvcCwgbGVmdCArIHBTcmNSZWN0LT5XaWR0aCgpLCB0b3AgKyBwU3JjUmVjdC0+SGVpZ2h0KCkpOw0KKyAgICAgICAgcmV0dXJuIFN0cmV0Y2hESUJpdHMocFNvdXJjZSwgY29sb3IsIGxlZnQgLSBwU3JjUmVjdC0+bGVmdCwgdG9wIC0gcFNyY1JlY3QtPnRvcCwgd2lkdGgsIGhlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbGlwX3JlY3QsIDAsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0sIEZYRElCX0JMRU5EX05PUk1BTCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpbnQgd2lkdGggPSBwU3JjUmVjdC0+V2lkdGgoKSwgaGVpZ2h0ID0gcFNyY1JlY3QtPkhlaWdodCgpOw0KKyAgICAgICAgaWYgKHBTb3VyY2UtPkhhc0FscGhhKCkpIHsNCisgICAgICAgICAgICBDRlhfRElCaXRtYXAgYml0bWFwOw0KKyAgICAgICAgICAgIGlmICghYml0bWFwLkNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBGWERJQl9SZ2IpIHx8DQorICAgICAgICAgICAgICAgICAgICAhR2V0RElCaXRzKCZiaXRtYXAsIGxlZnQsIHRvcCwgTlVMTCkgfHwNCisgICAgICAgICAgICAgICAgICAgICFiaXRtYXAuQ29tcG9zaXRlQml0bWFwKDAsIDAsIHdpZHRoLCBoZWlnaHQsIHBTb3VyY2UsIHBTcmNSZWN0LT5sZWZ0LCBwU3JjUmVjdC0+dG9wLCBGWERJQl9CTEVORF9OT1JNQUwsIE5VTEwsIEZBTFNFLCBwSWNjVHJhbnNmb3JtKSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX1JFQ1Qgc3JjX3JlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7DQorICAgICAgICAgICAgcmV0dXJuIFNldERJQml0cygmYml0bWFwLCAwLCAmc3JjX3JlY3QsIGxlZnQsIHRvcCwgRlhESUJfQkxFTkRfTk9STUFMLCAwLCBOVUxMKTsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9ESUJFeHRyYWN0b3IgdGVtcChwU291cmNlKTsNCisgICAgICAgIENGWF9ESUJpdG1hcCogcEJpdG1hcCA9IHRlbXA7DQorICAgICAgICBpZiAocEJpdG1hcCkgew0KKyAgICAgICAgICAgIHJldHVybiBHRElfU2V0RElCaXRzKHBCaXRtYXAsIHBTcmNSZWN0LCBsZWZ0LCB0b3AsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDR2RpRGlzcGxheURyaXZlcjo6VXNlRm94aXRTdHJldGNoRW5naW5lKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIEZYX0RXT1JEIGNvbG9yLCBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsDQorICAgICAgICBpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0LCBjb25zdCBGWF9SRUNUKiBwQ2xpcFJlY3QsIGludCByZW5kZXJfZmxhZ3MsDQorICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpDQorew0KKyAgICBGWF9SRUNUIGJpdG1hcF9jbGlwID0gKnBDbGlwUmVjdDsNCisgICAgaWYgKGRlc3Rfd2lkdGggPCAwKSB7DQorICAgICAgICBkZXN0X2xlZnQgKz0gZGVzdF93aWR0aDsNCisgICAgfQ0KKyAgICBpZiAoZGVzdF9oZWlnaHQgPCAwKSB7DQorICAgICAgICBkZXN0X3RvcCArPSBkZXN0X2hlaWdodDsNCisgICAgfQ0KKyAgICBiaXRtYXBfY2xpcC5PZmZzZXQoLWRlc3RfbGVmdCwgLWRlc3RfdG9wKTsNCisgICAgQ0ZYX0RJQml0bWFwKiBwU3RyZXRjaGVkID0gcFNvdXJjZS0+U3RyZXRjaFRvKGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCByZW5kZXJfZmxhZ3MsICZiaXRtYXBfY2xpcCk7DQorICAgIGlmIChwU3RyZXRjaGVkID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIEZYX1JFQ1Qgc3JjX3JlY3QoMCwgMCwgcFN0cmV0Y2hlZC0+R2V0V2lkdGgoKSwgcFN0cmV0Y2hlZC0+R2V0SGVpZ2h0KCkpOw0KKyAgICBGWF9CT09MIHJldCA9IFNldERJQml0cyhwU3RyZXRjaGVkLCBjb2xvciwgJnNyY19yZWN0LCBwQ2xpcFJlY3QtPmxlZnQsIHBDbGlwUmVjdC0+dG9wLCBGWERJQl9CTEVORF9OT1JNQUwsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICBkZWxldGUgcFN0cmV0Y2hlZDsNCisgICAgcmV0dXJuIHJldDsNCit9DQorRlhfQk9PTCBDR2RpRGlzcGxheURyaXZlcjo6U3RyZXRjaERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwU291cmNlLCBGWF9EV09SRCBjb2xvciwgaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLA0KKyAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgY29uc3QgRlhfUkVDVCogcENsaXBSZWN0LCBGWF9EV09SRCBmbGFncywNCisgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBpbnQgYmxlbmRfdHlwZSkNCit7DQorICAgIEFTU0VSVChwU291cmNlICE9IE5VTEwgJiYgcENsaXBSZWN0ICE9IE5VTEwpOw0KKyAgICBpZiAoZmxhZ3MgfHwgZGVzdF93aWR0aCA+IDEwMDAwIHx8IGRlc3Rfd2lkdGggPCAtMTAwMDAgfHwgZGVzdF9oZWlnaHQgPiAxMDAwMCB8fCBkZXN0X2hlaWdodCA8IC0xMDAwMCkNCisgICAgICAgIHJldHVybiBVc2VGb3hpdFN0cmV0Y2hFbmdpbmUocFNvdXJjZSwgY29sb3IsIGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQ2xpcFJlY3QsIGZsYWdzLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtLCBibGVuZF90eXBlKTsNCisgICAgaWYgKHBTb3VyY2UtPklzQWxwaGFNYXNrKCkpIHsNCisgICAgICAgIEZYX1JFQ1QgaW1hZ2VfcmVjdDsNCisgICAgICAgIGltYWdlX3JlY3QubGVmdCA9IGRlc3Rfd2lkdGggPiAwID8gZGVzdF9sZWZ0IDogZGVzdF9sZWZ0ICsgZGVzdF93aWR0aDsNCisgICAgICAgIGltYWdlX3JlY3QucmlnaHQgPSBkZXN0X3dpZHRoID4gMCA/IGRlc3RfbGVmdCArIGRlc3Rfd2lkdGggOiBkZXN0X2xlZnQ7DQorICAgICAgICBpbWFnZV9yZWN0LnRvcCA9IGRlc3RfaGVpZ2h0ID4gMCA/IGRlc3RfdG9wIDogZGVzdF90b3AgKyBkZXN0X2hlaWdodDsNCisgICAgICAgIGltYWdlX3JlY3QuYm90dG9tID0gZGVzdF9oZWlnaHQgPiAwID8gZGVzdF90b3AgKyBkZXN0X2hlaWdodCA6IGRlc3RfdG9wOw0KKyAgICAgICAgRlhfUkVDVCBjbGlwX3JlY3QgPSBpbWFnZV9yZWN0Ow0KKyAgICAgICAgY2xpcF9yZWN0LkludGVyc2VjdCgqcENsaXBSZWN0KTsNCisgICAgICAgIGNsaXBfcmVjdC5PZmZzZXQoLWltYWdlX3JlY3QubGVmdCwgLWltYWdlX3JlY3QudG9wKTsNCisgICAgICAgIGludCBjbGlwX3dpZHRoID0gY2xpcF9yZWN0LldpZHRoKCksIGNsaXBfaGVpZ2h0ID0gY2xpcF9yZWN0LkhlaWdodCgpOw0KKyAgICAgICAgQ0ZYX0RJQml0bWFwKiBwU3RyZXRjaGVkID0gcFNvdXJjZS0+U3RyZXRjaFRvKGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBmbGFncywgJmNsaXBfcmVjdCk7DQorICAgICAgICBpZiAocFN0cmV0Y2hlZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgICAgICBDRlhfRElCaXRtYXAgYmFja2dyb3VuZDsNCisgICAgICAgIGlmICghYmFja2dyb3VuZC5DcmVhdGUoY2xpcF93aWR0aCwgY2xpcF9oZWlnaHQsIEZYRElCX1JnYjMyKSB8fA0KKyAgICAgICAgICAgICAgICAhR2V0RElCaXRzKCZiYWNrZ3JvdW5kLCBpbWFnZV9yZWN0LmxlZnQgKyBjbGlwX3JlY3QubGVmdCwgaW1hZ2VfcmVjdC50b3AgKyBjbGlwX3JlY3QudG9wLCBOVUxMKSB8fA0KKyAgICAgICAgICAgICAgICAhYmFja2dyb3VuZC5Db21wb3NpdGVNYXNrKDAsIDAsIGNsaXBfd2lkdGgsIGNsaXBfaGVpZ2h0LCBwU3RyZXRjaGVkLCBjb2xvciwgMCwgMCwgRlhESUJfQkxFTkRfTk9STUFMLCBOVUxMLCBGQUxTRSwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSkpIHsNCisgICAgICAgICAgICBkZWxldGUgcFN0cmV0Y2hlZDsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBGWF9SRUNUIHNyY19yZWN0KDAsIDAsIGNsaXBfd2lkdGgsIGNsaXBfaGVpZ2h0KTsNCisgICAgICAgIEZYX0JPT0wgcmV0ID0gU2V0RElCaXRzKCZiYWNrZ3JvdW5kLCAwLCAmc3JjX3JlY3QsIGltYWdlX3JlY3QubGVmdCArIGNsaXBfcmVjdC5sZWZ0LCBpbWFnZV9yZWN0LnRvcCArIGNsaXBfcmVjdC50b3AsIEZYRElCX0JMRU5EX05PUk1BTCwgMCwgTlVMTCk7DQorICAgICAgICBkZWxldGUgcFN0cmV0Y2hlZDsNCisgICAgICAgIHJldHVybiByZXQ7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBpZiAocFNvdXJjZS0+SGFzQWxwaGEoKSkgew0KKyAgICAgICAgICAgIENXaW4zMlBsYXRmb3JtKiBwUGxhdGZvcm0gPSAoQ1dpbjMyUGxhdGZvcm0qKUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpOw0KKyAgICAgICAgICAgIGlmIChwUGxhdGZvcm0tPm1fR2RpcGx1c0V4dC5Jc0F2YWlsYWJsZSgpICYmIHBJY2NUcmFuc2Zvcm0gPT0gTlVMTCAmJiAhcFNvdXJjZS0+SXNDbXlrSW1hZ2UoKSkgew0KKyAgICAgICAgICAgICAgICBDRlhfRElCRXh0cmFjdG9yIHRlbXAocFNvdXJjZSk7DQorICAgICAgICAgICAgICAgIENGWF9ESUJpdG1hcCogcEJpdG1hcCA9IHRlbXA7DQorICAgICAgICAgICAgICAgIGlmIChwQml0bWFwID09IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gcFBsYXRmb3JtLT5tX0dkaXBsdXNFeHQuU3RyZXRjaERJQml0cyhtX2hEQywgcEJpdG1hcCwgZGVzdF9sZWZ0LCBkZXN0X3RvcCwgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQsIHBDbGlwUmVjdCwgZmxhZ3MpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gVXNlRm94aXRTdHJldGNoRW5naW5lKHBTb3VyY2UsIGNvbG9yLCBkZXN0X2xlZnQsIGRlc3RfdG9wLCBkZXN0X3dpZHRoLCBkZXN0X2hlaWdodCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDbGlwUmVjdCwgZmxhZ3MsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0sIGJsZW5kX3R5cGUpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0RJQkV4dHJhY3RvciB0ZW1wKHBTb3VyY2UpOw0KKyAgICAgICAgQ0ZYX0RJQml0bWFwKiBwQml0bWFwID0gdGVtcDsNCisgICAgICAgIGlmIChwQml0bWFwKSB7DQorICAgICAgICAgICAgcmV0dXJuIEdESV9TdHJldGNoRElCaXRzKHBCaXRtYXAsIGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBmbGFncywgcEljY1RyYW5zZm9ybSk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCisjZGVmaW5lIEdFVF9QU19GRUFUVVJFU0VUVElORyAgICAgICAgNDEyMQ0KKyNkZWZpbmUgRkVBVFVSRVNFVFRJTkdfUFNMRVZFTCAgICAgICAyDQoraW50IEdldFBTTGV2ZWwoSERDIGhEQykNCit7DQorICAgIGludCBkZXZpY2VfdHlwZSA9IDo6R2V0RGV2aWNlQ2FwcyhoREMsIFRFQ0hOT0xPR1kpOw0KKyAgICBpZiAoZGV2aWNlX3R5cGUgIT0gRFRfUkFTUFJJTlRFUikgew0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgRlhfRFdPUkQgZXNjID0gR0VUX1BTX0ZFQVRVUkVTRVRUSU5HOw0KKyAgICBpZiAoRXh0RXNjYXBlKGhEQywgUVVFUllFU0NTVVBQT1JULCBzaXplb2YgZXNjLCAoY2hhciopJmVzYywgMCwgTlVMTCkpIHsNCisgICAgICAgIGludCBwYXJhbSA9IEZFQVRVUkVTRVRUSU5HX1BTTEVWRUw7DQorICAgICAgICBpZiAoRXh0RXNjYXBlKGhEQywgR0VUX1BTX0ZFQVRVUkVTRVRUSU5HLCBzaXplb2YoaW50KSwgKGNoYXIqKSZwYXJhbSwgc2l6ZW9mKGludCksIChjaGFyKikmcGFyYW0pID4gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBwYXJhbTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBlc2MgPSBQT1NUU0NSSVBUX0lERU5USUZZOw0KKyAgICBpZiAoRXh0RXNjYXBlKGhEQywgUVVFUllFU0NTVVBQT1JULCBzaXplb2YgZXNjLCAoY2hhciopJmVzYywgMCwgTlVMTCkgPT0gMCkgew0KKyAgICAgICAgZXNjID0gUE9TVFNDUklQVF9EQVRBOw0KKyAgICAgICAgaWYgKEV4dEVzY2FwZShoREMsIFFVRVJZRVNDU1VQUE9SVCwgc2l6ZW9mIGVzYywgKGNoYXIqKSZlc2MsIDAsIE5VTEwpKSB7DQorICAgICAgICAgICAgcmV0dXJuIDI7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKyAgICBlc2MgPSBQU0lERU5UX0dESUNFTlRSSUM7DQorICAgIGlmIChFeHRFc2NhcGUoaERDLCBQT1NUU0NSSVBUX0lERU5USUZZLCBzaXplb2YoRlhfRFdPUkQpLCAoY2hhciopJmVzYywgMCwgTlVMTCkgPD0gMCkgew0KKyAgICAgICAgcmV0dXJuIDI7DQorICAgIH0NCisgICAgZXNjID0gR0VUX1BTX0ZFQVRVUkVTRVRUSU5HOw0KKyAgICBpZiAoRXh0RXNjYXBlKGhEQywgUVVFUllFU0NTVVBQT1JULCBzaXplb2YgZXNjLCAoY2hhciopJmVzYywgMCwgTlVMTCkpIHsNCisgICAgICAgIGludCBwYXJhbSA9IEZFQVRVUkVTRVRUSU5HX1BTTEVWRUw7DQorICAgICAgICBpZiAoRXh0RXNjYXBlKGhEQywgR0VUX1BTX0ZFQVRVUkVTRVRUSU5HLCBzaXplb2YoaW50KSwgKGNoYXIqKSZwYXJhbSwgc2l6ZW9mKGludCksIChjaGFyKikmcGFyYW0pID4gMCkgew0KKyAgICAgICAgICAgIHJldHVybiBwYXJhbTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gMjsNCit9DQoraW50IENGWF9XaW5kb3dzRGV2aWNlOjptX3BzTGV2ZWwgPSAyOw0KK0NGWF9XaW5kb3dzRGV2aWNlOjpDRlhfV2luZG93c0RldmljZShIREMgaERDLCBGWF9CT09MIGJDbXlrT3V0cHV0LCBGWF9CT09MIGJGb3JjZVBTT3V0cHV0LCBpbnQgcHNMZXZlbCkNCit7DQorICAgIG1fYkZvcmNlUFNPdXRwdXQgPSBiRm9yY2VQU091dHB1dDsNCisgICAgbV9wc0xldmVsID0gcHNMZXZlbDsNCisgICAgaWYgKGJGb3JjZVBTT3V0cHV0KSB7DQorICAgICAgICBJRlhfUmVuZGVyRGV2aWNlRHJpdmVyKiBwRHJpdmVyID0gRlhfTkVXIENQU1ByaW50ZXJEcml2ZXI7DQorICAgICAgICBpZiAoIXBEcml2ZXIpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICAoKENQU1ByaW50ZXJEcml2ZXIqKXBEcml2ZXIpLT5Jbml0KGhEQywgcHNMZXZlbCwgYkNteWtPdXRwdXQpOw0KKyAgICAgICAgU2V0RGV2aWNlRHJpdmVyKHBEcml2ZXIpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIFNldERldmljZURyaXZlcihDcmVhdGVEcml2ZXIoaERDLCBiQ215a091dHB1dCkpOw0KK30NCitIREMgQ0ZYX1dpbmRvd3NEZXZpY2U6OkdldERDKCkgY29uc3QNCit7DQorICAgIElGWF9SZW5kZXJEZXZpY2VEcml2ZXIgKnBSREQgPSBHZXREZXZpY2VEcml2ZXIoKTsNCisgICAgaWYgKCFwUkREKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gKEhEQylwUkRELT5HZXRQbGF0Zm9ybVN1cmZhY2UoKTsNCit9DQorSUZYX1JlbmRlckRldmljZURyaXZlciogQ0ZYX1dpbmRvd3NEZXZpY2U6OkNyZWF0ZURyaXZlcihIREMgaERDLCBGWF9CT09MIGJDbXlrT3V0cHV0KQ0KK3sNCisgICAgaW50IGRldmljZV90eXBlID0gOjpHZXREZXZpY2VDYXBzKGhEQywgVEVDSE5PTE9HWSk7DQorICAgIGludCBvYmpfdHlwZSA9IDo6R2V0T2JqZWN0VHlwZShoREMpOw0KKyAgICBpbnQgZGV2aWNlX2NsYXNzOw0KKyAgICBpZiAoZGV2aWNlX3R5cGUgPT0gRFRfUkFTUFJJTlRFUiB8fCBkZXZpY2VfdHlwZSA9PSBEVF9QTE9UVEVSIHx8IG9ial90eXBlID09IE9CSl9FTkhNRVRBREMpIHsNCisgICAgICAgIGRldmljZV9jbGFzcyA9IEZYRENfUFJJTlRFUjsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGRldmljZV9jbGFzcyA9IEZYRENfRElTUExBWTsNCisgICAgfQ0KKyAgICByZXR1cm4gRlhfTkVXIENHZGlEaXNwbGF5RHJpdmVyKGhEQyk7DQorfQ0KK0NGWF9XaW5CaXRtYXBEZXZpY2U6OkNGWF9XaW5CaXRtYXBEZXZpY2UoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBGWERJQl9Gb3JtYXQgZm9ybWF0KQ0KK3sNCisgICAgQklUTUFQSU5GT0hFQURFUiBibWloOw0KKyAgICBGWFNZU19tZW1zZXQzMigmYm1paCwgMCwgc2l6ZW9mIChCSVRNQVBJTkZPSEVBREVSKSk7DQorICAgIGJtaWguYmlTaXplID0gc2l6ZW9mKEJJVE1BUElORk9IRUFERVIpOw0KKyAgICBibWloLmJpQml0Q291bnQgPSBmb3JtYXQgJiAweGZmOw0KKyAgICBibWloLmJpSGVpZ2h0ID0gLWhlaWdodDsNCisgICAgYm1paC5iaVBsYW5lcyA9IDE7DQorICAgIGJtaWguYmlXaWR0aCA9IHdpZHRoOw0KKyAgICBGWF9MUEJZVEUgcEJ1ZmZlcjsNCisgICAgbV9oQml0bWFwID0gQ3JlYXRlRElCU2VjdGlvbihOVUxMLCAoQklUTUFQSU5GTyopJmJtaWgsIERJQl9SR0JfQ09MT1JTLCAoRlhfTFBWT0lEKikmcEJ1ZmZlciwgTlVMTCwgMCk7DQorICAgIGlmIChtX2hCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIENGWF9ESUJpdG1hcCogcEJpdG1hcCA9IEZYX05FVyBDRlhfRElCaXRtYXA7DQorICAgIGlmICghcEJpdG1hcCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIHBCaXRtYXAtPkNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHBCdWZmZXIpOw0KKyAgICBTZXRCaXRtYXAocEJpdG1hcCk7DQorICAgIG1faERDID0gOjpDcmVhdGVDb21wYXRpYmxlREMoTlVMTCk7DQorICAgIG1faE9sZEJpdG1hcCA9IChIQklUTUFQKVNlbGVjdE9iamVjdChtX2hEQywgbV9oQml0bWFwKTsNCisgICAgSUZYX1JlbmRlckRldmljZURyaXZlciogcERyaXZlciA9IEZYX05FVyBDR2RpRGlzcGxheURyaXZlcihtX2hEQyk7DQorICAgIGlmICghcERyaXZlcikgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIFNldERldmljZURyaXZlcihwRHJpdmVyKTsNCit9DQorQ0ZYX1dpbkJpdG1hcERldmljZTo6fkNGWF9XaW5CaXRtYXBEZXZpY2UoKQ0KK3sNCisgICAgaWYgKG1faERDKSB7DQorICAgICAgICBTZWxlY3RPYmplY3QobV9oREMsIG1faE9sZEJpdG1hcCk7DQorICAgICAgICBEZWxldGVEQyhtX2hEQyk7DQorICAgIH0NCisgICAgaWYgKG1faEJpdG1hcCkgew0KKyAgICAgICAgRGVsZXRlT2JqZWN0KG1faEJpdG1hcCk7DQorICAgIH0NCisgICAgZGVsZXRlIEdldEJpdG1hcCgpOw0KK30NCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL3dpbjMyL2Z4X3dpbjMyX2RpYi5jcHAgYi9jb3JlL3NyYy9meGdlL3dpbjMyL2Z4X3dpbjMyX2RpYi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTljZjc4ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL2Z4Z2Uvd2luMzIvZnhfd2luMzJfZGliLmNwcApAQCAtMCwwICsxLDMxMCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpZiBfRlhfT1NfID09IF9GWF9XSU4zMl9ERVNLVE9QXyB8fCAgX0ZYX09TXyA9PSBfRlhfV0lONjRfDQorI2luY2x1ZGUgPHdpbmRvd3MuaD4NCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2dlX3dpbjMyLmgiDQorI2luY2x1ZGUgIndpbjMyX2ludC5oIg0KK0NGWF9CeXRlU3RyaW5nIENGWF9XaW5kb3dzRElCOjpHZXRCaXRtYXBJbmZvKGNvbnN0IENGWF9ESUJpdG1hcCogcEJpdG1hcCkNCit7DQorICAgIENGWF9CeXRlU3RyaW5nIHJlc3VsdDsNCisgICAgaW50IGxlbiA9IHNpemVvZiAoQklUTUFQSU5GT0hFQURFUik7DQorICAgIGlmIChwQml0bWFwLT5HZXRCUFAoKSA9PSAxIHx8IHBCaXRtYXAtPkdldEJQUCgpID09IDgpIHsNCisgICAgICAgIGxlbiArPSBzaXplb2YgKERXT1JEKSAqIChpbnQpKDEgPDwgcEJpdG1hcC0+R2V0QlBQKCkpOw0KKyAgICB9DQorICAgIEJJVE1BUElORk9IRUFERVIqIHBibWloID0gKEJJVE1BUElORk9IRUFERVIqKXJlc3VsdC5HZXRCdWZmZXIobGVuKTsNCisgICAgRlhTWVNfbWVtc2V0MzIocGJtaWgsIDAsIHNpemVvZiAoQklUTUFQSU5GT0hFQURFUikpOw0KKyAgICBwYm1paC0+YmlTaXplID0gc2l6ZW9mKEJJVE1BUElORk9IRUFERVIpOw0KKyAgICBwYm1paC0+YmlCaXRDb3VudCA9IHBCaXRtYXAtPkdldEJQUCgpOw0KKyAgICBwYm1paC0+YmlDb21wcmVzc2lvbiA9IEJJX1JHQjsNCisgICAgcGJtaWgtPmJpSGVpZ2h0ID0gLShpbnQpcEJpdG1hcC0+R2V0SGVpZ2h0KCk7DQorICAgIHBibWloLT5iaVBsYW5lcyA9IDE7DQorICAgIHBibWloLT5iaVdpZHRoID0gcEJpdG1hcC0+R2V0V2lkdGgoKTsNCisgICAgaWYgKHBCaXRtYXAtPkdldEJQUCgpID09IDgpIHsNCisgICAgICAgIEZYX0RXT1JEKiBwUGFsZXR0ZSA9IChGWF9EV09SRCopKHBibWloICsgMSk7DQorICAgICAgICBpZiAocEJpdG1hcC0+R2V0UGFsZXR0ZSgpID09IE5VTEwpIHsNCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI1NjsgaSArKykgew0KKyAgICAgICAgICAgICAgICBwUGFsZXR0ZVtpXSA9IGkgKiAweDAxMDEwMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgICAgIHBQYWxldHRlW2ldID0gcEJpdG1hcC0+R2V0UGFsZXR0ZSgpW2ldOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAocEJpdG1hcC0+R2V0QlBQKCkgPT0gMSkgew0KKyAgICAgICAgRlhfRFdPUkQqIHBQYWxldHRlID0gKEZYX0RXT1JEKikocGJtaWggKyAxKTsNCisgICAgICAgIGlmIChwQml0bWFwLT5HZXRQYWxldHRlKCkgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHBQYWxldHRlWzBdID0gMDsNCisgICAgICAgICAgICBwUGFsZXR0ZVsxXSA9IDB4ZmZmZmZmOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBwUGFsZXR0ZVswXSA9IHBCaXRtYXAtPkdldFBhbGV0dGUoKVswXTsNCisgICAgICAgICAgICBwUGFsZXR0ZVsxXSA9IHBCaXRtYXAtPkdldFBhbGV0dGUoKVsxXTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXN1bHQuUmVsZWFzZUJ1ZmZlcihsZW4pOw0KKyAgICByZXR1cm4gcmVzdWx0Ow0KK30NCitDRlhfRElCaXRtYXAqIF9GWF9XaW5kb3dzRElCX0xvYWRGcm9tQnVmKEJJVE1BUElORk8qIHBibWksIExQVk9JRCBwRGF0YSwgRlhfQk9PTCBiQWxwaGEpDQorew0KKyAgICBpbnQgd2lkdGggPSBwYm1pLT5ibWlIZWFkZXIuYmlXaWR0aDsNCisgICAgaW50IGhlaWdodCA9IHBibWktPmJtaUhlYWRlci5iaUhlaWdodDsNCisgICAgQk9PTCBiQm90dG9tVXAgPSBUUlVFOw0KKyAgICBpZiAoaGVpZ2h0IDwgMCkgew0KKyAgICAgICAgaGVpZ2h0ID0gLWhlaWdodDsNCisgICAgICAgIGJCb3R0b21VcCA9IEZBTFNFOw0KKyAgICB9DQorICAgIGludCBwaXRjaCA9ICh3aWR0aCAqIHBibWktPmJtaUhlYWRlci5iaUJpdENvdW50ICsgMzEpIC8gMzIgKiA0Ow0KKyAgICBDRlhfRElCaXRtYXAqIHBCaXRtYXAgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBpZiAoIXBCaXRtYXApIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYRElCX0Zvcm1hdCBmb3JtYXQgPSBiQWxwaGEgPyAoRlhESUJfRm9ybWF0KShwYm1pLT5ibWlIZWFkZXIuYmlCaXRDb3VudCArIDB4MjAwKSA6IChGWERJQl9Gb3JtYXQpcGJtaS0+Ym1pSGVhZGVyLmJpQml0Q291bnQ7DQorICAgIEZYX0JPT0wgcmV0ID0gcEJpdG1hcC0+Q3JlYXRlKHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7DQorICAgIGlmICghcmV0KSB7DQorICAgICAgICBkZWxldGUgcEJpdG1hcDsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEZYU1lTX21lbWNweTMyKHBCaXRtYXAtPkdldEJ1ZmZlcigpLCBwRGF0YSwgcGl0Y2ggKiBoZWlnaHQpOw0KKyAgICBpZiAoYkJvdHRvbVVwKSB7DQorICAgICAgICBGWF9MUEJZVEUgdGVtcF9idWYgPSBGWF9BbGxvYyhGWF9CWVRFLCBwaXRjaCk7DQorICAgICAgICBpZiAoIXRlbXBfYnVmKSB7DQorICAgICAgICAgICAgaWYgKHBCaXRtYXApIHsNCisgICAgICAgICAgICAgICAgZGVsZXRlIHBCaXRtYXA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaW50IHRvcCA9IDAsIGJvdHRvbSA9IGhlaWdodCAtIDE7DQorICAgICAgICB3aGlsZSAodG9wIDwgYm90dG9tKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIodGVtcF9idWYsIHBCaXRtYXAtPkdldEJ1ZmZlcigpICsgdG9wICogcGl0Y2gsIHBpdGNoKTsNCisgICAgICAgICAgICBGWFNZU19tZW1jcHkzMihwQml0bWFwLT5HZXRCdWZmZXIoKSArIHRvcCAqIHBpdGNoLCBwQml0bWFwLT5HZXRCdWZmZXIoKSArIGJvdHRvbSAqIHBpdGNoLCBwaXRjaCk7DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIocEJpdG1hcC0+R2V0QnVmZmVyKCkgKyBib3R0b20gKiBwaXRjaCwgdGVtcF9idWYsIHBpdGNoKTsNCisgICAgICAgICAgICB0b3AgKys7DQorICAgICAgICAgICAgYm90dG9tIC0tOw0KKyAgICAgICAgfQ0KKyAgICAgICAgRlhfRnJlZSh0ZW1wX2J1Zik7DQorICAgICAgICB0ZW1wX2J1ZiA9IE5VTEw7DQorICAgIH0NCisgICAgaWYgKHBibWktPmJtaUhlYWRlci5iaUJpdENvdW50ID09IDEpIHsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSArKykgew0KKyAgICAgICAgICAgIHBCaXRtYXAtPlNldFBhbGV0dGVFbnRyeShpLCAoKEZYX0RXT1JEKilwYm1pLT5ibWlDb2xvcnMpW2ldIHwgMHhmZjAwMDAwMCk7DQorICAgICAgICB9DQorICAgIH0gZWxzZSBpZiAocGJtaS0+Ym1pSGVhZGVyLmJpQml0Q291bnQgPT0gOCkgew0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICBwQml0bWFwLT5TZXRQYWxldHRlRW50cnkoaSwgKChGWF9EV09SRCopcGJtaS0+Ym1pQ29sb3JzKVtpXSB8IDB4ZmYwMDAwMDApOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBwQml0bWFwOw0KK30NCitDRlhfRElCaXRtYXAqIENGWF9XaW5kb3dzRElCOjpMb2FkRnJvbUJ1ZihCSVRNQVBJTkZPKiBwYm1pLCBMUFZPSUQgcERhdGEpDQorew0KKyAgICByZXR1cm4gX0ZYX1dpbmRvd3NESUJfTG9hZEZyb21CdWYocGJtaSwgcERhdGEsIEZBTFNFKTsNCit9DQorSEJJVE1BUAlDRlhfV2luZG93c0RJQjo6R2V0RERCaXRtYXAoY29uc3QgQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBIREMgaERDKQ0KK3sNCisgICAgQ0ZYX0J5dGVTdHJpbmcgaW5mbyA9IEdldEJpdG1hcEluZm8ocEJpdG1hcCk7DQorICAgIEhCSVRNQVAgaEJpdG1hcCA9IE5VTEw7DQorICAgIGhCaXRtYXAgPSBDcmVhdGVESUJpdG1hcChoREMsIChCSVRNQVBJTkZPSEVBREVSKikoRlhfTFBDU1RSKWluZm8sIENCTV9JTklULA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJpdG1hcC0+R2V0QnVmZmVyKCksIChCSVRNQVBJTkZPKikoRlhfTFBDU1RSKWluZm8sIERJQl9SR0JfQ09MT1JTKTsNCisgICAgcmV0dXJuIGhCaXRtYXA7DQorfQ0KK3ZvaWQgR2V0Qml0bWFwU2l6ZShIQklUTUFQIGhCaXRtYXAsIGludCYgdywgaW50JiBoKQ0KK3sNCisgICAgQklUTUFQIGJtcDsNCisgICAgR2V0T2JqZWN0KGhCaXRtYXAsIHNpemVvZiBibXAsICZibXApOw0KKyAgICB3ID0gYm1wLmJtV2lkdGg7DQorICAgIGggPSBibXAuYm1IZWlnaHQ7DQorfQ0KK0NGWF9ESUJpdG1hcCogQ0ZYX1dpbmRvd3NESUI6OkxvYWRGcm9tRmlsZShGWF9MUENXU1RSIGZpbGVuYW1lKQ0KK3sNCisgICAgQ1dpbjMyUGxhdGZvcm0qIHBQbGF0Zm9ybSA9IChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCk7DQorICAgIGlmIChwUGxhdGZvcm0tPm1fR2RpcGx1c0V4dC5Jc0F2YWlsYWJsZSgpKSB7DQorICAgICAgICBXSU5ESUJfT3Blbl9BcmdzXyBhcmdzOw0KKyAgICAgICAgYXJncy5mbGFncyA9IFdJTkRJQl9PUEVOX1BBVEhOQU1FOw0KKyAgICAgICAgYXJncy5wYXRoX25hbWUgPSBmaWxlbmFtZTsNCisgICAgICAgIHJldHVybiBwUGxhdGZvcm0tPm1fR2RpcGx1c0V4dC5Mb2FkRElCaXRtYXAoYXJncyk7DQorICAgIH0NCisgICAgSEJJVE1BUCBoQml0bWFwID0gKEhCSVRNQVApTG9hZEltYWdlVyhOVUxMLCAod2NoYXJfdCopZmlsZW5hbWUsIElNQUdFX0JJVE1BUCwgMCwgMCwgTFJfTE9BREZST01GSUxFKTsNCisgICAgaWYgKGhCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgSERDIGhEQyA9IENyZWF0ZUNvbXBhdGlibGVEQyhOVUxMKTsNCisgICAgaW50IHdpZHRoLCBoZWlnaHQ7DQorICAgIEdldEJpdG1hcFNpemUoaEJpdG1hcCwgd2lkdGgsIGhlaWdodCk7DQorICAgIENGWF9ESUJpdG1hcCogcERJQml0bWFwID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgaWYgKCFwRElCaXRtYXApIHsNCisgICAgICAgIERlbGV0ZURDKGhEQyk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoIXBESUJpdG1hcC0+Q3JlYXRlKHdpZHRoLCBoZWlnaHQsIEZYRElCX1JnYikpIHsNCisgICAgICAgIGRlbGV0ZSBwRElCaXRtYXA7DQorICAgICAgICBEZWxldGVEQyhoREMpOw0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgQ0ZYX0J5dGVTdHJpbmcgaW5mbyA9IEdldEJpdG1hcEluZm8ocERJQml0bWFwKTsNCisgICAgaW50IHJldCA9IEdldERJQml0cyhoREMsIGhCaXRtYXAsIDAsIGhlaWdodCwgcERJQml0bWFwLT5HZXRCdWZmZXIoKSwgKEJJVE1BUElORk8qKShGWF9MUENTVFIpaW5mbywgRElCX1JHQl9DT0xPUlMpOw0KKyAgICBpZiAoIXJldCkgew0KKyAgICAgICAgaWYgKHBESUJpdG1hcCkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwRElCaXRtYXA7DQorICAgICAgICB9DQorICAgICAgICBwRElCaXRtYXAgPSBOVUxMOw0KKyAgICB9DQorICAgIERlbGV0ZURDKGhEQyk7DQorICAgIHJldHVybiBwRElCaXRtYXA7DQorfQ0KK0NGWF9ESUJpdG1hcCogQ0ZYX1dpbmRvd3NESUI6OkxvYWRESUJpdG1hcChXSU5ESUJfT3Blbl9BcmdzXyBhcmdzKQ0KK3sNCisgICAgQ1dpbjMyUGxhdGZvcm0qIHBQbGF0Zm9ybSA9IChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCk7DQorICAgIGlmIChwUGxhdGZvcm0tPm1fR2RpcGx1c0V4dC5Jc0F2YWlsYWJsZSgpKSB7DQorICAgICAgICByZXR1cm4gcFBsYXRmb3JtLT5tX0dkaXBsdXNFeHQuTG9hZERJQml0bWFwKGFyZ3MpOw0KKyAgICB9IGVsc2UgaWYgKGFyZ3MuZmxhZ3MgPT0gV0lORElCX09QRU5fTUVNT1JZKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBIQklUTUFQIGhCaXRtYXAgPSAoSEJJVE1BUClMb2FkSW1hZ2VXKE5VTEwsICh3Y2hhcl90KilhcmdzLnBhdGhfbmFtZSwgSU1BR0VfQklUTUFQLCAwLCAwLCBMUl9MT0FERlJPTUZJTEUpOw0KKyAgICBpZiAoaEJpdG1hcCA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBIREMgaERDID0gQ3JlYXRlQ29tcGF0aWJsZURDKE5VTEwpOw0KKyAgICBpbnQgd2lkdGgsIGhlaWdodDsNCisgICAgR2V0Qml0bWFwU2l6ZShoQml0bWFwLCB3aWR0aCwgaGVpZ2h0KTsNCisgICAgQ0ZYX0RJQml0bWFwKiBwRElCaXRtYXAgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBpZiAoIXBESUJpdG1hcCkgew0KKyAgICAgICAgRGVsZXRlREMoaERDKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmICghcERJQml0bWFwLT5DcmVhdGUod2lkdGgsIGhlaWdodCwgRlhESUJfUmdiKSkgew0KKyAgICAgICAgZGVsZXRlIHBESUJpdG1hcDsNCisgICAgICAgIERlbGV0ZURDKGhEQyk7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBDRlhfQnl0ZVN0cmluZyBpbmZvID0gR2V0Qml0bWFwSW5mbyhwRElCaXRtYXApOw0KKyAgICBpbnQgcmV0ID0gR2V0RElCaXRzKGhEQywgaEJpdG1hcCwgMCwgaGVpZ2h0LCBwRElCaXRtYXAtPkdldEJ1ZmZlcigpLCAoQklUTUFQSU5GTyopKEZYX0xQQ1NUUilpbmZvLCBESUJfUkdCX0NPTE9SUyk7DQorICAgIGlmICghcmV0KSB7DQorICAgICAgICBpZiAocERJQml0bWFwKSB7DQorICAgICAgICAgICAgZGVsZXRlIHBESUJpdG1hcDsNCisgICAgICAgIH0NCisgICAgICAgIHBESUJpdG1hcCA9IE5VTEw7DQorICAgIH0NCisgICAgRGVsZXRlREMoaERDKTsNCisgICAgcmV0dXJuIHBESUJpdG1hcDsNCit9DQorQ0ZYX0RJQml0bWFwKiBDRlhfV2luZG93c0RJQjo6TG9hZEZyb21EREIoSERDIGhEQywgSEJJVE1BUCBoQml0bWFwLCBGWF9EV09SRCogcFBhbGV0dGUsIEZYX0RXT1JEIHBhbHNpemUpDQorew0KKyAgICBGWF9CT09MIGJDcmVhdGVkREMgPSBoREMgPT0gTlVMTDsNCisgICAgaWYgKGhEQyA9PSBOVUxMKSB7DQorICAgICAgICBoREMgPSBDcmVhdGVDb21wYXRpYmxlREMoTlVMTCk7DQorICAgIH0NCisgICAgQklUTUFQSU5GT0hFQURFUiBibWloOw0KKyAgICBGWFNZU19tZW1zZXQzMigmYm1paCwgMCwgc2l6ZW9mIGJtaWgpOw0KKyAgICBibWloLmJpU2l6ZSA9IHNpemVvZiBibWloOw0KKyAgICBHZXRESUJpdHMoaERDLCBoQml0bWFwLCAwLCAwLCBOVUxMLCAoQklUTUFQSU5GTyopJmJtaWgsIERJQl9SR0JfQ09MT1JTKTsNCisgICAgaW50IHdpZHRoID0gYm1paC5iaVdpZHRoOw0KKyAgICBpbnQgaGVpZ2h0ID0gYWJzKGJtaWguYmlIZWlnaHQpOw0KKyAgICBibWloLmJpSGVpZ2h0ID0gLWhlaWdodDsNCisgICAgYm1paC5iaUNvbXByZXNzaW9uID0gQklfUkdCOw0KKyAgICBDRlhfRElCaXRtYXAqIHBESUJpdG1hcCA9IEZYX05FVyBDRlhfRElCaXRtYXA7DQorICAgIGlmICghcERJQml0bWFwKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpbnQgcmV0ID0gMDsNCisgICAgaWYgKGJtaWguYmlCaXRDb3VudCA9PSAxIHx8IGJtaWguYmlCaXRDb3VudCA9PSA4KSB7DQorICAgICAgICBpbnQgc2l6ZSA9IHNpemVvZiAoQklUTUFQSU5GT0hFQURFUikgKyA4Ow0KKyAgICAgICAgaWYgKGJtaWguYmlCaXRDb3VudCA9PSA4KSB7DQorICAgICAgICAgICAgc2l6ZSArPSBzaXplb2YgKEZYX0RXT1JEKSAqIDI1NDsNCisgICAgICAgIH0NCisgICAgICAgIEJJVE1BUElORk8qIHBibWloID0gKEJJVE1BUElORk8qKUZYX0FsbG9jKEZYX0JZVEUsIHNpemUpOw0KKyAgICAgICAgaWYgKCFwYm1paCkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwRElCaXRtYXA7DQorICAgICAgICAgICAgaWYgKGJDcmVhdGVkREMpIHsNCisgICAgICAgICAgICAgICAgRGVsZXRlREMoaERDKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBGWFNZU19tZW1zZXQzMihwYm1paCwgMCwgc2l6ZW9mIChCSVRNQVBJTkZPSEVBREVSKSk7DQorICAgICAgICBwYm1paC0+Ym1pSGVhZGVyLmJpU2l6ZSA9IHNpemVvZihCSVRNQVBJTkZPSEVBREVSKTsNCisgICAgICAgIHBibWloLT5ibWlIZWFkZXIuYmlCaXRDb3VudCA9IGJtaWguYmlCaXRDb3VudDsNCisgICAgICAgIHBibWloLT5ibWlIZWFkZXIuYmlDb21wcmVzc2lvbiA9IEJJX1JHQjsNCisgICAgICAgIHBibWloLT5ibWlIZWFkZXIuYmlIZWlnaHQgPSAtaGVpZ2h0Ow0KKyAgICAgICAgcGJtaWgtPmJtaUhlYWRlci5iaVBsYW5lcyA9IDE7DQorICAgICAgICBwYm1paC0+Ym1pSGVhZGVyLmJpV2lkdGggPSBibWloLmJpV2lkdGg7DQorICAgICAgICBpZiAoIXBESUJpdG1hcC0+Q3JlYXRlKGJtaWguYmlXaWR0aCwgaGVpZ2h0LCBibWloLmJpQml0Q291bnQgPT0gMSA/IEZYRElCXzFicHBSZ2IgOiBGWERJQl84YnBwUmdiKSkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwRElCaXRtYXA7DQorICAgICAgICAgICAgRlhfRnJlZShwYm1paCk7DQorICAgICAgICAgICAgaWYgKGJDcmVhdGVkREMpIHsNCisgICAgICAgICAgICAgICAgRGVsZXRlREMoaERDKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICByZXQgPSBHZXRESUJpdHMoaERDLCBoQml0bWFwLCAwLCBoZWlnaHQsIHBESUJpdG1hcC0+R2V0QnVmZmVyKCksIChCSVRNQVBJTkZPKilwYm1paCwgRElCX1JHQl9DT0xPUlMpOw0KKyAgICAgICAgRlhfRnJlZShwYm1paCk7DQorICAgICAgICBwYm1paCA9IE5VTEw7DQorICAgICAgICBwRElCaXRtYXAtPkNvcHlQYWxldHRlKHBQYWxldHRlLCBwYWxzaXplKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIGlmIChibWloLmJpQml0Q291bnQgPD0gMjQpIHsNCisgICAgICAgICAgICBibWloLmJpQml0Q291bnQgPSAyNDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYm1paC5iaUJpdENvdW50ID0gMzI7DQorICAgICAgICB9DQorICAgICAgICBpZiAoIXBESUJpdG1hcC0+Q3JlYXRlKGJtaWguYmlXaWR0aCwgaGVpZ2h0LCBibWloLmJpQml0Q291bnQgPT0gMjQgPyBGWERJQl9SZ2IgOiBGWERJQl9SZ2IzMikpIHsNCisgICAgICAgICAgICBkZWxldGUgcERJQml0bWFwOw0KKyAgICAgICAgICAgIGlmIChiQ3JlYXRlZERDKSB7DQorICAgICAgICAgICAgICAgIERlbGV0ZURDKGhEQyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0ID0gR2V0RElCaXRzKGhEQywgaEJpdG1hcCwgMCwgaGVpZ2h0LCBwRElCaXRtYXAtPkdldEJ1ZmZlcigpLCAoQklUTUFQSU5GTyopJmJtaWgsIERJQl9SR0JfQ09MT1JTKTsNCisgICAgICAgIGlmIChyZXQgIT0gMCAmJiBibWloLmJpQml0Q291bnQgPT0gMzIpIHsNCisgICAgICAgICAgICBpbnQgcGl0Y2ggPSBwRElCaXRtYXAtPkdldFBpdGNoKCk7DQorICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKyspIHsNCisgICAgICAgICAgICAgICAgRlhfQllURSogZGVzdF9zY2FuID0gKEZYX0JZVEUqKShwRElCaXRtYXAtPkdldEJ1ZmZlcigpICsgcm93ICogcGl0Y2gpOw0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCB3aWR0aDsgY29sKyspIHsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhblszXSA9IDI1NTsNCisgICAgICAgICAgICAgICAgICAgIGRlc3Rfc2NhbiArPSA0Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChyZXQgPT0gMCkgew0KKyAgICAgICAgaWYgKHBESUJpdG1hcCkgew0KKyAgICAgICAgICAgIGRlbGV0ZSBwRElCaXRtYXA7DQorICAgICAgICB9DQorICAgICAgICBwRElCaXRtYXAgPSBOVUxMOw0KKyAgICB9DQorICAgIGlmIChiQ3JlYXRlZERDKSB7DQorICAgICAgICBEZWxldGVEQyhoREMpOw0KKyAgICB9DQorICAgIHJldHVybiBwRElCaXRtYXA7DQorfQ0KK0NGWF9XaW5kb3dzRElCOjpDRlhfV2luZG93c0RJQihIREMgaERDLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpDQorew0KKyAgICBDcmVhdGUod2lkdGgsIGhlaWdodCwgRlhESUJfUmdiLCAoRlhfTFBCWVRFKTEpOw0KKyAgICBCSVRNQVBJTkZPSEVBREVSIGJtaWg7DQorICAgIEZYU1lTX21lbXNldDMyKCZibWloLCAwLCBzaXplb2YgYm1paCk7DQorICAgIGJtaWguYmlTaXplID0gc2l6ZW9mIGJtaWg7DQorICAgIGJtaWguYmlCaXRDb3VudCA9IDI0Ow0KKyAgICBibWloLmJpSGVpZ2h0ID0gLWhlaWdodDsNCisgICAgYm1paC5iaVBsYW5lcyA9IDE7DQorICAgIGJtaWguYmlXaWR0aCA9IHdpZHRoOw0KKyAgICBtX2hCaXRtYXAgPSBDcmVhdGVESUJTZWN0aW9uKGhEQywgKEJJVE1BUElORk8qKSZibWloLCBESUJfUkdCX0NPTE9SUywgKExQVk9JRCopJm1fcEJ1ZmZlciwgTlVMTCwgMCk7DQorICAgIG1faE1lbURDID0gQ3JlYXRlQ29tcGF0aWJsZURDKGhEQyk7DQorICAgIG1faE9sZEJpdG1hcCA9IChIQklUTUFQKVNlbGVjdE9iamVjdChtX2hNZW1EQywgbV9oQml0bWFwKTsNCit9DQorQ0ZYX1dpbmRvd3NESUI6On5DRlhfV2luZG93c0RJQigpDQorew0KKyAgICBTZWxlY3RPYmplY3QobV9oTWVtREMsIG1faE9sZEJpdG1hcCk7DQorICAgIERlbGV0ZURDKG1faE1lbURDKTsNCisgICAgRGVsZXRlT2JqZWN0KG1faEJpdG1hcCk7DQorfQ0KK3ZvaWQgQ0ZYX1dpbmRvd3NESUI6OkxvYWRGcm9tRGV2aWNlKEhEQyBoREMsIGludCBsZWZ0LCBpbnQgdG9wKQ0KK3sNCisgICAgOjpCaXRCbHQobV9oTWVtREMsIDAsIDAsIG1fV2lkdGgsIG1fSGVpZ2h0LCBoREMsIGxlZnQsIHRvcCwgU1JDQ09QWSk7DQorfQ0KK3ZvaWQgQ0ZYX1dpbmRvd3NESUI6OlNldFRvRGV2aWNlKEhEQyBoREMsIGludCBsZWZ0LCBpbnQgdG9wKQ0KK3sNCisgICAgOjpCaXRCbHQoaERDLCBsZWZ0LCB0b3AsIG1fV2lkdGgsIG1fSGVpZ2h0LCBtX2hNZW1EQywgMCwgMCwgU1JDQ09QWSk7DQorfQ0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL2Z4Z2Uvd2luMzIvZnhfd2luMzJfZHdyaXRlLmNwcCBiL2NvcmUvc3JjL2Z4Z2Uvd2luMzIvZnhfd2luMzJfZHdyaXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGM5NjIwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS93aW4zMi9meF93aW4zMl9kd3JpdGUuY3BwCkBAIC0wLDAgKzEsNDgwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisgDQorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20NCisNCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2dlLmgiDQorI2lmIF9GWF9PU18gPT0gX0ZYX1dJTjMyX0RFU0tUT1BfIHx8IF9GWF9PU18gPT0gX0ZYX1dJTjY0Xw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2Vfd2luMzIuaCINCisjaW5jbHVkZSAiZHdyaXRlX2ludC5oIg0KKyNpbmNsdWRlICIuLi9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvRFdyaXRlLmgiDQordHlwZWRlZiBIUkVTVUxUICAoX19zdGRjYWxsICpGdW5jVHlwZV9EV3JpdGVDcmVhdGVGYWN0b3J5KShfX2luIERXUklURV9GQUNUT1JZX1RZUEUsIF9faW4gUkVGSUlELCBfX291dCBJVW5rbm93biAqKik7DQordGVtcGxhdGUgPHR5cGVuYW1lIEludGVyZmFjZVR5cGU+DQoraW5saW5lIHZvaWQgU2FmZVJlbGVhc2UoSW50ZXJmYWNlVHlwZSoqIGN1cnJlbnRPYmplY3QpDQorew0KKyAgICBpZiAoKmN1cnJlbnRPYmplY3QgIT0gTlVMTCkgew0KKyAgICAgICAgKCpjdXJyZW50T2JqZWN0KS0+UmVsZWFzZSgpOw0KKyAgICAgICAgKmN1cnJlbnRPYmplY3QgPSBOVUxMOw0KKyAgICB9DQorfQ0KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRlcmZhY2VUeXBlPg0KK2lubGluZSBJbnRlcmZhY2VUeXBlKiBTYWZlQWNxdWlyZShJbnRlcmZhY2VUeXBlKiBuZXdPYmplY3QpDQorew0KKyAgICBpZiAobmV3T2JqZWN0ICE9IE5VTEwpIHsNCisgICAgICAgIG5ld09iamVjdC0+QWRkUmVmKCk7DQorICAgIH0NCisgICAgcmV0dXJuIG5ld09iamVjdDsNCit9DQorY2xhc3MgQ0R3Rm9udEZpbGVTdHJlYW0gOiBwdWJsaWMgSURXcml0ZUZvbnRGaWxlU3RyZWFtLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIGV4cGxpY2l0IENEd0ZvbnRGaWxlU3RyZWFtKHZvaWQgY29uc3QqIGZvbnRGaWxlUmVmZXJlbmNlS2V5LCBVSU5UMzIgZm9udEZpbGVSZWZlcmVuY2VLZXlTaXplKTsNCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBpaWQsIHZvaWQqKiBwcHZPYmplY3QpOw0KKyAgICB2aXJ0dWFsIFVMT05HICAgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7DQorICAgIHZpcnR1YWwgVUxPTkcgICBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7DQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZWFkRmlsZUZyYWdtZW50KHZvaWQgY29uc3QqKiBmcmFnbWVudFN0YXJ0LCBVSU5UNjQgZmlsZU9mZnNldCwgVUlOVDY0IGZyYWdtZW50U2l6ZSwgT1VUIHZvaWQqKiBmcmFnbWVudENvbnRleHQpOw0KKyAgICB2aXJ0dWFsIHZvaWQgICAgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZUZpbGVGcmFnbWVudCh2b2lkKiBmcmFnbWVudENvbnRleHQpOw0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgR2V0RmlsZVNpemUoT1VUIFVJTlQ2NCogZmlsZVNpemUpOw0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgR2V0TGFzdFdyaXRlVGltZShPVVQgVUlOVDY0KiBsYXN0V3JpdGVUaW1lKTsNCisgICAgYm9vbCBJc0luaXRpYWxpemVkKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIHJlc291cmNlUHRyXyAhPSBOVUxMOw0KKyAgICB9DQorcHJpdmF0ZToNCisgICAgVUxPTkcgcmVmQ291bnRfOw0KKyAgICB2b2lkIGNvbnN0KiByZXNvdXJjZVB0cl87DQorICAgIERXT1JEIHJlc291cmNlU2l6ZV87DQorfTsNCitjbGFzcyBDRHdGb250RmlsZUxvYWRlciA6IHB1YmxpYyBJRFdyaXRlRm9udEZpbGVMb2FkZXIsIHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBpaWQsIHZvaWQqKiBwcHZPYmplY3QpOw0KKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOw0KKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsNCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENyZWF0ZVN0cmVhbUZyb21LZXkodm9pZCBjb25zdCogZm9udEZpbGVSZWZlcmVuY2VLZXksIFVJTlQzMiBmb250RmlsZVJlZmVyZW5jZUtleVNpemUsIE9VVCBJRFdyaXRlRm9udEZpbGVTdHJlYW0qKiBmb250RmlsZVN0cmVhbSk7DQorDQorICAgIHN0YXRpYyBJRFdyaXRlRm9udEZpbGVMb2FkZXIqIEdldExvYWRlcigpDQorICAgIHsNCisgICAgICAgIGlmIChpbnN0YW5jZV8gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIGluc3RhbmNlXyA9IEZYX05FVyBDRHdGb250RmlsZUxvYWRlcigpOw0KKyAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZV87DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gaW5zdGFuY2VfOw0KKyAgICB9DQorICAgIHN0YXRpYyBib29sIElzTG9hZGVySW5pdGlhbGl6ZWQoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gaW5zdGFuY2VfICE9IE5VTEw7DQorICAgIH0NCitwcml2YXRlOg0KKyAgICBDRHdGb250RmlsZUxvYWRlcigpOw0KKyAgICBVTE9ORyByZWZDb3VudF87DQorICAgIHN0YXRpYyBJRFdyaXRlRm9udEZpbGVMb2FkZXIqIGluc3RhbmNlXzsNCit9Ow0KK2NsYXNzIENEd0ZvbnRDb250ZXh0IDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRHdGb250Q29udGV4dChJRFdyaXRlRmFjdG9yeSogZHdyaXRlRmFjdG9yeSk7DQorICAgIH5DRHdGb250Q29udGV4dCgpOw0KKyAgICBIUkVTVUxUIEluaXRpYWxpemUoKTsNCitwcml2YXRlOg0KKyAgICBDRHdGb250Q29udGV4dChDRHdGb250Q29udGV4dCBjb25zdCYpOw0KKyAgICB2b2lkIG9wZXJhdG9yPShDRHdGb250Q29udGV4dCBjb25zdCYpOw0KKyAgICBIUkVTVUxUIGhyXzsNCisgICAgSURXcml0ZUZhY3RvcnkqIGR3cml0ZUZhY3RvcnlfOw0KK307DQorY2xhc3MgQ0R3R2RpVGV4dFJlbmRlcmVyIDogcHVibGljIENGWF9PYmplY3QNCit7DQorcHVibGljOg0KKyAgICBDRHdHZGlUZXh0UmVuZGVyZXIoDQorICAgICAgICBDRlhfRElCaXRtYXAqIHBCaXRtYXAsDQorICAgICAgICBJRFdyaXRlQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBSZW5kZXJUYXJnZXQsDQorICAgICAgICBJRFdyaXRlUmVuZGVyaW5nUGFyYW1zKiByZW5kZXJpbmdQYXJhbXMNCisgICAgKTsNCisgICAgQ0R3R2RpVGV4dFJlbmRlcmVyOjp+Q0R3R2RpVGV4dFJlbmRlcmVyKCk7DQorICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRHJhd0dseXBoUnVuKA0KKyAgICAgICAgY29uc3QgRlhfUkVDVCYgdGV4dF9iYm94LA0KKyAgICAgICAgX19pbl9vcHQgQ0ZYX0NsaXBSZ24qIHBDbGlwUmduLA0KKyAgICAgICAgX19pbl9vcHQgRFdSSVRFX01BVFJJWCBjb25zdCogcE1hdHJpeCwNCisgICAgICAgIEZMT0FUIGJhc2VsaW5lT3JpZ2luWCwNCisgICAgICAgIEZMT0FUIGJhc2VsaW5lT3JpZ2luWSwNCisgICAgICAgIERXUklURV9NRUFTVVJJTkdfTU9ERSBtZWFzdXJpbmdNb2RlLA0KKyAgICAgICAgX19pbiBEV1JJVEVfR0xZUEhfUlVOIGNvbnN0KiBnbHlwaFJ1biwNCisgICAgICAgIGNvbnN0IENPTE9SUkVGJiB0ZXh0Q29sb3INCisgICAgKTsNCitwcml2YXRlOg0KKyAgICBDRlhfRElCaXRtYXAqIHBCaXRtYXBfOw0KKyAgICBJRFdyaXRlQml0bWFwUmVuZGVyVGFyZ2V0KiBwUmVuZGVyVGFyZ2V0XzsNCisgICAgSURXcml0ZVJlbmRlcmluZ1BhcmFtcyogcFJlbmRlcmluZ1BhcmFtc187DQorfTsNCitDRFdyaXRlRXh0OjpDRFdyaXRlRXh0KCkNCit7DQorICAgIG1faE1vZHVsZSA9IE5VTEw7DQorICAgIG1fcERXcml0ZUZhY3RvcnkgPSBOVUxMOw0KKyAgICBtX3BEd0ZvbnRDb250ZXh0ID0gTlVMTDsNCisgICAgbV9wRHdUZXh0UmVuZGVyZXIgPSBOVUxMOw0KK30NCit2b2lkIENEV3JpdGVFeHQ6OkxvYWQoKQ0KK3sNCit9DQordm9pZCBDRFdyaXRlRXh0OjpVbmxvYWQoKQ0KK3sNCisgICAgaWYgKG1fcER3Rm9udENvbnRleHQpIHsNCisgICAgICAgIGRlbGV0ZSAoQ0R3Rm9udENvbnRleHQqKW1fcER3Rm9udENvbnRleHQ7DQorICAgICAgICBtX3BEd0ZvbnRDb250ZXh0ID0gTlVMTDsNCisgICAgfQ0KKyAgICBTYWZlUmVsZWFzZSgoSURXcml0ZUZhY3RvcnkqKikmbV9wRFdyaXRlRmFjdG9yeSk7DQorfQ0KK0NEV3JpdGVFeHQ6On5DRFdyaXRlRXh0KCkNCit7DQorICAgIFVubG9hZCgpOw0KK30NCitMUFZPSUQJQ0RXcml0ZUV4dDo6RHdDcmVhdGVGb250RmFjZUZyb21TdHJlYW0oRlhfTFBCWVRFIHBEYXRhLCBGWF9EV09SRCBzaXplLCBpbnQgc2ltdWxhdGlvbl9zdHlsZSkNCit7DQorICAgIElEV3JpdGVGYWN0b3J5KiBwRHdGYWN0b3J5ID0gKElEV3JpdGVGYWN0b3J5KiltX3BEV3JpdGVGYWN0b3J5Ow0KKyAgICBJRFdyaXRlRm9udEZpbGUqIHBEd0ZvbnRGaWxlID0gTlVMTDsNCisgICAgSURXcml0ZUZvbnRGYWNlKiBwRHdGb250RmFjZSA9IE5VTEw7DQorICAgIEJPT0wgaXNTdXBwb3J0ZWRGb250VHlwZSA9IEZBTFNFOw0KKyAgICBEV1JJVEVfRk9OVF9GSUxFX1RZUEUgZm9udEZpbGVUeXBlOw0KKyAgICBEV1JJVEVfRk9OVF9GQUNFX1RZUEUgZm9udEZhY2VUeXBlOw0KKyAgICBVSU5UMzIgbnVtYmVyT2ZGYWNlczsNCisgICAgRFdSSVRFX0ZPTlRfU0lNVUxBVElPTlMgZm9udFN0eWxlID0gKERXUklURV9GT05UX1NJTVVMQVRJT05TKShzaW11bGF0aW9uX3N0eWxlICYgMyk7DQorICAgIEhSRVNVTFQgaHIgPSBTX09LOw0KKyAgICBociA9IHBEd0ZhY3RvcnktPkNyZWF0ZUN1c3RvbUZvbnRGaWxlUmVmZXJlbmNlKA0KKyAgICAgICAgICAgICAodm9pZCBjb25zdCopcERhdGEsDQorICAgICAgICAgICAgIChVSU5UMzIpc2l6ZSwNCisgICAgICAgICAgICAgQ0R3Rm9udEZpbGVMb2FkZXI6OkdldExvYWRlcigpLA0KKyAgICAgICAgICAgICAmcER3Rm9udEZpbGUNCisgICAgICAgICApOw0KKyAgICBpZiAoRkFJTEVEKGhyKSkgew0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgaHIgPSBwRHdGb250RmlsZS0+QW5hbHl6ZSgNCisgICAgICAgICAgICAgJmlzU3VwcG9ydGVkRm9udFR5cGUsDQorICAgICAgICAgICAgICZmb250RmlsZVR5cGUsDQorICAgICAgICAgICAgICZmb250RmFjZVR5cGUsDQorICAgICAgICAgICAgICZudW1iZXJPZkZhY2VzDQorICAgICAgICAgKTsNCisgICAgaWYgKEZBSUxFRChocikgfHwgIWlzU3VwcG9ydGVkRm9udFR5cGUgfHwgZm9udEZhY2VUeXBlID09IERXUklURV9GT05UX0ZBQ0VfVFlQRV9VTktOT1dOKSB7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBociA9IHBEd0ZhY3RvcnktPkNyZWF0ZUZvbnRGYWNlKA0KKyAgICAgICAgICAgICBmb250RmFjZVR5cGUsDQorICAgICAgICAgICAgIDEsDQorICAgICAgICAgICAgICZwRHdGb250RmlsZSwNCisgICAgICAgICAgICAgMCwNCisgICAgICAgICAgICAgZm9udFN0eWxlLA0KKyAgICAgICAgICAgICAmcER3Rm9udEZhY2UNCisgICAgICAgICApOw0KKyAgICBpZiAoRkFJTEVEKGhyKSkgew0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgU2FmZVJlbGVhc2UoJnBEd0ZvbnRGaWxlKTsNCisgICAgcmV0dXJuIHBEd0ZvbnRGYWNlOw0KK2ZhaWxlZDoNCisgICAgU2FmZVJlbGVhc2UoJnBEd0ZvbnRGaWxlKTsNCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK0ZYX0JPT0wgQ0RXcml0ZUV4dDo6RHdDcmVhdGVSZW5kZXJpbmdUYXJnZXQoQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCB2b2lkKiogcmVuZGVyVGFyZ2V0KQ0KK3sNCisgICAgaWYgKHBCaXRtYXAtPkdldEZvcm1hdCgpID4gRlhESUJfQXJnYikgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIElEV3JpdGVGYWN0b3J5KiBwRHdGYWN0b3J5ID0gKElEV3JpdGVGYWN0b3J5KiltX3BEV3JpdGVGYWN0b3J5Ow0KKyAgICBJRFdyaXRlR2RpSW50ZXJvcCogcEdkaUludGVyb3AgPSBOVUxMOw0KKyAgICBJRFdyaXRlQml0bWFwUmVuZGVyVGFyZ2V0KiBwQml0bWFwUmVuZGVyVGFyZ2V0ID0gTlVMTDsNCisgICAgSURXcml0ZVJlbmRlcmluZ1BhcmFtcyogcFJlbmRlcmluZ1BhcmFtcyA9IE5VTEw7DQorICAgIEhSRVNVTFQgaHIgPSBTX09LOw0KKyAgICBociA9IHBEd0ZhY3RvcnktPkdldEdkaUludGVyb3AoJnBHZGlJbnRlcm9wKTsNCisgICAgaWYgKEZBSUxFRChocikpIHsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIGhyID0gcEdkaUludGVyb3AtPkNyZWF0ZUJpdG1hcFJlbmRlclRhcmdldChOVUxMLCBwQml0bWFwLT5HZXRXaWR0aCgpLCBwQml0bWFwLT5HZXRIZWlnaHQoKSwNCisgICAgICAgICAgICAmcEJpdG1hcFJlbmRlclRhcmdldCk7DQorICAgIGlmIChGQUlMRUQoaHIpKSB7DQorICAgICAgICBnb3RvIGZhaWxlZDsNCisgICAgfQ0KKyAgICBociA9IHBEd0ZhY3RvcnktPkNyZWF0ZUN1c3RvbVJlbmRlcmluZ1BhcmFtcygNCisgICAgICAgICAgICAgMS4wZiwNCisgICAgICAgICAgICAgMC4wZiwNCisgICAgICAgICAgICAgMS4wZiwNCisgICAgICAgICAgICAgRFdSSVRFX1BJWEVMX0dFT01FVFJZX1JHQiwNCisgICAgICAgICAgICAgRFdSSVRFX1JFTkRFUklOR19NT0RFX0RFRkFVTFQsDQorICAgICAgICAgICAgICZwUmVuZGVyaW5nUGFyYW1zDQorICAgICAgICAgKTsNCisgICAgaWYgKEZBSUxFRChocikpIHsNCisgICAgICAgIGdvdG8gZmFpbGVkOw0KKyAgICB9DQorICAgIGhyID0gcEJpdG1hcFJlbmRlclRhcmdldC0+U2V0UGl4ZWxzUGVyRGlwKDEuMGYpOw0KKyAgICBpZiAoRkFJTEVEKGhyKSkgew0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgKihDRHdHZGlUZXh0UmVuZGVyZXIqKilyZW5kZXJUYXJnZXQgPSBGWF9ORVcgQ0R3R2RpVGV4dFJlbmRlcmVyKHBCaXRtYXAsIHBCaXRtYXBSZW5kZXJUYXJnZXQsIHBSZW5kZXJpbmdQYXJhbXMpOw0KKyAgICBpZiAoKihDRHdHZGlUZXh0UmVuZGVyZXIqKilyZW5kZXJUYXJnZXQgPT0gTlVMTCkgew0KKyAgICAgICAgZ290byBmYWlsZWQ7DQorICAgIH0NCisgICAgU2FmZVJlbGVhc2UoJnBHZGlJbnRlcm9wKTsNCisgICAgU2FmZVJlbGVhc2UoJnBCaXRtYXBSZW5kZXJUYXJnZXQpOw0KKyAgICBTYWZlUmVsZWFzZSgmcFJlbmRlcmluZ1BhcmFtcyk7DQorICAgIHJldHVybiBUUlVFOw0KK2ZhaWxlZDoNCisgICAgU2FmZVJlbGVhc2UoJnBHZGlJbnRlcm9wKTsNCisgICAgU2FmZVJlbGVhc2UoJnBCaXRtYXBSZW5kZXJUYXJnZXQpOw0KKyAgICBTYWZlUmVsZWFzZSgmcFJlbmRlcmluZ1BhcmFtcyk7DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTAlDRFdyaXRlRXh0OjpEd1JlbmRpbmdTdHJpbmcodm9pZCogcmVuZGVyVGFyZ2V0LCBDRlhfQ2xpcFJnbiogcENsaXBSZ24sIEZYX1JFQ1QmIHN0cmluZ1JlY3QsIENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZm9udCwgRlhfRkxPQVQgZm9udF9zaXplLCBGWF9BUkdCIHRleHRfY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdseXBoX2NvdW50LCB1bnNpZ25lZCBzaG9ydCogZ2x5cGhfaW5kaWNlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBiYXNlbGluZU9yaWdpblgsIEZYX0ZMT0FUIGJhc2VsaW5lT3JpZ2luWSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBnbHlwaF9vZmZzZXRzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUKiBnbHlwaF9hZHZhbmNlcykNCit7DQorICAgIGlmIChyZW5kZXJUYXJnZXQgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgQ0R3R2RpVGV4dFJlbmRlcmVyKiBwVGV4dFJlbmRlcmVyID0gKENEd0dkaVRleHRSZW5kZXJlciopcmVuZGVyVGFyZ2V0Ow0KKyAgICBEV1JJVEVfTUFUUklYIHRyYW5zZm9ybTsNCisgICAgRFdSSVRFX0dMWVBIX1JVTiBnbHlwaFJ1bjsNCisgICAgSFJFU1VMVCBociA9IFNfT0s7DQorICAgIGlmIChwTWF0cml4KSB7DQorICAgICAgICB0cmFuc2Zvcm0ubTExID0gcE1hdHJpeC0+YTsNCisgICAgICAgIHRyYW5zZm9ybS5tMTIgPSBwTWF0cml4LT5iOw0KKyAgICAgICAgdHJhbnNmb3JtLm0yMSA9IHBNYXRyaXgtPmM7DQorICAgICAgICB0cmFuc2Zvcm0ubTIyID0gcE1hdHJpeC0+ZDsNCisgICAgICAgIHRyYW5zZm9ybS5keCA9IHBNYXRyaXgtPmU7DQorICAgICAgICB0cmFuc2Zvcm0uZHkgPSBwTWF0cml4LT5mOw0KKyAgICB9DQorICAgIGdseXBoUnVuLmZvbnRGYWNlID0gKElEV3JpdGVGb250RmFjZSopZm9udDsNCisgICAgZ2x5cGhSdW4uZm9udEVtU2l6ZSA9IGZvbnRfc2l6ZTsNCisgICAgZ2x5cGhSdW4uZ2x5cGhDb3VudCA9IGdseXBoX2NvdW50Ow0KKyAgICBnbHlwaFJ1bi5nbHlwaEluZGljZXMgPSBnbHlwaF9pbmRpY2VzOw0KKyAgICBnbHlwaFJ1bi5nbHlwaEFkdmFuY2VzID0gZ2x5cGhfYWR2YW5jZXM7DQorICAgIGdseXBoUnVuLmdseXBoT2Zmc2V0cyA9IChEV1JJVEVfR0xZUEhfT0ZGU0VUKilnbHlwaF9vZmZzZXRzOw0KKyAgICBnbHlwaFJ1bi5pc1NpZGV3YXlzID0gRkFMU0U7DQorICAgIGdseXBoUnVuLmJpZGlMZXZlbCA9IDA7DQorICAgIGhyID0gcFRleHRSZW5kZXJlci0+RHJhd0dseXBoUnVuKA0KKyAgICAgICAgICAgICBzdHJpbmdSZWN0LA0KKyAgICAgICAgICAgICBwQ2xpcFJnbiwNCisgICAgICAgICAgICAgcE1hdHJpeCA/ICZ0cmFuc2Zvcm0gOiBOVUxMLA0KKyAgICAgICAgICAgICBiYXNlbGluZU9yaWdpblgsIGJhc2VsaW5lT3JpZ2luWSwNCisgICAgICAgICAgICAgRFdSSVRFX01FQVNVUklOR19NT0RFX05BVFVSQUwsDQorICAgICAgICAgICAgICZnbHlwaFJ1biwNCisgICAgICAgICAgICAgUkdCKEZYQVJHQl9SKHRleHRfY29sb3IpLCBGWEFSR0JfRyh0ZXh0X2NvbG9yKSwgRlhBUkdCX0IodGV4dF9jb2xvcikpDQorICAgICAgICAgKTsNCisgICAgcmV0dXJuIFNVQ0NFRURFRChocikgPyBUUlVFIDogRkFMU0U7DQorfQ0KK3ZvaWQgQ0RXcml0ZUV4dDo6RHdEZWxldGVSZW5kZXJpbmdUYXJnZXQodm9pZCogcmVuZGVyVGFyZ2V0KQ0KK3sNCisgICAgaWYgKHJlbmRlclRhcmdldCkgew0KKyAgICAgICAgZGVsZXRlIChDRHdHZGlUZXh0UmVuZGVyZXIqKXJlbmRlclRhcmdldDsNCisgICAgfQ0KK30NCit2b2lkIENEV3JpdGVFeHQ6OkR3RGVsZXRlRm9udCh2b2lkKiBwRm9udCkNCit7DQorICAgIGlmIChwRm9udCkgew0KKyAgICAgICAgU2FmZVJlbGVhc2UoKElEV3JpdGVGb250RmFjZSoqKSZwRm9udCk7DQorICAgIH0NCit9DQorQ0R3Rm9udEZpbGVTdHJlYW06OkNEd0ZvbnRGaWxlU3RyZWFtKHZvaWQgY29uc3QqIGZvbnRGaWxlUmVmZXJlbmNlS2V5LCBVSU5UMzIgZm9udEZpbGVSZWZlcmVuY2VLZXlTaXplKQ0KK3sNCisgICAgcmVmQ291bnRfID0gMDsNCisgICAgcmVzb3VyY2VQdHJfID0gZm9udEZpbGVSZWZlcmVuY2VLZXk7DQorICAgIHJlc291cmNlU2l6ZV8gPSBmb250RmlsZVJlZmVyZW5jZUtleVNpemU7DQorfQ0KK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ0R3Rm9udEZpbGVTdHJlYW06OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBpaWQsIHZvaWQqKiBwcHZPYmplY3QpDQorew0KKyAgICBpZiAoaWlkID09IElJRF9JVW5rbm93biB8fCBpaWQgPT0gX191dWlkb2YoSURXcml0ZUZvbnRGaWxlU3RyZWFtKSkgew0KKyAgICAgICAgKnBwdk9iamVjdCA9IHRoaXM7DQorICAgICAgICBBZGRSZWYoKTsNCisgICAgICAgIHJldHVybiBTX09LOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgKnBwdk9iamVjdCA9IE5VTEw7DQorICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsNCisgICAgfQ0KK30NCitVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBDRHdGb250RmlsZVN0cmVhbTo6QWRkUmVmKCkNCit7DQorICAgIHJldHVybiBJbnRlcmxvY2tlZEluY3JlbWVudCgobG9uZyopKCZyZWZDb3VudF8pKTsNCit9DQorVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQ0R3Rm9udEZpbGVTdHJlYW06OlJlbGVhc2UoKQ0KK3sNCisgICAgVUxPTkcgbmV3Q291bnQgPSBJbnRlcmxvY2tlZERlY3JlbWVudCgobG9uZyopKCZyZWZDb3VudF8pKTsNCisgICAgaWYgKG5ld0NvdW50ID09IDApIHsNCisgICAgICAgIGRlbGV0ZSB0aGlzOw0KKyAgICB9DQorICAgIHJldHVybiBuZXdDb3VudDsNCit9DQorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDRHdGb250RmlsZVN0cmVhbTo6UmVhZEZpbGVGcmFnbWVudCgNCisgICAgdm9pZCBjb25zdCoqIGZyYWdtZW50U3RhcnQsDQorICAgIFVJTlQ2NCBmaWxlT2Zmc2V0LA0KKyAgICBVSU5UNjQgZnJhZ21lbnRTaXplLA0KKyAgICBPVVQgdm9pZCoqIGZyYWdtZW50Q29udGV4dA0KKykNCit7DQorICAgIGlmIChmaWxlT2Zmc2V0IDw9IHJlc291cmNlU2l6ZV8gJiYNCisgICAgICAgICAgICBmcmFnbWVudFNpemUgPD0gcmVzb3VyY2VTaXplXyAtIGZpbGVPZmZzZXQpIHsNCisgICAgICAgICpmcmFnbWVudFN0YXJ0ID0gc3RhdGljX2Nhc3Q8RlhfQllURSBjb25zdCo+KHJlc291cmNlUHRyXykgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGZpbGVPZmZzZXQpOw0KKyAgICAgICAgKmZyYWdtZW50Q29udGV4dCA9IE5VTEw7DQorICAgICAgICByZXR1cm4gU19PSzsNCisgICAgfSBlbHNlIHsNCisgICAgICAgICpmcmFnbWVudFN0YXJ0ID0gTlVMTDsNCisgICAgICAgICpmcmFnbWVudENvbnRleHQgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuIEVfRkFJTDsNCisgICAgfQ0KK30NCit2b2lkIFNURE1FVEhPRENBTExUWVBFIENEd0ZvbnRGaWxlU3RyZWFtOjpSZWxlYXNlRmlsZUZyYWdtZW50KHZvaWQqIGZyYWdtZW50Q29udGV4dCkNCit7DQorfQ0KK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ0R3Rm9udEZpbGVTdHJlYW06OkdldEZpbGVTaXplKE9VVCBVSU5UNjQqIGZpbGVTaXplKQ0KK3sNCisgICAgKmZpbGVTaXplID0gcmVzb3VyY2VTaXplXzsNCisgICAgcmV0dXJuIFNfT0s7DQorfQ0KK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ0R3Rm9udEZpbGVTdHJlYW06OkdldExhc3RXcml0ZVRpbWUoT1VUIFVJTlQ2NCogbGFzdFdyaXRlVGltZSkNCit7DQorICAgICpsYXN0V3JpdGVUaW1lID0gMDsNCisgICAgcmV0dXJuIEVfTk9USU1QTDsNCit9DQorSURXcml0ZUZvbnRGaWxlTG9hZGVyKiBDRHdGb250RmlsZUxvYWRlcjo6aW5zdGFuY2VfID0gTlVMTDsNCitDRHdGb250RmlsZUxvYWRlcjo6Q0R3Rm9udEZpbGVMb2FkZXIoKSA6DQorICAgIHJlZkNvdW50XygwKQ0KK3sNCit9DQorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDRHdGb250RmlsZUxvYWRlcjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIGlpZCwgdm9pZCoqIHBwdk9iamVjdCkNCit7DQorICAgIGlmIChpaWQgPT0gSUlEX0lVbmtub3duIHx8IGlpZCA9PSBfX3V1aWRvZihJRFdyaXRlRm9udEZpbGVMb2FkZXIpKSB7DQorICAgICAgICAqcHB2T2JqZWN0ID0gdGhpczsNCisgICAgICAgIEFkZFJlZigpOw0KKyAgICAgICAgcmV0dXJuIFNfT0s7DQorICAgIH0gZWxzZSB7DQorICAgICAgICAqcHB2T2JqZWN0ID0gTlVMTDsNCisgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOw0KKyAgICB9DQorfQ0KK1VMT05HIFNURE1FVEhPRENBTExUWVBFIENEd0ZvbnRGaWxlTG9hZGVyOjpBZGRSZWYoKQ0KK3sNCisgICAgcmV0dXJuIEludGVybG9ja2VkSW5jcmVtZW50KChsb25nKikoJnJlZkNvdW50XykpOw0KK30NCitVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBDRHdGb250RmlsZUxvYWRlcjo6UmVsZWFzZSgpDQorew0KKyAgICBVTE9ORyBuZXdDb3VudCA9IEludGVybG9ja2VkRGVjcmVtZW50KChsb25nKikoJnJlZkNvdW50XykpOw0KKyAgICBpZiAobmV3Q291bnQgPT0gMCkgew0KKyAgICAgICAgaW5zdGFuY2VfID0gTlVMTDsNCisgICAgICAgIGRlbGV0ZSB0aGlzOw0KKyAgICB9DQorICAgIHJldHVybiBuZXdDb3VudDsNCit9DQorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDRHdGb250RmlsZUxvYWRlcjo6Q3JlYXRlU3RyZWFtRnJvbUtleSgNCisgICAgdm9pZCBjb25zdCogZm9udEZpbGVSZWZlcmVuY2VLZXksDQorICAgIFVJTlQzMiBmb250RmlsZVJlZmVyZW5jZUtleVNpemUsDQorICAgIE9VVCBJRFdyaXRlRm9udEZpbGVTdHJlYW0qKiBmb250RmlsZVN0cmVhbQ0KKykNCit7DQorICAgICpmb250RmlsZVN0cmVhbSA9IE5VTEw7DQorICAgIENEd0ZvbnRGaWxlU3RyZWFtKiBzdHJlYW0gPSBGWF9ORVcgQ0R3Rm9udEZpbGVTdHJlYW0oZm9udEZpbGVSZWZlcmVuY2VLZXksIGZvbnRGaWxlUmVmZXJlbmNlS2V5U2l6ZSk7DQorICAgIGlmIChzdHJlYW0gPT0gTlVMTCkJew0KKyAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7DQorICAgIH0NCisgICAgaWYgKCFzdHJlYW0tPklzSW5pdGlhbGl6ZWQoKSkgew0KKyAgICAgICAgZGVsZXRlIHN0cmVhbTsNCisgICAgICAgIHJldHVybiBFX0ZBSUw7DQorICAgIH0NCisgICAgKmZvbnRGaWxlU3RyZWFtID0gU2FmZUFjcXVpcmUoc3RyZWFtKTsNCisgICAgcmV0dXJuIFNfT0s7DQorfQ0KK0NEd0ZvbnRDb250ZXh0OjpDRHdGb250Q29udGV4dChJRFdyaXRlRmFjdG9yeSogZHdyaXRlRmFjdG9yeSkgOg0KKyAgICBocl8oU19GQUxTRSksDQorICAgIGR3cml0ZUZhY3RvcnlfKFNhZmVBY3F1aXJlKGR3cml0ZUZhY3RvcnkpKQ0KK3sNCit9DQorQ0R3Rm9udENvbnRleHQ6On5DRHdGb250Q29udGV4dCgpDQorew0KKyAgICBpZihkd3JpdGVGYWN0b3J5XyAmJiBocl8gPT0gU19PSykgew0KKyAgICAgICAgZHdyaXRlRmFjdG9yeV8tPlVucmVnaXN0ZXJGb250RmlsZUxvYWRlcihDRHdGb250RmlsZUxvYWRlcjo6R2V0TG9hZGVyKCkpOw0KKyAgICB9DQorICAgIFNhZmVSZWxlYXNlKCZkd3JpdGVGYWN0b3J5Xyk7DQorfQ0KK0hSRVNVTFQgQ0R3Rm9udENvbnRleHQ6OkluaXRpYWxpemUoKQ0KK3sNCisgICAgaWYgKGhyXyA9PSBTX0ZBTFNFKSB7DQorICAgICAgICByZXR1cm4gaHJfID0gZHdyaXRlRmFjdG9yeV8tPlJlZ2lzdGVyRm9udEZpbGVMb2FkZXIoQ0R3Rm9udEZpbGVMb2FkZXI6OkdldExvYWRlcigpKTsNCisgICAgfQ0KKyAgICByZXR1cm4gaHJfOw0KK30NCitDRHdHZGlUZXh0UmVuZGVyZXI6OkNEd0dkaVRleHRSZW5kZXJlcihDRlhfRElCaXRtYXAqIHBCaXRtYXAsIElEV3JpdGVCaXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1hcFJlbmRlclRhcmdldCwgSURXcml0ZVJlbmRlcmluZ1BhcmFtcyogcmVuZGVyaW5nUGFyYW1zKToNCisgICAgcEJpdG1hcF8ocEJpdG1hcCksDQorICAgIHBSZW5kZXJUYXJnZXRfKFNhZmVBY3F1aXJlKGJpdG1hcFJlbmRlclRhcmdldCkpLA0KKyAgICBwUmVuZGVyaW5nUGFyYW1zXyhTYWZlQWNxdWlyZShyZW5kZXJpbmdQYXJhbXMpKQ0KK3sNCit9DQorQ0R3R2RpVGV4dFJlbmRlcmVyOjp+Q0R3R2RpVGV4dFJlbmRlcmVyKCkNCit7DQorICAgIFNhZmVSZWxlYXNlKCZwUmVuZGVyVGFyZ2V0Xyk7DQorICAgIFNhZmVSZWxlYXNlKCZwUmVuZGVyaW5nUGFyYW1zXyk7DQorfQ0KK1NURE1FVEhPRElNUCBDRHdHZGlUZXh0UmVuZGVyZXI6OkRyYXdHbHlwaFJ1bigNCisgICAgY29uc3QgRlhfUkVDVCYgdGV4dF9iYm94LA0KKyAgICBfX2luX29wdCBDRlhfQ2xpcFJnbiogcENsaXBSZ24sDQorICAgIF9faW5fb3B0IERXUklURV9NQVRSSVggY29uc3QqIHBNYXRyaXgsDQorICAgIEZMT0FUIGJhc2VsaW5lT3JpZ2luWCwNCisgICAgRkxPQVQgYmFzZWxpbmVPcmlnaW5ZLA0KKyAgICBEV1JJVEVfTUVBU1VSSU5HX01PREUgbWVhc3VyaW5nTW9kZSwNCisgICAgX19pbiBEV1JJVEVfR0xZUEhfUlVOIGNvbnN0KiBnbHlwaFJ1biwNCisgICAgY29uc3QgQ09MT1JSRUYmIHRleHRDb2xvcg0KKykNCit7DQorICAgIEhSRVNVTFQgaHIgPSBTX09LOw0KKyAgICBpZiAocE1hdHJpeCkgew0KKyAgICAgICAgaHIgPSBwUmVuZGVyVGFyZ2V0Xy0+U2V0Q3VycmVudFRyYW5zZm9ybShwTWF0cml4KTsNCisgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7DQorICAgICAgICAgICAgcmV0dXJuIGhyOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIEhEQyBoREMgPSBwUmVuZGVyVGFyZ2V0Xy0+R2V0TWVtb3J5REMoKTsNCisgICAgSEJJVE1BUCBoQml0bWFwID0gKEhCSVRNQVApOjpHZXRDdXJyZW50T2JqZWN0KGhEQywgT0JKX0JJVE1BUCk7DQorICAgIEJJVE1BUCBiaXRtYXA7DQorICAgIEdldE9iamVjdChoQml0bWFwLCBzaXplb2YgYml0bWFwLCAmYml0bWFwKTsNCisgICAgQ0ZYX0RJQml0bWFwIGRpYjsNCisgICAgZGliLkNyZWF0ZSgNCisgICAgICAgIGJpdG1hcC5ibVdpZHRoLA0KKyAgICAgICAgYml0bWFwLmJtSGVpZ2h0LA0KKyAgICAgICAgYml0bWFwLmJtQml0c1BpeGVsID09IDI0ID8gRlhESUJfUmdiIDogRlhESUJfUmdiMzIsDQorICAgICAgICAoRlhfTFBCWVRFKWJpdG1hcC5ibUJpdHMNCisgICAgKTsNCisgICAgZGliLkNvbXBvc2l0ZUJpdG1hcCgNCisgICAgICAgIHRleHRfYmJveC5sZWZ0LA0KKyAgICAgICAgdGV4dF9iYm94LnRvcCwNCisgICAgICAgIHRleHRfYmJveC5XaWR0aCgpLA0KKyAgICAgICAgdGV4dF9iYm94LkhlaWdodCgpLA0KKyAgICAgICAgcEJpdG1hcF8sDQorICAgICAgICB0ZXh0X2Jib3gubGVmdCwNCisgICAgICAgIHRleHRfYmJveC50b3AsDQorICAgICAgICBGWERJQl9CTEVORF9OT1JNQUwsDQorICAgICAgICBOVUxMDQorICAgICk7DQorICAgIGhyID0gcFJlbmRlclRhcmdldF8tPkRyYXdHbHlwaFJ1bigNCisgICAgICAgICAgICAgYmFzZWxpbmVPcmlnaW5YLA0KKyAgICAgICAgICAgICBiYXNlbGluZU9yaWdpblksDQorICAgICAgICAgICAgIG1lYXN1cmluZ01vZGUsDQorICAgICAgICAgICAgIGdseXBoUnVuLA0KKyAgICAgICAgICAgICBwUmVuZGVyaW5nUGFyYW1zXywNCisgICAgICAgICAgICAgdGV4dENvbG9yDQorICAgICAgICAgKTsNCisgICAgaWYgKEZBSUxFRChocikpIHsNCisgICAgICAgIHJldHVybiBocjsNCisgICAgfQ0KKyAgICBwQml0bWFwXy0+Q29tcG9zaXRlQml0bWFwKA0KKyAgICAgICAgdGV4dF9iYm94LmxlZnQsDQorICAgICAgICB0ZXh0X2Jib3gudG9wLA0KKyAgICAgICAgdGV4dF9iYm94LldpZHRoKCksDQorICAgICAgICB0ZXh0X2Jib3guSGVpZ2h0KCksDQorICAgICAgICAmZGliLA0KKyAgICAgICAgdGV4dF9iYm94LmxlZnQsDQorICAgICAgICB0ZXh0X2Jib3gudG9wLA0KKyAgICAgICAgRlhESUJfQkxFTkRfTk9STUFMLA0KKyAgICAgICAgcENsaXBSZ24NCisgICAgKTsNCisgICAgcmV0dXJuIGhyOw0KK30NCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL3dpbjMyL2Z4X3dpbjMyX2dkaXBleHQuY3BwIGIvY29yZS9zcmMvZnhnZS93aW4zMi9meF93aW4zMl9nZGlwZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjkyNDA2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS93aW4zMi9meF93aW4zMl9nZGlwZXh0LmNwcApAQCAtMCwwICsxLDEyODYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKyANCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQ0KKw0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2UuaCINCisjaWYgX0ZYX09TXyA9PSBfRlhfV0lOMzJfREVTS1RPUF8gfHwgX0ZYX09TXyA9PSBfRlhfV0lONjRfDQorI2luY2x1ZGUgPHdpbmRvd3MuaD4NCisjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9meGdlL2Z4X2dlX3dpbjMyLmgiDQorI2luY2x1ZGUgIndpbjMyX2ludC5oIg0KKyNpbmNsdWRlICIuLi9NaWNyb3NvZnQgU0RLL2luY2x1ZGUvR2RpUGx1cy5oIg0KK3VzaW5nIG5hbWVzcGFjZSBHZGlwbHVzOw0KK3VzaW5nIG5hbWVzcGFjZSBHZGlwbHVzOjpEbGxFeHBvcnRzOw0KKyNkZWZpbmUgR2RpRmlsbFR5cGUyR2RpcChmaWxsX3R5cGUpIChmaWxsX3R5cGUgPT0gQUxURVJOQVRFID8gRmlsbE1vZGVBbHRlcm5hdGUgOiBGaWxsTW9kZVdpbmRpbmcpDQorc3RhdGljIENvbWJpbmVNb2RlIEdkaUNvbWJpbmVNb2RlMkdkaXAoaW50IG1vZGUpDQorew0KKyAgICBzd2l0Y2ggKG1vZGUpIHsNCisgICAgICAgIGNhc2UgUkdOX0FORDoNCisgICAgICAgICAgICByZXR1cm4gQ29tYmluZU1vZGVJbnRlcnNlY3Q7DQorICAgIH0NCisgICAgcmV0dXJuIENvbWJpbmVNb2RlSW50ZXJzZWN0Ow0KK30NCitlbnVtIHsNCisgICAgRnVuY0lkX0dkaXBDcmVhdGVQYXRoMiwNCisgICAgRnVuY0lkX0dkaXBTZXRQZW5EYXNoU3R5bGUsDQorICAgIEZ1bmNJZF9HZGlwU2V0UGVuRGFzaEFycmF5LA0KKyAgICBGdW5jSWRfR2RpcFNldFBlbkRhc2hDYXAxOTc4MTksDQorICAgIEZ1bmNJZF9HZGlwU2V0UGVuTGluZUpvaW4sDQorICAgIEZ1bmNJZF9HZGlwU2V0UGVuV2lkdGgsDQorICAgIEZ1bmNJZF9HZGlwQ3JlYXRlRnJvbUhEQywNCisgICAgRnVuY0lkX0dkaXBTZXRQYWdlVW5pdCwNCisgICAgRnVuY0lkX0dkaXBTZXRTbW9vdGhpbmdNb2RlLA0KKyAgICBGdW5jSWRfR2RpcENyZWF0ZVNvbGlkRmlsbCwNCisgICAgRnVuY0lkX0dkaXBGaWxsUGF0aCwNCisgICAgRnVuY0lkX0dkaXBEZWxldGVCcnVzaCwNCisgICAgRnVuY0lkX0dkaXBDcmVhdGVQZW4xLA0KKyAgICBGdW5jSWRfR2RpcFNldFBlbk1pdGVyTGltaXQsDQorICAgIEZ1bmNJZF9HZGlwRHJhd1BhdGgsDQorICAgIEZ1bmNJZF9HZGlwRGVsZXRlUGVuLA0KKyAgICBGdW5jSWRfR2RpcERlbGV0ZVBhdGgsDQorICAgIEZ1bmNJZF9HZGlwRGVsZXRlR3JhcGhpY3MsDQorICAgIEZ1bmNJZF9HZGlwQ3JlYXRlQml0bWFwRnJvbUZpbGVJQ00sDQorICAgIEZ1bmNJZF9HZGlwQ3JlYXRlQml0bWFwRnJvbVN0cmVhbUlDTSwNCisgICAgRnVuY0lkX0dkaXBHZXRJbWFnZUhlaWdodCwNCisgICAgRnVuY0lkX0dkaXBHZXRJbWFnZVdpZHRoLA0KKyAgICBGdW5jSWRfR2RpcEdldEltYWdlUGl4ZWxGb3JtYXQsDQorICAgIEZ1bmNJZF9HZGlwQml0bWFwTG9ja0JpdHMsDQorICAgIEZ1bmNJZF9HZGlwR2V0SW1hZ2VQYWxldHRlU2l6ZSwNCisgICAgRnVuY0lkX0dkaXBHZXRJbWFnZVBhbGV0dGUsDQorICAgIEZ1bmNJZF9HZGlwQml0bWFwVW5sb2NrQml0cywNCisgICAgRnVuY0lkX0dkaXBEaXNwb3NlSW1hZ2UsDQorICAgIEZ1bmNJZF9HZGlwRmlsbFJlY3RhbmdsZSwNCisgICAgRnVuY0lkX0dkaXBDcmVhdGVCaXRtYXBGcm9tU2NhbjAsDQorICAgIEZ1bmNJZF9HZGlwU2V0SW1hZ2VQYWxldHRlLA0KKyAgICBGdW5jSWRfR2RpcFNldEludGVycG9sYXRpb25Nb2RlLA0KKyAgICBGdW5jSWRfR2RpcERyYXdJbWFnZVBvaW50c0ksDQorICAgIEZ1bmNJZF9HZGlwQ3JlYXRlQml0bWFwRnJvbUdkaURpYiwNCisgICAgRnVuY0lkX0dkaXBsdXNTdGFydHVwLA0KKyAgICBGdW5jSWRfR2RpcERyYXdMaW5lSSwNCisgICAgRnVuY0lkX0dkaXBSZXNldENsaXAsDQorICAgIEZ1bmNJZF9HZGlwQ3JlYXRlUGF0aCwNCisgICAgRnVuY0lkX0dkaXBBZGRQYXRoUGF0aCwNCisgICAgRnVuY0lkX0dkaXBTZXRQYXRoRmlsbE1vZGUsDQorICAgIEZ1bmNJZF9HZGlwU2V0Q2xpcFBhdGgsDQorICAgIEZ1bmNJZF9HZGlwR2V0Q2xpcCwNCisgICAgRnVuY0lkX0dkaXBDcmVhdGVSZWdpb24sDQorICAgIEZ1bmNJZF9HZGlwR2V0Q2xpcEJvdW5kc0ksDQorICAgIEZ1bmNJZF9HZGlwU2V0Q2xpcFJlZ2lvbiwNCisgICAgRnVuY0lkX0dkaXBXaWRlblBhdGgsDQorICAgIEZ1bmNJZF9HZGlwQWRkUGF0aExpbmUsDQorICAgIEZ1bmNJZF9HZGlwQWRkUGF0aFJlY3RhbmdsZSwNCisgICAgRnVuY0lkX0dkaXBEZWxldGVSZWdpb24sDQorICAgIEZ1bmNJZF9HZGlwR2V0REMsDQorICAgIEZ1bmNJZF9HZGlwUmVsZWFzZURDLA0KKyAgICBGdW5jSWRfR2RpcFNldFBlbkxpbmVDYXAxOTc4MTksDQorICAgIEZ1bmNJZF9HZGlwU2V0UGVuRGFzaE9mZnNldCwNCisgICAgRnVuY0lkX0dkaXBSZXNldFBhdGgsDQorICAgIEZ1bmNJZF9HZGlwQ3JlYXRlUmVnaW9uUGF0aCwNCisgICAgRnVuY0lkX0dkaXBDcmVhdGVGb250LA0KKyAgICBGdW5jSWRfR2RpcEdldEZvbnRTaXplLA0KKyAgICBGdW5jSWRfR2RpcENyZWF0ZUZvbnRGYW1pbHlGcm9tTmFtZSwNCisgICAgRnVuY0lkX0dkaXBTZXRUZXh0UmVuZGVyaW5nSGludCwNCisgICAgRnVuY0lkX0dkaXBEcmF3RHJpdmVyU3RyaW5nLA0KKyAgICBGdW5jSWRfR2RpcENyZWF0ZU1hdHJpeDIsDQorICAgIEZ1bmNJZF9HZGlwRGVsZXRlTWF0cml4LA0KKyAgICBGdW5jSWRfR2RpcFNldFdvcmxkVHJhbnNmb3JtLA0KKyAgICBGdW5jSWRfR2RpcFJlc2V0V29ybGRUcmFuc2Zvcm0sDQorICAgIEZ1bmNJZF9HZGlwRGVsZXRlRm9udEZhbWlseSwNCisgICAgRnVuY0lkX0dkaXBEZWxldGVGb250LA0KKyAgICBGdW5jSWRfR2RpcE5ld1ByaXZhdGVGb250Q29sbGVjdGlvbiwNCisgICAgRnVuY0lkX0dkaXBEZWxldGVQcml2YXRlRm9udENvbGxlY3Rpb24sDQorICAgIEZ1bmNJZF9HZGlwUHJpdmF0ZUFkZE1lbW9yeUZvbnQsDQorICAgIEZ1bmNJZF9HZGlwR2V0Rm9udENvbGxlY3Rpb25GYW1pbHlMaXN0LA0KKyAgICBGdW5jSWRfR2RpcEdldEZvbnRDb2xsZWN0aW9uRmFtaWx5Q291bnQsDQorICAgIEZ1bmNJZF9HZGlwU2V0VGV4dENvbnRyYXN0LA0KKyAgICBGdW5jSWRfR2RpcFNldFBpeGVsT2Zmc2V0TW9kZSwNCisgICAgRnVuY0lkX0dkaXBHZXRJbWFnZUdyYXBoaWNzQ29udGV4dCwNCisgICAgRnVuY0lkX0dkaXBEcmF3SW1hZ2VJLA0KKyAgICBGdW5jSWRfR2RpcERyYXdJbWFnZVJlY3RJLA0KKyAgICBGdW5jSWRfR2RpcERyYXdTdHJpbmcsDQorICAgIEZ1bmNJZF9HZGlwU2V0UGVuVHJhbnNmb3JtLA0KK307DQorc3RhdGljIExQQ1NUUiBnX0dkaXBGdW5jTmFtZXNbXSA9IHsNCisgICAgIkdkaXBDcmVhdGVQYXRoMiIsDQorICAgICJHZGlwU2V0UGVuRGFzaFN0eWxlIiwNCisgICAgIkdkaXBTZXRQZW5EYXNoQXJyYXkiLA0KKyAgICAiR2RpcFNldFBlbkRhc2hDYXAxOTc4MTkiLA0KKyAgICAiR2RpcFNldFBlbkxpbmVKb2luIiwNCisgICAgIkdkaXBTZXRQZW5XaWR0aCIsDQorICAgICJHZGlwQ3JlYXRlRnJvbUhEQyIsDQorICAgICJHZGlwU2V0UGFnZVVuaXQiLA0KKyAgICAiR2RpcFNldFNtb290aGluZ01vZGUiLA0KKyAgICAiR2RpcENyZWF0ZVNvbGlkRmlsbCIsDQorICAgICJHZGlwRmlsbFBhdGgiLA0KKyAgICAiR2RpcERlbGV0ZUJydXNoIiwNCisgICAgIkdkaXBDcmVhdGVQZW4xIiwNCisgICAgIkdkaXBTZXRQZW5NaXRlckxpbWl0IiwNCisgICAgIkdkaXBEcmF3UGF0aCIsDQorICAgICJHZGlwRGVsZXRlUGVuIiwNCisgICAgIkdkaXBEZWxldGVQYXRoIiwNCisgICAgIkdkaXBEZWxldGVHcmFwaGljcyIsDQorICAgICJHZGlwQ3JlYXRlQml0bWFwRnJvbUZpbGVJQ00iLA0KKyAgICAiR2RpcENyZWF0ZUJpdG1hcEZyb21TdHJlYW1JQ00iLA0KKyAgICAiR2RpcEdldEltYWdlSGVpZ2h0IiwNCisgICAgIkdkaXBHZXRJbWFnZVdpZHRoIiwNCisgICAgIkdkaXBHZXRJbWFnZVBpeGVsRm9ybWF0IiwNCisgICAgIkdkaXBCaXRtYXBMb2NrQml0cyIsDQorICAgICJHZGlwR2V0SW1hZ2VQYWxldHRlU2l6ZSIsDQorICAgICJHZGlwR2V0SW1hZ2VQYWxldHRlIiwNCisgICAgIkdkaXBCaXRtYXBVbmxvY2tCaXRzIiwNCisgICAgIkdkaXBEaXNwb3NlSW1hZ2UiLA0KKyAgICAiR2RpcEZpbGxSZWN0YW5nbGUiLA0KKyAgICAiR2RpcENyZWF0ZUJpdG1hcEZyb21TY2FuMCIsDQorICAgICJHZGlwU2V0SW1hZ2VQYWxldHRlIiwNCisgICAgIkdkaXBTZXRJbnRlcnBvbGF0aW9uTW9kZSIsDQorICAgICJHZGlwRHJhd0ltYWdlUG9pbnRzSSIsDQorICAgICJHZGlwQ3JlYXRlQml0bWFwRnJvbUdkaURpYiIsDQorICAgICJHZGlwbHVzU3RhcnR1cCIsDQorICAgICJHZGlwRHJhd0xpbmVJIiwNCisgICAgIkdkaXBSZXNldENsaXAiLA0KKyAgICAiR2RpcENyZWF0ZVBhdGgiLA0KKyAgICAiR2RpcEFkZFBhdGhQYXRoIiwNCisgICAgIkdkaXBTZXRQYXRoRmlsbE1vZGUiLA0KKyAgICAiR2RpcFNldENsaXBQYXRoIiwNCisgICAgIkdkaXBHZXRDbGlwIiwNCisgICAgIkdkaXBDcmVhdGVSZWdpb24iLA0KKyAgICAiR2RpcEdldENsaXBCb3VuZHNJIiwNCisgICAgIkdkaXBTZXRDbGlwUmVnaW9uIiwNCisgICAgIkdkaXBXaWRlblBhdGgiLA0KKyAgICAiR2RpcEFkZFBhdGhMaW5lIiwNCisgICAgIkdkaXBBZGRQYXRoUmVjdGFuZ2xlIiwNCisgICAgIkdkaXBEZWxldGVSZWdpb24iLA0KKyAgICAiR2RpcEdldERDIiwNCisgICAgIkdkaXBSZWxlYXNlREMiLA0KKyAgICAiR2RpcFNldFBlbkxpbmVDYXAxOTc4MTkiLA0KKyAgICAiR2RpcFNldFBlbkRhc2hPZmZzZXQiLA0KKyAgICAiR2RpcFJlc2V0UGF0aCIsDQorICAgICJHZGlwQ3JlYXRlUmVnaW9uUGF0aCIsDQorICAgICJHZGlwQ3JlYXRlRm9udCIsDQorICAgICJHZGlwR2V0Rm9udFNpemUiLA0KKyAgICAiR2RpcENyZWF0ZUZvbnRGYW1pbHlGcm9tTmFtZSIsDQorICAgICJHZGlwU2V0VGV4dFJlbmRlcmluZ0hpbnQiLA0KKyAgICAiR2RpcERyYXdEcml2ZXJTdHJpbmciLA0KKyAgICAiR2RpcENyZWF0ZU1hdHJpeDIiLA0KKyAgICAiR2RpcERlbGV0ZU1hdHJpeCIsDQorICAgICJHZGlwU2V0V29ybGRUcmFuc2Zvcm0iLA0KKyAgICAiR2RpcFJlc2V0V29ybGRUcmFuc2Zvcm0iLA0KKyAgICAiR2RpcERlbGV0ZUZvbnRGYW1pbHkiLA0KKyAgICAiR2RpcERlbGV0ZUZvbnQiLA0KKyAgICAiR2RpcE5ld1ByaXZhdGVGb250Q29sbGVjdGlvbiIsDQorICAgICJHZGlwRGVsZXRlUHJpdmF0ZUZvbnRDb2xsZWN0aW9uIiwNCisgICAgIkdkaXBQcml2YXRlQWRkTWVtb3J5Rm9udCIsDQorICAgICJHZGlwR2V0Rm9udENvbGxlY3Rpb25GYW1pbHlMaXN0IiwNCisgICAgIkdkaXBHZXRGb250Q29sbGVjdGlvbkZhbWlseUNvdW50IiwNCisgICAgIkdkaXBTZXRUZXh0Q29udHJhc3QiLA0KKyAgICAiR2RpcFNldFBpeGVsT2Zmc2V0TW9kZSIsDQorICAgICJHZGlwR2V0SW1hZ2VHcmFwaGljc0NvbnRleHQiLA0KKyAgICAiR2RpcERyYXdJbWFnZUkiLA0KKyAgICAiR2RpcERyYXdJbWFnZVJlY3RJIiwNCisgICAgIkdkaXBEcmF3U3RyaW5nIiwNCisgICAgIkdkaXBTZXRQZW5UcmFuc2Zvcm0iLA0KK307DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcENyZWF0ZVBhdGgyKShHRElQQ09OU1QgR3BQb2ludEYqLCBHRElQQ09OU1QgQllURSosIElOVCwgR3BGaWxsTW9kZSwgR3BQYXRoICoqcGF0aCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFNldFBlbkRhc2hTdHlsZSkoR3BQZW4gKnBlbiwgR3BEYXNoU3R5bGUgZGFzaHN0eWxlKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwU2V0UGVuRGFzaEFycmF5KShHcFBlbiAqcGVuLCBHRElQQ09OU1QgUkVBTCAqZGFzaCwgSU5UIGNvdW50KTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwU2V0UGVuRGFzaENhcDE5NzgxOSkoR3BQZW4gKnBlbiwgR3BEYXNoQ2FwIGRhc2hDYXApOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBTZXRQZW5MaW5lSm9pbikoR3BQZW4gKnBlbiwgR3BMaW5lSm9pbiBsaW5lSm9pbik7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFNldFBlbldpZHRoKShHcFBlbiAqcGVuLCBSRUFMIHdpZHRoKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwQ3JlYXRlRnJvbUhEQykoSERDIGhkYywgR3BHcmFwaGljcyAqKmdyYXBoaWNzKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwU2V0UGFnZVVuaXQpKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFVuaXQgdW5pdCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFNldFNtb290aGluZ01vZGUpKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBDcmVhdGVTb2xpZEZpbGwpKEFSR0IgY29sb3IsIEdwU29saWRGaWxsICoqYnJ1c2gpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBGaWxsUGF0aCkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwQnJ1c2ggKmJydXNoLCBHcFBhdGggKnBhdGgpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBEZWxldGVCcnVzaCkoR3BCcnVzaCAqYnJ1c2gpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBDcmVhdGVQZW4xKShBUkdCIGNvbG9yLCBSRUFMIHdpZHRoLCBHcFVuaXQgdW5pdCwgR3BQZW4gKipwZW4pOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBTZXRQZW5NaXRlckxpbWl0KShHcFBlbiAqcGVuLCBSRUFMIG1pdGVyTGltaXQpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBEcmF3UGF0aCkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIEdwUGF0aCAqcGF0aCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcERlbGV0ZVBlbikoR3BQZW4gKnBlbik7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcERlbGV0ZVBhdGgpKEdwUGF0aCogcGF0aCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcERlbGV0ZUdyYXBoaWNzKShHcEdyYXBoaWNzICpncmFwaGljcyk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcENyZWF0ZUJpdG1hcEZyb21GaWxlSUNNKShHRElQQ09OU1QgV0NIQVIqIGZpbGVuYW1lLCBHcEJpdG1hcCAqKmJpdG1hcCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcENyZWF0ZUJpdG1hcEZyb21TdHJlYW1JQ00pKElTdHJlYW0qIHN0cmVhbSwgR3BCaXRtYXAgKipiaXRtYXApOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBHZXRJbWFnZVdpZHRoKShHcEltYWdlICppbWFnZSwgVUlOVCAqd2lkdGgpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBHZXRJbWFnZUhlaWdodCkoR3BJbWFnZSAqaW1hZ2UsIFVJTlQgKmhlaWdodCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcEdldEltYWdlUGl4ZWxGb3JtYXQpKEdwSW1hZ2UgKmltYWdlLCBQaXhlbEZvcm1hdCAqZm9ybWF0KTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwQml0bWFwTG9ja0JpdHMpKEdwQml0bWFwKiBiaXRtYXAsIEdESVBDT05TVCBHcFJlY3QqIHJlY3QsIFVJTlQgZmxhZ3MsIFBpeGVsRm9ybWF0IGZvcm1hdCwgQml0bWFwRGF0YSogbG9ja2VkQml0bWFwRGF0YSk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcEdldEltYWdlUGFsZXR0ZSkoR3BJbWFnZSAqaW1hZ2UsIENvbG9yUGFsZXR0ZSAqcGFsZXR0ZSwgSU5UIHNpemUpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBHZXRJbWFnZVBhbGV0dGVTaXplKShHcEltYWdlICppbWFnZSwgSU5UICpzaXplKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwQml0bWFwVW5sb2NrQml0cykoR3BCaXRtYXAqIGJpdG1hcCwgQml0bWFwRGF0YSogbG9ja2VkQml0bWFwRGF0YSk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcERpc3Bvc2VJbWFnZSkoR3BJbWFnZSAqaW1hZ2UpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBGaWxsUmVjdGFuZ2xlKShHcEdyYXBoaWNzICpncmFwaGljcywgR3BCcnVzaCAqYnJ1c2gsIFJFQUwgeCwgUkVBTCB5LCBSRUFMIHdpZHRoLCBSRUFMIGhlaWdodCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcENyZWF0ZUJpdG1hcEZyb21TY2FuMCkoSU5UIHdpZHRoLCBJTlQgaGVpZ2h0LCBJTlQgc3RyaWRlLCBQaXhlbEZvcm1hdCBmb3JtYXQsIEJZVEUqIHNjYW4wLCBHcEJpdG1hcCoqIGJpdG1hcCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFNldEltYWdlUGFsZXR0ZSkoR3BJbWFnZSAqaW1hZ2UsIEdESVBDT05TVCBDb2xvclBhbGV0dGUgKnBhbGV0dGUpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBTZXRJbnRlcnBvbGF0aW9uTW9kZSkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEludGVycG9sYXRpb25Nb2RlIGludGVycG9sYXRpb25Nb2RlKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwRHJhd0ltYWdlUG9pbnRzSSkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwSW1hZ2UgKmltYWdlLCBHRElQQ09OU1QgR3BQb2ludCAqZHN0cG9pbnRzLCBJTlQgY291bnQpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBDcmVhdGVCaXRtYXBGcm9tR2RpRGliKShHRElQQ09OU1QgQklUTUFQSU5GTyogZ2RpQml0bWFwSW5mbywgVk9JRCogZ2RpQml0bWFwRGF0YSwgR3BCaXRtYXAqKiBiaXRtYXApOw0KK3R5cGVkZWYgU3RhdHVzIChXSU5BUEkgKkZ1bmNUeXBlX0dkaXBsdXNTdGFydHVwKShPVVQgRlhfVUlOVFBUUiAqdG9rZW4sIGNvbnN0IEdkaXBsdXNTdGFydHVwSW5wdXQgKmlucHV0LCBPVVQgR2RpcGx1c1N0YXJ0dXBPdXRwdXQgKm91dHB1dCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcERyYXdMaW5lSSkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUGVuICpwZW4sIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5Mik7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFJlc2V0Q2xpcCkoR3BHcmFwaGljcyAqZ3JhcGhpY3MpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBDcmVhdGVQYXRoKShHcEZpbGxNb2RlIGJydXNoTW9kZSwgR3BQYXRoICoqcGF0aCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcEFkZFBhdGhQYXRoKShHcFBhdGggKnBhdGgsIEdESVBDT05TVCBHcFBhdGgqIGFkZGluZ1BhdGgsIEJPT0wgY29ubmVjdCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFNldFBhdGhGaWxsTW9kZSkoR3BQYXRoICpwYXRoLCBHcEZpbGxNb2RlIGZpbGxtb2RlKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwU2V0Q2xpcFBhdGgpKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFBhdGggKnBhdGgsIENvbWJpbmVNb2RlIGNvbWJpbmVNb2RlKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwR2V0Q2xpcCkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwUmVnaW9uICpyZWdpb24pOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBDcmVhdGVSZWdpb24pKEdwUmVnaW9uICoqcmVnaW9uKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwR2V0Q2xpcEJvdW5kc0kpKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcFJlY3QgKnJlY3QpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBTZXRDbGlwUmVnaW9uKShHcEdyYXBoaWNzICpncmFwaGljcywgR3BSZWdpb24gKnJlZ2lvbiwgQ29tYmluZU1vZGUgY29tYmluZU1vZGUpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBXaWRlblBhdGgpKEdwUGF0aCAqbmF0aXZlUGF0aCwgR3BQZW4gKnBlbiwgR3BNYXRyaXggKm1hdHJpeCwgUkVBTCBmbGF0bmVzcyk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcEFkZFBhdGhMaW5lKShHcFBhdGggKnBhdGgsIFJFQUwgeDEsIFJFQUwgeTEsIFJFQUwgeDIsIFJFQUwgeTIpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBBZGRQYXRoUmVjdGFuZ2xlKShHcFBhdGggKnBhdGgsIFJFQUwgeCwgUkVBTCB5LCBSRUFMIHdpZHRoLCBSRUFMIGhlaWdodCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcERlbGV0ZVJlZ2lvbikoR3BSZWdpb24gKnJlZ2lvbik7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcEdldERDKShHcEdyYXBoaWNzKiBncmFwaGljcywgSERDICogaGRjKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwUmVsZWFzZURDKShHcEdyYXBoaWNzKiBncmFwaGljcywgSERDIGhkYyk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFNldFBlbkxpbmVDYXAxOTc4MTkpKEdwUGVuICpwZW4sIEdwTGluZUNhcCBzdGFydENhcCwgR3BMaW5lQ2FwIGVuZENhcCwgR3BEYXNoQ2FwIGRhc2hDYXApOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBTZXRQZW5EYXNoT2Zmc2V0KShHcFBlbiAqcGVuLCBSRUFMIG9mZnNldCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFJlc2V0UGF0aCkoR3BQYXRoICpwYXRoKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwQ3JlYXRlUmVnaW9uUGF0aCkoR3BQYXRoICpwYXRoLCBHcFJlZ2lvbiAqKnJlZ2lvbik7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcENyZWF0ZUZvbnQpKEdESVBDT05TVCBHcEZvbnRGYW1pbHkgKmZvbnRGYW1pbHksIFJFQUwgZW1TaXplLCBJTlQgc3R5bGUsIFVuaXQgdW5pdCwgR3BGb250ICoqZm9udCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcEdldEZvbnRTaXplKShHcEZvbnQgKmZvbnQsIFJFQUwgKnNpemUpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBDcmVhdGVGb250RmFtaWx5RnJvbU5hbWUpKEdESVBDT05TVCBXQ0hBUiAqbmFtZSwgR3BGb250Q29sbGVjdGlvbiAqZm9udENvbGxlY3Rpb24sIEdwRm9udEZhbWlseSAqKkZvbnRGYW1pbHkpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBTZXRUZXh0UmVuZGVyaW5nSGludCkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIFRleHRSZW5kZXJpbmdIaW50IG1vZGUpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBEcmF3RHJpdmVyU3RyaW5nKShHcEdyYXBoaWNzICpncmFwaGljcywgR0RJUENPTlNUIFVJTlQxNiAqdGV4dCwgSU5UIGxlbmd0aCwgR0RJUENPTlNUIEdwRm9udCAqZm9udCwgR0RJUENPTlNUIEdwQnJ1c2ggKmJydXNoLCBHRElQQ09OU1QgUG9pbnRGICpwb3NpdGlvbnMsIElOVCBmbGFncywgR0RJUENPTlNUIEdwTWF0cml4ICptYXRyaXgpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBDcmVhdGVNYXRyaXgyKShSRUFMIG0xMSwgUkVBTCBtMTIsIFJFQUwgbTIxLCBSRUFMIG0yMiwgUkVBTCBkeCwgUkVBTCBkeSwgR3BNYXRyaXggKiptYXRyaXgpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBEZWxldGVNYXRyaXgpKEdwTWF0cml4ICptYXRyaXgpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBTZXRXb3JsZFRyYW5zZm9ybSkoR3BHcmFwaGljcyAqZ3JhcGhpY3MsIEdwTWF0cml4ICptYXRyaXgpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBSZXNldFdvcmxkVHJhbnNmb3JtKShHcEdyYXBoaWNzICpncmFwaGljcyk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcERlbGV0ZUZvbnRGYW1pbHkpKEdwRm9udEZhbWlseSAqRm9udEZhbWlseSk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcERlbGV0ZUZvbnQpKEdwRm9udCogZm9udCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcE5ld1ByaXZhdGVGb250Q29sbGVjdGlvbikoR3BGb250Q29sbGVjdGlvbioqIGZvbnRDb2xsZWN0aW9uKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwRGVsZXRlUHJpdmF0ZUZvbnRDb2xsZWN0aW9uKShHcEZvbnRDb2xsZWN0aW9uKiogZm9udENvbGxlY3Rpb24pOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBQcml2YXRlQWRkTWVtb3J5Rm9udCkoR3BGb250Q29sbGVjdGlvbiogZm9udENvbGxlY3Rpb24sIEdESVBDT05TVCB2b2lkKiBtZW1vcnksIElOVCBsZW5ndGgpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBHZXRGb250Q29sbGVjdGlvbkZhbWlseUxpc3QpKEdwRm9udENvbGxlY3Rpb24qIGZvbnRDb2xsZWN0aW9uLCBJTlQgbnVtU291Z2h0LCBHcEZvbnRGYW1pbHkqIGdwZmFtaWxpZXNbXSwgSU5UKiBudW1Gb3VuZCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcEdldEZvbnRDb2xsZWN0aW9uRmFtaWx5Q291bnQpKEdwRm9udENvbGxlY3Rpb24qIGZvbnRDb2xsZWN0aW9uLCBJTlQqIG51bUZvdW5kKTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwU2V0VGV4dENvbnRyYXN0KShHcEdyYXBoaWNzICpncmFwaGljcywgVUlOVCBjb250cmFzdCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFNldFBpeGVsT2Zmc2V0TW9kZSkoR3BHcmFwaGljcyogZ3JhcGhpY3MsIFBpeGVsT2Zmc2V0TW9kZSBwaXhlbE9mZnNldE1vZGUpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBHZXRJbWFnZUdyYXBoaWNzQ29udGV4dCkoR3BJbWFnZSAqaW1hZ2UsIEdwR3JhcGhpY3MgKipncmFwaGljcyk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcERyYXdJbWFnZUkpKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEltYWdlICppbWFnZSwgSU5UIHgsIElOVCB5KTsNCit0eXBlZGVmIEdwU3RhdHVzIChXSU5HRElQQVBJICpGdW5jVHlwZV9HZGlwRHJhd0ltYWdlUmVjdEkpKEdwR3JhcGhpY3MgKmdyYXBoaWNzLCBHcEltYWdlICppbWFnZSwgSU5UIHgsIElOVCB5LCBJTlQgd2lkdGgsIElOVCBoZWlnaHQpOw0KK3R5cGVkZWYgR3BTdGF0dXMgKFdJTkdESVBBUEkgKkZ1bmNUeXBlX0dkaXBEcmF3U3RyaW5nKShHcEdyYXBoaWNzICpncmFwaGljcywgR0RJUENPTlNUIFdDSEFSICpzdHJpbmcsIElOVCBsZW5ndGgsIEdESVBDT05TVCBHcEZvbnQgKmZvbnQsIEdESVBDT05TVCBSZWN0RiAqbGF5b3V0UmVjdCwgR0RJUENPTlNUIEdwU3RyaW5nRm9ybWF0ICpzdHJpbmdGb3JtYXQsIEdESVBDT05TVCBHcEJydXNoICpicnVzaCk7DQordHlwZWRlZiBHcFN0YXR1cyAoV0lOR0RJUEFQSSAqRnVuY1R5cGVfR2RpcFNldFBlblRyYW5zZm9ybSkoR3BQZW4gKnBlbiwgR3BNYXRyaXggKm1hdHJpeCk7DQorI2RlZmluZSBDYWxsRnVuYyhmdW5jbmFtZSkgKChGdW5jVHlwZV8jI2Z1bmNuYW1lKUdkaXBsdXNFeHQubV9GdW5jdGlvbnNbRnVuY0lkXyMjZnVuY25hbWVdKQ0KK3R5cGVkZWYgSEFORExFICAgKF9fc3RkY2FsbCAqRnVuY1R5cGVfR2RpQWRkRm9udE1lbVJlc291cmNlRXgpKFBWT0lEIHBiRm9udCwgRFdPUkQgY2JGb250LCBQVk9JRCBwZHYsIERXT1JEICpwY0ZvbnRzKTsNCit0eXBlZGVmIEJPT0wgICAgIChfX3N0ZGNhbGwgKkZ1bmNUeXBlX0dkaVJlbW92ZUZvbnRNZW1SZXNvdXJjZUV4KShIQU5ETEUgaGFuZGxlKTsNCit2b2lkKiBDR2RpcGx1c0V4dDo6R2RpQWRkRm9udE1lbVJlc291cmNlRXgodm9pZCAqcEZvbnRkYXRhLCBGWF9EV09SRCBzaXplLCB2b2lkKiBwZHYsIEZYX0RXT1JEKiBudW1fZmFjZSkNCit7DQorICAgIGlmIChtX3BHZGlBZGRGb250TWVtUmVzb3VyY2VFeCkgew0KKyAgICAgICAgcmV0dXJuICgoRnVuY1R5cGVfR2RpQWRkRm9udE1lbVJlc291cmNlRXgpbV9wR2RpQWRkRm9udE1lbVJlc291cmNlRXgpKChQVk9JRClwRm9udGRhdGEsIChEV09SRClzaXplLCAoUFZPSUQpcGR2LCAoRFdPUkQqKW51bV9mYWNlKTsNCisgICAgfQ0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorRlhfQk9PTCBDR2RpcGx1c0V4dDo6R2RpUmVtb3ZlRm9udE1lbVJlc291cmNlRXgodm9pZCogaGFuZGxlKQ0KK3sNCisgICAgaWYgKG1fcEdkaVJlbW92ZUZvbnRNZW1SZXNvdXJzZUV4KSB7DQorICAgICAgICByZXR1cm4gKChGdW5jVHlwZV9HZGlSZW1vdmVGb250TWVtUmVzb3VyY2VFeCltX3BHZGlSZW1vdmVGb250TWVtUmVzb3Vyc2VFeCkoKEhBTkRMRSloYW5kbGUpOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorc3RhdGljIEdwQnJ1c2gqIF9HZGlwQ3JlYXRlQnJ1c2goRFdPUkQgYXJnYikNCit7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIEdwU29saWRGaWxsKiBzb2xpZEJydXNoID0gTlVMTDsNCisgICAgQ2FsbEZ1bmMoR2RpcENyZWF0ZVNvbGlkRmlsbCkoKEFSR0IpYXJnYiwgJnNvbGlkQnJ1c2gpOw0KKyAgICByZXR1cm4gc29saWRCcnVzaDsNCit9DQorc3RhdGljIENGWF9ESUJpdG1hcCogX1N0cmV0Y2hNb25vVG9HcmF5KGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9ESUJpdG1hcCogcFNvdXJjZSwgRlhfUkVDVCogcENsaXBSZWN0KQ0KK3sNCisgICAgRlhfQk9PTCBiRmxpcFggPSBkZXN0X3dpZHRoIDwgMDsNCisgICAgaWYgKGJGbGlwWCkgew0KKyAgICAgICAgZGVzdF93aWR0aCA9IC1kZXN0X3dpZHRoOw0KKyAgICB9DQorICAgIEZYX0JPT0wgYkZsaXBZID0gZGVzdF9oZWlnaHQgPCAwOw0KKyAgICBpZiAoYkZsaXBZKSB7DQorICAgICAgICBkZXN0X2hlaWdodCA9IC1kZXN0X2hlaWdodDsNCisgICAgfQ0KKyAgICBpbnQgcmVzdWx0X3dpZHRoID0gcENsaXBSZWN0LT5XaWR0aCgpOw0KKyAgICBpbnQgcmVzdWx0X2hlaWdodCA9IHBDbGlwUmVjdC0+SGVpZ2h0KCk7DQorICAgIGludCByZXN1bHRfcGl0Y2ggPSAocmVzdWx0X3dpZHRoICsgMykgLyA0ICogNDsNCisgICAgQ0ZYX0RJQml0bWFwKiBwU3RyZXRjaGVkID0gRlhfTkVXIENGWF9ESUJpdG1hcDsNCisgICAgaWYgKCFwU3RyZXRjaGVkKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoIXBTdHJldGNoZWQtPkNyZWF0ZShyZXN1bHRfd2lkdGgsIHJlc3VsdF9oZWlnaHQsIEZYRElCXzhicHBSZ2IpKSB7DQorICAgICAgICBkZWxldGUgcFN0cmV0Y2hlZDsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIExQQllURSBkZXN0X2J1ZiA9IHBTdHJldGNoZWQtPkdldEJ1ZmZlcigpOw0KKyAgICBpbnQgc3JjX3dpZHRoID0gcFNvdXJjZS0+R2V0V2lkdGgoKTsNCisgICAgaW50IHNyY19oZWlnaHQgPSBwU291cmNlLT5HZXRIZWlnaHQoKTsNCisgICAgaW50IHNyY19jb3VudCA9IHNyY193aWR0aCAqIHNyY19oZWlnaHQ7DQorICAgIGludCBkZXN0X2NvdW50ID0gZGVzdF93aWR0aCAqIGRlc3RfaGVpZ2h0Ow0KKyAgICBpbnQgcmF0aW8gPSAyNTUgKiBkZXN0X2NvdW50IC8gc3JjX2NvdW50Ow0KKyAgICBpbnQgeV91bml0ID0gc3JjX2hlaWdodCAvIGRlc3RfaGVpZ2h0Ow0KKyAgICBpbnQgeF91bml0ID0gc3JjX3dpZHRoIC8gZGVzdF93aWR0aDsNCisgICAgaW50IGFyZWFfdW5pdCA9IHlfdW5pdCAqIHhfdW5pdDsNCisgICAgTFBCWVRFIHNyY19idWYgPSBwU291cmNlLT5HZXRCdWZmZXIoKTsNCisgICAgaW50IHNyY19waXRjaCA9IHBTb3VyY2UtPkdldFBpdGNoKCk7DQorICAgIGZvciAoaW50IGRlc3RfeSA9IDA7IGRlc3RfeSA8IHJlc3VsdF9oZWlnaHQ7IGRlc3RfeSArKykgew0KKyAgICAgICAgTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgZGVzdF95ICogcmVzdWx0X3BpdGNoOw0KKyAgICAgICAgaW50IHNyY195X3N0YXJ0ID0gYkZsaXBZID8gKGRlc3RfaGVpZ2h0IC0gMSAtIGRlc3RfeSAtIHBDbGlwUmVjdC0+dG9wKSA6IChkZXN0X3kgKyBwQ2xpcFJlY3QtPnRvcCk7DQorICAgICAgICBzcmNfeV9zdGFydCA9IHNyY195X3N0YXJ0ICogc3JjX2hlaWdodCAvIGRlc3RfaGVpZ2h0Ow0KKyAgICAgICAgTFBCWVRFIHNyY19zY2FuID0gc3JjX2J1ZiArIHNyY195X3N0YXJ0ICogc3JjX3BpdGNoOw0KKyAgICAgICAgZm9yIChpbnQgZGVzdF94ID0gMDsgZGVzdF94IDwgcmVzdWx0X3dpZHRoOyBkZXN0X3ggKyspIHsNCisgICAgICAgICAgICBpbnQgc3VtID0gMDsNCisgICAgICAgICAgICBpbnQgc3JjX3hfc3RhcnQgPSBiRmxpcFggPyAoZGVzdF93aWR0aCAtIDEgLSBkZXN0X3ggLSBwQ2xpcFJlY3QtPmxlZnQpIDogKGRlc3RfeCArIHBDbGlwUmVjdC0+bGVmdCk7DQorICAgICAgICAgICAgc3JjX3hfc3RhcnQgPSBzcmNfeF9zdGFydCAqIHNyY193aWR0aCAvIGRlc3Rfd2lkdGg7DQorICAgICAgICAgICAgaW50IHNyY194X2VuZCA9IHNyY194X3N0YXJ0ICsgeF91bml0Ow0KKyAgICAgICAgICAgIExQQllURSBzcmNfbGluZSA9IHNyY19zY2FuOw0KKyAgICAgICAgICAgIGZvciAoaW50IHNyY195ID0gMDsgc3JjX3kgPCB5X3VuaXQ7IHNyY195ICsrKSB7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IHNyY194ID0gc3JjX3hfc3RhcnQ7IHNyY194IDwgc3JjX3hfZW5kOyBzcmNfeCArKykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoc3JjX2xpbmVbc3JjX3ggLyA4XSAmICgxIDw8ICg3IC0gc3JjX3ggJSA4KSkpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3VtICs9IDI1NTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBzcmNfbGluZSArPSBzcmNfcGl0Y2g7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGRlc3Rfc2NhbltkZXN0X3hdID0gMjU1IC0gc3VtIC8gYXJlYV91bml0Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBwU3RyZXRjaGVkOw0KK30NCitzdGF0aWMgdm9pZCBPdXRwdXRJbWFnZU1hc2soR3BHcmFwaGljcyogcEdyYXBoaWNzLCBCT09MIGJNb25vRGV2aWNlLCBjb25zdCBDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgRlhfQVJHQiBhcmdiLCBjb25zdCBGWF9SRUNUKiBwQ2xpcFJlY3QpDQorew0KKyAgICBBU1NFUlQocEJpdG1hcC0+R2V0QlBQKCkgPT0gMSk7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIGludCBzcmNfd2lkdGggPSBwQml0bWFwLT5HZXRXaWR0aCgpLCBzcmNfaGVpZ2h0ID0gcEJpdG1hcC0+R2V0SGVpZ2h0KCk7DQorICAgIGludCBzcmNfcGl0Y2ggPSBwQml0bWFwLT5HZXRQaXRjaCgpOw0KKyAgICBGWF9MUEJZVEUgc2NhbjAgPSBwQml0bWFwLT5HZXRCdWZmZXIoKTsNCisgICAgaWYgKHNyY193aWR0aCA9PSAxICYmIHNyY19oZWlnaHQgPT0gMSkgew0KKyAgICAgICAgaWYgKChzY2FuMFswXSAmIDB4ODApID09IDApIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBHcFNvbGlkRmlsbCogc29saWRCcnVzaDsNCisgICAgICAgIENhbGxGdW5jKEdkaXBDcmVhdGVTb2xpZEZpbGwpKChBUkdCKWFyZ2IsICZzb2xpZEJydXNoKTsNCisgICAgICAgIGlmIChkZXN0X3dpZHRoIDwgMCkgew0KKyAgICAgICAgICAgIGRlc3Rfd2lkdGggPSAtZGVzdF93aWR0aDsNCisgICAgICAgICAgICBkZXN0X2xlZnQgLT0gZGVzdF93aWR0aDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChkZXN0X2hlaWdodCA8IDApIHsNCisgICAgICAgICAgICBkZXN0X2hlaWdodCA9IC1kZXN0X2hlaWdodDsNCisgICAgICAgICAgICBkZXN0X3RvcCAtPSBkZXN0X2hlaWdodDsNCisgICAgICAgIH0NCisgICAgICAgIENhbGxGdW5jKEdkaXBGaWxsUmVjdGFuZ2xlKShwR3JhcGhpY3MsIHNvbGlkQnJ1c2gsIChmbG9hdClkZXN0X2xlZnQsIChmbG9hdClkZXN0X3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpZGVzdF93aWR0aCwgKGZsb2F0KWRlc3RfaGVpZ2h0KTsNCisgICAgICAgIENhbGxGdW5jKEdkaXBEZWxldGVCcnVzaCkoc29saWRCcnVzaCk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaWYgKCFiTW9ub0RldmljZSAmJiBhYnMoZGVzdF93aWR0aCkgPCBzcmNfd2lkdGggJiYgYWJzKGRlc3RfaGVpZ2h0KSA8IHNyY19oZWlnaHQpIHsNCisgICAgICAgIEZYX1JFQ1QgaW1hZ2VfcmVjdChkZXN0X2xlZnQsIGRlc3RfdG9wLCBkZXN0X2xlZnQgKyBkZXN0X3dpZHRoLCBkZXN0X3RvcCArIGRlc3RfaGVpZ2h0KTsNCisgICAgICAgIGltYWdlX3JlY3QuTm9ybWFsaXplKCk7DQorICAgICAgICBGWF9SRUNUIGltYWdlX2NsaXAgPSBpbWFnZV9yZWN0Ow0KKyAgICAgICAgaW1hZ2VfY2xpcC5JbnRlcnNlY3QoKnBDbGlwUmVjdCk7DQorICAgICAgICBpZiAoaW1hZ2VfY2xpcC5Jc0VtcHR5KCkpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBpbWFnZV9jbGlwLk9mZnNldCgtaW1hZ2VfcmVjdC5sZWZ0LCAtaW1hZ2VfcmVjdC50b3ApOw0KKyAgICAgICAgQ0ZYX0RJQml0bWFwKiBwU3RyZXRjaGVkID0gTlVMTDsNCisgICAgICAgIGlmIChzcmNfd2lkdGggKiBzcmNfaGVpZ2h0ID4gMTAwMDApIHsNCisgICAgICAgICAgICBwU3RyZXRjaGVkID0gX1N0cmV0Y2hNb25vVG9HcmF5KGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBwQml0bWFwLCAmaW1hZ2VfY2xpcCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBTdHJldGNoZWQgPSBwQml0bWFwLT5TdHJldGNoVG8oZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQsIEZBTFNFLCAmaW1hZ2VfY2xpcCk7DQorICAgICAgICB9DQorICAgICAgICBHcEJpdG1hcCogYml0bWFwOw0KKyAgICAgICAgQ2FsbEZ1bmMoR2RpcENyZWF0ZUJpdG1hcEZyb21TY2FuMCkoaW1hZ2VfY2xpcC5XaWR0aCgpLCBpbWFnZV9jbGlwLkhlaWdodCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltYWdlX2NsaXAuV2lkdGgoKSArIDMpIC8gNCAqIDQsIFBpeGVsRm9ybWF0OGJwcEluZGV4ZWQsIHBTdHJldGNoZWQtPkdldEJ1ZmZlcigpLCAmYml0bWFwKTsNCisgICAgICAgIGludCBhLCByLCBnLCBiOw0KKyAgICAgICAgQXJnYkRlY29kZShhcmdiLCBhLCByLCBnLCBiKTsNCisgICAgICAgIFVJTlQgcGFsWzI1OF07DQorICAgICAgICBwYWxbMF0gPSAwOw0KKyAgICAgICAgcGFsWzFdID0gMjU2Ow0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkgKyspIHsNCisgICAgICAgICAgICBwYWxbaSArIDJdID0gQXJnYkVuY29kZShpICogYSAvIDI1NSwgciwgZywgYik7DQorICAgICAgICB9DQorICAgICAgICBDYWxsRnVuYyhHZGlwU2V0SW1hZ2VQYWxldHRlKShiaXRtYXAsIChDb2xvclBhbGV0dGUqKXBhbCk7DQorICAgICAgICBDYWxsRnVuYyhHZGlwRHJhd0ltYWdlSSkocEdyYXBoaWNzLCBiaXRtYXAsIGltYWdlX3JlY3QubGVmdCArIGltYWdlX2NsaXAubGVmdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZV9yZWN0LnRvcCArIGltYWdlX2NsaXAudG9wKTsNCisgICAgICAgIENhbGxGdW5jKEdkaXBEaXNwb3NlSW1hZ2UpKGJpdG1hcCk7DQorICAgICAgICBkZWxldGUgcFN0cmV0Y2hlZDsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICBHcEJpdG1hcCogYml0bWFwOw0KKyAgICBDYWxsRnVuYyhHZGlwQ3JlYXRlQml0bWFwRnJvbVNjYW4wKShzcmNfd2lkdGgsIHNyY19oZWlnaHQsIHNyY19waXRjaCwgUGl4ZWxGb3JtYXQxYnBwSW5kZXhlZCwgc2NhbjAsICZiaXRtYXApOw0KKyAgICBVSU5UIHBhbGV0dGVbNF0gPSB7IFBhbGV0dGVGbGFnc0hhc0FscGhhLCAyLCAwLCBhcmdiIH07DQorICAgIENhbGxGdW5jKEdkaXBTZXRJbWFnZVBhbGV0dGUpKGJpdG1hcCwgKENvbG9yUGFsZXR0ZSopcGFsZXR0ZSk7DQorICAgIFBvaW50IGRlc3RpbmF0aW9uUG9pbnRzW10gPSB7DQorICAgICAgICBQb2ludChkZXN0X2xlZnQsIGRlc3RfdG9wKSwNCisgICAgICAgIFBvaW50KGRlc3RfbGVmdCArIGRlc3Rfd2lkdGgsIGRlc3RfdG9wKSwNCisgICAgICAgIFBvaW50KGRlc3RfbGVmdCwgZGVzdF90b3AgKyBkZXN0X2hlaWdodCkNCisgICAgfTsNCisgICAgQ2FsbEZ1bmMoR2RpcERyYXdJbWFnZVBvaW50c0kpKHBHcmFwaGljcywgYml0bWFwLCBkZXN0aW5hdGlvblBvaW50cywgMyk7DQorICAgIENhbGxGdW5jKEdkaXBEaXNwb3NlSW1hZ2UpKGJpdG1hcCk7DQorfQ0KK3N0YXRpYyB2b2lkIE91dHB1dEltYWdlKEdwR3JhcGhpY3MqIHBHcmFwaGljcywgY29uc3QgQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCwNCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQpDQorew0KKyAgICBpbnQgc3JjX3dpZHRoID0gcFNyY1JlY3QtPldpZHRoKCksIHNyY19oZWlnaHQgPSBwU3JjUmVjdC0+SGVpZ2h0KCk7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIGlmIChwQml0bWFwLT5HZXRCUFAoKSA9PSAxICYmIChwU3JjUmVjdC0+bGVmdCAlIDgpKSB7DQorICAgICAgICBGWF9SRUNUIG5ld19yZWN0KDAsIDAsIHNyY193aWR0aCwgc3JjX2hlaWdodCk7DQorICAgICAgICBDRlhfRElCaXRtYXAqIHBDbG9uZWQgPSBwQml0bWFwLT5DbG9uZShwU3JjUmVjdCk7DQorICAgICAgICBpZiAoIXBDbG9uZWQpIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBPdXRwdXRJbWFnZShwR3JhcGhpY3MsIHBDbG9uZWQsICZuZXdfcmVjdCwgZGVzdF9sZWZ0LCBkZXN0X3RvcCwgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQpOw0KKyAgICAgICAgZGVsZXRlIHBDbG9uZWQ7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgaW50IHNyY19waXRjaCA9IHBCaXRtYXAtPkdldFBpdGNoKCk7DQorICAgIEZYX0xQQllURSBzY2FuMCA9IHBCaXRtYXAtPkdldEJ1ZmZlcigpICsgcFNyY1JlY3QtPnRvcCAqIHNyY19waXRjaCArIHBCaXRtYXAtPkdldEJQUCgpICogcFNyY1JlY3QtPmxlZnQgLyA4Ow0KKyAgICBHcEJpdG1hcCogYml0bWFwID0gTlVMTDsNCisgICAgc3dpdGNoIChwQml0bWFwLT5HZXRGb3JtYXQoKSkgew0KKyAgICAgICAgY2FzZSBGWERJQl9BcmdiOg0KKyAgICAgICAgICAgIENhbGxGdW5jKEdkaXBDcmVhdGVCaXRtYXBGcm9tU2NhbjApKHNyY193aWR0aCwgc3JjX2hlaWdodCwgc3JjX3BpdGNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0MzJicHBBUkdCLCBzY2FuMCwgJmJpdG1hcCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIEZYRElCX1JnYjMyOg0KKyAgICAgICAgICAgIENhbGxGdW5jKEdkaXBDcmVhdGVCaXRtYXBGcm9tU2NhbjApKHNyY193aWR0aCwgc3JjX2hlaWdodCwgc3JjX3BpdGNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0MzJicHBSR0IsIHNjYW4wLCAmYml0bWFwKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfUmdiOg0KKyAgICAgICAgICAgIENhbGxGdW5jKEdkaXBDcmVhdGVCaXRtYXBGcm9tU2NhbjApKHNyY193aWR0aCwgc3JjX2hlaWdodCwgc3JjX3BpdGNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0MjRicHBSR0IsIHNjYW4wLCAmYml0bWFwKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRlhESUJfOGJwcFJnYjogew0KKyAgICAgICAgICAgICAgICBDYWxsRnVuYyhHZGlwQ3JlYXRlQml0bWFwRnJvbVNjYW4wKShzcmNfd2lkdGgsIHNyY19oZWlnaHQsIHNyY19waXRjaCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGl4ZWxGb3JtYXQ4YnBwSW5kZXhlZCwgc2NhbjAsICZiaXRtYXApOw0KKyAgICAgICAgICAgICAgICBVSU5UIHBhbFsyNThdOw0KKyAgICAgICAgICAgICAgICBwYWxbMF0gPSAwOw0KKyAgICAgICAgICAgICAgICBwYWxbMV0gPSAyNTY7DQorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyBpICsrKSB7DQorICAgICAgICAgICAgICAgICAgICBwYWxbaSArIDJdID0gcEJpdG1hcC0+R2V0UGFsZXR0ZUVudHJ5KGkpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIENhbGxGdW5jKEdkaXBTZXRJbWFnZVBhbGV0dGUpKGJpdG1hcCwgKENvbG9yUGFsZXR0ZSopcGFsKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBGWERJQl8xYnBwUmdiOiB7DQorICAgICAgICAgICAgICAgIENhbGxGdW5jKEdkaXBDcmVhdGVCaXRtYXBGcm9tU2NhbjApKHNyY193aWR0aCwgc3JjX2hlaWdodCwgc3JjX3BpdGNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhlbEZvcm1hdDFicHBJbmRleGVkLCBzY2FuMCwgJmJpdG1hcCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoZGVzdF9oZWlnaHQgPCAwKSB7DQorICAgICAgICBkZXN0X2hlaWdodCAtLTsNCisgICAgfQ0KKyAgICBpZiAoZGVzdF93aWR0aCA8IDApIHsNCisgICAgICAgIGRlc3Rfd2lkdGggLS07DQorICAgIH0NCisgICAgUG9pbnQgZGVzdGluYXRpb25Qb2ludHNbXSA9IHsNCisgICAgICAgIFBvaW50KGRlc3RfbGVmdCwgZGVzdF90b3ApLA0KKyAgICAgICAgUG9pbnQoZGVzdF9sZWZ0ICsgZGVzdF93aWR0aCwgZGVzdF90b3ApLA0KKyAgICAgICAgUG9pbnQoZGVzdF9sZWZ0LCBkZXN0X3RvcCArIGRlc3RfaGVpZ2h0KQ0KKyAgICB9Ow0KKyAgICBDYWxsRnVuYyhHZGlwRHJhd0ltYWdlUG9pbnRzSSkocEdyYXBoaWNzLCBiaXRtYXAsIGRlc3RpbmF0aW9uUG9pbnRzLCAzKTsNCisgICAgQ2FsbEZ1bmMoR2RpcERpc3Bvc2VJbWFnZSkoYml0bWFwKTsNCit9DQorQ0dkaXBsdXNFeHQ6OkNHZGlwbHVzRXh0KCkNCit7DQorICAgIG1faE1vZHVsZSA9IE5VTEw7DQorICAgIG1fR2RpTW9kdWxlID0gTlVMTDsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YgZ19HZGlwRnVuY05hbWVzIC8gc2l6ZW9mKExQQ1NUUik7IGkgKyspIHsNCisgICAgICAgIG1fRnVuY3Rpb25zW2ldID0gTlVMTDsNCisgICAgfQ0KKyAgICBtX3BHZGlBZGRGb250TWVtUmVzb3VyY2VFeCA9IE5VTEw7DQorICAgIG1fcEdkaVJlbW92ZUZvbnRNZW1SZXNvdXJzZUV4ID0gTlVMTDsNCit9DQordm9pZCBDR2RpcGx1c0V4dDo6TG9hZCgpDQorew0KKyAgICBDRlhfQnl0ZVN0cmluZyBzdHJQbHVzUGF0aCA9ICIiOw0KKyAgICBGWF9DSEFSIGJ1ZltNQVhfUEFUSF07DQorICAgIEdldFN5c3RlbURpcmVjdG9yeUEoYnVmLCBNQVhfUEFUSCk7DQorICAgIHN0clBsdXNQYXRoICs9IGJ1ZjsNCisgICAgc3RyUGx1c1BhdGggKz0gIlxcIjsNCisgICAgc3RyUGx1c1BhdGggKz0gIkdESVBMVVMuRExMIjsNCisgICAgbV9oTW9kdWxlID0gTG9hZExpYnJhcnlBKHN0clBsdXNQYXRoKTsNCisgICAgaWYgKG1faE1vZHVsZSA9PSBOVUxMKSB7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YgZ19HZGlwRnVuY05hbWVzIC8gc2l6ZW9mKExQQ1NUUik7IGkgKyspIHsNCisgICAgICAgIG1fRnVuY3Rpb25zW2ldID0gR2V0UHJvY0FkZHJlc3MobV9oTW9kdWxlLCBnX0dkaXBGdW5jTmFtZXNbaV0pOw0KKyAgICAgICAgaWYgKG1fRnVuY3Rpb25zW2ldID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX2hNb2R1bGUgPSBOVUxMOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBGWF9VSU5UUFRSIGdkaXBsdXNUb2tlbjsNCisgICAgR2RpcGx1c1N0YXJ0dXBJbnB1dCBnZGlwbHVzU3RhcnR1cElucHV0Ow0KKyAgICAoKEZ1bmNUeXBlX0dkaXBsdXNTdGFydHVwKW1fRnVuY3Rpb25zW0Z1bmNJZF9HZGlwbHVzU3RhcnR1cF0pKCZnZGlwbHVzVG9rZW4sICZnZGlwbHVzU3RhcnR1cElucHV0LCBOVUxMKTsNCisgICAgbV9HZGlNb2R1bGUgPSBMb2FkTGlicmFyeUEoIkdESTMyLkRMTCIpOw0KKyAgICBpZiAobV9HZGlNb2R1bGUgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorICAgIG1fcEdkaUFkZEZvbnRNZW1SZXNvdXJjZUV4ID0gR2V0UHJvY0FkZHJlc3MobV9HZGlNb2R1bGUsICJBZGRGb250TWVtUmVzb3VyY2VFeCIpOw0KKyAgICBtX3BHZGlSZW1vdmVGb250TWVtUmVzb3Vyc2VFeCA9IEdldFByb2NBZGRyZXNzKG1fR2RpTW9kdWxlLCAiUmVtb3ZlRm9udE1lbVJlc291cmNlRXgiKTsNCit9DQorQ0dkaXBsdXNFeHQ6On5DR2RpcGx1c0V4dCgpDQorew0KK30NCitMUFZPSUQgQ0dkaXBsdXNFeHQ6OkxvYWRNZW1Gb250KExQQllURSBwRGF0YSwgRlhfRFdPUkQgc2l6ZSkNCit7DQorICAgIEdwRm9udENvbGxlY3Rpb24qIHBDb2xsZWN0aW9uID0gTlVMTDsNCisgICAgQ0dkaXBsdXNFeHQmIEdkaXBsdXNFeHQgPSAoKENXaW4zMlBsYXRmb3JtKilDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKSktPm1fR2RpcGx1c0V4dDsNCisgICAgQ2FsbEZ1bmMoR2RpcE5ld1ByaXZhdGVGb250Q29sbGVjdGlvbikoJnBDb2xsZWN0aW9uKTsNCisgICAgR3BTdGF0dXMgc3RhdHVzID0gQ2FsbEZ1bmMoR2RpcFByaXZhdGVBZGRNZW1vcnlGb250KShwQ29sbGVjdGlvbiwgcERhdGEsIHNpemUpOw0KKyAgICBpZiAoc3RhdHVzID09IE9rKSB7DQorICAgICAgICByZXR1cm4gcENvbGxlY3Rpb247DQorICAgIH0NCisgICAgQ2FsbEZ1bmMoR2RpcERlbGV0ZVByaXZhdGVGb250Q29sbGVjdGlvbikoJnBDb2xsZWN0aW9uKTsNCisgICAgcmV0dXJuIE5VTEw7DQorfQ0KK3ZvaWQgQ0dkaXBsdXNFeHQ6OkRlbGV0ZU1lbUZvbnQoTFBWT0lEIHBDb2xsZWN0aW9uKQ0KK3sNCisgICAgQ0dkaXBsdXNFeHQmIEdkaXBsdXNFeHQgPSAoKENXaW4zMlBsYXRmb3JtKilDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKSktPm1fR2RpcGx1c0V4dDsNCisgICAgQ2FsbEZ1bmMoR2RpcERlbGV0ZVByaXZhdGVGb250Q29sbGVjdGlvbikoKEdwRm9udENvbGxlY3Rpb24qKikmcENvbGxlY3Rpb24pOw0KK30NCitGWF9CT09MIENHZGlwbHVzRXh0OjpHZGlwQ3JlYXRlQml0bWFwKENGWF9ESUJpdG1hcCogcEJpdG1hcCwgdm9pZCoqYml0bWFwKQ0KK3sNCisgICAgQ0dkaXBsdXNFeHQmIEdkaXBsdXNFeHQgPSAoKENXaW4zMlBsYXRmb3JtKilDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKSktPm1fR2RpcGx1c0V4dDsNCisgICAgUGl4ZWxGb3JtYXQgZm9ybWF0Ow0KKyAgICBzd2l0Y2ggKHBCaXRtYXAtPkdldEZvcm1hdCgpKSB7DQorICAgICAgICBjYXNlIEZYRElCX1JnYjoNCisgICAgICAgICAgICBmb3JtYXQgPSBQaXhlbEZvcm1hdDI0YnBwUkdCOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWERJQl9SZ2IzMjoNCisgICAgICAgICAgICBmb3JtYXQgPSBQaXhlbEZvcm1hdDMyYnBwUkdCOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBGWERJQl9BcmdiOg0KKyAgICAgICAgICAgIGZvcm1hdCA9IFBpeGVsRm9ybWF0MzJicHBBUkdCOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgR3BTdGF0dXMgc3RhdHVzID0gQ2FsbEZ1bmMoR2RpcENyZWF0ZUJpdG1hcEZyb21TY2FuMCkocEJpdG1hcC0+R2V0V2lkdGgoKSwgcEJpdG1hcC0+R2V0SGVpZ2h0KCksDQorICAgICAgICAgICAgICAgICAgICAgIHBCaXRtYXAtPkdldFBpdGNoKCksIGZvcm1hdCwgcEJpdG1hcC0+R2V0QnVmZmVyKCksIChHcEJpdG1hcCoqKWJpdG1hcCk7DQorICAgIGlmIChzdGF0dXMgPT0gT2spIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorRlhfQk9PTCBDR2RpcGx1c0V4dDo6R2RpcENyZWF0ZUZyb21JbWFnZSh2b2lkKiBiaXRtYXAsIHZvaWQqKiBncmFwaGljcykNCit7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIEdwU3RhdHVzIHN0YXR1cyA9IENhbGxGdW5jKEdkaXBHZXRJbWFnZUdyYXBoaWNzQ29udGV4dCkoKEdwQml0bWFwKiliaXRtYXAsIChHcEdyYXBoaWNzKiopZ3JhcGhpY3MpOw0KKyAgICBpZiAoc3RhdHVzID09IE9rKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wgQ0dkaXBsdXNFeHQ6OkdkaXBDcmVhdGVGb250RmFtaWx5RnJvbU5hbWUoRlhfTFBDV1NUUiBuYW1lLCB2b2lkKiBwRm9udENvbGxlY3Rpb24sIHZvaWQqKnBGYW1pbHkpDQorew0KKyAgICBDR2RpcGx1c0V4dCYgR2RpcGx1c0V4dCA9ICgoQ1dpbjMyUGxhdGZvcm0qKUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpKS0+bV9HZGlwbHVzRXh0Ow0KKyAgICBHcFN0YXR1cyBzdGF0dXMgPSBDYWxsRnVuYyhHZGlwQ3JlYXRlRm9udEZhbWlseUZyb21OYW1lKSgoR0RJUENPTlNUIFdDSEFSICopbmFtZSwgKEdwRm9udENvbGxlY3Rpb24qKXBGb250Q29sbGVjdGlvbiwgKEdwRm9udEZhbWlseSoqKXBGYW1pbHkpOw0KKyAgICBpZiAoc3RhdHVzID09IE9rKSB7DQorICAgICAgICByZXR1cm4gVFJVRTsNCisgICAgfQ0KKyAgICByZXR1cm4gRkFMU0U7DQorfQ0KK0ZYX0JPT0wgQ0dkaXBsdXNFeHQ6OkdkaXBDcmVhdGVGb250RnJvbUZhbWlseSh2b2lkKiBwRmFtaWx5LCBGWF9GTE9BVCBmb250X3NpemUsIGludCBmb250c3R5bGUsIGludCBmbGFnLCB2b2lkKiogcEZvbnQpDQorew0KKyAgICBDR2RpcGx1c0V4dCYgR2RpcGx1c0V4dCA9ICgoQ1dpbjMyUGxhdGZvcm0qKUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpKS0+bV9HZGlwbHVzRXh0Ow0KKyAgICBHcFN0YXR1cyBzdGF0dXMgPSBDYWxsRnVuYyhHZGlwQ3JlYXRlRm9udCkoKEdwRm9udEZhbWlseSopcEZhbWlseSwgZm9udF9zaXplLCBmb250c3R5bGUsIFVuaXQoZmxhZyksIChHcEZvbnQqKilwRm9udCk7DQorICAgIGlmIChzdGF0dXMgPT0gT2spIHsNCisgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQordm9pZCBDR2RpcGx1c0V4dDo6R2RpcEdldEZvbnRTaXplKHZvaWQgKnBGb250LCBGWF9GTE9BVCAqc2l6ZSkNCit7DQorICAgIFJFQUwgZ2V0X3NpemU7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIEdwU3RhdHVzIHN0YXR1cyA9IENhbGxGdW5jKEdkaXBHZXRGb250U2l6ZSkoKEdwRm9udCAqKXBGb250LCAoUkVBTCopJmdldF9zaXplKTsNCisgICAgaWYgKHN0YXR1cyA9PSBPaykgew0KKyAgICAgICAgKnNpemUgPSAoRlhfRkxPQVQpZ2V0X3NpemU7DQorICAgIH0gZWxzZSB7DQorICAgICAgICAqc2l6ZSA9IDA7DQorICAgIH0NCit9DQordm9pZCBDR2RpcGx1c0V4dDo6R2RpcFNldFRleHRSZW5kZXJpbmdIaW50KHZvaWQqIGdyYXBoaWNzLCBpbnQgbW9kZSkNCit7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIENhbGxGdW5jKEdkaXBTZXRUZXh0UmVuZGVyaW5nSGludCkoKEdwR3JhcGhpY3MqKWdyYXBoaWNzLCAoVGV4dFJlbmRlcmluZ0hpbnQpbW9kZSk7DQorfQ0KK3ZvaWQgQ0dkaXBsdXNFeHQ6OkdkaXBTZXRQYWdlVW5pdCh2b2lkKiBncmFwaGljcywgRlhfRFdPUkQgdW5pdCkNCit7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIENhbGxGdW5jKEdkaXBTZXRQYWdlVW5pdCkoKEdwR3JhcGhpY3MqKWdyYXBoaWNzLCAoR3BVbml0KXVuaXQpOw0KK30NCitGWF9CT09MIENHZGlwbHVzRXh0OjpHZGlwRHJhd0RyaXZlclN0cmluZyh2b2lkICpncmFwaGljcywgIHVuc2lnbmVkIHNob3J0ICp0ZXh0LCBpbnQgbGVuZ3RoLA0KKyAgICAgICAgdm9pZCAqZm9udCwgdm9pZCogYnJ1c2gsIHZvaWQgKnBvc2l0aW9ucywgaW50IGZsYWdzLCBjb25zdCB2b2lkICptYXRyaXgpDQorew0KKyAgICBDR2RpcGx1c0V4dCYgR2RpcGx1c0V4dCA9ICgoQ1dpbjMyUGxhdGZvcm0qKUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpKS0+bV9HZGlwbHVzRXh0Ow0KKyAgICBHcFN0YXR1cyBzdGF0dXMgPSBDYWxsRnVuYyhHZGlwRHJhd0RyaXZlclN0cmluZykoKEdwR3JhcGhpY3MqKWdyYXBoaWNzLCAoR0RJUENPTlNUIFVJTlQxNiAqKXRleHQsIChJTlQpbGVuZ3RoLCAoR0RJUENPTlNUIEdwRm9udCAqKWZvbnQsIChHRElQQ09OU1QgR3BCcnVzaCopYnJ1c2gsDQorICAgICAgICAgICAgICAgICAgICAgIChHRElQQ09OU1QgUG9pbnRGICopcG9zaXRpb25zLCAoSU5UKWZsYWdzLCAoR0RJUENPTlNUIEdwTWF0cml4ICopbWF0cml4KTsNCisgICAgaWYgKHN0YXR1cyA9PSBPaykgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgcmV0dXJuIEZBTFNFOw0KK30NCit2b2lkIENHZGlwbHVzRXh0OjpHZGlwQ3JlYXRlQnJ1c2goRlhfRFdPUkQgZmlsbF9hcmdiLCB2b2lkKiogcEJydXNoKQ0KK3sNCisgICAgQ0dkaXBsdXNFeHQmIEdkaXBsdXNFeHQgPSAoKENXaW4zMlBsYXRmb3JtKilDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKSktPm1fR2RpcGx1c0V4dDsNCisgICAgQ2FsbEZ1bmMoR2RpcENyZWF0ZVNvbGlkRmlsbCkoKEFSR0IpZmlsbF9hcmdiLCAoR3BTb2xpZEZpbGwqKilwQnJ1c2gpOw0KK30NCit2b2lkIENHZGlwbHVzRXh0OjpHZGlwRGVsZXRlQnJ1c2godm9pZCogcEJydXNoKQ0KK3sNCisgICAgQ0dkaXBsdXNFeHQmIEdkaXBsdXNFeHQgPSAoKENXaW4zMlBsYXRmb3JtKilDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKSktPm1fR2RpcGx1c0V4dDsNCisgICAgQ2FsbEZ1bmMoR2RpcERlbGV0ZUJydXNoKSgoR3BTb2xpZEZpbGwqKXBCcnVzaCk7DQorfQ0KK3ZvaWQqIENHZGlwbHVzRXh0OjpHZGlwQ3JlYXRlRm9udEZyb21Db2xsZWN0aW9uKHZvaWQqIHBGb250Q29sbGVjdGlvbiwgRlhfRkxPQVQgZm9udF9zaXplLCBpbnQgZm9udHN0eWxlKQ0KK3sNCisgICAgQ0dkaXBsdXNFeHQmIEdkaXBsdXNFeHQgPSAoKENXaW4zMlBsYXRmb3JtKilDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKSktPm1fR2RpcGx1c0V4dDsNCisgICAgaW50IG51bUZhbWlsaWVzID0gMDsNCisgICAgR3BTdGF0dXMgc3RhdHVzID0gQ2FsbEZ1bmMoR2RpcEdldEZvbnRDb2xsZWN0aW9uRmFtaWx5Q291bnQpKChHcEZvbnRDb2xsZWN0aW9uKilwRm9udENvbGxlY3Rpb24sICZudW1GYW1pbGllcyk7DQorICAgIGlmIChzdGF0dXMgIT0gT2spIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEdwRm9udEZhbWlseSogZmFtaWx5X2xpc3RbMV07DQorICAgIHN0YXR1cyA9IENhbGxGdW5jKEdkaXBHZXRGb250Q29sbGVjdGlvbkZhbWlseUxpc3QpKChHcEZvbnRDb2xsZWN0aW9uKilwRm9udENvbGxlY3Rpb24sIDEsIGZhbWlseV9saXN0LCAmbnVtRmFtaWxpZXMpOw0KKyAgICBpZiAoc3RhdHVzICE9IE9rKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBHcEZvbnQqIHBGb250ID0gTlVMTDsNCisgICAgc3RhdHVzID0gQ2FsbEZ1bmMoR2RpcENyZWF0ZUZvbnQpKGZhbWlseV9saXN0WzBdLCBmb250X3NpemUsIGZvbnRzdHlsZSwgVW5pdFBpeGVsLCAmcEZvbnQpOw0KKyAgICBpZiAoc3RhdHVzICE9IE9rKSB7DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICByZXR1cm4gcEZvbnQ7DQorfQ0KK3ZvaWQgQ0dkaXBsdXNFeHQ6OkdkaXBDcmVhdGVNYXRyaXgoRlhfRkxPQVQgYSwgRlhfRkxPQVQgYiwgRlhfRkxPQVQgYywgRlhfRkxPQVQgZCwgRlhfRkxPQVQgZSwgRlhfRkxPQVQgZiwgdm9pZCoqIG1hdHJpeCkNCit7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIENhbGxGdW5jKEdkaXBDcmVhdGVNYXRyaXgyKShhLCBiLCBjLCBkLCBlLCBmLCAoR3BNYXRyaXgqKiltYXRyaXgpOw0KK30NCit2b2lkIENHZGlwbHVzRXh0OjpHZGlwRGVsZXRlTWF0cml4KHZvaWQqIG1hdHJpeCkNCit7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIENhbGxGdW5jKEdkaXBEZWxldGVNYXRyaXgpKChHcE1hdHJpeCopbWF0cml4KTsNCit9DQordm9pZCBDR2RpcGx1c0V4dDo6R2RpcERlbGV0ZUZvbnRGYW1pbHkodm9pZCogcEZhbWlseSkNCit7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIENhbGxGdW5jKEdkaXBEZWxldGVGb250RmFtaWx5KSgoR3BGb250RmFtaWx5KilwRmFtaWx5KTsNCit9DQordm9pZCBDR2RpcGx1c0V4dDo6R2RpcERlbGV0ZUZvbnQodm9pZCogcEZvbnQpDQorew0KKyAgICBDR2RpcGx1c0V4dCYgR2RpcGx1c0V4dCA9ICgoQ1dpbjMyUGxhdGZvcm0qKUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpKS0+bV9HZGlwbHVzRXh0Ow0KKyAgICBDYWxsRnVuYyhHZGlwRGVsZXRlRm9udCkoKEdwRm9udCopcEZvbnQpOw0KK30NCit2b2lkIENHZGlwbHVzRXh0OjpHZGlwU2V0V29ybGRUcmFuc2Zvcm0odm9pZCogZ3JhcGhpY3MsIHZvaWQqIHBNYXRyaXgpDQorew0KKyAgICBDR2RpcGx1c0V4dCYgR2RpcGx1c0V4dCA9ICgoQ1dpbjMyUGxhdGZvcm0qKUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpKS0+bV9HZGlwbHVzRXh0Ow0KKyAgICBDYWxsRnVuYyhHZGlwU2V0V29ybGRUcmFuc2Zvcm0pKChHcEdyYXBoaWNzKilncmFwaGljcywgKEdwTWF0cml4KilwTWF0cml4KTsNCit9DQordm9pZCBDR2RpcGx1c0V4dDo6R2RpcERpc3Bvc2VJbWFnZSh2b2lkKiBiaXRtYXApDQorew0KKyAgICBDR2RpcGx1c0V4dCYgR2RpcGx1c0V4dCA9ICgoQ1dpbjMyUGxhdGZvcm0qKUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpKS0+bV9HZGlwbHVzRXh0Ow0KKyAgICBDYWxsRnVuYyhHZGlwRGlzcG9zZUltYWdlKSgoR3BCaXRtYXAqKWJpdG1hcCk7DQorfQ0KK3ZvaWQgQ0dkaXBsdXNFeHQ6OkdkaXBEZWxldGVHcmFwaGljcyh2b2lkKiBncmFwaGljcykNCit7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIENhbGxGdW5jKEdkaXBEZWxldGVHcmFwaGljcykoKEdwR3JhcGhpY3MqKWdyYXBoaWNzKTsNCit9DQorRlhfQk9PTCBDR2RpcGx1c0V4dDo6U3RyZXRjaEJpdE1hc2soSERDIGhEQywgQk9PTCBiTW9ub0RldmljZSwgY29uc3QgQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgRlhfRFdPUkQgYXJnYiwgY29uc3QgRlhfUkVDVCogcENsaXBSZWN0LCBpbnQgZmxhZ3MpDQorew0KKyAgICBBU1NFUlQocEJpdG1hcC0+R2V0QlBQKCkgPT0gMSk7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIEdwR3JhcGhpY3MqIHBHcmFwaGljcyA9IE5VTEw7DQorICAgIENhbGxGdW5jKEdkaXBDcmVhdGVGcm9tSERDKShoREMsICZwR3JhcGhpY3MpOw0KKyAgICBDYWxsRnVuYyhHZGlwU2V0UGFnZVVuaXQpKHBHcmFwaGljcywgVW5pdFBpeGVsKTsNCisgICAgaWYgKGZsYWdzICYgRlhESUJfTk9TTU9PVEgpIHsNCisgICAgICAgIENhbGxGdW5jKEdkaXBTZXRJbnRlcnBvbGF0aW9uTW9kZSkocEdyYXBoaWNzLCBJbnRlcnBvbGF0aW9uTW9kZU5lYXJlc3ROZWlnaGJvcik7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBDYWxsRnVuYyhHZGlwU2V0SW50ZXJwb2xhdGlvbk1vZGUpKHBHcmFwaGljcywgSW50ZXJwb2xhdGlvbk1vZGVIaWdoUXVhbGl0eSk7DQorICAgIH0NCisgICAgT3V0cHV0SW1hZ2VNYXNrKHBHcmFwaGljcywgYk1vbm9EZXZpY2UsIHBCaXRtYXAsIGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBhcmdiLCBwQ2xpcFJlY3QpOw0KKyAgICBDYWxsRnVuYyhHZGlwRGVsZXRlR3JhcGhpY3MpKHBHcmFwaGljcyk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MIENHZGlwbHVzRXh0OjpTdHJldGNoRElCaXRzKEhEQyBoREMsIGNvbnN0IENGWF9ESUJpdG1hcCogcEJpdG1hcCwgaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgY29uc3QgRlhfUkVDVCogcENsaXBSZWN0LCBpbnQgZmxhZ3MpDQorew0KKyAgICBHcEdyYXBoaWNzKiBwR3JhcGhpY3M7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIENhbGxGdW5jKEdkaXBDcmVhdGVGcm9tSERDKShoREMsICZwR3JhcGhpY3MpOw0KKyAgICBDYWxsRnVuYyhHZGlwU2V0UGFnZVVuaXQpKHBHcmFwaGljcywgVW5pdFBpeGVsKTsNCisgICAgaWYgKGZsYWdzICYgRlhESUJfTk9TTU9PVEgpIHsNCisgICAgICAgIENhbGxGdW5jKEdkaXBTZXRJbnRlcnBvbGF0aW9uTW9kZSkocEdyYXBoaWNzLCBJbnRlcnBvbGF0aW9uTW9kZU5lYXJlc3ROZWlnaGJvcik7DQorICAgIH0gZWxzZSBpZiAocEJpdG1hcC0+R2V0V2lkdGgoKSA+IGFicyhkZXN0X3dpZHRoKSAvIDIgfHwgcEJpdG1hcC0+R2V0SGVpZ2h0KCkgPiBhYnMoZGVzdF9oZWlnaHQpIC8gMikgew0KKyAgICAgICAgQ2FsbEZ1bmMoR2RpcFNldEludGVycG9sYXRpb25Nb2RlKShwR3JhcGhpY3MsIEludGVycG9sYXRpb25Nb2RlSGlnaFF1YWxpdHkpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQ2FsbEZ1bmMoR2RpcFNldEludGVycG9sYXRpb25Nb2RlKShwR3JhcGhpY3MsIEludGVycG9sYXRpb25Nb2RlQmlsaW5lYXIpOw0KKyAgICB9DQorICAgIEZYX1JFQ1Qgc3JjX3JlY3QoMCwgMCwgcEJpdG1hcC0+R2V0V2lkdGgoKSwgcEJpdG1hcC0+R2V0SGVpZ2h0KCkpOw0KKyAgICBPdXRwdXRJbWFnZShwR3JhcGhpY3MsIHBCaXRtYXAsICZzcmNfcmVjdCwgZGVzdF9sZWZ0LCBkZXN0X3RvcCwgZGVzdF93aWR0aCwgZGVzdF9oZWlnaHQpOw0KKyAgICBDYWxsRnVuYyhHZGlwRGVsZXRlR3JhcGhpY3MpKHBHcmFwaGljcyk7DQorICAgIENhbGxGdW5jKEdkaXBEZWxldGVHcmFwaGljcykocEdyYXBoaWNzKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK3N0YXRpYyBHcFBlbiogX0dkaXBDcmVhdGVQZW4oY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRFdPUkQgYXJnYiwgRlhfQk9PTCBiVGV4dE1vZGUgPSBGQUxTRSkNCit7DQorICAgIENHZGlwbHVzRXh0JiBHZGlwbHVzRXh0ID0gKChDV2luMzJQbGF0Zm9ybSopQ0ZYX0dFTW9kdWxlOjpHZXQoKS0+R2V0UGxhdGZvcm1EYXRhKCkpLT5tX0dkaXBsdXNFeHQ7DQorICAgIEZYX0ZMT0FUIHdpZHRoID0gcEdyYXBoU3RhdGUgPyBwR3JhcGhTdGF0ZS0+bV9MaW5lV2lkdGggOiAxLjBmOw0KKyAgICBpZiAoIWJUZXh0TW9kZSkgew0KKyAgICAgICAgRlhfRkxPQVQgdW5pdCA9IHBNYXRyaXggPT0gTlVMTCA/IDEuMGYgOiBGWFNZU19EaXYoMS4wZiwgKHBNYXRyaXgtPkdldFhVbml0KCkgKyBwTWF0cml4LT5HZXRZVW5pdCgpKSAvIDIpOw0KKyAgICAgICAgaWYgKHdpZHRoIDwgdW5pdCkgew0KKyAgICAgICAgICAgIHdpZHRoID0gdW5pdDsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBHcFBlbiogcFBlbiA9IE5VTEw7DQorICAgIENhbGxGdW5jKEdkaXBDcmVhdGVQZW4xKSgoQVJHQilhcmdiLCB3aWR0aCwgVW5pdFdvcmxkLCAmcFBlbik7DQorICAgIExpbmVDYXAgbGluZUNhcDsNCisgICAgRGFzaENhcCBkYXNoQ2FwID0gRGFzaENhcEZsYXQ7DQorICAgIEZYX0JPT0wgYkRhc2hFeHRlbmQgPSBGQUxTRTsNCisgICAgc3dpdGNoKHBHcmFwaFN0YXRlLT5tX0xpbmVDYXApIHsNCisgICAgICAgIGNhc2UgQ0ZYX0dyYXBoU3RhdGVEYXRhOjpMaW5lQ2FwQnV0dDoNCisgICAgICAgICAgICBsaW5lQ2FwID0gTGluZUNhcEZsYXQ7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUNhcFJvdW5kOg0KKyAgICAgICAgICAgIGxpbmVDYXAgPSBMaW5lQ2FwUm91bmQ7DQorICAgICAgICAgICAgZGFzaENhcCA9IERhc2hDYXBSb3VuZDsNCisgICAgICAgICAgICBiRGFzaEV4dGVuZCA9IFRSVUU7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUNhcFNxdWFyZToNCisgICAgICAgICAgICBsaW5lQ2FwID0gTGluZUNhcFNxdWFyZTsNCisgICAgICAgICAgICBiRGFzaEV4dGVuZCA9IFRSVUU7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgQ2FsbEZ1bmMoR2RpcFNldFBlbkxpbmVDYXAxOTc4MTkpKHBQZW4sIGxpbmVDYXAsIGxpbmVDYXAsIGRhc2hDYXApOw0KKyAgICBMaW5lSm9pbiBsaW5lSm9pbjsNCisgICAgc3dpdGNoKHBHcmFwaFN0YXRlLT5tX0xpbmVKb2luKSB7DQorICAgICAgICBjYXNlIENGWF9HcmFwaFN0YXRlRGF0YTo6TGluZUpvaW5NaXRlcjoNCisgICAgICAgICAgICBsaW5lSm9pbiA9IExpbmVKb2luTWl0ZXJDbGlwcGVkOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBDRlhfR3JhcGhTdGF0ZURhdGE6OkxpbmVKb2luUm91bmQ6DQorICAgICAgICAgICAgbGluZUpvaW4gPSBMaW5lSm9pblJvdW5kOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBDRlhfR3JhcGhTdGF0ZURhdGE6OkxpbmVKb2luQmV2ZWw6DQorICAgICAgICAgICAgbGluZUpvaW4gPSBMaW5lSm9pbkJldmVsOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICB9DQorICAgIENhbGxGdW5jKEdkaXBTZXRQZW5MaW5lSm9pbikocFBlbiwgbGluZUpvaW4pOw0KKyAgICBpZihwR3JhcGhTdGF0ZS0+bV9EYXNoQ291bnQpIHsNCisgICAgICAgIEZYX0ZMT0FUKiBwRGFzaEFycmF5ID0gRlhfQWxsb2MoRlhfRkxPQVQsIHBHcmFwaFN0YXRlLT5tX0Rhc2hDb3VudCArIHBHcmFwaFN0YXRlLT5tX0Rhc2hDb3VudCAlIDIpOw0KKyAgICAgICAgaWYgKCFwRGFzaEFycmF5KSB7DQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBpbnQgbkNvdW50ID0gMDsNCisgICAgICAgIEZYX0ZMT0FUIG9uX2xlZnRvdmVyID0gMCwgb2ZmX2xlZnRvdmVyID0gMDsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcEdyYXBoU3RhdGUtPm1fRGFzaENvdW50OyBpICs9IDIpIHsNCisgICAgICAgICAgICBGWF9GTE9BVCBvbl9waGFzZSA9IHBHcmFwaFN0YXRlLT5tX0Rhc2hBcnJheVtpXTsNCisgICAgICAgICAgICBGWF9GTE9BVCBvZmZfcGhhc2U7DQorICAgICAgICAgICAgaWYgKGkgPT0gcEdyYXBoU3RhdGUtPm1fRGFzaENvdW50IC0gMSkgew0KKyAgICAgICAgICAgICAgICBvZmZfcGhhc2UgPSBvbl9waGFzZTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBvZmZfcGhhc2UgPSBwR3JhcGhTdGF0ZS0+bV9EYXNoQXJyYXlbaSArIDFdOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBvbl9waGFzZSAvPSB3aWR0aDsNCisgICAgICAgICAgICBvZmZfcGhhc2UgLz0gd2lkdGg7DQorICAgICAgICAgICAgaWYgKG9uX3BoYXNlICsgb2ZmX3BoYXNlIDw9IDAuMDAwMDJmKSB7DQorICAgICAgICAgICAgICAgIG9uX3BoYXNlID0gMS4wZiAvIDEwOw0KKyAgICAgICAgICAgICAgICBvZmZfcGhhc2UgPSAxLjBmIC8gMTA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChiRGFzaEV4dGVuZCkgew0KKyAgICAgICAgICAgICAgICBpZiAob2ZmX3BoYXNlIDwgMSkgew0KKyAgICAgICAgICAgICAgICAgICAgb2ZmX3BoYXNlID0gMDsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIG9mZl9waGFzZSAtPSAxOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG9uX3BoYXNlICs9IDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChvbl9waGFzZSA9PSAwIHx8IG9mZl9waGFzZSA9PSAwKSB7DQorICAgICAgICAgICAgICAgIGlmIChuQ291bnQgPT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgb25fbGVmdG92ZXIgKz0gb25fcGhhc2U7DQorICAgICAgICAgICAgICAgICAgICBvZmZfbGVmdG92ZXIgKz0gb2ZmX3BoYXNlOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgcERhc2hBcnJheVtuQ291bnQgLSAyXSArPSBvbl9waGFzZTsNCisgICAgICAgICAgICAgICAgICAgIHBEYXNoQXJyYXlbbkNvdW50IC0gMV0gKz0gb2ZmX3BoYXNlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgcERhc2hBcnJheVtuQ291bnQrK10gPSBvbl9waGFzZSArIG9uX2xlZnRvdmVyOw0KKyAgICAgICAgICAgICAgICBvbl9sZWZ0b3ZlciA9IDA7DQorICAgICAgICAgICAgICAgIHBEYXNoQXJyYXlbbkNvdW50KytdID0gb2ZmX3BoYXNlICsgb2ZmX2xlZnRvdmVyOw0KKyAgICAgICAgICAgICAgICBvZmZfbGVmdG92ZXIgPSAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIENhbGxGdW5jKEdkaXBTZXRQZW5EYXNoQXJyYXkpKHBQZW4sIHBEYXNoQXJyYXksIG5Db3VudCk7DQorICAgICAgICBGWF9GTE9BVCBwaGFzZSA9IHBHcmFwaFN0YXRlLT5tX0Rhc2hQaGFzZTsNCisgICAgICAgIGlmIChiRGFzaEV4dGVuZCkNCisgICAgICAgICAgICBpZiAocGhhc2UgPCAwLjVmKSB7DQorICAgICAgICAgICAgICAgIHBoYXNlID0gMDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwaGFzZSAtPSAwLjVmOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIENhbGxGdW5jKEdkaXBTZXRQZW5EYXNoT2Zmc2V0KShwUGVuLCBwaGFzZSk7DQorICAgICAgICBGWF9GcmVlKHBEYXNoQXJyYXkpOw0KKyAgICAgICAgcERhc2hBcnJheSA9IE5VTEw7DQorICAgIH0NCisgICAgQ2FsbEZ1bmMoR2RpcFNldFBlbk1pdGVyTGltaXQpKHBQZW4sIHBHcmFwaFN0YXRlLT5tX01pdGVyTGltaXQpOw0KKyAgICByZXR1cm4gcFBlbjsNCit9DQorc3RhdGljIEJPT0wgSXNTbWFsbFRyaWFuZ2xlKFBvaW50RiogcG9pbnRzLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBpbnQmIHYxLCBpbnQmIHYyKQ0KK3sNCisgICAgaW50IHBhaXJzW10gPSB7MSwgMiwgMCwgMiwgMCwgMX07DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSArKykgew0KKyAgICAgICAgaW50IHBhaXIxID0gcGFpcnNbaSAqIDJdOw0KKyAgICAgICAgaW50IHBhaXIyID0gcGFpcnNbaSAqIDIgKyAxXTsNCisgICAgICAgIEZYX0ZMT0FUIHgxID0gcG9pbnRzW3BhaXIxXS5YLCB4MiA9IHBvaW50c1twYWlyMl0uWDsNCisgICAgICAgIEZYX0ZMT0FUIHkxID0gcG9pbnRzW3BhaXIxXS5ZLCB5MiA9IHBvaW50c1twYWlyMl0uWTsNCisgICAgICAgIGlmIChwTWF0cml4KSB7DQorICAgICAgICAgICAgcE1hdHJpeC0+VHJhbnNmb3JtKHgxLCB5MSk7DQorICAgICAgICAgICAgcE1hdHJpeC0+VHJhbnNmb3JtKHgyLCB5Mik7DQorICAgICAgICB9DQorICAgICAgICBGWF9GTE9BVCBkeCA9IHgxIC0geDI7DQorICAgICAgICBGWF9GTE9BVCBkeSA9IHkxIC0geTI7DQorICAgICAgICBGWF9GTE9BVCBkaXN0YW5jZV9zcXVhcmUgPSBGWFNZU19NdWwoZHgsIGR4KSArIEZYU1lTX011bChkeSwgZHkpOw0KKyAgICAgICAgaWYgKGRpc3RhbmNlX3NxdWFyZSA8ICgxLjBmICogMiArIDEuMGYgLyA0KSkgew0KKyAgICAgICAgICAgIHYxID0gaTsNCisgICAgICAgICAgICB2MiA9IHBhaXIxOw0KKyAgICAgICAgICAgIHJldHVybiBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorQk9PTCBDR2RpcGx1c0V4dDo6RHJhd1BhdGgoSERDIGhEQywgY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBmaWxsX2FyZ2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgc3Ryb2tlX2FyZ2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbGxfbW9kZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KK3sNCisgICAgaW50IG5Qb2ludHMgPSBwUGF0aERhdGEtPkdldFBvaW50Q291bnQoKTsNCisgICAgaWYgKG5Qb2ludHMgPT0gMCkgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgRlhfUEFUSFBPSU5UKiBwUG9pbnRzID0gcFBhdGhEYXRhLT5HZXRQb2ludHMoKTsNCisgICAgR3BHcmFwaGljcyogcEdyYXBoaWNzID0gTlVMTDsNCisgICAgQ0dkaXBsdXNFeHQmIEdkaXBsdXNFeHQgPSAoKENXaW4zMlBsYXRmb3JtKilDRlhfR0VNb2R1bGU6OkdldCgpLT5HZXRQbGF0Zm9ybURhdGEoKSktPm1fR2RpcGx1c0V4dDsNCisgICAgQ2FsbEZ1bmMoR2RpcENyZWF0ZUZyb21IREMpKGhEQywgJnBHcmFwaGljcyk7DQorICAgIENhbGxGdW5jKEdkaXBTZXRQYWdlVW5pdCkocEdyYXBoaWNzLCBVbml0UGl4ZWwpOw0KKyAgICBDYWxsRnVuYyhHZGlwU2V0UGl4ZWxPZmZzZXRNb2RlKShwR3JhcGhpY3MsIFBpeGVsT2Zmc2V0TW9kZUhhbGYpOw0KKyAgICBHcE1hdHJpeCogcE1hdHJpeCA9IE5VTEw7DQorICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgQ2FsbEZ1bmMoR2RpcENyZWF0ZU1hdHJpeDIpKHBPYmplY3QyRGV2aWNlLT5hLCBwT2JqZWN0MkRldmljZS0+YiwgcE9iamVjdDJEZXZpY2UtPmMsIHBPYmplY3QyRGV2aWNlLT5kLCBwT2JqZWN0MkRldmljZS0+ZSwgcE9iamVjdDJEZXZpY2UtPmYsICZwTWF0cml4KTsNCisgICAgICAgIENhbGxGdW5jKEdkaXBTZXRXb3JsZFRyYW5zZm9ybSkocEdyYXBoaWNzLCBwTWF0cml4KTsNCisgICAgfQ0KKyAgICBQb2ludEYgKnBvaW50cyA9IEZYX0FsbG9jKFBvaW50RiwgblBvaW50cyk7DQorICAgIGlmICghcG9pbnRzKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgQllURSAqIHR5cGVzICA9IEZYX0FsbG9jKEJZVEUsIG5Qb2ludHMpOw0KKyAgICBpZiAoIXR5cGVzKSB7DQorICAgICAgICBGWF9GcmVlKHBvaW50cyk7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaW50IG5TdWJQYXRoZXMgPSAwOw0KKyAgICBGWF9CT09MIGJTdWJDbG9zZSA9IEZBTFNFOw0KKyAgICBpbnQgcG9zX3N1YmNsb3NlID0gMDsNCisgICAgRlhfQk9PTCBiU21vb3RoID0gRkFMU0U7DQorICAgIGludCBzdGFydHBvaW50ID0gMDsNCisgICAgZm9yKGludCBpID0gMDsgaSA8IG5Qb2ludHM7IGkrKykgew0KKyAgICAgICAgcG9pbnRzW2ldLlggPSBwUG9pbnRzW2ldLm1fUG9pbnRYOw0KKyAgICAgICAgcG9pbnRzW2ldLlkgPSBwUG9pbnRzW2ldLm1fUG9pbnRZOw0KKyAgICAgICAgRlhfRkxPQVQgeCwgeTsNCisgICAgICAgIGlmIChwT2JqZWN0MkRldmljZSkgew0KKyAgICAgICAgICAgIHBPYmplY3QyRGV2aWNlLT5UcmFuc2Zvcm0ocFBvaW50c1tpXS5tX1BvaW50WCwgcFBvaW50c1tpXS5tX1BvaW50WSwgeCwgeSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHggPSBwUG9pbnRzW2ldLm1fUG9pbnRYOw0KKyAgICAgICAgICAgIHkgPSBwUG9pbnRzW2ldLm1fUG9pbnRZOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHggPiA1MDAwMCAqIDEuMGYpIHsNCisgICAgICAgICAgICBwb2ludHNbaV0uWCA9IDUwMDAwICogMS4wZjsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh4IDwgLTUwMDAwICogMS4wZikgew0KKyAgICAgICAgICAgIHBvaW50c1tpXS5YID0gLTUwMDAwICogMS4wZjsNCisgICAgICAgIH0NCisgICAgICAgIGlmICh5ID4gNTAwMDAgKiAxLjBmKSB7DQorICAgICAgICAgICAgcG9pbnRzW2ldLlkgPSA1MDAwMCAqIDEuMGY7DQorICAgICAgICB9DQorICAgICAgICBpZiAoeSA8IC01MDAwMCAqIDEuMGYpIHsNCisgICAgICAgICAgICBwb2ludHNbaV0uWSA9IC01MDAwMCAqIDEuMGY7DQorICAgICAgICB9DQorICAgICAgICBpbnQgcG9pbnRfdHlwZSA9IHBQb2ludHNbaV0ubV9GbGFnICYgRlhQVF9UWVBFOw0KKyAgICAgICAgaWYocG9pbnRfdHlwZSA9PSBGWFBUX01PVkVUTykgew0KKyAgICAgICAgICAgIHR5cGVzW2ldID0gUGF0aFBvaW50VHlwZVN0YXJ0Ow0KKyAgICAgICAgICAgIG5TdWJQYXRoZXMgKys7DQorICAgICAgICAgICAgYlN1YkNsb3NlID0gRkFMU0U7DQorICAgICAgICAgICAgc3RhcnRwb2ludCA9IGk7DQorICAgICAgICB9IGVsc2UgaWYgKHBvaW50X3R5cGUgPT0gRlhQVF9MSU5FVE8pIHsNCisgICAgICAgICAgICB0eXBlc1tpXSA9IFBhdGhQb2ludFR5cGVMaW5lOw0KKyAgICAgICAgICAgIGlmIChwUG9pbnRzW2kgLSAxXS5tX0ZsYWcgPT0gRlhQVF9NT1ZFVE8gJiYgKGkgPT0gblBvaW50cyAtIDEgfHwgcFBvaW50c1tpICsgMV0ubV9GbGFnID09IEZYUFRfTU9WRVRPKSAmJg0KKyAgICAgICAgICAgICAgICAgICAgcG9pbnRzW2ldLlkgPT0gcG9pbnRzW2kgLSAxXS5ZICYmIHBvaW50c1tpXS5YID09IHBvaW50c1tpIC0gMV0uWCkgew0KKyAgICAgICAgICAgICAgICBwb2ludHNbaV0uWCArPSAwLjAxZjsNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICghYlNtb290aCAmJiBwb2ludHNbaV0uWCAhPSBwb2ludHNbaSAtIDFdLlggJiYgcG9pbnRzW2ldLlkgIT0gcG9pbnRzW2kgLSAxXS5ZKSB7DQorICAgICAgICAgICAgICAgIGJTbW9vdGggPSBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSBpZiAocG9pbnRfdHlwZSA9PSBGWFBUX0JFWklFUlRPKQl7DQorICAgICAgICAgICAgdHlwZXNbaV0gPSBQYXRoUG9pbnRUeXBlQmV6aWVyOw0KKyAgICAgICAgICAgIGJTbW9vdGggPSBUUlVFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBQb2ludHNbaV0ubV9GbGFnICYgRlhQVF9DTE9TRUZJR1VSRSkgew0KKyAgICAgICAgICAgIGlmIChiU3ViQ2xvc2UpIHsNCisgICAgICAgICAgICAgICAgdHlwZXNbcG9zX3N1YmNsb3NlXSAmPSB+UGF0aFBvaW50VHlwZUNsb3NlU3VicGF0aDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBiU3ViQ2xvc2UgPSBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwb3Nfc3ViY2xvc2UgPSBpOw0KKyAgICAgICAgICAgIHR5cGVzW2ldIHw9IFBhdGhQb2ludFR5cGVDbG9zZVN1YnBhdGg7DQorICAgICAgICAgICAgaWYgKCFiU21vb3RoICYmIHBvaW50c1tpXS5YICE9IHBvaW50c1tzdGFydHBvaW50XS5YICYmIHBvaW50c1tpXS5ZICE9IHBvaW50c1tzdGFydHBvaW50XS5ZKSB7DQorICAgICAgICAgICAgICAgIGJTbW9vdGggPSBUUlVFOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoZmlsbF9tb2RlICYgRlhGSUxMX05PUEFUSFNNT09USCkgew0KKyAgICAgICAgYlNtb290aCA9IEZBTFNFOw0KKyAgICAgICAgQ2FsbEZ1bmMoR2RpcFNldFNtb290aGluZ01vZGUpKHBHcmFwaGljcywgU21vb3RoaW5nTW9kZU5vbmUpOw0KKyAgICB9IGVsc2UgaWYgKCEoZmlsbF9tb2RlICYgRlhGSUxMX0ZVTExDT1ZFUikpIHsNCisgICAgICAgIGlmICghYlNtb290aCAmJiAoZmlsbF9tb2RlICYgMykpIHsNCisgICAgICAgICAgICBiU21vb3RoID0gVFJVRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChiU21vb3RoIHx8IHBHcmFwaFN0YXRlICYmIHBHcmFwaFN0YXRlLT5tX0xpbmVXaWR0aCA+IDIpIHsNCisgICAgICAgICAgICBDYWxsRnVuYyhHZGlwU2V0U21vb3RoaW5nTW9kZSkocEdyYXBoaWNzLCBTbW9vdGhpbmdNb2RlQW50aUFsaWFzKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBpbnQgbmV3X2ZpbGxfbW9kZSA9IGZpbGxfbW9kZSAmIDM7DQorICAgIGlmIChuUG9pbnRzID09IDQgJiYgcEdyYXBoU3RhdGUgPT0gTlVMTCkgew0KKyAgICAgICAgaW50IHYxLCB2MjsNCisgICAgICAgIGlmIChJc1NtYWxsVHJpYW5nbGUocG9pbnRzLCBwT2JqZWN0MkRldmljZSwgdjEsIHYyKSkgew0KKyAgICAgICAgICAgIEdwUGVuKiBwUGVuID0gTlVMTDsNCisgICAgICAgICAgICBDYWxsRnVuYyhHZGlwQ3JlYXRlUGVuMSkoZmlsbF9hcmdiLCAxLjBmLCBVbml0UGl4ZWwsICZwUGVuKTsNCisgICAgICAgICAgICBDYWxsRnVuYyhHZGlwRHJhd0xpbmVJKShwR3JhcGhpY3MsIHBQZW4sIEZYU1lTX3JvdW5kKHBvaW50c1t2MV0uWCksIEZYU1lTX3JvdW5kKHBvaW50c1t2MV0uWSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfcm91bmQocG9pbnRzW3YyXS5YKSwgRlhTWVNfcm91bmQocG9pbnRzW3YyXS5ZKSk7DQorICAgICAgICAgICAgQ2FsbEZ1bmMoR2RpcERlbGV0ZVBlbikocFBlbik7DQorICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgICAgICB9DQorICAgIH0NCisgICAgR3BQYXRoKiBwR3BQYXRoID0gTlVMTDsNCisgICAgQ2FsbEZ1bmMoR2RpcENyZWF0ZVBhdGgyKShwb2ludHMsIHR5cGVzLCBuUG9pbnRzLCBHZGlGaWxsVHlwZTJHZGlwKG5ld19maWxsX21vZGUpLCAmcEdwUGF0aCk7DQorICAgIGlmICghcEdwUGF0aCkgew0KKyAgICAgICAgaWYgKHBNYXRyaXgpIHsNCisgICAgICAgICAgICBDYWxsRnVuYyhHZGlwRGVsZXRlTWF0cml4KShwTWF0cml4KTsNCisgICAgICAgIH0NCisgICAgICAgIEZYX0ZyZWUocG9pbnRzKTsNCisgICAgICAgIEZYX0ZyZWUodHlwZXMpOw0KKyAgICAgICAgQ2FsbEZ1bmMoR2RpcERlbGV0ZUdyYXBoaWNzKShwR3JhcGhpY3MpOw0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGlmIChuZXdfZmlsbF9tb2RlKSB7DQorICAgICAgICBHcEJydXNoKiBwQnJ1c2ggPSBfR2RpcENyZWF0ZUJydXNoKGZpbGxfYXJnYik7DQorICAgICAgICBDYWxsRnVuYyhHZGlwU2V0UGF0aEZpbGxNb2RlKShwR3BQYXRoLCBHZGlGaWxsVHlwZTJHZGlwKG5ld19maWxsX21vZGUpKTsNCisgICAgICAgIENhbGxGdW5jKEdkaXBGaWxsUGF0aCkocEdyYXBoaWNzLCBwQnJ1c2gsIHBHcFBhdGgpOw0KKyAgICAgICAgQ2FsbEZ1bmMoR2RpcERlbGV0ZUJydXNoKShwQnJ1c2gpOw0KKyAgICB9DQorICAgIGlmIChwR3JhcGhTdGF0ZSAmJiBzdHJva2VfYXJnYikgew0KKyAgICAgICAgR3BQZW4qIHBQZW4gPSBfR2RpcENyZWF0ZVBlbihwR3JhcGhTdGF0ZSwgcE9iamVjdDJEZXZpY2UsIHN0cm9rZV9hcmdiLCBmaWxsX21vZGUgJiBGWF9TVFJPS0VfVEVYVF9NT0RFKTsNCisgICAgICAgIGlmIChuU3ViUGF0aGVzID09IDEpIHsNCisgICAgICAgICAgICBDYWxsRnVuYyhHZGlwRHJhd1BhdGgpKHBHcmFwaGljcywgcFBlbiwgcEdwUGF0aCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGludCBpU3RhcnQgPSAwOw0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgblBvaW50czsgaSArKykgew0KKyAgICAgICAgICAgICAgICBpZiAoaSA9PSBuUG9pbnRzIC0gMSB8fCB0eXBlc1tpICsgMV0gPT0gUGF0aFBvaW50VHlwZVN0YXJ0KSB7DQorICAgICAgICAgICAgICAgICAgICBHcFBhdGgqIHBTdWJQYXRoOw0KKyAgICAgICAgICAgICAgICAgICAgQ2FsbEZ1bmMoR2RpcENyZWF0ZVBhdGgyKShwb2ludHMgKyBpU3RhcnQsIHR5cGVzICsgaVN0YXJ0LCBpIC0gaVN0YXJ0ICsgMSwgR2RpRmlsbFR5cGUyR2RpcChuZXdfZmlsbF9tb2RlKSwgJnBTdWJQYXRoKTsNCisgICAgICAgICAgICAgICAgICAgIGlTdGFydCA9IGkgKyAxOw0KKyAgICAgICAgICAgICAgICAgICAgQ2FsbEZ1bmMoR2RpcERyYXdQYXRoKShwR3JhcGhpY3MsIHBQZW4sIHBTdWJQYXRoKTsNCisgICAgICAgICAgICAgICAgICAgIENhbGxGdW5jKEdkaXBEZWxldGVQYXRoKShwU3ViUGF0aCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBDYWxsRnVuYyhHZGlwRGVsZXRlUGVuKShwUGVuKTsNCisgICAgfQ0KKyAgICBpZiAocE1hdHJpeCkgew0KKyAgICAgICAgQ2FsbEZ1bmMoR2RpcERlbGV0ZU1hdHJpeCkocE1hdHJpeCk7DQorICAgIH0NCisgICAgRlhfRnJlZShwb2ludHMpOw0KKyAgICBGWF9GcmVlKHR5cGVzKTsNCisgICAgQ2FsbEZ1bmMoR2RpcERlbGV0ZVBhdGgpKHBHcFBhdGgpOw0KKyAgICBDYWxsRnVuYyhHZGlwRGVsZXRlR3JhcGhpY3MpKHBHcmFwaGljcyk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitjbGFzcyBHcFN0cmVhbSA6IHB1YmxpYyBJU3RyZWFtLCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCisgICAgTE9ORwltX1JlZkNvdW50Ow0KKyAgICBpbnQgICAgIG1fUmVhZFBvczsNCisgICAgQ0ZYX0J5dGVUZXh0QnVmCW1fSW50ZXJTdHJlYW07DQorcHVibGljOg0KKyAgICBHcFN0cmVhbSgpDQorICAgIHsNCisgICAgICAgIG1fUmVmQ291bnQgPSAxOw0KKyAgICAgICAgbV9SZWFkUG9zID0gMDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUNCisgICAgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIGlpZCwgdm9pZCAqKiBwcHZPYmplY3QpDQorICAgIHsNCisgICAgICAgIGlmIChpaWQgPT0gX191dWlkb2YoSVVua25vd24pIHx8IGlpZCA9PSBfX3V1aWRvZihJU3RyZWFtKSB8fA0KKyAgICAgICAgICAgICAgICBpaWQgPT0gX191dWlkb2YoSVNlcXVlbnRpYWxTdHJlYW0pKQl7DQorICAgICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElTdHJlYW0qPih0aGlzKTsNCisgICAgICAgICAgICBBZGRSZWYoKTsNCisgICAgICAgICAgICByZXR1cm4gU19PSzsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7DQorICAgICAgICB9DQorICAgIH0NCisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIChVTE9ORylJbnRlcmxvY2tlZEluY3JlbWVudCgmbV9SZWZDb3VudCk7DQorICAgIH0NCisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpDQorICAgIHsNCisgICAgICAgIFVMT05HIHJlcyA9IChVTE9ORykgSW50ZXJsb2NrZWREZWNyZW1lbnQoJm1fUmVmQ291bnQpOw0KKyAgICAgICAgaWYgKHJlcyA9PSAwKSB7DQorICAgICAgICAgICAgZGVsZXRlIHRoaXM7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gcmVzOw0KKyAgICB9DQorcHVibGljOg0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUmVhZCh2b2lkKiBPdXRwdXQsIFVMT05HIGNiLCBVTE9ORyogcGNiUmVhZCkNCisgICAgew0KKyAgICAgICAgc2l6ZV90CWJ5dGVzX2xlZnQ7DQorICAgICAgICBzaXplX3QJYnl0ZXNfb3V0Ow0KKyAgICAgICAgaWYgKHBjYlJlYWQgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICpwY2JSZWFkID0gMDsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChtX1JlYWRQb3MgPT0gbV9JbnRlclN0cmVhbS5HZXRMZW5ndGgoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfRU5EX09GX01FRElBKTsNCisgICAgICAgIH0NCisgICAgICAgIGJ5dGVzX2xlZnQgPSBtX0ludGVyU3RyZWFtLkdldExlbmd0aCgpIC0gbV9SZWFkUG9zOw0KKyAgICAgICAgYnl0ZXNfb3V0ID0gRlhfTUlOKGNiLCBieXRlc19sZWZ0KTsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKE91dHB1dCwgbV9JbnRlclN0cmVhbS5HZXRCdWZmZXIoKSArIG1fUmVhZFBvcywgYnl0ZXNfb3V0KTsNCisgICAgICAgIG1fUmVhZFBvcyArPSAoRlhfSU5UMzIpYnl0ZXNfb3V0Ow0KKyAgICAgICAgaWYgKHBjYlJlYWQgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICpwY2JSZWFkID0gKFVMT05HKWJ5dGVzX291dDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBTX09LOw0KKyAgICB9DQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXcml0ZSh2b2lkIGNvbnN0KiBJbnB1dCwgVUxPTkcgY2IsIFVMT05HKiBwY2JXcml0dGVuKQ0KKyAgICB7DQorICAgICAgICBpZiAoY2IgPD0gMCkgew0KKyAgICAgICAgICAgIGlmIChwY2JXcml0dGVuICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgKnBjYldyaXR0ZW4gPSAwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gU19PSzsNCisgICAgICAgIH0NCisgICAgICAgIG1fSW50ZXJTdHJlYW0uSW5zZXJ0QmxvY2sobV9JbnRlclN0cmVhbS5HZXRMZW5ndGgoKSwgSW5wdXQsIGNiKTsNCisgICAgICAgIGlmIChwY2JXcml0dGVuICE9IE5VTEwpIHsNCisgICAgICAgICAgICAqcGNiV3JpdHRlbiA9IGNiOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIFNfT0s7DQorICAgIH0NCitwdWJsaWM6DQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBTZXRTaXplKFVMQVJHRV9JTlRFR0VSKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRV9OT1RJTVBMOw0KKyAgICB9DQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDb3B5VG8oSVN0cmVhbSosIFVMQVJHRV9JTlRFR0VSLCBVTEFSR0VfSU5URUdFUiosIFVMQVJHRV9JTlRFR0VSKikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEVfTk9USU1QTDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ29tbWl0KERXT1JEKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRV9OT1RJTVBMOw0KKyAgICB9DQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZXZlcnQodm9pZCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEVfTk9USU1QTDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgTG9ja1JlZ2lvbihVTEFSR0VfSU5URUdFUiwgVUxBUkdFX0lOVEVHRVIsIERXT1JEKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gRV9OT1RJTVBMOw0KKyAgICB9DQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBVbmxvY2tSZWdpb24oVUxBUkdFX0lOVEVHRVIsIFVMQVJHRV9JTlRFR0VSLCBEV09SRCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEVfTk9USU1QTDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoSVN0cmVhbSAqKikNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEVfTk9USU1QTDsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgU2VlayhMQVJHRV9JTlRFR0VSIGxpRGlzdGFuY2VUb01vdmUsIERXT1JEIGR3T3JpZ2luLCBVTEFSR0VfSU5URUdFUiogbHBOZXdGaWxlUG9pbnRlcikNCisgICAgew0KKyAgICAgICAgbG9uZwlzdGFydCA9IDA7DQorICAgICAgICBsb25nCW5ld19yZWFkX3Bvc2l0aW9uOw0KKyAgICAgICAgc3dpdGNoKGR3T3JpZ2luKSB7DQorICAgICAgICAgICAgY2FzZSBTVFJFQU1fU0VFS19TRVQ6DQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gMDsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSBTVFJFQU1fU0VFS19DVVI6DQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gbV9SZWFkUG9zOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlIFNUUkVBTV9TRUVLX0VORDoNCisgICAgICAgICAgICAgICAgc3RhcnQgPSBtX0ludGVyU3RyZWFtLkdldExlbmd0aCgpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgICByZXR1cm4gU1RHX0VfSU5WQUxJREZVTkNUSU9OOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgICAgIG5ld19yZWFkX3Bvc2l0aW9uID0gc3RhcnQgKyAobG9uZylsaURpc3RhbmNlVG9Nb3ZlLlF1YWRQYXJ0Ow0KKyAgICAgICAgaWYgKG5ld19yZWFkX3Bvc2l0aW9uIDwgMCB8fCBuZXdfcmVhZF9wb3NpdGlvbiA+IG1fSW50ZXJTdHJlYW0uR2V0TGVuZ3RoKCkpIHsNCisgICAgICAgICAgICByZXR1cm4gU1RHX0VfU0VFS0VSUk9SOw0KKyAgICAgICAgfQ0KKyAgICAgICAgbV9SZWFkUG9zID0gbmV3X3JlYWRfcG9zaXRpb247DQorICAgICAgICBpZiAobHBOZXdGaWxlUG9pbnRlciAhPSBOVUxMKSB7DQorICAgICAgICAgICAgbHBOZXdGaWxlUG9pbnRlci0+UXVhZFBhcnQgPSBtX1JlYWRQb3M7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gU19PSzsNCisgICAgfQ0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgU3RhdChTVEFUU1RHKiBwU3RhdHN0ZywgRFdPUkQgZ3JmU3RhdEZsYWcpDQorICAgIHsNCisgICAgICAgIGlmIChwU3RhdHN0ZyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIFNUR19FX0lOVkFMSURGVU5DVElPTjsNCisgICAgICAgIH0NCisgICAgICAgIFplcm9NZW1vcnkocFN0YXRzdGcsIHNpemVvZihTVEFUU1RHKSk7DQorICAgICAgICBwU3RhdHN0Zy0+Y2JTaXplLlF1YWRQYXJ0ID0gbV9JbnRlclN0cmVhbS5HZXRMZW5ndGgoKTsNCisgICAgICAgIHJldHVybiBTX09LOw0KKyAgICB9DQorfTsNCit0eXBlZGVmIHN0cnVjdCB7DQorICAgIEJJVE1BUElORk8qCQlwYm1pOw0KKyAgICBpbnQJCQkJU3RyaWRlOw0KKyAgICBMUEJZVEUJCQlwU2NhbjA7DQorICAgIEdwQml0bWFwKgkJcEJpdG1hcDsNCisgICAgQml0bWFwRGF0YSoJCXBCaXRtYXBEYXRhOw0KKyAgICBHcFN0cmVhbSogICAgICAgcFN0cmVhbTsNCit9IFBSRVZJRVczX0RJQklUTUFQOw0KK3N0YXRpYyBQUkVWSUVXM19ESUJJVE1BUCogTG9hZERJQml0bWFwKFdJTkRJQl9PcGVuX0FyZ3NfIGFyZ3MpDQorew0KKyAgICBHcEJpdG1hcCogcEJpdG1hcDsNCisgICAgR3BTdHJlYW0qIHBTdHJlYW0gPSBOVUxMOw0KKyAgICBDR2RpcGx1c0V4dCYgR2RpcGx1c0V4dCA9ICgoQ1dpbjMyUGxhdGZvcm0qKUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpKS0+bV9HZGlwbHVzRXh0Ow0KKyAgICBTdGF0dXMgc3RhdHVzID0gT2s7DQorICAgIGlmIChhcmdzLmZsYWdzID09IFdJTkRJQl9PUEVOX1BBVEhOQU1FKSB7DQorICAgICAgICBzdGF0dXMgPSBDYWxsRnVuYyhHZGlwQ3JlYXRlQml0bWFwRnJvbUZpbGVJQ00pKCh3Y2hhcl90KilhcmdzLnBhdGhfbmFtZSwgJnBCaXRtYXApOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKGFyZ3MubWVtb3J5X3NpemUgPT0gMCB8fCAhYXJncy5tZW1vcnlfYmFzZSkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFN0cmVhbSA9IEZYX05FVyBHcFN0cmVhbTsNCisgICAgICAgIGlmICghcFN0cmVhbSkgew0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcFN0cmVhbS0+V3JpdGUoYXJncy5tZW1vcnlfYmFzZSwgKFVMT05HKWFyZ3MubWVtb3J5X3NpemUsIE5VTEwpOw0KKyAgICAgICAgc3RhdHVzID0gQ2FsbEZ1bmMoR2RpcENyZWF0ZUJpdG1hcEZyb21TdHJlYW1JQ00pKHBTdHJlYW0sICZwQml0bWFwKTsNCisgICAgfQ0KKyAgICBpZiAoc3RhdHVzICE9IE9rKSB7DQorICAgICAgICBpZiAocFN0cmVhbSkgew0KKyAgICAgICAgICAgIHBTdHJlYW0tPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIFVJTlQgaGVpZ2h0LCB3aWR0aDsNCisgICAgQ2FsbEZ1bmMoR2RpcEdldEltYWdlSGVpZ2h0KShwQml0bWFwLCAmaGVpZ2h0KTsNCisgICAgQ2FsbEZ1bmMoR2RpcEdldEltYWdlV2lkdGgpKHBCaXRtYXAsICZ3aWR0aCk7DQorICAgIFBpeGVsRm9ybWF0IHBpeGVsX2Zvcm1hdDsNCisgICAgQ2FsbEZ1bmMoR2RpcEdldEltYWdlUGl4ZWxGb3JtYXQpKHBCaXRtYXAsICZwaXhlbF9mb3JtYXQpOw0KKyAgICBpbnQgaW5mb19zaXplID0gc2l6ZW9mKEJJVE1BUElORk9IRUFERVIpOw0KKyAgICBpbnQgYnBwID0gMjQ7DQorICAgIGludCBkZXN0X3BpeGVsX2Zvcm1hdCA9IFBpeGVsRm9ybWF0MjRicHBSR0I7DQorICAgIGlmIChwaXhlbF9mb3JtYXQgPT0gUGl4ZWxGb3JtYXQxYnBwSW5kZXhlZCkgew0KKyAgICAgICAgaW5mb19zaXplICs9IDg7DQorICAgICAgICBicHAgPSAxOw0KKyAgICAgICAgZGVzdF9waXhlbF9mb3JtYXQgPSBQaXhlbEZvcm1hdDFicHBJbmRleGVkOw0KKyAgICB9IGVsc2UgaWYgKHBpeGVsX2Zvcm1hdCA9PSBQaXhlbEZvcm1hdDhicHBJbmRleGVkKSB7DQorICAgICAgICBpbmZvX3NpemUgKz0gMTAyNDsNCisgICAgICAgIGJwcCA9IDg7DQorICAgICAgICBkZXN0X3BpeGVsX2Zvcm1hdCA9IFBpeGVsRm9ybWF0OGJwcEluZGV4ZWQ7DQorICAgIH0gZWxzZSBpZiAocGl4ZWxfZm9ybWF0ID09IFBpeGVsRm9ybWF0MzJicHBBUkdCKSB7DQorICAgICAgICBicHAgPSAzMjsNCisgICAgICAgIGRlc3RfcGl4ZWxfZm9ybWF0ID0gUGl4ZWxGb3JtYXQzMmJwcEFSR0I7DQorICAgIH0NCisgICAgTFBCWVRFIGJ1ZiA9IEZYX0FsbG9jKEJZVEUsIGluZm9fc2l6ZSk7DQorICAgIGlmICghYnVmKSB7DQorICAgICAgICBpZiAocFN0cmVhbSkgew0KKyAgICAgICAgICAgIHBTdHJlYW0tPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIEJJVE1BUElORk9IRUFERVIqIHBibWloID0gKEJJVE1BUElORk9IRUFERVIqKWJ1ZjsNCisgICAgRlhTWVNfbWVtc2V0MzIoYnVmLCAwLCBpbmZvX3NpemUpOw0KKyAgICBwYm1paC0+YmlCaXRDb3VudCA9IGJwcDsNCisgICAgcGJtaWgtPmJpQ29tcHJlc3Npb24gPSBCSV9SR0I7DQorICAgIHBibWloLT5iaUhlaWdodCA9IC0oaW50KWhlaWdodDsNCisgICAgcGJtaWgtPmJpUGxhbmVzID0gMTsNCisgICAgcGJtaWgtPmJpV2lkdGggPSB3aWR0aDsNCisgICAgUmVjdCByZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOw0KKyAgICBCaXRtYXBEYXRhKiBwQml0bWFwRGF0YSA9IEZYX0FsbG9jKEJpdG1hcERhdGEsIDEpOw0KKyAgICBpZiAoIXBCaXRtYXBEYXRhKSB7DQorICAgICAgICBpZiAocFN0cmVhbSkgew0KKyAgICAgICAgICAgIHBTdHJlYW0tPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIENhbGxGdW5jKEdkaXBCaXRtYXBMb2NrQml0cykocEJpdG1hcCwgJnJlY3QsIEltYWdlTG9ja01vZGVSZWFkLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfcGl4ZWxfZm9ybWF0LCBwQml0bWFwRGF0YSk7DQorICAgIGlmIChwaXhlbF9mb3JtYXQgPT0gUGl4ZWxGb3JtYXQxYnBwSW5kZXhlZCB8fCBwaXhlbF9mb3JtYXQgPT0gUGl4ZWxGb3JtYXQ4YnBwSW5kZXhlZCkgew0KKyAgICAgICAgRFdPUkQqIHBwYWwgPSAoRFdPUkQqKShidWYgKyBzaXplb2YoQklUTUFQSU5GT0hFQURFUikpOw0KKyAgICAgICAgc3RydWN0IHsNCisgICAgICAgICAgICBVSU5UIGZsYWdzOw0KKyAgICAgICAgICAgIFVJTlQgQ291bnQ7DQorICAgICAgICAgICAgRFdPUkQgRW50cmllc1syNTZdOw0KKyAgICAgICAgfSBwYWw7DQorICAgICAgICBpbnQgc2l6ZSA9IDA7DQorICAgICAgICBDYWxsRnVuYyhHZGlwR2V0SW1hZ2VQYWxldHRlU2l6ZSkocEJpdG1hcCwgJnNpemUpOw0KKyAgICAgICAgQ2FsbEZ1bmMoR2RpcEdldEltYWdlUGFsZXR0ZSkocEJpdG1hcCwgKENvbG9yUGFsZXR0ZSopJnBhbCwgc2l6ZSk7DQorICAgICAgICBpbnQgZW50cmllcyA9IHBpeGVsX2Zvcm1hdCA9PSBQaXhlbEZvcm1hdDFicHBJbmRleGVkID8gMiA6IDI1NjsNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZW50cmllczsgaSArKykgew0KKyAgICAgICAgICAgIHBwYWxbaV0gPSBwYWwuRW50cmllc1tpXSAmIDB4MDBmZmZmZmY7DQorICAgICAgICB9DQorICAgIH0NCisgICAgUFJFVklFVzNfRElCSVRNQVAqIHBJbmZvID0gRlhfQWxsb2MoUFJFVklFVzNfRElCSVRNQVAsIDEpOw0KKyAgICBpZiAoIXBJbmZvKSB7DQorICAgICAgICBpZiAocFN0cmVhbSkgew0KKyAgICAgICAgICAgIHBTdHJlYW0tPlJlbGVhc2UoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBJbmZvLT5wYm1pID0gKEJJVE1BUElORk8qKWJ1ZjsNCisgICAgcEluZm8tPnBTY2FuMCA9IChMUEJZVEUpcEJpdG1hcERhdGEtPlNjYW4wOw0KKyAgICBwSW5mby0+U3RyaWRlID0gcEJpdG1hcERhdGEtPlN0cmlkZTsNCisgICAgcEluZm8tPnBCaXRtYXAgPSBwQml0bWFwOw0KKyAgICBwSW5mby0+cEJpdG1hcERhdGEgPSBwQml0bWFwRGF0YTsNCisgICAgcEluZm8tPnBTdHJlYW0gPSBwU3RyZWFtOw0KKyAgICByZXR1cm4gcEluZm87DQorfQ0KK3N0YXRpYyB2b2lkIEZyZWVESUJpdG1hcChQUkVWSUVXM19ESUJJVE1BUCogcEluZm8pDQorew0KKyAgICBDR2RpcGx1c0V4dCYgR2RpcGx1c0V4dCA9ICgoQ1dpbjMyUGxhdGZvcm0qKUNGWF9HRU1vZHVsZTo6R2V0KCktPkdldFBsYXRmb3JtRGF0YSgpKS0+bV9HZGlwbHVzRXh0Ow0KKyAgICBDYWxsRnVuYyhHZGlwQml0bWFwVW5sb2NrQml0cykocEluZm8tPnBCaXRtYXAsIHBJbmZvLT5wQml0bWFwRGF0YSk7DQorICAgIENhbGxGdW5jKEdkaXBEaXNwb3NlSW1hZ2UpKHBJbmZvLT5wQml0bWFwKTsNCisgICAgRlhfRnJlZShwSW5mby0+cEJpdG1hcERhdGEpOw0KKyAgICBGWF9GcmVlKChMUEJZVEUpcEluZm8tPnBibWkpOw0KKyAgICBpZiAocEluZm8tPnBTdHJlYW0pIHsNCisgICAgICAgIHBJbmZvLT5wU3RyZWFtLT5SZWxlYXNlKCk7DQorICAgIH0NCisgICAgRlhfRnJlZShwSW5mbyk7DQorfQ0KK0NGWF9ESUJpdG1hcCogX0ZYX1dpbmRvd3NESUJfTG9hZEZyb21CdWYoQklUTUFQSU5GTyogcGJtaSwgTFBWT0lEIHBEYXRhLCBGWF9CT09MIGJBbHBoYSk7DQorQ0ZYX0RJQml0bWFwKiBDR2RpcGx1c0V4dDo6TG9hZERJQml0bWFwKFdJTkRJQl9PcGVuX0FyZ3NfIGFyZ3MpDQorew0KKyAgICBQUkVWSUVXM19ESUJJVE1BUCogcEluZm8gPSA6OkxvYWRESUJpdG1hcChhcmdzKTsNCisgICAgaWYgKHBJbmZvID09IE5VTEwpIHsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGludCBoZWlnaHQgPSBhYnMocEluZm8tPnBibWktPmJtaUhlYWRlci5iaUhlaWdodCk7DQorICAgIGludCB3aWR0aCA9IHBJbmZvLT5wYm1pLT5ibWlIZWFkZXIuYmlXaWR0aDsNCisgICAgaW50IGRlc3RfcGl0Y2ggPSAod2lkdGggKiBwSW5mby0+cGJtaS0+Ym1pSGVhZGVyLmJpQml0Q291bnQgKyAzMSkgLyAzMiAqIDQ7DQorICAgIExQQllURSBwRGF0YSA9IEZYX0FsbG9jKEJZVEUsIGRlc3RfcGl0Y2ggKiBoZWlnaHQpOw0KKyAgICBpZiAocERhdGEgPT0gTlVMTCkgew0KKyAgICAgICAgRnJlZURJQml0bWFwKHBJbmZvKTsNCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmIChkZXN0X3BpdGNoID09IHBJbmZvLT5TdHJpZGUpIHsNCisgICAgICAgIEZYU1lTX21lbWNweTMyKHBEYXRhLCBwSW5mby0+cFNjYW4wLCBkZXN0X3BpdGNoICogaGVpZ2h0KTsNCisgICAgfSBlbHNlIGZvciAoaW50IGkgPSAwOyBpIDwgaGVpZ2h0OyBpICsrKSB7DQorICAgICAgICAgICAgRlhTWVNfbWVtY3B5MzIocERhdGEgKyBkZXN0X3BpdGNoICogaSwgcEluZm8tPnBTY2FuMCArIHBJbmZvLT5TdHJpZGUgKiBpLCBkZXN0X3BpdGNoKTsNCisgICAgICAgIH0NCisgICAgQ0ZYX0RJQml0bWFwKiBwRElCaXRtYXAgPSBfRlhfV2luZG93c0RJQl9Mb2FkRnJvbUJ1ZihwSW5mby0+cGJtaSwgcERhdGEsIHBJbmZvLT5wYm1pLT5ibWlIZWFkZXIuYmlCaXRDb3VudCA9PSAzMik7DQorICAgIEZYX0ZyZWUocERhdGEpOw0KKyAgICBGcmVlRElCaXRtYXAocEluZm8pOw0KKyAgICByZXR1cm4gcERJQml0bWFwOw0KK30NCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL3dpbjMyL2Z4X3dpbjMyX3ByaW50LmNwcCBiL2NvcmUvc3JjL2Z4Z2Uvd2luMzIvZnhfd2luMzJfcHJpbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwOGM4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9meGdlL3dpbjMyL2Z4X3dpbjMyX3ByaW50LmNwcApAQCAtMCwwICsxLDQyNiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9nZS5oIg0KKyNpZiBfRlhfT1NfID09IF9GWF9XSU4zMl9ERVNLVE9QXyB8fCBfRlhfT1NfID09IF9GWF9XSU42NF8NCisjaW5jbHVkZSA8d2luZG93cy5oPg0KKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2Z4Z2UvZnhfZ2Vfd2luMzIuaCINCisjaW5jbHVkZSAid2luMzJfaW50LmgiDQorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZnhnZS9meF9mcmVldHlwZS5oIg0KKyNpbmNsdWRlICIuLi9nZS90ZXh0X2ludC5oIg0KKyNpbmNsdWRlICIuLi9kaWIvZGliX2ludC5oIg0KKyNkZWZpbmUgU0laRVRIUkVTSE9MRCAxMDAwDQorI2RlZmluZSBPVVRQVVRQU0xFTiA0MDk2DQorQ0dkaVByaW50ZXJEcml2ZXI6OkNHZGlQcmludGVyRHJpdmVyKEhEQyBoREMpIDogQ0dkaURldmljZURyaXZlcihoREMsIEZYRENfUFJJTlRFUikNCit7DQorICAgIG1fSG9yelNpemUgPSA6OkdldERldmljZUNhcHMobV9oREMsIEhPUlpTSVpFKTsNCisgICAgbV9WZXJ0U2l6ZSA9IDo6R2V0RGV2aWNlQ2FwcyhtX2hEQywgVkVSVFNJWkUpOw0KKyAgICBtX2JTdXBwb3J0Uk9QID0gVFJVRTsNCit9DQoraW50IENHZGlQcmludGVyRHJpdmVyOjpHZXREZXZpY2VDYXBzKGludCBjYXBzX2lkKQ0KK3sNCisgICAgaWYgKGNhcHNfaWQgPT0gRlhEQ19IT1JaX1NJWkUpIHsNCisgICAgICAgIHJldHVybiBtX0hvcnpTaXplOw0KKyAgICB9DQorICAgIGlmIChjYXBzX2lkID09IEZYRENfVkVSVF9TSVpFKSB7DQorICAgICAgICByZXR1cm4gbV9WZXJ0U2l6ZTsNCisgICAgfQ0KKyAgICByZXR1cm4gQ0dkaURldmljZURyaXZlcjo6R2V0RGV2aWNlQ2FwcyhjYXBzX2lkKTsNCit9DQorRlhfQk9PTCBDR2RpUHJpbnRlckRyaXZlcjo6U2V0RElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIEZYX0RXT1JEIGNvbG9yLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCwgaW50IGxlZnQsIGludCB0b3AsIGludCBibGVuZF90eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIGlmIChwU291cmNlLT5Jc0FscGhhTWFzaygpKSB7DQorICAgICAgICBGWF9SRUNUIGNsaXBfcmVjdChsZWZ0LCB0b3AsIGxlZnQgKyBwU3JjUmVjdC0+V2lkdGgoKSwgdG9wICsgcFNyY1JlY3QtPkhlaWdodCgpKTsNCisgICAgICAgIHJldHVybiBTdHJldGNoRElCaXRzKHBTb3VyY2UsIGNvbG9yLCBsZWZ0IC0gcFNyY1JlY3QtPmxlZnQsIHRvcCAtIHBTcmNSZWN0LT50b3AsIHBTb3VyY2UtPkdldFdpZHRoKCksIHBTb3VyY2UtPkdldEhlaWdodCgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsaXBfcmVjdCwgMCwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSwgRlhESUJfQkxFTkRfTk9STUFMKTsNCisgICAgfQ0KKyAgICBBU1NFUlQocFNvdXJjZSAhPSBOVUxMICYmICFwU291cmNlLT5Jc0FscGhhTWFzaygpICYmIHBTcmNSZWN0ICE9IE5VTEwpOw0KKyAgICBBU1NFUlQoYmxlbmRfdHlwZSA9PSBGWERJQl9CTEVORF9OT1JNQUwpOw0KKyAgICBpZiAocFNvdXJjZS0+SGFzQWxwaGEoKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9ESUJFeHRyYWN0b3IgdGVtcChwU291cmNlKTsNCisgICAgQ0ZYX0RJQml0bWFwKiBwQml0bWFwID0gdGVtcDsNCisgICAgaWYgKHBCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIHJldHVybiBHRElfU2V0RElCaXRzKHBCaXRtYXAsIHBTcmNSZWN0LCBsZWZ0LCB0b3AsIHBJY2NUcmFuc2Zvcm0pOw0KK30NCitGWF9CT09MIENHZGlQcmludGVyRHJpdmVyOjpTdHJldGNoRElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIEZYX0RXT1JEIGNvbG9yLCBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsDQorICAgICAgICBpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0LCBjb25zdCBGWF9SRUNUKiBwQ2xpcFJlY3QsIEZYX0RXT1JEIGZsYWdzLA0KKyAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKQ0KK3sNCisgICAgaWYgKHBTb3VyY2UtPklzQWxwaGFNYXNrKCkpIHsNCisgICAgICAgIGludCBhbHBoYSA9IEZYR0VURkxBR19DT0xPUlRZUEUoYWxwaGFfZmxhZykgPyBGWEdFVEZMQUdfQUxQSEFfRklMTChhbHBoYV9mbGFnKSA6IEZYQVJHQl9BKGNvbG9yKTsNCisgICAgICAgIGlmIChwU291cmNlLT5HZXRCUFAoKSAhPSAxIHx8IGFscGhhICE9IDI1NSB8fCAhbV9iU3VwcG9ydFJPUCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChkZXN0X3dpZHRoIDwgMCB8fCBkZXN0X2hlaWdodCA8IDApIHsNCisgICAgICAgICAgICBDRlhfRElCaXRtYXAqIHBGbGlwcGVkID0gcFNvdXJjZS0+RmxpcEltYWdlKGRlc3Rfd2lkdGggPCAwLCBkZXN0X2hlaWdodCA8IDApOw0KKyAgICAgICAgICAgIGlmIChwRmxpcHBlZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGRlc3Rfd2lkdGggPCAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3RfbGVmdCArPSBkZXN0X3dpZHRoOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoZGVzdF9oZWlnaHQgPCAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3RfdG9wICs9IGRlc3RfaGVpZ2h0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9CT09MIHJldCA9IEdESV9TdHJldGNoQml0TWFzayhwRmxpcHBlZCwgZGVzdF9sZWZ0LCBkZXN0X3RvcCwgYWJzKGRlc3Rfd2lkdGgpLCBhYnMoZGVzdF9oZWlnaHQpLCBjb2xvciwgZmxhZ3MsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICAgICAgICAgIGRlbGV0ZSBwRmxpcHBlZDsNCisgICAgICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICAgICAgfQ0KKyAgICAgICAgQ0ZYX0RJQkV4dHJhY3RvciB0ZW1wKHBTb3VyY2UpOw0KKyAgICAgICAgQ0ZYX0RJQml0bWFwKiBwQml0bWFwID0gdGVtcDsNCisgICAgICAgIGlmIChwQml0bWFwID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gR0RJX1N0cmV0Y2hCaXRNYXNrKHBCaXRtYXAsIGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBjb2xvciwgZmxhZ3MsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgQVNTRVJUKHBTb3VyY2UgIT0gTlVMTCk7DQorICAgICAgICBpZiAocFNvdXJjZS0+SGFzQWxwaGEoKSkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIGlmIChkZXN0X3dpZHRoIDwgMCB8fCBkZXN0X2hlaWdodCA8IDApIHsNCisgICAgICAgICAgICBDRlhfRElCaXRtYXAqIHBGbGlwcGVkID0gcFNvdXJjZS0+RmxpcEltYWdlKGRlc3Rfd2lkdGggPCAwLCBkZXN0X2hlaWdodCA8IDApOw0KKyAgICAgICAgICAgIGlmIChwRmxpcHBlZCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGRlc3Rfd2lkdGggPCAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3RfbGVmdCArPSBkZXN0X3dpZHRoOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoZGVzdF9oZWlnaHQgPCAwKSB7DQorICAgICAgICAgICAgICAgIGRlc3RfdG9wICs9IGRlc3RfaGVpZ2h0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBGWF9CT09MIHJldCA9IEdESV9TdHJldGNoRElCaXRzKHBGbGlwcGVkLCBkZXN0X2xlZnQsIGRlc3RfdG9wLCBhYnMoZGVzdF93aWR0aCksIGFicyhkZXN0X2hlaWdodCksIGZsYWdzLCBwSWNjVHJhbnNmb3JtKTsNCisgICAgICAgICAgICBkZWxldGUgcEZsaXBwZWQ7DQorICAgICAgICAgICAgcmV0dXJuIHJldDsNCisgICAgICAgIH0NCisgICAgICAgIENGWF9ESUJFeHRyYWN0b3IgdGVtcChwU291cmNlKTsNCisgICAgICAgIENGWF9ESUJpdG1hcCogcEJpdG1hcCA9IHRlbXA7DQorICAgICAgICBpZiAocEJpdG1hcCA9PSBOVUxMKSB7DQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEdESV9TdHJldGNoRElCaXRzKHBCaXRtYXAsIGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBmbGFncywgcEljY1RyYW5zZm9ybSk7DQorICAgIH0NCit9DQorc3RhdGljIENGWF9ESUJpdG1hcCogVHJhbnNmb3JtMWJwcEJpdG1hcChjb25zdCBDRlhfRElCU291cmNlKiBwU3JjLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwRGVzdE1hdHJpeCkNCit7DQorICAgIEFTU0VSVChwU3JjLT5HZXRGb3JtYXQoKSA9PSBGWERJQl8xYnBwUmdiIHx8IHBTcmMtPkdldEZvcm1hdCgpID09IEZYRElCXzFicHBNYXNrIHx8IHBTcmMtPkdldEZvcm1hdCgpID09IEZYRElCXzFicHBDbXlrKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCB1bml0X3JlY3QgPSBwRGVzdE1hdHJpeC0+R2V0VW5pdFJlY3QoKTsNCisgICAgRlhfUkVDVCBmdWxsX3JlY3QgPSB1bml0X3JlY3QuR2V0T3V0dGVyUmVjdCgpOw0KKyAgICBpbnQgZnVsbF9sZWZ0ID0gZnVsbF9yZWN0LmxlZnQ7DQorICAgIGludCBmdWxsX3RvcCA9IGZ1bGxfcmVjdC50b3A7DQorICAgIENGWF9ESUJFeHRyYWN0b3Igc3JjX2JpdG1hcChwU3JjKTsNCisgICAgQ0ZYX0RJQml0bWFwKiBwU3JjQml0bWFwID0gc3JjX2JpdG1hcDsNCisgICAgaWYgKHBTcmNCaXRtYXAgPT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgaW50IHNyY193aWR0aCA9IHBTcmNCaXRtYXAtPkdldFdpZHRoKCksIHNyY19oZWlnaHQgPSBwU3JjQml0bWFwLT5HZXRIZWlnaHQoKTsNCisgICAgRlhfTFBCWVRFIHNyY19idWYgPSBwU3JjQml0bWFwLT5HZXRCdWZmZXIoKTsNCisgICAgRlhfRFdPUkQgc3JjX3BpdGNoID0gcFNyY0JpdG1hcC0+R2V0UGl0Y2goKTsNCisgICAgRlhfRkxPQVQgZGVzdF9hcmVhID0gcERlc3RNYXRyaXgtPkdldFVuaXRBcmVhKCk7DQorICAgIEZYX0ZMT0FUIGFyZWFfc2NhbGUgPSBGWFNZU19EaXYoKEZYX0ZMT0FUKShzcmNfd2lkdGggKiBzcmNfaGVpZ2h0KSwgZGVzdF9hcmVhKTsNCisgICAgRlhfRkxPQVQgc2l6ZV9zY2FsZSA9IEZYU1lTX3NxcnQoYXJlYV9zY2FsZSk7DQorICAgIENGWF9BZmZpbmVNYXRyaXggYWRqdXN0ZWRfbWF0cml4KCpwRGVzdE1hdHJpeCk7DQorICAgIGFkanVzdGVkX21hdHJpeC5TY2FsZShzaXplX3NjYWxlLCBzaXplX3NjYWxlKTsNCisgICAgQ0ZYX0Zsb2F0UmVjdCByZXN1bHRfcmVjdF9mID0gYWRqdXN0ZWRfbWF0cml4LkdldFVuaXRSZWN0KCk7DQorICAgIEZYX1JFQ1QgcmVzdWx0X3JlY3QgPSByZXN1bHRfcmVjdF9mLkdldE91dHRlclJlY3QoKTsNCisgICAgQ0ZYX0FmZmluZU1hdHJpeCBzcmMycmVzdWx0Ow0KKyAgICBzcmMycmVzdWx0LmUgPSBhZGp1c3RlZF9tYXRyaXguYyArIGFkanVzdGVkX21hdHJpeC5lOw0KKyAgICBzcmMycmVzdWx0LmYgPSBhZGp1c3RlZF9tYXRyaXguZCArIGFkanVzdGVkX21hdHJpeC5mOw0KKyAgICBzcmMycmVzdWx0LmEgPSBhZGp1c3RlZF9tYXRyaXguYSAvIHBTcmNCaXRtYXAtPkdldFdpZHRoKCk7DQorICAgIHNyYzJyZXN1bHQuYiA9IGFkanVzdGVkX21hdHJpeC5iIC8gcFNyY0JpdG1hcC0+R2V0V2lkdGgoKTsNCisgICAgc3JjMnJlc3VsdC5jID0gLWFkanVzdGVkX21hdHJpeC5jIC8gcFNyY0JpdG1hcC0+R2V0SGVpZ2h0KCk7DQorICAgIHNyYzJyZXN1bHQuZCA9IC1hZGp1c3RlZF9tYXRyaXguZCAvIHBTcmNCaXRtYXAtPkdldEhlaWdodCgpOw0KKyAgICBzcmMycmVzdWx0LlRyYW5zbGF0ZUkoLXJlc3VsdF9yZWN0LmxlZnQsIC1yZXN1bHRfcmVjdC50b3ApOw0KKyAgICBDRlhfQWZmaW5lTWF0cml4IHJlc3VsdDJzcmM7DQorICAgIHJlc3VsdDJzcmMuU2V0UmV2ZXJzZShzcmMycmVzdWx0KTsNCisgICAgQ1BERl9GaXhlZE1hdHJpeCByZXN1bHQyc3JjX2ZpeChyZXN1bHQyc3JjLCA4KTsNCisgICAgaW50IHJlc3VsdF93aWR0aCA9IHJlc3VsdF9yZWN0LldpZHRoKCk7DQorICAgIGludCByZXN1bHRfaGVpZ2h0ID0gcmVzdWx0X3JlY3QuSGVpZ2h0KCk7DQorICAgIENGWF9ESUJpdG1hcCogcFRlbXBCaXRtYXAgPSBGWF9ORVcgQ0ZYX0RJQml0bWFwOw0KKyAgICBpZiAoIXBUZW1wQml0bWFwKSB7DQorICAgICAgICBpZiAocFNyY0JpdG1hcCAhPSBzcmNfYml0bWFwKSB7DQorICAgICAgICAgICAgZGVsZXRlIHBTcmNCaXRtYXA7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICBpZiAoIXBUZW1wQml0bWFwLT5DcmVhdGUocmVzdWx0X3dpZHRoLCByZXN1bHRfaGVpZ2h0LCBwU3JjLT5HZXRGb3JtYXQoKSkpIHsNCisgICAgICAgIGRlbGV0ZSBwVGVtcEJpdG1hcDsNCisgICAgICAgIGlmIChwU3JjQml0bWFwICE9IHNyY19iaXRtYXApIHsNCisgICAgICAgICAgICBkZWxldGUgcFNyY0JpdG1hcDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICAgIHBUZW1wQml0bWFwLT5Db3B5UGFsZXR0ZShwU3JjLT5HZXRQYWxldHRlKCkpOw0KKyAgICBGWF9MUEJZVEUgZGVzdF9idWYgPSBwVGVtcEJpdG1hcC0+R2V0QnVmZmVyKCk7DQorICAgIGludCBkZXN0X3BpdGNoID0gcFRlbXBCaXRtYXAtPkdldFBpdGNoKCk7DQorICAgIEZYU1lTX21lbXNldDgoZGVzdF9idWYsIHBTcmMtPklzQWxwaGFNYXNrKCkgPyAwIDogMHhmZiwgZGVzdF9waXRjaCAqIHJlc3VsdF9oZWlnaHQpOw0KKyAgICBpZiAocFNyY0JpdG1hcC0+SXNBbHBoYU1hc2soKSkgew0KKyAgICAgICAgZm9yIChpbnQgZGVzdF95ID0gMDsgZGVzdF95IDwgcmVzdWx0X2hlaWdodDsgZGVzdF95ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgZGVzdF95ICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICBmb3IgKGludCBkZXN0X3ggPSAwOyBkZXN0X3ggPCByZXN1bHRfd2lkdGg7IGRlc3RfeCArKykgew0KKyAgICAgICAgICAgICAgICBpbnQgc3JjX3gsIHNyY195Ow0KKyAgICAgICAgICAgICAgICByZXN1bHQyc3JjX2ZpeC5UcmFuc2Zvcm0oZGVzdF94LCBkZXN0X3ksIHNyY194LCBzcmNfeSk7DQorICAgICAgICAgICAgICAgIGlmIChzcmNfeCA8IDAgfHwgc3JjX3ggPj0gc3JjX3dpZHRoIHx8IHNyY195IDwgMCB8fCBzcmNfeSA+PSBzcmNfaGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoISgoc3JjX2J1ZiArIHNyY19waXRjaCAqIHNyY195KVtzcmNfeCAvIDhdICYgKDEgPDwgKDcgLSBzcmNfeCAlIDgpKSkpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbltkZXN0X3ggLyA4XSB8PSAxIDw8ICg3IC0gZGVzdF94ICUgOCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZm9yIChpbnQgZGVzdF95ID0gMDsgZGVzdF95IDwgcmVzdWx0X2hlaWdodDsgZGVzdF95ICsrKSB7DQorICAgICAgICAgICAgRlhfTFBCWVRFIGRlc3Rfc2NhbiA9IGRlc3RfYnVmICsgZGVzdF95ICogZGVzdF9waXRjaDsNCisgICAgICAgICAgICBmb3IgKGludCBkZXN0X3ggPSAwOyBkZXN0X3ggPCByZXN1bHRfd2lkdGg7IGRlc3RfeCArKykgew0KKyAgICAgICAgICAgICAgICBpbnQgc3JjX3gsIHNyY195Ow0KKyAgICAgICAgICAgICAgICByZXN1bHQyc3JjX2ZpeC5UcmFuc2Zvcm0oZGVzdF94LCBkZXN0X3ksIHNyY194LCBzcmNfeSk7DQorICAgICAgICAgICAgICAgIGlmIChzcmNfeCA8IDAgfHwgc3JjX3ggPj0gc3JjX3dpZHRoIHx8IHNyY195IDwgMCB8fCBzcmNfeSA+PSBzcmNfaGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoKHNyY19idWYgKyBzcmNfcGl0Y2ggKiBzcmNfeSlbc3JjX3ggLyA4XSAmICgxIDw8ICg3IC0gc3JjX3ggJSA4KSkpIHsNCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGRlc3Rfc2NhbltkZXN0X3ggLyA4XSAmPSB+KDEgPDwgKDcgLSBkZXN0X3ggJSA4KSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIGlmIChwU3JjQml0bWFwICE9IHNyY19iaXRtYXApIHsNCisgICAgICAgIGRlbGV0ZSBwU3JjQml0bWFwOw0KKyAgICB9DQorICAgIHJldHVybiBwVGVtcEJpdG1hcDsNCit9DQorRlhfQk9PTAlDR2RpUHJpbnRlckRyaXZlcjo6U3RhcnRESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcFNvdXJjZSwgaW50IGJpdG1hcF9hbHBoYSwgRlhfRFdPUkQgY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgcmVuZGVyX2ZsYWdzLCBGWF9MUFZPSUQmIGhhbmRsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpDQorew0KKyAgICBpZiAoYml0bWFwX2FscGhhIDwgMjU1IHx8IHBTb3VyY2UtPkhhc0FscGhhKCkgfHwgKHBTb3VyY2UtPklzQWxwaGFNYXNrKCkgJiYgKHBTb3VyY2UtPkdldEJQUCgpICE9IDEgfHwgIW1fYlN1cHBvcnRST1ApKSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIENGWF9GbG9hdFJlY3QgdW5pdF9yZWN0ID0gcE1hdHJpeC0+R2V0VW5pdFJlY3QoKTsNCisgICAgRlhfUkVDVCBmdWxsX3JlY3QgPSB1bml0X3JlY3QuR2V0T3V0dGVyUmVjdCgpOw0KKyAgICBpZiAoRlhTWVNfZmFicyhwTWF0cml4LT5iKSA8IDAuNWYgJiYgcE1hdHJpeC0+YSAhPSAwICYmIEZYU1lTX2ZhYnMocE1hdHJpeC0+YykgPCAwLjVmICYmIHBNYXRyaXgtPmQgIT0gMCkgew0KKyAgICAgICAgRlhfQk9PTCBiRmxpcFggPSBwTWF0cml4LT5hIDwgMDsNCisgICAgICAgIEZYX0JPT0wgYkZsaXBZID0gcE1hdHJpeC0+ZCA+IDA7DQorICAgICAgICByZXR1cm4gU3RyZXRjaERJQml0cyhwU291cmNlLCBjb2xvciwgYkZsaXBYID8gZnVsbF9yZWN0LnJpZ2h0IDogZnVsbF9yZWN0LmxlZnQsIGJGbGlwWSA/IGZ1bGxfcmVjdC5ib3R0b20gOiBmdWxsX3JlY3QudG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYkZsaXBYID8gLWZ1bGxfcmVjdC5XaWR0aCgpIDogZnVsbF9yZWN0LldpZHRoKCksIGJGbGlwWSA/IC1mdWxsX3JlY3QuSGVpZ2h0KCkgOiBmdWxsX3JlY3QuSGVpZ2h0KCksIE5VTEwsIDAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtLCBibGVuZF90eXBlKTsNCisgICAgfQ0KKyAgICBpZiAoRlhTWVNfZmFicyhwTWF0cml4LT5hKSA8IDAuNWYgJiYgRlhTWVNfZmFicyhwTWF0cml4LT5kKSA8IDAuNWYpIHsNCisgICAgICAgIENGWF9ESUJpdG1hcCogcFRyYW5zZm9ybWVkID0gcFNvdXJjZS0+U3dhcFhZKHBNYXRyaXgtPmMgPiAwLCBwTWF0cml4LT5iIDwgMCk7DQorICAgICAgICBpZiAocFRyYW5zZm9ybWVkID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgICAgICB9DQorICAgICAgICBGWF9CT09MIHJldCA9IFN0cmV0Y2hESUJpdHMocFRyYW5zZm9ybWVkLCBjb2xvciwgZnVsbF9yZWN0LmxlZnQsIGZ1bGxfcmVjdC50b3AsIGZ1bGxfcmVjdC5XaWR0aCgpLCBmdWxsX3JlY3QuSGVpZ2h0KCksIE5VTEwsIDAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSwgYmxlbmRfdHlwZSk7DQorICAgICAgICBkZWxldGUgcFRyYW5zZm9ybWVkOw0KKyAgICAgICAgcmV0dXJuIHJldDsNCisgICAgfQ0KKyAgICBpZiAocFNvdXJjZS0+R2V0QlBQKCkgPT0gMSkgew0KKyAgICAgICAgQ0ZYX0RJQml0bWFwKiBwVHJhbnNmb3JtZWQgPSBUcmFuc2Zvcm0xYnBwQml0bWFwKHBTb3VyY2UsIHBNYXRyaXgpOw0KKyAgICAgICAgaWYgKHBJY2NUcmFuc2Zvcm0gPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICAgIFNhdmVTdGF0ZSgpOw0KKyAgICAgICAgQ0ZYX1BhdGhEYXRhIHBhdGg7DQorICAgICAgICBwYXRoLkFwcGVuZFJlY3QoMCwgMCwgMS4wZiwgMS4wZik7DQorICAgICAgICBTZXRDbGlwX1BhdGhGaWxsKCZwYXRoLCBwTWF0cml4LCBXSU5ESU5HKTsNCisgICAgICAgIEZYX0JPT0wgcmV0ID0gU3RyZXRjaERJQml0cyhwVHJhbnNmb3JtZWQsIGNvbG9yLCBmdWxsX3JlY3QubGVmdCwgZnVsbF9yZWN0LnRvcCwgZnVsbF9yZWN0LldpZHRoKCksIGZ1bGxfcmVjdC5IZWlnaHQoKSwgTlVMTCwgMCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtLCBibGVuZF90eXBlKTsNCisgICAgICAgIFJlc3RvcmVTdGF0ZSgpOw0KKyAgICAgICAgZGVsZXRlIHBUcmFuc2Zvcm1lZDsNCisgICAgICAgIGhhbmRsZSA9IE5VTEw7DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorICAgIHJldHVybiBGQUxTRTsNCit9DQorQ1BTT3V0cHV0OjpDUFNPdXRwdXQoSERDIGhEQykNCit7DQorICAgIG1faERDID0gaERDOw0KKyAgICBtX3BCdWYgPSBOVUxMOw0KK30NCitDUFNPdXRwdXQ6On5DUFNPdXRwdXQoKQ0KK3sNCisgICAgaWYgKG1fcEJ1Zikgew0KKyAgICAgICAgRlhfRnJlZShtX3BCdWYpOw0KKyAgICB9DQorfQ0KK3ZvaWQgQ1BTT3V0cHV0OjpJbml0KCkNCit7DQorICAgIG1fcEJ1ZiA9IEZYX0FsbG9jKEZYX0NIQVIsIDEwMjYpOw0KK30NCit2b2lkIENQU091dHB1dDo6T3V0cHV0UFMoRlhfTFBDU1RSIHN0cmluZywgaW50IGxlbikNCit7DQorICAgIGlmIChsZW4gPCAwKSB7DQorICAgICAgICBsZW4gPSAoaW50KUZYU1lTX3N0cmxlbihzdHJpbmcpOw0KKyAgICB9DQorICAgIGludCBzZW50X2xlbiA9IDA7DQorICAgIHdoaWxlIChsZW4gPiAwKSB7DQorICAgICAgICBpbnQgc2VuZF9sZW4gPSBsZW4gPiAxMDI0ID8gMTAyNCA6IGxlbjsNCisgICAgICAgICooRlhfV09SRCopbV9wQnVmID0gc2VuZF9sZW47DQorICAgICAgICBGWFNZU19tZW1jcHkobV9wQnVmICsgMiwgc3RyaW5nICsgc2VudF9sZW4sIHNlbmRfbGVuKTsNCisgICAgICAgIGludCByZXQgPSBFeHRFc2NhcGUobV9oREMsIFBBU1NUSFJPVUdILCBzZW5kX2xlbiArIDIsIG1fcEJ1ZiwgMCwgTlVMTCk7DQorICAgICAgICBzZW50X2xlbiArPSBzZW5kX2xlbjsNCisgICAgICAgIGxlbiAtPSBzZW5kX2xlbjsNCisgICAgfQ0KK30NCitDUFNQcmludGVyRHJpdmVyOjpDUFNQcmludGVyRHJpdmVyKCkNCit7DQorICAgIG1fcFBTT3V0cHV0ID0gTlVMTDsNCisgICAgbV9iQ215a091dHB1dCA9IEZBTFNFOw0KK30NCitDUFNQcmludGVyRHJpdmVyOjp+Q1BTUHJpbnRlckRyaXZlcigpDQorew0KKyAgICBFbmRSZW5kZXJpbmcoKTsNCisgICAgaWYgKG1fcFBTT3V0cHV0KSB7DQorICAgICAgICBkZWxldGUgbV9wUFNPdXRwdXQ7DQorICAgIH0NCit9DQorRlhfQk9PTCBDUFNQcmludGVyRHJpdmVyOjpJbml0KEhEQyBoREMsIGludCBwc2xldmVsLCBGWF9CT09MIGJDbXlrT3V0cHV0KQ0KK3sNCisgICAgbV9oREMgPSBoREM7DQorICAgIG1fSG9yelNpemUgPSA6OkdldERldmljZUNhcHMobV9oREMsIEhPUlpTSVpFKTsNCisgICAgbV9WZXJ0U2l6ZSA9IDo6R2V0RGV2aWNlQ2FwcyhtX2hEQywgVkVSVFNJWkUpOw0KKyAgICBtX1dpZHRoID0gOjpHZXREZXZpY2VDYXBzKG1faERDLCBIT1JaUkVTKTsNCisgICAgbV9IZWlnaHQgPSA6OkdldERldmljZUNhcHMobV9oREMsIFZFUlRSRVMpOw0KKyAgICBtX25CaXRzUGVyUGl4ZWwgPSA6OkdldERldmljZUNhcHMobV9oREMsIEJJVFNQSVhFTCk7DQorICAgIG1fcFBTT3V0cHV0ID0gRlhfTkVXIENQU091dHB1dChoREMpOw0KKyAgICBpZiAoIW1fcFBTT3V0cHV0KSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgKChDUFNPdXRwdXQqKW1fcFBTT3V0cHV0KS0+SW5pdCgpOw0KKyAgICBtX1BTUmVuZGVyZXIuSW5pdChtX3BQU091dHB1dCwgcHNsZXZlbCwgbV9XaWR0aCwgbV9IZWlnaHQsIGJDbXlrT3V0cHV0KTsNCisgICAgbV9iQ215a091dHB1dCA9IGJDbXlrT3V0cHV0Ow0KKyAgICBIUkdOIGhSZ24gPSA6OkNyZWF0ZVJlY3RSZ24oMCwgMCwgMSwgMSk7DQorICAgIGludCByZXQgPSA6OkdldENsaXBSZ24oaERDLCBoUmduKTsNCisgICAgaWYgKHJldCA9PSAxKSB7DQorICAgICAgICByZXQgPSA6OkdldFJlZ2lvbkRhdGEoaFJnbiwgMCwgTlVMTCk7DQorICAgICAgICBpZiAocmV0KSB7DQorICAgICAgICAgICAgUkdOREFUQSogcERhdGEgPSAoUkdOREFUQSopRlhfQWxsb2MoRlhfQllURSwgcmV0KTsNCisgICAgICAgICAgICBpZiAoIXBEYXRhKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0ID0gOjpHZXRSZWdpb25EYXRhKGhSZ24sIHJldCwgcERhdGEpOw0KKyAgICAgICAgICAgIGlmIChyZXQpIHsNCisgICAgICAgICAgICAgICAgQ0ZYX1BhdGhEYXRhIHBhdGg7DQorICAgICAgICAgICAgICAgIHBhdGguQWxsb2NQb2ludENvdW50KHBEYXRhLT5yZGgubkNvdW50ICogNSk7DQorICAgICAgICAgICAgICAgIGZvciAoRlhfRFdPUkQgaSA9IDA7IGkgPCBwRGF0YS0+cmRoLm5Db3VudDsgaSArKykgew0KKyAgICAgICAgICAgICAgICAgICAgUkVDVCogcFJlY3QgPSAoUkVDVCopKHBEYXRhLT5CdWZmZXIgKyBwRGF0YS0+cmRoLm5SZ25TaXplICogaSk7DQorICAgICAgICAgICAgICAgICAgICBwYXRoLkFwcGVuZFJlY3QoKEZYX0ZMT0FUKXBSZWN0LT5sZWZ0LCAoRlhfRkxPQVQpcFJlY3QtPmJvdHRvbSwgKEZYX0ZMT0FUKXBSZWN0LT5yaWdodCwgKEZYX0ZMT0FUKXBSZWN0LT50b3ApOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1fUFNSZW5kZXJlci5TZXRDbGlwX1BhdGhGaWxsKCZwYXRoLCBOVUxMLCBGWEZJTExfV0lORElORyk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIEZYX0ZyZWUocERhdGEpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIDo6RGVsZXRlT2JqZWN0KGhSZ24pOw0KKyAgICByZXR1cm4gVFJVRTsNCit9DQoraW50IENQU1ByaW50ZXJEcml2ZXI6OkdldERldmljZUNhcHMoaW50IGNhcHNfaWQpDQorew0KKyAgICBzd2l0Y2ggKGNhcHNfaWQpIHsNCisgICAgICAgIGNhc2UgRlhEQ19ERVZJQ0VfQ0xBU1M6DQorICAgICAgICAgICAgcmV0dXJuIEZYRENfUFJJTlRFUjsNCisgICAgICAgIGNhc2UgRlhEQ19QSVhFTF9XSURUSDoNCisgICAgICAgICAgICByZXR1cm4gbV9XaWR0aDsNCisgICAgICAgIGNhc2UgRlhEQ19QSVhFTF9IRUlHSFQ6DQorICAgICAgICAgICAgcmV0dXJuIG1fSGVpZ2h0Ow0KKyAgICAgICAgY2FzZSBGWERDX0JJVFNfUElYRUw6DQorICAgICAgICAgICAgcmV0dXJuIG1fbkJpdHNQZXJQaXhlbDsNCisgICAgICAgIGNhc2UgRlhEQ19SRU5ERVJfQ0FQUzoNCisgICAgICAgICAgICByZXR1cm4gbV9iQ215a091dHB1dCA/IEZYUkNfQklUX01BU0sgfCBGWFJDX0NNWUtfT1VUUFVUIDogRlhSQ19CSVRfTUFTSzsNCisgICAgICAgIGNhc2UgRlhEQ19IT1JaX1NJWkU6DQorICAgICAgICAgICAgcmV0dXJuIG1fSG9yelNpemU7DQorICAgICAgICBjYXNlIEZYRENfVkVSVF9TSVpFOg0KKyAgICAgICAgICAgIHJldHVybiBtX1ZlcnRTaXplOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCitGWF9CT09MIENQU1ByaW50ZXJEcml2ZXI6OlN0YXJ0UmVuZGVyaW5nKCkNCit7DQorICAgIHJldHVybiBtX1BTUmVuZGVyZXIuU3RhcnRSZW5kZXJpbmcoKTsNCit9DQordm9pZCBDUFNQcmludGVyRHJpdmVyOjpFbmRSZW5kZXJpbmcoKQ0KK3sNCisgICAgbV9QU1JlbmRlcmVyLkVuZFJlbmRlcmluZygpOw0KK30NCit2b2lkIENQU1ByaW50ZXJEcml2ZXI6OlNhdmVTdGF0ZSgpDQorew0KKyAgICBtX1BTUmVuZGVyZXIuU2F2ZVN0YXRlKCk7DQorfQ0KK3ZvaWQgQ1BTUHJpbnRlckRyaXZlcjo6UmVzdG9yZVN0YXRlKEZYX0JPT0wgYktlZXBTYXZlZCkNCit7DQorICAgIG1fUFNSZW5kZXJlci5SZXN0b3JlU3RhdGUoYktlZXBTYXZlZCk7DQorfQ0KK0ZYX0JPT0wJQ1BTUHJpbnRlckRyaXZlcjo6U2V0Q2xpcF9QYXRoRmlsbChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICBpbnQgZmlsbF9tb2RlKQ0KK3sNCisgICAgbV9QU1JlbmRlcmVyLlNldENsaXBfUGF0aEZpbGwocFBhdGhEYXRhLCBwT2JqZWN0MkRldmljZSwgZmlsbF9tb2RlKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wJQ1BTUHJpbnRlckRyaXZlcjo6U2V0Q2xpcF9QYXRoU3Ryb2tlKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLA0KKyAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlKQ0KK3sNCisgICAgbV9QU1JlbmRlcmVyLlNldENsaXBfUGF0aFN0cm9rZShwUGF0aERhdGEsIHBPYmplY3QyRGV2aWNlLCBwR3JhcGhTdGF0ZSk7DQorICAgIHJldHVybiBUUlVFOw0KK30NCitGWF9CT09MCUNQU1ByaW50ZXJEcml2ZXI6OkRyYXdQYXRoKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlLCBGWF9BUkdCIGZpbGxfY29sb3IsIEZYX0FSR0Igc3Ryb2tlX2NvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbGxfbW9kZSwgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKQ0KK3sNCisgICAgaWYgKGJsZW5kX3R5cGUgIT0gRlhESUJfQkxFTkRfTk9STUFMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIG1fUFNSZW5kZXJlci5EcmF3UGF0aChwUGF0aERhdGEsIHBPYmplY3QyRGV2aWNlLCBwR3JhcGhTdGF0ZSwgZmlsbF9jb2xvciwgc3Ryb2tlX2NvbG9yLCBmaWxsX21vZGUgJiAzLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKTsNCit9DQorRlhfQk9PTCBDUFNQcmludGVyRHJpdmVyOjpHZXRDbGlwQm94KEZYX1JFQ1QqIHBSZWN0KQ0KK3sNCisgICAgKnBSZWN0ID0gbV9QU1JlbmRlcmVyLkdldENsaXBCb3goKTsNCisgICAgcmV0dXJuIFRSVUU7DQorfQ0KK0ZYX0JPT0wgQ1BTUHJpbnRlckRyaXZlcjo6U2V0RElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIEZYX0RXT1JEIGNvbG9yLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCwgaW50IGxlZnQsIGludCB0b3AsIGludCBibGVuZF90eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtKQ0KK3sNCisgICAgaWYgKGJsZW5kX3R5cGUgIT0gRlhESUJfQkxFTkRfTk9STUFMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgcmV0dXJuIG1fUFNSZW5kZXJlci5TZXRESUJpdHMocEJpdG1hcCwgY29sb3IsIGxlZnQsIHRvcCwgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorfQ0KK0ZYX0JPT0wgQ1BTUHJpbnRlckRyaXZlcjo6U3RyZXRjaERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBGWF9EV09SRCBjb2xvciwgaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0LCBjb25zdCBGWF9SRUNUKiBwQ2xpcFJlY3QsIEZYX0RXT1JEIGZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpDQorew0KKyAgICBpZiAoYmxlbmRfdHlwZSAhPSBGWERJQl9CTEVORF9OT1JNQUwpIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICByZXR1cm4gbV9QU1JlbmRlcmVyLlN0cmV0Y2hESUJpdHMocEJpdG1hcCwgY29sb3IsIGRlc3RfbGVmdCwgZGVzdF90b3AsIGRlc3Rfd2lkdGgsIGRlc3RfaGVpZ2h0LCBmbGFncywgYWxwaGFfZmxhZywgcEljY1RyYW5zZm9ybSk7DQorfQ0KK0ZYX0JPT0wJQ1BTUHJpbnRlckRyaXZlcjo6U3RhcnRESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgaW50IGJpdG1hcF9hbHBoYSwgRlhfRFdPUkQgY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBGWF9EV09SRCByZW5kZXJfZmxhZ3MsIEZYX0xQVk9JRCYgaGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKQ0KK3sNCisgICAgaWYgKGJsZW5kX3R5cGUgIT0gRlhESUJfQkxFTkRfTk9STUFMKSB7DQorICAgICAgICByZXR1cm4gRkFMU0U7DQorICAgIH0NCisgICAgaWYgKGJpdG1hcF9hbHBoYSA8IDI1NSkgew0KKyAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAgICB9DQorICAgIGhhbmRsZSA9IE5VTEw7DQorICAgIHJldHVybiBtX1BTUmVuZGVyZXIuRHJhd0RJQml0cyhwQml0bWFwLCBjb2xvciwgcE1hdHJpeCwgcmVuZGVyX2ZsYWdzLCBhbHBoYV9mbGFnLCBwSWNjVHJhbnNmb3JtKTsNCit9DQorRlhfQk9PTAlDUFNQcmludGVyRHJpdmVyOjpEcmF3RGV2aWNlVGV4dChpbnQgbkNoYXJzLCBjb25zdCBGWFRFWFRfQ0hBUlBPUyogcENoYXJQb3MsIENGWF9Gb250KiBwRm9udCwNCisgICAgICAgIENGWF9Gb250Q2FjaGUqIHBDYWNoZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsIEZYX0ZMT0FUIGZvbnRfc2l6ZSwgRlhfRFdPUkQgY29sb3IsDQorICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSkNCit7DQorICAgIHJldHVybiBtX1BTUmVuZGVyZXIuRHJhd1RleHQobkNoYXJzLCBwQ2hhclBvcywgcEZvbnQsIHBDYWNoZSwgcE9iamVjdDJEZXZpY2UsIGZvbnRfc2l6ZSwgY29sb3IsIGFscGhhX2ZsYWcsIHBJY2NUcmFuc2Zvcm0pOw0KK30NCisjZW5kaWYNCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9meGdlL3dpbjMyL3dpbjMyX2ludC5oIGIvY29yZS9zcmMvZnhnZS93aW4zMi93aW4zMl9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjk0MGVkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvZnhnZS93aW4zMi93aW4zMl9pbnQuaApAQCAtMCwwICsxLDIzOCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorIA0KKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tDQorDQorc3RydWN0ICBXSU5ESUJfT3Blbl9BcmdzXzsNCitjbGFzcyBDR2RpcGx1c0V4dA0KK3sNCitwdWJsaWM6DQorICAgIENHZGlwbHVzRXh0KCk7DQorICAgIH5DR2RpcGx1c0V4dCgpOw0KKyAgICB2b2lkCQkJTG9hZCgpOw0KKyAgICBGWF9CT09MCQkJSXNBdmFpbGFibGUoKQ0KKyAgICB7DQorICAgICAgICByZXR1cm4gbV9oTW9kdWxlICE9IE5VTEw7DQorICAgIH0NCisgICAgRlhfQk9PTAkJCVN0cmV0Y2hCaXRNYXNrKEhEQyBoREMsIEJPT0wgYk1vbm9EZXZpY2UsIGNvbnN0IENGWF9ESUJpdG1hcCogcEJpdG1hcCwgaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgRlhfRFdPUkQgYXJnYiwgY29uc3QgRlhfUkVDVCogcENsaXBSZWN0LCBpbnQgZmxhZ3MpOw0KKyAgICBGWF9CT09MCQkJU3RyZXRjaERJQml0cyhIREMgaERDLCBjb25zdCBDRlhfRElCaXRtYXAqIHBCaXRtYXAsIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgY29uc3QgRlhfUkVDVCogcENsaXBSZWN0LCBpbnQgZmxhZ3MpOw0KKyAgICBGWF9CT09MCQkJRHJhd1BhdGgoSERDIGhEQywgY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBmaWxsX2FyZ2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBzdHJva2VfYXJnYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUNCisgICAgICAgICAgICAgICAgICAgICAgKTsNCisNCisgICAgdm9pZCoJCQlMb2FkTWVtRm9udChGWF9CWVRFKiBwRGF0YSwgRlhfRFdPUkQgc2l6ZSk7DQorICAgIHZvaWQJCQlEZWxldGVNZW1Gb250KHZvaWQqIHBGb250Q29sbGVjdGlvbik7DQorICAgIEZYX0JPT0wgICAgICAgICBHZGlwQ3JlYXRlRnJvbUltYWdlKHZvaWQqIGJpdG1hcCwgdm9pZCoqIGdyYXBoaWNzKTsNCisgICAgdm9pZCAgICAgICAgICAgIEdkaXBEZWxldGVHcmFwaGljcyh2b2lkKiBncmFwaGljcyk7DQorICAgIHZvaWQgICAgICAgICAgICBHZGlwU2V0VGV4dFJlbmRlcmluZ0hpbnQodm9pZCogZ3JhcGhpY3MsIGludCBtb2RlKTsNCisgICAgdm9pZCAgICAgICAgICAgIEdkaXBTZXRQYWdlVW5pdCh2b2lkKiBncmFwaGljcywgRlhfRFdPUkQgdW5pdCk7DQorICAgIHZvaWQgICAgICAgICAgICBHZGlwU2V0V29ybGRUcmFuc2Zvcm0odm9pZCogZ3JhcGhpY3MsIHZvaWQqIHBNYXRyaXgpOw0KKyAgICBGWF9CT09MICAgICAgICAgR2RpcERyYXdEcml2ZXJTdHJpbmcodm9pZCAqZ3JhcGhpY3MsICB1bnNpZ25lZCBzaG9ydCAqdGV4dCwgaW50IGxlbmd0aCwgdm9pZCAqZm9udCwgdm9pZCogYnJ1c2gsIHZvaWQgKnBvc2l0aW9ucywgaW50IGZsYWdzLCBjb25zdCB2b2lkICptYXRyaXgpOw0KKyAgICB2b2lkICAgICAgICAgICAgR2RpcENyZWF0ZUJydXNoKEZYX0RXT1JEIGZpbGxfYXJnYiwgdm9pZCoqIHBCcnVzaCk7DQorICAgIHZvaWQgICAgICAgICAgICBHZGlwRGVsZXRlQnJ1c2godm9pZCogcEJydXNoKTsNCisgICAgdm9pZCAgICAgICAgICAgIEdkaXBDcmVhdGVNYXRyaXgoRlhfRkxPQVQgYSwgRlhfRkxPQVQgYiwgRlhfRkxPQVQgYywgRlhfRkxPQVQgZCwgRlhfRkxPQVQgZSwgRlhfRkxPQVQgZiwgdm9pZCoqIG1hdHJpeCk7DQorICAgIHZvaWQgICAgICAgICAgICBHZGlwRGVsZXRlTWF0cml4KHZvaWQqIG1hdHJpeCk7DQorICAgIEZYX0JPT0wgICAgICAgICBHZGlwQ3JlYXRlRm9udEZhbWlseUZyb21OYW1lKEZYX0xQQ1dTVFIgbmFtZSwgdm9pZCogcEZvbnRDb2xsZWN0aW9uLCB2b2lkKipwRmFtaWx5KTsNCisgICAgdm9pZCAgICAgICAgICAgIEdkaXBEZWxldGVGb250RmFtaWx5KHZvaWQqIHBGYW1pbHkpOw0KKyAgICBGWF9CT09MICAgICAgICAgR2RpcENyZWF0ZUZvbnRGcm9tRmFtaWx5KHZvaWQqIHBGYW1pbHksIEZYX0ZMT0FUIGZvbnRfc2l6ZSwgaW50IGZvbnRzdHlsZSwgaW50IGZsYWcsIHZvaWQqKiBwRm9udCk7DQorICAgIHZvaWQqICAgICAgICAgICBHZGlwQ3JlYXRlRm9udEZyb21Db2xsZWN0aW9uKHZvaWQqIHBGb250Q29sbGVjdGlvbiwgRlhfRkxPQVQgZm9udF9zaXplLCBpbnQgZm9udHN0eWxlKTsNCisgICAgdm9pZCAgICAgICAgICAgIEdkaXBEZWxldGVGb250KHZvaWQqIHBGb250KTsNCisgICAgRlhfQk9PTCAgICAgICAgIEdkaXBDcmVhdGVCaXRtYXAoQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCB2b2lkKipiaXRtYXApOw0KKyAgICB2b2lkICAgICAgICAgICAgR2RpcERpc3Bvc2VJbWFnZSh2b2lkKiBiaXRtYXApOw0KKyAgICB2b2lkICAgICAgICAgICAgR2RpcEdldEZvbnRTaXplKHZvaWQgKnBGb250LCBGWF9GTE9BVCAqc2l6ZSk7DQorICAgIHZvaWQqICAgICAgICAgICBHZGlBZGRGb250TWVtUmVzb3VyY2VFeCh2b2lkICpwRm9udGRhdGEsIEZYX0RXT1JEIHNpemUsIHZvaWQqIHBkdiwgRlhfRFdPUkQqIG51bV9mYWNlKTsNCisgICAgRlhfQk9PTCAgICAgICAgIEdkaVJlbW92ZUZvbnRNZW1SZXNvdXJjZUV4KHZvaWQqIGhhbmRsZSk7DQorICAgIHZvaWQqCQkJbV9GdW5jdGlvbnNbMTAwXTsNCisgICAgdm9pZCogICAgICAgICAgIG1fcEdkaUFkZEZvbnRNZW1SZXNvdXJjZUV4Ow0KKyAgICB2b2lkKiAgICAgICAgICAgbV9wR2RpUmVtb3ZlRm9udE1lbVJlc291cnNlRXg7DQorICAgIENGWF9ESUJpdG1hcCoJTG9hZERJQml0bWFwKFdJTkRJQl9PcGVuX0FyZ3NfIGFyZ3MpOw0KK3Byb3RlY3RlZDoNCisgICAgSE1PRFVMRQkJCW1faE1vZHVsZTsNCisgICAgSE1PRFVMRSAgICAgICAgIG1fR2RpTW9kdWxlOw0KK307DQorI2luY2x1ZGUgImR3cml0ZV9pbnQuaCINCitjbGFzcyBDV2luMzJQbGF0Zm9ybSA6IHB1YmxpYyBDRlhfT2JqZWN0DQorew0KK3B1YmxpYzoNCisgICAgRlhfQk9PTAkJCW1fYkhhbGZUb25lOw0KKyAgICBDR2RpcGx1c0V4dAkJbV9HZGlwbHVzRXh0Ow0KKyAgICBDRFdyaXRlRXh0ICAgICAgbV9EV3JpdGVFeHQ7DQorfTsNCitjbGFzcyBDR2RpRGV2aWNlRHJpdmVyIDogcHVibGljIElGWF9SZW5kZXJEZXZpY2VEcml2ZXINCit7DQorcHJvdGVjdGVkOg0KKyAgICB2aXJ0dWFsIGludAkJR2V0RGV2aWNlQ2FwcyhpbnQgY2Fwc19pZCk7DQorICAgIHZpcnR1YWwgdm9pZAlTYXZlU3RhdGUoKQ0KKyAgICB7DQorICAgICAgICBTYXZlREMobV9oREMpOw0KKyAgICB9DQorICAgIHZpcnR1YWwgdm9pZAlSZXN0b3JlU3RhdGUoRlhfQk9PTCBiS2VlcFNhdmVkID0gRkFMU0UpDQorICAgIHsNCisgICAgICAgIFJlc3RvcmVEQyhtX2hEQywgLTEpOw0KKyAgICAgICAgaWYgKGJLZWVwU2F2ZWQpIHsNCisgICAgICAgICAgICBTYXZlREMobV9oREMpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIHZpcnR1YWwgRlhfQk9PTAlTZXRDbGlwX1BhdGhGaWxsKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqZWN0MkRldmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbGxfbW9kZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlTZXRDbGlwX1BhdGhTdHJva2UoY29uc3QgQ0ZYX1BhdGhEYXRhKiBwUGF0aERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgdmlydHVhbCBGWF9CT09MCURyYXdQYXRoKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDRlhfR3JhcGhTdGF0ZURhdGEqIHBHcmFwaFN0YXRlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlhfRFdPUkQgZmlsbF9jb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIHN0cm9rZV9jb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBJY2NUcmFuc2Zvcm0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQJYmxlbmRfdHlwZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgRmlsbFJlY3QoY29uc3QgRlhfUkVDVCogcFJlY3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBmaWxsX2NvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKTsNCisgICAgdmlydHVhbCBGWF9CT09MCURyYXdDb3NtZXRpY0xpbmUoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLCBGWF9GTE9BVCB4MiwgRlhfRkxPQVQgeTIsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpOw0KKyAgICB2aXJ0dWFsIEZYX0xQVk9JRCBHZXRDbGlwUmduKCkgOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgU2V0Q2xpcFJnbihGWF9MUFZPSUQgcFJnbikgOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgR2V0Q2xpcEJveChGWF9SRUNUKiBwUmVjdCk7DQorICAgIHZpcnR1YWwgRlhfQk9PTCBEZWxldGVEZXZpY2VSZ24oRlhfTFBWT0lEIHBSZ24pOw0KKyAgICB2aXJ0dWFsIHZvaWQJRHJhd0xpbmUoRlhfRkxPQVQgeDEsIEZYX0ZMT0FUIHkxLCBGWF9GTE9BVCB4MiwgRlhfRkxPQVQgeTIpOw0KKyAgICB2aXJ0dWFsIHZvaWQqCUdldFBsYXRmb3JtU3VyZmFjZSgpDQorICAgIHsNCisgICAgICAgIHJldHVybiAodm9pZCopbV9oREM7DQorICAgIH0NCisgICAgRlhfQk9PTAkJCUdESV9TZXRESUJpdHMoY29uc3QgQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCwgaW50IGxlZnQsIGludCB0b3AsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICBGWF9CT09MCQkJR0RJX1N0cmV0Y2hESUJpdHMoY29uc3QgQ0ZYX0RJQml0bWFwKiBwQml0bWFwLCBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdF93aWR0aCwgaW50IGRlc3RfaGVpZ2h0LCBGWF9EV09SRCBmbGFncywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICBGWF9CT09MCQkJR0RJX1N0cmV0Y2hCaXRNYXNrKGNvbnN0IENGWF9ESUJpdG1hcCogcEJpdG1hcCwgaW50IGRlc3RfbGVmdCwgaW50IGRlc3RfdG9wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsIEZYX0RXT1JEIGJpdG1hcF9jb2xvciwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0pOw0KKyAgICBIREMJCQkJbV9oREM7DQorICAgIGludAkJCQltX1dpZHRoLCBtX0hlaWdodCwgbV9uQml0c1BlclBpeGVsOw0KKyAgICBpbnQJCQkJbV9EZXZpY2VDbGFzcywgbV9SZW5kZXJDYXBzOw0KKyAgICBDR2RpRGV2aWNlRHJpdmVyKEhEQyBoREMsIGludCBkZXZpY2VfY2xhc3MpOw0KKyAgICB+Q0dkaURldmljZURyaXZlcigpIHt9DQorfTsNCitjbGFzcyBDR2RpRGlzcGxheURyaXZlciA6IHB1YmxpYyBDR2RpRGV2aWNlRHJpdmVyDQorew0KK3B1YmxpYzoNCisgICAgQ0dkaURpc3BsYXlEcml2ZXIoSERDIGhEQyk7DQorcHJvdGVjdGVkOg0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgR2V0RElCaXRzKENGWF9ESUJpdG1hcCogcEJpdG1hcCwgaW50IGxlZnQsIGludCB0b3AsIHZvaWQqIHBJY2NUcmFuc2Zvcm0gPSBOVUxMLCBGWF9CT09MIGJERWRnZSA9IEZBTFNFKTsNCisgICAgdmlydHVhbCBGWF9CT09MIFNldERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBGWF9EV09SRCBjb2xvciwgY29uc3QgRlhfUkVDVCogcFNyY1JlY3QsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgYmxlbmRfdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTCBTdHJldGNoRElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIEZYX0RXT1JEIGNvbG9yLCBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsIGNvbnN0IEZYX1JFQ1QqIHBDbGlwUmVjdCwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBpbnQgYmxlbmRfdHlwZSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlTdGFydERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBpbnQgYml0bWFwX2FscGhhLCBGWF9EV09SRCBjb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIEZYX0RXT1JEIHJlbmRlcl9mbGFncywgRlhfTFBWT0lEJiBoYW5kbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpDQorICAgIHsNCisgICAgICAgIHJldHVybiBGQUxTRTsNCisgICAgfQ0KKyAgICBGWF9CT09MCQkJVXNlRm94aXRTdHJldGNoRW5naW5lKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBTb3VyY2UsIEZYX0RXT1JEIGNvbG9yLCBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgY29uc3QgRlhfUkVDVCogcENsaXBSZWN0LCBpbnQgcmVuZGVyX2ZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnID0gMCwgdm9pZCogcEljY1RyYW5zZm9ybSA9IE5VTEwsIGludCBibGVuZF90eXBlID0gRlhESUJfQkxFTkRfTk9STUFMKTsNCit9Ow0KK2NsYXNzIENHZGlQcmludGVyRHJpdmVyIDogcHVibGljIENHZGlEZXZpY2VEcml2ZXINCit7DQorcHVibGljOg0KKyAgICBDR2RpUHJpbnRlckRyaXZlcihIREMgaERDKTsNCitwcm90ZWN0ZWQ6DQorICAgIHZpcnR1YWwgaW50CQlHZXREZXZpY2VDYXBzKGludCBjYXBzX2lkKTsNCisgICAgdmlydHVhbCBGWF9CT09MIFNldERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBGWF9EV09SRCBjb2xvciwgY29uc3QgRlhfUkVDVCogcFNyY1JlY3QsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgYmxlbmRfdHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTCBTdHJldGNoRElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIEZYX0RXT1JEIGNvbG9yLCBpbnQgZGVzdF9sZWZ0LCBpbnQgZGVzdF90b3AsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X3dpZHRoLCBpbnQgZGVzdF9oZWlnaHQsIGNvbnN0IEZYX1JFQ1QqIHBDbGlwUmVjdCwgRlhfRFdPUkQgZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBpbnQgYmxlbmRfdHlwZSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlTdGFydERJQml0cyhjb25zdCBDRlhfRElCU291cmNlKiBwQml0bWFwLCBpbnQgYml0bWFwX2FscGhhLCBGWF9EV09SRCBjb2xvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIEZYX0RXT1JEIHJlbmRlcl9mbGFncywgRlhfTFBWT0lEJiBoYW5kbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSwgaW50IGJsZW5kX3R5cGUpOw0KKyAgICBpbnQJCQkJbV9Ib3J6U2l6ZSwgbV9WZXJ0U2l6ZTsNCisgICAgRlhfQk9PTAkJCW1fYlN1cHBvcnRST1A7DQorfTsNCitjbGFzcyBDUFNPdXRwdXQgOiBwdWJsaWMgSUZYX1BTT3V0cHV0LCBwdWJsaWMgQ0ZYX09iamVjdA0KK3sNCitwdWJsaWM6DQorICAgIENQU091dHB1dChIREMgaERDKTsNCisgICAgdmlydHVhbCB+Q1BTT3V0cHV0KCk7DQorICAgIHZpcnR1YWwgdm9pZAkJCVJlbGVhc2UoKQ0KKyAgICB7DQorICAgICAgICBkZWxldGUgdGhpczsNCisgICAgfQ0KKyAgICB2b2lkIEluaXQoKTsNCisgICAgdmlydHVhbCB2b2lkCU91dHB1dFBTKEZYX0xQQ1NUUiBzdHJpbmcsIGludCBsZW4pOw0KKyAgICBIREMJCQkJbV9oREM7DQorICAgIEZYX0xQU1RSICAgICAgICBtX3BCdWY7DQorfTsNCitjbGFzcyBDUFNQcmludGVyRHJpdmVyIDogcHVibGljIElGWF9SZW5kZXJEZXZpY2VEcml2ZXINCit7DQorcHVibGljOg0KKyAgICBDUFNQcmludGVyRHJpdmVyKCk7DQorICAgIEZYX0JPT0wJCQlJbml0KEhEQyBoREMsIGludCBwc19sZXZlbCwgRlhfQk9PTCBiQ215a091dHB1dCk7DQorICAgIH5DUFNQcmludGVyRHJpdmVyKCk7DQorcHJvdGVjdGVkOg0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgSXNQU1ByaW50RHJpdmVyKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIFRSVUU7DQorICAgIH0NCisgICAgdmlydHVhbCBpbnQJCUdldERldmljZUNhcHMoaW50IGNhcHNfaWQpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJU3RhcnRSZW5kZXJpbmcoKTsNCisgICAgdmlydHVhbCB2b2lkCUVuZFJlbmRlcmluZygpOw0KKyAgICB2aXJ0dWFsIHZvaWQJU2F2ZVN0YXRlKCk7DQorICAgIHZpcnR1YWwgdm9pZAlSZXN0b3JlU3RhdGUoRlhfQk9PTCBiS2VlcFNhdmVkID0gRkFMU0UpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJU2V0Q2xpcF9QYXRoRmlsbChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsX21vZGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wJU2V0Q2xpcF9QYXRoU3Ryb2tlKGNvbnN0IENGWF9QYXRoRGF0YSogcFBhdGhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9HcmFwaFN0YXRlRGF0YSogcEdyYXBoU3RhdGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorICAgIHZpcnR1YWwgRlhfQk9PTAlEcmF3UGF0aChjb25zdCBDRlhfUGF0aERhdGEqIHBQYXRoRGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBPYmplY3QyRGV2aWNlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0dyYXBoU3RhdGVEYXRhKiBwR3JhcGhTdGF0ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX0RXT1JEIGZpbGxfY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9EV09SRCBzdHJva2VfY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmlsbF9tb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBwSWNjVHJhbnNmb3JtLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsZW5kX3R5cGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgdmlydHVhbCBGWF9CT09MIEdldENsaXBCb3goRlhfUkVDVCogcFJlY3QpOw0KKyAgICB2aXJ0dWFsIEZYX0JPT0wgU2V0RElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIEZYX0RXT1JEIGNvbG9yLCBjb25zdCBGWF9SRUNUKiBwU3JjUmVjdCwgaW50IGxlZnQsIGludCB0b3AsIGludCBibGVuZF90eXBlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtKTsNCisgICAgdmlydHVhbCBGWF9CT09MIFN0cmV0Y2hESUJpdHMoY29uc3QgQ0ZYX0RJQlNvdXJjZSogcEJpdG1hcCwgRlhfRFdPUkQgY29sb3IsIGludCBkZXN0X2xlZnQsIGludCBkZXN0X3RvcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3Rfd2lkdGgsIGludCBkZXN0X2hlaWdodCwgY29uc3QgRlhfUkVDVCogcENsaXBSZWN0LCBGWF9EV09SRCBmbGFncywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFscGhhX2ZsYWcsIHZvaWQqIHBJY2NUcmFuc2Zvcm0sIGludCBibGVuZF90eXBlKTsNCisgICAgdmlydHVhbCBGWF9CT09MCVN0YXJ0RElCaXRzKGNvbnN0IENGWF9ESUJTb3VyY2UqIHBCaXRtYXAsIGludCBiaXRtYXBfYWxwaGEsIEZYX0RXT1JEIGNvbG9yLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgRlhfRFdPUkQgcmVuZGVyX2ZsYWdzLCBGWF9MUFZPSUQmIGhhbmRsZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbHBoYV9mbGFnLCB2b2lkKiBwSWNjVHJhbnNmb3JtLCBpbnQgYmxlbmRfdHlwZSk7DQorICAgIHZpcnR1YWwgRlhfQk9PTCBEcmF3RGV2aWNlVGV4dChpbnQgbkNoYXJzLCBjb25zdCBGWFRFWFRfQ0hBUlBPUyogcENoYXJQb3MsIENGWF9Gb250KiBwRm9udCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9Gb250Q2FjaGUqIHBDYWNoZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE9iamVjdDJEZXZpY2UsIEZYX0ZMT0FUIGZvbnRfc2l6ZSwgRlhfRFdPUkQgY29sb3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSk7DQorICAgIHZpcnR1YWwgdm9pZCoJR2V0UGxhdGZvcm1TdXJmYWNlKCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuICh2b2lkKiltX2hEQzsNCisgICAgfQ0KKyAgICBIREMJCQkJbV9oREM7DQorICAgIEZYX0JPT0wJCQltX2JDbXlrT3V0cHV0Ow0KKyAgICBpbnQJCQkJbV9XaWR0aCwgbV9IZWlnaHQsIG1fbkJpdHNQZXJQaXhlbDsNCisgICAgaW50CQkJCW1fSG9yelNpemUsIG1fVmVydFNpemU7DQorICAgIENQU091dHB1dCoJCW1fcFBTT3V0cHV0Ow0KKyAgICBDRlhfUFNSZW5kZXJlcgltX1BTUmVuZGVyZXI7DQorfTsNCit2b2lkIF9Db2xvcjJBcmdiKEZYX0FSR0ImIGFyZ2IsIEZYX0RXT1JEIGNvbG9yLCBpbnQgYWxwaGFfZmxhZywgdm9pZCogcEljY1RyYW5zZm9ybSk7DQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvcmVmbG93L2F1dG9yZWZsb3cuY3BwIGIvY29yZS9zcmMvcmVmbG93L2F1dG9yZWZsb3cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMzc5NjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9yZWZsb3cvYXV0b3JlZmxvdy5jcHAKQEAgLTAsMCArMSw3ODEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICJhdXRvcmVmbG93LmgiCisjZGVmaW5lIGFwcHJvYWNodG8oYSxiLGMpIChGWFNZU19mYWJzKChmbG9hdCkoKGEpLShiKSkpPihjKSA/IDAgOiAxKQoraW50IEZQREZfUHJvY2Vzc0ludGVyT2JqKGNvbnN0IENQREZfUGFnZU9iamVjdCogcFByZXZPYmosIGNvbnN0IENQREZfUGFnZU9iamVjdCogcE9iaikKK3sKKyAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsKKyAgICBGWF9SRUNUIFByZVJlY3QgPSBwUHJldk9iai0+R2V0QkJveCgmbWF0cml4KTsKKyAgICBGWF9SRUNUIHJlY3QgPSBwT2JqLT5HZXRCQm94KCZtYXRyaXgpOworICAgIGludCBmbGFnID0gMDsKKyAgICBpZihQcmVSZWN0LnRvcCA+IHJlY3QuYm90dG9tKSB7CisgICAgICAgIGZsYWcgPSAwOworICAgIH0gZWxzZSBpZihyZWN0LnRvcCA+IFByZVJlY3QuYm90dG9tKSB7CisgICAgICAgIGZsYWcgPSAxOworICAgIH0gZWxzZSBpZihQcmVSZWN0LnJpZ2h0IDwgcmVjdC5sZWZ0KSB7CisgICAgICAgIGZsYWcgPSAwOworICAgIH0gZWxzZSBpZihQcmVSZWN0LmxlZnQgPiByZWN0LnJpZ2h0KSB7CisgICAgICAgIGZsYWcgPSAxOworICAgIH0gZWxzZSBpZihwT2JqLT5tX1R5cGUgIT0gUERGUEFHRV9URVhUKSB7CisgICAgICAgIGZsYWcgPSAxOworICAgIH0gZWxzZSBpZihwUHJldk9iai0+bV9UeXBlICE9IFBERlBBR0VfVEVYVCkgeworICAgICAgICBmbGFnID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZigoUHJlUmVjdC50b3AgPCByZWN0LnRvcCAmJiBQcmVSZWN0LmJvdHRvbSA+IHJlY3QuYm90dG9tKSB8fAorICAgICAgICAgICAgICAgIChQcmVSZWN0LnRvcCA+IHJlY3QudG9wICYmIFByZVJlY3QuYm90dG9tIDwgcmVjdC5ib3R0b20pKSB7CisgICAgICAgICAgICBpZihQcmVSZWN0LmxlZnQgPiByZWN0LmxlZnQpIHsKKyAgICAgICAgICAgICAgICBmbGFnID0gMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZmxhZyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDUERGX1RleHRPYmplY3QqIHBQcmV2VGV4dE9iaiA9IChDUERGX1RleHRPYmplY3QqIClwUHJldk9iajsKKyAgICAgICAgICAgIENQREZfVGV4dE9iamVjdCogcFRleHRPYmogPSAoQ1BERl9UZXh0T2JqZWN0KiApcE9iajsKKyAgICAgICAgICAgIENQREZfVGV4dE9iamVjdEl0ZW0gaXRlbSwgcHJldkl0ZW07CisgICAgICAgICAgICBwUHJldlRleHRPYmotPkdldEl0ZW1JbmZvKDAsICZwcmV2SXRlbSk7CisgICAgICAgICAgICBwVGV4dE9iai0+R2V0SXRlbUluZm8oMCwgJml0ZW0pOworICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBUZXh0TWF0cml4OworICAgICAgICAgICAgcFRleHRPYmotPkdldFRleHRNYXRyaXgoJlRleHRNYXRyaXgpOworICAgICAgICAgICAgRlhfRkxPQVQgb3JpZ2luWCwgb3JpZ2luWSwgcHJldk9yaWdpblgsIHByZU9yaWdpblk7CisgICAgICAgICAgICBUZXh0TWF0cml4LlRyYW5zZm9ybShpdGVtLm1fT3JpZ2luWCwgaXRlbS5tX09yaWdpblksIG9yaWdpblgsIG9yaWdpblkpOworICAgICAgICAgICAgcFByZXZUZXh0T2JqLT5HZXRUZXh0TWF0cml4KCZUZXh0TWF0cml4KTsKKyAgICAgICAgICAgIFRleHRNYXRyaXguVHJhbnNmb3JtKHByZXZJdGVtLm1fT3JpZ2luWCwgcHJldkl0ZW0ubV9PcmlnaW5ZLCBwcmV2T3JpZ2luWCwgcHJlT3JpZ2luWSk7CisgICAgICAgICAgICBpZihwcmVPcmlnaW5ZID4gb3JpZ2luWSkgeworICAgICAgICAgICAgICAgIGZsYWcgPSAwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmbGFnID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmxhZzsKK30KK3ZvaWQgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6OkNvbnZlcjJBcHByZWNlT3JkZXIoY29uc3QgQ1BERl9QYWdlT2JqZWN0cyogcFN0cmVhbU9yZGVyT2JqcywgQ1BERl9QYWdlT2JqZWN0cyogcEFwcHJhY2VPcmRlck9ianMpCit7CisgICAgRlhfUE9TSVRJT04gcG9zID0gcFN0cmVhbU9yZGVyT2Jqcy0+R2V0Rmlyc3RPYmplY3RQb3NpdGlvbigpOworICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4OworICAgIHdoaWxlKHBvcykgeworICAgICAgICBDUERGX1BhZ2VPYmplY3QqIHBPYmogPSBwU3RyZWFtT3JkZXJPYmpzLT5HZXROZXh0T2JqZWN0KHBvcyk7CisgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4OworICAgICAgICBpZihwT2JqLT5tX1R5cGUgIT0gUERGUEFHRV9URVhUKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBGWF9QT1NJVElPTiBwb3MxID0gcEFwcHJhY2VPcmRlck9ianMtPkdldExhc3RPYmplY3RQb3NpdGlvbigpOworICAgICAgICB3aGlsZShwb3MxKSB7CisgICAgICAgICAgICBDUERGX1BhZ2VPYmplY3QqIHBUZW1wT2JqID0gcEFwcHJhY2VPcmRlck9ianMtPkdldFByZXZPYmplY3QocG9zMSk7CisgICAgICAgICAgICBpZihGUERGX1Byb2Nlc3NJbnRlck9iaihwT2JqLCBwVGVtcE9iaikgPT0gMSkgeworICAgICAgICAgICAgICAgIGlmKCFwb3MxKSB7CisgICAgICAgICAgICAgICAgICAgIHBvczEgPSBwQXBwcmFjZU9yZGVyT2Jqcy0+R2V0Rmlyc3RPYmplY3RQb3NpdGlvbigpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBBcHByYWNlT3JkZXJPYmpzLT5HZXROZXh0T2JqZWN0KHBvczEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwQXBwcmFjZU9yZGVyT2Jqcy0+SW5zZXJ0T2JqZWN0KHBvczEsIHBPYmopOworICAgIH0KKyAgICBwb3MgPSBwU3RyZWFtT3JkZXJPYmpzLT5HZXRGaXJzdE9iamVjdFBvc2l0aW9uKCk7CisgICAgd2hpbGUocG9zKSB7CisgICAgICAgIENQREZfUGFnZU9iamVjdCogcE9iaiA9IHBTdHJlYW1PcmRlck9ianMtPkdldE5leHRPYmplY3QocG9zKTsKKyAgICAgICAgaWYocE9iai0+bV9UeXBlICE9IFBERlBBR0VfSU1BR0UpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEZYX1BPU0lUSU9OIHBvczEgPSBwQXBwcmFjZU9yZGVyT2Jqcy0+R2V0TGFzdE9iamVjdFBvc2l0aW9uKCk7CisgICAgICAgIHdoaWxlKHBvczEpIHsKKyAgICAgICAgICAgIENQREZfUGFnZU9iamVjdCogcFRlbXBPYmogPSBwQXBwcmFjZU9yZGVyT2Jqcy0+R2V0UHJldk9iamVjdChwb3MxKTsKKyAgICAgICAgICAgIGlmKEZQREZfUHJvY2Vzc0ludGVyT2JqKHBPYmosIHBUZW1wT2JqKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgaWYoIXBvczEpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9zMSA9IHBBcHByYWNlT3JkZXJPYmpzLT5HZXRGaXJzdE9iamVjdFBvc2l0aW9uKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcEFwcHJhY2VPcmRlck9ianMtPkdldE5leHRPYmplY3QocG9zMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHBBcHByYWNlT3JkZXJPYmpzLT5JbnNlcnRPYmplY3QocG9zMSwgcE9iaik7CisgICAgfQorfQorSVBERl9MYXlvdXRQcm92aWRlciogSVBERl9MYXlvdXRQcm92aWRlcjo6Q3JlYXRlX0xheW91dFByb3ZpZGVyX0F1dG9SZWZsb3coQ1BERl9QYWdlT2JqZWN0cyogcFBhZ2UsIEZYX0JPT0wgYlJlYWRPcmRlcikKK3sKKyAgICByZXR1cm4gRlhfTkVXIENQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyKHBQYWdlLCBiUmVhZE9yZGVyKTsKK30KK0NQREZfQXV0b1JlZmxvd0VsZW1lbnQ6OkNQREZfQXV0b1JlZmxvd0VsZW1lbnQoTGF5b3V0VHlwZSBsYXlvdXRUeXBlICwgQ1BERl9BdXRvUmVmbG93RWxlbWVudCogcFBhcmVudCkKK3sKKyAgICBtX0VsbVR5cGUgPSBsYXlvdXRUeXBlOworICAgIG1fcFBhcmVudEVsbSA9IHBQYXJlbnQ7CisgICAgaWYocFBhcmVudCkgeworICAgICAgICBwUGFyZW50LT5tX0NoaWxkQXJyYXkuQWRkKHRoaXMpOworICAgIH0KKyAgICBtX1NwYWNlQmVmb3JlID0gMDsKK30KK0NQREZfQXV0b1JlZmxvd0VsZW1lbnQ6On5DUERGX0F1dG9SZWZsb3dFbGVtZW50KCkKK3sKKyAgICBtX0NoaWxkQXJyYXkuUmVtb3ZlQWxsKCk7CisgICAgbV9PYmpBcnJheS5SZW1vdmVBbGwoKTsKK30KK2ludAlDUERGX0F1dG9SZWZsb3dFbGVtZW50OjpDb3VudEF0dHJWYWx1ZXMoTGF5b3V0QXR0ciBhdHRyX3R5cGUpCit7CisgICAgcmV0dXJuIDE7Cit9CitMYXlvdXRFbnVtIENQREZfQXV0b1JlZmxvd0VsZW1lbnQ6OkdldEVudW1BdHRyKExheW91dEF0dHIgYXR0cl90eXBlLCBpbnQgaW5kZXggKQoreworICAgIHJldHVybiBMYXlvdXRJbnZhbGlkOworfQorRlhfRkxPQVQJQ1BERl9BdXRvUmVmbG93RWxlbWVudDo6R2V0TnVtYmVyQXR0cihMYXlvdXRBdHRyIGF0dHJfdHlwZSwgaW50IGluZGV4ICkKK3sKKyAgICBzd2l0Y2ggKGF0dHJfdHlwZSkgeworICAgICAgICBjYXNlIExheW91dFNwYWNlQmVmb3JlOgorICAgICAgICAgICAgcmV0dXJuIG1fU3BhY2VCZWZvcmU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CitGWF9DT0xPUlJFRglDUERGX0F1dG9SZWZsb3dFbGVtZW50OjpHZXRDb2xvckF0dHIoTGF5b3V0QXR0ciBhdHRyX3R5cGUsIGludCBpbmRleCApCit7CisgICAgcmV0dXJuIDA7Cit9CisjZGVmaW5lIFdyaXRpbmdNb2RlX1VOS05PVwkwCisjZGVmaW5lIFdyaXRpbmdNb2RlX0xSVEIJMQorI2RlZmluZSBXcml0aW5nTW9kZV9STFRCCTIKKyNkZWZpbmUgV3JpdGluZ01vZGVfVEJSTAkzCitDUERGX0F1dG9SZWZsb3dMYXlvdXRQcm92aWRlcjo6Q1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXIoQ1BERl9QYWdlT2JqZWN0cyogcFBhZ2UsIEZYX0JPT0wgYlJlYWRPcmRlcikKK3sKKyAgICBtX3BQREZQYWdlID0gKENQREZfUGFnZSopcFBhZ2U7CisgICAgRlhfRkxPQVQgd2lkdGggPSBtX3BQREZQYWdlLT5HZXRQYWdlV2lkdGgoKTsKKyAgICBGWF9GTE9BVCBoZWlnaHQgPSBtX3BQREZQYWdlLT5HZXRQYWdlSGVpZ2h0KCk7CisgICAgbV9wUERGUGFnZS0+R2V0RGlzcGxheU1hdHJpeChtX1BERkRpc3BsYXlNYXRyaXgsIDAsIDAsIChpbnQpKG1fcFBERlBhZ2UtPkdldFBhZ2VXaWR0aCgpKSwgKGludCkobV9wUERGUGFnZS0+R2V0UGFnZUhlaWdodCgpKSwgMCk7CisgICAgbV9iUmVhZE9yZGVyID0gYlJlYWRPcmRlcjsKKyAgICBtX1N0YXR1cyA9IExheW91dFJlYWR5OworICAgIG1fcFJvb3QgPSBOVUxMOworICAgIG1fcEN1cnJFbG0gPSBOVUxMOworICAgIG1fcFByZU9iaiA9IE5VTEw7CisgICAgbV9TdGVwID0gMDsKKyAgICBtX1dyaXRpbmdNb2RlID0gV3JpdGluZ01vZGVfVU5LTk9XOworfQorQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6On5DUERGX0F1dG9SZWZsb3dMYXlvdXRQcm92aWRlcigpCit7CisgICAgbV9wUERGUGFnZSA9IE5VTEw7CisgICAgUmVsZWFzZUVsbShtX3BSb290KTsKK30KK3ZvaWQgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6OlJlbGVhc2VFbG0oQ1BERl9BdXRvUmVmbG93RWxlbWVudComIHBFbG0sIEZYX0JPT0wgYlJlbGVhc2VDaGlsZHJlbikKK3sKKyAgICBpZihiUmVsZWFzZUNoaWxkcmVuKSB7CisgICAgICAgIGludCBjb3VudCA9IHBFbG0tPkNvdW50Q2hpbGRyZW4oKTsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIENQREZfQXV0b1JlZmxvd0VsZW1lbnQqIHBDaGlsZCA9IChDUERGX0F1dG9SZWZsb3dFbGVtZW50KilwRWxtLT5HZXRDaGlsZChpKTsKKyAgICAgICAgICAgIFJlbGVhc2VFbG0ocENoaWxkKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkZWxldGUgcEVsbTsKKyAgICBwRWxtID0gTlVMTDsKK30KK3ZvaWQgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6OkFkZE9iamVjdEFycmF5KENQREZfQXV0b1JlZmxvd0VsZW1lbnQqIHBFbG0sIENGWF9QdHJMaXN0JiBPYmpMaXN0KQoreworICAgIGlmKCFwRWxtKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgRlhfUE9TSVRJT04gcG9zID0gT2JqTGlzdC5HZXRIZWFkUG9zaXRpb24oKTsKKyAgICB3aGlsZSAocG9zKSB7CisgICAgICAgIHBFbG0tPm1fT2JqQXJyYXkuQWRkKChDUERGX1BhZ2VPYmplY3QqKU9iakxpc3QuR2V0TmV4dChwb3MpKTsKKyAgICB9Cit9Cit2b2lkIENQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyOjpHZW5lcmF0ZVN0cnVjdFRyZWUoKQoreworICAgIGlmIChtX1N0ZXAgPCBBVVRPUkVGTE9XX1NURVBfR0VORVJBVEVMSU5FKSB7CisgICAgICAgIEdlbmVyYXRlTGluZShtX2NlbGxBcnJheSk7CisgICAgICAgIGlmKG1fY2VsbEFycmF5LkdldFNpemUoKSA9PSAwKSB7CisgICAgICAgICAgICBtX1N0YXR1cyA9IExheW91dEVycm9yOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmKG1fcFBhdXNlICYmIG1fcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7CisgICAgICAgICAgICBtX1N0ZXAgPSBBVVRPUkVGTE9XX1NURVBfR0VORVJBVEVMSU5FOworICAgICAgICAgICAgbV9TdGF0dXMgPSBMYXlvdXRUb0JlQ29udGludWVkOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGlmIChtX1N0ZXAgPCBBVVRPUkVGTE9XX1NURVBfR0VORVJBVEVQYXJhZ3JhcGgpIHsKKyAgICAgICAgR2VuZXJhdGVQYXJhZ3JhcGgobV9jZWxsQXJyYXkpOworICAgICAgICBpZihtX3BQYXVzZSAmJiBtX3BQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgeworICAgICAgICAgICAgbV9TdGVwID0gQVVUT1JFRkxPV19TVEVQX0dFTkVSQVRFUGFyYWdyYXBoOworICAgICAgICAgICAgbV9TdGF0dXMgPSBMYXlvdXRUb0JlQ29udGludWVkOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGlmIChtX1N0ZXAgPCBBVVRPUkVGTE9XX1NURVBfQ1JFQVRFRUxFTUVOVCkgeworICAgICAgICBDcmVhdGVFbGVtZW50KCk7CisgICAgICAgIGlmKG1fcFBhdXNlICYmIG1fcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7CisgICAgICAgICAgICBtX1N0ZXAgPSBBVVRPUkVGTE9XX1NURVBfQ1JFQVRFRUxFTUVOVDsKKyAgICAgICAgICAgIG1fU3RhdHVzID0gTGF5b3V0VG9CZUNvbnRpbnVlZDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobV9TdGVwIDwgQVVUT1JFRkxPV19TVEVQX1JFTU9WRURBVEEpIHsKKyAgICAgICAgaW50IGNvdW50ID0gbV9jZWxsQXJyYXkuR2V0U2l6ZSgpOworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgQ1JGX0NFTEwqIHBDZWxsID0gKENSRl9DRUxMKiltX2NlbGxBcnJheS5HZXRBdChpKTsKKyAgICAgICAgICAgIGlmKHBDZWxsKSB7CisgICAgICAgICAgICAgICAgcENlbGwtPm1fT2JqTGlzdC5SZW1vdmVBbGwoKTsKKyAgICAgICAgICAgICAgICBkZWxldGUgcENlbGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9jZWxsQXJyYXkuUmVtb3ZlQWxsKCk7CisgICAgICAgIGlmKG1fcFBhdXNlICYmIG1fcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7CisgICAgICAgICAgICBtX1N0ZXAgPSBBVVRPUkVGTE9XX1NURVBfUkVNT1ZFREFUQTsKKyAgICAgICAgICAgIG1fU3RhdHVzID0gTGF5b3V0VG9CZUNvbnRpbnVlZDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX1N0ZXAgPSBBVVRPUkVGTE9XX1NURVBfUkVNT1ZFREFUQTsKKyAgICBtX1N0YXR1cyA9IExheW91dEZpbmlzaGVkOworICAgIHJldHVybjsKK30KK3ZvaWQgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6OkNyZWF0ZUVsZW1lbnQoKQoreworICAgIGludCBjb3VudCA9IG1fY2VsbEFycmF5LkdldFNpemUoKTsKKyAgICBDUkZfQ0VMTCogcGxhc3RDZWxsID0gTlVMTDsKKyAgICBDUkZfQ0VMTCogcENlbGwgPSBOVUxMOworICAgIENSRl9DRUxMKiBwTmV4dENlbGwgPSBOVUxMOworICAgIENQREZfQXV0b1JlZmxvd0VsZW1lbnQqIHBQYXJlbnQgPSBtX3BSb290OworICAgIENQREZfQXV0b1JlZmxvd0VsZW1lbnQqIHBDdXJyRWxtID0gTlVMTDsKKyAgICBpbnQgaTsKKyAgICBmb3IoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIHBDZWxsID0gKENSRl9DRUxMKiltX2NlbGxBcnJheS5HZXRBdChpKTsKKyAgICAgICAgaWYoIXBDZWxsKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZihpIDwgY291bnQgLSAxKSB7CisgICAgICAgICAgICBwTmV4dENlbGwgPSAoQ1JGX0NFTEwqKW1fY2VsbEFycmF5LkdldEF0KGkgKyAxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBOZXh0Q2VsbCA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcEN1cnJFbG0gPSBOVUxMOworICAgICAgICBwQ3VyckVsbSA9IEZYX05FVyBDUERGX0F1dG9SZWZsb3dFbGVtZW50KExheW91dFBhcmFncmFwaCwgcFBhcmVudCk7CisgICAgICAgIGlmKHBDdXJyRWxtLT5HZXRUeXBlKCkgPT0gTGF5b3V0UGFyYWdyYXBoICYmIHBsYXN0Q2VsbCkgeworICAgICAgICAgICAgaW50IFNwYWNlQmVmb3JlID0gMDsKKyAgICAgICAgICAgIGlmKHBDZWxsLT5tX0NlbGxXcml0aW5nTW9kZSAhPSBwbGFzdENlbGwtPm1fQ2VsbFdyaXRpbmdNb2RlICkgeworICAgICAgICAgICAgICAgIFNwYWNlQmVmb3JlID0gMjA7CisgICAgICAgICAgICB9IGVsc2UgaWYocENlbGwtPm1fQ2VsbFdyaXRpbmdNb2RlID09IFdyaXRpbmdNb2RlX0xSVEIpIHsKKyAgICAgICAgICAgICAgICBTcGFjZUJlZm9yZSA9IHBsYXN0Q2VsbC0+bV9CQm94LmJvdHRvbSAtIHBDZWxsLT5tX0JCb3gudG9wOworICAgICAgICAgICAgfSBlbHNlIGlmKHBDZWxsLT5tX0NlbGxXcml0aW5nTW9kZSA9PSBXcml0aW5nTW9kZV9UQlJMKSB7CisgICAgICAgICAgICAgICAgU3BhY2VCZWZvcmUgPSBwbGFzdENlbGwtPm1fQkJveC5sZWZ0IC0gcENlbGwtPm1fQkJveC5yaWdodDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKFNwYWNlQmVmb3JlID4gMCkgeworICAgICAgICAgICAgICAgIHBDdXJyRWxtLT5tX1NwYWNlQmVmb3JlID0gU3BhY2VCZWZvcmUgPiA1MCA/IDUwLjBmIDogU3BhY2VCZWZvcmU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQWRkT2JqZWN0QXJyYXkocEN1cnJFbG0sIHBDZWxsLT5tX09iakxpc3QpOworICAgICAgICBwbGFzdENlbGwgPSBwQ2VsbDsKKyAgICB9Cit9Cit2b2lkIENQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyOjpHZW5lcmF0ZVBhcmFncmFwaChDRlhfUHRyQXJyYXkmIGNlbGxBcnJheSkKK3sKKyAgICBpbnQgY291bnQgPSBjZWxsQXJyYXkuR2V0U2l6ZSgpOworICAgIGlmKGNvdW50IDw9IDEpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDUkZfQ0VMTCogcGxhc3RDZWxsID0gKENSRl9DRUxMKiljZWxsQXJyYXkuR2V0QXQoMCk7CisgICAgaWYocGxhc3RDZWxsLT5tX0JCb3guSGVpZ2h0KCkgPiBwbGFzdENlbGwtPm1fQkJveC5XaWR0aCgpKSB7CisgICAgICAgIG1fV3JpdGluZ01vZGUgPSBXcml0aW5nTW9kZV9UQlJMOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fV3JpdGluZ01vZGUgPSBXcml0aW5nTW9kZV9MUlRCOworICAgIH0KKyAgICBGWF9CT09MIGJFbmZvcmNlID0gRkFMU0U7CisgICAgaW50IGkgPSAwOworICAgIGZvcihpID0gMTsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgQ1JGX0NFTEwqIHBDZWxsID0gKENSRl9DRUxMKiljZWxsQXJyYXkuR2V0QXQoaSk7CisgICAgICAgIGlmKCFwQ2VsbCkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaW50IGMgPSBwQ2VsbC0+bV9PYmpMaXN0LkdldENvdW50KCk7CisgICAgICAgIEZYX0JPT0wgYk1lcmdlID0gRkFMU0U7CisgICAgICAgIEZYX1BPU0lUSU9OIHBvczEgPSBwbGFzdENlbGwtPm1fT2JqTGlzdC5HZXRUYWlsUG9zaXRpb24oKTsKKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwTGFzdE9iaiA9IChDUERGX1BhZ2VPYmplY3QqKXBsYXN0Q2VsbC0+bV9PYmpMaXN0LkdldFByZXYocG9zMSk7CisgICAgICAgIHBvczEgPSBwQ2VsbC0+bV9PYmpMaXN0LkdldEhlYWRQb3NpdGlvbigpOworICAgICAgICBDUERGX1BhZ2VPYmplY3QqIHBDdXJPYmogPSAoQ1BERl9QYWdlT2JqZWN0KilwQ2VsbC0+bV9PYmpMaXN0LkdldE5leHQocG9zMSk7CisgICAgICAgIGludCBXcml0aW5nTW9kZSA9IEdldFJlY3RFbmQocENlbGwtPm1fQkJveCk7CisgICAgICAgIGlmKHBDZWxsLT5tX0NlbGxXcml0aW5nTW9kZSA9PSBXcml0aW5nTW9kZV9VTktOT1cpIHsKKyAgICAgICAgICAgIGlmKHBDZWxsLT5tX0JCb3guSGVpZ2h0KCkgPiBwQ2VsbC0+bV9CQm94LldpZHRoKCkpIHsKKyAgICAgICAgICAgICAgICBwQ2VsbC0+bV9DZWxsV3JpdGluZ01vZGUgPSBXcml0aW5nTW9kZV9UQlJMOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwQ2VsbC0+bV9DZWxsV3JpdGluZ01vZGUgPSBXcml0aW5nTW9kZV9MUlRCOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFdyaXRpbmdNb2RlID0gcENlbGwtPm1fQ2VsbFdyaXRpbmdNb2RlOworICAgICAgICBpZihXcml0aW5nTW9kZSA9PSBXcml0aW5nTW9kZV9MUlRCICYmIChtX1N0eWxlLm1fTGFuZ3VhZ2UgJiBMUF9MYW5nX0NoaW5lc2VQUkMgfHwgbV9TdHlsZS5tX0xhbmd1YWdlICYgTFBfTGFuZ19DaGluZXNlVGFpd2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IG1fU3R5bGUubV9MYW5ndWFnZSAmIExQX0xhbmdfSmFwYW5lc2UgfHwgbV9TdHlsZS5tX0xhbmd1YWdlICYgTFBfTGFuZ19Lb3JlYW4pKSB7CisgICAgICAgICAgICBpZihwQ3VyT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9URVhUKSB7CisgICAgICAgICAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dDsKKyAgICAgICAgICAgICAgICBwVGV4dCA9IChDUERGX1RleHRPYmplY3QqKXBDdXJPYmo7CisgICAgICAgICAgICAgICAgaWYocFRleHQtPkNvdW50SXRlbXMoKSkgeworICAgICAgICAgICAgICAgICAgICBDUERGX1RleHRPYmplY3RJdGVtIGl0ZW07CisgICAgICAgICAgICAgICAgICAgIHBUZXh0LT5HZXRJdGVtSW5mbygwLCAmaXRlbSk7CisgICAgICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHN0ciA9IHBUZXh0LT5HZXRGb250KCktPlVuaWNvZGVGcm9tQ2hhckNvZGUoaXRlbS5tX0NoYXJDb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgRlhfV0NIQVIgdW5pY29kZSA9IHN0ci5HZXRBdCgwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYodW5pY29kZSA9PSAzMikgeworICAgICAgICAgICAgICAgICAgICAgICAgcGxhc3RDZWxsID0gcENlbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBiTWVyZ2UgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJFbmZvcmNlID0gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZihtX1dyaXRpbmdNb2RlID09IFdyaXRpbmdNb2RlKSB7CisgICAgICAgICAgICBpZihiRW5mb3JjZSkgeworICAgICAgICAgICAgICAgIGJNZXJnZSA9IEZBTFNFOworICAgICAgICAgICAgICAgIGJFbmZvcmNlID0gRkFMU0U7CisgICAgICAgICAgICAgICAgaWYocEN1ck9iai0+bV9UeXBlID09IFBERlBBR0VfVEVYVCkgeworICAgICAgICAgICAgICAgICAgICBDUERGX1RleHRPYmplY3QqIHBUZXh0OworICAgICAgICAgICAgICAgICAgICBwVGV4dCA9IChDUERGX1RleHRPYmplY3QqKXBDdXJPYmo7CisgICAgICAgICAgICAgICAgICAgIGlmKHBUZXh0LT5Db3VudEl0ZW1zKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENQREZfVGV4dE9iamVjdEl0ZW0gaXRlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBUZXh0LT5HZXRJdGVtSW5mbygwLCAmaXRlbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBzdHIgPSBwVGV4dC0+R2V0Rm9udCgpLT5Vbmljb2RlRnJvbUNoYXJDb2RlKGl0ZW0ubV9DaGFyQ29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBGWF9XQ0hBUiB1bmljb2RlID0gc3RyLkdldEF0KDApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYodW5pY29kZSA+IDk2ICYmIHVuaWNvZGUgPCAxMjMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiTWVyZ2UgPSBUUlVFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQ1BERl9JbWFnZU9iamVjdCogcEltYWdlID0gKENQREZfSW1hZ2VPYmplY3QqKXBDdXJPYmo7CisgICAgICAgICAgICAgICAgICAgIEZYX1JFQ1QgaW1hZ2VCQm94ID0gcEltYWdlLT5HZXRCQm94KCZtX1BERkRpc3BsYXlNYXRyaXgpOworICAgICAgICAgICAgICAgICAgICBpZihHZXRSZWN0RW5kKHBsYXN0Q2VsbC0+bV9CQm94KSAtIEdldFJlY3RFbmQocENlbGwtPm1fQkJveCkgPCBHZXRSZWN0V2lkdGgoaW1hZ2VCQm94KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYk1lcmdlID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYoIWFwcHJvYWNodG8oR2V0UmVjdFN0YXJ0KHBDZWxsLT5tX0JCb3gpLCBHZXRSZWN0U3RhcnQocGxhc3RDZWxsLT5tX0JCb3gpLCBHZXRSZWN0SGVpZ2h0KHBDZWxsLT5tX0JCb3gpIC8gNCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoYXBwcm9hY2h0byhHZXRSZWN0U3RhcnQocGxhc3RDZWxsLT5tX0JCb3gpLCBHZXRSZWN0U3RhcnQocENlbGwtPm1fQkJveCksIEdldFJlY3RIZWlnaHQocENlbGwtPm1fQkJveCkgKiAyLjMpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UmVjdFN0YXJ0KHBsYXN0Q2VsbC0+bV9CQm94KSAtIEdldFJlY3RTdGFydChwQ2VsbC0+bV9CQm94KSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHBDdXJPYmotPm1fVHlwZSA9PSBQREZQQUdFX1RFWFQgfHwgcExhc3RPYmotPm1fVHlwZSA9PSBQREZQQUdFX1RFWFQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1RleHRPYmplY3QqIHBUZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHBDdXJPYmotPm1fVHlwZSA9PSBQREZQQUdFX1RFWFQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFRleHQgPSAoQ1BERl9UZXh0T2JqZWN0KilwQ3VyT2JqOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBUZXh0ID0gKENQREZfVGV4dE9iamVjdCopcExhc3RPYmo7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfVGV4dE9iamVjdEl0ZW0gaXRlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwVGV4dC0+R2V0SXRlbUluZm8oMCwgJml0ZW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGWF9XaWRlU3RyaW5nIHN0ciA9IHBUZXh0LT5HZXRGb250KCktPlVuaWNvZGVGcm9tQ2hhckNvZGUoaXRlbS5tX0NoYXJDb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGWF9XQ0hBUiB1bmljb2RlID0gc3RyLkdldEF0KDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHVuaWNvZGUgPiAyNTUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYk1lcmdlID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYoIWFwcHJvYWNodG8oR2V0UmVjdEVuZChwQ2VsbC0+bV9CQm94KSwgR2V0UmVjdEVuZChwbGFzdENlbGwtPm1fQkJveCksIEdldFJlY3RIZWlnaHQocENlbGwtPm1fQkJveCkgKiAzKSkgeworICAgICAgICAgICAgICAgICAgICBGWF9SRUNUIHJlY3QgPSBwTGFzdE9iai0+R2V0QkJveCgmbV9QREZEaXNwbGF5TWF0cml4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYoYXBwcm9hY2h0byhHZXRSZWN0U3RhcnQocENlbGwtPm1fQkJveCksIEdldFJlY3RTdGFydChwbGFzdENlbGwtPm1fQkJveCksIEdldFJlY3RIZWlnaHQocENlbGwtPm1fQkJveCkgLyA0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYoR2V0UmVjdEVuZChyZWN0KSAtIEdldFJlY3RFbmQocENlbGwtPm1fQkJveCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYk1lcmdlID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiRW5mb3JjZSA9IFRSVUU7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoR2V0UmVjdEVuZChyZWN0KSAtIEdldFJlY3RFbmQocENlbGwtPm1fQkJveCkgPD0gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJlY3RFbmQocmVjdCkgLSBHZXRSZWN0RW5kKHBDZWxsLT5tX0JCb3gpID4gR2V0UmVjdEhlaWdodChwQ2VsbC0+bV9CQm94KSAqIC0zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocEN1ck9iai0+bV9UeXBlID09IFBERlBBR0VfVEVYVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1RleHRPYmplY3QqIHBUZXh0ID0gKENQREZfVGV4dE9iamVjdCopcEN1ck9iajsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9UZXh0T2JqZWN0SXRlbSBpdGVtOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwVGV4dC0+R2V0SXRlbUluZm8oMCwgJml0ZW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBzdHIgPSBwVGV4dC0+R2V0Rm9udCgpLT5Vbmljb2RlRnJvbUNoYXJDb2RlKGl0ZW0ubV9DaGFyQ29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZYX1dDSEFSIHVuaWNvZGUgPSBzdHIuR2V0QXQoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHVuaWNvZGUgPiA5NiAmJiB1bmljb2RlIDwgMTIzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiTWVyZ2UgPSBUUlVFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYk1lcmdlID0gVFJVRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX1dyaXRpbmdNb2RlID0gV3JpdGluZ01vZGU7CisgICAgICAgICAgICBiRW5mb3JjZSA9IEZBTFNFOworICAgICAgICB9CisgICAgICAgIGlmKGJNZXJnZSkgeworICAgICAgICAgICAgaWYoR2V0UmVjdEVuZChwbGFzdENlbGwtPm1fQkJveCkgLSBHZXRSZWN0RW5kKHBDZWxsLT5tX0JCb3gpID4gMzApIHsKKyAgICAgICAgICAgICAgICBiRW5mb3JjZSA9IFRSVUU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGWF9QT1NJVElPTiBwb3MgPSBwQ2VsbC0+bV9PYmpMaXN0LkdldEhlYWRQb3NpdGlvbigpOworICAgICAgICAgICAgd2hpbGUocG9zKSB7CisgICAgICAgICAgICAgICAgcGxhc3RDZWxsLT5tX09iakxpc3QuQWRkVGFpbChwQ2VsbC0+bV9PYmpMaXN0LkdldE5leHQocG9zKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwbGFzdENlbGwtPm1fQkJveC5VbmlvbihwQ2VsbC0+bV9CQm94KTsKKyAgICAgICAgICAgIHBDZWxsLT5tX09iakxpc3QuUmVtb3ZlQWxsKCk7CisgICAgICAgICAgICBkZWxldGUgcENlbGw7CisgICAgICAgICAgICBjZWxsQXJyYXkuUmVtb3ZlQXQoaSk7CisgICAgICAgICAgICBpLS07CisgICAgICAgICAgICBjb3VudC0tOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGxhc3RDZWxsID0gcENlbGw7CisgICAgICAgIH0KKyAgICB9Cit9Cit2b2lkIENQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyOjpQcm9jZXNzT2JqKENGWF9QdHJBcnJheSYgY2VsbEFycmF5LCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIENGWF9BZmZpbmVNYXRyaXggbWF0cml4KQoreworfQorRlhfSU5UMzIgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6OkxvZ2ljUHJlT2JqKENQREZfUGFnZU9iamVjdCogcE9iaikKK3sKKyAgICBDUERGX1BhZ2VPYmplY3QqIHBQcmVPYmogPSBtX3BQcmVPYmo7CisgICAgbV9wUHJlT2JqID0gcE9iajsKKyAgICBpZighcFByZU9iaikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYocFByZU9iai0+bV9UeXBlICE9IHBPYmotPm1fVHlwZSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQ0ZYX0Zsb2F0UmVjdCByY0N1ck9iaihwT2JqLT5tX0xlZnQsIHBPYmotPm1fQm90dG9tLCBwT2JqLT5tX1JpZ2h0LCBwT2JqLT5tX1RvcCk7CisgICAgQ0ZYX0Zsb2F0UmVjdCByY1ByZU9iaihwUHJlT2JqLT5tX0xlZnQsIHBQcmVPYmotPm1fQm90dG9tLCBwUHJlT2JqLT5tX1JpZ2h0LCBwUHJlT2JqLT5tX1RvcCk7CisgICAgaWYocE9iai0+bV9UeXBlID09IFBERlBBR0VfSU1BR0UpIHsKKyAgICAgICAgaWYocmNQcmVPYmouQ29udGFpbnMocmNDdXJPYmopKSB7CisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgfQorICAgICAgICBpZihyY0N1ck9iai5Db250YWlucyhyY1ByZU9iaikpIHsKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZihwT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9URVhUKSB7CisgICAgICAgIGlmKCEoKHJjUHJlT2JqLmJvdHRvbSA+IHJjQ3VyT2JqLnRvcCkgfHwgKHJjUHJlT2JqLnRvcCA8IHJjQ3VyT2JqLmJvdHRvbSkpKSB7CisgICAgICAgICAgICBGWF9GTE9BVCBoZWlnaHQgPSBGWF9NSU4ocmNQcmVPYmouSGVpZ2h0KCksIHJjQ3VyT2JqLkhlaWdodCgpKTsKKyAgICAgICAgICAgIGlmKChyY0N1ck9iai5sZWZ0IC0gcmNQcmVPYmoucmlnaHQpID4gaGVpZ2h0IC8gMykgeworICAgICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmKEZYU1lTX2ZhYnMocmNQcmVPYmouV2lkdGgoKSAtIHJjQ3VyT2JqLldpZHRoKCkpID49IDIgfHwgRlhTWVNfZmFicyhyY1ByZU9iai5IZWlnaHQoKSAtIHJjQ3VyT2JqLkhlaWdodCgpKSA+PSAyICkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiBwUHJlVGV4dE9iaiA9IChDUERGX1RleHRPYmplY3QqKXBQcmVPYmo7CisgICAgICAgIENQREZfVGV4dE9iamVjdCogcEN1clRleHRPYmogPSAoQ1BERl9UZXh0T2JqZWN0KilwT2JqOworICAgICAgICBpbnQgblByZUNvdW50ID0gcFByZVRleHRPYmotPkNvdW50SXRlbXMoKTsKKyAgICAgICAgaW50IG5DdXJDb3VudCA9IHBDdXJUZXh0T2JqLT5Db3VudEl0ZW1zKCk7CisgICAgICAgIGlmIChuUHJlQ291bnQgIT0gbkN1ckNvdW50KSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBGWF9CT09MIGJTYW1lID0gVFJVRTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuUHJlQ291bnQ7IGkrKykgeworICAgICAgICAgICAgQ1BERl9UZXh0T2JqZWN0SXRlbSBpdGVtUGVyLCBpdGVtQ3VyOworICAgICAgICAgICAgcFByZVRleHRPYmotPkdldEl0ZW1JbmZvKGksICZpdGVtUGVyKTsKKyAgICAgICAgICAgIHBDdXJUZXh0T2JqLT5HZXRJdGVtSW5mbyhpLCAmaXRlbUN1cik7CisgICAgICAgICAgICBpZiAoaXRlbUN1ci5tX0NoYXJDb2RlICE9IGl0ZW1QZXIubV9DaGFyQ29kZSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGl0ZW1DdXIubV9PcmlnaW5YICE9IGl0ZW1QZXIubV9PcmlnaW5YKSB7CisgICAgICAgICAgICAgICAgYlNhbWUgPSBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpdGVtQ3VyLm1fT3JpZ2luWSAhPSBpdGVtUGVyLm1fT3JpZ2luWSkgeworICAgICAgICAgICAgICAgIGJTYW1lID0gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYocmNQcmVPYmoubGVmdCA9PSByY0N1ck9iai5sZWZ0ICYmIHJjUHJlT2JqLnRvcCA9PSByY0N1ck9iai50b3ApIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmKEZYU1lTX2ZhYnMocmNQcmVPYmoubGVmdCAtIHJjQ3VyT2JqLmxlZnQpIDwgcmNQcmVPYmouV2lkdGgoKSAvIDMKKyAgICAgICAgICAgICAgICAmJiBGWFNZU19mYWJzKHJjUHJlT2JqLnRvcCAtIHJjQ3VyT2JqLnRvcCkgPCByY1ByZU9iai5IZWlnaHQoKSAvIDMpIHsKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQordm9pZCBDUERGX0F1dG9SZWZsb3dMYXlvdXRQcm92aWRlcjo6R2VuZXJhdGVMaW5lKENGWF9QdHJBcnJheSYgY2VsbEFycmF5KQoreworICAgIENSRl9DRUxMKiBwQ2VsbCA9IE5VTEw7CisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7CisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9wUERGUGFnZS0+R2V0Rmlyc3RPYmplY3RQb3NpdGlvbigpOworICAgIGlmKCFwb3MpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBGWF9GTE9BVCBQREZXaWR0aCA9IG1fcFBERlBhZ2UtPkdldFBhZ2VXaWR0aCgpOworICAgIEZYX0ZMT0FUIFBERkhlaWdodCA9IG1fcFBERlBhZ2UtPkdldFBhZ2VIZWlnaHQoKTsKKyAgICBtX3BQREZQYWdlLT5HZXREaXNwbGF5TWF0cml4KG1fUERGRGlzcGxheU1hdHJpeCwgMCwgMCwgKGludClQREZXaWR0aCwgKGludClQREZIZWlnaHQsIDApOworICAgIENQREZfUGFnZU9iamVjdCogcFBlck9iaiA9IE5VTEw7CisgICAgaW50IGEgPSAwOworICAgIENGWF9GbG9hdFJlY3QgcGFnZUJCb3ggPSBtX3BQREZQYWdlLT5tX0JCb3g7CisgICAgRlhfRkxPQVQgUHJldlggPSAwICwgUHJldlkgPSAwLCBQb3NYLCBQb3NZOworICAgIHdoaWxlKHBvcykgeworICAgICAgICBDUERGX1BhZ2VPYmplY3QqIHBPYmogPSBtX3BQREZQYWdlLT5HZXROZXh0T2JqZWN0KHBvcyk7CisgICAgICAgIGlmKCFwT2JqIHx8IHBPYmotPm1fVHlwZSA9PSBQREZQQUdFX1BBVEgpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGludCBsb2dpYyA9IExvZ2ljUHJlT2JqKHBPYmopOworICAgICAgICBpZihsb2dpYyA9PSAyKSB7CisgICAgICAgICAgICBpZihwQ2VsbCkgeworICAgICAgICAgICAgICAgIHBDZWxsLT5tX09iakxpc3QuU2V0QXQocENlbGwtPm1fT2JqTGlzdC5HZXRUYWlsUG9zaXRpb24oKSwgcE9iaik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocE9iai0+bV9UeXBlID09IFBERlBBR0VfVEVYVCkgeworICAgICAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dE9iaiA9IChDUERGX1RleHRPYmplY3QqKXBPYmo7CisgICAgICAgICAgICBpbnQgdGV4dG1vZGUgPSBwVGV4dE9iai0+bV9UZXh0U3RhdGUuR2V0T2JqZWN0KCktPm1fVGV4dE1vZGU7CisgICAgICAgICAgICBpZihtX1N0eWxlLm1fYklnbm9yZUludmlzaWJsZVRleHQgJiYgcFRleHRPYmotPm1fVGV4dFN0YXRlLkdldE9iamVjdCgpLT5tX1RleHRNb2RlID09IDMpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBvc1ggPSBwVGV4dE9iai0+R2V0UG9zWCgpOworICAgICAgICAgICAgUG9zWSA9IHBUZXh0T2JqLT5HZXRQb3NZKCk7CisgICAgICAgICAgICBtX1BERkRpc3BsYXlNYXRyaXguVHJhbnNmb3JtKFBvc1gsIFBvc1kpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUG9zWCA9IDA7CisgICAgICAgICAgICBQb3NZID0gMDsKKyAgICAgICAgfQorICAgICAgICBGWF9CT09MIGJOZXdMaW5lID0gVFJVRTsKKyAgICAgICAgRlhfUkVDVCBPYmpCQm94ID0gcE9iai0+R2V0QkJveCgmbV9QREZEaXNwbGF5TWF0cml4KTsKKyAgICAgICAgaWYoT2JqQkJveC5sZWZ0ID4gUERGV2lkdGggfHwgT2JqQkJveC5yaWdodCA8IDAgfHwKKyAgICAgICAgICAgICAgICBPYmpCQm94LmJvdHRvbSA8IDAgfHwgT2JqQkJveC50b3AgPiBQREZIZWlnaHQpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmKE9iakJCb3guSXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBhKys7CisgICAgICAgIGlmKCFwQ2VsbCkgeworICAgICAgICAgICAgYk5ld0xpbmUgPSBUUlVFOworICAgICAgICAgICAgbV9Xcml0aW5nTW9kZSA9IEdldFdyaXRpbmdNb2RlKE5VTEwsIHBPYmopOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IFdyaXRpbmdNb2RlID0gR2V0V3JpdGluZ01vZGUocFBlck9iaiwgcE9iaik7CisgICAgICAgICAgICBpZihtX1dyaXRpbmdNb2RlID09IFdyaXRpbmdNb2RlIHx8IG1fV3JpdGluZ01vZGUgPT0gV3JpdGluZ01vZGVfVU5LTk9XIHx8IFdyaXRpbmdNb2RlID09IFdyaXRpbmdNb2RlX1VOS05PVykgeworICAgICAgICAgICAgICAgIGlmKFdyaXRpbmdNb2RlICE9IFdyaXRpbmdNb2RlX1VOS05PVykgeworICAgICAgICAgICAgICAgICAgICBtX1dyaXRpbmdNb2RlID0gV3JpdGluZ01vZGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKG1fV3JpdGluZ01vZGUgPT0gV3JpdGluZ01vZGVfVEJSTCkgeworICAgICAgICAgICAgICAgICAgICBpZighKEdldFJlY3RCb3R0b20oT2JqQkJveCkgPiBHZXRSZWN0VG9wKHBDZWxsLT5tX0JCb3gpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UmVjdFRvcChPYmpCQm94KSA8IEdldFJlY3RCb3R0b20ocENlbGwtPm1fQkJveCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBiTmV3TGluZSA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoIShHZXRSZWN0Qm90dG9tKE9iakJCb3gpIDwgR2V0UmVjdFRvcChwQ2VsbC0+bV9CQm94KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFJlY3RUb3AoT2JqQkJveCkgPiBHZXRSZWN0Qm90dG9tKHBDZWxsLT5tX0JCb3gpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYk5ld0xpbmUgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAocE9iai0+bV9UeXBlID09IFBERlBBR0VfVEVYVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYoRlhTWVNfZmFicyhQcmV2WSAtIFBvc1kpIDwgMSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiTmV3TGluZSA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX1dyaXRpbmdNb2RlID0gV3JpdGluZ01vZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcFBlck9iaiA9IHBPYmo7CisgICAgICAgIGlmKGJOZXdMaW5lKSB7CisgICAgICAgICAgICBpbnQgYyA9IHBDZWxsID8gcENlbGwtPm1fT2JqTGlzdC5HZXRDb3VudCgpIDogMDsKKyAgICAgICAgICAgIHBDZWxsID0gRlhfTkVXIENSRl9DRUxMOworICAgICAgICAgICAgcENlbGwtPm1fQ2VsbFdyaXRpbmdNb2RlID0gbV9Xcml0aW5nTW9kZTsKKyAgICAgICAgICAgIHBDZWxsLT5tX0JCb3ggPSBPYmpCQm94OworICAgICAgICAgICAgaWYocE9iai0+bV9UeXBlID09IFBERlBBR0VfVEVYVCkgeworICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHggPSAoKENQREZfVGV4dE9iamVjdCopcE9iaiktPkdldFBvc1goKSwgeSA9ICgoQ1BERl9UZXh0T2JqZWN0KilwT2JqKS0+R2V0UG9zWSgpOworICAgICAgICAgICAgICAgIG1fUERGRGlzcGxheU1hdHJpeC5UcmFuc2Zvcm0oeCwgeSk7CisgICAgICAgICAgICAgICAgaWYoeCA8IE9iakJCb3gubGVmdCkgeworICAgICAgICAgICAgICAgICAgICBwQ2VsbC0+bV9CQm94LmxlZnQgPSAoaW50KXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcENlbGwtPm1fT2JqTGlzdC5BZGRUYWlsKHBPYmopOworICAgICAgICAgICAgY2VsbEFycmF5LkFkZChwQ2VsbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwQ2VsbC0+bV9PYmpMaXN0LkFkZFRhaWwocE9iaik7CisgICAgICAgICAgICBwQ2VsbC0+bV9CQm94LlVuaW9uKE9iakJCb3gpOworICAgICAgICB9CisgICAgICAgIFByZXZYID0gUG9zWDsKKyAgICAgICAgUHJldlkgPSBQb3NZOworICAgIH0KK30KK0ZYX0ZMT0FUIENQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyOjpHZXRMYXlvdXRPcmRlckhlaWdodChDUERGX1BhZ2VPYmplY3QqIHBDdXJPYmopCit7CisgICAgQ0ZYX0Zsb2F0UmVjdCByY0N1ck9iaihwQ3VyT2JqLT5tX0xlZnQsIHBDdXJPYmotPm1fQm90dG9tLCBwQ3VyT2JqLT5tX1JpZ2h0LCBwQ3VyT2JqLT5tX1RvcCk7CisgICAgaWYgKG1fV3JpdGluZ01vZGUgPT0gV3JpdGluZ01vZGVfVEJSTCkgeworICAgICAgICByZXR1cm4gcmNDdXJPYmouV2lkdGgoKTsKKyAgICB9CisgICAgcmV0dXJuIHJjQ3VyT2JqLkhlaWdodCgpOworfQorRlhfRkxPQVQgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6OkdldExheW91dE9yZGVyV2lkdGgoQ1BERl9QYWdlT2JqZWN0KiBwQ3VyT2JqKQoreworICAgIENGWF9GbG9hdFJlY3QgcmNDdXJPYmoocEN1ck9iai0+bV9MZWZ0LCBwQ3VyT2JqLT5tX0JvdHRvbSwgcEN1ck9iai0+bV9SaWdodCwgcEN1ck9iai0+bV9Ub3ApOworICAgIGlmIChtX1dyaXRpbmdNb2RlID09IFdyaXRpbmdNb2RlX1RCUkwpIHsKKyAgICAgICAgcmV0dXJuIHJjQ3VyT2JqLkhlaWdodCgpOworICAgIH0KKyAgICByZXR1cm4gcmNDdXJPYmouV2lkdGgoKTsKK30KK2ludCBDUERGX0F1dG9SZWZsb3dMYXlvdXRQcm92aWRlcjo6IEdldFJlY3RXaWR0aChGWF9SRUNUIHJlY3QpCit7CisgICAgaWYobV9Xcml0aW5nTW9kZSA9PSBXcml0aW5nTW9kZV9UQlJMKSB7CisgICAgICAgIHJldHVybiByZWN0LkhlaWdodCgpOworICAgIH0KKyAgICByZXR1cm4gcmVjdC5XaWR0aCgpOworfQoraW50IENQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyOjogR2V0UmVjdEhlaWdodChGWF9SRUNUIHJlY3QpCit7CisgICAgaWYobV9Xcml0aW5nTW9kZSA9PSBXcml0aW5nTW9kZV9UQlJMKSB7CisgICAgICAgIHJldHVybiByZWN0LldpZHRoKCk7CisgICAgfQorICAgIHJldHVybiByZWN0LkhlaWdodCgpOworfQoraW50IENQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyOjogR2V0UmVjdFN0YXJ0KEZYX1JFQ1QgcmVjdCkKK3sKKyAgICBpZihtX1dyaXRpbmdNb2RlID09IFdyaXRpbmdNb2RlX1RCUkwpIHsKKyAgICAgICAgcmV0dXJuIHJlY3QudG9wOworICAgIH0KKyAgICByZXR1cm4gcmVjdC5sZWZ0OworfQoraW50IENQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyOjogR2V0UmVjdEVuZChGWF9SRUNUIHJlY3QpCit7CisgICAgaWYobV9Xcml0aW5nTW9kZSA9PSBXcml0aW5nTW9kZV9UQlJMKSB7CisgICAgICAgIHJldHVybiByZWN0LmJvdHRvbTsKKyAgICB9CisgICAgcmV0dXJuIHJlY3QucmlnaHQ7Cit9CitpbnQgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6OiBHZXRSZWN0VG9wKEZYX1JFQ1QgcmVjdCkKK3sKKyAgICBpZihtX1dyaXRpbmdNb2RlID09IFdyaXRpbmdNb2RlX1RCUkwpIHsKKyAgICAgICAgcmV0dXJuIHJlY3QucmlnaHQ7CisgICAgfQorICAgIHJldHVybiByZWN0LnRvcDsKK30KK2ludCBDUERGX0F1dG9SZWZsb3dMYXlvdXRQcm92aWRlcjo6IEdldFJlY3RCb3R0b20oRlhfUkVDVCByZWN0KQoreworICAgIGlmKG1fV3JpdGluZ01vZGUgPT0gV3JpdGluZ01vZGVfVEJSTCkgeworICAgICAgICByZXR1cm4gcmVjdC5sZWZ0OworICAgIH0KKyAgICByZXR1cm4gcmVjdC5ib3R0b207Cit9CitpbnQgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6OkdldFdyaXRpbmdNb2RlKENQREZfUGFnZU9iamVjdCogcFByZU9iaiwgQ1BERl9QYWdlT2JqZWN0KiBwQ3VyT2JqKQoreworICAgIENGWF9GbG9hdFJlY3QgcmNDdXJPYmoocEN1ck9iai0+bV9MZWZ0LCBwQ3VyT2JqLT5tX0JvdHRvbSwgcEN1ck9iai0+bV9SaWdodCwgcEN1ck9iai0+bV9Ub3ApOworICAgIGlmKHBDdXJPYmotPm1fVHlwZSA9PSBQREZQQUdFX1RFWFQpIHsKKyAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiBwdGV4dE9iaiA9IChDUERGX1RleHRPYmplY3QqIClwQ3VyT2JqOworICAgICAgICBpbnQgY291bnQgPSBwdGV4dE9iai0+Q291bnRJdGVtcygpOworICAgICAgICBpZihjb3VudCA+IDEpIHsKKyAgICAgICAgICAgIENQREZfVGV4dE9iamVjdEl0ZW0gSXRlbTEsIEl0ZW0yOworICAgICAgICAgICAgcHRleHRPYmotPkdldEl0ZW1JbmZvKDAsICZJdGVtMSk7CisgICAgICAgICAgICBwdGV4dE9iai0+R2V0SXRlbUluZm8oY291bnQgLSAxLCAmSXRlbTIpOworICAgICAgICAgICAgaWYoSXRlbTIubV9DaGFyQ29kZSA9PSAtMSAmJiBjb3VudCA+IDIpIHsKKyAgICAgICAgICAgICAgICBwdGV4dE9iai0+R2V0SXRlbUluZm8oMiwgJkl0ZW0yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggdGV4dE1hdHJpeDsKKyAgICAgICAgICAgIHB0ZXh0T2JqLT5HZXRUZXh0TWF0cml4KCZ0ZXh0TWF0cml4KTsKKyAgICAgICAgICAgIHRleHRNYXRyaXguVHJhbnNmb3JtKEl0ZW0xLm1fT3JpZ2luWCwgSXRlbTEubV9PcmlnaW5ZKTsKKyAgICAgICAgICAgIHRleHRNYXRyaXguVHJhbnNmb3JtKEl0ZW0yLm1fT3JpZ2luWCwgSXRlbTIubV9PcmlnaW5ZKTsKKyAgICAgICAgICAgIEZYX0ZMT0FUIGR4ID0gRlhTWVNfZmFicyhJdGVtMS5tX09yaWdpblggLSBJdGVtMi5tX09yaWdpblgpOworICAgICAgICAgICAgRlhfRkxPQVQgZHkgPSBGWFNZU19mYWJzKEl0ZW0xLm1fT3JpZ2luWSAtIEl0ZW0yLm1fT3JpZ2luWSk7CisgICAgICAgICAgICByZXR1cm4gZHggPj0gZHkgPyBXcml0aW5nTW9kZV9MUlRCIDogV3JpdGluZ01vZGVfVEJSTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmKG1fV3JpdGluZ01vZGUgIT0gV3JpdGluZ01vZGVfVU5LTk9XKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fV3JpdGluZ01vZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYocFByZU9iaikgeworICAgICAgICBGWF9GTE9BVCB0aHJlc2hvbGQgPSByY0N1ck9iai5XaWR0aCgpIC8gNDsKKyAgICAgICAgaWYobV9Xcml0aW5nTW9kZSA9PSBXcml0aW5nTW9kZV9MUlRCKSB7CisgICAgICAgICAgICBpZihGWFNZU19mYWJzKHBQcmVPYmotPm1fQm90dG9tIC0gcEN1ck9iai0+bV9Cb3R0b20pIDwgdGhyZXNob2xkICogMgorICAgICAgICAgICAgICAgICAgICAmJiBGWFNZU19mYWJzKHBQcmVPYmotPm1fVG9wIC0gcEN1ck9iai0+bV9Ub3ApIDwgdGhyZXNob2xkICogMikgeworICAgICAgICAgICAgICAgIHJldHVybiBtX1dyaXRpbmdNb2RlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRlhfRkxPQVQgbWlkID0gKHBDdXJPYmotPm1fQm90dG9tICsgcEN1ck9iai0+bV9Ub3ApIC8gMjsKKyAgICAgICAgICAgIGlmKG1pZCA+IHBQcmVPYmotPm1fQm90dG9tICYmIG1pZCA8IHBQcmVPYmotPm1fVG9wICYmIHBDdXJPYmotPm1fUmlnaHQgPiBwUHJlT2JqLT5tX1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fV3JpdGluZ01vZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZihtX1dyaXRpbmdNb2RlID09IFdyaXRpbmdNb2RlX1RCUkwpIHsKKyAgICAgICAgICAgIGlmKEZYU1lTX2ZhYnMocFByZU9iai0+bV9MZWZ0IC0gcEN1ck9iai0+bV9MZWZ0KSA8IHRocmVzaG9sZCAqIDIKKyAgICAgICAgICAgICAgICAgICAgJiYgRlhTWVNfZmFicyhwUHJlT2JqLT5tX1JpZ2h0IC0gcEN1ck9iai0+bV9SaWdodCkgPCB0aHJlc2hvbGQgKiAyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fV3JpdGluZ01vZGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBGWF9GTE9BVCBtaWQgPSAocEN1ck9iai0+bV9SaWdodCArIHBDdXJPYmotPm1fTGVmdCkgLyAyOworICAgICAgICAgICAgaWYobWlkID4gcFByZU9iai0+bV9MZWZ0ICYmIG1pZCA8IHBQcmVPYmotPm1fUmlnaHQgJiYgcEN1ck9iai0+bV9Cb3R0b20gPCBwUHJlT2JqLT5tX0JvdHRvbSkgeworICAgICAgICAgICAgICAgIHJldHVybiBtX1dyaXRpbmdNb2RlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmKEZYU1lTX2ZhYnMocFByZU9iai0+bV9MZWZ0IC0gcEN1ck9iai0+bV9MZWZ0KSA8IHRocmVzaG9sZCAmJgorICAgICAgICAgICAgICAgIEZYU1lTX2ZhYnMocFByZU9iai0+bV9Cb3R0b20gLSBwQ3VyT2JqLT5tX0JvdHRvbSkgPiB0aHJlc2hvbGQgKiAyKSB7CisgICAgICAgICAgICByZXR1cm4gV3JpdGluZ01vZGVfVEJSTDsKKyAgICAgICAgfQorICAgICAgICBpZihGWFNZU19mYWJzKHBQcmVPYmotPm1fTGVmdCAtIHBDdXJPYmotPm1fTGVmdCkgPiB0aHJlc2hvbGQgJiYKKyAgICAgICAgICAgICAgICBGWFNZU19mYWJzKHBQcmVPYmotPm1fQm90dG9tIC0gcEN1ck9iai0+bV9Cb3R0b20pIDwgdGhyZXNob2xkICogMikgeworICAgICAgICAgICAgcmV0dXJuIFdyaXRpbmdNb2RlX0xSVEI7CisgICAgICAgIH0KKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgaWYocFByZU9iai0+bV9UeXBlID09IFBERlBBR0VfVEVYVCkgeworICAgICAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiBwdGV4dE9iaiA9IChDUERGX1RleHRPYmplY3QqIClwQ3VyT2JqOworICAgICAgICAgICAgY291bnQgPSBwdGV4dE9iai0+Q291bnRJdGVtcygpOworICAgICAgICB9CisgICAgICAgIGlmKHBQcmVPYmotPm1fVHlwZSAhPSBQREZQQUdFX1RFWFQgfHwgY291bnQgPT0gMSkgeworICAgICAgICAgICAgaWYocEN1ck9iai0+bV9MZWZ0ID4gcFByZU9iai0+bV9SaWdodCkgeworICAgICAgICAgICAgICAgIEZYX0ZMT0FUIG1pZCA9IChwQ3VyT2JqLT5tX1RvcCArIHBDdXJPYmotPm1fQm90dG9tKSAvIDI7CisgICAgICAgICAgICAgICAgaWYobWlkIDwgcFByZU9iai0+bV9Ub3AgJiYgbWlkID4gcFByZU9iai0+bV9Cb3R0b20pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdyaXRpbmdNb2RlX0xSVEI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYocEN1ck9iai0+bV9Ub3AgPCBwUHJlT2JqLT5tX0JvdHRvbSkgeworICAgICAgICAgICAgICAgIEZYX0ZMT0FUIG1pZCA9IChwQ3VyT2JqLT5tX0xlZnQgKyBwQ3VyT2JqLT5tX1JpZ2h0KSAvIDI7CisgICAgICAgICAgICAgICAgaWYobWlkIDwgcFByZU9iai0+bV9SaWdodCAmJiBtaWQgPiBwUHJlT2JqLT5tX0xlZnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdyaXRpbmdNb2RlX1RCUkw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBXcml0aW5nTW9kZV9VTktOT1c7Cit9CitMYXlvdXRTdGF0dXMgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI6OlN0YXJ0TG9hZChJRlhfUGF1c2UqIHBQYXVzZSkKK3sKKyAgICBtX3BQYXVzZSA9IHBQYXVzZTsKKyAgICBtX3BSb290ID0gRlhfTkVXIENQREZfQXV0b1JlZmxvd0VsZW1lbnQoTGF5b3V0RG9jdW1lbnQpOworICAgIGlmKCFtX3BSb290KSB7CisgICAgICAgIHJldHVybiBMYXlvdXRFcnJvcjsKKyAgICB9CisgICAgbV9TdGVwID0gMDsKKyAgICByZXR1cm4gQ29udGludWUoKTsKK30KK0xheW91dFN0YXR1cyBDUERGX0F1dG9SZWZsb3dMYXlvdXRQcm92aWRlcjo6Q29udGludWUoKQoreworICAgIEdlbmVyYXRlU3RydWN0VHJlZSgpOworICAgIHJldHVybiBtX1N0YXR1czsKK30KK2ludAlDUERGX0F1dG9SZWZsb3dMYXlvdXRQcm92aWRlcjo6R2V0UG9zaXRpb24oKQoreworICAgIGlmKG1fU3RlcCA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBtX1N0ZXAgKiAxMDAgLyBBVVRPUkVGTE9XX1NURVBfUkVNT1ZFREFUQTsKKyAgICB9Cit9CitGWF9GTE9BVCBDUERGX0F1dG9SZWZsb3dMYXlvdXRQcm92aWRlcjo6R2V0T2JqTWluQ2VsbChDUERGX1BhZ2VPYmplY3QqIHBPYmopCit7CisgICAgaWYoIXBPYmopIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmKHBPYmotPm1fVHlwZSAhPSBQREZQQUdFX1RFWFQpIHsKKyAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7CisgICAgICAgIEZYX1JFQ1QgcmVjdCA9IHBPYmotPkdldEJCb3goJm1hdHJpeCk7CisgICAgICAgIHJldHVybiAoRlhfRkxPQVQpKHJlY3QuV2lkdGgoKSk7CisgICAgfQorICAgIENQREZfVGV4dE9iamVjdCogcFRleHRPYmogPSAoQ1BERl9UZXh0T2JqZWN0KiApcE9iajsKKyAgICBpbnQgY291bnQgPSBwVGV4dE9iai0+Q291bnRJdGVtcygpOworICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIENQREZfVGV4dE9iamVjdEl0ZW0gSXRlbTsKKyAgICAgICAgcFRleHRPYmotPkdldEl0ZW1JbmZvKGksICZJdGVtKTsKKyAgICAgICAgaWYoSXRlbS5tX0NoYXJDb2RlID09IC0xKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZigoSXRlbS5tX0NoYXJDb2RlID4gNDcgJiYgSXRlbS5tX0NoYXJDb2RlIDwgNTgpIHx8IChJdGVtLm1fQ2hhckNvZGUgPiA2NCAmJiBJdGVtLm1fQ2hhckNvZGUgPCA5MSkKKyAgICAgICAgICAgICAgICB8fCAoSXRlbS5tX0NoYXJDb2RlID4gOTYgJiYgSXRlbS5tX0NoYXJDb2RlIDwgMTIzKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYoSXRlbS5tX0NoYXJDb2RlID4gMTI3IHx8IChJdGVtLm1fQ2hhckNvZGUgPiAzMiAmJiBJdGVtLm1fQ2hhckNvZGUgPCAzNSkgfHwgSXRlbS5tX0NoYXJDb2RlID09IDM3IHx8CisgICAgICAgICAgICAgICAgKEl0ZW0ubV9DaGFyQ29kZSA+IDM4ICYmIEl0ZW0ubV9DaGFyQ29kZSA8IDQyKSB8fCBJdGVtLm1fQ2hhckNvZGUgPT0gNDQgfHwgSXRlbS5tX0NoYXJDb2RlID09IDQ2IHx8CisgICAgICAgICAgICAgICAgSXRlbS5tX0NoYXJDb2RlID09IDU4IHx8IEl0ZW0ubV9DaGFyQ29kZSA9PSA1OSB8fCBJdGVtLm1fQ2hhckNvZGUgPT0gNjMgfHwgSXRlbS5tX0NoYXJDb2RlID09IDkzKSB7CisgICAgICAgICAgICBpZihpID09IGNvdW50IC0gMSkgeworICAgICAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4OworICAgICAgICAgICAgICAgIEZYX1JFQ1QgcmVjdCA9IHBPYmotPkdldEJCb3goJm1hdHJpeCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChGWF9GTE9BVCkocmVjdC5XaWR0aCgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcFRleHRPYmotPkdldEl0ZW1JbmZvKGkgKyAxLCAmSXRlbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZW0ubV9PcmlnaW5YOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBJdGVtLm1fT3JpZ2luWDsKKyAgICB9CisgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7CisgICAgRlhfUkVDVCByZWN0ID0gcE9iai0+R2V0QkJveCgmbWF0cml4KTsKKyAgICByZXR1cm4gKEZYX0ZMT0FUKShyZWN0LldpZHRoKCkpOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvcmVmbG93L2F1dG9yZWZsb3cuaCBiL2NvcmUvc3JjL3JlZmxvdy9hdXRvcmVmbG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4ZjMzYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL3JlZmxvdy9hdXRvcmVmbG93LmgKQEAgLTAsMCArMSwxMjIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpZm5kZWYgX0FVVE9SRUZMT1dfSAorI2RlZmluZSBfQVVUT1JFRkxPV19ICisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9yZWZsb3cvcmVmbG93ZW5naW5lLmgiCisjaW5jbHVkZSAicmVmbG93ZWRwYWdlLmgiCitjbGFzcyBDUERGX0F1dG9SZWZsb3dFbGVtZW50OworY2xhc3MgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXI7Cit0eXBlZGVmIENGWF9BcnJheVRlbXBsYXRlPENQREZfQXV0b1JlZmxvd0VsZW1lbnQqPiBDQVJfRWxtUHRyQXJyYXk7Cit0eXBlZGVmIENGWF9BcnJheVRlbXBsYXRlPENQREZfUGFnZU9iamVjdCo+IENBUl9PYmpQdHJBcnJheTsKK2NsYXNzIENSRl9DRUxMIDogcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICBDUkZfQ0VMTCgpIHsgfTsKKyAgICB+Q1JGX0NFTEwoKSB7IH07CisgICAgQ0ZYX1B0ckxpc3QJCW1fT2JqTGlzdDsKKyAgICBpbnQJCQltX0NlbGxXcml0aW5nTW9kZTsKKyAgICBGWF9SRUNUCQltX0JCb3g7Cit9OworY2xhc3MgQ1BERl9BdXRvUmVmbG93RWxlbWVudCA6IHB1YmxpYyBJUERGX0xheW91dEVsZW1lbnQsIHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgQ1BERl9BdXRvUmVmbG93RWxlbWVudChMYXlvdXRUeXBlIGxheW91dFR5cGUgPSBMYXlvdXRVbmtub3duICwgQ1BERl9BdXRvUmVmbG93RWxlbWVudCogcFBhcmVudCA9IE5VTEwpIDsKKyAgICB+Q1BERl9BdXRvUmVmbG93RWxlbWVudCgpOworICAgIExheW91dFR5cGUgR2V0VHlwZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9FbG1UeXBlOworICAgIH0KKyAgICB2b2lkCUdldFJlY3QoQ0ZYX0Zsb2F0UmVjdCYgcmNSZWN0KSB7fTsKKworICAgIGludCAgQ291bnRBdHRyVmFsdWVzKExheW91dEF0dHIgYXR0cl90eXBlKTsKKyAgICBMYXlvdXRFbnVtICBHZXRFbnVtQXR0cihMYXlvdXRBdHRyIGF0dHJfdHlwZSwgaW50IGluZGV4KTsKKyAgICBGWF9GTE9BVCBHZXROdW1iZXJBdHRyKExheW91dEF0dHIgYXR0cl90eXBlLCBpbnQgaW5kZXgpOworICAgIEZYX0NPTE9SUkVGIEdldENvbG9yQXR0cihMYXlvdXRBdHRyIGF0dHJfdHlwZSwgaW50IGluZGV4KTsKKworICAgIGludCAgQ291bnRDaGlsZHJlbigpCisgICAgeworICAgICAgICByZXR1cm4gbV9DaGlsZEFycmF5LkdldFNpemUoKTsKKyAgICB9CisgICAgSVBERl9MYXlvdXRFbGVtZW50KiBHZXRDaGlsZChpbnQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gbV9DaGlsZEFycmF5LkdldEF0KGluZGV4KTsKKyAgICB9CisKKyAgICBJUERGX0xheW91dEVsZW1lbnQqIEdldFBhcmVudCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9wUGFyZW50RWxtOworICAgIH0KKyAgICBpbnQJCUNvdW50T2JqZWN0cygpCisgICAgeworICAgICAgICByZXR1cm4gbV9PYmpBcnJheS5HZXRTaXplKCk7CisgICAgfQorICAgIENQREZfUGFnZU9iamVjdCoJR2V0T2JqZWN0KGludCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX09iakFycmF5LkdldEF0KGluZGV4KTsKKyAgICB9CisgICAgQ1BERl9BdXRvUmVmbG93RWxlbWVudCogbV9wUGFyZW50RWxtOworICAgIExheW91dFR5cGUJCW1fRWxtVHlwZTsKKyAgICBDQVJfRWxtUHRyQXJyYXkgbV9DaGlsZEFycmF5OworICAgIENBUl9PYmpQdHJBcnJheSBtX09iakFycmF5OworICAgIEZYX0ZMT0FUCQltX1NwYWNlQmVmb3JlOworfTsKKyNkZWZpbmUgQVVUT1JFRkxPV19TVEVQX0dFTkVSQVRFTElORQkJMQorI2RlZmluZSBBVVRPUkVGTE9XX1NURVBfR0VORVJBVEVQYXJhZ3JhcGgJMgorI2RlZmluZSBBVVRPUkVGTE9XX1NURVBfQ1JFQVRFRUxFTUVOVAkJMworI2RlZmluZSBBVVRPUkVGTE9XX1NURVBfUkVNT1ZFREFUQQkJCTQKK2NsYXNzIENQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyIDogcHVibGljIElQREZfTGF5b3V0UHJvdmlkZXIsIHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgQ1BERl9BdXRvUmVmbG93TGF5b3V0UHJvdmlkZXIoQ1BERl9QYWdlT2JqZWN0cyogcFBhZ2UsIEZYX0JPT0wgYlJlYWRPcmRlcik7CisgICAgfkNQREZfQXV0b1JlZmxvd0xheW91dFByb3ZpZGVyKCk7CisgICAgdm9pZAlTZXRMYXlvdXRQcm92aWRlclN0eWxlKExBWU9VVFBST1ZJREVSX1NUWUxFIFN0eWxlKQorICAgIHsKKyAgICAgICAgbV9TdHlsZSA9IFN0eWxlOworICAgIH0KKyAgICBMYXlvdXRTdGF0dXMgU3RhcnRMb2FkKElGWF9QYXVzZSogcFBhdXNlID0gTlVMTCk7CisgICAgTGF5b3V0U3RhdHVzIENvbnRpbnVlKCk7CisgICAgaW50CSAJCUdldFBvc2l0aW9uKCk7CisgICAgSVBERl9MYXlvdXRFbGVtZW50KiBHZXRSb290KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BSb290OworICAgIH0KKyAgICBGWF9GTE9BVCBHZXRPYmpNaW5DZWxsKENQREZfUGFnZU9iamVjdCogcE9iaik7CisgICAgdm9pZCBDb252ZXIyQXBwcmVjZU9yZGVyKGNvbnN0IENQREZfUGFnZU9iamVjdHMqIHBTdHJlYW1PcmRlck9ianMsIENQREZfUGFnZU9iamVjdHMqIHBBcHByYWNlT3JkZXJPYmpzKTsKKyAgICB2b2lkCVJlbGVhc2VFbG0oQ1BERl9BdXRvUmVmbG93RWxlbWVudComIHBFbG0sIEZYX0JPT0wgYlJlbGVhc2VDaGlsZHJlbiA9IFRSVUUpOworICAgIHZvaWQgR2VuZXJhdGVDZWxsKCk7CisgICAgdm9pZCBHZW5lcmF0ZVN0cnVjdFRyZWUoKTsKKyAgICB2b2lkIEdlbmVyYXRlTGluZShDRlhfUHRyQXJyYXkmIGNlbGxBcnJheSk7CisgICAgdm9pZCBHZW5lcmF0ZVBhcmFncmFwaChDRlhfUHRyQXJyYXkmIGNlbGxBcnJheSk7CisgICAgdm9pZCBDcmVhdGVFbGVtZW50KCk7CisgICAgdm9pZCBBZGRPYmplY3RBcnJheShDUERGX0F1dG9SZWZsb3dFbGVtZW50KiBwRWxtLCBDRlhfUHRyTGlzdCYgT2JqTGlzdCk7CisgICAgRlhfRkxPQVQgR2V0TGF5b3V0T3JkZXJIZWlnaHQoQ1BERl9QYWdlT2JqZWN0KiBwQ3VyT2JqKTsKKyAgICBGWF9GTE9BVCBHZXRMYXlvdXRPcmRlcldpZHRoKENQREZfUGFnZU9iamVjdCogcEN1ck9iaik7CisgICAgaW50IEdldFdyaXRpbmdNb2RlKENQREZfUGFnZU9iamVjdCogcFByZU9iaiwgQ1BERl9QYWdlT2JqZWN0KiBwQ3VyT2JqKTsKKyAgICBpbnQgR2V0UmVjdFN0YXJ0KEZYX1JFQ1QgcmVjdCk7CisgICAgaW50IEdldFJlY3RFbmQoRlhfUkVDVCByZWN0KTsKKyAgICBpbnQgR2V0UmVjdFRvcChGWF9SRUNUIHJlY3QpOworICAgIGludCBHZXRSZWN0Qm90dG9tKEZYX1JFQ1QgcmVjdCk7CisgICAgaW50IEdldFJlY3RIZWlnaHQoRlhfUkVDVCByZWN0KTsKKyAgICBpbnQgR2V0UmVjdFdpZHRoKEZYX1JFQ1QgcmVjdCk7CisgICAgdm9pZCBQcm9jZXNzT2JqKENGWF9QdHJBcnJheSYgY2VsbEFycmF5LCBDUERGX1BhZ2VPYmplY3QqIHBPYmosIENGWF9BZmZpbmVNYXRyaXggbWF0cml4KTsKKyAgICBGWF9JTlQzMiBMb2dpY1ByZU9iaihDUERGX1BhZ2VPYmplY3QqIHBPYmopOworCisgICAgQ1BERl9BdXRvUmVmbG93RWxlbWVudCogbV9wUm9vdDsKKyAgICBDUERGX0F1dG9SZWZsb3dFbGVtZW50KiBtX3BDdXJyRWxtOworICAgIENQREZfUGFnZSoJbV9wUERGUGFnZTsKKyAgICBJRlhfUGF1c2UqCW1fcFBhdXNlOworICAgIENGWF9BZmZpbmVNYXRyaXggbV9QREZEaXNwbGF5TWF0cml4OworICAgIENQREZfUGFnZU9iamVjdCogbV9wUHJlT2JqOworICAgIExheW91dFN0YXR1cyBtX1N0YXR1czsKKyAgICBpbnQgbV9Xcml0aW5nTW9kZTsKKyAgICBDRlhfUHRyQXJyYXkgbV9DZWxsQXJyYXk7CisgICAgRlhfQk9PTAkJIG1fYlJlYWRPcmRlcjsKKyAgICBMQVlPVVRQUk9WSURFUl9TVFlMRSBtX1N0eWxlOworICAgIENGWF9QdHJBcnJheSBtX2NlbGxBcnJheTsKKyAgICBpbnQJCQltX1N0ZXA7Cit9OworI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL3NyYy9yZWZsb3cvbGF5b3V0cHJvY2Vzc29yX3JlZmxvdy5jcHAgYi9jb3JlL3NyYy9yZWZsb3cvbGF5b3V0cHJvY2Vzc29yX3JlZmxvdy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJmYTdlOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL3JlZmxvdy9sYXlvdXRwcm9jZXNzb3JfcmVmbG93LmNwcApAQCAtMCwwICsxLDE1NjAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL3JlZmxvdy9yZWZsb3dlbmdpbmUuaCIKKyNpbmNsdWRlICJyZWZsb3dlZHBhZ2UuaCIKKyNpbmNsdWRlICJsYXlvdXRwcm92aWRlcl90YWdnZWRwZGYuaCIKK0lQREZfTGF5b3V0UHJvY2Vzc29yKiBJUERGX0xheW91dFByb2Nlc3Nvcjo6Q3JlYXRlX0xheW91dFByb2Nlc3Nvcl9SZWZsb3coRlhfRkxPQVQgVG9wSW5kZW50LCBGWF9GTE9BVCBmV2lkdGgsIEZYX0ZMT0FUIGZIZWlnaHQsIHZvaWQqIHBSZWZsb3dlZFBhZ2UsIGludCBmbGFncywgRlhfRkxPQVQgbGluZVNwYWNlICkKK3sKKyAgICBpZihwUmVmbG93ZWRQYWdlID09IE5VTEwgfHwgZldpZHRoIDw9IDIwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3cqIHBSZWZsb3dFbmdpbmUgPSBGWF9ORVcgQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93KCk7CisgICAgaWYgKE5VTEwgPT0gcFJlZmxvd0VuZ2luZSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcFJlZmxvd0VuZ2luZS0+SW5pdChUb3BJbmRlbnQsIGZXaWR0aCwgZkhlaWdodCwgKENQREZfUmVmbG93ZWRQYWdlKilwUmVmbG93ZWRQYWdlLCBmbGFncywgbGluZVNwYWNlKTsKKyAgICByZXR1cm4gcFJlZmxvd0VuZ2luZTsKK30KK0NQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdzo6Q1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93KCkKK3sKKyAgICBtX3BQYXVzZSA9IE5VTEw7CisgICAgbV9wTGF5b3V0RWxlbWVudCA9IE5VTEw7CisgICAgbV9mUmVmV2lkdGggPSAwOworICAgIG1fZlJlZldpZHRoID0gMDsKKyAgICBtX2ZDdXJyTGluZVdpZHRoID0gMDsKKyAgICBtX2ZDdXJyTGluZUhlaWdodCA9IDA7CisgICAgbV9iSWxsdXN0cmF0aW9uID0gRkFMU0U7CisgICAgbV9wUHJlT2JqID0gTlVMTDsKKyAgICBtX3BDdXJyTGluZSA9IEZYX05FVyBDUkZfRGF0YVB0ckFycmF5KDUwKTsKKyAgICBtX3BUZW1wTGluZSA9IEZYX05FVyBDUkZfRGF0YVB0ckFycmF5KDUwKTsKKyAgICBtX1N0YXJ0SW5kZW50ID0gMDsKKyAgICBtX1BhdXNlUG9zaXRpb24gPSAwOworfQorQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93Ojp+Q1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93KCkKK3sKKyAgICBpZiAobV9wQ3VyckxpbmUpIHsKKyAgICAgICAgbV9wQ3VyckxpbmUtPlJlbW92ZUFsbCgpOworICAgICAgICBkZWxldGUgbV9wQ3VyckxpbmU7CisgICAgfQorICAgIG1fcEN1cnJMaW5lID0gTlVMTDsKKyAgICBpZiAobV9wVGVtcExpbmUpIHsKKyAgICAgICAgbV9wVGVtcExpbmUtPlJlbW92ZUFsbCgpOworICAgICAgICBkZWxldGUgbV9wVGVtcExpbmU7CisgICAgfQorICAgIG1fcFRlbXBMaW5lID0gTlVMTDsKK30KK3ZvaWQgQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93OjpJbml0KEZYX0ZMT0FUIFRvcEluZGVudCwgRlhfRkxPQVQgZldpZHRoLCBGWF9GTE9BVCBmSGVpZ2h0LCBDUERGX1JlZmxvd2VkUGFnZSogcFJlZmxvd2VkUGFnZSwgaW50IGZsYWdzLCBGWF9GTE9BVCBsaW5lU3BhY2UpCit7CisgICAgbV9wTGF5b3V0RWxlbWVudCA9IE5VTEw7CisgICAgbV9Ub3BJbmRlbnQgPSBUb3BJbmRlbnQ7CisgICAgbV9TdGF0dXMgPSBMYXlvdXRSZWFkeTsKKyAgICBtX2ZsYWdzID0gZmxhZ3M7CisgICAgbV9wUmVmbG93ZWRQYWdlID0gcFJlZmxvd2VkUGFnZTsKKyAgICBtX2ZTY3JlZW5IZWlnaHQgPSBmSGVpZ2h0OworICAgIG1fZlJlZldpZHRoID0gZldpZHRoOworICAgIG1fZkN1cnJMaW5lSGVpZ2h0ID0gMDsKKyAgICBtX2ZDdXJyTGluZVdpZHRoID0gMDsKKyAgICBtX2ZMaW5lU3BhY2UgPSBsaW5lU3BhY2U7CisgICAgcFJlZmxvd2VkUGFnZS0+bV9QYWdlV2lkdGggPSBmV2lkdGg7CisgICAgcFJlZmxvd2VkUGFnZS0+bV9QYWdlSGVpZ2h0ID0gVG9wSW5kZW50OworfQordm9pZCBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OkZpdFBhZ2VNb2RlKCkKK3sKKyAgICBpZihtX2ZsYWdzICYgUkZfUEFSU0VSX1BBR0VNT0RFICYmIG1fZlNjcmVlbkhlaWdodCA+IDIwKSB7CisgICAgICAgIGZsb2F0IGZpdFBhZ2VIZWlnaHQgPSBtX2ZTY3JlZW5IZWlnaHQ7CisgICAgICAgIENQREZfUmVmbG93ZWRQYWdlKiBwUkZQYWdlID0gbV9wUmVmbG93ZWRQYWdlOworICAgICAgICBpbnQgY291bnQgPSBwUkZQYWdlLT5tX3BSZWZsb3dlZC0+R2V0U2l6ZSgpOworICAgICAgICBDRlhfV29yZEFycmF5IGR5OworICAgICAgICBkeS5BZGQoMCk7CisgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICBpbnQgc2NyZWVuQ291bnQgPSAxOworICAgICAgICBGWF9GTE9BVCBoID0gcFJGUGFnZS0+R2V0UGFnZUhlaWdodCgpOworICAgICAgICB3aGlsZSAoaCA+IHNjcmVlbkNvdW50ICogZml0UGFnZUhlaWdodCkgeworICAgICAgICAgICAgRlhfRkxPQVQgdGVtcFBhZ2VIZWlnaHQgPSBzY3JlZW5Db3VudCAqIGZpdFBhZ2VIZWlnaHQ7CisgICAgICAgICAgICBpbnQgaiA9IDA7CisgICAgICAgICAgICBGWF9GTE9BVCB0ZW1wRHkgPSAwOworICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICBDUkZfRGF0YSogcERhdGEgPSAoKnBSRlBhZ2UtPm1fcFJlZmxvd2VkKVtpXTsKKyAgICAgICAgICAgICAgICBGWF9GTE9BVCBwb3NZOworICAgICAgICAgICAgICAgIHBvc1kgPSBwRGF0YS0+bV9Qb3NZOworICAgICAgICAgICAgICAgIGlmKEZYU1lTX2ZhYnMocG9zWSkgPiB0ZW1wUGFnZUhlaWdodCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfZmFicyhwb3NZICsgcERhdGEtPm1fSGVpZ2h0KSA8IHRlbXBQYWdlSGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmKGogPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYocERhdGEtPm1fSGVpZ2h0ID4gZml0UGFnZUhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgem9vbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHNwYWNlaCA9IHNjcmVlbkNvdW50ICogZml0UGFnZUhlaWdodCArIHBvc1kgKyBwRGF0YS0+bV9IZWlnaHQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihzcGFjZWggPCBmaXRQYWdlSGVpZ2h0IC8gMyAqIDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZWggPSBmaXRQYWdlSGVpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgem9vbSA9IHNwYWNlaCAvIHBEYXRhLT5tX0hlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEeSA9IHNwYWNlaCAtIHBEYXRhLT5tX0hlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBEYXRhLT5tX0hlaWdodCA9IHNwYWNlaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBEYXRhLT5tX1dpZHRoICo9IHpvb207CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBkeSA9IHBEYXRhLT5tX1Bvc1kgKyBwRGF0YS0+bV9IZWlnaHQgKyB0ZW1wUGFnZUhlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgaWYoZHkgPiB0ZW1wRHkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEeSA9IGR5OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmKEZYU1lTX2ZhYnMocG9zWSArIHBEYXRhLT5tX0hlaWdodCkgPiB0ZW1wUGFnZUhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IoOyBqIDwgY291bnQ7IGorKykgeworICAgICAgICAgICAgICAgIENSRl9EYXRhKiBwRGF0YSA9ICgqcFJGUGFnZS0+bV9wUmVmbG93ZWQpW2pdOworICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHBvc1k7CisgICAgICAgICAgICAgICAgcG9zWSA9IHBEYXRhLT5tX1Bvc1k7CisgICAgICAgICAgICAgICAgaWYoRlhTWVNfZmFicyhwb3NZKSA+IHRlbXBQYWdlSGVpZ2h0ICkgeworICAgICAgICAgICAgICAgICAgICBwRGF0YS0+bV9Qb3NZIC09IHRlbXBEeTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYocERhdGEtPm1fSGVpZ2h0ID49IGZpdFBhZ2VIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcERhdGEtPm1fSGVpZ2h0ID0gZml0UGFnZUhlaWdodCAtIDE7CisgICAgICAgICAgICAgICAgICAgIGlmKHBEYXRhLT5HZXRUeXBlKCkgPT0gQ1JGX0RhdGE6OlRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENSRl9DaGFyRGF0YSogcENoYXJEYXRhID0gKENSRl9DaGFyRGF0YSopcERhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICBwQ2hhckRhdGEtPm1fcENoYXJTdGF0ZS0+bV9mRm9udFNpemUgPSBwRGF0YS0+bV9IZWlnaHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwUkZQYWdlLT5tX1BhZ2VIZWlnaHQgKz0gdGVtcER5OworICAgICAgICAgICAgaCArPSB0ZW1wRHk7CisgICAgICAgICAgICBzY3JlZW5Db3VudCsrOworICAgICAgICB9CisgICAgfQorfQorTGF5b3V0U3RhdHVzIENQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdzo6U3RhcnRQcm9jZXNzKElQREZfTGF5b3V0RWxlbWVudCogcEVsZW1lbnQsIElGWF9QYXVzZSogcFBhdXNlLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwUERGTWF0cml4KQoreworICAgIGlmKCFwRWxlbWVudCkgeworICAgICAgICByZXR1cm4gTGF5b3V0RXJyb3I7CisgICAgfQorICAgIG1fcFBhdXNlID0gcFBhdXNlOworICAgIG1fUERGTWF0cml4ID0gKnBQREZNYXRyaXg7CisgICAgbV9wUm9vdEVsZW1lbnQgPSBwRWxlbWVudDsKKyAgICBQcm9jZXNzRWxlbWVudChtX3BSb290RWxlbWVudCwgbV9mUmVmV2lkdGgpOworICAgIGlmKG1fU3RhdHVzID09IExheW91dFRvQmVDb250aW51ZWQpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFRvQmVDb250aW51ZWQ7CisgICAgfQorICAgIG1fU3RhdHVzID0gTGF5b3V0RmluaXNoZWQ7CisgICAgRml0UGFnZU1vZGUoKTsKKyAgICByZXR1cm4gTGF5b3V0RmluaXNoZWQ7Cit9CitMYXlvdXRTdGF0dXMgQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93OjpDb250aW51ZSgpCit7CisgICAgaW50IHNpemUgPSBtX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkLT5HZXRTaXplKCk7CisgICAgUHJvY2Vzc0VsZW1lbnQobV9wUm9vdEVsZW1lbnQsIG1fQ3VyclJlZldpZHRoKTsKKyAgICBzaXplID0gbV9wUmVmbG93ZWRQYWdlLT5tX3BSZWZsb3dlZC0+R2V0U2l6ZSgpOworICAgIGlmKG1fU3RhdHVzID09IExheW91dFJlYWR5KSB7CisgICAgICAgIG1fU3RhdHVzID0gTGF5b3V0RmluaXNoZWQ7CisgICAgICAgIEZpdFBhZ2VNb2RlKCk7CisgICAgfQorICAgIHJldHVybiBtX1N0YXR1czsKK30KK2ludCBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OkdldFBvc2l0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9QYXVzZVBvc2l0aW9uOworfQorRlhfQk9PTAlDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OklzQ2FuQnJlYWtBZnRlcihGWF9EV09SRCB1bmljb2RlKQoreworICAgIGlmKHVuaWNvZGUgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBzd2l0Y2godW5pY29kZSkgeworICAgICAgICBjYXNlIDQwOgorICAgICAgICBjYXNlIDkxOgorICAgICAgICBjYXNlIDEyMzoKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgaWYodW5pY29kZSA+PSAyNTYpIHsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfSBlbHNlIGlmKHVuaWNvZGUgPj0gNDggJiYgdW5pY29kZSA8PSA1NykgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfSBlbHNlIGlmKHVuaWNvZGUgPj0gNjQgJiYgdW5pY29kZSA8PSA5MCkgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfSBlbHNlIGlmKHVuaWNvZGUgPj0gOTcgJiYgdW5pY29kZSA8PSAxMjIpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KK0ZYX0JPT0wJQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93OjpJc0NhbkJyZWFrQmVmb3JlKEZYX0RXT1JEIHVuaWNvZGUpCit7CisgICAgaWYodW5pY29kZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIHN3aXRjaCh1bmljb2RlKSB7CisgICAgICAgIGNhc2UgMzM6CisgICAgICAgIGNhc2UgNDE6CisgICAgICAgIGNhc2UgNDQ6CisgICAgICAgIGNhc2UgNDY6CisgICAgICAgIGNhc2UgNTk6CisgICAgICAgIGNhc2UgNjM6CisgICAgICAgIGNhc2UgOTM6CisgICAgICAgIGNhc2UgMTI1OgorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBpZih1bmljb2RlID49IDI1NikgeworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9IGVsc2UgaWYodW5pY29kZSA+PSA0OCAmJiB1bmljb2RlIDw9IDU3KSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9IGVsc2UgaWYodW5pY29kZSA+PSA2NCAmJiB1bmljb2RlIDw9IDkwKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9IGVsc2UgaWYodW5pY29kZSA+PSA5NyAmJiB1bmljb2RlIDw9IDEyMikgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQordm9pZCBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OlByb2Nlc3NUYWJsZShGWF9GTE9BVCBkeCkKK3sKKyAgICBpZihtX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkLT5HZXRTaXplKCkgPT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIENSRl9UYWJsZSogcFRhYmxlID0gbV9UYWJsZUFycmF5LkdldEF0KG1fVGFibGVBcnJheS5HZXRTaXplKCkgLSAxKTsKKyAgICBpbnQgcm93Q291bnQgPSBwVGFibGUtPm1fbkNlbGwuR2V0U2l6ZSgpOworICAgIGludCBuID0gMDsKKyAgICBGWF9GTE9BVCogZHlSb3cgPSBGWF9BbGxvYyhGWF9GTE9BVCwgcm93Q291bnQgKyAxKTsKKyAgICBGWFNZU19tZW1zZXQzMihkeVJvdywgMCwgc2l6ZW9mKEZYX0ZMT0FUKSAqIChyb3dDb3VudCArIDEpKTsKKyAgICBkeVJvd1swXSA9IDAgOworICAgIGR5Um93WzBdID0gLSBwVGFibGUtPm1fUmVmbG93UGFnZUhlaWdodDsKKyAgICBpbnQgdGFibGVDb2xDb3VudCA9IDA7CisgICAgaW50IGk7CisgICAgZm9yKGkgPSAwOyBpIDwgcm93Q291bnQ7IGkrKykgeworICAgICAgICBpbnQgY29sQ291bnQgPSBwVGFibGUtPm1fbkNlbGwuR2V0QXQoaSk7CisgICAgICAgIGlmKGNvbENvdW50ID4gdGFibGVDb2xDb3VudCkgeworICAgICAgICAgICAgdGFibGVDb2xDb3VudCA9IGNvbENvdW50OworICAgICAgICB9CisgICAgfQorICAgIGludCBjZWxsQ291bnQgPSB0YWJsZUNvbENvdW50ICogcm93Q291bnQ7CisgICAgUkZfVGFibGVDZWxsKiogcFZpcnR1YWxUYWJsZSA9IEZYX0FsbG9jKFJGX1RhYmxlQ2VsbCosIGNlbGxDb3VudCk7CisgICAgRlhTWVNfbWVtc2V0MzIocFZpcnR1YWxUYWJsZSwgMCwgc2l6ZW9mKFJGX1RhYmxlQ2VsbCopICogY2VsbENvdW50KTsKKyAgICBmb3IoaSA9IDA7IGkgPCByb3dDb3VudDsgaSsrKSB7CisgICAgICAgIGludCBjb2xDb3VudCA9IHBUYWJsZS0+bV9uQ2VsbC5HZXRBdChpKTsKKyAgICAgICAgRlhfRkxPQVQgcm93V2lkdGggPSAwOworICAgICAgICBpbnQgaiA9IDA7CisgICAgICAgIGludCBzID0gcFRhYmxlLT5tX3BDZWxsQXJyYXkuR2V0U2l6ZSgpOworICAgICAgICBmb3IoaiA9IDA7IGogPCBjb2xDb3VudDsgaisrKSB7CisgICAgICAgICAgICBSRl9UYWJsZUNlbGwqIHBDZWxsID0gKFJGX1RhYmxlQ2VsbCopcFRhYmxlLT5tX3BDZWxsQXJyYXkuR2V0QXQobisrKTsKKyAgICAgICAgICAgIGlmKHBDZWxsLT5tX0VuZFBvcyA8IHBDZWxsLT5tX0JlZ2luUG9zKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgcG9zID0gaSAqIHRhYmxlQ29sQ291bnQ7CisgICAgICAgICAgICB3aGlsZShwb3MgPCBjZWxsQ291bnQgJiYgcFZpcnR1YWxUYWJsZVtwb3NdICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKHBvcyA+PSAoaSArIDEpICogdGFibGVDb2xDb3VudCkgeworICAgICAgICAgICAgICAgIHBvcyA9IGkgKiB0YWJsZUNvbENvdW50ICsgajsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBSb3dTcGFuID0gcENlbGwtPm1fUm93U3BhbjsKKyAgICAgICAgICAgIGludCBDb2xTcGFuID0gcENlbGwtPm1fQ29sU3BhbjsKKyAgICAgICAgICAgIGlmKFJvd1NwYW4gKyBpID4gcm93Q291bnQpIHsKKyAgICAgICAgICAgICAgICBSb3dTcGFuID0gcm93Q291bnQgLSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoQ29sU3BhbiArIGogPiBjb2xDb3VudCkgeworICAgICAgICAgICAgICAgIENvbFNwYW4gPSBjb2xDb3VudCAtIGo7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IoaW50IG0gPSAwOyBtIDwgUm93U3BhbjsgbSsrKSB7CisgICAgICAgICAgICAgICAgZm9yKGludCBubiA9IDA7IG5uIDwgQ29sU3Bhbjsgbm4rKykgeworICAgICAgICAgICAgICAgICAgICBpZihwb3MgKyBubiA+PSBjZWxsQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBWaXJ0dWFsVGFibGVbcG9zICsgbm5dID0gcENlbGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBvcyArPSB0YWJsZUNvbENvdW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgRlhfRkxPQVQgZHhDZWxsID0gZHg7CisgICAgICAgICAgICBmb3IocG9zID0gaSAqIHRhYmxlQ29sQ291bnQ7IHBWaXJ0dWFsVGFibGVbcG9zXSAhPSBwQ2VsbCAmJiBwb3MgPCBjZWxsQ291bnQ7IHBvcysrKSB7CisgICAgICAgICAgICAgICAgZHhDZWxsICs9IChwVmlydHVhbFRhYmxlW3Bvc10pLT5tX01heFdpZHRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQ1JGX0RhdGEqIHBEYXRhID0gKCptX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkKVtwQ2VsbC0+bV9CZWdpblBvc107CisgICAgICAgICAgICBGWF9GTE9BVCBkeSA9IGR5Um93W2ldIC0gcERhdGEtPm1fSGVpZ2h0IC0gcERhdGEtPm1fUG9zWTsKKyAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4KDEsIDAsIDAsIDEsIGR4Q2VsbCwgZHkpOworICAgICAgICAgICAgVHJhbnNmb3JtKCZtYXRyaXgsIG1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQsIHBDZWxsLT5tX0JlZ2luUG9zLCBwQ2VsbC0+bV9FbmRQb3MgLSBwQ2VsbC0+bV9CZWdpblBvcyArIDEpOworICAgICAgICAgICAgaWYocENlbGwtPm1fUm93U3BhbiArIGkgPD0gcm93Q291bnQpIHsKKyAgICAgICAgICAgICAgICBpZihGWFNZU19mYWJzKGR5Um93W3BDZWxsLT5tX1Jvd1NwYW4gKyBpXSkgPCBGWFNZU19mYWJzKGR5Um93W2ldIC0gcENlbGwtPm1fQ2VsbEhlaWdodCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZHlSb3dbcENlbGwtPm1fUm93U3BhbiArIGldID0gZHlSb3dbaV0gLSBwQ2VsbC0+bV9DZWxsSGVpZ2h0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBuID0gMDsKKyAgICBmb3IoaSA9IDA7IGkgPCByb3dDb3VudDsgaSsrKSB7CisgICAgICAgIGludCBjb2xDb3VudCA9IHBUYWJsZS0+bV9uQ2VsbC5HZXRBdChpKTsKKyAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IGNvbENvdW50OyBqKyspIHsKKyAgICAgICAgICAgIFJGX1RhYmxlQ2VsbCogcENlbGwgPSAoUkZfVGFibGVDZWxsKilwVGFibGUtPm1fcENlbGxBcnJheS5HZXRBdChuKyspOworICAgICAgICAgICAgc3dpdGNoKHBDZWxsLT5tX0Jsb2NrQWxpZ24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIExheW91dEFmdGVyOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBkeSA9IGR5Um93W2kgKyBwQ2VsbC0+bV9Sb3dTcGFuXSAtIHBDZWxsLT5tX0NlbGxIZWlnaHQgLSBkeVJvd1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4KDEsIDAsIDAsIDEsIDAsIGR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybSgmbWF0cml4LCBtX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkLCBwQ2VsbC0+bV9CZWdpblBvcywgcENlbGwtPm1fRW5kUG9zIC0gcENlbGwtPm1fQmVnaW5Qb3MgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIExheW91dE1pZGRsZToKKyAgICAgICAgICAgICAgICBjYXNlIExheW91dEp1c3RpZnk6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGR5ID0gKGR5Um93W2kgKyBwQ2VsbC0+bV9Sb3dTcGFuXSArIHBDZWxsLT5tX0NlbGxIZWlnaHQgLSBkeVJvd1tpXSkgLyAyOworICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXgoMSwgMCwgMCwgMSwgMCwgZHkpOworICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtKCZtYXRyaXgsIG1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQsIHBDZWxsLT5tX0JlZ2luUG9zLCBwQ2VsbC0+bV9FbmRQb3MgLSBwQ2VsbC0+bV9CZWdpblBvcyArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBDUkZfRGF0YSogcERhdGEgPSAoKm1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQpW21fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQtPkdldFNpemUoKSAtIDFdOworICAgIG1fcFJlZmxvd2VkUGFnZS0+bV9QYWdlSGVpZ2h0ID0gLSBkeVJvd1tyb3dDb3VudF0gKyBwRGF0YS0+bV9IZWlnaHQ7CisgICAgRlhfRnJlZShwVmlydHVhbFRhYmxlKTsKKyAgICBGWF9GcmVlKGR5Um93KTsKKyAgICBpbnQgc2l6ZSA9IHBUYWJsZS0+bV9wQ2VsbEFycmF5LkdldFNpemUoKTsKKyAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUkZfVGFibGVDZWxsKiBwQ2VsbCA9IHBUYWJsZS0+bV9wQ2VsbEFycmF5LkdldEF0KGkpOworICAgICAgICBGWF9GcmVlKHBDZWxsKTsKKyAgICB9CisgICAgcFRhYmxlLT5tX3BDZWxsQXJyYXkuUmVtb3ZlQWxsKCk7CisgICAgcFRhYmxlLT5tX25DZWxsLlJlbW92ZUFsbCgpOworICAgIGludCBzID0gc2l6ZW9mKENSRl9UYWJsZSk7CisgICAgZGVsZXRlIHBUYWJsZTsKKyAgICBtX1RhYmxlQXJyYXkuUmVtb3ZlQXQobV9UYWJsZUFycmF5LkdldFNpemUoKSAtIDEpOworfQorQ0ZYX0Zsb2F0UmVjdCBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OkdldEVsbUJCb3goSVBERl9MYXlvdXRFbGVtZW50KiBwRWxlbWVudCkKK3sKKyAgICBDRlhfRmxvYXRSZWN0IHJlY3Q7CisgICAgaW50IG9iakNvdW50ID0gcEVsZW1lbnQtPkNvdW50T2JqZWN0cygpOworICAgIGludCBjb3VudCA9IHBFbGVtZW50LT5Db3VudENoaWxkcmVuKCk7CisgICAgaWYob2JqQ291bnQgPT0gMCAmJiBjb3VudCA9PSAwKSB7CisgICAgICAgIHJldHVybiByZWN0OworICAgIH0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsKKyAgICBpbnQgaTsKKyAgICBmb3IoaSA9IDA7IGkgPCBvYmpDb3VudDsgaSsrKSB7CisgICAgICAgIENQREZfUGFnZU9iamVjdCogcE9iaiA9IHBFbGVtZW50LT5HZXRPYmplY3QoMCk7CisgICAgICAgIGlmKCFwT2JqKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiggcmVjdC5IZWlnaHQoKSA9PSAwICkgeworICAgICAgICAgICAgcmVjdCA9IHBPYmotPkdldEJCb3goJm1hdHJpeCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZWN0LlVuaW9uKHBPYmotPkdldEJCb3goJm1hdHJpeCkpOworICAgICAgICB9CisgICAgfQorICAgIGZvcihpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgSVBERl9MYXlvdXRFbGVtZW50KiBwQ2hpbGRFbGVtZW50ID0gcEVsZW1lbnQtPkdldENoaWxkKGkpOworICAgICAgICBpZiggcmVjdC5IZWlnaHQoKSA9PSAwICkgeworICAgICAgICAgICAgcmVjdCA9IEdldEVsbUJCb3gocENoaWxkRWxlbWVudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZWN0LlVuaW9uKEdldEVsbUJCb3gocENoaWxkRWxlbWVudCkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZWN0OworfQorRlhfRkxPQVQgQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93OjpHZXRFbG1XaWR0aChJUERGX0xheW91dEVsZW1lbnQqIHBFbGVtZW50KQoreworICAgIGlmKCFwRWxlbWVudCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgTGF5b3V0VHlwZSBsYXlvdXRUeXBlID0gcEVsZW1lbnQtPkdldFR5cGUoKTsKKyAgICBGWF9GTE9BVCB3aWR0aCA9IDA7CisgICAgaWYobGF5b3V0VHlwZSA9PSBMYXlvdXRUYWJsZSB8fCBsYXlvdXRUeXBlID09IExheW91dFRhYmxlRGF0YUNlbGwgfHwgbGF5b3V0VHlwZSA9PSBMYXlvdXRUYWJsZUhlYWRlckNlbGwpIHsKKyAgICAgICAgd2lkdGggPSBwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRXaWR0aCk7CisgICAgICAgIGlmKHdpZHRoID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIHdpZHRoOworICAgICAgICB9CisgICAgfSBlbHNlIGlmKCBsYXlvdXRUeXBlID09IExheW91dFRhYmxlUm93KSB7CisgICAgICAgIGludCBjb3VudCA9IHBFbGVtZW50LT5Db3VudENoaWxkcmVuKCk7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBJUERGX0xheW91dEVsZW1lbnQqIHBFbG0gPSBwRWxlbWVudC0+R2V0Q2hpbGQoaSk7CisgICAgICAgICAgICB3aWR0aCArPSBwRWxtLT5HZXROdW1iZXJBdHRyKExheW91dFdpZHRoKTsKKyAgICAgICAgfQorICAgICAgICBpZih3aWR0aCA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiB3aWR0aDsKKyAgICAgICAgfQorICAgIH0KKyAgICBDRlhfRmxvYXRSZWN0IHJlY3QgPSBHZXRFbG1CQm94KHBFbGVtZW50KTsKKyAgICByZXR1cm4gcmVjdC5XaWR0aCgpOworfQorRlhfQk9PTCBHZXRJbnRlcnNlY3Rpb24oRlhfRkxPQVQgbG93MSwgRlhfRkxPQVQgaGlnaDEsIEZYX0ZMT0FUIGxvdzIsIEZYX0ZMT0FUIGhpZ2gyLAorICAgICAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQmIGludGVybG93LCBGWF9GTE9BVCYgaW50ZXJoaWdoKTsKK0ZYX0JPT0wgSXNTYW1lTGluZShGWF9CT09MIGJIb3Jpem9udGFsLCBDRlhfRmxvYXRSZWN0IFJlY3QxLCBDRlhfRmxvYXRSZWN0IFJlY3QyKQoreworICAgIGlmKGJIb3Jpem9udGFsKSB7CisgICAgICAgIEZYX0ZMT0FUIGludGVyX3RvcCwgaW50ZXJfYm90dG9tOworICAgICAgICBpZiAoIUdldEludGVyc2VjdGlvbihSZWN0MS5ib3R0b20sIFJlY3QxLnRvcCwgUmVjdDIuYm90dG9tLCBSZWN0Mi50b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyX2JvdHRvbSwgaW50ZXJfdG9wKSkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIEZYX0ZMT0FUIGxpbmVIZWlnaHQgPSBSZWN0MS50b3AgLSBSZWN0MS5ib3R0b207CisgICAgICAgIGlmKGxpbmVIZWlnaHQgPiAyMCAmJiBsaW5lSGVpZ2h0ID4gUmVjdDIuSGVpZ2h0KCkgKiAyKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgaWYobGluZUhlaWdodCA+IDUgJiYgUmVjdDIuSGVpZ2h0KCkgLyAyID4gbGluZUhlaWdodCkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIEZYX0ZMT0FUIGludGVyX2ggPSBpbnRlcl90b3AgLSBpbnRlcl9ib3R0b207CisgICAgICAgIGlmIChpbnRlcl9oIDwgKGxpbmVIZWlnaHQpIC8gMiAmJiBpbnRlcl9oIDwgUmVjdDIuSGVpZ2h0KCkgLyAyKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBGWF9GTE9BVCBpbnRlcl9sZWZ0LCBpbnRlcl9yaWdodDsKKyAgICAgICAgaWYoIUdldEludGVyc2VjdGlvbihSZWN0MS5sZWZ0LCBSZWN0MS5yaWdodCwgUmVjdDIubGVmdCwgUmVjdDIucmlnaHQsIGludGVyX2xlZnQsIGludGVyX3JpZ2h0KSkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIEZYX0ZMT0FUIGludGVyX3cgPSBpbnRlcl9yaWdodCAtIGludGVyX2xlZnQ7CisgICAgICAgIGlmIChpbnRlcl93IDwgKFJlY3QxLnJpZ2h0IC0gUmVjdDEubGVmdCkgLyAyICYmIGludGVyX3cgPCAoUmVjdDIucmlnaHQgLSBSZWN0Mi5sZWZ0KSAvIDIpIHsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KK0ZYX0lOVDMyIElzQ2FuTWVyZ2VQYXJhZ3JhcGgoSVBERl9MYXlvdXRFbGVtZW50KiBwUHJldkVsZW1lbnQsIElQREZfTGF5b3V0RWxlbWVudCogcE5leHRFbGVtZW50KQoreworICAgIEZYX0lOVDMyIGFuYWxvZ2lhbCA9IDEwMDsKKyAgICBGWF9JTlQzMiBuUHJldk9iaiA9IHBQcmV2RWxlbWVudC0+Q291bnRPYmplY3RzKCksIGk7CisgICAgQ1BERl9QYWdlT2JqZWN0KiBwUHJldk9iaiA9IE5VTEw7CisgICAgQ0ZYX0Zsb2F0UmVjdCBwcmV2UmVjdCwgcmVjdDsKKyAgICBDRlhfUHRyQXJyYXkgcHJldkxpbmUsIGxpbmU7CisgICAgRlhfQk9PTCBiUGFyYWdyYXBoU3RhcnQgPSBGQUxTRTsKKyAgICBmb3IoaSA9IDA7IGkgPCBuUHJldk9iajsgaSsrKSB7CisgICAgICAgIENQREZfUGFnZU9iamVjdCogcE9iaiA9IHBQcmV2RWxlbWVudC0+R2V0T2JqZWN0KGkpOworICAgICAgICBpZighcFByZXZPYmopIHsKKyAgICAgICAgICAgIHBQcmV2T2JqID0gcE9iajsKKyAgICAgICAgICAgIHJlY3QgPSBDRlhfRmxvYXRSZWN0KHBPYmotPm1fTGVmdCwgcE9iai0+bV9Cb3R0b20sIHBPYmotPm1fUmlnaHQsIHBPYmotPm1fVG9wKTsKKyAgICAgICAgICAgIGxpbmUuQWRkKHBPYmopOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgQ0ZYX0Zsb2F0UmVjdCBvYmpSZWN0ID0gQ0ZYX0Zsb2F0UmVjdChwT2JqLT5tX0xlZnQsIHBPYmotPm1fQm90dG9tLCBwT2JqLT5tX1JpZ2h0LCBwT2JqLT5tX1RvcCk7CisgICAgICAgIGlmKElzU2FtZUxpbmUoVFJVRSwgcmVjdCwgb2JqUmVjdCkpIHsKKyAgICAgICAgICAgIGxpbmUuQWRkKHBPYmopOworICAgICAgICAgICAgcmVjdC5VbmlvbihvYmpSZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByZXZMaW5lLlJlbW92ZUFsbCgpOworICAgICAgICAgICAgcHJldkxpbmUuQXBwZW5kKGxpbmUpOworICAgICAgICAgICAgcHJldlJlY3QgPSByZWN0OworICAgICAgICAgICAgbGluZS5SZW1vdmVBbGwoKTsKKyAgICAgICAgICAgIGxpbmUuQWRkKHBPYmopOworICAgICAgICAgICAgcmVjdCA9IG9ialJlY3Q7CisgICAgICAgICAgICBpZighYlBhcmFncmFwaFN0YXJ0KSB7CisgICAgICAgICAgICAgICAgaWYgKHByZXZSZWN0LmxlZnQgPiByZWN0LmxlZnQgKyByZWN0LkhlaWdodCgpICogMS41KSB7CisgICAgICAgICAgICAgICAgICAgIGJQYXJhZ3JhcGhTdGFydCA9IFRSVUU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmKHByZXZMaW5lLkdldFNpemUoKSkgeworICAgICAgICBpZihGWFNZU19mYWJzKHJlY3QucmlnaHQgLSBwcmV2UmVjdC5yaWdodCkgPiByZWN0LkhlaWdodCgpKSB7CisgICAgICAgICAgICBhbmFsb2dpYWwgLT0gNTA7CisgICAgICAgIH0KKyAgICB9CisgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqID0gcFByZXZFbGVtZW50LT5HZXRPYmplY3QoblByZXZPYmogLSAxKTsKKyAgICBpZihwT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9URVhUKSB7CisgICAgICAgIENQREZfVGV4dE9iamVjdCogcFRleHQgPSAoQ1BERl9UZXh0T2JqZWN0KilwT2JqOworICAgICAgICBGWF9JTlQzMiBuSXRlbSA9IHBUZXh0LT5Db3VudEl0ZW1zKCk7CisgICAgICAgIENQREZfVGV4dE9iamVjdEl0ZW0gaXRlbTsKKyAgICAgICAgcFRleHQtPkdldEl0ZW1JbmZvKG5JdGVtIC0gMSwgJml0ZW0pOworICAgICAgICBDRlhfV2lkZVN0cmluZyB3U3RyID0gcFRleHQtPkdldEZvbnQoKS0+VW5pY29kZUZyb21DaGFyQ29kZShpdGVtLm1fQ2hhckNvZGUpOworICAgICAgICBpZih3U3RyLklzRW1wdHkoKSkgeworICAgICAgICAgICAgd1N0ciA9IChGWF9XQ0hBUilpdGVtLm1fQ2hhckNvZGU7CisgICAgICAgIH0KKyAgICAgICAgRlhfV0NIQVIgd2NoID0gd1N0ci5HZXRBdCh3U3RyLkdldExlbmd0aCgpIC0gMSk7CisgICAgICAgIHN3aXRjaCh3Y2gpIHsKKyAgICAgICAgICAgIGNhc2UgJy4nOgorICAgICAgICAgICAgY2FzZSAxMjI5MDoKKyAgICAgICAgICAgIGNhc2UgNjUzMTE6CisgICAgICAgICAgICBjYXNlIDYzOgorICAgICAgICAgICAgY2FzZSAzMzoKKyAgICAgICAgICAgIGNhc2UgNjUyODE6CisgICAgICAgICAgICAgICAgYW5hbG9naWFsIC09IDUwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHByZXZMaW5lLlJlbW92ZUFsbCgpOworICAgIHByZXZMaW5lLkFwcGVuZChsaW5lKTsKKyAgICBsaW5lLlJlbW92ZUFsbCgpOworICAgIEZYX0lOVDMyIG5OZXh0T2JqID0gcE5leHRFbGVtZW50LT5Db3VudE9iamVjdHMoKTsKKyAgICBwUHJldk9iaiA9IE5VTEw7CisgICAgRlhfQk9PTCBiRmlyc3QgPSBUUlVFOworICAgIGZvcihpID0gMDsgaSA8IG5OZXh0T2JqOyBpKyspIHsKKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqID0gcE5leHRFbGVtZW50LT5HZXRPYmplY3QoaSk7CisgICAgICAgIGlmKCFwUHJldk9iaikgeworICAgICAgICAgICAgcFByZXZPYmogPSBwT2JqOworICAgICAgICAgICAgcmVjdCA9IENGWF9GbG9hdFJlY3QocE9iai0+bV9MZWZ0LCBwT2JqLT5tX0JvdHRvbSwgcE9iai0+bV9SaWdodCwgcE9iai0+bV9Ub3ApOworICAgICAgICAgICAgbGluZS5BZGQocE9iaik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBDRlhfRmxvYXRSZWN0IG9ialJlY3QgPSBDRlhfRmxvYXRSZWN0KHBPYmotPm1fTGVmdCwgcE9iai0+bV9Cb3R0b20sIHBPYmotPm1fUmlnaHQsIHBPYmotPm1fVG9wKTsKKyAgICAgICAgaWYoSXNTYW1lTGluZShUUlVFLCByZWN0LCBvYmpSZWN0KSkgeworICAgICAgICAgICAgbGluZS5BZGQocE9iaik7CisgICAgICAgICAgICByZWN0LlVuaW9uKG9ialJlY3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYoRlhTWVNfZmFicyhyZWN0LnJpZ2h0IC0gcHJldlJlY3QucmlnaHQpIDwgcmVjdC5IZWlnaHQoKSAmJiBGWFNZU19mYWJzKHJlY3QubGVmdCAtIHByZXZSZWN0LmxlZnQpIDwgcmVjdC5IZWlnaHQoKSkgeworICAgICAgICAgICAgICAgIGFuYWxvZ2lhbCArPSA1MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXZMaW5lLlJlbW92ZUFsbCgpOworICAgICAgICAgICAgcHJldkxpbmUuQXBwZW5kKGxpbmUpOworICAgICAgICAgICAgcHJldlJlY3QgPSByZWN0OworICAgICAgICAgICAgbGluZS5SZW1vdmVBbGwoKTsKKyAgICAgICAgICAgIGxpbmUuQWRkKHBPYmopOworICAgICAgICAgICAgcmVjdCA9IG9ialJlY3Q7CisgICAgICAgICAgICBpZighYkZpcnN0KSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBiRmlyc3QgPSBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZihwcmV2TGluZS5HZXRTaXplKCkpIHsKKyAgICAgICAgaWYoYlBhcmFncmFwaFN0YXJ0KSB7CisgICAgICAgICAgICBpZihwcmV2UmVjdC5sZWZ0IC0gcmVjdC5sZWZ0ID4gcmVjdC5IZWlnaHQoKSAmJiBwcmV2UmVjdC5sZWZ0IC0gcmVjdC5sZWZ0IDwgcmVjdC5IZWlnaHQoKSAqIDMpIHsKKyAgICAgICAgICAgICAgICBhbmFsb2dpYWwgLT0gNTA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZihGWFNZU19mYWJzKHByZXZSZWN0LmxlZnQgLSByZWN0LmxlZnQpIDwgcmVjdC5IZWlnaHQoKSkgeworICAgICAgICAgICAgICAgIGFuYWxvZ2lhbCAtPSA1MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYW5hbG9naWFsOworfQordm9pZCBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OlByb2Nlc3NFbGVtZW50KElQREZfTGF5b3V0RWxlbWVudCogcEVsZW1lbnQsIEZYX0ZMT0FUIHJlZmxvd1dpZHRoKQoreworICAgIGlmKHBFbGVtZW50ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZihtX1N0YXR1cyA9PSBMYXlvdXRSZWFkeSkgeworICAgICAgICBMYXlvdXRUeXBlIGxheW91dFR5cGUgPSBwRWxlbWVudC0+R2V0VHlwZSgpOworICAgICAgICBGWF9JTlQzMiBFbGVtZW50VHlwZSA9IEdldEVsZW1lbnRUeXBlcyhsYXlvdXRUeXBlKTsKKyAgICAgICAgc3dpdGNoKEVsZW1lbnRUeXBlKSB7CisgICAgICAgICAgICBjYXNlIFNTVF9JRToKKyAgICAgICAgICAgICAgICBtX2JJbGx1c3RyYXRpb24gPSBUUlVFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTU1RfQkxTRToKKyAgICAgICAgICAgICAgICBGaW5pc2hlZEN1cnJMaW5lKCk7CisgICAgICAgICAgICAgICAgRlhfRkxPQVQgU3RhcnRJbmRlbnQgPSAwOworICAgICAgICAgICAgICAgIGlmKElQREZfTGF5b3V0RWxlbWVudCogcFBhcmVudCA9IHBFbGVtZW50LT5HZXRQYXJlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBTdGFydEluZGVudCA9IHBQYXJlbnQtPkdldE51bWJlckF0dHIoTGF5b3V0U3RhcnRJbmRlbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCBjdXJyU3RhcnRJbmRlbnQgPSBwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRTdGFydEluZGVudCk7CisgICAgICAgICAgICAgICAgbV9TdGFydEluZGVudCA9IENvbnZlcldpZHRoKGN1cnJTdGFydEluZGVudCk7CisgICAgICAgICAgICAgICAgRlhfRkxPQVQgd2lkdGggPSByZWZsb3dXaWR0aDsKKyAgICAgICAgICAgICAgICBpZihTdGFydEluZGVudCAhPSBjdXJyU3RhcnRJbmRlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVmbG93V2lkdGggLT0gbV9TdGFydEluZGVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgRlhfRkxPQVQgc3BhY2VCZWZvcmUgPSBwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRTcGFjZUJlZm9yZSk7CisgICAgICAgICAgICAgICAgbV9wUmVmbG93ZWRQYWdlLT5tX1BhZ2VIZWlnaHQgKz0gc3BhY2VCZWZvcmU7CisgICAgICAgICAgICAgICAgbV9UZXh0QWxpZ24gPSBwRWxlbWVudC0+R2V0RW51bUF0dHIoTGF5b3V0VGV4dEFsaWduKTsKKyAgICAgICAgICAgICAgICBpZihJUERGX0xheW91dEVsZW1lbnQqIHBQYXJlbnQgPSBwRWxlbWVudC0+R2V0UGFyZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RhcnRJbmRlbnQgPSBwUGFyZW50LT5HZXROdW1iZXJBdHRyKExheW91dEVuZEluZGVudCk7CisgICAgICAgICAgICAgICAgICAgIEZYX0ZMT0FUIGN1cnJFbmRJbmRlbnQgPSBwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRFbmRJbmRlbnQpOworICAgICAgICAgICAgICAgICAgICBpZihTdGFydEluZGVudCAhPSBjdXJyU3RhcnRJbmRlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxvd1dpZHRoIC09IENvbnZlcldpZHRoKGN1cnJFbmRJbmRlbnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKHJlZmxvd1dpZHRoICogMiA8IHdpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgIHJlZmxvd1dpZHRoID0gd2lkdGg7CisgICAgICAgICAgICAgICAgICAgIG1fU3RhcnRJbmRlbnQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2gobGF5b3V0VHlwZSkgeworICAgICAgICAgICAgY2FzZSBMYXlvdXRUYWJsZTogeworICAgICAgICAgICAgICAgICAgICBDUkZfVGFibGUqIHBUYWJsZSA9IEZYX05FVyBDUkZfVGFibGU7CisgICAgICAgICAgICAgICAgICAgIGlmIChOVUxMID09IHBUYWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9UYWJsZUFycmF5LkFkZChwVGFibGUpOworICAgICAgICAgICAgICAgICAgICBwVGFibGUtPm1fUmVmbG93UGFnZUhlaWdodCA9IG1fcFJlZmxvd2VkUGFnZS0+bV9QYWdlSGVpZ2h0OworICAgICAgICAgICAgICAgICAgICBwVGFibGUtPm1fVGFibGVXaWR0aCA9IEdldEVsbVdpZHRoKHBFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBMYXlvdXRUYWJsZVJvdzogeworICAgICAgICAgICAgICAgICAgICBpZighbV9UYWJsZUFycmF5LkdldFNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gcEVsZW1lbnQtPkNvdW50Q2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgQ1JGX1RhYmxlKiBwVGFibGUgPSBtX1RhYmxlQXJyYXkuR2V0QXQobV9UYWJsZUFycmF5LkdldFNpemUoKSAtIDEpOworICAgICAgICAgICAgICAgICAgICBpbnQgZiA9IDA7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJUERGX0xheW91dEVsZW1lbnQqIHBDaGlsZEVsZW1lbnQgPSBwRWxlbWVudC0+R2V0Q2hpbGQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRUeXBlIHR5cGUgPSBwQ2hpbGRFbGVtZW50LT5HZXRUeXBlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlID09IExheW91dFRhYmxlRGF0YUNlbGwgfHwgdHlwZSA9PSBMYXlvdXRUYWJsZUhlYWRlckNlbGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmKys7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcFRhYmxlLT5tX25DZWxsLkFkZChmKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBMYXlvdXRUYWJsZURhdGFDZWxsOgorICAgICAgICAgICAgY2FzZSBMYXlvdXRUYWJsZUhlYWRlckNlbGw6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYoIW1fVGFibGVBcnJheS5HZXRTaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFJGX1RhYmxlQ2VsbCogcENlbGwgPSBGWF9BbGxvYyhSRl9UYWJsZUNlbGwsIDEpOworICAgICAgICAgICAgICAgICAgICBGWFNZU19tZW1zZXQzMihwQ2VsbCwgMCAsIHNpemVvZihSRl9UYWJsZUNlbGwpKTsKKyAgICAgICAgICAgICAgICAgICAgQ1JGX1RhYmxlKiBwVGFibGUgPSBtX1RhYmxlQXJyYXkuR2V0QXQobV9UYWJsZUFycmF5LkdldFNpemUoKSAtIDEpOworICAgICAgICAgICAgICAgICAgICBpbnQgcG9zID0gcFRhYmxlLT5tX25DZWxsLkdldFNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgIHBDZWxsLT5tX0JlZ2luUG9zID0gbV9wUmVmbG93ZWRQYWdlLT5tX3BSZWZsb3dlZC0+R2V0U2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBjZWxsV2lkdGggPSBwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIGlmKGNlbGxXaWR0aCA9PSAwIHx8IHBDZWxsLT5tX01heFdpZHRoID4gcFRhYmxlLT5tX1RhYmxlV2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENSRl9UYWJsZSogcFRhYmxlID0gbV9UYWJsZUFycmF5LkdldEF0KG1fVGFibGVBcnJheS5HZXRTaXplKCkgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBDZWxsLT5tX01heFdpZHRoID0gcmVmbG93V2lkdGggLyBwVGFibGUtPm1fbkNlbGwuR2V0QXQocFRhYmxlLT5tX25DZWxsLkdldFNpemUoKSAtIDEpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcENlbGwtPm1fTWF4V2lkdGggPSBwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRXaWR0aCkgKiByZWZsb3dXaWR0aCAvIHBUYWJsZS0+bV9UYWJsZVdpZHRoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBDZWxsLT5tX0NvbFNwYW4gPSAoaW50KShwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRDb2xTcGFuKSk7CisgICAgICAgICAgICAgICAgICAgIHBDZWxsLT5tX1Jvd1NwYW4gPSAoaW50KShwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRSb3dTcGFuKSk7CisgICAgICAgICAgICAgICAgICAgIGlmKCFwQ2VsbC0+bV9Db2xTcGFuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwQ2VsbC0+bV9Db2xTcGFuID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZighcENlbGwtPm1fUm93U3BhbiApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBDZWxsLT5tX1Jvd1NwYW4gPSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBDZWxsLT5tX0Jsb2NrQWxpZ24gPSBwRWxlbWVudC0+R2V0RW51bUF0dHIoTGF5b3V0QmxvY2tBbGlnbik7CisgICAgICAgICAgICAgICAgICAgIG1fVGV4dEFsaWduID0gcEVsZW1lbnQtPkdldEVudW1BdHRyKExheW91dElubGluZUFsaWduKTsKKyAgICAgICAgICAgICAgICAgICAgcENlbGwtPm1fUG9zWCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHBDZWxsLT5tX1Bvc1kgPSAwOworICAgICAgICAgICAgICAgICAgICByZWZsb3dXaWR0aCA9IHBDZWxsLT5tX01heFdpZHRoOworICAgICAgICAgICAgICAgICAgICBwVGFibGUtPm1fcENlbGxBcnJheS5BZGQocENlbGwpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIG1fZkxpbmVIZWlnaHQgPSBwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRMaW5lSGVpZ2h0KTsKKyAgICAgICAgaW50IFJlZmxvd2VkU2l6ZSA9IG1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQtPkdldFNpemUoKTsKKyAgICAgICAgaWYocEVsZW1lbnQtPkNvdW50T2JqZWN0cygpKSB7CisgICAgICAgICAgICBQcm9jZXNzT2JqcyhwRWxlbWVudCwgcmVmbG93V2lkdGgpOworICAgICAgICB9CisgICAgfQorICAgIGludCBjb3VudCA9IHBFbGVtZW50LT5Db3VudENoaWxkcmVuKCk7CisgICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgSVBERl9MYXlvdXRFbGVtZW50KiBwQ2hpbGRFbGVtZW50ID0gcEVsZW1lbnQtPkdldENoaWxkKGkpOworICAgICAgICBQcm9jZXNzRWxlbWVudChwQ2hpbGRFbGVtZW50LCByZWZsb3dXaWR0aCk7CisgICAgICAgIGlmKG1fcFBhdXNlICYmIG1fcFJvb3RFbGVtZW50ID09IHBFbGVtZW50ICYmIG1fU3RhdHVzICE9IExheW91dFRvQmVDb250aW51ZWQgKSB7CisgICAgICAgICAgICBpZihtX3BQYXVzZS0+TmVlZFRvUGF1c2VOb3coKSkgeworICAgICAgICAgICAgICAgIG1fcExheW91dEVsZW1lbnQgPSBwQ2hpbGRFbGVtZW50OworICAgICAgICAgICAgICAgIG1fU3RhdHVzID0gTGF5b3V0VG9CZUNvbnRpbnVlZDsKKyAgICAgICAgICAgICAgICBtX0N1cnJSZWZXaWR0aCA9IHJlZmxvd1dpZHRoOworICAgICAgICAgICAgICAgIG1fUGF1c2VQb3NpdGlvbiA9IChpICsgMSkgKiAxMDAgLyAoY291bnQgKyAxKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmKG1fU3RhdHVzID09IExheW91dFRvQmVDb250aW51ZWQgJiYgbV9wTGF5b3V0RWxlbWVudCA9PSBwQ2hpbGRFbGVtZW50KSB7CisgICAgICAgICAgICBtX1N0YXR1cyA9IExheW91dFJlYWR5OworICAgICAgICB9CisgICAgfQorICAgIGlmKG1fU3RhdHVzID09IExheW91dFJlYWR5KSB7CisgICAgICAgIEZYX0ZMT0FUIGR4ID0gMDsKKyAgICAgICAgTGF5b3V0VHlwZSBsYXlvdXRUeXBlID0gcEVsZW1lbnQtPkdldFR5cGUoKTsKKyAgICAgICAgRlhfSU5UMzIgRWxlbWVudFR5cGUgPSBHZXRFbGVtZW50VHlwZXMobGF5b3V0VHlwZSk7CisgICAgICAgIHN3aXRjaChFbGVtZW50VHlwZSkgeworICAgICAgICAgICAgY2FzZSBTU1RfSUU6CisgICAgICAgICAgICAgICAgbV9iSWxsdXN0cmF0aW9uID0gRkFMU0U7CisgICAgICAgICAgICAgICAgRmluaXNoZWRDdXJyTGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTU1RfQkxTRToKKyAgICAgICAgICAgICAgICBGaW5pc2hlZEN1cnJMaW5lKCk7CisgICAgICAgICAgICAgICAgRlhfRkxPQVQgU3RhcnRJbmRlbnQgPSAwOworICAgICAgICAgICAgICAgIGlmKElQREZfTGF5b3V0RWxlbWVudCogcFBhcmVudCA9IHBFbGVtZW50LT5HZXRQYXJlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBTdGFydEluZGVudCA9IHBQYXJlbnQtPkdldE51bWJlckF0dHIoTGF5b3V0U3RhcnRJbmRlbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCBjdXJyU3RhcnRJbmRlbnQgPSBwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRTdGFydEluZGVudCk7CisgICAgICAgICAgICAgICAgaWYoU3RhcnRJbmRlbnQgIT0gY3VyclN0YXJ0SW5kZW50KSB7CisgICAgICAgICAgICAgICAgICAgIHJlZmxvd1dpZHRoICs9IENvbnZlcldpZHRoKGN1cnJTdGFydEluZGVudCk7CisgICAgICAgICAgICAgICAgICAgIGR4ICs9IENvbnZlcldpZHRoKGN1cnJTdGFydEluZGVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHNwYWNlQWZ0ZXIgPSBwRWxlbWVudC0+R2V0TnVtYmVyQXR0cihMYXlvdXRTcGFjZUFmdGVyKTsKKyAgICAgICAgICAgICAgICBtX3BSZWZsb3dlZFBhZ2UtPm1fUGFnZUhlaWdodCArPSBzcGFjZUFmdGVyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN3aXRjaChsYXlvdXRUeXBlKSB7CisgICAgICAgICAgICBjYXNlIExheW91dFRhYmxlRGF0YUNlbGw6CisgICAgICAgICAgICBjYXNlIExheW91dFRhYmxlSGVhZGVyQ2VsbDogeworICAgICAgICAgICAgICAgICAgICBpZighbV9UYWJsZUFycmF5LkdldFNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgQ1JGX1RhYmxlKiBwVGFibGUgPSBtX1RhYmxlQXJyYXkuR2V0QXQobV9UYWJsZUFycmF5LkdldFNpemUoKSAtIDEpOworICAgICAgICAgICAgICAgICAgICBSRl9UYWJsZUNlbGwqIHBDZWxsID0gcFRhYmxlLT5tX3BDZWxsQXJyYXkuR2V0QXQocFRhYmxlLT5tX3BDZWxsQXJyYXkuR2V0U2l6ZSgpIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIHBDZWxsLT5tX0VuZFBvcyA9IG1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQtPkdldFNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgIGlmKHBDZWxsLT5tX0VuZFBvcyA8IHBDZWxsLT5tX0JlZ2luUG9zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwQ2VsbC0+bV9DZWxsSGVpZ2h0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENSRl9EYXRhKiBwQmVnaW5EYXRhID0gKCptX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkKVtwQ2VsbC0+bV9CZWdpblBvc107CisgICAgICAgICAgICAgICAgICAgICAgICBDUkZfRGF0YSogcEVuZERhdGEgPSAoKm1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQpW3BDZWxsLT5tX0VuZFBvc107CisgICAgICAgICAgICAgICAgICAgICAgICBwQ2VsbC0+bV9DZWxsSGVpZ2h0ID0gcEJlZ2luRGF0YS0+bV9IZWlnaHQgPiBwRW5kRGF0YS0+bV9IZWlnaHQgPyBwQmVnaW5EYXRhLT5tX0hlaWdodCA6IHBFbmREYXRhLT5tX0hlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBDZWxsLT5tX0NlbGxIZWlnaHQgLT0gcEVuZERhdGEtPm1fUG9zWSAtIHBCZWdpbkRhdGEtPm1fUG9zWTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIExheW91dFRhYmxlUm93OiB7CisgICAgICAgICAgICAgICAgICAgIGlmKCFtX1RhYmxlQXJyYXkuR2V0U2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBDUkZfVGFibGUqIHBUYWJsZSA9IG1fVGFibGVBcnJheS5HZXRBdChtX1RhYmxlQXJyYXkuR2V0U2l6ZSgpIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGlmKHBUYWJsZS0+bV9uQ29sID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBUYWJsZS0+bV9uQ29sID0gcFRhYmxlLT5tX3BDZWxsQXJyYXkuR2V0U2l6ZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTGF5b3V0VGFibGU6IHsKKyAgICAgICAgICAgICAgICAgICAgUHJvY2Vzc1RhYmxlKGR4KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZihkeCkgeworICAgICAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeCgxLCAwLCAwLCAxLCBkeCwgMCk7CisgICAgICAgICAgICAgICAgICAgIGludCBSZWZsb3dlZFNpemUgPSBtX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkLT5HZXRTaXplKCk7CisgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybSgmbWF0cml4LCBtX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkLCBSZWZsb3dlZFNpemUsIG1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQtPkdldFNpemUoKSAtIFJlZmxvd2VkU2l6ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmKG1fcFJvb3RFbGVtZW50ID09IHBFbGVtZW50KSB7CisgICAgICAgIG1fUGF1c2VQb3NpdGlvbiA9IDEwMDsKKyAgICB9Cit9CitGWF9JTlQzMiBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OkdldEVsZW1lbnRUeXBlcyhMYXlvdXRUeXBlIGxheW91dFR5cGUpCit7CisgICAgc3dpdGNoKGxheW91dFR5cGUpIHsKKyAgICAgICAgY2FzZSBMYXlvdXRQYXJhZ3JhcGg6CisgICAgICAgIGNhc2UgTGF5b3V0SGVhZGluZzoKKyAgICAgICAgY2FzZSBMYXlvdXRIZWFkaW5nMToKKyAgICAgICAgY2FzZSBMYXlvdXRIZWFkaW5nMjoKKyAgICAgICAgY2FzZSBMYXlvdXRIZWFkaW5nMzoKKyAgICAgICAgY2FzZSBMYXlvdXRIZWFkaW5nNDoKKyAgICAgICAgY2FzZSBMYXlvdXRIZWFkaW5nNToKKyAgICAgICAgY2FzZSBMYXlvdXRIZWFkaW5nNjoKKyAgICAgICAgY2FzZSBMYXlvdXRMaXN0OgorICAgICAgICBjYXNlIExheW91dExpc3RJdGVtOgorICAgICAgICBjYXNlIExheW91dExpc3RMYWJlbDoKKyAgICAgICAgY2FzZSBMYXlvdXRMaXN0Qm9keToKKyAgICAgICAgY2FzZSBMYXlvdXRUYWJsZToKKyAgICAgICAgY2FzZSBMYXlvdXRUYWJsZUhlYWRlckNlbGw6CisgICAgICAgIGNhc2UgTGF5b3V0VGFibGVEYXRhQ2VsbDoKKyAgICAgICAgY2FzZSBMYXlvdXRUYWJsZVJvdzoKKyAgICAgICAgY2FzZSBMYXlvdXRUYWJsZUhlYWRlckdyb3VwOgorICAgICAgICBjYXNlIExheW91dFRhYmxlQm9keUdyb3VwOgorICAgICAgICBjYXNlIExheW91dFRhYmxlRm9vdEdyb3VwOgorICAgICAgICBjYXNlIExheW91dFRPQ0k6CisgICAgICAgIGNhc2UgTGF5b3V0Q2FwdGlvbjoKKyAgICAgICAgICAgIHJldHVybiBTU1RfQkxTRTsKKyAgICAgICAgY2FzZSBMYXlvdXRGaWd1cmU6CisgICAgICAgIGNhc2UgTGF5b3V0Rm9ybXVsYToKKyAgICAgICAgY2FzZSBMYXlvdXRGb3JtOgorICAgICAgICAgICAgcmV0dXJuIFNTVF9JRTsKKyAgICAgICAgY2FzZSBMYXlvdXRTcGFuOgorICAgICAgICBjYXNlIExheW91dFF1b3RlOgorICAgICAgICBjYXNlIExheW91dE5vdGU6CisgICAgICAgIGNhc2UgTGF5b3V0UmVmZXJlbmNlOgorICAgICAgICBjYXNlIExheW91dEJpYkVudHJ5OgorICAgICAgICBjYXNlIExheW91dENvZGU6CisgICAgICAgIGNhc2UgTGF5b3V0TGluazoKKyAgICAgICAgY2FzZSBMYXlvdXRBbm5vdDoKKyAgICAgICAgY2FzZSBMYXlvdXRSdWJ5OgorICAgICAgICBjYXNlIExheW91dFdhcmljaHU6CisgICAgICAgICAgICByZXR1cm4gU1NUX0lMU0U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU1NUX0dFOworICAgIH0KKyAgICByZXR1cm4gRkFMU0U7Cit9CitGWF9GTE9BVAlDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OkNvbnZlcldpZHRoKEZYX0ZMT0FUIHdpZHRoKQoreworICAgIHJldHVybiB3aWR0aDsKK30KK3ZvaWQgQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93OjpQcm9jZXNzT2JqZWN0KENQREZfUGFnZU9iamVjdCogcE9iaiwgRlhfRkxPQVQgcmVmbG93V2lkdGgsIENGWF9BZmZpbmVNYXRyaXggb2JqTWF0cml4KQoreworICAgIGlmKCFwT2JqKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYocE9iai0+bV9UeXBlID09IFBERlBBR0VfVEVYVCkgeworICAgICAgICBQcm9jZXNzVGV4dE9iamVjdCggKENQREZfVGV4dE9iamVjdCAqKXBPYmosIHJlZmxvd1dpZHRoLCBvYmpNYXRyaXgpOworICAgIH0gZWxzZSBpZihwT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9JTUFHRSkgeworICAgICAgICBpZighKG1fZmxhZ3MgJiBSRl9QQVJTRVJfSU1BR0UpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0cyogcE9ianMgPSBGWF9ORVcgQ1BERl9QYWdlT2JqZWN0cyhGQUxTRSk7CisgICAgICAgIGlmIChOVUxMID09IHBPYmpzKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcE9ianMtPkdldExhc3RPYmplY3RQb3NpdGlvbigpOworICAgICAgICBwb3MgPSBwT2Jqcy0+SW5zZXJ0T2JqZWN0KHBvcywgcE9iaik7CisgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4OworICAgICAgICBGWF9SRUNUIHJlY3QgPSBwT2JqLT5HZXRCQm94KCZtYXRyaXgpOworICAgICAgICBDUERGX0ltYWdlT2JqZWN0KiBJbWFnZU9iaiA9IChDUERGX0ltYWdlT2JqZWN0KilwT2JqOworICAgICAgICBQcm9jZXNzVW5pdGFyeU9ianMocE9ianMsIHJlZmxvd1dpZHRoLCBvYmpNYXRyaXgpOworICAgICAgICBkZWxldGUgcE9ianM7CisgICAgfSBlbHNlIGlmKHBPYmotPm1fVHlwZSA9PSBQREZQQUdFX1BBVEgpIHsKKyAgICB9IGVsc2UgaWYocE9iai0+bV9UeXBlID09IFBERlBBR0VfRk9STSkgeworICAgICAgICBDUERGX0Zvcm1PYmplY3QqIHBGb3JtID0gKENQREZfRm9ybU9iamVjdCopcE9iajsKKyAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gcEZvcm0tPm1fcEZvcm0tPkdldEZpcnN0T2JqZWN0UG9zaXRpb24oKTsKKyAgICAgICAgb2JqTWF0cml4LkNvbmNhdChwRm9ybS0+bV9Gb3JtTWF0cml4KTsKKyAgICAgICAgd2hpbGUgKHBvcykgeworICAgICAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqMSA9IHBGb3JtLT5tX3BGb3JtLT5HZXROZXh0T2JqZWN0KHBvcyk7CisgICAgICAgICAgICBQcm9jZXNzT2JqZWN0KHBPYmoxLCByZWZsb3dXaWR0aCwgb2JqTWF0cml4KTsKKyAgICAgICAgfQorICAgIH0KK30KK3ZvaWQgQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93OjpQcm9jZXNzT2JqcyhJUERGX0xheW91dEVsZW1lbnQqIHBFbGVtZW50LCBGWF9GTE9BVCByZWZsb3dXaWR0aCkKK3sKKyAgICBtX2ZDdXJyTWF4V2lkdGggPSByZWZsb3dXaWR0aDsKKyAgICBpbnQgT2JqQ291bnQgPSBwRWxlbWVudC0+Q291bnRPYmplY3RzKCk7CisgICAgZm9yKGludCBpID0gMDsgaSA8IE9iakNvdW50OyBpKyspIHsKKyAgICAgICAgQ1BERl9QYWdlT2JqZWN0KiBwT2JqID0gcEVsZW1lbnQtPkdldE9iamVjdChpKTsKKyAgICAgICAgUHJvY2Vzc09iamVjdChwT2JqLCByZWZsb3dXaWR0aCwgbV9QREZNYXRyaXgpOworICAgICAgICBjb250aW51ZTsKKyAgICB9Cit9Cit2b2lkIENQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdzo6QWRkVGVtcDJDdXJyTGluZShpbnQgYmVnaW4sIGludCBjb3VudCkKK3sKKyAgICBpZihiZWdpbiA8IDAgfHwgY291bnQgPD0gMCB8fCAhbV9wUmVmbG93ZWRQYWdlIHx8ICFtX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkIHx8ICFtX3BUZW1wTGluZSkgeworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAgICAgY291bnQgKz0gYmVnaW47CisgICAgfQorICAgIGludCBzaXplID0gbV9wUmVmbG93ZWRQYWdlLT5tX3BSZWZsb3dlZC0+R2V0U2l6ZSgpOworICAgIGludCB0ZW1wcyA9IG1fcFRlbXBMaW5lLT5HZXRTaXplKCk7CisgICAgZm9yKGludCBpID0gYmVnaW47IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIENSRl9EYXRhKiBwRGF0YSA9ICgqbV9wVGVtcExpbmUpW2ldOworICAgICAgICBBZGREYXRhMkN1cnJMaW5lKHBEYXRhKTsKKyAgICB9Cit9Cit2b2lkIENQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdzo6QWRkRGF0YTJDdXJyTGluZShDUkZfRGF0YSogcERhdGEpCit7CisgICAgaWYocERhdGEgPT0gTlVMTCB8fCBtX3BDdXJyTGluZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wQ3VyckxpbmUtPkFkZChwRGF0YSk7CisgICAgbV9mQ3VyckxpbmVXaWR0aCA9IHBEYXRhLT5tX1Bvc1ggKyBwRGF0YS0+bV9XaWR0aDsKKyAgICBpZihwRGF0YS0+bV9IZWlnaHQgPiBtX2ZDdXJyTGluZUhlaWdodCkgeworICAgICAgICBtX2ZDdXJyTGluZUhlaWdodCA9IHBEYXRhLT5tX0hlaWdodDsKKyAgICB9Cit9Cit2b2lkIENQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdzo6VXBkYXRlQ3VyckxpbmUoKQoreworfQordm9pZCBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OlRyYW5zZm9ybShjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBDUkZfRGF0YVB0ckFycmF5KiBwRGF0YUFycmF5LCBpbnQgYmVnaW5Qb3MsIGludCBjb3VudCkKK3sKKyAgICBpZiAoIXBEYXRhQXJyYXkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZihjb3VudCA9PSAwKSB7CisgICAgICAgIGNvdW50ID0gcERhdGFBcnJheS0+R2V0U2l6ZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvdW50ICs9IGJlZ2luUG9zOworICAgIH0KKyAgICBmb3IoaW50IGkgPSBiZWdpblBvczsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgQ1JGX0RhdGEqIHBEYXRhID0gKCpwRGF0YUFycmF5KVtpXTsKKyAgICAgICAgVHJhbnNmb3JtKHBNYXRyaXgsIHBEYXRhKTsKKyAgICB9Cit9Cit2b2lkIENQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdzo6VHJhbnNmb3JtKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIENSRl9EYXRhKiBwRGF0YSkKK3sKKyAgICBpZihwRGF0YS0+R2V0VHlwZSgpID09IENSRl9EYXRhOjpQYXRoKSB7CisgICAgICAgIENSRl9QYXRoRGF0YSogcFBhdGhEYXRhID0gKENSRl9QYXRoRGF0YSopcERhdGE7CisgICAgICAgIHBQYXRoRGF0YS0+bV9wUGF0aDJEZXZpY2UuQ29uY2F0KCpwTWF0cml4KTsKKyAgICB9CisgICAgcE1hdHJpeC0+VHJhbnNmb3JtKHBEYXRhLT5tX1Bvc1gsIHBEYXRhLT5tX1Bvc1ksIHBEYXRhLT5tX1Bvc1gsIHBEYXRhLT5tX1Bvc1kpOworfQorRlhfQk9PTCBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OkZpbmlzaGVkQ3VyckxpbmUoKQoreworICAgIGlmIChOVUxMID09IG1fcEN1cnJMaW5lKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgaW50IGNvdW50ID0gbV9wQ3VyckxpbmUtPkdldFNpemUoKTsKKyAgICBpZihjb3VudCA9PSAwKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgaWYobV9mTGluZUhlaWdodCA+IG1fZkN1cnJMaW5lSGVpZ2h0KSB7CisgICAgICAgIG1fZkN1cnJMaW5lSGVpZ2h0ID0gbV9mTGluZUhlaWdodDsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2ZDdXJyTGluZUhlaWdodCArPSAyOworICAgIH0KKyAgICBpZihtX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkLT5HZXRTaXplKCkgPiAwKSB7CisgICAgICAgIG1fZkN1cnJMaW5lSGVpZ2h0ICs9IG1fZkxpbmVTcGFjZTsKKyAgICB9CisgICAgRlhfRkxPQVQgaGVpZ2h0ID0gbV9wUmVmbG93ZWRQYWdlLT5tX1BhZ2VIZWlnaHQgKyBtX2ZDdXJyTGluZUhlaWdodDsKKyAgICBGWF9GTE9BVCBsaW5lSGVpZ2h0ID0gbV9mTGluZUhlaWdodDsKKyAgICBpZihsaW5lSGVpZ2h0ID09IDApIHsKKyAgICAgICAgbGluZUhlaWdodCA9IG1fZkN1cnJMaW5lSGVpZ2h0OworICAgIH0KKyAgICBGWF9GTE9BVCBkeCA9IDA7CisgICAgc3dpdGNoKG1fVGV4dEFsaWduKSB7CisgICAgICAgIGNhc2UgTGF5b3V0Q2VudGVyOgorICAgICAgICAgICAgZHggPSAobV9mQ3Vyck1heFdpZHRoIC0gbV9mQ3VyckxpbmVXaWR0aCkgLyAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGF5b3V0RW5kOgorICAgICAgICAgICAgZHggPSBtX2ZDdXJyTWF4V2lkdGggLSBtX2ZDdXJyTGluZVdpZHRoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGF5b3V0SnVzdGlmeToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIEZYX0ZMT0FUIGR5ID0gLSBoZWlnaHQ7CisgICAgaW50IHJlZmVkU2l6ZSA9IG1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQtPkdldFNpemUoKTsKKyAgICBpZihjb3VudCA9PSAxMykgeworICAgICAgICBpbnQgYSA9IDA7CisgICAgfQorICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIENSRl9EYXRhKiBwRGF0YSA9ICgqbV9wQ3VyckxpbmUpW2ldOworICAgICAgICBtX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkLT5BZGQocERhdGEpOworICAgICAgICBGWF9GTE9BVCB4ID0gbV9TdGFydEluZGVudCArIGR4ICogKG1fVGV4dEFsaWduID09IExheW91dEp1c3RpZnkgPyBpICsgMSA6IDEpOworICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeCgxLCAwLCAwLCAxLCB4LCBkeSk7CisgICAgICAgIFRyYW5zZm9ybSgmbWF0cml4LCBwRGF0YSk7CisgICAgfQorICAgIG1fcEN1cnJMaW5lLT5SZW1vdmVBbGwoKTsKKyAgICBtX2ZDdXJyTGluZVdpZHRoID0gMDsKKyAgICBtX3BSZWZsb3dlZFBhZ2UtPm1fUGFnZUhlaWdodCArPSBtX2ZDdXJyTGluZUhlaWdodDsKKyAgICBtX2ZDdXJyTGluZUhlaWdodCA9IDA7CisgICAgcmV0dXJuIFRSVUU7Cit9CitDUkZfQ2hhclN0YXRlKiBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OkdldENoYXJTdGF0ZShDUERGX1RleHRPYmplY3QqIHBPYmosIENQREZfRm9udCogcEZvbnQsIEZYX0ZMT0FUIGZIZWlnaHQsIEZYX0FSR0IgY29sb3IpCit7CisgICAgaWYgKE5VTEwgPT0gbV9wUmVmbG93ZWRQYWdlLT5tX3BDaGFyU3RhdGUpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGludCBjb3VudCA9IG1fcFJlZmxvd2VkUGFnZS0+bV9wQ2hhclN0YXRlLT5HZXRTaXplKCk7CisgICAgZm9yKGludCBpID0gY291bnQgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICBDUkZfQ2hhclN0YXRlKiBwU3RhdGUgPSAoQ1JGX0NoYXJTdGF0ZSopbV9wUmVmbG93ZWRQYWdlLT5tX3BDaGFyU3RhdGUtPkdldEF0KGkpOworICAgICAgICBpZihwU3RhdGUtPm1fQ29sb3IgPT0gY29sb3IgJiYgcFN0YXRlLT5tX2ZGb250U2l6ZSA9PSBmSGVpZ2h0ICYmIHBTdGF0ZS0+bV9wRm9udCA9PSBwRm9udCAmJiBwU3RhdGUtPm1fcFRleHRPYmogPT0gcE9iaikgeworICAgICAgICAgICAgcmV0dXJuIHBTdGF0ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDUkZfQ2hhclN0YXRlIHBTdGF0ZTsKKyAgICBwU3RhdGUubV9wVGV4dE9iaiA9IHBPYmo7CisgICAgcFN0YXRlLm1fQ29sb3IgPSBjb2xvcjsKKyAgICBwU3RhdGUubV9wRm9udCA9IHBGb250OworICAgIHBTdGF0ZS5tX2ZGb250U2l6ZSA9IGZIZWlnaHQ7CisgICAgaW50IGFzY2VudCA9IHBGb250LT5HZXRUeXBlQXNjZW50KCk7CisgICAgaW50IGRlc2NlbnQgPSBwRm9udC0+R2V0VHlwZURlc2NlbnQoKTsKKyAgICBwU3RhdGUubV9mQXNjZW50ID0gYXNjZW50ICogZkhlaWdodCAvIChhc2NlbnQgLSBkZXNjZW50KTsKKyAgICBpZihkZXNjZW50ID09IDApIHsKKyAgICAgICAgcFN0YXRlLm1fZkRlc2NlbnQgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIHBTdGF0ZS5tX2ZEZXNjZW50ID0gZGVzY2VudCAqIGZIZWlnaHQgLyAoYXNjZW50IC0gZGVzY2VudCk7CisgICAgfQorICAgIHBTdGF0ZS5tX2JWZXJ0ID0gRkFMU0U7CisgICAgQ1BERl9DSURGb250ICpwQ0lERm9udCA9IHBGb250LT5HZXRDSURGb250KCk7CisgICAgaWYocENJREZvbnQpIHsKKyAgICAgICAgcFN0YXRlLm1fYlZlcnQgPSBwQ0lERm9udC0+SXNWZXJ0V3JpdGluZygpOworICAgIH0KKyAgICBtX3BSZWZsb3dlZFBhZ2UtPm1fcENoYXJTdGF0ZS0+QWRkKHBTdGF0ZSk7CisgICAgcmV0dXJuIChDUkZfQ2hhclN0YXRlKiltX3BSZWZsb3dlZFBhZ2UtPm1fcENoYXJTdGF0ZS0+R2V0QXQoY291bnQpOworfQoraW50IENQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdzo6R2V0Q2hhcldpZHRoKEZYX0RXT1JEIGNoYXJDb2RlLCBDUERGX0ZvbnQqIHBGb250KSBjb25zdAoreworICAgIGlmKGNoYXJDb2RlID09IC0xKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpbnQgdyA9IHBGb250LT5HZXRDaGFyV2lkdGhGKGNoYXJDb2RlKTsKKyAgICBpZih3ID09IDApIHsKKyAgICAgICAgQ0ZYX0J5dGVTdHJpbmcgc3RyOworICAgICAgICBwRm9udC0+QXBwZW5kQ2hhcihzdHIsIGNoYXJDb2RlKTsKKyAgICAgICAgdyA9IHBGb250LT5HZXRTdHJpbmdXaWR0aChzdHIsIDEpOworICAgICAgICBpZih3ID09IDApIHsKKyAgICAgICAgICAgIEZYX1JFQ1QgQkJveDsKKyAgICAgICAgICAgIHBGb250LT5HZXRDaGFyQkJveChjaGFyQ29kZSwgQkJveCk7CisgICAgICAgICAgICB3ID0gQkJveC5yaWdodCAtIEJCb3gubGVmdDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdzsKK30KK3ZvaWQgQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93OjpDcmVhdGVSRkRhdGEoQ1BERl9QYWdlT2JqZWN0KiBwT2JqLCBDRlhfQWZmaW5lTWF0cml4KiBwT2JqTWF0cml4KQoreworICAgIGlmIChOVUxMID09IG1fcFJlZmxvd2VkUGFnZS0+bV9wTWVtb3J5UG9vbCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmKHBPYmotPm1fVHlwZSA9PSBQREZQQUdFX1RFWFQpIHsKKyAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dE9iaiA9IChDUERGX1RleHRPYmplY3QqIClwT2JqOworICAgICAgICBpbnQgY291bnQgPSBwVGV4dE9iai0+Q291bnRJdGVtcygpOworICAgICAgICBpZighY291bnQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZihjb3VudCA9PSAxKSB7CisgICAgICAgICAgICBDUERGX1RleHRPYmplY3RJdGVtIEl0ZW07CisgICAgICAgICAgICBwVGV4dE9iai0+R2V0SXRlbUluZm8oMCwgJkl0ZW0pOworICAgICAgICAgICAgaWYoSXRlbS5tX0NoYXJDb2RlID09IDQ5KSB7CisgICAgICAgICAgICAgICAgaW50IGEgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIENQREZfRm9udCAqIHBGb250ID0gcFRleHRPYmotPkdldEZvbnQoKTsKKyAgICAgICAgRlhfRkxPQVQgZnMgPSBwVGV4dE9iai0+R2V0Rm9udFNpemUoKTsKKyAgICAgICAgRlhfRkxPQVQqIHBtYXRyaXggPSBwVGV4dE9iai0+bV9UZXh0U3RhdGUuR2V0TWF0cml4KCk7CisgICAgICAgIEZYX0ZMT0FUIG1hdHJpeDEgPSBwbWF0cml4WzFdOworICAgICAgICBpZihwbWF0cml4WzJdID09IDApIHsKKyAgICAgICAgICAgIG1hdHJpeDEgPSAwOworICAgICAgICB9CisgICAgICAgIENGWF9BZmZpbmVNYXRyaXggdGV4dE1hdHJpeChwbWF0cml4WzBdLCBtYXRyaXgxLCBwbWF0cml4WzJdLCBwbWF0cml4WzNdLCAwLCAwKTsKKyAgICAgICAgRlhfRkxPQVQgaGVpZ2h0ID0gRlhTWVNfZmFicyh0ZXh0TWF0cml4LlRyYW5zZm9ybURpc3RhbmNlKGZzKSk7CisgICAgICAgIGlmKHBPYmpNYXRyaXgpIHsKKyAgICAgICAgICAgIGhlaWdodCA9IEZYU1lTX2ZhYnMocE9iak1hdHJpeC0+VHJhbnNmb3JtRGlzdGFuY2UoaGVpZ2h0KSk7CisgICAgICAgIH0KKyAgICAgICAgaW50IHIgPSAwLCBnID0gMCwgYiA9IDA7CisgICAgICAgIHBUZXh0T2JqLT5tX0NvbG9yU3RhdGUuR2V0RmlsbENvbG9yKCktPkdldFJHQihyLCBnLCBiKTsKKyAgICAgICAgRlhfQVJHQiBjb2wgPSByICogMHgxMDAwMDsKKyAgICAgICAgY29sICs9IGcgKiAweDEwMDsKKyAgICAgICAgY29sICs9IGI7CisgICAgICAgIENSRl9DaGFyU3RhdGUqIHBTdGF0ZSA9IEdldENoYXJTdGF0ZShwVGV4dE9iaiwgcEZvbnQsIGhlaWdodCwgY29sKTsKKyAgICAgICAgRlhfRkxPQVQgZHggPSAwLCBkeSA9IDA7CisgICAgICAgIEZYX1JFQ1QgT2JqQkJveDsKKyAgICAgICAgaWYocE9iak1hdHJpeCkgeworICAgICAgICAgICAgT2JqQkJveCA9IHBUZXh0T2JqLT5HZXRCQm94KHBPYmpNYXRyaXgpOworICAgICAgICAgICAgZHggPSAoZmxvYXQpT2JqQkJveC5sZWZ0OworICAgICAgICAgICAgZHkgPSAoZmxvYXQpT2JqQkJveC5ib3R0b207CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIE9iakJCb3ggPSBwVGV4dE9iai0+R2V0QkJveCgmbWF0cml4KTsKKyAgICAgICAgfQorICAgICAgICBGWF9GTE9BVCBvYmpXaWR0aCA9IDA7CisgICAgICAgIENGWF9CeXRlU3RyaW5nIHN0cjsKKyAgICAgICAgRlhfQk9PTCBiT3JkZXIgPSBUUlVFOworICAgICAgICBDRlhfUHRyQXJyYXkgdGVtcEFycmF5OworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIENQREZfVGV4dE9iamVjdEl0ZW0gSXRlbTsKKyAgICAgICAgcFRleHRPYmotPkdldEl0ZW1JbmZvKGksICZJdGVtKTsKKyAgICAgICAgZHggPSBJdGVtLm1fT3JpZ2luWDsKKyAgICAgICAgZHkgPSBJdGVtLm1fT3JpZ2luWTsKKyAgICAgICAgdGV4dE1hdHJpeC5UcmFuc2Zvcm0oSXRlbS5tX09yaWdpblgsIEl0ZW0ubV9PcmlnaW5ZLCBkeCwgZHkpOworICAgICAgICBDUkZfQ2hhckRhdGEqIHBMYXN0RGF0YSA9IE5VTEw7CisgICAgICAgIEZYX0ZMT0FUIGhvcnpTY2FsZSA9IHBUZXh0T2JqLT5tX1RleHRTdGF0ZS5HZXRGb250U2l6ZVYoKSAvIHBUZXh0T2JqLT5tX1RleHRTdGF0ZS5HZXRGb250U2l6ZUgoKTsKKyAgICAgICAgd2hpbGUoaSA8IGNvdW50KSB7CisgICAgICAgICAgICBwVGV4dE9iai0+R2V0SXRlbUluZm8oaSwgJkl0ZW0pOworICAgICAgICAgICAgaWYoSXRlbS5tX0NoYXJDb2RlID09IC0xKSB7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRlhfRkxPQVQgT3JpZ2luWCwgT3JpZ2luWTsKKyAgICAgICAgICAgIHRleHRNYXRyaXguVHJhbnNmb3JtKEl0ZW0ubV9PcmlnaW5YLCBJdGVtLm1fT3JpZ2luWSwgT3JpZ2luWCwgT3JpZ2luWSk7CisgICAgICAgICAgICBDUkZfQ2hhckRhdGEqIHBEYXRhID0gKENSRl9DaGFyRGF0YSopbV9wUmVmbG93ZWRQYWdlLT5tX3BNZW1vcnlQb29sLT5BbGxvYyhzaXplb2YoQ1JGX0NoYXJEYXRhKSk7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSBwRGF0YSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcERhdGEtPm1fVHlwZSA9IENSRl9EYXRhOjpUZXh0OworICAgICAgICAgICAgaWYoRlhTWVNfZmFicyhPcmlnaW5ZIC0gZHkpID4gRlhTWVNfZmFicyhPcmlnaW5YIC0gZHgpKSB7CisgICAgICAgICAgICAgICAgcERhdGEtPm1fUG9zWSA9IGR5OworICAgICAgICAgICAgICAgIHBEYXRhLT5tX1Bvc1ggPSBwTGFzdERhdGEtPm1fUG9zWCArIHBMYXN0RGF0YS0+bV9XaWR0aCArIHRleHRNYXRyaXguVHJhbnNmb3JtRGlzdGFuY2UocFRleHRPYmotPm1fVGV4dFN0YXRlLkdldE9iamVjdCgpLT5tX0NoYXJTcGFjZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBEYXRhLT5tX1Bvc1kgPSBPcmlnaW5ZOworICAgICAgICAgICAgICAgIHBEYXRhLT5tX1Bvc1ggPSBPcmlnaW5YOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IHNpemUgPSB0ZW1wQXJyYXkuR2V0U2l6ZSgpOworICAgICAgICAgICAgaWYoc2l6ZSAmJiBwRGF0YS0+bV9Qb3NYIDwgcExhc3REYXRhLT5tX1Bvc1ggKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzaXplOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQ1JGX0NoYXJEYXRhKiBwRGF0YTEgPSAoQ1JGX0NoYXJEYXRhKil0ZW1wQXJyYXkuR2V0QXQoaik7CisgICAgICAgICAgICAgICAgICAgIGlmKHBEYXRhMS0+bV9Qb3NYID4gcERhdGEtPm1fUG9zWCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcEFycmF5Lkluc2VydEF0KGosIHBEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0ZW1wQXJyYXkuQWRkKHBEYXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBMYXN0RGF0YSA9IHBEYXRhOworICAgICAgICAgICAgcERhdGEtPm1fQ2hhckNvZGUgPSBJdGVtLm1fQ2hhckNvZGU7CisgICAgICAgICAgICBwRGF0YS0+bV9IZWlnaHQgPSBGWFNZU19mYWJzKGhlaWdodCk7CisgICAgICAgICAgICBpbnQgdyA9IEdldENoYXJXaWR0aChJdGVtLm1fQ2hhckNvZGUsIHBGb250KTsKKyAgICAgICAgICAgIHBEYXRhLT5tX1dpZHRoID0gRlhTWVNfZmFicyhmcyAqIHRleHRNYXRyaXguVHJhbnNmb3JtRGlzdGFuY2UoKEZYX0ZMT0FUKXcpIC8gMTAwMCk7CisgICAgICAgICAgICBpZihob3J6U2NhbGUpIHsKKyAgICAgICAgICAgICAgICBwRGF0YS0+bV9XaWR0aCAvPSBob3J6U2NhbGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwRGF0YS0+bV9wQ2hhclN0YXRlID0gcFN0YXRlOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGNvdW50ID0gdGVtcEFycmF5LkdldFNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb3VudDsgaisrKSB7CisgICAgICAgICAgICBDUkZfQ2hhckRhdGEqIHBEYXRhID0gKENSRl9DaGFyRGF0YSopdGVtcEFycmF5LkdldEF0KGopOworICAgICAgICAgICAgaWYgKG1fcFRlbXBMaW5lKSB7CisgICAgICAgICAgICAgICAgbV9wVGVtcExpbmUtPkFkZChwRGF0YSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdGVtcEFycmF5LlJlbW92ZUFsbCgpOworICAgIH0gZWxzZSBpZihwT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9JTUFHRSkgeworICAgICAgICBDUERGX0ltYWdlT2JqZWN0KiBwSW1hZ2VPYmogPSAoQ1BERl9JbWFnZU9iamVjdCogKXBPYmo7CisgICAgICAgIENSRl9JbWFnZURhdGEqIHBSRkltYWdlID0gKENSRl9JbWFnZURhdGEqKW1fcFJlZmxvd2VkUGFnZS0+bV9wTWVtb3J5UG9vbC0+QWxsb2Moc2l6ZW9mKENSRl9JbWFnZURhdGEpKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gcFJGSW1hZ2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBwUkZJbWFnZS0+bV9wQml0bWFwID0gTlVMTDsKKyAgICAgICAgcFJGSW1hZ2UtPm1fVHlwZSA9IENSRl9EYXRhOjpJbWFnZTsKKyAgICAgICAgaWYgKG1fcFRlbXBMaW5lKSB7CisgICAgICAgICAgICBtX3BUZW1wTGluZS0+QWRkKHBSRkltYWdlKTsKKyAgICAgICAgfQorICAgICAgICBDUERGX0ltYWdlICpwSW1hZ2UgPSBwSW1hZ2VPYmotPm1fcEltYWdlOworICAgICAgICBpZiAoIXBJbWFnZS0+bV9wRElCU291cmNlIHx8ICFwSW1hZ2UtPm1fcE1hc2spIHsKKyAgICAgICAgICAgIGlmKHBJbWFnZS0+U3RhcnRMb2FkRElCU291cmNlKG1fcFJlZmxvd2VkUGFnZS0+R2V0Rm9ybVJlc0RpY3QocEltYWdlT2JqKSwgbV9wUmVmbG93ZWRQYWdlLT5tX3BQREZQYWdlLT5tX3BSZXNvdXJjZXMsIDAsIDAsIFRSVUUpKSB7CisgICAgICAgICAgICAgICAgcEltYWdlLT5Db250aW51ZShOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBDRlhfRElCU291cmNlKiBwRGliU291cmNlID0gcEltYWdlLT5EZXRhY2hCaXRtYXAoKTsKKyAgICAgICAgaWYgKHBEaWJTb3VyY2UpIHsKKyAgICAgICAgICAgIHBSRkltYWdlLT5tX3BCaXRtYXAgPSBwRGliU291cmNlLT5DbG9uZSgpOworICAgICAgICAgICAgZGVsZXRlIHBEaWJTb3VyY2U7CisgICAgICAgIH0KKyAgICAgICAgQ0ZYX0RJQlNvdXJjZSogcE1hc2sgPSBwSW1hZ2UtPkRldGFjaE1hc2soKTsKKyAgICAgICAgaWYgKHBNYXNrKSB7CisgICAgICAgICAgICBpZiAoIXBNYXNrLT5Jc0FscGhhTWFzaygpKSB7CisgICAgICAgICAgICAgICAgQ0ZYX0RJQml0bWFwKiBwTWFza0JtcCA9IHBNYXNrLT5DbG9uZSgpOworICAgICAgICAgICAgICAgIHBNYXNrQm1wLT5Db252ZXJ0Rm9ybWF0KEZYRElCXzhicHBNYXNrKTsKKyAgICAgICAgICAgICAgICBwUkZJbWFnZS0+bV9wQml0bWFwLT5NdWx0aXBseUFscGhhKHBNYXNrQm1wKTsKKyAgICAgICAgICAgICAgICBkZWxldGUgcE1hc2tCbXA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBSRkltYWdlLT5tX3BCaXRtYXAtPk11bHRpcGx5QWxwaGEocE1hc2spOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVsZXRlIHBNYXNrOworICAgICAgICB9CisgICAgICAgIENGWF9GbG9hdFJlY3QgT2JqQkJveDsKKyAgICAgICAgaWYocE9iak1hdHJpeCkgeworICAgICAgICAgICAgT2JqQkJveCA9IHBJbWFnZU9iai0+R2V0QkJveChwT2JqTWF0cml4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4OworICAgICAgICAgICAgT2JqQkJveCA9IHBJbWFnZU9iai0+R2V0QkJveCgmbWF0cml4KTsKKyAgICAgICAgfQorICAgICAgICBwUkZJbWFnZS0+bV9XaWR0aCA9IE9iakJCb3guV2lkdGgoKTsKKyAgICAgICAgcFJGSW1hZ2UtPm1fSGVpZ2h0ID0gT2JqQkJveC5IZWlnaHQoKTsKKyAgICAgICAgcFJGSW1hZ2UtPm1fUG9zWCA9IDA7CisgICAgICAgIHBSRkltYWdlLT5tX1Bvc1kgPSAwOworICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgMCk7CisgICAgICAgIG1hdHJpeC5Db25jYXQocEltYWdlT2JqLT5tX01hdHJpeCk7CisgICAgICAgIG1hdHJpeC5Db25jYXQoKnBPYmpNYXRyaXgpOworICAgICAgICBwUkZJbWFnZS0+bV9NYXRyaXguU2V0KG1hdHJpeC5hID09IDAgPyAwIDogbWF0cml4LmEgLyBGWFNZU19mYWJzKG1hdHJpeC5hKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXguYiA9PSAwID8gMCA6IG1hdHJpeC5iIC8gRlhTWVNfZmFicyhtYXRyaXguYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LmMgPT0gMCA/IDAgOiBtYXRyaXguYyAvIEZYU1lTX2ZhYnMobWF0cml4LmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5kID09IDAgPyAwIDogbWF0cml4LmQgLyBGWFNZU19mYWJzKG1hdHJpeC5kKSwgMCwgMCk7CisgICAgfSBlbHNlIGlmKHBPYmotPm1fVHlwZSA9PSBQREZQQUdFX1BBVEgpIHsKKyAgICB9Cit9CitGWF9GTE9BVCBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OiBHZXREYXRhc1dpZHRoKGludCBiZWdpblBvcywgaW50IGVuZHBvcykKK3sKKyAgICBpZihlbmRwb3MgPCBiZWdpblBvcyB8fCAhbV9wVGVtcExpbmUpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmKGVuZHBvcyA+IG1fcFRlbXBMaW5lLT5HZXRTaXplKCkgLSAxKSB7CisgICAgICAgIGVuZHBvcyA9IG1fcFRlbXBMaW5lLT5HZXRTaXplKCkgLSAxOworICAgIH0KKyAgICBDUkZfRGF0YSogcEJlZ2luRGF0YSA9ICgqbV9wVGVtcExpbmUpW2JlZ2luUG9zXTsKKyAgICBDUkZfRGF0YSogcEVuZERhdGEgPSAoKm1fcFRlbXBMaW5lKVtlbmRwb3NdOworICAgIHJldHVybiBwRW5kRGF0YS0+bV9Qb3NYIC0gcEJlZ2luRGF0YS0+bV9Qb3NYICsgcEVuZERhdGEtPm1fV2lkdGg7Cit9CitGWF9XQ0hBUiBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OkdldFByZUNoYXIoKQoreworICAgIGlmIChOVUxMID09IG1fcEN1cnJMaW5lKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaW50IGluZGV4ID0gbV9wQ3VyckxpbmUtPkdldFNpemUoKSAtIDE7CisgICAgQ1JGX0NoYXJEYXRhKiBwQ2hhckRhdGEgPSBOVUxMOworICAgIHdoaWxlIChpbmRleCA+PSAwICYmICFwQ2hhckRhdGEpIHsKKyAgICAgICAgQ1JGX0RhdGEqIHBEYXRhID0gKCptX3BDdXJyTGluZSlbaW5kZXhdOworICAgICAgICBpZihwRGF0YS0+R2V0VHlwZSgpID09IENSRl9EYXRhOjpUZXh0KSB7CisgICAgICAgICAgICBwQ2hhckRhdGEgPSAoQ1JGX0NoYXJEYXRhKilwRGF0YTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmRleCAtLTsKKyAgICB9CisgICAgaWYobV9wUmVmbG93ZWRQYWdlKSB7CisgICAgICAgIGluZGV4ID0gbV9wUmVmbG93ZWRQYWdlLT5tX3BSZWZsb3dlZC0+R2V0U2l6ZSgpIC0gMTsKKyAgICB9CisgICAgd2hpbGUoIXBDaGFyRGF0YSAmJiBpbmRleCA+PSAwKSB7CisgICAgICAgIENSRl9EYXRhKiBwRGF0YSA9ICgqbV9wUmVmbG93ZWRQYWdlLT5tX3BSZWZsb3dlZClbaW5kZXhdOworICAgICAgICBpZihwRGF0YS0+R2V0VHlwZSgpID09IENSRl9EYXRhOjpUZXh0KSB7CisgICAgICAgICAgICBwQ2hhckRhdGEgPSAoQ1JGX0NoYXJEYXRhKilwRGF0YTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmRleCAtLTsKKyAgICB9CisgICAgaWYocENoYXJEYXRhKSB7CisgICAgICAgIENGWF9XaWRlU3RyaW5nIHN0ciA9IHBDaGFyRGF0YS0+bV9wQ2hhclN0YXRlLT5tX3BGb250LT5Vbmljb2RlRnJvbUNoYXJDb2RlKHBDaGFyRGF0YS0+bV9DaGFyQ29kZSk7CisgICAgICAgIHJldHVybiBzdHIuR2V0QXQoMCk7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KK2ludCBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OlByb2Nlc3NJbnNlcnRPYmplY3QoQ1BERl9UZXh0T2JqZWN0KiBwT2JqLCBDRlhfQWZmaW5lTWF0cml4IGZvcm1NYXRyaXgpCit7CisgICAgaWYoIXBPYmogfHwgIW1fcFByZU9iaiB8fCAhbV9wQ3VyckxpbmUpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmKG1fcEN1cnJMaW5lLT5HZXRTaXplKCkgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQ1BERl9UZXh0T2JqZWN0SXRlbSBpdGVtOworICAgIGludCBuSXRlbSA9IG1fcFByZU9iai0+Q291bnRJdGVtcygpOworICAgIG1fcFByZU9iai0+R2V0SXRlbUluZm8obkl0ZW0gLSAxLCAmaXRlbSk7CisgICAgRlhfRkxPQVQgbGFzdF9wb3MgPSBpdGVtLm1fT3JpZ2luWDsKKyAgICBGWF9GTE9BVCBsYXN0X3dpZHRoID0gR2V0Q2hhcldpZHRoKGl0ZW0ubV9DaGFyQ29kZSwgbV9wUHJlT2JqLT5HZXRGb250KCkpICogbV9wUHJlT2JqLT5HZXRGb250U2l6ZSgpIC8gMTAwMDsKKyAgICBsYXN0X3dpZHRoID0gRlhTWVNfZmFicyhsYXN0X3dpZHRoKTsKKyAgICBwT2JqLT5HZXRJdGVtSW5mbygwLCAmaXRlbSk7CisgICAgRlhfRkxPQVQgdGhpc193aWR0aCA9IEdldENoYXJXaWR0aChpdGVtLm1fQ2hhckNvZGUsIHBPYmotPkdldEZvbnQoKSkgKiBwT2JqLT5HZXRGb250U2l6ZSgpIC8gMTAwMDsKKyAgICB0aGlzX3dpZHRoID0gRlhTWVNfZmFicyh0aGlzX3dpZHRoKTsKKyAgICBGWF9GTE9BVCB0aHJlc2hvbGQgPSBsYXN0X3dpZHRoID4gdGhpc193aWR0aCA/IGxhc3Rfd2lkdGggLyA0IDogdGhpc193aWR0aCAvIDQ7CisgICAgQ0ZYX0FmZmluZU1hdHJpeCBwcmV2X21hdHJpeCwgcHJldl9yZXZlcnNlOworICAgIG1fcFByZU9iai0+R2V0VGV4dE1hdHJpeCgmcHJldl9tYXRyaXgpOworICAgIHByZXZfbWF0cml4LkNvbmNhdChtX3Blck1hdHJpeCk7CisgICAgcHJldl9yZXZlcnNlLlNldFJldmVyc2UocHJldl9tYXRyaXgpOworICAgIEZYX0ZMT0FUIHggPSBwT2JqLT5HZXRQb3NYKCksIHkgPSBwT2JqLT5HZXRQb3NZKCk7CisgICAgZm9ybU1hdHJpeC5UcmFuc2Zvcm0oeCwgeSk7CisgICAgcHJldl9yZXZlcnNlLlRyYW5zZm9ybSh4LCB5KTsKKyAgICBGWF9XQ0hBUiBwcmVDaGFyICA9IEdldFByZUNoYXIoKTsKKyAgICBDRlhfV2lkZVN0cmluZyB3c3RySXRlbSA9IHBPYmotPkdldEZvbnQoKS0+VW5pY29kZUZyb21DaGFyQ29kZShpdGVtLm1fQ2hhckNvZGUpOworICAgIEZYX1dDSEFSIGN1ckNoYXIgPSB3c3RySXRlbS5HZXRBdCgwKTsKKyAgICBpZiAoRlhTWVNfZmFicyh5KSA+IHRocmVzaG9sZCAqIDIpIHsKKyAgICAgICAgaWYgKHByZUNoYXIgPT0gTCctJykgeworICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByZUNoYXIgIT0gTCcgJykgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDI7CisgICAgfQorICAgIGlmICgoeCAtIGxhc3RfcG9zIC0gbGFzdF93aWR0aCkgPiB0aHJlc2hvbGQgJiYgY3VyQ2hhciAhPSBMJyAnICYmIHByZUNoYXIgIT0gTCcgJykgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CitGWF9JTlQzMiBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3c6OkxvZ2ljUHJlT2JqKENQREZfVGV4dE9iamVjdCogcE9iaikKK3sKKyAgICBDUERGX1RleHRPYmplY3QqIHBQcmVPYmogPSBtX3BQcmVPYmo7CisgICAgbV9wUHJlT2JqID0gcE9iajsKKyAgICBpZighcE9iaiB8fCAhcFByZU9iaikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQ1BERl9UZXh0T2JqZWN0SXRlbSBpdGVtOworICAgIHBQcmVPYmotPkdldEl0ZW1JbmZvKHBQcmVPYmotPkNvdW50SXRlbXMoKSAtIDEsICZpdGVtKTsKKyAgICBGWF9GTE9BVCBsYXN0X3BvcyA9IGl0ZW0ubV9PcmlnaW5YOworICAgIEZYX0ZMT0FUIGxhc3Rfd2lkdGggPSBwUHJlT2JqLT5HZXRGb250KCktPkdldENoYXJXaWR0aEYoaXRlbS5tX0NoYXJDb2RlKSAqIHBQcmVPYmotPkdldEZvbnRTaXplKCkgLyAxMDAwOworICAgIGxhc3Rfd2lkdGggPSBGWFNZU19mYWJzKGxhc3Rfd2lkdGgpOworICAgIHBPYmotPkdldEl0ZW1JbmZvKDAsICZpdGVtKTsKKyAgICBGWF9GTE9BVCB0aGlzX3dpZHRoID0gcE9iai0+R2V0Rm9udCgpLT5HZXRDaGFyV2lkdGhGKGl0ZW0ubV9DaGFyQ29kZSkgKiBwT2JqLT5HZXRGb250U2l6ZSgpIC8gMTAwMDsKKyAgICB0aGlzX3dpZHRoID0gRlhTWVNfZmFicyh0aGlzX3dpZHRoKTsKKyAgICBGWF9GTE9BVCB0aHJlc2hvbGQgPSBsYXN0X3dpZHRoID4gdGhpc193aWR0aCA/IGxhc3Rfd2lkdGggLyA0IDogdGhpc193aWR0aCAvIDQ7CisgICAgQ0ZYX0FmZmluZU1hdHJpeCBwcmV2X21hdHJpeCwgcHJldl9yZXZlcnNlOworICAgIHBQcmVPYmotPkdldFRleHRNYXRyaXgoJnByZXZfbWF0cml4KTsKKyAgICBwcmV2X3JldmVyc2UuU2V0UmV2ZXJzZShwcmV2X21hdHJpeCk7CisgICAgRlhfRkxPQVQgeCA9IHBPYmotPkdldFBvc1goKSwgeSA9IHBPYmotPkdldFBvc1koKTsKKyAgICBwcmV2X3JldmVyc2UuVHJhbnNmb3JtKHgsIHkpOworICAgIENGWF9XaWRlU3RyaW5nIHdzdHJJdGVtID0gcE9iai0+R2V0Rm9udCgpLT5Vbmljb2RlRnJvbUNoYXJDb2RlKGl0ZW0ubV9DaGFyQ29kZSk7CisgICAgRlhfV0NIQVIgY3VyQ2hhciA9IHdzdHJJdGVtLkdldEF0KDApOworICAgIGlmIChGWFNZU19mYWJzKHkpID4gdGhyZXNob2xkICogMikgeworICAgICAgICByZXR1cm4gMjsKKyAgICB9CisgICAgRlhfV0NIQVIgcHJlQ2hhciA9IDA7CisgICAgaWYgKEZYU1lTX2ZhYnMobGFzdF9wb3MgKyBsYXN0X3dpZHRoIC0geCkgPiB0aHJlc2hvbGQgJiYgY3VyQ2hhciAhPSBMJyAnKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKKyAgICBtX3BQcmVPYmogPSBwT2JqOworICAgIGlmKCFwUHJlT2JqKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZihwUHJlT2JqLT5tX1R5cGUgIT0gcE9iai0+bV9UeXBlKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBDRlhfRmxvYXRSZWN0IHJjQ3VyT2JqKHBPYmotPm1fTGVmdCwgcE9iai0+bV9Cb3R0b20sIHBPYmotPm1fUmlnaHQsIHBPYmotPm1fVG9wKTsKKyAgICBDRlhfRmxvYXRSZWN0IHJjUHJlT2JqKHBQcmVPYmotPm1fTGVmdCwgcFByZU9iai0+bV9Cb3R0b20sIHBQcmVPYmotPm1fUmlnaHQsIHBQcmVPYmotPm1fVG9wKTsKKyAgICBpZihwT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9JTUFHRSkgeworICAgICAgICBpZihyY1ByZU9iai5Db250YWlucyhyY0N1ck9iaikpIHsKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICB9CisgICAgICAgIGlmKHJjQ3VyT2JqLkNvbnRhaW5zKHJjUHJlT2JqKSkgeworICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmKHBPYmotPm1fVHlwZSA9PSBQREZQQUdFX1RFWFQpIHsKKyAgICAgICAgaWYoISgocmNQcmVPYmouYm90dG9tID4gcmNDdXJPYmoudG9wKSB8fCAocmNQcmVPYmoudG9wIDwgcmNDdXJPYmouYm90dG9tKSkpIHsKKyAgICAgICAgICAgIEZYX0ZMT0FUIGhlaWdodCA9IEZYX01JTihyY1ByZU9iai5IZWlnaHQoKSwgcmNDdXJPYmouSGVpZ2h0KCkpOworICAgICAgICAgICAgaWYoKHJjQ3VyT2JqLmxlZnQgLSByY1ByZU9iai5yaWdodCkgPiBoZWlnaHQgLyAzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYoRlhTWVNfZmFicyhyY1ByZU9iai5XaWR0aCgpIC0gcmNDdXJPYmouV2lkdGgoKSkgPj0gMiB8fCBGWFNZU19mYWJzKHJjUHJlT2JqLkhlaWdodCgpIC0gcmNDdXJPYmouSGVpZ2h0KCkpID49IDIgKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBDUERGX1RleHRPYmplY3QqIHBQcmVUZXh0T2JqID0gKENQREZfVGV4dE9iamVjdCopcFByZU9iajsKKyAgICAgICAgQ1BERl9UZXh0T2JqZWN0KiBwQ3VyVGV4dE9iaiA9IChDUERGX1RleHRPYmplY3QqKXBPYmo7CisgICAgICAgIGludCBuUHJlQ291bnQgPSBwUHJlVGV4dE9iai0+Q291bnRJdGVtcygpOworICAgICAgICBpbnQgbkN1ckNvdW50ID0gcEN1clRleHRPYmotPkNvdW50SXRlbXMoKTsKKyAgICAgICAgaWYgKG5QcmVDb3VudCAhPSBuQ3VyQ291bnQpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIEZYX0JPT0wgYlNhbWUgPSBUUlVFOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5QcmVDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBDUERGX1RleHRPYmplY3RJdGVtIGl0ZW1QZXIsIGl0ZW1DdXI7CisgICAgICAgICAgICBwUHJlVGV4dE9iai0+R2V0SXRlbUluZm8oaSwgJml0ZW1QZXIpOworICAgICAgICAgICAgcEN1clRleHRPYmotPkdldEl0ZW1JbmZvKGksICZpdGVtQ3VyKTsKKyAgICAgICAgICAgIGlmIChpdGVtQ3VyLm1fQ2hhckNvZGUgIT0gaXRlbVBlci5tX0NoYXJDb2RlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXRlbUN1ci5tX09yaWdpblggIT0gaXRlbVBlci5tX09yaWdpblgpIHsKKyAgICAgICAgICAgICAgICBiU2FtZSA9IEZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGl0ZW1DdXIubV9PcmlnaW5ZICE9IGl0ZW1QZXIubV9PcmlnaW5ZKSB7CisgICAgICAgICAgICAgICAgYlNhbWUgPSBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZihyY1ByZU9iai5sZWZ0ID09IHJjQ3VyT2JqLmxlZnQgJiYgcmNQcmVPYmoudG9wID09IHJjQ3VyT2JqLnRvcCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYoRlhTWVNfZmFicyhyY1ByZU9iai5sZWZ0IC0gcmNDdXJPYmoubGVmdCkgPCByY1ByZU9iai5XaWR0aCgpIC8gMworICAgICAgICAgICAgICAgICYmIEZYU1lTX2ZhYnMocmNQcmVPYmoudG9wIC0gcmNDdXJPYmoudG9wKSA8IHJjUHJlT2JqLkhlaWdodCgpIC8gMykgeworICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CitGWF9CT09MIENQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdzo6SXNTYW1lVGV4dE9iamVjdChDUERGX1RleHRPYmplY3QqIHBUZXh0T2JqMSwgQ1BERl9UZXh0T2JqZWN0KiBwVGV4dE9iajIpCit7CisgICAgaWYgKCFwVGV4dE9iajEgfHwgIXBUZXh0T2JqMikgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIENGWF9GbG9hdFJlY3QgcmNQcmVPYmoocFRleHRPYmoyLT5tX0xlZnQsIHBUZXh0T2JqMi0+bV9Cb3R0b20sIHBUZXh0T2JqMi0+bV9SaWdodCwgcFRleHRPYmoyLT5tX1RvcCk7CisgICAgQ0ZYX0Zsb2F0UmVjdCByY0N1ck9iaihwVGV4dE9iajEtPm1fTGVmdCwgcFRleHRPYmoxLT5tX0JvdHRvbSwgcFRleHRPYmoxLT5tX1JpZ2h0LCBwVGV4dE9iajEtPm1fVG9wKTsKKyAgICBpZiAocmNQcmVPYmouSXNFbXB0eSgpICYmIHJjQ3VyT2JqLklzRW1wdHkoKSkgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIGlmICghcmNQcmVPYmouSXNFbXB0eSgpIHx8ICFyY0N1ck9iai5Jc0VtcHR5KCkpIHsKKyAgICAgICAgcmNQcmVPYmouSW50ZXJzZWN0KHJjQ3VyT2JqKTsKKyAgICAgICAgaWYgKHJjUHJlT2JqLklzRW1wdHkoKSkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIGlmIChGWFNZU19mYWJzKHJjUHJlT2JqLldpZHRoKCkgLSByY0N1ck9iai5XaWR0aCgpKSA+IHJjQ3VyT2JqLldpZHRoKCkgLyAyKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBUZXh0T2JqMi0+R2V0Rm9udFNpemUoKSAhPSBwVGV4dE9iajEtPkdldEZvbnRTaXplKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpbnQgblByZUNvdW50ID0gcFRleHRPYmoyLT5Db3VudEl0ZW1zKCk7CisgICAgaW50IG5DdXJDb3VudCA9IHBUZXh0T2JqMS0+Q291bnRJdGVtcygpOworICAgIGlmIChuUHJlQ291bnQgIT0gbkN1ckNvdW50KSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuUHJlQ291bnQ7IGkrKykgeworICAgICAgICBDUERGX1RleHRPYmplY3RJdGVtIGl0ZW1QZXIsIGl0ZW1DdXI7CisgICAgICAgIHBUZXh0T2JqMi0+R2V0SXRlbUluZm8oaSwgJml0ZW1QZXIpOworICAgICAgICBwVGV4dE9iajEtPkdldEl0ZW1JbmZvKGksICZpdGVtQ3VyKTsKKyAgICAgICAgaWYgKGl0ZW1DdXIubV9DaGFyQ29kZSAhPSBpdGVtUGVyLm1fQ2hhckNvZGUpIHsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KK3ZvaWQgQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93OjpQcm9jZXNzVGV4dE9iamVjdChDUERGX1RleHRPYmplY3QgKnBUZXh0T2JqLCBGWF9GTE9BVCByZWZsb3dXaWR0aCwgQ0ZYX0FmZmluZU1hdHJpeCBvYmpNYXRyaXgpCit7CisgICAgaWYocmVmbG93V2lkdGggPCAwIHx8ICFtX3BDdXJyTGluZSB8fCAhbV9wVGVtcExpbmUpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZihJc1NhbWVUZXh0T2JqZWN0KHBUZXh0T2JqLCBtX3BQcmVPYmopKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQ1BERl9QYWdlT2JqZWN0KiBwUHJlT2JqID0gbV9wUHJlT2JqOworICAgIEZYX0lOVDMyIGxvZ2ljID0gUHJvY2Vzc0luc2VydE9iamVjdChwVGV4dE9iaiwgb2JqTWF0cml4KTsKKyAgICBtX3BQcmVPYmogPSBwVGV4dE9iajsKKyAgICBtX3Blck1hdHJpeC5Db3B5KG9iak1hdHJpeCk7CisgICAgaW50IHNpemUgPSBtX3BUZW1wTGluZS0+R2V0U2l6ZSgpOworICAgIGludCBjdXJzID0gbV9wQ3VyckxpbmUtPkdldFNpemUoKTsKKyAgICBDcmVhdGVSRkRhdGEocFRleHRPYmopOworICAgIHNpemUgPSBtX3BUZW1wTGluZS0+R2V0U2l6ZSgpOworICAgIGludCByZWRzID0gbV9wUmVmbG93ZWRQYWdlLT5tX3BSZWZsb3dlZC0+R2V0U2l6ZSgpOworICAgIGlmKHNpemUgPT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmKGxvZ2ljID09IDEpIHsKKyAgICAgICAgbV9mQ3VyckxpbmVXaWR0aCArPSBwVGV4dE9iai0+R2V0QkJveCgmb2JqTWF0cml4KS5IZWlnaHQoKSAvIDM7CisgICAgfSBlbHNlIGlmKGxvZ2ljID09IDMgJiYgY3VycykgeworICAgICAgICBtX2ZDdXJyTGluZVdpZHRoIC09ICgqbV9wQ3VyckxpbmUpW2N1cnMgLSAxXS0+bV9XaWR0aDsKKyAgICAgICAgbV9wQ3VyckxpbmUtPkRlbGV0ZShjdXJzIC0gMSk7CisgICAgfQorICAgIGludCBiZWdpblBvcyA9IDAsIGVuZFBvcyA9IG1fcFRlbXBMaW5lLT5HZXRTaXplKCkgLSAxOworICAgIHdoaWxlKGJlZ2luUG9zIDw9IGVuZFBvcykgeworICAgICAgICBpbnQgdGVtcEJlZ2luUG9zID0gYmVnaW5Qb3M7CisgICAgICAgIGludCB0ZW1wRW5kUG9zID0gZW5kUG9zOworICAgICAgICBGWF9GTE9BVCBhbGxfd2lkdGggPSBHZXREYXRhc1dpZHRoKCBiZWdpblBvcywgZW5kUG9zKTsKKyAgICAgICAgaWYoYWxsX3dpZHRoIDwgcmVmbG93V2lkdGggLSBtX2ZDdXJyTGluZVdpZHRoKSB7CisgICAgICAgICAgICBDUkZfQ2hhckRhdGEqIHBCZWdpbkRhdGEgPSAoQ1JGX0NoYXJEYXRhKikoKm1fcFRlbXBMaW5lKVtiZWdpblBvc107CisgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeCgxLCAwLCAwLCAxLCAtcEJlZ2luRGF0YS0+bV9Qb3NYICsgbV9mQ3VyckxpbmVXaWR0aCwgLXBCZWdpbkRhdGEtPm1fUG9zWSk7CisgICAgICAgICAgICBUcmFuc2Zvcm0oJm1hdHJpeCwgbV9wVGVtcExpbmUsIGJlZ2luUG9zLCBlbmRQb3MgLSBiZWdpblBvcyArIDEpOworICAgICAgICAgICAgQWRkVGVtcDJDdXJyTGluZShiZWdpblBvcywgZW5kUG9zIC0gYmVnaW5Qb3MgKyAxKTsKKyAgICAgICAgICAgIG1fcFRlbXBMaW5lLT5SZW1vdmVBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnQJbWlkUG9zIDsKKyAgICAgICAgaWYodGVtcEJlZ2luUG9zID49IHRlbXBFbmRQb3MgJiYgdGVtcEVuZFBvcyAhPSAwKSB7CisgICAgICAgICAgICBtaWRQb3MgPSB0ZW1wRW5kUG9zOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd2hpbGUgKHRlbXBCZWdpblBvcyA8IHRlbXBFbmRQb3MgKSB7CisgICAgICAgICAgICAgICAgbWlkUG9zID0gKHRlbXBFbmRQb3MgLSB0ZW1wQmVnaW5Qb3MpIC8gMiArIHRlbXBCZWdpblBvczsKKyAgICAgICAgICAgICAgICBpZihtaWRQb3MgPT0gdGVtcEJlZ2luUG9zIHx8IG1pZFBvcyA9PSB0ZW1wRW5kUG9zKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBGWF9GTE9BVCB3ID0gR2V0RGF0YXNXaWR0aCggYmVnaW5Qb3MsIG1pZFBvcyk7CisgICAgICAgICAgICAgICAgaWYodyA8IHJlZmxvd1dpZHRoIC0gbV9mQ3VyckxpbmVXaWR0aCkgeworICAgICAgICAgICAgICAgICAgICB0ZW1wQmVnaW5Qb3MgPSBtaWRQb3M7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGVtcEVuZFBvcyA9IG1pZFBvczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtaWRQb3MgPSB0ZW1wQmVnaW5Qb3M7CisgICAgICAgICAgICBpZihtaWRQb3MgPT0gMCkgeworICAgICAgICAgICAgICAgIEZYX0ZMT0FUIHcgPSBHZXREYXRhc1dpZHRoKCBiZWdpblBvcywgMSk7CisgICAgICAgICAgICAgICAgaWYodyA+IHJlZmxvd1dpZHRoIC0gbV9mQ3VyckxpbmVXaWR0aCkgeworICAgICAgICAgICAgICAgICAgICBtaWRQb3MgPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYobWlkUG9zID09IC0xKSB7CisgICAgICAgICAgICBpbnQgY291bnQgPSBtX3BDdXJyTGluZS0+R2V0U2l6ZSgpOworICAgICAgICAgICAgaWYoY291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgIG1pZFBvcyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW50IGYgPSAtMTsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICBmb3IoaSA9IG1pZFBvczsgaSA+PSBiZWdpblBvczsgaS0tKSB7CisgICAgICAgICAgICBDUkZfQ2hhckRhdGEqIHBEYXRhID0gKENSRl9DaGFyRGF0YSopKCptX3BUZW1wTGluZSlbaV07CisgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBXc3RyID0gcERhdGEtPm1fcENoYXJTdGF0ZS0+bV9wRm9udC0+VW5pY29kZUZyb21DaGFyQ29kZShwRGF0YS0+bV9DaGFyQ29kZSk7CisgICAgICAgICAgICBGWF9XQ0hBUiBjaGEgPSBXc3RyLkdldEF0KDApOworICAgICAgICAgICAgaWYoaSA8IG1fcFRlbXBMaW5lLT5HZXRTaXplKCkgLSAxKSB7CisgICAgICAgICAgICAgICAgQ1JGX0NoYXJEYXRhKiBwTmV4dERhdGEgPSAoQ1JGX0NoYXJEYXRhKikoKm1fcFRlbXBMaW5lKVtpICsgMV07CisgICAgICAgICAgICAgICAgaWYocE5leHREYXRhLT5tX1Bvc1ggLSAocERhdGEtPm1fUG9zWCArIHBEYXRhLT5tX1dpZHRoKSA+PSBwRGF0YS0+bV9IZWlnaHQgLyA0KSB7CisgICAgICAgICAgICAgICAgICAgIGYgPSBpOworICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoZiA9PSAtMSkgeworICAgICAgICAgICAgICAgIGlmKElzQ2FuQnJlYWtBZnRlcigoRlhfRFdPUkQpY2hhKSkgeworICAgICAgICAgICAgICAgICAgICBmID0gaTsKKyAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZihJc0NhbkJyZWFrQmVmb3JlKChGWF9EV09SRCljaGEpKSB7CisgICAgICAgICAgICAgICAgICAgIGYgPSBpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgaWYoZiA8IGJlZ2luUG9zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmID0gLTE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZihmICE9IC0xKSB7CisgICAgICAgICAgICAgICAgQ1JGX0NoYXJEYXRhKiBwQmVnaW5EYXRhID0gKENSRl9DaGFyRGF0YSopKCptX3BUZW1wTGluZSlbYmVnaW5Qb3NdOworICAgICAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4KDEsIDAsIDAsIDEsIC1wQmVnaW5EYXRhLT5tX1Bvc1ggKyBtX2ZDdXJyTGluZVdpZHRoLCAtcEJlZ2luRGF0YS0+bV9Qb3NZKTsKKyAgICAgICAgICAgICAgICBUcmFuc2Zvcm0oJm1hdHJpeCwgbV9wVGVtcExpbmUsIGJlZ2luUG9zLCBmIC0gYmVnaW5Qb3MgKyAxKTsKKyAgICAgICAgICAgICAgICBDUkZfRGF0YSogcERhdGEgPSAoKm1fcFRlbXBMaW5lKVswXTsKKyAgICAgICAgICAgICAgICBBZGRUZW1wMkN1cnJMaW5lKGJlZ2luUG9zLCBmIC0gYmVnaW5Qb3MgKyAxKTsKKyAgICAgICAgICAgICAgICBiZWdpblBvcyA9IGk7CisgICAgICAgICAgICAgICAgRmluaXNoZWRDdXJyTGluZSgpOworICAgICAgICAgICAgICAgIGYgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmKGYgPT0gLTEgJiYgaSA8IGJlZ2luUG9zKSB7CisgICAgICAgICAgICBpZiggbV9wQ3VyckxpbmUtPkdldFNpemUoKSkgeworICAgICAgICAgICAgICAgIGludCBjb3VudCA9IG1fcEN1cnJMaW5lLT5HZXRTaXplKCk7CisgICAgICAgICAgICAgICAgZiA9IC0xOworICAgICAgICAgICAgICAgIGZvcihpbnQgaSA9IGNvdW50IC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgQ1JGX0RhdGEqIHBEYXRhID0gKCptX3BDdXJyTGluZSlbaV07CisgICAgICAgICAgICAgICAgICAgIGlmKHBEYXRhLT5HZXRUeXBlKCkgIT0gQ1JGX0RhdGE6OlRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpICsgMTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENSRl9DaGFyRGF0YSogcENoYXJEYXRhID0gKENSRl9DaGFyRGF0YSopcERhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICBDRlhfV2lkZVN0cmluZyBXc3RyID0gcENoYXJEYXRhLT5tX3BDaGFyU3RhdGUtPm1fcEZvbnQtPlVuaWNvZGVGcm9tQ2hhckNvZGUocENoYXJEYXRhLT5tX0NoYXJDb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZYX1dDSEFSIGNoYSA9IFdzdHIuR2V0QXQoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihJc0NhbkJyZWFrQWZ0ZXIoY2hhKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoSXNDYW5CcmVha0JlZm9yZShjaGEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZihmID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYoZiAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRmluaXNoZWRDdXJyTGluZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYoZiA8IGNvdW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlZmxvd2RDb3VudCA9IG1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQtPkdldFNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9zID0gcmVmbG93ZENvdW50ICsgZiAtIGNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRl9DaGFyRGF0YSogcERhdGEgPSAoQ1JGX0NoYXJEYXRhKikoKm1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQpW3Bvc107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXgoMSwgMCwgMCwgMSwgLXBEYXRhLT5tX1Bvc1ggKyBtX2ZDdXJyTGluZVdpZHRoLCAtcERhdGEtPm1fUG9zWSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtKCZtYXRyaXgsIG1fcFJlZmxvd2VkUGFnZS0+bV9wUmVmbG93ZWQsIHBvcywgcmVmbG93ZENvdW50IC0gcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGogPSBwb3M7IGogPCByZWZsb3dkQ291bnQ7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGREYXRhMkN1cnJMaW5lKCgqbV9wUmVmbG93ZWRQYWdlLT5tX3BSZWZsb3dlZClbal0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BSZWZsb3dlZFBhZ2UtPm1fcFJlZmxvd2VkLT5EZWxldGUocG9zLCBjb3VudCAtIGYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvZ2ljID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mQ3VyckxpbmVXaWR0aCArPSBwVGV4dE9iai0+R2V0QkJveCgmb2JqTWF0cml4KS5IZWlnaHQoKSAvIDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZihmID09IC0xKSB7CisgICAgICAgICAgICAgICAgQ1JGX0NoYXJEYXRhKiBwRGF0YSA9IChDUkZfQ2hhckRhdGEqKSgqbV9wVGVtcExpbmUpW2JlZ2luUG9zXTsKKyAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeCgxLCAwLCAwLCAxLCAtcERhdGEtPm1fUG9zWCArIG1fZkN1cnJMaW5lV2lkdGgsIC1wRGF0YS0+bV9Qb3NZKTsKKyAgICAgICAgICAgICAgICBpZihiZWdpblBvcyA9PSBtaWRQb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtKCZtYXRyaXgsIHBEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgRlhfUkVDVCByZWN0OworICAgICAgICAgICAgICAgICAgICBwRGF0YS0+bV9wQ2hhclN0YXRlLT5tX3BGb250LT5HZXRGb250QkJveChyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQqIHBtYXRyaXggPSBwVGV4dE9iai0+bV9UZXh0U3RhdGUuR2V0TWF0cml4KCk7CisgICAgICAgICAgICAgICAgICAgIENGWF9BZmZpbmVNYXRyaXggdGV4dE1hdHJpeChwbWF0cml4WzBdLCBwbWF0cml4WzFdLCBwbWF0cml4WzJdLCBwbWF0cml4WzNdLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgRlhfRkxPQVQgd2lkdGggPSBwRGF0YS0+bV9IZWlnaHQgKiAocmVjdC5yaWdodCAtIHJlY3QubGVmdCkgLyAxMDAwOworICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBmID0gKHJlZmxvd1dpZHRoIC0gbV9mQ3VyckxpbmVXaWR0aCkgLyB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgcERhdGEtPm1fUG9zWSAqPSBmOworICAgICAgICAgICAgICAgICAgICBwRGF0YS0+bV9XaWR0aCAqPSBmOworICAgICAgICAgICAgICAgICAgICBwRGF0YS0+bV9IZWlnaHQgKj0gZjsKKyAgICAgICAgICAgICAgICAgICAgcERhdGEtPm1fcENoYXJTdGF0ZSA9IEdldENoYXJTdGF0ZShwRGF0YS0+bV9wQ2hhclN0YXRlLT5tX3BUZXh0T2JqLCBwRGF0YS0+bV9wQ2hhclN0YXRlLT5tX3BGb250LCBwRGF0YS0+bV9IZWlnaHQsIHBEYXRhLT5tX3BDaGFyU3RhdGUtPm1fQ29sb3IpOworICAgICAgICAgICAgICAgICAgICBBZGREYXRhMkN1cnJMaW5lKHBEYXRhKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IG0gPSBiZWdpblBvczsgbSA8PSBtaWRQb3M7IG0rKykgeworICAgICAgICAgICAgICAgICAgICAgICAgQ1JGX0NoYXJEYXRhKiBwRGF0YSA9IChDUkZfQ2hhckRhdGEqKSgqbV9wVGVtcExpbmUpW21dOworICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtKCZtYXRyaXgsIHBEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZERhdGEyQ3VyckxpbmUocERhdGEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEZpbmlzaGVkQ3VyckxpbmUoKTsKKyAgICAgICAgICAgICAgICBiZWdpblBvcyA9IG1pZFBvcyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbV9wVGVtcExpbmUtPlJlbW92ZUFsbCgpOworICAgIHJldHVybjsKK30KK3ZvaWQgQ1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93OjpQcm9jZXNzVW5pdGFyeU9ianMoQ1BERl9QYWdlT2JqZWN0cyAqcE9ianMsIEZYX0ZMT0FUIHJlZmxvd1dpZHRoLCBDRlhfQWZmaW5lTWF0cml4IG9iak1hdHJpeCkKK3sKKyAgICBpZighcE9ianMpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDRlhfRmxvYXRSZWN0IE9iakJCb3ggPSBwT2Jqcy0+Q2FsY0JvdW5kaW5nQm94KCk7CisgICAgb2JqTWF0cml4LlRyYW5zZm9ybVJlY3QoT2JqQkJveCk7CisgICAgRlhfRkxPQVQgT2JqV2lkdGggPSBPYmpCQm94LldpZHRoKCk7CisgICAgRlhfRkxPQVQgT2JqSGVpZ2h0ID0gT2JqQkJveC5IZWlnaHQoKTsKKyAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsKKyAgICBpZihPYmpXaWR0aCA8PSByZWZsb3dXaWR0aCAtIG1fZkN1cnJMaW5lV2lkdGgpIHsKKyAgICAgICAgbWF0cml4LlNldCgxLCAwLCAwLCAxLCBtX2ZDdXJyTGluZVdpZHRoICwgMCk7CisgICAgfSBlbHNlIGlmKE9ialdpZHRoIDw9IHJlZmxvd1dpZHRoKSB7CisgICAgICAgIEZpbmlzaGVkQ3VyckxpbmUoKTsKKyAgICAgICAgbWF0cml4LlNldCgxLCAwLCAwLCAxLCAwLCAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBGaW5pc2hlZEN1cnJMaW5lKCk7CisgICAgICAgIEZYX0ZMT0FUIGYgPSByZWZsb3dXaWR0aCAvIE9ialdpZHRoIDsKKyAgICAgICAgbWF0cml4LlNldChmLCAwLCAwLCBmLCAwLCAwKTsKKyAgICB9CisgICAgQ0ZYX0FmZmluZU1hdHJpeCB0ZW1wTWF0cml4ID0gbWF0cml4OworICAgIG1hdHJpeC5Db25jYXQob2JqTWF0cml4KTsKKyAgICBGWF9QT1NJVElPTiBwb3MgPSBwT2Jqcy0+R2V0Rmlyc3RPYmplY3RQb3NpdGlvbigpOworICAgIHdoaWxlKHBvcykgeworICAgICAgICBDUERGX1BhZ2VPYmplY3QqIHBPYmogPSBwT2Jqcy0+R2V0TmV4dE9iamVjdChwb3MpOworICAgICAgICBpZihwT2JqLT5tX1R5cGUgPT0gUERGUEFHRV9URVhUKSB7CisgICAgICAgICAgICBGWF9JTlQzMiByZXQgPSBMb2dpY1ByZU9iaigoQ1BERl9UZXh0T2JqZWN0KilwT2JqKTsKKyAgICAgICAgICAgIGlmKHJldCA9PSAxIHx8IHJldCA9PSAyKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQ3JlYXRlUkZEYXRhKHBPYmosICZtYXRyaXgpOworICAgIH0KKyAgICBpZiAobV9wVGVtcExpbmUpIHsKKyAgICAgICAgVHJhbnNmb3JtKCZ0ZW1wTWF0cml4LCBtX3BUZW1wTGluZSwgMCwgbV9wVGVtcExpbmUtPkdldFNpemUoKSk7CisgICAgICAgIEFkZFRlbXAyQ3VyckxpbmUoMCwgbV9wVGVtcExpbmUtPkdldFNpemUoKSk7CisgICAgICAgIG1fcFRlbXBMaW5lLT5SZW1vdmVBbGwoKTsKKyAgICB9Cit9Cit2b2lkIENQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdzo6UHJvY2Vzc1BhdGhPYmplY3QoQ1BERl9QYXRoT2JqZWN0ICpwT2JqLCBGWF9GTE9BVCByZWZsb3dXaWR0aCkKK3sKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL3JlZmxvdy9sYXlvdXRwcm92aWRlcl90YWdnZWRwZGYuY3BwIGIvY29yZS9zcmMvcmVmbG93L2xheW91dHByb3ZpZGVyX3RhZ2dlZHBkZi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQwYzFjZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL3JlZmxvdy9sYXlvdXRwcm92aWRlcl90YWdnZWRwZGYuY3BwCkBAIC0wLDAgKzEsNzgwIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAibGF5b3V0cHJvdmlkZXJfdGFnZ2VkcGRmLmgiCitDUERGX0xheW91dEVsZW1lbnQ6OkNQREZfTGF5b3V0RWxlbWVudCgpCit7CisgICAgbV9wVGFnZ2VkRWxlbWVudCA9IE5VTEw7CisgICAgbV9wUGFyZW50RWxlbWVudCA9IE5VTEw7Cit9CitDUERGX0xheW91dEVsZW1lbnQ6On5DUERGX0xheW91dEVsZW1lbnQoKQoreworICAgIG1fT2JqQXJyYXkuUmVtb3ZlQWxsKCk7CisgICAgaW50IHNpemUgPSBtX0NoaWxkQXJyYXkuR2V0U2l6ZSgpOworICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgQ1BERl9MYXlvdXRFbGVtZW50KiBwQ2hpbGQgPSAoQ1BERl9MYXlvdXRFbGVtZW50KiltX0NoaWxkQXJyYXkuR2V0QXQoaSk7CisgICAgICAgIGRlbGV0ZSBwQ2hpbGQ7CisgICAgICAgIHBDaGlsZCA9IE5VTEw7CisgICAgfQorICAgIG1fQ2hpbGRBcnJheS5SZW1vdmVBbGwoKTsKK30KK0xheW91dFR5cGUgQ1BERl9MYXlvdXRFbGVtZW50OjpDb252ZXJ0TGF5b3V0VHlwZShGWF9CU1RSIG5hbWUpCit7CisgICAgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJEb2N1bWVudCIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXREb2N1bWVudDsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJQYXJ0IikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFBhcnQ7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiQXJ0IikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEFydDsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJTZWN0IikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFNlY3Q7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiRGl2IikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dERpdjsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJCbG9ja1F1b3RlIikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEJsb2NrUXVvdGU7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiQ2FwdGlvbiIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRDYXB0aW9uOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIlRPQyIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRUT0M7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiVE9DSSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRUT0NJOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIkluZGV4IikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEluZGV4OworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIk5vblN0cnVjdCIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXROb25TdHJ1Y3Q7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiUHJpdmF0ZSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRQcml2YXRlOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIlAiKSkgeworICAgICAgICByZXR1cm4gTGF5b3V0UGFyYWdyYXBoOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIkgiKSkgeworICAgICAgICByZXR1cm4gTGF5b3V0SGVhZGluZzsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJIMSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRIZWFkaW5nMTsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJIMiIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRIZWFkaW5nMjsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJIMyIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRIZWFkaW5nMzsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJINCIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRIZWFkaW5nNDsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJINSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRIZWFkaW5nNTsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJINiIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRIZWFkaW5nNjsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJMIikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dExpc3Q7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiTEkiKSkgeworICAgICAgICByZXR1cm4gTGF5b3V0TGlzdEl0ZW07CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiTGJsIikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dExpc3RMYWJlbDsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJMQm9keSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRMaXN0Qm9keTsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJUYWJsZSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRUYWJsZTsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJUUiIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRUYWJsZVJvdzsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJUSCIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRUYWJsZUhlYWRlckNlbGw7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiVEQiKSkgeworICAgICAgICByZXR1cm4gTGF5b3V0VGFibGVEYXRhQ2VsbDsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJUSGVhZCIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRUYWJsZUhlYWRlckdyb3VwOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIlRCb2R5IikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFRhYmxlQm9keUdyb3VwOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIlRGb290IikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFRhYmxlRm9vdEdyb3VwOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIlNwYW4iKSkgeworICAgICAgICByZXR1cm4gTGF5b3V0U3BhbjsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJRdW90ZSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRRdW90ZTsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJOb3RlIikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dE5vdGU7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiUmVmZXJlbmNlIikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFJlZmVyZW5jZTsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJCaWJFbnRyeSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRCaWJFbnRyeTsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJDb2RlIikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dENvZGU7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiTGluayIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRMaW5rOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIkFubm90IikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEFubm90OworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIlJ1YnkiKSkgeworICAgICAgICByZXR1cm4gTGF5b3V0UnVieTsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJSQiIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRSdWJ5QmFzZTsKKyAgICB9IGVsc2UgaWYobmFtZSA9PSAoY29uc3QgY2hhciopKCJSVCIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRSdWJ5QW5ub3Q7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiUlAiKSkgeworICAgICAgICByZXR1cm4gTGF5b3V0UnVieVB1bmM7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiV2FyaWNodSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRXYXJpY2h1OworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIldUIikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFdhcmljaHVUZXh0OworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIldQIikpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFdhcmljaHVQdW5jOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIkZpZ3VyZSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRGaWd1cmU7CisgICAgfSBlbHNlIGlmKG5hbWUgPT0gKGNvbnN0IGNoYXIqKSgiRm9ybXVsYSIpKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRGb3JtdWxhOworICAgIH0gZWxzZSBpZihuYW1lID09IChjb25zdCBjaGFyKikoIkZvcm0iKSkgeworICAgICAgICByZXR1cm4gTGF5b3V0Rm9ybTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gTGF5b3V0VW5rbm93bjsKKyAgICB9Cit9CitDRlhfQnl0ZVN0cmluZ0MgQ1BERl9MYXlvdXRFbGVtZW50OjpDb252ZXJ0TGF5b3V0VHlwZShMYXlvdXRUeXBlIHR5cGUpCit7CisgICAgRlhfQlNUUiBuYW1lID0gIiI7CisgICAgaWYodHlwZSA9PSBMYXlvdXRBcmlmYWN0KSB7CisgICAgICAgIHJldHVybiAiQXJpZmFjdCI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiAiRG9jdW1lbnQiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRQYXJ0KSB7CisgICAgICAgIHJldHVybiAiUGFydCI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dEFydCkgeworICAgICAgICByZXR1cm4gIkFydCI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dFNlY3QpIHsKKyAgICAgICAgcmV0dXJuICJTZWN0IjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0RGl2KSB7CisgICAgICAgIHJldHVybiAiRGl2IjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0QmxvY2tRdW90ZSkgeworICAgICAgICByZXR1cm4gIkJsb2NrUXVvdGUiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRDYXB0aW9uKSB7CisgICAgICAgIHJldHVybiAiQ2FwdGlvbiI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dFRPQykgeworICAgICAgICByZXR1cm4gIlRPQyI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dFRPQ0kpIHsKKyAgICAgICAgcmV0dXJuICJUT0NJIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0SW5kZXgpIHsKKyAgICAgICAgcmV0dXJuICJJbmRleCI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dE5vblN0cnVjdCkgeworICAgICAgICByZXR1cm4gIk5vblN0cnVjdCI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dFByaXZhdGUpIHsKKyAgICAgICAgcmV0dXJuICJQcml2YXRlIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0UGFyYWdyYXBoKSB7CisgICAgICAgIHJldHVybiAiUCI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dEhlYWRpbmcpIHsKKyAgICAgICAgcmV0dXJuICJIIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0SGVhZGluZzEpIHsKKyAgICAgICAgcmV0dXJuICJIMSI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dEhlYWRpbmcyKSB7CisgICAgICAgIHJldHVybiAiSDIiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRIZWFkaW5nMykgeworICAgICAgICByZXR1cm4gIkgzIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0SGVhZGluZzQpIHsKKyAgICAgICAgcmV0dXJuICJINCI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dEhlYWRpbmc1KSB7CisgICAgICAgIHJldHVybiAiSDUiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRIZWFkaW5nNikgeworICAgICAgICByZXR1cm4gIkg2IjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0TGlzdCkgeworICAgICAgICByZXR1cm4gIkwiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRMaXN0SXRlbSkgeworICAgICAgICByZXR1cm4gIkxJIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0TGlzdExhYmVsKSB7CisgICAgICAgIHJldHVybiAiTGJsIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0TGlzdEJvZHkpIHsKKyAgICAgICAgcmV0dXJuICJMQm9keSI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dFRhYmxlKSB7CisgICAgICAgIHJldHVybiAiVGFibGUiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRUYWJsZVJvdykgeworICAgICAgICByZXR1cm4gIlRSIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0VGFibGVIZWFkZXJDZWxsKSB7CisgICAgICAgIHJldHVybiAiVEgiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRUYWJsZURhdGFDZWxsKSB7CisgICAgICAgIHJldHVybiAiVEQiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRUYWJsZUhlYWRlckdyb3VwKSB7CisgICAgICAgIHJldHVybiAiVEhlYWQiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRUYWJsZUJvZHlHcm91cCkgeworICAgICAgICByZXR1cm4gIlRCb2R5IjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0VGFibGVGb290R3JvdXApIHsKKyAgICAgICAgcmV0dXJuICJURm9vdCI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dFNwYW4pIHsKKyAgICAgICAgcmV0dXJuICJTcGFuIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0UXVvdGUpIHsKKyAgICAgICAgcmV0dXJuICJRdW90ZSI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dE5vdGUpIHsKKyAgICAgICAgcmV0dXJuICJOb3RlIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0UmVmZXJlbmNlKSB7CisgICAgICAgIHJldHVybiAiUmVmZXJlbmNlIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0QmliRW50cnkpIHsKKyAgICAgICAgcmV0dXJuICJCaWJFbnRyeSI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dENvZGUpIHsKKyAgICAgICAgcmV0dXJuICJDb2RlIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0TGluaykgeworICAgICAgICByZXR1cm4gIkxpbmsiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRBbm5vdCkgeworICAgICAgICByZXR1cm4gIkFubm90IjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0UnVieSkgeworICAgICAgICByZXR1cm4gIlJ1YnkiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRSdWJ5QmFzZSkgeworICAgICAgICByZXR1cm4gIlJCIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0UnVieUFubm90KSB7CisgICAgICAgIHJldHVybiAiUlQiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRSdWJ5UHVuYykgeworICAgICAgICByZXR1cm4gIlJQIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0V2FyaWNodSkgeworICAgICAgICByZXR1cm4gIldhcmljaHUiOworICAgIH0gZWxzZSBpZiggdHlwZSA9PSBMYXlvdXRXYXJpY2h1VGV4dCkgeworICAgICAgICByZXR1cm4gIldUIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0V2FyaWNodVB1bmMpIHsKKyAgICAgICAgcmV0dXJuICJXUCI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dEZpZ3VyZSkgeworICAgICAgICByZXR1cm4gIkZpZ3VyZSI7CisgICAgfSBlbHNlIGlmKCB0eXBlID09IExheW91dEZvcm11bGEpIHsKKyAgICAgICAgcmV0dXJuICJGb3JtdWxhIjsKKyAgICB9IGVsc2UgaWYoIHR5cGUgPT0gTGF5b3V0Rm9ybSkgeworICAgICAgICByZXR1cm4gIkZvcm0iOworICAgIH0KKyAgICByZXR1cm4gbmFtZTsKK30KK0NGWF9CeXRlU3RyaW5nQyBDUERGX0xheW91dEVsZW1lbnQ6OkNvbnZlcnRMYXlvdXRBdHRyKExheW91dEF0dHIgYXR0cikKK3sKKyAgICBzd2l0Y2goYXR0cikgeworICAgICAgICBjYXNlIExheW91dEFydGlmYWN0VHlwZToKKyAgICAgICAgICAgIHJldHVybiAiVHlwZSI7CisgICAgICAgIGNhc2UgTGF5b3V0QXJ0aWZhY3RBdHRhY2hlZDoKKyAgICAgICAgICAgIHJldHVybiAiQXR0YWNoZWQiOworICAgICAgICBjYXNlIExheW91dEFydGlmYWN0U3ViVHlwZToKKyAgICAgICAgICAgIHJldHVybiAiU3VidHlwZSI7CisgICAgICAgIGNhc2UgTGF5b3V0UGxhY2VtZW50OgorICAgICAgICAgICAgcmV0dXJuICJQbGFjZW1lbnQiOworICAgICAgICBjYXNlIExheW91dFdyaXRpbmdNb2RlOgorICAgICAgICAgICAgcmV0dXJuICJXcml0aW5nTW9kZSI7CisgICAgICAgIGNhc2UgTGF5b3V0QmFja2dyb3VuZENvbG9yOgorICAgICAgICAgICAgcmV0dXJuICJCYWNrZ3JvdW5kQ29sb3IiOworICAgICAgICBjYXNlIExheW91dEJvcmRlckNvbG9yOgorICAgICAgICAgICAgcmV0dXJuICJCb3JkZXJDb2xvciI7CisgICAgICAgIGNhc2UgTGF5b3V0Qm9yZGVyU3R5bGU6CisgICAgICAgICAgICByZXR1cm4gIkJvcmRlclN0eWxlIjsKKyAgICAgICAgY2FzZSBMYXlvdXRCb3JkZXJUaGlja25lc3M6CisgICAgICAgICAgICByZXR1cm4gIkJvcmRlclRoaWNrbmVzcyI7CisgICAgICAgIGNhc2UgTGF5b3V0UGFkZGluZzoKKyAgICAgICAgICAgIHJldHVybiAiUGFkZGluZyI7CisgICAgICAgIGNhc2UgTGF5b3V0Q29sb3I6CisgICAgICAgICAgICByZXR1cm4gIkNvbG9yIjsKKyAgICAgICAgY2FzZSBMYXlvdXRTcGFjZUJlZm9yZToKKyAgICAgICAgICAgIHJldHVybiAiU3BhY2VCZWZvcmUiOworICAgICAgICBjYXNlIExheW91dFNwYWNlQWZ0ZXI6CisgICAgICAgICAgICByZXR1cm4gIlNwYWNlQWZ0ZXIiOworICAgICAgICBjYXNlIExheW91dFN0YXJ0SW5kZW50OgorICAgICAgICAgICAgcmV0dXJuICJTdGFydEluZGVudCI7CisgICAgICAgIGNhc2UgTGF5b3V0RW5kSW5kZW50OgorICAgICAgICAgICAgcmV0dXJuICJFbmRJbmRlbnQiOworICAgICAgICBjYXNlIExheW91dFRleHRJbmRlbnQ6CisgICAgICAgICAgICByZXR1cm4gIlRleHRJbmRlbnQiOworICAgICAgICBjYXNlIExheW91dFRleHRBbGlnbjoKKyAgICAgICAgICAgIHJldHVybiAiVGV4dEFsaWduIjsKKyAgICAgICAgY2FzZSBMYXlvdXRCQm94OgorICAgICAgICAgICAgcmV0dXJuICJCQm94IjsKKyAgICAgICAgY2FzZSBMYXlvdXRXaWR0aDoKKyAgICAgICAgICAgIHJldHVybiAiV2lkdGgiOworICAgICAgICBjYXNlIExheW91dEhlaWdodDoKKyAgICAgICAgICAgIHJldHVybiAiSGVpZ2h0IjsKKyAgICAgICAgY2FzZSBMYXlvdXRCbG9ja0FsaWduOgorICAgICAgICAgICAgcmV0dXJuICJCbG9ja0FsaWduIjsKKyAgICAgICAgY2FzZSBMYXlvdXRJbmxpbmVBbGlnbjoKKyAgICAgICAgICAgIHJldHVybiAiSW5saW5lQWxpZ24iOworICAgICAgICBjYXNlIExheW91dFRCb3JkZXJTdHlsZToKKyAgICAgICAgICAgIHJldHVybiAiVEJvcmRlclN0eWxlIjsKKyAgICAgICAgY2FzZSBMYXlvdXRUUGFkZGluZzoKKyAgICAgICAgICAgIHJldHVybiAiVFBhZGRpbmciOworICAgICAgICBjYXNlIExheW91dEJhc2VsaW5lU2hpZnQ6CisgICAgICAgICAgICByZXR1cm4gIkJhc2VsaW5lU2hpZnQiOworICAgICAgICBjYXNlIExheW91dExpbmVIZWlnaHQ6CisgICAgICAgICAgICByZXR1cm4gIkxpbmVIZWlnaHQiOworICAgICAgICBjYXNlIExheW91dFRleHREZWNvcmF0aW9uQ29sb3I6CisgICAgICAgICAgICByZXR1cm4gIlRleHREZWNvcmF0aW9uQ29sb3IiOworICAgICAgICBjYXNlIExheW91dFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOgorICAgICAgICAgICAgcmV0dXJuICJUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyI7CisgICAgICAgIGNhc2UgTGF5b3V0VGV4dERlY29yYXRpb25UeXBlOgorICAgICAgICAgICAgcmV0dXJuICJUZXh0RGVjb3JhdGlvblR5cGUiOworICAgICAgICBjYXNlIExheW91dFJ1YnlBbGlnbjoKKyAgICAgICAgICAgIHJldHVybiAiUnVieUFsaWduIjsKKyAgICAgICAgY2FzZSBMYXlvdXRSdWJ5UG9zaXRpb246CisgICAgICAgICAgICByZXR1cm4gIlJ1YnlQb3NpdGlvbiI7CisgICAgICAgIGNhc2UgTGF5b3V0R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOgorICAgICAgICAgICAgcmV0dXJuICJHbHlwaE9yaWVudGF0aW9uVmVydGljYWwiOworICAgICAgICBjYXNlIExheW91dENvbHVtbkNvdW50OgorICAgICAgICAgICAgcmV0dXJuICJDb2x1bW5Db3VudCI7CisgICAgICAgIGNhc2UgTGF5b3V0Q29sdW1uR2FwOgorICAgICAgICAgICAgcmV0dXJuICJDb2x1bW5HYXAiOworICAgICAgICBjYXNlIExheW91dENvbHVtbldpZHRoczoKKyAgICAgICAgICAgIHJldHVybiAiQ29sdW1uV2lkdGhzIjsKKyAgICAgICAgY2FzZSBMYXlvdXRMaXN0TnVtYmVyaW5nOgorICAgICAgICAgICAgcmV0dXJuICJMaXN0TnVtYmVyaW5nIjsKKyAgICAgICAgY2FzZSBMYXlvdXRGaWVsZFJvbGU6CisgICAgICAgICAgICByZXR1cm4gIlJvbGUiOworICAgICAgICBjYXNlIExheW91dEZpZWxkQ2hlY2tlZDoKKyAgICAgICAgICAgIHJldHVybiAiY2hlY2tlZCI7CisgICAgICAgIGNhc2UgTGF5b3V0RmllbGREZXNjOgorICAgICAgICAgICAgcmV0dXJuICJEZXNjIjsKKyAgICAgICAgY2FzZSBMYXlvdXRSb3dTcGFuOgorICAgICAgICAgICAgcmV0dXJuICJSb3dTcGFuIjsKKyAgICAgICAgY2FzZSBMYXlvdXRDb2xTcGFuOgorICAgICAgICAgICAgcmV0dXJuICJDb2xTcGFuIjsKKyAgICAgICAgY2FzZSBMYXlvdXRUYWJsZUhlYWRlcnM6CisgICAgICAgICAgICByZXR1cm4gIkhlYWRlcnMiOworICAgICAgICBjYXNlIExheW91dFRhYmxlSGVhZGVyU2NvcGU6CisgICAgICAgICAgICByZXR1cm4gIlNjb3BlIjsKKyAgICAgICAgY2FzZSBMYXlvdXRUYWJsZVN1bW1hcnk6CisgICAgICAgICAgICByZXR1cm4gIlN1bW1hcnkiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KK0xheW91dEVudW0gQ1BERl9MYXlvdXRFbGVtZW50OjpDb252ZXJ0TGF5b3V0RW51bShDRlhfQnl0ZVN0cmluZ0MgRW51bSkKK3sKKyAgICBpZihFbnVtID09ICJCbG9jayIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEJsb2NrOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiSW5saW5lIikgeworICAgICAgICByZXR1cm4gTGF5b3V0SW5saW5lOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiQmVmb3JlIikgeworICAgICAgICByZXR1cm4gTGF5b3V0QmVmb3JlOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiU3RhcnQiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRTdGFydDsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIkVuZCIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEVuZDsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIkxyVGIiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRMclRiOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiUmxUYiIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFJsVGI7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJUYlJsIikgeworICAgICAgICByZXR1cm4gTGF5b3V0VGJSbDsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIk5vbmUiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXROb25lOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiSGlkZGVuIikgeworICAgICAgICByZXR1cm4gTGF5b3V0SGlkZGVuOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiRG90dGVkIikgeworICAgICAgICByZXR1cm4gTGF5b3V0RG90dGVkOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiRGFzaGVkIikgeworICAgICAgICByZXR1cm4gTGF5b3V0RGFzaGVkOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiU29saWQiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRTb2xpZDsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIkRvdWJsZSIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dERvdWJsZTsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIkdyb292ZSIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEdyb292ZTsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIlJpZGdlIikgeworICAgICAgICByZXR1cm4gTGF5b3V0UmlkZ2U7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJJbnNldCIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEluc2V0OworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiT3V0c2V0IikgeworICAgICAgICByZXR1cm4gTGF5b3V0T3V0c2V0OworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiTm9ybWFsIikgeworICAgICAgICByZXR1cm4gTGF5b3V0Tm9ybWFsOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiQXV0byIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEF1dG87CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJDZW50ZXIiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRDZW50ZXI7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJKdXN0aWZ5IikgeworICAgICAgICByZXR1cm4gTGF5b3V0SnVzdGlmeTsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIk1pZGRsZSIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dE1pZGRsZTsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIlVuZGVybGluZSIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFVuZGVybGluZTsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIk92ZXJsaW5lIikgeworICAgICAgICByZXR1cm4gTGF5b3V0T3ZlcmxpbmU7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJMaW5lVGhyb3VnaCIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dExpbmVUaHJvdWdoOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiRGlzdHJpYnV0ZSIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dERpc3RyaWJ1dGU7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJEaXNjIikgeworICAgICAgICByZXR1cm4gTGF5b3V0RGlzYzsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIkNpcmNsZSIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dENpcmNsZTsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIlNxdWFyZSIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFNxdWFyZTsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIkRlY2ltYWwiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXREZWNpbWFsOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiVXBwZXJSb21hbiIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFVwcGVyUm9tYW47CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJMb3dlclJvbWFuIikgeworICAgICAgICByZXR1cm4gTGF5b3V0TG93ZXJSb21hbjsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIlVwcGVyQWxwaGEiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRVcHBlckFscGhhOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiTG93ZXJBbHBoYSIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dExvd2VyQWxwaGE7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJyYiIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFJCOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiY2IiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRDQjsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gInBiIikgeworICAgICAgICByZXR1cm4gTGF5b3V0UEI7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJ0diIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFRWOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAib24iKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRPbjsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIm9mZiIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dE9mZjsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIm5ldXRyYWwiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXROZXV0cmFsOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiUm93IikgeworICAgICAgICByZXR1cm4gTGF5b3V0Um93OworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiQ29sdW1uIikgeworICAgICAgICByZXR1cm4gTGF5b3V0Q29sdW1uOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiQm90aCIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEJvdGg7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJMZWZ0IikgeworICAgICAgICByZXR1cm4gTGF5b3V0TGVmdDsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIlRvcCIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dFRvcDsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIkJvdHRvbSIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEJvdHRvbTsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIlJpZ2h0IikgeworICAgICAgICByZXR1cm4gTGF5b3V0UmlnaHQ7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJQYWdpbmF0aW9uIikgeworICAgICAgICByZXR1cm4gTGF5b3V0UGFnaW5hdGlvbjsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIkxheW91dCIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dExheW91dDsKKyAgICB9IGVsc2UgaWYgKEVudW0gPT0gIlBhZ2UiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRQYWdlOworICAgIH0gZWxzZSBpZiAoRW51bSA9PSAiQmFja2dyb3VuZCIpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEJhY2tncm91bmQ7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJIZWFkZXIiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRIZWFkZXI7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJGb290ZXIiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRGb290ZXI7CisgICAgfSBlbHNlIGlmIChFbnVtID09ICJXYXRlcm1hcmsiKSB7CisgICAgICAgIHJldHVybiBMYXlvdXRXYXRlcm1hcms7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIExheW91dEludmFsaWQ7CisgICAgfQorfQorTGF5b3V0VHlwZSBDUERGX0xheW91dEVsZW1lbnQ6OkdldFR5cGUoKQoreworICAgIGlmKCFtX3BUYWdnZWRFbGVtZW50KSB7CisgICAgICAgIHJldHVybiBMYXlvdXRVbmtub3duOworICAgIH0KKyAgICBDRlhfQnl0ZVN0cmluZyBuYW1lID0gbV9wVGFnZ2VkRWxlbWVudC0+R2V0VHlwZSgpOworICAgIHJldHVybiB0aGlzLT5Db252ZXJ0TGF5b3V0VHlwZShuYW1lKTsKK30KK2ludAlDUERGX0xheW91dEVsZW1lbnQ6OkNvdW50QXR0clZhbHVlcyhMYXlvdXRBdHRyIGF0dHJfdHlwZSkKK3sKKyAgICBpZighbV9wVGFnZ2VkRWxlbWVudCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQ1BERl9PYmplY3QqIHBPYmogPSBtX3BUYWdnZWRFbGVtZW50LT5HZXRBdHRyKEdldEF0dHJPd25lcihhdHRyX3R5cGUpLCBDb252ZXJ0TGF5b3V0QXR0cihhdHRyX3R5cGUpLCBJc0luaGVyaXRhYmxlKGF0dHJfdHlwZSkpOworICAgIGlmKHBPYmopIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorTGF5b3V0RW51bSBDUERGX0xheW91dEVsZW1lbnQ6OkdldEVudW1BdHRyKExheW91dEF0dHIgYXR0cl90eXBlLCBpbnQgaW5kZXgpCit7CisgICAgaWYoIW1fcFRhZ2dlZEVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEludmFsaWQ7CisgICAgfQorICAgIENGWF9CeXRlU3RyaW5nQyBvd25lciA9IEdldEF0dHJPd25lcihhdHRyX3R5cGUpOworICAgIENGWF9CeXRlU3RyaW5nQyBkZWZhdWx0X3ZhbHVlID0gR2V0RGVmYXVsdE5hbWVWYWx1ZShhdHRyX3R5cGUpOworICAgIENGWF9CeXRlU3RyaW5nQyBBdHRyTmFtZSA9IENvbnZlcnRMYXlvdXRBdHRyKGF0dHJfdHlwZSk7CisgICAgQ0ZYX0J5dGVTdHJpbmcJQXR0clZhbHVlID0gbV9wVGFnZ2VkRWxlbWVudC0+R2V0TmFtZShvd25lciwgQXR0ck5hbWUsIGRlZmF1bHRfdmFsdWUsIElzSW5oZXJpdGFibGUoYXR0cl90eXBlKSwgaW5kZXgpOworICAgIHJldHVybiBDb252ZXJ0TGF5b3V0RW51bShBdHRyVmFsdWUpOworfQorQ0ZYX0J5dGVTdHJpbmdDIENQREZfTGF5b3V0RWxlbWVudDo6R2V0QXR0ck93bmVyKExheW91dEF0dHIgYXR0cl90eXBlKQoreworICAgIHN3aXRjaChhdHRyX3R5cGUpIHsKKyAgICAgICAgY2FzZSBMYXlvdXRMaXN0TnVtYmVyaW5nOgorICAgICAgICAgICAgcmV0dXJuICJMaXN0IjsKKyAgICAgICAgY2FzZSBMYXlvdXRGaWVsZFJvbGU6CisgICAgICAgIGNhc2UgTGF5b3V0RmllbGRDaGVja2VkIDoKKyAgICAgICAgY2FzZSBMYXlvdXRGaWVsZERlc2M6CisgICAgICAgICAgICByZXR1cm4gIlByaW50RmllbGQiOworICAgICAgICBjYXNlIExheW91dFJvd1NwYW46CisgICAgICAgIGNhc2UgTGF5b3V0Q29sU3BhbjoKKyAgICAgICAgY2FzZSBMYXlvdXRUYWJsZUhlYWRlcnM6CisgICAgICAgIGNhc2UgTGF5b3V0VGFibGVIZWFkZXJTY29wZToKKyAgICAgICAgY2FzZSBMYXlvdXRUYWJsZVN1bW1hcnk6CisgICAgICAgICAgICByZXR1cm4gIlRhYmxlIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAiTGF5b3V0IjsKKyAgICB9Cit9CitGWF9GTE9BVAlDUERGX0xheW91dEVsZW1lbnQ6OkdldE51bWJlckF0dHIoTGF5b3V0QXR0ciBhdHRyX3R5cGUsIGludCBpbmRleCkKK3sKKyAgICBpZighbV9wVGFnZ2VkRWxlbWVudCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQ0ZYX0J5dGVTdHJpbmdDIG93bmVyID0gR2V0QXR0ck93bmVyKGF0dHJfdHlwZSk7CisgICAgRlhfRkxPQVQgZGVmYXVsdF92YWx1ZSA9IEdldERlZmF1bHRGbG9hdFZhbHVlKGF0dHJfdHlwZSk7CisgICAgQ0ZYX0J5dGVTdHJpbmdDIEF0dHJOYW1lID0gQ29udmVydExheW91dEF0dHIoYXR0cl90eXBlKTsKKyAgICBGWF9GTE9BVCBmID0gbV9wVGFnZ2VkRWxlbWVudC0+R2V0TnVtYmVyKG93bmVyLCBBdHRyTmFtZSwgZGVmYXVsdF92YWx1ZSwgSXNJbmhlcml0YWJsZShhdHRyX3R5cGUpLCBpbmRleCk7CisgICAgaWYoYXR0cl90eXBlID09IExheW91dFdpZHRoICYmICFmKSB7CisgICAgICAgIGYgPSBtX3BUYWdnZWRFbGVtZW50LT5HZXROdW1iZXIoIlRhYmxlIiwgQXR0ck5hbWUsIGRlZmF1bHRfdmFsdWUsIElzSW5oZXJpdGFibGUoYXR0cl90eXBlKSwgaW5kZXgpOworICAgIH0KKyAgICByZXR1cm4gZjsKK30KK0ZYX0NPTE9SUkVGCUNQREZfTGF5b3V0RWxlbWVudDo6R2V0Q29sb3JBdHRyKExheW91dEF0dHIgYXR0cl90eXBlLCBpbnQgaW5kZXgpCit7CisgICAgaWYoIW1fcFRhZ2dlZEVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIENGWF9CeXRlU3RyaW5nQyBvd25lciA9IEdldEF0dHJPd25lcihhdHRyX3R5cGUpOworICAgIEZYX0NPTE9SUkVGIGRlZmF1bHRfdmFsdWUgPSBHZXREZWZhdWx0Q29sb3JWYWx1ZShhdHRyX3R5cGUpOworICAgIENGWF9CeXRlU3RyaW5nQyBBdHRyTmFtZSA9IENvbnZlcnRMYXlvdXRBdHRyKGF0dHJfdHlwZSk7CisgICAgRlhfQVJHQiBmID0gbV9wVGFnZ2VkRWxlbWVudC0+R2V0Q29sb3Iob3duZXIsIEF0dHJOYW1lLCBkZWZhdWx0X3ZhbHVlLCBJc0luaGVyaXRhYmxlKGF0dHJfdHlwZSksIGluZGV4KTsKKyAgICByZXR1cm4gZjsKK30KK0ZYX0ZMT0FUIENQREZfTGF5b3V0RWxlbWVudDo6R2V0RGVmYXVsdEZsb2F0VmFsdWUoTGF5b3V0QXR0ciBhdHRyX3R5cGUpCit7CisgICAgc3dpdGNoKGF0dHJfdHlwZSkgeworICAgICAgICBjYXNlIExheW91dENvbHVtbkNvdW50OgorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTGF5b3V0Um93U3BhbjoKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExheW91dENvbFNwYW46CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KK0ZYX0NPTE9SUkVGIENQREZfTGF5b3V0RWxlbWVudDo6R2V0RGVmYXVsdENvbG9yVmFsdWUoTGF5b3V0QXR0ciBhdHRyX3R5cGUpCit7CisgICAgcmV0dXJuIC0xOworfQorQ0ZYX0J5dGVTdHJpbmdDIENQREZfTGF5b3V0RWxlbWVudDo6R2V0RGVmYXVsdE5hbWVWYWx1ZShMYXlvdXRBdHRyIGF0dHJfdHlwZSkKK3sKKyAgICBzd2l0Y2goYXR0cl90eXBlKSB7CisgICAgICAgIGNhc2UgTGF5b3V0UGxhY2VtZW50OgorICAgICAgICAgICAgcmV0dXJuICJJbmxpbmUiOworICAgICAgICBjYXNlIExheW91dFdyaXRpbmdNb2RlOgorICAgICAgICAgICAgcmV0dXJuICJMclRiIjsKKyAgICAgICAgY2FzZSBMYXlvdXRCb3JkZXJTdHlsZToKKyAgICAgICAgICAgIHJldHVybiAiTm9uZSI7CisgICAgICAgIGNhc2UgTGF5b3V0VGV4dEFsaWduOgorICAgICAgICAgICAgcmV0dXJuICJTdGFydCI7CisgICAgICAgIGNhc2UgTGF5b3V0QmxvY2tBbGlnbjoKKyAgICAgICAgICAgIHJldHVybiAiQmVmb3JlIjsKKyAgICAgICAgY2FzZSBMYXlvdXRJbmxpbmVBbGlnbjoKKyAgICAgICAgICAgIHJldHVybiAiU3RhcnQiOworICAgICAgICBjYXNlIExheW91dFRCb3JkZXJTdHlsZToKKyAgICAgICAgICAgIHJldHVybiAiTm9uZSI7CisgICAgICAgIGNhc2UgTGF5b3V0VGV4dERlY29yYXRpb25UeXBlOgorICAgICAgICAgICAgcmV0dXJuICJOb25lIjsKKyAgICAgICAgY2FzZSBMYXlvdXRSdWJ5QWxpZ246CisgICAgICAgICAgICByZXR1cm4gIkRpc3RyaWJ1dGUiOworICAgICAgICBjYXNlIExheW91dFJ1YnlQb3NpdGlvbjoKKyAgICAgICAgICAgIHJldHVybiAiQmVmb3JlIjsKKyAgICAgICAgY2FzZSBMYXlvdXRHbHlwaE9yaWVudGF0aW9uVmVydGljYWw6CisgICAgICAgICAgICByZXR1cm4gIkF1dG8iOworICAgICAgICBjYXNlIExheW91dExpc3ROdW1iZXJpbmc6CisgICAgICAgICAgICByZXR1cm4gIk5vbmUiOworICAgICAgICBjYXNlIExheW91dEZpZWxkUm9sZToKKyAgICAgICAgICAgIHJldHVybiAiTm9uZSI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfQorRlhfQk9PTAlDUERGX0xheW91dEVsZW1lbnQ6OklzSW5oZXJpdGFibGUoTGF5b3V0QXR0ciB0eXBlKQoreworICAgIHN3aXRjaCh0eXBlKSB7CisgICAgICAgIGNhc2UgTGF5b3V0V3JpdGluZ01vZGU6CisgICAgICAgIGNhc2UgTGF5b3V0VGV4dEFsaWduOgorICAgICAgICBjYXNlIExheW91dEJsb2NrQWxpZ246CisgICAgICAgIGNhc2UgTGF5b3V0SW5saW5lQWxpZ246CisgICAgICAgIGNhc2UgTGF5b3V0TGluZUhlaWdodDoKKyAgICAgICAgY2FzZSBMYXlvdXRHbHlwaE9yaWVudGF0aW9uVmVydGljYWw6CisgICAgICAgIGNhc2UgTGF5b3V0UnVieUFsaWduOgorICAgICAgICBjYXNlIExheW91dFJ1YnlQb3NpdGlvbjoKKyAgICAgICAgY2FzZSBMYXlvdXRCb3JkZXJUaGlja25lc3M6CisgICAgICAgIGNhc2UgTGF5b3V0U3RhcnRJbmRlbnQ6CisgICAgICAgIGNhc2UgTGF5b3V0RW5kSW5kZW50OgorICAgICAgICBjYXNlIExheW91dFRleHRJbmRlbnQ6CisgICAgICAgIGNhc2UgTGF5b3V0VFBhZGRpbmc6CisgICAgICAgIGNhc2UgTGF5b3V0VGV4dERlY29yYXRpb25UaGlja25lc3M6CisgICAgICAgIGNhc2UgTGF5b3V0Qm9yZGVyQ29sb3I6CisgICAgICAgIGNhc2UgTGF5b3V0Q29sb3I6CisgICAgICAgIGNhc2UgTGF5b3V0VGV4dERlY29yYXRpb25Db2xvcjoKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KK30KK2ludAlDUERGX0xheW91dEVsZW1lbnQ6OkNvdW50Q2hpbGRyZW4oKQoreworICAgIHJldHVybiBtX0NoaWxkQXJyYXkuR2V0U2l6ZSgpOworfQorSVBERl9MYXlvdXRFbGVtZW50KiBDUERGX0xheW91dEVsZW1lbnQ6OkdldENoaWxkKGludCBpbmRleCkKK3sKKyAgICByZXR1cm4gKElQREZfTGF5b3V0RWxlbWVudCopbV9DaGlsZEFycmF5LkdldEF0KGluZGV4KTsKK30KK0lQREZfTGF5b3V0RWxlbWVudCogQ1BERl9MYXlvdXRFbGVtZW50OjpHZXRQYXJlbnQoKQoreworICAgIHJldHVybiBtX3BQYXJlbnRFbGVtZW50OworfQoraW50CUNQREZfTGF5b3V0RWxlbWVudDo6Q291bnRPYmplY3RzKCkKK3sKKyAgICBpZihtX3BUYWdnZWRFbGVtZW50ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIENGWF9QdHJBcnJheSogcE9iaiA9ICZtX09iakFycmF5OworICAgIGludCBzaXplID0gcE9iai0+R2V0U2l6ZSgpOworICAgIHJldHVybiBzaXplOworfQorQ1BERl9QYWdlT2JqZWN0KiBDUERGX0xheW91dEVsZW1lbnQ6OkdldE9iamVjdChpbnQgaW5kZXgpCit7CisgICAgaWYobV9wVGFnZ2VkRWxlbWVudCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDRlhfUHRyQXJyYXkgKnBPYmogPSAmbV9PYmpBcnJheTsKKyAgICBpbnQgc2l6ZSA9IHBPYmotPkdldFNpemUoKTsKKyAgICBpZihpbmRleCA8IHNpemUpIHsKKyAgICAgICAgcmV0dXJuIChDUERGX1BhZ2VPYmplY3QqKXBPYmotPkdldEF0KGluZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CitGWF9CT09MIENQREZfTGF5b3V0RWxlbWVudDo6QWRkT2JqZWN0KENQREZfUGFnZU9iamVjdCogcE9iaikKK3sKKyAgICByZXR1cm4gbV9PYmpBcnJheS5BZGQocE9iaik7Cit9CitJUERGX0xheW91dFByb3ZpZGVyKiBJUERGX0xheW91dFByb3ZpZGVyOjpDcmVhdGVfTGF5b3V0UHJvdmlkZXJfVGFnZ2VkUERGKENQREZfUGFnZU9iamVjdHMqIHBQYWdlKQoreworICAgIGlmKHBQYWdlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENQREZfTGF5b3V0UHJvdmlkZXJfVGFnZ2VkUERGKiBwUHJvdmlkZXIgPSBGWF9ORVcgQ1BERl9MYXlvdXRQcm92aWRlcl9UYWdnZWRQREY7CisgICAgaWYgKCFwUHJvdmlkZXIpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHBQcm92aWRlci0+SW5pdChwUGFnZSk7CisgICAgcmV0dXJuIHBQcm92aWRlcjsKK30KK0NQREZfTGF5b3V0UHJvdmlkZXJfVGFnZ2VkUERGOjpDUERGX0xheW91dFByb3ZpZGVyX1RhZ2dlZFBERigpCit7CisgICAgbV9wUGF1c2UgPSBOVUxMOworICAgIG1fcFJvb3QgPSBOVUxMOworICAgIG1fcFBhZ2VUcmVlID0gTlVMTDsKKyAgICBtX3BDdXJUYWdnZWRFbGVtZW50ID0gTlVMTDsKK30KK0NQREZfTGF5b3V0UHJvdmlkZXJfVGFnZ2VkUERGOjp+Q1BERl9MYXlvdXRQcm92aWRlcl9UYWdnZWRQREYoKQoreworICAgIG1fcEN1clRhZ2dlZEVsZW1lbnQgPSBOVUxMOworICAgIG1fcFBhdXNlID0gTlVMTDsKKyAgICBpZihtX3BSb290KSB7CisgICAgICAgIGRlbGV0ZSBtX3BSb290OworICAgIH0KKyAgICBtX3BSb290ID0gTlVMTDsKKyAgICBpZihtX3BQYWdlVHJlZSkgeworICAgICAgICBkZWxldGUgbV9wUGFnZVRyZWU7CisgICAgfQorICAgIG1fcFBhZ2VUcmVlID0gTlVMTDsKK30KK3ZvaWQgQ1BERl9MYXlvdXRQcm92aWRlcl9UYWdnZWRQREY6OlByb2Nlc3NFbGVtZW50KENQREZfTGF5b3V0RWxlbWVudCpwUGFyZW50LCBDUERGX1N0cnVjdEVsZW1lbnQqIHBUYWdnZWRFbGVtZW50KQoreworICAgIGlmKCFwVGFnZ2VkRWxlbWVudCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmKCFwUGFyZW50KSB7CisgICAgICAgIG1fU3RhdHVzID0gTGF5b3V0RXJyb3I7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQ1BERl9MYXlvdXRFbGVtZW50KiBwRWxlbWVudCA9IEZYX05FVyBDUERGX0xheW91dEVsZW1lbnQ7CisgICAgaWYgKCFwRWxlbWVudCkgeworICAgICAgICBtX1N0YXR1cyA9IExheW91dEVycm9yOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHBFbGVtZW50LT5tX3BQYXJlbnRFbGVtZW50ID0gcFBhcmVudDsKKyAgICBwRWxlbWVudC0+bV9wVGFnZ2VkRWxlbWVudCA9IHBUYWdnZWRFbGVtZW50OworICAgIHBQYXJlbnQtPm1fQ2hpbGRBcnJheS5BZGQocEVsZW1lbnQpOworICAgIGludCBjb3VudCA9IHBUYWdnZWRFbGVtZW50LT5Db3VudEtpZHMoKTsKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICBDUERGX1N0cnVjdEtpZCBLaWQgPSBwVGFnZ2VkRWxlbWVudC0+R2V0S2lkKGkpOworICAgICAgICBzd2l0Y2goS2lkLm1fVHlwZSkgeworICAgICAgICAgICAgY2FzZSBDUERGX1N0cnVjdEtpZDo6RWxlbWVudDogeworICAgICAgICAgICAgICAgICAgICBQcm9jZXNzRWxlbWVudChwRWxlbWVudCwgS2lkLm1fRWxlbWVudC5tX3BFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaWYobV9TdGF0dXMgIT0gTGF5b3V0UmVhZHkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENQREZfU3RydWN0S2lkOjpQYWdlQ29udGVudDogeworICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQgPSBtX3BQYWdlLT5Db3VudE9iamVjdHMoKTsKKyAgICAgICAgICAgICAgICAgICAgRlhfUE9TSVRJT04gcG9zID0gbV9wUGFnZS0+R2V0Rmlyc3RPYmplY3RQb3NpdGlvbigpOworICAgICAgICAgICAgICAgICAgICBpZighcG9zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX1N0YXR1cyA9IExheW91dEVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB3aGlsZSAocG9zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBDUERGX1BhZ2VPYmplY3QqIHBPYmogPSBtX3BQYWdlLT5HZXROZXh0T2JqZWN0KHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGJqTUNJRCA9IHBPYmotPm1fQ29udGVudE1hcmsuR2V0TUNJRCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYoKEZYX0RXT1JEKShwT2JqLT5tX0NvbnRlbnRNYXJrLkdldE1DSUQoKSkgPT0gS2lkLm1fUGFnZUNvbnRlbnQubV9Db250ZW50SWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwRWxlbWVudC0+QWRkT2JqZWN0KHBPYmopOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDUERGX1N0cnVjdEtpZDo6U3RyZWFtQ29udGVudDoKKyAgICAgICAgICAgIGNhc2UgQ1BERl9TdHJ1Y3RLaWQ6Ok9iamVjdDoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CitMYXlvdXRTdGF0dXMgQ1BERl9MYXlvdXRQcm92aWRlcl9UYWdnZWRQREY6OlN0YXJ0TG9hZChJRlhfUGF1c2UqIHBQYXVzZSkKK3sKKyAgICBtX3BQYXVzZSA9IHBQYXVzZTsKKyAgICBpZihtX3BQYWdlLT5tX3BEb2N1bWVudCAmJiBtX3BQYWdlLT5tX3BGb3JtRGljdCkgeworICAgICAgICBtX3BQYWdlVHJlZSA9IENQREZfU3RydWN0VHJlZTo6TG9hZFBhZ2UobV9wUGFnZS0+bV9wRG9jdW1lbnQsIG1fcFBhZ2UtPm1fcEZvcm1EaWN0KTsKKyAgICB9CisgICAgaWYoIW1fcFBhZ2VUcmVlKSB7CisgICAgICAgIG1fU3RhdHVzID0gTGF5b3V0RXJyb3I7CisgICAgICAgIHJldHVybiBMYXlvdXRFcnJvcjsKKyAgICB9CisgICAgaW50IGNvdW50ID0gbV9wUGFnZVRyZWUtPkNvdW50VG9wRWxlbWVudHMoKTsKKyAgICBpZihjb3VudCA9PSAwKSB7CisgICAgICAgIG1fU3RhdHVzID0gTGF5b3V0RXJyb3I7CisgICAgICAgIHJldHVybiBMYXlvdXRFcnJvcjsKKyAgICB9CisgICAgbV9wUm9vdCA9IEZYX05FVyBDUERGX0xheW91dEVsZW1lbnQ7CisgICAgaWYgKCFtX3BSb290KSB7CisgICAgICAgIG1fU3RhdHVzID0gTGF5b3V0RXJyb3I7CisgICAgICAgIHJldHVybiBMYXlvdXRFcnJvcjsKKyAgICB9CisgICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgQ1BERl9TdHJ1Y3RFbGVtZW50KiBwRWxlbWVudCA9IG1fcFBhZ2VUcmVlLT5HZXRUb3BFbGVtZW50KGkpOworICAgICAgICBpZihwRWxlbWVudCkgeworICAgICAgICAgICAgUHJvY2Vzc0VsZW1lbnQobV9wUm9vdCwgcEVsZW1lbnQpOworICAgICAgICAgICAgaWYobV9TdGF0dXMgIT0gTGF5b3V0UmVhZHkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9TdGF0dXM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbV9wQ3VyVGFnZ2VkRWxlbWVudCA9IE5VTEw7CisgICAgbV9TdGF0dXMgPSBMYXlvdXRGaW5pc2hlZDsKKyAgICByZXR1cm4gTGF5b3V0RmluaXNoZWQ7Cit9CitMYXlvdXRTdGF0dXMgQ1BERl9MYXlvdXRQcm92aWRlcl9UYWdnZWRQREY6OkNvbnRpbnVlKCkKK3sKKyAgICBpZighbV9wQ3VyVGFnZ2VkRWxlbWVudCkgeworICAgICAgICByZXR1cm4gTGF5b3V0RXJyb3I7CisgICAgfQorICAgIGlmKG1fU3RhdHVzICE9IExheW91dFRvQmVDb250aW51ZWQpIHsKKyAgICAgICAgcmV0dXJuIExheW91dEVycm9yOworICAgIH0KKyAgICBtX1N0YXR1cyA9IExheW91dFJlYWR5OworICAgIGludCBjb3VudCA9IG1fcFBhZ2VUcmVlLT5Db3VudFRvcEVsZW1lbnRzKCk7CisgICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgQ1BERl9TdHJ1Y3RFbGVtZW50KiBwRWxlbWVudCA9IG1fcFBhZ2VUcmVlLT5HZXRUb3BFbGVtZW50KGkpOworICAgICAgICBpZihwRWxlbWVudCkgeworICAgICAgICAgICAgUHJvY2Vzc0VsZW1lbnQobV9wUm9vdCwgcEVsZW1lbnQpOworICAgICAgICAgICAgaWYobV9TdGF0dXMgIT0gTGF5b3V0UmVhZHkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9TdGF0dXM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbV9wQ3VyVGFnZ2VkRWxlbWVudCA9IE5VTEw7CisgICAgbV9TdGF0dXMgPSBMYXlvdXRGaW5pc2hlZDsKKyAgICByZXR1cm4gTGF5b3V0RmluaXNoZWQ7Cit9CitpbnQgQ1BERl9MYXlvdXRQcm92aWRlcl9UYWdnZWRQREY6OkdldFBvc2l0aW9uKCkKK3sKKyAgICBpZihtX1RvcEVsZW1lbnRJbmRleCA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpbnQgY291bnQgPSBtX3BQYWdlVHJlZS0+Q291bnRUb3BFbGVtZW50cygpOworICAgIHJldHVybiBtX1RvcEVsZW1lbnRJbmRleCAvIGNvdW50ICogMTAwOworfQpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvcmVmbG93L2xheW91dHByb3ZpZGVyX3RhZ2dlZHBkZi5oIGIvY29yZS9zcmMvcmVmbG93L2xheW91dHByb3ZpZGVyX3RhZ2dlZHBkZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyYzg5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9yZWZsb3cvbGF5b3V0cHJvdmlkZXJfdGFnZ2VkcGRmLmgKQEAgLTAsMCArMSw4MiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2lmbmRlZiBMYXlvdXRQcm92aWRlcl9UYWdnZWRQREZfSAorI2RlZmluZSBMYXlvdXRQcm92aWRlcl9UYWdnZWRQREZfSAorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvcmVmbG93L3JlZmxvd2VuZ2luZS5oIgorY2xhc3MgQ1BERl9MYXlvdXRFbGVtZW50IDogcHVibGljIElQREZfTGF5b3V0RWxlbWVudCwgcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICBDUERGX0xheW91dEVsZW1lbnQoKTsKKyAgICB+Q1BERl9MYXlvdXRFbGVtZW50KCk7CisKKyAgICBMYXlvdXRUeXBlCUdldFR5cGUoKTsKKyAgICB2b2lkCUdldFJlY3QoQ0ZYX0Zsb2F0UmVjdCYgcmNSZWN0KSB7fTsKKworICAgIGludAkJQ291bnRBdHRyVmFsdWVzKExheW91dEF0dHIgYXR0cl90eXBlKTsKKworICAgIExheW91dEVudW0JR2V0RW51bUF0dHIoTGF5b3V0QXR0ciBhdHRyX3R5cGUsIGludCBpbmRleCk7CisgICAgRlhfRkxPQVQJR2V0TnVtYmVyQXR0cihMYXlvdXRBdHRyIGF0dHJfdHlwZSwgaW50IGluZGV4KTsKKyAgICBGWF9DT0xPUlJFRglHZXRDb2xvckF0dHIoTGF5b3V0QXR0ciBhdHRyX3R5cGUsIGludCBpbmRleCk7CisKKyAgICBpbnQJCUNvdW50Q2hpbGRyZW4oKTsKKworICAgIElQREZfTGF5b3V0RWxlbWVudCogR2V0Q2hpbGQoaW50IGluZGV4KTsKKworICAgIElQREZfTGF5b3V0RWxlbWVudCogR2V0UGFyZW50KCk7CisKKyAgICBpbnQJQ291bnRPYmplY3RzKCk7CisgICAgQ1BERl9QYWdlT2JqZWN0KglHZXRPYmplY3QoaW50IGluZGV4KTsKKyAgICBGWF9CT09MIEFkZE9iamVjdChDUERGX1BhZ2VPYmplY3QqIHBPYmopOworICAgIENQREZfU3RydWN0RWxlbWVudCogbV9wVGFnZ2VkRWxlbWVudDsKKyAgICBDUERGX0xheW91dEVsZW1lbnQqIG1fcFBhcmVudEVsZW1lbnQ7CisgICAgQ0ZYX1B0ckFycmF5CW1fQ2hpbGRBcnJheTsKKyAgICBMYXlvdXRUeXBlIENvbnZlcnRMYXlvdXRUeXBlKEZYX0JTVFIgbmFtZSk7CisgICAgQ0ZYX0J5dGVTdHJpbmdDIENvbnZlcnRMYXlvdXRUeXBlKExheW91dFR5cGUgdHlwZSk7CisgICAgQ0ZYX0J5dGVTdHJpbmdDIENvbnZlcnRMYXlvdXRBdHRyKExheW91dEF0dHIgYXR0cik7CisgICAgTGF5b3V0RW51bSBDb252ZXJ0TGF5b3V0RW51bShDRlhfQnl0ZVN0cmluZ0MgRW51bSk7CisKK3Byb3RlY3RlZDoKKyAgICBGWF9CT09MCQlJc0luaGVyaXRhYmxlKExheW91dEF0dHIgYXR0cl90eXBlKTsKKyAgICBDRlhfQnl0ZVN0cmluZ0MgR2V0QXR0ck93bmVyKExheW91dEF0dHIgYXR0cl90eXBlKTsKKyAgICBDRlhfQnl0ZVN0cmluZ0MgR2V0RGVmYXVsdE5hbWVWYWx1ZShMYXlvdXRBdHRyIGF0dHJfdHlwZSk7CisgICAgRlhfRkxPQVQJCUdldERlZmF1bHRGbG9hdFZhbHVlKExheW91dEF0dHIgYXR0cl90eXBlKTsKKyAgICBGWF9DT0xPUlJFRgkJR2V0RGVmYXVsdENvbG9yVmFsdWUoTGF5b3V0QXR0ciBhdHRyX3R5cGUpOworICAgIENGWF9QdHJBcnJheQltX09iakFycmF5OworfTsKK2NsYXNzIENQREZfTGF5b3V0UHJvdmlkZXJfVGFnZ2VkUERGIDogcHVibGljIElQREZfTGF5b3V0UHJvdmlkZXIsIHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgQ1BERl9MYXlvdXRQcm92aWRlcl9UYWdnZWRQREYoKTsKKyAgICB+Q1BERl9MYXlvdXRQcm92aWRlcl9UYWdnZWRQREYoKTsKKyAgICB2b2lkCQkJU2V0TGF5b3V0UHJvdmlkZXJTdHlsZShMQVlPVVRQUk9WSURFUl9TVFlMRSBzdHlsZSkge307CisKKyAgICB2b2lkCUluaXQoQ1BERl9QYWdlT2JqZWN0cyogcFBhZ2UpCisgICAgeworICAgICAgICBtX3BQYWdlID0gcFBhZ2U7CisgICAgICAgIG1fU3RhdHVzID0gTGF5b3V0UmVhZHk7CisgICAgfTsKKworICAgIExheW91dFN0YXR1cwlTdGFydExvYWQoSUZYX1BhdXNlKiBwUGF1c2UgPSBOVUxMKTsKKyAgICBMYXlvdXRTdGF0dXMJQ29udGludWUoKTsKKyAgICBpbnQJCSAJCUdldFBvc2l0aW9uKCk7CisKKyAgICBJUERGX0xheW91dEVsZW1lbnQqIEdldFJvb3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcFJvb3Q7CisgICAgfTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgUHJvY2Vzc0VsZW1lbnQoQ1BERl9MYXlvdXRFbGVtZW50KnBQYXJlbnQsIENQREZfU3RydWN0RWxlbWVudCogcFRhZ2dlZEVsZW1lbnQpOworICAgIExheW91dFN0YXR1cwltX1N0YXR1czsKKyAgICBDUERGX1N0cnVjdEVsZW1lbnQqIG1fcEN1clRhZ2dlZEVsZW1lbnQ7CisgICAgQ1BERl9MYXlvdXRFbGVtZW50KiBtX3BSb290OworICAgIElGWF9QYXVzZSoJCQltX3BQYXVzZTsKKyAgICBDUERGX1BhZ2VPYmplY3RzKgltX3BQYWdlOworICAgIENQREZfU3RydWN0VHJlZSoJbV9wUGFnZVRyZWU7CisgICAgaW50CQkJCQltX1RvcEVsZW1lbnRJbmRleDsKK307CisjZW5kaWYKZGlmZiAtLWdpdCBhL2NvcmUvc3JjL3JlZmxvdy9yZWZsb3dlZHBhZ2UuY3BwIGIvY29yZS9zcmMvcmVmbG93L3JlZmxvd2VkcGFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFiYWVmOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvc3JjL3JlZmxvdy9yZWZsb3dlZHBhZ2UuY3BwCkBAIC0wLDAgKzEsNjIyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9yZWZsb3cvcmVmbG93ZW5naW5lLmgiCisjaW5jbHVkZSAicmVmbG93ZWRwYWdlLmgiCitDUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlcjo6Q1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VQYXJzZXIoKQoreworICAgIG1fbk9ialByb2Nlc3NlZCA9IDA7CisgICAgbV9wUmVmbG93RW5naW5lID0gTlVMTDsKKyAgICBtX3BQcm92aWRlciA9IE5VTEw7Cit9CitDUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlcjo6fkNQREZfUHJvZ3Jlc3NpdmVSZWZsb3dQYWdlUGFyc2VyKCkKK3sKKyAgICBpZihtX3BQcm92aWRlcikgeworICAgICAgICBkZWxldGUgbV9wUHJvdmlkZXI7CisgICAgfQorICAgIG1fcFByb3ZpZGVyID0gTlVMTDsKKyAgICBpZihtX3BSZWZsb3dFbmdpbmUpIHsKKyAgICAgICAgZGVsZXRlIG1fcFJlZmxvd0VuZ2luZTsKKyAgICB9CisgICAgbV9wUmVmbG93RW5naW5lID0gTlVMTDsKK30KK3ZvaWQgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VQYXJzZXI6OkluaXQoKQoreworICAgIG1fU3RhdHVzID0gUmVhZHk7Cit9CitDUERGX1JlZmxvd2VkUGFnZTo6Q1BERl9SZWZsb3dlZFBhZ2UoQ0ZYX0dyb3dPbmx5UG9vbCoJcE1lbW9yeVBvb2wpCit7CisgICAgbV9QYWdlV2lkdGggPSAwOworICAgIG1fUGFnZUhlaWdodCA9IDA7CisgICAgbV9iV2FpdGluZyA9IFRSVUU7CisgICAgaWYocE1lbW9yeVBvb2wpIHsKKyAgICAgICAgbV9wTWVtb3J5UG9vbCA9IHBNZW1vcnlQb29sOworICAgICAgICBtX2JDcmVhdGVNZW1vcnlQb29sID0gRkFMU0U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9wTWVtb3J5UG9vbCA9IEZYX05FVyBDRlhfR3Jvd09ubHlQb29sOworICAgICAgICBtX2JDcmVhdGVNZW1vcnlQb29sID0gVFJVRTsKKyAgICB9CisgICAgbV9wQ2hhclN0YXRlID0gRlhfTkVXIENSRl9DaGFyU3RhdGVBcnJheSgxMCk7CisgICAgbV9wUmVmbG93ZWQgPSBGWF9ORVcgQ1JGX0RhdGFQdHJBcnJheSg1MDApOworICAgIG1fcFBhZ2VJbmZvcyA9IE5VTEw7Cit9CitDUERGX1JlZmxvd2VkUGFnZTo6fkNQREZfUmVmbG93ZWRQYWdlKCkKK3sKKyAgICBpZiAobV9wUmVmbG93ZWQpIHsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IG1fcFJlZmxvd2VkLT5HZXRTaXplKCk7IGkrKykgeworICAgICAgICAgICAgQ1JGX0RhdGEqIHBEYXRhID0gKCptX3BSZWZsb3dlZClbaV07CisgICAgICAgICAgICBpZihwRGF0YS0+bV9UeXBlID09IENSRl9EYXRhOjpJbWFnZSkgeworICAgICAgICAgICAgICAgIGRlbGV0ZSAoKENSRl9JbWFnZURhdGEqKXBEYXRhKS0+bV9wQml0bWFwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fcFJlZmxvd2VkLT5SZW1vdmVBbGwoKTsKKyAgICAgICAgZGVsZXRlIG1fcFJlZmxvd2VkOworICAgIH0KKyAgICBtX3BSZWZsb3dlZCA9IE5VTEw7CisgICAgaWYgKG1fcENoYXJTdGF0ZSkgeworICAgICAgICBtX3BDaGFyU3RhdGUtPlJlbW92ZUFsbCgpOworICAgICAgICBkZWxldGUgbV9wQ2hhclN0YXRlOworICAgIH0KKyAgICBtX3BDaGFyU3RhdGUgPSBOVUxMOworICAgIGlmKG1fYkNyZWF0ZU1lbW9yeVBvb2wgJiYgbV9wTWVtb3J5UG9vbCkgeworICAgICAgICBtX3BNZW1vcnlQb29sLT5GcmVlQWxsKCk7CisgICAgfQorICAgIGlmIChtX3BNZW1vcnlQb29sKSB7CisgICAgICAgIGRlbGV0ZSBtX3BNZW1vcnlQb29sOworICAgIH0KKyAgICBtX3BNZW1vcnlQb29sID0gTlVMTDsKKyAgICBtX3BQREZQYWdlID0gTlVMTDsKKyAgICBpZiAobV9wUGFnZUluZm9zKSB7CisgICAgICAgIFJlbGVhc2VQYWdlT2Jqc01lbWJlclNoaXAoKTsKKyAgICB9Cit9CitGWF9CT09MIENQREZfUmVmbG93ZWRQYWdlOjpSZXRhaW5QYWdlT2Jqc01lbWJlclNoaXAoKQoreworICAgIGlmIChOVUxMID09IG1fcFBERlBhZ2UpIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBpZiAoTlVMTCA9PSBtX3BQYWdlSW5mb3MpIHsKKyAgICAgICAgbV9wUGFnZUluZm9zID0gRlhfTkVXIENGWF9NYXBQdHJUb1B0cigpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgICBGWF9QT1NJVElPTglwb3MgPSBtX3BQREZQYWdlLT5HZXRGaXJzdE9iamVjdFBvc2l0aW9uKCk7CisgICAgaWYgKCFwb3MpCXsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBDUERGX1BhZ2VPYmplY3QqIHBQYWdlT2JqID0gTlVMTDsKKyAgICB3aGlsZSAocG9zKSB7CisgICAgICAgIHBQYWdlT2JqID0gbV9wUERGUGFnZS0+R2V0TmV4dE9iamVjdChwb3MpOworICAgICAgICBNYXJrUGFnZU9iak1lbWJlclNoaXAocFBhZ2VPYmosIE5VTEwpOworICAgICAgICBwUGFnZU9iaiA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQordm9pZCBDUERGX1JlZmxvd2VkUGFnZTo6TWFya1BhZ2VPYmpNZW1iZXJTaGlwKENQREZfUGFnZU9iamVjdCogcE9iaiwgQ1JGX1BhZ2VJbmZvKiBwUGFyZW50KQoreworICAgIGlmIChOVUxMID09IG1fcFBhZ2VJbmZvcykgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIENSRl9QYWdlSW5mbyogcFBhZ2VJbmZvID0gRlhfTkVXIENSRl9QYWdlSW5mbyhwT2JqLCBwUGFyZW50KTsKKyAgICBpZiAoTlVMTCA9PSBwUGFnZUluZm8pIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3BQYWdlSW5mb3MtPlNldEF0KHBPYmosIHBQYWdlSW5mbyk7CisgICAgaWYgKFBERlBBR0VfRk9STSAhPSBwT2JqLT5tX1R5cGUpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDUERGX0Zvcm1PYmplY3QqIHBGb3JtT2JqID0gKENQREZfRm9ybU9iamVjdCopcE9iajsKKyAgICBGWF9QT1NJVElPTglwb3M7CisgICAgcG9zID0gcEZvcm1PYmotPm1fcEZvcm0tPkdldEZpcnN0T2JqZWN0UG9zaXRpb24oKTsKKyAgICBpZiAoIXBvcykJeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIENQREZfUGFnZU9iamVjdCogcFBhZ2VPYmogPSBOVUxMOworICAgIHdoaWxlIChwb3MpIHsKKyAgICAgICAgcFBhZ2VPYmogPSBwRm9ybU9iai0+bV9wRm9ybS0+R2V0TmV4dE9iamVjdChwb3MpOworICAgICAgICBNYXJrUGFnZU9iak1lbWJlclNoaXAocFBhZ2VPYmosIHBQYWdlSW5mbyk7CisgICAgICAgIHBQYWdlT2JqID0gTlVMTDsKKyAgICB9Cit9Cit2b2lkIENQREZfUmVmbG93ZWRQYWdlOjpSZWxlYXNlUGFnZU9ianNNZW1iZXJTaGlwKCkKK3sKKyAgICBpZiAoTlVMTCA9PSBtX3BQYWdlSW5mb3MpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDUERGX1BhZ2VPYmplY3QqIHBQYWdlT2JqID0gTlVMTDsKKyAgICBDUkZfUGFnZUluZm8qIHBQYWdlSW5mbyA9IE5VTEw7CisgICAgRlhfUE9TSVRJT04gcG9zID0gbV9wUGFnZUluZm9zLT5HZXRTdGFydFBvc2l0aW9uKCk7CisgICAgd2hpbGUgKHBvcykgeworICAgICAgICBtX3BQYWdlSW5mb3MtPkdldE5leHRBc3NvYyhwb3MsICh2b2lkKiYpcFBhZ2VPYmosICh2b2lkKiYpcFBhZ2VJbmZvKTsKKyAgICAgICAgZGVsZXRlIHBQYWdlSW5mbzsKKyAgICB9CisgICAgbV9wUGFnZUluZm9zLT5SZW1vdmVBbGwoKTsKKyAgICBkZWxldGUgbV9wUGFnZUluZm9zOworICAgIG1fcFBhZ2VJbmZvcyA9IE5VTEw7Cit9CitDUERGX0RpY3Rpb25hcnkqIENQREZfUmVmbG93ZWRQYWdlOjpHZXRGb3JtUmVzRGljdChDUERGX1BhZ2VPYmplY3QqIHBPYmopCit7CisgICAgaWYgKE5VTEwgPT0gbV9wUGFnZUluZm9zKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoRkFMU0UgPT0gUmV0YWluUGFnZU9ianNNZW1iZXJTaGlwKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENSRl9QYWdlSW5mbyogcFBhZ2VJbmZvID0gKENSRl9QYWdlSW5mbyopbV9wUGFnZUluZm9zLT5HZXRWYWx1ZUF0KHBPYmopOworICAgIGlmIChOVUxMID09IHBQYWdlSW5mbykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHBQYWdlSW5mby0+R2V0Rm9ybURpY3QoKTsKK30KK3ZvaWQgQ1BERl9SZWZsb3dlZFBhZ2U6OkdldERpc3BsYXlNYXRyaXgoQ0ZYX0FmZmluZU1hdHJpeCYgbWF0cml4LCBGWF9JTlQzMiB4UG9zLCBGWF9JTlQzMiB5UG9zLCBGWF9JTlQzMiB4U2l6ZSwgRlhfSU5UMzIgeVNpemUsIEZYX0lOVDMyIGlSb3RhdGUsIGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBQYWdlTWF0cml4KQoreworICAgIENGWF9BZmZpbmVNYXRyaXggZGlzcGxheV9tYXRyaXg7CisgICAgaWYobV9QYWdlSGVpZ2h0ID09IDApIHsKKyAgICAgICAgbWF0cml4LlNldCgxLCAwLCAwLCAtMSwgMCwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgRlhfSU5UMzIgeDAsIHkwLCB4MSwgeTEsIHgyLCB5MjsKKyAgICBpUm90YXRlICU9IDQ7CisgICAgc3dpdGNoIChpUm90YXRlKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHgwID0geFBvczsKKyAgICAgICAgICAgIHkwID0geVBvczsKKyAgICAgICAgICAgIHgxID0geFBvczsKKyAgICAgICAgICAgIHkxID0geVBvcyArIHlTaXplOworICAgICAgICAgICAgeDIgPSB4UG9zICsgeFNpemU7CisgICAgICAgICAgICB5MiA9IHlQb3M7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgeDAgPSB4UG9zOworICAgICAgICAgICAgeTAgPSB5U2l6ZSArIHlQb3M7CisgICAgICAgICAgICB4MSA9ICB4UG9zICsgeFNpemU7CisgICAgICAgICAgICB5MSA9IHlQb3MgKyB5U2l6ZTsKKyAgICAgICAgICAgIHgyID0geFBvczsKKyAgICAgICAgICAgIHkyID0geVBvczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICB4MCA9IHhTaXplICsgeFBvczsKKyAgICAgICAgICAgIHkwID0geVNpemUgKyB5UG9zOworICAgICAgICAgICAgeDEgPSB4U2l6ZSArIHhQb3MgOworICAgICAgICAgICAgeTEgPSB5UG9zOworICAgICAgICAgICAgeDIgPSB4UG9zOworICAgICAgICAgICAgeTIgPSAgeVNpemUgKyB5UG9zOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHgwID0geFBvcyArIHhTaXplOworICAgICAgICAgICAgeTAgPSB5UG9zOworICAgICAgICAgICAgeDEgPSB4UG9zOworICAgICAgICAgICAgeTEgPSB5UG9zOworICAgICAgICAgICAgeDIgPSB4UG9zICsgeFNpemU7CisgICAgICAgICAgICB5MiA9IHlQb3MgKyB5U2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkaXNwbGF5X21hdHJpeC5TZXQoRlhTWVNfRGl2KChGWF9GTE9BVCkoeDIgLSB4MCksIG1fUGFnZVdpZHRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfRGl2KChGWF9GTE9BVCkoeTIgLSB5MCksIG1fUGFnZVdpZHRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgRlhTWVNfRGl2KChGWF9GTE9BVCkoeDEgLSB4MCksIG1fUGFnZUhlaWdodCksCisgICAgICAgICAgICAgICAgICAgICAgIEZYU1lTX0RpdigoRlhfRkxPQVQpKHkxIC0geTApLCBtX1BhZ2VIZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAoRlhfRkxPQVQpKHgwKSwgKEZYX0ZMT0FUKSh5MCkpOworICAgIG1hdHJpeC5TZXQoMS4wZiwgMC4wZiwgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYpOworICAgIG1hdHJpeC5Db25jYXQoZGlzcGxheV9tYXRyaXgpOworICAgIHJldHVybjsKK30KK0ZYX0ZMT0FUIENQREZfUmVmbG93ZWRQYWdlOjpHZXRQYWdlSGVpZ2h0KCkKK3sKKyAgICByZXR1cm4gbV9QYWdlSGVpZ2h0OworfQordm9pZCBDUERGX1JlZmxvd2VkUGFnZTo6Rm9jdXNHZXREYXRhKGNvbnN0IENGWF9BZmZpbmVNYXRyaXggbWF0cml4LCBGWF9JTlQzMiB4LCBGWF9JTlQzMiB5LCBDRlhfQnl0ZVN0cmluZyYgc3RyKQoreworICAgIGlmIChOVUxMID09IG1fcFJlZmxvd2VkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQ0ZYX0FmZmluZU1hdHJpeCByZXZNYXRyaXg7CisgICAgcmV2TWF0cml4LlNldFJldmVyc2UobWF0cml4KTsKKyAgICBGWF9GTE9BVCB4MSwgeTE7CisgICAgcmV2TWF0cml4LlRyYW5zZm9ybSgoZmxvYXQpeCwgKGZsb2F0KXksIHgxLCB5MSk7CisgICAgaW50IGNvdW50ID0gbV9wUmVmbG93ZWQtPkdldFNpemUoKTsKKyAgICBGWF9GTE9BVCBkeCA9IDEwMDAsIGR5ID0gMTAwMDsKKyAgICBGWF9JTlQzMiBwb3MgPSAwOworICAgIEZYX0lOVDMyIGk7CisgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICBDUkZfRGF0YSogcERhdGEgPSAoKm1fcFJlZmxvd2VkKVtpXTsKKyAgICAgICAgRlhfRkxPQVQgdGVtcGR5ID0gRlhTWVNfZmFicyhwRGF0YS0+bV9Qb3NZIC0geTEpOworICAgICAgICBpZihGWFNZU19mYWJzKHRlbXBkeSAtIGR5KSA8IDEpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIENGWF9GbG9hdFJlY3QgcmVjdCAoMCwgcERhdGEtPm1fUG9zWSArIHBEYXRhLT5tX0hlaWdodCwgdGhpcy0+bV9QYWdlV2lkdGgsIHBEYXRhLT5tX1Bvc1kpOworICAgICAgICBpZihyZWN0LkNvbnRhaW5zKHgxLCB5MSkpIHsKKyAgICAgICAgICAgIHBvcyA9IGk7CisgICAgICAgICAgICBkeCA9IDA7CisgICAgICAgICAgICBkeSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmKHRlbXBkeSA8IGR5KSB7CisgICAgICAgICAgICBkeSA9IHRlbXBkeTsKKyAgICAgICAgICAgIGR4ID0gRlhTWVNfZmFicyhwRGF0YS0+bV9Qb3NYIC0geDEpOworICAgICAgICAgICAgcG9zID0gaTsKKyAgICAgICAgfSBlbHNlIGlmICh0ZW1wZHkgPT0gZHkpIHsKKyAgICAgICAgICAgIEZYX0ZMT0FUIHRlbXBkeCA9IEZYU1lTX2ZhYnMocERhdGEtPm1fUG9zWCAtIHgxKTsKKyAgICAgICAgICAgIGlmKHRlbXBkeCA8IGR4KSB7CisgICAgICAgICAgICAgICAgZHggPSB0ZW1wZHg7CisgICAgICAgICAgICAgICAgcG9zID0gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICh0ZW1wZHkgPiBkeSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYoZHggIT0gMCB8fCBkeSAhPSAwKSB7CisgICAgICAgIGNvdW50ID0gY291bnQgPCAocG9zICsgMTApID8gY291bnQgOiAocG9zICsgMTApOworICAgICAgICBmb3IoaSA9IDAgPiAocG9zIC0gMTApID8gMCA6IChwb3MgLSAxMCk7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBDUkZfRGF0YSogcERhdGEgPSAoKm1fcFJlZmxvd2VkKVtpXTsKKyAgICAgICAgICAgIEZYX0ZMT0FUIHRlbXBkeSA9IEZYU1lTX2ZhYnMocERhdGEtPm1fUG9zWSAtIHkxKTsKKyAgICAgICAgICAgIGlmKHRlbXBkeSA8IGR5KSB7CisgICAgICAgICAgICAgICAgZHkgPSB0ZW1wZHk7CisgICAgICAgICAgICAgICAgZHggPSBGWFNZU19mYWJzKHBEYXRhLT5tX1Bvc1ggLSB4MSk7CisgICAgICAgICAgICAgICAgcG9zID0gaTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGVtcGR5ID09IGR5KSB7CisgICAgICAgICAgICAgICAgRlhfRkxPQVQgdGVtcGR4ID0gRlhTWVNfZmFicyhwRGF0YS0+bV9Qb3NYIC0geDEpOworICAgICAgICAgICAgICAgIGlmKHRlbXBkeCA8IGR4KSB7CisgICAgICAgICAgICAgICAgICAgIGR4ID0gdGVtcGR4OworICAgICAgICAgICAgICAgICAgICBwb3MgPSBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBzdHIuRm9ybWF0KCIlZCIsIHBvcyk7Cit9CitGWF9CT09MIENQREZfUmVmbG93ZWRQYWdlOjpGb2N1c0dldFBvc2l0aW9uKGNvbnN0IENGWF9BZmZpbmVNYXRyaXggbWF0cml4LCBDRlhfQnl0ZVN0cmluZyBzdHIsIEZYX0lOVDMyJiB4LCBGWF9JTlQzMiYgeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBtX3BSZWZsb3dlZCkgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIEZYX0lOVDMyIHBvcyA9IEZYU1lTX2F0b2koc3RyKTsKKyAgICBpZihwb3MgPCAwIHx8IHBvcyA+PSBtX3BSZWZsb3dlZC0+R2V0U2l6ZSgpKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgQ1JGX0RhdGEqIHBEYXRhID0gKCptX3BSZWZsb3dlZClbcG9zXTsKKyAgICBGWF9GTE9BVCB4MSwgeTE7CisgICAgbWF0cml4LlRyYW5zZm9ybShwRGF0YS0+bV9Qb3NYLCBwRGF0YS0+bV9Qb3NZICsgcERhdGEtPm1fSGVpZ2h0LCB4MSwgeTEpOworICAgIHggPSAoaW50KXgxOworICAgIHkgPSAoaW50KXkxOworICAgIHJldHVybiBUUlVFOworfQoraW50IENQREZfUHJvZ3Jlc3NpdmVSZWZsb3dQYWdlUGFyc2VyOjpHZXRQb3NpdGlvbigpCit7CisgICAgaWYoIW1fcFByb3ZpZGVyKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZighbV9wUmVmbG93RW5naW5lKSB7CisgICAgICAgIHJldHVybiBtX3BQcm92aWRlci0+R2V0UG9zaXRpb24oKSAvIDI7CisgICAgfQorICAgIHJldHVybiBtX3BQcm92aWRlci0+R2V0UG9zaXRpb24oKSAvIDIgKyBtX3BSZWZsb3dFbmdpbmUtPkdldFBvc2l0aW9uKCkgLyAyOworfQordm9pZCBDUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlcjo6Q29udGludWUoSUZYX1BhdXNlKiBwUGF1c2UpCit7CisgICAgaWYgKE5VTEwgPT0gbV9wUmVmbG93UGFnZSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmKG1fU3RhdHVzICE9IFRvQmVDb250aW51ZWQpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3BQYXVzZSA9IHBQYXVzZTsKKyAgICBpZihtX3BSZWZsb3dFbmdpbmUpIHsKKyAgICAgICAgaWYobV9wUmVmbG93RW5naW5lLT5Db250aW51ZSgpICE9IExheW91dFRvQmVDb250aW51ZWQpIHsKKyAgICAgICAgICAgIG1fU3RhdHVzID0gRG9uZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmKG1fcFByb3ZpZGVyLT5Db250aW51ZSgpID09IExheW91dEZpbmlzaGVkKSB7CisgICAgICAgICAgICBtX3BSZWZsb3dFbmdpbmUgPSBJUERGX0xheW91dFByb2Nlc3Nvcjo6Q3JlYXRlX0xheW91dFByb2Nlc3Nvcl9SZWZsb3cobV9Ub3BJbmRlbnQsIG1fUmVmbG93ZWRXaWR0aCwgbV9mU2NyZWVuSGVpZ2h0LCBtX3BSZWZsb3dQYWdlLCBtX2ZsYWdzLCBtX1BhcnNlU3R5bGUubV9MaW5lU3BhY2UpOworICAgICAgICAgICAgQ0ZYX0FmZmluZU1hdHJpeCBtYXRyaXg7CisgICAgICAgICAgICBtX3BQREZQYWdlLT5HZXREaXNwbGF5TWF0cml4KG1hdHJpeCwgMCwgMCwgKGludCkobV9wUERGUGFnZS0+R2V0UGFnZVdpZHRoKCkpLCAoaW50KShtX3BQREZQYWdlLT5HZXRQYWdlSGVpZ2h0KCkpLCAwKTsKKyAgICAgICAgICAgIGlmKG1fcFJlZmxvd0VuZ2luZS0+U3RhcnRQcm9jZXNzKG1fcFByb3ZpZGVyLT5HZXRSb290KCksIG1fcFBhdXNlLCAmbWF0cml4KSAhPSBMYXlvdXRUb0JlQ29udGludWVkKSB7CisgICAgICAgICAgICAgICAgbV9TdGF0dXMgPSBEb25lOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmKG1fVG9wSW5kZW50ICYmIG1fU3RhdHVzID09IERvbmUpIHsKKyAgICAgICAgbV9wUmVmbG93UGFnZS0+bV9QYWdlSGVpZ2h0IC09IG1fVG9wSW5kZW50OworICAgIH0KK30KK3ZvaWQgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VQYXJzZXI6OkNsZWFyKCkKK3sKKyAgICB0aGlzLT5Jbml0KCk7CisgICAgcmV0dXJuOworfQorRlhfQk9PTCBJUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlcjo6SXNUYWdnZWRQYWdlKENQREZfUGFnZU9iamVjdHMqcFBhZ2UpCit7CisgICAgaWYoIXBQYWdlKSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgQ1BERl9TdHJ1Y3RUcmVlKiBwUGFnZVRyZWUgPSBDUERGX1N0cnVjdFRyZWU6OkxvYWRQYWdlKHBQYWdlLT5tX3BEb2N1bWVudCwgcFBhZ2UtPm1fcEZvcm1EaWN0KTsKKyAgICBpZihwUGFnZVRyZWUpIHsKKyAgICAgICAgaW50IGNvdW50ID0gcFBhZ2VUcmVlLT5Db3VudFRvcEVsZW1lbnRzKCk7CisgICAgICAgIGlmKGNvdW50KSB7CisgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIENQREZfU3RydWN0RWxlbWVudCogcEVsbSA9IHBQYWdlVHJlZS0+R2V0VG9wRWxlbWVudChpKTsKKyAgICAgICAgICAgICAgICBpZihwRWxtKSB7CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwUGFnZVRyZWU7CisgICAgICAgICAgICAgICAgICAgIHBQYWdlVHJlZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkZWxldGUgcFBhZ2VUcmVlOworICAgICAgICBwUGFnZVRyZWUgPSBOVUxMOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIHJldHVybiBGQUxTRTsKK30KK3ZvaWQgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VQYXJzZXI6OlN0YXJ0KElQREZfUmVmbG93ZWRQYWdlKiBwUmVmbG93UGFnZSwgQ1BERl9QYWdlKiBwUGFnZSwgRlhfRkxPQVQgdG9wSW5kZW50LCBGWF9GTE9BVCBmV2lkdGgsIEZYX0ZMT0FUIGZIZWlnaHQsIElGWF9QYXVzZSogcFBhdXNlLCBpbnQgZmxhZ3MpCit7CisgICAgaWYgKE5VTEwgPT0gcFJlZmxvd1BhZ2UpIHsKKyAgICAgICAgbV9TdGF0dXMgPSBGYWlsZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9mbGFncyA9IGZsYWdzOworICAgIG1fcFJlZmxvd1BhZ2UgPSAoQ1BERl9SZWZsb3dlZFBhZ2UqKXBSZWZsb3dQYWdlOworICAgIG1fcFJlZmxvd1BhZ2UtPm1fcFBERlBhZ2UgPSBwUGFnZTsKKyAgICBtX3BSZWZsb3dQYWdlLT5SZWxlYXNlUGFnZU9ianNNZW1iZXJTaGlwKCk7CisgICAgbV9wUERGUGFnZSA9IHBQYWdlOworICAgIG1fVG9wSW5kZW50ID0gdG9wSW5kZW50OworICAgIG1fcFBhdXNlID0gcFBhdXNlOworICAgIG1fZlNjcmVlbkhlaWdodCA9IGZIZWlnaHQ7CisgICAgbV9SZWZsb3dlZFdpZHRoID0gZldpZHRoOworICAgIG1fcFByb3ZpZGVyID0gSVBERl9MYXlvdXRQcm92aWRlcjo6Q3JlYXRlX0xheW91dFByb3ZpZGVyX1RhZ2dlZFBERihtX3BQREZQYWdlKTsKKyAgICBMYXlvdXRTdGF0dXMgc3RhdHVzID0gbV9wUHJvdmlkZXItPlN0YXJ0TG9hZChwUGF1c2UpOworICAgIGlmKHN0YXR1cyA9PSBMYXlvdXRFcnJvcikgeworICAgICAgICBkZWxldGUgbV9wUHJvdmlkZXI7CisgICAgICAgIG1fcFByb3ZpZGVyID0gSVBERl9MYXlvdXRQcm92aWRlcjo6Q3JlYXRlX0xheW91dFByb3ZpZGVyX0F1dG9SZWZsb3cobV9wUERGUGFnZSwgbV9mbGFncyAmIFJGX1BBUlNFUl9SRUFERVJPUkRFUik7CisgICAgICAgIGlmIChOVUxMID09IG1fcFByb3ZpZGVyKSB7CisgICAgICAgICAgICBtX1N0YXR1cyA9IEZhaWxlZDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgPSBtX3BQcm92aWRlci0+U3RhcnRMb2FkKHBQYXVzZSk7CisgICAgfQorICAgIGlmKHN0YXR1cyA9PSBMYXlvdXRFcnJvcikgeworICAgICAgICBkZWxldGUgbV9wUHJvdmlkZXI7CisgICAgICAgIG1fcFByb3ZpZGVyID0gTlVMTDsKKyAgICAgICAgbV9TdGF0dXMgPSBGYWlsZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYoc3RhdHVzID09IExheW91dFRvQmVDb250aW51ZWQpIHsKKyAgICAgICAgbV9TdGF0dXMgPSBUb0JlQ29udGludWVkOworICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IExheW91dEZpbmlzaGVkKSB7CisgICAgICAgIG1fcFJlZmxvd0VuZ2luZSA9IElQREZfTGF5b3V0UHJvY2Vzc29yOjpDcmVhdGVfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdyh0b3BJbmRlbnQsIGZXaWR0aCwgZkhlaWdodCwgcFJlZmxvd1BhZ2UsIG1fZmxhZ3MsIG1fUGFyc2VTdHlsZS5tX0xpbmVTcGFjZSk7CisgICAgICAgIGlmKE5VTEwgPT0gbV9wUmVmbG93RW5naW5lKSB7CisgICAgICAgICAgICBkZWxldGUgbV9wUHJvdmlkZXI7CisgICAgICAgICAgICBtX3BQcm92aWRlciA9IE5VTEw7CisgICAgICAgICAgICBtX1N0YXR1cyA9IEZhaWxlZDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeDsKKyAgICAgICAgcFBhZ2UtPkdldERpc3BsYXlNYXRyaXgobWF0cml4LCAwLCAwLCAoaW50KShwUGFnZS0+R2V0UGFnZVdpZHRoKCkpLCAoaW50KShwUGFnZS0+R2V0UGFnZUhlaWdodCgpKSwgMCk7CisgICAgICAgIENGWF9BZmZpbmVNYXRyaXggbWF0cml4MSA9IHBQYWdlLT5HZXRQYWdlTWF0cml4KCk7CisgICAgICAgIGlmKChzdGF0dXMgPSBtX3BSZWZsb3dFbmdpbmUtPlN0YXJ0UHJvY2VzcyhtX3BQcm92aWRlci0+R2V0Um9vdCgpLCBwUGF1c2UsICZtYXRyaXgpKSAhPSBMYXlvdXRUb0JlQ29udGludWVkKSB7CisgICAgICAgICAgICBkZWxldGUgbV9wUmVmbG93RW5naW5lOworICAgICAgICAgICAgbV9wUmVmbG93RW5naW5lID0gTlVMTDsKKyAgICAgICAgICAgIG1fU3RhdHVzID0gRG9uZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fU3RhdHVzID0gVG9CZUNvbnRpbnVlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZihzdGF0dXMgIT0gTGF5b3V0VG9CZUNvbnRpbnVlZCkgeworICAgICAgICBkZWxldGUgbV9wUHJvdmlkZXI7CisgICAgICAgIG1fcFByb3ZpZGVyID0gTlVMTDsKKyAgICB9CisgICAgaWYobV9Ub3BJbmRlbnQgJiYgbV9TdGF0dXMgPT0gRG9uZSkgeworICAgICAgICBtX3BSZWZsb3dQYWdlLT5tX1BhZ2VIZWlnaHQgLT0gbV9Ub3BJbmRlbnQ7CisgICAgfQorICAgIHJldHVybjsKK30KK0NQREZfUHJvZ3Jlc3NpdmVSZWZsb3dQYWdlUmVuZGVyOjp+Q1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXIoKQoreworICAgIGlmKG1fcERpc3BsYXlNYXRyaXgpIHsKKyAgICAgICAgZGVsZXRlIG1fcERpc3BsYXlNYXRyaXg7CisgICAgfQorICAgIG1fcERpc3BsYXlNYXRyaXggPSBOVUxMOworfQorQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXI6OkNQREZfUHJvZ3Jlc3NpdmVSZWZsb3dQYWdlUmVuZGVyKCkKK3sKKyAgICBtX1N0YXR1cyA9IFJlYWR5OworICAgIG1fcFJlZmxvd1BhZ2UgPSBOVUxMOworICAgIG1fcERpc3BsYXlNYXRyaXggPSBOVUxMOworICAgIG1fQ3Vyck51bSA9IDA7CisgICAgbV9wRm9udEVuY29kaW5nID0gTlVMTDsKKyAgICBtX0Rpc3BsYXlDb2xvciA9IC0xOworfQorc3RhdGljIEZYX0ZMT0FUIF9DSURUcmFuc2Zvcm1Ub0Zsb2F0KEZYX0JZVEUgY2gpCit7CisgICAgaWYgKGNoIDwgMTI4KSB7CisgICAgICAgIHJldHVybiBjaCAqIDEuMGYgLyAxMjc7CisgICAgfQorICAgIHJldHVybiAoLTI1NSArIGNoKSAqIDEuMGYgLyAxMjc7Cit9CitpbnQJQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXI6OkdldFBvc2l0aW9uKCkKK3sKKyAgICBpZihtX0N1cnJOdW0gPT0gMCB8fCBOVUxMID09IG1fcFJlZmxvd1BhZ2UpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGludCBzaXplID0gbV9wUmVmbG93UGFnZS0+bV9wUmVmbG93ZWQtPkdldFNpemUoKTsKKyAgICBpZihzaXplID09IDAgfHwgbV9DdXJyTnVtID49IHNpemUpIHsKKyAgICAgICAgcmV0dXJuIDEwMDsKKyAgICB9CisgICAgcmV0dXJuIChpbnQpKG1fQ3Vyck51bSAqIDEwMCAvIHNpemUpOworfQordm9pZCBDUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVJlbmRlcjo6RGlzcGxheShJRlhfUGF1c2UqIHBQYXVzZSkKK3sKKyAgICBpZiAoTlVMTCA9PSBtX3BSZWZsb3dQYWdlKSB7CisgICAgICAgIG1fU3RhdHVzID0gRG9uZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBGWF9SRUNUIGNsaXBCb3ggPSBtX3BGWERldmljZS0+R2V0Q2xpcEJveCgpOworICAgIGludCBzaXplID0gbV9wUmVmbG93UGFnZS0+bV9wUmVmbG93ZWQtPkdldFNpemUoKTsKKyAgICBpZiAoc2l6ZSA8IDEgfHwgTlVMTCA9PSBtX3BEaXNwbGF5TWF0cml4KSB7CisgICAgICAgIG1fU3RhdHVzID0gRG9uZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IoaW50IGkgPSBtX0N1cnJOdW07IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgQ1JGX0RhdGEqIHBEYXRhID0gKCptX3BSZWZsb3dQYWdlLT5tX3BSZWZsb3dlZClbaV07CisgICAgICAgIGlmKCFwRGF0YSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgQ0ZYX0Zsb2F0UmVjdCByZWN0IChwRGF0YS0+bV9Qb3NYLCBwRGF0YS0+bV9Qb3NZICsgcERhdGEtPm1fSGVpZ2h0LCBwRGF0YS0+bV9Qb3NYICsgcERhdGEtPm1fV2lkdGgsIHBEYXRhLT5tX1Bvc1kpOworICAgICAgICBtX3BEaXNwbGF5TWF0cml4LT5UcmFuc2Zvcm1SZWN0KHJlY3QpOworICAgICAgICBpZihyZWN0LmxlZnQgPiBjbGlwQm94LnJpZ2h0IHx8IHJlY3QucmlnaHQgPCBjbGlwQm94LmxlZnQgfHwgcmVjdC5ib3R0b20gPiBjbGlwQm94LmJvdHRvbSB8fCByZWN0LnRvcCA8IGNsaXBCb3gudG9wKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZihwRGF0YS0+R2V0VHlwZSgpID09IENSRl9EYXRhOjpUZXh0KSB7CisgICAgICAgICAgICBDUkZfQ2hhckRhdGEqIHBDaGFyRGF0YSA9IChDUkZfQ2hhckRhdGEqKXBEYXRhOworICAgICAgICAgICAgQ1BERl9Gb250KiBwUERGRm9udCA9IHBDaGFyRGF0YS0+bV9wQ2hhclN0YXRlLT5tX3BGb250OworICAgICAgICAgICAgaWYocFBERkZvbnQtPkdldEZvbnRUeXBlKCkgPT0gUERGRk9OVF9UWVBFMykgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRlhfRkxPQVQgeCA9IHBEYXRhLT5tX1Bvc1gsIHkgPSBwRGF0YS0+bV9Qb3NZIC0gcENoYXJEYXRhLT5tX3BDaGFyU3RhdGUtPm1fZkRlc2NlbnQ7CisgICAgICAgICAgICBGWFRFWFRfQ0hBUlBPUyBjaGFycG9zIDsKKyAgICAgICAgICAgIGNoYXJwb3MubV9HbHlwaEluZGV4ID0gcFBERkZvbnQtPkdseXBoRnJvbUNoYXJDb2RlKHBDaGFyRGF0YS0+bV9DaGFyQ29kZSk7CisgICAgICAgICAgICBjaGFycG9zLm1fRm9udENoYXJXaWR0aCA9IHBQREZGb250LT5tX0ZvbnQuR2V0R2x5cGhXaWR0aChjaGFycG9zLm1fR2x5cGhJbmRleCk7CisgICAgICAgICAgICBjaGFycG9zLm1fT3JpZ2luWCAgICAgICA9IHg7CisgICAgICAgICAgICBjaGFycG9zLm1fT3JpZ2luWSAgICAgICA9IHk7CisgICAgICAgICAgICBGWF9GTE9BVCBjaGFyVyA9IHBEYXRhLT5tX1dpZHRoICogMTAwMCAvIHBEYXRhLT5tX0hlaWdodDsKKyAgICAgICAgICAgIGlmKGNoYXJXICE9IGNoYXJwb3MubV9Gb250Q2hhcldpZHRoKSB7CisgICAgICAgICAgICAgICAgY2hhcnBvcy5tX2JHbHlwaEFkanVzdCAgPSBUUlVFOworICAgICAgICAgICAgICAgIGNoYXJwb3MubV9BZGp1c3RNYXRyaXhbMF0gPSBjaGFyVyAvIGNoYXJwb3MubV9Gb250Q2hhcldpZHRoOworICAgICAgICAgICAgICAgIGNoYXJwb3MubV9BZGp1c3RNYXRyaXhbMV0gPSAwOworICAgICAgICAgICAgICAgIGNoYXJwb3MubV9BZGp1c3RNYXRyaXhbMl0gPSAwOworICAgICAgICAgICAgICAgIGNoYXJwb3MubV9BZGp1c3RNYXRyaXhbM10gPSAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjaGFycG9zLm1fYkdseXBoQWRqdXN0ICA9IEZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRlhfQk9PTCBiUmV0ID0gRkFMU0U7CisgICAgICAgICAgICBpZihtX0Rpc3BsYXlDb2xvciA9PSAtMSkKKyAgICAgICAgICAgICAgICBiUmV0ID0gbV9wRlhEZXZpY2UtPkRyYXdOb3JtYWxUZXh0KDEsICZjaGFycG9zLCAmKHBQREZGb250LT5tX0ZvbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcENoYXJEYXRhLT5tX3BDaGFyU3RhdGUtPm1fZkZvbnRTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wRGlzcGxheU1hdHJpeCwgcENoYXJEYXRhLT5tX3BDaGFyU3RhdGUtPm1fQ29sb3IgKyAweGZmMDAwMDAwLCBGWFRFWFRfQ0xFQVJUWVBFKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBiUmV0ID0gbV9wRlhEZXZpY2UtPkRyYXdOb3JtYWxUZXh0KDEsICZjaGFycG9zLCAmKHBQREZGb250LT5tX0ZvbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcENoYXJEYXRhLT5tX3BDaGFyU3RhdGUtPm1fZkZvbnRTaXplLCBtX3BEaXNwbGF5TWF0cml4LCBtX0Rpc3BsYXlDb2xvciwgRlhURVhUX0NMRUFSVFlQRSk7CisgICAgICAgIH0gZWxzZSBpZihwRGF0YS0+R2V0VHlwZSgpID09IENSRl9EYXRhOjpJbWFnZSkgeworICAgICAgICAgICAgQ1JGX0ltYWdlRGF0YSogcEltYWdlRGF0YSA9IChDUkZfSW1hZ2VEYXRhKilwRGF0YTsKKyAgICAgICAgICAgIGlmKCFwSW1hZ2VEYXRhLT5tX3BCaXRtYXApIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBsZWZ0ID0gMCwgdG9wID0gMDsKKyAgICAgICAgICAgIENGWF9ESUJpdG1hcCogcERpQm1wID0gTlVMTDsKKyAgICAgICAgICAgIENGWF9ESUJTb3VyY2UqIHBEaXNwU291cmNlID0gcEltYWdlRGF0YS0+bV9wQml0bWFwOworICAgICAgICAgICAgaWYocEltYWdlRGF0YS0+bV9NYXRyaXguZCA8IDApIHsKKyAgICAgICAgICAgICAgICBDRlhfQWZmaW5lTWF0cml4IG1hdHJpeChwSW1hZ2VEYXRhLT5tX01hdHJpeC5hLCAwLCAwLCAtcEltYWdlRGF0YS0+bV9NYXRyaXguZCwgMCwgMCk7CisgICAgICAgICAgICAgICAgaW50IGxlZnQsIHRvcDsKKyAgICAgICAgICAgICAgICBwRGlCbXAgPSBwSW1hZ2VEYXRhLT5tX3BCaXRtYXAtPlRyYW5zZm9ybVRvKCZtYXRyaXgsIGxlZnQsIHRvcCk7CisgICAgICAgICAgICAgICAgcERpc3BTb3VyY2UgPSBwRGlCbXA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTlVMTCA9PSBwRGlzcFNvdXJjZSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBEaXNwU291cmNlLT5HZXRGb3JtYXQoKSA9PSBGWERJQl8xYnBwTWFzayB8fCBwRGlzcFNvdXJjZS0+R2V0Rm9ybWF0KCkgPT0gRlhESUJfOGJwcE1hc2spIHsKKyAgICAgICAgICAgICAgICBtX3BGWERldmljZS0+U3RyZXRjaEJpdE1hc2socERpc3BTb3VyY2UsIChpbnQpKHJlY3QubGVmdCArIDAuNSksIChpbnQpKHJlY3QuYm90dG9tICsgMC41KSwgKGludCkocmVjdC5XaWR0aCgpICsgMC41KSwgKGludCkocmVjdC5IZWlnaHQoKSArIDAuNSksIDB4ZmYwMDAwMDApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX3BGWERldmljZS0+U3RyZXRjaERJQml0cyhwRGlzcFNvdXJjZSwgKGludCkocmVjdC5sZWZ0ICsgMC41KSwgKGludCkocmVjdC5ib3R0b20gKyAwLjUpLCAoaW50KShyZWN0LldpZHRoKCkgKyAwLjUpLCAoaW50KShyZWN0LkhlaWdodCgpICsgMC41KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZihtX3BGWERldmljZS0+R2V0Qml0bWFwKCkgJiYgbV9wRlhEZXZpY2UtPkdldEJpdG1hcCgpLT5HZXRGb3JtYXQoKSA9PSBGWERJQl84YnBwUmdiICYmCisgICAgICAgICAgICAgICAgICAgIG1fcEZYRGV2aWNlLT5HZXRCaXRtYXAoKS0+R2V0UGFsZXR0ZSgpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpbnQgblBhbGV0dGUgPSAwOworICAgICAgICAgICAgICAgIHN3aXRjaChtX0RpdGhlckJpdHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgblBhbGV0dGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5QYWxldHRlID0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICBuUGFsZXR0ZSA9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgblBhbGV0dGUgPSA4OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5QYWxldHRlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAgICAgICAgICAgblBhbGV0dGUgPSAzMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgICAgICBuUGFsZXR0ZSA9IDY0OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5QYWxldHRlID0gMTI4OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBuUGFsZXR0ZSA9IDI1NjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZihuUGFsZXR0ZSA+PSAyKSB7CisgICAgICAgICAgICAgICAgICAgIEZYX0FSR0IgKiBwYWxldHRlID0gRlhfQWxsb2MoRlhfQVJHQiwgblBhbGV0dGUpOworICAgICAgICAgICAgICAgICAgICBuUGFsZXR0ZSAtLTsKKyAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZVswXSA9IDA7CisgICAgICAgICAgICAgICAgICAgIHBhbGV0dGVbblBhbGV0dGVdID0gMjU1OworICAgICAgICAgICAgICAgICAgICBGWF9GTE9BVCBEaXRoZXIgPSAoRlhfRkxPQVQpMjU1IC8gKG5QYWxldHRlKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yKGludCBpID0gMTsgaSA8IG5QYWxldHRlOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGVbaV0gPSAoRlhfQVJHQikoRGl0aGVyICogaSArIDAuNSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgRlhfUkVDVCB0bXBSZWN0ID0gcmVjdC5HZXRPdXR0ZXJSZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIG1fcEZYRGV2aWNlLT5HZXRCaXRtYXAoKS0+RGl0aGVyRlMocGFsZXR0ZSwgblBhbGV0dGUgKyAxLCAmdG1wUmVjdCk7CisgICAgICAgICAgICAgICAgICAgIEZYX0ZyZWUgKHBhbGV0dGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKHBEaUJtcCkgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBwRGlCbXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZihwRGF0YS0+R2V0VHlwZSgpID09IENSRl9EYXRhOjpQYXRoKSB7CisgICAgICAgIH0KKyAgICAgICAgaWYoIShpICUgMTApKSB7CisgICAgICAgICAgICBpZihwUGF1c2UgJiYgcFBhdXNlLT5OZWVkVG9QYXVzZU5vdygpKSB7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIG1fQ3Vyck51bSA9IGk7CisgICAgICAgICAgICAgICAgbV9TdGF0dXMgPSBUb0JlQ29udGludWVkOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBtX0N1cnJOdW0gPSBzaXplOworICAgIG1fU3RhdHVzID0gRG9uZTsKK30KK3ZvaWQgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXI6OlN0YXJ0KElQREZfUmVmbG93ZWRQYWdlKiBwUmVmbG93UGFnZSwgQ0ZYX1JlbmRlckRldmljZSogcERldmljZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgSUZYX1BhdXNlKiBwUGF1c2UsIGludCBEaXRoZXJCaXRzKQoreworICAgIGlmKCFwUmVmbG93UGFnZSB8fCAhcERldmljZSB8fCAhcE1hdHJpeCkgeworICAgICAgICBtX1N0YXR1cyA9IEZhaWxlZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX0RpdGhlckJpdHMgPSBEaXRoZXJCaXRzOworICAgIG1fU3RhdHVzID0gUmVhZHk7CisgICAgbV9DdXJyTnVtID0gMDsKKyAgICBtX3BSZWZsb3dQYWdlID0gKENQREZfUmVmbG93ZWRQYWdlKilwUmVmbG93UGFnZTsKKyAgICBtX3BGWERldmljZSA9IHBEZXZpY2U7CisgICAgaWYoTlVMTCA9PSBtX3BEaXNwbGF5TWF0cml4KSB7CisgICAgICAgIG1fcERpc3BsYXlNYXRyaXggPSBGWF9ORVcgQ0ZYX0FmZmluZU1hdHJpeDsKKyAgICB9CisgICAgaWYgKG1fcERpc3BsYXlNYXRyaXgpIHsKKyAgICAgICAgbV9wRGlzcGxheU1hdHJpeC0+Q29weSgqcE1hdHJpeCk7CisgICAgfQorICAgIG1fU3RhdHVzID0gVG9CZUNvbnRpbnVlZDsKKyAgICBEaXNwbGF5KHBQYXVzZSk7Cit9Cit2b2lkIENQREZfUHJvZ3Jlc3NpdmVSZWZsb3dQYWdlUmVuZGVyOjpDb250aW51ZShJRlhfUGF1c2UqIHBQYXVzZSkKK3sKKyAgICBEaXNwbGF5KHBQYXVzZSk7Cit9Cit2b2lkIENQREZfUHJvZ3Jlc3NpdmVSZWZsb3dQYWdlUmVuZGVyOjpTZXREaXNwbGF5Q29sb3IoRlhfQ09MT1JSRUYgY29sb3IpCit7CisgICAgbV9EaXNwbGF5Q29sb3IgPSBjb2xvcjsKK30KK3ZvaWQgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXI6OkNsZWFyKCkKK3sKKyAgICBpZiAobV9wRGlzcGxheU1hdHJpeCkgeworICAgICAgICBkZWxldGUgbV9wRGlzcGxheU1hdHJpeDsKKyAgICB9CisgICAgbV9wRGlzcGxheU1hdHJpeCA9IE5VTEw7CisgICAgbV9wUmVmbG93UGFnZSA9IE5VTEw7CisgICAgbV9wRlhEZXZpY2UgPSBOVUxMOworICAgIG1fQ3Vyck51bSA9IDA7CisgICAgbV9TdGF0dXMgPSBSZWFkeTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvc3JjL3JlZmxvdy9yZWZsb3dlZHBhZ2UuaCBiL2NvcmUvc3JjL3JlZmxvdy9yZWZsb3dlZHBhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzY4MzQxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvcmVmbG93L3JlZmxvd2VkcGFnZS5oCkBAIC0wLDAgKzEsMzcyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9SRUZMT1dFRF9QQUdFX0gKKyNkZWZpbmUgX1JFRkxPV0VEX1BBR0VfSAorI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvcmVmbG93L3JlZmxvd2VuZ2luZS5oIgorI2RlZmluZSBHRVRfU0lHTkVEKGEpICggKGEpPjAgPyBhL2EgOiAoYT09MCA/IDAgOiAtYS9hKSApCitjbGFzcyBDUkZfRGF0YTsKK2NsYXNzIENSRl9MaW5lRGF0YTsKK2NsYXNzIENSRl9DaGFyRGF0YTsKK2NsYXNzIENSRl9QYXRoRGF0YTsKK2NsYXNzIENSRl9JbWFnZURhdGE7CitjbGFzcyBDUkZfVGFibGU7CitjbGFzcyBDUkZfQXR0ck9wZXJhdGlvbjsKK2NsYXNzIENSRl9PcGVyYXRpb25EYXRlOworY2xhc3MgQ1BERl9SZWZsb3dlZFBhZ2U7CitjbGFzcyBDUERGX1JlY3Q7CitjbGFzcyBDRlhfT2JqZWN0OwordHlwZWRlZiBDRlhfU2VnbWVudGVkQXJyYXk8Q1JGX0RhdGEqPiBDUkZfRGF0YVB0ckFycmF5OworY2xhc3MgQ1JGX0NoYXJTdGF0ZTsKK3R5cGVkZWYgQ0ZYX1NlZ21lbnRlZEFycmF5PENSRl9DaGFyU3RhdGU+IENSRl9DaGFyU3RhdGVBcnJheTsKKyNkZWZpbmUgU1NUX0dFCQkxCisjZGVmaW5lIFNTVF9CTFNFCTIKKyNkZWZpbmUgU1NUX0lMU0UJMworI2RlZmluZSBTU1RfSUUJCTQKK2NsYXNzIENQREZfTGF5b3V0UHJvY2Vzc29yX1JlZmxvdyA6IHB1YmxpYyBJUERGX0xheW91dFByb2Nlc3NvciwgcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICBDUERGX0xheW91dFByb2Nlc3Nvcl9SZWZsb3coKTsKKyAgICB+Q1BERl9MYXlvdXRQcm9jZXNzb3JfUmVmbG93KCk7CisgICAgdm9pZCBJbml0KEZYX0ZMT0FUIFRvcEluZGVudCwgRlhfRkxPQVQgZldpZHRoLCBGWF9GTE9BVCBmSGVpZ2h0LCBDUERGX1JlZmxvd2VkUGFnZSogcFJlZmxvd2VkUGFnZSwgaW50IGZsYWdzLCBGWF9GTE9BVCBsaW5lU3BhY2UpOworCisgICAgTGF5b3V0U3RhdHVzCVN0YXJ0UHJvY2VzcyhJUERGX0xheW91dEVsZW1lbnQqIHBFbGVtZW50LCBJRlhfUGF1c2UqIHBQYXVzZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcFBERk1hdHJpeCA9IE5VTEwpOworICAgIExheW91dFN0YXR1cwlDb250aW51ZSgpOworICAgIGludAkJCQlHZXRQb3NpdGlvbigpOworcHJvdGVjdGVkOgorICAgIHZvaWQJRml0UGFnZU1vZGUoKTsKKyAgICB2b2lkCVByb2Nlc3NFbGVtZW50KElQREZfTGF5b3V0RWxlbWVudCogcEVsZW1lbnQsIEZYX0ZMT0FUIHJlZmxvd1dpZHRoKTsKKyAgICBGWF9GTE9BVCBHZXRFbG1XaWR0aChJUERGX0xheW91dEVsZW1lbnQqIHBFbGVtZW50KTsKKyAgICBDRlhfRmxvYXRSZWN0IEdldEVsbUJCb3goSVBERl9MYXlvdXRFbGVtZW50KiBwRWxlbWVudCk7CisgICAgdm9pZAlQcm9jZXNzVGFibGUoRlhfRkxPQVQgZHgpOworICAgIHZvaWQJUHJvY2Vzc09ianMoSVBERl9MYXlvdXRFbGVtZW50KiBwRWxlbWVudCwgRlhfRkxPQVQgcmVmbG93V2lkdGgpOworICAgIHZvaWQJUHJvY2Vzc09iamVjdChDUERGX1BhZ2VPYmplY3QqIHBPYmosIEZYX0ZMT0FUIHJlZmxvd1dpZHRoLCBDRlhfQWZmaW5lTWF0cml4IG9iak1hdHJpeCk7CisgICAgdm9pZAlQcm9jZXNzVGV4dE9iamVjdChDUERGX1RleHRPYmplY3QgKnBPYmosIEZYX0ZMT0FUIHJlZmxvd1dpZHRoLCBDRlhfQWZmaW5lTWF0cml4IG9iak1hdHJpeCk7CisgICAgdm9pZAlQcm9jZXNzUGF0aE9iamVjdChDUERGX1BhdGhPYmplY3QgKnBPYmosIEZYX0ZMT0FUIHJlZmxvd1dpZHRoKTsKKyAgICB2b2lkCVByb2Nlc3NVbml0YXJ5T2JqcyhDUERGX1BhZ2VPYmplY3RzICpwT2JqcywgRlhfRkxPQVQgcmVmbG93V2lkdGgsIENGWF9BZmZpbmVNYXRyaXggb2JqTWF0cml4KTsKKyAgICBGWF9JTlQzMiBMb2dpY1ByZU9iaihDUERGX1RleHRPYmplY3QqIHBPYmopOworICAgIGludCBQcm9jZXNzSW5zZXJ0T2JqZWN0KENQREZfVGV4dE9iamVjdCogcE9iaiwgQ0ZYX0FmZmluZU1hdHJpeCBmb3JtTWF0cml4KTsKKyAgICBGWF9XQ0hBUiBHZXRQcmVDaGFyKCk7CisgICAgRlhfQk9PTCBJc1NhbWVUZXh0T2JqZWN0KENQREZfVGV4dE9iamVjdCogcFRleHRPYmoxLCBDUERGX1RleHRPYmplY3QqIHBUZXh0T2JqMik7CisgICAgaW50IEdldENoYXJXaWR0aChGWF9EV09SRCBjaGFyQ29kZSwgQ1BERl9Gb250KiBwRm9udCkgY29uc3Q7CisgICAgRlhfQk9PTAlJc0NhbkJyZWFrQWZ0ZXIoRlhfRFdPUkQgdW5pY29kZSk7CisgICAgRlhfQk9PTAlJc0NhbkJyZWFrQmVmb3JlKEZYX0RXT1JEIHVuaWNvZGUpOworICAgIEZYX0lOVDMyIEdldEVsZW1lbnRUeXBlcyhMYXlvdXRUeXBlIGxheW91dFR5cGUpOworICAgIHZvaWQJCQkJQ3JlYXRlUkZEYXRhKENQREZfUGFnZU9iamVjdCogcE9iaiwgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCA9IE5VTEwpOworICAgIENSRl9DaGFyU3RhdGUqCQlHZXRDaGFyU3RhdGUoQ1BERl9UZXh0T2JqZWN0KiBwT2JqLCBDUERGX0ZvbnQqIHBGb250LCBGWF9GTE9BVCBmSGVpZ2h0LCBGWF9BUkdCIGNvbG9yKTsKKyAgICBGWF9GTE9BVAkJQ29udmVyV2lkdGgoRlhfRkxPQVQgd2lkdGgpOworICAgIHZvaWQJQWRkRGF0YTJDdXJyTGluZShDUkZfRGF0YSogcERhdGEpOworICAgIHZvaWQJQWRkVGVtcDJDdXJyTGluZShpbnQgYmVnaW4sIGludCBjb3VudCApOworICAgIHZvaWQJVHJhbnNmb3JtKGNvbnN0IENGWF9BZmZpbmVNYXRyaXgqIHBNYXRyaXgsIENSRl9EYXRhKiBwRGF0YSk7CisgICAgdm9pZAlUcmFuc2Zvcm0oY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcE1hdHJpeCwgQ1JGX0RhdGFQdHJBcnJheSogcERhdGFBcnJheSwgaW50IGJlZ2luUG9zLCBpbnQgY291bnQgPSAwKTsKKyAgICBGWF9GTE9BVCBHZXREYXRhc1dpZHRoKCBpbnQgYmVnaW5Qb3MsIGludCBlbmRwb3MpOworICAgIHZvaWQJVXBkYXRlQ3VyckxpbmUoKTsKKyAgICBGWF9CT09MCUZpbmlzaGVkQ3VyckxpbmUoKTsKKyAgICBpbnQgbV9mbGFnczsKKyAgICBDRlhfQWZmaW5lTWF0cml4IG1fUERGTWF0cml4OworICAgIExheW91dFN0YXR1cwltX1N0YXR1czsKKyAgICBDUERGX1RleHRPYmplY3QqIG1fcFByZU9iajsKKyAgICBDRlhfQWZmaW5lTWF0cml4IG1fcGVyTWF0cml4OworICAgIElQREZfTGF5b3V0RWxlbWVudCoJbV9wTGF5b3V0RWxlbWVudDsKKyAgICBJUERGX0xheW91dEVsZW1lbnQqIG1fcFJvb3RFbGVtZW50OworICAgIEZYX0ZMT0FUCQltX0N1cnJSZWZXaWR0aDsKKyAgICBJRlhfUGF1c2UqCQltX3BQYXVzZTsKKyAgICBMYXlvdXRFbnVtCQltX0N1cnJXcml0aW5nTW9kZTsKKyAgICBDUERGX1JlZmxvd2VkUGFnZSoJbV9wUmVmbG93ZWRQYWdlOworICAgIEZYX0ZMT0FUCQltX2ZSZWZXaWR0aDsKKyAgICBGWF9GTE9BVAkJbV9Ub3BJbmRlbnQ7CisgICAgRlhfRkxPQVQJCW1fZkxpbmVTcGFjZTsKKyAgICBGWF9GTE9BVAkJbV9mU2NyZWVuSGVpZ2h0OworICAgIEZYX0ZMT0FUCQltX2ZDdXJyTWF4V2lkdGg7CisgICAgRlhfRkxPQVQJCW1fZkN1cnJMaW5lV2lkdGg7CisgICAgRlhfRkxPQVQJCW1fZkN1cnJMaW5lSGVpZ2h0OworICAgIENSRl9EYXRhUHRyQXJyYXkqCW1fcEN1cnJMaW5lOworICAgIENSRl9EYXRhUHRyQXJyYXkqCW1fcFRlbXBMaW5lOworICAgIEZYX0JPT0wJCQltX2JJbGx1c3RyYXRpb247CisgICAgRlhfRkxPQVQJCW1fZkxpbmVIZWlnaHQ7CisgICAgTGF5b3V0RW51bQkJbV9UZXh0QWxpZ247CisgICAgRlhfRkxPQVQJCW1fU3RhcnRJbmRlbnQ7CisgICAgQ0ZYX0FycmF5VGVtcGxhdGU8Q1JGX1RhYmxlKj4gbV9UYWJsZUFycmF5OworICAgIGludAkJCQltX1BhdXNlUG9zaXRpb247Cit9Oworc3RydWN0IFJGX1RhYmxlQ2VsbCB7CisgICAgaW50CQkJbV9CZWdpblBvczsKKyAgICBpbnQJCQltX0VuZFBvczsKKyAgICBGWF9GTE9BVCBtX01heFdpZHRoOworICAgIEZYX0ZMT0FUIG1fUG9zWDsKKyAgICBGWF9GTE9BVAltX1Bvc1k7CisgICAgRlhfRkxPQVQJbV9DZWxsV2lkdGg7CisgICAgRlhfRkxPQVQgbV9DZWxsSGVpZ2h0OworICAgIGludAkJCW1fUm93U3BhbjsKKyAgICBpbnQJCQltX0NvbFNwYW47CisgICAgTGF5b3V0RW51bQltX0Jsb2NrQWxpZ247CisgICAgTGF5b3V0RW51bQltX0lubGluZUFsaWduOworfTsKK3R5cGVkZWYgQ0ZYX0FycmF5VGVtcGxhdGU8UkZfVGFibGVDZWxsKj4gQ1JGX1RhYmxlQ2VsbEFycmF5OworY2xhc3MgQ1JGX1RhYmxlIDogcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICBDUkZfVGFibGUoKQorICAgIHsKKyAgICAgICAgbV9UYWJsZVdpZHRoID0gMDsKKyAgICAgICAgbV9uQ29sID0gMDsKKyAgICB9CisgICAgQ1JGX1RhYmxlQ2VsbEFycmF5ICBtX3BDZWxsQXJyYXk7CisgICAgQ0ZYX1dvcmRBcnJheQkJbV9uQ2VsbDsKKyAgICBpbnQJCQkJCW1fbkNvbDsKKyAgICBGWF9GTE9BVAkJCW1fVGFibGVXaWR0aDsKKyAgICBGWF9GTE9BVAkJCW1fUmVmbG93UGFnZUhlaWdodDsKK307CitjbGFzcyBDUkZfQ2hhclN0YXRlIDogcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICBDUERGX0ZvbnQqCW1fcEZvbnQ7CisgICAgRlhfQVJHQgkJbV9Db2xvcjsKKyAgICBGWF9CT09MCQltX2JWZXJ0OworICAgIEZYX0ZMT0FUIG1fZkZvbnRTaXplOworICAgIEZYX0ZMT0FUIG1fZkFzY2VudDsKKyAgICBGWF9GTE9BVCBtX2ZEZXNjZW50OworCisgICAgQ1BERl9UZXh0T2JqZWN0KgltX3BUZXh0T2JqOworfTsKK2NsYXNzIENSRl9QYWdlSW5mbyA6IHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgQ1JGX1BhZ2VJbmZvKENQREZfUGFnZU9iamVjdCogcFBhZ2VPYmosIENSRl9QYWdlSW5mbyogcFBhcmVudCA9IE5VTEwpCisgICAgICAgIDogbV9wUGFnZU9iaihwUGFnZU9iaikgLCBtX3BQYXJlbnQocFBhcmVudCkKKyAgICB7CisgICAgfQorICAgIENQREZfUGFnZU9iamVjdCogR2V0UGFnZU9iaigpCisgICAgeworICAgICAgICByZXR1cm4gbV9wUGFnZU9iajsKKyAgICB9CisgICAgQ1BERl9EaWN0aW9uYXJ5KiBHZXRGb3JtRGljdCgpCisgICAgeworICAgICAgICBpZiAoTlVMTCA9PSBtX3BQYXJlbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIENQREZfUGFnZU9iamVjdCogcFBhcmVudE9iaiA9IG1fcFBhcmVudC0+R2V0UGFnZU9iaigpOworICAgICAgICBpZiAoTlVMTCA9PSBwUGFyZW50T2JqIHx8IFBERlBBR0VfRk9STSAhPSBwUGFyZW50T2JqLT5tX1R5cGUpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoKENQREZfRm9ybU9iamVjdCopcFBhcmVudE9iaiktPm1fcEZvcm0tPm1fcFJlc291cmNlczsKKyAgICB9Citwcm90ZWN0ZWQ6CisgICAgQ1BERl9QYWdlT2JqZWN0KgkJbV9wUGFnZU9iajsKKyAgICBDUkZfUGFnZUluZm8qCQkJbV9wUGFyZW50OworfTsKK2NsYXNzIENQREZfUmVmbG93ZWRQYWdlIDogcHVibGljIElQREZfUmVmbG93ZWRQYWdlLCBwdWJsaWMgQ0ZYX1ByaXZhdGVEYXRhLCBwdWJsaWMgQ0ZYX09iamVjdAoreworcHVibGljOgorCisgICAgQ1BERl9SZWZsb3dlZFBhZ2UoQ0ZYX0dyb3dPbmx5UG9vbCoJcE1lbW9yeVBvb2wpOworICAgIH5DUERGX1JlZmxvd2VkUGFnZSgpOworICAgIENGWF9Qcml2YXRlRGF0YSoJR2V0UHJpdmF0ZURhdGFDdHJsKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH07CisgICAgdm9pZAkJR2V0RGlzcGxheU1hdHJpeChDRlhfQWZmaW5lTWF0cml4JiBtYXRyaXgsIEZYX0lOVDMyIHhQb3MsIEZYX0lOVDMyIHlQb3MsIEZYX0lOVDMyIHhTaXplLCBGWF9JTlQzMiB5U2l6ZSwgRlhfSU5UMzIgaVJvdGF0ZSwgY29uc3QgQ0ZYX0FmZmluZU1hdHJpeCogcFBhZ2VNYXRyaXgpOworCisgICAgRlhfRkxPQVQJR2V0UGFnZUhlaWdodCgpIDsKKyAgICBGWF9GTE9BVAlHZXRQYWdlV2lkdGgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fUGFnZVdpZHRoOworICAgIH07CisgICAgdm9pZAkJRm9jdXNHZXREYXRhKGNvbnN0IENGWF9BZmZpbmVNYXRyaXggbWF0cml4LCBGWF9JTlQzMiB4LCBGWF9JTlQzMiB5LCBDRlhfQnl0ZVN0cmluZyYgc3RyKTsKKyAgICBGWF9CT09MCQlGb2N1c0dldFBvc2l0aW9uKGNvbnN0IENGWF9BZmZpbmVNYXRyaXggbWF0cml4LCBDRlhfQnl0ZVN0cmluZyBzdHIsIEZYX0lOVDMyJiB4LCBGWF9JTlQzMiYgeSk7CisgICAgQ1JGX0RhdGFQdHJBcnJheSoJbV9wUmVmbG93ZWQ7CisgICAgRlhfRkxPQVQJCQltX1BhZ2VXaWR0aDsKKyAgICBGWF9GTE9BVAkJCW1fUGFnZUhlaWdodDsKKyAgICBGWF9CT09MCQkJCW1fYldhaXRpbmc7CisgICAgQ1JGX0NoYXJTdGF0ZUFycmF5KgltX3BDaGFyU3RhdGU7CisgICAgQ0ZYX0dyb3dPbmx5UG9vbCoJbV9wTWVtb3J5UG9vbDsKKyAgICBGWF9CT09MCQkJCW1fYkNyZWF0ZU1lbW9yeVBvb2w7CisgICAgQ1BERl9QYWdlKgkJCW1fcFBERlBhZ2U7CisgICAgRlhfQk9PTAkJCQkJUmV0YWluUGFnZU9ianNNZW1iZXJTaGlwKCk7CisgICAgdm9pZAkJCQkJTWFya1BhZ2VPYmpNZW1iZXJTaGlwKENQREZfUGFnZU9iamVjdCogcE9iaiwgQ1JGX1BhZ2VJbmZvKiBwUGFyZW50KTsKKyAgICB2b2lkCQkJCQlSZWxlYXNlUGFnZU9ianNNZW1iZXJTaGlwKCk7CisgICAgQ1BERl9EaWN0aW9uYXJ5KgkJR2V0Rm9ybVJlc0RpY3QoQ1BERl9QYWdlT2JqZWN0KiBwT2JqKTsKKworICAgIENGWF9NYXBQdHJUb1B0cioJCW1fcFBhZ2VJbmZvczsKK307CitjbGFzcyBDUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlciA6IHB1YmxpYyBJUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlciwgcHVibGljIENGWF9PYmplY3QKK3sKK3B1YmxpYzoKKyAgICBDUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlcigpOworICAgIH5DUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlcigpIDsKKyAgICB2b2lkCQkJSW5pdCgpOworCisgICAgUGFyc2VTdGF0dXMJCUdldFN0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gbV9TdGF0dXM7CisgICAgfTsKKworICAgIHZvaWQJCQlTZXRQYXJzZXJTdHlsZShSRl9QYXJzZVN0eWxlIHN0eWxlKQorICAgIHsKKyAgICAgICAgbV9QYXJzZVN0eWxlID0gc3R5bGU7CisgICAgfTsKKyAgICB2b2lkCQkJU3RhcnQoSVBERl9SZWZsb3dlZFBhZ2UqIHBSZWZsb3dQYWdlLCBDUERGX1BhZ2UqIHBQYWdlLCBGWF9GTE9BVCBUb3BJbmRlbnQsIEZYX0ZMT0FUIGZXaWR0aCwgRlhfRkxPQVQgZkhlaWdodCwgSUZYX1BhdXNlKiBwUGF1c2UsIGludCBmbGFncyk7CisgICAgdm9pZAkJCUNvbnRpbnVlKElGWF9QYXVzZSogcFBhdXNlKTsKKyAgICBpbnQJCQkJR2V0UG9zaXRpb24oKSA7CisKKyAgICB2b2lkCQkJQ2xlYXIoKTsKKyAgICBQYXJzZVN0YXR1cwkJbV9TdGF0dXM7Citwcm90ZWN0ZWQ6CisgICAgUkZfUGFyc2VTdHlsZQkJbV9QYXJzZVN0eWxlOworICAgIENQREZfUGFnZSoJCQltX3BQREZQYWdlOworICAgIElGWF9QYXVzZSoJCQltX3BQYXVzZTsKKyAgICBDUERGX1JlZmxvd2VkUGFnZSoJbV9wUmVmbG93UGFnZTsKKyAgICBGWF9GTE9BVAkJCW1fVG9wSW5kZW50OworICAgIEZYX0ZMT0FUCQkJbV9SZWZsb3dlZFdpZHRoOworICAgIEZYX0ZMT0FUCQkJbV9mU2NyZWVuSGVpZ2h0OworICAgIElQREZfTGF5b3V0UHJvdmlkZXIqCW1fcFByb3ZpZGVyOworICAgIElQREZfTGF5b3V0UHJvY2Vzc29yKgltX3BSZWZsb3dFbmdpbmU7CisgICAgaW50CQkJCQltX25PYmpQcm9jZXNzZWQ7CisgICAgaW50IG1fZmxhZ3M7Cit9OworY2xhc3MgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXIgOiBwdWJsaWMgSVBERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXIsIHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXIoKTsKKyAgICB+Q1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXIoKSA7CisKKyAgICBSZW5kZXJTdGF0dXMJCQlHZXRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fU3RhdHVzOworICAgIH07CisKKworICAgIHZvaWQJCVNldERpc3BsYXlDb2xvcihGWF9DT0xPUlJFRiBjb2xvcik7CisgICAgdm9pZAkJU3RhcnQoSVBERl9SZWZsb3dlZFBhZ2UqIHBSZWZsb3dQYWdlLCBDRlhfUmVuZGVyRGV2aWNlKiBwRGV2aWNlLCBjb25zdCBDRlhfQWZmaW5lTWF0cml4KiBwTWF0cml4LCBJRlhfUGF1c2UqIHBQYXVzZSwgaW50IERpdGhlckJpdHMpOworICAgIHZvaWQJCUNvbnRpbnVlKElGWF9QYXVzZSogcFBhdXNlKTsKKyAgICBpbnQJCQlHZXRQb3NpdGlvbigpOworCisKKyAgICB2b2lkCQkJCUNsZWFyKCk7Citwcm90ZWN0ZWQ6CisgICAgdm9pZAkJCQlEaXNwbGF5KElGWF9QYXVzZSogcFBhdXNlKTsKKyAgICBSZW5kZXJTdGF0dXMgbV9TdGF0dXM7CisgICAgQ1BERl9SZWZsb3dlZFBhZ2UqCW1fcFJlZmxvd1BhZ2U7CisgICAgQ0ZYX0FmZmluZU1hdHJpeCoJbV9wRGlzcGxheU1hdHJpeDsKKyAgICBpbnQJCQkJCW1fQ3Vyck51bTsKKyAgICBJRlhfRm9udEVuY29kaW5nKgltX3BGb250RW5jb2Rpbmc7CisgICAgQ0ZYX1JlbmRlckRldmljZSoJbV9wRlhEZXZpY2U7CisgICAgaW50CQkJCQltX0RpdGhlckJpdHM7CisgICAgRlhfQ09MT1JSRUYJCQltX0Rpc3BsYXlDb2xvcjsKKyAgICB0eXBlZGVmIHN0cnVjdCBDUkZfVGV4dERhdGFBdHQgeworICAgICAgICBDUkZfVGV4dERhdGFBdHQoKQorICAgICAgICB7CisgICAgICAgICAgICBwRm9udCA9IE5VTEw7CisgICAgICAgICAgICBmRm9udFNpemUgPSAwLjBmOworICAgICAgICAgICAgQ29sb3IgPSAwOworICAgICAgICB9CisgICAgICAgIENSRl9UZXh0RGF0YUF0dChDUERGX0ZvbnQqIGZvbnQsIEZYX0ZMT0FUIGZvbnRTaXplLCBGWF9BUkdCIGNvbG9yKQorICAgICAgICB7CisgICAgICAgICAgICBwRm9udCA9IGZvbnQ7CisgICAgICAgICAgICBmRm9udFNpemUgPSBmb250U2l6ZTsKKyAgICAgICAgICAgIENvbG9yID0gY29sb3I7CisgICAgICAgIH0KKyAgICAgICAgQ1BERl9Gb250KiAgcEZvbnQ7CisgICAgICAgIEZYX0ZMT0FUICAgIGZGb250U2l6ZTsKKyAgICAgICAgRlhfQVJHQgkJQ29sb3I7CisgICAgfSBDUkZfVEVYVERBVEFBVFQ7CisgICAgaW5saW5lIGJvb2wgaXNUZXh0RGF0YUF0dFNhbWUoQ1JGX1RFWFREQVRBQVRUIGRhdGExLCBDUkZfVEVYVERBVEFBVFQgZGF0YTIpCisgICAgeworICAgICAgICBpZiAoZGF0YTEucEZvbnQgIT0gZGF0YTIucEZvbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGF0YTEuQ29sb3IgIT0gZGF0YTIuQ29sb3IpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZmFicyhkYXRhMS5mRm9udFNpemUgLSBkYXRhMi5mRm9udFNpemUpID4gMC4wZikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07Cit9OworI2RlZmluZSBUWVBFX1VOS05PVwkJMAorI2RlZmluZSBUWVBFX1RFWFQJCTEKKyNkZWZpbmUgVFlQRV9QQVRICQkyCisjZGVmaW5lIFRZUEVfSU1BR0UJCTMKKyNkZWZpbmUgVFlQRV9MSU5FCQk0CitjbGFzcyBDUkZfRGF0YSA6IHB1YmxpYyBDRlhfT2JqZWN0Cit7CitwdWJsaWM6CisgICAgdHlwZWRlZiBlbnVtIHtVbmtub3csIFRleHQsIEltYWdlLCBQYXRoLCBMaW5lLCBwYXJhZ3JhcGh9IFJGX0RhdGFUeXBlOworICAgIENSRl9EYXRhKCkKKyAgICB7CisgICAgICAgIG1fVHlwZSA9IFVua25vdzsKKyAgICAgICAgbV9XaWR0aCA9IDA7CisgICAgICAgIG1fUG9zWSA9IDA7CisgICAgICAgIG1fUG9zWCA9IDA7CisgICAgICAgIG1fSGVpZ2h0ID0gMDsKKyAgICB9CisgICAgUkZfRGF0YVR5cGUJR2V0VHlwZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9UeXBlOworICAgIH0KKyAgICB2aXJ0dWFsCQl+Q1JGX0RhdGEoKSB7fQorICAgIFJGX0RhdGFUeXBlIAltX1R5cGU7CisgICAgRlhfRkxPQVQJbV9Qb3NYOworICAgIEZYX0ZMT0FUCW1fUG9zWTsKKyAgICBGWF9GTE9BVAltX1dpZHRoOworICAgIEZYX0ZMT0FUCW1fSGVpZ2h0OworfTsKK2NsYXNzIENSRl9MaW5lRGF0YSA6IHB1YmxpYyBDUkZfRGF0YQoreworcHVibGljOgorICAgIENSRl9MaW5lRGF0YSgpCisgICAgeworICAgICAgICBtX1R5cGUgPSBMaW5lOworICAgIH0KK307CitjbGFzcyBDUkZfQ2hhckRhdGEgOiBwdWJsaWMgQ1JGX0RhdGEKK3sKK3B1YmxpYzoKKyAgICBDUkZfQ2hhckRhdGEoKQorICAgIHsKKyAgICAgICAgbV9UeXBlID0gVGV4dDsKKyAgICAgICAgbV9DaGFyQ29kZSA9IC0xOworICAgIH0KKyAgICBDUkZfQ2hhclN0YXRlKgltX3BDaGFyU3RhdGU7CisgICAgRlhfRFdPUkQJCW1fQ2hhckNvZGU7Cit9OworY2xhc3MgQ1JGX0ltYWdlRGF0YSA6IHB1YmxpYyBDUkZfRGF0YQoreworcHVibGljOgorICAgIENSRl9JbWFnZURhdGEoKQorICAgIHsKKyAgICAgICAgbV9UeXBlID0gSW1hZ2U7CisgICAgICAgIG1fcEJpdG1hcCA9IE5VTEw7CisgICAgfQorICAgIH5DUkZfSW1hZ2VEYXRhKCkKKyAgICB7CisgICAgICAgIGlmKG1fcEJpdG1hcCkgeworICAgICAgICAgICAgZGVsZXRlIG1fcEJpdG1hcDsKKyAgICAgICAgfQorICAgICAgICBtX3BCaXRtYXAgPSBOVUxMOworICAgIH0KKyAgICBDRlhfQWZmaW5lTWF0cml4IG1fTWF0cml4OworICAgIENGWF9ESUJpdG1hcCoJbV9wQml0bWFwOworfTsKK2NsYXNzIENSRl9QYXRoRGF0YSA6IHB1YmxpYyBDUkZfRGF0YQoreworcHVibGljOgorICAgIENSRl9QYXRoRGF0YSgpCisgICAgeworICAgICAgICBtX1R5cGUgPSBQYXRoOworICAgICAgICBtX2JEZWNvcmF0aW9uID0gRkFMU0U7CisgICAgfQorICAgIH5DUkZfUGF0aERhdGEoKSB7fTsKKyAgICBGWF9CT09MCQkJbV9iRGVjb3JhdGlvbjsKKyAgICBDUERGX1BhdGgJCQltX3BQYXRoRGF0YTsKKyAgICBDRlhfQWZmaW5lTWF0cml4CW1fcFBhdGgyRGV2aWNlOworICAgIENQREZfR3JhcGhTdGF0ZQkJbV9wR3JhcGhTdGF0ZTsKKyAgICBGWF9BUkdCCQltX2ZpbGxfYXJnYjsKKyAgICBGWF9BUkdCCQltX3N0cm9rZV9hcmdiOworICAgIGludAkJCW1fZmlsbF9tb2RlOworfTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvcmVmbG93L3JlZmxvd2VkdGV4dHBhZ2UuY3BwIGIvY29yZS9zcmMvcmVmbG93L3JlZmxvd2VkdGV4dHBhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1YWQwYmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3NyYy9yZWZsb3cvcmVmbG93ZWR0ZXh0cGFnZS5jcHAKQEAgLTAsMCArMSw0MDIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKy8vIE9yaWdpbmFsIGNvZGUgY29weXJpZ2h0IDIwMTQgRm94aXQgU29mdHdhcmUgSW5jLiBodHRwOi8vd3d3LmZveGl0c29mdHdhcmUuY29tCisKKyNpbmNsdWRlICJyZWZsb3dlZHRleHRwYWdlLmgiCitJUERGX1RleHRQYWdlKglJUERGX1RleHRQYWdlOjpDcmVhdGVSZWZsb3dUZXh0UGFnZShJUERGX1JlZmxvd2VkUGFnZSogcFJlZlBhZ2UpCit7CisgICAgcmV0dXJuIEZYX05FVyBDUkZfVGV4dFBhZ2UocFJlZlBhZ2UpOworfQorQ1JGX1RleHRQYWdlOjpDUkZfVGV4dFBhZ2UoSVBERl9SZWZsb3dlZFBhZ2UqIHBSZWZQYWdlKQoreworICAgIG1fcFJlZlBhZ2UgPSAoQ1BERl9SZWZsb3dlZFBhZ2UqKShwUmVmUGFnZSk7CisgICAgbV9wRGF0YUxpc3QgPSBOVUxMOworICAgIG1fQ291bnRCU0FycmF5ID0gTlVMTDsKK30KK0NSRl9UZXh0UGFnZTo6fkNSRl9UZXh0UGFnZSgpCit7CisgICAgaWYobV9wRGF0YUxpc3QpIHsKKyAgICAgICAgZGVsZXRlIG1fcERhdGFMaXN0OworICAgICAgICBtX3BEYXRhTGlzdCA9IE5VTEw7CisgICAgfQorICAgIGlmKG1fQ291bnRCU0FycmF5KSB7CisgICAgICAgIGRlbGV0ZSBtX0NvdW50QlNBcnJheTsKKyAgICAgICAgbV9Db3VudEJTQXJyYXkgPSBOVUxMOworICAgIH0KK30KK0ZYX0JPT0wgQ1JGX1RleHRQYWdlOjpQYXJzZVRleHRQYWdlKCkKK3sKKyAgICBpZighbV9wUmVmUGFnZSkgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIGludCBjb3VudCA9IG1fcFJlZlBhZ2UtPm1fcFJlZmxvd2VkLT5HZXRTaXplKCk7CisgICAgaWYoY291bnQgPCA1MDApIHsKKyAgICAgICAgbV9wRGF0YUxpc3QgPSBGWF9ORVcgQ1JGX0NoYXJEYXRhUHRyQXJyYXkoY291bnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcERhdGFMaXN0ID0gRlhfTkVXIENSRl9DaGFyRGF0YVB0ckFycmF5KDUwMCk7CisgICAgfQorICAgIGlmIChOVUxMID09IG1fcERhdGFMaXN0KSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgQ1JGX0RhdGEqIHBEYXRhID0gKCoobV9wUmVmUGFnZS0+bV9wUmVmbG93ZWQpKVtpXTsKKyAgICAgICAgaWYocERhdGEtPkdldFR5cGUoKSA9PSBDUkZfRGF0YTo6VGV4dCkgeworICAgICAgICAgICAgbV9wRGF0YUxpc3QtPkFkZCgoQ1JGX0NoYXJEYXRhKilwRGF0YSk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9Db3VudEJTQXJyYXkgPSBGWF9ORVcgQ0ZYX0NvdW50QlNJTlQzMkFycmF5KDIwKTsKKyAgICBpZihOVUxMID09IG1fQ291bnRCU0FycmF5KSB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CitGWF9CT09MCUNSRl9UZXh0UGFnZTo6SXNQYXJzZXJlZCgpIGNvbnN0Cit7CisgICAgaWYobV9wRGF0YUxpc3QpIHsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICAgIHJldHVybiBGQUxTRTsKK30KK2ludCBDUkZfVGV4dFBhZ2U6OkNoYXJJbmRleEZyb21UZXh0SW5kZXgoaW50IFRleHRJbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gVGV4dEluZGV4OworfQoraW50IENSRl9UZXh0UGFnZTo6VGV4dEluZGV4RnJvbUNoYXJJbmRleChpbnQgQ2hhckluZGV4KSBjb25zdAoreworICAgIHJldHVybiBDaGFySW5kZXg7Cit9CisKK2ludAlDUkZfVGV4dFBhZ2U6OkNvdW50Q2hhcnMoKSBjb25zdAoreworICAgIGlmIChOVUxMID09IG1fcERhdGFMaXN0KSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIG1fcERhdGFMaXN0LT5HZXRTaXplKCk7Cit9Cit2b2lkIENSRl9UZXh0UGFnZTo6R2V0Q2hhckluZm8oaW50IGluZGV4LCBGUERGX0NIQVJfSU5GTyAmIGluZm8pIGNvbnN0Cit7CisgICAgaWYoaW5kZXggPj0gQ291bnRDaGFycygpIHx8IGluZGV4IDwgMCB8fCAhbV9wRGF0YUxpc3QpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDUkZfQ2hhckRhdGEqIHBEYXRhID0gKCptX3BEYXRhTGlzdClbaW5kZXhdOworICAgIEZYX0ZMT0FUIFJlbHRpdmVDb3JkZERzID0gcERhdGEtPm1fcENoYXJTdGF0ZS0+bV9mRGVzY2VudDsKKyAgICBGWF9GTE9BVCBSZWx0aXZlQ29yZGRBcyA9IHBEYXRhLT5tX3BDaGFyU3RhdGUtPm1fZkFzY2VudDsKKyAgICBpbmZvLm1fRmxhZwkJPSBDSEFSX05PUk1BTDsKKyAgICBpbmZvLm1fcFRleHRPYmoJPSBwRGF0YS0+bV9wQ2hhclN0YXRlLT5tX3BUZXh0T2JqOworICAgIGluZm8ubV9PcmlnaW5YCT0gcERhdGEtPm1fUG9zWDsKKyAgICBpbmZvLm1fT3JpZ2luWQk9IHBEYXRhLT5tX1Bvc1kgLSBSZWx0aXZlQ29yZGREczsKKyAgICBpbmZvLm1fRm9udFNpemUJPSBwRGF0YS0+bV9wQ2hhclN0YXRlLT5tX2ZGb250U2l6ZTsKKyAgICBDRlhfRmxvYXRSZWN0IEZsb2F0UmVjdFRtcChwRGF0YS0+bV9Qb3NYLCBwRGF0YS0+bV9Qb3NZLCBwRGF0YS0+bV9Qb3NYICsgcERhdGEtPm1fV2lkdGgsIHBEYXRhLT5tX1Bvc1kgKyBSZWx0aXZlQ29yZGRBcyAtIFJlbHRpdmVDb3JkZERzKTsKKyAgICBpbmZvLm1fQ2hhckJveAk9IEZsb2F0UmVjdFRtcDsKKyAgICBDRlhfV2lkZVN0cmluZyBzdHIgPSBwRGF0YS0+bV9wQ2hhclN0YXRlLT5tX3BGb250LT5Vbmljb2RlRnJvbUNoYXJDb2RlKHBEYXRhLT5tX0NoYXJDb2RlKTsKKyAgICBpZighc3RyLklzRW1wdHkoKSkgeworICAgICAgICBpbmZvLm1fVW5pY29kZQk9IHN0ci5HZXRBdCgwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbmZvLm1fVW5pY29kZSA9IC0xOworICAgIH0KKyAgICBpbmZvLm1fQ2hhcmNvZGUgPSAoRlhfV0NIQVIpcERhdGEtPm1fQ2hhckNvZGU7CisgICAgaW5mby5tX01hdHJpeCA9IENGWF9NYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCk7Cit9CitleHRlcm4gRlhfQk9PTCBHZXRJbnRlcnNlY3Rpb24oRlhfRkxPQVQgbG93MSwgRlhfRkxPQVQgaGlnaDEsIEZYX0ZMT0FUIGxvdzIsIEZYX0ZMT0FUIGhpZ2gyLCBGWF9GTE9BVCYgaW50ZXJsb3csIEZYX0ZMT0FUJiBpbnRlcmhpZ2gpOworaW5saW5lIEZYX0JPT0wgX0lzSW5zYW1lbGluZShjb25zdCBDRlhfRmxvYXRSZWN0JiByZWN0QSwgY29uc3QgQ0ZYX0Zsb2F0UmVjdCYgcmVjdEIpCit7CisgICAgaWYoKHJlY3RBLnRvcCA+PSByZWN0Qi5ib3R0b20gJiYgcmVjdEIudG9wID49IHJlY3RBLmJvdHRvbSkpIHsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KK30KK2lubGluZSBGWF9CT09MIF9Jc0ludGVyc2VjdChjb25zdCBDRlhfRmxvYXRSZWN0JiByZWN0QSwgY29uc3QgQ0ZYX0Zsb2F0UmVjdCYgcmVjdEIpCit7CisgICAgRlhfRkxPQVQgaW50ZXJsb3cgPSAuMGYsIGludGVyaGlnaCA9IC4wZjsKKyAgICBpZihHZXRJbnRlcnNlY3Rpb24ocmVjdEEuYm90dG9tLCByZWN0QS50b3AsIHJlY3RCLmJvdHRvbSwgcmVjdEIudG9wLCBpbnRlcmxvdywgaW50ZXJoaWdoKSkgeworICAgICAgICBpZihHZXRJbnRlcnNlY3Rpb24ocmVjdEEubGVmdCwgcmVjdEEucmlnaHQsIHJlY3RCLmxlZnQsIHJlY3RCLnJpZ2h0LCBpbnRlcmxvdywgaW50ZXJoaWdoKSkgeworICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEZBTFNFOworfQordm9pZCBDUkZfVGV4dFBhZ2U6OkdldFJlY3RBcnJheShpbnQgc3RhcnQsIGludCBuQ291bnQsIENGWF9SZWN0QXJyYXkmIHJlY3RBcnJheSkgY29uc3QKK3sKKyAgICBpbnQgaW5kZXhsZW4gPSBzdGFydCArIG5Db3VudDsKKyAgICBGUERGX0NIQVJfSU5GTyBpbmZvOworICAgIEZYX0JPT0wgYnN0YXJ0ID0gVFJVRTsKKyAgICBDRlhfRmxvYXRSZWN0IHJlY3R0bXA7CisgICAgaW50IGk7CisgICAgZm9yKGkgPSBzdGFydDsgaSA8IGluZGV4bGVuOyBpKyspIHsKKyAgICAgICAgR2V0Q2hhckluZm8oaSwgaW5mbyk7CisgICAgICAgIGlmKGJzdGFydCkgeworICAgICAgICAgICAgcmVjdHRtcCA9IGluZm8ubV9DaGFyQm94OworICAgICAgICAgICAgYnN0YXJ0ID0gRkFMU0U7CisgICAgICAgIH0gZWxzZSBpZihfSXNJbnNhbWVsaW5lKHJlY3R0bXAsIGluZm8ubV9DaGFyQm94KSkgeworICAgICAgICAgICAgcmVjdHRtcC5yaWdodCA9IGluZm8ubV9DaGFyQm94LnJpZ2h0OworICAgICAgICAgICAgaWYoaW5mby5tX0NoYXJCb3gudG9wID4gcmVjdHRtcC50b3ApIHsKKyAgICAgICAgICAgICAgICByZWN0dG1wLnRvcCA9IGluZm8ubV9DaGFyQm94LnRvcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGluZm8ubV9DaGFyQm94LmJvdHRvbSA8IHJlY3R0bXAuYm90dG9tKSB7CisgICAgICAgICAgICAgICAgcmVjdHRtcC5ib3R0b20gPSBpbmZvLm1fQ2hhckJveC5ib3R0b207CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZWN0QXJyYXkuQWRkKHJlY3R0bXApOworICAgICAgICAgICAgcmVjdHRtcCA9IGluZm8ubV9DaGFyQm94OworICAgICAgICB9CisgICAgfQorICAgIHJlY3RBcnJheS5BZGQocmVjdHRtcCk7Cit9CitpbmxpbmUgRlhfRkxPQVQgX0dldERpc3RhbmNlKENGWF9GbG9hdFJlY3QgZmxvYXRSZWN0LCBDUERGX1BvaW50IHBvaW50KQoreworICAgIGlmKGZsb2F0UmVjdC5yaWdodCA8IHBvaW50LnggJiYgZmxvYXRSZWN0LmJvdHRvbSA+IHBvaW50LnkpIHsKKyAgICAgICAgcmV0dXJuIEZYU1lTX3NxcnQoRlhTWVNfcG93KHBvaW50LnggLSBmbG9hdFJlY3QucmlnaHQsIDIpICsgRlhTWVNfcG93KGZsb2F0UmVjdC5ib3R0b20gLSBwb2ludC55LCAyKSk7CisgICAgfQorICAgIGlmIChmbG9hdFJlY3QucmlnaHQgPCBwb2ludC54ICYmIGZsb2F0UmVjdC50b3AgPCBwb2ludC55KSB7CisgICAgICAgIHJldHVybiBGWFNZU19zcXJ0KEZYU1lTX3Bvdyhwb2ludC54IC0gZmxvYXRSZWN0LnJpZ2h0LCAyKSArIEZYU1lTX3Bvdyhwb2ludC55IC0gZmxvYXRSZWN0LnRvcCwgMikpOworICAgIH0KKyAgICBpZihmbG9hdFJlY3QubGVmdCA+IHBvaW50LnggJiYgZmxvYXRSZWN0LmJvdHRvbSA+IHBvaW50LnkpIHsKKyAgICAgICAgcmV0dXJuIEZYU1lTX3NxcnQoRlhTWVNfcG93KGZsb2F0UmVjdC5ib3R0b20gLSBwb2ludC55LCAyKSArIEZYU1lTX3BvdyhmbG9hdFJlY3QubGVmdCAtIHBvaW50LngsIDIpKTsKKyAgICB9CisgICAgaWYoKGZsb2F0UmVjdC5yaWdodCA+IHBvaW50LnggfHwgRlhTWVNfZmFicyhmbG9hdFJlY3QucmlnaHQgLSBwb2ludC54KSA8PSAwLjAwMDFmKSAmJgorICAgICAgICAgICAgKGZsb2F0UmVjdC5sZWZ0IDwgcG9pbnQueCB8fCBGWFNZU19mYWJzKGZsb2F0UmVjdC5sZWZ0IC0gcG9pbnQueCkgPD0gMC4wMDAxZikgJiYgZmxvYXRSZWN0LmJvdHRvbSA+IHBvaW50LnkpIHsKKyAgICAgICAgcmV0dXJuIEZYU1lTX2ZhYnMoZmxvYXRSZWN0LmJvdHRvbSAtIHBvaW50LnkpOworICAgIH0KKyAgICBpZihmbG9hdFJlY3QubGVmdCA+IHBvaW50LnggJiYgKGZsb2F0UmVjdC5ib3R0b20gPCBwb2ludC55IHx8IEZYU1lTX2ZhYnMoZmxvYXRSZWN0LmJvdHRvbSAtIHBvaW50LnkpIDw9IDAuMDAwMWYpICYmCisgICAgICAgICAgICAoZmxvYXRSZWN0LnRvcCA+IHBvaW50LnkgfHwgRlhTWVNfZmFicyhmbG9hdFJlY3QudG9wIC0gcG9pbnQueSkgPD0gMC4wMDAxZikpIHsKKyAgICAgICAgcmV0dXJuIEZYU1lTX2ZhYnMoZmxvYXRSZWN0LmxlZnQgLSBwb2ludC54KTsKKyAgICB9CisgICAgaWYoZmxvYXRSZWN0LmxlZnQgPiBwb2ludC54ICYmIGZsb2F0UmVjdC50b3AgPCBwb2ludC55KSB7CisgICAgICAgIHJldHVybiBGWFNZU19zcXJ0KEZYU1lTX3BvdyhmbG9hdFJlY3QubGVmdCAtIHBvaW50LngsIDIpICsgRlhTWVNfcG93KHBvaW50LnkgLSBmbG9hdFJlY3QudG9wLCAyKSk7CisgICAgfQorICAgIGlmICgoZmxvYXRSZWN0LmxlZnQgPCBwb2ludC54IHx8IEZYU1lTX2ZhYnMoZmxvYXRSZWN0LmxlZnQgLSBwb2ludC54KSA8PSAwLjAwMDFmKSAmJgorICAgICAgICAgICAgKGZsb2F0UmVjdC5yaWdodCA+IHBvaW50LnggfHwgRlhTWVNfZmFicyhmbG9hdFJlY3QucmlnaHQgLSBwb2ludC54KSA8PSAwLjAwMDFmKSAmJiBmbG9hdFJlY3QudG9wIDwgcG9pbnQueSkgeworICAgICAgICByZXR1cm4gRlhTWVNfZmFicyhwb2ludC55IC0gZmxvYXRSZWN0LnRvcCk7CisgICAgfQorICAgIGlmKGZsb2F0UmVjdC5yaWdodCA8IHBvaW50LnggJiYgKGZsb2F0UmVjdC50b3AgPiBwb2ludC55IHx8IEZYU1lTX2ZhYnMoZmxvYXRSZWN0LnRvcCAtIHBvaW50LnkpIDw9IDAuMDAwMWYpICYmCisgICAgICAgICAgICAoZmxvYXRSZWN0LmJvdHRvbSA8IHBvaW50LnkgfHwgRlhTWVNfZmFicyhmbG9hdFJlY3QuYm90dG9tIC0gcG9pbnQueSkgPD0gMC4wMDAxZikpIHsKKyAgICAgICAgcmV0dXJuIHBvaW50LnggLSBmbG9hdFJlY3QucmlnaHQ7CisgICAgfQorICAgIHJldHVybiAuMGY7Cit9CitpbnQgQ1JGX1RleHRQYWdlOjpHZXRJbmRleEF0UG9zKENQREZfUG9pbnQgcG9pbnQsIEZYX0ZMT0FUIHhUb3JlbGFuY2UsIEZYX0ZMT0FUIHlUb3JlbGFuY2UpIGNvbnN0Cit7CisgICAgaW50IGluZGV4ID0gLTEsIGkgPSAwLCBqID0gMDsKKyAgICBGUERGX0NIQVJfSU5GTyBpbmZvOworICAgIENGWF9GbG9hdFJlY3QgcmVjdFRtcDsKKyAgICBGWF9GTE9BVCBNaW5EaXN0YW5jZSA9IDEwMDAsIERpc3RhbmNlVG1wID0gMDsKKyAgICBGWF9GTE9BVCByZWN0X2JvdHRvbSA9IHBvaW50LnggLSB4VG9yZWxhbmNlOworICAgIENGWF9GbG9hdFJlY3QgVG9yZWxhbmNlUmVjdChyZWN0X2JvdHRvbSA8PSAwID8gMCA6IHJlY3RfYm90dG9tLCBwb2ludC55IC0geVRvcmVsYW5jZSwgcG9pbnQueCArIHhUb3JlbGFuY2UsIHBvaW50LnkgKyB5VG9yZWxhbmNlKTsKKyAgICBpbnQgY291bnQgPSBDb3VudENoYXJzKCk7CisgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICBHZXRDaGFySW5mbyhpLCBpbmZvKTsKKyAgICAgICAgcmVjdFRtcCA9IGluZm8ubV9DaGFyQm94OworICAgICAgICBpZihyZWN0VG1wLkNvbnRhaW5zKHBvaW50LngsIHBvaW50LnkpKSB7CisgICAgICAgICAgICBpbmRleCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmKF9Jc0ludGVyc2VjdChyZWN0VG1wLCBUb3JlbGFuY2VSZWN0KSkgeworICAgICAgICAgICAgRGlzdGFuY2VUbXAgPSBfR2V0RGlzdGFuY2UocmVjdFRtcCwgcG9pbnQpOworICAgICAgICAgICAgaWYoRGlzdGFuY2VUbXAgPCBNaW5EaXN0YW5jZSkgeworICAgICAgICAgICAgICAgIE1pbkRpc3RhbmNlID0gRGlzdGFuY2VUbXA7CisgICAgICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBpbmRleDsKK30KK2ludCBDUkZfVGV4dFBhZ2U6OkdldEluZGV4QXRQb3MoRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSwgRlhfRkxPQVQgeFRvcmVsYW5jZSwgRlhfRkxPQVQgeVRvcmVsYW5jZSkgY29uc3QKK3sKKyAgICBpbnQgaW5kZXggPSAwOworICAgIENQREZfUG9pbnQgcG9pbnQoeCwgeSk7CisgICAgaWYoKGluZGV4ID0gR2V0SW5kZXhBdFBvcyhwb2ludCwgeFRvcmVsYW5jZSwgeVRvcmVsYW5jZSkpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KK30KK2ludCBDUkZfVGV4dFBhZ2U6OkdldE9yZGVyQnlEaXJlY3Rpb24oaW50IGluZGV4LCBpbnQgZGlyZWN0aW9uKSBjb25zdAoreworICAgIHJldHVybiAtMTsKK30KK0NGWF9XaWRlU3RyaW5nIENSRl9UZXh0UGFnZTo6R2V0VGV4dEJ5UmVjdChDRlhfRmxvYXRSZWN0IHJlY3QpIGNvbnN0Cit7CisgICAgaW50IGNvdW50OworICAgIEZQREZfQ0hBUl9JTkZPIGluZm87CisgICAgQ0ZYX1dpZGVTdHJpbmcgc3RyOworICAgIENGWF9GbG9hdFJlY3QgIFJlY3R0bXA7CisgICAgRlhfQk9PTCBic3RhcnQgPSBUUlVFOworICAgIGNvdW50ID0gQ291bnRDaGFycygpOworICAgIGlmKHJlY3QuSXNFbXB0eSgpKSB7CisgICAgICAgIHJldHVybiBMIiI7CisgICAgfQorICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIEdldENoYXJJbmZvKGksIGluZm8pOworICAgICAgICBpZihfSXNJbnRlcnNlY3QocmVjdCwgaW5mby5tX0NoYXJCb3gpKSB7CisgICAgICAgICAgICBpZihic3RhcnQpIHsKKyAgICAgICAgICAgICAgICBSZWN0dG1wID0gaW5mby5tX0NoYXJCb3g7CisgICAgICAgICAgICAgICAgc3RyICs9IGluZm8ubV9Vbmljb2RlOworICAgICAgICAgICAgICAgIGJzdGFydCA9IEZBTFNFOworICAgICAgICAgICAgfSBlbHNlIGlmKF9Jc0luc2FtZWxpbmUoUmVjdHRtcCwgaW5mby5tX0NoYXJCb3gpKSB7CisgICAgICAgICAgICAgICAgc3RyICs9IGluZm8ubV9Vbmljb2RlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdHIgKz0gTCJcclxuIjsKKyAgICAgICAgICAgICAgICBSZWN0dG1wID0gaW5mby5tX0NoYXJCb3g7CisgICAgICAgICAgICAgICAgc3RyICs9IGluZm8ubV9Vbmljb2RlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmKHN0ci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgcmV0dXJuIEwiIjsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gc3RyOworICAgIH0KK30KK3ZvaWQgQ1JGX1RleHRQYWdlOjpHZXRSZWN0c0FycmF5QnlSZWN0KENGWF9GbG9hdFJlY3QgcmVjdCwgQ0ZYX1JlY3RBcnJheSYgcmVzUmVjdEFycmF5KSBjb25zdAoreworICAgIGludCBjb3VudCwgaTsKKyAgICBGWF9CT09MIGJzdGFydCA9IFRSVUU7CisgICAgRlBERl9DSEFSX0lORk8gaW5mbzsKKyAgICBDRlhfRmxvYXRSZWN0IHJlY3R0bXA7CisgICAgY291bnQgPSBDb3VudENoYXJzKCk7CisgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICBHZXRDaGFySW5mbyhpLCBpbmZvKTsKKyAgICAgICAgaWYoX0lzSW50ZXJzZWN0KHJlY3QsIGluZm8ubV9DaGFyQm94KSkgeworICAgICAgICAgICAgaWYoYnN0YXJ0KSB7CisgICAgICAgICAgICAgICAgcmVjdHRtcCA9IGluZm8ubV9DaGFyQm94OworICAgICAgICAgICAgICAgIGJzdGFydCA9IEZBTFNFOworICAgICAgICAgICAgfSBlbHNlIGlmKF9Jc0luc2FtZWxpbmUocmVjdHRtcCwgaW5mby5tX0NoYXJCb3gpKSB7CisgICAgICAgICAgICAgICAgcmVjdHRtcC5yaWdodCA9IGluZm8ubV9DaGFyQm94LnJpZ2h0OworICAgICAgICAgICAgICAgIGlmKGluZm8ubV9DaGFyQm94LnRvcCA+IHJlY3R0bXAudG9wKSB7CisgICAgICAgICAgICAgICAgICAgIHJlY3R0bXAudG9wID0gaW5mby5tX0NoYXJCb3gudG9wOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZihpbmZvLm1fQ2hhckJveC5ib3R0b20gPCByZWN0dG1wLmJvdHRvbSkgeworICAgICAgICAgICAgICAgICAgICByZWN0dG1wLmJvdHRvbSA9IGluZm8ubV9DaGFyQm94LmJvdHRvbTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc1JlY3RBcnJheS5BZGQocmVjdHRtcCk7CisgICAgICAgICAgICAgICAgcmVjdHRtcCA9IGluZm8ubV9DaGFyQm94OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJlc1JlY3RBcnJheS5BZGQocmVjdHRtcCk7Cit9CitpbnQgQ1JGX1RleHRQYWdlOjpDb3VudFJlY3RzKGludCBzdGFydCwgaW50IG5Db3VudCkKK3sKKyAgICBtX3JlY3RBcnJheS5SZW1vdmVBbGwoKTsKKyAgICBHZXRSZWN0QXJyYXkoc3RhcnQsIG5Db3VudCwgbV9yZWN0QXJyYXkpOworICAgIHJldHVybiBtX3JlY3RBcnJheS5HZXRTaXplKCk7Cit9Cit2b2lkIENSRl9UZXh0UGFnZTo6R2V0UmVjdChpbnQgcmVjdEluZGV4LCBGWF9GTE9BVCYgbGVmdCwgRlhfRkxPQVQmIHRvcCwgRlhfRkxPQVQmIHJpZ2h0LCBGWF9GTE9BVCAmYm90dG9tKSBjb25zdAoreworICAgIGlmKG1fcmVjdEFycmF5LkdldFNpemUoKSA8PSByZWN0SW5kZXgpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsZWZ0ICAgPSBtX3JlY3RBcnJheVtyZWN0SW5kZXhdLmxlZnQ7CisgICAgdG9wICAgID0gbV9yZWN0QXJyYXlbcmVjdEluZGV4XS50b3A7CisgICAgcmlnaHQgID0gbV9yZWN0QXJyYXlbcmVjdEluZGV4XS5yaWdodDsKKyAgICBib3R0b20gPSBtX3JlY3RBcnJheVtyZWN0SW5kZXhdLmJvdHRvbTsKK30KK0ZYX0JPT0wgQ1JGX1RleHRQYWdlOjpHZXRCYXNlbGluZVJvdGF0ZShpbnQgcmVjdEluZGV4LCBpbnQmIFJvdGF0ZSkKK3sKKyAgICBSb3RhdGUgPSAwOworICAgIHJldHVybiBUUlVFOworfQorRlhfQk9PTCBDUkZfVGV4dFBhZ2U6OkdldEJhc2VsaW5lUm90YXRlKENGWF9GbG9hdFJlY3QgcmVjdCwgaW50JiBSb3RhdGUpCit7CisgICAgUm90YXRlID0gMDsKKyAgICByZXR1cm4gVFJVRTsKK30KK2ludCBDUkZfVGV4dFBhZ2U6OkNvdW50Qm91bmRlZFNlZ21lbnRzKEZYX0ZMT0FUIGxlZnQsIEZYX0ZMT0FUIHRvcCwgRlhfRkxPQVQgcmlnaHQsIEZYX0ZMT0FUIGJvdHRvbSwgRlhfQk9PTCBiQ29udGFpbnMpCit7CisgICAgaWYgKCFtX0NvdW50QlNBcnJheSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG1fQ291bnRCU0FycmF5LT5SZW1vdmVBbGwoKTsKKyAgICBDRlhfRmxvYXRSZWN0IGZsb2F0cmVjdChsZWZ0LCBib3R0b20sIHJpZ2h0LCB0b3ApOworICAgIGludCB0b3RhbGNvdW50LCBpLCBqID0gMCwgY291bnR0bXAgPSAwOworICAgIEZYX0JPT0wgYnN0YXJ0ID0gVFJVRTsKKyAgICBGUERGX0NIQVJfSU5GTyBpbmZvOworICAgIENGWF9GbG9hdFJlY3QgcmVjdHRtcDsKKyAgICB0b3RhbGNvdW50ID0gQ291bnRDaGFycygpOworICAgIGZvcihpID0gMDsgaSA8IHRvdGFsY291bnQ7IGkrKykgeworICAgICAgICBHZXRDaGFySW5mbyhpLCBpbmZvKTsKKyAgICAgICAgaWYoX0lzSW50ZXJzZWN0KGZsb2F0cmVjdCwgaW5mby5tX0NoYXJCb3gpKSB7CisgICAgICAgICAgICBpZihic3RhcnQpIHsKKyAgICAgICAgICAgICAgICBtX0NvdW50QlNBcnJheS0+QWRkKGkpOworICAgICAgICAgICAgICAgIGNvdW50dG1wID0gMTsKKyAgICAgICAgICAgICAgICByZWN0dG1wID0gaW5mby5tX0NoYXJCb3g7CisgICAgICAgICAgICAgICAgYnN0YXJ0ID0gRkFMU0U7CisgICAgICAgICAgICB9IGVsc2UgaWYoX0lzSW5zYW1lbGluZShyZWN0dG1wLCBpbmZvLm1fQ2hhckJveCkpIHsKKyAgICAgICAgICAgICAgICByZWN0dG1wLnJpZ2h0ID0gaW5mby5tX0NoYXJCb3gucmlnaHQ7CisgICAgICAgICAgICAgICAgaWYoaW5mby5tX0NoYXJCb3gudG9wID4gcmVjdHRtcC50b3ApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVjdHRtcC50b3AgPSBpbmZvLm1fQ2hhckJveC50b3A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKGluZm8ubV9DaGFyQm94LmJvdHRvbSA8IHJlY3R0bXAuYm90dG9tKSB7CisgICAgICAgICAgICAgICAgICAgIHJlY3R0bXAuYm90dG9tID0gaW5mby5tX0NoYXJCb3guYm90dG9tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb3VudHRtcCArKzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9Db3VudEJTQXJyYXktPkFkZChjb3VudHRtcCk7CisgICAgICAgICAgICAgICAgbV9Db3VudEJTQXJyYXktPkFkZChpKTsKKyAgICAgICAgICAgICAgICBjb3VudHRtcCA9IDE7CisgICAgICAgICAgICAgICAgaisrOworICAgICAgICAgICAgICAgIHJlY3R0bXAgPSBpbmZvLm1fQ2hhckJveDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBtX0NvdW50QlNBcnJheS0+QWRkKGNvdW50dG1wKTsKKyAgICBqKys7CisgICAgcmV0dXJuIGo7Cit9Cit2b2lkIENSRl9UZXh0UGFnZTo6R2V0Qm91bmRlZFNlZ21lbnQoaW50IGluZGV4LCBpbnQmIHN0YXJ0LCBpbnQmIGNvdW50KSBjb25zdAoreworICAgIGlmICghbV9Db3VudEJTQXJyYXkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZihtX0NvdW50QlNBcnJheS0+R2V0U2l6ZSgpIDw9IGluZGV4ICogMikgeworICAgICAgICBzdGFydCA9IDA7CisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGFydCA9ICooaW50ICopbV9Db3VudEJTQXJyYXktPkdldEF0KGluZGV4ICogMik7CisgICAgY291bnQgPSAqKGludCAqKW1fQ291bnRCU0FycmF5LT5HZXRBdChpbmRleCAqIDIgKyAxKTsKK30KKworaW50IENSRl9UZXh0UGFnZTo6R2V0V29yZEJyZWFrKGludCBpbmRleCwgaW50IGRpcmVjdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4gLTE7Cit9CitDRlhfV2lkZVN0cmluZyBDUkZfVGV4dFBhZ2U6OkdldFBhZ2VUZXh0KGludCBzdGFydCwgaW50IG5Db3VudCApIGNvbnN0Cit7CisgICAgaWYobkNvdW50ID09IC0xKSB7CisgICAgICAgIG5Db3VudCA9IENvdW50Q2hhcnMoKTsKKyAgICAgICAgc3RhcnQgPSAwOworICAgIH0gZWxzZSBpZihuQ291bnQgPCAxKSB7CisgICAgICAgIHJldHVybiBMIiI7CisgICAgfSBlbHNlIGlmKHN0YXJ0ID49IENvdW50Q2hhcnMoKSkgeworICAgICAgICByZXR1cm4gTCIiOworICAgIH0KKyAgICBpbnQgaSwgaW5kZXggPSBzdGFydCArIG5Db3VudDsKKyAgICBGUERGX0NIQVJfSU5GTyBpbmZvOworICAgIENGWF9XaWRlU3RyaW5nIHN0cjsKKyAgICBDRlhfRmxvYXRSZWN0IHJlY3R0bXA7CisgICAgRlhfQk9PTCBic3RhcnQgPSBUUlVFOworICAgIGZvcihpID0gc3RhcnQ7IGkgPCBpbmRleDsgaSsrKSB7CisgICAgICAgIEdldENoYXJJbmZvKGksIGluZm8pOworICAgICAgICBpZihic3RhcnQpIHsKKyAgICAgICAgICAgIHJlY3R0bXAgPSBpbmZvLm1fQ2hhckJveDsKKyAgICAgICAgICAgIHN0ciArPSBpbmZvLm1fVW5pY29kZTsKKyAgICAgICAgICAgIGJzdGFydCA9IEZBTFNFOworICAgICAgICB9IGVsc2UgaWYgKF9Jc0luc2FtZWxpbmUocmVjdHRtcCwgaW5mby5tX0NoYXJCb3gpKSB7CisgICAgICAgICAgICBzdHIgKz0gaW5mby5tX1VuaWNvZGU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdHIgKz0gTCJcclxuIjsKKyAgICAgICAgICAgIHJlY3R0bXAgPSBpbmZvLm1fQ2hhckJveDsKKyAgICAgICAgICAgIHN0ciArPSBpbmZvLm1fVW5pY29kZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZihzdHIuSXNFbXB0eSgpKSB7CisgICAgICAgIHJldHVybiBMIiI7CisgICAgfQorICAgIHJldHVybiBzdHI7Cit9CmRpZmYgLS1naXQgYS9jb3JlL3NyYy9yZWZsb3cvcmVmbG93ZWR0ZXh0cGFnZS5oIGIvY29yZS9zcmMvcmVmbG93L3JlZmxvd2VkdGV4dHBhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTc0MjhkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvcmVmbG93L3JlZmxvd2VkdGV4dHBhZ2UuaApAQCAtMCwwICsxLDcxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBQREZpdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisgCisvLyBPcmlnaW5hbCBjb2RlIGNvcHlyaWdodCAyMDE0IEZveGl0IFNvZnR3YXJlIEluYy4gaHR0cDovL3d3dy5mb3hpdHNvZnR3YXJlLmNvbQorCisjaWZuZGVmIF9SRUZMT1dFRF9URVhUX1BBR0VfSAorI2RlZmluZSBfUkVGTE9XRURfVEVYVF9QQUdFX0gKKyNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL3JlZmxvdy9yZWZsb3dlbmdpbmUuaCIKKyNpbmNsdWRlICIuLi8uLi9zcmMvcmVmbG93L3JlZmxvd2VkcGFnZS5oIgordHlwZWRlZiBDRlhfU2VnbWVudGVkQXJyYXk8Q1JGX0NoYXJEYXRhKj4gQ1JGX0NoYXJEYXRhUHRyQXJyYXk7Cit0eXBlZGVmIENGWF9TZWdtZW50ZWRBcnJheTxGWF9JTlQzMj4gQ0ZYX0NvdW50QlNJTlQzMkFycmF5OworY2xhc3MgQ1JGX1RleHRQYWdlIDogcHVibGljIElQREZfVGV4dFBhZ2UKK3sKK3B1YmxpYzoKKyAgICBDUkZfVGV4dFBhZ2UoSVBERl9SZWZsb3dlZFBhZ2UqIHBSZWZQYWdlKTsKKworICAgIHZpcnR1YWwgfkNSRl9UZXh0UGFnZSgpIDsKKyAgICBGWF9CT09MCQkJUGFyc2VUZXh0UGFnZSgpOworICAgIHZvaWQJCQlOb3JtYWxpemVPYmplY3RzKEZYX0JPT0wgYk5vcm1hbGl6ZSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgRlhfQk9PTAkJCUlzUGFyc2VyZWQoKSBjb25zdDsKK3B1YmxpYzoKKworICAgIGludCBDaGFySW5kZXhGcm9tVGV4dEluZGV4KGludCBUZXh0SW5kZXgpIGNvbnN0OworCisgICAgaW50IFRleHRJbmRleEZyb21DaGFySW5kZXgoaW50IENoYXJJbmRleCkgY29uc3Q7CisKKworICAgIGludAkJCQlDb3VudENoYXJzKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsCXZvaWQJR2V0Q2hhckluZm8oaW50IGluZGV4LCBGUERGX0NIQVJfSU5GTyAmIGluZm8pIGNvbnN0OworCisgICAgdm9pZAkJCUdldFJlY3RBcnJheShpbnQgc3RhcnQsIGludCBuQ291bnQsIENGWF9SZWN0QXJyYXkmIHJlY3RBcnJheSkgY29uc3Q7CisKKworICAgIGludAkJCQlHZXRJbmRleEF0UG9zKENQREZfUG9pbnQgcG9pbnQsIEZYX0ZMT0FUIHhUb3JlbGFuY2UsIEZYX0ZMT0FUIHlUb3JlbGFuY2UpIGNvbnN0OworCisgICAgaW50CQkJCUdldEluZGV4QXRQb3MoRlhfRkxPQVQgeCwgRlhfRkxPQVQgeSwgRlhfRkxPQVQgeFRvcmVsYW5jZSwgRlhfRkxPQVQgeVRvcmVsYW5jZSkgY29uc3Q7CisKKyAgICB2aXJ0dWFsCWludAkJCQlHZXRPcmRlckJ5RGlyZWN0aW9uKGludCBpbmRleCwgaW50IGRpcmVjdGlvbikgY29uc3Q7CisKKyAgICBDRlhfV2lkZVN0cmluZwlHZXRUZXh0QnlSZWN0KENGWF9GbG9hdFJlY3QgcmVjdCkgY29uc3Q7CisKKyAgICB2b2lkCQkJR2V0UmVjdHNBcnJheUJ5UmVjdChDRlhfRmxvYXRSZWN0IHJlY3QsIENGWF9SZWN0QXJyYXkmIHJlc1JlY3RBcnJheSkgY29uc3Q7CisKKworICAgIGludAkJCQlDb3VudFJlY3RzKGludCBzdGFydCwgaW50IG5Db3VudCk7CisKKyAgICB2aXJ0dWFsCXZvaWQJCQlHZXRSZWN0KGludCByZWN0SW5kZXgsIEZYX0ZMT0FUJiBsZWZ0LCBGWF9GTE9BVCYgdG9wLCBGWF9GTE9BVCYgcmlnaHQsIEZYX0ZMT0FUICZib3R0b20pIGNvbnN0OworICAgIHZpcnR1YWwJRlhfQk9PTAkJCUdldEJhc2VsaW5lUm90YXRlKGludCByZWN0SW5kZXgsIGludCYgUm90YXRlKTsKKyAgICB2aXJ0dWFsIEZYX0JPT0wJCQlHZXRCYXNlbGluZVJvdGF0ZShDRlhfRmxvYXRSZWN0IHJlY3QsIGludCYgUm90YXRlKTsKKworICAgIHZpcnR1YWwJaW50CQkJCUNvdW50Qm91bmRlZFNlZ21lbnRzKEZYX0ZMT0FUIGxlZnQsIEZYX0ZMT0FUIHRvcCwgRlhfRkxPQVQgcmlnaHQsIEZYX0ZMT0FUIGJvdHRvbSwgRlhfQk9PTCBiQ29udGFpbnMgPSBGQUxTRSk7CisKKyAgICB2aXJ0dWFsCXZvaWQJCQlHZXRCb3VuZGVkU2VnbWVudChpbnQgaW5kZXgsIGludCYgc3RhcnQsIGludCYgY291bnQpIGNvbnN0OworCisKKyAgICBpbnQJCQkJR2V0V29yZEJyZWFrKGludCBpbmRleCwgaW50IGRpcmVjdGlvbikgY29uc3Q7CisKKyAgICBDRlhfV2lkZVN0cmluZwlHZXRQYWdlVGV4dChpbnQgc3RhcnQsIGludCBuQ291bnQgPSAtMSApIGNvbnN0OworcHJpdmF0ZToKKyAgICBDUERGX1JlZmxvd2VkUGFnZSoJCW1fcFJlZlBhZ2U7CisgICAgQ1JGX0NoYXJEYXRhUHRyQXJyYXkqCW1fcERhdGFMaXN0OworICAgIENGWF9SZWN0QXJyYXkJCQltX3JlY3RBcnJheTsKKyAgICBDRlhfQ291bnRCU0lOVDMyQXJyYXkqCW1fQ291bnRCU0FycmF5OworfTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29yZS9zcmMvcmVmbG93L3JlZmxvd2VuZ2luZS5jcHAgYi9jb3JlL3NyYy9yZWZsb3cvcmVmbG93ZW5naW5lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTAwN2M5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9zcmMvcmVmbG93L3JlZmxvd2VuZ2luZS5jcHAKQEAgLTAsMCArMSwzOCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgUERGaXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorLy8gT3JpZ2luYWwgY29kZSBjb3B5cmlnaHQgMjAxNCBGb3hpdCBTb2Z0d2FyZSBJbmMuIGh0dHA6Ly93d3cuZm94aXRzb2Z0d2FyZS5jb20KKworI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvcmVmbG93L3JlZmxvd2VuZ2luZS5oIgorI2luY2x1ZGUgInJlZmxvd2VkcGFnZS5oIgorSVBERl9SZWZsb3dlZFBhZ2UqIElQREZfUmVmbG93ZWRQYWdlOjpDcmVhdGUoKQoreworICAgIENQREZfUmVmbG93ZWRQYWdlKiBwUmVmUGFnZSA9IEZYX05FVyBDUERGX1JlZmxvd2VkUGFnZShOVUxMKTsKKyAgICByZXR1cm4gcFJlZlBhZ2U7Cit9CitJUERGX1JlZmxvd2VkUGFnZSogQ3JlYXRlX1JlZmxvd1BhZ2UoKQoreworICAgIHJldHVybiBJUERGX1JlZmxvd2VkUGFnZTo6Q3JlYXRlKCk7Cit9CitJUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlciogQ3JlYXRlX1JlZmxvd1BhZ2VQYXJzZXIoKQoreworICAgIHJldHVybiBJUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlcjo6Q3JlYXRlKCk7Cit9CitJUERGX1Byb2dyZXNzaXZlUmVmbG93UGFnZVBhcnNlciogSVBERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VQYXJzZXI6OkNyZWF0ZSgpCit7CisgICAgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VQYXJzZXIqIHBQYXJzZXIgPSBGWF9ORVcgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VQYXJzZXI7CisgICAgaWYgKE5VTEwgPT0gcFBhcnNlcikgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcFBhcnNlci0+SW5pdCgpOworICAgIHJldHVybiBwUGFyc2VyOworfQorSVBERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXIqIENyZWF0ZV9SZWZsb3dQYWdlUmVuZGVyKCkKK3sKKyAgICByZXR1cm4gSVBERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXI6OkNyZWF0ZSgpOworfQorSVBERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXIqIElQREZfUHJvZ3Jlc3NpdmVSZWZsb3dQYWdlUmVuZGVyOjpDcmVhdGUoKQoreworICAgIHJldHVybiBGWF9ORVcgQ1BERl9Qcm9ncmVzc2l2ZVJlZmxvd1BhZ2VSZW5kZXI7Cit9Cg==